commit 3b12410b916adfdae099f31561bb49ca6f2fc922 Author: Leon Styhre Date: Mon Jun 7 22:08:20 2021 +0200 Squashed 'external/CImg/' content from commit c0becdf8 git-subtree-dir: external/CImg git-subtree-split: c0becdf881b0f3e2445975cac01c2422170d1fd9 diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..0e9575349 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,20 @@ +language: cpp +compiler: + - gcc +script: + - cd examples + - make CXX='g++-4.8' travis +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-4.8 + - g++-4.8 + - clang + - libpng12-dev + - libjpeg-dev + - libmagick++-dev + - libgraphicsmagick++1-dev + - libfftw3-dev + - zlib1g-dev diff --git a/CImg.h b/CImg.h new file mode 100644 index 000000000..a8b893a37 --- /dev/null +++ b/CImg.h @@ -0,0 +1,64793 @@ +/* + # + # File : CImg.h + # ( C++ header file ) + # + # Description : C++ Template Image Processing Toolkit. + # This file is the main component of the CImg Library project. + # ( http://cimg.eu ) + # + # Project manager : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # A complete list of contributors is available in file 'README.txt' + # distributed within the CImg package. + # + # Licenses : This file is 'dual-licensed', you have to choose one + # of the two licenses below to apply. + # + # CeCILL-C + # The CeCILL-C license is close to the GNU LGPL. + # ( http://cecill.info/licences/Licence_CeCILL-C_V1-en.html ) + # + # or CeCILL v2.1 + # The CeCILL license is compatible with the GNU GPL. + # ( http://cecill.info/licences/Licence_CeCILL_V2.1-en.html ) + # + # This software is governed either by the CeCILL or the CeCILL-C license + # under French law and abiding by the rules of distribution of free software. + # You can use, modify and or redistribute the software under the terms of + # the CeCILL or CeCILL-C licenses as circulated by CEA, CNRS and INRIA + # at the following URL: "http://cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL and CeCILL-C licenses and that you accept its terms. + # +*/ + +// Set version number of the library. +#ifndef cimg_version +#define cimg_version 297 + +/*----------------------------------------------------------- + # + # Test and possibly auto-set CImg configuration variables + # and include required headers. + # + # If you find that the default configuration variables are + # not adapted to your system, you can override their values + # before including the header file "CImg.h" + # (use the #define directive). + # + ------------------------------------------------------------*/ + +// Include standard C++ headers. +// This is the minimal set of required headers to make CImg-based codes compile. +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define cimg_str(x) #x +#define cimg_str2(x) cimg_str(x) + +// Detect/configure OS variables. +// +// Define 'cimg_OS' to: '0' for an unknown OS (will try to minize library dependencies). +// '1' for a Unix-like OS (Linux, Solaris, BSD, MacOSX, Irix, ...). +// '2' for Microsoft Windows. +// (auto-detection is performed if 'cimg_OS' is not set by the user). +#ifndef cimg_OS +#if defined(unix) || defined(__unix) || defined(__unix__) \ + || defined(linux) || defined(__linux) || defined(__linux__) \ + || defined(sun) || defined(__sun) \ + || defined(BSD) || defined(__OpenBSD__) || defined(__NetBSD__) \ + || defined(__FreeBSD__) || defined (__DragonFly__) \ + || defined(sgi) || defined(__sgi) \ + || defined(__OSX__) || defined(__MACOSX__) || defined(__APPLE__) \ + || defined(__CYGWIN__) +#define cimg_OS 1 +#elif defined(_MSC_VER) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) \ + || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) +#define cimg_OS 2 +#else +#define cimg_OS 0 +#endif +#elif !(cimg_OS==0 || cimg_OS==1 || cimg_OS==2) +#error CImg Library: Invalid configuration variable 'cimg_OS'. +#error (correct values are '0 = unknown OS', '1 = Unix-like OS', '2 = Microsoft Windows'). +#endif +#ifndef cimg_date +#define cimg_date __DATE__ +#endif +#ifndef cimg_time +#define cimg_time __TIME__ +#endif + +// Disable silly warnings on some Microsoft VC++ compilers. +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4127) +#pragma warning(disable:4244) +#pragma warning(disable:4311) +#pragma warning(disable:4312) +#pragma warning(disable:4319) +#pragma warning(disable:4512) +#pragma warning(disable:4571) +#pragma warning(disable:4640) +#pragma warning(disable:4706) +#pragma warning(disable:4710) +#pragma warning(disable:4800) +#pragma warning(disable:4804) +#pragma warning(disable:4820) +#pragma warning(disable:4996) + +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE 1 +#endif +#ifndef _CRT_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS 1 +#endif +#ifndef _CRT_NONSTDC_NO_DEPRECATE +#define _CRT_NONSTDC_NO_DEPRECATE 1 +#endif +#endif + +// Define correct string functions for each compiler and OS. +#if cimg_OS==2 && defined(_MSC_VER) +#define cimg_sscanf std::sscanf +#define cimg_sprintf std::sprintf +#define cimg_snprintf cimg::_snprintf +#define cimg_vsnprintf cimg::_vsnprintf +#else +#include +#if defined(__MACOSX__) || defined(__APPLE__) +#define cimg_sscanf cimg::_sscanf +#define cimg_sprintf cimg::_sprintf +#define cimg_snprintf cimg::_snprintf +#define cimg_vsnprintf cimg::_vsnprintf +#else +#define cimg_sscanf std::sscanf +#define cimg_sprintf std::sprintf +#define cimg_snprintf snprintf +#define cimg_vsnprintf vsnprintf +#endif +#endif + +// Include OS-specific headers. +#if cimg_OS==1 +#include +#include +#include +#include +#include +#include +#elif cimg_OS==2 +#ifndef NOMINMAX +#define NOMINMAX +#endif +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#ifndef _WIN32_IE +#define _WIN32_IE 0x0400 +#endif +#include +#include +#include +enum {FALSE_WIN = 0}; +#endif + +// Look for C++11 features. +#ifndef cimg_use_cpp11 +#if __cplusplus>201100 +#define cimg_use_cpp11 1 +#else +#define cimg_use_cpp11 0 +#endif +#endif +#if cimg_use_cpp11==1 +#include +#include +#endif + +// Convenient macro to define pragma +#ifdef _MSC_VER +#define cimg_pragma(x) __pragma(x) +#else +#define cimg_pragma(x) _Pragma(#x) +#endif + +// Define own types 'cimg_long/ulong' and 'cimg_int64/uint64' to ensure portability. +// ( constrained to 'sizeof(cimg_ulong/cimg_long) = sizeof(void*)' and 'sizeof(cimg_int64/cimg_uint64)=8' ). +#if cimg_OS==2 + +#define cimg_uint64 unsigned __int64 +#define cimg_int64 __int64 +#define cimg_ulong UINT_PTR +#define cimg_long INT_PTR +#ifdef _MSC_VER +#define cimg_fuint64 "%I64u" +#define cimg_fint64 "%I64d" +#else +#define cimg_fuint64 "%llu" +#define cimg_fint64 "%lld" +#endif + +#else + +#if UINTPTR_MAX==0xffffffff || defined(__arm__) || defined(_M_ARM) || ((ULONG_MAX)==(UINT_MAX)) +#define cimg_uint64 unsigned long long +#define cimg_int64 long long +#define cimg_fuint64 "%llu" +#define cimg_fint64 "%lld" +#else +#define cimg_uint64 unsigned long +#define cimg_int64 long +#define cimg_fuint64 "%lu" +#define cimg_fint64 "%ld" +#endif + +#if defined(__arm__) || defined(_M_ARM) +#define cimg_ulong unsigned long long +#define cimg_long long long +#else +#define cimg_ulong unsigned long +#define cimg_long long +#endif + +#endif + +// Configure filename separator. +// +// Filename separator is set by default to '/', except for Windows where it is '\'. +#ifndef cimg_file_separator +#if cimg_OS==2 +#define cimg_file_separator '\\' +#else +#define cimg_file_separator '/' +#endif +#endif + +// Configure verbosity of output messages. +// +// Define 'cimg_verbosity' to: '0' to hide library messages (quiet mode). +// '1' to output library messages on the console. +// '2' to output library messages on a basic dialog window (default behavior). +// '3' to do as '1' + add extra warnings (may slow down the code!). +// '4' to do as '2' + add extra warnings (may slow down the code!). +// +// Define 'cimg_strict_warnings' to replace warning messages by exception throwns. +// +// Define 'cimg_use_vt100' to allow output of color messages on VT100-compatible terminals. +#ifndef cimg_verbosity +#if cimg_OS==2 +#define cimg_verbosity 2 +#else +#define cimg_verbosity 1 +#endif +#elif !(cimg_verbosity==0 || cimg_verbosity==1 || cimg_verbosity==2 || cimg_verbosity==3 || cimg_verbosity==4) +#error CImg Library: Configuration variable 'cimg_verbosity' is badly defined. +#error (should be { 0=quiet | 1=console | 2=dialog | 3=console+warnings | 4=dialog+warnings }). +#endif + +// Configure OpenMP support. +// (http://www.openmp.org) +// +// Define 'cimg_use_openmp' to enable OpenMP support (requires OpenMP 3.0+). +// +// OpenMP directives are used in many CImg functions to get +// advantages of multi-core CPUs. +#if !defined(cimg_use_openmp) +#ifdef _OPENMP +#define cimg_use_openmp 1 +#else +#define cimg_use_openmp 0 +#endif +#endif +#if cimg_use_openmp!=0 +#include +#define cimg_pragma_openmp(p) cimg_pragma(omp p) +#else +#define cimg_pragma_openmp(p) +#endif + +// Configure the 'abort' signal handler (does nothing by default). +// A typical signal handler can be defined in your own source like this: +// #define cimg_abort_test if (is_abort) throw CImgAbortException("") +// +// where 'is_abort' is a boolean variable defined somewhere in your code and reachable in the method. +// 'cimg_abort_test2' does the same but is called more often (in inner loops). +#if defined(cimg_abort_test) && cimg_use_openmp!=0 + +// Define abort macros to be used with OpenMP. +#ifndef _cimg_abort_init_openmp +#define _cimg_abort_init_openmp bool _cimg_abort_go_openmp = true; cimg::unused(_cimg_abort_go_openmp) +#endif +#ifndef _cimg_abort_try_openmp +#define _cimg_abort_try_openmp if (_cimg_abort_go_openmp) try +#endif +#ifndef _cimg_abort_catch_openmp +#define _cimg_abort_catch_openmp catch (CImgAbortException&) { cimg_pragma(omp atomic) _cimg_abort_go_openmp&=false; } +#endif +#ifndef _cimg_abort_catch_fill_openmp +#define _cimg_abort_catch_fill_openmp \ + catch (CImgException& e) { cimg_pragma(omp critical(abort)) CImg::string(e._message).move_to(is_error); \ + cimg_pragma(omp atomic) _cimg_abort_go_openmp&=false; } +#endif +#ifdef cimg_abort_test2 +#ifndef _cimg_abort_try_openmp2 +#define _cimg_abort_try_openmp2 _cimg_abort_try_openmp +#endif +#ifndef _cimg_abort_catch_openmp2 +#define _cimg_abort_catch_openmp2 _cimg_abort_catch_openmp +#endif +#endif +#endif + +#ifndef _cimg_abort_init_openmp +#define _cimg_abort_init_openmp +#endif +#ifndef _cimg_abort_try_openmp +#define _cimg_abort_try_openmp +#endif +#ifndef _cimg_abort_catch_openmp +#define _cimg_abort_catch_openmp +#endif +#ifndef _cimg_abort_try_openmp2 +#define _cimg_abort_try_openmp2 +#endif +#ifndef _cimg_abort_catch_openmp2 +#define _cimg_abort_catch_openmp2 +#endif +#ifndef _cimg_abort_catch_fill_openmp +#define _cimg_abort_catch_fill_openmp +#endif +#ifndef cimg_abort_init +#define cimg_abort_init +#endif +#ifndef cimg_abort_test +#define cimg_abort_test +#endif +#ifndef cimg_abort_test2 +#define cimg_abort_test2 +#endif + +// Configure display framework. +// +// Define 'cimg_display' to: '0' to disable display capabilities. +// '1' to use the X-Window framework (X11). +// '2' to use the Microsoft GDI32 framework. +#ifndef cimg_display +#if cimg_OS==0 +#define cimg_display 0 +#elif cimg_OS==1 +#define cimg_display 1 +#elif cimg_OS==2 +#define cimg_display 2 +#endif +#elif !(cimg_display==0 || cimg_display==1 || cimg_display==2) +#error CImg Library: Configuration variable 'cimg_display' is badly defined. +#error (should be { 0=none | 1=X-Window (X11) | 2=Microsoft GDI32 }). +#endif + +// Include display-specific headers. +#if cimg_display==1 +#include +#include +#include +#include +#ifdef cimg_use_xshm +#include +#include +#include +#endif +#ifdef cimg_use_xrandr +#include +#endif +#endif +#ifndef cimg_appname +#define cimg_appname "CImg" +#endif + +// Configure OpenCV support. +// (http://opencv.willowgarage.com/wiki/) +// +// Define 'cimg_use_opencv' to enable OpenCV support. +// +// OpenCV library may be used to access images from cameras +// (see method 'CImg::load_camera()'). +#ifdef cimg_use_opencv +#ifdef True +#undef True +#define _cimg_redefine_True +#endif +#ifdef False +#undef False +#define _cimg_redefine_False +#endif +#ifdef Status +#undef Status +#define _cimg_redefine_Status +#endif +#include +#include +#if CV_MAJOR_VERSION>=3 +#define _cimg_fourcc cv::VideoWriter::fourcc +#define _cimg_cap_prop_frame_width cv::VideoCaptureProperties::CAP_PROP_FRAME_WIDTH +#define _cimg_cap_prop_frame_height cv::VideoCaptureProperties::CAP_PROP_FRAME_HEIGHT +#define _cimg_cap_prop_frame_count cv::VideoCaptureProperties::CAP_PROP_FRAME_COUNT +#else +#define _cimg_fourcc CV_FOURCC +#define _cimg_cap_prop_frame_width CV_CAP_PROP_FRAME_WIDTH +#define _cimg_cap_prop_frame_height CV_CAP_PROP_FRAME_HEIGHT +#define _cimg_cap_prop_frame_count CV_CAP_PROP_FRAME_COUNT +#endif +#endif + +// Configure LibPNG support. +// (http://www.libpng.org) +// +// Define 'cimg_use_png' to enable LibPNG support. +// +// PNG library may be used to get a native support of '.png' files. +// (see methods 'CImg::{load,save}_png()'. +#ifdef cimg_use_png +extern "C" { +#include "png.h" +} +#endif + +// Configure LibJPEG support. +// (http://en.wikipedia.org/wiki/Libjpeg) +// +// Define 'cimg_use_jpeg' to enable LibJPEG support. +// +// JPEG library may be used to get a native support of '.jpg' files. +// (see methods 'CImg::{load,save}_jpeg()'). +#ifdef cimg_use_jpeg +extern "C" { +#include "jpeglib.h" +#include "setjmp.h" +} +#endif + +// Configure LibTIFF support. +// (http://www.libtiff.org) +// +// Define 'cimg_use_tiff' to enable LibTIFF support. +// +// TIFF library may be used to get a native support of '.tif' files. +// (see methods 'CImg[List]::{load,save}_tiff()'). +#ifdef cimg_use_tiff +extern "C" { +#define uint64 uint64_hack_ +#define int64 int64_hack_ +#include "tiffio.h" +#undef uint64 +#undef int64 +} +#endif + +// Configure HEIF support +// (https://github.com/strukturag/libheif) +// +// Define 'cimg_use_heif' to enable HEIF support. +// +// HEIF library may be used to get a native support of '.heic' and '.avif' files. +// (see method 'CImg::load_heif()'). +#ifdef cimg_use_heif +#include +#endif + +// Configure LibMINC2 support. +// (http://en.wikibooks.org/wiki/MINC/Reference/MINC2.0_File_Format_Reference) +// +// Define 'cimg_use_minc2' to enable LibMINC2 support. +// +// MINC2 library may be used to get a native support of '.mnc' files. +// (see methods 'CImg::{load,save}_minc2()'). +#ifdef cimg_use_minc2 +#include "minc_io_simple_volume.h" +#include "minc_1_simple.h" +#include "minc_1_simple_rw.h" +#endif + +// Configure Zlib support. +// (http://www.zlib.net) +// +// Define 'cimg_use_zlib' to enable Zlib support. +// +// Zlib library may be used to allow compressed data in '.cimgz' files +// (see methods 'CImg[List]::{load,save}_cimg()'). +#ifdef cimg_use_zlib +extern "C" { +#include "zlib.h" +} +#endif + +// Configure libcurl support. +// (http://curl.haxx.se/libcurl/) +// +// Define 'cimg_use_curl' to enable libcurl support. +// +// Libcurl may be used to get a native support of file downloading from the network. +// (see method 'cimg::load_network()'.) +#ifdef cimg_use_curl +#include "curl/curl.h" +#endif + +// Configure Magick++ support. +// (http://www.imagemagick.org/Magick++) +// +// Define 'cimg_use_magick' to enable Magick++ support. +// +// Magick++ library may be used to get a native support of various image file formats. +// (see methods 'CImg::{load,save}()'). +#ifdef cimg_use_magick +#include "Magick++.h" +#endif + +// Configure FFTW3 support. +// (http://www.fftw.org) +// +// Define 'cimg_use_fftw3' to enable libFFTW3 support. +// +// FFTW3 library may be used to efficiently compute the Fast Fourier Transform +// of image data, without restriction on the image size. +// (see method 'CImg[List]::FFT()'). +#ifdef cimg_use_fftw3 +extern "C" { +#include "fftw3.h" +} +#endif + +// Configure LibBoard support. +// (http://libboard.sourceforge.net/) +// +// Define 'cimg_use_board' to enable Board support. +// +// Board library may be used to draw 3D objects in vector-graphics canvas +// that can be saved as '.ps' or '.svg' files afterwards. +// (see method 'CImg::draw_object3d()'). +#ifdef cimg_use_board +#include "Board.h" +#endif + +// Configure OpenEXR support. +// (http://www.openexr.com/) +// +// Define 'cimg_use_openexr' to enable OpenEXR support. +// +// OpenEXR library may be used to get a native support of '.exr' files. +// (see methods 'CImg::{load,save}_exr()'). +#ifdef cimg_use_openexr +#if __GNUC__>=5 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated" +#pragma GCC diagnostic ignored "-Wdeprecated-copy" +#pragma GCC diagnostic ignored "-Wshadow" +#endif +#include "ImfRgbaFile.h" +#include "ImfInputFile.h" +#include "ImfChannelList.h" +#include "ImfMatrixAttribute.h" +#include "ImfArray.h" +#if __GNUC__>=5 +#pragma GCC diagnostic pop +#endif +#endif + +// Configure TinyEXR support. +// (https://github.com/syoyo/tinyexr) +// +// Define 'cimg_use_tinyexr' to enable TinyEXR support. +// +// TinyEXR is a small, single header-only library to load and save OpenEXR(.exr) images. +#ifdef cimg_use_tinyexr +#ifndef TINYEXR_IMPLEMENTATION +#define TINYEXR_IMPLEMENTATION +#endif +#include "tinyexr.h" +#endif + +// Lapack configuration. +// (http://www.netlib.org/lapack) +// +// Define 'cimg_use_lapack' to enable LAPACK support. +// +// Lapack library may be used in several CImg methods to speed up +// matrix computations (eigenvalues, inverse, ...). +#ifdef cimg_use_lapack +extern "C" { + extern void sgetrf_(int*, int*, float*, int*, int*, int*); + extern void sgetri_(int*, float*, int*, int*, float*, int*, int*); + extern void sgetrs_(char*, int*, int*, float*, int*, int*, float*, int*, int*); + extern void sgesvd_(char*, char*, int*, int*, float*, int*, float*, float*, int*, float*, int*, float*, int*, int*); + extern void ssyev_(char*, char*, int*, float*, int*, float*, float*, int*, int*); + extern void dgetrf_(int*, int*, double*, int*, int*, int*); + extern void dgetri_(int*, double*, int*, int*, double*, int*, int*); + extern void dgetrs_(char*, int*, int*, double*, int*, int*, double*, int*, int*); + extern void dgesvd_(char*, char*, int*, int*, double*, int*, double*, double*, + int*, double*, int*, double*, int*, int*); + extern void dsyev_(char*, char*, int*, double*, int*, double*, double*, int*, int*); + extern void dgels_(char*, int*,int*,int*,double*,int*,double*,int*,double*,int*,int*); + extern void sgels_(char*, int*,int*,int*,float*,int*,float*,int*,float*,int*,int*); +} +#endif + +// Check if min/max/PI macros are defined. +// +// CImg does not compile if macros 'min', 'max' or 'PI' are defined, +// because it redefines functions min(), max() and const variable PI in the cimg:: namespace. +// so it '#undef' these macros if necessary, and restore them to reasonable +// values at the end of this file. +#ifdef min +#undef min +#define _cimg_redefine_min +#endif +#ifdef max +#undef max +#define _cimg_redefine_max +#endif +#ifdef PI +#undef PI +#define _cimg_redefine_PI +#endif + +// Define 'cimg_library' namespace suffix. +// +// You may want to add a suffix to the 'cimg_library' namespace, for instance if you need to work +// with several versions of the library at the same time. +#ifdef cimg_namespace_suffix +#define __cimg_library_suffixed(s) cimg_library_##s +#define _cimg_library_suffixed(s) __cimg_library_suffixed(s) +#define cimg_library_suffixed _cimg_library_suffixed(cimg_namespace_suffix) +#else +#define cimg_library_suffixed cimg_library +#endif + +/*------------------------------------------------------------------------------ + # + # Define user-friendly macros. + # + # These CImg macros are prefixed by 'cimg_' and can be used safely in your own + # code. They are useful to parse command line options, or to write image loops. + # + ------------------------------------------------------------------------------*/ + +// Macros to define program usage, and retrieve command line arguments. +#define cimg_usage(usage) cimg_library_suffixed::cimg::option((char*)0,argc,argv,(char*)0,usage,false) +#define cimg_help(str) cimg_library_suffixed::cimg::option((char*)0,argc,argv,str,(char*)0) +#define cimg_option(name,_default,usage) cimg_library_suffixed::cimg::option(name,argc,argv,_default,usage) + +// Macros to define and manipulate local neighborhoods. +#define CImg_2x2(I,T) T I[4]; \ + T& I##cc = I[0]; T& I##nc = I[1]; \ + T& I##cn = I[2]; T& I##nn = I[3]; \ + I##cc = I##nc = \ + I##cn = I##nn = 0 + +#define CImg_3x3(I,T) T I[9]; \ + T& I##pp = I[0]; T& I##cp = I[1]; T& I##np = I[2]; \ + T& I##pc = I[3]; T& I##cc = I[4]; T& I##nc = I[5]; \ + T& I##pn = I[6]; T& I##cn = I[7]; T& I##nn = I[8]; \ + I##pp = I##cp = I##np = \ + I##pc = I##cc = I##nc = \ + I##pn = I##cn = I##nn = 0 + +#define CImg_4x4(I,T) T I[16]; \ + T& I##pp = I[0]; T& I##cp = I[1]; T& I##np = I[2]; T& I##ap = I[3]; \ + T& I##pc = I[4]; T& I##cc = I[5]; T& I##nc = I[6]; T& I##ac = I[7]; \ + T& I##pn = I[8]; T& I##cn = I[9]; T& I##nn = I[10]; T& I##an = I[11]; \ + T& I##pa = I[12]; T& I##ca = I[13]; T& I##na = I[14]; T& I##aa = I[15]; \ + I##pp = I##cp = I##np = I##ap = \ + I##pc = I##cc = I##nc = I##ac = \ + I##pn = I##cn = I##nn = I##an = \ + I##pa = I##ca = I##na = I##aa = 0 + +#define CImg_5x5(I,T) T I[25]; \ + T& I##bb = I[0]; T& I##pb = I[1]; T& I##cb = I[2]; T& I##nb = I[3]; T& I##ab = I[4]; \ + T& I##bp = I[5]; T& I##pp = I[6]; T& I##cp = I[7]; T& I##np = I[8]; T& I##ap = I[9]; \ + T& I##bc = I[10]; T& I##pc = I[11]; T& I##cc = I[12]; T& I##nc = I[13]; T& I##ac = I[14]; \ + T& I##bn = I[15]; T& I##pn = I[16]; T& I##cn = I[17]; T& I##nn = I[18]; T& I##an = I[19]; \ + T& I##ba = I[20]; T& I##pa = I[21]; T& I##ca = I[22]; T& I##na = I[23]; T& I##aa = I[24]; \ + I##bb = I##pb = I##cb = I##nb = I##ab = \ + I##bp = I##pp = I##cp = I##np = I##ap = \ + I##bc = I##pc = I##cc = I##nc = I##ac = \ + I##bn = I##pn = I##cn = I##nn = I##an = \ + I##ba = I##pa = I##ca = I##na = I##aa = 0 + +#define CImg_2x2x2(I,T) T I[8]; \ + T& I##ccc = I[0]; T& I##ncc = I[1]; \ + T& I##cnc = I[2]; T& I##nnc = I[3]; \ + T& I##ccn = I[4]; T& I##ncn = I[5]; \ + T& I##cnn = I[6]; T& I##nnn = I[7]; \ + I##ccc = I##ncc = \ + I##cnc = I##nnc = \ + I##ccn = I##ncn = \ + I##cnn = I##nnn = 0 + +#define CImg_3x3x3(I,T) T I[27]; \ + T& I##ppp = I[0]; T& I##cpp = I[1]; T& I##npp = I[2]; \ + T& I##pcp = I[3]; T& I##ccp = I[4]; T& I##ncp = I[5]; \ + T& I##pnp = I[6]; T& I##cnp = I[7]; T& I##nnp = I[8]; \ + T& I##ppc = I[9]; T& I##cpc = I[10]; T& I##npc = I[11]; \ + T& I##pcc = I[12]; T& I##ccc = I[13]; T& I##ncc = I[14]; \ + T& I##pnc = I[15]; T& I##cnc = I[16]; T& I##nnc = I[17]; \ + T& I##ppn = I[18]; T& I##cpn = I[19]; T& I##npn = I[20]; \ + T& I##pcn = I[21]; T& I##ccn = I[22]; T& I##ncn = I[23]; \ + T& I##pnn = I[24]; T& I##cnn = I[25]; T& I##nnn = I[26]; \ + I##ppp = I##cpp = I##npp = \ + I##pcp = I##ccp = I##ncp = \ + I##pnp = I##cnp = I##nnp = \ + I##ppc = I##cpc = I##npc = \ + I##pcc = I##ccc = I##ncc = \ + I##pnc = I##cnc = I##nnc = \ + I##ppn = I##cpn = I##npn = \ + I##pcn = I##ccn = I##ncn = \ + I##pnn = I##cnn = I##nnn = 0 + +#define cimg_def2x2(img,x,y) \ + int _n1##x = x<(img).width() - 1?x + 1:(img).width() - 1, \ + _n1##y = y<(img).height() - 1?y + 1:(img).height() - 1 + +#define cimg_def3x3(img,x,y) \ + cimg_def2x2(img,x,y); \ + int _p1##x = x>1?x - 1:0, \ + _p1##y = y>1?y - 1:0 + +#define cimg_def4x4(img,x,y) \ + cimg_def3x3(img,x,y); \ + int _n2##x = x<(img).width() - 2?x + 2:(img).width() - 1, \ + _n2##y = y<(img).height() - 2?y + 2:(img).height() - 1 + +#define cimg_def5x5(img,x,y) \ + cimg_def4x4(img,x,y); \ + int _p2##x = x>2?x - 2:0, \ + _p2##y = y>2?y - 2:0 + +#define cimg_def6x6(img,x,y) \ + cimg_def5x5(img,x,y); \ + int _n3##x = x<(img).width() - 3?x + 3:(img).width() - 1, \ + _n3##y = y<(img).height() - 3?y + 3:(img).height() - 1 + +#define cimg_def7x7(img,x,y) \ + cimg_def6x6(img,x,y); \ + int _p3##x = x>3?x - 3:0, \ + _p3##y = y>3?y - 3:0 + +#define cimg_def8x8(img,x,y) \ + cimg_def7x7(img,x,y); \ + int _n4##x = x<(img).width() - 4?x + 4:(img).width() - 1, \ + _n4##y = y<(img).height() - 4?y + 4:(img).height() - 1 + +#define cimg_def9x9(img,x,y) \ + cimg_def8x8(img,x,y); \ + int _p4##x = x>4?x - 4:0, \ + _p4##y = y>4?y - 4:0 + +#define cimg_def2x2x2(img,x,y,z) \ + cimg_def2x2(img,x,y); \ + int _n1##z = z<(img).depth() - 1?z + 1:(img).depth() - 1 + +#define cimg_def3x3x3(img,x,y,z) \ + cimg_def2x2x2(img,x,y,z); \ + int _p1##x = x>1?x - 1:0, \ + _p1##y = y>1?y - 1:0, \ + _p1##z = z>1?z - 1:0 + +#define cimg_get2x2(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(x,y,z,c), I[1] = (T)(img)(_n1##x,y,z,c), I[2] = (T)(img)(x,_n1##y,z,c), \ + I[3] = (T)(img)(_n1##x,_n1##y,z,c) + +#define cimg_get3x3(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p1##x,_p1##y,z,c), I[1] = (T)(img)(x,_p1##y,z,c), I[2] = (T)(img)(_n1##x,_p1##y,z,c), \ + I[3] = (T)(img)(_p1##x,y,z,c), I[4] = (T)(img)(x,y,z,c), I[5] = (T)(img)(_n1##x,y,z,c), \ + I[6] = (T)(img)(_p1##x,_n1##y,z,c), I[7] = (T)(img)(x,_n1##y,z,c), I[8] = (T)(img)(_n1##x,_n1##y,z,c) + +#define cimg_get4x4(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p1##x,_p1##y,z,c), I[1] = (T)(img)(x,_p1##y,z,c), I[2] = (T)(img)(_n1##x,_p1##y,z,c), \ + I[3] = (T)(img)(_n2##x,_p1##y,z,c), I[4] = (T)(img)(_p1##x,y,z,c), I[5] = (T)(img)(x,y,z,c), \ + I[6] = (T)(img)(_n1##x,y,z,c), I[7] = (T)(img)(_n2##x,y,z,c), I[8] = (T)(img)(_p1##x,_n1##y,z,c), \ + I[9] = (T)(img)(x,_n1##y,z,c), I[10] = (T)(img)(_n1##x,_n1##y,z,c), I[11] = (T)(img)(_n2##x,_n1##y,z,c), \ + I[12] = (T)(img)(_p1##x,_n2##y,z,c), I[13] = (T)(img)(x,_n2##y,z,c), I[14] = (T)(img)(_n1##x,_n2##y,z,c), \ + I[15] = (T)(img)(_n2##x,_n2##y,z,c) + +#define cimg_get5x5(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p2##x,_p2##y,z,c), I[1] = (T)(img)(_p1##x,_p2##y,z,c), I[2] = (T)(img)(x,_p2##y,z,c), \ + I[3] = (T)(img)(_n1##x,_p2##y,z,c), I[4] = (T)(img)(_n2##x,_p2##y,z,c), I[5] = (T)(img)(_p2##x,_p1##y,z,c), \ + I[6] = (T)(img)(_p1##x,_p1##y,z,c), I[7] = (T)(img)(x,_p1##y,z,c), I[8] = (T)(img)(_n1##x,_p1##y,z,c), \ + I[9] = (T)(img)(_n2##x,_p1##y,z,c), I[10] = (T)(img)(_p2##x,y,z,c), I[11] = (T)(img)(_p1##x,y,z,c), \ + I[12] = (T)(img)(x,y,z,c), I[13] = (T)(img)(_n1##x,y,z,c), I[14] = (T)(img)(_n2##x,y,z,c), \ + I[15] = (T)(img)(_p2##x,_n1##y,z,c), I[16] = (T)(img)(_p1##x,_n1##y,z,c), I[17] = (T)(img)(x,_n1##y,z,c), \ + I[18] = (T)(img)(_n1##x,_n1##y,z,c), I[19] = (T)(img)(_n2##x,_n1##y,z,c), I[20] = (T)(img)(_p2##x,_n2##y,z,c), \ + I[21] = (T)(img)(_p1##x,_n2##y,z,c), I[22] = (T)(img)(x,_n2##y,z,c), I[23] = (T)(img)(_n1##x,_n2##y,z,c), \ + I[24] = (T)(img)(_n2##x,_n2##y,z,c) + +#define cimg_get6x6(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p2##x,_p2##y,z,c), I[1] = (T)(img)(_p1##x,_p2##y,z,c), I[2] = (T)(img)(x,_p2##y,z,c), \ + I[3] = (T)(img)(_n1##x,_p2##y,z,c), I[4] = (T)(img)(_n2##x,_p2##y,z,c), I[5] = (T)(img)(_n3##x,_p2##y,z,c), \ + I[6] = (T)(img)(_p2##x,_p1##y,z,c), I[7] = (T)(img)(_p1##x,_p1##y,z,c), I[8] = (T)(img)(x,_p1##y,z,c), \ + I[9] = (T)(img)(_n1##x,_p1##y,z,c), I[10] = (T)(img)(_n2##x,_p1##y,z,c), I[11] = (T)(img)(_n3##x,_p1##y,z,c), \ + I[12] = (T)(img)(_p2##x,y,z,c), I[13] = (T)(img)(_p1##x,y,z,c), I[14] = (T)(img)(x,y,z,c), \ + I[15] = (T)(img)(_n1##x,y,z,c), I[16] = (T)(img)(_n2##x,y,z,c), I[17] = (T)(img)(_n3##x,y,z,c), \ + I[18] = (T)(img)(_p2##x,_n1##y,z,c), I[19] = (T)(img)(_p1##x,_n1##y,z,c), I[20] = (T)(img)(x,_n1##y,z,c), \ + I[21] = (T)(img)(_n1##x,_n1##y,z,c), I[22] = (T)(img)(_n2##x,_n1##y,z,c), I[23] = (T)(img)(_n3##x,_n1##y,z,c), \ + I[24] = (T)(img)(_p2##x,_n2##y,z,c), I[25] = (T)(img)(_p1##x,_n2##y,z,c), I[26] = (T)(img)(x,_n2##y,z,c), \ + I[27] = (T)(img)(_n1##x,_n2##y,z,c), I[28] = (T)(img)(_n2##x,_n2##y,z,c), I[29] = (T)(img)(_n3##x,_n2##y,z,c), \ + I[30] = (T)(img)(_p2##x,_n3##y,z,c), I[31] = (T)(img)(_p1##x,_n3##y,z,c), I[32] = (T)(img)(x,_n3##y,z,c), \ + I[33] = (T)(img)(_n1##x,_n3##y,z,c), I[34] = (T)(img)(_n2##x,_n3##y,z,c), I[35] = (T)(img)(_n3##x,_n3##y,z,c) + +#define cimg_get7x7(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p3##x,_p3##y,z,c), I[1] = (T)(img)(_p2##x,_p3##y,z,c), I[2] = (T)(img)(_p1##x,_p3##y,z,c), \ + I[3] = (T)(img)(x,_p3##y,z,c), I[4] = (T)(img)(_n1##x,_p3##y,z,c), I[5] = (T)(img)(_n2##x,_p3##y,z,c), \ + I[6] = (T)(img)(_n3##x,_p3##y,z,c), I[7] = (T)(img)(_p3##x,_p2##y,z,c), I[8] = (T)(img)(_p2##x,_p2##y,z,c), \ + I[9] = (T)(img)(_p1##x,_p2##y,z,c), I[10] = (T)(img)(x,_p2##y,z,c), I[11] = (T)(img)(_n1##x,_p2##y,z,c), \ + I[12] = (T)(img)(_n2##x,_p2##y,z,c), I[13] = (T)(img)(_n3##x,_p2##y,z,c), I[14] = (T)(img)(_p3##x,_p1##y,z,c), \ + I[15] = (T)(img)(_p2##x,_p1##y,z,c), I[16] = (T)(img)(_p1##x,_p1##y,z,c), I[17] = (T)(img)(x,_p1##y,z,c), \ + I[18] = (T)(img)(_n1##x,_p1##y,z,c), I[19] = (T)(img)(_n2##x,_p1##y,z,c), I[20] = (T)(img)(_n3##x,_p1##y,z,c), \ + I[21] = (T)(img)(_p3##x,y,z,c), I[22] = (T)(img)(_p2##x,y,z,c), I[23] = (T)(img)(_p1##x,y,z,c), \ + I[24] = (T)(img)(x,y,z,c), I[25] = (T)(img)(_n1##x,y,z,c), I[26] = (T)(img)(_n2##x,y,z,c), \ + I[27] = (T)(img)(_n3##x,y,z,c), I[28] = (T)(img)(_p3##x,_n1##y,z,c), I[29] = (T)(img)(_p2##x,_n1##y,z,c), \ + I[30] = (T)(img)(_p1##x,_n1##y,z,c), I[31] = (T)(img)(x,_n1##y,z,c), I[32] = (T)(img)(_n1##x,_n1##y,z,c), \ + I[33] = (T)(img)(_n2##x,_n1##y,z,c), I[34] = (T)(img)(_n3##x,_n1##y,z,c), I[35] = (T)(img)(_p3##x,_n2##y,z,c), \ + I[36] = (T)(img)(_p2##x,_n2##y,z,c), I[37] = (T)(img)(_p1##x,_n2##y,z,c), I[38] = (T)(img)(x,_n2##y,z,c), \ + I[39] = (T)(img)(_n1##x,_n2##y,z,c), I[40] = (T)(img)(_n2##x,_n2##y,z,c), I[41] = (T)(img)(_n3##x,_n2##y,z,c), \ + I[42] = (T)(img)(_p3##x,_n3##y,z,c), I[43] = (T)(img)(_p2##x,_n3##y,z,c), I[44] = (T)(img)(_p1##x,_n3##y,z,c), \ + I[45] = (T)(img)(x,_n3##y,z,c), I[46] = (T)(img)(_n1##x,_n3##y,z,c), I[47] = (T)(img)(_n2##x,_n3##y,z,c), \ + I[48] = (T)(img)(_n3##x,_n3##y,z,c) + +#define cimg_get8x8(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p3##x,_p3##y,z,c), I[1] = (T)(img)(_p2##x,_p3##y,z,c), I[2] = (T)(img)(_p1##x,_p3##y,z,c), \ + I[3] = (T)(img)(x,_p3##y,z,c), I[4] = (T)(img)(_n1##x,_p3##y,z,c), I[5] = (T)(img)(_n2##x,_p3##y,z,c), \ + I[6] = (T)(img)(_n3##x,_p3##y,z,c), I[7] = (T)(img)(_n4##x,_p3##y,z,c), I[8] = (T)(img)(_p3##x,_p2##y,z,c), \ + I[9] = (T)(img)(_p2##x,_p2##y,z,c), I[10] = (T)(img)(_p1##x,_p2##y,z,c), I[11] = (T)(img)(x,_p2##y,z,c), \ + I[12] = (T)(img)(_n1##x,_p2##y,z,c), I[13] = (T)(img)(_n2##x,_p2##y,z,c), I[14] = (T)(img)(_n3##x,_p2##y,z,c), \ + I[15] = (T)(img)(_n4##x,_p2##y,z,c), I[16] = (T)(img)(_p3##x,_p1##y,z,c), I[17] = (T)(img)(_p2##x,_p1##y,z,c), \ + I[18] = (T)(img)(_p1##x,_p1##y,z,c), I[19] = (T)(img)(x,_p1##y,z,c), I[20] = (T)(img)(_n1##x,_p1##y,z,c), \ + I[21] = (T)(img)(_n2##x,_p1##y,z,c), I[22] = (T)(img)(_n3##x,_p1##y,z,c), I[23] = (T)(img)(_n4##x,_p1##y,z,c), \ + I[24] = (T)(img)(_p3##x,y,z,c), I[25] = (T)(img)(_p2##x,y,z,c), I[26] = (T)(img)(_p1##x,y,z,c), \ + I[27] = (T)(img)(x,y,z,c), I[28] = (T)(img)(_n1##x,y,z,c), I[29] = (T)(img)(_n2##x,y,z,c), \ + I[30] = (T)(img)(_n3##x,y,z,c), I[31] = (T)(img)(_n4##x,y,z,c), I[32] = (T)(img)(_p3##x,_n1##y,z,c), \ + I[33] = (T)(img)(_p2##x,_n1##y,z,c), I[34] = (T)(img)(_p1##x,_n1##y,z,c), I[35] = (T)(img)(x,_n1##y,z,c), \ + I[36] = (T)(img)(_n1##x,_n1##y,z,c), I[37] = (T)(img)(_n2##x,_n1##y,z,c), I[38] = (T)(img)(_n3##x,_n1##y,z,c), \ + I[39] = (T)(img)(_n4##x,_n1##y,z,c), I[40] = (T)(img)(_p3##x,_n2##y,z,c), I[41] = (T)(img)(_p2##x,_n2##y,z,c), \ + I[42] = (T)(img)(_p1##x,_n2##y,z,c), I[43] = (T)(img)(x,_n2##y,z,c), I[44] = (T)(img)(_n1##x,_n2##y,z,c), \ + I[45] = (T)(img)(_n2##x,_n2##y,z,c), I[46] = (T)(img)(_n3##x,_n2##y,z,c), I[47] = (T)(img)(_n4##x,_n2##y,z,c), \ + I[48] = (T)(img)(_p3##x,_n3##y,z,c), I[49] = (T)(img)(_p2##x,_n3##y,z,c), I[50] = (T)(img)(_p1##x,_n3##y,z,c), \ + I[51] = (T)(img)(x,_n3##y,z,c), I[52] = (T)(img)(_n1##x,_n3##y,z,c), I[53] = (T)(img)(_n2##x,_n3##y,z,c), \ + I[54] = (T)(img)(_n3##x,_n3##y,z,c), I[55] = (T)(img)(_n4##x,_n3##y,z,c), I[56] = (T)(img)(_p3##x,_n4##y,z,c), \ + I[57] = (T)(img)(_p2##x,_n4##y,z,c), I[58] = (T)(img)(_p1##x,_n4##y,z,c), I[59] = (T)(img)(x,_n4##y,z,c), \ + I[60] = (T)(img)(_n1##x,_n4##y,z,c), I[61] = (T)(img)(_n2##x,_n4##y,z,c), I[62] = (T)(img)(_n3##x,_n4##y,z,c), \ + I[63] = (T)(img)(_n4##x,_n4##y,z,c); + +#define cimg_get9x9(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p4##x,_p4##y,z,c), I[1] = (T)(img)(_p3##x,_p4##y,z,c), I[2] = (T)(img)(_p2##x,_p4##y,z,c), \ + I[3] = (T)(img)(_p1##x,_p4##y,z,c), I[4] = (T)(img)(x,_p4##y,z,c), I[5] = (T)(img)(_n1##x,_p4##y,z,c), \ + I[6] = (T)(img)(_n2##x,_p4##y,z,c), I[7] = (T)(img)(_n3##x,_p4##y,z,c), I[8] = (T)(img)(_n4##x,_p4##y,z,c), \ + I[9] = (T)(img)(_p4##x,_p3##y,z,c), I[10] = (T)(img)(_p3##x,_p3##y,z,c), I[11] = (T)(img)(_p2##x,_p3##y,z,c), \ + I[12] = (T)(img)(_p1##x,_p3##y,z,c), I[13] = (T)(img)(x,_p3##y,z,c), I[14] = (T)(img)(_n1##x,_p3##y,z,c), \ + I[15] = (T)(img)(_n2##x,_p3##y,z,c), I[16] = (T)(img)(_n3##x,_p3##y,z,c), I[17] = (T)(img)(_n4##x,_p3##y,z,c), \ + I[18] = (T)(img)(_p4##x,_p2##y,z,c), I[19] = (T)(img)(_p3##x,_p2##y,z,c), I[20] = (T)(img)(_p2##x,_p2##y,z,c), \ + I[21] = (T)(img)(_p1##x,_p2##y,z,c), I[22] = (T)(img)(x,_p2##y,z,c), I[23] = (T)(img)(_n1##x,_p2##y,z,c), \ + I[24] = (T)(img)(_n2##x,_p2##y,z,c), I[25] = (T)(img)(_n3##x,_p2##y,z,c), I[26] = (T)(img)(_n4##x,_p2##y,z,c), \ + I[27] = (T)(img)(_p4##x,_p1##y,z,c), I[28] = (T)(img)(_p3##x,_p1##y,z,c), I[29] = (T)(img)(_p2##x,_p1##y,z,c), \ + I[30] = (T)(img)(_p1##x,_p1##y,z,c), I[31] = (T)(img)(x,_p1##y,z,c), I[32] = (T)(img)(_n1##x,_p1##y,z,c), \ + I[33] = (T)(img)(_n2##x,_p1##y,z,c), I[34] = (T)(img)(_n3##x,_p1##y,z,c), I[35] = (T)(img)(_n4##x,_p1##y,z,c), \ + I[36] = (T)(img)(_p4##x,y,z,c), I[37] = (T)(img)(_p3##x,y,z,c), I[38] = (T)(img)(_p2##x,y,z,c), \ + I[39] = (T)(img)(_p1##x,y,z,c), I[40] = (T)(img)(x,y,z,c), I[41] = (T)(img)(_n1##x,y,z,c), \ + I[42] = (T)(img)(_n2##x,y,z,c), I[43] = (T)(img)(_n3##x,y,z,c), I[44] = (T)(img)(_n4##x,y,z,c), \ + I[45] = (T)(img)(_p4##x,_n1##y,z,c), I[46] = (T)(img)(_p3##x,_n1##y,z,c), I[47] = (T)(img)(_p2##x,_n1##y,z,c), \ + I[48] = (T)(img)(_p1##x,_n1##y,z,c), I[49] = (T)(img)(x,_n1##y,z,c), I[50] = (T)(img)(_n1##x,_n1##y,z,c), \ + I[51] = (T)(img)(_n2##x,_n1##y,z,c), I[52] = (T)(img)(_n3##x,_n1##y,z,c), I[53] = (T)(img)(_n4##x,_n1##y,z,c), \ + I[54] = (T)(img)(_p4##x,_n2##y,z,c), I[55] = (T)(img)(_p3##x,_n2##y,z,c), I[56] = (T)(img)(_p2##x,_n2##y,z,c), \ + I[57] = (T)(img)(_p1##x,_n2##y,z,c), I[58] = (T)(img)(x,_n2##y,z,c), I[59] = (T)(img)(_n1##x,_n2##y,z,c), \ + I[60] = (T)(img)(_n2##x,_n2##y,z,c), I[61] = (T)(img)(_n3##x,_n2##y,z,c), I[62] = (T)(img)(_n4##x,_n2##y,z,c), \ + I[63] = (T)(img)(_p4##x,_n3##y,z,c), I[64] = (T)(img)(_p3##x,_n3##y,z,c), I[65] = (T)(img)(_p2##x,_n3##y,z,c), \ + I[66] = (T)(img)(_p1##x,_n3##y,z,c), I[67] = (T)(img)(x,_n3##y,z,c), I[68] = (T)(img)(_n1##x,_n3##y,z,c), \ + I[69] = (T)(img)(_n2##x,_n3##y,z,c), I[70] = (T)(img)(_n3##x,_n3##y,z,c), I[71] = (T)(img)(_n4##x,_n3##y,z,c), \ + I[72] = (T)(img)(_p4##x,_n4##y,z,c), I[73] = (T)(img)(_p3##x,_n4##y,z,c), I[74] = (T)(img)(_p2##x,_n4##y,z,c), \ + I[75] = (T)(img)(_p1##x,_n4##y,z,c), I[76] = (T)(img)(x,_n4##y,z,c), I[77] = (T)(img)(_n1##x,_n4##y,z,c), \ + I[78] = (T)(img)(_n2##x,_n4##y,z,c), I[79] = (T)(img)(_n3##x,_n4##y,z,c), I[80] = (T)(img)(_n4##x,_n4##y,z,c) + +#define cimg_get2x2x2(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(x,y,z,c), I[1] = (T)(img)(_n1##x,y,z,c), I[2] = (T)(img)(x,_n1##y,z,c), \ + I[3] = (T)(img)(_n1##x,_n1##y,z,c), I[4] = (T)(img)(x,y,_n1##z,c), I[5] = (T)(img)(_n1##x,y,_n1##z,c), \ + I[6] = (T)(img)(x,_n1##y,_n1##z,c), I[7] = (T)(img)(_n1##x,_n1##y,_n1##z,c) + +#define cimg_get3x3x3(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p1##x,_p1##y,_p1##z,c), I[1] = (T)(img)(x,_p1##y,_p1##z,c), \ + I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c), I[3] = (T)(img)(_p1##x,y,_p1##z,c), I[4] = (T)(img)(x,y,_p1##z,c), \ + I[5] = (T)(img)(_n1##x,y,_p1##z,c), I[6] = (T)(img)(_p1##x,_n1##y,_p1##z,c), I[7] = (T)(img)(x,_n1##y,_p1##z,c), \ + I[8] = (T)(img)(_n1##x,_n1##y,_p1##z,c), I[9] = (T)(img)(_p1##x,_p1##y,z,c), I[10] = (T)(img)(x,_p1##y,z,c), \ + I[11] = (T)(img)(_n1##x,_p1##y,z,c), I[12] = (T)(img)(_p1##x,y,z,c), I[13] = (T)(img)(x,y,z,c), \ + I[14] = (T)(img)(_n1##x,y,z,c), I[15] = (T)(img)(_p1##x,_n1##y,z,c), I[16] = (T)(img)(x,_n1##y,z,c), \ + I[17] = (T)(img)(_n1##x,_n1##y,z,c), I[18] = (T)(img)(_p1##x,_p1##y,_n1##z,c), I[19] = (T)(img)(x,_p1##y,_n1##z,c), \ + I[20] = (T)(img)(_n1##x,_p1##y,_n1##z,c), I[21] = (T)(img)(_p1##x,y,_n1##z,c), I[22] = (T)(img)(x,y,_n1##z,c), \ + I[23] = (T)(img)(_n1##x,y,_n1##z,c), I[24] = (T)(img)(_p1##x,_n1##y,_n1##z,c), I[25] = (T)(img)(x,_n1##y,_n1##z,c), \ + I[26] = (T)(img)(_n1##x,_n1##y,_n1##z,c) + +// Macros to perform various image loops. +// +// These macros are simpler to use than loops with C++ iterators. +#define cimg_for(img,ptrs,T_ptrs) \ + for (T_ptrs *ptrs = (img)._data, *_max##ptrs = (img)._data + (img).size(); ptrs<_max##ptrs; ++ptrs) +#define cimg_rof(img,ptrs,T_ptrs) for (T_ptrs *ptrs = (img)._data + (img).size() - 1; ptrs>=(img)._data; --ptrs) +#define cimg_foroff(img,off) for (cimg_ulong off = 0, _max##off = (img).size(); off<_max##off; ++off) +#define cimg_rofoff(img,off) for (cimg_long off = (cimg_long)((img).size() - 1); off>=0; --off) + +#define cimg_for1(bound,i) for (int i = 0; i<(int)(bound); ++i) +#define cimg_forX(img,x) cimg_for1((img)._width,x) +#define cimg_forY(img,y) cimg_for1((img)._height,y) +#define cimg_forZ(img,z) cimg_for1((img)._depth,z) +#define cimg_forC(img,c) cimg_for1((img)._spectrum,c) +#define cimg_forXY(img,x,y) cimg_forY(img,y) cimg_forX(img,x) +#define cimg_forXZ(img,x,z) cimg_forZ(img,z) cimg_forX(img,x) +#define cimg_forYZ(img,y,z) cimg_forZ(img,z) cimg_forY(img,y) +#define cimg_forXC(img,x,c) cimg_forC(img,c) cimg_forX(img,x) +#define cimg_forYC(img,y,c) cimg_forC(img,c) cimg_forY(img,y) +#define cimg_forZC(img,z,c) cimg_forC(img,c) cimg_forZ(img,z) +#define cimg_forXYZ(img,x,y,z) cimg_forZ(img,z) cimg_forXY(img,x,y) +#define cimg_forXYC(img,x,y,c) cimg_forC(img,c) cimg_forXY(img,x,y) +#define cimg_forXZC(img,x,z,c) cimg_forC(img,c) cimg_forXZ(img,x,z) +#define cimg_forYZC(img,y,z,c) cimg_forC(img,c) cimg_forYZ(img,y,z) +#define cimg_forXYZC(img,x,y,z,c) cimg_forC(img,c) cimg_forXYZ(img,x,y,z) + +#define cimg_rof1(bound,i) for (int i = (int)(bound) - 1; i>=0; --i) +#define cimg_rofX(img,x) cimg_rof1((img)._width,x) +#define cimg_rofY(img,y) cimg_rof1((img)._height,y) +#define cimg_rofZ(img,z) cimg_rof1((img)._depth,z) +#define cimg_rofC(img,c) cimg_rof1((img)._spectrum,c) +#define cimg_rofXY(img,x,y) cimg_rofY(img,y) cimg_rofX(img,x) +#define cimg_rofXZ(img,x,z) cimg_rofZ(img,z) cimg_rofX(img,x) +#define cimg_rofYZ(img,y,z) cimg_rofZ(img,z) cimg_rofY(img,y) +#define cimg_rofXC(img,x,c) cimg_rofC(img,c) cimg_rofX(img,x) +#define cimg_rofYC(img,y,c) cimg_rofC(img,c) cimg_rofY(img,y) +#define cimg_rofZC(img,z,c) cimg_rofC(img,c) cimg_rofZ(img,z) +#define cimg_rofXYZ(img,x,y,z) cimg_rofZ(img,z) cimg_rofXY(img,x,y) +#define cimg_rofXYC(img,x,y,c) cimg_rofC(img,c) cimg_rofXY(img,x,y) +#define cimg_rofXZC(img,x,z,c) cimg_rofC(img,c) cimg_rofXZ(img,x,z) +#define cimg_rofYZC(img,y,z,c) cimg_rofC(img,c) cimg_rofYZ(img,y,z) +#define cimg_rofXYZC(img,x,y,z,c) cimg_rofC(img,c) cimg_rofXYZ(img,x,y,z) + +#define cimg_for_in1(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), _max##i = (int)(i1)<(int)(bound)?(int)(i1):(int)(bound) - 1; i<=_max##i; ++i) +#define cimg_for_inX(img,x0,x1,x) cimg_for_in1((img)._width,x0,x1,x) +#define cimg_for_inY(img,y0,y1,y) cimg_for_in1((img)._height,y0,y1,y) +#define cimg_for_inZ(img,z0,z1,z) cimg_for_in1((img)._depth,z0,z1,z) +#define cimg_for_inC(img,c0,c1,c) cimg_for_in1((img)._spectrum,c0,c1,c) +#define cimg_for_inXY(img,x0,y0,x1,y1,x,y) cimg_for_inY(img,y0,y1,y) cimg_for_inX(img,x0,x1,x) +#define cimg_for_inXZ(img,x0,z0,x1,z1,x,z) cimg_for_inZ(img,z0,z1,z) cimg_for_inX(img,x0,x1,x) +#define cimg_for_inXC(img,x0,c0,x1,c1,x,c) cimg_for_inC(img,c0,c1,c) cimg_for_inX(img,x0,x1,x) +#define cimg_for_inYZ(img,y0,z0,y1,z1,y,z) cimg_for_inZ(img,x0,z1,z) cimg_for_inY(img,y0,y1,y) +#define cimg_for_inYC(img,y0,c0,y1,c1,y,c) cimg_for_inC(img,c0,c1,c) cimg_for_inY(img,y0,y1,y) +#define cimg_for_inZC(img,z0,c0,z1,c1,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inZ(img,z0,z1,z) +#define cimg_for_inXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_inZ(img,z0,z1,z) cimg_for_inXY(img,x0,y0,x1,y1,x,y) +#define cimg_for_inXYC(img,x0,y0,c0,x1,y1,c1,x,y,c) cimg_for_inC(img,c0,c1,c) cimg_for_inXY(img,x0,y0,x1,y1,x,y) +#define cimg_for_inXZC(img,x0,z0,c0,x1,z1,c1,x,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inXZ(img,x0,z0,x1,z1,x,z) +#define cimg_for_inYZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inYZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_inXYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_inC(img,c0,c1,c) cimg_for_inXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) +#define cimg_for_insideX(img,x,n) cimg_for_inX(img,n,(img)._width - 1 - (n),x) +#define cimg_for_insideY(img,y,n) cimg_for_inY(img,n,(img)._height - 1 - (n),y) +#define cimg_for_insideZ(img,z,n) cimg_for_inZ(img,n,(img)._depth - 1 - (n),z) +#define cimg_for_insideC(img,c,n) cimg_for_inC(img,n,(img)._spectrum - 1 - (n),c) +#define cimg_for_insideXY(img,x,y,n) cimg_for_inXY(img,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),x,y) +#define cimg_for_insideXYZ(img,x,y,z,n) \ + cimg_for_inXYZ(img,n,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),(img)._depth - 1 - (n),x,y,z) +#define cimg_for_insideXYZC(img,x,y,z,c,n) \ + cimg_for_inXYZ(img,n,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),(img)._depth - 1 - (n),x,y,z) + +#define cimg_for_out1(boundi,i0,i1,i) \ + for (int i = (int)(i0)>0?0:(int)(i1) + 1; i<(int)(boundi); ++i, i = i==(int)(i0)?(int)(i1) + 1:i) +#define cimg_for_out2(boundi,boundj,i0,j0,i1,j1,i,j) \ + for (int j = 0; j<(int)(boundj); ++j) \ + for (int _n1j = (int)(j<(int)(j0) || j>(int)(j1)), i = _n1j?0:(int)(i0)>0?0:(int)(i1) + 1; i<(int)(boundi); \ + ++i, i = _n1j?i:(i==(int)(i0)?(int)(i1) + 1:i)) +#define cimg_for_out3(boundi,boundj,boundk,i0,j0,k0,i1,j1,k1,i,j,k) \ + for (int k = 0; k<(int)(boundk); ++k) \ + for (int _n1k = (int)(k<(int)(k0) || k>(int)(k1)), j = 0; j<(int)(boundj); ++j) \ + for (int _n1j = (int)(j<(int)(j0) || j>(int)(j1)), i = _n1j || _n1k?0:(int)(i0)>0?0:(int)(i1) + 1; i<(int)(boundi); \ + ++i, i = _n1j || _n1k?i:(i==(int)(i0)?(int)(i1) + 1:i)) +#define cimg_for_out4(boundi,boundj,boundk,boundl,i0,j0,k0,l0,i1,j1,k1,l1,i,j,k,l) \ + for (int l = 0; l<(int)(boundl); ++l) \ + for (int _n1l = (int)(l<(int)(l0) || l>(int)(l1)), k = 0; k<(int)(boundk); ++k) \ + for (int _n1k = (int)(k<(int)(k0) || k>(int)(k1)), j = 0; j<(int)(boundj); ++j) \ + for (int _n1j = (int)(j<(int)(j0) || j>(int)(j1)), i = _n1j || _n1k || _n1l?0:(int)(i0)>0?0:(int)(i1) + 1; \ + i<(int)(boundi); ++i, i = _n1j || _n1k || _n1l?i:(i==(int)(i0)?(int)(i1) + 1:i)) +#define cimg_for_outX(img,x0,x1,x) cimg_for_out1((img)._width,x0,x1,x) +#define cimg_for_outY(img,y0,y1,y) cimg_for_out1((img)._height,y0,y1,y) +#define cimg_for_outZ(img,z0,z1,z) cimg_for_out1((img)._depth,z0,z1,z) +#define cimg_for_outC(img,c0,c1,c) cimg_for_out1((img)._spectrum,c0,c1,c) +#define cimg_for_outXY(img,x0,y0,x1,y1,x,y) cimg_for_out2((img)._width,(img)._height,x0,y0,x1,y1,x,y) +#define cimg_for_outXZ(img,x0,z0,x1,z1,x,z) cimg_for_out2((img)._width,(img)._depth,x0,z0,x1,z1,x,z) +#define cimg_for_outXC(img,x0,c0,x1,c1,x,c) cimg_for_out2((img)._width,(img)._spectrum,x0,c0,x1,c1,x,c) +#define cimg_for_outYZ(img,y0,z0,y1,z1,y,z) cimg_for_out2((img)._height,(img)._depth,y0,z0,y1,z1,y,z) +#define cimg_for_outYC(img,y0,c0,y1,c1,y,c) cimg_for_out2((img)._height,(img)._spectrum,y0,c0,y1,c1,y,c) +#define cimg_for_outZC(img,z0,c0,z1,c1,z,c) cimg_for_out2((img)._depth,(img)._spectrum,z0,c0,z1,c1,z,c) +#define cimg_for_outXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) \ + cimg_for_out3((img)._width,(img)._height,(img)._depth,x0,y0,z0,x1,y1,z1,x,y,z) +#define cimg_for_outXYC(img,x0,y0,c0,x1,y1,c1,x,y,c) \ + cimg_for_out3((img)._width,(img)._height,(img)._spectrum,x0,y0,c0,x1,y1,c1,x,y,c) +#define cimg_for_outXZC(img,x0,z0,c0,x1,z1,c1,x,z,c) \ + cimg_for_out3((img)._width,(img)._depth,(img)._spectrum,x0,z0,c0,x1,z1,c1,x,z,c) +#define cimg_for_outYZC(img,y0,z0,c0,y1,z1,c1,y,z,c) \ + cimg_for_out3((img)._height,(img)._depth,(img)._spectrum,y0,z0,c0,y1,z1,c1,y,z,c) +#define cimg_for_outXYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_out4((img)._width,(img)._height,(img)._depth,(img)._spectrum,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) +#define cimg_for_borderX(img,x,n) cimg_for_outX(img,n,(img)._width - 1 - (n),x) +#define cimg_for_borderY(img,y,n) cimg_for_outY(img,n,(img)._height - 1 - (n),y) +#define cimg_for_borderZ(img,z,n) cimg_for_outZ(img,n,(img)._depth - 1 - (n),z) +#define cimg_for_borderC(img,c,n) cimg_for_outC(img,n,(img)._spectrum - 1 - (n),c) +#define cimg_for_borderXY(img,x,y,n) cimg_for_outXY(img,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),x,y) +#define cimg_for_borderXYZ(img,x,y,z,n) \ + cimg_for_outXYZ(img,n,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),(img)._depth - 1 - (n),x,y,z) +#define cimg_for_borderXYZC(img,x,y,z,c,n) \ + cimg_for_outXYZC(img,n,n,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n), \ + (img)._depth - 1 - (n),(img)._spectrum - 1 - (n),x,y,z,c) + +#define cimg_for_spiralXY(img,x,y) \ + for (int x = 0, y = 0, _n1##x = 1, _n1##y = (img).width()*(img).height(); _n1##y; \ + --_n1##y, _n1##x+=(_n1##x>>2) - ((!(_n1##x&3)?--y:((_n1##x&3)==1?(img)._width - 1 - ++x:\ + ((_n1##x&3)==2?(img)._height - 1 - ++y:--x))))?0:1) + +#define cimg_for_lineXY(x,y,x0,y0,x1,y1) \ + for (int x = (int)(x0), y = (int)(y0), _sx = 1, _sy = 1, _steep = 0, \ + _dx=(x1)>(x0)?(int)(x1) - (int)(x0):(_sx=-1,(int)(x0) - (int)(x1)), \ + _dy=(y1)>(y0)?(int)(y1) - (int)(y0):(_sy=-1,(int)(y0) - (int)(y1)), \ + _counter = _dx, \ + _err = _dx>_dy?(_dy>>1):((_steep=1),(_counter=_dy),(_dx>>1)); \ + _counter>=0; \ + --_counter, x+=_steep? \ + (y+=_sy,(_err-=_dx)<0?_err+=_dy,_sx:0): \ + (y+=(_err-=_dy)<0?_err+=_dx,_sy:0,_sx)) + +#define cimg_for2(bound,i) \ + for (int i = 0, _n1##i = 1>=(bound)?(int)(bound) - 1:1; \ + _n1##i<(int)(bound) || i==--_n1##i; \ + ++i, ++_n1##i) +#define cimg_for2X(img,x) cimg_for2((img)._width,x) +#define cimg_for2Y(img,y) cimg_for2((img)._height,y) +#define cimg_for2Z(img,z) cimg_for2((img)._depth,z) +#define cimg_for2C(img,c) cimg_for2((img)._spectrum,c) +#define cimg_for2XY(img,x,y) cimg_for2Y(img,y) cimg_for2X(img,x) +#define cimg_for2XZ(img,x,z) cimg_for2Z(img,z) cimg_for2X(img,x) +#define cimg_for2XC(img,x,c) cimg_for2C(img,c) cimg_for2X(img,x) +#define cimg_for2YZ(img,y,z) cimg_for2Z(img,z) cimg_for2Y(img,y) +#define cimg_for2YC(img,y,c) cimg_for2C(img,c) cimg_for2Y(img,y) +#define cimg_for2ZC(img,z,c) cimg_for2C(img,c) cimg_for2Z(img,z) +#define cimg_for2XYZ(img,x,y,z) cimg_for2Z(img,z) cimg_for2XY(img,x,y) +#define cimg_for2XZC(img,x,z,c) cimg_for2C(img,c) cimg_for2XZ(img,x,z) +#define cimg_for2YZC(img,y,z,c) cimg_for2C(img,c) cimg_for2YZ(img,y,z) +#define cimg_for2XYZC(img,x,y,z,c) cimg_for2C(img,c) cimg_for2XYZ(img,x,y,z) + +#define cimg_for_in2(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1; \ + i<=(int)(i1) && (_n1##i<(int)(bound) || i==--_n1##i); \ + ++i, ++_n1##i) +#define cimg_for_in2X(img,x0,x1,x) cimg_for_in2((img)._width,x0,x1,x) +#define cimg_for_in2Y(img,y0,y1,y) cimg_for_in2((img)._height,y0,y1,y) +#define cimg_for_in2Z(img,z0,z1,z) cimg_for_in2((img)._depth,z0,z1,z) +#define cimg_for_in2C(img,c0,c1,c) cimg_for_in2((img)._spectrum,c0,c1,c) +#define cimg_for_in2XY(img,x0,y0,x1,y1,x,y) cimg_for_in2Y(img,y0,y1,y) cimg_for_in2X(img,x0,x1,x) +#define cimg_for_in2XZ(img,x0,z0,x1,z1,x,z) cimg_for_in2Z(img,z0,z1,z) cimg_for_in2X(img,x0,x1,x) +#define cimg_for_in2XC(img,x0,c0,x1,c1,x,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2X(img,x0,x1,x) +#define cimg_for_in2YZ(img,y0,z0,y1,z1,y,z) cimg_for_in2Z(img,z0,z1,z) cimg_for_in2Y(img,y0,y1,y) +#define cimg_for_in2YC(img,y0,c0,y1,c1,y,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2Y(img,y0,y1,y) +#define cimg_for_in2ZC(img,z0,c0,z1,c1,z,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2Z(img,z0,z1,z) +#define cimg_for_in2XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in2Z(img,z0,z1,z) cimg_for_in2XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in2XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in2YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in2XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in2C(img,c0,c1,c) cimg_for_in2XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for3(bound,i) \ + for (int i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1; \ + _n1##i<(int)(bound) || i==--_n1##i; \ + _p1##i = i++, ++_n1##i) +#define cimg_for3X(img,x) cimg_for3((img)._width,x) +#define cimg_for3Y(img,y) cimg_for3((img)._height,y) +#define cimg_for3Z(img,z) cimg_for3((img)._depth,z) +#define cimg_for3C(img,c) cimg_for3((img)._spectrum,c) +#define cimg_for3XY(img,x,y) cimg_for3Y(img,y) cimg_for3X(img,x) +#define cimg_for3XZ(img,x,z) cimg_for3Z(img,z) cimg_for3X(img,x) +#define cimg_for3XC(img,x,c) cimg_for3C(img,c) cimg_for3X(img,x) +#define cimg_for3YZ(img,y,z) cimg_for3Z(img,z) cimg_for3Y(img,y) +#define cimg_for3YC(img,y,c) cimg_for3C(img,c) cimg_for3Y(img,y) +#define cimg_for3ZC(img,z,c) cimg_for3C(img,c) cimg_for3Z(img,z) +#define cimg_for3XYZ(img,x,y,z) cimg_for3Z(img,z) cimg_for3XY(img,x,y) +#define cimg_for3XZC(img,x,z,c) cimg_for3C(img,c) cimg_for3XZ(img,x,z) +#define cimg_for3YZC(img,y,z,c) cimg_for3C(img,c) cimg_for3YZ(img,y,z) +#define cimg_for3XYZC(img,x,y,z,c) cimg_for3C(img,c) cimg_for3XYZ(img,x,y,z) + +#define cimg_for_in3(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1; \ + i<=(int)(i1) && (_n1##i<(int)(bound) || i==--_n1##i); \ + _p1##i = i++, ++_n1##i) +#define cimg_for_in3X(img,x0,x1,x) cimg_for_in3((img)._width,x0,x1,x) +#define cimg_for_in3Y(img,y0,y1,y) cimg_for_in3((img)._height,y0,y1,y) +#define cimg_for_in3Z(img,z0,z1,z) cimg_for_in3((img)._depth,z0,z1,z) +#define cimg_for_in3C(img,c0,c1,c) cimg_for_in3((img)._spectrum,c0,c1,c) +#define cimg_for_in3XY(img,x0,y0,x1,y1,x,y) cimg_for_in3Y(img,y0,y1,y) cimg_for_in3X(img,x0,x1,x) +#define cimg_for_in3XZ(img,x0,z0,x1,z1,x,z) cimg_for_in3Z(img,z0,z1,z) cimg_for_in3X(img,x0,x1,x) +#define cimg_for_in3XC(img,x0,c0,x1,c1,x,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3X(img,x0,x1,x) +#define cimg_for_in3YZ(img,y0,z0,y1,z1,y,z) cimg_for_in3Z(img,z0,z1,z) cimg_for_in3Y(img,y0,y1,y) +#define cimg_for_in3YC(img,y0,c0,y1,c1,y,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3Y(img,y0,y1,y) +#define cimg_for_in3ZC(img,z0,c0,z1,c1,z,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3Z(img,z0,z1,z) +#define cimg_for_in3XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in3Z(img,z0,z1,z) cimg_for_in3XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in3XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in3YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in3XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in3C(img,c0,c1,c) cimg_for_in3XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for4(bound,i) \ + for (int i = 0, _p1##i = 0, _n1##i = 1>=(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(bound)?(int)(bound) - 1:2; \ + _n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i); \ + _p1##i = i++, ++_n1##i, ++_n2##i) +#define cimg_for4X(img,x) cimg_for4((img)._width,x) +#define cimg_for4Y(img,y) cimg_for4((img)._height,y) +#define cimg_for4Z(img,z) cimg_for4((img)._depth,z) +#define cimg_for4C(img,c) cimg_for4((img)._spectrum,c) +#define cimg_for4XY(img,x,y) cimg_for4Y(img,y) cimg_for4X(img,x) +#define cimg_for4XZ(img,x,z) cimg_for4Z(img,z) cimg_for4X(img,x) +#define cimg_for4XC(img,x,c) cimg_for4C(img,c) cimg_for4X(img,x) +#define cimg_for4YZ(img,y,z) cimg_for4Z(img,z) cimg_for4Y(img,y) +#define cimg_for4YC(img,y,c) cimg_for4C(img,c) cimg_for4Y(img,y) +#define cimg_for4ZC(img,z,c) cimg_for4C(img,c) cimg_for4Z(img,z) +#define cimg_for4XYZ(img,x,y,z) cimg_for4Z(img,z) cimg_for4XY(img,x,y) +#define cimg_for4XZC(img,x,z,c) cimg_for4C(img,c) cimg_for4XZ(img,x,z) +#define cimg_for4YZC(img,y,z,c) cimg_for4C(img,c) cimg_for4YZ(img,y,z) +#define cimg_for4XYZC(img,x,y,z,c) cimg_for4C(img,c) cimg_for4XYZ(img,x,y,z) + +#define cimg_for_in4(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2; \ + i<=(int)(i1) && (_n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i)); \ + _p1##i = i++, ++_n1##i, ++_n2##i) +#define cimg_for_in4X(img,x0,x1,x) cimg_for_in4((img)._width,x0,x1,x) +#define cimg_for_in4Y(img,y0,y1,y) cimg_for_in4((img)._height,y0,y1,y) +#define cimg_for_in4Z(img,z0,z1,z) cimg_for_in4((img)._depth,z0,z1,z) +#define cimg_for_in4C(img,c0,c1,c) cimg_for_in4((img)._spectrum,c0,c1,c) +#define cimg_for_in4XY(img,x0,y0,x1,y1,x,y) cimg_for_in4Y(img,y0,y1,y) cimg_for_in4X(img,x0,x1,x) +#define cimg_for_in4XZ(img,x0,z0,x1,z1,x,z) cimg_for_in4Z(img,z0,z1,z) cimg_for_in4X(img,x0,x1,x) +#define cimg_for_in4XC(img,x0,c0,x1,c1,x,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4X(img,x0,x1,x) +#define cimg_for_in4YZ(img,y0,z0,y1,z1,y,z) cimg_for_in4Z(img,z0,z1,z) cimg_for_in4Y(img,y0,y1,y) +#define cimg_for_in4YC(img,y0,c0,y1,c1,y,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4Y(img,y0,y1,y) +#define cimg_for_in4ZC(img,z0,c0,z1,c1,z,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4Z(img,z0,z1,z) +#define cimg_for_in4XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in4Z(img,z0,z1,z) cimg_for_in4XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in4XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in4YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in4XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in4C(img,c0,c1,c) cimg_for_in4XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for5(bound,i) \ + for (int i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(bound)?(int)(bound) - 1:2; \ + _n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i); \ + _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i) +#define cimg_for5X(img,x) cimg_for5((img)._width,x) +#define cimg_for5Y(img,y) cimg_for5((img)._height,y) +#define cimg_for5Z(img,z) cimg_for5((img)._depth,z) +#define cimg_for5C(img,c) cimg_for5((img)._spectrum,c) +#define cimg_for5XY(img,x,y) cimg_for5Y(img,y) cimg_for5X(img,x) +#define cimg_for5XZ(img,x,z) cimg_for5Z(img,z) cimg_for5X(img,x) +#define cimg_for5XC(img,x,c) cimg_for5C(img,c) cimg_for5X(img,x) +#define cimg_for5YZ(img,y,z) cimg_for5Z(img,z) cimg_for5Y(img,y) +#define cimg_for5YC(img,y,c) cimg_for5C(img,c) cimg_for5Y(img,y) +#define cimg_for5ZC(img,z,c) cimg_for5C(img,c) cimg_for5Z(img,z) +#define cimg_for5XYZ(img,x,y,z) cimg_for5Z(img,z) cimg_for5XY(img,x,y) +#define cimg_for5XZC(img,x,z,c) cimg_for5C(img,c) cimg_for5XZ(img,x,z) +#define cimg_for5YZC(img,y,z,c) cimg_for5C(img,c) cimg_for5YZ(img,y,z) +#define cimg_for5XYZC(img,x,y,z,c) cimg_for5C(img,c) cimg_for5XYZ(img,x,y,z) + +#define cimg_for_in5(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2; \ + i<=(int)(i1) && (_n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i)); \ + _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i) +#define cimg_for_in5X(img,x0,x1,x) cimg_for_in5((img)._width,x0,x1,x) +#define cimg_for_in5Y(img,y0,y1,y) cimg_for_in5((img)._height,y0,y1,y) +#define cimg_for_in5Z(img,z0,z1,z) cimg_for_in5((img)._depth,z0,z1,z) +#define cimg_for_in5C(img,c0,c1,c) cimg_for_in5((img)._spectrum,c0,c1,c) +#define cimg_for_in5XY(img,x0,y0,x1,y1,x,y) cimg_for_in5Y(img,y0,y1,y) cimg_for_in5X(img,x0,x1,x) +#define cimg_for_in5XZ(img,x0,z0,x1,z1,x,z) cimg_for_in5Z(img,z0,z1,z) cimg_for_in5X(img,x0,x1,x) +#define cimg_for_in5XC(img,x0,c0,x1,c1,x,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5X(img,x0,x1,x) +#define cimg_for_in5YZ(img,y0,z0,y1,z1,y,z) cimg_for_in5Z(img,z0,z1,z) cimg_for_in5Y(img,y0,y1,y) +#define cimg_for_in5YC(img,y0,c0,y1,c1,y,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5Y(img,y0,y1,y) +#define cimg_for_in5ZC(img,z0,c0,z1,c1,z,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5Z(img,z0,z1,z) +#define cimg_for_in5XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in5Z(img,z0,z1,z) cimg_for_in5XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in5XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in5YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in5XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in5C(img,c0,c1,c) cimg_for_in5XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for6(bound,i) \ + for (int i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(bound)?(int)(bound) - 1:3; \ + _n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i); \ + _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i) +#define cimg_for6X(img,x) cimg_for6((img)._width,x) +#define cimg_for6Y(img,y) cimg_for6((img)._height,y) +#define cimg_for6Z(img,z) cimg_for6((img)._depth,z) +#define cimg_for6C(img,c) cimg_for6((img)._spectrum,c) +#define cimg_for6XY(img,x,y) cimg_for6Y(img,y) cimg_for6X(img,x) +#define cimg_for6XZ(img,x,z) cimg_for6Z(img,z) cimg_for6X(img,x) +#define cimg_for6XC(img,x,c) cimg_for6C(img,c) cimg_for6X(img,x) +#define cimg_for6YZ(img,y,z) cimg_for6Z(img,z) cimg_for6Y(img,y) +#define cimg_for6YC(img,y,c) cimg_for6C(img,c) cimg_for6Y(img,y) +#define cimg_for6ZC(img,z,c) cimg_for6C(img,c) cimg_for6Z(img,z) +#define cimg_for6XYZ(img,x,y,z) cimg_for6Z(img,z) cimg_for6XY(img,x,y) +#define cimg_for6XZC(img,x,z,c) cimg_for6C(img,c) cimg_for6XZ(img,x,z) +#define cimg_for6YZC(img,y,z,c) cimg_for6C(img,c) cimg_for6YZ(img,y,z) +#define cimg_for6XYZC(img,x,y,z,c) cimg_for6C(img,c) cimg_for6XYZ(img,x,y,z) + +#define cimg_for_in6(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3; \ + i<=(int)(i1) && \ + (_n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i)); \ + _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i) +#define cimg_for_in6X(img,x0,x1,x) cimg_for_in6((img)._width,x0,x1,x) +#define cimg_for_in6Y(img,y0,y1,y) cimg_for_in6((img)._height,y0,y1,y) +#define cimg_for_in6Z(img,z0,z1,z) cimg_for_in6((img)._depth,z0,z1,z) +#define cimg_for_in6C(img,c0,c1,c) cimg_for_in6((img)._spectrum,c0,c1,c) +#define cimg_for_in6XY(img,x0,y0,x1,y1,x,y) cimg_for_in6Y(img,y0,y1,y) cimg_for_in6X(img,x0,x1,x) +#define cimg_for_in6XZ(img,x0,z0,x1,z1,x,z) cimg_for_in6Z(img,z0,z1,z) cimg_for_in6X(img,x0,x1,x) +#define cimg_for_in6XC(img,x0,c0,x1,c1,x,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6X(img,x0,x1,x) +#define cimg_for_in6YZ(img,y0,z0,y1,z1,y,z) cimg_for_in6Z(img,z0,z1,z) cimg_for_in6Y(img,y0,y1,y) +#define cimg_for_in6YC(img,y0,c0,y1,c1,y,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6Y(img,y0,y1,y) +#define cimg_for_in6ZC(img,z0,c0,z1,c1,z,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6Z(img,z0,z1,z) +#define cimg_for_in6XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in6Z(img,z0,z1,z) cimg_for_in6XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in6XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in6YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in6XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in6C(img,c0,c1,c) cimg_for_in6XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for7(bound,i) \ + for (int i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(bound)?(int)(bound) - 1:3; \ + _n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i); \ + _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i) +#define cimg_for7X(img,x) cimg_for7((img)._width,x) +#define cimg_for7Y(img,y) cimg_for7((img)._height,y) +#define cimg_for7Z(img,z) cimg_for7((img)._depth,z) +#define cimg_for7C(img,c) cimg_for7((img)._spectrum,c) +#define cimg_for7XY(img,x,y) cimg_for7Y(img,y) cimg_for7X(img,x) +#define cimg_for7XZ(img,x,z) cimg_for7Z(img,z) cimg_for7X(img,x) +#define cimg_for7XC(img,x,c) cimg_for7C(img,c) cimg_for7X(img,x) +#define cimg_for7YZ(img,y,z) cimg_for7Z(img,z) cimg_for7Y(img,y) +#define cimg_for7YC(img,y,c) cimg_for7C(img,c) cimg_for7Y(img,y) +#define cimg_for7ZC(img,z,c) cimg_for7C(img,c) cimg_for7Z(img,z) +#define cimg_for7XYZ(img,x,y,z) cimg_for7Z(img,z) cimg_for7XY(img,x,y) +#define cimg_for7XZC(img,x,z,c) cimg_for7C(img,c) cimg_for7XZ(img,x,z) +#define cimg_for7YZC(img,y,z,c) cimg_for7C(img,c) cimg_for7YZ(img,y,z) +#define cimg_for7XYZC(img,x,y,z,c) cimg_for7C(img,c) cimg_for7XYZ(img,x,y,z) + +#define cimg_for_in7(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3; \ + i<=(int)(i1) && \ + (_n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i)); \ + _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i) +#define cimg_for_in7X(img,x0,x1,x) cimg_for_in7((img)._width,x0,x1,x) +#define cimg_for_in7Y(img,y0,y1,y) cimg_for_in7((img)._height,y0,y1,y) +#define cimg_for_in7Z(img,z0,z1,z) cimg_for_in7((img)._depth,z0,z1,z) +#define cimg_for_in7C(img,c0,c1,c) cimg_for_in7((img)._spectrum,c0,c1,c) +#define cimg_for_in7XY(img,x0,y0,x1,y1,x,y) cimg_for_in7Y(img,y0,y1,y) cimg_for_in7X(img,x0,x1,x) +#define cimg_for_in7XZ(img,x0,z0,x1,z1,x,z) cimg_for_in7Z(img,z0,z1,z) cimg_for_in7X(img,x0,x1,x) +#define cimg_for_in7XC(img,x0,c0,x1,c1,x,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7X(img,x0,x1,x) +#define cimg_for_in7YZ(img,y0,z0,y1,z1,y,z) cimg_for_in7Z(img,z0,z1,z) cimg_for_in7Y(img,y0,y1,y) +#define cimg_for_in7YC(img,y0,c0,y1,c1,y,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7Y(img,y0,y1,y) +#define cimg_for_in7ZC(img,z0,c0,z1,c1,z,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7Z(img,z0,z1,z) +#define cimg_for_in7XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in7Z(img,z0,z1,z) cimg_for_in7XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in7XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in7YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in7XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in7C(img,c0,c1,c) cimg_for_in7XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for8(bound,i) \ + for (int i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(bound)?(int)(bound) - 1:4; \ + _n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n4##i = _n3##i = _n2##i = --_n1##i); \ + _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i) +#define cimg_for8X(img,x) cimg_for8((img)._width,x) +#define cimg_for8Y(img,y) cimg_for8((img)._height,y) +#define cimg_for8Z(img,z) cimg_for8((img)._depth,z) +#define cimg_for8C(img,c) cimg_for8((img)._spectrum,c) +#define cimg_for8XY(img,x,y) cimg_for8Y(img,y) cimg_for8X(img,x) +#define cimg_for8XZ(img,x,z) cimg_for8Z(img,z) cimg_for8X(img,x) +#define cimg_for8XC(img,x,c) cimg_for8C(img,c) cimg_for8X(img,x) +#define cimg_for8YZ(img,y,z) cimg_for8Z(img,z) cimg_for8Y(img,y) +#define cimg_for8YC(img,y,c) cimg_for8C(img,c) cimg_for8Y(img,y) +#define cimg_for8ZC(img,z,c) cimg_for8C(img,c) cimg_for8Z(img,z) +#define cimg_for8XYZ(img,x,y,z) cimg_for8Z(img,z) cimg_for8XY(img,x,y) +#define cimg_for8XZC(img,x,z,c) cimg_for8C(img,c) cimg_for8XZ(img,x,z) +#define cimg_for8YZC(img,y,z,c) cimg_for8C(img,c) cimg_for8YZ(img,y,z) +#define cimg_for8XYZC(img,x,y,z,c) cimg_for8C(img,c) cimg_for8XYZ(img,x,y,z) + +#define cimg_for_in8(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4; \ + i<=(int)(i1) && (_n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i) +#define cimg_for_in8X(img,x0,x1,x) cimg_for_in8((img)._width,x0,x1,x) +#define cimg_for_in8Y(img,y0,y1,y) cimg_for_in8((img)._height,y0,y1,y) +#define cimg_for_in8Z(img,z0,z1,z) cimg_for_in8((img)._depth,z0,z1,z) +#define cimg_for_in8C(img,c0,c1,c) cimg_for_in8((img)._spectrum,c0,c1,c) +#define cimg_for_in8XY(img,x0,y0,x1,y1,x,y) cimg_for_in8Y(img,y0,y1,y) cimg_for_in8X(img,x0,x1,x) +#define cimg_for_in8XZ(img,x0,z0,x1,z1,x,z) cimg_for_in8Z(img,z0,z1,z) cimg_for_in8X(img,x0,x1,x) +#define cimg_for_in8XC(img,x0,c0,x1,c1,x,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8X(img,x0,x1,x) +#define cimg_for_in8YZ(img,y0,z0,y1,z1,y,z) cimg_for_in8Z(img,z0,z1,z) cimg_for_in8Y(img,y0,y1,y) +#define cimg_for_in8YC(img,y0,c0,y1,c1,y,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8Y(img,y0,y1,y) +#define cimg_for_in8ZC(img,z0,c0,z1,c1,z,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8Z(img,z0,z1,z) +#define cimg_for_in8XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in8Z(img,z0,z1,z) cimg_for_in8XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in8XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in8YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in8XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in8C(img,c0,c1,c) cimg_for_in8XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for9(bound,i) \ + for (int i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4; \ + _n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n4##i = _n3##i = _n2##i = --_n1##i); \ + _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i) +#define cimg_for9X(img,x) cimg_for9((img)._width,x) +#define cimg_for9Y(img,y) cimg_for9((img)._height,y) +#define cimg_for9Z(img,z) cimg_for9((img)._depth,z) +#define cimg_for9C(img,c) cimg_for9((img)._spectrum,c) +#define cimg_for9XY(img,x,y) cimg_for9Y(img,y) cimg_for9X(img,x) +#define cimg_for9XZ(img,x,z) cimg_for9Z(img,z) cimg_for9X(img,x) +#define cimg_for9XC(img,x,c) cimg_for9C(img,c) cimg_for9X(img,x) +#define cimg_for9YZ(img,y,z) cimg_for9Z(img,z) cimg_for9Y(img,y) +#define cimg_for9YC(img,y,c) cimg_for9C(img,c) cimg_for9Y(img,y) +#define cimg_for9ZC(img,z,c) cimg_for9C(img,c) cimg_for9Z(img,z) +#define cimg_for9XYZ(img,x,y,z) cimg_for9Z(img,z) cimg_for9XY(img,x,y) +#define cimg_for9XZC(img,x,z,c) cimg_for9C(img,c) cimg_for9XZ(img,x,z) +#define cimg_for9YZC(img,y,z,c) cimg_for9C(img,c) cimg_for9YZ(img,y,z) +#define cimg_for9XYZC(img,x,y,z,c) cimg_for9C(img,c) cimg_for9XYZ(img,x,y,z) + +#define cimg_for_in9(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4; \ + i<=(int)(i1) && (_n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i) +#define cimg_for_in9X(img,x0,x1,x) cimg_for_in9((img)._width,x0,x1,x) +#define cimg_for_in9Y(img,y0,y1,y) cimg_for_in9((img)._height,y0,y1,y) +#define cimg_for_in9Z(img,z0,z1,z) cimg_for_in9((img)._depth,z0,z1,z) +#define cimg_for_in9C(img,c0,c1,c) cimg_for_in9((img)._spectrum,c0,c1,c) +#define cimg_for_in9XY(img,x0,y0,x1,y1,x,y) cimg_for_in9Y(img,y0,y1,y) cimg_for_in9X(img,x0,x1,x) +#define cimg_for_in9XZ(img,x0,z0,x1,z1,x,z) cimg_for_in9Z(img,z0,z1,z) cimg_for_in9X(img,x0,x1,x) +#define cimg_for_in9XC(img,x0,c0,x1,c1,x,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9X(img,x0,x1,x) +#define cimg_for_in9YZ(img,y0,z0,y1,z1,y,z) cimg_for_in9Z(img,z0,z1,z) cimg_for_in9Y(img,y0,y1,y) +#define cimg_for_in9YC(img,y0,c0,y1,c1,y,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9Y(img,y0,y1,y) +#define cimg_for_in9ZC(img,z0,c0,z1,c1,z,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9Z(img,z0,z1,z) +#define cimg_for_in9XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in9Z(img,z0,z1,z) cimg_for_in9XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in9XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in9YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in9XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in9C(img,c0,c1,c) cimg_for_in9XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for2x2(img,x,y,z,c,I,T) \ + cimg_for2((img)._height,y) for (int x = 0, \ + _n1##x = (int)( \ + (I[0] = (T)(img)(0,y,z,c)), \ + (I[2] = (T)(img)(0,_n1##y,z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[1] = (T)(img)(_n1##x,y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x; \ + I[0] = I[1], \ + I[2] = I[3], \ + ++x, ++_n1##x) + +#define cimg_for_in2x2(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in2((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _n1##x = (int)( \ + (I[0] = (T)(img)(x,y,z,c)), \ + (I[2] = (T)(img)(x,_n1##y,z,c)), \ + x + 1>=(int)(img)._width?(img).width() - 1:x + 1); \ + x<=(int)(x1) && ((_n1##x<(img).width() && ( \ + (I[1] = (T)(img)(_n1##x,y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x); \ + I[0] = I[1], \ + I[2] = I[3], \ + ++x, ++_n1##x) + +#define cimg_for3x3(img,x,y,z,c,I,T) \ + cimg_for3((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = (int)( \ + (I[0] = I[1] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[3] = I[4] = (T)(img)(0,y,z,c)), \ + (I[6] = I[7] = (T)(img)(0,_n1##y,z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x; \ + I[0] = I[1], I[1] = I[2], \ + I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], \ + _p1##x = x++, ++_n1##x) + +#define cimg_for_in3x3(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in3((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = (int)( \ + (I[0] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[3] = (T)(img)(_p1##x,y,z,c)), \ + (I[6] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[1] = (T)(img)(x,_p1##y,z,c)), \ + (I[4] = (T)(img)(x,y,z,c)), \ + (I[7] = (T)(img)(x,_n1##y,z,c)), \ + x + 1>=(int)(img)._width?(img).width() - 1:x + 1); \ + x<=(int)(x1) && ((_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x); \ + I[0] = I[1], I[1] = I[2], \ + I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], \ + _p1##x = x++, ++_n1##x) + +#define cimg_for4x4(img,x,y,z,c,I,T) \ + cimg_for4((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = 1>=(img)._width?(img).width() - 1:1, \ + _n2##x = (int)( \ + (I[0] = I[1] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[4] = I[5] = (T)(img)(0,y,z,c)), \ + (I[8] = I[9] = (T)(img)(0,_n1##y,z,c)), \ + (I[12] = I[13] = (T)(img)(0,_n2##y,z,c)), \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[6] = (T)(img)(_n1##x,y,z,c)), \ + (I[10] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_n2##y,z,c)), \ + 2>=(img)._width?(img).width() - 1:2); \ + (_n2##x<(img).width() && ( \ + (I[3] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[7] = (T)(img)(_n2##x,y,z,c)), \ + (I[11] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], \ + I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_for_in4x4(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in4((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(int)(img)._width?(img).width() - 1:x + 1, \ + _n2##x = (int)( \ + (I[0] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[4] = (T)(img)(_p1##x,y,z,c)), \ + (I[8] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[12] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[1] = (T)(img)(x,_p1##y,z,c)), \ + (I[5] = (T)(img)(x,y,z,c)), \ + (I[9] = (T)(img)(x,_n1##y,z,c)), \ + (I[13] = (T)(img)(x,_n2##y,z,c)), \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[6] = (T)(img)(_n1##x,y,z,c)), \ + (I[10] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_n2##y,z,c)), \ + x + 2>=(int)(img)._width?(img).width() - 1:x + 2); \ + x<=(int)(x1) && ((_n2##x<(img).width() && ( \ + (I[3] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[7] = (T)(img)(_n2##x,y,z,c)), \ + (I[11] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], \ + I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_for5x5(img,x,y,z,c,I,T) \ + cimg_for5((img)._height,y) for (int x = 0, \ + _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=(img)._width?(img).width() - 1:1, \ + _n2##x = (int)( \ + (I[0] = I[1] = I[2] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[5] = I[6] = I[7] = (T)(img)(0,_p1##y,z,c)), \ + (I[10] = I[11] = I[12] = (T)(img)(0,y,z,c)), \ + (I[15] = I[16] = I[17] = (T)(img)(0,_n1##y,z,c)), \ + (I[20] = I[21] = I[22] = (T)(img)(0,_n2##y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[13] = (T)(img)(_n1##x,y,z,c)), \ + (I[18] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[23] = (T)(img)(_n1##x,_n2##y,z,c)), \ + 2>=(img)._width?(img).width() - 1:2); \ + (_n2##x<(img).width() && ( \ + (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[9] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[14] = (T)(img)(_n2##x,y,z,c)), \ + (I[19] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[24] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], \ + I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], \ + I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], \ + I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_for_in5x5(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in5((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(int)(img)._width?(img).width() - 1:x + 1, \ + _n2##x = (int)( \ + (I[0] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[5] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[10] = (T)(img)(_p2##x,y,z,c)), \ + (I[15] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[20] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[1] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[6] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[11] = (T)(img)(_p1##x,y,z,c)), \ + (I[16] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[21] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[2] = (T)(img)(x,_p2##y,z,c)), \ + (I[7] = (T)(img)(x,_p1##y,z,c)), \ + (I[12] = (T)(img)(x,y,z,c)), \ + (I[17] = (T)(img)(x,_n1##y,z,c)), \ + (I[22] = (T)(img)(x,_n2##y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[13] = (T)(img)(_n1##x,y,z,c)), \ + (I[18] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[23] = (T)(img)(_n1##x,_n2##y,z,c)), \ + x + 2>=(int)(img)._width?(img).width() - 1:x + 2); \ + x<=(int)(x1) && ((_n2##x<(img).width() && ( \ + (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[9] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[14] = (T)(img)(_n2##x,y,z,c)), \ + (I[19] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[24] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], \ + I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], \ + I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], \ + I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_for6x6(img,x,y,z,c,I,T) \ + cimg_for6((img)._height,y) for (int x = 0, \ + _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=(img)._width?(img).width() - 1:1, \ + _n2##x = 2>=(img)._width?(img).width() - 1:2, \ + _n3##x = (int)( \ + (I[0] = I[1] = I[2] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[6] = I[7] = I[8] = (T)(img)(0,_p1##y,z,c)), \ + (I[12] = I[13] = I[14] = (T)(img)(0,y,z,c)), \ + (I[18] = I[19] = I[20] = (T)(img)(0,_n1##y,z,c)), \ + (I[24] = I[25] = I[26] = (T)(img)(0,_n2##y,z,c)), \ + (I[30] = I[31] = I[32] = (T)(img)(0,_n3##y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[9] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[15] = (T)(img)(_n1##x,y,z,c)), \ + (I[21] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[27] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[33] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[10] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[16] = (T)(img)(_n2##x,y,z,c)), \ + (I[22] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[28] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[34] = (T)(img)(_n2##x,_n3##y,z,c)), \ + 3>=(img)._width?(img).width() - 1:3); \ + (_n3##x<(img).width() && ( \ + (I[5] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[11] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[17] = (T)(img)(_n3##x,y,z,c)), \ + (I[23] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[29] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[35] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3## x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_for_in6x6(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in6((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)x0, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(int)(img)._width?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(int)(img)._width?(img).width() - 1:x + 2, \ + _n3##x = (int)( \ + (I[0] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[6] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[12] = (T)(img)(_p2##x,y,z,c)), \ + (I[18] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[24] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[30] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[1] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[7] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[13] = (T)(img)(_p1##x,y,z,c)), \ + (I[19] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[25] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[31] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[2] = (T)(img)(x,_p2##y,z,c)), \ + (I[8] = (T)(img)(x,_p1##y,z,c)), \ + (I[14] = (T)(img)(x,y,z,c)), \ + (I[20] = (T)(img)(x,_n1##y,z,c)), \ + (I[26] = (T)(img)(x,_n2##y,z,c)), \ + (I[32] = (T)(img)(x,_n3##y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[9] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[15] = (T)(img)(_n1##x,y,z,c)), \ + (I[21] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[27] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[33] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[10] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[16] = (T)(img)(_n2##x,y,z,c)), \ + (I[22] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[28] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[34] = (T)(img)(_n2##x,_n3##y,z,c)), \ + x + 3>=(int)(img)._width?(img).width() - 1:x + 3); \ + x<=(int)(x1) && ((_n3##x<(img).width() && ( \ + (I[5] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[11] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[17] = (T)(img)(_n3##x,y,z,c)), \ + (I[23] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[29] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[35] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3## x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_for7x7(img,x,y,z,c,I,T) \ + cimg_for7((img)._height,y) for (int x = 0, \ + _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=(img)._width?(img).width() - 1:1, \ + _n2##x = 2>=(img)._width?(img).width() - 1:2, \ + _n3##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[7] = I[8] = I[9] = I[10] = (T)(img)(0,_p2##y,z,c)), \ + (I[14] = I[15] = I[16] = I[17] = (T)(img)(0,_p1##y,z,c)), \ + (I[21] = I[22] = I[23] = I[24] = (T)(img)(0,y,z,c)), \ + (I[28] = I[29] = I[30] = I[31] = (T)(img)(0,_n1##y,z,c)), \ + (I[35] = I[36] = I[37] = I[38] = (T)(img)(0,_n2##y,z,c)), \ + (I[42] = I[43] = I[44] = I[45] = (T)(img)(0,_n3##y,z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[11] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[18] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[25] = (T)(img)(_n1##x,y,z,c)), \ + (I[32] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[39] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[46] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[12] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[19] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[26] = (T)(img)(_n2##x,y,z,c)), \ + (I[33] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[40] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[47] = (T)(img)(_n2##x,_n3##y,z,c)), \ + 3>=(img)._width?(img).width() - 1:3); \ + (_n3##x<(img).width() && ( \ + (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[13] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[20] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[27] = (T)(img)(_n3##x,y,z,c)), \ + (I[34] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[41] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[48] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], \ + I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], \ + I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], \ + I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], \ + I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_for_in7x7(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in7((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(int)(img)._width?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(int)(img)._width?(img).width() - 1:x + 2, \ + _n3##x = (int)( \ + (I[0] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[7] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[14] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[21] = (T)(img)(_p3##x,y,z,c)), \ + (I[28] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[35] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[42] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[1] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[8] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[15] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[22] = (T)(img)(_p2##x,y,z,c)), \ + (I[29] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[36] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[43] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[2] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[9] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[16] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[23] = (T)(img)(_p1##x,y,z,c)), \ + (I[30] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[37] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[44] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[3] = (T)(img)(x,_p3##y,z,c)), \ + (I[10] = (T)(img)(x,_p2##y,z,c)), \ + (I[17] = (T)(img)(x,_p1##y,z,c)), \ + (I[24] = (T)(img)(x,y,z,c)), \ + (I[31] = (T)(img)(x,_n1##y,z,c)), \ + (I[38] = (T)(img)(x,_n2##y,z,c)), \ + (I[45] = (T)(img)(x,_n3##y,z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[11] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[18] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[25] = (T)(img)(_n1##x,y,z,c)), \ + (I[32] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[39] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[46] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[12] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[19] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[26] = (T)(img)(_n2##x,y,z,c)), \ + (I[33] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[40] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[47] = (T)(img)(_n2##x,_n3##y,z,c)), \ + x + 3>=(int)(img)._width?(img).width() - 1:x + 3); \ + x<=(int)(x1) && ((_n3##x<(img).width() && ( \ + (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[13] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[20] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[27] = (T)(img)(_n3##x,y,z,c)), \ + (I[34] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[41] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[48] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], \ + I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], \ + I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], \ + I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], \ + I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_for8x8(img,x,y,z,c,I,T) \ + cimg_for8((img)._height,y) for (int x = 0, \ + _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[8] = I[9] = I[10] = I[11] = (T)(img)(0,_p2##y,z,c)), \ + (I[16] = I[17] = I[18] = I[19] = (T)(img)(0,_p1##y,z,c)), \ + (I[24] = I[25] = I[26] = I[27] = (T)(img)(0,y,z,c)), \ + (I[32] = I[33] = I[34] = I[35] = (T)(img)(0,_n1##y,z,c)), \ + (I[40] = I[41] = I[42] = I[43] = (T)(img)(0,_n2##y,z,c)), \ + (I[48] = I[49] = I[50] = I[51] = (T)(img)(0,_n3##y,z,c)), \ + (I[56] = I[57] = I[58] = I[59] = (T)(img)(0,_n4##y,z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[12] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[20] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[28] = (T)(img)(_n1##x,y,z,c)), \ + (I[36] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[44] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[52] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[60] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[13] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[21] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[29] = (T)(img)(_n2##x,y,z,c)), \ + (I[37] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[45] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[53] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[61] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[14] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[22] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[30] = (T)(img)(_n3##x,y,z,c)), \ + (I[38] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[46] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[54] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[62] = (T)(img)(_n3##x,_n4##y,z,c)), \ + 4>=((img)._width)?(img).width() - 1:4); \ + (_n4##x<(img).width() && ( \ + (I[7] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[15] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[23] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[31] = (T)(img)(_n4##x,y,z,c)), \ + (I[39] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[47] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[55] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[63] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \ + _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x) + +#define cimg_for_in8x8(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in8((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = (int)( \ + (I[0] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[8] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[16] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[24] = (T)(img)(_p3##x,y,z,c)), \ + (I[32] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[40] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[48] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[56] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[1] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[9] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[17] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[25] = (T)(img)(_p2##x,y,z,c)), \ + (I[33] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[41] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[49] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[57] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[2] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[10] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[18] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[26] = (T)(img)(_p1##x,y,z,c)), \ + (I[34] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[42] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[50] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[58] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[3] = (T)(img)(x,_p3##y,z,c)), \ + (I[11] = (T)(img)(x,_p2##y,z,c)), \ + (I[19] = (T)(img)(x,_p1##y,z,c)), \ + (I[27] = (T)(img)(x,y,z,c)), \ + (I[35] = (T)(img)(x,_n1##y,z,c)), \ + (I[43] = (T)(img)(x,_n2##y,z,c)), \ + (I[51] = (T)(img)(x,_n3##y,z,c)), \ + (I[59] = (T)(img)(x,_n4##y,z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[12] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[20] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[28] = (T)(img)(_n1##x,y,z,c)), \ + (I[36] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[44] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[52] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[60] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[13] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[21] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[29] = (T)(img)(_n2##x,y,z,c)), \ + (I[37] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[45] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[53] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[61] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[14] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[22] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[30] = (T)(img)(_n3##x,y,z,c)), \ + (I[38] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[46] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[54] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[62] = (T)(img)(_n3##x,_n4##y,z,c)), \ + x + 4>=(img).width()?(img).width() - 1:x + 4); \ + x<=(int)(x1) && ((_n4##x<(img).width() && ( \ + (I[7] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[15] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[23] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[31] = (T)(img)(_n4##x,y,z,c)), \ + (I[39] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[47] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[55] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[63] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \ + _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x) + +#define cimg_for9x9(img,x,y,z,c,I,T) \ + cimg_for9((img)._height,y) for (int x = 0, \ + _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[9] = I[10] = I[11] = I[12] = I[13] = (T)(img)(0,_p3##y,z,c)), \ + (I[18] = I[19] = I[20] = I[21] = I[22] = (T)(img)(0,_p2##y,z,c)), \ + (I[27] = I[28] = I[29] = I[30] = I[31] = (T)(img)(0,_p1##y,z,c)), \ + (I[36] = I[37] = I[38] = I[39] = I[40] = (T)(img)(0,y,z,c)), \ + (I[45] = I[46] = I[47] = I[48] = I[49] = (T)(img)(0,_n1##y,z,c)), \ + (I[54] = I[55] = I[56] = I[57] = I[58] = (T)(img)(0,_n2##y,z,c)), \ + (I[63] = I[64] = I[65] = I[66] = I[67] = (T)(img)(0,_n3##y,z,c)), \ + (I[72] = I[73] = I[74] = I[75] = I[76] = (T)(img)(0,_n4##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[23] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[32] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[41] = (T)(img)(_n1##x,y,z,c)), \ + (I[50] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[59] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[68] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[77] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[6] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[24] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[33] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[42] = (T)(img)(_n2##x,y,z,c)), \ + (I[51] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[60] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[69] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[78] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[7] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[16] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[25] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[34] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[43] = (T)(img)(_n3##x,y,z,c)), \ + (I[52] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[61] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[70] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[79] = (T)(img)(_n3##x,_n4##y,z,c)), \ + 4>=((img)._width)?(img).width() - 1:4); \ + (_n4##x<(img).width() && ( \ + (I[8] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[17] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[26] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[35] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[44] = (T)(img)(_n4##x,y,z,c)), \ + (I[53] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[62] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[71] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[80] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \ + _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], \ + I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], \ + I[16] = I[17], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + I[24] = I[25], I[25] = I[26], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[45] = I[46], I[46] = I[47], I[47] = I[48], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[54] = I[55], I[55] = I[56], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[63] = I[64], \ + I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[79] = I[80], \ + _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x) + +#define cimg_for_in9x9(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in9((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = (int)( \ + (I[0] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[9] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[18] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[27] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[36] = (T)(img)(_p4##x,y,z,c)), \ + (I[45] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[54] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[63] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[72] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[1] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[10] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[19] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[28] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[37] = (T)(img)(_p3##x,y,z,c)), \ + (I[46] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[55] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[64] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[73] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[2] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[11] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[20] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[29] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[38] = (T)(img)(_p2##x,y,z,c)), \ + (I[47] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[56] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[65] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[74] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[3] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[12] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[21] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[30] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[39] = (T)(img)(_p1##x,y,z,c)), \ + (I[48] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[57] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[66] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[75] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[4] = (T)(img)(x,_p4##y,z,c)), \ + (I[13] = (T)(img)(x,_p3##y,z,c)), \ + (I[22] = (T)(img)(x,_p2##y,z,c)), \ + (I[31] = (T)(img)(x,_p1##y,z,c)), \ + (I[40] = (T)(img)(x,y,z,c)), \ + (I[49] = (T)(img)(x,_n1##y,z,c)), \ + (I[58] = (T)(img)(x,_n2##y,z,c)), \ + (I[67] = (T)(img)(x,_n3##y,z,c)), \ + (I[76] = (T)(img)(x,_n4##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[23] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[32] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[41] = (T)(img)(_n1##x,y,z,c)), \ + (I[50] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[59] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[68] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[77] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[6] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[24] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[33] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[42] = (T)(img)(_n2##x,y,z,c)), \ + (I[51] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[60] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[69] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[78] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[7] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[16] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[25] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[34] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[43] = (T)(img)(_n3##x,y,z,c)), \ + (I[52] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[61] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[70] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[79] = (T)(img)(_n3##x,_n4##y,z,c)), \ + x + 4>=(img).width()?(img).width() - 1:x + 4); \ + x<=(int)(x1) && ((_n4##x<(img).width() && ( \ + (I[8] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[17] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[26] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[35] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[44] = (T)(img)(_n4##x,y,z,c)), \ + (I[53] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[62] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[71] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[80] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \ + _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], \ + I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], \ + I[16] = I[17], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + I[24] = I[25], I[25] = I[26], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[45] = I[46], I[46] = I[47], I[47] = I[48], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[54] = I[55], I[55] = I[56], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[63] = I[64], \ + I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[79] = I[80], \ + _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x) + +#define cimg_for2x2x2(img,x,y,z,c,I,T) \ + cimg_for2((img)._depth,z) cimg_for2((img)._height,y) for (int x = 0, \ + _n1##x = (int)( \ + (I[0] = (T)(img)(0,y,z,c)), \ + (I[2] = (T)(img)(0,_n1##y,z,c)), \ + (I[4] = (T)(img)(0,y,_n1##z,c)), \ + (I[6] = (T)(img)(0,_n1##y,_n1##z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[1] = (T)(img)(_n1##x,y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[7] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \ + x==--_n1##x; \ + I[0] = I[1], I[2] = I[3], I[4] = I[5], I[6] = I[7], \ + ++x, ++_n1##x) + +#define cimg_for_in2x2x2(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \ + cimg_for_in2((img)._depth,z0,z1,z) cimg_for_in2((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _n1##x = (int)( \ + (I[0] = (T)(img)(x,y,z,c)), \ + (I[2] = (T)(img)(x,_n1##y,z,c)), \ + (I[4] = (T)(img)(x,y,_n1##z,c)), \ + (I[6] = (T)(img)(x,_n1##y,_n1##z,c)), \ + x + 1>=(int)(img)._width?(img).width() - 1:x + 1); \ + x<=(int)(x1) && ((_n1##x<(img).width() && ( \ + (I[1] = (T)(img)(_n1##x,y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[7] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \ + x==--_n1##x); \ + I[0] = I[1], I[2] = I[3], I[4] = I[5], I[6] = I[7], \ + ++x, ++_n1##x) + +#define cimg_for3x3x3(img,x,y,z,c,I,T) \ + cimg_for3((img)._depth,z) cimg_for3((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = (int)( \ + (I[0] = I[1] = (T)(img)(_p1##x,_p1##y,_p1##z,c)), \ + (I[3] = I[4] = (T)(img)(0,y,_p1##z,c)), \ + (I[6] = I[7] = (T)(img)(0,_n1##y,_p1##z,c)), \ + (I[9] = I[10] = (T)(img)(0,_p1##y,z,c)), \ + (I[12] = I[13] = (T)(img)(0,y,z,c)), \ + (I[15] = I[16] = (T)(img)(0,_n1##y,z,c)), \ + (I[18] = I[19] = (T)(img)(0,_p1##y,_n1##z,c)), \ + (I[21] = I[22] = (T)(img)(0,y,_n1##z,c)), \ + (I[24] = I[25] = (T)(img)(0,_n1##y,_n1##z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[5] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[11] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,y,z,c)), \ + (I[17] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[20] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[23] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[26] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \ + x==--_n1##x; \ + I[0] = I[1], I[1] = I[2], I[3] = I[4], I[4] = I[5], I[6] = I[7], I[7] = I[8], \ + I[9] = I[10], I[10] = I[11], I[12] = I[13], I[13] = I[14], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[21] = I[22], I[22] = I[23], I[24] = I[25], I[25] = I[26], \ + _p1##x = x++, ++_n1##x) + +#define cimg_for_in3x3x3(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \ + cimg_for_in3((img)._depth,z0,z1,z) cimg_for_in3((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = (int)( \ + (I[0] = (T)(img)(_p1##x,_p1##y,_p1##z,c)), \ + (I[3] = (T)(img)(_p1##x,y,_p1##z,c)), \ + (I[6] = (T)(img)(_p1##x,_n1##y,_p1##z,c)), \ + (I[9] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[12] = (T)(img)(_p1##x,y,z,c)), \ + (I[15] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[18] = (T)(img)(_p1##x,_p1##y,_n1##z,c)), \ + (I[21] = (T)(img)(_p1##x,y,_n1##z,c)), \ + (I[24] = (T)(img)(_p1##x,_n1##y,_n1##z,c)), \ + (I[1] = (T)(img)(x,_p1##y,_p1##z,c)), \ + (I[4] = (T)(img)(x,y,_p1##z,c)), \ + (I[7] = (T)(img)(x,_n1##y,_p1##z,c)), \ + (I[10] = (T)(img)(x,_p1##y,z,c)), \ + (I[13] = (T)(img)(x,y,z,c)), \ + (I[16] = (T)(img)(x,_n1##y,z,c)), \ + (I[19] = (T)(img)(x,_p1##y,_n1##z,c)), \ + (I[22] = (T)(img)(x,y,_n1##z,c)), \ + (I[25] = (T)(img)(x,_n1##y,_n1##z,c)), \ + x + 1>=(int)(img)._width?(img).width() - 1:x + 1); \ + x<=(int)(x1) && ((_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[5] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[11] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,y,z,c)), \ + (I[17] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[20] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[23] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[26] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \ + x==--_n1##x); \ + I[0] = I[1], I[1] = I[2], I[3] = I[4], I[4] = I[5], I[6] = I[7], I[7] = I[8], \ + I[9] = I[10], I[10] = I[11], I[12] = I[13], I[13] = I[14], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[21] = I[22], I[22] = I[23], I[24] = I[25], I[25] = I[26], \ + _p1##x = x++, ++_n1##x) + +#define cimglist_for(list,l) for (int l = 0; l<(int)(list)._width; ++l) +#define cimglist_rof(list,l) for (int l = (int)(list)._width - 1; l>=0; --l) +#define cimglist_for_in(list,l0,l1,l) \ + for (int l = (int)(l0)<0?0:(int)(l0), _max##l = (unsigned int)l1<(list)._width?(int)(l1):(int)(list)._width - 1; \ + l<=_max##l; ++l) + +#define cimglist_apply(list,fn) cimglist_for(list,__##fn) (list)[__##fn].fn + +// Macros used to display error messages when exceptions are thrown. +// You should not use these macros is your own code. +#define _cimgdisplay_instance "[instance(%u,%u,%u,%c%s%c)] CImgDisplay::" +#define cimgdisplay_instance _width,_height,_normalization,_title?'\"':'[',_title?_title:"untitled",_title?'\"':']' +#define _cimg_instance "[instance(%u,%u,%u,%u,%p,%sshared)] CImg<%s>::" +#define cimg_instance _width,_height,_depth,_spectrum,_data,_is_shared?"":"non-",pixel_type() +#define _cimglist_instance "[instance(%u,%u,%p)] CImgList<%s>::" +#define cimglist_instance _width,_allocated_width,_data,pixel_type() + +/*------------------------------------------------ + # + # + # Define cimg_library:: namespace + # + # + -------------------------------------------------*/ +//! Contains all classes and functions of the \CImg library. +/** + This namespace is defined to avoid functions and class names collisions + that could happen with the inclusion of other C++ header files. + Anyway, it should not happen often and you should reasonably start most of your + \CImg-based programs with + \code + #include "CImg.h" + using namespace cimg_library; + \endcode + to simplify the declaration of \CImg Library objects afterwards. +**/ +namespace cimg_library_suffixed { + + // Declare the four classes of the CImg Library. + template struct CImg; + template struct CImgList; + struct CImgDisplay; + struct CImgException; + + // Declare cimg:: namespace. + // This is an incomplete namespace definition here. It only contains some + // necessary stuff to ensure a correct declaration order of the classes and functions + // defined afterwards. + namespace cimg { + + // Define character sequences for colored terminal output. +#ifdef cimg_use_vt100 + static const char t_normal[] = { 0x1b, '[', '0', ';', '0', ';', '0', 'm', 0 }; + static const char t_black[] = { 0x1b, '[', '0', ';', '3', '0', ';', '5', '9', 'm', 0 }; + static const char t_red[] = { 0x1b, '[', '0', ';', '3', '1', ';', '5', '9', 'm', 0 }; + static const char t_green[] = { 0x1b, '[', '0', ';', '3', '2', ';', '5', '9', 'm', 0 }; + static const char t_yellow[] = { 0x1b, '[', '0', ';', '3', '3', ';', '5', '9', 'm', 0 }; + static const char t_blue[] = { 0x1b, '[', '0', ';', '3', '4', ';', '5', '9', 'm', 0 }; + static const char t_magenta[] = { 0x1b, '[', '0', ';', '3', '5', ';', '5', '9', 'm', 0 }; + static const char t_cyan[] = { 0x1b, '[', '0', ';', '3', '6', ';', '5', '9', 'm', 0 }; + static const char t_white[] = { 0x1b, '[', '0', ';', '3', '7', ';', '5', '9', 'm', 0 }; + static const char t_bold[] = { 0x1b, '[', '1', 'm', 0 }; + static const char t_underscore[] = { 0x1b, '[', '4', 'm', 0 }; +#else + static const char t_normal[] = { 0 }; + static const char *const t_black = cimg::t_normal, + *const t_red = cimg::t_normal, + *const t_green = cimg::t_normal, + *const t_yellow = cimg::t_normal, + *const t_blue = cimg::t_normal, + *const t_magenta = cimg::t_normal, + *const t_cyan = cimg::t_normal, + *const t_white = cimg::t_normal, + *const t_bold = cimg::t_normal, + *const t_underscore = cimg::t_normal; +#endif + + inline std::FILE* output(std::FILE *file=0); + inline void info(); + + //! Avoid warning messages due to unused parameters. Do nothing actually. + template + inline void unused(const T&, ...) {} + + // [internal] Lock/unlock a mutex for managing concurrent threads. + // 'lock_mode' can be { 0=unlock | 1=lock | 2=trylock }. + // 'n' can be in [0,31] but mutex range [0,15] is reserved by CImg. + inline int mutex(const unsigned int n, const int lock_mode=1); + + inline unsigned int& exception_mode(const unsigned int value, const bool is_set) { + static unsigned int mode = cimg_verbosity; + if (is_set) { cimg::mutex(0); mode = value<4?value:4; cimg::mutex(0,0); } + return mode; + } + + // Functions to return standard streams 'stdin', 'stdout' and 'stderr'. + inline FILE* _stdin(const bool throw_exception=true); + inline FILE* _stdout(const bool throw_exception=true); + inline FILE* _stderr(const bool throw_exception=true); + + // Mandatory because Microsoft's _snprintf() and _vsnprintf() do not add the '\0' character + // at the end of the string. +#if cimg_OS==2 && defined(_MSC_VER) + inline int _snprintf(char *const s, const size_t size, const char *const format, ...) { + va_list ap; + va_start(ap,format); + const int result = _vsnprintf(s,size,format,ap); + va_end(ap); + return result; + } + + inline int _vsnprintf(char *const s, const size_t size, const char *const format, va_list ap) { + int result = -1; + cimg::mutex(6); + if (size) result = _vsnprintf_s(s,size,_TRUNCATE,format,ap); + if (result==-1) result = _vscprintf(format,ap); + cimg::mutex(6,0); + return result; + } + + // Mutex-protected version of sscanf, sprintf and snprintf. + // Used only MacOSX, as it seems those functions are not re-entrant on MacOSX. +#elif defined(__MACOSX__) || defined(__APPLE__) + inline int _sscanf(const char *const s, const char *const format, ...) { + cimg::mutex(6); + va_list args; + va_start(args,format); + const int result = std::vsscanf(s,format,args); + va_end(args); + cimg::mutex(6,0); + return result; + } + + inline int _sprintf(char *const s, const char *const format, ...) { + cimg::mutex(6); + va_list args; + va_start(args,format); + const int result = std::vsprintf(s,format,args); + va_end(args); + cimg::mutex(6,0); + return result; + } + + inline int _snprintf(char *const s, const size_t n, const char *const format, ...) { + cimg::mutex(6); + va_list args; + va_start(args,format); + const int result = std::vsnprintf(s,n,format,args); + va_end(args); + cimg::mutex(6,0); + return result; + } + + inline int _vsnprintf(char *const s, const size_t size, const char* format, va_list ap) { + cimg::mutex(6); + const int result = std::vsnprintf(s,size,format,ap); + cimg::mutex(6,0); + return result; + } +#endif + + //! Set current \CImg exception mode. + /** + The way error messages are handled by \CImg can be changed dynamically, using this function. + \param mode Desired exception mode. Possible values are: + - \c 0: Hide library messages (quiet mode). + - \c 1: Print library messages on the console. + - \c 2: Display library messages on a dialog window. + - \c 3: Do as \c 1 + add extra debug warnings (slow down the code!). + - \c 4: Do as \c 2 + add extra debug warnings (slow down the code!). + **/ + inline unsigned int& exception_mode(const unsigned int mode) { + return exception_mode(mode,true); + } + + //! Return current \CImg exception mode. + /** + \note By default, return the value of configuration macro \c cimg_verbosity + **/ + inline unsigned int& exception_mode() { + return exception_mode(0,false); + } + + inline unsigned int openmp_mode(const unsigned int value, const bool is_set) { + static unsigned int mode = 2; + if (is_set) { cimg::mutex(0); mode = value<2?value:2; cimg::mutex(0,0); } + return mode; + } + + //! Set current \CImg openmp mode. + /** + The way openmp-based methods are handled by \CImg can be changed dynamically, using this function. + \param mode Desired openmp mode. Possible values are: + - \c 0: Never parallelize. + - \c 1: Always parallelize. + - \c 2: Adaptive parallelization mode (default behavior). + **/ + inline unsigned int openmp_mode(const unsigned int mode) { + return openmp_mode(mode,true); + } + + //! Return current \CImg openmp mode. + inline unsigned int openmp_mode() { + return openmp_mode(0,false); + } + +#ifndef cimg_openmp_sizefactor +#define cimg_openmp_sizefactor 1 +#endif +#define cimg_openmp_if(cond) if ((cimg::openmp_mode()==1 || (cimg::openmp_mode()>1 && (cond)))) +#define cimg_openmp_if_size(size,min_size) cimg_openmp_if((size)>=(cimg_openmp_sizefactor)*(min_size)) +#ifdef _MSC_VER +// Disable 'collapse()' directive for MSVC (supports only OpenMP 2.0). +#define cimg_openmp_collapse(k) +#else +#define cimg_openmp_collapse(k) collapse(k) +#endif + +#if cimg_OS==2 +// Disable parallelization of simple loops on Windows, due to noticed performance drop. +#define cimg_openmp_for(instance,expr,min_size) cimg_rof((instance),ptr,T) *ptr = (T)(expr); +#else +#define cimg_openmp_for(instance,expr,min_size) \ + cimg_pragma_openmp(parallel for cimg_openmp_if_size((instance).size(),min_size)) \ + cimg_rof((instance),ptr,T) *ptr = (T)(expr); +#endif + + // Display a simple dialog box, and wait for the user's response. + inline int dialog(const char *const title, const char *const msg, + const char *const button1_label="OK", const char *const button2_label=0, + const char *const button3_label=0, const char *const button4_label=0, + const char *const button5_label=0, const char *const button6_label=0, + const bool centering=false); + + // Evaluate math expression. + inline double eval(const char *const expression, + const double x=0, const double y=0, const double z=0, const double c=0); + + } // namespace cimg { ... + + /*--------------------------------------- + # + # Define the CImgException structures + # + --------------------------------------*/ + //! Instances of \c CImgException are thrown when errors are encountered in a \CImg function call. + /** + \par Overview + + CImgException is the base class of all exceptions thrown by \CImg (except \b CImgAbortException). + CImgException is never thrown itself. Derived classes that specify the type of errord are thrown instead. + These classes can be: + + - \b CImgAbortException: Thrown when a computationally-intensive function is aborted by an external signal. + This is the only \c non-derived exception class. + + - \b CImgArgumentException: Thrown when one argument of a called \CImg function is invalid. + This is probably one of the most thrown exception by \CImg. + For instance, the following example throws a \c CImgArgumentException: + \code + CImg img(100,100,1,3); // Define a 100x100 color image with float-valued pixels + img.mirror('e'); // Try to mirror image along the (non-existing) 'e'-axis + \endcode + + - \b CImgDisplayException: Thrown when something went wrong during the display of images in CImgDisplay instances. + + - \b CImgInstanceException: Thrown when an instance associated to a called \CImg method does not fit + the function requirements. For instance, the following example throws a \c CImgInstanceException: + \code + const CImg img; // Define an empty image + const float value = img.at(0); // Try to read first pixel value (does not exist) + \endcode + + - \b CImgIOException: Thrown when an error occurred when trying to load or save image files. + This happens when trying to read files that do not exist or with invalid formats. + For instance, the following example throws a \c CImgIOException: + \code + const CImg img("missing_file.jpg"); // Try to load a file that does not exist + \endcode + + - \b CImgWarningException: Thrown only if configuration macro \c cimg_strict_warnings is set, and + when a \CImg function has to display a warning message (see cimg::warn()). + + It is not recommended to throw CImgException instances by yourself, + since they are expected to be thrown only by \CImg. + When an error occurs in a library function call, \CImg may display error messages on the screen or on the + standard output, depending on the current \CImg exception mode. + The \CImg exception mode can be get and set by functions cimg::exception_mode() and + cimg::exception_mode(unsigned int). + + \par Exceptions handling + + In all cases, when an error occurs in \CImg, an instance of the corresponding exception class is thrown. + This may lead the program to break (this is the default behavior), but you can bypass this behavior by + handling the exceptions by yourself, + using a usual try { ... } catch () { ... } bloc, as in the following example: + \code + #define "CImg.h" + using namespace cimg_library; + int main() { + cimg::exception_mode(0); // Enable quiet exception mode + try { + ... // Here, do what you want to stress CImg + } catch (CImgException& e) { // You succeeded: something went wrong! + std::fprintf(stderr,"CImg Library Error: %s",e.what()); // Display your custom error message + ... // Do what you want now to save the ship! + } + } + \endcode + **/ + struct CImgException : public std::exception { +#define _cimg_exception_err(etype,disp_flag) \ + std::va_list ap, ap2; \ + va_start(ap,format); va_start(ap2,format); \ + int size = cimg_vsnprintf(0,0,format,ap2); \ + if (size++>=0) { \ + delete[] _message; \ + _message = new char[size]; \ + cimg_vsnprintf(_message,size,format,ap); \ + if (cimg::exception_mode()) { \ + std::fprintf(cimg::output(),"\n%s[CImg] *** %s ***%s %s\n",cimg::t_red,etype,cimg::t_normal,_message); \ + if (cimg_display && disp_flag && !(cimg::exception_mode()%2)) try { cimg::dialog(etype,_message,"Abort"); } \ + catch (CImgException&) {} \ + if (cimg::exception_mode()>=3) cimg_library_suffixed::cimg::info(); \ + } \ + } \ + va_end(ap); va_end(ap2); \ + + char *_message; + CImgException() { _message = new char[1]; *_message = 0; } + CImgException(const char *const format, ...):_message(0) { _cimg_exception_err("CImgException",true); } + CImgException(const CImgException& e):std::exception(e) { + const size_t size = std::strlen(e._message); + _message = new char[size + 1]; + std::strncpy(_message,e._message,size); + _message[size] = 0; + } + ~CImgException() throw() { delete[] _message; } + CImgException& operator=(const CImgException& e) { + const size_t size = std::strlen(e._message); + _message = new char[size + 1]; + std::strncpy(_message,e._message,size); + _message[size] = 0; + return *this; + } + //! Return a C-string containing the error message associated to the thrown exception. + const char *what() const throw() { return _message; } + }; // struct CImgException { ... + + // The CImgAbortException class is used to throw an exception when + // a computationally-intensive function has been aborted by an external signal. + struct CImgAbortException : public std::exception { + char *_message; + CImgAbortException() { _message = new char[1]; *_message = 0; } + CImgAbortException(const char *const format, ...):_message(0) { _cimg_exception_err("CImgAbortException",true); } + CImgAbortException(const CImgAbortException& e):std::exception(e) { + const size_t size = std::strlen(e._message); + _message = new char[size + 1]; + std::strncpy(_message,e._message,size); + _message[size] = 0; + } + ~CImgAbortException() throw() { delete[] _message; } + CImgAbortException& operator=(const CImgAbortException& e) { + const size_t size = std::strlen(e._message); + _message = new char[size + 1]; + std::strncpy(_message,e._message,size); + _message[size] = 0; + return *this; + } + //! Return a C-string containing the error message associated to the thrown exception. + const char *what() const throw() { return _message; } + }; // struct CImgAbortException { ... + + // The CImgArgumentException class is used to throw an exception related + // to invalid arguments encountered in a library function call. + struct CImgArgumentException : public CImgException { + CImgArgumentException(const char *const format, ...) { _cimg_exception_err("CImgArgumentException",true); } + }; // struct CImgArgumentException { ... + + // The CImgDisplayException class is used to throw an exception related + // to display problems encountered in a library function call. + struct CImgDisplayException : public CImgException { + CImgDisplayException(const char *const format, ...) { _cimg_exception_err("CImgDisplayException",false); } + }; // struct CImgDisplayException { ... + + // The CImgInstanceException class is used to throw an exception related + // to an invalid instance encountered in a library function call. + struct CImgInstanceException : public CImgException { + CImgInstanceException(const char *const format, ...) { _cimg_exception_err("CImgInstanceException",true); } + }; // struct CImgInstanceException { ... + + // The CImgIOException class is used to throw an exception related + // to input/output file problems encountered in a library function call. + struct CImgIOException : public CImgException { + CImgIOException(const char *const format, ...) { _cimg_exception_err("CImgIOException",true); } + }; // struct CImgIOException { ... + + // The CImgWarningException class is used to throw an exception for warnings + // encountered in a library function call. + struct CImgWarningException : public CImgException { + CImgWarningException(const char *const format, ...) { _cimg_exception_err("CImgWarningException",false); } + }; // struct CImgWarningException { ... + + /*------------------------------------- + # + # Define cimg:: namespace + # + -----------------------------------*/ + //! Contains \a low-level functions and variables of the \CImg Library. + /** + Most of the functions and variables within this namespace are used by the \CImg library for low-level operations. + You may use them to access specific const values or environment variables internally used by \CImg. + \warning Never write using namespace cimg_library::cimg; in your source code. Lot of functions in the + cimg:: namespace have the same names as standard C functions that may be defined in the global + namespace ::. + **/ + namespace cimg { + + // Define traits that will be used to determine the best data type to work in CImg functions. + // + template struct type { + static const char* string() { + static const char* s[] = { "unknown", "unknown8", "unknown16", "unknown24", + "unknown32", "unknown40", "unknown48", "unknown56", + "unknown64", "unknown72", "unknown80", "unknown88", + "unknown96", "unknown104", "unknown112", "unknown120", + "unknown128" }; + return s[(sizeof(T)<17)?sizeof(T):0]; + } + static bool is_float() { return false; } + static bool is_inf(const T) { return false; } + static bool is_nan(const T) { return false; } + static bool is_finite(const T) { return true; } + static T min() { return ~max(); } + static T max() { return (T)1<<(8*sizeof(T) - 1); } + static T inf() { return max(); } + static T cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(T)val; } + static const char* format() { return "%s"; } + static const char* format_s() { return "%s"; } + static const char* format(const T& val) { static const char *const s = "unknown"; cimg::unused(val); return s; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "bool"; return s; } + static bool is_float() { return false; } + static bool is_inf(const bool) { return false; } + static bool is_nan(const bool) { return false; } + static bool is_finite(const bool) { return true; } + static bool min() { return false; } + static bool max() { return true; } + static bool inf() { return max(); } + static bool is_inf() { return false; } + static bool cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(bool)val; } + static const char* format() { return "%s"; } + static const char* format_s() { return "%s"; } + static const char* format(const bool val) { static const char* s[] = { "false", "true" }; return s[val?1:0]; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "unsigned char"; return s; } + static bool is_float() { return false; } + static bool is_inf(const unsigned char) { return false; } + static bool is_nan(const unsigned char) { return false; } + static bool is_finite(const unsigned char) { return true; } + static unsigned char min() { return 0; } + static unsigned char max() { return (unsigned char)-1; } + static unsigned char inf() { return max(); } + static unsigned char cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(unsigned char)val; } + static const char* format() { return "%u"; } + static const char* format_s() { return "%u"; } + static unsigned int format(const unsigned char val) { return (unsigned int)val; } + }; + +#if defined(CHAR_MAX) && CHAR_MAX==255 + template<> struct type { + static const char* string() { static const char *const s = "char"; return s; } + static bool is_float() { return false; } + static bool is_inf(const char) { return false; } + static bool is_nan(const char) { return false; } + static bool is_finite(const char) { return true; } + static char min() { return 0; } + static char max() { return (char)-1; } + static char inf() { return max(); } + static char cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(unsigned char)val; } + static const char* format() { return "%u"; } + static const char* format_s() { return "%u"; } + static unsigned int format(const char val) { return (unsigned int)val; } + }; +#else + template<> struct type { + static const char* string() { static const char *const s = "char"; return s; } + static bool is_float() { return false; } + static bool is_inf(const char) { return false; } + static bool is_nan(const char) { return false; } + static bool is_finite(const char) { return true; } + static char min() { return ~max(); } + static char max() { return (char)((unsigned char)-1>>1); } + static char inf() { return max(); } + static char cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(char)val; } + static const char* format() { return "%d"; } + static const char* format_s() { return "%d"; } + static int format(const char val) { return (int)val; } + }; +#endif + + template<> struct type { + static const char* string() { static const char *const s = "signed char"; return s; } + static bool is_float() { return false; } + static bool is_inf(const signed char) { return false; } + static bool is_nan(const signed char) { return false; } + static bool is_finite(const signed char) { return true; } + static signed char min() { return ~max(); } + static signed char max() { return (signed char)((unsigned char)-1>>1); } + static signed char inf() { return max(); } + static signed char cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(signed char)val; } + static const char* format() { return "%d"; } + static const char* format_s() { return "%d"; } + static int format(const signed char val) { return (int)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "unsigned short"; return s; } + static bool is_float() { return false; } + static bool is_inf(const unsigned short) { return false; } + static bool is_nan(const unsigned short) { return false; } + static bool is_finite(const unsigned short) { return true; } + static unsigned short min() { return 0; } + static unsigned short max() { return (unsigned short)-1; } + static unsigned short inf() { return max(); } + static unsigned short cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(unsigned short)val; } + static const char* format() { return "%u"; } + static const char* format_s() { return "%u"; } + static unsigned int format(const unsigned short val) { return (unsigned int)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "short"; return s; } + static bool is_float() { return false; } + static bool is_inf(const short) { return false; } + static bool is_nan(const short) { return false; } + static bool is_finite(const short) { return true; } + static short min() { return ~max(); } + static short max() { return (short)((unsigned short)-1>>1); } + static short inf() { return max(); } + static short cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(short)val; } + static const char* format() { return "%d"; } + static const char* format_s() { return "%d"; } + static int format(const short val) { return (int)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "unsigned int"; return s; } + static bool is_float() { return false; } + static bool is_inf(const unsigned int) { return false; } + static bool is_nan(const unsigned int) { return false; } + static bool is_finite(const unsigned int) { return true; } + static unsigned int min() { return 0; } + static unsigned int max() { return (unsigned int)-1; } + static unsigned int inf() { return max(); } + static unsigned int cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(unsigned int)val; } + static const char* format() { return "%u"; } + static const char* format_s() { return "%u"; } + static unsigned int format(const unsigned int val) { return val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "int"; return s; } + static bool is_float() { return false; } + static bool is_inf(const int) { return false; } + static bool is_nan(const int) { return false; } + static bool is_finite(const int) { return true; } + static int min() { return ~max(); } + static int max() { return (int)((unsigned int)-1>>1); } + static int inf() { return max(); } + static int cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(int)val; } + static const char* format() { return "%d"; } + static const char* format_s() { return "%d"; } + static int format(const int val) { return val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "unsigned int64"; return s; } + static bool is_float() { return false; } + static bool is_inf(const cimg_uint64) { return false; } + static bool is_nan(const cimg_uint64) { return false; } + static bool is_finite(const cimg_uint64) { return true; } + static cimg_uint64 min() { return 0; } + static cimg_uint64 max() { return (cimg_uint64)-1; } + static cimg_uint64 inf() { return max(); } + static cimg_uint64 cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(cimg_uint64)val; } + static const char* format() { return cimg_fuint64; } + static const char* format_s() { return cimg_fuint64; } + static unsigned long format(const cimg_uint64 val) { return (unsigned long)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "int64"; return s; } + static bool is_float() { return false; } + static bool is_inf(const cimg_int64) { return false; } + static bool is_nan(const cimg_int64) { return false; } + static bool is_finite(const cimg_int64) { return true; } + static cimg_int64 min() { return ~max(); } + static cimg_int64 max() { return (cimg_int64)((cimg_uint64)-1>>1); } + static cimg_int64 inf() { return max(); } + static cimg_int64 cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(cimg_int64)val; + } + static const char* format() { return cimg_fint64; } + static const char* format_s() { return cimg_fint64; } + static long format(const long val) { return (long)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "double"; return s; } + static bool is_float() { return true; } + static bool is_inf(const double val) { +#ifdef isinf + return (bool)isinf(val); +#else + return !is_nan(val) && (val::min() || val>cimg::type::max()); +#endif + } + static bool is_nan(const double val) { // Custom version that works with '-ffast-math' + if (sizeof(double)==8) { + cimg_uint64 u; + std::memcpy(&u,&val,sizeof(double)); + return ((unsigned int)(u>>32)&0x7fffffff) + ((unsigned int)u!=0)>0x7ff00000; + } +#ifdef isnan + return (bool)isnan(val); +#else + return !(val==val); +#endif + } + static bool is_finite(const double val) { +#ifdef isfinite + return (bool)isfinite(val); +#else + return !is_nan(val) && !is_inf(val); +#endif + } + static double min() { return -DBL_MAX; } + static double max() { return DBL_MAX; } + static double inf() { +#ifdef INFINITY + return (double)INFINITY; +#else + return max()*max(); +#endif + } + static double nan() { +#ifdef NAN + return (double)NAN; +#else + const double val_nan = -std::sqrt(-1.); return val_nan; +#endif + } + static double cut(const double val) { return val; } + static const char* format() { return "%.17g"; } + static const char* format_s() { return "%g"; } + static double format(const double val) { return val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "float"; return s; } + static bool is_float() { return true; } + static bool is_inf(const float val) { +#ifdef isinf + return (bool)isinf(val); +#else + return !is_nan(val) && (val::min() || val>cimg::type::max()); +#endif + } + static bool is_nan(const float val) { // Custom version that works with '-ffast-math' + if (sizeof(float)==4) { + unsigned int u; + std::memcpy(&u,&val,sizeof(float)); + return (u&0x7fffffff)>0x7f800000; + } +#ifdef isnan + return (bool)isnan(val); +#else + return !(val==val); +#endif + } + static bool is_finite(const float val) { +#ifdef isfinite + return (bool)isfinite(val); +#else + return !is_nan(val) && !is_inf(val); +#endif + } + static float min() { return -FLT_MAX; } + static float max() { return FLT_MAX; } + static float inf() { return (float)cimg::type::inf(); } + static float nan() { return (float)cimg::type::nan(); } + static float cut(const double val) { return (float)val; } + static float cut(const float val) { return (float)val; } + static const char* format() { return "%.9g"; } + static const char* format_s() { return "%g"; } + static double format(const float val) { return (double)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "long double"; return s; } + static bool is_float() { return true; } + static bool is_inf(const long double val) { +#ifdef isinf + return (bool)isinf(val); +#else + return !is_nan(val) && (val::min() || val>cimg::type::max()); +#endif + } + static bool is_nan(const long double val) { +#ifdef isnan + return (bool)isnan(val); +#else + return !(val==val); +#endif + } + static bool is_finite(const long double val) { +#ifdef isfinite + return (bool)isfinite(val); +#else + return !is_nan(val) && !is_inf(val); +#endif + } + static long double min() { return -LDBL_MAX; } + static long double max() { return LDBL_MAX; } + static long double inf() { return max()*max(); } + static long double nan() { const long double val_nan = -std::sqrt(-1.L); return val_nan; } + static long double cut(const long double val) { return val; } + static const char* format() { return "%.17g"; } + static const char* format_s() { return "%g"; } + static double format(const long double val) { return (double)val; } + }; + +#ifdef cimg_use_half + template<> struct type { + static const char* string() { static const char *const s = "half"; return s; } + static bool is_float() { return true; } + static bool is_inf(const long double val) { +#ifdef isinf + return (bool)isinf(val); +#else + return !is_nan(val) && (val::min() || val>cimg::type::max()); +#endif + } + static bool is_nan(const half val) { // Custom version that works with '-ffast-math' + if (sizeof(half)==2) { + short u; + std::memcpy(&u,&val,sizeof(short)); + return (bool)((u&0x7fff)>0x7c00); + } + return cimg::type::is_nan((float)val); + } + static bool is_finite(const half val) { +#ifdef isfinite + return (bool)isfinite(val); +#else + return !is_nan(val) && !is_inf(val); +#endif + } + static half min() { return (half)-65504; } + static half max() { return (half)65504; } + static half inf() { return max()*max(); } + static half nan() { const half val_nan = (half)-std::sqrt(-1.); return val_nan; } + static half cut(const double val) { return (half)val; } + static const char* format() { return "%.9g"; } + static const char* format_s() { return "%g"; } + static double format(const half val) { return (double)val; } + }; +#endif + + template struct superset { typedef T type; }; + template<> struct superset { typedef unsigned char type; }; + template<> struct superset { typedef char type; }; + template<> struct superset { typedef signed char type; }; + template<> struct superset { typedef unsigned short type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef unsigned int type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_uint64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef unsigned short type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef unsigned int type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_uint64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef unsigned int type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_uint64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_uint64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + +#ifdef cimg_use_half + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; +#endif + + template struct superset2 { + typedef typename superset::type>::type type; + }; + + template struct superset3 { + typedef typename superset::type>::type type; + }; + + template struct last { typedef t2 type; }; + +#define _cimg_Tt typename cimg::superset::type +#define _cimg_Tfloat typename cimg::superset::type +#define _cimg_tfloat typename cimg::superset::type +#define _cimg_Ttfloat typename cimg::superset2::type +#define _cimg_Ttdouble typename cimg::superset2::type + + // Define variables used internally by CImg. +#if cimg_display==1 + struct X11_static { + unsigned int nb_wins; + pthread_t *events_thread; + pthread_cond_t wait_event; + pthread_mutex_t wait_event_mutex; + CImgDisplay **wins; + Display *display; + unsigned int nb_bits; + bool is_blue_first; + bool is_shm_enabled; + bool byte_order; + +#ifdef cimg_use_xrandr + XRRScreenSize *resolutions; + Rotation curr_rotation; + unsigned int curr_resolution; + unsigned int nb_resolutions; +#endif + X11_static():nb_wins(0),events_thread(0),display(0), + nb_bits(0),is_blue_first(false),is_shm_enabled(false),byte_order(false) { +#ifdef __FreeBSD__ + XInitThreads(); +#endif + wins = new CImgDisplay*[1024]; + pthread_mutex_init(&wait_event_mutex,0); + pthread_cond_init(&wait_event,0); + +#ifdef cimg_use_xrandr + resolutions = 0; + curr_rotation = 0; + curr_resolution = nb_resolutions = 0; +#endif + } + + ~X11_static() { + delete[] wins; + /* + if (events_thread) { + pthread_cancel(*events_thread); + delete events_thread; + } + if (display) { } // XCloseDisplay(display); } + pthread_cond_destroy(&wait_event); + pthread_mutex_unlock(&wait_event_mutex); + pthread_mutex_destroy(&wait_event_mutex); + */ + } + }; // struct X11_static { ... +#if defined(cimg_module) + X11_static& X11_attr(); +#elif defined(cimg_main) + X11_static& X11_attr() { static X11_static val; return val; } +#else + inline X11_static& X11_attr() { static X11_static val; return val; } +#endif + +#elif cimg_display==2 + struct Win32_static { + HANDLE wait_event; + Win32_static() { wait_event = CreateEvent(0,FALSE_WIN,FALSE_WIN,0); } + }; // struct Win32_static { ... +#if defined(cimg_module) + Win32_static& Win32_attr(); +#elif defined(cimg_main) + Win32_static& Win32_attr() { static Win32_static val; return val; } +#else + inline Win32_static& Win32_attr() { static Win32_static val; return val; } +#endif +#endif +#define cimg_lock_display() cimg::mutex(15) +#define cimg_unlock_display() cimg::mutex(15,0) + + struct Mutex_static { +#if cimg_OS==1 && (defined(cimg_use_pthread) || cimg_display==1) + pthread_mutex_t mutex[32]; + Mutex_static() { for (unsigned int i = 0; i<32; ++i) pthread_mutex_init(&mutex[i],0); } + void lock(const unsigned int n) { pthread_mutex_lock(&mutex[n]); } + void unlock(const unsigned int n) { pthread_mutex_unlock(&mutex[n]); } + int trylock(const unsigned int n) { return pthread_mutex_trylock(&mutex[n]); } +#elif cimg_OS==2 + HANDLE mutex[32]; + Mutex_static() { for (unsigned int i = 0; i<32; ++i) mutex[i] = CreateMutex(0,FALSE_WIN,0); } + void lock(const unsigned int n) { WaitForSingleObject(mutex[n],INFINITE); } + void unlock(const unsigned int n) { ReleaseMutex(mutex[n]); } + int trylock(const unsigned int) { return 0; } +#else + Mutex_static() {} + void lock(const unsigned int) {} + void unlock(const unsigned int) {} + int trylock(const unsigned int) { return 0; } +#endif + }; // struct Mutex_static { ... +#if defined(cimg_module) + Mutex_static& Mutex_attr(); +#elif defined(cimg_main) + Mutex_static& Mutex_attr() { static Mutex_static val; return val; } +#else + inline Mutex_static& Mutex_attr() { static Mutex_static val; return val; } +#endif + +#if defined(cimg_use_magick) + struct Magick_static { + Magick_static() { + Magick::InitializeMagick(""); + } + }; // struct Magick_static { ... + static Magick_static _Magick_static; +#endif + +#if defined(cimg_use_fftw3) && !defined(cimg_use_fftw3_singlethread) + struct FFTW3_static { + FFTW3_static() { + fftw_init_threads(); + } + }; // struct FFTW3_static { ... + static FFTW3_static _FFTW3_static; +#endif + +#if cimg_display==1 + // Define keycodes for X11-based graphical systems. + const unsigned int keyESC = XK_Escape; + const unsigned int keyF1 = XK_F1; + const unsigned int keyF2 = XK_F2; + const unsigned int keyF3 = XK_F3; + const unsigned int keyF4 = XK_F4; + const unsigned int keyF5 = XK_F5; + const unsigned int keyF6 = XK_F6; + const unsigned int keyF7 = XK_F7; + const unsigned int keyF8 = XK_F8; + const unsigned int keyF9 = XK_F9; + const unsigned int keyF10 = XK_F10; + const unsigned int keyF11 = XK_F11; + const unsigned int keyF12 = XK_F12; + const unsigned int keyPAUSE = XK_Pause; + const unsigned int key1 = XK_1; + const unsigned int key2 = XK_2; + const unsigned int key3 = XK_3; + const unsigned int key4 = XK_4; + const unsigned int key5 = XK_5; + const unsigned int key6 = XK_6; + const unsigned int key7 = XK_7; + const unsigned int key8 = XK_8; + const unsigned int key9 = XK_9; + const unsigned int key0 = XK_0; + const unsigned int keyBACKSPACE = XK_BackSpace; + const unsigned int keyINSERT = XK_Insert; + const unsigned int keyHOME = XK_Home; + const unsigned int keyPAGEUP = XK_Page_Up; + const unsigned int keyTAB = XK_Tab; + const unsigned int keyQ = XK_q; + const unsigned int keyW = XK_w; + const unsigned int keyE = XK_e; + const unsigned int keyR = XK_r; + const unsigned int keyT = XK_t; + const unsigned int keyY = XK_y; + const unsigned int keyU = XK_u; + const unsigned int keyI = XK_i; + const unsigned int keyO = XK_o; + const unsigned int keyP = XK_p; + const unsigned int keyDELETE = XK_Delete; + const unsigned int keyEND = XK_End; + const unsigned int keyPAGEDOWN = XK_Page_Down; + const unsigned int keyCAPSLOCK = XK_Caps_Lock; + const unsigned int keyA = XK_a; + const unsigned int keyS = XK_s; + const unsigned int keyD = XK_d; + const unsigned int keyF = XK_f; + const unsigned int keyG = XK_g; + const unsigned int keyH = XK_h; + const unsigned int keyJ = XK_j; + const unsigned int keyK = XK_k; + const unsigned int keyL = XK_l; + const unsigned int keyENTER = XK_Return; + const unsigned int keySHIFTLEFT = XK_Shift_L; + const unsigned int keyZ = XK_z; + const unsigned int keyX = XK_x; + const unsigned int keyC = XK_c; + const unsigned int keyV = XK_v; + const unsigned int keyB = XK_b; + const unsigned int keyN = XK_n; + const unsigned int keyM = XK_m; + const unsigned int keySHIFTRIGHT = XK_Shift_R; + const unsigned int keyARROWUP = XK_Up; + const unsigned int keyCTRLLEFT = XK_Control_L; + const unsigned int keyAPPLEFT = XK_Super_L; + const unsigned int keyALT = XK_Alt_L; + const unsigned int keySPACE = XK_space; + const unsigned int keyALTGR = XK_Alt_R; + const unsigned int keyAPPRIGHT = XK_Super_R; + const unsigned int keyMENU = XK_Menu; + const unsigned int keyCTRLRIGHT = XK_Control_R; + const unsigned int keyARROWLEFT = XK_Left; + const unsigned int keyARROWDOWN = XK_Down; + const unsigned int keyARROWRIGHT = XK_Right; + const unsigned int keyPAD0 = XK_KP_0; + const unsigned int keyPAD1 = XK_KP_1; + const unsigned int keyPAD2 = XK_KP_2; + const unsigned int keyPAD3 = XK_KP_3; + const unsigned int keyPAD4 = XK_KP_4; + const unsigned int keyPAD5 = XK_KP_5; + const unsigned int keyPAD6 = XK_KP_6; + const unsigned int keyPAD7 = XK_KP_7; + const unsigned int keyPAD8 = XK_KP_8; + const unsigned int keyPAD9 = XK_KP_9; + const unsigned int keyPADADD = XK_KP_Add; + const unsigned int keyPADSUB = XK_KP_Subtract; + const unsigned int keyPADMUL = XK_KP_Multiply; + const unsigned int keyPADDIV = XK_KP_Divide; + +#elif cimg_display==2 + // Define keycodes for Windows. + const unsigned int keyESC = VK_ESCAPE; + const unsigned int keyF1 = VK_F1; + const unsigned int keyF2 = VK_F2; + const unsigned int keyF3 = VK_F3; + const unsigned int keyF4 = VK_F4; + const unsigned int keyF5 = VK_F5; + const unsigned int keyF6 = VK_F6; + const unsigned int keyF7 = VK_F7; + const unsigned int keyF8 = VK_F8; + const unsigned int keyF9 = VK_F9; + const unsigned int keyF10 = VK_F10; + const unsigned int keyF11 = VK_F11; + const unsigned int keyF12 = VK_F12; + const unsigned int keyPAUSE = VK_PAUSE; + const unsigned int key1 = '1'; + const unsigned int key2 = '2'; + const unsigned int key3 = '3'; + const unsigned int key4 = '4'; + const unsigned int key5 = '5'; + const unsigned int key6 = '6'; + const unsigned int key7 = '7'; + const unsigned int key8 = '8'; + const unsigned int key9 = '9'; + const unsigned int key0 = '0'; + const unsigned int keyBACKSPACE = VK_BACK; + const unsigned int keyINSERT = VK_INSERT; + const unsigned int keyHOME = VK_HOME; + const unsigned int keyPAGEUP = VK_PRIOR; + const unsigned int keyTAB = VK_TAB; + const unsigned int keyQ = 'Q'; + const unsigned int keyW = 'W'; + const unsigned int keyE = 'E'; + const unsigned int keyR = 'R'; + const unsigned int keyT = 'T'; + const unsigned int keyY = 'Y'; + const unsigned int keyU = 'U'; + const unsigned int keyI = 'I'; + const unsigned int keyO = 'O'; + const unsigned int keyP = 'P'; + const unsigned int keyDELETE = VK_DELETE; + const unsigned int keyEND = VK_END; + const unsigned int keyPAGEDOWN = VK_NEXT; + const unsigned int keyCAPSLOCK = VK_CAPITAL; + const unsigned int keyA = 'A'; + const unsigned int keyS = 'S'; + const unsigned int keyD = 'D'; + const unsigned int keyF = 'F'; + const unsigned int keyG = 'G'; + const unsigned int keyH = 'H'; + const unsigned int keyJ = 'J'; + const unsigned int keyK = 'K'; + const unsigned int keyL = 'L'; + const unsigned int keyENTER = VK_RETURN; + const unsigned int keySHIFTLEFT = VK_SHIFT; + const unsigned int keyZ = 'Z'; + const unsigned int keyX = 'X'; + const unsigned int keyC = 'C'; + const unsigned int keyV = 'V'; + const unsigned int keyB = 'B'; + const unsigned int keyN = 'N'; + const unsigned int keyM = 'M'; + const unsigned int keySHIFTRIGHT = VK_SHIFT; + const unsigned int keyARROWUP = VK_UP; + const unsigned int keyCTRLLEFT = VK_CONTROL; + const unsigned int keyAPPLEFT = VK_LWIN; + const unsigned int keyALT = VK_LMENU; + const unsigned int keySPACE = VK_SPACE; + const unsigned int keyALTGR = VK_CONTROL; + const unsigned int keyAPPRIGHT = VK_RWIN; + const unsigned int keyMENU = VK_APPS; + const unsigned int keyCTRLRIGHT = VK_CONTROL; + const unsigned int keyARROWLEFT = VK_LEFT; + const unsigned int keyARROWDOWN = VK_DOWN; + const unsigned int keyARROWRIGHT = VK_RIGHT; + const unsigned int keyPAD0 = 0x60; + const unsigned int keyPAD1 = 0x61; + const unsigned int keyPAD2 = 0x62; + const unsigned int keyPAD3 = 0x63; + const unsigned int keyPAD4 = 0x64; + const unsigned int keyPAD5 = 0x65; + const unsigned int keyPAD6 = 0x66; + const unsigned int keyPAD7 = 0x67; + const unsigned int keyPAD8 = 0x68; + const unsigned int keyPAD9 = 0x69; + const unsigned int keyPADADD = VK_ADD; + const unsigned int keyPADSUB = VK_SUBTRACT; + const unsigned int keyPADMUL = VK_MULTIPLY; + const unsigned int keyPADDIV = VK_DIVIDE; + +#else + // Define random keycodes when no display is available. + // (should rarely be used then!). + const unsigned int keyESC = 1U; //!< Keycode for the \c ESC key (architecture-dependent) + const unsigned int keyF1 = 2U; //!< Keycode for the \c F1 key (architecture-dependent) + const unsigned int keyF2 = 3U; //!< Keycode for the \c F2 key (architecture-dependent) + const unsigned int keyF3 = 4U; //!< Keycode for the \c F3 key (architecture-dependent) + const unsigned int keyF4 = 5U; //!< Keycode for the \c F4 key (architecture-dependent) + const unsigned int keyF5 = 6U; //!< Keycode for the \c F5 key (architecture-dependent) + const unsigned int keyF6 = 7U; //!< Keycode for the \c F6 key (architecture-dependent) + const unsigned int keyF7 = 8U; //!< Keycode for the \c F7 key (architecture-dependent) + const unsigned int keyF8 = 9U; //!< Keycode for the \c F8 key (architecture-dependent) + const unsigned int keyF9 = 10U; //!< Keycode for the \c F9 key (architecture-dependent) + const unsigned int keyF10 = 11U; //!< Keycode for the \c F10 key (architecture-dependent) + const unsigned int keyF11 = 12U; //!< Keycode for the \c F11 key (architecture-dependent) + const unsigned int keyF12 = 13U; //!< Keycode for the \c F12 key (architecture-dependent) + const unsigned int keyPAUSE = 14U; //!< Keycode for the \c PAUSE key (architecture-dependent) + const unsigned int key1 = 15U; //!< Keycode for the \c 1 key (architecture-dependent) + const unsigned int key2 = 16U; //!< Keycode for the \c 2 key (architecture-dependent) + const unsigned int key3 = 17U; //!< Keycode for the \c 3 key (architecture-dependent) + const unsigned int key4 = 18U; //!< Keycode for the \c 4 key (architecture-dependent) + const unsigned int key5 = 19U; //!< Keycode for the \c 5 key (architecture-dependent) + const unsigned int key6 = 20U; //!< Keycode for the \c 6 key (architecture-dependent) + const unsigned int key7 = 21U; //!< Keycode for the \c 7 key (architecture-dependent) + const unsigned int key8 = 22U; //!< Keycode for the \c 8 key (architecture-dependent) + const unsigned int key9 = 23U; //!< Keycode for the \c 9 key (architecture-dependent) + const unsigned int key0 = 24U; //!< Keycode for the \c 0 key (architecture-dependent) + const unsigned int keyBACKSPACE = 25U; //!< Keycode for the \c BACKSPACE key (architecture-dependent) + const unsigned int keyINSERT = 26U; //!< Keycode for the \c INSERT key (architecture-dependent) + const unsigned int keyHOME = 27U; //!< Keycode for the \c HOME key (architecture-dependent) + const unsigned int keyPAGEUP = 28U; //!< Keycode for the \c PAGEUP key (architecture-dependent) + const unsigned int keyTAB = 29U; //!< Keycode for the \c TAB key (architecture-dependent) + const unsigned int keyQ = 30U; //!< Keycode for the \c Q key (architecture-dependent) + const unsigned int keyW = 31U; //!< Keycode for the \c W key (architecture-dependent) + const unsigned int keyE = 32U; //!< Keycode for the \c E key (architecture-dependent) + const unsigned int keyR = 33U; //!< Keycode for the \c R key (architecture-dependent) + const unsigned int keyT = 34U; //!< Keycode for the \c T key (architecture-dependent) + const unsigned int keyY = 35U; //!< Keycode for the \c Y key (architecture-dependent) + const unsigned int keyU = 36U; //!< Keycode for the \c U key (architecture-dependent) + const unsigned int keyI = 37U; //!< Keycode for the \c I key (architecture-dependent) + const unsigned int keyO = 38U; //!< Keycode for the \c O key (architecture-dependent) + const unsigned int keyP = 39U; //!< Keycode for the \c P key (architecture-dependent) + const unsigned int keyDELETE = 40U; //!< Keycode for the \c DELETE key (architecture-dependent) + const unsigned int keyEND = 41U; //!< Keycode for the \c END key (architecture-dependent) + const unsigned int keyPAGEDOWN = 42U; //!< Keycode for the \c PAGEDOWN key (architecture-dependent) + const unsigned int keyCAPSLOCK = 43U; //!< Keycode for the \c CAPSLOCK key (architecture-dependent) + const unsigned int keyA = 44U; //!< Keycode for the \c A key (architecture-dependent) + const unsigned int keyS = 45U; //!< Keycode for the \c S key (architecture-dependent) + const unsigned int keyD = 46U; //!< Keycode for the \c D key (architecture-dependent) + const unsigned int keyF = 47U; //!< Keycode for the \c F key (architecture-dependent) + const unsigned int keyG = 48U; //!< Keycode for the \c G key (architecture-dependent) + const unsigned int keyH = 49U; //!< Keycode for the \c H key (architecture-dependent) + const unsigned int keyJ = 50U; //!< Keycode for the \c J key (architecture-dependent) + const unsigned int keyK = 51U; //!< Keycode for the \c K key (architecture-dependent) + const unsigned int keyL = 52U; //!< Keycode for the \c L key (architecture-dependent) + const unsigned int keyENTER = 53U; //!< Keycode for the \c ENTER key (architecture-dependent) + const unsigned int keySHIFTLEFT = 54U; //!< Keycode for the \c SHIFTLEFT key (architecture-dependent) + const unsigned int keyZ = 55U; //!< Keycode for the \c Z key (architecture-dependent) + const unsigned int keyX = 56U; //!< Keycode for the \c X key (architecture-dependent) + const unsigned int keyC = 57U; //!< Keycode for the \c C key (architecture-dependent) + const unsigned int keyV = 58U; //!< Keycode for the \c V key (architecture-dependent) + const unsigned int keyB = 59U; //!< Keycode for the \c B key (architecture-dependent) + const unsigned int keyN = 60U; //!< Keycode for the \c N key (architecture-dependent) + const unsigned int keyM = 61U; //!< Keycode for the \c M key (architecture-dependent) + const unsigned int keySHIFTRIGHT = 62U; //!< Keycode for the \c SHIFTRIGHT key (architecture-dependent) + const unsigned int keyARROWUP = 63U; //!< Keycode for the \c ARROWUP key (architecture-dependent) + const unsigned int keyCTRLLEFT = 64U; //!< Keycode for the \c CTRLLEFT key (architecture-dependent) + const unsigned int keyAPPLEFT = 65U; //!< Keycode for the \c APPLEFT key (architecture-dependent) + const unsigned int keyALT = 66U; //!< Keycode for the \c ALT key (architecture-dependent) + const unsigned int keySPACE = 67U; //!< Keycode for the \c SPACE key (architecture-dependent) + const unsigned int keyALTGR = 68U; //!< Keycode for the \c ALTGR key (architecture-dependent) + const unsigned int keyAPPRIGHT = 69U; //!< Keycode for the \c APPRIGHT key (architecture-dependent) + const unsigned int keyMENU = 70U; //!< Keycode for the \c MENU key (architecture-dependent) + const unsigned int keyCTRLRIGHT = 71U; //!< Keycode for the \c CTRLRIGHT key (architecture-dependent) + const unsigned int keyARROWLEFT = 72U; //!< Keycode for the \c ARROWLEFT key (architecture-dependent) + const unsigned int keyARROWDOWN = 73U; //!< Keycode for the \c ARROWDOWN key (architecture-dependent) + const unsigned int keyARROWRIGHT = 74U; //!< Keycode for the \c ARROWRIGHT key (architecture-dependent) + const unsigned int keyPAD0 = 75U; //!< Keycode for the \c PAD0 key (architecture-dependent) + const unsigned int keyPAD1 = 76U; //!< Keycode for the \c PAD1 key (architecture-dependent) + const unsigned int keyPAD2 = 77U; //!< Keycode for the \c PAD2 key (architecture-dependent) + const unsigned int keyPAD3 = 78U; //!< Keycode for the \c PAD3 key (architecture-dependent) + const unsigned int keyPAD4 = 79U; //!< Keycode for the \c PAD4 key (architecture-dependent) + const unsigned int keyPAD5 = 80U; //!< Keycode for the \c PAD5 key (architecture-dependent) + const unsigned int keyPAD6 = 81U; //!< Keycode for the \c PAD6 key (architecture-dependent) + const unsigned int keyPAD7 = 82U; //!< Keycode for the \c PAD7 key (architecture-dependent) + const unsigned int keyPAD8 = 83U; //!< Keycode for the \c PAD8 key (architecture-dependent) + const unsigned int keyPAD9 = 84U; //!< Keycode for the \c PAD9 key (architecture-dependent) + const unsigned int keyPADADD = 85U; //!< Keycode for the \c PADADD key (architecture-dependent) + const unsigned int keyPADSUB = 86U; //!< Keycode for the \c PADSUB key (architecture-dependent) + const unsigned int keyPADMUL = 87U; //!< Keycode for the \c PADMUL key (architecture-dependent) + const unsigned int keyPADDIV = 88U; //!< Keycode for the \c PADDDIV key (architecture-dependent) +#endif + + const double PI = 3.14159265358979323846; //!< Value of the mathematical constant PI + + // Define a 10x13 binary font (small sans). + static const char *const data_font_small[] = { + " UwlwnwoyuwHwlwmwcwlwnw[xuwowlwmwoyuwRwlwnxcw Mw (wnwnwuwpwuypwuwoy" + "ZwnwmwuwowuwmwnwnwuwowuwfwuxnwnwmwuwpwuypwuwZwnwnwtwpwtwow'y Hw cwnw >{ jw %xdxZwdw_wexfwYwkw 7yowoyFx=w " + "ry qw %wuw !xnwkwnwoyuwfwuw[wkwnwcwowrwpwdwuwoxuwpwkwnwoyuwRwkwnwbwpwNyoyoyoyoy;wdwnxpxtxowG|!ydwnwuwowtwow" + "pxswqxlwnxnxmwDwoyoxnyoymwp{oyq{pyoy>ypwqwpwp{oyqzo{q{pzrwrwowlwqwswpwnwqwsxswpypzoyqzozq}swrwrwqwtwswswtxsxswq" + "ws}qwnwkwnydwew_wfwdwkwmwowkw(w0wmwmwGwtwdxQw swuwnwo{q{pynwp|rwtwtwqydwcwcwcwmwmxgwqwpwnzpwuwpzoyRzoyoyexnynwd" + "z\\xnxgxrwsxrwsyswowmwmwmwmwmwmwo}ryp{q{q{q{nwmwnwmwozqxswpyoyoyoyoyeyuwswrwrwrwrwrwrwrwrwqwrwmwtwnwmwnwuwpwuyp" + "wuwoyZwmwnwuwowuwmwqwkwuwowuwoxnwuxowmwnwuwpwuypwuwZwmwnwuwowuwnwowmwtw\\wuwuwqwswqwswqwswqwswEwqwtweypzr~qyIw " + "rwswewnwuwowuwozswtwuwqwtwmwnwlwowuwuwowOxpxuxqwuwowswqwswoxpwlwjwqwswqwswy~}P{|k~-{|w~}k{|w~}Ww~|S{|k~X{|v~vv~|Y{|}k~}|Z{|y~" + "}y|xy|}w~| s{|}k~}|Z{|l~|V{}p~}\"{|y~}|w{|}w~|V{|}|u{|v~P{}x~} {{}h~} N{|~y}y|}x~|S{|v~}|y{|}w~}2{|w~y}x~|g{}x" + "~|k{|w~y}x~|g{}x~|kx}|w{|}w~}k{}x~}%{}t~|P{}t~|P{}t~|P{}t~|P{}t~|P{}t~}W{|[~}e{}f~}b{}c~|a{}c~|a{}c~|a{}c~|X{}w" + "~}M{}w~}M{}w~}M{}w~}Z{|d~}|`{}t~}kv~b{|g~}]{|g~}]{|g~}]{|g~}]{|g~}){|g~|{|w~|h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f" + "{|v~h{}w~}f{|v~|j{|v~|b{}w~}L{|u~}|w{|}v~|W{|w~|Iw~}Qw~x{}x~|V{}y~}x{}s~|X{|v~|wv~}Vx~}v{|x~| D{}x~}I{}w~Q{}x~|" + "xw~U{}w~}w{|v~T{|w~|J{|w~Q{|x~}x{|x~|V{|v~vv~|T{}q~}|Wx~|x{}s~T{|w~I{|w~|R{|x~}x{}x~|Vx~}x{}s~|X{|v~vv~| Fw~}J{" + "|w~|R{|x~}x{|x~}Uv~|w{}w~}Q{|w~|Ww~}Hv~}w{}w~} Pw~}y{|x~}cY~ i{}y~|#{|w~}Qm~|`m~}w{|m~|\\{}v~| ;{}`~} -" + "{|r~x}t~}$v~}R{}x~}vw~}S{|w~t{|x~}U{|y~|_{|w~}w{}w~|n{}x~}_{|t~w}u~|Q{}x~}K{}w~N{}x~}Jx~ +{|w~Xs~y}s~|\\m~}X{}" + "f~\\{}g~}R{|s~}\\{|g~}Y{|i~|`{}c~|_{|s~w}s~}]{|s~x}s~ hr~}r~|[{|f~}Xs~}Y{}d~|\\{|c~}g{}b~|^{}c~|`{}e~_{|a~|g{" + "}w~}hv~|Y{}w~}M{}w~}W{}w~}n{|u~|_{}w~}V{}s~}jr~|h{}s~|lv~c{|p~}q~}^{}f~}_{|p~}q~}`{}e~[{}q~}p~dZ~g{|v~h{}w~}h{|" + "v~|f{|v~p{|v~m{|t~}m{}w~}m{|v~|m{}v~c{}v~jv~}e\\~]{|w~}Nw~}D{|w~|Sp~| ww~|!w~} `{|w~|${}w~}!w~}Cv~Lv~Tw~}Dv~ " + " Ov~ !{}w~}Mw~|N{|v~ :{}v~|s{|v~V{|t}|V{|t~s}w~| p{|v~ {{|v~|t{|v~|Vs~}W{}c~|_{}d~}c{|d~|W{|v~Y{}^~|iv~" + "}r{|v~qv~}f{|p~}q~}${}r~} v{}w~ v{}q~| ?y~}Ps~x}u~,v~k{}w~|Ww~|Su~}v|}w~X{|v~vv~|Z{}v~}y|wy|}v~}[{|}q{}x~} t{}" + "v~}y|wy|}v~}&{}w~|x{|w~}#y|r{}x~}Kw~|R{|w~ {{}p~}v|x~} H{}x~|S{}w~t{}w~|3x|x{}x~|h{|x~}j{|}|x{}x~|h{|x~}`{|w~l{" + "|w~$s~}Ps~}Ps~}Ps~}Ps~}Pr~W{}[~}g{|c~}c{}c~|a{}c~|a{}c~|a{}c~|X{}w~}M{}w~}M{}w~}M{}w~}Z{|b~}a{}s~|lv~c{|p~}q~}_" + "{|p~}q~}_{|p~}q~}_{|p~}q~}_{|p~}q~}+{|p~}q~}w~|g{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}e{}v~jv~}a{}w~}Lu~r{" + "|v~V{|w~J{}x~}Q{}x~|w{}x~Vx~|w{}u~}Vv|vv|U{}x~}x|}w~ Bw~|K{|w~|R{|x~}w{|x~}Vu|vv|S{|w~K{|w~|Qx~}v{}x~Uv|vv|T{|}" + "t~}|Tx~|w{|u~|S{}x~}Jw~}Qw~vw~Vx~|w{}u~}Vv|vv| Dw~|Kw~|Qw~v{}x~|Vv|vv|Pw~|Vw~}Hv|uv| G{|t}|P{|t}|P{|t}|P{|t}|P{" + "|t}|Lw~|xw~c{|[~} iy~}\"u~|S{|l~a{}l~|x{}l~]{}t~ ={|^~} .{|u~}|u{|}w~}$v~}R{}x~}vw~}S{}x~}t{}x~}Xy|y}y~y}x" + "|cw~}u{}w~o{|w~^u~}t{|}y~|Q{}x~}Kw~|N{|w~|T{}sx~s{} 4{}x~}Y{}v~}|v{}u~\\m~}X{}v~y}|wy|s~]{}x~}x|v{|}t~}Sr~}\\{" + "|v~k|Z{|t~}|v{|y}y~|`h|u~^t~|u{|}u~|^u~}|v{|}v~} iv~y|v{|t~]{|o~y}p~|[{|r~|Z{}w~}q|}s~]{|s~}|t{|}u~}g{}w~}r|y" + "}q~}_{}w~}h|_{}w~}j|`{|s~}|s{|}t~|g{}w~}hv~|Y{}w~}M{}w~}W{}w~}o{}u~|^{}w~}V{}r~k{|r~|h{}r~lv~d{|t~}|uy|s~_{}w~}" + "s|y}t~}a{|t~}|uy|s~a{}w~}s|y}s~]{}u~}|ty|}v~dn|}v~}n|g{|v~h{}w~}gv~}f{}w~}ov~|n{|t~}mv~|l{}v~|o{|v~|bv~}l{}v~dc" + "|u~}]{|w~}N{}w~D{|w~|T{}o~| x{|w~!w~} `{|w~|${}w~ w~} >w~}Dv~ Ov~ !{}w~|Mw~|M{}w~ :v~|q{}w~|Xp~}X{}v~|p{|" + "}| o{}w~| v~|r{|v~W{|r~|X{}v~}i|^{}w~}h|d{|s~}y|xy|}s~}[{|y}u~y}y|]{}w~}h|v~|iv~}r{|v~qv~}g{|t~}|uy|s~&{}p" + "~} w{}w~ w{}o~| @y~}Q{}v~}|u{|}y~,{|w~}m{|w~}Vw~|T{|v~|s{|}~({|w~}|o{|}w~|P{}x~| w{|w~}|o{|}w~|(x~}tw~ rw~K{}x" + "~|Rw~ {{}o~}w{|x~} H{}x~|T{|w~r{}x~}-{}x~|hw~|d{}x~|hw~|_{}x~|mw~|%{|r~|R{|r~|R{|r~|R{|r~|R{|r~|R{}r~|Y{|v~|y{|" + "v~}h|h{|s~}|t{|}u~}c{}w~}h|`{}w~}h|`{}w~}h|`{}w~}h|W{}w~}M{}w~}M{}w~}M{}w~}Z{|v~r|x}q~b{}r~lv~d{|t~}|uy|s~a{|t~" + "}|uy|s~a{|t~}|uy|s~a{|t~}|uy|s~a{|t~}|uy|s~-{|t~}|u{|}q~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}dv~}l{}v~`" + "{}w~}M{|v~p{}w~|V{}x~}L{}x~}Q{|x~|ux~}Wx~|v{|w~} {{}q~| Aw~|Lw~|Qw~u{}x~| y{|x~}Lw~|Q{}x~tx~}#{|}r~}Rx~u{|}y~}|" + "Q{}x~}L{}x~}Q{}x~|v{|x~}Wx~|v{}w~} j{|w~L{}x~}Q{}x~|u{}x~ x{}x~}Uw~} b{|}p~}|V{|}p~}|V{|}p~}|V{|}p~}|V{|}p~}|" + "P{|w~|xx|av~|fv~| j{|y~|#{}t~Sk~|c{|k~}y{|k~}_{|s~} ?{}t~}y| u{|u~|p{}y~}$v~}R{}x~}vw~}Sw~|tw~|[{|}m~}|h{" + "|w~sw~|p{}x~|_{}v~|q{|}|Q{}x~}L{}w~Lw~}U{}y~|ux~u{|y~}U{|x}| `w~|Z{|v~}s{|v~}]w~y}y|{}w~}X{}x~|p{|u~|^y}|n{|u~" + "|U{}x~y}w~}\\{|w~}K{|u~}o{}|Mv~|_{}v~}q{|u~_{}v~}r{|v~| jy~}|qu~|_{}t~}y|s{|}t~}\\{}w~}w~}Z{}w~}o{|u~}_{|t~|n" + "{|}x~}g{}w~}n{|}t~}`{}w~}L{}w~}P{|t~}m{|}w~|g{}w~}hv~|Y{}w~}M{}w~}W{}w~}p{}u~|]{}w~}V{}w~}w~|l{}r~|h{}r~|mv~e{|" + "u~}|p{|t~`{}w~}q{|}u~|c{|u~}|p{|t~b{}w~}p{}u~|_{|u~|n{|}y~W{|v~|Z{|v~h{}w~}g{|v~fv~|o{}w~}n{}x~}w~mv~|kv~}ov~}a" + "{|v~|n{|v~|M{}v~}\\{|w~}N{|w~|E{|w~|U{}v~}{|u~| x{|x~}\"w~} `{|w~|$v~ w~} >w~}Dv~ Ov~ !v~Lw~|M{}w~| <{|w~" + "}p{|w~}Xn~|Zv~ _{|v~ !{|w~}p{}w~}X{}w~}w~}W{}v~|M{}w~}R{|t~|p{|t~|_{|}l~}|`{}w~}hv~|iv~}r{|v~qv~}h{|u~}|p{|" + "t~({}n~} x{}w~ x{}m~| Ay~}R{|v~}p{}+{}w~|nv~Uw~|T{}w~| x{|w~|k{|w~|Q{|x~| x{|w~|k{|w~|*{|x~rx~|R{|w}Fw~Kw~|S{}" + "x~| {|n~}w{|x~} H{}x~|T{}x~}qw~|.{}x~|i{}x~}c{}x~|i{}x~}^{}x~|n{}x~}${}w~}w~}R{}w~}w~}R{}w~}w~}R{}w~}w~}R{}w~}w" + "~}Rv~|w~}Y{}w~}x{|v~U{|t~|n{|}x~}c{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~n{|}s~c{}r~|mv~e{|u~}|p{|" + "t~c{|u~}|p{|t~c{|u~}|p{|t~c{|u~}|p{|t~c{|u~}|p{|t~/{|u~}|p{}t~}e{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}d{|v" + "~|n{|v~|`{}w~}M{}w~}ow~}U{}x~|N{|w~Px~}t{|x~|Xx|sy| w{}s~| @{|w~M{}x~|Q{}x~|tw~ x{}x~}N{}x~|Q{|x~|t{|x~|&{}t~}v" + "~} t{}x~|N{|x~}Q{|x~}t{}x~|Xx|sy| g{|x~}N{|x~}Q{|x~}sx~} {{|x~}Tw~} d{|j~|Z{|j~|Z{|j~|Z{|j~|Z{|j~|R{|w~Z{}w~}" + "g{}w~} Ay|J{}y~#{|s~}Tk~}c{}j~|{}j~_q~| A{}u~} q{}v~|n{}~}$v~}R{}x~}vw~}Sw~t{|w~\\{|h~|i{}x~}s{}x~}q{|x~}^" + "v~|C{}x~}Lw~}L{}w~V{|v~|wx~w{|v~|V{}w~ a{|w~Yv~}q{|v~|^{}y|u{}w~}Xy}|m{|u~M{|v~}V{|w~|}w~}\\{|w~}Ku~|?{|v~^u~o" + "{}v~|a{|v~}p{}v~ j{~|nv~}`u~}|l{|}u~]v~{v~Z{}w~}mu~_u~}j{|y~}g{}w~}l{|}u~}a{}w~}L{}w~}Q{|u~}i{|}y~|g{}w~}hv~|" + "Y{}w~}M{}w~}W{}w~}q{}u~|\\{}w~}V{}w~|w~}lw~|v~|h{}q~mv~f{|u~}m{|u~}a{}w~}o{}v~}d{|u~}m{|u~}c{}w~}o{|u~_{}v~|j{|" + "W{|v~|Z{|v~h{}w~}fv~|h{}v~n{}w~}nw~|w~|o{|v~j{|v~}q{}v~_{}v~nv~}M{|u~[{|w~}Mw~}E{|w~|V{}v~}x{|u~| vw~} `{|w~|$" + "w~} w~} >w~}Dv~ Ov~ !v~Lw~|M{}w~| <{}w~|ow~}Xm~|[v~ ^v~| \"v~|p{|v~Xv~{v~V{}v~|N{}w~}Ru~}l{}u~|b{|g~}" + "|b{}w~}hv~|iv~}r{|v~qv~}i{|u~}m{|u~}*{}l~} y{}w~ y{}k~| By~}R{}v~ y{|w~}o{|w~}Uw~|T{}w~ x{|x~}g{}x~|R{|x~} y{|" + "x~}g{}x~|+{}y~}r{}y~}R{}w~Fx~}M{|}w~ Mm~}w{|x~} H{}x~|Tw~p{}x~|.{}x~|j{|w~b{}x~|j{|w~]w~n{|w~#v~{v~Rv~{v~Rv~{v~" + "Rv~{v~Rv~{v~S{|w~}{}w~|Zv~|x{|v~Uu~}j{|y~}c{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~k{}t~d{}q~mv~f{|" + "u~}m{|u~}e{|u~}m{|u~}e{|u~}m{|u~}e{|u~}m{|u~}e{|u~}m{|u~}1{|u~}m{|u~}e{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w" + "~}c{}v~nv~}_{}w~}Mv~n{}w~Tw}N{|x}P{|x}r{|x} F{|}x~}| ={|x}|O{|x}|Px}|s{|x}| xw|Nw|Pw|rw|'{|v~}|y{|v~} tw}Nw}P{|" + "x}rx}| 6w|Nw|Ox|rw| Nw~} e{}h~}\\{}h~}\\{}h~}\\{}h~}\\{}h~}S{|w~Z{|v~gv~| Ay~}L{|y~}${|q~}V{|j~ci~}|i~|a{}p~|" + "Oy|Uw|jw|Vu|Wv|kw|b{}v~} p{|v~|l{|}$v~}R{}x~}vw~}T{|x~}t{|x~}]{|g~|i{}x~|s{|w~qw~|^v~B{}x~}M{|w~|L{|w~}V{|}" + "w~}xx~x{}w~}|U{}w~ a{}w~Z{|v~o{}w~}U{}w~}X{|j{}v~|M{}v~Vw~}{}w~}\\{|w~}L{|v~|>v~}_{|v~|nv~}a{}v~nv~| \\{}w~}" + "b{|u~|h{|}v~|`{|w~}{}w~|[{}w~}m{|v~|a{}v~}gy}g{}w~}j{}u~|b{}w~}L{}w~}Q{}v~}f{|~|g{}w~}hv~|Y{}w~}M{}w~}W{}w~}r{}" + "u~|[{}w~}V{}w~y|w~m{|w~{v~|h{}w~}v~|nv~f{}v~}ju~|b{}w~}nu~d{}v~}ju~|d{}w~}n{}v~|`v~}D{|v~|Z{|v~h{}w~}f{}w~}hv~}" + "n{|v~o{|w~{}x~}o{}w~}i{}v~|s{|v~|^v~}p{}v~M{|u~|[{|w~}M{}x~}E{|w~|W{}v~|v{|u~| ww~} `{|w~|$w~} w~} >w~}Dv~ " + "Ov~ !v~Lw~|M{|w~| <{}w~|ow~}Xy~}w|}t~[v~| _{}w~} #{|w~}n{}w~|Z{|w~}{}w~|Vu~|O{}w~}S{}v~}j{}u~c{}d~|c{}w~" + "}hv~|iv~}r{|v~qv~}i{}v~}ju~|,{}v~y}w~|v~} {{}w~ {{}v~y}w~|u~| Cy~}R{}w~}R{|ey|_{}w~|pv~Tw~|T{}w~ y{|x~}e{}x~|\\" + "{|}p~} {{|x~}e{}x~|,{}y~}r{}y~}R{}w~G{}x~|Rq~| N{|m~}w{|x~} H{}x~|U{|w~p{|x~}.{}x~|j{}x~|b{}x~|j{}x~|_{|w~|n{}" + "x~|${|w~}{}w~|T{|w~}{}w~|T{|w~}{}w~|T{|w~}{}w~|T{|w~}{}w~|T{}w~|{|w~}[{|v~w{|v~V{}v~}gy}c{}w~}M{}w~}M{}w~}M{}w~" + "}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~j{|u~}e{}w~}v~|nv~f{}v~}ju~|f{}v~}ju~|f{}v~}ju~|f{}v~}ju~|f{}v~}ju~|c{}d{}|d{}v~}" + "k{}u~|f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}bv~}p{}v~^{}m~y}|Yv~o{|}w~ Py~}|u{|v~} 2w~} f{" + "}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~T{|w~Yv~|i{|v~ A{}x~}M{}y~|$o~|W{|j~ch~}i~}" + "b{}n~T{|}t~y}|Zw~}kw~}X{}u~|X{}w~|m{}w~|d{|v~| ov~}j{|$v~}R{}x~}vw~}T{}x~}t{}x~}]u~}|{|y~|y{|y}x~|iw~|rw~r{" + "}x~}]v~B{}x~}Mv~Jv~T{|}w~|{x~{|w~}|S{}w~ aw~}Z{}w~}o{|v~U{}w~}Ev~}M{|v~W{}w~y{}w~}\\{|w~}Lv~}>{|v~|_{|v~m{}w~}" + "av~|n{|v~ 8{|y}6{|~|4{}v~c{|v~}d{|v~`{}w~|{|w~}[{}w~}lv~|b{|v~}e{|g{}w~}i{}u~b{}w~}L{}w~}R{|v~}dy|g{}w~}hv~|Y{}" + "w~}M{}w~}W{}w~}s{}u~Y{}w~}V{}w~|{w~|nw~}{v~|h{}w~y|v~nv~g{|v~}i{|u~b{}w~}n{|v~|f{|v~}i{|u~d{}w~}n{|v~|a{|v~C{|v" + "~|Z{|v~h{}w~}f{|v~|j{|v~|mv~|p{|w~{|x~}ov~|hv~}sv~}]{|v~|r{|v~|Mu~|Z{|w~}M{|w~E{|w~|X{}v~|t{|u~| xw~} `{|w~|$w" + "~} w~} >w~}Dv~ Ov~ !w~}Lw~|M{|w~| {|v~]{|v~m{}w~}b{|w~}l{}w~}W{|v}M{}v~D{}r~}6{|r~}|>{|v~|e{}w~|^{|w~|dv~w{|v~\\{}w~}lv~|c{}v~N{}w~}g{}v~|d{" + "}w~}L{}w~}S{}v~L{}w~}hv~|Y{}w~}M{}w~}W{}w~}vu~}V{}w~}V{}w~|yw~}pw~}yv~|h{}w~|y{}w~}pv~h{}v~e{}v~|d{}w~}mv~}g{}v" + "~e{}v~|f{}w~}mv~}a{|v~C{|v~|Z{|v~h{}w~}dv~|l{|v~k{|v~q{|w~x{}x~}q{}w~}e{}v~wv~}Y{|v~|v{|v~|N{|v~}W{|w~}L{|w~F{|" + "w~|[{}v~l{}v~ S{|}k~|Zw~}y{|o~}V{|k~|\\{|o~}y{|w~|\\{|m~}X{}k~}Y{|o~}y{|w~|`w~}y{|o~}Sv~Lv~Tw~}o{|v~}Wv~_w~}y{|" + "o~|v{|o~|ew~}y{|o~}Y{|}n~}|[w~}y{|o~}Y{|o~}y{|w~|Zw~}y{|r~|[{}j~[{}i~]{|w~|m{}w~|b{}w~|k{|w~}i{|w~}q{|u~|q{|w~|" + "h{|v~|o{|v~}b{}w~|k{|w~}`d~Uw~}Lw~|M{|w~| n{|o~}vw~|av~o{}w~|M{|v~[{|o~}|U{}k~}]w~}y{|o~}_u~|k{|w~}Wu~X{|w~|m{" + "}w~|dv~|h{|v~_{}x~}x{}s~}__~|dv~t{}w~t{|w~}\\{}n~}Y{|}e~}f{|`~b{|w~}l{}w~|\\v~w{|v~T{|u~R{}w~}U{}v~dv~}i{}u~u{|" + "v~u{|u~|g{}w~}hv~|iv~}r{|v~qv~|k{}v~e{}v~|c{~}I{|y~}w{}w~w{|y~}I{}~|U{}w~T{}~|k{}~|\\y~}w{}w~w{|y~| v~}P{}k~Z{|" + "v~S{|v~}x{|}v~}|y{|v~}^{|w~}u{|w~}Rw~|S{|u~}${}y~|v{}v~}|wy|}y~u{|y~}c{|x~}r{|x~}Q{|q{| W{}y~|uw~vy|v~u{|y~}-w~" + "|v{|w~Q{}w~K{|w~|I{|w~'{|w~|m{}w~|a{}m~}w{|x~} H{}x~|U{|x~}p{|x~}]{|q{|X{}x~|m{|w~_{}x~|m{|w~]{|}w~}q{|w~Pv~|Sv" + "~w{|v~Vv~w{|v~Vv~w{|v~Vv~w{|v~Vv~w{|v~W{|v~vv~^{|v~|v{|v~X{}v~J{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z" + "{|v~g{|v~}g{}w~|y{}w~}pv~h{}v~e{}v~|j{}v~e{}v~|j{}v~e{}v~|j{}v~e{}v~|j{}v~e{}v~|g{|u~l{}v~}g{}v~kw~}{}v~g{|v~h{" + "}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}`{|v~|v{|v~|\\{}w~}s|y}t~}_w~}u{|v~|Y{|}k~|Z{|}k~|Z{|}k~|Z{|}k~|Z{|}k~|Z{|" + "}k~|d{|}k~|v{|m~}_{|k~|[{|m~}W{|m~}W{|m~}W{|m~}Rv~Lv~Lv~Lv~Q{|}l~\\w~}y{|o~}Y{|}n~}|X{|}n~}|X{|}n~}|X{|}n~}|X{|" + "}n~}|S{}u~S{|}n~}{|x~}a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|b{}w~|k{|w~}aw~}y{|o~}^{}w~|k{|w~} X{|w~}" + "t{}w~t{|w~}f{|w~}h{|w~}f{|w~}yy|p{|}y{|w~}f{|w~}ly|y{|w~}f{|w~}h{|w~}X{}x~}X{|v~kv~| Cv~|Lx~&{|i~|Y{|m~}bU~|e{}" + "h~\\{|u~}|xy|}u~^w~}kw~}Yr~}X{}w~}ov~d{}w~ lv~| lv~}R{}x~}vw~}^{}Z~f{|w~|v{|y~|`w~|s{|w~tw~|[{|v~|D{}x~}Nw~" + "}H{}w~|Q{|t~|N{}w~ c{|w~|Zv~|lv~|W{}w~}E{}w~}M{}w~}Z{|w~|w{}w~}\\{|w~}N{|v~={}w~}\\v~|nv~|b{}w~}l{}v~W{}v~M{}v" + "~G{|}p~|6{|o~}@u~e{|w~|\\{}w~e{|w~}v{}w~|]{}w~}m{|v~|cv~}N{}w~}g{|v~}d{}w~}L{}w~}Sv~}L{}w~}hv~|Y{}w~}M{}w~}W{}w" + "~}x{|u~}U{}w~}V{}w~|y{}w~q{|w~|yv~|h{}w~|y{|v~pv~hv~}e{|v~}d{}w~}mv~}gv~}e{|v~}f{}w~}mv~}a{|v~|D{|v~|Z{|v~h{}w~" + "}d{}w~}l{}w~}jv~|r{|w~x{|x~}qv~|e{|v~}y{}v~W{}v~vv~}N{|u~V{|w~}Kw~|G{|w~|\\{}w~}j{}v~ T{}i~}[w~}{}m~}X{}j~|]{}m" + "~}{|w~|]{}j~Y{}k~}Z{}m~}{|w~|`w~}{|l~Tv~Lv~Tw~}p{}v~}Vv~_w~}{|m~|x{|m~|fw~}{|m~}[{|j~|\\w~}{}m~}[{}m~}{|w~|Zw~}" + "{|q~|\\{}i~[{}i~]{|w~|m{}w~|b{|w~}k{}w~|hw~}q{|u~}q{}w~|g{}v~ov~}a{|w~}k{}w~|`d~Uw~}Lw~|M{|w~| Gy|l{|Z{}m~}x{|w" + "~`v~p{|v~Kv~Z{|m~|X{}j~}]w~}{|l~`t~|l{}w~|X{|u~}Y{|w~|m{}w~|e{}v~f{}w~}b{|v~}y{|q~}`_~|dv~t{}w~t{|w~}^{|k~}[{|c" + "~}f{|`~b{}w~}l{}w~}]{|w~}vv~|T{|v~}S{}w~}Uv~}d{}v~j{|u~t{|v~t{|u~g{}w~}hv~|iv~}r{|v~r{|v~|kv~}e{|v~}dx~}I{|}v{}" + "w~v{|}I{}x~|V{}w~U{}x~|m{}x~|\\{|v{}w~vy| {{v~}R{|i~Z{|v~R{|v~}|q~}|v~}\\v~u{}w~Qw~|R{|t~|'{|y~}v{}w~}p{|t{}y~|" + "d{}x~|r{|x~}Ry}r{|~ X{|y~}tw~sw~|u{}y~|.{|w~}x|}w~|Q{}w~L{|w~|G{|x~}({|w~|m{}w~|a{}m~}w{|x~} H{}x~|U{|w~p{|x~}]" + "{~|r{|}Y{}x~|mw~|_{}x~|m{}x~|[{|w~|r{}x~|Pv~|T{|w~}v{}w~|X{|w~}v{}w~|X{|w~}v{}w~|X{|w~}v{}w~|X{|w~}v{}w~|X{}w~}" + "v{}w~}_{}w~}u{|v~Xv~}J{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~fu~g{}w~|y{|v~pv~hv~}e{|v~}jv~}e{|v~}" + "jv~}e{|v~}jv~}e{|v~}jv~}e{|v~}f{|u~n{}v~}fv~}l{}x~}y{|v~|h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}_{}v~vv~}[" + "{}w~}q{|}u~|`w~}uv~W{}i~}[{}i~}[{}i~}[{}i~}[{}i~}[{}i~}e{}i~}x{}k~}a{}j~|\\{}j~Y{}j~Y{}j~Y{}j~Sv~Lv~Lv~Lv~R{}j~" + "}]w~}{|m~}[{|j~|Z{|j~|Z{|j~|Z{|j~|Z{|j~|T{}u~T{|f~`{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|b{|w~}k{}w~|a" + "w~}{}m~}_{|w~}k{}w~| Xw~}s{}w~s{}w~fw~}f{}w~fw~}y{|y~|r{|y~}y{}w~fw~}l{|y~}y{}w~fw~}f{}w~X{}x~}Wv~|m{|v~ C{}w~}" + "[{|}|o{|y~|&g~|Y{}n~|b{}V~e{|g~}]v~}r{|v~}_w~}kw~}Z{|r~}X{|v~p{|w~}dw~} pw|v~l| {{v~}R{}x~}vw~}^{}Z~f{|w~|v" + "{|y~|`{}x~}s{|x~}u{}x~}Y{}v~|E{}x~}O{|w~}H{}w~|S{|}r~}|P{}w~ c{|w~Yv~|lv~|W{}w~}Ev~|N{|v~|Zw~}v{}w~}\\{|w~}|}v" + "~y}|X{}w~}>{|v~|\\{}w~}o{|v~a{}w~}l{}v~W{}v~M{}v~J{|}p~}|2{|}p~}|D{}v~|e{}x~}p{|}w~}|vx|uw~|f{}w~|v{|w~}]{}w~}m" + "{}v~c{|v~|N{}w~}fv~}d{}w~}L{}w~}T{|v~|L{}w~}hv~|Y{}w~}M{}w~}W{}w~}y{|u~}T{}w~}V{}w~|y{|w~|r{}x~}xv~|h{}w~|x{}w~" + "}qv~i{|v~|dv~}d{}w~}mv~}h{|v~|dv~}f{}w~}n{|v~|`u~D{|v~|Z{|v~h{}w~}d{|v~m{|v~|j{}w~}r{}x~}x{|w~qv~|d{}v~y|v~|Vv~" + "}x{}v~Mu~|V{|w~}K{}x~}G{|w~|]{}w~}h{|v~ U{}u~v}s~}\\w~}|v~w}t~}Zr~v}v~|^{}t~w}v~}|w~|^{}t~v}t~Zv}v~s}[{}t~w}v~}" + "|w~|`w~}|u~x}t~}Uv~Lv~Tw~}q{}v~|Uv~_w~}|v~x}s~y{|v~x}s~fw~}|u~x}t~}]{|s~x}s~|]w~}|v~w}t~}]{|t~w}v~}|w~|Zw~}|t~}" + "x~|]{}t~u}u~[{|x}v~q}]{|w~|m{}w~|av~kv~g{}w~q{}t~qv~e{}v~q{}v~_v~|m{|v~_d~Uw~}Lw~|M{|w~| J{|}v~}r{}v~}|_{}u~w}u" + "~|y{}x~}`v~q{|v~}K{}w~|\\{}w~}p~}Z{}s~w}u~}]w~}|u~x}t~}as~m{|v~W{}t~Y{|w~|m{}w~|ev~|f{|v~c{|u~}yn~a_~|dv~t{}w~t" + "{|w~}_{|t~w}t~}]{|b~}f{|`~b{}w~|l{}w~}]{}w~|v{|w~}S{|v~}T{}w~}Uv~|d{|v~|k{}v~|t{|v~s{}v~|h{}w~}hv~|i{}w~}r{|v~r" + "{|v~|l{|v~|dv~}ev~}C{}w~C{}v~|W{}w~V{}v~n{|v~|W{}w~ sv~}S{|s~}y~x}v~Z{|v~Q{|e~}[{|w~}w{|w~}Qw~|R{}r~|){}y~|w{|w" + "~}g{|y~}dw~q{}x~}S{}~}s{}y~ X{}y~|tw~s{}x~}u{|y~}-{}p~}P{}w~M{|w~|F{|x~}({|w~|m{}w~|a{}m~}w{|x~} H{}x~|Tw~p{}x~" + "|]y~}s{|y~Z{}x~|n{|x~}^{}x~|n{|w~Y{|x~}s{|x~}Ov~|T{}w~|v{|w~}X{}w~|v{|w~}X{}w~|v{|w~}X{}w~|v{|w~}X{}w~|v{|w~}Xv" + "~u{|v~_v~|u{|v~Y{|v~|J{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{}v~g{}w~|x{}w~}qv~i{|v~|dv~}k{|v~|d" + "v~}k{|v~|dv~}k{|v~|dv~}k{|v~|dv~}e{|u~p{}v~}f{|v~|m{}w~wv~}h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}^v~}x{}v" + "~Z{}w~}o{}v~}`w~}v{|w~|W{}u~v}s~}\\{}u~v}s~}\\{}u~v}s~}\\{}u~v}s~}\\{}u~v}s~}\\{}u~v}s~}f{}u~v}s~}{s~w}t~}cr~v}" + "v~|]{}t~v}t~[{}t~v}t~[{}t~v}t~[{}t~v}t~Tv~Lv~Lv~Lv~S{}h~|^w~}|u~x}t~}]{|s~x}s~|\\{|s~x}s~|\\{|s~x}s~|\\{|s~x}s~" + "|\\{|s~x}s~|U{}u~U{|s~x}q~|`{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|av~|m{|v~`w~}|v~w}t~}_v~|m{|v~ X{|w~" + "r{}w~rw~}h{|w~dw~}h{|w~y{|w~|t{|w~}yw~}h{|w~l{|w~}yw~}h{|w~dw~}Y{}x~}W{}w~}m{}w~} Xg|}v~s|e{|}x~}o{}y~&{}f~Y{|o" + "~}a{|V~f{|e~}_{|w~}p{|v~_w~}kw~}Z{}w~}v~Wv~|q{}w~}e{|w~ pc~} {{v~}R{|x}|v{|x}|^{}Z~f{|w~|v{|y~|`{|w~s{}x~}v" + "{|w~Wu~|F{|x}|O{}w~|H{|w~}U{|}w~|x~|w~}|R{}w~ c{}x~}Yv~|lv~|W{}w~}F{|v~N{|v~}Z{}w~u{}w~}\\{|k~}Z{}w~}x{|}u~y}|" + "L{}v~Zv~|pv~}a{|v~l{}v~|X{}v~M{}v~M{|}p~}|,{|}p~}|H{}v~|e{|w~q{|q~}y{}x~|v{|x~}fv~tv~]{}w~}n{}v~|c{|v~|N{}w~}f{" + "}v~d{}w~}L{}w~}T{}v~|L{}w~}hv~|Y{}w~}M{}w~}W{}w~}{|u~}S{}w~}V{}w~|xw~}rw~|xv~|h{}w~|x{|v~|rv~i{|v~|d{}v~d{}w~}n" + "{|v~|h{|v~|d{}v~f{}w~}n{}v~|`{}v~}|F{|v~|Z{|v~h{}w~}cv~|n{}v~i{}w~}rw~|ww~|s{|v~b{}q~}U{|v~|{|v~|N{}v~|U{|w~}K{" + "|w~G{|w~|^{}w~}f{|v~ V{}y~}|r{|u~|]r~|u{|u~}\\{}u~}s{|}y~|_{|u~|u{|}s~|_{}v~}|t{}v~}Vw~}T{|u~|u{|}s~|`r~|u{|u~|" + "Vv~Lv~Tw~}ru~|Tv~_r~|v{|}v~}{w~|u{}v~}gr~|u{|u~|^u~}|v{|}u~]r~|u{|u~|_{|u~|u{|}s~|Zr~}|v{|\\v~}|r{|}y~Wv~S{|w~|" + "m{}w~|a{}w~|m{|w~}g{}w~|rs~qw~}dv~}s{|v~|_{}w~}m{}w~|Nu~Uw~}Lw~|M{|w~| K{}r~u{|r~}a{|v~}|v{}v~yw~|`v~r{|u~|K{|w" + "~|]{}w~|xy|}t~}[u~}|s{|}~}]r~|u{|u~|ay|v~|n{}w~|X{|s~|Z{|w~|m{}w~|f{|v~dv~|e{|u~}|{|v~y|}v~}bx}u~q}u~x}|dv~t{}w" + "~t{|w~}_u~|u{|u~|_{|u~}|v{|}t~v}f{|q}u~p}b{}w~|l{|v~]v~tv~R{}v~}U{}w~}V{|v~|cv~}l{|v~}s{|v~s{|v~}h{}w~}hv~|i{}v" + "~r{|v~r{|v~|l{|v~|d{}v~fu~|C{}w~C{|u~|X{}w~W{}v~}m{}v~|X{}w~ sv~}T{|u~}|yy~}x{|}y~Z{|v~P{|g~}Y{}w~|xv~Pw~|T{|v~" + "}u~}*x~v{}w~ex~dw~qw~}U{|x~}t{}x~ Xx~sw~s{}x~}tx~,{|r~|O{}w~N{|w~|Dw~({|w~|m{}w~|a{|m~}w{|x~} H{}x~|T{}x~}qw~|]" + "x~}t{|x~|\\{}x~|nw~]{}x~|nw~|Xw~sw~|Ov~|Tv~tv~Xv~tv~Xv~tv~Xv~tv~Xv~tv~Y{|w~}tv~|a{|v~t{|v~Y{|v~|J{}w~}M{}w~}M{}" + "w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{|v~|h{}w~|x{|v~|rv~i{|v~|d{}v~k{|v~|d{}v~k{|v~|d{}v~k{|v~|d{}v~k{|v~|d{" + "}v~d{|u~r{}v~}e{|v~|n{}w~v{}v~h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}^{|v~|{|v~|Z{}w~}nu~`w~}v{}w~V{}y~}|r" + "{|u~|]{}y~}|r{|u~|]{}y~}|r{|u~|]{}y~}|r{|u~|]{}y~}|r{|u~|]{}y~}|r{|u~|g{}y~}|r{|o~}|u{|}v~}e{}u~}s{|}y~|^{}v~}|" + "t{}v~}]{}v~}|t{}v~}]{}v~}|t{}v~}]{}v~}|t{}v~}Uv~Lv~Lv~Lv~T{}u~}|v{|}v~}^r~|u{|u~|^u~}|v{|}u~\\u~}|v{|}u~\\u~}|v" + "{|}u~\\u~}|v{|}u~\\u~}|v{|}u~U{}u~Uu~}|u{}u~|_{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{}w~}m{}w~|`r~|u{" + "|u~|`{}w~}m{}w~| Xw~|r{}w~r{|w~hw~|d{|w~hw~|yu~|v{|u~y{|w~hw~|m{|u~y{|w~hw~|d{|w~Y{}x~}Vv~mv~| XZ~}g{}t~oy~}'{}" + "e~}Y{}p~_W~|fc~|`v~n{}w~|`w~}kw~}Zv~|}w~|X{}w~}qv~|e{}x~} q{|c~| {{v~} y{|x~}t{}x~}]{|w~}v{|y~|_w~|u{|w~|vw" + "~|Wt~ p{}w~|H{|v~V{}w~}yx~y{}w~}S{}w~ cw~|Z{|v~k{}w~}W{}w~}Fv~}Qy|u~}Z{|w~|u{}w~}\\{|i~|\\v~|y{}p~}|Nv~}Z{|v~|" + "s{|v~}`{|v~lu~|X{}v~M{}v~P{|}p~}|b{|Z~}b{|}p~}|L{}v~}d{}x~|r{|n~{}x~|uw~|h{}w~}t{}w~|^{}w~}q{|}u~}b{}v~M{}w~}f{" + "}v~d{}w~}L{}w~}T{}v~K{}w~}hv~|Y{}w~}M{}w~}W{}w~}|u~}R{}w~}V{}w~|x{|w~s{}w~wv~|h{}w~|w{}w~}rv~i{}v~c{}v~d{}w~}n{" + "}v~|h{}v~c{}v~f{}w~}o{|u~_{|t~}|H{|v~|Z{|v~h{}w~}c{}v~nv~}i{|v~s{|w~|w{}x~}s{}w~}b{|q~S{}v~|v~}N{}v~}T{|w~}K{|w" + "~|H{|w~| s{}|m{}w~}]t~}q{}v~|^{}v~}ny|_u~q{}t~|`{|v~|q{|v~|Ww~}Tu~q{|t~|`t~}r{|v~}Vv~Lv~Tw~}t{|u~Rv~_t~}r{}v~}" + "y~}r{}v~gt~}r{|v~}_{}v~|r{|v~}^s~q{}v~_{}v~|r{}t~|Zs~T{|w~}m{|Wv~S{|w~|m{}w~|a{|w~}mv~|g{|w~}s{|s~|s{|w~|d{|v~|" + "u{|v~}]v~mv~N{}v~Tw~}Lw~|M{|w~| L{}p~w{|p~}bv~}s{}w~y|w~_v~wx|}t~}J{|w~}^{}w~r{}u~|]{|v~|Ot~}r{|v~}_{|v~nv~W{}s" + "~}Z{|w~|m{}w~|f{}w~}d{}w~}eu~}x{|w~|x{}v~|`{|w~}q{|w~}`v~t{}w~t{|w~}`{}v~q{}v~_u~}r{|v~}V{|w~}Wv~|l{|v~^{}w~}t{" + "}w~|R{}v~}V{}w~}V{|v~bv~}l{|v~|s{|v~r{}v~h{}w~}hv~|i{}v~r{|v~r{}v~k{}v~c{}v~gu~|B{}w~B{|u~|Y{}w~X{}v~}k{}v~|Y{}" + "w~ sv~}Tu~|wy~}u{|Z{|v~O{|u~}|x{|}v~}_{|p~}y{|p~}Ww~|Tw~}y{|t~|,y~}vw~|e{}y~dw~|s{}w~}V{|w~}u{}w~ Xy~}sw~s{}x~}" + "t{}y~*y}x~}|[m|}w~l|^{}w~C{|x~}({|w~|m{}w~|`m~}w{|x~} H{}x~|T{|w~|s{}x~}\\w~}u{|w~|]{}x~|o{}x~}]{}x~|o{}x~}Ww~t" + "{}x~}Nv~|U{}w~}t{}w~|Z{}w~}t{}w~|Z{}w~}t{}w~|Z{}w~}t{}w~|Z{}w~}t{}w~|Z{}w~|t{|w~}av~}t{|v~Y{}v~I{}w~}M{}w~}M{}w" + "~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{|v~|h{}w~|w{}w~}rv~i{}v~c{}v~k{}v~c{}v~k{}v~c{}v~k{}v~c{}v~k{}v~c{}v~c{|" + "u~t{}v~}d{}v~n{|w~|v{|v~h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}]{}v~|v~}Y{}w~}n{|v~|aw~}vv~V{}|m{}w~}]{}|m" + "{}w~}]{}|m{}w~}]{}|m{}w~}]{}|m{}w~}]{}|m{}w~}g{}|m{}r~|q{|v~|g{}v~}ny|_{|v~|q{|v~|_{|v~|q{|v~|_{|v~|q{|v~|_{|v~" + "|q{|v~|Vv~Lv~Lv~Lv~U{|v~}q{|v~|_t~}r{|v~}_{}v~|r{|v~}^{}v~|r{|v~}^{}v~|r{|v~}^{}v~|r{|v~}^{}v~|r{|v~}V{}u~V{}v~" + "|r{|v~}_{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|`v~mv~_s~q{}v~_v~mv~ X{|w~q{}w~q{}x~|j{|w~b{}x~|j{|w~wu~" + "|x{|u~|x{}x~|j{|w~m{|u~|x{}x~|j{|w~b{}x~|Z{}x~}V{}w~|o{|v~ WZ~}gx~}w~|q{}y~|({|c~}_v|{}r~u|d{}X~f{}b~|b{|w~}mw~" + "}`w~}kw~}[{|v~{}w~}X{|w~}r{|v~d{}x~| q{}c~ yv~} y{}x~}t{}x~}\\v~}w{|y~|_{}w~|vw~}v{|x~}X{|r~ qv~Fv~X{}w~}|x" + "x~x{|}w~}U{}w~ d{|w~Y{|v~k{}w~}W{}w~}G{}v~|Xm~}Y{}x~}t{}w~}\\{|h~}]v~y|l~}P{|v~|Y{|u~u|}v~}_{|v~|n{|u~|X{}v~M{" + "}v~R{|o~}|`{|Z~}_{|}p~}|P{}v~}cw~r{|l~}x~|u{|x~|hv~|t{|v~^{}e~}a{}v~M{}w~}f{|v~|e{}d~|_{}g~|d{}v~K{}^~|Y{}w~}M{" + "}w~}W{}p~|Q{}w~}V{}w~|ww~|tw~}wv~|h{}w~|vv~|sv~i{}v~c{|v~|e{}w~}o{|u~g{}v~c{|v~|g{}w~}p{|u~|^{}q~y}|M{|v~|Z{|v~" + "h{}w~}c{|v~|p{|v~gv~|t{|w~v{|x~}sv~|a{|s~|Rq~}N{}v~}S{|w~}Jw~}H{|w~| bv~|^t~ov~}^v~}P{|v~|p{}u~|`v~|o{|v~Ww~}U" + "{|v~o{}u~|`u~}p{|v~Vv~Lv~Tw~}u{|v~}Qv~_u~}pt~}pv~|hu~}p{|v~`{|v~|p{|v~|_t~ov~}a{|v~|p{}u~|Zt~S{}w~Gv~S{|w~|m{}w" + "~|`v~|o{|v~ev~s{|x~y}x~}s{}w~|c{}v~uv~}\\{}w~|o{|w~}O{}v~|U{|w~}Lw~|M{|w~} M{|x~}x|}w~}xv~}x|}x~|d{}v~qw~y}x~}_" + "v~x{}q~}I{|w~}_{|w~|q{|u~]{}w~|Nu~}p{|v~^{}w~|p{|w~}X{|q~Z{|w~|m{}w~|fv~|d{|v~f{|v~}w{}w~|wu~`{|w~}q{|w~}`v~t{}" + "w~t{|w~}a{|v~ov~}a{|v~}p{}v~|W{|w~}Wv~}l|}v~^v~|t{|v~Q{}v~}W{}w~}V{|v~b{}w~}l{}v~r{|v~r{}v~|i{}w~}hv~|i{|v~|s{|" + "v~r{}v~k{}v~xi~}y{|v~|iu~|A{}w~A{|u~|Z{}w~Y{}v~}i{}v~|Z{}w~ sv}|U{}v~|vy~}S{|v~O{|w~}s{|v~_{|o~|{o~}Ww~|U{}x~}v" + "{}u~}.{|y~|w{|w~d{|y~|e{}w~t{}v~}W{|v~|v{}w~}cY|8{|y~|sw~sw~|t{|y~| `{|Z~}_{}x~}C{|w~}({|w~|m{}w~|`{|n~}w{|x~} " + "H{}x~|Sv~|u{}w~|\\{}v~v{|v~|^{}x~|p{|w~\\{}x~|p{|w~W{|x~}u{|w~Mv}|Uv~|t{|v~Zv~|t{|v~Zv~|t{|v~Zv~|t{|v~Zv~|t{|v~" + "Zv~rv~b{|v~s{|c~l{}v~I{}d~|`{}d~|`{}d~|`{}d~|W{}w~}M{}w~}M{}w~}M{}w~}Z{|v~ev~}h{}w~|vv~|sv~i{}v~c{|v~|l{}v~c{|v" + "~|l{}v~c{|v~|l{}v~c{|v~|l{}v~c{|v~|c{|u~v{}v~}c{}v~o{|w~|u{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}\\q~" + "}X{}w~}mv~}aw~}vv~Ev~|Mv~|Mv~|Mv~|Mv~|Mv~|Ws~|o{}w~}gv~}Ov~|o{|v~_v~|o{|v~_v~|o{|v~_v~|o{|v~Vv~Lv~Lv~Lv~Uv~}o{}" + "w~}_u~}p{|v~`{|v~|p{|v~|`{|v~|p{|v~|`{|v~|p{|v~|`{|v~|p{|v~|`{|v~|p{|v~|Wt|W{|v~|q{}u~|`{|w~|m{}w~|a{|w~|m{}w~|" + "a{|w~|m{}w~|a{|w~|m{}w~|`{}w~|o{|w~}_t~ov~}`{}w~|o{|w~} X{}x~}q{}w~q{|x~}j{}x~}b{|x~}j{}x~}vu~|yu~|w{|x~}j{}x~}" + "mu~|w{|x~}j{}x~}b{|x~}Z{}x~}V{|v~o{}w~} WZ~}g{}|yw~}qx~'a~|c{|}t~}k~}|fY~}g{}`~b{|w~|m{}w~`w~}kw~}[{|w~}{|v~Wv~" + "r{}w~}dw~| lv~| kv~| yw~|tw~|\\{}v~}|y{|y~|^v~}y|}v~uw~X{|p~ rv~Fv~Xw~|vx~v{|w~U{}w~ d{}x~}Y{|v~k{}w~}W{}w" + "~}H{|v~}Wo~}|Y{|w~|t{}w~}\\{|v~x}|x}s~}^v~|j~}Q{}w~}V{}l~}]v~}n{}u~}X{}v~M{|v}U{|}p~}|]{|Z~}\\{}o~|S{}v~}c{|x~}" + "rv~}|w{|}t~|tx~}i{|v~rv~|_{}h~}|_v~}M{}w~}f{|v~|e{}d~|_{}g~|dv~}K{}^~|Y{}w~}M{}w~}W{}q~|P{}w~}V{}w~|w{}w~u{|w~|" + "wv~|h{}w~|v{}w~}sv~iv~}c{|v~|e{}w~}p{|u~|gv~}c{|v~|g{}w~}sy|}u~}\\{}m~}|Q{|v~|Z{|v~h{}w~}bv~}p{}w~}g{}w~}t{}x~}" + "v{|w~sv~|`{}u~}Q{|r~|O{|u~R{|w~}J{}w~H{|w~| b{|w~}^u~|o{|v~_{}v~Ov~}nu~|a{}w~}m{}w~|Xw~}Uv~|nu~|`u~nv~|Wv~Lv~T" + "w~}v{}v~}Pv~_u~o{}u~|p{}w~}hu~nv~|a{}w~}n{}w~}_u~|o{|v~a{}w~}nu~|Zu~|S{}w~Gv~S{|w~|m{}w~|`{}w~}o{}w~}e{}w~s{}x~" + "}|w~sv~a{}v~w{}v~[{|w~}ov~|P{}v~|T{|w~}Lw~|M{|w~}:{|4x~|v{|w~}{}x~}u{}x~dv~}q{}s~|_v~x{}r~}S{|y}~y}|w{|w~}_w~}o" + "{|v~}^{}w~Mu~nv~|_{|w~}pv~|X{}w~}v~|[{|w~|m{}w~|g{|v~bv~|g{}v~v{}w~v{|v~|a{|w~}q{|w~}`v~t{}w~t{|w~}a{}w~|o{|v~a" + "{}v~nv~}W{|w~}W`~_{|v~rv~|Q{}v~|X{}w~}V{|v~b{}w~}lu~r{|v~r{|v~|i{}w~}hv~|hv~}s{|v~rv~}kv~}xi~}y{|v~|ju~|@{}w~@{" + "|u~|[{}w~Z{}v~}g{}v~|[{}w~ Gv~}uy~}S{|v~Ow~}q{|w~|`{|n~}o~}Ww~|Uw~|t{}u~|0{|y~|w{|x~}d{|y~|e{|v~}w|t~}X{|v~|vv~" + "}c{|Z~}8{|y~|sw~t{}w~s{|y~| `{|Z~}`{}x~}M{|~}|v{|}v~'{|w~|m{}w~|_{}o~}w{|x~}Vv}| s{}x~|S{|v~}|{y|}w~}Z{}v~|w{|v" + "~}_{}x~|pw~|o{}w~m{}x~|p{}x~|vy|}w~y}|g{|w~|u{}x~|o{}w~3{|v~rv~|\\{|v~rv~|\\{|v~rv~|\\{|v~rv~|\\{|v~rv~|\\{}w~}" + "r{}w~|c{}w~}s{|c~lv~}I{}d~|`{}d~|`{}d~|`{}d~|W{}w~}M{}w~}M{}w~}M{}w~}_{}i~}nv~}h{}w~|v{}w~}sv~iv~}c{|v~|lv~}c{|" + "v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|b{|u~x{}v~}bv~}p{|w~}t{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}\\{|r~|" + "X{}w~}mv~}aw~}v{}w~}F{|w~}M{|w~}M{|w~}M{|w~}M{|w~}M{|w~}W{|u~}m{}w~h{}v~O{}w~}m{}w~|a{}w~}m{}w~|a{}w~}m{}w~|a{}" + "w~}m{}w~|Wv~Lv~Lv~Lv~V{}v~n{|v~_u~nv~|a{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~},{}w~}q{}t~}`" + "{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|`{|w~}ov~|_u~|o{|v~`{|w~}ov~| X{}x~|q{}w~q{|w~j{}x~|b{|w~j{}x~|u" + "u~|u~|v{|w~j{}x~|nu~|v{|w~j{}x~|b{|w~Zw~}Uv~|q{|v~ VZ~}c{}w~r{|y~}({}`~d{}^~|h{|Z~g{|_~}c{}w~l{|w~`w~}kw~}[{}w~" + "|yv~|X{}w~|sv~|dV~} 2v~| k{}w~| {{|w~t{|w~Zs~y}y~|^{|o~|v{}x~}rx|e{|v~y}u~n{|w~},{|v~Fv~|Y{|~}tx~t{}~|U{}w~ " + " dw~|Y{|v~k{}w~}W{}w~}Hu~Vp~}|Y{|w~}s{}w~}\\{|~}|q{}t~|`{|q~}|xy|t~|Rv~|U{|}p~|[{}v~|ot~} V{|}p~}|Z{|Z~}Z{|}p~}" + "|W{}v~|b{}x~|s{}w~|s{|u~|tw~i{}w~}r{}w~}_{}g~}|`v~}M{}w~}f{|v~|e{}d~|_{}g~|dv~}K{}^~|Y{}w~}M{}w~}W{}q~O{}w~}V{}" + "w~|w{|w~|v{}w~vv~|h{}w~|uv~|tv~iv~}c{|v~|e{}w~}sy|s~fv~}c{|v~|g{}f~}Z{}k~}S{|v~|Z{|v~h{}w~}b{|v~pv~|g{}w~}tw~|u" + "w~|u{|v~_{}u~O{}t~|O{|u~|R{|w~}J{|w~|I{|w~| aw~}^v~}m{}w~}`v~|P{|v~m{}v~|av~l{|w~}Xw~}V{|v~m{|v~|`v~}n{}w~|Wv~" + "Lv~Tw~}w{}v~}Ov~_v~}o{|v~}o{|w~}hv~}n{}w~|av~|n{|v~|`u~mv~|bv~m{}v~|Zv~}R{}w~Gv~S{|w~|m{}w~|`{|v~ov~d{}w~|tw~|{" + "w~|u{|w~}`v~}y{|v~|Z{}w~|q{|v~P{}v~|Sv~|Lw~|Lv~|W{|y}w~}|iy}5{|y~}sw~|x~}s{}y~|f{|v~|ps~^v~x{}q~}|W{|r~|y{|w~}`" + "{}w~m{}v~^{}w~Mv~}n{}w~|^{}w~q{|v~Wv~y|w~}[{|w~|m{}w~|g{}v~b{}w~}h{|v~|v{}w~u{}w~}a{|w~}q{|w~}`v~t{}w~t{|w~}av~" + "mv~|c{|v~|n{|v~W{|w~}W`~_{}w~}r{}w~}Q{|v~}X{}w~}V{|v~b{}w~}lv~}r{|v~r{|v~|i{}w~}hv~|h{}v~s{|v~s{|v~|kv~}xi~}y{|" + "v~|ku~|?{}w~?{|u~|\\{}w~[{}v~}e{}v~|\\{}w~ H{}v~ty~}S{|v~P{|w~o{}w~_s|}r~s|Vw~|V{|w~r{|u~0{|y~v{}x~}d{|y~|d{}o~" + "|x~}Y{}v~v{|v~|b{|Z~}8{|y~rw~u}v~|s{|y~| `{|Z~}a{}l~|X{|m~|'{|w~|m{}w~|^o~}w{|x~}W{|v~| xm~}W{|n~}X{|v~|vv~}e{}" + "n~}v{}x~}o{|v~m{}x~|q{|w~w{|o~|t{|~}y|w{|}v~u{|x~}o{|v~3{}w~}r{}w~}\\{}w~}r{}w~}\\{}w~}r{}w~}\\{}w~}r{}w~}\\{}w" + "~}r{}w~}\\v~|r{|w~}cv~|s{|c~lv~}I{}d~|`{}d~|`{}d~|`{}d~|W{}w~}M{}w~}M{}w~}M{}w~}_{}i~}nv~}h{}w~|uv~|tv~iv~}c{|v" + "~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|a{|u~|}v~}av~}pw~}s{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}[" + "{}t~|W{}w~}mv~}aw~}v{}v~|Fw~}Lw~}Lw~}Lw~}Lw~}Lw~}Vu~l{|w~|iv~|Ov~l{|w~}av~l{|w~}av~l{|w~}av~l{|w~}Wv~Lv~Lv~Lv~V" + "v~|mv~|`v~}n{}w~|av~|n{|v~|av~|n{|v~|av~|n{|v~|av~|n{|v~|av~|n{|v~|-v~|r{|x~}v~`{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{" + "}w~|a{|w~|m{}w~|_{}w~|q{|v~^u~mv~|`{}w~|q{|v~ Ww~p{}w~pw~jw~yd|yw~jw~t{|p~|tw~jw~nu~|tw~jw~pv~}qw~Zw~|U{}w~}q{}" + "w~} F{}w~}W{|w~|s{}y~|){|_~}f{}\\~|h{}\\~|g{}^~c{}w~l{|w~|aw~}kw~}[v~x{}w~}X{|w~}t{|v~cV~} 2v~| k{}w~| {{|x~" + "}t{|x~}Z{|o~}y|`{|}r~|v{|w~t{}u~}|hv~}y{}u~o{|w~|,{|v~F{}w~|X{|sx~s{|T{}w~ e{|w~X{|v~k{}w~}W{}w~}Iu~|Vm~|[{}w~" + "r{}w~}L{}u~`{|r~|s{|u~S{}v~V{|}m~}|\\u~p{}t~} Y{|}p~}|VY|W{|}p~}|[{|v~|aw~rw~}q{|v~|t{}x~iv~q{|v~_{}e~}av~}M{}w" + "~}f{|v~|e{}d~|_{}g~|dv~}m{}n~|h{}^~|Y{}w~}M{}w~}W{}q~}P{}w~}V{}w~|vw~}vw~}vv~|h{}w~|u{}v~tv~iv~}bv~|e{}e~|fv~}b" + "v~|g{}g~}X{|}k~}U{|v~|Z{|v~h{}w~}av~|r{|v~f{|v~u{|w~|u{}x~}u{}w~}`{|t~|O{}v~}Nu~|Q{|w~}Iw~}I{|w~| a{}w~^v~|m{|" + "w~}a{|v~O{|w~}lv~|b{|w~}kv~Xw~}V{|w~}lv~|`v~|n{|w~}Wv~Lv~Tw~}x{}v~|Nv~_v~|nv~|nv~hv~|n{|w~}b{|v~lv~|`v~}m{|w~}c" + "{|w~}m{|v~|Zv~|R{}w~|Hv~S{|w~|m{}w~|_{}w~|q{|w~}d{|w~}u{|w~y{}x~|u{|w~|`{|v~y|v~}Y{|w~}q{}w~|Q{|v~}S{}v~Kw~|L{}" + "w~}Y{|p~}|n{|y~}5{}y~r{|t~qy~}f{}v~ot~}^v~x{}o~}Y{}p~|{|w~|`w~}lv~|_{|w~}Nv~|n{|w~}^{|w~|r{}w~|X{}w~}yv~[{|w~|m" + "{}w~|gv~}b{}v~h{|v~u{}w~u{|v~a{|w~}q{|w~}`v~t{}w~t{|w~}b{|w~}m{|w~}c{|v~lv~|X{|w~}W`~_v~|r{|v~Qu~W{}w~}V{|v~b{}" + "w~}lv~}r{|v~qv~|i{}w~}hv~|h{|v~|t{|v~s{}v~jv~}xi~}xv~|lu~[|]{}w~\\\\|u~|]{}w~\\{}v~}c|u~|]{}w~ H{}w~}ty~}X{}g~|" + "[{}x~}nw~Vs~|Nw~|V{}x~}pv~}1{}y~v{}x~}d{|y~}c{}r~}{|x~}Z{}w~}v{|v~|a{|Z~}8{}y~rn~}q{|y~} `{|Z~}a{}l~|X{|o~}|&{|" + "w~|m{}w~|]{}q~}w{|x~}W{|v~| xm~}V{|}q~|V{|v~|v{}w~}fm~}vw~o{|u~rm~}vw~|w{}n~|u{|m~|uw~|p{|u~3v~q{|v~\\v~q{|v~\\" + "v~q{|v~\\v~q{|v~\\v~q{|v~]{|v~pv~|e{}w~}r{|c~lv~}I{}d~|`{}d~|`{}d~|`{}d~|W{}w~}M{}w~}M{}w~}M{}w~}_{}i~}nv~}h{}w" + "~|u{}v~tv~iv~}bv~|lv~}bv~|lv~}bv~|lv~}bv~|lv~}bv~|`{|p~}`v~}q{}x~}qv~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}" + "w~}Z{}v~}V{}w~}mv~}aw~}uu~}G{}w~L{}w~L{}w~L{}w~L{}w~L{}w~V{}w~}kw~}j{|v~O{|w~}kv~b{|w~}kv~b{|w~}kv~b{|w~}kv~Wv~" + "Lv~Lv~Lv~W{|v~l{}w~}`v~|n{|w~}b{|v~lv~|b{|v~lv~|b{|v~lv~|b{|v~lv~|b{|v~lv~|.{|v~r{|w~{}w~|a{|w~|m{}w~|a{|w~|m{}" + "w~|a{|w~|m{}w~|a{|w~|m{}w~|_{|w~}q{}w~|^v~}m{|w~}`{|w~}q{}w~| Ww~yd~|{w~jw~yd~|{w~jw~s{|r~|sw~jw~ou~|sw~jw~pv~}" + "qw~Zw~|U{|v~qv~| G{}w~}Uw~}sx~({}^~g{}Z~g]~}f{|_~|cw~}l{|w~|aw~}kw~}\\{|v~x{|v~Wv~t{}w~}cV~} 2v~| k{}w~| {{}" + "x~}t{}x~}Y{|}m~}`{|}w~}|tw~|v{|q~}j{}v~w{}u~p{}w~|,{|w~}F{}w~|Ox~Z{|Z~} t{}x~}X{|v~k{}w~}W{}w~}J{}v~|Ut|}t~}]{" + "|w~|r{}w~}K{}v~|a{|s~p{|v~}Tv~}W{}i~}]{}u~|t{|}s~} Z{|q~}| e{|}q~}\\v~}`x~}s{}w~ov~|t{}x~|k{|w~}p{}w~|`{}w~}p|}" + "t~|cv~}M{}w~}f{|v~|e{}w~}i|^{}w~}l|cv~}m{}n~|h{}w~}h|v~|Y{}w~}M{}w~}W{}w~}u~}Q{}w~}V{}w~|v{}w~w{|w~uv~|h{}w~|tv" + "~|uv~iv~}c{|v~|e{}f~|ev~}c{|v~|g{}i~}S{|}m~}V{|v~|Z{|v~h{}w~}a{}w~}rv~}ev~|v{|w~t{|w~uv~|`r~O{|v~|O{}v~}P{|w~}I" + "{}w~I{|w~| a{}w~^v~|lv~a{}w~}O{}w~|lv~|b{|w~|k{}w~Xw~}V{}w~|lv~|`v~m{|w~}Wv~Lv~Tw~}yu~|Mv~_v~mv~mv~hv~m{|w~}b{" + "}w~}l{}w~}`v~|m{|v~c{}w~|lv~|Zv~Q{}v~|Iv~S{|w~|m{}w~|_{|w~}q{}w~|cv~u{}x~}y{}x~}u{}w~^{}q~}Wv~qv~Q{|v~}Uy|}v~|K" + "w~|L{|u~}|^{|k~}|s{|}x~}5y~}q{}v~|q{}y~f{}w~}o{}u~|^v~ty|}s~[{|u~y}v~y|w~|a{|w~}l{}w~}^{}w~|Ov~m{|w~}]w~}rv~Wv~" + "|y{}w~}\\{|w~|m{}w~|gv~|b{|v~h{}w~}u{}w~tv~a{|w~}q{|w~}`v~t{}w~t{|w~}b{}w~|m{|v~c{}w~}l{}w~}X{|w~}W`~`{|w~}pv~|" + "S{}v~|W{}w~}V{|v~bv~}lv~}r{|v~r{|v~|i{}w~}hv~|gu~t{|v~t{|v~}jv~}xh|y{|v~|mT~]{}w~]T~|^{}w~]{}U~|^{}w~ Hv~|ty~}X" + "{}g~|[w~|nw~|W{}u~}Mw~|V{}w~ov~1{|y~v{}x~}d{|y~|ay}x~y}ww|[{}w~}v{|v~|`{|Z~}8{|y~ro~o{|y~| Q{}w~R{}l~|V{|y}v~y}" + "|${|w~|m{}w~|\\{|}s~}w{|x~}W{|v~| xm~}T{|y}w~}|S{|v~|v{}w~}gm~}w{}x~}oy~y}x~rm~}w{}x~}v{}~}y|w{|v~u{|o~}t{}x~}o", + "t~^v|V{|w~}p{}w~|^{|w~}p{}w~|^{|w~}p{}w~|^{|w~}p{}w~|^{|w~}p{}w~|^{}w~}p{}w~}ev~|r{|v~h|lv~}I{}w~}i|_{}w~}i|_{}" + "w~}i|_{}w~}i|V{}w~}M{}w~}M{}w~}M{}w~}_v}u~r}nv~}h{}w~|tv~|uv~iv~}c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|" + "_{|r~}_v~}r{}w~q{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}Z{|v~|V{}w~}mv~}aw~}u{|t~|I{}w~L{}w~L{}w~L{}w~" + "L{}w~L{}w~V{}w~|kv~j{}w~}O{|w~|k{}w~b{|w~|k{}w~b{|w~|k{}w~b{|w~|k{}w~Wv~Lv~Lv~Lv~W{}w~}l{|w~}`v~m{|w~}b{}w~}l{}" + "w~}b{}w~}l{}w~}b{}w~}l{}w~}b{}w~}l{}w~}b{}w~}l{}w~}eY|f{}w~}rw~y{|w~}a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|" + "m{}w~|^v~qv~]v~|m{|v~_v~qv~ Vw~yd~|{}x~|kw~yd~|{}x~|kw~r{|t~|r{}x~|kw~pu~|r{}x~|kw~pv~}q{}x~|[w~|T{}w~|s{|v~ G{" + "}v~T{}w~t{|y~}(]~|i{|Y~}h{|_~}d{|a~}bw~}kw~|aw~}kw~}\\{}w~}wv~|Xv~|u{}w~|cV~} 2v~| k{}w~| {{w~|tw~|W{|}m~}T{" + "}x~}v{|o~}l{|v~|v{}u~q{}w~+{|w~}F{}w~|Ox~Z{|Z~}+m| ww~|X{|v~k{}w~}W{}w~}K{}v~}K{|}v~}^w~}q{}w~}Ju~a{|t~|o{}v~U{" + "|v~|X{}u~}|wy|u~}]t~}y|{y|}q~} Z{|t~}| _{|}t~}\\v~`{|x~}s{}x~}o{|w~|t{}x~|kv~|p{|w~}`{}w~}n{|u~cv~}M{}w~}f{|v~|" + "e{}w~}L{}w~}Tv~}m{}n~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}|u~}R{}w~}V{}w~|v{|w~|x{}x~}uv~|h{}w~|t{|v~uv~iv~}c{|v~|e{}h~" + "}cv~}c{|v~|g{}h~}Qy|y}p~W{|v~|Z{|v~h{}w~}a{|v~s{|v~|e{}w~}v{}x~}t{|w~uv~|a{}r~}P{|v~|P{}v~}O{|w~}I{|w~|J{|w~| " + "n{|y}l~^v~kv~a{}w~|Ov~|l{}w~|b{}w~|k{}w~|Yw~}Vv~|l{}w~|`v~m{|w~}Wv~Lv~Tw~}|u~Kv~_v~mv~mv~hv~m{|w~}b{}w~|l{|v~`v" + "~kv~c{}w~|l{}w~|Zv~Pu~}|Kv~S{|w~|m{}w~|^v~qv~b{}w~u{}x~|y{|w~uv~]{}r~V{}w~|s{|w~}R{|v~}X{|q~}Jw~|K{|q~}c{}g~}w|" + "}u~}5y~}pw~}p{}y~fv~|o{}u~]v~p{|t~\\v~}w{|w~}w~|a{}w~|l{|w~}]{}w~}y|Rv~m{|w~}]{}w~s{}w~}X{}w~}x{|v~\\{|w~|m{}w~" + "|h{|v~|b{|v~|i{}w~|u{}w~tv~|b{|w~}q{|w~}`v~t{}w~t{|w~}bv~kv~c{}w~|l{|w~}X{|w~}Wv~jv~`v~|p{}w~}T{}v~|V{}w~}V{|v~" + "|cv~|lv~}r{|v~r{|v~|i{}w~}hv~|g{}v~}u{|v~tu~|jv~}c{|v~|n{|T~]{}w~]T~}^{}w~]T~}^{}w~ I{|v~sy~}X{}g~|[w~m{}x~|Vu~" + "|#{|w~|p{|w~|2{|y~|w{|x~}d{|y~|3v~}v{}v~|Aw~}8{|y~|sw~x{|w~}p{|y~| Q{}w~ p{|w~|m{}w~|Y{|}v~}w{|x~}W{|v~| jv~}" + "v{}v~|W{|w~o{}y~{}x~r{}n~}x{|w~uy|rw~|ty|t}|s{|w~o{}y~|}x~^{}w~|Wv~|p{|w~}^v~|p{|w~}^v~|p{|w~}^v~|p{|w~}^v~|p{|" + "w~}^v~|p{|v~f{|v~q{|v~Yv~}I{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~ev~}h{}w~|t{|v~uv~iv~}c{|v~|lv~}" + "c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|^{|t~}^v~}s{}w~p{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}Z{|v~|V{}w" + "~}n{|v~|aw~}t{}t~}W{|y}l~Y{|y}l~Y{|y}l~Y{|y}l~Y{|y}l~Y{|y}l~c{|y}l~j{}w~j{}w~|O{}w~|k{}w~|c{}w~|k{}w~|c{}w~|k{}" + "w~|c{}w~|k{}w~|Xv~Lv~Lv~Lv~W{}w~|l{|v~`v~m{|w~}b{}w~|l{|v~b{}w~|l{|v~b{}w~|l{|v~b{}w~|l{|v~b{}w~|l{|v~f{|Z~}f{}" + "w~|s{}x~|y{|w~}a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|^{}w~|s{|w~}]v~kv~_{}w~|s{|w~} Vw~yd~|{}x~|kw~yd" + "~|{}x~|kw~qt~|r{}x~|kw~qu~|q{}x~|kw~pv~}q{}x~|[w~|T{|w~}s{}w~} H{|v~|T{|w~|u{}y~({|]~}i{}X~g{|`~b{}b~aw~}kw~}aw" + "~}kw~}\\v~|w{}w~}X{}w~}uv~bw~}Z| 5x|v~}p| v{}w~| {|w~t{|w~S{|}n~|Vw~uv~|y{|}w~}m{}w~}t{}u~rw~}+{|w~}F{}w~|Ox" + "~Z{|Z~},{|m~ x{|w~|X{|v~k{}w~}W{}w~}L{}v~}H{}v~}`{}w~p{}w~}J{}v~`t~n{|v~|V{}v~X{}v~}q{}v~}^{|j~|v~| Z{|t~| ]{|}" + "u~}]{|w~}`{|x~|sw~|o{|w~|t{}x~|l{|v~nv~`{}w~}lv~}dv~}M{}w~}f{|v~|e{}w~}L{}w~}Tv~}m{}n~|h{}w~}hv~|Y{}w~}M{}w~}W{" + "}w~}{|t~S{}w~}V{}w~|u{}x~}y{|w~|uv~|h{}w~|sv~|vv~iv~}c{|v~|e{}k~}|av~}c{|v~|g{}w~}t|y}u~}M{|}s~}X{|v~|Z{|v~h{}w" + "~}`v~}t{}v~d{}w~}vw~|sw~|w{|v~a{|v~}v~|Q{|v~|Q{|u~N{|w~}Hw~|J{|w~| p{}h~|_v~k{}w~|bv~|Ov~k{}w~|bv~j}v~|Yw~}Vv~" + "k{}w~|`w~}m{|w~}Wv~Lv~Tq~}Jv~_w~}mv~mv~hw~}m{|w~}bv~|l{|v~`v~kv~|dv~k{}w~|Zv~P{}r~}y|Pv~S{|w~|m{}w~|^{}w~|s{|w~" + "}b{|w~|vw~|xw~|w{|w~}\\s~|Uv~sv~|Ru~W{|s~}|Iw~|I{|}t~}d{|u~}w|}g~}5{|y~|p{|x~|p{}y~fv~|o{|v~}]v~n{}v~|^{}w~|ts~" + "`v~|l{|v~\\{}p~}Xw~}m{|w~}]{|w~|tv~|Xv~|wv~|]{|w~|m{}w~|h{|v~|q{}x~}q{|v~|iv~|u{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{" + "|w~}bv~kv~|dv~|l{|v~X{|w~}Wv~|l{|v~a{|v~nv~U{|v~}U{}w~}Uv~}d{|v~|l{}v~r{|v~r{|v~|i{}w~}hv~|fu~|v{|v~u{}v~}iv~}c" + "{|v~|n{|T~]{}w~]T~}^{}w~]T~}^{}w~ rw|V{|w~}sy~}X{|w}u~q}Zw~m{}x~|V{}v~\"{|v~ow~|2{|y~|w{|w~d{|y~|4{}w~}v{|v~?w~" + "}8{|y~|sw~vw~}q{|y~| Q{}w~ p{|w~|m{}w~|Ux~}w{|x~}W{|v~| i{}w~|v{|v~Ww~|p{|y~|{}x~`{}x~|j{|x~}bw~|p{|y~}{}x~^{" + "}w~|X{|v~nv~_{|v~nv~_{|v~nv~_{|v~nv~_{|v~nv~_{|w~}nv~|g{}w~}q{|v~Yv~}I{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}" + "M{}w~}Z{|v~ev~}h{}w~|sv~|vv~iv~}c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|]{}u~|^v~}t{|w~|p{|v~|i{|v~h{}w~}" + "f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}Z{|v~|V{}w~}n{}v~|aw~}s{|s~|[{}h~|\\{}h~|\\{}h~|\\{}h~|\\{}h~|\\{}h~|f{}h~j}v~" + "jv~|Ov~j}v~|cv~j}v~|cv~j}v~|cv~j}v~|Xv~Lv~Lv~Lv~Wv~|l{|v~`w~}m{|w~}bv~|l{|v~bv~|l{|v~bv~|l{|v~bv~|l{|v~bv~|l{|v" + "~f{|Z~}fv~|t{}x~|wv~a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|]v~sv~|]v~kv~|_v~sv~| Vw~yd~|{w~jw~yd~|{w~j" + "w~rr~|sw~jw~ru~|pw~jw~pv~}qw~Zw~|Sv~sv~ H{|v~|Rw~}uy~}({|]~}i{}X~|g{}b~|a{}d~|aw~}kw~}aw~}kw~}]{|v~v{|v~X{|v~v{" + "|w~}b{}x~} pf~ v{|w~ {{|w~t{|x~}P{|y~}r~W{}x~|v{}w~u{}w~mv~r{}u~t{|w~|+{|v~F{}w~|Ox~Z{|Z~},{|m~ x{}w~W{|v~k" + "{}w~}W{}w~}M{}v~}F{}v~a{|w~|p{}w~}Iv~|au~}mv~}Vv~|Y{|v~}o{|v~|]{}m~|{v~| Z{|r~}| c{|}r~}]{|w~}`{|x~|sw~|nw~|t{}" + "x~k{}w~}n{}w~}a{}w~}l{|v~|e{}v~M{}w~}f{}v~d{}w~}L{}w~}T{}v~mr|v~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}y{|t~T{}w~}V{}w~|u" + "{|w~y{}w~tv~|h{}w~|s{|v~vv~i{}v~c{|v~|e{}w~}r|]{}v~c{|v~|g{}w~}q{}v~}K{|t~|Y{|v~|Z{|v~h{}w~}`{}v~tv~|d{|v~w{|w~" + "|s{}x~}w{}w~}av~}{}v~Q{|v~|R{|u~M{|w~}H{}x~}J{|w~| r{|f~|_w~}k{}w~|bv~|Ov~k{}w~|b`~|Yw~}Vv~k{}w~|`w~}m{|w~}Wv~" + "Lv~Tq~Iv~_w~}mv~mv~hw~}m{|w~}bv~jv~`v~k{}w~|dv~k{}w~|Zw~}O{}o~}|Sv~S{|w~|m{}w~|^{|w~}s{}w~|b{|w~}w{|w~w{}x~}w{|" + "w~|\\{|u~}T{}w~|u{|w~}Ru~V{|s~}|Iw~|J{|}s~}d{|w~|s{|}k~|3y~}p{|x~}p{}y~fv~mv~|]v~m{}v~_{|w~}rt~`v~jv~Z{}r~}Xw~}" + "m{|w~}\\w~}u{|w~}X{|w~}v{}w~}]{|w~|m{}w~|h{|v~|q{}x~}pv~|iv~t{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{|w~}bv~k{}w~|dv~jv" + "~X{|w~}W{}w~|l{|v~a{}w~}n{}w~}W{|u~T{}w~}U{}w~}d{}v~k{}v~|s{|v~r{}v~h{}w~}hv~|f{|u~|w{|v~v{}u~h{}v~c{|v~|n{|T~]" + "{}w~]T~|^{}w~]{}U~}^{}w~ s{|w~V{|w~}sy~}S{|v~Pw~|nw~|V{|w~}!{}v~|q{}x~|1y~}vw~|e{}y~ci|]{}w~u{|w~|?w~}7y~}sw~v{" + "|w~|r{}y~ P{}w~ p{|w~|m{}w~|Ux~}w{|x~}W{|v~| Fi|U{|w~|u{}w~X{}x~}p{|y~}y{}x~a{|w~i{|x~}c{}x~}p{|y~}y{}x~^{}w~|" + "X{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~}`{}w~|n{}w~}h{|v~p{|v~Y{}v~I{}w~}M{}w~}M{}w~}M{}w~}" + "D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{|v~|h{}w~|s{|v~vv~i{}v~c{|v~|l{}v~c{|v~|l{}v~c{|v~|l{}v~c{|v~|l{}v~c{|v~|^{}s~|_" + "{}v~u{|w~|o{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}Z{|v~|V{}w~}o{|u~`w~}q{}t~|^{|f~|^{|f~|^{|f~|^{|f~|" + "^{|f~|^{|f~|h{|P~jv~|O`~|c`~|c`~|c`~|Xv~Lv~Lv~Lv~Wv~jv~`w~}m{|w~}bv~jv~bv~jv~bv~jv~bv~jv~bv~jv~f{|Z~}fv~|u{}x~}" + "vv~a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|]{}w~|u{|w~}\\v~k{}w~|_{}w~|u{|w~} Uw~yq}w~r}yw~jw~yd|yw~jw~" + "sp~|tw~jw~su~|ow~jw~pv~}qw~Zw~|S{}w~}u{|w~} Hv~|Q{}w~|w{|y~|({|\\~iW~|f{}d~|_e~|`w~}kw~}aw~}kw~|]{}w~}uv~Wv~|w{" + "}w~|b{}x~} q{|g~| v{|w~({}Z~X{|y~|{|}u~}Y{|w~uw~|tw~}o{|w~}q{}u~u{}w~*{|v~F{}w~|*m|}w~l|,{|m~ xw~}W{|v~k{}w" + "~}W{}w~}N{}v~}Dv~|bw~}o{}w~}Iv~|au~|m{}w~}W{|v~X{}v~m{}v~\\{|p~}xv~| Y{}p~}| i{|}p~}|]{}w~}`{|x~|sw~mw~|t{}x~kv" + "~}n|}v~a{}w~}kv~}e{}v~M{}w~}f{}v~d{}w~}L{}w~}T{}v~dv~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}x{|t~U{}w~}V{}w~|tw~|{w~}tv~|" + "h{}w~|rv~}wv~i{}v~c{}v~d{}w~}T{}v~c{}v~f{}w~}p{}v~|Ju~}Y{|v~|Z{|v~h{}w~}_v~|v{|v~bv~|x{|w~r{}w~wv~|b{}v~xv~}R{|" + "v~|Ru~|M{|w~}H{|w~J{|w~| s{|q~t}v~|_w~}k{}w~|bv~Nv~k{}w~|b`~|Yw~}Vv~k{}w~|`w~}m{|w~}Wv~Lv~Tp~Jv~_w~}mv~mv~hw~}" + "m{|w~}bv~jv~`w~}k{}w~|dv~k{}w~|Zw~}N{|m~|Uv~S{|w~|m{}w~|]v~t{|v~`v~w{}x~}w{|x~}w{}w~[{|u~|T{|w~}u{}w~|S{}v~|V{|" + "x}t~}Jw~|K{|s~y}|d{|y~}n{|}p~}1y~}p{}w~p{}y~fv~mv~\\v~lv~|`{}w~|r{|v~}`v~jv~\\{|p~}Xw~}m{|w~}\\{}w~u{}w~|Xv~|v{" + "|v~]{|w~|m{}w~|h{|v~p{}w~pv~}iv~t{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{|w~}bw~}k{}w~|dv~jv~X{|w~}W{}w~|l{|w~}av~|n{|v" + "~Wu~|T{}w~}U{}v~dv~}k{|v~}s{|v~s{|v~}h{}w~}hv~|e{}u~|x{|v~w{}u~|h{}v~c{}v~l{|u~}\\|]{}w~][|u~|]{}w~\\{}v~}c|u~}" + "]{}w~ s{|w~V{|w~}sy~}S{|v~P{}x~}o{|w~`{|a~}+u~|rw~|1y~}v{}w~ex~d{|j~}]{}w~}v{|v~|@w~}7y~}sw~u{}w~rx~ P{}w~ p{|" + "w~|m{}w~|Ux~}w{|x~} w{|j~}V{|v~|v{}w~}Xw~oy~}x{}x~aw~|i{|x~|cw~ox~x{}x~^{}w~|Xv~}n|}v~`v~}n|}v~`v~}n|}v~`v~}n|" + "}v~`v~}n|}v~a{|b~h{}v~p|}v~Y{}v~I{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{|v~|h{}w~|rv~}wv~i{}v~c{" + "}v~k{}v~c{}v~k{}v~c{}v~k{}v~c{}v~k{}v~c{}v~^{}q~|`{}v~v{|w~}n{}v~h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}Z{" + "|v~|V{}w~}p{|u~|`w~}p{|t~}`{|q~t}v~|_{|q~t}v~|_{|q~t}v~|_{|q~t}v~|_{|q~t}v~|_{|q~t}v~|i{|q~t}`~|kv~N`~|c`~|c`~|" + "c`~|Xv~Lv~Lv~Lv~Wv~jv~`w~}m{|w~}bv~jv~bv~jv~bv~jv~bv~jv~bv~jv~f{|Z~}fv~u{|x~}uv~a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m" + "{}w~|a{|w~|m{}w~|]{|w~}u{}w~|\\w~}k{}w~|_{|w~}u{}w~| U{}x~|q{}w~q{|w~j{}x~|b{|w~j{}x~|uu~|u~|v{|w~j{}x~|uu~|o{|" + "w~j{}x~|qv}|r{|w~[{|w~|S{|v~uv~| TZ~}a{|w~}wx~'{|\\~iW~|ee~|^{|g~}_w~}kw~}aw~}kw~|]v~|u{}w~|X{}w~}wv~|b{|w~| " + " r{}g~ u{|w~({}Z~X{|y~|w{}v~|Zw~|v{|w~s{|w~o{|w~}p{}u~vw~})v~Fv~| w{}w~ x{|m~ y{|w~|Vv~|lv~|W{}w~}O{}v~}C{}w~}" + "c{|w~n|}w~}v|N{}w~}au~l{|v~Wv~}Xv~}m{|v~|[{|y}w~y}|x{|v~ V{|}p~}|XY|X{|}q~}|Z{}w~}`{|x~|sw~mw~|tw~l{|b~|b{}w~}k" + "{}v~e{|v~|N{}w~}fv~}d{}w~}L{}w~}T{|v~|ev~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}w{|t~V{}w~}V{}w~|t{}w~|w~|tv~|h{}w~|r{|v~" + "wv~i{|v~|d{}v~d{}w~}T{|v~|d{}v~f{}w~}o{}v~J{|u~Y{|v~|Z{|v~h{}w~}_{}w~}v{}w~}b{}w~}x{}x~}r{|w~wv~b{|v~|x{|v~|S{|" + "v~|S{}v~|L{|w~}Gw~|K{|w~| t{|u~}|q{}w~|_v~k{}w~|bv~Nv~k{}w~|b`~|Yw~}Vv~k{}w~|`w~}m{|w~}Wv~Lv~Tw~}|u~Kv~_w~}mv~" + "mv~hw~}m{|w~}bv~jv~`w~}k{}w~|dv~k{}w~|Zw~}L{|}o~}Vv~S{|w~|m{}w~|]{}w~}u{}w~}`{}w~|xw~|w{|w~wv~\\{|s~Sv~uv~S{}v~" + "|O{}v~}Kw~|L{|v~}|_{|~|j{|y}x~y}|/x~q{|v~}qx~fv~m{}x~}\\v~l{}w~|`v~pv~}`v~jv~]n~}Xw~}m{|w~}\\{|w~|vv~X{|v~t{}w~" + "|^{|w~|m{}w~|h{|v~p{}w~pv~|iv~t{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{|w~}bw~}k{}w~|dv~jv~X{|w~}W{}w~}l{}w~}b{|v~lv~|Y" + "{}v~|S{}w~}U{|v~}f{|v~|ju~|t{|v~s{}v~|h{}w~}hv~|dt~}y{|v~y{|t~|g{|v~|d{}v~k{|u~|?{}w~>u~|b{|v{}w~[{}v~|e{}v~}\\" + "{}w~ s{|w~V{|w~}sy~}S{|v~P{|w~o{}x~}`{|a~}+{|u~}|u{|w~0{}y~v{|w~}g{|y~}d{|j~}\\{}v~|w{|v~}Aw~}7{}y~sw~tw~}t{|y~" + "} P{}w~ p{|w~|m{}w~|Ux~}w{|x~} w{|j~}W{|v~|vv~}X{}x~|p{}y~|x{}x~b{}x~}hw~c{}x~}p{}y~|x{}x~^v~X{|b~|b{|b~|b{|b" + "~|b{|b~|b{|b~|b{}b~}id~Y{|v~|J{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{}v~g{}w~|r{|v~wv~i{|v~|d{}v" + "~k{|v~|d{}v~k{|v~|d{}v~k{|v~|d{}v~k{|v~|d{}v~_{}v~}u~|a{|v~|ww~}m{}v~h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w" + "~}Z{|v~|V{}w~}sy|s~_w~}n{}u~|b{|u~}|q{}w~|`{|u~}|q{}w~|`{|u~}|q{}w~|`{|u~}|q{}w~|`{|u~}|q{}w~|`{|u~}|q{}w~|j{|u" + "~}|q{}a~|kv~N`~|c`~|c`~|c`~|Xv~Lv~Lv~Lv~Wv~jv~`w~}m{|w~}bv~jv~bv~jv~bv~jv~bv~jv~bv~jv~.v~v{|w~tv~a{|w~|m{}w~|a{" + "|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|\\v~uv~[w~}k{}w~|^v~uv~ T{}x~}q{}w~q{|x~}j{}x~}b{|x~}j{}x~}vu~|{|u~|w{|x~}j{}" + "x~}vu~|n{|x~}j{}x~}b{|x~}[{|w~Qv~|w{|v~ SZ~}`v~x{|y~}'{|]~}iW~|e{|g~}\\{}i~}^w~}kw~}aw~}l{|w~|^{|v~t{|w~}X{|v~x" + "{|v~`w~} m{|v~ jw|({}Z~X{|y~|v{}w~}[{}x~}u{}x~}s{|w~o{}w~}o{}u~x{|w~|)v~Fv~ v{}w~ g{}w~Uv~|lv~|W{}w~}P{}v~" + "}B{|v~c{|_~|O{}w~}a{}v~l{|v~X{|v~|Y{|v~|lv~|N{|v~ S{|}p~|[{|Z~}[{|}p~}|X{}w~}`{|x~|sw~|nw~|u{|x~}l{}b~}b{}w~}k{" + "|v~e{|v~}N{}w~}g{|v~}d{}w~}L{}w~}T{|v~}ev~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}v{|t~W{}w~}V{}w~|t{|r~sv~|h{}w~|q{}w~}xv" + "~i{|v~}dv~}d{}w~}T{|v~}dv~}f{}w~}nv~}J{}v~Y{|v~|Z{|v~|i{}w~}_{|v~vv~|b{}w~}xw~|qw~|y{|v~bv~}v{}v~S{|v~|T{}v~}K{" + "|w~}G{}x~}K{|w~| tv~}n{}w~|_v~kv~|bv~|Ov~k{}w~|bv~Bw~}Vv~k{}w~|`w~}m{|w~}Wv~Lv~Tw~}{|u~|Mv~_w~}mv~mv~hw~}m{|w~" + "}bv~|kv~`v~k{}w~|dv~k{}w~|Zw~}Iy|}q~Wv~S{|w~|m{}w~|]{|v~uv~_{|w~|xw~uw~|y{|w~}\\r~}T{|w~|w{}w~}T{}v~|M{|v~Kw~|L" + "{}w~} O{}y~|rt~|s{|y~}fv~|nw~}\\v~l{|w~}`w~}p{}w~|`v~|kv~^u~}|Qw~}m{|w~}[w~}w{}w~}X{}w~|t{|w~}^{|w~|m{}w~|h{|v~" + "pv~pv~|iv~t{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{|w~}bv~k{}w~|dv~|l{|v~X{|w~}W{|w~}l{}w~|b{}w~}l{}w~}Z{|v~}R{}w~}T{}v" + "~f{}v~i{|u~t{|v~t{|u~g{}w~}hv~|cr~}v~}s~}f{|v~}dv~}j{|u~|@{}w~?u~|b{}~|w{}w~vy~a{}v~|g{}v~}b{}~|w{}w~vy} {{}w~|" + "W{|w~}sy~}S{|v~Ow~}q{|w~|`{|a~}){}u~}vw~}0{|y~}v{}w~}p{|t{}y~|d{|j~}[{|v~|vv~}Bw~}7{|y~}tw~t{|w~|u{}y~| P{}w~ " + "p{|w~|m{}w~|Ux~}w{|x~} w{|j~}X{}v~v{|v~}X{|w~p{|y~|w{}x~bw~h{}x~|d{|w~p{|y~}w{}x~^v~X{}b~}b{}b~}b{}b~}b{}b~}b{" + "}b~}b`~j{}d~Y{|v~}J{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~fv~}g{}w~|q{}w~}xv~i{|v~}dv~}k{|v~}dv~}k" + "{|v~}dv~}k{|v~}dv~}k{|v~}dv~}`{}v~|{|u~|b{|v~}x{}x~}lv~}h{|v~|i{}w~}f{|v~|i{}w~}f{|v~|i{}w~}f{|v~|i{}w~}Z{|v~|V" + "{}e~|_w~}m{|u~bv~}n{}w~|`v~}n{}w~|`v~}n{}w~|`v~}n{}w~|`v~}n{}w~|`v~}n{}w~|jv~}n{}w~Tv~|Ov~Lv~Lv~Lv~Av~Lv~Lv~Lv~" + "Wv~|l{|v~`w~}m{|w~}bv~|kv~bv~|kv~bv~|kv~bv~|kv~bv~|kv~.v~vw~|u{|v~a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}" + "w~|\\{|w~|w{}w~}[v~k{}w~|^{|w~|w{}w~} T{|w~q{}w~q{}x~|j{|w~b{}x~|j{|w~wu~|x{|u~|x{}x~|j{|w~wu~|m{}x~|j{|w~b{}x~" + "|[{|w~Q{|w~}w{}w~} SZ~}`{}w~|y{}y~|'{|n~y}~|n~}i{}k~x}k~c{|i~}Z{}j~]w~}kw~}a{}w~l{|w~|^{}w~}sv~Wv~|y{}w~}`{}w~|" + " mv~| o{}Z~X{|y~|v{|w~}\\{|w~t{}x~|rw~|p{}w~}n{}u~yw~}(v~|Gv~ v{}w~ gw~}U{}w~}m{|v~V{}w~}Q{}v~}A{|v~c{|_~" + "|O{}w~}a{}v~l{|v~X{}v~X{|v~k{}w~}N{}w~} Q{|}p~}|^{|Z~}^{|}p~}|U{}w~}`{|x~}sw~|o{|w~|u{}x~|l`~b{}w~}k{|v~|eu~N{}" + "w~}g{}v~|d{}w~}L{}w~}Su~ev~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}u{|t~X{}w~}V{}w~|ss~}sv~|h{}w~|q{|v~|yv~hu~e{|v~|d{}w~}" + "Su~e{|v~|f{}w~}n{}v~|K{|v~|Z{|v~|Yv~|i{}w~}^v~|x{}v~a{|v~y{|w~|q{}x~}y{}w~}c{}v~tv~}T{|v~|U{|v~}J{|w~}G{|w~K{|w" + "~| u{|v~m{}w~|_v~kv~a{}w~|O{}w~|l{}w~|bv~|Cw~}V{}w~|l{}w~|`w~}m{|w~}Wv~Lv~Tw~}y{|u~|Nv~_w~}mv~mv~hw~}m{|w~}bv~" + "|l{|v~`v~kv~cv~|l{}w~|Zw~}D{|}u~}Xv~S{|w~|m{}w~|\\{}w~|w{|w~}^w~}y{|w~u{}x~}y{}w~|]{}q~|Tv~wv~|U{|v~}K{}w~|Lw~|" + "Lv~ N{|x~s{}x~{w~|tx~|fv~|o{|v~\\v~l{|w~}a{|w~|p{}w~_{}w~|l{|v~_{}v~|Ow~}m{|w~}[{}w~|xv~X{|v~rv~|_{|w~|m{}w~|h{" + "|v~|qv~pv~|iv~|u{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{|w~|bv~kv~c{}w~|l{|v~X{|w~}Vv~l{}w~|bv~|l{|v~[{|v~}Q{}w~}T{|v~}" + "h{|v~|hu~}u{|v~u{|u~|g{}w~}hv~|b{}f~|du~e{|v~|i{|u~|A{}w~@u~|b{}x~|x{}w~ww~a{}v~|i{}v~}b{}x~|x{}w~w{}y~} {}w~|W" + "{|v~sy~}S{|v~O{|w~}s{}w~}^q|}v~q|'{}t~|{|w~}.x~u{}v~}|wy|}y~tx~/{|v~|v{}w~}Cw~}6x~tw~s{}w~ux~ O{}w~ p{|w~|m{}w" + "~|Ux~}w{|x~} B{}w~}v{|v~|Ww~|q{|y~}v{}x~c{}x~|i{}x~}cw~|q{|y~}v{}x~_{|v~X`~b`~b`~b`~b`~c{|`~|kc~Xu~J{}w~}M{}w~" + "}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~g{|v~}g{}w~|q{|v~|yv~hu~e{|v~|ju~e{|v~|ju~e{|v~|ju~e{|v~|ju~e{|v~|a{}" + "v~|x{|u~|bu~y{}w~l{|v~|gv~|i{}w~}ev~|i{}w~}ev~|i{}w~}ev~|i{}w~}Z{|v~|V{}f~|^w~}l{|v~|d{|v~m{}w~|a{|v~m{}w~|a{|v" + "~m{}w~|a{|v~m{}w~|a{|v~m{}w~|a{|v~m{}w~|k{|v~m{}w~T{}w~|Ov~|Mv~|Mv~|Mv~|Bv~Lv~Lv~Lv~W{}w~|l{|v~`w~}m{|w~}bv~|l{" + "|v~bv~|l{|v~bv~|l{|v~bv~|l{|v~bv~|l{|v~.v~|x{}x~|t{|v~a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|[v~wv~|[v" + "~kv~\\v~wv~| Sw~|r{}w~r{|w~hw~|d{|w~hw~|yu~|v{|u~y{|w~hw~|yu~|m{|w~hw~|d{|w~Z{|w~Pv~wv~| SZ~}_w~}yx~%n~{|~{|o~|" + "i{|l~}|}|l~}b{}j~Xk~|]w~}kw~}a{}w~l{}w~]v~|s{}w~|X{}w~}yv~|_w~} mv~} g{}x~}t{}x~}O{|y~|uw~}\\{}x~|t{}x~|rw" + "~|p{|w~}m{}u~}w~|({}w~|H{|w~} v{}w~ h{|w~|U{}w~}m{|v~V{}w~}R{}v~}@{|v~c{|_~|Ov~|a{|v~l{}w~}Xv~}X{|v~k{}w~}Nv~|" + " N{|}p~}|a{|Z~}a{|}p~}|R{|w}|_x~}s{}x~}o{}w~|v{|w~l{}`~|c{}w~}k{|v~|e{}v~|O{}w~}gu~c{}w~}L{}w~}S{}v~|fv~|h{}w~}" + "hv~|Y{}w~}M{}w~}W{}w~}t{|t~Y{}w~}V{}w~|s{}t~rv~|h{}w~|p{}w~}yv~h{}v~|f{}v~c{}w~}S{}v~|f{}v~e{}w~}mv~}K{|v~|Z{|v" + "~|Yv~|iv~|^{}w~}xv~}`v~|{|w~p{}w~yv~|d{|v~|t{|v~|U{|v~|V{|u~I{|w~}Fw~|L{|w~| u{}w~|mv~|_v~|m{|v~a{}w~}O{}w~|lv" + "~|b{}w~|Cw~}V{}w~|lv~|`w~}m{|w~}Wv~Lv~Tw~}x{|u~|Ov~_w~}mv~mv~hw~}m{|w~}b{}w~|l{|w~}`v~kv~c{}w~|lv~|Zw~}B{|u~Xv~" + "S{|w~|m{}w~|\\{|w~}w{}w~|^v~y{}x~}u{|x~}y{}w~]{|v~|}v~T{}w~|y{|w~}U{|v~}J{|w~}Lw~|M{|w~} Mx~}v{|w~|{|w~|v{}x~e{" + "}w~|o{}v~\\v~l{|w~}a{|w~|pw~}_{}w~|l{|w~}_v~Mw~}m{|w~}[{|w~}y{|w~}X{}w~|r{}w~}_{|w~|m{}w~|h{|v~|qv~|r{|v~|i{}w~" + "|u{}w~tv~|b{|w~}q{|w~}`v~t{}w~t{}w~|bv~kv~c{}w~|l{|w~}X{|w~}Vv~lv~b{}v~jv~|\\u~P{}w~}S{}v~|iu~g{|t~|w{|v~v{}u~}" + "f{}w~}hv~|a{}h~|c{}v~|f{}v~g{|u~|B{}w~Au~|b{}v~|y{}w~xu~a{}v~|k{}v~}b{}v~|y{}w~x{}w~}!{}w~|Vv~sy~}S{|v~O{|u~}y|" + "{y|u~}T{|w~}Lw}|P{|}p~}-{|y~}u{}l~u{}y~|.{|v~|v{}w~}Dw~}6{|y~}uw~rw~}w{}y~| O{}w~ p{|w~|m{}w~|Ux~}w{|x~} C{}w" + "~}v{|v~|W{}x~}px~u{}x~d{|w~i{}x~}c{}x~}px~u{}x~_{}w~}Y{}`~|d{}`~|d{}`~|d{}`~|d{}`~|d{}w~}j|}w~}l{|c~X{}v~|K{}w~" + "}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~gu~|g{}w~|p{}w~}yv~h{}v~|f{}v~i{}v~|f{}v~i{}v~|f{}v~i{}v~|f{}v~" + "i{}v~|f{}v~a{}v~|v{|u~|c{}v~|}w~|l{}v~fv~|iv~|ev~|iv~|ev~|iv~|ev~|iv~|Z{|v~|V{}h~}\\w~}k{}w~|d{}w~|mv~|a{}w~|mv" + "~|a{}w~|mv~|a{}w~|mv~|a{}w~|mv~|a{}w~|mv~|k{}w~|mv~|U{}w~}O{}w~|M{}w~|M{}w~|M{}w~|Bv~Lv~Lv~Lv~W{}w~}l{}w~}`w~}m" + "{|w~}b{}w~|l{|w~}b{}w~|l{|w~}b{}w~|l{|w~}b{}w~|l{|w~}b{}w~|l{|w~}.{}w~|y{}x~|s{|w~}a{|w~|m{}w~|a{|w~|m{}w~|a{|w" + "~|m{}w~|a{|w~|m{}w~|[{}w~|y{|w~}Zv~kv~\\{}w~|y{|w~} R{|w~r{}w~rw~}h{|w~dw~}h{|w~y{|w~|t{|w~}yw~}h{|w~y{|w~|lw~}" + "h{|w~dw~}Z{|w~P{}w~|y{|w~} Rs}v~g}|_{}w~{|y~}%{|p~|{|~yp~}g{}m~{}~{}m~|a{}l~|X{|m~}\\w~}kw~}a{|w~|mv~]v~r{}w~}X" + "{|v~{|v~^{}w~} n{}v~ gw~|tw~|O{|y~|uw~}]{|x~}sw~|rw~|p{|v~l{}r~}'{|w~}H{|w~} v{}w~ h{|w~T{|v~m{}w~}V{}w~}" + "S{}v~}?{|v~c{|_~|Ov~|`v~|m{}w~}Y{|v~W{|v~k{}w~}O{|v~ J{|}p~}|d{|Z~}d{|}p~}|-w~s{|w~ov~|v{}x~|lv~|j{|v~c{}w~}k{}" + "v~cv~}O{}w~}h{}v~|c{}w~}L{}w~}Rv~}fv~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}rt~Z{}w~}V{}w~|ru~}rv~|h{}w~|p{|v~|{v~h{|v~}g" + "{|v~}c{}w~}Rv~}g{|v~}e{}w~}m{|v~|L{|v~|Z{|v~|Y{}w~}j{|v~|^{|v~|{|v~_{}w~}{}x~}p{|w~yv~cv~}r{}v~U{|v~|W{|u~|I{|w" + "~}F{}x~}L{|w~| u{}w~|n{|v~|_v~}m{}w~}a{|w~}O{|w~}m{|v~|b{}w~}Cw~}V{|w~}m{|v~|`w~}m{|w~}Wv~Lv~Tw~}vu~|Pv~_w~}mv" + "~mv~hw~}m{|w~}b{|w~}l{}w~}`v~|m{|w~}c{|w~}lv~|Zw~}@v~|Yv~S{|w~}mv~|[v~wv~]{}w~|{w~|u{|w~yw~}]v~}y{}v~U{|w~}y{}w" + "~|V{|v~}I{|w~}Lw~|M{|w~} M{|w~x}v~}x{}v~x}w~|e{}w~}ou~|]v~l{|w~|a{|w~p{}w~|_{|w~}l{}w~}`{|w~}Mw~}m{|w~}Zv~y{}w~" + "|Y{|v~q{|v~_{|w~}m{}w~|gv~|r{|v~|r{|v~h{}w~}u{}w~tv~a{|w~}q{|w~}`v~t{}w~t{}w~|bv~|m{|w~}c{|w~}l{}w~}X{|w~}V{}w~" + "|n{|w~}bv~}j{}v~]{}v~|P{}w~}Ru~j{}v~|f{|t~}|y{|v~x{|t~}e{}w~}hv~|`{|}l~}`v~}g{|v~}f{|u~|C{}w~Bu~|`u~|{}w~yu~|`{" + "}v~|m{}v~}a{|u~|{}w~y{}v~}!{}w~|Vv~|ty~}S{|v~P{|g~}U{|w~}Lw~|N{|r~}+{}y~|u{|}o~}v{|y~}+v~}v{}v~Ew~}5{}y~|vw~r{|" + "w~|y{|y~} N{}w~ p{|w~}m{}w~|Ux~}w{|x~} Dv~}v{}v~|W{|w~p{}y~|u{}x~dw~|j{}w~c{|w~p{}y~|u{}x~`{}v~|Yv~|j{|v~dv~|" + "j{|v~dv~|j{|v~dv~|j{|v~dv~|j{|v~dv~|j{|v~l{}w~}n{|v~Wv~}K{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~h{" + "|v~}f{}w~|p{|v~|{v~h{|v~}g{|v~}i{|v~}g{|v~}i{|v~}g{|v~}i{|v~}g{|v~}i{|v~}g{|v~}b{}v~|t{|u~|cq~|l{|v~}f{}w~}j{|v" + "~|e{}w~}j{|v~|e{}w~}j{|v~|e{}w~}j{|v~|Z{|v~|V{}k~}|Zw~}k{}w~}d{}w~|n{|v~|a{}w~|n{|v~|a{}w~|n{|v~|a{}w~|n{|v~|a{" + "}w~|n{|v~|a{}w~|n{|v~|k{}w~|n{|v~}U{|w~}O{}w~}M{}w~}M{}w~}M{}w~}Bv~Lv~Lv~Lv~W{|v~lv~|`w~}m{|w~}b{|w~}l{}w~}b{|w" + "~}l{}w~}b{|w~}l{}w~}b{|w~}l{}w~}b{|w~}l{}w~}Xt|X{}w~}{}x~}r{}w~}a{|w~}mv~|a{|w~}mv~|a{|w~}mv~|a{|w~}mv~|[{|w~}y" + "{}w~|Zv~|m{|w~}\\{|w~}y{}w~| Qw~}s{}w~s{}w~fw~}f{}w~fw~}y{|y~|r{|y~}y{}w~fw~}y{|y~|l{}w~fw~}f{}w~Y{|w~P{|v~y{}w" + "~| Kv~}J{|w~|}y~|${}r~}y{}~y{|q~f{|n~|{}~yn~}_m~|V{|o~}[w~}kw~}`w~}n{|w~}^{|w~}r{|v~Wv~{}w~}]v~| o{|v~| hw" + "~t{|w~N{|y~|uw~}]w~|s{}x~|rw~|ov~|l{}s~&{|w~}H{}w~| v{}w~ h{}x~}Sv~|nv~|V{}w~}T{}v~}>{}w~}Q{}w~}J{}v~_{}w~}mv~" + "}Y{}w~}Vv~|lv~|Ov~} G{|}p~}|0{|}o~}*{}x~rw~}q{}v~|w{}w~l{|v~hv~|d{}w~}ku~c{}v~}P{}w~}i{}u~b{}w~}L{}w~}R{}v~|gv~" + "|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}qt~[{}w~}V{}w~|r{}v~|rv~|h{}w~|o{}w~}{v~g{}v~|hu~|c{}w~}R{}v~|hu~|e{}w~}lv~}L{}v~Y" + "{|v~|Y{}v~j{}v~\\{}w~}{}w~}_{|v~{w~|ow~y|v~d{}v~pv~}V{|v~|Wu~|H{|w~}F{|w~L{|w~| u{}w~m{}v~|_u~mv~|a{|v~Nv~|n{}" + "v~|b{|v~Cw~}Uv~|n{}v~|`w~}m{|w~}Wv~Lv~Tw~}uu~|Qv~_w~}mv~mv~hw~}m{|w~}b{|v~lv~|`v~}m{}w~}c{|v~m{|v~|Zw~}@{}w~|Yv" + "~S{|w~}mv~|[{}w~|y{|w~}]{|w~}{w~sw~y|w~}^{}w~}wv~}U{}w~yv~Uv~}Gw~}Lw~|M{|w~| L{|q~}v{}q~|d{|w~}p{|u~|]v~l{}w~|a" + "{|w~pv~^{|v~lv~|`{|w~|Mw~}m{|w~}Z{}w~y|v~X{}w~}pv~|`{|w~}mv~|gv~}r{|v~}r{}v~h{|v~u{}w~u{|w~}a{|w~}q{|w~}`{}w~|u" + "{}w~tv~av~}m{}w~}c{|v~lv~|X{|w~}V{|w~}n{}w~|c{|v~i{|v~|_{}v~}O{}w~}R{|v~}l{}v~|d{|r~y}v~y}s~}d{}w~}hv~|]{|}s~y}" + "|^{}v~|hu~|e{|v~}C{}w~C{}v~|^u~|}w~{}v~|^{}v~n{|v~}_{|u~|}w~{}v~} {}w~|V{}w~}ty~}S{|v~Q{}e~}V{|w~}Lw~|L{|t~*{|x" + "~|t{|y}u~}|u{|x~|*{}w~|v{|v~Fw~}5{|x~|ww|qw|y{|x~| >{|w~}mv~|Ux~}w{|x~} Ev~}v{|v~U{}x~|q{|y~}t{}x~e{}x~}j{}w" + "~b{}x~|q{|y~}t{}x~a{}v~}Y{|v~hv~|f{|v~hv~|f{|v~hv~|f{|v~hv~|f{|v~hv~|f{}v~hv~|n{|v~|n{|v~W{}v~}L{}w~}M{}w~}M{}w" + "~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~i{|u~|f{}w~|o{}w~}{v~g{}v~|hu~|h{}v~|hu~|h{}v~|hu~|h{}v~|hu~|h{}v~|hu~|c{}" + "v~|r{|u~|d{}s~|ku~|f{}v~j{}v~d{}v~j{}v~d{}v~j{}v~d{}v~j{}v~Y{|v~|V{}w~}r|Vw~}k{|w~|d{}w~m{}v~|a{}w~m{}v~|a{}w~m" + "{}v~|a{}w~m{}v~|a{}w~m{}v~|a{}w~m{}v~|k{}w~m{}u~U{|v~O{|v~M{|v~M{|v~M{|v~Bv~Lv~Lv~Lv~Vv~|n{|v~_w~}m{|w~}b{|v~lv" + "~|b{|v~lv~|b{|v~lv~|b{|v~lv~|b{|v~lv~|X{}u~X{|v~|x~}qv~|a{|w~}mv~|a{|w~}mv~|a{|w~}mv~|a{|w~}mv~|Z{}w~yv~Yv~}m{}" + "w~}[{}w~yv~ P{|w~}t{}w~t{|w~}f{|w~}h{|w~}f{|w~}yy|p{|}y{|w~}f{|w~}yy|l{|w~}f{|w~}h{|w~}Y{|w~Ov~y|v~ K{}w~}Hw~}y" + "~}\"{}t~}x{}~x{|s~d{|p~}y{}~y{|p~}]o~|T{}p~Zw~}kw~}`{}w~|o{}w~|^{}w~|qv~|X{}w~|v~|]{|v~| o{}v~j{} {|x~}t{|" + "x~}N{|y~|v{}w~}^{}x~}r{}x~}rw~|o{}v~k{}u~|%v~Hv~ u{}w~ hw~|S{}v~o{}v~U{}w~}U{}v~}>{|v~}Q{}w~}Ju~_{|v~n{|v~|Z{|" + "v~|Vv~}m{|v~|P{}v~ C{}o~}4{|o~}|({|x~}s{}w~}s{}u~|x{}w~|l{}w~}h{}w~}d{}w~}l{|v~}bu~|g{|}g{}w~}j{}u~|b{}w~}L{}w~" + "}R{|u~|hv~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}pt~\\{}w~}V{}w~|r{|v}qv~|h{}w~|nv~|v~g{|u~|j{}v~}b{}w~}R{|u~i{}v~}d{}w~}" + "l{|v~|M{}v~Y{|v~|Y{|v~|kv~}\\{|v~{v~|_{|v~|w~|o{}x~y}w~}e{|v~|p{|v~|W{|v~|X{}v~}G{|w~}F{|w~|M{|w~| u{}w~|nu~|_" + "u~}o{}v~_v~}O{}w~}o{|u~|av~}Dw~}U{}w~}o{|u~|`w~}m{|w~}Wv~Lv~Tw~}t{}v~|Rv~_w~}mv~mv~hw~}m{|w~}av~|n{|v~_u~mv~|bv" + "~|n{}v~|Zw~}@{}w~|Yv~Rv~n{}v~|[{|w~}y{}w~|\\w~}|x~}s{}x~y}w~|_{}v~v{|v~|V{|w~y}w~}Vu~Fw~}Lw~|M{|w~| K{|s~}t{}s~" + "|bv~p{}u~}]v~|mv~`{|w~q{}w~}]v~}n{}v~_{|w~|Mw~}m{|w~}Yw~y}w~|Xv~o{|w~}`{|v~n{|v~|g{}v~r{}u~rv~}gv~|v{}w~uv~|a{|" + "w~}q{|w~}`{|w~}u{}w~u{|v~au~mv~|bv~}n{}v~Vv~Uv~nv~b{}w~}hv~}`{|v~}N{}w~}Q{|v~}n{}v~}b{|c~}c{}w~}hv~|Z{|v~Z{|u~|" + "j{}v~}c{|w~B{}w~B{}x~|\\u~}w~}v~|\\{}x~|m{}x~}]{|u~}w~}v~} {{v~|V{|v~|uy~}S{|v~R{}v~y|q~}|u~W{|w~}Lw~|J{}u~*{|x" + "~|e{|x~|({}x~}u{|w~F{|x}|4{|x~|e{|x~| ={|v~n{|v~|Ux~}w{|x~} Ew~|u{|x~}U{|x~}p{}j~}iw~j{}w~b{|x~}p{}j~}f{}v~}" + "X{}w~}h{}w~}f{}w~}h{}w~}f{}w~}h{}w~}f{}w~}h{}w~}f{}w~}h{}w~}fv~}h{}w~}n{}w~}m{|v~Vu~|g{|}c{}w~}M{}w~}M{}w~}M{}w" + "~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~j{|u~}e{}w~|nv~|v~g{|u~|j{}v~}g{|u~|j{}v~}g{|u~|j{}v~}g{|u~|j{}v~}g{|u~|j{}v~}c{" + "}v~|p{|u~|e{|t~}k{}v~}e{|v~|kv~}d{|v~|kv~}d{|v~|kv~}d{|v~|kv~}Y{|v~|V{}w~}Mw~}k{}w~|d{}w~|nu~|a{}w~|nu~|a{}w~|n" + "u~|a{}w~|nu~|a{}w~|nu~|a{}w~|nu~|k{}w~|nt~|Uv~}Ov~}Mv~}Mv~}Mv~}Cv~Lv~Lv~Lv~V{}v~nv~}_w~}m{|w~}av~|n{|v~`v~|n{|v" + "~`v~|n{|v~`v~|n{|v~`v~|n{|v~W{}u~Wr~q{|v~_v~n{}v~|`v~n{}v~|`v~n{}v~|`v~n{}v~|Z{|w~y}w~}Yu~mv~|[{|w~y}w~} O{}w~}" + "u{}w~u{}w~}d{}w~}j{}w~}d{}w~}j{}w~}d{}w~}j{}w~}d{}w~}j{}w~}X{}w~O{|w~y}w~} L{}w~}G{}u~|!{|}x~}|w{}~v{}w~}b{|r~|" + "x{}~w{}s~|\\{|q~}Rq~|Zw~}kw~}`{|v~p{|v~]v~p{}w~}X{|q~[{}v~} p{|v~}ly}$v}|\"{}x~}t{}x~}Yy}|s{|y~|w{|v~|_{|w~" + "q{}x~}s{|w~n{|v~}l{|u~}%{}w~|Iw~} u{}w~L{}w~} tv}|P{|w~R{|v~|pv~}U{}w~}V{}v~}={}v~|Q{}w~}K{}v~|^v~|o{}v~Y{}v~U{" + "}v~m{}v~P{|v~}U{|v}M{}w~}F{|}q~}6{|q~}|G{|w}|^w~ru~y|x{|}t~y|}v~|kv~|h{|v~d{}w~}m{|u~|b{|u~|i{|~}g{}w~}l{|}u~}a" + "{}w~}L{}w~}Q{}u~|iv~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}ot~]{}w~}V{}w~|bv~|h{}w~|n{}q~f{}u~k{}u~a{}w~}Q{}u~k{|u~c{}w~}" + "kv~}c{|}h{|v~}Y{|v~|X{}v~l{}v~|[v~}v~]v~}w~n{}r~|ev~}n{}v~W{|v~|Y{}v~}F{|w~}Ew~}M{|w~| u{}w~|o{}u~|_t~|q{|v~}_" + "{|v~|P{|v~}pt~|a{|v~|Ew~}U{|v~|pt~|`w~}m{|w~}Wv~Lv~Tw~}s{}v~|Sv~_w~}mv~mv~hw~}m{|w~}a{}v~nv~}_u~}o{}v~a{}v~o{|u" + "~|Zw~}@{}w~|Y{}w~|Sv~|p{|u~|Zv~{|v~[v~}x~}s{|r~_{|v~|u{}v~Uq~V{}v~|Fw~}Lw~|M{|w~| I{|y}~y}|r{|}x~}|`{}w~}qs~]u~" + "n{|v~`{|w~r{|v~\\{|v~nv~}_{|w~}Mw~}m{|w~}Y{}r~X{}w~}nv~`{|v~|o{}v~|g{|v~|st~|t{|v~|g{}v~v{}w~v{|v~`{|w~}q{|w~}_" + "v~|v{}w~uv~}au~}o{}v~a{|v~nv~}Vv~U{|w~}p{}w~}bv~|h{|v~`u~M{}w~}P{|u~|q{}v~}_{}g~}|b{}w~}hv~|Z{|v~Y{}u~k{}u~a{|y" + "~A{}w~A{}~|Zl~|Z{}~|k{}~}[{|l~} yv~}Uv~}uy~}S{|v~S{}v~|x{|y}x~}|wu~X{|w~}Lw~|I{|v~}*{}x~|g{|x~}&{}y~}t{|x~ T{}x" + "~|g{|x~} <{|v~|o{}v~|Ux~}w{|x~} Ex~|t{|y~}Tw~|p{}j~}j{}x~|k{}x~}aw~|p{}j~}g{}v~}Wv~|h{|v~fv~|h{|v~fv~|h{|v~f" + "v~|h{|v~fv~|h{|v~g{|v~g{|v~|ov~|m{|v~V{|u~|i{|~}c{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~k{}t~d{}w~" + "|n{}q~f{}u~k{}u~e{}u~k{}u~e{}u~k{}u~e{}u~k{}u~e{}u~k{}u~c{}v~|n{|u~|e{}u~|l{}u~c{}v~l{}v~|c{}v~l{}v~|c{}v~l{}v~" + "|c{}v~l{}v~|Y{|v~|V{}w~}Mw~}kv~c{}w~|o{}u~|a{}w~|o{}u~|a{}w~|o{}u~|a{}w~|o{}u~|a{}w~|o{}u~|a{}w~|o{}u~|k{}w~|o{" + "}s~U{|v~|P{|v~|N{|v~|N{|v~|N{|v~|Dv~Lv~Lv~Lv~Uv~}p{}v~^w~}m{|w~}a{}v~nv~}`{}v~nv~}`{}v~nv~}`{}v~nv~}`{}v~nv~}W{" + "}u~W{}t~|qv~}_v~|p{|u~|`v~|p{|u~|`v~|p{|u~|`v~|p{|u~|Yq~Xu~}o{}v~Yq~ M{}w~}|w{}x~}v{}v~b{}w~}|m{}v~b{}w~}|m{}v~" + "b{}w~}|m{}v~b{}w~}|m{}v~W{}x~}Nq~| M{|v~F{|u~ py~|V{|}y~y}|vy~|w{|y}y~y}Y{|s~}Q{|s~|Yw~}kw~}_{}v~|s{}v~|^{|w~}p" + "{|v~X{|r~}Z{}u~} q{}v~}o{|y~}$v~}\"w~|tw~|Y{}y~}|u{|y~|x{|u~^{}x~|q{|w~s{}x~}mu~}n{|s~}&{|w~|J{|w~| u{}w~L{" + "}v~ u{|v~|P{}x~}Q{}v~|r{}v~T{}w~}W{}v~}O{}|k{}v~}P{}w~}]{}|l{}u~]{|v~|q{}v~|Yv~}U{|v~}o{}v~}Q{|v~}T{}v~M{}v~C{|" + "}t~}6{|t~}|D{}w~}^{}x~|s{|m~y}q~|k{|v~fv~|e{}w~}n{|u~}`{}u~|l{|}y~}g{}w~}n{|}t~}`{}w~}L{}w~}P{}u~}jv~|h{}w~}hv~" + "|Y{}w~}M{}w~}W{}w~}nt~^{}w~}V{}w~|bv~|h{}w~|mq~e{}u~|n{}u~|a{}w~}P{}u~|n{}u~|c{}w~}k{|v~|d{|y~}k{|u~|Y{|v~|X{|u" + "~n{|u~Z{}r~}]{}s~}n{|r~e{}v~lv~}X{|v~|Z{|u~E{|w~}E{}w~M{|w~| u{|v~p{|t~|_s~|s{|u~]u~|P{}v~}s{|s~|`u~|k{|Ww~}T{" + "}v~}s{|s~|`w~}m{|w~}Wv~Lv~Tw~}r{}v~}Tv~_w~}mv~mv~hw~}m{|w~}`v~}p{}v~|_t~|q{|v~|`v~}q{|t~|Zw~}Q{|kv~|Y{}w~}S{}v~" + "pt~|Z{}w~y}w~}[{}s~|rs~}_v~}s{}w~}V{}s~}W{}v~|Ew~}Lw~|M{|w~| r{|v~|s{}s~}^u~}ov~|_w~|s{}w~|[v~}pu~]v~|Nw~}m{|w" + "~}Y{|s~}Xv~m{}w~|a{|u~p{|u~|fv~}t{}x~}x~}t{}v~ev~}w{}w~w{|v~}`{|w~}q{|w~}_{}v~|w{}w~v{}v~`t~|q{|v~|`v~}p{}v~U{}" + "w~|Uv~|r{|v~b{|v~fv~|bu~|M{}w~}O{|u~}t{|u~}\\{|k~}|`{}w~}hv~|Z{|v~X{}u~|n{}u~|`{|@{}w~@{|Xn~|X{|i{|Y{|n~} xv~}U" + "{|v~}vy~}S{|v~T{|v~|jv~}Y{|w~}Lw~|H{|v~|*{}x~}i{}x~}${}~}s{|y~ S{}x~}i{}x~} ;{|u~p{|u~|Ux~}w{|x~} Ey~|s{|~}T" + "{}x~}o{}j~}k{|w~k{}x~}a{}x~}o{}j~}h{}v~}W{|v~fv~|h{|v~fv~|h{|v~fv~|h{|v~fv~|h{|v~fv~|h{}w~}f{}w~}p{|v~l{|v~U{}u" + "~|l{|}y~}c{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~n{|}s~c{}w~|mq~e{}u~|n{}u~|d{}u~|n{}u~|d{}u~|n{}u" + "~|d{}u~|n{}u~|d{}u~|n{}u~|d{}v~|l{|u~|et~|n{}u~|c{|u~n{|u~b{|u~n{|u~b{|u~n{|u~b{|u~n{|u~X{|v~|V{}w~}Mw~}x{|p{}v" + "~c{|v~p{|t~|a{|v~p{|t~|a{|v~p{|t~|a{|v~p{|t~|a{|v~p{|t~|a{|v~p{|t~|k{|v~p{|q~j{|gu~|Pu~|k{|_u~|k{|_u~|k{|_u~|k{" + "|Vv~Lv~Lv~Lv~U{|v~}r{}v~}^w~}m{|w~}`v~}p{}v~|_v~}p{}v~|_v~}p{}v~|_v~}p{}v~|_v~}p{}v~|W{}u~Vu~|q{}v~|_{}v~pt~|`{" + "}v~pt~|`{}v~pt~|`{}v~pt~|Y{}s~}Xt~|q{|v~|Y{}s~} Lu~}p{}u~|au~}p{}u~|au~}p{}u~|au~}p{}u~|au~}p{}u~|W{}x~}N{}s~} " + "M{|v~|Ev~} py~|Jy~|M{}t~O{|u~}Xw~}kw~}_{|t~}w|}u~}]{}w~}ov~|Xr~|Y{}t~}y| tt~|r{}x~}$v~}\"w~t{|w~X{}v~}y|y{|" + "y~y|}t~|_{|x~}ow~}tw~|m{|t~|r{|}q~}&w~}J{}w~ t{}w~L{}v~ u{|v~|Pw~|Pu~|t{}v~|\\s|}w~}r|a{}v~}Nx~}|p{}t~O{}w~}]{}" + "y~}|q{}t~|\\{}v~|s{}u~Y{|v~|T{}u~|r{}u~|_{~}|r{|}u~|T{}v~M{}v~@{|}w~}6{|w~}|A{}w~}^{|w~r{|o~}{}s~}iv~}f{}w~}e{}" + "w~}q|y}s~|_{}t~|p{|}w~}g{}w~}r|y}q~}_{}w~}g|`{}w~}O{}t~}o{|}u~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}mt~_{}w~}h|i{}w~|bv~" + "|h{}w~|m{}r~dt~}|r{|t~|`{}w~}Ot~}q{|t~}b{}w~}jv~}d{|w~}|p{|}u~}X{|v~|W{}u~|q{}u~|Z{|r~|]{|s~|mr~f{|v~|l{|v~|Y{|" + "v~|[{|u~}b|^{|w~}E{|w~|N{|w~| tv~}r{}s~|_w~y}x~}|w{|}u~|]{|u~|p{|}|^t~y|x{|}w~}w~|`{|u~|n{|y~|Xw~}St~y|x{|}w~}" + "w~|`w~}m{|w~}Wv~Lv~Tw~}q{}v~}Uv~_w~}mv~mv~hw~}m{|w~}`{}v~}r{}v~}^s~}s{|v~}_{}v~}s{|s~|Zw~}Qy~}|o{}w~}X{|v~}|U{|" + "v~}s{|s~|Z{|q~Z{|s~qs~|`{}w~}qv~}Vs~|X{}v~|Dw~}Lw~|M{|w~| qu~|u{}w~|v~}_s~|s{|u~^{}w~t{}w~}Z{|v~}|t{|}v~|]{}v~" + "|ny|^w~}m{|w~}Xs~|Y{}w~}m{|w~}a{|t~|s{}t~}f{}v~}v{|w~{w~|v{}v~}e{}v~}x{}w~x{}u~_{|w~}q{|w~}^u~}|y{}w~x{}u~}`s~}" + "s{|v~}_{|v~}|t{|}v~|U{|v~}|W{|v~|t{|v~|bu~f|v~}c{}v~}h|_{}w~}Vs}t~}v{}t~s}`{|y}t~y}|]{}w~}hv~|Z{|v~Wt~}|r{|t~|#" + "{}w~ vp~| {|p~} wv~}T{}v~}wy~}v{}~Z{|v~S{}x~|hx~}X{|w~}Lw~|G{}w~}){|w~|m{|w~|\"{|}q{} R{|w~|m{|w~| XY| ${|u~}r{" + "|t~}Ux~}w{|x~} E{}qy|T{|w~c{}x~gw~|lw~}a{|w~c{}x~e{}v~}Vv~}f{}w~}hv~}f{}w~}hv~}f{}w~}hv~}f{}w~}hv~}f{}w~}hv~|f" + "{|v~pv~}l{|v~}h|h{}t~|p{|}w~}c{}w~}g|a{}w~}g|a{}w~}g|a{}w~}g|X{}w~}M{}w~}M{}w~}M{}w~}Z{|v~r|x}q~b{}w~|m{}r~dt~}" + "|r{|t~|bt~}|r{|t~|bt~}|r{|t~|bt~}|r{|t~|bt~}|r{|t~|d{|v~|j{|v~}f{}s~}|r{|t~|a{}u~|q{}u~|a{}u~|q{}u~|a{}u~|q{}u~" + "|a{}u~|q{}u~|X{|v~|V{}w~}Mw~}xy~}y|wy|u~|bv~}r{}s~|`v~}r{}s~|`v~}r{}s~|`v~}r{}s~|`v~}r{}s~|`v~}r{}s~|jv~}r{}w~}" + "|u~|o{|}y~g{|u~|p{|}|_{|u~|n{|y~|`{|u~|n{|y~|`{|u~|n{|y~|`{|u~|n{|y~|Wv~Lv~Lv~Lv~T{}u~}|x{|}u~}]w~}m{|w~}`{}v~}" + "r{}v~}^{}v~}r{}v~}^{}v~}r{}v~}^{}v~}r{}v~}^{}v~}r{}v~}V{}u~V{|v~}r{}v~}^{|v~}s{|s~|`{|v~}s{|s~|`{|v~}s{|s~|`{|v" + "~}s{|s~|Xs~|Xs~}s{|v~}Ws~| K{}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~U{}x~}N{|s~| M" + "{|w~|D{}w~| q{|y~}K{|y~}L{}v~|N{}v~Ww~}kw~}^{|j~}\\v~|o{}w~}X{}s~W{|^~} -s~}v|}v~}$v~}#{|w~t{|x~}X{}e~|^w~|o" + "{|w~|v{}w~k{|s~}v|}t~y}v~}'{}w~Jw~} t{}w~L{}v~ u{|v~|Q{|w~O{|u~}w|}u~}\\{|e~|ab~`u~w}|x}r~|O{}w~}]{}v~w}|x}s~}Z" + "t~}w|}t~X{}w~}S{|t~y}v|}t~}^v~y}y|y}s~|S{}v~M{}v~={|}~}6{|y~}|?{}w~}]w~}q{}r~|y{}u~}h{|v~|f{|v~e{}c~|]{}s~y}v|y" + "}t~}g{}b~|^{}c~}`{}w~}N{}r~y}v|y}r~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}lt~`{}d~}i{}w~|bv~|h{}w~|lr~cr~}v|}s~}_{}w~}Ns~" + "y}v|}s~}a{}w~}j{|v~|e{|s~}u|}r~W{|v~|Vs~}v|y}t~|Xs~}\\{|s~|m{}t~}fv~}j{}v~Y{|v~|[{}\\~}^{|w~}Dw~}N{|w~| t{}u~y" + "|x{|}w~y}w~|_w~}{k~|[{|t~}|wy|}x~|^{|k~y|w~|_{|t~}|vy|y}w~|Xw~}S{|k~y|w~|`w~}m{|w~}Wv~Lv~Tw~}p{}v~}Vv~_w~}mv~mv" + "~hw~}m{|w~}_{}u~}|x{|}u~}]w~y}w~y|yy|}u~|^{}u~}|x{|}w~}w~|Zw~}Qv~}y|v{|}u~|Wm~[{}u~}w|}v~}w~|Y{}s~}Yt~}q{}t~|a{" + "}v~p{|v~|W{}t~W{}d~Uw~}Lw~|M{|w~| q{|u~}|y{|}v~{|s~br~}y|yy|}u~|^{|w~}v{}v~X{}u~}y|{y|}u~}\\{|t~}|vy|y}y~}^w~}" + "m{|w~}X{}t~Xv~|lv~|b{|s~}v|}q~x}hu~}|{y|w~}{}w~}|{|}u~c{}u~}|}w~|}t~|_{|w~}q{|v~}_{|s~}v~}s~}_w~y}w~y|yy|}u~|^{" + "}u~}y|{y|}u~}S{}r~}Z{}v~}|x{|}v~}b{|Z~c{}c~}_{}w~}Vk~v{}l~|^{|v~Y{}w~}hv~|Z{|v~Vr~}v|}s~|\"{}w~ ur~| y{|r~} vv~" + "}St~}y|y~}{y|}x~`{}b~}a{}~|f{~}W{|w~}Lw~|G{|w~}({|v~}|s{|}v~| E{|v~}|s{|}v~| X{|Z~} ${|s~}y|{y|}q~}|}Xx~}w{|x~" + "} l{}x~|c{}x~h{}x~}m{|w~|`{}x~|c{}x~f{|v~}V{|v~|f{|v~i{|v~|f{|v~i{|v~|f{|v~i{|v~|f{|v~i{|v~|f{|v~i{|v~dv~|r{|" + "v~k{|b~g{}s~y}v|y}t~}c{}c~}a{}c~}a{}c~}a{}c~}X{}w~}M{}w~}M{}w~}M{}w~}Z{|b~}a{}w~|lr~cr~}v|}s~}`r~}v|}s~}`r~}v|}" + "s~}`r~}v|}s~}`r~}v|}s~}b{|x~|h{|x~}f{}o~}v|}s~}_s~}v|y}t~|_s~}v|y}t~|_s~}v|y}t~|_s~}v|y}t~|W{|v~|V{}w~}Mw~}xk~}" + "a{}u~y|x{|}w~y}w~|`{}u~y|x{|}w~y}w~|`{}u~y|x{|}w~y}w~|`{}u~y|x{|}w~y}w~|`{}u~y|x{|}w~y}w~|`{}u~y|x{|}w~y}w~|j{}" + "u~y|x{|}u~y{|t~}|vy|}v~f{|t~}|wy|}x~|^{|t~}|vy|y}w~|_{|t~}|vy|y}w~|_{|t~}|vy|y}w~|_{|t~}|vy|y}w~|Wv~Lv~Lv~Lv~S{" + "}j~}\\w~}m{|w~}_{}u~}|x{|}u~}\\{}u~}|x{|}u~}\\{}u~}|x{|}u~}\\{}u~}|x{|}u~}\\{}u~}|x{|}u~}U{}u~V{}t~}|x{|}u~}\\{" + "}u~}w|}v~}w~|_{}u~}w|}v~}w~|_{}u~}w|}v~}w~|_{}u~}w|}v~}w~|X{}t~Ww~y}w~y|yy|}u~|W{}t~ I{}h~}\\{}h~}\\{}h~}\\{}h~" + "}\\{}h~}T{}x~}Ms~ K{|y~}C{|w~ p{}x~K{}x~Kw~|L{}x~|Ww~}kw~}]{|l~}\\{|v~n{|w~}X{|s~U{}`~} -{|h~|$v~}#{}x~}t{}x" + "~}X{|}g~|^{}x~}m{}w~}y|}v~|j{|g~}y{}v~}({|w~|L{|w~| t{}w~L{}v~ u{|v~|Q{}x~}N{}k~}[{|e~|ab~`e~|N{}w~}]{}g~}Y{|i~" + "|Xv~|R{|g~}]i~|R{}v~M{}v~;y|5{|<{}w~}]{|w~|p{|v}|w{|x}|e{}v~dv~}f{}e~}|[{}d~|g{}d~}\\{}c~}`{}w~}M{}c~}|g{}w~}hv" + "~|Y{}w~}M{}w~}W{}w~}kt~a{}d~}i{}w~|bv~|h{}w~|l{|s~b{}f~|^{}w~}M{}f~|`{}w~}iv~}e{|c~V{|v~|Uf~}W{}t~|[s~l{}t~|g{}" + "v~hv~}Z{|v~|[{}\\~}^{|w~}D{}w~N{|w~| sj~{}w~|_w~}{|m~|Y{}i~|]{|m~|{|w~|^{|f~|Xw~}R{|m~|{}w~|`w~}m{|w~}Wv~Lv~Tw" + "~}o{}v~}Wv~_w~}mv~mv~hw~}m{|w~}^h~\\w~}{k~|\\k~y|w~|Zw~}Qg~}V{|n~Zk~{}w~|Y{|s~|Y{}u~}q{|t~a{|v~|o{}v~W{|u~|W{}d" + "~Uw~}Lw~|M{|w~| p{|l~|ys~be~}\\{}v~x}u~V{}j~}Z{|h~}^w~}m{|w~}X{|u~|Y{|w~}k{}w~}b{|w~}m~|s~h{|m~xm~|b{}g~|^{|w~" + "}pr~a{|f~}^w~}{k~|\\{}j~}R{|r~}Y{}l~}a{}Z~}d{}c~}_{}w~}Vk~v{}l~|^{|v~Y{}w~}hv~|Z{|v~U{}f~|!{}w~ tt~| w{|t~} uv~" + "}R{}i~`{}b~}`{|?{|w~}Lw~|Fw~}&{}t~w}t~} A{}t~w}t~} V{|Z~} ${|w~}m~|s~Xx~}w{|x~} m{|x~}b{}x~hw~lk~k{|x~}b{}x~" + "fv~}U{}v~dv~}j{}v~dv~}j{}v~dv~}j{}v~dv~}j{}v~dv~}j{}w~}d{}w~}r{}w~}k{|b~f{}d~|c{}c~}a{}c~}a{}c~}a{}c~}X{}w~}M{}" + "w~}M{}w~}M{}w~}Z{|d~}|`{}w~|l{|s~b{}f~|^{}f~|^{}f~|^{}f~|^{}f~|`{|~|f{|~}f{|w~|}f~|]f~}]f~}]f~}]f~}V{|v~|V{}w~}" + "Mw~}xl~}_j~{}w~|_j~{}w~|_j~{}w~|_j~{}w~|_j~{}w~|_j~{}w~|ii~w{|f~e{}i~|]{|f~|^{|f~|^{|f~|^{|f~|Wv~Lv~Lv~Lv~R{}l~" + "}[w~}m{|w~}^h~Zh~Zh~Zh~Zh~){|f~Zk~{}w~|^k~{}w~|^k~{}w~|^k~{}w~|X{|u~|Ww~}{k~|V{|u~| H{|j~|Z{|j~|Z{|j~|Z{|j~|Z{|" + "j~|S{}x~}M{}u~} I{}Ax~} pw~|Lw~|L{|y~|Jy~|Vw~}kw~}[{}o~|[{}w~}mv~Wt~}T{|}b~} +{}l~}\"v~}#w~|tw~|U{|}l~}]{|w~" + "ko~|h{|j~}|w{}u~({}w~L{}w~ s{}w~Lv~| u{|v~|Qw~}M{|m~}Z{|e~|ab~`g~}|M{}w~}]{}h~|W{|k~W{}v~P{|i~|\\k~}P{}v~Mv~| " + "i{}w~}\\{}w~Jv~}d{}v~f{}g~}|X{|}h~}e{}g~}|Z{}c~}`{}w~}L{|}g~}|e{}w~}hv~|Y{}w~}M{}w~}W{}w~}jt~b{}d~}i{}w~|bv~|h{" + "}w~|ks~a{|i~}\\{}w~}L{|i~}^{}w~}i{|v~|e{}f~}U{|v~|T{}i~|Ut~Z{}u~}l{|t~g{|v~|h{|v~|[{|v~|[{}\\~}^{|w~}D{|w~N{|w~" + "| s{|l~|{}w~|_w~}x{}q~}|W{|j~|[{}p~|y{|w~|]{|g~|Xw~}P{}q~}|y{}w~|`w~}m{|w~}Wv~Lv~Tw~}n{|v~}Xv~_w~}mv~mv~hw~}m{" + "|w~}]{}l~}[w~}{|m~|Zm~|{|w~|Zw~}Qh~|T{|o~Z{|m~|{}w~|Xs~X{}u~|pu~}av~}m{}w~}Wu~V{}d~Uw~}Lw~|M{|w~| o{|n~|w{}u~b" + "f~}Z{}p~}T{}l~}X{|i~}^w~}m{|w~}Wu~Xv~|k{|v~b{|w~y|o~|{}t~g{|o~|x{|o~}`{}i~|]{|w~}p{}s~_{}j~}|]w~}{|m~|Z{}l~}P{|" + "s~}X{}n~}`X~d{}c~}_{}w~}Vk~v{}l~|^{|v~Y{}w~}hv~|Z{|v~T{|i~} {{}w~ sv~| u{|v~} tv~}Q{}j~`{}b~}#{|w~}Lw~|G{|w~}${" + "}m~} ={}m~} T{|Z~} ${|w~y|o~|{}t~Xx~}w{|x~} mw~|b{}x~i{}x~|lk~kw~|b{}x~g{|v~Tv~}d{}v~jv~}d{}v~jv~}d{}v~jv~}d" + "{}v~jv~}d{}v~k{|v~|d{|v~rv~|k{|b~e{|}h~}a{}c~}a{}c~}a{}c~}a{}c~}X{}w~}M{}w~}M{}w~}M{}w~}Z{|g~}|]{}w~|ks~a{|i~}[" + "{|i~}[{|i~}[{|i~}[{|i~}/{|w~|y{|i~}Z{}i~|[{}i~|[{}i~|[{}i~|U{|v~|V{}w~}Mw~}xm~|^{|l~|{}w~|_{|l~|{}w~|_{|l~|{}w~" + "|_{|l~|{}w~|_{|l~|{}w~|_{|l~|{}w~|i{|l~}u{|g~d{|j~|\\{|g~|]{|g~|]{|g~|]{|g~|Wv~Lv~Lv~Lv~Q{|}p~}|Zw~}m{|w~}]{}l~" + "}X{}l~}X{}l~}X{}l~}X{}l~}){|w~}l~}Y{|m~|{}w~|^{|m~|{}w~|^{|m~|{}w~|^{|m~|{}w~|Wu~Vw~}{|m~|Tu~ E{|}p~}|V{|}p~}|V" + "{|}p~}|V{|}p~}|V{|}p~}|Qw~}Lu~| i{}y~| q{|w~}M{|w~}K{|}I{|}Uw~}kw~}Y{|y}w~y}|Yv~|m{}w~|X{}u~|Q{|}e~} *{|}p~" + "}|!v~}#w~t{|w~Py|x}y~x}y|[w~|j{}r~|e{|n~}|t{}u~){|w~|N{|w~| s{}w~Lv~ t{|v~|R{|w~|L{|}p~|Y{|e~|ab~`y|}l~}|K{}w~}" + "]{|}k~|S{}o~|Vv~}N{|m~}Z{}n~}|O{}v~Mv~ h{}w~}[v~L{|v~|d{|v~|g{}k~y}y|T{|}m~}|c{}m~x}y|W{}c~}`{}w~}J{|}k~}|c{}w" + "~}hv~|Y{}w~}M{}w~}W{}w~}it~c{}d~}i{}w~|bv~|h{}w~|k{|t~_{|m~}|[{}w~}J{|l~|]{}w~}h{}w~}c{|}k~}|T{|v~R{|}m~|S{}v~}" + "Z{|u~|kt~gv~}f{}v~[{|v~|[{}\\~}^{|w~}Cw~|O{|w~| q{}p~}x{}w~|_v}vy}w~y}|S{}m~}Xy}w~y}|w{|w}|[{|l~}|Vw~}N{|}w~y}" + "|w{}w~|`v}lw}|Wv~Lv~Tv}m{|u}Yv}_w~}mv~mv~hw~}m{|w~}\\{|n~|Zw~}x{}q~}W{}q~}|y{|w~|Zw~}Q{|}l~}P{|y}s~X{}q~}x{}w~|" + "X{}u~}X{|u~o{}v~|b{}w~}kv~}X{}w~}V{}d~Uv~Lw~|M{|w~| n{|}q~}u{|}w~bv~{}o~}|X{|r~|R{|}p~}|U{}l~}|^w~}m{|w~}W{}w~" + "}Xw}|i{|w}b{|w~|{|q~|y{|t~f{|q~|v{|q~|^{|l~}[{|w~}os~]{|}o~}|[w~}x{}q~}W{|}p~}|M{|}v~}W{|p~|`{|X~|e{}c~}_{}w~}V" + "k~v{}l~|^{|v~Y{}w~}hv~|Z{|v~R{|m~}| y{}w~ rx~| s{|x~} sv~}P{|}n~}|`{}b~}#{|w~}Lw~|Ty|pv~|\"y|}u~}y| 9y|}u~}y| " + "R{|Z~} ${|w~|{|q~|y{|t~Xx~}w{|x~} y}| q{}x~}aw}j{|w~kk~l{}x~}aw}gv~}U{|v~|d{|v~|l{|v~|d{|v~|l{|v~|d{|v~|l{|v~|" + "d{|v~|l{|v~|d{|v~|l{|v}bv}|t{}w~}j{|b~c{|}m~}|_{}c~}a{}c~}a{}c~}a{}c~}X{}w~}M{}w~}M{}w~}M{}w~}Z{|m~x}y|Z{}w~|k{" + "|t~_{|m~}|X{|m~}|X{|m~}|X{|m~}|X{|m~}|.w~}v{|}n~}|X{|}m~|X{|}m~|X{|}m~|X{|}m~|S{|v~|V{}w~}Mv|wy|}u~y}|Z{}p~}x{}" + "w~|]{}p~}x{}w~|]{}p~}x{}w~|]{}p~}x{}w~|]{}p~}x{}w~|]{}p~}x{}w~|g{}o~|r{|l~}|a{}m~}Y{|l~}|Y{|l~}|Y{|l~}|Y{|l~}|U" + "v~Lv~Lv~Lv~O{|y}v~y}|Xw~}m{|w~}\\{|n~|V{|n~|V{|n~|V{|n~|V{|n~|(w~|{|n~|V{}q~}x{}w~|\\{}q~}x{}w~|\\{}q~}x{}w~|\\" + "{}q~}x{}w~|W{}w~}Vw~}x{}q~}R{}w~} B{|t}|P{|t}|P{|t}|P{|t}|P{|t}|Nw~} 3{|~} ;f| '{|y}w~}y| 8{|y~|X{|x~}" + "h{|}w~}|ay|y}w~y}| rw~}N{}w~ ?{|w~| D{}w~I{|y}w~y}|%b|\\{|x}u~y}|!y|y}u~y}y|O{|y}w~y}| {{y|}u~y}|Vy|y}v~}y| u{|" + "w~| B{|v~| 1{|y}u~y}| o{|x}u~y}y| Fv~| 7y|y}v~y}| {{y|y}q~|#y|y}u~y}y| {{|y}v~y}y| a{|w~}C{}x~}O{|w~| oy}" + "v~}|vv|!{|}t~y}|!{|y}t~y}|Sv|Av~\"v|Lv~ Rv|mv|mv|hv|lv|Z{|y}u~}|Xw~}v{|}w~y}|T{|}w~y}|w{|w~|Zv|Ny|y}u~y}| {{|y}" + "w~}|uw|W{|u}|Wv}|o{|v}av|ju|Xv~| sv~Lw~|M{}w~| ly|}v~}|Uv~yy|}v~y}|S{|y}~y}|N{|y}v~y}|Qy|y}v~x}|[v|m{|w~}W{|w~" + "|#{|w~|x{|}w~}|v{|}y~y}c{|y}x~y}ry}x~y}|Z{|y}s~}y|G{}w~}|Zy|v~}|Ww~}v{|}w~y}|T{|y}v~y}| x{|y}w~}| Ry|y}v~y}|" + " Zy| rv~}M{|y}u~}|]`| Iw~|T{|y~}|u{|u~ 5{|w~|x{|}w~}|v{|}x~}Wx~}w{|x~} {}y~} r{|y}|Kw~|L{|y}|Hv~| E" + "{|y}u~y}| qy|y}v~y}|Sy|y}v~y}|Sy|y}v~y}|Sy|y}v~y}|Sy|y}v~y}|+{|y~}r{|y}v~y}|R{|y}v~y}y|S{|y}v~y}y|S{|y}v~y" + "}y|S{|y}v~y}y| oy}v~}|vv|Zy}v~}|vv|Zy}v~}|vv|Zy}v~}|vv|Zy}v~}|vv|Zy}v~}|vv|d{|}v~y}|n{|y}u~y}y|\\{|}t~y}|U{|y}" + "t~y}|T{|y}t~y}|T{|y}t~y}|T{|y}t~y}|Rv|Lv|Lv|Lv|!v|lv|Z{|y}u~}|R{|y}u~}|R{|y}u~}|R{|y}u~}|R{|y}u~}|'{}x~|w{|y}u~" + "}|S{|y}w~}|uw|Z{|y}w~}|uw|Z{|y}w~}|uw|Z{|y}w~}|uw|Vv~|Vw~}v{|}w~y}|Qv~| Mw~| K{|y~| e{|w~Nw~" + "| ?{}w~ Cw~} .{}w~ @{|v~|d{}| Kv~| !u~| J{|w~}C{|w~O{|w~| 9w~} Iv~ bw~}9{|w~| X{|v~ rv" + "~Lw~|M{}w~| w~| D{|w~| .w~| ?{|v~}g{|x~| M{|v~ {|u~| K{|w~}Bw~|P{|w~| :{}w~} Iw~} bw~}9{" + "|w~| X{}w~| r{}w~|Mw~|Mv~ ;v~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~} )v~}Iy~} gw~|T{|l~| 4{|w~" + "|Ax~}w{|x~} {{}y~} /v~| ?x~| f{|x~ M{} %{}w~|Uw~}D{}w~| Lw~| K" + "{|y~| d{|w~Pw~| ?{|w~ C{}w~ .{|w~ ={|u~}|l{|u~| N{}v~ {{|u~| L{|q~}H{}x~}V{}q~| :v~| Iw~}" + " bw~}9{|w~| Xv~ q{}w~}Mw~|N{|v~ ;v~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~} )v~}Iy~} gw~|T{|}o~}| " + " 3{|w~|Ax~}w{|x~} {{|x~| 0v~}m{} N{|x~ e{}y~} Rv~Tw~}Dv~ S{}x~x{|w~| " + " K{|y~| c{}x~}R{}x~} >{|x~| Cw~} .{|x~| ;{}t~}|sy|}t~| N{|v~} y{|u~| M{|q~}H{|w~V" + "{}q~| ;{}v~ I{|w~} bw~}9{|w~| Y{}w~} q{|v~}|Ow~|P{|}v~} ;v~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~} " + " )v~}Iy~} gw~|Q{|y}v~y}| 1{|w~|Ax~}w{|x~} yx~| 0{}v~|p{|~} N{|x~| f{|x~ " + " S{}w~}Tw~}E{}w~} S{}x~|y{|w~ J{|y~| bw~|Sw~| >{}y~} K{}y~} 9{|p~x}q~}| N{|u~" + "| x{|u~ M{|q~} y{}q~| K{|}|p{|u~| I{}w~| bw~}9{|w~| Z{|v~ o{}q~}Tw~|U{|p~ :v~ S{|w~}W{|w~|#{|" + "w~| j{}w~ s{}w~Uw~} )v~}Iy~} gw~| W{|w~|Aw|vx| y{|x~} 0{|u~|s{}x~} N{|x~| " + " f{|x~| U{|v~Sw~}F{|v~ R{|x~}y{}w~ J{|y~| b{|x}|T{|x}| w{}g~}| Q" + "x|y}u~} v{|u~ N{|p} yp}| K{|x~}y|wy|}u~} J{|}v~ aw~}9{|w~| \\{|}v~} nq~}Tw~|U{|q~| :v~ S{|w~}" + "W{|w~|#{|w~| j{}w~ s{}w~Uw~} )v~}Iy~} gw~| W{|w~| :{|}w|}w~| /t~y}x|y}v~} U{|}|x{|w~| " + " f{}x~| W{|}v~}Sw~}H{|}v~} Qq~| J{|y} *{|}l~}| O{}q" + "~ tt| `{|i~} Lr~| aw~}9{|w~| `{}q~ l{}s~}Tw~|U{|s~}| 9v~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~" + "} )v~}Iy~} gw~| W{|w~| :{|q~ .{|i~} U{|q~ ly}w|}w~| [{}q~Rw~}" + "L{}q~ P{}r~ M{|y}u~y}y| L{}r~| R{|j~} Ks~} `w~}9{|w~| " + " `{}r~| jy|v}|Tw~|U{|u}| 6v~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~} )v~}Iy}| gw~| W{|w~| :{|r~| " + " -{|k~}| U{|r~} l{}r~} Z{}r~|Rw~}L{}r~| O{}t~ " + " k{}t~} -{|`}| `{|}m~}| Jt~} _w~}9{|w~| `{}s~| :w~| cv~ S{|w~}W{|w~|#{|w~| j{}w~ s{}" + "w~Uw~} )v~} d{|w~| 9y}w~y} ){}o~}| S{|}u~}| k{}r~ Y{}s~|Qw~" + "}L{}s~| M{}w~} j{}w~}| +{}`~} ]{|x}v~y}| Gw~y} ]w~}9{|w~" + "| `{}v~}| 8w~| cv~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~} g{|w~| 8{|}v~y}| Ly| " + " g{|y}w~}| X{}v~}|Ow~}L{}v~}| Iy| " + "l{}`~} Ww~| " + " L{}`~} Ww}| " + " r{" }; + + // Define a 104x128 binary font (huge sans). + static const char *const data_font_huge[] = { + " " + " " + " " + " " + " " + " " + " " + " " + " FY AY " + "'Z ;W @Y @Y 'Z Y @Y (Z :Y ?Y (Z 0Y ?Y (Z >X " + " " + " " + " " + " " + " )X AX '\\ )XAV 7YDY -] BY BY '[ +YEY 2X AY (\\ -YDY 'XAU 3Y AY (\\ )XAV 8YD" + "Y LY AY (\\ ,YEY #Y " + " " + " " + " " + " (X CX '^ +[CU 6ZEY .` C" + "X CY '] -ZEZ 2X CY (^ .ZEZ )[CU 2Y CY (] *[CU 7ZEZ LY CY (] -ZEZ %Y " + " " + " " + " " + " " + " 'Y EY '^ ,^FV 6ZEY /b CX DX '_ .ZEZ 2Y DX '_ /ZEZ +_FV 1X CX (_ ,^FV 7ZEZ " + " KX CX (_ .ZEZ &Y " + " " + " " + " " + " %Y GY '` .aHV 6ZEY 1e DY FX" + " 'a /ZEZ 1Y FX '` /ZEZ +aHV 0X EX '` .aHV 7ZEZ JX EX (a /ZEZ &X " + " " + " " + " " + " " + " #X GX 'XNX 0dKW 6ZEY 1f DY HX &WMX 0ZEZ 0X GX 'XMW 0ZEZ ,dLX /X GX 'WMX 0dLX 7ZEZ" + " IX GX 'WMX 0ZEZ 'X :T " + " " + " " + " " + " ;X IX 'XLX 1o 5ZEY 2ZLY " + " CX IX &WKW 0ZEZ /X HX (XLX 1ZEZ ,o .Y HX (WKX 1o 6ZEZ IY IY (WKW 0ZEZ (X X MX &WH" + "W 3VHa 4ZEY 3WDW CX LX 'WGW 2ZEZ -X LX 'WHW 2ZEZ -VHa +X KX (XHW 3VHa 5ZEZ GX KX (WGW 2ZEZ )X " + " ?b " + " " + " " + " " + " ?W MW &WFW 4VF^ 3ZEY 4WBV BW MX 'WEW 3ZEZ ,W M" + "X 'WFW 3ZEZ -VF^ )X MX 'WFW 4VF^ 4ZEZ FX MX 'WFW 3ZEZ *X ?d " + " " + " " + " " + " " + " ?W X 'WDW 5UC[ 2ZEY 4VAV AW X &WDW 4ZEZ +W NW 'WDW 4ZEZ -UC[ 'W MW 'WDW 5UC[ 3ZEZ " + "EW MW 'WDW 4ZEZ +X ?f " + " " + " " + " " + " @X \"X 'WBW 6UAW 0ZEY 4V@V B" + "X !W &WBV 4ZEZ +X !W 'WBW 5ZEZ .VAW $W W 'WBW 6UAW 1ZEZ DW W 'WBV 4ZEZ +W >f " + " " + " " + " " + " " + " ?X #W 'W@W U?V AX #W &W@V NX #W &V@W 9W \"W 'W@V .W " + "\"W 'W@V !W >XHX " + " 3Y " + " " + " " + " 6W $W &V>V U?V @W $W &W>V " + " NW $X 'V>V 8W $X (W>V /X $W 'W>V #W >XFX " + " 5Z " + " " + " ,Z " + " GZ " + " #U?V NY 7Z ,X CVCW MY " + " 7Z ,X $Z 7Z ,X >Z 6Y ,X 4Z 7Y +W 7Y @Z " + " " + " +Z " + " " + " HY \"U?V " + " MY 8Y ,Y CVBV LY 9Z ,Y #Z 9Z ,Z >Z 8Y ,Y 3Y 8Z ,Y 9Y " + " ?Z " + " *Y " + " " + " IY !U?V " + " LY :Y ,[ $R>U ,V@V MZ :Y +Z #Y 9Y +Z ?R" + ">U 8Y 9Y +Z %S?U HY :Z ,[ ;Y ?[ " + " " + " )Y " + " 8U " + " 9Y V@U JY Y @Y /X 0Y K` .X " + " ^ =ZEY @Y " + " NVAV

Y E^ /X 0_ %f 1] 'c " + " @ZEZ AY MV" + "CW X *^ +]DU 7ZEZ 5U>U JY ?Y *^ -YEZ 4Y " + " ?Y *^ .ZEZ 5[ ]DU 5Y >Y +^ ,]DU 6ZEZ Y ?Y +_ .ZEZ \"Y Z G[ G\\ @e !f JX !Y " + "LY %d :Y Y Ha /X 0b *j L] D_ " + " +g A[ LY 8Z -ZEZ \"Y 1o )V FX NZ FY " + "%Y ,X NX*Z NW 3WEW H\\ #[ !Z \"[ \"[ \"[ G[7T 8g 0Y " + "@Y +_ ,_FV 7ZEZ 5U>U IY @Y +` .YEZ 3X ?X *` /ZEZ 4[:P 8_FV 4X ?Y +` ._EU 6ZEZ NX @Y *_ .ZEZ #Y ;Y" + " FYEZ ;] GU W ,X " + " FV a \"d -g >d (d +b %b 4f Bg Ie \"e \"h " + " Ge !f IX \"Y LY &e :Y Y Jc /X 0c " + " -n $g I` .j >a ;e HU .U +b Ac 2ZEZ 'b " + " 5o -] Na (c KY .Y #_ 8Y!W'Y\"X.c$X 3XGX Mf -e +d " + ",e ,e ,e \"e=V ;k 1Y BY +XNW .aGV 7ZEZ 5V@V HX AY +XNW .YEZ 3Y AY *WNW /ZEZ 4\\>T 9`GV 3" + "X AY +XNW .`GV 6ZEZ NY AX *XNW /ZEZ $Y :Y FYEZ <_ IU (Q LZ 4Z2Z 1Q " + " &g %Z +XCX MT Y Kd /X 0e 0p " + " (m Lb 1m ,\\ 5~S E~R Ah 'Z :~]+[;Z;Z Ik LW DX DW /i ?Y(Y 4h 5ZEZ" + " ,\\ ,h 7\\ -o .` $f -h NY No %_ %c @_\"X-_\"W0h&W .\\ $\\ \"\\ #\\ #\\ )g 5~a Lm D~S I~S " + "H~R H~R 6Z !Z !Z \"Z :r 8^,Y Bk 2k 2k 2k 2k (kAX+Z(Z#Z(Z$Z(Z$Y'Y&[%[ MZ Im 1X CY *WMX /bHV 7ZEZ 5V@V G" + "X CY *WLW /YEZ 2Y CY *WLW 0ZEZ 3[AW :bHV 3Y BX *WLW 0bHV 6ZEZ MY CX *XMX 0ZEZ $X 9Y FYEZ " + " =a M~i 7U (Q N_ 9_8_ 3R )k 'Z +XCX +X@X 4T >e,X Cl &X IX *X GV " + " GX 5i 0d 2p ;u !^ ?y 2o F~S @n 4j /l N\\ 8x .r Nx 7~R E} >t KZ(Z :Z \"Z 4Z-] KZ 2_'_(^-Z" + " Ep =t 5o Au 1u N~d'Z(Z)Z MZY " + " Le /X 0e 1r +r c 3o -\\ 5~S E~R Dn *Z :~]+[;Z;Z Ko " + " Y EX EY 2m @Y)Y 6l 7ZEZ 0e 2k >e 1o 0c 'j /i X !r (b 'g Eb\"W0c#X0i(W -" + "\\ $] #\\ $] #\\ (f 6~b r F~S I~S H~R H~R 6Z !Z !Z \"Z :w =^,Y Ep 6p 7p 7o 7p ,oDY+Z(Z#Z(Z$Z(Z$Y'Y%Z%Z LZ Kp" + " 1X DX *WKW /WMYJV 6ZEZ 5V@V GY EY *WKX 0YEZ 1Y EY *XKW 1ZEZ 2[EZ :WMZKV 1Y DX *WKX 1WLYKW 6ZEZ L" + "Y EY *WKW 0ZEZ %X 8Y FYEZ >c M~h 7T (S !a Y >X 8f /X 0f 3t -s c " + " 4q /^ 6~S E~R Fr ,Z :~]+[;Z;Z Ms #[ FX F[ 4n @Y*Y 6m 7ZEZ 3k 5l Bk 4o 1f )k 0k #" + "X #u (b (i Fb#X0c#W/k+X .^ %] $^ %] $^ (d 5~b\"v H~S I~S H~R H~R 6Z !Z !Z \"Z :{ A_-Y Gt :t ;t ;s ;t " + " 0sGY*Z(Z#Z(Z$Z(Z$Y'Y$Z'[ LZ Ls 2X FX *WIW 1WJc 6ZEZ 4VBV EY FX *XJW 0YEZ 0X EX )WJW 1ZEZ 1[I^ x %_ ?y 5r F~S Ct :p" + " 6s /e *^ 9| 6z#~ =~R E} B}!Z(Z :Z \"Z 4Z/\\ HZ 2`)`(_.Z Iw @y >w Ez 9z!~d'Z(Z)[ Z;Z0]/Z4Z,Z$[(Z%~^ " + "@e 2X Gf +a MX %Y LY *i :Y Y >Y 9f /X 0g 5v " + " 0u d 6_K_ 0^ 6~S E~R Gu .Z :~]+[;Z;Z w &] GX G] 6U &o ?Y+Y 7X )n 7ZEZ " + "6p 7m Eo 6o 2h *l 1l %X #v (b )k Gb$X/c$X/l,W -^ &_ %^ &_ %^ 'b 4~b$z J~S I~S H~R H~R 6Z !Z " + "!Z \"Z :~ D_-Y Hw =v >w >w >w 4wIX)Z(Z#Z(Z$Z(Z$Y'Y$[)[ KZ Mt 1X HX )WHW 2VHb 6ZEZ 4WDW DX GX )WHW 1YE" + "Z /X GX )WHW 2ZEZ 0[M` ;VHb /X GY *WHW 3VHb 5ZEZ JX GX )WHW 2ZEZ 'Y 7Y FYEZ ?e M~f " + " 7U )U %g Bh@g :W .~T 't +Z +XCX ,X@X 3T Ak1X Er (X JX 'X IV HX 8q" + " =m 7y ?y '` ?y 6s F~S Dv Y >Y " + " :] %X &] 5]C\\ 1v Nc 7\\D\\ 1_ 6~S E~R Iy 0Z :~]+[;Z;Z!y (_ H" + "X H_ 7U 'p ?Y,Y 6X *o 7ZEZ 8t 9YH] Ht 9o 3i *XG[ 1VE[ &Y %x (b *[I[ Hb$W.c%X.VE[-X " + " ._ &_ %_ '_ %_ '` 4~c%} L~S I~S H~R H~R 6Z !Z !Z \"Z :~Q F`.Y Jz @z Az Ay Az 7zKX(Z(Z#Z(Z$Z(Z$Y'Y#[*Z JZ Na" + "J_ 2X IX )WGW 2VG` 5ZEZ 4XFX CX IX )WFW 2YEZ .X IX )WFW 3ZEZ /j 8VG` -X HX *WFW 4VG` 4ZEZ IX IX " + ")WGW 2ZEZ 'X 6Y FYEZ ?XKX M~f 7T )W 'i DiAi ;X 1~V (w -Z " + "+XCX ,X@X 3T AZI[2W Es (X KX &X IV HX 9s >m 7z @z )a ?y 7t F~R Dx >t 9v 8s 2` :~P <~Q&~S" + " A~R E} E~T$Z(Z :Z \"Z 4Z2] FZ 2a+a(`/Z K| C{ C} H| =|!~d'Z(Z(Z!Z9Z1^1Z2[0[!Z+[$~^ @X $X ;Y -e MX 'Y " + "LY +[ +Y Y >Y :[ #X #Z 6\\?[ 2v F\\ " + " 8Z@[ 2` 7~S E~R J{ 1Z :~]+[;Z;Z#} +` HX Ia 8U (q >Y-Y 6X +p 7ZEZ 9bMb ;U@Y JbMb :" + "n 3ZIZ +T@Y 2R>Y 'X %y (XLV +ZEZ IXMW%X.YMW%W-R>Y.W -` '_ &` '_ &` '` 4~c'~R N~S I~S H~R H~R 6Z !Z " + "!Z \"Z :~S Ha/Y K| B| C| D} D| 9|MX'Z(Z#Z(Z$Z(Z$Y'Y\"Z+[ JZ N]B\\ 2X JX *WEW 3UE_ 5ZEZ 3YJY AX JW )WE" + "W 2YEZ -X KX (WFW 3ZEZ .f 5UE_ ,X JX )WFW 4VF_ 4ZEZ HX KX )WEW 3ZEZ (X 5Y FYEZ @YJW M~" + "e 7U *X (j EkCk =Y 3~X )x -Z +XCX ,W?X 3T BYEY3X Ft (X KX %X JV " + " IX 9u ?m 7{ A{ *a ?y 8u F~R Ez @v :v :w 4` :~Q >~S'~U C~R E} G~V$Z(Z :Z \"Z 4Z3] EZ 2a+a(a0Z M~P D" + "| E~P I} ?}!~d'Z(Z'Z\"Z9Z1^1Z1Z0Z [,Z#~^ @X $X ;Y .g MW 'Y LY +Y )Y Y " + " >Y :Z \"X \"Z 7[=Z 3aE[ E[ 9Z>[ 3` 7~S E~R L~ 2Z :~]+[;Z;Z$" + "~P -b IX Jc 9U )r >Y.Y 5X ,]DX 7ZEZ ;\\>\\ \\ 0XDX ,R=Y MX (X %hEW (SG" + "V ,YAY JSHW%W-SGW&X GX/W ,` (a '` (a '` (a 5~d(~S N~S I~S H~R H~R 6Z !Z !Z \"Z :~T Ia/Y L~P F~P F~P F~P F~P" + " <~X&Z(Z#Z(Z$Z(Z$Y'Y\"[-[ IZ \\>Z 1X LX )VCW 4UD] 4ZEZ 2f ?X LX )WDW 3YEZ ,W KX )WDW 4ZEZ -b 2UD] *W" + " KX )WDW 5UD] 3ZEZ GW LX (VCW 4ZEZ )X 4Y FYEZ @XIX M~d 7U *Y *l GmDl ?[ " + " 6~Z *`C\\ -Z +XCX ,W?W 2T CYCY5X E]CZ (X LX $X JV IX 9]E^ @m 7aGb B^Ec ,b ?y " + "9aF[ F~R E_C_ B_E^ ;]E_ ={ 7b ;~R @cBb'~V D~R E} HeBc$Z(Z :Z \"Z 4Z4] DZ 2b-b(a0Z NbCb E} GbCb J~ Aa" + "B_!~d'Z(Z'Z#[9Z2_1Z0Z2[ N[.Z\"~^ @X $X ;Y /i MW (Y LY ,Y (Y Y >Y " + " :Y !X !Y 8[;Z 1\\ 0\\:U D[ ;ZbCh%Z(Z" + "#Z(Z$Z(Z$Y'Y![.Z HZ Z;Z 1X NX )WBV 5VBZ $e >W MX )WBW !X MX )WBW #` /UBZ (W MX )WBW 6UBZ " + " 9X MW (WCW MX 3Y GXHW M~d 8U *[ +m HnFn A] 9~\\ +^=Y" + " -Z +XCX -X@X 2U DXAX5W E\\=V (X LX #X .R@V?Q ,X :\\A\\ @m 7\\>_ CY<_ -c ?y :^=V F~Q E]>^ D]@] " + " j E~R E| Ha8^$Z(Z :Z \"Z 4Z5] CZ 2b-b(b1Z `<_ FZ@d I`=` K[@d C_:Z ~b&Z(Z'Z#Z8Z2`" + "2Z0[4[ LZ/[\"~^ @X #X Y >Y ;Z " + "!X !Y 8Z9Y 6d 4[5R CZ ;Y:Z 5b 8~R D~Q MbAb 8` =~]+[;Z;Z&`=` 1f KX Lg " + " ;U *\\=T =Y0Y 4X ,Z;R 5Z3Y &W !Y3Y 3W@W EW LX *W %jEW KV -X=X @W'X W'X EX1W ,b " + "*b (b )b )b )b 7ZH~R)a:] N~R H~R G~R H~R 6Z !Z !Z \"Z :Z>j Lb0Y N_<` J`<_ J`=` J`=` J`=` @`=e%Z(Z#Z(Z$Z(Z$Y'Y" + " Z/[ HZ !Z9Y 0W X )WAW 6VAW \"d Y >Y ;Y X !Y " + " 8Y8Y 6f 6Z2P BY j BZ(Z+[;Z;Z'_9_ 3h LX Mi <" + "U *[:R V EW KW +W %kEW KV .X;W @W'W NW(X CW2X -c *c )b " + "*c )c +c 7ZHZ 2_5[ NZ !Z Z !Z >Z !Z !Z \"Z :Z7d Mc1Y ^8_ K^8^ L_8^ L_9_ L^8_ B_9b$Z(Z#Z(Z$Z(Z$Y'Y [1[ GZ !Z" + "8Y 0W !W (V?W I` :X !W (V?W X \"X (W@W *d EX !W (W@W 0X \"X (V?W !W 1Y #d ," + "e +d +d ,e #XHW LZ#Z 7U +] -o KqHp C_ X #X " + " Y >Y ;Y X X 9Z7X 6g 7Y" + " #Z =Y8Z 7d 7[ Z )_7_ Bp EZ(Z+[;Z;Z(^5^ 5j MX Nk =U +[7P Z !Z !Z \"Z :Z3a Nc1Y!^5] L]4] N^5^ N^5^ N^5] C^5_#Z(Z#Z(Z$Z(Z$Y'Y N[2Z FZ \"Z7Y /W #W (W>V H^" + " 8X #W (W>V NW \"W (W>W .h EW \"X )W>W 0W #X (V=V \"W 0Y &j 1i 0j 1j 1i &X ` .\\5U -Z +XCX -W?W =r'X>W8X EZ ;X NY !X 1XDVDX 2X " + " &X ;[;[ BWDZ 7T2\\ \"\\ 1XMZ ?Y L\\ 2Z E[7[ G\\9[ >S5[ F`7` ?YNY Y >Y ;Y X Y :Y6Y 7i 9Y \"Y " + " >Y6Y 7YNY 6[ !Z *^3] Dt GZ(Z+[;Z;Z)]2] 6l NX m >U +Z !Y4Z 3X -Y NW(W (W " + " &X)X 8VZ !Z !Z \"Z :Z1` d2Y\"]2] N]2] ]2]!^2]!]2] E]2]\"Z(Z#Z(Z$Z(Z$Y'Y MZ3[ FZ \"Z6X .V $W 'VR4[ G^1^ AZNY Y >Y ;Y X Y :Y6Y 7j :Y \"Y " + " >Y6Z 9YMY 5[ \"Z *]1] Hy IZ(Z+[;Z;Z)\\/\\ 8n X !o ?U ,[ Y5Y 2X -Y W&W )W 'W%W 9V" + "Z " + "!Z !Z \"Z :Z/_!d2Y#]0]!]0]\"]0\\!\\/\\\"]0] F\\0]#Z(Z#Z(Z$Z(Z$Y'Y M[5[ EZ \"Y5X +P " + " %_K[ CY *r 9q 8r 9r 9q *X ;Z%Z >Q JT ,b 0q MsKs Ge " + "C^ *[0R -Z +XCX .X@X @v)X=X:W CY :X Y NX 1[HVH[ 1X 'X ;Z7Z 0Z 7P,[ ![ 3XLZ ?Y M[" + " 1Z EZ4[ I[5Z ?P1Z I^-] BYLY =Z1[ H\\(T'Z-^ JZ MZ *\\$S$Z(Z :Z \"Z 4Z:] >Z 2YMX1XMY(YNZ4Z$].\\ JZ5" + "\\!\\-\\ Z4[ GZ ;Y 9Z(Z%Z'Z4Z5XNX5Z*Z:[ F[6Z [ ;X \"X =Y 5\\C[ #Y LY -Y 'Y 8X >Y " + " >Y ;Y X Y :Y6Y 7k ;Y \"Z @Z5Y 9YLY 5[ #Z +\\.] J| KZ" + "(Z+[;Z;Z*\\-\\ :p !X \"q @U ,Z NY6Y 1X -X W#V *W (W#W :U;V +X DW LW )mEW KV" + " /X9X BW*X LW*X BW3W +YLY -YMY ,YLY -YMY ,YLY -YMZ ;ZFZ 5\\'S NZ !Z Z !Z >Z !Z !Z \"Z :Z-^\"e3Y#\\.]#].\\" + "#\\-\\#\\-\\#\\-\\ H\\.]$Z(Z#Z(Z$Z(Z$Y'Y L[6Z DZ \"Y5Y /[G[ " + " DY +u =u S LU ,c 1q MtLt Hf E] )[.Q " + " -Z +XCX .W?X Bx)X=X;X DZ :X X MY 0ZIVIZ /X 'X ;Z7[ 1Z AZ ![ 4XKZ ?Y MZ 0Z EZ3Z I[5Z " + "Z J])\\ CYLY =Z1[ I\\%R'Z+] KZ MZ +\\\"R$Z(Z :Z \"Z 4Z;] =Z 2YMX1XMY(YNZ4Z$\\,\\ KZ4[\"\\+[ Z4\\ I[ ;Y 9Z(Z$Z" + "(Z4Z5WLW5Z*[<[ DZ7[ !\\ ;X \"X =Y 6\\A[ $Y LY -Y 'Y 8X >Y >Y " + " ;Y X Y :Y6Y 7l Z !Z !Z \"Z :Z,^#YNZ3Y$\\,\\#\\,\\$\\,\\%\\+\\%\\,\\ MP" + " NP N\\-]$Z(Z#Z(Z$Z(Z$Y'Y KZ7[ Dq :Z4X /XC[ EY " + " -x @x >x ?x @x -X :Z'Z ?U MU -e 2q MtLt Ig E[ 'Z,P -Z +XCX .W?W By)" + "XZ0Z" + " J\\#Q'Z*\\ KZ MZ +[ Q$Z(Z :Z \"Z 4Z<] Y 7[>[ %Y LY -Y 'Y 8X >Y >Y ;Y X Y ;Y" + "5Y 7UH_ Z !Z !Z \"Z :Z+]#YMZ4Y%\\*\\%\\*\\&\\*[%[)[%[*\\ R!R [-_%Z(Z#Z" + "(Z$Z(Z$Y'Y K[9[ Ct =Y3X /U@[ \"Q EY .z B{ " + "B{ Az B{ /X :Z'Y >V U -g 4r NvNu Ji *\\ 5X.X 6\\ 7Z1Z M[ '[ 8Z +XCX /X@X C`MTL_)W;" + "WZ0Z " + "J[ 'Z)\\ LZ MZ ,\\ \"Z(Z :Z \"Z 4Z=] ;Z 2YLX3XLY(YMZ5Z%[([ LZ3[$\\)\\\"Z3[ IZ :Y 9Z(Z$Z)Z3Z6XLX6Z(Z>[ B[:Z !" + "\\ 9X !X >Y 8[<[ &Y LY -Y 'Y 8X >Y >Y ;Y X Y ;Y5Y " + "7RB] =\\ $Z BY2Y ;YJY 3[ &Z -[(\\!~U Z(Z+[;Z;Z,\\)\\ ?\\MXL[ $X %\\LXM\\ CU" + " ,Y *Q\"R DY9Y 0X -Y #V=_?V Cm *V LV Z !Z !Z \"Z :Z*]$YMZ4Y%[([%[(['\\)\\'\\)\\'\\)[!T#T\"\\-`&Z(Z#Z(" + "Z$Z(Z$Y'Y J[:Z Bw @Y6[ .Q<[ #S GY /`Da E`C" + "` DaD` C`Da E`C` 0X 9Y(Z ?X !U .h 4r NvNu Kk .c 9X.X 7^ 7Y1Y M[ &Z 7Z +XCX /X@X C\\" + "ITFY)W;W=X BY 9X !X KY +YNVNZ *X (X ;Z4Z 2Z @Z !Z 6YJZ ?Y Z /Z DY2Z JZ1Y ,T T MZ N[ NZ HZJ" + "Y >Z0Z K[ &Z(\\ MZ MZ ,[ !Z(Z :Z \"Z 4Z>] :Z 2YLX3XLY(YLZ6Z&['\\ MZ3[$['[\"Z2Z IZ :Y 9Z(Z#Z*Z2Z7XLX7Z'[@[ @Z;" + "[ ![ 8X !X >Y 9[:[ 'Y LY -Y 'Y 8X >Y >Y ;Y X Y ;Y" + "5Y %\\ =] %Y BY2Z =ZJY 3\\ 'Z .\\'[#cLZLb!Z(Z+[;Z;Z,['[ @\\LXK[ %X &\\KXL\\ " + " DU -Z +S$T EY:Y /X -Z %V?fBU Eo +VEg=V =VZ !Z !Z \"Z :Z)\\$YLZ5Y&\\'['['\\(['['['['['[#V%V#[-a&Z(Z#Z(Z$" + "Z(Z$Y'Y IZ;Z Ay BY9^ G[ %U HY 0]<^ G^=^ F" + "^<] E]<^ G^=^ 1X 9Z)Z @Z \"U .i 5r NvNu Lm 2h ;X.X 7^ 7Y1Y N[ &[ 7Z +XCX /W?X D[GTC" + "V)W;W=W AZ :X \"Y KY *j (X (X ZY .Y3Y 3Z '\\ MZ )Z ;Z 2^ +Y ;Y " + "X Y 6Y /Y5Y $[ =` G^ !Z IZ M\\ #Y2Z =YIZ 3\\ (Z .[%[%aIZI`\"Z(Z+[;Z;Z-[%[ B\\KXJ[" + " &X '\\JXK\\ H\\ 1Z ,U&V EY;Y /X ,Z 'V@jDV Gp +UDj?V >VZ !Z !Z \"Z :Z(\\%YLZ5Y&[&['[&[)\\&[)[%[)" + "[&[$X'X%[-b&Z(Z#Z(Z$Z(Z$Y'Y I[=[ Az CY;` 5\\ $] $\\ \"\\ #\\ $] 8\\/[ 3\\ '\\ #\\ \"[ \"[ \"[ &Z &[ ![" + " #\\ #[ ![ G[@W IYBZ J]8] I\\7\\ H]8] I]8] I\\7\\ 2X 8Y*Z @Z \"U .k 5q N~o Mm 4l =X" + ".X 7^ 7Z3Z NZ %Z 6Z +XCX /W?W D[FT@S)W;W>X AZ :X \"Y JX (f &X )X ;Z3Z 2Z @Z !Z 7" + "XHZ ?Y !Z /Z CY1Y JZ1Z 2Y Y $Z Z HY JYHY ?Z/Y L[ %Z'\\ NZ MZ -[ Z(Z :Z \"Z 4Z@\\ 7Z 2YKX5XKY(YKZ7Z'[" + "$[ NZ2Z%[%[#Z2[ JZ :Y 9Z(Z#[,Z1Z8XJW7Z%ZB[ >[>Z !\\ 7X X ?Y ;[6[ (e 7YE` (e 3aEY 8c 2r 5`DX GYEa (X NX " + "0X1Z 8Y FXD`9` YD` -c 9XD` /aEX :XD] 6g 7t BX0Y LY)Y+X6Z6X)Z/Z NX)Y I} 2Y X Y 9_>W KY5Y #[ =c h >XD` " + "AT#X 5Y 6X0X LY'Y ?RCW ?~Y!X?X?X ;d 'r!~W KZ1Y =YHY 2\\ )Z /[$[%_GZG_#Z(Z+[;Z;Z-[%[ C\\JXI[ 'X (\\IXJ\\ " + " (Y d 5Z -W(X FYV=W +X HX )^ ,Y1Y HnEW KV 0X7W BW-W HW.X M^/X )" + "Y +YHY 2YHZ 1YHY 2ZHY 1YHY 2ZHY ?ZDZ 9[ LZ !Z Z !Z >Z !Z !Z \"Z :Z'[%YKZ6Y'\\%[)[$[*[%[)[%[)[%[%Y)Z&[.d'Z(Z#" + "Z(Z$Z(Z$Y'Y H[>Z @{ DY=b ;f -f -f ,e -f -f Ae7c ;e /b )c *c *c 'Y NX NX X E[ >XD` -c )c *b *c )c '\\ &bDX L" + "X0X GX0X GX0X GX0X KY)X KYE` ?Y*Y 8[4\\ K[3[ J\\4[ I[4\\ K[3[ 3X 8Z+Z AZ !U /m 6q N~o No 6o ?X.X 8_ " + "6Y3Z Z $Z 6Z +XCX 0X@X DZET>Q)W;W>W ?Y :X \"X IY 'b $X )X ;Z2Y 2Z @Z !Z 8YHZ ?Y " + "!Z 0[ CY1Y JZ1Z 5\\ \\ 'Z!Z FY LZHZ @Z/Y L[ %Z&[ NZ MZ .[ NZ(Z :Z \"Z 4ZA\\ 6Z 2YKX6YKY(YKZ7Z'[$[ NZ" + "2Z&[#Z#Z2[ JZ :Y 9Z(Z\"Z,Z1Z8XJX8Z%[D[ ZHY 1\\ *Z /[#['^EZE^$Z(Z+[;Z;Z.[#Z C[IXH[ (X ([HXI[ (" + "Z $k 9Z .Y*Z FY=Y .X ,\\ *UAnCU J^CW -VCmAV ?W>V *X IX (a /Y1Y HnEW KV 0X7W BW.X HW.W La3X " + "(Y ,ZHY 2YGY 2ZHZ 3YGY 1YHZ 3YGY @ZCZ 9[ LZ !Z Z !Z >Z !Z !Z \"Z :Z'\\&YJY6Y'[$[)[$[*[$[+[#[+[$[&[+\\([.e'Z(" + "Z#Z(Z$Z(Z$Y'Y GZ?Z ?| EY>c >l 4l 3l 2l 3l 4l Gl=h @k 5h /h /h /h )Y Y NX Y E[ ?XFd 1g .h /h /h /h )\\ )hHX " + "LY0X HY0X GX0X GX0Y LZ+Y KYGd AY*Y 9[EXD[ M[1[ L[1[ K[1[ M[1[ 4X 8Z+Y A[ !T /n 6q N~o q 8q @X.X 8` 7" + "Y3Y Z $Z 5Z +XCX 0X@X DYDT EW;W?X ?Y :X #Y IY %^ \"X )X k 5}\"~W KY0Z ?YGZ 1[ *Z /Z\"[(]CZD^%Z(Z+[;Z;Z.[#[ CYHXGY 'X 'YGXHY 'Z &o" + " ;Z /[,[ FZ?Y -X +\\ +UBoBU LZ>W -UBnAU >W@W *X JX 'c 1Y1Y HnEW KV /W7W BW.W GW/X Lc5W 'Y ," + "YFY 4ZGY 2YFY 3YGZ 3YFY 3YGZ AZCZ 9Z KZ !Z Z !Z >Z !Z !Z \"Z :Z&[&YJZ7Y'[#[*Z\"Z+[#[+[#[+[#[&[-\\'[/YM[(Z(Z#" + "Z(Z$Z(Z$Y'Y G[A[ ?} FY?] :p 8q 8q 7q 8q 8p LqAl Do 9l 3l 3l 3l +Y Y NX Y #i @XHh 5k 2l 3l 3k 2l +\\ +lKX KY0" + "X HY0X GX0X GX0Y KY,Z KYIh CZ,Z :ZCXC[ [/[ N[.Z MZ.[ [/[ 5X 7Y,Z AZ !U /o 7p M~n s :s AX.X 8` 7Z4Y Y" + " #Z 5Z +XCX 0W?X EYCT EW;W@X >Z ;X #Y HX #Z X *X ;Z1Z 3Z @Z !Z 9XFZ ?Y \"Z /Z " + "BY2Z KZ0[ [/Z 4t =YJj 3q >kJY >o 8r ;kJY GYJk .Y NX 0X5\\ 6Y FY" + "JiBi$YJk 8o ?YJj 9kJX ;YJc Z !Z !Z \"Z :Z&[&YIZ8Y([\"[+[\"[,[\"Z+Z!Z,[\"[%[/\\" + "&Z/YL[(Z(Z#Z(Z$Z(Z$Y'Y F[BZ >Z@d GY@\\ :t ;t t TAU NX;W )P9P =UAWAYAU >XDX )X LX HY 3Y1Y HnEW KV /W7W " + "AP9P 9W0X FW0X ?Y8W &Y -YEZ 5YEY 4ZFZ 5YEY 4ZEY 5YEY BZBZ :[ KZ !Z Z !Z >Z !Z !Z \"Z :Z%['YIZ8Y([!Z+Z![,Z![-" + "[![-[!Z$[1\\&[/XJZ(Z(Z#Z(Z$Z(Z$Y'Y EZCZ =Z;` HYA[ 8u oLX ;YLe ?u VAW?XAU ?ZHY (X MX EX 4Y1Y HnE" + "W KV /W7W AQ:Q :W0W EW1X Z !Z !Z \"Z :Z%['YHZ" + "9Y(Z Z+Z Z-[![-[![-Z [$[3\\%[0XI[)Z(Z#Z(Z$Z(Z$Y'Y E[E[ =Z9^ HYBZ 6v =v >w =w >v =v\"vIt Lt >t ;t ;t ;t /Y Y N" + "X Y *r BXKn qMY GYMp 0Y NX 0X8[ 2Y FYMoIp'YMq ?v BYMp ?qMX ;YMf ?u U@W?XAU >j (X " + " NX CX 5Y1Y HnEW KV /W7W AR;R ;W1X EW1W :XZ " + "!Z !Z \"Z :Z$Z'YHZ9Y)[ [-[ [.[ Z-Z NZ-Z [#[5\\$Z0XH[)Z(Z#Z(Z$Z(Z$Y'Y D[FZ w ?x >x ?w >w#wKv Nu ?v" + " =v =v =v 0Y Y NX Y +s BXLp >u \\ DX.X :c 7Z7Z!Y \"Z 4Z +XCX C~d&XBT DW=XB" + "X :[ >X $Y FY +f &X +X ;Z/Z 4Z AZ !Z ;YDZ ?YFP -Z?Q BZ ?Z5Z JZ/Z 5Z \"[ Gj Ii ;[\"X1Q,W\"YCZ BZ1" + "Z MZ \"Z$[!Z MZ /Z LZ(Z :Z \"Z 4ZH] 0Z 2YHX;XHY(YHZ:Z)Z N[!Z2Z([ NZ%Z2Z I[ ;Y 9Z(Z Z1Z,Z;XGW;Z N[L[ 4[H[ #\\" + " 1X MX AY BZ&Z 8^Ga AYN[H_ " + "YDY *X )b 6UDY%U V9W ,SU@W>W@T =h 'X X AW 5Y1Y HnEW KV /X9X ASZ !Z !Z \"Z :Z$Z'YGZ:Y)[ NZ-[ [.Z N[.Z NZ.[ NZ\"[7\\$[1XFZ)Z(Z#Z(" + "Z$Z(Z$Y'Y CZGZ ;Z6\\ IYCY 4^Ga ?^Ga @_Hb ?^Ga ?^Ga ?^Ga$^GaMaI`!bH\\ @aI` ?aI` ?aI` ?aI` 1Y Y NX Y ,u CXM^Nb" + " @aKa >aJa ?aJa ?aKa =`Ja 1\\ 0`Ic GY0X HY0X GX0X GX0Y IY0Z IYN[H_ FZ0Z X>Y&X#X%YJT9TIY&Y.TJY&X#X 8X 5Y0" + "Z CZ ;P4U 1w 9l J~m#z B[;[ EX.X :d 7Y7Y X )~Q #Z +XCX C~d&XBT DW=XCX 9\\ ?X $Y FY " + "-j (X +X ;Z/Z 4Z AZ \"Z :XCZ ?YM_ 5ZE^ IZ >Y6Z IZ0[ 5Z \"[ Jj Ci ?\\\"X6\\2X#YBY BZ1Z MZ \"Z$[!Z " + "MZ 0[ LZ(Z :Z \"Z 4ZI] /Z 2YHX;XHY(YGZ;Z)Z N[!Z3[([ NZ%Z2Z H[ ^ BcB] >_?W C^CYNY C]A] 4Y /]Bc GYNYD^ 2Y NX 0X;\\ 0Y FYNXC\\KYD](YNYC] A]B^ DcB] C^CYNX ;YNZDQ A\\" + ";V 5Y .Y1Y IY/Y&Y;_;Y\"Z;Z FZ0Y $[ 2Y X Y M];\\ F]E[JX IY9[ LY >ZKf =]=V CYNYC] K`2Z 5^ 9Y1Y!Z\"Z!^JZM^" + " K~Y!Y@X@Y E]C^ CaHl\"~W LY.Z BYBY .\\ 0Z 1Z M[-[>Z>[(Z(Z*Z;Z<[0[ N[$[ W@U =f &X !X @W 5Y1Y HnEW KV /X9X AT=T =W2X DW2W 8W=X $Y .YBY 8ZC" + "Z 7YBY 8ZCZ 7YBY 8ZBY FZ@Z ;Z IZ !Z Z !Z >Z !Z !Z \"Z :Z$[(YGZ:Y)[ NZ-Z MZ.Z N[/[ N[/[ NZ![9\\#[2YFZ)Z(Z#Z(Z" + "$Z(Z$Y'Y C[I[ ;Z5\\ JYCY 4X=^ @X=] @Y=] ?Y>^ @X=^ @X=^%X=l@\\\"_?W A]@\\ @]@\\ @^A\\ @^A\\ 1Y Y NX Y -w DXNY" + "C] A^C^ ?^C^ A^B] @^C^ ?^C^ 2\\ 1^C_ FY0X HY0X GX0X GX0Y IY0Y HcB] FY0Y ;X=X=Y(Y#Y'YJV;VIX&X.VJY(Y#Y 9W 4Z1" + "Z DZ =S4U 2y 9j I~l#{ BZ9Z EX.X :d 7Z8Y!Y *~R #Z +XCX C~d'YBT DX?XBW 7\\ @X $Y FY " + "/ZNVNZ *X ,X :Z/Z 4Z AZ #Z :XBZ ?o 9ZGc MZ =Z8[ HY0\\ 6Z \"[ Li >j C\\\"X8aGVBW$ZBZ CZ2Z LZ \"Z#Z!" + "Z MZ 0[ LZ(Z :Z \"Z 4ZJ] .Z 2YHXY 9Z(Z NZ2Z,Z\\ @^:T C\\?b D\\=\\ 5Y 0\\>a Ga?\\ 2Y NX 0X<\\ /Y Fa@\\MX@[(b@\\ B]?\\ Da?] D\\?a ;b 1Z6" + "S 5Y .Y1Y IZ1Z&Y;_;X![=Z DY1Y #[ 2Y X Y `>` I\\B[KX IY:\\ LY ?ZDa ?\\7R Cb?\\ F[3Y 5_ 9Y1Y\"Z Y!]IYJ] L" + "~Y!Y@X@Y F\\?\\ D^Ai\"~W LY.Z CZBZ .\\ 1Z 1Z LZ.[=Z>[(Z(Z*Z;Z<[0[ N[%\\ XAU V ?W3X CW3X 8X>W #Y /Z" + "BZ 9YAY 8ZBZ 9YAY 8ZBZ 9YAY FZ@Z ;Z IZ !Z Z !Z >Z !Z !Z \"Z :Z$[(YFZ;Y)Z MZ-Z MZ/[ MZ/[ N[/Z M[![;\\\"[3YE[*" + "Z(Z#Z(Z$Z(Z$Y'Y B[JZ :Z4[ JYCX 3U8\\ @U8\\ AV8\\ @U7\\ AU7[ @U8\\%U8h=\\$]9T B\\=\\ B\\=\\ B\\=\\ B\\<[ 2Y Y " + "NX Y .x Da?\\ C]?] A]?] B\\?] B]?] A]?] 3\\ 2]?] FY0X HY0X GX0X GX0Y IZ1Y Ha?] GY1Z ~d W5T 2{ 9i H~k$} DZ7Z FX.X :d 7Z9Z!X )~R #Z 0~d&XBT DX?XCX 6\\ " + " =Y EY 0ZMVMZ +X ,X :Z/Z 4Z B[ %\\ :XBZ ?q ;YHg Z \\ 0Z 6Y.Z CYAZ -\\ 2Z 1Z LZ.[=Z=[)Z(Z*Z;ZW>X@T ;a #X #X =W 6Y1Y GmEW KV .X;X @W@W @W3W BW4X 6W?X #Y /Y@Y :" + "ZAY 8Y@Y 9YAZ 9Y@Y 9YAZ GZ@Z ;Z IZ !Z Z !Z >Z !Z !Z \"Z :Z#Z(YFZ;Y)Z M[/[ MZ/[ MZ/Z LZ/Z M[ [=\\!Z3YD[*Z(Z#Z" + "(Z$Z(Z$Y'Y AZKZ 9Z4[ JYDY 3R3[ AR3[ BS3Z @S4[ AS4[ AR3[&R3e:[&]6R C\\:[ D\\:[ D\\:[ D\\:[ 3Y Y NX Y /_B] E_<" + "[ C[;[ B\\<\\ C\\<\\ C[;\\ C\\<\\ 3\\ 3\\<\\ FY0X HY0X GX0X GX0Y HY2Z H`<[ FY2Y ;X~d#Z6U 3} :h G~k%~P EY5Y FX.X ;ZNY 6Y9Z!X *~R \"Z 0~d&YCT CXAXBW 5] " + " >Y EY 2ZKVKZ -X ,X :Z/Z 4Z BZ &] :XAZ ?s =YJk #[ ;[=[ FZ1\\ 6Z \"[ #j L~d Ki J\\!X:hKVAW%Y@Y CZ5\\ L" + "[ \"Z#Z!Z MZ 0Z KZ(Z :Z \"Z 4ZL] ,Z 2YGX=XGY(YEZ=Z*[ M[\"Z4['Z LZ&Z4[ F` BY 9Z(Z MZ4Z*Z=XEW=Z Jd .ZLZ #\\ .X" + " LX BY JQ1[ D_:[ B\\ ([9_ F[7Z 6Y 1[:_ G^9Z 3Y NX 0X>\\ -Y F^;b;Z)_:Z D[:\\ F_:[ G[9^ ;_ /Y EY .Y1Y " + "HY2Z$Y=a=Y NZ@[ BY3Z %[ 0Y X Y \"eCd L[>YLX HY>^ IY AY=] @Z &_:Z DY4Y 5a :Y1Y\"Z Z$\\GYG\\ EY9Y IY@X@Y G" + "Z9[ G\\;[ 0Y 5Y.Z DZ@Y ,\\ 3Z 1Z LZ.ZUDX!T\"XW>X@U :] !X $X Z !Z !Z \"Z :Z#Z(YEZ~d&^7U 4~ 9f E~i%~R GY4Y FX.X ;ZNZ 7Y9Y!X )~R \"Z NW?W BYCT CYBXCX 6_ ?Y EZ 5ZI" + "VIZ /X ,X :Z.Y 4Z C[ )_ :YAZ ?t >YKn %Z 9\\A\\ EZ1\\ 6Z \"[ &j I~d Hi N\\ W:jLVAW&Z@Z DZ8^ KZ !Z#[\"Z " + " MZ 0Z KZ(Z :Z \"Z 4ZM] +Z 2YGY?XFY(YEZ=Z*Z L[\"Z4['Z LZ&Z4[ Fc EY 9Z(Z MZ5Z)Z>XDW=Z Ic .[NZ #\\ -X KX CY " + " )Z D^8[ D\\ '[8^ FZ5Z 7Y 2[8^ G]8Z 3Y NX 0X?[ +Y F]9`9Y)^9Z E[8[ F^8Z GZ8^ ;^ .Y EY .Y1Y GY3Y#Y=WNX=Y M" + "ZAZ AY3Y %[ /Y X Y #gEf N[W>W?U 7W <~d BX ;W 6Y1Y GmEW KV -X=X ?YBY BW4W AW5X 5W@W !Y 0Y?Z ;Y?Y :Z@Z ;Y?Y :Z?Y ;Y" + "?Y HZ?Z <[ IZ !Z Z !Z >Z !Z !Z \"Z :Z#Z(YEZY D~P JZ !Z#[\"~Q Dy Z K~] :Z \"Z 4ZN] *Z 2YFX?XF" + "Y(YDZ>Z*Z L[\"Z5\\([ LZ&Z5\\ Eg JY 9Z(Z MZ5Z)Z>XDX>Z Ib ,f $\\ ,X KX CY (Y D]6Z D[ '[7^ GZ4Z 7Y 2Z6] " + "G]7Z 4Y NX 0X@[ *Y F]8^8Z*]7Z FZ6[ G]6Z I[7] ;] -X DY .Y1Y GY3Y#Y=WNX=X L[CZ ?Y4Y &[ .X NX Y $iGh Z:XNX" + " GYHg HY CY8\\ CY $]7Z DY6Y 4b ;Y1Y#Z MZ&[EYE[ FY9Y IY@X@Y HZ7[ I[7[ 2Y 5~V DY>Y +\\ 5Z 2Z KZ/[W>W?U K~d CX ;X " + " 6Y1Y FlEW KV -Y?Y ?ZCZ CW5X AW5W 5XAX !Y 0Y>Y Y Y ;Y?Z JZ>~Q3[ I~Q G~Q F~Q G~Q 5Z !Z !Z " + "\"Z :Z#Z(YDZ=Y*[ LZ/Z L[0Z L[0Z LZ0[ LZ L[C\\ N[5X@Z*Z(Z#Z(Z$Z(Z$Y'Y ?e 7Z3[ KYDY @Y Y !Z Y Y Y 4_4Y)[ %Z3" + "Y GZ3Y FZ4Y FZ4Y 4Y Y NX Y 1[8Z F\\7Z F[7[ EZ6[ G[6[ G[6Z EZ6[ Y D~ IZ !Z#[\"~Q Dy![ K~] :Z \"Z 4h )Z 2YFX@YFY(YDZ>Z*Z KZ\"Z5\\([ LZ&Z6\\ Ck Y 9Z(Z LZ6Z(" + "Z?XDX?Z G` *d #[ +X KX CY 'Y E]6[ F[ &Z5] GY2Y 7Y 3Z4\\ G\\6Z 4Y NX 0XA[ )Y F\\7]6Y*\\5Y G[5Z G\\5Z I" + "Z5\\ ;] -X DY .Y1Y GZ5Z#Y>XMW>Y K[E[ ?Y5Y &[ .Y NX Y $XIZHZIY!Z:XNX GYHf GY DY6[ CY $\\5Y CX6Y 5c ;Y1Y#" + "Z MZ&[EYDZ FY9Y IY@X@Y IZ5Z IZ5Z 2Y 5~V EZ>Y *[ 5Z 2Z KZ/[Z EiKh 6X /XC^ BTDX U\"YA\\ 4ZCZ N~d &U>W?X>T K~d EY :W 5Y1Y EkEW KV ,YAY =ZCZ DW6X @W6" + "X 5W@W 'Z>Y Z =Y=Y ;Y>Z =Z>Y JZ>~Q3Z H~Q G~Q F~Q G~Q 5Z !Z !Z \"Z :Z#[)YDZ=Y*[ LZ/Z KZ0Z L[1[ LZ0[ L" + "Z K[E\\ M[6Y@Z*Z(Z#Z(Z$Z(Z$Y'Y >d 7Z2Z KYDY @Y Y Y NY Y !Y 4^3Z*Z $Z3Z HZ3Z HZ3Z HZ2Y 5Y Y NX Y 2[6Z G" + "\\6Y FZ5[ G[5Z GZ5[ GZ5[ G[5Z =[:_ HY0X HY0X GX0X GX0Y GZ5Y F\\5Z GY5Z Z6Y &[ .Y NX Y %WEYJYEX#Z8a GYHe FY DX4[ DY $\\5Y CY8Z 5d Y*Z KZ/Z KZ0Z L[1[ L[1[ LZ J[G\\ L[7Y?Z*Z(Z#Z(Z$Z(Z$" + "Y'Y >c 6Z2Z KYDY ?Y X NX NY Y Y 4\\1Y+[ %Z1Y HY1Y HY1Y HY1Y 5Y Y NX Y 3[5Z G[5Z HZ3Z GZ4[ HZ4Z HZ3Z GZ" + "4[ >Z9` IY0X HY0X GX0X GX0Y FY6Z F\\4Z GY6Y ;W9X9W-X JX,WD[I\\DW,W1[DW-X JX =X 1Y6Z <~d'RKY:U 5~U J" + "~T$~g'~X KY1X GX.X Z ?y DgF` *Z 2k >Z4^ 6Z \"[ 1j >~d =i -[ LW=\\C_?W)YZ=Z =YZ=Z =YZ=Z LZ=~Q3Z H~Q G~Q F~Q G~Q" + " 5Z !Z !Z \"Z Ew5[)YCZ>Y*Z KZ/Z KZ0Z KZ1[ L[1Z KZ I[I\\ K[8Y>[+Z(Z#Z(Z$Z(Z$Y'Y =a 5Z2Z KYDY ?Y Y X MX Y Y" + " 4\\1Y+Z $Y0Y IZ1Y IZ1Y IZ0X 5Y Y NX Y 3Z3Y GZ3Y HZ3Z HZ2Z IZ2Z IZ3Z GZ3Z >Z:a IY0X HY0X GX0X GX0Y FZ7Y E[" + "3Z GY6Y ;W9X9W-W HW,WC[K\\CW,W2[CW-W HW =X 1Z7Z <~d NX:U 5~V M~X%~e&~Y LX0Y HX.X =ZJY 6Y=Z W " + " NZ 3Y X@X ?]IT ?hCW 7h2X ;Y CY 7TAVAT 1X .X 8Z.Y 4Z G\\ 6g 5X=Z ?X?a EeB^ +Z /f ;[5" + "^ 4i ;~d :i 1[ LWr *Y " + "9Z(Z KZ8Z'Z@XBX@Y D\\ &` $\\ )X JX DY &X E[2Z HZ %Z3\\ IZ/X 8Y 4Z2[ GZ3Y 4Y NX 0XE\\ &Y FZ4[5Y*[4Z IZ" + "2Z H[2Y KY2[ ;[ +X DY .Y1Y FZ7Z!Y?WLX?X H[IZ ;Y7Y '[ ,Y NX NY *Q NV@WLW?U#Z8` FYHd .^FY EX2[ DX $[3Y CX8Y" + " 5YMY [/[IuI[.\\ 4X 4\\ =X =\\$\\" + " =X MZAU -Z &X8Y G~W 6X 0W<\\ FUEX MT iNW 8[D[ K~d &T=WE\\QZZeBX] ,Z 1j <[7_ 7i 8~d 7i 5[ KW=Z=" + "\\?W*Y:Y F{ FZ !Z\"Z\"~Q Dy![1j&~] :Z \"Z 4e &Z 2YDXCXDY(YBZ@Z*Z KZ\"Z[/[IuI[/\\ 3X 3\\ >X >\\\"\\ >X MZAU -Z 'X6X 5c " + "%X 1X;\\ GUEX MT NgMW 9[D[ J~d &T=m;T K~d In 4TA[ 4Y1Y BhEW 3Z DX )i 5[D[ IX9W5Z3W8WFj?TA[BX5Z KY" + ";Z @Z;Z ?Y:Y @Z;Z ?Z;Y ?Y;Z NZ<~Q3Z H~Q G~Q F~Q G~Q 5Z !Z !Z \"Z Ew5[)YAY?Y*Z KZ/Z KZ1[ KZ1[ L[1Z KZ G[M\\ IZ8" + "X<[+Z(Z#Z(Z$Z(Z$Y'Y <_ 4Z2Z KYD[ @X NX Y NY X NX 3Z/Y-Z $Z/Y KZ/Y KZ/Y KZ/Y 6Y Y NX Y 4Z2Z HZ3Y IZ1Z I" + "Z1Z JY1Z JZ1Z IZ1Z @Z;XNZ JY0X HY0X GX0X GX0Y EY8Y D[2Z GY8Y ;X9X8W.W HW-W@hAW-X4[@W.W:[:W =X 0Z9Z I" + "[ 7YY ~m 4Z 3Y W?X >g =cAW?]'[K\\5Y ;Y CZ %V M" + "X /X 7Y-Z 5Z H[ 4l ;XZ>Z.[IuI[0\\ 2X 2\\ ?X ?\\ \\ ?X MY@U 8y ;X6X 4a $X 1X9[ HUEX MT MeLW :[D[ I~d &T=l:T " + "K~d Io 5m 3Y1Y AgEW 3Z Nl 2g 3[D[%lDX5Z>mDXFk@mAW5[ LZ:Y @Y:Z ?Y:Y @Z:Y ?Y:Z AZ:Y NZ<~Q3Z H~Q G~Q F~Q G" + "~Q 5Z !Z !Z \"Z Ew5[)YAZ@Y*Z KZ/Z KZ1[ KZ1[ L[1Z K[ Gh HZ9X;[+Z(Z#Z(Z$Z(Z$Y'Y ;] 3Z2Z KYC[ AX NX Y NY Y X" + " 3Y.Y-Z $Y.Y KY.Y KY.Y KY.Y 6Y Y NX Y 4Z1Y HY2Y IZ1Z IY0Z KZ0Z KZ1Z IY0Z @Y;XMZ JY0X HY0X GX0X GX0Y DY9Y D" + "Z0Y GY9Z ;W8X8W.W HW-W?f?W.W4[?W.W:[:W =X 0Z9Y HZ 5X_@XAa*[I\\6Y ;Y CZ %V MX /X 7Y-Z 5Z I[ 3n >X;Z ] G`9\\ .Z 4s @[9` " + " =i /i ;Z IV=Y9Z>V+Z:Z G~P JZ !Z\"Z\"~Q Dy!Z1l'~] :Z \"Z 4g (Z 2YDYEXCY(YAZAZ*Z KZ\"}$Z K['z 5r /Y 9Z(Z JZ;Z" + "$ZAW@WAZ F_ %\\ $[ &X IX EY &Y FZ0Y IZ %Y/Z IY.Y 9Y 4Y0Z GY1Y 5Y NX 0XH[ \"Y FY3Z3Y+Z2Y JZ0Z IZ0Y MY0" + "Z ;Z *Z FY .Y1Y DY9Y MYAWJXAY F[MZ 8Z:Y )[ +Z MX N[ 7g1U U<^;U&Z6^ EYHj 9gJY FX/Y CY &Z2Y BYY1Y%Z" + " J[*ZBYBZ HY9Y IY@X@Y KY0Z MY/Y 4Y 6~W GZ:Z ,[ 6Z 2Z KZ/Z;Z;Z*Z(Z([>Z?[.ZHuI[1\\ 1X 1\\ @X @\\ M\\ @X NZ" + "@U 8y ;W4X 5` #X 1X8Z HUEX MT LbJW ;ZC[ H~d &T=j8U L~d Io 5l 2Y1Y @fEW 3Z Nl 0c 0[CZ&lDW5[>mEXE\\N^" + "AlAX6\\ LZ:Z AY9Y @Z:Z AY9Y @Z:Z AY9Z!Z;~Q3Z H~Q G~Q F~Q G~Q 5Z !Z !Z \"Z Ew5[)Y@ZAY*Z KZ/Z KZ1[ KZ1[ L[1Z K" + "[ Ff GZ:X:[+Z(Z#Z(Z$Z(Z$Y'Y :\\ 3Z2Z KYC\\ BY X NX NY Y X 3Y-X-Y #Y-X KY-X KY-X KY-X 6Y Y NX Y 5Z0Y HY" + "2Y IY/Y JZ0Z KZ0Z KY/Z KZ/Y AZ;WKY JY0X HY0X GX0X GX0Y DY:Z DZ0Y FY:Y :WK~KW.WK}KW-W>d>W.W5[>W.W:[:W =X /" + "Y:Z IZ 4Y=T 6~[%~b'~_%~\\ NY/X HX.X >ZHY 6Y?Y N~m 4Z 3Y !X@X ;l @[>WBe,ZG\\7Y ;Y" + " CZ %V ;~c LX 7Y-Z 5Z J\\ 2n @Y;Z N\\ G`8\\ /Z 5u A\\V+Y8Y G~R LZ !Z\"Z\"~Q" + " Dy![2l'~] :Z \"Z 4h )Z 2YCXEXCY(Y@ZBZ*Z KZ\"|#Z K['x 0q 1Y 9Z(Z IZY1Y%Z IZ*YAYBZ HY9Y IY@X@Y KY/Y MY/Y 4Y 6~W GY9Z " + "-[ 5Z 2[ LZ/Z;Z;Z*Z(Z'[?Z?[.[IuI[2~n BX B~n AX A~m AX NZ@U 8y dEW 3Z Nl ._ ,ZCZ'lEX6\\>mEWDVCZBkAX6] LY8Y BZ9Z AY8Y BZ9Z AY8Y BZ9Z!Z;~Q3Z H~Q " + "G~Q F~Q G~Q 5Z !Z !Z \"Z Ew5[)Y@ZAY*Z KZ/Z KZ1[ KZ1[ L[1Z KZ Ee FZ;Y:[+Z(Z#Z(Z$Z(Z$Y'Y :[ 2Z2Z KYB\\ CY X NX" + " NY Y Y 4Y-Y.Y #Y-X KY-X KY-Y LY-Y 7Y Y NX Y 5Z0Z IY2Y JZ/Z KZ/Y KY/Z KY/Z KZ/Y#~d$ZX /Z;Z JZ 2X>U 6~\\'~c&~^$~Z MY/X HX.X >YGZ 7Z@Y " + "N~m 4Z 3Y !X@X :n 'WBg.ZE\\8X :Y CZ %V <~e NX 6Y-Y 4Z K\\ #a AX:Z M\\ H_6[ 0Z" + " 6aI` A]?c ?f $f ?Z IW>Y7Y>V,Z8Z HZ8` MZ !Z\"Z\"Z MZ 1[2l'Z(Z :Z \"Z 4ZN] *Z 2YCXFYCY(Y@ZBZ*Z KZ\"{\"Z " + "K['v +o 2Y 9Z(Z IZq:X !U:[9U&Y5] DY?d =jLX FY/Z C[ " + ")Y1Y AX=Z 6ZIY >Y1Y%Z IZ*YAYAY HY9Y IY@X@Y KY/Y NZ/Z 5Y 5Y-Y HZ8Y .[ 4Z 1Z LZ/Z;Z;Z*Z(Z'[?Z@[-[ L[3~o BX B~o BX" + " B~o BX NZ@U 8y mFXDS?YBi?W5] CY 4Z8Y BY7Y BZ8Z CY7Y AY8Z CZ8Y!Y:Z Z !Z !Z \"Z Ew5[)Y?ZBY*Z KZ/Z KZ1[ KZ" + "1[ L[1Z KZ Dc E[=Y9[+Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z2Z KYB^ &i 0i 1i /i 0i 0i Ej-Y/Z $Z-Y MZ-Y MZ-Y LY-Y 7Y Y NX Y 5Y/" + "Z IY1X JZ/Z KZ/Z LY.Y LZ/Z KZ/Z$~d$Z=WIZ KY0X HY0X GX0X GX0Y CYX .Y;Y JZ 1Y?U 6~\\(~e'~]\"~X LX.X HX.X >YFY 7ZAZ N~m 4Z 3Y !W?X 9p +XCi0ZC\\9X " + " :Y CZ %V <~e NX 6Z.Y 4Z L\\ M^ CY:Z L[ H^4Z 0Z 7^A^ C_Ce ?c Mc @Z HW>X6Y>V,Y7Z HZ5^ NZ !Z\"" + "Z\"Z MZ 1[2l'Z(Z :Z \"Z 4ZM] +Z 2YBXGXBY(Y?ZCZ*Z KZ\"z![ LZ&w 'k 3Y 9Z(Z IZ=Z\"ZCX@XCZ Gc &Z &\\ $X HX FY " + " >q FY.Y JY $Y/Z JY,X 9Y 5Y.Y GY1Y 5Y NX 0XL\\ NY FY3Z3Y+Y1Y JY.Z JY/Z NY/Y ;Y (^ KY .Y1Y CY;Y KYCXIXCY " + "Bc 4Y\\IYMX FY/Z B\\ +Y1Y AY>Y 5ZIZ ?Y1Y%Z IZ*YAYAY HY9Y IY@X@Y KY/Y NZ" + "/Z 5Y 5Y-Y HZ8Z 0\\ 4Z 1Z LZ/Z;Z;Z*Z(Z&[@Z@[-[ L[4~p BX B~o BX B~p CX NY?U 8y mFWCQ;XAe>X6UNW CY 4Y7Z DZ7Y BZ8Z CY7Z CZ7" + "Y CY7Z#Z:Z Z !Z !Z \"Z :Z#[)Y?ZBY*Z KZ/Z KZ0Z KZ1[ L[1Z KZ Ca D[>Y8[+Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z3[ " + "KYA^ /q 9r 9q 7q 8q 9r Mq,Y/Z $Y,Y MY,Y MY,Y MZ-Y 7Y Y NX Y 5Y.Y IY1X JZ/Z KY.Z LY.Y LZ/Z KY.Z$~d$Y=XIZ KY0X" + " HY0X GX0X GX0Y CYX .YW-Y6Y HZ2\\ Z !Z\"Z\"Z MZ 1[2l'Z(Z :Z \"Z 4ZL] ,Z 2YBXGXBY(Y?Z" + "CZ*Z KZ\"x N[ LZ&x #f 3Y 9Z(Z HZ>Z\"ZCW>WCZ Hd &Z &[ #X HX FY At FY.Y JY $Y/Z JY,Y :Y 5Y.Y GY1Y 5Y NX" + " 0XM\\ MY FY3Y2Y+Y1Y JY.Z JY.Y Z/Y ;Y (b Y .Y1Y CY;Y KYCWHXCY Bb 3Y=Y *[ 6e JX Ke KzF^ !U9Y7T'Z4[ CY7] @[E" + "XNX GZ.Y Ai 9Y1Y AY>Y 5YHZ ?Y1Y&[ IZ+ZAYAY HY9Y IY@X@Y KY/Y NZ.Y 5Y 5Y-Y IZ6Y 0[ 3Z 1Z LZ/Z;Z;Z*Z(Z&\\AZA[,[ L[" + "4~p BX B~o BX C~q CX NY?U 8y Z !Z !Z \"Z :Z#[)Y>ZCY*Z K" + "Z/Z KZ0Z L[1[ L[1Z KZ B_ C[>X7[+Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z3[ KY@_ 5u XHZ KY0X HY0X GX0X GX0Y BY=Y BY.Y FY=Z 9WK~KW/WJ}JW.W:\\:W.W" + "9[:W/W9[9W >X .Z=Y JZ /X@U 6~^*~g&~Y N~V KX.Y IX.X ?ZFZ 7ZBY L~l 4Z 3Y \"X@X 3n /X" + "CZIZ2Z@\\W.Z6" + "Z IZ1[ Z !Z#[\"Z MZ 1[2l'Z(Z :Z \"Z 4ZK] -Z 2YBXHYBY(Y>ZDZ*Z KZ\"v L[ LZ&z !c 4Y 9Z(Z HZ>Z\"ZDX>XDY Ge 'Z '[ " + "\"X GX GY Dw FY.Y JY %Z/Z J~W :Y 5Y.Y GY1Y 5Y NX 0XN\\ LY FY3Y2Y+Y1Y JY.Z JY.Y Z/Y ;Y 'e $Y .Y1Y CZ=Z" + " KYDXGWDY @a 3Z>Y +[ 5d IX Ic L~d !U8X7T'Z4[ CY5\\ AZCa GY-Y @h 9Y1Y @X?Z 6ZGY ?Y1Y&[9X9Z+ZAYAZ IY9Y IY@X@Y " + "KY/Z Y-Y 5Y 5Y.Z IZ6Z 2[ 2Z 1Z M[/Z;Z<[*Z(Z%[AZB\\,[ LZ3~p BX B~o BX C~q CX NY?U 8y Z !Z !Z \"Z :Z#[)Y>ZCY*Z KZ/Z KZ0Z L[1[ L[1[ LZ A] B[?X6Z*Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z3[ KY?" + "_ 8w ?x ?w =w >w >w$~u/Y #~W M~W M~W M~W 7Y Y NX Y 6Z.Y IX0X JY-Y KY.Z MZ.Z MY-Y KY-Y$~d$Y?XFY KY0X HY0X GX0" + "X GX0Y BY>Z BY.Y EY>Y 8WK~KW/WJ}JW.W;]:W.W:[9W/W9[9W >X -Y>Z KZ .YAU 6~^*~g%~W L~T JX.Y IX.X ?YEZ 7Z" + "CZ L~k :y KY \"X@X 0m 1WCYEY3Y>\\=X 9Y BY %V <~e =l X 5Z.Y 4Z \\ E[ GY8Z JZ I]" + "2Z 2Z 8[7[ BqMZ ?^ C^ @Y GV=W4X>V-Y5Z IZ0[!Z !Z#[\"Z MZ 1[2l'Z(Z :Z \"Z 4ZJ] .Z 2YAXIXAY(Y=YDZ*Z L[\"s" + " I[ LZ&[Cc Na 5Y 9Z(Z HZ?Z YDX>XEZ Hg (Z (\\ \"X GX GY Fy FY.Y KZ %Z/Z J~W :Y 5Y.Y GY1Y 5Y NX 0e KY" + " FY3Y2Y+Y1Y KZ.Z JY.Y Y.Y ;Y &h (Y .Y1Y BY=Y IXDXGWDY ?_ 1Y?Z ,[ 4b GX Ga L~c T6V6T'Z4[ CY4\\ CZ@_ GY-Y >f " + "9Y1Y @Y@Y 5YFZ @Y1Y&Z8X9[,ZAYAZ IY9Y IY@X@Y KX.Z Y-Y 5Y 5Y.Z IY5Z 3[ 1Z 1Z M[/[WEY9T -X EY1Y 1WEW 3Z 6ZCZ 7X7" + "UKV HW*W KX6ULW CY 5Y5Z FZ5Z EY4Y FZ5Z EZ5Y EY5Z%Z9Z Z !Z !Z \"Z :Z#Z(Y=ZDY*[ LZ/Z KZ0Z L[0Z " + "LZ0[ LZ A] B[@X5Z*Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z4[ JY>` Y 8WK~KW/WJ}JW.W<_;W.W;[8W/W9[9W >X -Z?Z " + " LZ -YBU 5~^*~h%~U J~R IX.Y IX.X @ZDY 6YCZ LW 'y JY \"W?X ,j 3WCYCY4Y=\\>X 9Y CZ" + " %V <~e =l X 5Z.Y 4Z !\\ C[ IY7Z JZ I]2Z 3[ 9[5[ BoLZ ?a Ia @Y HW>X3W>V.Z4Y IZ/Z!Z !Z#[\"Z MZ 0" + "Z Z'Z(Z :Z \"Z 4ZI] /Z 2YAXIXAY(Y=ZEZ*Z L[\"o DZ LZ&Z<^ M_ 5Y 9Z(Z GZ@Z ZEX>XEZ I[MZ (Z )\\ !X GX GY " + "Gz FY.Y KZ %Y-Y J~W :Y 5Y.Y GY1Y 5Y NX 0c IY FY3Y2Y+Y1Y KZ.Z JY.Y Y.Y ;Y %j +Y .Y1Y BY=Y IYEXGXEY >] 0Y?Y ,[ " + "3` EX E_ L\\Cx NT6V6T'Z4Z BY2Z CY>^ GY-Y ;c 9Y1Y @YAZ 6ZEY @Y1Y&Z8X9[,ZAYAZ IY9Y IY@X@Y KX.Z Y-Y 5Y 5Y.Z JZ" + "4Y 4\\ 1Z 1[ NZ.[" + "WDX:U -X EY1Y 1WEW 3Z 5YBY 7W6UKV IX*W KW6UKW CY 6Z4Y FZ5Z FZ4Z GZ4Y EY4Z GZ4Y%Y8Z <[ IZ !Z " + " Z !Z >Z !Z !Z \"Z :Z#Z(Y=ZDY*[ LZ/Z L[0Z L[0Z LZ0[ LZ B_ BZAY5Z*Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z5\\ JY=` ?{ B{ Bz @z B{ " + "B{'~x/Y #~W M~W M~W M~W 7Y Y NX Y 6Z.Y IX0X JY-Y LZ-Y MZ.Z MY-Y KY-Y$~d$Y@WDY KY0X HY0X GX0X GX0Y AY@Z AY.Y " + "DY@Z 8WK~KW/WJ}JW.W=aX ,Y?Y LZ +XBU 6~_+~i%~U I~P HX.Y IX.X @ZDZ 7YCY KX " + " (y JY \"W?W (h 5XCXAX5Z<\\@Y 9Y CZ $T ;~e =l X 5Z/Z 4Z \"\\ AZ IX6Z JZ I\\1[ 4Z 8Z3Z AmKZ" + " ?d d AZ HW>X3W>V.Z4Z JZ.Z\"[ \"Z#[\"Z MZ 0Z Z'Z(Z :Z \"Z 4ZH] 0Z 2YAYKX@Y(YWCX;U -X EY1Y 1WEW 3Z Is 0YAX 8W6UJV IW)W" + " LX7UJW CY 6Z4Z GY3Y FZ4Z GY3Y FZ4Z GY3Z'Z8Z <[ IZ !Z Z !Z >Z !Z !Z \"Z :Z#Z(Yc=W.W=[6W/X:[:X >X ,Y@Z M[ " + "+YCT 5~`,~i$~S H~P HX.Y IX.X @YCZ 7ZDY KX )y HX #X@X (TNc 6WCX@X5Y:\\AX 8Y CZ :~e" + " =l !X 4Z/Z 4Z #\\ @[ KY6Z IZ I[0Z 4Z 9Z2[ @jJZ ?f %g AZ HW>X3W>V.Y2Y JZ.Z\"[ \"Z#Z!Z MZ 0Z Z'Z(Z" + " :Z \"Z 4ZG] 1Z 2Y@XKX@Y(YWBXZ !Z !Z \"Z :Z#Z(YW.W>[5W.W:[:W =W +ZAY LZ *YDU 5~`,~i#~Q F} GX.Y IX.X AZBY 7ZEZ KX " + ")y HX 6~e 9TJ_ 7XCX?X6Y9\\BX 8Y CZ KX Nl !X 4Z/Z 4Z $\\ >Z LY5Z IZ I[0Z 5Z 8Z1Z >fHY =h " + " +i @Z HW>X3W?W/Z2Z KZ.[#[ \"Z#Z!Z MZ 0Z Z'Z(Z :Z \"Z 4ZF] 2Z 2Y@XLY@Y(Y;ZGZ*[ MZ!Z /Z M[&Z7[ K\\ 6Y 9Z(Z FZ" + "BZ MYFXY FY.Y KZ %Y-Y K~X :Y 5Y.Y GY1Y 5Y NX 0e KY FY3Y2Y+Y1Y KZ-Y JY.Y" + " Y-X ;Y !m 2Y .Y1Y AZAZ GYGXEXGY >] .ZBY -[ 1e JX Ke LU4k IU8Y8T'Y2X AY0Y EX:[ FY-Z Ah 9Y1Y >XCZ 6YBY AY1Y&" + "Z8X8Z,Y@YAZ IY9Y IY@X@Y LY-Y Y-Y 5Y 5Z/Y JZ2Z 8[ .Z 0[!Z,[=Z=[)Z(Z\"]FZG]'Z M[1] 1X 1\\ @X @\\ L\\ AX DX 4" + "Z?U -Z (X4X H~W ;\\;W GTDX\"U s A[D[ 6X %T>WBXZ !Z !Z \"Z :Z$[(Y;ZFY)Z M[/[ MZ/[ MZ/Z M[/Z M[ Ee EZC" + "X3[*Z(Z#Z(Z$Z(Z$Y(Z 9Z 2Z8^ IY9` Fb=Y Eb=Y Eb=X Cb>Y Eb=Y Eb=Y*b=~V/Y #~W M~W M~W M~W 7Y Y NX Y 6Y-Z JX0X JY" + "-Y LZ-Y MY-Z MY-Y LZ-Y CZCXBY KY0X HY0X GX0X GX0Y @YBZ @Y.Y CYBY 6W8X8W.W HW-W@g@X.W?[4W.W:[:W =W *YBZ " + " MZ (XDU 5~`,~i\"~ D{ FX.Y IX.X AZBZ 7YEY IX +y GX 6~e 9TG] 8WBW>X6Y8\\DY 8Y CZ " + " KX Nl !X 4Z/Z 4Z %\\ =Z LX4Z IZ I[0Z 5Z 9Z0Z X3W?W/~S KZ-Z\"Z \"Z#Z!Z MZ 0[!Z" + "'Z(Z :Z \"Z 4ZE] 3Z 2Y?XMX?Y(Y;ZGZ)Z MZ!Z /[ N[&Z6[ K\\ 7Y 9Z(Z FZCZ LZGX^ .YCZ ." + "[ )_ KX L_ ES/e FU8Z9T'Z3X AY0Y FY:[ FY-Z Cj 9Y1Y >XCY 6ZBZ BY1Y&Z8X9[,Y@YAZ IY9Y IY@X@Y LY-Y Y-Y 5Y 5Z/Y J" + "Z2Z 9\\ .Z /Z!Z,\\>Z>[(Z(Z!]GZH^'[ N[0\\ 1X 2\\ ?X ?[ M\\ @X DX 4Z?U -Z 'W4W G~W :]>X GTDY#U s @[D[ 7" + "X %U?WAX>U ,X EY1Y 1WEW \"s 3ZC[ 9X7UHV KW(W MX7UHW CY 7~S J~S H~S I~S I~S I~S)} ;Z IZ !Z Z" + " !Z >Z !Z !Z \"Z :Z$[(Y;ZFY)Z MZ-Z MZ/[ N[/[ N[/Z MZ Eg F[EX2[*Z(Z#Z(Z$Z(Z$Y(Z 9Z 2Z9^ HY7_ G]8Y F^8Y F^8X D]8" + "Y E]8Y F^8Y+^8~V/Y #~W M~W M~W M~W 7Y Y NX Y 6Y-Z JX0X JY-Y LZ-Y MY-Z MY-Y LZ-Y BYDXAY KY0X HY0X GX0X GX0Y" + " @ZCY ?Y.Y CYBY 5W9X8W.W HW-WAiAW,WA[3W.W9Y9W >X *ZCZ 6~d IYET 4~`,~i!| By EX.Y IX.X AYAZ 7ZFY IX " + " Z 3X 6~e 9TF\\ 9WBX=W7Z7\\EX 7Y CZ KX Nl \"X 3Z/Z 4Z &\\ ;Z M~Z %Z I[0Z 6[ 9Z/" + "Y 8ZCZ 8i 6~d 5i ;Z HW>X3W?W0~T KZ-Z\"Z \"Z$[!Z MZ 0[!Z'Z(Z :Z \"Z 4ZD] 4Z 2Y?XMX?Y(Y:ZHZ)Z N[!Z /[ NZ%Z6[" + " J[ 7Y 9Z(Y DZDZ LZGW:WGZ K[GZ +Z -\\ LX EX IY L\\6Y FY.Y KZ %Y-Y K~W 9Y 5Y.Y GY1Y 5Y NX 0XM\\ MY " + "FY3Y2Y+Y1Y KZ.Z JY.Y Y-X ;Y Ji 4Y .Y1Y @YAY FYGWDXGX >` /YCY .[ $\\ LX M\\ AR+` CT9[:U'Z3X AY0Y FY9Z FY-Z " + "D` .Y1Y >YEZ 6YAZ BY1Y&Z8X9[,ZAYAZ IY9Y IY@X@Y LY.Z Y-Y 5Y 5Z/Y KZ1Z 9[ -Z /Z\"[+[>Z>[(Z(Z ^IZJ_&[ NZ.\\ 2X 3" + "\\ >X >[ \\ ?X DX 4Z?U -Z 'X6X G~W 9^@X GUDY$T Ns ?[CZ 8X %U?WAY?U ,X EY1Y 1WEW \"s 4" + "ZCZ 7W7UGV LX)X MW7UGW CY 8~T J~T I~S J~T I~T K~T*~ ;Z IZ !Z Z !Z >Z !Z !Z \"Z :Z$[(Y:ZGY)[ NZ-Z N[.Z N[/[ N" + "[/[ NZ Fi G[FX1Z)Z(Z#Z(Z$Z(Z$Z)Z 9Z 2ZX )YCY 5~d IYFU 4~`,~i!{ @x EX.Y IX.X AY@Y 7ZGZ IX Z 3X 6~e 9TD[ ;XBX=X8" + "Z6\\GY 7Y CY JX Nl \"X 2Y/Z 4Z '\\ :Z M~Z %Z I[0Z 6Z 8Z/Z \"Z 5i 9~d 8i 8Z HW>X3W?W0~U LZ-Z\"[ " + "#Z$[!Z MZ /Z!Z'Z(Z :Z \"Z 4ZC] 5Z 2Y?XNY?Y(Y:ZHZ)[ [!Z .Z NZ%Z5[ K[ 7Y 9Z(Y DZDY KZHX:XHY K[EZ ,Z .\\ KX EX" + " IY LZ4Y FY.Y KZ %Z.Y KZ X DX 4Z?U -Z 'X6X G~W " + "8^BX FUDY%U Ns =ZCZ 9X $U@W@X?T +X EY1Y 1WEW \"s 5ZCZ 7W7UFV LW(W MX8UFW CY 8~U K~T J~U K~" + "T J~U K~T*~ ;[ JZ !Z Z !Z >Z !Z !Z \"Z :Z$Z'Y9YGY)[ [-[ [.Z N[.Z NZ.[ NZ G\\L[ GZGX0Z)Z(Z#Z(Z$Z(Y#Z)Z 9Z 2~ " + "GY4] J[4Y G[4Y G[4X EZ4Y FZ4Y G[4Y,[4X 1Y #Y Y Y Y 9Y Y NX Y 6Y-Z JX0X JY-Y LZ-Y MZ.Z MY-Y KY-Y BYEW?Y" + " KY0X HY0X GX0X GX0Y ?YDY >Y.Y BYDY 4W9X9W-X JX,WD\\J[CW,WC[2W-X JX >X )YDZ 5~d HXFU 4~_+~i z @w DX.Y" + " IX.X BZ@Y 6YGZ IY Y @~e 9TCZ ;WAX=X8Y4\\HX 6Y CY JX Mj !X 2Y/Y 3Z (\\ 9Z" + " M~Z %Z I[0Z 6Z 8Z/Z \"Z 2i <~d ;i 5Z HW>X3W@W/~U LZ-[#[ #Z$Z Z MZ /Z!Z'Z(Z :Z \"Z 4ZB] 6Z 2Y>a>Y(Y9ZIZ)[ " + "Z Z .Z [%Z4Z JZ 7Y 9Z)Z DZEZ JYHX:XIZ KZD[ -Z /\\ JX EX IY MZ3Y FY.Y JY %Z/Z JY Z !Z !Z \"Z :Z%['Y9ZHY(Z [-[ Z" + "-[ Z-Z [-Z [ H\\J[ HZHY1[)Z(Z#Z(Z$Z(Y#Z)Z 9Z 2} FY2\\ KZ3Y GZ3Y GY3Y FZ3Y GZ3Y GZ3Y,Z3X 1Y #Y Y Y Y 9Y Y " + "NX Y 6Y-Z JX0X JY-Y KY.Z MZ.Z MY-Y KY-Y BYFX?Y KY0X HY0X GX0X GX0Y >YEY >Y.Y BYEZ 4X:X9W,W JW+WE\\H[EX,X" + "E[1W,W JW =X )ZEY 4~d HYHU 2~^+~i Nx >u CX.Y IX.X BY?Z 7ZHY GX Z A~e 9TCZ ~d >i 2Z GV>X3W@W0~V LZ-[\"Z " + "#Z%[ Z MZ /[\"Z'Z(Z :Z \"Z 4ZA] 7Z 2Y>a>Y(Y9ZIZ(Z Z Z .[![%Z4[ KZ 7Y 9Z)Z CZFZ JZIX:XIZ L[CZ -Z /[ IX DX J" + "Y MY2Y FY.Y JY %Z/Z JY Y CY1Y&Z9Y9Z+ZAYAY HY9Y IY@X@Y LZ/Y N" + "Y-Y 5Y 4Y0Z LZ.Y =[ *Z .[%Z(]AZA]'Z(Z L~\"[![+\\ 5X 6\\ JTEXET J[&\\ KSDXES $Y 3Y?U -Z &Y:Y F~W 5_GX DU" + "CZ9QAU DZCZ ;X $VAW?YBU +X EY1Y 1WEW DZCZ 6W7UEV NX)X MX8UEW DY 8~V L~V L~W M~V K~V M~V" + ",~P :Z JZ !Z Z !Z >Z !Z !Z \"Z :Z%['Y8ZIY(Z Z+Z Z-[![-[![-[![ I\\H[ I[JY0[(Y(Z#Z(Z$Z)Z#Z)Z 9Z 2| EY1\\ LY2Y " + "HZ2Y HZ3Y FY2Y GY2Y GY2Y-Z2X 1Y #Y Y Y Y 9Y Y NX Y 6Z.Y IX0X JY-Y KY.Z MZ.Z MY-Y KY.Z BYGX?Z KY1Y HY0X" + " GX0X GX0Y >YFZ >Y.Y AYFY 2W:X:X,W JW+XG\\F[FW+XF[1X,W JW =X (YEY 4~d GXHU 2kNRMk*tNq Mv Y 7ZIZ GY !Z A~e 9TBY `=Y(Y8ZJZ([\"[ Z " + ".[!Z$Z3Z KZ 7Y 9Z)Z CZGZ IZIW8WIZ M[AZ .Z 0\\ IX DX JY MY2Y FY.Y JY $Y/Z JY YEY CYIWBXIX @f 0YGZ 0[ LZ NX NY 'U>WMW?V&Z4Y AY/Y HY8Y" + " EZ.Y FZ %Y1Y Y CY1Y&[:Z:Z+ZAYAY HY9Y IY@X@Y LZ/Y NZ.Y 5Y 4Y0Y KZ.Z ?\\ *Z -['['\\AZB]&Z(Z K|![!Z)\\ 6" + "X 7\\ JVFXFV J[(\\ KUEXFU %Y 3Y?U -Z %YXCU *X EY1Y 1WEW" + " F[CZ 6X8UDV NW)X MX8UDW DY 8~W N~W L~W M~V L~W M~W-~P :[ KZ !Z Z !Z >Z !Z !Z \"Z :Z%['Y8ZIY([\"[+[" + "\"[,Z![-[!Z,[!Z I\\F[ J[KY/Z'Z)Z#Z)Z#Z)Z#Z)Z 9Z 2{ DY0[ MY1Y HY1Y HY2Y FY2Y HZ2Y HY1Y-Y2Y 1Z $Y Y Y Z :Y Y" + " NX Y 6Z.Y IX0X JZ.Y KY.Z MZ.Y LZ.Y KY.Z BYHX>Z KY1Y HY1Y GX0X GX0Y =YGY =Y.Y AYFY 2X;X:W+X LX*WH\\D[HX" + "*WG[0W+X LX =X (YFZ 4~d GYIU 2jLQLj*pNRNq Lt :q AX.Y IY0Y CZ>Y 6YIZ FX !Z A~e 9T" + "BZ >W?W;W8Z2\\MY 4Y DY JX 4X 1Z1Z 3Z +\\ 6Z M~Z %Z HZ0Z 8[ 7Y.Z #Z )i D~d Ci -Z GV=W4XAW/~W M" + "Z-[\"[ $Z&[ NZ MZ .Z\"Z'Z(Z :Z \"Z 4Z?] 9Z 2Y=_=Y(Y8ZJZ([\"[ Z -Z\"[$Z3[ L[ 8Y 9Z)Z BZHZ IZJX8XJY LZ@[ /Z 1\\" + " HX DX JY NY1Y FZ0Z JY $Y/Z JY YEY BXJXAWJY A[N[ 1YGY 0[ JY NX NY 'V@WLX@U$Y5[ BY/Y HX7X DZ.Y FY $Y1Y Z " + "/Z K_MZ BUC]BVBU A[D[ >X #VBW=XDU *X EY1Y 1WEW G[D[ 5W8UCV X*X LW8UCW EZ 8~W N~X M" + "~W N~X M~W N~X.~Q :[ KZ !Z Z !Z >Z !Z !Z \"Z :Z&[&Y7ZJY([\"[+[\"[,[\"Z+[#[+Z\"[ J\\D[ JZKX/['Z*[#[*Z#Z)Z#Z)Z" + " 9Z 2z CY/Z MY1Y HY2Z HY2Y GY1Y HY1Y HY1Y-Y2Z 2Z $Z !Z !Z !Z :Y Y NX Y 6Z.Y IX0X JZ/Z KY.Z LY.Y LZ/Z KY.Z " + " BYHW=Z KY1Y GX1Y GX1Y GX0Y =YHZ =Y/Z @YHY 1X;X;X*W LW)XJ\\B[IX*XI[0X*W LW Z 7ZJY EY !Z 1X@X &TAY ?X?W;W8Z1\\NX 3Y DY JX 5Y 0" + "Y1Z 3Z ,\\ 5Z M~Z %Z HZ0Z 8Z 6Y.Z #Z &i G~d Fi )X FV=X5XAW0~Y NZ-[!Z $Z&[ NZ MZ .[#Z'Z(Z :Z \"Z 4Z>] :Z 2" + "Y=_=Y(Y7ZKZ'Z#[ NZ -[#[$Z2[ M[ 8Y 9Z)Z BZHZ HYJX8XKZ M[?Z /Z 2\\ GX CX KY NY1Y FZ0Z JZ %Y/Z JZ =Y 4" + "Y0Z GY1Y 5Y NX 0XG\\ $Y FY3Y2Y+Y1Y JZ/Y IZ0Y MY/Y ;Y 8[ 8Y .Y1Y >ZGZ BYKXAXKY B[LZ 0YHY 1[ IY NX Z &VB" + "XKXBV$Y5[ BY/Y HX8Y CY/Z GY #Y1Y Z !Z !Z \"Z :Z&[&" + "Y7ZJY'[#Z)Z#[+[#[+[#[+[#[ K\\B[ K[MX.['Z*Z!Z*Z#Z)Z#Z)Z 9Z 2x AY.Z NY2Z HY2Z IY1Y GY1Y HY1Y HY2Z-X1Z 2Z $Z !Z !Z" + " !Z :Y Y NX Y 5Y/Z IX0X JZ/Z KZ/Y KY.Y LZ/Z KZ/Y AYIWW;W8Z0e 3Y EZ JX 5X /Z2Y 2Z -\\ 4Z M~Z %Z HZ0Z 8Z 6Z/Z $Z #j J~d Ii CW>X6Y" + "BX0~Y NZ-[![ %Z'\\ NZ MZ -Z#Z'Z(Z :Z \"Z 4Z=] ;Z 2Y<][ 0" + "Z 3\\ FX CX KY NY2Z FZ0Y IZ %Y/Z JZ =Y 4Y0Z GY1Y 5Y NX 0XF\\ %Y FY3Y2Y+Y1Y JZ/Y IZ0Y MY/Y ;Y 7Z 8Y" + " .Y2Z =YGY AYKW@XKY BZJZ 1YIY 1[ HY NX Y %WEYIYFW#Y5[ BY/Y HX8Y CY/Z GY #Y1Y ;XIY 6Y;Z EY1Y%Z:Z:Z*ZBYBZ " + "HY9Y IY@X@Y LZ/Y MY/Z 4Y 4Y2Y KZ,Z B[ 'Z +[+[#_FZF_$Z(Z Gt JZ$[%\\ 9X :\\ J\\IXI[ I\\/\\ K[HXI[ (Y 3Z@U -Z " + "%^F^ /Z X \"f >VBnCU >[D[ @X \"VCWZ !Z !Z \"Z :Z'[%Y6ZKY'[$[)[$[*[$[*[%[*[$[ K\\@[ Le.[&Z*Z!Z*Z\"Z*Z#Z*[ 9Z 2v " + "?Y.Z NY2Z HX1Z IY1Y GY1Y HY2Z HX1Z.Y1Z 1Y #Y Y Y Y :Y Y NX Y 5Y/Z IX0X IY/Z KZ/Y KY/Z KY/Z KZ/Y 7\\ 7ZKW" + ";Y IX1Y GX1Y GY2Y GY2Z YJX(XJY/X)X Y W;W7Y/c 2Y EY IX 5X /Z3Z 2Z .\\" + " 3Z M~Z &Z FY1Z 8[ 6Z/Z $Z i L~d Li @W>Y7YBW0Z*Y NZ-[![ %Z'[ MZ MZ -[$Z'Z(Z :Z \"Z 4Z<] Z !Z !Z \"Z :Z(\\%" + "Y6ZKY&[%[)\\&[)[%[)[%[)[%[ L\\>[ Ld.[&Z*Z!Z*Z\"Z+[\"Z+Z 8Z 2s YJY .X=X=Y(" + "X!X'YJWX.Y HY2Y CZW=X8ZC" + "W/Z*Z Z-Z N[ &Z(\\ MZ MZ -\\%Z'Z(Z :Z \"Z 4Z;] =Z 2Y<]Y 4Z2[ GY1Y 5Y NX 0XD\\ 'Y FY3Y2Y+Y1Y IY0Z IZ1Z MZ1Z ;Y 6Y" + " 8Y .Y2Z =ZIZ @XLX?WLY C[H[ 2YKZ 3[ EX NX Y $hFh\"Z7\\ BY0Y GX9Y BZ1Z FX \"Y1Y ;YKY 6Y9Y EY2Z%Z;[:Z*ZBYB" + "Y GY9Y IY@XAZ L[1Y LZ1Z 3Y 3Y3Y LZ*Z D[ &Z *[-[ aJZJa\"Z(Z Cl F\\'[\"\\ ;X <\\ F\\KXK\\ F\\3\\ H\\JXK\\ 'Y " + "2ZAU -Z 'z 1Z X Na ;V@jDV :ZCZ BX UDW;XIU 'X EY2Z 1WEW KZCZ 3X9U@V\"W*X LX9VAW H[ " + "8Z*Z\"Y)Y!Z*Z\"Z*Y!Z*Z\"Z*Z1Z3Z 8[ MZ !Z Z !Z >Z !Z !Z \"Z :Z(\\%Y5ZLY&[&['[&[([&[)\\'\\)[&[ L\\<[ Mc.[$Z,[!" + "[,[\"Z+Z!Z+Z 8Z 2n 7Y-Y NX1Z IY2[ IY2Z GY2Z HY2Z IY2[.Y2\\ 2Z $Z !Z !Z !Z ;Y Y NX Y 5Z0Y HX0X IZ1Z IY0Z KZ0" + "Y JZ1Z IZ1Z 7\\ 6YMX;Z IY3Z GY2Y GY2Y GY2Z ;YKY ;Z1Z >YJY .Y>X=X'Y#Y&XIU:UJY&YJU.X'Y#Y ;X &YJZ #Z JXLU" + " -dIQId%kKRKk El 2j >X.Y HY2Y CY;Z 7ZMZ BZ #Z 3X@X %TAX @WZ 2Y;[;Y(Y5ZMZ&\\([ LZ +['[\"Z0[ Z 7Y 8[,Z ?YKZ EYLX6XLY [:[ 2Z 5\\ DX BX LY NY3[ F[2Z HZ %Y1" + "[ IZ >Y 3Y2[ GY1Y 5Y NX 0XC\\ (Y FY3Y2Y+Y1Y IZ2Z H[2Z LY1Z ;Y 6Z 9Y .Y2Z Z !Z" + " !Z \"Z :Z)\\$Y5ZLY%[(\\'\\(['\\(['['['[(\\ M\\:[ Ma-[$Z,Z NZ,Z![,Z!Z,[ 8Z 2Z #Y-Y NX2[ IY2[ IY2Z GY3[ HX2[ IY2" + "[.Y2\\ 2Z $Z !Z !Z Y ;Y Y NX Y 5Z1Z HX0X IZ1Z IZ1Z JZ2Z JZ1Z IZ1Z 7\\ 6c:Z IY3Z GY3Z GY3Z GY3[ ;YKY ;[2Z =" + "YLY ,Y?X>Y&Y%Y%YIS8SJY$YJS.Y&Y%Y :X &ZKY #Z IYNU ,cISIb#jKRJi Cj 1i =X.Y GY4Y BY:Y 7ZMZ AZ " + " $[,P )W?X %TBY AXXMY DZDZ 2YLY 3[ DY X Y \"eCd NY8^ CY0Y GX:Y @Z2Z FX \"Y1Y :YMY 6Y7Y " + "FY2Z%[<\\a@V 7YBY CX NV LV BZ3Z 1WEW LYBY 2W8U?V#W+X KX9U" + "?W J[ 7Z(Y#Z)Z#Z(Z$Z)Z\"Y(Z$Z(Y2Z2Z 7\\\"P NZ !Z Z !Z >Z !Z !Z \"Z :Z*\\#Y4ZMY%\\)[%[)\\&[)\\'\\)\\'\\)[ M\\8" + "[ N`-[#Z,Z NZ,Z Z-[![-[ 8Z 2Z #Y-Y NX2[ IY2[ IY3[ GY3[ HY3[ HX2[.Y3^ 2Z $Z !Z !Z !Z ZMZ DZMW4WMZ![7Z 3Z 7\\ BX AX MY NY3" + "[ F\\4Z FZ &Z3\\ HZ ?Y 3Z4\\ GY1Y 5Y NX 0X@[ *Y FY3Y2Y+Y1Y HZ3Z H\\4Z KZ3[ ;Y 5Y 9Y -Y4[ ;YKY >YNX=WNY D[D[ " + "3YMY 3[ CY X Y !cAb MZ9^ CZ2Z GX:Y @Z3Z EX \"Y1Y :YMY 7Z7Y FZ4[$Z<\\Z !Z !Z \"Z :Z+]#Y4ZMY$[*\\%\\*[%\\+\\%\\+\\%\\+\\ N\\6[ N^-\\#[.[ N[.[ [.Z NZ-Z 7Z 2Z #Y-Y NY4\\ IY3" + "\\ IY3[ GY3[ HY4\\ HX3\\.Y3^ 2Z $Z !Z !Z !Z i i 2WZ4" + "Z EY #Y1Y 9XNZ 7Y6Z GZ4[$Z=]=['ZDYDZ FY9Y HZBXBZ K]5Z J[5[ 2Y 2Z7Y L[(Z H[ #Z '\\5[ F~ LZ(Z :Z :\\-\\ KW :X :" + "V >r >V/V @s #Z 2[CU -Z +[MeL[ 5Z X G\\ :W!V 3W@W 7V!W AZ4[ 1WEW LW@W 1W7s,X-" + "Y JX8t$\\ 7Z'Z%Z'Z$Z'Y%Z'Z$Z'Y%Z'Z4Z1Z 6\\&S NZ !Z Z !Z >Z !Z !Z \"Z :Z,]\"Y3ZNY$\\,\\#\\,\\$\\,\\$\\-\\$\\," + "\\ N\\4[ ]-\\![/Z LZ/[ N[/[ N[/[ 7Z 2Z #Y-Y NY4\\ HY5] IY4\\ GY4\\ HY4\\ HY4\\.Z5` 2Z $Z !Z !Z !Z =Y Y NX Y " + "3Z4Z GX0X H[5[ GZ4Z GZ4Z H[5[ GZ4[ 6\\ 5_9[ HZ5[ GZ5[ FY5[ FY5\\ :YNZ :\\4Z ;YNY )YAXAZ\"Z+Z!Z*Y Y*Z\"Z+Z 8" + "X $YMY %[ F^ '\\FSF\\ LcGRGc >f ,c :X.Y FZ7Y BY8Y 7e >[ %[1S -Y 'X@X ;Q:TCZ CX:X=X" + "5[.] /Y HY HX NZ GZ 'X +[8Z 0Z 4\\ 0[ 'Z M\\ CZ6[ 9Z 2[3[ '[ 0Y Y ?f f BX DW=\\C_J[.Z&Z\"Z0\\ " + "J\\(T'Z._ JZ MZ *])Z'Z(Z :Z \"Z 4Z6] BZ 2Y JY(Y3e#\\.\\ JZ )]/\\ NZ.[ NQ'[ 6Y 6[0[ =ZNZ CYNX4XNY!Z4[ 5Z 8[ @X" + " AX MY NY5] F]6Z DZ &Z5] G[ AY 2[8^ GY1Y 5Y NX 0X>[ ,Y FY3Y2Y+Y1Y H[6[ G]6Z IZ5\\ ;Y 6Y 8Y -Z6\\ ;Z" + "MZ =b=b EZ@Z 3d 5[ AY X Y L[:\\ IZ;` D[4Z FXZ5[ EY #Y1Y 9c 7Z5Y GZ5\\$[>^>['[EYE[ FY9Y HZBXCZ J]5Z " + "IZ5Z 1Y 1Y8Z LZ&Z J[ \"Z &\\8] E| KZ(Z :Z :]/] JU 9X 9T

q \"Z 1ZCU -Z ,[JaI[ 6Z X F\\ :W#V 1" + "V?V 7W#W @[5[ 1WEW LV?V 1X7s,W-Y JX7t%\\ 6Z&Z&Z'Z%Z&Z&Z'Z%Z&Z&Z&Y4Y0Z 5\\(T NZ !Z Z " + "!Z >Z !Z !Z \"Z :Z.^!Y3e#\\.\\!\\.\\#].\\#]/]#\\.\\ N\\2[ ]/]![0[ L[0[ M[0[ N\\1[ 6Z 2Z #Y-Y NY5] HY5] IZ6] GY" + "5] HY5] HY5]-Y5a 3[ %[ \"[ \"[ \"[ >Y Y NX Y 3Z5[ GX0X GZ5Z F[6[ G[6[ GZ5Z F[5Z 5\\ 4^9Z FY6\\ FY6\\ FY6\\ " + "FY6] 9c 9]6Z :d )[CXBZ Z-Z NZ-[ [-Z Z-Z 7X $YNZ %Z D] $VCSDW G`FSG` ;d +c :X.Y F[9Z CZ8Y 6d =\\ " + " '\\3T -Z (W?X ;Sd c @Z EW<_Ks-Z&Z\"Z1] J^,V'Z/_ IZ MZ )]*Z'Z(Z :Z \"Z 4Z5] CZ 2Y JY(Y2d#]0\\ IZ (]1] NZ-" + "Z NS*\\ 6Y 6[1[ Z 4c 5[ @Y X Y HS3V FZZ%ZEYF[ EY9Y GZCXD[ J^7Z H[7[ 1Y 1Z:Z KZ&Z K[ !Z %];] Bx IZ(Z :Z 9]1] HS 8X 8R :n :R+R U 6W%W ?[6\\ 1WEW LU>U 0W6s-X.X HW6t&\\ 5Z&Z'Z" + "%Z&Z&Z'Z%Z&Z&Z&Z&Z6Z0Z 4],V NZ !Z Z !Z >Z !Z !Z \"Z :Z0`!Y2d\"\\0]!]0\\!]0\\!]1]!]1] \\0[ ]1] N[2\\ L\\2[ L\\" + "2[ L[1[ 6Z 2Z #Y.Y MZ7^ HY6^ HY6] GZ6] HZ7^ HZ7^-Y6c 3[ %[ \"[ \"[ \"[ ?Y Y NX Y 3[7[ FX0X G[7[ E[7[ FZ7[ F" + "[7[ E[7[ 5\\ 4]9[ FZ8] FZ8] FZ8] FZ7] 9c 9]7[ 9b '[DXD[ N[/Z LZ/[ M[0[ N[/Z 6X $d %Z C\\ ?S 2\\ETD" + "\\ 9b )a 9X.Y E[<[ BY7Z 7c ;\\ '\\5U -Z (W?W :U>TE[ CX8X?X3\\3b 1Y IY GX NZ GZ (" + "X )[;[ /Z 5[ %Q-\\ &Z BQ/] AZ9\\ 9Z 0[6\\ (\\ /Z \"[ ;a ` =Z EX[ 4b 6[ ?Y X Y " + "FZ=b E]7Z EX=Z <[9\\ D[ %Y1Y 8a 6Y3Y H\\8]#[@WNW@[%[FYG\\ EY9Y G[DXD[ J_9[ G[9[ /Y 1Z;Z LZ%Z L\\ !Z $]=\\ >t GZ" + "(Z :Z 8]3] FQ 7X 7P 8l 8P)P :m Z 0[EU -Z .[?P?[ 8Z X D[ 9W(W -T\\8] 1WEW " + " LSZ !Z !Z \"Z :Z2a Y2d\"^3] N]3^ ]3" + "] N]3] N]3] \\.[!^3] M\\4\\ J\\4\\ K\\4\\ L\\4\\ 5Z 2Z #Y.Y MZ8_ HZ8_ HZ8^ FZ8^ HZ8_ HZ8_-Z8e-Q)\\ &\\-Q G\\-Q " + "G\\-Q G\\-Q 5Y Y NX Y 2[9\\ FX0X F[9[ D\\9[ E[8[ E[9[ D\\9[ 4\\ 3[9[ EZ9^ FZ9^ FZ9^ F[9^ 9b 8^9[ 8b &[2[" + " L\\3\\ K[2[ K[2[ L\\3\\ 6X #c &Z B\\ ?S /UATAT 4a '_ 8X.Y E\\>\\ BY6Y 7c :] (\\7V " + "-Z )X@X :W@TF[ BW7X?X3]6e 1X IY GX NZ GZ (X ([=[ .Z 6[ $S1^ &Z BS3^ @\\<\\ 8Z 0]9] FR6] .Z \"[ 8^ " + " ^ ;Z DW;lMc+Z$Z#Z4_ G_2Y'Z5c GZ MZ '^/\\'Z(Z :Z \"Z 4Z3] EZ 2Y JY(Y1c!^6^ HZ '^6^ LZ,Z X1] 5Y 5]6\\ :c Ab2a" + "\"Z0[ 7Z ;\\ >X @X NY MZ:` F_:[ B\\3P D[;` E\\1S 7Y 0\\>a GY1Y 5Y NX 0X;\\ 0Y FY3Y2Y+Y1Y F[:[ E_;\\ " + "F[;_ ;Y *S1Y 6Z .[;_ :e ;`;` G[<[ 5a 6[ >Y X Y F[?YNY F_:[ DX?Z :[;\\ B[ &Y1Y 8a 7Z3Y H]:^#\\BXNWA[#[" + "GYH\\ DY9Y F\\FXF\\ I`;[ F\\;\\ /Z 2[=Z KZ$Z N\\ Z #^A] :n DZ(Z :Z 7]5] +X Mj (k NZ 0\\FUBP ;Z /[,[ " + "9Z X CZ 8X+W *R;R 4X+X =]:^ 1WEW LR;R /X5s.W.X GW5t(\\ 4Z$Z(Z%Z'Z$Z(Z$Y'Z$Z(Z$Z" + "8Z/Z 3_2Y NZ !Z Z !Z >Z !Z !Z \"Z :Z5c NY1c!^6^ L^6^ M^6^ M]5] M^6^ \\,[#a7^ K\\6] I\\6\\ J]6\\ J\\6] 5Z 2Z #" + "Y/Z LZ:` H[:` H[:_ FZ:` GZ:` GZ:`-[:YN\\0S(\\4Q C\\0S F\\0S F\\0S F\\0S 5Y Y NX Y 1[:[ EX0X F\\;\\ C\\;[ C[:" + "[ D\\;\\ C\\;\\ 4\\ 3[:\\ DZ;_ EZ;_ EZ;_ EZ;` 8a 8_;\\ 7a %\\6\\ J\\5\\ I\\6\\ I\\6\\ J\\5\\ 5X #c 'Z " + "@[ @T JT _ %] 7X.Y D^D^ BZ6Y 6b 9_ *];X -Z )X@X :ZCTH] CX7YAX1^:h 2Y JY GX NZ" + " GZ (X (\\?\\ .Z 7\\ $W7_ %Z BV8` ?\\>] 9[ /];] ET9] -Z \"[ 5[ [ 8Z DX;jLb*Z$Z#Z7a E`7\\'Z9f FZ MZ &`4^" + "'Z(Z :Z \"Z 4Z2] FZ 2Y JY(Y1c _:_ GZ &_9^ KZ,[![6^ 4Y 4]9] 8b @a2a#[/Z 7Z ;[ =X @X NY M[\\ @]7R" + " D\\=a E]4U 7Y /]Bc GY1Y 5Y NX 0X:\\ 1Y FY3Y2Y+Y1Y E\\>] E`=\\ E\\=` ;Y *U5[ 6[ /\\>a 9c :_:` GZ:Z 4` 6[ >Y " + "X Y E[AYMZ G`<[ CX@Z 9\\=\\ A\\3Q EY1Y 7` 7Y2Z I^<_\"[BWMXC\\#]IYI\\ CY9Y F]GXG] Ia=\\ E\\=\\ .[ 2[?Z J" + "Z$Z N[ NZ \"^C^ 7g @Z(Z :Z 7_9_ +X Lh &i MZ /]HUDR ;Z .Y*Y 8Z X BZ 8Y/X (Q:Q 2X/Y " + " <^<` 2WEW LQ:Q .W MV(X/X GX NW\"\\ 3Z$Z)Z#Z(Z$Z)Z#Z(Z$Z)Z#Z8Z/Z 2`7\\ NZ !Z Z !Z >Z !Z !Z \"Z :" + "Z9f MY0b _:_ J_:_ K_:_ L_9_ L_9^ N[*[$c:^ J^:^ H^:^ I^:] H]9] 4Z 2Z #YIP7[ L[] C\\=\\ A\\=\\ 3\\ 2\\=\\ C[=` E[=` E[=" + "` E[=a 8a 8`=\\ 6` #]:] H]9] G]:] G]:] H]9] 4W !a 'Z ?Z ?U KT N] $] 7X.Y Cv AZ6Z 7a 7a " + " -_?Z -Z )W?X :^GTK_ CX5XAX0_>k 3Y JX FX NZ GZ )Y ']C] ?} I~S IZ=b %Z BZ>a =]B^ 8Z ._?^ DX" + "@_ ,Z \"[ 3Y X 5Z CW:gJ`)Z\"Z$~T Cb=_'~W E~S FZ %b:a'Z(Z :Z \"Z 4Z1] G~Q)Y JY(Y0b N`>` FZ %a?` JZ+Z!^_ 8b @a2a$[.[ 8Z <~` AX ?X Y L\\@c Fb@] ?^` H`>` I`>` Ja?a Ja?` LY(Y$f?` H_>_ F_>_ G_>_ H_>" + "_ 3Z 2Z #YIS;[ K\\?c G\\?c G\\?b E\\@c F\\@c G\\?c,\\?[L^9Y'^} I~S I~ $Z B| ;^F_ 7Z -aEa Dv +Z \"[ 0V U 2Z CX9dI^'Z\"Z$~S AfGd'~U C~S FZ $gGg&Z(Z :Z \"Z 4Z0] H" + "~Q)Y JY(Y0b McGd EZ $dGc IZ+[\"cEd 3Y 3cGc 7a ?`1a$Z,[ 9Z =~a AX ?X Y L^DZNY FYNZF_ =`CY B^EZNY CaB] 7" + "Y .qMY GY1Y 5Y NX 0X8\\ 3Y FY3Y2Y+Y1Y D_F_ CYNYE_ B^EZNX ;Y *]A^ 4k >^G[NY 8a 9_9^ H[8[ 5^ 6~P 2Y X Y " + " D^H[La NfH` AYD[ 6^E_ ?`?X EY1Y 7_ 7Y0Y IcFk(]HZLZI^ `Nk BY9Z E~Q GYNZE^ B_E_ ,e ;]G] J~c!~T FZ 3oDo @Z :Z(Z :" + "Z 5dGd )X Jd \"e KZ -`MUKY H~U IU&U 6Z X AY 5Z7Z LZ7Z ;~d 3cFk 8WEW " + " BW LV)X0X FW LW$\\ 2Z\"Z+[#Z)Z\"Z*Z\"Z*Z\"Z*Z\"Z:Z.~T*fGd N~T J~T I~S I~S 7Z !Z !Z \"Z :~U JY/a MdGc FcGd GcGd" + " HdGd HdGc JW&W$kGc FbFb DbFb FcFb FcGc 3Z 2Z #YIWB] I^DZNY F]D[NY F]D[NX E^DZNY F^DZNY F^E[NY+]D]J`@]&`BY AaA]" + " DaA] DaA] DaA] 5Y Y NX Y /_F_ CX0X D_E_ ?_F_ ?_F_ @_E_ ?_F_ 7aF_ @^FZMX D^FZMX D_GZMX D_G[NY 7_ 7YNYE_ 4^" + " dLd CdMd BdLd CdLd DeMd 2X !` %X =Y ?U LV MZ !Y 5X.Y As AZ4Y 6` 5~] )x -Z " + "*X@X 9} BX3YFZ-{L] 4Y LY FX NZ GZ )X $t >} I~S I} #Z B{ :v 7[ ,{ Cu *Z \"[ -S S 0Z BW8aG[%[\"Z$~R" + " ?~S'~T B~S FZ #~V%Z(Z :Z \"Z 4Z/] I~Q)Y JY(Y/a L~ DZ #~ HZ*Z\"~R 2Y 2} 5` ?`0_$[+Z 9Z =~a AX ?X Y KsN" + "Y FYNr ;u AqMY B{ 7Y -oLY GY1Y 5Y NX 0X7\\ 4Y FY3Y2Y+Y1Y Cv BYNr ArMX ;Y *y 2j >qMY 8a 8^9^ I[6Z 5^ 6~P 2Y X " + " Y CpK` N} ?YF[ 5w =x EY1Y 6] 7Z0Z J~Y(nJm M{ AY9\\ F~ FYMq @w *d ;r J~d!~T FZ 3oDo @Z :Z(Z :Z 4~ 'X " + " Ib c JZ ,u H~U HS$S 5Z X AY 4\\>\\ I]>\\ :~d 3~Y 8WEW CW KV)W0X FX LW" + "$[ 2[\"Z+Z!Z*Z\"Z+Z!Z*Z!Z,Z!Z:Z.~T)~S N~T J~T I~S I~S 7Z !Z !Z \"Z :~T IY/a L~ D~ E~ F~ E~ HU$U$~X D| B| D} D} " + "2Z 2Z #YIr HrMY FsMY FsMX DsNY ErMY FsMY+uH|%v @| C| C| C| 5Y Y NX Y .v BX0X Cw =w >v >w =w 8{ ?qMX CqMX C" + "qMX CqMY 6] 6YNr 3^ My Ay @y @z Ay 1X _ $V X !" + "Y JqMY FYMp 9t ApLY Az 7Y ,mKY GY1Y 5Y NX 0X6\\ 5Y FY3Y2Y+Y1Y Bt AYMp ?pLX ;Y *x 1j =oLY 8a 8]8^ IZ4Z 6" + "] 5~P 2Y X Y CoI_ N} ?[K] 3u ;w EY1Y 6] 7Y.Y JvM_'mJm Ly @Y9b K| EYLp ?u (c :p I~e\"~T FZ 3oDo @Z :Z(Z" + " :Z 2{ &X H` Ma IZ +t H~U GQ\"Q 4Z X AY 2aLb FaKa 8~d 3YNlN_ 8WEW " + "DX KV*W0o-W KW%[ 1Z Z,Z!Z+Z Z,Z!Z+Z Z,Z!Z;Z-~T'~P M~T J~T I~S I~S 7Z !Z !Z \"Z :~R GY.` K| B| C{ B{ B{ FS\"S$YM" + "{ Bz @z B{ B{ 1Z 2Z #YIq GqLY EqLY EqLX CqMY ErMY EqLY*sF{$u ?{ B{ B{ B{ 5Y Y NX Y -t AX0X Bu ;u pLX CpLX CpLX BoLY 6] 6YMp 1] Lv >w =v =v >w 0X _ #T ;X ?W MV LW LV 4X.Y ?n >Y3Z 7_ 1~Z " + " 't +Z *W?X 8y @X1j)vG] 5X MY EX NZ GZ *X !p <} I~S Iz Z By 6r 5Z )w As (Z \"[ " + " 5Z AX HZ Z%~ 9|$~P >~S FZ ~P\"Z(Z :Z \"Z 4Z-] K~Q)Y JY(Y.` Jy AZ x EZ)Z#~P 0Y /x 3_ =_0_%Z([ ;Z =~a AX " + ">X !Y JpLY FYLn 7s @nKY @y 7Y +kJY GY1Y 5Y NX 0X5\\ 6Y FY3Y2Y+Y1Y Ar @YLn =nKX ;Y *w /i x ?x @y 0Z 2Z #YIp EoKY DoKY DoKX BoLY DpLY DoKY)qCy#t =y @y @y @y 5Y Y NX Y ,r @X0X As 9s :r :s 9s 7z <" + "nKX BnKX BnKX BnKY 6] 6YLn 0\\ Jt ;s :t ;t ;s .X N] !R 9V >W NX LU KU 3X.Y >l =Y2Y 7_ /~X " + " %p )Z *W?W 4u @X/i(tE] 6Y NX DX NZ GZ *X m :} I~S Iy NZ Bw 2o 5Z 'u @r 'Z \"Z " + " 4Z AY J[ Z%} 6x\"} <~S FZ N| Z(Z :Z \"Z 4Z,] L~Q)Y JY(Y.` Hv @Z Mu DZ)[$~ /Y .u 0^ =^/_&['Z ;Z =~a AX >X" + " !Y InKY FYKl 5r ?lJY >w 7Y )hIY GY1Y 5Y NX 0X4\\ 7Y FY3Y2Y+Y1Y @p ?YKl ;lJX ;Y *v -h ;kJY 7_ 7]7\\ J[2" + "[ 7\\ 5~P 2Y X Y AkE] Nz :i .p 7u EY1Y 5[ 7Y,Y KYMiL_%iGj Hu >Y8a Hv BYJl :p $a 7k H~f\"~T FZ 3oDo @Z " + ":Z(Z :Z /u #X F\\ I] GZ )r H~U *Z X AY /p >o 4~d 3YMiK^ 8WEW EX " + "JV+W/o/X JW&Z 0[ Z-Z NZ-[ [.Z NZ,Z NZ.Z NZ=Z,~T$x I~T J~T I~S I~S 7Z !Z !Z \"Z :| BY-_ Hv p %Z \"Z " + " 4Z @X JZ MZ&{ 3u z 9~S FZ Lx MZ(Z :Z \"Z 4Z+] M~Q)Y JY(Y-_ Fr >Z Lr BZ(Z!y -Y -s /] <^.]&[&[ m >YJj 8iIX ;Y *u *f :iIY 7_ 6\\7" + "\\ K[0Z 6Z 4~P 2Y X Y ?hC\\ NYMm 8f +m 3s EY1Y 5[ 8Z,Y KYLgJ^$gEh Fs =Y8a Fr @YIi 7m !` 6i G~g#~T FZ 3o" + "Do @Z :Z(Z :Z .s \"X EZ G[ FZ 'p H~U *Z X AY ,k :k 2~d 3YLgJ^ 8WEW " + " EW IV,X/o/W IW&Z 0Z MZ/[ NZ-Z MZ.Z N[.Z MZ.Z MZ>Z,~T\"t G~T J~T I~S I~S 7Z !Z !Z \"Z :y ?Y-_ Fr 8r 9r :s :r " + " AXEr :r 8r :s :s -Z 2Z #YIn AkIY BkIY BkIX @jIY BkIY BkIY'l=t Mq :t ;t ;t ;t 3Y Y NX Y *m =X0X >m 3m 5n 5m" + " 3m 6XLm 7iHX @iHX @jIX @jIY 5[ 5YJj -Z El 3k 2l 3l 4l *X N\\ 5U ?Y Y KR HQ 1X.Y 9b 9Y1Z 7" + "] )~S \"j &Z +X@X -h ;X+c!l?\\ 6X Y DX Z FZ +X Kh 8} I~S Fr JZ As ,i 3[ $n ;m " + "#Z \"Y 3Z ?X KZ MZ&x -p Mu 4~S FZ Js JZ(Z :Z \"Z 4Z*] N~Q)Y JY(Y-_ Dn gB[ NYLj 5d (j 0q EY1Y 5Z 7Y+Z LYKdG]\"dBd Bo ;Y7` Dn >YHg 4i L^ 4e " + "E~g#~T FZ 3oDo @Z :Z(Z :Z ,n NX DX EY EZ %m G~U *Z X BZ )e 4e /~d 3YKeH] 8" + "WEW FW HV,W.o0X IW'Z /Z MZ/Z LZ.Z MZ/[ MZ.Z MZ/[ MZ>Y+~T p E~T J~T I~S I~S 7Z !Z !Z \"Z :u ;Y,^ Dn 4" + "n 5n 6o 6n @XBm 5n 4n 6o 6o +Z 2Z #YIl =gGY AhGY AhGX ?hHY @hHY @gGY%i:o Hm 7p 6o 6p 7p 1Y Y NX Y (i ;X0X " + "fGX >fGX >fGY 4Y 4YHf +Z Bg /g .g -g /g (X M[ 5T ?Z !Z JP 'X.Y 5" + "[ 6Y0Y 7] &~P Ne $Z +W?X '] 6W)a Mh<\\ 7Y !X CX Y EZ +X Id 6} I~S Cm HZ =l 'e " + "1Z i 6h !Z #Z 3Z ?Y M[ M['s &k Jo .~S FZ Gm GZ(Z :Z \"Z 4Z)] ~Q)Y JY(Y,^ Bi 9Z Gl AZ'Z Jm (Y (i )\\ " + ";].]'[#Z =Z =~a AX =X \"Y DdFY FYFb *h 6cFY 8j 0Y \"YAY GY1Y 5Y NX 0X1\\ :Y FY3Y2Y+Y1Y ;f :YFb 1cFX ;Y" + " $k ` 7cFY 6] 5[5Z KZ-[ 8Y 3~P 2Y X Y ;b=X NYJe 0` $e +l BY1Y 4Y 7Y*Y LYIaE[ b@a >k 9Y6_ Ah ;YFc 0e " + "FZ 2a D~i$~T FZ 3oDo @Z :Z(Z :Z )i LX CV CW DZ #h D~U *Z X -R9Z #[ *[ *~d 3" + "YIaE\\ 8WEW GX HV-W-o0W HW'Z 0Z L[0Z LZ/[ LZ0Z LZ/[ LZ0Z LZ?Z+~T Lj B~T J~T I~S I~S 7Z !Z !Z \"Z :o " + "5Y,^ Ai /h 0i 0i 0i >W?i 1j 0j 1j 1i (Z 2Z #YGh 9cEY ?dEY ?dEX =dFY >dFY >cEY#d5j Ch 1j 1j 1j 1j -Y Y NX Y" + " &e 9X0X :e ,f -f -e ,f 4XFe 0cEX a NU CZ N` 9X -T<[ " + " LYG]BX 5WEW %U HW NX MX GZ (d +b (b )b )a )b 9V;a " + ")c *c *c *c =a 4_ &^ %^ $^ &_ &_ :_/c RM] !R Z 5\\ " + " 9X ;X $Y HY NY 0Y 'X NY BY X !Y " + ":Y 8Y 4Y *Y 1Y EX 3Y CZ IU 3X -p " + " IY 8WEW #V &Z MV " + " 0U 'P ;Y 2Y >Z 8X " + " MT *X &X 9X DX " + " 5X ?\\%W ?Z 4\\ :X ;X $Y " + " IZ NY 0Y 'X NY BZ !X !Y :Y 8Y 4Y *Y 1Y EX 3Y " + " CZ IU 3X -o HY 8WEW \"V " + " 'Z LU 0V " + " CZ 2Y >Y 7X " + " MT )X 'X 9X DX 5W <\\(X ?" + "Z 3\\ ;Y e GX 2f KZ LY 0Y 'X !Y >" + "\\ %X &] 9Y 8Y 4Y *Y 1Y EX 3Y CZ IU 3" + "X $^ @Y 8WEW !V '\\:V ;V " + " 1W GZ 0Y @Z " + " FWHX LT 'X +W 7W " + " V 5b?c A[ -\\ ?e !f " + " f /X 0g 9Y 8Y 4Y *Y " + " 1Y EX 3Y CZ IU 3X 5Y " + " NV &\\=X ;V " + "1W GY /Y AZ EWHX " + " LT &W ,X 7V V 3~T " + " A] ,\\ @e !f d " + " %e -Y Nd @c " + " (m @c " + " +u $b -Y 'X 0d 2^ /X 0_ 1Y 8Y 4Y *Y " + " 1Y EX 3Y CZ IT 2X 5Y " + "-c !q Hd >c " + " $d ,Y Nd ?b " + " %g =" + "b *t #a ,Y 'X 0d " + " ,X /X 0Y +Y 8Y 4Y *Y 1Y EX 3Y CZ '" + "X 5Y -c Nm Fc " + " =c $c +Y Nc " + " >a " + " M\\ 8a \"~Y 1" + "r !` +Y 'X 0c 1X 1Y 8Y 4Y *Y 1Y EX 3Y " + " CZ &W 5Y -b Lj " + " Db std::printf(). + \note If configuration macro \c cimg_strict_warnings is set, this function throws a + \c CImgWarningException instead. + \warning As the first argument is a format string, it is highly recommended to write + \code + cimg::warn("%s",warning_message); + \endcode + instead of + \code + cimg::warn(warning_message); + \endcode + if \c warning_message can be arbitrary, to prevent nasty memory access. + **/ + inline void warn(const char *const format, ...) { + if (cimg::exception_mode()>=1) { + char *const message = new char[16384]; + std::va_list ap; + va_start(ap,format); + cimg_vsnprintf(message,16384,format,ap); + va_end(ap); +#ifdef cimg_strict_warnings + throw CImgWarningException(message); +#else + std::fprintf(cimg::output(),"\n%s[CImg] *** Warning ***%s%s\n",cimg::t_red,cimg::t_normal,message); +#endif + delete[] message; + } + } + + // Execute an external system command. + /** + \param command C-string containing the command line to execute. + \param module_name Module name. + \return Status value of the executed command, whose meaning is OS-dependent. + \note This function is similar to std::system() + but it does not open an extra console windows + on Windows-based systems. + **/ + inline int system(const char *const command, const char *const module_name=0, const bool is_verbose=false) { + cimg::unused(module_name); +#ifdef cimg_no_system_calls + return -1; +#else + if (is_verbose) return std::system(command); +#if cimg_OS==1 + const unsigned int l = (unsigned int)std::strlen(command); + if (l) { + char *const ncommand = new char[l + 24]; + std::memcpy(ncommand,command,l); + std::strcpy(ncommand + l," >/dev/null 2>&1"); // Make command silent + const int out_val = std::system(ncommand); + delete[] ncommand; + return out_val; + } else return -1; +#elif cimg_OS==2 + PROCESS_INFORMATION pi; + STARTUPINFOA si; + std::memset(&pi,0,sizeof(PROCESS_INFORMATION)); + std::memset(&si,0,sizeof(STARTUPINFO)); + GetStartupInfoA(&si); + si.cb = sizeof(si); + si.wShowWindow = SW_HIDE; + si.dwFlags |= SW_HIDE | STARTF_USESHOWWINDOW; + const BOOL res = CreateProcessA((LPCSTR)module_name,(LPSTR)command,0,0,FALSE,0,0,0,&si,&pi); + if (res) { + WaitForSingleObject(pi.hProcess,INFINITE); + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); + return 0; + } else { + char* lpMsgBuf; + + // Get the error message. + DWORD errorCode = GetLastError(); + FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + 0,errorCode,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPSTR)&lpMsgBuf,0,0); + cimg::warn("cimg::system() : Command '%s' (module name '%s) failed with error %lu: %s", + module_name==0?"(null)":module_name, + command==0?"(null)":command, + errorCode,lpMsgBuf); + return -1; + } +#else + return std::system(command); +#endif +#endif + } + + //! Return a reference to a temporary variable of type T. + template + inline T& temporary(const T&) { + static T temp; + return temp; + } + + //! Exchange values of variables \c a and \c b. + template + inline void swap(T& a, T& b) { T t = a; a = b; b = t; } + + //! Exchange values of variables (\c a1,\c a2) and (\c b1,\c b2). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2) { + cimg::swap(a1,b1); cimg::swap(a2,b2); + } + + //! Exchange values of variables (\c a1,\c a2,\c a3) and (\c b1,\c b2,\c b3). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3) { + cimg::swap(a1,b1,a2,b2); cimg::swap(a3,b3); + } + + //! Exchange values of variables (\c a1,\c a2,...,\c a4) and (\c b1,\c b2,...,\c b4). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4) { + cimg::swap(a1,b1,a2,b2,a3,b3); cimg::swap(a4,b4); + } + + //! Exchange values of variables (\c a1,\c a2,...,\c a5) and (\c b1,\c b2,...,\c b5). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5) { + cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4); cimg::swap(a5,b5); + } + + //! Exchange values of variables (\c a1,\c a2,...,\c a6) and (\c b1,\c b2,...,\c b6). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5, T6& a6, T6& b6) { + cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5); cimg::swap(a6,b6); + } + + //! Exchange values of variables (\c a1,\c a2,...,\c a7) and (\c b1,\c b2,...,\c b7). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5, T6& a6, T6& b6, + T7& a7, T7& b7) { + cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5,a6,b6); cimg::swap(a7,b7); + } + + //! Exchange values of variables (\c a1,\c a2,...,\c a8) and (\c b1,\c b2,...,\c b8). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5, T6& a6, T6& b6, + T7& a7, T7& b7, T8& a8, T8& b8) { + cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5,a6,b6,a7,b7); cimg::swap(a8,b8); + } + + //! Return the endianness of the current architecture. + /** + \return \c false for Little Endian or \c true for Big Endian. + **/ + inline bool endianness() { + const int x = 1; + return ((unsigned char*)&x)[0]?false:true; + } + + //! Reverse endianness of all elements in a memory buffer. + /** + \param[in,out] buffer Memory buffer whose endianness must be reversed. + \param size Number of buffer elements to reverse. + **/ + template + inline void invert_endianness(T* const buffer, const cimg_ulong size) { + if (size) switch (sizeof(T)) { + case 1 : break; + case 2 : { + for (unsigned short *ptr = (unsigned short*)buffer + size; ptr>(unsigned short*)buffer; ) { + const unsigned short val = *(--ptr); + *ptr = (unsigned short)((val>>8) | ((val<<8))); + } + } break; + case 4 : { + for (unsigned int *ptr = (unsigned int*)buffer + size; ptr>(unsigned int*)buffer; ) { + const unsigned int val = *(--ptr); + *ptr = (val>>24) | ((val>>8)&0xff00) | ((val<<8)&0xff0000) | (val<<24); + } + } break; + case 8 : { + const cimg_uint64 + m0 = (cimg_uint64)0xff, m1 = m0<<8, m2 = m0<<16, m3 = m0<<24, + m4 = m0<<32, m5 = m0<<40, m6 = m0<<48, m7 = m0<<56; + for (cimg_uint64 *ptr = (cimg_uint64*)buffer + size; ptr>(cimg_uint64*)buffer; ) { + const cimg_uint64 val = *(--ptr); + *ptr = (((val&m7)>>56) | ((val&m6)>>40) | ((val&m5)>>24) | ((val&m4)>>8) | + ((val&m3)<<8) |((val&m2)<<24) | ((val&m1)<<40) | ((val&m0)<<56)); + } + } break; + default : { + for (T* ptr = buffer + size; ptr>buffer; ) { + unsigned char *pb = (unsigned char*)(--ptr), *pe = pb + sizeof(T); + for (int i = 0; i<(int)sizeof(T)/2; ++i) swap(*(pb++),*(--pe)); + } + } + } + } + inline void invert_endianness(bool* const, const cimg_ulong) {} + inline void invert_endianness(unsigned char* const, const cimg_ulong) {} + inline void invert_endianness(char* const, const cimg_ulong) {} + + //! Reverse endianness of a single variable. + /** + \param[in,out] a Variable to reverse. + \return Reference to reversed variable. + **/ + template + inline T& invert_endianness(T& a) { + invert_endianness(&a,1); + return a; + } + + // Conversion functions to get more precision when trying to store unsigned ints values as floats. + inline unsigned int float2uint(const float f) { + int tmp = 0; + std::memcpy(&tmp,&f,sizeof(float)); + if (tmp>=0) return (unsigned int)f; + unsigned int u; + // use memcpy instead of assignment to avoid undesired optimizations by C++-compiler. + std::memcpy(&u,&f,sizeof(float)); + return ((u)<<2)>>2; // set sign & exponent bit to 0 + } + + inline float uint2float(const unsigned int u) { + if (u<(1U<<19)) return (float)u; // Consider safe storage of unsigned int as floats until 19bits (i.e 524287) + float f; + const unsigned int v = u|(3U<<(8*sizeof(unsigned int)-2)); // set sign & exponent bit to 1 + // use memcpy instead of simple assignment to avoid undesired optimizations by C++-compiler. + std::memcpy(&f,&v,sizeof(float)); + return f; + } + + //! Return the value of a system timer, with a millisecond precision. + /** + \note The timer does not necessarily starts from \c 0. + **/ + inline cimg_uint64 time() { +#if cimg_OS==1 + struct timeval st_time; + gettimeofday(&st_time,0); + return (cimg_uint64)st_time.tv_sec*1000 + (cimg_uint64)st_time.tv_usec/1000; +#elif cimg_OS==2 + ULARGE_INTEGER ul; + FILETIME ft; + GetSystemTimeAsFileTime(&ft); + ul.LowPart = ft.dwLowDateTime; + ul.HighPart = ft.dwHighDateTime; + return (cimg_uint64)ul.QuadPart/10000; +#else + return 0; +#endif + } + + // Implement a tic/toc mechanism to display elapsed time of algorithms. + inline cimg_uint64 tictoc(const bool is_tic); + + //! Start tic/toc timer for time measurement between code instructions. + /** + \return Current value of the timer (same value as time()). + **/ + inline cimg_uint64 tic() { + return cimg::tictoc(true); + } + + //! End tic/toc timer and displays elapsed time from last call to tic(). + /** + \return Time elapsed (in ms) since last call to tic(). + **/ + inline cimg_uint64 toc() { + return cimg::tictoc(false); + } + + //! Sleep for a given numbers of milliseconds. + /** + \param milliseconds Number of milliseconds to wait for. + \note This function frees the CPU resources during the sleeping time. + It can be used to temporize your program properly, without wasting CPU time. + **/ + inline void sleep(const unsigned int milliseconds) { +#if cimg_OS==1 + struct timespec tv; + tv.tv_sec = milliseconds/1000; + tv.tv_nsec = (milliseconds%1000)*1000000; + nanosleep(&tv,0); +#elif cimg_OS==2 + Sleep(milliseconds); +#else + cimg::unused(milliseconds); +#endif + } + + inline unsigned int wait(const unsigned int milliseconds, cimg_uint64 *const p_timer) { + if (!*p_timer) *p_timer = cimg::time(); + const cimg_uint64 current_time = cimg::time(); + if (current_time<*p_timer || current_time>=*p_timer + milliseconds) { *p_timer = current_time; return 0; } + const unsigned int time_diff = (unsigned int)(*p_timer + milliseconds - current_time); + *p_timer = current_time + time_diff; + cimg::sleep(time_diff); + return time_diff; + } + + //! Wait for a given number of milliseconds since the last call to wait(). + /** + \param milliseconds Number of milliseconds to wait for. + \return Number of milliseconds elapsed since the last call to wait(). + \note Same as sleep() with a waiting time computed with regard to the last call + of wait(). It may be used to temporize your program properly, without wasting CPU time. + **/ + inline unsigned int wait(const unsigned int milliseconds) { + cimg::mutex(3); + static cimg_uint64 timer = cimg::time(); + cimg::mutex(3,0); + return cimg::wait(milliseconds,&timer); + } + + // Custom random number generator (allow re-entrance). + inline cimg_uint64& rng() { // Used as a shared global number for rng + static cimg_uint64 rng = 0xB16B00B5U; + return rng; + } + + inline unsigned int _rand(cimg_uint64 *const p_rng) { + *p_rng = *p_rng*1103515245 + 12345U; + return (unsigned int)*p_rng; + } + + inline unsigned int _rand() { + cimg::mutex(4); + const unsigned int res = cimg::_rand(&cimg::rng()); + cimg::mutex(4,0); + return res; + } + + inline void srand(cimg_uint64 *const p_rng) { +#if cimg_OS==1 + *p_rng = cimg::time() + (cimg_uint64)getpid(); +#elif cimg_OS==2 + *p_rng = cimg::time() + (cimg_uint64)_getpid(); +#endif + } + + inline void srand() { + cimg::mutex(4); + cimg::srand(&cimg::rng()); + cimg::mutex(4,0); + } + + inline void srand(const cimg_uint64 seed) { + cimg::mutex(4); + cimg::rng() = seed; + cimg::mutex(4,0); + } + + inline double rand(const double val_min, const double val_max, cimg_uint64 *const p_rng) { + const double val = cimg::_rand(p_rng)/(double)~0U; + return val_min + (val_max - val_min)*val; + } + + inline double rand(const double val_min, const double val_max) { + cimg::mutex(4); + const double res = cimg::rand(val_min,val_max,&cimg::rng()); + cimg::mutex(4,0); + return res; + } + + inline double rand(const double val_max, cimg_uint64 *const p_rng) { + const double val = cimg::_rand(p_rng)/(double)~0U; + return val_max*val; + } + + inline double rand(const double val_max=1) { + cimg::mutex(4); + const double res = cimg::rand(val_max,&cimg::rng()); + cimg::mutex(4,0); + return res; + } + + inline double grand(cimg_uint64 *const p_rng) { + double x1, w; + do { + const double x2 = cimg::rand(-1,1,p_rng); + x1 = cimg::rand(-1,1,p_rng); + w = x1*x1 + x2*x2; + } while (w<=0 || w>=1.); + return x1*std::sqrt((-2*std::log(w))/w); + } + + inline double grand() { + cimg::mutex(4); + const double res = cimg::grand(&cimg::rng()); + cimg::mutex(4,0); + return res; + } + + inline unsigned int prand(const double z, cimg_uint64 *const p_rng) { + if (z<=1.e-10) return 0; + if (z>100) return (unsigned int)((std::sqrt(z) * cimg::grand(p_rng)) + z); + unsigned int k = 0; + const double y = std::exp(-z); + for (double s = 1.; s>=y; ++k) s*=cimg::rand(1,p_rng); + return k - 1; + } + + inline unsigned int prand(const double z) { + cimg::mutex(4); + const unsigned int res = cimg::prand(z,&cimg::rng()); + cimg::mutex(4,0); + return res; + } + + //! Cut (i.e. clamp) value in specified interval. + template + inline T cut(const T& val, const t& val_min, const t& val_max) { + return val<=val_min?(T)val_min:val>=val_max?(T)val_max:val; + } + + //! Bitwise-rotate value on the left. + template + inline T rol(const T& a, const unsigned int n=1) { + return n?(T)((a<>((sizeof(T)<<3) - n))):a; + } + + inline float rol(const float a, const unsigned int n=1) { + return (float)rol((int)a,n); + } + + inline double rol(const double a, const unsigned int n=1) { + return (double)rol((cimg_long)a,n); + } + + inline double rol(const long double a, const unsigned int n=1) { + return (double)rol((cimg_long)a,n); + } + +#ifdef cimg_use_half + inline half rol(const half a, const unsigned int n=1) { + return (half)rol((int)a,n); + } +#endif + + //! Bitwise-rotate value on the right. + template + inline T ror(const T& a, const unsigned int n=1) { + return n?(T)((a>>n)|(a<<((sizeof(T)<<3) - n))):a; + } + + inline float ror(const float a, const unsigned int n=1) { + return (float)ror((int)a,n); + } + + inline double ror(const double a, const unsigned int n=1) { + return (double)ror((cimg_long)a,n); + } + + inline double ror(const long double a, const unsigned int n=1) { + return (double)ror((cimg_long)a,n); + } + +#ifdef cimg_use_half + inline half ror(const half a, const unsigned int n=1) { + return (half)ror((int)a,n); + } +#endif + + //! Return absolute value of a value. + template + inline T abs(const T& a) { + return a>=0?a:-a; + } + inline bool abs(const bool a) { + return a; + } + inline int abs(const unsigned char a) { + return (int)a; + } + inline int abs(const unsigned short a) { + return (int)a; + } + inline int abs(const unsigned int a) { + return (int)a; + } + inline int abs(const int a) { + return std::abs(a); + } + inline cimg_int64 abs(const cimg_uint64 a) { + return (cimg_int64)a; + } + inline double abs(const double a) { + return std::fabs(a); + } + inline float abs(const float a) { + return (float)std::fabs((double)a); + } + + //! Return hyperbolic arcosine of a value. + inline double acosh(const double x) { +#if cimg_use_cpp11==1 && !defined(_MSC_VER) + return std::acosh(x); +#else + return std::log(x + std::sqrt(x*x - 1)); +#endif + } + + //! Return hyperbolic arcsine of a value. + inline double asinh(const double x) { +#if cimg_use_cpp11==1 && !defined(_MSC_VER) + return std::asinh(x); +#else + return std::log(x + std::sqrt(x*x + 1)); +#endif + } + + //! Return hyperbolic arctangent of a value. + inline double atanh(const double x) { +#if cimg_use_cpp11==1 && !defined(_MSC_VER) + return std::atanh(x); +#else + return 0.5*std::log((1. + x)/(1. - x)); +#endif + } + + //! Return the sinc of a given value. + inline double sinc(const double x) { + return x?std::sin(x)/x:1; + } + + //! Return base-2 logarithm of a value. + inline double log2(const double x) { +#if cimg_use_cpp11==1 && !defined(_MSC_VER) + return std::log2(x); +#else + const double base2 = std::log(2.); + return std::log(x)/base2; +#endif + } + + //! Return square of a value. + template + inline T sqr(const T& val) { + return val*val; + } + + //! Return cubic root of a value. + template + inline double cbrt(const T& x) { +#if cimg_use_cpp11==1 + return std::cbrt(x); +#else + return x>=0?std::pow((double)x,1./3):-std::pow(-(double)x,1./3); +#endif + } + + template + inline T pow3(const T& val) { + return val*val*val; + } + template + inline T pow4(const T& val) { + return val*val*val*val; + } + + //! Return the minimum between three values. + template + inline t min(const t& a, const t& b, const t& c) { + return std::min(std::min(a,b),c); + } + + //! Return the minimum between four values. + template + inline t min(const t& a, const t& b, const t& c, const t& d) { + return std::min(std::min(a,b),std::min(c,d)); + } + + //! Return the minabs between two values. + template + inline t minabs(const t& a, const t& b) { + return cimg::abs(b) + inline t minabs(const t& a, const t& b, const t& abs_b) { + return abs_b + inline t max(const t& a, const t& b, const t& c) { + return std::max(std::max(a,b),c); + } + + //! Return the maximum between four values. + template + inline t max(const t& a, const t& b, const t& c, const t& d) { + return std::max(std::max(a,b),std::max(c,d)); + } + + //! Return the maxabs between two values. + template + inline t maxabs(const t& a, const t& b) { + return cimg::abs(b)>cimg::abs(a)?b:a; + } + + template + inline t maxabs(const t& a, const t& b, const t& abs_b) { + return abs_b>cimg::abs(a)?b:a; + } + + //! Return the sign of a value. + template + inline T sign(const T& x) { + return (T)(cimg::type::is_nan(x)?0:x<0?-1:x>0); + } + + //! Return the nearest power of 2 higher than given value. + template + inline cimg_uint64 nearest_pow2(const T& x) { + cimg_uint64 i = 1; + while (x>i) i<<=1; + return i; + } + + //! Return the modulo of a value. + /** + \param x Input value. + \param m Modulo value. + \note This modulo function accepts negative and floating-points modulo numbers, as well as variables of any type. + **/ + template + inline T mod(const T& x, const T& m) { + const double dx = (double)x, dm = (double)m; + if (!cimg::type::is_finite(dm)) return x; + if (cimg::type::is_finite(dx)) return (T)(dx - dm * std::floor(dx / dm)); + return (T)0; + } + inline int mod(const bool x, const bool m) { + return m?(x?1:0):0; + } + inline int mod(const unsigned char x, const unsigned char m) { + return x%m; + } + inline int mod(const char x, const char m) { +#if defined(CHAR_MAX) && CHAR_MAX==255 + return x%m; +#else + return x>=0?x%m:(x%m?m + x%m:0); +#endif + } + inline int mod(const unsigned short x, const unsigned short m) { + return x%m; + } + inline int mod(const short x, const short m) { + return x>=0?x%m:(x%m?m + x%m:0); + } + inline int mod(const unsigned int x, const unsigned int m) { + return (int)(x%m); + } + inline int mod(const int x, const int m) { + return x>=0?x%m:(x%m?m + x%m:0); + } + inline cimg_int64 mod(const cimg_uint64 x, const cimg_uint64 m) { + return x%m; + } + inline cimg_int64 mod(const cimg_int64 x, const cimg_int64 m) { + return x>=0?x%m:(x%m?m + x%m:0); + } + + //! Return the min-mod of two values. + /** + \note minmod(\p a,\p b) is defined to be: + - minmod(\p a,\p b) = min(\p a,\p b), if \p a and \p b have the same sign. + - minmod(\p a,\p b) = 0, if \p a and \p b have different signs. + **/ + template + inline T minmod(const T& a, const T& b) { + return a*b<=0?0:(a>0?(a + inline T round(const T& x) { + return (T)std::floor((_cimg_Tfloat)x + 0.5f); + } + + template + inline int uiround(const T x) { + return cimg::type::is_float()?(int)(x + 0.5f):(int)x; + } + + //! Return rounded value. + /** + \param x Value to be rounded. + \param y Rounding precision. + \param rounding_type Type of rounding operation (\c 0 = nearest, \c -1 = backward, \c 1 = forward). + \return Rounded value, having the same type as input value \c x. + **/ + template + inline T round(const T& x, const double y, const int rounding_type=0) { + if (y<=0) return x; + if (y==1) switch (rounding_type) { + case 0 : return cimg::round(x); + case 1 : return (T)std::ceil((_cimg_Tfloat)x); + default : return (T)std::floor((_cimg_Tfloat)x); + } + const double sx = (double)x/y, floor = std::floor(sx), delta = sx - floor; + return (T)(y*(rounding_type<0?floor:rounding_type>0?std::ceil(sx):delta<0.5?floor:std::ceil(sx))); + } + + // Code to compute fast median from 2,3,5,7,9,13,25 and 49 values. + // (contribution by RawTherapee: http://rawtherapee.com/). + template + inline T median(T val0, T val1) { + return (val0 + val1)/2; + } + + template + inline T median(T val0, T val1, T val2) { + return std::max(std::min(val0,val1),std::min(val2,std::max(val0,val1))); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4) { + T tmp = std::min(val0,val1); + val1 = std::max(val0,val1); val0 = tmp; tmp = std::min(val3,val4); val4 = std::max(val3,val4); + val3 = std::max(val0,tmp); val1 = std::min(val1,val4); tmp = std::min(val1,val2); val2 = std::max(val1,val2); + val1 = tmp; tmp = std::min(val2,val3); + return std::max(val1,tmp); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4, T val5, T val6) { + T tmp = std::min(val0,val5); + val5 = std::max(val0,val5); val0 = tmp; tmp = std::min(val0,val3); val3 = std::max(val0,val3); val0 = tmp; + tmp = std::min(val1,val6); val6 = std::max(val1,val6); val1 = tmp; tmp = std::min(val2,val4); + val4 = std::max(val2,val4); val2 = tmp; val1 = std::max(val0,val1); tmp = std::min(val3,val5); + val5 = std::max(val3,val5); val3 = tmp; tmp = std::min(val2,val6); val6 = std::max(val2,val6); + val3 = std::max(tmp,val3); val3 = std::min(val3,val6); tmp = std::min(val4,val5); val4 = std::max(val1,tmp); + tmp = std::min(val1,tmp); val3 = std::max(tmp,val3); + return std::min(val3,val4); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4, T val5, T val6, T val7, T val8) { + T tmp = std::min(val1,val2); + val2 = std::max(val1,val2); val1 = tmp; tmp = std::min(val4,val5); + val5 = std::max(val4,val5); val4 = tmp; tmp = std::min(val7,val8); + val8 = std::max(val7,val8); val7 = tmp; tmp = std::min(val0,val1); + val1 = std::max(val0,val1); val0 = tmp; tmp = std::min(val3,val4); + val4 = std::max(val3,val4); val3 = tmp; tmp = std::min(val6,val7); + val7 = std::max(val6,val7); val6 = tmp; tmp = std::min(val1,val2); + val2 = std::max(val1,val2); val1 = tmp; tmp = std::min(val4,val5); + val5 = std::max(val4,val5); val4 = tmp; tmp = std::min(val7,val8); + val8 = std::max(val7,val8); val3 = std::max(val0,val3); val5 = std::min(val5,val8); + val7 = std::max(val4,tmp); tmp = std::min(val4,tmp); val6 = std::max(val3,val6); + val4 = std::max(val1,tmp); val2 = std::min(val2,val5); val4 = std::min(val4,val7); + tmp = std::min(val4,val2); val2 = std::max(val4,val2); val4 = std::max(val6,tmp); + return std::min(val4,val2); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4, T val5, T val6, T val7, T val8, T val9, T val10, T val11, + T val12) { + T tmp = std::min(val1,val7); + val7 = std::max(val1,val7); val1 = tmp; tmp = std::min(val9,val11); val11 = std::max(val9,val11); val9 = tmp; + tmp = std::min(val3,val4); val4 = std::max(val3,val4); val3 = tmp; tmp = std::min(val5,val8); + val8 = std::max(val5,val8); val5 = tmp; tmp = std::min(val0,val12); val12 = std::max(val0,val12); + val0 = tmp; tmp = std::min(val2,val6); val6 = std::max(val2,val6); val2 = tmp; tmp = std::min(val0,val1); + val1 = std::max(val0,val1); val0 = tmp; tmp = std::min(val2,val3); val3 = std::max(val2,val3); val2 = tmp; + tmp = std::min(val4,val6); val6 = std::max(val4,val6); val4 = tmp; tmp = std::min(val8,val11); + val11 = std::max(val8,val11); val8 = tmp; tmp = std::min(val7,val12); val12 = std::max(val7,val12); val7 = tmp; + tmp = std::min(val5,val9); val9 = std::max(val5,val9); val5 = tmp; tmp = std::min(val0,val2); + val2 = std::max(val0,val2); val0 = tmp; tmp = std::min(val3,val7); val7 = std::max(val3,val7); val3 = tmp; + tmp = std::min(val10,val11); val11 = std::max(val10,val11); val10 = tmp; tmp = std::min(val1,val4); + val4 = std::max(val1,val4); val1 = tmp; tmp = std::min(val6,val12); val12 = std::max(val6,val12); val6 = tmp; + tmp = std::min(val7,val8); val8 = std::max(val7,val8); val7 = tmp; val11 = std::min(val11,val12); + tmp = std::min(val4,val9); val9 = std::max(val4,val9); val4 = tmp; tmp = std::min(val6,val10); + val10 = std::max(val6,val10); val6 = tmp; tmp = std::min(val3,val4); val4 = std::max(val3,val4); val3 = tmp; + tmp = std::min(val5,val6); val6 = std::max(val5,val6); val5 = tmp; val8 = std::min(val8,val9); + val10 = std::min(val10,val11); tmp = std::min(val1,val7); val7 = std::max(val1,val7); val1 = tmp; + tmp = std::min(val2,val6); val6 = std::max(val2,val6); val2 = tmp; val3 = std::max(val1,val3); + tmp = std::min(val4,val7); val7 = std::max(val4,val7); val4 = tmp; val8 = std::min(val8,val10); + val5 = std::max(val0,val5); val5 = std::max(val2,val5); tmp = std::min(val6,val8); val8 = std::max(val6,val8); + val5 = std::max(val3,val5); val7 = std::min(val7,val8); val6 = std::max(val4,tmp); tmp = std::min(val4,tmp); + val5 = std::max(tmp,val5); val6 = std::min(val6,val7); + return std::max(val5,val6); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4, + T val5, T val6, T val7, T val8, T val9, + T val10, T val11, T val12, T val13, T val14, + T val15, T val16, T val17, T val18, T val19, + T val20, T val21, T val22, T val23, T val24) { + T tmp = std::min(val0,val1); + val1 = std::max(val0,val1); val0 = tmp; tmp = std::min(val3,val4); val4 = std::max(val3,val4); + val3 = tmp; tmp = std::min(val2,val4); val4 = std::max(val2,val4); val2 = std::min(tmp,val3); + val3 = std::max(tmp,val3); tmp = std::min(val6,val7); val7 = std::max(val6,val7); val6 = tmp; + tmp = std::min(val5,val7); val7 = std::max(val5,val7); val5 = std::min(tmp,val6); val6 = std::max(tmp,val6); + tmp = std::min(val9,val10); val10 = std::max(val9,val10); val9 = tmp; tmp = std::min(val8,val10); + val10 = std::max(val8,val10); val8 = std::min(tmp,val9); val9 = std::max(tmp,val9); + tmp = std::min(val12,val13); val13 = std::max(val12,val13); val12 = tmp; tmp = std::min(val11,val13); + val13 = std::max(val11,val13); val11 = std::min(tmp,val12); val12 = std::max(tmp,val12); + tmp = std::min(val15,val16); val16 = std::max(val15,val16); val15 = tmp; tmp = std::min(val14,val16); + val16 = std::max(val14,val16); val14 = std::min(tmp,val15); val15 = std::max(tmp,val15); + tmp = std::min(val18,val19); val19 = std::max(val18,val19); val18 = tmp; tmp = std::min(val17,val19); + val19 = std::max(val17,val19); val17 = std::min(tmp,val18); val18 = std::max(tmp,val18); + tmp = std::min(val21,val22); val22 = std::max(val21,val22); val21 = tmp; tmp = std::min(val20,val22); + val22 = std::max(val20,val22); val20 = std::min(tmp,val21); val21 = std::max(tmp,val21); + tmp = std::min(val23,val24); val24 = std::max(val23,val24); val23 = tmp; tmp = std::min(val2,val5); + val5 = std::max(val2,val5); val2 = tmp; tmp = std::min(val3,val6); val6 = std::max(val3,val6); val3 = tmp; + tmp = std::min(val0,val6); val6 = std::max(val0,val6); val0 = std::min(tmp,val3); val3 = std::max(tmp,val3); + tmp = std::min(val4,val7); val7 = std::max(val4,val7); val4 = tmp; tmp = std::min(val1,val7); + val7 = std::max(val1,val7); val1 = std::min(tmp,val4); val4 = std::max(tmp,val4); tmp = std::min(val11,val14); + val14 = std::max(val11,val14); val11 = tmp; tmp = std::min(val8,val14); val14 = std::max(val8,val14); + val8 = std::min(tmp,val11); val11 = std::max(tmp,val11); tmp = std::min(val12,val15); + val15 = std::max(val12,val15); val12 = tmp; tmp = std::min(val9,val15); val15 = std::max(val9,val15); + val9 = std::min(tmp,val12); val12 = std::max(tmp,val12); tmp = std::min(val13,val16); + val16 = std::max(val13,val16); val13 = tmp; tmp = std::min(val10,val16); val16 = std::max(val10,val16); + val10 = std::min(tmp,val13); val13 = std::max(tmp,val13); tmp = std::min(val20,val23); + val23 = std::max(val20,val23); val20 = tmp; tmp = std::min(val17,val23); val23 = std::max(val17,val23); + val17 = std::min(tmp,val20); val20 = std::max(tmp,val20); tmp = std::min(val21,val24); + val24 = std::max(val21,val24); val21 = tmp; tmp = std::min(val18,val24); val24 = std::max(val18,val24); + val18 = std::min(tmp,val21); val21 = std::max(tmp,val21); tmp = std::min(val19,val22); + val22 = std::max(val19,val22); val19 = tmp; val17 = std::max(val8,val17); tmp = std::min(val9,val18); + val18 = std::max(val9,val18); val9 = tmp; tmp = std::min(val0,val18); val18 = std::max(val0,val18); + val9 = std::max(tmp,val9); tmp = std::min(val10,val19); val19 = std::max(val10,val19); val10 = tmp; + tmp = std::min(val1,val19); val19 = std::max(val1,val19); val1 = std::min(tmp,val10); + val10 = std::max(tmp,val10); tmp = std::min(val11,val20); val20 = std::max(val11,val20); val11 = tmp; + tmp = std::min(val2,val20); val20 = std::max(val2,val20); val11 = std::max(tmp,val11); + tmp = std::min(val12,val21); val21 = std::max(val12,val21); val12 = tmp; tmp = std::min(val3,val21); + val21 = std::max(val3,val21); val3 = std::min(tmp,val12); val12 = std::max(tmp,val12); + tmp = std::min(val13,val22); val22 = std::max(val13,val22); val4 = std::min(val4,val22); + val13 = std::max(val4,tmp); tmp = std::min(val4,tmp); val4 = tmp; tmp = std::min(val14,val23); + val23 = std::max(val14,val23); val14 = tmp; tmp = std::min(val5,val23); val23 = std::max(val5,val23); + val5 = std::min(tmp,val14); val14 = std::max(tmp,val14); tmp = std::min(val15,val24); + val24 = std::max(val15,val24); val15 = tmp; val6 = std::min(val6,val24); tmp = std::min(val6,val15); + val15 = std::max(val6,val15); val6 = tmp; tmp = std::min(val7,val16); val7 = std::min(tmp,val19); + tmp = std::min(val13,val21); val15 = std::min(val15,val23); tmp = std::min(val7,tmp); + val7 = std::min(tmp,val15); val9 = std::max(val1,val9); val11 = std::max(val3,val11); + val17 = std::max(val5,val17); val17 = std::max(val11,val17); val17 = std::max(val9,val17); + tmp = std::min(val4,val10); val10 = std::max(val4,val10); val4 = tmp; tmp = std::min(val6,val12); + val12 = std::max(val6,val12); val6 = tmp; tmp = std::min(val7,val14); val14 = std::max(val7,val14); + val7 = tmp; tmp = std::min(val4,val6); val6 = std::max(val4,val6); val7 = std::max(tmp,val7); + tmp = std::min(val12,val14); val14 = std::max(val12,val14); val12 = tmp; val10 = std::min(val10,val14); + tmp = std::min(val6,val7); val7 = std::max(val6,val7); val6 = tmp; tmp = std::min(val10,val12); + val12 = std::max(val10,val12); val10 = std::max(val6,tmp); tmp = std::min(val6,tmp); + val17 = std::max(tmp,val17); tmp = std::min(val12,val17); val17 = std::max(val12,val17); val12 = tmp; + val7 = std::min(val7,val17); tmp = std::min(val7,val10); val10 = std::max(val7,val10); val7 = tmp; + tmp = std::min(val12,val18); val18 = std::max(val12,val18); val12 = std::max(val7,tmp); + val10 = std::min(val10,val18); tmp = std::min(val12,val20); val20 = std::max(val12,val20); val12 = tmp; + tmp = std::min(val10,val20); + return std::max(tmp,val12); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4, T val5, T val6, + T val7, T val8, T val9, T val10, T val11, T val12, T val13, + T val14, T val15, T val16, T val17, T val18, T val19, T val20, + T val21, T val22, T val23, T val24, T val25, T val26, T val27, + T val28, T val29, T val30, T val31, T val32, T val33, T val34, + T val35, T val36, T val37, T val38, T val39, T val40, T val41, + T val42, T val43, T val44, T val45, T val46, T val47, T val48) { + T tmp = std::min(val0,val32); + val32 = std::max(val0,val32); val0 = tmp; tmp = std::min(val1,val33); val33 = std::max(val1,val33); val1 = tmp; + tmp = std::min(val2,val34); val34 = std::max(val2,val34); val2 = tmp; tmp = std::min(val3,val35); + val35 = std::max(val3,val35); val3 = tmp; tmp = std::min(val4,val36); val36 = std::max(val4,val36); val4 = tmp; + tmp = std::min(val5,val37); val37 = std::max(val5,val37); val5 = tmp; tmp = std::min(val6,val38); + val38 = std::max(val6,val38); val6 = tmp; tmp = std::min(val7,val39); val39 = std::max(val7,val39); val7 = tmp; + tmp = std::min(val8,val40); val40 = std::max(val8,val40); val8 = tmp; tmp = std::min(val9,val41); + val41 = std::max(val9,val41); val9 = tmp; tmp = std::min(val10,val42); val42 = std::max(val10,val42); + val10 = tmp; tmp = std::min(val11,val43); val43 = std::max(val11,val43); val11 = tmp; + tmp = std::min(val12,val44); val44 = std::max(val12,val44); val12 = tmp; tmp = std::min(val13,val45); + val45 = std::max(val13,val45); val13 = tmp; tmp = std::min(val14,val46); val46 = std::max(val14,val46); + val14 = tmp; tmp = std::min(val15,val47); val47 = std::max(val15,val47); val15 = tmp; + tmp = std::min(val16,val48); val48 = std::max(val16,val48); val16 = tmp; tmp = std::min(val0,val16); + val16 = std::max(val0,val16); val0 = tmp; tmp = std::min(val1,val17); val17 = std::max(val1,val17); + val1 = tmp; tmp = std::min(val2,val18); val18 = std::max(val2,val18); val2 = tmp; tmp = std::min(val3,val19); + val19 = std::max(val3,val19); val3 = tmp; tmp = std::min(val4,val20); val20 = std::max(val4,val20); val4 = tmp; + tmp = std::min(val5,val21); val21 = std::max(val5,val21); val5 = tmp; tmp = std::min(val6,val22); + val22 = std::max(val6,val22); val6 = tmp; tmp = std::min(val7,val23); val23 = std::max(val7,val23); val7 = tmp; + tmp = std::min(val8,val24); val24 = std::max(val8,val24); val8 = tmp; tmp = std::min(val9,val25); + val25 = std::max(val9,val25); val9 = tmp; tmp = std::min(val10,val26); val26 = std::max(val10,val26); + val10 = tmp; tmp = std::min(val11,val27); val27 = std::max(val11,val27); val11 = tmp; + tmp = std::min(val12,val28); val28 = std::max(val12,val28); val12 = tmp; tmp = std::min(val13,val29); + val29 = std::max(val13,val29); val13 = tmp; tmp = std::min(val14,val30); val30 = std::max(val14,val30); + val14 = tmp; tmp = std::min(val15,val31); val31 = std::max(val15,val31); val15 = tmp; + tmp = std::min(val32,val48); val48 = std::max(val32,val48); val32 = tmp; tmp = std::min(val16,val32); + val32 = std::max(val16,val32); val16 = tmp; tmp = std::min(val17,val33); val33 = std::max(val17,val33); + val17 = tmp; tmp = std::min(val18,val34); val34 = std::max(val18,val34); val18 = tmp; + tmp = std::min(val19,val35); val35 = std::max(val19,val35); val19 = tmp; tmp = std::min(val20,val36); + val36 = std::max(val20,val36); val20 = tmp; tmp = std::min(val21,val37); val37 = std::max(val21,val37); + val21 = tmp; tmp = std::min(val22,val38); val38 = std::max(val22,val38); val22 = tmp; + tmp = std::min(val23,val39); val39 = std::max(val23,val39); val23 = tmp; tmp = std::min(val24,val40); + val40 = std::max(val24,val40); val24 = tmp; tmp = std::min(val25,val41); val41 = std::max(val25,val41); + val25 = tmp; tmp = std::min(val26,val42); val42 = std::max(val26,val42); val26 = tmp; + tmp = std::min(val27,val43); val43 = std::max(val27,val43); val27 = tmp; tmp = std::min(val28,val44); + val44 = std::max(val28,val44); val28 = tmp; tmp = std::min(val29,val45); val45 = std::max(val29,val45); + val29 = tmp; tmp = std::min(val30,val46); val46 = std::max(val30,val46); val30 = tmp; + tmp = std::min(val31,val47); val47 = std::max(val31,val47); val31 = tmp; tmp = std::min(val0,val8); + val8 = std::max(val0,val8); val0 = tmp; tmp = std::min(val1,val9); val9 = std::max(val1,val9); val1 = tmp; + tmp = std::min(val2,val10); val10 = std::max(val2,val10); val2 = tmp; tmp = std::min(val3,val11); + val11 = std::max(val3,val11); val3 = tmp; tmp = std::min(val4,val12); val12 = std::max(val4,val12); val4 = tmp; + tmp = std::min(val5,val13); val13 = std::max(val5,val13); val5 = tmp; tmp = std::min(val6,val14); + val14 = std::max(val6,val14); val6 = tmp; tmp = std::min(val7,val15); val15 = std::max(val7,val15); val7 = tmp; + tmp = std::min(val16,val24); val24 = std::max(val16,val24); val16 = tmp; tmp = std::min(val17,val25); + val25 = std::max(val17,val25); val17 = tmp; tmp = std::min(val18,val26); val26 = std::max(val18,val26); + val18 = tmp; tmp = std::min(val19,val27); val27 = std::max(val19,val27); val19 = tmp; + tmp = std::min(val20,val28); val28 = std::max(val20,val28); val20 = tmp; tmp = std::min(val21,val29); + val29 = std::max(val21,val29); val21 = tmp; tmp = std::min(val22,val30); val30 = std::max(val22,val30); + val22 = tmp; tmp = std::min(val23,val31); val31 = std::max(val23,val31); val23 = tmp; + tmp = std::min(val32,val40); val40 = std::max(val32,val40); val32 = tmp; tmp = std::min(val33,val41); + val41 = std::max(val33,val41); val33 = tmp; tmp = std::min(val34,val42); val42 = std::max(val34,val42); + val34 = tmp; tmp = std::min(val35,val43); val43 = std::max(val35,val43); val35 = tmp; + tmp = std::min(val36,val44); val44 = std::max(val36,val44); val36 = tmp; tmp = std::min(val37,val45); + val45 = std::max(val37,val45); val37 = tmp; tmp = std::min(val38,val46); val46 = std::max(val38,val46); + val38 = tmp; tmp = std::min(val39,val47); val47 = std::max(val39,val47); val39 = tmp; + tmp = std::min(val8,val32); val32 = std::max(val8,val32); val8 = tmp; tmp = std::min(val9,val33); + val33 = std::max(val9,val33); val9 = tmp; tmp = std::min(val10,val34); val34 = std::max(val10,val34); + val10 = tmp; tmp = std::min(val11,val35); val35 = std::max(val11,val35); val11 = tmp; + tmp = std::min(val12,val36); val36 = std::max(val12,val36); val12 = tmp; tmp = std::min(val13,val37); + val37 = std::max(val13,val37); val13 = tmp; tmp = std::min(val14,val38); val38 = std::max(val14,val38); + val14 = tmp; tmp = std::min(val15,val39); val39 = std::max(val15,val39); val15 = tmp; + tmp = std::min(val24,val48); val48 = std::max(val24,val48); val24 = tmp; tmp = std::min(val8,val16); + val16 = std::max(val8,val16); val8 = tmp; tmp = std::min(val9,val17); val17 = std::max(val9,val17); + val9 = tmp; tmp = std::min(val10,val18); val18 = std::max(val10,val18); val10 = tmp; + tmp = std::min(val11,val19); val19 = std::max(val11,val19); val11 = tmp; tmp = std::min(val12,val20); + val20 = std::max(val12,val20); val12 = tmp; tmp = std::min(val13,val21); val21 = std::max(val13,val21); + val13 = tmp; tmp = std::min(val14,val22); val22 = std::max(val14,val22); val14 = tmp; + tmp = std::min(val15,val23); val23 = std::max(val15,val23); val15 = tmp; tmp = std::min(val24,val32); + val32 = std::max(val24,val32); val24 = tmp; tmp = std::min(val25,val33); val33 = std::max(val25,val33); + val25 = tmp; tmp = std::min(val26,val34); val34 = std::max(val26,val34); val26 = tmp; + tmp = std::min(val27,val35); val35 = std::max(val27,val35); val27 = tmp; tmp = std::min(val28,val36); + val36 = std::max(val28,val36); val28 = tmp; tmp = std::min(val29,val37); val37 = std::max(val29,val37); + val29 = tmp; tmp = std::min(val30,val38); val38 = std::max(val30,val38); val30 = tmp; + tmp = std::min(val31,val39); val39 = std::max(val31,val39); val31 = tmp; tmp = std::min(val40,val48); + val48 = std::max(val40,val48); val40 = tmp; tmp = std::min(val0,val4); val4 = std::max(val0,val4); + val0 = tmp; tmp = std::min(val1,val5); val5 = std::max(val1,val5); val1 = tmp; tmp = std::min(val2,val6); + val6 = std::max(val2,val6); val2 = tmp; tmp = std::min(val3,val7); val7 = std::max(val3,val7); val3 = tmp; + tmp = std::min(val8,val12); val12 = std::max(val8,val12); val8 = tmp; tmp = std::min(val9,val13); + val13 = std::max(val9,val13); val9 = tmp; tmp = std::min(val10,val14); val14 = std::max(val10,val14); + val10 = tmp; tmp = std::min(val11,val15); val15 = std::max(val11,val15); val11 = tmp; + tmp = std::min(val16,val20); val20 = std::max(val16,val20); val16 = tmp; tmp = std::min(val17,val21); + val21 = std::max(val17,val21); val17 = tmp; tmp = std::min(val18,val22); val22 = std::max(val18,val22); + val18 = tmp; tmp = std::min(val19,val23); val23 = std::max(val19,val23); val19 = tmp; + tmp = std::min(val24,val28); val28 = std::max(val24,val28); val24 = tmp; tmp = std::min(val25,val29); + val29 = std::max(val25,val29); val25 = tmp; tmp = std::min(val26,val30); val30 = std::max(val26,val30); + val26 = tmp; tmp = std::min(val27,val31); val31 = std::max(val27,val31); val27 = tmp; + tmp = std::min(val32,val36); val36 = std::max(val32,val36); val32 = tmp; tmp = std::min(val33,val37); + val37 = std::max(val33,val37); val33 = tmp; tmp = std::min(val34,val38); val38 = std::max(val34,val38); + val34 = tmp; tmp = std::min(val35,val39); val39 = std::max(val35,val39); val35 = tmp; + tmp = std::min(val40,val44); val44 = std::max(val40,val44); val40 = tmp; tmp = std::min(val41,val45); + val45 = std::max(val41,val45); val41 = tmp; tmp = std::min(val42,val46); val46 = std::max(val42,val46); + val42 = tmp; tmp = std::min(val43,val47); val47 = std::max(val43,val47); val43 = tmp; + tmp = std::min(val4,val32); val32 = std::max(val4,val32); val4 = tmp; tmp = std::min(val5,val33); + val33 = std::max(val5,val33); val5 = tmp; tmp = std::min(val6,val34); val34 = std::max(val6,val34); + val6 = tmp; tmp = std::min(val7,val35); val35 = std::max(val7,val35); val7 = tmp; + tmp = std::min(val12,val40); val40 = std::max(val12,val40); val12 = tmp; tmp = std::min(val13,val41); + val41 = std::max(val13,val41); val13 = tmp; tmp = std::min(val14,val42); val42 = std::max(val14,val42); + val14 = tmp; tmp = std::min(val15,val43); val43 = std::max(val15,val43); val15 = tmp; + tmp = std::min(val20,val48); val48 = std::max(val20,val48); val20 = tmp; tmp = std::min(val4,val16); + val16 = std::max(val4,val16); val4 = tmp; tmp = std::min(val5,val17); val17 = std::max(val5,val17); + val5 = tmp; tmp = std::min(val6,val18); val18 = std::max(val6,val18); val6 = tmp; + tmp = std::min(val7,val19); val19 = std::max(val7,val19); val7 = tmp; tmp = std::min(val12,val24); + val24 = std::max(val12,val24); val12 = tmp; tmp = std::min(val13,val25); val25 = std::max(val13,val25); + val13 = tmp; tmp = std::min(val14,val26); val26 = std::max(val14,val26); val14 = tmp; + tmp = std::min(val15,val27); val27 = std::max(val15,val27); val15 = tmp; tmp = std::min(val20,val32); + val32 = std::max(val20,val32); val20 = tmp; tmp = std::min(val21,val33); val33 = std::max(val21,val33); + val21 = tmp; tmp = std::min(val22,val34); val34 = std::max(val22,val34); val22 = tmp; + tmp = std::min(val23,val35); val35 = std::max(val23,val35); val23 = tmp; tmp = std::min(val28,val40); + val40 = std::max(val28,val40); val28 = tmp; tmp = std::min(val29,val41); val41 = std::max(val29,val41); + val29 = tmp; tmp = std::min(val30,val42); val42 = std::max(val30,val42); val30 = tmp; + tmp = std::min(val31,val43); val43 = std::max(val31,val43); val31 = tmp; tmp = std::min(val36,val48); + val48 = std::max(val36,val48); val36 = tmp; tmp = std::min(val4,val8); val8 = std::max(val4,val8); + val4 = tmp; tmp = std::min(val5,val9); val9 = std::max(val5,val9); val5 = tmp; tmp = std::min(val6,val10); + val10 = std::max(val6,val10); val6 = tmp; tmp = std::min(val7,val11); val11 = std::max(val7,val11); val7 = tmp; + tmp = std::min(val12,val16); val16 = std::max(val12,val16); val12 = tmp; tmp = std::min(val13,val17); + val17 = std::max(val13,val17); val13 = tmp; tmp = std::min(val14,val18); val18 = std::max(val14,val18); + val14 = tmp; tmp = std::min(val15,val19); val19 = std::max(val15,val19); val15 = tmp; + tmp = std::min(val20,val24); val24 = std::max(val20,val24); val20 = tmp; tmp = std::min(val21,val25); + val25 = std::max(val21,val25); val21 = tmp; tmp = std::min(val22,val26); val26 = std::max(val22,val26); + val22 = tmp; tmp = std::min(val23,val27); val27 = std::max(val23,val27); val23 = tmp; + tmp = std::min(val28,val32); val32 = std::max(val28,val32); val28 = tmp; tmp = std::min(val29,val33); + val33 = std::max(val29,val33); val29 = tmp; tmp = std::min(val30,val34); val34 = std::max(val30,val34); + val30 = tmp; tmp = std::min(val31,val35); val35 = std::max(val31,val35); val31 = tmp; + tmp = std::min(val36,val40); val40 = std::max(val36,val40); val36 = tmp; tmp = std::min(val37,val41); + val41 = std::max(val37,val41); val37 = tmp; tmp = std::min(val38,val42); val42 = std::max(val38,val42); + val38 = tmp; tmp = std::min(val39,val43); val43 = std::max(val39,val43); val39 = tmp; + tmp = std::min(val44,val48); val48 = std::max(val44,val48); val44 = tmp; tmp = std::min(val0,val2); + val2 = std::max(val0,val2); val0 = tmp; tmp = std::min(val1,val3); val3 = std::max(val1,val3); val1 = tmp; + tmp = std::min(val4,val6); val6 = std::max(val4,val6); val4 = tmp; tmp = std::min(val5,val7); + val7 = std::max(val5,val7); val5 = tmp; tmp = std::min(val8,val10); val10 = std::max(val8,val10); val8 = tmp; + tmp = std::min(val9,val11); val11 = std::max(val9,val11); val9 = tmp; tmp = std::min(val12,val14); + val14 = std::max(val12,val14); val12 = tmp; tmp = std::min(val13,val15); val15 = std::max(val13,val15); + val13 = tmp; tmp = std::min(val16,val18); val18 = std::max(val16,val18); val16 = tmp; + tmp = std::min(val17,val19); val19 = std::max(val17,val19); val17 = tmp; tmp = std::min(val20,val22); + val22 = std::max(val20,val22); val20 = tmp; tmp = std::min(val21,val23); val23 = std::max(val21,val23); + val21 = tmp; tmp = std::min(val24,val26); val26 = std::max(val24,val26); val24 = tmp; + tmp = std::min(val25,val27); val27 = std::max(val25,val27); val25 = tmp; tmp = std::min(val28,val30); + val30 = std::max(val28,val30); val28 = tmp; tmp = std::min(val29,val31); val31 = std::max(val29,val31); + val29 = tmp; tmp = std::min(val32,val34); val34 = std::max(val32,val34); val32 = tmp; + tmp = std::min(val33,val35); val35 = std::max(val33,val35); val33 = tmp; tmp = std::min(val36,val38); + val38 = std::max(val36,val38); val36 = tmp; tmp = std::min(val37,val39); val39 = std::max(val37,val39); + val37 = tmp; tmp = std::min(val40,val42); val42 = std::max(val40,val42); val40 = tmp; + tmp = std::min(val41,val43); val43 = std::max(val41,val43); val41 = tmp; tmp = std::min(val44,val46); + val46 = std::max(val44,val46); val44 = tmp; tmp = std::min(val45,val47); val47 = std::max(val45,val47); + val45 = tmp; tmp = std::min(val2,val32); val32 = std::max(val2,val32); val2 = tmp; tmp = std::min(val3,val33); + val33 = std::max(val3,val33); val3 = tmp; tmp = std::min(val6,val36); val36 = std::max(val6,val36); val6 = tmp; + tmp = std::min(val7,val37); val37 = std::max(val7,val37); val7 = tmp; tmp = std::min(val10,val40); + val40 = std::max(val10,val40); val10 = tmp; tmp = std::min(val11,val41); val41 = std::max(val11,val41); + val11 = tmp; tmp = std::min(val14,val44); val44 = std::max(val14,val44); val14 = tmp; + tmp = std::min(val15,val45); val45 = std::max(val15,val45); val15 = tmp; tmp = std::min(val18,val48); + val48 = std::max(val18,val48); val18 = tmp; tmp = std::min(val2,val16); val16 = std::max(val2,val16); + val2 = tmp; tmp = std::min(val3,val17); val17 = std::max(val3,val17); val3 = tmp; + tmp = std::min(val6,val20); val20 = std::max(val6,val20); val6 = tmp; tmp = std::min(val7,val21); + val21 = std::max(val7,val21); val7 = tmp; tmp = std::min(val10,val24); val24 = std::max(val10,val24); + val10 = tmp; tmp = std::min(val11,val25); val25 = std::max(val11,val25); val11 = tmp; + tmp = std::min(val14,val28); val28 = std::max(val14,val28); val14 = tmp; tmp = std::min(val15,val29); + val29 = std::max(val15,val29); val15 = tmp; tmp = std::min(val18,val32); val32 = std::max(val18,val32); + val18 = tmp; tmp = std::min(val19,val33); val33 = std::max(val19,val33); val19 = tmp; + tmp = std::min(val22,val36); val36 = std::max(val22,val36); val22 = tmp; tmp = std::min(val23,val37); + val37 = std::max(val23,val37); val23 = tmp; tmp = std::min(val26,val40); val40 = std::max(val26,val40); + val26 = tmp; tmp = std::min(val27,val41); val41 = std::max(val27,val41); val27 = tmp; + tmp = std::min(val30,val44); val44 = std::max(val30,val44); val30 = tmp; tmp = std::min(val31,val45); + val45 = std::max(val31,val45); val31 = tmp; tmp = std::min(val34,val48); val48 = std::max(val34,val48); + val34 = tmp; tmp = std::min(val2,val8); val8 = std::max(val2,val8); val2 = tmp; tmp = std::min(val3,val9); + val9 = std::max(val3,val9); val3 = tmp; tmp = std::min(val6,val12); val12 = std::max(val6,val12); val6 = tmp; + tmp = std::min(val7,val13); val13 = std::max(val7,val13); val7 = tmp; tmp = std::min(val10,val16); + val16 = std::max(val10,val16); val10 = tmp; tmp = std::min(val11,val17); val17 = std::max(val11,val17); + val11 = tmp; tmp = std::min(val14,val20); val20 = std::max(val14,val20); val14 = tmp; + tmp = std::min(val15,val21); val21 = std::max(val15,val21); val15 = tmp; tmp = std::min(val18,val24); + val24 = std::max(val18,val24); val18 = tmp; tmp = std::min(val19,val25); val25 = std::max(val19,val25); + val19 = tmp; tmp = std::min(val22,val28); val28 = std::max(val22,val28); val22 = tmp; + tmp = std::min(val23,val29); val29 = std::max(val23,val29); val23 = tmp; tmp = std::min(val26,val32); + val32 = std::max(val26,val32); val26 = tmp; tmp = std::min(val27,val33); val33 = std::max(val27,val33); + val27 = tmp; tmp = std::min(val30,val36); val36 = std::max(val30,val36); val30 = tmp; + tmp = std::min(val31,val37); val37 = std::max(val31,val37); val31 = tmp; tmp = std::min(val34,val40); + val40 = std::max(val34,val40); val34 = tmp; tmp = std::min(val35,val41); val41 = std::max(val35,val41); + val35 = tmp; tmp = std::min(val38,val44); val44 = std::max(val38,val44); val38 = tmp; + tmp = std::min(val39,val45); val45 = std::max(val39,val45); val39 = tmp; tmp = std::min(val42,val48); + val48 = std::max(val42,val48); val42 = tmp; tmp = std::min(val2,val4); val4 = std::max(val2,val4); + val2 = tmp; tmp = std::min(val3,val5); val5 = std::max(val3,val5); val3 = tmp; tmp = std::min(val6,val8); + val8 = std::max(val6,val8); val6 = tmp; tmp = std::min(val7,val9); val9 = std::max(val7,val9); val7 = tmp; + tmp = std::min(val10,val12); val12 = std::max(val10,val12); val10 = tmp; tmp = std::min(val11,val13); + val13 = std::max(val11,val13); val11 = tmp; tmp = std::min(val14,val16); val16 = std::max(val14,val16); + val14 = tmp; tmp = std::min(val15,val17); val17 = std::max(val15,val17); val15 = tmp; + tmp = std::min(val18,val20); val20 = std::max(val18,val20); val18 = tmp; tmp = std::min(val19,val21); + val21 = std::max(val19,val21); val19 = tmp; tmp = std::min(val22,val24); val24 = std::max(val22,val24); + val22 = tmp; tmp = std::min(val23,val25); val25 = std::max(val23,val25); val23 = tmp; + tmp = std::min(val26,val28); val28 = std::max(val26,val28); val26 = tmp; tmp = std::min(val27,val29); + val29 = std::max(val27,val29); val27 = tmp; tmp = std::min(val30,val32); val32 = std::max(val30,val32); + val30 = tmp; tmp = std::min(val31,val33); val33 = std::max(val31,val33); val31 = tmp; + tmp = std::min(val34,val36); val36 = std::max(val34,val36); val34 = tmp; tmp = std::min(val35,val37); + val37 = std::max(val35,val37); val35 = tmp; tmp = std::min(val38,val40); val40 = std::max(val38,val40); + val38 = tmp; tmp = std::min(val39,val41); val41 = std::max(val39,val41); val39 = tmp; + tmp = std::min(val42,val44); val44 = std::max(val42,val44); val42 = tmp; tmp = std::min(val43,val45); + val45 = std::max(val43,val45); val43 = tmp; tmp = std::min(val46,val48); val48 = std::max(val46,val48); + val46 = tmp; val1 = std::max(val0,val1); val3 = std::max(val2,val3); val5 = std::max(val4,val5); + val7 = std::max(val6,val7); val9 = std::max(val8,val9); val11 = std::max(val10,val11); + val13 = std::max(val12,val13); val15 = std::max(val14,val15); val17 = std::max(val16,val17); + val19 = std::max(val18,val19); val21 = std::max(val20,val21); val23 = std::max(val22,val23); + val24 = std::min(val24,val25); val26 = std::min(val26,val27); val28 = std::min(val28,val29); + val30 = std::min(val30,val31); val32 = std::min(val32,val33); val34 = std::min(val34,val35); + val36 = std::min(val36,val37); val38 = std::min(val38,val39); val40 = std::min(val40,val41); + val42 = std::min(val42,val43); val44 = std::min(val44,val45); val46 = std::min(val46,val47); + val32 = std::max(val1,val32); val34 = std::max(val3,val34); val36 = std::max(val5,val36); + val38 = std::max(val7,val38); val9 = std::min(val9,val40); val11 = std::min(val11,val42); + val13 = std::min(val13,val44); val15 = std::min(val15,val46); val17 = std::min(val17,val48); + val24 = std::max(val9,val24); val26 = std::max(val11,val26); val28 = std::max(val13,val28); + val30 = std::max(val15,val30); val17 = std::min(val17,val32); val19 = std::min(val19,val34); + val21 = std::min(val21,val36); val23 = std::min(val23,val38); val24 = std::max(val17,val24); + val26 = std::max(val19,val26); val21 = std::min(val21,val28); val23 = std::min(val23,val30); + val24 = std::max(val21,val24); val23 = std::min(val23,val26); + return std::max(val23,val24); + } + + //! Return sqrt(x^2 + y^2). + template + inline T hypot(const T x, const T y) { + return std::sqrt(x*x + y*y); + } + + template + inline T hypot(const T x, const T y, const T z) { + return std::sqrt(x*x + y*y + z*z); + } + + template + inline T _hypot(const T x, const T y) { // Slower but more precise version + T nx = cimg::abs(x), ny = cimg::abs(y), t; + if (nx0) { t/=nx; return nx*std::sqrt(1 + t*t); } + return 0; + } + + //! Return the factorial of n + inline double factorial(const int n) { + if (n<0) return cimg::type::nan(); + if (n<2) return 1; + double res = 2; + for (int i = 3; i<=n; ++i) res*=i; + return res; + } + + //! Return the number of permutations of k objects in a set of n objects. + inline double permutations(const int k, const int n, const bool with_order) { + if (n<0 || k<0) return cimg::type::nan(); + if (k>n) return 0; + double res = 1; + for (int i = n; i>=n - k + 1; --i) res*=i; + return with_order?res:res/cimg::factorial(k); + } + + inline double _fibonacci(int exp) { + double + base = (1 + std::sqrt(5.))/2, + result = 1/std::sqrt(5.); + while (exp) { + if (exp&1) result*=base; + exp>>=1; + base*=base; + } + return result; + } + + //! Calculate fibonacci number. + // (Precise up to n = 78, less precise for n>78). + inline double fibonacci(const int n) { + if (n<0) return cimg::type::nan(); + if (n<3) return 1; + if (n<11) { + cimg_uint64 fn1 = 1, fn2 = 1, fn = 0; + for (int i = 3; i<=n; ++i) { fn = fn1 + fn2; fn2 = fn1; fn1 = fn; } + return (double)fn; + } + if (n<75) // precise up to n = 74, faster than the integer calculation above for n>10 + return (double)((cimg_uint64)(_fibonacci(n) + 0.5)); + + if (n<94) { // precise up to n = 78, less precise for n>78 up to n = 93, overflows for n>93 + cimg_uint64 + fn1 = ((cimg_uint64)303836)<<32 | 3861581201UL, // 1304969544928657ULL (avoid C++98 warning with ULL) + fn2 = ((cimg_uint64)187781)<<32 | 2279239217UL, // 806515533049393ULL + fn = 0; + for (int i = 75; i<=n; ++i) { fn = fn1 + fn2; fn2 = fn1; fn1 = fn; } + return (double)fn; + } + return _fibonacci(n); // Not precise, but better than the wrong overflowing calculation + } + + //! Calculate greatest common divisor. + inline long gcd(long a, long b) { + while (a) { const long c = a; a = b%a; b = c; } + return b; + } + + //! Convert character to lower case. + inline char lowercase(const char x) { + return (char)((x<'A'||x>'Z')?x:x - 'A' + 'a'); + } + inline double lowercase(const double x) { + return (double)((x<'A'||x>'Z')?x:x - 'A' + 'a'); + } + + //! Convert C-string to lower case. + inline void lowercase(char *const str) { + if (str) for (char *ptr = str; *ptr; ++ptr) *ptr = lowercase(*ptr); + } + + //! Convert character to upper case. + inline char uppercase(const char x) { + return (char)((x<'a'||x>'z')?x:x - 'a' + 'A'); + } + + inline double uppercase(const double x) { + return (double)((x<'a'||x>'z')?x:x - 'a' + 'A'); + } + + //! Convert C-string to upper case. + inline void uppercase(char *const str) { + if (str) for (char *ptr = str; *ptr; ++ptr) *ptr = uppercase(*ptr); + } + + //! Return \c true if input character is blank (space, tab, or non-printable character). + inline bool is_blank(const char c) { + return c>=0 && (unsigned char)c<=' '; + } + + //! Read value in a C-string. + /** + \param str C-string containing the float value to read. + \return Read value. + \note Same as std::atof() extended to manage the retrieval of fractions from C-strings, + as in "1/2". + **/ + inline double atof(const char *const str) { + double x = 0, y = 1; + return str && cimg_sscanf(str,"%lf/%lf",&x,&y)>0?x/y:0; + } + + //! Compare the first \p l characters of two C-strings, ignoring the case. + /** + \param str1 C-string. + \param str2 C-string. + \param l Number of characters to compare. + \return \c 0 if the two strings are equal, something else otherwise. + \note This function has to be defined since it is not provided by all C++-compilers (not ANSI). + **/ + inline int strncasecmp(const char *const str1, const char *const str2, const int l) { + if (!l) return 0; + if (!str1) return str2?-1:0; + const char *nstr1 = str1, *nstr2 = str2; + int k, diff = 0; for (k = 0; kp && str[q]==delimiter; ) { --q; if (!is_iterative) break; } + } + const int n = q - p + 1; + if (n!=l) { std::memmove(str,str + p,(unsigned int)n); str[n] = 0; return true; } + return false; + } + + //! Remove white spaces on the start and/or end of a C-string. + inline bool strpare(char *const str, const bool is_symmetric, const bool is_iterative) { + if (!str) return false; + const int l = (int)std::strlen(str); + int p, q; + if (is_symmetric) for (p = 0, q = l - 1; pp && is_blank(str[q]); ) { --q; if (!is_iterative) break; } + } + const int n = q - p + 1; + if (n!=l) { std::memmove(str,str + p,(unsigned int)n); str[n] = 0; return true; } + return false; + } + + //! Replace reserved characters (for Windows filename) by another character. + /** + \param[in,out] str C-string to work with (modified at output). + \param[in] c Replacement character. + **/ + inline void strwindows_reserved(char *const str, const char c='_') { + for (char *s = str; *s; ++s) { + const char i = *s; + if (i=='<' || i=='>' || i==':' || i=='\"' || i=='/' || i=='\\' || i=='|' || i=='?' || i=='*') *s = c; + } + } + + //! Replace escape sequences in C-strings by character values. + /** + \param[in,out] str C-string to work with (modified at output). + **/ + inline void strunescape(char *const str) { +#define cimg_strunescape(ci,co) case ci : *nd = co; ++ns; break; + + unsigned char val = 0; + for (char *ns = str, *nd = str; *ns || (bool)(*nd = 0); ++nd) if (*ns=='\\') switch (*(++ns)) { + cimg_strunescape('a','\a'); + cimg_strunescape('b','\b'); + cimg_strunescape('e',0x1B); + cimg_strunescape('f','\f'); + cimg_strunescape('n','\n'); + cimg_strunescape('r','\r'); + cimg_strunescape('t','\t'); + cimg_strunescape('v','\v'); + cimg_strunescape('\\','\\'); + cimg_strunescape('\'','\''); + cimg_strunescape('\"','\"'); + cimg_strunescape('\?','\?'); + case '0' : case '1' : case '2' : case '3' : case '4' : case '5' : case '6' : case '7' : + val = *(ns++) - '0'; + if (*ns>='0' && *ns<='7') (val<<=3)|=*(ns++) - '0'; + if (*ns>='0' && *ns<='7') (val<<=3)|=*(ns++) - '0'; + *nd = (char)val; + break; + case 'x' : { + char c = lowercase(*(++ns)); + if ((c>='0' && c<='9') || (c>='a' && c<='f')) { + val = (c<='9'?c - '0':c - 'a' + 10); + c = lowercase(*(++ns)); + if ((c>='0' && c<='9') || (c>='a' && c<='f')) { + (val<<=4)|=(c<='9'?c - '0':c - 'a' + 10); + ++ns; + } + *nd = val; + } else *nd = c; + } break; + case 'u' : { // UTF-8 BMP + char c1, c2, c3, c4; + if ((((c1 = lowercase(ns[1]))>='0' && c1<='9') || (c1>='a' && c1<='f')) && + (((c2 = lowercase(ns[2]))>='0' && c2<='9') || (c2>='a' && c2<='f')) && + (((c3 = lowercase(ns[3]))>='0' && c3<='9') || (c3>='a' && c3<='f')) && + (((c4 = lowercase(ns[4]))>='0' && c4<='9') || (c4>='a' && c4<='f'))) { + c1 = (c1<='9'?c1 - '0':c1 - 'a' + 10); + c2 = (c2<='9'?c2 - '0':c2 - 'a' + 10); + c3 = (c3<='9'?c3 - '0':c3 - 'a' + 10); + c4 = (c4<='9'?c4 - '0':c4 - 'a' + 10); + const unsigned int ival = + ((unsigned int)c1<<12) | ((unsigned int)c2<<8) | ((unsigned int)c3<<4) | c4; + if (ival<=0x007f) *nd = (char)ival; + else if (ival<=0x07ff) { + *(nd++) = (char)((ival>>6)|0xc0); + *nd = (char)((ival&0x3f)|0x80); + } else { + *(nd++) = (char)((ival>>12)|0xe0); + *(nd++) = (char)(((ival>>6)&0x3f)|0x80); + *nd = (char)((ival&0x3f)|0x80); + } + ns+=5; + } else *nd = *(ns++); + } break; + case 'U' : { // UTF-8 astral planes + char c1, c2, c3, c4, c5, c6, c7, c8; + if ((((c1 = lowercase(ns[1]))>='0' && c1<='9') || (c1>='a' && c1<='f')) && + (((c2 = lowercase(ns[2]))>='0' && c2<='9') || (c2>='a' && c2<='f')) && + (((c3 = lowercase(ns[3]))>='0' && c3<='9') || (c3>='a' && c3<='f')) && + (((c4 = lowercase(ns[4]))>='0' && c4<='9') || (c4>='a' && c4<='f')) && + (((c5 = lowercase(ns[5]))>='0' && c5<='9') || (c5>='a' && c5<='f')) && + (((c6 = lowercase(ns[6]))>='0' && c6<='9') || (c6>='a' && c6<='f')) && + (((c7 = lowercase(ns[7]))>='0' && c7<='9') || (c7>='a' && c7<='f')) && + (((c8 = lowercase(ns[8]))>='0' && c8<='9') || (c8>='a' && c8<='f'))) { + c1 = (c1<='9'?c1 - '0':c1 - 'a' + 10); + c2 = (c2<='9'?c2 - '0':c2 - 'a' + 10); + c3 = (c3<='9'?c3 - '0':c3 - 'a' + 10); + c4 = (c4<='9'?c4 - '0':c4 - 'a' + 10); + c5 = (c5<='9'?c5 - '0':c5 - 'a' + 10); + c6 = (c6<='9'?c6 - '0':c6 - 'a' + 10); + c7 = (c7<='9'?c7 - '0':c7 - 'a' + 10); + c8 = (c8<='9'?c8 - '0':c8 - 'a' + 10); + const unsigned int ival = + ((unsigned int)c1<<28) | ((unsigned int)c2<<24) | ((unsigned int)c3<<20) | ((unsigned int)c4<<16) | + ((unsigned int)c5<<12) | ((unsigned int)c6<<8) | ((unsigned int)c7<<4) | (unsigned int)c8; + if (ival<=0x007f) *nd = (char)ival; + else if (ival<=0x07ff) { + *(nd++) = (char)((ival>>6)|0xc0); + *nd = (char)((ival&0x3f)|0x80); + } else if (ival<=0xffff) { + *(nd++) = (char)((ival>>12)|0xe0); + *(nd++) = (char)(((ival>>6)&0x3f)|0x80); + *nd = (char)((ival&0x3f)|0x80); + } else { + *(nd++) = (char)((ival>>18)|0xf0); + *(nd++) = (char)(((ival>>12)&0x3f)|0x80); + *(nd++) = (char)(((ival>>6)&0x3f)|0x80); + *nd = (char)((ival&0x3f)|0x80); + } + ns+=9; + } else *nd = *(ns++); + } break; + default : if (*ns) *nd = *(ns++); + } + else *nd = *(ns++); + } + + // Return a temporary string describing the size of a memory buffer. + inline const char *strbuffersize(const cimg_ulong size); + + // Return string that identifies the running OS. + inline const char *stros() { +#if defined(linux) || defined(__linux) || defined(__linux__) + static const char *const str = "Linux"; +#elif defined(sun) || defined(__sun) + static const char *const str = "Sun OS"; +#elif defined(BSD) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined (__DragonFly__) + static const char *const str = "BSD"; +#elif defined(sgi) || defined(__sgi) + static const char *const str = "Irix"; +#elif defined(__MACOSX__) || defined(__APPLE__) + static const char *const str = "Mac OS"; +#elif defined(unix) || defined(__unix) || defined(__unix__) + static const char *const str = "Generic Unix"; +#elif defined(_MSC_VER) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || \ + defined(WIN64) || defined(_WIN64) || defined(__WIN64__) + static const char *const str = "Windows"; +#else + const char + *const _str1 = std::getenv("OSTYPE"), + *const _str2 = _str1?_str1:std::getenv("OS"), + *const str = _str2?_str2:"Unknown OS"; +#endif + return str; + } + + //! Return the basename of a filename. + inline const char* basename(const char *const s, const char separator=cimg_file_separator) { + const char *p = 0, *np = s; + while (np>=s && (p=np)) np = std::strchr(np,separator) + 1; + return p; + } + + // Return a random filename. + inline const char* filenamerand() { + cimg::mutex(6); + static char randomid[9]; + for (unsigned int k = 0; k<8; ++k) { + const int v = (int)cimg::rand(65535)%3; + randomid[k] = (char)(v==0?('0' + ((int)cimg::rand(65535)%10)): + (v==1?('a' + ((int)cimg::rand(65535)%26)): + ('A' + ((int)cimg::rand(65535)%26)))); + } + cimg::mutex(6,0); + return randomid; + } + + // Convert filename as a Windows-style filename (short path name). + inline void winformat_string(char *const str) { + if (str && *str) { +#if cimg_OS==2 + char *const nstr = new char[MAX_PATH]; + if (GetShortPathNameA(str,nstr,MAX_PATH)) std::strcpy(str,nstr); + delete[] nstr; +#endif + } + } + + // Open a file (similar to std:: fopen(), but with wide character support on Windows). + inline std::FILE *std_fopen(const char *const path, const char *const mode); + + + //! Open a file. + /** + \param path Path of the filename to open. + \param mode C-string describing the opening mode. + \return Opened file. + \note Same as std::fopen() but throw a \c CImgIOException when + the specified file cannot be opened, instead of returning \c 0. + **/ + inline std::FILE *fopen(const char *const path, const char *const mode) { + if (!path) + throw CImgArgumentException("cimg::fopen(): Specified file path is (null)."); + if (!mode) + throw CImgArgumentException("cimg::fopen(): File '%s', specified mode is (null).", + path); + std::FILE *res = 0; + if (*path=='-' && (!path[1] || path[1]=='.')) { + res = (*mode=='r')?cimg::_stdin():cimg::_stdout(); +#if cimg_OS==2 + if (*mode && mode[1]=='b') { // Force stdin/stdout to be in binary mode +#ifdef __BORLANDC__ + if (setmode(_fileno(res),0x8000)==-1) res = 0; +#else + if (_setmode(_fileno(res),0x8000)==-1) res = 0; +#endif + } +#endif + } else res = cimg::std_fopen(path,mode); + if (!res) throw CImgIOException("cimg::fopen(): Failed to open file '%s' with mode '%s'.", + path,mode); + return res; + } + + //! Close a file. + /** + \param file File to close. + \return \c 0 if file has been closed properly, something else otherwise. + \note Same as std::fclose() but display a warning message if + the file has not been closed properly. + **/ + inline int fclose(std::FILE *file) { + if (!file) { warn("cimg::fclose(): Specified file is (null)."); return 0; } + if (file==cimg::_stdin(false) || file==cimg::_stdout(false)) return 0; + const int errn = std::fclose(file); + if (errn!=0) warn("cimg::fclose(): Error code %d returned during file closing.", + errn); + return errn; + } + + //! Version of 'fseek()' that supports >=64bits offsets everywhere (for Windows). + inline int fseek(FILE *stream, cimg_long offset, int origin) { +#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__) + return _fseeki64(stream,(__int64)offset,origin); +#else + return std::fseek(stream,offset,origin); +#endif + } + + //! Version of 'ftell()' that supports >=64bits offsets everywhere (for Windows). + inline cimg_long ftell(FILE *stream) { +#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__) + return (cimg_long)_ftelli64(stream); +#else + return (cimg_long)std::ftell(stream); +#endif + } + + // Get the file or directory attributes with support for UTF-8 paths (Windows only). +#if cimg_OS==2 + inline DWORD win_getfileattributes(const char *const path); +#endif + + //! Check if a path is a directory. + /** + \param path Specified path to test. + **/ + inline bool is_directory(const char *const path) { + if (!path || !*path) return false; +#if cimg_OS==1 + struct stat st_buf; + return (!stat(path,&st_buf) && S_ISDIR(st_buf.st_mode)); +#elif cimg_OS==2 + const DWORD res = win_getfileattributes(path); + return res!=INVALID_FILE_ATTRIBUTES && (res&FILE_ATTRIBUTE_DIRECTORY); +#else + return false; +#endif + } + + //! Check if a path is a file. + /** + \param path Specified path to test. + **/ + inline bool is_file(const char *const path) { + if (!path || !*path) return false; +#if cimg_OS==2 + const DWORD res = cimg::win_getfileattributes(path); + return res!=INVALID_FILE_ATTRIBUTES && !(res&FILE_ATTRIBUTE_DIRECTORY); +#else + std::FILE *const file = cimg::std_fopen(path,"rb"); + if (!file) return false; + cimg::fclose(file); + return !is_directory(path); +#endif + } + + //! Get file size. + /** + \param filename Specified filename to get size from. + \return File size or '-1' if file does not exist. + **/ + inline cimg_int64 fsize(const char *const filename) { + std::FILE *const file = cimg::std_fopen(filename,"rb"); + if (!file) return (cimg_int64)-1; + std::fseek(file,0,SEEK_END); + const cimg_int64 siz = (cimg_int64)std::ftell(file); + cimg::fclose(file); + return siz; + } + + //! Get last write time of a given file or directory (multiple-attributes version). + /** + \param path Specified path to get attributes from. + \param[in,out] attr Type of requested time attributes. + Can be { 0=year | 1=month | 2=day | 3=day of week | 4=hour | 5=minute | 6=second } + Replaced by read attributes after return (or -1 if an error occurred). + \param nb_attr Number of attributes to read/write. + \return Latest read attribute. + **/ + template + inline int fdate(const char *const path, T *attr, const unsigned int nb_attr) { +#define _cimg_fdate_err() for (unsigned int i = 0; i + inline int date(T *attr, const unsigned int nb_attr) { + int res = -1; + cimg::mutex(6); +#if cimg_OS==2 + SYSTEMTIME st; + GetLocalTime(&st); + for (unsigned int i = 0; itm_year + 1900: + attr[i]==1?st->tm_mon + 1: + attr[i]==2?st->tm_mday: + attr[i]==3?st->tm_wday: + attr[i]==4?st->tm_hour: + attr[i]==5?st->tm_min: + attr[i]==6?st->tm_sec: + attr[i]==7?_st.tv_usec/1000:-1); + attr[i] = (T)res; + } +#endif + cimg::mutex(6,0); + return res; + } + + //! Get current local time (single-attribute version). + /** + \param attr Type of requested time attribute. + Can be { 0=year | 1=month | 2=day | 3=day of week | 4=hour | 5=minute | 6=second | + 7=millisecond } + \return Specified attribute or -1 if an error occurred. + **/ + inline int date(unsigned int attr) { + int out = (int)attr; + return date(&out,1); + } + + // Get/set path to the \c curl binary. + inline const char *curl_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the \c dcraw binary. + inline const char *dcraw_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the FFMPEG's \c ffmpeg binary. + inline const char *ffmpeg_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the GraphicsMagick's \c gm binary. + inline const char* graphicsmagick_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the \c gunzip binary. + inline const char *gunzip_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the \c gzip binary. + inline const char *gzip_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the ImageMagick's \c convert binary. + inline const char* imagemagick_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the Medcon's \c medcon binary. + inline const char* medcon_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to store temporary files. + inline const char* temporary_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the \c wget binary. + inline const char *wget_path(const char *const user_path=0, const bool reinit_path=false); + + //! Split filename into two C-strings \c body and \c extension. + /** + filename and body must not overlap! + **/ + inline const char *split_filename(const char *const filename, char *const body=0) { + if (!filename) { if (body) *body = 0; return ""; } + const char * p = std::strrchr(filename,'.'); + if (!p || std::strchr(p,'/') || std::strchr(p,'\\')) { // No extension. + if (body) std::strcpy(body,filename); + return filename + std::strlen(filename); + } + const unsigned int l = (unsigned int)(p - filename); + if (body) { if (l) std::memcpy(body,filename,l); body[l] = 0; } + return p + 1; + } + + // Generate a numbered version of a filename. + inline char* number_filename(const char *const filename, const int number, + const unsigned int digits, char *const str); + + //! Read data from file. + /** + \param[out] ptr Pointer to memory buffer that will contain the binary data read from file. + \param nmemb Number of elements to read. + \param stream File to read data from. + \return Number of read elements. + \note Same as std::fread() but may display warning message if all elements could not be read. + **/ + template + inline size_t fread(T *const ptr, const size_t nmemb, std::FILE *stream) { + if (!ptr || !stream) + throw CImgArgumentException("cimg::fread(): Invalid reading request of %u %s%s from file %p to buffer %p.", + nmemb,cimg::type::string(),nmemb>1?"s":"",stream,ptr); + if (!nmemb) return 0; + const size_t wlimitT = 63*1024*1024, wlimit = wlimitT/sizeof(T); + size_t to_read = nmemb, al_read = 0, l_to_read = 0, l_al_read = 0; + do { + l_to_read = (to_read*sizeof(T))0); + if (to_read>0) + warn("cimg::fread(): Only %lu/%lu elements could be read from file.", + (unsigned long)al_read,(unsigned long)nmemb); + return al_read; + } + + //! Write data to file. + /** + \param ptr Pointer to memory buffer containing the binary data to write on file. + \param nmemb Number of elements to write. + \param[out] stream File to write data on. + \return Number of written elements. + \note Similar to std::fwrite but may display warning messages if all elements could not be written. + **/ + template + inline size_t fwrite(const T *ptr, const size_t nmemb, std::FILE *stream) { + if (!ptr || !stream) + throw CImgArgumentException("cimg::fwrite(): Invalid writing request of %u %s%s from buffer %p to file %p.", + nmemb,cimg::type::string(),nmemb>1?"s":"",ptr,stream); + if (!nmemb) return 0; + const size_t wlimitT = 63*1024*1024, wlimit = wlimitT/sizeof(T); + size_t to_write = nmemb, al_write = 0, l_to_write = 0, l_al_write = 0; + do { + l_to_write = (to_write*sizeof(T))0); + if (to_write>0) + warn("cimg::fwrite(): Only %lu/%lu elements could be written in file.", + (unsigned long)al_write,(unsigned long)nmemb); + return al_write; + } + + //! Create an empty file. + /** + \param file Input file (can be \c 0 if \c filename is set). + \param filename Filename, as a C-string (can be \c 0 if \c file is set). + **/ + inline void fempty(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException("cimg::fempty(): Specified filename is (null)."); + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + if (!file) cimg::fclose(nfile); + } + + // Try to guess format from an image file. + inline const char *ftype(std::FILE *const file, const char *const filename); + + // Get or set load from network mode (can be { 0=disabled | 1=enabled }). + inline bool& network_mode(const bool value, const bool is_set) { + static bool mode = true; + if (is_set) { cimg::mutex(0); mode = value; cimg::mutex(0,0); } + return mode; + } + + inline bool& network_mode() { + return network_mode(false,false); + } + + // Load file from network as a local temporary file. + inline char *load_network(const char *const url, char *const filename_local, + const unsigned int timeout=0, const bool try_fallback=false, + const char *const referer=0); + + //! Return options specified on the command line. + inline const char* option(const char *const name, const int argc, const char *const *const argv, + const char *const _default, const char *const usage, const bool reset_static) { + static bool first = true, visu = false; + if (reset_static) { first = true; return 0; } + const char *res = 0; + if (first) { + first = false; + visu = cimg::option("-h",argc,argv,(char*)0,(char*)0,false)!=0; + visu |= cimg::option("-help",argc,argv,(char*)0,(char*)0,false)!=0; + visu |= cimg::option("--help",argc,argv,(char*)0,(char*)0,false)!=0; + } + if (!name && visu) { + if (usage) { + std::fprintf(cimg::output(),"\n %s%s%s",cimg::t_red,cimg::basename(argv[0]),cimg::t_normal); + std::fprintf(cimg::output(),": %s",usage); + std::fprintf(cimg::output()," (%s, %s)\n\n",cimg_date,cimg_time); + } + if (_default) std::fprintf(cimg::output(),"%s\n",_default); + } + if (name) { + if (argc>0) { + int k = 0; + while (k Operating System: %s%-13s%s %s('cimg_OS'=%d)%s\n", + cimg::t_bold, + cimg_OS==1?"Unix":(cimg_OS==2?"Windows":"Unknown"), + cimg::t_normal,cimg::t_green, + cimg_OS, + cimg::t_normal); + + std::fprintf(cimg::output()," > CPU endianness: %s%s Endian%s\n", + cimg::t_bold, + cimg::endianness()?"Big":"Little", + cimg::t_normal); + + std::fprintf(cimg::output()," > Verbosity mode: %s%-13s%s %s('cimg_verbosity'=%d)%s\n", + cimg::t_bold, + cimg_verbosity==0?"Quiet": + cimg_verbosity==1?"Console": + cimg_verbosity==2?"Dialog": + cimg_verbosity==3?"Console+Warnings":"Dialog+Warnings", + cimg::t_normal,cimg::t_green, + cimg_verbosity, + cimg::t_normal); + + std::fprintf(cimg::output()," > Stricts warnings: %s%-13s%s %s('cimg_strict_warnings' %s)%s\n", + cimg::t_bold, +#ifdef cimg_strict_warnings + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Support for C++11: %s%-13s%s %s('cimg_use_cpp11'=%d)%s\n", + cimg::t_bold, + cimg_use_cpp11?"Yes":"No", + cimg::t_normal,cimg::t_green, + (int)cimg_use_cpp11, + cimg::t_normal); + + std::fprintf(cimg::output()," > Using VT100 messages: %s%-13s%s %s('cimg_use_vt100' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_vt100 + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Display type: %s%-13s%s %s('cimg_display'=%d)%s\n", + cimg::t_bold, + cimg_display==0?"No display":cimg_display==1?"X11":cimg_display==2?"Windows GDI":"Unknown", + cimg::t_normal,cimg::t_green, + (int)cimg_display, + cimg::t_normal); + +#if cimg_display==1 + std::fprintf(cimg::output()," > Using XShm for X11: %s%-13s%s %s('cimg_use_xshm' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_xshm + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Using XRand for X11: %s%-13s%s %s('cimg_use_xrandr' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_xrandr + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); +#endif + std::fprintf(cimg::output()," > Using OpenMP: %s%-13s%s %s('cimg_use_openmp' %s)%s\n", + cimg::t_bold, +#if cimg_use_openmp!=0 + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + std::fprintf(cimg::output()," > Using PNG library: %s%-13s%s %s('cimg_use_png' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_png + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + std::fprintf(cimg::output()," > Using JPEG library: %s%-13s%s %s('cimg_use_jpeg' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_jpeg + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Using TIFF library: %s%-13s%s %s('cimg_use_tiff' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_tiff + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Using Magick++ library: %s%-13s%s %s('cimg_use_magick' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_magick + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Using FFTW3 library: %s%-13s%s %s('cimg_use_fftw3' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_fftw3 + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Using LAPACK library: %s%-13s%s %s('cimg_use_lapack' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_lapack + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + char *const tmp = new char[1024]; + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::curl_path()); + std::fprintf(cimg::output()," > Path of 'curl': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::dcraw_path()); + std::fprintf(cimg::output()," > Path of 'dcraw': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::ffmpeg_path()); + std::fprintf(cimg::output()," > Path of 'ffmpeg': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::graphicsmagick_path()); + std::fprintf(cimg::output()," > Path of 'graphicsmagick': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::gunzip_path()); + std::fprintf(cimg::output()," > Path of 'gunzip': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::gzip_path()); + std::fprintf(cimg::output()," > Path of 'gzip': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::imagemagick_path()); + std::fprintf(cimg::output()," > Path of 'imagemagick': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::medcon_path()); + std::fprintf(cimg::output()," > Path of 'medcon': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::temporary_path()); + std::fprintf(cimg::output()," > Temporary path: %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::wget_path()); + std::fprintf(cimg::output()," > Path of 'wget': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + std::fprintf(cimg::output(),"\n"); + delete[] tmp; + } + + // Declare LAPACK function signatures if LAPACK support is enabled. +#ifdef cimg_use_lapack + template + inline void getrf(int &N, T *lapA, int *IPIV, int &INFO) { + dgetrf_(&N,&N,lapA,&N,IPIV,&INFO); + } + + inline void getrf(int &N, float *lapA, int *IPIV, int &INFO) { + sgetrf_(&N,&N,lapA,&N,IPIV,&INFO); + } + + template + inline void getri(int &N, T *lapA, int *IPIV, T* WORK, int &LWORK, int &INFO) { + dgetri_(&N,lapA,&N,IPIV,WORK,&LWORK,&INFO); + } + + inline void getri(int &N, float *lapA, int *IPIV, float* WORK, int &LWORK, int &INFO) { + sgetri_(&N,lapA,&N,IPIV,WORK,&LWORK,&INFO); + } + + template + inline void gesvd(char &JOB, int &M, int &N, T *lapA, int &MN, + T *lapS, T *lapU, T *lapV, T *WORK, int &LWORK, int &INFO) { + dgesvd_(&JOB,&JOB,&M,&N,lapA,&MN,lapS,lapU,&M,lapV,&N,WORK,&LWORK,&INFO); + } + + inline void gesvd(char &JOB, int &M, int &N, float *lapA, int &MN, + float *lapS, float *lapU, float *lapV, float *WORK, int &LWORK, int &INFO) { + sgesvd_(&JOB,&JOB,&M,&N,lapA,&MN,lapS,lapU,&M,lapV,&N,WORK,&LWORK,&INFO); + } + + template + inline void getrs(char &TRANS, int &N, T *lapA, int *IPIV, T *lapB, int &INFO) { + int one = 1; + dgetrs_(&TRANS,&N,&one,lapA,&N,IPIV,lapB,&N,&INFO); + } + + inline void getrs(char &TRANS, int &N, float *lapA, int *IPIV, float *lapB, int &INFO) { + int one = 1; + sgetrs_(&TRANS,&N,&one,lapA,&N,IPIV,lapB,&N,&INFO); + } + + template + inline void syev(char &JOB, char &UPLO, int &N, T *lapA, T *lapW, T *WORK, int &LWORK, int &INFO) { + dsyev_(&JOB,&UPLO,&N,lapA,&N,lapW,WORK,&LWORK,&INFO); + } + + inline void syev(char &JOB, char &UPLO, int &N, float *lapA, float *lapW, float *WORK, int &LWORK, int &INFO) { + ssyev_(&JOB,&UPLO,&N,lapA,&N,lapW,WORK,&LWORK,&INFO); + } + + template + inline void sgels(char & TRANS, int &M, int &N, int &NRHS, T* lapA, int &LDA, + T* lapB, int &LDB, T* WORK, int &LWORK, int &INFO) { + dgels_(&TRANS, &M, &N, &NRHS, lapA, &LDA, lapB, &LDB, WORK, &LWORK, &INFO); + } + + inline void sgels(char & TRANS, int &M, int &N, int &NRHS, float* lapA, int &LDA, + float* lapB, int &LDB, float* WORK, int &LWORK, int &INFO) { + sgels_(&TRANS, &M, &N, &NRHS, lapA, &LDA, lapB, &LDB, WORK, &LWORK, &INFO); + } + +#endif + + } // namespace cimg { ... + + /*------------------------------------------------ + # + # + # Definition of mathematical operators and + # external functions. + # + # + -------------------------------------------------*/ + +#define _cimg_create_operator(typ) \ + template \ + inline CImg::type> operator+(const typ val, const CImg& img) { \ + return img + val; \ + } \ + template \ + inline CImg::type> operator-(const typ val, const CImg& img) { \ + typedef typename cimg::superset::type Tt; \ + return CImg(img._width,img._height,img._depth,img._spectrum,val)-=img; \ + } \ + template \ + inline CImg::type> operator*(const typ val, const CImg& img) { \ + return img*val; \ + } \ + template \ + inline CImg::type> operator/(const typ val, const CImg& img) { \ + return val*img.get_invert(); \ + } \ + template \ + inline CImg::type> operator&(const typ val, const CImg& img) { \ + return img & val; \ + } \ + template \ + inline CImg::type> operator|(const typ val, const CImg& img) { \ + return img | val; \ + } \ + template \ + inline CImg::type> operator^(const typ val, const CImg& img) { \ + return img ^ val; \ + } \ + template \ + inline bool operator==(const typ val, const CImg& img) { \ + return img == val; \ + } \ + template \ + inline bool operator!=(const typ val, const CImg& img) { \ + return img != val; \ + } + + _cimg_create_operator(bool) + _cimg_create_operator(unsigned char) + _cimg_create_operator(char) + _cimg_create_operator(signed char) + _cimg_create_operator(unsigned short) + _cimg_create_operator(short) + _cimg_create_operator(unsigned int) + _cimg_create_operator(int) + _cimg_create_operator(cimg_uint64) + _cimg_create_operator(cimg_int64) + _cimg_create_operator(float) + _cimg_create_operator(double) + _cimg_create_operator(long double) + + template + inline CImg<_cimg_Tfloat> operator+(const char *const expression, const CImg& img) { + return img + expression; + } + + template + inline CImg<_cimg_Tfloat> operator-(const char *const expression, const CImg& img) { + return CImg<_cimg_Tfloat>(img,false).fill(expression,true)-=img; + } + + template + inline CImg<_cimg_Tfloat> operator*(const char *const expression, const CImg& img) { + return img*expression; + } + + template + inline CImg<_cimg_Tfloat> operator/(const char *const expression, const CImg& img) { + return expression*img.get_invert(); + } + + template + inline CImg operator&(const char *const expression, const CImg& img) { + return img & expression; + } + + template + inline CImg operator|(const char *const expression, const CImg& img) { + return img | expression; + } + + template + inline CImg operator^(const char *const expression, const CImg& img) { + return img ^ expression; + } + + template + inline bool operator==(const char *const expression, const CImg& img) { + return img==expression; + } + + template + inline bool operator!=(const char *const expression, const CImg& img) { + return img!=expression; + } + + template + inline CImg transpose(const CImg& instance) { + return instance.get_transpose(); + } + + template + inline CImg<_cimg_Tfloat> invert(const CImg& instance, const bool use_LU=true) { + return instance.get_invert(use_LU); + } + + template + inline CImg<_cimg_Tfloat> pseudoinvert(const CImg& instance, const bool use_LU=false) { + return instance.get_pseudoinvert(use_LU); + } + +#define _cimg_create_pointwise_function(name) \ + template \ + inline CImg<_cimg_Tfloat> name(const CImg& instance) { \ + return instance.get_##name(); \ + } + + _cimg_create_pointwise_function(sqr) + _cimg_create_pointwise_function(sqrt) + _cimg_create_pointwise_function(exp) + _cimg_create_pointwise_function(log) + _cimg_create_pointwise_function(log2) + _cimg_create_pointwise_function(log10) + _cimg_create_pointwise_function(abs) + _cimg_create_pointwise_function(sign) + _cimg_create_pointwise_function(cos) + _cimg_create_pointwise_function(sin) + _cimg_create_pointwise_function(sinc) + _cimg_create_pointwise_function(tan) + _cimg_create_pointwise_function(acos) + _cimg_create_pointwise_function(asin) + _cimg_create_pointwise_function(atan) + _cimg_create_pointwise_function(cosh) + _cimg_create_pointwise_function(sinh) + _cimg_create_pointwise_function(tanh) + _cimg_create_pointwise_function(acosh) + _cimg_create_pointwise_function(asinh) + _cimg_create_pointwise_function(atanh) + + /*----------------------------------- + # + # Define the CImgDisplay structure + # + ----------------------------------*/ + //! Allow the creation of windows, display images on them and manage user events (keyboard, mouse and windows events). + /** + CImgDisplay methods rely on a low-level graphic library to perform: it can be either \b X-Window + (X11, for Unix-based systems) or \b GDI32 (for Windows-based systems). + If both libraries are missing, CImgDisplay will not be able to display images on screen, and will enter + a minimal mode where warning messages will be outputted each time the program is trying to call one of the + CImgDisplay method. + + The configuration variable \c cimg_display tells about the graphic library used. + It is set automatically by \CImg when one of these graphic libraries has been detected. + But, you can override its value if necessary. Valid choices are: + - 0: Disable display capabilities. + - 1: Use \b X-Window (X11) library. + - 2: Use \b GDI32 library. + + Remember to link your program against \b X11 or \b GDI32 libraries if you use CImgDisplay. + **/ + struct CImgDisplay { + cimg_uint64 _timer, _fps_frames, _fps_timer; + unsigned int _width, _height, _normalization; + float _fps_fps, _min, _max; + bool _is_fullscreen; + char *_title; + unsigned int _window_width, _window_height, _button, *_keys, *_released_keys; + int _window_x, _window_y, _mouse_x, _mouse_y, _wheel; + bool _is_closed, _is_resized, _is_moved, _is_event, + _is_keyESC, _is_keyF1, _is_keyF2, _is_keyF3, _is_keyF4, _is_keyF5, _is_keyF6, _is_keyF7, + _is_keyF8, _is_keyF9, _is_keyF10, _is_keyF11, _is_keyF12, _is_keyPAUSE, _is_key1, _is_key2, + _is_key3, _is_key4, _is_key5, _is_key6, _is_key7, _is_key8, _is_key9, _is_key0, + _is_keyBACKSPACE, _is_keyINSERT, _is_keyHOME, _is_keyPAGEUP, _is_keyTAB, _is_keyQ, _is_keyW, _is_keyE, + _is_keyR, _is_keyT, _is_keyY, _is_keyU, _is_keyI, _is_keyO, _is_keyP, _is_keyDELETE, + _is_keyEND, _is_keyPAGEDOWN, _is_keyCAPSLOCK, _is_keyA, _is_keyS, _is_keyD, _is_keyF, _is_keyG, + _is_keyH, _is_keyJ, _is_keyK, _is_keyL, _is_keyENTER, _is_keySHIFTLEFT, _is_keyZ, _is_keyX, + _is_keyC, _is_keyV, _is_keyB, _is_keyN, _is_keyM, _is_keySHIFTRIGHT, _is_keyARROWUP, _is_keyCTRLLEFT, + _is_keyAPPLEFT, _is_keyALT, _is_keySPACE, _is_keyALTGR, _is_keyAPPRIGHT, _is_keyMENU, _is_keyCTRLRIGHT, + _is_keyARROWLEFT, _is_keyARROWDOWN, _is_keyARROWRIGHT, _is_keyPAD0, _is_keyPAD1, _is_keyPAD2, _is_keyPAD3, + _is_keyPAD4, _is_keyPAD5, _is_keyPAD6, _is_keyPAD7, _is_keyPAD8, _is_keyPAD9, _is_keyPADADD, _is_keyPADSUB, + _is_keyPADMUL, _is_keyPADDIV; + + //@} + //--------------------------- + // + //! \name Plugins + //@{ + //--------------------------- + +#ifdef cimgdisplay_plugin +#include cimgdisplay_plugin +#endif +#ifdef cimgdisplay_plugin1 +#include cimgdisplay_plugin1 +#endif +#ifdef cimgdisplay_plugin2 +#include cimgdisplay_plugin2 +#endif +#ifdef cimgdisplay_plugin3 +#include cimgdisplay_plugin3 +#endif +#ifdef cimgdisplay_plugin4 +#include cimgdisplay_plugin4 +#endif +#ifdef cimgdisplay_plugin5 +#include cimgdisplay_plugin5 +#endif +#ifdef cimgdisplay_plugin6 +#include cimgdisplay_plugin6 +#endif +#ifdef cimgdisplay_plugin7 +#include cimgdisplay_plugin7 +#endif +#ifdef cimgdisplay_plugin8 +#include cimgdisplay_plugin8 +#endif + + //@} + //-------------------------------------------------------- + // + //! \name Constructors / Destructor / Instance Management + //@{ + //-------------------------------------------------------- + + //! Destructor. + /** + \note If the associated window is visible on the screen, it is closed by the call to the destructor. + **/ + ~CImgDisplay() { + assign(); + delete[] _keys; + delete[] _released_keys; + } + + //! Construct an empty display. + /** + \note Constructing an empty CImgDisplay instance does not make a window appearing on the screen, until + display of valid data is performed. + \par Example + \code + CImgDisplay disp; // Does actually nothing + ... + disp.display(img); // Construct new window and display image in it + \endcode + **/ + CImgDisplay(): + _width(0),_height(0),_normalization(0), + _min(0),_max(0), + _is_fullscreen(false), + _title(0), + _window_width(0),_window_height(0),_button(0), + _keys(new unsigned int[128]),_released_keys(new unsigned int[128]), + _window_x(cimg::type::min()),_window_y(cimg::type::min()), + _mouse_x(-1),_mouse_y(-1),_wheel(0), + _is_closed(true),_is_resized(false),_is_moved(false),_is_event(false) { + assign(); + } + + //! Construct a display with specified dimensions. + /** \param width Window width. + \param height Window height. + \param title Window title. + \param normalization Normalization type + (0=none, 1=always, 2=once, 3=pixel type-dependent, see normalization()). + \param is_fullscreen Tells if fullscreen mode is enabled. + \param is_closed Tells if associated window is initially visible or not. + \note A black background is initially displayed on the associated window. + **/ + CImgDisplay(const unsigned int width, const unsigned int height, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false): + _width(0),_height(0),_normalization(0), + _min(0),_max(0), + _is_fullscreen(false), + _title(0), + _window_width(0),_window_height(0),_button(0), + _keys(new unsigned int[128]),_released_keys(new unsigned int[128]), + _window_x(cimg::type::min()),_window_y(cimg::type::min()), + _mouse_x(-1),_mouse_y(-1),_wheel(0), + _is_closed(true),_is_resized(false),_is_moved(false),_is_event(false) { + assign(width,height,title,normalization,is_fullscreen,is_closed); + } + + //! Construct a display from an image. + /** \param img Image used as a model to create the window. + \param title Window title. + \param normalization Normalization type + (0=none, 1=always, 2=once, 3=pixel type-dependent, see normalization()). + \param is_fullscreen Tells if fullscreen mode is enabled. + \param is_closed Tells if associated window is initially visible or not. + \note The pixels of the input image are initially displayed on the associated window. + **/ + template + explicit CImgDisplay(const CImg& img, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false): + _width(0),_height(0),_normalization(0), + _min(0),_max(0), + _is_fullscreen(false), + _title(0), + _window_width(0),_window_height(0),_button(0), + _keys(new unsigned int[128]),_released_keys(new unsigned int[128]), + _window_x(cimg::type::min()),_window_y(cimg::type::min()), + _mouse_x(-1),_mouse_y(-1),_wheel(0), + _is_closed(true),_is_resized(false),_is_moved(false),_is_event(false) { + assign(img,title,normalization,is_fullscreen,is_closed); + } + + //! Construct a display from an image list. + /** \param list The images list to display. + \param title Window title. + \param normalization Normalization type + (0=none, 1=always, 2=once, 3=pixel type-dependent, see normalization()). + \param is_fullscreen Tells if fullscreen mode is enabled. + \param is_closed Tells if associated window is initially visible or not. + \note All images of the list, appended along the X-axis, are initially displayed on the associated window. + **/ + template + explicit CImgDisplay(const CImgList& list, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false): + _width(0),_height(0),_normalization(0), + _min(0),_max(0), + _is_fullscreen(false), + _title(0), + _window_width(0),_window_height(0),_button(0), + _keys(new unsigned int[128]),_released_keys(new unsigned int[128]), + _window_x(cimg::type::min()),_window_y(cimg::type::min()), + _mouse_x(-1),_mouse_y(-1),_wheel(0), + _is_closed(true),_is_resized(false),_is_moved(false),_is_event(false) { + assign(list,title,normalization,is_fullscreen,is_closed); + } + + //! Construct a display as a copy of an existing one. + /** + \param disp Display instance to copy. + \note The pixel buffer of the input window is initially displayed on the associated window. + **/ + CImgDisplay(const CImgDisplay& disp): + _width(0),_height(0),_normalization(0), + _min(0),_max(0), + _is_fullscreen(false), + _title(0), + _window_width(0),_window_height(0),_button(0), + _keys(new unsigned int[128]),_released_keys(new unsigned int[128]), + _window_x(cimg::type::min()),_window_y(cimg::type::min()), + _mouse_x(-1),_mouse_y(-1),_wheel(0), + _is_closed(true),_is_resized(false),_is_moved(false),_is_event(false) { + assign(disp); + } + + //! Take a screenshot. + /** + \param[out] img Output screenshot. Can be empty on input + **/ + template + static void screenshot(CImg& img) { + return screenshot(0,0,cimg::type::max(),cimg::type::max(),img); + } + +#if cimg_display==0 + + static void _no_display_exception() { + throw CImgDisplayException("CImgDisplay(): No display available."); + } + + //! Destructor - Empty constructor \inplace. + /** + \note Replace the current instance by an empty display. + **/ + CImgDisplay& assign() { + return flush(); + } + + //! Construct a display with specified dimensions \inplace. + /** + **/ + CImgDisplay& assign(const unsigned int width, const unsigned int height, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false) { + cimg::unused(width,height,title,normalization,is_fullscreen,is_closed); + _no_display_exception(); + return assign(); + } + + //! Construct a display from an image \inplace. + /** + **/ + template + CImgDisplay& assign(const CImg& img, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false) { + _no_display_exception(); + return assign(img._width,img._height,title,normalization,is_fullscreen,is_closed); + } + + //! Construct a display from an image list \inplace. + /** + **/ + template + CImgDisplay& assign(const CImgList& list, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false) { + _no_display_exception(); + return assign(list._width,list._width,title,normalization,is_fullscreen,is_closed); + } + + //! Construct a display as a copy of another one \inplace. + /** + **/ + CImgDisplay& assign(const CImgDisplay &disp) { + _no_display_exception(); + return assign(disp._width,disp._height); + } + +#endif + + //! Return a reference to an empty display. + /** + \note Can be useful for writing function prototypes where one of the argument (of type CImgDisplay&) + must have a default value. + \par Example + \code + void foo(CImgDisplay& disp=CImgDisplay::empty()); + \endcode + **/ + static CImgDisplay& empty() { + static CImgDisplay _empty; + return _empty.assign(); + } + + //! Return a reference to an empty display \const. + static const CImgDisplay& const_empty() { + static const CImgDisplay _empty; + return _empty; + } + +#define cimg_fitscreen(dx,dy,dz) CImgDisplay::_fitscreen(dx,dy,dz,-25,-85,false), \ + CImgDisplay::_fitscreen(dx,dy,dz,-25,-85,true) + static unsigned int _fitscreen(const unsigned int dx, const unsigned int dy, const unsigned int dz, + const int dmin, const int dmax, const bool return_y) { + const int + u = CImgDisplay::screen_width(), + v = CImgDisplay::screen_height(); + const float + mw = dmin<0?cimg::round(u*-dmin/100.f):(float)dmin, + mh = dmin<0?cimg::round(v*-dmin/100.f):(float)dmin, + Mw = dmax<0?cimg::round(u*-dmax/100.f):(float)dmax, + Mh = dmax<0?cimg::round(v*-dmax/100.f):(float)dmax; + float + w = (float)std::max(1U,dx), + h = (float)std::max(1U,dy); + if (dz>1) { w+=dz; h+=dz; } + if (wMw) { h = h*Mw/w; w = Mw; } + if (h>Mh) { w = w*Mh/h; h = Mh; } + if (wdisp = img is equivalent to disp.display(img). + **/ + template + CImgDisplay& operator=(const CImg& img) { + return display(img); + } + + //! Display list of images on associated window. + /** + \note disp = list is equivalent to disp.display(list). + **/ + template + CImgDisplay& operator=(const CImgList& list) { + return display(list); + } + + //! Construct a display as a copy of another one \inplace. + /** + \note Equivalent to assign(const CImgDisplay&). + **/ + CImgDisplay& operator=(const CImgDisplay& disp) { + return assign(disp); + } + + //! Return \c false if display is empty, \c true otherwise. + /** + \note if (disp) { ... } is equivalent to if (!disp.is_empty()) { ... }. + **/ + operator bool() const { + return !is_empty(); + } + + //@} + //------------------------------------------ + // + //! \name Instance Checking + //@{ + //------------------------------------------ + + //! Return \c true if display is empty, \c false otherwise. + /** + **/ + bool is_empty() const { + return !(_width && _height); + } + + //! Return \c true if display is closed (i.e. not visible on the screen), \c false otherwise. + /** + \note + - When a user physically closes the associated window, the display is set to closed. + - A closed display is not destroyed. Its associated window can be show again on the screen using show(). + **/ + bool is_closed() const { + return _is_closed; + } + + //! Return \c true if associated window has been resized on the screen, \c false otherwise. + /** + **/ + bool is_resized() const { + return _is_resized; + } + + //! Return \c true if associated window has been moved on the screen, \c false otherwise. + /** + **/ + bool is_moved() const { + return _is_moved; + } + + //! Return \c true if any event has occurred on the associated window, \c false otherwise. + /** + **/ + bool is_event() const { + return _is_event; + } + + //! Return \c true if current display is in fullscreen mode, \c false otherwise. + /** + **/ + bool is_fullscreen() const { + return _is_fullscreen; + } + + //! Return \c true if any key is being pressed on the associated window, \c false otherwise. + /** + \note The methods below do the same only for specific keys. + **/ + bool is_key() const { + return _is_keyESC || _is_keyF1 || _is_keyF2 || _is_keyF3 || + _is_keyF4 || _is_keyF5 || _is_keyF6 || _is_keyF7 || + _is_keyF8 || _is_keyF9 || _is_keyF10 || _is_keyF11 || + _is_keyF12 || _is_keyPAUSE || _is_key1 || _is_key2 || + _is_key3 || _is_key4 || _is_key5 || _is_key6 || + _is_key7 || _is_key8 || _is_key9 || _is_key0 || + _is_keyBACKSPACE || _is_keyINSERT || _is_keyHOME || + _is_keyPAGEUP || _is_keyTAB || _is_keyQ || _is_keyW || + _is_keyE || _is_keyR || _is_keyT || _is_keyY || + _is_keyU || _is_keyI || _is_keyO || _is_keyP || + _is_keyDELETE || _is_keyEND || _is_keyPAGEDOWN || + _is_keyCAPSLOCK || _is_keyA || _is_keyS || _is_keyD || + _is_keyF || _is_keyG || _is_keyH || _is_keyJ || + _is_keyK || _is_keyL || _is_keyENTER || + _is_keySHIFTLEFT || _is_keyZ || _is_keyX || _is_keyC || + _is_keyV || _is_keyB || _is_keyN || _is_keyM || + _is_keySHIFTRIGHT || _is_keyARROWUP || _is_keyCTRLLEFT || + _is_keyAPPLEFT || _is_keyALT || _is_keySPACE || _is_keyALTGR || + _is_keyAPPRIGHT || _is_keyMENU || _is_keyCTRLRIGHT || + _is_keyARROWLEFT || _is_keyARROWDOWN || _is_keyARROWRIGHT || + _is_keyPAD0 || _is_keyPAD1 || _is_keyPAD2 || + _is_keyPAD3 || _is_keyPAD4 || _is_keyPAD5 || + _is_keyPAD6 || _is_keyPAD7 || _is_keyPAD8 || + _is_keyPAD9 || _is_keyPADADD || _is_keyPADSUB || + _is_keyPADMUL || _is_keyPADDIV; + } + + //! Return \c true if key specified by given keycode is being pressed on the associated window, \c false otherwise. + /** + \param keycode Keycode to test. + \note Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + \par Example + \code + CImgDisplay disp(400,400); + while (!disp.is_closed()) { + if (disp.key(cimg::keyTAB)) { ... } // Equivalent to 'if (disp.is_keyTAB())' + disp.wait(); + } + \endcode + **/ + bool is_key(const unsigned int keycode) const { +#define _cimg_iskey_test(k) if (keycode==cimg::key##k) return _is_key##k; + _cimg_iskey_test(ESC); _cimg_iskey_test(F1); _cimg_iskey_test(F2); _cimg_iskey_test(F3); + _cimg_iskey_test(F4); _cimg_iskey_test(F5); _cimg_iskey_test(F6); _cimg_iskey_test(F7); + _cimg_iskey_test(F8); _cimg_iskey_test(F9); _cimg_iskey_test(F10); _cimg_iskey_test(F11); + _cimg_iskey_test(F12); _cimg_iskey_test(PAUSE); _cimg_iskey_test(1); _cimg_iskey_test(2); + _cimg_iskey_test(3); _cimg_iskey_test(4); _cimg_iskey_test(5); _cimg_iskey_test(6); + _cimg_iskey_test(7); _cimg_iskey_test(8); _cimg_iskey_test(9); _cimg_iskey_test(0); + _cimg_iskey_test(BACKSPACE); _cimg_iskey_test(INSERT); _cimg_iskey_test(HOME); + _cimg_iskey_test(PAGEUP); _cimg_iskey_test(TAB); _cimg_iskey_test(Q); _cimg_iskey_test(W); + _cimg_iskey_test(E); _cimg_iskey_test(R); _cimg_iskey_test(T); _cimg_iskey_test(Y); + _cimg_iskey_test(U); _cimg_iskey_test(I); _cimg_iskey_test(O); _cimg_iskey_test(P); + _cimg_iskey_test(DELETE); _cimg_iskey_test(END); _cimg_iskey_test(PAGEDOWN); + _cimg_iskey_test(CAPSLOCK); _cimg_iskey_test(A); _cimg_iskey_test(S); _cimg_iskey_test(D); + _cimg_iskey_test(F); _cimg_iskey_test(G); _cimg_iskey_test(H); _cimg_iskey_test(J); + _cimg_iskey_test(K); _cimg_iskey_test(L); _cimg_iskey_test(ENTER); + _cimg_iskey_test(SHIFTLEFT); _cimg_iskey_test(Z); _cimg_iskey_test(X); _cimg_iskey_test(C); + _cimg_iskey_test(V); _cimg_iskey_test(B); _cimg_iskey_test(N); _cimg_iskey_test(M); + _cimg_iskey_test(SHIFTRIGHT); _cimg_iskey_test(ARROWUP); _cimg_iskey_test(CTRLLEFT); + _cimg_iskey_test(APPLEFT); _cimg_iskey_test(ALT); _cimg_iskey_test(SPACE); _cimg_iskey_test(ALTGR); + _cimg_iskey_test(APPRIGHT); _cimg_iskey_test(MENU); _cimg_iskey_test(CTRLRIGHT); + _cimg_iskey_test(ARROWLEFT); _cimg_iskey_test(ARROWDOWN); _cimg_iskey_test(ARROWRIGHT); + _cimg_iskey_test(PAD0); _cimg_iskey_test(PAD1); _cimg_iskey_test(PAD2); + _cimg_iskey_test(PAD3); _cimg_iskey_test(PAD4); _cimg_iskey_test(PAD5); + _cimg_iskey_test(PAD6); _cimg_iskey_test(PAD7); _cimg_iskey_test(PAD8); + _cimg_iskey_test(PAD9); _cimg_iskey_test(PADADD); _cimg_iskey_test(PADSUB); + _cimg_iskey_test(PADMUL); _cimg_iskey_test(PADDIV); + return false; + } + + //! Return \c true if key specified by given keycode is being pressed on the associated window, \c false otherwise. + /** + \param keycode C-string containing the keycode label of the key to test. + \note Use it when the key you want to test can be dynamically set by the user. + \par Example + \code + CImgDisplay disp(400,400); + const char *const keycode = "TAB"; + while (!disp.is_closed()) { + if (disp.is_key(keycode)) { ... } // Equivalent to 'if (disp.is_keyTAB())' + disp.wait(); + } + \endcode + **/ + bool& is_key(const char *const keycode) { + static bool f = false; + f = false; +#define _cimg_iskey_test2(k) if (!cimg::strcasecmp(keycode,#k)) return _is_key##k; + _cimg_iskey_test2(ESC); _cimg_iskey_test2(F1); _cimg_iskey_test2(F2); _cimg_iskey_test2(F3); + _cimg_iskey_test2(F4); _cimg_iskey_test2(F5); _cimg_iskey_test2(F6); _cimg_iskey_test2(F7); + _cimg_iskey_test2(F8); _cimg_iskey_test2(F9); _cimg_iskey_test2(F10); _cimg_iskey_test2(F11); + _cimg_iskey_test2(F12); _cimg_iskey_test2(PAUSE); _cimg_iskey_test2(1); _cimg_iskey_test2(2); + _cimg_iskey_test2(3); _cimg_iskey_test2(4); _cimg_iskey_test2(5); _cimg_iskey_test2(6); + _cimg_iskey_test2(7); _cimg_iskey_test2(8); _cimg_iskey_test2(9); _cimg_iskey_test2(0); + _cimg_iskey_test2(BACKSPACE); _cimg_iskey_test2(INSERT); _cimg_iskey_test2(HOME); + _cimg_iskey_test2(PAGEUP); _cimg_iskey_test2(TAB); _cimg_iskey_test2(Q); _cimg_iskey_test2(W); + _cimg_iskey_test2(E); _cimg_iskey_test2(R); _cimg_iskey_test2(T); _cimg_iskey_test2(Y); + _cimg_iskey_test2(U); _cimg_iskey_test2(I); _cimg_iskey_test2(O); _cimg_iskey_test2(P); + _cimg_iskey_test2(DELETE); _cimg_iskey_test2(END); _cimg_iskey_test2(PAGEDOWN); + _cimg_iskey_test2(CAPSLOCK); _cimg_iskey_test2(A); _cimg_iskey_test2(S); _cimg_iskey_test2(D); + _cimg_iskey_test2(F); _cimg_iskey_test2(G); _cimg_iskey_test2(H); _cimg_iskey_test2(J); + _cimg_iskey_test2(K); _cimg_iskey_test2(L); _cimg_iskey_test2(ENTER); + _cimg_iskey_test2(SHIFTLEFT); _cimg_iskey_test2(Z); _cimg_iskey_test2(X); _cimg_iskey_test2(C); + _cimg_iskey_test2(V); _cimg_iskey_test2(B); _cimg_iskey_test2(N); _cimg_iskey_test2(M); + _cimg_iskey_test2(SHIFTRIGHT); _cimg_iskey_test2(ARROWUP); _cimg_iskey_test2(CTRLLEFT); + _cimg_iskey_test2(APPLEFT); _cimg_iskey_test2(ALT); _cimg_iskey_test2(SPACE); _cimg_iskey_test2(ALTGR); + _cimg_iskey_test2(APPRIGHT); _cimg_iskey_test2(MENU); _cimg_iskey_test2(CTRLRIGHT); + _cimg_iskey_test2(ARROWLEFT); _cimg_iskey_test2(ARROWDOWN); _cimg_iskey_test2(ARROWRIGHT); + _cimg_iskey_test2(PAD0); _cimg_iskey_test2(PAD1); _cimg_iskey_test2(PAD2); + _cimg_iskey_test2(PAD3); _cimg_iskey_test2(PAD4); _cimg_iskey_test2(PAD5); + _cimg_iskey_test2(PAD6); _cimg_iskey_test2(PAD7); _cimg_iskey_test2(PAD8); + _cimg_iskey_test2(PAD9); _cimg_iskey_test2(PADADD); _cimg_iskey_test2(PADSUB); + _cimg_iskey_test2(PADMUL); _cimg_iskey_test2(PADDIV); + return f; + } + + //! Return \c true if specified key sequence has been typed on the associated window, \c false otherwise. + /** + \param keycodes_sequence Buffer of keycodes to test. + \param length Number of keys in the \c keycodes_sequence buffer. + \param remove_sequence Tells if the key sequence must be removed from the key history, if found. + \note Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + \par Example + \code + CImgDisplay disp(400,400); + const unsigned int key_seq[] = { cimg::keyCTRLLEFT, cimg::keyD }; + while (!disp.is_closed()) { + if (disp.is_key_sequence(key_seq,2)) { ... } // Test for the 'CTRL+D' keyboard event + disp.wait(); + } + \endcode + **/ + bool is_key_sequence(const unsigned int *const keycodes_sequence, const unsigned int length, + const bool remove_sequence=false) { + if (keycodes_sequence && length) { + const unsigned int + *const ps_end = keycodes_sequence + length - 1, + *const pk_end = (unsigned int*)_keys + 1 + 128 - length, + k = *ps_end; + for (unsigned int *pk = (unsigned int*)_keys; pk[0,255]. + If the range of values of the data to display is different, a normalization may be required for displaying + the data in a correct way. The normalization type can be one of: + - \c 0: Value normalization is disabled. It is then assumed that all input data to be displayed by the + CImgDisplay instance have values in range [0,255]. + - \c 1: Value normalization is always performed (this is the default behavior). + Before displaying an input image, its values will be (virtually) stretched + in range [0,255], so that the contrast of the displayed pixels will be maximum. + Use this mode for images whose minimum and maximum values are not prescribed to known values + (e.g. float-valued images). + Note that when normalized versions of images are computed for display purposes, the actual values of these + images are not modified. + - \c 2: Value normalization is performed once (on the first image display), then the same normalization + coefficients are kept for next displayed frames. + - \c 3: Value normalization depends on the pixel type of the data to display. For integer pixel types, + the normalization is done regarding the minimum/maximum values of the type (no normalization occurs then + for unsigned char). + For float-valued pixel types, the normalization is done regarding the minimum/maximum value of the image + data instead. + **/ + unsigned int normalization() const { + return _normalization; + } + + //! Return title of the associated window as a C-string. + /** + \note Window title may be not visible, depending on the used window manager or if the current display is + in fullscreen mode. + **/ + const char *title() const { + return _title?_title:""; + } + + //! Return width of the associated window. + /** + \note The width of the display (i.e. the width of the pixel data buffer associated to the CImgDisplay instance) + may be different from the actual width of the associated window. + **/ + int window_width() const { + return (int)_window_width; + } + + //! Return height of the associated window. + /** + \note The height of the display (i.e. the height of the pixel data buffer associated to the CImgDisplay instance) + may be different from the actual height of the associated window. + **/ + int window_height() const { + return (int)_window_height; + } + + //! Return X-coordinate of the associated window. + /** + \note The returned coordinate corresponds to the location of the upper-left corner of the associated window. + **/ + int window_x() const { + return _window_x; + } + + //! Return Y-coordinate of the associated window. + /** + \note The returned coordinate corresponds to the location of the upper-left corner of the associated window. + **/ + int window_y() const { + return _window_y; + } + + //! Return X-coordinate of the mouse pointer. + /** + \note + - If the mouse pointer is outside window area, \c -1 is returned. + - Otherwise, the returned value is in the range [0,width()-1]. + **/ + int mouse_x() const { + return _mouse_x; + } + + //! Return Y-coordinate of the mouse pointer. + /** + \note + - If the mouse pointer is outside window area, \c -1 is returned. + - Otherwise, the returned value is in the range [0,height()-1]. + **/ + int mouse_y() const { + return _mouse_y; + } + + //! Return current state of the mouse buttons. + /** + \note Three mouse buttons can be managed. If one button is pressed, its corresponding bit in the returned + value is set: + - bit \c 0 (value \c 0x1): State of the left mouse button. + - bit \c 1 (value \c 0x2): State of the right mouse button. + - bit \c 2 (value \c 0x4): State of the middle mouse button. + + Several bits can be activated if more than one button are pressed at the same time. + \par Example + \code + CImgDisplay disp(400,400); + while (!disp.is_closed()) { + if (disp.button()&1) { // Left button clicked + ... + } + if (disp.button()&2) { // Right button clicked + ... + } + if (disp.button()&4) { // Middle button clicked + ... + } + disp.wait(); + } + \endcode + **/ + unsigned int button() const { + return _button; + } + + //! Return current state of the mouse wheel. + /** + \note + - The returned value can be positive or negative depending on whether the mouse wheel has been scrolled + forward or backward. + - Scrolling the wheel forward add \c 1 to the wheel value. + - Scrolling the wheel backward subtract \c 1 to the wheel value. + - The returned value cumulates the number of forward of backward scrolls since the creation of the display, + or since the last reset of the wheel value (using set_wheel()). It is strongly recommended to quickly reset + the wheel counter when an action has been performed regarding the current wheel value. + Otherwise, the returned wheel value may be for instance \c 0 despite the fact that many scrolls have been done + (as many in forward as in backward directions). + \par Example + \code + CImgDisplay disp(400,400); + while (!disp.is_closed()) { + if (disp.wheel()) { + int counter = disp.wheel(); // Read the state of the mouse wheel + ... // Do what you want with 'counter' + disp.set_wheel(); // Reset the wheel value to 0 + } + disp.wait(); + } + \endcode + **/ + int wheel() const { + return _wheel; + } + + //! Return one entry from the pressed keys history. + /** + \param pos Index to read from the pressed keys history (index \c 0 corresponds to latest entry). + \return Keycode of a pressed key or \c 0 for a released key. + \note + - Each CImgDisplay stores a history of the pressed keys in a buffer of size \c 128. When a new key is pressed, + its keycode is stored in the pressed keys history. When a key is released, \c 0 is put instead. + This means that up to the 64 last pressed keys may be read from the pressed keys history. + When a new value is stored, the pressed keys history is shifted so that the latest entry is always + stored at position \c 0. + - Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + **/ + unsigned int& key(const unsigned int pos=0) const { + static unsigned int key0; + return pos<128?_keys[pos]:(key0 = 0); + + } + + //! Return one entry from the released keys history. + /** + \param pos Index to read from the released keys history (index \c 0 corresponds to latest entry). + \return Keycode of a released key or \c 0 for a pressed key. + \note + - Each CImgDisplay stores a history of the released keys in a buffer of size \c 128. When a new key is released, + its keycode is stored in the pressed keys history. When a key is pressed, \c 0 is put instead. + This means that up to the 64 last released keys may be read from the released keys history. + When a new value is stored, the released keys history is shifted so that the latest entry is always + stored at position \c 0. + - Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + **/ + unsigned int& released_key(const unsigned int pos=0) const { + static unsigned int key0; + return pos<128?_released_keys[pos]:(key0 = 0); + } + + //! Return keycode corresponding to the specified string. + /** + \note Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + \par Example + \code + const unsigned int keyTAB = CImgDisplay::keycode("TAB"); // Return cimg::keyTAB + \endcode + **/ + static unsigned int keycode(const char *const keycode) { +#define _cimg_keycode(k) if (!cimg::strcasecmp(keycode,#k)) return cimg::key##k; + _cimg_keycode(ESC); _cimg_keycode(F1); _cimg_keycode(F2); _cimg_keycode(F3); + _cimg_keycode(F4); _cimg_keycode(F5); _cimg_keycode(F6); _cimg_keycode(F7); + _cimg_keycode(F8); _cimg_keycode(F9); _cimg_keycode(F10); _cimg_keycode(F11); + _cimg_keycode(F12); _cimg_keycode(PAUSE); _cimg_keycode(1); _cimg_keycode(2); + _cimg_keycode(3); _cimg_keycode(4); _cimg_keycode(5); _cimg_keycode(6); + _cimg_keycode(7); _cimg_keycode(8); _cimg_keycode(9); _cimg_keycode(0); + _cimg_keycode(BACKSPACE); _cimg_keycode(INSERT); _cimg_keycode(HOME); + _cimg_keycode(PAGEUP); _cimg_keycode(TAB); _cimg_keycode(Q); _cimg_keycode(W); + _cimg_keycode(E); _cimg_keycode(R); _cimg_keycode(T); _cimg_keycode(Y); + _cimg_keycode(U); _cimg_keycode(I); _cimg_keycode(O); _cimg_keycode(P); + _cimg_keycode(DELETE); _cimg_keycode(END); _cimg_keycode(PAGEDOWN); + _cimg_keycode(CAPSLOCK); _cimg_keycode(A); _cimg_keycode(S); _cimg_keycode(D); + _cimg_keycode(F); _cimg_keycode(G); _cimg_keycode(H); _cimg_keycode(J); + _cimg_keycode(K); _cimg_keycode(L); _cimg_keycode(ENTER); + _cimg_keycode(SHIFTLEFT); _cimg_keycode(Z); _cimg_keycode(X); _cimg_keycode(C); + _cimg_keycode(V); _cimg_keycode(B); _cimg_keycode(N); _cimg_keycode(M); + _cimg_keycode(SHIFTRIGHT); _cimg_keycode(ARROWUP); _cimg_keycode(CTRLLEFT); + _cimg_keycode(APPLEFT); _cimg_keycode(ALT); _cimg_keycode(SPACE); _cimg_keycode(ALTGR); + _cimg_keycode(APPRIGHT); _cimg_keycode(MENU); _cimg_keycode(CTRLRIGHT); + _cimg_keycode(ARROWLEFT); _cimg_keycode(ARROWDOWN); _cimg_keycode(ARROWRIGHT); + _cimg_keycode(PAD0); _cimg_keycode(PAD1); _cimg_keycode(PAD2); + _cimg_keycode(PAD3); _cimg_keycode(PAD4); _cimg_keycode(PAD5); + _cimg_keycode(PAD6); _cimg_keycode(PAD7); _cimg_keycode(PAD8); + _cimg_keycode(PAD9); _cimg_keycode(PADADD); _cimg_keycode(PADSUB); + _cimg_keycode(PADMUL); _cimg_keycode(PADDIV); + return 0; + } + + //! Return the current refresh rate, in frames per second. + /** + \note Returns a significant value when the current instance is used to display successive frames. + It measures the delay between successive calls to frames_per_second(). + **/ + float frames_per_second() { + if (!_fps_timer) _fps_timer = cimg::time(); + const float delta = (float)((cimg::time() - _fps_timer)/1000.f); + ++_fps_frames; + if (delta>=1) { + _fps_fps = _fps_frames/delta; + _fps_frames = 0; + _fps_timer = cimg::time(); + } + return _fps_fps; + } + + // Move current display window so that its content stays inside the current screen. + CImgDisplay& move_inside_screen() { + if (is_empty()) return *this; + const int + x0 = window_x(), + y0 = window_y(), + x1 = x0 + window_width() - 1, + y1 = y0 + window_height() - 1, + sw = CImgDisplay::screen_width(), + sh = CImgDisplay::screen_height(); + if (x0<0 || y0<0 || x1>=sw || y1>=sh) + move(std::max(0,std::min(x0,sw - x1 + x0)), + std::max(0,std::min(y0,sh - y1 + y0))); + return *this; + } + + //@} + //--------------------------------------- + // + //! \name Window Manipulation + //@{ + //--------------------------------------- + +#if cimg_display==0 + + //! Display image on associated window. + /** + \param img Input image to display. + \note This method returns immediately. + **/ + template + CImgDisplay& display(const CImg& img) { + return assign(img); + } + +#endif + + //! Display list of images on associated window. + /** + \param list List of images to display. + \param axis Axis used to append the images along, for the visualization (can be \c x, \c y, \c z or \c c). + \param align Relative position of aligned images when displaying lists with images of different sizes + (\c 0 for upper-left, \c 0.5 for centering and \c 1 for lower-right). + \note This method returns immediately. + **/ + template + CImgDisplay& display(const CImgList& list, const char axis='x', const float align=0) { + if (list._width==1) { + const CImg& img = list[0]; + if (img._depth==1 && (img._spectrum==1 || img._spectrum>=3) && _normalization!=1) return display(img); + } + CImgList::ucharT> visu(list._width); + unsigned int dims = 0; + cimglist_for(list,l) { + const CImg& img = list._data[l]; + img._get_select(*this,_normalization,(img._width - 1)/2,(img._height - 1)/2, + (img._depth - 1)/2).move_to(visu[l]); + dims = std::max(dims,visu[l]._spectrum); + } + cimglist_for(list,l) if (visu[l]._spectrumimg.width() become equal, as well as height() and + img.height(). + - The associated window is also resized to specified dimensions. + **/ + template + CImgDisplay& resize(const CImg& img, const bool force_redraw=true) { + return resize(img._width,img._height,force_redraw); + } + + //! Resize display to the size of another CImgDisplay instance. + /** + \param disp Input display to take size from. + \param force_redraw Tells if the previous window content must be resized and updated as well. + \note + - Calling this method ensures that width() and disp.width() become equal, as well as height() and + disp.height(). + - The associated window is also resized to specified dimensions. + **/ + CImgDisplay& resize(const CImgDisplay& disp, const bool force_redraw=true) { + return resize(disp.width(),disp.height(),force_redraw); + } + + // [internal] Render pixel buffer with size (wd,hd) from source buffer of size (ws,hs). + template + static void _render_resize(const T *ptrs, const unsigned int ws, const unsigned int hs, + t *ptrd, const unsigned int wd, const unsigned int hd) { + typedef typename cimg::last::type ulongT; + const ulongT one = (ulongT)1; + CImg off_x(wd), off_y(hd + 1); + if (wd==ws) off_x.fill(1); + else { + ulongT *poff_x = off_x._data, curr = 0; + for (unsigned int x = 0; xstd::printf(). + \warning As the first argument is a format string, it is highly recommended to write + \code + disp.set_title("%s",window_title); + \endcode + instead of + \code + disp.set_title(window_title); + \endcode + if \c window_title can be arbitrary, to prevent nasty memory access. + **/ + CImgDisplay& set_title(const char *const format, ...) { + return assign(0,0,format); + } + +#endif + + //! Enable or disable fullscreen mode. + /** + \param is_fullscreen Tells is the fullscreen mode must be activated or not. + \param force_redraw Tells if the previous window content must be displayed as well. + \note + - When the fullscreen mode is enabled, the associated window fills the entire screen but the size of the + current display is not modified. + - The screen resolution may be switched to fit the associated window size and ensure it appears the largest + as possible. + For X-Window (X11) users, the configuration flag \c cimg_use_xrandr has to be set to allow the screen + resolution change (requires the X11 extensions to be enabled). + **/ + CImgDisplay& set_fullscreen(const bool is_fullscreen, const bool force_redraw=true) { + if (is_empty() || _is_fullscreen==is_fullscreen) return *this; + return toggle_fullscreen(force_redraw); + } + +#if cimg_display==0 + + //! Toggle fullscreen mode. + /** + \param force_redraw Tells if the previous window content must be displayed as well. + \note Enable fullscreen mode if it was not enabled, and disable it otherwise. + **/ + CImgDisplay& toggle_fullscreen(const bool force_redraw=true) { + return assign(_width,_height,0,3,force_redraw); + } + + //! Show mouse pointer. + /** + \note Depending on the window manager behavior, this method may not succeed + (no exceptions are thrown nevertheless). + **/ + CImgDisplay& show_mouse() { + return assign(); + } + + //! Hide mouse pointer. + /** + \note Depending on the window manager behavior, this method may not succeed + (no exceptions are thrown nevertheless). + **/ + CImgDisplay& hide_mouse() { + return assign(); + } + + //! Move mouse pointer to a specified location. + /** + \note Depending on the window manager behavior, this method may not succeed + (no exceptions are thrown nevertheless). + **/ + CImgDisplay& set_mouse(const int pos_x, const int pos_y) { + return assign(pos_x,pos_y); + } + +#endif + + //! Simulate a mouse button release event. + /** + \note All mouse buttons are considered released at the same time. + **/ + CImgDisplay& set_button() { + _button = 0; + _is_event = true; +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + return *this; + } + + //! Simulate a mouse button press or release event. + /** + \param button Buttons event code, where each button is associated to a single bit. + \param is_pressed Tells if the mouse button is considered as pressed or released. + **/ + CImgDisplay& set_button(const unsigned int button, const bool is_pressed=true) { + const unsigned int buttoncode = button==1U?1U:button==2U?2U:button==3U?4U:0U; + if (is_pressed) _button |= buttoncode; else _button &= ~buttoncode; + _is_event = buttoncode?true:false; + if (buttoncode) { +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + } + return *this; + } + + //! Flush all mouse wheel events. + /** + \note Make wheel() to return \c 0, if called afterwards. + **/ + CImgDisplay& set_wheel() { + _wheel = 0; + _is_event = true; +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + return *this; + } + + //! Simulate a wheel event. + /** + \param amplitude Amplitude of the wheel scrolling to simulate. + \note Make wheel() to return \c amplitude, if called afterwards. + **/ + CImgDisplay& set_wheel(const int amplitude) { + _wheel+=amplitude; + _is_event = amplitude?true:false; + if (amplitude) { +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + } + return *this; + } + + //! Flush all key events. + /** + \note Make key() to return \c 0, if called afterwards. + **/ + CImgDisplay& set_key() { + std::memset((void*)_keys,0,128*sizeof(unsigned int)); + std::memset((void*)_released_keys,0,128*sizeof(unsigned int)); + _is_keyESC = _is_keyF1 = _is_keyF2 = _is_keyF3 = _is_keyF4 = _is_keyF5 = _is_keyF6 = _is_keyF7 = _is_keyF8 = + _is_keyF9 = _is_keyF10 = _is_keyF11 = _is_keyF12 = _is_keyPAUSE = _is_key1 = _is_key2 = _is_key3 = _is_key4 = + _is_key5 = _is_key6 = _is_key7 = _is_key8 = _is_key9 = _is_key0 = _is_keyBACKSPACE = _is_keyINSERT = + _is_keyHOME = _is_keyPAGEUP = _is_keyTAB = _is_keyQ = _is_keyW = _is_keyE = _is_keyR = _is_keyT = _is_keyY = + _is_keyU = _is_keyI = _is_keyO = _is_keyP = _is_keyDELETE = _is_keyEND = _is_keyPAGEDOWN = _is_keyCAPSLOCK = + _is_keyA = _is_keyS = _is_keyD = _is_keyF = _is_keyG = _is_keyH = _is_keyJ = _is_keyK = _is_keyL = + _is_keyENTER = _is_keySHIFTLEFT = _is_keyZ = _is_keyX = _is_keyC = _is_keyV = _is_keyB = _is_keyN = + _is_keyM = _is_keySHIFTRIGHT = _is_keyARROWUP = _is_keyCTRLLEFT = _is_keyAPPLEFT = _is_keyALT = _is_keySPACE = + _is_keyALTGR = _is_keyAPPRIGHT = _is_keyMENU = _is_keyCTRLRIGHT = _is_keyARROWLEFT = _is_keyARROWDOWN = + _is_keyARROWRIGHT = _is_keyPAD0 = _is_keyPAD1 = _is_keyPAD2 = _is_keyPAD3 = _is_keyPAD4 = _is_keyPAD5 = + _is_keyPAD6 = _is_keyPAD7 = _is_keyPAD8 = _is_keyPAD9 = _is_keyPADADD = _is_keyPADSUB = _is_keyPADMUL = + _is_keyPADDIV = false; + _is_event = true; +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + return *this; + } + + //! Simulate a keyboard press/release event. + /** + \param keycode Keycode of the associated key. + \param is_pressed Tells if the key is considered as pressed or released. + \note Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + **/ + CImgDisplay& set_key(const unsigned int keycode, const bool is_pressed=true) { +#define _cimg_set_key(k) if (keycode==cimg::key##k) _is_key##k = is_pressed; + _cimg_set_key(ESC); _cimg_set_key(F1); _cimg_set_key(F2); _cimg_set_key(F3); + _cimg_set_key(F4); _cimg_set_key(F5); _cimg_set_key(F6); _cimg_set_key(F7); + _cimg_set_key(F8); _cimg_set_key(F9); _cimg_set_key(F10); _cimg_set_key(F11); + _cimg_set_key(F12); _cimg_set_key(PAUSE); _cimg_set_key(1); _cimg_set_key(2); + _cimg_set_key(3); _cimg_set_key(4); _cimg_set_key(5); _cimg_set_key(6); + _cimg_set_key(7); _cimg_set_key(8); _cimg_set_key(9); _cimg_set_key(0); + _cimg_set_key(BACKSPACE); _cimg_set_key(INSERT); _cimg_set_key(HOME); + _cimg_set_key(PAGEUP); _cimg_set_key(TAB); _cimg_set_key(Q); _cimg_set_key(W); + _cimg_set_key(E); _cimg_set_key(R); _cimg_set_key(T); _cimg_set_key(Y); + _cimg_set_key(U); _cimg_set_key(I); _cimg_set_key(O); _cimg_set_key(P); + _cimg_set_key(DELETE); _cimg_set_key(END); _cimg_set_key(PAGEDOWN); + _cimg_set_key(CAPSLOCK); _cimg_set_key(A); _cimg_set_key(S); _cimg_set_key(D); + _cimg_set_key(F); _cimg_set_key(G); _cimg_set_key(H); _cimg_set_key(J); + _cimg_set_key(K); _cimg_set_key(L); _cimg_set_key(ENTER); + _cimg_set_key(SHIFTLEFT); _cimg_set_key(Z); _cimg_set_key(X); _cimg_set_key(C); + _cimg_set_key(V); _cimg_set_key(B); _cimg_set_key(N); _cimg_set_key(M); + _cimg_set_key(SHIFTRIGHT); _cimg_set_key(ARROWUP); _cimg_set_key(CTRLLEFT); + _cimg_set_key(APPLEFT); _cimg_set_key(ALT); _cimg_set_key(SPACE); _cimg_set_key(ALTGR); + _cimg_set_key(APPRIGHT); _cimg_set_key(MENU); _cimg_set_key(CTRLRIGHT); + _cimg_set_key(ARROWLEFT); _cimg_set_key(ARROWDOWN); _cimg_set_key(ARROWRIGHT); + _cimg_set_key(PAD0); _cimg_set_key(PAD1); _cimg_set_key(PAD2); + _cimg_set_key(PAD3); _cimg_set_key(PAD4); _cimg_set_key(PAD5); + _cimg_set_key(PAD6); _cimg_set_key(PAD7); _cimg_set_key(PAD8); + _cimg_set_key(PAD9); _cimg_set_key(PADADD); _cimg_set_key(PADSUB); + _cimg_set_key(PADMUL); _cimg_set_key(PADDIV); + if (is_pressed) { + if (*_keys) + std::memmove((void*)(_keys + 1),(void*)_keys,127*sizeof(unsigned int)); + *_keys = keycode; + if (*_released_keys) { + std::memmove((void*)(_released_keys + 1),(void*)_released_keys,127*sizeof(unsigned int)); + *_released_keys = 0; + } + } else { + if (*_keys) { + std::memmove((void*)(_keys + 1),(void*)_keys,127*sizeof(unsigned int)); + *_keys = 0; + } + if (*_released_keys) + std::memmove((void*)(_released_keys + 1),(void*)_released_keys,127*sizeof(unsigned int)); + *_released_keys = keycode; + } + _is_event = keycode?true:false; + if (keycode) { +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + } + return *this; + } + + //! Flush all display events. + /** + \note Remove all passed events from the current display. + **/ + CImgDisplay& flush() { + set_key().set_button().set_wheel(); + _is_resized = _is_moved = _is_event = false; + _fps_timer = _fps_frames = _timer = 0; + _fps_fps = 0; + return *this; + } + + //! Wait for any user event occurring on the current display. + CImgDisplay& wait() { + wait(*this); + return *this; + } + + //! Wait for a given number of milliseconds since the last call to wait(). + /** + \param milliseconds Number of milliseconds to wait for. + \note Similar to cimg::wait(). + **/ + CImgDisplay& wait(const unsigned int milliseconds) { + cimg::wait(milliseconds,&_timer); + return *this; + } + + //! Wait for any event occurring on the display \c disp1. + static void wait(CImgDisplay& disp1) { + disp1._is_event = false; + while (!disp1._is_closed && !disp1._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1 or \c disp2. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2) { + disp1._is_event = disp2._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed) && + !disp1._is_event && !disp2._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2 or \c disp3. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3) { + disp1._is_event = disp2._is_event = disp3._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3 or \c disp4. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4 or \c disp5. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, + CImgDisplay& disp5) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event) + wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4, ... \c disp6. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, CImgDisplay& disp5, + CImgDisplay& disp6) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = + disp6._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed || + !disp6._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event && + !disp6._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4, ... \c disp7. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, CImgDisplay& disp5, + CImgDisplay& disp6, CImgDisplay& disp7) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = + disp6._is_event = disp7._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed || + !disp6._is_closed || !disp7._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event && + !disp6._is_event && !disp7._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4, ... \c disp8. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, CImgDisplay& disp5, + CImgDisplay& disp6, CImgDisplay& disp7, CImgDisplay& disp8) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = + disp6._is_event = disp7._is_event = disp8._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed || + !disp6._is_closed || !disp7._is_closed || !disp8._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event && + !disp6._is_event && !disp7._is_event && !disp8._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4, ... \c disp9. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, CImgDisplay& disp5, + CImgDisplay& disp6, CImgDisplay& disp7, CImgDisplay& disp8, CImgDisplay& disp9) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = + disp6._is_event = disp7._is_event = disp8._is_event = disp9._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed || + !disp6._is_closed || !disp7._is_closed || !disp8._is_closed || !disp9._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event && + !disp6._is_event && !disp7._is_event && !disp8._is_event && !disp9._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4, ... \c disp10. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, CImgDisplay& disp5, + CImgDisplay& disp6, CImgDisplay& disp7, CImgDisplay& disp8, CImgDisplay& disp9, + CImgDisplay& disp10) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = + disp6._is_event = disp7._is_event = disp8._is_event = disp9._is_event = disp10._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed || + !disp6._is_closed || !disp7._is_closed || !disp8._is_closed || !disp9._is_closed || !disp10._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event && + !disp6._is_event && !disp7._is_event && !disp8._is_event && !disp9._is_event && !disp10._is_event) + wait_all(); + } + +#if cimg_display==0 + + //! Wait for any window event occurring in any opened CImgDisplay. + static void wait_all() { + return _no_display_exception(); + } + + //! Render image into internal display buffer. + /** + \param img Input image data to render. + \note + - Convert image data representation into the internal display buffer (architecture-dependent structure). + - The content of the associated window is not modified, until paint() is called. + - Should not be used for common CImgDisplay uses, since display() is more useful. + **/ + template + CImgDisplay& render(const CImg& img) { + return assign(img); + } + + //! Paint internal display buffer on associated window. + /** + \note + - Update the content of the associated window with the internal display buffer, e.g. after a render() call. + - Should not be used for common CImgDisplay uses, since display() is more useful. + **/ + CImgDisplay& paint() { + return assign(); + } + + + //! Take a snapshot of the current screen content. + /** + \param x0 X-coordinate of the upper left corner. + \param y0 Y-coordinate of the upper left corner. + \param x1 X-coordinate of the lower right corner. + \param y1 Y-coordinate of the lower right corner. + \param[out] img Output screenshot. Can be empty on input + **/ + template + static void screenshot(const int x0, const int y0, const int x1, const int y1, CImg& img) { + cimg::unused(x0,y0,x1,y1,&img); + _no_display_exception(); + } + + //! Take a snapshot of the associated window content. + /** + \param[out] img Output snapshot. Can be empty on input. + **/ + template + const CImgDisplay& snapshot(CImg& img) const { + cimg::unused(img); + _no_display_exception(); + return *this; + } +#endif + + // X11-based implementation + //-------------------------- +#if cimg_display==1 + + Atom _wm_window_atom, _wm_protocol_atom; + Window _window, _background_window; + Colormap _colormap; + XImage *_image; + void *_data; + +#ifdef cimg_use_xshm + XShmSegmentInfo *_shminfo; +#endif + + static int screen_width() { + Display *const dpy = cimg::X11_attr().display; + int res = 0; + if (!dpy) { + Display *const _dpy = XOpenDisplay(0); + if (!_dpy) + throw CImgDisplayException("CImgDisplay::screen_width(): Failed to open X11 display."); + res = DisplayWidth(_dpy,DefaultScreen(_dpy)); + XCloseDisplay(_dpy); + } else { + +#ifdef cimg_use_xrandr + if (cimg::X11_attr().resolutions && cimg::X11_attr().curr_resolution) + res = cimg::X11_attr().resolutions[cimg::X11_attr().curr_resolution].width; + else res = DisplayWidth(dpy,DefaultScreen(dpy)); +#else + res = DisplayWidth(dpy,DefaultScreen(dpy)); +#endif + } + return res; + } + + static int screen_height() { + Display *const dpy = cimg::X11_attr().display; + int res = 0; + if (!dpy) { + Display *const _dpy = XOpenDisplay(0); + if (!_dpy) + throw CImgDisplayException("CImgDisplay::screen_height(): Failed to open X11 display."); + res = DisplayHeight(_dpy,DefaultScreen(_dpy)); + XCloseDisplay(_dpy); + } else { + +#ifdef cimg_use_xrandr + if (cimg::X11_attr().resolutions && cimg::X11_attr().curr_resolution) + res = cimg::X11_attr().resolutions[cimg::X11_attr().curr_resolution].height; + else res = DisplayHeight(dpy,DefaultScreen(dpy)); +#else + res = DisplayHeight(dpy,DefaultScreen(dpy)); +#endif + } + return res; + } + + static void wait_all() { + if (!cimg::X11_attr().display) return; + pthread_mutex_lock(&cimg::X11_attr().wait_event_mutex); + pthread_cond_wait(&cimg::X11_attr().wait_event,&cimg::X11_attr().wait_event_mutex); + pthread_mutex_unlock(&cimg::X11_attr().wait_event_mutex); + } + + void _handle_events(const XEvent *const pevent) { + Display *const dpy = cimg::X11_attr().display; + XEvent event = *pevent; + switch (event.type) { + case ClientMessage : { + if ((int)event.xclient.message_type==(int)_wm_protocol_atom && + (int)event.xclient.data.l[0]==(int)_wm_window_atom) { + XUnmapWindow(cimg::X11_attr().display,_window); + _is_closed = _is_event = true; + pthread_cond_broadcast(&cimg::X11_attr().wait_event); + } + } break; + case ConfigureNotify : { + while (XCheckWindowEvent(dpy,_window,StructureNotifyMask,&event)) {} + const unsigned int nw = event.xconfigure.width, nh = event.xconfigure.height; + const int nx = event.xconfigure.x, ny = event.xconfigure.y; + if (nw && nh && (nw!=_window_width || nh!=_window_height)) { + _window_width = nw; _window_height = nh; _mouse_x = _mouse_y = -1; + XResizeWindow(dpy,_window,_window_width,_window_height); + _is_resized = _is_event = true; + pthread_cond_broadcast(&cimg::X11_attr().wait_event); + } + if (nx!=_window_x || ny!=_window_y) { + _window_x = nx; + _window_y = ny; + _is_moved = _is_event = true; + pthread_cond_broadcast(&cimg::X11_attr().wait_event); + } + } break; + case Expose : { + while (XCheckWindowEvent(dpy,_window,ExposureMask,&event)) {} + _paint(false); + if (_is_fullscreen) { + XWindowAttributes attr; + do { + XGetWindowAttributes(dpy,_window,&attr); + if (attr.map_state!=IsViewable) { XSync(dpy,0); cimg::sleep(10); } + } while (attr.map_state!=IsViewable); + XSetInputFocus(dpy,_window,RevertToParent,CurrentTime); + } + } break; + case ButtonPress : { + do { + _mouse_x = event.xmotion.x; _mouse_y = event.xmotion.y; + if (_mouse_x<0 || _mouse_y<0 || _mouse_x>=width() || _mouse_y>=height()) _mouse_x = _mouse_y = -1; + switch (event.xbutton.button) { + case 1 : set_button(1); break; + case 3 : set_button(2); break; + case 2 : set_button(3); break; + } + } while (XCheckWindowEvent(dpy,_window,ButtonPressMask,&event)); + } break; + case ButtonRelease : { + do { + _mouse_x = event.xmotion.x; _mouse_y = event.xmotion.y; + if (_mouse_x<0 || _mouse_y<0 || _mouse_x>=width() || _mouse_y>=height()) _mouse_x = _mouse_y = -1; + switch (event.xbutton.button) { + case 1 : set_button(1,false); break; + case 3 : set_button(2,false); break; + case 2 : set_button(3,false); break; + case 4 : set_wheel(1); break; + case 5 : set_wheel(-1); break; + } + } while (XCheckWindowEvent(dpy,_window,ButtonReleaseMask,&event)); + } break; + case KeyPress : { + char tmp = 0; KeySym ksym; + XLookupString(&event.xkey,&tmp,1,&ksym,0); + set_key((unsigned int)ksym,true); + } break; + case KeyRelease : { + char keys_return[32]; // Check that the key has been physically unpressed + XQueryKeymap(dpy,keys_return); + const unsigned int kc = event.xkey.keycode, kc1 = kc/8, kc2 = kc%8; + const bool is_key_pressed = kc1>=32?false:(keys_return[kc1]>>kc2)&1; + if (!is_key_pressed) { + char tmp = 0; KeySym ksym; + XLookupString(&event.xkey,&tmp,1,&ksym,0); + set_key((unsigned int)ksym,false); + } + } break; + case EnterNotify: { + while (XCheckWindowEvent(dpy,_window,EnterWindowMask,&event)) {} + _mouse_x = event.xmotion.x; + _mouse_y = event.xmotion.y; + if (_mouse_x<0 || _mouse_y<0 || _mouse_x>=width() || _mouse_y>=height()) _mouse_x = _mouse_y = -1; + } break; + case LeaveNotify : { + while (XCheckWindowEvent(dpy,_window,LeaveWindowMask,&event)) {} + _mouse_x = _mouse_y = -1; _is_event = true; + pthread_cond_broadcast(&cimg::X11_attr().wait_event); + } break; + case MotionNotify : { + while (XCheckWindowEvent(dpy,_window,PointerMotionMask,&event)) {} + _mouse_x = event.xmotion.x; + _mouse_y = event.xmotion.y; + if (_mouse_x<0 || _mouse_y<0 || _mouse_x>=width() || _mouse_y>=height()) _mouse_x = _mouse_y = -1; + _is_event = true; + pthread_cond_broadcast(&cimg::X11_attr().wait_event); + } break; + } + } + + static void* _events_thread(void *arg) { // Thread to manage events for all opened display windows + Display *const dpy = cimg::X11_attr().display; + XEvent event; + pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,0); + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,0); + if (!arg) for ( ; ; ) { + cimg_lock_display(); + bool event_flag = XCheckTypedEvent(dpy,ClientMessage,&event); + if (!event_flag) event_flag = XCheckMaskEvent(dpy, + ExposureMask | StructureNotifyMask | ButtonPressMask | + KeyPressMask | PointerMotionMask | EnterWindowMask | + LeaveWindowMask | ButtonReleaseMask | KeyReleaseMask,&event); + if (event_flag) + for (unsigned int i = 0; i_is_closed && event.xany.window==cimg::X11_attr().wins[i]->_window) + cimg::X11_attr().wins[i]->_handle_events(&event); + cimg_unlock_display(); + pthread_testcancel(); + cimg::sleep(8); + } + return 0; + } + + void _set_colormap(Colormap& cmap, const unsigned int dim) { + XColor *const colormap = new XColor[256]; + switch (dim) { + case 1 : { // colormap for greyscale images + for (unsigned int index = 0; index<256; ++index) { + colormap[index].pixel = index; + colormap[index].red = colormap[index].green = colormap[index].blue = (unsigned short)(index<<8); + colormap[index].flags = DoRed | DoGreen | DoBlue; + } + } break; + case 2 : { // colormap for RG images + for (unsigned int index = 0, r = 8; r<256; r+=16) + for (unsigned int g = 8; g<256; g+=16) { + colormap[index].pixel = index; + colormap[index].red = colormap[index].blue = (unsigned short)(r<<8); + colormap[index].green = (unsigned short)(g<<8); + colormap[index++].flags = DoRed | DoGreen | DoBlue; + } + } break; + default : { // colormap for RGB images + for (unsigned int index = 0, r = 16; r<256; r+=32) + for (unsigned int g = 16; g<256; g+=32) + for (unsigned int b = 32; b<256; b+=64) { + colormap[index].pixel = index; + colormap[index].red = (unsigned short)(r<<8); + colormap[index].green = (unsigned short)(g<<8); + colormap[index].blue = (unsigned short)(b<<8); + colormap[index++].flags = DoRed | DoGreen | DoBlue; + } + } + } + XStoreColors(cimg::X11_attr().display,cmap,colormap,256); + delete[] colormap; + } + + void _map_window() { + Display *const dpy = cimg::X11_attr().display; + bool is_exposed = false, is_mapped = false; + XWindowAttributes attr; + XEvent event; + XMapRaised(dpy,_window); + do { // Wait for the window to be mapped + XWindowEvent(dpy,_window,StructureNotifyMask | ExposureMask,&event); + switch (event.type) { + case MapNotify : is_mapped = true; break; + case Expose : is_exposed = true; break; + } + } while (!is_exposed || !is_mapped); + do { // Wait for the window to be visible + XGetWindowAttributes(dpy,_window,&attr); + if (attr.map_state!=IsViewable) { XSync(dpy,0); cimg::sleep(10); } + } while (attr.map_state!=IsViewable); + _window_x = attr.x; + _window_y = attr.y; + } + + void _paint(const bool wait_expose=true) { + if (_is_closed || !_image) return; + Display *const dpy = cimg::X11_attr().display; + if (wait_expose) { // Send an expose event sticked to display window to force repaint + XEvent event; + event.xexpose.type = Expose; + event.xexpose.serial = 0; + event.xexpose.send_event = 1; + event.xexpose.display = dpy; + event.xexpose.window = _window; + event.xexpose.x = 0; + event.xexpose.y = 0; + event.xexpose.width = width(); + event.xexpose.height = height(); + event.xexpose.count = 0; + XSendEvent(dpy,_window,0,0,&event); + } else { // Repaint directly (may be called from the expose event) + GC gc = DefaultGC(dpy,DefaultScreen(dpy)); + +#ifdef cimg_use_xshm + if (_shminfo) XShmPutImage(dpy,_window,gc,_image,0,0,0,0,_width,_height,1); + else XPutImage(dpy,_window,gc,_image,0,0,0,0,_width,_height); +#else + XPutImage(dpy,_window,gc,_image,0,0,0,0,_width,_height); +#endif + } + } + + template + void _resize(T pixel_type, const unsigned int ndimx, const unsigned int ndimy, const bool force_redraw) { + Display *const dpy = cimg::X11_attr().display; + cimg::unused(pixel_type); + +#ifdef cimg_use_xshm + if (_shminfo) { + XShmSegmentInfo *const nshminfo = new XShmSegmentInfo; + XImage *const nimage = XShmCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)), + cimg::X11_attr().nb_bits,ZPixmap,0,nshminfo,ndimx,ndimy); + if (!nimage) { delete nshminfo; return; } + else { + nshminfo->shmid = shmget(IPC_PRIVATE,ndimx*ndimy*sizeof(T),IPC_CREAT | 0777); + if (nshminfo->shmid==-1) { XDestroyImage(nimage); delete nshminfo; return; } + else { + nshminfo->shmaddr = nimage->data = (char*)shmat(nshminfo->shmid,0,0); + if (nshminfo->shmaddr==(char*)-1) { + shmctl(nshminfo->shmid,IPC_RMID,0); XDestroyImage(nimage); delete nshminfo; return; + } else { + nshminfo->readOnly = 0; + cimg::X11_attr().is_shm_enabled = true; + XErrorHandler oldXErrorHandler = XSetErrorHandler(_assign_xshm); + XShmAttach(dpy,nshminfo); + XFlush(dpy); + XSetErrorHandler(oldXErrorHandler); + if (!cimg::X11_attr().is_shm_enabled) { + shmdt(nshminfo->shmaddr); + shmctl(nshminfo->shmid,IPC_RMID,0); + XDestroyImage(nimage); + delete nshminfo; + return; + } else { + T *const ndata = (T*)nimage->data; + if (force_redraw) _render_resize((T*)_data,_width,_height,ndata,ndimx,ndimy); + else std::memset(ndata,0,sizeof(T)*ndimx*ndimy); + XShmDetach(dpy,_shminfo); + XDestroyImage(_image); + shmdt(_shminfo->shmaddr); + shmctl(_shminfo->shmid,IPC_RMID,0); + delete _shminfo; + _shminfo = nshminfo; + _image = nimage; + _data = (void*)ndata; + } + } + } + } + } else +#endif + { + T *ndata = (T*)std::malloc(ndimx*ndimy*sizeof(T)); + if (force_redraw) _render_resize((T*)_data,_width,_height,ndata,ndimx,ndimy); + else std::memset(ndata,0,sizeof(T)*ndimx*ndimy); + _data = (void*)ndata; + XDestroyImage(_image); + _image = XCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)), + cimg::X11_attr().nb_bits,ZPixmap,0,(char*)_data,ndimx,ndimy,8,0); + } + } + + void _init_fullscreen() { + if (!_is_fullscreen || _is_closed) return; + Display *const dpy = cimg::X11_attr().display; + _background_window = 0; + +#ifdef cimg_use_xrandr + int foo; + if (XRRQueryExtension(dpy,&foo,&foo)) { + XRRRotations(dpy,DefaultScreen(dpy),&cimg::X11_attr().curr_rotation); + if (!cimg::X11_attr().resolutions) { + cimg::X11_attr().resolutions = XRRSizes(dpy,DefaultScreen(dpy),&foo); + cimg::X11_attr().nb_resolutions = (unsigned int)foo; + } + if (cimg::X11_attr().resolutions) { + cimg::X11_attr().curr_resolution = 0; + for (unsigned int i = 0; i=_width && nh>=_height && + nw<=(unsigned int)(cimg::X11_attr().resolutions[cimg::X11_attr().curr_resolution].width) && + nh<=(unsigned int)(cimg::X11_attr().resolutions[cimg::X11_attr().curr_resolution].height)) + cimg::X11_attr().curr_resolution = i; + } + if (cimg::X11_attr().curr_resolution>0) { + XRRScreenConfiguration *config = XRRGetScreenInfo(dpy,DefaultRootWindow(dpy)); + XRRSetScreenConfig(dpy,config,DefaultRootWindow(dpy), + cimg::X11_attr().curr_resolution,cimg::X11_attr().curr_rotation,CurrentTime); + XRRFreeScreenConfigInfo(config); + XSync(dpy,0); + } + } + } + if (!cimg::X11_attr().resolutions) + cimg::warn(_cimgdisplay_instance + "init_fullscreen(): Xrandr extension not supported by the X server.", + cimgdisplay_instance); +#endif + + const unsigned int sx = screen_width(), sy = screen_height(); + if (sx==_width && sy==_height) return; + XSetWindowAttributes attr_set; + + attr_set.background_pixel = XBlackPixel(dpy,XDefaultScreen(dpy)); + attr_set.override_redirect = 1; + _background_window = XCreateWindow(dpy,DefaultRootWindow(dpy),0,0,sx,sy,0,0, + InputOutput,CopyFromParent,CWBackPixel | CWOverrideRedirect,&attr_set); + XEvent event; + XSelectInput(dpy,_background_window,StructureNotifyMask); + XMapRaised(dpy,_background_window); + do XWindowEvent(dpy,_background_window,StructureNotifyMask,&event); + while (event.type!=MapNotify); + + XWindowAttributes attr; + do { + XGetWindowAttributes(dpy,_background_window,&attr); + if (attr.map_state!=IsViewable) { XSync(dpy,0); cimg::sleep(10); } + } while (attr.map_state!=IsViewable); + } + + void _desinit_fullscreen() { + if (!_is_fullscreen) return; + Display *const dpy = cimg::X11_attr().display; + XUngrabKeyboard(dpy,CurrentTime); + +#ifdef cimg_use_xrandr + if (cimg::X11_attr().resolutions && cimg::X11_attr().curr_resolution) { + XRRScreenConfiguration *config = XRRGetScreenInfo(dpy,DefaultRootWindow(dpy)); + XRRSetScreenConfig(dpy,config,DefaultRootWindow(dpy),0,cimg::X11_attr().curr_rotation,CurrentTime); + XRRFreeScreenConfigInfo(config); + XSync(dpy,0); + cimg::X11_attr().curr_resolution = 0; + } +#endif + if (_background_window) XDestroyWindow(dpy,_background_window); + _background_window = 0; + _is_fullscreen = false; + } + + static int _assign_xshm(Display *dpy, XErrorEvent *error) { + cimg::unused(dpy,error); + cimg::X11_attr().is_shm_enabled = false; + return 0; + } + + void _assign(const unsigned int dimw, const unsigned int dimh, const char *const ptitle=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + cimg::mutex(14); + + // Allocate space for window title + const char *const nptitle = ptitle?ptitle:""; + const unsigned int s = (unsigned int)std::strlen(nptitle) + 1; + char *const tmp_title = s?new char[s]:0; + if (s) std::memcpy(tmp_title,nptitle,s*sizeof(char)); + + // Destroy previous display window if existing + if (!is_empty()) assign(); + + // Open X11 display and retrieve graphical properties. + Display* &dpy = cimg::X11_attr().display; + if (!dpy) { + dpy = XOpenDisplay(0); + if (!dpy) + throw CImgDisplayException(_cimgdisplay_instance + "assign(): Failed to open X11 display.", + cimgdisplay_instance); + + cimg::X11_attr().nb_bits = DefaultDepth(dpy,DefaultScreen(dpy)); + if (cimg::X11_attr().nb_bits!=8 && cimg::X11_attr().nb_bits!=16 && + cimg::X11_attr().nb_bits!=24 && cimg::X11_attr().nb_bits!=32) + throw CImgDisplayException(_cimgdisplay_instance + "assign(): Invalid %u bits screen mode detected " + "(only 8, 16, 24 and 32 bits modes are managed).", + cimgdisplay_instance, + cimg::X11_attr().nb_bits); + XVisualInfo vtemplate; + vtemplate.visualid = XVisualIDFromVisual(DefaultVisual(dpy,DefaultScreen(dpy))); + int nb_visuals; + XVisualInfo *vinfo = XGetVisualInfo(dpy,VisualIDMask,&vtemplate,&nb_visuals); + if (vinfo && vinfo->red_maskblue_mask) cimg::X11_attr().is_blue_first = true; + cimg::X11_attr().byte_order = ImageByteOrder(dpy); + XFree(vinfo); + + cimg_lock_display(); + cimg::X11_attr().events_thread = new pthread_t; + pthread_create(cimg::X11_attr().events_thread,0,_events_thread,0); + } else cimg_lock_display(); + + // Set display variables. + _width = std::min(dimw,(unsigned int)screen_width()); + _height = std::min(dimh,(unsigned int)screen_height()); + _normalization = normalization_type<4?normalization_type:3; + _is_fullscreen = fullscreen_flag; + _window_x = _window_y = cimg::type::min(); + _is_closed = closed_flag; + _title = tmp_title; + flush(); + + // Create X11 window (and LUT, if 8bits display) + if (_is_fullscreen) { + if (!_is_closed) _init_fullscreen(); + const unsigned int sx = screen_width(), sy = screen_height(); + XSetWindowAttributes attr_set; + attr_set.override_redirect = 1; + _window = XCreateWindow(dpy,DefaultRootWindow(dpy),(sx - _width)/2,(sy - _height)/2,_width,_height,0,0, + InputOutput,CopyFromParent,CWOverrideRedirect,&attr_set); + } else + _window = XCreateSimpleWindow(dpy,DefaultRootWindow(dpy),0,0,_width,_height,0,0L,0L); + + XSelectInput(dpy,_window, + ExposureMask | StructureNotifyMask | ButtonPressMask | KeyPressMask | PointerMotionMask | + EnterWindowMask | LeaveWindowMask | ButtonReleaseMask | KeyReleaseMask); + + XStoreName(dpy,_window,_title?_title:" "); + if (cimg::X11_attr().nb_bits==8) { + _colormap = XCreateColormap(dpy,_window,DefaultVisual(dpy,DefaultScreen(dpy)),AllocAll); + _set_colormap(_colormap,3); + XSetWindowColormap(dpy,_window,_colormap); + } + + static const char *const _window_class = cimg_appname; + XClassHint *const window_class = XAllocClassHint(); + window_class->res_name = (char*)_window_class; + window_class->res_class = (char*)_window_class; + XSetClassHint(dpy,_window,window_class); + XFree(window_class); + + _window_width = _width; + _window_height = _height; + + // Create XImage +#ifdef cimg_use_xshm + _shminfo = 0; + if (XShmQueryExtension(dpy)) { + _shminfo = new XShmSegmentInfo; + _image = XShmCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)),cimg::X11_attr().nb_bits, + ZPixmap,0,_shminfo,_width,_height); + if (!_image) { delete _shminfo; _shminfo = 0; } + else { + _shminfo->shmid = shmget(IPC_PRIVATE,_image->bytes_per_line*_image->height,IPC_CREAT|0777); + if (_shminfo->shmid==-1) { XDestroyImage(_image); delete _shminfo; _shminfo = 0; } + else { + _shminfo->shmaddr = _image->data = (char*)(_data = shmat(_shminfo->shmid,0,0)); + if (_shminfo->shmaddr==(char*)-1) { + shmctl(_shminfo->shmid,IPC_RMID,0); XDestroyImage(_image); delete _shminfo; _shminfo = 0; + } else { + _shminfo->readOnly = 0; + cimg::X11_attr().is_shm_enabled = true; + XErrorHandler oldXErrorHandler = XSetErrorHandler(_assign_xshm); + XShmAttach(dpy,_shminfo); + XSync(dpy,0); + XSetErrorHandler(oldXErrorHandler); + if (!cimg::X11_attr().is_shm_enabled) { + shmdt(_shminfo->shmaddr); shmctl(_shminfo->shmid,IPC_RMID,0); XDestroyImage(_image); + delete _shminfo; _shminfo = 0; + } + } + } + } + } + if (!_shminfo) +#endif + { + const cimg_ulong buf_size = (cimg_ulong)_width*_height*(cimg::X11_attr().nb_bits==8?1: + (cimg::X11_attr().nb_bits==16?2:4)); + _data = std::malloc(buf_size); + _image = XCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)),cimg::X11_attr().nb_bits, + ZPixmap,0,(char*)_data,_width,_height,8,0); + } + + _wm_window_atom = XInternAtom(dpy,"WM_DELETE_WINDOW",0); + _wm_protocol_atom = XInternAtom(dpy,"WM_PROTOCOLS",0); + XSetWMProtocols(dpy,_window,&_wm_window_atom,1); + + if (_is_fullscreen) XGrabKeyboard(dpy,_window,1,GrabModeAsync,GrabModeAsync,CurrentTime); + cimg::X11_attr().wins[cimg::X11_attr().nb_wins++]=this; + if (!_is_closed) _map_window(); else _window_x = _window_y = cimg::type::min(); + cimg_unlock_display(); + cimg::mutex(14,0); + } + + CImgDisplay& assign() { + if (is_empty()) return flush(); + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + + // Remove display window from event thread list. + unsigned int i; + for (i = 0; ishmaddr); + shmctl(_shminfo->shmid,IPC_RMID,0); + delete _shminfo; + _shminfo = 0; + } +#endif + + XDestroyImage(_image); + if (cimg::X11_attr().nb_bits==8) XFreeColormap(dpy,_colormap); + XDestroyWindow(dpy,_window); + XSync(dpy,0); + _window = 0; _colormap = 0; _data = 0; _image = 0; + + // Reset display variables. + delete[] _title; + _width = _height = _normalization = _window_width = _window_height = 0; + _window_x = _window_y = cimg::type::min(); + _is_fullscreen = false; + _is_closed = true; + _min = _max = 0; + _title = 0; + flush(); + + cimg_unlock_display(); + return *this; + } + + CImgDisplay& assign(const unsigned int dimw, const unsigned int dimh, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!dimw || !dimh) return assign(); + _assign(dimw,dimh,title,normalization_type,fullscreen_flag,closed_flag); + _min = _max = 0; + std::memset(_data,0,(cimg::X11_attr().nb_bits==8?sizeof(unsigned char): + (cimg::X11_attr().nb_bits==16?sizeof(unsigned short):sizeof(unsigned int)))* + (size_t)_width*_height); + return paint(); + } + + template + CImgDisplay& assign(const CImg& img, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!img) return assign(); + CImg tmp; + const CImg& nimg = (img._depth==1)?img:(tmp=img.get_projections2d((img._width - 1)/2, + (img._height - 1)/2, + (img._depth - 1)/2)); + _assign(nimg._width,nimg._height,title,normalization_type,fullscreen_flag,closed_flag); + if (_normalization==2) _min = (float)nimg.min_max(_max); + return render(nimg).paint(); + } + + template + CImgDisplay& assign(const CImgList& list, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!list) return assign(); + CImg tmp; + const CImg img = list>'x', &nimg = (img._depth==1)?img:(tmp=img.get_projections2d((img._width - 1)/2, + (img._height - 1)/2, + (img._depth - 1)/2)); + _assign(nimg._width,nimg._height,title,normalization_type,fullscreen_flag,closed_flag); + if (_normalization==2) _min = (float)nimg.min_max(_max); + return render(nimg).paint(); + } + + CImgDisplay& assign(const CImgDisplay& disp) { + if (!disp) return assign(); + _assign(disp._width,disp._height,disp._title,disp._normalization,disp._is_fullscreen,disp._is_closed); + std::memcpy(_data,disp._data,(cimg::X11_attr().nb_bits==8?sizeof(unsigned char): + cimg::X11_attr().nb_bits==16?sizeof(unsigned short): + sizeof(unsigned int))*(size_t)_width*_height); + return paint(); + } + + CImgDisplay& resize(const int nwidth, const int nheight, const bool force_redraw=true) { + if (!nwidth || !nheight || (is_empty() && (nwidth<0 || nheight<0))) return assign(); + if (is_empty()) return assign(nwidth,nheight); + Display *const dpy = cimg::X11_attr().display; + const unsigned int + tmpdimx = (nwidth>0)?nwidth:(-nwidth*width()/100), + tmpdimy = (nheight>0)?nheight:(-nheight*height()/100), + dimx = tmpdimx?tmpdimx:1, + dimy = tmpdimy?tmpdimy:1; + if (_width!=dimx || _height!=dimy || _window_width!=dimx || _window_height!=dimy) { + show(); + cimg_lock_display(); + if (_window_width!=dimx || _window_height!=dimy) { + XWindowAttributes attr; + for (unsigned int i = 0; i<10; ++i) { + XResizeWindow(dpy,_window,dimx,dimy); + XGetWindowAttributes(dpy,_window,&attr); + if (attr.width==(int)dimx && attr.height==(int)dimy) break; + cimg::wait(5,&_timer); + } + } + if (_width!=dimx || _height!=dimy) switch (cimg::X11_attr().nb_bits) { + case 8 : { unsigned char pixel_type = 0; _resize(pixel_type,dimx,dimy,force_redraw); } break; + case 16 : { unsigned short pixel_type = 0; _resize(pixel_type,dimx,dimy,force_redraw); } break; + default : { unsigned int pixel_type = 0; _resize(pixel_type,dimx,dimy,force_redraw); } + } + _window_width = _width = dimx; _window_height = _height = dimy; + cimg_unlock_display(); + } + _is_resized = false; + if (_is_fullscreen) move((screen_width() - _width)/2,(screen_height() - _height)/2); + if (force_redraw) return paint(); + return *this; + } + + CImgDisplay& toggle_fullscreen(const bool force_redraw=true) { + if (is_empty()) return *this; + if (force_redraw) { + const cimg_ulong buf_size = (cimg_ulong)_width*_height* + (cimg::X11_attr().nb_bits==8?1:(cimg::X11_attr().nb_bits==16?2:4)); + void *image_data = std::malloc(buf_size); + std::memcpy(image_data,_data,buf_size); + assign(_width,_height,_title,_normalization,!_is_fullscreen,false); + std::memcpy(_data,image_data,buf_size); + std::free(image_data); + return paint(); + } + return assign(_width,_height,_title,_normalization,!_is_fullscreen,false); + } + + CImgDisplay& show() { + if (is_empty() || !_is_closed) return *this; + cimg_lock_display(); + _is_closed = false; + if (_is_fullscreen) _init_fullscreen(); + _map_window(); + cimg_unlock_display(); + return paint(); + } + + CImgDisplay& close() { + if (is_empty() || _is_closed) return *this; + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + if (_is_fullscreen) _desinit_fullscreen(); + XUnmapWindow(dpy,_window); + _window_x = _window_y = cimg::type::min(); + _is_closed = true; + cimg_unlock_display(); + return *this; + } + + CImgDisplay& move(const int posx, const int posy) { + if (is_empty()) return *this; + show(); + if (_window_x!=posx || _window_y!=posy) { + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + XMoveWindow(dpy,_window,posx,posy); + _window_x = posx; + _window_y = posy; + cimg_unlock_display(); + } + _is_moved = false; + return paint(); + } + + CImgDisplay& show_mouse() { + if (is_empty()) return *this; + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + XUndefineCursor(dpy,_window); + cimg_unlock_display(); + return *this; + } + + CImgDisplay& hide_mouse() { + if (is_empty()) return *this; + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + static const char pix_data[8] = { 0 }; + XColor col; + col.red = col.green = col.blue = 0; + Pixmap pix = XCreateBitmapFromData(dpy,_window,pix_data,8,8); + Cursor cur = XCreatePixmapCursor(dpy,pix,pix,&col,&col,0,0); + XFreePixmap(dpy,pix); + XDefineCursor(dpy,_window,cur); + cimg_unlock_display(); + return *this; + } + + CImgDisplay& set_mouse(const int posx, const int posy) { + if (is_empty() || _is_closed) return *this; + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + XWarpPointer(dpy,0L,_window,0,0,0,0,posx,posy); + _mouse_x = posx; _mouse_y = posy; + _is_moved = false; + XSync(dpy,0); + cimg_unlock_display(); + return *this; + } + + CImgDisplay& set_title(const char *const format, ...) { + if (is_empty()) return *this; + char *const tmp = new char[1024]; + va_list ap; + va_start(ap, format); + cimg_vsnprintf(tmp,1024,format,ap); + va_end(ap); + if (!std::strcmp(_title,tmp)) { delete[] tmp; return *this; } + delete[] _title; + const unsigned int s = (unsigned int)std::strlen(tmp) + 1; + _title = new char[s]; + std::memcpy(_title,tmp,s*sizeof(char)); + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + XStoreName(dpy,_window,tmp); + cimg_unlock_display(); + delete[] tmp; + return *this; + } + + template + CImgDisplay& display(const CImg& img) { + if (!img) + throw CImgArgumentException(_cimgdisplay_instance + "display(): Empty specified image.", + cimgdisplay_instance); + if (is_empty()) return assign(img); + return render(img).paint(false); + } + + CImgDisplay& paint(const bool wait_expose=true) { + if (is_empty()) return *this; + cimg_lock_display(); + _paint(wait_expose); + cimg_unlock_display(); + return *this; + } + + template + CImgDisplay& render(const CImg& img, const bool flag8=false) { + if (!img) + throw CImgArgumentException(_cimgdisplay_instance + "render(): Empty specified image.", + cimgdisplay_instance); + if (is_empty()) return *this; + if (img._depth!=1) return render(img.get_projections2d((img._width - 1)/2,(img._height - 1)/2, + (img._depth - 1)/2)); + if (cimg::X11_attr().nb_bits==8 && (img._width!=_width || img._height!=_height)) + return render(img.get_resize(_width,_height,1,-100,1)); + if (cimg::X11_attr().nb_bits==8 && !flag8 && img._spectrum==3) { + static const CImg::ucharT> default_colormap = CImg::ucharT>::default_LUT256(); + return render(img.get_index(default_colormap,1,false)); + } + + const T + *data1 = img._data, + *data2 = (img._spectrum>1)?img.data(0,0,0,1):data1, + *data3 = (img._spectrum>2)?img.data(0,0,0,2):data1; + + if (cimg::X11_attr().is_blue_first) cimg::swap(data1,data3); + cimg_lock_display(); + + if (!_normalization || (_normalization==3 && cimg::type::string()==cimg::type::string())) { + _min = _max = 0; + switch (cimg::X11_attr().nb_bits) { + case 8 : { // 256 colormap, no normalization + _set_colormap(_colormap,img._spectrum); + unsigned char + *const ndata = (img._width==_width && img._height==_height)?(unsigned char*)_data: + new unsigned char[(size_t)img._width*img._height], + *ptrd = (unsigned char*)ndata; + switch (img._spectrum) { + case 1 : + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + (*ptrd++) = (unsigned char)*(data1++); + break; + case 2 : for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)*(data1++), + G = (unsigned char)*(data2++); + (*ptrd++) = (R&0xf0) | (G>>4); + } break; + default : for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)*(data1++), + G = (unsigned char)*(data2++), + B = (unsigned char)*(data3++); + (*ptrd++) = (R&0xe0) | ((G>>5)<<2) | (B>>6); + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned char*)_data,_width,_height); + delete[] ndata; + } + } break; + case 16 : { // 16 bits colors, no normalization + unsigned short *const ndata = (img._width==_width && img._height==_height)?(unsigned short*)_data: + new unsigned short[(size_t)img._width*img._height]; + unsigned char *ptrd = (unsigned char*)ndata; + const unsigned int M = 248; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)*(data1++), G = val>>2; + ptrd[0] = (val&M) | (G>>3); + ptrd[1] = (G<<5) | (G>>1); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)*(data1++), G = val>>2; + ptrd[0] = (G<<5) | (G>>1); + ptrd[1] = (val&M) | (G>>3); + ptrd+=2; + } + break; + case 2 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)*(data2++)>>2; + ptrd[0] = ((unsigned char)*(data1++)&M) | (G>>3); + ptrd[1] = (G<<5); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)*(data2++)>>2; + ptrd[0] = (G<<5); + ptrd[1] = ((unsigned char)*(data1++)&M) | (G>>3); + ptrd+=2; + } + break; + default : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)*(data2++)>>2; + ptrd[0] = ((unsigned char)*(data1++)&M) | (G>>3); + ptrd[1] = (G<<5) | ((unsigned char)*(data3++)>>3); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)*(data2++)>>2; + ptrd[0] = (G<<5) | ((unsigned char)*(data3++)>>3); + ptrd[1] = ((unsigned char)*(data1++)&M) | (G>>3); + ptrd+=2; + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned short*)_data,_width,_height); + delete[] ndata; + } + } break; + default : { // 24 bits colors, no normalization + unsigned int *const ndata = (img._width==_width && img._height==_height)?(unsigned int*)_data: + new unsigned int[(size_t)img._width*img._height]; + if (sizeof(int)==4) { // 32 bits int uses optimized version + unsigned int *ptrd = ndata; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)*(data1++); + *(ptrd++) = (val<<16) | (val<<8) | val; + } + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)*(data1++); + *(ptrd++) = (val<<16) | (val<<8) | val; + } + break; + case 2 : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = ((unsigned char)*(data1++)<<16) | ((unsigned char)*(data2++)<<8); + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = ((unsigned char)*(data2++)<<16) | ((unsigned char)*(data1++)<<8); + break; + default : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = ((unsigned char)*(data1++)<<16) | ((unsigned char)*(data2++)<<8) | + (unsigned char)*(data3++); + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = ((unsigned char)*(data3++)<<24) | ((unsigned char)*(data2++)<<16) | + ((unsigned char)*(data1++)<<8); + } + } else { + unsigned char *ptrd = (unsigned char*)ndata; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = (unsigned char)*(data1++); + ptrd[2] = 0; + ptrd[3] = 0; + ptrd+=4; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = 0; + ptrd[2] = (unsigned char)*(data1++); + ptrd[3] = 0; + ptrd+=4; + } + break; + case 2 : + if (cimg::X11_attr().byte_order) cimg::swap(data1,data2); + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = (unsigned char)*(data2++); + ptrd[2] = (unsigned char)*(data1++); + ptrd[3] = 0; + ptrd+=4; + } + break; + default : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = (unsigned char)*(data1++); + ptrd[2] = (unsigned char)*(data2++); + ptrd[3] = (unsigned char)*(data3++); + ptrd+=4; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = (unsigned char)*(data3++); + ptrd[1] = (unsigned char)*(data2++); + ptrd[2] = (unsigned char)*(data1++); + ptrd[3] = 0; + ptrd+=4; + } + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned int*)_data,_width,_height); + delete[] ndata; + } + } + } + } else { + if (_normalization==3) { + if (cimg::type::is_float()) _min = (float)img.min_max(_max); + else { _min = (float)cimg::type::min(); _max = (float)cimg::type::max(); } + } else if ((_min>_max) || _normalization==1) _min = (float)img.min_max(_max); + const float delta = _max - _min, mm = 255/(delta?delta:1.f); + switch (cimg::X11_attr().nb_bits) { + case 8 : { // 256 colormap, with normalization + _set_colormap(_colormap,img._spectrum); + unsigned char *const ndata = (img._width==_width && img._height==_height)?(unsigned char*)_data: + new unsigned char[(size_t)img._width*img._height]; + unsigned char *ptrd = (unsigned char*)ndata; + switch (img._spectrum) { + case 1 : for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char R = (unsigned char)((*(data1++) - _min)*mm); + *(ptrd++) = R; + } break; + case 2 : for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)((*(data1++) - _min)*mm), + G = (unsigned char)((*(data2++) - _min)*mm); + (*ptrd++) = (R&0xf0) | (G>>4); + } break; + default : + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)((*(data1++) - _min)*mm), + G = (unsigned char)((*(data2++) - _min)*mm), + B = (unsigned char)((*(data3++) - _min)*mm); + *(ptrd++) = (R&0xe0) | ((G>>5)<<2) | (B>>6); + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned char*)_data,_width,_height); + delete[] ndata; + } + } break; + case 16 : { // 16 bits colors, with normalization + unsigned short *const ndata = (img._width==_width && img._height==_height)?(unsigned short*)_data: + new unsigned short[(size_t)img._width*img._height]; + unsigned char *ptrd = (unsigned char*)ndata; + const unsigned int M = 248; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm), G = val>>2; + ptrd[0] = (val&M) | (G>>3); + ptrd[1] = (G<<5) | (val>>3); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm), G = val>>2; + ptrd[0] = (G<<5) | (val>>3); + ptrd[1] = (val&M) | (G>>3); + ptrd+=2; + } + break; + case 2 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)((*(data2++) - _min)*mm)>>2; + ptrd[0] = ((unsigned char)((*(data1++) - _min)*mm)&M) | (G>>3); + ptrd[1] = (G<<5); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)((*(data2++) - _min)*mm)>>2; + ptrd[0] = (G<<5); + ptrd[1] = ((unsigned char)((*(data1++) - _min)*mm)&M) | (G>>3); + ptrd+=2; + } + break; + default : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)((*(data2++) - _min)*mm)>>2; + ptrd[0] = ((unsigned char)((*(data1++) - _min)*mm)&M) | (G>>3); + ptrd[1] = (G<<5) | ((unsigned char)((*(data3++) - _min)*mm)>>3); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)((*(data2++) - _min)*mm)>>2; + ptrd[0] = (G<<5) | ((unsigned char)((*(data3++) - _min)*mm)>>3); + ptrd[1] = ((unsigned char)((*(data1++) - _min)*mm)&M) | (G>>3); + ptrd+=2; + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned short*)_data,_width,_height); + delete[] ndata; + } + } break; + default : { // 24 bits colors, with normalization + unsigned int *const ndata = (img._width==_width && img._height==_height)?(unsigned int*)_data: + new unsigned int[(size_t)img._width*img._height]; + if (sizeof(int)==4) { // 32 bits int uses optimized version + unsigned int *ptrd = ndata; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm); + *(ptrd++) = (val<<16) | (val<<8) | val; + } + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm); + *(ptrd++) = (val<<24) | (val<<16) | (val<<8); + } + break; + case 2 : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = + ((unsigned char)((*(data1++) - _min)*mm)<<16) | + ((unsigned char)((*(data2++) - _min)*mm)<<8); + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = + ((unsigned char)((*(data2++) - _min)*mm)<<16) | + ((unsigned char)((*(data1++) - _min)*mm)<<8); + break; + default : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = + ((unsigned char)((*(data1++) - _min)*mm)<<16) | + ((unsigned char)((*(data2++) - _min)*mm)<<8) | + (unsigned char)((*(data3++) - _min)*mm); + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = + ((unsigned char)((*(data3++) - _min)*mm)<<24) | + ((unsigned char)((*(data2++) - _min)*mm)<<16) | + ((unsigned char)((*(data1++) - _min)*mm)<<8); + } + } else { + unsigned char *ptrd = (unsigned char*)ndata; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm); + ptrd[0] = 0; + ptrd[1] = val; + ptrd[2] = val; + ptrd[3] = val; + ptrd+=4; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm); + ptrd[0] = val; + ptrd[1] = val; + ptrd[2] = val; + ptrd[3] = 0; + ptrd+=4; + } + break; + case 2 : + if (cimg::X11_attr().byte_order) cimg::swap(data1,data2); + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = (unsigned char)((*(data2++) - _min)*mm); + ptrd[2] = (unsigned char)((*(data1++) - _min)*mm); + ptrd[3] = 0; + ptrd+=4; + } + break; + default : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = (unsigned char)((*(data1++) - _min)*mm); + ptrd[2] = (unsigned char)((*(data2++) - _min)*mm); + ptrd[3] = (unsigned char)((*(data3++) - _min)*mm); + ptrd+=4; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = (unsigned char)((*(data3++) - _min)*mm); + ptrd[1] = (unsigned char)((*(data2++) - _min)*mm); + ptrd[2] = (unsigned char)((*(data1++) - _min)*mm); + ptrd[3] = 0; + ptrd+=4; + } + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned int*)_data,_width,_height); + delete[] ndata; + } + } + } + } + cimg_unlock_display(); + return *this; + } + + template + static void screenshot(const int x0, const int y0, const int x1, const int y1, CImg& img) { + img.assign(); + Display *dpy = cimg::X11_attr().display; + cimg_lock_display(); + if (!dpy) { + dpy = XOpenDisplay(0); + if (!dpy) + throw CImgDisplayException("CImgDisplay::screenshot(): Failed to open X11 display."); + } + Window root = DefaultRootWindow(dpy); + XWindowAttributes gwa; + XGetWindowAttributes(dpy,root,&gwa); + const int width = gwa.width, height = gwa.height; + int _x0 = x0, _y0 = y0, _x1 = x1, _y1 = y1; + if (_x0>_x1) cimg::swap(_x0,_x1); + if (_y0>_y1) cimg::swap(_y0,_y1); + + XImage *image = 0; + if (_x1>=0 && _x0=0 && _y0red_mask, + green_mask = image->green_mask, + blue_mask = image->blue_mask; + img.assign(image->width,image->height,1,3); + T *pR = img.data(0,0,0,0), *pG = img.data(0,0,0,1), *pB = img.data(0,0,0,2); + cimg_forXY(img,x,y) { + const unsigned long pixel = XGetPixel(image,x,y); + *(pR++) = (T)((pixel & red_mask)>>16); + *(pG++) = (T)((pixel & green_mask)>>8); + *(pB++) = (T)(pixel & blue_mask); + } + XDestroyImage(image); + } + } + if (!cimg::X11_attr().display) XCloseDisplay(dpy); + cimg_unlock_display(); + if (img.is_empty()) + throw CImgDisplayException("CImgDisplay::screenshot(): Failed to take screenshot " + "with coordinates (%d,%d)-(%d,%d).", + x0,y0,x1,y1); + } + + template + const CImgDisplay& snapshot(CImg& img) const { + if (is_empty()) { img.assign(); return *this; } + const unsigned char *ptrs = (unsigned char*)_data; + img.assign(_width,_height,1,3); + T + *data1 = img.data(0,0,0,0), + *data2 = img.data(0,0,0,1), + *data3 = img.data(0,0,0,2); + if (cimg::X11_attr().is_blue_first) cimg::swap(data1,data3); + switch (cimg::X11_attr().nb_bits) { + case 8 : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = *(ptrs++); + *(data1++) = (T)(val&0xe0); + *(data2++) = (T)((val&0x1c)<<3); + *(data3++) = (T)(val<<6); + } + } break; + case 16 : { + if (cimg::X11_attr().byte_order) for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + val0 = ptrs[0], + val1 = ptrs[1]; + ptrs+=2; + *(data1++) = (T)(val0&0xf8); + *(data2++) = (T)((val0<<5) | ((val1&0xe0)>>5)); + *(data3++) = (T)(val1<<3); + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned short + val0 = ptrs[0], + val1 = ptrs[1]; + ptrs+=2; + *(data1++) = (T)(val1&0xf8); + *(data2++) = (T)((val1<<5) | ((val0&0xe0)>>5)); + *(data3++) = (T)(val0<<3); + } + } break; + default : { + if (cimg::X11_attr().byte_order) for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ++ptrs; + *(data1++) = (T)ptrs[0]; + *(data2++) = (T)ptrs[1]; + *(data3++) = (T)ptrs[2]; + ptrs+=3; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + *(data3++) = (T)ptrs[0]; + *(data2++) = (T)ptrs[1]; + *(data1++) = (T)ptrs[2]; + ptrs+=3; + ++ptrs; + } + } + } + return *this; + } + + // Windows-based implementation. + //------------------------------- +#elif cimg_display==2 + + bool _is_mouse_tracked, _is_cursor_visible; + HANDLE _thread, _is_created, _mutex; + HWND _window, _background_window; + CLIENTCREATESTRUCT _ccs; + unsigned int *_data; + DEVMODE _curr_mode; + BITMAPINFO _bmi; + HDC _hdc; + + static int screen_width() { + DEVMODE mode; + mode.dmSize = sizeof(DEVMODE); + mode.dmDriverExtra = 0; + EnumDisplaySettings(0,ENUM_CURRENT_SETTINGS,&mode); + return (int)mode.dmPelsWidth; + } + + static int screen_height() { + DEVMODE mode; + mode.dmSize = sizeof(DEVMODE); + mode.dmDriverExtra = 0; + EnumDisplaySettings(0,ENUM_CURRENT_SETTINGS,&mode); + return (int)mode.dmPelsHeight; + } + + static void wait_all() { + WaitForSingleObject(cimg::Win32_attr().wait_event,INFINITE); + } + + static LRESULT APIENTRY _handle_events(HWND window, UINT msg, WPARAM wParam, LPARAM lParam) { +#ifdef _WIN64 + CImgDisplay *const disp = (CImgDisplay*)GetWindowLongPtr(window,GWLP_USERDATA); +#else + CImgDisplay *const disp = (CImgDisplay*)GetWindowLong(window,GWL_USERDATA); +#endif + MSG st_msg; + switch (msg) { + case WM_CLOSE : + disp->_mouse_x = disp->_mouse_y = -1; + disp->_window_x = disp->_window_y = cimg::type::min(); + disp->set_button().set_key(0).set_key(0,false)._is_closed = true; + ReleaseMutex(disp->_mutex); + ShowWindow(disp->_window,SW_HIDE); + disp->_is_event = true; + SetEvent(cimg::Win32_attr().wait_event); + return 0; + case WM_SIZE : { + while (PeekMessage(&st_msg,window,WM_SIZE,WM_SIZE,PM_REMOVE)) {} + WaitForSingleObject(disp->_mutex,INFINITE); + const unsigned int nw = LOWORD(lParam),nh = HIWORD(lParam); + if (nw && nh && (nw!=disp->_width || nh!=disp->_height)) { + disp->_window_width = nw; + disp->_window_height = nh; + disp->_mouse_x = disp->_mouse_y = -1; + disp->_is_resized = disp->_is_event = true; + SetEvent(cimg::Win32_attr().wait_event); + } + ReleaseMutex(disp->_mutex); + } break; + case WM_MOVE : { + while (PeekMessage(&st_msg,window,WM_SIZE,WM_SIZE,PM_REMOVE)) {} + WaitForSingleObject(disp->_mutex,INFINITE); + const int nx = (int)(short)(LOWORD(lParam)), ny = (int)(short)(HIWORD(lParam)); + if (nx!=disp->_window_x || ny!=disp->_window_y) { + disp->_window_x = nx; + disp->_window_y = ny; + disp->_is_moved = disp->_is_event = true; + SetEvent(cimg::Win32_attr().wait_event); + } + ReleaseMutex(disp->_mutex); + } break; + case WM_PAINT : + disp->paint(); + cimg_lock_display(); + if (disp->_is_cursor_visible) while (ShowCursor(TRUE)<0); else while (ShowCursor(FALSE_WIN)>=0); + cimg_unlock_display(); + break; + case WM_ERASEBKGND : + // return 0; + break; + case WM_KEYDOWN : + disp->set_key((unsigned int)wParam); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_KEYUP : + disp->set_key((unsigned int)wParam,false); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_MOUSEMOVE : { + while (PeekMessage(&st_msg,window,WM_MOUSEMOVE,WM_MOUSEMOVE,PM_REMOVE)) {} + disp->_mouse_x = LOWORD(lParam); + disp->_mouse_y = HIWORD(lParam); +#if (_WIN32_WINNT>=0x0400) && !defined(NOTRACKMOUSEEVENT) + if (!disp->_is_mouse_tracked) { + TRACKMOUSEEVENT tme; + tme.cbSize = sizeof(TRACKMOUSEEVENT); + tme.dwFlags = TME_LEAVE; + tme.hwndTrack = disp->_window; + if (TrackMouseEvent(&tme)) disp->_is_mouse_tracked = true; + } +#endif + if (disp->_mouse_x<0 || disp->_mouse_y<0 || disp->_mouse_x>=disp->width() || disp->_mouse_y>=disp->height()) + disp->_mouse_x = disp->_mouse_y = -1; + disp->_is_event = true; + SetEvent(cimg::Win32_attr().wait_event); + cimg_lock_display(); + if (disp->_is_cursor_visible) while (ShowCursor(TRUE)<0); else while (ShowCursor(FALSE_WIN)>=0); + cimg_unlock_display(); + } break; + case WM_MOUSELEAVE : { + disp->_mouse_x = disp->_mouse_y = -1; + disp->_is_mouse_tracked = false; + cimg_lock_display(); + while (ShowCursor(TRUE)<0) {} + cimg_unlock_display(); + } break; + case WM_LBUTTONDOWN : + disp->set_button(1); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_RBUTTONDOWN : + disp->set_button(2); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_MBUTTONDOWN : + disp->set_button(3); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_LBUTTONUP : + disp->set_button(1,false); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_RBUTTONUP : + disp->set_button(2,false); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_MBUTTONUP : + disp->set_button(3,false); + SetEvent(cimg::Win32_attr().wait_event); + break; + case 0x020A : // WM_MOUSEWHEEL: + disp->set_wheel((int)((short)HIWORD(wParam))/120); + SetEvent(cimg::Win32_attr().wait_event); + } + return DefWindowProc(window,msg,wParam,lParam); + } + + static DWORD WINAPI _events_thread(void* arg) { + CImgDisplay *const disp = (CImgDisplay*)(((void**)arg)[0]); + const char *const title = (const char*)(((void**)arg)[1]); + MSG msg; + delete[] (void**)arg; + disp->_bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + disp->_bmi.bmiHeader.biWidth = disp->width(); + disp->_bmi.bmiHeader.biHeight = -disp->height(); + disp->_bmi.bmiHeader.biPlanes = 1; + disp->_bmi.bmiHeader.biBitCount = 32; + disp->_bmi.bmiHeader.biCompression = BI_RGB; + disp->_bmi.bmiHeader.biSizeImage = 0; + disp->_bmi.bmiHeader.biXPelsPerMeter = 1; + disp->_bmi.bmiHeader.biYPelsPerMeter = 1; + disp->_bmi.bmiHeader.biClrUsed = 0; + disp->_bmi.bmiHeader.biClrImportant = 0; + disp->_data = new unsigned int[(size_t)disp->_width*disp->_height]; + if (!disp->_is_fullscreen) { // Normal window + RECT rect; + rect.left = rect.top = 0; rect.right = (LONG)disp->_width - 1; rect.bottom = (LONG)disp->_height - 1; + AdjustWindowRect(&rect,WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,false); + const int + border1 = (int)((rect.right - rect.left + 1 - disp->_width)/2), + border2 = (int)(rect.bottom - rect.top + 1 - disp->_height - border1), + ww = disp->_width + 2*border1, + wh = disp->_height + border1 + border2, + sw = CImgDisplay::screen_width(), + sh = CImgDisplay::screen_height(); + int + wx = (int)cimg::round(cimg::rand(0,sw - ww -1)), + wy = (int)cimg::round(cimg::rand(64,sh - wh - 65)); + if (wx + ww>=sw) wx = sw - ww; + if (wy + wh>=sh) wy = sh - wh; + if (wx<0) wx = 0; + if (wy<0) wy = 0; + disp->_window = CreateWindowA("MDICLIENT",title?title:" ", + WS_OVERLAPPEDWINDOW | (disp->_is_closed?0:WS_VISIBLE), + wx,wy,ww,wh,0,0,0,&(disp->_ccs)); + if (!disp->_is_closed) { + GetWindowRect(disp->_window,&rect); + disp->_window_x = rect.left; + disp->_window_y = rect.top; + } else disp->_window_x = disp->_window_y = cimg::type::min(); + } else { // Fullscreen window + const unsigned int + sx = (unsigned int)screen_width(), + sy = (unsigned int)screen_height(); + disp->_window = CreateWindowA("MDICLIENT",title?title:" ", + WS_POPUP | (disp->_is_closed?0:WS_VISIBLE), + (sx - disp->_width)/2, + (sy - disp->_height)/2, + disp->_width,disp->_height,0,0,0,&(disp->_ccs)); + disp->_window_x = disp->_window_y = 0; + } + SetForegroundWindow(disp->_window); + disp->_hdc = GetDC(disp->_window); + disp->_window_width = disp->_width; + disp->_window_height = disp->_height; + disp->flush(); +#ifdef _WIN64 + SetWindowLongPtr(disp->_window,GWLP_USERDATA,(LONG_PTR)disp); + SetWindowLongPtr(disp->_window,GWLP_WNDPROC,(LONG_PTR)_handle_events); +#else + SetWindowLong(disp->_window,GWL_USERDATA,(LONG)disp); + SetWindowLong(disp->_window,GWL_WNDPROC,(LONG)_handle_events); +#endif + SetEvent(disp->_is_created); + while (GetMessage(&msg,0,0,0)) DispatchMessage(&msg); + return 0; + } + + CImgDisplay& _update_window_pos() { + if (_is_closed) _window_x = _window_y = cimg::type::min(); + else { + RECT rect; + rect.left = rect.top = 0; rect.right = (LONG)_width - 1; rect.bottom = (LONG)_height - 1; + AdjustWindowRect(&rect,WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,false); + GetWindowRect(_window,&rect); + _window_x = rect.left; + _window_y = rect.top; + } + return *this; + } + + void _init_fullscreen() { + _background_window = 0; + if (!_is_fullscreen || _is_closed) _curr_mode.dmSize = 0; + else { + DEVMODE mode; + unsigned int imode = 0, ibest = 0, bestbpp = 0, bw = ~0U, bh = ~0U; + for (mode.dmSize = sizeof(DEVMODE), mode.dmDriverExtra = 0; EnumDisplaySettings(0,imode,&mode); ++imode) { + const unsigned int nw = mode.dmPelsWidth, nh = mode.dmPelsHeight; + if (nw>=_width && nh>=_height && mode.dmBitsPerPel>=bestbpp && nw<=bw && nh<=bh) { + bestbpp = mode.dmBitsPerPel; + ibest = imode; + bw = nw; bh = nh; + } + } + if (bestbpp) { + _curr_mode.dmSize = sizeof(DEVMODE); _curr_mode.dmDriverExtra = 0; + EnumDisplaySettings(0,ENUM_CURRENT_SETTINGS,&_curr_mode); + EnumDisplaySettings(0,ibest,&mode); + ChangeDisplaySettings(&mode,0); + } else _curr_mode.dmSize = 0; + + const unsigned int + sx = (unsigned int)screen_width(), + sy = (unsigned int)screen_height(); + if (sx!=_width || sy!=_height) { + CLIENTCREATESTRUCT background_ccs = { 0,0 }; + _background_window = CreateWindowA("MDICLIENT","",WS_POPUP | WS_VISIBLE, 0,0,sx,sy,0,0,0,&background_ccs); + SetForegroundWindow(_background_window); + } + } + } + + void _desinit_fullscreen() { + if (!_is_fullscreen) return; + if (_background_window) DestroyWindow(_background_window); + _background_window = 0; + if (_curr_mode.dmSize) ChangeDisplaySettings(&_curr_mode,0); + _is_fullscreen = false; + } + + CImgDisplay& _assign(const unsigned int dimw, const unsigned int dimh, const char *const ptitle=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + + // Allocate space for window title + const char *const nptitle = ptitle?ptitle:""; + const unsigned int s = (unsigned int)std::strlen(nptitle) + 1; + char *const tmp_title = s?new char[s]:0; + if (s) std::memcpy(tmp_title,nptitle,s*sizeof(char)); + + // Destroy previous window if existing + if (!is_empty()) assign(); + + // Set display variables + _width = std::min(dimw,(unsigned int)screen_width()); + _height = std::min(dimh,(unsigned int)screen_height()); + _normalization = normalization_type<4?normalization_type:3; + _is_fullscreen = fullscreen_flag; + _window_x = _window_y = cimg::type::min(); + _is_closed = closed_flag; + _is_cursor_visible = true; + _is_mouse_tracked = false; + _title = tmp_title; + flush(); + if (_is_fullscreen) _init_fullscreen(); + + // Create event thread + void *const arg = (void*)(new void*[2]); + ((void**)arg)[0] = (void*)this; + ((void**)arg)[1] = (void*)_title; + _mutex = CreateMutex(0,FALSE_WIN,0); + _is_created = CreateEvent(0,FALSE_WIN,FALSE_WIN,0); + _thread = CreateThread(0,0,_events_thread,arg,0,0); + WaitForSingleObject(_is_created,INFINITE); + return *this; + } + + CImgDisplay& assign() { + if (is_empty()) return flush(); + DestroyWindow(_window); + TerminateThread(_thread,0); + delete[] _data; + delete[] _title; + _data = 0; + _title = 0; + if (_is_fullscreen) _desinit_fullscreen(); + _width = _height = _normalization = _window_width = _window_height = 0; + _window_x = _window_y = cimg::type::min(); + _is_fullscreen = false; + _is_closed = true; + _min = _max = 0; + _title = 0; + flush(); + return *this; + } + + CImgDisplay& assign(const unsigned int dimw, const unsigned int dimh, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!dimw || !dimh) return assign(); + _assign(dimw,dimh,title,normalization_type,fullscreen_flag,closed_flag); + _min = _max = 0; + std::memset(_data,0,sizeof(unsigned int)*_width*_height); + return paint(); + } + + template + CImgDisplay& assign(const CImg& img, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!img) return assign(); + CImg tmp; + const CImg& nimg = (img._depth==1)?img:(tmp=img.get_projections2d((img._width - 1)/2, + (img._height - 1)/2, + (img._depth - 1)/2)); + _assign(nimg._width,nimg._height,title,normalization_type,fullscreen_flag,closed_flag); + if (_normalization==2) _min = (float)nimg.min_max(_max); + return display(nimg); + } + + template + CImgDisplay& assign(const CImgList& list, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!list) return assign(); + CImg tmp; + const CImg img = list>'x', &nimg = (img._depth==1)?img:(tmp=img.get_projections2d((img._width - 1)/2, + (img._height - 1)/2, + (img._depth - 1)/2)); + _assign(nimg._width,nimg._height,title,normalization_type,fullscreen_flag,closed_flag); + if (_normalization==2) _min = (float)nimg.min_max(_max); + return display(nimg); + } + + CImgDisplay& assign(const CImgDisplay& disp) { + if (!disp) return assign(); + _assign(disp._width,disp._height,disp._title,disp._normalization,disp._is_fullscreen,disp._is_closed); + std::memcpy(_data,disp._data,sizeof(unsigned int)*_width*_height); + return paint(); + } + + CImgDisplay& resize(const int nwidth, const int nheight, const bool force_redraw=true) { + if (!nwidth || !nheight || (is_empty() && (nwidth<0 || nheight<0))) return assign(); + if (is_empty()) return assign(nwidth,nheight); + const unsigned int + tmpdimx = (nwidth>0)?nwidth:(-nwidth*_width/100), + tmpdimy = (nheight>0)?nheight:(-nheight*_height/100), + dimx = tmpdimx?tmpdimx:1, + dimy = tmpdimy?tmpdimy:1; + if (_width!=dimx || _height!=dimy || _window_width!=dimx || _window_height!=dimy) { + if (_window_width!=dimx || _window_height!=dimy) { + RECT rect; rect.left = rect.top = 0; rect.right = (LONG)dimx - 1; rect.bottom = (LONG)dimy - 1; + AdjustWindowRect(&rect,WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,false); + const int cwidth = rect.right - rect.left + 1, cheight = rect.bottom - rect.top + 1; + SetWindowPos(_window,0,0,0,cwidth,cheight,SWP_NOMOVE | SWP_NOZORDER | SWP_NOCOPYBITS); + } + if (_width!=dimx || _height!=dimy) { + unsigned int *const ndata = new unsigned int[dimx*dimy]; + if (force_redraw) _render_resize(_data,_width,_height,ndata,dimx,dimy); + else std::memset(ndata,0x80,sizeof(unsigned int)*dimx*dimy); + delete[] _data; + _data = ndata; + _bmi.bmiHeader.biWidth = (LONG)dimx; + _bmi.bmiHeader.biHeight = -(int)dimy; + _width = dimx; + _height = dimy; + } + _window_width = dimx; _window_height = dimy; + show(); + } + _is_resized = false; + if (_is_fullscreen) move((screen_width() - width())/2,(screen_height() - height())/2); + if (force_redraw) return paint(); + return *this; + } + + CImgDisplay& toggle_fullscreen(const bool force_redraw=true) { + if (is_empty()) return *this; + if (force_redraw) { + const cimg_ulong buf_size = (cimg_ulong)_width*_height*4; + void *odata = std::malloc(buf_size); + if (odata) { + std::memcpy(odata,_data,buf_size); + assign(_width,_height,_title,_normalization,!_is_fullscreen,false); + std::memcpy(_data,odata,buf_size); + std::free(odata); + } + return paint(); + } + return assign(_width,_height,_title,_normalization,!_is_fullscreen,false); + } + + CImgDisplay& show() { + if (is_empty() || !_is_closed) return *this; + _is_closed = false; + if (_is_fullscreen) _init_fullscreen(); + ShowWindow(_window,SW_SHOW); + _update_window_pos(); + return paint(); + } + + CImgDisplay& close() { + if (is_empty() || _is_closed) return *this; + _is_closed = true; + if (_is_fullscreen) _desinit_fullscreen(); + ShowWindow(_window,SW_HIDE); + _window_x = _window_y = cimg::type::min(); + return *this; + } + + CImgDisplay& move(const int posx, const int posy) { + if (is_empty()) return *this; + if (_window_x!=posx || _window_y!=posy) { + SetWindowPos(_window,0,posx,posy,0,0,SWP_NOSIZE | SWP_NOZORDER); + _window_x = posx; + _window_y = posy; + } + show(); + _is_moved = false; + return *this; + } + + CImgDisplay& show_mouse() { + if (is_empty()) return *this; + _is_cursor_visible = true; + return *this; + } + + CImgDisplay& hide_mouse() { + if (is_empty()) return *this; + _is_cursor_visible = false; + return *this; + } + + CImgDisplay& set_mouse(const int posx, const int posy) { + if (is_empty() || _is_closed || posx<0 || posy<0) return *this; + if (!_is_closed) { + _update_window_pos(); + const int res = (int)SetCursorPos(_window_x + posx,_window_y + posy); + if (res) { _mouse_x = posx; _mouse_y = posy; } + } + return *this; + } + + CImgDisplay& set_title(const char *const format, ...) { + if (is_empty()) return *this; + char *const tmp = new char[1024]; + va_list ap; + va_start(ap, format); + cimg_vsnprintf(tmp,1024,format,ap); + va_end(ap); + if (!std::strcmp(_title,tmp)) { delete[] tmp; return *this; } + delete[] _title; + const unsigned int s = (unsigned int)std::strlen(tmp) + 1; + _title = new char[s]; + std::memcpy(_title,tmp,s*sizeof(char)); + SetWindowTextA(_window, tmp); + delete[] tmp; + return *this; + } + + template + CImgDisplay& display(const CImg& img) { + if (!img) + throw CImgArgumentException(_cimgdisplay_instance + "display(): Empty specified image.", + cimgdisplay_instance); + if (is_empty()) return assign(img); + return render(img).paint(); + } + + CImgDisplay& paint() { + if (_is_closed) return *this; + WaitForSingleObject(_mutex,INFINITE); + SetDIBitsToDevice(_hdc,0,0,_width,_height,0,0,0,_height,_data,&_bmi,DIB_RGB_COLORS); + ReleaseMutex(_mutex); + return *this; + } + + template + CImgDisplay& render(const CImg& img) { + if (!img) + throw CImgArgumentException(_cimgdisplay_instance + "render(): Empty specified image.", + cimgdisplay_instance); + + if (is_empty()) return *this; + if (img._depth!=1) return render(img.get_projections2d((img._width - 1)/2,(img._height - 1)/2, + (img._depth - 1)/2)); + + const T + *data1 = img._data, + *data2 = (img._spectrum>=2)?img.data(0,0,0,1):data1, + *data3 = (img._spectrum>=3)?img.data(0,0,0,2):data1; + + WaitForSingleObject(_mutex,INFINITE); + unsigned int + *const ndata = (img._width==_width && img._height==_height)?_data: + new unsigned int[(size_t)img._width*img._height], + *ptrd = ndata; + + if (!_normalization || (_normalization==3 && cimg::type::string()==cimg::type::string())) { + _min = _max = 0; + switch (img._spectrum) { + case 1 : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)*(data1++); + *(ptrd++) = (unsigned int)((val<<16) | (val<<8) | val); + } + } break; + case 2 : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)*(data1++), + G = (unsigned char)*(data2++); + *(ptrd++) = (unsigned int)((R<<16) | (G<<8)); + } + } break; + default : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)*(data1++), + G = (unsigned char)*(data2++), + B = (unsigned char)*(data3++); + *(ptrd++) = (unsigned int)((R<<16) | (G<<8) | B); + } + } + } + } else { + if (_normalization==3) { + if (cimg::type::is_float()) _min = (float)img.min_max(_max); + else { + _min = (float)cimg::type::min(); + _max = (float)cimg::type::max(); + } + } else if ((_min>_max) || _normalization==1) _min = (float)img.min_max(_max); + const float delta = _max - _min, mm = 255/(delta?delta:1.f); + switch (img._spectrum) { + case 1 : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm); + *(ptrd++) = (unsigned int)((val<<16) | (val<<8) | val); + } + } break; + case 2 : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)((*(data1++) - _min)*mm), + G = (unsigned char)((*(data2++) - _min)*mm); + *(ptrd++) = (unsigned int)((R<<16) | (G<<8)); + } + } break; + default : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)((*(data1++) - _min)*mm), + G = (unsigned char)((*(data2++) - _min)*mm), + B = (unsigned char)((*(data3++) - _min)*mm); + *(ptrd++) = (unsigned int)((R<<16) | (G<<8) | B); + } + } + } + } + if (ndata!=_data) { _render_resize(ndata,img._width,img._height,_data,_width,_height); delete[] ndata; } + ReleaseMutex(_mutex); + return *this; + } + + template + static void screenshot(const int x0, const int y0, const int x1, const int y1, CImg& img) { + img.assign(); + HDC hScreen = GetDC(GetDesktopWindow()); + if (hScreen) { + const int + width = GetDeviceCaps(hScreen,HORZRES), + height = GetDeviceCaps(hScreen,VERTRES); + int _x0 = x0, _y0 = y0, _x1 = x1, _y1 = y1; + if (_x0>_x1) cimg::swap(_x0,_x1); + if (_y0>_y1) cimg::swap(_y0,_y1); + if (_x1>=0 && _x0=0 && _y0 + const CImgDisplay& snapshot(CImg& img) const { + if (is_empty()) { img.assign(); return *this; } + const unsigned int *ptrs = _data; + img.assign(_width,_height,1,3); + T + *data1 = img.data(0,0,0,0), + *data2 = img.data(0,0,0,1), + *data3 = img.data(0,0,0,2); + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned int val = *(ptrs++); + *(data1++) = (T)(unsigned char)(val>>16); + *(data2++) = (T)(unsigned char)((val>>8)&0xFF); + *(data3++) = (T)(unsigned char)(val&0xFF); + } + return *this; + } +#endif + + //@} + }; // struct CImgDisplay { ... + + /* + #-------------------------------------- + # + # + # + # Definition of the CImg structure + # + # + # + #-------------------------------------- + */ + + //! Class representing an image (up to 4 dimensions wide), each pixel being of type \c T. + /** + This is the main class of the %CImg Library. It declares and constructs + an image, allows access to its pixel values, and is able to perform various image operations. + + \par Image representation + + A %CImg image is defined as an instance of the container \c CImg, which contains a regular grid of pixels, + each pixel value being of type \c T. The image grid can have up to 4 dimensions: width, height, depth + and number of channels. + Usually, the three first dimensions are used to describe spatial coordinates (x,y,z), + while the number of channels is rather used as a vector-valued dimension + (it may describe the R,G,B color channels for instance). + If you need a fifth dimension, you can use image lists \c CImgList rather than simple images \c CImg. + + Thus, the \c CImg class is able to represent volumetric images of vector-valued pixels, + as well as images with less dimensions (1D scalar signal, 2D color images, ...). + Most member functions of the class CImg<\c T> are designed to handle this maximum case of (3+1) dimensions. + + Concerning the pixel value type \c T: + fully supported template types are the basic C++ types: unsigned char, char, short, unsigned int, int, + unsigned long, long, float, double, ... . + Typically, fast image display can be done using CImg images, + while complex image processing algorithms may be rather coded using CImg or CImg + images that have floating-point pixel values. The default value for the template T is \c float. + Using your own template types may be possible. However, you will certainly have to define the complete set + of arithmetic and logical operators for your class. + + \par Image structure + + The \c CImg structure contains \e six fields: + - \c _width defines the number of \a columns of the image (size along the X-axis). + - \c _height defines the number of \a rows of the image (size along the Y-axis). + - \c _depth defines the number of \a slices of the image (size along the Z-axis). + - \c _spectrum defines the number of \a channels of the image (size along the C-axis). + - \c _data defines a \a pointer to the \a pixel \a data (of type \c T). + - \c _is_shared is a boolean that tells if the memory buffer \c data is shared with + another image. + + You can access these fields publicly although it is recommended to use the dedicated functions + width(), height(), depth(), spectrum() and ptr() to do so. + Image dimensions are not limited to a specific range (as long as you got enough available memory). + A value of \e 1 usually means that the corresponding dimension is \a flat. + If one of the dimensions is \e 0, or if the data pointer is null, the image is considered as \e empty. + Empty images should not contain any pixel data and thus, will not be processed by CImg member functions + (a CImgInstanceException will be thrown instead). + Pixel data are stored in memory, in a non interlaced mode (See \ref cimg_storage). + + \par Image declaration and construction + + Declaring an image can be done by using one of the several available constructors. + Here is a list of the most used: + + - Construct images from arbitrary dimensions: + - CImg img; declares an empty image. + - CImg img(128,128); declares a 128x128 greyscale image with + \c unsigned \c char pixel values. + - CImg img(3,3); declares a 3x3 matrix with \c double coefficients. + - CImg img(256,256,1,3); declares a 256x256x1x3 (color) image + (colors are stored as an image with three channels). + - CImg img(128,128,128); declares a 128x128x128 volumetric and greyscale image + (with \c double pixel values). + - CImg<> img(128,128,128,3); declares a 128x128x128 volumetric color image + (with \c float pixels, which is the default value of the template parameter \c T). + - \b Note: images pixels are not automatically initialized to 0. You may use the function \c fill() to + do it, or use the specific constructor taking 5 parameters like this: + CImg<> img(128,128,128,3,0); declares a 128x128x128 volumetric color image with all pixel values to 0. + + - Construct images from filenames: + - CImg img("image.jpg"); reads a JPEG color image from the file "image.jpg". + - CImg img("analyze.hdr"); reads a volumetric image (ANALYZE7.5 format) from the + file "analyze.hdr". + - \b Note: You need to install ImageMagick + to be able to read common compressed image formats (JPG,PNG, ...) (See \ref cimg_files_io). + + - Construct images from C-style arrays: + - CImg img(data_buffer,256,256); constructs a 256x256 greyscale image from a \c int* buffer + \c data_buffer (of size 256x256=65536). + - CImg img(data_buffer,256,256,1,3); constructs a 256x256 color image + from a \c unsigned \c char* buffer \c data_buffer (where R,G,B channels follow each others). + + The complete list of constructors can be found here. + + \par Most useful functions + + The \c CImg class contains a lot of functions that operates on images. + Some of the most useful are: + + - operator()(): Read or write pixel values. + - display(): displays the image in a new window. + **/ + template + struct CImg { + + unsigned int _width, _height, _depth, _spectrum; + bool _is_shared; + T *_data; + + //! Simple iterator type, to loop through each pixel value of an image instance. + /** + \note + - The \c CImg::iterator type is defined to be a T*. + - You will seldom have to use iterators in %CImg, most classical operations + being achieved (often in a faster way) using methods of \c CImg. + \par Example + \code + CImg img("reference.jpg"); // Load image from file + // Set all pixels to '0', with a CImg iterator. + for (CImg::iterator it = img.begin(), it::const_iterator type is defined to be a \c const \c T*. + - You will seldom have to use iterators in %CImg, most classical operations + being achieved (often in a faster way) using methods of \c CImg. + \par Example + \code + const CImg img("reference.jpg"); // Load image from file + float sum = 0; + // Compute sum of all pixel values, with a CImg iterator. + for (CImg::iterator it = img.begin(), it::value_type type of a \c CImg is defined to be a \c T. + - \c CImg::value_type is actually not used in %CImg methods. It has been mainly defined for + compatibility with STL naming conventions. + **/ + typedef T value_type; + + // Define common types related to template type T. + typedef typename cimg::superset::type Tbool; + typedef typename cimg::superset::type Tuchar; + typedef typename cimg::superset::type Tchar; + typedef typename cimg::superset::type Tushort; + typedef typename cimg::superset::type Tshort; + typedef typename cimg::superset::type Tuint; + typedef typename cimg::superset::type Tint; + typedef typename cimg::superset::type Tulong; + typedef typename cimg::superset::type Tlong; + typedef typename cimg::superset::type Tfloat; + typedef typename cimg::superset::type Tdouble; + typedef typename cimg::last::type boolT; + typedef typename cimg::last::type ucharT; + typedef typename cimg::last::type charT; + typedef typename cimg::last::type ushortT; + typedef typename cimg::last::type shortT; + typedef typename cimg::last::type uintT; + typedef typename cimg::last::type intT; + typedef typename cimg::last::type ulongT; + typedef typename cimg::last::type longT; + typedef typename cimg::last::type uint64T; + typedef typename cimg::last::type int64T; + typedef typename cimg::last::type floatT; + typedef typename cimg::last::type doubleT; + + // Return 'dx*dy*dz*dc' as a 'size_t' and check no overflow occurs. + static size_t safe_size(const unsigned int dx, const unsigned int dy, + const unsigned int dz, const unsigned int dc) { + if (!(dx && dy && dz && dc)) return 0; + size_t siz = (size_t)dx, osiz = siz; + if ((dy==1 || (siz*=dy)>osiz) && + ((osiz = siz), dz==1 || (siz*=dz)>osiz) && + ((osiz = siz), dc==1 || (siz*=dc)>osiz) && + ((osiz = siz), sizeof(T)==1 || (siz*sizeof(T))>osiz)) return siz; + throw CImgArgumentException("CImg<%s>::safe_size(): Specified size (%u,%u,%u,%u) overflows 'size_t'.", + pixel_type(),dx,dy,dz,dc); + } + + //@} + //--------------------------- + // + //! \name Plugins + //@{ + //--------------------------- +#ifdef cimg_plugin +#include cimg_plugin +#endif +#ifdef cimg_plugin1 +#include cimg_plugin1 +#endif +#ifdef cimg_plugin2 +#include cimg_plugin2 +#endif +#ifdef cimg_plugin3 +#include cimg_plugin3 +#endif +#ifdef cimg_plugin4 +#include cimg_plugin4 +#endif +#ifdef cimg_plugin5 +#include cimg_plugin5 +#endif +#ifdef cimg_plugin6 +#include cimg_plugin6 +#endif +#ifdef cimg_plugin7 +#include cimg_plugin7 +#endif +#ifdef cimg_plugin8 +#include cimg_plugin8 +#endif + + //@} + //--------------------------------------------------------- + // + //! \name Constructors / Destructor / Instance Management + //@{ + //--------------------------------------------------------- + + //! Destroy image. + /** + \note + - The pixel buffer data() is deallocated if necessary, e.g. for non-empty and non-shared image instances. + - Destroying an empty or shared image does nothing actually. + \warning + - When destroying a non-shared image, make sure that you will \e not operate on a remaining shared image + that shares its buffer with the destroyed instance, in order to avoid further invalid memory access + (to a deallocated buffer). + **/ + ~CImg() { + if (!_is_shared) delete[] _data; + } + + //! Construct empty image. + /** + \note + - An empty image has no pixel data and all of its dimensions width(), height(), depth(), spectrum() + are set to \c 0, as well as its pixel buffer pointer data(). + - An empty image may be re-assigned afterwards, e.g. with the family of + assign(unsigned int,unsigned int,unsigned int,unsigned int) methods, + or by operator=(const CImg&). In all cases, the type of pixels stays \c T. + - An empty image is never shared. + \par Example + \code + CImg img1, img2; // Construct two empty images + img1.assign(256,256,1,3); // Re-assign 'img1' to be a 256x256x1x3 (color) image + img2 = img1.get_rand(0,255); // Re-assign 'img2' to be a random-valued version of 'img1' + img2.assign(); // Re-assign 'img2' to be an empty image again + \endcode + **/ + CImg():_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) {} + + //! Construct image with specified size. + /** + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \note + - It is able to create only \e non-shared images, and allocates thus a pixel buffer data() + for each constructed image instance. + - Setting one dimension \c size_x,\c size_y,\c size_z or \c size_c to \c 0 leads to the construction of + an \e empty image. + - A \c CImgInstanceException is thrown when the pixel buffer cannot be allocated + (e.g. when requested size is too big for available memory). + \warning + - The allocated pixel buffer is \e not filled with a default value, and is likely to contain garbage values. + In order to initialize pixel values during construction (e.g. with \c 0), use constructor + CImg(unsigned int,unsigned int,unsigned int,unsigned int,T) instead. + \par Example + \code + CImg img1(256,256,1,3); // Construct a 256x256x1x3 (color) image, filled with garbage values + CImg img2(256,256,1,3,0); // Construct a 256x256x1x3 (color) image, filled with value '0' + \endcode + **/ + explicit CImg(const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1): + _is_shared(false) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (siz) { + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Construct image with specified size and initialize pixel values. + /** + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param value Initialization value. + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), + but it also fills the pixel buffer with the specified \c value. + \warning + - It cannot be used to construct a vector-valued image and initialize it with \e vector-valued pixels + (e.g. RGB vector, for color images). + For this task, you may use fillC() after construction. + **/ + CImg(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, const T& value): + _is_shared(false) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (siz) { + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + fill(value); + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Construct image with specified size and initialize pixel values from a sequence of integers. + /** + Construct a new image instance of size \c size_x x \c size_y x \c size_z x \c size_c, + with pixels of type \c T, and initialize pixel + values from the specified sequence of integers \c value0,\c value1,\c ... + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param value0 First value of the initialization sequence (must be an \e integer). + \param value1 Second value of the initialization sequence (must be an \e integer). + \param ... + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it also fills + the pixel buffer with a sequence of specified integer values. + \warning + - You must specify \e exactly \c size_x*\c size_y*\c size_z*\c size_c integers in the initialization sequence. + Otherwise, the constructor may crash or fill your image pixels with garbage. + \par Example + \code + const CImg img(2,2,1,3, // Construct a 2x2 color (RGB) image + 0,255,0,255, // Set the 4 values for the red component + 0,0,255,255, // Set the 4 values for the green component + 64,64,64,64); // Set the 4 values for the blue component + img.resize(150,150).display(); + \endcode + \image html ref_constructor1.jpg + **/ + CImg(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, + const int value0, const int value1, ...): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { +#define _CImg_stdarg(img,a0,a1,N,t) { \ + size_t _siz = (size_t)N; \ + if (_siz--) { \ + va_list ap; \ + va_start(ap,a1); \ + T *ptrd = (img)._data; \ + *(ptrd++) = (T)a0; \ + if (_siz--) { \ + *(ptrd++) = (T)a1; \ + for ( ; _siz; --_siz) *(ptrd++) = (T)va_arg(ap,t); \ + } \ + va_end(ap); \ + } \ + } + assign(size_x,size_y,size_z,size_c); + _CImg_stdarg(*this,value0,value1,safe_size(size_x,size_y,size_z,size_c),int); + } + +#if cimg_use_cpp11==1 + //! Construct image with specified size and initialize pixel values from an initializer list of integers. + /** + Construct a new image instance of size \c size_x x \c size_y x \c size_z x \c size_c, + with pixels of type \c T, and initialize pixel + values from the specified initializer list of integers { \c value0,\c value1,\c ... } + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param { value0, value1, ... } Initialization list + \param repeat_values Tells if the value filling process is repeated over the image. + + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it also fills + the pixel buffer with a sequence of specified integer values. + \par Example + \code + const CImg img(2,2,1,3, // Construct a 2x2 color (RGB) image + { 0,255,0,255, // Set the 4 values for the red component + 0,0,255,255, // Set the 4 values for the green component + 64,64,64,64 }); // Set the 4 values for the blue component + img.resize(150,150).display(); + \endcode + \image html ref_constructor1.jpg + **/ + template + CImg(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, + const std::initializer_list values, + const bool repeat_values=true): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { +#define _cimg_constructor_cpp11(repeat_values) \ + auto it = values.begin(); \ + size_t siz = size(); \ + if (repeat_values) for (T *ptrd = _data; siz--; ) { \ + *(ptrd++) = (T)(*(it++)); if (it==values.end()) it = values.begin(); } \ + else { siz = std::min(siz,values.size()); for (T *ptrd = _data; siz--; ) *(ptrd++) = (T)(*(it++)); } + assign(size_x,size_y,size_z,size_c); + _cimg_constructor_cpp11(repeat_values); + } + + template + CImg(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, + std::initializer_list values, + const bool repeat_values=true): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(size_x,size_y,size_z); + _cimg_constructor_cpp11(repeat_values); + } + + template + CImg(const unsigned int size_x, const unsigned int size_y, + std::initializer_list values, + const bool repeat_values=true): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(size_x,size_y); + _cimg_constructor_cpp11(repeat_values); + } + + template + CImg(const unsigned int size_x, + std::initializer_list values, + const bool repeat_values=true):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(size_x); + _cimg_constructor_cpp11(repeat_values); + } + + //! Construct single channel 1D image with pixel values and width obtained from an initializer list of integers. + /** + Construct a new image instance of size \c width x \c 1 x \c 1 x \c 1, + with pixels of type \c T, and initialize pixel + values from the specified initializer list of integers { \c value0,\c value1,\c ... }. Image width is + given by the size of the initializer list. + \param { value0, value1, ... } Initialization list + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int) with height=1, depth=1, and spectrum=1, + but it also fills the pixel buffer with a sequence of specified integer values. + \par Example + \code + const CImg img = {10,20,30,20,10 }; // Construct a 5x1 image with one channel, and set its pixel values + img.resize(150,150).display(); + \endcode + \image html ref_constructor1.jpg + **/ + template + CImg(const std::initializer_list values): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(values.size(),1,1,1); + auto it = values.begin(); + unsigned int siz = _width; + for (T *ptrd = _data; siz--; ) *(ptrd++) = (T)(*(it++)); + } + + template + CImg& operator=(std::initializer_list values) { + _cimg_constructor_cpp11(siz>values.size()); + return *this; + } +#endif + + //! Construct image with specified size and initialize pixel values from a sequence of doubles. + /** + Construct a new image instance of size \c size_x x \c size_y x \c size_z x \c size_c, with pixels of type \c T, + and initialize pixel values from the specified sequence of doubles \c value0,\c value1,\c ... + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param value0 First value of the initialization sequence (must be a \e double). + \param value1 Second value of the initialization sequence (must be a \e double). + \param ... + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int,int,int,...), but + takes a sequence of double values instead of integers. + \warning + - You must specify \e exactly \c dx*\c dy*\c dz*\c dc doubles in the initialization sequence. + Otherwise, the constructor may crash or fill your image with garbage. + For instance, the code below will probably crash on most platforms: + \code + const CImg img(2,2,1,1, 0.5,0.5,255,255); // FAIL: The two last arguments are 'int', not 'double'! + \endcode + **/ + CImg(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, + const double value0, const double value1, ...): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(size_x,size_y,size_z,size_c); + _CImg_stdarg(*this,value0,value1,safe_size(size_x,size_y,size_z,size_c),double); + } + + //! Construct image with specified size and initialize pixel values from a value string. + /** + Construct a new image instance of size \c size_x x \c size_y x \c size_z x \c size_c, with pixels of type \c T, + and initializes pixel values from the specified string \c values. + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param values Value string describing the way pixel values are set. + \param repeat_values Tells if the value filling process is repeated over the image. + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it also fills + the pixel buffer with values described in the value string \c values. + - Value string \c values may describe two different filling processes: + - Either \c values is a sequences of values assigned to the image pixels, as in "1,2,3,7,8,2". + In this case, set \c repeat_values to \c true to periodically fill the image with the value sequence. + - Either, \c values is a formula, as in "cos(x/10)*sin(y/20)". + In this case, parameter \c repeat_values is pointless. + - For both cases, specifying \c repeat_values is mandatory. + It disambiguates the possible overloading of constructor + CImg(unsigned int,unsigned int,unsigned int,unsigned int,T) with \c T being a const char*. + - A \c CImgArgumentException is thrown when an invalid value string \c values is specified. + \par Example + \code + const CImg img1(129,129,1,3,"0,64,128,192,255",true), // Construct image from a value sequence + img2(129,129,1,3,"if(c==0,255*abs(cos(x/10)),1.8*y)",false); // Construct image from a formula + (img1,img2).display(); + \endcode + \image html ref_constructor2.jpg + **/ + CImg(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, + const char *const values, const bool repeat_values):_is_shared(false) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (siz) { + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + fill(values,repeat_values); + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Construct image with specified size and initialize pixel values from a memory buffer. + /** + Construct a new image instance of size \c size_x x \c size_y x \c size_z x \c size_c, with pixels of type \c T, + and initializes pixel values from the specified \c t* memory buffer. + \param values Pointer to the input memory buffer. + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param is_shared Tells if input memory buffer must be shared by the current instance. + \note + - If \c is_shared is \c false, the image instance allocates its own pixel buffer, + and values from the specified input buffer are copied to the instance buffer. + If buffer types \c T and \c t are different, a regular static cast is performed during buffer copy. + - Otherwise, the image instance does \e not allocate a new buffer, and uses the input memory buffer as its + own pixel buffer. This case requires that types \c T and \c t are the same. Later, destroying such a shared + image will not deallocate the pixel buffer, this task being obviously charged to the initial buffer allocator. + - A \c CImgInstanceException is thrown when the pixel buffer cannot be allocated + (e.g. when requested size is too big for available memory). + \warning + - You must take care when operating on a shared image, since it may have an invalid pixel buffer pointer data() + (e.g. already deallocated). + \par Example + \code + unsigned char tab[256*256] = { 0 }; + CImg img1(tab,256,256,1,1,false), // Construct new non-shared image from buffer 'tab' + img2(tab,256,256,1,1,true); // Construct new shared-image from buffer 'tab' + tab[1024] = 255; // Here, 'img2' is indirectly modified, but not 'img1' + \endcode + **/ + template + CImg(const t *const values, const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, const bool is_shared=false):_is_shared(false) { + if (is_shared) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgArgumentException(_cimg_instance + "CImg(): Invalid construction request of a (%u,%u,%u,%u) shared instance " + "from a (%s*) buffer (pixel types are different).", + cimg_instance, + size_x,size_y,size_z,size_c,CImg::pixel_type()); + } + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (values && siz) { + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + + } + const t *ptrs = values; cimg_for(*this,ptrd,T) *ptrd = (T)*(ptrs++); + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Construct image with specified size and initialize pixel values from a memory buffer \specialization. + CImg(const T *const values, const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, const bool is_shared=false) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (values && siz) { + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; _is_shared = is_shared; + if (_is_shared) _data = const_cast(values); + else { + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + std::memcpy(_data,values,siz*sizeof(T)); + } + } else { _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; } + } + + //! Construct image from memory buffer with specified size and pixel ordering scheme. + template + CImg(const t *const values, const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const char *const axes_order):_data(0),_is_shared(false) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (values && siz) { + unsigned char s_code[4] = { 0,1,2,3 }, n_code[4] = { 0 }; + for (unsigned int l = 0; axes_order[l]; ++l) { + int c = cimg::lowercase(axes_order[l]); + if (l>=4 || (c!='x' && c!='y' && c!='z' && c!='c')) { *s_code = 4; break; } + else { ++n_code[c%=4]; s_code[l] = c; } + } + if (*axes_order && *s_code<4 && *n_code<=1 && n_code[1]<=1 && n_code[2]<=1 && n_code[3]<=1) { + const unsigned int code = (s_code[0]<<12) | (s_code[1]<<8) | (s_code[2]<<4) | (s_code[3]); + int s0 = 0, s1 = 0, s2 = 0, s3 = 0; + const char *inv_order = 0; + switch (code) { + case 0x0123 : inv_order = "xyzc"; s0 = size_x; s1 = size_y; s2 = size_z; s3 = size_c; break; // xyzc + case 0x0132 : inv_order = "xyzc"; s0 = size_x; s1 = size_y; s2 = size_c; s3 = size_z; break; // xycz + case 0x0213 : inv_order = "xzyc"; s0 = size_x; s1 = size_z; s2 = size_y; s3 = size_c; break; // xzyc + case 0x0231 : inv_order = "xcyz"; s0 = size_x; s1 = size_z; s2 = size_c; s3 = size_y; break; // xzcy + case 0x0312 : inv_order = "xzcy"; s0 = size_x; s1 = size_c; s2 = size_y; s3 = size_z; break; // xcyz + case 0x0321 : inv_order = "xczy"; s0 = size_x; s1 = size_c; s2 = size_z; s3 = size_y; break; // xczy + case 0x1023 : inv_order = "yxzc"; s0 = size_y; s1 = size_x; s2 = size_z; s3 = size_c; break; // yxzc + case 0x1032 : inv_order = "yxcz"; s0 = size_y; s1 = size_x; s2 = size_c; s3 = size_z; break; // yxcz + case 0x1203 : inv_order = "zxyc"; s0 = size_y; s1 = size_z; s2 = size_x; s3 = size_c; break; // yzxc + case 0x1230 : inv_order = "cxyz"; s0 = size_y; s1 = size_z; s2 = size_c; s3 = size_x; break; // yzcx + case 0x1302 : inv_order = "zxcy"; s0 = size_y; s1 = size_c; s2 = size_x; s3 = size_z; break; // ycxz + case 0x1320 : inv_order = "cxzy"; s0 = size_y; s1 = size_c; s2 = size_z; s3 = size_x; break; // yczx + case 0x2013 : inv_order = "yzxc"; s0 = size_z; s1 = size_x; s2 = size_y; s3 = size_c; break; // zxyc + case 0x2031 : inv_order = "ycxz"; s0 = size_z; s1 = size_x; s2 = size_c; s3 = size_y; break; // zxcy + case 0x2103 : inv_order = "zyxc"; s0 = size_z; s1 = size_y; s2 = size_x; s3 = size_c; break; // zyxc + case 0x2130 : inv_order = "cyxz"; s0 = size_z; s1 = size_y; s2 = size_c; s3 = size_x; break; // zycx + case 0x2301 : inv_order = "zcxy"; s0 = size_z; s1 = size_c; s2 = size_x; s3 = size_y; break; // zcxy + case 0x2310 : inv_order = "czxy"; s0 = size_z; s1 = size_c; s2 = size_y; s3 = size_x; break; // zcyx + case 0x3012 : inv_order = "yzcx"; s0 = size_c; s1 = size_x; s2 = size_y; s3 = size_z; break; // cxyz + case 0x3021 : inv_order = "yczx"; s0 = size_c; s1 = size_x; s2 = size_z; s3 = size_y; break; // cxzy + case 0x3102 : inv_order = "zycx"; s0 = size_c; s1 = size_y; s2 = size_x; s3 = size_z; break; // cyxz + case 0x3120 : inv_order = "cyzx"; s0 = size_c; s1 = size_y; s2 = size_z; s3 = size_x; break; // cyzx + case 0x3201 : inv_order = "zcyx"; s0 = size_c; s1 = size_z; s2 = size_x; s3 = size_y; break; // czxy + case 0x3210 : inv_order = "czyx"; s0 = size_c; s1 = size_z; s2 = size_y; s3 = size_x; break; // czyx + } + CImg(values,s0,s1,s2,s3,true).get_permute_axes(inv_order).move_to(*this); + } else { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgArgumentException(_cimg_instance + "CImg(): Invalid specified axes order '%s'.", + cimg_instance, + axes_order); + } + } else { _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; } + } + + //! Construct image from reading an image file. + /** + Construct a new image instance with pixels of type \c T, and initialize pixel values with the data read from + an image file. + \param filename Filename, as a C-string. + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it reads the image + dimensions and pixel values from the specified image file. + - The recognition of the image file format by %CImg higlhy depends on the tools installed on your system + and on the external libraries you used to link your code against. + - Considered pixel type \c T should better fit the file format specification, or data loss may occur during + file load (e.g. constructing a \c CImg from a float-valued image file). + - A \c CImgIOException is thrown when the specified \c filename cannot be read, or if the file format is not + recognized. + \par Example + \code + const CImg img("reference.jpg"); + img.display(); + \endcode + \image html ref_image.jpg + **/ + explicit CImg(const char *const filename):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(filename); + } + + //! Construct image copy. + /** + Construct a new image instance with pixels of type \c T, as a copy of an existing \c CImg instance. + \param img Input image to copy. + \note + - Constructed copy has the same size width() x height() x depth() x spectrum() and pixel values as the + input image \c img. + - If input image \c img is \e shared and if types \c T and \c t are the same, the constructed copy is also + \e shared, and shares its pixel buffer with \c img. + Modifying a pixel value in the constructed copy will thus also modifies it in the input image \c img. + This behavior is needful to allow functions to return shared images. + - Otherwise, the constructed copy allocates its own pixel buffer, and copies pixel values from the input + image \c img into its buffer. The copied pixel values may be eventually statically casted if types \c T and + \c t are different. + - Constructing a copy from an image \c img when types \c t and \c T are the same is significantly faster than + with different types. + - A \c CImgInstanceException is thrown when the pixel buffer cannot be allocated + (e.g. not enough available memory). + **/ + template + CImg(const CImg& img):_is_shared(false) { + const size_t siz = (size_t)img.size(); + if (img._data && siz) { + _width = img._width; _height = img._height; _depth = img._depth; _spectrum = img._spectrum; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*img._width*img._height*img._depth*img._spectrum), + img._width,img._height,img._depth,img._spectrum); + } + const t *ptrs = img._data; cimg_for(*this,ptrd,T) *ptrd = (T)*(ptrs++); + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Construct image copy \specialization. + CImg(const CImg& img) { + const size_t siz = (size_t)img.size(); + if (img._data && siz) { + _width = img._width; _height = img._height; _depth = img._depth; _spectrum = img._spectrum; + _is_shared = img._is_shared; + if (_is_shared) _data = const_cast(img._data); + else { + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*img._width*img._height*img._depth*img._spectrum), + img._width,img._height,img._depth,img._spectrum); + + } + std::memcpy(_data,img._data,siz*sizeof(T)); + } + } else { _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; } + } + + //! Advanced copy constructor. + /** + Construct a new image instance with pixels of type \c T, as a copy of an existing \c CImg instance, + while forcing the shared state of the constructed copy. + \param img Input image to copy. + \param is_shared Tells about the shared state of the constructed copy. + \note + - Similar to CImg(const CImg&), except that it allows to decide the shared state of + the constructed image, which does not depend anymore on the shared state of the input image \c img: + - If \c is_shared is \c true, the constructed copy will share its pixel buffer with the input image \c img. + For that case, the pixel types \c T and \c t \e must be the same. + - If \c is_shared is \c false, the constructed copy will allocate its own pixel buffer, whether the input + image \c img is shared or not. + - A \c CImgArgumentException is thrown when a shared copy is requested with different pixel types \c T and \c t. + **/ + template + CImg(const CImg& img, const bool is_shared):_is_shared(false) { + if (is_shared) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgArgumentException(_cimg_instance + "CImg(): Invalid construction request of a shared instance from a " + "CImg<%s> image (%u,%u,%u,%u,%p) (pixel types are different).", + cimg_instance, + CImg::pixel_type(),img._width,img._height,img._depth,img._spectrum,img._data); + } + const size_t siz = (size_t)img.size(); + if (img._data && siz) { + _width = img._width; _height = img._height; _depth = img._depth; _spectrum = img._spectrum; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*img._width*img._height*img._depth*img._spectrum), + img._width,img._height,img._depth,img._spectrum); + } + const t *ptrs = img._data; cimg_for(*this,ptrd,T) *ptrd = (T)*(ptrs++); + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Advanced copy constructor \specialization. + CImg(const CImg& img, const bool is_shared) { + const size_t siz = (size_t)img.size(); + if (img._data && siz) { + _width = img._width; _height = img._height; _depth = img._depth; _spectrum = img._spectrum; + _is_shared = is_shared; + if (_is_shared) _data = const_cast(img._data); + else { + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*img._width*img._height*img._depth*img._spectrum), + img._width,img._height,img._depth,img._spectrum); + } + std::memcpy(_data,img._data,siz*sizeof(T)); + } + } else { _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; } + } + + //! Construct image with dimensions borrowed from another image. + /** + Construct a new image instance with pixels of type \c T, and size get from some dimensions of an existing + \c CImg instance. + \param img Input image from which dimensions are borrowed. + \param dimensions C-string describing the image size along the X,Y,Z and C-dimensions. + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it takes the image dimensions + (\e not its pixel values) from an existing \c CImg instance. + - The allocated pixel buffer is \e not filled with a default value, and is likely to contain garbage values. + In order to initialize pixel values (e.g. with \c 0), use constructor CImg(const CImg&,const char*,T) + instead. + \par Example + \code + const CImg img1(256,128,1,3), // 'img1' is a 256x128x1x3 image + img2(img1,"xyzc"), // 'img2' is a 256x128x1x3 image + img3(img1,"y,x,z,c"), // 'img3' is a 128x256x1x3 image + img4(img1,"c,x,y,3",0), // 'img4' is a 3x128x256x3 image (with pixels initialized to '0') + \endcode + **/ + template + CImg(const CImg& img, const char *const dimensions): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(img,dimensions); + } + + //! Construct image with dimensions borrowed from another image and initialize pixel values. + /** + Construct a new image instance with pixels of type \c T, and size get from the dimensions of an existing + \c CImg instance, and set all pixel values to specified \c value. + \param img Input image from which dimensions are borrowed. + \param dimensions String describing the image size along the X,Y,Z and V-dimensions. + \param value Value used for initialization. + \note + - Similar to CImg(const CImg&,const char*), but it also fills the pixel buffer with the specified \c value. + **/ + template + CImg(const CImg& img, const char *const dimensions, const T& value): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(img,dimensions).fill(value); + } + + //! Construct image from a display window. + /** + Construct a new image instance with pixels of type \c T, as a snapshot of an existing \c CImgDisplay instance. + \param disp Input display window. + \note + - The width() and height() of the constructed image instance are the same as the specified \c CImgDisplay. + - The depth() and spectrum() of the constructed image instance are respectively set to \c 1 and \c 3 + (i.e. a 2D color image). + - The image pixels are read as 8-bits RGB values. + **/ + explicit CImg(const CImgDisplay &disp):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + disp.snapshot(*this); + } + + // Constructor and assignment operator for rvalue references (c++11). + // This avoids an additional image copy for methods returning new images. Can save RAM for big images ! +#if cimg_use_cpp11==1 + CImg(CImg&& img):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + swap(img); + } + + CImg& operator=(CImg&& img) { + if (_is_shared) return assign(img); + return img.swap(*this); + } +#endif + + //! Construct empty image \inplace. + /** + In-place version of the default constructor CImg(). It simply resets the instance to an empty image. + **/ + CImg& assign() { + if (!_is_shared) delete[] _data; + _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; + return *this; + } + + //! Construct image with specified size \inplace. + /** + In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int). + **/ + CImg& assign(const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (!siz) return assign(); + const size_t curr_siz = (size_t)size(); + if (siz!=curr_siz) { + if (_is_shared) + throw CImgArgumentException(_cimg_instance + "assign(): Invalid assignment request of shared instance from specified " + "image (%u,%u,%u,%u).", + cimg_instance, + size_x,size_y,size_z,size_c); + else { + delete[] _data; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "assign(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + } + } + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + return *this; + } + + //! Construct image with specified size and initialize pixel values \inplace. + /** + In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,T). + **/ + CImg& assign(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, const T& value) { + return assign(size_x,size_y,size_z,size_c).fill(value); + } + + //! Construct image with specified size and initialize pixel values from a sequence of integers \inplace. + /** + In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,int,int,...). + **/ + CImg& assign(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const int value0, const int value1, ...) { + assign(size_x,size_y,size_z,size_c); + _CImg_stdarg(*this,value0,value1,safe_size(size_x,size_y,size_z,size_c),int); + return *this; + } + + //! Construct image with specified size and initialize pixel values from a sequence of doubles \inplace. + /** + In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,double,double,...). + **/ + CImg& assign(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const double value0, const double value1, ...) { + assign(size_x,size_y,size_z,size_c); + _CImg_stdarg(*this,value0,value1,safe_size(size_x,size_y,size_z,size_c),double); + return *this; + } + + //! Construct image with specified size and initialize pixel values from a value string \inplace. + /** + In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,const char*,bool). + **/ + CImg& assign(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const char *const values, const bool repeat_values) { + return assign(size_x,size_y,size_z,size_c).fill(values,repeat_values); + } + + //! Construct image with specified size and initialize pixel values from a memory buffer \inplace. + /** + In-place version of the constructor CImg(const t*,unsigned int,unsigned int,unsigned int,unsigned int). + **/ + template + CImg& assign(const t *const values, const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (!values || !siz) return assign(); + assign(size_x,size_y,size_z,size_c); + const t *ptrs = values; cimg_for(*this,ptrd,T) *ptrd = (T)*(ptrs++); + return *this; + } + + //! Construct image with specified size and initialize pixel values from a memory buffer \specialization. + CImg& assign(const T *const values, const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (!values || !siz) return assign(); + const size_t curr_siz = (size_t)size(); + if (values==_data && siz==curr_siz) return assign(size_x,size_y,size_z,size_c); + if (_is_shared || values + siz<_data || values>=_data + size()) { + assign(size_x,size_y,size_z,size_c); + if (_is_shared) std::memmove((void*)_data,(void*)values,siz*sizeof(T)); + else std::memcpy((void*)_data,(void*)values,siz*sizeof(T)); + } else { + T *new_data = 0; + try { new_data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "assign(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + std::memcpy((void*)new_data,(void*)values,siz*sizeof(T)); + delete[] _data; _data = new_data; _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + } + return *this; + } + + //! Construct image with specified size and initialize pixel values from a memory buffer \overloading. + template + CImg& assign(const t *const values, const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, const bool is_shared) { + if (is_shared) + throw CImgArgumentException(_cimg_instance + "assign(): Invalid assignment request of shared instance from (%s*) buffer" + "(pixel types are different).", + cimg_instance, + CImg::pixel_type()); + return assign(values,size_x,size_y,size_z,size_c); + } + + //! Construct image with specified size and initialize pixel values from a memory buffer \overloading. + CImg& assign(const T *const values, const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, const bool is_shared) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (!values || !siz) return assign(); + if (!is_shared) { if (_is_shared) assign(); assign(values,size_x,size_y,size_z,size_c); } + else { + if (!_is_shared) { + if (values + siz<_data || values>=_data + size()) assign(); + else cimg::warn(_cimg_instance + "assign(): Shared image instance has overlapping memory.", + cimg_instance); + } + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; _is_shared = true; + _data = const_cast(values); + } + return *this; + } + + //! Construct image from memory buffer with specified size and pixel ordering scheme. + template + CImg& assign(const t *const values, const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const char *const axes_order) { + CImg(values,size_x,size_y,size_z,size_c,axes_order).move_to(*this); + } + + //! Construct image from reading an image file \inplace. + /** + In-place version of the constructor CImg(const char*). + **/ + CImg& assign(const char *const filename) { + return load(filename); + } + + //! Construct image copy \inplace. + /** + In-place version of the constructor CImg(const CImg&). + **/ + template + CImg& assign(const CImg& img) { + return assign(img._data,img._width,img._height,img._depth,img._spectrum); + } + + //! In-place version of the advanced copy constructor. + /** + In-place version of the constructor CImg(const CImg&,bool). + **/ + template + CImg& assign(const CImg& img, const bool is_shared) { + return assign(img._data,img._width,img._height,img._depth,img._spectrum,is_shared); + } + + //! Construct image with dimensions borrowed from another image \inplace. + /** + In-place version of the constructor CImg(const CImg&,const char*). + **/ + template + CImg& assign(const CImg& img, const char *const dimensions) { + if (!dimensions || !*dimensions) return assign(img._width,img._height,img._depth,img._spectrum); + unsigned int siz[4] = { 0,1,1,1 }, k = 0; + CImg item(256); + for (const char *s = dimensions; *s && k<4; ++k) { + if (cimg_sscanf(s,"%255[^0-9%xyzvwhdcXYZVWHDC]",item._data)>0) s+=std::strlen(item); + if (*s) { + unsigned int val = 0; char sep = 0; + if (cimg_sscanf(s,"%u%c",&val,&sep)>0) { + if (sep=='%') siz[k] = val*(k==0?_width:k==1?_height:k==2?_depth:_spectrum)/100; + else siz[k] = val; + while (*s>='0' && *s<='9') ++s; + if (sep=='%') ++s; + } else switch (cimg::lowercase(*s)) { + case 'x' : case 'w' : siz[k] = img._width; ++s; break; + case 'y' : case 'h' : siz[k] = img._height; ++s; break; + case 'z' : case 'd' : siz[k] = img._depth; ++s; break; + case 'c' : case 's' : siz[k] = img._spectrum; ++s; break; + default : + throw CImgArgumentException(_cimg_instance + "assign(): Invalid character '%c' detected in specified dimension string '%s'.", + cimg_instance, + *s,dimensions); + } + } + } + return assign(siz[0],siz[1],siz[2],siz[3]); + } + + //! Construct image with dimensions borrowed from another image and initialize pixel values \inplace. + /** + In-place version of the constructor CImg(const CImg&,const char*,T). + **/ + template + CImg& assign(const CImg& img, const char *const dimensions, const T& value) { + return assign(img,dimensions).fill(value); + } + + //! Construct image from a display window \inplace. + /** + In-place version of the constructor CImg(const CImgDisplay&). + **/ + CImg& assign(const CImgDisplay &disp) { + disp.snapshot(*this); + return *this; + } + + //! Construct empty image \inplace. + /** + Equivalent to assign(). + \note + - It has been defined for compatibility with STL naming conventions. + **/ + CImg& clear() { + return assign(); + } + + //! Transfer content of an image instance into another one. + /** + Transfer the dimensions and the pixel buffer content of an image instance into another one, + and replace instance by an empty image. It avoids the copy of the pixel buffer + when possible. + \param img Destination image. + \note + - Pixel types \c T and \c t of source and destination images can be different, though the process is + designed to be instantaneous when \c T and \c t are the same. + \par Example + \code + CImg src(256,256,1,3,0), // Construct a 256x256x1x3 (color) image filled with value '0' + dest(16,16); // Construct a 16x16x1x1 (scalar) image + src.move_to(dest); // Now, 'src' is empty and 'dest' is the 256x256x1x3 image + \endcode + **/ + template + CImg& move_to(CImg& img) { + img.assign(*this); + assign(); + return img; + } + + //! Transfer content of an image instance into another one \specialization. + CImg& move_to(CImg& img) { + if (_is_shared || img._is_shared) img.assign(*this); + else swap(img); + assign(); + return img; + } + + //! Transfer content of an image instance into a new image in an image list. + /** + Transfer the dimensions and the pixel buffer content of an image instance + into a newly inserted image at position \c pos in specified \c CImgList instance. + \param list Destination list. + \param pos Position of the newly inserted image in the list. + \note + - When optional parameter \c pos is omitted, the image instance is transferred as a new + image at the end of the specified \c list. + - It is convenient to sequentially insert new images into image lists, with no + additional copies of memory buffer. + \par Example + \code + CImgList list; // Construct an empty image list + CImg img("reference.jpg"); // Read image from filename + img.move_to(list); // Transfer image content as a new item in the list (no buffer copy) + \endcode + **/ + template + CImgList& move_to(CImgList& list, const unsigned int pos=~0U) { + const unsigned int npos = pos>list._width?list._width:pos; + move_to(list.insert(1,npos)[npos]); + return list; + } + + //! Swap fields of two image instances. + /** + \param img Image to swap fields with. + \note + - It can be used to interchange the content of two images in a very fast way. Can be convenient when dealing + with algorithms requiring two swapping buffers. + \par Example + \code + CImg img1("lena.jpg"), + img2("milla.jpg"); + img1.swap(img2); // Now, 'img1' is 'milla' and 'img2' is 'lena' + \endcode + **/ + CImg& swap(CImg& img) { + cimg::swap(_width,img._width,_height,img._height,_depth,img._depth,_spectrum,img._spectrum); + cimg::swap(_data,img._data); + cimg::swap(_is_shared,img._is_shared); + return img; + } + + //! Return a reference to an empty image. + /** + \note + This function is useful mainly to declare optional parameters having type \c CImg in functions prototypes, + e.g. + \code + void f(const int x=0, const int y=0, const CImg& img=CImg::empty()); + \endcode + **/ + static CImg& empty() { + static CImg _empty; + return _empty.assign(); + } + + //! Return a reference to an empty image \const. + static const CImg& const_empty() { + static const CImg _empty; + return _empty; + } + + //@} + //------------------------------------------ + // + //! \name Overloaded Operators + //@{ + //------------------------------------------ + + //! Access to a pixel value. + /** + Return a reference to a located pixel value of the image instance, + being possibly \e const, whether the image instance is \e const or not. + This is the standard method to get/set pixel values in \c CImg images. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Range of pixel coordinates start from (0,0,0,0) to + (width() - 1,height() - 1,depth() - 1,spectrum() - 1). + - Due to the particular arrangement of the pixel buffers defined in %CImg, you can omit one coordinate if the + corresponding dimension is equal to \c 1. + For instance, pixels of a 2D image (depth() equal to \c 1) can be accessed by img(x,y,c) instead of + img(x,y,0,c). + \warning + - There is \e no boundary checking done in this operator, to make it as fast as possible. + You \e must take care of out-of-bounds access by yourself, if necessary. + For debugging purposes, you may want to define macro \c 'cimg_verbosity'>=3 to enable additional boundary + checking operations in this operator. In that case, warning messages will be printed on the error output + when accessing out-of-bounds pixels. + \par Example + \code + CImg img(100,100,1,3,0); // Construct a 100x100x1x3 (color) image with pixels set to '0' + const float + valR = img(10,10,0,0), // Read red value at coordinates (10,10) + valG = img(10,10,0,1), // Read green value at coordinates (10,10) + valB = img(10,10,2), // Read blue value at coordinates (10,10) (Z-coordinate can be omitted) + avg = (valR + valG + valB)/3; // Compute average pixel value + img(10,10,0) = img(10,10,1) = img(10,10,2) = avg; // Replace the color pixel (10,10) by the average grey value + \endcode + **/ +#if cimg_verbosity>=3 + T& operator()(const unsigned int x, const unsigned int y=0, + const unsigned int z=0, const unsigned int c=0) { + const ulongT off = (ulongT)offset(x,y,z,c); + if (!_data || off>=size()) { + cimg::warn(_cimg_instance + "operator(): Invalid pixel request, at coordinates (%d,%d,%d,%d) [offset=%u].", + cimg_instance, + (int)x,(int)y,(int)z,(int)c,off); + return *_data; + } + else return _data[off]; + } + + //! Access to a pixel value \const. + const T& operator()(const unsigned int x, const unsigned int y=0, + const unsigned int z=0, const unsigned int c=0) const { + return const_cast*>(this)->operator()(x,y,z,c); + } + + //! Access to a pixel value. + /** + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param wh Precomputed offset, must be equal to width()*\ref height(). + \param whd Precomputed offset, must be equal to width()*\ref height()*\ref depth(). + \note + - Similar to (but faster than) operator()(). + It uses precomputed offsets to optimize memory access. You may use it to optimize + the reading/writing of several pixel values in the same image (e.g. in a loop). + **/ + T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c, + const ulongT wh, const ulongT whd=0) { + cimg::unused(wh,whd); + return (*this)(x,y,z,c); + } + + //! Access to a pixel value \const. + const T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c, + const ulongT wh, const ulongT whd=0) const { + cimg::unused(wh,whd); + return (*this)(x,y,z,c); + } +#else + T& operator()(const unsigned int x) { + return _data[x]; + } + + const T& operator()(const unsigned int x) const { + return _data[x]; + } + + T& operator()(const unsigned int x, const unsigned int y) { + return _data[x + y*_width]; + } + + const T& operator()(const unsigned int x, const unsigned int y) const { + return _data[x + y*_width]; + } + + T& operator()(const unsigned int x, const unsigned int y, const unsigned int z) { + return _data[x + y*(ulongT)_width + z*(ulongT)_width*_height]; + } + + const T& operator()(const unsigned int x, const unsigned int y, const unsigned int z) const { + return _data[x + y*(ulongT)_width + z*(ulongT)_width*_height]; + } + + T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c) { + return _data[x + y*(ulongT)_width + z*(ulongT)_width*_height + c*(ulongT)_width*_height*_depth]; + } + + const T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c) const { + return _data[x + y*(ulongT)_width + z*(ulongT)_width*_height + c*(ulongT)_width*_height*_depth]; + } + + T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int, + const ulongT wh) { + return _data[x + y*_width + z*wh]; + } + + const T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int, + const ulongT wh) const { + return _data[x + y*_width + z*wh]; + } + + T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c, + const ulongT wh, const ulongT whd) { + return _data[x + y*_width + z*wh + c*whd]; + } + + const T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c, + const ulongT wh, const ulongT whd) const { + return _data[x + y*_width + z*wh + c*whd]; + } +#endif + + //! Implicitly cast an image into a \c T*. + /** + Implicitly cast a \c CImg instance into a \c T* or \c const \c T* pointer, whether the image instance + is \e const or not. The returned pointer points on the first value of the image pixel buffer. + \note + - It simply returns the pointer data() to the pixel buffer. + - This implicit conversion is convenient to test the empty state of images (data() being \c 0 in this case), e.g. + \code + CImg img1(100,100), img2; // 'img1' is a 100x100 image, 'img2' is an empty image + if (img1) { // Test succeeds, 'img1' is not an empty image + if (!img2) { // Test succeeds, 'img2' is an empty image + std::printf("'img1' is not empty, 'img2' is empty."); + } + } + \endcode + - It also allows to use brackets to access pixel values, without need for a \c CImg::operator[](), e.g. + \code + CImg img(100,100); + const float value = img[99]; // Access to value of the last pixel on the first row + img[510] = 255; // Set pixel value at (10,5) + \endcode + **/ + operator T*() { + return _data; + } + + //! Implicitly cast an image into a \c T* \const. + operator const T*() const { + return _data; + } + + //! Assign a value to all image pixels. + /** + Assign specified \c value to each pixel value of the image instance. + \param value Value that will be assigned to image pixels. + \note + - The image size is never modified. + - The \c value may be casted to pixel type \c T if necessary. + \par Example + \code + CImg img(100,100); // Declare image (with garbage values) + img = 0; // Set all pixel values to '0' + img = 1.2; // Set all pixel values to '1' (cast of '1.2' as a 'char') + \endcode + **/ + CImg& operator=(const T& value) { + return fill(value); + } + + //! Assign pixels values from a specified expression. + /** + Initialize all pixel values from the specified string \c expression. + \param expression Value string describing the way pixel values are set. + \note + - String parameter \c expression may describe different things: + - If \c expression is a list of values (as in \c "1,2,3,8,3,2"), or a formula (as in \c "(x*y)%255"), + the pixel values are set from specified \c expression and the image size is not modified. + - If \c expression is a filename (as in \c "reference.jpg"), the corresponding image file is loaded and + replace the image instance. The image size is modified if necessary. + \par Example + \code + CImg img1(100,100), img2(img1), img3(img1); // Declare 3 scalar images 100x100 with uninitialized values + img1 = "0,50,100,150,200,250,200,150,100,50"; // Set pixel values of 'img1' from a value sequence + img2 = "10*((x*y)%25)"; // Set pixel values of 'img2' from a formula + img3 = "reference.jpg"; // Set pixel values of 'img3' from a file (image size is modified) + (img1,img2,img3).display(); + \endcode + \image html ref_operator_eq.jpg + **/ + CImg& operator=(const char *const expression) { + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { + _fill(expression,true,1,0,0,"operator=",0); + } catch (CImgException&) { + cimg::exception_mode(omode); + load(expression); + } + cimg::exception_mode(omode); + return *this; + } + + //! Copy an image into the current image instance. + /** + Similar to the in-place copy constructor assign(const CImg&). + **/ + template + CImg& operator=(const CImg& img) { + return assign(img); + } + + //! Copy an image into the current image instance \specialization. + CImg& operator=(const CImg& img) { + return assign(img); + } + + //! Copy the content of a display window to the current image instance. + /** + Similar to assign(const CImgDisplay&). + **/ + CImg& operator=(const CImgDisplay& disp) { + disp.snapshot(*this); + return *this; + } + + //! In-place addition operator. + /** + Add specified \c value to all pixels of an image instance. + \param value Value to add. + \note + - Resulting pixel values are casted to fit the pixel type \c T. + For instance, adding \c 0.2 to a \c CImg is possible but does nothing indeed. + - Overflow values are treated as with standard C++ numeric types. For instance, + \code + CImg img(100,100,1,1,255); // Construct a 100x100 image with pixel values '255' + img+=1; // Add '1' to each pixels -> Overflow + // here all pixels of image 'img' are equal to '0'. + \endcode + - To prevent value overflow, you may want to consider pixel type \c T as \c float or \c double, + and use cut() after addition. + \par Example + \code + CImg img1("reference.jpg"); // Load a 8-bits RGB image (values in [0,255]) + CImg img2(img1); // Construct a float-valued copy of 'img1' + img2+=100; // Add '100' to pixel values -> goes out of [0,255] but no problems with floats + img2.cut(0,255); // Cut values in [0,255] to fit the 'unsigned char' constraint + img1 = img2; // Rewrite safe result in 'unsigned char' version 'img1' + const CImg img3 = (img1 + 100).cut(0,255); // Do the same in a more simple and elegant way + (img1,img2,img3).display(); + \endcode + \image html ref_operator_plus.jpg + **/ + template + CImg& operator+=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr + value,524288); + return *this; + } + + //! In-place addition operator. + /** + Add values to image pixels, according to the specified string \c expression. + \param expression Value string describing the way pixel values are added. + \note + - Similar to operator=(const char*), except that it adds values to the pixels of the current image instance, + instead of assigning them. + **/ + CImg& operator+=(const char *const expression) { + return *this+=(+*this)._fill(expression,true,1,0,0,"operator+=",this); + } + + //! In-place addition operator. + /** + Add values to image pixels, according to the values of the input image \c img. + \param img Input image to add. + \note + - The size of the image instance is never modified. + - It is not mandatory that input image \c img has the same size as the image instance. + If less values are available in \c img, then the values are added periodically. For instance, adding one + WxH scalar image (spectrum() equal to \c 1) to one WxH color image (spectrum() equal to \c 3) + means each color channel will be incremented with the same values at the same locations. + \par Example + \code + CImg img1("reference.jpg"); // Load a RGB color image (img1.spectrum()==3) + // Construct a scalar shading (img2.spectrum()==1). + const CImg img2(img1.width(),img.height(),1,1,"255*(x/w)^2"); + img1+=img2; // Add shading to each channel of 'img1' + img1.cut(0,255); // Prevent [0,255] overflow + (img2,img1).display(); + \endcode + \image html ref_operator_plus1.jpg + **/ + template + CImg& operator+=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this+=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs& operator++() { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr + 1,524288); + return *this; + } + + //! In-place increment operator (postfix). + /** + Add \c 1 to all image pixels, and return a new copy of the initial (pre-incremented) image instance. + \note + - Use the prefixed version operator++() if you don't need a copy of the initial + (pre-incremented) image instance, since a useless image copy may be expensive in terms of memory usage. + **/ + CImg operator++(int) { + const CImg copy(*this,false); + ++*this; + return copy; + } + + //! Return a non-shared copy of the image instance. + /** + \note + - Use this operator to ensure you get a non-shared copy of an image instance with same pixel type \c T. + Indeed, the usual copy constructor CImg(const CImg&) returns a shared copy of a shared input image, + and it may be not desirable to work on a regular copy (e.g. for a resize operation) if you have no + information about the shared state of the input image. + - Writing \c (+img) is equivalent to \c CImg(img,false). + **/ + CImg operator+() const { + return CImg(*this,false); + } + + //! Addition operator. + /** + Similar to operator+=(const t), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator+(const t value) const { + return CImg<_cimg_Tt>(*this,false)+=value; + } + + //! Addition operator. + /** + Similar to operator+=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + CImg operator+(const char *const expression) const { + return CImg(*this,false)+=expression; + } + + //! Addition operator. + /** + Similar to operator+=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator+(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false)+=img; + } + + //! In-place subtraction operator. + /** + Similar to operator+=(const t), except that it performs a subtraction instead of an addition. + **/ + template + CImg& operator-=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr - value,524288); + return *this; + } + + //! In-place subtraction operator. + /** + Similar to operator+=(const char*), except that it performs a subtraction instead of an addition. + **/ + CImg& operator-=(const char *const expression) { + return *this-=(+*this)._fill(expression,true,1,0,0,"operator-=",this); + } + + //! In-place subtraction operator. + /** + Similar to operator+=(const CImg&), except that it performs a subtraction instead of an addition. + **/ + template + CImg& operator-=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this-=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs& operator--() { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr - 1,524288); + return *this; + } + + //! In-place decrement operator (postfix). + /** + Similar to operator++(int), except that it performs a decrement instead of an increment. + **/ + CImg operator--(int) { + const CImg copy(*this,false); + --*this; + return copy; + } + + //! Replace each pixel by its opposite value. + /** + \note + - If the computed opposite values are out-of-range, they are treated as with standard C++ numeric types. + For instance, the \c unsigned \c char opposite of \c 1 is \c 255. + \par Example + \code + const CImg + img1("reference.jpg"), // Load a RGB color image + img2 = -img1; // Compute its opposite (in 'unsigned char') + (img1,img2).display(); + \endcode + \image html ref_operator_minus.jpg + **/ + CImg operator-() const { + return CImg(_width,_height,_depth,_spectrum,(T)0)-=*this; + } + + //! Subtraction operator. + /** + Similar to operator-=(const t), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator-(const t value) const { + return CImg<_cimg_Tt>(*this,false)-=value; + } + + //! Subtraction operator. + /** + Similar to operator-=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + CImg operator-(const char *const expression) const { + return CImg(*this,false)-=expression; + } + + //! Subtraction operator. + /** + Similar to operator-=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator-(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false)-=img; + } + + //! In-place multiplication operator. + /** + Similar to operator+=(const t), except that it performs a multiplication instead of an addition. + **/ + template + CImg& operator*=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr * value,262144); + return *this; + } + + //! In-place multiplication operator. + /** + Similar to operator+=(const char*), except that it performs a multiplication instead of an addition. + **/ + CImg& operator*=(const char *const expression) { + return mul((+*this)._fill(expression,true,1,0,0,"operator*=",this)); + } + + //! In-place multiplication operator. + /** + Replace the image instance by the matrix multiplication between the image instance and the specified matrix + \c img. + \param img Second operand of the matrix multiplication. + \note + - It does \e not compute a pointwise multiplication between two images. For this purpose, use + mul(const CImg&) instead. + - The size of the image instance can be modified by this operator. + \par Example + \code + CImg A(2,2,1,1, 1,2,3,4); // Construct 2x2 matrix A = [1,2;3,4] + const CImg X(1,2,1,1, 1,2); // Construct 1x2 vector X = [1;2] + A*=X; // Assign matrix multiplication A*X to 'A' + // 'A' is now a 1x2 vector whose values are [5;11]. + \endcode + **/ + template + CImg& operator*=(const CImg& img) { + return ((*this)*img).move_to(*this); + } + + //! Multiplication operator. + /** + Similar to operator*=(const t), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator*(const t value) const { + return CImg<_cimg_Tt>(*this,false)*=value; + } + + //! Multiplication operator. + /** + Similar to operator*=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + CImg operator*(const char *const expression) const { + return CImg(*this,false)*=expression; + } + + //! Multiplication operator. + /** + Similar to operator*=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator*(const CImg& img) const { + typedef _cimg_Ttdouble Ttdouble; + typedef _cimg_Tt Tt; + if (_width!=img._height || _depth!=1 || _spectrum!=1) + throw CImgArgumentException(_cimg_instance + "operator*(): Invalid multiplication of instance by specified " + "matrix (%u,%u,%u,%u,%p).", + cimg_instance, + img._width,img._height,img._depth,img._spectrum,img._data); + CImg res(img._width,_height); + + // Check for common cases to optimize. + if (img._width==1) { // Matrix * Vector + if (_height==1) switch (_width) { // Vector^T * Vector + case 1 : + res[0] = (Tt)((Ttdouble)_data[0]*img[0]); + return res; + case 2 : + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1]); + return res; + case 3 : + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1] + + (Ttdouble)_data[2]*img[2]); + return res; + case 4 : + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1] + + (Ttdouble)_data[2]*img[2] + (Ttdouble)_data[3]*img[3]); + return res; + default : { + Ttdouble val = 0; + cimg_pragma_openmp(parallel for reduction(+:val) cimg_openmp_if_size(size(),4096)) + cimg_forX(*this,i) val+=(Ttdouble)_data[i]*img[i]; + res[0] = val; + return res; + } + } else if (_height==_width) switch (_width) { // Square_matrix * Vector + case 2 : // 2x2_matrix * Vector + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1]); + res[1] = (Tt)((Ttdouble)_data[2]*img[0] + (Ttdouble)_data[3]*img[1]); + return res; + case 3 : // 3x3_matrix * Vector + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1] + + (Ttdouble)_data[2]*img[2]); + res[1] = (Tt)((Ttdouble)_data[3]*img[0] + (Ttdouble)_data[4]*img[1] + + (Ttdouble)_data[5]*img[2]); + res[2] = (Tt)((Ttdouble)_data[6]*img[0] + (Ttdouble)_data[7]*img[1] + + (Ttdouble)_data[8]*img[2]); + return res; + case 4 : // 4x4_matrix * Vector + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1] + + (Ttdouble)_data[2]*img[2] + (Ttdouble)_data[3]*img[3]); + res[1] = (Tt)((Ttdouble)_data[4]*img[0] + (Ttdouble)_data[5]*img[1] + + (Ttdouble)_data[6]*img[2] + (Ttdouble)_data[7]*img[3]); + res[2] = (Tt)((Ttdouble)_data[8]*img[0] + (Ttdouble)_data[9]*img[1] + + (Ttdouble)_data[10]*img[2] + (Ttdouble)_data[11]*img[3]); + res[3] = (Tt)((Ttdouble)_data[12]*img[0] + (Ttdouble)_data[13]*img[1] + + (Ttdouble)_data[14]*img[2] + (Ttdouble)_data[15]*img[3]); + return res; + } + } else if (_height==_width) { + if (img._height==img._width) switch (_width) { // Square_matrix * Square_matrix + case 2 : // 2x2_matrix * 2x2_matrix + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[2]); + res[1] = (Tt)((Ttdouble)_data[0]*img[1] + (Ttdouble)_data[1]*img[3]); + res[2] = (Tt)((Ttdouble)_data[2]*img[0] + (Ttdouble)_data[3]*img[2]); + res[3] = (Tt)((Ttdouble)_data[2]*img[1] + (Ttdouble)_data[3]*img[3]); + return res; + case 3 : // 3x3_matrix * 3x3_matrix + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[3] + + (Ttdouble)_data[2]*img[6]); + res[1] = (Tt)((Ttdouble)_data[0]*img[1] + (Ttdouble)_data[1]*img[4] + + (Ttdouble)_data[2]*img[7]); + res[2] = (Tt)((Ttdouble)_data[0]*img[2] + (Ttdouble)_data[1]*img[5] + + (Ttdouble)_data[2]*img[8]); + res[3] = (Tt)((Ttdouble)_data[3]*img[0] + (Ttdouble)_data[4]*img[3] + + (Ttdouble)_data[5]*img[6]); + res[4] = (Tt)((Ttdouble)_data[3]*img[1] + (Ttdouble)_data[4]*img[4] + + (Ttdouble)_data[5]*img[7]); + res[5] = (Tt)((Ttdouble)_data[3]*img[2] + (Ttdouble)_data[4]*img[5] + + (Ttdouble)_data[5]*img[8]); + res[6] = (Tt)((Ttdouble)_data[6]*img[0] + (Ttdouble)_data[7]*img[3] + + (Ttdouble)_data[8]*img[6]); + res[7] = (Tt)((Ttdouble)_data[6]*img[1] + (Ttdouble)_data[7]*img[4] + + (Ttdouble)_data[8]*img[7]); + res[8] = (Tt)((Ttdouble)_data[6]*img[2] + (Ttdouble)_data[7]*img[5] + + (Ttdouble)_data[8]*img[8]); + return res; + case 4 : // 4x4_matrix * 4x4_matrix + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[4] + + (Ttdouble)_data[2]*img[8] + (Ttdouble)_data[3]*img[12]); + res[1] = (Tt)((Ttdouble)_data[0]*img[1] + (Ttdouble)_data[1]*img[5] + + (Ttdouble)_data[2]*img[9] + (Ttdouble)_data[3]*img[13]); + res[2] = (Tt)((Ttdouble)_data[0]*img[2] + (Ttdouble)_data[1]*img[6] + + (Ttdouble)_data[2]*img[10] + (Ttdouble)_data[3]*img[14]); + res[3] = (Tt)((Ttdouble)_data[0]*img[3] + (Ttdouble)_data[1]*img[7] + + (Ttdouble)_data[2]*img[11] + (Ttdouble)_data[3]*img[15]); + res[4] = (Tt)((Ttdouble)_data[4]*img[0] + (Ttdouble)_data[5]*img[4] + + (Ttdouble)_data[6]*img[8] + (Ttdouble)_data[7]*img[12]); + res[5] = (Tt)((Ttdouble)_data[4]*img[1] + (Ttdouble)_data[5]*img[5] + + (Ttdouble)_data[6]*img[9] + (Ttdouble)_data[7]*img[13]); + res[6] = (Tt)((Ttdouble)_data[4]*img[2] + (Ttdouble)_data[5]*img[6] + + (Ttdouble)_data[6]*img[10] + (Ttdouble)_data[7]*img[14]); + res[7] = (Tt)((Ttdouble)_data[4]*img[3] + (Ttdouble)_data[5]*img[7] + + (Ttdouble)_data[6]*img[11] + (Ttdouble)_data[7]*img[15]); + res[8] = (Tt)((Ttdouble)_data[8]*img[0] + (Ttdouble)_data[9]*img[4] + + (Ttdouble)_data[10]*img[8] + (Ttdouble)_data[11]*img[12]); + res[9] = (Tt)((Ttdouble)_data[8]*img[1] + (Ttdouble)_data[9]*img[5] + + (Ttdouble)_data[10]*img[9] + (Ttdouble)_data[11]*img[13]); + res[10] = (Tt)((Ttdouble)_data[8]*img[2] + (Ttdouble)_data[9]*img[6] + + (Ttdouble)_data[10]*img[10] + (Ttdouble)_data[11]*img[14]); + res[11] = (Tt)((Ttdouble)_data[8]*img[3] + (Ttdouble)_data[9]*img[7] + + (Ttdouble)_data[10]*img[11] + (Ttdouble)_data[11]*img[15]); + res[12] = (Tt)((Ttdouble)_data[12]*img[0] + (Ttdouble)_data[13]*img[4] + + (Ttdouble)_data[14]*img[8] + (Ttdouble)_data[15]*img[12]); + res[13] = (Tt)((Ttdouble)_data[12]*img[1] + (Ttdouble)_data[13]*img[5] + + (Ttdouble)_data[14]*img[9] + (Ttdouble)_data[15]*img[13]); + res[14] = (Tt)((Ttdouble)_data[12]*img[2] + (Ttdouble)_data[13]*img[6] + + (Ttdouble)_data[14]*img[10] + (Ttdouble)_data[15]*img[14]); + res[15] = (Tt)((Ttdouble)_data[12]*img[3] + (Ttdouble)_data[13]*img[7] + + (Ttdouble)_data[14]*img[11] + (Ttdouble)_data[15]*img[15]); + return res; + } else switch (_width) { // Square_matrix * Matrix + case 2 : { // 2x2_matrix * Matrix + const t *const ps0 = img.data(), *const ps1 = img.data(0,1); + Tt *const pd0 = res.data(), *const pd1 = res.data(0,1); + const Ttdouble + a0 = (Ttdouble)_data[0], a1 = (Ttdouble)_data[1], + a2 = (Ttdouble)_data[2], a3 = (Ttdouble)_data[3]; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(img.width(),4096)) + cimg_forX(img,i) { + const Ttdouble x = (Ttdouble)ps0[i], y = (Ttdouble)ps1[i]; + pd0[i] = (Tt)(a0*x + a1*y); + pd1[i] = (Tt)(a2*x + a3*y); + } + return res; + } + case 3 : { // 3x3_matrix * Matrix + const t *const ps0 = img.data(), *const ps1 = img.data(0,1), *const ps2 = img.data(0,2); + Tt *const pd0 = res.data(), *const pd1 = res.data(0,1), *const pd2 = res.data(0,2); + const Ttdouble + a0 = (Ttdouble)_data[0], a1 = (Ttdouble)_data[1], a2 = (Ttdouble)_data[2], + a3 = (Ttdouble)_data[3], a4 = (Ttdouble)_data[4], a5 = (Ttdouble)_data[5], + a6 = (Ttdouble)_data[6], a7 = (Ttdouble)_data[7], a8 = (Ttdouble)_data[8]; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(img.width(),1024)) + cimg_forX(img,i) { + const Ttdouble x = (Ttdouble)ps0[i], y = (Ttdouble)ps1[i], z = (Ttdouble)ps2[i]; + pd0[i] = (Tt)(a0*x + a1*y + a2*z); + pd1[i] = (Tt)(a3*x + a4*y + a5*z); + pd2[i] = (Tt)(a6*x + a7*y + a8*z); + } + return res; + } + case 4 : { // 4x4_matrix * Matrix + const t + *const ps0 = img.data(), *const ps1 = img.data(0,1), + *const ps2 = img.data(0,2), *const ps3 = img.data(0,3); + Tt + *const pd0 = res.data(), *const pd1 = res.data(0,1), + *const pd2 = res.data(0,2), *const pd3 = res.data(0,3); + const Ttdouble + a0 = (Ttdouble)_data[0], a1 = (Ttdouble)_data[1], a2 = (Ttdouble)_data[2], a3 = (Ttdouble)_data[3], + a4 = (Ttdouble)_data[4], a5 = (Ttdouble)_data[5], a6 = (Ttdouble)_data[6], a7 = (Ttdouble)_data[7], + a8 = (Ttdouble)_data[8], a9 = (Ttdouble)_data[9], a10 = (Ttdouble)_data[10], a11 = (Ttdouble)_data[11], + a12 = (Ttdouble)_data[12], a13 = (Ttdouble)_data[13], a14 = (Ttdouble)_data[14], + a15 = (Ttdouble)_data[15]; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(img.width(),512)) + cimg_forX(img,i) { + const Ttdouble x = (Ttdouble)ps0[i], y = (Ttdouble)ps1[i], z = (Ttdouble)ps2[i], c = (Ttdouble)ps3[i]; + pd0[i] = (Tt)(a0*x + a1*y + a2*z + a3*c); + pd1[i] = (Tt)(a4*x + a5*y + a6*z + a7*c); + pd2[i] = (Tt)(a8*x + a9*y + a10*z + a11*c); + pd3[i] = (Tt)(a12*x + a13*y + a14*z + a15*c); + } + return res; + } + } + } + + // Fallback to generic version. +#if cimg_use_openmp!=0 + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(size()>(cimg_openmp_sizefactor)*1024 && + img.size()>(cimg_openmp_sizefactor)*1024)) + cimg_forXY(res,i,j) { + Ttdouble value = 0; + cimg_forX(*this,k) value+=(*this)(k,j)*img(i,k); + res(i,j) = (Tt)value; + } +#else + Tt *ptrd = res._data; + cimg_forXY(res,i,j) { + Ttdouble value = 0; + cimg_forX(*this,k) value+=(*this)(k,j)*img(i,k); + *(ptrd++) = (Tt)value; + } +#endif + return res; + } + + //! In-place division operator. + /** + Similar to operator+=(const t), except that it performs a division instead of an addition. + **/ + template + CImg& operator/=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr / value,32768); + return *this; + } + + //! In-place division operator. + /** + Similar to operator+=(const char*), except that it performs a division instead of an addition. + **/ + CImg& operator/=(const char *const expression) { + return div((+*this)._fill(expression,true,1,0,0,"operator/=",this)); + } + + //! In-place division operator. + /** + Replace the image instance by the (right) matrix division between the image instance and the specified + matrix \c img. + \param img Second operand of the matrix division. + \note + - It does \e not compute a pointwise division between two images. For this purpose, use + div(const CImg&) instead. + - It returns the matrix operation \c A*inverse(img). + - The size of the image instance can be modified by this operator. + **/ + template + CImg& operator/=(const CImg& img) { + return (*this*img.get_invert()).move_to(*this); + } + + //! Division operator. + /** + Similar to operator/=(const t), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator/(const t value) const { + return CImg<_cimg_Tt>(*this,false)/=value; + } + + //! Division operator. + /** + Similar to operator/=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + CImg operator/(const char *const expression) const { + return CImg(*this,false)/=expression; + } + + //! Division operator. + /** + Similar to operator/=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator/(const CImg& img) const { + return (*this)*img.get_invert(); + } + + //! In-place modulo operator. + /** + Similar to operator+=(const t), except that it performs a modulo operation instead of an addition. + **/ + template + CImg& operator%=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,cimg::mod(*ptr,(T)value),16384); + return *this; + } + + //! In-place modulo operator. + /** + Similar to operator+=(const char*), except that it performs a modulo operation instead of an addition. + **/ + CImg& operator%=(const char *const expression) { + return *this%=(+*this)._fill(expression,true,1,0,0,"operator%=",this); + } + + //! In-place modulo operator. + /** + Similar to operator+=(const CImg&), except that it performs a modulo operation instead of an addition. + **/ + template + CImg& operator%=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this%=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> operator%(const t value) const { + return CImg<_cimg_Tt>(*this,false)%=value; + } + + //! Modulo operator. + /** + Similar to operator%=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + CImg operator%(const char *const expression) const { + return CImg(*this,false)%=expression; + } + + //! Modulo operator. + /** + Similar to operator%=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator%(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false)%=img; + } + + //! In-place bitwise AND operator. + /** + Similar to operator+=(const t), except that it performs a bitwise AND operation instead of an addition. + **/ + template + CImg& operator&=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,(ulongT)*ptr & (ulongT)value,32768); + return *this; + } + + //! In-place bitwise AND operator. + /** + Similar to operator+=(const char*), except that it performs a bitwise AND operation instead of an addition. + **/ + CImg& operator&=(const char *const expression) { + return *this&=(+*this)._fill(expression,true,1,0,0,"operator&=",this); + } + + //! In-place bitwise AND operator. + /** + Similar to operator+=(const CImg&), except that it performs a bitwise AND operation instead of an addition. + **/ + template + CImg& operator&=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this&=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg operator&(const t value) const { + return (+*this)&=value; + } + + //! Bitwise AND operator. + /** + Similar to operator&=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + CImg operator&(const char *const expression) const { + return (+*this)&=expression; + } + + //! Bitwise AND operator. + /** + Similar to operator&=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator&(const CImg& img) const { + return (+*this)&=img; + } + + //! In-place bitwise OR operator. + /** + Similar to operator+=(const t), except that it performs a bitwise OR operation instead of an addition. + **/ + template + CImg& operator|=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,(ulongT)*ptr | (ulongT)value,32768); + return *this; + } + + //! In-place bitwise OR operator. + /** + Similar to operator+=(const char*), except that it performs a bitwise OR operation instead of an addition. + **/ + CImg& operator|=(const char *const expression) { + return *this|=(+*this)._fill(expression,true,1,0,0,"operator|=",this); + } + + //! In-place bitwise OR operator. + /** + Similar to operator+=(const CImg&), except that it performs a bitwise OR operation instead of an addition. + **/ + template + CImg& operator|=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this|=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg operator|(const t value) const { + return (+*this)|=value; + } + + //! Bitwise OR operator. + /** + Similar to operator|=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + CImg operator|(const char *const expression) const { + return (+*this)|=expression; + } + + //! Bitwise OR operator. + /** + Similar to operator|=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator|(const CImg& img) const { + return (+*this)|=img; + } + + //! In-place bitwise XOR operator. + /** + Similar to operator+=(const t), except that it performs a bitwise XOR operation instead of an addition. + \warning + - It does \e not compute the \e power of pixel values. For this purpose, use pow(const t) instead. + **/ + template + CImg& operator^=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,(ulongT)*ptr ^ (ulongT)value,32768); + return *this; + } + + //! In-place bitwise XOR operator. + /** + Similar to operator+=(const char*), except that it performs a bitwise XOR operation instead of an addition. + \warning + - It does \e not compute the \e power of pixel values. For this purpose, use pow(const char*) instead. + **/ + CImg& operator^=(const char *const expression) { + return *this^=(+*this)._fill(expression,true,1,0,0,"operator^=",this); + } + + //! In-place bitwise XOR operator. + /** + Similar to operator+=(const CImg&), except that it performs a bitwise XOR operation instead of an addition. + \warning + - It does \e not compute the \e power of pixel values. For this purpose, use pow(const CImg&) instead. + **/ + template + CImg& operator^=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this^=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg operator^(const t value) const { + return (+*this)^=value; + } + + //! Bitwise XOR operator. + /** + Similar to operator^=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + CImg operator^(const char *const expression) const { + return (+*this)^=expression; + } + + //! Bitwise XOR operator. + /** + Similar to operator^=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator^(const CImg& img) const { + return (+*this)^=img; + } + + //! In-place bitwise left shift operator. + /** + Similar to operator+=(const t), except that it performs a bitwise left shift instead of an addition. + **/ + template + CImg& operator<<=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,((longT)*ptr) << (int)value,65536); + return *this; + } + + //! In-place bitwise left shift operator. + /** + Similar to operator+=(const char*), except that it performs a bitwise left shift instead of an addition. + **/ + CImg& operator<<=(const char *const expression) { + return *this<<=(+*this)._fill(expression,true,1,0,0,"operator<<=",this); + } + + //! In-place bitwise left shift operator. + /** + Similar to operator+=(const CImg&), except that it performs a bitwise left shift instead of an addition. + **/ + template + CImg& operator<<=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this^=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg operator<<(const t value) const { + return (+*this)<<=value; + } + + //! Bitwise left shift operator. + /** + Similar to operator<<=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + CImg operator<<(const char *const expression) const { + return (+*this)<<=expression; + } + + //! Bitwise left shift operator. + /** + Similar to operator<<=(const CImg&), except that it returns a new image instance instead of + operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator<<(const CImg& img) const { + return (+*this)<<=img; + } + + //! In-place bitwise right shift operator. + /** + Similar to operator+=(const t), except that it performs a bitwise right shift instead of an addition. + **/ + template + CImg& operator>>=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,((longT)*ptr) >> (int)value,65536); + return *this; + } + + //! In-place bitwise right shift operator. + /** + Similar to operator+=(const char*), except that it performs a bitwise right shift instead of an addition. + **/ + CImg& operator>>=(const char *const expression) { + return *this>>=(+*this)._fill(expression,true,1,0,0,"operator>>=",this); + } + + //! In-place bitwise right shift operator. + /** + Similar to operator+=(const CImg&), except that it performs a bitwise right shift instead of an addition. + **/ + template + CImg& operator>>=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this^=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs> (int)*(ptrs++)); + for (const t *ptrs = img._data; ptrd> (int)*(ptrs++)); + } + return *this; + } + + //! Bitwise right shift operator. + /** + Similar to operator>>=(const t), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator>>(const t value) const { + return (+*this)>>=value; + } + + //! Bitwise right shift operator. + /** + Similar to operator>>=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + CImg operator>>(const char *const expression) const { + return (+*this)>>=expression; + } + + //! Bitwise right shift operator. + /** + Similar to operator>>=(const CImg&), except that it returns a new image instance instead of + operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator>>(const CImg& img) const { + return (+*this)>>=img; + } + + //! Bitwise inversion operator. + /** + Similar to operator-(), except that it compute the bitwise inverse instead of the opposite value. + **/ + CImg operator~() const { + CImg res(_width,_height,_depth,_spectrum); + const T *ptrs = _data; + cimg_for(res,ptrd,T) { const ulongT value = (ulongT)*(ptrs++); *ptrd = (T)~value; } + return res; + } + + //! Test if all pixels of an image have the same value. + /** + Return \c true is all pixels of the image instance are equal to the specified \c value. + \param value Reference value to compare with. + **/ + template + bool operator==(const t value) const { + if (is_empty()) return false; + typedef _cimg_Tt Tt; + bool is_equal = true; + for (T *ptrd = _data + size(); is_equal && ptrd>_data; is_equal = ((Tt)*(--ptrd)==(Tt)value)) {} + return is_equal; + } + + //! Test if all pixel values of an image follow a specified expression. + /** + Return \c true is all pixels of the image instance are equal to the specified \c expression. + \param expression Value string describing the way pixel values are compared. + **/ + bool operator==(const char *const expression) const { + return *this==(+*this)._fill(expression,true,1,0,0,"operator==",this); + } + + //! Test if two images have the same size and values. + /** + Return \c true if the image instance and the input image \c img have the same pixel values, + even if the dimensions of the two images do not match. It returns \c false otherwise. + \param img Input image to compare with. + \note + - The pixel buffer pointers data() of the two compared images do not have to be the same for operator==() + to return \c true. + Only the dimensions and the pixel values matter. Thus, the comparison can be \c true even for different + pixel types \c T and \c t. + \par Example + \code + const CImg img1(1,3,1,1, 0,1,2); // Construct a 1x3 vector [0;1;2] (with 'float' pixel values) + const CImg img2(1,3,1,1, 0,1,2); // Construct a 1x3 vector [0;1;2] (with 'char' pixel values) + if (img1==img2) { // Test succeeds, image dimensions and values are the same + std::printf("'img1' and 'img2' have same dimensions and values."); + } + \endcode + **/ + template + bool operator==(const CImg& img) const { + typedef _cimg_Tt Tt; + const ulongT siz = size(); + bool is_equal = true; + if (siz!=img.size()) return false; + t *ptrs = img._data + siz; + for (T *ptrd = _data + siz; is_equal && ptrd>_data; is_equal = ((Tt)*(--ptrd)==(Tt)*(--ptrs))) {} + return is_equal; + } + + //! Test if pixels of an image are all different from a value. + /** + Return \c true is all pixels of the image instance are different than the specified \c value. + \param value Reference value to compare with. + **/ + template + bool operator!=(const t value) const { + return !((*this)==value); + } + + //! Test if all pixel values of an image are different from a specified expression. + /** + Return \c true is all pixels of the image instance are different to the specified \c expression. + \param expression Value string describing the way pixel values are compared. + **/ + bool operator!=(const char *const expression) const { + return !((*this)==expression); + } + + //! Test if two images have different sizes or values. + /** + Return \c true if the image instance and the input image \c img have different dimensions or pixel values, + and \c false otherwise. + \param img Input image to compare with. + \note + - Writing \c img1!=img2 is equivalent to \c !(img1==img2). + **/ + template + bool operator!=(const CImg& img) const { + return !((*this)==img); + } + + //! Construct an image list from two images. + /** + Return a new list of image (\c CImgList instance) containing exactly two elements: + - A copy of the image instance, at position [\c 0]. + - A copy of the specified image \c img, at position [\c 1]. + + \param img Input image that will be the second image of the resulting list. + \note + - The family of operator,() is convenient to easily create list of images, but it is also \e quite \e slow + in practice (see warning below). + - Constructed lists contain no shared images. If image instance or input image \c img are shared, they are + inserted as new non-shared copies in the resulting list. + - The pixel type of the returned list may be a superset of the initial pixel type \c T, if necessary. + \warning + - Pipelining operator,() \c N times will perform \c N copies of the entire content of a (growing) image list. + This may become very expensive in terms of speed and used memory. You should avoid using this technique to + build a new CImgList instance from several images, if you are seeking for performance. + Fast insertions of images in an image list are possible with + CImgList::insert(const CImg&,unsigned int,bool) or move_to(CImgList&,unsigned int). + \par Example + \code + const CImg + img1("reference.jpg"), + img2 = img1.get_mirror('x'), + img3 = img2.get_blur(5); + const CImgList list = (img1,img2); // Create list of two elements from 'img1' and 'img2' + (list,img3).display(); // Display image list containing copies of 'img1','img2' and 'img3' + \endcode + \image html ref_operator_comma.jpg + **/ + template + CImgList<_cimg_Tt> operator,(const CImg& img) const { + return CImgList<_cimg_Tt>(*this,img); + } + + //! Construct an image list from image instance and an input image list. + /** + Return a new list of images (\c CImgList instance) containing exactly \c list.size() \c + \c 1 elements: + - A copy of the image instance, at position [\c 0]. + - A copy of the specified image list \c list, from positions [\c 1] to [\c list.size()]. + + \param list Input image list that will be appended to the image instance. + \note + - Similar to operator,(const CImg&) const, except that it takes an image list as an argument. + **/ + template + CImgList<_cimg_Tt> operator,(const CImgList& list) const { + return CImgList<_cimg_Tt>(list,false).insert(*this,0); + } + + //! Split image along specified axis. + /** + Return a new list of images (\c CImgList instance) containing the split components + of the instance image along the specified axis. + \param axis Splitting axis (can be '\c x','\c y','\c z' or '\c c') + \note + - Similar to get_split(char,int) const, with default second argument. + \par Example + \code + const CImg img("reference.jpg"); // Load a RGB color image + const CImgList list = (img<'c'); // Get a list of its three R,G,B channels + (img,list).display(); + \endcode + \image html ref_operator_less.jpg + **/ + CImgList operator<(const char axis) const { + return get_split(axis); + } + + //@} + //------------------------------------- + // + //! \name Instance Characteristics + //@{ + //------------------------------------- + + //! Return the type of image pixel values as a C string. + /** + Return a \c char* string containing the usual type name of the image pixel values + (i.e. a stringified version of the template parameter \c T). + \note + - The returned string may contain spaces (as in \c "unsigned char"). + - If the pixel type \c T does not correspond to a registered type, the string "unknown" is returned. + **/ + static const char* pixel_type() { + return cimg::type::string(); + } + + //! Return the number of image columns. + /** + Return the image width, i.e. the image dimension along the X-axis. + \note + - The width() of an empty image is equal to \c 0. + - width() is typically equal to \c 1 when considering images as \e vectors for matrix calculations. + - width() returns an \c int, although the image width is internally stored as an \c unsigned \c int. + Using an \c int is safer and prevents arithmetic traps possibly encountered when doing calculations involving + \c unsigned \c int variables. + Access to the initial \c unsigned \c int variable is possible (though not recommended) by + (*this)._width. + **/ + int width() const { + return (int)_width; + } + + //! Return the number of image rows. + /** + Return the image height, i.e. the image dimension along the Y-axis. + \note + - The height() of an empty image is equal to \c 0. + - height() returns an \c int, although the image height is internally stored as an \c unsigned \c int. + Using an \c int is safer and prevents arithmetic traps possibly encountered when doing calculations involving + \c unsigned \c int variables. + Access to the initial \c unsigned \c int variable is possible (though not recommended) by + (*this)._height. + **/ + int height() const { + return (int)_height; + } + + //! Return the number of image slices. + /** + Return the image depth, i.e. the image dimension along the Z-axis. + \note + - The depth() of an empty image is equal to \c 0. + - depth() is typically equal to \c 1 when considering usual 2D images. When depth()\c > \c 1, the image + is said to be \e volumetric. + - depth() returns an \c int, although the image depth is internally stored as an \c unsigned \c int. + Using an \c int is safer and prevents arithmetic traps possibly encountered when doing calculations involving + \c unsigned \c int variables. + Access to the initial \c unsigned \c int variable is possible (though not recommended) by + (*this)._depth. + **/ + int depth() const { + return (int)_depth; + } + + //! Return the number of image channels. + /** + Return the number of image channels, i.e. the image dimension along the C-axis. + \note + - The spectrum() of an empty image is equal to \c 0. + - spectrum() is typically equal to \c 1 when considering scalar-valued images, to \c 3 + for RGB-coded color images, and to \c 4 for RGBA-coded color images (with alpha-channel). + The number of channels of an image instance is not limited. The meaning of the pixel values is not linked + up to the number of channels (e.g. a 4-channel image may indifferently stands for a RGBA or CMYK color image). + - spectrum() returns an \c int, although the image spectrum is internally stored as an \c unsigned \c int. + Using an \c int is safer and prevents arithmetic traps possibly encountered when doing calculations involving + \c unsigned \c int variables. + Access to the initial \c unsigned \c int variable is possible (though not recommended) by + (*this)._spectrum. + **/ + int spectrum() const { + return (int)_spectrum; + } + + //! Return the total number of pixel values. + /** + Return width()*\ref height()*\ref depth()*\ref spectrum(), + i.e. the total number of values of type \c T in the pixel buffer of the image instance. + \note + - The size() of an empty image is equal to \c 0. + - The allocated memory size for a pixel buffer of a non-shared \c CImg instance is equal to + size()*sizeof(T). + \par Example + \code + const CImg img(100,100,1,3); // Construct new 100x100 color image + if (img.size()==30000) // Test succeeds + std::printf("Pixel buffer uses %lu bytes", + img.size()*sizeof(float)); + \endcode + **/ + ulongT size() const { + return (ulongT)_width*_height*_depth*_spectrum; + } + + //! Return a pointer to the first pixel value. + /** + Return a \c T*, or a \c const \c T* pointer to the first value in the pixel buffer of the image instance, + whether the instance is \c const or not. + \note + - The data() of an empty image is equal to \c 0 (null pointer). + - The allocated pixel buffer for the image instance starts from \c data() + and goes to data()+\ref size() - 1 (included). + - To get the pointer to one particular location of the pixel buffer, use + data(unsigned int,unsigned int,unsigned int,unsigned int) instead. + **/ + T* data() { + return _data; + } + + //! Return a pointer to the first pixel value \const. + const T* data() const { + return _data; + } + + //! Return a pointer to a located pixel value. + /** + Return a \c T*, or a \c const \c T* pointer to the value located at (\c x,\c y,\c z,\c c) in the pixel buffer + of the image instance, + whether the instance is \c const or not. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Writing \c img.data(x,y,z,c) is equivalent to &(img(x,y,z,c)). Thus, this method has the same + properties as operator()(unsigned int,unsigned int,unsigned int,unsigned int). + **/ +#if cimg_verbosity>=3 + T *data(const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int c=0) { + const ulongT off = (ulongT)offset(x,y,z,c); + if (off>=size()) + cimg::warn(_cimg_instance + "data(): Invalid pointer request, at coordinates (%u,%u,%u,%u) [offset=%u].", + cimg_instance, + x,y,z,c,off); + return _data + off; + } + + //! Return a pointer to a located pixel value \const. + const T* data(const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int c=0) const { + return const_cast*>(this)->data(x,y,z,c); + } +#else + T* data(const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int c=0) { + return _data + x + (ulongT)y*_width + (ulongT)z*_width*_height + (ulongT)c*_width*_height*_depth; + } + + const T* data(const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int c=0) const { + return _data + x + (ulongT)y*_width + (ulongT)z*_width*_height + (ulongT)c*_width*_height*_depth; + } +#endif + + //! Return the offset to a located pixel value, with respect to the beginning of the pixel buffer. + /** + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Writing \c img.data(x,y,z,c) is equivalent to &(img(x,y,z,c)) - img.data(). + Thus, this method has the same properties as operator()(unsigned int,unsigned int,unsigned int,unsigned int). + \par Example + \code + const CImg img(100,100,1,3); // Define a 100x100 RGB-color image + const long off = img.offset(10,10,0,2); // Get the offset of the blue value of the pixel located at (10,10) + const float val = img[off]; // Get the blue value of this pixel + \endcode + **/ + longT offset(const int x, const int y=0, const int z=0, const int c=0) const { + return x + (longT)y*_width + (longT)z*_width*_height + (longT)c*_width*_height*_depth; + } + + //! Return a CImg::iterator pointing to the first pixel value. + /** + \note + - Equivalent to data(). + - It has been mainly defined for compatibility with STL naming conventions. + **/ + iterator begin() { + return _data; + } + + //! Return a CImg::iterator pointing to the first value of the pixel buffer \const. + const_iterator begin() const { + return _data; + } + + //! Return a CImg::iterator pointing next to the last pixel value. + /** + \note + - Writing \c img.end() is equivalent to img.data() + img.size(). + - It has been mainly defined for compatibility with STL naming conventions. + \warning + - The returned iterator actually points to a value located \e outside the acceptable bounds of the pixel buffer. + Trying to read or write the content of the returned iterator will probably result in a crash. + Use it mainly as a strict upper bound for a CImg::iterator. + \par Example + \code + CImg img(100,100,1,3); // Define a 100x100 RGB color image + // 'img.end()' used below as an upper bound for the iterator. + for (CImg::iterator it = img.begin(); it::iterator pointing next to the last pixel value \const. + const_iterator end() const { + return _data + size(); + } + + //! Return a reference to the first pixel value. + /** + \note + - Writing \c img.front() is equivalent to img[0], or img(0,0,0,0). + - It has been mainly defined for compatibility with STL naming conventions. + **/ + T& front() { + return *_data; + } + + //! Return a reference to the first pixel value \const. + const T& front() const { + return *_data; + } + + //! Return a reference to the last pixel value. + /** + \note + - Writing \c img.back() is equivalent to img[img.size() - 1], or + img(img.width() - 1,img.height() - 1,img.depth() - 1,img.spectrum() - 1). + - It has been mainly defined for compatibility with STL naming conventions. + **/ + T& back() { + return *(_data + size() - 1); + } + + //! Return a reference to the last pixel value \const. + const T& back() const { + return *(_data + size() - 1); + } + + //! Access to a pixel value at a specified offset, using Dirichlet boundary conditions. + /** + Return a reference to the pixel value of the image instance located at a specified \c offset, + or to a specified default value in case of out-of-bounds access. + \param offset Offset to the desired pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note + - Writing \c img.at(offset,out_value) is similar to img[offset], except that if \c offset + is outside bounds (e.g. \c offset<0 or \c offset>=img.size()), a reference to a value \c out_value + is safely returned instead. + - Due to the additional boundary checking operation, this method is slower than operator()(). Use it when + you are \e not sure about the validity of the specified pixel offset. + **/ + T& at(const int offset, const T& out_value) { + return (offset<0 || offset>=(int)size())?(cimg::temporary(out_value)=out_value):(*this)[offset]; + } + + //! Access to a pixel value at a specified offset, using Dirichlet boundary conditions \const. + T at(const int offset, const T& out_value) const { + return (offset<0 || offset>=(int)size())?out_value:(*this)[offset]; + } + + //! Access to a pixel value at a specified offset, using Neumann boundary conditions. + /** + Return a reference to the pixel value of the image instance located at a specified \c offset, + or to the nearest pixel location in the image instance in case of out-of-bounds access. + \param offset Offset to the desired pixel value. + \note + - Similar to at(int,const T), except that an out-of-bounds access returns the value of the + nearest pixel in the image instance, regarding the specified offset, i.e. + - If \c offset<0, then \c img[0] is returned. + - If \c offset>=img.size(), then \c img[img.size() - 1] is returned. + - Due to the additional boundary checking operation, this method is slower than operator()(). Use it when + you are \e not sure about the validity of the specified pixel offset. + - If you know your image instance is \e not empty, you may rather use the slightly faster method \c _at(int). + **/ + T& at(const int offset) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "at(): Empty instance.", + cimg_instance); + return _at(offset); + } + + T& _at(const int offset) { + const unsigned int siz = (unsigned int)size(); + return (*this)[offset<0?0:(unsigned int)offset>=siz?siz - 1:offset]; + } + + //! Access to a pixel value at a specified offset, using Neumann boundary conditions \const. + const T& at(const int offset) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "at(): Empty instance.", + cimg_instance); + return _at(offset); + } + + const T& _at(const int offset) const { + const unsigned int siz = (unsigned int)size(); + return (*this)[offset<0?0:(unsigned int)offset>=siz?siz - 1:offset]; + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X-coordinate. + /** + Return a reference to the pixel value of the image instance located at (\c x,\c y,\c z,\c c), + or to a specified default value in case of out-of-bounds access along the X-axis. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c (\c x,\c y,\c z,\c c) is outside image bounds. + \note + - Similar to operator()(), except that an out-of-bounds access along the X-axis returns the specified value + \c out_value. + - Due to the additional boundary checking operation, this method is slower than operator()(). Use it when + you are \e not sure about the validity of the specified pixel coordinates. + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + T& atX(const int x, const int y, const int z, const int c, const T& out_value) { + return (x<0 || x>=width())?(cimg::temporary(out_value)=out_value):(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X-coordinate \const. + T atX(const int x, const int y, const int z, const int c, const T& out_value) const { + return (x<0 || x>=width())?out_value:(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X-coordinate. + /** + Return a reference to the pixel value of the image instance located at (\c x,\c y,\c z,\c c), + or to the nearest pixel location in the image instance in case of out-of-bounds access along the X-axis. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Similar to at(int,int,int,int,const T), except that an out-of-bounds access returns the value of the + nearest pixel in the image instance, regarding the specified X-coordinate. + - Due to the additional boundary checking operation, this method is slower than operator()(). Use it when + you are \e not sure about the validity of the specified pixel coordinates. + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _at(int,int,int,int). + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + T& atX(const int x, const int y=0, const int z=0, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atX(): Empty instance.", + cimg_instance); + return _atX(x,y,z,c); + } + + T& _atX(const int x, const int y=0, const int z=0, const int c=0) { + return (*this)(x<0?0:(x>=width()?width() - 1:x),y,z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X-coordinate \const. + const T& atX(const int x, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atX(): Empty instance.", + cimg_instance); + return _atX(x,y,z,c); + } + + const T& _atX(const int x, const int y=0, const int z=0, const int c=0) const { + return (*this)(x<0?0:(x>=width()?width() - 1:x),y,z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X and Y-coordinates. + /** + Similar to atX(int,int,int,int,const T), except that boundary checking is performed both on X and Y-coordinates. + **/ + T& atXY(const int x, const int y, const int z, const int c, const T& out_value) { + return (x<0 || y<0 || x>=width() || y>=height())?(cimg::temporary(out_value)=out_value):(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X and Y coordinates \const. + T atXY(const int x, const int y, const int z, const int c, const T& out_value) const { + return (x<0 || y<0 || x>=width() || y>=height())?out_value:(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X and Y-coordinates. + /** + Similar to atX(int,int,int,int), except that boundary checking is performed both on X and Y-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _atXY(int,int,int,int). + **/ + T& atXY(const int x, const int y, const int z=0, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXY(): Empty instance.", + cimg_instance); + return _atXY(x,y,z,c); + } + + T& _atXY(const int x, const int y, const int z=0, const int c=0) { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1),z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X and Y-coordinates \const. + const T& atXY(const int x, const int y, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXY(): Empty instance.", + cimg_instance); + return _atXY(x,y,z,c); + } + + const T& _atXY(const int x, const int y, const int z=0, const int c=0) const { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1),z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X,Y and Z-coordinates. + /** + Similar to atX(int,int,int,int,const T), except that boundary checking is performed both on + X,Y and Z-coordinates. + **/ + T& atXYZ(const int x, const int y, const int z, const int c, const T& out_value) { + return (x<0 || y<0 || z<0 || x>=width() || y>=height() || z>=depth())? + (cimg::temporary(out_value)=out_value):(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X,Y and Z-coordinates \const. + T atXYZ(const int x, const int y, const int z, const int c, const T& out_value) const { + return (x<0 || y<0 || z<0 || x>=width() || y>=height() || z>=depth())?out_value:(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X,Y and Z-coordinates. + /** + Similar to atX(int,int,int,int), except that boundary checking is performed both on X,Y and Z-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _atXYZ(int,int,int,int). + **/ + T& atXYZ(const int x, const int y, const int z, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXYZ(): Empty instance.", + cimg_instance); + return _atXYZ(x,y,z,c); + } + + T& _atXYZ(const int x, const int y, const int z, const int c=0) { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1), + cimg::cut(z,0,depth() - 1),c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X,Y and Z-coordinates \const. + const T& atXYZ(const int x, const int y, const int z, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXYZ(): Empty instance.", + cimg_instance); + return _atXYZ(x,y,z,c); + } + + const T& _atXYZ(const int x, const int y, const int z, const int c=0) const { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1), + cimg::cut(z,0,depth() - 1),c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions. + /** + Similar to atX(int,int,int,int,const T), except that boundary checking is performed on all + X,Y,Z and C-coordinates. + **/ + T& atXYZC(const int x, const int y, const int z, const int c, const T& out_value) { + return (x<0 || y<0 || z<0 || c<0 || x>=width() || y>=height() || z>=depth() || c>=spectrum())? + (cimg::temporary(out_value)=out_value):(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions \const. + T atXYZC(const int x, const int y, const int z, const int c, const T& out_value) const { + return (x<0 || y<0 || z<0 || c<0 || x>=width() || y>=height() || z>=depth() || c>=spectrum())?out_value: + (*this)(x,y,z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions. + /** + Similar to atX(int,int,int,int), except that boundary checking is performed on all X,Y,Z and C-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _atXYZC(int,int,int,int). + **/ + T& atXYZC(const int x, const int y, const int z, const int c) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXYZC(): Empty instance.", + cimg_instance); + return _atXYZC(x,y,z,c); + } + + T& _atXYZC(const int x, const int y, const int z, const int c) { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1), + cimg::cut(z,0,depth() - 1), + cimg::cut(c,0,spectrum() - 1)); + } + + //! Access to a pixel value, using Neumann boundary conditions \const. + const T& atXYZC(const int x, const int y, const int z, const int c) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXYZC(): Empty instance.", + cimg_instance); + return _atXYZC(x,y,z,c); + } + + const T& _atXYZC(const int x, const int y, const int z, const int c) const { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1), + cimg::cut(z,0,depth() - 1), + cimg::cut(c,0,spectrum() - 1)); + } + + //! Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X-coordinate. + /** + Return a linearly-interpolated pixel value of the image instance located at (\c fx,\c y,\c z,\c c), + or a specified default value in case of out-of-bounds access along the X-axis. + \param fx X-coordinate of the pixel value (float-valued). + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c (\c fx,\c y,\c z,\c c) is outside image bounds. + \note + - Similar to atX(int,int,int,int,const T), except that the returned pixel value is approximated by + a linear interpolation along the X-axis, if corresponding coordinates are not integers. + - The type of the returned pixel value is extended to \c float, if the pixel type \c T is not float-valued. + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + Tfloat linear_atX(const float fx, const int y, const int z, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1; + const float + dx = fx - x; + const Tfloat + Ic = (Tfloat)atX(x,y,z,c,out_value), In = (Tfloat)atXY(nx,y,z,c,out_value); + return Ic + dx*(In - Ic); + } + + //! Return pixel value, using linear interpolation and Neumann boundary conditions for the X-coordinate. + /** + Return a linearly-interpolated pixel value of the image instance located at (\c fx,\c y,\c z,\c c), + or the value of the nearest pixel location in the image instance in case of out-of-bounds access along + the X-axis. + \param fx X-coordinate of the pixel value (float-valued). + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Similar to linear_atX(float,int,int,int,const T) const, except that an out-of-bounds access returns + the value of the nearest pixel in the image instance, regarding the specified X-coordinate. + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _linear_atX(float,int,int,int). + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + Tfloat linear_atX(const float fx, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atX(): Empty instance.", + cimg_instance); + + return _linear_atX(fx,y,z,c); + } + + Tfloat _linear_atX(const float fx, const int y=0, const int z=0, const int c=0) const { + const float + nfx = cimg::cut(fx,0,width() - 1); + const unsigned int + x = (unsigned int)nfx; + const float + dx = nfx - x; + const unsigned int + nx = dx>0?x + 1:x; + const Tfloat + Ic = (Tfloat)(*this)(x,y,z,c), In = (Tfloat)(*this)(nx,y,z,c); + return Ic + dx*(In - Ic); + } + + //! Return pixel value, using linear interpolation and periodic boundary conditions for the X-coordinate. + Tfloat linear_atX_p(const float fx, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atX_p(): Empty instance.", + cimg_instance); + + return _linear_atX_p(fx,y,z,c); + } + + Tfloat _linear_atX_p(const float fx, const int y=0, const int z=0, const int c=0) const { + const float + nfx = cimg::mod(fx,_width - 0.5f); + const unsigned int + x = (unsigned int)nfx; + const float + dx = nfx - x; + const unsigned int + nx = cimg::mod(x + 1,_width); + const Tfloat + Ic = (Tfloat)(*this)(x,y,z,c), In = (Tfloat)(*this)(nx,y,z,c); + return Ic + dx*(In - Ic); + } + + //! Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X and Y-coordinates. + /** + Similar to linear_atX(float,int,int,int,const T) const, except that the linear interpolation and the + boundary checking are achieved both for X and Y-coordinates. + **/ + Tfloat linear_atXY(const float fx, const float fy, const int z, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1, + y = (int)fy - (fy>=0?0:1), ny = y + 1; + const float + dx = fx - x, + dy = fy - y; + const Tfloat + Icc = (Tfloat)atXY(x,y,z,c,out_value), Inc = (Tfloat)atXY(nx,y,z,c,out_value), + Icn = (Tfloat)atXY(x,ny,z,c,out_value), Inn = (Tfloat)atXY(nx,ny,z,c,out_value); + return Icc + (Inc - Icc + (Icc + Inn - Icn - Inc)*dy)*dx + (Icn - Icc)*dy; + } + + //! Return pixel value, using linear interpolation and Neumann boundary conditions for the X and Y-coordinates. + /** + Similar to linear_atX(float,int,int,int) const, except that the linear interpolation and the boundary checking + are achieved both for X and Y-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _linear_atXY(float,float,int,int). + **/ + Tfloat linear_atXY(const float fx, const float fy, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXY(): Empty instance.", + cimg_instance); + + return _linear_atXY(fx,fy,z,c); + } + + Tfloat _linear_atXY(const float fx, const float fy, const int z=0, const int c=0) const { + const float + nfx = cimg::cut(fx,0,width() - 1), + nfy = cimg::cut(fy,0,height() - 1); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy; + const float + dx = nfx - x, + dy = nfy - y; + const unsigned int + nx = dx>0?x + 1:x, + ny = dy>0?y + 1:y; + const Tfloat + Icc = (Tfloat)(*this)(x,y,z,c), Inc = (Tfloat)(*this)(nx,y,z,c), + Icn = (Tfloat)(*this)(x,ny,z,c), Inn = (Tfloat)(*this)(nx,ny,z,c); + return Icc + (Inc - Icc + (Icc + Inn - Icn - Inc)*dy)*dx + (Icn - Icc)*dy; + } + + //! Return pixel value, using linear interpolation and periodic boundary conditions for the X and Y-coordinates. + Tfloat linear_atXY_p(const float fx, const float fy, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXY_p(): Empty instance.", + cimg_instance); + + return _linear_atXY_p(fx,fy,z,c); + } + + Tfloat _linear_atXY_p(const float fx, const float fy, const int z=0, const int c=0) const { + const float + nfx = cimg::mod(fx,_width - 0.5f), + nfy = cimg::mod(fy,_height - 0.5f); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy; + const float + dx = nfx - x, + dy = nfy - y; + const unsigned int + nx = cimg::mod(x + 1,_width), + ny = cimg::mod(y + 1,_height); + const Tfloat + Icc = (Tfloat)(*this)(x,y,z,c), Inc = (Tfloat)(*this)(nx,y,z,c), + Icn = (Tfloat)(*this)(x,ny,z,c), Inn = (Tfloat)(*this)(nx,ny,z,c); + return Icc + (Inc - Icc + (Icc + Inn - Icn - Inc)*dy)*dx + (Icn - Icc)*dy; + } + + //! Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X,Y and Z-coordinates. + /** + Similar to linear_atX(float,int,int,int,const T) const, except that the linear interpolation and the + boundary checking are achieved both for X,Y and Z-coordinates. + **/ + Tfloat linear_atXYZ(const float fx, const float fy, const float fz, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1, + y = (int)fy - (fy>=0?0:1), ny = y + 1, + z = (int)fz - (fz>=0?0:1), nz = z + 1; + const float + dx = fx - x, + dy = fy - y, + dz = fz - z; + const Tfloat + Iccc = (Tfloat)atXYZ(x,y,z,c,out_value), Incc = (Tfloat)atXYZ(nx,y,z,c,out_value), + Icnc = (Tfloat)atXYZ(x,ny,z,c,out_value), Innc = (Tfloat)atXYZ(nx,ny,z,c,out_value), + Iccn = (Tfloat)atXYZ(x,y,nz,c,out_value), Incn = (Tfloat)atXYZ(nx,y,nz,c,out_value), + Icnn = (Tfloat)atXYZ(x,ny,nz,c,out_value), Innn = (Tfloat)atXYZ(nx,ny,nz,c,out_value); + return Iccc + + (Incc - Iccc + + (Iccc + Innc - Icnc - Incc + + (Iccn + Innn + Icnc + Incc - Icnn - Incn - Iccc - Innc)*dz)*dy + + (Iccc + Incn - Iccn - Incc)*dz)*dx + + (Icnc - Iccc + + (Iccc + Icnn - Iccn - Icnc)*dz)*dy + + (Iccn - Iccc)*dz; + } + + //! Return pixel value, using linear interpolation and Neumann boundary conditions for the X,Y and Z-coordinates. + /** + Similar to linear_atX(float,int,int,int) const, except that the linear interpolation and the boundary checking + are achieved both for X,Y and Z-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _linear_atXYZ(float,float,float,int). + **/ + Tfloat linear_atXYZ(const float fx, const float fy=0, const float fz=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXYZ(): Empty instance.", + cimg_instance); + + return _linear_atXYZ(fx,fy,fz,c); + } + + Tfloat _linear_atXYZ(const float fx, const float fy=0, const float fz=0, const int c=0) const { + const float + nfx = cimg::cut(fx,0,width() - 1), + nfy = cimg::cut(fy,0,height() - 1), + nfz = cimg::cut(fz,0,depth() - 1); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy, + z = (unsigned int)nfz; + const float + dx = nfx - x, + dy = nfy - y, + dz = nfz - z; + const unsigned int + nx = dx>0?x + 1:x, + ny = dy>0?y + 1:y, + nz = dz>0?z + 1:z; + const Tfloat + Iccc = (Tfloat)(*this)(x,y,z,c), Incc = (Tfloat)(*this)(nx,y,z,c), + Icnc = (Tfloat)(*this)(x,ny,z,c), Innc = (Tfloat)(*this)(nx,ny,z,c), + Iccn = (Tfloat)(*this)(x,y,nz,c), Incn = (Tfloat)(*this)(nx,y,nz,c), + Icnn = (Tfloat)(*this)(x,ny,nz,c), Innn = (Tfloat)(*this)(nx,ny,nz,c); + return Iccc + + (Incc - Iccc + + (Iccc + Innc - Icnc - Incc + + (Iccn + Innn + Icnc + Incc - Icnn - Incn - Iccc - Innc)*dz)*dy + + (Iccc + Incn - Iccn - Incc)*dz)*dx + + (Icnc - Iccc + + (Iccc + Icnn - Iccn - Icnc)*dz)*dy + + (Iccn - Iccc)*dz; + } + + //! Return pixel value, using linear interpolation and periodic boundary conditions for the X,Y and Z-coordinates. + Tfloat linear_atXYZ_p(const float fx, const float fy=0, const float fz=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXYZ_p(): Empty instance.", + cimg_instance); + + return _linear_atXYZ_p(fx,fy,fz,c); + } + + Tfloat _linear_atXYZ_p(const float fx, const float fy=0, const float fz=0, const int c=0) const { + const float + nfx = cimg::mod(fx,_width - 0.5f), + nfy = cimg::mod(fy,_height - 0.5f), + nfz = cimg::mod(fz,_depth - 0.5f); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy, + z = (unsigned int)nfz; + const float + dx = nfx - x, + dy = nfy - y, + dz = nfz - z; + const unsigned int + nx = cimg::mod(x + 1,_width), + ny = cimg::mod(y + 1,_height), + nz = cimg::mod(z + 1,_depth); + const Tfloat + Iccc = (Tfloat)(*this)(x,y,z,c), Incc = (Tfloat)(*this)(nx,y,z,c), + Icnc = (Tfloat)(*this)(x,ny,z,c), Innc = (Tfloat)(*this)(nx,ny,z,c), + Iccn = (Tfloat)(*this)(x,y,nz,c), Incn = (Tfloat)(*this)(nx,y,nz,c), + Icnn = (Tfloat)(*this)(x,ny,nz,c), Innn = (Tfloat)(*this)(nx,ny,nz,c); + return Iccc + + (Incc - Iccc + + (Iccc + Innc - Icnc - Incc + + (Iccn + Innn + Icnc + Incc - Icnn - Incn - Iccc - Innc)*dz)*dy + + (Iccc + Incn - Iccn - Incc)*dz)*dx + + (Icnc - Iccc + + (Iccc + Icnn - Iccn - Icnc)*dz)*dy + + (Iccn - Iccc)*dz; + } + + //! Return pixel value, using linear interpolation and Dirichlet boundary conditions for all X,Y,Z,C-coordinates. + /** + Similar to linear_atX(float,int,int,int,const T) const, except that the linear interpolation and the + boundary checking are achieved for all X,Y,Z and C-coordinates. + **/ + Tfloat linear_atXYZC(const float fx, const float fy, const float fz, const float fc, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1, + y = (int)fy - (fy>=0?0:1), ny = y + 1, + z = (int)fz - (fz>=0?0:1), nz = z + 1, + c = (int)fc - (fc>=0?0:1), nc = c + 1; + const float + dx = fx - x, + dy = fy - y, + dz = fz - z, + dc = fc - c; + const Tfloat + Icccc = (Tfloat)atXYZC(x,y,z,c,out_value), Inccc = (Tfloat)atXYZC(nx,y,z,c,out_value), + Icncc = (Tfloat)atXYZC(x,ny,z,c,out_value), Inncc = (Tfloat)atXYZC(nx,ny,z,c,out_value), + Iccnc = (Tfloat)atXYZC(x,y,nz,c,out_value), Incnc = (Tfloat)atXYZC(nx,y,nz,c,out_value), + Icnnc = (Tfloat)atXYZC(x,ny,nz,c,out_value), Innnc = (Tfloat)atXYZC(nx,ny,nz,c,out_value), + Icccn = (Tfloat)atXYZC(x,y,z,nc,out_value), Inccn = (Tfloat)atXYZC(nx,y,z,nc,out_value), + Icncn = (Tfloat)atXYZC(x,ny,z,nc,out_value), Inncn = (Tfloat)atXYZC(nx,ny,z,nc,out_value), + Iccnn = (Tfloat)atXYZC(x,y,nz,nc,out_value), Incnn = (Tfloat)atXYZC(nx,y,nz,nc,out_value), + Icnnn = (Tfloat)atXYZC(x,ny,nz,nc,out_value), Innnn = (Tfloat)atXYZC(nx,ny,nz,nc,out_value); + return Icccc + + dx*(Inccc - Icccc + + dy*(Icccc + Inncc - Icncc - Inccc + + dz*(Iccnc + Innnc + Icncc + Inccc - Icnnc - Incnc - Icccc - Inncc + + dc*(Iccnn + Innnn + Icncn + Inccn + Icnnc + Incnc + Icccc + Inncc - + Icnnn - Incnn - Icccn - Inncn - Iccnc - Innnc - Icncc - Inccc)) + + dc*(Icccn + Inncn + Icncc + Inccc - Icncn - Inccn - Icccc - Inncc)) + + dz*(Icccc + Incnc - Iccnc - Inccc + + dc*(Icccn + Incnn + Iccnc + Inccc - Iccnn - Inccn - Icccc - Incnc)) + + dc*(Icccc + Inccn - Inccc - Icccn)) + + dy*(Icncc - Icccc + + dz*(Icccc + Icnnc - Iccnc - Icncc + + dc*(Icccn + Icnnn + Iccnc + Icncc - Iccnn - Icncn - Icccc - Icnnc)) + + dc*(Icccc + Icncn - Icncc - Icccn)) + + dz*(Iccnc - Icccc + + dc*(Icccc + Iccnn - Iccnc - Icccn)) + + dc*(Icccn -Icccc); + } + + //! Return pixel value, using linear interpolation and Neumann boundary conditions for all X,Y,Z and C-coordinates. + /** + Similar to linear_atX(float,int,int,int) const, except that the linear interpolation and the boundary checking + are achieved for all X,Y,Z and C-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _linear_atXYZC(float,float,float,float). + **/ + Tfloat linear_atXYZC(const float fx, const float fy=0, const float fz=0, const float fc=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXYZC(): Empty instance.", + cimg_instance); + + return _linear_atXYZC(fx,fy,fz,fc); + } + + Tfloat _linear_atXYZC(const float fx, const float fy=0, const float fz=0, const float fc=0) const { + const float + nfx = cimg::cut(fx,0,width() - 1), + nfy = cimg::cut(fy,0,height() - 1), + nfz = cimg::cut(fz,0,depth() - 1), + nfc = cimg::cut(fc,0,spectrum() - 1); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy, + z = (unsigned int)nfz, + c = (unsigned int)nfc; + const float + dx = nfx - x, + dy = nfy - y, + dz = nfz - z, + dc = nfc - c; + const unsigned int + nx = dx>0?x + 1:x, + ny = dy>0?y + 1:y, + nz = dz>0?z + 1:z, + nc = dc>0?c + 1:c; + const Tfloat + Icccc = (Tfloat)(*this)(x,y,z,c), Inccc = (Tfloat)(*this)(nx,y,z,c), + Icncc = (Tfloat)(*this)(x,ny,z,c), Inncc = (Tfloat)(*this)(nx,ny,z,c), + Iccnc = (Tfloat)(*this)(x,y,nz,c), Incnc = (Tfloat)(*this)(nx,y,nz,c), + Icnnc = (Tfloat)(*this)(x,ny,nz,c), Innnc = (Tfloat)(*this)(nx,ny,nz,c), + Icccn = (Tfloat)(*this)(x,y,z,nc), Inccn = (Tfloat)(*this)(nx,y,z,nc), + Icncn = (Tfloat)(*this)(x,ny,z,nc), Inncn = (Tfloat)(*this)(nx,ny,z,nc), + Iccnn = (Tfloat)(*this)(x,y,nz,nc), Incnn = (Tfloat)(*this)(nx,y,nz,nc), + Icnnn = (Tfloat)(*this)(x,ny,nz,nc), Innnn = (Tfloat)(*this)(nx,ny,nz,nc); + return Icccc + + dx*(Inccc - Icccc + + dy*(Icccc + Inncc - Icncc - Inccc + + dz*(Iccnc + Innnc + Icncc + Inccc - Icnnc - Incnc - Icccc - Inncc + + dc*(Iccnn + Innnn + Icncn + Inccn + Icnnc + Incnc + Icccc + Inncc - + Icnnn - Incnn - Icccn - Inncn - Iccnc - Innnc - Icncc - Inccc)) + + dc*(Icccn + Inncn + Icncc + Inccc - Icncn - Inccn - Icccc - Inncc)) + + dz*(Icccc + Incnc - Iccnc - Inccc + + dc*(Icccn + Incnn + Iccnc + Inccc - Iccnn - Inccn - Icccc - Incnc)) + + dc*(Icccc + Inccn - Inccc - Icccn)) + + dy*(Icncc - Icccc + + dz*(Icccc + Icnnc - Iccnc - Icncc + + dc*(Icccn + Icnnn + Iccnc + Icncc - Iccnn - Icncn - Icccc - Icnnc)) + + dc*(Icccc + Icncn - Icncc - Icccn)) + + dz*(Iccnc - Icccc + + dc*(Icccc + Iccnn - Iccnc - Icccn)) + + dc*(Icccn - Icccc); + } + + //! Return pixel value, using linear interpolation and periodic boundary conditions for all X,Y,Z and C-coordinates. + Tfloat linear_atXYZC_p(const float fx, const float fy=0, const float fz=0, const float fc=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXYZC_p(): Empty instance.", + cimg_instance); + + return _linear_atXYZC_p(fx,fy,fz,fc); + } + + Tfloat _linear_atXYZC_p(const float fx, const float fy=0, const float fz=0, const float fc=0) const { + const float + nfx = cimg::mod(fx,_width - 0.5f), + nfy = cimg::mod(fy,_height - 0.5f), + nfz = cimg::mod(fz,_depth - 0.5f), + nfc = cimg::mod(fc,_spectrum - 0.5f); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy, + z = (unsigned int)nfz, + c = (unsigned int)nfc; + const float + dx = nfx - x, + dy = nfy - y, + dz = nfz - z, + dc = nfc - c; + const unsigned int + nx = cimg::mod(x + 1,_width), + ny = cimg::mod(y + 1,_height), + nz = cimg::mod(z + 1,_depth), + nc = cimg::mod(c + 1,_spectrum); + const Tfloat + Icccc = (Tfloat)(*this)(x,y,z,c), Inccc = (Tfloat)(*this)(nx,y,z,c), + Icncc = (Tfloat)(*this)(x,ny,z,c), Inncc = (Tfloat)(*this)(nx,ny,z,c), + Iccnc = (Tfloat)(*this)(x,y,nz,c), Incnc = (Tfloat)(*this)(nx,y,nz,c), + Icnnc = (Tfloat)(*this)(x,ny,nz,c), Innnc = (Tfloat)(*this)(nx,ny,nz,c), + Icccn = (Tfloat)(*this)(x,y,z,nc), Inccn = (Tfloat)(*this)(nx,y,z,nc), + Icncn = (Tfloat)(*this)(x,ny,z,nc), Inncn = (Tfloat)(*this)(nx,ny,z,nc), + Iccnn = (Tfloat)(*this)(x,y,nz,nc), Incnn = (Tfloat)(*this)(nx,y,nz,nc), + Icnnn = (Tfloat)(*this)(x,ny,nz,nc), Innnn = (Tfloat)(*this)(nx,ny,nz,nc); + return Icccc + + dx*(Inccc - Icccc + + dy*(Icccc + Inncc - Icncc - Inccc + + dz*(Iccnc + Innnc + Icncc + Inccc - Icnnc - Incnc - Icccc - Inncc + + dc*(Iccnn + Innnn + Icncn + Inccn + Icnnc + Incnc + Icccc + Inncc - + Icnnn - Incnn - Icccn - Inncn - Iccnc - Innnc - Icncc - Inccc)) + + dc*(Icccn + Inncn + Icncc + Inccc - Icncn - Inccn - Icccc - Inncc)) + + dz*(Icccc + Incnc - Iccnc - Inccc + + dc*(Icccn + Incnn + Iccnc + Inccc - Iccnn - Inccn - Icccc - Incnc)) + + dc*(Icccc + Inccn - Inccc - Icccn)) + + dy*(Icncc - Icccc + + dz*(Icccc + Icnnc - Iccnc - Icncc + + dc*(Icccn + Icnnn + Iccnc + Icncc - Iccnn - Icncn - Icccc - Icnnc)) + + dc*(Icccc + Icncn - Icncc - Icccn)) + + dz*(Iccnc - Icccc + + dc*(Icccc + Iccnn - Iccnc - Icccn)) + + dc*(Icccn - Icccc); + } + + //! Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X-coordinate. + /** + Return a cubicly-interpolated pixel value of the image instance located at (\c fx,\c y,\c z,\c c), + or a specified default value in case of out-of-bounds access along the X-axis. + The cubic interpolation uses Hermite splines. + \param fx d X-coordinate of the pixel value (float-valued). + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c (\c fx,\c y,\c z,\c c) is outside image bounds. + \note + - Similar to linear_atX(float,int,int,int,const T) const, except that the returned pixel value is + approximated by a \e cubic interpolation along the X-axis. + - The type of the returned pixel value is extended to \c float, if the pixel type \c T is not float-valued. + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + Tfloat cubic_atX(const float fx, const int y, const int z, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), px = x - 1, nx = x + 1, ax = x + 2; + const float + dx = fx - x; + const Tfloat + Ip = (Tfloat)atX(px,y,z,c,out_value), Ic = (Tfloat)atX(x,y,z,c,out_value), + In = (Tfloat)atX(nx,y,z,c,out_value), Ia = (Tfloat)atX(ax,y,z,c,out_value); + return Ic + 0.5f*(dx*(-Ip + In) + dx*dx*(2*Ip - 5*Ic + 4*In - Ia) + dx*dx*dx*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Dirichlet boundary conditions for the X-coordinate. + /** + Similar to cubic_atX(float,int,int,int,const T) const, except that the return value is clamped to stay in the + min/max range of the datatype \c T. + **/ + T cubic_atX_c(const float fx, const int y, const int z, const int c, const T& out_value) const { + return cimg::type::cut(cubic_atX(fx,y,z,c,out_value)); + } + + //! Return pixel value, using cubic interpolation and Neumann boundary conditions for the X-coordinate. + /** + Return a cubicly-interpolated pixel value of the image instance located at (\c fx,\c y,\c z,\c c), + or the value of the nearest pixel location in the image instance in case of out-of-bounds access + along the X-axis. The cubic interpolation uses Hermite splines. + \param fx X-coordinate of the pixel value (float-valued). + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Similar to cubic_atX(float,int,int,int,const T) const, except that the returned pixel value is + approximated by a cubic interpolation along the X-axis. + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _cubic_atX(float,int,int,int). + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + Tfloat cubic_atX(const float fx, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atX(): Empty instance.", + cimg_instance); + return _cubic_atX(fx,y,z,c); + } + + Tfloat _cubic_atX(const float fx, const int y=0, const int z=0, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::cut(fx,0,width() - 1); + const int + x = (int)nfx; + const float + dx = nfx - x; + const int + px = x - 1<0?0:x - 1, nx = dx>0?x + 1:x, ax = x + 2>=width()?width() - 1:x + 2; + const Tfloat + Ip = (Tfloat)(*this)(px,y,z,c), Ic = (Tfloat)(*this)(x,y,z,c), + In = (Tfloat)(*this)(nx,y,z,c), Ia = (Tfloat)(*this)(ax,y,z,c); + return Ic + 0.5f*(dx*(-Ip + In) + dx*dx*(2*Ip - 5*Ic + 4*In - Ia) + dx*dx*dx*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Neumann boundary conditions for the X-coordinate. + /** + Similar to cubic_atX(float,int,int,int) const, except that the return value is clamped to stay in the + min/max range of the datatype \c T. + **/ + T cubic_atX_c(const float fx, const int y, const int z, const int c) const { + return cimg::type::cut(cubic_atX(fx,y,z,c)); + } + + T _cubic_atX_c(const float fx, const int y, const int z, const int c) const { + return cimg::type::cut(_cubic_atX(fx,y,z,c)); + } + + //! Return pixel value, using cubic interpolation and periodic boundary conditions for the X-coordinate. + Tfloat cubic_atX_p(const float fx, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atX_p(): Empty instance.", + cimg_instance); + return _cubic_atX_p(fx,y,z,c); + } + + Tfloat _cubic_atX_p(const float fx, const int y=0, const int z=0, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::mod(fx,_width - 0.5f); + const int + x = (int)nfx; + const float + dx = nfx - x; + const int + px = cimg::mod(x - 1,width()), nx = cimg::mod(x + 1,width()), ax = cimg::mod(x + 2,width()); + const Tfloat + Ip = (Tfloat)(*this)(px,y,z,c), Ic = (Tfloat)(*this)(x,y,z,c), + In = (Tfloat)(*this)(nx,y,z,c), Ia = (Tfloat)(*this)(ax,y,z,c); + return Ic + 0.5f*(dx*(-Ip + In) + dx*dx*(2*Ip - 5*Ic + 4*In - Ia) + dx*dx*dx*(-Ip + 3*Ic - 3*In + Ia)); + } + + T cubic_atX_pc(const float fx, const int y, const int z, const int c) const { + return cimg::type::cut(cubic_atX_p(fx,y,z,c)); + } + + T _cubic_atX_pc(const float fx, const int y, const int z, const int c) const { + return cimg::type::cut(_cubic_atX_p(fx,y,z,c)); + } + + //! Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X and Y-coordinates. + /** + Similar to cubic_atX(float,int,int,int,const T) const, except that the cubic interpolation and boundary checking + are achieved both for X and Y-coordinates. + **/ + Tfloat cubic_atXY(const float fx, const float fy, const int z, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), px = x - 1, nx = x + 1, ax = x + 2, + y = (int)fy - (fy>=0?0:1), py = y - 1, ny = y + 1, ay = y + 2; + const float dx = fx - x, dy = fy - y; + const Tfloat + Ipp = (Tfloat)atXY(px,py,z,c,out_value), Icp = (Tfloat)atXY(x,py,z,c,out_value), + Inp = (Tfloat)atXY(nx,py,z,c,out_value), Iap = (Tfloat)atXY(ax,py,z,c,out_value), + Ip = Icp + 0.5f*(dx*(-Ipp + Inp) + dx*dx*(2*Ipp - 5*Icp + 4*Inp - Iap) + dx*dx*dx*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ipc = (Tfloat)atXY(px,y,z,c,out_value), Icc = (Tfloat)atXY(x, y,z,c,out_value), + Inc = (Tfloat)atXY(nx,y,z,c,out_value), Iac = (Tfloat)atXY(ax,y,z,c,out_value), + Ic = Icc + 0.5f*(dx*(-Ipc + Inc) + dx*dx*(2*Ipc - 5*Icc + 4*Inc - Iac) + dx*dx*dx*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ipn = (Tfloat)atXY(px,ny,z,c,out_value), Icn = (Tfloat)atXY(x,ny,z,c,out_value), + Inn = (Tfloat)atXY(nx,ny,z,c,out_value), Ian = (Tfloat)atXY(ax,ny,z,c,out_value), + In = Icn + 0.5f*(dx*(-Ipn + Inn) + dx*dx*(2*Ipn - 5*Icn + 4*Inn - Ian) + dx*dx*dx*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ipa = (Tfloat)atXY(px,ay,z,c,out_value), Ica = (Tfloat)atXY(x,ay,z,c,out_value), + Ina = (Tfloat)atXY(nx,ay,z,c,out_value), Iaa = (Tfloat)atXY(ax,ay,z,c,out_value), + Ia = Ica + 0.5f*(dx*(-Ipa + Ina) + dx*dx*(2*Ipa - 5*Ica + 4*Ina - Iaa) + dx*dx*dx*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dy*(-Ip + In) + dy*dy*(2*Ip - 5*Ic + 4*In - Ia) + dy*dy*dy*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Dirichlet boundary conditions for the X,Y-coordinates. + /** + Similar to cubic_atXY(float,float,int,int,const T) const, except that the return value is clamped to stay in the + min/max range of the datatype \c T. + **/ + T cubic_atXY_c(const float fx, const float fy, const int z, const int c, const T& out_value) const { + return cimg::type::cut(cubic_atXY(fx,fy,z,c,out_value)); + } + + //! Return pixel value, using cubic interpolation and Neumann boundary conditions for the X and Y-coordinates. + /** + Similar to cubic_atX(float,int,int,int) const, except that the cubic interpolation and boundary checking + are achieved for both X and Y-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _cubic_atXY(float,float,int,int). + **/ + Tfloat cubic_atXY(const float fx, const float fy, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atXY(): Empty instance.", + cimg_instance); + return _cubic_atXY(fx,fy,z,c); + } + + Tfloat _cubic_atXY(const float fx, const float fy, const int z=0, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::cut(fx,0,width() - 1), + nfy = cimg::type::is_nan(fy)?0:cimg::cut(fy,0,height() - 1); + const int x = (int)nfx, y = (int)nfy; + const float dx = nfx - x, dy = nfy - y; + const int + px = x - 1<0?0:x - 1, nx = dx<=0?x:x + 1, ax = x + 2>=width()?width() - 1:x + 2, + py = y - 1<0?0:y - 1, ny = dy<=0?y:y + 1, ay = y + 2>=height()?height() - 1:y + 2; + const Tfloat + Ipp = (Tfloat)(*this)(px,py,z,c), Icp = (Tfloat)(*this)(x,py,z,c), Inp = (Tfloat)(*this)(nx,py,z,c), + Iap = (Tfloat)(*this)(ax,py,z,c), + Ip = Icp + 0.5f*(dx*(-Ipp + Inp) + dx*dx*(2*Ipp - 5*Icp + 4*Inp - Iap) + dx*dx*dx*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ipc = (Tfloat)(*this)(px,y,z,c), Icc = (Tfloat)(*this)(x, y,z,c), Inc = (Tfloat)(*this)(nx,y,z,c), + Iac = (Tfloat)(*this)(ax,y,z,c), + Ic = Icc + 0.5f*(dx*(-Ipc + Inc) + dx*dx*(2*Ipc - 5*Icc + 4*Inc - Iac) + dx*dx*dx*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ipn = (Tfloat)(*this)(px,ny,z,c), Icn = (Tfloat)(*this)(x,ny,z,c), Inn = (Tfloat)(*this)(nx,ny,z,c), + Ian = (Tfloat)(*this)(ax,ny,z,c), + In = Icn + 0.5f*(dx*(-Ipn + Inn) + dx*dx*(2*Ipn - 5*Icn + 4*Inn - Ian) + dx*dx*dx*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ipa = (Tfloat)(*this)(px,ay,z,c), Ica = (Tfloat)(*this)(x,ay,z,c), Ina = (Tfloat)(*this)(nx,ay,z,c), + Iaa = (Tfloat)(*this)(ax,ay,z,c), + Ia = Ica + 0.5f*(dx*(-Ipa + Ina) + dx*dx*(2*Ipa - 5*Ica + 4*Ina - Iaa) + dx*dx*dx*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dy*(-Ip + In) + dy*dy*(2*Ip - 5*Ic + 4*In - Ia) + dy*dy*dy*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Neumann boundary conditions for the X,Y-coordinates. + /** + Similar to cubic_atXY(float,float,int,int) const, except that the return value is clamped to stay in the + min/max range of the datatype \c T. + **/ + T cubic_atXY_c(const float fx, const float fy, const int z, const int c) const { + return cimg::type::cut(cubic_atXY(fx,fy,z,c)); + } + + T _cubic_atXY_c(const float fx, const float fy, const int z, const int c) const { + return cimg::type::cut(_cubic_atXY(fx,fy,z,c)); + } + + //! Return pixel value, using cubic interpolation and periodic boundary conditions for the X and Y-coordinates. + Tfloat cubic_atXY_p(const float fx, const float fy, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atXY_p(): Empty instance.", + cimg_instance); + return _cubic_atXY_p(fx,fy,z,c); + } + + Tfloat _cubic_atXY_p(const float fx, const float fy, const int z=0, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::mod(fx,_width - 0.5f), + nfy = cimg::type::is_nan(fy)?0:cimg::mod(fy,_height - 0.5f); + const int x = (int)nfx, y = (int)nfy; + const float dx = nfx - x, dy = nfy - y; + const int + px = cimg::mod(x - 1,width()), nx = cimg::mod(x + 1,width()), ax = cimg::mod(x + 2,width()), + py = cimg::mod(y - 1,height()), ny = cimg::mod(y + 1,height()), ay = cimg::mod(y + 2,height()); + const Tfloat + Ipp = (Tfloat)(*this)(px,py,z,c), Icp = (Tfloat)(*this)(x,py,z,c), Inp = (Tfloat)(*this)(nx,py,z,c), + Iap = (Tfloat)(*this)(ax,py,z,c), + Ip = Icp + 0.5f*(dx*(-Ipp + Inp) + dx*dx*(2*Ipp - 5*Icp + 4*Inp - Iap) + dx*dx*dx*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ipc = (Tfloat)(*this)(px,y,z,c), Icc = (Tfloat)(*this)(x, y,z,c), Inc = (Tfloat)(*this)(nx,y,z,c), + Iac = (Tfloat)(*this)(ax,y,z,c), + Ic = Icc + 0.5f*(dx*(-Ipc + Inc) + dx*dx*(2*Ipc - 5*Icc + 4*Inc - Iac) + dx*dx*dx*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ipn = (Tfloat)(*this)(px,ny,z,c), Icn = (Tfloat)(*this)(x,ny,z,c), Inn = (Tfloat)(*this)(nx,ny,z,c), + Ian = (Tfloat)(*this)(ax,ny,z,c), + In = Icn + 0.5f*(dx*(-Ipn + Inn) + dx*dx*(2*Ipn - 5*Icn + 4*Inn - Ian) + dx*dx*dx*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ipa = (Tfloat)(*this)(px,ay,z,c), Ica = (Tfloat)(*this)(x,ay,z,c), Ina = (Tfloat)(*this)(nx,ay,z,c), + Iaa = (Tfloat)(*this)(ax,ay,z,c), + Ia = Ica + 0.5f*(dx*(-Ipa + Ina) + dx*dx*(2*Ipa - 5*Ica + 4*Ina - Iaa) + dx*dx*dx*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dy*(-Ip + In) + dy*dy*(2*Ip - 5*Ic + 4*In - Ia) + dy*dy*dy*(-Ip + 3*Ic - 3*In + Ia)); + } + + T cubic_atXY_pc(const float fx, const float fy, const int z, const int c) const { + return cimg::type::cut(cubic_atXY_p(fx,fy,z,c)); + } + + T _cubic_atXY_pc(const float fx, const float fy, const int z, const int c) const { + return cimg::type::cut(_cubic_atXY_p(fx,fy,z,c)); + } + + //! Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X,Y and Z-coordinates. + /** + Similar to cubic_atX(float,int,int,int,const T) const, except that the cubic interpolation and boundary checking + are achieved both for X,Y and Z-coordinates. + **/ + Tfloat cubic_atXYZ(const float fx, const float fy, const float fz, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), px = x - 1, nx = x + 1, ax = x + 2, + y = (int)fy - (fy>=0?0:1), py = y - 1, ny = y + 1, ay = y + 2, + z = (int)fz - (fz>=0?0:1), pz = z - 1, nz = z + 1, az = z + 2; + const float dx = fx - x, dy = fy - y, dz = fz - z; + const Tfloat + Ippp = (Tfloat)atXYZ(px,py,pz,c,out_value), Icpp = (Tfloat)atXYZ(x,py,pz,c,out_value), + Inpp = (Tfloat)atXYZ(nx,py,pz,c,out_value), Iapp = (Tfloat)atXYZ(ax,py,pz,c,out_value), + Ipp = Icpp + 0.5f*(dx*(-Ippp + Inpp) + dx*dx*(2*Ippp - 5*Icpp + 4*Inpp - Iapp) + + dx*dx*dx*(-Ippp + 3*Icpp - 3*Inpp + Iapp)), + Ipcp = (Tfloat)atXYZ(px,y,pz,c,out_value), Iccp = (Tfloat)atXYZ(x, y,pz,c,out_value), + Incp = (Tfloat)atXYZ(nx,y,pz,c,out_value), Iacp = (Tfloat)atXYZ(ax,y,pz,c,out_value), + Icp = Iccp + 0.5f*(dx*(-Ipcp + Incp) + dx*dx*(2*Ipcp - 5*Iccp + 4*Incp - Iacp) + + dx*dx*dx*(-Ipcp + 3*Iccp - 3*Incp + Iacp)), + Ipnp = (Tfloat)atXYZ(px,ny,pz,c,out_value), Icnp = (Tfloat)atXYZ(x,ny,pz,c,out_value), + Innp = (Tfloat)atXYZ(nx,ny,pz,c,out_value), Ianp = (Tfloat)atXYZ(ax,ny,pz,c,out_value), + Inp = Icnp + 0.5f*(dx*(-Ipnp + Innp) + dx*dx*(2*Ipnp - 5*Icnp + 4*Innp - Ianp) + + dx*dx*dx*(-Ipnp + 3*Icnp - 3*Innp + Ianp)), + Ipap = (Tfloat)atXYZ(px,ay,pz,c,out_value), Icap = (Tfloat)atXYZ(x,ay,pz,c,out_value), + Inap = (Tfloat)atXYZ(nx,ay,pz,c,out_value), Iaap = (Tfloat)atXYZ(ax,ay,pz,c,out_value), + Iap = Icap + 0.5f*(dx*(-Ipap + Inap) + dx*dx*(2*Ipap - 5*Icap + 4*Inap - Iaap) + + dx*dx*dx*(-Ipap + 3*Icap - 3*Inap + Iaap)), + Ip = Icp + 0.5f*(dy*(-Ipp + Inp) + dy*dy*(2*Ipp - 5*Icp + 4*Inp - Iap) + + dy*dy*dy*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ippc = (Tfloat)atXYZ(px,py,z,c,out_value), Icpc = (Tfloat)atXYZ(x,py,z,c,out_value), + Inpc = (Tfloat)atXYZ(nx,py,z,c,out_value), Iapc = (Tfloat)atXYZ(ax,py,z,c,out_value), + Ipc = Icpc + 0.5f*(dx*(-Ippc + Inpc) + dx*dx*(2*Ippc - 5*Icpc + 4*Inpc - Iapc) + + dx*dx*dx*(-Ippc + 3*Icpc - 3*Inpc + Iapc)), + Ipcc = (Tfloat)atXYZ(px,y,z,c,out_value), Iccc = (Tfloat)atXYZ(x, y,z,c,out_value), + Incc = (Tfloat)atXYZ(nx,y,z,c,out_value), Iacc = (Tfloat)atXYZ(ax,y,z,c,out_value), + Icc = Iccc + 0.5f*(dx*(-Ipcc + Incc) + dx*dx*(2*Ipcc - 5*Iccc + 4*Incc - Iacc) + + dx*dx*dx*(-Ipcc + 3*Iccc - 3*Incc + Iacc)), + Ipnc = (Tfloat)atXYZ(px,ny,z,c,out_value), Icnc = (Tfloat)atXYZ(x,ny,z,c,out_value), + Innc = (Tfloat)atXYZ(nx,ny,z,c,out_value), Ianc = (Tfloat)atXYZ(ax,ny,z,c,out_value), + Inc = Icnc + 0.5f*(dx*(-Ipnc + Innc) + dx*dx*(2*Ipnc - 5*Icnc + 4*Innc - Ianc) + + dx*dx*dx*(-Ipnc + 3*Icnc - 3*Innc + Ianc)), + Ipac = (Tfloat)atXYZ(px,ay,z,c,out_value), Icac = (Tfloat)atXYZ(x,ay,z,c,out_value), + Inac = (Tfloat)atXYZ(nx,ay,z,c,out_value), Iaac = (Tfloat)atXYZ(ax,ay,z,c,out_value), + Iac = Icac + 0.5f*(dx*(-Ipac + Inac) + dx*dx*(2*Ipac - 5*Icac + 4*Inac - Iaac) + + dx*dx*dx*(-Ipac + 3*Icac - 3*Inac + Iaac)), + Ic = Icc + 0.5f*(dy*(-Ipc + Inc) + dy*dy*(2*Ipc - 5*Icc + 4*Inc - Iac) + + dy*dy*dy*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ippn = (Tfloat)atXYZ(px,py,nz,c,out_value), Icpn = (Tfloat)atXYZ(x,py,nz,c,out_value), + Inpn = (Tfloat)atXYZ(nx,py,nz,c,out_value), Iapn = (Tfloat)atXYZ(ax,py,nz,c,out_value), + Ipn = Icpn + 0.5f*(dx*(-Ippn + Inpn) + dx*dx*(2*Ippn - 5*Icpn + 4*Inpn - Iapn) + + dx*dx*dx*(-Ippn + 3*Icpn - 3*Inpn + Iapn)), + Ipcn = (Tfloat)atXYZ(px,y,nz,c,out_value), Iccn = (Tfloat)atXYZ(x, y,nz,c,out_value), + Incn = (Tfloat)atXYZ(nx,y,nz,c,out_value), Iacn = (Tfloat)atXYZ(ax,y,nz,c,out_value), + Icn = Iccn + 0.5f*(dx*(-Ipcn + Incn) + dx*dx*(2*Ipcn - 5*Iccn + 4*Incn - Iacn) + + dx*dx*dx*(-Ipcn + 3*Iccn - 3*Incn + Iacn)), + Ipnn = (Tfloat)atXYZ(px,ny,nz,c,out_value), Icnn = (Tfloat)atXYZ(x,ny,nz,c,out_value), + Innn = (Tfloat)atXYZ(nx,ny,nz,c,out_value), Iann = (Tfloat)atXYZ(ax,ny,nz,c,out_value), + Inn = Icnn + 0.5f*(dx*(-Ipnn + Innn) + dx*dx*(2*Ipnn - 5*Icnn + 4*Innn - Iann) + + dx*dx*dx*(-Ipnn + 3*Icnn - 3*Innn + Iann)), + Ipan = (Tfloat)atXYZ(px,ay,nz,c,out_value), Ican = (Tfloat)atXYZ(x,ay,nz,c,out_value), + Inan = (Tfloat)atXYZ(nx,ay,nz,c,out_value), Iaan = (Tfloat)atXYZ(ax,ay,nz,c,out_value), + Ian = Ican + 0.5f*(dx*(-Ipan + Inan) + dx*dx*(2*Ipan - 5*Ican + 4*Inan - Iaan) + + dx*dx*dx*(-Ipan + 3*Ican - 3*Inan + Iaan)), + In = Icn + 0.5f*(dy*(-Ipn + Inn) + dy*dy*(2*Ipn - 5*Icn + 4*Inn - Ian) + + dy*dy*dy*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ippa = (Tfloat)atXYZ(px,py,az,c,out_value), Icpa = (Tfloat)atXYZ(x,py,az,c,out_value), + Inpa = (Tfloat)atXYZ(nx,py,az,c,out_value), Iapa = (Tfloat)atXYZ(ax,py,az,c,out_value), + Ipa = Icpa + 0.5f*(dx*(-Ippa + Inpa) + dx*dx*(2*Ippa - 5*Icpa + 4*Inpa - Iapa) + + dx*dx*dx*(-Ippa + 3*Icpa - 3*Inpa + Iapa)), + Ipca = (Tfloat)atXYZ(px,y,az,c,out_value), Icca = (Tfloat)atXYZ(x, y,az,c,out_value), + Inca = (Tfloat)atXYZ(nx,y,az,c,out_value), Iaca = (Tfloat)atXYZ(ax,y,az,c,out_value), + Ica = Icca + 0.5f*(dx*(-Ipca + Inca) + dx*dx*(2*Ipca - 5*Icca + 4*Inca - Iaca) + + dx*dx*dx*(-Ipca + 3*Icca - 3*Inca + Iaca)), + Ipna = (Tfloat)atXYZ(px,ny,az,c,out_value), Icna = (Tfloat)atXYZ(x,ny,az,c,out_value), + Inna = (Tfloat)atXYZ(nx,ny,az,c,out_value), Iana = (Tfloat)atXYZ(ax,ny,az,c,out_value), + Ina = Icna + 0.5f*(dx*(-Ipna + Inna) + dx*dx*(2*Ipna - 5*Icna + 4*Inna - Iana) + + dx*dx*dx*(-Ipna + 3*Icna - 3*Inna + Iana)), + Ipaa = (Tfloat)atXYZ(px,ay,az,c,out_value), Icaa = (Tfloat)atXYZ(x,ay,az,c,out_value), + Inaa = (Tfloat)atXYZ(nx,ay,az,c,out_value), Iaaa = (Tfloat)atXYZ(ax,ay,az,c,out_value), + Iaa = Icaa + 0.5f*(dx*(-Ipaa + Inaa) + dx*dx*(2*Ipaa - 5*Icaa + 4*Inaa - Iaaa) + + dx*dx*dx*(-Ipaa + 3*Icaa - 3*Inaa + Iaaa)), + Ia = Ica + 0.5f*(dy*(-Ipa + Ina) + dy*dy*(2*Ipa - 5*Ica + 4*Ina - Iaa) + + dy*dy*dy*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dz*(-Ip + In) + dz*dz*(2*Ip - 5*Ic + 4*In - Ia) + dz*dz*dz*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Dirichlet boundary conditions for the XYZ-coordinates. + /** + Similar to cubic_atXYZ(float,float,float,int,const T) const, except that the return value is clamped to stay + in the min/max range of the datatype \c T. + **/ + T cubic_atXYZ_c(const float fx, const float fy, const float fz, const int c, const T& out_value) const { + return cimg::type::cut(cubic_atXYZ(fx,fy,fz,c,out_value)); + } + + //! Return pixel value, using cubic interpolation and Neumann boundary conditions for the X,Y and Z-coordinates. + /** + Similar to cubic_atX(float,int,int,int) const, except that the cubic interpolation and boundary checking + are achieved both for X,Y and Z-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _cubic_atXYZ(float,float,float,int). + **/ + Tfloat cubic_atXYZ(const float fx, const float fy, const float fz, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atXYZ(): Empty instance.", + cimg_instance); + return _cubic_atXYZ(fx,fy,fz,c); + } + + Tfloat _cubic_atXYZ(const float fx, const float fy, const float fz, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::cut(fx,0,width() - 1), + nfy = cimg::type::is_nan(fy)?0:cimg::cut(fy,0,height() - 1), + nfz = cimg::type::is_nan(fz)?0:cimg::cut(fz,0,depth() - 1); + const int x = (int)nfx, y = (int)nfy, z = (int)nfz; + const float dx = nfx - x, dy = nfy - y, dz = nfz - z; + const int + px = x - 1<0?0:x - 1, nx = dx>0?x + 1:x, ax = x + 2>=width()?width() - 1:x + 2, + py = y - 1<0?0:y - 1, ny = dy>0?y + 1:y, ay = y + 2>=height()?height() - 1:y + 2, + pz = z - 1<0?0:z - 1, nz = dz>0?z + 1:z, az = z + 2>=depth()?depth() - 1:z + 2; + const Tfloat + Ippp = (Tfloat)(*this)(px,py,pz,c), Icpp = (Tfloat)(*this)(x,py,pz,c), + Inpp = (Tfloat)(*this)(nx,py,pz,c), Iapp = (Tfloat)(*this)(ax,py,pz,c), + Ipp = Icpp + 0.5f*(dx*(-Ippp + Inpp) + dx*dx*(2*Ippp - 5*Icpp + 4*Inpp - Iapp) + + dx*dx*dx*(-Ippp + 3*Icpp - 3*Inpp + Iapp)), + Ipcp = (Tfloat)(*this)(px,y,pz,c), Iccp = (Tfloat)(*this)(x, y,pz,c), + Incp = (Tfloat)(*this)(nx,y,pz,c), Iacp = (Tfloat)(*this)(ax,y,pz,c), + Icp = Iccp + 0.5f*(dx*(-Ipcp + Incp) + dx*dx*(2*Ipcp - 5*Iccp + 4*Incp - Iacp) + + dx*dx*dx*(-Ipcp + 3*Iccp - 3*Incp + Iacp)), + Ipnp = (Tfloat)(*this)(px,ny,pz,c), Icnp = (Tfloat)(*this)(x,ny,pz,c), + Innp = (Tfloat)(*this)(nx,ny,pz,c), Ianp = (Tfloat)(*this)(ax,ny,pz,c), + Inp = Icnp + 0.5f*(dx*(-Ipnp + Innp) + dx*dx*(2*Ipnp - 5*Icnp + 4*Innp - Ianp) + + dx*dx*dx*(-Ipnp + 3*Icnp - 3*Innp + Ianp)), + Ipap = (Tfloat)(*this)(px,ay,pz,c), Icap = (Tfloat)(*this)(x,ay,pz,c), + Inap = (Tfloat)(*this)(nx,ay,pz,c), Iaap = (Tfloat)(*this)(ax,ay,pz,c), + Iap = Icap + 0.5f*(dx*(-Ipap + Inap) + dx*dx*(2*Ipap - 5*Icap + 4*Inap - Iaap) + + dx*dx*dx*(-Ipap + 3*Icap - 3*Inap + Iaap)), + Ip = Icp + 0.5f*(dy*(-Ipp + Inp) + dy*dy*(2*Ipp - 5*Icp + 4*Inp - Iap) + + dy*dy*dy*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ippc = (Tfloat)(*this)(px,py,z,c), Icpc = (Tfloat)(*this)(x,py,z,c), + Inpc = (Tfloat)(*this)(nx,py,z,c), Iapc = (Tfloat)(*this)(ax,py,z,c), + Ipc = Icpc + 0.5f*(dx*(-Ippc + Inpc) + dx*dx*(2*Ippc - 5*Icpc + 4*Inpc - Iapc) + + dx*dx*dx*(-Ippc + 3*Icpc - 3*Inpc + Iapc)), + Ipcc = (Tfloat)(*this)(px,y,z,c), Iccc = (Tfloat)(*this)(x, y,z,c), + Incc = (Tfloat)(*this)(nx,y,z,c), Iacc = (Tfloat)(*this)(ax,y,z,c), + Icc = Iccc + 0.5f*(dx*(-Ipcc + Incc) + dx*dx*(2*Ipcc - 5*Iccc + 4*Incc - Iacc) + + dx*dx*dx*(-Ipcc + 3*Iccc - 3*Incc + Iacc)), + Ipnc = (Tfloat)(*this)(px,ny,z,c), Icnc = (Tfloat)(*this)(x,ny,z,c), + Innc = (Tfloat)(*this)(nx,ny,z,c), Ianc = (Tfloat)(*this)(ax,ny,z,c), + Inc = Icnc + 0.5f*(dx*(-Ipnc + Innc) + dx*dx*(2*Ipnc - 5*Icnc + 4*Innc - Ianc) + + dx*dx*dx*(-Ipnc + 3*Icnc - 3*Innc + Ianc)), + Ipac = (Tfloat)(*this)(px,ay,z,c), Icac = (Tfloat)(*this)(x,ay,z,c), + Inac = (Tfloat)(*this)(nx,ay,z,c), Iaac = (Tfloat)(*this)(ax,ay,z,c), + Iac = Icac + 0.5f*(dx*(-Ipac + Inac) + dx*dx*(2*Ipac - 5*Icac + 4*Inac - Iaac) + + dx*dx*dx*(-Ipac + 3*Icac - 3*Inac + Iaac)), + Ic = Icc + 0.5f*(dy*(-Ipc + Inc) + dy*dy*(2*Ipc - 5*Icc + 4*Inc - Iac) + + dy*dy*dy*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ippn = (Tfloat)(*this)(px,py,nz,c), Icpn = (Tfloat)(*this)(x,py,nz,c), + Inpn = (Tfloat)(*this)(nx,py,nz,c), Iapn = (Tfloat)(*this)(ax,py,nz,c), + Ipn = Icpn + 0.5f*(dx*(-Ippn + Inpn) + dx*dx*(2*Ippn - 5*Icpn + 4*Inpn - Iapn) + + dx*dx*dx*(-Ippn + 3*Icpn - 3*Inpn + Iapn)), + Ipcn = (Tfloat)(*this)(px,y,nz,c), Iccn = (Tfloat)(*this)(x, y,nz,c), + Incn = (Tfloat)(*this)(nx,y,nz,c), Iacn = (Tfloat)(*this)(ax,y,nz,c), + Icn = Iccn + 0.5f*(dx*(-Ipcn + Incn) + dx*dx*(2*Ipcn - 5*Iccn + 4*Incn - Iacn) + + dx*dx*dx*(-Ipcn + 3*Iccn - 3*Incn + Iacn)), + Ipnn = (Tfloat)(*this)(px,ny,nz,c), Icnn = (Tfloat)(*this)(x,ny,nz,c), + Innn = (Tfloat)(*this)(nx,ny,nz,c), Iann = (Tfloat)(*this)(ax,ny,nz,c), + Inn = Icnn + 0.5f*(dx*(-Ipnn + Innn) + dx*dx*(2*Ipnn - 5*Icnn + 4*Innn - Iann) + + dx*dx*dx*(-Ipnn + 3*Icnn - 3*Innn + Iann)), + Ipan = (Tfloat)(*this)(px,ay,nz,c), Ican = (Tfloat)(*this)(x,ay,nz,c), + Inan = (Tfloat)(*this)(nx,ay,nz,c), Iaan = (Tfloat)(*this)(ax,ay,nz,c), + Ian = Ican + 0.5f*(dx*(-Ipan + Inan) + dx*dx*(2*Ipan - 5*Ican + 4*Inan - Iaan) + + dx*dx*dx*(-Ipan + 3*Ican - 3*Inan + Iaan)), + In = Icn + 0.5f*(dy*(-Ipn + Inn) + dy*dy*(2*Ipn - 5*Icn + 4*Inn - Ian) + + dy*dy*dy*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ippa = (Tfloat)(*this)(px,py,az,c), Icpa = (Tfloat)(*this)(x,py,az,c), + Inpa = (Tfloat)(*this)(nx,py,az,c), Iapa = (Tfloat)(*this)(ax,py,az,c), + Ipa = Icpa + 0.5f*(dx*(-Ippa + Inpa) + dx*dx*(2*Ippa - 5*Icpa + 4*Inpa - Iapa) + + dx*dx*dx*(-Ippa + 3*Icpa - 3*Inpa + Iapa)), + Ipca = (Tfloat)(*this)(px,y,az,c), Icca = (Tfloat)(*this)(x, y,az,c), + Inca = (Tfloat)(*this)(nx,y,az,c), Iaca = (Tfloat)(*this)(ax,y,az,c), + Ica = Icca + 0.5f*(dx*(-Ipca + Inca) + dx*dx*(2*Ipca - 5*Icca + 4*Inca - Iaca) + + dx*dx*dx*(-Ipca + 3*Icca - 3*Inca + Iaca)), + Ipna = (Tfloat)(*this)(px,ny,az,c), Icna = (Tfloat)(*this)(x,ny,az,c), + Inna = (Tfloat)(*this)(nx,ny,az,c), Iana = (Tfloat)(*this)(ax,ny,az,c), + Ina = Icna + 0.5f*(dx*(-Ipna + Inna) + dx*dx*(2*Ipna - 5*Icna + 4*Inna - Iana) + + dx*dx*dx*(-Ipna + 3*Icna - 3*Inna + Iana)), + Ipaa = (Tfloat)(*this)(px,ay,az,c), Icaa = (Tfloat)(*this)(x,ay,az,c), + Inaa = (Tfloat)(*this)(nx,ay,az,c), Iaaa = (Tfloat)(*this)(ax,ay,az,c), + Iaa = Icaa + 0.5f*(dx*(-Ipaa + Inaa) + dx*dx*(2*Ipaa - 5*Icaa + 4*Inaa - Iaaa) + + dx*dx*dx*(-Ipaa + 3*Icaa - 3*Inaa + Iaaa)), + Ia = Ica + 0.5f*(dy*(-Ipa + Ina) + dy*dy*(2*Ipa - 5*Ica + 4*Ina - Iaa) + + dy*dy*dy*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dz*(-Ip + In) + dz*dz*(2*Ip - 5*Ic + 4*In - Ia) + dz*dz*dz*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Neumann boundary conditions for the XYZ-coordinates. + /** + Similar to cubic_atXYZ(float,float,float,int) const, except that the return value is clamped to stay in the + min/max range of the datatype \c T. + **/ + T cubic_atXYZ_c(const float fx, const float fy, const float fz, const int c) const { + return cimg::type::cut(cubic_atXYZ(fx,fy,fz,c)); + } + + T _cubic_atXYZ_c(const float fx, const float fy, const float fz, const int c) const { + return cimg::type::cut(_cubic_atXYZ(fx,fy,fz,c)); + } + + //! Return pixel value, using cubic interpolation and Neumann boundary conditions for the X,Y and Z-coordinates. + /** + Similar to cubic_atX(float,int,int,int) const, except that the cubic interpolation and boundary checking + are achieved both for X,Y and Z-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _cubic_atXYZ(float,float,float,int). + **/ + Tfloat cubic_atXYZ_p(const float fx, const float fy, const float fz, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atXYZ_p(): Empty instance.", + cimg_instance); + return _cubic_atXYZ_p(fx,fy,fz,c); + } + + Tfloat _cubic_atXYZ_p(const float fx, const float fy, const float fz, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::mod(fx,_width - 0.5f), + nfy = cimg::type::is_nan(fy)?0:cimg::mod(fy,_height - 0.5f), + nfz = cimg::type::is_nan(fz)?0:cimg::mod(fz,_depth - 0.5f); + const int x = (int)nfx, y = (int)nfy, z = (int)nfz; + const float dx = nfx - x, dy = nfy - y, dz = nfz - z; + const int + px = cimg::mod(x - 1,width()), nx = cimg::mod(x + 1,width()), ax = cimg::mod(x + 2,width()), + py = cimg::mod(y - 1,height()), ny = cimg::mod(y + 1,height()), ay = cimg::mod(y + 2,height()), + pz = cimg::mod(z - 1,depth()), nz = cimg::mod(z + 1,depth()), az = cimg::mod(z + 2,depth()); + const Tfloat + Ippp = (Tfloat)(*this)(px,py,pz,c), Icpp = (Tfloat)(*this)(x,py,pz,c), + Inpp = (Tfloat)(*this)(nx,py,pz,c), Iapp = (Tfloat)(*this)(ax,py,pz,c), + Ipp = Icpp + 0.5f*(dx*(-Ippp + Inpp) + dx*dx*(2*Ippp - 5*Icpp + 4*Inpp - Iapp) + + dx*dx*dx*(-Ippp + 3*Icpp - 3*Inpp + Iapp)), + Ipcp = (Tfloat)(*this)(px,y,pz,c), Iccp = (Tfloat)(*this)(x, y,pz,c), + Incp = (Tfloat)(*this)(nx,y,pz,c), Iacp = (Tfloat)(*this)(ax,y,pz,c), + Icp = Iccp + 0.5f*(dx*(-Ipcp + Incp) + dx*dx*(2*Ipcp - 5*Iccp + 4*Incp - Iacp) + + dx*dx*dx*(-Ipcp + 3*Iccp - 3*Incp + Iacp)), + Ipnp = (Tfloat)(*this)(px,ny,pz,c), Icnp = (Tfloat)(*this)(x,ny,pz,c), + Innp = (Tfloat)(*this)(nx,ny,pz,c), Ianp = (Tfloat)(*this)(ax,ny,pz,c), + Inp = Icnp + 0.5f*(dx*(-Ipnp + Innp) + dx*dx*(2*Ipnp - 5*Icnp + 4*Innp - Ianp) + + dx*dx*dx*(-Ipnp + 3*Icnp - 3*Innp + Ianp)), + Ipap = (Tfloat)(*this)(px,ay,pz,c), Icap = (Tfloat)(*this)(x,ay,pz,c), + Inap = (Tfloat)(*this)(nx,ay,pz,c), Iaap = (Tfloat)(*this)(ax,ay,pz,c), + Iap = Icap + 0.5f*(dx*(-Ipap + Inap) + dx*dx*(2*Ipap - 5*Icap + 4*Inap - Iaap) + + dx*dx*dx*(-Ipap + 3*Icap - 3*Inap + Iaap)), + Ip = Icp + 0.5f*(dy*(-Ipp + Inp) + dy*dy*(2*Ipp - 5*Icp + 4*Inp - Iap) + + dy*dy*dy*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ippc = (Tfloat)(*this)(px,py,z,c), Icpc = (Tfloat)(*this)(x,py,z,c), + Inpc = (Tfloat)(*this)(nx,py,z,c), Iapc = (Tfloat)(*this)(ax,py,z,c), + Ipc = Icpc + 0.5f*(dx*(-Ippc + Inpc) + dx*dx*(2*Ippc - 5*Icpc + 4*Inpc - Iapc) + + dx*dx*dx*(-Ippc + 3*Icpc - 3*Inpc + Iapc)), + Ipcc = (Tfloat)(*this)(px,y,z,c), Iccc = (Tfloat)(*this)(x, y,z,c), + Incc = (Tfloat)(*this)(nx,y,z,c), Iacc = (Tfloat)(*this)(ax,y,z,c), + Icc = Iccc + 0.5f*(dx*(-Ipcc + Incc) + dx*dx*(2*Ipcc - 5*Iccc + 4*Incc - Iacc) + + dx*dx*dx*(-Ipcc + 3*Iccc - 3*Incc + Iacc)), + Ipnc = (Tfloat)(*this)(px,ny,z,c), Icnc = (Tfloat)(*this)(x,ny,z,c), + Innc = (Tfloat)(*this)(nx,ny,z,c), Ianc = (Tfloat)(*this)(ax,ny,z,c), + Inc = Icnc + 0.5f*(dx*(-Ipnc + Innc) + dx*dx*(2*Ipnc - 5*Icnc + 4*Innc - Ianc) + + dx*dx*dx*(-Ipnc + 3*Icnc - 3*Innc + Ianc)), + Ipac = (Tfloat)(*this)(px,ay,z,c), Icac = (Tfloat)(*this)(x,ay,z,c), + Inac = (Tfloat)(*this)(nx,ay,z,c), Iaac = (Tfloat)(*this)(ax,ay,z,c), + Iac = Icac + 0.5f*(dx*(-Ipac + Inac) + dx*dx*(2*Ipac - 5*Icac + 4*Inac - Iaac) + + dx*dx*dx*(-Ipac + 3*Icac - 3*Inac + Iaac)), + Ic = Icc + 0.5f*(dy*(-Ipc + Inc) + dy*dy*(2*Ipc - 5*Icc + 4*Inc - Iac) + + dy*dy*dy*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ippn = (Tfloat)(*this)(px,py,nz,c), Icpn = (Tfloat)(*this)(x,py,nz,c), + Inpn = (Tfloat)(*this)(nx,py,nz,c), Iapn = (Tfloat)(*this)(ax,py,nz,c), + Ipn = Icpn + 0.5f*(dx*(-Ippn + Inpn) + dx*dx*(2*Ippn - 5*Icpn + 4*Inpn - Iapn) + + dx*dx*dx*(-Ippn + 3*Icpn - 3*Inpn + Iapn)), + Ipcn = (Tfloat)(*this)(px,y,nz,c), Iccn = (Tfloat)(*this)(x, y,nz,c), + Incn = (Tfloat)(*this)(nx,y,nz,c), Iacn = (Tfloat)(*this)(ax,y,nz,c), + Icn = Iccn + 0.5f*(dx*(-Ipcn + Incn) + dx*dx*(2*Ipcn - 5*Iccn + 4*Incn - Iacn) + + dx*dx*dx*(-Ipcn + 3*Iccn - 3*Incn + Iacn)), + Ipnn = (Tfloat)(*this)(px,ny,nz,c), Icnn = (Tfloat)(*this)(x,ny,nz,c), + Innn = (Tfloat)(*this)(nx,ny,nz,c), Iann = (Tfloat)(*this)(ax,ny,nz,c), + Inn = Icnn + 0.5f*(dx*(-Ipnn + Innn) + dx*dx*(2*Ipnn - 5*Icnn + 4*Innn - Iann) + + dx*dx*dx*(-Ipnn + 3*Icnn - 3*Innn + Iann)), + Ipan = (Tfloat)(*this)(px,ay,nz,c), Ican = (Tfloat)(*this)(x,ay,nz,c), + Inan = (Tfloat)(*this)(nx,ay,nz,c), Iaan = (Tfloat)(*this)(ax,ay,nz,c), + Ian = Ican + 0.5f*(dx*(-Ipan + Inan) + dx*dx*(2*Ipan - 5*Ican + 4*Inan - Iaan) + + dx*dx*dx*(-Ipan + 3*Ican - 3*Inan + Iaan)), + In = Icn + 0.5f*(dy*(-Ipn + Inn) + dy*dy*(2*Ipn - 5*Icn + 4*Inn - Ian) + + dy*dy*dy*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ippa = (Tfloat)(*this)(px,py,az,c), Icpa = (Tfloat)(*this)(x,py,az,c), + Inpa = (Tfloat)(*this)(nx,py,az,c), Iapa = (Tfloat)(*this)(ax,py,az,c), + Ipa = Icpa + 0.5f*(dx*(-Ippa + Inpa) + dx*dx*(2*Ippa - 5*Icpa + 4*Inpa - Iapa) + + dx*dx*dx*(-Ippa + 3*Icpa - 3*Inpa + Iapa)), + Ipca = (Tfloat)(*this)(px,y,az,c), Icca = (Tfloat)(*this)(x, y,az,c), + Inca = (Tfloat)(*this)(nx,y,az,c), Iaca = (Tfloat)(*this)(ax,y,az,c), + Ica = Icca + 0.5f*(dx*(-Ipca + Inca) + dx*dx*(2*Ipca - 5*Icca + 4*Inca - Iaca) + + dx*dx*dx*(-Ipca + 3*Icca - 3*Inca + Iaca)), + Ipna = (Tfloat)(*this)(px,ny,az,c), Icna = (Tfloat)(*this)(x,ny,az,c), + Inna = (Tfloat)(*this)(nx,ny,az,c), Iana = (Tfloat)(*this)(ax,ny,az,c), + Ina = Icna + 0.5f*(dx*(-Ipna + Inna) + dx*dx*(2*Ipna - 5*Icna + 4*Inna - Iana) + + dx*dx*dx*(-Ipna + 3*Icna - 3*Inna + Iana)), + Ipaa = (Tfloat)(*this)(px,ay,az,c), Icaa = (Tfloat)(*this)(x,ay,az,c), + Inaa = (Tfloat)(*this)(nx,ay,az,c), Iaaa = (Tfloat)(*this)(ax,ay,az,c), + Iaa = Icaa + 0.5f*(dx*(-Ipaa + Inaa) + dx*dx*(2*Ipaa - 5*Icaa + 4*Inaa - Iaaa) + + dx*dx*dx*(-Ipaa + 3*Icaa - 3*Inaa + Iaaa)), + Ia = Ica + 0.5f*(dy*(-Ipa + Ina) + dy*dy*(2*Ipa - 5*Ica + 4*Ina - Iaa) + + dy*dy*dy*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dz*(-Ip + In) + dz*dz*(2*Ip - 5*Ic + 4*In - Ia) + dz*dz*dz*(-Ip + 3*Ic - 3*In + Ia)); + } + + T cubic_atXYZ_pc(const float fx, const float fy, const float fz, const int c) const { + return cimg::type::cut(cubic_atXYZ_p(fx,fy,fz,c)); + } + + T _cubic_atXYZ_pc(const float fx, const float fy, const float fz, const int c) const { + return cimg::type::cut(_cubic_atXYZ_p(fx,fy,fz,c)); + } + + //! Set pixel value, using linear interpolation for the X-coordinates. + /** + Set pixel value at specified coordinates (\c fx,\c y,\c z,\c c) in the image instance, in a way that + the value is spread amongst several neighbors if the pixel coordinates are float-valued. + \param value Pixel value to set. + \param fx X-coordinate of the pixel value (float-valued). + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param is_added Tells if the pixel value is added to (\c true), or simply replace (\c false) the current image + pixel(s). + \return A reference to the current image instance. + \note + - Calling this method with out-of-bounds coordinates does nothing. + **/ + CImg& set_linear_atX(const T& value, const float fx, const int y=0, const int z=0, const int c=0, + const bool is_added=false) { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1; + const float + dx = fx - x; + if (y>=0 && y=0 && z=0 && c=0 && x=0 && nx& set_linear_atXY(const T& value, const float fx, const float fy=0, const int z=0, const int c=0, + const bool is_added=false) { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1, + y = (int)fy - (fy>=0?0:1), ny = y + 1; + const float + dx = fx - x, + dy = fy - y; + if (z>=0 && z=0 && c=0 && y=0 && x=0 && nx=0 && ny=0 && x=0 && nx& set_linear_atXYZ(const T& value, const float fx, const float fy=0, const float fz=0, const int c=0, + const bool is_added=false) { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1, + y = (int)fy - (fy>=0?0:1), ny = y + 1, + z = (int)fz - (fz>=0?0:1), nz = z + 1; + const float + dx = fx - x, + dy = fy - y, + dz = fz - z; + if (c>=0 && c=0 && z=0 && y=0 && x=0 && nx=0 && ny=0 && x=0 && nx=0 && nz=0 && y=0 && x=0 && nx=0 && ny=0 && x=0 && nx image whose buffer data() is a \c char* string describing the list of all pixel values + of the image instance (written in base 10), separated by specified \c separator character. + \param separator A \c char character which specifies the separator between values in the returned C-string. + \param max_size Maximum size of the returned image (or \c 0 if no limits are set). + \param format For float/double-values, tell the printf format used to generate the text representation + of the numbers (or \c 0 for default representation). + \note + - The returned image is never empty. + - For an empty image instance, the returned string is "". + - If \c max_size is equal to \c 0, there are no limits on the size of the returned string. + - Otherwise, if the maximum number of string characters is exceeded, the value string is cut off + and terminated by character \c '\0'. In that case, the returned image size is max_size + 1. + **/ + CImg value_string(const char separator=',', const unsigned int max_size=0, + const char *const format=0) const { + if (is_empty() || max_size==1) return CImg(1,1,1,1,0); + CImgList items; + CImg s_item(256); *s_item = 0; + const T *ptrs = _data; + unsigned int string_size = 0; + const char *const _format = format?format:cimg::type::format(); + for (ulongT off = 0, siz = size(); off::format(*(ptrs++))); + CImg item(s_item._data,printed_size); + item[printed_size - 1] = separator; + item.move_to(items); + if (max_size) string_size+=printed_size; + } + CImg res; + (items>'x').move_to(res); + if (max_size && res._width>=max_size) res.crop(0,max_size - 1); + res.back() = 0; + return res; + } + + //@} + //------------------------------------- + // + //! \name Instance Checking + //@{ + //------------------------------------- + + //! Test shared state of the pixel buffer. + /** + Return \c true if image instance has a shared memory buffer, and \c false otherwise. + \note + - A shared image do not own his pixel buffer data() and will not deallocate it on destruction. + - Most of the time, a \c CImg image instance will \e not be shared. + - A shared image can only be obtained by a limited set of constructors and methods (see list below). + **/ + bool is_shared() const { + return _is_shared; + } + + //! Test if image instance is empty. + /** + Return \c true, if image instance is empty, i.e. does \e not contain any pixel values, has dimensions + \c 0 x \c 0 x \c 0 x \c 0 and a pixel buffer pointer set to \c 0 (null pointer), and \c false otherwise. + **/ + bool is_empty() const { + return !(_data && _width && _height && _depth && _spectrum); + } + + //! Test if image instance contains a 'inf' value. + /** + Return \c true, if image instance contains a 'inf' value, and \c false otherwise. + **/ + bool is_inf() const { + if (cimg::type::is_float()) cimg_for(*this,p,T) if (cimg::type::is_inf((float)*p)) return true; + return false; + } + + //! Test if image instance contains a NaN value. + /** + Return \c true, if image instance contains a NaN value, and \c false otherwise. + **/ + bool is_nan() const { + if (cimg::type::is_float()) cimg_for(*this,p,T) if (cimg::type::is_nan((float)*p)) return true; + return false; + } + + //! Test if image width is equal to specified value. + bool is_sameX(const unsigned int size_x) const { + return _width==size_x; + } + + //! Test if image width is equal to specified value. + template + bool is_sameX(const CImg& img) const { + return is_sameX(img._width); + } + + //! Test if image width is equal to specified value. + bool is_sameX(const CImgDisplay& disp) const { + return is_sameX(disp._width); + } + + //! Test if image height is equal to specified value. + bool is_sameY(const unsigned int size_y) const { + return _height==size_y; + } + + //! Test if image height is equal to specified value. + template + bool is_sameY(const CImg& img) const { + return is_sameY(img._height); + } + + //! Test if image height is equal to specified value. + bool is_sameY(const CImgDisplay& disp) const { + return is_sameY(disp._height); + } + + //! Test if image depth is equal to specified value. + bool is_sameZ(const unsigned int size_z) const { + return _depth==size_z; + } + + //! Test if image depth is equal to specified value. + template + bool is_sameZ(const CImg& img) const { + return is_sameZ(img._depth); + } + + //! Test if image spectrum is equal to specified value. + bool is_sameC(const unsigned int size_c) const { + return _spectrum==size_c; + } + + //! Test if image spectrum is equal to specified value. + template + bool is_sameC(const CImg& img) const { + return is_sameC(img._spectrum); + } + + //! Test if image width and height are equal to specified values. + /** + Test if is_sameX(unsigned int) const and is_sameY(unsigned int) const are both verified. + **/ + bool is_sameXY(const unsigned int size_x, const unsigned int size_y) const { + return _width==size_x && _height==size_y; + } + + //! Test if image width and height are the same as that of another image. + /** + Test if is_sameX(const CImg&) const and is_sameY(const CImg&) const are both verified. + **/ + template + bool is_sameXY(const CImg& img) const { + return is_sameXY(img._width,img._height); + } + + //! Test if image width and height are the same as that of an existing display window. + /** + Test if is_sameX(const CImgDisplay&) const and is_sameY(const CImgDisplay&) const are both verified. + **/ + bool is_sameXY(const CImgDisplay& disp) const { + return is_sameXY(disp._width,disp._height); + } + + //! Test if image width and depth are equal to specified values. + /** + Test if is_sameX(unsigned int) const and is_sameZ(unsigned int) const are both verified. + **/ + bool is_sameXZ(const unsigned int size_x, const unsigned int size_z) const { + return _width==size_x && _depth==size_z; + } + + //! Test if image width and depth are the same as that of another image. + /** + Test if is_sameX(const CImg&) const and is_sameZ(const CImg&) const are both verified. + **/ + template + bool is_sameXZ(const CImg& img) const { + return is_sameXZ(img._width,img._depth); + } + + //! Test if image width and spectrum are equal to specified values. + /** + Test if is_sameX(unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameXC(const unsigned int size_x, const unsigned int size_c) const { + return _width==size_x && _spectrum==size_c; + } + + //! Test if image width and spectrum are the same as that of another image. + /** + Test if is_sameX(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameXC(const CImg& img) const { + return is_sameXC(img._width,img._spectrum); + } + + //! Test if image height and depth are equal to specified values. + /** + Test if is_sameY(unsigned int) const and is_sameZ(unsigned int) const are both verified. + **/ + bool is_sameYZ(const unsigned int size_y, const unsigned int size_z) const { + return _height==size_y && _depth==size_z; + } + + //! Test if image height and depth are the same as that of another image. + /** + Test if is_sameY(const CImg&) const and is_sameZ(const CImg&) const are both verified. + **/ + template + bool is_sameYZ(const CImg& img) const { + return is_sameYZ(img._height,img._depth); + } + + //! Test if image height and spectrum are equal to specified values. + /** + Test if is_sameY(unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameYC(const unsigned int size_y, const unsigned int size_c) const { + return _height==size_y && _spectrum==size_c; + } + + //! Test if image height and spectrum are the same as that of another image. + /** + Test if is_sameY(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameYC(const CImg& img) const { + return is_sameYC(img._height,img._spectrum); + } + + //! Test if image depth and spectrum are equal to specified values. + /** + Test if is_sameZ(unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameZC(const unsigned int size_z, const unsigned int size_c) const { + return _depth==size_z && _spectrum==size_c; + } + + //! Test if image depth and spectrum are the same as that of another image. + /** + Test if is_sameZ(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameZC(const CImg& img) const { + return is_sameZC(img._depth,img._spectrum); + } + + //! Test if image width, height and depth are equal to specified values. + /** + Test if is_sameXY(unsigned int,unsigned int) const and is_sameZ(unsigned int) const are both verified. + **/ + bool is_sameXYZ(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z) const { + return is_sameXY(size_x,size_y) && _depth==size_z; + } + + //! Test if image width, height and depth are the same as that of another image. + /** + Test if is_sameXY(const CImg&) const and is_sameZ(const CImg&) const are both verified. + **/ + template + bool is_sameXYZ(const CImg& img) const { + return is_sameXYZ(img._width,img._height,img._depth); + } + + //! Test if image width, height and spectrum are equal to specified values. + /** + Test if is_sameXY(unsigned int,unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameXYC(const unsigned int size_x, const unsigned int size_y, const unsigned int size_c) const { + return is_sameXY(size_x,size_y) && _spectrum==size_c; + } + + //! Test if image width, height and spectrum are the same as that of another image. + /** + Test if is_sameXY(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameXYC(const CImg& img) const { + return is_sameXYC(img._width,img._height,img._spectrum); + } + + //! Test if image width, depth and spectrum are equal to specified values. + /** + Test if is_sameXZ(unsigned int,unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameXZC(const unsigned int size_x, const unsigned int size_z, const unsigned int size_c) const { + return is_sameXZ(size_x,size_z) && _spectrum==size_c; + } + + //! Test if image width, depth and spectrum are the same as that of another image. + /** + Test if is_sameXZ(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameXZC(const CImg& img) const { + return is_sameXZC(img._width,img._depth,img._spectrum); + } + + //! Test if image height, depth and spectrum are equal to specified values. + /** + Test if is_sameYZ(unsigned int,unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameYZC(const unsigned int size_y, const unsigned int size_z, const unsigned int size_c) const { + return is_sameYZ(size_y,size_z) && _spectrum==size_c; + } + + //! Test if image height, depth and spectrum are the same as that of another image. + /** + Test if is_sameYZ(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameYZC(const CImg& img) const { + return is_sameYZC(img._height,img._depth,img._spectrum); + } + + //! Test if image width, height, depth and spectrum are equal to specified values. + /** + Test if is_sameXYZ(unsigned int,unsigned int,unsigned int) const and is_sameC(unsigned int) const are both + verified. + **/ + bool is_sameXYZC(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c) const { + return is_sameXYZ(size_x,size_y,size_z) && _spectrum==size_c; + } + + //! Test if image width, height, depth and spectrum are the same as that of another image. + /** + Test if is_sameXYZ(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameXYZC(const CImg& img) const { + return is_sameXYZC(img._width,img._height,img._depth,img._spectrum); + } + + //! Test if specified coordinates are inside image bounds. + /** + Return \c true if pixel located at (\c x,\c y,\c z,\c c) is inside bounds of the image instance, + and \c false otherwise. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Return \c true only if all these conditions are verified: + - The image instance is \e not empty. + - 0<=x<=\ref width() - 1. + - 0<=y<=\ref height() - 1. + - 0<=z<=\ref depth() - 1. + - 0<=c<=\ref spectrum() - 1. + **/ + bool containsXYZC(const int x, const int y=0, const int z=0, const int c=0) const { + return !is_empty() && x>=0 && x=0 && y=0 && z=0 && c img(100,100,1,3); // Construct a 100x100 RGB color image + const unsigned long offset = 1249; // Offset to the pixel (49,12,0,0) + unsigned int x,y,z,c; + if (img.contains(img[offset],x,y,z,c)) { // Convert offset to (x,y,z,c) coordinates + std::printf("Offset %u refers to pixel located at (%u,%u,%u,%u).\n", + offset,x,y,z,c); + } + \endcode + **/ + template + bool contains(const T& pixel, t& x, t& y, t& z, t& c) const { + const ulongT wh = (ulongT)_width*_height, whd = wh*_depth, siz = whd*_spectrum; + const T *const ppixel = &pixel; + if (is_empty() || ppixel<_data || ppixel>=_data + siz) return false; + ulongT off = (ulongT)(ppixel - _data); + const ulongT nc = off/whd; + off%=whd; + const ulongT nz = off/wh; + off%=wh; + const ulongT ny = off/_width, nx = off%_width; + x = (t)nx; y = (t)ny; z = (t)nz; c = (t)nc; + return true; + } + + //! Test if pixel value is inside image bounds and get its X,Y and Z-coordinates. + /** + Similar to contains(const T&,t&,t&,t&,t&) const, except that only the X,Y and Z-coordinates are set. + **/ + template + bool contains(const T& pixel, t& x, t& y, t& z) const { + const ulongT wh = (ulongT)_width*_height, whd = wh*_depth, siz = whd*_spectrum; + const T *const ppixel = &pixel; + if (is_empty() || ppixel<_data || ppixel>=_data + siz) return false; + ulongT off = ((ulongT)(ppixel - _data))%whd; + const ulongT nz = off/wh; + off%=wh; + const ulongT ny = off/_width, nx = off%_width; + x = (t)nx; y = (t)ny; z = (t)nz; + return true; + } + + //! Test if pixel value is inside image bounds and get its X and Y-coordinates. + /** + Similar to contains(const T&,t&,t&,t&,t&) const, except that only the X and Y-coordinates are set. + **/ + template + bool contains(const T& pixel, t& x, t& y) const { + const ulongT wh = (ulongT)_width*_height, siz = wh*_depth*_spectrum; + const T *const ppixel = &pixel; + if (is_empty() || ppixel<_data || ppixel>=_data + siz) return false; + ulongT off = ((unsigned int)(ppixel - _data))%wh; + const ulongT ny = off/_width, nx = off%_width; + x = (t)nx; y = (t)ny; + return true; + } + + //! Test if pixel value is inside image bounds and get its X-coordinate. + /** + Similar to contains(const T&,t&,t&,t&,t&) const, except that only the X-coordinate is set. + **/ + template + bool contains(const T& pixel, t& x) const { + const T *const ppixel = &pixel; + if (is_empty() || ppixel<_data || ppixel>=_data + size()) return false; + x = (t)(((ulongT)(ppixel - _data))%_width); + return true; + } + + //! Test if pixel value is inside image bounds. + /** + Similar to contains(const T&,t&,t&,t&,t&) const, except that no pixel coordinates are set. + **/ + bool contains(const T& pixel) const { + const T *const ppixel = &pixel; + return !is_empty() && ppixel>=_data && ppixel<_data + size(); + } + + //! Test if pixel buffers of instance and input images overlap. + /** + Return \c true, if pixel buffers attached to image instance and input image \c img overlap, + and \c false otherwise. + \param img Input image to compare with. + \note + - Buffer overlapping may happen when manipulating \e shared images. + - If two image buffers overlap, operating on one of the image will probably modify the other one. + - Most of the time, \c CImg instances are \e non-shared and do not overlap between each others. + \par Example + \code + const CImg + img1("reference.jpg"), // Load RGB-color image + img2 = img1.get_shared_channel(1); // Get shared version of the green channel + if (img1.is_overlapped(img2)) { // Test succeeds, 'img1' and 'img2' overlaps + std::printf("Buffers overlap!\n"); + } + \endcode + **/ + template + bool is_overlapped(const CImg& img) const { + const ulongT csiz = size(), isiz = img.size(); + return !((void*)(_data + csiz)<=(void*)img._data || (void*)_data>=(void*)(img._data + isiz)); + } + + //! Test if the set {\c *this,\c primitives,\c colors,\c opacities} defines a valid 3D object. + /** + Return \c true is the 3D object represented by the set {\c *this,\c primitives,\c colors,\c opacities} defines a + valid 3D object, and \c false otherwise. The vertex coordinates are defined by the instance image. + \param primitives List of primitives of the 3D object. + \param colors List of colors of the 3D object. + \param opacities List (or image) of opacities of the 3D object. + \param full_check Tells if full checking of the 3D object must be performed. + \param[out] error_message C-string to contain the error message, if the test does not succeed. + \note + - Set \c full_checking to \c false to speed-up the 3D object checking. In this case, only the size of + each 3D object component is checked. + - Size of the string \c error_message should be at least 128-bytes long, to be able to contain the error message. + **/ + template + bool is_object3d(const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool full_check=true, + char *const error_message=0) const { + if (error_message) *error_message = 0; + + // Check consistency for the particular case of an empty 3D object. + if (is_empty()) { + if (primitives || colors || opacities) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines no vertices but %u primitives, " + "%u colors and %lu opacities", + _width,primitives._width,primitives._width, + colors._width,(unsigned long)opacities.size()); + return false; + } + return true; + } + + // Check consistency of vertices. + if (_height!=3 || _depth>1 || _spectrum>1) { // Check vertices dimensions + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) has invalid vertex dimensions (%u,%u,%u,%u)", + _width,primitives._width,_width,_height,_depth,_spectrum); + return false; + } + if (colors._width>primitives._width + 1) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines %u colors", + _width,primitives._width,colors._width); + return false; + } + if (opacities.size()>primitives._width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines %lu opacities", + _width,primitives._width,(unsigned long)opacities.size()); + return false; + } + if (!full_check) return true; + + // Check consistency of primitives. + cimglist_for(primitives,l) { + const CImg& primitive = primitives[l]; + const unsigned int psiz = (unsigned int)primitive.size(); + switch (psiz) { + case 1 : { // Point + const unsigned int i0 = (unsigned int)primitive(0); + if (i0>=_width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) refers to invalid vertex index %u in " + "point primitive [%u]", + _width,primitives._width,i0,l); + return false; + } + } break; + case 5 : { // Sphere + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1); + if (i0>=_width || i1>=_width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) refers to invalid vertex indices (%u,%u) in " + "sphere primitive [%u]", + _width,primitives._width,i0,i1,l); + return false; + } + } break; + case 2 : case 6 : { // Segment + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1); + if (i0>=_width || i1>=_width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) refers to invalid vertex indices (%u,%u) in " + "segment primitive [%u]", + _width,primitives._width,i0,i1,l); + return false; + } + } break; + case 3 : case 9 : { // Triangle + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2); + if (i0>=_width || i1>=_width || i2>=_width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) refers to invalid vertex indices (%u,%u,%u) in " + "triangle primitive [%u]", + _width,primitives._width,i0,i1,i2,l); + return false; + } + } break; + case 4 : case 12 : { // Quadrangle + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2), + i3 = (unsigned int)primitive(3); + if (i0>=_width || i1>=_width || i2>=_width || i3>=_width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) refers to invalid vertex indices (%u,%u,%u,%u) in " + "quadrangle primitive [%u]", + _width,primitives._width,i0,i1,i2,i3,l); + return false; + } + } break; + default : + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines an invalid primitive [%u] of size %u", + _width,primitives._width,l,(unsigned int)psiz); + return false; + } + } + + // Check consistency of colors. + cimglist_for(colors,c) { + const CImg& color = colors[c]; + if (!color) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines no color for primitive [%u]", + _width,primitives._width,c); + return false; + } + } + + // Check consistency of light texture. + if (colors._width>primitives._width) { + const CImg &light = colors.back(); + if (!light || light._depth>1) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines an invalid light texture (%u,%u,%u,%u)", + _width,primitives._width,light._width, + light._height,light._depth,light._spectrum); + return false; + } + } + + return true; + } + + //! Test if image instance represents a valid serialization of a 3D object. + /** + Return \c true if the image instance represents a valid serialization of a 3D object, and \c false otherwise. + \param full_check Tells if full checking of the instance must be performed. + \param[out] error_message C-string to contain the error message, if the test does not succeed. + \note + - Set \c full_check to \c false to speed-up the 3D object checking. In this case, only the size of + each 3D object component is checked. + - Size of the string \c error_message should be at least 128-bytes long, to be able to contain the error message. + **/ + bool is_CImg3d(const bool full_check=true, char *const error_message=0) const { + if (error_message) *error_message = 0; + + // Check instance dimension and header. + if (_width!=1 || _height<8 || _depth!=1 || _spectrum!=1) { + if (error_message) cimg_sprintf(error_message, + "CImg3d has invalid dimensions (%u,%u,%u,%u)", + _width,_height,_depth,_spectrum); + return false; + } + const T *ptrs = _data, *const ptre = end(); + if (!_is_CImg3d(*(ptrs++),'C') || !_is_CImg3d(*(ptrs++),'I') || !_is_CImg3d(*(ptrs++),'m') || + !_is_CImg3d(*(ptrs++),'g') || !_is_CImg3d(*(ptrs++),'3') || !_is_CImg3d(*(ptrs++),'d')) { + if (error_message) cimg_sprintf(error_message, + "CImg3d header not found"); + return false; + } + const unsigned int + nb_points = cimg::float2uint((float)*(ptrs++)), + nb_primitives = cimg::float2uint((float)*(ptrs++)); + + // Check consistency of number of vertices / primitives. + if (!full_check) { + const ulongT minimal_size = 8UL + 3*nb_points + 6*nb_primitives; + if (_data + minimal_size>ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) has only %lu values, while at least %lu values were expected", + nb_points,nb_primitives,(unsigned long)size(),(unsigned long)minimal_size); + return false; + } + } + + // Check consistency of vertex data. + if (!nb_points) { + if (nb_primitives) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines no vertices but %u primitives", + nb_points,nb_primitives,nb_primitives); + return false; + } + if (ptrs!=ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) is an empty object but contains %u value%s " + "more than expected", + nb_points,nb_primitives,(unsigned int)(ptre - ptrs),(ptre - ptrs)>1?"s":""); + return false; + } + return true; + } + if (ptrs + 3*nb_points>ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines only %u vertices data", + nb_points,nb_primitives,(unsigned int)(ptre - ptrs)/3); + return false; + } + ptrs+=3*nb_points; + + // Check consistency of primitive data. + if (ptrs==ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines %u vertices but no primitive", + nb_points,nb_primitives,nb_points); + return false; + } + + if (!full_check) return true; + + for (unsigned int p = 0; p=nb_points) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid vertex index %u in point primitive [%u]", + nb_points,nb_primitives,i0,p); + return false; + } + } break; + case 5 : { // Sphere + const unsigned int + i0 = cimg::float2uint((float)*(ptrs++)), + i1 = cimg::float2uint((float)*(ptrs++)); + ptrs+=3; + if (i0>=nb_points || i1>=nb_points) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid vertex indices (%u,%u) in " + "sphere primitive [%u]", + nb_points,nb_primitives,i0,i1,p); + return false; + } + } break; + case 2 : case 6 : { // Segment + const unsigned int + i0 = cimg::float2uint((float)*(ptrs++)), + i1 = cimg::float2uint((float)*(ptrs++)); + if (nb_inds==6) ptrs+=4; + if (i0>=nb_points || i1>=nb_points) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid vertex indices (%u,%u) in " + "segment primitive [%u]", + nb_points,nb_primitives,i0,i1,p); + return false; + } + } break; + case 3 : case 9 : { // Triangle + const unsigned int + i0 = cimg::float2uint((float)*(ptrs++)), + i1 = cimg::float2uint((float)*(ptrs++)), + i2 = cimg::float2uint((float)*(ptrs++)); + if (nb_inds==9) ptrs+=6; + if (i0>=nb_points || i1>=nb_points || i2>=nb_points) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid vertex indices (%u,%u,%u) in " + "triangle primitive [%u]", + nb_points,nb_primitives,i0,i1,i2,p); + return false; + } + } break; + case 4 : case 12 : { // Quadrangle + const unsigned int + i0 = cimg::float2uint((float)*(ptrs++)), + i1 = cimg::float2uint((float)*(ptrs++)), + i2 = cimg::float2uint((float)*(ptrs++)), + i3 = cimg::float2uint((float)*(ptrs++)); + if (nb_inds==12) ptrs+=8; + if (i0>=nb_points || i1>=nb_points || i2>=nb_points || i3>=nb_points) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid vertex indices (%u,%u,%u,%u) in " + "quadrangle primitive [%u]", + nb_points,nb_primitives,i0,i1,i2,i3,p); + return false; + } + } break; + default : + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines an invalid primitive [%u] of size %u", + nb_points,nb_primitives,p,nb_inds); + return false; + } + if (ptrs>ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) has incomplete primitive data for primitive [%u], " + "%u values missing", + nb_points,nb_primitives,p,(unsigned int)(ptrs - ptre)); + return false; + } + } + + // Check consistency of color data. + if (ptrs==ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines no color/texture data", + nb_points,nb_primitives); + return false; + } + for (unsigned int c = 0; c=c) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid shared sprite/texture index %u " + "for primitive [%u]", + nb_points,nb_primitives,w,c); + return false; + } + } else ptrs+=w*h*s; + } + if (ptrs>ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) has incomplete color/texture data for primitive [%u], " + "%u values missing", + nb_points,nb_primitives,c,(unsigned int)(ptrs - ptre)); + return false; + } + } + + // Check consistency of opacity data. + if (ptrs==ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines no opacity data", + nb_points,nb_primitives); + return false; + } + for (unsigned int o = 0; o=o) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid shared opacity index %u " + "for primitive [%u]", + nb_points,nb_primitives,w,o); + return false; + } + } else ptrs+=w*h*s; + } + if (ptrs>ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) has incomplete opacity data for primitive [%u]", + nb_points,nb_primitives,o); + return false; + } + } + + // Check end of data. + if (ptrs1?"s":""); + return false; + } + return true; + } + + static bool _is_CImg3d(const T val, const char c) { + return val>=(T)c && val<(T)(c + 1); + } + + //@} + //------------------------------------- + // + //! \name Mathematical Functions + //@{ + //------------------------------------- + + // Define the math formula parser/compiler and expression evaluator. + struct _cimg_math_parser { + CImg mem; + CImg memtype, memmerge; + CImgList _code, &code, code_begin, code_end, + _code_begin_t, &code_begin_t, _code_end_t, &code_end_t; + CImg opcode; + const CImg *p_code_end, *p_code; + const CImg *const p_break; + + CImg expr, pexpr; + const CImg& imgin; + const CImgList& listin; + CImg &imgout; + CImgList& listout; + + CImg _img_stats, &img_stats, constcache_vals; + CImgList _list_stats, &list_stats, _list_median, &list_median, _list_norm, &list_norm; + CImg mem_img_stats, constcache_inds; + + CImg level, variable_pos, reserved_label; + CImgList variable_def, macro_def, macro_body; + CImgList macro_body_is_string; + char *user_macro; + + unsigned int mempos, mem_img_median, mem_img_norm, mem_img_index, debug_indent, result_dim, break_type, + constcache_size; + bool is_parallelizable, is_end_code, is_fill, need_input_copy; + double *result; + cimg_uint64 rng; + const char *const calling_function, *s_op, *ss_op; + typedef double (*mp_func)(_cimg_math_parser&); + +#define _cimg_mp_is_constant(arg) (memtype[arg]==1) // Is constant value? +#define _cimg_mp_is_scalar(arg) (memtype[arg]<2) // Is scalar value? +#define _cimg_mp_is_comp(arg) (!memtype[arg]) // Is computation value? +#define _cimg_mp_is_variable(arg) (memtype[arg]==-1) // Is scalar variable? +#define _cimg_mp_is_vector(arg) (memtype[arg]>1) // Is vector? +#define _cimg_mp_size(arg) (_cimg_mp_is_scalar(arg)?0U:(unsigned int)memtype[arg] - 1) // Size (0=scalar, N>0=vectorN) +#define _cimg_mp_calling_function s_calling_function()._data +#define _cimg_mp_op(s) s_op = s; ss_op = ss +#define _cimg_mp_check_type(arg,n_arg,mode,N) check_type(arg,n_arg,mode,N,ss,se,saved_char) +#define _cimg_mp_check_constant(arg,n_arg,mode) check_constant(arg,n_arg,mode,ss,se,saved_char) +#define _cimg_mp_check_constant_index(arg) check_constant_index(arg,ss,se,saved_char) +#define _cimg_mp_check_matrix_square(arg,n_arg) check_matrix_square(arg,n_arg,ss,se,saved_char) +#define _cimg_mp_check_list(is_out) check_list(is_out,ss,se,saved_char) +#define _cimg_mp_defunc(mp) (*(mp_func)(*(mp).opcode))(mp) +#define _cimg_mp_return(x) { *se = saved_char; s_op = previous_s_op; ss_op = previous_ss_op; return x; } +#define _cimg_mp_return_nan() _cimg_mp_return(_cimg_mp_slot_nan) +#define _cimg_mp_constant(val) _cimg_mp_return(constant((double)(val))) +#define _cimg_mp_scalar0(op) _cimg_mp_return(scalar0(op)) +#define _cimg_mp_scalar1(op,i1) _cimg_mp_return(scalar1(op,i1)) +#define _cimg_mp_scalar2(op,i1,i2) _cimg_mp_return(scalar2(op,i1,i2)) +#define _cimg_mp_scalar3(op,i1,i2,i3) _cimg_mp_return(scalar3(op,i1,i2,i3)) +#define _cimg_mp_scalar4(op,i1,i2,i3,i4) _cimg_mp_return(scalar4(op,i1,i2,i3,i4)) +#define _cimg_mp_scalar5(op,i1,i2,i3,i4,i5) _cimg_mp_return(scalar5(op,i1,i2,i3,i4,i5)) +#define _cimg_mp_scalar6(op,i1,i2,i3,i4,i5,i6) _cimg_mp_return(scalar6(op,i1,i2,i3,i4,i5,i6)) +#define _cimg_mp_scalar7(op,i1,i2,i3,i4,i5,i6,i7) _cimg_mp_return(scalar7(op,i1,i2,i3,i4,i5,i6,i7)) +#define _cimg_mp_vector1_v(op,i1) _cimg_mp_return(vector1_v(op,i1)) +#define _cimg_mp_vector2_sv(op,i1,i2) _cimg_mp_return(vector2_sv(op,i1,i2)) +#define _cimg_mp_vector2_vs(op,i1,i2) _cimg_mp_return(vector2_vs(op,i1,i2)) +#define _cimg_mp_vector2_vv(op,i1,i2) _cimg_mp_return(vector2_vv(op,i1,i2)) +#define _cimg_mp_vector3_vss(op,i1,i2,i3) _cimg_mp_return(vector3_vss(op,i1,i2,i3)) +#define _cimg_mp_strerr \ + *se = saved_char; \ + for (s0 = ss; s0>expr._data && *s0!=';'; --s0) {} \ + if (*s0==';') ++s0; \ + while (cimg::is_blank(*s0)) ++s0; \ + cimg::strellipsize(s0,64) + + // Constructors / Destructors. + ~_cimg_math_parser() { + cimg::srand(rng); + } + + _cimg_math_parser(const char *const expression, const char *const funcname=0, + const CImg& img_input=CImg::const_empty(), CImg *const img_output=0, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0, + const bool _is_fill=false): + code(_code),code_begin_t(_code_begin_t),code_end_t(_code_end_t), + p_break((CImg*)(cimg_ulong)-2), + imgin(img_input),listin(list_inputs?*list_inputs:CImgList::const_empty()), + imgout(img_output?*img_output:CImg::empty()),listout(list_outputs?*list_outputs:CImgList::empty()), + img_stats(_img_stats),list_stats(_list_stats),list_median(_list_median),list_norm(_list_norm),user_macro(0), + mem_img_median(~0U),mem_img_norm(~0U),mem_img_index(~0U),debug_indent(0),result_dim(0),break_type(0), + constcache_size(0),is_parallelizable(true),is_fill(_is_fill),need_input_copy(false), + rng((cimg::_rand(),cimg::rng())),calling_function(funcname?funcname:"cimg_math_parser") { + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + if (!expression || !*expression) + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Empty expression.", + pixel_type(),_cimg_mp_calling_function); + const char *_expression = expression; + while (*_expression && (cimg::is_blank(*_expression) || *_expression==';')) ++_expression; + CImg::string(_expression).move_to(expr); + char *ps = &expr.back() - 1; + while (ps>expr._data && (cimg::is_blank(*ps) || *ps==';')) --ps; + *(++ps) = 0; expr._width = (unsigned int)(ps - expr._data + 1); + + // Ease the retrieval of previous non-space characters afterwards. + pexpr.assign(expr._width); + char c, *pe = pexpr._data; + for (ps = expr._data, c = ' '; *ps; ++ps) { + if (!cimg::is_blank(*ps)) c = *ps; else *ps = ' '; + *(pe++) = c; + } + *pe = 0; + level = get_level(expr); + + // Init constant values. +#define _cimg_mp_interpolation (reserved_label[30]!=~0U?reserved_label[30]:0) +#define _cimg_mp_boundary (reserved_label[31]!=~0U?reserved_label[31]:0) +#define _cimg_mp_slot_t 17 +#define _cimg_mp_slot_nan 29 +#define _cimg_mp_slot_x 30 +#define _cimg_mp_slot_y 31 +#define _cimg_mp_slot_z 32 +#define _cimg_mp_slot_c 33 + + mem.assign(96); + for (unsigned int i = 0; i<=10; ++i) mem[i] = (double)i; // mem[0-10] = 0...10 + for (unsigned int i = 1; i<=5; ++i) mem[i + 10] = -(double)i; // mem[11-15] = -1...-5 + mem[16] = 0.5; + mem[_cimg_mp_slot_t] = 0; // thread_id + mem[18] = (double)imgin._width; // w + mem[19] = (double)imgin._height; // h + mem[20] = (double)imgin._depth; // d + mem[21] = (double)imgin._spectrum; // s + mem[22] = (double)imgin._is_shared; // r + mem[23] = (double)imgin._width*imgin._height; // wh + mem[24] = (double)imgin._width*imgin._height*imgin._depth; // whd + mem[25] = (double)imgin._width*imgin._height*imgin._depth*imgin._spectrum; // whds + mem[26] = (double)listin._width; // l + mem[27] = std::exp(1.); // e + mem[28] = cimg::PI; // pi + mem[_cimg_mp_slot_nan] = cimg::type::nan(); // nan + + // Set value property : + // { -2 = other | -1 = variable | 0 = computation value | + // 1 = compile-time constant | N>1 = constant ptr to vector[N-1] }. + memtype.assign(mem._width,1,1,1,0); + for (unsigned int i = 0; i<_cimg_mp_slot_x; ++i) memtype[i] = 1; + memtype[_cimg_mp_slot_t] = memtype[_cimg_mp_slot_x] = memtype[_cimg_mp_slot_y] = + memtype[_cimg_mp_slot_z] = memtype[_cimg_mp_slot_c] = -2; + mempos = _cimg_mp_slot_c + 1; + variable_pos.assign(8); + + reserved_label.assign(128,1,1,1,~0U); + // reserved_label[0-31] are used to store the memory index of these variables: + // [0] = wh, [1] = whd, [2] = whds, [3] = pi, [4] = im, [5] = iM, [6] = ia, [7] = iv, + // [8] = is, [9] = ip, [10] = ic, [11] = in, [12] = xm, [13] = ym, [14] = zm, [15] = cm, [16] = xM, + // [17] = yM, [18] = zM, [19] = cM, [20] = i0...[29] = i9, [30] = interpolation, [31] = boundary + + // Compile expression into a sequence of opcodes. + s_op = ""; ss_op = expr._data; + const unsigned int ind_result = compile(expr._data,expr._data + expr._width - 1,0,0,false); + if (!_cimg_mp_is_constant(ind_result)) { + if (_cimg_mp_is_vector(ind_result)) + CImg(&mem[ind_result] + 1,_cimg_mp_size(ind_result),1,1,1,true). + fill(cimg::type::nan()); + else if (ind_result!=_cimg_mp_slot_t) mem[ind_result] = cimg::type::nan(); + } + + // Free resources used for compiling expression and prepare evaluation. + result_dim = _cimg_mp_size(ind_result); + if (mem._width>=256 && mem._width - mempos>=mem._width/2) mem.resize(mempos,1,1,1,-1); + result = mem._data + ind_result; + memtype.assign(); + constcache_vals.assign(); + constcache_inds.assign(); + level.assign(); + variable_pos.assign(); + reserved_label.assign(); + expr.assign(); + pexpr.assign(); + opcode.assign(); + opcode._is_shared = true; + + // Execute begin() bloc if any specified. + if (code_begin) { + mem[_cimg_mp_slot_x] = mem[_cimg_mp_slot_y] = mem[_cimg_mp_slot_z] = mem[_cimg_mp_slot_c] = 0; + p_code_end = code_begin.end(); + for (p_code = code_begin; p_code_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + } + p_code_end = code.end(); + } + + _cimg_math_parser(): + code(_code),code_begin_t(_code_begin_t),code_end_t(_code_end_t), + p_code_end(0),p_break((CImg*)(cimg_ulong)-2), + imgin(CImg::const_empty()),listin(CImgList::const_empty()), + imgout(CImg::empty()),listout(CImgList::empty()), + img_stats(_img_stats),list_stats(_list_stats),list_median(_list_median),list_norm(_list_norm),debug_indent(0), + result_dim(0),break_type(0),constcache_size(0),is_parallelizable(true),is_fill(false), + need_input_copy(false),rng(0),calling_function(0) { + mem.assign(1 + _cimg_mp_slot_c,1,1,1,0); // Allow to skip 'is_empty?' test in operator()() + result = mem._data; + } + + _cimg_math_parser(const _cimg_math_parser& mp): + mem(mp.mem),code(mp.code),code_begin_t(mp.code_begin_t),code_end_t(mp.code_end_t), + p_code_end(mp.p_code_end),p_break(mp.p_break), + imgin(mp.imgin),listin(mp.listin),imgout(mp.imgout),listout(mp.listout), + img_stats(mp.img_stats),list_stats(mp.list_stats),list_median(mp.list_median),list_norm(mp.list_norm), + debug_indent(0),result_dim(mp.result_dim),break_type(0),constcache_size(0), + is_parallelizable(mp.is_parallelizable),is_fill(mp.is_fill),need_input_copy(mp.need_input_copy), + result(mem._data + (mp.result - mp.mem._data)),rng((cimg::_rand(),cimg::rng())),calling_function(0) { + +#if cimg_use_openmp!=0 + mem[_cimg_mp_slot_t] = omp_get_thread_num(); + rng+=omp_get_thread_num(); +#endif + opcode.assign(); + opcode._is_shared = true; + } + + // Compilation procedure. + unsigned int compile(char *ss, char *se, const unsigned int depth, unsigned int *const p_ref, + const bool is_critical) { + if (depth>256) { + cimg::strellipsize(expr,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Call stack overflow (infinite recursion?), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function, + (ss - 4)>expr._data?"...":"", + (ss - 4)>expr._data?ss - 4:expr._data, + se<&expr.back()?"...":""); + } + char c1, c2; + + // Simplify expression when possible. + do { + c2 = 0; + if (ssss && (cimg::is_blank(c1 = *(se - 1)) || c1==';')) --se; + } + while (*ss=='(' && *(se - 1)==')' && std::strchr(ss,')')==se - 1) { + ++ss; --se; c2 = 1; + } + } while (c2 && ss::%s: %s%s Missing %s, in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + *s_op=='F'?"argument":"item", + (ss_op - 4)>expr._data?"...":"", + (ss_op - 4)>expr._data?ss_op - 4:expr._data, + ss_op + std::strlen(ss_op)<&expr.back()?"...":""); + } + + static const size_t siz_ref = 7*sizeof(unsigned int); + const char *const previous_s_op = s_op, *const previous_ss_op = ss_op; + const unsigned int depth1 = depth + 1; + unsigned int pos, p1, p2, p3, arg1, arg2, arg3, arg4, arg5, arg6; + char + *const se1 = se - 1, *const se2 = se - 2, *const se3 = se - 3, + *const ss1 = ss + 1, *const ss2 = ss + 2, *const ss3 = ss + 3, *const ss4 = ss + 4, + *const ss5 = ss + 5, *const ss6 = ss + 6, *const ss7 = ss + 7, *const ss8 = ss + 8, + *s, *ps, *ns, *s0, *s1, *s2, *s3, sep = 0, end = 0; + double val = 0, val1, val2; + mp_func op; + + // 'p_ref' is a 'unsigned int[7]' used to return a reference to an image or vector value + // linked to the returned memory slot (reference that cannot be determined at compile time). + // p_ref[0] can be { 0 = scalar (unlinked) | 1 = vector value | 2 = image value (offset) | + // 3 = image value (coordinates) | 4 = image value as a vector (offsets) | + // 5 = image value as a vector (coordinates) }. + // Depending on p_ref[0], the remaining p_ref[k] have the following meaning: + // When p_ref[0]==0, p_ref is actually unlinked. + // When p_ref[0]==1, p_ref = [ 1, vector_ind, offset ]. + // When p_ref[0]==2, p_ref = [ 2, image_ind (or ~0U), is_relative, offset ]. + // When p_ref[0]==3, p_ref = [ 3, image_ind (or ~0U), is_relative, x, y, z, c ]. + // When p_ref[0]==4, p_ref = [ 4, image_ind (or ~0U), is_relative, offset ]. + // When p_ref[0]==5, p_ref = [ 5, image_ind (or ~0U), is_relative, x, y, z ]. + if (p_ref) { *p_ref = 0; p_ref[1] = p_ref[2] = p_ref[3] = p_ref[4] = p_ref[5] = p_ref[6] = ~0U; } + + const char saved_char = *se; *se = 0; + const unsigned int clevel = level[ss - expr._data], clevel1 = clevel + 1; + bool is_sth, is_relative; + CImg ref; + CImg variable_name; + CImgList l_opcode; + + // Look for a single value or a pre-defined variable. + int nb = 0; + s = ss + (*ss=='+' || *ss=='-'?1:0); + if (*s=='i' || *s=='I' || *s=='n' || *s=='N') { // Particular cases : +/-NaN and +/-Inf + is_sth = *ss=='-'; + if (!cimg::strcasecmp(s,"inf")) { val = cimg::type::inf(); nb = 1; } + else if (!cimg::strcasecmp(s,"nan")) { val = cimg::type::nan(); nb = 1; } + if (nb==1 && is_sth) val = -val; + } else if (*s=='0' && (s[1]=='x' || s[1]=='X')) { // Hexadecimal number + is_sth = *ss=='-'; + if (cimg_sscanf(s + 2,"%x%c",&arg1,&sep)==1) { + nb = 1; + val = (double)arg1; + if (is_sth) val = -val; + } + } + if (!nb) nb = cimg_sscanf(ss,"%lf%c%c",&val,&(sep=0),&(end=0)); + if (nb==1) _cimg_mp_constant(val); + if (nb==2 && sep=='%') _cimg_mp_constant(val/100); + + if (ss1==se) switch (*ss) { // One-char reserved variable + case 'c' : _cimg_mp_return(reserved_label[(int)'c']!=~0U?reserved_label[(int)'c']:_cimg_mp_slot_c); + case 'd' : _cimg_mp_return(reserved_label[(int)'d']!=~0U?reserved_label[(int)'d']:20); + case 'e' : _cimg_mp_return(reserved_label[(int)'e']!=~0U?reserved_label[(int)'e']:27); + case 'h' : _cimg_mp_return(reserved_label[(int)'h']!=~0U?reserved_label[(int)'h']:19); + case 'k' : + if (reserved_label[(int)'k']!=~0U) _cimg_mp_return(reserved_label[(int)'k']); + pos = get_mem_img_index(); + if (pos!=~0U) _cimg_mp_return(pos); + _cimg_mp_return_nan(); + case 'l' : _cimg_mp_return(reserved_label[(int)'l']!=~0U?reserved_label[(int)'l']:26); + case 'r' : _cimg_mp_return(reserved_label[(int)'r']!=~0U?reserved_label[(int)'r']:22); + case 's' : _cimg_mp_return(reserved_label[(int)'s']!=~0U?reserved_label[(int)'s']:21); + case 't' : _cimg_mp_return(reserved_label[(int)'t']!=~0U?reserved_label[(int)'t']:_cimg_mp_slot_t); + case 'w' : _cimg_mp_return(reserved_label[(int)'w']!=~0U?reserved_label[(int)'w']:18); + case 'x' : _cimg_mp_return(reserved_label[(int)'x']!=~0U?reserved_label[(int)'x']:_cimg_mp_slot_x); + case 'y' : _cimg_mp_return(reserved_label[(int)'y']!=~0U?reserved_label[(int)'y']:_cimg_mp_slot_y); + case 'z' : _cimg_mp_return(reserved_label[(int)'z']!=~0U?reserved_label[(int)'z']:_cimg_mp_slot_z); + case 'u' : + if (reserved_label[(int)'u']!=~0U) _cimg_mp_return(reserved_label[(int)'u']); + _cimg_mp_scalar2(mp_u,0,1); + case 'g' : + if (reserved_label[(int)'g']!=~0U) _cimg_mp_return(reserved_label[(int)'g']); + _cimg_mp_scalar0(mp_g); + case 'i' : + if (reserved_label[(int)'i']!=~0U) _cimg_mp_return(reserved_label[(int)'i']); + _cimg_mp_scalar0(mp_i); + case 'I' : + _cimg_mp_op("Variable 'I'"); + if (reserved_label[(int)'I']!=~0U) _cimg_mp_return(reserved_label[(int)'I']); + if (!imgin._spectrum) _cimg_mp_return(0); + need_input_copy = true; + pos = vector(imgin._spectrum); + CImg::vector((ulongT)mp_Joff,pos,0,0,imgin._spectrum).move_to(code); + _cimg_mp_return(pos); + case 'R' : + if (reserved_label[(int)'R']!=~0U) _cimg_mp_return(reserved_label[(int)'R']); + need_input_copy = true; + _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,0,0,0); + case 'G' : + if (reserved_label[(int)'G']!=~0U) _cimg_mp_return(reserved_label[(int)'G']); + need_input_copy = true; + _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,1,0,0); + case 'B' : + if (reserved_label[(int)'B']!=~0U) _cimg_mp_return(reserved_label[(int)'B']); + need_input_copy = true; + _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,2,0,0); + case 'A' : + if (reserved_label[(int)'A']!=~0U) _cimg_mp_return(reserved_label[(int)'A']); + need_input_copy = true; + _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,3,0,0); + } + else if (ss2==se) { // Two-chars reserved variable + arg1 = arg2 = ~0U; + if (*ss=='w' && *ss1=='h') // wh + _cimg_mp_return(reserved_label[0]!=~0U?reserved_label[0]:23); + if (*ss=='p' && *ss1=='i') // pi + _cimg_mp_return(reserved_label[3]!=~0U?reserved_label[3]:28); + if (*ss=='i') { + if (*ss1>='0' && *ss1<='9') { // i0...i9 + pos = 20 + *ss1 - '0'; + if (reserved_label[pos]!=~0U) _cimg_mp_return(reserved_label[pos]); + need_input_copy = true; + _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,pos - 20,0,0); + } + switch (*ss1) { + case 'm' : arg1 = 4; arg2 = 0; break; // im + case 'M' : arg1 = 5; arg2 = 1; break; // iM + case 'a' : arg1 = 6; arg2 = 2; break; // ia + case 'v' : arg1 = 7; arg2 = 3; break; // iv + case 's' : arg1 = 8; arg2 = 12; break; // is + case 'p' : arg1 = 9; arg2 = 13; break; // ip + case 'c' : // ic + if (reserved_label[10]!=~0U) _cimg_mp_return(reserved_label[10]); + if (mem_img_median==~0U) mem_img_median = imgin?constant(imgin.median()):0; + _cimg_mp_return(mem_img_median); + break; + case 'n' : // in + if (reserved_label[11]!=~0U) _cimg_mp_return(reserved_label[11]); + if (mem_img_norm==~0U) mem_img_norm = imgin?constant(imgin.magnitude()):0; + _cimg_mp_return(mem_img_norm); + } + } + else if (*ss1=='m') switch (*ss) { + case 'x' : arg1 = 12; arg2 = 4; break; // xm + case 'y' : arg1 = 13; arg2 = 5; break; // ym + case 'z' : arg1 = 14; arg2 = 6; break; // zm + case 'c' : arg1 = 15; arg2 = 7; break; // cm + } + else if (*ss1=='M') switch (*ss) { + case 'x' : arg1 = 16; arg2 = 8; break; // xM + case 'y' : arg1 = 17; arg2 = 9; break; // yM + case 'z' : arg1 = 18; arg2 = 10; break; // zM + case 'c' : arg1 = 19; arg2 = 11; break; // cM + } + if (arg1!=~0U) { + if (reserved_label[arg1]!=~0U) _cimg_mp_return(reserved_label[arg1]); + if (!img_stats) { + img_stats.assign(1,14,1,1,0).fill(imgin.get_stats(),false); + mem_img_stats.assign(1,14,1,1,~0U); + } + if (mem_img_stats[arg2]==~0U) mem_img_stats[arg2] = constant(img_stats[arg2]); + _cimg_mp_return(mem_img_stats[arg2]); + } + } else if (ss3==se) { // Three-chars reserved variable + if (*ss=='w' && *ss1=='h' && *ss2=='d') // whd + _cimg_mp_return(reserved_label[1]!=~0U?reserved_label[1]:24); + } else if (ss4==se) { // Four-chars reserved variable + if (*ss=='w' && *ss1=='h' && *ss2=='d' && *ss3=='s') // whds + _cimg_mp_return(reserved_label[2]!=~0U?reserved_label[2]:25); + } + + pos = ~0U; + is_sth = false; + for (s0 = ss, s = ss1; s='i'?1:3,0); + if (_cimg_mp_is_vector(arg2)) { + if (p1!=~0U) { + _cimg_mp_check_constant_index(p1); + p3 = (unsigned int)cimg::mod((int)mem[p1],listin.width()); + p2 = listin[p3]._spectrum; + } else p2 = imgin._spectrum; + if (!p2) _cimg_mp_return(0); + _cimg_mp_check_type(arg2,2,2,p2); + } else p2 = 0; + + if (p_ref) { + *p_ref = _cimg_mp_is_vector(arg2)?4:2; + p_ref[1] = p1; + p_ref[2] = (unsigned int)is_relative; + p_ref[3] = arg1; + if (_cimg_mp_is_vector(arg2)) + set_variable_vector(arg2); // Prevent from being used in further optimization + else if (_cimg_mp_is_comp(arg2)) memtype[arg2] = -2; + if (_cimg_mp_is_comp(arg1)) memtype[arg1] = -2; + } + + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg2); + if (*ss>='i') + CImg::vector((ulongT)(is_relative?mp_list_set_joff:mp_list_set_ioff), + arg2,p1,arg1).move_to(code); + else if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_s:mp_list_set_Ioff_s), + arg2,p1,arg1).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg2,p1,arg1,_cimg_mp_size(arg2)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg2); + if (*ss>='i') + CImg::vector((ulongT)(is_relative?mp_set_joff:mp_set_ioff), + arg2,arg1).move_to(code); + else if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_set_Joff_s:mp_set_Ioff_s), + arg2,arg1).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg2,arg1,_cimg_mp_size(arg2)).move_to(code); + } + _cimg_mp_return(arg2); + } + + if (*ss1=='(' && *ve1==')') { // i/j/I/J(_#ind,_x,_y,_z,_c) = value + if (!is_critical) is_parallelizable = false; + if (*ss2=='#') { // Index specified + s0 = ss3; while (s0='i'?1:3,0); + if (s01) { + arg2 = arg1 + 1; + if (p2>2) { + arg3 = arg2 + 1; + if (p2>3) arg4 = arg3 + 1; + } + } + } else if (s1='i') + CImg::vector((ulongT)(is_relative?mp_list_set_jxyzc:mp_list_set_ixyzc), + arg5,p1,arg1,arg2,arg3,arg4).move_to(code); + else if (_cimg_mp_is_scalar(arg5)) + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_s:mp_list_set_Ixyz_s), + arg5,p1,arg1,arg2,arg3).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg5,p1,arg1,arg2,arg3,_cimg_mp_size(arg5)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg5); + if (*ss>='i') + CImg::vector((ulongT)(is_relative?mp_set_jxyzc:mp_set_ixyzc), + arg5,arg1,arg2,arg3,arg4).move_to(code); + else if (_cimg_mp_is_scalar(arg5)) + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_s:mp_set_Ixyz_s), + arg5,arg1,arg2,arg3).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg5,arg1,arg2,arg3,_cimg_mp_size(arg5)).move_to(code); + } + _cimg_mp_return(arg5); + } + } + + // Assign vector value (direct). + if (l_variable_name>3 && *ve1==']' && *ss!='[') { + s0 = ve1; while (s0>ss && (*s0!='[' || level[s0 - expr._data]!=clevel)) --s0; + is_sth = true; // is_valid_variable_name? + if (*ss>='0' && *ss<='9') is_sth = false; + else for (ns = ss; nsss) { + variable_name[s0 - ss] = 0; // Remove brackets in variable name + get_variable_pos(variable_name,arg1,arg2); + arg1 = arg2!=~0U?reserved_label[arg2]:arg1!=~0U?variable_pos[arg1]:~0U; // Vector slot + if (arg1==~0U || _cimg_mp_is_scalar(arg1)) + compile(ss,s0 - 1,depth1,0,is_critical); // Variable does not exist or is not a vector -> error + + arg2 = compile(++s0,ve1,depth1,0,is_critical); // Index + arg3 = compile(s + 1,se,depth1,0,is_critical); // Value to assign + _cimg_mp_check_type(arg3,2,1,0); + + if (_cimg_mp_is_constant(arg2)) { // Constant index -> return corresponding variable slot directly + nb = (int)mem[arg2]; + if (nb>=0 && nb<(int)_cimg_mp_size(arg1)) { + arg1+=nb + 1; + CImg::vector((ulongT)mp_copy,arg1,arg3).move_to(code); + _cimg_mp_return(arg1); + } + compile(ss,s,depth1,0,is_critical); // Out-of-bounds reference -> error + } + + // Case of non-constant index -> return assigned value + linked reference + if (p_ref) { + *p_ref = 1; + p_ref[1] = arg1; + p_ref[2] = arg2; + if (_cimg_mp_is_comp(arg3)) memtype[arg3] = -2; // Prevent from being used in further optimization + if (_cimg_mp_is_comp(arg2)) memtype[arg2] = -2; + } + CImg::vector((ulongT)mp_vector_set_off,arg3,arg1,(ulongT)_cimg_mp_size(arg1),arg2). + move_to(code); + _cimg_mp_return(arg3); + } + } + + // Assign user-defined macro. + if (l_variable_name>2 && *ve1==')' && *ss!='(') { + s0 = ve1; while (s0>ss && *s0!='(') --s0; + is_sth = std::strncmp(variable_name,"debug(",6) && + std::strncmp(variable_name,"print(",6); // is_valid_function_name? + if (*ss>='0' && *ss<='9') is_sth = false; + else for (ns = ss; nsss) { // Looks like a valid function declaration + s0 = variable_name._data + (s0 - ss); + *s0 = 0; + s1 = variable_name._data + l_variable_name - 1; // Pointer to closing parenthesis + CImg(variable_name._data,(unsigned int)(s0 - variable_name._data + 1)).move_to(macro_def,0); + ++s; while (*s && cimg::is_blank(*s)) ++s; + CImg(s,(unsigned int)(se - s + 1)).move_to(macro_body,0); + + p1 = 1; // Index of current parsed argument + for (s = s0 + 1; s<=s1; ++p1, s = ns + 1) { // Parse function arguments + if (p1>24) { + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Too much specified arguments (>24) in macro " + "definition '%s()', in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + while (*s && cimg::is_blank(*s)) ++s; + if (*s==')' && p1==1) break; // Function has no arguments + + s2 = s; // Start of the argument name + is_sth = true; // is_valid_argument_name? + if (*s>='0' && *s<='9') is_sth = false; + else for (ns = s; ns::%s: %s: %s name specified for argument %u when defining " + "macro '%s()', in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + is_sth?"Empty":"Invalid",p1, + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (ns==s1 || *ns==',') { // New argument found + *s3 = 0; + p2 = (unsigned int)(s3 - s2); // Argument length + for (ps = std::strstr(macro_body[0],s2); ps; ps = std::strstr(ps,s2)) { // Replace by arg number + if (!((ps>macro_body[0]._data && is_varchar(*(ps - 1))) || + (ps + p2macro_body[0]._data && *(ps - 1)=='#') { // Remove pre-number sign + *(ps - 1) = (char)p1; + if (ps + p26 && !std::strncmp(variable_name,"const ",6); + + s0 = variable_name._data; + if (is_const) { + s0+=6; while (cimg::is_blank(*s0)) ++s0; + variable_name.resize(variable_name.end() - s0,1,1,1,0,0,1); + } + + if (*variable_name>='0' && *variable_name<='9') is_sth = false; + else for (ns = variable_name._data; *ns; ++ns) + if (!is_varchar(*ns)) { is_sth = false; break; } + + // Assign variable (direct). + if (is_sth) { + get_variable_pos(variable_name,arg1,arg2); + arg3 = compile(s + 1,se,depth1,0,is_critical); + if (is_const) _cimg_mp_check_constant(arg3,2,0); + arg1 = arg2!=~0U?reserved_label[arg2]:arg1!=~0U?variable_pos[arg1]:~0U; + + if (arg1==~0U) { // Create new variable + if (_cimg_mp_is_vector(arg3)) { // Vector variable + arg1 = is_comp_vector(arg3)?arg3:vector_copy(arg3); + set_variable_vector(arg1); // Prevent from being used in further optimization + } else { // Scalar variable + if (is_const) arg1 = arg3; + else { + arg1 = _cimg_mp_is_comp(arg3)?arg3:scalar1(mp_copy,arg3); + memtype[arg1] = -1; + } + } + if (arg2!=~0U) reserved_label[arg2] = arg1; + else { + if (variable_def._width>=variable_pos._width) variable_pos.resize(-200,1,1,1,0); + variable_pos[variable_def._width] = arg1; + variable_name.move_to(variable_def); + } + + } else { // Variable already exists -> assign a new value + if (is_const || _cimg_mp_is_constant(arg1)) { + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid assignment of %sconst variable '%s'%s, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + _cimg_mp_is_constant(arg1)?"already-defined ":"non-", + variable_name._data, + !_cimg_mp_is_constant(arg1) && is_const?" as a new const variable":"", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + _cimg_mp_check_type(arg3,2,_cimg_mp_is_vector(arg1)?3:1,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1)) { // Vector + if (_cimg_mp_is_vector(arg3)) // From vector + CImg::vector((ulongT)mp_vector_copy,arg1,arg3,(ulongT)_cimg_mp_size(arg1)). + move_to(code); + else // From scalar + CImg::vector((ulongT)mp_vector_init,arg1,1,(ulongT)_cimg_mp_size(arg1),arg3). + move_to(code); + } else // Scalar + CImg::vector((ulongT)mp_copy,arg1,arg3).move_to(code); + } + _cimg_mp_return(arg1); + } + + // Assign lvalue (variable name was not valid for a direct assignment). + arg1 = ~0U; + is_sth = (bool)std::strchr(variable_name,'?'); // Contains_ternary_operator? + if (is_sth) break; // Do nothing and make ternary operator prioritary over assignment + + if (l_variable_name>2 && (std::strchr(variable_name,'(') || std::strchr(variable_name,'['))) { + ref.assign(7); + arg1 = compile(ss,s,depth1,ref,is_critical); // Lvalue slot + arg2 = compile(s + 1,se,depth1,0,is_critical); // Value to assign + + if (*ref==1) { // Vector value (scalar): V[k] = scalar + _cimg_mp_check_type(arg2,2,1,0); + arg3 = ref[1]; // Vector slot + arg4 = ref[2]; // Index + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + CImg::vector((ulongT)mp_vector_set_off,arg2,arg3,(ulongT)_cimg_mp_size(arg3),arg4). + move_to(code); + _cimg_mp_return(arg2); + } + + if (*ref==2) { // Image value (scalar): i/j[_#ind,off] = scalar + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,1,0); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg2); + CImg::vector((ulongT)(is_relative?mp_list_set_joff:mp_list_set_ioff), + arg2,p1,arg3).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg2); + CImg::vector((ulongT)(is_relative?mp_set_joff:mp_set_ioff), + arg2,arg3).move_to(code); + } + _cimg_mp_return(arg2); + } + + if (*ref==3) { // Image value (scalar): i/j(_#ind,_x,_y,_z,_c) = scalar + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,1,0); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + arg6 = ref[6]; // C + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg2); + CImg::vector((ulongT)(is_relative?mp_list_set_jxyzc:mp_list_set_ixyzc), + arg2,p1,arg3,arg4,arg5,arg6).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg2); + CImg::vector((ulongT)(is_relative?mp_set_jxyzc:mp_set_ixyzc), + arg2,arg3,arg4,arg5,arg6).move_to(code); + } + _cimg_mp_return(arg2); + } + + if (*ref==4) { // Image value (vector): I/J[_#ind,off] = value + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg2); + if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_s:mp_list_set_Ioff_s), + arg2,p1,arg3).move_to(code); + else { + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg2,p1,arg3,_cimg_mp_size(arg2)).move_to(code); + } + + } else { + if (!imgout) _cimg_mp_return(arg2); + if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_set_Joff_s:mp_set_Ioff_s), + arg2,arg3).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg2,arg3,_cimg_mp_size(arg2)).move_to(code); + } + _cimg_mp_return(arg2); + } + + if (*ref==5) { // Image value (vector): I/J(_#ind,_x,_y,_z,_c) = value + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg2); + if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_s:mp_list_set_Ixyz_s), + arg2,p1,arg3,arg4,arg5).move_to(code); + else { + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg2,p1,arg3,arg4,arg5,_cimg_mp_size(arg2)).move_to(code); + } + + } else { + if (!imgout) _cimg_mp_return(arg2); + if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_s:mp_set_Ixyz_s), + arg2,arg3,arg4,arg5).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg2,arg3,arg4,arg5,_cimg_mp_size(arg2)).move_to(code); + } + _cimg_mp_return(arg2); + } + + if (_cimg_mp_is_vector(arg1)) { // Vector variable: V = value + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg2)) // From vector + CImg::vector((ulongT)mp_vector_copy,arg1,arg2,(ulongT)_cimg_mp_size(arg1)). + move_to(code); + else // From scalar + CImg::vector((ulongT)mp_vector_init,arg1,1,(ulongT)_cimg_mp_size(arg1),arg2). + move_to(code); + _cimg_mp_return(arg1); + } + + if (_cimg_mp_is_variable(arg1)) { // Scalar variable: s = scalar + _cimg_mp_check_type(arg2,2,1,0); + CImg::vector((ulongT)mp_copy,arg1,arg2).move_to(code); + _cimg_mp_return(arg1); + } + } + + // No assignment expressions match -> error + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid %slvalue '%s', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + arg1!=~0U && _cimg_mp_is_constant(arg1)?"const ":"", + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + // Apply unary/binary/ternary operators. The operator precedences should be the same as in C++. + for (s = se2, ps = se3, ns = ps - 1; s>ss1; --s, --ps, --ns) // Here, ns = ps - 1 + if (*s=='=' && (*ps=='*' || *ps=='/' || *ps=='^') && *ns==*ps && + level[s - expr._data]==clevel) { // Self-operators for complex numbers only (**=,//=,^^=) + _cimg_mp_op(*ps=='*'?"Operator '**='":*ps=='/'?"Operator '//='":"Operator '^^='"); + + ref.assign(7); + arg1 = compile(ss,ns,depth1,ref,is_critical); // Vector slot + arg2 = compile(s + 1,se,depth1,0,is_critical); // Right operand + _cimg_mp_check_type(arg1,1,2,2); + _cimg_mp_check_type(arg2,2,3,2); + if (_cimg_mp_is_vector(arg2)) { // Complex **= complex + if (*ps=='*') + CImg::vector((ulongT)mp_complex_mul,arg1,arg1,arg2).move_to(code); + else if (*ps=='/') + CImg::vector((ulongT)mp_complex_div_vv,arg1,arg1,arg2).move_to(code); + else + CImg::vector((ulongT)mp_complex_pow_vv,arg1,arg1,arg2).move_to(code); + } else { // Complex **= scalar + if (*ps=='*') { + if (arg2==1) _cimg_mp_return(arg1); + self_vector_s(arg1,mp_self_mul,arg2); + } else if (*ps=='/') { + if (arg2==1) _cimg_mp_return(arg1); + self_vector_s(arg1,mp_self_div,arg2); + } else { + if (arg2==1) _cimg_mp_return(arg1); + CImg::vector((ulongT)mp_complex_pow_vs,arg1,arg1,arg2).move_to(code); + } + } + + if (*ref==4) { // Image value (vector): I/J[_#ind,off] **= value + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg1,p1,arg3,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg1,arg3,_cimg_mp_size(arg1)).move_to(code); + } + + } else if (*ref==5) { // Image value (vector): I/J(_#ind,_x,_y,_z,_c) **= value + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg1,p1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } + } + + _cimg_mp_return(arg1); + } + + for (s = se2, ps = se3, ns = ps - 1; s>ss1; --s, --ps, --ns) // Here, ns = ps - 1 + if (*s=='=' && (*ps=='+' || *ps=='-' || *ps=='*' || *ps=='/' || *ps=='%' || + *ps=='&' || *ps=='^' || *ps=='|' || + (*ps=='>' && *ns=='>') || (*ps=='<' && *ns=='<')) && + level[s - expr._data]==clevel) { // Self-operators (+=,-=,*=,/=,%=,>>=,<<=,&=,^=,|=) + switch (*ps) { + case '+' : op = mp_self_add; _cimg_mp_op("Operator '+='"); break; + case '-' : op = mp_self_sub; _cimg_mp_op("Operator '-='"); break; + case '*' : op = mp_self_mul; _cimg_mp_op("Operator '*='"); break; + case '/' : op = mp_self_div; _cimg_mp_op("Operator '/='"); break; + case '%' : op = mp_self_modulo; _cimg_mp_op("Operator '%='"); break; + case '<' : op = mp_self_bitwise_left_shift; _cimg_mp_op("Operator '<<='"); break; + case '>' : op = mp_self_bitwise_right_shift; _cimg_mp_op("Operator '>>='"); break; + case '&' : op = mp_self_bitwise_and; _cimg_mp_op("Operator '&='"); break; + case '|' : op = mp_self_bitwise_or; _cimg_mp_op("Operator '|='"); break; + default : op = mp_self_pow; _cimg_mp_op("Operator '^='"); break; + } + s1 = *ps=='>' || *ps=='<'?ns:ps; + + ref.assign(7); + arg1 = compile(ss,s1,depth1,ref,is_critical); // Variable slot + arg2 = compile(s + 1,se,depth1,0,is_critical); // Value to apply + + // Check for particular case to be simplified. + if ((op==mp_self_add || op==mp_self_sub) && !arg2) _cimg_mp_return(arg1); + if ((op==mp_self_mul || op==mp_self_div) && arg2==1) _cimg_mp_return(arg1); + + // Apply operator on a copy to prevent modifying a constant or a variable. + if (*ref && (_cimg_mp_is_constant(arg1) || _cimg_mp_is_vector(arg1) || _cimg_mp_is_variable(arg1))) { + if (_cimg_mp_is_vector(arg1)) arg1 = vector_copy(arg1); + else arg1 = scalar1(mp_copy,arg1); + } + + if (*ref==1) { // Vector value (scalar): V[k] += scalar + _cimg_mp_check_type(arg2,2,1,0); + arg3 = ref[1]; // Vector slot + arg4 = ref[2]; // Index + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + CImg::vector((ulongT)op,arg1,arg2).move_to(code); + CImg::vector((ulongT)mp_vector_set_off,arg1,arg3,(ulongT)_cimg_mp_size(arg3),arg4). + move_to(code); + _cimg_mp_return(arg1); + } + + if (*ref==2) { // Image value (scalar): i/j[_#ind,off] += scalar + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,1,0); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + CImg::vector((ulongT)op,arg1,arg2).move_to(code); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_list_set_joff:mp_list_set_ioff), + arg1,p1,arg3).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_joff:mp_set_ioff), + arg1,arg3).move_to(code); + } + _cimg_mp_return(arg1); + } + + if (*ref==3) { // Image value (scalar): i/j(_#ind,_x,_y,_z,_c) += scalar + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,1,0); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + arg6 = ref[6]; // C + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + CImg::vector((ulongT)op,arg1,arg2).move_to(code); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_list_set_jxyzc:mp_list_set_ixyzc), + arg1,p1,arg3,arg4,arg5,arg6).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_jxyzc:mp_set_ixyzc), + arg1,arg3,arg4,arg5,arg6).move_to(code); + } + _cimg_mp_return(arg1); + } + + if (*ref==4) { // Image value (vector): I/J[_#ind,off] += value + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (_cimg_mp_is_scalar(arg2)) self_vector_s(arg1,op,arg2); else self_vector_v(arg1,op,arg2); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg1,p1,arg3,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg1,arg3,_cimg_mp_size(arg1)).move_to(code); + } + _cimg_mp_return(arg1); + } + + if (*ref==5) { // Image value (vector): I/J(_#ind,_x,_y,_z,_c) += value + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (_cimg_mp_is_scalar(arg2)) self_vector_s(arg1,op,arg2); else self_vector_v(arg1,op,arg2); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg1,p1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } + _cimg_mp_return(arg1); + } + + if (_cimg_mp_is_vector(arg1)) { // Vector variable: V += value + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg2)) self_vector_v(arg1,op,arg2); // Vector += vector + else self_vector_s(arg1,op,arg2); // Vector += scalar + _cimg_mp_return(arg1); + } + + if (_cimg_mp_is_variable(arg1)) { // Scalar variable: s += scalar + _cimg_mp_check_type(arg2,2,1,0); + CImg::vector((ulongT)op,arg1,arg2).move_to(code); + _cimg_mp_return(arg1); + } + + variable_name.assign(ss,(unsigned int)(s - ss)).back() = 0; + cimg::strpare(variable_name,false,true); + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid %slvalue '%s', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + _cimg_mp_is_constant(arg1)?"const ":"", + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + for (s = ss1; s::vector((ulongT)mp_if,pos,arg1,arg2,arg3, + p3 - p2,code._width - p3,arg4).move_to(code,p2); + _cimg_mp_return(pos); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='|' && *ns=='|' && level[s - expr._data]==clevel) { // Logical or ('||') + _cimg_mp_op("Operator '||'"); + arg1 = compile(ss,s,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,1,0); + if (arg1>0 && arg1<=16) _cimg_mp_return(1); + p2 = code._width; + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,1,0); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant(mem[arg1] || mem[arg2]); + if (!arg1) _cimg_mp_return(arg2); + pos = scalar(); + CImg::vector((ulongT)mp_logical_or,pos,arg1,arg2,code._width - p2). + move_to(code,p2); + _cimg_mp_return(pos); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='&' && *ns=='&' && level[s - expr._data]==clevel) { // Logical and ('&&') + _cimg_mp_op("Operator '&&'"); + arg1 = compile(ss,s,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,1,0); + if (!arg1) _cimg_mp_return(0); + p2 = code._width; + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,1,0); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant(mem[arg1] && mem[arg2]); + if (arg1>0 && arg1<=16) _cimg_mp_return(arg2); + pos = scalar(); + CImg::vector((ulongT)mp_logical_and,pos,arg1,arg2,code._width - p2). + move_to(code,p2); + _cimg_mp_return(pos); + } + + for (s = se2; s>ss; --s) + if (*s=='|' && level[s - expr._data]==clevel) { // Bitwise or ('|') + _cimg_mp_op("Operator '|'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_bitwise_or,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) { + if (!arg2) _cimg_mp_return(arg1); + _cimg_mp_vector2_vs(mp_bitwise_or,arg1,arg2); + } + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) { + if (!arg1) _cimg_mp_return(arg2); + _cimg_mp_vector2_sv(mp_bitwise_or,arg1,arg2); + } + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant((longT)mem[arg1] | (longT)mem[arg2]); + if (!arg2) _cimg_mp_return(arg1); + if (!arg1) _cimg_mp_return(arg2); + _cimg_mp_scalar2(mp_bitwise_or,arg1,arg2); + } + + for (s = se2; s>ss; --s) + if (*s=='&' && level[s - expr._data]==clevel) { // Bitwise and ('&') + _cimg_mp_op("Operator '&'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_bitwise_and,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_bitwise_and,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_bitwise_and,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant((longT)mem[arg1] & (longT)mem[arg2]); + if (!arg1 || !arg2) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_bitwise_and,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='!' && *ns=='=' && level[s - expr._data]==clevel) { // Not equal to ('!=') + _cimg_mp_op("Operator '!='"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + if (arg1==arg2) _cimg_mp_return(0); + p1 = _cimg_mp_size(arg1); + p2 = _cimg_mp_size(arg2); + if (p1 || p2) { + if (p1 && p2 && p1!=p2) _cimg_mp_return(1); + pos = scalar(); + CImg::vector((ulongT)mp_vector_neq,pos,arg1,p1,arg2,p2,11,1).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]!=mem[arg2]); + _cimg_mp_scalar2(mp_neq,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='=' && *ns=='=' && level[s - expr._data]==clevel) { // Equal to ('==') + _cimg_mp_op("Operator '=='"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + if (arg1==arg2) _cimg_mp_return(1); + p1 = _cimg_mp_size(arg1); + p2 = _cimg_mp_size(arg2); + if (p1 || p2) { + if (p1 && p2 && p1!=p2) _cimg_mp_return(0); + pos = scalar(); + CImg::vector((ulongT)mp_vector_eq,pos,arg1,p1,arg2,p2,11,1).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]==mem[arg2]); + _cimg_mp_scalar2(mp_eq,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='<' && *ns=='=' && level[s - expr._data]==clevel) { // Less or equal than ('<=') + _cimg_mp_op("Operator '<='"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_lte,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_lte,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_lte,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]<=mem[arg2]); + if (arg1==arg2) _cimg_mp_return(1); + _cimg_mp_scalar2(mp_lte,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='>' && *ns=='=' && level[s - expr._data]==clevel) { // Greater or equal than ('>=') + _cimg_mp_op("Operator '>='"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_gte,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_gte,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_gte,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]>=mem[arg2]); + if (arg1==arg2) _cimg_mp_return(1); + _cimg_mp_scalar2(mp_gte,arg1,arg2); + } + + for (s = se2, ns = se1, ps = se3; s>ss; --s, --ns, --ps) + if (*s=='<' && *ns!='<' && *ps!='<' && level[s - expr._data]==clevel) { // Less than ('<') + _cimg_mp_op("Operator '<'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_lt,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_lt,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_lt,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]ss; --s, --ns, --ps) + if (*s=='>' && *ns!='>' && *ps!='>' && level[s - expr._data]==clevel) { // Greater than ('>') + _cimg_mp_op("Operator '>'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_gt,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_gt,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_gt,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]>mem[arg2]); + if (arg1==arg2) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_gt,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='<' && *ns=='<' && level[s - expr._data]==clevel) { // Left bit shift ('<<') + _cimg_mp_op("Operator '<<'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) + _cimg_mp_vector2_vv(mp_bitwise_left_shift,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) { + if (!arg2) _cimg_mp_return(arg1); + _cimg_mp_vector2_vs(mp_bitwise_left_shift,arg1,arg2); + } + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) + _cimg_mp_vector2_sv(mp_bitwise_left_shift,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant((longT)mem[arg1]<<(unsigned int)mem[arg2]); + if (!arg1) _cimg_mp_return(0); + if (!arg2) _cimg_mp_return(arg1); + _cimg_mp_scalar2(mp_bitwise_left_shift,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='>' && *ns=='>' && level[s - expr._data]==clevel) { // Right bit shift ('>>') + _cimg_mp_op("Operator '>>'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) + _cimg_mp_vector2_vv(mp_bitwise_right_shift,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) { + if (!arg2) _cimg_mp_return(arg1); + _cimg_mp_vector2_vs(mp_bitwise_right_shift,arg1,arg2); + } + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) + _cimg_mp_vector2_sv(mp_bitwise_right_shift,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant((longT)mem[arg1]>>(unsigned int)mem[arg2]); + if (!arg1) _cimg_mp_return(0); + if (!arg2) _cimg_mp_return(arg1); + _cimg_mp_scalar2(mp_bitwise_right_shift,arg1,arg2); + } + + for (ns = se1, s = se2, ps = pexpr._data + (se3 - expr._data); s>ss; --ns, --s, --ps) + if (*s=='+' && (*ns!='+' || ns!=se1) && *ps!='-' && *ps!='+' && *ps!='*' && *ps!='/' && *ps!='%' && + *ps!='&' && *ps!='|' && *ps!='^' && *ps!='!' && *ps!='~' && *ps!='#' && + (*ps!='e' || !(ps - pexpr._data>ss - expr._data && (*(ps - 1)=='.' || (*(ps - 1)>='0' && + *(ps - 1)<='9')))) && + level[s - expr._data]==clevel) { // Addition ('+') + _cimg_mp_op("Operator '+'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (!arg2) _cimg_mp_return(arg1); + if (!arg1) _cimg_mp_return(arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_add,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_add,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_add,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1] + mem[arg2]); + if (code) { // Try to spot linear case 'a*b + c' + CImg &pop = code.back(); + if (pop[0]==(ulongT)mp_mul && _cimg_mp_is_comp(pop[1]) && (pop[1]==arg1 || pop[1]==arg2)) { + arg3 = (unsigned int)pop[1]; + arg4 = (unsigned int)pop[2]; + arg5 = (unsigned int)pop[3]; + code.remove(); + CImg::vector((ulongT)mp_linear_add,arg3,arg4,arg5,arg3==arg2?arg1:arg2).move_to(code); + _cimg_mp_return(arg3); + } + } + if (arg2==1) _cimg_mp_scalar1(mp_increment,arg1); + if (arg1==1) _cimg_mp_scalar1(mp_increment,arg2); + _cimg_mp_scalar2(mp_add,arg1,arg2); + } + + for (ns = se1, s = se2, ps = pexpr._data + (se3 - expr._data); s>ss; --ns, --s, --ps) + if (*s=='-' && (*ns!='-' || ns!=se1) && *ps!='-' && *ps!='+' && *ps!='*' && *ps!='/' && *ps!='%' && + *ps!='&' && *ps!='|' && *ps!='^' && *ps!='!' && *ps!='~' && *ps!='#' && + (*ps!='e' || !(ps - pexpr._data>ss - expr._data && (*(ps - 1)=='.' || (*(ps - 1)>='0' && + *(ps - 1)<='9')))) && + level[s - expr._data]==clevel) { // Subtraction ('-') + _cimg_mp_op("Operator '-'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (!arg2) _cimg_mp_return(arg1); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_sub,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_sub,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) { + if (!arg1) _cimg_mp_vector1_v(mp_minus,arg2); + _cimg_mp_vector2_sv(mp_sub,arg1,arg2); + } + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1] - mem[arg2]); + if (!arg1) _cimg_mp_scalar1(mp_minus,arg2); + if (code) { // Try to spot linear cases 'a*b - c' and 'c - a*b' + CImg &pop = code.back(); + if (pop[0]==(ulongT)mp_mul && _cimg_mp_is_comp(pop[1]) && (pop[1]==arg1 || pop[1]==arg2)) { + arg3 = (unsigned int)pop[1]; + arg4 = (unsigned int)pop[2]; + arg5 = (unsigned int)pop[3]; + code.remove(); + CImg::vector((ulongT)(arg3==arg1?mp_linear_sub_left:mp_linear_sub_right), + arg3,arg4,arg5,arg3==arg1?arg2:arg1).move_to(code); + _cimg_mp_return(arg3); + } + } + if (arg2==1) _cimg_mp_scalar1(mp_decrement,arg1); + _cimg_mp_scalar2(mp_sub,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='*' && *ns=='*' && level[s - expr._data]==clevel) { // Complex multiplication ('**') + _cimg_mp_op("Operator '**'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,3,2); + _cimg_mp_check_type(arg2,2,3,2); + if (arg2==1) _cimg_mp_return(arg1); + if (arg1==1) _cimg_mp_return(arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) { + pos = vector(2); + CImg::vector((ulongT)mp_complex_mul,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_mul,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_mul,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]*mem[arg2]); + if (!arg1 || !arg2) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_mul,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='/' && *ns=='/' && level[s - expr._data]==clevel) { // Complex division ('//') + _cimg_mp_op("Operator '//'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,3,2); + _cimg_mp_check_type(arg2,2,3,2); + if (arg2==1) _cimg_mp_return(arg1); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) { + pos = vector(2); + CImg::vector((ulongT)mp_complex_div_vv,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_div,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) { + pos = vector(2); + CImg::vector((ulongT)mp_complex_div_sv,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]/mem[arg2]); + if (!arg1) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_div,arg1,arg2); + } + + for (s = se2; s>ss; --s) if (*s=='*' && level[s - expr._data]==clevel) { // Multiplication ('*') + _cimg_mp_op("Operator '*'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + p2 = _cimg_mp_size(arg2); + if (p2>0 && (ulongT)_cimg_mp_size(arg1)==(ulongT)p2*p2) { // Particular case of matrix multiplication + pos = vector(p2); + CImg::vector((ulongT)mp_matrix_mul,pos,arg1,arg2,p2,p2,1).move_to(code); + _cimg_mp_return(pos); + } + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (arg2==1) _cimg_mp_return(arg1); + if (arg1==1) _cimg_mp_return(arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_mul,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_mul,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_mul,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]*mem[arg2]); + + if (code) { // Try to spot double multiplication 'a*b*c' + CImg &pop = code.back(); + if (pop[0]==(ulongT)mp_mul && _cimg_mp_is_comp(pop[1]) && (pop[1]==arg1 || pop[1]==arg2)) { + arg3 = (unsigned int)pop[1]; + arg4 = (unsigned int)pop[2]; + arg5 = (unsigned int)pop[3]; + code.remove(); + CImg::vector((ulongT)mp_mul2,arg3,arg4,arg5,arg3==arg2?arg1:arg2).move_to(code); + _cimg_mp_return(arg3); + } + } + if (!arg1 || !arg2) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_mul,arg1,arg2); + } + + for (s = se2; s>ss; --s) if (*s=='/' && level[s - expr._data]==clevel) { // Division ('/') + _cimg_mp_op("Operator '/'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (arg2==1) _cimg_mp_return(arg1); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_div,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_div,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_div,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]/mem[arg2]); + if (!arg1) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_div,arg1,arg2); + } + + for (s = se2, ns = se1; s>ss; --s, --ns) + if (*s=='%' && *ns!='^' && level[s - expr._data]==clevel) { // Modulo ('%') + _cimg_mp_op("Operator '%'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_modulo,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_modulo,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_modulo,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant(cimg::mod(mem[arg1],mem[arg2])); + _cimg_mp_scalar2(mp_modulo,arg1,arg2); + } + + if (se1>ss) { + if (*ss=='+' && (*ss1!='+' || (ss2='0' && *ss2<='9'))) { // Unary plus ('+') + _cimg_mp_op("Operator '+'"); + _cimg_mp_return(compile(ss1,se,depth1,0,is_critical)); + } + + if (*ss=='-' && (*ss1!='-' || (ss2='0' && *ss2<='9'))) { // Unary minus ('-') + _cimg_mp_op("Operator '-'"); + arg1 = compile(ss1,se,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_minus,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(-mem[arg1]); + _cimg_mp_scalar1(mp_minus,arg1); + } + + if (*ss=='!') { // Logical not ('!') + _cimg_mp_op("Operator '!'"); + if (*ss1=='!') { // '!!expr' optimized as 'bool(expr)' + arg1 = compile(ss2,se,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_bool,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((bool)mem[arg1]); + _cimg_mp_scalar1(mp_bool,arg1); + } + arg1 = compile(ss1,se,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_logical_not,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(!mem[arg1]); + _cimg_mp_scalar1(mp_logical_not,arg1); + } + + if (*ss=='~') { // Bitwise not ('~') + _cimg_mp_op("Operator '~'"); + arg1 = compile(ss1,se,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_bitwise_not,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(~(unsigned int)mem[arg1]); + _cimg_mp_scalar1(mp_bitwise_not,arg1); + } + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='^' && *ns=='^' && level[s - expr._data]==clevel) { // Complex power ('^^') + _cimg_mp_op("Operator '^^'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,3,2); + _cimg_mp_check_type(arg2,2,3,2); + if (arg2==1) _cimg_mp_return(arg1); + pos = vector(2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) { + CImg::vector((ulongT)mp_complex_pow_vv,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) { + CImg::vector((ulongT)mp_complex_pow_vs,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) { + CImg::vector((ulongT)mp_complex_pow_sv,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + CImg::vector((ulongT)mp_complex_pow_ss,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + + for (s = se2; s>ss; --s) + if (*s=='^' && level[s - expr._data]==clevel) { // Power ('^') + _cimg_mp_op("Operator '^'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (arg2==1) _cimg_mp_return(arg1); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_pow,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_pow,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_pow,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant(std::pow(mem[arg1],mem[arg2])); + switch (arg2) { + case 0 : _cimg_mp_return(1); + case 2 : _cimg_mp_scalar1(mp_sqr,arg1); + case 3 : _cimg_mp_scalar1(mp_pow3,arg1); + case 4 : _cimg_mp_scalar1(mp_pow4,arg1); + default : + if (_cimg_mp_is_constant(arg2)) { + if (mem[arg2]==0.5) { _cimg_mp_scalar1(mp_sqrt,arg1); } + else if (mem[arg2]==0.25) { _cimg_mp_scalar1(mp_pow0_25,arg1); } + } + _cimg_mp_scalar2(mp_pow,arg1,arg2); + } + } + + // Percentage computation. + if (*se1=='%') { + arg1 = compile(ss,se1,depth1,0,is_critical); + arg2 = _cimg_mp_is_constant(arg1)?0:constant(100); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector2_vs(mp_div,arg1,arg2); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(mem[arg1]/100); + _cimg_mp_scalar2(mp_div,arg1,arg2); + } + + is_sth = ss1ss && (*se1=='+' || *se1=='-') && *se2==*se1)) { // Pre/post-decrement and increment + if ((is_sth && *ss=='+') || (!is_sth && *se1=='+')) { + _cimg_mp_op("Operator '++'"); + op = mp_self_increment; + } else { + _cimg_mp_op("Operator '--'"); + op = mp_self_decrement; + } + ref.assign(7); + arg1 = is_sth?compile(ss2,se,depth1,ref,is_critical): + compile(ss,se2,depth1,ref,is_critical); // Variable slot + + // Apply operator on a copy to prevent modifying a constant or a variable. + if (*ref && (_cimg_mp_is_constant(arg1) || _cimg_mp_is_vector(arg1) || _cimg_mp_is_variable(arg1))) { + if (_cimg_mp_is_vector(arg1)) arg1 = vector_copy(arg1); + else arg1 = scalar1(mp_copy,arg1); + } + + if (is_sth) pos = arg1; // Determine return index, depending on pre/post action + else { + if (_cimg_mp_is_vector(arg1)) pos = vector_copy(arg1); + else pos = scalar1(mp_copy,arg1); + } + + if (*ref==1) { // Vector value (scalar): V[k]++ + arg3 = ref[1]; // Vector slot + arg4 = ref[2]; // Index + if (is_sth && p_ref) std::memcpy(p_ref,ref,ref._width*sizeof(unsigned int)); + CImg::vector((ulongT)op,arg1,1).move_to(code); + CImg::vector((ulongT)mp_vector_set_off,arg1,arg3,(ulongT)_cimg_mp_size(arg3),arg4). + move_to(code); + _cimg_mp_return(pos); + } + + if (*ref==2) { // Image value (scalar): i/j[_#ind,off]++ + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (is_sth && p_ref) std::memcpy(p_ref,ref,ref._width*sizeof(unsigned int)); + CImg::vector((ulongT)op,arg1).move_to(code); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_list_set_joff:mp_list_set_ioff), + arg1,p1,arg3).move_to(code); + } else { + if (!imgout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_set_joff:mp_set_ioff), + arg1,arg3).move_to(code); + } + _cimg_mp_return(pos); + } + + if (*ref==3) { // Image value (scalar): i/j(_#ind,_x,_y,_z,_c)++ + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + arg6 = ref[6]; // C + if (is_sth && p_ref) std::memcpy(p_ref,ref,ref._width*sizeof(unsigned int)); + CImg::vector((ulongT)op,arg1).move_to(code); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_list_set_jxyzc:mp_list_set_ixyzc), + arg1,p1,arg3,arg4,arg5,arg6).move_to(code); + } else { + if (!imgout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_set_jxyzc:mp_set_ixyzc), + arg1,arg3,arg4,arg5,arg6).move_to(code); + } + _cimg_mp_return(pos); + } + + if (*ref==4) { // Image value (vector): I/J[_#ind,off]++ + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (is_sth && p_ref) std::memcpy(p_ref,ref,ref._width*sizeof(unsigned int)); + self_vector_s(arg1,op==mp_self_increment?mp_self_add:mp_self_sub,1); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg1,p1,arg3,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg1,arg3,_cimg_mp_size(arg1)).move_to(code); + } + _cimg_mp_return(pos); + } + + if (*ref==5) { // Image value (vector): I/J(_#ind,_x,_y,_z,_c)++ + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + if (is_sth && p_ref) std::memcpy(p_ref,ref,ref._width*sizeof(unsigned int)); + self_vector_s(arg1,op==mp_self_increment?mp_self_add:mp_self_sub,1); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg1,p1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } + _cimg_mp_return(pos); + } + + if (_cimg_mp_is_vector(arg1)) { // Vector variable: V++ + self_vector_s(arg1,op==mp_self_increment?mp_self_add:mp_self_sub,1); + _cimg_mp_return(pos); + } + + if (_cimg_mp_is_variable(arg1)) { // Scalar variable: s++ + CImg::vector((ulongT)op,arg1).move_to(code); + _cimg_mp_return(pos); + } + + if (is_sth) variable_name.assign(ss2,(unsigned int)(se - ss1)); + else variable_name.assign(ss,(unsigned int)(se1 - ss)); + variable_name.back() = 0; + cimg::strpare(variable_name,false,true); + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid %slvalue '%s', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + _cimg_mp_is_constant(arg1)?"const ":"", + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + // Array-like access to vectors and image values 'i/j/I/J[_#ind,offset,_boundary]' and 'vector[offset]'. + if (*se1==']') { + _cimg_mp_op("Value accessor '[]'"); + + // Find opening bracket for the offset. + s0 = se1; while (s0>ss && (*s0!='[' || level[s0 - expr._data]!=clevel)) --s0; + if (s0>ss) { s1 = s0; do { --s1; } while (cimg::is_blank(*s1)); cimg::swap(*s0,*++s1); } + is_sth=s0>ss && *(s0-1)==']'; // Particular case s.a. '..[..][..]' ? + is_relative = *ss=='j' || *ss=='J'; + + if (!is_sth && (*ss=='I' || *ss=='J') && *ss1=='[' && + (reserved_label[(int)*ss]==~0U || + !_cimg_mp_is_vector(reserved_label[(int)*ss]))) { // Image value as a vector + if (*ss2=='#') { // Index specified + s0 = ss3; while (s0::vector((ulongT)(is_relative?mp_list_Joff:mp_list_Ioff), + pos,p1,arg1,arg2==~0U?_cimg_mp_boundary:arg2,p2).move_to(code); + } else { + need_input_copy = true; + CImg::vector((ulongT)(is_relative?mp_Joff:mp_Ioff), + pos,arg1,arg2==~0U?_cimg_mp_boundary:arg2,p2).move_to(code); + } + _cimg_mp_return(pos); + } + + if (!is_sth && (*ss=='i' || *ss=='j') && *ss1=='[' && + (reserved_label[(int)*ss]==~0U || + !_cimg_mp_is_vector(reserved_label[(int)*ss]))) { // Image value as a scalar + if (*ss2=='#') { // Index specified + s0 = ss3; while (s0ss && (*s0!='[' || level[s0 - expr._data]!=clevel)) --s0; + if (s0>ss) { // Vector element + arg1 = compile(ss,s0,depth1,0,is_critical); + if (_cimg_mp_is_scalar(arg1)) { + variable_name.assign(ss,(unsigned int)(s0 - ss + 1)).back() = 0; + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Array brackets used on non-vector variable '%s', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + + } + s1 = s0 + 1; while (s1 sub-vector extraction + p1 = _cimg_mp_size(arg1); + arg2 = compile(++s0,s1,depth1,0,is_critical); // Starting index + s0 = ++s1; while (s0::vector((ulongT)mp_vector_crop,pos,arg1,p1,arg2,arg3,arg4).move_to(code); + _cimg_mp_return(pos); + } + + // One argument -> vector value reference + arg2 = compile(++s0,se1,depth1,0,is_critical); + if (_cimg_mp_is_constant(arg2)) { // Constant index + nb = (int)mem[arg2]; + if (nb>=0 && nb<(int)_cimg_mp_size(arg1)) _cimg_mp_return(arg1 + 1 + nb); + variable_name.assign(ss,(unsigned int)(s0 - ss)).back() = 0; + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Out-of-bounds reference '%s[%d]' " + "(vector '%s' has dimension %u), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function, + variable_name._data,nb, + variable_name._data,_cimg_mp_size(arg1), + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (p_ref) { + *p_ref = 1; + p_ref[1] = arg1; + p_ref[2] = arg2; + if (_cimg_mp_is_comp(arg2)) memtype[arg2] = -2; // Prevent from being used in further optimization + } + pos = scalar3(mp_vector_off,arg1,_cimg_mp_size(arg1),arg2); + memtype[pos] = -2; // Prevent from being used in further optimization + _cimg_mp_return(pos); + } + } + + // Look for a function call, an access to image value, or a parenthesis. + if (*se1==')') { + if (*ss=='(') _cimg_mp_return(compile(ss1,se1,depth1,p_ref,is_critical)); // Simple parentheses + _cimg_mp_op("Value accessor '()'"); + is_relative = *ss=='j' || *ss=='J'; + s0 = s1 = std::strchr(ss,'('); if (s0) { do { --s1; } while (cimg::is_blank(*s1)); cimg::swap(*s0,*++s1); } + + // I/J(_#ind,_x,_y,_z,_interpolation,_boundary_conditions) + if ((*ss=='I' || *ss=='J') && *ss1=='(') { // Image value as scalar + if (*ss2=='#') { // Index specified + s0 = ss3; while (s01) { + arg2 = arg1 + 1; + if (p2>2) arg3 = arg2 + 1; + } + if (s1::vector((ulongT)(is_relative?mp_list_Jxyz:mp_list_Ixyz), + pos,p1,arg1,arg2,arg3, + arg4==~0U?_cimg_mp_interpolation:arg4, + arg5==~0U?_cimg_mp_boundary:arg5,p2).move_to(code); + else { + need_input_copy = true; + CImg::vector((ulongT)(is_relative?mp_Jxyz:mp_Ixyz), + pos,arg1,arg2,arg3, + arg4==~0U?_cimg_mp_interpolation:arg4, + arg5==~0U?_cimg_mp_boundary:arg5,p2).move_to(code); + } + _cimg_mp_return(pos); + } + + // i/j(_#ind,_x,_y,_z,_c,_interpolation,_boundary_conditions) + if ((*ss=='i' || *ss=='j') && *ss1=='(') { // Image value as scalar + if (*ss2=='#') { // Index specified + s0 = ss3; while (s01) { + arg2 = arg1 + 1; + if (p2>2) { + arg3 = arg2 + 1; + if (p2>3) arg4 = arg3 + 1; + } + } + if (s1::vector((ulongT)(*ss3=='0'?mp_arg0:mp_arg),0,0,p2,arg1,arg2).move_to(l_opcode); + for (s = ++s2; s::vector(arg3).move_to(l_opcode); + ++p3; + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + if (_cimg_mp_is_constant(arg1)) { + p3-=1; // Number of args + if (*ss3=='0') arg1 = (unsigned int)(mem[arg1]<0?mem[arg1] + p3:mem[arg1] + 1); + else arg1 = (unsigned int)(mem[arg1]<0?mem[arg1] + p3:mem[arg1]); + if (arg1::vector((ulongT)mp_break,_cimg_mp_slot_nan).move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"breakpoint(",11)) { // Break point (for abort test) + _cimg_mp_op("Function 'breakpoint()'"); + if (pexpr[se2 - expr._data]=='(') { // no arguments? + CImg::vector((ulongT)mp_breakpoint,_cimg_mp_slot_nan).move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"bool(",5)) { // Boolean cast + _cimg_mp_op("Function 'bool()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_bool,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((bool)mem[arg1]); + _cimg_mp_scalar1(mp_bool,arg1); + } + + if (!std::strncmp(ss,"begin(",6)) { // Begin + _cimg_mp_op("Function 'begin()'"); + code.swap(code_begin); + arg1 = compile(ss6,se1,depth1,p_ref,true); + code.swap(code_begin); + _cimg_mp_return(arg1); + } + + if (!std::strncmp(ss,"begin_t(",8)) { // Begin thread + _cimg_mp_op("Function 'begin_t()'"); + code.swap(code_begin_t); + arg1 = compile(ss8,se1,depth1,p_ref,true); + code.swap(code_begin_t); + _cimg_mp_return(arg1); + } + break; + + case 'c' : + if (!std::strncmp(ss,"cabs(",5)) { // Complex absolute value + _cimg_mp_op("Function 'cabs()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + if (_cimg_mp_is_scalar(arg1)) _cimg_mp_scalar2(mp_complex_abs,arg1,0); + _cimg_mp_scalar2(mp_complex_abs,arg1 + 1,arg1 + 2); + } + + if (!std::strncmp(ss,"carg(",5)) { // Complex argument + _cimg_mp_op("Function 'carg()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + if (_cimg_mp_is_scalar(arg1)) _cimg_mp_scalar2(mp_atan2,0,arg1); + _cimg_mp_scalar2(mp_atan2,arg1 + 2,arg1 + 1); + } + + if (!std::strncmp(ss,"cbrt(",5)) { // Cubic root + _cimg_mp_op("Function 'cbrt()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_cbrt,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::cbrt(mem[arg1])); + _cimg_mp_scalar1(mp_cbrt,arg1); + } + + if (!std::strncmp(ss,"cconj(",6)) { // Complex conjugate + _cimg_mp_op("Function 'cconj()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_conj,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_conj,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ceil(",5)) { // Ceil + _cimg_mp_op("Function 'ceil()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_ceil,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::ceil(mem[arg1])); + _cimg_mp_scalar1(mp_ceil,arg1); + } + + if (!std::strncmp(ss,"cexp(",5)) { // Complex exponential + _cimg_mp_op("Function 'cexp()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_exp,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_exp,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"clog(",5)) { // Complex logarithm + _cimg_mp_op("Function 'clog()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_log,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_log,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ccos(",5)) { // Complex cosine + _cimg_mp_op("Function 'ccos()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_cos,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_cos,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"csin(",5)) { // Complex sine + _cimg_mp_op("Function 'csin()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_sin,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_sin,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ctan(",5)) { // Complex tangent + _cimg_mp_op("Function 'ctan()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_tan,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_tan,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ccosh(",6)) { // Complex hyperbolic cosine + _cimg_mp_op("Function 'ccosh()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_cosh,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_cosh,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"csinh(",6)) { // Complex hyperbolic sine + _cimg_mp_op("Function 'csinh()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_sinh,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_sinh,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ctanh(",6)) { // Complex hyperbolic tangent + _cimg_mp_op("Function 'ctanh()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_tanh,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_tanh,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"continue(",9)) { // Continue loop + if (pexpr[se2 - expr._data]=='(') { // no arguments? + CImg::vector((ulongT)mp_continue,_cimg_mp_slot_nan).move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"copy(",5)) { // Memory copy + _cimg_mp_op("Function 'copy()'"); + ref.assign(14); + s1 = ss5; while (s1=4 && arg4==~0U) arg4 = scalar1(mp_image_whd,ref[1]); + } + if (_cimg_mp_is_vector(arg2)) { + if (arg3==~0U) arg3 = constant(_cimg_mp_size(arg2)); + if (!ref[7]) ++arg2; + if (ref[7]>=4 && arg5==~0U) arg5 = scalar1(mp_image_whd,ref[8]); + } + if (arg3==~0U) arg3 = 1; + if (arg4==~0U) arg4 = 1; + if (arg5==~0U) arg5 = 1; + _cimg_mp_check_type(arg3,3,1,0); + _cimg_mp_check_type(arg4,4,1,0); + _cimg_mp_check_type(arg5,5,1,0); + _cimg_mp_check_type(arg6,5,1,0); + CImg(1,22).move_to(code); + code.back().get_shared_rows(0,7).fill((ulongT)mp_memcopy,p1,arg1,arg2,arg3,arg4,arg5,arg6); + code.back().get_shared_rows(8,21).fill(ref); + _cimg_mp_return(p1); + } + + if (!std::strncmp(ss,"cos(",4)) { // Cosine + _cimg_mp_op("Function 'cos()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_cos,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::cos(mem[arg1])); + _cimg_mp_scalar1(mp_cos,arg1); + } + + if (!std::strncmp(ss,"cosh(",5)) { // Hyperbolic cosine + _cimg_mp_op("Function 'cosh()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_cosh,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::cosh(mem[arg1])); + _cimg_mp_scalar1(mp_cosh,arg1); + } + + if (!std::strncmp(ss,"critical(",9)) { // Critical section (single thread at a time) + _cimg_mp_op("Function 'critical()'"); + p1 = code._width; + arg1 = compile(ss + 9,se1,depth1,p_ref,true); + CImg::vector((ulongT)mp_critical,arg1,code._width - p1).move_to(code,p1); + _cimg_mp_return(arg1); + } + + if (!std::strncmp(ss,"crop(",5)) { // Image crop + _cimg_mp_op("Function 'crop()'"); + if (*ss5=='#') { // Index specified + s0 = ss6; while (s0::sequence(_cimg_mp_size(arg1),arg1 + 1, + arg1 + (ulongT)_cimg_mp_size(arg1)); + opcode.resize(1,std::min(opcode._height,4U),1,1,0).move_to(l_opcode); + is_sth = true; + } else { + _cimg_mp_check_type(arg1,pos + 1,1,0); + CImg::vector(arg1).move_to(l_opcode); + } + s = ns; + } + (l_opcode>'y').move_to(opcode); + + arg1 = 0; arg2 = (p1!=~0U); + switch (opcode._height) { + case 0 : case 1 : + CImg::vector(0,0,0,0,~0U,~0U,~0U,~0U,0).move_to(opcode); + break; + case 2 : + CImg::vector(*opcode,0,0,0,opcode[1],~0U,~0U,~0U,_cimg_mp_boundary).move_to(opcode); + arg1 = arg2 + 2; + break; + case 3 : + CImg::vector(*opcode,0,0,0,opcode[1],~0U,~0U,~0U,opcode[2]).move_to(opcode); + arg1 = arg2 + 2; + break; + case 4 : + CImg::vector(*opcode,opcode[1],0,0,opcode[2],opcode[3],~0U,~0U,_cimg_mp_boundary). + move_to(opcode); + arg1 = arg2 + (is_sth?2:3); + break; + case 5 : + CImg::vector(*opcode,opcode[1],0,0,opcode[2],opcode[3],~0U,~0U,opcode[4]). + move_to(opcode); + arg1 = arg2 + (is_sth?2:3); + break; + case 6 : + CImg::vector(*opcode,opcode[1],opcode[2],0,opcode[3],opcode[4],opcode[5],~0U, + _cimg_mp_boundary).move_to(opcode); + arg1 = arg2 + (is_sth?2:4); + break; + case 7 : + CImg::vector(*opcode,opcode[1],opcode[2],0,opcode[3],opcode[4],opcode[5],~0U, + opcode[6]).move_to(opcode); + arg1 = arg2 + (is_sth?2:4); + break; + case 8 : + CImg::vector(*opcode,opcode[1],opcode[2],opcode[3],opcode[4],opcode[5],opcode[6], + opcode[7],_cimg_mp_boundary).move_to(opcode); + arg1 = arg2 + (is_sth?2:5); + break; + case 9 : + arg1 = arg2 + (is_sth?2:5); + break; + default : // Error -> too much arguments + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Too much arguments specified, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + _cimg_mp_check_type((unsigned int)*opcode,arg2 + 1,1,0); + _cimg_mp_check_type((unsigned int)opcode[1],arg2 + 1 + (is_sth?0:1),1,0); + _cimg_mp_check_type((unsigned int)opcode[2],arg2 + 1 + (is_sth?0:2),1,0); + _cimg_mp_check_type((unsigned int)opcode[3],arg2 + 1 + (is_sth?0:3),1,0); + if (opcode[4]!=(ulongT)~0U) { + _cimg_mp_check_constant((unsigned int)opcode[4],arg1,3); + opcode[4] = (ulongT)mem[opcode[4]]; + } + if (opcode[5]!=(ulongT)~0U) { + _cimg_mp_check_constant((unsigned int)opcode[5],arg1 + 1,3); + opcode[5] = (ulongT)mem[opcode[5]]; + } + if (opcode[6]!=(ulongT)~0U) { + _cimg_mp_check_constant((unsigned int)opcode[6],arg1 + 2,3); + opcode[6] = (ulongT)mem[opcode[6]]; + } + if (opcode[7]!=(ulongT)~0U) { + _cimg_mp_check_constant((unsigned int)opcode[7],arg1 + 3,3); + opcode[7] = (ulongT)mem[opcode[7]]; + } + _cimg_mp_check_type((unsigned int)opcode[8],arg1 + 4,1,0); + + if (opcode[4]==(ulongT)~0U || opcode[5]==(ulongT)~0U || + opcode[6]==(ulongT)~0U || opcode[7]==(ulongT)~0U) { + p2 = 0; + if (p1!=~0U) { + _cimg_mp_check_constant(p1,1,1); + p2 = (unsigned int)cimg::mod((int)mem[p1],listin.width()); + } + const CImg &img = p1!=~0U?listin[p2]:imgin; + if (!img) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Cannot crop empty image when " + "some xyzc-coordinates are unspecified, in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (opcode[4]==(ulongT)~0U) opcode[4] = (ulongT)img._width; + if (opcode[5]==(ulongT)~0U) opcode[5] = (ulongT)img._height; + if (opcode[6]==(ulongT)~0U) opcode[6] = (ulongT)img._depth; + if (opcode[7]==(ulongT)~0U) opcode[7] = (ulongT)img._spectrum; + } + + pos = vector((unsigned int)(opcode[4]*opcode[5]*opcode[6]*opcode[7])); + CImg::vector((ulongT)mp_crop, + pos,p1, + *opcode,opcode[1],opcode[2],opcode[3], + opcode[4],opcode[5],opcode[6],opcode[7], + opcode[8]).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"cross(",6)) { // Cross product + _cimg_mp_op("Function 'cross()'"); + s1 = ss6; while (s1::vector((ulongT)mp_cross,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"cut(",4)) { // Cut + _cimg_mp_op("Function 'cut()'"); + s1 = ss4; while (s1val2?val2:val); + } + _cimg_mp_scalar3(mp_cut,arg1,arg2,arg3); + } + + if (!std::strncmp(ss,"convolve(",9) || !std::strncmp(ss,"correlate(",10)) { // Convolve & Correlate + is_sth = *ss2=='n'; // is_convolve? + _cimg_mp_op(is_sth?"Function 'convolve()'":"Function 'correlate()'"); + op = is_sth?mp_convolve:mp_correlate; + const ulongT default_params[] = { (ulongT)op,0, // [0]=function, [1]=result vector + 0,0,0,0,0, // [2]=A, [3]=wA, [4]=hA, [5]=dA, [6]=sA + 0,0,0,0,0, // [7]=M, [8]=wM, [9]=hM, [10]=dM, [11]=sM + 1,0,1, // [12]=boundary_conditions, [13]=is_normalized, [14]=chan._mode + 11,11,11, // [15]=xcenter, [16]=ycenter, [17]=zcenter (default value:-1) + 0,0,0, // [18]=xstart, [19]=ystart, [20]=zstart + 11,11,11, // [21]=xend, [22]=yend, [23]=zend (default value: -1) + 1,1,1, // [24]=xstride, [25]=ystride, [26]=zstride + 1,1,1 }; // [27]=xdilation, [28]=ydilation, [29]=zdilation + + l_opcode.assign(); // Don't use 'opcode': it could be modified by further calls to 'compile()'! + CImg(default_params,1,sizeof(default_params)/sizeof(ulongT)).move_to(l_opcode); + + arg1 = 2; + for (s = std::strchr(ss,'(') + 1; s=opcode._height) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: %s arguments provided, in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + arg1<12?"Not enough":"Too much", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + _cimg_mp_check_type(opcode[2],1,2,0); // A + _cimg_mp_check_constant(opcode[3],2,3); // wA + _cimg_mp_check_constant(opcode[4],3,3); // hA + _cimg_mp_check_constant(opcode[5],4,3); // dA + _cimg_mp_check_constant(opcode[6],5,3); // sA + _cimg_mp_check_type(opcode[7],6,2,0); // M + _cimg_mp_check_constant(opcode[8],7,3); // wM + _cimg_mp_check_constant(opcode[9],8,3); // hM + _cimg_mp_check_constant(opcode[10],9,3); // dM + _cimg_mp_check_constant(opcode[11],10,3); // sM + _cimg_mp_check_type(opcode[12],11,1,0); // boundary_conditions + _cimg_mp_check_type(opcode[13],12,1,0); // is_normalized + _cimg_mp_check_constant(opcode[14],13,1); // channel_mode + _cimg_mp_check_type(opcode[15],14,1,0); // xcenter + _cimg_mp_check_type(opcode[16],15,1,0); // ycenter + _cimg_mp_check_type(opcode[17],16,1,0); // zcenter + _cimg_mp_check_constant(opcode[18],17,1); // xstart + _cimg_mp_check_constant(opcode[19],18,1); // ystart + _cimg_mp_check_constant(opcode[20],19,1); // zstart + _cimg_mp_check_constant(opcode[21],20,1); // xend + _cimg_mp_check_constant(opcode[22],21,1); // yend + _cimg_mp_check_constant(opcode[23],22,1); // zend + _cimg_mp_check_constant(opcode[24],23,3); // xstride + _cimg_mp_check_constant(opcode[25],24,3); // ystride + _cimg_mp_check_constant(opcode[26],25,3); // zstride + _cimg_mp_check_type(opcode[27],26,1,0); // xdilation + _cimg_mp_check_type(opcode[28],27,1,0); // ydilation + _cimg_mp_check_type(opcode[29],28,1,0); // zdilation + + const unsigned int + wA = (unsigned int)mem[opcode[3]], + hA = (unsigned int)mem[opcode[4]], + dA = (unsigned int)mem[opcode[5]], + sA = (unsigned int)mem[opcode[6]], + wM = (unsigned int)mem[opcode[8]], + hM = (unsigned int)mem[opcode[9]], + dM = (unsigned int)mem[opcode[10]], + sM = (unsigned int)mem[opcode[11]], + channel_mode = (unsigned int)mem[opcode[14]], + xstart = std::min((unsigned int)mem[opcode[18]],wA - 1), + ystart = std::min((unsigned int)mem[opcode[19]],hA - 1), + zstart = std::min((unsigned int)mem[opcode[20]],dA - 1), + xend = std::min((unsigned int)mem[opcode[21]],wA - 1), + yend = std::min((unsigned int)mem[opcode[22]],hA - 1), + zend = std::min((unsigned int)mem[opcode[23]],dA - 1); + + if (xstart>xend || ystart>yend || zstart>zend) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid xyz-start/end arguments " + "(start = (%u,%u,%u), end = (%u,%u,%u)), in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + xstart,ystart,zstart,xend,yend,zend, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + const float + xstride = (float)mem[opcode[24]], + ystride = (float)mem[opcode[25]], + zstride = (float)mem[opcode[26]]; + + if (xstride<=0 || ystride<=0 || zstride<=0) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid stride arguments (%g,%g,%g), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + xstride,ystride,zstride, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + arg2 = 1 + (unsigned int)std::floor((xend - xstart)/xstride); + arg3 = 1 + (unsigned int)std::floor((yend - ystart)/ystride); + arg4 = 1 + (unsigned int)std::floor((zend + zstart)/zstride); + arg5 = channel_mode==0?sM:channel_mode==1?std::max(sA,sM):sA*sM; + + opcode[1] = pos = vector(arg2*arg3*arg4*arg5); + opcode[3] = (ulongT)wA; + opcode[4] = (ulongT)hA; + opcode[5] = (ulongT)dA; + opcode[6] = (ulongT)sA; + opcode[8] = (ulongT)wM; + opcode[9] = (ulongT)hM; + opcode[10] = (ulongT)dM; + opcode[11] = (ulongT)sM; + opcode[14] = (ulongT)channel_mode; + opcode[18] = (ulongT)xstart; + opcode[19] = (ulongT)ystart; + opcode[20] = (ulongT)zstart; + opcode[21] = (ulongT)xend; + opcode[22] = (ulongT)yend; + opcode[23] = (ulongT)zend; + opcode.move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'd' : + if (*ss1=='(') { // Image depth + _cimg_mp_op("Function 'd()'"); + if (*ss2=='#') { // Index specified + p1 = compile(ss3,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss2!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_d,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"date(",5)) { // Current date or file date + _cimg_mp_op("Function 'date()'"); + s1 = ss5; while (s1::vector((ulongT)mp_date,pos,_cimg_mp_size(pos), + arg1,arg1==~0U?~0U:_cimg_mp_size(arg1), + arg2,arg2==~0U?~0U:_cimg_mp_size(arg2)).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"debug(",6)) { // Print debug info + _cimg_mp_op("Function 'debug()'"); + p1 = code._width; + arg1 = compile(ss6,se1,depth1,p_ref,is_critical); + *se1 = 0; + variable_name.assign(CImg::string(ss6,true,true).unroll('y'),true); + cimg::strpare(variable_name,false,true); + ((CImg::vector((ulongT)mp_debug,arg1,0,code._width - p1), + variable_name)>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code,p1); + *se1 = ')'; + _cimg_mp_return(arg1); + } + + if (!std::strncmp(ss,"display(",8)) { // Display memory, vector or image + _cimg_mp_op("Function 'display()'"); + if (pexpr[se2 - expr._data]=='(') { // no arguments? + CImg::vector((ulongT)mp_display_memory,_cimg_mp_slot_nan).move_to(code); + _cimg_mp_return_nan(); + } + if (*ss8!='#') { // Vector + s1 = ss8; while (s1::string(ss8,true,true).unroll('y'),true); + cimg::strpare(variable_name,false,true); + if (_cimg_mp_is_vector(arg1)) + ((CImg::vector((ulongT)mp_vector_print,arg1,0,(ulongT)_cimg_mp_size(arg1),0), + variable_name)>'y').move_to(opcode); + else + ((CImg::vector((ulongT)mp_print,arg1,0,0), + variable_name)>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + + ((CImg::vector((ulongT)mp_display,arg1,0,(ulongT)_cimg_mp_size(arg1), + arg2,arg3,arg4,arg5), + variable_name)>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + *s1 = c1; + _cimg_mp_return(arg1); + + } else { // Image + p1 = compile(ss8 + 1,se1,depth1,0,is_critical); + _cimg_mp_check_list(true); + CImg::vector((ulongT)mp_image_display,_cimg_mp_slot_nan,p1).move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"det(",4)) { // Matrix determinant + _cimg_mp_op("Function 'det()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_matrix_square(arg1,1); + p1 = (unsigned int)cimg::round(std::sqrt((float)_cimg_mp_size(arg1))); + _cimg_mp_scalar2(mp_det,arg1,p1); + } + + if (!std::strncmp(ss,"diag(",5)) { // Diagonal matrix + _cimg_mp_op("Function 'diag()'"); + CImg::vector((ulongT)mp_diag,0,0).move_to(l_opcode); + for (s = ss5; s::sequence(_cimg_mp_size(arg2),arg2 + 1, + arg2 + (ulongT)_cimg_mp_size(arg2)). + move_to(l_opcode); + else CImg::vector(arg2).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + arg1 = opcode._height - 3; + pos = vector(arg1*arg1); + opcode[1] = pos; + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"dot(",4)) { // Dot product + _cimg_mp_op("Function 'dot()'"); + s1 = ss4; while (s1::vector((ulongT)mp_do,p1,p2,arg2 - arg1,code._width - arg2,_cimg_mp_size(p1), + p1>=arg6 && !_cimg_mp_is_constant(p1), + p2>=arg6 && !_cimg_mp_is_constant(p2)).move_to(code,arg1); + _cimg_mp_return(p1); + } + + if (!std::strncmp(ss,"draw(",5)) { // Draw image + if (!is_critical) is_parallelizable = false; + _cimg_mp_op("Function 'draw()'"); + if (*ss5=='#') { // Index specified + s0 = ss6; while (s01) { + arg3 = arg2 + 1; + if (p2>2) { + arg4 = arg3 + 1; + if (p2>3) arg5 = arg4 + 1; + } + } + ++s0; + is_sth = true; + } else { + if (s0::vector((ulongT)mp_draw,arg1,(ulongT)_cimg_mp_size(arg1),p1,arg2,arg3,arg4,arg5, + 0,0,0,0,1,(ulongT)~0U,0,1).move_to(l_opcode); + + arg2 = arg3 = arg4 = arg5 = ~0U; + p2 = p1!=~0U?0:1; + if (s0::vector((ulongT)mp_echo,_cimg_mp_slot_nan,0).move_to(l_opcode); + for (s = ss5; s::vector(arg1,_cimg_mp_size(arg1)).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return_nan(); + } + + if (!std::strncmp(ss,"eig(",4)) { // Matrix eigenvalues/eigenvector + _cimg_mp_op("Function 'eig()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_matrix_square(arg1,1); + p1 = (unsigned int)cimg::round(std::sqrt((float)_cimg_mp_size(arg1))); + pos = vector((p1 + 1)*p1); + CImg::vector((ulongT)mp_matrix_eig,pos,arg1,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ellipse(",8)) { // Ellipse/circle drawing + if (!is_critical) is_parallelizable = false; + _cimg_mp_op("Function 'ellipse()'"); + if (*ss8=='#') { // Index specified + s0 = ss + 9; while (s0::vector((ulongT)mp_ellipse,_cimg_mp_slot_nan,0,p1).move_to(l_opcode); + for (s = s0; s::sequence(_cimg_mp_size(arg2),arg2 + 1, + arg2 + (ulongT)_cimg_mp_size(arg2)). + move_to(l_opcode); + else CImg::vector(arg2).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return_nan(); + } + + if (!std::strncmp(ss,"exp(",4)) { // Exponential + _cimg_mp_op("Function 'exp()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_exp,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::exp(mem[arg1])); + _cimg_mp_scalar1(mp_exp,arg1); + } + + if (!std::strncmp(ss,"expr(",5)) { // Vector from expression + _cimg_mp_op("Function 'expr()'"); + s1 = ss5; while (s1::vector((ulongT)mp_expr,pos,arg1,p1,arg2,arg3,arg4,arg5).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"eye(",4)) { // Identity matrix + _cimg_mp_op("Function 'eye()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_constant(arg1,1,3); + p1 = (unsigned int)mem[arg1]; + pos = vector(p1*p1); + CImg::vector((ulongT)mp_eye,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"end(",4)) { // End + _cimg_mp_op("Function 'end()'"); + code.swap(code_end); + compile(ss4,se1,depth1,p_ref,true); + code.swap(code_end); + is_end_code = true; + _cimg_mp_return_nan(); + } + + if (!std::strncmp(ss,"end_t(",6)) { // End thread + _cimg_mp_op("Function 'end_t()'"); + code.swap(code_end_t); + compile(ss6,se1,depth1,p_ref,true); + code.swap(code_end_t); + is_end_code = true; + _cimg_mp_return_nan(); + } + break; + + case 'f' : + if (!std::strncmp(ss,"f2ui(",5)) { // Special float->uint conversion + _cimg_mp_op("Function 'f2ui()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_f2ui,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((double)cimg::float2uint((float)mem[arg1])); + _cimg_mp_scalar1(mp_f2ui,arg1); + } + + if (!std::strncmp(ss,"fact(",5)) { // Factorial + _cimg_mp_op("Function 'fact()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_factorial,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::factorial((int)mem[arg1])); + _cimg_mp_scalar1(mp_factorial,arg1); + } + + if (!std::strncmp(ss,"fibo(",5)) { // Fibonacci + _cimg_mp_op("Function 'fibo()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_fibonacci,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::fibonacci((int)mem[arg1])); + _cimg_mp_scalar1(mp_fibonacci,arg1); + } + + if (!std::strncmp(ss,"find(",5)) { // Find + _cimg_mp_op("Function 'find()'"); + + // First argument: data to look at. + s0 = ss5; while (s01) + _cimg_mp_scalar5(mp_list_find_seq,p1,arg2,_cimg_mp_size(arg2),arg3,arg4); + _cimg_mp_scalar4(mp_list_find,p1,arg2 + (_cimg_mp_size(arg2)?1:0),arg3,arg4); + } + if (_cimg_mp_size(arg2)>1) + _cimg_mp_scalar6(mp_find_seq,arg1,_cimg_mp_size(arg1),arg2,_cimg_mp_size(arg2),arg3,arg4); + _cimg_mp_scalar5(mp_find,arg1,_cimg_mp_size(arg1),arg2 + (_cimg_mp_size(arg2)?1:0),arg3,arg4); + } + + if (*ss1=='o' && *ss2=='r' && *ss3=='(') { // For loop + _cimg_mp_op("Function 'for()'"); + s1 = ss4; while (s1::vector((ulongT)mp_for,p3,(ulongT)_cimg_mp_size(p3),p2,arg2 - arg1,arg3 - arg2, + arg4 - arg3,code._width - arg4, + p3>=arg6 && !_cimg_mp_is_constant(p3), + p2>=arg6 && !_cimg_mp_is_constant(p2)).move_to(code,arg1); + _cimg_mp_return(p3); + } + + if (!std::strncmp(ss,"floor(",6)) { // Floor + _cimg_mp_op("Function 'floor()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_floor,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::floor(mem[arg1])); + _cimg_mp_scalar1(mp_floor,arg1); + } + + if (!std::strncmp(ss,"fsize(",6)) { // File size + _cimg_mp_op("Function 'fsize()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,2,0); + pos = scalar(); + CImg::vector((ulongT)mp_fsize,pos,arg1,(ulongT)_cimg_mp_size(arg1)).move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'g' : + if (!std::strncmp(ss,"gauss(",6)) { // Gaussian function + _cimg_mp_op("Function 'gauss()'"); + s1 = ss6; while (s1::vector((ulongT)mp_get,pos,arg1,p1,arg2,arg3).move_to(code); + _cimg_mp_return(pos); + } +#endif + break; + + case 'h' : + if (*ss1=='(') { // Image height + _cimg_mp_op("Function 'h()'"); + if (*ss2=='#') { // Index specified + p1 = compile(ss3,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss2!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_h,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'i' : + if (*ss1=='c' && *ss2=='(') { // Image median + _cimg_mp_op("Function 'ic()'"); + if (*ss3=='#') { // Index specified + p1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss3!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_median,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='c' && *ss2=='(') { // Image median + _cimg_mp_op("Function 'ic()'"); + if (*ss3=='#') { // Index specified + p1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss3!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_median,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='n' && *ss2=='(') { // Image norm + _cimg_mp_op("Function 'in()'"); + if (*ss3=='#') { // Index specified + p1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss3!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_norm,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='f' && *ss2=='(') { // If..then[..else.] + _cimg_mp_op("Function 'if()'"); + s1 = ss3; while (s1::vector((ulongT)mp_if,pos,arg1,arg2,arg3, + p3 - p2,code._width - p3,arg4).move_to(code,p2); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"inrange(",8)) { // Check value range + _cimg_mp_op("Function 'inrange()'"); + s1 = ss8; while (s1=val1) + is_sth = (mem[arg4]?(val>=val1):(val>val1)) && (mem[arg5]?(val<=val2):(val=val2):(val>val2)) && (mem[arg4]?(val<=val1):(val::vector((ulongT)mp_inrange,pos,arg6,arg1,p1,arg2,p2,arg3,p3,arg4,arg5).move_to(code); + _cimg_mp_return(pos); + } + + + if (!std::strncmp(ss,"int(",4)) { // Integer cast + _cimg_mp_op("Function 'int()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_int,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((longT)mem[arg1]); + _cimg_mp_scalar1(mp_int,arg1); + } + + if (!std::strncmp(ss,"invert(",7)) { // Matrix/scalar inversion + _cimg_mp_op("Function 'invert()'"); + s1 = ss7; while (s1::vector((ulongT)mp_matrix_invert,pos,arg1,p1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(1/mem[arg1]); + _cimg_mp_scalar2(mp_div,1,arg1); + } + + if (*ss1=='s') { // Family of 'is_?()' functions + + if (!std::strncmp(ss,"isbool(",7)) { // Is boolean? + _cimg_mp_op("Function 'isbool()'"); + if (ss7==se1) _cimg_mp_return(0); + try { arg1 = compile(ss7,se1,depth1,0,is_critical); } + catch(CImgException&) { _cimg_mp_return(0); } + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_isbool,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_return(mem[arg1]==0. || mem[arg1]==1.); + _cimg_mp_scalar1(mp_isbool,arg1); + } + + if (!std::strncmp(ss,"isdir(",6)) { // Is directory? + _cimg_mp_op("Function 'isdir()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + if (_cimg_mp_is_scalar(arg1)) _cimg_mp_return(0); + pos = scalar(); + CImg::vector((ulongT)mp_isdir,pos,arg1,(ulongT)_cimg_mp_size(arg1)).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"isfile(",7)) { // Is file? + _cimg_mp_op("Function 'isfile()'"); + arg1 = compile(ss7,se1,depth1,0,is_critical); + if (_cimg_mp_is_scalar(arg1)) _cimg_mp_return(0); + pos = scalar(); + CImg::vector((ulongT)mp_isfile,pos,arg1,(ulongT)_cimg_mp_size(arg1)).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"isin(",5)) { // Is in sequence/vector? + if (ss5>=se1) _cimg_mp_return(0); + _cimg_mp_op("Function 'isin()'"); + pos = scalar(); + CImg::vector((ulongT)mp_isin,pos,0).move_to(l_opcode); + for (s = ss5; s::sequence(_cimg_mp_size(arg1),arg1 + 1, + arg1 + (ulongT)_cimg_mp_size(arg1)). + move_to(l_opcode); + else CImg::vector(arg1).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"isinf(",6)) { // Is infinite? + _cimg_mp_op("Function 'isinf()'"); + if (ss6==se1) _cimg_mp_return(0); + arg1 = compile(ss6,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_isinf,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_return((unsigned int)cimg::type::is_inf(mem[arg1])); + _cimg_mp_scalar1(mp_isinf,arg1); + } + + if (!std::strncmp(ss,"isint(",6)) { // Is integer? + _cimg_mp_op("Function 'isint()'"); + if (ss6==se1) _cimg_mp_return(0); + try { arg1 = compile(ss6,se1,depth1,0,is_critical); } + catch(CImgException&) { _cimg_mp_return(0); } + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_isint,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_return((unsigned int)((double)(longT)mem[arg1]==mem[arg1])); + _cimg_mp_scalar1(mp_isint,arg1); + } + + if (!std::strncmp(ss,"isnan(",6)) { // Is NaN? + _cimg_mp_op("Function 'isnan()'"); + if (ss6==se1) _cimg_mp_return(0); + arg1 = compile(ss6,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_isnan,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_return((unsigned int)cimg::type::is_nan(mem[arg1])); + _cimg_mp_scalar1(mp_isnan,arg1); + } + + if (!std::strncmp(ss,"isnum(",6)) { // Is number? + _cimg_mp_op("Function 'isnum()'"); + val = 0; + if (cimg_sscanf(ss6,"%lf%c%c",&val,&sep,&end)==2 && sep==')') _cimg_mp_return(1); + _cimg_mp_return(0); + } + + if (!std::strncmp(ss,"isexpr(",7)) { // Is valid expression? + _cimg_mp_op("Function 'isexpr()'"); + if (ss7==se1) _cimg_mp_return(0); + try { arg1 = compile(ss7,se1,depth1,0,is_critical); } + catch (CImgException&) { _cimg_mp_return(0); } + _cimg_mp_return(1); + } + } + break; + + case 'l' : + if (*ss1=='(') { // Size of image list + _cimg_mp_op("Function 'l()'"); + if (ss2!=se1) break; + _cimg_mp_scalar0(mp_list_l); + } + + if (!std::strncmp(ss,"lerp(",5)) { // Linear interpolation + _cimg_mp_op("Function 'lerp()'"); + s1 = ss5; while (s1::vector((ulongT)mp_vector_lerp,pos,p1,arg1,arg2,arg3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"log(",4)) { // Natural logarithm + _cimg_mp_op("Function 'log()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_log,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::log(mem[arg1])); + _cimg_mp_scalar1(mp_log,arg1); + } + + if (!std::strncmp(ss,"log2(",5)) { // Base-2 logarithm + _cimg_mp_op("Function 'log2()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_log2,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::log2(mem[arg1])); + _cimg_mp_scalar1(mp_log2,arg1); + } + + if (!std::strncmp(ss,"log10(",6)) { // Base-10 logarithm + _cimg_mp_op("Function 'log10()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_log10,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::log10(mem[arg1])); + _cimg_mp_scalar1(mp_log10,arg1); + } + + if (!std::strncmp(ss,"lowercase(",10)) { // Lower case + _cimg_mp_op("Function 'lowercase()'"); + arg1 = compile(ss + 10,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_lowercase,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::lowercase(mem[arg1])); + _cimg_mp_scalar1(mp_lowercase,arg1); + } + break; + + case 'm' : + if (!std::strncmp(ss,"mul(",4)) { // Matrix multiplication + _cimg_mp_op("Function 'mul()'"); + s1 = ss4; while (s1::%s: %s: Types of first and second arguments ('%s' and '%s') " + "do not match with third argument 'nb_colsB=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,s_type(arg2)._data,p3, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(arg4*p3); + CImg::vector((ulongT)mp_matrix_mul,pos,arg1,arg2,arg4,arg5,p3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"mproj(",6)) { // Project matrix onto dictionary + _cimg_mp_op("Function 'mproj()'"); + s1 = ss6; while (s1::%s: %s: Type of first argument ('%s') " + "do not match with second argument 'nb_colsS=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,wS, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (wD*hD!=p2) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Type of third argument ('%s') " + "do not match with fourth argument 'nb_colsD=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg3)._data,wD, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (hS!=hD) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Type of first argument ('%s') " + "do not match with third argument ('%s'), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,s_type(arg3)._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(wS*wD); + CImg::vector((ulongT)mp_mproj,pos,arg1,wS,hS,arg3,wD,arg5,arg6,p3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"merge(",6)) { // Merge inter-thread variables + _cimg_mp_op("Function 'merge()'"); + s1 = ss6; while (s1::%s: %s: Merge has already been requested before " + "for specified variable " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (arg1==~0U) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid specified operator " + "(should be one of '=,+,-,*,/,min,max'), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + memmerge.resize(3,memmerge._height + 1,1,1,0,0); + memmerge(0,memmerge._height - 1) = (int)pos; + memmerge(1,memmerge._height - 1) = (int)_cimg_mp_size(pos); + memmerge(2,memmerge._height - 1) = (int)arg1; + _cimg_mp_return(pos); + } + break; + + case 'n' : +#ifdef cimg_mp_func_name + if (!std::strncmp(ss,"name(",5)) { // Get image name as a string vector + _cimg_mp_op("Function 'name()'"); + if (*ss5=='#') { // Index specified + s0 = ss6; while (s0::vector((ulongT)mp_name,pos,p1,arg1).move_to(code); + _cimg_mp_return(pos); + } +#endif + + if (!std::strncmp(ss,"narg(",5)) { // Number of arguments + _cimg_mp_op("Function 'narg()'"); + if (ss5>=se1) _cimg_mp_return(0); + arg1 = 0; + for (s = ss5; s::vector((ulongT)mp_norm0,pos,0).move_to(l_opcode); break; + case 1 : + CImg::vector((ulongT)mp_norm1,pos,0).move_to(l_opcode); break; + case 2 : + CImg::vector((ulongT)mp_norm2,pos,0).move_to(l_opcode); break; + case ~0U : + CImg::vector((ulongT)mp_norminf,pos,0).move_to(l_opcode); break; + default : + CImg::vector((ulongT)mp_normp,pos,0,(ulongT)(arg1==~0U?-1:(int)arg1)). + move_to(l_opcode); + } + for ( ; s::sequence(_cimg_mp_size(arg2),arg2 + 1, + arg2 + (ulongT)_cimg_mp_size(arg2)). + move_to(l_opcode); + else CImg::vector(arg2).move_to(l_opcode); + s = ns; + } + + (l_opcode>'y').move_to(opcode); + if (arg1>0 && opcode._height==4) // Special case with one argument and p>=1 + _cimg_mp_scalar1(mp_abs,opcode[3]); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'p' : + if (!std::strncmp(ss,"permut(",7)) { // Number of permutations + _cimg_mp_op("Function 'permut()'"); + s1 = ss7; while (s1::vector((ulongT)mp_polygon,_cimg_mp_slot_nan,0,p1).move_to(l_opcode); + for (s = s0; s::sequence(_cimg_mp_size(arg2),arg2 + 1, + arg2 + (ulongT)_cimg_mp_size(arg2)). + move_to(l_opcode); + else CImg::vector(arg2).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return_nan(); + } + + if (!std::strncmp(ss,"print(",6) || !std::strncmp(ss,"prints(",7)) { // Print expressions + is_sth = ss[5]=='s'; // is prints() + _cimg_mp_op(is_sth?"Function 'prints()'":"Function 'print()'"); + s0 = is_sth?ss7:ss6; + if (*s0!='#' || is_sth) { // Regular expression + for (s = s0; s::string(s,true,true).unroll('y'),true); + cimg::strpare(variable_name,false,true); + if (_cimg_mp_is_vector(pos)) // Vector + ((CImg::vector((ulongT)mp_vector_print,pos,0,(ulongT)_cimg_mp_size(pos),is_sth?1:0), + variable_name)>'y').move_to(opcode); + else // Scalar + ((CImg::vector((ulongT)mp_print,pos,0,is_sth?1:0), + variable_name)>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + *ns = c1; s = ns; + } + _cimg_mp_return(pos); + } else { // Image + p1 = compile(ss7,se1,depth1,0,is_critical); + _cimg_mp_check_list(true); + CImg::vector((ulongT)mp_image_print,_cimg_mp_slot_nan,p1).move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"pseudoinvert(",13)) { // Matrix/scalar pseudo-inversion + _cimg_mp_op("Function 'pseudoinvert()'"); + s1 = ss + 13; while (s1::%s: %s: Type of first argument ('%s') " + "does not match with second argument 'nb_colsA=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,p2, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(p1); + CImg::vector((ulongT)mp_matrix_pseudoinvert,pos,arg1,p2,p3,arg3).move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'r' : + if (!std::strncmp(ss,"ref(",4)) { // Variable declaration + _cimg_mp_op("Function 'ref()'"); + s1 = ss4; while (s1=se1 || !*s1) compile(s1,s1,depth1,0,is_critical); // Will throw missing argument error + arg3 = compile(ss4,s1++,depth1,p_ref,is_critical); + *se1 = 0; + is_sth = true; + if (*s1>='0' && *s1<='9') is_sth = false; + else for (ns = s1; *ns; ++ns) if (!is_varchar(*ns)) { is_sth = false; break; } + if (!is_sth) { + variable_name.assign(s1,(unsigned int)(se1 + 1 - s1)).back() = 0; + cimg::strellipsize(variable_name,64); + *se1 = ')'; + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid specified variable name '%s', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + + } + get_variable_pos(s1,arg1,arg2); + if (arg2!=~0U) reserved_label[arg2] = arg3; + else if (arg1!=~0U) variable_pos[arg1] = arg3; + else { // New variable + if (variable_def._width>=variable_pos._width) variable_pos.resize(-200,1,1,1,0); + variable_pos[variable_def._width] = arg3; + CImg::string(s1).move_to(variable_def); + } + if (_cimg_mp_is_vector(arg3)) + set_variable_vector(arg3); // Prevent from being used in further optimization + else if (_cimg_mp_is_comp(arg3)) memtype[arg3] = -1; + *se1 = ')'; + _cimg_mp_return(arg3); + } + + if (!std::strncmp(ss,"resize(",7)) { // Vector or image resize + _cimg_mp_op("Function 'resize()'"); + if (*ss7!='#') { // Vector + s1 = ss7; while (s1::vector((ulongT)mp_vector_resize,pos,arg2,arg1,(ulongT)_cimg_mp_size(arg1), + arg3,arg4).move_to(code); + _cimg_mp_return(pos); + + } else { // Image + if (!is_critical) is_parallelizable = false; + s0 = ss8; while (s0::vector((ulongT)mp_image_resize,_cimg_mp_slot_nan,p1,~0U,~0U,~0U,~0U,1,0,0,0,0,0). + move_to(l_opcode); + pos = 0; + for (s = s0; s10) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: %s arguments, in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + pos<1?"Missing":"Too much", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + l_opcode[0].move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"reverse(",8)) { // Vector reverse + _cimg_mp_op("Function 'reverse()'"); + arg1 = compile(ss8,se1,depth1,0,is_critical); + if (!_cimg_mp_is_vector(arg1)) _cimg_mp_return(arg1); + p1 = _cimg_mp_size(arg1); + pos = vector(p1); + CImg::vector((ulongT)mp_vector_reverse,pos,arg1,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"rol(",4) || !std::strncmp(ss,"ror(",4)) { // Bitwise rotation + _cimg_mp_op(ss[2]=='l'?"Function 'rol()'":"Function 'ror()'"); + s1 = ss4; while (s11) { + arg2 = arg1 + 1; + if (p2>2) arg3 = arg2 + 1; + } + arg4 = compile(++s1,se1,depth1,0,is_critical); + } else { + s2 = s1 + 1; while (s2::vector((ulongT)mp_rot3d,pos,arg1,arg2,arg3,arg4).move_to(code); + } else { // 2D rotation + _cimg_mp_check_type(arg1,1,1,0); + pos = vector(4); + CImg::vector((ulongT)mp_rot2d,pos,arg1).move_to(code); + } + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"round(",6)) { // Value rounding + _cimg_mp_op("Function 'round()'"); + s1 = ss6; while (s1::vector((ulongT)mp_run,0,0).move_to(l_opcode); + pos = 1; + for (s = ss4; s::vector(arg1,_cimg_mp_size(arg1)).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + pos = scalar(); + opcode[1] = pos; + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } +#endif + break; + + case 's' : + if (*ss1=='(') { // Image spectrum + _cimg_mp_op("Function 's()'"); + if (*ss2=='#') { // Index specified + p1 = compile(ss3,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss2!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_s,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"same(",5)) { // Test if operands have the same values + _cimg_mp_op("Function 'same()'"); + s1 = ss5; while (s1::vector((ulongT)mp_shift,pos,arg1,p1,arg2,arg3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"sign(",5)) { // Sign + _cimg_mp_op("Function 'sign()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sign,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::sign(mem[arg1])); + _cimg_mp_scalar1(mp_sign,arg1); + } + + if (!std::strncmp(ss,"sin(",4)) { // Sine + _cimg_mp_op("Function 'sin()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sin,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::sin(mem[arg1])); + _cimg_mp_scalar1(mp_sin,arg1); + } + + if (!std::strncmp(ss,"sinc(",5)) { // Sine cardinal + _cimg_mp_op("Function 'sinc()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sinc,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::sinc(mem[arg1])); + _cimg_mp_scalar1(mp_sinc,arg1); + } + + if (!std::strncmp(ss,"sinh(",5)) { // Hyperbolic sine + _cimg_mp_op("Function 'sinh()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sinh,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::sinh(mem[arg1])); + _cimg_mp_scalar1(mp_sinh,arg1); + } + + if (!std::strncmp(ss,"size(",5)) { // Vector size + _cimg_mp_op("Function 'size()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_constant(_cimg_mp_is_scalar(arg1)?0:_cimg_mp_size(arg1)); + } + + if (!std::strncmp(ss,"solve(",6)) { // Solve square linear system + _cimg_mp_op("Function 'solve()'"); + s1 = ss6; while (s1::%s: %s: Types of first and second arguments ('%s' and '%s') " + "do not match with third argument 'nb_colsB=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,s_type(arg2)._data,p3, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(arg4*p3); + CImg::vector((ulongT)mp_solve,pos,arg1,arg2,arg4,arg5,p3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"sort(",5)) { // Sort vector + _cimg_mp_op("Function 'sort()'"); + s1 = ss5; while (s1::vector((ulongT)mp_sort,pos,arg1,p1,arg2,arg3,arg4).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"sqr(",4)) { // Square + _cimg_mp_op("Function 'sqr()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sqr,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::sqr(mem[arg1])); + _cimg_mp_scalar1(mp_sqr,arg1); + } + + if (!std::strncmp(ss,"sqrt(",5)) { // Square root + _cimg_mp_op("Function 'sqrt()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sqrt,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::sqrt(mem[arg1])); + _cimg_mp_scalar1(mp_sqrt,arg1); + } + + if (!std::strncmp(ss,"srand(",6)) { // Set RNG seed + _cimg_mp_op("Function 'srand()'"); + arg1 = ss6::vector((ulongT)mp_image_stats,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + +#ifdef cimg_mp_func_store + if (!std::strncmp(ss,"store(",6)) { // Store vector to variable + _cimg_mp_op("Function 'store()'"); + s1 = ss6; while (s1p3) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Specified dimensions (%u,%u,%u,%u) " + "are too large for vector size (%u), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + varg3,varg4,varg5,varg6,p3, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + CImg::vector((ulongT)mp_store,_cimg_mp_slot_nan,arg1,p1,arg2,p2, + arg3,arg4,arg5,arg6,pos).move_to(code); + _cimg_mp_return_nan(); + } +#endif + + if (!std::strncmp(ss,"stov(",5)) { // String to double + _cimg_mp_op("Function 'stov()'"); + s1 = ss5; while (s1::vector((ulongT)mp_stov,pos,arg1,p1,arg2,arg3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"string(",7)) { // Construct string from list of arguments + _cimg_mp_op("Function 'string()'"); + CImg::vector((ulongT)mp_string,0,0,0).move_to(l_opcode); + + if (*ss7=='#') { // Output vector size specified, with '#' + s0 = ss8; while (s0::vector(arg2,p2).move_to(l_opcode); + s = ns; + } + if (arg1==~0U) arg1 = p1; + pos = vector(arg1,0); + (l_opcode>'y').move_to(opcode); + opcode[1] = pos; + opcode[2] = arg1; + opcode[3] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"svd(",4)) { // Matrix SVD + _cimg_mp_op("Function 'svd()'"); + s1 = ss4; while (s1::%s: %s: Type of first argument ('%s') " + "does not match with second argument 'nb_colsA=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,p2, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(p1 + p2 + p2*p2); + CImg::vector((ulongT)mp_matrix_svd,pos,arg1,p2,p3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"swap(",5)) { // Swap values + _cimg_mp_op("Function 'swap()'"); + s1 = ss5; while (s1::%s: %s: %s argument cannot be a constant, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + _cimg_mp_is_constant(arg1)?"First":"Second", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + CImg::vector((ulongT)mp_swap,arg1,arg2,p1).move_to(code); + + // Write back values of linked arg1 and arg2. + const unsigned int *_ref = ref; + is_sth = true; // Is first argument? + do { + switch (*_ref) { + case 1 : // arg1: V[k] + arg3 = _ref[1]; // Vector slot + arg4 = _ref[2]; // Index + CImg::vector((ulongT)mp_vector_set_off,arg1,arg3,(ulongT)_cimg_mp_size(arg3),arg4). + move_to(code); + break; + case 2 : // arg1: i/j[_#ind,off] + if (!is_critical) is_parallelizable = false; + p1 = _ref[1]; // Index + is_relative = (bool)_ref[2]; + arg3 = _ref[3]; // Offset + if (p1!=~0U) { + if (listout) + CImg::vector((ulongT)(is_relative?mp_list_set_joff:mp_list_set_ioff), + arg1,p1,arg3).move_to(code); + } else { + if (imgout) + CImg::vector((ulongT)(is_relative?mp_set_joff:mp_set_ioff), + arg1,arg3).move_to(code); + } + break; + case 3 : // arg1: i/j(_#ind,_x,_y,_z,_c) + if (!is_critical) is_parallelizable = false; + p1 = _ref[1]; // Index + is_relative = (bool)_ref[2]; + arg3 = _ref[3]; // X + arg4 = _ref[4]; // Y + arg5 = _ref[5]; // Z + arg6 = _ref[6]; // C + if (p1!=~0U) { + if (listout) + CImg::vector((ulongT)(is_relative?mp_list_set_jxyzc:mp_list_set_ixyzc), + arg1,p1,arg3,arg4,arg5,arg6).move_to(code); + } else { + if (imgout) + CImg::vector((ulongT)(is_relative?mp_set_jxyzc:mp_set_ixyzc), + arg1,arg3,arg4,arg5,arg6).move_to(code); + } + break; + case 4: // arg1: I/J[_#ind,off] + if (!is_critical) is_parallelizable = false; + p1 = _ref[1]; // Index + is_relative = (bool)_ref[2]; + arg3 = _ref[3]; // Offset + if (p1!=~0U) { + if (listout) { + if (_cimg_mp_is_scalar(arg1)) + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_s:mp_list_set_Ioff_s), + arg1,p1,arg3).move_to(code); + else { + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg1,p1,arg3,_cimg_mp_size(arg1)).move_to(code); + } + } + } else { + if (imgout) { + if (_cimg_mp_is_scalar(arg1)) + CImg::vector((ulongT)(is_relative?mp_set_Joff_s:mp_set_Ioff_s), + arg1,arg3).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg1,arg3,_cimg_mp_size(arg1)).move_to(code); + } + } + break; + case 5 : // arg1: I/J(_#ind,_x,_y,_z,_c) + if (!is_critical) is_parallelizable = false; + p1 = _ref[1]; // Index + is_relative = (bool)_ref[2]; + arg3 = _ref[3]; // X + arg4 = _ref[4]; // Y + arg5 = _ref[5]; // Z + if (p1!=~0U) { + if (listout) { + if (_cimg_mp_is_scalar(arg1)) + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_s:mp_list_set_Ixyz_s), + arg1,p1,arg3,arg4,arg5).move_to(code); + else { + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg1,p1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } + } + } else { + if (imgout) { + if (_cimg_mp_is_scalar(arg1)) + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_s:mp_set_Ixyz_s), + arg1,arg3,arg4,arg5).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } + } + break; + } + + _ref+=7; + arg1 = arg2; + is_sth = !is_sth; + } while (!is_sth); + + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + _cimg_mp_return(arg1); + } + break; + + case 't' : + if (!std::strncmp(ss,"tan(",4)) { // Tangent + _cimg_mp_op("Function 'tan()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_tan,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::tan(mem[arg1])); + _cimg_mp_scalar1(mp_tan,arg1); + } + + if (!std::strncmp(ss,"tanh(",5)) { // Hyperbolic tangent + _cimg_mp_op("Function 'tanh()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_tanh,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::tanh(mem[arg1])); + _cimg_mp_scalar1(mp_tanh,arg1); + } + + if (!std::strncmp(ss,"trace(",6)) { // Matrix trace + _cimg_mp_op("Function 'trace()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_matrix_square(arg1,1); + p1 = (unsigned int)cimg::round(std::sqrt((float)_cimg_mp_size(arg1))); + _cimg_mp_scalar2(mp_trace,arg1,p1); + } + + if (!std::strncmp(ss,"transpose(",10)) { // Matrix transpose + _cimg_mp_op("Function 'transpose()'"); + s1 = ss + 10; while (s1::%s: %s: Size of first argument ('%s') does not match " + "second argument 'nb_cols=%u', in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,p2, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(p3*p2); + CImg::vector((ulongT)mp_transpose,pos,arg1,p2,p3).move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'u' : + if (*ss1=='(') { // Random value with uniform distribution + _cimg_mp_op("Function 'u()'"); + if (*ss2==')') _cimg_mp_scalar2(mp_u,0,1); + s1 = ss2; while (s1float conversion + _cimg_mp_op("Function 'ui2f()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_ui2f,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((double)cimg::uint2float((unsigned int)mem[arg1])); + _cimg_mp_scalar1(mp_ui2f,arg1); + } + + if (!std::strncmp(ss,"unref(",6)) { // Un-reference variable + _cimg_mp_op("Function 'unref()'"); + arg1=~0U; + for (s0 = ss6; s0ss6 && *s0==',') ++s0; + s1 = s0; while (s1s0) { + *s1 = 0; + get_variable_pos(s0,arg1,arg2); + if (arg2!=~0U) reserved_label[arg2] = ~0U; + else if (arg1!=~0U) { + variable_def.remove(arg1); + if (arg10) || + !std::strncmp(ss,"vector(",7) || + (!std::strncmp(ss,"vector",6) && ss7::sequence(arg4,arg3 + 1,arg3 + arg4).move_to(l_opcode); + arg2+=arg4; + } else { CImg::vector(arg3).move_to(l_opcode); ++arg2; } + s = ns; + } + if (arg1==~0U) arg1 = arg2; + if (!arg1) _cimg_mp_return(0); + pos = vector(arg1); + l_opcode.insert(CImg::vector((ulongT)mp_vector_init,pos,0,arg1),0); + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"vmax(",5) || !std::strncmp(ss,"vmin(",5) || + !std::strncmp(ss,"vmaxabs(",8) || !std::strncmp(ss,"vminabs(",8) || + !std::strncmp(ss,"vmed(",5) || !std::strncmp(ss,"vkth(",5) || + !std::strncmp(ss,"vsum(",5) || !std::strncmp(ss,"vavg(",5) || + !std::strncmp(ss,"vstd(",5) || !std::strncmp(ss,"vvar(",5) || + !std::strncmp(ss,"vprod(",6) || + !std::strncmp(ss,"vargmin(",8) || !std::strncmp(ss,"vargmax(",8) || + !std::strncmp(ss,"vargminabs(",11) || !std::strncmp(ss,"vargmaxabs(",11) || + !std::strncmp(ss,"vargkth(",8)) { // Multi-argument vector functions + _cimg_mp_op(ss[1]=='a'?(ss[2]=='v'?"Function 'vavg()'": + ss[4]=='k'?"Function 'vargkth()'": + ss[5]=='i' && ss[7]=='('?"Function 'vargmin()'": + ss[5]=='i'?"Function vargminabs()'": + ss[7]=='('?"Function 'vargmax()'": + "Function 'vargmaxabs()'"): + ss[1]=='s'?(ss[2]=='u'?"Function 'vsum()'":"Function 'vstd()'"): + ss[1]=='k'?"Function 'vkth()'": + ss[1]=='p'?"Function 'vprod()'": + ss[1]=='v'?"Function 'vvar()'": + ss[2]=='i'?(ss[4]=='('?"Function 'vmin()'": + "Function 'vminabs()'"): + ss[2]=='a'?(ss[4]=='('?"Function 'vmax()'": + "Function 'vmaxabs()'"): + "Function 'vmed()'"); + op = ss[1]=='a'?(ss[2]=='v'?mp_vavg: + ss[4]=='k'?mp_vargkth: + ss[5]=='i' && ss[7]=='('?mp_vargmin: + ss[5]=='i'?mp_vargminabs: + ss[7]=='('?mp_vargmax:mp_vargmaxabs): + ss[1]=='s'?(ss[2]=='u'?mp_vsum:mp_vstd): + ss[1]=='k'?mp_vkth: + ss[1]=='p'?mp_vprod: + ss[1]=='v'?mp_vvar: + ss[2]=='i'?(ss[4]=='('?mp_vmin:mp_vminabs): + ss[2]=='a'?(ss[4]=='('?mp_vmax:mp_vmaxabs): + mp_vmedian; + CImg::vector((ulongT)op,0,0,0).move_to(l_opcode); + p1 = ~0U; + p3 = 1; + for (s = std::strchr(ss,'(') + 1; s::vector(arg2,p2).move_to(l_opcode); + s = ns; + ++p3; + } + (l_opcode>'y').move_to(opcode); + if (p1==~0U) { pos = scalar(); p1 = 0; } else pos = vector(p1); + opcode[1] = pos; + opcode[2] = p1; + opcode[3] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"vtos(",5)) { // Double(s) to string + _cimg_mp_op("Function 'vtos()'"); + s1 = ss5; while (s1::vector((ulongT)mp_vtos,pos,p1,arg1,_cimg_mp_size(arg1),arg2).move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'w' : + if (*ss1=='(') { // Image width + _cimg_mp_op("Function 'w()'"); + if (*ss2=='#') { // Index specified + p1 = compile(ss3,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss2!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_w,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='h' && *ss2=='(') { // Image width*height + _cimg_mp_op("Function 'wh()'"); + if (*ss3=='#') { // Index specified + p1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss3!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_wh,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='h' && *ss2=='d' && *ss3=='(') { // Image width*height*depth + _cimg_mp_op("Function 'whd()'"); + if (*ss4=='#') { // Index specified + p1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss4!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_whd,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='h' && *ss2=='d' && *ss3=='s' && *ss4=='(') { // Image width*height*depth*spectrum + _cimg_mp_op("Function 'whds()'"); + if (*ss5=='#') { // Index specified + p1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss5!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_whds,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"while(",6)) { // While...do + _cimg_mp_op("Function 'while()'"); + s0 = *ss5=='('?ss6:ss8; + s1 = s0; while (s1::vector((ulongT)mp_while,pos,arg1,p2 - p1,code._width - p2,arg2, + pos>=arg6 && !_cimg_mp_is_constant(pos), + arg1>=arg6 && !_cimg_mp_is_constant(arg1)).move_to(code,p1); + _cimg_mp_return(pos); + } + break; + + case 'x' : + if (!std::strncmp(ss,"xor(",4)) { // Xor + _cimg_mp_op("Function 'xor()'"); + s1 = ss4; while (s1::vector((ulongT)op,pos,0).move_to(l_opcode); + for (s = std::strchr(ss,'(') + 1; s::sequence(_cimg_mp_size(arg2),arg2 + 1, + arg2 + (ulongT)_cimg_mp_size(arg2)). + move_to(l_opcode); + else CImg::vector(arg2).move_to(l_opcode); + is_sth&=_cimg_mp_is_constant(arg2); + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + if (is_sth) _cimg_mp_constant(op(*this)); + opcode.move_to(code); + _cimg_mp_return(pos); + } + + // No corresponding built-in function -> Look for a user-defined macro call. + s0 = strchr(ss,'('); + if (s0) { + variable_name.assign(ss,(unsigned int)(s0 - ss + 1)).back() = 0; + + // Count number of specified arguments. + p1 = 0; + for (s = s0 + 1; s<=se1; ++p1, s = ns + 1) { + while (*s && cimg::is_blank(*s)) ++s; + if (*s==')' && !p1) break; + ns = s; while (ns _expr = macro_body[l]; // Expression to be substituted + + p1 = 1; // Index of current parsed argument + for (s = s0 + 1; s<=se1; ++p1, s = ns + 1) { // Parse function arguments + while (*s && cimg::is_blank(*s)) ++s; + if (*s==')' && p1==1) break; // Function has no arguments + if (p1>p2) { ++p1; break; } + ns = s; while (ns _pexpr(_expr._width); + ns = _pexpr._data; + for (ps = _expr._data, c1 = ' '; *ps; ++ps) { + if (!cimg::is_blank(*ps)) c1 = *ps; + *(ns++) = c1; + } + *ns = 0; + + CImg _level = get_level(_expr); + expr.swap(_expr); + pexpr.swap(_pexpr); + level.swap(_level); + s0 = user_macro; + user_macro = macro_def[l]; + pos = compile(expr._data,expr._data + expr._width - 1,depth1,p_ref,is_critical); + user_macro = s0; + level.swap(_level); + pexpr.swap(_pexpr); + expr.swap(_expr); + _cimg_mp_return(pos); + } + + if (arg3) { // Macro name matched but number of arguments does not + CImg sig_nargs(arg3); + arg1 = 0; + cimglist_for(macro_def,l) if (!std::strcmp(macro_def[l],variable_name)) + sig_nargs[arg1++] = (unsigned int)macro_def[l].back(); + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + if (sig_nargs._width>1) { + sig_nargs.sort(); + arg1 = sig_nargs.back(); + --sig_nargs._width; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Function '%s()': Number of specified arguments (%u) " + "does not match macro declaration (defined for %s or %u arguments), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,variable_name._data, + p1,sig_nargs.value_string()._data,arg1, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } else + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Function '%s()': Number of specified arguments (%u) " + "does not match macro declaration (defined for %u argument%s), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,variable_name._data, + p1,*sig_nargs,*sig_nargs!=1?"s":"", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + } // if (se1==')') + + // Char / string initializer. + if (*se1=='\'' && + ((se1>ss && *ss=='\'') || + (se1>ss1 && *ss=='_' && *ss1=='\''))) { + if (*ss=='_') { _cimg_mp_op("Char initializer"); s1 = ss2; } + else { _cimg_mp_op("String initializer"); s1 = ss1; } + arg1 = (unsigned int)(se1 - s1); // Original string length + if (arg1) { + CImg(s1,arg1 + 1).move_to(variable_name).back() = 0; + cimg::strunescape(variable_name); + arg1 = (unsigned int)std::strlen(variable_name); + } + if (!arg1) _cimg_mp_return(0); // Empty string -> 0 + if (*ss=='_') { + if (arg1==1) _cimg_mp_constant((unsigned char)*variable_name); + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Literal %s contains more than one byte, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + ss1, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(arg1); + CImg::vector((ulongT)mp_string_init,pos,arg1).move_to(l_opcode); + CImg(1,arg1/sizeof(ulongT) + (arg1%sizeof(ulongT)?1:0)).move_to(l_opcode); + std::memcpy((char*)l_opcode[1]._data,variable_name,arg1); + (l_opcode>'y').move_to(code); + _cimg_mp_return(pos); + } + + // Vector initializer [ ... ]. + if (*ss=='[' && *se1==']') { + _cimg_mp_op("Vector initializer"); + s1 = ss1; while (s1s1 && cimg::is_blank(*s2)) --s2; + if (s2>s1 && *s1=='\'' && *s2=='\'') { // Vector values provided as a string + arg1 = (unsigned int)(s2 - s1 - 1); // Original string length + if (arg1) { + CImg(s1 + 1,arg1 + 1).move_to(variable_name).back() = 0; + cimg::strunescape(variable_name); + arg1 = (unsigned int)std::strlen(variable_name); + } + if (!arg1) _cimg_mp_return(0); // Empty string -> 0 + pos = vector(arg1); + CImg::vector((ulongT)mp_string_init,pos,arg1).move_to(l_opcode); + CImg(1,arg1/sizeof(ulongT) + (arg1%sizeof(ulongT)?1:0)).move_to(l_opcode); + std::memcpy((char*)l_opcode[1]._data,variable_name,arg1); + (l_opcode>'y').move_to(code); + } else { // Vector values provided as list of items + arg1 = 0; // Number of specified values + if (*ss1!=']') for (s = ss1; s::sequence(arg3,arg2 + 1,arg2 + arg3).move_to(l_opcode); + arg1+=arg3; + } else { CImg::vector(arg2).move_to(l_opcode); ++arg1; } + s = ns; + } + if (!arg1) _cimg_mp_return(0); + pos = vector(arg1); + l_opcode.insert(CImg::vector((ulongT)mp_vector_init,pos,0,arg1),0); + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + } + _cimg_mp_return(pos); + } + + // Variables related to the input list of images. + if (*ss1=='#' && ss2::vector((ulongT)mp_list_Joff,pos,p1,0,0,p2).move_to(code); + _cimg_mp_return(pos); + case 'R' : // R#ind + if (!listin) _cimg_mp_return(0); + _cimg_mp_scalar7(mp_list_ixyzc,arg1,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,0, + 0,_cimg_mp_boundary); + case 'G' : // G#ind + if (!listin) _cimg_mp_return(0); + _cimg_mp_scalar7(mp_list_ixyzc,arg1,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,1, + 0,_cimg_mp_boundary); + case 'B' : // B#ind + if (!listin) _cimg_mp_return(0); + _cimg_mp_scalar7(mp_list_ixyzc,arg1,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,2, + 0,_cimg_mp_boundary); + case 'A' : // A#ind + if (!listin) _cimg_mp_return(0); + _cimg_mp_scalar7(mp_list_ixyzc,arg1,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,3, + 0,_cimg_mp_boundary); + } + } + + if (*ss1 && *ss2=='#' && ss3='0' && *ss1<='9') { // i0#ind...i9#ind + if (!listin) _cimg_mp_return(0); + _cimg_mp_scalar7(mp_list_ixyzc,arg1,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,*ss1 - '0', + 0,_cimg_mp_boundary); + } + + if (*ss1=='c') { // ic#ind + if (!listin) _cimg_mp_return(0); + if (_cimg_mp_is_constant(arg1)) { + if (!list_median) list_median.assign(listin._width); + if (!list_median[p1]) CImg::vector(listin[p1].median()).move_to(list_median[p1]); + _cimg_mp_constant(*list_median[p1]); + } + _cimg_mp_scalar1(mp_list_median,arg1); + } + + if (*ss1=='n') { // in#ind + if (!listin) _cimg_mp_return(0); + if (_cimg_mp_is_constant(arg1)) { + if (!list_norm) list_norm.assign(listin._width); + if (!list_norm[p1]) CImg::vector(listin[p1].magnitude()).move_to(list_norm[p1]); + _cimg_mp_constant(*list_norm[p1]); + } + _cimg_mp_scalar1(mp_list_norm,arg1); + } + + switch (*ss1) { + case 'm' : arg2 = 0; break; // im#ind + case 'M' : arg2 = 1; break; // iM#ind + case 'a' : arg2 = 2; break; // ia#ind + case 'v' : arg2 = 3; break; // iv#ind + case 's' : arg2 = 12; break; // is#ind + case 'p' : arg2 = 13; break; // ip#ind + } + } else if (*ss1=='m') switch (*ss) { + case 'x' : arg2 = 4; break; // xm#ind + case 'y' : arg2 = 5; break; // ym#ind + case 'z' : arg2 = 6; break; // zm#ind + case 'c' : arg2 = 7; break; // cm#ind + } else if (*ss1=='M') switch (*ss) { + case 'x' : arg2 = 8; break; // xM#ind + case 'y' : arg2 = 9; break; // yM#ind + case 'z' : arg2 = 10; break; // zM#ind + case 'c' : arg2 = 11; break; // cM#ind + } + if (arg2!=~0U) { + if (!listin) _cimg_mp_return(0); + if (_cimg_mp_is_constant(arg1)) { + if (!list_stats) list_stats.assign(listin._width); + if (!list_stats[p1]) list_stats[p1].assign(1,14,1,1,0).fill(listin[p1].get_stats(),false); + _cimg_mp_constant(list_stats(p1,arg2)); + } + _cimg_mp_scalar2(mp_list_stats,arg1,arg2); + } + } + + if (*ss=='w' && *ss1=='h' && *ss2=='d' && *ss3=='#' && ss4='0' && *variable_name<='9') is_sth = false; + else for (ns = variable_name; *ns; ++ns) + if (!is_varchar(*ns)) { is_sth = false; break; } + if (is_sth) { + get_variable_pos(variable_name,arg1,arg2); + arg1 = arg2!=~0U?reserved_label[arg2]:arg1!=~0U?variable_pos[arg1]:~0U; + if (arg1!=~0U) _cimg_mp_return(arg1); + } + + // Reached an unknown item -> error. + c1 = *se1; + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + if (is_sth) + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Undefined variable '%s' in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function, + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + s1 = std::strchr(ss,'('); + s_op = s1 && c1==')'?"function call":"item"; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Unrecognized %s '%s' in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function, + s_op,variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + // Evaluation procedure. + double operator()(const double x, const double y, const double z, const double c) { + mem[_cimg_mp_slot_x] = x; mem[_cimg_mp_slot_y] = y; mem[_cimg_mp_slot_z] = z; mem[_cimg_mp_slot_c] = c; + for (p_code = code; p_code_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + return *result; + } + + // Evaluation procedure (return output values in vector 'output'). + template + void operator()(const double x, const double y, const double z, const double c, t *const output) { + mem[_cimg_mp_slot_x] = x; mem[_cimg_mp_slot_y] = y; mem[_cimg_mp_slot_z] = z; mem[_cimg_mp_slot_c] = c; + for (p_code = code; p_code_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + if (result_dim) { + const double *ptrs = result + 1; + t *ptrd = output; + for (unsigned int k = 0; k_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + p_code_end = code.end(); + } + + // Evaluation procedure for end_t() bloc. + void end_t() { + if (!code_end_t) return; + if (imgin) { + mem[_cimg_mp_slot_x] = imgin._width - 1.; + mem[_cimg_mp_slot_y] = imgin._height - 1.; + mem[_cimg_mp_slot_z] = imgin._depth - 1.; + mem[_cimg_mp_slot_c] = imgin._spectrum - 1.; + } else mem[_cimg_mp_slot_x] = mem[_cimg_mp_slot_y] = mem[_cimg_mp_slot_z] = mem[_cimg_mp_slot_c] = 0; + p_code_end = code_end_t.end(); + for (p_code = code_end_t; p_code_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + } + + // Evaluation procedure the end() bloc. + void end() { + if (!code_end) return; + if (imgin) { + mem[_cimg_mp_slot_x] = imgin._width - 1.; + mem[_cimg_mp_slot_y] = imgin._height - 1.; + mem[_cimg_mp_slot_z] = imgin._depth - 1.; + mem[_cimg_mp_slot_c] = imgin._spectrum - 1.; + } else mem[_cimg_mp_slot_x] = mem[_cimg_mp_slot_y] = mem[_cimg_mp_slot_z] = mem[_cimg_mp_slot_c] = 0; + p_code_end = code_end.end(); + for (p_code = code_end; p_code_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + } + + // Merge inter-thread variables. + // (argument 'mp' is the master instance). + void merge(_cimg_math_parser& mp) { + if (&mp==this) return; + cimg_rofY(mp.memmerge,k) { + const unsigned int + pos = (unsigned int)mp.memmerge(0,k), + siz = (unsigned int)mp.memmerge(1,k), + iop = (unsigned int)mp.memmerge(2,k); + if (!siz) switch (iop) { // Scalar value + case 0 : mp.mem[pos] = mem[pos]; break; // Assignment + case 1 : mp.mem[pos]+=mem[pos]; break; // Operator+ + case 2 : mp.mem[pos]-=mem[pos]; break; // Operator- + case 3 : mp.mem[pos]*=mem[pos]; break; // Operator* + case 4 : mp.mem[pos]/=mem[pos]; break; // Operator/ + case 5 : mp.mem[pos] = std::min(mp.mem[pos],mem[pos]); break; // Operator 'min' + case 6 : mp.mem[pos] = std::max(mp.mem[pos],mem[pos]); break; // Operator 'max' + } else switch (iop) { // Vector value + case 0 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true) = CImg(&mem[pos + 1],siz,1,1,1,true); + break; + case 1 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true)+=CImg(&mem[pos + 1],siz,1,1,1,true); + break; + case 2 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true)-=CImg(&mem[pos + 1],siz,1,1,1,true); + break; + case 3 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true)*=CImg(&mem[pos + 1],siz,1,1,1,true); + break; + case 4 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true)/=CImg(&mem[pos + 1],siz,1,1,1,true); + break; + case 5 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true).min(CImg(&mem[pos + 1],siz,1,1,1,true)); + break; + case 6 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true).max(CImg(&mem[pos + 1],siz,1,1,1,true)); + break; + } + } + } + + // Return specified argument number as a string. + static const char *s_argth(const unsigned int n_arg) { + const char + *_s_arg[] = { "", "First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eighth","Ninth", + "10th", "11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th", + "20th", "21st", "22nd", "23rd", "24th", "25th", "26th", "27th", "28th", "One of the" }; + return _s_arg[n_arg s_calling_function() const { + CImg res; + const unsigned int + l1 = calling_function?(unsigned int)std::strlen(calling_function):0U, + l2 = user_macro?(unsigned int)std::strlen(user_macro):0U; + if (l2) { + res.assign(l1 + l2 + 48); + cimg_snprintf(res,res._width,"%s(): When substituting function '%s()'",calling_function,user_macro); + } else { + res.assign(l1 + l2 + 4); + cimg_snprintf(res,res._width,"%s()",calling_function); + } + return res; + } + + // Return type of a memory element as a string. + CImg s_type(const unsigned int arg) const { + CImg res; + if (_cimg_mp_is_vector(arg)) { // Vector + CImg::string("vectorXXXXXXXXXXXXXXXX").move_to(res); + cimg_sprintf(res._data + 6,"%u",_cimg_mp_size(arg)); + } else CImg::string("scalar").move_to(res); + return res; + } + + // Count parentheses/brackets level of each character of the expression. + CImg get_level(CImg& _expr) const { + bool is_escaped = false, next_is_escaped = false; + unsigned int mode = 0, next_mode = 0; // { 0=normal | 1=char-string | 2=vector-string + CImg res(_expr._width - 1); + unsigned int *pd = res._data; + int _level = 0; + for (const char *ps = _expr._data; *ps && _level>=0; ++ps) { + if (!is_escaped && !next_is_escaped && *ps=='\\') next_is_escaped = true; + if (!is_escaped && *ps=='\'') { // Non-escaped character + if (!mode && ps>_expr._data && *(ps - 1)=='[') next_mode = mode = 2; // Start vector-string + else if (mode==2 && *(ps + 1)==']') next_mode = !mode; // End vector-string + else if (mode<2) next_mode = mode?(mode = 0):1; // Start/end char-string + } + *(pd++) = (unsigned int)(mode>=1 || is_escaped?_level + (mode==1): + *ps=='(' || *ps=='['?_level++: + *ps==')' || *ps==']'?--_level: + _level); + mode = next_mode; + is_escaped = next_is_escaped; + next_is_escaped = false; + } + if (mode) { + cimg::strellipsize(_expr,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Unterminated string literal, in expression '%s'.", + pixel_type(),_cimg_mp_calling_function, + _expr._data); + } + if (_level) { + cimg::strellipsize(_expr,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Unbalanced parentheses/brackets, in expression '%s'.", + pixel_type(),_cimg_mp_calling_function, + _expr._data); + } + return res; + } + + // Find and return index of current image 'imgin' within image list 'listin'. + unsigned int get_mem_img_index() { + if (mem_img_index==~0U) { + if (&imgout>listout.data() && &imgout='0' && c2<='9') rp = 20 + c2 - '0'; // i0...i9 + else if (c2=='m') rp = 4; // im + else if (c2=='M') rp = 5; // iM + else if (c2=='a') rp = 6; // ia + else if (c2=='v') rp = 7; // iv + else if (c2=='s') rp = 8; // is + else if (c2=='p') rp = 9; // ip + else if (c2=='c') rp = 10; // ic + else if (c2=='n') rp = 11; // in + } else if (c2=='m') { + if (c1=='x') rp = 12; // xm + else if (c1=='y') rp = 13; // ym + else if (c1=='z') rp = 14; // zm + else if (c1=='c') rp = 15; // cm + } else if (c2=='M') { + if (c1=='x') rp = 16; // xM + else if (c1=='y') rp = 17; // yM + else if (c1=='z') rp = 18; // zM + else if (c1=='c') rp = 19; // cM + } + } else if (variable_name[1] && variable_name[2] && !variable_name[3]) { // Three-chars variable + c1 = variable_name[0]; + c2 = variable_name[1]; + c3 = variable_name[2]; + if (c1=='w' && c2=='h' && c3=='d') rp = 1; // whd + } else if (variable_name[1] && variable_name[2] && variable_name[3] && + !variable_name[4]) { // Four-chars variable + c1 = variable_name[0]; + c2 = variable_name[1]; + c3 = variable_name[2]; + c4 = variable_name[3]; + if (c1=='w' && c2=='h' && c3=='d' && c4=='s') rp = 2; // whds + } else if (!std::strcmp(variable_name,"interpolation")) rp = 30; // interpolation + else if (!std::strcmp(variable_name,"boundary")) rp = 31; // boundary + + if (rp!=~0U) { rpos = rp; return; } // One of the reserved labels + + // Multi-char variable name : check for existing variable with same name + cimglist_for(variable_def,i) + if (!std::strcmp(variable_name,variable_def[i])) { pos = i; break; } + } + + // Tell for each character of an expression if it is inside a string or not. + CImg is_inside_string(CImg& _expr) const { + bool is_escaped = false, next_is_escaped = false; + unsigned int mode = 0, next_mode = 0; // { 0=normal | 1=char-string | 2=vector-string + CImg res = CImg::string(_expr); + bool *pd = res._data; + for (const char *ps = _expr._data; *ps; ++ps) { + if (!next_is_escaped && *ps=='\\') next_is_escaped = true; + if (!is_escaped && *ps=='\'') { // Non-escaped character + if (!mode && ps>_expr._data && *(ps - 1)=='[') next_mode = mode = 2; // Start vector-string + else if (mode==2 && *(ps + 1)==']') next_mode = !mode; // End vector-string + else if (mode<2) next_mode = mode?(mode = 0):1; // Start/end char-string + } + *(pd++) = mode>=1 || is_escaped; + mode = next_mode; + is_escaped = next_is_escaped; + next_is_escaped = false; + } + return res; + } + + // Return true if specified argument can be a part of an allowed variable name. + bool is_varchar(const char c) const { + return (c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='_'; + } + + // Return true if all values of a vector are computation values. + bool is_comp_vector(const unsigned int arg) const { + unsigned int siz = _cimg_mp_size(arg); + if (siz>8) return false; + const int *ptr = memtype.data(arg + 1); + bool is_tmp = true; + while (siz-->0) if (*(ptr++)) { is_tmp = false; break; } + return is_tmp; + } + + // Check if a memory slot is a positive integer constant scalar value. + // 'mode' can be: + // { 0=constant | 1=integer constant | 2=positive integer constant | 3=strictly-positive integer constant } + void check_constant(const unsigned int arg, const unsigned int n_arg, + const unsigned int mode, + char *const ss, char *const se, const char saved_char) { + _cimg_mp_check_type(arg,n_arg,1,0); + if (!(_cimg_mp_is_constant(arg) && + (!mode || (double)(int)mem[arg]==mem[arg]) && + (mode<2 || mem[arg]>=(mode==3)))) { + const char *const s_arg = s_argth(n_arg); + char *s0; _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s%s %s%s (of type '%s') is not a%s constant, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + s_arg,*s_arg?" argument":" Argument",s_type(arg)._data, + !mode?"":mode==1?"n integer": + mode==2?" positive integer":" strictly positive integer", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + + // Check if an image index is a constant value. + void check_constant_index(const unsigned int arg, + char *const ss, char *const se, const char saved_char) { + if (arg!=~0U && !_cimg_mp_is_constant(arg)) { + char *s0; _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s%s Specified image index is not a constant, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + + // Check a matrix is square. + void check_matrix_square(const unsigned int arg, const unsigned int n_arg, + char *const ss, char *const se, const char saved_char) { + _cimg_mp_check_type(arg,n_arg,2,0); + const unsigned int + siz = _cimg_mp_size(arg), + n = (unsigned int)cimg::round(std::sqrt((float)siz)); + if (n*n!=siz) { + const char *s_arg; + if (*s_op!='F') s_arg = !n_arg?"":n_arg==1?"Left-hand":"Right-hand"; + else s_arg = !n_arg?"":n_arg==1?"First":n_arg==2?"Second":n_arg==3?"Third":"One"; + char *s0; _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s%s %s%s (of type '%s') " + "cannot be considered as a square matrix, in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + s_arg,*s_op=='F'?(*s_arg?" argument":" Argument"):(*s_arg?" operand":" Operand"), + s_type(arg)._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + + // Check type compatibility for one argument. + // Bits of 'mode' tells what types are allowed: + // { 1 = scalar | 2 = vectorN }. + // If 'N' is not zero, it also restricts the vectors to be of size N only. + void check_type(const unsigned int arg, const unsigned int n_arg, + const unsigned int mode, const unsigned int N, + char *const ss, char *const se, const char saved_char) { + const bool + is_scalar = _cimg_mp_is_scalar(arg), + is_vector = _cimg_mp_is_vector(arg) && (!N || _cimg_mp_size(arg)==N); + bool cond = false; + if (mode&1) cond|=is_scalar; + if (mode&2) cond|=is_vector; + if (!cond) { + const char *s_arg; + if (*s_op!='F') s_arg = !n_arg?"":n_arg==1?"Left-hand":"Right-hand"; + else s_arg = s_argth(n_arg); + CImg sb_type(32); + if (mode==1) cimg_snprintf(sb_type,sb_type._width,"'scalar'"); + else if (mode==2) { + if (N) cimg_snprintf(sb_type,sb_type._width,"'vector%u'",N); + else cimg_snprintf(sb_type,sb_type._width,"'vector'"); + } else { + if (N) cimg_snprintf(sb_type,sb_type._width,"'scalar' or 'vector%u'",N); + else cimg_snprintf(sb_type,sb_type._width,"'scalar' or 'vector'"); + } + char *s0; _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s%s %s%s has invalid type '%s' (should be %s), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + s_arg,*s_op=='F'?(*s_arg?" argument":" Argument"):(*s_arg?" operand":" Operand"), + s_type(arg)._data,sb_type._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + + // Check that listin or listout are not empty. + void check_list(const bool is_out, + char *const ss, char *const se, const char saved_char) { + if ((!is_out && !listin) || (is_out && !listout)) { + char *s0; _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s%s Invalid call with an empty image list, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + + // Insert constant value in memory. + unsigned int constant(const double val) { + + // Search for built-in constant. + if (cimg::type::is_nan(val)) return _cimg_mp_slot_nan; + if (val==(double)(int)val) { + if (val>=0 && val<=10) return (unsigned int)val; + if (val<0 && val>=-5) return (unsigned int)(10 - val); + } + if (val==0.5) return 16; + + // Search for constant already requested before (in const cache). + unsigned int ind = ~0U; + if (constcache_size<1024) { + if (!constcache_size) { + constcache_vals.assign(16,1,1,1,0); + constcache_inds.assign(16,1,1,1,0); + *constcache_vals = val; + constcache_size = 1; + ind = 0; + } else { // Dichotomic search + const double val_beg = *constcache_vals, val_end = constcache_vals[constcache_size - 1]; + if (val_beg>=val) ind = 0; + else if (val_end==val) ind = constcache_size - 1; + else if (val_end=constcache_size || constcache_vals[ind]!=val) { + ++constcache_size; + if (constcache_size>constcache_vals._width) { + constcache_vals.resize(-200,1,1,1,0); + constcache_inds.resize(-200,1,1,1,0); + } + const int l = constcache_size - (int)ind - 1; + if (l>0) { + std::memmove(&constcache_vals[ind + 1],&constcache_vals[ind],l*sizeof(double)); + std::memmove(&constcache_inds[ind + 1],&constcache_inds[ind],l*sizeof(unsigned int)); + } + constcache_vals[ind] = val; + constcache_inds[ind] = 0; + } + } + if (constcache_inds[ind]) return constcache_inds[ind]; + } + + // Insert new constant in memory if necessary. + if (mempos>=mem._width) { mem.resize(-200,1,1,1,0); memtype.resize(-200,1,1,1,0); } + const unsigned int pos = mempos++; + mem[pos] = val; + memtype[pos] = 1; // Set constant property + if (ind!=~0U) constcache_inds[ind] = pos; + return pos; + } + + // Insert new scalar in memory. + unsigned int scalar() { + if (mempos>=mem._width) { mem.resize(-200,1,1,1,0); memtype.resize(mem._width,1,1,1,0); } + return mempos++; + } + + // Insert new vector of specified size in memory. + unsigned int vector(const unsigned int siz) { + if (mempos + siz>=mem._width) { + mem.resize(2*mem._width + siz,1,1,1,0); + memtype.resize(mem._width,1,1,1,0); + } + const unsigned int pos = mempos++; + mem[pos] = cimg::type::nan(); + memtype[pos] = siz + 1; + mempos+=siz; + return pos; + } + + // Insert new initialized vector. + unsigned int vector(const unsigned int siz, const double value) { + const unsigned int pos = vector(siz); + double *ptr = &mem[pos] + 1; + for (unsigned int i = 0; i::vector((ulongT)mp_vector_copy,pos,arg,siz).move_to(code); + return pos; + } + + // Set variable status to all values of a vector. + void set_variable_vector(const unsigned int arg) { + unsigned int siz = _cimg_mp_size(arg); + int *ptr = memtype.data(arg + 1); + while (siz-->0) *(ptr++) = -1; + } + + unsigned int scalar0(const mp_func op) { + const unsigned int pos = scalar(); + CImg::vector((ulongT)op,pos).move_to(code); + return pos; + } + + unsigned int scalar1(const mp_func op, const unsigned int arg1) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1) && op!=mp_copy?arg1:scalar(); + CImg::vector((ulongT)op,pos,arg1).move_to(code); + return pos; + } + + unsigned int scalar2(const mp_func op, const unsigned int arg1, const unsigned int arg2) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2).move_to(code); + return pos; + } + + unsigned int scalar3(const mp_func op, + const unsigned int arg1, const unsigned int arg2, const unsigned int arg3) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2: + arg3!=~0U && arg3>_cimg_mp_slot_c && _cimg_mp_is_comp(arg3)?arg3:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2,arg3).move_to(code); + return pos; + } + + unsigned int scalar4(const mp_func op, + const unsigned int arg1, const unsigned int arg2, const unsigned int arg3, + const unsigned int arg4) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2: + arg3!=~0U && arg3>_cimg_mp_slot_c && _cimg_mp_is_comp(arg3)?arg3: + arg4!=~0U && arg4>_cimg_mp_slot_c && _cimg_mp_is_comp(arg4)?arg4:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2,arg3,arg4).move_to(code); + return pos; + } + + unsigned int scalar5(const mp_func op, + const unsigned int arg1, const unsigned int arg2, const unsigned int arg3, + const unsigned int arg4, const unsigned int arg5) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2: + arg3!=~0U && arg3>_cimg_mp_slot_c && _cimg_mp_is_comp(arg3)?arg3: + arg4!=~0U && arg4>_cimg_mp_slot_c && _cimg_mp_is_comp(arg4)?arg4: + arg5!=~0U && arg5>_cimg_mp_slot_c && _cimg_mp_is_comp(arg5)?arg5:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2,arg3,arg4,arg5).move_to(code); + return pos; + } + + unsigned int scalar6(const mp_func op, + const unsigned int arg1, const unsigned int arg2, const unsigned int arg3, + const unsigned int arg4, const unsigned int arg5, const unsigned int arg6) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2: + arg3!=~0U && arg3>_cimg_mp_slot_c && _cimg_mp_is_comp(arg3)?arg3: + arg4!=~0U && arg4>_cimg_mp_slot_c && _cimg_mp_is_comp(arg4)?arg4: + arg5!=~0U && arg5>_cimg_mp_slot_c && _cimg_mp_is_comp(arg5)?arg5: + arg6!=~0U && arg6>_cimg_mp_slot_c && _cimg_mp_is_comp(arg6)?arg6:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2,arg3,arg4,arg5,arg6).move_to(code); + return pos; + } + + unsigned int scalar7(const mp_func op, + const unsigned int arg1, const unsigned int arg2, const unsigned int arg3, + const unsigned int arg4, const unsigned int arg5, const unsigned int arg6, + const unsigned int arg7) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2: + arg3!=~0U && arg3>_cimg_mp_slot_c && _cimg_mp_is_comp(arg3)?arg3: + arg4!=~0U && arg4>_cimg_mp_slot_c && _cimg_mp_is_comp(arg4)?arg4: + arg5!=~0U && arg5>_cimg_mp_slot_c && _cimg_mp_is_comp(arg5)?arg5: + arg6!=~0U && arg6>_cimg_mp_slot_c && _cimg_mp_is_comp(arg6)?arg6: + arg7!=~0U && arg7>_cimg_mp_slot_c && _cimg_mp_is_comp(arg7)?arg7:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2,arg3,arg4,arg5,arg6,arg7).move_to(code); + return pos; + } + + void self_vector_s(const unsigned int pos, const mp_func op, const unsigned int arg1) { + const unsigned int siz = _cimg_mp_size(pos); + if (siz>24) CImg::vector((ulongT)mp_self_map_vector_s,pos,siz,(ulongT)op,arg1).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1).move_to(code[code._width - 1 - siz + k]); + } + } + + void self_vector_v(const unsigned int pos, const mp_func op, const unsigned int arg1) { + const unsigned int siz = _cimg_mp_size(pos); + if (siz>24) CImg::vector((ulongT)mp_self_map_vector_v,pos,siz,(ulongT)op,arg1).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1 + k).move_to(code[code._width - 1 - siz + k]); + } + } + + unsigned int vector1_v(const mp_func op, const unsigned int arg1) { + const unsigned int + siz = _cimg_mp_size(arg1), + pos = is_comp_vector(arg1)?arg1:vector(siz); + if (siz>24) CImg::vector((ulongT)mp_vector_map_v,pos,siz,(ulongT)op,arg1).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1 + k).move_to(code[code._width - 1 - siz + k]); + } + return pos; + } + + unsigned int vector2_vv(const mp_func op, const unsigned int arg1, const unsigned int arg2) { + const unsigned int + siz = _cimg_mp_size(arg1), + pos = is_comp_vector(arg1)?arg1:is_comp_vector(arg2)?arg2:vector(siz); + if (siz>24) CImg::vector((ulongT)mp_vector_map_vv,pos,siz,(ulongT)op,arg1,arg2).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1 + k,arg2 + k).move_to(code[code._width - 1 - siz + k]); + } + return pos; + } + + unsigned int vector2_vs(const mp_func op, const unsigned int arg1, const unsigned int arg2) { + const unsigned int + siz = _cimg_mp_size(arg1), + pos = is_comp_vector(arg1)?arg1:vector(siz); + if (siz>24) CImg::vector((ulongT)mp_vector_map_vs,pos,siz,(ulongT)op,arg1,arg2).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1 + k,arg2).move_to(code[code._width - 1 - siz + k]); + } + return pos; + } + + unsigned int vector2_sv(const mp_func op, const unsigned int arg1, const unsigned int arg2) { + const unsigned int + siz = _cimg_mp_size(arg2), + pos = is_comp_vector(arg2)?arg2:vector(siz); + if (siz>24) CImg::vector((ulongT)mp_vector_map_sv,pos,siz,(ulongT)op,arg1,arg2).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1,arg2 + k).move_to(code[code._width - 1 - siz + k]); + } + return pos; + } + + unsigned int vector3_vss(const mp_func op, const unsigned int arg1, const unsigned int arg2, + const unsigned int arg3) { + const unsigned int + siz = _cimg_mp_size(arg1), + pos = is_comp_vector(arg1)?arg1:vector(siz); + if (siz>24) CImg::vector((ulongT)mp_vector_map_vss,pos,siz,(ulongT)op,arg1,arg2,arg3).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1 + k,arg2,arg3).move_to(code[code._width - 1 - siz + k]); + } + return pos; + } + + // Evaluation functions, known by the parser. + // Defining these functions 'static' ensures that sizeof(mp_func)==sizeof(ulongT), + // so we can store pointers to them directly in the opcode vectors. +#ifdef _mp_arg +#undef _mp_arg +#endif +#define _mp_arg(x) mp.mem[mp.opcode[x]] + + static double mp_abs(_cimg_math_parser& mp) { + return cimg::abs(_mp_arg(2)); + } + + static double mp_add(_cimg_math_parser& mp) { + return _mp_arg(2) + _mp_arg(3); + } + + static double mp_acos(_cimg_math_parser& mp) { + return std::acos(_mp_arg(2)); + } + + static double mp_acosh(_cimg_math_parser& mp) { + return cimg::acosh(_mp_arg(2)); + } + + static double mp_asinh(_cimg_math_parser& mp) { + return cimg::asinh(_mp_arg(2)); + } + + static double mp_atanh(_cimg_math_parser& mp) { + return cimg::atanh(_mp_arg(2)); + } + + static double mp_arg(_cimg_math_parser& mp) { + const int _ind = (int)_mp_arg(4); + const unsigned int + nb_args = (unsigned int)mp.opcode[2] - 4, + ind = _ind<0?_ind + nb_args:(unsigned int)_ind, + siz = (unsigned int)mp.opcode[3]; + if (siz>0) { + if (ind>=nb_args) std::memset(&_mp_arg(1) + 1,0,siz*sizeof(double)); + else std::memcpy(&_mp_arg(1) + 1,&_mp_arg(ind + 4) + 1,siz*sizeof(double)); + return cimg::type::nan(); + } + if (ind>=nb_args) return 0; + return _mp_arg(ind + 4); + } + + static double mp_arg0(_cimg_math_parser& mp) { + const int _ind = (int)_mp_arg(4); + const unsigned int + nb_args = (unsigned int)mp.opcode[2] - 4, + ind = _ind<0?_ind + nb_args:_ind + 1U, + siz = (unsigned int)mp.opcode[3]; + if (siz>0) { + if (ind>=nb_args) std::memset(&_mp_arg(1) + 1,0,siz*sizeof(double)); + else std::memcpy(&_mp_arg(1) + 1,&_mp_arg(ind + 4) + 1,siz*sizeof(double)); + return cimg::type::nan(); + } + if (ind>=nb_args) return 0; + return _mp_arg(ind + 4); + } + + static double mp_argkth(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + const double val = mp_kth(mp); + for (unsigned int i = 4; ival) { val = _val; argval = i - 3; } + } + return (double)argval; + } + + static double mp_argmaxabs(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3), absval = cimg::abs(val); + unsigned int argval = 0; + for (unsigned int i = 4; iabsval) { val = _val; absval = _absval; argval = i - 3; } + } + return (double)argval; + } + + static double mp_asin(_cimg_math_parser& mp) { + return std::asin(_mp_arg(2)); + } + + static double mp_atan(_cimg_math_parser& mp) { + return std::atan(_mp_arg(2)); + } + + static double mp_atan2(_cimg_math_parser& mp) { + return std::atan2(_mp_arg(2),_mp_arg(3)); + } + + static double mp_avg(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3); + for (unsigned int i = 4; i>(unsigned int)_mp_arg(3)); + } + + static double mp_bitwise_xor(_cimg_math_parser& mp) { + return (double)((longT)_mp_arg(2) ^ (longT)_mp_arg(3)); + } + + static double mp_bool(_cimg_math_parser& mp) { + return (double)(bool)_mp_arg(2); + } + + static double mp_break(_cimg_math_parser& mp) { + mp.break_type = 1; + mp.p_code = mp.p_break - 1; + return cimg::type::nan(); + } + + static double mp_breakpoint(_cimg_math_parser& mp) { + cimg_abort_init; + cimg_abort_test; + cimg::unused(mp); + return cimg::type::nan(); + } + +#ifdef cimg_mp_func_run + static double mp_run(_cimg_math_parser& mp) { + const unsigned int nb_args = (unsigned int)(mp.opcode[2] - 3)/2; + CImgList _str; + CImg it; + for (unsigned int n = 0; n string + const double *ptr = &_mp_arg(3 + 2*n) + 1; + unsigned int l = 0; + while (l(ptr,l,1,1,1,true).move_to(_str); + } else { // Scalar argument -> number + it.assign(24); + cimg_snprintf(it,it._width,"%.17g",_mp_arg(3 + 2*n)); + CImg::string(it,false,true).move_to(_str); + } + } + CImg(1,1,1,1,0).move_to(_str); + CImg str = _str>'x'; + cimg_mp_func_run(str._data); + return cimg::type::nan(); + } +#endif + + static double mp_cbrt(_cimg_math_parser& mp) { + return cimg::cbrt(_mp_arg(2)); + } + + static double mp_ceil(_cimg_math_parser& mp) { + return std::ceil(_mp_arg(2)); + } + + static double mp_complex_abs(_cimg_math_parser& mp) { + return cimg::_hypot(_mp_arg(2),_mp_arg(3)); + } + + static double mp_complex_conj(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = real; + ptrd[1] = -imag; + return cimg::type::nan(); + } + + static double mp_complex_div_sv(_cimg_math_parser& mp) { + const double + *ptr2 = &_mp_arg(3) + 1, + r1 = _mp_arg(2), + r2 = *(ptr2++), i2 = *ptr2; + double *ptrd = &_mp_arg(1) + 1; + const double denom = r2*r2 + i2*i2; + *(ptrd++) = r1*r2/denom; + *ptrd = -r1*i2/denom; + return cimg::type::nan(); + } + + static double mp_complex_div_vv(_cimg_math_parser& mp) { + const double + *ptr1 = &_mp_arg(2) + 1, *ptr2 = &_mp_arg(3) + 1, + r1 = *(ptr1++), i1 = *ptr1, + r2 = *(ptr2++), i2 = *ptr2; + double *ptrd = &_mp_arg(1) + 1; + const double denom = r2*r2 + i2*i2; + *(ptrd++) = (r1*r2 + i1*i2)/denom; + *ptrd = (r2*i1 - r1*i2)/denom; + return cimg::type::nan(); + } + + static double mp_complex_exp(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3), exp_real = std::exp(real); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = exp_real*std::cos(imag); + ptrd[1] = exp_real*std::sin(imag); + return cimg::type::nan(); + } + + static double mp_complex_log(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = 0.5*std::log(real*real + imag*imag); + ptrd[1] = std::atan2(imag,real); + return cimg::type::nan(); + } + + static double mp_complex_mul(_cimg_math_parser& mp) { + const double + *ptr1 = &_mp_arg(2) + 1, *ptr2 = &_mp_arg(3) + 1, + r1 = *(ptr1++), i1 = *ptr1, + r2 = *(ptr2++), i2 = *ptr2; + double *ptrd = &_mp_arg(1) + 1; + *(ptrd++) = r1*r2 - i1*i2; + *(ptrd++) = r1*i2 + r2*i1; + return cimg::type::nan(); + } + + static void _mp_complex_pow(const double r1, const double i1, + const double r2, const double i2, + double *ptrd) { + double ro, io; + if (cimg::abs(i2)<1e-15) { // Exponent is real + if (cimg::abs(r1)<1e-15 && cimg::abs(i1)<1e-15) { + if (cimg::abs(r2)<1e-15) { ro = 1; io = 0; } + else ro = io = 0; + } else { + const double + mod1_2 = r1*r1 + i1*i1, + phi1 = std::atan2(i1,r1), + modo = std::pow(mod1_2,0.5*r2), + phio = r2*phi1; + ro = modo*std::cos(phio); + io = modo*std::sin(phio); + } + } else { // Exponent is complex + if (cimg::abs(r1)<1e-15 && cimg::abs(i1)<1e-15) ro = io = 0; + const double + mod1_2 = r1*r1 + i1*i1, + phi1 = std::atan2(i1,r1), + modo = std::pow(mod1_2,0.5*r2)*std::exp(-i2*phi1), + phio = r2*phi1 + 0.5*i2*std::log(mod1_2); + ro = modo*std::cos(phio); + io = modo*std::sin(phio); + } + *(ptrd++) = ro; + *ptrd = io; + } + + static double mp_complex_pow_ss(_cimg_math_parser& mp) { + const double val1 = _mp_arg(2), val2 = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + _mp_complex_pow(val1,0,val2,0,ptrd); + return cimg::type::nan(); + } + + static double mp_complex_pow_sv(_cimg_math_parser& mp) { + const double val1 = _mp_arg(2), *ptr2 = &_mp_arg(3) + 1; + double *ptrd = &_mp_arg(1) + 1; + _mp_complex_pow(val1,0,ptr2[0],ptr2[1],ptrd); + return cimg::type::nan(); + } + + static double mp_complex_pow_vs(_cimg_math_parser& mp) { + const double *ptr1 = &_mp_arg(2) + 1, val2 = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + _mp_complex_pow(ptr1[0],ptr1[1],val2,0,ptrd); + return cimg::type::nan(); + } + + static double mp_complex_pow_vv(_cimg_math_parser& mp) { + const double *ptr1 = &_mp_arg(2) + 1, *ptr2 = &_mp_arg(3) + 1; + double *ptrd = &_mp_arg(1) + 1; + _mp_complex_pow(ptr1[0],ptr1[1],ptr2[0],ptr2[1],ptrd); + return cimg::type::nan(); + } + + static double mp_complex_cos(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::cos(real)*std::cosh(imag); + ptrd[1] = -std::sin(real)*std::sinh(imag); + return cimg::type::nan(); + } + + static double mp_complex_sin(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::sin(real)*std::cosh(imag); + ptrd[1] = std::cos(real)*std::sinh(imag); + return cimg::type::nan(); + } + + static double mp_complex_tan(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3), denom = std::cos(2*real) + std::cosh(2*imag); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::sin(2*real)/denom; + ptrd[1] = std::sinh(2*imag)/denom; + return cimg::type::nan(); + } + + static double mp_complex_cosh(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::cosh(real)*std::cos(imag); + ptrd[1] = std::sinh(real)*std::sin(imag); + return cimg::type::nan(); + } + + static double mp_complex_sinh(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::sinh(real)*std::cos(imag); + ptrd[1] = std::cosh(real)*std::sin(imag); + return cimg::type::nan(); + } + + static double mp_complex_tanh(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3), denom = std::cosh(2*real) + std::cos(2*imag); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::sinh(2*real)/denom; + ptrd[1] = std::sin(2*imag)/denom; + return cimg::type::nan(); + } + + static double mp_continue(_cimg_math_parser& mp) { + mp.break_type = 2; + mp.p_code = mp.p_break - 1; + return cimg::type::nan(); + } + + static double mp_convolve(_cimg_math_parser &mp) { + return _mp_correlate(mp,true); + } + + static double mp_correlate(_cimg_math_parser &mp) { + return _mp_correlate(mp,false); + } + + static double _mp_correlate(_cimg_math_parser &mp, bool is_convolve) { + double *ptrd = &_mp_arg(1) + 1; + const double *const ptrA = &_mp_arg(2) + 1, *const ptrM = &_mp_arg(7) + 1; + const unsigned int + wA = (unsigned int)mp.opcode[3], + hA = (unsigned int)mp.opcode[4], + dA = (unsigned int)mp.opcode[5], + sA = (unsigned int)mp.opcode[6], + wM = (unsigned int)mp.opcode[8], + hM = (unsigned int)mp.opcode[9], + dM = (unsigned int)mp.opcode[10], + sM = (unsigned int)mp.opcode[11], + boundary_conditions = (unsigned int)_mp_arg(12), + channel_mode = (unsigned int)mp.opcode[14], + xcenter = (unsigned int)_mp_arg(15), + ycenter = (unsigned int)_mp_arg(16), + zcenter = (unsigned int)_mp_arg(17), + xstart = (unsigned int)mp.opcode[18], + ystart = (unsigned int)mp.opcode[19], + zstart = (unsigned int)mp.opcode[20], + xend = (unsigned int)mp.opcode[21], + yend = (unsigned int)mp.opcode[22], + zend = (unsigned int)mp.opcode[23]; + const bool + is_normalized = (bool)_mp_arg(13); + const float + xstride = (float)_mp_arg(24), + ystride = (float)_mp_arg(25), + zstride = (float)_mp_arg(26), + xdilation = (float)_mp_arg(27), + ydilation = (float)_mp_arg(28), + zdilation = (float)_mp_arg(29); + CImg res; + if (is_convolve) res = CImg(ptrA,wA,hA,dA,sA,true). + get_convolve(CImg(ptrM,wM,hM,dM,sM,true), + boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter, + xstart,ystart,zstart, + xend,yend,zend, + xstride,ystride,zstride, + xdilation,ydilation,zdilation); + else res = CImg(ptrA,wA,hA,dA,sA,true). + get_correlate(CImg(ptrM,wM,hM,dM,sM,true), + boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter, + xstart,ystart,zstart, + xend,yend,zend, + xstride,ystride,zstride, + xdilation,ydilation,zdilation); + CImg(ptrd,res._width,res._height,res._depth,res._spectrum,true) = res; + return cimg::type::nan(); + } + + static double mp_cos(_cimg_math_parser& mp) { + return std::cos(_mp_arg(2)); + } + + static double mp_cosh(_cimg_math_parser& mp) { + return std::cosh(_mp_arg(2)); + } + + static double mp_critical(_cimg_math_parser& mp) { + const ulongT g_target = mp.opcode[1]; + cimg_pragma_openmp(critical(mp_critical)) + { + for (const CImg *const p_end = ++mp.p_code + mp.opcode[2]; + mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + } + --mp.p_code; + return mp.mem[g_target]; + } + + static double mp_crop(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const int x = (int)_mp_arg(3), y = (int)_mp_arg(4), z = (int)_mp_arg(5), c = (int)_mp_arg(6); + const unsigned int + dx = (unsigned int)mp.opcode[7], + dy = (unsigned int)mp.opcode[8], + dz = (unsigned int)mp.opcode[9], + dc = (unsigned int)mp.opcode[10]; + const unsigned int boundary_conditions = (unsigned int)_mp_arg(11); + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgin:mp.listin[ind]; + if (!img) std::memset(ptrd,0,dx*dy*dz*dc*sizeof(double)); + else CImg(ptrd,dx,dy,dz,dc,true) = img.get_crop(x,y,z,c, + x + dx - 1,y + dy - 1, + z + dz - 1,c + dc - 1, + boundary_conditions); + return cimg::type::nan(); + } + + static double mp_cross(_cimg_math_parser& mp) { + CImg + vout(&_mp_arg(1) + 1,1,3,1,1,true), + v1(&_mp_arg(2) + 1,1,3,1,1,true), + v2(&_mp_arg(3) + 1,1,3,1,1,true); + (vout = v1).cross(v2); + return cimg::type::nan(); + } + + static double mp_cut(_cimg_math_parser& mp) { + double val = _mp_arg(2), cmin = _mp_arg(3), cmax = _mp_arg(4); + return valcmax?cmax:val; + } + + static double mp_date(_cimg_math_parser& mp) { + const unsigned int + siz_out = (unsigned int)mp.opcode[2], + siz_arg1 = (unsigned int)mp.opcode[4], + siz_arg2 = (unsigned int)mp.opcode[6]; + double *ptr_out = &_mp_arg(1) + (siz_out?1:0); + const double + *ptr_arg1 = siz_arg1==~0U?0:&_mp_arg(3) + (siz_arg1?1:0), + *ptr_arg2 = siz_arg2==~0U?0:&_mp_arg(5) + 1; + + if (!ptr_arg2) { // No filename specified + if (!siz_arg1) return cimg::date((unsigned int)*ptr_arg1); + if (siz_arg1==~0U) for (unsigned int k = 0; k::nan(); + } + + // Filename specified. + CImg ss(siz_arg2 + 1); + cimg_forX(ss,i) ss[i] = (char)ptr_arg2[i]; + ss.back() = 0; + if (!siz_arg1) return cimg::fdate(ss,(unsigned int)*ptr_arg1); + for (unsigned int k = 0; k::nan(); + } + + static double mp_debug(_cimg_math_parser& mp) { + CImg expr(mp.opcode[2] - 4); + { + const ulongT *ptrs = mp.opcode._data + 4; + cimg_for(expr,ptrd,char) *ptrd = (char)*(ptrs++); + } + cimg::strellipsize(expr); + const ulongT g_target = mp.opcode[1]; + +#if cimg_use_openmp==0 + const unsigned int n_thread = 0; +#else + const unsigned int n_thread = omp_get_thread_num(); +#endif + cimg_pragma_openmp(critical(mp_debug)) + { + std::fprintf(cimg::output(), + "\n[" cimg_appname "_math_parser] %p[thread #%u]:%*c" + "Start debugging expression '%s', code length %u -> mem[%u] (memsize: %u)", + (void*)&mp,n_thread,mp.debug_indent,' ', + expr._data,(unsigned int)mp.opcode[3],(unsigned int)g_target,mp.mem._width); + std::fflush(cimg::output()); + mp.debug_indent+=3; + } + const CImg *const p_end = ++mp.p_code + mp.opcode[3]; + CImg _op; + for ( ; mp.p_code &op = *mp.p_code; + mp.opcode._data = op._data; + + _op.assign(1,op._height - 1); + const ulongT *ptrs = op._data + 1; + for (ulongT *ptrd = _op._data, *const ptrde = _op._data + _op._height; ptrd mem[%u] = %.17g", + (void*)&mp,n_thread,mp.debug_indent,' ', + (void*)mp.opcode._data,(void*)*mp.opcode,_op.value_string().data(), + (unsigned int)target,mp.mem[target]); + std::fflush(cimg::output()); + } + } + cimg_pragma_openmp(critical(mp_debug)) + { + mp.debug_indent-=3; + std::fprintf(cimg::output(), + "\n[" cimg_appname "_math_parser] %p[thread #%u]:%*c" + "End debugging expression '%s' -> mem[%u] = %.17g (memsize: %u)", + (void*)&mp,n_thread,mp.debug_indent,' ', + expr._data,(unsigned int)g_target,mp.mem[g_target],mp.mem._width); + std::fflush(cimg::output()); + } + --mp.p_code; + return mp.mem[g_target]; + } + + static double mp_decrement(_cimg_math_parser& mp) { + return _mp_arg(2) - 1; + } + + static double mp_det(_cimg_math_parser& mp) { + const double *ptrs = &_mp_arg(2) + 1; + const unsigned int k = (unsigned int)mp.opcode[3]; + return CImg(ptrs,k,k,1,1,true).det(); + } + + static double mp_diag(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2], siz = mp.opcode[2] - 3; + double *ptrd = &_mp_arg(1) + 1; + std::memset(ptrd,0,siz*siz*sizeof(double)); + for (unsigned int i = 3; i::nan(); + } + + static double mp_display_memory(_cimg_math_parser& mp) { + cimg::unused(mp); + std::fputc('\n',cimg::output()); + CImg title(128); + cimg_snprintf(title,title._width,"%s (%u)","[" cimg_appname "_math_parser] Memory snapshot",mp.mem._width); + mp.mem.display(title); + return cimg::type::nan(); + } + + static double mp_display(_cimg_math_parser& mp) { + const unsigned int + _siz = (unsigned int)mp.opcode[3], + siz = _siz?_siz:1; + const double *const ptr = &_mp_arg(1) + (_siz?1:0); + const int + w = (int)_mp_arg(4), + h = (int)_mp_arg(5), + d = (int)_mp_arg(6), + s = (int)_mp_arg(7); + CImg img; + if (w>0 && h>0 && d>0 && s>0) { + if ((unsigned int)w*h*d*s<=siz) img.assign(ptr,w,h,d,s,true); + else img.assign(ptr,siz).resize(w,h,d,s,-1); + } else img.assign(ptr,1,siz,1,1,true); + + CImg expr(mp.opcode[2] - 8); + const ulongT *ptrs = mp.opcode._data + 8; + cimg_for(expr,ptrd,char) *ptrd = (char)*(ptrs++); + ((CImg::string("[" cimg_appname "_math_parser] ",false,true),expr)>'x').move_to(expr); + cimg::strellipsize(expr); + std::fputc('\n',cimg::output()); + img.display(expr._data); + return cimg::type::nan(); + } + + static double mp_div(_cimg_math_parser& mp) { + return _mp_arg(2)/_mp_arg(3); + } + + static double mp_dot(_cimg_math_parser& mp) { + const unsigned int siz = (unsigned int)mp.opcode[4]; + return CImg(&_mp_arg(2) + 1,1,siz,1,1,true). + dot(CImg(&_mp_arg(3) + 1,1,siz,1,1,true)); + } + + static double mp_do(_cimg_math_parser& mp) { + const ulongT + mem_body = mp.opcode[1], + mem_cond = mp.opcode[2]; + const CImg + *const p_body = ++mp.p_code, + *const p_cond = p_body + mp.opcode[3], + *const p_end = p_cond + mp.opcode[4]; + const unsigned int vsiz = (unsigned int)mp.opcode[5]; + if (mp.opcode[6]) { // Set default value for result and condition if necessary + if (vsiz) CImg(&mp.mem[mem_body] + 1,vsiz,1,1,1,true).fill(cimg::type::nan()); + else mp.mem[mem_body] = cimg::type::nan(); + } + if (mp.opcode[7]) mp.mem[mem_cond] = 0; + + const unsigned int _break_type = mp.break_type; + mp.break_type = 0; + do { + for (mp.p_code = p_body; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; else if (mp.break_type==2) mp.break_type = 0; + for (mp.p_code = p_cond; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; else if (mp.break_type==2) mp.break_type = 0; + } while (mp.mem[mem_cond]); + mp.break_type = _break_type; + mp.p_code = p_end - 1; + return mp.mem[mem_body]; + } + + static double mp_draw(_cimg_math_parser& mp) { + const int x = (int)_mp_arg(4), y = (int)_mp_arg(5), z = (int)_mp_arg(6), c = (int)_mp_arg(7); + unsigned int ind = (unsigned int)mp.opcode[3]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(3),mp.listin.width()); + CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + unsigned int + dx = (unsigned int)mp.opcode[8], + dy = (unsigned int)mp.opcode[9], + dz = (unsigned int)mp.opcode[10], + dc = (unsigned int)mp.opcode[11]; + dx = dx==~0U?img._width:(unsigned int)_mp_arg(8); + dy = dy==~0U?img._height:(unsigned int)_mp_arg(9); + dz = dz==~0U?img._depth:(unsigned int)_mp_arg(10); + dc = dc==~0U?img._spectrum:(unsigned int)_mp_arg(11); + + const ulongT sizS = mp.opcode[2]; + if (sizS<(ulongT)dx*dy*dz*dc) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'draw()': " + "Sprite dimension (%lu values) and specified sprite geometry (%u,%u,%u,%u) " + "(%lu values) do not match.", + mp.imgin.pixel_type(),sizS,dx,dy,dz,dc,(ulongT)dx*dy*dz*dc); + CImg S(&_mp_arg(1) + 1,dx,dy,dz,dc,true); + const float opacity = (float)_mp_arg(12); + + if (img._data) { + if (mp.opcode[13]!=~0U) { // Opacity mask specified + const ulongT sizM = mp.opcode[14]; + if (sizM<(ulongT)dx*dy*dz) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'draw()': " + "Mask dimension (%lu values) and specified sprite geometry (%u,%u,%u,%u) " + "(%lu values) do not match.", + mp.imgin.pixel_type(),sizS,dx,dy,dz,dc,(ulongT)dx*dy*dz*dc); + const CImg M(&_mp_arg(13) + 1,dx,dy,dz,(unsigned int)(sizM/(dx*dy*dz)),true); + img.draw_image(x,y,z,c,S,M,opacity,(float)_mp_arg(15)); + } else img.draw_image(x,y,z,c,S,opacity); + } + return cimg::type::nan(); + } + + static double mp_echo(_cimg_math_parser& mp) { + const unsigned int nb_args = (unsigned int)(mp.opcode[2] - 3)/2; + CImgList _str; + CImg it; + for (unsigned int n = 0; n string + const double *ptr = &_mp_arg(3 + 2*n) + 1; + unsigned int l = 0; + while (l(ptr,l,1,1,1,true).move_to(_str); + } else { // Scalar argument -> number + it.assign(24); + cimg_snprintf(it,it._width,"%.17g",_mp_arg(3 + 2*n)); + CImg::string(it,false,true).move_to(_str); + } + } + CImg(1,1,1,1,0).move_to(_str); + const CImg str = _str>'x'; + std::fprintf(cimg::output(),"\n%s",str._data); + return cimg::type::nan(); + } + + static double mp_ellipse(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + unsigned int ind = (unsigned int)mp.opcode[3]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(3),mp.listin.width()); + CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + CImg color(img._spectrum,1,1,1,0); + bool is_invalid_arguments = false, is_outlined = false; + float r1 = 0, r2 = 0, angle = 0, opacity = 1; + unsigned int i = 4, pattern = ~0U; + int x0 = 0, y0 = 0; + if (i>=i_end) is_invalid_arguments = true; + else { + x0 = (int)cimg::round(_mp_arg(i++)); + if (i>=i_end) is_invalid_arguments = true; + else { + y0 = (int)cimg::round(_mp_arg(i++)); + if (i>=i_end) is_invalid_arguments = true; + else { + r1 = (float)_mp_arg(i++); + if (i>=i_end) r2 = r1; + else { + r2 = (float)_mp_arg(i++); + if (i args(i_end - 4); + cimg_forX(args,k) args[k] = _mp_arg(4 + k); + if (ind==~0U) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'ellipse()': " + "Invalid arguments '%s'. ", + mp.imgin.pixel_type(),args.value_string()._data); + else + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'ellipse()': " + "Invalid arguments '#%u%s%s'. ", + mp.imgin.pixel_type(),ind,args._width?",":"",args.value_string()._data); + } + return cimg::type::nan(); + } + + static double mp_eq(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)==_mp_arg(3)); + } + + static double mp_exp(_cimg_math_parser& mp) { + return std::exp(_mp_arg(2)); + } + + static double mp_expr(_cimg_math_parser& mp) { + const unsigned int + sizs = (unsigned int)mp.opcode[3], + w = (unsigned int)mp.opcode[4], + h = (unsigned int)mp.opcode[5], + d = (unsigned int)mp.opcode[6], + s = (unsigned int)mp.opcode[7], + sizd = w*h*d*s; + const double *ptrs = &_mp_arg(2) + 1; + double *ptrd = &_mp_arg(1); + CImg ss(sizs + 1); + cimg_for_inX(ss,0,ss.width() - 1,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + if (!sizd) return CImg(w,h,d,s,0).eval(ss,0,0,0,0,&mp.listin,&mp.listout); // Scalar result + CImg(++ptrd,w,h,d,s,true) = CImg(w,h,d,s,0).fill(ss,true,true,&mp.listin,&mp.listout); + return cimg::type::nan(); + } + + static double mp_eye(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int k = (unsigned int)mp.opcode[2]; + CImg(ptrd,k,k,1,1,true).identity_matrix(); + return cimg::type::nan(); + } + + static double mp_f2ui(_cimg_math_parser& mp) { + return (double)cimg::float2uint((float)_mp_arg(2)); + } + + static double mp_factorial(_cimg_math_parser& mp) { + return cimg::factorial((int)_mp_arg(2)); + } + + static double mp_fibonacci(_cimg_math_parser& mp) { + return cimg::fibonacci((int)_mp_arg(2)); + } + + static double mp_find(_cimg_math_parser& mp) { + const int _step = (int)_mp_arg(6), step = _step?_step:-1; + const ulongT siz = (ulongT)mp.opcode[3]; + longT ind = (longT)(mp.opcode[5]!=_cimg_mp_slot_nan?_mp_arg(5):step>0?0:siz - 1); + if (ind<0 || ind>=(longT)siz) return -1.; + const double + *const ptrb = &_mp_arg(2) + 1, + *const ptre = ptrb + siz, + val = _mp_arg(4), + *ptr = ptrb + ind; + + // Forward search + if (step>0) { + while (ptr=ptre?-1.:(double)(ptr - ptrb); + } + + // Backward search. + while (ptr>=ptrb && *ptr!=val) ptr+=step; + return ptr0?0:siz1 - 1); + if (ind<0 || ind>=(longT)siz1) return -1.; + const double + *const ptr1b = &_mp_arg(2) + 1, + *const ptr1e = ptr1b + siz1, + *const ptr2b = &_mp_arg(4) + 1, + *const ptr2e = ptr2b + siz2, + *ptr1 = ptr1b + ind, + *p1 = 0, + *p2 = 0; + + // Forward search. + if (step>0) { + do { + while (ptr1=ptr1e) return -1.; + p1 = ptr1 + 1; + p2 = ptr2b + 1; + while (p1=ptr1b && *ptr1!=*ptr2b) ptr1+=step; + if (ptr1=ptr1b); + return p2 + *const p_init = ++mp.p_code, + *const p_cond = p_init + mp.opcode[4], + *const p_body = p_cond + mp.opcode[5], + *const p_post = p_body + mp.opcode[6], + *const p_end = p_post + mp.opcode[7]; + const unsigned int vsiz = (unsigned int)mp.opcode[2]; + bool is_cond = false; + if (mp.opcode[8]) { // Set default value for result and condition if necessary + if (vsiz) CImg(&mp.mem[mem_body] + 1,vsiz,1,1,1,true).fill(cimg::type::nan()); + else mp.mem[mem_body] = cimg::type::nan(); + } + if (mp.opcode[9]) mp.mem[mem_cond] = 0; + const unsigned int _break_type = mp.break_type; + mp.break_type = 0; + + for (mp.p_code = p_init; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + + if (!mp.break_type) do { + for (mp.p_code = p_cond; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; + + is_cond = (bool)mp.mem[mem_cond]; + if (is_cond && !mp.break_type) { + for (mp.p_code = p_body; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; else if (mp.break_type==2) mp.break_type = 0; + + for (mp.p_code = p_post; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; else if (mp.break_type==2) mp.break_type = 0; + } + } while (is_cond); + + mp.break_type = _break_type; + mp.p_code = p_end - 1; + return mp.mem[mem_body]; + } + + static double mp_fsize(_cimg_math_parser& mp) { + const double *ptrs = &_mp_arg(2) + 1; + const ulongT siz = (ulongT)mp.opcode[3]; + CImg ss(siz + 1); + cimg_forX(ss,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + return (double)cimg::fsize(ss); + } + + static double mp_g(_cimg_math_parser& mp) { + cimg::unused(mp); + return cimg::grand(&mp.rng); + } + + static double mp_gauss(_cimg_math_parser& mp) { + const double x = _mp_arg(2), s = _mp_arg(3); + return std::exp(-x*x/(2*s*s))/(_mp_arg(4)?std::sqrt(2*s*s*cimg::PI):1); + } + +#ifdef cimg_mp_func_get + static double mp_get(_cimg_math_parser& mp) { + const double *ptrs = &_mp_arg(2) + 1; + double *ptrd = &_mp_arg(1); + const unsigned int + sizs = (unsigned int)mp.opcode[3], + sizd = (unsigned int)mp.opcode[4]; + const bool to_string = (bool)mp.opcode[5]; + CImg ss(sizs + 1); + cimg_for_inX(ss,0,ss.width() - 1,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + if (sizd) cimg_mp_func_get(ptrd + 1,sizd,to_string,ss._data); + else cimg_mp_func_get(ptrd,0,to_string,ss._data); + return cimg::type::nan(); + } +#endif + + static double mp_gcd(_cimg_math_parser& mp) { + return cimg::gcd((long)_mp_arg(2),(long)_mp_arg(3)); + } + +#ifdef cimg_mp_func_name + static double mp_name(_cimg_math_parser& mp) { + double *const ptr = &_mp_arg(1) + 1; + const unsigned int siz = (unsigned int)mp.opcode[3]; + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind==~0U) std::memset(ptr,0,siz*sizeof(double)); + else { + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + cimg_mp_func_name(ind,ptr,siz); + } + return cimg::type::nan(); + } +#endif + + static double mp_gt(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)>_mp_arg(3)); + } + + static double mp_gte(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)>=_mp_arg(3)); + } + + static double mp_i(_cimg_math_parser& mp) { + return (double)mp.imgin.atXYZC((int)mp.mem[_cimg_mp_slot_x],(int)mp.mem[_cimg_mp_slot_y], + (int)mp.mem[_cimg_mp_slot_z],(int)mp.mem[_cimg_mp_slot_c],(T)0); + } + + static double mp_if(_cimg_math_parser& mp) { + const bool is_cond = (bool)_mp_arg(2); + const ulongT + mem_left = mp.opcode[3], + mem_right = mp.opcode[4]; + const CImg + *const p_right = ++mp.p_code + mp.opcode[5], + *const p_end = p_right + mp.opcode[6]; + const unsigned int vtarget = (unsigned int)mp.opcode[1], vsiz = (unsigned int)mp.opcode[7]; + if (is_cond) for ( ; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + else for (mp.p_code = p_right; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.p_code==mp.p_break) --mp.p_code; + else mp.p_code = p_end - 1; + if (vsiz) std::memcpy(&mp.mem[vtarget] + 1,&mp.mem[is_cond?mem_left:mem_right] + 1,sizeof(double)*vsiz); + return mp.mem[is_cond?mem_left:mem_right]; + } + + static double mp_image_d(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.depth(); + } + + static double mp_image_display(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listout.width()); + cimg::mutex(6); + CImg &img = mp.listout[ind]; + CImg title(256); + std::fputc('\n',cimg::output()); + cimg_snprintf(title,title._width,"[ Image #%u ]",ind); + img.display(title); + cimg::mutex(6,0); + return cimg::type::nan(); + } + + static double mp_image_h(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.height(); + } + + static double mp_image_median(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.median(); + } + + static double mp_image_norm(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.magnitude(); + } + + static double mp_image_print(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listout.width()); + cimg::mutex(6); + CImg &img = mp.listout[ind]; + CImg title(256); + std::fputc('\n',cimg::output()); + cimg_snprintf(title,title._width,"[ Image #%u ]",ind); + img.print(title); + cimg::mutex(6,0); + return cimg::type::nan(); + } + + static double mp_image_resize(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listout.width()); + cimg::mutex(6); + CImg &img = mp.listout[ind]; + const double + _w = mp.opcode[3]==~0U?-100:_mp_arg(3), + _h = mp.opcode[4]==~0U?-100:_mp_arg(4), + _d = mp.opcode[5]==~0U?-100:_mp_arg(5), + _s = mp.opcode[6]==~0U?-100:_mp_arg(6); + const unsigned int + w = (unsigned int)(_w>=0?_w:-_w*img.width()/100), + h = (unsigned int)(_h>=0?_h:-_h*img.height()/100), + d = (unsigned int)(_d>=0?_d:-_d*img.depth()/100), + s = (unsigned int)(_s>=0?_s:-_s*img.spectrum()/100), + interp = (int)_mp_arg(7); + if (mp.is_fill && img._data==mp.imgout._data) { + cimg::mutex(6,0); + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'resize()': " + "Cannot both fill and resize image (%u,%u,%u,%u) " + "to new dimensions (%u,%u,%u,%u).", + img.pixel_type(),img._width,img._height,img._depth,img._spectrum,w,h,d,s); + } + const unsigned int + boundary = (int)_mp_arg(8); + const float + cx = (float)_mp_arg(9), + cy = (float)_mp_arg(10), + cz = (float)_mp_arg(11), + cc = (float)_mp_arg(12); + img.resize(w,h,d,s,interp,boundary,cx,cy,cz,cc); + cimg::mutex(6,0); + return cimg::type::nan(); + } + + static double mp_image_s(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.spectrum(); + } + + static double mp_image_sort(_cimg_math_parser& mp) { + const bool is_increasing = (bool)_mp_arg(3); + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listout.width()), + axis = (unsigned int)_mp_arg(4); + cimg::mutex(6); + CImg &img = mp.listout[ind]; + img.sort(is_increasing, + axis==0 || axis=='x'?'x': + axis==1 || axis=='y'?'y': + axis==2 || axis=='z'?'z': + axis==3 || axis=='c'?'c':0); + cimg::mutex(6,0); + return cimg::type::nan(); + } + + static double mp_image_stats(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind==~0U) CImg(ptrd,14,1,1,1,true) = mp.imgout.get_stats(); + else { + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + CImg(ptrd,14,1,1,1,true) = mp.listout[ind].get_stats(); + } + return cimg::type::nan(); + } + + static double mp_image_w(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.width(); + } + + static double mp_image_wh(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.width()*img.height(); + } + + static double mp_image_whd(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.width()*img.height()*img.depth(); + } + + static double mp_image_whds(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.width()*img.height()*img.depth()*img.spectrum(); + } + + static double mp_increment(_cimg_math_parser& mp) { + return _mp_arg(2) + 1; + } + + static double mp_inrange(_cimg_math_parser& mp) { + const unsigned int sizd = (unsigned int)mp.opcode[2]; + const bool + include_m = (bool)_mp_arg(9), + include_M = (bool)_mp_arg(10); + if (!sizd) { // Scalar result + const double val = _mp_arg(3); + const double m = _mp_arg(5), M = _mp_arg(7); + if (M>=m) return (double)((include_m?(val>=m):(val>m)) && (include_M?(val<=M):(val=M):(val>M)) && (include_m?(val<=m):(val=m) + ptrd[k] = (double)((include_m?(val>=m):(val>m)) && (include_M?(val<=M):(val=M):(val>M)) && (include_m?(val<=m):(val::nan(); + } + + static double mp_int(_cimg_math_parser& mp) { + return (double)(longT)_mp_arg(2); + } + + static double mp_ioff(_cimg_math_parser& mp) { + const unsigned int + boundary_conditions = (unsigned int)_mp_arg(3); + const CImg &img = mp.imgin; + const longT + off = (longT)_mp_arg(2), + whds = (longT)img.size(); + if (off>=0 && off ss(siz + 1); + cimg_forX(ss,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + return (double)cimg::is_directory(ss); + } + + static double mp_isin(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + const double val = _mp_arg(3); + for (unsigned int i = 4; i::is_inf(_mp_arg(2)); + } + + static double mp_isint(_cimg_math_parser& mp) { + return (double)((double)(longT)_mp_arg(2)==_mp_arg(2)); + } + + static double mp_isfile(_cimg_math_parser& mp) { + const double *ptrs = &_mp_arg(2) + 1; + const ulongT siz = (ulongT)mp.opcode[3]; + CImg ss(siz + 1); + cimg_forX(ss,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + return (double)cimg::is_file(ss); + } + + static double mp_isnan(_cimg_math_parser& mp) { + return (double)cimg::type::is_nan(_mp_arg(2)); + } + + static double mp_ixyzc(_cimg_math_parser& mp) { + const unsigned int + interpolation = (unsigned int)_mp_arg(6), + boundary_conditions = (unsigned int)_mp_arg(7); + const CImg &img = mp.imgin; + const double + x = _mp_arg(2), y = _mp_arg(3), + z = _mp_arg(4), c = _mp_arg(5); + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._cubic_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.cubic_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + case 1 : // Linear interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._linear_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.linear_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + default : // Nearest neighbor interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const int + w2 = 2*img.width(), h2 = 2*img.height(), d2 = 2*img.depth(), s2 = 2*img.spectrum(), + mx = cimg::mod((int)x,w2), my = cimg::mod((int)y,h2), + mz = cimg::mod((int)z,d2), mc = cimg::mod((int)c,s2); + return (double)img(mx &img = mp.imgin; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(2), + whds = (longT)img.size(); + if (off>=0 && off &img = mp.imgin; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], + oz = mp.mem[_cimg_mp_slot_z], oc = mp.mem[_cimg_mp_slot_c], + x = ox + _mp_arg(2), y = oy + _mp_arg(3), + z = oz + _mp_arg(4), c = oc + _mp_arg(5); + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._cubic_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.cubic_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + case 1 : // Linear interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._linear_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.linear_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + default : // Nearest neighbor interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const int + w2 = 2*img.width(), h2 = 2*img.height(), d2 = 2*img.depth(), s2 = 2*img.spectrum(), + mx = cimg::mod((int)x,w2), my = cimg::mod((int)y,h2), + mz = cimg::mod((int)z,d2), mc = cimg::mod((int)c,s2); + return (double)img(mx vals(i_end - 4); + double *p = vals.data(); + for (unsigned int i = 4; i &img = mp.listin[indi]; + const int _step = (int)_mp_arg(5), step = _step?_step:-1; + const ulongT siz = (ulongT)img.size(); + longT ind = (longT)(mp.opcode[4]!=_cimg_mp_slot_nan?_mp_arg(4):step>0?0:siz - 1); + if (ind<0 || ind>=(longT)siz) return -1.; + const T + *const ptrb = img.data(), + *const ptre = img.end(), + *ptr = ptrb + ind; + const double val = _mp_arg(3); + + // Forward search + if (step>0) { + while (ptr=ptre?-1.:(double)(ptr - ptrb); + } + + // Backward search. + while (ptr>=ptrb && (double)*ptr!=val) ptr+=step; + return ptr &img = mp.listin[indi]; + const int _step = (bool)_mp_arg(6), step = _step?_step:-1; + const ulongT + siz1 = (ulongT)img.size(), + siz2 = (ulongT)mp.opcode[4]; + longT ind = (longT)(mp.opcode[5]!=_cimg_mp_slot_nan?_mp_arg(5):step>0?0:siz1 - 1); + if (ind<0 || ind>=(longT)siz1) return -1.; + const T + *const ptr1b = img.data(), + *const ptr1e = ptr1b + siz1, + *ptr1 = ptr1b + ind, + *p1 = 0; + const double + *const ptr2b = &_mp_arg(3) + 1, + *const ptr2e = ptr2b + siz2, + *p2 = 0; + + // Forward search. + if (step>0) { + do { + while (ptr1=ptr1e) return -1.; + p1 = ptr1 + 1; + p2 = ptr2b + 1; + while (p1=ptr1b && *ptr1!=*ptr2b) ptr1+=step; + if (ptr1=ptr1b); + return p2 &img = mp.listin[ind]; + const longT + off = (longT)_mp_arg(3), + whds = (longT)img.size(); + if (off>=0 && off &img = mp.listin[ind]; + const double + x = _mp_arg(3), y = _mp_arg(4), + z = _mp_arg(5), c = _mp_arg(6); + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._cubic_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.cubic_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + case 1 : // Linear interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._linear_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.linear_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + default : // Nearest neighbor interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const int + w2 = 2*img.width(), h2 = 2*img.height(), d2 = 2*img.depth(), s2 = 2*img.spectrum(), + mx = cimg::mod((int)x,w2), my = cimg::mod((int)y,h2), + mz = cimg::mod((int)z,d2), mc = cimg::mod((int)c,s2); + return (double)img(mx &img = mp.listin[ind]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(3), + whds = (longT)img.size(); + if (off>=0 && off &img = mp.listin[ind]; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], + oz = mp.mem[_cimg_mp_slot_z], oc = mp.mem[_cimg_mp_slot_c], + x = ox + _mp_arg(3), y = oy + _mp_arg(4), + z = oz + _mp_arg(5), c = oc + _mp_arg(6); + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._cubic_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.cubic_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + case 1 : // Linear interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._linear_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.linear_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + default : // Nearest neighbor interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const int + w2 = 2*img.width(), h2 = 2*img.height(), d2 = 2*img.depth(), s2 = 2*img.spectrum(), + mx = cimg::mod((int)x,w2), my = cimg::mod((int)y,h2), + mz = cimg::mod((int)z,d2), mc = cimg::mod((int)c,s2); + return (double)img(mx::vector(mp.listin[ind].median()).move_to(mp.list_median[ind]); + return *mp.list_median[ind]; + } + + static double mp_list_norm(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + if (!mp.list_norm) mp.list_norm.assign(mp.listin._width); + if (!mp.list_norm[ind]) CImg::vector(mp.listin[ind].magnitude()).move_to(mp.list_norm[ind]); + return *mp.list_norm[ind]; + } + + static double mp_list_set_ioff(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + CImg &img = mp.listout[ind]; + const longT + off = (longT)_mp_arg(3), + whds = (longT)img.size(); + const double val = _mp_arg(1); + if (off>=0 && off &img = mp.listout[ind]; + const int + x = (int)_mp_arg(3), y = (int)_mp_arg(4), + z = (int)_mp_arg(5), c = (int)_mp_arg(6); + const double val = _mp_arg(1); + if (x>=0 && x=0 && y=0 && z=0 && c &img = mp.listout[ind]; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(3), + whds = (longT)img.size(); + const double val = _mp_arg(1); + if (off>=0 && off &img = mp.listout[ind]; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], + oz = mp.mem[_cimg_mp_slot_z], oc = mp.mem[_cimg_mp_slot_c]; + const int + x = (int)(ox + _mp_arg(3)), y = (int)(oy + _mp_arg(4)), + z = (int)(oz + _mp_arg(5)), c = (int)(oc + _mp_arg(6)); + const double val = _mp_arg(1); + if (x>=0 && x=0 && y=0 && z=0 && c &img = mp.listout[ind]; + const longT + off = (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const T val = (T)_mp_arg(1); + if (off>=0 && off &img = mp.listout[ind]; + const longT + off = (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const double *ptrs = &_mp_arg(1) + 1; + if (off>=0 && off::nan(); + } + + static double mp_list_set_Ixyz_s(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + CImg &img = mp.listout[ind]; + const int + x = (int)_mp_arg(3), + y = (int)_mp_arg(4), + z = (int)_mp_arg(5); + const T val = (T)_mp_arg(1); + if (x>=0 && x=0 && y=0 && z &img = mp.listout[ind]; + const int + x = (int)_mp_arg(3), + y = (int)_mp_arg(4), + z = (int)_mp_arg(5); + const double *ptrs = &_mp_arg(1) + 1; + if (x>=0 && x=0 && y=0 && z::nan(); + } + + static double mp_list_set_Joff_s(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + CImg &img = mp.listout[ind]; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const T val = (T)_mp_arg(1); + if (off>=0 && off &img = mp.listout[ind]; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const double *ptrs = &_mp_arg(1) + 1; + if (off>=0 && off::nan(); + } + + static double mp_list_set_Jxyz_s(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + CImg &img = mp.listout[ind]; + const double ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z]; + const int + x = (int)(ox + _mp_arg(3)), + y = (int)(oy + _mp_arg(4)), + z = (int)(oz + _mp_arg(5)); + const T val = (T)_mp_arg(1); + if (x>=0 && x=0 && y=0 && z &img = mp.listout[ind]; + const double ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z]; + const int + x = (int)(ox + _mp_arg(3)), + y = (int)(oy + _mp_arg(4)), + z = (int)(oz + _mp_arg(5)); + const double *ptrs = &_mp_arg(1) + 1; + if (x>=0 && x=0 && y=0 && z::nan(); + } + + static double mp_list_spectrum(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + return (double)mp.listin[ind]._spectrum; + } + + static double mp_list_stats(_cimg_math_parser& mp) { + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()), + k = (unsigned int)mp.opcode[3]; + if (!mp.list_stats) mp.list_stats.assign(mp.listin._width); + if (!mp.list_stats[ind]) mp.list_stats[ind].assign(1,14,1,1,0).fill(mp.listin[ind].get_stats(),false); + return mp.list_stats(ind,k); + } + + static double mp_list_wh(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + return (double)mp.listin[ind]._width*mp.listin[ind]._height; + } + + static double mp_list_whd(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + return (double)mp.listin[ind]._width*mp.listin[ind]._height*mp.listin[ind]._depth; + } + + static double mp_list_whds(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + return (double)mp.listin[ind]._width*mp.listin[ind]._height*mp.listin[ind]._depth*mp.listin[ind]._spectrum; + } + + static double mp_list_width(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + return (double)mp.listin[ind]._width; + } + + static double mp_list_Ioff(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()), + boundary_conditions = (unsigned int)_mp_arg(4), + vsiz = (unsigned int)mp.opcode[5]; + const CImg &img = mp.listin[ind]; + const longT + off = (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const T *ptrs; + if (off>=0 && off::nan(); + } + if (img._data) switch (boundary_conditions) { + case 3 : { // Mirror + const longT whd2 = 2*whd, moff = cimg::mod(off,whd2); + ptrs = &img[moff::nan(); + } + case 2 : // Periodic + ptrs = &img[cimg::mod(off,whd)]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + case 1 : // Neumann + ptrs = off<0?&img[0]:&img[whd - 1]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + default : // Dirichlet + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + + static double mp_list_Ixyz(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()), + interpolation = (unsigned int)_mp_arg(6), + boundary_conditions = (unsigned int)_mp_arg(7), + vsiz = (unsigned int)mp.opcode[8]; + const CImg &img = mp.listin[ind]; + const double x = _mp_arg(3), y = _mp_arg(4), z = _mp_arg(5); + const ulongT whd = (ulongT)img._width*img._height*img._depth; + const T *ptrs; + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), mz = cimg::mod((float)z,d2), + cx = mx::nan(); + } + + static double mp_list_Joff(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()), + boundary_conditions = (unsigned int)_mp_arg(4), + vsiz = (unsigned int)mp.opcode[5]; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], oz = (int)mp.mem[_cimg_mp_slot_z]; + const CImg &img = mp.listin[ind]; + const longT + off = img.offset(ox,oy,oz) + (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const T *ptrs; + if (off>=0 && off::nan(); + } + if (img._data) switch (boundary_conditions) { + case 3 : { // Mirror + const longT whd2 = 2*whd, moff = cimg::mod(off,whd2); + ptrs = &img[moff::nan(); + } + case 2 : // Periodic + ptrs = &img[cimg::mod(off,whd)]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + case 1 : // Neumann + ptrs = off<0?&img[0]:&img[whd - 1]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + default : // Dirichlet + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + + static double mp_list_Jxyz(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()), + interpolation = (unsigned int)_mp_arg(6), + boundary_conditions = (unsigned int)_mp_arg(7), + vsiz = (unsigned int)mp.opcode[8]; + const CImg &img = mp.listin[ind]; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z], + x = ox + _mp_arg(3), y = oy + _mp_arg(4), z = oz + _mp_arg(5); + const ulongT whd = (ulongT)img._width*img._height*img._depth; + const T *ptrs; + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), mz = cimg::mod((float)z,d2), + cx = mx::nan(); + } + + static double mp_log(_cimg_math_parser& mp) { + return std::log(_mp_arg(2)); + } + + static double mp_log10(_cimg_math_parser& mp) { + return std::log10(_mp_arg(2)); + } + + static double mp_log2(_cimg_math_parser& mp) { + return cimg::log2(_mp_arg(2)); + } + + static double mp_logical_and(_cimg_math_parser& mp) { + const bool val_left = (bool)_mp_arg(2); + const CImg *const p_end = ++mp.p_code + mp.opcode[4]; + if (!val_left) { mp.p_code = p_end - 1; return 0; } + const ulongT mem_right = mp.opcode[3]; + for ( ; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + --mp.p_code; + return (double)(bool)mp.mem[mem_right]; + } + + static double mp_logical_not(_cimg_math_parser& mp) { + return (double)!_mp_arg(2); + } + + static double mp_logical_or(_cimg_math_parser& mp) { + const bool val_left = (bool)_mp_arg(2); + const CImg *const p_end = ++mp.p_code + mp.opcode[4]; + if (val_left) { mp.p_code = p_end - 1; return 1; } + const ulongT mem_right = mp.opcode[3]; + for ( ; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + --mp.p_code; + return (double)(bool)mp.mem[mem_right]; + } + + static double mp_lowercase(_cimg_math_parser& mp) { + return cimg::lowercase(_mp_arg(2)); + } + + static double mp_lt(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)<_mp_arg(3)); + } + + static double mp_lte(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)<=_mp_arg(3)); + } + + static double mp_matrix_eig(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double *ptr1 = &_mp_arg(2) + 1; + const unsigned int k = (unsigned int)mp.opcode[3]; + CImg val, vec; + CImg(ptr1,k,k,1,1,true).symmetric_eigen(val,vec); + CImg(ptrd,1,k,1,1,true) = val; + CImg(ptrd + k,k,k,1,1,true) = vec.get_transpose(); + return cimg::type::nan(); + } + + static double mp_matrix_invert(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const double *const ptr1 = &_mp_arg(2) + 1; + const unsigned int k = (unsigned int)mp.opcode[3]; + const bool use_LU = (bool)_mp_arg(4); + CImg(ptrd,k,k,1,1,true) = CImg(ptr1,k,k,1,1,true).get_invert(use_LU); + return cimg::type::nan(); + } + + static double mp_matrix_mul(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double + *ptr1 = &_mp_arg(2) + 1, + *ptr2 = &_mp_arg(3) + 1; + const unsigned int + k = (unsigned int)mp.opcode[4], + l = (unsigned int)mp.opcode[5], + m = (unsigned int)mp.opcode[6]; + CImg(ptrd,m,k,1,1,true) = CImg(ptr1,l,k,1,1,true)*CImg(ptr2,m,l,1,1,true); + return cimg::type::nan(); + } + + static double mp_matrix_pseudoinvert(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double *ptr1 = &_mp_arg(2) + 1; + const unsigned int + k = (unsigned int)mp.opcode[3], + l = (unsigned int)mp.opcode[4]; + const bool use_LU = (bool)_mp_arg(5); + CImg(ptrd,l,k,1,1,true) = CImg(ptr1,k,l,1,1,true).get_pseudoinvert(use_LU); + return cimg::type::nan(); + } + + static double mp_matrix_svd(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double *ptr1 = &_mp_arg(2) + 1; + const unsigned int + k = (unsigned int)mp.opcode[3], + l = (unsigned int)mp.opcode[4]; + CImg U, S, V; + CImg(ptr1,k,l,1,1,true).SVD(U,S,V); + CImg(ptrd,k,l,1,1,true) = U; + CImg(ptrd + k*l,1,k,1,1,true) = S; + CImg(ptrd + k*l + k,k,k,1,1,true) = V; + return cimg::type::nan(); + } + + static double mp_max(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3); + for (unsigned int i = 4; iabsval) { val = _val; absval = _absval; } + } + return val; + } + + static double* _mp_memcopy_double(_cimg_math_parser& mp, const unsigned int ind, const ulongT *const p_ref, + const longT siz, const long inc) { + const longT + off = *p_ref?p_ref[1] + (longT)mp.mem[(longT)p_ref[2]] + 1:ind, + eoff = off + (siz - 1)*inc; + if (off<0 || eoff>=mp.mem.width()) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'copy()': " + "Out-of-bounds variable pointer " + "(length: %ld, increment: %ld, offset start: %ld, " + "offset end: %ld, offset max: %u).", + mp.imgin.pixel_type(),siz,inc,off,eoff,mp.mem._width - 1); + return &mp.mem[off]; + } + + static float* _mp_memcopy_float(_cimg_math_parser& mp, const ulongT *const p_ref, + const longT siz, const long inc, const bool is_out) { + const unsigned ind = (unsigned int)p_ref[1]; + const CImg &img = is_out? + (ind==~0U?mp.imgout:mp.listout[cimg::mod((int)mp.mem[ind],mp.listout.width())]): + (ind==~0U?mp.imgin:mp.listin[cimg::mod((int)mp.mem[ind],mp.listin.width())]); + const bool is_relative = (bool)p_ref[2]; + int ox, oy, oz, oc; + longT off = 0; + if (is_relative) { + ox = (int)mp.mem[_cimg_mp_slot_x]; + oy = (int)mp.mem[_cimg_mp_slot_y]; + oz = (int)mp.mem[_cimg_mp_slot_z]; + oc = (int)mp.mem[_cimg_mp_slot_c]; + off = img.offset(ox,oy,oz,oc); + } + if ((*p_ref)%2) { + const int + x = (int)mp.mem[p_ref[3]], + y = (int)mp.mem[p_ref[4]], + z = (int)mp.mem[p_ref[5]], + c = *p_ref==5?0:(int)mp.mem[p_ref[6]]; + off+=img.offset(x,y,z,c); + } else off+=(longT)mp.mem[p_ref[3]]; + const longT eoff = off + (siz - 1)*inc; + if (off<0 || eoff>=(longT)img.size()) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'copy()': " + "Out-of-bounds image pointer " + "(length: %ld, increment: %ld, offset start: %ld, " + "offset end: %ld, offset max: %lu).", + mp.imgin.pixel_type(),siz,inc,off,eoff,img.size() - 1); + return (float*)&img[off]; + } + + static double mp_memcopy(_cimg_math_parser& mp) { + longT siz = (longT)_mp_arg(4); + const longT inc_d = (longT)_mp_arg(5), inc_s = (longT)_mp_arg(6); + const float + _opacity = (float)_mp_arg(7), + opacity = (float)cimg::abs(_opacity), + omopacity = 1 - std::max(_opacity,0.f); + if (siz>0) { + const bool + is_doubled = mp.opcode[8]<=1, + is_doubles = mp.opcode[15]<=1; + if (is_doubled && is_doubles) { // (double*) <- (double*) + double *ptrd = _mp_memcopy_double(mp,(unsigned int)mp.opcode[2],&mp.opcode[8],siz,inc_d); + const double *ptrs = _mp_memcopy_double(mp,(unsigned int)mp.opcode[3],&mp.opcode[15],siz,inc_s); + if (inc_d==1 && inc_s==1 && _opacity>=1) { + if (ptrs + siz - 1ptrd + siz - 1) std::memcpy(ptrd,ptrs,siz*sizeof(double)); + else std::memmove(ptrd,ptrs,siz*sizeof(double)); + } else { + if (ptrs + (siz - 1)*inc_sptrd + (siz - 1)*inc_d) { + if (_opacity>=1) while (siz-->0) { *ptrd = *ptrs; ptrd+=inc_d; ptrs+=inc_s; } + else while (siz-->0) { *ptrd = omopacity**ptrd + opacity**ptrs; ptrd+=inc_d; ptrs+=inc_s; } + } else { // Overlapping buffers + CImg buf((unsigned int)siz); + cimg_for(buf,ptr,double) { *ptr = *ptrs; ptrs+=inc_s; } + ptrs = buf; + if (_opacity>=1) while (siz-->0) { *ptrd = *(ptrs++); ptrd+=inc_d; } + else while (siz-->0) { *ptrd = omopacity**ptrd + opacity**(ptrs++); ptrd+=inc_d; } + } + } + } else if (is_doubled && !is_doubles) { // (double*) <- (float*) + double *ptrd = _mp_memcopy_double(mp,(unsigned int)mp.opcode[2],&mp.opcode[8],siz,inc_d); + const float *ptrs = _mp_memcopy_float(mp,&mp.opcode[15],siz,inc_s,false); + if (_opacity>=1) while (siz-->0) { *ptrd = *ptrs; ptrd+=inc_d; ptrs+=inc_s; } + else while (siz-->0) { *ptrd = omopacity**ptrd + _opacity**ptrs; ptrd+=inc_d; ptrs+=inc_s; } + } else if (!is_doubled && is_doubles) { // (float*) <- (double*) + float *ptrd = _mp_memcopy_float(mp,&mp.opcode[8],siz,inc_d,true); + const double *ptrs = _mp_memcopy_double(mp,(unsigned int)mp.opcode[3],&mp.opcode[15],siz,inc_s); + if (_opacity>=1) while (siz-->0) { *ptrd = (float)*ptrs; ptrd+=inc_d; ptrs+=inc_s; } + else while (siz-->0) { *ptrd = (float)(omopacity**ptrd + opacity**ptrs); ptrd+=inc_d; ptrs+=inc_s; } + } else { // (float*) <- (float*) + float *ptrd = _mp_memcopy_float(mp,&mp.opcode[8],siz,inc_d,true); + const float *ptrs = _mp_memcopy_float(mp,&mp.opcode[15],siz,inc_s,false); + if (inc_d==1 && inc_s==1 && _opacity>=1) { + if (ptrs + siz - 1ptrd + siz - 1) std::memcpy(ptrd,ptrs,siz*sizeof(float)); + else std::memmove(ptrd,ptrs,siz*sizeof(float)); + } else { + if (ptrs + (siz - 1)*inc_sptrd + (siz - 1)*inc_d) { + if (_opacity>=1) while (siz-->0) { *ptrd = *ptrs; ptrd+=inc_d; ptrs+=inc_s; } + else while (siz-->0) { *ptrd = omopacity**ptrd + opacity**ptrs; ptrd+=inc_d; ptrs+=inc_s; } + } else { // Overlapping buffers + CImg buf((unsigned int)siz); + cimg_for(buf,ptr,float) { *ptr = *ptrs; ptrs+=inc_s; } + ptrs = buf; + if (_opacity>=1) while (siz-->0) { *ptrd = *(ptrs++); ptrd+=inc_d; } + else while (siz-->0) { *ptrd = omopacity**ptrd + opacity**(ptrs++); ptrd+=inc_d; } + } + } + } + } + return _mp_arg(1); + } + + static double mp_min(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3); + for (unsigned int i = 4; i vals(i_end - 3); + double *p = vals.data(); + for (unsigned int i = 3; i(ptrd,wS,wD,1,1,true) = CImg(ptrS,wS,hS,1,1,false). + project_matrix(CImg(ptrD,wD,hS,1,1,true),method,max_iter,max_residual); + return cimg::type::nan(); + } + + static double mp_mul(_cimg_math_parser& mp) { + return _mp_arg(2)*_mp_arg(3); + } + + static double mp_mul2(_cimg_math_parser& mp) { + return _mp_arg(2)*_mp_arg(3)*_mp_arg(4); + } + + static double mp_neq(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)!=_mp_arg(3)); + } + + static double mp_norm0(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + switch (i_end - 3) { + case 1 : return _mp_arg(3)!=0; + case 2 : return (_mp_arg(3)!=0) + (_mp_arg(4)!=0); + } + double res = 0; + for (unsigned int i = 3; ires) res = val; + } + return res; + } + + static double mp_normp(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + if (i_end==4) return cimg::abs(_mp_arg(3)); + const double p = (double)mp.opcode[3]; + double res = 0; + for (unsigned int i = 4; i0?res:0.; + } + + static double mp_permutations(_cimg_math_parser& mp) { + return cimg::permutations((int)_mp_arg(2),(int)_mp_arg(3),(bool)_mp_arg(4)); + } + + static double mp_polygon(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + unsigned int ind = (unsigned int)mp.opcode[3]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(3),mp.listin.width()); + CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + bool is_invalid_arguments = i_end<=4, is_outlined = false; + if (!is_invalid_arguments) { + int nbv = (int)_mp_arg(4); + if (!nbv) is_invalid_arguments = true; + else { + if (nbv<0) { nbv = -nbv; is_outlined = true; } + CImg points(nbv,2,1,1,0); + CImg color(img._spectrum,1,1,1,0); + float opacity = 1; + unsigned int i = 5, pattern=~0U; + cimg_foroff(points,k) if (i args(i_end - 4); + cimg_forX(args,k) args[k] = _mp_arg(4 + k); + if (ind==~0U) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'polygon()': " + "Invalid arguments '%s'. ", + mp.imgin.pixel_type(),args.value_string()._data); + else + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'polygon()': " + "Invalid arguments '#%u%s%s'. ", + mp.imgin.pixel_type(),ind,args._width?",":"",args.value_string()._data); + } + return cimg::type::nan(); + } + + static double mp_pow(_cimg_math_parser& mp) { + const double v = _mp_arg(2), p = _mp_arg(3); + return std::pow(v,p); + } + + static double mp_pow0_25(_cimg_math_parser& mp) { + const double val = _mp_arg(2); + return std::sqrt(std::sqrt(val)); + } + + static double mp_pow3(_cimg_math_parser& mp) { + const double val = _mp_arg(2); + return val*val*val; + } + + static double mp_pow4(_cimg_math_parser& mp) { + const double val = _mp_arg(2); + return val*val*val*val; + } + + static double mp_print(_cimg_math_parser& mp) { + const double val = _mp_arg(1); + const bool print_char = (bool)mp.opcode[3]; + cimg_pragma_openmp(critical(mp_print)) + { + CImg _expr(mp.opcode[2] - 4); + const ulongT *ptrs = mp.opcode._data + 4; + cimg_for(_expr,ptrd,char) *ptrd = (char)*(ptrs++); + cimg::strellipsize(_expr); + cimg::mutex(6); + if (print_char) + std::fprintf(cimg::output(),"\n[" cimg_appname "_math_parser] %s = %.17g = '%c'", + _expr._data,val,(int)val); + else + std::fprintf(cimg::output(),"\n[" cimg_appname "_math_parser] %s = %.17g", + _expr._data,val); + std::fflush(cimg::output()); + cimg::mutex(6,0); + } + return val; + } + + static double mp_prod(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3); + for (unsigned int i = 4; i::nan(); + } + + static double mp_rot3d(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const float x = (float)_mp_arg(2), y = (float)_mp_arg(3), z = (float)_mp_arg(4), theta = (float)_mp_arg(5); + CImg(ptrd,3,3,1,1,true) = CImg::rotation_matrix(x,y,z,theta); + return cimg::type::nan(); + } + + static double mp_round(_cimg_math_parser& mp) { + return cimg::round(_mp_arg(2),_mp_arg(3),(int)_mp_arg(4)); + } + + static double mp_self_add(_cimg_math_parser& mp) { + return _mp_arg(1)+=_mp_arg(2); + } + + static double mp_self_bitwise_and(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = (double)((longT)val & (longT)_mp_arg(2)); + } + + static double mp_self_bitwise_left_shift(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = (double)((longT)val<<(unsigned int)_mp_arg(2)); + } + + static double mp_self_bitwise_or(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = (double)((longT)val | (longT)_mp_arg(2)); + } + + static double mp_self_bitwise_right_shift(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = (double)((longT)val>>(unsigned int)_mp_arg(2)); + } + + static double mp_self_decrement(_cimg_math_parser& mp) { + return --_mp_arg(1); + } + + static double mp_self_increment(_cimg_math_parser& mp) { + return ++_mp_arg(1); + } + + static double mp_self_map_vector_s(_cimg_math_parser& mp) { // Vector += scalar + unsigned int + ptrd = (unsigned int)mp.opcode[1] + 1, + siz = (unsigned int)mp.opcode[2]; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,3); + l_opcode[2] = mp.opcode[4]; // Scalar argument + l_opcode.swap(mp.opcode); + ulongT &target = mp.opcode[1]; + while (siz-->0) { target = ptrd++; (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_self_map_vector_v(_cimg_math_parser& mp) { // Vector += vector + unsigned int + ptrd = (unsigned int)mp.opcode[1] + 1, + siz = (unsigned int)mp.opcode[2], + ptrs = (unsigned int)mp.opcode[4] + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,4); + l_opcode.swap(mp.opcode); + ulongT &target = mp.opcode[1], &argument = mp.opcode[2]; + while (siz-->0) { target = ptrd++; argument = ptrs++; (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_self_mul(_cimg_math_parser& mp) { + return _mp_arg(1)*=_mp_arg(2); + } + + static double mp_self_div(_cimg_math_parser& mp) { + return _mp_arg(1)/=_mp_arg(2); + } + + static double mp_self_modulo(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = cimg::mod(val,_mp_arg(2)); + } + + static double mp_self_pow(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = std::pow(val,_mp_arg(2)); + } + + static double mp_self_sub(_cimg_math_parser& mp) { + return _mp_arg(1)-=_mp_arg(2); + } + + static double mp_set_ioff(_cimg_math_parser& mp) { + CImg &img = mp.imgout; + const longT + off = (longT)_mp_arg(2), + whds = (longT)img.size(); + const double val = _mp_arg(1); + if (off>=0 && off &img = mp.imgout; + const int + x = (int)_mp_arg(2), y = (int)_mp_arg(3), + z = (int)_mp_arg(4), c = (int)_mp_arg(5); + const double val = _mp_arg(1); + if (x>=0 && x=0 && y=0 && z=0 && c &img = mp.imgout; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(2), + whds = (longT)img.size(); + const double val = _mp_arg(1); + if (off>=0 && off &img = mp.imgout; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], + oz = mp.mem[_cimg_mp_slot_z], oc = mp.mem[_cimg_mp_slot_c]; + const int + x = (int)(ox + _mp_arg(2)), y = (int)(oy + _mp_arg(3)), + z = (int)(oz + _mp_arg(4)), c = (int)(oc + _mp_arg(5)); + const double val = _mp_arg(1); + if (x>=0 && x=0 && y=0 && z=0 && c &img = mp.imgout; + const longT + off = (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const T val = (T)_mp_arg(1); + if (off>=0 && off &img = mp.imgout; + const longT + off = (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const double *ptrs = &_mp_arg(1) + 1; + if (off>=0 && off::nan(); + } + + static double mp_set_Ixyz_s(_cimg_math_parser& mp) { + CImg &img = mp.imgout; + const int + x = (int)_mp_arg(2), + y = (int)_mp_arg(3), + z = (int)_mp_arg(4); + const T val = (T)_mp_arg(1); + if (x>=0 && x=0 && y=0 && z &img = mp.imgout; + const int + x = (int)_mp_arg(2), + y = (int)_mp_arg(3), + z = (int)_mp_arg(4); + const double *ptrs = &_mp_arg(1) + 1; + if (x>=0 && x=0 && y=0 && z::nan(); + } + + static double mp_set_Joff_s(_cimg_math_parser& mp) { + CImg &img = mp.imgout; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const T val = (T)_mp_arg(1); + if (off>=0 && off &img = mp.imgout; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const double *ptrs = &_mp_arg(1) + 1; + if (off>=0 && off::nan(); + } + + static double mp_set_Jxyz_s(_cimg_math_parser& mp) { + CImg &img = mp.imgout; + const double ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z]; + const int + x = (int)(ox + _mp_arg(2)), + y = (int)(oy + _mp_arg(3)), + z = (int)(oz + _mp_arg(4)); + const T val = (T)_mp_arg(1); + if (x>=0 && x=0 && y=0 && z &img = mp.imgout; + const double ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z]; + const int + x = (int)(ox + _mp_arg(2)), + y = (int)(oy + _mp_arg(3)), + z = (int)(oz + _mp_arg(4)); + const double *ptrs = &_mp_arg(1) + 1; + if (x>=0 && x=0 && y=0 && z::nan(); + } + + static double mp_shift(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const double *const ptrs = &_mp_arg(2) + 1; + const unsigned int siz = (unsigned int)mp.opcode[3]; + const int + shift = (int)_mp_arg(4), + boundary_conditions = (int)_mp_arg(5); + CImg(ptrd,siz,1,1,1,true) = CImg(ptrs,siz,1,1,1,true).shift(shift,0,0,0,boundary_conditions); + return cimg::type::nan(); + } + + static double mp_sign(_cimg_math_parser& mp) { + return cimg::sign(_mp_arg(2)); + } + + static double mp_sin(_cimg_math_parser& mp) { + return std::sin(_mp_arg(2)); + } + + static double mp_sinc(_cimg_math_parser& mp) { + return cimg::sinc(_mp_arg(2)); + } + + static double mp_sinh(_cimg_math_parser& mp) { + return std::sinh(_mp_arg(2)); + } + + static double mp_solve(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double + *ptr1 = &_mp_arg(2) + 1, + *ptr2 = &_mp_arg(3) + 1; + const unsigned int + k = (unsigned int)mp.opcode[4], + l = (unsigned int)mp.opcode[5], + m = (unsigned int)mp.opcode[6]; + CImg(ptrd,m,k,1,1,true) = CImg(ptr2,m,l,1,1,false).solve(CImg(ptr1,k,l,1,1,true)); + return cimg::type::nan(); + } + + static double mp_sort(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const double *const ptrs = &_mp_arg(2) + 1; + const bool is_increasing = (bool)_mp_arg(4); + const unsigned int + siz = (unsigned int)mp.opcode[3], + nb_elts = mp.opcode[5]==~0U?siz:(unsigned int)_mp_arg(5), + siz_elt = (unsigned int)_mp_arg(6); + const ulongT sn = siz_elt*nb_elts; + if (sn>siz || siz_elt<1) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'sort()': " + "Arguments 'nb_elts=%g' and 'siz_elt=%g' are invalid " + "for sorting a vector of size %u.", + mp.imgin.pixel_type(),_mp_arg(5),_mp_arg(6),siz); + CImg(ptrd,siz_elt,nb_elts,1,1,true) = CImg(ptrs,siz_elt,nb_elts,1,1,true). + get_sort(is_increasing,siz_elt>1?'y':0); + if (sn(ptrd + sn,siz - sn,1,1,1,true) = CImg(ptrs + sn,siz - sn,1,1,1,true); + return cimg::type::nan(); + } + + static double mp_sqr(_cimg_math_parser& mp) { + return cimg::sqr(_mp_arg(2)); + } + + static double mp_sqrt(_cimg_math_parser& mp) { + return std::sqrt(_mp_arg(2)); + } + + static double mp_srand(_cimg_math_parser& mp) { + mp.rng = (cimg_uint64)_mp_arg(2); + return cimg::type::nan(); + } + + static double mp_srand0(_cimg_math_parser& mp) { + cimg::srand(&mp.rng); + +#if cimg_use_openmp!=0 + mp.rng+=omp_get_thread_num(); +#endif + return cimg::type::nan(); + } + + static double mp_std(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + CImg vals(i_end - 3); + double *p = vals.data(); + for (unsigned int i = 3; i0) mp.mem[ptrd++] = (double)*(ptrs++); + return cimg::type::nan(); + } + +#ifdef cimg_mp_func_store + static double mp_store(_cimg_math_parser& mp) { + const double + *ptr1 = &_mp_arg(2), + *ptr2 = &_mp_arg(4) + 1; + const unsigned int + siz1 = (unsigned int)mp.opcode[3], + siz2 = (unsigned int)mp.opcode[5], + sizM = std::max(siz1,1U); + const int + w = (int)_mp_arg(6), + h = (int)_mp_arg(7), + d = (int)_mp_arg(8), + s = (int)_mp_arg(9); + + const bool is_compressed = (bool)_mp_arg(10); + if (w<0 || h<0 || d<0 || s<0) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'store()': " + "Specified image dimensions (%d,%d,%d,%d) are invalid.", + pixel_type(),w,h,d,s); + if ((unsigned int)w*h*d*s>sizM) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'store()': " + "Specified image dimensions (%d,%d,%d,%d) are too large for vector size (%u).", + pixel_type(),w,h,d,s,sizM); + CImg ss(siz2 + 1); + cimg_for_inX(ss,0,ss.width() - 1,i) ss[i] = (char)ptr2[i]; + ss.back() = 0; + if (siz1) cimg_mp_func_store(ptr1 + 1, + (unsigned int)w,(unsigned int)h,(unsigned int)d,(unsigned int)s, + is_compressed,ss._data); + else cimg_mp_func_store(ptr1,1,1,1,1,is_compressed,ss._data); + return cimg::type::nan(); + } +#endif + + static double mp_stov(_cimg_math_parser& mp) { + const double *ptrs = &_mp_arg(2); + const ulongT siz = (ulongT)mp.opcode[3]; + longT ind = (longT)_mp_arg(4); + const bool is_strict = (bool)_mp_arg(5); + double val = cimg::type::nan(); + if (ind<0 || ind>=(longT)siz) return val; + if (!siz) return *ptrs>='0' && *ptrs<='9'?*ptrs - '0':val; + + CImg ss(siz + 1 - ind); + ptrs+=1 + ind; + cimg_forX(ss,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + + const char *s = ss._data; + while (*s && *s<=32) ++s; + const bool is_negative = *s=='-'; + if (is_negative || *s=='+') ++s; + int err = 0; + char sep; + + if (*s=='0' && (s[1]=='x' || s[1]=='X') && s[2]>32) { // Hexadecimal number + unsigned int ival; + err = cimg_sscanf(s + 2,"%x%c",&ival,&sep); + if (err>0) val = (double)ival; + } else if (*s>32) { // Decimal number + err = cimg_sscanf(s,"%lf%c",&val,&sep); +#if cimg_OS==2 + // Check for +/-NaN and +/-inf as Microsoft's sscanf() version is not able + // to read those particular values. + if (!err && (*s=='i' || *s=='I' || *s=='n' || *s=='N')) { + if (!cimg::strncasecmp(s,"inf",3)) { val = cimg::type::inf(); err = 1 + (s[3]!=0); } + else if (!cimg::strncasecmp(s,"nan",3)) { val = cimg::type::nan(); err = 1 + (s[3]!=0); } + } +#endif + } + if (err<=0 || (is_strict && err!=1)) return cimg::type::nan(); + if (is_negative) val = -val; + return val; + } + + static double mp_string(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const unsigned int nb_args = (unsigned int)(mp.opcode[3] - 3)/2; + CImgList _str; + CImg it; + for (unsigned int n = 0; n string + const double *ptr = &_mp_arg(4 + 2*n) + 1; + unsigned int l = 0; + while (l(ptr,l,1,1,1,true).move_to(_str); + } else { // Scalar argument -> number + it.assign(24); + cimg_snprintf(it,it._width,"%.17g",_mp_arg(4 + 2*n)); + CImg::string(it,false,true).move_to(_str); + } + } + const CImg str = _str>'x'; + const unsigned int sizd = std::min(str._width,(unsigned int)mp.opcode[2]); + std::memset(ptrd,0,mp.opcode[2]*sizeof(double)); + for (unsigned int k = 0; k::nan(); + } + + static double mp_sub(_cimg_math_parser& mp) { + return _mp_arg(2) - _mp_arg(3); + } + + static double mp_sum(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3); + for (unsigned int i = 4; i(ptrs,k,k,1,1,true).trace(); + } + + static double mp_transpose(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double *ptrs = &_mp_arg(2) + 1; + const unsigned int + k = (unsigned int)mp.opcode[3], + l = (unsigned int)mp.opcode[4]; + CImg(ptrd,l,k,1,1,true) = CImg(ptrs,k,l,1,1,true).get_transpose(); + return cimg::type::nan(); + } + + static double mp_u(_cimg_math_parser& mp) { + return cimg::rand(_mp_arg(2),_mp_arg(3),&mp.rng); + } + + static double mp_ui2f(_cimg_math_parser& mp) { + return (double)cimg::uint2float((unsigned int)_mp_arg(2)); + } + + static double mp_uppercase(_cimg_math_parser& mp) { + return cimg::uppercase(_mp_arg(2)); + } + + static double mp_var(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + CImg vals(i_end - 3); + double *p = vals.data(); + for (unsigned int i = 3; i::nan(); + } + + static double mp_vector_crop(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double *ptrs = &_mp_arg(2) + 1; + const longT + length = (longT)mp.opcode[3], + start = (longT)_mp_arg(4), + sublength = (longT)mp.opcode[5], + step = (longT)_mp_arg(6); + if (start<0 || start + step*(sublength-1)>=length) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Value accessor '[]': " + "Out-of-bounds sub-vector request " + "(length: %ld, start: %ld, sub-length: %ld, step: %ld).", + mp.imgin.pixel_type(),length,start,sublength,step); + ptrs+=start; + if (step==1) std::memcpy(ptrd,ptrs,sublength*sizeof(double)); + else for (longT k = 0; k::nan(); + } + + static double mp_vector_init(_cimg_math_parser& mp) { + unsigned int + ptrs = 4U, + ptrd = (unsigned int)mp.opcode[1] + 1, + siz = (unsigned int)mp.opcode[3]; + switch (mp.opcode[2] - 4) { + case 0 : std::memset(mp.mem._data + ptrd,0,siz*sizeof(double)); break; // 0 values given + case 1 : { const double val = _mp_arg(ptrs); while (siz-->0) mp.mem[ptrd++] = val; } break; + default : while (siz-->0) { mp.mem[ptrd++] = _mp_arg(ptrs++); if (ptrs>=mp.opcode[2]) ptrs = 4U; } + } + return cimg::type::nan(); + } + + static double mp_vector_eq(_cimg_math_parser& mp) { + const double + *ptr1 = &_mp_arg(2) + 1, + *ptr2 = &_mp_arg(4) + 1; + unsigned int p1 = (unsigned int)mp.opcode[3], p2 = (unsigned int)mp.opcode[5], n; + const int N = (int)_mp_arg(6); + const bool case_sensitive = (bool)_mp_arg(7); + bool still_equal = true; + double value; + if (!N) return true; + + // Compare all values. + if (N<0) { + if (p1>0 && p2>0) { // Vector == vector + if (p1!=p2) return false; + if (case_sensitive) + while (still_equal && p1--) still_equal = *(ptr1++)==*(ptr2++); + else + while (still_equal && p1--) + still_equal = cimg::lowercase(*(ptr1++))==cimg::lowercase(*(ptr2++)); + return still_equal; + } else if (p1>0 && !p2) { // Vector == scalar + value = _mp_arg(4); + if (!case_sensitive) value = cimg::lowercase(value); + while (still_equal && p1--) still_equal = *(ptr1++)==value; + return still_equal; + } else if (!p1 && p2>0) { // Scalar == vector + value = _mp_arg(2); + if (!case_sensitive) value = cimg::lowercase(value); + while (still_equal && p2--) still_equal = *(ptr2++)==value; + return still_equal; + } else { // Scalar == scalar + if (case_sensitive) return _mp_arg(2)==_mp_arg(4); + else return cimg::lowercase(_mp_arg(2))==cimg::lowercase(_mp_arg(4)); + } + } + + // Compare only first N values. + if (p1>0 && p2>0) { // Vector == vector + n = cimg::min((unsigned int)N,p1,p2); + if (case_sensitive) + while (still_equal && n--) still_equal = *(ptr1++)==(*ptr2++); + else + while (still_equal && n--) still_equal = cimg::lowercase(*(ptr1++))==cimg::lowercase(*(ptr2++)); + return still_equal; + } else if (p1>0 && !p2) { // Vector == scalar + n = std::min((unsigned int)N,p1); + value = _mp_arg(4); + if (!case_sensitive) value = cimg::lowercase(value); + while (still_equal && n--) still_equal = *(ptr1++)==value; + return still_equal; + } else if (!p1 && p2>0) { // Scalar == vector + n = std::min((unsigned int)N,p2); + value = _mp_arg(2); + if (!case_sensitive) value = cimg::lowercase(value); + while (still_equal && n--) still_equal = *(ptr2++)==value; + return still_equal; + } // Scalar == scalar + if (case_sensitive) return _mp_arg(2)==_mp_arg(4); + return cimg::lowercase(_mp_arg(2))==cimg::lowercase(_mp_arg(4)); + } + + static double mp_vector_lerp(_cimg_math_parser& mp) { + unsigned int siz = (unsigned int)mp.opcode[2]; + double *ptrd = &_mp_arg(1) + 1; + const double + *ptrs1 = &_mp_arg(3) + 1, + *ptrs2 = &_mp_arg(4) + 1, + t = _mp_arg(5); + for (unsigned int k = 0; k::nan(); + } + + static double mp_vector_off(_cimg_math_parser& mp) { + const unsigned int + ptr = (unsigned int)mp.opcode[2] + 1, + siz = (unsigned int)mp.opcode[3]; + const int off = (int)_mp_arg(4); + return off>=0 && off<(int)siz?mp.mem[ptr + off]:cimg::type::nan(); + } + + static double mp_vector_map_sv(_cimg_math_parser& mp) { // Operator(scalar,vector) + unsigned int + siz = (unsigned int)mp.opcode[2], + ptrs = (unsigned int)mp.opcode[5] + 1; + double *ptrd = &_mp_arg(1) + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(4); + l_opcode[2] = mp.opcode[4]; // Scalar argument1 + l_opcode.swap(mp.opcode); + ulongT &argument2 = mp.opcode[3]; + while (siz-->0) { argument2 = ptrs++; *(ptrd++) = (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_vector_map_v(_cimg_math_parser& mp) { // Operator(vector) + unsigned int + siz = (unsigned int)mp.opcode[2], + ptrs = (unsigned int)mp.opcode[4] + 1; + double *ptrd = &_mp_arg(1) + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,3); + l_opcode.swap(mp.opcode); + ulongT &argument = mp.opcode[2]; + while (siz-->0) { argument = ptrs++; *(ptrd++) = (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_vector_map_vs(_cimg_math_parser& mp) { // Operator(vector,scalar) + unsigned int + siz = (unsigned int)mp.opcode[2], + ptrs = (unsigned int)mp.opcode[4] + 1; + double *ptrd = &_mp_arg(1) + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,4); + l_opcode[3] = mp.opcode[5]; // Scalar argument2 + l_opcode.swap(mp.opcode); + ulongT &argument1 = mp.opcode[2]; + while (siz-->0) { argument1 = ptrs++; *(ptrd++) = (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_vector_map_vss(_cimg_math_parser& mp) { // Operator(vector,scalar,scalar) + unsigned int + siz = (unsigned int)mp.opcode[2], + ptrs = (unsigned int)mp.opcode[4] + 1; + double *ptrd = &_mp_arg(1) + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,5); + l_opcode[3] = mp.opcode[5]; // Scalar argument2 + l_opcode[4] = mp.opcode[6]; // Scalar argument3 + l_opcode.swap(mp.opcode); + ulongT &argument1 = mp.opcode[2]; + while (siz-->0) { argument1 = ptrs++; *(ptrd++) = (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_vector_map_vv(_cimg_math_parser& mp) { // Operator(vector,vector) + unsigned int + siz = (unsigned int)mp.opcode[2], + ptrs1 = (unsigned int)mp.opcode[4] + 1, + ptrs2 = (unsigned int)mp.opcode[5] + 1; + double *ptrd = &_mp_arg(1) + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,4); + l_opcode.swap(mp.opcode); + ulongT &argument1 = mp.opcode[2], &argument2 = mp.opcode[3]; + while (siz-->0) { argument1 = ptrs1++; argument2 = ptrs2++; *(ptrd++) = (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_vector_neq(_cimg_math_parser& mp) { + return !mp_vector_eq(mp); + } + + static double mp_vector_print(_cimg_math_parser& mp) { + const bool print_string = (bool)mp.opcode[4]; + cimg_pragma_openmp(critical(mp_vector_print)) + { + CImg _expr(mp.opcode[2] - 5); + const ulongT *ptrs = mp.opcode._data + 5; + cimg_for(_expr,ptrd,char) *ptrd = (char)*(ptrs++); + cimg::strellipsize(_expr); + unsigned int + ptr = (unsigned int)mp.opcode[1] + 1, + siz0 = (unsigned int)mp.opcode[3], + siz = siz0; + cimg::mutex(6); + std::fprintf(cimg::output(),"\n[" cimg_appname "_math_parser] %s = [ ",_expr._data); + unsigned int count = 0; + while (siz-->0) { + if (count>=64 && siz>=64) { + std::fprintf(cimg::output(),"...,"); + ptr = (unsigned int)mp.opcode[1] + 1 + siz0 - 64; + siz = 64; + } else std::fprintf(cimg::output(),"%.17g%s",mp.mem[ptr++],siz?",":""); + ++count; + } + if (print_string) { + CImg str(siz0 + 1); + ptr = (unsigned int)mp.opcode[1] + 1; + for (unsigned int k = 0; k::nan(); + } + + static double mp_vector_resize(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const unsigned int p1 = (unsigned int)mp.opcode[2], p2 = (unsigned int)mp.opcode[4]; + const int + interpolation = (int)_mp_arg(5), + boundary_conditions = (int)_mp_arg(6); + if (p2) { // Resize vector + const double *const ptrs = &_mp_arg(3) + 1; + CImg(ptrd,p1,1,1,1,true) = CImg(ptrs,p2,1,1,1,true). + get_resize(p1,1,1,1,interpolation,boundary_conditions); + } else { // Resize scalar + const double value = _mp_arg(3); + CImg(ptrd,p1,1,1,1,true) = CImg(1,1,1,1,value).resize(p1,1,1,1,interpolation, + boundary_conditions); + } + return cimg::type::nan(); + } + + static double mp_vector_reverse(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const double *const ptrs = &_mp_arg(2) + 1; + const unsigned int p1 = (unsigned int)mp.opcode[3]; + CImg(ptrd,p1,1,1,1,true) = CImg(ptrs,p1,1,1,1,true).get_mirror('x'); + return cimg::type::nan(); + } + + static double mp_vector_set_off(_cimg_math_parser& mp) { + const unsigned int + ptr = (unsigned int)mp.opcode[2] + 1, + siz = (unsigned int)mp.opcode[3]; + const int off = (int)_mp_arg(4); + if (off>=0 && off<(int)siz) mp.mem[ptr + off] = _mp_arg(1); + return _mp_arg(1); + } + +#define _cimg_mp_vfunc(func) \ + const longT sizd = (longT)mp.opcode[2];\ + const unsigned int nbargs = (unsigned int)(mp.opcode[3] - 4)/2; \ + double *const ptrd = &_mp_arg(1) + (sizd?1:0); \ + cimg_pragma_openmp(parallel cimg_openmp_if_size(sizd,256)) \ + { CImg vec(nbargs); double res; \ + cimg_pragma_openmp(for) for (longT k = sizd?sizd - 1:0; k>=0; --k) { \ + cimg_forX(vec,n) vec[n] = *(&_mp_arg(4 + 2*n) + (k+1)*(mp.opcode[4 + 2*n + 1]?1:0)); \ + func; ptrd[k] = res; \ + }} \ + return sizd?cimg::type::nan():*ptrd; + + static double _mp_vargkth(CImg& vec) { + const double val = (+vec).get_shared_points(1,vec.width() - 1). + kth_smallest((ulongT)cimg::cut((longT)*vec - 1,(longT)0,(longT)vec.width() - 2)); + cimg_for_inX(vec,1,vec.width()-1,ind) if (vec[ind]==val) return ind - 1.; + return 1.; + } + + static double mp_vargkth(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = _mp_vargkth(vec)); + } + + static double mp_vargmax(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = (double)(&vec.max() - vec.data())); + } + + static double mp_vargmaxabs(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = (double)(&vec.maxabs() - vec.data())); + } + + static double mp_vargmin(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = (double)(&vec.min() - vec.data())); + } + + static double mp_vargminabs(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = (double)(&vec.minabs() - vec.data())); + } + + static double mp_vavg(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.mean()); + } + + static double mp_vkth(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.get_shared_points(1,vec.width() - 1). + kth_smallest((ulongT)cimg::cut((longT)*vec - 1,(longT)0,(longT)vec.width() - 2))); + } + + static double mp_vmax(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.max()); + } + + static double mp_vmaxabs(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.maxabs()); + } + + static double mp_vmedian(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.median()); + } + + static double mp_vmin(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.min()); + } + + static double mp_vminabs(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.minabs()); + } + + static double mp_vprod(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.product()); + } + + static double mp_vstd(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = std::sqrt(vec.get_stats()[3])); + } + + static double mp_vsum(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.sum()); + } + + static double mp_vvar(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.get_stats()[3]); + } + + static double mp_vtos(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + sizd = (unsigned int)mp.opcode[2], + sizs = (unsigned int)mp.opcode[4]; + std::memset(ptrd,0,sizd*sizeof(double)); + const int nb_digits = (int)_mp_arg(5); + CImg format(8); + switch (nb_digits) { + case -1 : std::strcpy(format,"%g"); break; + case 0 : std::strcpy(format,"%.17g"); break; + default : cimg_snprintf(format,format._width,"%%.%dg",nb_digits); + } + CImg str; + if (sizs) { // Vector expression + const double *ptrs = &_mp_arg(3) + 1; + CImg(ptrs,sizs,1,1,1,true).value_string(',',sizd + 1,format).move_to(str); + } else { // Scalar expression + str.assign(sizd + 1); + cimg_snprintf(str,sizd + 1,format,_mp_arg(3)); + } + const unsigned int l = std::min(sizd,(unsigned int)std::strlen(str) + 1); + CImg(ptrd,l,1,1,1,true) = str.get_shared_points(0,l - 1); + return cimg::type::nan(); + } + + static double mp_while(_cimg_math_parser& mp) { + const ulongT + mem_body = mp.opcode[1], + mem_cond = mp.opcode[2]; + const CImg + *const p_cond = ++mp.p_code, + *const p_body = p_cond + mp.opcode[3], + *const p_end = p_body + mp.opcode[4]; + const unsigned int vsiz = (unsigned int)mp.opcode[5]; + bool is_cond = false; + if (mp.opcode[6]) { // Set default value for result and condition if necessary + if (vsiz) CImg(&mp.mem[mem_body] + 1,vsiz,1,1,1,true).fill(cimg::type::nan()); + else mp.mem[mem_body] = cimg::type::nan(); + } + if (mp.opcode[7]) mp.mem[mem_cond] = 0; + const unsigned int _break_type = mp.break_type; + mp.break_type = 0; + do { + for (mp.p_code = p_cond; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; + is_cond = (bool)mp.mem[mem_cond]; + if (is_cond && !mp.break_type) // Evaluate body + for (mp.p_code = p_body; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; else if (mp.break_type==2) mp.break_type = 0; + } while (is_cond); + + mp.break_type = _break_type; + mp.p_code = p_end - 1; + return mp.mem[mem_body]; + } + + static double mp_Ioff(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + boundary_conditions = (unsigned int)_mp_arg(3), + vsiz = (unsigned int)mp.opcode[4]; + const CImg &img = mp.imgin; + const longT + off = (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const T *ptrs; + if (off>=0 && off::nan(); + } + if (img._data) switch (boundary_conditions) { + case 3 : { // Mirror + const longT whd2 = 2*whd, moff = cimg::mod(off,whd2); + ptrs = &img[moff::nan(); + } + case 2 : // Periodic + ptrs = &img[cimg::mod(off,whd)]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + case 1 : // Neumann + ptrs = off<0?&img[0]:&img[whd - 1]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + default : // Dirichlet + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + + static double mp_Ixyz(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + interpolation = (unsigned int)_mp_arg(5), + boundary_conditions = (unsigned int)_mp_arg(6), + vsiz = (unsigned int)mp.opcode[7]; + const CImg &img = mp.imgin; + const double x = _mp_arg(2), y = _mp_arg(3), z = _mp_arg(4); + const ulongT whd = (ulongT)img._width*img._height*img._depth; + const T *ptrs; + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), mz = cimg::mod((float)z,d2), + cx = mx::nan(); + } + + static double mp_Joff(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + boundary_conditions = (unsigned int)_mp_arg(3), + vsiz = (unsigned int)mp.opcode[4]; + const CImg &img = mp.imgin; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], + oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z]; + const longT + off = img.offset(ox,oy,oz) + (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const T *ptrs; + if (off>=0 && off::nan(); + } + if (img._data) switch (boundary_conditions) { + case 3 : { // Mirror + const longT whd2 = 2*whd, moff = cimg::mod(off,whd2); + ptrs = &img[moff::nan(); + } + case 2 : // Periodic + ptrs = &img[cimg::mod(off,whd)]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + case 1 : // Neumann + ptrs = off<0?&img[0]:&img[whd - 1]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + default : // Dirichlet + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + + static double mp_Jxyz(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + interpolation = (unsigned int)_mp_arg(5), + boundary_conditions = (unsigned int)_mp_arg(6), + vsiz = (unsigned int)mp.opcode[7]; + const CImg &img = mp.imgin; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z], + x = ox + _mp_arg(2), y = oy + _mp_arg(3), z = oz + _mp_arg(4); + const ulongT whd = (ulongT)img._width*img._height*img._depth; + const T *ptrs; + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), mz = cimg::mod((float)z,d2), + cx = mx::nan(); + } + +#undef _mp_arg + + }; // struct _cimg_math_parser {} + +#define _cimg_create_pointwise_functions(name,func,min_size) \ + CImg& name() { \ + if (is_empty()) return *this; \ + cimg_openmp_for(*this,func((double)*ptr),min_size); \ + return *this; \ + } \ + CImg get_##name() const { \ + return CImg(*this,false).name(); \ + } + + //! Compute the square value of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its square value \f$I_{(x,y,z,c)}^2\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + \par Example + \code + const CImg img("reference.jpg"); + (img,img.get_sqr().normalize(0,255)).display(); + \endcode + \image html ref_sqr.jpg + **/ + _cimg_create_pointwise_functions(sqr,cimg::sqr,524288) + + //! Compute the square root of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its square root \f$\sqrt{I_{(x,y,z,c)}}\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + \par Example + \code + const CImg img("reference.jpg"); + (img,img.get_sqrt().normalize(0,255)).display(); + \endcode + \image html ref_sqrt.jpg + **/ + _cimg_create_pointwise_functions(sqrt,std::sqrt,8192) + + //! Compute the exponential of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its exponential \f$e^{I_{(x,y,z,c)}}\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(exp,std::exp,4096) + + //! Compute the logarithm of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its logarithm + \f$\mathrm{log}_{e}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(log,std::log,262144) + + //! Compute the base-2 logarithm of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its base-2 logarithm + \f$\mathrm{log}_{2}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(log2,cimg::log2,4096) + + //! Compute the base-10 logarithm of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its base-10 logarithm + \f$\mathrm{log}_{10}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(log10,std::log10,4096) + + //! Compute the absolute value of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its absolute value \f$|I_{(x,y,z,c)}|\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(abs,cimg::abs,524288) + + //! Compute the sign of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its sign + \f$\mathrm{sign}(I_{(x,y,z,c)})\f$. + \note + - The sign is set to: + - \c 1 if pixel value is strictly positive. + - \c -1 if pixel value is strictly negative. + - \c 0 if pixel value is equal to \c 0. + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(sign,cimg::sign,32768) + + //! Compute the cosine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its cosine \f$\cos(I_{(x,y,z,c)})\f$. + \note + - Pixel values are regarded as being in \e radian. + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(cos,std::cos,8192) + + //! Compute the sine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its sine \f$\sin(I_{(x,y,z,c)})\f$. + \note + - Pixel values are regarded as being in \e radian. + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(sin,std::sin,8192) + + //! Compute the sinc of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its sinc + \f$\mathrm{sinc}(I_{(x,y,z,c)})\f$. + \note + - Pixel values are regarded as being exin \e radian. + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(sinc,cimg::sinc,2048) + + //! Compute the tangent of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its tangent \f$\tan(I_{(x,y,z,c)})\f$. + \note + - Pixel values are regarded as being exin \e radian. + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(tan,std::tan,2048) + + //! Compute the hyperbolic cosine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its hyperbolic cosine + \f$\mathrm{cosh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(cosh,std::cosh,2048) + + //! Compute the hyperbolic sine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its hyperbolic sine + \f$\mathrm{sinh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(sinh,std::sinh,2048) + + //! Compute the hyperbolic tangent of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its hyperbolic tangent + \f$\mathrm{tanh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(tanh,std::tanh,2048) + + //! Compute the arccosine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its arccosine + \f$\mathrm{acos}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(acos,std::acos,8192) + + //! Compute the arcsine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its arcsine + \f$\mathrm{asin}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(asin,std::asin,8192) + + //! Compute the arctangent of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its arctangent + \f$\mathrm{atan}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(atan,std::atan,8192) + + //! Compute the arctangent2 of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its arctangent2 + \f$\mathrm{atan2}(I_{(x,y,z,c)})\f$. + \param img Image whose pixel values specify the second argument of the \c atan2() function. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + \par Example + \code + const CImg + img_x(100,100,1,1,"x-w/2",false), // Define an horizontal centered gradient, from '-width/2' to 'width/2' + img_y(100,100,1,1,"y-h/2",false), // Define a vertical centered gradient, from '-height/2' to 'height/2' + img_atan2 = img_y.get_atan2(img_x); // Compute atan2(y,x) for each pixel value + (img_x,img_y,img_atan2).display(); + \endcode + **/ + template + CImg& atan2(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return atan2(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg get_atan2(const CImg& img) const { + return CImg(*this,false).atan2(img); + } + + //! Compute the hyperbolic arccosine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its arccosineh + \f$\mathrm{acosh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(acosh,cimg::acosh,8192) + + //! Compute the hyperbolic arcsine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its hyperbolic arcsine + \f$\mathrm{asinh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(asinh,cimg::asinh,8192) + + //! Compute the hyperbolic arctangent of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its hyperbolic arctangent + \f$\mathrm{atanh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(atanh,cimg::atanh,8192) + + //! In-place pointwise multiplication. + /** + Compute the pointwise multiplication between the image instance and the specified input image \c img. + \param img Input image, as the second operand of the multiplication. + \note + - Similar to operator+=(const CImg&), except that it performs a pointwise multiplication + instead of an addition. + - It does \e not perform a \e matrix multiplication. For this purpose, use operator*=(const CImg&) instead. + \par Example + \code + CImg + img("reference.jpg"), + shade(img.width,img.height(),1,1,"-(x-w/2)^2-(y-h/2)^2",false); + shade.normalize(0,1); + (img,shade,img.get_mul(shade)).display(); + \endcode + **/ + template + CImg& mul(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return mul(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_mul(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).mul(img); + } + + //! In-place pointwise division. + /** + Similar to mul(const CImg&), except that it performs a pointwise division instead of a multiplication. + **/ + template + CImg& div(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return div(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_div(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).div(img); + } + + //! Raise each pixel value to a specified power. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its power \f$I_{(x,y,z,c)}^p\f$. + \param p Exponent value. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + \par Example + \code + const CImg + img0("reference.jpg"), // Load reference color image + img1 = (img0/255).pow(1.8)*=255, // Compute gamma correction, with gamma = 1.8 + img2 = (img0/255).pow(0.5)*=255; // Compute gamma correction, with gamma = 0.5 + (img0,img1,img2).display(); + \endcode + **/ + CImg& pow(const double p) { + if (is_empty()) return *this; + if (p==-4) { cimg_openmp_for(*this,1/(Tfloat)cimg::pow4(*ptr),32768); return *this; } + if (p==-3) { cimg_openmp_for(*this,1/(Tfloat)cimg::pow3(*ptr),32768); return *this; } + if (p==-2) { cimg_openmp_for(*this,1/(Tfloat)cimg::sqr(*ptr),32768); return *this; } + if (p==-1) { cimg_openmp_for(*this,1/(Tfloat)*ptr,32768); return *this; } + if (p==-0.5) { cimg_openmp_for(*this,1/std::sqrt((Tfloat)*ptr),8192); return *this; } + if (p==0) return fill((T)1); + if (p==0.5) return sqrt(); + if (p==1) return *this; + if (p==2) return sqr(); + if (p==3) { cimg_openmp_for(*this,cimg::pow3(*ptr),262144); return *this; } + if (p==4) { cimg_openmp_for(*this,cimg::pow4(*ptr),131072); return *this; } + cimg_openmp_for(*this,std::pow((Tfloat)*ptr,(Tfloat)p),1024); + return *this; + } + + //! Raise each pixel value to a specified power \newinstance. + CImg get_pow(const double p) const { + return CImg(*this,false).pow(p); + } + + //! Raise each pixel value to a power, specified from an expression. + /** + Similar to operator+=(const char*), except it performs a pointwise exponentiation instead of an addition. + **/ + CImg& pow(const char *const expression) { + return pow((+*this)._fill(expression,true,1,0,0,"pow",this)); + } + + //! Raise each pixel value to a power, specified from an expression \newinstance. + CImg get_pow(const char *const expression) const { + return CImg(*this,false).pow(expression); + } + + //! Raise each pixel value to a power, pointwisely specified from another image. + /** + Similar to operator+=(const CImg& img), except that it performs an exponentiation instead of an addition. + **/ + template + CImg& pow(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return pow(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg get_pow(const CImg& img) const { + return CImg(*this,false).pow(img); + } + + //! Compute the bitwise left rotation of each pixel value. + /** + Similar to operator<<=(unsigned int), except that it performs a left rotation instead of a left shift. + **/ + CImg& rol(const unsigned int n=1) { + if (is_empty()) return *this; + cimg_openmp_for(*this,cimg::rol(*ptr,n),32768); + return *this; + } + + //! Compute the bitwise left rotation of each pixel value \newinstance. + CImg get_rol(const unsigned int n=1) const { + return (+*this).rol(n); + } + + //! Compute the bitwise left rotation of each pixel value. + /** + Similar to operator<<=(const char*), except that it performs a left rotation instead of a left shift. + **/ + CImg& rol(const char *const expression) { + return rol((+*this)._fill(expression,true,1,0,0,"rol",this)); + } + + //! Compute the bitwise left rotation of each pixel value \newinstance. + CImg get_rol(const char *const expression) const { + return (+*this).rol(expression); + } + + //! Compute the bitwise left rotation of each pixel value. + /** + Similar to operator<<=(const CImg&), except that it performs a left rotation instead of a left shift. + **/ + template + CImg& rol(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return rol(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg get_rol(const CImg& img) const { + return (+*this).rol(img); + } + + //! Compute the bitwise right rotation of each pixel value. + /** + Similar to operator>>=(unsigned int), except that it performs a right rotation instead of a right shift. + **/ + CImg& ror(const unsigned int n=1) { + if (is_empty()) return *this; + cimg_openmp_for(*this,cimg::ror(*ptr,n),32768); + return *this; + } + + //! Compute the bitwise right rotation of each pixel value \newinstance. + CImg get_ror(const unsigned int n=1) const { + return (+*this).ror(n); + } + + //! Compute the bitwise right rotation of each pixel value. + /** + Similar to operator>>=(const char*), except that it performs a right rotation instead of a right shift. + **/ + CImg& ror(const char *const expression) { + return ror((+*this)._fill(expression,true,1,0,0,"ror",this)); + } + + //! Compute the bitwise right rotation of each pixel value \newinstance. + CImg get_ror(const char *const expression) const { + return (+*this).ror(expression); + } + + //! Compute the bitwise right rotation of each pixel value. + /** + Similar to operator>>=(const CImg&), except that it performs a right rotation instead of a right shift. + **/ + template + CImg& ror(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return ror(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg get_ror(const CImg& img) const { + return (+*this).ror(img); + } + + //! Pointwise min operator between instance image and a value. + /** + \param val Value used as the reference argument of the min operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{min}(I_{(x,y,z,c)},\mathrm{val})\f$. + **/ + CImg& min(const T& value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,std::min(*ptr,value),65536); + return *this; + } + + //! Pointwise min operator between instance image and a value \newinstance. + CImg get_min(const T& value) const { + return (+*this).min(value); + } + + //! Pointwise min operator between two images. + /** + \param img Image used as the reference argument of the min operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{min}(I_{(x,y,z,c)},\mathrm{img}_{(x,y,z,c)})\f$. + **/ + template + CImg& min(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return min(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_min(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).min(img); + } + + //! Pointwise min operator between an image and an expression. + /** + \param expression Math formula as a C-string. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{min}(I_{(x,y,z,c)},\mathrm{expr}_{(x,y,z,c)})\f$. + **/ + CImg& min(const char *const expression) { + return min((+*this)._fill(expression,true,1,0,0,"min",this)); + } + + //! Pointwise min operator between an image and an expression \newinstance. + CImg get_min(const char *const expression) const { + return CImg(*this,false).min(expression); + } + + //! Pointwise max operator between instance image and a value. + /** + \param val Value used as the reference argument of the max operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{max}(I_{(x,y,z,c)},\mathrm{val})\f$. + **/ + CImg& max(const T& value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,std::max(*ptr,value),65536); + return *this; + } + + //! Pointwise max operator between instance image and a value \newinstance. + CImg get_max(const T& value) const { + return (+*this).max(value); + } + + //! Pointwise max operator between two images. + /** + \param img Image used as the reference argument of the max operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{max}(I_{(x,y,z,c)},\mathrm{img}_{(x,y,z,c)})\f$. + **/ + template + CImg& max(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return max(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_max(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).max(img); + } + + //! Pointwise max operator between an image and an expression. + /** + \param expression Math formula as a C-string. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{max}(I_{(x,y,z,c)},\mathrm{expr}_{(x,y,z,c)})\f$. + **/ + CImg& max(const char *const expression) { + return max((+*this)._fill(expression,true,1,0,0,"max",this)); + } + + //! Pointwise max operator between an image and an expression \newinstance. + CImg get_max(const char *const expression) const { + return CImg(*this,false).max(expression); + } + + //! Pointwise minabs operator between instance image and a value. + /** + \param val Value used as the reference argument of the minabs operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{minabs}(I_{(x,y,z,c)},\mathrm{val})\f$. + **/ + CImg& minabs(const T& value) { + if (is_empty()) return *this; + const T absvalue = cimg::abs(value); + cimg_openmp_for(*this,cimg::minabs(*ptr,value,absvalue),65536); + return *this; + } + + //! Pointwise minabs operator between instance image and a value \newinstance. + CImg get_minabs(const T& value) const { + return (+*this).minabs(value); + } + + //! Pointwise minabs operator between two images. + /** + \param img Image used as the reference argument of the minabs operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{minabs}(I_{(x,y,z,c)},\mathrm{img}_{(x,y,z,c)})\f$. + **/ + template + CImg& minabs(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return minabs(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_minabs(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).minabs(img); + } + + //! Pointwise minabs operator between an image and an expression. + /** + \param expression Math formula as a C-string. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{minabs}(I_{(x,y,z,c)},\mathrm{expr}_{(x,y,z,c)})\f$. + **/ + CImg& minabs(const char *const expression) { + return minabs((+*this)._fill(expression,true,1,0,0,"minabs",this)); + } + + //! Pointwise minabs operator between an image and an expression \newinstance. + CImg get_minabs(const char *const expression) const { + return CImg(*this,false).minabs(expression); + } + + //! Pointwise maxabs operator between instance image and a value. + /** + \param val Value used as the reference argument of the maxabs operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{maxabs}(I_{(x,y,z,c)},\mathrm{val})\f$. + **/ + CImg& maxabs(const T& value) { + if (is_empty()) return *this; + const T absvalue = cimg::abs(value); + cimg_openmp_for(*this,cimg::maxabs(*ptr,value,absvalue),65536); + return *this; + } + + //! Pointwise maxabs operator between instance image and a value \newinstance. + CImg get_maxabs(const T& value) const { + return (+*this).maxabs(value); + } + + //! Pointwise maxabs operator between two images. + /** + \param img Image used as the reference argument of the maxabs operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{maxabs}(I_{(x,y,z,c)},\mathrm{img}_{(x,y,z,c)})\f$. + **/ + template + CImg& maxabs(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return maxabs(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_maxabs(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).maxabs(img); + } + + //! Pointwise maxabs operator between an image and an expression. + /** + \param expression Math formula as a C-string. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{maxabs}(I_{(x,y,z,c)},\mathrm{expr}_{(x,y,z,c)})\f$. + **/ + CImg& maxabs(const char *const expression) { + return maxabs((+*this)._fill(expression,true,1,0,0,"maxabs",this)); + } + + //! Pointwise maxabs operator between an image and an expression \newinstance. + CImg get_maxabs(const char *const expression) const { + return CImg(*this,false).maxabs(expression); + } + + //! Return a reference to the minimum pixel value. + /** + **/ + T& min() { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "min(): Empty instance.", + cimg_instance); + T *ptr_min = _data; + T min_value = *ptr_min; + cimg_for(*this,ptrs,T) if (*ptrsmax_value) max_value = *(ptr_max=ptrs); + return *ptr_max; + } + + //! Return a reference to the maximum pixel value \const. + const T& max() const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "max(): Empty instance.", + cimg_instance); + const T *ptr_max = _data; + T max_value = *ptr_max; + cimg_for(*this,ptrs,T) if (*ptrs>max_value) max_value = *(ptr_max=ptrs); + return *ptr_max; + } + + //! Return a reference to the maximum pixel value in absolute value. + /** + **/ + T& maxabs() { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "maxabs(): Empty instance.", + cimg_instance); + T *ptr_maxabs = _data; + T maxabs_value = *ptr_maxabs; + cimg_for(*this,ptrs,T) { + const T ma = cimg::abs(*ptrs); + if (ma>maxabs_value) { maxabs_value = ma; ptr_maxabs = ptrs; } + } + return *ptr_maxabs; + } + + //! Return a reference to the maximum pixel value in absolute value \const. + const T& maxabs() const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "maxabs(): Empty instance.", + cimg_instance); + const T *ptr_maxabs = _data; + T maxabs_value = *ptr_maxabs; + cimg_for(*this,ptrs,T) { + const T ma = cimg::abs(*ptrs); + if (ma>maxabs_value) { maxabs_value = ma; ptr_maxabs = ptrs; } + } + return *ptr_maxabs; + } + + //! Return a reference to the minimum pixel value as well as the maximum pixel value. + /** + \param[out] max_val Maximum pixel value. + **/ + template + T& min_max(t& max_val) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "min_max(): Empty instance.", + cimg_instance); + T *ptr_min = _data; + T min_value = *ptr_min, max_value = min_value; + cimg_for(*this,ptrs,T) { + const T val = *ptrs; + if (valmax_value) max_value = val; + } + max_val = (t)max_value; + return *ptr_min; + } + + //! Return a reference to the minimum pixel value as well as the maximum pixel value \const. + template + const T& min_max(t& max_val) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "min_max(): Empty instance.", + cimg_instance); + const T *ptr_min = _data; + T min_value = *ptr_min, max_value = min_value; + cimg_for(*this,ptrs,T) { + const T val = *ptrs; + if (valmax_value) max_value = val; + } + max_val = (t)max_value; + return *ptr_min; + } + + //! Return a reference to the maximum pixel value as well as the minimum pixel value. + /** + \param[out] min_val Minimum pixel value. + **/ + template + T& max_min(t& min_val) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "max_min(): Empty instance.", + cimg_instance); + T *ptr_max = _data; + T max_value = *ptr_max, min_value = max_value; + cimg_for(*this,ptrs,T) { + const T val = *ptrs; + if (val>max_value) { max_value = val; ptr_max = ptrs; } + if (val + const T& max_min(t& min_val) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "max_min(): Empty instance.", + cimg_instance); + const T *ptr_max = _data; + T max_value = *ptr_max, min_value = max_value; + cimg_for(*this,ptrs,T) { + const T val = *ptrs; + if (val>max_value) { max_value = val; ptr_max = ptrs; } + if (val=size()) return max(); + CImg arr(*this,false); + ulongT l = 0, ir = size() - 1; + for ( ; ; ) { + if (ir<=l + 1) { + if (ir==l + 1 && arr[ir]>1; + cimg::swap(arr[mid],arr[l + 1]); + if (arr[l]>arr[ir]) cimg::swap(arr[l],arr[ir]); + if (arr[l + 1]>arr[ir]) cimg::swap(arr[l + 1],arr[ir]); + if (arr[l]>arr[l + 1]) cimg::swap(arr[l],arr[l + 1]); + ulongT i = l + 1, j = ir; + const T pivot = arr[l + 1]; + for ( ; ; ) { + do ++i; while (arr[i]pivot); + if (j=k) ir = j - 1; + if (j<=k) l = i; + } + } + } + + //! Return the median pixel value. + /** + **/ + T median() const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "median(): Empty instance.", + cimg_instance); + const ulongT s = size(); + switch (s) { + case 1 : return _data[0]; + case 2 : return cimg::median(_data[0],_data[1]); + case 3 : return cimg::median(_data[0],_data[1],_data[2]); + case 5 : return cimg::median(_data[0],_data[1],_data[2],_data[3],_data[4]); + case 7 : return cimg::median(_data[0],_data[1],_data[2],_data[3],_data[4],_data[5],_data[6]); + case 9 : return cimg::median(_data[0],_data[1],_data[2],_data[3],_data[4],_data[5],_data[6],_data[7],_data[8]); + case 13 : return cimg::median(_data[0],_data[1],_data[2],_data[3],_data[4],_data[5],_data[6],_data[7],_data[8], + _data[9],_data[10],_data[11],_data[12]); + } + const T res = kth_smallest(s>>1); + return (s%2)?res:(T)((res + kth_smallest((s>>1) - 1))/2); + } + + //! Return the product of all the pixel values. + /** + **/ + double product() const { + if (is_empty()) return 0; + double res = 1; + cimg_for(*this,ptrs,T) res*=(double)*ptrs; + return res; + } + + //! Return the sum of all the pixel values. + /** + **/ + double sum() const { + double res = 0; + cimg_for(*this,ptrs,T) res+=(double)*ptrs; + return res; + } + + //! Return the average pixel value. + /** + **/ + double mean() const { + double res = 0; + cimg_for(*this,ptrs,T) res+=(double)*ptrs; + return res/size(); + } + + //! Return the variance of the pixel values. + /** + \param variance_method Method used to estimate the variance. Can be: + - \c 0: Second moment, computed as + \f$1/N \sum\limits_{k=1}^{N} (x_k - \bar x)^2 = + 1/N \left( \sum\limits_{k=1}^N x_k^2 - \left( \sum\limits_{k=1}^N x_k \right)^2 / N \right)\f$ + with \f$ \bar x = 1/N \sum\limits_{k=1}^N x_k \f$. + - \c 1: Best unbiased estimator, computed as \f$\frac{1}{N - 1} \sum\limits_{k=1}^{N} (x_k - \bar x)^2 \f$. + - \c 2: Least median of squares. + - \c 3: Least trimmed of squares. + **/ + double variance(const unsigned int variance_method=1) const { + double foo; + return variance_mean(variance_method,foo); + } + + //! Return the variance as well as the average of the pixel values. + /** + \param variance_method Method used to estimate the variance (see variance(const unsigned int) const). + \param[out] mean Average pixel value. + **/ + template + double variance_mean(const unsigned int variance_method, t& mean) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "variance_mean(): Empty instance.", + cimg_instance); + + double variance = 0, average = 0; + const ulongT siz = size(); + switch (variance_method) { + case 0 : { // Least mean square (standard definition) + double S = 0, S2 = 0; + cimg_for(*this,ptrs,T) { const double val = (double)*ptrs; S+=val; S2+=val*val; } + variance = (S2 - S*S/siz)/siz; + average = S; + } break; + case 1 : { // Least mean square (robust definition) + double S = 0, S2 = 0; + cimg_for(*this,ptrs,T) { const double val = (double)*ptrs; S+=val; S2+=val*val; } + variance = siz>1?(S2 - S*S/siz)/(siz - 1):0; + average = S; + } break; + case 2 : { // Least Median of Squares (MAD) + CImg buf(*this,false); + buf.sort(); + const ulongT siz2 = siz>>1; + const double med_i = (double)buf[siz2]; + cimg_for(buf,ptrs,Tfloat) { + const double val = (double)*ptrs; *ptrs = (Tfloat)cimg::abs(val - med_i); average+=val; + } + buf.sort(); + const double sig = (double)(1.4828*buf[siz2]); + variance = sig*sig; + } break; + default : { // Least trimmed of Squares + CImg buf(*this,false); + const ulongT siz2 = siz>>1; + cimg_for(buf,ptrs,Tfloat) { + const double val = (double)*ptrs; (*ptrs)=(Tfloat)((*ptrs)*val); average+=val; + } + buf.sort(); + double a = 0; + const Tfloat *ptrs = buf._data; + for (ulongT j = 0; j0?variance:0; + } + + //! Return estimated variance of the noise. + /** + \param variance_method Method used to compute the variance (see variance(const unsigned int) const). + \note Because of structures such as edges in images it is + recommended to use a robust variance estimation. The variance of the + noise is estimated by computing the variance of the Laplacian \f$(\Delta + I)^2 \f$ scaled by a factor \f$c\f$ insuring \f$ c E[(\Delta I)^2]= + \sigma^2\f$ where \f$\sigma\f$ is the noise variance. + **/ + double variance_noise(const unsigned int variance_method=2) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "variance_noise(): Empty instance.", + cimg_instance); + + const ulongT siz = size(); + if (!siz || !_data) return 0; + if (variance_method>1) { // Compute a scaled version of the Laplacian + CImg tmp(*this,false); + if (_depth==1) { + const double cste = 1./std::sqrt(20.); // Depends on how the Laplacian is computed + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*262144 && + _spectrum>=2)) + cimg_forC(*this,c) { + CImg_3x3(I,T); + cimg_for3x3(*this,x,y,0,c,I,T) { + tmp(x,y,c) = cste*((double)Inc + (double)Ipc + (double)Icn + + (double)Icp - 4*(double)Icc); + } + } + } else { + const double cste = 1./std::sqrt(42.); // Depends on how the Laplacian is computed + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*262144 && + _spectrum>=2)) + cimg_forC(*this,c) { + CImg_3x3x3(I,T); + cimg_for3x3x3(*this,x,y,z,c,I,T) { + tmp(x,y,z,c) = cste*( + (double)Incc + (double)Ipcc + (double)Icnc + (double)Icpc + + (double)Iccn + (double)Iccp - 6*(double)Iccc); + } + } + } + return tmp.variance(variance_method); + } + + // Version that doesn't need intermediate images. + double variance = 0, S = 0, S2 = 0; + if (_depth==1) { + const double cste = 1./std::sqrt(20.); + CImg_3x3(I,T); + cimg_forC(*this,c) cimg_for3x3(*this,x,y,0,c,I,T) { + const double val = cste*((double)Inc + (double)Ipc + + (double)Icn + (double)Icp - 4*(double)Icc); + S+=val; S2+=val*val; + } + } else { + const double cste = 1./std::sqrt(42.); + CImg_3x3x3(I,T); + cimg_forC(*this,c) cimg_for3x3x3(*this,x,y,z,c,I,T) { + const double val = cste * + ((double)Incc + (double)Ipcc + (double)Icnc + + (double)Icpc + + (double)Iccn + (double)Iccp - 6*(double)Iccc); + S+=val; S2+=val*val; + } + } + if (variance_method) variance = siz>1?(S2 - S*S/siz)/(siz - 1):0; + else variance = (S2 - S*S/siz)/siz; + return variance>0?variance:0; + } + + //! Compute the MSE (Mean-Squared Error) between two images. + /** + \param img Image used as the second argument of the MSE operator. + **/ + template + double MSE(const CImg& img) const { + if (img.size()!=size()) + throw CImgArgumentException(_cimg_instance + "MSE(): Instance and specified image (%u,%u,%u,%u,%p) have different dimensions.", + cimg_instance, + img._width,img._height,img._depth,img._spectrum,img._data); + double vMSE = 0; + const t* ptr2 = img._data; + cimg_for(*this,ptr1,T) { + const double diff = (double)*ptr1 - (double)*(ptr2++); + vMSE+=diff*diff; + } + const ulongT siz = img.size(); + if (siz) vMSE/=siz; + return vMSE; + } + + //! Compute the PSNR (Peak Signal-to-Noise Ratio) between two images. + /** + \param img Image used as the second argument of the PSNR operator. + \param max_value Maximum theoretical value of the signal. + **/ + template + double PSNR(const CImg& img, const double max_value=255) const { + const double vMSE = (double)std::sqrt(MSE(img)); + return (vMSE!=0)?(double)(20*std::log10(max_value/vMSE)):(double)(cimg::type::max()); + } + + //! Evaluate math formula. + /** + \param expression Math formula, as a C-string. + \param x Value of the pre-defined variable \c x. + \param y Value of the pre-defined variable \c y. + \param z Value of the pre-defined variable \c z. + \param c Value of the pre-defined variable \c c. + \param list_inputs A list of input images attached to the specified math formula. + \param[out] list_outputs A pointer to a list of output images attached to the specified math formula. + **/ + double eval(const char *const expression, + const double x=0, const double y=0, const double z=0, const double c=0, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) { + return _eval(this,expression,x,y,z,c,list_inputs,list_outputs); + } + + //! Evaluate math formula \const. + double eval(const char *const expression, + const double x=0, const double y=0, const double z=0, const double c=0, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) const { + return _eval(0,expression,x,y,z,c,list_inputs,list_outputs); + } + + // Fast function to pre-evaluate common expressions. + // (return 'true' in case of success, and set value of 'res'). + template + bool __eval(const char *const expression, t &res) const { + if (!expression || !*expression) { res = (t)0; return true; } + const char c = *expression; + bool is_success = false; + char c1, end; + double val; + if (c>='0' && c<='9') { // Possible value + if (!expression[1]) { // Single digit + res = (t)(c - '0'); + is_success = true; + } else if (std::sscanf(expression,"%lf%c",&val,&end)==1) { // Single value + res = (t)val; + is_success = true; + } + } else if ((c=='+' || c=='-' || c=='!') && // +Value, -Value or !Value + (c1=expression[1])>='0' && c1<='0') { + if (!expression[2]) { // [+-!] + Single digit + const int ival = c1 - '0'; + res = (t)(c=='+'?ival:c=='-'?-ival:!ival); + is_success = true; + } else if (std::sscanf(expression + 1,"%lf%c",&val,&end)==1) { // [+-!] Single value + res = (t)(c=='+'?val:c=='-'?-val:(double)!val); + is_success = true; + } + } else if (!expression[1]) switch (*expression) { // Other common single-char expressions + case 'w' : res = (t)_width; is_success = true; break; + case 'h' : res = (t)_height; is_success = true; break; + case 'd' : res = (t)_depth; is_success = true; break; + case 's' : res = (t)_spectrum; is_success = true; break; + case 'r' : res = (t)_is_shared; is_success = true; break; + } + return is_success; + } + + double _eval(CImg *const img_output, const char *const expression, + const double x, const double y, const double z, const double c, + const CImgList *const list_inputs, CImgList *const list_outputs) const { + if (!expression || !*expression) return 0; + double _val = 0; + if (__eval(expression,_val)) return _val; + _cimg_math_parser mp(expression + (*expression=='>' || *expression=='<' || + *expression=='*' || *expression==':'),"eval", + *this,img_output,list_inputs,list_outputs,false); + mp.begin_t(); + const double val = mp(x,y,z,c); + mp.end_t(); + mp.end(); + return val; + } + + //! Evaluate math formula. + /** + \param[out] output Contains values of output vector returned by the evaluated expression + (or is empty if the returned type is scalar). + \param expression Math formula, as a C-string. + \param x Value of the pre-defined variable \c x. + \param y Value of the pre-defined variable \c y. + \param z Value of the pre-defined variable \c z. + \param c Value of the pre-defined variable \c c. + \param list_inputs A list of input images attached to the specified math formula. + \param[out] list_outputs A pointer to a list of output images attached to the specified math formula. + **/ + template + void eval(CImg &output, const char *const expression, + const double x=0, const double y=0, const double z=0, const double c=0, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) { + _eval(output,this,expression,x,y,z,c,list_inputs,list_outputs); + } + + //! Evaluate math formula \const. + template + void eval(CImg& output, const char *const expression, + const double x=0, const double y=0, const double z=0, const double c=0, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) const { + _eval(output,0,expression,x,y,z,c,list_inputs,list_outputs); + } + + template + void _eval(CImg& output, CImg *const img_output, const char *const expression, + const double x, const double y, const double z, const double c, + const CImgList *const list_inputs, CImgList *const list_outputs) const { + if (!expression || !*expression) { output.assign(1); *output = 0; return; } + double _val = 0; + if (__eval(expression,_val)) { output.assign(1); *output = _val; return; } + _cimg_math_parser mp(expression + (*expression=='>' || *expression=='<' || + *expression=='*' || *expression==':'),"eval", + *this,img_output,list_inputs,list_outputs,false); + output.assign(1,std::max(1U,mp.result_dim)); + mp.begin_t(); + mp(x,y,z,c,output._data); + mp.end_t(); + mp.end(); + } + + //! Evaluate math formula on a set of variables. + /** + \param expression Math formula, as a C-string. + \param xyzc Set of values (x,y,z,c) used for the evaluation. + \param list_inputs A list of input images attached to the specified math formula. + \param[out] list_outputs A pointer to a list of output images attached to the specified math formula. + **/ + template + CImg eval(const char *const expression, const CImg& xyzc, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) { + return _eval(this,expression,xyzc,list_inputs,list_outputs); + } + + //! Evaluate math formula on a set of variables \const. + template + CImg eval(const char *const expression, const CImg& xyzc, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) const { + return _eval(0,expression,xyzc,list_inputs,list_outputs); + } + + template + CImg _eval(CImg *const output, const char *const expression, const CImg& xyzc, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) const { + CImg res(1,xyzc.size()/4); + if (!expression || !*expression) return res.fill(0); + _cimg_math_parser mp(expression,"eval",*this,output,list_inputs,list_outputs,false); + +#if cimg_use_openmp!=0 + unsigned int tid = 0; + cimg_pragma_openmp(parallel if (res._height>=512)) + { + _cimg_math_parser *_mp = 0; + cimg_pragma_openmp(critical(_eval)) { _mp = !tid?&mp:new _cimg_math_parser(mp); ++tid; } + _cimg_math_parser &lmp = *_mp; + cimg_pragma_openmp(barrier) + lmp.begin_t(); + cimg_pragma_openmp(for) + for (int i = 0; i[min, max, mean, variance, xmin, ymin, zmin, cmin, xmax, ymax, zmax, cmax, sum, product]. + **/ + CImg get_stats(const unsigned int variance_method=1) const { + if (is_empty()) return CImg(); + const ulongT siz = size(); + const longT off_end = (longT)siz; + double S = 0, S2 = 0, P = 1; + longT offm = 0, offM = 0; + T m = *_data, M = m; + + cimg_pragma_openmp(parallel reduction(+:S,S2) reduction(*:P) cimg_openmp_if_size(siz,131072)) { + longT loffm = 0, loffM = 0; + T lm = *_data, lM = lm; + cimg_pragma_openmp(for) + for (longT off = 0; offlM) { lM = val; loffM = off; } + S+=_val; + S2+=_val*_val; + P*=_val; + } + cimg_pragma_openmp(critical(get_stats)) { + if (lmM || (lM==M && loffM1?(S2 - S*S/siz)/(siz - 1):0): + variance(variance_method)), + variance_value = _variance_value>0?_variance_value:0; + int + xm = 0, ym = 0, zm = 0, cm = 0, + xM = 0, yM = 0, zM = 0, cM = 0; + contains(_data[offm],xm,ym,zm,cm); + contains(_data[offM],xM,yM,zM,cM); + return CImg(1,14).fill((double)m,(double)M,mean_value,variance_value, + (double)xm,(double)ym,(double)zm,(double)cm, + (double)xM,(double)yM,(double)zM,(double)cM, + S,P); + } + + //! Compute statistics vector from the pixel values \inplace. + CImg& stats(const unsigned int variance_method=1) { + return get_stats(variance_method).move_to(*this); + } + + //@} + //------------------------------------- + // + //! \name Vector / Matrix Operations + //@{ + //------------------------------------- + + //! Compute norm of the image, viewed as a matrix. + /** + \param magnitude_type Norm type. Can be: + - \c -1: Linf-norm + - \c 0: L0-norm + - \c 1: L1-norm + - \c 2: L2-norm + **/ + double magnitude(const int magnitude_type=2) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "magnitude(): Empty instance.", + cimg_instance); + const ulongT siz = size(); + double res = 0; + switch (magnitude_type) { + case -1 : { + cimg_for(*this,ptrs,T) { const double val = (double)cimg::abs(*ptrs); if (val>res) res = val; } + } break; + case 1 : { + cimg_pragma_openmp(parallel for reduction(+:res) cimg_openmp_if_size(size(),8192)) + for (longT off = 0; off<(longT)siz; ++off) res+=(double)cimg::abs(_data[off]); + } break; + default : { + cimg_pragma_openmp(parallel for reduction(+:res) cimg_openmp_if_size(size(),8192)) + for (longT off = 0; off<(longT)siz; ++off) res+=(double)cimg::sqr(_data[off]); + res = (double)std::sqrt(res); + } + } + return res; + } + + //! Compute the trace of the image, viewed as a matrix. + /** + **/ + double trace() const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "trace(): Empty instance.", + cimg_instance); + double res = 0; + cimg_forX(*this,k) res+=(double)(*this)(k,k); + return res; + } + + //! Compute the determinant of the image, viewed as a matrix. + /** + **/ + double det() const { + if (is_empty() || _width!=_height || _depth!=1 || _spectrum!=1) + throw CImgInstanceException(_cimg_instance + "det(): Instance is not a square matrix.", + cimg_instance); + + switch (_width) { + case 1 : return (double)((*this)(0,0)); + case 2 : return (double)((*this)(0,0))*(double)((*this)(1,1)) - (double)((*this)(0,1))*(double)((*this)(1,0)); + case 3 : { + const double + a = (double)_data[0], d = (double)_data[1], g = (double)_data[2], + b = (double)_data[3], e = (double)_data[4], h = (double)_data[5], + c = (double)_data[6], f = (double)_data[7], i = (double)_data[8]; + return i*a*e - a*h*f - i*b*d + b*g*f + c*d*h - c*g*e; + } + default : { + CImg lu(*this,false); + CImg indx; + bool d; + lu._LU(indx,d); + double res = d?(double)1:(double)-1; + cimg_forX(lu,i) res*=lu(i,i); + return res; + } + } + } + + //! Compute the dot product between instance and argument, viewed as matrices. + /** + \param img Image used as a second argument of the dot product. + **/ + template + double dot(const CImg& img) const { + const ulongT nb = std::min(size(),img.size()); + double res = 0; + cimg_pragma_openmp(parallel for reduction(+:res) cimg_openmp_if_size(nb,8192)) + for (longT off = 0; off<(longT)nb; ++off) res+=(double)_data[off]*(double)img[off]; + return res; + } + + //! Get vector-valued pixel located at specified position. + /** + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + **/ + CImg get_vector_at(const unsigned int x, const unsigned int y=0, const unsigned int z=0) const { + CImg res; + if (res._height!=_spectrum) res.assign(1,_spectrum); + const ulongT whd = (ulongT)_width*_height*_depth; + const T *ptrs = data(x,y,z); + T *ptrd = res._data; + cimg_forC(*this,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return res; + } + + //! Get (square) matrix-valued pixel located at specified position. + /** + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \note - The spectrum() of the image must be a square. + **/ + CImg get_matrix_at(const unsigned int x=0, const unsigned int y=0, const unsigned int z=0) const { + const int n = (int)cimg::round(std::sqrt((double)_spectrum)); + const T *ptrs = data(x,y,z,0); + const ulongT whd = (ulongT)_width*_height*_depth; + CImg res(n,n); + T *ptrd = res._data; + cimg_forC(*this,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return res; + } + + //! Get tensor-valued pixel located at specified position. + /** + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + **/ + CImg get_tensor_at(const unsigned int x, const unsigned int y=0, const unsigned int z=0) const { + const T *ptrs = data(x,y,z,0); + const ulongT whd = (ulongT)_width*_height*_depth; + if (_spectrum==6) + return tensor(*ptrs,*(ptrs + whd),*(ptrs + 2*whd),*(ptrs + 3*whd),*(ptrs + 4*whd),*(ptrs + 5*whd)); + if (_spectrum==3) + return tensor(*ptrs,*(ptrs + whd),*(ptrs + 2*whd)); + return tensor(*ptrs); + } + + //! Set vector-valued pixel at specified position. + /** + \param vec Vector to put on the instance image. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + **/ + template + CImg& set_vector_at(const CImg& vec, const unsigned int x, const unsigned int y=0, const unsigned int z=0) { + if (x<_width && y<_height && z<_depth) { + const t *ptrs = vec._data; + const ulongT whd = (ulongT)_width*_height*_depth; + T *ptrd = data(x,y,z); + for (unsigned int k = std::min((unsigned int)vec.size(),_spectrum); k; --k) { + *ptrd = (T)*(ptrs++); ptrd+=whd; + } + } + return *this; + } + + //! Set (square) matrix-valued pixel at specified position. + /** + \param mat Matrix to put on the instance image. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + **/ + template + CImg& set_matrix_at(const CImg& mat, const unsigned int x=0, const unsigned int y=0, const unsigned int z=0) { + return set_vector_at(mat,x,y,z); + } + + //! Set tensor-valued pixel at specified position. + /** + \param ten Tensor to put on the instance image. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + **/ + template + CImg& set_tensor_at(const CImg& ten, const unsigned int x=0, const unsigned int y=0, const unsigned int z=0) { + T *ptrd = data(x,y,z,0); + const ulongT siz = (ulongT)_width*_height*_depth; + if (ten._height==2) { + *ptrd = (T)ten[0]; ptrd+=siz; + *ptrd = (T)ten[1]; ptrd+=siz; + *ptrd = (T)ten[3]; + } + else { + *ptrd = (T)ten[0]; ptrd+=siz; + *ptrd = (T)ten[1]; ptrd+=siz; + *ptrd = (T)ten[2]; ptrd+=siz; + *ptrd = (T)ten[4]; ptrd+=siz; + *ptrd = (T)ten[5]; ptrd+=siz; + *ptrd = (T)ten[8]; + } + return *this; + } + + //! Resize image to become a diagonal matrix. + /** + \note Transform the image as a diagonal matrix so that each of its initial value becomes a diagonal coefficient. + **/ + CImg& diagonal() { + return get_diagonal().move_to(*this); + } + + //! Resize image to become a diagonal matrix \newinstance. + CImg get_diagonal() const { + if (is_empty()) return *this; + const unsigned int siz = (unsigned int)size(); + CImg res(siz,siz,1,1,0); + cimg_foroff(*this,off) res((unsigned int)off,(unsigned int)off) = (*this)[off]; + return res; + } + + //! Replace the image by an identity matrix. + /** + \note If the instance image is not square, it is resized to a square matrix using its maximum + dimension as a reference. + **/ + CImg& identity_matrix() { + return identity_matrix(std::max(_width,_height)).move_to(*this); + } + + //! Replace the image by an identity matrix \newinstance. + CImg get_identity_matrix() const { + return identity_matrix(std::max(_width,_height)); + } + + //! Fill image with a linear sequence of values. + /** + \param a0 Starting value of the sequence. + \param a1 Ending value of the sequence. + **/ + CImg& sequence(const T& a0, const T& a1) { + if (is_empty()) return *this; + const ulongT siz = size() - 1; + T* ptr = _data; + if (siz) { + const double delta = (double)a1 - (double)a0; + cimg_foroff(*this,l) *(ptr++) = (T)(a0 + delta*l/siz); + } else *ptr = a0; + return *this; + } + + //! Fill image with a linear sequence of values \newinstance. + CImg get_sequence(const T& a0, const T& a1) const { + return (+*this).sequence(a0,a1); + } + + //! Transpose the image, viewed as a matrix. + /** + \note Equivalent to \code permute_axes("yxzc"); \endcode. + **/ + CImg& transpose() { + if (_width==1) { _width = _height; _height = 1; return *this; } + if (_height==1) { _height = _width; _width = 1; return *this; } + if (_width==_height) { + cimg_forYZC(*this,y,z,c) for (int x = y; x get_transpose() const { + return get_permute_axes("yxzc"); + } + + //! Compute the cross product between two \c 1x3 images, viewed as 3D vectors. + /** + \param img Image used as the second argument of the cross product. + \note The first argument of the cross product is \c *this. + **/ + template + CImg& cross(const CImg& img) { + if (_width!=1 || _height<3 || img._width!=1 || img._height<3) + throw CImgInstanceException(_cimg_instance + "cross(): Instance and/or specified image (%u,%u,%u,%u,%p) are not 3D vectors.", + cimg_instance, + img._width,img._height,img._depth,img._spectrum,img._data); + + const T x = (*this)[0], y = (*this)[1], z = (*this)[2]; + (*this)[0] = (T)(y*img[2] - z*img[1]); + (*this)[1] = (T)(z*img[0] - x*img[2]); + (*this)[2] = (T)(x*img[1] - y*img[0]); + return *this; + } + + //! Compute the cross product between two \c 1x3 images, viewed as 3D vectors \newinstance. + template + CImg<_cimg_Tt> get_cross(const CImg& img) const { + return CImg<_cimg_Tt>(*this).cross(img); + } + + //! Invert the instance image, viewed as a matrix. + /** + \param use_LU Choose the inverting algorithm. Can be: + - \c true: LU-based matrix inversion. + - \c false: SVD-based matrix inversion. + **/ + CImg& invert(const bool use_LU=true) { + if (_width!=_height || _depth!=1 || _spectrum!=1) + throw CImgInstanceException(_cimg_instance + "invert(): Instance is not a square matrix.", + cimg_instance); + const double dete = _width>3?-1.:det(); + if (dete!=0. && _width==2) { + const double + a = _data[0], c = _data[1], + b = _data[2], d = _data[3]; + _data[0] = (T)(d/dete); _data[1] = (T)(-c/dete); + _data[2] = (T)(-b/dete); _data[3] = (T)(a/dete); + } else if (dete!=0. && _width==3) { + const double + a = _data[0], d = _data[1], g = _data[2], + b = _data[3], e = _data[4], h = _data[5], + c = _data[6], f = _data[7], i = _data[8]; + _data[0] = (T)((i*e - f*h)/dete), _data[1] = (T)((g*f - i*d)/dete), _data[2] = (T)((d*h - g*e)/dete); + _data[3] = (T)((h*c - i*b)/dete), _data[4] = (T)((i*a - c*g)/dete), _data[5] = (T)((g*b - a*h)/dete); + _data[6] = (T)((b*f - e*c)/dete), _data[7] = (T)((d*c - a*f)/dete), _data[8] = (T)((a*e - d*b)/dete); + } else { + +#ifdef cimg_use_lapack + int INFO = (int)use_LU, N = _width, LWORK = 4*N, *const IPIV = new int[N]; + Tfloat + *const lapA = new Tfloat[N*N], + *const WORK = new Tfloat[LWORK]; + cimg_forXY(*this,k,l) lapA[k*N + l] = (Tfloat)((*this)(k,l)); + cimg::getrf(N,lapA,IPIV,INFO); + if (INFO) + cimg::warn(_cimg_instance + "invert(): LAPACK function dgetrf_() returned error code %d.", + cimg_instance, + INFO); + else { + cimg::getri(N,lapA,IPIV,WORK,LWORK,INFO); + if (INFO) + cimg::warn(_cimg_instance + "invert(): LAPACK function dgetri_() returned error code %d.", + cimg_instance, + INFO); + } + if (!INFO) cimg_forXY(*this,k,l) (*this)(k,l) = (T)(lapA[k*N + l]); else fill(0); + delete[] IPIV; delete[] lapA; delete[] WORK; +#else + if (use_LU) { // LU-based + CImg A(*this,false), indx; + bool d; + A._LU(indx,d); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(_width*_height,16*16)) + cimg_forX(*this,j) { + CImg col(1,_width,1,1,0); + col(j) = 1; + col._solve(A,indx); + cimg_forX(*this,i) (*this)(j,i) = (T)col(i); + } + } else pseudoinvert(false); // SVD-based +#endif + } + return *this; + } + + //! Invert the instance image, viewed as a matrix \newinstance. + CImg get_invert(const bool use_LU=true) const { + return CImg(*this,false).invert(use_LU); + } + + //! Compute the Moore-Penrose pseudo-inverse of the instance image, viewed as a matrix. + /** + **/ + CImg& pseudoinvert(const bool use_LU=false) { + return get_pseudoinvert(use_LU).move_to(*this); + } + + //! Compute the Moore-Penrose pseudo-inverse of the instance image, viewed as a matrix \newinstance. + CImg get_pseudoinvert(const bool use_LU=false) const { + + // LU-based method. + if (use_LU) { + CImg AtA(width(),width()); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(_width*_height,128*128)) + cimg_forY(AtA,i) + for (int j = 0; j<=i; ++j) { + double res = 0; + cimg_forY(*this,k) res+=(*this)(i,k)*(*this)(j,k); + AtA(j,i) = AtA(i,j) = (Tfloat)res; + } + AtA.invert(true); + return AtA*get_transpose(); + } + + // SVD-based method. + CImg U, S, V; + SVD(U,S,V,false); + const Tfloat epsilon = (sizeof(Tfloat)<=4?5.96e-8f:1.11e-16f)*std::max(_width,_height)*S.max(); + cimg_forX(V,x) { + const Tfloat s = S(x), invs = s>epsilon?1/s:0; + cimg_forY(V,y) V(x,y)*=invs; + } + return V*U.transpose(); + } + + //! Solve a system of linear equations. + /** + \param A Matrix of the linear system. + \param use_LU In case of non square system (least-square solution), + choose between SVD-based (\c false) or LU-based (\c true) method. + LU method is faster for large matrices, but numerically less stable. + \note Solve \c AX = B where \c B=*this. + **/ + template + CImg& solve(const CImg& A, const bool use_LU=false) { + if (_depth!=1 || _spectrum!=1 || _height!=A._height || A._depth!=1 || A._spectrum!=1) + throw CImgArgumentException(_cimg_instance + "solve(): Instance and specified matrix (%u,%u,%u,%u,%p) have " + "incompatible dimensions.", + cimg_instance, + A._width,A._height,A._depth,A._spectrum,A._data); + typedef _cimg_Ttfloat Ttfloat; + + if (A.size()==1) return (*this)/=A[0]; + if (A._width==2 && A._height==2 && _height==2) { // 2x2 linear system + const double a = (double)A[0], b = (double)A[1], c = (double)A[2], d = (double)A[3], + fa = std::fabs(a), fb = std::fabs(b), fc = std::fabs(c), fd = std::fabs(d), + det = a*d - b*c, fM = cimg::max(fa,fb,fc,fd); + if (fM==fa) + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=256)) + cimg_forX(*this,k) { + const double u = (double)(*this)(k,0), v = (double)(*this)(k,1), y = (a*v - c*u)/det; + (*this)(k,0) = (T)((u - b*y)/a); (*this)(k,1) = (T)y; + } else if (fM==fc) + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=256)) + cimg_forX(*this,k) { + const double u = (double)(*this)(k,0), v = (double)(*this)(k,1), y = (a*v - c*u)/det; + (*this)(k,0) = (T)((v - d*y)/c); (*this)(k,1) = (T)y; + } else if (fM==fb) + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=256)) + cimg_forX(*this,k) { + const double u = (double)(*this)(k,0), v = (double)(*this)(k,1), x = (d*u - b*v)/det; + (*this)(k,0) = (T)x; (*this)(k,1) = (T)((u - a*x)/b); + } else + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=256)) + cimg_forX(*this,k) { + const double u = (double)(*this)(k,0), v = (double)(*this)(k,1), x = (d*u - b*v)/det; + (*this)(k,0) = (T)x; (*this)(k,1) = (T)((v - c*x)/d); + } + return *this; + } + + if (A._width==A._height) { // Square linear system +#ifdef cimg_use_lapack + char TRANS = 'N'; + int INFO, N = _height, LWORK = 4*N, *const IPIV = new int[N]; + Ttfloat + *const lapA = new Ttfloat[N*N], + *const lapB = new Ttfloat[N], + *const WORK = new Ttfloat[LWORK]; + cimg_forXY(A,k,l) lapA[k*N + l] = (Ttfloat)(A(k,l)); + cimg_forX(*this,i) { + cimg_forY(*this,j) lapB[j] = (Ttfloat)((*this)(i,j)); + cimg::getrf(N,lapA,IPIV,INFO); + if (INFO) + cimg::warn(_cimg_instance + "solve(): LAPACK library function dgetrf_() returned error code %d.", + cimg_instance, + INFO); + else { + cimg::getrs(TRANS,N,lapA,IPIV,lapB,INFO); + if (INFO) + cimg::warn(_cimg_instance + "solve(): LAPACK library function dgetrs_() returned error code %d.", + cimg_instance, + INFO); + } + if (!INFO) cimg_forY(*this,j) (*this)(i,j) = (T)(lapB[j]); else cimg_forY(*this,j) (*this)(i,j) = (T)0; + } + delete[] IPIV; delete[] lapA; delete[] lapB; delete[] WORK; +#else + CImg lu(A,false); + CImg indx; + bool d; + lu._LU(indx,d); + CImg res(_width,A._width); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(_width*_height,16)) + cimg_forX(*this,i) res.draw_image(i,get_column(i)._solve(lu,indx)); + res.move_to(*this); +#endif + } else { // Least-square solution for non-square systems + +#ifdef cimg_use_lapack + char TRANS = 'N'; + int INFO, N = A._width, M = A._height, LWORK = -1, LDA = M, LDB = M, NRHS = _width; + Ttfloat WORK_QUERY; + Ttfloat + * const lapA = new Ttfloat[M*N], + * const lapB = new Ttfloat[M*NRHS]; + cimg::sgels(TRANS, M, N, NRHS, lapA, LDA, lapB, LDB, &WORK_QUERY, LWORK, INFO); + LWORK = (int) WORK_QUERY; + Ttfloat *const WORK = new Ttfloat[LWORK]; + cimg_forXY(A,k,l) lapA[k*M + l] = (Ttfloat)(A(k,l)); + cimg_forXY(*this,k,l) lapB[k*M + l] = (Ttfloat)((*this)(k,l)); + cimg::sgels(TRANS, M, N, NRHS, lapA, LDA, lapB, LDB, WORK, LWORK, INFO); + if (INFO != 0) + cimg::warn(_cimg_instance + "solve(): LAPACK library function sgels() returned error code %d.", + cimg_instance, + INFO); + assign(NRHS, N); + if (!INFO) cimg_forXY(*this,k,l) (*this)(k,l) = (T)lapB[k*M + l]; + else (A.get_pseudoinvert(use_LU)*(*this)).move_to(*this); + delete[] lapA; delete[] lapB; delete[] WORK; +#else + (A.get_pseudoinvert(use_LU)*(*this)).move_to(*this); +#endif + } + return *this; + } + + //! Solve a system of linear equations \newinstance. + template + CImg<_cimg_Ttfloat> get_solve(const CImg& A, const bool use_LU=false) const { + typedef _cimg_Ttfloat Ttfloat; + return CImg(*this,false).solve(A,use_LU); + } + + template + CImg& _solve(const CImg& A, const CImg& indx) { + typedef _cimg_Ttfloat Ttfloat; + const int N = height(); + int ii = -1; + Ttfloat sum; + for (int i = 0; i=0) for (int j = ii; j<=i - 1; ++j) sum-=A(j,i)*(*this)(j); + else if (sum!=0) ii = i; + (*this)(i) = (T)sum; + } + for (int i = N - 1; i>=0; --i) { + sum = (*this)(i); + for (int j = i + 1; j + CImg& solve_tridiagonal(const CImg& A) { + const unsigned int siz = (unsigned int)size(); + if (A._width!=3 || A._height!=siz) + throw CImgArgumentException(_cimg_instance + "solve_tridiagonal(): Instance and tridiagonal matrix " + "(%u,%u,%u,%u,%p) have incompatible dimensions.", + cimg_instance, + A._width,A._height,A._depth,A._spectrum,A._data); + typedef _cimg_Ttfloat Ttfloat; + const Ttfloat epsilon = 1e-4f; + CImg B = A.get_column(1), V(*this,false); + for (int i = 1; i<(int)siz; ++i) { + const Ttfloat m = A(0,i)/(B[i - 1]?B[i - 1]:epsilon); + B[i] -= m*A(2,i - 1); + V[i] -= m*V[i - 1]; + } + (*this)[siz - 1] = (T)(V[siz - 1]/(B[siz - 1]?B[siz - 1]:epsilon)); + for (int i = (int)siz - 2; i>=0; --i) (*this)[i] = (T)((V[i] - A(2,i)*(*this)[i + 1])/(B[i]?B[i]:epsilon)); + return *this; + } + + //! Solve a tridiagonal system of linear equations \newinstance. + template + CImg<_cimg_Ttfloat> get_solve_tridiagonal(const CImg& A) const { + return CImg<_cimg_Ttfloat>(*this,false).solve_tridiagonal(A); + } + + //! Compute eigenvalues and eigenvectors of the instance image, viewed as a matrix. + /** + \param[out] val Vector of the estimated eigenvalues, in decreasing order. + \param[out] vec Matrix of the estimated eigenvectors, sorted by columns. + **/ + template + const CImg& eigen(CImg& val, CImg &vec) const { + if (is_empty()) { val.assign(); vec.assign(); } + else { + if (_width!=_height || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "eigen(): Instance is not a square matrix.", + cimg_instance); + + if (val.size()<(ulongT)_width) val.assign(1,_width); + if (vec.size()<(ulongT)_width*_width) vec.assign(_width,_width); + switch (_width) { + case 1 : { val[0] = (t)(*this)[0]; vec[0] = (t)1; } break; + case 2 : { + const double a = (*this)[0], b = (*this)[1], c = (*this)[2], d = (*this)[3], e = a + d; + double f = e*e - 4*(a*d - b*c); + if (f<0) cimg::warn(_cimg_instance + "eigen(): Complex eigenvalues found.", + cimg_instance); + f = std::sqrt(f); + const double + l1 = 0.5*(e - f), + l2 = 0.5*(e + f), + b2 = b*b, + norm1 = std::sqrt(cimg::sqr(l2 - a) + b2), + norm2 = std::sqrt(cimg::sqr(l1 - a) + b2); + val[0] = (t)l2; + val[1] = (t)l1; + if (norm1>0) { vec(0,0) = (t)(b/norm1); vec(0,1) = (t)((l2 - a)/norm1); } else { vec(0,0) = 1; vec(0,1) = 0; } + if (norm2>0) { vec(1,0) = (t)(b/norm2); vec(1,1) = (t)((l1 - a)/norm2); } else { vec(1,0) = 1; vec(1,1) = 0; } + } break; + default : + throw CImgInstanceException(_cimg_instance + "eigen(): Eigenvalues computation of general matrices is limited " + "to 2x2 matrices.", + cimg_instance); + } + } + return *this; + } + + //! Compute eigenvalues and eigenvectors of the instance image, viewed as a matrix. + /** + \return A list of two images [val; vec], whose meaning is similar as in eigen(CImg&,CImg&) const. + **/ + CImgList get_eigen() const { + CImgList res(2); + eigen(res[0],res[1]); + return res; + } + + //! Compute eigenvalues and eigenvectors of the instance image, viewed as a symmetric matrix. + /** + \param[out] val Vector of the estimated eigenvalues, in decreasing order. + \param[out] vec Matrix of the estimated eigenvectors, sorted by columns. + **/ + template + const CImg& symmetric_eigen(CImg& val, CImg& vec) const { + if (is_empty()) { val.assign(); vec.assign(); return *this; } + if (_width!=_height || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "eigen(): Instance is not a square matrix.", + cimg_instance); + val.assign(1,_width); + vec.assign(_width,_width); + + if (_width==1) { val[0] = cimg::abs((*this)[0]); vec[0] = 1; return *this; } + if (_width==2) { + const double + a = (*this)[0], b = (*this)[1], c = (*this)[2], d = (*this)[3], + e = a + d, f = std::sqrt(std::max(e*e - 4*(a*d - b*c),0.0)), + l1 = 0.5*(e - f), l2 = 0.5*(e + f), + n = std::sqrt(cimg::sqr(l2 - a) + b*b); + val[0] = (t)l2; + val[1] = (t)l1; + if (n>0) { vec[0] = (t)(b/n); vec[2] = (t)((l2 - a)/n); } else { vec[0] = 1; vec[2] = 0; } + vec[1] = -vec[2]; + vec[3] = vec[0]; + return *this; + } + +#ifdef cimg_use_lapack + char JOB = 'V', UPLO = 'U'; + int N = _width, LWORK = 4*N, INFO; + Tfloat + *const lapA = new Tfloat[N*N], + *const lapW = new Tfloat[N], + *const WORK = new Tfloat[LWORK]; + cimg_forXY(*this,k,l) lapA[k*N + l] = (Tfloat)((*this)(k,l)); + cimg::syev(JOB,UPLO,N,lapA,lapW,WORK,LWORK,INFO); + if (INFO) + cimg::warn(_cimg_instance + "symmetric_eigen(): LAPACK library function dsyev_() returned error code %d.", + cimg_instance, + INFO); + if (!INFO) { + cimg_forY(val,i) val(i) = (T)lapW[N - 1 -i]; + cimg_forXY(vec,k,l) vec(k,l) = (T)(lapA[(N - 1 - k)*N + l]); + } else { val.fill(0); vec.fill(0); } + delete[] lapA; delete[] lapW; delete[] WORK; + +#else + CImg V(_width,_width); + Tfloat M = 0, m = (Tfloat)min_max(M), maxabs = cimg::max((Tfloat)1,cimg::abs(m),cimg::abs(M)); + (CImg(*this,false)/=maxabs).SVD(vec,val,V,false); + if (maxabs!=1) val*=maxabs; + + bool is_ambiguous = false; + float eig = 0; + cimg_forY(val,p) { // Check for ambiguous cases + if (val[p]>eig) eig = (float)val[p]; + t scal = 0; + cimg_forY(vec,y) scal+=vec(p,y)*V(p,y); + if (cimg::abs(scal)<0.9f) is_ambiguous = true; + if (scal<0) val[p] = -val[p]; + } + if (is_ambiguous) { + ++(eig*=2); + SVD(vec,val,V,false,40,eig); + val-=eig; + } + + CImg permutations; // Sort eigenvalues in decreasing order + CImg tmp(_width); + val.sort(permutations,false); + cimg_forY(vec,k) { + cimg_forY(permutations,y) tmp(y) = vec(permutations(y),k); + std::memcpy(vec.data(0,k),tmp._data,sizeof(t)*_width); + } +#endif + return *this; + } + + //! Compute eigenvalues and eigenvectors of the instance image, viewed as a symmetric matrix. + /** + \return A list of two images [val; vec], whose meaning are similar as in + symmetric_eigen(CImg&,CImg&) const. + **/ + CImgList get_symmetric_eigen() const { + CImgList res(2); + symmetric_eigen(res[0],res[1]); + return res; + } + + //! Sort pixel values and get sorting permutations. + /** + \param[out] permutations Permutation map used for the sorting. + \param is_increasing Tells if pixel values are sorted in an increasing (\c true) or decreasing (\c false) way. + **/ + template + CImg& sort(CImg& permutations, const bool is_increasing=true) { + permutations.assign(_width,_height,_depth,_spectrum); + if (is_empty()) return *this; + cimg_foroff(permutations,off) permutations[off] = (t)off; + return _quicksort(0,size() - 1,permutations,is_increasing,true); + } + + //! Sort pixel values and get sorting permutations \newinstance. + template + CImg get_sort(CImg& permutations, const bool is_increasing=true) const { + return (+*this).sort(permutations,is_increasing); + } + + //! Sort pixel values. + /** + \param is_increasing Tells if pixel values are sorted in an increasing (\c true) or decreasing (\c false) way. + \param axis Tells if the value sorting must be done along a specific axis. Can be: + - \c 0: All pixel values are sorted, independently on their initial position. + - \c 'x': Image columns are sorted, according to the first value in each column. + - \c 'y': Image rows are sorted, according to the first value in each row. + - \c 'z': Image slices are sorted, according to the first value in each slice. + - \c 'c': Image channels are sorted, according to the first value in each channel. + **/ + CImg& sort(const bool is_increasing=true, const char axis=0) { + if (is_empty()) return *this; + CImg perm; + switch (cimg::lowercase(axis)) { + case 0 : + _quicksort(0,size() - 1,perm,is_increasing,false); + break; + case 'x' : { + perm.assign(_width); + get_crop(0,0,0,0,_width - 1,0,0,0).sort(perm,is_increasing); + CImg img(*this,false); + cimg_forXYZC(*this,x,y,z,c) (*this)(x,y,z,c) = img(perm[x],y,z,c); + } break; + case 'y' : { + perm.assign(_height); + get_crop(0,0,0,0,0,_height - 1,0,0).sort(perm,is_increasing); + CImg img(*this,false); + cimg_forXYZC(*this,x,y,z,c) (*this)(x,y,z,c) = img(x,perm[y],z,c); + } break; + case 'z' : { + perm.assign(_depth); + get_crop(0,0,0,0,0,0,_depth - 1,0).sort(perm,is_increasing); + CImg img(*this,false); + cimg_forXYZC(*this,x,y,z,c) (*this)(x,y,z,c) = img(x,y,perm[z],c); + } break; + case 'c' : { + perm.assign(_spectrum); + get_crop(0,0,0,0,0,0,0,_spectrum - 1).sort(perm,is_increasing); + CImg img(*this,false); + cimg_forXYZC(*this,x,y,z,c) (*this)(x,y,z,c) = img(x,y,z,perm[c]); + } break; + default : + throw CImgArgumentException(_cimg_instance + "sort(): Invalid specified axis '%c' " + "(should be { x | y | z | c }).", + cimg_instance,axis); + } + return *this; + } + + //! Sort pixel values \newinstance. + CImg get_sort(const bool is_increasing=true, const char axis=0) const { + return (+*this).sort(is_increasing,axis); + } + + template + CImg& _quicksort(const long indm, const long indM, CImg& permutations, + const bool is_increasing, const bool is_permutations) { + if (indm(*this)[mid]) { + cimg::swap((*this)[indm],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indm],permutations[mid]); + } + if ((*this)[mid]>(*this)[indM]) { + cimg::swap((*this)[indM],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indM],permutations[mid]); + } + if ((*this)[indm]>(*this)[mid]) { + cimg::swap((*this)[indm],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indm],permutations[mid]); + } + } else { + if ((*this)[indm]<(*this)[mid]) { + cimg::swap((*this)[indm],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indm],permutations[mid]); + } + if ((*this)[mid]<(*this)[indM]) { + cimg::swap((*this)[indM],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indM],permutations[mid]); + } + if ((*this)[indm]<(*this)[mid]) { + cimg::swap((*this)[indm],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indm],permutations[mid]); + } + } + if (indM - indm>=3) { + const T pivot = (*this)[mid]; + long i = indm, j = indM; + if (is_increasing) { + do { + while ((*this)[i]pivot) --j; + if (i<=j) { + if (is_permutations) cimg::swap(permutations[i],permutations[j]); + cimg::swap((*this)[i++],(*this)[j--]); + } + } while (i<=j); + } else { + do { + while ((*this)[i]>pivot) ++i; + while ((*this)[j] A; // Input matrix (assumed to contain some values) + CImg<> U,S,V; + A.SVD(U,S,V) + \endcode + **/ + template + const CImg& SVD(CImg& U, CImg& S, CImg& V, const bool sorting=true, + const unsigned int max_iteration=40, const float lambda=0) const { + typedef _cimg_Ttfloat Ttfloat; + const Ttfloat epsilon = (Ttfloat)1e-25; + + if (is_empty()) { U.assign(); S.assign(); V.assign(); } + else if (_depth!=1 || _spectrum!=1) + throw CImgInstanceException(_cimg_instance + "SVD(): Instance has invalid dimensions (depth or channels different from 1).", + cimg_instance); + else { + U = *this; + if (lambda!=0) { + const unsigned int delta = std::min(U._width,U._height); + for (unsigned int i = 0; i rv1(_width); + Ttfloat anorm = 0, c, f, g = 0, h, s, scale = 0; + int l = 0; + + cimg_forX(U,i) { + l = i + 1; + rv1[i] = scale*g; + g = s = scale = 0; + if (i=0?-1:1)*std::sqrt(s)); + h = f*g - s; + U(i,i) = f - g; + for (int j = l; j=0?-1:1)*std::sqrt(s)); + h = f*g - s; + U(l,i) = f - g; + for (int k = l; k=0; --i) { + if (i=0; --i) { + l = i + 1; + g = S[i]; + for (int j = l; j=0; --k) { + int nm = 0; + for (unsigned int its = 0; its=1; --l) { + nm = l - 1; + if ((cimg::abs(rv1[l]) + anorm)==anorm) { flag = false; break; } + if ((cimg::abs(S[nm]) + anorm)==anorm) break; + } + if (flag) { + c = 0; + s = 1; + for (int i = l; i<=k; ++i) { + f = s*rv1[i]; + rv1[i] = c*rv1[i]; + if ((cimg::abs(f) + anorm)==anorm) break; + g = S[i]; + h = cimg::_hypot(f,g); + S[i] = h; + h = 1/h; + c = g*h; + s = -f*h; + cimg_forY(U,j) { + const t y = U(nm,j), z = U(i,j); + U(nm,j) = y*c + z*s; + U(i,j) = z*c - y*s; + } + } + } + + const t z = S[k]; + if (l==k) { if (z<0) { S[k] = -z; cimg_forX(U,j) V(k,j) = -V(k,j); } break; } + nm = k - 1; + t x = S[l], y = S[nm]; + g = rv1[nm]; + h = rv1[k]; + f = ((y - z)*(y + z) + (g - h)*(g + h))/std::max(epsilon,(Ttfloat)2*h*y); + g = cimg::_hypot(f,(Ttfloat)1); + f = ((x - z)*(x + z) + h*((y/(f + (f>=0?g:-g))) - h))/std::max(epsilon,(Ttfloat)x); + c = s = 1; + for (int j = l; j<=nm; ++j) { + const int i = j + 1; + g = rv1[i]; + h = s*g; + g = c*g; + t y1 = S[i], z1 = cimg::_hypot(f,h); + rv1[j] = z1; + c = f/std::max(epsilon,(Ttfloat)z1); + s = h/std::max(epsilon,(Ttfloat)z1); + f = x*c + g*s; + g = g*c - x*s; + h = y1*s; + y1*=c; + cimg_forX(U,jj) { + const t x2 = V(j,jj), z2 = V(i,jj); + V(j,jj) = x2*c + z2*s; + V(i,jj) = z2*c - x2*s; + } + z1 = cimg::_hypot(f,h); + S[j] = z1; + if (z1) { + z1 = 1/std::max(epsilon,(Ttfloat)z1); + c = f*z1; + s = h*z1; + } + f = c*g + s*y1; + x = c*y1 - s*g; + cimg_forY(U,jj) { + const t y2 = U(j,jj), z2 = U(i,jj); + U(j,jj) = y2*c + z2*s; + U(i,jj) = z2*c - y2*s; + } + } + rv1[l] = 0; + rv1[k] = f; + S[k] = x; + } + } + + if (sorting) { + CImg permutations; + CImg tmp(_width); + S.sort(permutations,false); + cimg_forY(U,k) { + cimg_forY(permutations,y) tmp(y) = U(permutations(y),k); + std::memcpy(U.data(0,k),tmp._data,sizeof(t)*_width); + } + cimg_forY(V,k) { + cimg_forY(permutations,y) tmp(y) = V(permutations(y),k); + std::memcpy(V.data(0,k),tmp._data,sizeof(t)*_width); + } + } + } + return *this; + } + + //! Compute the SVD of the instance image, viewed as a general matrix. + /** + \return A list of three images [U; S; V], whose meaning is similar as in + SVD(CImg&,CImg&,CImg&,bool,unsigned int,float) const. + **/ + CImgList get_SVD(const bool sorting=true, + const unsigned int max_iteration=40, const float lambda=0) const { + CImgList res(3); + SVD(res[0],res[1],res[2],sorting,max_iteration,lambda); + return res; + } + + // [internal] Compute the LU decomposition of a permuted matrix. + template + CImg& _LU(CImg& indx, bool& d) { + const int N = width(); + int imax = 0; + CImg vv(N); + indx.assign(N); + d = true; + + bool return0 = false; + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=512)) + cimg_forX(*this,i) { + Tfloat vmax = 0; + cimg_forX(*this,j) { + const Tfloat tmp = cimg::abs((*this)(j,i)); + if (tmp>vmax) vmax = tmp; + } + if (vmax==0) return0 = true; else vv[i] = 1/vmax; + } + if (return0) { indx.fill(0); return fill(0); } + + cimg_forX(*this,j) { + for (int i = 0; i=vmax) { vmax = tmp; imax = i; } + } + if (j!=imax) { + cimg_forX(*this,k) cimg::swap((*this)(k,imax),(*this)(k,j)); + d = !d; + vv[imax] = vv[j]; + } + indx[j] = (t)imax; + if ((*this)(j,j)==0) (*this)(j,j) = (T)1e-20; + if (j=3 = orthogonal matching pursuit where an orthogonal projection step is performed + every 'method-2' iterations. + \param max_iter Sets the max number of iterations processed for each signal. + If set to '0' (default), 'max_iter' is set to the number of dictionary columns. + (only meaningful for matching pursuit and its variants). + \param max_residual Gives a stopping criterion on signal reconstruction accuracy. + (only meaningful for matching pursuit and its variants). + \return A matrix W whose columns correspond to the sparse weights of associated to each input matrix column. + Thus, the matrix product D*W is an approximation of the input matrix. + **/ + template + CImg& project_matrix(const CImg& dictionary, const unsigned int method=0, + const unsigned int max_iter=0, const double max_residual=1e-6) { + return get_project_matrix(dictionary,method,max_iter,max_residual).move_to(*this); + } + + template + CImg get_project_matrix(const CImg& dictionary, const unsigned int method=0, + const unsigned int max_iter=0, const double max_residual=1e-6) const { + if (_depth!=1 || _spectrum!=1) + throw CImgInstanceException(_cimg_instance + "project_matrix(): Instance image is not a matrix.", + cimg_instance); + if (dictionary._height!=_height || dictionary._depth!=1 || dictionary._spectrum!=1) + throw CImgArgumentException(_cimg_instance + "project_matrix(): Specified dictionary (%u,%u,%u,%u) has an invalid size.", + cimg_instance, + dictionary._width,dictionary._height,dictionary._depth,dictionary._spectrum); + + if (!method) return get_solve(dictionary,true); + CImg W(_width,dictionary._width,1,1,0); + + // Compute dictionary norm and normalize it. + CImg D(dictionary,false), Dnorm(D._width); + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=2 && _width*_height>=32)) + cimg_forX(Dnorm,d) { + Tfloat norm = 0; + cimg_forY(D,y) norm+=cimg::sqr(D(d,y)); + Dnorm[d] = std::max((Tfloat)1e-8,std::sqrt(norm)); + } + cimg_forXY(D,d,y) D(d,y)/=Dnorm[d]; + + // Matching pursuit. + const unsigned int proj_step = method<3?1:method - 2; + bool is_orthoproj = false; + + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=2 && _width*_height>=32)) + cimg_forX(*this,x) { + CImg S = get_column(x); + const CImg S0 = method<2?CImg():S; + Tfloat residual = S.magnitude()/S._height; + const unsigned int nmax = max_iter?max_iter:D._width; + + for (unsigned int n = 0; nmax_residual; ++n) { + + // Find best matching column in D. + int dmax = 0; + Tfloat absdotmax = 0, dotmax = 0; + cimg_pragma_openmp(parallel for cimg_openmp_if(D._width>=2 && D._width*D._height>=32)) + cimg_forX(D,d) { + Tfloat _dot = 0; + cimg_forY(D,y) _dot+=S[y]*D(d,y); + Tfloat absdot = cimg::abs(_dot); + cimg_pragma_openmp(critical(get_project_matrix)) { + if (absdot>absdotmax) { + absdotmax = absdot; + dotmax = _dot; + dmax = d; + } + } + } + + if (!n || method<3 || n%proj_step) { + // Matching Pursuit: Subtract component to signal. + W(x,dmax)+=dotmax; + residual = 0; + cimg_forY(S,y) { + S[y]-=dotmax*D(dmax,y); + residual+=cimg::sqr(S[y]); + } + residual = std::sqrt(residual)/S._height; + is_orthoproj = false; + + } else { + // Orthogonal Matching Pursuit: Orthogonal projection step. + W(x,dmax) = 1; // Used as a marker only. + unsigned int nbW = 0; + cimg_forY(W,d) if (W(x,d)) ++nbW; + CImg sD(nbW,D._height); + CImg inds(nbW); + int sd = 0; + cimg_forY(W,d) if (W(x,d)) { + cimg_forY(sD,y) sD(sd,y) = D(d,y); + inds[sd++] = d; + } + S0.get_solve(sD,true).move_to(sD); // sD is now a one-column vector of weights + + // Recompute residual signal. + S = S0; + cimg_forY(sD,k) { + const Tfloat weight = sD[k]; + const unsigned int ind = inds[k]; + W(x,ind) = weight; + cimg_forY(S,y) S[y]-=weight*D(ind,y); + } + residual = S.magnitude()/S._height; + is_orthoproj = true; + } + } + + // Perform last orthoprojection step if needed. + if (method>=2 && !is_orthoproj) { + unsigned int nbW = 0; + cimg_forY(W,d) if (W(x,d)) ++nbW; + if (nbW) { // Avoid degenerated case where 0 coefs are used + CImg sD(nbW,D._height); + CImg inds(nbW); + int sd = 0; + cimg_forY(W,d) if (W(x,d)) { + cimg_forY(sD,y) sD(sd,y) = D(d,y); + inds[sd++] = d; + } + S0.get_solve(sD,true).move_to(sD); + cimg_forY(sD,k) W(x,inds[k]) = sD[k]; + } + } + } + + // Normalize resulting coefficients according to initial (non-normalized) dictionary. + cimg_forXY(W,x,y) W(x,y)/=Dnorm[y]; + return W; + } + + //! Compute minimal path in a graph, using the Dijkstra algorithm. + /** + \param distance An object having operator()(unsigned int i, unsigned int j) which returns distance + between two nodes (i,j). + \param nb_nodes Number of graph nodes. + \param starting_node Index of the starting node. + \param ending_node Index of the ending node (set to ~0U to ignore ending node). + \param previous_node Array that gives the previous node index in the path to the starting node + (optional parameter). + \return Array of distances of each node to the starting node. + **/ + template + static CImg dijkstra(const tf& distance, const unsigned int nb_nodes, + const unsigned int starting_node, const unsigned int ending_node, + CImg& previous_node) { + if (starting_node>=nb_nodes) + throw CImgArgumentException("CImg<%s>::dijkstra(): Specified index of starting node %u is higher " + "than number of nodes %u.", + pixel_type(),starting_node,nb_nodes); + CImg dist(1,nb_nodes,1,1,cimg::type::max()); + dist(starting_node) = 0; + previous_node.assign(1,nb_nodes,1,1,(t)-1); + previous_node(starting_node) = (t)starting_node; + CImg Q(nb_nodes); + cimg_forX(Q,u) Q(u) = (unsigned int)u; + cimg::swap(Q(starting_node),Q(0)); + unsigned int sizeQ = nb_nodes; + while (sizeQ) { + // Update neighbors from minimal vertex + const unsigned int umin = Q(0); + if (umin==ending_node) sizeQ = 0; + else { + const T dmin = dist(umin); + const T infty = cimg::type::max(); + for (unsigned int q = 1; qdist(Q(left))) || + (rightdist(Q(right)));) { + if (right + static CImg dijkstra(const tf& distance, const unsigned int nb_nodes, + const unsigned int starting_node, const unsigned int ending_node=~0U) { + CImg foo; + return dijkstra(distance,nb_nodes,starting_node,ending_node,foo); + } + + //! Return minimal path in a graph, using the Dijkstra algorithm. + /** + \param starting_node Index of the starting node. + \param ending_node Index of the ending node. + \param previous_node Array that gives the previous node index in the path to the starting node + (optional parameter). + \return Array of distances of each node to the starting node. + \note image instance corresponds to the adjacency matrix of the graph. + **/ + template + CImg& dijkstra(const unsigned int starting_node, const unsigned int ending_node, + CImg& previous_node) { + return get_dijkstra(starting_node,ending_node,previous_node).move_to(*this); + } + + //! Return minimal path in a graph, using the Dijkstra algorithm \newinstance. + template + CImg get_dijkstra(const unsigned int starting_node, const unsigned int ending_node, + CImg& previous_node) const { + if (_width!=_height || _depth!=1 || _spectrum!=1) + throw CImgInstanceException(_cimg_instance + "dijkstra(): Instance is not a graph adjacency matrix.", + cimg_instance); + + return dijkstra(*this,_width,starting_node,ending_node,previous_node); + } + + //! Return minimal path in a graph, using the Dijkstra algorithm. + CImg& dijkstra(const unsigned int starting_node, const unsigned int ending_node=~0U) { + return get_dijkstra(starting_node,ending_node).move_to(*this); + } + + //! Return minimal path in a graph, using the Dijkstra algorithm \newinstance. + CImg get_dijkstra(const unsigned int starting_node, const unsigned int ending_node=~0U) const { + CImg foo; + return get_dijkstra(starting_node,ending_node,foo); + } + + //! Return an image containing the character codes of specified string. + /** + \param str input C-string to encode as an image. + \param is_last_zero Tells if the ending \c '0' character appear in the resulting image. + \param is_shared Return result that shares its buffer with \p str. + **/ + static CImg string(const char *const str, const bool is_last_zero=true, const bool is_shared=false) { + if (!str) return CImg(); + return CImg(str,(unsigned int)std::strlen(str) + (is_last_zero?1:0),1,1,1,is_shared); + } + + //! Return a \c 1x1 image containing specified value. + /** + \param a0 First vector value. + **/ + static CImg row_vector(const T& a0) { + return vector(a0); + } + + //! Return a \c 2x1 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + **/ + static CImg row_vector(const T& a0, const T& a1) { + CImg r(2,1); + r[0] = a0; r[1] = a1; + return r; + } + + //! Return a \c 3x1 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + \param a2 Third vector value. + **/ + static CImg row_vector(const T& a0, const T& a1, const T& a2) { + CImg r(3,1); + r[0] = a0; r[1] = a1; r[2] = a2; + return r; + } + + //! Return a \c 4x1 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + \param a2 Third vector value. + \param a3 Fourth vector value. + **/ + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3) { + CImg r(4,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; + return r; + } + + //! Return a \c 5x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4) { + CImg r(5,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; + return r; + } + + //! Return a \c 6x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4, const T& a5) { + CImg r(6,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; + return r; + } + + //! Return a \c 7x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6) { + CImg r(7,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; + return r; + } + + //! Return a \c 8x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7) { + CImg r(8,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; + return r; + } + + //! Return a \c 9x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8) { + CImg r(9,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; + return r; + } + + //! Return a \c 10x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9) { + CImg r(10,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + return r; + } + + //! Return a \c 11x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10) { + CImg r(11,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; + return r; + } + + //! Return a \c 12x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11) { + CImg r(12,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; + return r; + } + + //! Return a \c 13x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12) { + CImg r(13,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; + return r; + } + + //! Return a \c 14x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13) { + CImg r(14,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; + return r; + } + + //! Return a \c 15x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13, const T& a14) { + CImg r(15,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; r[14] = a14; + return r; + } + + //! Return a \c 16x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13, const T& a14, const T& a15) { + CImg r(16,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; r[14] = a14; r[15] = a15; + return r; + } + + //! Return a \c 1x1 image containing specified value. + /** + \param a0 First vector value. + **/ + static CImg vector(const T& a0) { + CImg r(1,1); + r[0] = a0; + return r; + } + + //! Return a \c 1x2 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + **/ + static CImg vector(const T& a0, const T& a1) { + CImg r(1,2); + r[0] = a0; r[1] = a1; + return r; + } + + //! Return a \c 1x3 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + \param a2 Third vector value. + **/ + static CImg vector(const T& a0, const T& a1, const T& a2) { + CImg r(1,3); + r[0] = a0; r[1] = a1; r[2] = a2; + return r; + } + + //! Return a \c 1x4 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + \param a2 Third vector value. + \param a3 Fourth vector value. + **/ + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3) { + CImg r(1,4); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; + return r; + } + + //! Return a \c 1x5 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4) { + CImg r(1,5); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; + return r; + } + + //! Return a \c 1x6 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4, const T& a5) { + CImg r(1,6); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; + return r; + } + + //! Return a \c 1x7 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6) { + CImg r(1,7); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; + return r; + } + + //! Return a \c 1x8 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7) { + CImg r(1,8); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; + return r; + } + + //! Return a \c 1x9 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8) { + CImg r(1,9); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; + return r; + } + + //! Return a \c 1x10 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9) { + CImg r(1,10); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + return r; + } + + //! Return a \c 1x11 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10) { + CImg r(1,11); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; + return r; + } + + //! Return a \c 1x12 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11) { + CImg r(1,12); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; + return r; + } + + //! Return a \c 1x13 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12) { + CImg r(1,13); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; + return r; + } + + //! Return a \c 1x14 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13) { + CImg r(1,14); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; + return r; + } + + //! Return a \c 1x15 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13, const T& a14) { + CImg r(1,15); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; r[14] = a14; + return r; + } + + //! Return a \c 1x16 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13, const T& a14, const T& a15) { + CImg r(1,16); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; r[14] = a14; r[15] = a15; + return r; + } + + //! Return a 1x1 matrix containing specified coefficients. + /** + \param a0 First matrix value. + \note Equivalent to vector(const T&). + **/ + static CImg matrix(const T& a0) { + return vector(a0); + } + + //! Return a 2x2 matrix containing specified coefficients. + /** + \param a0 First matrix value. + \param a1 Second matrix value. + \param a2 Third matrix value. + \param a3 Fourth matrix value. + **/ + static CImg matrix(const T& a0, const T& a1, + const T& a2, const T& a3) { + CImg r(2,2); T *ptr = r._data; + *(ptr++) = a0; *(ptr++) = a1; + *(ptr++) = a2; *(ptr++) = a3; + return r; + } + + //! Return a 3x3 matrix containing specified coefficients. + /** + \param a0 First matrix value. + \param a1 Second matrix value. + \param a2 Third matrix value. + \param a3 Fourth matrix value. + \param a4 Fifth matrix value. + \param a5 Sixth matrix value. + \param a6 Seventh matrix value. + \param a7 Eighth matrix value. + \param a8 Ninth matrix value. + **/ + static CImg matrix(const T& a0, const T& a1, const T& a2, + const T& a3, const T& a4, const T& a5, + const T& a6, const T& a7, const T& a8) { + CImg r(3,3); T *ptr = r._data; + *(ptr++) = a0; *(ptr++) = a1; *(ptr++) = a2; + *(ptr++) = a3; *(ptr++) = a4; *(ptr++) = a5; + *(ptr++) = a6; *(ptr++) = a7; *(ptr++) = a8; + return r; + } + + //! Return a 4x4 matrix containing specified coefficients. + static CImg matrix(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13, const T& a14, const T& a15) { + CImg r(4,4); T *ptr = r._data; + *(ptr++) = a0; *(ptr++) = a1; *(ptr++) = a2; *(ptr++) = a3; + *(ptr++) = a4; *(ptr++) = a5; *(ptr++) = a6; *(ptr++) = a7; + *(ptr++) = a8; *(ptr++) = a9; *(ptr++) = a10; *(ptr++) = a11; + *(ptr++) = a12; *(ptr++) = a13; *(ptr++) = a14; *(ptr++) = a15; + return r; + } + + //! Return a 5x5 matrix containing specified coefficients. + static CImg matrix(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4, + const T& a5, const T& a6, const T& a7, const T& a8, const T& a9, + const T& a10, const T& a11, const T& a12, const T& a13, const T& a14, + const T& a15, const T& a16, const T& a17, const T& a18, const T& a19, + const T& a20, const T& a21, const T& a22, const T& a23, const T& a24) { + CImg r(5,5); T *ptr = r._data; + *(ptr++) = a0; *(ptr++) = a1; *(ptr++) = a2; *(ptr++) = a3; *(ptr++) = a4; + *(ptr++) = a5; *(ptr++) = a6; *(ptr++) = a7; *(ptr++) = a8; *(ptr++) = a9; + *(ptr++) = a10; *(ptr++) = a11; *(ptr++) = a12; *(ptr++) = a13; *(ptr++) = a14; + *(ptr++) = a15; *(ptr++) = a16; *(ptr++) = a17; *(ptr++) = a18; *(ptr++) = a19; + *(ptr++) = a20; *(ptr++) = a21; *(ptr++) = a22; *(ptr++) = a23; *(ptr++) = a24; + return r; + } + + //! Return a 1x1 symmetric matrix containing specified coefficients. + /** + \param a0 First matrix value. + \note Equivalent to vector(const T&). + **/ + static CImg tensor(const T& a0) { + return matrix(a0); + } + + //! Return a 2x2 symmetric matrix tensor containing specified coefficients. + static CImg tensor(const T& a0, const T& a1, const T& a2) { + return matrix(a0,a1,a1,a2); + } + + //! Return a 3x3 symmetric matrix containing specified coefficients. + static CImg tensor(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4, const T& a5) { + return matrix(a0,a1,a2,a1,a3,a4,a2,a4,a5); + } + + //! Return a 1x1 diagonal matrix containing specified coefficients. + static CImg diagonal(const T& a0) { + return matrix(a0); + } + + //! Return a 2x2 diagonal matrix containing specified coefficients. + static CImg diagonal(const T& a0, const T& a1) { + return matrix(a0,0,0,a1); + } + + //! Return a 3x3 diagonal matrix containing specified coefficients. + static CImg diagonal(const T& a0, const T& a1, const T& a2) { + return matrix(a0,0,0,0,a1,0,0,0,a2); + } + + //! Return a 4x4 diagonal matrix containing specified coefficients. + static CImg diagonal(const T& a0, const T& a1, const T& a2, const T& a3) { + return matrix(a0,0,0,0,0,a1,0,0,0,0,a2,0,0,0,0,a3); + } + + //! Return a 5x5 diagonal matrix containing specified coefficients. + static CImg diagonal(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4) { + return matrix(a0,0,0,0,0,0,a1,0,0,0,0,0,a2,0,0,0,0,0,a3,0,0,0,0,0,a4); + } + + //! Return a NxN identity matrix. + /** + \param N Dimension of the matrix. + **/ + static CImg identity_matrix(const unsigned int N) { + CImg res(N,N,1,1,0); + cimg_forX(res,x) res(x,x) = 1; + return res; + } + + //! Return a N-numbered sequence vector from \p a0 to \p a1. + /** + \param N Size of the resulting vector. + \param a0 Starting value of the sequence. + \param a1 Ending value of the sequence. + **/ + static CImg sequence(const unsigned int N, const T& a0, const T& a1) { + if (N) return CImg(1,N).sequence(a0,a1); + return CImg(); + } + + //! Return a 3x3 rotation matrix from an { axis + angle } or a quaternion. + /** + \param x X-coordinate of the rotation axis, or first quaternion coordinate. + \param y Y-coordinate of the rotation axis, or second quaternion coordinate. + \param z Z-coordinate of the rotation axis, or third quaternion coordinate. + \param w Angle of the rotation axis (in degree), or fourth quaternion coordinate. + \param is_quaternion Tell is the four arguments denotes a set { axis + angle } or a quaternion (x,y,z,w). + **/ + static CImg rotation_matrix(const float x, const float y, const float z, const float w, + const bool is_quaternion=false) { + double X, Y, Z, W, N; + if (is_quaternion) { + N = std::sqrt((double)x*x + (double)y*y + (double)z*z + (double)w*w); + if (N>0) { X = x/N; Y = y/N; Z = z/N; W = w/N; } + else { X = Y = Z = 0; W = 1; } + return CImg::matrix((T)(X*X + Y*Y - Z*Z - W*W),(T)(2*Y*Z - 2*X*W),(T)(2*X*Z + 2*Y*W), + (T)(2*X*W + 2*Y*Z),(T)(X*X - Y*Y + Z*Z - W*W),(T)(2*Z*W - 2*X*Y), + (T)(2*Y*W - 2*X*Z),(T)(2*X*Y + 2*Z*W),(T)(X*X - Y*Y - Z*Z + W*W)); + } + N = cimg::hypot((double)x,(double)y,(double)z); + if (N>0) { X = x/N; Y = y/N; Z = z/N; } + else { X = Y = 0; Z = 1; } + const double ang = w*cimg::PI/180, c = std::cos(ang), omc = 1 - c, s = std::sin(ang); + return CImg::matrix((T)(X*X*omc + c),(T)(X*Y*omc - Z*s),(T)(X*Z*omc + Y*s), + (T)(X*Y*omc + Z*s),(T)(Y*Y*omc + c),(T)(Y*Z*omc - X*s), + (T)(X*Z*omc - Y*s),(T)(Y*Z*omc + X*s),(T)(Z*Z*omc + c)); + } + + //@} + //----------------------------------- + // + //! \name Value Manipulation + //@{ + //----------------------------------- + + //! Fill all pixel values with specified value. + /** + \param val Fill value. + **/ + CImg& fill(const T& val) { + if (is_empty()) return *this; + if (val && sizeof(T)!=1) cimg_for(*this,ptrd,T) *ptrd = val; + else std::memset(_data,(int)(ulongT)val,sizeof(T)*size()); // Double cast to allow val to be (void*) + return *this; + } + + //! Fill all pixel values with specified value \newinstance. + CImg get_fill(const T& val) const { + return CImg(_width,_height,_depth,_spectrum).fill(val); + } + + //! Fill sequentially all pixel values with specified values. + /** + \param val0 First fill value. + \param val1 Second fill value. + **/ + CImg& fill(const T& val0, const T& val1) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 1; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 2; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 3; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 4; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 5; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 6; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 7; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 8; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 9; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 10; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 11; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10, + val11); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 12; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10, + val11,val12); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 13; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10, + val11,val12,val13); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13, const T& val14) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 14; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13, const T& val14) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10, + val11,val12,val13,val14); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13, const T& val14, const T& val15) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 15; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13, const T& val14, const T& val15) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10, + val11,val12,val13,val14,val15); + } + + //! Fill sequentially pixel values according to a given expression. + /** + \param expression C-string describing a math formula, or a sequence of values. + \param repeat_values In case a list of values is provided, tells if this list must be repeated for the filling. + \param allow_formula Tells that mathematical formulas are authorized for the filling. + \param list_inputs In case of a mathematical expression, attach a list of images to the specified expression. + \param[out] list_outputs In case of a math expression, list of images atatched to the specified expression. + **/ + CImg& fill(const char *const expression, const bool repeat_values, const bool allow_formula=true, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) { + return _fill(expression,repeat_values,allow_formula?1:0,list_inputs,list_outputs,"fill",0); + } + + // 'formula_mode' = { 0 = does not allow formula | 1 = allow formula | + // 2 = allow formula and do not fill image values }. + CImg& _fill(const char *const expression, const bool repeat_values, const unsigned int formula_mode, + const CImgList *const list_inputs, CImgList *const list_outputs, + const char *const calling_function, const CImg *provides_copy) { + if (is_empty() || !expression || !*expression) return *this; + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + CImg is_error; + bool is_value_sequence = false; + cimg_abort_init; + + if (formula_mode) { + + // Try to pre-detect regular value sequence to avoid exception thrown by _cimg_math_parser. + double value; + char sep; + const int err = cimg_sscanf(expression,"%lf %c",&value,&sep); + if (err==1 || (err==2 && sep==',')) { + if (err==1) { if (formula_mode==2) return *this; return fill((T)value); } + else is_value_sequence = true; + } + + // Try to fill values according to a formula. + _cimg_abort_init_openmp; + if (!is_value_sequence) try { + CImg base = provides_copy?provides_copy->get_shared():get_shared(); + _cimg_math_parser mp(expression + (*expression=='>' || *expression=='<' || + *expression=='*' || *expression==':'), + calling_function,base,this,list_inputs,list_outputs,true); + if (!provides_copy && expression && *expression!='>' && *expression!='<' && *expression!=':' && + mp.need_input_copy) + base.assign().assign(*this,false); // Needs input copy + + // Determine 2nd largest image dimension (used as axis for inner loop in parallelized evaluation). + unsigned int M; + if (mp.result_dim) { + M = cimg::max(_width,_height,_depth); + M = M==_width?std::max(_height,_depth):M==_height?std::max(_width,_depth):std::max(_width,_height); + } else { + M = cimg::max(_width,_height,_depth,_spectrum); + M = M==_width?cimg::max(_height,_depth,_spectrum): + M==_height?cimg::max(_width,_depth,_spectrum): + M==_depth?cimg::max(_width,_height,_spectrum):cimg::max(_width,_height,_depth); + } + + bool do_in_parallel = false; +#if cimg_use_openmp!=0 + cimg_openmp_if(*expression=='*' || *expression==':' || + (mp.is_parallelizable && M>=(cimg_openmp_sizefactor)*320 && size()/M>=2)) + do_in_parallel = true; +#endif + if (mp.result_dim) { // Vector-valued expression + const unsigned int N = std::min(mp.result_dim,_spectrum); + const ulongT whd = (ulongT)_width*_height*_depth; + T *ptrd = *expression=='<'?_data + _width*_height*_depth - 1:_data; + if (*expression=='<') { + CImg res(1,mp.result_dim); + mp.begin_t(); + cimg_rofYZ(*this,y,z) { + cimg_abort_test; + if (formula_mode==2) cimg_rofX(*this,x) mp(x,y,z,0); + else cimg_rofX(*this,x) { + mp(x,y,z,0,res._data); + const double *ptrs = res._data; + T *_ptrd = ptrd--; for (unsigned int n = N; n>0; --n) { *_ptrd = (T)(*ptrs++); _ptrd+=whd; } + } + } + mp.end_t(); + + } else if (*expression=='>' || !do_in_parallel) { + CImg res(1,mp.result_dim); + mp.begin_t(); + cimg_forYZ(*this,y,z) { + cimg_abort_test; + if (formula_mode==2) cimg_forX(*this,x) mp(x,y,z,0); + else cimg_forX(*this,x) { + mp(x,y,z,0,res._data); + const double *ptrs = res._data; + T *_ptrd = ptrd++; for (unsigned int n = N; n>0; --n) { *_ptrd = (T)(*ptrs++); _ptrd+=whd; } + } + } + mp.end_t(); + + } else { + +#if cimg_use_openmp!=0 + unsigned int tid = 0; + cimg_pragma_openmp(parallel) + { + _cimg_math_parser *_mp = 0; + cimg_pragma_openmp(critical(_fill)) { _mp = !tid?&mp:new _cimg_math_parser(mp); ++tid; } + _cimg_math_parser &lmp = *_mp; + lmp.is_fill = true; + cimg_pragma_openmp(barrier) + lmp.begin_t(); + +#define _cimg_fill_openmp_vector(_YZ,_y,_z,_X,_x,_sx,_sy,_sz,_off) \ + cimg_pragma_openmp(for cimg_openmp_collapse(2)) \ + cimg_for##_YZ(*this,_y,_z) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + if (formula_mode==2) cimg_for##_X(*this,_x) lmp(x,y,z,0); \ + else { \ + CImg res(1,lmp.result_dim); \ + T *__ptrd = data(_sx,_sy,_sz,0); \ + const ulongT off = (ulongT)_off; \ + cimg_for##_X(*this,_x) { \ + lmp(x,y,z,0,res._data); \ + const double *ptrs = res._data; \ + T *_ptrd = __ptrd; \ + for (unsigned int n = N; n>0; --n) { *_ptrd = (T)(*ptrs++); _ptrd+=whd; } \ + __ptrd+=off; \ + } \ + } \ + } _cimg_abort_catch_openmp _cimg_abort_catch_fill_openmp + + if (M==_width) { _cimg_fill_openmp_vector(YZ,y,z,X,x,0,y,z,1) } + else if (M==_height) { _cimg_fill_openmp_vector(XZ,x,z,Y,y,x,0,z,_width) } + else { _cimg_fill_openmp_vector(XY,x,y,Z,z,x,y,0,_width*_height) } + + lmp.end_t(); + cimg_pragma_openmp(barrier) cimg_pragma_openmp(critical) { lmp.merge(mp); } + if (&lmp!=&mp) delete &lmp; + } +#endif + } + + } else { // Scalar-valued expression + T *ptrd = *expression=='<'?end() - 1:_data; + if (*expression=='<') { + mp.begin_t(); + if (formula_mode==2) cimg_rofYZC(*this,y,z,c) { cimg_abort_test; cimg_rofX(*this,x) mp(x,y,z,c); } + else cimg_rofYZC(*this,y,z,c) { cimg_abort_test; cimg_rofX(*this,x) *(ptrd--) = (T)mp(x,y,z,c); } + mp.end_t(); + + } else if (*expression=='>' || !do_in_parallel) { + mp.begin_t(); + if (formula_mode==2) cimg_forYZC(*this,y,z,c) { cimg_abort_test; cimg_forX(*this,x) mp(x,y,z,c); } + else cimg_forYZC(*this,y,z,c) { cimg_abort_test; cimg_forX(*this,x) *(ptrd++) = (T)mp(x,y,z,c); } + mp.end_t(); + + } else { + +#if cimg_use_openmp!=0 + unsigned int tid = 0; + cimg_pragma_openmp(parallel) + { + _cimg_math_parser *_mp = 0; + cimg_pragma_openmp(critical(_fill)) { _mp = !tid?&mp:new _cimg_math_parser(mp); ++tid; } + _cimg_math_parser &lmp = *_mp; + lmp.is_fill = true; + cimg_pragma_openmp(barrier) + lmp.begin_t(); + +#define _cimg_fill_openmp_scalar(_YZC,_y,_z,_c,_X,_x,_sx,_sy,_sz,_sc,_off) \ + cimg_pragma_openmp(for cimg_openmp_collapse(3)) \ + cimg_for##_YZC(*this,_y,_z,_c) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + if (formula_mode==2) cimg_for##_X(*this,_x) lmp(x,y,z,c); \ + else { \ + T *_ptrd = data(_sx,_sy,_sz,_sc); \ + const ulongT off = (ulongT)_off; \ + cimg_for##_X(*this,_x) { *_ptrd = (T)lmp(x,y,z,c); _ptrd+=off; } \ + } \ + } _cimg_abort_catch_openmp _cimg_abort_catch_fill_openmp + + if (M==_width) { _cimg_fill_openmp_scalar(YZC,y,z,c,X,x,0,y,z,c,1) } + else if (M==_height) { _cimg_fill_openmp_scalar(XZC,x,z,c,Y,y,x,0,z,c,_width) } + else if (M==_depth) { _cimg_fill_openmp_scalar(XYC,x,y,c,Z,z,x,y,0,c,_width*_height) } + else { _cimg_fill_openmp_scalar(XYZ,x,y,z,C,c,x,y,z,0,_width*_height*_depth) } + + lmp.end_t(); + cimg_pragma_openmp(barrier) cimg_pragma_openmp(critical) { lmp.merge(mp); } + if (&lmp!=&mp) delete &lmp; + } +#endif + } + } + mp.end(); + } catch (CImgException& e) { CImg::string(e._message).move_to(is_error); } + } + + // Try to fill values according to a value sequence. + if (!formula_mode || is_value_sequence || is_error) { + CImg item(256); + char sep = 0; + const char *nexpression = expression; + ulongT nb = 0; + const ulongT siz = size(); + T *ptrd = _data; + for (double val = 0; *nexpression && nb0 && cimg_sscanf(item,"%lf",&val)==1 && (sep==',' || sep==';' || err==1)) { + nexpression+=std::strlen(item) + (err>1); + *(ptrd++) = (T)val; + } else break; + } + cimg::exception_mode(omode); + if (nb get_fill(const char *const expression, const bool repeat_values, const bool allow_formula=true, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) const { + return (+*this).fill(expression,repeat_values,allow_formula?1:0,list_inputs,list_outputs); + } + + //! Fill sequentially pixel values according to the values found in another image. + /** + \param values Image containing the values used for the filling. + \param repeat_values In case there are less values than necessary in \c values, tells if these values must be + repeated for the filling. + **/ + template + CImg& fill(const CImg& values, const bool repeat_values=true) { + if (is_empty() || !values) return *this; + T *ptrd = _data, *ptre = ptrd + size(); + for (t *ptrs = values._data, *ptrs_end = ptrs + values.size(); ptrs + CImg get_fill(const CImg& values, const bool repeat_values=true) const { + return repeat_values?CImg(_width,_height,_depth,_spectrum).fill(values,repeat_values): + (+*this).fill(values,repeat_values); + } + + //! Fill pixel values along the X-axis at a specified pixel position. + /** + \param y Y-coordinate of the filled column. + \param z Z-coordinate of the filled column. + \param c C-coordinate of the filled column. + \param a0 First fill value. + **/ + CImg& fillX(const unsigned int y, const unsigned int z, const unsigned int c, const int a0, ...) { +#define _cimg_fill1(x,y,z,c,off,siz,t) { \ + va_list ap; va_start(ap,a0); T *ptrd = data(x,y,z,c); *ptrd = (T)a0; \ + for (unsigned int k = 1; k& fillX(const unsigned int y, const unsigned int z, const unsigned int c, const double a0, ...) { + if (y<_height && z<_depth && c<_spectrum) _cimg_fill1(0,y,z,c,1,_width,double); + return *this; + } + + //! Fill pixel values along the Y-axis at a specified pixel position. + /** + \param x X-coordinate of the filled row. + \param z Z-coordinate of the filled row. + \param c C-coordinate of the filled row. + \param a0 First fill value. + **/ + CImg& fillY(const unsigned int x, const unsigned int z, const unsigned int c, const int a0, ...) { + if (x<_width && z<_depth && c<_spectrum) _cimg_fill1(x,0,z,c,_width,_height,int); + return *this; + } + + //! Fill pixel values along the Y-axis at a specified pixel position \overloading. + CImg& fillY(const unsigned int x, const unsigned int z, const unsigned int c, const double a0, ...) { + if (x<_width && z<_depth && c<_spectrum) _cimg_fill1(x,0,z,c,_width,_height,double); + return *this; + } + + //! Fill pixel values along the Z-axis at a specified pixel position. + /** + \param x X-coordinate of the filled slice. + \param y Y-coordinate of the filled slice. + \param c C-coordinate of the filled slice. + \param a0 First fill value. + **/ + CImg& fillZ(const unsigned int x, const unsigned int y, const unsigned int c, const int a0, ...) { + const ulongT wh = (ulongT)_width*_height; + if (x<_width && y<_height && c<_spectrum) _cimg_fill1(x,y,0,c,wh,_depth,int); + return *this; + } + + //! Fill pixel values along the Z-axis at a specified pixel position \overloading. + CImg& fillZ(const unsigned int x, const unsigned int y, const unsigned int c, const double a0, ...) { + const ulongT wh = (ulongT)_width*_height; + if (x<_width && y<_height && c<_spectrum) _cimg_fill1(x,y,0,c,wh,_depth,double); + return *this; + } + + //! Fill pixel values along the C-axis at a specified pixel position. + /** + \param x X-coordinate of the filled channel. + \param y Y-coordinate of the filled channel. + \param z Z-coordinate of the filled channel. + \param a0 First filling value. + **/ + CImg& fillC(const unsigned int x, const unsigned int y, const unsigned int z, const int a0, ...) { + const ulongT whd = (ulongT)_width*_height*_depth; + if (x<_width && y<_height && z<_depth) _cimg_fill1(x,y,z,0,whd,_spectrum,int); + return *this; + } + + //! Fill pixel values along the C-axis at a specified pixel position \overloading. + CImg& fillC(const unsigned int x, const unsigned int y, const unsigned int z, const double a0, ...) { + const ulongT whd = (ulongT)_width*_height*_depth; + if (x<_width && y<_height && z<_depth) _cimg_fill1(x,y,z,0,whd,_spectrum,double); + return *this; + } + + //! Discard specified sequence of values in the image buffer, along a specific axis. + /** + \param values Sequence of values to discard. + \param axis Axis along which the values are discarded. If set to \c 0 (default value) + the method does it for all the buffer values and returns a one-column vector. + \note Discarded values will change the image geometry, so the resulting image + is returned as a one-column vector. + **/ + template + CImg& discard(const CImg& values, const char axis=0) { + if (is_empty() || !values) return *this; + return get_discard(values,axis).move_to(*this); + } + + template + CImg get_discard(const CImg& values, const char axis=0) const { + if (!values) return +*this; + CImg res; + if (is_empty()) return res; + const ulongT vsiz = values.size(); + const char _axis = cimg::lowercase(axis); + ulongT j = 0; + unsigned int k = 0; + int i0 = 0; + res.assign(width(),height(),depth(),spectrum()); + switch (_axis) { + case 'x' : { + cimg_forX(*this,i) { + if ((*this)(i)!=(T)values[j]) { + if (j) --i; + res.draw_image(k,get_columns(i0,i)); + k+=i - i0 + 1; i0 = i + 1; j = 0; + } else { ++j; if (j>=vsiz) { j = 0; i0 = i + 1; } } + } + if (i0=vsiz) { j = 0; i0 = i + 1; } } + } + if (i0=vsiz) { j = 0; i0 = i + 1; } } + } + if (i0=vsiz) { j = 0; i0 = i + 1; } } + } + if (i0=vsiz) { j = 0; i0 = (int)i + 1; }} + } + if ((ulongT)i0& discard(const char axis=0) { + return get_discard(axis).move_to(*this); + } + + //! Discard neighboring duplicates in the image buffer, along the specified axis \newinstance. + CImg get_discard(const char axis=0) const { + CImg res; + if (is_empty()) return res; + const char _axis = cimg::lowercase(axis); + T current = *_data?(T)0:(T)1; + int j = 0; + res.assign(width(),height(),depth(),spectrum()); + switch (_axis) { + case 'x' : { + cimg_forX(*this,i) + if ((*this)(i)!=current) { res.draw_image(j++,get_column(i)); current = (*this)(i); } + res.resize(j,-100,-100,-100,0); + } break; + case 'y' : { + cimg_forY(*this,i) + if ((*this)(0,i)!=current) { res.draw_image(0,j++,get_row(i)); current = (*this)(0,i); } + res.resize(-100,j,-100,-100,0); + } break; + case 'z' : { + cimg_forZ(*this,i) + if ((*this)(0,0,i)!=current) { res.draw_image(0,0,j++,get_slice(i)); current = (*this)(0,0,i); } + res.resize(-100,-100,j,-100,0); + } break; + case 'c' : { + cimg_forC(*this,i) + if ((*this)(0,0,0,i)!=current) { res.draw_image(0,0,0,j++,get_channel(i)); current = (*this)(0,0,0,i); } + res.resize(-100,-100,-100,j,0); + } break; + default : { + res.unroll('y'); + cimg_foroff(*this,i) { + const T val = (*this)[i]; + if (val!=current) res[j++] = current = val; + } + res.resize(-100,j,-100,-100,0); + } + } + return res; + } + + //! Invert endianness of all pixel values. + /** + **/ + CImg& invert_endianness() { + cimg::invert_endianness(_data,size()); + return *this; + } + + //! Invert endianness of all pixel values \newinstance. + CImg get_invert_endianness() const { + return (+*this).invert_endianness(); + } + + //! Fill image with random values in specified range. + /** + \param val_min Minimal authorized random value. + \param val_max Maximal authorized random value. + \note Random variables are uniformly distributed in [val_min,val_max]. + **/ + CImg& rand(const T& val_min, const T& val_max) { + const float delta = (float)val_max - (float)val_min + (cimg::type::is_float()?0:1); + if (cimg::type::is_float()) cimg_pragma_openmp(parallel cimg_openmp_if_size(size(),524288)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for) + cimg_rofoff(*this,off) _data[off] = (T)(val_min + delta*cimg::rand(1,&rng)); + cimg::srand(rng); + } else cimg_pragma_openmp(parallel cimg_openmp_if_size(size(),524288)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for) + cimg_rofoff(*this,off) _data[off] = std::min(val_max,(T)(val_min + delta*cimg::rand(1,&rng))); + cimg::srand(rng); + } + return *this; + } + + //! Fill image with random values in specified range \newinstance. + CImg get_rand(const T& val_min, const T& val_max) const { + return (+*this).rand(val_min,val_max); + } + + //! Round pixel values. + /** + \param y Rounding precision. + \param rounding_type Rounding type. Can be: + - \c -1: Backward. + - \c 0: Nearest. + - \c 1: Forward. + **/ + CImg& round(const double y=1, const int rounding_type=0) { + if (y>0) cimg_openmp_for(*this,cimg::round(*ptr,y,rounding_type),8192); + return *this; + } + + //! Round pixel values \newinstance. + CImg get_round(const double y=1, const unsigned int rounding_type=0) const { + return (+*this).round(y,rounding_type); + } + + //! Add random noise to pixel values. + /** + \param sigma Amplitude of the random additive noise. If \p sigma<0, it stands for a percentage of the + global value range. + \param noise_type Type of additive noise (can be \p 0=gaussian, \p 1=uniform, \p 2=Salt and Pepper, + \p 3=Poisson or \p 4=Rician). + \return A reference to the modified image instance. + \note + - For Poisson noise (\p noise_type=3), parameter \p sigma is ignored, as Poisson noise only depends on + the image value itself. + - Function \p CImg::get_noise() is also defined. It returns a non-shared modified copy of the image instance. + \par Example + \code + const CImg img("reference.jpg"), res = img.get_noise(40); + (img,res.normalize(0,255)).display(); + \endcode + \image html ref_noise.jpg + **/ + CImg& noise(const double sigma, const unsigned int noise_type=0) { + if (is_empty()) return *this; + const Tfloat vmin = (Tfloat)cimg::type::min(), vmax = (Tfloat)cimg::type::max(); + Tfloat nsigma = (Tfloat)sigma, m = 0, M = 0; + if (nsigma==0 && noise_type!=3) return *this; + if (nsigma<0 || noise_type==2) m = (Tfloat)min_max(M); + if (nsigma<0) nsigma = (Tfloat)(-nsigma*(M-m)/100.); + switch (noise_type) { + case 0 : { // Gaussian noise + cimg_pragma_openmp(parallel cimg_openmp_if_size(size(),131072)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for) + cimg_rofoff(*this,off) { + Tfloat val = (Tfloat)(_data[off] + nsigma*cimg::grand(&rng)); + if (val>vmax) val = vmax; + if (valvmax) val = vmax; + if (val::is_float()) { --m; ++M; } + else { m = (Tfloat)cimg::type::min(); M = (Tfloat)cimg::type::max(); } + } + cimg_pragma_openmp(parallel cimg_openmp_if_size(size(),131072)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for) + cimg_rofoff(*this,off) if (cimg::rand(100,&rng)vmax) val = vmax; + if (val get_noise(const double sigma, const unsigned int noise_type=0) const { + return (+*this).noise(sigma,noise_type); + } + + //! Linearly normalize pixel values. + /** + \param min_value Minimum desired value of the resulting image. + \param max_value Maximum desired value of the resulting image. + \param constant_case_ratio In case of instance image having a constant value, tell what ratio + of [min_value,max_value] is used to fill the normalized image + (=0 for min_value, =1 for max_value, =0.5 for (min_value + max_value)/2). + \par Example + \code + const CImg img("reference.jpg"), res = img.get_normalize(160,220); + (img,res).display(); + \endcode + \image html ref_normalize2.jpg + **/ + CImg& normalize(const T& min_value, const T& max_value, + const float constant_case_ratio=0) { + if (is_empty()) return *this; + const T a = min_value get_normalize(const T& min_value, const T& max_value, + const float ratio_if_constant_image=0) const { + return CImg(*this,false).normalize((Tfloat)min_value,(Tfloat)max_value,ratio_if_constant_image); + } + + //! Normalize multi-valued pixels of the image instance, with respect to their L2-norm. + /** + \par Example + \code + const CImg img("reference.jpg"), res = img.get_normalize(); + (img,res.normalize(0,255)).display(); + \endcode + \image html ref_normalize.jpg + **/ + CImg& normalize() { + const ulongT whd = (ulongT)_width*_height*_depth; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + T *ptrd = data(0,y,z,0); + cimg_forX(*this,x) { + const T *ptrs = ptrd; + float n = 0; + cimg_forC(*this,c) { n+=cimg::sqr((float)*ptrs); ptrs+=whd; } + n = (float)std::sqrt(n); + T *_ptrd = ptrd++; + if (n>0) cimg_forC(*this,c) { *_ptrd = (T)(*_ptrd/n); _ptrd+=whd; } + else cimg_forC(*this,c) { *_ptrd = (T)0; _ptrd+=whd; } + } + } + return *this; + } + + //! Normalize multi-valued pixels of the image instance, with respect to their L2-norm \newinstance. + CImg get_normalize() const { + return CImg(*this,false).normalize(); + } + + //! Compute Lp-norm of each multi-valued pixel of the image instance. + /** + \param norm_type Type of computed vector norm (can be \p -1=Linf, or \p greater or equal than 0). + \par Example + \code + const CImg img("reference.jpg"), res = img.get_norm(); + (img,res.normalize(0,255)).display(); + \endcode + \image html ref_norm.jpg + **/ + CImg& norm(const int norm_type=2) { + if (_spectrum==1 && norm_type) return abs(); + return get_norm(norm_type).move_to(*this); + } + + //! Compute L2-norm of each multi-valued pixel of the image instance \newinstance. + CImg get_norm(const int norm_type=2) const { + if (is_empty()) return *this; + if (_spectrum==1 && norm_type) return get_abs(); + const ulongT whd = (ulongT)_width*_height*_depth; + CImg res(_width,_height,_depth); + switch (norm_type) { + case -1 : { // Linf-norm + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + const ulongT off = (ulongT)offset(0,y,z); + const T *ptrs = _data + off; + Tfloat *ptrd = res._data + off; + cimg_forX(*this,x) { + Tfloat n = 0; + const T *_ptrs = ptrs++; + cimg_forC(*this,c) { const Tfloat val = (Tfloat)cimg::abs(*_ptrs); if (val>n) n = val; _ptrs+=whd; } + *(ptrd++) = n; + } + } + } break; + case 0 : { // L0-norm + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + const ulongT off = (ulongT)offset(0,y,z); + const T *ptrs = _data + off; + Tfloat *ptrd = res._data + off; + cimg_forX(*this,x) { + unsigned int n = 0; + const T *_ptrs = ptrs++; + cimg_forC(*this,c) { n+=*_ptrs==0?0:1; _ptrs+=whd; } + *(ptrd++) = (Tfloat)n; + } + } + } break; + case 1 : { // L1-norm + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + const ulongT off = (ulongT)offset(0,y,z); + const T *ptrs = _data + off; + Tfloat *ptrd = res._data + off; + cimg_forX(*this,x) { + Tfloat n = 0; + const T *_ptrs = ptrs++; + cimg_forC(*this,c) { n+=cimg::abs(*_ptrs); _ptrs+=whd; } + *(ptrd++) = n; + } + } + } break; + case 2 : { // L2-norm + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + const ulongT off = (ulongT)offset(0,y,z); + const T *ptrs = _data + off; + Tfloat *ptrd = res._data + off; + cimg_forX(*this,x) { + Tfloat n = 0; + const T *_ptrs = ptrs++; + cimg_forC(*this,c) { n+=cimg::sqr((Tfloat)*_ptrs); _ptrs+=whd; } + *(ptrd++) = (Tfloat)std::sqrt((Tfloat)n); + } + } + } break; + default : { // Linf-norm + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + const ulongT off = (ulongT)offset(0,y,z); + const T *ptrs = _data + off; + Tfloat *ptrd = res._data + off; + cimg_forX(*this,x) { + Tfloat n = 0; + const T *_ptrs = ptrs++; + cimg_forC(*this,c) { n+=std::pow(cimg::abs((Tfloat)*_ptrs),(Tfloat)norm_type); _ptrs+=whd; } + *(ptrd++) = (Tfloat)std::pow((Tfloat)n,1/(Tfloat)norm_type); + } + } + } + } + return res; + } + + //! Cut pixel values in specified range. + /** + \param min_value Minimum desired value of the resulting image. + \param max_value Maximum desired value of the resulting image. + \par Example + \code + const CImg img("reference.jpg"), res = img.get_cut(160,220); + (img,res).display(); + \endcode + \image html ref_cut.jpg + **/ + CImg& cut(const T& min_value, const T& max_value) { + if (is_empty()) return *this; + const T a = min_value get_cut(const T& min_value, const T& max_value) const { + return (+*this).cut(min_value,max_value); + } + + //! Uniformly quantize pixel values. + /** + \param nb_levels Number of quantization levels. + \param keep_range Tells if resulting values keep the same range as the original ones. + \par Example + \code + const CImg img("reference.jpg"), res = img.get_quantize(4); + (img,res).display(); + \endcode + \image html ref_quantize.jpg + **/ + CImg& quantize(const unsigned int nb_levels, const bool keep_range=true) { + if (!nb_levels) + throw CImgArgumentException(_cimg_instance + "quantize(): Invalid quantization request with 0 values.", + cimg_instance); + + if (is_empty()) return *this; + Tfloat m, M = (Tfloat)max_min(m), range = M - m; + if (range>0) { + if (keep_range) + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32768)) + cimg_rofoff(*this,off) { + const unsigned int val = (unsigned int)((_data[off] - m)*nb_levels/range); + _data[off] = (T)(m + std::min(val,nb_levels - 1)*range/nb_levels); + } else + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32768)) + cimg_rofoff(*this,off) { + const unsigned int val = (unsigned int)((_data[off] - m)*nb_levels/range); + _data[off] = (T)std::min(val,nb_levels - 1); + } + } + return *this; + } + + //! Uniformly quantize pixel values \newinstance. + CImg get_quantize(const unsigned int n, const bool keep_range=true) const { + return (+*this).quantize(n,keep_range); + } + + //! Threshold pixel values. + /** + \param value Threshold value + \param soft_threshold Tells if soft thresholding must be applied (instead of hard one). + \param strict_threshold Tells if threshold value is strict. + \par Example + \code + const CImg img("reference.jpg"), res = img.get_threshold(128); + (img,res.normalize(0,255)).display(); + \endcode + \image html ref_threshold.jpg + **/ + CImg& threshold(const T& value, const bool soft_threshold=false, const bool strict_threshold=false) { + if (is_empty()) return *this; + if (strict_threshold) { + if (soft_threshold) + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32768)) + cimg_rofoff(*this,off) { + const T v = _data[off]; + _data[off] = v>value?(T)(v-value):v<-(float)value?(T)(v + value):(T)0; + } + else + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),65536)) + cimg_rofoff(*this,off) _data[off] = _data[off]>value?(T)1:(T)0; + } else { + if (soft_threshold) + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32768)) + cimg_rofoff(*this,off) { + const T v = _data[off]; + _data[off] = v>=value?(T)(v-value):v<=-(float)value?(T)(v + value):(T)0; + } + else + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),65536)) + cimg_rofoff(*this,off) _data[off] = _data[off]>=value?(T)1:(T)0; + } + return *this; + } + + //! Threshold pixel values \newinstance. + CImg get_threshold(const T& value, const bool soft_threshold=false, const bool strict_threshold=false) const { + return (+*this).threshold(value,soft_threshold,strict_threshold); + } + + //! Compute the histogram of pixel values. + /** + \param nb_levels Number of desired histogram levels. + \param min_value Minimum pixel value considered for the histogram computation. + All pixel values lower than \p min_value will not be counted. + \param max_value Maximum pixel value considered for the histogram computation. + All pixel values higher than \p max_value will not be counted. + \note + - The histogram H of an image I is the 1D function where H(x) counts the number of occurrences of the value x + in the image I. + - The resulting histogram is always defined in 1D. Histograms of multi-valued images are not multi-dimensional. + \par Example + \code + const CImg img = CImg("reference.jpg").histogram(256); + img.display_graph(0,3); + \endcode + \image html ref_histogram.jpg + **/ + CImg& histogram(const unsigned int nb_levels, const T& min_value, const T& max_value) { + return get_histogram(nb_levels,min_value,max_value).move_to(*this); + } + + //! Compute the histogram of pixel values \overloading. + CImg& histogram(const unsigned int nb_levels) { + return get_histogram(nb_levels).move_to(*this); + } + + //! Compute the histogram of pixel values \newinstance. + CImg get_histogram(const unsigned int nb_levels, const T& min_value, const T& max_value) const { + if (!nb_levels || is_empty()) return CImg(); + const double + vmin = (double)(min_value res(nb_levels,1,1,1,0); + cimg_rof(*this,ptrs,T) { + const T val = *ptrs; + if (val>=vmin && val<=vmax) ++res[val==vmax?nb_levels - 1:(unsigned int)((val - vmin)*nb_levels/(vmax - vmin))]; + } + return res; + } + + //! Compute the histogram of pixel values \newinstance. + CImg get_histogram(const unsigned int nb_levels) const { + if (!nb_levels || is_empty()) return CImg(); + T vmax = 0, vmin = min_max(vmax); + return get_histogram(nb_levels,vmin,vmax); + } + + //! Equalize histogram of pixel values. + /** + \param nb_levels Number of histogram levels used for the equalization. + \param min_value Minimum pixel value considered for the histogram computation. + All pixel values lower than \p min_value will not be counted. + \param max_value Maximum pixel value considered for the histogram computation. + All pixel values higher than \p max_value will not be counted. + \par Example + \code + const CImg img("reference.jpg"), res = img.get_equalize(256); + (img,res).display(); + \endcode + \image html ref_equalize.jpg + **/ + CImg& equalize(const unsigned int nb_levels, const T& min_value, const T& max_value) { + if (!nb_levels || is_empty()) return *this; + const T + vmin = min_value hist = get_histogram(nb_levels,vmin,vmax); + ulongT cumul = 0; + cimg_forX(hist,pos) { cumul+=hist[pos]; hist[pos] = cumul; } + if (!cumul) cumul = 1; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),1048576)) + cimg_rofoff(*this,off) { + const int pos = (int)((_data[off] - vmin)*(nb_levels - 1.)/(vmax - vmin)); + if (pos>=0 && pos<(int)nb_levels) _data[off] = (T)(vmin + (vmax - vmin)*hist[pos]/cumul); + } + return *this; + } + + //! Equalize histogram of pixel values \overloading. + CImg& equalize(const unsigned int nb_levels) { + if (!nb_levels || is_empty()) return *this; + T vmax = 0, vmin = min_max(vmax); + return equalize(nb_levels,vmin,vmax); + } + + //! Equalize histogram of pixel values \newinstance. + CImg get_equalize(const unsigned int nblevels, const T& val_min, const T& val_max) const { + return (+*this).equalize(nblevels,val_min,val_max); + } + + //! Equalize histogram of pixel values \newinstance. + CImg get_equalize(const unsigned int nblevels) const { + return (+*this).equalize(nblevels); + } + + //! Index multi-valued pixels regarding to a specified colormap. + /** + \param colormap Multi-valued colormap used as the basis for multi-valued pixel indexing. + \param dithering Level of dithering (0=disable, 1=standard level). + \param map_indexes Tell if the values of the resulting image are the colormap indices or the colormap vectors. + \note + - \p img.index(colormap,dithering,1) is equivalent to img.index(colormap,dithering,0).map(colormap). + \par Example + \code + const CImg img("reference.jpg"), colormap(3,1,1,3, 0,128,255, 0,128,255, 0,128,255); + const CImg res = img.get_index(colormap,1,true); + (img,res).display(); + \endcode + \image html ref_index.jpg + **/ + template + CImg& index(const CImg& colormap, const float dithering=1, const bool map_indexes=false) { + return get_index(colormap,dithering,map_indexes).move_to(*this); + } + + //! Index multi-valued pixels regarding to a specified colormap \newinstance. + template + CImg::Tuint> + get_index(const CImg& colormap, const float dithering=1, const bool map_indexes=true) const { + if (colormap._spectrum!=_spectrum) + throw CImgArgumentException(_cimg_instance + "index(): Instance and specified colormap (%u,%u,%u,%u,%p) " + "have incompatible dimensions.", + cimg_instance, + colormap._width,colormap._height,colormap._depth,colormap._spectrum,colormap._data); + + typedef typename CImg::Tuint tuint; + if (is_empty()) return CImg(); + const ulongT + whd = (ulongT)_width*_height*_depth, + pwhd = (ulongT)colormap._width*colormap._height*colormap._depth; + CImg res(_width,_height,_depth,map_indexes?_spectrum:1); + if (dithering>0) { // Dithered versions + tuint *ptrd = res._data; + const float ndithering = cimg::cut(dithering,0,1)/16; + Tfloat valm = 0, valM = (Tfloat)max_min(valm); + if (valm==valM && valm>=0 && valM<=255) { valm = 0; valM = 255; } + CImg cache = get_crop(-1,0,0,0,_width,1,0,_spectrum - 1); + Tfloat *cache_current = cache.data(1,0,0,0), *cache_next = cache.data(1,1,0,0); + const ulongT cwhd = (ulongT)cache._width*cache._height*cache._depth; + switch (_spectrum) { + case 1 : { // Optimized for scalars + cimg_forYZ(*this,y,z) { + if (yvalM?valM:_val0; + Tfloat distmin = cimg::type::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp_end = ptrp0 + pwhd; ptrp0valM?valM:_val0, + _val1 = (Tfloat)*ptrs1, val1 = _val1valM?valM:_val1; + Tfloat distmin = cimg::type::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp1 = ptrp0 + pwhd, *ptrp_end = ptrp1; ptrp0valM?valM:_val0, + _val1 = (Tfloat)*ptrs1, val1 = _val1valM?valM:_val1, + _val2 = (Tfloat)*ptrs2, val2 = _val2valM?valM:_val2; + Tfloat distmin = cimg::type::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp1 = ptrp0 + pwhd, *ptrp2 = ptrp1 + pwhd, + *ptrp_end = ptrp1; ptrp0::max(); const t *ptrmin = colormap._data; + for (const t *ptrp = colormap._data, *ptrp_end = ptrp + pwhd; ptrpvalM?valM:_val; + dist+=cimg::sqr((*_ptrs=val) - (Tfloat)*_ptrp); _ptrs+=cwhd; _ptrp+=pwhd; + } + if (dist=(cimg_openmp_sizefactor)*64 && + _height*_depth>=16 && pwhd>=16)) + cimg_forYZ(*this,y,z) { + tuint *ptrd = res.data(0,y,z); + for (const T *ptrs0 = data(0,y,z), *ptrs_end = ptrs0 + _width; ptrs0::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp_end = ptrp0 + pwhd; ptrp0=(cimg_openmp_sizefactor)*64 && + _height*_depth>=16 && pwhd>=16)) + cimg_forYZ(*this,y,z) { + tuint *ptrd = res.data(0,y,z), *ptrd1 = ptrd + whd; + for (const T *ptrs0 = data(0,y,z), *ptrs1 = ptrs0 + whd, *ptrs_end = ptrs0 + _width; ptrs0::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp1 = ptrp0 + pwhd, *ptrp_end = ptrp1; ptrp0=(cimg_openmp_sizefactor)*64 && + _height*_depth>=16 && pwhd>=16)) + cimg_forYZ(*this,y,z) { + tuint *ptrd = res.data(0,y,z), *ptrd1 = ptrd + whd, *ptrd2 = ptrd1 + whd; + for (const T *ptrs0 = data(0,y,z), *ptrs1 = ptrs0 + whd, *ptrs2 = ptrs1 + whd, + *ptrs_end = ptrs0 + _width; ptrs0::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp1 = ptrp0 + pwhd, *ptrp2 = ptrp1 + pwhd, + *ptrp_end = ptrp1; ptrp0=(cimg_openmp_sizefactor)*64 && + _height*_depth>=16 && pwhd>=16)) + cimg_forYZ(*this,y,z) { + tuint *ptrd = res.data(0,y,z); + for (const T *ptrs = data(0,y,z), *ptrs_end = ptrs + _width; ptrs::max(); const t *ptrmin = colormap._data; + for (const t *ptrp = colormap._data, *ptrp_end = ptrp + pwhd; ptrp img("reference.jpg"), + colormap1(3,1,1,3, 0,128,255, 0,128,255, 0,128,255), + colormap2(3,1,1,3, 255,0,0, 0,255,0, 0,0,255), + res = img.get_index(colormap1,0).map(colormap2); + (img,res).display(); + \endcode + \image html ref_map.jpg + **/ + template + CImg& map(const CImg& colormap, const unsigned int boundary_conditions=0) { + return get_map(colormap,boundary_conditions).move_to(*this); + } + + //! Map predefined colormap on the scalar (indexed) image instance \newinstance. + template + CImg get_map(const CImg& colormap, const unsigned int boundary_conditions=0) const { + const ulongT + whd = (ulongT)_width*_height*_depth, siz = size(), + cwhd = (ulongT)colormap._width*colormap._height*colormap._depth, + cwhd2 = 2*cwhd; + CImg res(_width,_height,_depth,_spectrum*colormap._spectrum); + switch (colormap._spectrum) { + + case 1 : { // Optimized for scalars + switch (boundary_conditions) { + case 3 : // Mirror + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),256)) + for (longT off = 0; off<(longT)siz; ++off) { + const ulongT ind = ((ulongT)_data[off])%cwhd2; + res[off] = colormap[ind& label(const bool is_high_connectivity=false, const Tfloat tolerance=0, + const bool is_L2_norm=true) { + if (is_empty()) return *this; + return get_label(is_high_connectivity,tolerance,is_L2_norm).move_to(*this); + } + + //! Label connected components \newinstance. + CImg get_label(const bool is_high_connectivity=false, const Tfloat tolerance=0, + const bool is_L2_norm=true) const { + if (is_empty()) return CImg(); + + // Create neighborhood tables. + int dx[13], dy[13], dz[13], nb = 0; + dx[nb] = 1; dy[nb] = 0; dz[nb++] = 0; + dx[nb] = 0; dy[nb] = 1; dz[nb++] = 0; + if (is_high_connectivity) { + dx[nb] = 1; dy[nb] = 1; dz[nb++] = 0; + dx[nb] = 1; dy[nb] = -1; dz[nb++] = 0; + } + if (_depth>1) { // 3D version + dx[nb] = 0; dy[nb] = 0; dz[nb++]=1; + if (is_high_connectivity) { + dx[nb] = 1; dy[nb] = 1; dz[nb++] = -1; + dx[nb] = 1; dy[nb] = 0; dz[nb++] = -1; + dx[nb] = 1; dy[nb] = -1; dz[nb++] = -1; + dx[nb] = 0; dy[nb] = 1; dz[nb++] = -1; + + dx[nb] = 0; dy[nb] = 1; dz[nb++] = 1; + dx[nb] = 1; dy[nb] = -1; dz[nb++] = 1; + dx[nb] = 1; dy[nb] = 0; dz[nb++] = 1; + dx[nb] = 1; dy[nb] = 1; dz[nb++] = 1; + } + } + return _label(nb,dx,dy,dz,tolerance,is_L2_norm); + } + + //! Label connected components \overloading. + /** + \param connectivity_mask Mask of the neighboring pixels. + \param tolerance Tolerance used to determine if two neighboring pixels belong to the same region. + \param is_L2_norm If true, tolerance is compared against L2 difference, otherwise L1 is used. + **/ + template + CImg& label(const CImg& connectivity_mask, const Tfloat tolerance=0, + const bool is_L2_norm=true) { + if (is_empty()) return *this; + return get_label(connectivity_mask,tolerance,is_L2_norm).move_to(*this); + } + + //! Label connected components \newinstance. + template + CImg get_label(const CImg& connectivity_mask, const Tfloat tolerance=0, + const bool is_L2_norm=true) const { + if (is_empty()) return CImg(); + int nb = 0; + cimg_for(connectivity_mask,ptr,t) if (*ptr) ++nb; + CImg dx(nb,1,1,1,0), dy(nb,1,1,1,0), dz(nb,1,1,1,0); + nb = 0; + cimg_forXYZ(connectivity_mask,x,y,z) if ((x || y || z) && + connectivity_mask(x,y,z)) { + dx[nb] = x; dy[nb] = y; dz[nb++] = z; + } + return _label(nb,dx,dy,dz,tolerance,is_L2_norm); + } + + CImg _label(const unsigned int nb, const int *const dx, + const int *const dy, const int *const dz, + const Tfloat tolerance, const bool is_L2_norm) const { + CImg res(_width,_height,_depth); + const Tfloat _tolerance = _spectrum>1 && is_L2_norm?cimg::sqr(tolerance):tolerance; + + // Init label numbers. + ulongT *ptr = res.data(); + cimg_foroff(res,p) *(ptr++) = p; + + // For each neighbour-direction, label. + for (unsigned int n = 0; n& _system_strescape() { +#define cimg_system_strescape(c,s) case c : if (p!=ptrs) CImg(ptrs,(unsigned int)(p-ptrs),1,1,1,false).\ + move_to(list); \ + CImg(s,(unsigned int)std::strlen(s),1,1,1,false).move_to(list); ptrs = p + 1; break + CImgList list; + const T *ptrs = _data; + cimg_for(*this,p,T) switch ((int)*p) { + cimg_system_strescape('\\',"\\\\"); + cimg_system_strescape('\"',"\\\""); + cimg_system_strescape('!',"\"\\!\""); + cimg_system_strescape('`',"\\`"); + cimg_system_strescape('$',"\\$"); + } + if (ptrs(ptrs,(unsigned int)(end()-ptrs),1,1,1,false).move_to(list); + return (list>'x').move_to(*this); + } + + //@} + //--------------------------------- + // + //! \name Color Base Management + //@{ + //--------------------------------- + + //! Return colormap \e "default", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_default.jpg + **/ + static const CImg& default_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + colormap.assign(1,256,1,3); + for (unsigned int index = 0, r = 16; r<256; r+=32) + for (unsigned int g = 16; g<256; g+=32) + for (unsigned int b = 32; b<256; b+=64) { + colormap(0,index,0) = (Tuchar)r; + colormap(0,index,1) = (Tuchar)g; + colormap(0,index++,2) = (Tuchar)b; + } + } + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "HSV", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_hsv.jpg + **/ + static const CImg& HSV_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + CImg tmp(1,256,1,3,1); + tmp.get_shared_channel(0).sequence(0,359); + colormap = tmp.HSVtoRGB(); + } + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "lines", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_lines.jpg + **/ + static const CImg& lines_LUT256() { + static const unsigned char pal[] = { + 0,255,255,0,0,28,125,125,235,210,186,182,36,0,125,255, + 53,32,255,210,89,186,65,45,125,210,210,97,130,194,0,125, + 206,53,190,89,255,146,20,190,154,73,255,36,130,215,0,138, + 101,210,61,194,206,0,77,45,255,154,174,0,190,239,89,125, + 16,36,158,223,117,0,97,69,223,255,40,239,0,0,255,0, + 97,170,93,255,138,40,117,210,0,170,53,158,186,255,0,121, + 227,121,186,40,20,190,89,255,77,57,130,142,255,73,186,85, + 210,8,32,166,243,130,210,40,255,45,61,142,223,49,121,255, + 20,162,158,73,89,255,53,138,210,190,57,235,36,73,255,49, + 210,0,210,85,57,97,255,121,85,174,40,255,162,178,0,121, + 166,125,53,146,166,255,97,121,65,89,235,231,12,170,36,190, + 85,255,166,97,198,77,20,146,109,166,255,28,40,202,121,81, + 247,0,210,255,49,0,65,255,36,166,93,77,255,85,251,0, + 170,178,0,182,255,0,162,16,154,142,162,223,223,0,0,81, + 215,4,215,162,215,125,77,206,121,36,125,231,101,16,255,121, + 0,57,190,215,65,125,89,142,255,101,73,53,146,223,125,125, + 0,255,0,255,0,206,93,138,49,255,0,202,154,85,45,219, + 251,53,0,255,40,130,219,158,16,117,186,130,202,49,65,239, + 89,202,49,28,247,134,150,0,255,117,202,4,215,81,186,57, + 202,89,73,210,40,93,45,251,206,28,223,142,40,134,162,125, + 32,247,97,170,0,255,57,134,73,247,162,0,251,40,142,142, + 8,166,206,81,154,194,93,89,125,243,28,109,227,0,190,65, + 194,186,0,255,53,45,109,186,186,0,255,130,49,170,69,210, + 154,0,109,227,45,255,125,105,81,81,255,0,219,134,170,85, + 146,28,170,89,223,97,8,210,255,158,49,40,125,174,174,125, + 0,227,166,28,219,130,0,93,239,0,85,255,81,178,125,49, + 89,255,53,206,73,113,146,255,0,150,36,219,162,0,210,125, + 69,134,255,85,40,89,235,49,215,121,0,206,36,223,174,69, + 40,182,178,130,69,45,255,210,85,77,215,0,231,146,0,194, + 125,174,0,255,40,89,121,206,57,0,206,170,231,150,81,0, + 125,255,4,174,4,190,121,255,4,166,109,130,49,239,170,93, + 16,174,210,0,255,16,105,158,93,255,0,125,0,255,158,85, + 0,255,0,0,255,170,166,61,121,28,198,215,45,243,61,97, + 255,53,81,130,109,255,8,117,235,121,40,178,174,0,182,49, + 162,121,255,69,206,0,219,125,0,101,255,239,121,32,210,130, + 36,231,32,125,81,142,215,158,4,178,255,0,40,251,125,125, + 219,89,130,0,166,255,24,65,194,125,255,125,77,125,93,125, + 202,24,138,174,178,32,255,85,194,40,85,36,174,174,125,210, + 85,255,53,16,93,206,40,130,170,202,93,255,0,24,117,255, + 97,113,105,81,255,186,194,57,69,206,57,53,223,190,4,255, + 85,97,130,255,85,0,125,223,85,219,0,215,146,77,40,239, + 89,36,142,154,227,0,255,85,162,0,162,0,235,178,45,166, + 0,247,255,20,69,210,89,142,53,255,40,146,166,255,69,0, + 174,154,142,130,162,0,215,255,0,89,40,255,166,61,146,69, + 162,40,255,32,121,255,117,178,0,186,206,0,57,215,215,81, + 158,77,166,210,77,89,210,0,24,202,150,186,0,255,20,97, + 57,170,235,251,16,73,142,251,93,0,202,0,255,121,219,4, + 73,219,8,162,206,16,219,93,117,0,255,8,130,174,223,45 }; + static const CImg colormap(pal,1,256,1,3,false); + return colormap; + } + + //! Return colormap \e "hot", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_hot.jpg + **/ + static const CImg& hot_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + colormap.assign(1,4,1,3,(T)0); + colormap[1] = colormap[2] = colormap[3] = colormap[6] = colormap[7] = colormap[11] = 255; + colormap.resize(1,256,1,3,3); + } + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "cool", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_cool.jpg + **/ + static const CImg& cool_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) colormap.assign(1,2,1,3).fill((T)0,(T)255,(T)255,(T)0,(T)255,(T)255).resize(1,256,1,3,3); + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "jet", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_jet.jpg + **/ + static const CImg& jet_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + colormap.assign(1,4,1,3,(T)0); + colormap[2] = colormap[3] = colormap[5] = colormap[6] = colormap[8] = colormap[9] = 255; + colormap.resize(1,256,1,3,3); + } + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "flag", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_flag.jpg + **/ + static const CImg& flag_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + colormap.assign(1,4,1,3,(T)0); + colormap[0] = colormap[1] = colormap[5] = colormap[9] = colormap[10] = 255; + colormap.resize(1,256,1,3,0,2); + } + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "cube", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_cube.jpg + **/ + static const CImg& cube_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + colormap.assign(1,8,1,3,(T)0); + colormap[1] = colormap[3] = colormap[5] = colormap[7] = + colormap[10] = colormap[11] = colormap[12] = colormap[13] = + colormap[20] = colormap[21] = colormap[22] = colormap[23] = 255; + colormap.resize(1,256,1,3,3); + } + cimg::mutex(8,0); + return colormap; + } + + //! Convert pixel values from sRGB to RGB color spaces. + CImg& sRGBtoRGB() { + if (is_empty()) return *this; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32)) + cimg_rofoff(*this,off) { + const Tfloat + sval = (Tfloat)_data[off]/255, + val = (Tfloat)(sval<=0.04045f?sval/12.92f:std::pow((sval + 0.055f)/(1.055f),2.4f)); + _data[off] = (T)cimg::cut(val*255,0,255); + } + return *this; + } + + //! Convert pixel values from sRGB to RGB color spaces \newinstance. + CImg get_sRGBtoRGB() const { + return CImg(*this,false).sRGBtoRGB(); + } + + //! Convert pixel values from RGB to sRGB color spaces. + CImg& RGBtosRGB() { + if (is_empty()) return *this; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32)) + cimg_rofoff(*this,off) { + const Tfloat + val = (Tfloat)_data[off]/255, + sval = (Tfloat)(val<=0.0031308f?val*12.92f:1.055f*std::pow(val,0.416667f) - 0.055f); + _data[off] = (T)cimg::cut(sval*255,0,255); + } + return *this; + } + + //! Convert pixel values from RGB to sRGB color spaces \newinstance. + CImg get_RGBtosRGB() const { + return CImg(*this,false).RGBtosRGB(); + } + + //! Convert pixel values from RGB to HSI color spaces. + CImg& RGBtoHSI() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoHSI(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_RGBtoHSI() const { + return CImg(*this,false).RGBtoHSI(); + } + + //! Convert pixel values from HSI to RGB color spaces. + CImg& HSItoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "HSItoRGB(): Instance is not a HSI image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_HSItoRGB() const { + return CImg< Tuchar>(*this,false).HSItoRGB(); + } + + //! Convert pixel values from RGB to HSL color spaces. + CImg& RGBtoHSL() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoHSL(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_RGBtoHSL() const { + return CImg(*this,false).RGBtoHSL(); + } + + //! Convert pixel values from HSL to RGB color spaces. + CImg& HSLtoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "HSLtoRGB(): Instance is not a HSL image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_HSLtoRGB() const { + return CImg(*this,false).HSLtoRGB(); + } + + //! Convert pixel values from RGB to HSV color spaces. + CImg& RGBtoHSV() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoHSV(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_RGBtoHSV() const { + return CImg(*this,false).RGBtoHSV(); + } + + //! Convert pixel values from HSV to RGB color spaces. + CImg& HSVtoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "HSVtoRGB(): Instance is not a HSV image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_HSVtoRGB() const { + return CImg(*this,false).HSVtoRGB(); + } + + //! Convert pixel values from RGB to YCbCr color spaces. + CImg& RGBtoYCbCr() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoYCbCr(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,512)) + for (longT N = 0; N get_RGBtoYCbCr() const { + return CImg(*this,false).RGBtoYCbCr(); + } + + //! Convert pixel values from RGB to YCbCr color spaces. + CImg& YCbCrtoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "YCbCrtoRGB(): Instance is not a YCbCr image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,512)) + for (longT N = 0; N get_YCbCrtoRGB() const { + return CImg(*this,false).YCbCrtoRGB(); + } + + //! Convert pixel values from RGB to YUV color spaces. + CImg& RGBtoYUV() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoYUV(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,16384)) + for (longT N = 0; N get_RGBtoYUV() const { + return CImg(*this,false).RGBtoYUV(); + } + + //! Convert pixel values from YUV to RGB color spaces. + CImg& YUVtoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "YUVtoRGB(): Instance is not a YUV image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,16384)) + for (longT N = 0; N get_YUVtoRGB() const { + return CImg< Tuchar>(*this,false).YUVtoRGB(); + } + + //! Convert pixel values from RGB to CMY color spaces. + CImg& RGBtoCMY() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoCMY(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,2048)) + for (longT N = 0; N get_RGBtoCMY() const { + return CImg(*this,false).RGBtoCMY(); + } + + //! Convert pixel values from CMY to RGB color spaces. + CImg& CMYtoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "CMYtoRGB(): Instance is not a CMY image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,2048)) + for (longT N = 0; N get_CMYtoRGB() const { + return CImg(*this,false).CMYtoRGB(); + } + + //! Convert pixel values from CMY to CMYK color spaces. + CImg& CMYtoCMYK() { + return get_CMYtoCMYK().move_to(*this); + } + + //! Convert pixel values from CMY to CMYK color spaces \newinstance. + CImg get_CMYtoCMYK() const { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "CMYtoCMYK(): Instance is not a CMY image.", + cimg_instance); + + CImg res(_width,_height,_depth,4); + const T *ps1 = data(0,0,0,0), *ps2 = data(0,0,0,1), *ps3 = data(0,0,0,2); + Tfloat *pd1 = res.data(0,0,0,0), *pd2 = res.data(0,0,0,1), *pd3 = res.data(0,0,0,2), *pd4 = res.data(0,0,0,3); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,1024)) + for (longT N = 0; N=255) C = M = Y = 0; + else { const Tfloat K1 = 255 - K; C = 255*(C - K)/K1; M = 255*(M - K)/K1; Y = 255*(Y - K)/K1; } + pd1[N] = (Tfloat)cimg::cut(C,0,255), + pd2[N] = (Tfloat)cimg::cut(M,0,255), + pd3[N] = (Tfloat)cimg::cut(Y,0,255), + pd4[N] = (Tfloat)cimg::cut(K,0,255); + } + return res; + } + + //! Convert pixel values from CMYK to CMY color spaces. + CImg& CMYKtoCMY() { + return get_CMYKtoCMY().move_to(*this); + } + + //! Convert pixel values from CMYK to CMY color spaces \newinstance. + CImg get_CMYKtoCMY() const { + if (_spectrum!=4) + throw CImgInstanceException(_cimg_instance + "CMYKtoCMY(): Instance is not a CMYK image.", + cimg_instance); + + CImg res(_width,_height,_depth,3); + const T *ps1 = data(0,0,0,0), *ps2 = data(0,0,0,1), *ps3 = data(0,0,0,2), *ps4 = data(0,0,0,3); + Tfloat *pd1 = res.data(0,0,0,0), *pd2 = res.data(0,0,0,1), *pd3 = res.data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,1024)) + for (longT N = 0; N& RGBtoXYZ(const bool use_D65=true) { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoXYZ(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,2048)) + for (longT N = 0; N get_RGBtoXYZ(const bool use_D65=true) const { + return CImg(*this,false).RGBtoXYZ(use_D65); + } + + //! Convert pixel values from XYZ to RGB color spaces. + /** + \param use_D65 Tell to use the D65 illuminant (D50 otherwise). + **/ + CImg& XYZtoRGB(const bool use_D65=true) { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "XYZtoRGB(): Instance is not a XYZ image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,2048)) + for (longT N = 0; N get_XYZtoRGB(const bool use_D65=true) const { + return CImg(*this,false).XYZtoRGB(use_D65); + } + + //! Convert pixel values from XYZ to Lab color spaces. + CImg& XYZtoLab(const bool use_D65=true) { +#define _cimg_Labf(x) (24389*(x)>216?cimg::cbrt(x):(24389*(x)/27 + 16)/116) + + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "XYZtoLab(): Instance is not a XYZ image.", + cimg_instance); + const CImg white = CImg(1,1,1,3,255).RGBtoXYZ(use_D65); + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,128)) + for (longT N = 0; N get_XYZtoLab(const bool use_D65=true) const { + return CImg(*this,false).XYZtoLab(use_D65); + } + + //! Convert pixel values from Lab to XYZ color spaces. + CImg& LabtoXYZ(const bool use_D65=true) { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "LabtoXYZ(): Instance is not a Lab image.", + cimg_instance); + const CImg white = CImg(1,1,1,3,255).RGBtoXYZ(use_D65); + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,128)) + for (longT N = 0; N216?cX*cX*cX:(116*cX - 16)*27/24389), + Y = (Tfloat)(27*L>216?cY*cY*cY:27*L/24389), + Z = (Tfloat)(24389*cZ>216?cZ*cZ*cZ:(116*cZ - 16)*27/24389); + p1[N] = (T)(X*white[0]); + p2[N] = (T)(Y*white[1]); + p3[N] = (T)(Z*white[2]); + } + return *this; + } + + //! Convert pixel values from Lab to XYZ color spaces \newinstance. + CImg get_LabtoXYZ(const bool use_D65=true) const { + return CImg(*this,false).LabtoXYZ(use_D65); + } + + //! Convert pixel values from XYZ to xyY color spaces. + CImg& XYZtoxyY() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "XYZtoxyY(): Instance is not a XYZ image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,4096)) + for (longT N = 0; N0?sum:1; + p1[N] = (T)(X/nsum); + p2[N] = (T)(Y/nsum); + p3[N] = (T)Y; + } + return *this; + } + + //! Convert pixel values from XYZ to xyY color spaces \newinstance. + CImg get_XYZtoxyY() const { + return CImg(*this,false).XYZtoxyY(); + } + + //! Convert pixel values from xyY pixels to XYZ color spaces. + CImg& xyYtoXYZ() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "xyYtoXYZ(): Instance is not a xyY image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,4096)) + for (longT N = 0; N0?py:1; + p1[N] = (T)(px*Y/ny); + p2[N] = (T)Y; + p3[N] = (T)((1 - px - py)*Y/ny); + } + return *this; + } + + //! Convert pixel values from xyY pixels to XYZ color spaces \newinstance. + CImg get_xyYtoXYZ() const { + return CImg(*this,false).xyYtoXYZ(); + } + + //! Convert pixel values from RGB to Lab color spaces. + CImg& RGBtoLab(const bool use_D65=true) { + return RGBtoXYZ(use_D65).XYZtoLab(use_D65); + } + + //! Convert pixel values from RGB to Lab color spaces \newinstance. + CImg get_RGBtoLab(const bool use_D65=true) const { + return CImg(*this,false).RGBtoLab(use_D65); + } + + //! Convert pixel values from Lab to RGB color spaces. + CImg& LabtoRGB(const bool use_D65=true) { + return LabtoXYZ().XYZtoRGB(use_D65); + } + + //! Convert pixel values from Lab to RGB color spaces \newinstance. + CImg get_LabtoRGB(const bool use_D65=true) const { + return CImg(*this,false).LabtoRGB(use_D65); + } + + //! Convert pixel values from RGB to xyY color spaces. + CImg& RGBtoxyY(const bool use_D65=true) { + return RGBtoXYZ(use_D65).XYZtoxyY(); + } + + //! Convert pixel values from RGB to xyY color spaces \newinstance. + CImg get_RGBtoxyY(const bool use_D65=true) const { + return CImg(*this,false).RGBtoxyY(use_D65); + } + + //! Convert pixel values from xyY to RGB color spaces. + CImg& xyYtoRGB(const bool use_D65=true) { + return xyYtoXYZ().XYZtoRGB(use_D65); + } + + //! Convert pixel values from xyY to RGB color spaces \newinstance. + CImg get_xyYtoRGB(const bool use_D65=true) const { + return CImg(*this,false).xyYtoRGB(use_D65); + } + + //! Convert pixel values from RGB to CMYK color spaces. + CImg& RGBtoCMYK() { + return RGBtoCMY().CMYtoCMYK(); + } + + //! Convert pixel values from RGB to CMYK color spaces \newinstance. + CImg get_RGBtoCMYK() const { + return CImg(*this,false).RGBtoCMYK(); + } + + //! Convert pixel values from CMYK to RGB color spaces. + CImg& CMYKtoRGB() { + return CMYKtoCMY().CMYtoRGB(); + } + + //! Convert pixel values from CMYK to RGB color spaces \newinstance. + CImg get_CMYKtoRGB() const { + return CImg(*this,false).CMYKtoRGB(); + } + + //@} + //------------------------------------------ + // + //! \name Geometric / Spatial Manipulation + //@{ + //------------------------------------------ + + static float _cimg_lanczos(const float x) { + if (x<=-2 || x>=2) return 0; + const float a = (float)cimg::PI*x, b = 0.5f*a; + return (float)(x?std::sin(a)*std::sin(b)/(a*b):1); + } + + //! Resize image to new dimensions. + /** + \param size_x Number of columns (new size along the X-axis). + \param size_y Number of rows (new size along the Y-axis). + \param size_z Number of slices (new size along the Z-axis). + \param size_c Number of vector-channels (new size along the C-axis). + \param interpolation_type Method of interpolation: + - -1 = no interpolation: raw memory resizing. + - 0 = no interpolation: additional space is filled according to \p boundary_conditions. + - 1 = nearest-neighbor interpolation. + - 2 = moving average interpolation. + - 3 = linear interpolation. + - 4 = grid interpolation. + - 5 = cubic interpolation. + - 6 = lanczos interpolation. + \param boundary_conditions Type of boundary conditions used if necessary. + \param centering_x Set centering type (only if \p interpolation_type=0). + \param centering_y Set centering type (only if \p interpolation_type=0). + \param centering_z Set centering type (only if \p interpolation_type=0). + \param centering_c Set centering type (only if \p interpolation_type=0). + \note If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100). + **/ + CImg& resize(const int size_x, const int size_y=-100, + const int size_z=-100, const int size_c=-100, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) { + if (!size_x || !size_y || !size_z || !size_c) return assign(); + const unsigned int + _sx = (unsigned int)(size_x<0?-size_x*width()/100:size_x), + _sy = (unsigned int)(size_y<0?-size_y*height()/100:size_y), + _sz = (unsigned int)(size_z<0?-size_z*depth()/100:size_z), + _sc = (unsigned int)(size_c<0?-size_c*spectrum()/100:size_c), + sx = _sx?_sx:1, sy = _sy?_sy:1, sz = _sz?_sz:1, sc = _sc?_sc:1; + if (sx==_width && sy==_height && sz==_depth && sc==_spectrum) return *this; + if (is_empty()) return assign(sx,sy,sz,sc,(T)0); + if (interpolation_type==-1 && sx*sy*sz*sc==size()) { + _width = sx; _height = sy; _depth = sz; _spectrum = sc; + return *this; + } + return get_resize(sx,sy,sz,sc,interpolation_type,boundary_conditions, + centering_x,centering_y,centering_z,centering_c).move_to(*this); + } + + //! Resize image to new dimensions \newinstance. + CImg get_resize(const int size_x, const int size_y = -100, + const int size_z = -100, const int size_c = -100, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) const { + if (centering_x<0 || centering_x>1 || centering_y<0 || centering_y>1 || + centering_z<0 || centering_z>1 || centering_c<0 || centering_c>1) + throw CImgArgumentException(_cimg_instance + "resize(): Specified centering arguments (%g,%g,%g,%g) are outside range [0,1].", + cimg_instance, + centering_x,centering_y,centering_z,centering_c); + + if (!size_x || !size_y || !size_z || !size_c) return CImg(); + const unsigned int + sx = std::max(1U,(unsigned int)(size_x>=0?size_x:-size_x*width()/100)), + sy = std::max(1U,(unsigned int)(size_y>=0?size_y:-size_y*height()/100)), + sz = std::max(1U,(unsigned int)(size_z>=0?size_z:-size_z*depth()/100)), + sc = std::max(1U,(unsigned int)(size_c>=0?size_c:-size_c*spectrum()/100)); + if (sx==_width && sy==_height && sz==_depth && sc==_spectrum) return +*this; + if (is_empty()) return CImg(sx,sy,sz,sc,(T)0); + CImg res; + switch (interpolation_type) { + + // Raw resizing. + // + case -1 : + std::memcpy(res.assign(sx,sy,sz,sc,(T)0)._data,_data,sizeof(T)*std::min(size(),(ulongT)sx*sy*sz*sc)); + break; + + // No interpolation. + // + case 0 : { + const int + xc = (int)(centering_x*((int)sx - width())), + yc = (int)(centering_y*((int)sy - height())), + zc = (int)(centering_z*((int)sz - depth())), + cc = (int)(centering_c*((int)sc - spectrum())); + + switch (boundary_conditions) { + case 3 : { // Mirror + res.assign(sx,sy,sz,sc); + const int w2 = 2*width(), h2 = 2*height(), d2 = 2*depth(), s2 = 2*spectrum(); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),65536)) + cimg_forXYZC(res,x,y,z,c) { + const int + mx = cimg::mod(x - xc,w2), my = cimg::mod(y - yc,h2), + mz = cimg::mod(z - zc,d2), mc = cimg::mod(c - cc,s2); + res(x,y,z,c) = (*this)(mx sprite; + if (xc>0) { // X-backward + res.get_crop(xc,yc,zc,cc,xc,yc + height() - 1,zc + depth() - 1,cc + spectrum() - 1).move_to(sprite); + for (int x = xc - 1; x>=0; --x) res.draw_image(x,yc,zc,cc,sprite); + } + if (xc + width()<(int)sx) { // X-forward + res.get_crop(xc + width() - 1,yc,zc,cc,xc + width() - 1,yc + height() - 1, + zc + depth() - 1,cc + spectrum() - 1).move_to(sprite); + for (int x = xc + width(); x<(int)sx; ++x) res.draw_image(x,yc,zc,cc,sprite); + } + if (yc>0) { // Y-backward + res.get_crop(0,yc,zc,cc,sx - 1,yc,zc + depth() - 1,cc + spectrum() - 1).move_to(sprite); + for (int y = yc - 1; y>=0; --y) res.draw_image(0,y,zc,cc,sprite); + } + if (yc + height()<(int)sy) { // Y-forward + res.get_crop(0,yc + height() - 1,zc,cc,sx - 1,yc + height() - 1, + zc + depth() - 1,cc + spectrum() - 1).move_to(sprite); + for (int y = yc + height(); y<(int)sy; ++y) res.draw_image(0,y,zc,cc,sprite); + } + if (zc>0) { // Z-backward + res.get_crop(0,0,zc,cc,sx - 1,sy - 1,zc,cc + spectrum() - 1).move_to(sprite); + for (int z = zc - 1; z>=0; --z) res.draw_image(0,0,z,cc,sprite); + } + if (zc + depth()<(int)sz) { // Z-forward + res.get_crop(0,0,zc +depth() - 1,cc,sx - 1,sy - 1,zc + depth() - 1,cc + spectrum() - 1).move_to(sprite); + for (int z = zc + depth(); z<(int)sz; ++z) res.draw_image(0,0,z,cc,sprite); + } + if (cc>0) { // C-backward + res.get_crop(0,0,0,cc,sx - 1,sy - 1,sz - 1,cc).move_to(sprite); + for (int c = cc - 1; c>=0; --c) res.draw_image(0,0,0,c,sprite); + } + if (cc + spectrum()<(int)sc) { // C-forward + res.get_crop(0,0,0,cc + spectrum() - 1,sx - 1,sy - 1,sz - 1,cc + spectrum() - 1).move_to(sprite); + for (int c = cc + spectrum(); c<(int)sc; ++c) res.draw_image(0,0,0,c,sprite); + } + } break; + default : // Dirichlet + res.assign(sx,sy,sz,sc,(T)0).draw_image(xc,yc,zc,cc,*this); + } + break; + } break; + + // Nearest neighbor interpolation. + // + case 1 : { + res.assign(sx,sy,sz,sc); + CImg off_x(sx), off_y(sy + 1), off_z(sz + 1), off_c(sc + 1); + const ulongT + wh = (ulongT)_width*_height, + whd = (ulongT)_width*_height*_depth, + sxy = (ulongT)sx*sy, + sxyz = (ulongT)sx*sy*sz, + one = (ulongT)1; + if (sx==_width) off_x.fill(1); + else { + ulongT *poff_x = off_x._data, curr = 0; + cimg_forX(res,x) { + const ulongT old = curr; + curr = (x + one)*_width/sx; + *(poff_x++) = curr - old; + } + } + if (sy==_height) off_y.fill(_width); + else { + ulongT *poff_y = off_y._data, curr = 0; + cimg_forY(res,y) { + const ulongT old = curr; + curr = (y + one)*_height/sy; + *(poff_y++) = _width*(curr - old); + } + *poff_y = 0; + } + if (sz==_depth) off_z.fill(wh); + else { + ulongT *poff_z = off_z._data, curr = 0; + cimg_forZ(res,z) { + const ulongT old = curr; + curr = (z + one)*_depth/sz; + *(poff_z++) = wh*(curr - old); + } + *poff_z = 0; + } + if (sc==_spectrum) off_c.fill(whd); + else { + ulongT *poff_c = off_c._data, curr = 0; + cimg_forC(res,c) { + const ulongT old = curr; + curr = (c + one)*_spectrum/sc; + *(poff_c++) = whd*(curr - old); + } + *poff_c = 0; + } + + T *ptrd = res._data; + const T* ptrc = _data; + const ulongT *poff_c = off_c._data; + for (unsigned int c = 0; c tmp(sx,_height,_depth,_spectrum,0); + for (unsigned int a = _width*sx, b = _width, c = sx, s = 0, t = 0; a; ) { + const unsigned int d = std::min(b,c); + a-=d; b-=d; c-=d; + cimg_forYZC(tmp,y,z,v) tmp(t,y,z,v)+=(Tfloat)(*this)(s,y,z,v)*d; + if (!b) { + cimg_forYZC(tmp,y,z,v) tmp(t,y,z,v)/=_width; + ++t; + b = _width; + } + if (!c) { ++s; c = sx; } + } + tmp.move_to(res); + instance_first = false; + } + if (sy!=_height) { + CImg tmp(sx,sy,_depth,_spectrum,0); + for (unsigned int a = _height*sy, b = _height, c = sy, s = 0, t = 0; a; ) { + const unsigned int d = std::min(b,c); + a-=d; b-=d; c-=d; + if (instance_first) + cimg_forXZC(tmp,x,z,v) tmp(x,t,z,v)+=(Tfloat)(*this)(x,s,z,v)*d; + else + cimg_forXZC(tmp,x,z,v) tmp(x,t,z,v)+=(Tfloat)res(x,s,z,v)*d; + if (!b) { + cimg_forXZC(tmp,x,z,v) tmp(x,t,z,v)/=_height; + ++t; + b = _height; + } + if (!c) { ++s; c = sy; } + } + tmp.move_to(res); + instance_first = false; + } + if (sz!=_depth) { + CImg tmp(sx,sy,sz,_spectrum,0); + for (unsigned int a = _depth*sz, b = _depth, c = sz, s = 0, t = 0; a; ) { + const unsigned int d = std::min(b,c); + a-=d; b-=d; c-=d; + if (instance_first) + cimg_forXYC(tmp,x,y,v) tmp(x,y,t,v)+=(Tfloat)(*this)(x,y,s,v)*d; + else + cimg_forXYC(tmp,x,y,v) tmp(x,y,t,v)+=(Tfloat)res(x,y,s,v)*d; + if (!b) { + cimg_forXYC(tmp,x,y,v) tmp(x,y,t,v)/=_depth; + ++t; + b = _depth; + } + if (!c) { ++s; c = sz; } + } + tmp.move_to(res); + instance_first = false; + } + if (sc!=_spectrum) { + CImg tmp(sx,sy,sz,sc,0); + for (unsigned int a = _spectrum*sc, b = _spectrum, c = sc, s = 0, t = 0; a; ) { + const unsigned int d = std::min(b,c); + a-=d; b-=d; c-=d; + if (instance_first) + cimg_forXYZ(tmp,x,y,z) tmp(x,y,z,t)+=(Tfloat)(*this)(x,y,z,s)*d; + else + cimg_forXYZ(tmp,x,y,z) tmp(x,y,z,t)+=(Tfloat)res(x,y,z,s)*d; + if (!b) { + cimg_forXYZ(tmp,x,y,z) tmp(x,y,z,t)/=_spectrum; + ++t; + b = _spectrum; + } + if (!c) { ++s; c = sc; } + } + tmp.move_to(res); + instance_first = false; + } + } break; + + // Linear interpolation. + // + case 3 : { + CImg off(cimg::max(sx,sy,sz,sc)); + CImg foff(off._width); + CImg resx, resy, resz, resc; + double curr, old; + + if (sx!=_width) { + if (_width==1) get_resize(sx,_height,_depth,_spectrum,1).move_to(resx); + else if (_width>sx) get_resize(sx,_height,_depth,_spectrum,2).move_to(resx); + else { + const double fx = (!boundary_conditions && sx>_width)?(sx>1?(_width - 1.)/(sx - 1):0): + (double)_width/sx; + resx.assign(sx,_height,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forX(resx,x) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(width() - 1.,curr + fx); + *(poff++) = (unsigned int)curr - (unsigned int)old; + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resx.size(),65536)) + cimg_forYZC(resx,y,z,c) { + const T *ptrs = data(0,y,z,c), *const ptrsmax = ptrs + _width - 1; + T *ptrd = resx.data(0,y,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forX(resx,x) { + const double alpha = *(pfoff++); + const T val1 = *ptrs, val2 = ptrssy) resx.get_resize(sx,sy,_depth,_spectrum,2).move_to(resy); + else { + const double fy = (!boundary_conditions && sy>_height)?(sy>1?(_height - 1.)/(sy - 1):0): + (double)_height/sy; + resy.assign(sx,sy,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forY(resy,y) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(height() - 1.,curr + fy); + *(poff++) = sx*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resy.size(),65536)) + cimg_forXZC(resy,x,z,c) { + const T *ptrs = resx.data(x,0,z,c), *const ptrsmax = ptrs + (_height - 1)*sx; + T *ptrd = resy.data(x,0,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forY(resy,y) { + const double alpha = *(pfoff++); + const T val1 = *ptrs, val2 = ptrssz) resy.get_resize(sx,sy,sz,_spectrum,2).move_to(resz); + else { + const double fz = (!boundary_conditions && sz>_depth)?(sz>1?(_depth - 1.)/(sz - 1):0): + (double)_depth/sz; + const unsigned int sxy = sx*sy; + resz.assign(sx,sy,sz,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forZ(resz,z) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(depth() - 1.,curr + fz); + *(poff++) = sxy*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resz.size(),65536)) + cimg_forXYC(resz,x,y,c) { + const T *ptrs = resy.data(x,y,0,c), *const ptrsmax = ptrs + (_depth - 1)*sxy; + T *ptrd = resz.data(x,y,0,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forZ(resz,z) { + const double alpha = *(pfoff++); + const T val1 = *ptrs, val2 = ptrssc) resz.get_resize(sx,sy,sz,sc,2).move_to(resc); + else { + const double fc = (!boundary_conditions && sc>_spectrum)?(sc>1?(_spectrum - 1.)/(sc - 1):0): + (double)_spectrum/sc; + const unsigned int sxyz = sx*sy*sz; + resc.assign(sx,sy,sz,sc); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forC(resc,c) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(spectrum() - 1.,curr + fc); + *(poff++) = sxyz*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resc.size(),65536)) + cimg_forXYZ(resc,x,y,z) { + const T *ptrs = resz.data(x,y,z,0), *const ptrsmax = ptrs + (_spectrum - 1)*sxyz; + T *ptrd = resc.data(x,y,z,0); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forC(resc,c) { + const double alpha = *(pfoff++); + const T val1 = *ptrs, val2 = ptrs resx, resy, resz, resc; + if (sx!=_width) { + if (sx<_width) get_resize(sx,_height,_depth,_spectrum,1).move_to(resx); + else { + resx.assign(sx,_height,_depth,_spectrum,(T)0); + const int dx = (int)(2*sx), dy = 2*width(); + int err = (int)(dy + centering_x*(sx*dy/width() - dy)), xs = 0; + cimg_forX(resx,x) if ((err-=dy)<=0) { + cimg_forYZC(resx,y,z,c) resx(x,y,z,c) = (*this)(xs,y,z,c); + ++xs; + err+=dx; + } + } + } else resx.assign(*this,true); + + if (sy!=_height) { + if (sy<_height) resx.get_resize(sx,sy,_depth,_spectrum,1).move_to(resy); + else { + resy.assign(sx,sy,_depth,_spectrum,(T)0); + const int dx = (int)(2*sy), dy = 2*height(); + int err = (int)(dy + centering_y*(sy*dy/height() - dy)), ys = 0; + cimg_forY(resy,y) if ((err-=dy)<=0) { + cimg_forXZC(resy,x,z,c) resy(x,y,z,c) = resx(x,ys,z,c); + ++ys; + err+=dx; + } + } + resx.assign(); + } else resy.assign(resx,true); + + if (sz!=_depth) { + if (sz<_depth) resy.get_resize(sx,sy,sz,_spectrum,1).move_to(resz); + else { + resz.assign(sx,sy,sz,_spectrum,(T)0); + const int dx = (int)(2*sz), dy = 2*depth(); + int err = (int)(dy + centering_z*(sz*dy/depth() - dy)), zs = 0; + cimg_forZ(resz,z) if ((err-=dy)<=0) { + cimg_forXYC(resz,x,y,c) resz(x,y,z,c) = resy(x,y,zs,c); + ++zs; + err+=dx; + } + } + resy.assign(); + } else resz.assign(resy,true); + + if (sc!=_spectrum) { + if (sc<_spectrum) resz.get_resize(sx,sy,sz,sc,1).move_to(resc); + else { + resc.assign(sx,sy,sz,sc,(T)0); + const int dx = (int)(2*sc), dy = 2*spectrum(); + int err = (int)(dy + centering_c*(sc*dy/spectrum() - dy)), cs = 0; + cimg_forC(resc,c) if ((err-=dy)<=0) { + cimg_forXYZ(resc,x,y,z) resc(x,y,z,c) = resz(x,y,z,cs); + ++cs; + err+=dx; + } + } + resz.assign(); + } else resc.assign(resz,true); + + return resc._is_shared?(resz._is_shared?(resy._is_shared?(resx._is_shared?(+(*this)):resx):resy):resz):resc; + } break; + + // Cubic interpolation. + // + case 5 : { + const Tfloat vmin = (Tfloat)cimg::type::min(), vmax = (Tfloat)cimg::type::max(); + CImg off(cimg::max(sx,sy,sz,sc)); + CImg foff(off._width); + CImg resx, resy, resz, resc; + double curr, old; + + if (sx!=_width) { + if (_width==1) get_resize(sx,_height,_depth,_spectrum,1).move_to(resx); + else { + if (_width>sx) get_resize(sx,_height,_depth,_spectrum,2).move_to(resx); + else { + const double fx = (!boundary_conditions && sx>_width)?(sx>1?(_width - 1.)/(sx - 1):0): + (double)_width/sx; + resx.assign(sx,_height,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forX(resx,x) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(width() - 1.,curr + fx); + *(poff++) = (unsigned int)curr - (unsigned int)old; + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resx.size(),65536)) + cimg_forYZC(resx,y,z,c) { + const T *const ptrs0 = data(0,y,z,c), *ptrs = ptrs0, *const ptrsmax = ptrs + (_width - 2); + T *ptrd = resx.data(0,y,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forX(resx,x) { + const double + t = *(pfoff++), + val1 = (double)*ptrs, + val0 = ptrs>ptrs0?(double)*(ptrs - 1):val1, + val2 = ptrs<=ptrsmax?(double)*(ptrs + 1):val1, + val3 = ptrsvmax?vmax:val); + ptrs+=*(poff++); + } + } + } + } + } else resx.assign(*this,true); + + if (sy!=_height) { + if (_height==1) resx.get_resize(sx,sy,_depth,_spectrum,1).move_to(resy); + else { + if (_height>sy) resx.get_resize(sx,sy,_depth,_spectrum,2).move_to(resy); + else { + const double fy = (!boundary_conditions && sy>_height)?(sy>1?(_height - 1.)/(sy - 1):0): + (double)_height/sy; + resy.assign(sx,sy,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forY(resy,y) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(height() - 1.,curr + fy); + *(poff++) = sx*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resy.size(),65536)) + cimg_forXZC(resy,x,z,c) { + const T *const ptrs0 = resx.data(x,0,z,c), *ptrs = ptrs0, *const ptrsmax = ptrs + (_height - 2)*sx; + T *ptrd = resy.data(x,0,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forY(resy,y) { + const double + t = *(pfoff++), + val1 = (double)*ptrs, + val0 = ptrs>ptrs0?(double)*(ptrs - sx):val1, + val2 = ptrs<=ptrsmax?(double)*(ptrs + sx):val1, + val3 = ptrsvmax?vmax:val); + ptrd+=sx; + ptrs+=*(poff++); + } + } + } + } + resx.assign(); + } else resy.assign(resx,true); + + if (sz!=_depth) { + if (_depth==1) resy.get_resize(sx,sy,sz,_spectrum,1).move_to(resz); + else { + if (_depth>sz) resy.get_resize(sx,sy,sz,_spectrum,2).move_to(resz); + else { + const double fz = (!boundary_conditions && sz>_depth)?(sz>1?(_depth - 1.)/(sz - 1):0): + (double)_depth/sz; + const unsigned int sxy = sx*sy; + resz.assign(sx,sy,sz,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forZ(resz,z) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(depth() - 1.,curr + fz); + *(poff++) = sxy*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resz.size(),65536)) + cimg_forXYC(resz,x,y,c) { + const T *const ptrs0 = resy.data(x,y,0,c), *ptrs = ptrs0, *const ptrsmax = ptrs + (_depth - 2)*sxy; + T *ptrd = resz.data(x,y,0,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forZ(resz,z) { + const double + t = *(pfoff++), + val1 = (double)*ptrs, + val0 = ptrs>ptrs0?(double)*(ptrs - sxy):val1, + val2 = ptrs<=ptrsmax?(double)*(ptrs + sxy):val1, + val3 = ptrsvmax?vmax:val); + ptrd+=sxy; + ptrs+=*(poff++); + } + } + } + } + resy.assign(); + } else resz.assign(resy,true); + + if (sc!=_spectrum) { + if (_spectrum==1) resz.get_resize(sx,sy,sz,sc,1).move_to(resc); + else { + if (_spectrum>sc) resz.get_resize(sx,sy,sz,sc,2).move_to(resc); + else { + const double fc = (!boundary_conditions && sc>_spectrum)?(sc>1?(_spectrum - 1.)/(sc - 1):0): + (double)_spectrum/sc; + const unsigned int sxyz = sx*sy*sz; + resc.assign(sx,sy,sz,sc); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forC(resc,c) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(spectrum() - 1.,curr + fc); + *(poff++) = sxyz*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resc.size(),65536)) + cimg_forXYZ(resc,x,y,z) { + const T *const ptrs0 = resz.data(x,y,z,0), *ptrs = ptrs0, *const ptrsmax = ptrs + (_spectrum - 2)*sxyz; + T *ptrd = resc.data(x,y,z,0); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forC(resc,c) { + const double + t = *(pfoff++), + val1 = (double)*ptrs, + val0 = ptrs>ptrs0?(double)*(ptrs - sxyz):val1, + val2 = ptrs<=ptrsmax?(double)*(ptrs + sxyz):val1, + val3 = ptrsvmax?vmax:val); + ptrd+=sxyz; + ptrs+=*(poff++); + } + } + } + } + resz.assign(); + } else resc.assign(resz,true); + + return resc._is_shared?(resz._is_shared?(resy._is_shared?(resx._is_shared?(+(*this)):resx):resy):resz):resc; + } break; + + // Lanczos interpolation. + // + case 6 : { + const double vmin = (double)cimg::type::min(), vmax = (double)cimg::type::max(); + CImg off(cimg::max(sx,sy,sz,sc)); + CImg foff(off._width); + CImg resx, resy, resz, resc; + double curr, old; + + if (sx!=_width) { + if (_width==1) get_resize(sx,_height,_depth,_spectrum,1).move_to(resx); + else { + if (_width>sx) get_resize(sx,_height,_depth,_spectrum,2).move_to(resx); + else { + const double fx = (!boundary_conditions && sx>_width)?(sx>1?(_width - 1.)/(sx - 1):0): + (double)_width/sx; + resx.assign(sx,_height,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forX(resx,x) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(width() - 1.,curr + fx); + *(poff++) = (unsigned int)curr - (unsigned int)old; + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resx.size(),65536)) + cimg_forYZC(resx,y,z,c) { + const T *const ptrs0 = data(0,y,z,c), *ptrs = ptrs0, *const ptrsmin = ptrs0 + 1, + *const ptrsmax = ptrs0 + (_width - 2); + T *ptrd = resx.data(0,y,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forX(resx,x) { + const double + t = *(pfoff++), + w0 = _cimg_lanczos(t + 2), + w1 = _cimg_lanczos(t + 1), + w2 = _cimg_lanczos(t), + w3 = _cimg_lanczos(t - 1), + w4 = _cimg_lanczos(t - 2), + val2 = (double)*ptrs, + val1 = ptrs>=ptrsmin?(double)*(ptrs - 1):val2, + val0 = ptrs>ptrsmin?(double)*(ptrs - 2):val1, + val3 = ptrs<=ptrsmax?(double)*(ptrs + 1):val2, + val4 = ptrsvmax?vmax:val); + ptrs+=*(poff++); + } + } + } + } + } else resx.assign(*this,true); + + if (sy!=_height) { + if (_height==1) resx.get_resize(sx,sy,_depth,_spectrum,1).move_to(resy); + else { + if (_height>sy) resx.get_resize(sx,sy,_depth,_spectrum,2).move_to(resy); + else { + const double fy = (!boundary_conditions && sy>_height)?(sy>1?(_height - 1.)/(sy - 1):0): + (double)_height/sy; + resy.assign(sx,sy,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forY(resy,y) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(height() - 1.,curr + fy); + *(poff++) = sx*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resy.size(),65536)) + cimg_forXZC(resy,x,z,c) { + const T *const ptrs0 = resx.data(x,0,z,c), *ptrs = ptrs0, *const ptrsmin = ptrs0 + sx, + *const ptrsmax = ptrs0 + (_height - 2)*sx; + T *ptrd = resy.data(x,0,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forY(resy,y) { + const double + t = *(pfoff++), + w0 = _cimg_lanczos(t + 2), + w1 = _cimg_lanczos(t + 1), + w2 = _cimg_lanczos(t), + w3 = _cimg_lanczos(t - 1), + w4 = _cimg_lanczos(t - 2), + val2 = (double)*ptrs, + val1 = ptrs>=ptrsmin?(double)*(ptrs - sx):val2, + val0 = ptrs>ptrsmin?(double)*(ptrs - 2*sx):val1, + val3 = ptrs<=ptrsmax?(double)*(ptrs + sx):val2, + val4 = ptrsvmax?vmax:val); + ptrd+=sx; + ptrs+=*(poff++); + } + } + } + } + resx.assign(); + } else resy.assign(resx,true); + + if (sz!=_depth) { + if (_depth==1) resy.get_resize(sx,sy,sz,_spectrum,1).move_to(resz); + else { + if (_depth>sz) resy.get_resize(sx,sy,sz,_spectrum,2).move_to(resz); + else { + const double fz = (!boundary_conditions && sz>_depth)?(sz>1?(_depth - 1.)/(sz - 1):0): + (double)_depth/sz; + const unsigned int sxy = sx*sy; + resz.assign(sx,sy,sz,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forZ(resz,z) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(depth() - 1.,curr + fz); + *(poff++) = sxy*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resz.size(),65536)) + cimg_forXYC(resz,x,y,c) { + const T *const ptrs0 = resy.data(x,y,0,c), *ptrs = ptrs0, *const ptrsmin = ptrs0 + sxy, + *const ptrsmax = ptrs0 + (_depth - 2)*sxy; + T *ptrd = resz.data(x,y,0,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forZ(resz,z) { + const double + t = *(pfoff++), + w0 = _cimg_lanczos(t + 2), + w1 = _cimg_lanczos(t + 1), + w2 = _cimg_lanczos(t), + w3 = _cimg_lanczos(t - 1), + w4 = _cimg_lanczos(t - 2), + val2 = (double)*ptrs, + val1 = ptrs>=ptrsmin?(double)*(ptrs - sxy):val2, + val0 = ptrs>ptrsmin?(double)*(ptrs - 2*sxy):val1, + val3 = ptrs<=ptrsmax?(double)*(ptrs + sxy):val2, + val4 = ptrsvmax?vmax:val); + ptrd+=sxy; + ptrs+=*(poff++); + } + } + } + } + resy.assign(); + } else resz.assign(resy,true); + + if (sc!=_spectrum) { + if (_spectrum==1) resz.get_resize(sx,sy,sz,sc,1).move_to(resc); + else { + if (_spectrum>sc) resz.get_resize(sx,sy,sz,sc,2).move_to(resc); + else { + const double fc = (!boundary_conditions && sc>_spectrum)?(sc>1?(_spectrum - 1.)/(sc - 1):0): + (double)_spectrum/sc; + const unsigned int sxyz = sx*sy*sz; + resc.assign(sx,sy,sz,sc); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forC(resc,c) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(spectrum() - 1.,curr + fc); + *(poff++) = sxyz*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resc.size(),65536)) + cimg_forXYZ(resc,x,y,z) { + const T *const ptrs0 = resz.data(x,y,z,0), *ptrs = ptrs0, *const ptrsmin = ptrs0 + sxyz, + *const ptrsmax = ptrs + (_spectrum - 2)*sxyz; + T *ptrd = resc.data(x,y,z,0); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forC(resc,c) { + const double + t = *(pfoff++), + w0 = _cimg_lanczos(t + 2), + w1 = _cimg_lanczos(t + 1), + w2 = _cimg_lanczos(t), + w3 = _cimg_lanczos(t - 1), + w4 = _cimg_lanczos(t - 2), + val2 = (double)*ptrs, + val1 = ptrs>=ptrsmin?(double)*(ptrs - sxyz):val2, + val0 = ptrs>ptrsmin?(double)*(ptrs - 2*sxyz):val1, + val3 = ptrs<=ptrsmax?(double)*(ptrs + sxyz):val2, + val4 = ptrsvmax?vmax:val); + ptrd+=sxyz; + ptrs+=*(poff++); + } + } + } + } + resz.assign(); + } else resc.assign(resz,true); + + return resc._is_shared?(resz._is_shared?(resy._is_shared?(resx._is_shared?(+(*this)):resx):resy):resz):resc; + } break; + + // Unknown interpolation. + // + default : + throw CImgArgumentException(_cimg_instance + "resize(): Invalid specified interpolation %d " + "(should be { -1=raw | 0=none | 1=nearest | 2=average | 3=linear | 4=grid | " + "5=cubic | 6=lanczos }).", + cimg_instance, + interpolation_type); + } + return res; + } + + //! Resize image to dimensions of another image. + /** + \param src Reference image used for dimensions. + \param interpolation_type Interpolation method. + \param boundary_conditions Boundary conditions. + \param centering_x Set centering type (only if \p interpolation_type=0). + \param centering_y Set centering type (only if \p interpolation_type=0). + \param centering_z Set centering type (only if \p interpolation_type=0). + \param centering_c Set centering type (only if \p interpolation_type=0). + **/ + template + CImg& resize(const CImg& src, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) { + return resize(src._width,src._height,src._depth,src._spectrum,interpolation_type,boundary_conditions, + centering_x,centering_y,centering_z,centering_c); + } + + //! Resize image to dimensions of another image \newinstance. + template + CImg get_resize(const CImg& src, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) const { + return get_resize(src._width,src._height,src._depth,src._spectrum,interpolation_type,boundary_conditions, + centering_x,centering_y,centering_z,centering_c); + } + + //! Resize image to dimensions of a display window. + /** + \param disp Reference display window used for dimensions. + \param interpolation_type Interpolation method. + \param boundary_conditions Boundary conditions. + \param centering_x Set centering type (only if \p interpolation_type=0). + \param centering_y Set centering type (only if \p interpolation_type=0). + \param centering_z Set centering type (only if \p interpolation_type=0). + \param centering_c Set centering type (only if \p interpolation_type=0). + **/ + CImg& resize(const CImgDisplay& disp, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) { + return resize(disp.width(),disp.height(),_depth,_spectrum,interpolation_type,boundary_conditions, + centering_x,centering_y,centering_z,centering_c); + } + + //! Resize image to dimensions of a display window \newinstance. + CImg get_resize(const CImgDisplay& disp, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) const { + return get_resize(disp.width(),disp.height(),_depth,_spectrum,interpolation_type,boundary_conditions, + centering_x,centering_y,centering_z,centering_c); + } + + //! Resize image to half-size along XY axes, using an optimized filter. + CImg& resize_halfXY() { + return get_resize_halfXY().move_to(*this); + } + + //! Resize image to half-size along XY axes, using an optimized filter \newinstance. + CImg get_resize_halfXY() const { + if (is_empty()) return *this; + static const Tfloat kernel[9] = { 0.07842776544f, 0.1231940459f, 0.07842776544f, + 0.1231940459f, 0.1935127547f, 0.1231940459f, + 0.07842776544f, 0.1231940459f, 0.07842776544f }; + CImg I(9), res(_width/2,_height/2,_depth,_spectrum); + T *ptrd = res._data; + cimg_forZC(*this,z,c) cimg_for3x3(*this,x,y,z,c,I,T) + if (x%2 && y%2) *(ptrd++) = (T) + (I[0]*kernel[0] + I[1]*kernel[1] + I[2]*kernel[2] + + I[3]*kernel[3] + I[4]*kernel[4] + I[5]*kernel[5] + + I[6]*kernel[6] + I[7]*kernel[7] + I[8]*kernel[8]); + return res; + } + + //! Resize image to double-size, using the Scale2X algorithm. + /** + \note Use anisotropic upscaling algorithm + described here. + **/ + CImg& resize_doubleXY() { + return get_resize_doubleXY().move_to(*this); + } + + //! Resize image to double-size, using the Scale2X algorithm \newinstance. + CImg get_resize_doubleXY() const { +#define _cimg_gs2x_for3(bound,i) \ + for (int i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1; \ + _n1##i<(int)(bound) || i==--_n1##i; \ + _p1##i = i++, ++_n1##i, ptrd1+=(res)._width, ptrd2+=(res)._width) + +#define _cimg_gs2x_for3x3(img,x,y,z,c,I,T) \ + _cimg_gs2x_for3((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = (int)( \ + (I[1] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[3] = I[4] = (T)(img)(0,y,z,c)), \ + (I[7] = (T)(img)(0,_n1##y,z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x; \ + I[1] = I[2], \ + I[3] = I[4], I[4] = I[5], \ + I[7] = I[8], \ + _p1##x = x++, ++_n1##x) + + if (is_empty()) return *this; + CImg res(_width<<1,_height<<1,_depth,_spectrum); + CImg_3x3(I,T); + cimg_forZC(*this,z,c) { + T + *ptrd1 = res.data(0,0,z,c), + *ptrd2 = ptrd1 + res._width; + _cimg_gs2x_for3x3(*this,x,y,z,c,I,T) { + if (Icp!=Icn && Ipc!=Inc) { + *(ptrd1++) = Ipc==Icp?Ipc:Icc; + *(ptrd1++) = Icp==Inc?Inc:Icc; + *(ptrd2++) = Ipc==Icn?Ipc:Icc; + *(ptrd2++) = Icn==Inc?Inc:Icc; + } else { *(ptrd1++) = Icc; *(ptrd1++) = Icc; *(ptrd2++) = Icc; *(ptrd2++) = Icc; } + } + } + return res; + } + + //! Resize image to triple-size, using the Scale3X algorithm. + /** + \note Use anisotropic upscaling algorithm + described here. + **/ + CImg& resize_tripleXY() { + return get_resize_tripleXY().move_to(*this); + } + + //! Resize image to triple-size, using the Scale3X algorithm \newinstance. + CImg get_resize_tripleXY() const { +#define _cimg_gs3x_for3(bound,i) \ + for (int i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1; \ + _n1##i<(int)(bound) || i==--_n1##i; \ + _p1##i = i++, ++_n1##i, ptrd1+=2*(res)._width, ptrd2+=2*(res)._width, ptrd3+=2*(res)._width) + +#define _cimg_gs3x_for3x3(img,x,y,z,c,I,T) \ + _cimg_gs3x_for3((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = (int)( \ + (I[0] = I[1] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[3] = I[4] = (T)(img)(0,y,z,c)), \ + (I[6] = I[7] = (T)(img)(0,_n1##y,z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x; \ + I[0] = I[1], I[1] = I[2], \ + I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], \ + _p1##x = x++, ++_n1##x) + + if (is_empty()) return *this; + CImg res(3*_width,3*_height,_depth,_spectrum); + CImg_3x3(I,T); + cimg_forZC(*this,z,c) { + T + *ptrd1 = res.data(0,0,z,c), + *ptrd2 = ptrd1 + res._width, + *ptrd3 = ptrd2 + res._width; + _cimg_gs3x_for3x3(*this,x,y,z,c,I,T) { + if (Icp != Icn && Ipc != Inc) { + *(ptrd1++) = Ipc==Icp?Ipc:Icc; + *(ptrd1++) = (Ipc==Icp && Icc!=Inp) || (Icp==Inc && Icc!=Ipp)?Icp:Icc; + *(ptrd1++) = Icp==Inc?Inc:Icc; + *(ptrd2++) = (Ipc==Icp && Icc!=Ipn) || (Ipc==Icn && Icc!=Ipp)?Ipc:Icc; + *(ptrd2++) = Icc; + *(ptrd2++) = (Icp==Inc && Icc!=Inn) || (Icn==Inc && Icc!=Inp)?Inc:Icc; + *(ptrd3++) = Ipc==Icn?Ipc:Icc; + *(ptrd3++) = (Ipc==Icn && Icc!=Inn) || (Icn==Inc && Icc!=Ipn)?Icn:Icc; + *(ptrd3++) = Icn==Inc?Inc:Icc; + } else { + *(ptrd1++) = Icc; *(ptrd1++) = Icc; *(ptrd1++) = Icc; + *(ptrd2++) = Icc; *(ptrd2++) = Icc; *(ptrd2++) = Icc; + *(ptrd3++) = Icc; *(ptrd3++) = Icc; *(ptrd3++) = Icc; + } + } + } + return res; + } + + //! Mirror image content along specified axis. + /** + \param axis Mirror axis + **/ + CImg& mirror(const char axis) { + if (is_empty()) return *this; + T *pf, *pb, *buf = 0; + switch (cimg::lowercase(axis)) { + case 'x' : { + pf = _data; pb = data(_width - 1); + const unsigned int width2 = _width/2; + for (unsigned int yzv = 0; yzv<_height*_depth*_spectrum; ++yzv) { + for (unsigned int x = 0; x get_mirror(const char axis) const { + return (+*this).mirror(axis); + } + + //! Mirror image content along specified axes. + /** + \param axes Mirror axes, as a C-string. + \note \c axes may contains multiple characters, e.g. \c "xyz" + **/ + CImg& mirror(const char *const axes) { + for (const char *s = axes; *s; ++s) mirror(*s); + return *this; + } + + //! Mirror image content along specified axes \newinstance. + CImg get_mirror(const char *const axes) const { + return (+*this).mirror(axes); + } + + //! Shift image content. + /** + \param delta_x Amount of displacement along the X-axis. + \param delta_y Amount of displacement along the Y-axis. + \param delta_z Amount of displacement along the Z-axis. + \param delta_c Amount of displacement along the C-axis. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + **/ + CImg& shift(const int delta_x, const int delta_y=0, const int delta_z=0, const int delta_c=0, + const unsigned int boundary_conditions=0) { + if (is_empty()) return *this; + if (boundary_conditions==3) + return get_crop(-delta_x,-delta_y,-delta_z,-delta_c, + width() - delta_x - 1, + height() - delta_y - 1, + depth() - delta_z - 1, + spectrum() - delta_c - 1,3).move_to(*this); + if (delta_x) // Shift along X-axis + switch (boundary_conditions) { + case 2 : { // Periodic + const int ml = cimg::mod(-delta_x,width()), ndelta_x = (ml<=width()/2)?ml:(ml-width()); + if (!ndelta_x) return *this; + CImg buf(cimg::abs(ndelta_x)); + if (ndelta_x>0) cimg_forYZC(*this,y,z,c) { + std::memcpy(buf,data(0,y,z,c),ndelta_x*sizeof(T)); + std::memmove(data(0,y,z,c),data(ndelta_x,y,z,c),(_width-ndelta_x)*sizeof(T)); + std::memcpy(data(_width-ndelta_x,y,z,c),buf,ndelta_x*sizeof(T)); + } else cimg_forYZC(*this,y,z,c) { + std::memcpy(buf,data(_width + ndelta_x,y,z,c),-ndelta_x*sizeof(T)); + std::memmove(data(-ndelta_x,y,z,c),data(0,y,z,c),(_width + ndelta_x)*sizeof(T)); + std::memcpy(data(0,y,z,c),buf,-ndelta_x*sizeof(T)); + } + } break; + case 1 : // Neumann + if (delta_x<0) { + const int ndelta_x = (-delta_x>=width())?width() - 1:-delta_x; + if (!ndelta_x) return *this; + cimg_forYZC(*this,y,z,c) { + std::memmove(data(0,y,z,c),data(ndelta_x,y,z,c),(_width-ndelta_x)*sizeof(T)); + T *ptrd = data(_width - 1,y,z,c); + const T val = *ptrd; + for (int l = 0; l=width())?width() - 1:delta_x; + if (!ndelta_x) return *this; + cimg_forYZC(*this,y,z,c) { + std::memmove(data(ndelta_x,y,z,c),data(0,y,z,c),(_width-ndelta_x)*sizeof(T)); + T *ptrd = data(0,y,z,c); + const T val = *ptrd; + for (int l = 0; l=width()) return fill((T)0); + if (delta_x<0) cimg_forYZC(*this,y,z,c) { + std::memmove(data(0,y,z,c),data(-delta_x,y,z,c),(_width + delta_x)*sizeof(T)); + std::memset(data(_width + delta_x,y,z,c),0,-delta_x*sizeof(T)); + } else cimg_forYZC(*this,y,z,c) { + std::memmove(data(delta_x,y,z,c),data(0,y,z,c),(_width-delta_x)*sizeof(T)); + std::memset(data(0,y,z,c),0,delta_x*sizeof(T)); + } + } + + if (delta_y) // Shift along Y-axis + switch (boundary_conditions) { + case 2 : { // Periodic + const int ml = cimg::mod(-delta_y,height()), ndelta_y = (ml<=height()/2)?ml:(ml-height()); + if (!ndelta_y) return *this; + CImg buf(width(),cimg::abs(ndelta_y)); + if (ndelta_y>0) cimg_forZC(*this,z,c) { + std::memcpy(buf,data(0,0,z,c),_width*ndelta_y*sizeof(T)); + std::memmove(data(0,0,z,c),data(0,ndelta_y,z,c),_width*(_height-ndelta_y)*sizeof(T)); + std::memcpy(data(0,_height-ndelta_y,z,c),buf,_width*ndelta_y*sizeof(T)); + } else cimg_forZC(*this,z,c) { + std::memcpy(buf,data(0,_height + ndelta_y,z,c),-ndelta_y*_width*sizeof(T)); + std::memmove(data(0,-ndelta_y,z,c),data(0,0,z,c),_width*(_height + ndelta_y)*sizeof(T)); + std::memcpy(data(0,0,z,c),buf,-ndelta_y*_width*sizeof(T)); + } + } break; + case 1 : // Neumann + if (delta_y<0) { + const int ndelta_y = (-delta_y>=height())?height() - 1:-delta_y; + if (!ndelta_y) return *this; + cimg_forZC(*this,z,c) { + std::memmove(data(0,0,z,c),data(0,ndelta_y,z,c),_width*(_height-ndelta_y)*sizeof(T)); + T *ptrd = data(0,_height-ndelta_y,z,c), *ptrs = data(0,_height - 1,z,c); + for (int l = 0; l=height())?height() - 1:delta_y; + if (!ndelta_y) return *this; + cimg_forZC(*this,z,c) { + std::memmove(data(0,ndelta_y,z,c),data(0,0,z,c),_width*(_height-ndelta_y)*sizeof(T)); + T *ptrd = data(0,1,z,c), *ptrs = data(0,0,z,c); + for (int l = 0; l=height()) return fill((T)0); + if (delta_y<0) cimg_forZC(*this,z,c) { + std::memmove(data(0,0,z,c),data(0,-delta_y,z,c),_width*(_height + delta_y)*sizeof(T)); + std::memset(data(0,_height + delta_y,z,c),0,-delta_y*_width*sizeof(T)); + } else cimg_forZC(*this,z,c) { + std::memmove(data(0,delta_y,z,c),data(0,0,z,c),_width*(_height-delta_y)*sizeof(T)); + std::memset(data(0,0,z,c),0,delta_y*_width*sizeof(T)); + } + } + + if (delta_z) // Shift along Z-axis + switch (boundary_conditions) { + case 2 : { // Periodic + const int ml = cimg::mod(-delta_z,depth()), ndelta_z = (ml<=depth()/2)?ml:(ml-depth()); + if (!ndelta_z) return *this; + CImg buf(width(),height(),cimg::abs(ndelta_z)); + if (ndelta_z>0) cimg_forC(*this,c) { + std::memcpy(buf,data(0,0,0,c),_width*_height*ndelta_z*sizeof(T)); + std::memmove(data(0,0,0,c),data(0,0,ndelta_z,c),_width*_height*(_depth-ndelta_z)*sizeof(T)); + std::memcpy(data(0,0,_depth-ndelta_z,c),buf,_width*_height*ndelta_z*sizeof(T)); + } else cimg_forC(*this,c) { + std::memcpy(buf,data(0,0,_depth + ndelta_z,c),-ndelta_z*_width*_height*sizeof(T)); + std::memmove(data(0,0,-ndelta_z,c),data(0,0,0,c),_width*_height*(_depth + ndelta_z)*sizeof(T)); + std::memcpy(data(0,0,0,c),buf,-ndelta_z*_width*_height*sizeof(T)); + } + } break; + case 1 : // Neumann + if (delta_z<0) { + const int ndelta_z = (-delta_z>=depth())?depth() - 1:-delta_z; + if (!ndelta_z) return *this; + cimg_forC(*this,c) { + std::memmove(data(0,0,0,c),data(0,0,ndelta_z,c),_width*_height*(_depth-ndelta_z)*sizeof(T)); + T *ptrd = data(0,0,_depth-ndelta_z,c), *ptrs = data(0,0,_depth - 1,c); + for (int l = 0; l=depth())?depth() - 1:delta_z; + if (!ndelta_z) return *this; + cimg_forC(*this,c) { + std::memmove(data(0,0,ndelta_z,c),data(0,0,0,c),_width*_height*(_depth-ndelta_z)*sizeof(T)); + T *ptrd = data(0,0,1,c), *ptrs = data(0,0,0,c); + for (int l = 0; l=depth()) return fill((T)0); + if (delta_z<0) cimg_forC(*this,c) { + std::memmove(data(0,0,0,c),data(0,0,-delta_z,c),_width*_height*(_depth + delta_z)*sizeof(T)); + std::memset(data(0,0,_depth + delta_z,c),0,_width*_height*(-delta_z)*sizeof(T)); + } else cimg_forC(*this,c) { + std::memmove(data(0,0,delta_z,c),data(0,0,0,c),_width*_height*(_depth-delta_z)*sizeof(T)); + std::memset(data(0,0,0,c),0,delta_z*_width*_height*sizeof(T)); + } + } + + if (delta_c) // Shift along C-axis + switch (boundary_conditions) { + case 2 : { // Periodic + const int ml = cimg::mod(-delta_c,spectrum()), ndelta_c = (ml<=spectrum()/2)?ml:(ml-spectrum()); + if (!ndelta_c) return *this; + CImg buf(width(),height(),depth(),cimg::abs(ndelta_c)); + if (ndelta_c>0) { + std::memcpy(buf,_data,_width*_height*_depth*ndelta_c*sizeof(T)); + std::memmove(_data,data(0,0,0,ndelta_c),_width*_height*_depth*(_spectrum-ndelta_c)*sizeof(T)); + std::memcpy(data(0,0,0,_spectrum-ndelta_c),buf,_width*_height*_depth*ndelta_c*sizeof(T)); + } else { + std::memcpy(buf,data(0,0,0,_spectrum + ndelta_c),-ndelta_c*_width*_height*_depth*sizeof(T)); + std::memmove(data(0,0,0,-ndelta_c),_data,_width*_height*_depth*(_spectrum + ndelta_c)*sizeof(T)); + std::memcpy(_data,buf,-ndelta_c*_width*_height*_depth*sizeof(T)); + } + } break; + case 1 : // Neumann + if (delta_c<0) { + const int ndelta_c = (-delta_c>=spectrum())?spectrum() - 1:-delta_c; + if (!ndelta_c) return *this; + std::memmove(_data,data(0,0,0,ndelta_c),_width*_height*_depth*(_spectrum-ndelta_c)*sizeof(T)); + T *ptrd = data(0,0,0,_spectrum-ndelta_c), *ptrs = data(0,0,0,_spectrum - 1); + for (int l = 0; l=spectrum())?spectrum() - 1:delta_c; + if (!ndelta_c) return *this; + std::memmove(data(0,0,0,ndelta_c),_data,_width*_height*_depth*(_spectrum-ndelta_c)*sizeof(T)); + T *ptrd = data(0,0,0,1); + for (int l = 0; l=spectrum()) return fill((T)0); + if (delta_c<0) { + std::memmove(_data,data(0,0,0,-delta_c),_width*_height*_depth*(_spectrum + delta_c)*sizeof(T)); + std::memset(data(0,0,0,_spectrum + delta_c),0,_width*_height*_depth*(-delta_c)*sizeof(T)); + } else { + std::memmove(data(0,0,0,delta_c),_data,_width*_height*_depth*(_spectrum-delta_c)*sizeof(T)); + std::memset(_data,0,delta_c*_width*_height*_depth*sizeof(T)); + } + } + return *this; + } + + //! Shift image content \newinstance. + CImg get_shift(const int delta_x, const int delta_y=0, const int delta_z=0, const int delta_c=0, + const unsigned int boundary_conditions=0) const { + return (+*this).shift(delta_x,delta_y,delta_z,delta_c,boundary_conditions); + } + + //! Permute axes order. + /** + \param axes_order Axes permutations, as a C-string of 4 characters. + This function permutes image content regarding the specified axes permutation. + **/ + CImg& permute_axes(const char *const axes_order) { + return get_permute_axes(axes_order).move_to(*this); + } + + //! Permute axes order \newinstance. + CImg get_permute_axes(const char *const axes_order) const { + const T foo = (T)0; + return _permute_axes(axes_order,foo); + } + + template + CImg _permute_axes(const char *const axes_order, const t&) const { + if (is_empty() || !axes_order) return CImg(*this,false); + CImg res; + const T* ptrs = _data; + unsigned char s_code[4] = { 0,1,2,3 }, n_code[4] = { 0 }; + for (unsigned int l = 0; axes_order[l]; ++l) { + int c = cimg::lowercase(axes_order[l]); + if (l>=4 || (c!='x' && c!='y' && c!='z' && c!='c')) { *s_code = 4; break; } + else { ++n_code[c%=4]; s_code[l] = c; } + } + if (*axes_order && *s_code<4 && *n_code<=1 && n_code[1]<=1 && n_code[2]<=1 && n_code[3]<=1) { + const unsigned int code = (s_code[0]<<12) | (s_code[1]<<8) | (s_code[2]<<4) | (s_code[3]); + ulongT wh, whd; + switch (code) { + case 0x0123 : // xyzc + return +*this; + case 0x0132 : // xycz + res.assign(_width,_height,_spectrum,_depth); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(x,y,c,z,wh,whd) = (t)*(ptrs++); + break; + case 0x0213 : // xzyc + res.assign(_width,_depth,_height,_spectrum); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(x,z,y,c,wh,whd) = (t)*(ptrs++); + break; + case 0x0231 : // xzcy + res.assign(_width,_depth,_spectrum,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(x,z,c,y,wh,whd) = (t)*(ptrs++); + break; + case 0x0312 : // xcyz + res.assign(_width,_spectrum,_height,_depth); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(x,c,y,z,wh,whd) = (t)*(ptrs++); + break; + case 0x0321 : // xczy + res.assign(_width,_spectrum,_depth,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(x,c,z,y,wh,whd) = (t)*(ptrs++); + break; + case 0x1023 : // yxzc + res.assign(_height,_width,_depth,_spectrum); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,x,z,c,wh,whd) = (t)*(ptrs++); + break; + case 0x1032 : // yxcz + res.assign(_height,_width,_spectrum,_depth); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,x,c,z,wh,whd) = (t)*(ptrs++); + break; + case 0x1203 : // yzxc + res.assign(_height,_depth,_width,_spectrum); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,z,x,c,wh,whd) = (t)*(ptrs++); + break; + case 0x1230 : // yzcx + res.assign(_height,_depth,_spectrum,_width); + switch (_width) { + case 1 : { + t *ptr_r = res.data(0,0,0,0); + for (unsigned int siz = _height*_depth*_spectrum; siz; --siz) { + *(ptr_r++) = (t)*(ptrs++); + } + } break; + case 2 : { + t *ptr_r = res.data(0,0,0,0), *ptr_g = res.data(0,0,0,1); + for (unsigned int siz = _height*_depth*_spectrum; siz; --siz) { + *(ptr_r++) = (t)ptrs[0]; + *(ptr_g++) = (t)ptrs[1]; + ptrs+=2; + } + } break; + case 3 : { // Optimization for the classical conversion from interleaved RGB to planar RGB + t *ptr_r = res.data(0,0,0,0), *ptr_g = res.data(0,0,0,1), *ptr_b = res.data(0,0,0,2); + for (unsigned int siz = _height*_depth*_spectrum; siz; --siz) { + *(ptr_r++) = (t)ptrs[0]; + *(ptr_g++) = (t)ptrs[1]; + *(ptr_b++) = (t)ptrs[2]; + ptrs+=3; + } + } break; + case 4 : { // Optimization for the classical conversion from interleaved RGBA to planar RGBA + t + *ptr_r = res.data(0,0,0,0), *ptr_g = res.data(0,0,0,1), + *ptr_b = res.data(0,0,0,2), *ptr_a = res.data(0,0,0,3); + for (unsigned int siz = _height*_depth*_spectrum; siz; --siz) { + *(ptr_r++) = (t)ptrs[0]; + *(ptr_g++) = (t)ptrs[1]; + *(ptr_b++) = (t)ptrs[2]; + *(ptr_a++) = (t)ptrs[3]; + ptrs+=4; + } + } break; + default : { + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,z,c,x,wh,whd) = *(ptrs++); + return res; + } + } + break; + case 0x1302 : // ycxz + res.assign(_height,_spectrum,_width,_depth); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,c,x,z,wh,whd) = (t)*(ptrs++); + break; + case 0x1320 : // yczx + res.assign(_height,_spectrum,_depth,_width); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,c,z,x,wh,whd) = (t)*(ptrs++); + break; + case 0x2013 : // zxyc + res.assign(_depth,_width,_height,_spectrum); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,x,y,c,wh,whd) = (t)*(ptrs++); + break; + case 0x2031 : // zxcy + res.assign(_depth,_width,_spectrum,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,x,c,y,wh,whd) = (t)*(ptrs++); + break; + case 0x2103 : // zyxc + res.assign(_depth,_height,_width,_spectrum); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,y,x,c,wh,whd) = (t)*(ptrs++); + break; + case 0x2130 : // zycx + res.assign(_depth,_height,_spectrum,_width); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,y,c,x,wh,whd) = (t)*(ptrs++); + break; + case 0x2301 : // zcxy + res.assign(_depth,_spectrum,_width,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,c,x,y,wh,whd) = (t)*(ptrs++); + break; + case 0x2310 : // zcyx + res.assign(_depth,_spectrum,_height,_width); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,c,y,x,wh,whd) = (t)*(ptrs++); + break; + case 0x3012 : // cxyz + res.assign(_spectrum,_width,_height,_depth); + switch (_spectrum) { + case 1 : { + const T *ptr_r = data(0,0,0,0); + t *ptrd = res._data; + for (ulongT siz = (ulongT)_width*_height*_depth; siz; --siz) *(ptrd++) = (t)*(ptr_r++); + } break; + case 2 : { + const T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1); + t *ptrd = res._data; + for (ulongT siz = (ulongT)_width*_height*_depth; siz; --siz) { + ptrd[0] = (t)*(ptr_r++); + ptrd[1] = (t)*(ptr_g++); + ptrd+=2; + } + } break; + case 3 : { // Optimization for the classical conversion from planar RGB to interleaved RGB + const T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2); + t *ptrd = res._data; + for (ulongT siz = (ulongT)_width*_height*_depth; siz; --siz) { + ptrd[0] = (t)*(ptr_r++); + ptrd[1] = (t)*(ptr_g++); + ptrd[2] = (t)*(ptr_b++); + ptrd+=3; + } + } break; + case 4 : { // Optimization for the classical conversion from planar RGBA to interleaved RGBA + const T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2), *ptr_a = data(0,0,0,3); + t *ptrd = res._data; + for (ulongT siz = (ulongT)_width*_height*_depth; siz; --siz) { + ptrd[0] = (t)*(ptr_r++); + ptrd[1] = (t)*(ptr_g++); + ptrd[2] = (t)*(ptr_b++); + ptrd[3] = (t)*(ptr_a++); + ptrd+=4; + } + } break; + default : { + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,x,y,z,wh,whd) = (t)*(ptrs++); + } + } + break; + case 0x3021 : // cxzy + res.assign(_spectrum,_width,_depth,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,x,z,y,wh,whd) = (t)*(ptrs++); + break; + case 0x3102 : // cyxz + res.assign(_spectrum,_height,_width,_depth); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,y,x,z,wh,whd) = (t)*(ptrs++); + break; + case 0x3120 : // cyzx + res.assign(_spectrum,_height,_depth,_width); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,y,z,x,wh,whd) = (t)*(ptrs++); + break; + case 0x3201 : // czxy + res.assign(_spectrum,_depth,_width,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,z,x,y,wh,whd) = (t)*(ptrs++); + break; + case 0x3210 : // czyx + res.assign(_spectrum,_depth,_height,_width); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,z,y,x,wh,whd) = (t)*(ptrs++); + break; + } + } + if (!res) + throw CImgArgumentException(_cimg_instance + "permute_axes(): Invalid specified axes order '%s'.", + cimg_instance, + axes_order); + return res; + } + + //! Unroll pixel values along specified axis. + /** + \param axis Unroll axis (can be \c 'x', \c 'y', \c 'z' or c 'c'). + **/ + CImg& unroll(const char axis) { + const unsigned int siz = (unsigned int)size(); + if (siz) switch (cimg::lowercase(axis)) { + case 'x' : _width = siz; _height = _depth = _spectrum = 1; break; + case 'y' : _height = siz; _width = _depth = _spectrum = 1; break; + case 'z' : _depth = siz; _width = _height = _spectrum = 1; break; + case 'c' : _spectrum = siz; _width = _height = _depth = 1; break; + } + return *this; + } + + //! Unroll pixel values along specified axis \newinstance. + CImg get_unroll(const char axis) const { + return (+*this).unroll(axis); + } + + //! Rotate image with arbitrary angle. + /** + \param angle Rotation angle, in degrees. + \param interpolation Type of interpolation. Can be { 0=nearest | 1=linear | 2=cubic }. + \param boundary_conditions Boundary conditions. + Can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + \note The size of the image is modified. + **/ + CImg& rotate(const float angle, const unsigned int interpolation=1, + const unsigned int boundary_conditions=0) { + const float nangle = cimg::mod(angle,360.f); + if (nangle==0.f) return *this; + return get_rotate(nangle,interpolation,boundary_conditions).move_to(*this); + } + + //! Rotate image with arbitrary angle \newinstance. + CImg get_rotate(const float angle, const unsigned int interpolation=1, + const unsigned int boundary_conditions=0) const { + if (is_empty()) return *this; + CImg res; + const float nangle = cimg::mod(angle,360.f); + if (boundary_conditions!=1 && cimg::mod(nangle,90.f)==0) { // Optimized version for orthogonal angles + const int wm1 = width() - 1, hm1 = height() - 1; + const int iangle = (int)nangle/90; + switch (iangle) { + case 1 : { // 90 deg + res.assign(_height,_width,_depth,_spectrum); + T *ptrd = res._data; + cimg_forXYZC(res,x,y,z,c) *(ptrd++) = (*this)(y,hm1 - x,z,c); + } break; + case 2 : { // 180 deg + res.assign(_width,_height,_depth,_spectrum); + T *ptrd = res._data; + cimg_forXYZC(res,x,y,z,c) *(ptrd++) = (*this)(wm1 - x,hm1 - y,z,c); + } break; + case 3 : { // 270 deg + res.assign(_height,_width,_depth,_spectrum); + T *ptrd = res._data; + cimg_forXYZC(res,x,y,z,c) *(ptrd++) = (*this)(wm1 - y,x,z,c); + } break; + default : // 0 deg + return *this; + } + } else { // Generic angle + const float + rad = (float)(nangle*cimg::PI/180.), + ca = (float)std::cos(rad), sa = (float)std::sin(rad), + ux = cimg::abs((_width - 1)*ca), uy = cimg::abs((_width - 1)*sa), + vx = cimg::abs((_height - 1)*sa), vy = cimg::abs((_height - 1)*ca), + w2 = 0.5f*(_width - 1), h2 = 0.5f*(_height - 1); + res.assign((int)cimg::round(1 + ux + vx),(int)cimg::round(1 + uy + vy),_depth,_spectrum); + const float rw2 = 0.5f*(res._width - 1), rh2 = 0.5f*(res._height - 1); + _rotate(res,nangle,interpolation,boundary_conditions,w2,h2,rw2,rh2); + } + return res; + } + + //! Rotate image with arbitrary angle, around a center point. + /** + \param angle Rotation angle, in degrees. + \param cx X-coordinate of the rotation center. + \param cy Y-coordinate of the rotation center. + \param interpolation Type of interpolation, { 0=nearest | 1=linear | 2=cubic | 3=mirror }. + \param boundary_conditions Boundary conditions, { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + **/ + CImg& rotate(const float angle, const float cx, const float cy, + const unsigned int interpolation, const unsigned int boundary_conditions=0) { + return get_rotate(angle,cx,cy,interpolation,boundary_conditions).move_to(*this); + } + + //! Rotate image with arbitrary angle, around a center point \newinstance. + CImg get_rotate(const float angle, const float cx, const float cy, + const unsigned int interpolation, const unsigned int boundary_conditions=0) const { + if (is_empty()) return *this; + CImg res(_width,_height,_depth,_spectrum); + _rotate(res,angle,interpolation,boundary_conditions,cx,cy,cx,cy); + return res; + } + + // [internal] Perform 2D rotation with arbitrary angle. + void _rotate(CImg& res, const float angle, + const unsigned int interpolation, const unsigned int boundary_conditions, + const float w2, const float h2, + const float rw2, const float rh2) const { + const float + rad = (float)(angle*cimg::PI/180.), + ca = (float)std::cos(rad), sa = (float)std::sin(rad); + + switch (boundary_conditions) { + case 3 : { // Mirror + + switch (interpolation) { + case 2 : { // Cubic interpolation + const float ww = 2.f*width(), hh = 2.f*height(); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),2048)) + cimg_forXYZC(res,x,y,z,c) { + const float xc = x - rw2, yc = y - rh2, + mx = cimg::mod(w2 + xc*ca + yc*sa,ww), + my = cimg::mod(h2 - xc*sa + yc*ca,hh); + res(x,y,z,c) = _cubic_atXY_c(mx{ 0=nearest | 1=linear | 2=cubic }. + \param boundary_conditions Boundary conditions. + Can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + \note Most of the time, size of the image is modified. + **/ + CImg rotate(const float u, const float v, const float w, const float angle, + const unsigned int interpolation, const unsigned int boundary_conditions) { + const float nangle = cimg::mod(angle,360.f); + if (nangle==0.f) return *this; + return get_rotate(u,v,w,nangle,interpolation,boundary_conditions).move_to(*this); + } + + //! Rotate volumetric image with arbitrary angle and axis \newinstance. + CImg get_rotate(const float u, const float v, const float w, const float angle, + const unsigned int interpolation, const unsigned int boundary_conditions) const { + if (is_empty()) return *this; + CImg res; + const float + w1 = _width - 1, h1 = _height - 1, d1 = _depth -1, + w2 = 0.5f*w1, h2 = 0.5f*h1, d2 = 0.5f*d1; + CImg R = CImg::rotation_matrix(u,v,w,angle); + const CImg + X = R*CImg(8,3,1,1, + 0.f,w1,w1,0.f,0.f,w1,w1,0.f, + 0.f,0.f,h1,h1,0.f,0.f,h1,h1, + 0.f,0.f,0.f,0.f,d1,d1,d1,d1); + float + xm, xM = X.get_shared_row(0).max_min(xm), + ym, yM = X.get_shared_row(1).max_min(ym), + zm, zM = X.get_shared_row(2).max_min(zm); + const int + dx = (int)cimg::round(xM - xm), + dy = (int)cimg::round(yM - ym), + dz = (int)cimg::round(zM - zm); + R.transpose(); + res.assign(1 + dx,1 + dy,1 + dz,_spectrum); + const float rw2 = 0.5f*dx, rh2 = 0.5f*dy, rd2 = 0.5f*dz; + _rotate(res,R,interpolation,boundary_conditions,w2,h2,d2,rw2,rh2,rd2); + return res; + } + + //! Rotate volumetric image with arbitrary angle and axis, around a center point. + /** + \param u X-coordinate of the 3D rotation axis. + \param v Y-coordinate of the 3D rotation axis. + \param w Z-coordinate of the 3D rotation axis. + \param angle Rotation angle, in degrees. + \param cx X-coordinate of the rotation center. + \param cy Y-coordinate of the rotation center. + \param cz Z-coordinate of the rotation center. + \param interpolation Type of interpolation. Can be { 0=nearest | 1=linear | 2=cubic | 3=mirror }. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann | 2=periodic }. + \note Most of the time, size of the image is modified. + **/ + CImg rotate(const float u, const float v, const float w, const float angle, + const float cx, const float cy, const float cz, + const unsigned int interpolation=1, const unsigned int boundary_conditions=0) { + const float nangle = cimg::mod(angle,360.f); + if (nangle==0.f) return *this; + return get_rotate(u,v,w,nangle,cx,cy,cz,interpolation,boundary_conditions).move_to(*this); + } + + //! Rotate volumetric image with arbitrary angle and axis, around a center point \newinstance. + CImg get_rotate(const float u, const float v, const float w, const float angle, + const float cx, const float cy, const float cz, + const unsigned int interpolation=1, const unsigned int boundary_conditions=0) const { + if (is_empty()) return *this; + CImg res(_width,_height,_depth,_spectrum); + CImg R = CImg::rotation_matrix(u,v,w,-angle); + _rotate(res,R,interpolation,boundary_conditions,cx,cy,cz,cx,cy,cz); + return res; + } + + // [internal] Perform 3D rotation with arbitrary axis and angle. + void _rotate(CImg& res, const CImg& R, + const unsigned int interpolation, const unsigned int boundary_conditions, + const float w2, const float h2, const float d2, + const float rw2, const float rh2, const float rd2) const { + switch (boundary_conditions) { + case 3 : // Mirror + switch (interpolation) { + case 2 : { // Cubic interpolation + const float ww = 2.f*width(), hh = 2.f*height(), dd = 2.f*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if_size(res.size(),2048)) + cimg_forXYZ(res,x,y,z) { + const float + xc = x - rw2, yc = y - rh2, zc = z - rd2, + X = cimg::mod((float)(w2 + R(0,0)*xc + R(1,0)*yc + R(2,0)*zc),ww), + Y = cimg::mod((float)(h2 + R(0,1)*xc + R(1,1)*yc + R(2,1)*zc),hh), + Z = cimg::mod((float)(d2 + R(0,2)*xc + R(1,2)*yc + R(2,2)*zc),dd); + cimg_forC(res,c) res(x,y,z,c) = _cubic_atXYZ_c(X{ 0=nearest | 1=linear | 2=cubic }. + \param boundary_conditions Boundary conditions { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + **/ + template + CImg& warp(const CImg& p_warp, const unsigned int mode=0, + const unsigned int interpolation=1, const unsigned int boundary_conditions=0) { + return get_warp(p_warp,mode,interpolation,boundary_conditions).move_to(*this); + } + + //! Warp image content by a warping field \newinstance + template + CImg get_warp(const CImg& p_warp, const unsigned int mode=0, + const unsigned int interpolation=1, const unsigned int boundary_conditions=0) const { + if (is_empty() || !p_warp) return *this; + if (mode && !is_sameXYZ(p_warp)) + throw CImgArgumentException(_cimg_instance + "warp(): Instance and specified relative warping field (%u,%u,%u,%u,%p) " + "have different XYZ dimensions.", + cimg_instance, + p_warp._width,p_warp._height,p_warp._depth,p_warp._spectrum,p_warp._data); + + CImg res(p_warp._width,p_warp._height,p_warp._depth,_spectrum); + + if (p_warp._spectrum==1) { // 1D warping + if (mode>=3) { // Forward-relative warp + res.fill((T)0); + if (interpolation>=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atX(*(ptrs++),x + (float)*(ptrs0++),y,z,c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int X = x + (int)cimg::round(*(ptrs0++)); + if (X>=0 && X=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atX(*(ptrs++),(float)*(ptrs0++),y,z,c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int X = (int)cimg::round(*(ptrs0++)); + if (X>=0 && X=3) { // Forward-relative warp + res.fill((T)0); + if (interpolation>=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atXY(*(ptrs++),x + (float)*(ptrs0++),y + (float)*(ptrs1++),z,c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int X = x + (int)cimg::round(*(ptrs0++)), Y = y + (int)cimg::round(*(ptrs1++)); + if (X>=0 && X=0 && Y=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atXY(*(ptrs++),(float)*(ptrs0++),(float)*(ptrs1++),z,c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int X = (int)cimg::round(*(ptrs0++)), Y = (int)cimg::round(*(ptrs1++)); + if (X>=0 && X=0 && Y=3) { // Forward-relative warp + res.fill((T)0); + if (interpolation>=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1), *ptrs2 = p_warp.data(0,y,z,2); + const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atXYZ(*(ptrs++),x + (float)*(ptrs0++),y + (float)*(ptrs1++), + z + (float)*(ptrs2++),c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1), *ptrs2 = p_warp.data(0,y,z,2); + const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int + X = x + (int)cimg::round(*(ptrs0++)), + Y = y + (int)cimg::round(*(ptrs1++)), + Z = z + (int)cimg::round(*(ptrs2++)); + if (X>=0 && X=0 && Y=0 && Z=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1), *ptrs2 = p_warp.data(0,y,z,2); + const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atXYZ(*(ptrs++),(float)*(ptrs0++),(float)*(ptrs1++),(float)*(ptrs2++),c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1), *ptrs2 = p_warp.data(0,y,z,2); + const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int + X = (int)cimg::round(*(ptrs0++)), + Y = (int)cimg::round(*(ptrs1++)), + Z = (int)cimg::round(*(ptrs2++)); + if (X>=0 && X=0 && Y=0 && Z get_projections2d(const unsigned int x0, const unsigned int y0, const unsigned int z0) const { + if (is_empty() || _depth<2) return +*this; + const unsigned int + _x0 = (x0>=_width)?_width - 1:x0, + _y0 = (y0>=_height)?_height - 1:y0, + _z0 = (z0>=_depth)?_depth - 1:z0; + const CImg + img_xy = get_crop(0,0,_z0,0,_width - 1,_height - 1,_z0,_spectrum - 1), + img_zy = get_crop(_x0,0,0,0,_x0,_height - 1,_depth - 1,_spectrum - 1).permute_axes("xzyc"). + resize(_depth,_height,1,-100,-1), + img_xz = get_crop(0,_y0,0,0,_width - 1,_y0,_depth - 1,_spectrum - 1).resize(_width,_depth,1,-100,-1); + return CImg(_width + _depth,_height + _depth,1,_spectrum,cimg::min(img_xy.min(),img_zy.min(),img_xz.min())). + draw_image(0,0,img_xy).draw_image(img_xy._width,0,img_zy). + draw_image(0,img_xy._height,img_xz); + } + + //! Construct a 2D representation of a 3D image, with XY,XZ and YZ views \inplace. + CImg& projections2d(const unsigned int x0, const unsigned int y0, const unsigned int z0) { + if (_depth<2) return *this; + return get_projections2d(x0,y0,z0).move_to(*this); + } + + //! Crop image region. + /** + \param x0 = X-coordinate of the upper-left crop rectangle corner. + \param y0 = Y-coordinate of the upper-left crop rectangle corner. + \param z0 = Z-coordinate of the upper-left crop rectangle corner. + \param c0 = C-coordinate of the upper-left crop rectangle corner. + \param x1 = X-coordinate of the lower-right crop rectangle corner. + \param y1 = Y-coordinate of the lower-right crop rectangle corner. + \param z1 = Z-coordinate of the lower-right crop rectangle corner. + \param c1 = C-coordinate of the lower-right crop rectangle corner. + \param boundary_conditions = Can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + **/ + CImg& crop(const int x0, const int y0, const int z0, const int c0, + const int x1, const int y1, const int z1, const int c1, + const unsigned int boundary_conditions=0) { + return get_crop(x0,y0,z0,c0,x1,y1,z1,c1,boundary_conditions).move_to(*this); + } + + //! Crop image region \newinstance. + CImg get_crop(const int x0, const int y0, const int z0, const int c0, + const int x1, const int y1, const int z1, const int c1, + const unsigned int boundary_conditions=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "crop(): Empty instance.", + cimg_instance); + const int + nx0 = x0=0 && nx1=0 && ny1=0 && nz1=0 && nc1 res(1U + nx1 - nx0,1U + ny1 - ny0,1U + nz1 - nz0,1U + nc1 - nc0); + if (nx0<0 || nx1>=width() || ny0<0 || ny1>=height() || nz0<0 || nz1>=depth() || nc0<0 || nc1>=spectrum()) + switch (_boundary_conditions) { + case 3 : { // Mirror + const int w2 = 2*width(), h2 = 2*height(), d2 = 2*depth(), s2 = 2*spectrum(); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && + _height*_depth*_spectrum>=4)) + cimg_forXYZC(res,x,y,z,c) { + const int + mx = cimg::mod(nx0 + x,w2), + my = cimg::mod(ny0 + y,h2), + mz = cimg::mod(nz0 + z,d2), + mc = cimg::mod(nc0 + c,s2); + res(x,y,z,c) = (*this)(mx=(cimg_openmp_sizefactor)*16 && + _height*_depth*_spectrum>=4)) + cimg_forXYZC(res,x,y,z,c) { + res(x,y,z,c) = (*this)(cimg::mod(nx0 + x,width()),cimg::mod(ny0 + y,height()), + cimg::mod(nz0 + z,depth()),cimg::mod(nc0 + c,spectrum())); + } + } break; + case 1 : // Neumann + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && + _height*_depth*_spectrum>=4)) + cimg_forXYZC(res,x,y,z,c) res(x,y,z,c) = _atXYZC(nx0 + x,ny0 + y,nz0 + z,nc0 + c); + break; + default : // Dirichlet + res.fill((T)0).draw_image(-nx0,-ny0,-nz0,-nc0,*this); + } + else res.draw_image(-nx0,-ny0,-nz0,-nc0,*this); + return res; + } + + //! Crop image region \overloading. + CImg& crop(const int x0, const int y0, const int z0, + const int x1, const int y1, const int z1, + const unsigned int boundary_conditions=0) { + return crop(x0,y0,z0,0,x1,y1,z1,_spectrum - 1,boundary_conditions); + } + + //! Crop image region \newinstance. + CImg get_crop(const int x0, const int y0, const int z0, + const int x1, const int y1, const int z1, + const unsigned int boundary_conditions=0) const { + return get_crop(x0,y0,z0,0,x1,y1,z1,_spectrum - 1,boundary_conditions); + } + + //! Crop image region \overloading. + CImg& crop(const int x0, const int y0, + const int x1, const int y1, + const unsigned int boundary_conditions=0) { + return crop(x0,y0,0,0,x1,y1,_depth - 1,_spectrum - 1,boundary_conditions); + } + + //! Crop image region \newinstance. + CImg get_crop(const int x0, const int y0, + const int x1, const int y1, + const unsigned int boundary_conditions=0) const { + return get_crop(x0,y0,0,0,x1,y1,_depth - 1,_spectrum - 1,boundary_conditions); + } + + //! Crop image region \overloading. + CImg& crop(const int x0, const int x1, const unsigned int boundary_conditions=0) { + return crop(x0,0,0,0,x1,_height - 1,_depth - 1,_spectrum - 1,boundary_conditions); + } + + //! Crop image region \newinstance. + CImg get_crop(const int x0, const int x1, const unsigned int boundary_conditions=0) const { + return get_crop(x0,0,0,0,x1,_height - 1,_depth - 1,_spectrum - 1,boundary_conditions); + } + + //! Autocrop image region, regarding the specified background value. + CImg& autocrop(const T& value, const char *const axes="czyx") { + if (is_empty()) return *this; + for (const char *s = axes; *s; ++s) { + const char axis = cimg::lowercase(*s); + const CImg coords = _autocrop(value,axis); + if (coords[0]==-1 && coords[1]==-1) return assign(); // Image has only 'value' pixels + else switch (axis) { + case 'x' : { + const int x0 = coords[0], x1 = coords[1]; + if (x0>=0 && x1>=0) crop(x0,x1); + } break; + case 'y' : { + const int y0 = coords[0], y1 = coords[1]; + if (y0>=0 && y1>=0) crop(0,y0,_width - 1,y1); + } break; + case 'z' : { + const int z0 = coords[0], z1 = coords[1]; + if (z0>=0 && z1>=0) crop(0,0,z0,_width - 1,_height - 1,z1); + } break; + default : { + const int c0 = coords[0], c1 = coords[1]; + if (c0>=0 && c1>=0) crop(0,0,0,c0,_width - 1,_height - 1,_depth - 1,c1); + } + } + } + return *this; + } + + //! Autocrop image region, regarding the specified background value \newinstance. + CImg get_autocrop(const T& value, const char *const axes="czyx") const { + return (+*this).autocrop(value,axes); + } + + //! Autocrop image region, regarding the specified background color. + /** + \param color Color used for the crop. If \c 0, color is guessed. + \param axes Axes used for the crop. + **/ + CImg& autocrop(const T *const color=0, const char *const axes="zyx") { + if (is_empty()) return *this; + if (!color) { // Guess color + const CImg col1 = get_vector_at(0,0,0); + const unsigned int w = _width, h = _height, d = _depth, s = _spectrum; + autocrop(col1,axes); + if (_width==w && _height==h && _depth==d && _spectrum==s) { + const CImg col2 = get_vector_at(w - 1,h - 1,d - 1); + autocrop(col2,axes); + } + return *this; + } + for (const char *s = axes; *s; ++s) { + const char axis = cimg::lowercase(*s); + switch (axis) { + case 'x' : { + int x0 = width(), x1 = -1; + cimg_forC(*this,c) { + const CImg coords = get_shared_channel(c)._autocrop(color[c],'x'); + const int nx0 = coords[0], nx1 = coords[1]; + if (nx0>=0 && nx1>=0) { x0 = std::min(x0,nx0); x1 = std::max(x1,nx1); } + } + if (x0==width() && x1==-1) return assign(); else crop(x0,x1); + } break; + case 'y' : { + int y0 = height(), y1 = -1; + cimg_forC(*this,c) { + const CImg coords = get_shared_channel(c)._autocrop(color[c],'y'); + const int ny0 = coords[0], ny1 = coords[1]; + if (ny0>=0 && ny1>=0) { y0 = std::min(y0,ny0); y1 = std::max(y1,ny1); } + } + if (y0==height() && y1==-1) return assign(); else crop(0,y0,_width - 1,y1); + } break; + default : { + int z0 = depth(), z1 = -1; + cimg_forC(*this,c) { + const CImg coords = get_shared_channel(c)._autocrop(color[c],'z'); + const int nz0 = coords[0], nz1 = coords[1]; + if (nz0>=0 && nz1>=0) { z0 = std::min(z0,nz0); z1 = std::max(z1,nz1); } + } + if (z0==depth() && z1==-1) return assign(); else crop(0,0,z0,_width - 1,_height - 1,z1); + } + } + } + return *this; + } + + //! Autocrop image region, regarding the specified background color \newinstance. + CImg get_autocrop(const T *const color=0, const char *const axes="zyx") const { + return (+*this).autocrop(color,axes); + } + + CImg _autocrop(const T& value, const char axis) const { + CImg res; + switch (cimg::lowercase(axis)) { + case 'x' : { + int x0 = -1, x1 = -1; + cimg_forX(*this,x) cimg_forYZC(*this,y,z,c) + if ((*this)(x,y,z,c)!=value) { x0 = x; x = width(); y = height(); z = depth(); c = spectrum(); } + if (x0>=0) { + for (int x = width() - 1; x>=0; --x) cimg_forYZC(*this,y,z,c) + if ((*this)(x,y,z,c)!=value) { x1 = x; x = 0; y = height(); z = depth(); c = spectrum(); } + } + res = CImg::vector(x0,x1); + } break; + case 'y' : { + int y0 = -1, y1 = -1; + cimg_forY(*this,y) cimg_forXZC(*this,x,z,c) + if ((*this)(x,y,z,c)!=value) { y0 = y; x = width(); y = height(); z = depth(); c = spectrum(); } + if (y0>=0) { + for (int y = height() - 1; y>=0; --y) cimg_forXZC(*this,x,z,c) + if ((*this)(x,y,z,c)!=value) { y1 = y; x = width(); y = 0; z = depth(); c = spectrum(); } + } + res = CImg::vector(y0,y1); + } break; + case 'z' : { + int z0 = -1, z1 = -1; + cimg_forZ(*this,z) cimg_forXYC(*this,x,y,c) + if ((*this)(x,y,z,c)!=value) { z0 = z; x = width(); y = height(); z = depth(); c = spectrum(); } + if (z0>=0) { + for (int z = depth() - 1; z>=0; --z) cimg_forXYC(*this,x,y,c) + if ((*this)(x,y,z,c)!=value) { z1 = z; x = width(); y = height(); z = 0; c = spectrum(); } + } + res = CImg::vector(z0,z1); + } break; + default : { + int c0 = -1, c1 = -1; + cimg_forC(*this,c) cimg_forXYZ(*this,x,y,z) + if ((*this)(x,y,z,c)!=value) { c0 = c; x = width(); y = height(); z = depth(); c = spectrum(); } + if (c0>=0) { + for (int c = spectrum() - 1; c>=0; --c) cimg_forXYZ(*this,x,y,z) + if ((*this)(x,y,z,c)!=value) { c1 = c; x = width(); y = height(); z = depth(); c = 0; } + } + res = CImg::vector(c0,c1); + } + } + return res; + } + + //! Return specified image column. + /** + \param x0 Image column. + **/ + CImg get_column(const int x0) const { + return get_columns(x0,x0); + } + + //! Return specified image column \inplace. + CImg& column(const int x0) { + return columns(x0,x0); + } + + //! Return specified range of image columns. + /** + \param x0 Starting image column. + \param x1 Ending image column. + **/ + CImg& columns(const int x0, const int x1) { + return get_columns(x0,x1).move_to(*this); + } + + //! Return specified range of image columns \inplace. + CImg get_columns(const int x0, const int x1) const { + return get_crop(x0,0,0,0,x1,height() - 1,depth() - 1,spectrum() - 1); + } + + //! Return specified image row. + CImg get_row(const int y0) const { + return get_rows(y0,y0); + } + + //! Return specified image row \inplace. + /** + \param y0 Image row. + **/ + CImg& row(const int y0) { + return rows(y0,y0); + } + + //! Return specified range of image rows. + /** + \param y0 Starting image row. + \param y1 Ending image row. + **/ + CImg get_rows(const int y0, const int y1) const { + return get_crop(0,y0,0,0,width() - 1,y1,depth() - 1,spectrum() - 1); + } + + //! Return specified range of image rows \inplace. + CImg& rows(const int y0, const int y1) { + return get_rows(y0,y1).move_to(*this); + } + + //! Return specified image slice. + /** + \param z0 Image slice. + **/ + CImg get_slice(const int z0) const { + return get_slices(z0,z0); + } + + //! Return specified image slice \inplace. + CImg& slice(const int z0) { + return slices(z0,z0); + } + + //! Return specified range of image slices. + /** + \param z0 Starting image slice. + \param z1 Ending image slice. + **/ + CImg get_slices(const int z0, const int z1) const { + return get_crop(0,0,z0,0,width() - 1,height() - 1,z1,spectrum() - 1); + } + + //! Return specified range of image slices \inplace. + CImg& slices(const int z0, const int z1) { + return get_slices(z0,z1).move_to(*this); + } + + //! Return specified image channel. + /** + \param c0 Image channel. + **/ + CImg get_channel(const int c0) const { + return get_channels(c0,c0); + } + + //! Return specified image channel \inplace. + CImg& channel(const int c0) { + return channels(c0,c0); + } + + //! Return specified range of image channels. + /** + \param c0 Starting image channel. + \param c1 Ending image channel. + **/ + CImg get_channels(const int c0, const int c1) const { + return get_crop(0,0,0,c0,width() - 1,height() - 1,depth() - 1,c1); + } + + //! Return specified range of image channels \inplace. + CImg& channels(const int c0, const int c1) { + return get_channels(c0,c1).move_to(*this); + } + + //! Return stream line of a 2D or 3D vector field. + CImg get_streamline(const float x, const float y, const float z, + const float L=256, const float dl=0.1f, + const unsigned int interpolation_type=2, const bool is_backward_tracking=false, + const bool is_oriented_only=false) const { + if (_spectrum!=2 && _spectrum!=3) + throw CImgInstanceException(_cimg_instance + "streamline(): Instance is not a 2D or 3D vector field.", + cimg_instance); + if (_spectrum==2) { + if (is_oriented_only) { + typename CImg::_functor4d_streamline2d_oriented func(*this); + return streamline(func,x,y,z,L,dl,interpolation_type,is_backward_tracking,true, + 0,0,0,_width - 1.f,_height - 1.f,0.f); + } else { + typename CImg::_functor4d_streamline2d_directed func(*this); + return streamline(func,x,y,z,L,dl,interpolation_type,is_backward_tracking,false, + 0,0,0,_width - 1.f,_height - 1.f,0.f); + } + } + if (is_oriented_only) { + typename CImg::_functor4d_streamline3d_oriented func(*this); + return streamline(func,x,y,z,L,dl,interpolation_type,is_backward_tracking,true, + 0,0,0,_width - 1.f,_height - 1.f,_depth - 1.f); + } + typename CImg::_functor4d_streamline3d_directed func(*this); + return streamline(func,x,y,z,L,dl,interpolation_type,is_backward_tracking,false, + 0,0,0,_width - 1.f,_height - 1.f,_depth - 1.f); + } + + //! Return stream line of a 3D vector field. + /** + \param func Vector field function. + \param x X-coordinate of the starting point of the streamline. + \param y Y-coordinate of the starting point of the streamline. + \param z Z-coordinate of the starting point of the streamline. + \param L Streamline length. + \param dl Streamline length increment. + \param interpolation_type Type of interpolation. + Can be { 0=nearest int | 1=linear | 2=2nd-order RK | 3=4th-order RK. }. + \param is_backward_tracking Tells if the streamline is estimated forward or backward. + \param is_oriented_only Tells if the direction of the vectors must be ignored. + \param x0 X-coordinate of the first bounding-box vertex. + \param y0 Y-coordinate of the first bounding-box vertex. + \param z0 Z-coordinate of the first bounding-box vertex. + \param x1 X-coordinate of the second bounding-box vertex. + \param y1 Y-coordinate of the second bounding-box vertex. + \param z1 Z-coordinate of the second bounding-box vertex. + **/ + template + static CImg streamline(const tfunc& func, + const float x, const float y, const float z, + const float L=256, const float dl=0.1f, + const unsigned int interpolation_type=2, const bool is_backward_tracking=false, + const bool is_oriented_only=false, + const float x0=0, const float y0=0, const float z0=0, + const float x1=0, const float y1=0, const float z1=0) { + if (dl<=0) + throw CImgArgumentException("CImg<%s>::streamline(): Invalid specified integration length %g " + "(should be >0).", + pixel_type(), + dl); + + const bool is_bounded = (x0!=x1 || y0!=y1 || z0!=z1); + if (L<=0 || (is_bounded && (xx1 || yy1 || zz1))) return CImg(); + const unsigned int size_L = (unsigned int)cimg::round(L/dl + 1); + CImg coordinates(size_L,3); + const float dl2 = dl/2; + float + *ptr_x = coordinates.data(0,0), + *ptr_y = coordinates.data(0,1), + *ptr_z = coordinates.data(0,2), + pu = (float)(dl*func(x,y,z,0)), + pv = (float)(dl*func(x,y,z,1)), + pw = (float)(dl*func(x,y,z,2)), + X = x, Y = y, Z = z; + + switch (interpolation_type) { + case 0 : { // Nearest integer interpolation + cimg_forX(coordinates,l) { + *(ptr_x++) = X; *(ptr_y++) = Y; *(ptr_z++) = Z; + const int + xi = (int)(X>0?X + 0.5f:X - 0.5f), + yi = (int)(Y>0?Y + 0.5f:Y - 0.5f), + zi = (int)(Z>0?Z + 0.5f:Z - 0.5f); + float + u = (float)(dl*func((float)xi,(float)yi,(float)zi,0)), + v = (float)(dl*func((float)xi,(float)yi,(float)zi,1)), + w = (float)(dl*func((float)xi,(float)yi,(float)zi,2)); + if (is_oriented_only && u*pu + v*pv + w*pw<0) { u = -u; v = -v; w = -w; } + if (is_backward_tracking) { X-=(pu=u); Y-=(pv=v); Z-=(pw=w); } else { X+=(pu=u); Y+=(pv=v); Z+=(pw=w); } + if (is_bounded && (Xx1 || Yy1 || Zz1)) break; + } + } break; + case 1 : { // First-order interpolation + cimg_forX(coordinates,l) { + *(ptr_x++) = X; *(ptr_y++) = Y; *(ptr_z++) = Z; + float + u = (float)(dl*func(X,Y,Z,0)), + v = (float)(dl*func(X,Y,Z,1)), + w = (float)(dl*func(X,Y,Z,2)); + if (is_oriented_only && u*pu + v*pv + w*pw<0) { u = -u; v = -v; w = -w; } + if (is_backward_tracking) { X-=(pu=u); Y-=(pv=v); Z-=(pw=w); } else { X+=(pu=u); Y+=(pv=v); Z+=(pw=w); } + if (is_bounded && (Xx1 || Yy1 || Zz1)) break; + } + } break; + case 2 : { // Second order interpolation + cimg_forX(coordinates,l) { + *(ptr_x++) = X; *(ptr_y++) = Y; *(ptr_z++) = Z; + float + u0 = (float)(dl2*func(X,Y,Z,0)), + v0 = (float)(dl2*func(X,Y,Z,1)), + w0 = (float)(dl2*func(X,Y,Z,2)); + if (is_oriented_only && u0*pu + v0*pv + w0*pw<0) { u0 = -u0; v0 = -v0; w0 = -w0; } + float + u = (float)(dl*func(X + u0,Y + v0,Z + w0,0)), + v = (float)(dl*func(X + u0,Y + v0,Z + w0,1)), + w = (float)(dl*func(X + u0,Y + v0,Z + w0,2)); + if (is_oriented_only && u*pu + v*pv + w*pw<0) { u = -u; v = -v; w = -w; } + if (is_backward_tracking) { X-=(pu=u); Y-=(pv=v); Z-=(pw=w); } else { X+=(pu=u); Y+=(pv=v); Z+=(pw=w); } + if (is_bounded && (Xx1 || Yy1 || Zz1)) break; + } + } break; + default : { // Fourth order interpolation + cimg_forX(coordinates,k) { + *(ptr_x++) = X; *(ptr_y++) = Y; *(ptr_z++) = Z; + float + u0 = (float)(dl2*func(X,Y,Z,0)), + v0 = (float)(dl2*func(X,Y,Z,1)), + w0 = (float)(dl2*func(X,Y,Z,2)); + if (is_oriented_only && u0*pu + v0*pv + w0*pw<0) { u0 = -u0; v0 = -v0; w0 = -w0; } + float + u1 = (float)(dl2*func(X + u0,Y + v0,Z + w0,0)), + v1 = (float)(dl2*func(X + u0,Y + v0,Z + w0,1)), + w1 = (float)(dl2*func(X + u0,Y + v0,Z + w0,2)); + if (is_oriented_only && u1*pu + v1*pv + w1*pw<0) { u1 = -u1; v1 = -v1; w1 = -w1; } + float + u2 = (float)(dl2*func(X + u1,Y + v1,Z + w1,0)), + v2 = (float)(dl2*func(X + u1,Y + v1,Z + w1,1)), + w2 = (float)(dl2*func(X + u1,Y + v1,Z + w1,2)); + if (is_oriented_only && u2*pu + v2*pv + w2*pw<0) { u2 = -u2; v2 = -v2; w2 = -w2; } + float + u3 = (float)(dl2*func(X + u2,Y + v2,Z + w2,0)), + v3 = (float)(dl2*func(X + u2,Y + v2,Z + w2,1)), + w3 = (float)(dl2*func(X + u2,Y + v2,Z + w2,2)); + if (is_oriented_only && u2*pu + v2*pv + w2*pw<0) { u3 = -u3; v3 = -v3; w3 = -w3; } + const float + u = (u0 + u3)/3 + (u1 + u2)/1.5f, + v = (v0 + v3)/3 + (v1 + v2)/1.5f, + w = (w0 + w3)/3 + (w1 + w2)/1.5f; + if (is_backward_tracking) { X-=(pu=u); Y-=(pv=v); Z-=(pw=w); } else { X+=(pu=u); Y+=(pv=v); Z+=(pw=w); } + if (is_bounded && (Xx1 || Yy1 || Zz1)) break; + } + } + } + if (ptr_x!=coordinates.data(0,1)) coordinates.resize((int)(ptr_x-coordinates.data()),3,1,1,0); + return coordinates; + } + + //! Return stream line of a 3D vector field \overloading. + static CImg streamline(const char *const expression, + const float x, const float y, const float z, + const float L=256, const float dl=0.1f, + const unsigned int interpolation_type=2, const bool is_backward_tracking=true, + const bool is_oriented_only=false, + const float x0=0, const float y0=0, const float z0=0, + const float x1=0, const float y1=0, const float z1=0) { + _functor4d_streamline_expr func(expression); + return streamline(func,x,y,z,L,dl,interpolation_type,is_backward_tracking,is_oriented_only,x0,y0,z0,x1,y1,z1); + } + + struct _functor4d_streamline2d_directed { + const CImg& ref; + _functor4d_streamline2d_directed(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y, const float z, const unsigned int c) const { + return c<2?(float)ref._linear_atXY(x,y,(int)z,c):0; + } + }; + + struct _functor4d_streamline3d_directed { + const CImg& ref; + _functor4d_streamline3d_directed(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y, const float z, const unsigned int c) const { + return (float)ref._linear_atXYZ(x,y,z,c); + } + }; + + struct _functor4d_streamline2d_oriented { + const CImg& ref; + CImg *pI; + _functor4d_streamline2d_oriented(const CImg& pref):ref(pref),pI(0) { pI = new CImg(2,2,1,2); } + ~_functor4d_streamline2d_oriented() { delete pI; } + float operator()(const float x, const float y, const float z, const unsigned int c) const { +#define _cimg_vecalign2d(i,j) \ + if (I(i,j,0)*I(0,0,0) + I(i,j,1)*I(0,0,1)<0) { I(i,j,0) = -I(i,j,0); I(i,j,1) = -I(i,j,1); } + int + xi = (int)x - (x>=0?0:1), nxi = xi + 1, + yi = (int)y - (y>=0?0:1), nyi = yi + 1, + zi = (int)z; + const float + dx = x - xi, + dy = y - yi; + if (c==0) { + CImg& I = *pI; + if (xi<0) xi = 0; + if (nxi<0) nxi = 0; + if (xi>=ref.width()) xi = ref.width() - 1; + if (nxi>=ref.width()) nxi = ref.width() - 1; + if (yi<0) yi = 0; + if (nyi<0) nyi = 0; + if (yi>=ref.height()) yi = ref.height() - 1; + if (nyi>=ref.height()) nyi = ref.height() - 1; + I(0,0,0) = (float)ref(xi,yi,zi,0); I(0,0,1) = (float)ref(xi,yi,zi,1); + I(1,0,0) = (float)ref(nxi,yi,zi,0); I(1,0,1) = (float)ref(nxi,yi,zi,1); + I(1,1,0) = (float)ref(nxi,nyi,zi,0); I(1,1,1) = (float)ref(nxi,nyi,zi,1); + I(0,1,0) = (float)ref(xi,nyi,zi,0); I(0,1,1) = (float)ref(xi,nyi,zi,1); + _cimg_vecalign2d(1,0); _cimg_vecalign2d(1,1); _cimg_vecalign2d(0,1); + } + return c<2?(float)pI->_linear_atXY(dx,dy,0,c):0; + } + }; + + struct _functor4d_streamline3d_oriented { + const CImg& ref; + CImg *pI; + _functor4d_streamline3d_oriented(const CImg& pref):ref(pref),pI(0) { pI = new CImg(2,2,2,3); } + ~_functor4d_streamline3d_oriented() { delete pI; } + float operator()(const float x, const float y, const float z, const unsigned int c) const { +#define _cimg_vecalign3d(i,j,k) if (I(i,j,k,0)*I(0,0,0,0) + I(i,j,k,1)*I(0,0,0,1) + I(i,j,k,2)*I(0,0,0,2)<0) { \ + I(i,j,k,0) = -I(i,j,k,0); I(i,j,k,1) = -I(i,j,k,1); I(i,j,k,2) = -I(i,j,k,2); } + int + xi = (int)x - (x>=0?0:1), nxi = xi + 1, + yi = (int)y - (y>=0?0:1), nyi = yi + 1, + zi = (int)z - (z>=0?0:1), nzi = zi + 1; + const float + dx = x - xi, + dy = y - yi, + dz = z - zi; + if (c==0) { + CImg& I = *pI; + if (xi<0) xi = 0; + if (nxi<0) nxi = 0; + if (xi>=ref.width()) xi = ref.width() - 1; + if (nxi>=ref.width()) nxi = ref.width() - 1; + if (yi<0) yi = 0; + if (nyi<0) nyi = 0; + if (yi>=ref.height()) yi = ref.height() - 1; + if (nyi>=ref.height()) nyi = ref.height() - 1; + if (zi<0) zi = 0; + if (nzi<0) nzi = 0; + if (zi>=ref.depth()) zi = ref.depth() - 1; + if (nzi>=ref.depth()) nzi = ref.depth() - 1; + I(0,0,0,0) = (float)ref(xi,yi,zi,0); I(0,0,0,1) = (float)ref(xi,yi,zi,1); + I(0,0,0,2) = (float)ref(xi,yi,zi,2); I(1,0,0,0) = (float)ref(nxi,yi,zi,0); + I(1,0,0,1) = (float)ref(nxi,yi,zi,1); I(1,0,0,2) = (float)ref(nxi,yi,zi,2); + I(1,1,0,0) = (float)ref(nxi,nyi,zi,0); I(1,1,0,1) = (float)ref(nxi,nyi,zi,1); + I(1,1,0,2) = (float)ref(nxi,nyi,zi,2); I(0,1,0,0) = (float)ref(xi,nyi,zi,0); + I(0,1,0,1) = (float)ref(xi,nyi,zi,1); I(0,1,0,2) = (float)ref(xi,nyi,zi,2); + I(0,0,1,0) = (float)ref(xi,yi,nzi,0); I(0,0,1,1) = (float)ref(xi,yi,nzi,1); + I(0,0,1,2) = (float)ref(xi,yi,nzi,2); I(1,0,1,0) = (float)ref(nxi,yi,nzi,0); + I(1,0,1,1) = (float)ref(nxi,yi,nzi,1); I(1,0,1,2) = (float)ref(nxi,yi,nzi,2); + I(1,1,1,0) = (float)ref(nxi,nyi,nzi,0); I(1,1,1,1) = (float)ref(nxi,nyi,nzi,1); + I(1,1,1,2) = (float)ref(nxi,nyi,nzi,2); I(0,1,1,0) = (float)ref(xi,nyi,nzi,0); + I(0,1,1,1) = (float)ref(xi,nyi,nzi,1); I(0,1,1,2) = (float)ref(xi,nyi,nzi,2); + _cimg_vecalign3d(1,0,0); _cimg_vecalign3d(1,1,0); _cimg_vecalign3d(0,1,0); + _cimg_vecalign3d(0,0,1); _cimg_vecalign3d(1,0,1); _cimg_vecalign3d(1,1,1); _cimg_vecalign3d(0,1,1); + } + return (float)pI->_linear_atXYZ(dx,dy,dz,c); + } + }; + + struct _functor4d_streamline_expr { + _cimg_math_parser *mp; + ~_functor4d_streamline_expr() { mp->end(); delete mp; } + _functor4d_streamline_expr(const char *const expr):mp(0) { + mp = new _cimg_math_parser(expr,"streamline",CImg::const_empty(),0); + } + float operator()(const float x, const float y, const float z, const unsigned int c) const { + return (float)(*mp)(x,y,z,c); + } + }; + + //! Return a shared-memory image referencing a range of pixels of the image instance. + /** + \param x0 X-coordinate of the starting pixel. + \param x1 X-coordinate of the ending pixel. + \param y0 Y-coordinate. + \param z0 Z-coordinate. + \param c0 C-coordinate. + **/ + CImg get_shared_points(const unsigned int x0, const unsigned int x1, + const unsigned int y0=0, const unsigned int z0=0, const unsigned int c0=0) { + const ulongT + beg = (ulongT)offset(x0,y0,z0,c0), + end = (ulongT)offset(x1,y0,z0,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_points(): Invalid request of a shared-memory subset (%u->%u,%u,%u,%u).", + cimg_instance, + x0,x1,y0,z0,c0); + return CImg(_data + beg,x1 - x0 + 1,1,1,1,true); + } + + //! Return a shared-memory image referencing a range of pixels of the image instance \const. + const CImg get_shared_points(const unsigned int x0, const unsigned int x1, + const unsigned int y0=0, const unsigned int z0=0, const unsigned int c0=0) const { + const ulongT + beg = (ulongT)offset(x0,y0,z0,c0), + end = (ulongT)offset(x1,y0,z0,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_points(): Invalid request of a shared-memory subset (%u->%u,%u,%u,%u).", + cimg_instance, + x0,x1,y0,z0,c0); + return CImg(_data + beg,x1 - x0 + 1,1,1,1,true); + } + + //! Return a shared-memory image referencing a range of rows of the image instance. + /** + \param y0 Y-coordinate of the starting row. + \param y1 Y-coordinate of the ending row. + \param z0 Z-coordinate. + \param c0 C-coordinate. + **/ + CImg get_shared_rows(const unsigned int y0, const unsigned int y1, + const unsigned int z0=0, const unsigned int c0=0) { + const ulongT + beg = (ulongT)offset(0,y0,z0,c0), + end = (ulongT)offset(0,y1,z0,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_rows(): Invalid request of a shared-memory subset " + "(0->%u,%u->%u,%u,%u).", + cimg_instance, + _width - 1,y0,y1,z0,c0); + return CImg(_data + beg,_width,y1 - y0 + 1,1,1,true); + } + + //! Return a shared-memory image referencing a range of rows of the image instance \const. + const CImg get_shared_rows(const unsigned int y0, const unsigned int y1, + const unsigned int z0=0, const unsigned int c0=0) const { + const ulongT + beg = (ulongT)offset(0,y0,z0,c0), + end = (ulongT)offset(0,y1,z0,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_rows(): Invalid request of a shared-memory subset " + "(0->%u,%u->%u,%u,%u).", + cimg_instance, + _width - 1,y0,y1,z0,c0); + return CImg(_data + beg,_width,y1 - y0 + 1,1,1,true); + } + + //! Return a shared-memory image referencing one row of the image instance. + /** + \param y0 Y-coordinate. + \param z0 Z-coordinate. + \param c0 C-coordinate. + **/ + CImg get_shared_row(const unsigned int y0, const unsigned int z0=0, const unsigned int c0=0) { + return get_shared_rows(y0,y0,z0,c0); + } + + //! Return a shared-memory image referencing one row of the image instance \const. + const CImg get_shared_row(const unsigned int y0, const unsigned int z0=0, const unsigned int c0=0) const { + return get_shared_rows(y0,y0,z0,c0); + } + + //! Return a shared memory image referencing a range of slices of the image instance. + /** + \param z0 Z-coordinate of the starting slice. + \param z1 Z-coordinate of the ending slice. + \param c0 C-coordinate. + **/ + CImg get_shared_slices(const unsigned int z0, const unsigned int z1, const unsigned int c0=0) { + const ulongT + beg = (ulongT)offset(0,0,z0,c0), + end = (ulongT)offset(0,0,z1,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_slices(): Invalid request of a shared-memory subset " + "(0->%u,0->%u,%u->%u,%u).", + cimg_instance, + _width - 1,_height - 1,z0,z1,c0); + return CImg(_data + beg,_width,_height,z1 - z0 + 1,1,true); + } + + //! Return a shared memory image referencing a range of slices of the image instance \const. + const CImg get_shared_slices(const unsigned int z0, const unsigned int z1, const unsigned int c0=0) const { + const ulongT + beg = (ulongT)offset(0,0,z0,c0), + end = (ulongT)offset(0,0,z1,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_slices(): Invalid request of a shared-memory subset " + "(0->%u,0->%u,%u->%u,%u).", + cimg_instance, + _width - 1,_height - 1,z0,z1,c0); + return CImg(_data + beg,_width,_height,z1 - z0 + 1,1,true); + } + + //! Return a shared-memory image referencing one slice of the image instance. + /** + \param z0 Z-coordinate. + \param c0 C-coordinate. + **/ + CImg get_shared_slice(const unsigned int z0, const unsigned int c0=0) { + return get_shared_slices(z0,z0,c0); + } + + //! Return a shared-memory image referencing one slice of the image instance \const. + const CImg get_shared_slice(const unsigned int z0, const unsigned int c0=0) const { + return get_shared_slices(z0,z0,c0); + } + + //! Return a shared-memory image referencing a range of channels of the image instance. + /** + \param c0 C-coordinate of the starting channel. + \param c1 C-coordinate of the ending channel. + **/ + CImg get_shared_channels(const unsigned int c0, const unsigned int c1) { + const ulongT + beg = (ulongT)offset(0,0,0,c0), + end = (ulongT)offset(0,0,0,c1); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_channels(): Invalid request of a shared-memory subset " + "(0->%u,0->%u,0->%u,%u->%u).", + cimg_instance, + _width - 1,_height - 1,_depth - 1,c0,c1); + return CImg(_data + beg,_width,_height,_depth,c1 - c0 + 1,true); + } + + //! Return a shared-memory image referencing a range of channels of the image instance \const. + const CImg get_shared_channels(const unsigned int c0, const unsigned int c1) const { + const ulongT + beg = (ulongT)offset(0,0,0,c0), + end = (ulongT)offset(0,0,0,c1); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_channels(): Invalid request of a shared-memory subset " + "(0->%u,0->%u,0->%u,%u->%u).", + cimg_instance, + _width - 1,_height - 1,_depth - 1,c0,c1); + return CImg(_data + beg,_width,_height,_depth,c1 - c0 + 1,true); + } + + //! Return a shared-memory image referencing one channel of the image instance. + /** + \param c0 C-coordinate. + **/ + CImg get_shared_channel(const unsigned int c0) { + return get_shared_channels(c0,c0); + } + + //! Return a shared-memory image referencing one channel of the image instance \const. + const CImg get_shared_channel(const unsigned int c0) const { + return get_shared_channels(c0,c0); + } + + //! Return a shared-memory version of the image instance. + CImg get_shared() { + return CImg(_data,_width,_height,_depth,_spectrum,true); + } + + //! Return a shared-memory version of the image instance \const. + const CImg get_shared() const { + return CImg(_data,_width,_height,_depth,_spectrum,true); + } + + //! Split image into a list along specified axis. + /** + \param axis Splitting axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \param nb Number of split parts. + \note + - If \c nb==0, instance image is split into blocs of egal values along the specified axis. + - If \c nb<=0, instance image is split into blocs of -\c nb pixel wide. + - If \c nb>0, instance image is split into \c nb blocs. + **/ + CImgList get_split(const char axis, const int nb=-1) const { + CImgList res; + if (is_empty()) return res; + const char _axis = cimg::lowercase(axis); + + if (nb<0) { // Split by bloc size + const unsigned int dp = (unsigned int)(nb?-nb:1); + switch (_axis) { + case 'x': { + if (_width>dp) { + res.assign(_width/dp + (_width%dp?1:0),1,1); + const unsigned int pe = _width - dp; + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*128 && + _height*_depth*_spectrum>=128)) + for (int p = 0; p<(int)pe; p+=dp) + get_crop(p,0,0,0,p + dp - 1,_height - 1,_depth - 1,_spectrum - 1).move_to(res[p/dp]); + get_crop((res._width - 1)*dp,0,0,0,_width - 1,_height - 1,_depth - 1,_spectrum - 1).move_to(res.back()); + } else res.assign(*this); + } break; + case 'y': { + if (_height>dp) { + res.assign(_height/dp + (_height%dp?1:0),1,1); + const unsigned int pe = _height - dp; + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*128 && + _width*_depth*_spectrum>=128)) + for (int p = 0; p<(int)pe; p+=dp) + get_crop(0,p,0,0,_width - 1,p + dp - 1,_depth - 1,_spectrum - 1).move_to(res[p/dp]); + get_crop(0,(res._width - 1)*dp,0,0,_width - 1,_height - 1,_depth - 1,_spectrum - 1).move_to(res.back()); + } else res.assign(*this); + } break; + case 'z': { + if (_depth>dp) { + res.assign(_depth/dp + (_depth%dp?1:0),1,1); + const unsigned int pe = _depth - dp; + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*128 && + _width*_height*_spectrum>=128)) + for (int p = 0; p<(int)pe; p+=dp) + get_crop(0,0,p,0,_width - 1,_height - 1,p + dp - 1,_spectrum - 1).move_to(res[p/dp]); + get_crop(0,0,(res._width - 1)*dp,0,_width - 1,_height - 1,_depth - 1,_spectrum - 1).move_to(res.back()); + } else res.assign(*this); + } break; + case 'c' : { + if (_spectrum>dp) { + res.assign(_spectrum/dp + (_spectrum%dp?1:0),1,1); + const unsigned int pe = _spectrum - dp; + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*128 && + _width*_height*_depth>=128)) + for (int p = 0; p<(int)pe; p+=dp) + get_crop(0,0,0,p,_width - 1,_height - 1,_depth - 1,p + dp - 1).move_to(res[p/dp]); + get_crop(0,0,0,(res._width - 1)*dp,_width - 1,_height - 1,_depth - 1,_spectrum - 1).move_to(res.back()); + } else res.assign(*this); + } + } + } else if (nb>0) { // Split by number of (non-homogeneous) blocs + const unsigned int siz = _axis=='x'?_width:_axis=='y'?_height:_axis=='z'?_depth:_axis=='c'?_spectrum:0; + if ((unsigned int)nb>siz) + throw CImgArgumentException(_cimg_instance + "get_split(): Instance cannot be split along %c-axis into %u blocs.", + cimg_instance, + axis,nb); + if (nb==1) res.assign(*this); + else { + int err = (int)siz; + unsigned int _p = 0; + switch (_axis) { + case 'x' : { + cimg_forX(*this,p) if ((err-=nb)<=0) { + get_crop(_p,0,0,0,p,_height - 1,_depth - 1,_spectrum - 1).move_to(res); + err+=(int)siz; + _p = p + 1U; + } + } break; + case 'y' : { + cimg_forY(*this,p) if ((err-=nb)<=0) { + get_crop(0,_p,0,0,_width - 1,p,_depth - 1,_spectrum - 1).move_to(res); + err+=(int)siz; + _p = p + 1U; + } + } break; + case 'z' : { + cimg_forZ(*this,p) if ((err-=nb)<=0) { + get_crop(0,0,_p,0,_width - 1,_height - 1,p,_spectrum - 1).move_to(res); + err+=(int)siz; + _p = p + 1U; + } + } break; + case 'c' : { + cimg_forC(*this,p) if ((err-=nb)<=0) { + get_crop(0,0,0,_p,_width - 1,_height - 1,_depth - 1,p).move_to(res); + err+=(int)siz; + _p = p + 1U; + } + } + } + } + } else { // Split by egal values according to specified axis + T current = *_data; + switch (_axis) { + case 'x' : { + int i0 = 0; + cimg_forX(*this,i) + if ((*this)(i)!=current) { get_columns(i0,i - 1).move_to(res); i0 = i; current = (*this)(i); } + get_columns(i0,width() - 1).move_to(res); + } break; + case 'y' : { + int i0 = 0; + cimg_forY(*this,i) + if ((*this)(0,i)!=current) { get_rows(i0,i - 1).move_to(res); i0 = i; current = (*this)(0,i); } + get_rows(i0,height() - 1).move_to(res); + } break; + case 'z' : { + int i0 = 0; + cimg_forZ(*this,i) + if ((*this)(0,0,i)!=current) { get_slices(i0,i - 1).move_to(res); i0 = i; current = (*this)(0,0,i); } + get_slices(i0,depth() - 1).move_to(res); + } break; + case 'c' : { + int i0 = 0; + cimg_forC(*this,i) + if ((*this)(0,0,0,i)!=current) { get_channels(i0,i - 1).move_to(res); i0 = i; current = (*this)(0,0,0,i); } + get_channels(i0,spectrum() - 1).move_to(res); + } break; + default : { + longT i0 = 0; + cimg_foroff(*this,i) + if ((*this)[i]!=current) { + CImg(_data + i0,1,(unsigned int)(i - i0)).move_to(res); + i0 = (longT)i; current = (*this)[i]; + } + CImg(_data + i0,1,(unsigned int)(size() - i0)).move_to(res); + } + } + } + return res; + } + + //! Split image into a list of sub-images, according to a specified splitting value sequence and optionally axis. + /** + \param values Splitting value sequence. + \param axis Axis along which the splitting is performed. Can be '0' to ignore axis. + \param keep_values Tells if the splitting sequence must be kept in the split blocs. + **/ + template + CImgList get_split(const CImg& values, const char axis=0, const bool keep_values=true) const { + typedef _cimg_Tt Tt; + + CImgList res; + if (is_empty()) return res; + const ulongT vsiz = values.size(); + const char _axis = cimg::lowercase(axis); + if (!vsiz) return CImgList(*this); + if (vsiz==1) { // Split according to a single value + const T value = (T)*values; + switch (_axis) { + case 'x' : { + unsigned int i0 = 0, i = 0; + do { + while (i<_width && (*this)(i)==value) ++i; + if (i>i0) { if (keep_values) get_columns(i0,i - 1).move_to(res); i0 = i; } + while (i<_width && (*this)(i)!=value) ++i; + if (i>i0) { get_columns(i0,i - 1).move_to(res); i0 = i; } + } while (i<_width); + } break; + case 'y' : { + unsigned int i0 = 0, i = 0; + do { + while (i<_height && (*this)(0,i)==value) ++i; + if (i>i0) { if (keep_values) get_rows(i0,i - 1).move_to(res); i0 = i; } + while (i<_height && (*this)(0,i)!=value) ++i; + if (i>i0) { get_rows(i0,i - 1).move_to(res); i0 = i; } + } while (i<_height); + } break; + case 'z' : { + unsigned int i0 = 0, i = 0; + do { + while (i<_depth && (*this)(0,0,i)==value) ++i; + if (i>i0) { if (keep_values) get_slices(i0,i - 1).move_to(res); i0 = i; } + while (i<_depth && (*this)(0,0,i)!=value) ++i; + if (i>i0) { get_slices(i0,i - 1).move_to(res); i0 = i; } + } while (i<_depth); + } break; + case 'c' : { + unsigned int i0 = 0, i = 0; + do { + while (i<_spectrum && (*this)(0,0,0,i)==value) ++i; + if (i>i0) { if (keep_values) get_channels(i0,i - 1).move_to(res); i0 = i; } + while (i<_spectrum && (*this)(0,0,0,i)!=value) ++i; + if (i>i0) { get_channels(i0,i - 1).move_to(res); i0 = i; } + } while (i<_spectrum); + } break; + default : { + const ulongT siz = size(); + ulongT i0 = 0, i = 0; + do { + while (ii0) { + if (keep_values) CImg(_data + i0,1,(unsigned int)(i - i0)).move_to(res); + i0 = i; + } + while (ii0) { CImg(_data + i0,1,(unsigned int)(i - i0)).move_to(res); i0 = i; } + } while (i=vsiz) j = 0; } + i-=j; + if (i>i1) { + if (i1>i0) get_columns(i0,i1 - 1).move_to(res); + if (keep_values) get_columns(i1,i - 1).move_to(res); + i0 = i; + } else ++i; + } else ++i; + } while (i<_width); + if (i0<_width) get_columns(i0,width() - 1).move_to(res); + } break; + case 'y' : { + unsigned int i0 = 0, i1 = 0, i = 0; + do { + if ((Tt)(*this)(0,i)==(Tt)*values) { + i1 = i; j = 0; + while (i<_height && (Tt)(*this)(0,i)==(Tt)values[j]) { ++i; if (++j>=vsiz) j = 0; } + i-=j; + if (i>i1) { + if (i1>i0) get_rows(i0,i1 - 1).move_to(res); + if (keep_values) get_rows(i1,i - 1).move_to(res); + i0 = i; + } else ++i; + } else ++i; + } while (i<_height); + if (i0<_height) get_rows(i0,height() - 1).move_to(res); + } break; + case 'z' : { + unsigned int i0 = 0, i1 = 0, i = 0; + do { + if ((Tt)(*this)(0,0,i)==(Tt)*values) { + i1 = i; j = 0; + while (i<_depth && (Tt)(*this)(0,0,i)==(Tt)values[j]) { ++i; if (++j>=vsiz) j = 0; } + i-=j; + if (i>i1) { + if (i1>i0) get_slices(i0,i1 - 1).move_to(res); + if (keep_values) get_slices(i1,i - 1).move_to(res); + i0 = i; + } else ++i; + } else ++i; + } while (i<_depth); + if (i0<_depth) get_slices(i0,depth() - 1).move_to(res); + } break; + case 'c' : { + unsigned int i0 = 0, i1 = 0, i = 0; + do { + if ((Tt)(*this)(0,0,0,i)==(Tt)*values) { + i1 = i; j = 0; + while (i<_spectrum && (Tt)(*this)(0,0,0,i)==(Tt)values[j]) { ++i; if (++j>=vsiz) j = 0; } + i-=j; + if (i>i1) { + if (i1>i0) get_channels(i0,i1 - 1).move_to(res); + if (keep_values) get_channels(i1,i - 1).move_to(res); + i0 = i; + } else ++i; + } else ++i; + } while (i<_spectrum); + if (i0<_spectrum) get_channels(i0,spectrum() - 1).move_to(res); + } break; + default : { + const ulongT siz = size(); + ulongT i0 = 0, i1 = 0, i = 0; + do { + if ((Tt)(*this)[i]==(Tt)*values) { + i1 = i; j = 0; + while (i=vsiz) j = 0; } + i-=j; + if (i>i1) { + if (i1>i0) CImg(_data + i0,1,(unsigned int)(i1 - i0)).move_to(res); + if (keep_values) CImg(_data + i1,1,(unsigned int)(i - i1)).move_to(res); + i0 = i; + } else ++i; + } else ++i; + } while (i(_data + i0,1,(unsigned int)(siz - i0)).move_to(res); + } break; + } + } + return res; + } + + //! Append two images along specified axis. + /** + \param img Image to append with instance image. + \param axis Appending axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Append alignment in \c [0,1]. + **/ + template + CImg& append(const CImg& img, const char axis='x', const float align=0) { + if (is_empty()) return assign(img,false); + if (!img) return *this; + return CImgList(*this,true).insert(img).get_append(axis,align).move_to(*this); + } + + //! Append two images along specified axis \specialization. + CImg& append(const CImg& img, const char axis='x', const float align=0) { + if (is_empty()) return assign(img,false); + if (!img) return *this; + return CImgList(*this,img,true).get_append(axis,align).move_to(*this); + } + + //! Append two images along specified axis \const. + template + CImg<_cimg_Tt> get_append(const CImg& img, const char axis='x', const float align=0) const { + if (is_empty()) return +img; + if (!img) return +*this; + return CImgList<_cimg_Tt>(*this,true).insert(img).get_append(axis,align); + } + + //! Append two images along specified axis \specialization. + CImg get_append(const CImg& img, const char axis='x', const float align=0) const { + if (is_empty()) return +img; + if (!img) return +*this; + return CImgList(*this,img,true).get_append(axis,align); + } + + //@} + //--------------------------------------- + // + //! \name Filtering / Transforms + //@{ + //--------------------------------------- + + //! Correlate image by a kernel. + /** + \param kernel = the correlation kernel. + \param boundary_conditions Boundary condition. Can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + \param is_normalized = enable local normalization. + \param channel mode Channel processing mode. Can be { 0=sum inputs | 1=one-for-one | 2=expand } + \param xcenter X-coordinate of the kernel center (~0U means 'centered'). + \param xstart Starting X-coordinate of the instance image. + \param xend Ending X-coordinate of the instance image. + \param xstride Stride along the X-axis. + \param xdilation Dilation along the X-axis. + \param ycenter Y-coordinate of the kernel center (~0U means 'centered'). + \param ystart Starting Y-coordinate of the instance image. + \param yend Ending Y-coordinate of the instance image. + \param ystride Stride along the Y-axis. + \param ydilation Dilation along the Y-axis. + \param zcenter Z-coordinate of the kernel center (~0U means 'centered'). + \param zstart Starting Z-coordinate of the instance image. + \param zend Ending Z-coordinate of the instance image. + \param zstride Stride along the Z-axis. + \param zdilation Dilation along the Z-axis. + \note + - The correlation of the image instance \p *this by the kernel \p kernel is defined to be: + res(x,y,z) = sum_{i,j,k} (*this)(\alpha_x\;x + \beta_x\;(i - c_x),\alpha_y\;y + \beta_y\;(j - + c_y),\alpha_z\;z + \beta_z\;(k - c_z))*kernel(i,j,k). + **/ + template + CImg& correlate(const CImg& kernel, const unsigned int boundary_conditions=1, + const bool is_normalized=false, const unsigned int channel_mode=1, + const unsigned int xcenter=~0U, const unsigned int ycenter=~0U, const unsigned int zcenter=~0U, + const unsigned int xstart=0, const unsigned int ystart=0, const unsigned zstart=0, + const unsigned int xend=~0U, const unsigned int yend=~0U, const unsigned int zend=~0U, + const float xstride=1, const float ystride=1, const float zstride=1, + const float xdilation=1, const float ydilation=1, const float zdilation=1) { + if (is_empty() || !kernel) return *this; + return get_correlate(kernel,boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter,xstart,ystart,zstart,xend,yend,zend, + xstride,ystride,zstride,xdilation,ydilation,zdilation).move_to(*this); + } + + template + CImg<_cimg_Ttfloat> get_correlate(const CImg& kernel, const unsigned int boundary_conditions=1, + const bool is_normalized=false, const unsigned int channel_mode=1, + const unsigned int xcenter=~0U, const unsigned int ycenter=~0U, + const unsigned int zcenter=~0U, + const unsigned int xstart=0, const unsigned int ystart=0, const unsigned zstart=0, + const unsigned int xend=~0U, const unsigned int yend=~0U, + const unsigned int zend=~0U, + const float xstride=1, const float ystride=1, const float zstride=1, + const float xdilation=1, const float ydilation=1, const float zdilation=1) const { + return _correlate(kernel,boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter,xstart,ystart,zstart,xend,yend,zend, + xstride,ystride,zstride,xdilation,ydilation,zdilation,false); + } + + //! Correlate image by a kernel \newinstance. + template + CImg<_cimg_Ttfloat> _correlate(const CImg& kernel, const unsigned int boundary_conditions, + const bool is_normalized, const unsigned int channel_mode, + const unsigned int xcenter, const unsigned int ycenter, const unsigned int zcenter, + const unsigned int xstart, const unsigned int ystart, const unsigned zstart, + const unsigned int xend, const unsigned int yend, const unsigned int zend, + const float xstride, const float ystride, const float zstride, + const float xdilation, const float ydilation, const float zdilation, + const bool is_convolve) const { + if (is_empty() || !kernel) return *this; + typedef _cimg_Ttfloat Ttfloat; + CImg res; + _cimg_abort_init_openmp; + cimg_abort_init; + + if (xstart>xend || ystart>yend || zstart>zend) + throw CImgArgumentException(_cimg_instance + "%s(): Invalid xyz-start/end arguments (start = (%u,%u,%u), end = (%u,%u,%u)).", + cimg_instance, + is_convolve?"convolve":"correlate", + xstart,ystart,zstart,xend,yend,zend); + if (xstride<=0 || ystride<=0 || zstride<=0) + throw CImgArgumentException(_cimg_instance + "%s(): Invalid stride arguments (%g,%g,%g).", + cimg_instance, + is_convolve?"convolve":"correlate", + xstride,ystride,zstride); + const int + _xstart = (int)std::min(xstart,_width - 1), + _ystart = (int)std::min(ystart,_height - 1), + _zstart = (int)std::min(zstart,_depth - 1), + _xend = (int)std::min(xend,_width - 1), + _yend = (int)std::min(yend,_height - 1), + _zend = (int)std::min(zend,_depth - 1), + nwidth = 1 + (int)std::floor((_xend - _xstart)/xstride), + nheight = 1 + (int)std::floor((_yend - _ystart)/ystride), + ndepth = 1 + (int)std::floor((_zend + _zstart)/zstride), + _xstride = (int)cimg::round(xstride), + _ystride = (int)cimg::round(ystride), + _zstride = (int)cimg::round(zstride); + + const ulongT + res_whd = (ulongT)nwidth*nheight*ndepth, + res_size = res_whd*res._spectrum; + const bool + is_inner_parallel = res_whd>=(cimg_openmp_sizefactor)*32768, + is_outer_parallel = res_size>=(cimg_openmp_sizefactor)*32768; + cimg::unused(is_inner_parallel,is_outer_parallel); + + int + _xcenter = xcenter==~0U?kernel.width()/2 - 1 + (kernel.width()%2):(int)std::min(xcenter,kernel._width - 1), + _ycenter = ycenter==~0U?kernel.height()/2 - 1 + (kernel.height()%2):(int)std::min(ycenter,kernel._height - 1), + _zcenter = zcenter==~0U?kernel.depth()/2 - 1 + (kernel.depth()%2):(int)std::min(zcenter,kernel._depth - 1), + _xdilation = (int)cimg::round(xdilation), + _ydilation = (int)cimg::round(ydilation), + _zdilation = (int)cimg::round(zdilation); + + const bool is_int_stride_dilation = + xstride==_xstride && ystride==_ystride && zstride==_zstride && + xdilation==_xdilation && ydilation==_ydilation && zdilation==_zdilation; + + CImg _kernel; + if (is_convolve) { // If convolution, go back to correlation + _kernel = CImg(kernel._data,kernel.size()/kernel._spectrum,1,1,kernel._spectrum,true). + get_mirror('x').resize(kernel,-1); + _xcenter = kernel.width() - 1 - _xcenter; + _ycenter = kernel.height() - 1 - _ycenter; + _zcenter = kernel.depth() - 1 - _zcenter; + } else _kernel = kernel.get_shared(); + + if (_kernel._width==_kernel._height && _kernel._width>1 && _kernel._height>1 && + ((_kernel._depth==1 && _kernel._width<=5) || (_kernel._depth==_kernel._width && _kernel._width<=3)) && + boundary_conditions<=1 && channel_mode && + _xcenter==_kernel.width()/2 - 1 + (_kernel.width()%2) && + _ycenter==_kernel.height()/2 - 1 + (_kernel.height()%2) && + _zcenter==_kernel.depth()/2 - 1 + (_kernel.depth()%2) && + is_int_stride_dilation && _xdilation>=0 && _ydilation>=0 && _zdilation>=0) { + + // Optimized versions for centered 2x2, 3x3, 4x4, 5x5, 2x2x2 and 3x3x3 kernels. + const int dw = 1 - (_kernel.width()%2), dh = 1 - (_kernel.height()%2), dd = 1 - (_kernel.depth()%2); + if (dw || dh || dd) // Force kernel size to be odd + _kernel.get_resize(_kernel.width() + dw,_kernel.height() + dh,_kernel.depth() + dd,_kernel.spectrum(), + 0,0,1,1,1).move_to(_kernel.assign()); + + if (!boundary_conditions) { // Dirichlet -> Add a 1px zero border, then use _correlate() with Neumann + const int + dx = _kernel._width==1?0:1, + dy = _kernel._height==1?0:1, + dz = _kernel._depth==1?0:1; + return get_crop(-dx,-dy,-dz,width() - 1 + dx,height() - 1 + dy,depth() - 1 + dz). + _correlate(_kernel,true,is_normalized,channel_mode,_xcenter,_ycenter,_zcenter, + _xstart + dx,_ystart + dy,_zstart + dz,_xend + dx,_yend + dy,_zend + dz, + xstride,ystride,zstride,xdilation,ydilation,zdilation,false); + + } else { // Neumann boundaries + res.assign(nwidth,nheight,ndepth,std::max(_spectrum,_kernel._spectrum)); + + switch (_kernel._depth) { + case 3 : { // 3x3x3 centered kernel + cimg_forC(res,c) { + cimg_abort_test; + const CImg I = get_shared_channel(c%_spectrum); + const CImg K = _kernel.get_shared_channel(c%kernel._spectrum); + const int w1 = I.width() - 1, h1 = I.height() - 1, d1 = I.depth() - 1; + CImg _res = res.get_shared_channel(c); + if (is_normalized) { + const Ttfloat M = (Ttfloat)K.magnitude(2), M2 = M*M; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(_res.size(),16384)) + cimg_forXYZ(res,X,Y,Z) { + const int + x = _xstart + _xstride*X, y = _ystart + _ystride*Y, z = _zstart + _zstride*Z, + px = x - _xdilation>0?x - _xdilation:0, nx = x + _xdilation0?y - _ydilation:0, ny = y + _ydilation0?z - _zdilation:0, nz = z + _zdilation0?x - _xdilation:0, nx = x + _xdilation0?y - _ydilation:0, ny = y + _ydilation0?z - _zdilation:0, nz = z + _zdilation I = get_shared_channel(c%_spectrum); + const CImg K = _kernel.get_shared_channel(c%kernel._spectrum); + const int w1 = I.width() - 1, h1 = I.height() - 1; + CImg _res = res.get_shared_channel(c); + if (is_normalized) { + const Ttfloat M = (Ttfloat)K.magnitude(2), M2 = M*M; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(_res.size(),16384)) + cimg_forXYZ(res,X,Y,z) { + const int + x = _xstart + _xstride*X, y = _ystart + _ystride*Y, + px = x - _xdilation>0?x - _xdilation:0, bx = px - _xdilation>0?px - _xdilation:0, + nx = x + _xdilation0?y - _ydilation:0, by = py - _ydilation>0?py - _ydilation:0, + ny = y + _ydilation0?x - _xdilation:0, bx = px - _xdilation>0?px - _xdilation:0, + nx = x + _xdilation0?y - _ydilation:0, by = py - _ydilation>0?py - _ydilation:0, + ny = y + _ydilation I = get_shared_channel(c%_spectrum); + const CImg K = _kernel.get_shared_channel(c%kernel._spectrum); + CImg _res = res.get_shared_channel(c); + const int w1 = I.width() - 1, h1 = I.height() - 1; + if (is_normalized) { + const Ttfloat M = (Ttfloat)K.magnitude(2), M2 = M*M; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(_res.size(),16384)) + cimg_forXYZ(res,X,Y,z) { + const int + x = _xstart + _xstride*X, y = _ystart + _ystride*Y, + px = x - _xdilation>0?x - _xdilation:0, nx = x + _xdilation0?y - _ydilation:0, ny = y + _ydilation0?x - _xdilation:0, nx = x + _xdilation0?y - _ydilation:0, ny = y + _ydilation res0 = res.get_shared_channel(0); + for (int c = 1; c K = _kernel.get_shared_channel(kc%_kernel._spectrum); + int w2 = 0, h2 = 0, d2 = 0; + Ttfloat M = 0, M2 = 0; + if (is_normalized) { M = (Ttfloat)K.magnitude(2); M2 = M*M; } + if (boundary_conditions>=3) { w2 = 2*width(); h2 = 2*height(); d2 = 2*depth(); } + res.fill(0); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(is_inner_parallel)) + cimg_forXYZC(res,x,y,z,c) { + Ttfloat _val, val = 0, N = 0; + + if (is_int_stride_dilation) + cimg_forXYZ(_kernel,p,q,r) { + const int + ix = (int)xstart + _xstride*x + _xdilation*(p - _xcenter), + iy = (int)ystart + _ystride*y + _ydilation*(q - _ycenter), + iz = (int)zstart + _zstride*z + _zdilation*(r - _zcenter); + switch (boundary_conditions) { + case 0 : _val = atXYZ(ix,iy,iz,c,0); break; // Dirichlet + case 1 : _val = _atXYZ(ix,iy,iz,c); break; // Neumann + case 2 : _val = (*this)(cimg::mod(ix,width()),cimg::mod(iy,height()), // Periodic + cimg::mod(iz,depth()),c); break; + default : { // Mirror + const int mx = cimg::mod(ix,w2), my = cimg::mod(iy,h2), mz = cimg::mod(iz,d2); + _val = (*this)(mx I = get_shared_channel(c%_spectrum); + const CImg K = _kernel.get_shared_channel(channel_mode==1?c%_kernel._spectrum:c/_spectrum); + int w2 = 0, h2 = 0, d2 = 0; + Ttfloat M = 0, M2 = 0; + if (is_normalized) { M = (Ttfloat)K.magnitude(2); M2 = M*M; } + if (boundary_conditions>=3) { w2 = 2*I.width(); h2 = 2*I.height(); d2 = 2*I.depth(); } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(is_inner_parallel)) + cimg_forXYZ(res,x,y,z) { + Ttfloat _val, val = 0, N = 0; + + if (is_int_stride_dilation) + cimg_forXYZ(_kernel,p,q,r) { + const int + ix = (int)xstart + _xstride*x + _xdilation*(p - _xcenter), + iy = (int)ystart + _ystride*y + _ydilation*(q - _ycenter), + iz = (int)zstart + _zstride*z + _zdilation*(r - _zcenter); + switch (boundary_conditions) { + case 0 : _val = I.atXYZ(ix,iy,iz,0,0); break; // Dirichlet + case 1 : _val = I._atXYZ(ix,iy,iz); break; // Neumann + case 2 : _val = I(cimg::mod(ix,I.width()),cimg::mod(iy,I.height()), // Periodic + cimg::mod(iz,I.depth())); break; + default : { // Mirror + const int mx = cimg::mod(ix,w2), my = cimg::mod(iy,h2), mz = cimg::mod(iz,d2); + _val = I(mx + CImg& convolve(const CImg& kernel, const unsigned int boundary_conditions=1, + const bool is_normalized=false, const unsigned int channel_mode=1, + const unsigned int xcenter=~0U, const unsigned int ycenter=~0U, const unsigned int zcenter=~0U, + const unsigned int xstart=0, const unsigned int ystart=0, const unsigned zstart=0, + const unsigned int xend=~0U, const unsigned int yend=~0U, const unsigned int zend=~0U, + const float xstride=1, const float ystride=1, const float zstride=1, + const float xdilation=1, const float ydilation=1, const float zdilation=1) { + if (is_empty() || !kernel) return *this; + return get_convolve(kernel,boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter,xstart,ystart,zstart,xend,yend,zend, + xstride,ystride,zstride,xdilation,ydilation,zdilation).move_to(*this); + } + + //! Convolve image by a kernel \newinstance. + template + CImg<_cimg_Ttfloat> get_convolve(const CImg& kernel, const unsigned int boundary_conditions=1, + const bool is_normalized=false, const unsigned int channel_mode=1, + const unsigned int xcenter=~0U, const unsigned int ycenter=~0U, + const unsigned int zcenter=~0U, + const unsigned int xstart=0, const unsigned int ystart=0, const unsigned zstart=0, + const unsigned int xend=~0U, const unsigned int yend=~0U, + const unsigned int zend=~0U, + const float xstride=1, const float ystride=1, const float zstride=1, + const float xdilation=1, const float ydilation=1, const float zdilation=1) const { + return _correlate(kernel,boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter,xstart,ystart,zstart,xend,yend,zend, + xstride,ystride,zstride,xdilation,ydilation,zdilation,true); + } + + //! Cumulate image values, optionally along specified axis. + /** + \param axis Cumulation axis. Set it to 0 to cumulate all values globally without taking axes into account. + **/ + CImg& cumulate(const char axis=0) { + switch (cimg::lowercase(axis)) { + case 'x' : + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth*_spectrum>=16)) + cimg_forYZC(*this,y,z,c) { + T *ptrd = data(0,y,z,c); + Tlong cumul = (Tlong)0; + cimg_forX(*this,x) { cumul+=(Tlong)*ptrd; *(ptrd++) = (T)cumul; } + } + break; + case 'y' : { + const ulongT w = (ulongT)_width; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_height>=(cimg_openmp_sizefactor)*512 && + _width*_depth*_spectrum>=16)) + cimg_forXZC(*this,x,z,c) { + T *ptrd = data(x,0,z,c); + Tlong cumul = (Tlong)0; + cimg_forY(*this,y) { cumul+=(Tlong)*ptrd; *ptrd = (T)cumul; ptrd+=w; } + } + } break; + case 'z' : { + const ulongT wh = (ulongT)_width*_height; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_depth>=(cimg_openmp_sizefactor)*512 && + _width*_depth*_spectrum>=16)) + cimg_forXYC(*this,x,y,c) { + T *ptrd = data(x,y,0,c); + Tlong cumul = (Tlong)0; + cimg_forZ(*this,z) { cumul+=(Tlong)*ptrd; *ptrd = (T)cumul; ptrd+=wh; } + } + } break; + case 'c' : { + const ulongT whd = (ulongT)_width*_height*_depth; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) + cimg_openmp_if(_spectrum>=(cimg_openmp_sizefactor)*512 && _width*_height*_depth>=16)) + cimg_forXYZ(*this,x,y,z) { + T *ptrd = data(x,y,z,0); + Tlong cumul = (Tlong)0; + cimg_forC(*this,c) { cumul+=(Tlong)*ptrd; *ptrd = (T)cumul; ptrd+=whd; } + } + } break; + default : { // Global cumulation + Tlong cumul = (Tlong)0; + cimg_for(*this,ptrd,T) { cumul+=(Tlong)*ptrd; *ptrd = (T)cumul; } + } + } + return *this; + } + + //! Cumulate image values, optionally along specified axis \newinstance. + CImg get_cumulate(const char axis=0) const { + return CImg(*this,false).cumulate(axis); + } + + //! Cumulate image values, along specified axes. + /** + \param axes Cumulation axes, as a C-string. + \note \c axes may contains multiple characters, e.g. \c "xyz" + **/ + CImg& cumulate(const char *const axes) { + for (const char *s = axes; *s; ++s) cumulate(*s); + return *this; + } + + //! Cumulate image values, along specified axes \newinstance. + CImg get_cumulate(const char *const axes) const { + return CImg(*this,false).cumulate(axes); + } + + //! Erode image by a structuring element. + /** + \param kernel Structuring element. + \param boundary_conditions Boundary conditions. + \param is_real Do the erosion in real (a.k.a 'non-flat') mode (\c true) rather than binary mode (\c false). + **/ + template + CImg& erode(const CImg& kernel, const bool boundary_conditions=true, + const bool is_real=false) { + if (is_empty() || !kernel) return *this; + return get_erode(kernel,boundary_conditions,is_real).move_to(*this); + } + + //! Erode image by a structuring element \newinstance. + template + CImg<_cimg_Tt> get_erode(const CImg& kernel, const bool boundary_conditions=true, + const bool is_real=false) const { + if (is_empty() || !kernel) return *this; + if (!is_real && kernel==0) return CImg(width(),height(),depth(),spectrum(),0); + typedef _cimg_Tt Tt; + CImg res(_width,_height,_depth,std::max(_spectrum,kernel._spectrum)); + const int + mx2 = kernel.width()/2, my2 = kernel.height()/2, mz2 = kernel.depth()/2, + mx1 = kernel.width() - mx2 - 1, my1 = kernel.height() - my2 - 1, mz1 = kernel.depth() - mz2 - 1, + mxe = width() - mx2, mye = height() - my2, mze = depth() - mz2; + const bool + is_inner_parallel = _width*_height*_depth>=(cimg_openmp_sizefactor)*32768, + is_outer_parallel = res.size()>=(cimg_openmp_sizefactor)*32768; + cimg::unused(is_inner_parallel,is_outer_parallel); + _cimg_abort_init_openmp; + cimg_abort_init; + cimg_pragma_openmp(parallel for cimg_openmp_if(!is_inner_parallel && is_outer_parallel)) + cimg_forC(res,c) _cimg_abort_try_openmp { + cimg_abort_test; + const CImg img = get_shared_channel(c%_spectrum); + const CImg K = kernel.get_shared_channel(c%kernel._spectrum); + if (is_real) { // Real erosion + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(is_inner_parallel)) + for (int z = mz1; z::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx1 + xm,my1 + ym,mz1 + zm); + const Tt cval = (Tt)(img(x + xm,y + ym,z + zm) - mval); + if (cval=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt min_val = cimg::type::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx1 + xm,my1 + ym,mz1 + zm); + const Tt cval = (Tt)(img._atXYZ(x + xm,y + ym,z + zm) - mval); + if (cval=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt min_val = cimg::type::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx1 + xm,my1 + ym,mz1 + zm); + const Tt cval = (Tt)(img.atXYZ(x + xm,y + ym,z + zm,0,(T)0) - mval); + if (cval::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx1 + xm,my1 + ym,mz1 + zm)) { + const Tt cval = (Tt)img(x + xm,y + ym,z + zm); + if (cval=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt min_val = cimg::type::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx1 + xm,my1 + ym,mz1 + zm)) { + const Tt cval = (Tt)img._atXYZ(x + xm,y + ym,z + zm); + if (cval=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt min_val = cimg::type::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx1 + xm,my1 + ym,mz1 + zm)) { + const Tt cval = (Tt)img.atXYZ(x + xm,y + ym,z + zm,0,(T)0); + if (cval& erode(const unsigned int sx, const unsigned int sy, const unsigned int sz=1) { + if (is_empty() || (sx==1 && sy==1 && sz==1)) return *this; + if (sx>1 && _width>1) { // Along X-axis + const int L = width(), off = 1, s = (int)sx, _s2 = s/2 + 1, _s1 = s - _s2, s1 = _s1>L?L:_s1, s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forYZC(*this,y,z,c) { + T *const ptrdb = buf._data, *ptrd = buf._data, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(0,y,z,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val<=cur) { cur = val; is_first = false; }} + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(0,y,z,c); cur = std::min(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val1 && _height>1) { // Along Y-axis + const int L = height(), off = width(), s = (int)sy, _s2 = s/2 + 1, _s1 = s - _s2, s1 = _s1>L?L:_s1, + s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forXZC(*this,x,z,c) { + T *const ptrdb = buf._data, *ptrd = ptrdb, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(x,0,z,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val<=cur) { cur = val; is_first = false; } + } + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(x,0,z,c); cur = std::min(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val1 && _depth>1) { // Along Z-axis + const int L = depth(), off = width()*height(), s = (int)sz, _s2 = s/2 + 1, _s1 = s - _s2, s1 = _s1>L?L:_s1, + s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forXYC(*this,x,y,c) { + T *const ptrdb = buf._data, *ptrd = ptrdb, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(x,y,0,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val<=cur) { cur = val; is_first = false; } + } + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(x,y,0,c); cur = std::min(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val get_erode(const unsigned int sx, const unsigned int sy, const unsigned int sz=1) const { + return (+*this).erode(sx,sy,sz); + } + + //! Erode the image by a square structuring element of specified size. + /** + \param s Size of the structuring element. + **/ + CImg& erode(const unsigned int s) { + return erode(s,s,s); + } + + //! Erode the image by a square structuring element of specified size \newinstance. + CImg get_erode(const unsigned int s) const { + return (+*this).erode(s); + } + + //! Dilate image by a structuring element. + /** + \param kernel Structuring element. + \param boundary_conditions Boundary conditions. + \param is_real Do the dilation in real (a.k.a 'non-flat') mode (\c true) rather than binary mode (\c false). + **/ + template + CImg& dilate(const CImg& kernel, const bool boundary_conditions=true, + const bool is_real=false) { + if (is_empty() || !kernel) return *this; + return get_dilate(kernel,boundary_conditions,is_real).move_to(*this); + } + + //! Dilate image by a structuring element \newinstance. + template + CImg<_cimg_Tt> get_dilate(const CImg& kernel, const bool boundary_conditions=true, + const bool is_real=false) const { + if (is_empty() || !kernel || (!is_real && kernel==0)) return *this; + typedef _cimg_Tt Tt; + CImg res(_width,_height,_depth,std::max(_spectrum,kernel._spectrum)); + const int + mx1 = kernel.width()/2, my1 = kernel.height()/2, mz1 = kernel.depth()/2, + mx2 = kernel.width() - mx1 - 1, my2 = kernel.height() - my1 - 1, mz2 = kernel.depth() - mz1 - 1, + mxe = width() - mx2, mye = height() - my2, mze = depth() - mz2; + const bool + is_inner_parallel = _width*_height*_depth>=(cimg_openmp_sizefactor)*32768, + is_outer_parallel = res.size()>=(cimg_openmp_sizefactor)*32768; + cimg::unused(is_inner_parallel,is_outer_parallel); + _cimg_abort_init_openmp; + cimg_abort_init; + cimg_pragma_openmp(parallel for cimg_openmp_if(!is_inner_parallel && is_outer_parallel)) + cimg_forC(res,c) _cimg_abort_try_openmp { + cimg_abort_test; + const CImg img = get_shared_channel(c%_spectrum); + const CImg K = kernel.get_shared_channel(c%kernel._spectrum); + if (is_real) { // Real dilation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(is_inner_parallel)) + for (int z = mz1; z::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx2 - xm,my2 - ym,mz2 - zm); + const Tt cval = (Tt)(img(x + xm,y + ym,z + zm) + mval); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } _cimg_abort_catch_openmp2 + if (boundary_conditions) + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(is_inner_parallel)) + cimg_forYZ(res,y,z) _cimg_abort_try_openmp2 { + cimg_abort_test2; + for (int x = 0; x=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt max_val = cimg::type::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx2 - xm,my2 - ym,mz2 - zm); + const Tt cval = (Tt)(img._atXYZ(x + xm,y + ym,z + zm) + mval); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } + } _cimg_abort_catch_openmp2 + else + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(is_inner_parallel)) + cimg_forYZ(*this,y,z) _cimg_abort_try_openmp2 { + cimg_abort_test2; + for (int x = 0; x=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt max_val = cimg::type::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx2 - xm,my2 - ym,mz2 - zm); + const Tt cval = (Tt)(img.atXYZ(x + xm,y + ym,z + zm,0,(T)0) + mval); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } + } _cimg_abort_catch_openmp2 + } else { // Binary dilation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(is_inner_parallel)) + for (int z = mz1; z::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx2 - xm,my2 - ym,mz2 - zm)) { + const Tt cval = (Tt)img(x + xm,y + ym,z + zm); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } _cimg_abort_catch_openmp2 + if (boundary_conditions) + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(is_inner_parallel)) + cimg_forYZ(res,y,z) _cimg_abort_try_openmp2 { + cimg_abort_test2; + for (int x = 0; x=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt max_val = cimg::type::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx2 - xm,my2 - ym,mz2 - zm)) { + const Tt cval = (Tt)img._atXYZ(x + xm,y + ym,z + zm); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } + } _cimg_abort_catch_openmp2 + else + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(is_inner_parallel)) + cimg_forYZ(res,y,z) _cimg_abort_try_openmp2 { + cimg_abort_test2; + for (int x = 0; x=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt max_val = cimg::type::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx2 - xm,my2 - ym,mz2 - zm)) { + const Tt cval = (Tt)img.atXYZ(x + xm,y + ym,z + zm,0,(T)0); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } + } _cimg_abort_catch_openmp2 + } + } _cimg_abort_catch_openmp + cimg_abort_test; + return res; + } + + //! Dilate image by a rectangular structuring element of specified size. + /** + \param sx Width of the structuring element. + \param sy Height of the structuring element. + \param sz Depth of the structuring element. + **/ + CImg& dilate(const unsigned int sx, const unsigned int sy, const unsigned int sz=1) { + if (is_empty() || (sx==1 && sy==1 && sz==1)) return *this; + if (sx>1 && _width>1) { // Along X-axis + const int L = width(), off = 1, s = (int)sx, _s1 = s/2, _s2 = s - _s1, s1 = _s1>L?L:_s1, s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forYZC(*this,y,z,c) { + T *const ptrdb = buf._data, *ptrd = ptrdb, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(0,y,z,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val>=cur) { cur = val; is_first = false; } + } + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(0,y,z,c); cur = std::max(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs=cur) { cur = val; is_first = false; } + *(ptrd++) = cur; + } + for (int p = L - s - 1; p>0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval>cur) cur = nval; } + nptrs-=off; const T nval = *nptrs; if (nval>cur) { cur = nval; is_first = true; } else is_first = false; + } else { if (val>=cur) cur = val; else if (cur==*(ptrs-s*off)) is_first = true; } + *(ptrd++) = cur; + } + ptrd = ptrde; ptrs = ptrse; cur = *ptrs; ptrs-=off; + for (int p = s1; p>0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val>cur) cur = val; + } + *(ptrd--) = cur; + for (int p = s2 - 1; p>0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val>cur) cur = val; *(ptrd--) = cur; + } + T *pd = data(0,y,z,c); cimg_for(buf,ps,T) { *pd = *ps; pd+=off; } + } + } + } + + if (sy>1 && _height>1) { // Along Y-axis + const int L = height(), off = width(), s = (int)sy, _s1 = s/2, _s2 = s - _s1, s1 = _s1>L?L:_s1, + s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forXZC(*this,x,z,c) { + T *const ptrdb = buf._data, *ptrd = ptrdb, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(x,0,z,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val>=cur) { cur = val; is_first = false; } + } + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(x,0,z,c); cur = std::max(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs=cur) { cur = val; is_first = false; } + *(ptrd++) = cur; + } + for (int p = L - s - 1; p>0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval>cur) cur = nval; } + nptrs-=off; const T nval = *nptrs; if (nval>cur) { cur = nval; is_first = true; } else is_first = false; + } else { if (val>=cur) cur = val; else if (cur==*(ptrs-s*off)) is_first = true; } + *(ptrd++) = cur; + } + ptrd = ptrde; ptrs = ptrse; cur = *ptrs; ptrs-=off; + for (int p = s1; p>0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val>cur) cur = val; + } + *(ptrd--) = cur; + for (int p = s2 - 1; p>0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val>cur) cur = val; *(ptrd--) = cur; + } + T *pd = data(x,0,z,c); cimg_for(buf,ps,T) { *pd = *ps; pd+=off; } + } + } + } + + if (sz>1 && _depth>1) { // Along Z-axis + const int L = depth(), off = width()*height(), s = (int)sz, _s1 = s/2, _s2 = s - _s1, s1 = _s1>L?L:_s1, + s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forXYC(*this,x,y,c) { + T *const ptrdb = buf._data, *ptrd = ptrdb, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(x,y,0,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val>=cur) { cur = val; is_first = false; } + } + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(x,y,0,c); cur = std::max(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs=cur) { cur = val; is_first = false; } + *(ptrd++) = cur; + } + for (int p = L - s - 1; p>0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval>cur) cur = nval; } + nptrs-=off; const T nval = *nptrs; if (nval>cur) { cur = nval; is_first = true; } else is_first = false; + } else { if (val>=cur) cur = val; else if (cur==*(ptrs-s*off)) is_first = true; } + *(ptrd++) = cur; + } + ptrd = ptrde; ptrs = ptrse; cur = *ptrs; ptrs-=off; + for (int p = s1; p>0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val>cur) cur = val; + } + *(ptrd--) = cur; + for (int p = s2 - 1; p>0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val>cur) cur = val; *(ptrd--) = cur; + } + T *pd = data(x,y,0,c); cimg_for(buf,ps,T) { *pd = *ps; pd+=off; } + } + } + } + return *this; + } + + //! Dilate image by a rectangular structuring element of specified size \newinstance. + CImg get_dilate(const unsigned int sx, const unsigned int sy, const unsigned int sz=1) const { + return (+*this).dilate(sx,sy,sz); + } + + //! Dilate image by a square structuring element of specified size. + /** + \param s Size of the structuring element. + **/ + CImg& dilate(const unsigned int s) { + return dilate(s,s,s); + } + + //! Dilate image by a square structuring element of specified size \newinstance. + CImg get_dilate(const unsigned int s) const { + return (+*this).dilate(s); + } + + //! Compute watershed transform. + /** + \param priority Priority map. + \param is_high_connectivity Boolean that choose between 4(false)- or 8(true)-connectivity + in 2D case, and between 6(false)- or 26(true)-connectivity in 3D case. + \note Non-zero values of the instance instance are propagated to zero-valued ones according to + specified the priority map. + **/ + template + CImg& watershed(const CImg& priority, const bool is_high_connectivity=false) { +#define _cimg_watershed_init(cond,X,Y,Z) \ + if (cond && !(*this)(X,Y,Z)) Q._priority_queue_insert(labels,sizeQ,priority(X,Y,Z),X,Y,Z,nb_seeds) + +#define _cimg_watershed_propagate(cond,X,Y,Z) \ + if (cond) { \ + if ((*this)(X,Y,Z)) { \ + ns = labels(X,Y,Z) - 1; xs = seeds(ns,0); ys = seeds(ns,1); zs = seeds(ns,2); \ + d = cimg::sqr((float)x - xs) + cimg::sqr((float)y - ys) + cimg::sqr((float)z - zs); \ + if (d labels(_width,_height,_depth,1,0), seeds(64,3); + CImg::type> Q; + unsigned int sizeQ = 0; + int px, nx, py, ny, pz, nz; + bool is_px, is_nx, is_py, is_ny, is_pz, is_nz; + const bool is_3d = _depth>1; + + // Find seed points and insert them in priority queue. + unsigned int nb_seeds = 0; + const T *ptrs = _data; + cimg_forXYZ(*this,x,y,z) if (*(ptrs++)) { // 3D version + if (nb_seeds>=seeds._width) seeds.resize(2*seeds._width,3,1,1,0); + seeds(nb_seeds,0) = x; seeds(nb_seeds,1) = y; seeds(nb_seeds++,2) = z; + px = x - 1; nx = x + 1; + py = y - 1; ny = y + 1; + pz = z - 1; nz = z + 1; + is_px = px>=0; is_nx = nx=0; is_ny = ny=0; is_nz = nz=0; is_nx = nx=0; is_ny = ny=0; is_nz = nz::inf(); + T nlabel = (T)0; + _cimg_watershed_propagate(is_px,px,y,z); + _cimg_watershed_propagate(is_nx,nx,y,z); + _cimg_watershed_propagate(is_py,x,py,z); + _cimg_watershed_propagate(is_ny,x,ny,z); + if (is_3d) { + _cimg_watershed_propagate(is_pz,x,y,pz); + _cimg_watershed_propagate(is_nz,x,y,nz); + } + if (is_high_connectivity) { + _cimg_watershed_propagate(is_px && is_py,px,py,z); + _cimg_watershed_propagate(is_nx && is_py,nx,py,z); + _cimg_watershed_propagate(is_px && is_ny,px,ny,z); + _cimg_watershed_propagate(is_nx && is_ny,nx,ny,z); + if (is_3d) { + _cimg_watershed_propagate(is_px && is_pz,px,y,pz); + _cimg_watershed_propagate(is_nx && is_pz,nx,y,pz); + _cimg_watershed_propagate(is_px && is_nz,px,y,nz); + _cimg_watershed_propagate(is_nx && is_nz,nx,y,nz); + _cimg_watershed_propagate(is_py && is_pz,x,py,pz); + _cimg_watershed_propagate(is_ny && is_pz,x,ny,pz); + _cimg_watershed_propagate(is_py && is_nz,x,py,nz); + _cimg_watershed_propagate(is_ny && is_nz,x,ny,nz); + _cimg_watershed_propagate(is_px && is_py && is_pz,px,py,pz); + _cimg_watershed_propagate(is_nx && is_py && is_pz,nx,py,pz); + _cimg_watershed_propagate(is_px && is_ny && is_pz,px,ny,pz); + _cimg_watershed_propagate(is_nx && is_ny && is_pz,nx,ny,pz); + _cimg_watershed_propagate(is_px && is_py && is_nz,px,py,nz); + _cimg_watershed_propagate(is_nx && is_py && is_nz,nx,py,nz); + _cimg_watershed_propagate(is_px && is_ny && is_nz,px,ny,nz); + _cimg_watershed_propagate(is_nx && is_ny && is_nz,nx,ny,nz); + } + } + (*this)(x,y,z) = nlabel; + labels(x,y,z) = ++nmin; + } + return *this; + } + + //! Compute watershed transform \newinstance. + template + CImg get_watershed(const CImg& priority, const bool is_high_connectivity=false) const { + return (+*this).watershed(priority,is_high_connectivity); + } + + // [internal] Insert/Remove items in priority queue, for watershed/distance transforms. + template + bool _priority_queue_insert(CImg& is_queued, unsigned int& siz, const tv value, + const unsigned int x, const unsigned int y, const unsigned int z, + const unsigned int n=1) { + if (is_queued(x,y,z)) return false; + is_queued(x,y,z) = (tq)n; + if (++siz>=_width) { if (!is_empty()) resize(_width*2,4,1,1,0); else assign(64,4); } + (*this)(siz - 1,0) = (T)value; + (*this)(siz - 1,1) = (T)x; + (*this)(siz - 1,2) = (T)y; + (*this)(siz - 1,3) = (T)z; + for (unsigned int pos = siz - 1, par = 0; pos && value>(tv)(*this)(par=(pos + 1)/2 - 1,0); pos = par) { + cimg::swap((*this)(pos,0),(*this)(par,0)); + cimg::swap((*this)(pos,1),(*this)(par,1)); + cimg::swap((*this)(pos,2),(*this)(par,2)); + cimg::swap((*this)(pos,3),(*this)(par,3)); + } + return true; + } + + CImg& _priority_queue_remove(unsigned int& siz) { + (*this)(0,0) = (*this)(--siz,0); + (*this)(0,1) = (*this)(siz,1); + (*this)(0,2) = (*this)(siz,2); + (*this)(0,3) = (*this)(siz,3); + const float value = (*this)(0,0); + unsigned int pos = 0, swap = 0; + do { + const unsigned int left = 2*pos + 1, right = left + 1; + if (right(*this)(right,0)?left:right; + else if (left{ 0=smooth-filter | 1=1st-derivative | 2=2nd-derivative }. + \param axis Axis along which the filter is computed. Can be { 'x' | 'y' | 'z' | 'c' }. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }. + **/ + CImg& deriche(const float sigma, const unsigned int order=0, const char axis='x', + const bool boundary_conditions=true) { +#define _cimg_deriche_apply \ + CImg Y(N); \ + double *ptrY = Y._data, yb = 0, yp = 0; \ + T xp = (T)0; \ + if (boundary_conditions) { xp = *ptrX; yb = yp = (double)(coefp*xp); } \ + for (int m = 0; m=0; --n) { \ + const T xc = *(ptrX-=off); \ + const double yc = (double)(a2*xn + a3*xa - b1*yn - b2*ya); \ + xa = xn; xn = xc; ya = yn; yn = yc; \ + *ptrX = (T)(*(--ptrY)+yc); \ + } + const char naxis = cimg::lowercase(axis); + const double nsigma = sigma>=0?sigma:-sigma*(naxis=='x'?_width: + naxis=='y'?_height: + naxis=='z'?_depth:_spectrum)/100; + if (is_empty() || (nsigma<0.1f && !order)) return *this; + const double + nnsigma = nsigma<0.1f?0.1f:nsigma, + alpha = 1.695f/nnsigma, + ema = std::exp(-alpha), + ema2 = std::exp(-2*alpha), + b1 = -2*ema, + b2 = ema2; + double a0 = 0, a1 = 0, a2 = 0, a3 = 0, coefp = 0, coefn = 0; + switch (order) { + case 0 : { + const double k = (1-ema)*(1-ema)/(1 + 2*alpha*ema-ema2); + a0 = k; + a1 = k*(alpha - 1)*ema; + a2 = k*(alpha + 1)*ema; + a3 = -k*ema2; + } break; + case 1 : { + const double k = -(1-ema)*(1-ema)*(1-ema)/(2*(ema + 1)*ema); + a0 = a3 = 0; + a1 = k*ema; + a2 = -a1; + } break; + case 2 : { + const double + ea = std::exp(-alpha), + k = -(ema2 - 1)/(2*alpha*ema), + kn = (-2*(-1 + 3*ea - 3*ea*ea + ea*ea*ea)/(3*ea + 1 + 3*ea*ea + ea*ea*ea)); + a0 = kn; + a1 = -kn*(1 + k*alpha)*ema; + a2 = kn*(1 - k*alpha)*ema; + a3 = -kn*ema2; + } break; + default : + throw CImgArgumentException(_cimg_instance + "deriche(): Invalid specified filter order %u " + "(should be { 0=smoothing | 1=1st-derivative | 2=2nd-derivative }).", + cimg_instance, + order); + } + coefp = (a0 + a1)/(1 + b1 + b2); + coefn = (a2 + a3)/(1 + b1 + b2); + switch (naxis) { + case 'x' : { + const int N = width(); + const ulongT off = 1U; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forYZC(*this,y,z,c) { T *ptrX = data(0,y,z,c); _cimg_deriche_apply; } + } break; + case 'y' : { + const int N = height(); + const ulongT off = (ulongT)_width; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXZC(*this,x,z,c) { T *ptrX = data(x,0,z,c); _cimg_deriche_apply; } + } break; + case 'z' : { + const int N = depth(); + const ulongT off = (ulongT)_width*_height; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYC(*this,x,y,c) { T *ptrX = data(x,y,0,c); _cimg_deriche_apply; } + } break; + default : { + const int N = spectrum(); + const ulongT off = (ulongT)_width*_height*_depth; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYZ(*this,x,y,z) { T *ptrX = data(x,y,z,0); _cimg_deriche_apply; } + } + } + return *this; + } + + //! Apply recursive Deriche filter \newinstance. + CImg get_deriche(const float sigma, const unsigned int order=0, const char axis='x', + const bool boundary_conditions=true) const { + return CImg(*this,false).deriche(sigma,order,axis,boundary_conditions); + } + + // [internal] Apply a recursive filter (used by CImg::vanvliet()). + /* + \param ptr the pointer of the data + \param filter the coefficient of the filter in the following order [n,n - 1,n - 2,n - 3]. + \param N size of the data + \param off the offset between two data point + \param order the order of the filter 0 (smoothing), 1st derivative, 2nd derivative, 3rd derivative + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }. + \note Boundary condition using B. Triggs method (IEEE trans on Sig Proc 2005). + */ + static void _cimg_recursive_apply(T *data, const double filter[], const int N, const ulongT off, + const unsigned int order, const bool boundary_conditions) { + double val[4] = { 0 }; // res[n,n - 1,n - 2,n - 3,..] or res[n,n + 1,n + 2,n + 3,..] + const double + sumsq = filter[0], sum = sumsq * sumsq, + a1 = filter[1], a2 = filter[2], a3 = filter[3], + scaleM = 1. / ( (1. + a1 - a2 + a3) * (1. - a1 - a2 - a3) * (1. + a2 + (a1 - a3) * a3) ); + double M[9]; // Triggs matrix + M[0] = scaleM * (-a3 * a1 + 1. - a3 * a3 - a2); + M[1] = scaleM * (a3 + a1) * (a2 + a3 * a1); + M[2] = scaleM * a3 * (a1 + a3 * a2); + M[3] = scaleM * (a1 + a3 * a2); + M[4] = -scaleM * (a2 - 1.) * (a2 + a3 * a1); + M[5] = -scaleM * a3 * (a3 * a1 + a3 * a3 + a2 - 1.); + M[6] = scaleM * (a3 * a1 + a2 + a1 * a1 - a2 * a2); + M[7] = scaleM * (a1 * a2 + a3 * a2 * a2 - a1 * a3 * a3 - a3 * a3 * a3 - a3 * a2 + a3); + M[8] = scaleM * a3 * (a1 + a3 * a2); + switch (order) { + case 0 : { + const double iplus = (boundary_conditions?data[(N - 1)*off]:(T)0); + for (int pass = 0; pass<2; ++pass) { + if (!pass) { + for (int k = 1; k<4; ++k) val[k] = (boundary_conditions?*data/sumsq:0); + } else { + // Apply Triggs boundary conditions + const double + uplus = iplus/(1. - a1 - a2 - a3), vplus = uplus/(1. - a1 - a2 - a3), + unp = val[1] - uplus, unp1 = val[2] - uplus, unp2 = val[3] - uplus; + val[0] = (M[0] * unp + M[1] * unp1 + M[2] * unp2 + vplus) * sum; + val[1] = (M[3] * unp + M[4] * unp1 + M[5] * unp2 + vplus) * sum; + val[2] = (M[6] * unp + M[7] * unp1 + M[8] * unp2 + vplus) * sum; + *data = (T)val[0]; + data -= off; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + for (int n = pass; n0; --k) val[k] = val[k - 1]; + } + if (!pass) data -= off; + } + } break; + case 1 : { + double x[3]; // [front,center,back] + for (int pass = 0; pass<2; ++pass) { + if (!pass) { + for (int k = 0; k<3; ++k) x[k] = (boundary_conditions?*data:(T)0); + for (int k = 0; k<4; ++k) val[k] = 0; + } else { + // Apply Triggs boundary conditions + const double + unp = val[1], unp1 = val[2], unp2 = val[3]; + val[0] = (M[0] * unp + M[1] * unp1 + M[2] * unp2) * sum; + val[1] = (M[3] * unp + M[4] * unp1 + M[5] * unp2) * sum; + val[2] = (M[6] * unp + M[7] * unp1 + M[8] * unp2) * sum; + *data = (T)val[0]; + data -= off; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + for (int n = pass; n0; --k) x[k] = x[k - 1]; + } else { data-=off;} + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + *data = (T)0; + } + } break; + case 2: { + double x[3]; // [front,center,back] + for (int pass = 0; pass<2; ++pass) { + if (!pass) { + for (int k = 0; k<3; ++k) x[k] = (boundary_conditions?*data:(T)0); + for (int k = 0; k<4; ++k) val[k] = 0; + } else { + // Apply Triggs boundary conditions + const double + unp = val[1], unp1 = val[2], unp2 = val[3]; + val[0] = (M[0] * unp + M[1] * unp1 + M[2] * unp2) * sum; + val[1] = (M[3] * unp + M[4] * unp1 + M[5] * unp2) * sum; + val[2] = (M[6] * unp + M[7] * unp1 + M[8] * unp2) * sum; + *data = (T)val[0]; + data -= off; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + for (int n = pass; n0; --k) x[k] = x[k - 1]; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + *data = (T)0; + } + } break; + case 3: { + double x[3]; // [front,center,back] + for (int pass = 0; pass<2; ++pass) { + if (!pass) { + for (int k = 0; k<3; ++k) x[k] = (boundary_conditions?*data:(T)0); + for (int k = 0; k<4; ++k) val[k] = 0; + } else { + // Apply Triggs boundary conditions + const double + unp = val[1], unp1 = val[2], unp2 = val[3]; + val[0] = (M[0] * unp + M[1] * unp1 + M[2] * unp2) * sum; + val[1] = (M[3] * unp + M[4] * unp1 + M[5] * unp2) * sum; + val[2] = (M[6] * unp + M[7] * unp1 + M[8] * unp2) * sum; + *data = (T)val[0]; + data -= off; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + for (int n = pass; n0; --k) x[k] = x[k - 1]; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + *data = (T)0; + } + } break; + } + } + + //! Van Vliet recursive Gaussian filter. + /** + \param sigma standard deviation of the Gaussian filter + \param order the order of the filter 0,1,2,3 + \param axis Axis along which the filter is computed. Can be { 'x' | 'y' | 'z' | 'c' }. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }. + \note dirichlet boundary condition has a strange behavior + + I.T. Young, L.J. van Vliet, M. van Ginkel, Recursive Gabor filtering. + IEEE Trans. Sig. Proc., vol. 50, pp. 2799-2805, 2002. + + (this is an improvement over Young-Van Vliet, Sig. Proc. 44, 1995) + + Boundary conditions (only for order 0) using Triggs matrix, from + B. Triggs and M. Sdika. Boundary conditions for Young-van Vliet + recursive filtering. IEEE Trans. Signal Processing, + vol. 54, pp. 2365-2367, 2006. + **/ + CImg& vanvliet(const float sigma, const unsigned int order, const char axis='x', + const bool boundary_conditions=true) { + if (is_empty()) return *this; + if (!cimg::type::is_float()) + return CImg(*this,false).vanvliet(sigma,order,axis,boundary_conditions).move_to(*this); + const char naxis = cimg::lowercase(axis); + const float nsigma = sigma>=0?sigma:-sigma*(naxis=='x'?_width:naxis=='y'?_height:naxis=='z'?_depth:_spectrum)/100; + if (is_empty() || (nsigma<0.5f && !order)) return *this; + const double + nnsigma = nsigma<0.5f?0.5f:nsigma, + m0 = 1.16680, m1 = 1.10783, m2 = 1.40586, + m1sq = m1 * m1, m2sq = m2 * m2, + q = (nnsigma<3.556?-0.2568 + 0.5784*nnsigma + 0.0561*nnsigma*nnsigma:2.5091 + 0.9804*(nnsigma - 3.556)), + qsq = q * q, + scale = (m0 + q) * (m1sq + m2sq + 2 * m1 * q + qsq), + b1 = -q * (2 * m0 * m1 + m1sq + m2sq + (2 * m0 + 4 * m1) * q + 3 * qsq) / scale, + b2 = qsq * (m0 + 2 * m1 + 3 * q) / scale, + b3 = -qsq * q / scale, + B = ( m0 * (m1sq + m2sq) ) / scale; + double filter[4]; + filter[0] = B; filter[1] = -b1; filter[2] = -b2; filter[3] = -b3; + switch (naxis) { + case 'x' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forYZC(*this,y,z,c) + _cimg_recursive_apply(data(0,y,z,c),filter,_width,1U,order,boundary_conditions); + } break; + case 'y' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXZC(*this,x,z,c) + _cimg_recursive_apply(data(x,0,z,c),filter,_height,(ulongT)_width,order,boundary_conditions); + } break; + case 'z' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYC(*this,x,y,c) + _cimg_recursive_apply(data(x,y,0,c),filter,_depth,(ulongT)_width*_height, + order,boundary_conditions); + } break; + default : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYZ(*this,x,y,z) + _cimg_recursive_apply(data(x,y,z,0),filter,_spectrum,(ulongT)_width*_height*_depth, + order,boundary_conditions); + } + } + return *this; + } + + //! Blur image using Van Vliet recursive Gaussian filter. \newinstance. + CImg get_vanvliet(const float sigma, const unsigned int order, const char axis='x', + const bool boundary_conditions=true) const { + return CImg(*this,false).vanvliet(sigma,order,axis,boundary_conditions); + } + + //! Blur image. + /** + \param sigma_x Standard deviation of the blur, along the X-axis. + \param sigma_y Standard deviation of the blur, along the Y-axis. + \param sigma_z Standard deviation of the blur, along the Z-axis. + \param boundary_conditions Boundary conditions. Can be { false=dirichlet | true=neumann }. + \param is_gaussian Tells if the blur uses a gaussian (\c true) or quasi-gaussian (\c false) kernel. + \note + - The blur is computed as a 0-order Vanvliet (gaussian) or Deriche filter (quasi-gaussian). + - This is a recursive algorithm, not depending on the values of the standard deviations. + \see deriche(), vanvliet(). + **/ + CImg& blur(const float sigma_x, const float sigma_y, const float sigma_z, + const bool boundary_conditions=true, const bool is_gaussian=true) { + if (is_empty()) return *this; + if (is_gaussian) { + if (_width>1) vanvliet(sigma_x,0,'x',boundary_conditions); + if (_height>1) vanvliet(sigma_y,0,'y',boundary_conditions); + if (_depth>1) vanvliet(sigma_z,0,'z',boundary_conditions); + } else { + if (_width>1) deriche(sigma_x,0,'x',boundary_conditions); + if (_height>1) deriche(sigma_y,0,'y',boundary_conditions); + if (_depth>1) deriche(sigma_z,0,'z',boundary_conditions); + } + return *this; + } + + //! Blur image \newinstance. + CImg get_blur(const float sigma_x, const float sigma_y, const float sigma_z, + const bool boundary_conditions=true, const bool is_gaussian=true) const { + return CImg(*this,false).blur(sigma_x,sigma_y,sigma_z,boundary_conditions,is_gaussian); + } + + //! Blur image isotropically. + /** + \param sigma Standard deviation of the blur. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }.a + \param is_gaussian Use a gaussian kernel (VanVliet) is set, a quasi-gaussian (Deriche) otherwise. + \see deriche(), vanvliet(). + **/ + CImg& blur(const float sigma, const bool boundary_conditions=true, const bool is_gaussian=true) { + const float nsigma = sigma>=0?sigma:-sigma*cimg::max(_width,_height,_depth)/100; + return blur(nsigma,nsigma,nsigma,boundary_conditions,is_gaussian); + } + + //! Blur image isotropically \newinstance. + CImg get_blur(const float sigma, const bool boundary_conditions=true, const bool is_gaussian=true) const { + return CImg(*this,false).blur(sigma,boundary_conditions,is_gaussian); + } + + //! Blur image anisotropically, directed by a field of diffusion tensors. + /** + \param G Field of square roots of diffusion tensors/vectors used to drive the smoothing. + \param amplitude Amplitude of the smoothing. + \param dl Spatial discretization. + \param da Angular discretization. + \param gauss_prec Precision of the diffusion process. + \param interpolation_type Interpolation scheme. + Can be { 0=nearest-neighbor | 1=linear | 2=Runge-Kutta }. + \param is_fast_approx Tells if a fast approximation of the gaussian function is used or not. + **/ + template + CImg& blur_anisotropic(const CImg& G, + const float amplitude=60, const float dl=0.8f, const float da=30, + const float gauss_prec=2, const unsigned int interpolation_type=0, + const bool is_fast_approx=1) { + + // Check arguments and init variables + if (!is_sameXYZ(G) || (G._spectrum!=3 && G._spectrum!=6)) + throw CImgArgumentException(_cimg_instance + "blur_anisotropic(): Invalid specified diffusion tensor field (%u,%u,%u,%u,%p).", + cimg_instance, + G._width,G._height,G._depth,G._spectrum,G._data); + if (is_empty() || dl<0) return *this; + const float namplitude = amplitude>=0?amplitude:-amplitude*cimg::max(_width,_height,_depth)/100; + unsigned int iamplitude = cimg::round(namplitude); + const bool is_3d = (G._spectrum==6); + T val_min, val_max = max_min(val_min); + _cimg_abort_init_openmp; + cimg_abort_init; + + if (da<=0) { // Iterated oriented Laplacians + CImg velocity(_width,_height,_depth,_spectrum); + for (unsigned int iteration = 0; iterationveloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + } + else // 2D version + cimg_forZC(*this,z,c) { + cimg_abort_test; + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) { + const Tfloat + ixx = Inc + Ipc - 2*Icc, + ixy = (Inn + Ipp - Inp - Ipn)/4, + iyy = Icn + Icp - 2*Icc, + veloc = (Tfloat)(G(x,y,0,0)*ixx + 2*G(x,y,0,1)*ixy + G(x,y,0,2)*iyy); + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + } + if (veloc_max>0) *this+=(velocity*=dl/veloc_max); + } + } else { // LIC-based smoothing + const ulongT whd = (ulongT)_width*_height*_depth; + const float sqrt2amplitude = (float)std::sqrt(2*namplitude); + const int dx1 = width() - 1, dy1 = height() - 1, dz1 = depth() - 1; + CImg res(_width,_height,_depth,_spectrum,0), W(_width,_height,_depth,is_3d?4:3), val(_spectrum,1,1,1,0); + int N = 0; + if (is_3d) { // 3D version + for (float phi = cimg::mod(180.f,da)/2.f; phi<=180; phi+=da) { + const float phir = (float)(phi*cimg::PI/180), datmp = (float)(da/std::cos(phir)), + da2 = datmp<1?360.f:datmp; + for (float theta = 0; theta<360; (theta+=da2),++N) { + const float + thetar = (float)(theta*cimg::PI/180), + vx = (float)(std::cos(thetar)*std::cos(phir)), + vy = (float)(std::sin(thetar)*std::cos(phir)), + vz = (float)std::sin(phir); + const t + *pa = G.data(0,0,0,0), *pb = G.data(0,0,0,1), *pc = G.data(0,0,0,2), + *pd = G.data(0,0,0,3), *pe = G.data(0,0,0,4), *pf = G.data(0,0,0,5); + Tfloat *pd0 = W.data(0,0,0,0), *pd1 = W.data(0,0,0,1), *pd2 = W.data(0,0,0,2), *pd3 = W.data(0,0,0,3); + cimg_forXYZ(G,xg,yg,zg) { + const t a = *(pa++), b = *(pb++), c = *(pc++), d = *(pd++), e = *(pe++), f = *(pf++); + const float + u = (float)(a*vx + b*vy + c*vz), + v = (float)(b*vx + d*vy + e*vz), + w = (float)(c*vx + e*vy + f*vz), + n = 1e-5f + cimg::hypot(u,v,w), + dln = dl/n; + *(pd0++) = (Tfloat)(u*dln); + *(pd1++) = (Tfloat)(v*dln); + *(pd2++) = (Tfloat)(w*dln); + *(pd3++) = (Tfloat)n; + } + + cimg_abort_test; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && _height*_depth>=2) + firstprivate(val)) + cimg_forYZ(*this,y,z) _cimg_abort_try_openmp2 { + cimg_abort_test2; + cimg_forX(*this,x) { + val.fill(0); + const float + n = (float)W(x,y,z,3), + fsigma = (float)(n*sqrt2amplitude), + fsigma2 = 2*fsigma*fsigma, + length = gauss_prec*fsigma; + float + S = 0, + X = (float)x, + Y = (float)y, + Z = (float)z; + switch (interpolation_type) { + case 0 : { // Nearest neighbor + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1 && Z>=0 && Z<=dz1; l+=dl) { + const int + cx = (int)(X + 0.5f), + cy = (int)(Y + 0.5f), + cz = (int)(Z + 0.5f); + const float + u = (float)W(cx,cy,cz,0), + v = (float)W(cx,cy,cz,1), + w = (float)W(cx,cy,cz,2); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)(*this)(cx,cy,cz,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*(*this)(cx,cy,cz,c)); + S+=coef; + } + X+=u; Y+=v; Z+=w; + } + } break; + case 1 : { // Linear interpolation + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1 && Z>=0 && Z<=dz1; l+=dl) { + const float + u = (float)(W._linear_atXYZ(X,Y,Z,0)), + v = (float)(W._linear_atXYZ(X,Y,Z,1)), + w = (float)(W._linear_atXYZ(X,Y,Z,2)); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)_linear_atXYZ(X,Y,Z,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*_linear_atXYZ(X,Y,Z,c)); + S+=coef; + } + X+=u; Y+=v; Z+=w; + } + } break; + default : { // 2nd order Runge Kutta + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1 && Z>=0 && Z<=dz1; l+=dl) { + const float + u0 = (float)(0.5f*W._linear_atXYZ(X,Y,Z,0)), + v0 = (float)(0.5f*W._linear_atXYZ(X,Y,Z,1)), + w0 = (float)(0.5f*W._linear_atXYZ(X,Y,Z,2)), + u = (float)(W._linear_atXYZ(X + u0,Y + v0,Z + w0,0)), + v = (float)(W._linear_atXYZ(X + u0,Y + v0,Z + w0,1)), + w = (float)(W._linear_atXYZ(X + u0,Y + v0,Z + w0,2)); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)_linear_atXYZ(X,Y,Z,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*_linear_atXYZ(X,Y,Z,c)); + S+=coef; + } + X+=u; Y+=v; Z+=w; + } + } break; + } + Tfloat *ptrd = res.data(x,y,z); + if (S>0) cimg_forC(res,c) { *ptrd+=val[c]/S; ptrd+=whd; } + else cimg_forC(res,c) { *ptrd+=(Tfloat)((*this)(x,y,z,c)); ptrd+=whd; } + } + } _cimg_abort_catch_openmp2 + } + } + } else { // 2D LIC algorithm + for (float theta = cimg::mod(360.f,da)/2.f; theta<360; (theta+=da),++N) { + const float thetar = (float)(theta*cimg::PI/180), + vx = (float)(std::cos(thetar)), vy = (float)(std::sin(thetar)); + const t *pa = G.data(0,0,0,0), *pb = G.data(0,0,0,1), *pc = G.data(0,0,0,2); + Tfloat *pd0 = W.data(0,0,0,0), *pd1 = W.data(0,0,0,1), *pd2 = W.data(0,0,0,2); + cimg_forXY(G,xg,yg) { + const t a = *(pa++), b = *(pb++), c = *(pc++); + const float + u = (float)(a*vx + b*vy), + v = (float)(b*vx + c*vy), + n = std::max(1e-5f,cimg::hypot(u,v)), + dln = dl/n; + *(pd0++) = (Tfloat)(u*dln); + *(pd1++) = (Tfloat)(v*dln); + *(pd2++) = (Tfloat)n; + } + + cimg_abort_test; + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && _height>=2) + firstprivate(val)) + cimg_forY(*this,y) _cimg_abort_try_openmp2 { + cimg_abort_test2; + cimg_forX(*this,x) { + val.fill(0); + const float + n = (float)W(x,y,0,2), + fsigma = (float)(n*sqrt2amplitude), + fsigma2 = 2*fsigma*fsigma, + length = gauss_prec*fsigma; + float + S = 0, + X = (float)x, + Y = (float)y; + switch (interpolation_type) { + case 0 : { // Nearest-neighbor + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1; l+=dl) { + const int + cx = (int)(X + 0.5f), + cy = (int)(Y + 0.5f); + const float + u = (float)W(cx,cy,0,0), + v = (float)W(cx,cy,0,1); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)(*this)(cx,cy,0,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*(*this)(cx,cy,0,c)); + S+=coef; + } + X+=u; Y+=v; + } + } break; + case 1 : { // Linear interpolation + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1; l+=dl) { + const float + u = (float)(W._linear_atXY(X,Y,0,0)), + v = (float)(W._linear_atXY(X,Y,0,1)); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)_linear_atXY(X,Y,0,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*_linear_atXY(X,Y,0,c)); + S+=coef; + } + X+=u; Y+=v; + } + } break; + default : { // 2nd-order Runge-kutta interpolation + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1; l+=dl) { + const float + u0 = (float)(0.5f*W._linear_atXY(X,Y,0,0)), + v0 = (float)(0.5f*W._linear_atXY(X,Y,0,1)), + u = (float)(W._linear_atXY(X + u0,Y + v0,0,0)), + v = (float)(W._linear_atXY(X + u0,Y + v0,0,1)); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)_linear_atXY(X,Y,0,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*_linear_atXY(X,Y,0,c)); + S+=coef; + } + X+=u; Y+=v; + } + } + } + Tfloat *ptrd = res.data(x,y); + if (S>0) cimg_forC(res,c) { *ptrd+=val[c]/S; ptrd+=whd; } + else cimg_forC(res,c) { *ptrd+=(Tfloat)((*this)(x,y,0,c)); ptrd+=whd; } + } + } _cimg_abort_catch_openmp2 + } + } + const Tfloat *ptrs = res._data; + cimg_for(*this,ptrd,T) { + const Tfloat _val = *(ptrs++)/N; + *ptrd = _valval_max?val_max:(T)_val); + } + } + cimg_abort_test; + return *this; + } + + //! Blur image anisotropically, directed by a field of diffusion tensors \newinstance. + template + CImg get_blur_anisotropic(const CImg& G, + const float amplitude=60, const float dl=0.8f, const float da=30, + const float gauss_prec=2, const unsigned int interpolation_type=0, + const bool is_fast_approx=true) const { + return CImg(*this,false).blur_anisotropic(G,amplitude,dl,da,gauss_prec,interpolation_type,is_fast_approx); + } + + //! Blur image anisotropically, in an edge-preserving way. + /** + \param amplitude Amplitude of the smoothing. + \param sharpness Sharpness. + \param anisotropy Anisotropy. + \param alpha Standard deviation of the gradient blur. + \param sigma Standard deviation of the structure tensor blur. + \param dl Spatial discretization. + \param da Angular discretization. + \param gauss_prec Precision of the diffusion process. + \param interpolation_type Interpolation scheme. + Can be { 0=nearest-neighbor | 1=linear | 2=Runge-Kutta }. + \param is_fast_approx Tells if a fast approximation of the gaussian function is used or not. + **/ + CImg& blur_anisotropic(const float amplitude, const float sharpness=0.7f, const float anisotropy=0.6f, + const float alpha=0.6f, const float sigma=1.1f, const float dl=0.8f, const float da=30, + const float gauss_prec=2, const unsigned int interpolation_type=0, + const bool is_fast_approx=true) { + const float nalpha = alpha>=0?alpha:-alpha*cimg::max(_width,_height,_depth)/100; + const float nsigma = sigma>=0?sigma:-sigma*cimg::max(_width,_height,_depth)/100; + return blur_anisotropic(get_diffusion_tensors(sharpness,anisotropy,nalpha,nsigma,interpolation_type!=3), + amplitude,dl,da,gauss_prec,interpolation_type,is_fast_approx); + } + + //! Blur image anisotropically, in an edge-preserving way \newinstance. + CImg get_blur_anisotropic(const float amplitude, const float sharpness=0.7f, const float anisotropy=0.6f, + const float alpha=0.6f, const float sigma=1.1f, const float dl=0.8f, + const float da=30, const float gauss_prec=2, + const unsigned int interpolation_type=0, + const bool is_fast_approx=true) const { + return CImg(*this,false).blur_anisotropic(amplitude,sharpness,anisotropy,alpha,sigma,dl,da,gauss_prec, + interpolation_type,is_fast_approx); + } + + //! Blur image, with the joint bilateral filter. + /** + \param guide Image used to model the smoothing weights. + \param sigma_x Amount of blur along the X-axis. + \param sigma_y Amount of blur along the Y-axis. + \param sigma_z Amount of blur along the Z-axis. + \param sigma_r Amount of blur along the value axis. + \param sampling_x Amount of downsampling along the X-axis used for the approximation. + Defaults (0) to sigma_x. + \param sampling_y Amount of downsampling along the Y-axis used for the approximation. + Defaults (0) to sigma_y. + \param sampling_z Amount of downsampling along the Z-axis used for the approximation. + Defaults (0) to sigma_z. + \param sampling_r Amount of downsampling along the value axis used for the approximation. + Defaults (0) to sigma_r. + \note This algorithm uses the optimisation technique proposed by S. Paris and F. Durand, in ECCV'2006 + (extended for 3D volumetric images). + It is based on the reference implementation http://people.csail.mit.edu/jiawen/software/bilateralFilter.m + **/ + template + CImg& blur_bilateral(const CImg& guide, + const float sigma_x, const float sigma_y, + const float sigma_z, const float sigma_r, + const float sampling_x, const float sampling_y, + const float sampling_z, const float sampling_r) { + if (!is_sameXYZ(guide)) + throw CImgArgumentException(_cimg_instance + "blur_bilateral(): Invalid size for specified guide image (%u,%u,%u,%u,%p).", + cimg_instance, + guide._width,guide._height,guide._depth,guide._spectrum,guide._data); + if (is_empty() || (!sigma_x && !sigma_y && !sigma_z)) return *this; + T edge_min, edge_max = guide.max_min(edge_min); + if (edge_min==edge_max) return blur(sigma_x,sigma_y,sigma_z); + const float + edge_delta = (float)(edge_max - edge_min), + _sigma_x = sigma_x>=0?sigma_x:-sigma_x*_width/100, + _sigma_y = sigma_y>=0?sigma_y:-sigma_y*_height/100, + _sigma_z = sigma_z>=0?sigma_z:-sigma_z*_depth/100, + _sigma_r = sigma_r>=0?sigma_r:-sigma_r*edge_delta/100, + _sampling_x = sampling_x?sampling_x:std::max(_sigma_x,1.f), + _sampling_y = sampling_y?sampling_y:std::max(_sigma_y,1.f), + _sampling_z = sampling_z?sampling_z:std::max(_sigma_z,1.f), + _sampling_r = sampling_r?sampling_r:std::max(_sigma_r,edge_delta/256), + derived_sigma_x = _sigma_x / _sampling_x, + derived_sigma_y = _sigma_y / _sampling_y, + derived_sigma_z = _sigma_z / _sampling_z, + derived_sigma_r = _sigma_r / _sampling_r; + const int + padding_x = (int)(2*derived_sigma_x) + 1, + padding_y = (int)(2*derived_sigma_y) + 1, + padding_z = (int)(2*derived_sigma_z) + 1, + padding_r = (int)(2*derived_sigma_r) + 1; + const unsigned int + bx = (unsigned int)((_width - 1)/_sampling_x + 1 + 2*padding_x), + by = (unsigned int)((_height - 1)/_sampling_y + 1 + 2*padding_y), + bz = (unsigned int)((_depth - 1)/_sampling_z + 1 + 2*padding_z), + br = (unsigned int)(edge_delta/_sampling_r + 1 + 2*padding_r); + if (bx>0 || by>0 || bz>0 || br>0) { + const bool is_3d = (_depth>1); + if (is_3d) { // 3D version of the algorithm + CImg bgrid(bx,by,bz,br), bgridw(bx,by,bz,br); + cimg_forC(*this,c) { + const CImg _guide = guide.get_shared_channel(c%guide._spectrum); + bgrid.fill(0); bgridw.fill(0); + cimg_forXYZ(*this,x,y,z) { + const T val = (*this)(x,y,z,c); + const float edge = (float)_guide(x,y,z); + const int + X = (int)cimg::round(x/_sampling_x) + padding_x, + Y = (int)cimg::round(y/_sampling_y) + padding_y, + Z = (int)cimg::round(z/_sampling_z) + padding_z, + R = (int)cimg::round((edge - edge_min)/_sampling_r) + padding_r; + bgrid(X,Y,Z,R)+=(float)val; + bgridw(X,Y,Z,R)+=1; + } + bgrid.blur(derived_sigma_x,derived_sigma_y,derived_sigma_z,true).deriche(derived_sigma_r,0,'c',false); + bgridw.blur(derived_sigma_x,derived_sigma_y,derived_sigma_z,true).deriche(derived_sigma_r,0,'c',false); + + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(size(),4096)) + cimg_forXYZ(*this,x,y,z) { + const float edge = (float)_guide(x,y,z); + const float + X = x/_sampling_x + padding_x, + Y = y/_sampling_y + padding_y, + Z = z/_sampling_z + padding_z, + R = (edge - edge_min)/_sampling_r + padding_r; + const float bval0 = bgrid._linear_atXYZC(X,Y,Z,R), bval1 = bgridw._linear_atXYZC(X,Y,Z,R); + (*this)(x,y,z,c) = (T)(bval0/bval1); + } + } + } else { // 2D version of the algorithm + CImg bgrid(bx,by,br,2); + cimg_forC(*this,c) { + const CImg _guide = guide.get_shared_channel(c%guide._spectrum); + bgrid.fill(0); + cimg_forXY(*this,x,y) { + const T val = (*this)(x,y,c); + const float edge = (float)_guide(x,y); + const int + X = (int)cimg::round(x/_sampling_x) + padding_x, + Y = (int)cimg::round(y/_sampling_y) + padding_y, + R = (int)cimg::round((edge - edge_min)/_sampling_r) + padding_r; + bgrid(X,Y,R,0)+=(float)val; + bgrid(X,Y,R,1)+=1; + } + bgrid.blur(derived_sigma_x,derived_sigma_y,0,true).blur(0,0,derived_sigma_r,false); + + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if_size(size(),4096)) + cimg_forXY(*this,x,y) { + const float edge = (float)_guide(x,y); + const float + X = x/_sampling_x + padding_x, + Y = y/_sampling_y + padding_y, + R = (edge - edge_min)/_sampling_r + padding_r; + const float bval0 = bgrid._linear_atXYZ(X,Y,R,0), bval1 = bgrid._linear_atXYZ(X,Y,R,1); + (*this)(x,y,c) = (T)(bval0/bval1); + } + } + } + } + return *this; + } + + //! Blur image, with the joint bilateral filter \newinstance. + template + CImg get_blur_bilateral(const CImg& guide, + const float sigma_x, const float sigma_y, + const float sigma_z, const float sigma_r, + const float sampling_x, const float sampling_y, + const float sampling_z, const float sampling_r) const { + return CImg(*this,false).blur_bilateral(guide,sigma_x,sigma_y,sigma_z,sigma_r, + sampling_x,sampling_y,sampling_z,sampling_r); + } + + //! Blur image using the joint bilateral filter. + /** + \param guide Image used to model the smoothing weights. + \param sigma_s Amount of blur along the XYZ-axes. + \param sigma_r Amount of blur along the value axis. + \param sampling_s Amount of downsampling along the XYZ-axes used for the approximation. Defaults to sigma_s. + \param sampling_r Amount of downsampling along the value axis used for the approximation. Defaults to sigma_r. + **/ + template + CImg& blur_bilateral(const CImg& guide, + const float sigma_s, const float sigma_r, + const float sampling_s=0, const float sampling_r=0) { + const float _sigma_s = sigma_s>=0?sigma_s:-sigma_s*cimg::max(_width,_height,_depth)/100; + return blur_bilateral(guide,_sigma_s,_sigma_s,_sigma_s,sigma_r,sampling_s,sampling_s,sampling_s,sampling_r); + } + + //! Blur image using the bilateral filter \newinstance. + template + CImg get_blur_bilateral(const CImg& guide, + const float sigma_s, const float sigma_r, + const float sampling_s=0, const float sampling_r=0) const { + return CImg(*this,false).blur_bilateral(guide,sigma_s,sigma_r,sampling_s,sampling_r); + } + + // [internal] Apply a box filter (used by CImg::boxfilter() and CImg::blur_box()). + /* + \param ptr the pointer of the data + \param N size of the data + \param boxsize Size of the box filter (can be subpixel). + \param off the offset between two data point + \param order the order of the filter 0 (smoothing), 1st derivative and 2nd derivative. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }. + */ + static void _cimg_blur_box_apply(T *ptr, const float boxsize, const int N, const ulongT off, + const int order, const bool boundary_conditions, + const unsigned int nb_iter) { + // Smooth. + if (boxsize>1 && nb_iter) { + const int w2 = (int)(boxsize - 1)/2; + const unsigned int winsize = 2*w2 + 1U; + const double frac = (boxsize - winsize)/2.; + CImg win(winsize); + for (unsigned int iter = 0; iter=N) return boundary_conditions?ptr[(N - 1)*off]:T(); + return ptr[x*off]; + } + + // Apply box filter of order 0,1,2. + /** + \param boxsize Size of the box window (can be subpixel) + \param order the order of the filter 0,1 or 2. + \param axis Axis along which the filter is computed. Can be { 'x' | 'y' | 'z' | 'c' }. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }. + \param nb_iter Number of filter iterations. + **/ + CImg& boxfilter(const float boxsize, const int order, const char axis='x', + const bool boundary_conditions=true, + const unsigned int nb_iter=1) { + if (is_empty() || !boxsize || (boxsize<=1 && !order)) return *this; + const char naxis = cimg::lowercase(axis); + const float nboxsize = boxsize>=0?boxsize:-boxsize* + (naxis=='x'?_width:naxis=='y'?_height:naxis=='z'?_depth:_spectrum)/100; + switch (naxis) { + case 'x' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forYZC(*this,y,z,c) + _cimg_blur_box_apply(data(0,y,z,c),nboxsize,_width,1U,order,boundary_conditions,nb_iter); + } break; + case 'y' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXZC(*this,x,z,c) + _cimg_blur_box_apply(data(x,0,z,c),nboxsize,_height,(ulongT)_width,order,boundary_conditions,nb_iter); + } break; + case 'z' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYC(*this,x,y,c) + _cimg_blur_box_apply(data(x,y,0,c),nboxsize,_depth,(ulongT)_width*_height,order,boundary_conditions,nb_iter); + } break; + default : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYZ(*this,x,y,z) + _cimg_blur_box_apply(data(x,y,z,0),nboxsize,_spectrum,(ulongT)_width*_height*_depth, + order,boundary_conditions,nb_iter); + } + } + return *this; + } + + // Apply box filter of order 0,1 or 2 \newinstance. + CImg get_boxfilter(const float boxsize, const int order, const char axis='x', + const bool boundary_conditions=true, + const unsigned int nb_iter=1) const { + return CImg(*this,false).boxfilter(boxsize,order,axis,boundary_conditions,nb_iter); + } + + //! Blur image with a box filter. + /** + \param boxsize_x Size of the box window, along the X-axis (can be subpixel). + \param boxsize_y Size of the box window, along the Y-axis (can be subpixel). + \param boxsize_z Size of the box window, along the Z-axis (can be subpixel). + \param boundary_conditions Boundary conditions. Can be { false=dirichlet | true=neumann }. + \param nb_iter Number of filter iterations. + \note + - This is a recursive algorithm, not depending on the values of the box kernel size. + \see blur(). + **/ + CImg& blur_box(const float boxsize_x, const float boxsize_y, const float boxsize_z, + const bool boundary_conditions=true, + const unsigned int nb_iter=1) { + if (is_empty()) return *this; + if (_width>1) boxfilter(boxsize_x,0,'x',boundary_conditions,nb_iter); + if (_height>1) boxfilter(boxsize_y,0,'y',boundary_conditions,nb_iter); + if (_depth>1) boxfilter(boxsize_z,0,'z',boundary_conditions,nb_iter); + return *this; + } + + //! Blur image with a box filter \newinstance. + CImg get_blur_box(const float boxsize_x, const float boxsize_y, const float boxsize_z, + const bool boundary_conditions=true) const { + return CImg(*this,false).blur_box(boxsize_x,boxsize_y,boxsize_z,boundary_conditions); + } + + //! Blur image with a box filter. + /** + \param boxsize Size of the box window (can be subpixel). + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }.a + \see deriche(), vanvliet(). + **/ + CImg& blur_box(const float boxsize, const bool boundary_conditions=true) { + const float nboxsize = boxsize>=0?boxsize:-boxsize*cimg::max(_width,_height,_depth)/100; + return blur_box(nboxsize,nboxsize,nboxsize,boundary_conditions); + } + + //! Blur image with a box filter \newinstance. + CImg get_blur_box(const float boxsize, const bool boundary_conditions=true) const { + return CImg(*this,false).blur_box(boxsize,boundary_conditions); + } + + //! Blur image, with the image guided filter. + /** + \param guide Image used to guide the smoothing process. + \param radius Spatial radius. If negative, it is expressed as a percentage of the largest image size. + \param regularization Regularization parameter. + If negative, it is expressed as a percentage of the guide value range. + \note This method implements the filtering algorithm described in: + He, Kaiming; Sun, Jian; Tang, Xiaoou, "Guided Image Filtering," Pattern Analysis and Machine Intelligence, + IEEE Transactions on , vol.35, no.6, pp.1397,1409, June 2013 + **/ + template + CImg& blur_guided(const CImg& guide, const float radius, const float regularization) { + return get_blur_guided(guide,radius,regularization).move_to(*this); + } + + //! Blur image, with the image guided filter \newinstance. + template + CImg get_blur_guided(const CImg& guide, const float radius, const float regularization) const { + if (!is_sameXYZ(guide)) + throw CImgArgumentException(_cimg_instance + "blur_guided(): Invalid size for specified guide image (%u,%u,%u,%u,%p).", + cimg_instance, + guide._width,guide._height,guide._depth,guide._spectrum,guide._data); + if (is_empty() || !radius) return *this; + const int _radius = radius>=0?(int)radius:(int)(-radius*cimg::max(_width,_height,_depth)/100); + float _regularization = regularization; + if (regularization<0) { + T edge_min, edge_max = guide.max_min(edge_min); + if (edge_min==edge_max) return *this; + _regularization = -regularization*(edge_max - edge_min)/100; + } + _regularization = std::max(_regularization,0.01f); + const unsigned int psize = (unsigned int)(1 + 2*_radius); + CImg + mean_p = get_blur_box(psize,true), + mean_I = guide.get_blur_box(psize,true).resize(mean_p), + cov_Ip = get_mul(guide).blur_box(psize,true)-=mean_p.get_mul(mean_I), + var_I = guide.get_sqr().blur_box(psize,true)-=mean_I.get_sqr(), + &a = cov_Ip.div(var_I+=_regularization), + &b = mean_p-=a.get_mul(mean_I); + a.blur_box(psize,true); + b.blur_box(psize,true); + return a.mul(guide)+=b; + } + + //! Blur image using patch-based space. + /** + \param guide Image used to model the smoothing weights. + \param sigma_s Amount of blur along the XYZ-axes. + \param sigma_r Amount of blur along the value axis. + \param patch_size Size of the patches. + \param lookup_size Size of the window to search similar patches. + \param smoothness Smoothness for the patch comparison. + \param is_fast_approx Tells if a fast approximation of the gaussian function is used or not. + **/ + template + CImg& blur_patch(const CImg& guide, + const float sigma_s, const float sigma_r, const unsigned int patch_size=3, + const unsigned int lookup_size=4, const float smoothness=0, const bool is_fast_approx=true) { + if (is_empty() || !patch_size || !lookup_size) return *this; + return get_blur_patch(guide,sigma_s,sigma_r,patch_size,lookup_size,smoothness,is_fast_approx).move_to(*this); + } + + //! Blur image using patch-based space \newinstance. + template + CImg get_blur_patch(const CImg& guide, + const float sigma_s, const float sigma_r, const unsigned int patch_size=3, + const unsigned int lookup_size=4, const float smoothness=0, + const bool is_fast_approx=true) const { + +#define _cimg_blur_patch3d_fast(N) { \ + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) \ + cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height*res._depth>=4) \ + firstprivate(P,Q)) \ + cimg_forXYZ(res,x,y,z) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + cimg_def##N##x##N##x##N(res,x,y,z); \ + tfloat *pP = P._data; cimg_forC(_guide,c) { cimg_get##N##x##N##x##N(_guide,x,y,z,c,pP,tfloat); pP+=N3; } \ + const int x0 = x - rsize1, y0 = y - rsize1, z0 = z - rsize1, \ + x1 = x + rsize2, y1 = y + rsize2, z1 = z + rsize2; \ + tfloat sum_weights = 0; \ + cimg_for_in##N##XYZ(res,x0,y0,z0,x1,y1,z1,p,q,r) \ + if (cimg::abs(_guide(x,y,z,0) - _guide(p,q,r,0))3?0:1; \ + sum_weights+=weight; \ + cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight*(*this)(p,q,r,c); \ + } \ + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,z,c)/=(Tfloat)sum_weights; \ + else cimg_forC(res,c) res(x,y,z,c) = (Tfloat)((*this)(x,y,z,c)); \ + } _cimg_abort_catch_openmp } + +#define _cimg_blur_patch3d(N) { \ + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) \ + cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height*res._depth>=4) \ + firstprivate(P,Q)) \ + cimg_forXYZ(res,x,y,z) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + cimg_def##N##x##N##x##N(res,x,y,z); \ + tfloat *pP = P._data; cimg_forC(_guide,c) { cimg_get##N##x##N##x##N(_guide,x,y,z,c,pP,tfloat); pP+=N3; } \ + const int x0 = x - rsize1, y0 = y - rsize1, z0 = z - rsize1, \ + x1 = x + rsize2, y1 = y + rsize2, z1 = z + rsize2; \ + tfloat sum_weights = 0, weight_max = 0; \ + cimg_for_in##N##XYZ(res,x0,y0,z0,x1,y1,z1,p,q,r) if (p!=x || q!=y || r!=z) { \ + tfloat *pQ = Q._data; cimg_forC(_guide,c) { cimg_get##N##x##N##x##N(_guide,p,q,r,c,pQ,tfloat); pQ+=N3; } \ + tfloat distance2 = 0; \ + pQ = Q._data; cimg_for(P,_pP,tfloat) { const tfloat dI = *_pP - *(pQ++); distance2+=dI*dI; } \ + distance2/=Pnorm; \ + const tfloat dx = (tfloat)p - x, dy = (tfloat)q - y, dz = (tfloat)r - z, \ + alldist = distance2 + (dx*dx + dy*dy + dz*dz)/sigma_s2, weight = std::exp(-alldist); \ + if (weight>weight_max) weight_max = weight; \ + sum_weights+=weight; \ + cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight*(*this)(p,q,r,c); \ + } \ + sum_weights+=weight_max; cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight_max*(*this)(x,y,z,c); \ + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,z,c)/=(Tfloat)sum_weights; \ + else cimg_forC(res,c) res(x,y,z,c) = (Tfloat)((*this)(x,y,z,c)); \ + } _cimg_abort_catch_openmp } + +#define _cimg_blur_patch2d_fast(N) { \ + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height>=4) \ + firstprivate(P,Q)) \ + cimg_forXY(res,x,y) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + cimg_def##N##x##N(res,x,y); \ + tfloat *pP = P._data; cimg_forC(_guide,c) { cimg_get##N##x##N(_guide,x,y,0,c,pP,tfloat); pP+=N2; } \ + const int x0 = x - rsize1, y0 = y - rsize1, x1 = x + rsize2, y1 = y + rsize2; \ + tfloat sum_weights = 0; \ + cimg_for_in##N##XY(res,x0,y0,x1,y1,p,q) \ + if (cimg::abs(_guide(x,y,0,0) - _guide(p,q,0,0))3?0:1; \ + sum_weights+=weight; \ + cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight*(*this)(p,q,c); \ + } \ + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,c)/=(Tfloat)sum_weights; \ + else cimg_forC(res,c) res(x,y,c) = (Tfloat)((*this)(x,y,c)); \ + } _cimg_abort_catch_openmp } + +#define _cimg_blur_patch2d(N) { \ + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height>=4) \ + firstprivate(P,Q)) \ + cimg_forXY(res,x,y) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + cimg_def##N##x##N(res,x,y); \ + tfloat *pP = P._data; cimg_forC(_guide,c) { cimg_get##N##x##N(_guide,x,y,0,c,pP,tfloat); pP+=N2; } \ + const int x0 = x - rsize1, y0 = y - rsize1, x1 = x + rsize2, y1 = y + rsize2; \ + tfloat sum_weights = 0, weight_max = 0; \ + cimg_for_in##N##XY(res,x0,y0,x1,y1,p,q) if (p!=x || q!=y) { \ + tfloat *pQ = Q._data; cimg_forC(_guide,c) { cimg_get##N##x##N(_guide,p,q,0,c,pQ,tfloat); pQ+=N2; } \ + tfloat distance2 = 0; \ + pQ = Q._data; cimg_for(P,_pP,tfloat) { const tfloat dI = *_pP - *(pQ++); distance2+=dI*dI; } \ + distance2/=Pnorm; \ + const tfloat dx = (tfloat)p - x, dy = (tfloat)q - y, \ + alldist = distance2 + (dx*dx+dy*dy)/sigma_s2, weight = std::exp(-alldist); \ + if (weight>weight_max) weight_max = weight; \ + sum_weights+=weight; \ + cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight*(*this)(p,q,c); \ + } \ + sum_weights+=weight_max; cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight_max*(*this)(x,y,c); \ + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,c)/=(Tfloat)sum_weights; \ + else cimg_forC(res,c) res(x,y,c) = (Tfloat)((*this)(x,y,c)); \ + } _cimg_abort_catch_openmp } + + typedef _cimg_tfloat tfloat; + if (!is_sameXYZ(guide)) + throw CImgArgumentException(_cimg_instance + "blur_patch(): Invalid size for specified guide image (%u,%u,%u,%u,%p).", + cimg_instance, + guide._width,guide._height,guide._depth,guide._spectrum,guide._data); + if (is_empty() || !patch_size || !lookup_size) return +*this; + Tfloat val_min, val_max = (Tfloat)max_min(val_min); + _cimg_abort_init_openmp; + cimg_abort_init; + + CImg res(_width,_height,_depth,_spectrum,0); + const CImg + __guide = guide?CImg(guide,guide.pixel_type()==cimg::type::string()): + CImg(*this,pixel_type()==cimg::type::string()), + _guide = smoothness>0?__guide.get_blur(smoothness):__guide.get_shared(); + CImg P(_guide._spectrum*patch_size*patch_size*(_depth>1?patch_size:1)), Q(P); + + t guide_min = (t)0, guide_max = (t)0; + if (sigma_r<0) guide_max = guide.max_min(guide_min); + const float + guide_delta = (float)(guide_max - guide_min), + _sigma_s = sigma_s>=0?sigma_s:-sigma_s*cimg::max(_width,_height,_depth)/100, + _sigma_r = sigma_r>=0?sigma_r:-sigma_r*guide_delta/100, + sigma_s2 = _sigma_s*_sigma_s, + sigma_r2 = _sigma_r*_sigma_r, + sigma_r3 = 3*_sigma_r, + Pnorm = P.size()*sigma_r2; + const int rsize2 = (int)lookup_size/2, rsize1 = (int)lookup_size - rsize2 - 1; + const unsigned int N2 = patch_size*patch_size, N3 = N2*patch_size; + cimg::unused(N2,N3); + if (_depth>1) switch (patch_size) { // 3D + case 2 : if (is_fast_approx) _cimg_blur_patch3d_fast(2) else _cimg_blur_patch3d(2) break; + case 3 : if (is_fast_approx) _cimg_blur_patch3d_fast(3) else _cimg_blur_patch3d(3) break; + default : { + const int psize2 = (int)patch_size/2, psize1 = (int)patch_size - psize2 - 1; + if (is_fast_approx) { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height*res._depth>=4) + firstprivate(P,Q)) + cimg_forXYZ(res,x,y,z) _cimg_abort_try_openmp { // Fast + cimg_abort_test; + P = _guide.get_crop(x - psize1,y - psize1,z - psize1,x + psize2,y + psize2,z + psize2,true); + const int x0 = x - rsize1, y0 = y - rsize1, z0 = z - rsize1, + x1 = x + rsize2, y1 = y + rsize2, z1 = z + rsize2; + tfloat sum_weights = 0; + cimg_for_inXYZ(res,x0,y0,z0,x1,y1,z1,p,q,r) + if (cimg::abs(_guide(x,y,z,0) - _guide(p,q,r,0))3?0:1; + sum_weights+=weight; + cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight*(*this)(p,q,r,c); + } + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,z,c)/=(Tfloat)sum_weights; + else cimg_forC(res,c) res(x,y,z,c) = (Tfloat)((*this)(x,y,z,c)); + } _cimg_abort_catch_openmp + } else { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height*res._depth>=4) + firstprivate(P,Q)) + cimg_forXYZ(res,x,y,z) _cimg_abort_try_openmp { // Exact + cimg_abort_test; + P = _guide.get_crop(x - psize1,y - psize1,z - psize1,x + psize2,y + psize2,z + psize2,true); + const int x0 = x - rsize1, y0 = y - rsize1, z0 = z - rsize1, + x1 = x + rsize2, y1 = y + rsize2, z1 = z + rsize2; + tfloat sum_weights = 0, weight_max = 0; + cimg_for_inXYZ(res,x0,y0,z0,x1,y1,z1,p,q,r) if (p!=x || q!=y || r!=z) { + (Q = _guide.get_crop(p - psize1,q - psize1,r - psize1,p + psize2,q + psize2,r + psize2,true))-=P; + const tfloat + dx = (tfloat)x - p, dy = (tfloat)y - q, dz = (tfloat)z - r, + distance2 = (tfloat)(Q.pow(2).sum()/Pnorm + (dx*dx + dy*dy + dz*dz)/sigma_s2), + weight = std::exp(-distance2); + if (weight>weight_max) weight_max = weight; + sum_weights+=weight; + cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight*(*this)(p,q,r,c); + } + sum_weights+=weight_max; cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight_max*(*this)(x,y,z,c); + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,z,c)/=(Tfloat)sum_weights; + else cimg_forC(res,c) res(x,y,z,c) = (Tfloat)((*this)(x,y,z,c)); + } _cimg_abort_catch_openmp + } + } + } else switch (patch_size) { // 2D + case 2 : if (is_fast_approx) _cimg_blur_patch2d_fast(2) else _cimg_blur_patch2d(2) break; + case 3 : if (is_fast_approx) _cimg_blur_patch2d_fast(3) else _cimg_blur_patch2d(3) break; + case 4 : if (is_fast_approx) _cimg_blur_patch2d_fast(4) else _cimg_blur_patch2d(4) break; + case 5 : if (is_fast_approx) _cimg_blur_patch2d_fast(5) else _cimg_blur_patch2d(5) break; + case 6 : if (is_fast_approx) _cimg_blur_patch2d_fast(6) else _cimg_blur_patch2d(6) break; + case 7 : if (is_fast_approx) _cimg_blur_patch2d_fast(7) else _cimg_blur_patch2d(7) break; + case 8 : if (is_fast_approx) _cimg_blur_patch2d_fast(8) else _cimg_blur_patch2d(8) break; + case 9 : if (is_fast_approx) _cimg_blur_patch2d_fast(9) else _cimg_blur_patch2d(9) break; + default : { // Fast + const int psize2 = (int)patch_size/2, psize1 = (int)patch_size - psize2 - 1; + if (is_fast_approx) { + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height>=4) + firstprivate(P,Q)) + cimg_forXY(res,x,y) _cimg_abort_try_openmp { // Fast + cimg_abort_test; + P = _guide.get_crop(x - psize1,y - psize1,x + psize2,y + psize2,true); + const int x0 = x - rsize1, y0 = y - rsize1, x1 = x + rsize2, y1 = y + rsize2; + tfloat sum_weights = 0; + cimg_for_inXY(res,x0,y0,x1,y1,p,q) + if (cimg::abs(_guide(x,y,0) - _guide(p,q,0))3?0:1; + sum_weights+=weight; + cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight*(*this)(p,q,c); + } + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,c)/=(Tfloat)sum_weights; + else cimg_forC(res,c) res(x,y,c) = (Tfloat)((*this)(x,y,c)); + } _cimg_abort_catch_openmp + } else { + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height>=4) + firstprivate(P,Q)) + cimg_forXY(res,x,y) _cimg_abort_try_openmp { // Exact + cimg_abort_test; + P = _guide.get_crop(x - psize1,y - psize1,x + psize2,y + psize2,true); + const int x0 = x - rsize1, y0 = y - rsize1, x1 = x + rsize2, y1 = y + rsize2; + tfloat sum_weights = 0, weight_max = 0; + cimg_for_inXY(res,x0,y0,x1,y1,p,q) if (p!=x || q!=y) { + (Q = _guide.get_crop(p - psize1,q - psize1,p + psize2,q + psize2,true))-=P; + const tfloat + dx = (tfloat)x - p, dy = (tfloat)y - q, + distance2 = (tfloat)(Q.pow(2).sum()/Pnorm + (dx*dx + dy*dy)/sigma_s2), + weight = std::exp(-distance2); + if (weight>weight_max) weight_max = weight; + sum_weights+=weight; + cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight*(*this)(p,q,c); + } + sum_weights+=weight_max; cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight_max*(*this)(x,y,c); + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,c)/=(Tfloat)sum_weights; + else cimg_forC(res,c) res(x,y,c) = (Tfloat)((*this)(x,y,c)); + } _cimg_abort_catch_openmp + } + } + } + return res.cut(val_min,val_max); + } + + //! Blur image using patch-based space \simplification. + CImg& blur_patch(const float sigma_s, const float sigma_r, const unsigned int patch_size=3, + const unsigned int lookup_size=4, const float smoothness=0, const bool is_fast_approx=true) { + return blur_patch(*this,sigma_s,sigma_r,patch_size,lookup_size,smoothness,is_fast_approx); + } + + //! Blur image using patch-based space \simplification \newinstance. + CImg get_blur_patch(const float sigma_s, const float sigma_r, const unsigned int patch_size=3, + const unsigned int lookup_size=4, const float smoothness=0, + const bool is_fast_approx=true) const { + return get_blur_patch(*this,sigma_s,sigma_r,patch_size,lookup_size,smoothness,is_fast_approx); + } + + //! Blur image with the median filter. + /** + \param n Size of the median filter. + \param threshold Threshold used to discard pixels too far from the current pixel value in the median computation. + **/ + CImg& blur_median(const unsigned int n, const float threshold=0) { + if (!n) return *this; + return get_blur_median(n,threshold).move_to(*this); + } + + //! Blur image with the median filter \newinstance. + CImg get_blur_median(const unsigned int n, const float threshold=0) const { + if (is_empty() || n<=1) return +*this; + CImg res(_width,_height,_depth,_spectrum); + T *ptrd = res._data; + cimg::unused(ptrd); + const int hr = (int)n/2, hl = n - hr - 1; + if (res._depth!=1) { // 3D + if (threshold>0) + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && + _height*_depth*_spectrum>=4)) + cimg_forXYZC(*this,x,y,z,c) { // With threshold + const int + x0 = x - hl, y0 = y - hl, z0 = z - hl, x1 = x + hr, y1 = y + hr, z1 = z + hr, + nx0 = x0<0?0:x0, ny0 = y0<0?0:y0, nz0 = z0<0?0:z0, + nx1 = x1>=width()?width() - 1:x1, ny1 = y1>=height()?height() - 1:y1, nz1 = z1>=depth()?depth() - 1:z1; + const Tfloat val0 = (Tfloat)(*this)(x,y,z,c); + CImg values(n*n*n); + unsigned int nb_values = 0; + T *_ptrd = values.data(); + cimg_for_inXYZ(*this,nx0,ny0,nz0,nx1,ny1,nz1,p,q,r) + if (cimg::abs((*this)(p,q,r,c) - val0)<=threshold) { *(_ptrd++) = (*this)(p,q,r,c); ++nb_values; } + res(x,y,z,c) = nb_values?values.get_shared_points(0,nb_values - 1).median():(*this)(x,y,z,c); + } + else + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && + _height*_depth*_spectrum>=4)) + cimg_forXYZC(*this,x,y,z,c) { // Without threshold + const int + x0 = x - hl, y0 = y - hl, z0 = z - hl, x1 = x + hr, y1 = y + hr, z1 = z + hr, + nx0 = x0<0?0:x0, ny0 = y0<0?0:y0, nz0 = z0<0?0:z0, + nx1 = x1>=width()?width() - 1:x1, ny1 = y1>=height()?height() - 1:y1, nz1 = z1>=depth()?depth() - 1:z1; + res(x,y,z,c) = get_crop(nx0,ny0,nz0,c,nx1,ny1,nz1,c).median(); + } + } else { + if (threshold>0) + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && + _height*_spectrum>=4)) + cimg_forXYC(*this,x,y,c) { // With threshold + const int + x0 = x - hl, y0 = y - hl, x1 = x + hr, y1 = y + hr, + nx0 = x0<0?0:x0, ny0 = y0<0?0:y0, + nx1 = x1>=width()?width() - 1:x1, ny1 = y1>=height()?height() - 1:y1; + const Tfloat val0 = (Tfloat)(*this)(x,y,c); + CImg values(n*n); + unsigned int nb_values = 0; + T *_ptrd = values.data(); + cimg_for_inXY(*this,nx0,ny0,nx1,ny1,p,q) + if (cimg::abs((*this)(p,q,c) - val0)<=threshold) { *(_ptrd++) = (*this)(p,q,c); ++nb_values; } + res(x,y,c) = nb_values?values.get_shared_points(0,nb_values - 1).median():(*this)(x,y,c); + } + else { + const int + w1 = width() - 1, h1 = height() - 1, + w2 = width() - 2, h2 = height() - 2, + w3 = width() - 3, h3 = height() - 3, + w4 = width() - 4, h4 = height() - 4; + switch (n) { // Without threshold + case 3 : { + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2)) + cimg_forC(*this,c) { + CImg I(9); + cimg_for_in3x3(*this,1,1,w2,h2,x,y,0,c,I,T) + res(x,y,c) = cimg::median(I[0],I[1],I[2],I[3],I[4],I[5],I[6],I[7],I[8]); + cimg_for_borderXY(*this,x,y,1) + res(x,y,c) = get_crop(std::max(0,x - 1),std::max(0,y - 1),0,c, + std::min(w1,x + 1),std::min(h1,y + 1),0,c).median(); + } + } break; + case 5 : { + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2)) + cimg_forC(*this,c) { + CImg I(25); + cimg_for_in5x5(*this,2,2,w3,h3,x,y,0,c,I,T) + res(x,y,c) = cimg::median(I[0],I[1],I[2],I[3],I[4], + I[5],I[6],I[7],I[8],I[9], + I[10],I[11],I[12],I[13],I[14], + I[15],I[16],I[17],I[18],I[19], + I[20],I[21],I[22],I[23],I[24]); + cimg_for_borderXY(*this,x,y,2) + res(x,y,c) = get_crop(std::max(0,x - 2),std::max(0,y - 2),0,c, + std::min(w1,x + 2),std::min(h1,y + 2),0,c).median(); + } + } break; + case 7 : { + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2)) + cimg_forC(*this,c) { + CImg I(49); + cimg_for_in7x7(*this,3,3,w4,h4,x,y,0,c,I,T) + res(x,y,c) = cimg::median(I[0],I[1],I[2],I[3],I[4],I[5],I[6], + I[7],I[8],I[9],I[10],I[11],I[12],I[13], + I[14],I[15],I[16],I[17],I[18],I[19],I[20], + I[21],I[22],I[23],I[24],I[25],I[26],I[27], + I[28],I[29],I[30],I[31],I[32],I[33],I[34], + I[35],I[36],I[37],I[38],I[39],I[40],I[41], + I[42],I[43],I[44],I[45],I[46],I[47],I[48]); + cimg_for_borderXY(*this,x,y,3) + res(x,y,c) = get_crop(std::max(0,x - 3),std::max(0,y - 3),0,c, + std::min(w1,x + 3),std::min(h1,y + 3),0,c).median(); + } + } break; + default : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && _height*_spectrum>=4)) + cimg_forXYC(*this,x,y,c) { + const int + x0 = x - hl, y0 = y - hl, x1 = x + hr, y1 = y + hr, + nx0 = x0<0?0:x0, ny0 = y0<0?0:y0, + nx1 = x1>=width()?width() - 1:x1, ny1 = y1>=height()?height() - 1:y1; + res(x,y,c) = get_crop(nx0,ny0,0,c,nx1,ny1,0,c).median(); + } + } + } + } + } + return res; + } + + //! Sharpen image. + /** + \param amplitude Sharpening amplitude + \param sharpen_type Select sharpening method. Can be { false=inverse diffusion | true=shock filters }. + \param edge Edge threshold (shock filters only). + \param alpha Gradient smoothness (shock filters only). + \param sigma Tensor smoothness (shock filters only). + **/ + CImg& sharpen(const float amplitude, const bool sharpen_type=false, const float edge=1, + const float alpha=0, const float sigma=0) { + if (is_empty()) return *this; + T val_min, val_max = max_min(val_min); + const float nedge = edge/2; + CImg velocity(_width,_height,_depth,_spectrum), _veloc_max(_spectrum); + + if (_depth>1) { // 3D + if (sharpen_type) { // Shock filters + CImg G = (alpha>0?get_blur(alpha).get_structure_tensors():get_structure_tensors()); + if (sigma>0) G.blur(sigma); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*32 && + _height*_depth>=16)) + cimg_forYZ(G,y,z) { + Tfloat *ptrG0 = G.data(0,y,z,0), *ptrG1 = G.data(0,y,z,1), + *ptrG2 = G.data(0,y,z,2), *ptrG3 = G.data(0,y,z,3); + CImg val, vec; + cimg_forX(G,x) { + G.get_tensor_at(x,y,z).symmetric_eigen(val,vec); + if (val[0]<0) val[0] = 0; + if (val[1]<0) val[1] = 0; + if (val[2]<0) val[2] = 0; + *(ptrG0++) = vec(0,0); + *(ptrG1++) = vec(0,1); + *(ptrG2++) = vec(0,2); + *(ptrG3++) = 1 - (Tfloat)std::pow(1 + val[0] + val[1] + val[2],-(Tfloat)nedge); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*512 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = velocity.data(0,0,0,c), veloc_max = 0; + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) { + const Tfloat + u = G(x,y,z,0), + v = G(x,y,z,1), + w = G(x,y,z,2), + amp = G(x,y,z,3), + ixx = Incc + Ipcc - 2*Iccc, + ixy = (Innc + Ippc - Inpc - Ipnc)/4, + ixz = (Incn + Ipcp - Incp - Ipcn)/4, + iyy = Icnc + Icpc - 2*Iccc, + iyz = (Icnn + Icpp - Icnp - Icpn)/4, + izz = Iccn + Iccp - 2*Iccc, + ixf = Incc - Iccc, + ixb = Iccc - Ipcc, + iyf = Icnc - Iccc, + iyb = Iccc - Icpc, + izf = Iccn - Iccc, + izb = Iccc - Iccp, + itt = u*u*ixx + v*v*iyy + w*w*izz + 2*u*v*ixy + 2*u*w*ixz + 2*v*w*iyz, + it = u*cimg::minmod(ixf,ixb) + v*cimg::minmod(iyf,iyb) + w*cimg::minmod(izf,izb), + veloc = -amp*cimg::sign(itt)*cimg::abs(it); + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + _veloc_max[c] = veloc_max; + } + } else // Inverse diffusion + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*512 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = velocity.data(0,0,0,c), veloc_max = 0; + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) { + const Tfloat veloc = -Ipcc - Incc - Icpc - Icnc - Iccp - Iccn + 6*Iccc; + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + _veloc_max[c] = veloc_max; + } + } else { // 2D + if (sharpen_type) { // Shock filters + CImg G = (alpha>0?get_blur(alpha).get_structure_tensors():get_structure_tensors()); + if (sigma>0) G.blur(sigma); + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*32 && + _height>=(cimg_openmp_sizefactor)*16)) + cimg_forY(G,y) { + CImg val, vec; + Tfloat *ptrG0 = G.data(0,y,0,0), *ptrG1 = G.data(0,y,0,1), *ptrG2 = G.data(0,y,0,2); + cimg_forX(G,x) { + G.get_tensor_at(x,y).symmetric_eigen(val,vec); + if (val[0]<0) val[0] = 0; + if (val[1]<0) val[1] = 0; + *(ptrG0++) = vec(0,0); + *(ptrG1++) = vec(0,1); + *(ptrG2++) = 1 - (Tfloat)std::pow(1 + val[0] + val[1],-(Tfloat)nedge); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*512 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = velocity.data(0,0,0,c), veloc_max = 0; + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) { + const Tfloat + u = G(x,y,0), + v = G(x,y,1), + amp = G(x,y,2), + ixx = Inc + Ipc - 2*Icc, + ixy = (Inn + Ipp - Inp - Ipn)/4, + iyy = Icn + Icp - 2*Icc, + ixf = Inc - Icc, + ixb = Icc - Ipc, + iyf = Icn - Icc, + iyb = Icc - Icp, + itt = u*u*ixx + v*v*iyy + 2*u*v*ixy, + it = u*cimg::minmod(ixf,ixb) + v*cimg::minmod(iyf,iyb), + veloc = -amp*cimg::sign(itt)*cimg::abs(it); + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + _veloc_max[c] = veloc_max; + } + } else // Inverse diffusion + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*512 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = velocity.data(0,0,0,c), veloc_max = 0; + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) { + const Tfloat veloc = -Ipc - Inc - Icp - Icn + 4*Icc; + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + _veloc_max[c] = veloc_max; + } + } + const Tfloat veloc_max = _veloc_max.max(); + if (veloc_max<=0) return *this; + return ((velocity*=amplitude/veloc_max)+=*this).cut(val_min,val_max).move_to(*this); + } + + //! Sharpen image \newinstance. + CImg get_sharpen(const float amplitude, const bool sharpen_type=false, const float edge=1, + const float alpha=0, const float sigma=0) const { + return (+*this).sharpen(amplitude,sharpen_type,edge,alpha,sigma); + } + + //! Return image gradient. + /** + \param axes Axes considered for the gradient computation, as a C-string (e.g "xy"). + \param scheme = Numerical scheme used for the gradient computation: + - -1 = Backward finite differences + - 0 = Centered finite differences (default) + - 1 = Forward finite differences + - 2 = Using Sobel kernels + - 3 = Using rotation invariant kernels + - 4 = Using Deriche recursive filter. + - 5 = Using Van Vliet recursive filter. + **/ + CImgList get_gradient(const char *const axes=0, const int scheme=0) const { + CImgList res; + char __axes[4] = { 0 }; + const char *_axes = axes?axes:__axes; + if (!axes) { + unsigned int k = 0; + if (_width>1) __axes[k++] = 'x'; + if (_height>1) __axes[k++] = 'y'; + if (_depth>1) __axes[k++] = 'z'; + } + + CImg grad; + while (*_axes) { + const char axis = cimg::lowercase(*(_axes++)); + if (axis!='x' && axis!='y' && axis!='z') + throw CImgArgumentException(_cimg_instance + "get_gradient(): Invalid specified axes '%s'.", + cimg_instance, + axes); + const longT off = axis=='x'?1:axis=='y'?_width:_width*_height; + if ((axis=='x' && _width==1) || (axis=='y' && _height==1) || (axis=='z' && _depth==1)) { + grad.assign(_width,_height,_depth,_spectrum,0).move_to(res); + continue; + } + + const int _scheme = axis=='z' && (scheme==2 || scheme==3)?0:scheme; + switch (_scheme) { + case -1 : { // Backward finite differences + grad.assign(_width,_height,_depth,_spectrum); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(size(),16384)) + cimg_forXYZC(*this,x,y,z,c) { + const ulongT pos = offset(x,y,z,c); + if ((axis=='x' && !x) || (axis=='y' && !y) || (axis=='z' && !z)) + grad[pos] = 0; + else + grad[pos] = (Tfloat)_data[pos] - _data[pos - off]; + } + grad.move_to(res); + } break; + case 1 : { // Forward finite differences + grad.assign(_width,_height,_depth,_spectrum); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(size(),16384)) + cimg_forXYZC(*this,x,y,z,c) { + const ulongT pos = offset(x,y,z,c); + if ((axis=='x' && x==width() - 1) || (axis=='y' && y==height() - 1) || (axis=='z' && z==depth() - 1)) + grad[pos] = 0; + else + grad[pos] = (Tfloat)_data[pos + off] - _data[pos]; + } + grad.move_to(res); + } break; + case 2 : { // Sobel scheme + grad.assign(_width,_height,_depth,_spectrum); + if (axis=='x') // X-axis + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*16384 && + _depth*_spectrum>=2)) + cimg_forZC(*this,z,c) { + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) grad(x,y,z,c) = - Ipp + Inp - 2*Ipc + 2*Inc - Ipn + Inn; + } + else // Y-axis + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*16384 && + _depth*_spectrum>=2)) + cimg_forZC(*this,z,c) { + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) grad(x,y,z,c) = - Ipp - 2*Icp - Inp + Ipn + 2*Icn + Inn; + } + grad.move_to(res); + } break; + case 3 : { // Rotation invariant scheme + const Tfloat a = (Tfloat)(0.25f*(2 - std::sqrt(2.f))), b = (Tfloat)(0.5f*(std::sqrt(2.f) - 1)); + grad.assign(_width,_height,_depth,_spectrum); + if (axis=='x') // X-axis + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*16384 && + _depth*_spectrum>=2)) + cimg_forZC(*this,z,c) { + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) grad(x,y,z,c) = -a*Ipp - b*Ipc - a*Ipn + a*Inp + b*Inc + a*Inn; + } + else // Y-axis + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*16384 && + _depth*_spectrum>=2)) + cimg_forZC(*this,z,c) { + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) grad(x,y,z,c) = -a*Ipp - b*Icp - a*Inp + a*Ipn + b*Icn + a*Inn; + } + grad.move_to(res); + } break; + case 4 : // Deriche filter + get_deriche(0,1,axis).move_to(res); + break; + case 5 : // Van Vliet filter + get_vanvliet(0,1,axis).move_to(res); + break; + default : { // Central finite differences + grad.assign(_width,_height,_depth,_spectrum); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(size(),16384)) + cimg_forXYZC(*this,x,y,z,c) { + const ulongT pos = offset(x,y,z,c); + if ((axis=='x' && !x) || (axis=='y' && !y) || (axis=='z' && !z)) + grad[pos] = ((Tfloat)_data[pos + off] - _data[pos])/2; + else if ((axis=='x' && x==width() - 1) || (axis=='y' && y==height() - 1) || (axis=='z' && z==depth() - 1)) + grad[pos] = ((Tfloat)_data[pos] - _data[pos - off])/2; + else + grad[pos] = ((Tfloat)_data[pos + off] - _data[pos - off])/2; + } + grad.move_to(res); + } break; + } + } + return res; + } + + //! Return image hessian. + /** + \param axes Axes considered for the hessian computation, as a C-string (e.g "xy"). + **/ + CImgList get_hessian(const char *const axes=0) const { + CImgList res; + char __axes[12] = { 0 }; + const char *_axes = axes?axes:__axes; + if (!axes) { + unsigned int k = 0; + if (_width>1) { __axes[k++] = 'x'; __axes[k++] = 'x'; } + if (_width>1 && _height>1) { __axes[k++] = 'x'; __axes[k++] = 'y'; } + if (_width>1 && _depth>1) { __axes[k++] = 'x'; __axes[k++] = 'z'; } + if (_height>1) { __axes[k++] = 'y'; __axes[k++] = 'y'; } + if (_height>1 && _depth>1) { __axes[k++] = 'y'; __axes[k++] = 'z'; } + if (_depth>1) { __axes[k++] = 'z'; __axes[k++] = 'z'; } + } + const unsigned int len = (unsigned int)std::strlen(_axes); + if (len%2) + throw CImgArgumentException(_cimg_instance + "get_hessian(): Invalid specified axes '%s'.", + cimg_instance, + axes); + CImg hess; + for (unsigned int k = 0; k=(cimg_openmp_sizefactor)*16384 && + _depth*_spectrum>=2)) + cimg_forZC(*this,z,c) { + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) hess(x,y,z,c) = (Inn + Ipp - Inp - Ipn)/4; + } + else if (axis1=='x' && axis2=='z') // Ixz + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*16384 && + _spectrum>=2)) + cimg_forC(*this,c) { + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) hess(x,y,z,c) = (Incn + Ipcp - Incp - Ipcn)/4; + } + else // Iyz + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*16384 && + _spectrum>=2)) + cimg_forC(*this,c) { + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) hess(x,y,z,c) = (Icnn + Icpp - Icnp - Icpn)/4; + } + hess.move_to(res); + } + return res; + } + + //! Compute image Laplacian. + CImg& laplacian() { + return get_laplacian().move_to(*this); + } + + //! Compute image Laplacian \newinstance. + CImg get_laplacian() const { + if (is_empty()) return CImg(); + CImg res(_width,_height,_depth,_spectrum); + if (_depth>1) { // 3D + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*1048576 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = res.data(0,0,0,c); + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) *(ptrd++) = Incc + Ipcc + Icnc + Icpc + Iccn + Iccp - 6*Iccc; + } + } else if (_height>1) { // 2D + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*1048576 && + _depth*_spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = res.data(0,0,0,c); + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) *(ptrd++) = Inc + Ipc + Icn + Icp - 4*Icc; + } + } else { // 1D + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*1048576 && + _height*_depth*_spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = res.data(0,0,0,c); + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) *(ptrd++) = Inc + Ipc - 2*Icc; + } + } + return res; + } + + //! Compute the structure tensor field of an image. + /** + \param is_fwbw_scheme scheme. Can be { false=centered | true=forward-backward } + **/ + CImg& structure_tensors(const bool is_fwbw_scheme=false) { + return get_structure_tensors(is_fwbw_scheme).move_to(*this); + } + + //! Compute the structure tensor field of an image \newinstance. + CImg get_structure_tensors(const bool is_fwbw_scheme=false) const { + if (is_empty()) return *this; + CImg res; + if (_depth>1) { // 3D + res.assign(_width,_height,_depth,6,0); + if (!is_fwbw_scheme) { // Classical central finite differences + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*1048576 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat + *ptrd0 = res.data(0,0,0,0), *ptrd1 = res.data(0,0,0,1), *ptrd2 = res.data(0,0,0,2), + *ptrd3 = res.data(0,0,0,3), *ptrd4 = res.data(0,0,0,4), *ptrd5 = res.data(0,0,0,5); + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) { + const Tfloat + ix = (Incc - Ipcc)/2, + iy = (Icnc - Icpc)/2, + iz = (Iccn - Iccp)/2; + *(ptrd0++)+=ix*ix; + *(ptrd1++)+=ix*iy; + *(ptrd2++)+=ix*iz; + *(ptrd3++)+=iy*iy; + *(ptrd4++)+=iy*iz; + *(ptrd5++)+=iz*iz; + } + } + } else { // Forward/backward finite differences + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*1048576 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat + *ptrd0 = res.data(0,0,0,0), *ptrd1 = res.data(0,0,0,1), *ptrd2 = res.data(0,0,0,2), + *ptrd3 = res.data(0,0,0,3), *ptrd4 = res.data(0,0,0,4), *ptrd5 = res.data(0,0,0,5); + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) { + const Tfloat + ixf = Incc - Iccc, ixb = Iccc - Ipcc, + iyf = Icnc - Iccc, iyb = Iccc - Icpc, + izf = Iccn - Iccc, izb = Iccc - Iccp; + *(ptrd0++)+=(ixf*ixf + ixb*ixb)/2; + *(ptrd1++)+=(ixf*iyf + ixf*iyb + ixb*iyf + ixb*iyb)/4; + *(ptrd2++)+=(ixf*izf + ixf*izb + ixb*izf + ixb*izb)/4; + *(ptrd3++)+=(iyf*iyf + iyb*iyb)/2; + *(ptrd4++)+=(iyf*izf + iyf*izb + iyb*izf + iyb*izb)/4; + *(ptrd5++)+=(izf*izf + izb*izb)/2; + } + } + } + } else { // 2D + res.assign(_width,_height,_depth,3,0); + if (!is_fwbw_scheme) { // Classical central finite differences + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*1048576 && + _depth*_spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd0 = res.data(0,0,0,0), *ptrd1 = res.data(0,0,0,1), *ptrd2 = res.data(0,0,0,2); + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) { + const Tfloat + ix = (Inc - Ipc)/2, + iy = (Icn - Icp)/2; + *(ptrd0++)+=ix*ix; + *(ptrd1++)+=ix*iy; + *(ptrd2++)+=iy*iy; + } + } + } else { // Forward/backward finite differences (version 2) + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*1048576 && + _depth*_spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd0 = res.data(0,0,0,0), *ptrd1 = res.data(0,0,0,1), *ptrd2 = res.data(0,0,0,2); + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) { + const Tfloat + ixf = Inc - Icc, ixb = Icc - Ipc, + iyf = Icn - Icc, iyb = Icc - Icp; + *(ptrd0++)+=(ixf*ixf + ixb*ixb)/2; + *(ptrd1++)+=(ixf*iyf + ixf*iyb + ixb*iyf + ixb*iyb)/4; + *(ptrd2++)+=(iyf*iyf + iyb*iyb)/2; + } + } + } + } + return res; + } + + //! Compute field of diffusion tensors for edge-preserving smoothing. + /** + \param sharpness Sharpness + \param anisotropy Anisotropy + \param alpha Standard deviation of the gradient blur. + \param sigma Standard deviation of the structure tensor blur. + \param is_sqrt Tells if the square root of the tensor field is computed instead. + **/ + CImg& diffusion_tensors(const float sharpness=0.7f, const float anisotropy=0.6f, + const float alpha=0.6f, const float sigma=1.1f, const bool is_sqrt=false) { + CImg res; + const float + nsharpness = std::max(sharpness,1e-5f), + power1 = (is_sqrt?0.5f:1)*nsharpness, + power2 = power1/(1e-7f + 1 - anisotropy); + blur(alpha).normalize(0,(T)255); + + if (_depth>1) { // 3D + get_structure_tensors().move_to(res).blur(sigma); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth>=(cimg_openmp_sizefactor)*256)) + cimg_forYZ(*this,y,z) { + Tfloat + *ptrd0 = res.data(0,y,z,0), *ptrd1 = res.data(0,y,z,1), *ptrd2 = res.data(0,y,z,2), + *ptrd3 = res.data(0,y,z,3), *ptrd4 = res.data(0,y,z,4), *ptrd5 = res.data(0,y,z,5); + CImg val(3), vec(3,3); + cimg_forX(*this,x) { + res.get_tensor_at(x,y,z).symmetric_eigen(val,vec); + const float + _l1 = val[2], _l2 = val[1], _l3 = val[0], + l1 = _l1>0?_l1:0, l2 = _l2>0?_l2:0, l3 = _l3>0?_l3:0, + ux = vec(0,0), uy = vec(0,1), uz = vec(0,2), + vx = vec(1,0), vy = vec(1,1), vz = vec(1,2), + wx = vec(2,0), wy = vec(2,1), wz = vec(2,2), + n1 = (float)std::pow(1 + l1 + l2 + l3,-power1), + n2 = (float)std::pow(1 + l1 + l2 + l3,-power2); + *(ptrd0++) = n1*(ux*ux + vx*vx) + n2*wx*wx; + *(ptrd1++) = n1*(ux*uy + vx*vy) + n2*wx*wy; + *(ptrd2++) = n1*(ux*uz + vx*vz) + n2*wx*wz; + *(ptrd3++) = n1*(uy*uy + vy*vy) + n2*wy*wy; + *(ptrd4++) = n1*(uy*uz + vy*vz) + n2*wy*wz; + *(ptrd5++) = n1*(uz*uz + vz*vz) + n2*wz*wz; + } + } + } else { // for 2D images + get_structure_tensors().move_to(res).blur(sigma); + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height>=(cimg_openmp_sizefactor)*256)) + cimg_forY(*this,y) { + Tfloat *ptrd0 = res.data(0,y,0,0), *ptrd1 = res.data(0,y,0,1), *ptrd2 = res.data(0,y,0,2); + CImg val(2), vec(2,2); + cimg_forX(*this,x) { + res.get_tensor_at(x,y).symmetric_eigen(val,vec); + const float + _l1 = val[1], _l2 = val[0], + l1 = _l1>0?_l1:0, l2 = _l2>0?_l2:0, + ux = vec(1,0), uy = vec(1,1), + vx = vec(0,0), vy = vec(0,1), + n1 = (float)std::pow(1 + l1 + l2,-power1), + n2 = (float)std::pow(1 + l1 + l2,-power2); + *(ptrd0++) = n1*ux*ux + n2*vx*vx; + *(ptrd1++) = n1*ux*uy + n2*vx*vy; + *(ptrd2++) = n1*uy*uy + n2*vy*vy; + } + } + } + return res.move_to(*this); + } + + //! Compute field of diffusion tensors for edge-preserving smoothing \newinstance. + CImg get_diffusion_tensors(const float sharpness=0.7f, const float anisotropy=0.6f, + const float alpha=0.6f, const float sigma=1.1f, const bool is_sqrt=false) const { + return CImg(*this,false).diffusion_tensors(sharpness,anisotropy,alpha,sigma,is_sqrt); + } + + //! Estimate displacement field between two images. + /** + \param source Reference image. + \param smoothness Smoothness of estimated displacement field. + \param precision Precision required for algorithm convergence. + \param nb_scales Number of scales used to estimate the displacement field. + \param iteration_max Maximum number of iterations allowed for one scale. + \param is_backward If false, match I2(X + U(X)) = I1(X), else match I2(X) = I1(X - U(X)). + \param guide Image used as the initial correspondence estimate for the algorithm. + 'guide' may have a last channel with boolean values (0=false | other=true) that + tells for each pixel if its correspondence vector is constrained to its initial value (constraint mask). + **/ + CImg& displacement(const CImg& source, const float smoothness=0.1f, const float precision=5.f, + const unsigned int nb_scales=0, const unsigned int iteration_max=10000, + const bool is_backward=false, + const CImg& guide=CImg::const_empty()) { + return get_displacement(source,smoothness,precision,nb_scales,iteration_max,is_backward,guide). + move_to(*this); + } + + //! Estimate displacement field between two images \newinstance. + CImg get_displacement(const CImg& source, + const float smoothness=0.1f, const float precision=5.f, + const unsigned int nb_scales=0, const unsigned int iteration_max=10000, + const bool is_backward=false, + const CImg& guide=CImg::const_empty()) const { + if (is_empty() || !source) return +*this; + if (!is_sameXYZC(source)) + throw CImgArgumentException(_cimg_instance + "displacement(): Instance and source image (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + source._width,source._height,source._depth,source._spectrum,source._data); + if (precision<0) + throw CImgArgumentException(_cimg_instance + "displacement(): Invalid specified precision %g " + "(should be >=0)", + cimg_instance, + precision); + + const bool is_3d = source._depth>1; + const unsigned int constraint = is_3d?3:2; + + if (guide && + (guide._width!=_width || guide._height!=_height || guide._depth!=_depth || guide._spectrum0?nb_scales: + (unsigned int)cimg::round(std::log(mins/8.)/std::log(1.5),1,1); + + const float _precision = (float)std::pow(10.,-(double)precision); + float sm, sM = source.max_min(sm), tm, tM = max_min(tm); + const float sdelta = sm==sM?1:(sM - sm), tdelta = tm==tM?1:(tM - tm); + + CImg U, V; + floatT bound = 0; + for (int scale = (int)_nb_scales - 1; scale>=0; --scale) { + const float factor = (float)std::pow(1.5,(double)scale); + const unsigned int + _sw = (unsigned int)(_width/factor), sw = _sw?_sw:1, + _sh = (unsigned int)(_height/factor), sh = _sh?_sh:1, + _sd = (unsigned int)(_depth/factor), sd = _sd?_sd:1; + if (sw<5 && sh<5 && (!is_3d || sd<5)) continue; // Skip too small scales + const CImg + I1 = (source.get_resize(sw,sh,sd,-100,2)-=sm)/=sdelta, + I2 = (get_resize(I1,2)-=tm)/=tdelta; + if (guide._spectrum>constraint) guide.get_resize(I2._width,I2._height,I2._depth,-100,1).move_to(V); + if (U) (U*=1.5f).resize(I2._width,I2._height,I2._depth,-100,3); + else { + if (guide) + guide.get_shared_channels(0,is_3d?2:1).get_resize(I2._width,I2._height,I2._depth,-100,2).move_to(U); + else U.assign(I2._width,I2._height,I2._depth,is_3d?3:2,0); + } + + float dt = 2, energy = cimg::type::max(); + const CImgList dI = is_backward?I1.get_gradient():I2.get_gradient(); + cimg_abort_init; + + for (unsigned int iteration = 0; iteration=0) // Isotropic regularization + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_height*_depth>=(cimg_openmp_sizefactor)*8 && + _width>=(cimg_openmp_sizefactor)*16) + reduction(+:_energy)) + cimg_forYZ(U,y,z) { + const int + _p1y = y?y - 1:0, _n1y = yx) U(x,y,z,0) = (float)x; + if (U(x,y,z,1)>y) U(x,y,z,1) = (float)y; + if (U(x,y,z,2)>z) U(x,y,z,2) = (float)z; + bound = (float)x - _width; if (U(x,y,z,0)<=bound) U(x,y,z,0) = bound; + bound = (float)y - _height; if (U(x,y,z,1)<=bound) U(x,y,z,1) = bound; + bound = (float)z - _depth; if (U(x,y,z,2)<=bound) U(x,y,z,2) = bound; + } else { + if (U(x,y,z,0)<-x) U(x,y,z,0) = -(float)x; + if (U(x,y,z,1)<-y) U(x,y,z,1) = -(float)y; + if (U(x,y,z,2)<-z) U(x,y,z,2) = -(float)z; + bound = (float)_width - x; if (U(x,y,z,0)>=bound) U(x,y,z,0) = bound; + bound = (float)_height - y; if (U(x,y,z,1)>=bound) U(x,y,z,1) = bound; + bound = (float)_depth - z; if (U(x,y,z,2)>=bound) U(x,y,z,2) = bound; + } + _energy+=delta_I*delta_I + smoothness*_energy_regul; + } + if (V) cimg_forXYZ(V,_x,_y,_z) if (V(_x,_y,_z,3)) { // Apply constraints + U(_x,_y,_z,0) = V(_x,_y,_z,0)/factor; + U(_x,_y,_z,1) = V(_x,_y,_z,1)/factor; + U(_x,_y,_z,2) = V(_x,_y,_z,2)/factor; + } + } else { // Anisotropic regularization + const float nsmoothness = -smoothness; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_height*_depth>=(cimg_openmp_sizefactor)*8 && + _width>=(cimg_openmp_sizefactor)*16) + reduction(+:_energy)) + cimg_forYZ(U,y,z) { + const int + _p1y = y?y - 1:0, _n1y = yx) U(x,y,z,0) = (float)x; + if (U(x,y,z,1)>y) U(x,y,z,1) = (float)y; + if (U(x,y,z,2)>z) U(x,y,z,2) = (float)z; + bound = (float)x - _width; if (U(x,y,z,0)<=bound) U(x,y,z,0) = bound; + bound = (float)y - _height; if (U(x,y,z,1)<=bound) U(x,y,z,1) = bound; + bound = (float)z - _depth; if (U(x,y,z,2)<=bound) U(x,y,z,2) = bound; + } else { + if (U(x,y,z,0)<-x) U(x,y,z,0) = -(float)x; + if (U(x,y,z,1)<-y) U(x,y,z,1) = -(float)y; + if (U(x,y,z,2)<-z) U(x,y,z,2) = -(float)z; + bound = (float)_width - x; if (U(x,y,z,0)>=bound) U(x,y,z,0) = bound; + bound = (float)_height - y; if (U(x,y,z,1)>=bound) U(x,y,z,1) = bound; + bound = (float)_depth - z; if (U(x,y,z,2)>=bound) U(x,y,z,2) = bound; + } + _energy+=delta_I*delta_I + nsmoothness*_energy_regul; + } + if (V) cimg_forXYZ(V,_x,_y,_z) if (V(_x,_y,_z,3)) { // Apply constraints + U(_x,_y,_z,0) = V(_x,_y,_z,0)/factor; + U(_x,_y,_z,1) = V(_x,_y,_z,1)/factor; + U(_x,_y,_z,2) = V(_x,_y,_z,2)/factor; + } + } + } + } else { // 2D version + if (smoothness>=0) // Isotropic regularization + cimg_pragma_openmp(parallel for cimg_openmp_if(_height>=(cimg_openmp_sizefactor)*8 && + _width>=(cimg_openmp_sizefactor)*16) reduction(+:_energy)) + cimg_forY(U,y) { + const int _p1y = y?y - 1:0, _n1y = yx) U(x,y,0) = (float)x; + if (U(x,y,1)>y) U(x,y,1) = (float)y; + bound = (float)x - _width; if (U(x,y,0)<=bound) U(x,y,0) = bound; + bound = (float)y - _height; if (U(x,y,1)<=bound) U(x,y,1) = bound; + } else { + if (U(x,y,0)<-x) U(x,y,0) = -(float)x; + if (U(x,y,1)<-y) U(x,y,1) = -(float)y; + bound = (float)_width - x; if (U(x,y,0)>=bound) U(x,y,0) = bound; + bound = (float)_height - y; if (U(x,y,1)>=bound) U(x,y,1) = bound; + } + _energy+=delta_I*delta_I + smoothness*_energy_regul; + } + if (V) cimg_forXY(V,_x,_y) if (V(_x,_y,2)) { // Apply constraints + U(_x,_y,0) = V(_x,_y,0)/factor; + U(_x,_y,1) = V(_x,_y,1)/factor; + } + } else { // Anisotropic regularization + const float nsmoothness = -smoothness; + cimg_pragma_openmp(parallel for cimg_openmp_if(_height>=(cimg_openmp_sizefactor)*8 && + _width>=(cimg_openmp_sizefactor)*16) reduction(+:_energy)) + cimg_forY(U,y) { + const int _p1y = y?y - 1:0, _n1y = yx) U(x,y,0) = (float)x; + if (U(x,y,1)>y) U(x,y,1) = (float)y; + bound = (float)x - _width; if (U(x,y,0)<=bound) U(x,y,0) = bound; + bound = (float)y - _height; if (U(x,y,1)<=bound) U(x,y,1) = bound; + } else { + if (U(x,y,0)<-x) U(x,y,0) = -(float)x; + if (U(x,y,1)<-y) U(x,y,1) = -(float)y; + bound = (float)_width - x; if (U(x,y,0)>=bound) U(x,y,0) = bound; + bound = (float)_height - y; if (U(x,y,1)>=bound) U(x,y,1) = bound; + } + _energy+=delta_I*delta_I + nsmoothness*_energy_regul; + } + if (V) cimg_forXY(V,_x,_y) if (V(_x,_y,2)) { // Apply constraints + U(_x,_y,0) = V(_x,_y,0)/factor; + U(_x,_y,1) = V(_x,_y,1)/factor; + } + } + } + } + const float d_energy = (_energy - energy)/(sw*sh*sd); + if (d_energy<=0 && -d_energy<_precision) break; + if (d_energy>0) dt*=0.5f; + energy = _energy; + } + } + return U; + } + + //! Compute correspondence map between two images, using a patch-matching algorithm. + /** + \param patch_image The image containing the reference patches to match with the instance image. + \param patch_width Width of the patch used for matching. + \param patch_height Height of the patch used for matching. + \param patch_depth Depth of the patch used for matching. + \param nb_iterations Number of patch-match iterations. + \param nb_randoms Number of randomization attempts (per pixel). + \param patch_penalization Penalization factor in score related patch occurrences. + if negative, also tells that identity result is not avoided. + \param guide Image used as the initial correspondence estimate for the algorithm. + 'guide' may have a last channel with boolean values (0=false | other=true) that + tells for each pixel if its correspondence vector is constrained to its initial value (constraint mask). + \param[out] matching_score Returned as the image of matching scores. + **/ + template + CImg& matchpatch(const CImg& patch_image, + const unsigned int patch_width, + const unsigned int patch_height, + const unsigned int patch_depth, + const unsigned int nb_iterations, + const unsigned int nb_randoms, + const float patch_penalization, + const CImg &guide, + CImg &matching_score) { + return get_matchpatch(patch_image,patch_width,patch_height,patch_depth, + nb_iterations,nb_randoms,patch_penalization,guide,matching_score).move_to(*this); + } + + //! Compute correspondence map between two images, using the patch-match algorithm \newinstance. + template + CImg get_matchpatch(const CImg& patch_image, + const unsigned int patch_width, + const unsigned int patch_height, + const unsigned int patch_depth, + const unsigned int nb_iterations, + const unsigned int nb_randoms, + const float patch_penalization, + const CImg &guide, + CImg &matching_score) const { + return _matchpatch(patch_image,patch_width,patch_height,patch_depth, + nb_iterations,nb_randoms,patch_penalization, + guide,true,matching_score); + } + + //! Compute correspondence map between two images, using the patch-match algorithm \overloading. + template + CImg& matchpatch(const CImg& patch_image, + const unsigned int patch_width, + const unsigned int patch_height, + const unsigned int patch_depth, + const unsigned int nb_iterations=5, + const unsigned int nb_randoms=5, + const float patch_penalization=0, + const CImg &guide=CImg::const_empty()) { + return get_matchpatch(patch_image,patch_width,patch_height,patch_depth, + nb_iterations,nb_randoms,patch_penalization,guide).move_to(*this); + } + + //! Compute correspondence map between two images, using the patch-match algorithm \overloading. + template + CImg get_matchpatch(const CImg& patch_image, + const unsigned int patch_width, + const unsigned int patch_height, + const unsigned int patch_depth, + const unsigned int nb_iterations=5, + const unsigned int nb_randoms=5, + const float patch_penalization=0, + const CImg &guide=CImg::const_empty()) const { + CImg matching_score; + return _matchpatch(patch_image,patch_width,patch_height,patch_depth, + nb_iterations,nb_randoms,patch_penalization,guide,false,matching_score); + } + + template + CImg _matchpatch(const CImg& patch_image, + const unsigned int patch_width, + const unsigned int patch_height, + const unsigned int patch_depth, + const unsigned int nb_iterations, + const unsigned int nb_randoms, + const float patch_penalization, + const CImg &guide, + const bool is_matching_score, + CImg &matching_score) const { + if (is_empty()) return CImg::const_empty(); + if (patch_image._spectrum!=_spectrum) + throw CImgArgumentException(_cimg_instance + "matchpatch(): Instance image and specified patch image (%u,%u,%u,%u,%p) " + "have different spectrums.", + cimg_instance, + patch_image._width,patch_image._height,patch_image._depth,patch_image._spectrum, + patch_image._data); + if (patch_width>_width || patch_height>_height || patch_depth>_depth) + throw CImgArgumentException(_cimg_instance + "matchpatch(): Specified patch size %ux%ux%u is bigger than the dimensions " + "of the instance image.", + cimg_instance,patch_width,patch_height,patch_depth); + if (patch_width>patch_image._width || patch_height>patch_image._height || patch_depth>patch_image._depth) + throw CImgArgumentException(_cimg_instance + "matchpatch(): Specified patch size %ux%ux%u is bigger than the dimensions " + "of the patch image image (%u,%u,%u,%u,%p).", + cimg_instance,patch_width,patch_height,patch_depth, + patch_image._width,patch_image._height,patch_image._depth,patch_image._spectrum, + patch_image._data); + const unsigned int + _constraint = patch_image._depth>1?3:2, + constraint = guide._spectrum>_constraint?_constraint:0; + + if (guide && + (guide._width!=_width || guide._height!=_height || guide._depth!=_depth || guide._spectrum<_constraint)) + throw CImgArgumentException(_cimg_instance + "matchpatch(): Specified guide (%u,%u,%u,%u,%p) has invalid dimensions " + "considering instance and patch image (%u,%u,%u,%u,%p).", + cimg_instance, + guide._width,guide._height,guide._depth,guide._spectrum,guide._data, + patch_image._width,patch_image._height,patch_image._depth,patch_image._spectrum, + patch_image._data); + + CImg a_map(_width,_height,_depth,patch_image._depth>1?3:2); + CImg is_updated(_width,_height,_depth,1,3); + CImg score(_width,_height,_depth); + CImg occ; + const float _patch_penalization = cimg::abs(patch_penalization); + const bool allow_identity = patch_penalization>=0; + if (_patch_penalization!=0) occ.assign(patch_image._width,patch_image._height,patch_image._depth,1,0); + const int + psizew = (int)patch_width, psizew1 = psizew/2, psizew2 = psizew - psizew1 - 1, + psizeh = (int)patch_height, psizeh1 = psizeh/2, psizeh2 = psizeh - psizeh1 - 1, + psized = (int)patch_depth, psized1 = psized/2, psized2 = psized - psized1 - 1; + + // Interleave image buffers to speed up patch comparison (cache-friendly). + CImg in_this = get_permute_axes("cxyz"); + in_this._width = _width*_spectrum; + in_this._height = _height; + in_this._depth = _depth; + in_this._spectrum = 1; + CImg in_patch = patch_image.get_permute_axes("cxyz"); + in_patch._width = patch_image._width*patch_image._spectrum; + in_patch._height = patch_image._height; + in_patch._depth = patch_image._depth; + in_patch._spectrum = 1; + + if (_depth>1 || patch_image._depth>1) { // 3D version + + // Initialize correspondence map. + if (guide) + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if_size(_width,64)) + cimg_forXYZ(*this,x,y,z) { // User-defined initialization + const int + cx1 = x<=psizew1?x:(x::inf()); + } else cimg_pragma_openmp(parallel cimg_openmp_if_size(_width,64)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for cimg_openmp_collapse(2)) + cimg_forXYZ(*this,x,y,z) { // Random initialization + const int + cx1 = x<=psizew1?x:(x::inf()); + } + cimg::srand(rng); + } + + // Start iteration loop. + cimg_abort_init; + for (unsigned int iter = 0; iter=(cimg_openmp_sizefactor)*64 && + iter0 && (is_updated(x - 1,y,z)&cmask)) { // Compare with left neighbor + u = a_map(x - 1,y,z,0); + v = a_map(x - 1,y,z,1); + w = a_map(x - 1,y,z,2); + if (u>=cx1 - 1 && u=cy1 && v=cz1 && w0 && (is_updated(x,y - 1,z)&cmask)) { // Compare with up neighbor + u = a_map(x,y - 1,z,0); + v = a_map(x,y - 1,z,1); + w = a_map(x,y - 1,z,2); + if (u>=cx1 && u=cy1 - 1 && v=cz1 && w0 && (is_updated(x,y,z - 1)&cmask)) { // Compare with backward neighbor + u = a_map(x,y,z - 1,0); + v = a_map(x,y,z - 1,1); + w = a_map(x,y,z - 1,2); + if (u>=cx1 && u=cy1 && v=cz1 - 1 && w=cx1 + 1 && u=cy1 && v=cz1 && w=cx1 && u=cy1 + 1 && v=cz1 && w=cx1 && u=cy1 && v=cz1 + 1 && w::inf()); + } else cimg_pragma_openmp(parallel cimg_openmp_if_size(_width,64)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for) + cimg_forXY(*this,x,y) { // Random initialization + const int + cx1 = x<=psizew1?x:(x::inf()); + } + cimg::srand(rng); + } + + // Start iteration loop. + cimg_abort_init; + for (unsigned int iter = 0; iter=(cimg_openmp_sizefactor)*64 && + iter0 && (is_updated(x - 1,y)&cmask)) { // Compare with left neighbor + u = a_map(x - 1,y,0); + v = a_map(x - 1,y,1); + if (u>=cx1 - 1 && u=cy1 && v0 && (is_updated(x,y - 1)&cmask)) { // Compare with up neighbor + u = a_map(x,y - 1,0); + v = a_map(x,y - 1,1); + if (u>=cx1 && u=cy1 - 1 && v=cx1 + 1 && u=cy1 && v=cx1 && u=cy1 + 1 && v& img1, const CImg& img2, const CImg& occ, + const unsigned int psizew, const unsigned int psizeh, + const unsigned int psized, const unsigned int psizec, + const int x1, const int y1, const int z1, + const int x2, const int y2, const int z2, + const int xc, const int yc, const int zc, + const float patch_penalization, + const bool allow_identity, + const float max_score) { // 3D version + if (!allow_identity && cimg::hypot((float)x1-x2,(float)y1-y2,(float)z1-z2)::inf(); + const T *p1 = img1.data(x1*psizec,y1,z1), *p2 = img2.data(x2*psizec,y2,z2); + const unsigned int psizewc = psizew*psizec; + const ulongT + offx1 = (ulongT)img1._width - psizewc, + offx2 = (ulongT)img2._width - psizewc, + offy1 = (ulongT)img1._width*img1._height - (ulongT)psizeh*img1._width, + offy2 = (ulongT)img2._width*img2._height - (ulongT)psizeh*img2._width; + float ssd = 0; + for (unsigned int k = 0; kmax_score) return max_score; + p1+=offx1; p2+=offx2; + } + p1+=offy1; p2+=offy2; + } + return patch_penalization==0?ssd:cimg::sqr(std::sqrt(ssd) + + patch_penalization*psizewc*psizeh*psized*occ(xc,yc,zc)/100); + } + + static float _matchpatch(const CImg& img1, const CImg& img2, const CImg& occ, + const unsigned int psizew, const unsigned int psizeh, const unsigned int psizec, + const int x1, const int y1, + const int x2, const int y2, + const int xc, const int yc, + const float patch_penalization, + const bool allow_identity, + const float max_score) { // 2D version + if (!allow_identity && cimg::hypot((float)x1-x2,(float)y1-y2)::inf(); + const T *p1 = img1.data(x1*psizec,y1), *p2 = img2.data(x2*psizec,y2); + const unsigned int psizewc = psizew*psizec; + const ulongT + offx1 = (ulongT)img1._width - psizewc, + offx2 = (ulongT)img2._width - psizewc; + float ssd = 0; + for (unsigned int j = 0; jmax_score) return max_score; + p1+=offx1; p2+=offx2; + } + return patch_penalization==0?ssd:cimg::sqr(std::sqrt(ssd) + + patch_penalization*psizewc*psizeh*occ(xc,yc)/100); + } + + //! Compute Euclidean distance function to a specified value. + /** + \param value Reference value. + \param metric Type of metric. Can be { 0=Chebyshev | 1=Manhattan | 2=Euclidean | 3=Squared-euclidean }. + \note + The distance transform implementation has been submitted by A. Meijster, and implements + the article 'W.H. Hesselink, A. Meijster, J.B.T.M. Roerdink, + "A general algorithm for computing distance transforms in linear time.", + In: Mathematical Morphology and its Applications to Image and Signal Processing, + J. Goutsias, L. Vincent, and D.S. Bloomberg (eds.), Kluwer, 2000, pp. 331-340.' + The submitted code has then been modified to fit CImg coding style and constraints. + **/ + CImg& distance(const T& value, const unsigned int metric=2) { + if (is_empty()) return *this; + if (cimg::type::string()!=pixel_type()) // For datatype < int + return CImg(*this,false).distance((Tint)value,metric). + cut((Tint)cimg::type::min(),(Tint)cimg::type::max()).move_to(*this); + bool is_value = false; + cimg_for(*this,ptr,T) *ptr = *ptr==value?is_value=true,(T)0:(T)std::max(0,99999999); // (avoid VC++ warning) + if (!is_value) return fill(cimg::type::max()); + switch (metric) { + case 0 : return _distance_core(_distance_sep_cdt,_distance_dist_cdt); // Chebyshev + case 1 : return _distance_core(_distance_sep_mdt,_distance_dist_mdt); // Manhattan + case 3 : return _distance_core(_distance_sep_edt,_distance_dist_edt); // Squared Euclidean + default : return _distance_core(_distance_sep_edt,_distance_dist_edt).sqrt(); // Euclidean + } + return *this; + } + + //! Compute distance to a specified value \newinstance. + CImg get_distance(const T& value, const unsigned int metric=2) const { + return CImg(*this,false).distance((Tfloat)value,metric); + } + + static longT _distance_sep_edt(const longT i, const longT u, const longT *const g) { + return (u*u - i*i + g[u] - g[i])/(2*(u - i)); + } + + static longT _distance_dist_edt(const longT x, const longT i, const longT *const g) { + return (x - i)*(x - i) + g[i]; + } + + static longT _distance_sep_mdt(const longT i, const longT u, const longT *const g) { + return (u - i<=g[u] - g[i]?999999999:(g[u] - g[i] + u + i)/2); + } + + static longT _distance_dist_mdt(const longT x, const longT i, const longT *const g) { + return (x=0) && f(t[q],s[q],g)>f(t[q],u,g)) { --q; } + if (q<0) { q = 0; s[0] = u; } + else { const longT w = 1 + sep(s[q], u, g); if (w<(longT)len) { ++q; s[q] = u; t[q] = w; }} + } + for (int u = (int)len - 1; u>=0; --u) { dt[u] = f(u,s[q],g); if (u==t[q]) --q; } // Backward scan + } + + CImg& _distance_core(longT (*const sep)(const longT, const longT, const longT *const), + longT (*const f)(const longT, const longT, const longT *const)) { + // Check for g++ 4.9.X, as OpenMP seems to crash for this particular function. I have no clues why. +#define cimg_is_gcc49x (__GNUC__==4 && __GNUC_MINOR__==9) + + const ulongT wh = (ulongT)_width*_height; +#if cimg_use_openmp!=0 && !cimg_is_gcc49x + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2)) +#endif + cimg_forC(*this,c) { + CImg g(_width), dt(_width), s(_width), t(_width); + CImg img = get_shared_channel(c); +#if cimg_use_openmp!=0 && !cimg_is_gcc49x + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16) + firstprivate(g,dt,s,t)) +#endif + cimg_forYZ(*this,y,z) { // Over X-direction + cimg_forX(*this,x) g[x] = (longT)img(x,y,z,0,wh); + _distance_scan(_width,g,sep,f,s,t,dt); + cimg_forX(*this,x) img(x,y,z,0,wh) = (T)dt[x]; + } + if (_height>1) { + g.assign(_height); dt.assign(_height); s.assign(_height); t.assign(_height); +#if cimg_use_openmp!=0 && !cimg_is_gcc49x + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_height>=(cimg_openmp_sizefactor)*512 && _width*_depth>=16) + firstprivate(g,dt,s,t)) +#endif + cimg_forXZ(*this,x,z) { // Over Y-direction + cimg_forY(*this,y) g[y] = (longT)img(x,y,z,0,wh); + _distance_scan(_height,g,sep,f,s,t,dt); + cimg_forY(*this,y) img(x,y,z,0,wh) = (T)dt[y]; + } + } + if (_depth>1) { + g.assign(_depth); dt.assign(_depth); s.assign(_depth); t.assign(_depth); +#if cimg_use_openmp!=0 && !cimg_is_gcc49x + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_depth>=(cimg_openmp_sizefactor)*512 && _width*_height>=16) + firstprivate(g,dt,s,t)) +#endif + cimg_forXY(*this,x,y) { // Over Z-direction + cimg_forZ(*this,z) g[z] = (longT)img(x,y,z,0,wh); + _distance_scan(_depth,g,sep,f,s,t,dt); + cimg_forZ(*this,z) img(x,y,z,0,wh) = (T)dt[z]; + } + } + } + return *this; + } + + //! Compute chamfer distance to a specified value, with a custom metric. + /** + \param value Reference value. + \param metric_mask Metric mask. + \note The algorithm code has been initially proposed by A. Meijster, and modified by D. Tschumperlé. + **/ + template + CImg& distance(const T& value, const CImg& metric_mask) { + if (is_empty()) return *this; + bool is_value = false; + cimg_for(*this,ptr,T) *ptr = *ptr==value?is_value=true,0:(T)999999999; + if (!is_value) return fill(cimg::type::max()); + const ulongT wh = (ulongT)_width*_height; + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2)) + cimg_forC(*this,c) { + CImg img = get_shared_channel(c); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) + cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*1024)) + cimg_forXYZ(metric_mask,dx,dy,dz) { + const t weight = metric_mask(dx,dy,dz); + if (weight) { + for (int z = dz, nz = 0; z=0; --z,--nz) { // Backward scan + for (int y = height() - 1 - dy, ny = height() - 1; y>=0; --y,--ny) { + for (int x = width() - 1 - dx, nx = width() - 1; x>=0; --x,--nx) { + const T dd = img(nx,ny,nz,0,wh) + weight; + if (dd + CImg get_distance(const T& value, const CImg& metric_mask) const { + return CImg(*this,false).distance(value,metric_mask); + } + + //! Compute distance to a specified value, according to a custom metric (use dijkstra algorithm). + /** + \param value Reference value. + \param metric Field of distance potentials. + \param is_high_connectivity Tells if the algorithm uses low or high connectivity. + \param[out] return_path An image containing the nodes of the minimal path. + **/ + template + CImg& distance_dijkstra(const T& value, const CImg& metric, const bool is_high_connectivity, + CImg& return_path) { + return get_distance_dijkstra(value,metric,is_high_connectivity,return_path).move_to(*this); + } + + //! Compute distance map to a specified value, according to a custom metric (use dijkstra algorithm) \newinstance. + template + CImg::type> + get_distance_dijkstra(const T& value, const CImg& metric, const bool is_high_connectivity, + CImg& return_path) const { + if (is_empty()) return return_path.assign(); + if (!is_sameXYZ(metric)) + throw CImgArgumentException(_cimg_instance + "distance_dijkstra(): image instance and metric map (%u,%u,%u,%u) " + "have incompatible dimensions.", + cimg_instance, + metric._width,metric._height,metric._depth,metric._spectrum); + typedef typename cimg::superset::type td; // Type used for computing cumulative distances + CImg result(_width,_height,_depth,_spectrum), Q; + CImg is_queued(_width,_height,_depth,1); + if (return_path) return_path.assign(_width,_height,_depth,_spectrum); + + cimg_forC(*this,c) { + const CImg img = get_shared_channel(c); + const CImg met = metric.get_shared_channel(c%metric._spectrum); + CImg res = result.get_shared_channel(c); + CImg path = return_path?return_path.get_shared_channel(c):CImg(); + unsigned int sizeQ = 0; + + // Detect initial seeds. + is_queued.fill(0); + cimg_forXYZ(img,x,y,z) if (img(x,y,z)==value) { + Q._priority_queue_insert(is_queued,sizeQ,0,x,y,z); + res(x,y,z) = 0; + if (path) path(x,y,z) = (to)0; + } + + // Start distance propagation. + while (sizeQ) { + + // Get and remove point with minimal potential from the queue. + const int x = (int)Q(0,1), y = (int)Q(0,2), z = (int)Q(0,3); + const td P = (td)-Q(0,0); + Q._priority_queue_remove(sizeQ); + + // Update neighbors. + td npot = 0; + if (x - 1>=0 && Q._priority_queue_insert(is_queued,sizeQ,-(npot=met(x - 1,y,z) + P),x - 1,y,z)) { + res(x - 1,y,z) = npot; if (path) path(x - 1,y,z) = (to)2; + } + if (x + 1=0 && Q._priority_queue_insert(is_queued,sizeQ,-(npot=met(x,y - 1,z) + P),x,y - 1,z)) { + res(x,y - 1,z) = npot; if (path) path(x,y - 1,z) = (to)8; + } + if (y + 1=0 && Q._priority_queue_insert(is_queued,sizeQ,-(npot=met(x,y,z - 1) + P),x,y,z - 1)) { + res(x,y,z - 1) = npot; if (path) path(x,y,z - 1) = (to)32; + } + if (z + 1=0 && y - 1>=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x - 1,y - 1,z) + P)),x - 1,y - 1,z)) { + res(x - 1,y - 1,z) = npot; if (path) path(x - 1,y - 1,z) = (to)10; + } + if (x + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x + 1,y - 1,z) + P)),x + 1,y - 1,z)) { + res(x + 1,y - 1,z) = npot; if (path) path(x + 1,y - 1,z) = (to)9; + } + if (x - 1>=0 && y + 1=0) { // Diagonal neighbors on slice z - 1 + if (x - 1>=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x - 1,y,z - 1) + P)),x - 1,y,z - 1)) { + res(x - 1,y,z - 1) = npot; if (path) path(x - 1,y,z - 1) = (to)34; + } + if (x + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x,y - 1,z - 1) + P)),x,y - 1,z - 1)) { + res(x,y - 1,z - 1) = npot; if (path) path(x,y - 1,z - 1) = (to)40; + } + if (y + 1=0 && y - 1>=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt3*met(x - 1,y - 1,z - 1) + P)), + x - 1,y - 1,z - 1)) { + res(x - 1,y - 1,z - 1) = npot; if (path) path(x - 1,y - 1,z - 1) = (to)42; + } + if (x + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt3*met(x + 1,y - 1,z - 1) + P)), + x + 1,y - 1,z - 1)) { + res(x + 1,y - 1,z - 1) = npot; if (path) path(x + 1,y - 1,z - 1) = (to)41; + } + if (x - 1>=0 && y + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x - 1,y,z + 1) + P)),x - 1,y,z + 1)) { + res(x - 1,y,z + 1) = npot; if (path) path(x - 1,y,z + 1) = (to)18; + } + if (x + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x,y - 1,z + 1) + P)),x,y - 1,z + 1)) { + res(x,y - 1,z + 1) = npot; if (path) path(x,y - 1,z + 1) = (to)24; + } + if (y + 1=0 && y - 1>=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt3*met(x - 1,y - 1,z + 1) + P)), + x - 1,y - 1,z + 1)) { + res(x - 1,y - 1,z + 1) = npot; if (path) path(x - 1,y - 1,z + 1) = (to)26; + } + if (x + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt3*met(x + 1,y - 1,z + 1) + P)), + x + 1,y - 1,z + 1)) { + res(x + 1,y - 1,z + 1) = npot; if (path) path(x + 1,y - 1,z + 1) = (to)25; + } + if (x - 1>=0 && y + 1 + CImg& distance_dijkstra(const T& value, const CImg& metric, + const bool is_high_connectivity=false) { + return get_distance_dijkstra(value,metric,is_high_connectivity).move_to(*this); + } + + //! Compute distance map to a specified value, according to a custom metric (use dijkstra algorithm). \newinstance. + template + CImg get_distance_dijkstra(const T& value, const CImg& metric, + const bool is_high_connectivity=false) const { + CImg return_path; + return get_distance_dijkstra(value,metric,is_high_connectivity,return_path); + } + + //! Compute distance map to one source point, according to a custom metric (use fast marching algorithm). + /** + \param value Reference value. + \param metric Field of distance potentials. + **/ + template + CImg& distance_eikonal(const T& value, const CImg& metric) { + return get_distance_eikonal(value,metric).move_to(*this); + } + + //! Compute distance map to one source point, according to a custom metric (use fast marching algorithm). + template + CImg get_distance_eikonal(const T& value, const CImg& metric) const { + if (is_empty()) return *this; + if (!is_sameXYZ(metric)) + throw CImgArgumentException(_cimg_instance + "distance_eikonal(): image instance and metric map (%u,%u,%u,%u) have " + "incompatible dimensions.", + cimg_instance, + metric._width,metric._height,metric._depth,metric._spectrum); + CImg result(_width,_height,_depth,_spectrum,cimg::type::max()), Q; + CImg state(_width,_height,_depth); // -1=far away, 0=narrow, 1=frozen + + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2) firstprivate(Q,state)) + cimg_forC(*this,c) { + const CImg img = get_shared_channel(c); + const CImg met = metric.get_shared_channel(c%metric._spectrum); + CImg res = result.get_shared_channel(c); + unsigned int sizeQ = 0; + state.fill(-1); + + // Detect initial seeds. + Tfloat *ptr1 = res._data; char *ptr2 = state._data; + cimg_for(img,ptr0,T) { if (*ptr0==value) { *ptr1 = 0; *ptr2 = 1; } ++ptr1; ++ptr2; } + + // Initialize seeds neighbors. + ptr2 = state._data; + cimg_forXYZ(img,x,y,z) if (*(ptr2++)==1) { + if (x - 1>=0 && state(x - 1,y,z)==-1) { + const Tfloat dist = res(x - 1,y,z) = __distance_eikonal(res,met(x - 1,y,z),x - 1,y,z); + Q._eik_priority_queue_insert(state,sizeQ,-dist,x - 1,y,z); + } + if (x + 1=0 && state(x,y - 1,z)==-1) { + const Tfloat dist = res(x,y - 1,z) = __distance_eikonal(res,met(x,y - 1,z),x,y - 1,z); + Q._eik_priority_queue_insert(state,sizeQ,-dist,x,y - 1,z); + } + if (y + 1=0 && state(x,y,z - 1)==-1) { + const Tfloat dist = res(x,y,z - 1) = __distance_eikonal(res,met(x,y,z - 1),x,y,z - 1); + Q._eik_priority_queue_insert(state,sizeQ,-dist,x,y,z - 1); + } + if (z + 1=0) { + if (x - 1>=0 && state(x - 1,y,z)!=1) { + const Tfloat dist = __distance_eikonal(res,met(x - 1,y,z),x - 1,y,z); + if (dist=0 && state(x,y - 1,z)!=1) { + const Tfloat dist = __distance_eikonal(res,met(x,y - 1,z),x,y - 1,z); + if (dist=0 && state(x,y,z - 1)!=1) { + const Tfloat dist = __distance_eikonal(res,met(x,y,z - 1),x,y,z - 1); + if (dist& res, const Tfloat P, + const int x=0, const int y=0, const int z=0) const { + const Tfloat M = (Tfloat)cimg::type::max(); + T T1 = (T)std::min(x - 1>=0?res(x - 1,y,z):M,x + 11) { // 3D + T + T2 = (T)std::min(y - 1>=0?res(x,y - 1,z):M,y + 1=0?res(x,y,z - 1):M,z + 1T2) cimg::swap(T1,T2); + if (T2>T3) cimg::swap(T2,T3); + if (T1>T2) cimg::swap(T1,T2); + if (P<=0) return (Tfloat)T1; + if (T31) { // 2D + T T2 = (T)std::min(y - 1>=0?res(x,y - 1,z):M,y + 1T2) cimg::swap(T1,T2); + if (P<=0) return (Tfloat)T1; + if (T2 + void _eik_priority_queue_insert(CImg& state, unsigned int& siz, const t value, + const unsigned int x, const unsigned int y, const unsigned int z) { + if (state(x,y,z)>0) return; + state(x,y,z) = 0; + if (++siz>=_width) { if (!is_empty()) resize(_width*2,4,1,1,0); else assign(64,4); } + (*this)(siz - 1,0) = (T)value; (*this)(siz - 1,1) = (T)x; (*this)(siz - 1,2) = (T)y; (*this)(siz - 1,3) = (T)z; + for (unsigned int pos = siz - 1, par = 0; pos && value>(t)(*this)(par=(pos + 1)/2 - 1,0); pos = par) { + cimg::swap((*this)(pos,0),(*this)(par,0)); cimg::swap((*this)(pos,1),(*this)(par,1)); + cimg::swap((*this)(pos,2),(*this)(par,2)); cimg::swap((*this)(pos,3),(*this)(par,3)); + } + } + + //! Compute distance function to 0-valued isophotes, using the Eikonal PDE. + /** + \param nb_iterations Number of PDE iterations. + \param band_size Size of the narrow band. + \param time_step Time step of the PDE iterations. + **/ + CImg& distance_eikonal(const unsigned int nb_iterations, const float band_size=0, const float time_step=0.5f) { + if (is_empty()) return *this; + CImg velocity(*this,false); + for (unsigned int iteration = 0; iteration1) { // 3D + CImg_3x3x3(I,Tfloat); + cimg_forC(*this,c) cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) if (band_size<=0 || cimg::abs(Iccc)0?(Incc - Iccc):(Iccc - Ipcc), + iy = gy*sgn>0?(Icnc - Iccc):(Iccc - Icpc), + iz = gz*sgn>0?(Iccn - Iccc):(Iccc - Iccp), + ng = 1e-5f + cimg::hypot(gx,gy,gz), + ngx = gx/ng, + ngy = gy/ng, + ngz = gz/ng, + veloc = sgn*(ngx*ix + ngy*iy + ngz*iz - 1); + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } else *(ptrd++) = 0; + } else { // 2D version + CImg_3x3(I,Tfloat); + cimg_forC(*this,c) cimg_for3x3(*this,x,y,0,c,I,Tfloat) if (band_size<=0 || cimg::abs(Icc)0?(Inc - Icc):(Icc - Ipc), + iy = gy*sgn>0?(Icn - Icc):(Icc - Icp), + ng = std::max((Tfloat)1e-5,cimg::hypot(gx,gy)), + ngx = gx/ng, + ngy = gy/ng, + veloc = sgn*(ngx*ix + ngy*iy - 1); + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } else *(ptrd++) = 0; + } + if (veloc_max>0) *this+=(velocity*=time_step/veloc_max); + } + return *this; + } + + //! Compute distance function to 0-valued isophotes, using the Eikonal PDE \newinstance. + CImg get_distance_eikonal(const unsigned int nb_iterations, const float band_size=0, + const float time_step=0.5f) const { + return CImg(*this,false).distance_eikonal(nb_iterations,band_size,time_step); + } + + //! Compute Haar multiscale wavelet transform. + /** + \param axis Axis considered for the transform. + \param invert Set inverse of direct transform. + \param nb_scales Number of scales used for the transform. + **/ + CImg& haar(const char axis, const bool invert=false, const unsigned int nb_scales=1) { + return get_haar(axis,invert,nb_scales).move_to(*this); + } + + //! Compute Haar multiscale wavelet transform \newinstance. + CImg get_haar(const char axis, const bool invert=false, const unsigned int nb_scales=1) const { + if (is_empty() || !nb_scales) return +*this; + CImg res; + const Tfloat sqrt2 = std::sqrt(2.f); + if (nb_scales==1) { + switch (cimg::lowercase(axis)) { // Single scale transform + case 'x' : { + const unsigned int w = _width/2; + if (w) { + if ((w%2) && w!=1) + throw CImgInstanceException(_cimg_instance + "haar(): Sub-image width %u is not even.", + cimg_instance, + w); + + res.assign(_width,_height,_depth,_spectrum); + if (invert) cimg_forYZC(*this,y,z,c) { // Inverse transform along X + for (unsigned int x = 0, xw = w, x2 = 0; x& haar(const bool invert=false, const unsigned int nb_scales=1) { + return get_haar(invert,nb_scales).move_to(*this); + } + + //! Compute Haar multiscale wavelet transform \newinstance. + CImg get_haar(const bool invert=false, const unsigned int nb_scales=1) const { + CImg res; + if (nb_scales==1) { // Single scale transform + if (_width>1) get_haar('x',invert,1).move_to(res); + if (_height>1) { if (res) res.haar('y',invert,1); else get_haar('y',invert,1).move_to(res); } + if (_depth>1) { if (res) res.haar('z',invert,1); else get_haar('z',invert,1).move_to(res); } + if (res) return res; + } else { // Multi-scale transform + if (invert) { // Inverse transform + res.assign(*this,false); + if (_width>1) { + if (_height>1) { + if (_depth>1) { + unsigned int w = _width, h = _height, d = _depth; + for (unsigned int s = 1; w && h && d && s1) { + unsigned int w = _width, d = _depth; + for (unsigned int s = 1; w && d && s1) { + if (_depth>1) { + unsigned int h = _height, d = _depth; + for (unsigned int s = 1; h && d && s1) { + unsigned int d = _depth; + for (unsigned int s = 1; d && s1) { + if (_height>1) { + if (_depth>1) + for (unsigned int s = 1, w = _width/2, h = _height/2, d = _depth/2; w && h && d && s1) for (unsigned int s = 1, w = _width/2, d = _depth/2; w && d && s1) { + if (_depth>1) + for (unsigned int s = 1, h = _height/2, d = _depth/2; h && d && s1) for (unsigned int s = 1, d = _depth/2; d && s get_FFT(const char axis, const bool is_inverse=false) const { + CImgList res(*this,CImg()); + CImg::FFT(res[0],res[1],axis,is_inverse); + return res; + } + + //! Compute n-D Fast Fourier Transform. + /* + \param is_inverse Tells if the forward (\c false) or inverse (\c true) FFT is computed. + **/ + CImgList get_FFT(const bool is_inverse=false) const { + CImgList res(*this,CImg()); + CImg::FFT(res[0],res[1],is_inverse); + return res; + } + + //! Compute 1D Fast Fourier Transform, along a specified axis. + /** + \param[in,out] real Real part of the pixel values. + \param[in,out] imag Imaginary part of the pixel values. + \param axis Axis along which the FFT is computed. + \param is_inverse Tells if the forward (\c false) or inverse (\c true) FFT is computed. + **/ + static void FFT(CImg& real, CImg& imag, const char axis, const bool is_inverse=false, + const unsigned int nb_threads=0) { + if (!real) + throw CImgInstanceException("CImg<%s>::FFT(): Specified real part is empty.", + pixel_type()); + if (!imag) imag.assign(real._width,real._height,real._depth,real._spectrum,(T)0); + if (!real.is_sameXYZC(imag)) + throw CImgInstanceException("CImg<%s>::FFT(): Specified real part (%u,%u,%u,%u,%p) and " + "imaginary part (%u,%u,%u,%u,%p) have different dimensions.", + pixel_type(), + real._width,real._height,real._depth,real._spectrum,real._data, + imag._width,imag._height,imag._depth,imag._spectrum,imag._data); + const char _axis = cimg::lowercase(axis); + if (_axis!='x' && _axis!='y' && _axis!='z') + throw CImgArgumentException("CImgList<%s>::FFT(): Invalid specified axis '%c' for real and imaginary parts " + "(%u,%u,%u,%u) " + "(should be { x | y | z }).", + pixel_type(),axis, + real._width,real._height,real._depth,real._spectrum); + cimg::unused(nb_threads); +#ifdef cimg_use_fftw3 + cimg::mutex(12); +#ifndef cimg_use_fftw3_singlethread + fftw_plan_with_nthreads(nb_threads?nb_threads:cimg::nb_cpus()); +#endif + fftw_complex *data_in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*real._width*real._height*real._depth); + if (!data_in) + throw CImgInstanceException("CImgList<%s>::FFT(): Failed to allocate memory (%s) " + "for computing FFT of image (%u,%u,%u,%u) along the X-axis.", + pixel_type(), + cimg::strbuffersize(sizeof(fftw_complex)*real._width*real._height*real._depth), + real._width,real._height,real._depth,real._spectrum); + double *const ptrf = (double*)data_in; + fftw_plan data_plan = + _axis=='x'?fftw_plan_many_dft(1,(int*)&real._width,real.height()*real.depth(), + data_in,0,1,real.width(), + data_in,0,1,real.width(), + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE): + _axis=='y'?fftw_plan_many_dft(1,(int*)&real._height,real.width()*real.depth(), + data_in,0,1,real.height(), + data_in,0,1,real.height(), + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE): + fftw_plan_many_dft(1,(int*)&real._depth,real.width()*real.height(), + data_in,0,1,real.depth(), + data_in,0,1,real.depth(), + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE); + cimg_forC(real,c) { + CImg realc = real.get_shared_channel(c), imagc = imag.get_shared_channel(c); + switch (_axis) { + case 'x' : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = realc.offset(x,y,z), + j = 2*(x + (ulongT)y*realc._width + (ulongT)z*realc._width*realc._height); + ptrf[j] = (double)realc[i]; + ptrf[j + 1] = (double)imagc[i]; + } + break; + case 'y' : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = realc.offset(x,y,z), + j = 2*(y + (ulongT)x*realc._height + (ulongT)z*realc._width*realc._height); + ptrf[j] = (double)realc[i]; + ptrf[j + 1] = (double)imagc[i]; + } + break; + default : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = realc.offset(x,y,z), + j = 2*(z + (ulongT)x*realc._depth + (ulongT)y*realc._width*realc._depth); + ptrf[j] = (double)realc[i]; + ptrf[j + 1] = (double)imagc[i]; + } + } + + fftw_execute(data_plan); + + const double a = is_inverse?1.0/(_axis=='x'?real.width():_axis=='y'?real.height():real.depth()):1.0; + switch (_axis) { + case 'x' : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = 2*(x + (ulongT)y*realc._width + (ulongT)z*realc._width*realc._height), + j = realc.offset(x,y,z); + realc[j] = (T)(a*ptrf[i]); + imagc[j] = (T)(a*ptrf[i + 1]); + } + break; + case 'y' : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = 2*(y + (ulongT)x*realc._height + (ulongT)z*realc._width*realc._height), + j = realc.offset(x,y,z); + realc[j] = (T)(a*ptrf[i]); + imagc[j] = (T)(a*ptrf[i + 1]); + } + break; + default : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = 2*(z + (ulongT)x*realc._depth + (ulongT)y*realc._width*realc._depth), + j = realc.offset(x,y,z); + realc[j] = (T)(a*ptrf[i]); + imagc[j] = (T)(a*ptrf[i + 1]); + } + } + } + + fftw_destroy_plan(data_plan); + fftw_free(data_in); +#ifndef cimg_use_fftw3_singlethread + fftw_cleanup_threads(); +#endif + cimg::mutex(12,0); +#else + switch (_axis) { + case 'x' : { // Fourier along X, using built-in functions + const unsigned int N = real._width, N2 = N>>1; + if (((N - 1)&N) && N!=1) + throw CImgInstanceException("CImgList<%s>::FFT(): Specified real and imaginary parts (%u,%u,%u,%u) " + "have non 2^N dimension along the X-axis.", + pixel_type(), + real._width,real._height,real._depth,real._spectrum); + + for (unsigned int i = 0, j = 0; ii) cimg_forYZC(real,y,z,c) { + cimg::swap(real(i,y,z,c),real(j,y,z,c)); + cimg::swap(imag(i,y,z,c),imag(j,y,z,c)); + if (j=m; j-=m, m = n, n>>=1) {} + } + for (unsigned int delta = 2; delta<=N; delta<<=1) { + const unsigned int delta2 = delta>>1; + for (unsigned int i = 0; i>1; + if (((N - 1)&N) && N!=1) + throw CImgInstanceException("CImgList<%s>::FFT(): Specified real and imaginary parts (%u,%u,%u,%u) " + "have non 2^N dimension along the Y-axis.", + pixel_type(), + real._width,real._height,real._depth,real._spectrum); + + for (unsigned int i = 0, j = 0; ii) cimg_forXZC(real,x,z,c) { + cimg::swap(real(x,i,z,c),real(x,j,z,c)); + cimg::swap(imag(x,i,z,c),imag(x,j,z,c)); + if (j=m; j-=m, m = n, n>>=1) {} + } + for (unsigned int delta = 2; delta<=N; delta<<=1) { + const unsigned int delta2 = (delta>>1); + for (unsigned int i = 0; i>1; + if (((N - 1)&N) && N!=1) + throw CImgInstanceException("CImgList<%s>::FFT(): Specified real and imaginary parts (%u,%u,%u,%u) " + "have non 2^N dimension along the Z-axis.", + pixel_type(), + real._width,real._height,real._depth,real._spectrum); + + for (unsigned int i = 0, j = 0; ii) cimg_forXYC(real,x,y,c) { + cimg::swap(real(x,y,i,c),real(x,y,j,c)); + cimg::swap(imag(x,y,i,c),imag(x,y,j,c)); + if (j=m; j-=m, m = n, n>>=1) {} + } + for (unsigned int delta = 2; delta<=N; delta<<=1) { + const unsigned int delta2 = (delta>>1); + for (unsigned int i = 0; i& real, CImg& imag, const bool is_inverse=false, + const unsigned int nb_threads=0) { + if (!real) + throw CImgInstanceException("CImgList<%s>::FFT(): Empty specified real part.", + pixel_type()); + if (!imag) imag.assign(real._width,real._height,real._depth,real._spectrum,(T)0); + if (!real.is_sameXYZC(imag)) + throw CImgInstanceException("CImgList<%s>::FFT(): Specified real part (%u,%u,%u,%u,%p) and " + "imaginary part (%u,%u,%u,%u,%p) have different dimensions.", + pixel_type(), + real._width,real._height,real._depth,real._spectrum,real._data, + imag._width,imag._height,imag._depth,imag._spectrum,imag._data); + cimg::unused(nb_threads); +#ifdef cimg_use_fftw3 + cimg::mutex(12); +#ifndef cimg_use_fftw3_singlethread + fftw_plan_with_nthreads(nb_threads?nb_threads:cimg::nb_cpus()); +#endif + fftw_complex *data_in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*real._width*real._height*real._depth); + if (!data_in) + throw CImgInstanceException("CImgList<%s>::FFT(): Failed to allocate memory (%s) " + "for computing FFT of image (%u,%u,%u,%u).", + pixel_type(), + cimg::strbuffersize(sizeof(fftw_complex)*real._width* + real._height*real._depth*real._spectrum), + real._width,real._height,real._depth,real._spectrum); + double *const ptrf = (double*)data_in; + fftw_plan data_plan = + real._depth>1?fftw_plan_dft_3d(real._depth,real._height,real._width,data_in,data_in, + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE): + real._height>1?fftw_plan_dft_2d(real._height,real._width,data_in,data_in, + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE): + fftw_plan_dft_1d(real._width,data_in,data_in, + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE); + cimg_forC(real,c) { + CImg realc = real.get_shared_channel(c), imagc = imag.get_shared_channel(c); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_rofoff(realc,i) { const ulongT i2 = 2*i; ptrf[i2] = (double)realc[i]; ptrf[i2 + 1] = (double)imagc[i]; } + fftw_execute(data_plan); + if (is_inverse) { + const double a = 1.0/(real.width()*real.height()*real.depth()); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_rofoff(realc,i) { const ulongT i2 = 2*i; realc[i] = (T)(a*ptrf[i2]); imagc[i] = (T)(a*ptrf[i2 + 1]); } + } else + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_rofoff(realc,i) { const ulongT i2 = 2*i; realc[i] = (T)ptrf[i2]; imagc[i] = (T)ptrf[i2 + 1]; } + } + fftw_destroy_plan(data_plan); + fftw_free(data_in); +#ifndef cimg_use_fftw3_singlethread + fftw_cleanup_threads(); +#endif + cimg::mutex(12,0); +#else + if (real._depth>1) FFT(real,imag,'z',is_inverse); + if (real._height>1) FFT(real,imag,'y',is_inverse); + if (real._width>1) FFT(real,imag,'x',is_inverse); +#endif + } + + //@} + //------------------------------------- + // + //! \name 3D Objects Management + //@{ + //------------------------------------- + + //! Rotate 3D object's vertices. + /** + \param x X-coordinate of the rotation axis, or first quaternion coordinate. + \param y Y-coordinate of the rotation axis, or second quaternion coordinate. + \param z Z-coordinate of the rotation axis, or second quaternion coordinate. + \param w Angle of the rotation axis (in degree), or fourth quaternion coordinate. + \param is_quaternion Tell is the four arguments denotes a set { axis + angle } or a quaternion (x,y,z,w). + **/ + CImg& rotate_object3d(const float x, const float y, const float z, const float w, + const bool is_quaternion=false) { + return get_rotate_object3d(x,y,z,w,is_quaternion).move_to(*this); + } + + CImg get_rotate_object3d(const float x, const float y, const float z, const float w, + const bool is_quaternion=false) const { + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "rotate_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + return CImg::rotation_matrix(x,y,z,w,is_quaternion)**this; + } + + //! Shift 3D object's vertices. + /** + \param tx X-coordinate of the 3D displacement vector. + \param ty Y-coordinate of the 3D displacement vector. + \param tz Z-coordinate of the 3D displacement vector. + **/ + CImg& shift_object3d(const float tx, const float ty=0, const float tz=0) { + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "shift_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + + get_shared_row(0)+=tx; get_shared_row(1)+=ty; get_shared_row(2)+=tz; + return *this; + } + + //! Shift 3D object's vertices \newinstance. + CImg get_shift_object3d(const float tx, const float ty=0, const float tz=0) const { + return CImg(*this,false).shift_object3d(tx,ty,tz); + } + + //! Shift 3D object's vertices, so that it becomes centered. + /** + \note The object center is computed as its barycenter. + **/ + CImg& shift_object3d() { + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "shift_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + + CImg xcoords = get_shared_row(0), ycoords = get_shared_row(1), zcoords = get_shared_row(2); + float + xm, xM = (float)xcoords.max_min(xm), + ym, yM = (float)ycoords.max_min(ym), + zm, zM = (float)zcoords.max_min(zm); + xcoords-=(xm + xM)/2; ycoords-=(ym + yM)/2; zcoords-=(zm + zM)/2; + return *this; + } + + //! Shift 3D object's vertices, so that it becomes centered \newinstance. + CImg get_shift_object3d() const { + return CImg(*this,false).shift_object3d(); + } + + //! Resize 3D object. + /** + \param sx Width of the 3D object's bounding box. + \param sy Height of the 3D object's bounding box. + \param sz Depth of the 3D object's bounding box. + **/ + CImg& resize_object3d(const float sx, const float sy=-100, const float sz=-100) { + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "resize_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + + CImg xcoords = get_shared_row(0), ycoords = get_shared_row(1), zcoords = get_shared_row(2); + float + xm, xM = (float)xcoords.max_min(xm), + ym, yM = (float)ycoords.max_min(ym), + zm, zM = (float)zcoords.max_min(zm); + if (xm0) xcoords*=sx/(xM-xm); else xcoords*=-sx/100; } + if (ym0) ycoords*=sy/(yM-ym); else ycoords*=-sy/100; } + if (zm0) zcoords*=sz/(zM-zm); else zcoords*=-sz/100; } + return *this; + } + + //! Resize 3D object \newinstance. + CImg get_resize_object3d(const float sx, const float sy=-100, const float sz=-100) const { + return CImg(*this,false).resize_object3d(sx,sy,sz); + } + + //! Resize 3D object to unit size. + CImg resize_object3d() { + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "resize_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + + CImg xcoords = get_shared_row(0), ycoords = get_shared_row(1), zcoords = get_shared_row(2); + float + xm, xM = (float)xcoords.max_min(xm), + ym, yM = (float)ycoords.max_min(ym), + zm, zM = (float)zcoords.max_min(zm); + const float dx = xM - xm, dy = yM - ym, dz = zM - zm, dmax = cimg::max(dx,dy,dz); + if (dmax>0) { xcoords/=dmax; ycoords/=dmax; zcoords/=dmax; } + return *this; + } + + //! Resize 3D object to unit size \newinstance. + CImg get_resize_object3d() const { + return CImg(*this,false).resize_object3d(); + } + + //! Merge two 3D objects together. + /** + \param[in,out] primitives Primitives data of the current 3D object. + \param obj_vertices Vertices data of the additional 3D object. + \param obj_primitives Primitives data of the additional 3D object. + **/ + template + CImg& append_object3d(CImgList& primitives, const CImg& obj_vertices, + const CImgList& obj_primitives) { + if (!obj_vertices || !obj_primitives) return *this; + if (obj_vertices._height!=3 || obj_vertices._depth>1 || obj_vertices._spectrum>1) + throw CImgInstanceException(_cimg_instance + "append_object3d(): Specified vertice image (%u,%u,%u,%u,%p) is not a " + "set of 3D vertices.", + cimg_instance, + obj_vertices._width,obj_vertices._height, + obj_vertices._depth,obj_vertices._spectrum,obj_vertices._data); + + if (is_empty()) { primitives.assign(obj_primitives); return assign(obj_vertices); } + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "append_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + + const unsigned int P = _width; + append(obj_vertices,'x'); + const unsigned int N = primitives._width; + primitives.insert(obj_primitives); + for (unsigned int i = N; i &p = primitives[i]; + switch (p.size()) { + case 1 : p[0]+=P; break; // Point + case 5 : p[0]+=P; p[1]+=P; break; // Sphere + case 2 : case 6 : p[0]+=P; p[1]+=P; break; // Segment + case 3 : case 9 : p[0]+=P; p[1]+=P; p[2]+=P; break; // Triangle + case 4 : case 12 : p[0]+=P; p[1]+=P; p[2]+=P; p[3]+=P; break; // Rectangle + } + } + return *this; + } + + //! Texturize primitives of a 3D object. + /** + \param[in,out] primitives Primitives data of the 3D object. + \param[in,out] colors Colors data of the 3D object. + \param texture Texture image to map to 3D object. + \param coords Texture-mapping coordinates. + **/ + template + const CImg& texturize_object3d(CImgList& primitives, CImgList& colors, + const CImg& texture, const CImg& coords=CImg::const_empty()) const { + if (is_empty()) return *this; + if (_height!=3) + throw CImgInstanceException(_cimg_instance + "texturize_object3d(): image instance is not a set of 3D points.", + cimg_instance); + if (coords && (coords._width!=_width || coords._height!=2)) + throw CImgArgumentException(_cimg_instance + "texturize_object3d(): Invalid specified texture coordinates (%u,%u,%u,%u,%p).", + cimg_instance, + coords._width,coords._height,coords._depth,coords._spectrum,coords._data); + CImg _coords; + if (!coords) { // If no texture coordinates specified, do a default XY-projection + _coords.assign(_width,2); + float + xmin, xmax = (float)get_shared_row(0).max_min(xmin), + ymin, ymax = (float)get_shared_row(1).max_min(ymin), + dx = xmax>xmin?xmax-xmin:1, + dy = ymax>ymin?ymax-ymin:1; + cimg_forX(*this,p) { + _coords(p,0) = (int)(((*this)(p,0) - xmin)*texture._width/dx); + _coords(p,1) = (int)(((*this)(p,1) - ymin)*texture._height/dy); + } + } else _coords = coords; + + int texture_ind = -1; + cimglist_for(primitives,l) { + CImg &p = primitives[l]; + const unsigned int siz = p.size(); + switch (siz) { + case 1 : { // Point + const unsigned int i0 = (unsigned int)p[0]; + const int x0 = _coords(i0,0), y0 = _coords(i0,1); + texture.get_vector_at(x0<=0?0:x0>=texture.width()?texture.width() - 1:x0, + y0<=0?0:y0>=texture.height()?texture.height() - 1:y0).move_to(colors[l]); + } break; + case 2 : case 6 : { // Line + const unsigned int i0 = (unsigned int)p[0], i1 = (unsigned int)p[1]; + const int + x0 = _coords(i0,0), y0 = _coords(i0,1), + x1 = _coords(i1,0), y1 = _coords(i1,1); + if (texture_ind<0) colors[texture_ind=l].assign(texture,false); + else colors[l].assign(colors[texture_ind],true); + CImg::vector(i0,i1,x0,y0,x1,y1).move_to(p); + } break; + case 3 : case 9 : { // Triangle + const unsigned int i0 = (unsigned int)p[0], i1 = (unsigned int)p[1], i2 = (unsigned int)p[2]; + const int + x0 = _coords(i0,0), y0 = _coords(i0,1), + x1 = _coords(i1,0), y1 = _coords(i1,1), + x2 = _coords(i2,0), y2 = _coords(i2,1); + if (texture_ind<0) colors[texture_ind=l].assign(texture,false); + else colors[l].assign(colors[texture_ind],true); + CImg::vector(i0,i1,i2,x0,y0,x1,y1,x2,y2).move_to(p); + } break; + case 4 : case 12 : { // Quadrangle + const unsigned int + i0 = (unsigned int)p[0], i1 = (unsigned int)p[1], i2 = (unsigned int)p[2], i3 = (unsigned int)p[3]; + const int + x0 = _coords(i0,0), y0 = _coords(i0,1), + x1 = _coords(i1,0), y1 = _coords(i1,1), + x2 = _coords(i2,0), y2 = _coords(i2,1), + x3 = _coords(i3,0), y3 = _coords(i3,1); + if (texture_ind<0) colors[texture_ind=l].assign(texture,false); + else colors[l].assign(colors[texture_ind],true); + CImg::vector(i0,i1,i2,i3,x0,y0,x1,y1,x2,y2,x3,y3).move_to(p); + } break; + } + } + return *this; + } + + //! Generate a 3D elevation of the image instance. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param[out] colors The returned list of the 3D object colors. + \param elevation The input elevation map. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + const CImg img("reference.jpg"); + CImgList faces3d; + CImgList colors3d; + const CImg points3d = img.get_elevation3d(faces3d,colors3d,img.get_norm()*0.2); + CImg().display_object3d("Elevation3d",points3d,faces3d,colors3d); + \endcode + \image html ref_elevation3d.jpg + **/ + template + CImg get_elevation3d(CImgList& primitives, CImgList& colors, const CImg& elevation) const { + if (!is_sameXY(elevation) || elevation._depth>1 || elevation._spectrum>1) + throw CImgArgumentException(_cimg_instance + "get_elevation3d(): Instance and specified elevation (%u,%u,%u,%u,%p) " + "have incompatible dimensions.", + cimg_instance, + elevation._width,elevation._height,elevation._depth, + elevation._spectrum,elevation._data); + if (is_empty()) return *this; + float m, M = (float)max_min(m); + if (M==m) ++M; + colors.assign(); + const unsigned int size_x1 = _width - 1, size_y1 = _height - 1; + for (unsigned int y = 0; y1?((*this)(x,y,1) - m)*255/(M-m):r), + b = (unsigned char)(_spectrum>2?((*this)(x,y,2) - m)*255/(M-m):_spectrum>1?0:r); + CImg::vector((tc)r,(tc)g,(tc)b).move_to(colors); + } + const typename CImg::_functor2d_int func(elevation); + return elevation3d(primitives,func,0,0,_width - 1.f,_height - 1.f,_width,_height); + } + + //! Generate the 3D projection planes of the image instance. + /** + \param[out] primitives Primitives data of the returned 3D object. + \param[out] colors Colors data of the returned 3D object. + \param x0 X-coordinate of the projection point. + \param y0 Y-coordinate of the projection point. + \param z0 Z-coordinate of the projection point. + \param normalize_colors Tells if the created textures have normalized colors. + **/ + template + CImg get_projections3d(CImgList& primitives, CImgList& colors, + const unsigned int x0, const unsigned int y0, const unsigned int z0, + const bool normalize_colors=false) const { + float m = 0, M = 0, delta = 1; + if (normalize_colors) { m = (float)min_max(M); delta = 255/(m==M?1:M-m); } + const unsigned int + _x0 = (x0>=_width)?_width - 1:x0, + _y0 = (y0>=_height)?_height - 1:y0, + _z0 = (z0>=_depth)?_depth - 1:z0; + CImg img_xy, img_xz, img_yz; + if (normalize_colors) { + ((get_crop(0,0,_z0,0,_width - 1,_height - 1,_z0,_spectrum - 1)-=m)*=delta).move_to(img_xy); + ((get_crop(0,_y0,0,0,_width - 1,_y0,_depth - 1,_spectrum - 1)-=m)*=delta).resize(_width,_depth,1,-100,-1). + move_to(img_xz); + ((get_crop(_x0,0,0,0,_x0,_height - 1,_depth - 1,_spectrum - 1)-=m)*=delta).resize(_height,_depth,1,-100,-1). + move_to(img_yz); + } else { + get_crop(0,0,_z0,0,_width - 1,_height - 1,_z0,_spectrum - 1).move_to(img_xy); + get_crop(0,_y0,0,0,_width - 1,_y0,_depth - 1,_spectrum - 1).resize(_width,_depth,1,-100,-1).move_to(img_xz); + get_crop(_x0,0,0,0,_x0,_height - 1,_depth - 1,_spectrum - 1).resize(_height,_depth,1,-100,-1).move_to(img_yz); + } + CImg points(12,3,1,1, + 0,_width - 1,_width - 1,0, 0,_width - 1,_width - 1,0, _x0,_x0,_x0,_x0, + 0,0,_height - 1,_height - 1, _y0,_y0,_y0,_y0, 0,_height - 1,_height - 1,0, + _z0,_z0,_z0,_z0, 0,0,_depth - 1,_depth - 1, 0,0,_depth - 1,_depth - 1); + primitives.assign(); + CImg::vector(0,1,2,3,0,0,img_xy._width - 1,0,img_xy._width - 1,img_xy._height - 1,0,img_xy._height - 1). + move_to(primitives); + CImg::vector(4,5,6,7,0,0,img_xz._width - 1,0,img_xz._width - 1,img_xz._height - 1,0,img_xz._height - 1). + move_to(primitives); + CImg::vector(8,9,10,11,0,0,img_yz._width - 1,0,img_yz._width - 1,img_yz._height - 1,0,img_yz._height - 1). + move_to(primitives); + colors.assign(); + img_xy.move_to(colors); + img_xz.move_to(colors); + img_yz.move_to(colors); + return points; + } + + //! Generate a isoline of the image instance as a 3D object. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param isovalue The returned list of the 3D object colors. + \param size_x The number of subdivisions along the X-axis. + \param size_y The number of subdisivions along the Y-axis. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + const CImg img("reference.jpg"); + CImgList faces3d; + const CImg points3d = img.get_isoline3d(faces3d,100); + CImg().display_object3d("Isoline3d",points3d,faces3d,colors3d); + \endcode + \image html ref_isoline3d.jpg + **/ + template + CImg get_isoline3d(CImgList& primitives, const float isovalue, + const int size_x=-100, const int size_y=-100) const { + if (_spectrum>1) + throw CImgInstanceException(_cimg_instance + "get_isoline3d(): Instance is not a scalar image.", + cimg_instance); + if (_depth>1) + throw CImgInstanceException(_cimg_instance + "get_isoline3d(): Instance is not a 2D image.", + cimg_instance); + primitives.assign(); + if (is_empty()) return *this; + CImg vertices; + if ((size_x==-100 && size_y==-100) || (size_x==width() && size_y==height())) { + const _functor2d_int func(*this); + vertices = isoline3d(primitives,func,isovalue,0,0,width() - 1.f,height() - 1.f,width(),height()); + } else { + const _functor2d_float func(*this); + vertices = isoline3d(primitives,func,isovalue,0,0,width() - 1.f,height() - 1.f,size_x,size_y); + } + return vertices; + } + + //! Compute isolines of a function, as a 3D object. + /** + \param[out] primitives Primitives data of the resulting 3D object. + \param func Elevation functor. Must have operator()(x,y) defined. + \param isovalue Isovalue to extract from function. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param size_x Resolution of the function along the X-axis. + \param size_y Resolution of the function along the Y-axis. + \note Use the marching squares algorithm for extracting the isolines. + **/ + template + static CImg isoline3d(CImgList& primitives, const tfunc& func, const float isovalue, + const float x0, const float y0, const float x1, const float y1, + const int size_x=256, const int size_y=256) { + CImgList vertices; + primitives.assign(); + typename CImg::_functor_isoline3d add_vertex(vertices); + typename CImg::_functor_isoline3d add_segment(primitives); + isoline3d(add_vertex,add_segment,func,isovalue,x0,y0,x1,y1,size_x,size_y); + return vertices>'x'; + } + + //! Compute isolines of a function, as a 3D object. + /** + \param[out] add_vertex : Functor with operator()(x,y,z) defined for adding new vertex. + \param[out] add_segment : Functor with operator()(i,j) defined for adding new segment. + \param func Elevation function. Is of type float (*func)(const float x,const float y). + \param isovalue Isovalue to extract from function. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param size_x Resolution of the function along the X-axis. + \param size_y Resolution of the function along the Y-axis. + \note Use the marching squares algorithm for extracting the isolines. + **/ + template + static void isoline3d(tv& add_vertex, tf& add_segment, const tfunc& func, const float isovalue, + const float x0, const float y0, const float x1, const float y1, + const int size_x, const int size_y) { + static const unsigned int edges[16] = { 0x0, 0x9, 0x3, 0xa, 0x6, 0xf, 0x5, 0xc, 0xc, + 0x5, 0xf, 0x6, 0xa, 0x3, 0x9, 0x0 }; + static const int segments[16][4] = { { -1,-1,-1,-1 }, { 0,3,-1,-1 }, { 0,1,-1,-1 }, { 1,3,-1,-1 }, + { 1,2,-1,-1 }, { 0,1,2,3 }, { 0,2,-1,-1 }, { 2,3,-1,-1 }, + { 2,3,-1,-1 }, { 0,2,-1,-1}, { 0,3,1,2 }, { 1,2,-1,-1 }, + { 1,3,-1,-1 }, { 0,1,-1,-1}, { 0,3,-1,-1}, { -1,-1,-1,-1 } }; + const unsigned int + _nx = (unsigned int)(size_x>=0?size_x:cimg::round((x1-x0)*-size_x/100 + 1)), + _ny = (unsigned int)(size_y>=0?size_y:cimg::round((y1-y0)*-size_y/100 + 1)), + nx = _nx?_nx:1, + ny = _ny?_ny:1, + nxm1 = nx - 1, + nym1 = ny - 1; + + if (!nxm1 || !nym1) return; + const float dx = (x1 - x0)/nxm1, dy = (y1 - y0)/nym1; + CImg indices1(nx,1,1,2,-1), indices2(nx,1,1,2); + CImg values1(nx), values2(nx); + float X = x0, Y = y0, nX = X + dx, nY = Y + dy; + int nb_vertices = 0; + + // Fill first line with values + cimg_forX(values1,x) { values1(x) = (float)func(X,Y); X+=dx; } + + // Run the marching squares algorithm + for (unsigned int yi = 0, nyi = 1; yi + static CImg isoline3d(CImgList& primitives, const char *const expression, const float isovalue, + const float x0, const float y0, const float x1, const float y1, + const int size_x=256, const int size_y=256) { + const _functor2d_expr func(expression); + return isoline3d(primitives,func,isovalue,x0,y0,x1,y1,size_x,size_y); + } + + template + static int _isoline3d_index(const unsigned int edge, const CImg& indices1, const CImg& indices2, + const unsigned int x, const unsigned int nx) { + switch (edge) { + case 0 : return (int)indices1(x,0); + case 1 : return (int)indices1(nx,1); + case 2 : return (int)indices2(x,0); + case 3 : return (int)indices1(x,1); + } + return 0; + } + + //! Generate an isosurface of the image instance as a 3D object. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param isovalue The returned list of the 3D object colors. + \param size_x Number of subdivisions along the X-axis. + \param size_y Number of subdisivions along the Y-axis. + \param size_z Number of subdisivions along the Z-axis. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + const CImg img = CImg("reference.jpg").resize(-100,-100,20); + CImgList faces3d; + const CImg points3d = img.get_isosurface3d(faces3d,100); + CImg().display_object3d("Isosurface3d",points3d,faces3d,colors3d); + \endcode + \image html ref_isosurface3d.jpg + **/ + template + CImg get_isosurface3d(CImgList& primitives, const float isovalue, + const int size_x=-100, const int size_y=-100, const int size_z=-100) const { + if (_spectrum>1) + throw CImgInstanceException(_cimg_instance + "get_isosurface3d(): Instance is not a scalar image.", + cimg_instance); + primitives.assign(); + if (is_empty()) return *this; + CImg vertices; + if ((size_x==-100 && size_y==-100 && size_z==-100) || (size_x==width() && size_y==height() && size_z==depth())) { + const _functor3d_int func(*this); + vertices = isosurface3d(primitives,func,isovalue,0,0,0,width() - 1.f,height() - 1.f,depth() - 1.f, + width(),height(),depth()); + } else { + const _functor3d_float func(*this); + vertices = isosurface3d(primitives,func,isovalue,0,0,0,width() - 1.f,height() - 1.f,depth() - 1.f, + size_x,size_y,size_z); + } + return vertices; + } + + //! Compute isosurface of a function, as a 3D object. + /** + \param[out] primitives Primitives data of the resulting 3D object. + \param func Implicit function. Is of type float (*func)(const float x, const float y, const float z). + \param isovalue Isovalue to extract. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param z0 Z-coordinate of the starting point. + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param z1 Z-coordinate of the ending point. + \param size_x Resolution of the elevation function along the X-axis. + \param size_y Resolution of the elevation function along the Y-axis. + \param size_z Resolution of the elevation function along the Z-axis. + \note Use the marching cubes algorithm for extracting the isosurface. + **/ + template + static CImg isosurface3d(CImgList& primitives, const tfunc& func, const float isovalue, + const float x0, const float y0, const float z0, + const float x1, const float y1, const float z1, + const int size_x=32, const int size_y=32, const int size_z=32) { + CImgList vertices; + primitives.assign(); + typename CImg::_functor_isosurface3d add_vertex(vertices); + typename CImg::_functor_isosurface3d add_triangle(primitives); + isosurface3d(add_vertex,add_triangle,func,isovalue,x0,y0,z0,x1,y1,z1,size_x,size_y,size_z); + return vertices>'x'; + } + + //! Compute isosurface of a function, as a 3D object. + /** + \param[out] add_vertex : Functor with operator()(x,y,z) defined for adding new vertex. + \param[out] add_triangle : Functor with operator()(i,j) defined for adding new segment. + \param func Implicit function. Is of type float (*func)(const float x, const float y, const float z). + \param isovalue Isovalue to extract. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param z0 Z-coordinate of the starting point. + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param z1 Z-coordinate of the ending point. + \param size_x Resolution of the elevation function along the X-axis. + \param size_y Resolution of the elevation function along the Y-axis. + \param size_z Resolution of the elevation function along the Z-axis. + \note Use the marching cubes algorithm for extracting the isosurface. + **/ + template + static void isosurface3d(tv& add_vertex, tf& add_triangle, const tfunc& func, const float isovalue, + const float x0, const float y0, const float z0, + const float x1, const float y1, const float z1, + const int size_x, const int size_y, const int size_z) { + static const unsigned int edges[256] = { + 0x000, 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c, 0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00, + 0x190, 0x99 , 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c, 0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90, + 0x230, 0x339, 0x33 , 0x13a, 0x636, 0x73f, 0x435, 0x53c, 0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30, + 0x3a0, 0x2a9, 0x1a3, 0xaa , 0x7a6, 0x6af, 0x5a5, 0x4ac, 0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0, + 0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c, 0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60, + 0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff , 0x3f5, 0x2fc, 0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0, + 0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55 , 0x15c, 0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950, + 0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc , 0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0, + 0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc, 0xcc , 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0, + 0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c, 0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650, + 0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc, 0x2fc, 0x3f5, 0xff , 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0, + 0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c, 0x36c, 0x265, 0x16f, 0x66 , 0x76a, 0x663, 0x569, 0x460, + 0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac, 0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa , 0x1a3, 0x2a9, 0x3a0, + 0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c, 0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33 , 0x339, 0x230, + 0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c, 0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99 , 0x190, + 0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c, 0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x000 + }; + + static const int triangles[256][16] = { + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1 }, + { 8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1 }, + { 3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1 }, + { 4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1 }, + { 4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1 }, + { 9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1 }, + { 10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1 }, + { 5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1 }, + { 5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1 }, + { 8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1 }, + { 2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1 }, + { 2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1 }, + { 11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1 }, + { 5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1 }, + { 11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1 }, + { 11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1 }, + { 2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1 }, + { 6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1 }, + { 3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1 }, + { 6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1 }, + { 6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1 }, + { 8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1 }, + { 7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1 }, + { 3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1 }, + { 0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1 }, + { 9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1 }, + { 8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1 }, + { 5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1 }, + { 0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1 }, + { 6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1 }, + { 10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1 }, + { 1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1 }, + { 0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1 }, + { 3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1 }, + { 6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1 }, + { 9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1 }, + { 8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1 }, + { 3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1 }, + { 10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1 }, + { 10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1 }, + { 2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1 }, + { 7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1 }, + { 2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1 }, + { 1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1 }, + { 11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1 }, + { 8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1 }, + { 0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1 }, + { 7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1 }, + { 7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1 }, + { 10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1 }, + { 0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1 }, + { 7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1 }, + { 6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1 }, + { 4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1 }, + { 10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1 }, + { 8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1 }, + { 1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1 }, + { 10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1 }, + { 10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1 }, + { 9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1 }, + { 7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1 }, + { 3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1 }, + { 7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1 }, + { 3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1 }, + { 6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1 }, + { 9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1 }, + { 1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1 }, + { 4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1 }, + { 7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1 }, + { 6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1 }, + { 0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1 }, + { 6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1 }, + { 0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1 }, + { 11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1 }, + { 6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1 }, + { 5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1 }, + { 9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1 }, + { 1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1 }, + { 10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1 }, + { 0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1 }, + { 11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1 }, + { 9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1 }, + { 7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1 }, + { 2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1 }, + { 9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1 }, + { 9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1 }, + { 1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1 }, + { 0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1 }, + { 10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1 }, + { 2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1 }, + { 0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1 }, + { 0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1 }, + { 9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1 }, + { 5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1 }, + { 5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1 }, + { 8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1 }, + { 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1 }, + { 1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1 }, + { 3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1 }, + { 4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1 }, + { 9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1 }, + { 11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1 }, + { 2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1 }, + { 9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1 }, + { 3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1 }, + { 1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1 }, + { 4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1 }, + { 0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1 }, + { 1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 } + }; + + const unsigned int + _nx = (unsigned int)(size_x>=0?size_x:cimg::round((x1-x0)*-size_x/100 + 1)), + _ny = (unsigned int)(size_y>=0?size_y:cimg::round((y1-y0)*-size_y/100 + 1)), + _nz = (unsigned int)(size_z>=0?size_z:cimg::round((z1-z0)*-size_z/100 + 1)), + nx = _nx?_nx:1, + ny = _ny?_ny:1, + nz = _nz?_nz:1, + nxm1 = nx - 1, + nym1 = ny - 1, + nzm1 = nz - 1; + if (!nxm1 || !nym1 || !nzm1) return; + const float dx = (x1 - x0)/nxm1, dy = (y1 - y0)/nym1, dz = (z1 - z0)/nzm1; + CImg indices1(nx,ny,1,3,-1), indices2(indices1); + CImg values1(nx,ny), values2(nx,ny); + float X = 0, Y = 0, Z = 0, nX = 0, nY = 0, nZ = 0; + int nb_vertices = 0; + + // Fill the first plane with function values + Y = y0; + cimg_forY(values1,y) { + X = x0; + cimg_forX(values1,x) { values1(x,y) = (float)func(X,Y,z0); X+=dx; } + Y+=dy; + } + + // Run Marching Cubes algorithm + Z = z0; nZ = Z + dz; + for (unsigned int zi = 0; zi + static CImg isosurface3d(CImgList& primitives, const char *const expression, const float isovalue, + const float x0, const float y0, const float z0, + const float x1, const float y1, const float z1, + const int dx=32, const int dy=32, const int dz=32) { + const _functor3d_expr func(expression); + return isosurface3d(primitives,func,isovalue,x0,y0,z0,x1,y1,z1,dx,dy,dz); + } + + template + static int _isosurface3d_index(const unsigned int edge, const CImg& indices1, const CImg& indices2, + const unsigned int x, const unsigned int y, + const unsigned int nx, const unsigned int ny) { + switch (edge) { + case 0 : return indices1(x,y,0); + case 1 : return indices1(nx,y,1); + case 2 : return indices1(x,ny,0); + case 3 : return indices1(x,y,1); + case 4 : return indices2(x,y,0); + case 5 : return indices2(nx,y,1); + case 6 : return indices2(x,ny,0); + case 7 : return indices2(x,y,1); + case 8 : return indices1(x,y,2); + case 9 : return indices1(nx,y,2); + case 10 : return indices1(nx,ny,2); + case 11 : return indices1(x,ny,2); + } + return 0; + } + + // Define functors for accessing image values (used in previous functions). + struct _functor2d_int { + const CImg& ref; + _functor2d_int(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y) const { + return (float)ref((int)x,(int)y); + } + }; + + struct _functor2d_float { + const CImg& ref; + _functor2d_float(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y) const { + return (float)ref._linear_atXY(x,y); + } + }; + + struct _functor2d_expr { + _cimg_math_parser *mp; + ~_functor2d_expr() { mp->end(); delete mp; } + _functor2d_expr(const char *const expr):mp(0) { + mp = new _cimg_math_parser(expr,0,CImg::const_empty(),0); + } + float operator()(const float x, const float y) const { + return (float)(*mp)(x,y,0,0); + } + }; + + struct _functor3d_int { + const CImg& ref; + _functor3d_int(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y, const float z) const { + return (float)ref((int)x,(int)y,(int)z); + } + }; + + struct _functor3d_float { + const CImg& ref; + _functor3d_float(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y, const float z) const { + return (float)ref._linear_atXYZ(x,y,z); + } + }; + + struct _functor3d_expr { + _cimg_math_parser *mp; + ~_functor3d_expr() { mp->end(); delete mp; } + _functor3d_expr(const char *const expr):mp(0) { + mp = new _cimg_math_parser(expr,0,CImg::const_empty(),0); + } + float operator()(const float x, const float y, const float z) const { + return (float)(*mp)(x,y,z,0); + } + }; + + struct _functor4d_int { + const CImg& ref; + _functor4d_int(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y, const float z, const unsigned int c) const { + return (float)ref((int)x,(int)y,(int)z,c); + } + }; + + struct _functor_isoline3d { + CImgList& list; + _functor_isoline3d(CImgList& _list):list(_list) {} + template + void operator()(const t x, const t y, const t z) { CImg::vector((T)x,(T)y,(T)z).move_to(list); } + template + void operator()(const t i, const t j) { CImg::vector((T)i,(T)j).move_to(list); } + }; + + struct _functor_isosurface3d { + CImgList& list; + _functor_isosurface3d(CImgList& _list):list(_list) {} + template + void operator()(const t x, const t y, const t z) { CImg::vector((T)x,(T)y,(T)z).move_to(list); } + }; + + //! Compute 3D elevation of a function as a 3D object. + /** + \param[out] primitives Primitives data of the resulting 3D object. + \param func Elevation function. Is of type float (*func)(const float x,const float y). + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param size_x Resolution of the function along the X-axis. + \param size_y Resolution of the function along the Y-axis. + **/ + template + static CImg elevation3d(CImgList& primitives, const tfunc& func, + const float x0, const float y0, const float x1, const float y1, + const int size_x=256, const int size_y=256) { + const float + nx0 = x0=0?size_x:(nx1-nx0)*-size_x/100), + nsize_x = _nsize_x?_nsize_x:1, nsize_x1 = nsize_x - 1, + _nsize_y = (unsigned int)(size_y>=0?size_y:(ny1-ny0)*-size_y/100), + nsize_y = _nsize_y?_nsize_y:1, nsize_y1 = nsize_y - 1; + if (nsize_x<2 || nsize_y<2) + throw CImgArgumentException("CImg<%s>::elevation3d(): Invalid specified size (%d,%d).", + pixel_type(), + nsize_x,nsize_y); + + CImg vertices(nsize_x*nsize_y,3); + floatT *ptr_x = vertices.data(0,0), *ptr_y = vertices.data(0,1), *ptr_z = vertices.data(0,2); + for (unsigned int y = 0; y + static CImg elevation3d(CImgList& primitives, const char *const expression, + const float x0, const float y0, const float x1, const float y1, + const int size_x=256, const int size_y=256) { + const _functor2d_expr func(expression); + return elevation3d(primitives,func,x0,y0,x1,y1,size_x,size_y); + } + + //! Generate a 3D box object. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param size_x The width of the box (dimension along the X-axis). + \param size_y The height of the box (dimension along the Y-axis). + \param size_z The depth of the box (dimension along the Z-axis). + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::box3d(faces3d,10,20,30); + CImg().display_object3d("Box3d",points3d,faces3d); + \endcode + \image html ref_box3d.jpg + **/ + template + static CImg box3d(CImgList& primitives, + const float size_x=200, const float size_y=100, const float size_z=100) { + primitives.assign(6,1,4,1,1, 0,3,2,1, 4,5,6,7, 0,1,5,4, 3,7,6,2, 0,4,7,3, 1,2,6,5); + return CImg(8,3,1,1, + 0.,size_x,size_x, 0., 0.,size_x,size_x, 0., + 0., 0.,size_y,size_y, 0., 0.,size_y,size_y, + 0., 0., 0., 0.,size_z,size_z,size_z,size_z); + } + + //! Generate a 3D cone. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param radius The radius of the cone basis. + \param size_z The cone's height. + \param subdivisions The number of basis angular subdivisions. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::cone3d(faces3d,50); + CImg().display_object3d("Cone3d",points3d,faces3d); + \endcode + \image html ref_cone3d.jpg + **/ + template + static CImg cone3d(CImgList& primitives, + const float radius=50, const float size_z=100, const unsigned int subdivisions=24) { + primitives.assign(); + if (!subdivisions) return CImg(); + CImgList vertices(2,1,3,1,1, + 0.,0.,size_z, + 0.,0.,0.); + for (float delta = 360.f/subdivisions, angle = 0; angle<360; angle+=delta) { + const float a = (float)(angle*cimg::PI/180); + CImg::vector((float)(radius*std::cos(a)),(float)(radius*std::sin(a)),0).move_to(vertices); + } + const unsigned int nbr = vertices._width - 2; + for (unsigned int p = 0; p::vector(1,next,curr).move_to(primitives); + CImg::vector(0,curr,next).move_to(primitives); + } + return vertices>'x'; + } + + //! Generate a 3D cylinder. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param radius The radius of the cylinder basis. + \param size_z The cylinder's height. + \param subdivisions The number of basis angular subdivisions. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::cylinder3d(faces3d,50); + CImg().display_object3d("Cylinder3d",points3d,faces3d); + \endcode + \image html ref_cylinder3d.jpg + **/ + template + static CImg cylinder3d(CImgList& primitives, + const float radius=50, const float size_z=100, const unsigned int subdivisions=24) { + primitives.assign(); + if (!subdivisions) return CImg(); + CImgList vertices(2,1,3,1,1, + 0.,0.,0., + 0.,0.,size_z); + for (float delta = 360.f/subdivisions, angle = 0; angle<360; angle+=delta) { + const float a = (float)(angle*cimg::PI/180); + CImg::vector((float)(radius*std::cos(a)),(float)(radius*std::sin(a)),0.f).move_to(vertices); + CImg::vector((float)(radius*std::cos(a)),(float)(radius*std::sin(a)),size_z).move_to(vertices); + } + const unsigned int nbr = (vertices._width - 2)/2; + for (unsigned int p = 0; p::vector(0,next,curr).move_to(primitives); + CImg::vector(1,curr + 1,next + 1).move_to(primitives); + CImg::vector(curr,next,next + 1,curr + 1).move_to(primitives); + } + return vertices>'x'; + } + + //! Generate a 3D torus. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param radius1 The large radius. + \param radius2 The small radius. + \param subdivisions1 The number of angular subdivisions for the large radius. + \param subdivisions2 The number of angular subdivisions for the small radius. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::torus3d(faces3d,20,4); + CImg().display_object3d("Torus3d",points3d,faces3d); + \endcode + \image html ref_torus3d.jpg + **/ + template + static CImg torus3d(CImgList& primitives, + const float radius1=100, const float radius2=30, + const unsigned int subdivisions1=24, const unsigned int subdivisions2=12) { + primitives.assign(); + if (!subdivisions1 || !subdivisions2) return CImg(); + CImgList vertices; + for (unsigned int v = 0; v::vector(x,y,z).move_to(vertices); + } + } + for (unsigned int vv = 0; vv::vector(svv + nu,svv + uu,snv + uu,snv + nu).move_to(primitives); + } + } + return vertices>'x'; + } + + //! Generate a 3D XY-plane. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param size_x The width of the plane (dimension along the X-axis). + \param size_y The height of the plane (dimensions along the Y-axis). + \param subdivisions_x The number of planar subdivisions along the X-axis. + \param subdivisions_y The number of planar subdivisions along the Y-axis. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::plane3d(faces3d,100,50); + CImg().display_object3d("Plane3d",points3d,faces3d); + \endcode + \image html ref_plane3d.jpg + **/ + template + static CImg plane3d(CImgList& primitives, + const float size_x=100, const float size_y=100, + const unsigned int subdivisions_x=10, const unsigned int subdivisions_y=10) { + primitives.assign(); + if (!subdivisions_x || !subdivisions_y) return CImg(); + CImgList vertices; + const unsigned int w = subdivisions_x + 1, h = subdivisions_y + 1; + const float fx = (float)size_x/w, fy = (float)size_y/h; + for (unsigned int y = 0; y::vector(fx*x,fy*y,0).move_to(vertices); + for (unsigned int y = 0; y::vector(off1,off4,off3,off2).move_to(primitives); + } + return vertices>'x'; + } + + //! Generate a 3D sphere. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param radius The radius of the sphere (dimension along the X-axis). + \param subdivisions The number of recursive subdivisions from an initial icosahedron. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::sphere3d(faces3d,100,4); + CImg().display_object3d("Sphere3d",points3d,faces3d); + \endcode + \image html ref_sphere3d.jpg + **/ + template + static CImg sphere3d(CImgList& primitives, + const float radius=50, const unsigned int subdivisions=3) { + + // Create initial icosahedron + primitives.assign(); + const double tmp = (1 + std::sqrt(5.f))/2, a = 1./std::sqrt(1 + tmp*tmp), b = tmp*a; + CImgList vertices(12,1,3,1,1, b,a,0., -b,a,0., -b,-a,0., b,-a,0., a,0.,b, a,0.,-b, + -a,0.,-b, -a,0.,b, 0.,b,a, 0.,-b,a, 0.,-b,-a, 0.,b,-a); + primitives.assign(20,1,3,1,1, 4,8,7, 4,7,9, 5,6,11, 5,10,6, 0,4,3, 0,3,5, 2,7,1, 2,1,6, + 8,0,11, 8,11,1, 9,10,3, 9,2,10, 8,4,0, 11,0,5, 4,9,3, + 5,3,10, 7,8,1, 6,1,11, 7,2,9, 6,10,2); + // edge - length/2 + float he = (float)a; + + // Recurse subdivisions + for (unsigned int i = 0; i::vector(nx0,ny0,nz0).move_to(vertices); i0 = vertices.width() - 1; } + if (i1<0) { CImg::vector(nx1,ny1,nz1).move_to(vertices); i1 = vertices.width() - 1; } + if (i2<0) { CImg::vector(nx2,ny2,nz2).move_to(vertices); i2 = vertices.width() - 1; } + primitives.remove(0); + CImg::vector(p0,i0,i1).move_to(primitives); + CImg::vector((tf)i0,(tf)p1,(tf)i2).move_to(primitives); + CImg::vector((tf)i1,(tf)i2,(tf)p2).move_to(primitives); + CImg::vector((tf)i1,(tf)i0,(tf)i2).move_to(primitives); + } + } + return (vertices>'x')*=radius; + } + + //! Generate a 3D ellipsoid. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param tensor The tensor which gives the shape and size of the ellipsoid. + \param subdivisions The number of recursive subdivisions from an initial stretched icosahedron. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg tensor = CImg::diagonal(10,7,3), + points3d = CImg::ellipsoid3d(faces3d,tensor,4); + CImg().display_object3d("Ellipsoid3d",points3d,faces3d); + \endcode + \image html ref_ellipsoid3d.jpg + **/ + template + static CImg ellipsoid3d(CImgList& primitives, + const CImg& tensor, const unsigned int subdivisions=3) { + primitives.assign(); + if (!subdivisions) return CImg(); + CImg S, V; + tensor.symmetric_eigen(S,V); + const float orient = + (V(0,1)*V(1,2) - V(0,2)*V(1,1))*V(2,0) + + (V(0,2)*V(1,0) - V(0,0)*V(1,2))*V(2,1) + + (V(0,0)*V(1,1) - V(0,1)*V(1,0))*V(2,2); + if (orient<0) { V(2,0) = -V(2,0); V(2,1) = -V(2,1); V(2,2) = -V(2,2); } + const float l0 = S[0], l1 = S[1], l2 = S[2]; + CImg vertices = sphere3d(primitives,1.,subdivisions); + vertices.get_shared_row(0)*=l0; + vertices.get_shared_row(1)*=l1; + vertices.get_shared_row(2)*=l2; + return V*vertices; + } + + //! Convert 3D object into a CImg3d representation. + /** + \param primitives Primitives data of the 3D object. + \param colors Colors data of the 3D object. + \param opacities Opacities data of the 3D object. + \param full_check Tells if full checking of the 3D object must be performed. + **/ + template + CImg& object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool full_check=true) { + return get_object3dtoCImg3d(primitives,colors,opacities,full_check).move_to(*this); + } + + //! Convert 3D object into a CImg3d representation \overloading. + template + CImg& object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const bool full_check=true) { + return get_object3dtoCImg3d(primitives,colors,full_check).move_to(*this); + } + + //! Convert 3D object into a CImg3d representation \overloading. + template + CImg& object3dtoCImg3d(const CImgList& primitives, + const bool full_check=true) { + return get_object3dtoCImg3d(primitives,full_check).move_to(*this); + } + + //! Convert 3D object into a CImg3d representation \overloading. + CImg& object3dtoCImg3d(const bool full_check=true) { + return get_object3dtoCImg3d(full_check).move_to(*this); + } + + //! Convert 3D object into a CImg3d representation \newinstance. + template + CImg get_object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool full_check=true) const { + CImg error_message(1024); + if (!is_object3d(primitives,colors,opacities,full_check,error_message)) + throw CImgInstanceException(_cimg_instance + "object3dtoCImg3d(): Invalid specified 3D object (%u,%u) (%s).", + cimg_instance,_width,primitives._width,error_message.data()); + CImg res(1,_size_object3dtoCImg3d(primitives,colors,opacities)); + float *ptrd = res._data; + + // Put magick number. + *(ptrd++) = 'C' + 0.5f; *(ptrd++) = 'I' + 0.5f; *(ptrd++) = 'm' + 0.5f; + *(ptrd++) = 'g' + 0.5f; *(ptrd++) = '3' + 0.5f; *(ptrd++) = 'd' + 0.5f; + + // Put number of vertices and primitives. + *(ptrd++) = cimg::uint2float(_width); + *(ptrd++) = cimg::uint2float(primitives._width); + + // Put vertex data. + if (is_empty() || !primitives) return res; + const T *ptrx = data(0,0), *ptry = data(0,1), *ptrz = data(0,2); + cimg_forX(*this,p) { + *(ptrd++) = (float)*(ptrx++); + *(ptrd++) = (float)*(ptry++); + *(ptrd++) = (float)*(ptrz++); + } + + // Put primitive data. + cimglist_for(primitives,p) { + *(ptrd++) = (float)primitives[p].size(); + const tp *ptrp = primitives[p]._data; + cimg_foroff(primitives[p],i) *(ptrd++) = cimg::uint2float((unsigned int)*(ptrp++)); + } + + // Put color/texture data. + const unsigned int csiz = std::min(colors._width,primitives._width); + for (int c = 0; c<(int)csiz; ++c) { + const CImg& color = colors[c]; + const tc *ptrc = color._data; + if (color.size()==3) { *(ptrd++) = (float)*(ptrc++); *(ptrd++) = (float)*(ptrc++); *(ptrd++) = (float)*ptrc; } + else { + *(ptrd++) = -128.f; + int shared_ind = -1; + if (color.is_shared()) for (int i = 0; i + float* _object3dtoCImg3d(const CImgList& opacities, float *ptrd) const { + cimglist_for(opacities,o) { + const CImg& opacity = opacities[o]; + const to *ptro = opacity._data; + if (opacity.size()==1) *(ptrd++) = (float)*ptro; + else { + *(ptrd++) = -128.f; + int shared_ind = -1; + if (opacity.is_shared()) for (int i = 0; i + float* _object3dtoCImg3d(const CImg& opacities, float *ptrd) const { + const to *ptro = opacities._data; + cimg_foroff(opacities,o) *(ptrd++) = (float)*(ptro++); + return ptrd; + } + + template + unsigned int _size_object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const CImgList& opacities) const { + unsigned int siz = 8U + 3*_width; + cimglist_for(primitives,p) siz+=primitives[p].size() + 1; + for (int c = std::min(primitives.width(),colors.width()) - 1; c>=0; --c) { + if (colors[c].is_shared()) siz+=4; + else { const unsigned int csiz = colors[c].size(); siz+=(csiz!=3)?4 + csiz:3; } + } + if (colors._width + unsigned int _size_object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const CImg& opacities) const { + unsigned int siz = 8U + 3*_width; + cimglist_for(primitives,p) siz+=primitives[p].size() + 1; + for (int c = std::min(primitives.width(),colors.width()) - 1; c>=0; --c) { + const unsigned int csiz = colors[c].size(); siz+=(csiz!=3)?4 + csiz:3; + } + if (colors._width + CImg get_object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const bool full_check=true) const { + CImgList opacities; + return get_object3dtoCImg3d(primitives,colors,opacities,full_check); + } + + //! Convert 3D object into a CImg3d representation \overloading. + template + CImg get_object3dtoCImg3d(const CImgList& primitives, + const bool full_check=true) const { + CImgList colors, opacities; + return get_object3dtoCImg3d(primitives,colors,opacities,full_check); + } + + //! Convert 3D object into a CImg3d representation \overloading. + CImg get_object3dtoCImg3d(const bool full_check=true) const { + CImgList opacities, colors; + CImgList primitives(width(),1,1,1,1); + cimglist_for(primitives,p) primitives(p,0) = p; + return get_object3dtoCImg3d(primitives,colors,opacities,full_check); + } + + //! Convert CImg3d representation into a 3D object. + /** + \param[out] primitives Primitives data of the 3D object. + \param[out] colors Colors data of the 3D object. + \param[out] opacities Opacities data of the 3D object. + \param full_check Tells if full checking of the 3D object must be performed. + **/ + template + CImg& CImg3dtoobject3d(CImgList& primitives, + CImgList& colors, + CImgList& opacities, + const bool full_check=true) { + return get_CImg3dtoobject3d(primitives,colors,opacities,full_check).move_to(*this); + } + + //! Convert CImg3d representation into a 3D object \newinstance. + template + CImg get_CImg3dtoobject3d(CImgList& primitives, + CImgList& colors, + CImgList& opacities, + const bool full_check=true) const { + CImg error_message(1024); + if (!is_CImg3d(full_check,error_message)) + throw CImgInstanceException(_cimg_instance + "CImg3dtoobject3d(): image instance is not a CImg3d (%s).", + cimg_instance,error_message.data()); + const T *ptrs = _data + 6; + const unsigned int + nb_points = cimg::float2uint((float)*(ptrs++)), + nb_primitives = cimg::float2uint((float)*(ptrs++)); + const CImg points = CImg(ptrs,3,nb_points,1,1,true).get_transpose(); + ptrs+=3*nb_points; + primitives.assign(nb_primitives); + cimglist_for(primitives,p) { + const unsigned int nb_inds = (unsigned int)*(ptrs++); + primitives[p].assign(1,nb_inds); + tp *ptrp = primitives[p]._data; + for (unsigned int i = 0; i::max(),(T)cimg::type::max()); \ + const float _sc_nopacity = cimg::abs((float)opacity), _sc_copacity = 1 - std::max((float)opacity,0.f); \ + const ulongT _sc_whd = (ulongT)_width*_height*_depth; \ + cimg::unused(_sc_maxval); + +#define cimg_draw_scanline(x0,x1,y,color,opacity,brightness) \ + _draw_scanline(x0,x1,y,color,opacity,brightness,_sc_nopacity,_sc_copacity,_sc_whd,_sc_maxval) + + // [internal] The following _draw_scanline() routines are *non user-friendly functions*, + // used only for internal purpose. + // Pre-requisites: x0<=x1, y-coordinate is valid, col is valid. + template + CImg& _draw_scanline(const int x0, const int x1, const int y, + const tc *const color, const float opacity, + const float brightness, + const float nopacity, const float copacity, const ulongT whd, const T _sc_maxval) { + const int nx0 = x0>0?x0:0, nx1 = x1=0) { + const tc *col = color; + const ulongT off = whd - dx - 1; + T *ptrd = data(nx0,y); + if (opacity>=1) { // ** Opaque drawing ** + if (brightness==1) { // Brightness==1 + if (sizeof(T)!=1) cimg_forC(*this,c) { + const T val = (T)*(col++); + for (int x = dx; x>=0; --x) *(ptrd++) = val; + ptrd+=off; + } else cimg_forC(*this,c) { + const T val = (T)*(col++); + std::memset(ptrd,(int)val,dx + 1); + ptrd+=whd; + } + } else if (brightness<1) { // Brightness<1 + if (sizeof(T)!=1) cimg_forC(*this,c) { + const T val = (T)(*(col++)*brightness); + for (int x = dx; x>=0; --x) *(ptrd++) = val; + ptrd+=off; + } else cimg_forC(*this,c) { + const T val = (T)(*(col++)*brightness); + std::memset(ptrd,(int)val,dx + 1); + ptrd+=whd; + } + } else { // Brightness>1 + if (sizeof(T)!=1) cimg_forC(*this,c) { + const T val = (T)((2-brightness)**(col++) + (brightness - 1)*_sc_maxval); + for (int x = dx; x>=0; --x) *(ptrd++) = val; + ptrd+=off; + } else cimg_forC(*this,c) { + const T val = (T)((2-brightness)**(col++) + (brightness - 1)*_sc_maxval); + std::memset(ptrd,(int)val,dx + 1); + ptrd+=whd; + } + } + } else { // ** Transparent drawing ** + if (brightness==1) { // Brightness==1 + cimg_forC(*this,c) { + const Tfloat val = *(col++)*nopacity; + for (int x = dx; x>=0; --x) { *ptrd = (T)(val + *ptrd*copacity); ++ptrd; } + ptrd+=off; + } + } else if (brightness<=1) { // Brightness<1 + cimg_forC(*this,c) { + const Tfloat val = *(col++)*brightness*nopacity; + for (int x = dx; x>=0; --x) { *ptrd = (T)(val + *ptrd*copacity); ++ptrd; } + ptrd+=off; + } + } else { // Brightness>1 + cimg_forC(*this,c) { + const Tfloat val = ((2-brightness)**(col++) + (brightness - 1)*_sc_maxval)*nopacity; + for (int x = dx; x>=0; --x) { *ptrd = (T)(val + *ptrd*copacity); ++ptrd; } + ptrd+=off; + } + } + } + } + return *this; + } + + //! Draw a 3D point. + /** + \param x0 X-coordinate of the point. + \param y0 Y-coordinate of the point. + \param z0 Z-coordinate of the point. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \note + - To set pixel values without clipping needs, you should use the faster CImg::operator()() function. + \par Example: + \code + CImg img(100,100,1,3,0); + const unsigned char color[] = { 255,128,64 }; + img.draw_point(50,50,color); + \endcode + **/ + template + CImg& draw_point(const int x0, const int y0, const int z0, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_point(): Specified color is (null).", + cimg_instance); + if (x0>=0 && y0>=0 && z0>=0 && x0=1) cimg_forC(*this,c) { *ptrd = (T)*(col++); ptrd+=whd; } + else cimg_forC(*this,c) { *ptrd = (T)(*(col++)*nopacity + *ptrd*copacity); ptrd+=whd; } + } + return *this; + } + + //! Draw a 2D point \simplification. + template + CImg& draw_point(const int x0, const int y0, + const tc *const color, const float opacity=1) { + return draw_point(x0,y0,0,color,opacity); + } + + // Draw a points cloud. + /** + \param points Image of vertices coordinates. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_point(const CImg& points, + const tc *const color, const float opacity=1) { + if (is_empty() || !points) return *this; + switch (points._height) { + case 0 : case 1 : + throw CImgArgumentException(_cimg_instance + "draw_point(): Invalid specified point set (%u,%u,%u,%u,%p).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum,points._data); + case 2 : { + cimg_forX(points,i) draw_point((int)points(i,0),(int)points(i,1),color,opacity); + } break; + default : { + cimg_forX(points,i) draw_point((int)points(i,0),(int)points(i,1),(int)points(i,2),color,opacity); + } + } + return *this; + } + + //! Draw a 2D line. + /** + \param x0 X-coordinate of the starting line point. + \param y0 Y-coordinate of the starting line point. + \param x1 X-coordinate of the ending line point. + \param y1 Y-coordinate of the ending line point. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch Tells if a reinitialization of the hash state must be done. + \note + - Line routine uses Bresenham's algorithm. + - Set \p init_hatch = false to draw consecutive hatched segments without breaking the line pattern. + \par Example: + \code + CImg img(100,100,1,3,0); + const unsigned char color[] = { 255,128,64 }; + img.draw_line(40,40,80,70,color); + \endcode + **/ + template + CImg& draw_line(int x0, int y0, + int x1, int y1, + const tc *const color, const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || !opacity || !pattern || + std::min(y0,y1)>=height() || std::max(y0,y1)<0 || + std::min(x0,x1)>=width() || std::max(x0,x1)<0) return *this; + + int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dy01 = y1 - y0; + + const bool is_horizontal = cimg::abs(dx01)>cimg::abs(dy01); + if (is_horizontal) cimg::swap(x0,y0,x1,y1,w1,h1,dx01,dy01); + if (pattern==~0U && y0>y1) { + cimg::swap(x0,x1,y0,y1); + dx01*=-1; dy01*=-1; + } + + static unsigned int hatch = ~0U - (~0U>>1); + if (init_hatch) hatch = ~0U - (~0U>>1); + cimg_init_scanline(opacity); + const int + step = y0<=y1?1:-1,hdy01 = dy01*cimg::sign(dx01)/2, + cy0 = cimg::cut(y0,0,h1), cy1 = cimg::cut(y1,0,h1) + step; + dy01+=dy01?0:1; + + for (int y = cy0; y!=cy1; y+=step) { + const int + yy0 = y - y0, + x = x0 + (dx01*yy0 + hdy01)/dy01; + if (x>=0 && x<=w1 && pattern&hatch) { + T *const ptrd = is_horizontal?data(y,x):data(x,y); + cimg_forC(*this,c) { + const T val = color[c]; + ptrd[c*_sc_whd] = opacity>=1?val:(T)(val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + if (!(hatch>>=1)) hatch = ~0U - (~0U>>1); + } + return *this; + } + + //! Draw a 2D line, with z-buffering. + /** + \param zbuffer Zbuffer image. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param z0 Z-coordinate of the starting point + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param z1 Z-coordinate of the ending point. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch Tells if a reinitialization of the hash state must be done. + **/ + template + CImg& draw_line(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + const tc *const color, const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || z0<=0 || z1<=0 || !opacity || !pattern) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_line(): Specified color is (null).", + cimg_instance); + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_line(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + + if (std::min(y0,y1)>=height() || std::max(y0,y1)<0 || std::min(x0,x1)>=width() || std::max(x0,x1)<0) return *this; + + float iz0 = 1/z0, iz1 = 1/z1; + int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dy01 = y1 - y0; + float diz01 = iz1 - iz0; + + const bool is_horizontal = cimg::abs(dx01)>cimg::abs(dy01); + if (is_horizontal) cimg::swap(x0,y0,x1,y1,w1,h1,dx01,dy01); + if (pattern==~0U && y0>y1) { + cimg::swap(x0,x1,y0,y1,iz0,iz1); + dx01*=-1; dy01*=-1; diz01*=-1; + } + + static unsigned int hatch = ~0U - (~0U>>1); + if (init_hatch) hatch = ~0U - (~0U>>1); + cimg_init_scanline(opacity); + + const int + step = y0<=y1?1:-1, hdy01 = dy01*cimg::sign(dx01)/2, + cy0 = cimg::cut(y0,0,h1), cy1 = cimg::cut(y1,0,h1) + step; + dy01+=dy01?0:1; + + for (int y = cy0; y!=cy1; y+=step) { + const int + yy0 = y - y0, + x = x0 + (dx01*yy0 + hdy01)/dy01; + const float iz = iz0 + diz01*yy0/dy01; + tz *const ptrz = is_horizontal?zbuffer.data(y,x):zbuffer.data(x,y); + + if (x>=0 && x<=w1 && pattern&hatch && iz>=*ptrz) { + *ptrz = (tz)iz; + T *const ptrd = is_horizontal?data(y,x):data(x,y); + cimg_forC(*this,c) { + const T val = color[c]; + ptrd[c*_sc_whd] = opacity>=1?val:(T)(val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + if (!(hatch>>=1)) hatch = ~0U - (~0U>>1); + } + return *this; + } + + //! Draw a textured 2D line. + /** + \param x0 X-coordinate of the starting line point. + \param y0 Y-coordinate of the starting line point. + \param x1 X-coordinate of the ending line point. + \param y1 Y-coordinate of the ending line point. + \param texture Texture image defining the pixel colors. + \param tx0 X-coordinate of the starting texture point. + \param ty0 Y-coordinate of the starting texture point. + \param tx1 X-coordinate of the ending texture point. + \param ty1 Y-coordinate of the ending texture point. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch Tells if the hash variable must be reinitialized. + \note + - Line routine uses the well known Bresenham's algorithm. + \par Example: + \code + CImg img(100,100,1,3,0), texture("texture256x256.ppm"); + const unsigned char color[] = { 255,128,64 }; + img.draw_line(40,40,80,70,texture,0,0,255,255); + \endcode + **/ + template + CImg& draw_line(int x0, int y0, + int x1, int y1, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + + if (is_empty() || !opacity || !pattern) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_line(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) return draw_line(x0,y0,x1,y1,+texture,tx0,ty0,tx1,ty1,opacity,pattern,init_hatch); + + if (std::min(y0,y1)>=height() || std::max(y0,y1)<0 || std::min(x0,x1)>=width() || std::max(x0,x1)<0) return *this; + + int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dy01 = y1 - y0; + int + dtx01 = tx1 - tx0, dty01 = ty1 - ty0; + + const bool is_horizontal = cimg::abs(dx01)>cimg::abs(dy01); + if (is_horizontal) cimg::swap(x0,y0,x1,y1,w1,h1,dx01,dy01); + if (pattern==~0U && y0>y1) { + cimg::swap(x0,x1,y0,y1,tx0,tx1,ty0,ty1); + dx01*=-1; dy01*=-1; dtx01*=-1; dty01*=-1; + } + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + static unsigned int hatch = ~0U - (~0U>>1); + if (init_hatch) hatch = ~0U - (~0U>>1); + cimg_init_scanline(opacity); + + const int + step = y0<=y1?1:-1, hdy01 = dy01*cimg::sign(dx01)/2, + hdy01tx = dy01*cimg::sign(dtx01)/2, hdy01ty = dy01*cimg::sign(dty01)/2, + cy0 = cimg::cut(y0,0,h1), cy1 = cimg::cut(y1,0,h1) + step; + dy01+=dy01?0:1; + + for (int y = cy0; y!=cy1; y+=step) { + const int + yy0 = y - y0, + x = x0 + (dx01*yy0 + hdy01)/dy01, + tx = tx0 + (dtx01*yy0 + hdy01tx)/dy01, + ty = ty0 + (dty01*yy0 + hdy01ty)/dy01; + if (x>=0 && x<=w1 && pattern&hatch) { + T *const ptrd = is_horizontal?data(y,x):data(x,y); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const T val = color[c*twhd]; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + if (!(hatch>>=1)) hatch = ~0U - (~0U>>1); + } + return *this; + } + + //! Draw a textured 2D line, with perspective correction. + /** + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param z0 Z-coordinate of the starting point + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param z1 Z-coordinate of the ending point. + \param texture Texture image defining the pixel colors. + \param tx0 X-coordinate of the starting texture point. + \param ty0 Y-coordinate of the starting texture point. + \param tx1 X-coordinate of the ending texture point. + \param ty1 Y-coordinate of the ending texture point. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch Tells if the hash variable must be reinitialized. + **/ + template + CImg& draw_line(int x0, int y0, const float z0, + int x1, int y1, const float z1, + const CImg& texture, + const int tx0, const int ty0, + const int tx1, const int ty1, + const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || z0<=0 || z1<=0 || !opacity || !pattern) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_line(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_line(x0,y0,z0,x1,y1,z1,+texture,tx0,ty0,tx1,ty1,opacity,pattern,init_hatch); + + if (std::min(y0,y1)>=height() || std::max(y0,y1)<0 || std::min(x0,x1)>=width() || std::max(x0,x1)<0) return *this; + + float iz0 = 1/z0, iz1 = 1/z1; + int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dy01 = y1 - y0; + float + diz01 = iz1 - iz0, + txz0 = tx0*iz0, txz1 = tx1*iz1, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, + dtxz01 = txz1 - txz0, dtyz01 = tyz1 - tyz0; + + const bool is_horizontal = cimg::abs(dx01)>cimg::abs(dy01); + if (is_horizontal) cimg::swap(x0,y0,x1,y1,w1,h1,dx01,dy01); + if (pattern==~0U && y0>y1) { + cimg::swap(x0,x1,y0,y1,iz0,iz1,txz0,txz1,tyz0,tyz1); + dx01*=-1; dy01*=-1; diz01*=-1; dtxz01*=-1; dtyz01*=-1; + } + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + static unsigned int hatch = ~0U - (~0U>>1); + if (init_hatch) hatch = ~0U - (~0U>>1); + cimg_init_scanline(opacity); + + const int + step = y0<=y1?1:-1, hdy01 = dy01*cimg::sign(dx01)/2, + cy0 = cimg::cut(y0,0,h1), cy1 = cimg::cut(y1,0,h1) + step; + dy01+=dy01?0:1; + + for (int y = cy0; y!=cy1; y+=step) { + const int + yy0 = y - y0, + x = x0 + (dx01*yy0 + hdy01)/dy01; + const float + iz = iz0 + diz01*yy0/dy01, + txz = txz0 + dtxz01*yy0/dy01, + tyz = tyz0 + dtyz01*yy0/dy01; + if (x>=0 && x<=w1 && pattern&hatch) { + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + T *const ptrd = is_horizontal?data(y,x):data(x,y); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const T val = color[c*twhd]; + ptrd[c*_sc_whd] = opacity>=1?val:(T)(val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + if (!(hatch>>=1)) hatch = ~0U - (~0U>>1); + } + return *this; + } + + //! Draw a textured 2D line, with perspective correction and z-buffering. + /** + \param zbuffer Z-buffer image. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param z0 Z-coordinate of the starting point + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param z1 Z-coordinate of the ending point. + \param texture Texture image defining the pixel colors. + \param tx0 X-coordinate of the starting texture point. + \param ty0 Y-coordinate of the starting texture point. + \param tx1 X-coordinate of the ending texture point. + \param ty1 Y-coordinate of the ending texture point. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch Tells if the hash variable must be reinitialized. + **/ + template + CImg& draw_line(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + const CImg& texture, + const int tx0, const int ty0, + const int tx1, const int ty1, + const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || z0<=0 || z1<=0 || !opacity || !pattern) return *this; + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_line(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_line(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_line(zbuffer,x0,y0,z0,x1,y1,z1,+texture,tx0,ty0,tx1,ty1,opacity,pattern,init_hatch); + + if (std::min(y0,y1)>=height() || std::max(y0,y1)<0 || std::min(x0,x1)>=width() || std::max(x0,x1)<0) return *this; + + float iz0 = 1/z0, iz1 = 1/z1; + int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dy01 = y1 - y0; + float + diz01 = iz1 - iz0, + txz0 = tx0*iz0, txz1 = tx1*iz1, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, + dtxz01 = txz1 - txz0, dtyz01 = tyz1 - tyz0; + + const bool is_horizontal = cimg::abs(dx01)>cimg::abs(dy01); + if (is_horizontal) cimg::swap(x0,y0,x1,y1,w1,h1,dx01,dy01); + if (pattern==~0U && y0>y1) { + cimg::swap(x0,x1,y0,y1,iz0,iz1,txz0,txz1,tyz0,tyz1); + dx01*=-1; dy01*=-1; diz01*=-1; dtxz01*=-1; dtyz01*=-1; + } + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + static unsigned int hatch = ~0U - (~0U>>1); + if (init_hatch) hatch = ~0U - (~0U>>1); + cimg_init_scanline(opacity); + + const int + step = y0<=y1?1:-1, hdy01 = dy01*cimg::sign(dx01)/2, + cy0 = cimg::cut(y0,0,h1), cy1 = cimg::cut(y1,0,h1) + step; + dy01+=dy01?0:1; + + for (int y = cy0; y!=cy1; y+=step) { + const int + yy0 = y - y0, + x = x0 + (dx01*yy0 + hdy01)/dy01; + const float + iz = iz0 + diz01*yy0/dy01, + txz = txz0 + dtxz01*yy0/dy01, + tyz = tyz0 + dtyz01*yy0/dy01; + tz *const ptrz = is_horizontal?zbuffer.data(y,x):zbuffer.data(x,y); + + if (x>=0 && x<=w1 && pattern&hatch && iz>=*ptrz) { + *ptrz = (tz)iz; + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + T *const ptrd = is_horizontal?data(y,x):data(x,y); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const T val = color[c*twhd]; + ptrd[c*_sc_whd] = opacity>=1?val:(T)(val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + if (!(hatch>>=1)) hatch = ~0U - (~0U>>1); + } + return *this; + } + + //! Draw a set of consecutive lines. + /** + \param points Coordinates of vertices, stored as a list of vectors. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch If set to true, init hatch motif. + \note + - This function uses several call to the single CImg::draw_line() procedure, + depending on the vectors size in \p points. + **/ + template + CImg& draw_line(const CImg& points, + const tc *const color, const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || !points || points._width<2) return *this; + bool ninit_hatch = init_hatch; + switch (points._height) { + case 0 : case 1 : + throw CImgArgumentException(_cimg_instance + "draw_line(): Invalid specified point set (%u,%u,%u,%u,%p).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum,points._data); + + default : { + const int x0 = (int)points(0,0), y0 = (int)points(0,1); + int ox = x0, oy = y0; + for (unsigned int i = 1; i + CImg& draw_arrow(const int x0, const int y0, + const int x1, const int y1, + const tc *const color, const float opacity=1, + const float angle=30, const float length=-10, + const unsigned int pattern=~0U) { + if (is_empty()) return *this; + const float u = (float)(x0 - x1), v = (float)(y0 - y1), sq = u*u + v*v, + deg = (float)(angle*cimg::PI/180), ang = (sq>0)?(float)std::atan2(v,u):0.f, + l = (length>=0)?length:-length*(float)std::sqrt(sq)/100; + if (sq>0) { + const float + cl = (float)std::cos(ang - deg), sl = (float)std::sin(ang - deg), + cr = (float)std::cos(ang + deg), sr = (float)std::sin(ang + deg); + const int + xl = x1 + (int)(l*cl), yl = y1 + (int)(l*sl), + xr = x1 + (int)(l*cr), yr = y1 + (int)(l*sr), + xc = x1 + (int)((l + 1)*(cl + cr))/2, yc = y1 + (int)((l + 1)*(sl + sr))/2; + draw_line(x0,y0,xc,yc,color,opacity,pattern).draw_triangle(x1,y1,xl,yl,xr,yr,color,opacity); + } else draw_point(x0,y0,color,opacity); + return *this; + } + + //! Draw a 2D spline. + /** + \param x0 X-coordinate of the starting curve point + \param y0 Y-coordinate of the starting curve point + \param u0 X-coordinate of the starting velocity + \param v0 Y-coordinate of the starting velocity + \param x1 X-coordinate of the ending curve point + \param y1 Y-coordinate of the ending curve point + \param u1 X-coordinate of the ending velocity + \param v1 Y-coordinate of the ending velocity + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param precision Curve drawing precision. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch If \c true, init hatch motif. + \note + - The curve is a 2D cubic Bezier spline, from the set of specified starting/ending points + and corresponding velocity vectors. + - The spline is drawn as a sequence of connected segments. The \p precision parameter sets the + average number of pixels in each drawn segment. + - A cubic Bezier curve is sometimes defined by a set of 4 points { (\p x0,\p y0), (\p xa,\p ya), + (\p xb,\p yb), (\p x1,\p y1) } where (\p x0,\p y0) is the starting point, (\p x1,\p y1) is the ending point + and (\p xa,\p ya), (\p xb,\p yb) are two + \e control points. + The starting and ending velocities (\p u0,\p v0) and (\p u1,\p v1) can be deduced easily from + the control points as + \p u0 = (\p xa - \p x0), \p v0 = (\p ya - \p y0), \p u1 = (\p x1 - \p xb) and \p v1 = (\p y1 - \p yb). + \par Example: + \code + CImg img(100,100,1,3,0); + const unsigned char color[] = { 255,255,255 }; + img.draw_spline(30,30,0,100,90,40,0,-100,color); + \endcode + **/ + template + CImg& draw_spline(const int x0, const int y0, const float u0, const float v0, + const int x1, const int y1, const float u1, const float v1, + const tc *const color, const float opacity=1, + const float precision=0.25, const unsigned int pattern=~0U, + const bool init_hatch=true) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_spline(): Specified color is (null).", + cimg_instance); + if (x0==x1 && y0==y1) return draw_point(x0,y0,color,opacity); + bool ninit_hatch = init_hatch; + const float + ax = u0 + u1 + 2*(x0 - x1), + bx = 3*(x1 - x0) - 2*u0 - u1, + ay = v0 + v1 + 2*(y0 - y1), + by = 3*(y1 - y0) - 2*v0 - v1, + _precision = 1/(cimg::hypot((float)x0 - x1,(float)y0 - y1)*(precision>0?precision:1)); + int ox = x0, oy = y0; + for (float t = 0; t<1; t+=_precision) { + const float t2 = t*t, t3 = t2*t; + const int + nx = (int)(ax*t3 + bx*t2 + u0*t + x0), + ny = (int)(ay*t3 + by*t2 + v0*t + y0); + draw_line(ox,oy,nx,ny,color,opacity,pattern,ninit_hatch); + ninit_hatch = false; + ox = nx; oy = ny; + } + return draw_line(ox,oy,x1,y1,color,opacity,pattern,false); + } + + //! Draw a textured 2D spline. + /** + \param x0 X-coordinate of the starting curve point + \param y0 Y-coordinate of the starting curve point + \param u0 X-coordinate of the starting velocity + \param v0 Y-coordinate of the starting velocity + \param x1 X-coordinate of the ending curve point + \param y1 Y-coordinate of the ending curve point + \param u1 X-coordinate of the ending velocity + \param v1 Y-coordinate of the ending velocity + \param texture Texture image defining line pixel colors. + \param tx0 X-coordinate of the starting texture point. + \param ty0 Y-coordinate of the starting texture point. + \param tx1 X-coordinate of the ending texture point. + \param ty1 Y-coordinate of the ending texture point. + \param precision Curve drawing precision. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch if \c true, reinit hatch motif. + **/ + template + CImg& draw_spline(const int x0, const int y0, const float u0, const float v0, + const int x1, const int y1, const float u1, const float v1, + const CImg& texture, + const int tx0, const int ty0, const int tx1, const int ty1, + const float opacity=1, + const float precision=4, const unsigned int pattern=~0U, + const bool init_hatch=true) { + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_spline(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_empty()) return *this; + if (is_overlapped(texture)) + return draw_spline(x0,y0,u0,v0,x1,y1,u1,v1,+texture,tx0,ty0,tx1,ty1,precision,opacity,pattern,init_hatch); + if (x0==x1 && y0==y1) + return draw_point(x0,y0,texture.get_vector_at(x0<=0?0:x0>=texture.width()?texture.width() - 1:x0, + y0<=0?0:y0>=texture.height()?texture.height() - 1:y0).data(), + opacity); + bool ninit_hatch = init_hatch; + const float + ax = u0 + u1 + 2*(x0 - x1), + bx = 3*(x1 - x0) - 2*u0 - u1, + ay = v0 + v1 + 2*(y0 - y1), + by = 3*(y1 - y0) - 2*v0 - v1, + _precision = 1/(cimg::hypot((float)x0 - x1,(float)y0 - y1)*(precision>0?precision:1)); + int ox = x0, oy = y0, otx = tx0, oty = ty0; + for (float t1 = 0; t1<1; t1+=_precision) { + const float t2 = t1*t1, t3 = t2*t1; + const int + nx = (int)(ax*t3 + bx*t2 + u0*t1 + x0), + ny = (int)(ay*t3 + by*t2 + v0*t1 + y0), + ntx = tx0 + (int)((tx1 - tx0)*t1), + nty = ty0 + (int)((ty1 - ty0)*t1); + draw_line(ox,oy,nx,ny,texture,otx,oty,ntx,nty,opacity,pattern,ninit_hatch); + ninit_hatch = false; + ox = nx; oy = ny; otx = ntx; oty = nty; + } + return draw_line(ox,oy,x1,y1,texture,otx,oty,tx1,ty1,opacity,pattern,false); + } + + //! Draw a set of consecutive splines. + /** + \param points Vertices data. + \param tangents Tangents data. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param is_closed_set Tells if the drawn spline set is closed. + \param precision Precision of the drawing. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch If \c true, init hatch motif. + **/ + template + CImg& draw_spline(const CImg& points, const CImg& tangents, + const tc *const color, const float opacity=1, + const bool is_closed_set=false, const float precision=4, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || !points || !tangents || points._width<2 || tangents._width<2) return *this; + bool ninit_hatch = init_hatch; + switch (points._height) { + case 0 : case 1 : + throw CImgArgumentException(_cimg_instance + "draw_spline(): Invalid specified point set (%u,%u,%u,%u,%p).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum,points._data); + + default : { + const int x0 = (int)points(0,0), y0 = (int)points(0,1); + const float u0 = (float)tangents(0,0), v0 = (float)tangents(0,1); + int ox = x0, oy = y0; + float ou = u0, ov = v0; + for (unsigned int i = 1; i + CImg& draw_spline(const CImg& points, + const tc *const color, const float opacity=1, + const bool is_closed_set=false, const float precision=4, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || !points || points._width<2) return *this; + CImg tangents; + switch (points._height) { + case 0 : case 1 : + throw CImgArgumentException(_cimg_instance + "draw_spline(): Invalid specified point set (%u,%u,%u,%u,%p).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum,points._data); + case 2 : { + tangents.assign(points._width,points._height); + cimg_forX(points,p) { + const unsigned int + p0 = is_closed_set?(p + points.width() - 1)%points.width():(p?p - 1:0), + p1 = is_closed_set?(p + 1)%points.width():(p + 1 + CImg& _draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const tc *const color, const float opacity, + const float brightness) { + if (y0>y1) cimg::swap(x0,x1,y0,y1); + if (y0>y2) cimg::swap(x0,x2,y0,y2); + if (y1>y2) cimg::swap(x1,x2,y1,y2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + + const float cbs = cimg::cut(brightness,0,2); + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM); + cimg_draw_scanline(xm,xM,y,color,opacity,cbs); + } + return *this; + } + + //! Draw a filled 2D triangle. + /** + \param x0 X-coordinate of the first vertex. + \param y0 Y-coordinate of the first vertex. + \param x1 X-coordinate of the second vertex. + \param y1 Y-coordinate of the second vertex. + \param x2 X-coordinate of the third vertex. + \param y2 Y-coordinate of the third vertex. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(const int x0, const int y0, + const int x1, const int y1, + const int x2, const int y2, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + _draw_triangle(x0,y0,x1,y1,x2,y2,color,opacity,1); + return *this; + } + + //! Draw a outlined 2D triangle. + /** + \param x0 X-coordinate of the first vertex. + \param y0 Y-coordinate of the first vertex. + \param x1 X-coordinate of the second vertex. + \param y1 Y-coordinate of the second vertex. + \param x2 X-coordinate of the third vertex. + \param y2 Y-coordinate of the third vertex. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the outline pattern. + **/ + template + CImg& draw_triangle(const int x0, const int y0, + const int x1, const int y1, + const int x2, const int y2, + const tc *const color, const float opacity, + const unsigned int pattern) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + draw_line(x0,y0,x1,y1,color,opacity,pattern,true). + draw_line(x1,y1,x2,y2,color,opacity,pattern,false). + draw_line(x2,y2,x0,y0,color,opacity,pattern,false); + return *this; + } + + //! Draw a filled 2D triangle, with z-buffering. + /** + \param zbuffer Z-buffer image. + \param x0 X-coordinate of the first vertex. + \param y0 Y-coordinate of the first vertex. + \param z0 Z-coordinate of the first vertex. + \param x1 X-coordinate of the second vertex. + \param y1 Y-coordinate of the second vertex. + \param z1 Z-coordinate of the second vertex. + \param x2 X-coordinate of the third vertex. + \param y2 Y-coordinate of the third vertex. + \param z2 Z-coordinate of the third vertex. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param brightness Brightness factor. + **/ + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const tc *const color, const float opacity=1, + const float brightness=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1; + + const float cbs = cimg::cut(brightness,0,2); + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,izm,izM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c]*cbs:(2 - cbs)*color[c] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a Gouraud-shaded 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param bs0 Brightness factor of the first vertex (in [0,2]). + \param bs1 brightness factor of the second vertex (in [0,2]). + \param bs2 brightness factor of the third vertex (in [0,2]). + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const tc *const color, + float bs0, + float bs1, + float bs2, + const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + + if (y0>y1) cimg::swap(x0,x1,y0,y1,bs0,bs1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,bs0,bs2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,bs1,bs2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float dbs01 = bs1 - bs0, dbs02 = bs2 - bs0, dbs12 = bs2 - bs1; + + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,bsm,bsM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dbsmM = bsM - bsm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float cbs = cimg::cut(bsm + dbsmM*xxm/dxmM,0,2); + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c]*cbs:(2 - cbs)*color[c] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a Gouraud-shaded 2D triangle, with z-buffering \overloading. + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const tc *const color, + float bs0, + float bs1, + float bs2, + float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,bs0,bs1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,bs0,bs2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,bs1,bs2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + dbs01 = bs1 - bs0, dbs02 = bs2 - bs0, dbs12 = bs2 - bs1; + + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,izm,izM,bsm,bsM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm, dbsmM = bsM - bsm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + const float cbs = cimg::cut(bsm + dbsmM*xxm/dxmM,0,2); + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c]*cbs:(2 - cbs)*color[c] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a color-interpolated 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param color1 Pointer to \c spectrum() consecutive values of type \c T, defining the color of the first vertex. + \param color2 Pointer to \c spectrum() consecutive values of type \c T, defining the color of the second vertex. + \param color3 Pointer to \c spectrum() consecutive values of type \c T, defining the color of the third vertex. + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(const int x0, const int y0, + const int x1, const int y1, + const int x2, const int y2, + const tc1 *const color1, + const tc2 *const color2, + const tc3 *const color3, + const float opacity=1) { + const unsigned char one = 1; + cimg_forC(*this,c) + get_shared_channel(c).draw_triangle(x0,y0,x1,y1,x2,y2,&one,color1[c],color2[c],color3[c],opacity); + return *this; + } + + //! Draw a textured 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param texture Texture image used to fill the triangle. + \param tx0 X-coordinate of the first vertex in the texture image. + \param ty0 Y-coordinate of the first vertex in the texture image. + \param tx1 X-coordinate of the second vertex in the texture image. + \param ty1 Y-coordinate of the second vertex in the texture image. + \param tx2 X-coordinate of the third vertex in the texture image. + \param ty2 Y-coordinate of the third vertex in the texture image. + \param opacity Drawing opacity. + \param brightness Brightness factor of the drawing (in [0,2]). + **/ + template + CImg& draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const float opacity=1, + const float brightness=1) { + if (is_empty()) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_triangle(x0,y0,x1,y1,x2,y2,+texture,tx0,ty0,tx1,ty1,tx2,ty2,opacity,brightness); + + if (y0>y1) cimg::swap(x0,x1,y0,y1,tx0,tx1,ty0,ty1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,tx0,tx2,ty0,ty2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,tx1,ty1,tx2,ty2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2, + dtx01 = tx1 - tx0, dtx02 = tx2 - tx0, dtx12 = tx2 - tx1, + dty01 = ty1 - ty0, dty02 = ty2 - ty0, dty12 = ty2 - ty1, + hdy01tx = dy01*cimg::sign(dtx01)/2, hdy02tx = dy02*cimg::sign(dtx02)/2, hdy12tx = dy12*cimg::sign(dtx12)/2, + hdy01ty = dy01*cimg::sign(dty01)/2, hdy02ty = dy02*cimg::sign(dty02)/2, hdy12ty = dy12*cimg::sign(dty12)/2; + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + const float cbs = cimg::cut(brightness,0,2); + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txm,txM,tym,tyM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int + dxmM = std::max(1,xM - xm), hdxmM = dxmM/2, + dtxmM = txM - txm, dtymM = tyM - tym; + + for (int x = cxm; x<=cxM; ++x) { + const int + xxm = x - xm, + tx = (txm*dxmM + dtxmM*xxm + hdxmM)/dxmM, + ty = (tym*dxmM + dtymM*xxm + hdxmM)/dxmM; + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c*twhd]*cbs:(2 - cbs)*color[c*twhd] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a 2D textured triangle, with perspective correction. + template + CImg& draw_triangle(int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const float opacity=1, + const float brightness=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,+texture,tx0,ty0,tx1,ty1,tx2,ty2,opacity,brightness); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1; + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + const float cbs = cimg::cut(brightness,0,2); + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txzm,txzM,tyzm,tyzM,izm,izM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm, dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float + iz = izm + dizmM*xxm/dxmM, + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM; + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c*twhd]*cbs:(2 - cbs)*color[c*twhd] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a textured 2D triangle, with perspective correction and z-buffering. + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const float opacity=1, + const float brightness=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,+texture,tx0,ty0,tx1,ty1,tx2,ty2,opacity,brightness); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1; + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + const float cbs = cimg::cut(brightness,0,2); + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txzm,txzM,tyzm,tyzM,izm,izM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm, dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + const float + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM; + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c*twhd]*cbs:(2 - cbs)*color[c*twhd] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a Phong-shaded 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param light Light image. + \param lx0 X-coordinate of the first vertex in the light image. + \param ly0 Y-coordinate of the first vertex in the light image. + \param lx1 X-coordinate of the second vertex in the light image. + \param ly1 Y-coordinate of the second vertex in the light image. + \param lx2 X-coordinate of the third vertex in the light image. + \param ly2 Y-coordinate of the third vertex in the light image. + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const tc *const color, + const CImg& light, + int lx0, int ly0, + int lx1, int ly1, + int lx2, int ly2, + const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + if (light._depth>1 || light._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified light texture (%u,%u,%u,%u,%p).", + cimg_instance,light._width,light._height,light._depth,light._spectrum,light._data); + + if (y0>y1) cimg::swap(x0,x1,y0,y1,lx0,lx1,ly0,ly1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,lx0,lx2,ly0,ly2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,lx1,lx2,ly1,ly2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2, + dlx01 = lx1 - lx0, dlx02 = lx2 - lx0, dlx12 = lx2 - lx1, + dly01 = ly1 - ly0, dly02 = ly2 - ly0, dly12 = ly2 - ly1, + hdy01lx = dy01*cimg::sign(dlx01)/2, hdy02lx = dy02*cimg::sign(dlx02)/2, hdy12lx = dy12*cimg::sign(dlx12)/2, + hdy01ly = dy01*cimg::sign(dly01)/2, hdy02ly = dy02*cimg::sign(dly02)/2, hdy12ly = dy12*cimg::sign(dly12)/2; + + const ulongT lwhd = (ulongT)light._width*light._height*light._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,lxm,lxM,lym,lyM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int + dxmM = std::max(1,xM - xm), hdxmM = dxmM/2, + dlxmM = lxM - lxm, dlymM = lyM - lym; + + for (int x = cxm; x<=cxM; ++x) { + const int + xxm = x - xm, + lx = (lxm*dxmM + dlxmM*xxm + hdxmM)/dxmM, + ly = (lym*dxmM + dlymM*xxm + hdxmM)/dxmM; + const tl *const lig = &light._atXY(lx,ly); + cimg_forC(*this,c) { + const tc col = color[c]; + const float cbs = cimg::cut((float)lig[c*lwhd],0,2); + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a Phong-shaded 2D triangle, with z-buffering. + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const tc *const color, + const CImg& light, + int lx0, int ly0, + int lx1, int ly1, + int lx2, int ly2, + const float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + if (light._depth>1 || light._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified light texture (%u,%u,%u,%u,%p).", + cimg_instance,light._width,light._height,light._depth,light._spectrum,light._data); + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + if (is_overlapped(light)) return draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color, + +light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,lx0,lx1,ly0,ly1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,lx0,lx2,ly0,ly2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,lx1,lx2,ly1,ly2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2, + dlx01 = lx1 - lx0, dlx02 = lx2 - lx0, dlx12 = lx2 - lx1, + dly01 = ly1 - ly0, dly02 = ly2 - ly0, dly12 = ly2 - ly1, + hdy01lx = dy01*cimg::sign(dlx01)/2, hdy02lx = dy02*cimg::sign(dlx02)/2, hdy12lx = dy12*cimg::sign(dlx12)/2, + hdy01ly = dy01*cimg::sign(dly01)/2, hdy02ly = dy02*cimg::sign(dly02)/2, hdy12ly = dy12*cimg::sign(dly12)/2; + const float diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1; + + const ulongT lwhd = (ulongT)light._width*light._height*light._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,lxm,lxM,lym,lyM,izm,izM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int + dxmM = std::max(1,xM - xm), hdxmM = dxmM/2, + dlxmM = lxM - lxm, dlymM = lyM - lym; + const float dizmM = izM - izm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + const int + lx = (lxm*dxmM + dlxmM*xxm + hdxmM)/dxmM, + ly = (lym*dxmM + dlymM*xxm + hdxmM)/dxmM; + const tl *const lig = &light._atXY(lx,ly); + cimg_forC(*this,c) { + const float cbs = cimg::cut((float)lig[c*lwhd],0,2); + const tc col = color[c]; + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a textured Gouraud-shaded 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param texture Texture image used to fill the triangle. + \param tx0 X-coordinate of the first vertex in the texture image. + \param ty0 Y-coordinate of the first vertex in the texture image. + \param tx1 X-coordinate of the second vertex in the texture image. + \param ty1 Y-coordinate of the second vertex in the texture image. + \param tx2 X-coordinate of the third vertex in the texture image. + \param ty2 Y-coordinate of the third vertex in the texture image. + \param bs0 Brightness factor of the first vertex. + \param bs1 Brightness factor of the second vertex. + \param bs2 Brightness factor of the third vertex. + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + float bs0, + float bs1, + float bs2, + const float opacity=1) { + if (is_empty()) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_triangle(x0,y0,x1,y1,x2,y2,+texture,tx0,ty0,tx1,ty1,tx2,ty2, + bs0,bs1,bs2,opacity); + + if (y0>y1) cimg::swap(x0,x1,y0,y1,tx0,tx1,ty0,ty1,bs0,bs1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,tx0,tx2,ty0,ty2,bs0,bs2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,tx1,tx2,ty1,ty2,bs1,bs2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2, + dtx01 = tx1 - tx0, dtx02 = tx2 - tx0, dtx12 = tx2 - tx1, + dty01 = ty1 - ty0, dty02 = ty2 - ty0, dty12 = ty2 - ty1, + hdy01tx = dy01*cimg::sign(dtx01)/2, hdy02tx = dy02*cimg::sign(dtx02)/2, hdy12tx = dy12*cimg::sign(dtx12)/2, + hdy01ty = dy01*cimg::sign(dty01)/2, hdy02ty = dy02*cimg::sign(dty02)/2, hdy12ty = dy12*cimg::sign(dty12)/2; + const float dbs01 = bs1 - bs0, dbs02 = bs2 - bs0, dbs12 = bs2 - bs1; + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txm,txM,tym,tyM,bsm,bsM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int + dxmM = std::max(1,xM - xm), hdxmM = dxmM/2, + dtxmM = txM - txm, dtymM = tyM - tym; + const float dbsmM = bsM - bsm; + + for (int x = cxm; x<=cxM; ++x) { + const int + xxm = x - xm, + tx = (txm*dxmM + dtxmM*xxm + hdxmM)/dxmM, + ty = (tym*dxmM + dtymM*xxm + hdxmM)/dxmM; + const float cbs = cimg::cut(bsm + dbsmM*xxm/dxmM,0,2); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a textured Gouraud-shaded 2D triangle, with perspective correction \overloading. + template + CImg& draw_triangle(int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + float bs0, + float bs1, + float bs2, + const float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) return draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,+texture,tx0,ty0,tx1,ty1,tx2,ty2, + bs0,bs1,bs2,opacity); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1,bs0,bs1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2,bs0,bs2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2,bs1,bs2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1, + dbs01 = bs1 - bs0, dbs02 = bs2 - bs0, dbs12 = bs2 - bs1; + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txzm,txzM,tyzm,tyzM,izm,izM,bsm,bsM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm, dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm, dbsmM = bsM - bsm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float + iz = izm + dizmM*xxm/dxmM, + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM, + cbs = cimg::cut(bsm + dbsmM*xxm/dxmM,0,2); + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a textured Gouraud-shaded 2D triangle, with perspective correction and z-buffering \overloading. + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + float bs0, + float bs1, + float bs2, + const float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,+texture,tx0,ty0,tx1,ty1,tx2,ty2,bs0,bs1,bs2,opacity); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1,bs0,bs1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2,bs0,bs2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2,bs1,bs2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1, + dbs01 = bs1 - bs0, dbs02 = bs2 - bs0, dbs12 = bs2 - bs1; + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txzm,txzM,tyzm,tyzM,izm,izM,bsm,bsM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm, dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm, dbsmM = bsM - bsm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + const float + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM, + cbs = cimg::cut(bsm + dbsmM*xxm/dxmM,0,2); + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a textured Phong-shaded 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param texture Texture image used to fill the triangle. + \param tx0 X-coordinate of the first vertex in the texture image. + \param ty0 Y-coordinate of the first vertex in the texture image. + \param tx1 X-coordinate of the second vertex in the texture image. + \param ty1 Y-coordinate of the second vertex in the texture image. + \param tx2 X-coordinate of the third vertex in the texture image. + \param ty2 Y-coordinate of the third vertex in the texture image. + \param light Light image. + \param lx0 X-coordinate of the first vertex in the light image. + \param ly0 Y-coordinate of the first vertex in the light image. + \param lx1 X-coordinate of the second vertex in the light image. + \param ly1 Y-coordinate of the second vertex in the light image. + \param lx2 X-coordinate of the third vertex in the light image. + \param ly2 Y-coordinate of the third vertex in the light image. + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const CImg& light, + int lx0, int ly0, + int lx1, int ly1, + int lx2, int ly2, + const float opacity=1) { + if (is_empty()) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (light._depth>1 || light._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified light texture (%u,%u,%u,%u,%p).", + cimg_instance,light._width,light._height,light._depth,light._spectrum,light._data); + if (is_overlapped(texture)) + return draw_triangle(x0,y0,x1,y1,x2,y2,+texture,tx0,ty0,tx1,ty1,tx2,ty2,light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + if (is_overlapped(light)) + return draw_triangle(x0,y0,x1,y1,x2,y2,texture,tx0,ty0,tx1,ty1,tx2,ty2,+light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + + if (y0>y1) cimg::swap(x0,x1,y0,y1,tx0,tx1,ty0,ty1,lx0,lx1,ly0,ly1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,tx0,tx2,ty0,ty2,lx0,lx2,ly0,ly2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,tx1,tx2,ty1,ty2,lx1,lx2,ly1,ly2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2, + dtx01 = tx1 - tx0, dtx02 = tx2 - tx0, dtx12 = tx2 - tx1, + dty01 = ty1 - ty0, dty02 = ty2 - ty0, dty12 = ty2 - ty1, + hdy01tx = dy01*cimg::sign(dtx01)/2, hdy02tx = dy02*cimg::sign(dtx02)/2, hdy12tx = dy12*cimg::sign(dtx12)/2, + hdy01ty = dy01*cimg::sign(dty01)/2, hdy02ty = dy02*cimg::sign(dty02)/2, hdy12ty = dy12*cimg::sign(dty12)/2, + dlx01 = lx1 - lx0, dlx02 = lx2 - lx0, dlx12 = lx2 - lx1, + dly01 = ly1 - ly0, dly02 = ly2 - ly0, dly12 = ly2 - ly1, + hdy01lx = dy01*cimg::sign(dlx01)/2, hdy02lx = dy02*cimg::sign(dlx02)/2, hdy12lx = dy12*cimg::sign(dlx12)/2, + hdy01ly = dy01*cimg::sign(dly01)/2, hdy02ly = dy02*cimg::sign(dly02)/2, hdy12ly = dy12*cimg::sign(dly12)/2; + + const ulongT + twhd = (ulongT)texture._width*texture._height*texture._depth, + lwhd = (ulongT)light._width*light._height*light._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txm,txM,tym,tyM,lxm,lxM,lym,lyM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int + dxmM = std::max(1,xM - xm), hdxmM = dxmM/2, + dtxmM = txM - txm, dtymM = tyM - tym, + dlxmM = lxM - lxm, dlymM = lyM - lym; + + for (int x = cxm; x<=cxM; ++x) { + const int + xxm = x - xm, + tx = (txm*dxmM + dtxmM*xxm + hdxmM)/dxmM, + ty = (tym*dxmM + dtymM*xxm + hdxmM)/dxmM, + lx = (lxm*dxmM + dlxmM*xxm + hdxmM)/dxmM, + ly = (lym*dxmM + dlymM*xxm + hdxmM)/dxmM; + const tc *const color = &texture._atXY(tx,ty); + const tl *const lig = &light._atXY(lx,ly); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const float cbs = cimg::cut((float)lig[c*lwhd],0,2); + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a textured Phong-shaded 2D triangle, with perspective correction. + template + CImg& draw_triangle(int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const CImg& light, + int lx0, int ly0, + int lx1, int ly1, + int lx2, int ly2, + const float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (light._depth>1 || light._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified light texture (%u,%u,%u,%u,%p).", + cimg_instance,light._width,light._height,light._depth,light._spectrum,light._data); + if (is_overlapped(texture)) + return draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,+texture,tx0,ty0,tx1,ty1,tx2,ty2, + light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + if (is_overlapped(light)) + return draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,texture,tx0,ty0,tx1,ty1,tx2,ty2, + +light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1,lx0,lx1,ly0,ly1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2,lx0,lx2,ly0,ly2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2,lx1,lx2,ly1,ly2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1, + lxz0 = lx0*iz0, lxz1 = lx1*iz1, lxz2 = lx2*iz2, + lyz0 = ly0*iz0, lyz1 = ly1*iz1, lyz2 = ly2*iz2, + dlxz01 = lxz1 - lxz0, dlxz02 = lxz2 - lxz0, dlxz12 = lxz2 - lxz1, + dlyz01 = lyz1 - lyz0, dlyz02 = lyz2 - lyz0, dlyz12 = lyz2 - lyz1; + + const ulongT + twhd = (ulongT)texture._width*texture._height*texture._depth, + lwhd = (ulongT)light._width*light._height*light._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,izm,izM,txzm,txzM,tyzm,tyzM,lxzm,lxzM,lyzm,lyzM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float + dizmM = izM - izm, + dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm, + dlxzmM = lxzM - lxzm, dlyzmM = lyzM - lyzm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float + iz = izm + dizmM*xxm/dxmM, + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM, + lxz = lxzm + dlxzmM*xxm/dxmM, + lyz = lyzm + dlyzmM*xxm/dxmM; + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz), + lx = (int)cimg::round(lxz/iz), + ly = (int)cimg::round(lyz/iz); + const tc *const color = &texture._atXY(tx,ty); + const tl *const lig = &light._atXY(lx,ly); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const float cbs = cimg::cut((float)lig[c*lwhd],0,2); + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a textured Phong-shaded 2D triangle, with perspective correction and z-buffering. + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const CImg& light, + int lx0, int ly0, + int lx1, int ly1, + int lx2, int ly2, + const float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (light._depth>1 || light._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified light texture (%u,%u,%u,%u,%p).", + cimg_instance,light._width,light._height,light._depth,light._spectrum,light._data); + if (is_overlapped(texture)) + return draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2, + +texture,tx0,ty0,tx1,ty1,tx2,ty2,light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + if (is_overlapped(light)) + return draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2, + texture,tx0,ty0,tx1,ty1,tx2,ty2,+light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1,lx0,lx1,ly0,ly1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2,lx0,lx2,ly0,ly2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2,lx1,lx2,ly1,ly2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1, + lxz0 = lx0*iz0, lxz1 = lx1*iz1, lxz2 = lx2*iz2, + lyz0 = ly0*iz0, lyz1 = ly1*iz1, lyz2 = ly2*iz2, + dlxz01 = lxz1 - lxz0, dlxz02 = lxz2 - lxz0, dlxz12 = lxz2 - lxz1, + dlyz01 = lyz1 - lyz0, dlyz02 = lyz2 - lyz0, dlyz12 = lyz2 - lyz1; + + const ulongT + twhd = (ulongT)texture._width*texture._height*texture._depth, + lwhd = (ulongT)light._width*light._height*light._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,izm,izM,txzm,txzM,tyzm,tyzM,lxzm,lxzM,lyzm,lyzM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float + dizmM = izM - izm, + dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm, + dlxzmM = lxzM - lxzm, dlyzmM = lyzM - lyzm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + const float + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM, + lxz = lxzm + dlxzmM*xxm/dxmM, + lyz = lyzm + dlyzmM*xxm/dxmM; + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz), + lx = (int)cimg::round(lxz/iz), + ly = (int)cimg::round(lyz/iz); + const tc *const color = &texture._atXY(tx,ty); + const tl *const lig = &light._atXY(lx,ly); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const float cbs = cimg::cut((float)lig[c*lwhd],0,2); + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a filled 4D rectangle. + /** + \param x0 X-coordinate of the upper-left rectangle corner. + \param y0 Y-coordinate of the upper-left rectangle corner. + \param z0 Z-coordinate of the upper-left rectangle corner. + \param c0 C-coordinate of the upper-left rectangle corner. + \param x1 X-coordinate of the lower-right rectangle corner. + \param y1 Y-coordinate of the lower-right rectangle corner. + \param z1 Z-coordinate of the lower-right rectangle corner. + \param c1 C-coordinate of the lower-right rectangle corner. + \param val Scalar value used to fill the rectangle area. + \param opacity Drawing opacity. + **/ + CImg& draw_rectangle(const int x0, const int y0, const int z0, const int c0, + const int x1, const int y1, const int z1, const int c1, + const T val, const float opacity=1) { + if (is_empty()) return *this; + const int + nx0 = x0=width()?width() - 1 - nx1:0) + (nx0<0?nx0:0), + ly = (1 + ny1 - ny0) + (ny1>=height()?height() - 1 - ny1:0) + (ny0<0?ny0:0), + lz = (1 + nz1 - nz0) + (nz1>=depth()?depth() - 1 - nz1:0) + (nz0<0?nz0:0), + lc = (1 + nc1 - nc0) + (nc1>=spectrum()?spectrum() - 1 - nc1:0) + (nc0<0?nc0:0); + const ulongT + offX = (ulongT)_width - lx, + offY = (ulongT)_width*(_height - ly), + offZ = (ulongT)_width*_height*(_depth - lz); + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + T *ptrd = data(nx0<0?0:nx0,ny0<0?0:ny0,nz0<0?0:nz0,nc0<0?0:nc0); + if (lx>0 && ly>0 && lz>0 && lc>0) + for (int v = 0; v=1) { + if (sizeof(T)!=1) { for (int x = 0; x + CImg& draw_rectangle(const int x0, const int y0, const int z0, + const int x1, const int y1, const int z1, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_rectangle(): Specified color is (null).", + cimg_instance); + cimg_forC(*this,c) draw_rectangle(x0,y0,z0,c,x1,y1,z1,c,(T)color[c],opacity); + return *this; + } + + //! Draw a filled 2D rectangle. + /** + \param x0 X-coordinate of the upper-left rectangle corner. + \param y0 Y-coordinate of the upper-left rectangle corner. + \param x1 X-coordinate of the lower-right rectangle corner. + \param y1 Y-coordinate of the lower-right rectangle corner. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_rectangle(const int x0, const int y0, + const int x1, const int y1, + const tc *const color, const float opacity=1) { + return draw_rectangle(x0,y0,0,x1,y1,_depth - 1,color,opacity); + } + + //! Draw a outlined 2D rectangle \overloading. + template + CImg& draw_rectangle(const int x0, const int y0, + const int x1, const int y1, + const tc *const color, const float opacity, + const unsigned int pattern) { + if (is_empty()) return *this; + if (y0==y1) return draw_line(x0,y0,x1,y0,color,opacity,pattern,true); + if (x0==x1) return draw_line(x0,y0,x0,y1,color,opacity,pattern,true); + const int + nx0 = x0 + CImg& draw_polygon(const CImg& points, + const tc *const color, const float opacity=1) { + if (is_empty() || !points) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_polygon(): Specified color is (null).", + cimg_instance); + if (points.height()!=2) + throw CImgArgumentException(_cimg_instance + "draw_polygon(): Invalid specified point set (%u,%u,%u,%u).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum); + if (points._width==1) return draw_point(cimg::uiround(points(0,0)),cimg::uiround(points(0,1)),color,opacity); + if (points._width==2) return draw_line(cimg::uiround(points(0,0)),cimg::uiround(points(0,1)), + cimg::uiround(points(1,0)),cimg::uiround(points(1,1)),color,opacity); + if (points._width==3) return draw_triangle(cimg::uiround(points(0,0)),cimg::uiround(points(0,1)), + cimg::uiround(points(1,0)),cimg::uiround(points(1,1)), + cimg::uiround(points(2,0)),cimg::uiround(points(2,1)),color,opacity); + cimg_init_scanline(opacity); + int + xmin = 0, ymin = 0, + xmax = points.get_shared_row(0).max_min(xmin), + ymax = points.get_shared_row(1).max_min(ymin); + if (xmax<0 || xmin>=width() || ymax<0 || ymin>=height()) return *this; + if (ymin==ymax) return draw_line(xmin,ymin,xmax,ymax,color,opacity); + + ymin = std::max(0,ymin); + ymax = std::min(height() - 1,ymax); + CImg Xs(points._width,ymax - ymin + 1); + CImg count(Xs._height,1,1,1,0); + unsigned int n = 0, nn = 1; + bool go_on = true; + + while (go_on) { + unsigned int an = (nn + 1)%points._width; + const int + x0 = cimg::uiround(points(n,0)), + y0 = cimg::uiround(points(n,1)); + if (points(nn,1)==y0) while (points(an,1)==y0) { nn = an; (an+=1)%=points._width; } + const int + x1 = cimg::uiround(points(nn,0)), + y1 = cimg::uiround(points(nn,1)); + unsigned int tn = an; + while (points(tn,1)==y1) (tn+=1)%=points._width; + + if (y0!=y1) { + const int + y2 = cimg::uiround(points(tn,1)), + x01 = x1 - x0, y01 = y1 - y0, y12 = y2 - y1, + step = cimg::sign(y01), + tmax = std::max(1,cimg::abs(y01)), htmax = tmax*cimg::sign(x01)/2, + tend = tmax - (step==cimg::sign(y12)); + unsigned int y = (unsigned int)y0 - ymin; + for (int t = 0; t<=tend; ++t, y+=step) + if (yn; + n = nn; + nn = an; + } + + cimg_pragma_openmp(parallel for cimg_openmp_if(Xs._height>=(cimg_openmp_sizefactor)*512)) + cimg_forY(Xs,y) { + const CImg Xsy = Xs.get_shared_points(0,count[y] - 1,y).sort(); + int px = width(); + for (unsigned int k = 0; k + CImg& draw_polygon(const CImg& points, + const tc *const color, const float opacity, const unsigned int pattern) { + if (is_empty() || !points) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_polygon(): Specified color is (null).", + cimg_instance); + if (points._width==1) return draw_point((int)points(0,0),(int)points(0,1),color,opacity); + if (points._width==2) return draw_line((int)points(0,0),(int)points(0,1), + (int)points(1,0),(int)points(1,1),color,opacity,pattern); + bool ninit_hatch = true; + switch (points._height) { + case 0 : case 1 : + throw CImgArgumentException(_cimg_instance + "draw_polygon(): Invalid specified point set (%u,%u,%u,%u).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum); + default : { + CImg npoints(points._width,2); + int x = npoints(0,0) = (int)points(0,0), y = npoints(0,1) = (int)points(0,1); + unsigned int nb_points = 1; + for (unsigned int p = 1; p + CImg& draw_ellipse(const int x0, const int y0, const float r1, const float r2, const float angle, + const tc *const color, const float opacity=1) { + return _draw_ellipse(x0,y0,r1,r2,angle,color,opacity,0U,true); + } + + //! Draw a filled 2D ellipse \overloading. + /** + \param x0 X-coordinate of the ellipse center. + \param y0 Y-coordinate of the ellipse center. + \param tensor Diffusion tensor describing the ellipse. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_ellipse(const int x0, const int y0, const CImg &tensor, + const tc *const color, const float opacity=1) { + CImgList eig = tensor.get_symmetric_eigen(); + const CImg &val = eig[0], &vec = eig[1]; + return draw_ellipse(x0,y0,std::sqrt(val(0)),std::sqrt(val(1)), + std::atan2(vec(0,1),vec(0,0))*180/cimg::PI, + color,opacity); + } + + //! Draw an outlined 2D ellipse. + /** + \param x0 X-coordinate of the ellipse center. + \param y0 Y-coordinate of the ellipse center. + \param r1 First radius of the ellipse. + \param r2 Second radius of the ellipse. + \param angle Angle of the first radius. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the outline pattern. + **/ + template + CImg& draw_ellipse(const int x0, const int y0, const float r1, const float r2, const float angle, + const tc *const color, const float opacity, const unsigned int pattern) { + if (pattern) _draw_ellipse(x0,y0,r1,r2,angle,color,opacity,pattern,false); + return *this; + } + + //! Draw an outlined 2D ellipse \overloading. + /** + \param x0 X-coordinate of the ellipse center. + \param y0 Y-coordinate of the ellipse center. + \param tensor Diffusion tensor describing the ellipse. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the outline pattern. + **/ + template + CImg& draw_ellipse(const int x0, const int y0, const CImg &tensor, + const tc *const color, const float opacity, + const unsigned int pattern) { + CImgList eig = tensor.get_symmetric_eigen(); + const CImg &val = eig[0], &vec = eig[1]; + return draw_ellipse(x0,y0,std::sqrt(val(0)),std::sqrt(val(1)), + std::atan2(vec(0,1),vec(0,0))*180/cimg::PI, + color,opacity,pattern); + } + + template + CImg& _draw_ellipse(const int x0, const int y0, const float radius1, const float radius2, const float angle, + const tc *const color, const float opacity, + const unsigned int pattern, const bool is_filled) { + if (is_empty() || (!is_filled && !pattern)) return *this; + const float radiusM = std::max(radius1,radius2); + if (radius1<0 || radius2<0 || x0 - radiusM>=width() || y0 + radiusM<0 || y0 - radiusM>=height()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_ellipse(): Specified color is (null).", + cimg_instance); + const int iradius1 = (int)cimg::round(radius1), iradius2 = (int)cimg::round(radius2); + if (!iradius1 && !iradius2) return draw_point(x0,y0,color,opacity); + if (iradius1==iradius2) { + if (is_filled) return draw_circle(x0,y0,iradius1,color,opacity); + else if (pattern==~0U) return draw_circle(x0,y0,iradius1,color,opacity,pattern); + } + const float ang = (float)(angle*cimg::PI/180); + + if (!is_filled) { // Outlined + const float ca = std::cos(ang), sa = std::sin(ang); + CImg points((unsigned int)cimg::round(6*radiusM),2); + cimg_forX(points,k) { + const float + _ang = (float)(2*cimg::PI*k/points._width), + X = (float)(radius1*std::cos(_ang)), + Y = (float)(radius2*std::sin(_ang)); + points(k,0) = (int)cimg::round(x0 + (X*ca - Y*sa)); + points(k,1) = (int)cimg::round(y0 + (X*sa + Y*ca)); + } + draw_polygon(points,color,opacity,pattern); + } else { // Filled + cimg_init_scanline(opacity); + const float + ca = std::cos(ang), + sa = -std::sin(ang), + ca2 = ca*ca, + sa2 = sa*sa, + casa = ca*sa, + i1 = 1/cimg::sqr(radius1), + i2 = 1/cimg::sqr(radius2), + t1 = i1*ca2 + i2*sa2, + t2 = (i2 - i1)*casa, + t3 = i2*ca2 + i1*sa2, + t12 = t1*2; + const int + _ymin = (int)std::floor(y0 - radiusM), + _ymax = (int)std::ceil(y0 + radiusM), + ymin = _ymin<0?0:_ymin, + ymax = _ymax>=height()?height() - 1:_ymax; + for (int y = ymin; y<=ymax; ++y) { + const float + Y = y - y0 + 0.5f, + B = 2*t2*Y, + C = t3*Y*Y - 1, + D = B*B - 4*t1*C; + if (D>=0) { + const float sD = std::sqrt(D); + const int + xmin = (int)(x0 + cimg::round((-B - sD)/t12)), + xmax = (int)(x0 + cimg::round((-B + sD)/t12)); + cimg_draw_scanline(xmin,xmax,y,color,opacity,1); + } + } + } + return *this; + } + + //! Draw a filled 2D circle. + /** + \param x0 X-coordinate of the circle center. + \param y0 Y-coordinate of the circle center. + \param radius Circle radius. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \note + - Circle version of the Bresenham's algorithm is used. + **/ + template + CImg& draw_circle(const int x0, const int y0, int radius, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (radius<0 || x0 - radius>=width() || y0 + radius<0 || y0 - radius>=height()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_circle(): Specified color is (null).", + cimg_instance); + if (!radius) return draw_point(x0,y0,color,opacity); + cimg_init_scanline(opacity); + if (y0>=0 && y0=0) { + const int x1 = x0 - x, x2 = x0 + x, y1 = y0 - y, y2 = y0 + y; + if (y1>=0 && y1=0 && y2=0 && y1=0 && y2 + CImg& draw_circle(const int x0, const int y0, int radius, + const tc *const color, const float opacity, + const unsigned int pattern) { + if (pattern!=~0U) return draw_ellipse(x0,y0,radius,radius,0,color,opacity,pattern); + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_circle(): Specified color is (null).", + cimg_instance); + if (radius<0 || x0 - radius>=width() || y0 + radius<0 || y0 - radius>=height()) return *this; + if (!radius) return draw_point(x0,y0,color,opacity); + + draw_point(x0 - radius,y0,color,opacity).draw_point(x0 + radius,y0,color,opacity). + draw_point(x0,y0 - radius,color,opacity).draw_point(x0,y0 + radius,color,opacity); + if (radius==1) return *this; + for (int f = 1 - radius, ddFx = 0, ddFy = -(radius<<1), x = 0, y = radius; x=0) { f+=(ddFy+=2); --y; } + ++x; ++(f+=(ddFx+=2)); + if (x!=y + 1) { + const int x1 = x0 - y, x2 = x0 + y, y1 = y0 - x, y2 = y0 + x, + x3 = x0 - x, x4 = x0 + x, y3 = y0 - y, y4 = y0 + y; + draw_point(x1,y1,color,opacity).draw_point(x1,y2,color,opacity). + draw_point(x2,y1,color,opacity).draw_point(x2,y2,color,opacity); + if (x!=y) + draw_point(x3,y3,color,opacity).draw_point(x4,y4,color,opacity). + draw_point(x4,y3,color,opacity).draw_point(x3,y4,color,opacity); + } + } + return *this; + } + + //! Draw an image. + /** + \param sprite Sprite image. + \param x0 X-coordinate of the sprite position. + \param y0 Y-coordinate of the sprite position. + \param z0 Z-coordinate of the sprite position. + \param c0 C-coordinate of the sprite position. + \param opacity Drawing opacity. + **/ + template + CImg& draw_image(const int x0, const int y0, const int z0, const int c0, + const CImg& sprite, const float opacity=1) { + if (is_empty() || !sprite) return *this; + if (is_overlapped(sprite)) return draw_image(x0,y0,z0,c0,+sprite,opacity); + if (x0==0 && y0==0 && z0==0 && c0==0 && is_sameXYZC(sprite) && opacity>=1 && !is_shared()) + return assign(sprite,false); + const bool bx = x0<0, by = y0<0, bz = z0<0, bc = c0<0; + const int + dx0 = bx?0:x0, dy0 = by?0:y0, dz0 = bz?0:z0, dc0 = bc?0:c0, + sx0 = dx0 - x0, sy0 = dy0 - y0, sz0 = dz0 - z0, sc0 = dc0 - c0, + lx = sprite.width() - sx0 - (x0 + sprite.width()>width()?x0 + sprite.width() - width():0), + ly = sprite.height() - sy0 - (y0 + sprite.height()>height()?y0 + sprite.height() - height():0), + lz = sprite.depth() - sz0 - (z0 + sprite.depth()>depth()?z0 + sprite.depth() - depth():0), + lc = sprite.spectrum() - sc0 - (c0 + sprite.spectrum()>spectrum()?c0 + sprite.spectrum() - spectrum():0); + + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + if (lx>0 && ly>0 && lz>0 && lc>0) { + for (int c = 0; c=1) for (int x = 0; x& draw_image(const int x0, const int y0, const int z0, const int c0, + const CImg& sprite, const float opacity=1) { + if (is_empty() || !sprite) return *this; + if (is_overlapped(sprite)) return draw_image(x0,y0,z0,c0,+sprite,opacity); + if (x0==0 && y0==0 && z0==0 && c0==0 && is_sameXYZC(sprite) && opacity>=1 && !is_shared()) + return assign(sprite,false); + const bool bx = x0<0, by = y0<0, bz = z0<0, bc = c0<0; + const int + dx0 = bx?0:x0, dy0 = by?0:y0, dz0 = bz?0:z0, dc0 = bc?0:c0, + sx0 = dx0 - x0, sy0 = dy0 - y0, sz0 = dz0 - z0, sc0 = dc0 - c0, + lx = sprite.width() - sx0 - (x0 + sprite.width()>width()?x0 + sprite.width() - width():0), + ly = sprite.height() - sy0 - (y0 + sprite.height()>height()?y0 + sprite.height() - height():0), + lz = sprite.depth() - sz0 - (z0 + sprite.depth()>depth()?z0 + sprite.depth() - depth():0), + lc = sprite.spectrum() - sc0 - (c0 + sprite.spectrum()>spectrum()?c0 + sprite.spectrum() - spectrum():0); + const ulongT slx = lx*sizeof(T); + + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + if (lx>0 && ly>0 && lz>0 && lc>0) { + for (int c = 0; c=1) std::memcpy(ptrd,ptrs,slx); + else for (int x = 0; x + CImg& draw_image(const int x0, const int y0, const int z0, + const CImg& sprite, const float opacity=1) { + return draw_image(x0,y0,z0,0,sprite,opacity); + } + + //! Draw an image \overloading. + template + CImg& draw_image(const int x0, const int y0, + const CImg& sprite, const float opacity=1) { + return draw_image(x0,y0,0,sprite,opacity); + } + + //! Draw an image \overloading. + template + CImg& draw_image(const int x0, + const CImg& sprite, const float opacity=1) { + return draw_image(x0,0,sprite,opacity); + } + + //! Draw an image \overloading. + template + CImg& draw_image(const CImg& sprite, const float opacity=1) { + return draw_image(0,sprite,opacity); + } + + //! Draw a masked image. + /** + \param sprite Sprite image. + \param mask Mask image. + \param x0 X-coordinate of the sprite position in the image instance. + \param y0 Y-coordinate of the sprite position in the image instance. + \param z0 Z-coordinate of the sprite position in the image instance. + \param c0 C-coordinate of the sprite position in the image instance. + \param mask_max_value Maximum pixel value of the mask image \c mask. + \param opacity Drawing opacity. + \note + - Pixel values of \c mask set the opacity of the corresponding pixels in \c sprite. + - Dimensions along x,y and z of \p sprite and \p mask must be the same. + **/ + template + CImg& draw_image(const int x0, const int y0, const int z0, const int c0, + const CImg& sprite, const CImg& mask, const float opacity=1, + const float mask_max_value=1) { + if (is_empty() || !sprite || !mask) return *this; + if (is_overlapped(sprite)) return draw_image(x0,y0,z0,c0,+sprite,mask,opacity,mask_max_value); + if (is_overlapped(mask)) return draw_image(x0,y0,z0,c0,sprite,+mask,opacity,mask_max_value); + if (mask._width!=sprite._width || mask._height!=sprite._height || mask._depth!=sprite._depth) + throw CImgArgumentException(_cimg_instance + "draw_image(): Sprite (%u,%u,%u,%u,%p) and mask (%u,%u,%u,%u,%p) have " + "incompatible dimensions.", + cimg_instance, + sprite._width,sprite._height,sprite._depth,sprite._spectrum,sprite._data, + mask._width,mask._height,mask._depth,mask._spectrum,mask._data); + + const bool bx = x0<0, by = y0<0, bz = z0<0, bc = c0<0; + const int + dx0 = bx?0:x0, dy0 = by?0:y0, dz0 = bz?0:z0, dc0 = bc?0:c0, + sx0 = dx0 - x0, sy0 = dy0 - y0, sz0 = dz0 - z0, sc0 = dc0 - c0, + lx = sprite.width() - sx0 - (x0 + sprite.width()>width()?x0 + sprite.width() - width():0), + ly = sprite.height() - sy0 - (y0 + sprite.height()>height()?y0 + sprite.height() - height():0), + lz = sprite.depth() - sz0 - (z0 + sprite.depth()>depth()?z0 + sprite.depth() - depth():0), + lc = sprite.spectrum() - sc0 - (c0 + sprite.spectrum()>spectrum()?c0 + sprite.spectrum() - spectrum():0); + const ulongT msize = mask.size(); + + if (lx>0 && ly>0 && lz>0 && lc>0) { + for (int c = 0; c + CImg& draw_image(const int x0, const int y0, const int z0, + const CImg& sprite, const CImg& mask, const float opacity=1, + const float mask_max_value=1) { + return draw_image(x0,y0,z0,0,sprite,mask,opacity,mask_max_value); + } + + //! Draw a image \overloading. + template + CImg& draw_image(const int x0, const int y0, + const CImg& sprite, const CImg& mask, const float opacity=1, + const float mask_max_value=1) { + return draw_image(x0,y0,0,sprite,mask,opacity,mask_max_value); + } + + //! Draw a image \overloading. + template + CImg& draw_image(const int x0, + const CImg& sprite, const CImg& mask, const float opacity=1, + const float mask_max_value=1) { + return draw_image(x0,0,sprite,mask,opacity,mask_max_value); + } + + //! Draw an image. + template + CImg& draw_image(const CImg& sprite, const CImg& mask, const float opacity=1, + const float mask_max_value=1) { + return draw_image(0,sprite,mask,opacity,mask_max_value); + } + + //! Draw a text string. + /** + \param x0 X-coordinate of the text in the image instance. + \param y0 Y-coordinate of the text in the image instance. + \param text Format of the text ('printf'-style format string). + \param foreground_color Pointer to \c spectrum() consecutive values, defining the foreground drawing color. + \param background_color Pointer to \c spectrum() consecutive values, defining the background drawing color. + \param opacity Drawing opacity. + \param font Font used for drawing text. + **/ + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const tc1 *const foreground_color, const tc2 *const background_color, + const float opacity, const CImgList& font, ...) { + if (!font) return *this; + CImg tmp(2048); + std::va_list ap; va_start(ap,font); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + return _draw_text(x0,y0,tmp,foreground_color,background_color,opacity,font,false); + } + + //! Draw a text string \overloading. + /** + \note A transparent background is used for the text. + **/ + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const tc *const foreground_color, const int, + const float opacity, const CImgList& font, ...) { + if (!font) return *this; + CImg tmp(2048); + std::va_list ap; va_start(ap,font); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + return _draw_text(x0,y0,tmp,foreground_color,(tc*)0,opacity,font,false); + } + + //! Draw a text string \overloading. + /** + \note A transparent foreground is used for the text. + **/ + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const int, const tc *const background_color, + const float opacity, const CImgList& font, ...) { + if (!font) return *this; + CImg tmp(2048); + std::va_list ap; va_start(ap,font); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + return _draw_text(x0,y0,tmp,(tc*)0,background_color,opacity,font,false); + } + + //! Draw a text string \overloading. + /** + \param x0 X-coordinate of the text in the image instance. + \param y0 Y-coordinate of the text in the image instance. + \param text Format of the text ('printf'-style format string). + \param foreground_color Array of spectrum() values of type \c T, + defining the foreground color (0 means 'transparent'). + \param background_color Array of spectrum() values of type \c T, + defining the background color (0 means 'transparent'). + \param opacity Drawing opacity. + \param font_height Height of the text font (exact match for 13,23,53,103, interpolated otherwise). + **/ + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const tc1 *const foreground_color, const tc2 *const background_color, + const float opacity=1, const unsigned int font_height=13, ...) { + if (!font_height) return *this; + CImg tmp(2048); + std::va_list ap; va_start(ap,font_height); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + const CImgList& font = CImgList::font(font_height,true); + _draw_text(x0,y0,tmp,foreground_color,background_color,opacity,font,true); + return *this; + } + + //! Draw a text string \overloading. + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const tc *const foreground_color, const int background_color=0, + const float opacity=1, const unsigned int font_height=13, ...) { + if (!font_height) return *this; + cimg::unused(background_color); + CImg tmp(2048); + std::va_list ap; va_start(ap,font_height); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + return draw_text(x0,y0,"%s",foreground_color,(const tc*)0,opacity,font_height,tmp._data); + } + + //! Draw a text string \overloading. + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const int, const tc *const background_color, + const float opacity=1, const unsigned int font_height=13, ...) { + if (!font_height) return *this; + CImg tmp(2048); + std::va_list ap; va_start(ap,font_height); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + return draw_text(x0,y0,"%s",(tc*)0,background_color,opacity,font_height,tmp._data); + } + + template + CImg& _draw_text(const int x0, const int y0, + const char *const text, + const tc1 *const foreground_color, const tc2 *const background_color, + const float opacity, const CImgList& font, + const bool is_native_font) { + if (!text) return *this; + if (!font) + throw CImgArgumentException(_cimg_instance + "draw_text(): Empty specified font.", + cimg_instance); + + const unsigned int text_length = (unsigned int)std::strlen(text); + const int padding_x = font[0]._height<48?1:font[0]._height<128?(int)std::ceil(font[0]._height/51.0f + 0.745f):4; + unsigned char o_ch, ch = 0; + int x, y, w; + CImg left_paddings(text_length,1,1,1,0); + const CImg empty = CImg::empty(); + + if (is_empty() || is_native_font) { + // Pre-compute necessary size of the image as well as left paddings of each character. + x = y = w = 0; + o_ch = 0; + for (unsigned int i = 0; iw) w = x; x = 0; break; + case '\t' : x+=4*font[(int)' ']._width; break; + case ' ' : x+=font[(int)' ']._width; break; + default : if (ch'9')) || o_ch==';' || o_ch==':' || o_ch=='!') + left_padding = 4*padding_x; + else if (((o_ch=='i' || o_ch=='l' || o_ch=='I' || o_ch=='J' || o_ch=='M' || o_ch=='N') && + ((ch>='0' && ch<='9') || + (ch>='a' && ch<='z' && ch!='v' && ch!='x' && ch!='y') || + (ch>='B' && ch<='Z' && ch!='J' && ch!='T' && ch!='V' && ch!='X' && ch!='Y'))) || + o_ch=='.' || o_ch=='\'' || ch=='\'') + left_padding = padding_x; + else if ((o_ch<'0' || o_ch>'9') && ch!='-') { + const CImg &mask = ch + 256U' ' && o_ch>' ' && mask._height>13) { + const CImg &o_mask = o_ch + 256U13) { + const int w1 = mask.width()>0?o_mask.width() - 1:0, w2 = w1>1?w1 - 1:0, w3 = w2>1?w2 - 1:0; + left_padding = -10; + cimg_forY(mask,k) { + const int + lpad = o_mask(w1,k)>=8?0: + o_mask._width<=2 || o_mask(w2,k)>=8?-1: + o_mask._width<=3 || o_mask(w3,k)>=8?-2:-3, + rpad = mask(0,k)>=8?0: + mask._width<=2 || mask(1,k)>=8?-1: + mask._width<=3 || mask(2,k)>=8?-2:-3; + left_padding = std::max(left_padding,lpad + rpad); + } + } + } + } + left_paddings[i] = left_padding; + } + x+=left_padding + font[ch]._width + padding_x; + o_ch = ch; + } + } + } + if (x!=0 || ch=='\n') { if (x>w) w = x; y+=font[0]._height; } + if (is_empty()) assign(x0 + w,y0 + y,1,is_native_font?1:font[0]._spectrum,(T)0); + } + + // Draw font characters on image. + x = x0; y = y0; + for (unsigned int i = 0; i letter = font[ch]; + if (letter) { + const CImg &mask = ch + 256Uletter._spectrum) + letter.assign(letter.get_resize(-100,-100,1,_spectrum,0,2),false); + const unsigned int cmin = std::min(_spectrum,letter._spectrum); + if (foreground_color) + for (unsigned int c = 0; c& __draw_text(const char *const text, unsigned int &font_size, const int is_down, ...) { + CImg tmp(2048); + std::va_list ap; + va_start(ap,is_down); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + CImg a_label, a_labelmask; + const unsigned char a_labelcolor = 255; + unsigned int ofs = font_size, fs = ofs; + do { // Determine best font size + a_label.assign().draw_text(0,0,"%s",&a_labelcolor,0,1,fs,tmp._data); + if (a_label._width<7*_width/10 && a_label._height>_height/20 && a_label._height<_height/5) { + font_size = fs; break; + } else if ((a_label._width>7*_width/10 || a_label._height>_height/5) && fs>13 && ofs>=fs) { + ofs = fs; fs = std::max(13U,(unsigned int)cimg::round(fs/1.25f)); + } else if (a_label._width<3*_width/10 && a_label._height<_height/20 && fs<64 && ofs<=fs) { + ofs = fs; fs = std::min(64U,(unsigned int)cimg::round(fs*1.25f)); + } else { font_size = fs; break; } + } while (true); + a_label.normalize(0,255); + a_label+=(255 - a_label.get_dilate(3)).normalize(0,80); + a_label.resize(-100,-100,1,3,1); + return draw_image(0,is_down?height() - a_label.height():0,a_label,0.85f); + } + + //! Draw a 2D vector field. + /** + \param flow Image of 2D vectors used as input data. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param sampling Length (in pixels) between each arrow. + \param factor Length factor of each arrow (if <0, computed as a percentage of the maximum length). + \param is_arrow Tells if arrows must be drawn, instead of oriented segments. + \param pattern Used pattern to draw lines. + \note Clipping is supported. + **/ + template + CImg& draw_quiver(const CImg& flow, + const t2 *const color, const float opacity=1, + const unsigned int sampling=25, const float factor=-20, + const bool is_arrow=true, const unsigned int pattern=~0U) { + return draw_quiver(flow,CImg(color,_spectrum,1,1,1,true),opacity,sampling,factor,is_arrow,pattern); + } + + //! Draw a 2D vector field, using a field of colors. + /** + \param flow Image of 2D vectors used as input data. + \param color Image of spectrum()-D vectors corresponding to the color of each arrow. + \param opacity Opacity of the drawing. + \param sampling Length (in pixels) between each arrow. + \param factor Length factor of each arrow (if <0, computed as a percentage of the maximum length). + \param is_arrow Tells if arrows must be drawn, instead of oriented segments. + \param pattern Used pattern to draw lines. + \note Clipping is supported. + **/ + template + CImg& draw_quiver(const CImg& flow, + const CImg& color, const float opacity=1, + const unsigned int sampling=25, const float factor=-20, + const bool is_arrow=true, const unsigned int pattern=~0U) { + if (is_empty()) return *this; + if (!flow || flow._spectrum!=2) + throw CImgArgumentException(_cimg_instance + "draw_quiver(): Invalid dimensions of specified flow (%u,%u,%u,%u,%p).", + cimg_instance, + flow._width,flow._height,flow._depth,flow._spectrum,flow._data); + if (sampling<=0) + throw CImgArgumentException(_cimg_instance + "draw_quiver(): Invalid sampling value %g " + "(should be >0)", + cimg_instance, + sampling); + const bool colorfield = (color._width==flow._width && color._height==flow._height && + color._depth==1 && color._spectrum==_spectrum); + if (is_overlapped(flow)) return draw_quiver(+flow,color,opacity,sampling,factor,is_arrow,pattern); + float vmax,fact; + if (factor<=0) { + float m, M = (float)flow.get_norm(2).max_min(m); + vmax = (float)std::max(cimg::abs(m),cimg::abs(M)); + if (!vmax) vmax = 1; + fact = -factor; + } else { fact = factor; vmax = 1; } + + for (unsigned int y = sampling/2; y<_height; y+=sampling) + for (unsigned int x = sampling/2; x<_width; x+=sampling) { + const unsigned int X = x*flow._width/_width, Y = y*flow._height/_height; + float u = (float)flow(X,Y,0,0)*fact/vmax, v = (float)flow(X,Y,0,1)*fact/vmax; + if (is_arrow) { + const int xx = (int)(x + u), yy = (int)(y + v); + if (colorfield) draw_arrow(x,y,xx,yy,color.get_vector_at(X,Y)._data,opacity,45,sampling/5.f,pattern); + else draw_arrow(x,y,xx,yy,color._data,opacity,45,sampling/5.f,pattern); + } else { + if (colorfield) + draw_line((int)(x - 0.5*u),(int)(y - 0.5*v),(int)(x + 0.5*u),(int)(y + 0.5*v), + color.get_vector_at(X,Y)._data,opacity,pattern); + else draw_line((int)(x - 0.5*u),(int)(y - 0.5*v),(int)(x + 0.5*u),(int)(y + 0.5*v), + color._data,opacity,pattern); + } + } + return *this; + } + + //! Draw a labeled horizontal axis. + /** + \param values_x Values along the horizontal axis. + \param y Y-coordinate of the horizontal axis in the image instance. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern Drawing pattern. + \param font_height Height of the labels (exact match for 13,23,53,103, interpolated otherwise). + \param allow_zero Enable/disable the drawing of label '0' if found. + **/ + template + CImg& draw_axis(const CImg& values_x, const int y, + const tc *const color, const float opacity=1, + const unsigned int pattern=~0U, const unsigned int font_height=13, + const bool allow_zero=true, const float round_x=0) { + if (is_empty()) return *this; + const int yt = (y + 3 + font_height)<_height?y + 3:y - 2 - (int)font_height; + const int siz = (int)values_x.size() - 1; + CImg txt(32); + CImg a_label; + if (siz<=0) { // Degenerated case + draw_line(0,y,_width - 1,y,color,opacity,pattern); + if (!siz) { + cimg_snprintf(txt,txt._width,"%g",round_x?cimg::round((double)*values_x,round_x):(double)*values_x); + a_label.assign().draw_text(0,0,txt,color,(tc*)0,opacity,font_height); + const int + _xt = (width() - a_label.width())/2, + xt = _xt<3?3:_xt + a_label.width()>=width() - 2?width() - 3 - a_label.width():_xt; + draw_point(width()/2,y - 1,color,opacity).draw_point(width()/2,y + 1,color,opacity); + if (allow_zero || *txt!='0' || txt[1]!=0) + draw_text(xt,yt,txt,color,(tc*)0,opacity,font_height); + } + } else { // Regular case + if (values_x[0]=width() - 2?width() - 3 - a_label.width():_xt; + draw_point(xi,y - 1,color,opacity).draw_point(xi,y + 1,color,opacity); + if (allow_zero || *txt!='0' || txt[1]!=0) + draw_text(xt,yt,txt,color,(tc*)0,opacity,font_height); + } + } + return *this; + } + + //! Draw a labeled vertical axis. + /** + \param x X-coordinate of the vertical axis in the image instance. + \param values_y Values along the Y-axis. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern Drawing pattern. + \param font_height Height of the labels (exact match for 13,23,53,103, interpolated otherwise). + \param allow_zero Enable/disable the drawing of label '0' if found. + **/ + template + CImg& draw_axis(const int x, const CImg& values_y, + const tc *const color, const float opacity=1, + const unsigned int pattern=~0U, const unsigned int font_height=13, + const bool allow_zero=true, const float round_y=0) { + if (is_empty()) return *this; + int siz = (int)values_y.size() - 1; + CImg txt(32); + CImg a_label; + if (siz<=0) { // Degenerated case + draw_line(x,0,x,_height - 1,color,opacity,pattern); + if (!siz) { + cimg_snprintf(txt,txt._width,"%g",round_y?cimg::round((double)*values_y,round_y):(double)*values_y); + a_label.assign().draw_text(0,0,txt,color,(tc*)0,opacity,font_height); + const int + _yt = (height() - a_label.height())/2, + yt = _yt<0?0:_yt + a_label.height()>=height()?height() - 1 - a_label.height():_yt, + _xt = x - 2 - a_label.width(), + xt = _xt>=0?_xt:x + 3; + draw_point(x - 1,height()/2,color,opacity).draw_point(x + 1,height()/2,color,opacity); + if (allow_zero || *txt!='0' || txt[1]!=0) + draw_text(xt,yt,txt,color,(tc*)0,opacity,font_height); + } + } else { // Regular case + if (values_y[0]=height()?height() - 1 - a_label.height():_yt, + _xt = x - 2 - a_label.width(), + xt = _xt>=0?_xt:x + 3; + draw_point(x - 1,yi,color,opacity).draw_point(x + 1,yi,color,opacity); + if (allow_zero || *txt!='0' || txt[1]!=0) + draw_text(xt,yt,txt,color,(tc*)0,opacity,font_height); + } + } + return *this; + } + + //! Draw labeled horizontal and vertical axes. + /** + \param values_x Values along the X-axis. + \param values_y Values along the Y-axis. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern_x Drawing pattern for the X-axis. + \param pattern_y Drawing pattern for the Y-axis. + \param font_height Height of the labels (exact match for 13,23,53,103, interpolated otherwise). + \param allow_zero Enable/disable the drawing of label '0' if found. + **/ + template + CImg& draw_axes(const CImg& values_x, const CImg& values_y, + const tc *const color, const float opacity=1, + const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U, + const unsigned int font_height=13, const bool allow_zero=true, + const float round_x=0, const float round_y=0) { + if (is_empty()) return *this; + const CImg nvalues_x(values_x._data,values_x.size(),1,1,1,true); + const int sizx = (int)values_x.size() - 1, wm1 = width() - 1; + if (sizx>=0) { + float ox = (float)*nvalues_x; + for (unsigned int x = sizx?1U:0U; x<_width; ++x) { + const float nx = (float)nvalues_x._linear_atX((float)x*sizx/wm1); + if (nx*ox<=0) { + draw_axis(nx==0?x:x - 1,values_y,color,opacity,pattern_y,font_height,allow_zero,round_y); + break; + } + ox = nx; + } + } + const CImg nvalues_y(values_y._data,values_y.size(),1,1,1,true); + const int sizy = (int)values_y.size() - 1, hm1 = height() - 1; + if (sizy>0) { + float oy = (float)nvalues_y[0]; + for (unsigned int y = sizy?1U:0U; y<_height; ++y) { + const float ny = (float)nvalues_y._linear_atX((float)y*sizy/hm1); + if (ny*oy<=0) { + draw_axis(values_x,ny==0?y:y - 1,color,opacity,pattern_x,font_height,allow_zero,round_x); + break; + } + oy = ny; + } + } + return *this; + } + + //! Draw labeled horizontal and vertical axes \overloading. + template + CImg& draw_axes(const float x0, const float x1, const float y0, const float y1, + const tc *const color, const float opacity=1, + const int subdivisionx=-60, const int subdivisiony=-60, + const float precisionx=0, const float precisiony=0, + const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U, + const unsigned int font_height=13) { + if (is_empty()) return *this; + const bool allow_zero = (x0*x1>0) || (y0*y1>0); + const float + dx = cimg::abs(x1 - x0), dy = cimg::abs(y1 - y0), + px = dx<=0?1:precisionx==0?(float)std::pow(10.,(int)std::log10(dx) - 2.):precisionx, + py = dy<=0?1:precisiony==0?(float)std::pow(10.,(int)std::log10(dy) - 2.):precisiony; + if (x0!=x1 && y0!=y1) + draw_axes(CImg::sequence(subdivisionx>0?subdivisionx:1-width()/subdivisionx,x0,x1), + CImg::sequence(subdivisiony>0?subdivisiony:1-height()/subdivisiony,y0,y1), + color,opacity,pattern_x,pattern_y,font_height,allow_zero,px,py); + else if (x0==x1 && y0!=y1) + draw_axis((int)x0,CImg::sequence(subdivisiony>0?subdivisiony:1-height()/subdivisiony,y0,y1), + color,opacity,pattern_y,font_height,py); + else if (x0!=x1 && y0==y1) + draw_axis(CImg::sequence(subdivisionx>0?subdivisionx:1-width()/subdivisionx,x0,x1),(int)y0, + color,opacity,pattern_x,font_height,px); + return *this; + } + + //! Draw 2D grid. + /** + \param values_x X-coordinates of the vertical lines. + \param values_y Y-coordinates of the horizontal lines. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern_x Drawing pattern for vertical lines. + \param pattern_y Drawing pattern for horizontal lines. + **/ + template + CImg& draw_grid(const CImg& values_x, const CImg& values_y, + const tc *const color, const float opacity=1, + const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U) { + if (is_empty()) return *this; + if (values_x) cimg_foroff(values_x,x) { + const int xi = (int)values_x[x]; + if (xi>=0 && xi=0 && yi + CImg& draw_grid(const float delta_x, const float delta_y, + const float offsetx, const float offsety, + const bool invertx, const bool inverty, + const tc *const color, const float opacity=1, + const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U) { + if (is_empty()) return *this; + CImg seqx, seqy; + if (delta_x!=0) { + const float dx = delta_x>0?delta_x:_width*-delta_x/100; + const unsigned int nx = (unsigned int)(_width/dx); + seqx = CImg::sequence(1 + nx,0,(unsigned int)(dx*nx)); + if (offsetx) cimg_foroff(seqx,x) seqx(x) = (unsigned int)cimg::mod(seqx(x) + offsetx,(float)_width); + if (invertx) cimg_foroff(seqx,x) seqx(x) = _width - 1 - seqx(x); + } + if (delta_y!=0) { + const float dy = delta_y>0?delta_y:_height*-delta_y/100; + const unsigned int ny = (unsigned int)(_height/dy); + seqy = CImg::sequence(1 + ny,0,(unsigned int)(dy*ny)); + if (offsety) cimg_foroff(seqy,y) seqy(y) = (unsigned int)cimg::mod(seqy(y) + offsety,(float)_height); + if (inverty) cimg_foroff(seqy,y) seqy(y) = _height - 1 - seqy(y); + } + return draw_grid(seqx,seqy,color,opacity,pattern_x,pattern_y); + } + + //! Draw 1D graph. + /** + \param data Image containing the graph values I = f(x). + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + + \param plot_type Define the type of the plot: + - 0 = No plot. + - 1 = Plot using segments. + - 2 = Plot using cubic splines. + - 3 = Plot with bars. + \param vertex_type Define the type of points: + - 0 = No points. + - 1 = Point. + - 2 = Straight cross. + - 3 = Diagonal cross. + - 4 = Filled circle. + - 5 = Outlined circle. + - 6 = Square. + - 7 = Diamond. + \param ymin Lower bound of the y-range. + \param ymax Upper bound of the y-range. + \param pattern Drawing pattern. + \note + - if \c ymin==ymax==0, the y-range is computed automatically from the input samples. + **/ + template + CImg& draw_graph(const CImg& data, + const tc *const color, const float opacity=1, + const unsigned int plot_type=1, const int vertex_type=1, + const double ymin=0, const double ymax=0, const unsigned int pattern=~0U) { + if (is_empty() || _height<=1) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_graph(): Specified color is (null).", + cimg_instance); + + // Create shaded colors for displaying bar plots. + CImg color1, color2; + if (plot_type==3) { + color1.assign(_spectrum); color2.assign(_spectrum); + cimg_forC(*this,c) { + color1[c] = (tc)std::min((float)cimg::type::max(),(float)color[c]*1.2f); + color2[c] = (tc)(color[c]*0.4f); + } + } + + // Compute min/max and normalization factors. + const ulongT + siz = data.size(), + _siz1 = siz - (plot_type!=3), + siz1 = _siz1?_siz1:1; + const unsigned int + _width1 = _width - (plot_type!=3), + width1 = _width1?_width1:1; + double m = ymin, M = ymax; + if (ymin==ymax) m = (double)data.max_min(M); + if (m==M) { --m; ++M; } + const float ca = (float)(M-m)/(_height - 1); + bool init_hatch = true; + + // Draw graph edges + switch (plot_type%4) { + case 1 : { // Segments + int oX = 0, oY = (int)cimg::round((data[0] - m)/ca); + if (siz==1) { + const int Y = (int)cimg::round((*data - m)/ca); + draw_line(0,Y,width() - 1,Y,color,opacity,pattern); + } else { + const float fx = (float)_width/siz1; + for (ulongT off = 1; off ndata(data._data,siz,1,1,1,true); + int oY = (int)cimg::round((data[0] - m)/ca); + cimg_forX(*this,x) { + const int Y = (int)cimg::round((ndata._cubic_atX((float)x*siz1/width1)-m)/ca); + if (x>0) draw_line(x,oY,x + 1,Y,color,opacity,pattern,init_hatch); + init_hatch = false; + oY = Y; + } + } break; + case 3 : { // Bars + const int Y0 = (int)cimg::round(-m/ca); + const float fx = (float)_width/siz1; + int oX = 0; + cimg_foroff(data,off) { + const int + X = (int)cimg::round((off + 1)*fx) - 1, + Y = (int)cimg::round((data[off] - m)/ca); + draw_rectangle(oX,Y0,X,Y,color,opacity). + draw_line(oX,Y,oX,Y0,color2.data(),opacity). + draw_line(oX,Y0,X,Y0,Y<=Y0?color2.data():color1.data(),opacity). + draw_line(X,Y,X,Y0,color1.data(),opacity). + draw_line(oX,Y,X,Y,Y<=Y0?color1.data():color2.data(),opacity); + oX = X + 1; + } + } break; + default : break; // No edges + } + + // Draw graph points + const unsigned int wb2 = plot_type==3?_width1/(2*siz):0; + const float fx = (float)_width1/siz1; + switch (vertex_type%8) { + case 1 : { // Point + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_point(X,Y,color,opacity); + } + } break; + case 2 : { // Straight Cross + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_line(X - 3,Y,X + 3,Y,color,opacity).draw_line(X,Y - 3,X,Y + 3,color,opacity); + } + } break; + case 3 : { // Diagonal Cross + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_line(X - 3,Y - 3,X + 3,Y + 3,color,opacity).draw_line(X - 3,Y + 3,X + 3,Y - 3,color,opacity); + } + } break; + case 4 : { // Filled Circle + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_circle(X,Y,3,color,opacity); + } + } break; + case 5 : { // Outlined circle + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_circle(X,Y,3,color,opacity,~0U); + } + } break; + case 6 : { // Square + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_rectangle(X - 3,Y - 3,X + 3,Y + 3,color,opacity,~0U); + } + } break; + case 7 : { // Diamond + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_line(X,Y - 4,X + 4,Y,color,opacity). + draw_line(X + 4,Y,X,Y + 4,color,opacity). + draw_line(X,Y + 4,X - 4,Y,color,opacity). + draw_line(X - 4,Y,X,Y - 4,color,opacity); + } + } break; + default : break; // No points + } + return *this; + } + + bool _draw_fill(const int x, const int y, const int z, + const CImg& ref, const float tolerance2) const { + const T *ptr1 = data(x,y,z), *ptr2 = ref._data; + const unsigned long off = _width*_height*_depth; + float diff = 0; + cimg_forC(*this,c) { diff += cimg::sqr(*ptr1 - *(ptr2++)); ptr1+=off; } + return diff<=tolerance2; + } + + //! Draw filled 3D region with the flood fill algorithm. + /** + \param x0 X-coordinate of the starting point of the region to fill. + \param y0 Y-coordinate of the starting point of the region to fill. + \param z0 Z-coordinate of the starting point of the region to fill. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param[out] region Image that will contain the mask of the filled region mask, as an output. + \param tolerance Tolerance concerning neighborhood values. + \param opacity Opacity of the drawing. + \param is_high_connectivity Tells if 8-connexity must be used. + \return \c region is initialized with the binary mask of the filled region. + **/ + template + CImg& draw_fill(const int x0, const int y0, const int z0, + const tc *const color, const float opacity, + CImg ®ion, + const float tolerance = 0, + const bool is_high_connectivity = false) { +#define _draw_fill_push(x,y,z) if (N>=stack._width) stack.resize(2*N + 1,1,1,3,0); \ + stack[N] = x; stack(N,1) = y; stack(N++,2) = z +#define _draw_fill_pop(x,y,z) x = stack[--N]; y = stack(N,1); z = stack(N,2) +#define _draw_fill_is_inside(x,y,z) !_region(x,y,z) && _draw_fill(x,y,z,ref,tolerance2) + + if (!containsXYZC(x0,y0,z0,0)) return *this; + const float nopacity = cimg::abs((float)opacity), copacity = 1 - std::max((float)opacity,0.f); + const float tolerance2 = cimg::sqr(tolerance); + const CImg ref = get_vector_at(x0,y0,z0); + CImg stack(256,1,1,3); + CImg _region(_width,_height,_depth,1,0); + unsigned int N = 0; + int x, y, z; + + _draw_fill_push(x0,y0,z0); + while (N>0) { + _draw_fill_pop(x,y,z); + if (!_region(x,y,z)) { + const int yp = y - 1, yn = y + 1, zp = z - 1, zn = z + 1; + int xl = x, xr = x; + + // Using these booleans reduces the number of pushes drastically. + bool is_yp = false, is_yn = false, is_zp = false, is_zn = false; + for (int step = -1; step<2; step+=2) { + while (x>=0 && x=0 && _draw_fill_is_inside(x,yp,z)) { + if (!is_yp) { _draw_fill_push(x,yp,z); is_yp = true; } + } else is_yp = false; + if (yn1) { + if (zp>=0 && _draw_fill_is_inside(x,y,zp)) { + if (!is_zp) { _draw_fill_push(x,y,zp); is_zp = true; } + } else is_zp = false; + if (zn=0 && !is_yp) { + if (xp>=0 && _draw_fill_is_inside(xp,yp,z)) { + _draw_fill_push(xp,yp,z); if (step<0) is_yp = true; + } + if (xn0) is_yp = true; + } + } + if (yn=0 && _draw_fill_is_inside(xp,yn,z)) { + _draw_fill_push(xp,yn,z); if (step<0) is_yn = true; + } + if (xn0) is_yn = true; + } + } + if (depth()>1) { + if (zp>=0 && !is_zp) { + if (xp>=0 && _draw_fill_is_inside(xp,y,zp)) { + _draw_fill_push(xp,y,zp); if (step<0) is_zp = true; + } + if (xn0) is_zp = true; + } + + if (yp>=0 && !is_yp) { + if (_draw_fill_is_inside(x,yp,zp)) { _draw_fill_push(x,yp,zp); } + if (xp>=0 && _draw_fill_is_inside(xp,yp,zp)) { _draw_fill_push(xp,yp,zp); } + if (xn=0 && _draw_fill_is_inside(xp,yn,zp)) { _draw_fill_push(xp,yn,zp); } + if (xn=0 && _draw_fill_is_inside(xp,y,zn)) { + _draw_fill_push(xp,y,zn); if (step<0) is_zn = true; + } + if (xn0) is_zn = true; + } + + if (yp>=0 && !is_yp) { + if (_draw_fill_is_inside(x,yp,zn)) { _draw_fill_push(x,yp,zn); } + if (xp>=0 && _draw_fill_is_inside(xp,yp,zn)) { _draw_fill_push(xp,yp,zn); } + if (xn=0 && _draw_fill_is_inside(xp,yn,zn)) { _draw_fill_push(xp,yn,zn); } + if (xn + CImg& draw_fill(const int x0, const int y0, const int z0, + const tc *const color, const float opacity=1, + const float tolerance=0, const bool is_high_connexity=false) { + CImg tmp; + return draw_fill(x0,y0,z0,color,opacity,tmp,tolerance,is_high_connexity); + } + + //! Draw filled 2D region with the flood fill algorithm \simplification. + template + CImg& draw_fill(const int x0, const int y0, + const tc *const color, const float opacity=1, + const float tolerance=0, const bool is_high_connexity=false) { + CImg tmp; + return draw_fill(x0,y0,0,color,opacity,tmp,tolerance,is_high_connexity); + } + + //! Draw a random plasma texture. + /** + \param alpha Alpha-parameter. + \param beta Beta-parameter. + \param scale Scale-parameter. + \note Use the mid-point algorithm to render. + **/ + CImg& draw_plasma(const float alpha=1, const float beta=0, const unsigned int scale=8) { + if (is_empty()) return *this; + const int w = width(), h = height(); + const Tfloat m = (Tfloat)cimg::type::min(), M = (Tfloat)cimg::type::max(); + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + cimg_forZC(*this,z,c) { + CImg ref = get_shared_slice(z,c); + for (int delta = 1<1; delta>>=1) { + const int delta2 = delta>>1; + const float r = alpha*delta + beta; + + // Square step. + for (int y0 = 0; y0M?M:val); + } + + // Diamond steps. + for (int y = -delta2; yM?M:val); + } + for (int y0 = 0; y0M?M:val); + } + for (int y = -delta2; yM?M:val); + } + } + } + cimg::srand(rng); + return *this; + } + + //! Draw a quadratic Mandelbrot or Julia 2D fractal. + /** + \param x0 X-coordinate of the upper-left pixel. + \param y0 Y-coordinate of the upper-left pixel. + \param x1 X-coordinate of the lower-right pixel. + \param y1 Y-coordinate of the lower-right pixel. + \param colormap Colormap. + \param opacity Drawing opacity. + \param z0r Real part of the upper-left fractal vertex. + \param z0i Imaginary part of the upper-left fractal vertex. + \param z1r Real part of the lower-right fractal vertex. + \param z1i Imaginary part of the lower-right fractal vertex. + \param iteration_max Maximum number of iterations for each estimated point. + \param is_normalized_iteration Tells if iterations are normalized. + \param is_julia_set Tells if the Mandelbrot or Julia set is rendered. + \param param_r Real part of the Julia set parameter. + \param param_i Imaginary part of the Julia set parameter. + \note Fractal rendering is done by the Escape Time Algorithm. + **/ + template + CImg& draw_mandelbrot(const int x0, const int y0, const int x1, const int y1, + const CImg& colormap, const float opacity=1, + const double z0r=-2, const double z0i=-2, const double z1r=2, const double z1i=2, + const unsigned int iteration_max=255, + const bool is_normalized_iteration=false, + const bool is_julia_set=false, + const double param_r=0, const double param_i=0) { + if (is_empty()) return *this; + CImg palette; + if (colormap) palette.assign(colormap._data,colormap.size()/colormap._spectrum,1,1,colormap._spectrum,true); + if (palette && palette._spectrum!=_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_mandelbrot(): Instance and specified colormap (%u,%u,%u,%u,%p) have " + "incompatible dimensions.", + cimg_instance, + colormap._width,colormap._height,colormap._depth,colormap._spectrum,colormap._data); + + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f), ln2 = (float)std::log(2.); + const int + _x0 = cimg::cut(x0,0,width() - 1), + _y0 = cimg::cut(y0,0,height() - 1), + _x1 = cimg::cut(x1,0,width() - 1), + _y1 = cimg::cut(y1,0,height() - 1); + + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if((1 + _x1 - _x0)*(1 + _y1 - _y0)>=(cimg_openmp_sizefactor)*2048)) + for (int q = _y0; q<=_y1; ++q) + for (int p = _x0; p<=_x1; ++p) { + unsigned int iteration = 0; + const double x = z0r + p*(z1r-z0r)/_width, y = z0i + q*(z1i-z0i)/_height; + double zr, zi, cr, ci; + if (is_julia_set) { zr = x; zi = y; cr = param_r; ci = param_i; } + else { zr = param_r; zi = param_i; cr = x; ci = y; } + for (iteration=1; zr*zr + zi*zi<=4 && iteration<=iteration_max; ++iteration) { + const double temp = zr*zr - zi*zi + cr; + zi = 2*zr*zi + ci; + zr = temp; + } + if (iteration>iteration_max) { + if (palette) { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)palette(0,c); + else cimg_forC(*this,c) (*this)(p,q,0,c) = (T)(palette(0,c)*nopacity + (*this)(p,q,0,c)*copacity); + } else { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)0; + else cimg_forC(*this,c) (*this)(p,q,0,c) = (T)((*this)(p,q,0,c)*copacity); + } + } else if (is_normalized_iteration) { + const float + normz = (float)cimg::abs(zr*zr + zi*zi), + niteration = (float)(iteration + 1 - std::log(std::log(normz))/ln2); + if (palette) { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)palette._linear_atX(niteration,c); + else cimg_forC(*this,c) + (*this)(p,q,0,c) = (T)(palette._linear_atX(niteration,c)*nopacity + (*this)(p,q,0,c)*copacity); + } else { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)niteration; + else cimg_forC(*this,c) (*this)(p,q,0,c) = (T)(niteration*nopacity + (*this)(p,q,0,c)*copacity); + } + } else { + if (palette) { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)palette._atX(iteration,c); + else cimg_forC(*this,c) (*this)(p,q,0,c) = (T)(palette(iteration,c)*nopacity + (*this)(p,q,0,c)*copacity); + } else { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)iteration; + else cimg_forC(*this,c) (*this)(p,q,0,c) = (T)(iteration*nopacity + (*this)(p,q,0,c)*copacity); + } + } + } + return *this; + } + + //! Draw a quadratic Mandelbrot or Julia 2D fractal \overloading. + template + CImg& draw_mandelbrot(const CImg& colormap, const float opacity=1, + const double z0r=-2, const double z0i=-2, const double z1r=2, const double z1i=2, + const unsigned int iteration_max=255, + const bool is_normalized_iteration=false, + const bool is_julia_set=false, + const double param_r=0, const double param_i=0) { + return draw_mandelbrot(0,0,_width - 1,_height - 1,colormap,opacity, + z0r,z0i,z1r,z1i,iteration_max,is_normalized_iteration,is_julia_set,param_r,param_i); + } + + //! Draw a 1D gaussian function. + /** + \param xc X-coordinate of the gaussian center. + \param sigma Standard variation of the gaussian distribution. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_gaussian(const float xc, const float sigma, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_gaussian(): Specified color is (null).", + cimg_instance); + const float sigma2 = 2*sigma*sigma, nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + const ulongT whd = (ulongT)_width*_height*_depth; + const tc *col = color; + cimg_forX(*this,x) { + const float dx = (x - xc), val = (float)std::exp(-dx*dx/sigma2); + T *ptrd = data(x,0,0,0); + if (opacity>=1) cimg_forC(*this,c) { *ptrd = (T)(val*(*col++)); ptrd+=whd; } + else cimg_forC(*this,c) { *ptrd = (T)(nopacity*val*(*col++) + *ptrd*copacity); ptrd+=whd; } + col-=_spectrum; + } + return *this; + } + + //! Draw a 2D gaussian function. + /** + \param xc X-coordinate of the gaussian center. + \param yc Y-coordinate of the gaussian center. + \param tensor Covariance matrix (must be 2x2). + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_gaussian(const float xc, const float yc, const CImg& tensor, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (tensor._width!=2 || tensor._height!=2 || tensor._depth!=1 || tensor._spectrum!=1) + throw CImgArgumentException(_cimg_instance + "draw_gaussian(): Specified tensor (%u,%u,%u,%u,%p) is not a 2x2 matrix.", + cimg_instance, + tensor._width,tensor._height,tensor._depth,tensor._spectrum,tensor._data); + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_gaussian(): Specified color is (null).", + cimg_instance); + typedef typename CImg::Tfloat tfloat; + const CImg invT = tensor.get_invert(), invT2 = (invT*invT)/=-2.; + const tfloat a = invT2(0,0), b = 2*invT2(1,0), c = invT2(1,1); + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + const ulongT whd = (ulongT)_width*_height*_depth; + const tc *col = color; + float dy = -yc; + cimg_forY(*this,y) { + float dx = -xc; + cimg_forX(*this,x) { + const float val = (float)std::exp(a*dx*dx + b*dx*dy + c*dy*dy); + T *ptrd = data(x,y,0,0); + if (opacity>=1) cimg_forC(*this,k) { *ptrd = (T)(val*(*col++)); ptrd+=whd; } + else cimg_forC(*this,k) { *ptrd = (T)(nopacity*val*(*col++) + *ptrd*copacity); ptrd+=whd; } + col-=_spectrum; + ++dx; + } + ++dy; + } + return *this; + } + + //! Draw a 2D gaussian function \overloading. + template + CImg& draw_gaussian(const int xc, const int yc, const float r1, const float r2, const float ru, const float rv, + const tc *const color, const float opacity=1) { + const double + a = r1*ru*ru + r2*rv*rv, + b = (r1-r2)*ru*rv, + c = r1*rv*rv + r2*ru*ru; + const CImg tensor(2,2,1,1, a,b,b,c); + return draw_gaussian(xc,yc,tensor,color,opacity); + } + + //! Draw a 2D gaussian function \overloading. + template + CImg& draw_gaussian(const float xc, const float yc, const float sigma, + const tc *const color, const float opacity=1) { + return draw_gaussian(xc,yc,CImg::diagonal(sigma,sigma),color,opacity); + } + + //! Draw a 3D gaussian function \overloading. + template + CImg& draw_gaussian(const float xc, const float yc, const float zc, const CImg& tensor, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + typedef typename CImg::Tfloat tfloat; + if (tensor._width!=3 || tensor._height!=3 || tensor._depth!=1 || tensor._spectrum!=1) + throw CImgArgumentException(_cimg_instance + "draw_gaussian(): Specified tensor (%u,%u,%u,%u,%p) is not a 3x3 matrix.", + cimg_instance, + tensor._width,tensor._height,tensor._depth,tensor._spectrum,tensor._data); + + const CImg invT = tensor.get_invert(), invT2 = (invT*invT)/=-2.; + const tfloat a = invT2(0,0), b = 2*invT2(1,0), c = 2*invT2(2,0), d = invT2(1,1), e = 2*invT2(2,1), f = invT2(2,2); + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + const ulongT whd = (ulongT)_width*_height*_depth; + const tc *col = color; + cimg_forXYZ(*this,x,y,z) { + const float + dx = (x - xc), dy = (y - yc), dz = (z - zc), + val = (float)std::exp(a*dx*dx + b*dx*dy + c*dx*dz + d*dy*dy + e*dy*dz + f*dz*dz); + T *ptrd = data(x,y,z,0); + if (opacity>=1) cimg_forC(*this,k) { *ptrd = (T)(val*(*col++)); ptrd+=whd; } + else cimg_forC(*this,k) { *ptrd = (T)(nopacity*val*(*col++) + *ptrd*copacity); ptrd+=whd; } + col-=_spectrum; + } + return *this; + } + + //! Draw a 3D gaussian function \overloading. + template + CImg& draw_gaussian(const float xc, const float yc, const float zc, const float sigma, + const tc *const color, const float opacity=1) { + return draw_gaussian(xc,yc,zc,CImg::diagonal(sigma,sigma,sigma),color,opacity); + } + + //! Draw a 3D object. + /** + \param x0 X-coordinate of the 3D object position + \param y0 Y-coordinate of the 3D object position + \param z0 Z-coordinate of the 3D object position + \param vertices Image Nx3 describing 3D point coordinates + \param primitives List of P primitives + \param colors List of P color (or textures) + \param opacities Image or list of P opacities + \param render_type d Render type (0=Points, 1=Lines, 2=Faces (no light), 3=Faces (flat), 4=Faces(Gouraud) + \param is_double_sided Tells if object faces have two sides or are oriented. + \param focale length of the focale (0 for parallel projection) + \param lightx X-coordinate of the light + \param lighty Y-coordinate of the light + \param lightz Z-coordinate of the light + \param specular_lightness Amount of specular light. + \param specular_shininess Shininess of the object + \param g_opacity Global opacity of the object. + **/ + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImg& opacities, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,opacities,render_type, + is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + //! Draw a 3D object \simplification. + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImg& opacities, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return _draw_object3d(0,zbuffer,x0,y0,z0,vertices,primitives,colors,opacities, + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,1); + } + +#ifdef cimg_use_board + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImg& opacities, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(board,x0,y0,z0,vertices,primitives,colors,opacities,render_type, + is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImg& opacities, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return _draw_object3d((void*)&board,zbuffer,x0,y0,z0,vertices,primitives,colors,opacities, + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,1); + } +#endif + + //! Draw a 3D object \simplification. + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImgList& opacities, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,opacities,render_type, + is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + //! Draw a 3D object \simplification. + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImgList& opacities, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return _draw_object3d(0,zbuffer,x0,y0,z0,vertices,primitives,colors,opacities, + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,1); + } + +#ifdef cimg_use_board + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImgList& opacities, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(board,x0,y0,z0,vertices,primitives,colors,opacities,render_type, + is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImgList& opacities, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return _draw_object3d((void*)&board,zbuffer,x0,y0,z0,vertices,primitives,colors,opacities, + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,1); + } +#endif + + //! Draw a 3D object \simplification. + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,CImg::const_empty(), + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + //! Draw a 3D object \simplification. + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,CImg::const_empty(), + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,zbuffer); + } + +#ifdef cimg_use_board + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,CImg::const_empty(), + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,CImg::const_empty(), + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,zbuffer); + } +#endif + + template + static float __draw_object3d(const CImgList& opacities, const unsigned int n_primitive, CImg& opacity) { + if (n_primitive>=opacities._width || opacities[n_primitive].is_empty()) { opacity.assign(); return 1; } + if (opacities[n_primitive].size()==1) { opacity.assign(); return opacities(n_primitive,0); } + opacity.assign(opacities[n_primitive],true); + return 1.f; + } + + template + static float __draw_object3d(const CImg& opacities, const unsigned int n_primitive, CImg& opacity) { + opacity.assign(); + return n_primitive>=opacities._width?1.f:(float)opacities[n_primitive]; + } + + template + static float ___draw_object3d(const CImgList& opacities, const unsigned int n_primitive) { + return n_primitive + static float ___draw_object3d(const CImg& opacities, const unsigned int n_primitive) { + return n_primitive + CImg& _draw_object3d(void *const pboard, CImg& zbuffer, + const float X, const float Y, const float Z, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, const float sprite_scale) { + typedef typename cimg::superset2::type tpfloat; + typedef typename to::value_type _to; + if (is_empty() || !vertices || !primitives) return *this; + CImg error_message(1024); + if (!vertices.is_object3d(primitives,colors,opacities,false,error_message)) + throw CImgArgumentException(_cimg_instance + "draw_object3d(): Invalid specified 3D object (%u,%u) (%s).", + cimg_instance,vertices._width,primitives._width,error_message.data()); +#ifndef cimg_use_board + if (pboard) return *this; +#endif + if (render_type==5) cimg::mutex(10); // Static variable used in this case, breaks thread-safety + + const float + nspec = 1 - (specular_lightness<0.f?0.f:(specular_lightness>1.f?1.f:specular_lightness)), + nspec2 = 1 + (specular_shininess<0.f?0.f:specular_shininess), + nsl1 = (nspec2 - 1)/cimg::sqr(nspec - 1), + nsl2 = 1 - 2*nsl1*nspec, + nsl3 = nspec2 - nsl1 - nsl2; + + // Create light texture for phong-like rendering. + CImg light_texture; + if (render_type==5) { + if (colors._width>primitives._width) { + static CImg default_light_texture; + static const tc *lptr = 0; + static tc ref_values[64] = { 0 }; + const CImg& img = colors.back(); + bool is_same_texture = (lptr==img._data); + if (is_same_texture) + for (unsigned int r = 0, j = 0; j<8; ++j) + for (unsigned int i = 0; i<8; ++i) + if (ref_values[r++]!=img(i*img._width/9,j*img._height/9,0,(i + j)%img._spectrum)) { + is_same_texture = false; break; + } + if (!is_same_texture || default_light_texture._spectrum<_spectrum) { + (default_light_texture.assign(img,false)/=255).resize(-100,-100,1,_spectrum); + lptr = colors.back().data(); + for (unsigned int r = 0, j = 0; j<8; ++j) + for (unsigned int i = 0; i<8; ++i) + ref_values[r++] = img(i*img._width/9,j*img._height/9,0,(i + j)%img._spectrum); + } + light_texture.assign(default_light_texture,true); + } else { + static CImg default_light_texture; + static float olightx = 0, olighty = 0, olightz = 0, ospecular_shininess = 0; + if (!default_light_texture || + lightx!=olightx || lighty!=olighty || lightz!=olightz || + specular_shininess!=ospecular_shininess || default_light_texture._spectrum<_spectrum) { + default_light_texture.assign(512,512); + const float + dlx = lightx - X, + dly = lighty - Y, + dlz = lightz - Z, + nl = cimg::hypot(dlx,dly,dlz), + nlx = (default_light_texture._width - 1)/2*(1 + dlx/nl), + nly = (default_light_texture._height - 1)/2*(1 + dly/nl), + white[] = { 1 }; + default_light_texture.draw_gaussian(nlx,nly,default_light_texture._width/3.f,white); + cimg_forXY(default_light_texture,x,y) { + const float factor = default_light_texture(x,y); + if (factor>nspec) default_light_texture(x,y) = std::min(2.f,nsl1*factor*factor + nsl2*factor + nsl3); + } + default_light_texture.resize(-100,-100,1,_spectrum); + olightx = lightx; olighty = lighty; olightz = lightz; ospecular_shininess = specular_shininess; + } + light_texture.assign(default_light_texture,true); + } + } + + // Compute 3D to 2D projection. + CImg projections(vertices._width,2); + tpfloat parallzmin = cimg::type::max(); + const float absfocale = focale?cimg::abs(focale):0; + if (absfocale) { + cimg_pragma_openmp(parallel for cimg_openmp_if_size(projections.size(),4096)) + cimg_forX(projections,l) { // Perspective projection + const tpfloat + x = (tpfloat)vertices(l,0), + y = (tpfloat)vertices(l,1), + z = (tpfloat)vertices(l,2); + const tpfloat projectedz = z + Z + absfocale; + projections(l,1) = Y + absfocale*y/projectedz; + projections(l,0) = X + absfocale*x/projectedz; + } + } else { + cimg_pragma_openmp(parallel for cimg_openmp_if_size(projections.size(),4096)) + cimg_forX(projections,l) { // Parallel projection + const tpfloat + x = (tpfloat)vertices(l,0), + y = (tpfloat)vertices(l,1), + z = (tpfloat)vertices(l,2); + if (z visibles(primitives._width,1,1,1,~0U); + CImg zrange(primitives._width); + const tpfloat zmin = absfocale?(tpfloat)(1.5f - absfocale):cimg::type::min(); + bool is_forward = zbuffer?true:false; + + cimg_pragma_openmp(parallel for cimg_openmp_if_size(primitives.size(),4096)) + cimglist_for(primitives,l) { + const CImg& primitive = primitives[l]; + switch (primitive.size()) { + case 1 : { // Point + CImg<_to> _opacity; + __draw_object3d(opacities,l,_opacity); + if (l<=colors.width() && (colors[l].size()!=_spectrum || _opacity)) is_forward = false; + const unsigned int i0 = (unsigned int)primitive(0); + const tpfloat z0 = Z + vertices(i0,2); + if (z0>zmin) { + visibles(l) = (unsigned int)l; + zrange(l) = z0; + } + } break; + case 5 : { // Sphere + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1); + const tpfloat + Xc = 0.5f*((float)vertices(i0,0) + (float)vertices(i1,0)), + Yc = 0.5f*((float)vertices(i0,1) + (float)vertices(i1,1)), + Zc = 0.5f*((float)vertices(i0,2) + (float)vertices(i1,2)), + _zc = Z + Zc, + zc = _zc + _focale, + xc = X + Xc*(absfocale?absfocale/zc:1), + yc = Y + Yc*(absfocale?absfocale/zc:1), + radius = 0.5f*cimg::hypot(vertices(i1,0) - vertices(i0,0), + vertices(i1,1) - vertices(i0,1), + vertices(i1,2) - vertices(i0,2))*(absfocale?absfocale/zc:1), + xm = xc - radius, + ym = yc - radius, + xM = xc + radius, + yM = yc + radius; + if (xM>=0 && xm<_width && yM>=0 && ym<_height && _zc>zmin) { + visibles(l) = (unsigned int)l; + zrange(l) = _zc; + } + is_forward = false; + } break; + case 2 : case 6 : { // Segment + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1); + const tpfloat + x0 = projections(i0,0), y0 = projections(i0,1), z0 = Z + vertices(i0,2), + x1 = projections(i1,0), y1 = projections(i1,1), z1 = Z + vertices(i1,2); + tpfloat xm, xM, ym, yM; + if (x0=0 && xm<_width && yM>=0 && ym<_height && z0>zmin && z1>zmin) { + visibles(l) = (unsigned int)l; + zrange(l) = (z0 + z1)/2; + } + } break; + case 3 : case 9 : { // Triangle + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2); + const tpfloat + x0 = projections(i0,0), y0 = projections(i0,1), z0 = Z + vertices(i0,2), + x1 = projections(i1,0), y1 = projections(i1,1), z1 = Z + vertices(i1,2), + x2 = projections(i2,0), y2 = projections(i2,1), z2 = Z + vertices(i2,2); + tpfloat xm, xM, ym, yM; + if (x0xM) xM = x2; + if (y0yM) yM = y2; + if (xM>=0 && xm<_width && yM>=0 && ym<_height && z0>zmin && z1>zmin && z2>zmin) { + const tpfloat d = (x1-x0)*(y2-y0) - (x2-x0)*(y1-y0); + if (is_double_sided || d<0) { + visibles(l) = (unsigned int)l; + zrange(l) = (z0 + z1 + z2)/3; + } + } + } break; + case 4 : case 12 : { // Quadrangle + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2), + i3 = (unsigned int)primitive(3); + const tpfloat + x0 = projections(i0,0), y0 = projections(i0,1), z0 = Z + vertices(i0,2), + x1 = projections(i1,0), y1 = projections(i1,1), z1 = Z + vertices(i1,2), + x2 = projections(i2,0), y2 = projections(i2,1), z2 = Z + vertices(i2,2), + x3 = projections(i3,0), y3 = projections(i3,1), z3 = Z + vertices(i3,2); + tpfloat xm, xM, ym, yM; + if (x0xM) xM = x2; + if (x3xM) xM = x3; + if (y0yM) yM = y2; + if (y3yM) yM = y3; + if (xM>=0 && xm<_width && yM>=0 && ym<_height && z0>zmin && z1>zmin && z2>zmin && z3>zmin) { + const float d = (x1 - x0)*(y2 - y0) - (x2 - x0)*(y1 - y0); + if (is_double_sided || d<0) { + visibles(l) = (unsigned int)l; + zrange(l) = (z0 + z1 + z2 + z3)/4; + } + } + } break; + default : + if (render_type==5) cimg::mutex(10,0); + throw CImgArgumentException(_cimg_instance + "draw_object3d(): Invalid primitive[%u] with size %u " + "(should have size 1,2,3,4,5,6,9 or 12).", + cimg_instance, + l,primitive.size()); + } + } + + // Force transparent primitives to be drawn last when zbuffer is activated + // (and if object contains no spheres or sprites). + if (is_forward) + cimglist_for(primitives,l) + if (___draw_object3d(opacities,l)!=1) zrange(l) = 2*zmax - zrange(l); + + // Sort only visibles primitives. + unsigned int *p_visibles = visibles._data; + tpfloat *p_zrange = zrange._data; + const tpfloat *ptrz = p_zrange; + cimg_for(visibles,ptr,unsigned int) { + if (*ptr!=~0U) { *(p_visibles++) = *ptr; *(p_zrange++) = *ptrz; } + ++ptrz; + } + const unsigned int nb_visibles = (unsigned int)(p_zrange - zrange._data); + if (!nb_visibles) { + if (render_type==5) cimg::mutex(10,0); + return *this; + } + CImg permutations; + CImg(zrange._data,nb_visibles,1,1,1,true).sort(permutations,is_forward); + + // Compute light properties + CImg lightprops; + switch (render_type) { + case 3 : { // Flat Shading + lightprops.assign(nb_visibles); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(nb_visibles,4096)) + cimg_forX(lightprops,l) { + const CImg& primitive = primitives(visibles(permutations(l))); + const unsigned int psize = (unsigned int)primitive.size(); + if (psize==3 || psize==4 || psize==9 || psize==12) { + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2); + const tpfloat + x0 = (tpfloat)vertices(i0,0), y0 = (tpfloat)vertices(i0,1), z0 = (tpfloat)vertices(i0,2), + x1 = (tpfloat)vertices(i1,0), y1 = (tpfloat)vertices(i1,1), z1 = (tpfloat)vertices(i1,2), + x2 = (tpfloat)vertices(i2,0), y2 = (tpfloat)vertices(i2,1), z2 = (tpfloat)vertices(i2,2), + dx1 = x1 - x0, dy1 = y1 - y0, dz1 = z1 - z0, + dx2 = x2 - x0, dy2 = y2 - y0, dz2 = z2 - z0, + nx = dy1*dz2 - dz1*dy2, + ny = dz1*dx2 - dx1*dz2, + nz = dx1*dy2 - dy1*dx2, + norm = 1e-5f + cimg::hypot(nx,ny,nz), + lx = X + (x0 + x1 + x2)/3 - lightx, + ly = Y + (y0 + y1 + y2)/3 - lighty, + lz = Z + (z0 + z1 + z2)/3 - lightz, + nl = 1e-5f + cimg::hypot(lx,ly,lz), + factor = std::max(cimg::abs(-lx*nx - ly*ny - lz*nz)/(norm*nl),(tpfloat)0); + lightprops[l] = factor<=nspec?factor:(nsl1*factor*factor + nsl2*factor + nsl3); + } else lightprops[l] = 1; + } + } break; + + case 4 : // Gouraud Shading + case 5 : { // Phong-Shading + CImg vertices_normals(vertices._width,6,1,1,0); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(nb_visibles,4096)) + for (int l = 0; l<(int)nb_visibles; ++l) { + const CImg& primitive = primitives[visibles(l)]; + const unsigned int psize = (unsigned int)primitive.size(); + const bool + triangle_flag = (psize==3) || (psize==9), + quadrangle_flag = (psize==4) || (psize==12); + if (triangle_flag || quadrangle_flag) { + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2), + i3 = quadrangle_flag?(unsigned int)primitive(3):0; + const tpfloat + x0 = (tpfloat)vertices(i0,0), y0 = (tpfloat)vertices(i0,1), z0 = (tpfloat)vertices(i0,2), + x1 = (tpfloat)vertices(i1,0), y1 = (tpfloat)vertices(i1,1), z1 = (tpfloat)vertices(i1,2), + x2 = (tpfloat)vertices(i2,0), y2 = (tpfloat)vertices(i2,1), z2 = (tpfloat)vertices(i2,2), + dx1 = x1 - x0, dy1 = y1 - y0, dz1 = z1 - z0, + dx2 = x2 - x0, dy2 = y2 - y0, dz2 = z2 - z0, + nnx = dy1*dz2 - dz1*dy2, + nny = dz1*dx2 - dx1*dz2, + nnz = dx1*dy2 - dy1*dx2, + norm = 1e-5f + cimg::hypot(nnx,nny,nnz), + nx = nnx/norm, + ny = nny/norm, + nz = nnz/norm; + unsigned int ix = 0, iy = 1, iz = 2; + if (is_double_sided && nz>0) { ix = 3; iy = 4; iz = 5; } + vertices_normals(i0,ix)+=nx; vertices_normals(i0,iy)+=ny; vertices_normals(i0,iz)+=nz; + vertices_normals(i1,ix)+=nx; vertices_normals(i1,iy)+=ny; vertices_normals(i1,iz)+=nz; + vertices_normals(i2,ix)+=nx; vertices_normals(i2,iy)+=ny; vertices_normals(i2,iz)+=nz; + if (quadrangle_flag) { + vertices_normals(i3,ix)+=nx; vertices_normals(i3,iy)+=ny; vertices_normals(i3,iz)+=nz; + } + } + } + + if (is_double_sided) cimg_forX(vertices_normals,p) { + const float + nx0 = vertices_normals(p,0), ny0 = vertices_normals(p,1), nz0 = vertices_normals(p,2), + nx1 = vertices_normals(p,3), ny1 = vertices_normals(p,4), nz1 = vertices_normals(p,5), + n0 = nx0*nx0 + ny0*ny0 + nz0*nz0, n1 = nx1*nx1 + ny1*ny1 + nz1*nz1; + if (n1>n0) { + vertices_normals(p,0) = -nx1; + vertices_normals(p,1) = -ny1; + vertices_normals(p,2) = -nz1; + } + } + + if (render_type==4) { + lightprops.assign(vertices._width); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(nb_visibles,4096)) + cimg_forX(lightprops,l) { + const tpfloat + nx = vertices_normals(l,0), + ny = vertices_normals(l,1), + nz = vertices_normals(l,2), + norm = 1e-5f + cimg::hypot(nx,ny,nz), + lx = X + vertices(l,0) - lightx, + ly = Y + vertices(l,1) - lighty, + lz = Z + vertices(l,2) - lightz, + nl = 1e-5f + cimg::hypot(lx,ly,lz), + factor = std::max((-lx*nx - ly*ny - lz*nz)/(norm*nl),(tpfloat)0); + lightprops[l] = factor<=nspec?factor:(nsl1*factor*factor + nsl2*factor + nsl3); + } + } else { + const unsigned int + lw2 = light_texture._width/2 - 1, + lh2 = light_texture._height/2 - 1; + lightprops.assign(vertices._width,2); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(nb_visibles,4096)) + cimg_forX(lightprops,l) { + const tpfloat + nx = vertices_normals(l,0), + ny = vertices_normals(l,1), + nz = vertices_normals(l,2), + norm = 1e-5f + cimg::hypot(nx,ny,nz), + nnx = nx/norm, + nny = ny/norm; + lightprops(l,0) = lw2*(1 + nnx); + lightprops(l,1) = lh2*(1 + nny); + } + } + } break; + } + + // Draw visible primitives + const CImg default_color(1,_spectrum,1,1,(tc)200); + CImg<_to> _opacity; + + for (unsigned int l = 0; l& primitive = primitives[n_primitive]; + const CImg + &__color = n_primitive(), + _color = (__color && __color.size()!=_spectrum && __color._spectrum<_spectrum)? + __color.get_resize(-100,-100,-100,_spectrum,0):CImg(), + &color = _color?_color:(__color?__color:default_color); + const tc *const pcolor = color._data; + float opacity = __draw_object3d(opacities,n_primitive,_opacity); + if (_opacity.is_empty()) opacity*=g_opacity; + +#ifdef cimg_use_board + LibBoard::Board &board = *(LibBoard::Board*)pboard; +#endif + + switch (primitive.size()) { + case 1 : { // Colored point or sprite + const unsigned int n0 = (unsigned int)primitive[0]; + const int x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)); + + if (_opacity.is_empty()) { // Scalar opacity + + if (color.size()==_spectrum) { // Colored point + draw_point(x0,y0,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawDot((float)x0,height()-(float)y0); + } +#endif + } else { // Sprite + const tpfloat z = Z + vertices(n0,2); + const float factor = focale<0?1:sprite_scale*(absfocale?absfocale/(z + absfocale):1); + const unsigned int + _sw = (unsigned int)(color._width*factor), + _sh = (unsigned int)(color._height*factor), + sw = _sw?_sw:1, sh = _sh?_sh:1; + const int nx0 = x0 - (int)sw/2, ny0 = y0 - (int)sh/2; + if (sw<=3*_width/2 && sh<=3*_height/2 && + (nx0 + (int)sw/2>=0 || nx0 - (int)sw/2=0 || ny0 - (int)sh/2 + _sprite = (sw!=color._width || sh!=color._height)? + color.get_resize(sw,sh,1,-100,render_type<=3?1:3):CImg(), + &sprite = _sprite?_sprite:color; + draw_image(nx0,ny0,sprite,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128); + board.setFillColor(LibBoard::Color::Null); + board.drawRectangle((float)nx0,height() - (float)ny0,sw,sh); + } +#endif + } + } + } else { // Opacity mask + const tpfloat z = Z + vertices(n0,2); + const float factor = focale<0?1:sprite_scale*(absfocale?absfocale/(z + absfocale):1); + const unsigned int + _sw = (unsigned int)(std::max(color._width,_opacity._width)*factor), + _sh = (unsigned int)(std::max(color._height,_opacity._height)*factor), + sw = _sw?_sw:1, sh = _sh?_sh:1; + const int nx0 = x0 - (int)sw/2, ny0 = y0 - (int)sh/2; + if (sw<=3*_width/2 && sh<=3*_height/2 && + (nx0 + (int)sw/2>=0 || nx0 - (int)sw/2=0 || ny0 - (int)sh/2 + _sprite = (sw!=color._width || sh!=color._height)? + color.get_resize(sw,sh,1,-100,render_type<=3?1:3):CImg(), + &sprite = _sprite?_sprite:color; + const CImg<_to> + _nopacity = (sw!=_opacity._width || sh!=_opacity._height)? + _opacity.get_resize(sw,sh,1,-100,render_type<=3?1:3):CImg<_to>(), + &nopacity = _nopacity?_nopacity:_opacity; + draw_image(nx0,ny0,sprite,nopacity,g_opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128); + board.setFillColor(LibBoard::Color::Null); + board.drawRectangle((float)nx0,height() - (float)ny0,sw,sh); + } +#endif + } + } + } break; + case 2 : { // Colored line + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1]; + const int + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)); + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale; + if (render_type) { + if (zbuffer) draw_line(zbuffer,x0,y0,z0,x1,y1,z1,pcolor,opacity); + else draw_line(x0,y0,x1,y1,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,x1,height() - (float)y1); + } +#endif + } else { + draw_point(x0,y0,pcolor,opacity).draw_point(x1,y1,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + } +#endif + } + } break; + case 5 : { // Colored sphere + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1], + is_wireframe = (unsigned int)primitive[2], + is_radius = (unsigned int)primitive[3]; + float Xc,Yc,Zc,radius; + if (is_radius) { + Xc = (float)vertices(n0,0); + Yc = (float)vertices(n0,1); + Zc = (float)vertices(n0,2); + radius = cimg::hypot(vertices(n1,0) - vertices(n0,0), + vertices(n1,1) - vertices(n0,1), + vertices(n1,2) - vertices(n0,2)); + } else { + Xc = 0.5f*((float)vertices(n0,0) + (float)vertices(n1,0)); + Yc = 0.5f*((float)vertices(n0,1) + (float)vertices(n1,1)); + Zc = 0.5f*((float)vertices(n0,2) + (float)vertices(n1,2)); + radius = 0.5f*cimg::hypot(vertices(n1,0) - vertices(n0,0), + vertices(n1,1) - vertices(n0,1), + vertices(n1,2) - vertices(n0,2)); + } + const float + zc = Z + Zc + _focale, + af = absfocale?absfocale/zc:1, + xc = X + Xc*af, + yc = Y + Yc*af; + radius*=af; + + switch (render_type) { + case 0 : + draw_point((int)xc,(int)yc,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawDot(xc,height() - yc); + } +#endif + break; + case 1 : + draw_circle((int)xc,(int)yc,(int)radius,pcolor,opacity,~0U); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.setFillColor(LibBoard::Color::Null); + board.drawCircle(xc,height() - yc,radius); + } +#endif + break; + default : + if (is_wireframe) draw_circle((int)xc,(int)yc,(int)radius,pcolor,opacity,~0U); + else draw_circle((int)xc,(int)yc,(int)radius,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + if (!is_wireframe) board.fillCircle(xc,height() - yc,radius); + else { + board.setFillColor(LibBoard::Color::Null); + board.drawCircle(xc,height() - yc,radius); + } + } +#endif + break; + } + } break; + case 6 : { // Textured line + if (!__color) { + if (render_type==5) cimg::mutex(10,0); + throw CImgArgumentException(_cimg_instance + "draw_object3d(): Undefined texture for line primitive [%u].", + cimg_instance,n_primitive); + } + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1]; + const int + tx0 = (int)primitive[2], ty0 = (int)primitive[3], + tx1 = (int)primitive[4], ty1 = (int)primitive[5], + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)); + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale; + if (render_type) { + if (zbuffer) draw_line(zbuffer,x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity); + else draw_line(x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,(float)x1,height() - (float)y1); + } +#endif + } else { + draw_point(x0,y0,color.get_vector_at(tx0<=0?0:tx0>=color.width()?color.width() - 1:tx0, + ty0<=0?0:ty0>=color.height()?color.height() - 1:ty0)._data,opacity). + draw_point(x1,y1,color.get_vector_at(tx1<=0?0:tx1>=color.width()?color.width() - 1:tx1, + ty1<=0?0:ty1>=color.height()?color.height() - 1:ty1)._data,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + } +#endif + } + } break; + case 3 : { // Colored triangle + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1], + n2 = (unsigned int)primitive[2]; + const int + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)), + x2 = cimg::uiround(projections(n2,0)), y2 = cimg::uiround(projections(n2,1)); + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale, + z2 = vertices(n2,2) + Z + _focale; + switch (render_type) { + case 0 : + draw_point(x0,y0,pcolor,opacity).draw_point(x1,y1,pcolor,opacity).draw_point(x2,y2,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + board.drawDot((float)x2,height() - (float)y2); + } +#endif + break; + case 1 : + if (zbuffer) + draw_line(zbuffer,x0,y0,z0,x1,y1,z1,pcolor,opacity).draw_line(zbuffer,x0,y0,z0,x2,y2,z2,pcolor,opacity). + draw_line(zbuffer,x1,y1,z1,x2,y2,z2,pcolor,opacity); + else + draw_line(x0,y0,x1,y1,pcolor,opacity).draw_line(x0,y0,x2,y2,pcolor,opacity). + draw_line(x1,y1,x2,y2,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,(float)x1,height() - (float)y1); + board.drawLine((float)x0,height() - (float)y0,(float)x2,height() - (float)y2); + board.drawLine((float)x1,height() - (float)y1,(float)x2,height() - (float)y2); + } +#endif + break; + case 2 : + if (zbuffer) draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor,opacity); + else draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + } +#endif + break; + case 3 : + if (zbuffer) draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor,opacity,lightprops(l)); + else _draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,opacity,lightprops(l)); + +#ifdef cimg_use_board + if (pboard) { + const float lp = std::min(lightprops(l),1.f); + board.setPenColorRGBi((unsigned char)(color[0]*lp), + (unsigned char)(color[1]*lp), + (unsigned char)(color[2]*lp), + (unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + } +#endif + break; + case 4 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor, + lightprops(n0),lightprops(n1),lightprops(n2),opacity); + else draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,lightprops(n0),lightprops(n1),lightprops(n2),opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi((unsigned char)(color[0]), + (unsigned char)(color[1]), + (unsigned char)(color[2]), + (unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,lightprops(n0), + (float)x1,height() - (float)y1,lightprops(n1), + (float)x2,height() - (float)y2,lightprops(n2)); + } +#endif + break; + case 5 : { + const unsigned int + lx0 = (unsigned int)cimg::uiround(lightprops(n0,0)), ly0 = (unsigned int)cimg::uiround(lightprops(n0,1)), + lx1 = (unsigned int)cimg::uiround(lightprops(n1,0)), ly1 = (unsigned int)cimg::uiround(lightprops(n1,1)), + lx2 = (unsigned int)cimg::uiround(lightprops(n2,0)), ly2 = (unsigned int)cimg::uiround(lightprops(n2,1)); + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor,light_texture,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + else draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,light_texture,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + +#ifdef cimg_use_board + if (pboard) { + const float + l0 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n0,0))), + (int)(light_texture.height()/2*(1 + lightprops(n0,1)))), + l1 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n1,0))), + (int)(light_texture.height()/2*(1 + lightprops(n1,1)))), + l2 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n2,0))), + (int)(light_texture.height()/2*(1 + lightprops(n2,1)))); + board.setPenColorRGBi((unsigned char)(color[0]), + (unsigned char)(color[1]), + (unsigned char)(color[2]), + (unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,l0, + (float)x1,height() - (float)y1,l1, + (float)x2,height() - (float)y2,l2); + } +#endif + } break; + } + } break; + case 4 : { // Colored quadrangle + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1], + n2 = (unsigned int)primitive[2], + n3 = (unsigned int)primitive[3]; + const int + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)), + x2 = cimg::uiround(projections(n2,0)), y2 = cimg::uiround(projections(n2,1)), + x3 = cimg::uiround(projections(n3,0)), y3 = cimg::uiround(projections(n3,1)), + xc = (x0 + x1 + x2 + x3)/4, yc = (y0 + y1 + y2 + y3)/4; + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale, + z2 = vertices(n2,2) + Z + _focale, + z3 = vertices(n3,2) + Z + _focale, + zc = (z0 + z1 + z2 + z3)/4; + + switch (render_type) { + case 0 : + draw_point(x0,y0,pcolor,opacity).draw_point(x1,y1,pcolor,opacity). + draw_point(x2,y2,pcolor,opacity).draw_point(x3,y3,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + board.drawDot((float)x2,height() - (float)y2); + board.drawDot((float)x3,height() - (float)y3); + } +#endif + break; + case 1 : + if (zbuffer) + draw_line(zbuffer,x0,y0,z0,x1,y1,z1,pcolor,opacity).draw_line(zbuffer,x1,y1,z1,x2,y2,z2,pcolor,opacity). + draw_line(zbuffer,x2,y2,z2,x3,y3,z3,pcolor,opacity).draw_line(zbuffer,x3,y3,z3,x0,y0,z0,pcolor,opacity); + else + draw_line(x0,y0,x1,y1,pcolor,opacity).draw_line(x1,y1,x2,y2,pcolor,opacity). + draw_line(x2,y2,x3,y3,pcolor,opacity).draw_line(x3,y3,x0,y0,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,(float)x1,height() - (float)y1); + board.drawLine((float)x1,height() - (float)y1,(float)x2,height() - (float)y2); + board.drawLine((float)x2,height() - (float)y2,(float)x3,height() - (float)y3); + board.drawLine((float)x3,height() - (float)y3,(float)x0,height() - (float)y0); + } +#endif + break; + case 2 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor,opacity). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,pcolor,opacity); + else + draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,opacity).draw_triangle(x0,y0,x2,y2,x3,y3,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x2,height() - (float)y2, + (float)x3,height() - (float)y3); + } +#endif + break; + case 3 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor,opacity,lightprops(l)). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,pcolor,opacity,lightprops(l)); + else + _draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,opacity,lightprops(l)). + _draw_triangle(x0,y0,x2,y2,x3,y3,pcolor,opacity,lightprops(l)); + +#ifdef cimg_use_board + if (pboard) { + const float lp = std::min(lightprops(l),1.f); + board.setPenColorRGBi((unsigned char)(color[0]*lp), + (unsigned char)(color[1]*lp), + (unsigned char)(color[2]*lp),(unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x2,height() - (float)y2, + (float)x3,height() - (float)y3); + } +#endif + break; + case 4 : { + const float + lightprop0 = lightprops(n0), lightprop1 = lightprops(n1), + lightprop2 = lightprops(n2), lightprop3 = lightprops(n3), + lightpropc = (lightprop0 + lightprop1 + lightprop2 + lightprop2)/4; + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,xc,yc,zc,pcolor,lightprop0,lightprop1,lightpropc,opacity). + draw_triangle(zbuffer,x1,y1,z1,x2,y2,z2,xc,yc,zc,pcolor,lightprop1,lightprop2,lightpropc,opacity). + draw_triangle(zbuffer,x2,y2,z2,x3,y3,z3,xc,yc,zc,pcolor,lightprop2,lightprop3,lightpropc,opacity). + draw_triangle(zbuffer,x3,y3,z3,x0,y0,z0,xc,yc,zc,pcolor,lightprop3,lightprop0,lightpropc,opacity); + else + draw_triangle(x0,y0,x1,y1,xc,yc,pcolor,lightprop0,lightprop1,lightpropc,opacity). + draw_triangle(x1,y1,x2,y2,xc,yc,pcolor,lightprop1,lightprop2,lightpropc,opacity). + draw_triangle(x2,y2,x3,y3,xc,yc,pcolor,lightprop2,lightprop3,lightpropc,opacity). + draw_triangle(x3,y3,x0,y0,xc,yc,pcolor,lightprop3,lightprop0,lightpropc,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi((unsigned char)(color[0]), + (unsigned char)(color[1]), + (unsigned char)(color[2]), + (unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,lightprop0, + (float)x1,height() - (float)y1,lightprop1, + (float)x2,height() - (float)y2,lightprop2); + board.fillGouraudTriangle((float)x0,height() - (float)y0,lightprop0, + (float)x2,height() - (float)y2,lightprop2, + (float)x3,height() - (float)y3,lightprop3); + } +#endif + } break; + case 5 : { + const unsigned int + lx0 = (unsigned int)cimg::uiround(lightprops(n0,0)), ly0 = (unsigned int)cimg::uiround(lightprops(n0,1)), + lx1 = (unsigned int)cimg::uiround(lightprops(n1,0)), ly1 = (unsigned int)cimg::uiround(lightprops(n1,1)), + lx2 = (unsigned int)cimg::uiround(lightprops(n2,0)), ly2 = (unsigned int)cimg::uiround(lightprops(n2,1)), + lx3 = (unsigned int)cimg::uiround(lightprops(n3,0)), ly3 = (unsigned int)cimg::uiround(lightprops(n3,1)), + lxc = (lx0 + lx1 + lx2 + lx3)/4, lyc = (ly0 + ly1 + ly2 + ly3)/4; + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,xc,yc,zc,pcolor,light_texture,lx0,ly0,lx1,ly1,lxc,lyc,opacity). + draw_triangle(zbuffer,x1,y1,z1,x2,y2,z2,xc,yc,zc,pcolor,light_texture,lx1,ly1,lx2,ly2,lxc,lyc,opacity). + draw_triangle(zbuffer,x2,y2,z2,x3,y3,z3,xc,yc,zc,pcolor,light_texture,lx2,ly2,lx3,ly3,lxc,lyc,opacity). + draw_triangle(zbuffer,x3,y3,z3,x0,y0,z0,xc,yc,zc,pcolor,light_texture,lx3,ly3,lx0,ly0,lxc,lyc,opacity); + else + draw_triangle(x0,y0,x1,y1,xc,yc,pcolor,light_texture,lx0,ly0,lx1,ly1,lxc,lyc,opacity). + draw_triangle(x1,y1,x2,y2,xc,yc,pcolor,light_texture,lx1,ly1,lx2,ly2,lxc,lyc,opacity). + draw_triangle(x2,y2,x3,y3,xc,yc,pcolor,light_texture,lx2,ly2,lx3,ly3,lxc,lyc,opacity). + draw_triangle(x3,y3,x0,y0,xc,yc,pcolor,light_texture,lx3,ly3,lx0,ly0,lxc,lyc,opacity); + +#ifdef cimg_use_board + if (pboard) { + const float + l0 = light_texture((int)(light_texture.width()/2*(1 + lx0)), (int)(light_texture.height()/2*(1 + ly0))), + l1 = light_texture((int)(light_texture.width()/2*(1 + lx1)), (int)(light_texture.height()/2*(1 + ly1))), + l2 = light_texture((int)(light_texture.width()/2*(1 + lx2)), (int)(light_texture.height()/2*(1 + ly2))), + l3 = light_texture((int)(light_texture.width()/2*(1 + lx3)), (int)(light_texture.height()/2*(1 + ly3))); + board.setPenColorRGBi((unsigned char)(color[0]), + (unsigned char)(color[1]), + (unsigned char)(color[2]), + (unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,l0, + (float)x1,height() - (float)y1,l1, + (float)x2,height() - (float)y2,l2); + board.fillGouraudTriangle((float)x0,height() - (float)y0,l0, + (float)x2,height() - (float)y2,l2, + (float)x3,height() - (float)y3,l3); + } +#endif + } break; + } + } break; + case 9 : { // Textured triangle + if (!__color) { + if (render_type==5) cimg::mutex(10,0); + throw CImgArgumentException(_cimg_instance + "draw_object3d(): Undefined texture for triangle primitive [%u].", + cimg_instance,n_primitive); + } + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1], + n2 = (unsigned int)primitive[2]; + const int + tx0 = (int)primitive[3], ty0 = (int)primitive[4], + tx1 = (int)primitive[5], ty1 = (int)primitive[6], + tx2 = (int)primitive[7], ty2 = (int)primitive[8], + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)), + x2 = cimg::uiround(projections(n2,0)), y2 = cimg::uiround(projections(n2,1)); + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale, + z2 = vertices(n2,2) + Z + _focale; + switch (render_type) { + case 0 : + draw_point(x0,y0,color.get_vector_at(tx0<=0?0:tx0>=color.width()?color.width() - 1:tx0, + ty0<=0?0:ty0>=color.height()?color.height() - 1:ty0)._data,opacity). + draw_point(x1,y1,color.get_vector_at(tx1<=0?0:tx1>=color.width()?color.width() - 1:tx1, + ty1<=0?0:ty1>=color.height()?color.height() - 1:ty1)._data,opacity). + draw_point(x2,y2,color.get_vector_at(tx2<=0?0:tx2>=color.width()?color.width() - 1:tx2, + ty2<=0?0:ty2>=color.height()?color.height() - 1:ty2)._data,opacity); +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + board.drawDot((float)x2,height() - (float)y2); + } +#endif + break; + case 1 : + if (zbuffer) + draw_line(zbuffer,x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity). + draw_line(zbuffer,x0,y0,z0,x2,y2,z2,color,tx0,ty0,tx2,ty2,opacity). + draw_line(zbuffer,x1,y1,z1,x2,y2,z2,color,tx1,ty1,tx2,ty2,opacity); + else + draw_line(x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity). + draw_line(x0,y0,z0,x2,y2,z2,color,tx0,ty0,tx2,ty2,opacity). + draw_line(x1,y1,z1,x2,y2,z2,color,tx1,ty1,tx2,ty2,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,(float)x1,height() - (float)y1); + board.drawLine((float)x0,height() - (float)y0,(float)x2,height() - (float)y2); + board.drawLine((float)x1,height() - (float)y1,(float)x2,height() - (float)y2); + } +#endif + break; + case 2 : + if (zbuffer) draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity); + else draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + } +#endif + break; + case 3 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity,lightprops(l)); + else draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity,lightprops(l)); + +#ifdef cimg_use_board + if (pboard) { + const float lp = std::min(lightprops(l),1.f); + board.setPenColorRGBi((unsigned char)(128*lp), + (unsigned char)(128*lp), + (unsigned char)(128*lp), + (unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + } +#endif + break; + case 4 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + lightprops(n0),lightprops(n1),lightprops(n2),opacity); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + lightprops(n0),lightprops(n1),lightprops(n2),opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,lightprops(n0), + (float)x1,height() - (float)y1,lightprops(n1), + (float)x2,height() - (float)y2,lightprops(n2)); + } +#endif + break; + case 5 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,light_texture, + (unsigned int)lightprops(n0,0),(unsigned int)lightprops(n0,1), + (unsigned int)lightprops(n1,0),(unsigned int)lightprops(n1,1), + (unsigned int)lightprops(n2,0),(unsigned int)lightprops(n2,1), + opacity); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,light_texture, + (unsigned int)lightprops(n0,0),(unsigned int)lightprops(n0,1), + (unsigned int)lightprops(n1,0),(unsigned int)lightprops(n1,1), + (unsigned int)lightprops(n2,0),(unsigned int)lightprops(n2,1), + opacity); + +#ifdef cimg_use_board + if (pboard) { + const float + l0 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n0,0))), + (int)(light_texture.height()/2*(1 + lightprops(n0,1)))), + l1 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n1,0))), + (int)(light_texture.height()/2*(1 + lightprops(n1,1)))), + l2 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n2,0))), + (int)(light_texture.height()/2*(1 + lightprops(n2,1)))); + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,l0, + (float)x1,height() - (float)y1,l1, + (float)x2,height() - (float)y2,l2); + } +#endif + break; + } + } break; + case 12 : { // Textured quadrangle + if (!__color) { + if (render_type==5) cimg::mutex(10,0); + throw CImgArgumentException(_cimg_instance + "draw_object3d(): Undefined texture for quadrangle primitive [%u].", + cimg_instance,n_primitive); + } + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1], + n2 = (unsigned int)primitive[2], + n3 = (unsigned int)primitive[3]; + const int + tx0 = (int)primitive[4], ty0 = (int)primitive[5], + tx1 = (int)primitive[6], ty1 = (int)primitive[7], + tx2 = (int)primitive[8], ty2 = (int)primitive[9], + tx3 = (int)primitive[10], ty3 = (int)primitive[11], + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)), + x2 = cimg::uiround(projections(n2,0)), y2 = cimg::uiround(projections(n2,1)), + x3 = cimg::uiround(projections(n3,0)), y3 = cimg::uiround(projections(n3,1)); + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale, + z2 = vertices(n2,2) + Z + _focale, + z3 = vertices(n3,2) + Z + _focale; + + switch (render_type) { + case 0 : + draw_point(x0,y0,color.get_vector_at(tx0<=0?0:tx0>=color.width()?color.width() - 1:tx0, + ty0<=0?0:ty0>=color.height()?color.height() - 1:ty0)._data,opacity). + draw_point(x1,y1,color.get_vector_at(tx1<=0?0:tx1>=color.width()?color.width() - 1:tx1, + ty1<=0?0:ty1>=color.height()?color.height() - 1:ty1)._data,opacity). + draw_point(x2,y2,color.get_vector_at(tx2<=0?0:tx2>=color.width()?color.width() - 1:tx2, + ty2<=0?0:ty2>=color.height()?color.height() - 1:ty2)._data,opacity). + draw_point(x3,y3,color.get_vector_at(tx3<=0?0:tx3>=color.width()?color.width() - 1:tx3, + ty3<=0?0:ty3>=color.height()?color.height() - 1:ty3)._data,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + board.drawDot((float)x2,height() - (float)y2); + board.drawDot((float)x3,height() - (float)y3); + } +#endif + break; + case 1 : + if (zbuffer) + draw_line(zbuffer,x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity). + draw_line(zbuffer,x1,y1,z1,x2,y2,z2,color,tx1,ty1,tx2,ty2,opacity). + draw_line(zbuffer,x2,y2,z2,x3,y3,z3,color,tx2,ty2,tx3,ty3,opacity). + draw_line(zbuffer,x3,y3,z3,x0,y0,z0,color,tx3,ty3,tx0,ty0,opacity); + else + draw_line(x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity). + draw_line(x1,y1,z1,x2,y2,z2,color,tx1,ty1,tx2,ty2,opacity). + draw_line(x2,y2,z2,x3,y3,z3,color,tx2,ty2,tx3,ty3,opacity). + draw_line(x3,y3,z3,x0,y0,z0,color,tx3,ty3,tx0,ty0,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,(float)x1,height() - (float)y1); + board.drawLine((float)x1,height() - (float)y1,(float)x2,height() - (float)y2); + board.drawLine((float)x2,height() - (float)y2,(float)x3,height() - (float)y3); + board.drawLine((float)x3,height() - (float)y3,(float)x0,height() - (float)y0); + } +#endif + break; + case 2 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3,opacity); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity). + draw_triangle(x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x2,height() - (float)y2, + (float)x3,height() - (float)y3); + } +#endif + break; + case 3 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity,lightprops(l)). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3,opacity,lightprops(l)); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity,lightprops(l)). + draw_triangle(x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3,opacity,lightprops(l)); + +#ifdef cimg_use_board + if (pboard) { + const float lp = std::min(lightprops(l),1.f); + board.setPenColorRGBi((unsigned char)(128*lp), + (unsigned char)(128*lp), + (unsigned char)(128*lp), + (unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x2,height() - (float)y2, + (float)x3,height() - (float)y3); + } +#endif + break; + case 4 : { + const float + lightprop0 = lightprops(n0), lightprop1 = lightprops(n1), + lightprop2 = lightprops(n2), lightprop3 = lightprops(n3); + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + lightprop0,lightprop1,lightprop2,opacity). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3, + lightprop0,lightprop2,lightprop3,opacity); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + lightprop0,lightprop1,lightprop2,opacity). + draw_triangle(x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3, + lightprop0,lightprop2,lightprop3,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,lightprop0, + (float)x1,height() - (float)y1,lightprop1, + (float)x2,height() - (float)y2,lightprop2); + board.fillGouraudTriangle((float)x0,height() -(float)y0,lightprop0, + (float)x2,height() - (float)y2,lightprop2, + (float)x3,height() - (float)y3,lightprop3); + } +#endif + } break; + case 5 : { + const unsigned int + lx0 = (unsigned int)cimg::uiround(lightprops(n0,0)), ly0 = (unsigned int)cimg::uiround(lightprops(n0,1)), + lx1 = (unsigned int)cimg::uiround(lightprops(n1,0)), ly1 = (unsigned int)cimg::uiround(lightprops(n1,1)), + lx2 = (unsigned int)cimg::uiround(lightprops(n2,0)), ly2 = (unsigned int)cimg::uiround(lightprops(n2,1)), + lx3 = (unsigned int)cimg::uiround(lightprops(n3,0)), ly3 = (unsigned int)cimg::uiround(lightprops(n3,1)); + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + light_texture,lx0,ly0,lx1,ly1,lx2,ly2,opacity). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3, + light_texture,lx0,ly0,lx2,ly2,lx3,ly3,opacity); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + light_texture,lx0,ly0,lx1,ly1,lx2,ly2,opacity). + draw_triangle(x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3, + light_texture,lx0,ly0,lx2,ly2,lx3,ly3,opacity); +#ifdef cimg_use_board + if (pboard) { + const float + l0 = light_texture((int)(light_texture.width()/2*(1 + lx0)), (int)(light_texture.height()/2*(1 + ly0))), + l1 = light_texture((int)(light_texture.width()/2*(1 + lx1)), (int)(light_texture.height()/2*(1 + ly1))), + l2 = light_texture((int)(light_texture.width()/2*(1 + lx2)), (int)(light_texture.height()/2*(1 + ly2))), + l3 = light_texture((int)(light_texture.width()/2*(1 + lx3)), (int)(light_texture.height()/2*(1 + ly3))); + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,l0, + (float)x1,height() - (float)y1,l1, + (float)x2,height() - (float)y2,l2); + board.fillGouraudTriangle((float)x0,height() -(float)y0,l0, + (float)x2,height() - (float)y2,l2, + (float)x3,height() - (float)y3,l3); + } +#endif + } break; + } + } break; + } + } + if (render_type==5) cimg::mutex(10,0); + return *this; + } + + //@} + //--------------------------- + // + //! \name Data Input + //@{ + //--------------------------- + + //! Launch simple interface to select a shape from an image. + /** + \param disp Display window to use. + \param feature_type Type of feature to select. Can be { 0=point | 1=line | 2=rectangle | 3=ellipse }. + \param XYZ Pointer to 3 values X,Y,Z which tells about the projection point coordinates, for volumetric images. + \param exit_on_anykey Exit function when any key is pressed. + **/ + CImg& select(CImgDisplay &disp, + const unsigned int feature_type=2, unsigned int *const XYZ=0, + const bool exit_on_anykey=false, + const bool is_deep_selection_default=false) { + return get_select(disp,feature_type,XYZ,exit_on_anykey,is_deep_selection_default).move_to(*this); + } + + //! Simple interface to select a shape from an image \overloading. + CImg& select(const char *const title, + const unsigned int feature_type=2, unsigned int *const XYZ=0, + const bool exit_on_anykey=false, + const bool is_deep_selection_default=false) { + return get_select(title,feature_type,XYZ,exit_on_anykey,is_deep_selection_default).move_to(*this); + } + + //! Simple interface to select a shape from an image \newinstance. + CImg get_select(CImgDisplay &disp, + const unsigned int feature_type=2, unsigned int *const XYZ=0, + const bool exit_on_anykey=false, + const bool is_deep_selection_default=false) const { + return _select(disp,0,feature_type,XYZ,0,0,0,exit_on_anykey,true,false,is_deep_selection_default); + } + + //! Simple interface to select a shape from an image \newinstance. + CImg get_select(const char *const title, + const unsigned int feature_type=2, unsigned int *const XYZ=0, + const bool exit_on_anykey=false, + const bool is_deep_selection_default=false) const { + CImgDisplay disp; + return _select(disp,title,feature_type,XYZ,0,0,0,exit_on_anykey,true,false,is_deep_selection_default); + } + + CImg _select(CImgDisplay &disp, const char *const title, + const unsigned int feature_type, unsigned int *const XYZ, + const int origX, const int origY, const int origZ, + const bool exit_on_anykey, + const bool reset_view3d, + const bool force_display_z_coord, + const bool is_deep_selection_default) const { + if (is_empty()) return CImg(1,feature_type==0?3:6,1,1,-1); + if (!disp) { + disp.assign(cimg_fitscreen(_width,_height,_depth),title?title:0,1); + if (!title) disp.set_title("CImg<%s> (%ux%ux%ux%u)",pixel_type(),_width,_height,_depth,_spectrum); + } else { + if (title) disp.set_title("%s",title); + disp.move_inside_screen(); + } + + CImg thumb; + if (width()>disp.screen_width() || height()>disp.screen_height()) + get_resize(cimg_fitscreen(width(),height(),depth()),depth(),-100).move_to(thumb); + + const unsigned int old_normalization = disp.normalization(); + bool old_is_resized = disp.is_resized(); + disp._normalization = 0; + disp.show().set_key(0).set_wheel().show_mouse(); + + static const unsigned char foreground_color[] = { 255,255,255 }, background_color[] = { 0,0,0 }; + int area = 0, area_started = 0, area_clicked = 0, phase = 0, + X0 = (int)((XYZ?XYZ[0]:_width/2)%_width), + Y0 = (int)((XYZ?XYZ[1]:_height/2)%_height), + Z0 = (int)((XYZ?XYZ[2]:_depth/2)%_depth), + X1 =-1, Y1 = -1, Z1 = -1, + X3d = -1, Y3d = -1, + oX3d = X3d, oY3d = -1, + omx = -1, omy = -1; + float X = -1, Y = -1, Z = -1; + unsigned int key = 0, font_size = 32; + + bool is_deep_selection = is_deep_selection_default, + shape_selected = false, text_down = false, visible_cursor = true; + static CImg pose3d; + static bool is_view3d = false, is_axes = true; + if (reset_view3d) { pose3d.assign(); is_view3d = false; } + CImg points3d, opacities3d, sel_opacities3d; + CImgList primitives3d, sel_primitives3d; + CImgList colors3d, sel_colors3d; + CImg visu, visu0, view3d; + CImg text(1024); *text = 0; + + while (!key && !disp.is_closed() && !shape_selected) { + + // Handle mouse motion and selection + int + mx = disp.mouse_x(), + my = disp.mouse_y(); + + const float + mX = mx<0?-1.f:(float)mx*(width() + (depth()>1?depth():0))/disp.width(), + mY = my<0?-1.f:(float)my*(height() + (depth()>1?depth():0))/disp.height(); + + area = 0; + if (mX>=0 && mY>=0 && mX=0 && mX=height()) { area = 2; X = mX; Z = mY - _height; Y = (float)(phase?Y1:Y0); } + if (mY>=0 && mX>=width() && mY=width() && mY>=height()) area = 4; + if (disp.button()) { if (!area_clicked) area_clicked = area; } else area_clicked = 0; + + CImg filename(32); + + switch (key = disp.key()) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : +#endif + case 0 : case cimg::keyCTRLLEFT : key = 0; break; + case cimg::keyPAGEUP : + if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { disp.set_wheel(1); key = 0; } break; + case cimg::keyPAGEDOWN : + if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { disp.set_wheel(-1); key = 0; } break; + case cimg::keyX : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + is_axes = !is_axes; disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyD : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,false), + CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,true),false). + _is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyC : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(2*disp.width()/3,2*disp.height()/3,1),false)._is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyR : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false).resize(cimg_fitscreen(_width,_height,_depth),false)._is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyF : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.resize(disp.screen_width(),disp.screen_height(),false).toggle_fullscreen()._is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyV : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + is_view3d = !is_view3d; disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyS : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.bmp",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + if (visu0) { + (+visu0).__draw_text(" Saving snapshot...",font_size,(int)text_down).display(disp); + visu0.save(filename); + (+visu0).__draw_text(" Snapshot '%s' saved. ",font_size,(int)text_down,filename._data).display(disp); + } + disp.set_key(key,false); key = 0; + } break; + case cimg::keyO : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + std::FILE *file; + do { + +#ifdef cimg_use_zlib + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimgz",snap_number++); +#else + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimg",snap_number++); +#endif + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu0).__draw_text(" Saving instance... ",font_size,(int)text_down).display(disp); + save(filename); + (+visu0).__draw_text(" Instance '%s' saved. ",font_size,(int)text_down,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; + } + + switch (area) { + + case 0 : // When mouse is out of image range + mx = my = -1; X = Y = Z = -1; + break; + + case 1 : case 2 : case 3 : { // When mouse is over the XY,XZ or YZ projections + const unsigned int but = disp.button(); + const bool b1 = (bool)(but&1), b2 = (bool)(but&2), b3 = (bool)(but&4); + + if (b1 && phase==1 && area_clicked==area) { // When selection has been started (1st step) + if (_depth>1 && (X1!=(int)X || Y1!=(int)Y || Z1!=(int)Z)) visu0.assign(); + X1 = (int)X; Y1 = (int)Y; Z1 = (int)Z; + } + if (!b1 && phase==2 && area_clicked!=area) { // When selection is at 2nd step (for volumes) + switch (area_started) { + case 1 : if (Z1!=(int)Z) visu0.assign(); Z1 = (int)Z; break; + case 2 : if (Y1!=(int)Y) visu0.assign(); Y1 = (int)Y; break; + case 3 : if (X1!=(int)X) visu0.assign(); X1 = (int)X; break; + } + } + if (b2 && area_clicked==area) { // When moving through the image/volume + if (phase) { + if (_depth>1 && (X1!=(int)X || Y1!=(int)Y || Z1!=(int)Z)) visu0.assign(); + X1 = (int)X; Y1 = (int)Y; Z1 = (int)Z; + } else { + if (_depth>1 && (X0!=(int)X || Y0!=(int)Y || Z0!=(int)Z)) visu0.assign(); + X0 = (int)X; Y0 = (int)Y; Z0 = (int)Z; + } + } + if (b3) { // Reset selection + X = (float)X0; Y = (float)Y0; Z = (float)Z0; phase = area = area_clicked = area_started = 0; + visu0.assign(); + } + if (disp.wheel()) { // When moving through the slices of the volume (with mouse wheel) + if (_depth>1 && !disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT() && + !disp.is_keySHIFTLEFT() && !disp.is_keySHIFTRIGHT()) { + switch (area) { + case 1 : + if (phase) Z = (float)(Z1+=disp.wheel()); else Z = (float)(Z0+=disp.wheel()); + visu0.assign(); break; + case 2 : + if (phase) Y = (float)(Y1+=disp.wheel()); else Y = (float)(Y0+=disp.wheel()); + visu0.assign(); break; + case 3 : + if (phase) X = (float)(X1+=disp.wheel()); else X = (float)(X0+=disp.wheel()); + visu0.assign(); break; + } + disp.set_wheel(); + } else key = ~0U; + } + + if ((phase==0 && b1) || + (phase==1 && !b1) || + (phase==2 && b1)) switch (phase) { // Detect change of phase + case 0 : + if (area==area_clicked) { + X0 = X1 = (int)X; Y0 = Y1 = (int)Y; Z0 = Z1 = (int)Z; area_started = area; ++phase; + } break; + case 1 : + if (area==area_started) { + X1 = (int)X; Y1 = (int)Y; Z1 = (int)Z; ++phase; + if (_depth>1) { + if (disp.is_keyCTRLLEFT()) is_deep_selection = !is_deep_selection_default; + if (is_deep_selection) ++phase; + } + } else if (!b1) { X = (float)X0; Y = (float)Y0; Z = (float)Z0; phase = 0; visu0.assign(); } + break; + case 2 : ++phase; break; + } + } break; + + case 4 : // When mouse is over the 3D view + if (is_view3d && points3d) { + X3d = mx - width()*disp.width()/(width() + (depth()>1?depth():0)); + Y3d = my - height()*disp.height()/(height() + (depth()>1?depth():0)); + if (oX3d<0) { oX3d = X3d; oY3d = Y3d; } + // Left + right buttons: reset. + if ((disp.button()&3)==3) { pose3d.assign(); view3d.assign(); oX3d = oY3d = X3d = Y3d = -1; } + else if (disp.button()&1 && pose3d && (oX3d!=X3d || oY3d!=Y3d)) { // Left button: rotate + const float + R = 0.45f*std::min(view3d._width,view3d._height), + R2 = R*R, + u0 = (float)(oX3d - view3d.width()/2), + v0 = (float)(oY3d - view3d.height()/2), + u1 = (float)(X3d - view3d.width()/2), + v1 = (float)(Y3d - view3d.height()/2), + n0 = cimg::hypot(u0,v0), + n1 = cimg::hypot(u1,v1), + nu0 = n0>R?(u0*R/n0):u0, + nv0 = n0>R?(v0*R/n0):v0, + nw0 = (float)std::sqrt(std::max(0.f,R2 - nu0*nu0 - nv0*nv0)), + nu1 = n1>R?(u1*R/n1):u1, + nv1 = n1>R?(v1*R/n1):v1, + nw1 = (float)std::sqrt(std::max(0.f,R2 - nu1*nu1 - nv1*nv1)), + u = nv0*nw1 - nw0*nv1, + v = nw0*nu1 - nu0*nw1, + w = nv0*nu1 - nu0*nv1, + n = cimg::hypot(u,v,w), + alpha = (float)std::asin(n/R2)*180/cimg::PI; + pose3d.draw_image(CImg::rotation_matrix(u,v,w,-alpha)*pose3d.get_crop(0,0,2,2)); + view3d.assign(); + } else if (disp.button()&2 && pose3d && oY3d!=Y3d) { // Right button: zoom + pose3d(3,2)+=(Y3d - oY3d)*1.5f; view3d.assign(); + } + if (disp.wheel()) { // Wheel: zoom + pose3d(3,2)-=disp.wheel()*15; view3d.assign(); disp.set_wheel(); + } + if (disp.button()&4 && pose3d && (oX3d!=X3d || oY3d!=Y3d)) { // Middle button: shift + pose3d(3,0)-=oX3d - X3d; pose3d(3,1)-=oY3d - Y3d; view3d.assign(); + } + oX3d = X3d; oY3d = Y3d; + } + mx = my = -1; X = Y = Z = -1; + break; + } + + if (phase) { + if (!feature_type) shape_selected = phase?true:false; + else { + if (_depth>1) shape_selected = (phase==3)?true:false; + else shape_selected = (phase==2)?true:false; + } + } + + if (X0<0) X0 = 0; + if (X0>=width()) X0 = width() - 1; + if (Y0<0) Y0 = 0; + if (Y0>=height()) Y0 = height() - 1; + if (Z0<0) Z0 = 0; + if (Z0>=depth()) Z0 = depth() - 1; + if (X1<1) X1 = 0; + if (X1>=width()) X1 = width() - 1; + if (Y1<0) Y1 = 0; + if (Y1>=height()) Y1 = height() - 1; + if (Z1<0) Z1 = 0; + if (Z1>=depth()) Z1 = depth() - 1; + + // Draw visualization image on the display + if (mx!=omx || my!=omy || !visu0 || (_depth>1 && !view3d)) { + + if (!visu0) { // Create image of projected planes + if (thumb) thumb._get_select(disp,old_normalization,phase?X1:X0,phase?Y1:Y0,phase?Z1:Z0).move_to(visu0); + else _get_select(disp,old_normalization,phase?X1:X0,phase?Y1:Y0,phase?Z1:Z0).move_to(visu0); + visu0.resize(disp); + view3d.assign(); + points3d.assign(); + } + + if (is_view3d && _depth>1 && !view3d) { // Create 3D view for volumetric images + const unsigned int + _x3d = (unsigned int)cimg::round((float)_width*visu0._width/(_width + _depth),1,1), + _y3d = (unsigned int)cimg::round((float)_height*visu0._height/(_height + _depth),1,1), + x3d = _x3d>=visu0._width?visu0._width - 1:_x3d, + y3d = _y3d>=visu0._height?visu0._height - 1:_y3d; + CImg(1,2,1,1,64,128).resize(visu0._width - x3d,visu0._height - y3d,1,visu0._spectrum,3). + move_to(view3d); + if (!points3d) { + get_projections3d(primitives3d,colors3d,phase?X1:X0,phase?Y1:Y0,phase?Z1:Z0,true).move_to(points3d); + points3d.append(CImg(8,3,1,1, + 0,_width - 1,_width - 1,0,0,_width - 1,_width - 1,0, + 0,0,_height - 1,_height - 1,0,0,_height - 1,_height - 1, + 0,0,0,0,_depth - 1,_depth - 1,_depth - 1,_depth - 1),'x'); + CImg::vector(12,13).move_to(primitives3d); CImg::vector(13,14).move_to(primitives3d); + CImg::vector(14,15).move_to(primitives3d); CImg::vector(15,12).move_to(primitives3d); + CImg::vector(16,17).move_to(primitives3d); CImg::vector(17,18).move_to(primitives3d); + CImg::vector(18,19).move_to(primitives3d); CImg::vector(19,16).move_to(primitives3d); + CImg::vector(12,16).move_to(primitives3d); CImg::vector(13,17).move_to(primitives3d); + CImg::vector(14,18).move_to(primitives3d); CImg::vector(15,19).move_to(primitives3d); + colors3d.insert(12,CImg::vector(255,255,255)); + opacities3d.assign(primitives3d.width(),1,1,1,0.5f); + if (!phase) { + opacities3d[0] = opacities3d[1] = opacities3d[2] = 0.8f; + sel_primitives3d.assign(); + sel_colors3d.assign(); + sel_opacities3d.assign(); + } else { + if (feature_type==2) { + points3d.append(CImg(8,3,1,1, + X0,X1,X1,X0,X0,X1,X1,X0, + Y0,Y0,Y1,Y1,Y0,Y0,Y1,Y1, + Z0,Z0,Z0,Z0,Z1,Z1,Z1,Z1),'x'); + sel_primitives3d.assign(); + CImg::vector(20,21).move_to(sel_primitives3d); + CImg::vector(21,22).move_to(sel_primitives3d); + CImg::vector(22,23).move_to(sel_primitives3d); + CImg::vector(23,20).move_to(sel_primitives3d); + CImg::vector(24,25).move_to(sel_primitives3d); + CImg::vector(25,26).move_to(sel_primitives3d); + CImg::vector(26,27).move_to(sel_primitives3d); + CImg::vector(27,24).move_to(sel_primitives3d); + CImg::vector(20,24).move_to(sel_primitives3d); + CImg::vector(21,25).move_to(sel_primitives3d); + CImg::vector(22,26).move_to(sel_primitives3d); + CImg::vector(23,27).move_to(sel_primitives3d); + } else { + points3d.append(CImg(2,3,1,1, + X0,X1, + Y0,Y1, + Z0,Z1),'x'); + sel_primitives3d.assign(CImg::vector(20,21)); + } + sel_colors3d.assign(sel_primitives3d._width,CImg::vector(255,255,255)); + sel_opacities3d.assign(sel_primitives3d._width,1,1,1,0.8f); + } + points3d.shift_object3d(-0.5f*(_width - 1),-0.5f*(_height - 1),-0.5f*(_depth - 1)).resize_object3d(); + points3d*=0.75f*std::min(view3d._width,view3d._height); + } + + if (!pose3d) CImg(4,3,1,1, 1,0,0,0, 0,1,0,0, 0,0,1,0).move_to(pose3d); + CImg zbuffer3d(view3d._width,view3d._height,1,1,0); + const CImg rotated_points3d = pose3d.get_crop(0,0,2,2)*points3d; + if (sel_primitives3d) + view3d.draw_object3d(pose3d(3,0) + 0.5f*view3d._width, + pose3d(3,1) + 0.5f*view3d._height, + pose3d(3,2), + rotated_points3d,sel_primitives3d,sel_colors3d,sel_opacities3d, + 2,true,500,0,0,0,0,0,1,zbuffer3d); + view3d.draw_object3d(pose3d(3,0) + 0.5f*view3d._width, + pose3d(3,1) + 0.5f*view3d._height, + pose3d(3,2), + rotated_points3d,primitives3d,colors3d,opacities3d, + 2,true,500,0,0,0,0,0,1,zbuffer3d); + visu0.draw_image(x3d,y3d,view3d); + } + visu = visu0; + + if (X<0 || Y<0 || Z<0) { if (!visible_cursor) { disp.show_mouse(); visible_cursor = true; }} + else { + if (is_axes) { if (visible_cursor) { disp.hide_mouse(); visible_cursor = false; }} + else { if (!visible_cursor) { disp.show_mouse(); visible_cursor = true; }} + const int d = (depth()>1)?depth():0; + int _vX = (int)X, _vY = (int)Y, _vZ = (int)Z; + if (phase>=2) { _vX = X1; _vY = Y1; _vZ = Z1; } + int + w = disp.width(), W = width() + d, + h = disp.height(), H = height() + d, + _xp = (int)(_vX*(float)w/W), xp = _xp + ((int)(_xp*(float)W/w)!=_vX), + _yp = (int)(_vY*(float)h/H), yp = _yp + ((int)(_yp*(float)H/h)!=_vY), + _xn = (int)((_vX + 1.f)*w/W - 1), xn = _xn + ((int)((_xn + 1.f)*W/w)!=_vX + 1), + _yn = (int)((_vY + 1.f)*h/H - 1), yn = _yn + ((int)((_yn + 1.f)*H/h)!=_vY + 1), + _zxp = (int)((_vZ + width())*(float)w/W), zxp = _zxp + ((int)(_zxp*(float)W/w)!=_vZ + width()), + _zyp = (int)((_vZ + height())*(float)h/H), zyp = _zyp + ((int)(_zyp*(float)H/h)!=_vZ + height()), + _zxn = (int)((_vZ + width() + 1.f)*w/W - 1), + zxn = _zxn + ((int)((_zxn + 1.f)*W/w)!=_vZ + width() + 1), + _zyn = (int)((_vZ + height() + 1.f)*h/H - 1), + zyn = _zyn + ((int)((_zyn + 1.f)*H/h)!=_vZ + height() + 1), + _xM = (int)(width()*(float)w/W - 1), xM = _xM + ((int)((_xM + 1.f)*W/w)!=width()), + _yM = (int)(height()*(float)h/H - 1), yM = _yM + ((int)((_yM + 1.f)*H/h)!=height()), + xc = (xp + xn)/2, + yc = (yp + yn)/2, + zxc = (zxp + zxn)/2, + zyc = (zyp + zyn)/2, + xf = (int)(X*w/W), + yf = (int)(Y*h/H), + zxf = (int)((Z + width())*w/W), + zyf = (int)((Z + height())*h/H); + + if (is_axes) { // Draw axes + visu.draw_line(0,yf,visu.width() - 1,yf,foreground_color,0.7f,0xFF00FF00). + draw_line(0,yf,visu.width() - 1,yf,background_color,0.7f,0x00FF00FF). + draw_line(xf,0,xf,visu.height() - 1,foreground_color,0.7f,0xFF00FF00). + draw_line(xf,0,xf,visu.height() - 1,background_color,0.7f,0x00FF00FF); + if (_depth>1) + visu.draw_line(zxf,0,zxf,yM,foreground_color,0.7f,0xFF00FF00). + draw_line(zxf,0,zxf,yM,background_color,0.7f,0x00FF00FF). + draw_line(0,zyf,xM,zyf,foreground_color,0.7f,0xFF00FF00). + draw_line(0,zyf,xM,zyf,background_color,0.7f,0x00FF00FF); + } + + // Draw box cursor. + if (xn - xp>=4 && yn - yp>=4) + visu.draw_rectangle(xp,yp,xn,yn,foreground_color,0.2f). + draw_rectangle(xp,yp,xn,yn,foreground_color,1,0xAAAAAAAA). + draw_rectangle(xp,yp,xn,yn,background_color,1,0x55555555); + if (_depth>1) { + if (yn - yp>=4 && zxn - zxp>=4) + visu.draw_rectangle(zxp,yp,zxn,yn,background_color,0.2f). + draw_rectangle(zxp,yp,zxn,yn,foreground_color,1,0xAAAAAAAA). + draw_rectangle(zxp,yp,zxn,yn,background_color,1,0x55555555); + if (xn - xp>=4 && zyn - zyp>=4) + visu.draw_rectangle(xp,zyp,xn,zyn,background_color,0.2f). + draw_rectangle(xp,zyp,xn,zyn,foreground_color,1,0xAAAAAAAA). + draw_rectangle(xp,zyp,xn,zyn,background_color,1,0x55555555); + } + + // Draw selection. + if (phase && (phase!=1 || area_started==area)) { + const int + _xp0 = (int)(X0*(float)w/W), xp0 = _xp0 + ((int)(_xp0*(float)W/w)!=X0), + _yp0 = (int)(Y0*(float)h/H), yp0 = _yp0 + ((int)(_yp0*(float)H/h)!=Y0), + _xn0 = (int)((X0 + 1.f)*w/W - 1), xn0 = _xn0 + ((int)((_xn0 + 1.f)*W/w)!=X0 + 1), + _yn0 = (int)((Y0 + 1.f)*h/H - 1), yn0 = _yn0 + ((int)((_yn0 + 1.f)*H/h)!=Y0 + 1), + _zxp0 = (int)((Z0 + width())*(float)w/W), zxp0 = _zxp0 + ((int)(_zxp0*(float)W/w)!=Z0 + width()), + _zyp0 = (int)((Z0 + height())*(float)h/H), zyp0 = _zyp0 + ((int)(_zyp0*(float)H/h)!=Z0 + height()), + _zxn0 = (int)((Z0 + width() + 1.f)*w/W - 1), + zxn0 = _zxn0 + ((int)((_zxn0 + 1.f)*W/w)!=Z0 + width() + 1), + _zyn0 = (int)((Z0 + height() + 1.f)*h/H - 1), + zyn0 = _zyn0 + ((int)((_zyn0 + 1.f)*H/h)!=Z0 + height() + 1), + xc0 = (xp0 + xn0)/2, + yc0 = (yp0 + yn0)/2, + zxc0 = (zxp0 + zxn0)/2, + zyc0 = (zyp0 + zyn0)/2; + + switch (feature_type) { + case 1 : { // Vector + visu.draw_arrow(xc0,yc0,xc,yc,background_color,0.9f,30,5,0x33333333). + draw_arrow(xc0,yc0,xc,yc,foreground_color,0.9f,30,5,0xCCCCCCCC); + if (d) { + visu.draw_arrow(zxc0,yc0,zxc,yc,background_color,0.9f,30,5,0x33333333). + draw_arrow(zxc0,yc0,zxc,yc,foreground_color,0.9f,30,5,0xCCCCCCCC). + draw_arrow(xc0,zyc0,xc,zyc,background_color,0.9f,30,5,0x33333333). + draw_arrow(xc0,zyc0,xc,zyc,foreground_color,0.9f,30,5,0xCCCCCCCC); + } + } break; + case 2 : { // Box + visu.draw_rectangle(X0=0 && my<13) text_down = true; else if (my>=visu.height() - 13) text_down = false; + if (!feature_type || !phase) { + if (X>=0 && Y>=0 && Z>=0 && X1 || force_display_z_coord) + cimg_snprintf(text,text._width," Point (%d,%d,%d) = [ ",origX + (int)X,origY + (int)Y,origZ + (int)Z); + else cimg_snprintf(text,text._width," Point (%d,%d) = [ ",origX + (int)X,origY + (int)Y); + CImg values = get_vector_at((int)X,(int)Y,(int)Z); + const bool is_large_spectrum = values._height>8; + if (is_large_spectrum) + values.draw_image(0,4,values.get_rows(values._height - 4,values._height - 1)).resize(1,8,1,1,0); + char *ctext = text._data + std::strlen(text), *const ltext = text._data + 512; + for (unsigned int c = 0; c::format_s(), + cimg::type::format(values[c])); + ctext += std::strlen(ctext); + if (c==3 && is_large_spectrum) { + cimg_snprintf(ctext,24," ..."); + ctext += std::strlen(ctext); + } + *(ctext++) = ' '; *ctext = 0; + } + std::strcpy(text._data + std::strlen(text),"] "); + } + } else switch (feature_type) { + case 1 : { + const double dX = (double)(X0 - X1), dY = (double)(Y0 - Y1), dZ = (double)(Z0 - Z1), + length = cimg::round(cimg::hypot(dX,dY,dZ),0.1); + if (_depth>1 || force_display_z_coord) + cimg_snprintf(text,text._width," Vect (%d,%d,%d)-(%d,%d,%d), Length = %g ", + origX + X0,origY + Y0,origZ + Z0,origX + X1,origY + Y1,origZ + Z1,length); + else if (_width!=1 && _height!=1) + cimg_snprintf(text,text._width," Vect (%d,%d)-(%d,%d), Length = %g, Angle = %g\260 ", + origX + X0,origY + Y0,origX + X1,origY + Y1,length, + cimg::round(cimg::mod(180*std::atan2(-dY,-dX)/cimg::PI,360.),0.1)); + else + cimg_snprintf(text,text._width," Vect (%d,%d)-(%d,%d), Length = %g ", + origX + X0,origY + Y0,origX + X1,origY + Y1,length); + } break; + case 2 : { + const double dX = (double)(X0 - X1), dY = (double)(Y0 - Y1), dZ = (double)(Z0 - Z1), + length = cimg::round(cimg::hypot(dX,dY,dZ),0.1); + if (_depth>1 || force_display_z_coord) + cimg_snprintf(text,text._width, + " Box ( %d,%d,%d ) - ( %d,%d,%d )\n Size = ( %d,%d,%d ), Length = %g ", + origX + (X01 || force_display_z_coord) + cimg_snprintf(text,text._width," Ellipse ( %d,%d,%d ) - ( %d,%d,%d ), Radii = ( %d,%d,%d ) ", + origX + X0,origY + Y0,origZ + Z0,origX + X1,origY + Y1,origZ + Z1, + 1 + cimg::abs(X0 - X1),1 + cimg::abs(Y0 - Y1),1 + cimg::abs(Z0 - Z1)); + else cimg_snprintf(text,text._width," Ellipse ( %d,%d ) - ( %d,%d ), Radii = ( %d,%d ) ", + origX + X0,origY + Y0,origX + X1,origY + Y1, + 1 + cimg::abs(X0 - X1),1 + cimg::abs(Y0 - Y1)); + } + if (phase || (mx>=0 && my>=0)) visu.__draw_text("%s",font_size,(int)text_down,text._data); + } + + disp.display(visu); + } + if (!shape_selected) disp.wait(); + if (disp.is_resized()) { disp.resize(false)._is_resized = false; old_is_resized = true; visu0.assign(); } + omx = mx; omy = my; + if (!exit_on_anykey && key && key!=cimg::keyESC && + (key!=cimg::keyW || (!disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT()))) { + key = 0; + } + } + + // Return result. + CImg res(1,feature_type==0?3:6,1,1,-1); + if (XYZ) { XYZ[0] = (unsigned int)X0; XYZ[1] = (unsigned int)Y0; XYZ[2] = (unsigned int)Z0; } + if (shape_selected) { + if (feature_type==2) { + if (is_deep_selection) switch (area_started) { + case 1 : Z0 = 0; Z1 = _depth - 1; break; + case 2 : Y0 = 0; Y1 = _height - 1; break; + case 3 : X0 = 0; X1 = _width - 1; break; + } + if (X0>X1) cimg::swap(X0,X1); + if (Y0>Y1) cimg::swap(Y0,Y1); + if (Z0>Z1) cimg::swap(Z0,Z1); + } + if (X1<0 || Y1<0 || Z1<0) X0 = Y0 = Z0 = X1 = Y1 = Z1 = -1; + switch (feature_type) { + case 1 : case 2 : res[0] = X0; res[1] = Y0; res[2] = Z0; res[3] = X1; res[4] = Y1; res[5] = Z1; break; + case 3 : + res[3] = cimg::abs(X1 - X0); res[4] = cimg::abs(Y1 - Y0); res[5] = cimg::abs(Z1 - Z0); + res[0] = X0; res[1] = Y0; res[2] = Z0; + break; + default : res[0] = X0; res[1] = Y0; res[2] = Z0; + } + } + if (!exit_on_anykey || !(disp.button()&4)) disp.set_button(); + if (!visible_cursor) disp.show_mouse(); + disp._normalization = old_normalization; + disp._is_resized = old_is_resized; + if (key!=~0U) disp.set_key(key); + return res; + } + + // Return a visualizable uchar8 image for display routines. + CImg _get_select(const CImgDisplay& disp, const int normalization, + const int x, const int y, const int z) const { + if (is_empty()) return CImg(1,1,1,1,0); + const CImg crop = get_shared_channels(0,std::min(2,spectrum() - 1)); + CImg img2d; + if (_depth>1) { + const int mdisp = std::min(disp.screen_width(),disp.screen_height()); + if (depth()>mdisp) { + crop.get_resize(-100,-100,mdisp,-100,0).move_to(img2d); + img2d.projections2d(x,y,z*img2d._depth/_depth); + } else crop.get_projections2d(x,y,z).move_to(img2d); + } else CImg(crop,false).move_to(img2d); + + // Check for inf and NaN values. + if (cimg::type::is_float() && normalization) { + bool is_inf = false, is_nan = false; + cimg_for(img2d,ptr,Tuchar) + if (cimg::type::is_inf(*ptr)) { is_inf = true; break; } + else if (cimg::type::is_nan(*ptr)) { is_nan = true; break; } + if (is_inf || is_nan) { + Tint m0 = (Tint)cimg::type::max(), M0 = (Tint)cimg::type::min(); + if (!normalization) { m0 = 0; M0 = 255; } + else if (normalization==2) { m0 = (Tint)disp._min; M0 = (Tint)disp._max; } + else + cimg_for(img2d,ptr,Tuchar) + if (!cimg::type::is_inf(*ptr) && !cimg::type::is_nan(*ptr)) { + if (*ptr<(Tuchar)m0) m0 = *ptr; + if (*ptr>(Tuchar)M0) M0 = *ptr; + } + const T + val_minf = (T)(normalization==1 || normalization==3?m0 - (M0 - m0)*20 - 1:m0), + val_pinf = (T)(normalization==1 || normalization==3?M0 + (M0 - m0)*20 + 1:M0); + if (is_nan) + cimg_for(img2d,ptr,Tuchar) + if (cimg::type::is_nan(*ptr)) *ptr = val_minf; // Replace NaN values + if (is_inf) + cimg_for(img2d,ptr,Tuchar) + if (cimg::type::is_inf(*ptr)) *ptr = (float)*ptr<0?val_minf:val_pinf; // Replace +-inf values + } + } + + switch (normalization) { + case 1 : img2d.normalize((ucharT)0,(ucharT)255); break; + case 2 : { + const float m = disp._min, M = disp._max; + (img2d-=m)*=255.f/(M - m>0?M - m:1); + } break; + case 3 : + if (cimg::type::is_float()) img2d.normalize((ucharT)0,(ucharT)255); + else { + const float + m = (float)cimg::type::min(), + M = (float)cimg::type::max(); + (img2d-=m)*=255.f/(M - m>0?M - m:1); + } break; + } + if (img2d.spectrum()==2) img2d.channels(0,2); + return img2d; + } + + //! Select sub-graph in a graph. + CImg get_select_graph(CImgDisplay &disp, + const unsigned int plot_type=1, const unsigned int vertex_type=1, + const char *const labelx=0, const double xmin=0, const double xmax=0, + const char *const labely=0, const double ymin=0, const double ymax=0, + const bool exit_on_anykey=false) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "select_graph(): Empty instance.", + cimg_instance); + if (!disp) disp.assign(cimg_fitscreen(CImgDisplay::screen_width()/2,CImgDisplay::screen_height()/2,1),0,0). + set_title("CImg<%s>",pixel_type()); + const ulongT siz = (ulongT)_width*_height*_depth; + const unsigned int old_normalization = disp.normalization(); + disp.show().set_button().set_wheel()._normalization = 0; + + double nymin = ymin, nymax = ymax, nxmin = xmin, nxmax = xmax; + if (nymin==nymax) { nymin = (Tfloat)min_max(nymax); const double dy = nymax - nymin; nymin-=dy/20; nymax+=dy/20; } + if (nymin==nymax) { --nymin; ++nymax; } + if (nxmin==nxmax && nxmin==0) { nxmin = 0; nxmax = siz - 1.; } + + static const unsigned char black[] = { 0, 0, 0 }, white[] = { 255, 255, 255 }, gray[] = { 220, 220, 220 }; + static const unsigned char gray2[] = { 110, 110, 110 }, ngray[] = { 35, 35, 35 }; + + CImg colormap(3,_spectrum); + if (_spectrum==1) { colormap[0] = colormap[1] = 120; colormap[2] = 200; } + else { + colormap(0,0) = 220; colormap(1,0) = 10; colormap(2,0) = 10; + if (_spectrum>1) { colormap(0,1) = 10; colormap(1,1) = 220; colormap(2,1) = 10; } + if (_spectrum>2) { colormap(0,2) = 10; colormap(1,2) = 10; colormap(2,2) = 220; } + if (_spectrum>3) { colormap(0,3) = 220; colormap(1,3) = 220; colormap(2,3) = 10; } + if (_spectrum>4) { colormap(0,4) = 220; colormap(1,4) = 10; colormap(2,4) = 220; } + if (_spectrum>5) { colormap(0,5) = 10; colormap(1,5) = 220; colormap(2,5) = 220; } + if (_spectrum>6) { + cimg_uint64 rng = 10; + cimg_for_inY(colormap,6,colormap.height()-1,k) { + colormap(0,k) = (unsigned char)(120 + cimg::rand(-100.f,100.f,&rng)); + colormap(1,k) = (unsigned char)(120 + cimg::rand(-100.f,100.f,&rng)); + colormap(2,k) = (unsigned char)(120 + cimg::rand(-100.f,100.f,&rng)); + } + } + } + + CImg visu0, visu, graph, text, axes; + int x0 = -1, x1 = -1, y0 = -1, y1 = -1, omouse_x = -2, omouse_y = -2; + const unsigned int one = plot_type==3?0U:1U; + unsigned int okey = 0, obutton = 0, font_size = 32; + CImg message(1024); + CImg_3x3(I,unsigned char); + + for (bool selected = false; !selected && !disp.is_closed() && !okey && !disp.wheel(); ) { + const int mouse_x = disp.mouse_x(), mouse_y = disp.mouse_y(); + const unsigned int key = disp.key(), button = disp.button(); + + // Generate graph representation. + if (!visu0) { + visu0.assign(disp.width(),disp.height(),1,3,220); + const int gdimx = disp.width() - 32, gdimy = disp.height() - 32; + if (gdimx>0 && gdimy>0) { + graph.assign(gdimx,gdimy,1,3,255); + if (siz<32) { + if (siz>1) graph.draw_grid(gdimx/(float)(siz - one),gdimy/(float)(siz - one),0,0, + false,true,black,0.2f,0x33333333,0x33333333); + } else graph.draw_grid(-10,-10,0,0,false,true,black,0.2f,0x33333333,0x33333333); + cimg_forC(*this,c) + graph.draw_graph(get_shared_channel(c),&colormap(0,c),(plot_type!=3 || _spectrum==1)?1:0.6f, + plot_type,vertex_type,nymax,nymin); + + axes.assign(gdimx,gdimy,1,1,0); + const float + dx = (float)cimg::abs(nxmax - nxmin), dy = (float)cimg::abs(nymax - nymin), + px = (float)std::pow(10.,(int)std::log10(dx?dx:1) - 2.), + py = (float)std::pow(10.,(int)std::log10(dy?dy:1) - 2.); + const CImg + seqx = dx<=0?CImg::vector(nxmin): + CImg::sequence(1 + gdimx/60,nxmin,one?nxmax:nxmin + (nxmax - nxmin)*(siz + 1)/siz), + seqy = CImg::sequence(1 + gdimy/60,nymax,nymin); + + const bool allow_zero = (nxmin*nxmax>0) || (nymin*nymax>0); + axes.draw_axes(seqx,seqy,white,1,~0U,~0U,13,allow_zero,px,py); + if (nymin>0) axes.draw_axis(seqx,gdimy - 1,gray,1,~0U,13,allow_zero,px); + if (nymax<0) axes.draw_axis(seqx,0,gray,1,~0U,13,allow_zero,px); + if (nxmin>0) axes.draw_axis(0,seqy,gray,1,~0U,13,allow_zero,py); + if (nxmax<0) axes.draw_axis(gdimx - 1,seqy,gray,1,~0U,13,allow_zero,py); + + cimg_for3x3(axes,x,y,0,0,I,unsigned char) + if (Icc) { + if (Icc==255) cimg_forC(graph,c) graph(x,y,c) = 0; + else cimg_forC(graph,c) graph(x,y,c) = (unsigned char)(2*graph(x,y,c)/3); + } + else if (Ipc || Inc || Icp || Icn || Ipp || Inn || Ipn || Inp) + cimg_forC(graph,c) graph(x,y,c) = (unsigned char)((graph(x,y,c) + 511)/3); + + visu0.draw_image(16,16,graph); + visu0.draw_line(15,15,16 + gdimx,15,gray2).draw_line(16 + gdimx,15,16 + gdimx,16 + gdimy,gray2). + draw_line(16 + gdimx,16 + gdimy,15,16 + gdimy,white).draw_line(15,16 + gdimy,15,15,white); + } else graph.assign(); + text.assign().draw_text(0,0,labelx?labelx:"X-axis",white,ngray,1,13).resize(-100,-100,1,3); + visu0.draw_image((visu0.width() - text.width())/2,visu0.height() - 14,~text); + text.assign().draw_text(0,0,labely?labely:"Y-axis",white,ngray,1,13).rotate(-90).resize(-100,-100,1,3); + visu0.draw_image(1,(visu0.height() - text.height())/2,~text); + visu.assign(); + } + + // Generate and display current view. + if (!visu) { + visu.assign(visu0); + if (graph && x0>=0 && x1>=0) { + const int + nx0 = x0<=x1?x0:x1, + nx1 = x0<=x1?x1:x0, + ny0 = y0<=y1?y0:y1, + ny1 = y0<=y1?y1:y0, + sx0 = (int)(16 + nx0*(visu.width() - 32)/std::max((ulongT)1,siz - one)), + sx1 = (int)(15 + (nx1 + 1)*(visu.width() - 32)/std::max((ulongT)1,siz - one)), + sy0 = 16 + ny0, + sy1 = 16 + ny1; + if (y0>=0 && y1>=0) + visu.draw_rectangle(sx0,sy0,sx1,sy1,gray,0.5f).draw_rectangle(sx0,sy0,sx1,sy1,black,0.5f,0xCCCCCCCCU); + else visu.draw_rectangle(sx0,0,sx1,visu.height() - 17,gray,0.5f). + draw_line(sx0,16,sx0,visu.height() - 17,black,0.5f,0xCCCCCCCCU). + draw_line(sx1,16,sx1,visu.height() - 17,black,0.5f,0xCCCCCCCCU); + } + if (mouse_x>=16 && mouse_y>=16 && mouse_x=7) + cimg_snprintf(message,message._width,"Value[%u:%g] = ( %g %g %g ... %g %g %g )",x,cx, + (double)(*this)(x,0,0,0),(double)(*this)(x,0,0,1),(double)(*this)(x,0,0,2), + (double)(*this)(x,0,0,_spectrum - 4),(double)(*this)(x,0,0,_spectrum - 3), + (double)(*this)(x,0,0,_spectrum - 1)); + else { + cimg_snprintf(message,message._width,"Value[%u:%g] = ( ",x,cx); + cimg_forC(*this,c) cimg_sprintf(message._data + std::strlen(message),"%g ",(double)(*this)(x,0,0,c)); + cimg_sprintf(message._data + std::strlen(message),")"); + } + if (x0>=0 && x1>=0) { + const unsigned int + nx0 = (unsigned int)(x0<=x1?x0:x1), + nx1 = (unsigned int)(x0<=x1?x1:x0), + ny0 = (unsigned int)(y0<=y1?y0:y1), + ny1 = (unsigned int)(y0<=y1?y1:y0); + const double + cx0 = nxmin + nx0*(nxmax - nxmin)/std::max((ulongT)1,siz - 1), + cx1 = nxmin + (nx1 + one)*(nxmax - nxmin)/std::max((ulongT)1,siz - 1), + cy0 = nymax - ny0*(nymax - nymin)/(visu._height - 32), + cy1 = nymax - ny1*(nymax - nymin)/(visu._height - 32); + if (y0>=0 && y1>=0) + cimg_sprintf(message._data + std::strlen(message)," - Range ( %u:%g, %g ) - ( %u:%g, %g )", + x0,cx0,cy0,x1 + one,cx1,cy1); + else + cimg_sprintf(message._data + std::strlen(message)," - Range [ %u:%g - %u:%g ]", + x0,cx0,x1 + one,cx1); + } + text.assign().draw_text(0,0,message,white,ngray,1,13).resize(-100,-100,1,3); + visu.draw_image((visu.width() - text.width())/2,1,~text); + } + visu.display(disp); + } + + // Test keys. + CImg filename(32); + switch (okey = key) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : case cimg::keySHIFTRIGHT : +#endif + case cimg::keyCTRLLEFT : case cimg::keySHIFTLEFT : okey = 0; break; + case cimg::keyD : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,false), + CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,true),false). + _is_resized = true; + disp.set_key(key,false); okey = 0; + } break; + case cimg::keyC : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(2*disp.width()/3,2*disp.height()/3,1),false)._is_resized = true; + disp.set_key(key,false); okey = 0; + } break; + case cimg::keyR : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(CImgDisplay::screen_width()/2, + CImgDisplay::screen_height()/2,1),false)._is_resized = true; + disp.set_key(key,false); okey = 0; + } break; + case cimg::keyF : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.resize(disp.screen_width(),disp.screen_height(),false).toggle_fullscreen()._is_resized = true; + disp.set_key(key,false); okey = 0; + } break; + case cimg::keyS : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + if (visu || visu0) { + CImg &screen = visu?visu:visu0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.bmp",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+screen).__draw_text(" Saving snapshot... ",font_size,0).display(disp); + screen.save(filename); + (+screen).__draw_text(" Snapshot '%s' saved. ",font_size,0,filename._data).display(disp); + } + disp.set_key(key,false); okey = 0; + } break; + case cimg::keyO : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + if (visu || visu0) { + CImg &screen = visu?visu:visu0; + std::FILE *file; + do { + +#ifdef cimg_use_zlib + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimgz",snap_number++); +#else + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimg",snap_number++); +#endif + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+screen).__draw_text(" Saving instance... ",font_size,0).display(disp); + save(filename); + (+screen).__draw_text(" Instance '%s' saved. ",font_size,0,filename._data).display(disp); + } + disp.set_key(key,false); okey = 0; + } break; + } + + // Handle mouse motion and mouse buttons. + if (obutton!=button || omouse_x!=mouse_x || omouse_y!=mouse_y) { + visu.assign(); + if (disp.mouse_x()>=0 && disp.mouse_y()>=0) { + const int + mx = (mouse_x - 16)*(int)(siz - one)/(disp.width() - 32), + cx = cimg::cut(mx,0,(int)(siz - 1 - one)), + my = mouse_y - 16, + cy = cimg::cut(my,0,disp.height() - 32); + if (button&1) { + if (!obutton) { x0 = cx; y0 = -1; } else { x1 = cx; y1 = -1; } + } + else if (button&2) { + if (!obutton) { x0 = cx; y0 = cy; } else { x1 = cx; y1 = cy; } + } + else if (obutton) { x1 = x1>=0?cx:-1; y1 = y1>=0?cy:-1; selected = true; } + } else if (!button && obutton) selected = true; + obutton = button; omouse_x = mouse_x; omouse_y = mouse_y; + } + if (disp.is_resized()) { disp.resize(false); visu0.assign(); } + if (visu && visu0) disp.wait(); + if (!exit_on_anykey && okey && okey!=cimg::keyESC && + (okey!=cimg::keyW || (!disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT()))) { + disp.set_key(key,false); + okey = 0; + } + } + + disp._normalization = old_normalization; + if (x1>=0 && x1(4,1,1,1,x0,y0,x1>=0?x1 + (int)one:-1,y1); + } + + //! Load image from a file. + /** + \param filename Filename, as a C-string. + \note The extension of \c filename defines the file format. If no filename + extension is provided, CImg::get_load() will try to load the file as a .cimg or .cimgz file. + **/ + CImg& load(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load(): Specified filename is (null).", + cimg_instance); + + if (!cimg::strncasecmp(filename,"http://",7) || !cimg::strncasecmp(filename,"https://",8)) { + CImg filename_local(256); + load(cimg::load_network(filename,filename_local)); + std::remove(filename_local); + return *this; + } + + const char *const ext = cimg::split_filename(filename); + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + bool is_loaded = true; + try { +#ifdef cimg_load_plugin + cimg_load_plugin(filename); +#endif +#ifdef cimg_load_plugin1 + cimg_load_plugin1(filename); +#endif +#ifdef cimg_load_plugin2 + cimg_load_plugin2(filename); +#endif +#ifdef cimg_load_plugin3 + cimg_load_plugin3(filename); +#endif +#ifdef cimg_load_plugin4 + cimg_load_plugin4(filename); +#endif +#ifdef cimg_load_plugin5 + cimg_load_plugin5(filename); +#endif +#ifdef cimg_load_plugin6 + cimg_load_plugin6(filename); +#endif +#ifdef cimg_load_plugin7 + cimg_load_plugin7(filename); +#endif +#ifdef cimg_load_plugin8 + cimg_load_plugin8(filename); +#endif + // Text formats + if (!cimg::strcasecmp(ext,"asc")) load_ascii(filename); + else if (!cimg::strcasecmp(ext,"csv") || + !cimg::strcasecmp(ext,"dlm") || + !cimg::strcasecmp(ext,"txt")) load_dlm(filename); + else if (!cimg::strcasecmp(ext,"pdf")) load_pdf_external(filename); + + // 2D binary formats + else if (!cimg::strcasecmp(ext,"bmp")) load_bmp(filename); + else if (!cimg::strcasecmp(ext,"jpg") || + !cimg::strcasecmp(ext,"jpeg") || + !cimg::strcasecmp(ext,"jpe") || + !cimg::strcasecmp(ext,"jfif") || + !cimg::strcasecmp(ext,"jif")) load_jpeg(filename); + else if (!cimg::strcasecmp(ext,"png")) load_png(filename); + else if (!cimg::strcasecmp(ext,"ppm") || + !cimg::strcasecmp(ext,"pgm") || + !cimg::strcasecmp(ext,"pnm") || + !cimg::strcasecmp(ext,"pbm") || + !cimg::strcasecmp(ext,"pnk")) load_pnm(filename); + else if (!cimg::strcasecmp(ext,"pfm")) load_pfm(filename); + else if (!cimg::strcasecmp(ext,"tif") || + !cimg::strcasecmp(ext,"tiff")) load_tiff(filename); + else if (!cimg::strcasecmp(ext,"exr")) load_exr(filename); + else if (!cimg::strcasecmp(ext,"cr2") || + !cimg::strcasecmp(ext,"crw") || + !cimg::strcasecmp(ext,"dcr") || + !cimg::strcasecmp(ext,"mrw") || + !cimg::strcasecmp(ext,"nef") || + !cimg::strcasecmp(ext,"orf") || + !cimg::strcasecmp(ext,"pix") || + !cimg::strcasecmp(ext,"ptx") || + !cimg::strcasecmp(ext,"raf") || + !cimg::strcasecmp(ext,"srf")) load_dcraw_external(filename); + else if (!cimg::strcasecmp(ext,"gif")) load_gif_external(filename); + else if (!cimg::strcasecmp(ext,"heic") || + !cimg::strcasecmp(ext,"avif")) load_heif(filename); + + // 3D binary formats + else if (!cimg::strcasecmp(ext,"dcm") || + !cimg::strcasecmp(ext,"dicom")) load_medcon_external(filename); + else if (!cimg::strcasecmp(ext,"hdr") || + !cimg::strcasecmp(ext,"nii")) load_analyze(filename); + else if (!cimg::strcasecmp(ext,"par") || + !cimg::strcasecmp(ext,"rec")) load_parrec(filename); + else if (!cimg::strcasecmp(ext,"mnc")) load_minc2(filename); + else if (!cimg::strcasecmp(ext,"inr")) load_inr(filename); + else if (!cimg::strcasecmp(ext,"pan")) load_pandore(filename); + else if (!cimg::strcasecmp(ext,"cimg") || + !cimg::strcasecmp(ext,"cimgz") || + !*ext) return load_cimg(filename); + + // Archive files + else if (!cimg::strcasecmp(ext,"gz")) load_gzip_external(filename); + + // Image sequences + else if (!cimg::strcasecmp(ext,"avi") || + !cimg::strcasecmp(ext,"mov") || + !cimg::strcasecmp(ext,"asf") || + !cimg::strcasecmp(ext,"divx") || + !cimg::strcasecmp(ext,"flv") || + !cimg::strcasecmp(ext,"mpg") || + !cimg::strcasecmp(ext,"m1v") || + !cimg::strcasecmp(ext,"m2v") || + !cimg::strcasecmp(ext,"m4v") || + !cimg::strcasecmp(ext,"mjp") || + !cimg::strcasecmp(ext,"mp4") || + !cimg::strcasecmp(ext,"mkv") || + !cimg::strcasecmp(ext,"mpe") || + !cimg::strcasecmp(ext,"movie") || + !cimg::strcasecmp(ext,"ogm") || + !cimg::strcasecmp(ext,"ogg") || + !cimg::strcasecmp(ext,"ogv") || + !cimg::strcasecmp(ext,"qt") || + !cimg::strcasecmp(ext,"rm") || + !cimg::strcasecmp(ext,"vob") || + !cimg::strcasecmp(ext,"webm") || + !cimg::strcasecmp(ext,"wmv") || + !cimg::strcasecmp(ext,"xvid") || + !cimg::strcasecmp(ext,"mpeg")) load_video(filename); + else is_loaded = false; + } catch (CImgIOException&) { is_loaded = false; } + + // If nothing loaded, try to guess file format from magic number in file. + if (!is_loaded) { + std::FILE *file = cimg::std_fopen(filename,"rb"); + if (!file) { + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load(): Failed to open file '%s'.", + cimg_instance, + filename); + } + + const char *const f_type = cimg::ftype(file,filename); + cimg::fclose(file); + is_loaded = true; + try { + if (!cimg::strcasecmp(f_type,"pnm")) load_pnm(filename); + else if (!cimg::strcasecmp(f_type,"pfm")) load_pfm(filename); + else if (!cimg::strcasecmp(f_type,"bmp")) load_bmp(filename); + else if (!cimg::strcasecmp(f_type,"inr")) load_inr(filename); + else if (!cimg::strcasecmp(f_type,"jpg")) load_jpeg(filename); + else if (!cimg::strcasecmp(f_type,"pan")) load_pandore(filename); + else if (!cimg::strcasecmp(f_type,"png")) load_png(filename); + else if (!cimg::strcasecmp(f_type,"tif")) load_tiff(filename); + else if (!cimg::strcasecmp(f_type,"gif")) load_gif_external(filename); + else if (!cimg::strcasecmp(f_type,"dcm")) load_medcon_external(filename); + else is_loaded = false; + } catch (CImgIOException&) { is_loaded = false; } + } + + // If nothing loaded, try to load file with other means. + if (!is_loaded) { + try { + load_other(filename); + } catch (CImgIOException&) { + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load(): Failed to recognize format of file '%s'.", + cimg_instance, + filename); + } + } + cimg::exception_mode(omode); + return *this; + } + + //! Load image from a file \newinstance. + static CImg get_load(const char *const filename) { + return CImg().load(filename); + } + + //! Load image from an ascii file. + /** + \param filename Filename, as a C -string. + **/ + CImg& load_ascii(const char *const filename) { + return _load_ascii(0,filename); + } + + //! Load image from an ascii file \inplace. + static CImg get_load_ascii(const char *const filename) { + return CImg().load_ascii(filename); + } + + //! Load image from an ascii file \overloading. + CImg& load_ascii(std::FILE *const file) { + return _load_ascii(file,0); + } + + //! Loadimage from an ascii file \newinstance. + static CImg get_load_ascii(std::FILE *const file) { + return CImg().load_ascii(file); + } + + CImg& _load_ascii(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_ascii(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + CImg line(256); *line = 0; + int err = std::fscanf(nfile,"%255[^\n]",line._data); + unsigned int dx = 0, dy = 1, dz = 1, dc = 1; + cimg_sscanf(line,"%u%*c%u%*c%u%*c%u",&dx,&dy,&dz,&dc); + err = std::fscanf(nfile,"%*[^0-9.eEinfa+-]"); + if (!dx || !dy || !dz || !dc) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_ascii(): Invalid ascii header in file '%s', image dimensions are set " + "to (%u,%u,%u,%u).", + cimg_instance, + filename?filename:"(FILE*)",dx,dy,dz,dc); + } + assign(dx,dy,dz,dc); + const ulongT siz = size(); + ulongT off = 0; + double val; + T *ptr = _data; + for (err = 1, off = 0; off& load_dlm(const char *const filename) { + return _load_dlm(0,filename); + } + + //! Load image from a DLM file \newinstance. + static CImg get_load_dlm(const char *const filename) { + return CImg().load_dlm(filename); + } + + //! Load image from a DLM file \overloading. + CImg& load_dlm(std::FILE *const file) { + return _load_dlm(file,0); + } + + //! Load image from a DLM file \newinstance. + static CImg get_load_dlm(std::FILE *const file) { + return CImg().load_dlm(file); + } + + CImg& _load_dlm(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_dlm(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"r"); + CImg delimiter(256), tmp(256); *delimiter = *tmp = 0; + unsigned int cdx = 0, dx = 0, dy = 0; + int err = 0; + double val; + assign(256,256,1,1,(T)0); + while ((err = std::fscanf(nfile,"%lf%255[^0-9eEinfa.+-]",&val,delimiter._data))>0) { + if (err>0) (*this)(cdx++,dy) = (T)val; + if (cdx>=_width) resize(3*_width/2,_height,1,1,0); + char c = 0; + if (!cimg_sscanf(delimiter,"%255[^\n]%c",tmp._data,&c) || c=='\n') { + dx = std::max(cdx,dx); + if (++dy>=_height) resize(_width,3*_height/2,1,1,0); + cdx = 0; + } + } + if (cdx && err==1) { dx = cdx; ++dy; } + if (!dx || !dy) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_dlm(): Invalid DLM file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + resize(dx,dy,1,1,0); + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a BMP file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_bmp(const char *const filename) { + return _load_bmp(0,filename); + } + + //! Load image from a BMP file \newinstance. + static CImg get_load_bmp(const char *const filename) { + return CImg().load_bmp(filename); + } + + //! Load image from a BMP file \overloading. + CImg& load_bmp(std::FILE *const file) { + return _load_bmp(file,0); + } + + //! Load image from a BMP file \newinstance. + static CImg get_load_bmp(std::FILE *const file) { + return CImg().load_bmp(file); + } + + CImg& _load_bmp(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_bmp(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + CImg header(54); + cimg::fread(header._data,54,nfile); + if (*header!='B' || header[1]!='M') { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_bmp(): Invalid BMP file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + + // Read header and pixel buffer + int + file_size = header[0x02] + (header[0x03]<<8) + (header[0x04]<<16) + (header[0x05]<<24), + offset = header[0x0A] + (header[0x0B]<<8) + (header[0x0C]<<16) + (header[0x0D]<<24), + header_size = header[0x0E] + (header[0x0F]<<8) + (header[0x10]<<16) + (header[0x11]<<24), + dx = header[0x12] + (header[0x13]<<8) + (header[0x14]<<16) + (header[0x15]<<24), + dy = header[0x16] + (header[0x17]<<8) + (header[0x18]<<16) + (header[0x19]<<24), + compression = header[0x1E] + (header[0x1F]<<8) + (header[0x20]<<16) + (header[0x21]<<24), + nb_colors = header[0x2E] + (header[0x2F]<<8) + (header[0x30]<<16) + (header[0x31]<<24), + bpp = header[0x1C] + (header[0x1D]<<8); + + if (!file_size || file_size==offset) { + cimg::fseek(nfile,0,SEEK_END); + file_size = (int)cimg::ftell(nfile); + cimg::fseek(nfile,54,SEEK_SET); + } + if (header_size>40) cimg::fseek(nfile,header_size - 40,SEEK_CUR); + + const int + dx_bytes = (bpp==1)?(dx/8 + (dx%8?1:0)):((bpp==4)?(dx/2 + (dx%2)):(int)((longT)dx*bpp/8)), + align_bytes = (4 - dx_bytes%4)%4; + const ulongT + cimg_iobuffer = (ulongT)24*1024*1024, + buf_size = (ulongT)cimg::abs(dy)*(dx_bytes + align_bytes); + + CImg colormap; + if (bpp<16) { if (!nb_colors) nb_colors = 1<0) cimg::fseek(nfile,xoffset,SEEK_CUR); + + CImg buffer; + if (buf_size=2) for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + unsigned char mask = 0x80, val = 0; + cimg_forX(*this,x) { + if (mask==0x80) val = *(ptrs++); + const unsigned char *col = (unsigned char*)(colormap._data + (val&mask?1:0)); + (*this)(x,y,2) = (T)*(col++); + (*this)(x,y,1) = (T)*(col++); + (*this)(x,y,0) = (T)*(col++); + mask = cimg::ror(mask); + } + ptrs+=align_bytes; + } + } break; + case 4 : { // 16 colors + if (colormap._width>=16) for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + unsigned char mask = 0xF0, val = 0; + cimg_forX(*this,x) { + if (mask==0xF0) val = *(ptrs++); + const unsigned char color = (unsigned char)((mask<16)?(val&mask):((val&mask)>>4)); + const unsigned char *col = (unsigned char*)(colormap._data + color); + (*this)(x,y,2) = (T)*(col++); + (*this)(x,y,1) = (T)*(col++); + (*this)(x,y,0) = (T)*(col++); + mask = cimg::ror(mask,4); + } + ptrs+=align_bytes; + } + } break; + case 8 : { // 256 colors + if (colormap._width>=256) for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + cimg_forX(*this,x) { + const unsigned char *col = (unsigned char*)(colormap._data + *(ptrs++)); + (*this)(x,y,2) = (T)*(col++); + (*this)(x,y,1) = (T)*(col++); + (*this)(x,y,0) = (T)*(col++); + } + ptrs+=align_bytes; + } + } break; + case 16 : { // 16 bits colors (RGB565) + for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + cimg_forX(*this,x) { + const unsigned char c1 = *(ptrs++), c2 = *(ptrs++); + const unsigned short col = (unsigned short)c2<<8 | c1; + (*this)(x,y,2) = (T)((col&0x1F)<<3); + (*this)(x,y,1) = (T)(((col>>5)&0x3F)<<3); + (*this)(x,y,0) = (T)(((col>>11)&0x1F)<<3); + } + ptrs+=align_bytes; + } + } break; + case 24 : { // 24 bits colors + for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + cimg_forX(*this,x) { + (*this)(x,y,2) = (T)*(ptrs++); + (*this)(x,y,1) = (T)*(ptrs++); + (*this)(x,y,0) = (T)*(ptrs++); + } + ptrs+=align_bytes; + } + } break; + case 32 : { // 32 bits colors + for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + cimg_forX(*this,x) { + (*this)(x,y,2) = (T)*(ptrs++); + (*this)(x,y,1) = (T)*(ptrs++); + (*this)(x,y,0) = (T)*(ptrs++); + ++ptrs; + } + ptrs+=align_bytes; + } + } break; + } + if (dy<0) mirror('y'); + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a JPEG file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_jpeg(const char *const filename) { + return _load_jpeg(0,filename); + } + + //! Load image from a JPEG file \newinstance. + static CImg get_load_jpeg(const char *const filename) { + return CImg().load_jpeg(filename); + } + + //! Load image from a JPEG file \overloading. + CImg& load_jpeg(std::FILE *const file) { + return _load_jpeg(file,0); + } + + //! Load image from a JPEG file \newinstance. + static CImg get_load_jpeg(std::FILE *const file) { + return CImg().load_jpeg(file); + } + + // Custom error handler for libjpeg. +#ifdef cimg_use_jpeg + struct _cimg_error_mgr { + struct jpeg_error_mgr original; + jmp_buf setjmp_buffer; + char message[JMSG_LENGTH_MAX]; + }; + + typedef struct _cimg_error_mgr *_cimg_error_ptr; + + METHODDEF(void) _cimg_jpeg_error_exit(j_common_ptr cinfo) { + _cimg_error_ptr c_err = (_cimg_error_ptr) cinfo->err; // Return control to the setjmp point + (*cinfo->err->format_message)(cinfo,c_err->message); + jpeg_destroy(cinfo); // Clean memory and temp files + longjmp(c_err->setjmp_buffer,1); + } +#endif + + CImg& _load_jpeg(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_jpeg(): Specified filename is (null).", + cimg_instance); + +#ifndef cimg_use_jpeg + if (file) + throw CImgIOException(_cimg_instance + "load_jpeg(): Unable to load data from '(FILE*)' unless libjpeg is enabled.", + cimg_instance); + else return load_other(filename); +#else + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + struct jpeg_decompress_struct cinfo; + struct _cimg_error_mgr jerr; + cinfo.err = jpeg_std_error(&jerr.original); + jerr.original.error_exit = _cimg_jpeg_error_exit; + if (setjmp(jerr.setjmp_buffer)) { // JPEG error + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_jpeg(): Error message returned by libjpeg: %s.", + cimg_instance,jerr.message); + } + + jpeg_create_decompress(&cinfo); + jpeg_stdio_src(&cinfo,nfile); + jpeg_read_header(&cinfo,TRUE); + jpeg_start_decompress(&cinfo); + + if (cinfo.output_components!=1 && cinfo.output_components!=3 && cinfo.output_components!=4) { + if (!file) { + cimg::fclose(nfile); + return load_other(filename); + } else + throw CImgIOException(_cimg_instance + "load_jpeg(): Failed to load JPEG data from file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + CImg buffer(cinfo.output_width*cinfo.output_components); + JSAMPROW row_pointer[1]; + try { assign(cinfo.output_width,cinfo.output_height,1,cinfo.output_components); } + catch (...) { if (!file) cimg::fclose(nfile); throw; } + T *ptr_r = _data, *ptr_g = _data + 1UL*_width*_height, *ptr_b = _data + 2UL*_width*_height, + *ptr_a = _data + 3UL*_width*_height; + while (cinfo.output_scanline + // This is experimental code, not much tested, use with care. + CImg& load_magick(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_magick(): Specified filename is (null).", + cimg_instance); + +#ifdef cimg_use_magick + Magick::Image image(filename); + const unsigned int W = image.size().width(), H = image.size().height(); + switch (image.type()) { + case Magick::PaletteMatteType : + case Magick::TrueColorMatteType : + case Magick::ColorSeparationType : { + assign(W,H,1,4); + T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2), *ptr_a = data(0,0,0,3); + Magick::PixelPacket *pixels = image.getPixels(0,0,W,H); + for (ulongT off = (ulongT)W*H; off; --off) { + *(ptr_r++) = (T)(pixels->red); + *(ptr_g++) = (T)(pixels->green); + *(ptr_b++) = (T)(pixels->blue); + *(ptr_a++) = (T)(pixels->opacity); + ++pixels; + } + } break; + case Magick::PaletteType : + case Magick::TrueColorType : { + assign(W,H,1,3); + T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2); + Magick::PixelPacket *pixels = image.getPixels(0,0,W,H); + for (ulongT off = (ulongT)W*H; off; --off) { + *(ptr_r++) = (T)(pixels->red); + *(ptr_g++) = (T)(pixels->green); + *(ptr_b++) = (T)(pixels->blue); + ++pixels; + } + } break; + case Magick::GrayscaleMatteType : { + assign(W,H,1,2); + T *ptr_r = data(0,0,0,0), *ptr_a = data(0,0,0,1); + Magick::PixelPacket *pixels = image.getPixels(0,0,W,H); + for (ulongT off = (ulongT)W*H; off; --off) { + *(ptr_r++) = (T)(pixels->red); + *(ptr_a++) = (T)(pixels->opacity); + ++pixels; + } + } break; + default : { + assign(W,H,1,1); + T *ptr_r = data(0,0,0,0); + Magick::PixelPacket *pixels = image.getPixels(0,0,W,H); + for (ulongT off = (ulongT)W*H; off; --off) { + *(ptr_r++) = (T)(pixels->red); + ++pixels; + } + } + } + return *this; +#else + throw CImgIOException(_cimg_instance + "load_magick(): Unable to load file '%s' unless libMagick++ is enabled.", + cimg_instance, + filename); +#endif + } + + //! Load image from a file, using Magick++ library \newinstance. + static CImg get_load_magick(const char *const filename) { + return CImg().load_magick(filename); + } + + //! Load image from a PNG file. + /** + \param filename Filename, as a C-string. + \param[out] bits_per_pixel Number of bits per pixels used to store pixel values in the image file. + **/ + CImg& load_png(const char *const filename, unsigned int *const bits_per_pixel=0) { + return _load_png(0,filename,bits_per_pixel); + } + + //! Load image from a PNG file \newinstance. + static CImg get_load_png(const char *const filename, unsigned int *const bits_per_pixel=0) { + return CImg().load_png(filename,bits_per_pixel); + } + + //! Load image from a PNG file \overloading. + CImg& load_png(std::FILE *const file, unsigned int *const bits_per_pixel=0) { + return _load_png(file,0,bits_per_pixel); + } + + //! Load image from a PNG file \newinstance. + static CImg get_load_png(std::FILE *const file, unsigned int *const bits_per_pixel=0) { + return CImg().load_png(file,bits_per_pixel); + } + + // (Note: Most of this function has been written by Eric Fausett) + CImg& _load_png(std::FILE *const file, const char *const filename, unsigned int *const bits_per_pixel) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_png(): Specified filename is (null).", + cimg_instance); + +#ifndef cimg_use_png + cimg::unused(bits_per_pixel); + if (file) + throw CImgIOException(_cimg_instance + "load_png(): Unable to load data from '(FILE*)' unless libpng is enabled.", + cimg_instance); + + else return load_other(filename); +#else + // Open file and check for PNG validity +#if defined __GNUC__ + const char *volatile nfilename = filename; // Use 'volatile' to avoid (wrong) g++ warning + std::FILE *volatile nfile = file?file:cimg::fopen(nfilename,"rb"); +#else + const char *nfilename = filename; + std::FILE *nfile = file?file:cimg::fopen(nfilename,"rb"); +#endif + unsigned char pngCheck[8] = { 0 }; + cimg::fread(pngCheck,8,(std::FILE*)nfile); + if (png_sig_cmp(pngCheck,0,8)) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_png(): Invalid PNG file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + + // Setup PNG structures for read + png_voidp user_error_ptr = 0; + png_error_ptr user_error_fn = 0, user_warning_fn = 0; + png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,user_error_ptr,user_error_fn,user_warning_fn); + if (!png_ptr) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_png(): Failed to initialize 'png_ptr' structure for file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_infop info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) { + if (!file) cimg::fclose(nfile); + png_destroy_read_struct(&png_ptr,(png_infopp)0,(png_infopp)0); + throw CImgIOException(_cimg_instance + "load_png(): Failed to initialize 'info_ptr' structure for file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_infop end_info = png_create_info_struct(png_ptr); + if (!end_info) { + if (!file) cimg::fclose(nfile); + png_destroy_read_struct(&png_ptr,&info_ptr,(png_infopp)0); + throw CImgIOException(_cimg_instance + "load_png(): Failed to initialize 'end_info' structure for file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + + // Error handling callback for png file reading + if (setjmp(png_jmpbuf(png_ptr))) { + if (!file) cimg::fclose((std::FILE*)nfile); + png_destroy_read_struct(&png_ptr, &end_info, (png_infopp)0); + throw CImgIOException(_cimg_instance + "load_png(): Encountered unknown fatal error in libpng for file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_init_io(png_ptr, nfile); + png_set_sig_bytes(png_ptr, 8); + + // Get PNG Header Info up to data block + png_read_info(png_ptr,info_ptr); + png_uint_32 W, H; + int bit_depth, color_type, interlace_type; + bool is_gray = false; + png_get_IHDR(png_ptr,info_ptr,&W,&H,&bit_depth,&color_type,&interlace_type,(int*)0,(int*)0); + if (bits_per_pixel) *bits_per_pixel = (unsigned int)bit_depth; + + // Transforms to unify image data + if (color_type==PNG_COLOR_TYPE_PALETTE) { + png_set_palette_to_rgb(png_ptr); + color_type = PNG_COLOR_TYPE_RGB; + bit_depth = 8; + } + if (color_type==PNG_COLOR_TYPE_GRAY && bit_depth<8) { + png_set_expand_gray_1_2_4_to_8(png_ptr); + is_gray = true; + bit_depth = 8; + } + if (png_get_valid(png_ptr,info_ptr,PNG_INFO_tRNS)) { + png_set_tRNS_to_alpha(png_ptr); + color_type |= PNG_COLOR_MASK_ALPHA; + } + if (color_type==PNG_COLOR_TYPE_GRAY || color_type==PNG_COLOR_TYPE_GRAY_ALPHA) { + png_set_gray_to_rgb(png_ptr); + color_type |= PNG_COLOR_MASK_COLOR; + is_gray = true; + } + if (color_type==PNG_COLOR_TYPE_RGB) + png_set_filler(png_ptr,0xffffU,PNG_FILLER_AFTER); + + png_read_update_info(png_ptr,info_ptr); + if (bit_depth!=8 && bit_depth!=16) { + if (!file) cimg::fclose(nfile); + png_destroy_read_struct(&png_ptr,&end_info,(png_infopp)0); + throw CImgIOException(_cimg_instance + "load_png(): Invalid bit depth %u in file '%s'.", + cimg_instance, + bit_depth,nfilename?nfilename:"(FILE*)"); + } + const int byte_depth = bit_depth>>3; + + // Allocate memory for image reading + png_bytep *const imgData = new png_bytep[H]; + for (unsigned int row = 0; row& load_pnm(const char *const filename) { + return _load_pnm(0,filename); + } + + //! Load image from a PNM file \newinstance. + static CImg get_load_pnm(const char *const filename) { + return CImg().load_pnm(filename); + } + + //! Load image from a PNM file \overloading. + CImg& load_pnm(std::FILE *const file) { + return _load_pnm(file,0); + } + + //! Load image from a PNM file \newinstance. + static CImg get_load_pnm(std::FILE *const file) { + return CImg().load_pnm(file); + } + + CImg& _load_pnm(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_pnm(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + unsigned int ppm_type, W, H, D = 1, colormax = 255; + CImg item(16384,1,1,1,0); + int err, rval, gval, bval; + const longT cimg_iobuffer = (longT)24*1024*1024; + while ((err=std::fscanf(nfile,"%16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if (cimg_sscanf(item," P%u",&ppm_type)!=1) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pnm(): PNM header not found in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + while ((err=std::fscanf(nfile," %16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if ((err=cimg_sscanf(item," %u %u %u %u",&W,&H,&D,&colormax))<2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pnm(): WIDTH and HEIGHT fields undefined in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + if (ppm_type!=1 && ppm_type!=4) { + if (err==2 || (err==3 && (ppm_type==5 || ppm_type==7 || ppm_type==8 || ppm_type==9))) { + while ((err=std::fscanf(nfile," %16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if (cimg_sscanf(item,"%u",&colormax)!=1) + cimg::warn(_cimg_instance + "load_pnm(): COLORMAX field is undefined in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } else { colormax = D; D = 1; } + } + std::fgetc(nfile); + + if (filename) { // Check that dimensions specified in file does not exceed the buffer dimension + const cimg_int64 siz = cimg::fsize(filename); + if (W*H*D>siz) + throw CImgIOException(_cimg_instance + "load_pnm(): Specified image dimensions in file '%s' exceed file size.", + cimg_instance, + filename); + } + + switch (ppm_type) { + case 1 : { // 2D B&W ascii + assign(W,H,1,1); + T* ptrd = _data; + cimg_foroff(*this,off) { if (std::fscanf(nfile,"%d",&rval)>0) *(ptrd++) = (T)(rval?0:255); else break; } + } break; + case 2 : { // 2D grey ascii + assign(W,H,1,1); + T* ptrd = _data; + cimg_foroff(*this,off) { if (std::fscanf(nfile,"%d",&rval)>0) *(ptrd++) = (T)rval; else break; } + } break; + case 3 : { // 2D color ascii + assign(W,H,1,3); + T *ptrd = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2); + cimg_forXY(*this,x,y) { + if (std::fscanf(nfile,"%d %d %d",&rval,&gval,&bval)==3) { + *(ptrd++) = (T)rval; *(ptr_g++) = (T)gval; *(ptr_b++) = (T)bval; + } else break; + } + } break; + case 4 : { // 2D b&w binary (support 3D PINK extension) + CImg raw; + assign(W,H,D,1); + T *ptrd = data(0,0,0,0); + unsigned int w = 0, h = 0, d = 0; + for (longT to_read = (longT)((W/8 + (W%8?1:0))*H*D); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const unsigned char *ptrs = raw._data; + unsigned char mask = 0, val = 0; + for (ulongT off = (ulongT)raw._width; off || mask; mask>>=1) { + if (!mask) { if (off--) val = *(ptrs++); mask = 128; } + *(ptrd++) = (T)((val&mask)?0:255); + if (++w==W) { w = 0; mask = 0; if (++h==H) { h = 0; if (++d==D) break; }} + } + } + } break; + case 5 : case 7 : { // 2D/3D grey binary (support 3D PINK extension) + if (colormax<256) { // 8 bits + CImg raw; + assign(W,H,D,1); + T *ptrd = data(0,0,0,0); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const unsigned char *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); + } + } else { // 16 bits + CImg raw; + assign(W,H,D,1); + T *ptrd = data(0,0,0,0); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer/2)); + cimg::fread(raw._data,raw._width,nfile); + if (!cimg::endianness()) cimg::invert_endianness(raw._data,raw._width); + to_read-=raw._width; + const unsigned short *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); + } + } + } break; + case 6 : { // 2D color binary + if (colormax<256) { // 8 bits + CImg raw; + assign(W,H,1,3); + T + *ptr_r = data(0,0,0,0), + *ptr_g = data(0,0,0,1), + *ptr_b = data(0,0,0,2); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const unsigned char *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width/3; off; --off) { + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + } + } + } else { // 16 bits + CImg raw; + assign(W,H,1,3); + T + *ptr_r = data(0,0,0,0), + *ptr_g = data(0,0,0,1), + *ptr_b = data(0,0,0,2); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer/2)); + cimg::fread(raw._data,raw._width,nfile); + if (!cimg::endianness()) cimg::invert_endianness(raw._data,raw._width); + to_read-=raw._width; + const unsigned short *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width/3; off; --off) { + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + } + } + } + } break; + case 8 : { // 2D/3D grey binary with int32 integers (PINK extension) + CImg raw; + assign(W,H,D,1); + T *ptrd = data(0,0,0,0); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const int *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); + } + } break; + case 9 : { // 2D/3D grey binary with float values (PINK extension) + CImg raw; + assign(W,H,D,1); + T *ptrd = data(0,0,0,0); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const float *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); + } + } break; + default : + assign(); + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pnm(): PNM type 'P%d' found, but type is not supported.", + cimg_instance, + filename?filename:"(FILE*)",ppm_type); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a PFM file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_pfm(const char *const filename) { + return _load_pfm(0,filename); + } + + //! Load image from a PFM file \newinstance. + static CImg get_load_pfm(const char *const filename) { + return CImg().load_pfm(filename); + } + + //! Load image from a PFM file \overloading. + CImg& load_pfm(std::FILE *const file) { + return _load_pfm(file,0); + } + + //! Load image from a PFM file \newinstance. + static CImg get_load_pfm(std::FILE *const file) { + return CImg().load_pfm(file); + } + + CImg& _load_pfm(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_pfm(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + char pfm_type; + CImg item(16384,1,1,1,0); + int W = 0, H = 0, err = 0; + double scale = 0; + while ((err=std::fscanf(nfile,"%16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if (cimg_sscanf(item," P%c",&pfm_type)!=1) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pfm(): PFM header not found in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + while ((err=std::fscanf(nfile," %16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if ((err=cimg_sscanf(item," %d %d",&W,&H))<2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pfm(): WIDTH and HEIGHT fields are undefined in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } else if (W<=0 || H<=0) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pfm(): WIDTH (%d) and HEIGHT (%d) fields are invalid in file '%s'.", + cimg_instance,W,H, + filename?filename:"(FILE*)"); + } + if (err==2) { + while ((err=std::fscanf(nfile," %16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if (cimg_sscanf(item,"%lf",&scale)!=1) + cimg::warn(_cimg_instance + "load_pfm(): SCALE field is undefined in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + std::fgetc(nfile); + const bool is_color = (pfm_type=='F'), is_inverted = (scale>0)!=cimg::endianness(); + if (is_color) { + assign(W,H,1,3,(T)0); + CImg buf(3*W); + T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2); + cimg_forY(*this,y) { + cimg::fread(buf._data,3*W,nfile); + if (is_inverted) cimg::invert_endianness(buf._data,3*W); + const float *ptrs = buf._data; + cimg_forX(*this,x) { + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + } + } + } else { + assign(W,H,1,1,(T)0); + CImg buf(W); + T *ptrd = data(0,0,0,0); + cimg_forY(*this,y) { + cimg::fread(buf._data,W,nfile); + if (is_inverted) cimg::invert_endianness(buf._data,W); + const float *ptrs = buf._data; + cimg_forX(*this,x) *(ptrd++) = (T)*(ptrs++); + } + } + if (!file) cimg::fclose(nfile); + return mirror('y'); // Most of the .pfm files are flipped along the y-axis + } + + //! Load image from a RGB file. + /** + \param filename Filename, as a C-string. + \param dimw Width of the image buffer. + \param dimh Height of the image buffer. + **/ + CImg& load_rgb(const char *const filename, const unsigned int dimw, const unsigned int dimh=1) { + return _load_rgb(0,filename,dimw,dimh); + } + + //! Load image from a RGB file \newinstance. + static CImg get_load_rgb(const char *const filename, const unsigned int dimw, const unsigned int dimh=1) { + return CImg().load_rgb(filename,dimw,dimh); + } + + //! Load image from a RGB file \overloading. + CImg& load_rgb(std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1) { + return _load_rgb(file,0,dimw,dimh); + } + + //! Load image from a RGB file \newinstance. + static CImg get_load_rgb(std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1) { + return CImg().load_rgb(file,dimw,dimh); + } + + CImg& _load_rgb(std::FILE *const file, const char *const filename, + const unsigned int dimw, const unsigned int dimh) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_rgb(): Specified filename is (null).", + cimg_instance); + + if (!dimw || !dimh) return assign(); + const longT cimg_iobuffer = (longT)24*1024*1024; + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + CImg raw; + assign(dimw,dimh,1,3); + T + *ptr_r = data(0,0,0,0), + *ptr_g = data(0,0,0,1), + *ptr_b = data(0,0,0,2); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const unsigned char *ptrs = raw._data; + for (ulongT off = raw._width/3UL; off; --off) { + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a RGBA file. + /** + \param filename Filename, as a C-string. + \param dimw Width of the image buffer. + \param dimh Height of the image buffer. + **/ + CImg& load_rgba(const char *const filename, const unsigned int dimw, const unsigned int dimh=1) { + return _load_rgba(0,filename,dimw,dimh); + } + + //! Load image from a RGBA file \newinstance. + static CImg get_load_rgba(const char *const filename, const unsigned int dimw, const unsigned int dimh=1) { + return CImg().load_rgba(filename,dimw,dimh); + } + + //! Load image from a RGBA file \overloading. + CImg& load_rgba(std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1) { + return _load_rgba(file,0,dimw,dimh); + } + + //! Load image from a RGBA file \newinstance. + static CImg get_load_rgba(std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1) { + return CImg().load_rgba(file,dimw,dimh); + } + + CImg& _load_rgba(std::FILE *const file, const char *const filename, + const unsigned int dimw, const unsigned int dimh) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_rgba(): Specified filename is (null).", + cimg_instance); + + if (!dimw || !dimh) return assign(); + const longT cimg_iobuffer = (longT)24*1024*1024; + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + CImg raw; + assign(dimw,dimh,1,4); + T + *ptr_r = data(0,0,0,0), + *ptr_g = data(0,0,0,1), + *ptr_b = data(0,0,0,2), + *ptr_a = data(0,0,0,3); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const unsigned char *ptrs = raw._data; + for (ulongT off = raw._width/4UL; off; --off) { + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + *(ptr_a++) = (T)*(ptrs++); + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a TIFF file. + /** + \param filename Filename, as a C-string. + \param first_frame First frame to read (for multi-pages tiff). + \param last_frame Last frame to read (for multi-pages tiff). + \param step_frame Step value of frame reading. + \param[out] voxel_size Voxel size, as stored in the filename. + \param[out] description Description, as stored in the filename. + \note + - libtiff support is enabled by defining the precompilation + directive \c cimg_use_tif. + - When libtiff is enabled, 2D and 3D (multipage) several + channel per pixel are supported for + char,uchar,short,ushort,float and \c double pixel types. + - If \c cimg_use_tif is not defined at compile time the + function uses CImg& load_other(const char*). + **/ + CImg& load_tiff(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + float *const voxel_size=0, + CImg *const description=0) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_tiff(): Specified filename is (null).", + cimg_instance); + + const unsigned int + nfirst_frame = first_frame1) + throw CImgArgumentException(_cimg_instance + "load_tiff(): Unable to read sub-images from file '%s' unless libtiff is enabled.", + cimg_instance, + filename); + return load_other(filename); +#else +#if cimg_verbosity<3 + TIFFSetWarningHandler(0); + TIFFSetErrorHandler(0); +#endif + TIFF *tif = TIFFOpen(filename,"r"); + if (tif) { + unsigned int nb_images = 0; + do ++nb_images; while (TIFFReadDirectory(tif)); + if (nfirst_frame>=nb_images || (nlast_frame!=~0U && nlast_frame>=nb_images)) + cimg::warn(_cimg_instance + "load_tiff(): File '%s' contains %u image(s) while specified frame range is [%u,%u] (step %u).", + cimg_instance, + filename,nb_images,nfirst_frame,nlast_frame,nstep_frame); + + if (nfirst_frame>=nb_images) return assign(); + if (nlast_frame>=nb_images) nlast_frame = nb_images - 1; + TIFFSetDirectory(tif,0); + CImg frame; + for (unsigned int l = nfirst_frame; l<=nlast_frame; l+=nstep_frame) { + frame._load_tiff(tif,l,voxel_size,description); + if (l==nfirst_frame) + assign(frame._width,frame._height,1 + (nlast_frame - nfirst_frame)/nstep_frame,frame._spectrum); + if (frame._width>_width || frame._height>_height || frame._spectrum>_spectrum) + resize(std::max(frame._width,_width), + std::max(frame._height,_height),-100, + std::max(frame._spectrum,_spectrum),0); + draw_image(0,0,(l - nfirst_frame)/nstep_frame,frame); + } + TIFFClose(tif); + } else throw CImgIOException(_cimg_instance + "load_tiff(): Failed to open file '%s'.", + cimg_instance, + filename); + return *this; +#endif + } + + //! Load image from a TIFF file \newinstance. + static CImg get_load_tiff(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + float *const voxel_size=0, + CImg *const description=0) { + return CImg().load_tiff(filename,first_frame,last_frame,step_frame,voxel_size,description); + } + + // (Original contribution by Jerome Boulanger). +#ifdef cimg_use_tiff + template + void _load_tiff_tiled_contig(TIFF *const tif, const uint16 samplesperpixel, + const uint32 nx, const uint32 ny, const uint32 tw, const uint32 th) { + t *const buf = (t*)_TIFFmalloc(TIFFTileSize(tif)); + if (buf) { + for (unsigned int row = 0; row + void _load_tiff_tiled_separate(TIFF *const tif, const uint16 samplesperpixel, + const uint32 nx, const uint32 ny, const uint32 tw, const uint32 th) { + t *const buf = (t*)_TIFFmalloc(TIFFTileSize(tif)); + if (buf) { + for (unsigned int vv = 0; vv + void _load_tiff_contig(TIFF *const tif, const uint16 samplesperpixel, const uint32 nx, const uint32 ny) { + t *const buf = (t*)_TIFFmalloc(TIFFStripSize(tif)); + if (buf) { + uint32 row, rowsperstrip = (uint32)-1; + TIFFGetField(tif,TIFFTAG_ROWSPERSTRIP,&rowsperstrip); + for (row = 0; rowny?ny - row:rowsperstrip); + tstrip_t strip = TIFFComputeStrip(tif, row, 0); + if ((TIFFReadEncodedStrip(tif,strip,buf,-1))<0) { + _TIFFfree(buf); TIFFClose(tif); + throw CImgIOException(_cimg_instance + "load_tiff(): Invalid strip in file '%s'.", + cimg_instance, + TIFFFileName(tif)); + } + const t *ptr = buf; + for (unsigned int rr = 0; rr + void _load_tiff_separate(TIFF *const tif, const uint16 samplesperpixel, const uint32 nx, const uint32 ny) { + t *buf = (t*)_TIFFmalloc(TIFFStripSize(tif)); + if (buf) { + uint32 row, rowsperstrip = (uint32)-1; + TIFFGetField(tif,TIFFTAG_ROWSPERSTRIP,&rowsperstrip); + for (unsigned int vv = 0; vvny?ny - row:rowsperstrip); + tstrip_t strip = TIFFComputeStrip(tif, row, vv); + if ((TIFFReadEncodedStrip(tif,strip,buf,-1))<0) { + _TIFFfree(buf); TIFFClose(tif); + throw CImgIOException(_cimg_instance + "load_tiff(): Invalid strip in file '%s'.", + cimg_instance, + TIFFFileName(tif)); + } + const t *ptr = buf; + for (unsigned int rr = 0;rr& _load_tiff(TIFF *const tif, const unsigned int directory, + float *const voxel_size, CImg *const description) { + if (!TIFFSetDirectory(tif,directory)) return assign(); + uint16 samplesperpixel = 1, bitspersample = 8, photo = 0; + uint16 sampleformat = 1; + uint32 nx = 1, ny = 1; + const char *const filename = TIFFFileName(tif); + const bool is_spp = (bool)TIFFGetField(tif,TIFFTAG_SAMPLESPERPIXEL,&samplesperpixel); + TIFFGetField(tif,TIFFTAG_IMAGEWIDTH,&nx); + TIFFGetField(tif,TIFFTAG_IMAGELENGTH,&ny); + TIFFGetField(tif, TIFFTAG_SAMPLEFORMAT, &sampleformat); + TIFFGetFieldDefaulted(tif,TIFFTAG_BITSPERSAMPLE,&bitspersample); + TIFFGetField(tif,TIFFTAG_PHOTOMETRIC,&photo); + if (voxel_size) { + const char *s_description = 0; + float vx = 0, vy = 0, vz = 0; + if (TIFFGetField(tif,TIFFTAG_IMAGEDESCRIPTION,&s_description) && s_description) { + const char *s_desc = std::strstr(s_description,"VX="); + if (s_desc && cimg_sscanf(s_desc,"VX=%f VY=%f VZ=%f",&vx,&vy,&vz)==3) { // CImg format + voxel_size[0] = vx; voxel_size[1] = vy; voxel_size[2] = vz; + } + s_desc = std::strstr(s_description,"spacing="); + if (s_desc && cimg_sscanf(s_desc,"spacing=%f",&vz)==1) { // Fiji format + voxel_size[2] = vz; + } + } + TIFFGetField(tif,TIFFTAG_XRESOLUTION,voxel_size); + TIFFGetField(tif,TIFFTAG_YRESOLUTION,voxel_size + 1); + voxel_size[0] = 1.f/voxel_size[0]; + voxel_size[1] = 1.f/voxel_size[1]; + } + if (description) { + const char *s_description = 0; + if (TIFFGetField(tif,TIFFTAG_IMAGEDESCRIPTION,&s_description) && s_description) + CImg::string(s_description).move_to(*description); + } + const unsigned int spectrum = !is_spp || photo>=3?(photo>1?3:1):samplesperpixel; + assign(nx,ny,1,spectrum); + + if ((photo>=3 && sampleformat==1 && + (bitspersample==4 || bitspersample==8) && + (samplesperpixel==1 || samplesperpixel==3 || samplesperpixel==4)) || + (bitspersample==1 && samplesperpixel==1)) { + // Special case for unsigned color images. + uint32 *const raster = (uint32*)_TIFFmalloc(nx*ny*sizeof(uint32)); + if (!raster) { + _TIFFfree(raster); TIFFClose(tif); + throw CImgException(_cimg_instance + "load_tiff(): Failed to allocate memory (%s) for file '%s'.", + cimg_instance, + cimg::strbuffersize(nx*ny*sizeof(uint32)),filename); + } + TIFFReadRGBAImage(tif,nx,ny,raster,0); + switch (spectrum) { + case 1 : + cimg_forXY(*this,x,y) + (*this)(x,y,0) = (T)(float)TIFFGetR(raster[nx*(ny - 1 -y) + x]); + break; + case 3 : + cimg_forXY(*this,x,y) { + (*this)(x,y,0) = (T)(float)TIFFGetR(raster[nx*(ny - 1 -y) + x]); + (*this)(x,y,1) = (T)(float)TIFFGetG(raster[nx*(ny - 1 -y) + x]); + (*this)(x,y,2) = (T)(float)TIFFGetB(raster[nx*(ny - 1 -y) + x]); + } + break; + case 4 : + cimg_forXY(*this,x,y) { + (*this)(x,y,0) = (T)(float)TIFFGetR(raster[nx*(ny - 1 - y) + x]); + (*this)(x,y,1) = (T)(float)TIFFGetG(raster[nx*(ny - 1 - y) + x]); + (*this)(x,y,2) = (T)(float)TIFFGetB(raster[nx*(ny - 1 - y) + x]); + (*this)(x,y,3) = (T)(float)TIFFGetA(raster[nx*(ny - 1 - y) + x]); + } + break; + } + _TIFFfree(raster); + } else { // Other cases + uint16 config; + TIFFGetField(tif,TIFFTAG_PLANARCONFIG,&config); + if (TIFFIsTiled(tif)) { + uint32 tw = 1, th = 1; + TIFFGetField(tif,TIFFTAG_TILEWIDTH,&tw); + TIFFGetField(tif,TIFFTAG_TILELENGTH,&th); + if (config==PLANARCONFIG_CONTIG) switch (bitspersample) { + case 8 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + break; + case 16 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + break; + case 32 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else if (sampleformat==SAMPLEFORMAT_INT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + break; + case 64 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else if (sampleformat==SAMPLEFORMAT_INT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + break; + } else switch (bitspersample) { + case 8 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + break; + case 16 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + break; + case 32 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else if (sampleformat==SAMPLEFORMAT_INT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + break; + case 64 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else if (sampleformat==SAMPLEFORMAT_INT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + break; + } + } else { + if (config==PLANARCONFIG_CONTIG) switch (bitspersample) { + case 8 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_contig(tif,samplesperpixel,nx,ny); + else _load_tiff_contig(tif,samplesperpixel,nx,ny); + break; + case 16 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_contig(tif,samplesperpixel,nx,ny); + else _load_tiff_contig(tif,samplesperpixel,nx,ny); + break; + case 32 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_contig(tif,samplesperpixel,nx,ny); + else if (sampleformat==SAMPLEFORMAT_INT) _load_tiff_contig(tif,samplesperpixel,nx,ny); + else _load_tiff_contig(tif,samplesperpixel,nx,ny); + break; + case 64 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_contig(tif,samplesperpixel,nx,ny); + else if (sampleformat==SAMPLEFORMAT_INT) _load_tiff_contig(tif,samplesperpixel,nx,ny); + else _load_tiff_contig(tif,samplesperpixel,nx,ny); + break; + } else switch (bitspersample) { + case 8 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else _load_tiff_separate(tif,samplesperpixel,nx,ny); + break; + case 16 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else _load_tiff_separate(tif,samplesperpixel,nx,ny); + break; + case 32 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else if (sampleformat==SAMPLEFORMAT_INT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else _load_tiff_separate(tif,samplesperpixel,nx,ny); + break; + case 64 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else if (sampleformat==SAMPLEFORMAT_INT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else _load_tiff_separate(tif,samplesperpixel,nx,ny); + break; + } + } + } + return *this; + } +#endif + + //! Load image from a MINC2 file. + /** + \param filename Filename, as a C-string. + **/ + // (Original code by Haz-Edine Assemlal). + CImg& load_minc2(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_minc2(): Specified filename is (null).", + cimg_instance); +#ifndef cimg_use_minc2 + return load_other(filename); +#else + minc::minc_1_reader rdr; + rdr.open(filename); + assign(rdr.ndim(1)?rdr.ndim(1):1, + rdr.ndim(2)?rdr.ndim(2):1, + rdr.ndim(3)?rdr.ndim(3):1, + rdr.ndim(4)?rdr.ndim(4):1); + if (pixel_type()==cimg::type::string()) + rdr.setup_read_byte(); + else if (pixel_type()==cimg::type::string()) + rdr.setup_read_int(); + else if (pixel_type()==cimg::type::string()) + rdr.setup_read_double(); + else + rdr.setup_read_float(); + minc::load_standard_volume(rdr,this->_data); + return *this; +#endif + } + + //! Load image from a MINC2 file \newinstance. + static CImg get_load_minc2(const char *const filename) { + return CImg().load_analyze(filename); + } + + //! Load image from an ANALYZE7.5/NIFTI file. + /** + \param filename Filename, as a C-string. + \param[out] voxel_size Pointer to the three voxel sizes read from the file. + **/ + CImg& load_analyze(const char *const filename, float *const voxel_size=0) { + return _load_analyze(0,filename,voxel_size); + } + + //! Load image from an ANALYZE7.5/NIFTI file \newinstance. + static CImg get_load_analyze(const char *const filename, float *const voxel_size=0) { + return CImg().load_analyze(filename,voxel_size); + } + + //! Load image from an ANALYZE7.5/NIFTI file \overloading. + CImg& load_analyze(std::FILE *const file, float *const voxel_size=0) { + return _load_analyze(file,0,voxel_size); + } + + //! Load image from an ANALYZE7.5/NIFTI file \newinstance. + static CImg get_load_analyze(std::FILE *const file, float *const voxel_size=0) { + return CImg().load_analyze(file,voxel_size); + } + + CImg& _load_analyze(std::FILE *const file, const char *const filename, float *const voxel_size=0) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_analyze(): Specified filename is (null).", + cimg_instance); + + std::FILE *nfile_header = 0, *nfile = 0; + if (!file) { + CImg body(1024); + const char *const ext = cimg::split_filename(filename,body); + if (!cimg::strcasecmp(ext,"hdr")) { // File is an Analyze header file + nfile_header = cimg::fopen(filename,"rb"); + cimg_sprintf(body._data + std::strlen(body),".img"); + nfile = cimg::fopen(body,"rb"); + } else if (!cimg::strcasecmp(ext,"img")) { // File is an Analyze data file + nfile = cimg::fopen(filename,"rb"); + cimg_sprintf(body._data + std::strlen(body),".hdr"); + nfile_header = cimg::fopen(body,"rb"); + } else nfile_header = nfile = cimg::fopen(filename,"rb"); // File is a Niftii file + } else nfile_header = nfile = file; // File is a Niftii file + if (!nfile || !nfile_header) + throw CImgIOException(_cimg_instance + "load_analyze(): Invalid Analyze7.5 or NIFTI header in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + // Read header. + bool endian = false; + unsigned int header_size; + cimg::fread(&header_size,1,nfile_header); + if (!header_size) + throw CImgIOException(_cimg_instance + "load_analyze(): Invalid zero-size header in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (header_size>=4096) { endian = true; cimg::invert_endianness(header_size); } + + unsigned char *const header = new unsigned char[header_size]; + cimg::fread(header + 4,header_size - 4,nfile_header); + if (!file && nfile_header!=nfile) cimg::fclose(nfile_header); + if (endian) { + cimg::invert_endianness((short*)(header + 40),5); + cimg::invert_endianness((short*)(header + 70),1); + cimg::invert_endianness((short*)(header + 72),1); + cimg::invert_endianness((float*)(header + 76),4); + cimg::invert_endianness((float*)(header + 108),1); + cimg::invert_endianness((float*)(header + 112),1); + } + + if (nfile_header==nfile) { + const unsigned int vox_offset = (unsigned int)*(float*)(header + 108); + std::fseek(nfile,vox_offset,SEEK_SET); + } + + unsigned short *dim = (unsigned short*)(header + 40), dimx = 1, dimy = 1, dimz = 1, dimv = 1; + if (!dim[0]) + cimg::warn(_cimg_instance + "load_analyze(): File '%s' defines an image with zero dimensions.", + cimg_instance, + filename?filename:"(FILE*)"); + + if (dim[0]>4) + cimg::warn(_cimg_instance + "load_analyze(): File '%s' defines an image with %u dimensions, reading only the 4 first.", + cimg_instance, + filename?filename:"(FILE*)",dim[0]); + + if (dim[0]>=1) dimx = dim[1]; + if (dim[0]>=2) dimy = dim[2]; + if (dim[0]>=3) dimz = dim[3]; + if (dim[0]>=4) dimv = dim[4]; + float scalefactor = *(float*)(header + 112); if (scalefactor==0) scalefactor = 1; + const unsigned short datatype = *(unsigned short*)(header + 70); + if (voxel_size) { + const float *vsize = (float*)(header + 76); + voxel_size[0] = vsize[1]; voxel_size[1] = vsize[2]; voxel_size[2] = vsize[3]; + } + delete[] header; + + // Read pixel data. + assign(dimx,dimy,dimz,dimv); + const size_t pdim = (size_t)dimx*dimy*dimz*dimv; + switch (datatype) { + case 2 : { + unsigned char *const buffer = new unsigned char[pdim]; + cimg::fread(buffer,pdim,nfile); + cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor); + delete[] buffer; + } break; + case 4 : { + short *const buffer = new short[pdim]; + cimg::fread(buffer,pdim,nfile); + if (endian) cimg::invert_endianness(buffer,pdim); + cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor); + delete[] buffer; + } break; + case 8 : { + int *const buffer = new int[pdim]; + cimg::fread(buffer,pdim,nfile); + if (endian) cimg::invert_endianness(buffer,pdim); + cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor); + delete[] buffer; + } break; + case 16 : { + float *const buffer = new float[pdim]; + cimg::fread(buffer,pdim,nfile); + if (endian) cimg::invert_endianness(buffer,pdim); + cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor); + delete[] buffer; + } break; + case 64 : { + double *const buffer = new double[pdim]; + cimg::fread(buffer,pdim,nfile); + if (endian) cimg::invert_endianness(buffer,pdim); + cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor); + delete[] buffer; + } break; + default : + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_analyze(): Unable to load datatype %d in file '%s'", + cimg_instance, + datatype,filename?filename:"(FILE*)"); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a .cimg[z] file. + /** + \param filename Filename, as a C-string. + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg& load_cimg(const char *const filename, const char axis='z', const float align=0) { + CImgList list; + list.load_cimg(filename); + if (list._width==1) return list[0].move_to(*this); + return assign(list.get_append(axis,align)); + } + + //! Load image from a .cimg[z] file \newinstance + static CImg get_load_cimg(const char *const filename, const char axis='z', const float align=0) { + return CImg().load_cimg(filename,axis,align); + } + + //! Load image from a .cimg[z] file \overloading. + CImg& load_cimg(std::FILE *const file, const char axis='z', const float align=0) { + CImgList list; + list.load_cimg(file); + if (list._width==1) return list[0].move_to(*this); + return assign(list.get_append(axis,align)); + } + + //! Load image from a .cimg[z] file \newinstance + static CImg get_load_cimg(std::FILE *const file, const char axis='z', const float align=0) { + return CImg().load_cimg(file,axis,align); + } + + //! Load sub-images of a .cimg file. + /** + \param filename Filename, as a C-string. + \param n0 Starting frame. + \param n1 Ending frame (~0U for max). + \param x0 X-coordinate of the starting sub-image vertex. + \param y0 Y-coordinate of the starting sub-image vertex. + \param z0 Z-coordinate of the starting sub-image vertex. + \param c0 C-coordinate of the starting sub-image vertex. + \param x1 X-coordinate of the ending sub-image vertex (~0U for max). + \param y1 Y-coordinate of the ending sub-image vertex (~0U for max). + \param z1 Z-coordinate of the ending sub-image vertex (~0U for max). + \param c1 C-coordinate of the ending sub-image vertex (~0U for max). + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg& load_cimg(const char *const filename, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1, + const char axis='z', const float align=0) { + CImgList list; + list.load_cimg(filename,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + if (list._width==1) return list[0].move_to(*this); + return assign(list.get_append(axis,align)); + } + + //! Load sub-images of a .cimg file \newinstance. + static CImg get_load_cimg(const char *const filename, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1, + const char axis='z', const float align=0) { + return CImg().load_cimg(filename,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1,axis,align); + } + + //! Load sub-images of a .cimg file \overloading. + CImg& load_cimg(std::FILE *const file, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1, + const char axis='z', const float align=0) { + CImgList list; + list.load_cimg(file,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + if (list._width==1) return list[0].move_to(*this); + return assign(list.get_append(axis,align)); + } + + //! Load sub-images of a .cimg file \newinstance. + static CImg get_load_cimg(std::FILE *const file, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1, + const char axis='z', const float align=0) { + return CImg().load_cimg(file,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1,axis,align); + } + + //! Load image from an INRIMAGE-4 file. + /** + \param filename Filename, as a C-string. + \param[out] voxel_size Pointer to the three voxel sizes read from the file. + **/ + CImg& load_inr(const char *const filename, float *const voxel_size=0) { + return _load_inr(0,filename,voxel_size); + } + + //! Load image from an INRIMAGE-4 file \newinstance. + static CImg get_load_inr(const char *const filename, float *const voxel_size=0) { + return CImg().load_inr(filename,voxel_size); + } + + //! Load image from an INRIMAGE-4 file \overloading. + CImg& load_inr(std::FILE *const file, float *const voxel_size=0) { + return _load_inr(file,0,voxel_size); + } + + //! Load image from an INRIMAGE-4 file \newinstance. + static CImg get_load_inr(std::FILE *const file, float *voxel_size=0) { + return CImg().load_inr(file,voxel_size); + } + + static void _load_inr_header(std::FILE *file, int out[8], float *const voxel_size) { + CImg item(1024), tmp1(64), tmp2(64); + *item = *tmp1 = *tmp2 = 0; + out[0] = std::fscanf(file,"%63s",item._data); + out[0] = out[1] = out[2] = out[3] = out[5] = 1; out[4] = out[6] = out[7] = -1; + if (cimg::strncasecmp(item,"#INRIMAGE-4#{",13)!=0) + throw CImgIOException("CImg<%s>::load_inr(): INRIMAGE-4 header not found.", + pixel_type()); + + while (std::fscanf(file," %63[^\n]%*c",item._data)!=EOF && std::strncmp(item,"##}",3)) { + cimg_sscanf(item," XDIM%*[^0-9]%d",out); + cimg_sscanf(item," YDIM%*[^0-9]%d",out + 1); + cimg_sscanf(item," ZDIM%*[^0-9]%d",out + 2); + cimg_sscanf(item," VDIM%*[^0-9]%d",out + 3); + cimg_sscanf(item," PIXSIZE%*[^0-9]%d",out + 6); + if (voxel_size) { + cimg_sscanf(item," VX%*[^0-9.+-]%f",voxel_size); + cimg_sscanf(item," VY%*[^0-9.+-]%f",voxel_size + 1); + cimg_sscanf(item," VZ%*[^0-9.+-]%f",voxel_size + 2); + } + if (cimg_sscanf(item," CPU%*[ =]%s",tmp1._data)) out[7] = cimg::strncasecmp(tmp1,"sun",3)?0:1; + switch (cimg_sscanf(item," TYPE%*[ =]%s %s",tmp1._data,tmp2._data)) { + case 0 : break; + case 2 : + out[5] = cimg::strncasecmp(tmp1,"unsigned",8)?1:0; + std::strncpy(tmp1,tmp2,tmp1._width - 1); // fallthrough + case 1 : + if (!cimg::strncasecmp(tmp1,"int",3) || !cimg::strncasecmp(tmp1,"fixed",5)) out[4] = 0; + if (!cimg::strncasecmp(tmp1,"float",5) || !cimg::strncasecmp(tmp1,"double",6)) out[4] = 1; + if (!cimg::strncasecmp(tmp1,"packed",6)) out[4] = 2; + if (out[4]>=0) break; // fallthrough + default : + throw CImgIOException("CImg<%s>::load_inr(): Invalid pixel type '%s' defined in header.", + pixel_type(), + tmp2._data); + } + } + if (out[0]<0 || out[1]<0 || out[2]<0 || out[3]<0) + throw CImgIOException("CImg<%s>::load_inr(): Invalid dimensions (%d,%d,%d,%d) defined in header.", + pixel_type(), + out[0],out[1],out[2],out[3]); + if (out[4]<0 || out[5]<0) + throw CImgIOException("CImg<%s>::load_inr(): Incomplete pixel type defined in header.", + pixel_type()); + if (out[6]<0) + throw CImgIOException("CImg<%s>::load_inr(): Incomplete PIXSIZE field defined in header.", + pixel_type()); + if (out[7]<0) + throw CImgIOException("CImg<%s>::load_inr(): Big/Little Endian coding type undefined in header.", + pixel_type()); + } + + CImg& _load_inr(std::FILE *const file, const char *const filename, float *const voxel_size) { +#define _cimg_load_inr_case(Tf,sign,pixsize,Ts) \ + if (!loaded && fopt[6]==pixsize && fopt[4]==Tf && fopt[5]==sign) { \ + Ts *xval, *const val = new Ts[(size_t)fopt[0]*fopt[3]]; \ + cimg_forYZ(*this,y,z) { \ + cimg::fread(val,fopt[0]*fopt[3],nfile); \ + if (fopt[7]!=endian) cimg::invert_endianness(val,fopt[0]*fopt[3]); \ + xval = val; cimg_forX(*this,x) cimg_forC(*this,c) (*this)(x,y,z,c) = (T)*(xval++); \ + } \ + delete[] val; \ + loaded = true; \ + } + + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_inr(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + int fopt[8], endian = cimg::endianness()?1:0; + bool loaded = false; + if (voxel_size) voxel_size[0] = voxel_size[1] = voxel_size[2] = 1; + _load_inr_header(nfile,fopt,voxel_size); + assign(fopt[0],fopt[1],fopt[2],fopt[3]); + _cimg_load_inr_case(0,0,8,unsigned char); + _cimg_load_inr_case(0,1,8,char); + _cimg_load_inr_case(0,0,16,unsigned short); + _cimg_load_inr_case(0,1,16,short); + _cimg_load_inr_case(0,0,32,unsigned int); + _cimg_load_inr_case(0,1,32,int); + _cimg_load_inr_case(1,0,32,float); + _cimg_load_inr_case(1,1,32,float); + _cimg_load_inr_case(1,0,64,double); + _cimg_load_inr_case(1,1,64,double); + if (!loaded) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_inr(): Unknown pixel type defined in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a EXR file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_exr(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_exr(): Specified filename is (null).", + cimg_instance); +#if defined(cimg_use_openexr) + Imf::RgbaInputFile file(filename); + Imath::Box2i dw = file.dataWindow(); + const int + inwidth = dw.max.x - dw.min.x + 1, + inheight = dw.max.y - dw.min.y + 1; + Imf::Array2D pixels; + pixels.resizeErase(inheight,inwidth); + file.setFrameBuffer(&pixels[0][0] - dw.min.x - dw.min.y*inwidth, 1, inwidth); + file.readPixels(dw.min.y, dw.max.y); + assign(inwidth,inheight,1,4); + T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2), *ptr_a = data(0,0,0,3); + cimg_forXY(*this,x,y) { + *(ptr_r++) = (T)pixels[y][x].r; + *(ptr_g++) = (T)pixels[y][x].g; + *(ptr_b++) = (T)pixels[y][x].b; + *(ptr_a++) = (T)pixels[y][x].a; + } + return *this; +#elif defined(cimg_use_tinyexr) + float *res; + const char *err = 0; + int width = 0, height = 0; + const int ret = LoadEXR(&res,&width,&height,filename,&err); + if (ret) throw CImgIOException(_cimg_instance + "load_exr(): Unable to load EXR file '%s'.", + cimg_instance,filename); + CImg(res,4,width,height,1,true).get_permute_axes("yzcx").move_to(*this); + std::free(res); + return *this; +#else + return load_other(filename); +#endif + } + + //! Load image from a EXR file \newinstance. + static CImg get_load_exr(const char *const filename) { + return CImg().load_exr(filename); + } + + //! Load image from a PANDORE-5 file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_pandore(const char *const filename) { + return _load_pandore(0,filename); + } + + //! Load image from a PANDORE-5 file \newinstance. + static CImg get_load_pandore(const char *const filename) { + return CImg().load_pandore(filename); + } + + //! Load image from a PANDORE-5 file \overloading. + CImg& load_pandore(std::FILE *const file) { + return _load_pandore(file,0); + } + + //! Load image from a PANDORE-5 file \newinstance. + static CImg get_load_pandore(std::FILE *const file) { + return CImg().load_pandore(file); + } + + CImg& _load_pandore(std::FILE *const file, const char *const filename) { +#define __cimg_load_pandore_case(nbdim,nwidth,nheight,ndepth,ndim,stype) \ + cimg::fread(dims,nbdim,nfile); \ + if (endian) cimg::invert_endianness(dims,nbdim); \ + assign(nwidth,nheight,ndepth,ndim); \ + const size_t siz = size(); \ + stype *buffer = new stype[siz]; \ + cimg::fread(buffer,siz,nfile); \ + if (endian) cimg::invert_endianness(buffer,siz); \ + T *ptrd = _data; \ + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); \ + buffer-=siz; \ + delete[] buffer + +#define _cimg_load_pandore_case(nbdim,nwidth,nheight,ndepth,dim,stype1,stype2,stype3,ltype) { \ + if (sizeof(stype1)==ltype) { __cimg_load_pandore_case(nbdim,nwidth,nheight,ndepth,dim,stype1); } \ + else if (sizeof(stype2)==ltype) { __cimg_load_pandore_case(nbdim,nwidth,nheight,ndepth,dim,stype2); } \ + else if (sizeof(stype3)==ltype) { __cimg_load_pandore_case(nbdim,nwidth,nheight,ndepth,dim,stype3); } \ + else throw CImgIOException(_cimg_instance \ + "load_pandore(): Unknown pixel datatype in file '%s'.", \ + cimg_instance, \ + filename?filename:"(FILE*)"); } + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_pandore(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + CImg header(32); + cimg::fread(header._data,12,nfile); + if (cimg::strncasecmp("PANDORE",header,7)) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pandore(): PANDORE header not found in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + unsigned int imageid, dims[8] = { 0 }; + int ptbuf[4] = { 0 }; + cimg::fread(&imageid,1,nfile); + const bool endian = imageid>255; + if (endian) cimg::invert_endianness(imageid); + cimg::fread(header._data,20,nfile); + + switch (imageid) { + case 2 : _cimg_load_pandore_case(2,dims[1],1,1,1,unsigned char,unsigned char,unsigned char,1); break; + case 3 : _cimg_load_pandore_case(2,dims[1],1,1,1,long,int,short,4); break; + case 4 : _cimg_load_pandore_case(2,dims[1],1,1,1,double,float,float,4); break; + case 5 : _cimg_load_pandore_case(3,dims[2],dims[1],1,1,unsigned char,unsigned char,unsigned char,1); break; + case 6 : _cimg_load_pandore_case(3,dims[2],dims[1],1,1,long,int,short,4); break; + case 7 : _cimg_load_pandore_case(3,dims[2],dims[1],1,1,double,float,float,4); break; + case 8 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],1,unsigned char,unsigned char,unsigned char,1); break; + case 9 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],1,long,int,short,4); break; + case 10 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],1,double,float,float,4); break; + case 11 : { // Region 1D + cimg::fread(dims,3,nfile); + if (endian) cimg::invert_endianness(dims,3); + assign(dims[1],1,1,1); + const unsigned siz = size(); + if (dims[2]<256) { + unsigned char *buffer = new unsigned char[siz]; + cimg::fread(buffer,siz,nfile); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + if (dims[2]<65536) { + unsigned short *buffer = new unsigned short[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + unsigned int *buffer = new unsigned int[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } + } + } + break; + case 12 : { // Region 2D + cimg::fread(dims,4,nfile); + if (endian) cimg::invert_endianness(dims,4); + assign(dims[2],dims[1],1,1); + const size_t siz = size(); + if (dims[3]<256) { + unsigned char *buffer = new unsigned char[siz]; + cimg::fread(buffer,siz,nfile); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + if (dims[3]<65536) { + unsigned short *buffer = new unsigned short[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + unsigned int *buffer = new unsigned int[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } + } + } + break; + case 13 : { // Region 3D + cimg::fread(dims,5,nfile); + if (endian) cimg::invert_endianness(dims,5); + assign(dims[3],dims[2],dims[1],1); + const size_t siz = size(); + if (dims[4]<256) { + unsigned char *buffer = new unsigned char[siz]; + cimg::fread(buffer,siz,nfile); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + if (dims[4]<65536) { + unsigned short *buffer = new unsigned short[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + unsigned int *buffer = new unsigned int[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } + } + } + break; + case 16 : _cimg_load_pandore_case(4,dims[2],dims[1],1,3,unsigned char,unsigned char,unsigned char,1); break; + case 17 : _cimg_load_pandore_case(4,dims[2],dims[1],1,3,long,int,short,4); break; + case 18 : _cimg_load_pandore_case(4,dims[2],dims[1],1,3,double,float,float,4); break; + case 19 : _cimg_load_pandore_case(5,dims[3],dims[2],dims[1],3,unsigned char,unsigned char,unsigned char,1); break; + case 20 : _cimg_load_pandore_case(5,dims[3],dims[2],dims[1],3,long,int,short,4); break; + case 21 : _cimg_load_pandore_case(5,dims[3],dims[2],dims[1],3,double,float,float,4); break; + case 22 : _cimg_load_pandore_case(2,dims[1],1,1,dims[0],unsigned char,unsigned char,unsigned char,1); break; + case 23 : _cimg_load_pandore_case(2,dims[1],1,1,dims[0],long,int,short,4); break; + case 24 : _cimg_load_pandore_case(2,dims[1],1,1,dims[0],unsigned long,unsigned int,unsigned short,4); break; + case 25 : _cimg_load_pandore_case(2,dims[1],1,1,dims[0],double,float,float,4); break; + case 26 : _cimg_load_pandore_case(3,dims[2],dims[1],1,dims[0],unsigned char,unsigned char,unsigned char,1); break; + case 27 : _cimg_load_pandore_case(3,dims[2],dims[1],1,dims[0],long,int,short,4); break; + case 28 : _cimg_load_pandore_case(3,dims[2],dims[1],1,dims[0],unsigned long,unsigned int,unsigned short,4); break; + case 29 : _cimg_load_pandore_case(3,dims[2],dims[1],1,dims[0],double,float,float,4); break; + case 30 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],dims[0],unsigned char,unsigned char,unsigned char,1); + break; + case 31 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],dims[0],long,int,short,4); break; + case 32 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],dims[0],unsigned long,unsigned int,unsigned short,4); + break; + case 33 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],dims[0],double,float,float,4); break; + case 34 : { // Points 1D + cimg::fread(ptbuf,1,nfile); + if (endian) cimg::invert_endianness(ptbuf,1); + assign(1); (*this)(0) = (T)ptbuf[0]; + } break; + case 35 : { // Points 2D + cimg::fread(ptbuf,2,nfile); + if (endian) cimg::invert_endianness(ptbuf,2); + assign(2); (*this)(0) = (T)ptbuf[1]; (*this)(1) = (T)ptbuf[0]; + } break; + case 36 : { // Points 3D + cimg::fread(ptbuf,3,nfile); + if (endian) cimg::invert_endianness(ptbuf,3); + assign(3); (*this)(0) = (T)ptbuf[2]; (*this)(1) = (T)ptbuf[1]; (*this)(2) = (T)ptbuf[0]; + } break; + default : + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pandore(): Unable to load data with ID_type %u in file '%s'.", + cimg_instance, + imageid,filename?filename:"(FILE*)"); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a PAR-REC (Philips) file. + /** + \param filename Filename, as a C-string. + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg& load_parrec(const char *const filename, const char axis='c', const float align=0) { + CImgList list; + list.load_parrec(filename); + if (list._width==1) return list[0].move_to(*this); + return assign(list.get_append(axis,align)); + } + + //! Load image from a PAR-REC (Philips) file \newinstance. + static CImg get_load_parrec(const char *const filename, const char axis='c', const float align=0) { + return CImg().load_parrec(filename,axis,align); + } + + //! Load image from a raw binary file. + /** + \param filename Filename, as a C-string. + \param size_x Width of the image buffer. + \param size_y Height of the image buffer. + \param size_z Depth of the image buffer. + \param size_c Spectrum of the image buffer. + \param is_multiplexed Tells if the image values are multiplexed along the C-axis. + \param invert_endianness Tells if the endianness of the image buffer must be inverted. + \param offset Starting offset of the read in the specified file. + **/ + CImg& load_raw(const char *const filename, + const unsigned int size_x=0, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, + const bool is_multiplexed=false, const bool invert_endianness=false, + const ulongT offset=0) { + return _load_raw(0,filename,size_x,size_y,size_z,size_c,is_multiplexed,invert_endianness,offset); + } + + //! Load image from a raw binary file \newinstance. + static CImg get_load_raw(const char *const filename, + const unsigned int size_x=0, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, + const bool is_multiplexed=false, const bool invert_endianness=false, + const ulongT offset=0) { + return CImg().load_raw(filename,size_x,size_y,size_z,size_c,is_multiplexed,invert_endianness,offset); + } + + //! Load image from a raw binary file \overloading. + CImg& load_raw(std::FILE *const file, + const unsigned int size_x=0, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, + const bool is_multiplexed=false, const bool invert_endianness=false, + const ulongT offset=0) { + return _load_raw(file,0,size_x,size_y,size_z,size_c,is_multiplexed,invert_endianness,offset); + } + + //! Load image from a raw binary file \newinstance. + static CImg get_load_raw(std::FILE *const file, + const unsigned int size_x=0, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, + const bool is_multiplexed=false, const bool invert_endianness=false, + const ulongT offset=0) { + return CImg().load_raw(file,size_x,size_y,size_z,size_c,is_multiplexed,invert_endianness,offset); + } + + CImg& _load_raw(std::FILE *const file, const char *const filename, + const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const bool is_multiplexed, const bool invert_endianness, + const ulongT offset) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_raw(): Specified filename is (null).", + cimg_instance); + if (cimg::is_directory(filename)) + throw CImgArgumentException(_cimg_instance + "load_raw(): Specified filename '%s' is a directory.", + cimg_instance,filename); + const bool is_bool = pixel_type()==cimg::type::string(); + ulongT siz = (ulongT)size_x*size_y*size_z*size_c; + unsigned int + _size_x = size_x, + _size_y = size_y, + _size_z = size_z, + _size_c = size_c; + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + if (!siz) { // Retrieve file size + const longT fpos = cimg::ftell(nfile); + if (fpos<0) throw CImgArgumentException(_cimg_instance + "load_raw(): Cannot determine size of input file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + cimg::fseek(nfile,0,SEEK_END); + siz = cimg::ftell(nfile); + if (!is_bool) { siz/=sizeof(T); _size_y = (unsigned int)siz; } + else _size_y = (unsigned int)(siz*8); + _size_x = _size_z = _size_c = 1; + cimg::fseek(nfile,fpos,SEEK_SET); + } + cimg::fseek(nfile,offset,SEEK_SET); + assign(_size_x,_size_y,_size_z,_size_c,0); + + if (is_bool) { // Boolean data (bitwise) + unsigned char *const buf = new unsigned char[siz]; + cimg::fread(buf,siz,nfile); + _uchar2bool(buf,siz,is_multiplexed); + delete[] buf; + } else { // Non-boolean data + if (siz && (!is_multiplexed || size_c==1)) { // Non-multiplexed + cimg::fread(_data,siz,nfile); + if (invert_endianness) cimg::invert_endianness(_data,siz); + } else if (siz) { // Multiplexed + CImg buf(1,1,1,_size_c); + cimg_forXYZ(*this,x,y,z) { + cimg::fread(buf._data,_size_c,nfile); + if (invert_endianness) cimg::invert_endianness(buf._data,_size_c); + set_vector_at(buf,x,y,z); + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image sequence from a YUV file. + /** + \param filename Filename, as a C-string. + \param size_x Width of the frames. + \param size_y Height of the frames. + \param chroma_subsampling Type of chroma subsampling. Can be { 420 | 422 | 444 }. + \param first_frame Index of the first frame to read. + \param last_frame Index of the last frame to read. + \param step_frame Step value for frame reading. + \param yuv2rgb Tells if the YUV to RGB transform must be applied. + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + **/ + CImg& load_yuv(const char *const filename, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z') { + return get_load_yuv(filename,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb,axis).move_to(*this); + } + + //! Load image sequence from a YUV file \newinstance. + static CImg get_load_yuv(const char *const filename, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z') { + return CImgList().load_yuv(filename,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb).get_append(axis); + } + + //! Load image sequence from a YUV file \overloading. + CImg& load_yuv(std::FILE *const file, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z') { + return get_load_yuv(file,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb,axis).move_to(*this); + } + + //! Load image sequence from a YUV file \newinstance. + static CImg get_load_yuv(std::FILE *const file, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z') { + return CImgList().load_yuv(file,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb).get_append(axis); + } + + //! Load 3D object from a .OFF file. + /** + \param[out] primitives Primitives data of the 3D object. + \param[out] colors Colors data of the 3D object. + \param filename Filename, as a C-string. + **/ + template + CImg& load_off(CImgList& primitives, CImgList& colors, const char *const filename) { + return _load_off(primitives,colors,0,filename); + } + + //! Load 3D object from a .OFF file \newinstance. + template + static CImg get_load_off(CImgList& primitives, CImgList& colors, const char *const filename) { + return CImg().load_off(primitives,colors,filename); + } + + //! Load 3D object from a .OFF file \overloading. + template + CImg& load_off(CImgList& primitives, CImgList& colors, std::FILE *const file) { + return _load_off(primitives,colors,file,0); + } + + //! Load 3D object from a .OFF file \newinstance. + template + static CImg get_load_off(CImgList& primitives, CImgList& colors, std::FILE *const file) { + return CImg().load_off(primitives,colors,file); + } + + template + CImg& _load_off(CImgList& primitives, CImgList& colors, + std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_off(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"r"); + unsigned int nb_points = 0, nb_primitives = 0, nb_read = 0; + CImg line(256); *line = 0; + int err; + + // Skip comments, and read magic string OFF + do { err = std::fscanf(nfile,"%255[^\n] ",line._data); } while (!err || (err==1 && *line=='#')); + if (cimg::strncasecmp(line,"OFF",3) && cimg::strncasecmp(line,"COFF",4)) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_off(): OFF header not found in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + do { err = std::fscanf(nfile,"%255[^\n] ",line._data); } while (!err || (err==1 && *line=='#')); + if ((err = cimg_sscanf(line,"%u%u%*[^\n] ",&nb_points,&nb_primitives))!=2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_off(): Invalid number of vertices or primitives specified in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + + // Read points data + assign(nb_points,3); + float X = 0, Y = 0, Z = 0; + cimg_forX(*this,l) { + do { err = std::fscanf(nfile,"%255[^\n] ",line._data); } while (!err || (err==1 && *line=='#')); + if ((err = cimg_sscanf(line,"%f%f%f%*[^\n] ",&X,&Y,&Z))!=3) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_off(): Failed to read vertex %u/%u in file '%s'.", + cimg_instance, + l + 1,nb_points,filename?filename:"(FILE*)"); + } + (*this)(l,0) = (T)X; (*this)(l,1) = (T)Y; (*this)(l,2) = (T)Z; + } + + // Read primitive data + primitives.assign(); + colors.assign(); + bool stop_flag = false; + while (!stop_flag) { + float c0 = 0.7f, c1 = 0.7f, c2 = 0.7f; + unsigned int prim = 0, i0 = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; + *line = 0; + if ((err = std::fscanf(nfile,"%u",&prim))!=1) stop_flag = true; + else { + ++nb_read; + switch (prim) { + case 1 : { + if ((err = std::fscanf(nfile,"%u%255[^\n] ",&i0,line._data))<2) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0).move_to(primitives); + CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255)).move_to(colors); + } + } break; + case 2 : { + if ((err = std::fscanf(nfile,"%u%u%255[^\n] ",&i0,&i1,line._data))<2) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i1).move_to(primitives); + CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255)).move_to(colors); + } + } break; + case 3 : { + if ((err = std::fscanf(nfile,"%u%u%u%255[^\n] ",&i0,&i1,&i2,line._data))<3) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i2,i1).move_to(primitives); + CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255)).move_to(colors); + } + } break; + case 4 : { + if ((err = std::fscanf(nfile,"%u%u%u%u%255[^\n] ",&i0,&i1,&i2,&i3,line._data))<4) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i3,i2,i1).move_to(primitives); + CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255)).move_to(colors); + } + } break; + case 5 : { + if ((err = std::fscanf(nfile,"%u%u%u%u%u%255[^\n] ",&i0,&i1,&i2,&i3,&i4,line._data))<5) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i3,i2,i1).move_to(primitives); + CImg::vector(i0,i4,i3).move_to(primitives); + colors.insert(2,CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255))); + ++nb_primitives; + } + } break; + case 6 : { + if ((err = std::fscanf(nfile,"%u%u%u%u%u%u%255[^\n] ",&i0,&i1,&i2,&i3,&i4,&i5,line._data))<6) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i3,i2,i1).move_to(primitives); + CImg::vector(i0,i5,i4,i3).move_to(primitives); + colors.insert(2,CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255))); + ++nb_primitives; + } + } break; + case 7 : { + if ((err = std::fscanf(nfile,"%u%u%u%u%u%u%u%255[^\n] ",&i0,&i1,&i2,&i3,&i4,&i5,&i6,line._data))<7) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i4,i3,i1).move_to(primitives); + CImg::vector(i0,i6,i5,i4).move_to(primitives); + CImg::vector(i3,i2,i1).move_to(primitives); + colors.insert(3,CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255))); + ++(++nb_primitives); + } + } break; + case 8 : { + if ((err = std::fscanf(nfile,"%u%u%u%u%u%u%u%u%255[^\n] ",&i0,&i1,&i2,&i3,&i4,&i5,&i6,&i7,line._data))<7) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i3,i2,i1).move_to(primitives); + CImg::vector(i0,i5,i4,i3).move_to(primitives); + CImg::vector(i0,i7,i6,i5).move_to(primitives); + colors.insert(3,CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255))); + ++(++nb_primitives); + } + } break; + default : + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u (%u vertices) from file '%s'.", + cimg_instance, + nb_read,nb_primitives,prim,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } + } + } + if (!file) cimg::fclose(nfile); + if (primitives._width!=nb_primitives) + cimg::warn(_cimg_instance + "load_off(): Only %u/%u primitives read from file '%s'.", + cimg_instance, + primitives._width,nb_primitives,filename?filename:"(FILE*)"); + return *this; + } + + //! Load image sequence from a video file, using OpenCV library. + /** + \param filename Filename, as a C-string. + \param first_frame Index of the first frame to read. + \param last_frame Index of the last frame to read. + \param step_frame Step value for frame reading. + \param axis Alignment axis. + \param align Appending alignment. + **/ + CImg& load_video(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + const char axis='z', const float align=0) { + return get_load_video(filename,first_frame,last_frame,step_frame,axis,align).move_to(*this); + } + + //! Load image sequence from a video file, using OpenCV library \newinstance. + static CImg get_load_video(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + const char axis='z', const float align=0) { + return CImgList().load_video(filename,first_frame,last_frame,step_frame).get_append(axis,align); + } + + //! Load image sequence using FFMPEG's external tool 'ffmpeg'. + /** + \param filename Filename, as a C-string. + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg& load_ffmpeg_external(const char *const filename, const char axis='z', const float align=0) { + return get_load_ffmpeg_external(filename,axis,align).move_to(*this); + } + + //! Load image sequence using FFMPEG's external tool 'ffmpeg' \newinstance. + static CImg get_load_ffmpeg_external(const char *const filename, const char axis='z', const float align=0) { + return CImgList().load_ffmpeg_external(filename).get_append(axis,align); + } + + //! Load gif file, using Imagemagick or GraphicsMagicks's external tools. + /** + \param filename Filename, as a C-string. + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg& load_gif_external(const char *const filename, + const char axis='z', const float align=0) { + return get_load_gif_external(filename,axis,align).move_to(*this); + } + + //! Load gif file, using ImageMagick or GraphicsMagick's external tool 'convert' \newinstance. + static CImg get_load_gif_external(const char *const filename, + const char axis='z', const float align=0) { + return CImgList().load_gif_external(filename).get_append(axis,align); + } + + //! Load image from a HEIC file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_heif(const char *const filename) { + return _load_heif(filename); + } + + //! Load image from a HEIC file \newinstance. + static CImg get_load_heif(const char *const filename) { + return CImg().load_heif(filename); + } + + CImg& _load_heif(const char *const filename) { +#ifndef cimg_use_heif + return load_other(filename); +#else + try { + heif::Context ctx; + ctx.read_from_file(filename); + + heif::ImageHandle handle = ctx.get_primary_image_handle(); + const heif::Image image = + handle.decode_image(heif_colorspace_RGB,handle.has_alpha_channel()?heif_chroma_interleaved_RGBA: + heif_chroma_interleaved_RGB); + const int + W = image.get_width(heif_channel_interleaved), + H = image.get_height(heif_channel_interleaved), + S = handle.has_alpha_channel()?4:3; + assign(W,H,1,S); + + int stride; + const unsigned char *const buffer = image.get_plane(heif_channel_interleaved,&stride); + T *ptr_r = _data, *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2), *ptr_a = S>3?data(0,0,0,3):0; + cimg_forY(*this,y) { + const unsigned char *ptrs = buffer + y*stride; + if (ptr_a) cimg_forX(*this,x) { // RGBA + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + *(ptr_a++) = (T)*(ptrs++); + } + else cimg_forX(*this,x) { // RGB + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + } + } + } catch (const heif::Error& e) { + throw CImgInstanceException(_cimg_instance + "load_heif(): Unable to decode image: %s", + cimg_instance, + e.get_message().c_str()); + } catch (...) { + throw; + } + return *this; +#endif + } + + //! Load image using GraphicsMagick's external tool 'gm'. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_graphicsmagick_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_graphicsmagick_external(): Specified filename is (null).", + cimg_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256); + std::FILE *file = 0; + const CImg s_filename = CImg::string(filename)._system_strescape(); +#if cimg_OS==1 + if (!cimg::system("which gm")) { + cimg_snprintf(command,command._width,"%s convert \"%s\" pnm:-", + cimg::graphicsmagick_path(),s_filename.data()); + file = popen(command,"r"); + if (file) { + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { load_pnm(file); } catch (...) { + pclose(file); + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_graphicsmagick_external(): Failed to load file '%s' " + "with external command 'gm'.", + cimg_instance, + filename); + } + pclose(file); + return *this; + } + } +#endif + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.pnm", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\" convert \"%s\" \"%s\"", + cimg::graphicsmagick_path(),s_filename.data(), + CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command,cimg::graphicsmagick_path()); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "load_graphicsmagick_external(): Failed to load file '%s' with external command 'gm'.", + cimg_instance, + filename); + + } else cimg::fclose(file); + load_pnm(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load image using GraphicsMagick's external tool 'gm' \newinstance. + static CImg get_load_graphicsmagick_external(const char *const filename) { + return CImg().load_graphicsmagick_external(filename); + } + + //! Load gzipped image file, using external tool 'gunzip'. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_gzip_external(const char *const filename) { + if (!filename) + throw CImgIOException(_cimg_instance + "load_gzip_external(): Specified filename is (null).", + cimg_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256), body(256); + const char + *const ext = cimg::split_filename(filename,body), + *const ext2 = cimg::split_filename(body,0); + + std::FILE *file = 0; + do { + if (!cimg::strcasecmp(ext,"gz")) { + if (*ext2) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext2); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } else { + if (*ext) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\" -c \"%s\" > \"%s\"", + cimg::gunzip_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "load_gzip_external(): Failed to load file '%s' with external command 'gunzip'.", + cimg_instance, + filename); + + } else cimg::fclose(file); + load(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load gzipped image file, using external tool 'gunzip' \newinstance. + static CImg get_load_gzip_external(const char *const filename) { + return CImg().load_gzip_external(filename); + } + + //! Load image using ImageMagick's external tool 'convert'. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_imagemagick_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_imagemagick_external(): Specified filename is (null).", + cimg_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256); + std::FILE *file = 0; + const CImg s_filename = CImg::string(filename)._system_strescape(); +#if cimg_OS==1 + if (!cimg::system("which convert")) { + cimg_snprintf(command,command._width,"%s%s \"%s\" pnm:-", + cimg::imagemagick_path(), + !cimg::strcasecmp(cimg::split_filename(filename),"pdf")?" -density 400x400":"", + s_filename.data()); + file = popen(command,"r"); + if (file) { + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { load_pnm(file); } catch (...) { + pclose(file); + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_imagemagick_external(): Failed to load file '%s' with " + "external command 'magick/convert'.", + cimg_instance, + filename); + } + pclose(file); + return *this; + } + } +#endif + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.pnm", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\"%s \"%s\" \"%s\"", + cimg::imagemagick_path(), + !cimg::strcasecmp(cimg::split_filename(filename),"pdf")?" -density 400x400":"", + s_filename.data(),CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command,cimg::imagemagick_path()); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "load_imagemagick_external(): Failed to load file '%s' with " + "external command 'magick/convert'.", + cimg_instance, + filename); + + } else cimg::fclose(file); + load_pnm(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load image using ImageMagick's external tool 'convert' \newinstance. + static CImg get_load_imagemagick_external(const char *const filename) { + return CImg().load_imagemagick_external(filename); + } + + //! Load image from a DICOM file, using Medcon's external tool 'medcon'. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_medcon_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_medcon_external(): Specified filename is (null).", + cimg_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256), body(256); + cimg::fclose(cimg::fopen(filename,"r")); + std::FILE *file = 0; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s.hdr",cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\" -w -c anlz -o \"%s\" -f \"%s\"", + cimg::medcon_path(), + CImg::string(filename_tmp)._system_strescape().data(), + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::medcon_path()); + cimg::split_filename(filename_tmp,body); + + cimg_snprintf(command,command._width,"%s.hdr",body._data); + file = cimg::std_fopen(command,"rb"); + if (!file) { + cimg_snprintf(command,command._width,"m000-%s.hdr",body._data); + file = cimg::std_fopen(command,"rb"); + if (!file) { + throw CImgIOException(_cimg_instance + "load_medcon_external(): Failed to load file '%s' with external command 'medcon'.", + cimg_instance, + filename); + } + } + cimg::fclose(file); + load_analyze(command); + std::remove(command); + cimg::split_filename(command,body); + cimg_snprintf(command,command._width,"%s.img",body._data); + std::remove(command); + return *this; + } + + //! Load image from a DICOM file, using Medcon's external tool 'medcon' \newinstance. + static CImg get_load_medcon_external(const char *const filename) { + return CImg().load_medcon_external(filename); + } + + //! Load image from a .pdf file. + /** + \param filename Filename, as a C-string. + \param resolution Image resolution. + **/ + CImg& load_pdf_external(const char *const filename, const unsigned int resolution=400) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_pdf_external(): Specified filename is (null).", + cimg_instance); + CImg command(1024), filename_tmp(256); + std::FILE *file = 0; + const CImg s_filename = CImg::string(filename)._system_strescape(); +#if cimg_OS==1 + cimg_snprintf(command,command._width,"gs -q -dNOPAUSE -sDEVICE=ppmraw -o - -r%u \"%s\"", + resolution,s_filename.data()); + file = popen(command,"r"); + if (file) { + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { load_pnm(file); } catch (...) { + pclose(file); + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_pdf_external(): Failed to load file '%s' with external command 'gs'.", + cimg_instance, + filename); + } + pclose(file); + return *this; + } +#endif + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.ppm", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"gs -q -dNOPAUSE -sDEVICE=ppmraw -o \"%s\" -r%u \"%s\"", + CImg::string(filename_tmp)._system_strescape().data(),resolution,s_filename.data()); + cimg::system(command,"gs"); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "load_pdf_external(): Failed to load file '%s' with external command 'gs'.", + cimg_instance, + filename); + } else cimg::fclose(file); + load_pnm(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load image from a .pdf file \newinstance. + static CImg get_load_pdf_external(const char *const filename, const unsigned int resolution=400) { + return CImg().load_pdf_external(filename,resolution); + } + + //! Load image from a RAW Color Camera file, using external tool 'dcraw'. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_dcraw_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_dcraw_external(): Specified filename is (null).", + cimg_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256); + std::FILE *file = 0; + const CImg s_filename = CImg::string(filename)._system_strescape(); +#if cimg_OS==1 + cimg_snprintf(command,command._width,"%s -w -4 -c \"%s\"", + cimg::dcraw_path(),s_filename.data()); + file = popen(command,"r"); + if (file) { + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { load_pnm(file); } catch (...) { + pclose(file); + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_dcraw_external(): Failed to load file '%s' with external command 'dcraw'.", + cimg_instance, + filename); + } + pclose(file); + return *this; + } +#endif + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.ppm", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\" -w -4 -c \"%s\" > \"%s\"", + cimg::dcraw_path(),s_filename.data(),CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command,cimg::dcraw_path()); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "load_dcraw_external(): Failed to load file '%s' with external command 'dcraw'.", + cimg_instance, + filename); + + } else cimg::fclose(file); + load_pnm(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load image from a RAW Color Camera file, using external tool 'dcraw' \newinstance. + static CImg get_load_dcraw_external(const char *const filename) { + return CImg().load_dcraw_external(filename); + } + +#ifdef cimg_use_opencv + + // Convert a continuous cv::Mat to a CImg. + static CImg _cvmat2cimg(const cv::Mat &src) { + if (src.channels()==1) return CImg(src.ptr(),src.cols,src.rows,1,1); + else if (src.channels()==3) { // BGR + CImg res(src.cols,src.rows,1,src.channels()); + const unsigned char *ptrs = src.ptr(); + unsigned char *pR = res.data(), *pG = res.data(0,0,0,1), *pB = res.data(0,0,0,2); + cimg_forXY(res,x,y) { *(pB++) = *(ptrs++); *(pG++) = *(ptrs++); *(pR++) = *(ptrs++); } + return res; + } + return CImg(src.ptr(),src.channels(),src.cols,src.rows,1,true).get_permute_axes("yzcx"); + } + + // Convert a CImg to a cv::Mat. + cv::Mat _cimg2cvmat() const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "_cimg2cvmat() : Instance image is empty.", + cimg_instance); + if (_spectrum==2) + throw CImgInstanceException(_cimg_instance + "_cimg2cvmat() : Invalid number of channels (should be '1' or '3+').", + cimg_instance); + if (_depth!=1) + throw CImgInstanceException(_cimg_instance + "_cimg2cvmat() : Invalid number of slices (should be '1').", + cimg_instance); + int mat_type = -1; + if (pixel_type()==cimg::type::string()) mat_type = CV_8UC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_8SC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_16UC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_16SC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_32SC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_32FC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_64FC1; + if (mat_type<0) + throw CImgInstanceException(_cimg_instance + "_cvmat2cimg() : pixel type '%s' is not supported.", + cimg_instance,pixel_type()); + cv::Mat res; + std::vector channels(_spectrum); + if (_spectrum>1) { + cimg_forC(*this,c) + channels[c] = cv::Mat(_height,_width,mat_type,_data + _width*_height*(_spectrum - 1 - c)); + cv::merge(channels,res); + } else res = cv::Mat(_height,_width,mat_type,_data).clone(); + return res; + } + +#endif + + //! Load image from a camera stream, using OpenCV. + /** + \param index Index of the camera to capture images from (from 0 to 63). + \param capture_width Width of the desired image ('0' stands for default value). + \param capture_height Height of the desired image ('0' stands for default value). + \param skip_frames Number of frames to skip before the capture. + \param release_camera Tells if the camera resource must be released at the end of the method. + **/ + CImg& load_camera(const unsigned int camera_index=0, + const unsigned int capture_width=0, const unsigned int capture_height=0, + const unsigned int skip_frames=0, const bool release_camera=true) { +#ifdef cimg_use_opencv + if (camera_index>=64) + throw CImgArgumentException(_cimg_instance + "load_camera(): Invalid request for camera #%u " + "(no more than 100 cameras can be managed simultaneously).", + cimg_instance, + camera_index); + static cv::VideoCapture *captures[64] = { 0 }; + static unsigned int captures_w[64], captures_h[64]; + if (release_camera) { + cimg::mutex(9); + if (captures[camera_index]) captures[camera_index]->release(); + delete captures[camera_index]; + captures[camera_index] = 0; + captures_w[camera_index] = captures_h[camera_index] = 0; + cimg::mutex(9,0); + return *this; + } + if (!captures[camera_index]) { + cimg::mutex(9); + captures[camera_index] = new cv::VideoCapture(camera_index); + captures_w[camera_index] = captures_h[camera_index] = 0; + if (!captures[camera_index]->isOpened()) { + delete captures[camera_index]; + captures[camera_index] = 0; + cimg::mutex(9,0); + throw CImgIOException(_cimg_instance + "load_camera(): Failed to initialize camera #%u.", + cimg_instance, + camera_index); + } + cimg::mutex(9,0); + } + cimg::mutex(9); + if (capture_width!=captures_w[camera_index]) { + captures[camera_index]->set(_cimg_cap_prop_frame_width,capture_width); + captures_w[camera_index] = capture_width; + } + if (capture_height!=captures_h[camera_index]) { + captures[camera_index]->set(_cimg_cap_prop_frame_height,capture_height); + captures_h[camera_index] = capture_height; + } + for (unsigned int i = 0; igrab(); + cv::Mat cvimg; + captures[camera_index]->read(cvimg); + if (cvimg.empty()) assign(); else _cvmat2cimg(cvimg).move_to(*this); + cimg::mutex(9,0); + return *this; +#else + cimg::unused(camera_index,skip_frames,release_camera,capture_width,capture_height); + throw CImgIOException(_cimg_instance + "load_camera(): This function requires features from the OpenCV library " + "('-Dcimg_use_opencv' must be defined).", + cimg_instance); +#endif + } + + //! Load image from a camera stream, using OpenCV \newinstance. + static CImg get_load_camera(const unsigned int camera_index=0, + const unsigned int capture_width=0, const unsigned int capture_height=0, + const unsigned int skip_frames=0, const bool release_camera=true) { + return CImg().load_camera(camera_index,capture_width,capture_height,skip_frames,release_camera); + } + + //! Load image using various non-native ways. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_other(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_other(): Specified filename is (null).", + cimg_instance); + + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { load_magick(filename); } + catch (CImgException&) { + try { load_imagemagick_external(filename); } + catch (CImgException&) { + try { load_graphicsmagick_external(filename); } + catch (CImgException&) { + try { load_cimg(filename); } + catch (CImgException&) { + try { + cimg::fclose(cimg::fopen(filename,"rb")); + } catch (CImgException&) { + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_other(): Failed to open file '%s'.", + cimg_instance, + filename); + } + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_other(): Failed to recognize format of file '%s'.", + cimg_instance, + filename); + } + } + } + } + cimg::exception_mode(omode); + return *this; + } + + //! Load image using various non-native ways \newinstance. + static CImg get_load_other(const char *const filename) { + return CImg().load_other(filename); + } + + //@} + //--------------------------- + // + //! \name Data Output + //@{ + //--------------------------- + + //! Display information about the image data. + /** + \param title Name for the considered image. + \param display_stats Tells to compute and display image statistics. + **/ + const CImg& print(const char *const title=0, const bool display_stats=true) const { + + int xm = 0, ym = 0, zm = 0, vm = 0, xM = 0, yM = 0, zM = 0, vM = 0; + CImg st; + if (!is_empty() && display_stats) { + st = get_stats(); + xm = (int)st[4]; ym = (int)st[5], zm = (int)st[6], vm = (int)st[7]; + xM = (int)st[8]; yM = (int)st[9], zM = (int)st[10], vM = (int)st[11]; + } + + const ulongT siz = size(), msiz = siz*sizeof(T), siz1 = siz - 1, + mdisp = msiz<8*1024?0U:msiz<8*1024*1024?1U:2U, width1 = _width - 1; + + CImg _title(64); + if (!title) cimg_snprintf(_title,_title._width,"CImg<%s>",pixel_type()); + + std::fprintf(cimg::output(),"%s%s%s%s: %sthis%s = %p, %ssize%s = (%u,%u,%u,%u) [%lu %s], %sdata%s = (%s*)%p", + cimg::t_magenta,cimg::t_bold,title?title:_title._data,cimg::t_normal, + cimg::t_bold,cimg::t_normal,(void*)this, + cimg::t_bold,cimg::t_normal,_width,_height,_depth,_spectrum, + (unsigned long)(mdisp==0?msiz:(mdisp==1?(msiz>>10):(msiz>>20))), + mdisp==0?"b":(mdisp==1?"Kio":"Mio"), + cimg::t_bold,cimg::t_normal,pixel_type(),(void*)begin()); + if (_data) + std::fprintf(cimg::output(),"..%p (%s) = [ ",(void*)((char*)end() - 1),_is_shared?"shared":"non-shared"); + else std::fprintf(cimg::output()," (%s) = [ ",_is_shared?"shared":"non-shared"); + + if (!is_empty()) cimg_foroff(*this,off) { + std::fprintf(cimg::output(),"%g",(double)_data[off]); + if (off!=siz1) std::fprintf(cimg::output(),"%s",off%_width==width1?" ; ":" "); + if (off==7 && siz>16) { off = siz1 - 8; std::fprintf(cimg::output(),"... "); } + } + if (!is_empty() && display_stats) + std::fprintf(cimg::output(), + " ], %smin%s = %g, %smax%s = %g, %smean%s = %g, %sstd%s = %g, %scoords_min%s = (%u,%u,%u,%u), " + "%scoords_max%s = (%u,%u,%u,%u).\n", + cimg::t_bold,cimg::t_normal,st[0], + cimg::t_bold,cimg::t_normal,st[1], + cimg::t_bold,cimg::t_normal,st[2], + cimg::t_bold,cimg::t_normal,std::sqrt(st[3]), + cimg::t_bold,cimg::t_normal,xm,ym,zm,vm, + cimg::t_bold,cimg::t_normal,xM,yM,zM,vM); + else std::fprintf(cimg::output(),"%s].\n",is_empty()?"":" "); + std::fflush(cimg::output()); + return *this; + } + + //! Display image into a CImgDisplay window. + /** + \param disp Display window. + **/ + const CImg& display(CImgDisplay& disp) const { + disp.display(*this); + return *this; + } + + //! Display image into a CImgDisplay window, in an interactive way. + /** + \param disp Display window. + \param display_info Tells if image information are displayed on the standard output. + \param[in,out] XYZ Contains the XYZ coordinates at start / exit of the function. + \param exit_on_anykey Exit function when any key is pressed. + **/ + const CImg& display(CImgDisplay &disp, const bool display_info, unsigned int *const XYZ=0, + const bool exit_on_anykey=false) const { + return _display(disp,0,display_info,XYZ,exit_on_anykey,false); + } + + //! Display image into an interactive window. + /** + \param title Window title + \param display_info Tells if image information are displayed on the standard output. + \param[in,out] XYZ Contains the XYZ coordinates at start / exit of the function. + \param exit_on_anykey Exit function when any key is pressed. + **/ + const CImg& display(const char *const title=0, const bool display_info=true, unsigned int *const XYZ=0, + const bool exit_on_anykey=false) const { + CImgDisplay disp; + return _display(disp,title,display_info,XYZ,exit_on_anykey,false); + } + + const CImg& _display(CImgDisplay &disp, const char *const title, const bool display_info, + unsigned int *const XYZ, const bool exit_on_anykey, + const bool exit_on_singleclick) const { + unsigned int oldw = 0, oldh = 0, _XYZ[3] = { 0 }, key = 0; + int x0 = 0, y0 = 0, z0 = 0, x1 = width() - 1, y1 = height() - 1, z1 = depth() - 1, + old_mouse_x = -1, old_mouse_y = -1; + + if (!disp) { + disp.assign(cimg_fitscreen(_width,_height,_depth),title?title:0,1); + if (!title) disp.set_title("CImg<%s> (%ux%ux%ux%u)",pixel_type(),_width,_height,_depth,_spectrum); + else disp.set_title("%s",title); + } else if (title) disp.set_title("%s",title); + disp.show().flush(); + + const CImg dtitle = CImg::string(disp.title()); + if (display_info) print(dtitle); + + CImg zoom; + for (bool reset_view = true, resize_disp = false, is_first_select = true; !key && !disp.is_closed(); ) { + if (reset_view) { + if (XYZ) { _XYZ[0] = XYZ[0]; _XYZ[1] = XYZ[1]; _XYZ[2] = XYZ[2]; } + else { + _XYZ[0] = (unsigned int)(x0 + x1 + 1)/2; + _XYZ[1] = (unsigned int)(y0 + y1 + 1)/2; + _XYZ[2] = (unsigned int)(z0 + z1 + 1)/2; + } + x0 = 0; y0 = 0; z0 = 0; x1 = width() - 1; y1 = height() - 1; z1 = depth() - 1; + disp.resize(cimg_fitscreen(_width,_height,_depth),false); + oldw = disp._width; oldh = disp._height; + resize_disp = true; + reset_view = false; + } + if (!x0 && !y0 && !z0 && x1==width() - 1 && y1==height() - 1 && z1==depth() - 1) { + if (is_empty()) zoom.assign(1,1,1,1,(T)0); else zoom.assign(); + } else zoom = get_crop(x0,y0,z0,x1,y1,z1); + + const CImg& visu = zoom?zoom:*this; + const unsigned int + dx = 1U + x1 - x0, dy = 1U + y1 - y0, dz = 1U + z1 - z0, + tw = dx + (dz>1?dz:0U), th = dy + (dz>1?dz:0U); + if (!is_empty() && !disp.is_fullscreen() && resize_disp) { + const float + ttw = (float)tw*disp.width()/oldw, tth = (float)th*disp.height()/oldh, + dM = std::max(ttw,tth), diM = (float)std::max(disp.width(),disp.height()); + const unsigned int + imgw = (unsigned int)(ttw*diM/dM), imgh = (unsigned int)(tth*diM/dM); + disp.set_fullscreen(false).resize(cimg_fitscreen(imgw,imgh,1),false); + resize_disp = false; + } + oldw = tw; oldh = th; + + bool + go_up = false, go_down = false, go_left = false, go_right = false, + go_inc = false, go_dec = false, go_in = false, go_out = false, + go_in_center = false; + + disp.set_title("%s",dtitle._data); + if (_width>1 && visu._width==1) disp.set_title("%s | x=%u",disp._title,x0); + if (_height>1 && visu._height==1) disp.set_title("%s | y=%u",disp._title,y0); + if (_depth>1 && visu._depth==1) disp.set_title("%s | z=%u",disp._title,z0); + + disp._mouse_x = old_mouse_x; disp._mouse_y = old_mouse_y; + CImg selection = visu._select(disp,0,2,_XYZ,x0,y0,z0,true,is_first_select,_depth>1,true); + old_mouse_x = disp._mouse_x; old_mouse_y = disp._mouse_y; + is_first_select = false; + + if (disp.wheel()) { + if ((disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) && + (disp.is_keySHIFTLEFT() || disp.is_keySHIFTRIGHT())) { + go_left = !(go_right = disp.wheel()>0); + } else if (disp.is_keySHIFTLEFT() || disp.is_keySHIFTRIGHT()) { + go_down = !(go_up = disp.wheel()>0); + } else if (depth()==1 || disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + go_out = !(go_in = disp.wheel()>0); go_in_center = false; + } + disp.set_wheel(); + } + + const int + sx0 = selection(0), sy0 = selection(1), sz0 = selection(2), + sx1 = selection(3), sy1 = selection(4), sz1 = selection(5); + if (sx0>=0 && sy0>=0 && sz0>=0 && sx1>=0 && sy1>=0 && sz1>=0) { + x1 = x0 + sx1; y1 = y0 + sy1; z1 = z0 + sz1; + x0+=sx0; y0+=sy0; z0+=sz0; + if ((sx0==sx1 && sy0==sy1) || (_depth>1 && sx0==sx1 && sz0==sz1) || (_depth>1 && sy0==sy1 && sz0==sz1)) { + if (exit_on_singleclick && (!zoom || is_empty())) break; else reset_view = true; + } + resize_disp = true; + } else switch (key = disp.key()) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : case cimg::keySHIFTRIGHT : +#endif + case 0 : case cimg::keyCTRLLEFT : case cimg::keySHIFTLEFT : key = 0; break; + case cimg::keyP : if (visu._depth>1 && (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT())) { + // Special mode: play stack of frames + const unsigned int + w1 = visu._width*disp.width()/(visu._width + (visu._depth>1?visu._depth:0)), + h1 = visu._height*disp.height()/(visu._height + (visu._depth>1?visu._depth:0)); + float frame_timing = 5; + bool is_stopped = false; + disp.set_key(key,false).set_wheel().resize(cimg_fitscreen(w1,h1,1),false); key = 0; + for (unsigned int timer = 0; !key && !disp.is_closed() && !disp.button(); ) { + if (disp.is_resized()) disp.resize(false); + if (!timer) { + visu.get_slice((int)_XYZ[2]).display(disp.set_title("%s | z=%d",dtitle.data(),_XYZ[2])); + (++_XYZ[2])%=visu._depth; + } + if (!is_stopped) { if (++timer>(unsigned int)frame_timing) timer = 0; } else timer = ~0U; + if (disp.wheel()) { frame_timing-=disp.wheel()/3.f; disp.set_wheel(); } + switch (key = disp.key()) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : +#endif + case cimg::keyCTRLLEFT : key = 0; break; + case cimg::keyPAGEUP : frame_timing-=0.3f; key = 0; break; + case cimg::keyPAGEDOWN : frame_timing+=0.3f; key = 0; break; + case cimg::keySPACE : is_stopped = !is_stopped; disp.set_key(key,false); key = 0; break; + case cimg::keyARROWLEFT : case cimg::keyARROWUP : is_stopped = true; timer = 0; key = 0; break; + case cimg::keyARROWRIGHT : case cimg::keyARROWDOWN : is_stopped = true; + (_XYZ[2]+=visu._depth - 2)%=visu._depth; timer = 0; key = 0; break; + case cimg::keyD : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,false), + CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,true),false); + disp.set_key(key,false); key = 0; + } break; + case cimg::keyC : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(2*disp.width()/3,2*disp.height()/3,1),false).set_key(key,false); key = 0; + } break; + case cimg::keyR : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(_width,_height,_depth),false).set_key(key,false); key = 0; + } break; + case cimg::keyF : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.resize(disp.screen_width(),disp.screen_height(),false). + toggle_fullscreen().set_key(key,false); key = 0; + } break; + } + frame_timing = frame_timing<1?1:(frame_timing>39?39:frame_timing); + disp.wait(20); + } + const unsigned int + w2 = (visu._width + (visu._depth>1?visu._depth:0))*disp.width()/visu._width, + h2 = (visu._height + (visu._depth>1?visu._depth:0))*disp.height()/visu._height; + disp.resize(cimg_fitscreen(w2,h2,1),false).set_title(dtitle.data()).set_key().set_button().set_wheel(); + key = 0; + } break; + case cimg::keyHOME : reset_view = resize_disp = true; key = 0; break; + case cimg::keyPADADD : go_in = true; go_in_center = true; key = 0; break; + case cimg::keyPADSUB : go_out = true; key = 0; break; + case cimg::keyARROWLEFT : case cimg::keyPAD4: go_left = true; key = 0; break; + case cimg::keyARROWRIGHT : case cimg::keyPAD6: go_right = true; key = 0; break; + case cimg::keyARROWUP : case cimg::keyPAD8: go_up = true; key = 0; break; + case cimg::keyARROWDOWN : case cimg::keyPAD2: go_down = true; key = 0; break; + case cimg::keyPAD7 : go_up = go_left = true; key = 0; break; + case cimg::keyPAD9 : go_up = go_right = true; key = 0; break; + case cimg::keyPAD1 : go_down = go_left = true; key = 0; break; + case cimg::keyPAD3 : go_down = go_right = true; key = 0; break; + case cimg::keyPAGEUP : go_inc = true; key = 0; break; + case cimg::keyPAGEDOWN : go_dec = true; key = 0; break; + } + if (go_in) { + const int + mx = go_in_center?disp.width()/2:disp.mouse_x(), + my = go_in_center?disp.height()/2:disp.mouse_y(), + mX = mx*(width() + (depth()>1?depth():0))/disp.width(), + mY = my*(height() + (depth()>1?depth():0))/disp.height(); + int X = (int)_XYZ[0], Y = (int)_XYZ[1], Z = (int)_XYZ[2]; + if (mX=height()) { + X = x0 + mX*(1 + x1 - x0)/width(); Z = z0 + (mY - height())*(1 + z1 - z0)/depth(); + } + if (mX>=width() && mY4) { x0 = X - 3*(X - x0)/4; x1 = X + 3*(x1 - X)/4; } + if (y1 - y0>4) { y0 = Y - 3*(Y - y0)/4; y1 = Y + 3*(y1 - Y)/4; } + if (z1 - z0>4) { z0 = Z - 3*(Z - z0)/4; z1 = Z + 3*(z1 - Z)/4; } + } + if (go_out) { + const int + delta_x = (x1 - x0)/8, delta_y = (y1 - y0)/8, delta_z = (z1 - z0)/8, + ndelta_x = delta_x?delta_x:(_width>1), + ndelta_y = delta_y?delta_y:(_height>1), + ndelta_z = delta_z?delta_z:(_depth>1); + x0-=ndelta_x; y0-=ndelta_y; z0-=ndelta_z; + x1+=ndelta_x; y1+=ndelta_y; z1+=ndelta_z; + if (x0<0) { x1-=x0; x0 = 0; if (x1>=width()) x1 = width() - 1; } + if (y0<0) { y1-=y0; y0 = 0; if (y1>=height()) y1 = height() - 1; } + if (z0<0) { z1-=z0; z0 = 0; if (z1>=depth()) z1 = depth() - 1; } + if (x1>=width()) { x0-=(x1 - width() + 1); x1 = width() - 1; if (x0<0) x0 = 0; } + if (y1>=height()) { y0-=(y1 - height() + 1); y1 = height() - 1; if (y0<0) y0 = 0; } + if (z1>=depth()) { z0-=(z1 - depth() + 1); z1 = depth() - 1; if (z0<0) z0 = 0; } + const float + ratio = (float)(x1-x0)/(y1-y0), + ratiow = (float)disp._width/disp._height, + sub = std::min(cimg::abs(ratio - ratiow),cimg::abs(1/ratio-1/ratiow)); + if (sub>0.01) resize_disp = true; + } + if (go_left) { + const int delta = (x1 - x0)/4, ndelta = delta?delta:(_width>1); + if (x0 - ndelta>=0) { x0-=ndelta; x1-=ndelta; } + else { x1-=x0; x0 = 0; } + } + if (go_right) { + const int delta = (x1 - x0)/4, ndelta = delta?delta:(_width>1); + if (x1+ndelta1); + if (y0 - ndelta>=0) { y0-=ndelta; y1-=ndelta; } + else { y1-=y0; y0 = 0; } + } + if (go_down) { + const int delta = (y1 - y0)/4, ndelta = delta?delta:(_height>1); + if (y1+ndelta1); + if (z0 - ndelta>=0) { z0-=ndelta; z1-=ndelta; } + else { z1-=z0; z0 = 0; } + } + if (go_dec) { + const int delta = (z1 - z0)/4, ndelta = delta?delta:(_depth>1); + if (z1+ndelta + const CImg& display_object3d(CImgDisplay& disp, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return _display_object3d(disp,0,vertices,primitives,colors,opacities,centering,render_static, + render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(const char *const title, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + CImgDisplay disp; + return _display_object3d(disp,title,vertices,primitives,colors,opacities,centering,render_static, + render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(CImgDisplay &disp, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(disp,vertices,primitives,colors,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(const char *const title, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(title,vertices,primitives,colors,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(CImgDisplay &disp, + const CImg& vertices, + const CImgList& primitives, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(disp,vertices,primitives,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(const char *const title, + const CImg& vertices, + const CImgList& primitives, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(title,vertices,primitives,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(CImgDisplay &disp, + const CImg& vertices, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(disp,vertices,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(const char *const title, + const CImg& vertices, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(title,vertices,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + template + const CImg& _display_object3d(CImgDisplay& disp, const char *const title, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool centering, + const int render_static, const int render_motion, + const bool is_double_sided, const float focale, + const float light_x, const float light_y, const float light_z, + const float specular_lightness, const float specular_shininess, + const bool display_axes, float *const pose_matrix, + const bool exit_on_anykey) const { + typedef typename cimg::superset::type tpfloat; + + // Check input arguments + if (is_empty()) { + CImg background; + if (colors && colors[0].size()==1) background.assign(1,2,1,1,64,128); + else background.assign(1,2,1,3,32,64,32,116,64,96); + if (disp) background.resize(disp.width(),disp.height(),1,-100,3); + else background.resize(cimg_fitscreen(CImgDisplay::screen_width()/2, + CImgDisplay::screen_height()/2,1),1,-100,3); + return background._display_object3d(disp,title,vertices,primitives,colors,opacities,centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } else { if (disp) disp.resize(*this,false); } + CImg error_message(1024); + if (!vertices.is_object3d(primitives,colors,opacities,true,error_message)) + throw CImgArgumentException(_cimg_instance + "display_object3d(): Invalid specified 3D object (%u,%u) (%s).", + cimg_instance,vertices._width,primitives._width,error_message.data()); + if (vertices._width && !primitives) { + CImgList nprimitives(vertices._width,1,1,1,1); + cimglist_for(nprimitives,l) nprimitives(l,0) = (tf)l; + return _display_object3d(disp,title,vertices,nprimitives,colors,opacities,centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + if (!disp) { + disp.assign(cimg_fitscreen(_width,_height,_depth),title?title:0,3); + if (!title) disp.set_title("CImg<%s> (%u vertices, %u primitives)", + pixel_type(),vertices._width,primitives._width); + } else if (title) disp.set_title("%s",title); + + // Init 3D objects and compute object statistics + CImg + pose, + rotated_vertices(vertices._width,3), + bbox_vertices, rotated_bbox_vertices, + axes_vertices, rotated_axes_vertices, + bbox_opacities, axes_opacities; + CImgList bbox_primitives, axes_primitives; + CImgList reverse_primitives; + CImgList bbox_colors, bbox_colors2, axes_colors; + unsigned int ns_width = 0, ns_height = 0; + int _is_double_sided = (int)is_double_sided; + bool ndisplay_axes = display_axes; + const CImg + background_color(1,1,1,_spectrum,0), + foreground_color(1,1,1,_spectrum,(T)std::min((int)cimg::type::max(),255)); + float + Xoff = 0, Yoff = 0, Zoff = 0, sprite_scale = 1, + xm = 0, xM = vertices?vertices.get_shared_row(0).max_min(xm):0, + ym = 0, yM = vertices?vertices.get_shared_row(1).max_min(ym):0, + zm = 0, zM = vertices?vertices.get_shared_row(2).max_min(zm):0; + const float delta = cimg::max(xM - xm,yM - ym,zM - zm); + + rotated_bbox_vertices = bbox_vertices.assign(8,3,1,1, + xm,xM,xM,xm,xm,xM,xM,xm, + ym,ym,yM,yM,ym,ym,yM,yM, + zm,zm,zm,zm,zM,zM,zM,zM); + bbox_primitives.assign(6,1,4,1,1, 0,3,2,1, 4,5,6,7, 1,2,6,5, 0,4,7,3, 0,1,5,4, 2,3,7,6); + bbox_colors.assign(6,_spectrum,1,1,1,background_color[0]); + bbox_colors2.assign(6,_spectrum,1,1,1,foreground_color[0]); + bbox_opacities.assign(bbox_colors._width,1,1,1,0.3f); + + rotated_axes_vertices = axes_vertices.assign(7,3,1,1, + 0,20,0,0,22,-6,-6, + 0,0,20,0,-6,22,-6, + 0,0,0,20,0,0,22); + axes_opacities.assign(3,1,1,1,1); + axes_colors.assign(3,_spectrum,1,1,1,foreground_color[0]); + axes_primitives.assign(3,1,2,1,1, 0,1, 0,2, 0,3); + + // Begin user interaction loop + CImg visu0(*this,false), visu; + CImg zbuffer(visu0.width(),visu0.height(),1,1,0); + bool init_pose = true, clicked = false, redraw = true; + unsigned int key = 0, font_size = 32; + int + x0 = 0, y0 = 0, x1 = 0, y1 = 0, + nrender_static = render_static, + nrender_motion = render_motion; + disp.show().flush(); + + while (!disp.is_closed() && !key) { + + // Init object pose + if (init_pose) { + const float + ratio = delta>0?(2.f*std::min(disp.width(),disp.height())/(3.f*delta)):1, + dx = (xM + xm)/2, dy = (yM + ym)/2, dz = (zM + zm)/2; + if (centering) + CImg(4,3,1,1, ratio,0.,0.,-ratio*dx, 0.,ratio,0.,-ratio*dy, 0.,0.,ratio,-ratio*dz).move_to(pose); + else CImg(4,3,1,1, 1,0,0,0, 0,1,0,0, 0,0,1,0).move_to(pose); + if (pose_matrix) { + CImg pose0(pose_matrix,4,3,1,1,false); + pose0.resize(4,4,1,1,0); pose.resize(4,4,1,1,0); + pose0(3,3) = pose(3,3) = 1; + (pose0*pose).get_crop(0,0,3,2).move_to(pose); + Xoff = pose_matrix[12]; Yoff = pose_matrix[13]; Zoff = pose_matrix[14]; sprite_scale = pose_matrix[15]; + } else { Xoff = Yoff = Zoff = 0; sprite_scale = 1; } + init_pose = false; + redraw = true; + } + + // Rotate and draw 3D object + if (redraw) { + const float + r00 = pose(0,0), r10 = pose(1,0), r20 = pose(2,0), r30 = pose(3,0), + r01 = pose(0,1), r11 = pose(1,1), r21 = pose(2,1), r31 = pose(3,1), + r02 = pose(0,2), r12 = pose(1,2), r22 = pose(2,2), r32 = pose(3,2); + if ((clicked && nrender_motion>=0) || (!clicked && nrender_static>=0)) { + const tp *const pv0 = vertices.data(), *const pv1 = vertices.data(0,1), *const pv2 = vertices.data(0,2); + float + *const prv0 = rotated_vertices.data(), + *const prv1 = rotated_vertices.data(0,1), + *const prv2 = rotated_vertices.data(0,2); + cimg_pragma_openmp(parallel for cimg_openmp_if(vertices.width()>(cimg_openmp_sizefactor)*1024)) + cimg_forX(vertices,l) { + const float x = (float)pv0[l], y = (float)pv1[l], z = (float)pv2[l]; + prv0[l] = r00*x + r10*y + r20*z + r30; + prv1[l] = r01*x + r11*y + r21*z + r31; + prv2[l] = r02*x + r12*y + r22*z + r32; + } + } + else cimg_forX(bbox_vertices,l) { + const float x = bbox_vertices(l,0), y = bbox_vertices(l,1), z = bbox_vertices(l,2); + rotated_bbox_vertices(l,0) = r00*x + r10*y + r20*z + r30; + rotated_bbox_vertices(l,1) = r01*x + r11*y + r21*z + r31; + rotated_bbox_vertices(l,2) = r02*x + r12*y + r22*z + r32; + } + + // Draw objects + const bool render_with_zbuffer = !clicked && nrender_static>0; + visu = visu0; + if ((clicked && nrender_motion<0) || (!clicked && nrender_static<0)) + visu.draw_object3d(Xoff + visu._width/2.f,Yoff + visu._height/2.f,Zoff, + rotated_bbox_vertices,bbox_primitives,bbox_colors,bbox_opacities,2,false,focale). + draw_object3d(Xoff + visu._width/2.f,Yoff + visu._height/2.f,Zoff, + rotated_bbox_vertices,bbox_primitives,bbox_colors2,1,false,focale); + else visu._draw_object3d((void*)0,render_with_zbuffer?zbuffer.fill(0):CImg::empty(), + Xoff + visu._width/2.f,Yoff + visu._height/2.f,Zoff, + rotated_vertices,reverse_primitives?reverse_primitives:primitives, + colors,opacities,clicked?nrender_motion:nrender_static,_is_double_sided==1,focale, + width()/2.f + light_x,height()/2.f + light_y,light_z + Zoff, + specular_lightness,specular_shininess,1,sprite_scale); + // Draw axes + if (ndisplay_axes) { + const float + n = 1e-8f + cimg::hypot(r00,r01,r02), + _r00 = r00/n, _r10 = r10/n, _r20 = r20/n, + _r01 = r01/n, _r11 = r11/n, _r21 = r21/n, + _r02 = r01/n, _r12 = r12/n, _r22 = r22/n, + Xaxes = 25, Yaxes = visu._height - 38.f; + cimg_forX(axes_vertices,l) { + const float + x = axes_vertices(l,0), + y = axes_vertices(l,1), + z = axes_vertices(l,2); + rotated_axes_vertices(l,0) = _r00*x + _r10*y + _r20*z; + rotated_axes_vertices(l,1) = _r01*x + _r11*y + _r21*z; + rotated_axes_vertices(l,2) = _r02*x + _r12*y + _r22*z; + } + axes_opacities(0,0) = (rotated_axes_vertices(1,2)>0)?0.5f:1.f; + axes_opacities(1,0) = (rotated_axes_vertices(2,2)>0)?0.5f:1.f; + axes_opacities(2,0) = (rotated_axes_vertices(3,2)>0)?0.5f:1.f; + visu.draw_object3d(Xaxes,Yaxes,0,rotated_axes_vertices,axes_primitives, + axes_colors,axes_opacities,1,false,focale). + draw_text((int)(Xaxes + rotated_axes_vertices(4,0)), + (int)(Yaxes + rotated_axes_vertices(4,1)), + "X",axes_colors[0]._data,0,axes_opacities(0,0),13). + draw_text((int)(Xaxes + rotated_axes_vertices(5,0)), + (int)(Yaxes + rotated_axes_vertices(5,1)), + "Y",axes_colors[1]._data,0,axes_opacities(1,0),13). + draw_text((int)(Xaxes + rotated_axes_vertices(6,0)), + (int)(Yaxes + rotated_axes_vertices(6,1)), + "Z",axes_colors[2]._data,0,axes_opacities(2,0),13); + } + visu.display(disp); + if (!clicked || nrender_motion==nrender_static) redraw = false; + } + + // Handle user interaction + if (!redraw) disp.wait(); + if ((disp.button() || disp.wheel()) && disp.mouse_x()>=0 && disp.mouse_y()>=0) { + redraw = true; + if (!clicked) { x0 = x1 = disp.mouse_x(); y0 = y1 = disp.mouse_y(); if (!disp.wheel()) clicked = true; } + else { x1 = disp.mouse_x(); y1 = disp.mouse_y(); } + const bool is_keyCTRL = disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT(); + if (disp.button()&1 && !is_keyCTRL) { + const float + R = 0.45f*std::min(disp.width(),disp.height()), + R2 = R*R, + u0 = (float)(x0 - disp.width()/2), + v0 = (float)(y0 - disp.height()/2), + u1 = (float)(x1 - disp.width()/2), + v1 = (float)(y1 - disp.height()/2), + n0 = cimg::hypot(u0,v0), + n1 = cimg::hypot(u1,v1), + nu0 = n0>R?(u0*R/n0):u0, + nv0 = n0>R?(v0*R/n0):v0, + nw0 = (float)std::sqrt(std::max(0.f,R2 - nu0*nu0 - nv0*nv0)), + nu1 = n1>R?(u1*R/n1):u1, + nv1 = n1>R?(v1*R/n1):v1, + nw1 = (float)std::sqrt(std::max(0.f,R2 - nu1*nu1 - nv1*nv1)), + u = nv0*nw1 - nw0*nv1, + v = nw0*nu1 - nu0*nw1, + w = nv0*nu1 - nu0*nv1, + n = cimg::hypot(u,v,w), + alpha = (float)std::asin(n/R2)*180/cimg::PI; + (CImg::rotation_matrix(u,v,w,-alpha)*pose).move_to(pose); + x0 = x1; y0 = y1; + } + if (disp.button()&2 && !is_keyCTRL) { + if (focale>0) Zoff-=(y0 - y1)*focale/400; + else { const float s = std::exp((y0 - y1)/400.f); pose*=s; sprite_scale*=s; } + x0 = x1; y0 = y1; + } + if (disp.wheel()) { + if (focale>0) Zoff-=disp.wheel()*focale/20; + else { const float s = std::exp(disp.wheel()/20.f); pose*=s; sprite_scale*=s; } + disp.set_wheel(); + } + if (disp.button()&4 || (disp.button()&1 && is_keyCTRL)) { + Xoff+=(x1 - x0); Yoff+=(y1 - y0); x0 = x1; y0 = y1; + } + if ((disp.button()&1) && (disp.button()&2) && !is_keyCTRL) { + init_pose = true; disp.set_button(); x0 = x1; y0 = y1; + pose = CImg(4,3,1,1, 1,0,0,0, 0,1,0,0, 0,0,1,0); + } + } else if (clicked) { x0 = x1; y0 = y1; clicked = false; redraw = true; } + + CImg filename(32); + switch (key = disp.key()) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : +#endif + case 0 : case cimg::keyCTRLLEFT : key = 0; break; + case cimg::keyD: if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,false), + CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,true),false). + _is_resized = true; + disp.set_key(key,false); key = 0; + } break; + case cimg::keyC : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(2*disp.width()/3,2*disp.height()/3,1),false)._is_resized = true; + disp.set_key(key,false); key = 0; + } break; + case cimg::keyR : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false).resize(cimg_fitscreen(_width,_height,_depth),false)._is_resized = true; + disp.set_key(key,false); key = 0; + } break; + case cimg::keyF : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + if (!ns_width || !ns_height || + ns_width>(unsigned int)disp.screen_width() || ns_height>(unsigned int)disp.screen_height()) { + ns_width = disp.screen_width()*3U/4; + ns_height = disp.screen_height()*3U/4; + } + if (disp.is_fullscreen()) disp.resize(ns_width,ns_height,false); + else { + ns_width = disp._width; ns_height = disp._height; + disp.resize(disp.screen_width(),disp.screen_height(),false); + } + disp.toggle_fullscreen()._is_resized = true; + disp.set_key(key,false); key = 0; + } break; + case cimg::keyT : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + // Switch single/double-sided primitives. + if (--_is_double_sided==-2) _is_double_sided = 1; + if (_is_double_sided>=0) reverse_primitives.assign(); + else primitives.get_reverse_object3d().move_to(reverse_primitives); + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyZ : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Enable/disable Z-buffer + if (zbuffer) zbuffer.assign(); + else zbuffer.assign(visu0.width(),visu0.height(),1,1,0); + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyX : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Show/hide 3D axes + ndisplay_axes = !ndisplay_axes; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF1 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Set rendering mode to points + nrender_motion = (nrender_static==0 && nrender_motion!=0)?0:-1; nrender_static = 0; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF2 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Set rendering mode to lines + nrender_motion = (nrender_static==1 && nrender_motion!=1)?1:-1; nrender_static = 1; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF3 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Set rendering mode to flat + nrender_motion = (nrender_static==2 && nrender_motion!=2)?2:-1; nrender_static = 2; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF4 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Set rendering mode to flat-shaded + nrender_motion = (nrender_static==3 && nrender_motion!=3)?3:-1; nrender_static = 3; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF5 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + // Set rendering mode to gouraud-shaded. + nrender_motion = (nrender_static==4 && nrender_motion!=4)?4:-1; nrender_static = 4; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF6 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Set rendering mode to phong-shaded + nrender_motion = (nrender_static==5 && nrender_motion!=5)?5:-1; nrender_static = 5; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyS : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Save snapshot + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.bmp",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu).__draw_text(" Saving snapshot... ",font_size,0).display(disp); + visu.save(filename); + (+visu).__draw_text(" Snapshot '%s' saved. ",font_size,0,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; + case cimg::keyG : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Save object as a .off file + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.off",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu).__draw_text(" Saving object... ",font_size,0).display(disp); + vertices.save_off(reverse_primitives?reverse_primitives:primitives,colors,filename); + (+visu).__draw_text(" Object '%s' saved. ",font_size,0,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; + case cimg::keyO : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Save object as a .cimg file + static unsigned int snap_number = 0; + std::FILE *file; + do { + +#ifdef cimg_use_zlib + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimgz",snap_number++); +#else + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimg",snap_number++); +#endif + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu).__draw_text(" Saving object... ",font_size,0).display(disp); + vertices.get_object3dtoCImg3d(reverse_primitives?reverse_primitives:primitives,colors,opacities). + save(filename); + (+visu).__draw_text(" Object '%s' saved. ",font_size,0,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; + +#ifdef cimg_use_board + case cimg::keyP : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Save object as a .EPS file + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.eps",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu).__draw_text(" Saving EPS snapshot... ",font_size,0).display(disp); + LibBoard::Board board; + (+visu)._draw_object3d(&board,zbuffer.fill(0), + Xoff + visu._width/2.f,Yoff + visu._height/2.f,Zoff, + rotated_vertices,reverse_primitives?reverse_primitives:primitives, + colors,opacities,clicked?nrender_motion:nrender_static, + _is_double_sided==1,focale, + visu.width()/2.f + light_x,visu.height()/2.f + light_y,light_z + Zoff, + specular_lightness,specular_shininess,1, + sprite_scale); + board.saveEPS(filename); + (+visu).__draw_text(" Object '%s' saved. ",font_size,0,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; + case cimg::keyV : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Save object as a .SVG file + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.svg",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu).__draw_text(" Saving SVG snapshot... ",font_size,0).display(disp); + LibBoard::Board board; + (+visu)._draw_object3d(&board,zbuffer.fill(0), + Xoff + visu._width/2.f,Yoff + visu._height/2.f,Zoff, + rotated_vertices,reverse_primitives?reverse_primitives:primitives, + colors,opacities,clicked?nrender_motion:nrender_static, + _is_double_sided==1,focale, + visu.width()/2.f + light_x,visu.height()/2.f + light_y,light_z + Zoff, + specular_lightness,specular_shininess,1, + sprite_scale); + board.saveSVG(filename); + (+visu).__draw_text(" Object '%s' saved. ",font_size,0,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; +#endif + } + if (disp.is_resized()) { + disp.resize(false); visu0 = get_resize(disp,1); + if (zbuffer) zbuffer.assign(disp.width(),disp.height()); + redraw = true; + } + if (!exit_on_anykey && key && key!=cimg::keyESC && + (key!=cimg::keyW || (!disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT()))) { + key = 0; + } + } + if (pose_matrix) { + std::memcpy(pose_matrix,pose._data,12*sizeof(float)); + pose_matrix[12] = Xoff; pose_matrix[13] = Yoff; pose_matrix[14] = Zoff; pose_matrix[15] = sprite_scale; + } + disp.set_button().set_key(key); + return *this; + } + + //! Display 1D graph in an interactive window. + /** + \param disp Display window. + \param plot_type Plot type. Can be { 0=points | 1=segments | 2=splines | 3=bars }. + \param vertex_type Vertex type. + \param labelx Title for the horizontal axis, as a C-string. + \param xmin Minimum value along the X-axis. + \param xmax Maximum value along the X-axis. + \param labely Title for the vertical axis, as a C-string. + \param ymin Minimum value along the X-axis. + \param ymax Maximum value along the X-axis. + \param exit_on_anykey Exit function when any key is pressed. + **/ + const CImg& display_graph(CImgDisplay &disp, + const unsigned int plot_type=1, const unsigned int vertex_type=1, + const char *const labelx=0, const double xmin=0, const double xmax=0, + const char *const labely=0, const double ymin=0, const double ymax=0, + const bool exit_on_anykey=false) const { + return _display_graph(disp,0,plot_type,vertex_type,labelx,xmin,xmax,labely,ymin,ymax,exit_on_anykey); + } + + //! Display 1D graph in an interactive window \overloading. + const CImg& display_graph(const char *const title=0, + const unsigned int plot_type=1, const unsigned int vertex_type=1, + const char *const labelx=0, const double xmin=0, const double xmax=0, + const char *const labely=0, const double ymin=0, const double ymax=0, + const bool exit_on_anykey=false) const { + CImgDisplay disp; + return _display_graph(disp,title,plot_type,vertex_type,labelx,xmin,xmax,labely,ymin,ymax,exit_on_anykey); + } + + const CImg& _display_graph(CImgDisplay &disp, const char *const title=0, + const unsigned int plot_type=1, const unsigned int vertex_type=1, + const char *const labelx=0, const double xmin=0, const double xmax=0, + const char *const labely=0, const double ymin=0, const double ymax=0, + const bool exit_on_anykey=false) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "display_graph(): Empty instance.", + cimg_instance); + if (!disp) disp.assign(cimg_fitscreen(CImgDisplay::screen_width()/2,CImgDisplay::screen_height()/2,1),0,0). + set_title(title?"%s":"CImg<%s>",title?title:pixel_type()); + const ulongT siz = (ulongT)_width*_height*_depth, siz1 = std::max((ulongT)1,siz - 1); + const unsigned int old_normalization = disp.normalization(); + disp.show().flush()._normalization = 0; + + double y0 = ymin, y1 = ymax, nxmin = xmin, nxmax = xmax; + if (nxmin==nxmax) { nxmin = 0; nxmax = siz1; } + int x0 = 0, x1 = width()*height()*depth() - 1, key = 0; + + for (bool reset_view = true; !key && !disp.is_closed(); ) { + if (reset_view) { x0 = 0; x1 = width()*height()*depth() - 1; y0 = ymin; y1 = ymax; reset_view = false; } + CImg zoom(x1 - x0 + 1,1,1,spectrum()); + cimg_forC(*this,c) zoom.get_shared_channel(c) = CImg(data(x0,0,0,c),x1 - x0 + 1,1,1,1,true); + if (y0==y1) { y0 = zoom.min_max(y1); const double dy = y1 - y0; y0-=dy/20; y1+=dy/20; } + if (y0==y1) { --y0; ++y1; } + + const CImg selection = zoom.get_select_graph(disp,plot_type,vertex_type, + labelx, + nxmin + x0*(nxmax - nxmin)/siz1, + nxmin + x1*(nxmax - nxmin)/siz1, + labely,y0,y1,true); + const int mouse_x = disp.mouse_x(), mouse_y = disp.mouse_y(); + if (selection[0]>=0) { + if (selection[2]<0) reset_view = true; + else { + x1 = x0 + selection[2]; x0+=selection[0]; + if (selection[1]>=0 && selection[3]>=0) { + y0 = y1 - selection[3]*(y1 - y0)/(disp.height() - 32); + y1-=selection[1]*(y1 - y0)/(disp.height() - 32); + } + } + } else { + bool go_in = false, go_out = false, go_left = false, go_right = false, go_up = false, go_down = false; + switch (key = (int)disp.key()) { + case cimg::keyHOME : reset_view = true; key = 0; disp.set_key(); break; + case cimg::keyPADADD : go_in = true; go_out = false; key = 0; disp.set_key(); break; + case cimg::keyPADSUB : go_out = true; go_in = false; key = 0; disp.set_key(); break; + case cimg::keyARROWLEFT : case cimg::keyPAD4 : go_left = true; go_right = false; key = 0; disp.set_key(); + break; + case cimg::keyARROWRIGHT : case cimg::keyPAD6 : go_right = true; go_left = false; key = 0; disp.set_key(); + break; + case cimg::keyARROWUP : case cimg::keyPAD8 : go_up = true; go_down = false; key = 0; disp.set_key(); break; + case cimg::keyARROWDOWN : case cimg::keyPAD2 : go_down = true; go_up = false; key = 0; disp.set_key(); break; + case cimg::keyPAD7 : go_left = true; go_up = true; key = 0; disp.set_key(); break; + case cimg::keyPAD9 : go_right = true; go_up = true; key = 0; disp.set_key(); break; + case cimg::keyPAD1 : go_left = true; go_down = true; key = 0; disp.set_key(); break; + case cimg::keyPAD3 : go_right = true; go_down = true; key = 0; disp.set_key(); break; + } + if (disp.wheel()) { + if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) go_up = !(go_down = disp.wheel()<0); + else if (disp.is_keySHIFTLEFT() || disp.is_keySHIFTRIGHT()) go_left = !(go_right = disp.wheel()>0); + else go_out = !(go_in = disp.wheel()>0); + key = 0; + } + + if (go_in) { + const int + xsiz = x1 - x0, + mx = (mouse_x - 16)*xsiz/(disp.width() - 32), + cx = x0 + cimg::cut(mx,0,xsiz); + if (x1 - x0>4) { + x0 = cx - 7*(cx - x0)/8; x1 = cx + 7*(x1 - cx)/8; + if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + const double + ysiz = y1 - y0, + my = (mouse_y - 16)*ysiz/(disp.height() - 32), + cy = y1 - cimg::cut(my,0.,ysiz); + y0 = cy - 7*(cy - y0)/8; y1 = cy + 7*(y1 - cy)/8; + } else y0 = y1 = 0; + } + } + if (go_out) { + if (x0>0 || x1<(int)siz1) { + const int delta_x = (x1 - x0)/8, ndelta_x = delta_x?delta_x:(siz>1); + const double ndelta_y = (y1 - y0)/8; + x0-=ndelta_x; x1+=ndelta_x; + y0-=ndelta_y; y1+=ndelta_y; + if (x0<0) { x1-=x0; x0 = 0; if (x1>=(int)siz) x1 = (int)siz1; } + if (x1>=(int)siz) { x0-=(x1 - siz1); x1 = (int)siz1; if (x0<0) x0 = 0; } + } + } + if (go_left) { + const int delta = (x1 - x0)/5, ndelta = delta?delta:1; + if (x0 - ndelta>=0) { x0-=ndelta; x1-=ndelta; } + else { x1-=x0; x0 = 0; } + go_left = false; + } + if (go_right) { + const int delta = (x1 - x0)/5, ndelta = delta?delta:1; + if (x1 + ndelta<(int)siz) { x0+=ndelta; x1+=ndelta; } + else { x0+=(siz1 - x1); x1 = (int)siz1; } + go_right = false; + } + if (go_up) { + const double delta = (y1 - y0)/10, ndelta = delta?delta:1; + y0+=ndelta; y1+=ndelta; + go_up = false; + } + if (go_down) { + const double delta = (y1 - y0)/10, ndelta = delta?delta:1; + y0-=ndelta; y1-=ndelta; + go_down = false; + } + } + if (!exit_on_anykey && key && key!=(int)cimg::keyESC && + (key!=(int)cimg::keyW || (!disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT()))) { + disp.set_key(key,false); + key = 0; + } + } + disp._normalization = old_normalization; + return *this; + } + + //! Save image as a file. + /** + \param filename Filename, as a C-string. + \param number When positive, represents an index added to the filename. Otherwise, no number is added. + \param digits Number of digits used for adding the number to the filename. + \note + - The used file format is defined by the file extension in the filename \p filename. + - Parameter \p number can be used to add a 6-digit number to the filename before saving. + + **/ + const CImg& save(const char *const filename, const int number=-1, const unsigned int digits=6) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save(): Specified filename is (null).", + cimg_instance); + // Do not test for empty instances, since .cimg format is able to manage empty instances. + const bool is_stdout = *filename=='-' && (!filename[1] || filename[1]=='.'); + const char *const ext = cimg::split_filename(filename); + CImg nfilename(1024); + const char *const fn = is_stdout?filename:(number>=0)?cimg::number_filename(filename,number,digits,nfilename): + filename; + +#ifdef cimg_save_plugin + cimg_save_plugin(fn); +#endif +#ifdef cimg_save_plugin1 + cimg_save_plugin1(fn); +#endif +#ifdef cimg_save_plugin2 + cimg_save_plugin2(fn); +#endif +#ifdef cimg_save_plugin3 + cimg_save_plugin3(fn); +#endif +#ifdef cimg_save_plugin4 + cimg_save_plugin4(fn); +#endif +#ifdef cimg_save_plugin5 + cimg_save_plugin5(fn); +#endif +#ifdef cimg_save_plugin6 + cimg_save_plugin6(fn); +#endif +#ifdef cimg_save_plugin7 + cimg_save_plugin7(fn); +#endif +#ifdef cimg_save_plugin8 + cimg_save_plugin8(fn); +#endif + // Text formats + if (!cimg::strcasecmp(ext,"asc")) return save_ascii(fn); + else if (!cimg::strcasecmp(ext,"csv") || + !cimg::strcasecmp(ext,"dlm") || + !cimg::strcasecmp(ext,"txt")) return save_dlm(fn); + else if (!cimg::strcasecmp(ext,"cpp") || + !cimg::strcasecmp(ext,"hpp") || + !cimg::strcasecmp(ext,"h") || + !cimg::strcasecmp(ext,"c")) return save_cpp(fn); + + // 2D binary formats + else if (!cimg::strcasecmp(ext,"bmp")) return save_bmp(fn); + else if (!cimg::strcasecmp(ext,"jpg") || + !cimg::strcasecmp(ext,"jpeg") || + !cimg::strcasecmp(ext,"jpe") || + !cimg::strcasecmp(ext,"jfif") || + !cimg::strcasecmp(ext,"jif")) return save_jpeg(fn); + else if (!cimg::strcasecmp(ext,"rgb")) return save_rgb(fn); + else if (!cimg::strcasecmp(ext,"rgba")) return save_rgba(fn); + else if (!cimg::strcasecmp(ext,"png")) return save_png(fn); + else if (!cimg::strcasecmp(ext,"pgm") || + !cimg::strcasecmp(ext,"ppm") || + !cimg::strcasecmp(ext,"pnm")) return save_pnm(fn); + else if (!cimg::strcasecmp(ext,"pnk")) return save_pnk(fn); + else if (!cimg::strcasecmp(ext,"pfm")) return save_pfm(fn); + else if (!cimg::strcasecmp(ext,"exr")) return save_exr(fn); + else if (!cimg::strcasecmp(ext,"tif") || + !cimg::strcasecmp(ext,"tiff")) return save_tiff(fn); + + // 3D binary formats + else if (!*ext) { +#ifdef cimg_use_zlib + return save_cimg(fn,true); +#else + return save_cimg(fn,false); +#endif + } else if (!cimg::strcasecmp(ext,"cimgz")) return save_cimg(fn,true); + else if (!cimg::strcasecmp(ext,"cimg")) return save_cimg(fn,false); + else if (!cimg::strcasecmp(ext,"dcm")) return save_medcon_external(fn); + else if (!cimg::strcasecmp(ext,"hdr") || + !cimg::strcasecmp(ext,"nii")) return save_analyze(fn); + else if (!cimg::strcasecmp(ext,"inr")) return save_inr(fn); + else if (!cimg::strcasecmp(ext,"mnc")) return save_minc2(fn); + else if (!cimg::strcasecmp(ext,"pan")) return save_pandore(fn); + else if (!cimg::strcasecmp(ext,"raw")) return save_raw(fn); + + // Archive files + else if (!cimg::strcasecmp(ext,"gz")) return save_gzip_external(fn); + + // Image sequences + else if (!cimg::strcasecmp(ext,"yuv")) return save_yuv(fn,444,true); + else if (!cimg::strcasecmp(ext,"avi") || + !cimg::strcasecmp(ext,"mov") || + !cimg::strcasecmp(ext,"asf") || + !cimg::strcasecmp(ext,"divx") || + !cimg::strcasecmp(ext,"flv") || + !cimg::strcasecmp(ext,"mpg") || + !cimg::strcasecmp(ext,"m1v") || + !cimg::strcasecmp(ext,"m2v") || + !cimg::strcasecmp(ext,"m4v") || + !cimg::strcasecmp(ext,"mjp") || + !cimg::strcasecmp(ext,"mp4") || + !cimg::strcasecmp(ext,"mkv") || + !cimg::strcasecmp(ext,"mpe") || + !cimg::strcasecmp(ext,"movie") || + !cimg::strcasecmp(ext,"ogm") || + !cimg::strcasecmp(ext,"ogg") || + !cimg::strcasecmp(ext,"ogv") || + !cimg::strcasecmp(ext,"qt") || + !cimg::strcasecmp(ext,"rm") || + !cimg::strcasecmp(ext,"vob") || + !cimg::strcasecmp(ext,"webm") || + !cimg::strcasecmp(ext,"wmv") || + !cimg::strcasecmp(ext,"xvid") || + !cimg::strcasecmp(ext,"mpeg")) return save_video(fn); + return save_other(fn); + } + + //! Save image as an ascii file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_ascii(const char *const filename) const { + return _save_ascii(0,filename); + } + + //! Save image as an Ascii file \overloading. + const CImg& save_ascii(std::FILE *const file) const { + return _save_ascii(file,0); + } + + const CImg& _save_ascii(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_ascii(): Specified filename is (null).", + cimg_instance); + std::FILE *const nfile = file?file:cimg::fopen(filename,"w"); + std::fprintf(nfile,"%u %u %u %u\n",_width,_height,_depth,_spectrum); + const T* ptrs = _data; + cimg_forYZC(*this,y,z,c) { + cimg_forX(*this,x) std::fprintf(nfile,"%.17g ",(double)*(ptrs++)); + std::fputc('\n',nfile); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a .cpp source file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_cpp(const char *const filename) const { + return _save_cpp(0,filename); + } + + //! Save image as a .cpp source file \overloading. + const CImg& save_cpp(std::FILE *const file) const { + return _save_cpp(file,0); + } + + const CImg& _save_cpp(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_cpp(): Specified filename is (null).", + cimg_instance); + std::FILE *const nfile = file?file:cimg::fopen(filename,"w"); + CImg varname(1024); *varname = 0; + if (filename) cimg_sscanf(cimg::basename(filename),"%1023[a-zA-Z0-9_]",varname._data); + if (!*varname) cimg_snprintf(varname,varname._width,"unnamed"); + std::fprintf(nfile, + "/* Define image '%s' of size %ux%ux%ux%u and type '%s' */\n" + "%s data_%s[] = { %s\n ", + varname._data,_width,_height,_depth,_spectrum,pixel_type(),pixel_type(),varname._data, + is_empty()?"};":""); + if (!is_empty()) for (ulongT off = 0, siz = size() - 1; off<=siz; ++off) { + std::fprintf(nfile,cimg::type::format(),cimg::type::format((*this)[off])); + if (off==siz) std::fprintf(nfile," };\n"); + else if (!((off + 1)%16)) std::fprintf(nfile,",\n "); + else std::fprintf(nfile,", "); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a DLM file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_dlm(const char *const filename) const { + return _save_dlm(0,filename); + } + + //! Save image as a DLM file \overloading. + const CImg& save_dlm(std::FILE *const file) const { + return _save_dlm(file,0); + } + + const CImg& _save_dlm(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_dlm(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_dlm(): Instance is volumetric, values along Z will be unrolled in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (_spectrum>1) + cimg::warn(_cimg_instance + "save_dlm(): Instance is multispectral, values along C will be unrolled in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"w"); + const T* ptrs = _data; + cimg_forYZC(*this,y,z,c) { + cimg_forX(*this,x) std::fprintf(nfile,"%.17g%s",(double)*(ptrs++),(x==width() - 1)?"":","); + std::fputc('\n',nfile); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a BMP file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_bmp(const char *const filename) const { + return _save_bmp(0,filename); + } + + //! Save image as a BMP file \overloading. + const CImg& save_bmp(std::FILE *const file) const { + return _save_bmp(file,0); + } + + const CImg& _save_bmp(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_bmp(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_bmp(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (_spectrum>3) + cimg::warn(_cimg_instance + "save_bmp(): Instance is multispectral, only the three first channels will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + CImg header(54,1,1,1,0); + unsigned char align_buf[4] = { 0 }; + const unsigned int + align = (4 - (3*_width)%4)%4, + buf_size = (3*_width + align)*height(), + file_size = 54 + buf_size; + header[0] = 'B'; header[1] = 'M'; + header[0x02] = file_size&0xFF; + header[0x03] = (file_size>>8)&0xFF; + header[0x04] = (file_size>>16)&0xFF; + header[0x05] = (file_size>>24)&0xFF; + header[0x0A] = 0x36; + header[0x0E] = 0x28; + header[0x12] = _width&0xFF; + header[0x13] = (_width>>8)&0xFF; + header[0x14] = (_width>>16)&0xFF; + header[0x15] = (_width>>24)&0xFF; + header[0x16] = _height&0xFF; + header[0x17] = (_height>>8)&0xFF; + header[0x18] = (_height>>16)&0xFF; + header[0x19] = (_height>>24)&0xFF; + header[0x1A] = 1; + header[0x1B] = 0; + header[0x1C] = 24; + header[0x1D] = 0; + header[0x22] = buf_size&0xFF; + header[0x23] = (buf_size>>8)&0xFF; + header[0x24] = (buf_size>>16)&0xFF; + header[0x25] = (buf_size>>24)&0xFF; + header[0x27] = 0x1; + header[0x2B] = 0x1; + cimg::fwrite(header._data,54,nfile); + + const T + *ptr_r = data(0,_height - 1,0,0), + *ptr_g = (_spectrum>=2)?data(0,_height - 1,0,1):0, + *ptr_b = (_spectrum>=3)?data(0,_height - 1,0,2):0; + + switch (_spectrum) { + case 1 : { + cimg_forY(*this,y) { + cimg_forX(*this,x) { + const unsigned char val = (unsigned char)*(ptr_r++); + std::fputc(val,nfile); std::fputc(val,nfile); std::fputc(val,nfile); + } + cimg::fwrite(align_buf,align,nfile); + ptr_r-=2*_width; + } + } break; + case 2 : { + cimg_forY(*this,y) { + cimg_forX(*this,x) { + std::fputc(0,nfile); + std::fputc((unsigned char)(*(ptr_g++)),nfile); + std::fputc((unsigned char)(*(ptr_r++)),nfile); + } + cimg::fwrite(align_buf,align,nfile); + ptr_r-=2*_width; ptr_g-=2*_width; + } + } break; + default : { + cimg_forY(*this,y) { + cimg_forX(*this,x) { + std::fputc((unsigned char)(*(ptr_b++)),nfile); + std::fputc((unsigned char)(*(ptr_g++)),nfile); + std::fputc((unsigned char)(*(ptr_r++)),nfile); + } + cimg::fwrite(align_buf,align,nfile); + ptr_r-=2*_width; ptr_g-=2*_width; ptr_b-=2*_width; + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a JPEG file. + /** + \param filename Filename, as a C-string. + \param quality Image quality (in %) + **/ + const CImg& save_jpeg(const char *const filename, const unsigned int quality=100) const { + return _save_jpeg(0,filename,quality); + } + + //! Save image as a JPEG file \overloading. + const CImg& save_jpeg(std::FILE *const file, const unsigned int quality=100) const { + return _save_jpeg(file,0,quality); + } + + const CImg& _save_jpeg(std::FILE *const file, const char *const filename, const unsigned int quality) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_jpeg(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_jpeg(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + +#ifndef cimg_use_jpeg + if (!file) return save_other(filename,quality); + else throw CImgIOException(_cimg_instance + "save_jpeg(): Unable to save data in '(*FILE)' unless libjpeg is enabled.", + cimg_instance); +#else + unsigned int dimbuf = 0; + J_COLOR_SPACE colortype = JCS_RGB; + + switch (_spectrum) { + case 1 : dimbuf = 1; colortype = JCS_GRAYSCALE; break; + case 2 : dimbuf = 3; colortype = JCS_RGB; break; + case 3 : dimbuf = 3; colortype = JCS_RGB; break; + default : dimbuf = 4; colortype = JCS_CMYK; break; + } + + // Call libjpeg functions + struct jpeg_compress_struct cinfo; + struct jpeg_error_mgr jerr; + cinfo.err = jpeg_std_error(&jerr); + jpeg_create_compress(&cinfo); + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + jpeg_stdio_dest(&cinfo,nfile); + cinfo.image_width = _width; + cinfo.image_height = _height; + cinfo.input_components = dimbuf; + cinfo.in_color_space = colortype; + jpeg_set_defaults(&cinfo); + jpeg_set_quality(&cinfo,quality<100?quality:100,TRUE); + jpeg_start_compress(&cinfo,TRUE); + + JSAMPROW row_pointer[1]; + CImg buffer(_width*dimbuf); + + while (cinfo.next_scanline& save_magick(const char *const filename, const unsigned int bytes_per_pixel=0) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_magick(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + +#ifdef cimg_use_magick + double stmin, stmax = (double)max_min(stmin); + if (_depth>1) + cimg::warn(_cimg_instance + "save_magick(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename); + + if (_spectrum>3) + cimg::warn(_cimg_instance + "save_magick(): Instance is multispectral, only the three first channels will be " + "saved in file '%s'.", + cimg_instance, + filename); + + if (stmin<0 || (bytes_per_pixel==1 && stmax>=256) || stmax>=65536) + cimg::warn(_cimg_instance + "save_magick(): Instance has pixel values in [%g,%g], probable type overflow in file '%s'.", + cimg_instance, + filename,stmin,stmax); + + Magick::Image image(Magick::Geometry(_width,_height),"black"); + image.type(Magick::TrueColorType); + image.depth(bytes_per_pixel?(8*bytes_per_pixel):(stmax>=256?16:8)); + const T + *ptr_r = data(0,0,0,0), + *ptr_g = _spectrum>1?data(0,0,0,1):0, + *ptr_b = _spectrum>2?data(0,0,0,2):0; + Magick::PixelPacket *pixels = image.getPixels(0,0,_width,_height); + switch (_spectrum) { + case 1 : // Scalar images + for (ulongT off = (ulongT)_width*_height; off; --off) { + pixels->red = pixels->green = pixels->blue = (Magick::Quantum)*(ptr_r++); + ++pixels; + } + break; + case 2 : // RG images + for (ulongT off = (ulongT)_width*_height; off; --off) { + pixels->red = (Magick::Quantum)*(ptr_r++); + pixels->green = (Magick::Quantum)*(ptr_g++); + pixels->blue = 0; ++pixels; + } + break; + default : // RGB images + for (ulongT off = (ulongT)_width*_height; off; --off) { + pixels->red = (Magick::Quantum)*(ptr_r++); + pixels->green = (Magick::Quantum)*(ptr_g++); + pixels->blue = (Magick::Quantum)*(ptr_b++); + ++pixels; + } + } + image.syncPixels(); + image.write(filename); + return *this; +#else + cimg::unused(bytes_per_pixel); + throw CImgIOException(_cimg_instance + "save_magick(): Unable to save file '%s' unless libMagick++ is enabled.", + cimg_instance, + filename); +#endif + } + + //! Save image as a PNG file. + /** + \param filename Filename, as a C-string. + \param bytes_per_pixel Force the number of bytes per pixels for the saving, when possible. + **/ + const CImg& save_png(const char *const filename, const unsigned int bytes_per_pixel=0) const { + return _save_png(0,filename,bytes_per_pixel); + } + + //! Save image as a PNG file \overloading. + const CImg& save_png(std::FILE *const file, const unsigned int bytes_per_pixel=0) const { + return _save_png(file,0,bytes_per_pixel); + } + + const CImg& _save_png(std::FILE *const file, const char *const filename, + const unsigned int bytes_per_pixel=0) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_png(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + +#ifndef cimg_use_png + cimg::unused(bytes_per_pixel); + if (!file) return save_other(filename); + else throw CImgIOException(_cimg_instance + "save_png(): Unable to save data in '(*FILE)' unless libpng is enabled.", + cimg_instance); +#else + +#if defined __GNUC__ + const char *volatile nfilename = filename; // Use 'volatile' to avoid (wrong) g++ warning + std::FILE *volatile nfile = file?file:cimg::fopen(nfilename,"wb"); + volatile double stmin, stmax = (double)max_min(stmin); +#else + const char *nfilename = filename; + std::FILE *nfile = file?file:cimg::fopen(nfilename,"wb"); + double stmin, stmax = (double)max_min(stmin); +#endif + + if (_depth>1) + cimg::warn(_cimg_instance + "save_png(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename); + + if (_spectrum>4) + cimg::warn(_cimg_instance + "save_png(): Instance is multispectral, only the three first channels will be saved in file '%s'.", + cimg_instance, + filename); + + if (stmin<0 || (bytes_per_pixel==1 && stmax>=256) || stmax>=65536) + cimg::warn(_cimg_instance + "save_png(): Instance has pixel values in [%g,%g], probable type overflow in file '%s'.", + cimg_instance, + filename,stmin,stmax); + + // Setup PNG structures for write + png_voidp user_error_ptr = 0; + png_error_ptr user_error_fn = 0, user_warning_fn = 0; + png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,user_error_ptr, user_error_fn, + user_warning_fn); + if (!png_ptr){ + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "save_png(): Failed to initialize 'png_ptr' structure when saving file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_infop info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) { + png_destroy_write_struct(&png_ptr,(png_infopp)0); + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "save_png(): Failed to initialize 'info_ptr' structure when saving file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &info_ptr); + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "save_png(): Encountered unknown fatal error in libpng when saving file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_init_io(png_ptr, nfile); + + const int bit_depth = bytes_per_pixel?(bytes_per_pixel*8):(stmax>=256?16:8); + + int color_type; + switch (spectrum()) { + case 1 : color_type = PNG_COLOR_TYPE_GRAY; break; + case 2 : color_type = PNG_COLOR_TYPE_GRAY_ALPHA; break; + case 3 : color_type = PNG_COLOR_TYPE_RGB; break; + default : color_type = PNG_COLOR_TYPE_RGB_ALPHA; + } + const int interlace_type = PNG_INTERLACE_NONE; + const int compression_type = PNG_COMPRESSION_TYPE_DEFAULT; + const int filter_method = PNG_FILTER_TYPE_DEFAULT; + png_set_IHDR(png_ptr,info_ptr,_width,_height,bit_depth,color_type,interlace_type,compression_type,filter_method); + png_write_info(png_ptr,info_ptr); + const int byte_depth = bit_depth>>3; + const int numChan = spectrum()>4?4:spectrum(); + const int pixel_bit_depth_flag = numChan * (bit_depth - 1); + + // Allocate Memory for Image Save and Fill pixel data + png_bytep *const imgData = new png_byte*[_height]; + for (unsigned int row = 0; row<_height; ++row) imgData[row] = new png_byte[byte_depth*numChan*_width]; + const T *pC0 = data(0,0,0,0); + switch (pixel_bit_depth_flag) { + case 7 : { // Gray 8-bit + cimg_forY(*this,y) { + unsigned char *ptrd = imgData[y]; + cimg_forX(*this,x) *(ptrd++) = (unsigned char)*(pC0++); + } + } break; + case 14 : { // Gray w/ Alpha 8-bit + const T *pC1 = data(0,0,0,1); + cimg_forY(*this,y) { + unsigned char *ptrd = imgData[y]; + cimg_forX(*this,x) { + *(ptrd++) = (unsigned char)*(pC0++); + *(ptrd++) = (unsigned char)*(pC1++); + } + } + } break; + case 21 : { // RGB 8-bit + const T *pC1 = data(0,0,0,1), *pC2 = data(0,0,0,2); + cimg_forY(*this,y) { + unsigned char *ptrd = imgData[y]; + cimg_forX(*this,x) { + *(ptrd++) = (unsigned char)*(pC0++); + *(ptrd++) = (unsigned char)*(pC1++); + *(ptrd++) = (unsigned char)*(pC2++); + } + } + } break; + case 28 : { // RGB x/ Alpha 8-bit + const T *pC1 = data(0,0,0,1), *pC2 = data(0,0,0,2), *pC3 = data(0,0,0,3); + cimg_forY(*this,y){ + unsigned char *ptrd = imgData[y]; + cimg_forX(*this,x){ + *(ptrd++) = (unsigned char)*(pC0++); + *(ptrd++) = (unsigned char)*(pC1++); + *(ptrd++) = (unsigned char)*(pC2++); + *(ptrd++) = (unsigned char)*(pC3++); + } + } + } break; + case 15 : { // Gray 16-bit + cimg_forY(*this,y){ + unsigned short *ptrd = (unsigned short*)(imgData[y]); + cimg_forX(*this,x) *(ptrd++) = (unsigned short)*(pC0++); + if (!cimg::endianness()) cimg::invert_endianness((unsigned short*)imgData[y],_width); + } + } break; + case 30 : { // Gray w/ Alpha 16-bit + const T *pC1 = data(0,0,0,1); + cimg_forY(*this,y){ + unsigned short *ptrd = (unsigned short*)(imgData[y]); + cimg_forX(*this,x) { + *(ptrd++) = (unsigned short)*(pC0++); + *(ptrd++) = (unsigned short)*(pC1++); + } + if (!cimg::endianness()) cimg::invert_endianness((unsigned short*)imgData[y],2*_width); + } + } break; + case 45 : { // RGB 16-bit + const T *pC1 = data(0,0,0,1), *pC2 = data(0,0,0,2); + cimg_forY(*this,y) { + unsigned short *ptrd = (unsigned short*)(imgData[y]); + cimg_forX(*this,x) { + *(ptrd++) = (unsigned short)*(pC0++); + *(ptrd++) = (unsigned short)*(pC1++); + *(ptrd++) = (unsigned short)*(pC2++); + } + if (!cimg::endianness()) cimg::invert_endianness((unsigned short*)imgData[y],3*_width); + } + } break; + case 60 : { // RGB w/ Alpha 16-bit + const T *pC1 = data(0,0,0,1), *pC2 = data(0,0,0,2), *pC3 = data(0,0,0,3); + cimg_forY(*this,y) { + unsigned short *ptrd = (unsigned short*)(imgData[y]); + cimg_forX(*this,x) { + *(ptrd++) = (unsigned short)*(pC0++); + *(ptrd++) = (unsigned short)*(pC1++); + *(ptrd++) = (unsigned short)*(pC2++); + *(ptrd++) = (unsigned short)*(pC3++); + } + if (!cimg::endianness()) cimg::invert_endianness((unsigned short*)imgData[y],4*_width); + } + } break; + default : + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "save_png(): Encountered unknown fatal error in libpng when saving file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_write_image(png_ptr,imgData); + png_write_end(png_ptr,info_ptr); + png_destroy_write_struct(&png_ptr, &info_ptr); + + // Deallocate Image Write Memory + cimg_forY(*this,n) delete[] imgData[n]; + delete[] imgData; + + if (!file) cimg::fclose(nfile); + return *this; +#endif + } + + //! Save image as a PNM file. + /** + \param filename Filename, as a C-string. + \param bytes_per_pixel Force the number of bytes per pixels for the saving. + **/ + const CImg& save_pnm(const char *const filename, const unsigned int bytes_per_pixel=0) const { + return _save_pnm(0,filename,bytes_per_pixel); + } + + //! Save image as a PNM file \overloading. + const CImg& save_pnm(std::FILE *const file, const unsigned int bytes_per_pixel=0) const { + return _save_pnm(file,0,bytes_per_pixel); + } + + const CImg& _save_pnm(std::FILE *const file, const char *const filename, + const unsigned int bytes_per_pixel=0) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_pnm(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + + double stmin, stmax = (double)max_min(stmin); + if (_depth>1) + cimg::warn(_cimg_instance + "save_pnm(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (_spectrum>3) + cimg::warn(_cimg_instance + "save_pnm(): Instance is multispectral, only the three first channels will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (stmin<0 || (bytes_per_pixel==1 && stmax>=256) || stmax>=65536) + cimg::warn(_cimg_instance + "save_pnm(): Instance has pixel values in [%g,%g], probable type overflow in file '%s'.", + cimg_instance, + stmin,stmax,filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const T + *ptr_r = data(0,0,0,0), + *ptr_g = (_spectrum>=2)?data(0,0,0,1):0, + *ptr_b = (_spectrum>=3)?data(0,0,0,2):0; + const ulongT buf_size = std::min((ulongT)(1024*1024),(ulongT)(_width*_height*(_spectrum==1?1UL:3UL))); + + std::fprintf(nfile,"P%c\n%u %u\n%u\n", + (_spectrum==1?'5':'6'),_width,_height,stmax<256?255:(stmax<4096?4095:65535)); + + switch (_spectrum) { + case 1 : { // Scalar image + if (bytes_per_pixel==1 || (!bytes_per_pixel && stmax<256)) { // Binary PGM 8 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size); + unsigned char *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (unsigned char)*(ptr_r++); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } else { // Binary PGM 16 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size); + unsigned short *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (unsigned short)*(ptr_r++); + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } + } break; + case 2 : { // RG image + if (bytes_per_pixel==1 || (!bytes_per_pixel && stmax<256)) { // Binary PPM 8 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size/3); + unsigned char *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (unsigned char)*(ptr_r++); + *(ptrd++) = (unsigned char)*(ptr_g++); + *(ptrd++) = 0; + } + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } else { // Binary PPM 16 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size/3); + unsigned short *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (unsigned short)*(ptr_r++); + *(ptrd++) = (unsigned short)*(ptr_g++); + *(ptrd++) = 0; + } + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } + } break; + default : { // RGB image + if (bytes_per_pixel==1 || (!bytes_per_pixel && stmax<256)) { // Binary PPM 8 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size/3); + unsigned char *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (unsigned char)*(ptr_r++); + *(ptrd++) = (unsigned char)*(ptr_g++); + *(ptrd++) = (unsigned char)*(ptr_b++); + } + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } else { // Binary PPM 16 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size/3); + unsigned short *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (unsigned short)*(ptr_r++); + *(ptrd++) = (unsigned short)*(ptr_g++); + *(ptrd++) = (unsigned short)*(ptr_b++); + } + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a PNK file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_pnk(const char *const filename) const { + return _save_pnk(0,filename); + } + + //! Save image as a PNK file \overloading. + const CImg& save_pnk(std::FILE *const file) const { + return _save_pnk(file,0); + } + + const CImg& _save_pnk(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_pnk(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_spectrum>1) + cimg::warn(_cimg_instance + "save_pnk(): Instance is multispectral, only the first channel will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + const ulongT buf_size = std::min((ulongT)1024*1024,(ulongT)_width*_height*_depth); + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const T *ptr = data(0,0,0,0); + + if (!cimg::type::is_float() && sizeof(T)==1 && _depth<2) // Can be saved as regular PNM file + _save_pnm(file,filename,0); + else if (!cimg::type::is_float() && sizeof(T)==1) { // Save as extended P5 file: Binary byte-valued 3D + std::fprintf(nfile,"P5\n%u %u %u\n255\n",_width,_height,_depth); + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height()*depth(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size); + unsigned char *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (unsigned char)*(ptr++); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } else if (!cimg::type::is_float()) { // Save as P8: Binary int32-valued 3D + if (_depth>1) std::fprintf(nfile,"P8\n%u %u %u\n%d\n",_width,_height,_depth,(int)max()); + else std::fprintf(nfile,"P8\n%u %u\n%d\n",_width,_height,(int)max()); + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height()*depth(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size); + int *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (int)*(ptr++); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } else { // Save as P9: Binary float-valued 3D + if (_depth>1) std::fprintf(nfile,"P9\n%u %u %u\n%g\n",_width,_height,_depth,(double)max()); + else std::fprintf(nfile,"P9\n%u %u\n%g\n",_width,_height,(double)max()); + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height()*depth(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size); + float *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (float)*(ptr++); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } + + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a PFM file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_pfm(const char *const filename) const { + get_mirror('y')._save_pfm(0,filename); + return *this; + } + + //! Save image as a PFM file \overloading. + const CImg& save_pfm(std::FILE *const file) const { + get_mirror('y')._save_pfm(file,0); + return *this; + } + + const CImg& _save_pfm(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_pfm(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_pfm(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (_spectrum>3) + cimg::warn(_cimg_instance + "save_pfm(): image instance is multispectral, only the three first channels will be saved " + "in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const T + *ptr_r = data(0,0,0,0), + *ptr_g = (_spectrum>=2)?data(0,0,0,1):0, + *ptr_b = (_spectrum>=3)?data(0,0,0,2):0; + const unsigned int buf_size = std::min(1024*1024U,_width*_height*(_spectrum==1?1:3)); + + std::fprintf(nfile,"P%c\n%u %u\n1.0\n", + (_spectrum==1?'f':'F'),_width,_height); + + switch (_spectrum) { + case 1 : { // Scalar image + CImg buf(buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,(ulongT)buf_size); + float *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (float)*(ptr_r++); + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } break; + case 2 : { // RG image + CImg buf(buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const unsigned int N = std::min((unsigned int)to_write,buf_size/3); + float *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (float)*(ptr_r++); + *(ptrd++) = (float)*(ptr_g++); + *(ptrd++) = 0; + } + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } break; + default : { // RGB image + CImg buf(buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const unsigned int N = std::min((unsigned int)to_write,buf_size/3); + float *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (float)*(ptr_r++); + *(ptrd++) = (float)*(ptr_g++); + *(ptrd++) = (float)*(ptr_b++); + } + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a RGB file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_rgb(const char *const filename) const { + return _save_rgb(0,filename); + } + + //! Save image as a RGB file \overloading. + const CImg& save_rgb(std::FILE *const file) const { + return _save_rgb(file,0); + } + + const CImg& _save_rgb(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_rgb(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_spectrum!=3) + cimg::warn(_cimg_instance + "save_rgb(): image instance has not exactly 3 channels, for file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const ulongT wh = (ulongT)_width*_height; + unsigned char *const buffer = new unsigned char[3*wh], *nbuffer = buffer; + const T + *ptr1 = data(0,0,0,0), + *ptr2 = _spectrum>1?data(0,0,0,1):0, + *ptr3 = _spectrum>2?data(0,0,0,2):0; + switch (_spectrum) { + case 1 : { // Scalar image + for (ulongT k = 0; k& save_rgba(const char *const filename) const { + return _save_rgba(0,filename); + } + + //! Save image as a RGBA file \overloading. + const CImg& save_rgba(std::FILE *const file) const { + return _save_rgba(file,0); + } + + const CImg& _save_rgba(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_rgba(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_spectrum!=4) + cimg::warn(_cimg_instance + "save_rgba(): image instance has not exactly 4 channels, for file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const ulongT wh = (ulongT)_width*_height; + unsigned char *const buffer = new unsigned char[4*wh], *nbuffer = buffer; + const T + *ptr1 = data(0,0,0,0), + *ptr2 = _spectrum>1?data(0,0,0,1):0, + *ptr3 = _spectrum>2?data(0,0,0,2):0, + *ptr4 = _spectrum>3?data(0,0,0,3):0; + switch (_spectrum) { + case 1 : { // Scalar images + for (ulongT k = 0; k{ 0=None | 1=LZW | 2=JPEG }. + \param voxel_size Voxel size, to be stored in the filename. + \param description Description, to be stored in the filename. + \param use_bigtiff Allow to save big tiff files (>4Gb). + \note + - libtiff support is enabled by defining the precompilation + directive \c cimg_use_tif. + - When libtiff is enabled, 2D and 3D (multipage) several + channel per pixel are supported for + char,uchar,short,ushort,float and \c double pixel types. + - If \c cimg_use_tif is not defined at compile time the + function uses CImg&save_other(const char*). + **/ + const CImg& save_tiff(const char *const filename, const unsigned int compression_type=0, + const float *const voxel_size=0, const char *const description=0, + const bool use_bigtiff=true) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_tiff(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + +#ifdef cimg_use_tiff + const bool + _use_bigtiff = use_bigtiff && sizeof(ulongT)>=8 && size()*sizeof(T)>=1UL<<31; // No bigtiff for small images + TIFF *tif = TIFFOpen(filename,_use_bigtiff?"w8":"w4"); + if (tif) { + cimg_forZ(*this,z) _save_tiff(tif,z,z,compression_type,voxel_size,description); + TIFFClose(tif); + } else throw CImgIOException(_cimg_instance + "save_tiff(): Failed to open file '%s' for writing.", + cimg_instance, + filename); + return *this; +#else + cimg::unused(compression_type,voxel_size,description,use_bigtiff); + return save_other(filename); +#endif + } + +#ifdef cimg_use_tiff + +#define _cimg_save_tiff(types,typed,compression_type) if (!std::strcmp(types,pixel_type())) { \ + const typed foo = (typed)0; return _save_tiff(tif,directory,z,foo,compression_type,voxel_size,description); } + + // [internal] Save a plane into a tiff file + template + const CImg& _save_tiff(TIFF *tif, const unsigned int directory, const unsigned int z, const t& pixel_t, + const unsigned int compression_type, const float *const voxel_size, + const char *const description) const { + if (is_empty() || !tif || pixel_t) return *this; + const char *const filename = TIFFFileName(tif); + uint32 rowsperstrip = (uint32)-1; + uint16 spp = _spectrum, bpp = sizeof(t)*8, photometric; + if (spp==3 || spp==4) photometric = PHOTOMETRIC_RGB; + else photometric = PHOTOMETRIC_MINISBLACK; + TIFFSetDirectory(tif,directory); + TIFFSetField(tif,TIFFTAG_IMAGEWIDTH,_width); + TIFFSetField(tif,TIFFTAG_IMAGELENGTH,_height); + if (voxel_size) { + const float vx = voxel_size[0], vy = voxel_size[1], vz = voxel_size[2]; + TIFFSetField(tif,TIFFTAG_RESOLUTIONUNIT,RESUNIT_NONE); + TIFFSetField(tif,TIFFTAG_XRESOLUTION,1.f/vx); + TIFFSetField(tif,TIFFTAG_YRESOLUTION,1.f/vy); + CImg s_description(256); + cimg_snprintf(s_description,s_description._width,"VX=%g VY=%g VZ=%g spacing=%g",vx,vy,vz,vz); + TIFFSetField(tif,TIFFTAG_IMAGEDESCRIPTION,s_description.data()); + } + if (description) TIFFSetField(tif,TIFFTAG_IMAGEDESCRIPTION,description); + TIFFSetField(tif,TIFFTAG_ORIENTATION,ORIENTATION_TOPLEFT); + TIFFSetField(tif,TIFFTAG_SAMPLESPERPIXEL,spp); + if (cimg::type::is_float()) TIFFSetField(tif,TIFFTAG_SAMPLEFORMAT,3); + else if (cimg::type::min()==0) TIFFSetField(tif,TIFFTAG_SAMPLEFORMAT,1); + else TIFFSetField(tif,TIFFTAG_SAMPLEFORMAT,2); + double valm, valM = max_min(valm); + TIFFSetField(tif,TIFFTAG_SMINSAMPLEVALUE,valm); + TIFFSetField(tif,TIFFTAG_SMAXSAMPLEVALUE,valM); + TIFFSetField(tif,TIFFTAG_BITSPERSAMPLE,bpp); + TIFFSetField(tif,TIFFTAG_PLANARCONFIG,PLANARCONFIG_CONTIG); + TIFFSetField(tif,TIFFTAG_PHOTOMETRIC,photometric); + TIFFSetField(tif,TIFFTAG_COMPRESSION,compression_type==2?COMPRESSION_JPEG: + compression_type==1?COMPRESSION_LZW:COMPRESSION_NONE); + rowsperstrip = TIFFDefaultStripSize(tif,rowsperstrip); + TIFFSetField(tif,TIFFTAG_ROWSPERSTRIP,rowsperstrip); + TIFFSetField(tif,TIFFTAG_FILLORDER,FILLORDER_MSB2LSB); + TIFFSetField(tif,TIFFTAG_SOFTWARE,"CImg"); + + t *const buf = (t*)_TIFFmalloc(TIFFStripSize(tif)); + if (buf) { + for (unsigned int row = 0; row<_height; row+=rowsperstrip) { + uint32 nrow = (row + rowsperstrip>_height?_height - row:rowsperstrip); + tstrip_t strip = TIFFComputeStrip(tif,row,0); + tsize_t i = 0; + for (unsigned int rr = 0; rr& _save_tiff(TIFF *tif, const unsigned int directory, const unsigned int z, + const unsigned int compression_type, const float *const voxel_size, + const char *const description) const { + _cimg_save_tiff("bool",unsigned char,compression_type); + _cimg_save_tiff("unsigned char",unsigned char,compression_type); + _cimg_save_tiff("char",char,compression_type); + _cimg_save_tiff("unsigned short",unsigned short,compression_type); + _cimg_save_tiff("short",short,compression_type); + _cimg_save_tiff("unsigned int",unsigned int,compression_type); + _cimg_save_tiff("int",int,compression_type); + _cimg_save_tiff("unsigned int64",unsigned int,compression_type); + _cimg_save_tiff("int64",int,compression_type); + _cimg_save_tiff("float",float,compression_type); + _cimg_save_tiff("double",float,compression_type); + const char *const filename = TIFFFileName(tif); + throw CImgInstanceException(_cimg_instance + "save_tiff(): Unsupported pixel type '%s' for file '%s'.", + cimg_instance, + pixel_type(),filename?filename:"(FILE*)"); + return *this; + } +#endif + + //! Save image as a MINC2 file. + /** + \param filename Filename, as a C-string. + \param imitate_file If non-zero, reference filename, as a C-string, to borrow header from. + **/ + const CImg& save_minc2(const char *const filename, + const char *const imitate_file=0) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_minc2(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + +#ifndef cimg_use_minc2 + cimg::unused(imitate_file); + return save_other(filename); +#else + minc::minc_1_writer wtr; + if (imitate_file) + wtr.open(filename, imitate_file); + else { + minc::minc_info di; + if (width()) di.push_back(minc::dim_info(width(),width()*0.5,-1,minc::dim_info::DIM_X)); + if (height()) di.push_back(minc::dim_info(height(),height()*0.5,-1,minc::dim_info::DIM_Y)); + if (depth()) di.push_back(minc::dim_info(depth(),depth()*0.5,-1,minc::dim_info::DIM_Z)); + if (spectrum()) di.push_back(minc::dim_info(spectrum(),spectrum()*0.5,-1,minc::dim_info::DIM_TIME)); + wtr.open(filename,di,1,NC_FLOAT,0); + } + if (pixel_type()==cimg::type::string()) + wtr.setup_write_byte(); + else if (pixel_type()==cimg::type::string()) + wtr.setup_write_int(); + else if (pixel_type()==cimg::type::string()) + wtr.setup_write_double(); + else + wtr.setup_write_float(); + minc::save_standard_volume(wtr, this->_data); + return *this; +#endif + } + + //! Save image as an ANALYZE7.5 or NIFTI file. + /** + \param filename Filename, as a C-string. + \param voxel_size Pointer to 3 consecutive values that tell about the voxel sizes along the X,Y and Z dimensions. + **/ + const CImg& save_analyze(const char *const filename, const float *const voxel_size=0) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_analyze(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + + std::FILE *file; + CImg hname(1024), iname(1024); + const char *const ext = cimg::split_filename(filename); + short datatype = -1; + if (!*ext) { + cimg_snprintf(hname,hname._width,"%s.hdr",filename); + cimg_snprintf(iname,iname._width,"%s.img",filename); + } + if (!cimg::strncasecmp(ext,"hdr",3)) { + std::strcpy(hname,filename); + std::strncpy(iname,filename,iname._width - 1); + cimg_sprintf(iname._data + std::strlen(iname) - 3,"img"); + } + if (!cimg::strncasecmp(ext,"img",3)) { + std::strcpy(hname,filename); + std::strncpy(iname,filename,iname._width - 1); + cimg_sprintf(hname._data + std::strlen(iname) - 3,"hdr"); + } + if (!cimg::strncasecmp(ext,"nii",3)) { + std::strncpy(hname,filename,hname._width - 1); *iname = 0; + } + + CImg header(*iname?348:352,1,1,1,0); + int *const iheader = (int*)header._data; + *iheader = 348; + std::strcpy(header._data + 4,"CImg"); + std::strcpy(header._data + 14," "); + ((short*)&(header[36]))[0] = 4096; + ((char*)&(header[38]))[0] = 114; + ((short*)&(header[40]))[0] = 4; + ((short*)&(header[40]))[1] = (short)_width; + ((short*)&(header[40]))[2] = (short)_height; + ((short*)&(header[40]))[3] = (short)_depth; + ((short*)&(header[40]))[4] = (short)_spectrum; + if (!cimg::strcasecmp(pixel_type(),"bool")) datatype = 2; + if (!cimg::strcasecmp(pixel_type(),"unsigned char")) datatype = 2; + if (!cimg::strcasecmp(pixel_type(),"char")) datatype = 2; + if (!cimg::strcasecmp(pixel_type(),"unsigned short")) datatype = 4; + if (!cimg::strcasecmp(pixel_type(),"short")) datatype = 4; + if (!cimg::strcasecmp(pixel_type(),"unsigned int")) datatype = 8; + if (!cimg::strcasecmp(pixel_type(),"int")) datatype = 8; + if (!cimg::strcasecmp(pixel_type(),"unsigned int64")) datatype = 8; + if (!cimg::strcasecmp(pixel_type(),"int64")) datatype = 8; + if (!cimg::strcasecmp(pixel_type(),"float")) datatype = 16; + if (!cimg::strcasecmp(pixel_type(),"double")) datatype = 64; + if (datatype<0) + throw CImgIOException(_cimg_instance + "save_analyze(): Unsupported pixel type '%s' for file '%s'.", + cimg_instance, + pixel_type(),filename); + + ((short*)&(header[70]))[0] = datatype; + ((short*)&(header[72]))[0] = sizeof(T); + ((float*)&(header[108]))[0] = (float)(*iname?0:header.width()); + ((float*)&(header[112]))[0] = 1; + ((float*)&(header[76]))[0] = 0; + if (voxel_size) { + ((float*)&(header[76]))[1] = voxel_size[0]; + ((float*)&(header[76]))[2] = voxel_size[1]; + ((float*)&(header[76]))[3] = voxel_size[2]; + } else ((float*)&(header[76]))[1] = ((float*)&(header[76]))[2] = ((float*)&(header[76]))[3] = 1; + file = cimg::fopen(hname,"wb"); + cimg::fwrite(header._data,header.width(),file); + if (*iname) { cimg::fclose(file); file = cimg::fopen(iname,"wb"); } + cimg::fwrite(_data,size(),file); + cimg::fclose(file); + return *this; + } + + //! Save image as a .cimg file. + /** + \param filename Filename, as a C-string. + \param is_compressed Tells if the file contains compressed image data. + **/ + const CImg& save_cimg(const char *const filename, const bool is_compressed=false) const { + CImgList(*this,true).save_cimg(filename,is_compressed); + return *this; + } + + //! Save image as a .cimg file \overloading. + const CImg& save_cimg(std::FILE *const file, const bool is_compressed=false) const { + CImgList(*this,true).save_cimg(file,is_compressed); + return *this; + } + + //! Save image as a sub-image into an existing .cimg file. + /** + \param filename Filename, as a C-string. + \param n0 Index of the image inside the file. + \param x0 X-coordinate of the sub-image location. + \param y0 Y-coordinate of the sub-image location. + \param z0 Z-coordinate of the sub-image location. + \param c0 C-coordinate of the sub-image location. + **/ + const CImg& save_cimg(const char *const filename, + const unsigned int n0, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0) const { + CImgList(*this,true).save_cimg(filename,n0,x0,y0,z0,c0); + return *this; + } + + //! Save image as a sub-image into an existing .cimg file \overloading. + const CImg& save_cimg(std::FILE *const file, + const unsigned int n0, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0) const { + CImgList(*this,true).save_cimg(file,n0,x0,y0,z0,c0); + return *this; + } + + //! Save blank image as a .cimg file. + /** + \param filename Filename, as a C-string. + \param dx Width of the image. + \param dy Height of the image. + \param dz Depth of the image. + \param dc Number of channels of the image. + \note + - All pixel values of the saved image are set to \c 0. + - Use this method to save large images without having to instantiate and allocate them. + **/ + static void save_empty_cimg(const char *const filename, + const unsigned int dx, const unsigned int dy=1, + const unsigned int dz=1, const unsigned int dc=1) { + return CImgList::save_empty_cimg(filename,1,dx,dy,dz,dc); + } + + //! Save blank image as a .cimg file \overloading. + /** + Same as save_empty_cimg(const char *,unsigned int,unsigned int,unsigned int,unsigned int) + with a file stream argument instead of a filename string. + **/ + static void save_empty_cimg(std::FILE *const file, + const unsigned int dx, const unsigned int dy=1, + const unsigned int dz=1, const unsigned int dc=1) { + return CImgList::save_empty_cimg(file,1,dx,dy,dz,dc); + } + + //! Save image as an INRIMAGE-4 file. + /** + \param filename Filename, as a C-string. + \param voxel_size Pointer to 3 values specifying the voxel sizes along the X,Y and Z dimensions. + **/ + const CImg& save_inr(const char *const filename, const float *const voxel_size=0) const { + return _save_inr(0,filename,voxel_size); + } + + //! Save image as an INRIMAGE-4 file \overloading. + const CImg& save_inr(std::FILE *const file, const float *const voxel_size=0) const { + return _save_inr(file,0,voxel_size); + } + + const CImg& _save_inr(std::FILE *const file, const char *const filename, const float *const voxel_size) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_inr(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + + int inrpixsize = -1; + const char *inrtype = "unsigned fixed\nPIXSIZE=8 bits\nSCALE=2**0"; + if (!cimg::strcasecmp(pixel_type(),"unsigned char")) { + inrtype = "unsigned fixed\nPIXSIZE=8 bits\nSCALE=2**0"; inrpixsize = 1; + } + if (!cimg::strcasecmp(pixel_type(),"char")) { + inrtype = "fixed\nPIXSIZE=8 bits\nSCALE=2**0"; inrpixsize = 1; + } + if (!cimg::strcasecmp(pixel_type(),"unsigned short")) { + inrtype = "unsigned fixed\nPIXSIZE=16 bits\nSCALE=2**0";inrpixsize = 2; + } + if (!cimg::strcasecmp(pixel_type(),"short")) { + inrtype = "fixed\nPIXSIZE=16 bits\nSCALE=2**0"; inrpixsize = 2; + } + if (!cimg::strcasecmp(pixel_type(),"unsigned int")) { + inrtype = "unsigned fixed\nPIXSIZE=32 bits\nSCALE=2**0";inrpixsize = 4; + } + if (!cimg::strcasecmp(pixel_type(),"int")) { + inrtype = "fixed\nPIXSIZE=32 bits\nSCALE=2**0"; inrpixsize = 4; + } + if (!cimg::strcasecmp(pixel_type(),"float")) { + inrtype = "float\nPIXSIZE=32 bits"; inrpixsize = 4; + } + if (!cimg::strcasecmp(pixel_type(),"double")) { + inrtype = "float\nPIXSIZE=64 bits"; inrpixsize = 8; + } + if (inrpixsize<=0) + throw CImgIOException(_cimg_instance + "save_inr(): Unsupported pixel type '%s' for file '%s'", + cimg_instance, + pixel_type(),filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + CImg header(257); + int err = cimg_snprintf(header,header._width,"#INRIMAGE-4#{\nXDIM=%u\nYDIM=%u\nZDIM=%u\nVDIM=%u\n", + _width,_height,_depth,_spectrum); + if (voxel_size) err+=cimg_sprintf(header._data + err,"VX=%g\nVY=%g\nVZ=%g\n", + voxel_size[0],voxel_size[1],voxel_size[2]); + err+=cimg_sprintf(header._data + err,"TYPE=%s\nCPU=%s\n",inrtype,cimg::endianness()?"sun":"decm"); + std::memset(header._data + err,'\n',252 - err); + std::memcpy(header._data + 252,"##}\n",4); + cimg::fwrite(header._data,256,nfile); + cimg_forXYZ(*this,x,y,z) cimg_forC(*this,c) cimg::fwrite(&((*this)(x,y,z,c)),1,nfile); + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as an OpenEXR file. + /** + \param filename Filename, as a C-string. + \note The OpenEXR file format is described here. + **/ + const CImg& save_exr(const char *const filename) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_exr(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_exr(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename); + +#ifndef cimg_use_openexr + return save_other(filename); +#else + Imf::Rgba *const ptrd0 = new Imf::Rgba[(size_t)_width*_height], *ptrd = ptrd0, rgba; + switch (_spectrum) { + case 1 : { // Grayscale image + for (const T *ptr_r = data(), *const ptr_e = ptr_r + (ulongT)_width*_height; ptr_rPandore file specifications + for more information). + **/ + const CImg& save_pandore(const char *const filename, const unsigned int colorspace=0) const { + return _save_pandore(0,filename,colorspace); + } + + //! Save image as a Pandore-5 file \overloading. + /** + Same as save_pandore(const char *,unsigned int) const + with a file stream argument instead of a filename string. + **/ + const CImg& save_pandore(std::FILE *const file, const unsigned int colorspace=0) const { + return _save_pandore(file,0,colorspace); + } + + unsigned int _save_pandore_header_length(unsigned int id, unsigned int *dims, const unsigned int colorspace) const { + unsigned int nbdims = 0; + if (id==2 || id==3 || id==4) { + dims[0] = 1; dims[1] = _width; nbdims = 2; + } + if (id==5 || id==6 || id==7) { + dims[0] = 1; dims[1] = _height; dims[2] = _width; nbdims=3; + } + if (id==8 || id==9 || id==10) { + dims[0] = _spectrum; dims[1] = _depth; dims[2] = _height; dims[3] = _width; nbdims = 4; + } + if (id==16 || id==17 || id==18) { + dims[0] = 3; dims[1] = _height; dims[2] = _width; dims[3] = colorspace; nbdims = 4; + } + if (id==19 || id==20 || id==21) { + dims[0] = 3; dims[1] = _depth; dims[2] = _height; dims[3] = _width; dims[4] = colorspace; nbdims = 5; + } + if (id==22 || id==23 || id==25) { + dims[0] = _spectrum; dims[1] = _width; nbdims = 2; + } + if (id==26 || id==27 || id==29) { + dims[0] = _spectrum; dims[1] = _height; dims[2] = _width; nbdims=3; + } + if (id==30 || id==31 || id==33) { + dims[0] = _spectrum; dims[1] = _depth; dims[2] = _height; dims[3] = _width; nbdims = 4; + } + return nbdims; + } + + const CImg& _save_pandore(std::FILE *const file, const char *const filename, + const unsigned int colorspace) const { + +#define __cimg_save_pandore_case(dtype) \ + dtype *buffer = new dtype[size()]; \ + const T *ptrs = _data; \ + cimg_foroff(*this,off) *(buffer++) = (dtype)(*(ptrs++)); \ + buffer-=size(); \ + cimg::fwrite(buffer,size(),nfile); \ + delete[] buffer + +#define _cimg_save_pandore_case(sy,sz,sv,stype,id) \ + if (!saved && (sy?(sy==_height):true) && (sz?(sz==_depth):true) && \ + (sv?(sv==_spectrum):true) && !std::strcmp(stype,pixel_type())) { \ + unsigned int *iheader = (unsigned int*)(header + 12); \ + nbdims = _save_pandore_header_length((*iheader=id),dims,colorspace); \ + cimg::fwrite(header,36,nfile); \ + if (sizeof(unsigned long)==4) { CImg ndims(5); \ + for (int d = 0; d<5; ++d) ndims[d] = (unsigned long)dims[d]; \ + cimg::fwrite(ndims._data,nbdims,nfile); } \ + else if (sizeof(unsigned int)==4) { CImg ndims(5); \ + for (int d = 0; d<5; ++d) ndims[d] = (unsigned int)dims[d]; \ + cimg::fwrite(ndims._data,nbdims,nfile); } \ + else if (sizeof(unsigned short)==4) { CImg ndims(5); \ + for (int d = 0; d<5; ++d) ndims[d] = (unsigned short)dims[d]; \ + cimg::fwrite(ndims._data,nbdims,nfile); } \ + else throw CImgIOException(_cimg_instance \ + "save_pandore(): Unsupported datatype for file '%s'.",\ + cimg_instance, \ + filename?filename:"(FILE*)"); \ + if (id==2 || id==5 || id==8 || id==16 || id==19 || id==22 || id==26 || id==30) { \ + __cimg_save_pandore_case(unsigned char); \ + } else if (id==3 || id==6 || id==9 || id==17 || id==20 || id==23 || id==27 || id==31) { \ + if (sizeof(unsigned long)==4) { __cimg_save_pandore_case(unsigned long); } \ + else if (sizeof(unsigned int)==4) { __cimg_save_pandore_case(unsigned int); } \ + else if (sizeof(unsigned short)==4) { __cimg_save_pandore_case(unsigned short); } \ + else throw CImgIOException(_cimg_instance \ + "save_pandore(): Unsupported datatype for file '%s'.",\ + cimg_instance, \ + filename?filename:"(FILE*)"); \ + } else if (id==4 || id==7 || id==10 || id==18 || id==21 || id==25 || id==29 || id==33) { \ + if (sizeof(double)==4) { __cimg_save_pandore_case(double); } \ + else if (sizeof(float)==4) { __cimg_save_pandore_case(float); } \ + else throw CImgIOException(_cimg_instance \ + "save_pandore(): Unsupported datatype for file '%s'.",\ + cimg_instance, \ + filename?filename:"(FILE*)"); \ + } \ + saved = true; \ + } + + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_pandore(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + unsigned char header[36] = { 'P','A','N','D','O','R','E','0','4',0,0,0, + 0,0,0,0,'C','I','m','g',0,0,0,0,0, + 'N','o',' ','d','a','t','e',0,0,0,0 }; + unsigned int nbdims, dims[5] = { 0 }; + bool saved = false; + _cimg_save_pandore_case(1,1,1,"unsigned char",2); + _cimg_save_pandore_case(1,1,1,"char",3); + _cimg_save_pandore_case(1,1,1,"unsigned short",3); + _cimg_save_pandore_case(1,1,1,"short",3); + _cimg_save_pandore_case(1,1,1,"unsigned int",3); + _cimg_save_pandore_case(1,1,1,"int",3); + _cimg_save_pandore_case(1,1,1,"unsigned int64",3); + _cimg_save_pandore_case(1,1,1,"int64",3); + _cimg_save_pandore_case(1,1,1,"float",4); + _cimg_save_pandore_case(1,1,1,"double",4); + + _cimg_save_pandore_case(0,1,1,"unsigned char",5); + _cimg_save_pandore_case(0,1,1,"char",6); + _cimg_save_pandore_case(0,1,1,"unsigned short",6); + _cimg_save_pandore_case(0,1,1,"short",6); + _cimg_save_pandore_case(0,1,1,"unsigned int",6); + _cimg_save_pandore_case(0,1,1,"int",6); + _cimg_save_pandore_case(0,1,1,"unsigned int64",6); + _cimg_save_pandore_case(0,1,1,"int64",6); + _cimg_save_pandore_case(0,1,1,"float",7); + _cimg_save_pandore_case(0,1,1,"double",7); + + _cimg_save_pandore_case(0,0,1,"unsigned char",8); + _cimg_save_pandore_case(0,0,1,"char",9); + _cimg_save_pandore_case(0,0,1,"unsigned short",9); + _cimg_save_pandore_case(0,0,1,"short",9); + _cimg_save_pandore_case(0,0,1,"unsigned int",9); + _cimg_save_pandore_case(0,0,1,"int",9); + _cimg_save_pandore_case(0,0,1,"unsigned int64",9); + _cimg_save_pandore_case(0,0,1,"int64",9); + _cimg_save_pandore_case(0,0,1,"float",10); + _cimg_save_pandore_case(0,0,1,"double",10); + + _cimg_save_pandore_case(0,1,3,"unsigned char",16); + _cimg_save_pandore_case(0,1,3,"char",17); + _cimg_save_pandore_case(0,1,3,"unsigned short",17); + _cimg_save_pandore_case(0,1,3,"short",17); + _cimg_save_pandore_case(0,1,3,"unsigned int",17); + _cimg_save_pandore_case(0,1,3,"int",17); + _cimg_save_pandore_case(0,1,3,"unsigned int64",17); + _cimg_save_pandore_case(0,1,3,"int64",17); + _cimg_save_pandore_case(0,1,3,"float",18); + _cimg_save_pandore_case(0,1,3,"double",18); + + _cimg_save_pandore_case(0,0,3,"unsigned char",19); + _cimg_save_pandore_case(0,0,3,"char",20); + _cimg_save_pandore_case(0,0,3,"unsigned short",20); + _cimg_save_pandore_case(0,0,3,"short",20); + _cimg_save_pandore_case(0,0,3,"unsigned int",20); + _cimg_save_pandore_case(0,0,3,"int",20); + _cimg_save_pandore_case(0,0,3,"unsigned int64",20); + _cimg_save_pandore_case(0,0,3,"int64",20); + _cimg_save_pandore_case(0,0,3,"float",21); + _cimg_save_pandore_case(0,0,3,"double",21); + + _cimg_save_pandore_case(1,1,0,"unsigned char",22); + _cimg_save_pandore_case(1,1,0,"char",23); + _cimg_save_pandore_case(1,1,0,"unsigned short",23); + _cimg_save_pandore_case(1,1,0,"short",23); + _cimg_save_pandore_case(1,1,0,"unsigned int",23); + _cimg_save_pandore_case(1,1,0,"int",23); + _cimg_save_pandore_case(1,1,0,"unsigned int64",23); + _cimg_save_pandore_case(1,1,0,"int64",23); + _cimg_save_pandore_case(1,1,0,"float",25); + _cimg_save_pandore_case(1,1,0,"double",25); + + _cimg_save_pandore_case(0,1,0,"unsigned char",26); + _cimg_save_pandore_case(0,1,0,"char",27); + _cimg_save_pandore_case(0,1,0,"unsigned short",27); + _cimg_save_pandore_case(0,1,0,"short",27); + _cimg_save_pandore_case(0,1,0,"unsigned int",27); + _cimg_save_pandore_case(0,1,0,"int",27); + _cimg_save_pandore_case(0,1,0,"unsigned int64",27); + _cimg_save_pandore_case(0,1,0,"int64",27); + _cimg_save_pandore_case(0,1,0,"float",29); + _cimg_save_pandore_case(0,1,0,"double",29); + + _cimg_save_pandore_case(0,0,0,"unsigned char",30); + _cimg_save_pandore_case(0,0,0,"char",31); + _cimg_save_pandore_case(0,0,0,"unsigned short",31); + _cimg_save_pandore_case(0,0,0,"short",31); + _cimg_save_pandore_case(0,0,0,"unsigned int",31); + _cimg_save_pandore_case(0,0,0,"int",31); + _cimg_save_pandore_case(0,0,0,"unsigned int64",31); + _cimg_save_pandore_case(0,0,0,"int64",31); + _cimg_save_pandore_case(0,0,0,"float",33); + _cimg_save_pandore_case(0,0,0,"double",33); + + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a raw data file. + /** + \param filename Filename, as a C-string. + \param is_multiplexed Tells if the image channels are stored in a multiplexed way (\c true) or not (\c false). + \note The .raw format does not store the image dimensions in the output file, + so you have to keep track of them somewhere to be able to read the file correctly afterwards. + **/ + const CImg& save_raw(const char *const filename, const bool is_multiplexed=false) const { + return _save_raw(0,filename,is_multiplexed); + } + + //! Save image as a raw data file \overloading. + /** + Same as save_raw(const char *,bool) const + with a file stream argument instead of a filename string. + **/ + const CImg& save_raw(std::FILE *const file, const bool is_multiplexed=false) const { + return _save_raw(file,0,is_multiplexed); + } + + const CImg& _save_raw(std::FILE *const file, const char *const filename, const bool is_multiplexed) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_raw(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + if (pixel_type()==cimg::type::string()) { // Boolean data (bitwise) + ulongT siz; + const unsigned char *const buf = _bool2uchar(siz,is_multiplexed); + cimg::fwrite(buf,siz,nfile); + delete[] buf; + } else { // Non boolean data + if (!is_multiplexed || _spectrum==1) cimg::fwrite(_data,size(),nfile); // Non-multiplexed + else { // Multiplexed + CImg buf(_spectrum); + cimg_forXYZ(*this,x,y,z) { + cimg_forC(*this,c) buf[c] = (*this)(x,y,z,c); + cimg::fwrite(buf._data,_spectrum,nfile); + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + // Return unsigned char buffer that encodes data of a CImg instance bitwise. + // (buffer needs to be deallocated afterwards, with delete[]). + const unsigned char *_bool2uchar(ulongT &siz, const bool is_multiplexed) const { + const ulongT _siz = size(); + siz = _siz/8 + (_siz%8?1:0); + unsigned char *const buf = new unsigned char[siz], *ptrd = buf, val = 0, bit = 0; + + if (!is_multiplexed || _spectrum==1) // Non-multiplexed + cimg_for(*this,ptrs,T) { (val<<=1)|=(*ptrs?1:0); if (++bit==8) { *(ptrd++) = val; val = bit = 0; }} + else // Multiplexed + cimg_forXYZ(*this,x,y,z) cimg_forC(*this,c) { + (val<<=1)|=((*this)(x,y,z,c)?1:0); if (++bit==8) { *(ptrd++) = val; val = bit = 0; } + } + if (bit) *ptrd = val; + return buf; + } + + // Fill CImg instance from bitwise data encoded in an unsigned char buffer. + void _uchar2bool(const unsigned char *buf, const ulongT siz, const bool is_multiplexed) { + const ulongT S = std::min(siz*8,size()); + const unsigned char *ptrs = buf; + unsigned char val = 0, mask = 0; + T *ptrd = _data; + if (S && (!is_multiplexed || _spectrum==1)) // Non-multiplexed + for (ulongT off = 0; off>=1)) { val = *(ptrs++); mask = 128; } + *(ptrd++) = (T)((val&mask)?1:0); + } + else if (S) { // Multiplexed + ulongT off = 0; + for (int z = 0; z>=1)) { val = *(ptrs++); ++off; mask = 128; } + (*this)(x,y,z,c) = (T)((val&mask)?1:0); + } + } + } + + //! Save image as a .yuv video file. + /** + \param filename Filename, as a C-string. + \param chroma_subsampling Type of chroma subsampling. Can be { 420 | 422 | 444 }. + \param is_rgb Tells if pixel values of the instance image are RGB-coded (\c true) or YUV-coded (\c false). + \note Each slice of the instance image is considered to be a single frame of the output video file. + **/ + const CImg& save_yuv(const char *const filename, + const unsigned int chroma_subsampling=444, + const bool is_rgb=true) const { + CImgList(*this,true).save_yuv(filename,chroma_subsampling,is_rgb); + return *this; + } + + //! Save image as a .yuv video file \overloading. + /** + Same as save_yuv(const char*,const unsigned int,const bool) const + with a file stream argument instead of a filename string. + **/ + const CImg& save_yuv(std::FILE *const file, + const unsigned int chroma_subsampling=444, + const bool is_rgb=true) const { + CImgList(*this,true).save_yuv(file,chroma_subsampling,is_rgb); + return *this; + } + + //! Save 3D object as an Object File Format (.off) file. + /** + \param filename Filename, as a C-string. + \param primitives List of 3D object primitives. + \param colors List of 3D object colors. + \note + - Instance image contains the vertices data of the 3D object. + - Textured, transparent or sphere-shaped primitives cannot be managed by the .off file format. + Such primitives will be lost or simplified during file saving. + - The .off file format is described here. + **/ + template + const CImg& save_off(const CImgList& primitives, const CImgList& colors, + const char *const filename) const { + return _save_off(primitives,colors,0,filename); + } + + //! Save 3D object as an Object File Format (.off) file \overloading. + /** + Same as save_off(const CImgList&,const CImgList&,const char*) const + with a file stream argument instead of a filename string. + **/ + template + const CImg& save_off(const CImgList& primitives, const CImgList& colors, + std::FILE *const file) const { + return _save_off(primitives,colors,file,0); + } + + template + const CImg& _save_off(const CImgList& primitives, const CImgList& colors, + std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_off(): Specified filename is (null).", + cimg_instance); + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "save_off(): Empty instance, for file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + CImgList opacities; + CImg error_message(1024); + if (!is_object3d(primitives,colors,opacities,true,error_message)) + throw CImgInstanceException(_cimg_instance + "save_off(): Invalid specified 3D object, for file '%s' (%s).", + cimg_instance, + filename?filename:"(FILE*)",error_message.data()); + + const CImg default_color(1,3,1,1,(tc)std::min((int)cimg::type::max(),200)); + std::FILE *const nfile = file?file:cimg::fopen(filename,"w"); + unsigned int supported_primitives = 0; + cimglist_for(primitives,l) if (primitives[l].size()!=5) ++supported_primitives; + std::fprintf(nfile,"OFF\n%u %u %u\n",_width,supported_primitives,3*primitives._width); + cimg_forX(*this,i) std::fprintf(nfile,"%f %f %f\n", + (float)((*this)(i,0)),(float)((*this)(i,1)),(float)((*this)(i,2))); + cimglist_for(primitives,l) { + const CImg& color = l1?color[1]:r)/255.f, b = (csiz>2?color[2]:g)/255.f; + switch (psiz) { + case 1 : std::fprintf(nfile,"1 %u %f %f %f\n", + (unsigned int)primitives(l,0),r,g,b); break; + case 2 : std::fprintf(nfile,"2 %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,1),r,g,b); break; + case 3 : std::fprintf(nfile,"3 %u %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,2), + (unsigned int)primitives(l,1),r,g,b); break; + case 4 : std::fprintf(nfile,"4 %u %u %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,3), + (unsigned int)primitives(l,2),(unsigned int)primitives(l,1),r,g,b); break; + case 5 : std::fprintf(nfile,"2 %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,1),r,g,b); break; + case 6 : { + const unsigned int xt = (unsigned int)primitives(l,2), yt = (unsigned int)primitives(l,3); + const float + rt = color.atXY(xt,yt,0)/255.f, + gt = (csiz>1?color.atXY(xt,yt,1):r)/255.f, + bt = (csiz>2?color.atXY(xt,yt,2):g)/255.f; + std::fprintf(nfile,"2 %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,1),rt,gt,bt); + } break; + case 9 : { + const unsigned int xt = (unsigned int)primitives(l,3), yt = (unsigned int)primitives(l,4); + const float + rt = color.atXY(xt,yt,0)/255.f, + gt = (csiz>1?color.atXY(xt,yt,1):r)/255.f, + bt = (csiz>2?color.atXY(xt,yt,2):g)/255.f; + std::fprintf(nfile,"3 %u %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,2), + (unsigned int)primitives(l,1),rt,gt,bt); + } break; + case 12 : { + const unsigned int xt = (unsigned int)primitives(l,4), yt = (unsigned int)primitives(l,5); + const float + rt = color.atXY(xt,yt,0)/255.f, + gt = (csiz>1?color.atXY(xt,yt,1):r)/255.f, + bt = (csiz>2?color.atXY(xt,yt,2):g)/255.f; + std::fprintf(nfile,"4 %u %u %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,3), + (unsigned int)primitives(l,2),(unsigned int)primitives(l,1),rt,gt,bt); + } break; + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save volumetric image as a video (using the OpenCV library when available). + /** + \param filename Filename to write data to. + \param fps Number of frames per second. + \param codec Type of compression (See http://www.fourcc.org/codecs.php to see available codecs). + \param keep_open Tells if the video writer associated to the specified filename + must be kept open or not (to allow frames to be added in the same file afterwards). + **/ + const CImg& save_video(const char *const filename, const unsigned int fps=25, + const char *codec=0, const bool keep_open=false) const { + if (is_empty()) { CImgList().save_video(filename,fps,codec,keep_open); return *this; } + CImgList list; + get_split('z').move_to(list); + list.save_video(filename,fps,codec,keep_open); + return *this; + } + + //! Save volumetric image as a video, using ffmpeg external binary. + /** + \param filename Filename, as a C-string. + \param fps Video framerate. + \param codec Video codec, as a C-string. + \param bitrate Video bitrate. + \note + - Each slice of the instance image is considered to be a single frame of the output video file. + - This method uses \c ffmpeg, an external executable binary provided by + FFmpeg. + It must be installed for the method to succeed. + **/ + const CImg& save_ffmpeg_external(const char *const filename, const unsigned int fps=25, + const char *const codec=0, const unsigned int bitrate=2048) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_ffmpeg_external(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + + CImgList list; + get_split('z').move_to(list); + list.save_ffmpeg_external(filename,fps,codec,bitrate); + return *this; + } + + //! Save image using gzip external binary. + /** + \param filename Filename, as a C-string. + \note This method uses \c gzip, an external executable binary provided by + gzip. + It must be installed for the method to succeed. + **/ + const CImg& save_gzip_external(const char *const filename) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_gzip_external(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + + CImg command(1024), filename_tmp(256), body(256); + const char + *ext = cimg::split_filename(filename,body), + *ext2 = cimg::split_filename(body,0); + std::FILE *file; + do { + if (!cimg::strcasecmp(ext,"gz")) { + if (*ext2) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext2); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.cimg", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } else { + if (*ext) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.cimg", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + save(filename_tmp); + cimg_snprintf(command,command._width,"\"%s\" -c \"%s\" > \"%s\"", + cimg::gzip_path(), + CImg::string(filename_tmp)._system_strescape().data(), + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::gzip_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimg_instance + "save_gzip_external(): Failed to save file '%s' with external command 'gzip'.", + cimg_instance, + filename); + + else cimg::fclose(file); + std::remove(filename_tmp); + return *this; + } + + //! Save image using GraphicsMagick's external binary. + /** + \param filename Filename, as a C-string. + \param quality Image quality (expressed in percent), when the file format supports it. + \note This method uses \c gm, an external executable binary provided by + GraphicsMagick. + It must be installed for the method to succeed. + **/ + const CImg& save_graphicsmagick_external(const char *const filename, const unsigned int quality=100) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_graphicsmagick_external(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_other(): File '%s', saving a volumetric image with an external call to " + "GraphicsMagick only writes the first image slice.", + cimg_instance,filename); + +#ifdef cimg_use_png +#define _cimg_sge_extension1 "png" +#define _cimg_sge_extension2 "png" +#else +#define _cimg_sge_extension1 "pgm" +#define _cimg_sge_extension2 "ppm" +#endif + CImg command(1024), filename_tmp(256); + std::FILE *file; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(), + _spectrum==1?_cimg_sge_extension1:_cimg_sge_extension2); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + +#ifdef cimg_use_png + save_png(filename_tmp); +#else + save_pnm(filename_tmp); +#endif + cimg_snprintf(command,command._width,"\"%s\" convert -quality %u \"%s\" \"%s\"", + cimg::graphicsmagick_path(),quality, + CImg::string(filename_tmp)._system_strescape().data(), + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::graphicsmagick_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimg_instance + "save_graphicsmagick_external(): Failed to save file '%s' with external command 'gm'.", + cimg_instance, + filename); + + if (file) cimg::fclose(file); + std::remove(filename_tmp); + return *this; + } + + //! Save image using ImageMagick's external binary. + /** + \param filename Filename, as a C-string. + \param quality Image quality (expressed in percent), when the file format supports it. + \note This method uses \c convert, an external executable binary provided by + ImageMagick. + It must be installed for the method to succeed. + **/ + const CImg& save_imagemagick_external(const char *const filename, const unsigned int quality=100) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_imagemagick_external(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_other(): File '%s', saving a volumetric image with an external call to " + "ImageMagick only writes the first image slice.", + cimg_instance,filename); +#ifdef cimg_use_png +#define _cimg_sie_extension1 "png" +#define _cimg_sie_extension2 "png" +#else +#define _cimg_sie_extension1 "pgm" +#define _cimg_sie_extension2 "ppm" +#endif + CImg command(1024), filename_tmp(256); + std::FILE *file; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s",cimg::temporary_path(), + cimg_file_separator,cimg::filenamerand(),_spectrum==1?_cimg_sie_extension1:_cimg_sie_extension2); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); +#ifdef cimg_use_png + save_png(filename_tmp); +#else + save_pnm(filename_tmp); +#endif + cimg_snprintf(command,command._width,"\"%s\" -quality %u \"%s\" \"%s\"", + cimg::imagemagick_path(),quality, + CImg::string(filename_tmp)._system_strescape().data(), + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::imagemagick_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimg_instance + "save_imagemagick_external(): Failed to save file '%s' with " + "external command 'magick/convert'.", + cimg_instance, + filename); + + if (file) cimg::fclose(file); + std::remove(filename_tmp); + return *this; + } + + //! Save image as a Dicom file. + /** + \param filename Filename, as a C-string. + \note This method uses \c medcon, an external executable binary provided by + (X)Medcon. + It must be installed for the method to succeed. + **/ + const CImg& save_medcon_external(const char *const filename) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_medcon_external(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + + CImg command(1024), filename_tmp(256), body(256); + std::FILE *file; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s.hdr",cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + save_analyze(filename_tmp); + cimg_snprintf(command,command._width,"\"%s\" -w -c dicom -o \"%s\" -f \"%s\"", + cimg::medcon_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command, cimg::medcon_path()); + std::remove(filename_tmp); + cimg::split_filename(filename_tmp,body); + cimg_snprintf(filename_tmp,filename_tmp._width,"%s.img",body._data); + std::remove(filename_tmp); + + file = cimg::std_fopen(filename,"rb"); + if (!file) { + cimg_snprintf(command,command._width,"m000-%s",filename); + file = cimg::std_fopen(command,"rb"); + if (!file) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "save_medcon_external(): Failed to save file '%s' with external command 'medcon'.", + cimg_instance, + filename); + } + } + cimg::fclose(file); + std::rename(command,filename); + return *this; + } + + // Save image for non natively supported formats. + /** + \param filename Filename, as a C-string. + \param quality Image quality (expressed in percent), when the file format supports it. + \note + - The filename extension tells about the desired file format. + - This method tries to save the instance image as a file, using external tools from + ImageMagick or + GraphicsMagick. + At least one of these tool must be installed for the method to succeed. + - It is recommended to use the generic method save(const char*, int) const instead, + as it can handle some file formats natively. + **/ + const CImg& save_other(const char *const filename, const unsigned int quality=100) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_other(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_other(): File '%s', saving a volumetric image with an external call to " + "ImageMagick or GraphicsMagick only writes the first image slice.", + cimg_instance,filename); + + const unsigned int omode = cimg::exception_mode(); + bool is_saved = true; + cimg::exception_mode(0); + try { save_magick(filename); } + catch (CImgException&) { + try { save_imagemagick_external(filename,quality); } + catch (CImgException&) { + try { save_graphicsmagick_external(filename,quality); } + catch (CImgException&) { + is_saved = false; + } + } + } + cimg::exception_mode(omode); + if (!is_saved) + throw CImgIOException(_cimg_instance + "save_other(): Failed to save file '%s'. Format is not natively supported, " + "and no external commands succeeded.", + cimg_instance, + filename); + return *this; + } + + //! Serialize a CImg instance into a raw CImg buffer. + /** + \param is_compressed tells if zlib compression must be used for serialization + (this requires 'cimg_use_zlib' been enabled). + **/ + CImg get_serialize(const bool is_compressed=false) const { + return CImgList(*this,true).get_serialize(is_compressed); + } + + // [internal] Return a 40x38 color logo of a 'danger' item. + static CImg _logo40x38() { + CImg res(40,38,1,3); + const unsigned char *ptrs = cimg::logo40x38; + T *ptr1 = res.data(0,0,0,0), *ptr2 = res.data(0,0,0,1), *ptr3 = res.data(0,0,0,2); + for (ulongT off = 0; off<(ulongT)res._width*res._height;) { + const unsigned char n = *(ptrs++), r = *(ptrs++), g = *(ptrs++), b = *(ptrs++); + for (unsigned int l = 0; l structure + # + # + # + #------------------------------------------ + */ + //! Represent a list of images CImg. + template + struct CImgList { + unsigned int _width, _allocated_width; + CImg *_data; + + //! Simple iterator type, to loop through each image of a list. + /** + \note + - The \c CImgList::iterator type is defined as a CImg*. + - You may use it like this: + \code + CImgList<> list; // Assuming this image list is not empty + for (CImgList<>::iterator it = list.begin(); it* iterator; + + //! Simple const iterator type, to loop through each image of a \c const list instance. + /** + \note + - The \c CImgList::const_iterator type is defined to be a const CImg*. + - Similar to CImgList::iterator, but for constant list instances. + **/ + typedef const CImg* const_iterator; + + //! Pixel value type. + /** + Refer to the pixels value type of the images in the list. + \note + - The \c CImgList::value_type type of a \c CImgList is defined to be a \c T. + It is then similar to CImg::value_type. + - \c CImgList::value_type is actually not used in %CImg methods. It has been mainly defined for + compatibility with STL naming conventions. + **/ + typedef T value_type; + + // Define common types related to template type T. + typedef typename cimg::superset::type Tbool; + typedef typename cimg::superset::type Tuchar; + typedef typename cimg::superset::type Tchar; + typedef typename cimg::superset::type Tushort; + typedef typename cimg::superset::type Tshort; + typedef typename cimg::superset::type Tuint; + typedef typename cimg::superset::type Tint; + typedef typename cimg::superset::type Tulong; + typedef typename cimg::superset::type Tlong; + typedef typename cimg::superset::type Tfloat; + typedef typename cimg::superset::type Tdouble; + typedef typename cimg::last::type boolT; + typedef typename cimg::last::type ucharT; + typedef typename cimg::last::type charT; + typedef typename cimg::last::type ushortT; + typedef typename cimg::last::type shortT; + typedef typename cimg::last::type uintT; + typedef typename cimg::last::type intT; + typedef typename cimg::last::type ulongT; + typedef typename cimg::last::type longT; + typedef typename cimg::last::type uint64T; + typedef typename cimg::last::type int64T; + typedef typename cimg::last::type floatT; + typedef typename cimg::last::type doubleT; + + //@} + //--------------------------- + // + //! \name Plugins + //@{ + //--------------------------- +#ifdef cimglist_plugin +#include cimglist_plugin +#endif +#ifdef cimglist_plugin1 +#include cimglist_plugin1 +#endif +#ifdef cimglist_plugin2 +#include cimglist_plugin2 +#endif +#ifdef cimglist_plugin3 +#include cimglist_plugin3 +#endif +#ifdef cimglist_plugin4 +#include cimglist_plugin4 +#endif +#ifdef cimglist_plugin5 +#include cimglist_plugin5 +#endif +#ifdef cimglist_plugin6 +#include cimglist_plugin6 +#endif +#ifdef cimglist_plugin7 +#include cimglist_plugin7 +#endif +#ifdef cimglist_plugin8 +#include cimglist_plugin8 +#endif + + //@} + //-------------------------------------------------------- + // + //! \name Constructors / Destructor / Instance Management + //@{ + //-------------------------------------------------------- + + //! Destructor. + /** + Destroy current list instance. + \note + - Any allocated buffer is deallocated. + - Destroying an empty list does nothing actually. + **/ + ~CImgList() { + delete[] _data; + } + + //! Default constructor. + /** + Construct a new empty list instance. + \note + - An empty list has no pixel data and its dimension width() is set to \c 0, as well as its + image buffer pointer data(). + - An empty list may be reassigned afterwards, with the family of the assign() methods. + In all cases, the type of pixels stays \c T. + **/ + CImgList(): + _width(0),_allocated_width(0),_data(0) {} + + //! Construct list containing empty images. + /** + \param n Number of empty images. + \note Useful when you know by advance the number of images you want to manage, as + it will allocate the right amount of memory for the list, without needs for reallocation + (that may occur when starting from an empty list and inserting several images in it). + **/ + explicit CImgList(const unsigned int n):_width(n) { + if (n) _data = new CImg[_allocated_width = std::max(16U,(unsigned int)cimg::nearest_pow2(n))]; + else { _allocated_width = 0; _data = 0; } + } + + //! Construct list containing images of specified size. + /** + \param n Number of images. + \param width Width of images. + \param height Height of images. + \param depth Depth of images. + \param spectrum Number of channels of images. + \note Pixel values are not initialized and may probably contain garbage. + **/ + CImgList(const unsigned int n, const unsigned int width, const unsigned int height=1, + const unsigned int depth=1, const unsigned int spectrum=1): + _width(0),_allocated_width(0),_data(0) { + assign(n); + cimglist_apply(*this,assign)(width,height,depth,spectrum); + } + + //! Construct list containing images of specified size, and initialize pixel values. + /** + \param n Number of images. + \param width Width of images. + \param height Height of images. + \param depth Depth of images. + \param spectrum Number of channels of images. + \param val Initialization value for images pixels. + **/ + CImgList(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, const T& val): + _width(0),_allocated_width(0),_data(0) { + assign(n); + cimglist_apply(*this,assign)(width,height,depth,spectrum,val); + } + + //! Construct list containing images of specified size, and initialize pixel values from a sequence of integers. + /** + \param n Number of images. + \param width Width of images. + \param height Height of images. + \param depth Depth of images. + \param spectrum Number of channels of images. + \param val0 First value of the initializing integers sequence. + \param val1 Second value of the initializing integers sequence. + \warning You must specify at least width*height*depth*spectrum values in your argument list, + or you will probably segfault. + **/ + CImgList(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, const int val0, const int val1, ...): + _width(0),_allocated_width(0),_data(0) { +#define _CImgList_stdarg(t) { \ + assign(n,width,height,depth,spectrum); \ + const ulongT siz = (ulongT)width*height*depth*spectrum, nsiz = siz*n; \ + T *ptrd = _data->_data; \ + va_list ap; \ + va_start(ap,val1); \ + for (ulongT l = 0, s = 0, i = 0; iwidth*height*depth*spectrum values in your argument list, + or you will probably segfault. + **/ + CImgList(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, const double val0, const double val1, ...): + _width(0),_allocated_width(0),_data(0) { + _CImgList_stdarg(double); + } + + //! Construct list containing copies of an input image. + /** + \param n Number of images. + \param img Input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of \c img. + **/ + template + CImgList(const unsigned int n, const CImg& img, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(n); + cimglist_apply(*this,assign)(img,is_shared); + } + + //! Construct list from one image. + /** + \param img Input image to copy in the constructed list. + \param is_shared Tells if the element of the list is a shared or non-shared copy of \c img. + **/ + template + explicit CImgList(const CImg& img, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(1); + _data[0].assign(img,is_shared); + } + + //! Construct list from two images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(2); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); + } + + //! Construct list from three images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(3); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + } + + //! Construct list from four images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param img4 Fourth input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(4); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); + } + + //! Construct list from five images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param img4 Fourth input image to copy in the constructed list. + \param img5 Fifth input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(5); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); + } + + //! Construct list from six images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param img4 Fourth input image to copy in the constructed list. + \param img5 Fifth input image to copy in the constructed list. + \param img6 Sixth input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(6); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + } + + //! Construct list from seven images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param img4 Fourth input image to copy in the constructed list. + \param img5 Fifth input image to copy in the constructed list. + \param img6 Sixth input image to copy in the constructed list. + \param img7 Seventh input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const CImg& img7, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(7); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + _data[6].assign(img7,is_shared); + } + + //! Construct list from eight images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param img4 Fourth input image to copy in the constructed list. + \param img5 Fifth input image to copy in the constructed list. + \param img6 Sixth input image to copy in the constructed list. + \param img7 Seventh input image to copy in the constructed list. + \param img8 Eighth input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const CImg& img7, const CImg& img8, + const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(8); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + _data[6].assign(img7,is_shared); _data[7].assign(img8,is_shared); + } + + //! Construct list copy. + /** + \param list Input list to copy. + \note The shared state of each element of the constructed list is kept the same as in \c list. + **/ + template + CImgList(const CImgList& list):_width(0),_allocated_width(0),_data(0) { + assign(list._width); + cimglist_for(*this,l) _data[l].assign(list[l],false); + } + + //! Construct list copy \specialization. + CImgList(const CImgList& list):_width(0),_allocated_width(0),_data(0) { + assign(list._width); + cimglist_for(*this,l) _data[l].assign(list[l],list[l]._is_shared); + } + + //! Construct list copy, and force the shared state of the list elements. + /** + \param list Input list to copy. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImgList& list, const bool is_shared):_width(0),_allocated_width(0),_data(0) { + assign(list._width); + cimglist_for(*this,l) _data[l].assign(list[l],is_shared); + } + + //! Construct list by reading the content of a file. + /** + \param filename Filename, as a C-string. + **/ + explicit CImgList(const char *const filename):_width(0),_allocated_width(0),_data(0) { + assign(filename); + } + + //! Construct list from the content of a display window. + /** + \param disp Display window to get content from. + \note Constructed list contains a single image only. + **/ + explicit CImgList(const CImgDisplay& disp):_width(0),_allocated_width(0),_data(0) { + assign(disp); + } + + //! Return a list with elements being shared copies of images in the list instance. + /** + \note list2 = list1.get_shared() is equivalent to list2.assign(list1,true). + **/ + CImgList get_shared() { + CImgList res(_width); + cimglist_for(*this,l) res[l].assign(_data[l],true); + return res; + } + + //! Return a list with elements being shared copies of images in the list instance \const. + const CImgList get_shared() const { + CImgList res(_width); + cimglist_for(*this,l) res[l].assign(_data[l],true); + return res; + } + + //! Destructor \inplace. + /** + \see CImgList(). + **/ + CImgList& assign() { + delete[] _data; + _width = _allocated_width = 0; + _data = 0; + return *this; + } + + //! Destructor \inplace. + /** + Equivalent to assign(). + \note Only here for compatibility with STL naming conventions. + **/ + CImgList& clear() { + return assign(); + } + + //! Construct list containing empty images \inplace. + /** + \see CImgList(unsigned int). + **/ + CImgList& assign(const unsigned int n) { + if (!n) return assign(); + if (_allocated_width(n<<2)) { + delete[] _data; + _data = new CImg[_allocated_width = std::max(16U,(unsigned int)cimg::nearest_pow2(n))]; + } + _width = n; + return *this; + } + + //! Construct list containing images of specified size \inplace. + /** + \see CImgList(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int). + **/ + CImgList& assign(const unsigned int n, const unsigned int width, const unsigned int height=1, + const unsigned int depth=1, const unsigned int spectrum=1) { + assign(n); + cimglist_apply(*this,assign)(width,height,depth,spectrum); + return *this; + } + + //! Construct list containing images of specified size, and initialize pixel values \inplace. + /** + \see CImgList(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, const T). + **/ + CImgList& assign(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, const T& val) { + assign(n); + cimglist_apply(*this,assign)(width,height,depth,spectrum,val); + return *this; + } + + //! Construct list with images of specified size, and initialize pixel values from a sequence of integers \inplace. + /** + \see CImgList(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, const int, const int, ...). + **/ + CImgList& assign(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, const int val0, const int val1, ...) { + _CImgList_stdarg(int); + return *this; + } + + //! Construct list with images of specified size, and initialize pixel values from a sequence of doubles \inplace. + /** + \see CImgList(unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,const double,const double,...). + **/ + CImgList& assign(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, + const double val0, const double val1, ...) { + _CImgList_stdarg(double); + return *this; + } + + //! Construct list containing copies of an input image \inplace. + /** + \see CImgList(unsigned int, const CImg&, bool). + **/ + template + CImgList& assign(const unsigned int n, const CImg& img, const bool is_shared=false) { + assign(n); + cimglist_apply(*this,assign)(img,is_shared); + return *this; + } + + //! Construct list from one image \inplace. + /** + \see CImgList(const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img, const bool is_shared=false) { + assign(1); + _data[0].assign(img,is_shared); + return *this; + } + + //! Construct list from two images \inplace. + /** + \see CImgList(const CImg&, const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const bool is_shared=false) { + assign(2); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); + return *this; + } + + //! Construct list from three images \inplace. + /** + \see CImgList(const CImg&, const CImg&, const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const bool is_shared=false) { + assign(3); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + return *this; + } + + //! Construct list from four images \inplace. + /** + \see CImgList(const CImg&, const CImg&, const CImg&, const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const bool is_shared=false) { + assign(4); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); + return *this; + } + + //! Construct list from five images \inplace. + /** + \see CImgList(const CImg&, const CImg&, const CImg&, const CImg&, const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const bool is_shared=false) { + assign(5); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); + return *this; + } + + //! Construct list from six images \inplace. + /** + \see CImgList(const CImg&,const CImg&,const CImg&,const CImg&,const CImg&,const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const bool is_shared=false) { + assign(6); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + return *this; + } + + //! Construct list from seven images \inplace. + /** + \see CImgList(const CImg&,const CImg&,const CImg&,const CImg&,const CImg&,const CImg&, + const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const CImg& img7, const bool is_shared=false) { + assign(7); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + _data[6].assign(img7,is_shared); + return *this; + } + + //! Construct list from eight images \inplace. + /** + \see CImgList(const CImg&,const CImg&,const CImg&,const CImg&,const CImg&,const CImg&, + const CImg&, const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const CImg& img7, const CImg& img8, + const bool is_shared=false) { + assign(8); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + _data[6].assign(img7,is_shared); _data[7].assign(img8,is_shared); + return *this; + } + + //! Construct list as a copy of an existing list and force the shared state of the list elements \inplace. + /** + \see CImgList(const CImgList&, bool is_shared). + **/ + template + CImgList& assign(const CImgList& list, const bool is_shared=false) { + cimg::unused(is_shared); + assign(list._width); + cimglist_for(*this,l) _data[l].assign(list[l],false); + return *this; + } + + //! Construct list as a copy of an existing list and force shared state of elements \inplace \specialization. + CImgList& assign(const CImgList& list, const bool is_shared=false) { + if (this==&list) return *this; + CImgList res(list._width); + cimglist_for(res,l) res[l].assign(list[l],is_shared); + return res.move_to(*this); + } + + //! Construct list by reading the content of a file \inplace. + /** + \see CImgList(const char *const). + **/ + CImgList& assign(const char *const filename) { + return load(filename); + } + + //! Construct list from the content of a display window \inplace. + /** + \see CImgList(const CImgDisplay&). + **/ + CImgList& assign(const CImgDisplay &disp) { + return assign(CImg(disp)); + } + + //! Transfer the content of the list instance to another list. + /** + \param list Destination list. + \note When returning, the current list instance is empty and the initial content of \c list is destroyed. + **/ + template + CImgList& move_to(CImgList& list) { + list.assign(_width); + bool is_one_shared_element = false; + cimglist_for(*this,l) is_one_shared_element|=_data[l]._is_shared; + if (is_one_shared_element) cimglist_for(*this,l) list[l].assign(_data[l]); + else cimglist_for(*this,l) _data[l].move_to(list[l]); + assign(); + return list; + } + + //! Transfer the content of the list instance at a specified position in another list. + /** + \param list Destination list. + \param pos Index of the insertion in the list. + \note When returning, the list instance is empty and the initial content of \c list is preserved + (only images indexes may be modified). + **/ + template + CImgList& move_to(CImgList& list, const unsigned int pos) { + if (is_empty()) return list; + const unsigned int npos = pos>list._width?list._width:pos; + list.insert(_width,npos); + bool is_one_shared_element = false; + cimglist_for(*this,l) is_one_shared_element|=_data[l]._is_shared; + if (is_one_shared_element) cimglist_for(*this,l) list[npos + l].assign(_data[l]); + else cimglist_for(*this,l) _data[l].move_to(list[npos + l]); + assign(); + return list; + } + + //! Swap all fields between two list instances. + /** + \param list List to swap fields with. + \note Can be used to exchange the content of two lists in a fast way. + **/ + CImgList& swap(CImgList& list) { + cimg::swap(_width,list._width,_allocated_width,list._allocated_width); + cimg::swap(_data,list._data); + return list; + } + + //! Return a reference to an empty list. + /** + \note Can be used to define default values in a function taking a CImgList as an argument. + \code + void f(const CImgList& list=CImgList::empty()); + \endcode + **/ + static CImgList& empty() { + static CImgList _empty; + return _empty.assign(); + } + + //! Return a reference to an empty list \const. + static const CImgList& const_empty() { + static const CImgList _empty; + return _empty; + } + + //@} + //------------------------------------------ + // + //! \name Overloaded Operators + //@{ + //------------------------------------------ + + //! Return a reference to one image element of the list. + /** + \param pos Index of the image element. + **/ + CImg& operator()(const unsigned int pos) { +#if cimg_verbosity>=3 + if (pos>=_width) { + cimg::warn(_cimglist_instance + "operator(): Invalid image request, at position [%u].", + cimglist_instance, + pos); + return *_data; + } +#endif + return _data[pos]; + } + + //! Return a reference to one image of the list. + /** + \param pos Index of the image element. + **/ + const CImg& operator()(const unsigned int pos) const { + return const_cast*>(this)->operator()(pos); + } + + //! Return a reference to one pixel value of one image of the list. + /** + \param pos Index of the image element. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list(n,x,y,z,c) is equivalent to list[n](x,y,z,c). + **/ + T& operator()(const unsigned int pos, const unsigned int x, const unsigned int y=0, + const unsigned int z=0, const unsigned int c=0) { + return (*this)[pos](x,y,z,c); + } + + //! Return a reference to one pixel value of one image of the list \const. + const T& operator()(const unsigned int pos, const unsigned int x, const unsigned int y=0, + const unsigned int z=0, const unsigned int c=0) const { + return (*this)[pos](x,y,z,c); + } + + //! Return pointer to the first image of the list. + /** + \note Images in a list are stored as a buffer of \c CImg. + **/ + operator CImg*() { + return _data; + } + + //! Return pointer to the first image of the list \const. + operator const CImg*() const { + return _data; + } + + //! Construct list from one image \inplace. + /** + \param img Input image to copy in the constructed list. + \note list = img; is equivalent to list.assign(img);. + **/ + template + CImgList& operator=(const CImg& img) { + return assign(img); + } + + //! Construct list from another list. + /** + \param list Input list to copy. + \note list1 = list2 is equivalent to list1.assign(list2);. + **/ + template + CImgList& operator=(const CImgList& list) { + return assign(list); + } + + //! Construct list from another list \specialization. + CImgList& operator=(const CImgList& list) { + return assign(list); + } + + //! Construct list by reading the content of a file \inplace. + /** + \see CImgList(const char *const). + **/ + CImgList& operator=(const char *const filename) { + return assign(filename); + } + + //! Construct list from the content of a display window \inplace. + /** + \see CImgList(const CImgDisplay&). + **/ + CImgList& operator=(const CImgDisplay& disp) { + return assign(disp); + } + + //! Return a non-shared copy of a list. + /** + \note +list is equivalent to CImgList(list,false). + It forces the copy to have non-shared elements. + **/ + CImgList operator+() const { + return CImgList(*this,false); + } + + //! Return a copy of the list instance, where image \c img has been inserted at the end. + /** + \param img Image inserted at the end of the instance copy. + \note Define a convenient way to create temporary lists of images, as in the following code: + \code + (img1,img2,img3,img4).display("My four images"); + \endcode + **/ + template + CImgList& operator,(const CImg& img) { + return insert(img); + } + + //! Return a copy of the list instance, where image \c img has been inserted at the end \const. + template + CImgList operator,(const CImg& img) const { + return (+*this).insert(img); + } + + //! Return a copy of the list instance, where all elements of input list \c list have been inserted at the end. + /** + \param list List inserted at the end of the instance copy. + **/ + template + CImgList& operator,(const CImgList& list) { + return insert(list); + } + + //! Return a copy of the list instance, where all elements of input \c list have been inserted at the end \const. + template + CImgList& operator,(const CImgList& list) const { + return (+*this).insert(list); + } + + //! Return image corresponding to the appending of all images of the instance list along specified axis. + /** + \param axis Appending axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \note list>'x' is equivalent to list.get_append('x'). + **/ + CImg operator>(const char axis) const { + return get_append(axis,0); + } + + //! Return list corresponding to the splitting of all images of the instance list along specified axis. + /** + \param axis Axis used for image splitting. + \note list<'x' is equivalent to list.get_split('x'). + **/ + CImgList operator<(const char axis) const { + return get_split(axis); + } + + //@} + //------------------------------------- + // + //! \name Instance Characteristics + //@{ + //------------------------------------- + + //! Return the type of image pixel values as a C string. + /** + Return a \c char* string containing the usual type name of the image pixel values + (i.e. a stringified version of the template parameter \c T). + \note + - The returned string may contain spaces (as in \c "unsigned char"). + - If the pixel type \c T does not correspond to a registered type, the string "unknown" is returned. + **/ + static const char* pixel_type() { + return cimg::type::string(); + } + + //! Return the size of the list, i.e. the number of images contained in it. + /** + \note Similar to size() but returns result as a (signed) integer. + **/ + int width() const { + return (int)_width; + } + + //! Return the size of the list, i.e. the number of images contained in it. + /** + \note Similar to width() but returns result as an unsigned integer. + **/ + unsigned int size() const { + return _width; + } + + //! Return pointer to the first image of the list. + /** + \note Images in a list are stored as a buffer of \c CImg. + **/ + CImg *data() { + return _data; + } + + //! Return pointer to the first image of the list \const. + const CImg *data() const { + return _data; + } + + //! Return pointer to the pos-th image of the list. + /** + \param pos Index of the image element to access. + \note list.data(n); is equivalent to list.data + n;. + **/ +#if cimg_verbosity>=3 + CImg *data(const unsigned int pos) { + if (pos>=size()) + cimg::warn(_cimglist_instance + "data(): Invalid pointer request, at position [%u].", + cimglist_instance, + pos); + return _data + pos; + } + + const CImg *data(const unsigned int l) const { + return const_cast*>(this)->data(l); + } +#else + CImg *data(const unsigned int l) { + return _data + l; + } + + //! Return pointer to the pos-th image of the list \const. + const CImg *data(const unsigned int l) const { + return _data + l; + } +#endif + + //! Return iterator to the first image of the list. + /** + **/ + iterator begin() { + return _data; + } + + //! Return iterator to the first image of the list \const. + const_iterator begin() const { + return _data; + } + + //! Return iterator to one position after the last image of the list. + /** + **/ + iterator end() { + return _data + _width; + } + + //! Return iterator to one position after the last image of the list \const. + const_iterator end() const { + return _data + _width; + } + + //! Return reference to the first image of the list. + /** + **/ + CImg& front() { + return *_data; + } + + //! Return reference to the first image of the list \const. + const CImg& front() const { + return *_data; + } + + //! Return a reference to the last image of the list. + /** + **/ + const CImg& back() const { + return *(_data + _width - 1); + } + + //! Return a reference to the last image of the list \const. + CImg& back() { + return *(_data + _width - 1); + } + + //! Return pos-th image of the list. + /** + \param pos Index of the image element to access. + **/ + CImg& at(const int pos) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "at(): Empty instance.", + cimglist_instance); + + return _data[cimg::cut(pos,0,width() - 1)]; + } + + //! Access to pixel value with Dirichlet boundary conditions. + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note list.atNXYZC(p,x,y,z,c); is equivalent to list[p].atXYZC(x,y,z,c);. + **/ + T& atNXYZC(const int pos, const int x, const int y, const int z, const int c, const T& out_value) { + return (pos<0 || pos>=width())?(cimg::temporary(out_value)=out_value):_data[pos].atXYZC(x,y,z,c,out_value); + } + + //! Access to pixel value with Dirichlet boundary conditions \const. + T atNXYZC(const int pos, const int x, const int y, const int z, const int c, const T& out_value) const { + return (pos<0 || pos>=width())?out_value:_data[pos].atXYZC(x,y,z,c,out_value); + } + + //! Access to pixel value with Neumann boundary conditions. + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list.atNXYZC(p,x,y,z,c); is equivalent to list[p].atXYZC(x,y,z,c);. + **/ + T& atNXYZC(const int pos, const int x, const int y, const int z, const int c) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXYZC(): Empty instance.", + cimglist_instance); + + return _atNXYZC(pos,x,y,z,c); + } + + //! Access to pixel value with Neumann boundary conditions \const. + T atNXYZC(const int pos, const int x, const int y, const int z, const int c) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXYZC(): Empty instance.", + cimglist_instance); + + return _atNXYZC(pos,x,y,z,c); + } + + T& _atNXYZC(const int pos, const int x, const int y, const int z, const int c) { + return _data[cimg::cut(pos,0,width() - 1)].atXYZC(x,y,z,c); + } + + T _atNXYZC(const int pos, const int x, const int y, const int z, const int c) const { + return _data[cimg::cut(pos,0,width() - 1)].atXYZC(x,y,z,c); + } + + //! Access pixel value with Dirichlet boundary conditions for the 3 coordinates (\c pos, \c x,\c y,\c z). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNXYZ(const int pos, const int x, const int y, const int z, const int c, const T& out_value) { + return (pos<0 || pos>=width())?(cimg::temporary(out_value)=out_value):_data[pos].atXYZ(x,y,z,c,out_value); + } + + //! Access pixel value with Dirichlet boundary conditions for the 3 coordinates (\c pos, \c x,\c y,\c z) \const. + T atNXYZ(const int pos, const int x, const int y, const int z, const int c, const T& out_value) const { + return (pos<0 || pos>=width())?out_value:_data[pos].atXYZ(x,y,z,c,out_value); + } + + //! Access to pixel value with Neumann boundary conditions for the 4 coordinates (\c pos, \c x,\c y,\c z). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNXYZ(const int pos, const int x, const int y, const int z, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXYZ(): Empty instance.", + cimglist_instance); + + return _atNXYZ(pos,x,y,z,c); + } + + //! Access to pixel value with Neumann boundary conditions for the 4 coordinates (\c pos, \c x,\c y,\c z) \const. + T atNXYZ(const int pos, const int x, const int y, const int z, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXYZ(): Empty instance.", + cimglist_instance); + + return _atNXYZ(pos,x,y,z,c); + } + + T& _atNXYZ(const int pos, const int x, const int y, const int z, const int c=0) { + return _data[cimg::cut(pos,0,width() - 1)].atXYZ(x,y,z,c); + } + + T _atNXYZ(const int pos, const int x, const int y, const int z, const int c=0) const { + return _data[cimg::cut(pos,0,width() - 1)].atXYZ(x,y,z,c); + } + + //! Access to pixel value with Dirichlet boundary conditions for the 3 coordinates (\c pos, \c x,\c y). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNXY(const int pos, const int x, const int y, const int z, const int c, const T& out_value) { + return (pos<0 || pos>=width())?(cimg::temporary(out_value)=out_value):_data[pos].atXY(x,y,z,c,out_value); + } + + //! Access to pixel value with Dirichlet boundary conditions for the 3 coordinates (\c pos, \c x,\c y) \const. + T atNXY(const int pos, const int x, const int y, const int z, const int c, const T& out_value) const { + return (pos<0 || pos>=width())?out_value:_data[pos].atXY(x,y,z,c,out_value); + } + + //! Access to pixel value with Neumann boundary conditions for the 3 coordinates (\c pos, \c x,\c y). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNXY(const int pos, const int x, const int y, const int z=0, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXY(): Empty instance.", + cimglist_instance); + + return _atNXY(pos,x,y,z,c); + } + + //! Access to pixel value with Neumann boundary conditions for the 3 coordinates (\c pos, \c x,\c y) \const. + T atNXY(const int pos, const int x, const int y, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXY(): Empty instance.", + cimglist_instance); + + return _atNXY(pos,x,y,z,c); + } + + T& _atNXY(const int pos, const int x, const int y, const int z=0, const int c=0) { + return _data[cimg::cut(pos,0,width() - 1)].atXY(x,y,z,c); + } + + T _atNXY(const int pos, const int x, const int y, const int z=0, const int c=0) const { + return _data[cimg::cut(pos,0,width() - 1)].atXY(x,y,z,c); + } + + //! Access to pixel value with Dirichlet boundary conditions for the 2 coordinates (\c pos,\c x). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNX(const int pos, const int x, const int y, const int z, const int c, const T& out_value) { + return (pos<0 || pos>=width())?(cimg::temporary(out_value)=out_value):_data[pos].atX(x,y,z,c,out_value); + } + + //! Access to pixel value with Dirichlet boundary conditions for the 2 coordinates (\c pos,\c x) \const. + T atNX(const int pos, const int x, const int y, const int z, const int c, const T& out_value) const { + return (pos<0 || pos>=width())?out_value:_data[pos].atX(x,y,z,c,out_value); + } + + //! Access to pixel value with Neumann boundary conditions for the 2 coordinates (\c pos, \c x). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNX(const int pos, const int x, const int y=0, const int z=0, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNX(): Empty instance.", + cimglist_instance); + + return _atNX(pos,x,y,z,c); + } + + //! Access to pixel value with Neumann boundary conditions for the 2 coordinates (\c pos, \c x) \const. + T atNX(const int pos, const int x, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNX(): Empty instance.", + cimglist_instance); + + return _atNX(pos,x,y,z,c); + } + + T& _atNX(const int pos, const int x, const int y=0, const int z=0, const int c=0) { + return _data[cimg::cut(pos,0,width() - 1)].atX(x,y,z,c); + } + + T _atNX(const int pos, const int x, const int y=0, const int z=0, const int c=0) const { + return _data[cimg::cut(pos,0,width() - 1)].atX(x,y,z,c); + } + + //! Access to pixel value with Dirichlet boundary conditions for the coordinate (\c pos). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atN(const int pos, const int x, const int y, const int z, const int c, const T& out_value) { + return (pos<0 || pos>=width())?(cimg::temporary(out_value)=out_value):(*this)(pos,x,y,z,c); + } + + //! Access to pixel value with Dirichlet boundary conditions for the coordinate (\c pos) \const. + T atN(const int pos, const int x, const int y, const int z, const int c, const T& out_value) const { + return (pos<0 || pos>=width())?out_value:(*this)(pos,x,y,z,c); + } + + //! Return pixel value with Neumann boundary conditions for the coordinate (\c pos). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atN(const int pos, const int x=0, const int y=0, const int z=0, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atN(): Empty instance.", + cimglist_instance); + return _atN(pos,x,y,z,c); + } + + //! Return pixel value with Neumann boundary conditions for the coordinate (\c pos) \const. + T atN(const int pos, const int x=0, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atN(): Empty instance.", + cimglist_instance); + return _atN(pos,x,y,z,c); + } + + T& _atN(const int pos, const int x=0, const int y=0, const int z=0, const int c=0) { + return _data[cimg::cut(pos,0,width() - 1)](x,y,z,c); + } + + T _atN(const int pos, const int x=0, const int y=0, const int z=0, const int c=0) const { + return _data[cimg::cut(pos,0,width() - 1)](x,y,z,c); + } + + //@} + //------------------------------------- + // + //! \name Instance Checking + //@{ + //------------------------------------- + + //! Return \c true if list is empty. + /** + **/ + bool is_empty() const { + return (!_data || !_width); + } + + //! Test if number of image elements is equal to specified value. + /** + \param size_n Number of image elements to test. + **/ + bool is_sameN(const unsigned int size_n) const { + return _width==size_n; + } + + //! Test if number of image elements is equal between two images lists. + /** + \param list Input list to compare with. + **/ + template + bool is_sameN(const CImgList& list) const { + return is_sameN(list._width); + } + + // Define useful functions to check list dimensions. + // (cannot be documented because macro-generated). +#define _cimglist_def_is_same1(axis) \ + bool is_same##axis(const unsigned int val) const { \ + bool res = true; \ + for (unsigned int l = 0; l<_width && res; ++l) res = _data[l].is_same##axis(val); \ + return res; \ + } \ + bool is_sameN##axis(const unsigned int n, const unsigned int val) const { \ + return is_sameN(n) && is_same##axis(val); \ + } \ + +#define _cimglist_def_is_same2(axis1,axis2) \ + bool is_same##axis1##axis2(const unsigned int val1, const unsigned int val2) const { \ + bool res = true; \ + for (unsigned int l = 0; l<_width && res; ++l) res = _data[l].is_same##axis1##axis2(val1,val2); \ + return res; \ + } \ + bool is_sameN##axis1##axis2(const unsigned int n, const unsigned int val1, const unsigned int val2) const { \ + return is_sameN(n) && is_same##axis1##axis2(val1,val2); \ + } \ + +#define _cimglist_def_is_same3(axis1,axis2,axis3) \ + bool is_same##axis1##axis2##axis3(const unsigned int val1, const unsigned int val2, \ + const unsigned int val3) const { \ + bool res = true; \ + for (unsigned int l = 0; l<_width && res; ++l) res = _data[l].is_same##axis1##axis2##axis3(val1,val2,val3); \ + return res; \ + } \ + bool is_sameN##axis1##axis2##axis3(const unsigned int n, const unsigned int val1, \ + const unsigned int val2, const unsigned int val3) const { \ + return is_sameN(n) && is_same##axis1##axis2##axis3(val1,val2,val3); \ + } \ + +#define _cimglist_def_is_same(axis) \ + template bool is_same##axis(const CImg& img) const { \ + bool res = true; \ + for (unsigned int l = 0; l<_width && res; ++l) res = _data[l].is_same##axis(img); \ + return res; \ + } \ + template bool is_same##axis(const CImgList& list) const { \ + const unsigned int lmin = std::min(_width,list._width); \ + bool res = true; \ + for (unsigned int l = 0; l bool is_sameN##axis(const unsigned int n, const CImg& img) const { \ + return (is_sameN(n) && is_same##axis(img)); \ + } \ + template bool is_sameN##axis(const CImgList& list) const { \ + return (is_sameN(list) && is_same##axis(list)); \ + } + + _cimglist_def_is_same(XY) + _cimglist_def_is_same(XZ) + _cimglist_def_is_same(XC) + _cimglist_def_is_same(YZ) + _cimglist_def_is_same(YC) + _cimglist_def_is_same(XYZ) + _cimglist_def_is_same(XYC) + _cimglist_def_is_same(YZC) + _cimglist_def_is_same(XYZC) + _cimglist_def_is_same1(X) + _cimglist_def_is_same1(Y) + _cimglist_def_is_same1(Z) + _cimglist_def_is_same1(C) + _cimglist_def_is_same2(X,Y) + _cimglist_def_is_same2(X,Z) + _cimglist_def_is_same2(X,C) + _cimglist_def_is_same2(Y,Z) + _cimglist_def_is_same2(Y,C) + _cimglist_def_is_same2(Z,C) + _cimglist_def_is_same3(X,Y,Z) + _cimglist_def_is_same3(X,Y,C) + _cimglist_def_is_same3(X,Z,C) + _cimglist_def_is_same3(Y,Z,C) + + //! Test if dimensions of each image of the list match specified arguments. + /** + \param dx Checked image width. + \param dy Checked image height. + \param dz Checked image depth. + \param dc Checked image spectrum. + **/ + bool is_sameXYZC(const unsigned int dx, const unsigned int dy, + const unsigned int dz, const unsigned int dc) const { + bool res = true; + for (unsigned int l = 0; l<_width && res; ++l) res = _data[l].is_sameXYZC(dx,dy,dz,dc); + return res; + } + + //! Test if list dimensions match specified arguments. + /** + \param n Number of images in the list. + \param dx Checked image width. + \param dy Checked image height. + \param dz Checked image depth. + \param dc Checked image spectrum. + **/ + bool is_sameNXYZC(const unsigned int n, + const unsigned int dx, const unsigned int dy, + const unsigned int dz, const unsigned int dc) const { + return is_sameN(n) && is_sameXYZC(dx,dy,dz,dc); + } + + //! Test if list contains one particular pixel location. + /** + \param n Index of the image whom checked pixel value belong to. + \param x X-coordinate of the checked pixel value. + \param y Y-coordinate of the checked pixel value. + \param z Z-coordinate of the checked pixel value. + \param c C-coordinate of the checked pixel value. + **/ + bool containsNXYZC(const int n, const int x=0, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) return false; + return n>=0 && n=0 && x<_data[n].width() && y>=0 && y<_data[n].height() && + z>=0 && z<_data[n].depth() && c>=0 && c<_data[n].spectrum(); + } + + //! Test if list contains image with specified index. + /** + \param n Index of the checked image. + **/ + bool containsN(const int n) const { + if (is_empty()) return false; + return n>=0 && n + bool contains(const T& pixel, t& n, t& x, t&y, t& z, t& c) const { + if (is_empty()) return false; + cimglist_for(*this,l) if (_data[l].contains(pixel,x,y,z,c)) { n = (t)l; return true; } + return false; + } + + //! Test if one of the image list contains the specified referenced value. + /** + \param pixel Reference to pixel value to test. + \param[out] n Index of image containing the pixel value, if test succeeds. + \param[out] x X-coordinate of the pixel value, if test succeeds. + \param[out] y Y-coordinate of the pixel value, if test succeeds. + \param[out] z Z-coordinate of the pixel value, if test succeeds. + \note If true, set coordinates (n,x,y,z). + **/ + template + bool contains(const T& pixel, t& n, t& x, t&y, t& z) const { + t c; + return contains(pixel,n,x,y,z,c); + } + + //! Test if one of the image list contains the specified referenced value. + /** + \param pixel Reference to pixel value to test. + \param[out] n Index of image containing the pixel value, if test succeeds. + \param[out] x X-coordinate of the pixel value, if test succeeds. + \param[out] y Y-coordinate of the pixel value, if test succeeds. + \note If true, set coordinates (n,x,y). + **/ + template + bool contains(const T& pixel, t& n, t& x, t&y) const { + t z, c; + return contains(pixel,n,x,y,z,c); + } + + //! Test if one of the image list contains the specified referenced value. + /** + \param pixel Reference to pixel value to test. + \param[out] n Index of image containing the pixel value, if test succeeds. + \param[out] x X-coordinate of the pixel value, if test succeeds. + \note If true, set coordinates (n,x). + **/ + template + bool contains(const T& pixel, t& n, t& x) const { + t y, z, c; + return contains(pixel,n,x,y,z,c); + } + + //! Test if one of the image list contains the specified referenced value. + /** + \param pixel Reference to pixel value to test. + \param[out] n Index of image containing the pixel value, if test succeeds. + \note If true, set coordinates (n). + **/ + template + bool contains(const T& pixel, t& n) const { + t x, y, z, c; + return contains(pixel,n,x,y,z,c); + } + + //! Test if one of the image list contains the specified referenced value. + /** + \param pixel Reference to pixel value to test. + **/ + bool contains(const T& pixel) const { + unsigned int n, x, y, z, c; + return contains(pixel,n,x,y,z,c); + } + + //! Test if the list contains the image 'img'. + /** + \param img Reference to image to test. + \param[out] n Index of image in the list, if test succeeds. + \note If true, returns the position (n) of the image in the list. + **/ + template + bool contains(const CImg& img, t& n) const { + if (is_empty()) return false; + const CImg *const ptr = &img; + cimglist_for(*this,i) if (_data + i==ptr) { n = (t)i; return true; } + return false; + } + + //! Test if the list contains the image img. + /** + \param img Reference to image to test. + **/ + bool contains(const CImg& img) const { + unsigned int n; + return contains(img,n); + } + + //@} + //------------------------------------- + // + //! \name Mathematical Functions + //@{ + //------------------------------------- + + //! Return a reference to the minimum pixel value of the instance list. + /** + **/ + T& min() { + bool is_all_empty = true; + T *ptr_min = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_min = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "min(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T min_value = *ptr_min; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) if (*ptrs& img = _data[l]; + cimg_for(img,ptrs,T) if (*ptrs& img = _data[l]; + cimg_for(img,ptrs,T) if (*ptrs>max_value) max_value = *(ptr_max=ptrs); + } + return *ptr_max; + } + + //! Return a reference to the maximum pixel value of the instance list \const. + const T& max() const { + bool is_all_empty = true; + T *ptr_max = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_max = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "max(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T max_value = *ptr_max; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) if (*ptrs>max_value) max_value = *(ptr_max=ptrs); + } + return *ptr_max; + } + + //! Return a reference to the minimum pixel value of the instance list and return the maximum vvalue as well. + /** + \param[out] max_val Value of the maximum value found. + **/ + template + T& min_max(t& max_val) { + bool is_all_empty = true; + T *ptr_min = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_min = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "min_max(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T min_value = *ptr_min, max_value = min_value; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) { + const T val = *ptrs; + if (valmax_value) max_value = val; + } + } + max_val = (t)max_value; + return *ptr_min; + } + + //! Return a reference to the minimum pixel value of the instance list and return the maximum vvalue as well \const. + /** + \param[out] max_val Value of the maximum value found. + **/ + template + const T& min_max(t& max_val) const { + bool is_all_empty = true; + T *ptr_min = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_min = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "min_max(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T min_value = *ptr_min, max_value = min_value; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) { + const T val = *ptrs; + if (valmax_value) max_value = val; + } + } + max_val = (t)max_value; + return *ptr_min; + } + + //! Return a reference to the minimum pixel value of the instance list and return the minimum value as well. + /** + \param[out] min_val Value of the minimum value found. + **/ + template + T& max_min(t& min_val) { + bool is_all_empty = true; + T *ptr_max = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_max = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "max_min(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T min_value = *ptr_max, max_value = min_value; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) { + const T val = *ptrs; + if (val>max_value) { max_value = val; ptr_max = ptrs; } + if (val + const T& max_min(t& min_val) const { + bool is_all_empty = true; + T *ptr_max = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_max = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "max_min(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T min_value = *ptr_max, max_value = min_value; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) { + const T val = *ptrs; + if (val>max_value) { max_value = val; ptr_max = ptrs; } + if (val + CImgList& insert(const CImg& img, const unsigned int pos=~0U, const bool is_shared=false) { + const unsigned int npos = pos==~0U?_width:pos; + if (npos>_width) + throw CImgArgumentException(_cimglist_instance + "insert(): Invalid insertion request of specified image (%u,%u,%u,%u,%p) " + "at position %u.", + cimglist_instance, + img._width,img._height,img._depth,img._spectrum,img._data,npos); + if (is_shared) + throw CImgArgumentException(_cimglist_instance + "insert(): Invalid insertion request of specified shared image " + "CImg<%s>(%u,%u,%u,%u,%p) at position %u (pixel types are different).", + cimglist_instance, + img.pixel_type(),img._width,img._height,img._depth,img._spectrum,img._data,npos); + + CImg *const new_data = (++_width>_allocated_width)?new CImg[_allocated_width?(_allocated_width<<=1): + (_allocated_width=16)]:0; + if (!_data) { // Insert new element into empty list + _data = new_data; + *_data = img; + } else { + if (new_data) { // Insert with re-allocation + if (npos) std::memcpy((void*)new_data,(void*)_data,sizeof(CImg)*npos); + if (npos!=_width - 1) + std::memcpy((void*)(new_data + npos + 1),(void*)(_data + npos),sizeof(CImg)*(_width - 1 - npos)); + std::memset((void*)_data,0,sizeof(CImg)*(_width - 1)); + delete[] _data; + _data = new_data; + } else if (npos!=_width - 1) // Insert without re-allocation + std::memmove((void*)(_data + npos + 1),(void*)(_data + npos),sizeof(CImg)*(_width - 1 - npos)); + _data[npos]._width = _data[npos]._height = _data[npos]._depth = _data[npos]._spectrum = 0; + _data[npos]._data = 0; + _data[npos] = img; + } + return *this; + } + + //! Insert a copy of the image \c img into the current image list, at position \c pos \specialization. + CImgList& insert(const CImg& img, const unsigned int pos=~0U, const bool is_shared=false) { + const unsigned int npos = pos==~0U?_width:pos; + if (npos>_width) + throw CImgArgumentException(_cimglist_instance + "insert(): Invalid insertion request of specified image (%u,%u,%u,%u,%p) " + "at position %u.", + cimglist_instance, + img._width,img._height,img._depth,img._spectrum,img._data,npos); + CImg *const new_data = (++_width>_allocated_width)?new CImg[_allocated_width?(_allocated_width<<=1): + (_allocated_width=16)]:0; + if (!_data) { // Insert new element into empty list + _data = new_data; + if (is_shared && img) { + _data->_width = img._width; + _data->_height = img._height; + _data->_depth = img._depth; + _data->_spectrum = img._spectrum; + _data->_is_shared = true; + _data->_data = img._data; + } else *_data = img; + } + else { + if (new_data) { // Insert with re-allocation + if (npos) std::memcpy((void*)new_data,(void*)_data,sizeof(CImg)*npos); + if (npos!=_width - 1) + std::memcpy((void*)(new_data + npos + 1),(void*)(_data + npos),sizeof(CImg)*(_width - 1 - npos)); + if (is_shared && img) { + new_data[npos]._width = img._width; + new_data[npos]._height = img._height; + new_data[npos]._depth = img._depth; + new_data[npos]._spectrum = img._spectrum; + new_data[npos]._is_shared = true; + new_data[npos]._data = img._data; + } else { + new_data[npos]._width = new_data[npos]._height = new_data[npos]._depth = new_data[npos]._spectrum = 0; + new_data[npos]._data = 0; + new_data[npos] = img; + } + std::memset((void*)_data,0,sizeof(CImg)*(_width - 1)); + delete[] _data; + _data = new_data; + } else { // Insert without re-allocation + if (npos!=_width - 1) + std::memmove((void*)(_data + npos + 1),(void*)(_data + npos),sizeof(CImg)*(_width - 1 - npos)); + if (is_shared && img) { + _data[npos]._width = img._width; + _data[npos]._height = img._height; + _data[npos]._depth = img._depth; + _data[npos]._spectrum = img._spectrum; + _data[npos]._is_shared = true; + _data[npos]._data = img._data; + } else { + _data[npos]._width = _data[npos]._height = _data[npos]._depth = _data[npos]._spectrum = 0; + _data[npos]._data = 0; + _data[npos] = img; + } + } + } + return *this; + } + + //! Insert a copy of the image \c img into the current image list, at position \c pos \newinstance. + template + CImgList get_insert(const CImg& img, const unsigned int pos=~0U, const bool is_shared=false) const { + return (+*this).insert(img,pos,is_shared); + } + + //! Insert n empty images img into the current image list, at position \p pos. + /** + \param n Number of empty images to insert. + \param pos Index of the insertion. + **/ + CImgList& insert(const unsigned int n, const unsigned int pos=~0U) { + CImg empty; + if (!n) return *this; + const unsigned int npos = pos==~0U?_width:pos; + for (unsigned int i = 0; i get_insert(const unsigned int n, const unsigned int pos=~0U) const { + return (+*this).insert(n,pos); + } + + //! Insert \c n copies of the image \c img into the current image list, at position \c pos. + /** + \param n Number of image copies to insert. + \param img Image to insert by copy. + \param pos Index of the insertion. + \param is_shared Tells if inserted images are shared copies of \c img or not. + **/ + template + CImgList& insert(const unsigned int n, const CImg& img, const unsigned int pos=~0U, + const bool is_shared=false) { + if (!n) return *this; + const unsigned int npos = pos==~0U?_width:pos; + insert(img,npos,is_shared); + for (unsigned int i = 1; i + CImgList get_insert(const unsigned int n, const CImg& img, const unsigned int pos=~0U, + const bool is_shared=false) const { + return (+*this).insert(n,img,pos,is_shared); + } + + //! Insert a copy of the image list \c list into the current image list, starting from position \c pos. + /** + \param list Image list to insert. + \param pos Index of the insertion. + \param is_shared Tells if inserted images are shared copies of images of \c list or not. + **/ + template + CImgList& insert(const CImgList& list, const unsigned int pos=~0U, const bool is_shared=false) { + const unsigned int npos = pos==~0U?_width:pos; + if ((void*)this!=(void*)&list) cimglist_for(list,l) insert(list[l],npos + l,is_shared); + else insert(CImgList(list),npos,is_shared); + return *this; + } + + //! Insert a copy of the image list \c list into the current image list, starting from position \c pos \newinstance. + template + CImgList get_insert(const CImgList& list, const unsigned int pos=~0U, const bool is_shared=false) const { + return (+*this).insert(list,pos,is_shared); + } + + //! Insert n copies of the list \c list at position \c pos of the current list. + /** + \param n Number of list copies to insert. + \param list Image list to insert. + \param pos Index of the insertion. + \param is_shared Tells if inserted images are shared copies of images of \c list or not. + **/ + template + CImgList& insert(const unsigned int n, const CImgList& list, const unsigned int pos=~0U, + const bool is_shared=false) { + if (!n) return *this; + const unsigned int npos = pos==~0U?_width:pos; + for (unsigned int i = 0; i + CImgList get_insert(const unsigned int n, const CImgList& list, const unsigned int pos=~0U, + const bool is_shared=false) const { + return (+*this).insert(n,list,pos,is_shared); + } + + //! Remove all images between from indexes. + /** + \param pos1 Starting index of the removal. + \param pos2 Ending index of the removal. + **/ + CImgList& remove(const unsigned int pos1, const unsigned int pos2) { + const unsigned int + npos1 = pos1=_width) + throw CImgArgumentException(_cimglist_instance + "remove(): Invalid remove request at positions %u->%u.", + cimglist_instance, + npos1,tpos2); + else { + if (tpos2>=_width) + throw CImgArgumentException(_cimglist_instance + "remove(): Invalid remove request at positions %u->%u.", + cimglist_instance, + npos1,tpos2); + + for (unsigned int k = npos1; k<=npos2; ++k) _data[k].assign(); + const unsigned int nb = 1 + npos2 - npos1; + if (!(_width-=nb)) return assign(); + if (_width>(_allocated_width>>4) || _allocated_width<=16) { // Removing items without reallocation + if (npos1!=_width) + std::memmove((void*)(_data + npos1),(void*)(_data + npos2 + 1),sizeof(CImg)*(_width - npos1)); + std::memset((void*)(_data + _width),0,sizeof(CImg)*nb); + } else { // Removing items with reallocation + _allocated_width>>=4; + while (_allocated_width>16 && _width<(_allocated_width>>1)) _allocated_width>>=1; + CImg *const new_data = new CImg[_allocated_width]; + if (npos1) std::memcpy((void*)new_data,(void*)_data,sizeof(CImg)*npos1); + if (npos1!=_width) + std::memcpy((void*)(new_data + npos1),(void*)(_data + npos2 + 1),sizeof(CImg)*(_width - npos1)); + if (_width!=_allocated_width) + std::memset((void*)(new_data + _width),0,sizeof(CImg)*(_allocated_width - _width)); + std::memset((void*)_data,0,sizeof(CImg)*(_width + nb)); + delete[] _data; + _data = new_data; + } + } + return *this; + } + + //! Remove all images between from indexes \newinstance. + CImgList get_remove(const unsigned int pos1, const unsigned int pos2) const { + return (+*this).remove(pos1,pos2); + } + + //! Remove image at index \c pos from the image list. + /** + \param pos Index of the image to remove. + **/ + CImgList& remove(const unsigned int pos) { + return remove(pos,pos); + } + + //! Remove image at index \c pos from the image list \newinstance. + CImgList get_remove(const unsigned int pos) const { + return (+*this).remove(pos); + } + + //! Remove last image. + /** + **/ + CImgList& remove() { + return remove(_width - 1); + } + + //! Remove last image \newinstance. + CImgList get_remove() const { + return (+*this).remove(); + } + + //! Reverse list order. + CImgList& reverse() { + for (unsigned int l = 0; l<_width/2; ++l) (*this)[l].swap((*this)[_width - 1 - l]); + return *this; + } + + //! Reverse list order \newinstance. + CImgList get_reverse() const { + return (+*this).reverse(); + } + + //! Return a sublist. + /** + \param pos0 Starting index of the sublist. + \param pos1 Ending index of the sublist. + **/ + CImgList& images(const unsigned int pos0, const unsigned int pos1) { + return get_images(pos0,pos1).move_to(*this); + } + + //! Return a sublist \newinstance. + CImgList get_images(const unsigned int pos0, const unsigned int pos1) const { + if (pos0>pos1 || pos1>=_width) + throw CImgArgumentException(_cimglist_instance + "images(): Specified sub-list indices (%u->%u) are out of bounds.", + cimglist_instance, + pos0,pos1); + CImgList res(pos1 - pos0 + 1); + cimglist_for(res,l) res[l].assign(_data[pos0 + l]); + return res; + } + + //! Return a shared sublist. + /** + \param pos0 Starting index of the sublist. + \param pos1 Ending index of the sublist. + **/ + CImgList get_shared_images(const unsigned int pos0, const unsigned int pos1) { + if (pos0>pos1 || pos1>=_width) + throw CImgArgumentException(_cimglist_instance + "get_shared_images(): Specified sub-list indices (%u->%u) are out of bounds.", + cimglist_instance, + pos0,pos1); + CImgList res(pos1 - pos0 + 1); + cimglist_for(res,l) res[l].assign(_data[pos0 + l],_data[pos0 + l]?true:false); + return res; + } + + //! Return a shared sublist \newinstance. + const CImgList get_shared_images(const unsigned int pos0, const unsigned int pos1) const { + if (pos0>pos1 || pos1>=_width) + throw CImgArgumentException(_cimglist_instance + "get_shared_images(): Specified sub-list indices (%u->%u) are out of bounds.", + cimglist_instance, + pos0,pos1); + CImgList res(pos1 - pos0 + 1); + cimglist_for(res,l) res[l].assign(_data[pos0 + l],_data[pos0 + l]?true:false); + return res; + } + + //! Return a single image which is the appending of all images of the current CImgList instance. + /** + \param axis Appending axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg get_append(const char axis, const float align=0) const { + if (is_empty()) return CImg(); + if (_width==1) return +((*this)[0]); + unsigned int dx = 0, dy = 0, dz = 0, dc = 0, pos = 0; + CImg res; + switch (cimg::lowercase(axis)) { + case 'x' : { // Along the X-axis + cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + dx+=img._width; + dy = std::max(dy,img._height); + dz = std::max(dz,img._depth); + dc = std::max(dc,img._spectrum); + } + } + res.assign(dx,dy,dz,dc,(T)0); + if (res) cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + if (img._height==1 && img._depth==1 && img._spectrum==1 && + res._height==1 && res._depth==1 && res._spectrum==1) + std::memcpy(&res[pos],img._data,sizeof(T)*img._width); + else + res.draw_image(pos, + (int)(align*(dy - img._height)), + (int)(align*(dz - img._depth)), + (int)(align*(dc - img._spectrum)), + img); + } + pos+=img._width; + } + } break; + case 'y' : { // Along the Y-axis + cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + dx = std::max(dx,img._width); + dy+=img._height; + dz = std::max(dz,img._depth); + dc = std::max(dc,img._spectrum); + } + } + res.assign(dx,dy,dz,dc,(T)0); + if (res) cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + if (img._width==1 && img._depth==1 && img._spectrum==1 && + res._width==1 && res._depth==1 && res._spectrum==1) + std::memcpy(&res[pos],img._data,sizeof(T)*img._height); + else + res.draw_image((int)(align*(dx - img._width)), + pos, + (int)(align*(dz - img._depth)), + (int)(align*(dc - img._spectrum)), + img); + } + pos+=img._height; + } + } break; + case 'z' : { // Along the Z-axis + cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + dx = std::max(dx,img._width); + dy = std::max(dy,img._height); + dz+=img._depth; + dc = std::max(dc,img._spectrum); + } + } + res.assign(dx,dy,dz,dc,(T)0); + if (res) cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + if (img._width==1 && img._height==1 && img._spectrum==1 && + res._width==1 && res._height==1 && res._spectrum==1) + std::memcpy(&res[pos],img._data,sizeof(T)*img._depth); + else + res.draw_image((int)(align*(dx - img._width)), + (int)(align*(dy - img._height)), + pos, + (int)(align*(dc - img._spectrum)), + img); + } + pos+=img._depth; + } + } break; + default : { // Along the C-axis + cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + dx = std::max(dx,img._width); + dy = std::max(dy,img._height); + dz = std::max(dz,img._depth); + dc+=img._spectrum; + } + } + res.assign(dx,dy,dz,dc,(T)0); + if (res) cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + if (img._width==1 && img._height==1 && img._depth==1 && + res._width==1 && res._height==1 && res._depth==1) + std::memcpy(&res[pos],img._data,sizeof(T)*img._spectrum); + else + res.draw_image((int)(align*(dx - img._width)), + (int)(align*(dy - img._height)), + (int)(align*(dz - img._depth)), + pos, + img); + } + pos+=img._spectrum; + } + } + } + return res; + } + + //! Return a list where each image has been split along the specified axis. + /** + \param axis Axis to split images along. + \param nb Number of split parts for each image. + **/ + CImgList& split(const char axis, const int nb=-1) { + return get_split(axis,nb).move_to(*this); + } + + //! Return a list where each image has been split along the specified axis \newinstance. + CImgList get_split(const char axis, const int nb=-1) const { + CImgList res; + cimglist_for(*this,l) _data[l].get_split(axis,nb).move_to(res,~0U); + return res; + } + + //! Insert image at the end of the list. + /** + \param img Image to insert. + **/ + template + CImgList& push_back(const CImg& img) { + return insert(img); + } + + //! Insert image at the front of the list. + /** + \param img Image to insert. + **/ + template + CImgList& push_front(const CImg& img) { + return insert(img,0); + } + + //! Insert list at the end of the current list. + /** + \param list List to insert. + **/ + template + CImgList& push_back(const CImgList& list) { + return insert(list); + } + + //! Insert list at the front of the current list. + /** + \param list List to insert. + **/ + template + CImgList& push_front(const CImgList& list) { + return insert(list,0); + } + + //! Remove last image. + /** + **/ + CImgList& pop_back() { + return remove(_width - 1); + } + + //! Remove first image. + /** + **/ + CImgList& pop_front() { + return remove(0); + } + + //! Remove image pointed by iterator. + /** + \param iter Iterator pointing to the image to remove. + **/ + CImgList& erase(const iterator iter) { + return remove(iter - _data); + } + + //@} + //---------------------------------- + // + //! \name Data Input + //@{ + //---------------------------------- + + //! Display a simple interactive interface to select images or sublists. + /** + \param disp Window instance to display selection and user interface. + \param feature_type Can be \c false to select a single image, or \c true to select a sublist. + \param axis Axis along whom images are appended for visualization. + \param align Alignment setting when images have not all the same size. + \param exit_on_anykey Exit function when any key is pressed. + \return A one-column vector containing the selected image indexes. + **/ + CImg get_select(CImgDisplay &disp, const bool feature_type=true, + const char axis='x', const float align=0, + const bool exit_on_anykey=false) const { + return _select(disp,0,feature_type,axis,align,exit_on_anykey,0,false,false,false); + } + + //! Display a simple interactive interface to select images or sublists. + /** + \param title Title of a new window used to display selection and user interface. + \param feature_type Can be \c false to select a single image, or \c true to select a sublist. + \param axis Axis along whom images are appended for visualization. + \param align Alignment setting when images have not all the same size. + \param exit_on_anykey Exit function when any key is pressed. + \return A one-column vector containing the selected image indexes. + **/ + CImg get_select(const char *const title, const bool feature_type=true, + const char axis='x', const float align=0, + const bool exit_on_anykey=false) const { + CImgDisplay disp; + return _select(disp,title,feature_type,axis,align,exit_on_anykey,0,false,false,false); + } + + CImg _select(CImgDisplay &disp, const char *const title, const bool feature_type, + const char axis, const float align, const bool exit_on_anykey, + const unsigned int orig, const bool resize_disp, + const bool exit_on_rightbutton, const bool exit_on_wheel) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "select(): Empty instance.", + cimglist_instance); + + // Create image correspondence table and get list dimensions for visualization. + CImgList _indices; + unsigned int max_width = 0, max_height = 0, sum_width = 0, sum_height = 0; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + const unsigned int + w = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,false), + h = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,true); + if (w>max_width) max_width = w; + if (h>max_height) max_height = h; + sum_width+=w; sum_height+=h; + if (axis=='x') CImg(w,1,1,1,(unsigned int)l).move_to(_indices); + else CImg(h,1,1,1,(unsigned int)l).move_to(_indices); + } + const CImg indices0 = _indices>'x'; + + // Create display window. + if (!disp) { + if (axis=='x') disp.assign(cimg_fitscreen(sum_width,max_height,1),title?title:0,1); + else disp.assign(cimg_fitscreen(max_width,sum_height,1),title?title:0,1); + if (!title) disp.set_title("CImgList<%s> (%u)",pixel_type(),_width); + } else { + if (title) disp.set_title("%s",title); + disp.move_inside_screen(); + } + if (resize_disp) { + if (axis=='x') disp.resize(cimg_fitscreen(sum_width,max_height,1),false); + else disp.resize(cimg_fitscreen(max_width,sum_height,1),false); + } + + const unsigned int old_normalization = disp.normalization(); + bool old_is_resized = disp.is_resized(); + disp._normalization = 0; + disp.show().set_key(0).show_mouse(); + static const unsigned char foreground_color[] = { 255,255,255 }, background_color[] = { 0,0,0 }; + + // Enter event loop. + CImg visu0, visu; + CImg indices; + CImg positions(_width,4,1,1,-1); + int oindex0 = -1, oindex1 = -1, index0 = -1, index1 = -1; + bool is_clicked = false, is_selected = false, text_down = false, update_display = true; + unsigned int key = 0, font_size = 32; + + while (!is_selected && !disp.is_closed() && !key) { + + // Create background image. + if (!visu0) { + visu0.assign(disp._width,disp._height,1,3,0); visu.assign(); + (indices0.get_resize(axis=='x'?visu0._width:visu0._height,1)).move_to(indices); + unsigned int _ind = 0; + const CImg onexone(1,1,1,1,(T)0); + if (axis=='x') + cimg_pragma_openmp(parallel for cimg_openmp_if_size(_width,4)) + cimglist_for(*this,ind) { + unsigned int x0 = 0; + while (x0 &src = _data[ind]?_data[ind]:onexone; + CImg res; + src._get_select(disp,old_normalization,src._width/2,src._height/2,src._depth/2). + move_to(res); + const unsigned int h = CImgDisplay::_fitscreen(res._width,res._height,1,128,-85,true); + res.resize(x1 - x0,std::max(32U,h*disp._height/max_height),1,res._spectrum==1?3:-100); + positions(ind,0) = positions(ind,2) = (int)x0; + positions(ind,1) = positions(ind,3) = (int)(align*(visu0.height() - res.height())); + positions(ind,2)+=res._width; + positions(ind,3)+=res._height - 1; + visu0.draw_image(positions(ind,0),positions(ind,1),res); + } + else + cimg_pragma_openmp(parallel for cimg_openmp_if_size(_width,4)) + cimglist_for(*this,ind) { + unsigned int y0 = 0; + while (y0 &src = _data[ind]?_data[ind]:onexone; + CImg res; + src._get_select(disp,old_normalization,(src._width - 1)/2,(src._height - 1)/2,(src._depth - 1)/2). + move_to(res); + const unsigned int w = CImgDisplay::_fitscreen(res._width,res._height,1,128,-85,false); + res.resize(std::max(32U,w*disp._width/max_width),y1 - y0,1,res._spectrum==1?3:-100); + positions(ind,0) = positions(ind,2) = (int)(align*(visu0.width() - res.width())); + positions(ind,1) = positions(ind,3) = (int)y0; + positions(ind,2)+=res._width - 1; + positions(ind,3)+=res._height; + visu0.draw_image(positions(ind,0),positions(ind,1),res); + } + if (axis=='x') --positions(_ind,2); else --positions(_ind,3); + update_display = true; + } + + if (!visu || oindex0!=index0 || oindex1!=index1) { + if (index0>=0 && index1>=0) { + visu.assign(visu0,false); + const int indm = std::min(index0,index1), indM = std::max(index0,index1); + for (int ind = indm; ind<=indM; ++ind) if (positions(ind,0)>=0) { + visu.draw_rectangle(positions(ind,0),positions(ind,1),positions(ind,2),positions(ind,3), + background_color,0.2f); + if ((axis=='x' && positions(ind,2) - positions(ind,0)>=8) || + (axis!='x' && positions(ind,3) - positions(ind,1)>=8)) + visu.draw_rectangle(positions(ind,0),positions(ind,1),positions(ind,2),positions(ind,3), + foreground_color,0.9f,0xAAAAAAAA); + } + if (is_clicked) visu.__draw_text(" Images #%u - #%u, Size = %u ",font_size,(int)text_down, + orig + indm,orig + indM,indM - indm + 1); + else visu.__draw_text(" Image #%u (%u,%u,%u,%u) ",font_size,(int)text_down, + orig + index0, + _data[index0]._width, + _data[index0]._height, + _data[index0]._depth, + _data[index0]._spectrum); + update_display = true; + } else visu.assign(); + } + if (!visu) { visu.assign(visu0,true); update_display = true; } + if (update_display) { visu.display(disp); update_display = false; } + disp.wait(); + + // Manage user events. + const int xm = disp.mouse_x(), ym = disp.mouse_y(); + int index = -1; + + if (xm>=0) { + index = (int)indices(axis=='x'?xm:ym); + if (disp.button()&1) { + if (!is_clicked) { is_clicked = true; oindex0 = index0; index0 = index; } + oindex1 = index1; index1 = index; + if (!feature_type) is_selected = true; + } else { + if (!is_clicked) { oindex0 = oindex1 = index0; index0 = index1 = index; } + else is_selected = true; + } + } else { + if (is_clicked) { + if (!(disp.button()&1)) { is_clicked = is_selected = false; index0 = index1 = -1; } + else index1 = -1; + } else index0 = index1 = -1; + } + + if (disp.button()&4) { is_clicked = is_selected = false; index0 = index1 = -1; } + if (disp.button()&2 && exit_on_rightbutton) { is_selected = true; index1 = index0 = -1; } + if (disp.wheel() && exit_on_wheel) is_selected = true; + + CImg filename(32); + switch (key = disp.key()) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : +#endif + case 0 : case cimg::keyCTRLLEFT : key = 0; break; + case cimg::keyD : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,false), + CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,true),false). + _is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyC : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(2*disp.width()/3,2*disp.height()/3,1),false)._is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyR : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(axis=='x'?sum_width:max_width,axis=='x'?max_height:sum_height,1),false). + _is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyF : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.resize(disp.screen_width(),disp.screen_height(),false).toggle_fullscreen()._is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyS : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.bmp",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + if (visu0) { + (+visu0).__draw_text(" Saving snapshot... ",font_size,(int)text_down).display(disp); + visu0.save(filename); + (+visu0).__draw_text(" Snapshot '%s' saved. ",font_size,(int)text_down,filename._data).display(disp); + } + disp.set_key(key,false).wait(); key = 0; + } break; + case cimg::keyO : + if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + std::FILE *file; + do { +#ifdef cimg_use_zlib + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimgz",snap_number++); +#else + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimg",snap_number++); +#endif + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu0).__draw_text(" Saving instance... ",font_size,(int)text_down).display(disp); + save(filename); + (+visu0).__draw_text(" Instance '%s' saved. ",font_size,(int)text_down,filename._data).display(disp); + disp.set_key(key,false).wait(); key = 0; + } break; + } + if (disp.is_resized()) { disp.resize(false); visu0.assign(); } + if (ym>=0 && ym<13) { if (!text_down) { visu.assign(); text_down = true; }} + else if (ym>=visu.height() - 13) { if (text_down) { visu.assign(); text_down = false; }} + if (!exit_on_anykey && key && key!=cimg::keyESC && + (key!=cimg::keyW || (!disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT()))) { + key = 0; + } + } + CImg res(1,2,1,1,-1); + if (is_selected) { + if (feature_type) res.fill(std::min(index0,index1),std::max(index0,index1)); + else res.fill(index0); + } + if (!(disp.button()&2)) disp.set_button(); + disp._normalization = old_normalization; + disp._is_resized = old_is_resized; + disp.set_key(key); + return res; + } + + //! Load a list from a file. + /** + \param filename Filename to read data from. + **/ + CImgList& load(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "load(): Specified filename is (null).", + cimglist_instance); + + if (!cimg::strncasecmp(filename,"http://",7) || !cimg::strncasecmp(filename,"https://",8)) { + CImg filename_local(256); + load(cimg::load_network(filename,filename_local)); + std::remove(filename_local); + return *this; + } + + const bool is_stdin = *filename=='-' && (!filename[1] || filename[1]=='.'); + const char *const ext = cimg::split_filename(filename); + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + bool is_loaded = true; + try { +#ifdef cimglist_load_plugin + cimglist_load_plugin(filename); +#endif +#ifdef cimglist_load_plugin1 + cimglist_load_plugin1(filename); +#endif +#ifdef cimglist_load_plugin2 + cimglist_load_plugin2(filename); +#endif +#ifdef cimglist_load_plugin3 + cimglist_load_plugin3(filename); +#endif +#ifdef cimglist_load_plugin4 + cimglist_load_plugin4(filename); +#endif +#ifdef cimglist_load_plugin5 + cimglist_load_plugin5(filename); +#endif +#ifdef cimglist_load_plugin6 + cimglist_load_plugin6(filename); +#endif +#ifdef cimglist_load_plugin7 + cimglist_load_plugin7(filename); +#endif +#ifdef cimglist_load_plugin8 + cimglist_load_plugin8(filename); +#endif + if (!cimg::strcasecmp(ext,"tif") || + !cimg::strcasecmp(ext,"tiff")) load_tiff(filename); + else if (!cimg::strcasecmp(ext,"gif")) load_gif_external(filename); + else if (!cimg::strcasecmp(ext,"cimg") || + !cimg::strcasecmp(ext,"cimgz") || + !*ext) load_cimg(filename); + else if (!cimg::strcasecmp(ext,"rec") || + !cimg::strcasecmp(ext,"par")) load_parrec(filename); + else if (!cimg::strcasecmp(ext,"avi") || + !cimg::strcasecmp(ext,"mov") || + !cimg::strcasecmp(ext,"asf") || + !cimg::strcasecmp(ext,"divx") || + !cimg::strcasecmp(ext,"flv") || + !cimg::strcasecmp(ext,"mpg") || + !cimg::strcasecmp(ext,"m1v") || + !cimg::strcasecmp(ext,"m2v") || + !cimg::strcasecmp(ext,"m4v") || + !cimg::strcasecmp(ext,"mjp") || + !cimg::strcasecmp(ext,"mp4") || + !cimg::strcasecmp(ext,"mkv") || + !cimg::strcasecmp(ext,"mpe") || + !cimg::strcasecmp(ext,"movie") || + !cimg::strcasecmp(ext,"ogm") || + !cimg::strcasecmp(ext,"ogg") || + !cimg::strcasecmp(ext,"ogv") || + !cimg::strcasecmp(ext,"qt") || + !cimg::strcasecmp(ext,"rm") || + !cimg::strcasecmp(ext,"vob") || + !cimg::strcasecmp(ext,"webm") || + !cimg::strcasecmp(ext,"wmv") || + !cimg::strcasecmp(ext,"xvid") || + !cimg::strcasecmp(ext,"mpeg")) load_video(filename); + else if (!cimg::strcasecmp(ext,"gz")) load_gzip_external(filename); + else is_loaded = false; + } catch (CImgIOException&) { is_loaded = false; } + + // If nothing loaded, try to guess file format from magic number in file. + if (!is_loaded && !is_stdin) { + std::FILE *const file = cimg::std_fopen(filename,"rb"); + if (!file) { + cimg::exception_mode(omode); + throw CImgIOException(_cimglist_instance + "load(): Failed to open file '%s'.", + cimglist_instance, + filename); + } + + const char *const f_type = cimg::ftype(file,filename); + cimg::fclose(file); + is_loaded = true; + try { + if (!cimg::strcasecmp(f_type,"gif")) load_gif_external(filename); + else if (!cimg::strcasecmp(f_type,"tif")) load_tiff(filename); + else is_loaded = false; + } catch (CImgIOException&) { is_loaded = false; } + } + + // If nothing loaded, try to load file as a single image. + if (!is_loaded) { + assign(1); + try { + _data->load(filename); + } catch (CImgIOException&) { + cimg::exception_mode(omode); + throw CImgIOException(_cimglist_instance + "load(): Failed to recognize format of file '%s'.", + cimglist_instance, + filename); + } + } + cimg::exception_mode(omode); + return *this; + } + + //! Load a list from a file \newinstance. + static CImgList get_load(const char *const filename) { + return CImgList().load(filename); + } + + //! Load a list from a .cimg file. + /** + \param filename Filename to read data from. + **/ + CImgList& load_cimg(const char *const filename) { + return _load_cimg(0,filename); + } + + //! Load a list from a .cimg file \newinstance. + static CImgList get_load_cimg(const char *const filename) { + return CImgList().load_cimg(filename); + } + + //! Load a list from a .cimg file. + /** + \param file File to read data from. + **/ + CImgList& load_cimg(std::FILE *const file) { + return _load_cimg(file,0); + } + + //! Load a list from a .cimg file \newinstance. + static CImgList get_load_cimg(std::FILE *const file) { + return CImgList().load_cimg(file); + } + + CImgList& _load_cimg(std::FILE *const file, const char *const filename) { +#ifdef cimg_use_zlib +#define _cimgz_load_cimg_case(Tss) { \ + Bytef *const cbuf = new Bytef[csiz]; \ + cimg::fread(cbuf,csiz,nfile); \ + if (is_bool) { \ + CImg raw(W*H*D*C/8); \ + uLongf destlen = (ulongT)raw.size(); \ + uncompress((Bytef*)raw._data,&destlen,cbuf,csiz); \ + img.assign(W,H,D,C); \ + img._uchar2bool(raw,raw.size(),false); \ + } else { \ + CImg raw(W,H,D,C); \ + uLongf destlen = (ulongT)raw.size()*sizeof(Tss); \ + uncompress((Bytef*)raw._data,&destlen,cbuf,csiz); \ + if (endian!=cimg::endianness()) cimg::invert_endianness(raw._data,raw.size()); \ + raw.move_to(img); \ + } \ + delete[] cbuf; \ +} +#else +#define _cimgz_load_cimg_case(Tss) \ + throw CImgIOException(_cimglist_instance \ + "load_cimg(): Unable to load compressed data from file '%s' unless zlib is enabled.", \ + cimglist_instance, \ + filename?filename:"(FILE*)"); +#endif + +#define _cimg_load_cimg_case(Ts,Tss) \ + if (!loaded && !cimg::strcasecmp(Ts,str_pixeltype)) { \ + const bool is_bool = cimg::type::string()==cimg::type::string(); \ + for (unsigned int l = 0; l=0 && j<255) tmp[j++] = (char)i; tmp[j] = 0; \ + W = H = D = C = 0; csiz = 0; \ + if ((err = cimg_sscanf(tmp,"%u %u %u %u #%lu",&W,&H,&D,&C,&csiz))<4) \ + throw CImgIOException(_cimglist_instance \ + "load_cimg(): Invalid specified size (%u,%u,%u,%u) of image %u in file '%s'.", \ + cimglist_instance, \ + W,H,D,C,l,filename?filename:("(FILE*)")); \ + if (W*H*D*C>0) { \ + CImg &img = _data[l]; \ + if (err==5) _cimgz_load_cimg_case(Tss) \ + else { \ + img.assign(W,H,D,C); \ + T *ptrd = img._data; \ + if (is_bool) { \ + CImg raw; \ + for (ulongT to_read = img.size(); to_read; ) { \ + raw.assign((unsigned int)std::min(to_read,cimg_iobuffer)); \ + cimg::fread(raw._data,raw._width,nfile); \ + CImg(ptrd,std::min((ulongT)8*raw._width,(ulongT)(img.end() - ptrd)),1,1,1,true).\ + _uchar2bool(raw,raw._width,false); \ + to_read-=raw._width; \ + } \ + } else { \ + CImg raw; \ + for (ulongT to_read = img.size(); to_read; ) { \ + raw.assign((unsigned int)std::min(to_read,cimg_iobuffer)); \ + cimg::fread(raw._data,raw._width,nfile); \ + if (endian!=cimg::endianness()) cimg::invert_endianness(raw._data,raw.size()); \ + const Tss *ptrs = raw._data; \ + for (ulongT off = (ulongT)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); \ + to_read-=raw._width; \ + } \ + } \ + } \ + } \ + } \ + loaded = true; \ + } + + if (!filename && !file) + throw CImgArgumentException(_cimglist_instance + "load_cimg(): Specified filename is (null).", + cimglist_instance); + + const ulongT cimg_iobuffer = (ulongT)24*1024*1024; + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + bool loaded = false, endian = cimg::endianness(); + CImg tmp(256), str_pixeltype(256), str_endian(256); + *tmp = *str_pixeltype = *str_endian = 0; + unsigned int j, N = 0, W, H, D, C; + unsigned long csiz; + int i, err; + do { + j = 0; while ((i=std::fgetc(nfile))!='\n' && i>=0 && j<255) tmp[j++] = (char)i; tmp[j] = 0; + } while (*tmp=='#' && i>=0); + err = cimg_sscanf(tmp,"%u%*c%255[A-Za-z64_]%*c%255[sA-Za-z_ ]", + &N,str_pixeltype._data,str_endian._data); + if (err<2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "load_cimg(): CImg header not found in file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)"); + } + if (!cimg::strncasecmp("little",str_endian,6)) endian = false; + else if (!cimg::strncasecmp("big",str_endian,3)) endian = true; + assign(N); + _cimg_load_cimg_case("bool",bool); + _cimg_load_cimg_case("unsigned_char",unsigned char); + _cimg_load_cimg_case("uchar",unsigned char); + _cimg_load_cimg_case("char",char); + _cimg_load_cimg_case("unsigned_short",unsigned short); + _cimg_load_cimg_case("ushort",unsigned short); + _cimg_load_cimg_case("short",short); + _cimg_load_cimg_case("unsigned_int",unsigned int); + _cimg_load_cimg_case("uint",unsigned int); + _cimg_load_cimg_case("int",int); + _cimg_load_cimg_case("unsigned_long",ulongT); + _cimg_load_cimg_case("ulong",ulongT); + _cimg_load_cimg_case("long",longT); + _cimg_load_cimg_case("unsigned_int64",uint64T); + _cimg_load_cimg_case("uint64",uint64T); + _cimg_load_cimg_case("int64",int64T); + _cimg_load_cimg_case("float",float); + _cimg_load_cimg_case("double",double); + + if (!loaded) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "load_cimg(): Unsupported pixel type '%s' for file '%s'.", + cimglist_instance, + str_pixeltype._data,filename?filename:"(FILE*)"); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load a sublist list from a (non compressed) .cimg file. + /** + \param filename Filename to read data from. + \param n0 Starting index of images to read (~0U for max). + \param n1 Ending index of images to read (~0U for max). + \param x0 Starting X-coordinates of image regions to read. + \param y0 Starting Y-coordinates of image regions to read. + \param z0 Starting Z-coordinates of image regions to read. + \param c0 Starting C-coordinates of image regions to read. + \param x1 Ending X-coordinates of image regions to read (~0U for max). + \param y1 Ending Y-coordinates of image regions to read (~0U for max). + \param z1 Ending Z-coordinates of image regions to read (~0U for max). + \param c1 Ending C-coordinates of image regions to read (~0U for max). + **/ + CImgList& load_cimg(const char *const filename, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1) { + return _load_cimg(0,filename,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + } + + //! Load a sublist list from a (non compressed) .cimg file \newinstance. + static CImgList get_load_cimg(const char *const filename, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1) { + return CImgList().load_cimg(filename,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + } + + //! Load a sub-image list from a (non compressed) .cimg file \overloading. + CImgList& load_cimg(std::FILE *const file, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1) { + return _load_cimg(file,0,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + } + + //! Load a sub-image list from a (non compressed) .cimg file \newinstance. + static CImgList get_load_cimg(std::FILE *const file, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1) { + return CImgList().load_cimg(file,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + } + + CImgList& _load_cimg(std::FILE *const file, const char *const filename, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1) { +#define _cimg_load_cimg_case2(Ts,Tss) \ + if (!loaded && !cimg::strcasecmp(Ts,str_pixeltype)) { \ + for (unsigned int l = 0; l<=nn1; ++l) { \ + j = 0; while ((i=std::fgetc(nfile))!='\n' && i>=0) tmp[j++] = (char)i; tmp[j] = 0; \ + W = H = D = C = 0; \ + if (cimg_sscanf(tmp,"%u %u %u %u",&W,&H,&D,&C)!=4) \ + throw CImgIOException(_cimglist_instance \ + "load_cimg(): Invalid specified size (%u,%u,%u,%u) of image %u in file '%s'", \ + cimglist_instance, \ + W,H,D,C,l,filename?filename:"(FILE*)"); \ + if (W*H*D*C>0) { \ + if (l=W || ny0>=H || nz0>=D || nc0>=C) cimg::fseek(nfile,W*H*D*C*sizeof(Tss),SEEK_CUR); \ + else { \ + const unsigned int \ + _nx1 = nx1==~0U?W - 1:nx1, \ + _ny1 = ny1==~0U?H - 1:ny1, \ + _nz1 = nz1==~0U?D - 1:nz1, \ + _nc1 = nc1==~0U?C - 1:nc1; \ + if (_nx1>=W || _ny1>=H || _nz1>=D || _nc1>=C) \ + throw CImgArgumentException(_cimglist_instance \ + "load_cimg(): Invalid specified coordinates " \ + "[%u](%u,%u,%u,%u) -> [%u](%u,%u,%u,%u) " \ + "because image [%u] in file '%s' has size (%u,%u,%u,%u).", \ + cimglist_instance, \ + n0,x0,y0,z0,c0,n1,x1,y1,z1,c1,l,filename?filename:"(FILE*)",W,H,D,C); \ + CImg raw(1 + _nx1 - nx0); \ + CImg &img = _data[l - nn0]; \ + img.assign(1 + _nx1 - nx0,1 + _ny1 - ny0,1 + _nz1 - nz0,1 + _nc1 - nc0); \ + T *ptrd = img._data; \ + ulongT skipvb = nc0*W*H*D*sizeof(Tss); \ + if (skipvb) cimg::fseek(nfile,skipvb,SEEK_CUR); \ + for (unsigned int c = 1 + _nc1 - nc0; c; --c) { \ + const ulongT skipzb = nz0*W*H*sizeof(Tss); \ + if (skipzb) cimg::fseek(nfile,skipzb,SEEK_CUR); \ + for (unsigned int z = 1 + _nz1 - nz0; z; --z) { \ + const ulongT skipyb = ny0*W*sizeof(Tss); \ + if (skipyb) cimg::fseek(nfile,skipyb,SEEK_CUR); \ + for (unsigned int y = 1 + _ny1 - ny0; y; --y) { \ + const ulongT skipxb = nx0*sizeof(Tss); \ + if (skipxb) cimg::fseek(nfile,skipxb,SEEK_CUR); \ + cimg::fread(raw._data,raw._width,nfile); \ + if (endian!=cimg::endianness()) cimg::invert_endianness(raw._data,raw._width); \ + const Tss *ptrs = raw._data; \ + for (unsigned int off = raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); \ + const ulongT skipxe = (W - 1 - _nx1)*sizeof(Tss); \ + if (skipxe) cimg::fseek(nfile,skipxe,SEEK_CUR); \ + } \ + const ulongT skipye = (H - 1 - _ny1)*W*sizeof(Tss); \ + if (skipye) cimg::fseek(nfile,skipye,SEEK_CUR); \ + } \ + const ulongT skipze = (D - 1 - _nz1)*W*H*sizeof(Tss); \ + if (skipze) cimg::fseek(nfile,skipze,SEEK_CUR); \ + } \ + const ulongT skipve = (C - 1 - _nc1)*W*H*D*sizeof(Tss); \ + if (skipve) cimg::fseek(nfile,skipve,SEEK_CUR); \ + } \ + } \ + } \ + loaded = true; \ + } + + if (!filename && !file) + throw CImgArgumentException(_cimglist_instance + "load_cimg(): Specified filename is (null).", + cimglist_instance); + unsigned int + nn0 = std::min(n0,n1), nn1 = std::max(n0,n1), + nx0 = std::min(x0,x1), nx1 = std::max(x0,x1), + ny0 = std::min(y0,y1), ny1 = std::max(y0,y1), + nz0 = std::min(z0,z1), nz1 = std::max(z0,z1), + nc0 = std::min(c0,c1), nc1 = std::max(c0,c1); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + bool loaded = false, endian = cimg::endianness(); + CImg tmp(256), str_pixeltype(256), str_endian(256); + *tmp = *str_pixeltype = *str_endian = 0; + unsigned int j, N, W, H, D, C; + int i, err; + j = 0; while ((i=std::fgetc(nfile))!='\n' && i!=EOF && j<256) tmp[j++] = (char)i; tmp[j] = 0; + err = cimg_sscanf(tmp,"%u%*c%255[A-Za-z64_]%*c%255[sA-Za-z_ ]", + &N,str_pixeltype._data,str_endian._data); + if (err<2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "load_cimg(): CImg header not found in file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)"); + } + if (!cimg::strncasecmp("little",str_endian,6)) endian = false; + else if (!cimg::strncasecmp("big",str_endian,3)) endian = true; + nn1 = n1==~0U?N - 1:n1; + if (nn1>=N) + throw CImgArgumentException(_cimglist_instance + "load_cimg(): Invalid specified coordinates [%u](%u,%u,%u,%u) -> [%u](%u,%u,%u,%u) " + "because file '%s' contains only %u images.", + cimglist_instance, + n0,x0,y0,z0,c0,n1,x1,y1,z1,c1,filename?filename:"(FILE*)",N); + assign(1 + nn1 - n0); + _cimg_load_cimg_case2("bool",bool); + _cimg_load_cimg_case2("unsigned_char",unsigned char); + _cimg_load_cimg_case2("uchar",unsigned char); + _cimg_load_cimg_case2("char",char); + _cimg_load_cimg_case2("unsigned_short",unsigned short); + _cimg_load_cimg_case2("ushort",unsigned short); + _cimg_load_cimg_case2("short",short); + _cimg_load_cimg_case2("unsigned_int",unsigned int); + _cimg_load_cimg_case2("uint",unsigned int); + _cimg_load_cimg_case2("int",int); + _cimg_load_cimg_case2("unsigned_long",ulongT); + _cimg_load_cimg_case2("ulong",ulongT); + _cimg_load_cimg_case2("long",longT); + _cimg_load_cimg_case2("unsigned_int64",uint64T); + _cimg_load_cimg_case2("uint64",uint64T); + _cimg_load_cimg_case2("int64",int64T); + _cimg_load_cimg_case2("float",float); + _cimg_load_cimg_case2("double",double); + if (!loaded) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "load_cimg(): Unsupported pixel type '%s' for file '%s'.", + cimglist_instance, + str_pixeltype._data,filename?filename:"(FILE*)"); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load a list from a PAR/REC (Philips) file. + /** + \param filename Filename to read data from. + **/ + CImgList& load_parrec(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "load_parrec(): Specified filename is (null).", + cimglist_instance); + + CImg body(1024), filenamepar(1024), filenamerec(1024); + *body = *filenamepar = *filenamerec = 0; + const char *const ext = cimg::split_filename(filename,body); + if (!std::strcmp(ext,"par")) { + std::strncpy(filenamepar,filename,filenamepar._width - 1); + cimg_snprintf(filenamerec,filenamerec._width,"%s.rec",body._data); + } + if (!std::strcmp(ext,"PAR")) { + std::strncpy(filenamepar,filename,filenamepar._width - 1); + cimg_snprintf(filenamerec,filenamerec._width,"%s.REC",body._data); + } + if (!std::strcmp(ext,"rec")) { + std::strncpy(filenamerec,filename,filenamerec._width - 1); + cimg_snprintf(filenamepar,filenamepar._width,"%s.par",body._data); + } + if (!std::strcmp(ext,"REC")) { + std::strncpy(filenamerec,filename,filenamerec._width - 1); + cimg_snprintf(filenamepar,filenamepar._width,"%s.PAR",body._data); + } + std::FILE *file = cimg::fopen(filenamepar,"r"); + + // Parse header file + CImgList st_slices; + CImgList st_global; + CImg line(256); *line = 0; + int err; + do { err = std::fscanf(file,"%255[^\n]%*c",line._data); } while (err!=EOF && (*line=='#' || *line=='.')); + do { + unsigned int sn,size_x,size_y,pixsize; + float rs,ri,ss; + err = std::fscanf(file,"%u%*u%*u%*u%*u%*u%*u%u%*u%u%u%g%g%g%*[^\n]",&sn,&pixsize,&size_x,&size_y,&ri,&rs,&ss); + if (err==7) { + CImg::vector((float)sn,(float)pixsize,(float)size_x,(float)size_y,ri,rs,ss,0).move_to(st_slices); + unsigned int i; for (i = 0; i::vector(size_x,size_y,sn).move_to(st_global); + else { + CImg &vec = st_global[i]; + if (size_x>vec[0]) vec[0] = size_x; + if (size_y>vec[1]) vec[1] = size_y; + vec[2] = sn; + } + st_slices[st_slices._width - 1][7] = (float)i; + } + } while (err==7); + + // Read data + std::FILE *file2 = cimg::fopen(filenamerec,"rb"); + cimglist_for(st_global,l) { + const CImg& vec = st_global[l]; + CImg(vec[0],vec[1],vec[2]).move_to(*this); + } + + cimglist_for(st_slices,l) { + const CImg& vec = st_slices[l]; + const unsigned int + sn = (unsigned int)vec[0] - 1, + pixsize = (unsigned int)vec[1], + size_x = (unsigned int)vec[2], + size_y = (unsigned int)vec[3], + imn = (unsigned int)vec[7]; + const float ri = vec[4], rs = vec[5], ss = vec[6]; + switch (pixsize) { + case 8 : { + CImg buf(size_x,size_y); + cimg::fread(buf._data,size_x*size_y,file2); + if (cimg::endianness()) cimg::invert_endianness(buf._data,size_x*size_y); + CImg& img = (*this)[imn]; + cimg_forXY(img,x,y) img(x,y,sn) = (T)(( buf(x,y)*rs + ri )/(rs*ss)); + } break; + case 16 : { + CImg buf(size_x,size_y); + cimg::fread(buf._data,size_x*size_y,file2); + if (cimg::endianness()) cimg::invert_endianness(buf._data,size_x*size_y); + CImg& img = (*this)[imn]; + cimg_forXY(img,x,y) img(x,y,sn) = (T)(( buf(x,y)*rs + ri )/(rs*ss)); + } break; + case 32 : { + CImg buf(size_x,size_y); + cimg::fread(buf._data,size_x*size_y,file2); + if (cimg::endianness()) cimg::invert_endianness(buf._data,size_x*size_y); + CImg& img = (*this)[imn]; + cimg_forXY(img,x,y) img(x,y,sn) = (T)(( buf(x,y)*rs + ri )/(rs*ss)); + } break; + default : + cimg::fclose(file); + cimg::fclose(file2); + throw CImgIOException(_cimglist_instance + "load_parrec(): Unsupported %d-bits pixel type for file '%s'.", + cimglist_instance, + pixsize,filename); + } + } + cimg::fclose(file); + cimg::fclose(file2); + if (!_width) + throw CImgIOException(_cimglist_instance + "load_parrec(): Failed to recognize valid PAR-REC data in file '%s'.", + cimglist_instance, + filename); + return *this; + } + + //! Load a list from a PAR/REC (Philips) file \newinstance. + static CImgList get_load_parrec(const char *const filename) { + return CImgList().load_parrec(filename); + } + + //! Load a list from a YUV image sequence file. + /** + \param filename Filename to read data from. + \param size_x Width of the images. + \param size_y Height of the images. + \param chroma_subsampling Type of chroma subsampling. Can be { 420 | 422 | 444 }. + \param first_frame Index of first image frame to read. + \param last_frame Index of last image frame to read. + \param step_frame Step applied between each frame. + \param yuv2rgb Apply YUV to RGB transformation during reading. + **/ + CImgList& load_yuv(const char *const filename, + const unsigned int size_x, const unsigned int size_y, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true) { + return _load_yuv(0,filename,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb); + } + + //! Load a list from a YUV image sequence file \newinstance. + static CImgList get_load_yuv(const char *const filename, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true) { + return CImgList().load_yuv(filename,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb); + } + + //! Load a list from an image sequence YUV file \overloading. + CImgList& load_yuv(std::FILE *const file, + const unsigned int size_x, const unsigned int size_y, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true) { + return _load_yuv(file,0,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb); + } + + //! Load a list from an image sequence YUV file \newinstance. + static CImgList get_load_yuv(std::FILE *const file, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true) { + return CImgList().load_yuv(file,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb); + } + + CImgList& _load_yuv(std::FILE *const file, const char *const filename, + const unsigned int size_x, const unsigned int size_y, + const unsigned int chroma_subsampling, + const unsigned int first_frame, const unsigned int last_frame, + const unsigned int step_frame, const bool yuv2rgb) { + if (!filename && !file) + throw CImgArgumentException(_cimglist_instance + "load_yuv(): Specified filename is (null).", + cimglist_instance); + if (chroma_subsampling!=420 && chroma_subsampling!=422 && chroma_subsampling!=444) + throw CImgArgumentException(_cimglist_instance + "load_yuv(): Specified chroma subsampling '%u' is invalid, for file '%s'.", + cimglist_instance, + chroma_subsampling,filename?filename:"(FILE*)"); + const unsigned int + cfx = chroma_subsampling==420 || chroma_subsampling==422?2:1, + cfy = chroma_subsampling==420?2:1, + nfirst_frame = first_frame YUV(size_x,size_y,1,3), UV(size_x/cfx,size_y/cfy,1,2); + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + bool stop_flag = false; + int err; + if (nfirst_frame) { + err = cimg::fseek(nfile,(uint64T)nfirst_frame*(YUV._width*YUV._height + 2*UV._width*UV._height),SEEK_CUR); + if (err) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "load_yuv(): File '%s' doesn't contain frame number %u.", + cimglist_instance, + filename?filename:"(FILE*)",nfirst_frame); + } + } + unsigned int frame; + for (frame = nfirst_frame; !stop_flag && frame<=nlast_frame; frame+=nstep_frame) { + YUV.get_shared_channel(0).fill(0); + // *TRY* to read the luminance part, do not replace by cimg::fread! + err = (int)std::fread((void*)(YUV._data),1,(size_t)YUV._width*YUV._height,nfile); + if (err!=(int)(YUV._width*YUV._height)) { + stop_flag = true; + if (err>0) + cimg::warn(_cimglist_instance + "load_yuv(): File '%s' contains incomplete data or given image dimensions " + "(%u,%u) are incorrect.", + cimglist_instance, + filename?filename:"(FILE*)",size_x,size_y); + } else { + UV.fill(0); + // *TRY* to read the luminance part, do not replace by cimg::fread! + err = (int)std::fread((void*)(UV._data),1,(size_t)UV.size(),nfile); + if (err!=(int)(UV.size())) { + stop_flag = true; + if (err>0) + cimg::warn(_cimglist_instance + "load_yuv(): File '%s' contains incomplete data or given image dimensions " + "(%u,%u) are incorrect.", + cimglist_instance, + filename?filename:"(FILE*)",size_x,size_y); + } else { + const ucharT *ptrs1 = UV._data, *ptrs2 = UV.data(0,0,0,1); + ucharT *ptrd1 = YUV.data(0,0,0,1), *ptrd2 = YUV.data(0,0,0,2); + const unsigned int wd = YUV._width; + switch (chroma_subsampling) { + case 420 : + cimg_forY(UV,y) { + cimg_forX(UV,x) { + const ucharT U = *(ptrs1++), V = *(ptrs2++); + ptrd1[wd] = U; *(ptrd1)++ = U; + ptrd1[wd] = U; *(ptrd1)++ = U; + ptrd2[wd] = V; *(ptrd2)++ = V; + ptrd2[wd] = V; *(ptrd2)++ = V; + } + ptrd1+=wd; ptrd2+=wd; + } + break; + case 422 : + cimg_forXY(UV,x,y) { + const ucharT U = *(ptrs1++), V = *(ptrs2++); + *(ptrd1++) = U; *(ptrd1++) = U; + *(ptrd2++) = V; *(ptrd2++) = V; + } + break; + default : + YUV.draw_image(0,0,0,1,UV); + } + if (yuv2rgb) YUV.YCbCrtoRGB(); + insert(YUV); + if (nstep_frame>1) cimg::fseek(nfile,(uint64T)(nstep_frame - 1)*(size_x*size_y + size_x*size_y/2),SEEK_CUR); + } + } + } + if (is_empty()) + throw CImgIOException(_cimglist_instance + "load_yuv() : Missing data in file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)"); + if (stop_flag && nlast_frame!=~0U && frame!=nlast_frame) + cimg::warn(_cimglist_instance + "load_yuv(): Frame %d not reached since only %u frames were found in file '%s'.", + cimglist_instance, + nlast_frame,frame - 1,filename?filename:"(FILE*)"); + + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load an image from a video file, using OpenCV library. + /** + \param filename Filename, as a C-string. + \param first_frame Index of the first frame to read. + \param last_frame Index of the last frame to read (can be higher than the actual number of frames, e.g. '~0U'). + \param step_frame Step value for frame reading. + \note If step_frame==0, the current video stream is forced to be released (without any frames read). + **/ + CImgList& load_video(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1) { +#ifndef cimg_use_opencv + if (first_frame || last_frame!=~0U || step_frame>1) + throw CImgArgumentException(_cimglist_instance + "load_video() : File '%s', arguments 'first_frame', 'last_frame' " + "and 'step_frame' requires features from the OpenCV library " + "('-Dcimg_use_opencv' must be defined).", + cimglist_instance,filename); + return load_ffmpeg_external(filename); +#else + static cv::VideoCapture *captures[32] = { 0 }; + static CImgList filenames(32); + static CImg positions(32,1,1,1,0); + static int last_used_index = -1; + + // Detect if a video capture already exists for the specified filename. + cimg::mutex(9); + int index = -1; + if (filename) { + if (last_used_index>=0 && !std::strcmp(filename,filenames[last_used_index])) { + index = last_used_index; + } else cimglist_for(filenames,l) if (filenames[l] && !std::strcmp(filename,filenames[l])) { + index = l; break; + } + } else index = last_used_index; + cimg::mutex(9,0); + + // Release stream if needed. + if (!step_frame || (index>=0 && positions[index]>first_frame)) { + if (index>=0) { + cimg::mutex(9); + captures[index]->release(); + delete captures[index]; + captures[index] = 0; + positions[index] = 0; + filenames[index].assign(); + if (last_used_index==index) last_used_index = -1; + index = -1; + cimg::mutex(9,0); + } else + if (filename) + cimg::warn(_cimglist_instance + "load_video() : File '%s', no opened video stream associated with filename found.", + cimglist_instance,filename); + else + cimg::warn(_cimglist_instance + "load_video() : No opened video stream found.", + cimglist_instance,filename); + if (!step_frame) return *this; + } + + // Find empty slot for capturing video stream. + if (index<0) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "load_video(): No already open video reader found. You must specify a " + "non-(null) filename argument for the first call.", + cimglist_instance); + else { cimg::mutex(9); cimglist_for(filenames,l) if (!filenames[l]) { index = l; break; } cimg::mutex(9,0); } + if (index<0) + throw CImgIOException(_cimglist_instance + "load_video(): File '%s', no video reader slots available. " + "You have to release some of your previously opened videos.", + cimglist_instance,filename); + cimg::mutex(9); + captures[index] = new cv::VideoCapture(filename); + positions[index] = 0; + if (!captures[index]->isOpened()) { + delete captures[index]; + captures[index] = 0; + cimg::mutex(9,0); + cimg::fclose(cimg::fopen(filename,"rb")); // Check file availability + throw CImgIOException(_cimglist_instance + "load_video(): File '%s', unable to detect format of video file.", + cimglist_instance,filename); + } + CImg::string(filename).move_to(filenames[index]); + cimg::mutex(9,0); + } + + cimg::mutex(9); + const unsigned int nb_frames = (unsigned int)std::max(0.,captures[index]->get(_cimg_cap_prop_frame_count)); + cimg::mutex(9,0); + assign(); + + // Skip frames if requested. + bool go_on = true; + unsigned int &pos = positions[index]; + while (posgrab()) { cimg::mutex(9,0); go_on = false; break; } + cimg::mutex(9,0); + ++pos; + } + + // Read and convert frames. + const unsigned int _last_frame = std::min(nb_frames?nb_frames - 1:~0U,last_frame); + while (go_on && pos<=_last_frame) { + cv::Mat cvimg; + cimg::mutex(9); + if (captures[index]->read(cvimg)) { CImg::_cvmat2cimg(cvimg).move_to(*this); ++pos; } + else go_on = false; + cimg::mutex(9,0); + if (go_on) + for (unsigned int i = 1; go_on && igrab()) go_on = false; + cimg::mutex(9,0); + } + } + + if (!go_on || (nb_frames && pos>=nb_frames)) { // Close video stream when necessary + cimg::mutex(9); + captures[index]->release(); + delete captures[index]; + captures[index] = 0; + filenames[index].assign(); + positions[index] = 0; + index = -1; + cimg::mutex(9,0); + } + + cimg::mutex(9); + last_used_index = index; + cimg::mutex(9,0); + + if (is_empty()) + throw CImgIOException(_cimglist_instance + "load_video(): File '%s', unable to locate frame %u.", + cimglist_instance,filename,first_frame); + return *this; +#endif + } + + //! Load an image from a video file, using OpenCV library \newinstance. + static CImgList get_load_video(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1) { + return CImgList().load_video(filename,first_frame,last_frame,step_frame); + } + + //! Load an image from a video file using the external tool 'ffmpeg'. + /** + \param filename Filename to read data from. + **/ + CImgList& load_ffmpeg_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "load_ffmpeg_external(): Specified filename is (null).", + cimglist_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256), filename_tmp2(256); + std::FILE *file = 0; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_000001.ppm",filename_tmp._data); + if ((file=cimg::std_fopen(filename_tmp2,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_%%6d.ppm",filename_tmp._data); + cimg_snprintf(command,command._width,"\"%s\" -v -8 -i \"%s\" \"%s\"", + cimg::ffmpeg_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp2)._system_strescape().data()); + cimg::system(command, cimg::ffmpeg_path()); + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + assign(); + unsigned int i = 1; + for (bool stop_flag = false; !stop_flag; ++i) { + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_%.6u.ppm",filename_tmp._data,i); + CImg img; + try { img.load_pnm(filename_tmp2); } + catch (CImgException&) { stop_flag = true; } + if (img) { img.move_to(*this); std::remove(filename_tmp2); } + } + cimg::exception_mode(omode); + if (is_empty()) + throw CImgIOException(_cimglist_instance + "load_ffmpeg_external(): Failed to open file '%s' with external command 'ffmpeg'.", + cimglist_instance, + filename); + return *this; + } + + //! Load an image from a video file using the external tool 'ffmpeg' \newinstance. + static CImgList get_load_ffmpeg_external(const char *const filename) { + return CImgList().load_ffmpeg_external(filename); + } + + //! Load gif file, using ImageMagick or GraphicsMagick's external tools. + /** + \param filename Filename to read data from. + **/ + CImgList& load_gif_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "load_gif_external(): Specified filename is (null).", + cimglist_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + if (!_load_gif_external(filename,false)) + if (!_load_gif_external(filename,true)) + try { assign(CImg().load_other(filename)); } catch (CImgException&) { assign(); } + if (is_empty()) + throw CImgIOException(_cimglist_instance + "load_gif_external(): Failed to open file '%s'.", + cimglist_instance,filename); + return *this; + } + + CImgList& _load_gif_external(const char *const filename, const bool use_graphicsmagick=false) { + CImg command(1024), filename_tmp(256), filename_tmp2(256); + std::FILE *file = 0; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + if (use_graphicsmagick) cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s.png.0",filename_tmp._data); + else cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s-0.png",filename_tmp._data); + if ((file=cimg::std_fopen(filename_tmp2,"rb"))!=0) cimg::fclose(file); + } while (file); + if (use_graphicsmagick) cimg_snprintf(command,command._width,"%s convert \"%s\" \"%s.png\"", + cimg::graphicsmagick_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp)._system_strescape().data()); + else cimg_snprintf(command,command._width,"\"%s\" -coalesce \"%s\" \"%s.png\"", + cimg::imagemagick_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command, cimg::imagemagick_path()); + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + assign(); + + // Try to read a single frame gif. + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s.png",filename_tmp._data); + CImg img; + try { img.load_png(filename_tmp2); } + catch (CImgException&) { } + if (img) { img.move_to(*this); std::remove(filename_tmp2); } + else { // Try to read animated gif + unsigned int i = 0; + for (bool stop_flag = false; !stop_flag; ++i) { + if (use_graphicsmagick) cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s.png.%u",filename_tmp._data,i); + else cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s-%u.png",filename_tmp._data,i); + try { img.load_png(filename_tmp2); } + catch (CImgException&) { stop_flag = true; } + if (img) { img.move_to(*this); std::remove(filename_tmp2); } + } + } + cimg::exception_mode(omode); + return *this; + } + + //! Load gif file, using ImageMagick or GraphicsMagick's external tools \newinstance. + static CImgList get_load_gif_external(const char *const filename) { + return CImgList().load_gif_external(filename); + } + + //! Load a gzipped list, using external tool 'gunzip'. + /** + \param filename Filename to read data from. + **/ + CImgList& load_gzip_external(const char *const filename) { + if (!filename) + throw CImgIOException(_cimglist_instance + "load_gzip_external(): Specified filename is (null).", + cimglist_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256), body(256); + const char + *ext = cimg::split_filename(filename,body), + *ext2 = cimg::split_filename(body,0); + std::FILE *file = 0; + do { + if (!cimg::strcasecmp(ext,"gz")) { + if (*ext2) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext2); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } else { + if (*ext) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\" -c \"%s\" > \"%s\"", + cimg::gunzip_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command, cimg::gunzip_path()); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimglist_instance + "load_gzip_external(): Failed to open file '%s'.", + cimglist_instance, + filename); + + } else cimg::fclose(file); + load(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load a gzipped list, using external tool 'gunzip' \newinstance. + static CImgList get_load_gzip_external(const char *const filename) { + return CImgList().load_gzip_external(filename); + } + + //! Load images from a TIFF file. + /** + \param filename Filename to read data from. + \param first_frame Index of first image frame to read. + \param last_frame Index of last image frame to read. + \param step_frame Step applied between each frame. + \param[out] voxel_size Voxel size, as stored in the filename. + \param[out] description Description, as stored in the filename. + **/ + CImgList& load_tiff(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + float *const voxel_size=0, + CImg *const description=0) { + const unsigned int + nfirst_frame = first_frame::get_load_tiff(filename)); +#else +#if cimg_verbosity<3 + TIFFSetWarningHandler(0); + TIFFSetErrorHandler(0); +#endif + TIFF *tif = TIFFOpen(filename,"r"); + if (tif) { + unsigned int nb_images = 0; + do ++nb_images; while (TIFFReadDirectory(tif)); + if (nfirst_frame>=nb_images || (nlast_frame!=~0U && nlast_frame>=nb_images)) + cimg::warn(_cimglist_instance + "load_tiff(): Invalid specified frame range is [%u,%u] (step %u) since " + "file '%s' contains %u image(s).", + cimglist_instance, + nfirst_frame,nlast_frame,nstep_frame,filename,nb_images); + + if (nfirst_frame>=nb_images) return assign(); + if (nlast_frame>=nb_images) nlast_frame = nb_images - 1; + assign(1 + (nlast_frame - nfirst_frame)/nstep_frame); + TIFFSetDirectory(tif,0); + cimglist_for(*this,l) _data[l]._load_tiff(tif,nfirst_frame + l*nstep_frame,voxel_size,description); + TIFFClose(tif); + } else throw CImgIOException(_cimglist_instance + "load_tiff(): Failed to open file '%s'.", + cimglist_instance, + filename); + return *this; +#endif + } + + //! Load a multi-page TIFF file \newinstance. + static CImgList get_load_tiff(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + float *const voxel_size=0, + CImg *const description=0) { + return CImgList().load_tiff(filename,first_frame,last_frame,step_frame,voxel_size,description); + } + + //@} + //---------------------------------- + // + //! \name Data Output + //@{ + //---------------------------------- + + //! Print information about the list on the standard output. + /** + \param title Label set to the information displayed. + \param display_stats Tells if image statistics must be computed and displayed. + **/ + const CImgList& print(const char *const title=0, const bool display_stats=true) const { + unsigned int msiz = 0; + cimglist_for(*this,l) msiz+=_data[l].size(); + msiz*=sizeof(T); + const unsigned int mdisp = msiz<8*1024?0U:msiz<8*1024*1024?1U:2U; + CImg _title(64); + if (!title) cimg_snprintf(_title,_title._width,"CImgList<%s>",pixel_type()); + std::fprintf(cimg::output(),"%s%s%s%s: %sthis%s = %p, %ssize%s = %u/%u [%u %s], %sdata%s = (CImg<%s>*)%p", + cimg::t_magenta,cimg::t_bold,title?title:_title._data,cimg::t_normal, + cimg::t_bold,cimg::t_normal,(void*)this, + cimg::t_bold,cimg::t_normal,_width,_allocated_width, + mdisp==0?msiz:(mdisp==1?(msiz>>10):(msiz>>20)), + mdisp==0?"b":(mdisp==1?"Kio":"Mio"), + cimg::t_bold,cimg::t_normal,pixel_type(),(void*)begin()); + if (_data) std::fprintf(cimg::output(),"..%p.\n",(void*)((char*)end() - 1)); + else std::fprintf(cimg::output(),".\n"); + + char tmp[16] = { 0 }; + cimglist_for(*this,ll) { + cimg_snprintf(tmp,sizeof(tmp),"[%d]",ll); + std::fprintf(cimg::output()," "); + _data[ll].print(tmp,display_stats); + if (ll==3 && width()>8) { ll = width() - 5; std::fprintf(cimg::output()," ...\n"); } + } + std::fflush(cimg::output()); + return *this; + } + + //! Display the current CImgList instance in an existing CImgDisplay window (by reference). + /** + \param disp Reference to an existing CImgDisplay instance, where the current image list will be displayed. + \param axis Appending axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + \note This function displays the list images of the current CImgList instance into an existing + CImgDisplay window. + Images of the list are appended in a single temporary image for visualization purposes. + The function returns immediately. + **/ + const CImgList& display(CImgDisplay &disp, const char axis='x', const float align=0) const { + disp.display(*this,axis,align); + return *this; + } + + //! Display the current CImgList instance in a new display window. + /** + \param disp Display window. + \param display_info Tells if image information are displayed on the standard output. + \param axis Alignment axis for images viewing. + \param align Appending alignment. + \param[in,out] XYZ Contains the XYZ coordinates at start / exit of the function. + \param exit_on_anykey Exit function when any key is pressed. + \note This function opens a new window with a specific title and displays the list images of the + current CImgList instance into it. + Images of the list are appended in a single temporary image for visualization purposes. + The function returns when a key is pressed or the display window is closed by the user. + **/ + const CImgList& display(CImgDisplay &disp, const bool display_info, + const char axis='x', const float align=0, + unsigned int *const XYZ=0, const bool exit_on_anykey=false) const { + bool is_exit = false; + return _display(disp,0,0,display_info,axis,align,XYZ,exit_on_anykey,0,true,is_exit); + } + + //! Display the current CImgList instance in a new display window. + /** + \param title Title of the opening display window. + \param display_info Tells if list information must be written on standard output. + \param axis Appending axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + \param[in,out] XYZ Contains the XYZ coordinates at start / exit of the function. + \param exit_on_anykey Exit function when any key is pressed. + **/ + const CImgList& display(const char *const title=0, const bool display_info=true, + const char axis='x', const float align=0, + unsigned int *const XYZ=0, const bool exit_on_anykey=false) const { + CImgDisplay disp; + bool is_exit = false; + return _display(disp,title,0,display_info,axis,align,XYZ,exit_on_anykey,0,true,is_exit); + } + + const CImgList& _display(CImgDisplay &disp, const char *const title, const CImgList *const titles, + const bool display_info, const char axis, const float align, unsigned int *const XYZ, + const bool exit_on_anykey, const unsigned int orig, const bool is_first_call, + bool &is_exit) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "display(): Empty instance.", + cimglist_instance); + if (!disp) { + if (axis=='x') { + unsigned int sum_width = 0, max_height = 0; + cimglist_for(*this,l) { + const CImg &img = _data[l]; + const unsigned int + w = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,false), + h = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,true); + sum_width+=w; + if (h>max_height) max_height = h; + } + disp.assign(cimg_fitscreen(sum_width,max_height,1),title?title:titles?titles->__display()._data:0,1); + } else { + unsigned int max_width = 0, sum_height = 0; + cimglist_for(*this,l) { + const CImg &img = _data[l]; + const unsigned int + w = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,false), + h = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,true); + if (w>max_width) max_width = w; + sum_height+=h; + } + disp.assign(cimg_fitscreen(max_width,sum_height,1),title?title:titles?titles->__display()._data:0,1); + } + if (!title && !titles) disp.set_title("CImgList<%s> (%u)",pixel_type(),_width); + } else if (title) disp.set_title("%s",title); + else if (titles) disp.set_title("%s",titles->__display()._data); + const CImg dtitle = CImg::string(disp.title()); + if (display_info) print(disp.title()); + disp.show().flush(); + + if (_width==1) { + const unsigned int dw = disp._width, dh = disp._height; + if (!is_first_call) + disp.resize(cimg_fitscreen(_data[0]._width,_data[0]._height,_data[0]._depth),false); + disp.set_title("%s (%ux%ux%ux%u)", + dtitle.data(),_data[0]._width,_data[0]._height,_data[0]._depth,_data[0]._spectrum); + _data[0]._display(disp,0,false,XYZ,exit_on_anykey,!is_first_call); + if (disp.key()) is_exit = true; + disp.resize(cimg_fitscreen(dw,dh,1),false).set_title("%s",dtitle.data()); + } else { + bool disp_resize = !is_first_call; + while (!disp.is_closed() && !is_exit) { + const CImg s = _select(disp,0,true,axis,align,exit_on_anykey,orig,disp_resize,!is_first_call,true); + disp_resize = true; + if (s[0]<0 && !disp.wheel()) { // No selections done + if (disp.button()&2) { disp.flush(); break; } + is_exit = true; + } else if (disp.wheel()) { // Zoom in/out + const int wheel = disp.wheel(); + disp.set_wheel(); + if (!is_first_call && wheel<0) break; + if (wheel>0 && _width>=4) { + const unsigned int + delta = std::max(1U,(unsigned int)cimg::round(0.3*_width)), + ind0 = (unsigned int)std::max(0,s[0] - (int)delta), + ind1 = (unsigned int)std::min(width() - 1,s[0] + (int)delta); + if ((ind0!=0 || ind1!=_width - 1) && ind1 - ind0>=3) { + const CImgList sublist = get_shared_images(ind0,ind1); + CImgList t_sublist; + if (titles) t_sublist = titles->get_shared_images(ind0,ind1); + sublist._display(disp,0,titles?&t_sublist:0,false,axis,align,XYZ,exit_on_anykey, + orig + ind0,false,is_exit); + } + } + } else if (s[0]!=0 || s[1]!=width() - 1) { + const CImgList sublist = get_shared_images(s[0],s[1]); + CImgList t_sublist; + if (titles) t_sublist = titles->get_shared_images(s[0],s[1]); + sublist._display(disp,0,titles?&t_sublist:0,false,axis,align,XYZ,exit_on_anykey, + orig + s[0],false,is_exit); + } + disp.set_title("%s",dtitle.data()); + } + } + return *this; + } + + // [internal] Return string to describe display title. + CImg __display() const { + CImg res, str; + cimglist_for(*this,l) { + CImg::string((char*)_data[l]).move_to(str); + if (l!=width() - 1) { + str.resize(str._width + 1,1,1,1,0); + str[str._width - 2] = ','; + str[str._width - 1] = ' '; + } + res.append(str,'x'); + } + if (!res) return CImg(1,1,1,1,0).move_to(res); + cimg::strellipsize(res,128,false); + if (_width>1) { + const unsigned int l = (unsigned int)std::strlen(res); + if (res._width<=l + 16) res.resize(l + 16,1,1,1,0); + cimg_snprintf(res._data + l,16," (#%u)",_width); + } + return res; + } + + //! Save list into a file. + /** + \param filename Filename to write data to. + \param number When positive, represents an index added to the filename. Otherwise, no number is added. + \param digits Number of digits used for adding the number to the filename. + **/ + const CImgList& save(const char *const filename, const int number=-1, const unsigned int digits=6) const { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "save(): Specified filename is (null).", + cimglist_instance); + // Do not test for empty instances, since .cimg format is able to manage empty instances. + const bool is_stdout = *filename=='-' && (!filename[1] || filename[1]=='.'); + const char *const ext = cimg::split_filename(filename); + CImg nfilename(1024); + const char *const fn = is_stdout?filename:number>=0?cimg::number_filename(filename,number,digits,nfilename): + filename; + +#ifdef cimglist_save_plugin + cimglist_save_plugin(fn); +#endif +#ifdef cimglist_save_plugin1 + cimglist_save_plugin1(fn); +#endif +#ifdef cimglist_save_plugin2 + cimglist_save_plugin2(fn); +#endif +#ifdef cimglist_save_plugin3 + cimglist_save_plugin3(fn); +#endif +#ifdef cimglist_save_plugin4 + cimglist_save_plugin4(fn); +#endif +#ifdef cimglist_save_plugin5 + cimglist_save_plugin5(fn); +#endif +#ifdef cimglist_save_plugin6 + cimglist_save_plugin6(fn); +#endif +#ifdef cimglist_save_plugin7 + cimglist_save_plugin7(fn); +#endif +#ifdef cimglist_save_plugin8 + cimglist_save_plugin8(fn); +#endif + if (!cimg::strcasecmp(ext,"cimgz")) return save_cimg(fn,true); + else if (!cimg::strcasecmp(ext,"cimg") || !*ext) return save_cimg(fn,false); + else if (!cimg::strcasecmp(ext,"yuv")) return save_yuv(fn,444,true); + else if (!cimg::strcasecmp(ext,"avi") || + !cimg::strcasecmp(ext,"mov") || + !cimg::strcasecmp(ext,"asf") || + !cimg::strcasecmp(ext,"divx") || + !cimg::strcasecmp(ext,"flv") || + !cimg::strcasecmp(ext,"mpg") || + !cimg::strcasecmp(ext,"m1v") || + !cimg::strcasecmp(ext,"m2v") || + !cimg::strcasecmp(ext,"m4v") || + !cimg::strcasecmp(ext,"mjp") || + !cimg::strcasecmp(ext,"mp4") || + !cimg::strcasecmp(ext,"mkv") || + !cimg::strcasecmp(ext,"mpe") || + !cimg::strcasecmp(ext,"movie") || + !cimg::strcasecmp(ext,"ogm") || + !cimg::strcasecmp(ext,"ogg") || + !cimg::strcasecmp(ext,"ogv") || + !cimg::strcasecmp(ext,"qt") || + !cimg::strcasecmp(ext,"rm") || + !cimg::strcasecmp(ext,"vob") || + !cimg::strcasecmp(ext,"webm") || + !cimg::strcasecmp(ext,"wmv") || + !cimg::strcasecmp(ext,"xvid") || + !cimg::strcasecmp(ext,"mpeg")) return save_video(fn); +#ifdef cimg_use_tiff + else if (!cimg::strcasecmp(ext,"tif") || + !cimg::strcasecmp(ext,"tiff")) return save_tiff(fn); +#endif + else if (!cimg::strcasecmp(ext,"gz")) return save_gzip_external(fn); + else { + if (_width==1) _data[0].save(fn,-1); + else cimglist_for(*this,l) { _data[l].save(fn,is_stdout?-1:l); if (is_stdout) std::fputc(EOF,cimg::_stdout()); } + } + return *this; + } + + //! Tell if an image list can be saved as one single file. + /** + \param filename Filename, as a C-string. + \return \c true if the file format supports multiple images, \c false otherwise. + **/ + static bool is_saveable(const char *const filename) { + const char *const ext = cimg::split_filename(filename); + if (!cimg::strcasecmp(ext,"cimgz") || +#ifdef cimg_use_tiff + !cimg::strcasecmp(ext,"tif") || + !cimg::strcasecmp(ext,"tiff") || +#endif + !cimg::strcasecmp(ext,"yuv") || + !cimg::strcasecmp(ext,"avi") || + !cimg::strcasecmp(ext,"mov") || + !cimg::strcasecmp(ext,"asf") || + !cimg::strcasecmp(ext,"divx") || + !cimg::strcasecmp(ext,"flv") || + !cimg::strcasecmp(ext,"mpg") || + !cimg::strcasecmp(ext,"m1v") || + !cimg::strcasecmp(ext,"m2v") || + !cimg::strcasecmp(ext,"m4v") || + !cimg::strcasecmp(ext,"mjp") || + !cimg::strcasecmp(ext,"mp4") || + !cimg::strcasecmp(ext,"mkv") || + !cimg::strcasecmp(ext,"mpe") || + !cimg::strcasecmp(ext,"movie") || + !cimg::strcasecmp(ext,"ogm") || + !cimg::strcasecmp(ext,"ogg") || + !cimg::strcasecmp(ext,"ogv") || + !cimg::strcasecmp(ext,"qt") || + !cimg::strcasecmp(ext,"rm") || + !cimg::strcasecmp(ext,"vob") || + !cimg::strcasecmp(ext,"webm") || + !cimg::strcasecmp(ext,"wmv") || + !cimg::strcasecmp(ext,"xvid") || + !cimg::strcasecmp(ext,"mpeg")) return true; + return false; + } + + //! Save image sequence as a GIF animated file. + /** + \param filename Filename to write data to. + \param fps Number of desired frames per second. + \param nb_loops Number of loops (\c 0 for infinite looping). + **/ + const CImgList& save_gif_external(const char *const filename, const float fps=25, + const unsigned int nb_loops=0) { + CImg command(1024), filename_tmp(256), filename_tmp2(256); + CImgList filenames; + std::FILE *file = 0; + +#ifdef cimg_use_png +#define _cimg_save_gif_extension "png" +#else +#define _cimg_save_gif_extension "ppm" +#endif + + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_000001." _cimg_save_gif_extension,filename_tmp._data); + if ((file=cimg::std_fopen(filename_tmp2,"rb"))!=0) cimg::fclose(file); + } while (file); + cimglist_for(*this,l) { + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_%.6u." _cimg_save_gif_extension,filename_tmp._data,l + 1); + CImg::string(filename_tmp2).move_to(filenames); + if (_data[l]._depth>1 || _data[l]._spectrum!=3) _data[l].get_resize(-100,-100,1,3).save(filename_tmp2); + else _data[l].save(filename_tmp2); + } + cimg_snprintf(command,command._width,"\"%s\" -delay %u -loop %u", + cimg::imagemagick_path(),(unsigned int)std::max(0.f,cimg::round(100/fps)),nb_loops); + CImg::string(command).move_to(filenames,0); + cimg_snprintf(command,command._width,"\"%s\"", + CImg::string(filename)._system_strescape().data()); + CImg::string(command).move_to(filenames); + CImg _command = filenames>'x'; + cimg_for(_command,p,char) if (!*p) *p = ' '; + _command.back() = 0; + + cimg::system(_command, cimg::imagemagick_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimglist_instance + "save_gif_external(): Failed to save file '%s' with external command 'magick/convert'.", + cimglist_instance, + filename); + else cimg::fclose(file); + cimglist_for_in(*this,1,filenames._width - 1,l) std::remove(filenames[l]); + return *this; + } + + //! Save list as a YUV image sequence file. + /** + \param filename Filename to write data to. + \param chroma_subsampling Type of chroma subsampling. Can be { 420 | 422 | 444 }. + \param is_rgb Tells if the RGB to YUV conversion must be done for saving. + **/ + const CImgList& save_yuv(const char *const filename=0, + const unsigned int chroma_subsampling=444, + const bool is_rgb=true) const { + return _save_yuv(0,filename,chroma_subsampling,is_rgb); + } + + //! Save image sequence into a YUV file. + /** + \param file File to write data to. + \param chroma_subsampling Type of chroma subsampling. Can be { 420 | 422 | 444 }. + \param is_rgb Tells if the RGB to YUV conversion must be done for saving. + **/ + const CImgList& save_yuv(std::FILE *const file, + const unsigned int chroma_subsampling=444, + const bool is_rgb=true) const { + return _save_yuv(file,0,chroma_subsampling,is_rgb); + } + + const CImgList& _save_yuv(std::FILE *const file, const char *const filename, + const unsigned int chroma_subsampling, + const bool is_rgb) const { + if (!file && !filename) + throw CImgArgumentException(_cimglist_instance + "save_yuv(): Specified filename is (null).", + cimglist_instance); + if (chroma_subsampling!=420 && chroma_subsampling!=422 && chroma_subsampling!=444) + throw CImgArgumentException(_cimglist_instance + "save_yuv(): Specified chroma subsampling %u is invalid, for file '%s'.", + cimglist_instance, + chroma_subsampling,filename?filename:"(FILE*)"); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + const unsigned int + cfx = chroma_subsampling==420 || chroma_subsampling==422?2:1, + cfy = chroma_subsampling==420?2:1, + w0 = (*this)[0]._width, h0 = (*this)[0]._height, + width0 = w0 + (w0%cfx), height0 = h0 + (h0%cfy); + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + cimglist_for(*this,l) { + const CImg &frame = (*this)[l]; + cimg_forZ(frame,z) { + CImg YUV; + if (sizeof(T)==1 && !is_rgb && + frame._width==width0 && frame._height==height0 && frame._depth==1 && frame._spectrum==3) + YUV.assign((unsigned char*)frame._data,width0,height0,1,3,true); + else { + YUV = frame.get_slice(z); + if (YUV._width!=width0 || YUV._height!=height0) YUV.resize(width0,height0,1,-100,0); + if (YUV._spectrum!=3) YUV.resize(-100,-100,1,3,YUV._spectrum==1?1:0); + if (is_rgb) YUV.RGBtoYCbCr(); + } + if (chroma_subsampling==444) + cimg::fwrite(YUV._data,(size_t)YUV._width*YUV._height*3,nfile); + else { + cimg::fwrite(YUV._data,(size_t)YUV._width*YUV._height,nfile); + CImg UV = YUV.get_channels(1,2); + UV.resize(UV._width/cfx,UV._height/cfy,1,2,2); + cimg::fwrite(UV._data,(size_t)UV._width*UV._height*2,nfile); + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save list into a .cimg file. + /** + \param filename Filename to write data to. + \param is_compressed Tells if data compression must be enabled. + **/ + const CImgList& save_cimg(const char *const filename, const bool is_compressed=false) const { + return _save_cimg(0,filename,is_compressed); + } + + const CImgList& _save_cimg(std::FILE *const file, const char *const filename, const bool is_compressed) const { + if (!file && !filename) + throw CImgArgumentException(_cimglist_instance + "save_cimg(): Specified filename is (null).", + cimglist_instance); +#ifndef cimg_use_zlib + if (is_compressed) + cimg::warn(_cimglist_instance + "save_cimg(): Unable to save compressed data in file '%s' unless zlib is enabled, " + "saving them uncompressed.", + cimglist_instance, + filename?filename:"(FILE*)"); +#endif + const char *const ptype = pixel_type(), *const etype = cimg::endianness()?"big":"little"; + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const bool is_bool = ptype==cimg::type::string(); + if (!is_bool && std::strstr(ptype,"unsigned")==ptype) + std::fprintf(nfile,"%u unsigned_%s %s_endian\n",_width,ptype + 9,etype); + else + std::fprintf(nfile,"%u %s %s_endian\n",_width,ptype,etype); + + cimglist_for(*this,l) { + const CImg& img = _data[l]; + std::fprintf(nfile,"%u %u %u %u",img._width,img._height,img._depth,img._spectrum); + if (img._data) { + CImg tmp; + if (cimg::endianness()) { tmp = img; cimg::invert_endianness(tmp._data,tmp.size()); } + const CImg& ref = cimg::endianness()?tmp:img; + bool failed_to_compress = true; + if (is_compressed) { +#ifdef cimg_use_zlib + Bytef *cbuf = 0; + uLongf csiz = 0; + + if (is_bool) { // Boolean data (bitwise) + ulongT siz; + const unsigned char *const buf = ref._bool2uchar(siz,false); + csiz = siz + siz/100 + 16; + cbuf = new Bytef[csiz]; + failed_to_compress = (bool)compress(cbuf,&csiz,(Bytef*)buf,siz); + if (!failed_to_compress) { + std::fprintf(nfile," #%lu\n",csiz); + cimg::fwrite(cbuf,csiz,nfile); + } + delete[] buf; + } else { // Non-boolean data + const ulongT siz = sizeof(T)*ref.size(); + csiz = siz + siz/100 + 16; + cbuf = new Bytef[csiz]; + failed_to_compress = (bool)compress(cbuf,&csiz,(Bytef*)ref._data,siz); + if (!failed_to_compress) { + std::fprintf(nfile," #%lu\n",csiz); + cimg::fwrite(cbuf,csiz,nfile); + } + } + if (failed_to_compress) + cimg::warn(_cimglist_instance + "save_cimg(): Failed to save compressed data for file '%s', saving them uncompressed.", + cimglist_instance, + filename?filename:"(FILE*)"); + delete[] cbuf; +#endif + } + if (failed_to_compress) { // Write non-compressed + std::fputc('\n',nfile); + if (is_bool) { // Boolean data (bitwise) + ulongT siz; + const unsigned char *const buf = ref._bool2uchar(siz,false); + cimg::fwrite(buf,siz,nfile); + delete[] buf; + } else cimg::fwrite(ref._data,ref.size(),nfile); // Non-boolean data + } + } else std::fputc('\n',nfile); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save list into a .cimg file. + /** + \param file File to write data to. + \param is_compressed Tells if data compression must be enabled. + **/ + const CImgList& save_cimg(std::FILE *file, const bool is_compressed=false) const { + return _save_cimg(file,0,is_compressed); + } + + const CImgList& _save_cimg(std::FILE *const file, const char *const filename, + const unsigned int n0, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0) const { +#define _cimg_save_cimg_case(Ts,Tss) \ + if (!saved && !cimg::strcasecmp(Ts,str_pixeltype)) { \ + for (unsigned int l = 0; l0) { \ + if (l=W || y0>=H || z0>=D || c0>=D) cimg::fseek(nfile,W*H*D*C*sizeof(Tss),SEEK_CUR); \ + else { \ + const CImg& img = (*this)[l - n0]; \ + const T *ptrs = img._data; \ + const unsigned int \ + x1 = x0 + img._width - 1, \ + y1 = y0 + img._height - 1, \ + z1 = z0 + img._depth - 1, \ + c1 = c0 + img._spectrum - 1, \ + nx1 = x1>=W?W - 1:x1, \ + ny1 = y1>=H?H - 1:y1, \ + nz1 = z1>=D?D - 1:z1, \ + nc1 = c1>=C?C - 1:c1; \ + CImg raw(1 + nx1 - x0); \ + const unsigned int skipvb = c0*W*H*D*sizeof(Tss); \ + if (skipvb) cimg::fseek(nfile,skipvb,SEEK_CUR); \ + for (unsigned int v = 1 + nc1 - c0; v; --v) { \ + const unsigned int skipzb = z0*W*H*sizeof(Tss); \ + if (skipzb) cimg::fseek(nfile,skipzb,SEEK_CUR); \ + for (unsigned int z = 1 + nz1 - z0; z; --z) { \ + const unsigned int skipyb = y0*W*sizeof(Tss); \ + if (skipyb) cimg::fseek(nfile,skipyb,SEEK_CUR); \ + for (unsigned int y = 1 + ny1 - y0; y; --y) { \ + const unsigned int skipxb = x0*sizeof(Tss); \ + if (skipxb) cimg::fseek(nfile,skipxb,SEEK_CUR); \ + raw.assign(ptrs, raw._width); \ + ptrs+=img._width; \ + if (endian) cimg::invert_endianness(raw._data,raw._width); \ + cimg::fwrite(raw._data,raw._width,nfile); \ + const unsigned int skipxe = (W - 1 - nx1)*sizeof(Tss); \ + if (skipxe) cimg::fseek(nfile,skipxe,SEEK_CUR); \ + } \ + const unsigned int skipye = (H - 1 - ny1)*W*sizeof(Tss); \ + if (skipye) cimg::fseek(nfile,skipye,SEEK_CUR); \ + } \ + const unsigned int skipze = (D - 1 - nz1)*W*H*sizeof(Tss); \ + if (skipze) cimg::fseek(nfile,skipze,SEEK_CUR); \ + } \ + const unsigned int skipve = (C - 1 - nc1)*W*H*D*sizeof(Tss); \ + if (skipve) cimg::fseek(nfile,skipve,SEEK_CUR); \ + } \ + } \ + } \ + saved = true; \ + } + + if (!file && !filename) + throw CImgArgumentException(_cimglist_instance + "save_cimg(): Specified filename is (null).", + cimglist_instance); + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "save_cimg(): Empty instance, for file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb+"); + bool saved = false, endian = cimg::endianness(); + CImg tmp(256), str_pixeltype(256), str_endian(256); + *tmp = *str_pixeltype = *str_endian = 0; + unsigned int j, N, W, H, D, C; + int i, err; + j = 0; while ((i=std::fgetc(nfile))!='\n' && i!=EOF && j<256) tmp[j++] = (char)i; tmp[j] = 0; + err = cimg_sscanf(tmp,"%u%*c%255[A-Za-z64_]%*c%255[sA-Za-z_ ]",&N,str_pixeltype._data,str_endian._data); + if (err<2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "save_cimg(): CImg header not found in file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)"); + } + if (!cimg::strncasecmp("little",str_endian,6)) endian = false; + else if (!cimg::strncasecmp("big",str_endian,3)) endian = true; + const unsigned int lmax = std::min(N,n0 + _width); + _cimg_save_cimg_case("bool",bool); + _cimg_save_cimg_case("unsigned_char",unsigned char); + _cimg_save_cimg_case("uchar",unsigned char); + _cimg_save_cimg_case("char",char); + _cimg_save_cimg_case("unsigned_short",unsigned short); + _cimg_save_cimg_case("ushort",unsigned short); + _cimg_save_cimg_case("short",short); + _cimg_save_cimg_case("unsigned_int",unsigned int); + _cimg_save_cimg_case("uint",unsigned int); + _cimg_save_cimg_case("int",int); + _cimg_save_cimg_case("unsigned_int64",uint64T); + _cimg_save_cimg_case("uint64",uint64T); + _cimg_save_cimg_case("int64",int64T); + _cimg_save_cimg_case("float",float); + _cimg_save_cimg_case("double",double); + if (!saved) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "save_cimg(): Unsupported data type '%s' for file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)",str_pixeltype._data); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Insert the image instance into into an existing .cimg file, at specified coordinates. + /** + \param filename Filename to write data to. + \param n0 Starting index of images to write. + \param x0 Starting X-coordinates of image regions to write. + \param y0 Starting Y-coordinates of image regions to write. + \param z0 Starting Z-coordinates of image regions to write. + \param c0 Starting C-coordinates of image regions to write. + **/ + const CImgList& save_cimg(const char *const filename, + const unsigned int n0, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0) const { + return _save_cimg(0,filename,n0,x0,y0,z0,c0); + } + + //! Insert the image instance into into an existing .cimg file, at specified coordinates. + /** + \param file File to write data to. + \param n0 Starting index of images to write. + \param x0 Starting X-coordinates of image regions to write. + \param y0 Starting Y-coordinates of image regions to write. + \param z0 Starting Z-coordinates of image regions to write. + \param c0 Starting C-coordinates of image regions to write. + **/ + const CImgList& save_cimg(std::FILE *const file, + const unsigned int n0, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0) const { + return _save_cimg(file,0,n0,x0,y0,z0,c0); + } + + static void _save_empty_cimg(std::FILE *const file, const char *const filename, + const unsigned int nb, + const unsigned int dx, const unsigned int dy, + const unsigned int dz, const unsigned int dc) { + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const ulongT siz = (ulongT)dx*dy*dz*dc*sizeof(T); + std::fprintf(nfile,"%u %s\n",nb,pixel_type()); + for (unsigned int i=nb; i; --i) { + std::fprintf(nfile,"%u %u %u %u\n",dx,dy,dz,dc); + for (ulongT off = siz; off; --off) std::fputc(0,nfile); + } + if (!file) cimg::fclose(nfile); + } + + //! Save empty (non-compressed) .cimg file with specified dimensions. + /** + \param filename Filename to write data to. + \param nb Number of images to write. + \param dx Width of images in the written file. + \param dy Height of images in the written file. + \param dz Depth of images in the written file. + \param dc Spectrum of images in the written file. + **/ + static void save_empty_cimg(const char *const filename, + const unsigned int nb, + const unsigned int dx, const unsigned int dy=1, + const unsigned int dz=1, const unsigned int dc=1) { + return _save_empty_cimg(0,filename,nb,dx,dy,dz,dc); + } + + //! Save empty .cimg file with specified dimensions. + /** + \param file File to write data to. + \param nb Number of images to write. + \param dx Width of images in the written file. + \param dy Height of images in the written file. + \param dz Depth of images in the written file. + \param dc Spectrum of images in the written file. + **/ + static void save_empty_cimg(std::FILE *const file, + const unsigned int nb, + const unsigned int dx, const unsigned int dy=1, + const unsigned int dz=1, const unsigned int dc=1) { + return _save_empty_cimg(file,0,nb,dx,dy,dz,dc); + } + + //! Save list as a TIFF file. + /** + \param filename Filename to write data to. + \param compression_type Compression mode used to write data. + \param voxel_size Voxel size, to be stored in the filename. + \param description Description, to be stored in the filename. + \param use_bigtiff Allow to save big tiff files (>4Gb). + **/ + const CImgList& save_tiff(const char *const filename, const unsigned int compression_type=0, + const float *const voxel_size=0, const char *const description=0, + const bool use_bigtiff=true) const { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "save_tiff(): Specified filename is (null).", + cimglist_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + +#ifndef cimg_use_tiff + if (_width==1) _data[0].save_tiff(filename,compression_type,voxel_size,description,use_bigtiff); + else cimglist_for(*this,l) { + CImg nfilename(1024); + cimg::number_filename(filename,l,6,nfilename); + _data[l].save_tiff(nfilename,compression_type,voxel_size,description,use_bigtiff); + } +#else + ulongT siz = 0; + cimglist_for(*this,l) siz+=_data[l].size(); + const bool _use_bigtiff = use_bigtiff && sizeof(siz)>=8 && siz*sizeof(T)>=1UL<<31; // No bigtiff for small images + TIFF *tif = TIFFOpen(filename,_use_bigtiff?"w8":"w4"); + if (tif) { + for (unsigned int dir = 0, l = 0; l<_width; ++l) { + const CImg& img = (*this)[l]; + cimg_forZ(img,z) img._save_tiff(tif,dir++,z,compression_type,voxel_size,description); + } + TIFFClose(tif); + } else + throw CImgIOException(_cimglist_instance + "save_tiff(): Failed to open stream for file '%s'.", + cimglist_instance, + filename); +#endif + return *this; + } + + //! Save list as a gzipped file, using external tool 'gzip'. + /** + \param filename Filename to write data to. + **/ + const CImgList& save_gzip_external(const char *const filename) const { + if (!filename) + throw CImgIOException(_cimglist_instance + "save_gzip_external(): Specified filename is (null).", + cimglist_instance); + CImg command(1024), filename_tmp(256), body(256); + const char + *ext = cimg::split_filename(filename,body), + *ext2 = cimg::split_filename(body,0); + std::FILE *file; + do { + if (!cimg::strcasecmp(ext,"gz")) { + if (*ext2) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext2); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.cimg", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } else { + if (*ext) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.cimg", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + + if (is_saveable(body)) { + save(filename_tmp); + cimg_snprintf(command,command._width,"\"%s\" -c \"%s\" > \"%s\"", + cimg::gzip_path(), + CImg::string(filename_tmp)._system_strescape().data(), + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::gzip_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimglist_instance + "save_gzip_external(): Failed to save file '%s' with external command 'gzip'.", + cimglist_instance, + filename); + else cimg::fclose(file); + std::remove(filename_tmp); + } else { + CImg nfilename(1024); + cimglist_for(*this,l) { + cimg::number_filename(body,l,6,nfilename); + if (*ext) cimg_sprintf(nfilename._data + std::strlen(nfilename),".%s",ext); + _data[l].save_gzip_external(nfilename); + } + } + return *this; + } + + //! Save image sequence (using the OpenCV library when available). + /** + \param filename Filename to write data to. + \param fps Number of frames per second. + \param codec Type of compression (See http://www.fourcc.org/codecs.php to see available codecs). + \param keep_open Tells if the video writer associated to the specified filename + must be kept open or not (to allow frames to be added in the same file afterwards). + **/ + const CImgList& save_video(const char *const filename, const unsigned int fps=25, + const char *codec=0, const bool keep_open=false) const { +#ifndef cimg_use_opencv + cimg::unused(codec,keep_open); + return save_ffmpeg_external(filename,fps); +#else + try { + static cv::VideoWriter *writers[32] = { 0 }; + static CImgList filenames(32); + static CImg sizes(32,2,1,1,0); + static int last_used_index = -1; + + // Detect if a video writer already exists for the specified filename. + cimg::mutex(9); + int index = -1; + if (filename) { + if (last_used_index>=0 && !std::strcmp(filename,filenames[last_used_index])) { + index = last_used_index; + } else cimglist_for(filenames,l) if (filenames[l] && !std::strcmp(filename,filenames[l])) { + index = l; break; + } + } else index = last_used_index; + cimg::mutex(9,0); + + // Find empty slot for capturing video stream. + if (index<0) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "save_video(): No already open video writer found. You must specify a " + "non-(null) filename argument for the first call.", + cimglist_instance); + else { cimg::mutex(9); cimglist_for(filenames,l) if (!filenames[l]) { index = l; break; } cimg::mutex(9,0); } + if (index<0) + throw CImgIOException(_cimglist_instance + "save_video(): File '%s', no video writer slots available. " + "You have to release some of your previously opened videos.", + cimglist_instance,filename); + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "save_video(): Instance list is empty.", + cimglist_instance); + const unsigned int W = _data?_data[0]._width:0, H = _data?_data[0]._height:0; + if (!W || !H) + throw CImgInstanceException(_cimglist_instance + "save_video(): Frame [0] is an empty image.", + cimglist_instance); + const char + *const _codec = codec && *codec?codec:"h264", + codec0 = cimg::uppercase(_codec[0]), + codec1 = _codec[0]?cimg::uppercase(_codec[1]):0, + codec2 = _codec[1]?cimg::uppercase(_codec[2]):0, + codec3 = _codec[2]?cimg::uppercase(_codec[3]):0; + cimg::mutex(9); + writers[index] = new cv::VideoWriter(filename,_cimg_fourcc(codec0,codec1,codec2,codec3),fps,cv::Size(W,H)); + if (!writers[index]->isOpened()) { + delete writers[index]; + writers[index] = 0; + cimg::mutex(9,0); + throw CImgIOException(_cimglist_instance + "save_video(): File '%s', unable to initialize video writer with codec '%c%c%c%c'.", + cimglist_instance,filename, + codec0,codec1,codec2,codec3); + } + CImg::string(filename).move_to(filenames[index]); + sizes(index,0) = W; + sizes(index,1) = H; + cimg::mutex(9,0); + } + + if (!is_empty()) { + const unsigned int W = sizes(index,0), H = sizes(index,1); + cimg::mutex(9); + cimglist_for(*this,l) { + CImg &src = _data[l]; + if (src.is_empty()) + cimg::warn(_cimglist_instance + "save_video(): Skip empty frame %d for file '%s'.", + cimglist_instance,l,filename); + if (src._depth>1 || src._spectrum>3) + cimg::warn(_cimglist_instance + "save_video(): Frame %u has incompatible dimension (%u,%u,%u,%u). " + "Some image data may be ignored when writing frame into video file '%s'.", + cimglist_instance,l,src._width,src._height,src._depth,src._spectrum,filename); + if (src._width==W && src._height==H && src._spectrum==3) + writers[index]->write(CImg(src)._cimg2cvmat()); + else { + CImg _src(src,false); + _src.channels(0,std::min(_src._spectrum - 1,2U)).resize(W,H); + _src.resize(W,H,1,3,_src._spectrum==1); + writers[index]->write(_src._cimg2cvmat()); + } + } + cimg::mutex(9,0); + } + + cimg::mutex(9); + if (!keep_open) { + delete writers[index]; + writers[index] = 0; + filenames[index].assign(); + sizes(index,0) = sizes(index,1) = 0; + last_used_index = -1; + } else last_used_index = index; + cimg::mutex(9,0); + } catch (CImgIOException &e) { + if (!keep_open) return save_ffmpeg_external(filename,fps); + throw e; + } + return *this; +#endif + } + + //! Save image sequence, using the external tool 'ffmpeg'. + /** + \param filename Filename to write data to. + \param fps Number of frames per second. + \param codec Type of compression. + \param bitrate Output bitrate + **/ + const CImgList& save_ffmpeg_external(const char *const filename, const unsigned int fps=25, + const char *const codec=0, const unsigned int bitrate=2048) const { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "save_ffmpeg_external(): Specified filename is (null).", + cimglist_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + + const char + *const ext = cimg::split_filename(filename), + *const _codec = codec?codec: + !cimg::strcasecmp(ext,"flv")?"flv": + !cimg::strcasecmp(ext,"mp4")?"h264":"mpeg2video"; + + CImg command(1024), filename_tmp(256), filename_tmp2(256); + CImgList filenames; + std::FILE *file = 0; + cimglist_for(*this,l) if (!_data[l].is_sameXYZ(_data[0])) + throw CImgInstanceException(_cimglist_instance + "save_ffmpeg_external(): Invalid instance dimensions for file '%s'.", + cimglist_instance, + filename); + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_000001.ppm",filename_tmp._data); + if ((file=cimg::std_fopen(filename_tmp2,"rb"))!=0) cimg::fclose(file); + } while (file); + cimglist_for(*this,l) { + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_%.6u.ppm",filename_tmp._data,l + 1); + CImg::string(filename_tmp2).move_to(filenames); + CImg tmp = _data[l].get_shared(); + if (tmp._width%2 || tmp._height%2) // Force output to have an even number of columns and rows + tmp.assign(tmp.get_resize(tmp._width + (tmp._width%2),tmp._height + (tmp._height%2),1,-100,0),false); + if (tmp._depth>1 || tmp._spectrum!=3) // Force output to be one slice, in color + tmp.assign(tmp.get_resize(-100,-100,1,3),false); + tmp.save_pnm(filename_tmp2); + } + cimg_snprintf(command,command._width, + "\"%s\" -v -8 -y -i \"%s_%%6d.ppm\" -pix_fmt yuv420p -vcodec %s -b %uk -r %u \"%s\"", + cimg::ffmpeg_path(), + CImg::string(filename_tmp)._system_strescape().data(), + _codec,bitrate,fps, + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::ffmpeg_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimglist_instance + "save_ffmpeg_external(): Failed to save file '%s' with external command 'ffmpeg'.", + cimglist_instance, + filename); + else cimg::fclose(file); + cimglist_for(*this,l) std::remove(filenames[l]); + return *this; + } + + //! Serialize a CImgList instance into a raw CImg buffer. + /** + \param is_compressed tells if zlib compression must be used for serialization + (this requires 'cimg_use_zlib' been enabled). + **/ + CImg get_serialize(const bool is_compressed=false) const { +#ifndef cimg_use_zlib + if (is_compressed) + cimg::warn(_cimglist_instance + "get_serialize(): Unable to compress data unless zlib is enabled, " + "storing them uncompressed.", + cimglist_instance); +#endif + CImgList stream; + CImg tmpstr(128); + const char *const ptype = pixel_type(), *const etype = cimg::endianness()?"big":"little"; + if (std::strstr(ptype,"unsigned")==ptype) + cimg_snprintf(tmpstr,tmpstr._width,"%u unsigned_%s %s_endian\n",_width,ptype + 9,etype); + else + cimg_snprintf(tmpstr,tmpstr._width,"%u %s %s_endian\n",_width,ptype,etype); + CImg::string(tmpstr,false).move_to(stream); + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_snprintf(tmpstr,tmpstr._width,"%u %u %u %u",img._width,img._height,img._depth,img._spectrum); + CImg::string(tmpstr,false).move_to(stream); + if (img._data) { + CImg tmp; + if (cimg::endianness()) { tmp = img; cimg::invert_endianness(tmp._data,tmp.size()); } + const CImg& ref = cimg::endianness()?tmp:img; + bool failed_to_compress = true; + if (is_compressed) { +#ifdef cimg_use_zlib + const ulongT siz = sizeof(T)*ref.size(); + uLongf csiz = (ulongT)compressBound(siz); + Bytef *const cbuf = new Bytef[csiz]; + if (compress(cbuf,&csiz,(Bytef*)ref._data,siz)) + cimg::warn(_cimglist_instance + "get_serialize(): Failed to save compressed data, saving them uncompressed.", + cimglist_instance); + else { + cimg_snprintf(tmpstr,tmpstr._width," #%lu\n",csiz); + CImg::string(tmpstr,false).move_to(stream); + CImg(cbuf,csiz).move_to(stream); + delete[] cbuf; + failed_to_compress = false; + } +#endif + } + if (failed_to_compress) { // Write in a non-compressed way + CImg::string("\n",false).move_to(stream); + stream.insert(1); + stream.back().assign((unsigned char*)ref._data,ref.size()*sizeof(T),1,1,1,true); + } + } else CImg::string("\n",false).move_to(stream); + } + cimglist_apply(stream,unroll)('y'); + return stream>'y'; + } + + //! Unserialize a CImg serialized buffer into a CImgList list. + template + static CImgList get_unserialize(const CImg& buffer) { +#ifdef cimg_use_zlib +#define _cimgz_unserialize_case(Tss) { \ + Bytef *cbuf = 0; \ + if (sizeof(t)!=1 || buffer.pixel_type()==cimg::type::string()) { \ + cbuf = new Bytef[csiz]; Bytef *_cbuf = cbuf; \ + for (ulongT k = 0; k::get_unserialize(): Unable to unserialize compressed data " \ + "unless zlib is enabled.", \ + pixel_type()); +#endif + +#define _cimg_unserialize_case(Ts,Tss) \ + if (!loaded && !cimg::strcasecmp(Ts,str_pixeltype)) { \ + for (unsigned int l = 0; l::unserialize(): Invalid specified size (%u,%u,%u,%u) for " \ + "image #%u in serialized buffer.", \ + pixel_type(),W,H,D,C,l); \ + if (W*H*D*C>0) { \ + CImg raw; \ + CImg &img = res._data[l]; \ + if (err==5) _cimgz_unserialize_case(Tss) \ + else { \ + raw.assign(W,H,D,C); \ + CImg _raw((unsigned char*)raw._data,W*sizeof(Tss),H,D,C,true); \ + if (sizeof(t)==1) { std::memcpy(_raw,stream,_raw.size()); stream+=_raw.size(); } \ + else cimg_for(_raw,p,unsigned char) *p = (unsigned char)*(stream++); \ + } \ + if (endian!=cimg::endianness()) cimg::invert_endianness(raw._data,raw.size()); \ + raw.move_to(img); \ + } \ + } \ + loaded = true; \ + } + + if (buffer.is_empty()) + throw CImgArgumentException("CImgList<%s>::get_unserialize(): Specified serialized buffer is (null).", + pixel_type()); + CImgList res; + const t *stream = buffer._data, *const estream = buffer._data + buffer.size(); + bool loaded = false, endian = cimg::endianness(), is_bytef = false; + CImg tmp(256), str_pixeltype(256), str_endian(256); + *tmp = *str_pixeltype = *str_endian = 0; + unsigned int j, N = 0, W, H, D, C; + uint64T csiz; + int i, err; + cimg::unused(is_bytef); + do { + j = 0; while ((i=(int)*stream)!='\n' && stream::get_unserialize(): CImg header not found in serialized buffer.", + pixel_type()); + if (!cimg::strncasecmp("little",str_endian,6)) endian = false; + else if (!cimg::strncasecmp("big",str_endian,3)) endian = true; + res.assign(N); + _cimg_unserialize_case("bool",bool); + _cimg_unserialize_case("unsigned_char",unsigned char); + _cimg_unserialize_case("uchar",unsigned char); + _cimg_unserialize_case("char",char); + _cimg_unserialize_case("unsigned_short",unsigned short); + _cimg_unserialize_case("ushort",unsigned short); + _cimg_unserialize_case("short",short); + _cimg_unserialize_case("unsigned_int",unsigned int); + _cimg_unserialize_case("uint",unsigned int); + _cimg_unserialize_case("int",int); + _cimg_unserialize_case("unsigned_int64",uint64T); + _cimg_unserialize_case("uint64",uint64T); + _cimg_unserialize_case("int64",int64T); + _cimg_unserialize_case("float",float); + _cimg_unserialize_case("double",double); + if (!loaded) + throw CImgArgumentException("CImgList<%s>::get_unserialize(): Unsupported pixel type '%s' defined " + "in serialized buffer.", + pixel_type(),str_pixeltype._data); + return res; + } + + //@} + //---------------------------------- + // + //! \name Others + //@{ + //---------------------------------- + + //! Return a CImg pre-defined font with requested height. + /** + \param font_height Height of the desired font (exact match for 13,23,53,103). + \param is_variable_width Decide if the font has a variable (\c true) or fixed (\c false) width. + **/ + static const CImgList& font(const unsigned int requested_height, const bool is_variable_width=true) { + if (!requested_height) return CImgList::const_empty(); + cimg::mutex(11); + static const unsigned char font_resizemap[] = { + 0, 4, 7, 9, 11, 13, 15, 17, 19, 21, 22, 24, 26, 27, 29, 30, + 32, 33, 35, 36, 38, 39, 41, 42, 43, 45, 46, 47, 49, 50, 51, 52, + 54, 55, 56, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 71, 72, + 73, 74, 75, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 157, 158, 159, 160, 161, 162, 163, 164, 164, 165, + 166, 167, 168, 169, 170, 170, 171, 172, 173, 174, 175, 176, 176, 177, 178, 179, + 180, 181, 181, 182, 183, 184, 185, 186, 186, 187, 188, 189, 190, 191, 191, 192, + 193, 194, 195, 196, 196, 197, 198, 199, 200, 200, 201, 202, 203, 204, 205, 205, + 206, 207, 208, 209, 209, 210, 211, 212, 213, 213, 214, 215, 216, 216, 217, 218, + 219, 220, 220, 221, 222, 223, 224, 224, 225, 226, 227, 227, 228, 229, 230, 231, + 231, 232, 233, 234, 234, 235, 236, 237, 238, 238, 239, 240, 241, 241, 242, 243, + 244, 244, 245, 246, 247, 247, 248, 249, 250, 250, 251, 252, 253, 253, 254, 255 }; + static const char *const *font_data[] = { + cimg::data_font_small, + cimg::data_font_normal, + cimg::data_font_large, + cimg::data_font_huge }; + static const unsigned int + font_width[] = { 10,26,52,104 }, + font_height[] = { 13,32,64,128 }, + font_M[] = { 86,91,91,47 }, + font_chunk[] = { sizeof(cimg::data_font_small)/sizeof(char*), + sizeof(cimg::data_font_normal)/sizeof(char*), + sizeof(cimg::data_font_large)/sizeof(char*), + sizeof(cimg::data_font_huge)/sizeof(char*) }; + static const unsigned char font_is_binary[] = { 1,0,0,1 }; + static CImg font_base[4]; + + unsigned int ind = + requested_height<=font_height[0]?0U: + requested_height<=font_height[1]?1U: + requested_height<=font_height[2]?2U:3U; + + // Decompress nearest base font data if needed. + CImg &basef = font_base[ind]; + if (!basef) { + basef.assign(256*font_width[ind],font_height[ind]); + + unsigned char *ptrd = basef; + const unsigned char *const ptrde = basef.end(); + + // Recompose font data from several chunks, to deal with MS compiler limit with big strings (64 Kb). + CImg dataf; + for (unsigned int k = 0; k::string(font_data[ind][k],k==font_chunk[ind] - 1,true),'x'); + + // Uncompress font data (decode RLE). + const unsigned int M = font_M[ind]; + if (font_is_binary[ind]) + for (const char *ptrs = dataf; *ptrs; ++ptrs) { + const int _n = (int)(*ptrs - M - 32), v = _n>=0?255:0, n = _n>=0?_n:-_n; + if (ptrd + n<=ptrde) { std::memset(ptrd,v,n); ptrd+=n; } + else { std::memset(ptrd,v,ptrde - ptrd); break; } + } + else + for (const char *ptrs = dataf; *ptrs; ++ptrs) { + int n = (int)*ptrs - M - 32, v = 0; + if (n>=0) { v = 85*n; n = 1; } + else { + n = -n; + v = (int)*(++ptrs) - M - 32; + if (v<0) { v = 0; --ptrs; } else v*=85; + } + if (ptrd + n<=ptrde) { std::memset(ptrd,v,n); ptrd+=n; } + else { std::memset(ptrd,v,ptrde - ptrd); break; } + } + } + + // Find optimal font cache location to return. + static CImgList fonts[16]; + static bool is_variable_widths[16] = { 0 }; + ind = ~0U; + for (int i = 0; i<16; ++i) + if (!fonts[i] || (is_variable_widths[i]==is_variable_width && requested_height==fonts[i][0]._height)) { + ind = (unsigned int)i; break; // Found empty slot or cached font + } + if (ind==~0U) { // No empty slots nor existing font in cache + fonts->assign(); + std::memmove((void*)fonts,(void*)(fonts + 1),15*sizeof(CImgList)); + std::memmove(is_variable_widths,is_variable_widths + 1,15*sizeof(bool)); + std::memset((void*)(fonts + (ind=15)),0,sizeof(CImgList)); // Free a slot in cache for new font + } + CImgList &font = fonts[ind]; + + // Render requested font. + if (!font) { + is_variable_widths[ind] = is_variable_width; + basef.get_split('x',256).move_to(font); + if (requested_height!=font[0]._height) + cimglist_for(font,l) { + font[l].resize(std::max(1U,font[l]._width*requested_height/font[l]._height),requested_height,-100,-100, + font[0]._height>requested_height?2:5); + cimg_for(font[l],ptr,ucharT) *ptr = font_resizemap[*ptr]; + } + if (is_variable_width) { // Crop font + cimglist_for(font,l) { + CImg& letter = font[l]; + int xmin = letter.width(), xmax = 0; + cimg_forX(letter,x) { // Find xmin + cimg_forY(letter,y) if (letter(x,y)) { xmin = x; break; } + if (xmin!=letter.width()) break; + } + cimg_rofX(letter,x) { // Find xmax + cimg_forY(letter,y) if (letter(x,y)) { xmax = x; break; } + if (xmax) break; + } + if (xmin<=xmax) letter.crop(xmin,0,xmax,letter._height - 1); + } + font[(int)' '].resize(font[(int)'f']._width,-100,-100,-100,0); + if (' ' + 256& FFT(const char axis, const bool invert=false) { + if (is_empty()) return *this; + if (_width==1) insert(1); + if (_width>2) + cimg::warn(_cimglist_instance + "FFT(): Instance has more than 2 images", + cimglist_instance); + CImg::FFT(_data[0],_data[1],axis,invert); + return *this; + } + + //! Compute a 1-D Fast Fourier Transform, along specified axis \newinstance. + CImgList get_FFT(const char axis, const bool invert=false) const { + return CImgList(*this,false).FFT(axis,invert); + } + + //! Compute n-D Fast Fourier Transform. + /** + \param invert Tells if the direct (\c false) or inverse transform (\c true) is computed. + **/ + CImgList& FFT(const bool invert=false) { + if (is_empty()) return *this; + if (_width==1) insert(1); + if (_width>2) + cimg::warn(_cimglist_instance + "FFT(): Instance has more than 2 images", + cimglist_instance); + + CImg::FFT(_data[0],_data[1],invert); + return *this; + } + + //! Compute n-D Fast Fourier Transform \newinstance. + CImgList get_FFT(const bool invert=false) const { + return CImgList(*this,false).FFT(invert); + } + + //! Reverse primitives orientations of a 3D object. + /** + **/ + CImgList& reverse_object3d() { + cimglist_for(*this,l) { + CImg& p = _data[l]; + switch (p.size()) { + case 2 : case 3: cimg::swap(p[0],p[1]); break; + case 6 : cimg::swap(p[0],p[1],p[2],p[4],p[3],p[5]); break; + case 9 : cimg::swap(p[0],p[1],p[3],p[5],p[4],p[6]); break; + case 4 : cimg::swap(p[0],p[1],p[2],p[3]); break; + case 12 : cimg::swap(p[0],p[1],p[2],p[3],p[4],p[6],p[5],p[7],p[8],p[10],p[9],p[11]); break; + } + } + return *this; + } + + //! Reverse primitives orientations of a 3D object \newinstance. + CImgList get_reverse_object3d() const { + return (+*this).reverse_object3d(); + } + + //@} + }; // struct CImgList { ... + + // Completion of previously declared functions + //-------------------------------------------- + namespace cimg { + + // Functions to return standard streams 'stdin', 'stdout' and 'stderr'. + // (throw a CImgIOException when macro 'cimg_use_r' is defined). + inline FILE* _stdin(const bool throw_exception) { +#ifndef cimg_use_r + cimg::unused(throw_exception); + return stdin; +#else + if (throw_exception) { + cimg::exception_mode(0); + throw CImgIOException("cimg::stdin(): Reference to 'stdin' stream not allowed in R mode " + "('cimg_use_r' is defined)."); + } + return 0; +#endif + } + + inline FILE* _stdout(const bool throw_exception) { +#ifndef cimg_use_r + cimg::unused(throw_exception); + return stdout; +#else + if (throw_exception) { + cimg::exception_mode(0); + throw CImgIOException("cimg::stdout(): Reference to 'stdout' stream not allowed in R mode " + "('cimg_use_r' is defined)."); + } + return 0; +#endif + } + + inline FILE* _stderr(const bool throw_exception) { +#ifndef cimg_use_r + cimg::unused(throw_exception); + return stderr; +#else + if (throw_exception) { + cimg::exception_mode(0); + throw CImgIOException("cimg::stderr(): Reference to 'stderr' stream not allowed in R mode " + "('cimg_use_r' is defined)."); + } + return 0; +#endif + } + + // Open a file (similar to std:: fopen(), but with wide character support on Windows). + inline std::FILE *std_fopen(const char *const path, const char *const mode) { + std::FILE *const res = std::fopen(path,mode); + if (res) return res; +#if cimg_OS==2 + // Try alternative method, with wide-character string. + int err = MultiByteToWideChar(CP_UTF8,0,path,-1,0,0); + if (err) { + CImg wpath(err); + err = MultiByteToWideChar(CP_UTF8,0,path,-1,wpath,err); + if (err) { // Convert 'mode' to a wide-character string + err = MultiByteToWideChar(CP_UTF8,0,mode,-1,0,0); + if (err) { + CImg wmode(err); + if (MultiByteToWideChar(CP_UTF8,0,mode,-1,wmode,err)) + return _wfopen(wpath,wmode); + } + } + } +#endif + return 0; + } + + //! Search path of an executable (Windows only). +#if cimg_OS==2 + inline bool win_searchpath(const char *const exec_name, char *const res, const unsigned int size_res) { + char *ptr = 0; + DWORD err = SearchPathA(0,exec_name,0,size_res,res,&ptr); + return err!=0; + } +#endif + + //! Get the file or directory attributes with support for UTF-8 paths (Windows only). +#if cimg_OS==2 + inline DWORD win_getfileattributes(const char *const path) { + DWORD res = GetFileAttributesA(path); + if (res==INVALID_FILE_ATTRIBUTES) { + // Try alternative method, with wide-character string. + int err = MultiByteToWideChar(CP_UTF8,0,path,-1,0,0); + if (err) { + CImg wpath(err); + if (MultiByteToWideChar(CP_UTF8,0,path,-1,wpath,err)) res = GetFileAttributesW(wpath); + } + } + return res; + } +#endif + + //! Get/set path to the Program Files/ directory (Windows only). + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the program files. + **/ +#if cimg_OS==2 + inline const char* win_programfiles_path(const char *const user_path=0, const bool reinit_path=false) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(MAX_PATH); + *s_path = 0; + // Note: in the following line, 0x26 = CSIDL_PROGRAM_FILES (not defined on every compiler). +#if !defined(__INTEL_COMPILER) + if (!SHGetSpecialFolderPathA(0,s_path,0x0026,false)) { + const char *const pfPath = std::getenv("PROGRAMFILES"); + if (pfPath) std::strncpy(s_path,pfPath,MAX_PATH - 1); + else std::strcpy(s_path,"C:\\PROGRA~1"); + } +#else + std::strcpy(s_path,"C:\\PROGRA~1"); +#endif + } + cimg::mutex(7,0); + return s_path; + } +#endif + + //! Get/set path to the \c curl binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c curl binary. + **/ + inline const char *curl_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("curl.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\curl.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"curl.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./curl"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"curl"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the \c dcraw binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c dcraw binary. + **/ + inline const char *dcraw_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("dcraw.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\dcraw.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"dcraw.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./dcraw"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"dcraw"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the FFMPEG's \c ffmpeg binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c ffmpeg binary. + **/ + inline const char *ffmpeg_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("ffmpeg.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\ffmpeg.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"ffmpeg.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./ffmpeg"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"ffmpeg"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the GraphicsMagick's \c gm binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c gm binary. + **/ + inline const char* graphicsmagick_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("gm.exe",s_path,s_path._width)) path_found = true; + const char *const pf_path = win_programfiles_path(); + if (!path_found) { + std::strcpy(s_path,".\\gm.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%.2d-\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%d-Q\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%d\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%.2d-\\VISUA~1\\BIN\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%d-Q\\VISUA~1\\BIN\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%d\\VISUA~1\\BIN\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%.2d-\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%d-Q\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%d\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%.2d-\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%d-Q\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%d\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%.2d-\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%d-Q\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%d\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%.2d-\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%d-Q\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%d\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gm.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./gm"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gm"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the \c gunzip binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c gunzip binary. + **/ + inline const char *gunzip_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("gunzip.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\gunzip.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gunzip.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./gunzip"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gunzip"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the \c gzip binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c gzip binary. + **/ + inline const char *gzip_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("gzip.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\gzip.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gzip.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./gzip"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gzip"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the ImageMagick's \c convert binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c convert binary. + **/ + inline const char* imagemagick_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("magick.exe",s_path,s_path._width)) path_found = true; + const char *const pf_path = win_programfiles_path(); + for (int l = 0; l<2 && !path_found; ++l) { + const char *const s_exe = l?"convert":"magick"; + cimg_snprintf(s_path,s_path._width,".\\%s.exe",s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%.2d-\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%d-Q\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%d\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%.2d-\\VISUA~1\\BIN\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%d-Q\\VISUA~1\\BIN\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%d\\VISUA~1\\BIN\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%.2d-\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%d-Q\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%d\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%.2d-\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%d-Q\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%d\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%.2d-\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%d-Q\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%d\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%.2d-\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%d-Q\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%d\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) cimg_snprintf(s_path,s_path._width,"%s.exe",s_exe); + } +#else + std::strcpy(s_path,"./magick"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + if (!path_found) { + std::strcpy(s_path,"./convert"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"convert"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the Medcon's \c medcon binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c medcon binary. + **/ + inline const char* medcon_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("medcon.exe",s_path,s_path._width)) path_found = true; + const char *const pf_path = win_programfiles_path(); + if (!path_found) { + std::strcpy(s_path,".\\medcon.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) { + cimg_snprintf(s_path,s_path._width,"%s\\XMedCon\\bin\\medcon.bat",pf_path); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) { + cimg_snprintf(s_path,s_path._width,"%s\\XMedCon\\bin\\medcon.exe",pf_path); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) { + std::strcpy(s_path,"C:\\XMedCon\\bin\\medcon.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"medcon.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./medcon"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"medcon"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to store temporary files. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path where temporary files can be saved. + **/ + inline const char* temporary_path(const char *const user_path, const bool reinit_path) { +#define _cimg_test_temporary_path(p) \ + if (!path_found) { \ + cimg_snprintf(s_path,s_path.width(),"%s",p); \ + cimg_snprintf(tmp,tmp._width,"%s%c%s",s_path.data(),cimg_file_separator,filename_tmp._data); \ + if ((file=cimg::std_fopen(tmp,"wb"))!=0) { cimg::fclose(file); std::remove(tmp); path_found = true; } \ + } + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + CImg tmp(1024), filename_tmp(256); + std::FILE *file = 0; + cimg_snprintf(filename_tmp,filename_tmp._width,"%s.tmp",cimg::filenamerand()); + char *tmpPath = std::getenv("TMP"); + if (!tmpPath) { tmpPath = std::getenv("TEMP"); winformat_string(tmpPath); } + if (tmpPath) _cimg_test_temporary_path(tmpPath); +#if cimg_OS==2 + _cimg_test_temporary_path("C:\\WINNT\\Temp"); + _cimg_test_temporary_path("C:\\WINDOWS\\Temp"); + _cimg_test_temporary_path("C:\\Temp"); + _cimg_test_temporary_path("C:"); + _cimg_test_temporary_path("D:\\WINNT\\Temp"); + _cimg_test_temporary_path("D:\\WINDOWS\\Temp"); + _cimg_test_temporary_path("D:\\Temp"); + _cimg_test_temporary_path("D:"); +#else + _cimg_test_temporary_path("/tmp"); + _cimg_test_temporary_path("/var/tmp"); +#endif + if (!path_found) { + *s_path = 0; + std::strncpy(tmp,filename_tmp,tmp._width - 1); + if ((file=cimg::std_fopen(tmp,"wb"))!=0) { cimg::fclose(file); std::remove(tmp); path_found = true; } + } + if (!path_found) { + cimg::mutex(7,0); + throw CImgIOException("cimg::temporary_path(): Failed to locate path for writing temporary files.\n"); + } + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the \c wget binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c wget binary. + **/ + inline const char *wget_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("wget.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\wget.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"wget.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./wget"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"wget"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + + // [internal] Sorting function, used by cimg::files(). + inline int _sort_files(const void* a, const void* b) { + const CImg &sa = *(CImg*)a, &sb = *(CImg*)b; + return std::strcmp(sa._data,sb._data); + } + + //! Generate a numbered version of a filename. + inline char* number_filename(const char *const filename, const int number, + const unsigned int digits, char *const str) { + if (!filename) { if (str) *str = 0; return 0; } + const unsigned int siz = (unsigned int)std::strlen(filename); + CImg format(16), body(siz + 32); + const char *const ext = cimg::split_filename(filename,body); + if (*ext) cimg_snprintf(format,format.width(),"%%s_%%.%ud.%%s",digits); + else cimg_snprintf(format,format.width(),"%%s_%%.%ud",digits); + cimg_snprintf(str,1024,format._data,body._data,number,ext); + return str; + } + + //! Return list of files/directories in specified directory. + /** + \param path Path to the directory. Set to 0 for current directory. + \param is_pattern Tell if specified path has a matching pattern in it. + \param mode Output type, can be primary { 0=files only | 1=folders only | 2=files + folders }. + \param include_path Tell if \c path must be included in resulting filenames. + \return A list of filenames. + **/ + inline CImgList files(const char *const path, const bool is_pattern=false, + const unsigned int mode=2, const bool include_path=false) { + if (!path || !*path) return files("*",true,mode,include_path); + CImgList res; + + // If path is a valid folder name, ignore argument 'is_pattern'. + const bool _is_pattern = is_pattern && !cimg::is_directory(path); + bool is_root = false, is_current = false; + cimg::unused(is_root,is_current); + + // Clean format of input path. + CImg pattern, _path = CImg::string(path); +#if cimg_OS==2 + for (char *ps = _path; *ps; ++ps) if (*ps=='\\') *ps='/'; +#endif + char *pd = _path; + for (char *ps = pd; *ps; ++ps) { if (*ps!='/' || *ps!=*(ps+1)) *(pd++) = *ps; } + *pd = 0; + unsigned int lp = (unsigned int)std::strlen(_path); + if (!_is_pattern && lp && _path[lp - 1]=='/') { + _path[lp - 1] = 0; --lp; +#if cimg_OS!=2 + is_root = !*_path; +#endif + } + + // Separate folder path and matching pattern. + if (_is_pattern) { + const unsigned int bpos = (unsigned int)(cimg::basename(_path,'/') - _path.data()); + CImg::string(_path).move_to(pattern); + if (bpos) { + _path[bpos - 1] = 0; // End 'path' at last slash +#if cimg_OS!=2 + is_root = !*_path; +#endif + } else { // No path to folder specified, assuming current folder + is_current = true; *_path = 0; + } + lp = (unsigned int)std::strlen(_path); + } + + // Windows version. +#if cimg_OS==2 + if (!_is_pattern) { + pattern.assign(lp + 3); + std::memcpy(pattern,_path,lp); + pattern[lp] = '/'; pattern[lp + 1] = '*'; pattern[lp + 2] = 0; + } + WIN32_FIND_DATAA file_data; + const HANDLE dir = FindFirstFileA(pattern.data(),&file_data); + if (dir==INVALID_HANDLE_VALUE) return CImgList::const_empty(); + do { + const char *const filename = file_data.cFileName; + if (*filename!='.' || (filename[1] && (filename[1]!='.' || filename[2]))) { + const unsigned int lf = (unsigned int)std::strlen(filename); + const bool is_directory = (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)!=0; + if ((!mode && !is_directory) || (mode==1 && is_directory) || mode>=2) { + if (include_path) { + CImg full_filename((lp?lp+1:0) + lf + 1); + if (lp) { std::memcpy(full_filename,_path,lp); full_filename[lp] = '/'; } + std::memcpy(full_filename._data + (lp?lp + 1:0),filename,lf + 1); + full_filename.move_to(res); + } else CImg(filename,lf + 1).move_to(res); + } + } + } while (FindNextFileA(dir,&file_data)); + FindClose(dir); + + // Unix version (posix). +#elif cimg_OS == 1 + DIR *const dir = opendir(is_root?"/":is_current?".":_path.data()); + if (!dir) return CImgList::const_empty(); + struct dirent *ent; + while ((ent=readdir(dir))!=0) { + const char *const filename = ent->d_name; + if (*filename!='.' || (filename[1] && (filename[1]!='.' || filename[2]))) { + const unsigned int lf = (unsigned int)std::strlen(filename); + CImg full_filename(lp + lf + 2); + + if (!is_current) { + full_filename.assign(lp + lf + 2); + if (lp) std::memcpy(full_filename,_path,lp); + full_filename[lp] = '/'; + std::memcpy(full_filename._data + lp + 1,filename,lf + 1); + } else full_filename.assign(filename,lf + 1); + + struct stat st; + if (stat(full_filename,&st)==-1) continue; + const bool is_directory = (st.st_mode & S_IFDIR)!=0; + if ((!mode && !is_directory) || (mode==1 && is_directory) || mode==2) { + if (include_path) { + if (!_is_pattern || (_is_pattern && !fnmatch(pattern,full_filename,0))) + full_filename.move_to(res); + } else { + if (!_is_pattern || (_is_pattern && !fnmatch(pattern,full_filename,0))) + CImg(filename,lf + 1).move_to(res); + } + } + } + } + closedir(dir); +#endif + + // Sort resulting list by lexicographic order. + if (res._width>=2) std::qsort(res._data,res._width,sizeof(CImg),_sort_files); + + return res; + } + + //! Try to guess format from an image file. + /** + \param file Input file (can be \c 0 if \c filename is set). + \param filename Filename, as a C-string (can be \c 0 if \c file is set). + \return C-string containing the guessed file format, or \c 0 if nothing has been guessed. + **/ + inline const char *ftype(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException("cimg::ftype(): Specified filename is (null)."); + static const char + *const _pnm = "pnm", + *const _pfm = "pfm", + *const _bmp = "bmp", + *const _gif = "gif", + *const _jpg = "jpg", + *const _off = "off", + *const _pan = "pan", + *const _png = "png", + *const _tif = "tif", + *const _inr = "inr", + *const _dcm = "dcm"; + const char *f_type = 0; + CImg header; + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { + header._load_raw(file,filename,512,1,1,1,false,false,0); + const unsigned char *const uheader = (unsigned char*)header._data; + if (!std::strncmp(header,"OFF\n",4)) f_type = _off; // OFF + else if (!std::strncmp(header,"#INRIMAGE",9)) // INRIMAGE + f_type = _inr; + else if (!std::strncmp(header,"PANDORE",7)) // PANDORE + f_type = _pan; + else if (!std::strncmp(header.data() + 128,"DICM",4)) // DICOM + f_type = _dcm; + else if (uheader[0]==0xFF && uheader[1]==0xD8 && uheader[2]==0xFF) // JPEG + f_type = _jpg; + else if (header[0]=='B' && header[1]=='M') // BMP + f_type = _bmp; + else if (header[0]=='G' && header[1]=='I' && header[2]=='F' && header[3]=='8' && header[5]=='a' && + (header[4]=='7' || header[4]=='9')) // GIF + f_type = _gif; + else if (uheader[0]==0x89 && uheader[1]==0x50 && uheader[2]==0x4E && uheader[3]==0x47 && + uheader[4]==0x0D && uheader[5]==0x0A && uheader[6]==0x1A && uheader[7]==0x0A) // PNG + f_type = _png; + else if ((uheader[0]==0x49 && uheader[1]==0x49) || (uheader[0]==0x4D && uheader[1]==0x4D)) // TIFF + f_type = _tif; + else { // PNM or PFM + CImgList _header = header.get_split(CImg::vector('\n'),0,false); + cimglist_for(_header,l) { + if (_header(l,0)=='#') continue; + if (_header[l]._width==2 && _header(l,0)=='P') { + const char c = _header(l,1); + if (c=='f' || c=='F') { f_type = _pfm; break; } + if (c>='1' && c<='9') { f_type = _pnm; break; } + } + f_type = 0; break; + } + } + } catch (CImgIOException&) { } + cimg::exception_mode(omode); + return f_type; + } + + //! Load file from network as a local temporary file. + /** + \param url URL of the filename, as a C-string. + \param[out] filename_local C-string containing the path to a local copy of \c filename. + \param timeout Maximum time (in seconds) authorized for downloading the file from the URL. + \param try_fallback When using libcurl, tells using system calls as fallbacks in case of libcurl failure. + \param referer Referer used, as a C-string. + \return Value of \c filename_local. + \note Use the \c libcurl library, or the external binaries \c wget or \c curl to perform the download. + **/ + inline char *load_network(const char *const url, char *const filename_local, + const unsigned int timeout, const bool try_fallback, + const char *const referer) { + if (!url) + throw CImgArgumentException("cimg::load_network(): Specified URL is (null)."); + if (!filename_local) + throw CImgArgumentException("cimg::load_network(): Specified destination string is (null)."); + if (!network_mode()) + throw CImgIOException("cimg::load_network(): Loading files from network is disabled."); + + const char *const __ext = cimg::split_filename(url), *const _ext = (*__ext && __ext>url)?__ext - 1:__ext; + CImg ext = CImg::string(_ext); + std::FILE *file = 0; + *filename_local = 0; + if (ext._width>16 || !cimg::strncasecmp(ext,"cgi",3)) *ext = 0; + else cimg::strwindows_reserved(ext); + do { + cimg_snprintf(filename_local,256,"%s%c%s%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext._data); + if ((file=cimg::std_fopen(filename_local,"rb"))!=0) cimg::fclose(file); + } while (file); + +#ifdef cimg_use_curl + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { + CURL *curl = 0; + CURLcode res; + curl = curl_easy_init(); + if (curl) { + file = cimg::fopen(filename_local,"wb"); + curl_easy_setopt(curl,CURLOPT_URL,url); + curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,0); + curl_easy_setopt(curl,CURLOPT_WRITEDATA,file); + curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,0L); + curl_easy_setopt(curl,CURLOPT_SSL_VERIFYHOST,0L); + curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1L); + if (timeout) curl_easy_setopt(curl,CURLOPT_TIMEOUT,(long)timeout); + if (std::strchr(url,'?')) curl_easy_setopt(curl,CURLOPT_HTTPGET,1L); + if (referer) curl_easy_setopt(curl,CURLOPT_REFERER,referer); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + cimg::fseek(file,0,SEEK_END); // Check if file size is 0 + const cimg_ulong siz = cimg::ftell(file); + cimg::fclose(file); + if (siz>0 && res==CURLE_OK) { + cimg::exception_mode(omode); + return filename_local; + } else std::remove(filename_local); + } + } catch (...) { } + cimg::exception_mode(omode); + if (!try_fallback) throw CImgIOException("cimg::load_network(): Failed to load file '%s' with libcurl.",url); +#endif + + CImg command((unsigned int)std::strlen(url) + 64); + cimg::unused(try_fallback); + + // Try with 'curl' first. + if (timeout) { + if (referer) + cimg_snprintf(command,command._width,"\"%s\" -e %s -m %u -f --silent --compressed -o \"%s\" \"%s\"", + cimg::curl_path(),referer,timeout,filename_local, + CImg::string(url)._system_strescape().data()); + else + cimg_snprintf(command,command._width,"\"%s\" -m %u -f --silent --compressed -o \"%s\" \"%s\"", + cimg::curl_path(),timeout,filename_local, + CImg::string(url)._system_strescape().data()); + } else { + if (referer) + cimg_snprintf(command,command._width,"\"%s\" -e %s -f --silent --compressed -o \"%s\" \"%s\"", + cimg::curl_path(),referer,filename_local, + CImg::string(url)._system_strescape().data()); + else + cimg_snprintf(command,command._width,"\"%s\" -f --silent --compressed -o \"%s\" \"%s\"", + cimg::curl_path(),filename_local, + CImg::string(url)._system_strescape().data()); + } + cimg::system(command, cimg::curl_path()); + + if (!(file=cimg::std_fopen(filename_local,"rb"))) { + + // Try with 'wget' otherwise. + if (timeout) { + if (referer) + cimg_snprintf(command,command._width,"\"%s\" --referer=%s -T %u -q -r -l 0 --no-cache -O \"%s\" \"%s\"", + cimg::wget_path(),referer,timeout,filename_local, + CImg::string(url)._system_strescape().data()); + else + cimg_snprintf(command,command._width,"\"%s\" -T %u -q -r -l 0 --no-cache -O \"%s\" \"%s\"", + cimg::wget_path(),timeout,filename_local, + CImg::string(url)._system_strescape().data()); + } else { + if (referer) + cimg_snprintf(command,command._width,"\"%s\" --referer=%s -q -r -l 0 --no-cache -O \"%s\" \"%s\"", + cimg::wget_path(),referer,filename_local, + CImg::string(url)._system_strescape().data()); + else + cimg_snprintf(command,command._width,"\"%s\" -q -r -l 0 --no-cache -O \"%s\" \"%s\"", + cimg::wget_path(),filename_local, + CImg::string(url)._system_strescape().data()); + } + cimg::system(command, cimg::wget_path()); + + if (!(file=cimg::std_fopen(filename_local,"rb"))) + throw CImgIOException("cimg::load_network(): Failed to load file '%s' with external commands " + "'wget' or 'curl'.",url); + cimg::fclose(file); + + // Try gunzip it. + cimg_snprintf(command,command._width,"%s.gz",filename_local); + std::rename(filename_local,command); + cimg_snprintf(command,command._width,"\"%s\" --quiet \"%s.gz\"", + gunzip_path(),filename_local); + cimg::system(command, gunzip_path()); + file = cimg::std_fopen(filename_local,"rb"); + if (!file) { + cimg_snprintf(command,command._width,"%s.gz",filename_local); + std::rename(command,filename_local); + file = cimg::std_fopen(filename_local,"rb"); + } + } + cimg::fseek(file,0,SEEK_END); // Check if file size is 0 + if (std::ftell(file)<=0) + throw CImgIOException("cimg::load_network(): Failed to load URL '%s' with external commands " + "'wget' or 'curl'.",url); + cimg::fclose(file); + return filename_local; + } + + // Implement a tic/toc mechanism to display elapsed time of algorithms. + inline cimg_uint64 tictoc(const bool is_tic) { + cimg::mutex(2); + static CImg times(64); + static unsigned int pos = 0; + const cimg_uint64 t1 = cimg::time(); + if (is_tic) { + // Tic + times[pos++] = t1; + if (pos>=times._width) + throw CImgArgumentException("cimg::tic(): Too much calls to 'cimg::tic()' without calls to 'cimg::toc()'."); + cimg::mutex(2,0); + return t1; + } + + // Toc + if (!pos) + throw CImgArgumentException("cimg::toc(): No previous call to 'cimg::tic()' has been made."); + const cimg_uint64 + t0 = times[--pos], + dt = t1>=t0?(t1 - t0):cimg::type::max(); + const unsigned int + edays = (unsigned int)(dt/86400000.), + ehours = (unsigned int)((dt - edays*86400000.)/3600000.), + emin = (unsigned int)((dt - edays*86400000. - ehours*3600000.)/60000.), + esec = (unsigned int)((dt - edays*86400000. - ehours*3600000. - emin*60000.)/1000.), + ems = (unsigned int)(dt - edays*86400000. - ehours*3600000. - emin*60000. - esec*1000.); + if (!edays && !ehours && !emin && !esec) + std::fprintf(cimg::output(),"%s[CImg]%*sElapsed time: %u ms%s\n", + cimg::t_red,1 + 2*pos,"",ems,cimg::t_normal); + else { + if (!edays && !ehours && !emin) + std::fprintf(cimg::output(),"%s[CImg]%*sElapsed time: %u sec %u ms%s\n", + cimg::t_red,1 + 2*pos,"",esec,ems,cimg::t_normal); + else { + if (!edays && !ehours) + std::fprintf(cimg::output(),"%s[CImg]%*sElapsed time: %u min %u sec %u ms%s\n", + cimg::t_red,1 + 2*pos,"",emin,esec,ems,cimg::t_normal); + else{ + if (!edays) + std::fprintf(cimg::output(),"%s[CImg]%*sElapsed time: %u hours %u min %u sec %u ms%s\n", + cimg::t_red,1 + 2*pos,"",ehours,emin,esec,ems,cimg::t_normal); + else{ + std::fprintf(cimg::output(),"%s[CImg]%*sElapsed time: %u days %u hours %u min %u sec %u ms%s\n", + cimg::t_red,1 + 2*pos,"",edays,ehours,emin,esec,ems,cimg::t_normal); + } + } + } + } + cimg::mutex(2,0); + return dt; + } + + // Return a temporary string describing the size of a memory buffer. + inline const char *strbuffersize(const cimg_ulong size) { + static CImg res(256); + cimg::mutex(5); + if (size<1024LU) cimg_snprintf(res,res._width,"%lu byte%s",(unsigned long)size,size>1?"s":""); + else if (size<1024*1024LU) { const float nsize = size/1024.f; cimg_snprintf(res,res._width,"%.1f Kio",nsize); } + else if (size<1024*1024*1024LU) { + const float nsize = size/(1024*1024.f); cimg_snprintf(res,res._width,"%.1f Mio",nsize); + } else { const float nsize = size/(1024*1024*1024.f); cimg_snprintf(res,res._width,"%.1f Gio",nsize); } + cimg::mutex(5,0); + return res; + } + + //! Display a simple dialog box, and wait for the user's response. + /** + \param title Title of the dialog window. + \param msg Main message displayed inside the dialog window. + \param button1_label Label of the 1st button. + \param button2_label Label of the 2nd button (\c 0 to hide button). + \param button3_label Label of the 3rd button (\c 0 to hide button). + \param button4_label Label of the 4th button (\c 0 to hide button). + \param button5_label Label of the 5th button (\c 0 to hide button). + \param button6_label Label of the 6th button (\c 0 to hide button). + \param logo Image logo displayed at the left of the main message. + \param is_centered Tells if the dialog window must be centered on the screen. + \return Index of clicked button (from \c 0 to \c 5), or \c -1 if the dialog window has been closed by the user. + \note + - Up to 6 buttons can be defined in the dialog window. + - The function returns when a user clicked one of the button or closed the dialog window. + - If a button text is set to 0, the corresponding button (and the following) will not appear in the dialog box. + At least one button must be specified. + **/ + template + inline int dialog(const char *const title, const char *const msg, + const char *const button1_label, const char *const button2_label, + const char *const button3_label, const char *const button4_label, + const char *const button5_label, const char *const button6_label, + const CImg& logo, const bool is_centered=false) { +#if cimg_display==0 + cimg::unused(title,msg,button1_label,button2_label,button3_label,button4_label,button5_label,button6_label, + logo._data,is_centered); + throw CImgIOException("cimg::dialog(): No display available."); +#else + static const unsigned char + black[] = { 0,0,0 }, white[] = { 255,255,255 }, gray[] = { 200,200,200 }, gray2[] = { 150,150,150 }; + + // Create buttons and canvas graphics + CImgList buttons, cbuttons, sbuttons; + if (button1_label) { + CImg().draw_text(0,0,button1_label,black,gray,1,13).move_to(buttons); + if (button2_label) { + CImg().draw_text(0,0,button2_label,black,gray,1,13).move_to(buttons); + if (button3_label) { + CImg().draw_text(0,0,button3_label,black,gray,1,13).move_to(buttons); + if (button4_label) { + CImg().draw_text(0,0,button4_label,black,gray,1,13).move_to(buttons); + if (button5_label) { + CImg().draw_text(0,0,button5_label,black,gray,1,13).move_to(buttons); + if (button6_label) { + CImg().draw_text(0,0,button6_label,black,gray,1,13).move_to(buttons); + }}}}}} + if (!buttons._width) + throw CImgArgumentException("cimg::dialog(): No buttons have been defined."); + cimglist_for(buttons,l) buttons[l].resize(-100,-100,1,3); + + unsigned int bw = 0, bh = 0; + cimglist_for(buttons,l) { bw = std::max(bw,buttons[l]._width); bh = std::max(bh,buttons[l]._height); } + bw+=8; bh+=8; + if (bw<64) bw = 64; + if (bw>128) bw = 128; + if (bh<24) bh = 24; + if (bh>48) bh = 48; + + CImg button(bw,bh,1,3); + button.draw_rectangle(0,0,bw - 1,bh - 1,gray); + button.draw_line(0,0,bw - 1,0,white).draw_line(0,bh - 1,0,0,white); + button.draw_line(bw - 1,0,bw - 1,bh - 1,black).draw_line(bw - 1,bh - 1,0,bh - 1,black); + button.draw_line(1,bh - 2,bw - 2,bh - 2,gray2).draw_line(bw - 2,bh - 2,bw - 2,1,gray2); + CImg sbutton(bw,bh,1,3); + sbutton.draw_rectangle(0,0,bw - 1,bh - 1,gray); + sbutton.draw_line(0,0,bw - 1,0,black).draw_line(bw - 1,0,bw - 1,bh - 1,black); + sbutton.draw_line(bw - 1,bh - 1,0,bh - 1,black).draw_line(0,bh - 1,0,0,black); + sbutton.draw_line(1,1,bw - 2,1,white).draw_line(1,bh - 2,1,1,white); + sbutton.draw_line(bw - 2,1,bw - 2,bh - 2,black).draw_line(bw - 2,bh - 2,1,bh - 2,black); + sbutton.draw_line(2,bh - 3,bw - 3,bh - 3,gray2).draw_line(bw - 3,bh - 3,bw - 3,2,gray2); + sbutton.draw_line(4,4,bw - 5,4,black,1,0xAAAAAAAA,true). + draw_line(bw - 5,4,bw - 5,bh - 5,black,1,0xAAAAAAAA,false); + sbutton.draw_line(bw - 5,bh - 5,4,bh - 5,black,1,0xAAAAAAAA,false). + draw_line(4,bh - 5,4,4,black,1,0xAAAAAAAA,false); + CImg cbutton(bw,bh,1,3); + cbutton.draw_rectangle(0,0,bw - 1,bh - 1,black).draw_rectangle(1,1,bw - 2,bh - 2,gray2). + draw_rectangle(2,2,bw - 3,bh - 3,gray); + cbutton.draw_line(4,4,bw - 5,4,black,1,0xAAAAAAAA,true). + draw_line(bw - 5,4,bw - 5,bh - 5,black,1,0xAAAAAAAA,false); + cbutton.draw_line(bw - 5,bh - 5,4,bh - 5,black,1,0xAAAAAAAA,false). + draw_line(4,bh - 5,4,4,black,1,0xAAAAAAAA,false); + + cimglist_for(buttons,ll) { + CImg(cbutton). + draw_image(1 + (bw -buttons[ll].width())/2,1 + (bh - buttons[ll].height())/2,buttons[ll]). + move_to(cbuttons); + CImg(sbutton). + draw_image((bw - buttons[ll].width())/2,(bh - buttons[ll].height())/2,buttons[ll]). + move_to(sbuttons); + CImg(button). + draw_image((bw - buttons[ll].width())/2,(bh - buttons[ll].height())/2,buttons[ll]). + move_to(buttons[ll]); + } + + CImg canvas; + if (msg) + ((CImg().draw_text(0,0,"%s",gray,0,1,13,msg)*=-1)+=200).resize(-100,-100,1,3).move_to(canvas); + + const unsigned int + bwall = (buttons._width - 1)*(12 + bw) + bw, + w = cimg::max(196U,36 + logo._width + canvas._width,24 + bwall), + h = cimg::max(96U,36 + canvas._height + bh,36 + logo._height + bh), + lx = 12 + (canvas._data?0:((w - 24 - logo._width)/2)), + ly = (h - 12 - bh - logo._height)/2, + tx = lx + logo._width + 12, + ty = (h - 12 - bh - canvas._height)/2, + bx = (w - bwall)/2, + by = h - 12 - bh; + + if (canvas._data) + canvas = CImg(w,h,1,3). + draw_rectangle(0,0,w - 1,h - 1,gray). + draw_line(0,0,w - 1,0,white).draw_line(0,h - 1,0,0,white). + draw_line(w - 1,0,w - 1,h - 1,black).draw_line(w - 1,h - 1,0,h - 1,black). + draw_image(tx,ty,canvas); + else + canvas = CImg(w,h,1,3). + draw_rectangle(0,0,w - 1,h - 1,gray). + draw_line(0,0,w - 1,0,white).draw_line(0,h - 1,0,0,white). + draw_line(w - 1,0,w - 1,h - 1,black).draw_line(w - 1,h - 1,0,h - 1,black); + if (logo._data) canvas.draw_image(lx,ly,logo); + + unsigned int xbuttons[6] = { 0 }; + cimglist_for(buttons,lll) { + xbuttons[lll] = bx + (bw + 12)*lll; + canvas.draw_image(xbuttons[lll],by,buttons[lll]); + } + + // Open window and enter events loop + CImgDisplay disp(canvas,title?title:" ",0,false,is_centered?true:false); + if (is_centered) disp.move((CImgDisplay::screen_width() - disp.width())/2, + (CImgDisplay::screen_height() - disp.height())/2); + bool stop_flag = false, refresh = false; + int oselected = -1, oclicked = -1, selected = -1, clicked = -1; + while (!disp.is_closed() && !stop_flag) { + if (refresh) { + if (clicked>=0) + CImg(canvas).draw_image(xbuttons[clicked],by,cbuttons[clicked]).display(disp); + else { + if (selected>=0) + CImg(canvas).draw_image(xbuttons[selected],by,sbuttons[selected]).display(disp); + else canvas.display(disp); + } + refresh = false; + } + disp.wait(15); + if (disp.is_resized()) disp.resize(disp,false); + + if (disp.button()&1) { + oclicked = clicked; + clicked = -1; + cimglist_for(buttons,l) + if (disp.mouse_y()>=(int)by && disp.mouse_y()<(int)(by + bh) && + disp.mouse_x()>=(int)xbuttons[l] && disp.mouse_x()<(int)(xbuttons[l] + bw)) { + clicked = selected = l; + refresh = true; + } + if (clicked!=oclicked) refresh = true; + } else if (clicked>=0) stop_flag = true; + + if (disp.key()) { + oselected = selected; + switch (disp.key()) { + case cimg::keyESC : selected = -1; stop_flag = true; break; + case cimg::keyENTER : if (selected<0) selected = 0; stop_flag = true; break; + case cimg::keyTAB : + case cimg::keyARROWRIGHT : + case cimg::keyARROWDOWN : selected = (selected + 1)%buttons.width(); break; + case cimg::keyARROWLEFT : + case cimg::keyARROWUP : selected = (selected + buttons.width() - 1)%buttons.width(); break; + } + disp.set_key(); + if (selected!=oselected) refresh = true; + } + } + if (!disp) selected = -1; + return selected; +#endif + } + + //! Display a simple dialog box, and wait for the user's response \specialization. + inline int dialog(const char *const title, const char *const msg, + const char *const button1_label, const char *const button2_label, + const char *const button3_label, const char *const button4_label, + const char *const button5_label, const char *const button6_label, + const bool is_centered) { + return dialog(title,msg,button1_label,button2_label,button3_label,button4_label,button5_label,button6_label, + CImg::_logo40x38(),is_centered); + } + + //! Evaluate math expression. + /** + \param expression C-string describing the formula to evaluate. + \param x Value of the pre-defined variable \c x. + \param y Value of the pre-defined variable \c y. + \param z Value of the pre-defined variable \c z. + \param c Value of the pre-defined variable \c c. + \return Result of the formula evaluation. + \note Set \c expression to \c 0 to keep evaluating the last specified \c expression. + \par Example + \code + const double + res1 = cimg::eval("cos(x)^2 + sin(y)^2",2,2), // will return '1' + res2 = cimg::eval(0,1,1); // will return '1' too + \endcode + **/ + inline double eval(const char *const expression, const double x, const double y, const double z, const double c) { + static const CImg empty; + return empty.eval(expression,x,y,z,c); + } + + template + inline CImg::type> eval(const char *const expression, const CImg& xyzc) { + static const CImg empty; + return empty.eval(expression,xyzc); + } + + } // namespace cimg { ... +} // namespace cimg_library { ... + +//! Short alias name. +namespace cil = cimg_library_suffixed; + +#ifdef _cimg_redefine_False +#define False 0 +#endif +#ifdef _cimg_redefine_True +#define True 1 +#endif +#ifdef _cimg_redefine_Status +#define Status int +#endif +#ifdef _cimg_redefine_Success +#define Success 0 +#endif +#ifdef _cimg_redefine_min +#define min(a,b) (((a)<(b))?(a):(b)) +#endif +#ifdef _cimg_redefine_max +#define max(a,b) (((a)>(b))?(a):(b)) +#endif +#ifdef _cimg_redefine_PI +#define PI 3.141592653589793238462643383 +#endif +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#endif + +// Local Variables: +// mode: c++ +// End: diff --git a/Licence_CeCILL-C_V1-en.txt b/Licence_CeCILL-C_V1-en.txt new file mode 100644 index 000000000..2e9ffbaca --- /dev/null +++ b/Licence_CeCILL-C_V1-en.txt @@ -0,0 +1,508 @@ + + CeCILL-C FREE SOFTWARE LICENSE AGREEMENT + + + Notice + +This Agreement is a Free Software license agreement that is the result +of discussions between its authors in order to ensure compliance with +the two main principles guiding its drafting: + + * firstly, compliance with the principles governing the distribution + of Free Software: access to source code, broad rights granted to + users, + * secondly, the election of a governing law, French law, with which + it is conformant, both as regards the law of torts and + intellectual property law, and the protection that it offers to + both authors and holders of the economic rights over software. + +The authors of the CeCILL-C (for Ce[a] C[nrs] I[nria] L[logiciel] L[ibre]) +license are: + +Commissariat à l'Energie Atomique - CEA, a public scientific, technical +and industrial research establishment, having its principal place of +business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. + +Centre National de la Recherche Scientifique - CNRS, a public scientific +and technological establishment, having its principal place of business +at 3 rue Michel-Ange, 75794 Paris cedex 16, France. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, a public scientific and technological establishment, having its +principal place of business at Domaine de Voluceau, Rocquencourt, BP +105, 78153 Le Chesnay cedex, France. + + + Preamble + +The purpose of this Free Software license agreement is to grant users the +right to modify and re-use the software governed by this license. + +The exercising of this right is conditional on the obligation to make +available to the community the modifications made to the source code of the +software so as to contribute to its evolution. + +In consideration of access to the source code and the rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors only have limited liability. + +In this respect, the risks associated with loading, using, modifying +and/or developing or reproducing the software by the user are brought to +the user's attention, given its Free Software status, which may make it +complicated to use, with the result that its use is reserved for +developers and experienced professionals having in-depth computer +knowledge. Users are therefore encouraged to load and test the suitability +of the software as regards their requirements in conditions enabling the +security of their systems and/or data to be ensured and, more generally, to +use and operate it in the same conditions of security. This Agreement may be +freely reproduced and published, provided it is not altered, and that no +provisions are either added or removed herefrom. + +This Agreement may apply to any or all software for which the holder of +the economic rights decides to submit the use thereof to its provisions. + + + Article 1 - DEFINITIONS + +For the purpose of this Agreement, when the following expressions +commence with a capital letter, they shall have the following meaning: + +Agreement: means this license agreement, and its possible subsequent +versions and annexes. + +Software: means the software in its Object Code and/or Source Code form +and, where applicable, its documentation, "as is" when the Licensee +accepts the Agreement. + +Initial Software: means the Software in its Source Code and possibly its +Object Code form and, where applicable, its documentation, "as is" when +it is first distributed under the terms and conditions of the Agreement. + +Modified Software: means the Software modified by at least one Integrated +Contribution. + +Source Code: means all the Software's instructions and program lines to +which access is required so as to modify the Software. + +Object Code: means the binary files originating from the compilation of +the Source Code. + +Holder: means the holder(s) of the economic rights over the Initial +Software. + +Licensee: means the Software user(s) having accepted the Agreement. + +Contributor: means a Licensee having made at least one Integrated +Contribution. + +Licensor: means the Holder, or any other individual or legal entity, who +distributes the Software under the Agreement. + +Integrated Contribution: means any or all modifications, corrections, +translations, adaptations and/or new functions integrated into the Source +Code by any or all Contributors. + +Related Module: means a set of sources files including their documentation +that, without modification to the Source Code, enables supplementary +functions or services in addition to those offered by the Software. + +Derivative Software: means any combination of the Software, modified or not, +and of a Related Module. + +Parties: mean both the Licensee and the Licensor. + +These expressions may be used both in singular and plural form. + + + Article 2 - PURPOSE + +The purpose of the Agreement is the grant by the Licensor to the +Licensee of a non-exclusive, transferable and worldwide license for the +Software as set forth in Article 5 hereinafter for the whole term of the +protection granted by the rights over said Software. + + + Article 3 - ACCEPTANCE + +3.1 The Licensee shall be deemed as having accepted the terms and +conditions of this Agreement upon the occurrence of the first of the +following events: + + * (i) loading the Software by any or all means, notably, by + downloading from a remote server, or by loading from a physical + medium; + * (ii) the first time the Licensee exercises any of the rights + granted hereunder. + +3.2 One copy of the Agreement, containing a notice relating to the +characteristics of the Software, to the limited warranty, and to the +fact that its use is restricted to experienced users has been provided +to the Licensee prior to its acceptance as set forth in Article 3.1 +hereinabove, and the Licensee hereby acknowledges that it has read and +understood it. + + + Article 4 - EFFECTIVE DATE AND TERM + + + 4.1 EFFECTIVE DATE + +The Agreement shall become effective on the date when it is accepted by +the Licensee as set forth in Article 3.1. + + + 4.2 TERM + +The Agreement shall remain in force for the entire legal term of +protection of the economic rights over the Software. + + + Article 5 - SCOPE OF RIGHTS GRANTED + +The Licensor hereby grants to the Licensee, who accepts, the following +rights over the Software for any or all use, and for the term of the +Agreement, on the basis of the terms and conditions set forth hereinafter. + +Besides, if the Licensor owns or comes to own one or more patents +protecting all or part of the functions of the Software or of its +components, the Licensor undertakes not to enforce the rights granted by +these patents against successive Licensees using, exploiting or +modifying the Software. If these patents are transferred, the Licensor +undertakes to have the transferees subscribe to the obligations set +forth in this paragraph. + + + 5.1 RIGHT OF USE + +The Licensee is authorized to use the Software, without any limitation +as to its fields of application, with it being hereinafter specified +that this comprises: + + 1. permanent or temporary reproduction of all or part of the Software + by any or all means and in any or all form. + 2. loading, displaying, running, or storing the Software on any or + all medium. + 3. entitlement to observe, study or test its operation so as to + determine the ideas and principles behind any or all constituent + elements of said Software. This shall apply when the Licensee + carries out any or all loading, displaying, running, transmission + or storage operation as regards the Software, that it is entitled + to carry out hereunder. + + + 5.2 RIGHT OF MODIFICATION + +The right of modification includes the right to translate, adapt, arrange, +or make any or all modifications to the Software, and the right to +reproduce the resulting Software. It includes, in particular, the right +to create a Derivative Software. + +The Licensee is authorized to make any or all modification to the +Software provided that it includes an explicit notice that it is the +author of said modification and indicates the date of the creation thereof. + + + 5.3 RIGHT OF DISTRIBUTION + +In particular, the right of distribution includes the right to publish, +transmit and communicate the Software to the general public on any or +all medium, and by any or all means, and the right to market, either in +consideration of a fee, or free of charge, one or more copies of the +Software by any means. + +The Licensee is further authorized to distribute copies of the modified +or unmodified Software to third parties according to the terms and +conditions set forth hereinafter. + + + 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION + +The Licensee is authorized to distribute true copies of the Software in +Source Code or Object Code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Software is +redistributed, the Licensee allows effective access to the full Source Code +of the Software at a minimum during the entire period of its distribution +of the Software, it being understood that the additional cost of acquiring +the Source Code shall not exceed the cost of transferring the data. + + + 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE + +When the Licensee makes an Integrated Contribution to the Software, the terms +and conditions for the distribution of the resulting Modified Software become +subject to all the provisions of this Agreement. + +The Licensee is authorized to distribute the Modified Software, in source +code or object code form, provided that said distribution complies with all +the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + 2. a notice relating to the limitation of both the Licensor's warranty and + liability as set forth in Articles 8 and 9, + +and that, in the event that only the object code of the Modified Software is +redistributed, the Licensee allows effective access to the full source code +of the Modified Software at a minimum during the entire period of its +distribution of the Modified Software, it being understood that the +additional cost of acquiring the source code shall not exceed the cost of +transferring the data. + + 5.3.3 DISTRIBUTION OF DERIVATIVE SOFTWARE + +When the Licensee creates Derivative Software, this Derivative Software may +be distributed under a license agreement other than this Agreement, subject +to compliance with the requirement to include a notice concerning the rights +over the Software as defined in Article 6.4. In the event the creation of the +Derivative Software required modification of the Source Code, the Licensee +undertakes that: + + 1. the resulting Modified Software will be governed by this Agreement, + 2. the Integrated Contributions in the resulting Modified Software will be + clearly identified and documented, + 3. the Licensee will allow effective access to the source code of the + Modified Software, at a minimum during the entire period of + distribution of the Derivative Software, such that such modifications + may be carried over in a subsequent version of the Software; it being + understood that the additional cost of purchasing the source code of + the Modified Software shall not exceed the cost of transferring the + data. + + + 5.3.4 COMPATIBILITY WITH THE CeCILL LICENSE + +When a Modified Software contains an Integrated Contribution subject to the +CeCill license agreement, or when a Derivative Software contains a Related +Module subject to the CeCill license agreement, the provisions set forth in +the third item of Article 6.4 are optional. + + + Article 6 - INTELLECTUAL PROPERTY + + + 6.1 OVER THE INITIAL SOFTWARE + +The Holder owns the economic rights over the Initial Software. Any or +all use of the Initial Software is subject to compliance with the terms +and conditions under which the Holder has elected to distribute its work +and no one shall be entitled to modify the terms and conditions for the +distribution of said Initial Software. + +The Holder undertakes that the Initial Software will remain ruled at +least by the current license, for the duration set forth in Article 4.2. + + + 6.2 OVER THE INTEGRATED CONTRIBUTIONS + +A Licensee who develops an Integrated Contribution is the owner of the +intellectual property rights over this Contribution as defined by +applicable law. + + + 6.3 OVER THE RELATED MODULES + +A Licensee who develops an Related Module is the owner of the +intellectual property rights over this Related Module as defined by +applicable law and is free to choose the type of agreement that shall +govern its distribution under the conditions defined in Article 5.3.3. + + + 6.4 NOTICE OF RIGHTS + +The Licensee expressly undertakes: + + 1. not to remove, or modify, in any manner, the intellectual property + notices attached to the Software; + 2. to reproduce said notices, in an identical manner, in the copies + of the Software modified or not; + 3. to ensure that use of the Software, its intellectual property + notices and the fact that it is governed by the Agreement is + indicated in a text that is easily accessible, specifically from + the interface of any Derivative Software. + +The Licensee undertakes not to directly or indirectly infringe the +intellectual property rights of the Holder and/or Contributors on the +Software and to take, where applicable, vis-à-vis its staff, any and all +measures required to ensure respect of said intellectual property rights +of the Holder and/or Contributors. + + + Article 7 - RELATED SERVICES + +7.1 Under no circumstances shall the Agreement oblige the Licensor to +provide technical assistance or maintenance services for the Software. + +However, the Licensor is entitled to offer this type of services. The +terms and conditions of such technical assistance, and/or such +maintenance, shall be set forth in a separate instrument. Only the +Licensor offering said maintenance and/or technical assistance services +shall incur liability therefor. + +7.2 Similarly, any Licensor is entitled to offer to its licensees, under +its sole responsibility, a warranty, that shall only be binding upon +itself, for the redistribution of the Software and/or the Modified +Software, under terms and conditions that it is free to decide. Said +warranty, and the financial terms and conditions of its application, +shall be subject of a separate instrument executed between the Licensor +and the Licensee. + + + Article 8 - LIABILITY + +8.1 Subject to the provisions of Article 8.2, the Licensee shall be +entitled to claim compensation for any direct loss it may have suffered +from the Software as a result of a fault on the part of the relevant +Licensor, subject to providing evidence thereof. + +8.2 The Licensor's liability is limited to the commitments made under +this Agreement and shall not be incurred as a result of in particular: +(i) loss due the Licensee's total or partial failure to fulfill its +obligations, (ii) direct or consequential loss that is suffered by the +Licensee due to the use or performance of the Software, and (iii) more +generally, any consequential loss. In particular the Parties expressly +agree that any or all pecuniary or business loss (i.e. loss of data, +loss of profits, operating loss, loss of customers or orders, +opportunity cost, any disturbance to business activities) or any or all +legal proceedings instituted against the Licensee by a third party, +shall constitute consequential loss and shall not provide entitlement to +any or all compensation from the Licensor. + + + Article 9 - WARRANTY + +9.1 The Licensee acknowledges that the scientific and technical +state-of-the-art when the Software was distributed did not enable all +possible uses to be tested and verified, nor for the presence of +possible defects to be detected. In this respect, the Licensee's +attention has been drawn to the risks associated with loading, using, +modifying and/or developing and reproducing the Software which are +reserved for experienced users. + +The Licensee shall be responsible for verifying, by any or all means, +the suitability of the product for its requirements, its good working order, +and for ensuring that it shall not cause damage to either persons or +properties. + +9.2 The Licensor hereby represents, in good faith, that it is entitled +to grant all the rights over the Software (including in particular the +rights set forth in Article 5). + +9.3 The Licensee acknowledges that the Software is supplied "as is" by +the Licensor without any other express or tacit warranty, other than +that provided for in Article 9.2 and, in particular, without any warranty +as to its commercial value, its secured, safe, innovative or relevant +nature. + +Specifically, the Licensor does not warrant that the Software is free +from any error, that it will operate without interruption, that it will +be compatible with the Licensee's own equipment and software +configuration, nor that it will meet the Licensee's requirements. + +9.4 The Licensor does not either expressly or tacitly warrant that the +Software does not infringe any third party intellectual property right +relating to a patent, software or any other property right. Therefore, +the Licensor disclaims any and all liability towards the Licensee +arising out of any or all proceedings for infringement that may be +instituted in respect of the use, modification and redistribution of the +Software. Nevertheless, should such proceedings be instituted against +the Licensee, the Licensor shall provide it with technical and legal +assistance for its defense. Such technical and legal assistance shall be +decided on a case-by-case basis between the relevant Licensor and the +Licensee pursuant to a memorandum of understanding. The Licensor +disclaims any and all liability as regards the Licensee's use of the +name of the Software. No warranty is given as regards the existence of +prior rights over the name of the Software or as regards the existence +of a trademark. + + + Article 10 - TERMINATION + +10.1 In the event of a breach by the Licensee of its obligations +hereunder, the Licensor may automatically terminate this Agreement +thirty (30) days after notice has been sent to the Licensee and has +remained ineffective. + +10.2 A Licensee whose Agreement is terminated shall no longer be +authorized to use, modify or distribute the Software. However, any +licenses that it may have granted prior to termination of the Agreement +shall remain valid subject to their having been granted in compliance +with the terms and conditions hereof. + + + Article 11 - MISCELLANEOUS + + + 11.1 EXCUSABLE EVENTS + +Neither Party shall be liable for any or all delay, or failure to +perform the Agreement, that may be attributable to an event of force +majeure, an act of God or an outside cause, such as defective +functioning or interruptions of the electricity or telecommunications +networks, network paralysis following a virus attack, intervention by +government authorities, natural disasters, water damage, earthquakes, +fire, explosions, strikes and labor unrest, war, etc. + +11.2 Any failure by either Party, on one or more occasions, to invoke +one or more of the provisions hereof, shall under no circumstances be +interpreted as being a waiver by the interested Party of its right to +invoke said provision(s) subsequently. + +11.3 The Agreement cancels and replaces any or all previous agreements, +whether written or oral, between the Parties and having the same +purpose, and constitutes the entirety of the agreement between said +Parties concerning said purpose. No supplement or modification to the +terms and conditions hereof shall be effective as between the Parties +unless it is made in writing and signed by their duly authorized +representatives. + +11.4 In the event that one or more of the provisions hereof were to +conflict with a current or future applicable act or legislative text, +said act or legislative text shall prevail, and the Parties shall make +the necessary amendments so as to comply with said act or legislative +text. All other provisions shall remain effective. Similarly, invalidity +of a provision of the Agreement, for any reason whatsoever, shall not +cause the Agreement as a whole to be invalid. + + + 11.5 LANGUAGE + +The Agreement is drafted in both French and English and both versions +are deemed authentic. + + + Article 12 - NEW VERSIONS OF THE AGREEMENT + +12.1 Any person is authorized to duplicate and distribute copies of this +Agreement. + +12.2 So as to ensure coherence, the wording of this Agreement is +protected and may only be modified by the authors of the License, who +reserve the right to periodically publish updates or new versions of the +Agreement, each with a separate number. These subsequent versions may +address new issues encountered by Free Software. + +12.3 Any Software distributed under a given version of the Agreement +may only be subsequently distributed under the same version of the +Agreement or a subsequent version. + + + Article 13 - GOVERNING LAW AND JURISDICTION + +13.1 The Agreement is governed by French law. The Parties agree to +endeavor to seek an amicable solution to any disagreements or disputes +that may arise during the performance of the Agreement. + +13.2 Failing an amicable solution within two (2) months as from their +occurrence, and unless emergency proceedings are necessary, the +disagreements or disputes shall be referred to the Paris Courts having +jurisdiction, by the more diligent Party. + + +Version 1.0 dated 2006-07-12. diff --git a/Licence_CeCILL_V2-en.txt b/Licence_CeCILL_V2-en.txt new file mode 100644 index 000000000..8720df6f4 --- /dev/null +++ b/Licence_CeCILL_V2-en.txt @@ -0,0 +1,504 @@ + + CeCILL FREE SOFTWARE LICENSE AGREEMENT + + + Notice + +This Agreement is a Free Software license agreement that is the result +of discussions between its authors in order to ensure compliance with +the two main principles guiding its drafting: + + * firstly, compliance with the principles governing the distribution + of Free Software: access to source code, broad rights granted to + users, + * secondly, the election of a governing law, French law, with which + it is conformant, both as regards the law of torts and + intellectual property law, and the protection that it offers to + both authors and holders of the economic rights over software. + +The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[logiciel] L[ibre]) +license are: + +Commissariat à l'Energie Atomique - CEA, a public scientific, technical +and industrial research establishment, having its principal place of +business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. + +Centre National de la Recherche Scientifique - CNRS, a public scientific +and technological research establishment, having its principal place of +business at 3 rue Michel-Ange, 75794 Paris cedex 16, France. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, a public scientific and technological establishment, having its +principal place of business at Domaine de Voluceau, Rocquencourt, BP +105, 78153 Le Chesnay cedex, France. + + + Preamble + +The purpose of this Free Software license agreement is to grant users +the right to modify and redistribute the software governed by this +license within the framework of an open source distribution model. + +The exercising of these rights is conditional upon certain obligations +for users so as to preserve this status for all subsequent redistributions. + +In consideration of access to the source code and the rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors only have limited liability. + +In this respect, the risks associated with loading, using, modifying +and/or developing or reproducing the software by the user are brought to +the user's attention, given its Free Software status, which may make it +complicated to use, with the result that its use is reserved for +developers and experienced professionals having in-depth computer +knowledge. Users are therefore encouraged to load and test the suitability +of the software as regards their requirements in conditions enabling +the security of their systems and/or data to be ensured and, more +generally, to use and operate it in the same conditions of security. +This Agreement may be freely reproduced and published, provided it is not +altered, and that no provisions are either added or removed herefrom. + +This Agreement may apply to any or all software for which the holder of +the economic rights decides to submit the use thereof to its provisions. + + + Article 1 - DEFINITIONS + +For the purpose of this Agreement, when the following expressions +commence with a capital letter, they shall have the following meaning: + +Agreement: means this license agreement, and its possible subsequent +versions and annexes. + +Software: means the software in its Object Code and/or Source Code form +and, where applicable, its documentation, "as is" when the Licensee +accepts the Agreement. + +Initial Software: means the Software in its Source Code and possibly its +Object Code form and, where applicable, its documentation, "as is" when +it is first distributed under the terms and conditions of the Agreement. + +Modified Software: means the Software modified by at least one +Contribution. + +Source Code: means all the Software's instructions and program lines to +which access is required so as to modify the Software. + +Object Code: means the binary files originating from the compilation of +the Source Code. + +Holder: means the holder(s) of the economic rights over the Initial +Software. + +Licensee: means the Software user(s) having accepted the Agreement. + +Contributor: means a Licensee having made at least one Contribution. + +Licensor: means the Holder, or any other individual or legal entity, who +distributes the Software under the Agreement. + +Contribution: means any or all modifications, corrections, translations, +adaptations and/or new functions integrated into the Software by any or +all Contributors, as well as any or all Internal Modules. + +Module: means a set of sources files including their documentation that +enables supplementary functions or services in addition to those offered +by the Software. + +External Module: means any or all Modules, not derived from the +Software, so that this Module and the Software run in separate address +spaces, with one calling the other when they are run. + +Internal Module: means any or all Module, connected to the Software so +that they both execute in the same address space. + +GNU GPL: means the GNU General Public License version 2 or any +subsequent version, as published by the Free Software Foundation Inc. + +Parties: mean both the Licensee and the Licensor. + +These expressions may be used both in singular and plural form. + + + Article 2 - PURPOSE + +The purpose of the Agreement is the grant by the Licensor to the +Licensee of a non-exclusive, transferable and worldwide license for the +Software as set forth in Article 5 hereinafter for the whole term of the +protection granted by the rights over said Software. + + + Article 3 - ACCEPTANCE + +3.1 The Licensee shall be deemed as having accepted the terms and +conditions of this Agreement upon the occurrence of the first of the +following events: + + * (i) loading the Software by any or all means, notably, by + downloading from a remote server, or by loading from a physical + medium; + * (ii) the first time the Licensee exercises any of the rights + granted hereunder. + +3.2 One copy of the Agreement, containing a notice relating to the +characteristics of the Software, to the limited warranty, and to the +fact that its use is restricted to experienced users has been provided +to the Licensee prior to its acceptance as set forth in Article 3.1 +hereinabove, and the Licensee hereby acknowledges that it has read and +understood it. + + + Article 4 - EFFECTIVE DATE AND TERM + + + 4.1 EFFECTIVE DATE + +The Agreement shall become effective on the date when it is accepted by +the Licensee as set forth in Article 3.1. + + + 4.2 TERM + +The Agreement shall remain in force for the entire legal term of +protection of the economic rights over the Software. + + + Article 5 - SCOPE OF RIGHTS GRANTED + +The Licensor hereby grants to the Licensee, who accepts, the following +rights over the Software for any or all use, and for the term of the +Agreement, on the basis of the terms and conditions set forth hereinafter. + +Besides, if the Licensor owns or comes to own one or more patents +protecting all or part of the functions of the Software or of its +components, the Licensor undertakes not to enforce the rights granted by +these patents against successive Licensees using, exploiting or +modifying the Software. If these patents are transferred, the Licensor +undertakes to have the transferees subscribe to the obligations set +forth in this paragraph. + + + 5.1 RIGHT OF USE + +The Licensee is authorized to use the Software, without any limitation +as to its fields of application, with it being hereinafter specified +that this comprises: + + 1. permanent or temporary reproduction of all or part of the Software + by any or all means and in any or all form. + + 2. loading, displaying, running, or storing the Software on any or + all medium. + + 3. entitlement to observe, study or test its operation so as to + determine the ideas and principles behind any or all constituent + elements of said Software. This shall apply when the Licensee + carries out any or all loading, displaying, running, transmission + or storage operation as regards the Software, that it is entitled + to carry out hereunder. + + + 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS + +The right to make Contributions includes the right to translate, adapt, +arrange, or make any or all modifications to the Software, and the right +to reproduce the resulting software. + +The Licensee is authorized to make any or all Contributions to the +Software provided that it includes an explicit notice that it is the +author of said Contribution and indicates the date of the creation thereof. + + + 5.3 RIGHT OF DISTRIBUTION + +In particular, the right of distribution includes the right to publish, +transmit and communicate the Software to the general public on any or +all medium, and by any or all means, and the right to market, either in +consideration of a fee, or free of charge, one or more copies of the +Software by any means. + +The Licensee is further authorized to distribute copies of the modified +or unmodified Software to third parties according to the terms and +conditions set forth hereinafter. + + + 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION + +The Licensee is authorized to distribute true copies of the Software in +Source Code or Object Code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Software is +redistributed, the Licensee allows future Licensees unhindered access to +the full Source Code of the Software by indicating how to access it, it +being understood that the additional cost of acquiring the Source Code +shall not exceed the cost of transferring the data. + + + 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE + +When the Licensee makes a Contribution to the Software, the terms and +conditions for the distribution of the resulting Modified Software +become subject to all the provisions of this Agreement. + +The Licensee is authorized to distribute the Modified Software, in +source code or object code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Modified +Software is redistributed, the Licensee allows future Licensees +unhindered access to the full source code of the Modified Software by +indicating how to access it, it being understood that the additional +cost of acquiring the source code shall not exceed the cost of +transferring the data. + + + 5.3.3 DISTRIBUTION OF EXTERNAL MODULES + +When the Licensee has developed an External Module, the terms and +conditions of this Agreement do not apply to said External Module, that +may be distributed under a separate license agreement. + + + 5.3.4 COMPATIBILITY WITH THE GNU GPL + +The Licensee can include a code that is subject to the provisions of one +of the versions of the GNU GPL in the Modified or unmodified Software, +and distribute that entire code under the terms of the same version of +the GNU GPL. + +The Licensee can include the Modified or unmodified Software in a code +that is subject to the provisions of one of the versions of the GNU GPL, +and distribute that entire code under the terms of the same version of +the GNU GPL. + + + Article 6 - INTELLECTUAL PROPERTY + + + 6.1 OVER THE INITIAL SOFTWARE + +The Holder owns the economic rights over the Initial Software. Any or +all use of the Initial Software is subject to compliance with the terms +and conditions under which the Holder has elected to distribute its work +and no one shall be entitled to modify the terms and conditions for the +distribution of said Initial Software. + +The Holder undertakes that the Initial Software will remain ruled at +least by the current license, for the duration set forth in Article 4.2. + + + 6.2 OVER THE CONTRIBUTIONS + +A Licensee who develops a Contribution is the owner of the intellectual +property rights over this Contribution as defined by applicable law. + + + 6.3 OVER THE EXTERNAL MODULES + +A Licensee who develops an External Module is the owner of the +intellectual property rights over this External Module as defined by +applicable law and is free to choose the type of agreement that shall +govern its distribution. + + + 6.4 JOINT PROVISIONS + +The Licensee expressly undertakes: + + 1. not to remove, or modify, in any manner, the intellectual property + notices attached to the Software; + + 2. to reproduce said notices, in an identical manner, in the copies + of the Software modified or not. + +The Licensee undertakes not to directly or indirectly infringe the +intellectual property rights of the Holder and/or Contributors on the +Software and to take, where applicable, vis-à-vis its staff, any and all +measures required to ensure respect of said intellectual property rights +of the Holder and/or Contributors. + + + Article 7 - RELATED SERVICES + +7.1 Under no circumstances shall the Agreement oblige the Licensor to +provide technical assistance or maintenance services for the Software. + +However, the Licensor is entitled to offer this type of services. The +terms and conditions of such technical assistance, and/or such +maintenance, shall be set forth in a separate instrument. Only the +Licensor offering said maintenance and/or technical assistance services +shall incur liability therefor. + +7.2 Similarly, any Licensor is entitled to offer to its licensees, under +its sole responsibility, a warranty, that shall only be binding upon +itself, for the redistribution of the Software and/or the Modified +Software, under terms and conditions that it is free to decide. Said +warranty, and the financial terms and conditions of its application, +shall be subject of a separate instrument executed between the Licensor +and the Licensee. + + + Article 8 - LIABILITY + +8.1 Subject to the provisions of Article 8.2, the Licensee shall be +entitled to claim compensation for any direct loss it may have suffered +from the Software as a result of a fault on the part of the relevant +Licensor, subject to providing evidence thereof. + +8.2 The Licensor's liability is limited to the commitments made under +this Agreement and shall not be incurred as a result of in particular: +(i) loss due the Licensee's total or partial failure to fulfill its +obligations, (ii) direct or consequential loss that is suffered by the +Licensee due to the use or performance of the Software, and (iii) more +generally, any consequential loss. In particular the Parties expressly +agree that any or all pecuniary or business loss (i.e. loss of data, +loss of profits, operating loss, loss of customers or orders, +opportunity cost, any disturbance to business activities) or any or all +legal proceedings instituted against the Licensee by a third party, +shall constitute consequential loss and shall not provide entitlement to +any or all compensation from the Licensor. + + + Article 9 - WARRANTY + +9.1 The Licensee acknowledges that the scientific and technical +state-of-the-art when the Software was distributed did not enable all +possible uses to be tested and verified, nor for the presence of +possible defects to be detected. In this respect, the Licensee's +attention has been drawn to the risks associated with loading, using, +modifying and/or developing and reproducing the Software which are +reserved for experienced users. + +The Licensee shall be responsible for verifying, by any or all means, +the suitability of the product for its requirements, its good working order, +and for ensuring that it shall not cause damage to either persons or +properties. + +9.2 The Licensor hereby represents, in good faith, that it is entitled +to grant all the rights over the Software (including in particular the +rights set forth in Article 5). + +9.3 The Licensee acknowledges that the Software is supplied "as is" by +the Licensor without any other express or tacit warranty, other than +that provided for in Article 9.2 and, in particular, without any warranty +as to its commercial value, its secured, safe, innovative or relevant +nature. + +Specifically, the Licensor does not warrant that the Software is free +from any error, that it will operate without interruption, that it will +be compatible with the Licensee's own equipment and software +configuration, nor that it will meet the Licensee's requirements. + +9.4 The Licensor does not either expressly or tacitly warrant that the +Software does not infringe any third party intellectual property right +relating to a patent, software or any other property right. Therefore, +the Licensor disclaims any and all liability towards the Licensee +arising out of any or all proceedings for infringement that may be +instituted in respect of the use, modification and redistribution of the +Software. Nevertheless, should such proceedings be instituted against +the Licensee, the Licensor shall provide it with technical and legal +assistance for its defense. Such technical and legal assistance shall be +decided on a case-by-case basis between the relevant Licensor and the +Licensee pursuant to a memorandum of understanding. The Licensor +disclaims any and all liability as regards the Licensee's use of the +name of the Software. No warranty is given as regards the existence of +prior rights over the name of the Software or as regards the existence +of a trademark. + + + Article 10 - TERMINATION + +10.1 In the event of a breach by the Licensee of its obligations +hereunder, the Licensor may automatically terminate this Agreement +thirty (30) days after notice has been sent to the Licensee and has +remained ineffective. + +10.2 A Licensee whose Agreement is terminated shall no longer be +authorized to use, modify or distribute the Software. However, any +licenses that it may have granted prior to termination of the Agreement +shall remain valid subject to their having been granted in compliance +with the terms and conditions hereof. + + + Article 11 - MISCELLANEOUS + + + 11.1 EXCUSABLE EVENTS + +Neither Party shall be liable for any or all delay, or failure to +perform the Agreement, that may be attributable to an event of force +majeure, an act of God or an outside cause, such as defective +functioning or interruptions of the electricity or telecommunications +networks, network paralysis following a virus attack, intervention by +government authorities, natural disasters, water damage, earthquakes, +fire, explosions, strikes and labor unrest, war, etc. + +11.2 Any failure by either Party, on one or more occasions, to invoke +one or more of the provisions hereof, shall under no circumstances be +interpreted as being a waiver by the interested Party of its right to +invoke said provision(s) subsequently. + +11.3 The Agreement cancels and replaces any or all previous agreements, +whether written or oral, between the Parties and having the same +purpose, and constitutes the entirety of the agreement between said +Parties concerning said purpose. No supplement or modification to the +terms and conditions hereof shall be effective as between the Parties +unless it is made in writing and signed by their duly authorized +representatives. + +11.4 In the event that one or more of the provisions hereof were to +conflict with a current or future applicable act or legislative text, +said act or legislative text shall prevail, and the Parties shall make +the necessary amendments so as to comply with said act or legislative +text. All other provisions shall remain effective. Similarly, invalidity +of a provision of the Agreement, for any reason whatsoever, shall not +cause the Agreement as a whole to be invalid. + + + 11.5 LANGUAGE + +The Agreement is drafted in both French and English and both versions +are deemed authentic. + + + Article 12 - NEW VERSIONS OF THE AGREEMENT + +12.1 Any person is authorized to duplicate and distribute copies of this +Agreement. + +12.2 So as to ensure coherence, the wording of this Agreement is +protected and may only be modified by the authors of the License, who +reserve the right to periodically publish updates or new versions of the +Agreement, each with a separate number. These subsequent versions may +address new issues encountered by Free Software. + +12.3 Any Software distributed under a given version of the Agreement may +only be subsequently distributed under the same version of the Agreement +or a subsequent version, subject to the provisions of Article 5.3.4. + + + Article 13 - GOVERNING LAW AND JURISDICTION + +13.1 The Agreement is governed by French law. The Parties agree to +endeavor to seek an amicable solution to any disagreements or disputes +that may arise during the performance of the Agreement. + +13.2 Failing an amicable solution within two (2) months as from their +occurrence, and unless emergency proceedings are necessary, the +disagreements or disputes shall be referred to the Paris Courts having +jurisdiction, by the more diligent Party. + + +Version 2.0 dated 2006-07-12. diff --git a/README.md b/README.md new file mode 100644 index 000000000..a05bd7320 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +![Logo](http://cimg.eu/img/CImgLogo2.jpg) +##### http://cimg.eu + +------------------ + +The **CImg Library** is a **small** and **open-source** **C++ toolkit** for **image processing**, designed with these properties in mind: + +![Usefulness](http://cimg.eu/img/item_usefulness.jpg) **CImg** defines *classes* and *methods* to manage images in your own C++ code. You can use **CImg** to load/save various file formats, access pixel values, display/transform/filter images, draw primitives (text, faces, curves, 3d objects, ...), compute statistics, manage user interactions on images, and so on... + +![Genericity](http://cimg.eu/img/item_genericity.jpg) **CImg** defines a single image class able to represent datasets having up to *4-dimensions* (from 1d scalar signals to 3d hyperspectral volumetric images), with *template pixel types* (`bool,char,int,float,...`). It also handles image *collections* and *sequences*. + +![Portability](http://cimg.eu/img/item_portability.jpg) **CImg** is *self-contained*, *thread-safe* and *highly portable*. It fully works on *different operating systems* (`Unix,Windows,MacOS X,*BSD,...`) and is compatible with *various C++ compilers* (`Visual C++,g++,clang++,icc,...`). + +![Simplicity](http://cimg.eu/img/item_simplicity.jpg) **CImg** is *lightweight*. It is made of a single header file [`CImg.h`](https://github.com/dtschump/CImg/raw/master/CImg.h) that must be included in your C++ source. It defines only *four* different classes, encapsulated in the namespace `cimg_library`. It can be compiled using a minimal set of standard C++ and system libraries only. *No need for exotic or complex dependencies*. + +![Extensibility](http://cimg.eu/img/item_extensibility.jpg) Although not mandatory, **CImg** can use functionalities of external tools/libraries such as [Board](http://libboard.sourceforge.net/), [FFMPEG](http://ffmpeg.mplayerhq.hu/), [FFTW3](http://www.fftw.org/), [GraphicsMagick](http://www.graphicsmagick.org/), [ImageMagick](http://www.imagemagick.org/), [Lapack](http://www.netlib.org/lapack/), [libcurl](http://curl.haxx.se/libcurl/), [libjpeg](http://www.ijg.org/), [libpng](http://www.libpng.org/pub/png/libpng.html), [libtiff](http://www.libtiff.org/), [Magick++](http://www.imagemagick.org/Magick++/), [OpenEXR](http://www.openexr.com/), [OpenCV](http://http://opencv.willowgarage.com/wiki/), [OpenMP](http://www.openmp.org/) or [XMedCon](http://xmedcon.sourceforge.net/). Moreover, a simple *plug-in* mechanism allows any user to directly enhance the library capabilities according to their needs. + +![Freedom](http://cimg.eu/img/item_freedom.jpg) **CImg** is a *free, open-source library* distributed under the [*CeCILL-C*](http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt) (close to the GNU LGPL) or [CeCILL](http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt) (compatible with the GNU GPL) licenses. It can be used in commercial applications. + +------------------ + +> **CImg** stands for **Cool Image** : It is _easy to use_, _efficient_ and is intended to be a very pleasant toolbox to design image processing algorithms in C++. Due to its generic conception, it can cover a wide range of image processing applications. + +------------------ diff --git a/README.txt b/README.txt new file mode 100644 index 000000000..f275ef0be --- /dev/null +++ b/README.txt @@ -0,0 +1,180 @@ +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + ____ _ _ ____ + (_ _)( )_( )( ___) + )( ) _ ( )__) + (__) (_) (_)(____) + ___ ____ __ __ ___ __ ____ ____ ____ __ ____ _ _ + / __)(_ _)( \/ )/ __) ( ) (_ _)( _ \( _ \ /__\ ( _ \( \/ ) + ( (__ _)(_ ) (( (_-. )(__ _)(_ ) _ < ) / /(__)\ ) / \ / + \___)(____)(_/\/\_)\___/ (____)(____)(____/(_)\_)(__)(__)(_)\_) (__) + + + C++ Template Image Processing Toolkit + + ( http://cimg.eu ) + + _cimg_version + +-------------------------------------------------------------------------------- + +# Summary +#--------- + + The CImg Library is a small and open-source C++ toolkit for image processing. + It consists in a single header file 'CImg.h' providing a minimal set of C++ + classes and methods that can be used in your own sources, to load/save, + process and display images. Very portable (Unix/X11,Windows, MacOS X, FreeBSD, .. ), + efficient, easy to use, it's a pleasant library for developing image processing + algorithms in C++. + +# Authors and contributors : +#---------------------------- + + - David Tschumperlé (project leader) ( http://tschumperle.users.greyc.fr/ ) + + - Maksim Aizenshtein + - Alberto Albiol + - Antonio Albiol + - Simon Barthelme + - Neil Brown + - Haz-Edine Assemlal + - Vincent Barra + - Wolf Blecher + - Romain Blei + - Yohan Bentolila + - Jerome Boulanger + - Pierre Buyssens + - Sebastien Coudert + - Frederic Devernay + - Olivier D'Hondt + - Francois-Xavier Dupe + - Gerd von Egidy + - Eric Fausett + - Jean-Marie Favreau + - Sebastien Fourey + - Alexandre Fournier + - Hon-Kwok Fung + - Vincent Garcia + - David Grimbichler + - Jinwei Gu + - Jean-Daniel Guyot + - Cedric Hammiche + - Matt Hanson + - Sebastien Hanel + - Michael Holroyd + - Christoph Hormann + - Werner Jainek + - Daniel Kondermann + - Pierre Kornprobst + - Jan W. Krieger + - Orges Leka + - Francois Lauze + - Xie Long + - Thomas Martin + - Cesar Martinez + - Jean Martinot + - Arnold Meijster (Center for High Performance Computing and Visualization, University of Groningen/The Netherlands) + - Nikita Melnichenko + - Julien Morat + - Baptiste Mougel + - Jovana Milutinovich + - Guillaume Nee + - Adam Newgas + - Francisco Oliveira + - Andrea Onofri + - Renaud Peteri + - Martin Petricek + - Paolo Prete + - Adrien Reboisson + - Klaus Schneider + - Jakob Schluttig + - Jamie Smith + - Veronique Souchaud + - Konstantin Spirin + - David G. Starkweather + - Rainer Steffens + - Grzegorz Szwoch + - Thierry Thomas + - Yu-En-Yun + - Vo Duc Khanh + - Phillip Wood + - Bug Zhao + - Haibo Zheng + +# Institution +#------------- + + GREYC Image / CNRS UMR 6072 / FRANCE + + The CImg Library project started in 2000, at the INRIA-Sophia + Antipolis/France ( http://www-sop.inria.fr/ ), in the ROBOTVIS / ODYSSEE Team. + Since October 2004, it is maintained and developed in the Image team of + the GREYC Lab (CNRS, UMR 6072), in Caen/France. + Team web page : http://www.greyc.fr/image + +# Licenses +#---------- + + The source code of the CImg Library is distributed under + two distinct licenses : + + - The main library file 'CImg.h' is *dual-licensed* : + It can be either distributed under the CeCILL-C or CeCILL license. + (see files 'Licence_CeCILL-C_V1-en.txt' and 'Licence_CeCILL_V2-en.txt'). + Both are Free-Software licenses : + + * CeCILL-C is adapted to the distribution of + library components, and is close in its terms to the well known GNU LGPL license + (the 'CImg.h' file can thus be used in closed-source products under certain + conditions, please read carefully the license file). + + * CeCILL is close to (and even compatible with) the GNU GPL license. + + - Most of the other files are distributed under the CeCiLL license + (file 'Licence_CeCILL_V2-en.txt'). See each file header to see what license applies. + + These two CeCiLL licenses ( http://www.cecill.info/index.en.html ) have been + created under the supervision of the three biggest research institutions on + computer sciences in France : + + - CNRS ( http://www.cnrs.fr/ ) + - CEA ( http://www.cea.fr/ ) + - INRIA ( http://www.inria.fr/ ) + + You have to RESPECT these licenses. More particularly, please carefully read + the license terms before using the CImg library in commercial products. + +# Package structure : +#-------------------- + + The main package directory CImg/ is organized as follows : + + - README.txt : This file. + - Licence_CeCILL-C_V1-en.txt : A copy of the CeCiLL-C license file. + - Licence_CeCILL_V2-en.txt : A copy of the CeCiLL license. + - CImg.h : The single header file that constitutes the library itself. + - examples/ : A directory containing a lot of example programs performing + various things, using the CImg library. + - html/ : A directory containing a copy of the CImg web page in html + format. The reference documentation is generated + automatically with the tool 'doxygen' (http://www.doxygen.org). + - resources/ : A directory containing some resources files for compiling + CImg examples or packages with various C++ compilers and OS. + - plugins/ : A directory containing CImg plug-ins files that can be used to + add specific extra functionalities to the CImg library. + +# Getting started +#----------------- + + If you are new to CImg, you should first try to compile the different examples + provided in the 'examples/' directory, to see what CImg is capable of + (as CImg is a template-based library, no prior compilation of the library is mandatory). + Look at the 'resources/' directory to ease this compilation on different platforms. + + Then, you can look at the documentation 'html/reference/' to learn more about CImg + functions and classes. Finally, you can participate to the 'Forum' section + of the CImg web page and ask for help if needed. + +# End of file +#------------ diff --git a/examples/CImg_demo.cpp b/examples/CImg_demo.cpp new file mode 100644 index 000000000..4a03db80e --- /dev/null +++ b/examples/CImg_demo.cpp @@ -0,0 +1,1712 @@ +/* + # + # File : CImg_demo.cpp + # ( C++ source file ) + # + # Description : A multi-part demo demonstrating some of the CImg capabilities. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Include static image data, so that the exe does not depend on external image files. +#include "img/CImg_demo.h" + +// Include CImg library header. +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Item : Blurring Gradient +//---------------------------- +void* item_blurring_gradient() { + const CImg src(data_milla,211,242,1,3); + CImgList grad = src.get_gradient(); + CImgList visu = (src,sqrt(grad[0].pow(2) + grad[1].pow(2)).normalize(0,255),src); + CImgDisplay disp(visu,"[#1] - Color Image, Gradient Norm and Blurring Gradient",0); + + for (double sigma = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); sigma+=0.05) { + visu[2] = visu[1].get_blur((float)cimg::abs(30*std::cos(sigma))).normalize(0,255); + disp.resize(false).display(visu).wait(20); + } + return 0; +} + +// Item : Rotozoom +//----------------- +void* item_rotozoom() { + CImg src = CImg(data_milla,211,242,1,3,false).resize(400,300,1,3,3), + img(src), img2(img); + CImgDisplay disp(img.width(),img.height(),"[#2] - Rotozoom",0); + float alpha = 0, t = 0, angle = 0, zoom0 = -0.9f, w2 = 0.5f*img.width(), h2 = 0.5f*img.height(); + const unsigned char color[] = { 16,32,64 }; + + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + cimg_forYC(src,y,k) { + const int xc = 4*src.width() + (int)(60*std::sin((float)y*3/src.height() + 10*t)); + cimg_forX(src,x) { + const float val = (float)(src((xc + x)%src.width(),y,0,k)* + (1.3f + 0.20*std::sin(alpha + k*k*((float)src.width()/2 - x)* + ((float)src.height()/2 - y)*std::cos(t)/300.0))); + img(x,y,0,k) = (unsigned char)(val>255.0f?255:val); + } + } + const float + zoom = 1.0f + (float)(zoom0 + 0.3f*(1 + std::cos(3*t))), + rad = (float)(angle*cimg::PI/180), ca = (float)std::cos(rad)/zoom, sa = (float)std::sin(rad)/zoom; + cimg_forXY(img,x,y) { + const float + cX = x - w2, cY = y - h2, + fX = w2 + cX*ca - cY*sa, + fY = h2 + cX*sa + cY*ca; + const int + X = cimg::mod((int)fX,img.width()), + Y = cimg::mod((int)fY,img.height()); + cimg_forC(img,c) img2(x,y,c) = img(X,Y,c); + } + img2.swap(img).draw_text(3,3,"Mouse buttons\nto zoom in/out",color,0,0.8f,24).display(disp.resize(false).wait(20)); + alpha+=0.7f; t+=0.01f; angle+=0.8f; + zoom0+=disp.button()&1?0.1f:disp.button()&2?-0.1f:0; + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(400,400,false).toggle_fullscreen(false); + } + return 0; +} + +// Item : Anisotropic Smoothing (Total variation PDE, explicit scheme) +//-------------------------------------------------------------------- +void* item_anisotropic_smoothing() { + const CImg src = CImg<>(data_milla,211,242,1,3).noise(-30,1); + CImgList images(src,src); + CImgDisplay disp(images,"[#3] - Anisotropic smoothing"); + const float white[] = { 255, 255, 255 }, black[] = { 0, 0, 0 }; + + for (unsigned int iter = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ++iter) { + + // Compute PDE velocity field. + CImg_3x3(I,float); + CImg veloc(src); + float *ptrd = veloc.data(), betamax = 0; + cimg_forC(src,k) cimg_for3x3(images[1],x,y,0,k,I,float) { + const float + ix = (Inc - Ipc)/2, + iy = (Icn - Icp)/2, + ng = (float)std::sqrt(1e-10f + ix*ix + iy*iy), + ixx = Inc + Ipc - 2*Icc, + iyy = Icn + Icp - 2*Icc, + ixy = 0.25f*(Inn + Ipp - Ipn - Inp), + iee = (ix*ix*iyy + iy*iy*ixx - 2*ix*iy*ixy)/(ng*ng), + beta = iee/(0.1f + ng); + if (beta>betamax) betamax = beta; else if (-beta>betamax) betamax = -beta; + *(ptrd++) = beta; + } + veloc*=40.0f/betamax; + images[1]+=veloc; + images[0].draw_text(4,4,"Iteration : %u ",white,black,1,13,iter); + disp.resize(false).display(images); + } + return 0; +} + +// Item : Fractal Animation +//-------------------------- +void* item_fractal_animation() { + CImg img(400,400,1,3,0), img2(img), noise(3,2,1,3); + const float w2 = 0.5f*img.width(), h2 = 0.5f*img.height(); + CImgDisplay disp(img,"[#4] - Fractal Animation"); + float zoom = 0; + for (unsigned int iter = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ++iter, zoom+=0.2f) { + img.draw_image((img.width() - noise.width())/2, + (img.height() - noise.height())/2, + noise.fill(0).noise(255,1)); + const float + nzoom = (float)(1.04f + 0.02f*std::sin(zoom/10)), + rad = (float)(10*std::sin(iter/25.0)*cimg::PI/180), + ca = (float)std::cos(rad)/nzoom, sa = (float)std::sin(rad)/nzoom; + cimg_forXY(img,x,y) { + const float + cX = x - w2, cY = y - h2, + X = w2 + cX*ca - cY*sa, + Y = h2 + cX*sa + cY*ca; + cimg_forC(img,c) img2(x,y,c) = img.atXY((int)X,(int)Y,0,c,0); + } + img2.swap(img).resize(disp.resize(false)).display(disp.wait(25)); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(400,400,false).toggle_fullscreen(false); + } + return 0; +} + +// Item : Gamma Correction and Histogram Visualization +//----------------------------------------------------- +void* item_gamma_correction() { + CImg img = CImg<>(data_milla,211,242,1,3).normalize(0,1); + CImgList visu(img*255.0,CImg(512,300,1,3,0)); + CImgDisplay disp(visu,"[#5] - Gamma Corrected Image and Histogram (Click to set Gamma)"); + const unsigned char + yellow[] = { 255, 255, 0 }, blue[] = { 0, 155, 255 }, blue2[] = { 0, 0, 255 }, + blue3[] = { 0, 0, 155 }, white[] = { 255, 255, 255 }, green[] = { 50, 128, 50 }; + + for (double gamma = 1; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ) { + cimg_forXYZC(visu[0],x,y,z,k) visu[0](x,y,z,k) = (unsigned char)(std::pow((double)img(x,y,z,k),1.0/gamma)*256); + const CImg hist = visu[0].get_histogram(50,0,255); + visu[1].fill(0).draw_text(50,5,"Gamma = %.3g",white,0,1,24,gamma). + draw_graph(hist,green,1,3,0,20000,0).draw_graph(hist,yellow,1,2,0,20000,0). + draw_axes(0,256,20000,0,white,0.7f); + const int xb = (int)(50 + gamma*150); + visu[1].draw_grid(20,20,0,0,false,false,white,0.3f,0xCCCCCCCC,0xCCCCCCCC). + draw_rectangle(51,31,xb - 1,39,blue2).draw_rectangle(50,30,xb,30,blue).draw_rectangle(xb,30,xb,40,blue). + draw_rectangle(xb,40,50,39,blue3).draw_rectangle(50,30,51,40,blue3); + if (disp.button() && disp.mouse_x()>=img.width() + 50 && disp.mouse_x()<=img.width() + 450) + gamma = (disp.mouse_x() - img.width() - 50)/150.0; + disp.resize(disp,false).display(visu).wait(); + } + return 0; +} + +// Item : Filled Triangles +//------------------------- +void* item_filled_triangles() { + + // Create a colored 640x480 background image which consists of different color shades. + CImg background(640,480,1,3); + cimg_forXY(background,x,y) background.fillC(x,y,0, + x*std::cos(6.0*y/background.height()) + + y*std::sin(9.0*x/background.width()), + x*std::sin(8.0*y/background.height()) - + y*std::cos(11.0*x/background.width()), + x*std::cos(13.0*y/background.height()) - + y*std::sin(8.0*x/background.width())); + background.normalize(0,180); + + // Init images and create display window. + CImg img0(background), img; + unsigned char white[] = { 255, 255, 255 }, color[100][3]; + CImgDisplay disp(img0,"[#6] - Filled Triangles (Click to shrink)"); + + // Define random properties (pos, size, colors, ..) for all triangles that will be displayed. + float posx[100], posy[100], rayon[100], angle[100], veloc[100], opacity[100]; + int num = 1; + std::srand((unsigned int)time(0)); + for (int k = 0; k<100; ++k) { + posx[k] = (float)(cimg::rand()*img0.width()); + posy[k] = (float)(cimg::rand()*img0.height()); + rayon[k] = (float)(10 + cimg::rand()*50); + angle[k] = (float)(cimg::rand()*360); + veloc[k] = (float)(cimg::rand()*20 - 10); + color[k][0] = (unsigned char)(cimg::rand()*255); + color[k][1] = (unsigned char)(cimg::rand()*255); + color[k][2] = (unsigned char)(cimg::rand()*255); + opacity[k] = (float)(0.3 + 1.5*cimg::rand()); + } + + // Start animation loop. + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + img = img0; + + // Draw each triangle on the background image. + for (int k = 0; k0 && disp.mouse_y()>0) { + float u = disp.mouse_x() - posx[k], v = disp.mouse_y() - posy[k]; + if (disp.button()) { u = -u; v = -v; } + posx[k]-=0.03f*u, posy[k]-=0.03f*v; + if (posx[k]<0 || posx[k]>=img.width()) posx[k] = (float)(cimg::rand()*img.width()); + if (posy[k]<0 || posy[k]>=img.height()) posy[k] = (float)(cimg::rand()*img.height()); + } + } + + // Display current animation framerate, and refresh display window. + img.draw_text(5,5,"%u frames/s",white,0,0.5f,13,(unsigned int)disp.frames_per_second()); + img0.resize(disp.display(img).resize(false).wait(20)); + if (++num>100) num = 100; + + // Allow the user to toggle fullscreen mode, by pressing CTRL+F. + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(640,480,false).toggle_fullscreen(false); + } + return 0; +} + +// Item : Mandelbrot/Julia Explorer +//---------------------------------- +void* item_mandelbrot_explorer() { + + // Define image canvas and corresponding display window. + CImg img(800,600,1,3,0); + CImgDisplay disp(img); + + // Start main explorer loop. + double julia_r = 0, julia_i = 0; + for (bool endflag = false, fractal_type = false, smooth = false, show_help = true; !endflag;) { + bool stopflag = false; + double xmin, xmax, ymin, ymax; + + // Init default upper-left/lower-right coordinates of the fractal set. + if (fractal_type) { xmin = -1.5; xmax = 1.5; ymin = -1.5; ymax = 1.5; julia_r = 0.317; julia_i = 0.029; } + else { xmin = -2.25; xmax = 1.0; ymin = -1.5; ymax = 1.5; julia_r = julia_i = 0; } + + // Create random palette for displaying the fractal set. + const CImg palette = + CImg(256,1,1,3,16 + 120).noise(119,1).resize(1024,1,1,3,3).fillC(0,0,0,0,0,0); + + // Enter event loop for the current fractal set. + for (unsigned int maxiter = 64; !stopflag; ) { + + // Draw Mandelbrot or Julia fractal set on the image. + img.resize(disp.resize().set_title("[#7] - %s Set : (%g,%g)-(%g,%g), %s = (%g,%g) (%u iter.)", + fractal_type?"Julia":"Mandelbrot",xmin,ymin,xmax,ymax, + fractal_type?"c":"z0",julia_r,julia_i,maxiter)). + fill(0).draw_mandelbrot(palette,1,xmin,ymin,xmax,ymax,maxiter,smooth,fractal_type,julia_r,julia_i); + + // Display help if necessary. + if (show_help) { + const unsigned char white[] = { 255, 255, 255 }; + static CImg + help = CImg().draw_text(0,0,"\n" + " Use mouse to zoom on desired region. \n" + " H Show/Hide help \n" + " PAD 1...9 Fractal navigation \n" + " PAD +/- Zoom/Unzoom \n" + " SPACE Set/Disable color smoothing \n" + " ENTER Switch Mandelbrot/Julia sets \n" + " Arrows Change set parameterization \n" + " Page UP/DOWN Add/Reduce iteration numbers \n\n", + white).resize(-100,-100,1,3); + help.draw_rectangle(2,2,help.width() - 3,help.height() - 3,white,1,~0U); + img.draw_image(img.width() - help.width(),help,0.7f); + } + + // Get rectangular shape from the user to define the zoomed region. + const CImg selection = img.get_select(disp,2,0,true); + const int xs0 = selection[0], ys0 = selection[1], xs1 = selection[3], ys1 = selection[4]; + + // If the user has selected a region with the mouse, then zoom-in ! + if (xs0>=0 && ys0>=0 && xs1>=0 && ys1>=0) { + const double dx =(xmax - xmin)/img.width(), dy =(ymax - ymin)/img.height(); + const int dsmax = (ys1 - ys0)/2, xs = (xs0 + xs1)/2, ys = (ys0 + ys1)/2; + + // If the region is too small (point) then reset the fractal set position and zoom. + if (dsmax<5) stopflag = true; + xmin+=(xs - dsmax*dy/dx)*dx; + ymin+=(ys - dsmax)*dy; + xmax-=(img.width() - xs - dsmax*dy/dx)*dx; + ymax-=(img.height() - ys - dsmax)*dy; + } + + // Also, test if a key has been pressed. + // (moving in the fractal set can be done, using keyboard). + switch (disp.key()) { + + // Show/hide help. + case cimg::keyH: show_help = !show_help; break; + + // Switch between Julia/Mandelbrot sets. + case cimg::keyENTER: fractal_type = !fractal_type; stopflag = true; break; + + // Enable/disable smoothed colors. + case cimg::keySPACE: smooth = !smooth; break; + + // Change fractal set parameters. + case cimg::keyARROWLEFT: julia_r-=fractal_type?0.001f:0.05f; break; + case cimg::keyARROWRIGHT: julia_r+=fractal_type?0.001f:0.05f; break; + case cimg::keyARROWUP: julia_i+=fractal_type?0.001f:0.05f; break; + case cimg::keyARROWDOWN: julia_i-=fractal_type?0.001f:0.05f; break; + + // Add/remove iterations. + case cimg::keyPAGEDOWN: maxiter-=32; break; + case cimg::keyPAGEUP: maxiter+=16; break; + + // Move left, right, up and down in the fractal set. + case cimg::keyPAD4: { const double delta = (xmax - xmin)/10; xmin-=delta; xmax-=delta; } break; + case cimg::keyPAD6: { const double delta = (xmax - xmin)/10; xmin+=delta; xmax+=delta; } break; + case cimg::keyPAD8: { const double delta = (ymax - ymin)/10; ymin-=delta; ymax-=delta; } break; + case cimg::keyPAD2: { const double delta = (ymax - ymin)/10; ymin+=delta; ymax+=delta; } break; + + // Allow to zoom in/out in the fractal set. + case cimg::keyPADADD: { + const double + xc = 0.5*(xmin + xmax), + yc = 0.5*(ymin + ymax), + dx = (xmax - xmin)*0.85/2, + dy = (ymax - ymin)*0.85/2; + xmin = xc - dx; ymin = yc - dy; xmax = xc + dx; ymax = yc + dy; + } break; + case cimg::keyPADSUB: + const double + xc = 0.5*(xmin + xmax), + yc = 0.5*(ymin + ymax), + dx = (xmax - xmin)*1.15/2, + dy = (ymax - ymin)*1.15/2; + xmin = xc - dx; ymin = yc - dy; xmax = xc + dx; ymax = yc + dy; + break; + } + + // Do a simple test to check if more/less iterations are necessary for the next step. + const float value = (float)img.get_norm().get_histogram(256,0,255)(0)*3; + if (value>img.size()/6.0f) maxiter+=16; + if (maxiter>1024) maxiter = 1024; + if (value img(256,256 + 64,1,3,0); + unsigned char color[] = { 255, 255, 255 }; + cimg_for_inY(img,256,img.height() - 1,yy) cimg_forX(img,xx) img.fillC(xx,yy,0,xx,(yy - 256)*4,(3*xx)%256); + CImgDisplay disp(img.draw_text(5,5," ",color,color),"[#8] - Mini-Paint"); + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + const unsigned int but = disp.button(); + redraw = false; + xo = x; yo = y; x = disp.mouse_x(); y = disp.mouse_y(); + if (xo>=0 && yo>=0 && x>=0 && y>=0) { + if (but&1 || but&4) { + if (y<253) { + const float tmax = (float)std::max(cimg::abs(xo - x),cimg::abs(yo - y)) + 0.1f; + const int radius = (but&1?3:0) + (but&4?6:0); + for (float t = 0; t<=tmax; ++t) + img.draw_circle((int)(x + t*(xo - x)/tmax),(int)(y + t*(yo - y)/tmax),radius,color); + } + if (y>=256) { + color[0] = img(x,y,0); color[1] = img(x,y,1); color[2] = img(x,y,2); + img.draw_text(5,5," ",color,color); + } + redraw = true; + } + if (y>=253) y = 252; + if (disp.button()&2) { img.draw_fill(x,y,color); redraw = true; } + } + if (redraw) disp.display(img); + disp.resize(disp).wait(); + if (disp.key()) cimg_forC(img,k) { img.get_shared_rows(0,255,0,k).fill(0); img.display(disp); } + } + return 0; +} + +// Item : Soccer Bobs +//------------------- +void* item_soccer_bobs() { + CImg foot(data_foot,200,200,1,3,false), canvas0(640,480,1,3,0); + const unsigned char color[] = { 255, 255, 0 }; + float zoom = 0.2f; + cimg_forXY(canvas0,x,y) canvas0(x,y,1) = (unsigned char)(20 + (y*215/canvas0.height()) + 19*cimg::rand(-1,1)); + canvas0.draw_text(5,5,"Left/Right Mouse Button = Zoom In/Out\nMiddle Button = Reset Screen",color); + CImgList canvas(16,canvas0); + CImg mask(foot.width(),foot.height()); + cimg_forXY(mask,x,y) mask(x,y) = (foot(x,y,0)==255 && !foot(x,y,1) && !foot(x,y,2))?0:0.8f; + CImgDisplay disp(canvas0,"[#9] - Unlimited Soccer Bobs"); + for (unsigned int curr_canvas = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); (++curr_canvas) %= 16) { + if (disp.mouse_x()>=0 && disp.mouse_y()>=0) + canvas[curr_canvas].draw_image((int)(disp.mouse_x() - zoom*foot.width()/2), + (int)(disp.mouse_y() - zoom*foot.height()/2), + foot.get_resize((int)(foot.width()*zoom),(int)(foot.height()*zoom)), + mask.get_resize((int)(foot.width()*zoom),(int)(foot.height()*zoom))); + zoom+=disp.button()&1?0.03f:disp.button()&2?-0.03f:0; + zoom = zoom<0.1f?0.1f:zoom>1?1.0f:zoom; + if (disp.button()&4) cimglist_for(canvas,l) canvas[l] = canvas0; + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.toggle_fullscreen(false); + disp.display(canvas[curr_canvas]).resize(disp,false).wait(20); + } + return 0; +} + +// Item : Bump Effect +//-------------------- +void* item_bump() { + CImg logo = CImg<>(56,32,1,1,0).draw_text(12,3,"I Love\nCImg !",CImg<>::vector(255).data()). + resize(-800,-800,1,1,3).blur(6).normalize(0,255); + logo+=CImg<>(logo.width(),logo.height(),1,1,0).noise(80,1).deriche(2,0,'y',false).deriche(10,0,'x',false); + CImgList grad = logo.get_gradient(); + cimglist_apply(grad,normalize)(-140,140); + logo.normalize(0,255); + CImg light = CImg<>(300 + 2*logo.width(),300 + 2*logo.height()); + light.draw_gaussian(0.5f*light.width(),0.5f*light.height(),80,CImg<>::vector(255).data()); + CImg img(logo.width(),logo.height(),1,3,0); + CImgDisplay disp(img,"[#10] - Bump Effect (Move lightsource with mouse)"); + for (float t = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); t+=0.03f) { + const int + mouse_x = (disp.mouse_x()>=0 && disp.button())?disp.mouse_x()*img.width()/disp.width(): + (int)(img.width()/2 + img.width()*std::cos(1*t)/2), + mouse_y = (disp.mouse_y()>=0 && disp.button())?disp.mouse_y()*img.height()/disp.height(): + (int)(img.height()/2 + img.height()*std::sin(3*t)/2); + cimg_forXY(img,x,y) { + const int gx = (int)grad[0](x,y), gy = (int)grad[1](x,y); + const float val = 40 + (gx + gy)/2 + light(light.width()/2 + mouse_x - x + gx, + light.height()/2 + mouse_y - y + gy); + img(x,y,0) = img(x,y,1) = img(x,y,2) = (unsigned char)(val>255?255:val<0?0:val); + } + disp.resize(false).display(img.draw_image(0,0,0,1,logo,0.1f)).wait(25); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(640,480,false).toggle_fullscreen(false); + } + return 0; +} + +// Item : Bouncing Bubble +//------------------------ +void* item_bouncing_bubble() { + CImg back(420,256,1,3,0), img; + cimg_forXY(back,x,y) back(x,y,2) = (unsigned char)((y<2*back.height()/3)?30:(255 - 2*(y + back.height()/2))); + CImgDisplay disp(back,"[#11] - Bouncing bubble"); + const unsigned char col1[] = { 40, 100, 10 }, col2[] = { 20, 70, 0 }, col3[] = { 40, 150, 10 }, + col4[] = { 200, 255, 100 }, white[] = { 255, 255, 255 }; + float u = (float)std::sqrt(2.0f), cx = back.width()/2.0f, t = 0, vt = 0.05f, vx = 2; + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + img = back; + int xm = (int)cx, ym = (int)(img.height()/2 - 70 + (img.height()/2 + 10)*(1 - cimg::abs(std::cos((t+=vt))))); + float r1 = 50, r2 = 50; + vt = 0.05f; + if (xm + r1>=img.width()) { const float delta = (xm + r1) - img.width(); r1-=delta; r2+=delta; } + if (xm - r1<0) { const float delta = -(xm - r1); r1-=delta; r2+=delta; } + if (ym + r2>=img.height() - 40) { + const float delta = (ym + r2) - img.height() + 40; + r2-=delta; + r1+=delta; + vt = 0.05f - 0.0015f*(50 - r2); + } + if (ym - r2<0) { const float delta = -(ym - r2); r2-=delta; r1+=delta; } + img.draw_ellipse(xm,ym,r1,r2,0,col1). + draw_ellipse((int)(xm + 0.03*r1*u),(int)(ym - 0.03*r2*u),0.85f*r1,0.85f*r2,0,col2). + draw_ellipse((int)(xm + 0.1*r1*u),(int)(ym - 0.1*r2*u),0.8f*r1,0.8f*r2,0,col1). + draw_ellipse((int)(xm + 0.2*r1*u),(int)(ym - 0.2*r2*u),r1/2,r2/2,0,col3). + draw_ellipse((int)(xm + 0.3*r1*u),(int)(ym - 0.3*r2*u),r1/4,r2/4,0,col4). + draw_image(0,img.height() - 40,img.get_crop(0,img.height() - 80,img.width() - 1,img.height() - 40). + mirror('y'),0.45f). + draw_text(xm - 70,(int)(ym - r2 - 30),"Bubble (%d,%d)",white,0,0.7f,24,xm,ym); + if ((cx+=20*vt*vx)>=img.width() - 30 || cx<30) vx = -vx; + disp.display(img).wait(20); + if (disp.is_resized()) { + back.resize(disp.resize(disp.window_width()>200?disp.window_width():200,disp.height(),false)); + cx = back.width()/2.0f; + } + } + return 0; +} + +// Item : Virtual Landscape +//-------------------------- +void* item_virtual_landscape() { + CImg background(400,300,1,3,0), visu(background); + cimg_forXY(background,x,y) { + if (y>background.height()/2) { + background(x,y,2) = 255; + background(x,y,0) = (y - background.height()/2)*512/background.height(); + } else background(x,y,2) = y*512/background.height(); + } + const int white[] = { 255, 255, 255 }; + CImgDisplay disp(visu.draw_text(10,10,"Please wait, generating landscape...",white). + normalize(0,255),"[#12] - Virtual Landscape",0); + CImg + map = 5.0*(CImg<>(700,700,1,1,300).noise(300).draw_plasma(0.2f,300).normalize(-140,150).blur(5).cut(0,150)), + cmap(map.width(),map.height()); + CImg_3x3(I,float); Ipp = Inp = Icc = Ipn = Inn = 0; + cimg_for3x3(map,x,y,0,0,I,float) { + const float nox = 0.5f*(Inc - Ipc), noy = 0.5f*(Icn - Icp); + cmap(x,y) = std::max(0.0f,0.5f*nox + noy); + } + cmap.normalize(0,255); + + for (float t = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); t+=0.0025f) { + visu = background; + const int + xm = (int)(map.width()/2 + (map.width()/3)*std::cos(4.2f*t)), + ym = (int)(map.height()/2 + (map.height()/3)*std::sin(5.6f*t)); + const CImg + smap = map.get_crop(xm,ym,xm + 100,ym + 90), + scmap = cmap.get_crop(xm,ym,xm + 100,ym + 90); + CImg ymin(visu.width(),1,1,1,visu.height()), ymax(ymin.width(),1,1,1,0); + cimg_forY(smap,z) { + const int y0 = (int)(visu.height() - 1 - 10*std::pow((double)z,0.63) + 80); + cimg_forX(visu,x) { + const int nz = smap.height() - z; + float mx = x*(smap.width() - 2.0f*nz*0.2f)/visu.width() + 0.2f*nz; + const int y = (int)(y0 - smap.linear_atX(mx,z)/(1 + 0.02*z)); + const float cc = (float)scmap.linear_atX(mx,z); + if (y0.25?1:4*cz; + if (y!=y0) for (int l = y>0?y:0; l0?y:0; l plasma, camp(3), cfreq(3), namp(3), nfreq(3); + CImgList font = CImgList::font(53); + CImg visu(400,300,1,3,0), + scroll(visu.width() + 2*font[(int)'W'].width(),font[(int)'W'].height(),1,1,0); + const char *text = " * The CImg Library : C++ Template Image Processing Toolkit *"; + CImgDisplay disp(visu,"[#13] - Plasma Effect"); + const unsigned char white[] = { 255, 255, 255 }; + unsigned int cplasma = 0, pos = 0, tpos = 0, lwidth = 0; + float tx = 0, ts = 0, alpha = 2, beta = 0; + namp.fill(0).noise(visu.height()/4,0); + nfreq.fill(0).noise(0.1); + + visu.draw_text(10,10,"Please wait, generating plasma...",white).display(disp); + const unsigned int nb_plasmas = 5; + plasma.assign(5*visu.width()/3,visu.height() + 1,1,nb_plasmas,0).noise(100).draw_plasma(); + cimg_forC(plasma,k) plasma.get_shared_channel(k).blur((float)(cimg::rand()*6)).normalize(0,255); + + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + if (alpha>1) { + alpha-=1; + cplasma = (cplasma + 1)%plasma.spectrum(); + camp = namp; + cfreq = nfreq; + namp.fill(0).noise(100).normalize(0,visu.height()/4.0f); + nfreq.fill(0).noise(0.2); + } + const unsigned int + v0 = cplasma, v1 = (cplasma + 1)%plasma.spectrum(), + v2 = (cplasma + 2)%plasma.spectrum(), v3 = (cplasma + 3)%plasma.spectrum(); + const float umalpha = 1 - alpha; + + unsigned char *ptr_r = visu.data(0,0,0,0), *ptr_g = visu.data(0,0,0,1), *ptr_b = visu.data(0,0,0,2); + cimg_forY(visu,y) { + const float + *ptr_r1 = plasma.data((unsigned int)std::max(0.0f,camp(0)*(1.1f + std::sin(tx + cfreq(0)*y))),y,v0), + *ptr_g1 = plasma.data((unsigned int)std::max(0.0f,camp(1)*(1.1f + std::sin(tx + cfreq(1)*y))),y,v1), + *ptr_b1 = plasma.data((unsigned int)std::max(0.0f,camp(2)*(2.0f + std::sin(tx + cfreq(2)*y))),y,v2), + *ptr_r2 = plasma.data((unsigned int)std::max(0.0f,namp(0)*(1.1f + std::sin(tx + nfreq(0)*y))),y,v1), + *ptr_g2 = plasma.data((unsigned int)std::max(0.0f,namp(1)*(1.1f + std::sin(tx + nfreq(1)*y))),y,v2), + *ptr_b2 = plasma.data((unsigned int)std::max(0.0f,namp(2)*(2.0f + std::sin(tx + nfreq(2)*y))),y,v3); + cimg_forX(visu,x) { + *(ptr_r++) = (unsigned char)(umalpha*(*(ptr_r1++)) + alpha*(*(ptr_r2++))); + *(ptr_g++) = (unsigned char)(umalpha*(*(ptr_g1++)) + alpha*(*(ptr_g2++))); + *(ptr_b++) = (unsigned char)(umalpha*(*(ptr_b1++)) + alpha*(*(ptr_b2++))); + } + } + if (!pos) { + const CImg& letter = font(text[tpos] + 256); + lwidth = (unsigned int)letter.width(); + scroll.draw_image(visu.width(),letter); + (++tpos) %= std::strlen(text); + } + scroll.shift(-2); + if ((pos+=2)>lwidth + 2) pos = 0; + cimg_forX(visu,x) { + const int y0 = (int)(visu.height()/2 + visu.height()/4*std::sin(ts + x/(70 + 30*std::cos(beta)))); + cimg_forY(scroll,y) if (scroll(x,y)) { + const unsigned int y1 = y0 + y + 2; + const unsigned int y2 = y1 - 6; + const float c = scroll(x,y)/255.0f; + cimg_forC(visu,k) { + visu(x,y1,k) = (unsigned char)(visu(x,y1,k)*0.7f); + visu(x,y2,k) = (unsigned char)(visu(x,y2,k)*(1 - c) + 254*c); + } + } + } + alpha+=0.007f; beta+=0.04f; tx+=0.09f; ts+=0.04f; + disp.resize(false).display(visu).wait(20); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(640,480,false).toggle_fullscreen(false); + } + return 0; +} + +// Item : Oriented Convolutions +//------------------------------ +void* item_oriented_convolutions() { + const CImg img = CImg(data_milla,211,242,1,3).RGBtoYCbCr().channel(0).noise(50,2); + CImgList visu = (img,img,img); + CImg mask(16,16); + const float value = 255; + CImgDisplay disp(visu,"[#14] - Original image, Oriented kernel and Convolved image"); + for (float angle = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); angle+=0.1f) { + const float ca = (float)std::cos(angle), sa = (float)std::sin(angle); + const CImg + u = CImg<>::vector(ca,sa), + v = CImg<>::vector(-sa,ca), + tensor = 30.0*u*u.get_transpose() + 2.0*v*v.get_transpose(); + mask.draw_gaussian(0.5f*mask.width(),0.5f*mask.height(),tensor,&value); + mask/=mask.sum(); + visu[1] = mask.get_resize(img).normalize(0,255). + draw_text(2,2,"Angle = %d deg",&value,0,1,13,cimg::mod((int)(angle*180/cimg::PI),360)); + visu[2] = img.get_convolve(mask); + disp.resize(disp.window_width(),(int)(disp.height()*disp.window_width()/disp.width()),false). + display(visu).wait(25); + } + return 0; +} + +// Item : Shade Bobs +//------------------- +void* item_shade_bobs() { + float t = 100, rx = 0, ry = 0, rz = 0, rt = 0, rcx = 0; + CImg img(512,512,1,1,0), palette; + CImgDisplay disp(img,"[#15] - Shade Bobs"); + const unsigned char one = 1; + int nbbobs = 0, rybobs = 0; + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + if ((t+=0.015f)>4*cimg::PI) { + img.fill(0); + rx = (float)(cimg::rand(-1,1)); + ry = (float)(cimg::rand(-1,1)); + rz = (float)(cimg::rand(-1,1)); + rt = (float)(cimg::rand(-1,1)); + rcx = 0.6f*(float)(cimg::rand(-1,1)); + t = 0; + palette = CImg(3,4 + (int)(12*cimg::rand()),1,1,0).noise(255,2).resize(3,256,1,1,3); + palette(0) = palette(1) = palette(2) = 0; + nbbobs = 20 + (int)(cimg::rand()*80); + rybobs = (10 + (int)(cimg::rand()*50))*std::min(img.width(),img.height())/300; + } + for (int i = 0; i tmp(img); + cimg_for3x3(tmp,x,y,0,0,I,unsigned char) img(x,y) = (Inc + Ipc + Icn + Icp + (Icc<<2))>>3; + CImg visu(img.width(),img.height(),1,3); + cimg_forXY(visu,xx,yy) { + const unsigned char *col = palette.data(0,img(xx,yy)); + visu(xx,yy,0) = *(col++); + visu(xx,yy,1) = *(col++); + visu(xx,yy,2) = *(col++); + } + disp.display(visu).wait(25); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(640,480,false).toggle_fullscreen(false); + if (disp.is_resized()) img.resize(disp.resize(false),3); + if ((disp.key() && !disp.is_keyCTRLLEFT()) || disp.button()) { + t = 70; if (!(disp.is_keyQ() || disp.is_keyESC())) disp.set_key(); + disp.set_button(); + } + } + return 0; +} + +// Item : Fourier Filtering +//------------------------- +void* item_fourier_filtering() { + const CImg img = CImg(data_milla,211,242,1,3).RGBtoYCbCr().channel(0).resize(256,256); + CImgList F = img.get_FFT(); + cimglist_apply(F,shift)(img.width()/2,img.height()/2,0,0,2); + const CImg mag = ((F[0].get_pow(2) + F[1].get_pow(2)).sqrt() + 1).log().normalize(0,255); + CImgList visu(img,mag); + CImgDisplay disp(visu,"[#16] - Fourier Filtering (Click to set filter)"); + CImg mask(img.width(),img.height(),1,1,1); + const unsigned char one[] = { 1 }, zero[] = { 0 }, white[] = { 255 }; + int rmin = 0, rmax = 256; + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + disp.wait(); + const int + xm = disp.mouse_x()*2*img.width()/disp.width() - img.width(), + ym = disp.mouse_y()*img.height()/disp.height(), + x = xm - img.width()/2, + y = ym - img.height()/2; + if (disp.button() && xm>=0 && ym>=0) { + const int r = (int)std::max(0.0f,(float)std::sqrt((float)x*x + y*y) - 3); + if (disp.button()&1) rmax = r; + if (disp.button()&2) rmin = r; + if (rmin>=rmax) rmin = std::max(rmax - 1,0); + mask.fill(0).draw_circle(mag.width()/2,mag.height()/2,rmax,one). + draw_circle(mag.width()/2,mag.height()/2,rmin,zero); + CImgList nF(F); + cimglist_for(F,l) nF[l].mul(mask).shift(-img.width()/2,-img.height()/2,0,0,2); + visu[0] = nF.FFT(true)[0].normalize(0,255); + } + if (disp.is_resized()) disp.resize(disp.window_width(),disp.window_width()/2).display(visu); + visu[1] = mag.get_mul(mask).draw_text(5,5,"Freq Min/Max = %d / %d",white,zero,0.6f,13,(int)rmin,(int)rmax); + visu.display(disp); + } + return 0; +} + +// Item : Image Zoomer +//--------------------- +void* item_image_zoomer() { + const CImg img = CImg(data_logo,555,103,1,3,false); + CImgDisplay disp(img,"[#17] - Original Image"), dispz(500,500,"[#17] - Zoomed Image",0); + disp.move((CImgDisplay::screen_width() - dispz.width())/2, + (CImgDisplay::screen_height() - dispz.height() - disp.height())/2); + dispz.move(disp.window_x(),disp.window_y() + disp.window_height() + 40); + int factor = 20, x = 0, y = 0; + bool grid = false, redraw = false; + while (!disp.is_closed() && !dispz.is_closed() && + !disp.is_keyQ() && !dispz.is_keyQ() && !disp.is_keyESC() && !dispz.is_keyESC()) { + if (disp.mouse_x()>=0) { x = disp.mouse_x(); y = disp.mouse_y(); redraw = true; } + if (redraw) { + const int + x0 = x - factor, y0 = y - factor, + x1 = x + factor, y1 = y + factor; + const unsigned char red[] = { 255, 0, 0 }, black[] = { 0, 0, 0 }, white[] = { 255, 255, 255 }; + (+img).draw_rectangle(x0,y0,x1,y1,red,1.0f,~0U).display(disp); + CImg visu = img.get_crop(x0,y0,x1,y1).draw_point(x - x0,y - y0,red,0.2f).resize(dispz); + if (grid) { + const int bfac = 2*factor + 1; + for (int i = 0; i100) factor = 100; + disp.set_button(); redraw = true; + } + if (disp.button()&4 || dispz.button()) { grid = !grid; disp.set_button(); dispz.set_button(); redraw = true; } + if (disp.is_resized()) disp.resize(disp); + if (dispz.is_resized()) { dispz.resize(); redraw = true; } + CImgDisplay::wait(disp,dispz); + } + return 0; +} + +// Item : Blobs Editor +//-------------------- +void* item_blobs_editor() { + CImg img(300,300,1,3); + CImgList colors; + CImgList blobs; + CImgDisplay disp(img,"[#18] - Blobs Editor",0); + const unsigned int white[] = { 255, 255, 255 }; + bool moving = false; + + for (float alpha = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); alpha+=0.1f) { + const int xm = disp.mouse_x()*img.width()/disp.width(), ym = disp.mouse_y()*img.height()/disp.height(); + int selected = -1; + img.fill(0); + + if (blobs) { + float dist = 0, dist_min = (float)img.width()*img.width() + img.height()*img.height(); + cimglist_for(blobs,l) { + const CImg& blob = blobs[l]; + const float + xb = blob[0], yb = blob[1], rb = blob[2], + sigma = (float)(rb*(1 + 0.05f*std::cos(blob[3]*alpha))), + sigma2 = 2*sigma*sigma, precision = 4.5f*sigma2; + const int + tx0 = (int)(xb - 3*sigma), + ty0 = (int)(yb - 3*sigma), + tx1 = (int)(xb + 3*sigma), + ty1 = (int)(yb + 3*sigma); + const unsigned int + col1 = colors[l](0), col2 = colors[l](1), col3 = colors[l](2), wh = img.width()*img.height(), + x0 = tx0<0?0:tx0, y0 = ty0<0?0:ty0, + x1 = tx1>=img.width()?img.width() - 1:tx1, y1 = ty1>=img.height()?img.height() - 1:ty1; + float dy = y0 - yb; + unsigned int *ptr = img.data(x0,y0); + for (unsigned int y = y0; y<=y1; ++y) { + float dx = x0 - xb; + for (unsigned int x = x0; x<=x1; ++x) { + float _dist = dx*dx + dy*dy; + if (_distimg.data(); ++off) { + unsigned int val1 = *(--ptr1), val2 = *(--ptr2), val3 = *(--ptr3); + const unsigned int pot = val1*val1 + val2*val2 + val3*val3; + if (pot<128*128) { *ptr1 = *ptr3 = 255*off/wh; *ptr2 = 180*off/wh; } + else { + if (pot<140*140) { *ptr1 >>= 1; *ptr2 >>= 1; *ptr3 >>= 1; } + else { + *ptr1 = val1<255?val1:255; + *ptr2 = val2<255?val2:255; + *ptr3 = val3<255?val3:255; + } + } + } + cimglist_for(blobs,ll) { + const CImg& blob = blobs[ll]; + const int + rb = (int)(blob[2]*(1 + 0.05f*std::cos(blob[3]*alpha))), + xb = (int)(blob[0] + rb/2.5f), + yb = (int)(blob[1] - rb/2.5f); + img.draw_circle(xb,yb,rb>>1,white,0.2f).draw_circle(xb,yb,rb/3,white,0.2f). + draw_circle(xb,yb,rb/5,white,0.2f); + } + } else { + CImg text; + text.draw_text(0,0, + "CImg Blobs Editor\n" + "-----------------------\n\n" + "* Left mouse button :\n Create and Move Blob.\n\n" + "* Right mouse button :\n Remove nearest Blob.\n\n" + "* Colors and size of Appearing Blobs\n" + " are randomly chosen.\n\n\n" + " >> Press mouse button to start ! <<", + white).resize(-100,-100,1,3); + img.fill(100).draw_image((img.width() - text.width())/2, + (img.height() - text.height())/2, + text,text,1,255U); + } + + if (disp.mouse_x()>=0 && disp.mouse_y()>=0) { + if (disp.button()&1) { + float dist_selected = 0; + if (selected>=0) { + const float a = xm - blobs[selected](0), b = ym - blobs[selected](1), c = blobs[selected](2); + dist_selected = a*a + b*b - c*c; + } + if (moving || dist_selected<0) { blobs[selected](0) = (float)xm; blobs[selected](1) = (float)ym; } + else { + blobs.insert(CImg<>::vector((float)xm,(float)ym,(float)(10 + 30*cimg::rand()),(float)(3*cimg::rand()))); + colors.insert(CImg<>(3).fill(0).noise(255,1).normalize(0,255)); + } + moving = true; + } else moving = false; + if (selected>=0 && disp.button()&2) { blobs.remove(selected); colors.remove(selected); disp.set_button(); } + } + + img.display(disp.wait(25)); + if (disp.is_resized()) { + img.resize(disp.resize(false)); + cimglist_for(blobs,l) if (blobs[l](0)>=img.width() || blobs[l](1)>=img.height()) { + blobs.remove(l); colors.remove(l--); + } + } + } + return 0; +} + +// Item : Double Torus +//--------------------- +void* item_double_torus() { + CImg visu(300,256,1,3,0); + CImgDisplay disp(visu,"[#19] - Double 3D Torus"); + CImgList primitives; + CImg + points = CImg<>::torus3d(primitives,60,20), + points2 = CImg<>::rotation_matrix(1,0,0,90)*points; + CImgList colors(2*primitives.size(),CImg::vector(255,255,0)); + cimglist_for(primitives,ll) colors[ll++].fill(100,255,100); + cimglist_for(primitives,l) + if (l%2) colors[primitives.size() + l].fill(255,200,255); else colors[primitives.size() + l].fill(200,150,255); + const CImg opacities = CImg<>(primitives.size(),1,1,1,1.0f).append(CImg<>(primitives.size(),1,1,1,0.4f)); + points.shift_object3d(-30,0,0).append_object3d(primitives,points2.shift_object3d(30,0,0),primitives); + float alpha = 0, beta = 0, gamma = 0, theta = 0; + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + visu.get_shared_channels(1,2).fill(0); + visu.get_shared_row(visu.height() - 1,0,0).noise(200,1); + CImg_3x3(I,unsigned char); Ipp = Icp = Inp = Ipc = Inc = 0; + cimg_for3x3(visu,x,y,0,0,I,unsigned char) visu(x,y,0) = (Icc + Ipn + Icn + Inn)>>2; + for (unsigned int y = 0; y<100; ++y) std::memset(visu.data(0,y,0,2),255 - y*255/100,visu.width()); + const CImg + rpoints = CImg<>::rotation_matrix(1,1,0,(alpha+=1))*CImg<>::rotation_matrix(1,0,1,(beta-=2))* + CImg<>::rotation_matrix(0,1,1,(gamma+=3))*points; + if (disp.is_resized()) disp.resize(false); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(300,256,false).toggle_fullscreen(false); + visu.draw_object3d(visu.width()/2.0f,visu.height()/2.0f,0, + rpoints,primitives,colors,opacities,4, + false,500.0f,(float)(std::cos(theta+=0.01f) + 1)*visu.width()/2.0f, + (float)visu.height(),-100.0f,0.1f,1.5f). + display(disp.wait(25)); + } + return 0; +} + +// Item : 3D Metaballs +//--------------------- +struct metaballs3d { + float cx1, cy1, cz1, cx2, cy2, cz2, cx3, cy3, cz3; + inline float operator()(const float x, const float y, const float z) const { + const float + x1 = x - cx1, y1 = y - cy1, z1 = z - cz1, + x2 = x - cx2, y2 = y - cy2, z2 = z - cz2, + x3 = x - cx3, y3 = y - cy3, z3 = z - cz3, + r1 = 0.3f*(x1*x1 + y1*y1 + z1*z1), + r2 = 0.4f*(x2*x2 + y2*y2 + z2*z2), + r3 = 0.5f*(x3*x3 + y3*y3 + z3*z3); + float potential = 0; + if (r1<1.3f) potential+= 1.0f - r1*(r1*(4*r1 + 17) - 22)/9; + if (r2<1.3f) potential+= 1.0f - r2*(r2*(4*r2 + 17) - 22)/9; + if (r3<1.3f) potential+= 1.0f - r3*(r3*(4*r3 + 17) - 22)/9; + return potential; + } +}; + +void* item_3d_metaballs() { + CImg img = CImg(100,100,1,3,0).noise(100,2).draw_plasma(1,0,10). + resize(512,320,1,3).blur(4); + img.get_shared_channel(2)/=4; img.get_shared_channel(1)/=2; + metaballs3d met; + CImgList primitives; + CImgList colors; + const unsigned char white[] = { 255,255,255 }; + float alpha = 0, beta = 0, delta = 0, theta = 0, gamma = 0; + CImgDisplay disp(img,"[#20] - 3D Metaballs"); + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + met.cx2 = 1.5f*(float)std::cos(theta); met.cy2 = 2.5f*(float)std::sin(3*(theta+=0.017f)); met.cz2 = 0; + met.cx1 = 0; met.cy1 = 2.0f*(float)std::sin(4*gamma); met.cz1 = 1.2f*(float)std::cos(2*(gamma-=0.0083f)); + met.cx3 = 2.5f*(float)std::cos(2.5*delta); met.cy3 = 0; met.cz3 = 1.5f*(float)std::sin(2*(delta+=0.0125f)); + const CImg + points = CImg<>::isosurface3d(primitives,met,0.8f,-4.5f,-4.5f,-3.5f,4.5f,4.5f,3.5f,24,24,24), + rot = 50.0*CImg<>::rotation_matrix(0,0,1,(alpha+=2))*CImg<>::rotation_matrix(1,1,0,(beta+=5.6f)), + rpoints = rot*points; + primitives.reverse_object3d(); + if (colors.size() img(640,480,1,3,0); + CImgDisplay disp(img,"[#21] - Fireworks (Click to add/explode rockets)"); + CImgList colors; + const unsigned char white[] = { 255,255,255 }, red[] = { 128,0,0 }; + CImgList particles; + float time = 0, speed = 100.0f; + + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + + if (disp.button()&1 || !particles.size() || (--time)<0) { + particles.insert(CImg<>::vector((float)cimg::rand()*img.width(),(float)img.height(), + (float)cimg::rand(-1,1)*4,-6 - (float)cimg::rand()*3, + 30 + 60*(float)cimg::rand(),3)); + colors.insert(CImg::vector(255,255,255)); + time = (float)(cimg::rand()*speed); + } + img*=0.92f; + + cimglist_for(particles,l) { + bool remove_particle = false; + float &x = particles(l,0), &y = particles(l,1), &vx = particles(l,2), &vy = particles(l,3), + &t = particles(l,4), &r = particles(l,5); + const float r2 = (t>0 || t<-42)?r/3:r*(1 - 2*(-(t + 2)/40.0f)/3); + img.draw_ellipse((int)x,(int)y,r,r2,(float)(std::atan2(vy,vx)*180/cimg::PI),colors[l].data(),0.6f); + x+=vx; y+=vy; vy+=0.09f; t--; + if (y>img.height() + 10 || x<0 || x>=img.width() + 10) remove_particle = true; + + if (t<0 && t>=-1) { + if ((speed*=0.9f)<10) speed=10.0f; + const unsigned char + cr = (unsigned char)std::min(50 + 3*(unsigned char)(100*cimg::rand()), 255), + cg = (unsigned char)std::min(50 + 3*(unsigned char)(100*cimg::rand()), 255), + cb = (unsigned char)std::min(50 + 3*(unsigned char)(100*cimg::rand()), 255); + const float di = 10 + (float)cimg::rand()*60, nr = (float)cimg::rand()*30; + for (float i=0; i<360; i+=di) { + const float rad = i*(float)cimg::PI/180, c = (float)std::cos(rad), s = (float)std::sin(rad); + particles.insert(CImg<>::vector(x,y,2*c + vx/1.5f,2*s + vy/1.5f,-2.0f,nr)); + colors.insert(CImg::vector(cr,cg,cb)); + } + remove_particle = true; + } else if (t<-1) { r*=0.95f; if (r<0.5f) remove_particle=true; } + if (remove_particle) { particles.remove(l); colors.remove(l); l--; } + } + if (disp.button()&2) cimglist_for(particles,l) if (particles(l,4)>0) particles(l,4)=0.5f; + img.draw_text(5,5," %u frames/s ",white,red,0.5f,13,(unsigned int)disp.frames_per_second()); + disp.display(img).wait(25); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(640,480,false).toggle_fullscreen(false); + if (disp.is_resized()) disp.resize(disp,false); + } + return 0; +} + +// Item : Rubber Logo +//-------------------- +void* item_rubber_logo() { + const unsigned char white[] = { 255,255,255 }; + CImg background = CImg(300,300).noise(100,2); + background(0,0) = background(299,0) = background(299,299) = background(0,299) = 0; + background.draw_plasma().blur(1.0f,14.0f,0.0f,0).resize(-100,-100,1,3); + CImgDisplay disp(CImg(background). + draw_text(10,10,"Please wait, generating rubber object...",white),"[#22] - 3D Rubber Logo"); + + CImg vol = CImg().draw_text(30,30,"CImg",white,0,1,57).resize(-100,-100,15,1); + for (unsigned int k = 0; k<5; ++k) { vol.get_shared_slice(k).fill(0); vol.get_shared_slice(vol.depth()-1-k).fill(0); } + vol.resize(vol.width() + 30,vol.height() + 30,-100,1,0).blur(2).resize(-50,-50); + CImgList faces; + CImg points = vol.get_isosurface3d(faces,45); + CImgList colors(faces.size(),CImg::vector(100,100,255)); + cimglist_for(colors,l) { + const float x = (points(faces(l,0),0) + points(faces(l,1),0) + points(faces(l,2),0))/3; + if (x<30.3) colors[l] = CImg::vector(255,100,100); + else { if (x<34.6) colors[l] = CImg::vector(200,155,100); + else { if (x<55.5) colors[l] = CImg::vector(100,255,155); + }}} + faces.reverse_object3d(); + points.shift_object3d()*=5.5f; + + CImgList frames(100,background); + bool ok_visu = false; + unsigned int nb_frame = 0; + float alpha = 0, beta = 0, gamma = 0; + + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + CImg& frame = frames[nb_frame++]; + if (nb_frame>=frames.size()) { ok_visu = true; nb_frame = 0; } + const CImg + rot = CImg<>::rotation_matrix(0,1,0.2f,alpha+=1.1f)* + CImg<>::rotation_matrix(1,0.4f,1,beta+=1.5f)* + (1 + 0.1f*std::cos((double)(gamma+=0.1f))); + (frame=background).draw_object3d(frame.width()/2.0f,frame.height()/2.0f,frame.depth()/2.0f, + rot*points,faces,colors,5,false,500,0,0,-5000,0.1f,1.0f); + if (ok_visu) { + CImg visu(frame); + cimglist_for(frames,l) { + const unsigned int + y0 = l*visu.height()/frames.size(), + y1 = (l + 1)*visu.height()/frames.size() - 1; + cimg_forC(visu,k) + visu.get_shared_rows(y0,y1,0,k) = frames[(nb_frame + l)%frames.size()].get_shared_rows(y0,y1,0,k); + } + visu.get_resize(disp,1).draw_text(5,5," %u frames/s ",white,0,0.5f,13,(unsigned int)disp.frames_per_second()). + display(disp.wait(20)); + } + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(300,300,false).toggle_fullscreen(false); + if (disp.is_resized()) disp.resize(); + } + return 0; +} + +// Item : Image Waves +//-------------------- +void* item_image_waves() { + const CImg img = CImg(data_milla,211,242,1,3,false).get_resize(128,128,1,3); + CImgList faces0; + CImgList colors0; + const CImgList + points0 = (img.get_elevation3d(faces0,colors0,img.get_channel(0).fill(0)).shift_object3d()*=3)<'x', + opacities0(faces0.size(),1,1,1,1,1.0f); + CImg + back = CImg(400,300,1,3).sequence(0,130), + ball = CImg(12,12,1,3,0).draw_circle(6,6,5,CImg::vector(0,128,64).data()); + const CImg mball = CImg<>(12,12,1,1,0).draw_circle(6,6,5,CImg<>::vector(1.0f).data()); + ball.draw_circle(7,5,4,CImg::vector(16,96,52).data()). + draw_circle(8,4,2,CImg::vector(0,128,64).data()). + draw_circle(8,4,1,CImg::vector(64,196,128).data()); + CImg uc(img.width()/2,img.height()/2,1,1,0), up(uc), upp(uc); + CImgList particles; + CImgDisplay disp(back,"[#23] - Image Waves (Try mouse buttons!)"); + for (float alpha = 0.0f, count = 10.0f; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ) { + if ((disp.button()&1 && disp.mouse_x()>=0) || --count<0) { + CImg<>::vector((float)(cimg::rand()*(img.width() - 1)),(float)(cimg::rand()*(img.height() - 1)),-200,0). + move_to(particles); + count = (float)(cimg::rand()*15); + } + alpha = (disp.mouse_x()>=0 && disp.button()&2)?(float)(disp.mouse_x()*2*180/disp.width()):(alpha + 2); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(400,300,false).toggle_fullscreen(false); + cimglist_for(particles,l) { + float& z = up((int)particles(l,0)>>1,(int)particles(l,1)>>1); + if ((particles(l,2)+=(particles(l,3)+=0.5f))>z-10) { z = 250.0f; particles.remove(l--); } + } + CImg_3x3(U,float); Upp = Unp = Ucc = Upn = Unn = 0; + cimg_for3x3(up,x,y,0,0,U,float) uc(x,y) = (Unc + Upc + Ucn + Ucp)/2 - upp(x,y); + (uc-=(float)(uc.blur(0.7f).mean())).swap(upp).swap(up); + CImgList points(points0); + CImgList faces(faces0); + CImgList colors(colors0); + CImgList opacities(opacities0); + cimglist_for(points,p) + points(p,2) = std::min(30 + uc.linear_atXY((p%img.width())/2.0f,(p/img.width())/2.0f),70.0f); + cimglist_for(particles,l) { + points.insert(CImg<>::vector(3*(particles(l,0) - img.width()/2.0f),3*(particles(l,1) - img.height()/2.0f),30.0f + + particles(l,2))); + faces.insert(CImg::vector(points.size() - 1)); + colors.insert(ball,~0U,true); + opacities.insert(mball,~0U,true); + } + const CImg + rot = CImg<>::rotation_matrix(1.0f,0,0,-60)*CImg<>::rotation_matrix(0,0,1.0f,-alpha), + rpoints = rot*(points>'x'); + (+back).draw_object3d(back.width()/2.0f,back.height()/2.0f,0,rpoints,faces,colors,opacities,4,false, + 500.0f,0,0,0,1,1).display(disp.resize(false).wait(30)); + } + return 0; +} + +// Item : Breakout +//----------------- +void* item_breakout() { + + // Init graphics + CImg + board(8,10,1,1,0), + background = CImg(board.width()*32,board.height()*16 + 200,1,3,0).noise(20,1). + draw_plasma().blur(1,8,0,true), + visu0(background/2.0), visu(visu0), brick(16,16,1,1,200), racket(64,8,1,3,0), ball(8,8,1,3,0); + const unsigned char white[] = { 255,255,255 }, green1[] = { 60,150,30 }, green2[] = { 130,255,130 }; + cimg_for_borderXY(brick,x,y,1) brick(x,y) = x>y?255:128; + cimg_for_insideXY(brick,x,y,1) brick(x,y) = (unsigned char)std::min(255,64 + 8*(x + y)); + brick.resize(31,15,1,1,1).resize(32,16,1,1,0); + ball.draw_circle(4,4,2,white); ball-=ball.get_erode(3)/1.5; + racket.draw_circle(4,3,4,green1).draw_circle(3,2,2,green2); + cimg_forY(racket,y) + racket.draw_rectangle(4,y,racket.width() - 7,y, + CImg::vector((unsigned char)(y*4), + (unsigned char)(255 - y*32), + (unsigned char)(255 - y*25)).data()); + racket.draw_image(racket.width()/2,racket.get_crop(0,0,racket.width()/2 - 1,racket.height() - 1).mirror('x')); + const int + w = visu.width(), h = visu.height(), w2 = w/2, h2 = h/2, + bw = ball.width(), bh = ball.height(), bw2 = bw/2, bh2 = bh/2, + rw = racket.width(), rh = racket.height(), rw2 = rw/2; + float xr = (float)(w - rw2), oxr = (float)xr, xb = 0, yb = 0, oxb = 0, oyb = 0, vxb = 0, vyb = 0; + const CImg + racket_mask = racket.get_threshold(1).channel(1), + ball_mask = ball.get_threshold(1).channel(1); + + // Begin game loop + CImgDisplay disp(visu,"[#24] - Breakout"); + disp.move((CImgDisplay::screen_width() - w)/2,(CImgDisplay::screen_height() - h)/2); + for (unsigned int N = 0, N0 = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ) { + if (N0) { + int X = (int)xr; + if (disp.mouse_x()>=0) X = (int)(w2 + ((disp.mouse_x()<0?w2:disp.mouse_x()) - w2)*2); + else disp.set_mouse(xr>w2?w - 81:80,h2); + if (X=w - rw2) { X = w - rw2 - 1; disp.set_mouse(w - 81,h2); } + oxr = xr; xr = (float)X; oxb = xb; oyb = yb; xb+=vxb; yb+=vyb; + if ((xb>=w - bw2) || (xb=h - rh - 8 - bh2 && yb=xb) { + xb = oxb; yb = h - rh - 8.0f - bh2; vyb=-vyb; vxb+=(xr - oxr)/4; + if (cimg::abs(vxb)>8) vxb*=8/cimg::abs(vxb); + } + if (yb=((cX + 1)<<5)) vxb=-vxb; + else if (oyb<(cY<<4) || oyb>=((cY + 1)<<4)) vyb=-vyb; + } + } + disp.set_title("[#24] - Breakout : %u/%u",N,N0); + } + if (yb>h || N==N0) { + disp.show_mouse(); + while (!disp.is_closed() && !disp.key() && !disp.button()) { + ((visu=visu0)/=2).draw_text(50,visu.height()/2 - 10,N0?" Game Over !":"Get Ready ?",white,0,1,24). + display(disp); + disp.wait(); + if (disp.is_resized()) disp.resize(disp); + } + board.fill(0); visu0 = background; + cimg_forXY(board,x,y) if (0.2f + cimg::rand(-1,1)>=0) { + CImg cbrick = CImg::vector(100 + cimg::rand()*155,100 + cimg::rand()*155,100 + cimg::rand()*155). + unroll('v').resize(brick.width(),brick.height()); + cimg_forC(cbrick,k) (cbrick.get_shared_channel(k).mul(brick))/=255; + visu0.draw_image(x*32,y*16,cbrick); + board(x,y) = 1; + } + N0 = (int)board.sum(); N = 0; + oxb = xb = (float)w2; oyb = yb = board.height()*16.0f + bh; vxb = 2.0f; vyb = 3.0f; + disp.hide_mouse(); + } else disp.display((visu=visu0).draw_image((int)(xr - rw2),h - rh - 8,racket,racket_mask). + draw_image((int)(xb - bw2),(int)(yb - bh2),ball,ball_mask)); + if (disp.is_resized()) disp.resize(disp); + disp.wait(20); + } + return 0; +} + +// Item : 3D Reflection +//---------------------- +void* item_3d_reflection() { + + // Init images and display + CImgDisplay disp(512,512,"[#25] - 3D Reflection",0); + CImg back = CImg(200,400,1,3,0).rand(0,255).draw_plasma(); + ((back,back.get_mirror('x'),back)>'x').blur(15,1,0,true).columns(100,499).normalize(0,120).move_to(back); + CImg + light0 = back.get_resize(-50,-50,1,1).normalize(1,255), + visu(back), + reflect(back.width(),back.height(),1,1), + light(light0); + back.get_shared_channel(0)/=3; + back.get_shared_channel(2)/=2; + + // Create 3D objects. + CImgList back_faces, main_faces; + CImgList main_colors, back_colors, light_colors, light_colors2; + CImgList back_pts0, main_pts = CImg<>::torus3d(main_faces,30,12,24,12)<'x'; + cimglist_for(main_faces,l) + if (l%2) CImg::vector(255,120,16).move_to(main_colors); + else CImg::vector(255,100,16).move_to(main_colors); + + const unsigned int res1 = 32, res2 = 32; + for (unsigned int v = 1; v::vector(x,y,z)); + } + const unsigned int N = back_pts0.size(); + back_pts0.insert(CImg<>::vector(0,0,-140)).insert(CImg<>::vector(0,0,140)); + CImg back_pts = back_pts0>'x'; + for (unsigned int vv = 0; vv::vector(res1*vv + nu,res1*nv + uu,res1*vv + uu)); + back_faces.insert(CImg::vector(res1*vv + nu,res1*nv + nu,res1*nv + uu)); + back_colors.insert(CImg::vector(128,255,255)); + back_colors.insert(CImg::vector(64,240,196)); + } + for (unsigned int uu = 0; uu::vector(nu,uu,N)); + back_faces.insert(CImg::vector(res1*(res2 - 2) + nu, N + 1,res1*(res2 - 2) + uu)); + if (uu%2) back_colors.insert(2,CImg::vector(128,255,255)); + else back_colors.insert(2,CImg::vector(64,240,196)); + } + light_colors.assign(main_faces.size(),CImg::vector(255)); + light_colors2.assign(back_faces.size(),CImg::vector(255)).insert(light,~0U,true); + + // Start 3D animation. + for (float main_x = -1.5f*visu.width(), + back_alpha = 0, back_beta = 0, back_theta = -3.0f, + main_alpha = 0, main_beta = 0, main_theta = 0; + !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); + main_alpha+=2.1f, main_beta+=3.3f, main_theta+=0.02f, + back_alpha+=0.31f, back_beta+=0.43f, back_theta+=0.01f) { + const int + main_X = (int)(visu.width()/2 + main_x + 100*std::cos(2.1*main_theta)), + main_Y = (int)(visu.height()/2 + 120*std::sin(1.8*main_theta)); + CImg + rmain_pts = (CImg<>::rotation_matrix(-1,1,0,main_alpha)*CImg<>::rotation_matrix(1,0,1,main_beta))*(main_pts>'x'), + rback_pts = (CImg<>::rotation_matrix(1,1,0,back_alpha)*CImg<>::rotation_matrix(0.5,0,1,back_beta))*back_pts; + + (light=light0).draw_object3d(main_X/2.0f,main_Y/2.0f,0,rmain_pts,main_faces,light_colors,3,false, + 500,0,0,-5000,0.2f,0.1f); + reflect.fill(0).draw_object3d(2*visu.width()/3.0f,visu.height()/2.0f,0,rback_pts,back_faces,light_colors2,5,false, + 500,0,0,-5000,0.2f,0.1f); + rmain_pts*=2; + (visu=back).draw_object3d(2*visu.width()/3.0f,visu.height()/2.0f,0,rback_pts,back_faces,back_colors,3,false, + 500,0,0,-5000,0.2f,0.1f); + + unsigned char + *ptrs = reflect.data(), + *ptrr = visu.data(0,0,0,0), + *ptrg = visu.data(0,0,0,1), + *ptrb = visu.data(0,0,0,2); + cimg_foroff(reflect,xy) { + const unsigned char v = *(ptrs++); + if (v) { *ptrr = (*ptrr+v)>>1; *ptrg = (*ptrr+v)>>1; *ptrb = (*ptrb+v)>>1; } + ++ptrr; ++ptrg; ++ptrb; + } + + visu.draw_object3d((float)main_X,(float)main_Y,0,rmain_pts,main_faces,main_colors,4, + false,500,0,0,-5000,0.1f,1.4f); + + if (disp.is_resized()) { + const int s = std::min(disp.window_width(),disp.window_height()); + disp.resize(s,s,false); + } + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(512,512,false).toggle_fullscreen(false); + disp.display(visu).wait(20); + back.shift(4,0,0,0,2); + light0.shift(-2,0,0,0,2); + if (main_x<0) main_x +=2; + const float H = back_theta<0?0.0f:(float)(0.3f - 0.3f*std::cos(back_theta)); + for (unsigned int p = 0, v = 1; v img0 = CImg(data_logo,555,103,1,3,true).get_resize(-144,-144,1,3,6); + CImgDisplay disp(img0,"[#26] - Fish-Eye Magnification"); + int rm = 80, xc = 0, yc = 0, rc = 0; + CImg img, res; + for (float alpha = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); alpha+=0.02f) { + if (!img) img = img0.get_resize(disp,3); + if (disp.mouse_x()>=0) { xc = disp.mouse_x(); yc = disp.mouse_y(); rc = rm; } + else { + xc = (int)(img.width()*(1 + 0.9f*std::cos(1.2f*alpha))/2); + yc = (int)(img.height()*(1 + 0.8f*std::sin(3.4f*alpha))/2); + rc = (int)(90 + 60*std::sin(alpha)); + } + const int x0 = xc - rc, y0 = yc - rc, x1 = xc + rc, y1 = yc + rc; + res = img; + cimg_for_inXY(res,x0,y0,x1,y1,x,y) { + const float X = (float)x - xc, Y = (float)y - yc, r2 = X*X + Y*Y, rrc = (float)std::sqrt(r2)/rc; + if (rrc<1) { + const int xi = (int)(xc + rrc*X), yi = (int)(yc + rrc*Y); + res(x,y,0) = img(xi,yi,0); res(x,y,1) = img(xi,yi,1); res(x,y,2) = img(xi,yi,2); + } + } + const int xf = xc + 3*rc/8, yf = yc - 3*rc/8; + res.draw_circle(xc,yc,rc,purple,0.2f).draw_circle(xf,yf,rc/3,white,0.2f).draw_circle(xf,yf,rc/5,white,0.2f). + draw_circle(xf,yf,rc/10,white,0.2f).draw_circle(xc,yc,rc,black,0.7f,~0U); + disp.display(res).wait(20); + rm+=(disp.button()&1?8:(disp.button()&2?-8:0)); + rm = rm<30?30:(rm>200?200:rm); + if (disp.is_resized()) { disp.resize(false); img.assign(); } + } + return 0; +} + +// Item : Word Puzzle +//-------------------- +void* item_word_puzzle() { + + // Create B&W and color letters + CImg model(60,60,1,3,0), color(3), background, canvas, elaps; + CImgList letters('Z' - 'A' + 1), cletters(letters); + const unsigned char white[] = { 255, 255, 255 }, gray[] = { 128, 128, 128 }, black[] = { 0, 0, 0 }; + char tmptxt[] = { 'A',0 }; + model.fill(255).draw_rectangle(5,5,54,54,gray).blur(3,0).threshold(140).normalize(0,255); + cimglist_for(letters,l) + (letters[l].draw_text(5,2,&(tmptxt[0]=(char)('A' + l)),white,0,1,57).resize(60,60,1,1,0,0,0.5,0.5). + resize(-100,-100,1,3)|=model).blur(0.5); + { cimglist_for(cletters,l) { + CImg tmp = letters[l]; + color.rand(100,255); + cimg_forC(tmp,k) (tmp.get_shared_channel(k)*=color[k])/=255; + cletters[l] = tmp; + }} + + CImgDisplay disp(500,400,"[#27] - Word Puzzle",0); + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + + // Create background, word data and display. + background.assign(40,40,1,2,0).noise(30,2).distance(255).normalize(0,255).resize(500,400,1,3,3); + CImg current(14,6,1,1,0), solution(14,4,1,1,0); + current.get_shared_row(0).fill('T','H','E','C','I','M','G','L','I','B','R','A','R','Y'); + current.get_shared_row(1).rand(-30,background.width() - 30); + current.get_shared_row(2).rand(-30,background.height() - 30); + solution.get_shared_row(0) = current.get_shared_row(0); + solution.get_shared_row(1).fill(20,80,140,100,180,260,340,40,100,160,220,280,340,400); + solution.get_shared_row(2).fill(20,20,20,120,150,180,210,310,310,310,310,310,310,310); + cimg_forX(solution,l) background.draw_image(solution(l,1),solution(l,2),letters(solution(l) - 'A'),0.3f); + const int last = current.width() - 1; + + // Start user interaction + int timer = 0, completed = 0; + for (bool selected = false, refresh_canvas = true, stopflag = false; + !stopflag && !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); disp.resize(disp).wait(20)) { + if (refresh_canvas) { + canvas = background; + cimg_forX(current,l) if (!current(l,5)) { + int &x = current(l,1), &y = current(l,2); + if (x<-30) x = -30; else if (x>canvas.width() - 30) x = canvas.width() - 30; + if (y<-30) y = -30; else if (y>canvas.height() - 30) y = canvas.height() - 30; + canvas.draw_rectangle(x + 8,y + 8,x + 67,y + 67,black,0.3f).draw_image(x,y,cletters(current(l) - 'A')); + } + refresh_canvas = false; + } + (+canvas).draw_text(280,3,"Elapsed Time : %d",white,0,0.7f,24,timer++).display(disp); + + if (disp.button()&1) { + const int mx = disp.mouse_x(), my = disp.mouse_y(); + if (mx>=0 && my>=0) { + if (!selected) { + int ind = -1; + cimg_forX(current,l) if (!current(l,5)) { + const int x = current(l,1), y = current(l,2), dx = mx - x, dy = my - y; + if (dx>=0 && dx<60 && dy>=0 && dy<60) { selected = true; ind = l; current(l,3) = dx; current(l,4) = dy; } + } + if (ind>=0 && ind vec = current.get_column(ind); + current.draw_image(ind,current.get_crop(ind + 1,last)).draw_image(last,vec); + } + } else { + current(last,1) = mx - current(last,3); + current(last,2) = my - current(last,4); + refresh_canvas = true; + } + } + } else { + bool win = true; + cimg_forX(solution,j) if (!solution(j,3)) { + win = false; + const int x = solution(j,1), y = solution(j,2); + cimg_forX(current,i) if (!current(i,5) && solution(j)==current(i)) { + const int xc = current(i,1), yc = current(i,2), dx = cimg::abs(x - xc), dy = cimg::abs(y - yc); + if (dx<=12 && dy<=12) { + cimg_forC(background,k) cimg_forY(letters[0],ly) + background.get_shared_row(solution(j,2) + ly,0,k). + draw_image(solution(j,1),0, + (CImg<>(cletters(solution(j) - 'A').get_shared_row(ly,0,k))*=2.0*std::cos((ly - 30.0f)/18)). + cut(0,255),0.8f); + current(i,5) = solution(j,3) = 1; refresh_canvas = true; + } + } + } + selected = false; + if (win) { stopflag = true; completed = 1; } + } + } + + // Display final score + const char + *const mention0 = "Need more training !", *const mention1 = "Still amateur, hu ?", + *const mention2 = "Not so bad !", *const mention3 = " Good !", *const mention4 = "Very good !", + *const mention5 = " Expert !", + *mention = completed?(timer<700?mention5:timer<800?mention4:timer<900?mention3: + timer<1000?mention2:timer<1200?mention1:mention0):mention0; + canvas.assign().draw_text(0,0,"Final time : %d\n\n%s",white,0,1,32,timer,mention).resize(-100,-100,1,3); + ((background/=2)&CImg(2,2).fill((unsigned char)0,255,255,0).resize(background,0,2)). + draw_image((background.width() - canvas.width())/2,(background.height() - canvas.height())/2, + canvas,canvas.get_dilate(3).dilate(3).dilate(3),1,255).display(disp.flush()); + while (!disp.is_closed() && !disp.key() && !disp.button()) disp.resize(disp).wait(); + } + return 0; +} + +// Run a selected effect +//----------------------- +void start_item(const unsigned int demo_number) { + switch (demo_number) { + case 1: item_blurring_gradient(); break; + case 2: item_rotozoom(); break; + case 3: item_anisotropic_smoothing(); break; + case 4: item_fractal_animation(); break; + case 5: item_gamma_correction(); break; + case 6: item_filled_triangles(); break; + case 7: item_mandelbrot_explorer(); break; + case 8: item_mini_paint(); break; + case 9: item_soccer_bobs(); break; + case 10: item_bump(); break; + case 11: item_bouncing_bubble(); break; + case 12: item_virtual_landscape(); break; + case 13: item_plasma(); break; + case 14: item_oriented_convolutions(); break; + case 15: item_shade_bobs(); break; + case 16: item_fourier_filtering(); break; + case 17: item_image_zoomer(); break; + case 18: item_blobs_editor(); break; + case 19: item_double_torus(); break; + case 20: item_3d_metaballs(); break; + case 21: item_fireworks(); break; + case 22: item_rubber_logo(); break; + case 23: item_image_waves(); break; + case 24: item_breakout(); break; + case 25: item_3d_reflection(); break; + case 26: item_fisheye_magnification(); break; + case 27: item_word_puzzle(); break; + default: break; + } +} + +/*--------------------------- + + Main procedure + + --------------------------*/ +int main(int argc, char **argv) { + + // Display info about the CImg Library configuration + //-------------------------------------------------- + unsigned int demo_number = cimg_option("-run",0,0); + if (demo_number) start_item(demo_number); + else { + cimg::info(); + + // Demo selection menu + //--------------------- + const unsigned char + white[] = { 255, 255, 255 }, black[] = { 0, 0, 0 }, red[] = { 120, 50, 80 }, + yellow[] = { 200, 155, 0 }, green[] = { 30, 200, 70 }, purple[] = { 175, 32, 186 }, + blue[] = { 55, 140, 185 }, grey[] = { 127, 127, 127 }; + float + rx = 0, ry = 0, t = 0, gamma = 0, vgamma = 0, T = 0.9f, + nrx = (float)(2*cimg::rand(-1,1)), + nry = (float)(2*cimg::rand(-1,1)); + int y0 = 2*13; + CImg back(1,2,1,3,10), fore, text, img; + back.fillC(0,1,0,10,10,235).resize(350,570,1,3,3).get_shared_channel(2).noise(10,1).draw_plasma(); + back.draw_rectangle(0,y0 - 7,back.width() - 1,y0 + 20,red); + fore.assign(back.width(),50,1,1,0).draw_text(20,y0 - 3,"** CImg %u.%u.%u Samples **",grey,0,1,23, + cimg_version/100,(cimg_version/10)%10,cimg_version%10); + fore.max(fore.get_threshold(1).dilate(3)).resize(-100,-100,1,3); + cimg_forXY(fore,x,y) if (fore(x,y)>1) { + const float val = std::min(255.0f,7.0f*(y - 3))*fore(x,y)/127; + fore(x,y,0) = (unsigned char)(val/1.5f); + fore(x,y,1) = (unsigned char)val; + fore(x,y,2) = (unsigned char)(val/1.1f); + } + text.draw_text(1,1, + "1- Blurring Gradient\n" + "2- Rotozoom\n" + "3- Anisotropic Smoothing\n" + "4- Fractal Animation\n" + "5- Gamma Correction\n" + "6- Filled Triangles\n" + "7- Mandelbrot explorer\n" + "8- Mini-Paint\n" + "9- Soccer Bobs\n" + "10- Bump Effect\n" + "11- Bouncing Bubble\n" + "12- Virtual Landscape\n" + "13- Plasma & Sinus Scroll\n" + "14- Oriented Convolutions\n" + "15- Shade Bobs\n" + "16- Fourier Filtering\n" + "17- Image Zoomer\n" + "18- Blobs Editor\n" + "19- Double Torus\n" + "20- 3D Metaballs\n" + "21- Fireworks\n" + "22- Rubber Logo\n" + "23- Image Waves\n" + "24- Breakout\n" + "25- 3D Reflection\n" + "26- Fish-Eye Magnification\n" + "27- Word Puzzle\n", + white,0,1,18).resize(-100,-100,1,3); + fore.resize(back,0).draw_image(20,y0 + 3*13,text|=text.get_dilate(3)>>4); + + CImgDisplay disp(back,"CImg Library Samples",0,false,true); + disp.move((disp.screen_width() - disp.window_width())/2,(disp.screen_height() - disp.window_height())/2); + img = back; back*=0.15f; + for (y0+=3*13; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); demo_number = 0) { + while (!demo_number && !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + img*=0.85f; img+=back; + for (int i = 0; i<60; ++i) { + const float + mx = (float)(img.width()/2 + (img.width()/2 - 30)*((1 - gamma)*std::cos(3*t + rx*i*18.0f*cimg::PI/180) + + gamma*std::cos(3*t + nrx*i*18.0f*cimg::PI/180))), + my = (float)(img.height()/2 + (img.height()/2 - 30)*((1 - gamma)*std::sin(4*t + ry*i*18.0f*cimg::PI/180) + + gamma*std::sin(4*t + nry*i*18.0f*cimg::PI/180))), + mz = (float)(1.3f + 1.2f*((1 - gamma)*std::sin(2*t + (rx + ry)*i*20*cimg::PI/180) + + gamma*std::sin(2*t + (nrx + nry)*i*20*cimg::PI/180))); + const int j = i%5; + img.draw_circle((int)mx,(int)my,(int)(10*mz),j!=0?(j!=1?(j!=2?(j!=3?green:red):yellow):purple):blue,0.2f). + draw_circle((int)(mx + 4*mz),(int)(my - 4),(int)(3*mz),white,0.1f). + draw_circle((int)mx,(int)my,(int)(10*mz),black,0.2f,~0U); + } + const unsigned char *ptrs = fore.data(); + cimg_for(img,ptrd,unsigned char) { const unsigned char val = *(ptrs++); if (val) *ptrd = val; } + const int y = (disp.mouse_y() - y0)/18, _y = 18*y + y0 + 9; + if (y>=0 && y<27) { + for (int yy = _y - 9; yy<=_y + 8; ++yy) + img.draw_rectangle(0,yy,0,1,img.width() - 1,yy,0,1,(unsigned char)(130 - 14*cimg::abs(yy - _y))); + img.draw_triangle(2,_y - 6,2,_y + 6,8,_y,yellow). + draw_triangle(img.width() - 2,_y - 6,img.width() - 2,_y + 6,img.width() - 8,_y,yellow); + } + gamma+=vgamma; + if (gamma>1) { + gamma = vgamma = 0; + rx = nrx; + ry = nry; + nrx=(float)(2*cimg::rand(-1,1)); nry=(float)(2*cimg::rand(-1,1)); + } + t+=0.006f; T+=0.005f; if (T>1) { T-=(float)(1 + cimg::rand(-1,1)); vgamma = 0.03f; } + if (disp.button()) { demo_number = 1 + (disp.mouse_y() - y0)/18; disp.set_button(); } + disp.resize(disp,false).display(img).wait(25); + } + start_item(demo_number); + } + } + + // Exit demo + //----------- + std::exit(0); + return 0; +} diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 000000000..162029541 --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,310 @@ +# +# File : CMakeLists.txt +# ( Configuration file for 'cmake' utility ) +# +# Description : CMakeLists.txt configuration file for compiling CImg-based code. +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : Antonio Albiol +# ( http://personales.upv.es/~aalbiol/ ) +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# + +cmake_minimum_required(VERSION 2.6) + + +PROJECT(Examples-CIMG) + +# Prevent compilation in-source +if( ${CMAKE_BINARY_DIR} STREQUAL ${PROJECT_SOURCE_DIR} ) + Message( " " ) + Message( FATAL_ERROR "Source and build directories are the same. + Create an empty build directory, + change into it and re-invoke cmake") +endif() + + +# To use PKG_CHECK_MODULES to find some optional packages +find_package(PkgConfig) + +# Tell CMake where to leave executables +SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}) + +#Path of CImg.h file relative to this file path +set(CIMG_H_PATH ${PROJECT_SOURCE_DIR}/..) +include_directories( ${PROJECT_SOURCE_DIR} ) +include_directories( ${CIMG_H_PATH} ) + + + + +# ### CIMG related stuff +# Flags to enable fast image display, using the XSHM library. +SET(CIMG_XSHM_CCFLAGS -Dcimg_use_xshm) + +# Flags to enable screen mode switching, using the XRandr library. +SET(CIMG_XRANDR_CCFLAGS -Dcimg_use_xrandr) + +# Flags to enable native support for JPEG image files, using the JPEG library. +# ( http://www.ijg.org/ ) +SET(CIMG_JPEG_CCFLAGS -Dcimg_use_jpeg) + +# Flags to enable native support for TIFF image files, using the TIFF library. +# ( http://www.libtiff.org/ ) +SET(CIMG_TIFF_CCFLAGS -Dcimg_use_tiff) + +# Flags to enable native support for PNG image files, using the PNG library. +# ( http://www.libpng.org/ ) +SET(CIMG_PNG_CCFLAGS -Dcimg_use_png) + +#Flags to enable OPENCV support (Camera) +# ( http://www.opencv.org/ ) +SET(CIMG_OPENCV_CCFLAGS-Dcimg_use_opencv) + +# Flags to enable native support for EXR image files, using the OpenEXR library. +# ( http://www.openexr.com/ ) +SET(CIMG_OPENEXR_CCFLAGS -Dcimg_use_openexr) + +# Flags to enable native support for various video files, using the FFMPEG library. +# ( http://www.ffmpeg.org/ ) +SET(CIMG_FFMPEG_CCFLAGS -Dcimg_use_ffmpeg) + +# Flags to enable native support of most classical image file formats, using the Magick++ library. +# ( http://www.imagemagick.org/Magick++/ ) +SET(CIMG_MAGICK_CCFLAGS -Dcimg_use_magick) + +# Flags to enable faster Discrete Fourier Transform computation, using the FFTW3 library +# ( http://www.fftw.org/ ) +SET(CIMG_FFTW3_CCFLAGS -Dcimg_use_fftw3) + + + + +# ### Search Additional Libraries ########## +FIND_PACKAGE(OpenCV) +FIND_PACKAGE(JPEG) +FIND_PACKAGE(TIFF) +FIND_PACKAGE(PNG) +FIND_PACKAGE(ZLIB) +FIND_PACKAGE(LAPACK) +FIND_PACKAGE(BLAS) + +PKG_CHECK_MODULES(FFTW3 fftw3) +PKG_CHECK_MODULES(OPENEXR OpenEXR) +PKG_CHECK_MODULES(MAGICK Magick++) + +# PKG_CHECK_MODULES(LIBAVCODEC libavcodec) +# PKG_CHECK_MODULES(LIBAVFORMAT libavformat) +# PKG_CHECK_MODULES(LIBSWSCALE libswscale) +# PKG_CHECK_MODULES(LIBAVUTIL libavutil) + +if(NOT WIN32) + FIND_PACKAGE(X11) + FIND_PACKAGE(Threads REQUIRED) +endif() + +# #### End of additional libraries search ########## + + +### Configure Paths according to detected packages +if(TIFF_FOUND) + get_filename_component(TIFF_LIB_DIRS ${TIFF_LIBRARIES} PATH) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_TIFF_CCFLAGS}") + link_directories(${TIFF_LIB_DIRS}) + include_directories(${TIFF_INCLUDE_DIR}) + SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${TIFF_LIBRARIES}) +endif() + + + +if(JPEG_FOUND) + get_filename_component(JPEG_LIB_DIRS ${JPEG_LIBRARIES} PATH) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_JPEG_CCFLAGS}") + link_directories(${JPEG_LIB_DIRS}) + include_directories(${JPEG_INCLUDE_DIR}) + SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${JPEG_LIBRARIES}) +endif() + + + + +if (ZLIB_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_ZLIB_CCFLAGS}") + link_directories(${ZLIB_LIB_DIRS}) + include_directories(${ZLIB_INCLUDE_DIR}) + SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${ZLIB_LIBRARIES}) + + # PNG requires ZLIB + if(PNG_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_PNG_CCFLAGS}") + link_directories(${PNG_LIB_DIRS}) + include_directories(${PNG_INCLUDE_DIR} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${PNG_LIBRARIES} ) + endif() +endif() + + + + +if(FFTW3_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_FFTW3_CCFLAGS}") + link_directories( ${FFTW3_LIBRARY_DIRS} ) + include_directories( ${FFTW3_INCLUDE_DIRS} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${FFTW3_LIBRARIES} ) +endif() + + + + +if(OPENEXR_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_OPENEXR_CCFLAGS}") + link_directories( ${OPENEXR_LIBRARY_DIRS} ) + include_directories( ${OPENEXR_INCLUDE_DIRS} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${OPENEXR_LIBRARIES} ) +endif() + + +if(MAGICK_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_MAGICK_CCFLAGS}") + link_directories( ${MAGICK_LIBRARY_DIRS} ) + include_directories( ${MAGICK_INCLUDE_DIRS} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${MAGICK_LIBRARIES} ) +endif() + + + + +if( LIBAVCODEC_FOUND AND LIBAVFORMAT_FOUND AND LIBSWSCALE_FOUND AND LIBAVUTIL_FOUND ) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_FFMPEG_CCFLAGS}") + link_directories( ${LIBAVFORMAT_LIBRARY_DIRS} ) + link_directories( ${LIBAVCODEC_LIBRARY_DIRS} ) + link_directories( ${LIBSWSCALE_LIBRARY_DIRS} ) + link_directories( ${LIBAVUTIL_LIBRARY_DIRS} ) + include_directories( ${LIBAVFORMAT_INCLUDE_DIRS} ${LIBAVFORMAT_INCLUDE_DIRS}/libavformat) + include_directories( ${LIBAVCODEC_INCLUDE_DIRS} ${LIBAVCODEC_INCLUDE_DIRS}/libavcodec ) + include_directories( ${LIBSWSCALE_INCLUDE_DIRS} ${LIBSWSCALE_INCLUDE_DIRS}/libswscale) + include_directories( ${LIBAVUTIL_INCLUDE_DIRS} ${LIBAVUTIL_INCLUDE_DIRS}/libavutil ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBAVFORMAT_LIBRARIES} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBAVCODEC_LIBRARIES} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBSWSCALE_LIBRARIES} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBAVUTIL_LIBRARIES} ) +endif() + + +if(NOT APPLE) + if(NOT WIN32) + if(X11_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_XSHM_CCFLAGS} ${CIMG_XRANDR_CCFLAGS}") + SET(SYSTEM_LIBS ${SYSTEM_LIBS} Xext Xrandr) + endif() + endif(NOT WIN32) +endif(NOT APPLE) + +if(X11_FOUND) + link_directories(${X11_LIB_DIRS}) + include_directories(${X11_INCLUDE_DIR}) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${X11_LIBRARIES} ) +endif() + +if (NOT WIN32) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${CMAKE_THREAD_LIBS_INIT} ) +endif() + +if( WIN32) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} gdi32 ) +endif() + +if (OpenCV_FOUND) + message("OpenCV Found") + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_OPENCV_CCFLAGS}") + include_directories(${OpenCV_INCLUDE_DIRS}) + link_directories(${OpenCV_LIB_DIRS}) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${OpenCV_LIBS} ) +endif() + + + +if(LAPACK_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_LAPACK_CCFLAGS}") + link_directories( ${LAPACK_LIBRARY_DIRS} ) + include_directories( ${LAPACK_INCLUDE_DIRS} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LAPACK_LIBRARIES} ) +endif() + +if(BLAS_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_BLAS_CCFLAGS}") + link_directories( ${BLAS_LIBRARY_DIRS} ) + include_directories( ${BLAS_INCLUDE_DIRS} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${BLAS_LIBRARIES} ) +endif() + + +# Add CIMG Flags to Compilation Flags +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CIMG_CFLAGS}") + + +SET(CIMG_FILES CImg_demo + captcha + curve_editor2d + dtmri_view3d + edge_explorer2d + fade_images + gaussian_fit1d + generate_loop_macros + hough_transform2d + image_registration2d + image2ascii + image_surface3d + jawbreaker + mcf_levelsets2d + mcf_levelsets3d + odykill + pde_heatflow2d + pde_TschumperleDeriche2d + plotter1d + radon_transform2d + scene3d + spherical_function3d + tetris + tron + tutorial + wavelet_atrous + use_draw_gradient + use_nlmeans + use_skeleton + use_RGBclass + ) + +foreach(program ${CIMG_FILES}) + add_executable(${program} ${program}.cpp) + target_link_libraries(${program} ${SYSTEM_LIBS} ) +endforeach(program) diff --git a/examples/Makefile b/examples/Makefile new file mode 100644 index 000000000..702ac363c --- /dev/null +++ b/examples/Makefile @@ -0,0 +1,609 @@ +# +# File : Makefile +# ( Makefile for GNU 'make' utility ) +# +# Description : Makefile for compiling CImg-based code on Unix. +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : David Tschumperlé +# ( http://tschumperle.users.greyc.fr/ ) +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# + +#------------------------------------------------------- +# Define the list of files to be compiled +# (name of the source files without the .cpp extension) +#------------------------------------------------------- + +# Files which do not necessarily require external libraries to run. +FILES = CImg_demo \ + captcha \ + curve_editor2d \ + dtmri_view3d \ + edge_explorer2d \ + fade_images \ + gaussian_fit1d \ + generate_loop_macros \ + hough_transform2d \ + image_registration2d \ + image2ascii \ + image_surface3d \ + jawbreaker \ + mcf_levelsets2d \ + mcf_levelsets3d \ + odykill \ + pde_heatflow2d \ + pde_TschumperleDeriche2d \ + plotter1d \ + radon_transform2d \ + scene3d \ + spherical_function3d \ + tetris \ + tron \ + tutorial \ + wavelet_atrous \ + use_chlpca \ + use_draw_gradient \ + use_nlmeans \ + use_skeleton \ + use_RGBclass \ + +# Files which requires external libraries to run. +EXTRA_FILES = use_tiff_stream use_jpeg_buffer + +#--------------------------------- +# Set correct variables and paths +#--------------------------------- +VERSION = $(shell grep 'cimg_version\ ' ../CImg.h | tail -c4 | head -c3) +VERSION1 = $(shell grep 'cimg_version\ ' ../CImg.h | tail -c4 | head -c1) +VERSION2 = $(shell grep 'cimg_version\ ' ../CImg.h | tail -c3 | head -c1) +VERSION3 = $(shell grep 'cimg_version\ ' ../CImg.h | tail -c2 | head -c1) +SVERSION = $(VERSION1).$(VERSION2).$(VERSION3) + +X11PATH = /usr/X11R6 + +EXE_PRE = +EXE_EXT = +ifeq ($(MSYSTEM),MINGW32) +EXE_EXT = .exe +endif +ifeq ($(MSYSTEM),MINGW64) +EXE_EXT = .exe +endif + +ifeq ($(shell echo $(notdir $(CXX)) | head -c3),g++) +IS_GCC = 1 +endif +ifeq ($(shell echo $(notdir $(CXX)) | head -c7),clang++) +IS_CLANG = 1 +endif +ifeq ($(shell echo $(notdir $(CXX)) | head -c4),icpc) +IS_ICPC = 1 +endif + +CXXVER = $(CXX) +CFLAGS = -I.. -Wall -Wextra -Wfatal-errors -Werror=unknown-pragmas -Werror=unused-label +LIBS = -lm +ifdef IS_GCC +CXXVER = $(shell $(CXX) -v 2>&1 | tail -n 1) +endif +ifdef IS_CLANG +CXXVER = $(shell $(CXX) -v 2>&1 | head -n 1) +endif +ifdef IS_ICPC +CXXVER = $(shell $(CXX) -v 2>&1) +CFLAGS = -I.. +LIBS = +endif + +ifdef IS_GCC +GCC_VER_GTEQ5 = $(shell expr `$(CXX) -dumpversion | cut -f1 -d.` \>= 5) +ifeq ($(GCC_VER_GTEQ5),1) +CFLAGS += -Wshadow +endif +endif + +#-------------------------------------------------- +# Set compilation flags allowing to customize CImg +#-------------------------------------------------- + +# Flags to enable strict code standards +ifeq ($(notdir $(CXX)),icpc) +ANSI_CFLAGS = -std=c++11 +else +ANSI_CFLAGS = -std=c++11 -pedantic +endif + +# Flags to enable code debugging. +DEBUG_CFLAGS = -Dcimg_verbosity=3 -Dcimg_strict_warnings -g -fsanitize=address + +# Flags to enable color output messages. +# (requires a VT100 compatible terminal) +VT100_CFLAGS = -Dcimg_use_vt100 + +# Flags to enable code optimization by the compiler. +OPT_CFLAGS = -Ofast +ifdef IS_GCC +OPT_CFLAGS = -Ofast -mtune=generic +endif +ifdef IS_ICPC +OPT_CFLAGS = -fast +endif + +# Flags to enable OpenMP support. +OPENMP_DEFINE = -Dcimg_use_openmp -fopenmp +OPENMP_INCDIR = +OPENMP_CFLAGS = $(OPENMP_DEFINE) $(OPENMP_INCDIR) +ifdef IS_ICPC +OPENMP_CFLAGS = #-Dcimg_use_openmp -openmp -i-static # -> Seems to bug the compiler! +endif +ifdef IS_CLANG +OPENMP_CFLAGS = +endif + +# Flags to enable OpenCV support. +OPENCV_DEFINE = -Dcimg_use_opencv +OPENCV_INCDIR = $(shell pkg-config opencv --cflags || echo -I/usr/include/opencv) -I/usr/include/opencv -I/usr/include/opencv4 +OPENCV_CFLAGS = $(OPENCV_DEFINE) $(OPENCV_INCDIR) +OPENCV_LIBS = $(shell pkg-config opencv --libs || echo -lopencv_core -lopencv_highgui) + +# Flags used to disable display capablities of CImg +NODISPLAY_CFLAGS = -Dcimg_display=0 + +# Flags to enable the use of the X11 library. +# (X11 is used by CImg to handle display windows) +X11_DEFINE = -Dcimg_display=1 +X11_INCDIR = $(shell pkg-config --cflags x11 || echo -I/usr/X11R6/include) +X11_CFLAGS = $(X11_DEFINE) $(X11_INCDIR) +X11_LIBS = $(shell pkg-config --libs x11 || echo -L/usr/X11R6/lib -lX11) -lpthread + +# Flags to enable fast image display, using the XSHM library (when using X11). +# !!! Seems to randomly crash when used on MacOS and 64bits systems, so use it only when necessary !!! +XSHM_CFLAGS = # -Dcimg_use_xshm $(shell pkg-config --cflags xcb-shm) +XSHM_LIBS = # $(shell pkg-config --libs xcb-shm || echo -L$(USR)/X11R6/lib -lXext) + +# Flags to enable GDI32 display (Windows native). +GDI32_DEFINE = -mwindows +GDI32_INCDIR = +GDI32_CFLAGS = $(GDI32_DEFINE) $(GDI32_INCDIR) +GDI32_LIBS = -lgdi32 + +# Flags to enable screen mode switching, using the XRandr library (when using X11). +# ( http://www.x.org/wiki/Projects/XRandR ) +# !!! Not supported by the X11 server on MacOS, so do not use it on MacOS !!! +XRANDR_DEFINE = -Dcimg_use_xrandr +XRANDR_INCDIR = +XRANDR_CFLAGS = $(XRANDR_DEFINE) $(XRANDR_INCDIR) +XRANDR_LIBS = -lXrandr + +# Flags to enable native support for PNG image files, using the PNG library. +# ( http://www.libpng.org/ ) +PNG_DEFINE = -Dcimg_use_png +PNG_INCDIR = +PNG_CFLAGS = $(PNG_DEFINE) $(PNG_INCDIR) +PNG_LIBS = -lpng -lz + +# Flags to enable native support for JPEG image files, using the JPEG library. +# ( http://www.ijg.org/ ) +JPEG_DEFINE = -Dcimg_use_jpeg +JPEG_INCDIR = +JPEG_CFLAGS = $(JPEG_DEFINE) $(JPEG_INCDIR) +JPEG_LIBS = -ljpeg + +# Flags to enable native support for TIFF image files, using the TIFF library. +# ( http://www.libtiff.org/ ) +TIFF_DEFINE = -Dcimg_use_tiff +TIFF_INCDIR = +TIFF_CFLAGS = $(TIFF_DEFINE) $(TIFF_INCDIR) +TIFF_LIBS = -ltiff + +# Flags to enable native support for loading HEIF image files, using the libheif library. +# ( https://github.com/strukturag/libheif ) +HEIF_DEFINE = -Dcimg_use_heif +HEIF_INCDIR = +HEIF_CFLAGS = $(HEIF_DEFINE) $(HEIF_INCDIR) +HEIF_LIBS = -lheif + +# Flags to enable native support for MINC2 image files, using the MINC2 library. +# ( http://en.wikibooks.org/wiki/MINC/Reference/MINC2.0_Users_Guide ) +MINC2_DEFINE = -Dcimg_use_minc2 +MINC2_INCDIR = -I${HOME}/local/include +MINC2_CFLAGS = $(MINC2_DEFINE) $(MINC2_INCDIR) +MINC2_LIBS = -lminc_io -lvolume_io2 -lminc2 -lnetcdf -lhdf5 -lz -L${HOME}/local/lib + +# Flags to enable native support for EXR image files, using the OpenEXR library. +# ( http://www.openexr.com/ ) +OPENEXR_DEFINE = -Dcimg_use_openexr +OPENEXR_INCDIR = -I/usr/include/OpenEXR +OPENEXR_CFLAGS = $(OPENEXR_DEFINE) $(OPENEXR_INCDIR) +OPENEXR_LIBS = -lIlmImf -lHalf + +# Flags to enable native support for various video files, using the FFMPEG library. +# ( http://www.ffmpeg.org/ ) +FFMPEG_DEFINE = -Dcimg_use_ffmpeg -D__STDC_CONSTANT_MACROS +FFMPEG_INCDIR = -I/usr/include/libavcodec -I/usr/include/libavformat -I/usr/include/libswscale -I/usr/include/ffmpeg +FFMPEG_CFLAGS = $(FFMPEG_DEFINE) $(FFMPEG_INCDIR) +FFMPEG_LIBS = -lavcodec -lavformat -lswscale + +# Flags to enable native support for compressed .cimgz files, using the Zlib library. +# ( http://www.zlib.net/ ) +ZLIB_DEFINE = -Dcimg_use_zlib +ZLIB_INCDIR = $(shell pkg-config --cflags zlib || echo -I$(USR)/$(INCLUDE)) +ZLIB_CFLAGS = $(ZLIB_DEFINE) $(ZLIB_INCDIR) +ZLIB_LIBS = $(shell pkg-config --libs zlib || echo -lz) + +# Flags to enable native support for downloading files from the network. +# ( http://curl.haxx.se/libcurl/ ) +CURL_DEFINE = -Dcimg_use_curl +CURL_INCDIR = +CURL_CFLAGS = $(CURL_DEFINE) +CURL_LIBS = -lcurl + +# Flags to enable native support of most classical image file formats, using the Magick++ library. +# ( http://www.imagemagick.org/Magick++/ ) +MAGICK_DEFINE = -Dcimg_use_magick +MAGICK_INCDIR = $(shell pkg-config --cflags GraphicsMagick++ || echo -I$(USR)/$(INCLUDE)/GraphicsMagick) +MAGICK_CFLAGS = $(MAGICK_DEFINE) $(MAGICK_INCDIR) +MAGICK_LIBS = $(shell pkg-config --libs GraphicsMagick++ || echo -lGraphicsMagick++) + +# Flags to enable faster Discrete Fourier Transform computation, using the FFTW3 library +# ( http://www.fftw.org/ ) +FFTW3_DEFINE = -Dcimg_use_fftw3 +FFTW3_INCDIR = +FFTW3_CFLAGS = $(FFTW3_DEFINE) $(FFTW3_INCDIR) +ifeq ($(OSTYPE),msys) +FFTW3_LIBS = -lfftw3-3 +else +FFTW3_LIBS = -lfftw3 -lfftw3_threads +endif + +# Flags to enable the use of LAPACK routines for matrix computation +# ( http://www.netlib.org/lapack/ ) +LAPACK_DEFINE = -Dcimg_use_lapack +LAPACK_INCDIR = +LAPACK_CFLAGS = $(LAPACK_DEFINE) $(LAPACK_INCDIR) +LAPACK_LIBS = -lblas -llapack + +# Flags to enable the use of the Board library +# ( https://github.com/c-koi/libboard ) +BOARD_DEFINE = -Dcimg_use_board +BOARD_INCDIR = -I/usr/include/board +BOARD_CFLAGS = $(BOARD_DEFINE) $(BOARD_INCDIR) +BOARD_LIBS = -lboard + +# Flags to compile GIMP plug-ins. +ifeq ($(MSYSTEM),MINGW32) +GIMP_CFLAGS = -mwindows +endif + +#------------------------- +# Define Makefile entries +#------------------------- +.cpp: + @echo + @echo "** Compiling '$* ($(SVERSION))' with '$(CXXVER)'" + @echo + $(CXX) -o $(EXE_PRE)$*$(EXE_EXT) $< $(CFLAGS) $(CONF_CFLAGS) $(LIBS) $(CONF_LIBS) +ifeq ($(STRIP_EXE),true) + strip $(EXE_PRE)$*$(EXE_EXT) +endif +menu: + @echo + @echo "CImg Library $(SVERSION) : Examples" + @echo "-----------------------------" + @echo " > linux : Linux/BSD target, X11 display, optimizations disabled." + @echo " > dlinux : Linux/BSD target, X11 display, debug mode." + @echo " > olinux : Linux/BSD target, X11 display, optimizations enabled." + @echo " > mlinux : Linus/BSD target, no display, minimal features, optimizations enabled." + @echo " > Mlinux : Linux/BSD target, X11 display, maximal features, optimizations enabled." + @echo + @echo " > macos : MacOS target, X11 display, optimizations disabled." + @echo " > dmacos : MacOS target, X11 display, debug mode." + @echo " > omacos : MacOS target, X11 display, optimizations enabled." + @echo " > mmacos : MacOS target, no display, minimal features, optimizations enabled." + @echo " > Mmacos : MacOS target, X11 display, maximal features, optimizations enabled." + @echo + @echo " > windows : Windows target, GDI32 display, optimizations disabled." + @echo " > dwindows : Windows target, GDI32 display, debug mode." + @echo " > owindows : Windows target, GDI32 display, optimizations enabled." + @echo " > mwindows : Windows target, no display, minimal features, optimizations enabled." + @echo " > Mwindows : Windows target, GDI32 display, maximal features, optimizations enabled." + @echo + @echo " > clean : Clean generated files." + @echo + @echo "Choose your option :" + @read CHOICE; echo; $(MAKE) $$CHOICE; echo; echo "> Next time, you can bypass the menu by typing directly 'make $$CHOICE'"; echo; + +all: $(FILES) + +clean: + rm -rf *.exe *.o *.obj *~ \#* $(FILES) $(EXTRA_FILES) +ifneq ($(EXE_PRE),) + rm -f $(EXE_PRE)* +endif + +# Custom user-defined target +custom: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(VT100_CFLAGS) \ +$(TIFF_CFLAGS) \ +$(HEIF_CFLAGS) \ +$(X11_CFLAGS) \ +$(LAPACK_CFLAGS) \ +$(XSHM_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(TIFF_LIBS) \ +$(HEIF_LIBS) \ +$(LAPACK_LIBS) \ +$(XSHM_LIBS)" \ +all $(EXTRA_FILES) + +# Linux/BSD/Mac OSX targets, with X11 display. + +#A target for Travis-CI +travis: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(FFTW3_CFLAGS) \ +$(PNG_CFLAGS) \ +$(JPEG_CFLAGS) \ +$(ZLIB_CFLAGS) \ +$(CURL_CFLAGS) \ +$(XSHM_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(FFTW3_LIBS) \ +$(PNG_LIBS) \ +$(JPEG_LIBS) \ +$(ZLIB_LIBS) \ +$(CURL_LIBS) \ +$(XSHM_LIBS)" \ +all + +linux: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(XSHM_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(XSHM_LIBS)" \ +all + +dlinux: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(DEBUG_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(XSHM_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(XSHM_LIBS)" \ +all + +olinux: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(OPT_CFLAGS) \ +$(OPENMP_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(XSHM_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(XSHM_LIBS)" \ +"STRIP_EXE=true" \ +all + +mlinux: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(NODISPLAY_CFLAGS) \ +$(OPT_CFLAGS)" \ +"STRIP_EXE=true" \ +all + +Mlinux: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(OPT_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(XSHM_CFLAGS) \ +$(XRANDR_CFLAGS) \ +$(TIFF_CFLAGS) \ +$(HEIF_CFLAGS) \ +$(OPENEXR_CFLAGS) \ +$(PNG_CFLAGS) \ +$(JPEG_CFLAGS) \ +$(ZLIB_CFLAGS) \ +$(CURL_CFLAGS) \ +$(OPENCV_CFLAGS) \ +$(MAGICK_CFLAGS) \ +$(FFTW3_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(XSHM_LIBS) \ +$(XRANDR_LIBS) \ +$(TIFF_LIBS) -ltiffxx \ +$(HEIF_LIBS) \ +$(OPENEXR_LIBS) \ +$(PNG_LIBS) \ +$(JPEG_LIBS) \ +$(ZLIB_LIBS) \ +$(CURL_LIBS) \ +$(OPENCV_LIBS) \ +$(MAGICK_LIBS) \ +$(FFTW3_LIBS)" \ +"STRIP_EXE=true" \ +all $(EXTRA_FILES) + +# MacOs targets, with X11 display. +macos: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS)" \ +all + +dmacos: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(DEBUG_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS)" \ +all + +omacos: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(OPT_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS)" \ +all + +mmacos: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(NODISPLAY_CFLAGS) \ +$(OPT_CFLAGS)" \ +all + +Mmacos: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(OPT_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(TIFF_CFLAGS) \ +$(HEIF_CFLAGS) \ +$(MINC2_CFLAGS) \ +$(OPENEXR_CFLAGS) \ +$(PNG_CFLAGS) \ +$(JPEG_CFLAGS) \ +$(ZLIB_CFLAGS) \ +$(OPENCV_CFLAGS) \ +$(MAGICK_CFLAGS) \ +$(FFTW3_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(TIFF_LIBS) \ +$(HEIF_LIBS) \ +$(MINC2_LIBS) \ +$(OPENEXR_LIBS) \ +$(PNG_LIBS) \ +$(JPEG_LIBS) \ +$(ZLIB_LIBS) \ +$(OPENCV_LIBS) \ +$(MAGICK_LIBS) \ +$(FFTW3_LIBS)" \ +all $(EXTRA_FILES) + +# Windows targets, with GDI32 display. +windows: + @$(MAKE) \ +"CONF_CFLAGS = " \ +"CONF_LIBS = \ +$(GDI32_LIBS)" \ +all + +dwindows: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(DEBUG_CFLAGS)" \ +"CONF_LIBS = \ +$(GDI32_LIBS)" \ +all + +owindows: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(OPT_CFLAGS)" \ +"CONF_LIBS = \ +$(GDI32_LIBS)" \ +"STRIP_EXE=true" \ +all + +mwindows: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(NODISPLAY_CFLAGS) \ +$(OPT_CFLAGS)" \ +"STRIP_EXE=true" \ +all + +Mwindows: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(OPT_CFLAGS) \ +$(TIFF_CFLAGS) \ +$(HEIF_CFLAGS) \ +$(PNG_CFLAGS) \ +$(JPEG_CFLAGS) \ +$(ZLIB_CFLAGS) \ +$(OPENCV_CFLAGS) \ +$(FFTW3_CFLAGS)" \ +"CONF_LIBS = \ +$(GDI32_LIBS) \ +$(TIFF_LIBS) \ +$(HEIF_LIBS) \ +$(PNG_LIBS) \ +$(JPEG_LIBS) \ +$(ZLIB_LIBS) \ +$(OPENCV_LIBS) \ +$(FFTW3_LIBS)" \ +"STRIP_EXE=true" \ +all $(EXTRA_FILES) + +# End of makefile diff --git a/examples/captcha.cpp b/examples/captcha.cpp new file mode 100644 index 000000000..e8bc20e9a --- /dev/null +++ b/examples/captcha.cpp @@ -0,0 +1,163 @@ +/* + # + # File : captcha.cpp + # ( C++ source file ) + # + # Description : Captcha images generator. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_debug +#define cimg_debug 1 +#endif +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line parameters + //------------------------------ + cimg_usage("Simple captcha generator."); + const char *file_o = cimg_option("-o",(const char*)0,"Output image file"); + const bool add_border = cimg_option("-b",true,"Add border to captcha image"); + const bool visu = cimg_option("-visu",true,"Enable visualization if no output file"); + + // Generate captcha text (6 char max). + //------------------------------------ + const char *predef_words[] = { + "aarrgh", "abacas", "abacus", "abakas", "abamps", "abased", "abaser", "abases", "abasia", "abated", "abater", + "abates", "abatis", "abator", "baobab", "barbal", "barbed", "barbel", "barber", "barbes", "barbet", "barbie", + "barbut", "barcas", "barded", "bardes", "bardic", "barege", "cavies", "cavils", "caving", "cavity", "cavort", + "cawing", "cayman", "cayuse", "ceased", "ceases", "cebids", "ceboid", "cecity", "cedarn", "dicast", "dicers", + "dicier", "dicing", "dicker", "dickey", "dickie", "dicots", "dictum", "didact", "diddle", "diddly", "didies", + "didoes", "emails", "embalm", "embank", "embark", "embars", "embays", "embeds", "embers", "emblem", "embody", + "emboli", "emboly", "embosk", "emboss", "fluffy", "fluids", "fluish", "fluked", "flukes", "flukey", "flumed", + "flumes", "flumps", "flunks", "flunky", "fluors", "flurry", "fluted", "genome", "genoms", "genres", "genros", + "gentes", "gentil", "gentle", "gently", "gentry", "geodes", "geodic", "geoids", "gerahs", "gerbil", "hotter", + "hottie", "houdah", "hounds", "houris", "hourly", "housed", "housel", "houser", "houses", "hovels", "hovers", + "howdah", "howdie", "inland", "inlays", "inlets", "inlier", "inmate", "inmesh", "inmost", "innage", "innate", + "inners", "inning", "inpour", "inputs", "inroad", "joypop", "jubbah", "jubhah", "jubile", "judder", "judged", + "judger", "judges", "judoka", "jugate", "jugful", "jugged", "juggle", "jugula", "knifer", "knifes", "knight", + "knives", "knobby", "knocks", "knolls", "knolly", "knosps", "knotty", "knouts", "knower", "knowns", "knubby", + "legate", "legato", "legend", "legers", "legged", "leggin", "legion", "legist", "legits", "legman", "legmen", + "legong", "legume", "lehuas", "mammal", "mammas", "mammee", "mammer", "mammet", "mammey", "mammie", "mammon", + "mamzer", "manage", "manana", "manats", "manche", "manege", "nihils", "nilgai", "nilgau", "nilled", "nimble", + "nimbly", "nimbus", "nimmed", "nimrod", "ninety", "ninjas", "ninons", "ninths", "niobic", "offish", "offkey", + "offset", "oftest", "ogdoad", "oghams", "ogival", "ogives", "oglers", "ogling", "ogress", "ogrish", "ogrism", + "ohmage", "papaws", "papaya", "papers", "papery", "pappus", "papula", "papule", "papyri", "parade", "paramo", + "parang", "paraph", "parcel", "pardah", "quasar", "quatre", "quaver", "qubits", "qubyte", "queans", "queasy", + "queazy", "queens", "queers", "quelea", "quells", "quench", "querns", "raised", "raiser", "raises", "raisin", + "raitas", "rajahs", "rakees", "rakers", "raking", "rakish", "rallye", "ralphs", "ramada", "ramate", "savory", + "savour", "savoys", "sawers", "sawfly", "sawing", "sawlog", "sawney", "sawyer", "saxony", "sayeds", "sayers", + "sayest", "sayids", "tondos", "toneme", "toners", "tongas", "tonged", "tonger", "tongue", "tonics", "tonier", + "toning", "tonish", "tonlet", "tonner", "tonnes", "uredia", "uredos", "ureide", "uremia", "uremic", "ureter", + "uretic", "urgent", "urgers", "urging", "urials", "urinal", "urines", "uropod", "villus", "vimina", "vinals", + "vincas", "vineal", "vinery", "vinier", "vinify", "vining", "vinous", "vinyls", "violas", "violet", "violin", + "webfed", "weblog", "wechts", "wedded", "wedder", "wedeln", "wedels", "wedged", "wedges", "wedgie", "weeded", + "weeder", "weekly", "weened", "xystoi", "xystos", "xystus", "yabber", "yabbie", "yachts", "yacked", "yaffed", + "yagers", "yahoos", "yairds", "yakked", "yakker", "yakuza", "zigged", "zigzag", "zillah", "zinced", "zincic", + "zincky", "zinebs", "zinged", "zinger", "zinnia", "zipped", "zipper", "zirams", "zircon" }; + cimg::srand(); + const char *const captcha_text = predef_words[std::rand()%(sizeof(predef_words)/sizeof(char*))]; + + // Create captcha image + //---------------------- + + // Write colored and distorted text + CImg captcha(256,64,1,3,0), color(3); + char letter[2] = { 0 }; + for (unsigned int k = 0; k<6; ++k) { + CImg tmp; + *letter = captcha_text[k]; + if (*letter) { + cimg_forX(color,i) color[i] = (unsigned char)(128 + (std::rand()%127)); + tmp.draw_text((int)(2 + 8*cimg::rand()), + (int)(12*cimg::rand()), + letter,color.data(),0,1,std::rand()%2?38:57).resize(-100,-100,1,3); + const unsigned int dir = std::rand()%4, wph = tmp.width() + tmp.height(); + cimg_forXYC(tmp,x,y,v) { + const int val = dir==0?x + y:(dir==1?x + tmp.height() - y:(dir==2?y + tmp.width() - x: + tmp.width() - x + tmp.height() - y)); + tmp(x,y,v) = (unsigned char)std::max(0.0f,std::min(255.0f,1.5f*tmp(x,y,v)*val/wph)); + } + if (std::rand()%2) tmp = (tmp.get_dilate(3)-=tmp); + tmp.blur((float)cimg::rand()*0.8f).normalize(0,255); + const float sin_offset = (float)cimg::rand(-1,1)*3, sin_freq = (float)cimg::rand(-1,1)/7; + cimg_forYC(captcha,y,v) captcha.get_shared_row(y,0,v).shift((int)(4*std::cos(y*sin_freq + sin_offset))); + captcha.draw_image(6 + 40*k,tmp); + } + } + + // Add geometric and random noise + CImg copy = (+captcha).fill(0); + for (unsigned int l = 0; l<3; ++l) { + if (l) copy.blur(0.5f).normalize(0,148); + for (unsigned int k = 0; k<10; ++k) { + cimg_forX(color,i) color[i] = (unsigned char)(128 + cimg::rand()*127); + if (cimg::rand()<0.5f) copy.draw_circle((int)(cimg::rand()*captcha.width()), + (int)(cimg::rand()*captcha.height()), + (int)(cimg::rand()*30), + color.data(),0.6f,~0U); + else copy.draw_line((int)(cimg::rand()*captcha.width()), + (int)(cimg::rand()*captcha.height()), + (int)(cimg::rand()*captcha.width()), + (int)(cimg::rand()*captcha.height()), + color.data(),0.6f); + } + } + captcha|=copy; + captcha.noise(10,2); + + if (add_border) + captcha.draw_rectangle(0,0,captcha.width() - 1,captcha.height() - 1, + CImg::vector(255,255,255).data(),1.0f,~0U); + captcha = (+captcha).fill(255) - captcha; + + // Write output image and captcha text + //------------------------------------- + std::printf("%s\n",captcha_text); + if (file_o) captcha.save(file_o); + else if (visu) { + CImgDisplay disp(CImg(512,128,1,3,180).draw_image(128,32,captcha),captcha_text,0); + while (!disp.is_closed() && !disp.key()) { disp.wait(); if (disp.is_resized()) disp.resize(disp).wait(100); } + } + return 0; +} diff --git a/examples/curve_editor2d.cpp b/examples/curve_editor2d.cpp new file mode 100644 index 000000000..dc7b3cd20 --- /dev/null +++ b/examples/curve_editor2d.cpp @@ -0,0 +1,356 @@ +/* + # + # File : curve_editor2d.cpp + # ( C++ source file ) + # + # Description : A simple user interface to construct 2D spline curves. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # Antonio Albiol Colomer + # ( http://personales.upv.es/~aalbiol/index-english.html ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Compute distance from a point to a segment. +//--------------------------------------------- +float dist_segment(const float x, const float y, const float x1, const float y1, const float x2, const float y2) { + const float + dx = x2 - x1, + dy = y2 - y1, + long_segment = (float)std::sqrt(dx*dx + dy*dy); + if (long_segment==0) { const float ddx = x - x1, ddy = y - y1; return (float)std::sqrt(ddx*ddx + ddy*ddy); } + const float + unitx = dx/long_segment, + unity = dy/long_segment, + vx = x - x1, + vy = y - y1, + long_proy = vx*unitx + vy*unity, + proyx = x1 + long_proy*unitx, + proyy = y1 + long_proy*unity; + if (long_proy>long_segment) { const float ddx = x - x2, ddy = y - y2; return std::sqrt(ddx*ddx + ddy*ddy); } + else if (long_proy<0) { const float ddx = x - x1, ddy = y - y1; return std::sqrt(ddx*ddx + ddy*ddy); } + const float ddx = x - proyx, ddy = y - proyy; + return std::sqrt(ddx*ddx + ddy*ddy); +} + +// Main procedure +//--------------- +int main(int argc, char **argv) { + + // Read command line parameters + //----------------------------- + cimg_usage("2D Spline Curve Editor"); + const char *file_i = cimg_option("-i",(char*)0,"Input image"); + const float contrast = cimg_option("-contrast",0.6f,"Image contrast"); + const char *file_ip = cimg_option("-ip",(char*)0,"Input control points"); + const char *file_oc = cimg_option("-oc",(char*)0,"Output curve points"); + const char *file_op = cimg_option("-op",(char*)0,"Output control points"); + const char *file_od = cimg_option("-od",(char*)0,"Output distance function"); + bool interp = cimg_option("-poly",true,"Use polynomial interpolation"); + bool closed = cimg_option("-closed",true,"Closed curve"); + bool show_tangents = cimg_option("-tangents",false,"Show tangents"); + bool show_points = cimg_option("-points",true,"Show control points"); + bool show_outline = cimg_option("-outline",true,"Show polygon outline"); + bool show_indices = cimg_option("-indices",true,"Show points indices"); + bool show_coordinates = cimg_option("-coords",false,"Show points coordinates"); + const float precision = cimg_option("-prec",0.05f,"Precision of curve discretization"); + + // Init image data + //----------------- + const unsigned char yellow[] = { 255,255,0 }, white[] = { 255,255,255 }, green[] = { 0,255,0 }, + blue[] = { 120,200,255 }, purple[] = { 255,100,255 }, black[] = { 0,0,0 }; + CImg img0, img, help_img; + if (file_i) { + std::fprintf(stderr,"\n - Load input image '%s' : ",cimg::basename(file_i)); + img0 = CImg<>(file_i).normalize(0,255.0f*contrast); + std::fprintf(stderr,"Size = %dx%dx%dx%d \n",img0.width(),img0.height(),img0.depth(),img0.spectrum()); + img0.resize(-100,-100,1,3); + } + else { + std::fprintf(stderr,"\n - No input image specified, use default 512x512 image.\n"); + img0.assign(512,512,1,3,0).draw_grid(32,32,0,0,false,false,green,0.4f,0xCCCCCCCC,0xCCCCCCCC); + } + + help_img.assign(220,210,1,3,0). + draw_text(5,5, + "------------------------------------------\n" + "2D Curve Editor\n" + "------------------------------------------\n" + "Left button : Create or move control point\n" + "Right button : Delete control point\n" + "Spacebar : Switch interpolation\n" + "Key 'C' : Switch open/closed mode\n" + "Key 'T' : Show/hide tangents\n" + "Key 'P' : Show/hide control points\n" + "Key 'O' : Show/hide polygon outline\n" + "Key 'N' : Show/hide points indices\n" + "Key 'X' : Show/hide points coordinates\n" + "Key 'H' : Show/hide this help\n" + "Key 'S' : Save control points\n" + "Key 'R' : Reset curve\n", + green); + CImgDisplay disp(img0,"2D Curve Editor",0); + CImgList points, curve; + bool moving = false, help = !file_i; + + if (file_ip) { + std::fprintf(stderr," - Load input control points '%s' : ",cimg::basename(file_ip)); + points = CImg<>(file_ip).transpose()<'x'; + std::fprintf(stderr," %u points\n",points.size()); + } + + // Enter interactive loop + //------------------------ + while (!disp.is_closed() && !disp.is_keyESC() && !disp.is_keyQ()) { + + // Handle mouse manipulation + //--------------------------- + const unsigned int button = disp.button(); + const float + mx = disp.mouse_x()*(float)img0.width()/disp.width(), + my = disp.mouse_y()*(float)img0.height()/disp.height(); + + if (points && button && mx>=0 && my>=0) { + + // Find nearest point and nearest segment + float dmin_pt = cimg::type::max(), dmin_seg = dmin_pt; + unsigned int p_pt = 0, p_seg = 0; + cimglist_for(points,p) { + const unsigned int + pnext = closed?(p + 1)%points.size():(p + 1<(int)points.size()?p + 1:p); + const float + xp = points(p,0), + yp = points(p,1); + const float + d_pt = (xp - mx)*(xp - mx) + (yp - my)*(yp - my), + d_seg = dist_segment(mx,my,xp,yp,points(pnext,0),points(pnext,1)); + if (d_pt::vector(mx,my),p_seg + 1); + moving = true; + } + if (button&2 && dmin_pt<100) { + if (points.size()>3) points.remove(p_pt); + disp.set_button(); + } + } + if (!button) moving = false; + + if (disp.key()) { + switch (disp.key()) { + case cimg::keySPACE : interp = !interp; break; + case cimg::keyC : closed = !closed; break; + case cimg::keyT : show_tangents = !show_tangents; break; + case cimg::keyP : show_points = !show_points; break; + case cimg::keyO : show_outline = !show_outline; break; + case cimg::keyN : show_indices = !show_indices; break; + case cimg::keyX : show_coordinates = !show_coordinates; break; + case cimg::keyR : points.assign(); break; + case cimg::keyH : help = !help; break; + case cimg::keyS : { + const char *filename = file_op?file_op:"curve_points.dlm"; + std::fprintf(stderr," - Save control points in '%s'\n",filename); + (points>'x').transpose().save(filename); + } break; + } + disp.set_key(); + } + + // Init list of points if empty + //------------------------------ + if (!points) { + const float + x0 = img0.width()/4.0f, + y0 = img0.height()/4.0f, + x1 = img0.width() - x0, + y1 = img0.height() - y0; + points.insert(CImg<>::vector(x0,y0)). + insert(CImg<>::vector(x1,y0)). + insert(CImg<>::vector(x1,y1)). + insert(CImg<>::vector(x0,y1)); + } + + // Estimate curve tangents + //------------------------- + CImg<> tangents(points.size(),2); + cimglist_for(points,p) { + const unsigned int + p0 = closed?(p + points.size() - 1)%points.size():(p?p - 1:0), + p1 = closed?(p + 1)%points.size():(p + 1<(int)points.size()?p + 1:p); + const float + x = points(p,0), + y = points(p,1), + x0 = points(p0,0), + y0 = points(p0,1), + x1 = points(p1,0), + y1 = points(p1,1), + u0 = x - x0, + v0 = y - y0, + n0 = 1e-8f + (float)std::sqrt(u0*u0 + v0*v0), + u1 = x1 - x, + v1 = y1 - y, + n1 = 1e-8f + (float)std::sqrt(u1*u1 + v1*v1), + u = u0/n0 + u1/n1, + v = v0/n0 + v1/n1, + n = 1e-8f + (float)std::sqrt(u*u + v*v), + fact = 0.5f*(n0 + n1); + tangents(p,0) = fact*u/n; + tangents(p,1) = fact*v/n; + } + + // Estimate 3th-order polynomial interpolation + //--------------------------------------------- + curve.assign(); + const unsigned int pmax = points.size() - (closed?0:1); + for (unsigned int p0 = 0; p0::vector(xt,yt)); + } + } + + // Draw curve and display image + //------------------------------- + const float + factx = (float)disp.width()/img0.width(), + facty = (float)disp.height()/img0.height(); + img = img0.get_resize(disp.width(),disp.height()); + if (help) img.draw_image(help_img,0.6f); + if (interp && show_outline) { + CImg<> npoints = points>'x'; + npoints.get_shared_row(0)*=factx; + npoints.get_shared_row(1)*=facty; + img.draw_polygon(npoints,blue,0.4f); + if (closed) img.draw_polygon(npoints,yellow,0.8f,0x11111111); + else img.draw_line(npoints,yellow,0.8f,0x11111111); + } + CImg<> ncurve = curve>'x'; + ncurve.get_shared_row(0)*=factx; + ncurve.get_shared_row(1)*=facty; + if (closed) img.draw_polygon(ncurve,white,1.0f,~0U); + else img.draw_line(ncurve,white); + + if (show_points) cimglist_for(points,p) { + const float + x = points(p,0)*factx, + y = points(p,1)*facty; + if (show_tangents) { + const float + u = tangents(p,0), + v = tangents(p,1), + n = 1e-8f + (float)std::sqrt(u*u + v*v), + nu = u/n, + nv = v/n; + img.draw_arrow((int)(x - 15*nu),(int)(y - 15*nv),(int)(x + 15*nu),(int)(y + 15*nv),green); + } + if (show_indices) img.draw_text((int)x,(int)(y - 16),"%d",purple,black,1,13,p); + if (show_coordinates) + img.draw_text((int)(x - 24),(int)(y + 8),"(%d,%d)",yellow,black,0.5f,13,(int)points(p,0),(int)points(p,1)); + img.draw_circle((int)x,(int)y,3,blue,0.7f); + } + + img.display(disp); + disp.wait(); + + if (disp.is_resized()) disp.resize(false); + } + + // Save output result and exit + //----------------------------- + if (file_op) { + std::fprintf(stderr," - Save control points in '%s'\n",cimg::basename(file_op)); + (points>'x').transpose().save(file_op); + } + if (file_oc) { + std::fprintf(stderr," - Save curve points in '%s'\n",cimg::basename(file_oc)); + (curve>'x').transpose().save(file_oc); + } + if (file_od) { + std::fprintf(stderr," - Computing distance function, please wait...."); std::fflush(stderr); + CImg<> ncurve = (closed?(+curve).insert(curve[0]):curve)>'x'; + const float zero = 0.0f, one = 1.0f; + CImg<> distance = + CImg<>(img0.width(),img0.height(),1,1,-1.0f).draw_line(ncurve,&zero).draw_fill(0,0,&one). + distance(0); + std::fprintf(stderr,"\n - Save distance function in '%s'\n",cimg::basename(file_od)); + distance.save(file_od); + } + + std::fprintf(stderr," - Exit.\n"); + std::exit(0); + return 0; +} diff --git a/examples/dtmri_view3d.cpp b/examples/dtmri_view3d.cpp new file mode 100644 index 000000000..d1636aa5a --- /dev/null +++ b/examples/dtmri_view3d.cpp @@ -0,0 +1,563 @@ +/* + # + # File : dtmri_view3d.cpp + # ( C++ source file ) + # + # Description : A viewer of Diffusion-Tensor MRI volumes (medical imaging). + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Compute fractional anisotropy (FA) of a tensor +//------------------------------------------- +template float get_FA(const T& val1, const T& val2, const T& val3) { + const float + l1 = val1>0?val1:0, l2 = val2>0?val2:0, l3 = val3>0?val3:0, + lm = (l1 + l2 + l3)/3, + tr2 = 2*(l1*l1 + l2*l2 + l3*l3), + ll1 = l1 - lm, + ll2 = l2 - lm, + ll3 = l3 - lm; + if (tr2>0) return (float)std::sqrt(3*(ll1*ll1 + ll2*ll2 + ll3*ll3)/tr2); + return 0; +} + +// Insert an ellipsoid in a CImg 3D scene +//---------------------------------------- +template +void insert_ellipsoid(const CImg& tensor, const float X, const float Y, const float Z, const float tfact, + const float vx, const float vy, const float vz, + CImgList& points, CImgList& faces, CImgList& colors, + const unsigned int res1=20, const unsigned int res2=20) { + + // Compute eigen elements + float l1 = tensor[0], l2 = tensor[1], l3 = tensor[2], fa = get_FA(l1,l2,l3); + CImg<> vec = CImg<>::matrix(tensor[3],tensor[6],tensor[9], + tensor[4],tensor[7],tensor[10], + tensor[5],tensor[8],tensor[11]); + const int + r = (int)std::min(30 + 1.5f*cimg::abs(255*fa*tensor[3]),255.0f), + g = (int)std::min(30 + 1.5f*cimg::abs(255*fa*tensor[4]),255.0f), + b = (int)std::min(30 + 1.5f*cimg::abs(255*fa*tensor[5]),255.0f); + + // Define mesh points + const unsigned int N0 = points.size(); + for (unsigned int v = 1; v::vector(X,Y,Z) + vec*CImg::vector(x,y,z)).mul(CImg::vector(vx,vy,vz))); + } + const unsigned int N1 = points.size(); + points.insert((CImg::vector(X,Y,Z) - vec*CImg::vector(0,0,l3*tfact))); + points.insert((CImg::vector(X,Y,Z) + vec*CImg::vector(0,0,l3*tfact))); + points[points.size() - 2](0)*=vx; points[points.size() - 2](1)*=vy; points[points.size() - 2](2)*=vz; + points[points.size() - 1](0)*=vx; points[points.size() - 1](1)*=vy; points[points.size() - 1](2)*=vz; + + // Define mesh triangles + for (unsigned int vv = 0; vv::vector(N0 + res1*vv + nu,N0 + res1*nv + uu,N0 + res1*vv + uu)); + faces.insert(CImg::vector(N0 + res1*vv + nu,N0 + res1*nv + nu,N0 + res1*nv + uu)); + colors.insert(CImg::vector((tc)r,(tc)g,(tc)b)); + colors.insert(CImg::vector((tc)r,(tc)g,(tc)b)); + } + for (unsigned int uu = 0; uu::vector(N0 + nu,N0 + uu,N1)); + faces.insert(CImg::vector(N0 + res1*(res2 - 2) + nu, N1 + 1,N0 + res1*(res2 - 2) + uu)); + colors.insert(CImg::vector((tc)r,(tc)g,(tc)b)); + colors.insert(CImg::vector((tc)r,(tc)g,(tc)b)); + } +} + +// Insert a fiber in a CImg 3D scene +//----------------------------------- +template +void insert_fiber(const CImg& fiber, const CImg& eigen, const CImg& palette, + const int xm, const int ym, const int zm, + const float vx, const float vy, const float vz, + CImgList& points, CImgList& primitives, CImgList& colors) { + const int N0 = points.size(); + float x0 = fiber(0,0), y0 = fiber(0,1), z0 = fiber(0,2), fa0 = eigen.linear_atXYZ(x0,y0,z0,12); + points.insert(CImg<>::vector(vx*(x0 -xm),vy*(y0 - ym),vz*(z0 - zm))); + for (int l = 1; l::vector(vx*(x1 - xm),vy*(y1 - ym),vz*(z1 - zm))); + primitives.insert(CImg::vector(N0 + l - 1,N0 + l)); + const unsigned char + icol = (unsigned char)(fa0*255), + r = palette(icol,0), + g = palette(icol,1), + b = palette(icol,2); + colors.insert(CImg::vector(r,g,b)); + x0 = x1; y0 = y1; z0 = z1; fa0 = fa1; + } +} + +// Compute fiber tracking using 4th-order Runge Kutta integration +//----------------------------------------------------------------- +template +CImg<> get_fibertrack(CImg& eigen, + const int X0, const int Y0, const int Z0, const float lmax=100, + const float dl=0.1f, const float FAmin=0.7f, const float cmin=0.5f) { +#define align_eigen(i,j,k) \ + { T &u = eigen(i,j,k,3), &v = eigen(i,j,k,4), &w = eigen(i,j,k,5); \ + if (u*cu + v*cv + w*cw<0) { u=-u; v=-v; w=-w; }} + + CImgList<> resf; + + // Forward tracking + float normU = 0, normpU = 0, l = 0, X = (float)X0, Y = (float)Y0, Z = (float)Z0; + T + pu = eigen(X0,Y0,Z0,3), + pv = eigen(X0,Y0,Z0,4), + pw = eigen(X0,Y0,Z0,5); + normpU = (float)std::sqrt(pu*pu + pv*pv + pw*pw); + bool stopflag = false; + + while (!stopflag) { + if (X<0 || X>eigen.width() - 1 || Y<0 || Y>eigen.height() - 1 || Z<0 || Z>eigen.depth() - 1 || + eigen((int)X,(int)Y,(int)Z,12)lmax) stopflag = true; + else { + resf.insert(CImg<>::vector(X,Y,Z)); + + const int + cx = (int)X, px = (cx - 1<0)?0:cx - 1, nx = (cx + 1>=eigen.width())?eigen.width() - 1:cx + 1, + cy = (int)Y, py = (cy - 1<0)?0:cy - 1, ny = (cy + 1>=eigen.height())?eigen.height() - 1:cy + 1, + cz = (int)Z, pz = (cz - 1<0)?0:cz - 1, nz = (cz + 1>=eigen.depth())?eigen.depth() - 1:cz + 1; + const T cu = eigen(cx,cy,cz,3), cv = eigen(cx,cy,cz,4), cw = eigen(cx,cy,cz,5); + + align_eigen(px,py,pz); align_eigen(cx,py,pz); align_eigen(nx,py,pz); + align_eigen(px,cy,pz); align_eigen(cx,cy,pz); align_eigen(nx,cy,pz); + align_eigen(px,ny,pz); align_eigen(cx,ny,pz); align_eigen(nx,ny,pz); + align_eigen(px,py,cz); align_eigen(cx,py,cz); align_eigen(nx,py,cz); + align_eigen(px,cy,cz); align_eigen(nx,cy,cz); + align_eigen(px,ny,cz); align_eigen(cx,ny,cz); align_eigen(nx,ny,cz); + align_eigen(px,py,nz); align_eigen(cx,py,nz); align_eigen(nx,py,nz); + align_eigen(px,cy,nz); align_eigen(cx,cy,nz); align_eigen(nx,cy,nz); + align_eigen(px,ny,nz); align_eigen(cx,ny,nz); align_eigen(nx,ny,nz); + + const T + u0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,3), + v0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,4), + w0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,5), + u1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,3), + v1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,4), + w1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,5), + u2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,3), + v2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,4), + w2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,5), + u3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,3), + v3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,4), + w3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,5); + T + u = u0/3 + 2*u1/3 + 2*u2/3 + u3/3, + v = v0/3 + 2*v1/3 + 2*v2/3 + v3/3, + w = w0/3 + 2*w1/3 + 2*w2/3 + w3/3; + if (u*pu + v*pv + w*pw<0) { u = -u; v = -v; w = -w; } + normU = (float)std::sqrt(u*u + v*v + w*w); + const float scal = (u*pu + v*pv + w*pw)/(normU*normpU); + if (scaleigen.width() - 1 || Y<0 || Y>eigen.height() - 1 || Z<0 || Z>eigen.depth() - 1 || + eigen((int)X,(int)Y,(int)Z,12)lmax) stopflag = true; + else { + + const int + cx = (int)X, px = (cx - 1<0)?0:cx - 1, nx = (cx + 1>=eigen.width())?eigen.width() - 1:cx + 1, + cy = (int)Y, py = (cy - 1<0)?0:cy - 1, ny = (cy + 1>=eigen.height())?eigen.height() - 1:cy + 1, + cz = (int)Z, pz = (cz - 1<0)?0:cz - 1, nz = (cz + 1>=eigen.depth())?eigen.depth() - 1:cz + 1; + const T cu = eigen(cx,cy,cz,3), cv = eigen(cx,cy,cz,4), cw = eigen(cx,cy,cz,5); + + align_eigen(px,py,pz); align_eigen(cx,py,pz); align_eigen(nx,py,pz); + align_eigen(px,cy,pz); align_eigen(cx,cy,pz); align_eigen(nx,cy,pz); + align_eigen(px,ny,pz); align_eigen(cx,ny,pz); align_eigen(nx,ny,pz); + align_eigen(px,py,cz); align_eigen(cx,py,cz); align_eigen(nx,py,cz); + align_eigen(px,cy,cz); align_eigen(nx,cy,cz); + align_eigen(px,ny,cz); align_eigen(cx,ny,cz); align_eigen(nx,ny,cz); + align_eigen(px,py,nz); align_eigen(cx,py,nz); align_eigen(nx,py,nz); + align_eigen(px,cy,nz); align_eigen(cx,cy,nz); align_eigen(nx,cy,nz); + align_eigen(px,ny,nz); align_eigen(cx,ny,nz); align_eigen(nx,ny,nz); + + const T + u0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,3), + v0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,4), + w0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,5), + u1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,3), + v1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,4), + w1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,5), + u2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,3), + v2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,4), + w2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,5), + u3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,3), + v3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,4), + w3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,5); + T + u = u0/3 + 2*u1/3 + 2*u2/3 + u3/3, + v = v0/3 + 2*v1/3 + 2*v2/3 + v3/3, + w = w0/3 + 2*w1/3 + 2*w2/3 + w3/3; + if (u*pu + v*pv + w*pw<0) { u = -u; v = -v; w = -w; } + normU = (float)std::sqrt(u*u + v*v + w*w); + const float scal = (u*pu + v*pv + w*pw)/(normU*normpU); + if (scal::vector(X,Y,Z),0); + } + } + + return resf>'x'; +} + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read and init data + //-------------------- + cimg_usage("A viewer of Diffusion-Tensor MRI volumes."); + const char *file_i = cimg_option("-i",(char*)0,"Input : Filename of tensor field (volume wxhxdx6)"); + const char* vsize = cimg_option("-vsize","1x1x1","Input : Voxel aspect"); + const bool normalize = cimg_option("-normalize",true,"Input : Enable tensor normalization"); + const char *file_f = cimg_option("-f",(char*)0,"Input : Input fibers\n"); + const float dl = cimg_option("-dl",0.5f,"Fiber computation : Integration step"); + const float famin = cimg_option("-famin",0.3f,"Fiber computation : Fractional Anisotropy threshold"); + const float cmin = cimg_option("-cmin",0.2f,"Fiber computation : Curvature threshold"); + const float lmin = cimg_option("-lmin",10.0f,"Fiber computation : Minimum length\n"); + const float lmax = cimg_option("-lmax",1000.0f,"Fiber computation : Maximum length\n"); + const float tfact = cimg_option("-tfact",1.2f,"Display : Tensor size factor"); + const char *bgcolor = cimg_option("-bg","0,0,0","Display : Background color"); + unsigned int bgr = 0, bgg = 0, bgb = 0; + std::sscanf(bgcolor,"%u%*c%u%*c%u",&bgr,&bgg,&bgb); + + CImg<> tensors; + if (file_i) { + std::fprintf(stderr,"\n- Loading tensors '%s'",cimg::basename(file_i)); + tensors.load(file_i); + } else { + // Create a synthetic tensor field here + std::fprintf(stderr,"\n- No input files : Creating a synthetic tensor field"); + tensors.assign(32,32,32,6); + cimg_forXYZ(tensors,x,y,z) { + const float + u = x - tensors.width()/2.0f, + v = y - tensors.height()/2.0f, + w = z - tensors.depth()/2.0f, + norm = (float)std::sqrt(1e-5f + u*u + v*v + w*w), + nu = u/norm, nv = v/norm, nw = w/norm; + const CImg<> + dir1 = CImg<>::vector(nu,nv,nw), + dir2 = CImg<>::vector(-nv,nu,nw), + dir3 = CImg<>::vector(nw*(nv - nu),-nw*(nu + nv),nu*nu + nv*nv); + tensors.set_tensor_at(2.0*dir1*dir1.get_transpose() + + 1.0*dir2*dir2.get_transpose() + + 0.7*dir3*dir3.get_transpose(), + x,y,z); + } + } + float voxw = 1, voxh = 1, voxd = 1; + std::sscanf(vsize,"%f%*c%f%*c%f",&voxw,&voxh,&voxd); + + std::fprintf(stderr," : %ux%ux%u image, voxsize=%gx%gx%g.", + tensors.width(),tensors.height(),tensors.depth(), + voxw,voxh,voxd); + + CImgList<> fibers; + if (file_f) { + std::fprintf(stderr,"\n- Loading fibers '%s'.",cimg::basename(file_f)); + fibers.load(file_f); + } + + const CImg fiber_palette = + CImg<>(2,1,1,3).fill(200,255,0,255,0,200).RGBtoHSV().resize(256,1,1,3,3).HSVtoRGB(); + + // Compute eigen elements + //------------------------ + std::fprintf(stderr,"\n- Compute eigen elements."); + CImg coloredFA(tensors.width(),tensors.height(),tensors.depth(),3); + CImg<> eigen(tensors.width(),tensors.height(),tensors.depth(),13); + CImg<> val,vec; + float eigmax = 0; + cimg_forXYZ(tensors,x,y,z) { + tensors.get_tensor_at(x,y,z).symmetric_eigen(val,vec); + eigen(x,y,z,0) = val[0]; eigen(x,y,z,1) = val[1]; eigen(x,y,z,2) = val[2]; + if (val[0]<0) val[0] = 0; + if (val[1]<0) val[1] = 0; + if (val[2]<0) val[2] = 0; + if (val[0]>eigmax) eigmax = val[0]; + eigen(x,y,z,3) = vec(0,0); eigen(x,y,z,4) = vec(0,1); eigen(x,y,z,5) = vec(0,2); + eigen(x,y,z,6) = vec(1,0); eigen(x,y,z,7) = vec(1,1); eigen(x,y,z,8) = vec(1,2); + eigen(x,y,z,9) = vec(2,0); eigen(x,y,z,10) = vec(2,1); eigen(x,y,z,11) = vec(2,2); + const float fa = get_FA(val[0],val[1],val[2]); + eigen(x,y,z,12) = fa; + const int + r = (int)std::min(255.0f,1.5f*cimg::abs(255*fa*vec(0,0))), + g = (int)std::min(255.0f,1.5f*cimg::abs(255*fa*vec(0,1))), + b = (int)std::min(255.0f,1.5f*cimg::abs(255*fa*vec(0,2))); + coloredFA(x,y,z,0) = (unsigned char)r; + coloredFA(x,y,z,1) = (unsigned char)g; + coloredFA(x,y,z,2) = (unsigned char)b; + } + tensors.assign(); + std::fprintf(stderr,"\n- Maximum diffusivity = %g, Maximum FA = %g",eigmax,eigen.get_shared_channel(12).max()); + if (normalize) { + std::fprintf(stderr,"\n- Normalize tensors."); + eigen.get_shared_channels(0,2)/=eigmax; + } + + // Init display and begin user interaction + //----------------------------------------- + std::fprintf(stderr,"\n- Open user window."); + CImgDisplay disp(256,256,"DTMRI Viewer",0); + CImgDisplay disp3d(800,600,"3D Local View",0,false,true); + unsigned int XYZ[3]; + XYZ[0] = eigen.width()/2; XYZ[1] = eigen.height()/2; XYZ[2] = eigen.depth()/2; + + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + const CImg s = coloredFA.get_select(disp,2,XYZ); + if (!disp.is_closed()) switch (disp.key()) { + + // Open 3D visualization window + //----------------------------- + case cimg::keyA : + case 0 : { + const unsigned char white[] = { 255 }; + disp3d.display(CImg(disp3d.width(),disp3d.height(),1,1,0). + draw_text(10,10,"Please wait...",white)).show(); + + int xm, ym, zm, xM, yM, zM; + if (!disp.key()) { xm = s[0]; ym = s[1]; zm = s[2]; xM = s[3]; yM = s[4]; zM = s[5]; } + else { xm = ym = zm = 0; xM = eigen.width() - 1; yM = eigen.height() - 1; zM = eigen.height() - 1; } + const CImg<> img = eigen.get_crop(xm,ym,zm,xM,yM,zM); + CImgList<> points; + CImgList primitives; + CImgList colors; + + // Add ellipsoids to the 3D scene + int X = img.width()/2, Y = img.height()/2, Z = img.depth()/2; + cimg_forXY(img,x,y) + insert_ellipsoid(img.get_vector_at(x,y,Z),(float)x,(float)y,(float)Z, + tfact,voxw,voxh,voxd,points,primitives,colors,10,6); + cimg_forXZ(img,x,z) + insert_ellipsoid(img.get_vector_at(x,Y,z),(float)x,(float)Y,(float)z, + tfact,voxw,voxh,voxd,points,primitives,colors,10,6); + cimg_forYZ(img,y,z) + insert_ellipsoid(img.get_vector_at(X,y,z),(float)X,(float)y,(float)z, + tfact,voxw,voxh,voxd,points,primitives,colors,10,6); + + // Add computed fibers to the 3D scene + const CImg<> veigen = eigen.get_crop(xm,ym,zm,xM,yM,zM); + cimglist_for(fibers,l) { + const CImg<>& fiber = fibers[l]; + if (fiber.width()) insert_fiber(fiber,eigen,fiber_palette, + xm,ym,zm,voxw,voxh,voxd, + points,primitives,colors); + } + + // Display 3D object + CImg visu = CImg(3,disp3d.width(),disp3d.height(),1,0). + fill((unsigned char)bgr,(unsigned char)bgg,(unsigned char)bgb). + permute_axes("yzcx"); + bool stopflag = false; + while (!disp3d.is_closed() && !stopflag) { + const CImg<> pts = points>'x'; + visu.display_object3d(disp3d,pts,primitives,colors,true,4,-1,false,800,0.05f,1.0f); + disp3d.close(); + switch (disp3d.key()) { + case cimg::keyM : { // Create movie + std::fprintf(stderr,"\n- Movie mode.\n"); + const unsigned int N = 256; + CImg<> cpts(pts); + const CImg<> x = pts.get_shared_row(0), y = pts.get_shared_row(1), z = pts.get_shared_row(2); + float + _xm, _xM = x.max_min(_xm), + _ym, _yM = y.max_min(_ym), + _zm, _zM = z.max_min(_zm), + ratio = 2.0f*std::min(visu.width(),visu.height())/(3.0f*cimg::max(_xM - _xm,_yM - _ym,_zM - _zm)), + dx = 0.5f*(_xM + _xm), dy = 0.5f*(_yM + _ym), dz = 0.5f*(_zM + _zm); + cimg_forX(pts,l) { + cpts(l,0) = (pts(l,0) - dx)*ratio; + cpts(l,1) = (pts(l,1) - dy)*ratio; + cpts(l,2) = (pts(l,2) - dz)*ratio; + } + + for (unsigned int i=0; i rpts = CImg<>::rotation_matrix(0,1,0,alpha)*CImg<>::rotation_matrix(1,0,0,75)*cpts; + visu.fill(0).draw_object3d(visu.width()/2.0f,visu.height()/2.0f,-500.0f,rpts,primitives,colors, + 4,false,800.0f,visu.width()/2.0f,visu.height()/2.0f,-800.0f,0.05f,1.0f). + display(disp3d); + visu.save("frame.png",i); + } + visu.fill(0); + } break; + default: stopflag = true; + } + } + if (disp3d.is_fullscreen()) disp3d.toggle_fullscreen().resize(800,600).close(); + } break; + + // Compute region statistics + //--------------------------- + case cimg::keyR : { + std::fprintf(stderr,"\n- Statistics computation. Select region."); std::fflush(stderr); + const CImg sel = coloredFA.get_select(disp,2,XYZ); + int xm, ym, zm, xM, yM, zM; + if (!disp.key()) { xm = sel[0]; ym = sel[1]; zm = sel[2]; xM = sel[3]; yM = sel[4]; zM = sel[5]; } + else { xm = ym = zm = 0; xM = eigen.width() - 1; yM = eigen.height() - 1; zM = eigen.height() - 1; } + const CImg<> img = eigen.get_crop(xm,ym,zm,xM,yM,zM); + std::fprintf(stderr,"\n- Mean diffusivity = %g, Mean FA = %g\n", + eigen.get_shared_channel(0).mean(), + eigen.get_shared_channel(12).mean()); + } break; + + // Track fiber bundle (single region) + //---------------------------------- + case cimg::keyF : { + std::fprintf(stderr,"\n- Tracking mode (single region). Select starting region.\n"); std::fflush(stderr); + const CImg sel = coloredFA.get_select(disp,2,XYZ); + const unsigned int N = fibers.size(); + for (int z = sel[2]; z<=sel[5]; ++z) + for (int y = sel[1]; y<=sel[4]; ++y) + for (int x = sel[0]; x<=sel[3]; ++x) { + const CImg<> fiber = get_fibertrack(eigen,x,y,z,lmax,dl,famin,cmin); + if (fiber.width()>lmin) { + std::fprintf(stderr,"\rFiber %u : Starting from (%d,%d,%d)\t\t",fibers.size(),x,y,z); + fibers.insert(fiber); + } + } + std::fprintf(stderr,"\n- %u fiber(s) added (total %u).",fibers.size() - N,fibers.size()); + } break; + + // Track fiber bundle (double regions) + //------------------------------------ + case cimg::keyG : { + std::fprintf(stderr,"\n- Tracking mode (double region). Select starting region."); std::fflush(stderr); + const CImg sel = coloredFA.get_select(disp,2,XYZ); + std::fprintf(stderr," Select ending region."); std::fflush(stderr); + const CImg nsel = coloredFA.get_select(disp,2,XYZ); + const unsigned int N = fibers.size(); + + // Track from start to end + for (int z = sel[2]; z<=sel[5]; ++z) + for (int y = sel[1]; y<=sel[4]; ++y) + for (int x = sel[0]; x<=sel[3]; ++x) { + const CImg<> fiber = get_fibertrack(eigen,x,y,z,lmax,dl,famin,cmin); + if (fiber.width()>lmin) { + bool valid_fiber = false; + cimg_forX(fiber,k) { + const int fx = (int)fiber(k,0), fy = (int)fiber(k,1), fz = (int)fiber(k,2); + if (fx>=nsel[0] && fx<=nsel[3] && + fy>=nsel[1] && fy<=nsel[4] && + fz>=nsel[2] && fz<=nsel[5]) valid_fiber = true; + } + if (valid_fiber) fibers.insert(fiber); + } + } + + // Track from end to start + for (int z = nsel[2]; z<=nsel[5]; ++z) + for (int y = nsel[1]; y<=nsel[4]; ++y) + for (int x = nsel[0]; x<=nsel[3]; ++x) { + const CImg<> fiber = get_fibertrack(eigen,x,y,z,lmax,dl,famin,cmin); + if (fiber.width()>lmin) { + bool valid_fiber = false; + cimg_forX(fiber,k) { + const int fx = (int)fiber(k,0), fy = (int)fiber(k,1), fz = (int)fiber(k,2); + if (fx>=sel[0] && fx<=sel[3] && + fy>=sel[1] && fy<=sel[4] && + fz>=sel[2] && fz<=sel[5]) valid_fiber = true; + } + if (valid_fiber) { + std::fprintf(stderr,"\rFiber %u : Starting from (%d,%d,%d)\t\t",fibers.size(),x,y,z); + fibers.insert(fiber); + } + } + } + + std::fprintf(stderr," %u fiber(s) added (total %u).",fibers.size() - N,fibers.size()); + } break; + + // Clear fiber bundle + //------------------- + case cimg::keyC : { + std::fprintf(stderr,"\n- Fibers removed."); + fibers.assign(); + } break; + + // Save fibers + //------------- + case cimg::keyS : { + fibers.save("fibers.cimg"); + std::fprintf(stderr,"\n- Fibers saved."); + } break; + + } + } + + std::fprintf(stderr,"\n- Exit.\n\n\n"); + return 0; +} diff --git a/examples/edge_explorer2d.cpp b/examples/edge_explorer2d.cpp new file mode 100644 index 000000000..9d32ece44 --- /dev/null +++ b/examples/edge_explorer2d.cpp @@ -0,0 +1,218 @@ +/* + # + # File : edge_explorer2d.cpp + # ( C++ source file ) + # + # Description : Real time edge detection while moving a ROI + # (rectangle of interest) over the original image. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Orges Leka + # ( oleka(at)students.uni-mainz.de ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc, char** argv) { + + // Usage of the program displayed at the command line + cimg_usage("Real time edge detection with CImg. (c) Orges Leka"); + + // Read command line arguments + // With cimg_option we can get a new name for the image which is to be loaded from the command line. + const char* img_name = cimg_option("-i", cimg_imagepath "parrot.ppm","Input image."); + double + alpha = cimg_option("-a",1.0,"Blurring the gradient image."), + thresL = cimg_option("-tl",13.5,"Lower thresholding used in Hysteresis."), + thresH = cimg_option("-th",13.6,"Higher thresholding used in Hysteresis."); + const unsigned int + mode = cimg_option("-m",1,"Detection mode: 1 = Hysteresis, 2 = Gradient angle."), + factor = cimg_option("-s",80,"Half-size of edge-explorer window."); + + cimg_help("\nAdditional notes : user can press following keys on main display window :\n" + " - Left arrow : Decrease alpha.\n" + " - Right arrow : Increase alpha.\n"); + + // Construct a new image called 'edge' of size (2*factor,2*factor) + // and of type 'unsigned char'. + CImg edge(2*factor,2*factor); + CImgDisplay disp_edge(512,512,"Edge Explorer"); + + // Load the image with the name 'img_name' into the CImg 'img'. + // and create a display window 'disp' for the image 'img'. + const CImg img = CImg::get_load(img_name).norm().normalize(0,255); + CImgDisplay disp(img,"Original Image"); + + // Begin main interaction loop. + int x = 0, y = 0; + bool redraw = false; + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + disp.wait(100); + if (disp.button()&1) { alpha+=0.05; redraw = true; } + if (disp.button()&2) { alpha-=0.05; redraw = true; } + if (disp.wheel()) { alpha+=0.05*disp.wheel(); disp.set_wheel(); redraw = true; } + if (alpha<0) alpha = 0; + if (disp_edge.is_resized()) { disp_edge.resize(); redraw = true; } + if (disp_edge.is_closed()) disp_edge.show(); + if (disp.is_resized()) disp.resize(disp); + if (disp.mouse_x()>=0) { + x = disp.mouse_x(); // Getting the current position of the mouse + y = disp.mouse_y(); // + redraw = true; // The image should be redrawn + } + if (redraw) { + disp_edge.set_title("Edge explorer (alpha=%g)",alpha); + const int + x0 = x - factor, y0 = y - factor, // These are the coordinates for the red rectangle + x1 = x + factor, y1 = y + factor; // to be drawn on the original image + const unsigned char + red[3] = { 255,0,0 }, // + black[3] = { 0,0,0 }; // Defining the colors we need for drawing + + (+img).draw_rectangle(x0,y0,x1,y1,red,1.0f,0x55555555U).display(disp); + //^ We draw the red rectangle on the original window using 'draw_line'. + // Then we display the result via '.display(disp)' . + // Observe, that the color 'red' has to be of type 'const unsigned char', + // since the image 'img' is of type 'const CImg'. + + //'normalize' is used to get a greyscaled image. + CImg<> visu_bw = CImg<>(img).get_crop(x0,y0,x1,y1).get_norm().normalize(0,255).resize(-100,-100,1,2,2); + // get_crop(x0,y0,x1,y1) gets the rectangle we are interested in. + + edge.fill(255); // Background color in the edge-detection window is white + + // grad[0] is the gradient image of 'visu_bw' in x-direction. + // grad[1] is the gradient image of 'visu_bw' in y-direction. + CImgList<> grad(visu_bw.blur((float)alpha).normalize(0,255).get_gradient()); + + // To avoid unnecessary calculations in the image loops: + const double + pi = cimg::PI, + p8 = pi/8.0, p38 = 3.0*p8, + p58 = 5.0*p8, p78 = 7.0*p8; + + cimg_forXY(visu_bw,s,t) { + // We take s,t instead of x,y, since x,y are already used. + // s corresponds to the x-ordinate of the pixel while t corresponds to the y-ordinate. + if ( 1 <= s && s <= visu_bw.width() - 1 && 1 <= t && t <=visu_bw.height() - 1) { // if - good points + double + Gs = grad[0](s,t), // + Gt = grad[1](s,t), // The actual pixel is (s,t) + Gst = cimg::abs(Gs) + cimg::abs(Gt), // + // ^-- For efficient computation we observe that |Gs|+ |Gt| ~=~ sqrt( Gs^2 + Gt^2) + Gr, Gur, Gu, Gul, Gl, Gdl, Gd, Gdr; + // ^-- right, up right, up, up left, left, down left, down, down right. + double theta = std::atan2(std::max(1e-8,Gt),Gs) + pi; // theta is from the interval [0,Pi] + switch(mode) { + case 1: // Hysterese is applied + if (Gst>=thresH) { edge.draw_point(s,t,black); } + else if (thresL <= Gst && Gst < thresH) { + // Neighbourhood of the actual pixel: + Gr = cimg::abs(grad[0](s + 1,t)) + cimg::abs(grad[1](s + 1,t)); // right + Gl = cimg::abs(grad[0](s - 1,t)) + cimg::abs(grad[1](s - 1,t)); // left + Gur = cimg::abs(grad[0](s + 1,t + 1)) + cimg::abs(grad[1](s + 1,t + 1)); // up right + Gdl = cimg::abs(grad[0](s - 1,t - 1)) + cimg::abs(grad[1](s - 1,t - 1)); // down left + Gu = cimg::abs(grad[0](s,t + 1)) + cimg::abs(grad[1](s,t + 1)); // up + Gd = cimg::abs(grad[0](s,t - 1)) + cimg::abs(grad[1](s,t - 1)); // down + Gul = cimg::abs(grad[0](s - 1,t + 1)) + cimg::abs(grad[1](s - 1,t + 1)); // up left + Gdr = cimg::abs(grad[0](s + 1,t - 1)) + cimg::abs(grad[1](s + 1,t - 1)); // down right + if (Gr>=thresH || Gur>=thresH || Gu>=thresH || Gul>=thresH + || Gl>=thresH || Gdl >=thresH || Gu >=thresH || Gdr >=thresH) { + edge.draw_point(s,t,black); + } + }; + break; + case 2: // Angle 'theta' of the gradient (Gs,Gt) at the point (s,t) + if(theta >= pi)theta-=pi; + //rounding theta: + if ((p8 < theta && theta <= p38 ) || (p78 < theta && theta <= pi)) { + // See (*) below for explanation of the vocabulary used. + // Direction-pixel is (s + 1,t) with corresponding gradient value Gr. + Gr = cimg::abs(grad[0](s + 1,t)) + cimg::abs(grad[1](s + 1,t)); // right + // Contra-direction-pixel is (s - 1,t) with corresponding gradient value Gl. + Gl = cimg::abs(grad[0](s - 1,t)) + cimg::abs(grad[1](s - 1,t)); // left + if (Gr < Gst && Gl < Gst) { + edge.draw_point(s,t,black); + } + } + else if ( p8 < theta && theta <= p38) { + // Direction-pixel is (s + 1,t + 1) with corresponding gradient value Gur. + Gur = cimg::abs(grad[0](s + 1,t + 1)) + cimg::abs(grad[1](s + 1,t + 1)); // up right + // Contra-direction-pixel is (s-1,t-1) with corresponding gradient value Gdl. + Gdl = cimg::abs(grad[0](s - 1,t - 1)) + cimg::abs(grad[1](s - 1,t - 1)); // down left + if (Gur < Gst && Gdl < Gst) { + edge.draw_point(s,t,black); + } + } + else if ( p38 < theta && theta <= p58) { + // Direction-pixel is (s,t + 1) with corresponding gradient value Gu. + Gu = cimg::abs(grad[0](s,t + 1)) + cimg::abs(grad[1](s,t + 1)); // up + // Contra-direction-pixel is (s,t - 1) with corresponding gradient value Gd. + Gd = cimg::abs(grad[0](s,t - 1)) + cimg::abs(grad[1](s,t - 1)); // down + if (Gu < Gst && Gd < Gst) { + edge.draw_point(s,t,black); + } + } + else if (p58 < theta && theta <= p78) { + // Direction-pixel is (s - 1,t + 1) with corresponding gradient value Gul. + Gul = cimg::abs(grad[0](s - 1,t + 1)) + cimg::abs(grad[1](s - 1,t + 1)); // up left + // Contra-direction-pixel is (s + 1,t - 1) with corresponding gradient value Gdr. + Gdr = cimg::abs(grad[0](s + 1,t - 1)) + cimg::abs(grad[1](s + 1,t - 1)); // down right + if (Gul < Gst && Gdr < Gst) { + edge.draw_point(s,t,black); + } + }; + break; + } // switch + } // if good-points + } // cimg_forXY */ + edge.display(disp_edge); + }// if redraw + } // while + return 0; +} + +// (*) Comments to the vocabulary used: +// If (s,t) is the current pixel, and G=(Gs,Gt) is the gradient at (s,t), +// then the _direction_pixel_ of (s,t) shall be the one of the eight neighbour pixels +// of (s,t) in whose direction the gradient G shows. +// The _contra_direction_pixel is the pixel in the opposite direction in which the gradient G shows. +// The _corresponding_gradient_value_ of the pixel (x,y) with gradient G = (Gx,Gy) +// shall be |Gx| + |Gy| ~=~ sqrt(Gx^2 + Gy^2). diff --git a/examples/fade_images.cpp b/examples/fade_images.cpp new file mode 100644 index 000000000..d11bafc43 --- /dev/null +++ b/examples/fade_images.cpp @@ -0,0 +1,94 @@ +/* + # + # File : fade_images.cpp + # ( C++ source file ) + # + # Description : Compute a linear fading between two images. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif +#undef min +#undef max + +// Main procedure +//--------------- +int main(int argc,char **argv) { + + // Read and check command line parameters. + cimg_usage("Compute a linear fading between two 2D images"); + const char *file_i1 = cimg_option("-i1",cimg_imagepath "sh0r.pgm","Input Image 1"); + const char *file_i2 = cimg_option("-i2",cimg_imagepath "milla.bmp","Input Image 2"); + const char *file_o = cimg_option("-o",(char*)0,"Output Image"); + const bool visu = cimg_option("-visu",true,"Visualization mode"); + const double pmin = cimg_option("-min",40.0,"Begin of the fade (in %)")/100.0; + const double pmax = cimg_option("-max",60.0,"End of the fade (in %)")/100.0; + const double angle = cimg_option("-angle",0.0,"Fade angle")*cil::cimg::PI/180; + + // Init images. + cil::CImg img1(file_i1), img2(file_i2); + if (!img2.is_sameXYZC(img1)) { + int + dx = std::max(img1.width(),img2.width()), + dy = std::max(img1.height(),img2.height()), + dz = std::max(img1.depth(),img2.depth()), + dv = std::max(img1.spectrum(),img2.spectrum()); + img1.resize(dx,dy,dz,dv,3); + img2.resize(dx,dy,dz,dv,3); + } + cil::CImg dest(img1); + + // Compute the faded image. + const double ca = std::cos(angle), sa = std::sin(angle); + double alpha; + cimg_forXYZC(dest,x,y,z,k) { + const double X = ((double)x/img1.width() - 0.5)*ca + ((double)y/img1.height() - 0.5)*sa; + if (X + 0.5pmax) alpha = 1; else + alpha = (X + 0.5 - pmin)/(pmax - pmin); + } + dest(x,y,z,k) = (unsigned char)((1 - alpha)*img1(x,y,z,k) + alpha*img2(x,y,z,k)); + } + + // Save and exit + if (file_o) dest.save(file_o); + if (visu) dest.display("Image fading"); + return 0; +} diff --git a/examples/gaussian_fit1d.cpp b/examples/gaussian_fit1d.cpp new file mode 100644 index 000000000..bfcce568d --- /dev/null +++ b/examples/gaussian_fit1d.cpp @@ -0,0 +1,172 @@ +/* + # + # File : gaussian_fit1d.cpp + # ( C++ source file ) + # + # Description : Fit a gaussian function on a set of sample points, + # using the Levenberg-Marquardt algorithm. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_plugin +#define cimg_plugin "examples/gaussian_fit1d.cpp" +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Main procedure +//---------------- +int main(int argc,char **argv) { + cimg_usage("Fit gaussian function on sample points, using Levenberg-Marquardt algorithm."); + + // Read command line arguments. + const char *s_params = cimg_option("-p","10,3,4","Amplitude, Mean and Std of the ground truth"); + const unsigned int s_nb = cimg_option("-N",40,"Number of sample points"); + const float s_noise = cimg_option("-n",10.0f,"Pourcentage of noise on the samples points"); + const char *s_xrange = cimg_option("-x","-10,10","X-range allowed for the sample points"); + const char *f_params = cimg_option("-p0",(char*)0,"Amplitude, Mean and Std of the first estimate"); + const float f_lambda0 = cimg_option("-l",100.0f,"Initial damping factor"); + const float f_dlambda = cimg_option("-dl",0.9f,"Damping attenuation"); + float s_xmin = -10, s_xmax = 10, s_amp = 1, s_mean = 1, s_std = 1; + std::sscanf(s_xrange,"%f%*c%f",&s_xmin,&s_xmax); + std::sscanf(s_params,"%f%*c%f%*c%f",&s_amp,&s_mean,&s_std); + + // Create noisy samples of a Gaussian function. + const float s_std2 = 2*s_std*s_std, s_fact = s_amp/((float)std::sqrt(2*cimg::PI)*s_std); + CImg<> samples(s_nb,2); + cimg_forX(samples,i) { + const float + x = (float)(s_xmin + (s_xmax - s_xmin)*cimg::rand()), + y = s_fact*(float)(1 + s_noise*cimg::grand()/100)*std::exp(-cimg::sqr(x - s_mean)/s_std2); + samples(i,0) = x; + samples(i,1) = y; + } + + // Fit Gaussian function on the sample points and display curve iterations. + CImgDisplay disp(640,480,"Levenberg-Marquardt Gaussian Fitting",0); + float f_amp = 1, f_mean = 1, f_std = 1, f_lambda = f_lambda0; + if (f_params) std::sscanf(f_params,"%f%*c%f%*c%f",&f_amp,&f_mean,&f_std); + else { + const float& vmax = samples.get_shared_row(1).max(); + float cmax = 0; samples.contains(vmax,cmax); + f_mean = samples((int)cmax,0); + f_std = (s_xmax - s_xmin)/10; + f_amp = vmax*(float)std::sqrt(2*cimg::PI)*f_std; + } + CImg<> beta = CImg<>::vector(f_amp,f_mean,f_std); + for (unsigned int iter = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ++iter) { + + // Do one iteration of the Levenberg-Marquardt algorithm. + CImg<> YmF(1,s_nb), J(beta.height(),s_nb); + const float + _f_amp = beta(0), _f_mean = beta(1), _f_std = beta(2), + _f_std2 = 2*_f_std*_f_std, _f_fact = (float)std::sqrt(2*cimg::PI)*_f_std; + float _f_error = 0; + cimg_forY(J,i) { + const float + x = samples(i,0), + _f_exp = std::exp(-cimg::sqr(x - _f_mean)/_f_std2), + delta = samples(i,1) - _f_amp*_f_exp/_f_fact; + YmF(i) = delta; + J(0,i) = _f_exp/_f_fact; + J(1,i) = _f_amp*_f_exp/_f_fact*(x - _f_mean)*2/_f_std2; + J(2,i) = _f_amp*_f_exp/_f_fact*(cimg::sqr(x - _f_mean)/(_f_std*_f_std*_f_std)); + _f_error+=cimg::sqr(delta); + } + + CImg<> Jt = J.get_transpose(), M = Jt*J; + cimg_forX(M,x) M(x,x)*=1 + f_lambda; + beta+=M.get_invert()*Jt*YmF; + if (beta(0)<=0) beta(0) = 0.1f; + if (beta(2)<=0) beta(2) = 0.1f; + f_lambda*=f_dlambda; + + // Display fitting curves. + const unsigned char black[] = { 0,0,0 }, gray[] = { 228,228,228 }; + CImg(disp.width(),disp.height(),1,3,255). + draw_gaussfit(samples,beta(0),beta(1),beta(2),s_amp,s_mean,s_std). + draw_rectangle(5,7,150,100,gray,0.9f).draw_rectangle(5,7,150,100,black,1,~0U). + draw_text(10,10,"Iteration : %d",black,0,1,13,iter). + draw_text(10,25,"Amplitude : %.4g (%.4g)",black,0,1,13,beta(0),s_amp). + draw_text(10,40,"Mean : %.4g (%.4g)",black,0,1,13,beta(1),s_mean). + draw_text(10,55,"Std : %.4g (%.4g)",black,0,1,13,beta(2),s_std). + draw_text(10,70,"Error : %.4g",black,0,1,13,std::sqrt(_f_error)). + draw_text(10,85,"Lambda : %.4g",black,0,1,13,f_lambda). + display(disp.resize(false).wait(20)); + } + + return 0; +} + +#else + +// Draw sample points, ideal and fitted gaussian curves on the instance image. +// (defined as a CImg plug-in function). +template +CImg& draw_gaussfit(const CImg& samples, + const float f_amp, const float f_mean, const float f_std, + const float i_amp, const float i_mean, const float i_std) { + if (is_empty()) return *this; + const unsigned char black[] = { 0,0,0 }, green[] = { 10,155,20 }, orange[] = { 155,20,0 }, purple[] = { 200,10,200 }; + float + xmin, xmax = samples.get_shared_row(0).max_min(xmin), deltax = xmax - xmin, + ymin, ymax = samples.get_shared_row(1).max_min(ymin), deltay = ymax - ymin; + xmin-=0.2f*deltax; xmax+=0.2f*deltax; ymin-=0.2f*deltay; ymax+=0.2f*deltay; + deltax = xmax - xmin; deltay = ymax - ymin; + draw_grid(64,64,0,0,false,false,black,0.3f,0x55555555,0x55555555).draw_axes(xmin,xmax,ymax,ymin,black,0.8f); + CImg<> nsamples(samples); + (nsamples.get_shared_row(0)-=xmin)*=width()/deltax; + (nsamples.get_shared_row(1)-=ymax)*=-height()/deltay; + cimg_forX(nsamples,i) draw_circle((int)nsamples(i,0),(int)nsamples(i,1),3,orange,1,~0U); + CImg truth(width(),2), fit(width(),2); + const float + i_std2 = 2*i_std*i_std, i_fact = i_amp/((float)std::sqrt(2*cimg::PI)*i_std), + f_std2 = 2*f_std*f_std, f_fact = f_amp/((float)std::sqrt(2*cimg::PI)*f_std); + cimg_forX(*this,x) { + const float + x0 = xmin + x*deltax/width(), + ys0 = i_fact*std::exp(-cimg::sqr(x0 - i_mean)/i_std2), + yf0 = f_fact*std::exp(-cimg::sqr(x0 - f_mean)/f_std2); + fit(x,0) = truth(x,0) = x; + truth(x,1) = (int)((ymax - ys0)*height()/deltay); + fit(x,1) = (int)((ymax - yf0)*height()/deltay); + } + return draw_line(truth,green,0.7f,0xCCCCCCCC).draw_line(fit,purple); +} + +#endif diff --git a/examples/generate_loop_macros.cpp b/examples/generate_loop_macros.cpp new file mode 100644 index 000000000..7f8feb2e9 --- /dev/null +++ b/examples/generate_loop_macros.cpp @@ -0,0 +1,353 @@ +/* + # + # File : generate_loop_macros.cpp + # ( C++ source file ) + # + # Description : Generate C++ macros to deal with MxN[xP] neighborhood + # loops within the CImg Library. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; + +// Generate macro(s) 'cimg_forN(i,bound)' +//---------------------------------------- +void generate_forN(const unsigned int N) { + if (N>=2) { + const unsigned int Nn = N/2, Np = Nn - ((N + 1)%2); + std::printf("#define cimg_for%u(bound,i) for (int i = 0, \\\n",N); + for (unsigned int k = 0; k=(int)(bound)?(int)(bound) - 1:%u%c \\\n",k,k,k,k==Nn?';':','); + std::printf(" _n%u##i<(int)(bound) || ",Nn); + for (unsigned int k = Nn - 1; k>=1; --k) std::printf("_n%u##i==--_n%u##i || ",k,k + 1); + std::printf("\\\n i==("); + for (unsigned int k = Nn; k>=2; --k) std::printf("_n%u##i = ",k); + std::printf("--_n1##i); \\\n "); + for (unsigned int k = Np; k>=2; --k) std::printf("_p%u##i = _p%u##i, ",k,k - 1); + if (Np) std::printf("_p1##i = i++, \\\n "); + else std::printf(" ++i, "); + for (unsigned int k = 1; k=2) { + const unsigned int Nn = N/2, Np = Nn - ((N + 1)%2); + std::printf("#define cimg_for_in%u(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \\\n",N); + for (unsigned int k = 0; k=(int)(bound)?(int)(bound) - 1:i + %u%c \\\n",k,k,k,k==Nn?';':','); + std::printf(" i<=(int)(i1) && (_n%u##i<(int)(bound) || ",Nn); + for (unsigned int k = Nn - 1; k>=1; --k) std::printf("_n%u##i==--_n%u##i || ",k,k + 1); + std::printf("\\\n i==("); + for (unsigned int k = Nn; k>=2; --k) std::printf("_n%u##i = ",k); + std::printf("--_n1##i)); \\\n "); + for (unsigned int k = Np; k>=2; --k) std::printf("_p%u##i = _p%u##i, ",k,k - 1); + if (Np) std::printf("_p1##i = i++, \\\n "); + else std::printf(" ++i, "); + for (unsigned int k = 1; k1) std::printf("#define cimg_for%ux%ux%u(img,x,y,z,c,I,T) \\\n cimg_for%u((img)._depth,z)",M,N,P,P); + else std::printf("#define cimg_for%ux%u(img,x,y,z,c,I,T) \\\n",M,N); + if (N>1) std::printf(" cimg_for%u((img)._height,y) ",N); + else std::printf(" cimg_forY(img,y) "); + + std::printf("for (int x = 0%c \\\n",M>1?',':';'); + for (int k = Mp; k>=1; --k) std::printf(" _p%u##x = 0%s",k,k==1?", \\\n":","); + for (int k = 1; k=((img)._width)?(img).width() - 1:%u, \\\n",k,k,k); + + if (M>1) { + std::printf(" _n%u##x = (int)( \\\n ",Mn); + for (int k = 0, z = -Pp; z<=Pn; ++z) + for (int y = -Np; y<=Nn; ++y) { + for (int x = -Mp; x<=0; ++x) { std::printf("%sI[%d] =",k && x==-Mp?" (":(x==-Mp?"(":" "),k); ++k; } + k+=Mn; + if (y<0) std::sprintf(indy,"_p%d##",-y); else if (y>0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" (T)(img)(0,%sy,%sz,c))%s",indy,indz,k>=last?",":", \\\n"); + } + + std::printf(" \\\n"); + for (int x = 1; x0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" (I[%d] = (T)(img)(_n%d##x,%sy,%sz,c)), \\\n",(Mp + x) + (y + Np)*M + (z + Pp)*M*N,x,indy,indz); + } + std::printf(" %u>=((img)._width)?(img).width() - 1:%u); \\\n",Mn,Mn); + } + + if (M>1) std::printf(" (_n%u##x",Mn); else std::printf(" (x"); + std::printf("<(img).width() && ( \\\n"); + + for (int z = -Pp; z<=Pn; ++z) + for (int y = -Np; y<=Nn; ++y) { + if (M>1) std::sprintf(indx,"_n%d##",Mn); else indx[0]='\0'; + if (y<0) std::sprintf(indy,"_p%d##",-y); else if (y>0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" (I[%d] = (T)(img)(%sx,%sy,%sz,c))%s",M - 1 + (y + Np)*M + (z + Pp)*M*N,indx,indy,indz, + z==Pn && y==Nn?",1))":", \\\n"); + } + + if (M>1) { + std::printf(" || \\\n "); + for (int k = Mn - 1; k>=1; --k) std::printf("_n%d##x==--_n%u##x || ",k,k + 1); + std::printf("x==("); + for (int k = Mn; k>=2; --k) std::printf("_n%d##x = ",k); + std::printf("--_n1##x); \\\n"); + } else std::printf("; \\\n"); + + if (M>1) { + for (unsigned int k = 0, z = 0; z=2; --k) std::printf("_p%d##x = _p%d##x, ",k,k - 1); + if (M>2) std::printf("_p1##x = x++, "); else std::printf("++x, "); + for (int k = 1; k<=Mn - 1; ++k) std::printf("++_n%d##x, ",k); + std::printf("++_n%d##x)\n\n",Mn); + } else std::printf(" ++x)\n\n"); +} + +// Generate macro 'cimg_for_inMxN[xP](img,x,y,z,c,I,T)' +//----------------------------------------------------- +void generate_for_inMxNxP(const unsigned int M, const unsigned int N, const unsigned int P) { + char indx[16], indy[16], indz[16]; + const int + Mn = (int)(M/2), Mp = (int)(Mn - ((M + 1)%2)), + Nn = (int)(N/2), Np = (int)(Nn - ((N + 1)%2)), + Pn = (int)(P/2), Pp = (int)(Pn - ((P + 1)%2)); + + if (P>1) + std::printf("#define cimg_for_in%ux%ux%u(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \\\n " + "cimg_for_in%u((img)._depth,z0,z1,z)",M,N,P,P); + else std::printf("#define cimg_for_in%ux%u(img,x0,y0,x1,y1,x,y,z,c,I,T) \\\n",M,N); + if (N>1) std::printf(" cimg_for_in%u((img)._height,y0,y1,y) ",N); + else std::printf(" cimg_for_inY(img,y0,y1,y) "); + + std::printf("for (int x = (int)(x0)<0?0:(int)(x0)%c \\\n",M>1?',':';'); + for (int k = Mp; k>=1; --k) std::printf(" _p%u##x = x - %u<0?0:x - %u, \\\n",k,k,k); + for (int k = 1; k=(img).width()?(img).width() - 1:x + %u, \\\n",k,k,k); + + if (M>1) { + std::printf(" _n%u##x = (int)( \\\n",Mn); + for (int x = -Mp; x0) std::sprintf(indx,"_n%d##",x); else indx[0]='\0'; + if (y<0) std::sprintf(indy,"_p%d##",-y); else if (y>0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" (I[%d] = (T)(img)(%sx,%sy,%sz,c)), \\\n",(Mp + x) + (y + Np)*M + (z + Pp)*M*N,indx,indy,indz); + } + std::printf(" x + %u>=(img).width()?(img).width() - 1:x + %u); \\\n",Mn,Mn); + } + std::printf(" x<=(int)(x1) && ("); + if (M>1) std::printf("(_n%u##x",Mn); else std::printf("(x"); + std::printf("<(img).width() && ( \\\n"); + + for (int z = -Pp; z<=Pn; ++z) + for (int y = -Np; y<=Nn; ++y) { + if (M>1) std::sprintf(indx,"_n%d##",Mn); else indx[0]='\0'; + if (y<0) std::sprintf(indy,"_p%d##",-y); else if (y>0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" (I[%d] = (T)(img)(%sx,%sy,%sz,c))%s",M - 1 + (y + Np)*M + (z + Pp)*M*N,indx,indy,indz, + z==Pn && y==Nn?",1))":", \\\n"); + } + + if (M>1) { + std::printf(" || \\\n "); + for (int k = Mn - 1; k>=1; --k) std::printf("_n%d##x==--_n%u##x || ",k,k + 1); + std::printf("x==("); + for (int k = Mn; k>=2; --k) std::printf("_n%d##x = ",k); + std::printf("--_n1##x)); \\\n"); + } else std::printf("); \\\n"); + + if (M>1) { + for (unsigned int k = 0, z = 0; z=2; --k) std::printf("_p%d##x = _p%d##x, ",k,k - 1); + if (M>2) std::printf("_p1##x = x++, "); else std::printf("++x, "); + for (int k = 1; k<=Mn - 1; ++k) std::printf("++_n%d##x, ",k); + std::printf("++_n%d##x)\n\n",Mn); + } else std::printf(" ++x)\n\n"); +} + +// Generate macro 'cimg_getMxN[xP](img,x,y,z,c,I,T)' +//-------------------------------------------------- +void generate_getMxNxP(const unsigned int M, const unsigned int N, const unsigned int P) { + const int + Mn = (int)(M/2), Mp = (int)(Mn - ((M + 1)%2)), + Nn = (int)(N/2), Np = (int)(Nn - ((N + 1)%2)), + Pn = (int)(P/2), Pp = (int)(Pn - ((P + 1)%2)), + last = M*N*P - 1; + if (P>1) std::printf("#define cimg_get%ux%ux%u(img,x,y,z,c,I,T) \\\n",M,N,P); + else std::printf("#define cimg_get%ux%u(img,x,y,z,c,I,T) \\\n",M,N); + char indx[16], indy[16], indz[16]; + for (int k = 0, z = -Pp; z<=Pn; ++z) + for (int y = -Np; y<=Nn; ++y) + for (int x = -Mp; x<=Mn; ++x) { + if (x<0) std::sprintf(indx,"_p%d##",-x); else if (x>0) std::sprintf(indx,"_n%d##",x); else indx[0]='\0'; + if (y<0) std::sprintf(indy,"_p%d##",-y); else if (y>0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" I[%u] = (T)(img)(%sx,%sy,%sz,c)%s",k,indx,indy,indz, + k==last?";\n\n":(x==Mn?", \\\n":",")); + ++k; + } +} + +//----------------- +// Main Procedure +//----------------- +int main(int argc, char **argv) { + + cimg_usage("Generate C++ macros to deal with MxN[xP] neighborhood loops within the CImg Library"); + + // Read command line arguments + //---------------------------- + const char *const size = cimg_option("-s","5x4","Size of the neighborhood"); + const bool do_forN = cimg_option("-forN",true,"Generate 'cimg_forN()'"); + const bool do_for_inN = cimg_option("-for_inN",true,"Generate 'cimg_for_inN()'"); + const bool do_for = cimg_option("-for",true,"Generate 'cimg_forMxNxP()'"); + const bool do_for_in = cimg_option("-for_in",true,"Generate 'cimg_for_inMxNxP()'"); + const bool do_get = cimg_option("-get",true,"Generate 'cimg_getMxNxP()'"); + if (cimg_option("-h",false,0)) std::exit(0); + + unsigned int M = 1, N = 1 , P = 1; + std::sscanf(size,"%u%*c%u%*c%u",&M,&N,&P); + if (!M || !N || !P || (M==1 && N==1 && P==1)) { + std::fprintf(stderr,"\n%s : Error, bad neighborhood size '%s'\n",argv[0],size); + std::exit(0); + } + if (!do_forN && !do_get && !do_for) return 0; + + if (P>1) + std::printf("// Define %ux%ux%u loop macros\n" + "//----------------------------\n",M,N,P); + else + std::printf("// Define %ux%u loop macros\n" + "//-------------------------\n",M,N); + + if (do_forN) { + if (N>1) generate_forN(N); + if (P>1 && P!=N) generate_forN(P); + } + if (do_for_inN) { + if (N>1) generate_for_inN(N); + if (P>1 && P!=N) generate_for_inN(P); + } + if (do_for) generate_forMxNxP(M,N,P); + if (do_for_in) generate_for_inMxNxP(M,N,P); + if (do_get) generate_getMxNxP(M,N,P); + + return 0; +} diff --git a/examples/hough_transform2d.cpp b/examples/hough_transform2d.cpp new file mode 100644 index 000000000..91302ca6c --- /dev/null +++ b/examples/hough_transform2d.cpp @@ -0,0 +1,146 @@ +/* + # + # File : hough_transform2d.cpp + # ( C++ source file ) + # + # Description : Implementation of the Hough transform. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc,char **argv) { + cimg_usage("Illustration of the Hough transform"); + CImg src(cimg_option("-i",cimg_imagepath "parrot.ppm","Input image")); + CImg<> vote(500,400,1,1,0), img = src.get_norm().normalize(0,255).resize(-100,-100,1,2,2); + + CImgDisplay disp(src,"Image"), dispvote(vote,"Hough Transform"); + const unsigned char col1[3]={255,255,255}, col2[3]={0,0,0}; + const double + alpha = cimg_option("-a",1.5,"Gradient smoothing"), + sigma = cimg_option("-s",0.5,"Hough Transform smoothing"), + rhomax = std::sqrt((double)(img.width()*img.width() + img.height()*img.height()))/2, + thetamax = 2*cimg::PI; + + if (cimg::dialog(cimg::basename(argv[0]), + "Instructions : \n" + "----------------\n\n" + "(1) When clicking on the color image, all lines crossing the selected point\n" + "will be voted in the Hough buffer.\n\n" + "(2) When clicking on the Hough buffer, the corresponding line is drawn\n" + "on the color image.\n\n" + "(3) When pressing the space bar, lines in the color image are detected from the\n" + "image gradients through votes in the Hough buffer.\n\n" + "Note that a logarithmic scaling is performed for displayin the vote image.\n" + "See also the available options (option '-h')\n","Start !","Quit",0,0,0,0, + src.get_resize(100,100,1,3),true)) std::exit(0); + + while (!disp.is_closed() && !dispvote.is_closed() && + !disp.is_keyQ() && !dispvote.is_keyQ() && !disp.is_keyESC() && !dispvote.is_keyESC()) { + + CImgDisplay::wait(disp,dispvote); + + // When pressing space bar, the vote is performed from the image gradients. + if (dispvote.is_keySPACE() || disp.is_keySPACE()) { + CImgList<> grad = img.get_gradient(); + cimglist_for(grad,l) grad[l].blur((float)alpha); + vote.fill(0); + cimg_forXY(img,x,y) { + const double + X = (double)x - img.width()/2, + Y = (double)y - img.height()/2, + gx = grad[0](x,y), + gy = grad[1](x,y); + double + theta = std::atan2(gy,gx), + rho = std::sqrt(X*X + Y*Y)*std::cos(std::atan2(Y,X) - theta); + if (rho<0) { rho=-rho; theta+=cimg::PI; } + theta = cimg::mod(theta,thetamax); + vote((int)(theta*dispvote.width()/thetamax),(int)(rho*dispvote.height()/rhomax))+= + (float)std::sqrt(gx*gx + gy*gy); + } + vote.blur((float)sigma); + CImg<> vote2(vote); cimg_forXY(vote2,x,y) vote2(x,y) = (float)std::log(1 + vote(x,y)); vote2.display(dispvote); + } + + // When clicking on the vote window. + if (dispvote.button()) { + const double + rho = dispvote.mouse_y()*rhomax/dispvote.height(), + theta = dispvote.mouse_x()*thetamax/dispvote.width(), + x = img.width()/2 + rho*std::cos(theta), + y = img.height()/2 + rho*std::sin(theta); + const int + x0 = (int)(x + 1000*std::sin(theta)), + y0 = (int)(y - 1000*std::cos(theta)), + x1 = (int)(x - 1000*std::sin(theta)), + y1 = (int)(y + 1000*std::cos(theta)); + CImg(src). + draw_line(x0,y0,x1,y1,col1,1.0f,0xF0F0F0F0).draw_line(x0,y0,x1,y1,col2,1.0f,0x0F0F0F0F). + draw_line(x0 + 1,y0,x1 + 1,y1,col1,1.0f,0xF0F0F0F0).draw_line(x0 + 1,y0,x1 + 1,y1,col2,1.0f,0x0F0F0F0F). + draw_line(x0,y0 + 1,x1,y1 + 1,col1,1.0f,0xF0F0F0F0).draw_line(x0,y0 + 1,x1,y1 + 1,col2,1.0f,0x0F0F0F0F). + display(disp); + } + + // When clicking on the image. + if (disp.button() && disp.mouse_x()>=0) { + const double + x0 = (double)disp.mouse_x() - disp.width()/2, + y0 = (double)disp.mouse_y() - disp.height()/2, + rho0 = std::sqrt(x0*x0 + y0*y0), + theta0 = std::atan2(y0,x0); + + for (double t=0; t vote2(vote); cimg_forXY(vote2,x,y) vote2(x,y) = (float)std::log(1 + vote(x,y)); vote2.display(dispvote); + } + dispvote.resize(dispvote); + disp.resize(disp); + } + + std::exit(0); + return 0; +} diff --git a/examples/image2ascii.cpp b/examples/image2ascii.cpp new file mode 100644 index 000000000..04a831479 --- /dev/null +++ b/examples/image2ascii.cpp @@ -0,0 +1,157 @@ +/* + # + # File : image2ascii.cpp + # ( C++ source file ) + # + # Description : A basic image to ASCII-art converter. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Tell CImg not to use display capabilities. +#undef cimg_display +#define cimg_display 0 +#include "CImg.h" +using namespace cimg_library; + +/*--------------------------- + + Main procedure + + --------------------------*/ +int main(int argc,char **argv) { + cimg_usage("A simple image to ASCII-art converter.\n\nUsage : image2ascii [options] image"); + + // Read command line parameters + const char *const file_i = cimg_option("-i",(char*)0,"Input image"); + const char *const geom = cimg_option("-g","79x40","Output size"); + const int alphabet = cimg_option("-a",0,"Alphabet type (0=full, 1=numbers, 2=letters, 3=signs, 4=minimal"); + const bool invert = cimg_option("-invert",false,"Invert image intensities"); + const float contour = (float)cimg_option("-contour",0.0f,"Use image contours higher than specified threshold"); + const float blur = (float)cimg_option("-blur",0.8f,"Image pre-blur"); + const float sigma = (float)cimg_option("-sigma",10.0f,"Font pre-blur"); + + int w = 79, h = 40; + std::sscanf(geom,"%d%*c%d",&w,&h); + if (cimg_option("-h",false,0)) std::exit(0); + + // Init fonts + CImgList<> font_full = CImgList<>::font(13,false); + font_full.remove(0,255); + const int fw = font_full[(int)'A'].width(), fh = font_full[(int)'A'].height(); + CImgList<> font, font_blur; + CImgList font_code; + + switch (alphabet) { + case 1: { + font_code.insert(CImg<>::vector(' ')); + for (unsigned char l='0'; l<='9'; l++) font_code.insert(CImg<>::vector(l)); + } break; + case 2: { + font_code.insert(CImg<>::vector(' ')); + for (unsigned char l='A'; l<='Z'; l++) font_code.insert(CImg<>::vector(l)); + } break; + case 3: { + font_code.insert(CImg<>::vector(' ')); + font_code.insert(CImg<>::vector('-')); + font_code.insert(CImg<>::vector('_')); + font_code.insert(CImg<>::vector('|')); + font_code.insert(CImg<>::vector('/')); + font_code.insert(CImg<>::vector('\\')); + font_code.insert(CImg<>::vector('+')); + font_code.insert(CImg<>::vector('.')); + font_code.insert(CImg<>::vector('*')); + font_code.insert(CImg<>::vector('=')); + font_code.insert(CImg<>::vector(']')); + font_code.insert(CImg<>::vector('[')); + font_code.insert(CImg<>::vector('(')); + font_code.insert(CImg<>::vector(')')); + font_code.insert(CImg<>::vector('{')); + font_code.insert(CImg<>::vector('}')); + font_code.insert(CImg<>::vector('"')); + font_code.insert(CImg<>::vector('!')); + font_code.insert(CImg<>::vector('$')); + } break; + case 4: { + font_code.insert(CImg<>::vector(' ')); + font_code.insert(CImg<>::vector('.')); + font_code.insert(CImg<>::vector('/')); + font_code.insert(CImg<>::vector('\\')); + font_code.insert(CImg<>::vector('_')); + font_code.insert(CImg<>::vector('_')); + font_code.insert(CImg<>::vector('|')); + } break; + default: { for (unsigned char l=' '; l<='~'; l++) font_code.insert(CImg<>::vector(l)); } break; + } + cimglist_for(font_code,l) { + font.insert(font_full(font_code[l](0))); + font_blur.insert(font[l].get_resize(fw,fh,1,1).blur(sigma).normalize(0,255)); + } + + // Init images + CImg<> img; + if (!file_i) { float white[3] = { 255,255,255 }; img.assign().draw_text(0,0," CImg\nRocks !",white); } + else img.assign(file_i); + img.norm().resize(fw*w,fh*h); + if (blur) img.blur(blur); + if (contour>0) { + CImgList<> grad = img.get_gradient("xy",4); + img = (grad[0].pow(2) + grad[1].pow(2)).sqrt().normalize(0,100).threshold(contour); + } + img.normalize(0,255); + if (invert) img = 255.0f - img; + CImg dest(w,h,1,1,0); + + // Render ASCII-art image, using a simple correlation method. + CImg<> neigh; + cimg_forY(dest,y) { cimg_forX(dest,x) { + neigh = img.get_crop(x*fw,y*fh,(x + 1)*fw,(y + 1)*fh); + float scoremin = 2e28f; + unsigned int best = 0; + cimglist_for(font_code,l) { + const CImg<>& letter = font_blur[l]; + const float score = (float)((letter - neigh).pow(2).sum()); + if (score& src, const CImg& dest, const CImg<>& U, + const bool morph, const bool imode, const char *filename,int nb, CImgDisplay& disp) { + CImg visu = (src,dest,src)>'x', warp(src); + float t = 0; + for (unsigned int iteration = 0; !disp || (!disp.is_closed() && !disp.is_keyQ()); ++iteration) { + if (morph) cimg_forXYC(warp,x,y,k) { + const float dx = U(x,y,0), dy = U(x,y,1), + I1 = (float)src.linear_atXY(x - t*dx, y - t*dy, k), + I2 = (float)dest.linear_atXY(x + (1 - t)*dx,y + (1 - t)*dy,k); + warp(x,y,k) = (unsigned char)((1 - t)*I1 + t*I2); + } else cimg_forXYC(warp,x,y,k) { + const float dx = U(x,y,0), dy = U(x,y,1), I1 = (float)src.linear_atXY(x - t*dx, y - t*dy, 0,k); + warp(x,y,k) = (unsigned char)I1; + } + if (disp) visu.draw_image(2*src.width(),warp).display(disp.resize().wait(30)); + if (filename && *filename && (imode || (int)iteration frame %d ",iteration); + warp.save(filename,iteration); + } + t+=1.0f/nb; + if (t<0) { t = 0; nb = -nb; } + if (t>1) { t = 1; nb = -nb; if (filename && *filename) std::exit(0); } + } +} + +// optflow() : multiscale version of the image registration algorithm +//----------- +CImg<> optflow(const CImg<>& source, const CImg<>& target, + const float smoothness, const float precision, const unsigned int nb_scales, CImgDisplay& disp) { + const unsigned int iteration_max = 100000; + const float _precision = (float)std::pow(10.0,-(double)precision); + const CImg<> + src = source.get_resize(target,3).normalize(0,1), + dest = target.get_normalize(0,1); + CImg<> U; + + const unsigned int _nb_scales = nb_scales>0?nb_scales: + (unsigned int)(2*std::log((double)(std::max(src.width(),src.height())))); + for (int scale = _nb_scales - 1; scale>=0; --scale) { + const float factor = (float)std::pow(1.5,(double)scale); + const unsigned int + _sw = (unsigned int)(src.width()/factor), sw = _sw?_sw:1, + _sh = (unsigned int)(src.height()/factor), sh = _sh?_sh:1; + const CImg<> + I1 = src.get_resize(sw,sh,1,-100,2), + I2 = dest.get_resize(I1,2); + std::fprintf(stderr," * Scale %d\n",scale); + if (U) (U*=1.5f).resize(I2.width(),I2.height(),1,-100,3); + else U.assign(I2.width(),I2.height(),1,2,0); + + float dt = 2, energy = cimg::type::max(); + const CImgList<> dI = I2.get_gradient(); + + for (unsigned int iteration = 0; iteration0) dt*=0.5f; + energy = _energy; + if (disp) disp.resize(); + if (disp && disp.is_closed()) std::exit(0); + if (disp && !(iteration%300)) { + const unsigned char white[] = { 255,255,255 }; + CImg tmp = I1.get_warp(U,true,true,1).normalize(0,200); + tmp.resize(disp.width(),disp.height()).draw_quiver(U,white,0.7f,15,-14,true).display(disp); + } + } + std::fprintf(stderr,"\n"); + } + return U; +} + +/*------------------------ + + Main function + + ------------------------*/ + +int main(int argc,char **argv) { + + // Read command line parameters + cimg_usage("Compute an optical flow between two 2D images, and create a warped animation"); + const char + *name_i1 = cimg_option("-i",cimg_imagepath "sh0r.pgm","Input Image 1 (Destination)"), + *name_i2 = cimg_option("-i2",cimg_imagepath "sh1r.pgm","Input Image 2 (Source)"), + *name_o = cimg_option("-o",(const char*)NULL,"Output 2D flow (inrimage)"), + *name_seq = cimg_option("-o2",(const char*)NULL,"Output Warping Sequence"); + const float + smoothness = cimg_option("-s",0.1f,"Flow Smoothness"), + precision = cimg_option("-p",6.0f,"Convergence precision"); + const unsigned int + nb = cimg_option("-n",40,"Number of warped frames"), + nb_scales = cimg_option("-scale",0,"Number of scales (0=auto)"); + const bool + normalize = cimg_option("-equalize",true,"Histogram normalization of the images"), + morph = cimg_option("-m",true,"Morphing mode"), + imode = cimg_option("-c",true,"Complete interpolation (or last frame is missing)"), + dispflag = !cimg_option("-novisu",false,"Visualization"); + + // Init images and display + std::fprintf(stderr," - Init images.\n"); + const CImg<> + src(name_i1), + dest(CImg<>(name_i2).resize(src,3)), + src_blur = normalize?src.get_blur(0.5f).equalize(256):src.get_blur(0.5f), + dest_blur = normalize?dest.get_blur(0.5f).equalize(256):dest.get_blur(0.5f); + + CImgDisplay disp; + if (dispflag) { + unsigned int w = src.width(), h = src.height(); + const unsigned int dmin = std::min(w,h), minsiz = 512; + if (dminmaxsiz) { w=w*maxsiz/dmax; h=h*maxsiz/dmax; } + disp.assign(w,h,"Estimated Motion",0); + } + + // Run Motion estimation algorithm + std::fprintf(stderr," - Compute optical flow.\n"); + const CImg<> U = optflow(src_blur,dest_blur,smoothness,precision,nb_scales,disp); + if (name_o) U.save(name_o); + U.print("Computed flow"); + + // Do morphing animation + std::fprintf(stderr," - Create warped animation.\n"); + CImgDisplay disp2; + if (dispflag) { + unsigned int w = src.width(), h = src.height(); + const unsigned int dmin = std::min(w,h), minsiz = 100; + if (dminmaxsiz) { w = w*maxsiz/dmax; h=h*maxsiz/dmax; } + disp2.assign(3*w,h,"Source/Destination images and Motion animation",0); + } + + animate_warp(src.get_normalize(0,255),dest.get_normalize(0,255),U,morph,imode,name_seq,nb,disp2); + + std::exit(0); + return 0; +} diff --git a/examples/image_surface3d.cpp b/examples/image_surface3d.cpp new file mode 100644 index 000000000..292125975 --- /dev/null +++ b/examples/image_surface3d.cpp @@ -0,0 +1,140 @@ +/* + # + # File : image_surface3d.cpp + # ( C++ source file ) + # + # Description : This tool allows to show an image as a 3D surface. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line arguments. + cimg_usage("Render an image as a surface"); + const char *file_i = cimg_option("-i",cimg_imagepath "logo.bmp","Input image"); + const char *file_o = cimg_option("-o",(char*)0,"Output 3D object"); + const float sigma = cimg_option("-smooth",1.0f,"Amount of image smoothing"); + const float ratioz = cimg_option("-z",0.25f,"Aspect ratio along z-axis"); + const unsigned int di = cimg_option("-di",10,"Step for isophote skipping"); + + // Load 2D image file. + std::fprintf(stderr,"\n- Load file '%s'",cimg::basename(file_i)); std::fflush(stderr); + const CImg + img = CImg<>(file_i).blur(sigma).resize(-100,-100,1,3), + norm = img.get_norm().normalize(0,255); + + // Compute surface with triangles. + std::fprintf(stderr,"\n- Create image surface"); std::fflush(stderr); + CImgList primitives; + CImgList colors; + const CImg<> points = img.get_elevation3d(primitives,colors,norm*-ratioz); + + // Compute image isophotes. + std::fprintf(stderr,"\n- Compute image isophotes"); std::fflush(stderr); + CImgList isoprimitives; + CImgList isocolors; + CImg<> isopoints; + for (unsigned int i = 0; i<255; i+=di) { + CImgList<> prims; + const CImg<> pts = norm.get_isoline3d(prims,(float)i); + isopoints.append_object3d(isoprimitives,pts,prims); + } + cimglist_for(isoprimitives,l) { + const unsigned int i0 = isoprimitives(l,0); + const float x0 = isopoints(i0,0), y0 = isopoints(i0,1); + const unsigned char + r = (unsigned char)img.linear_atXY(x0,y0,0), + g = (unsigned char)img.linear_atXY(x0,y0,1), + b = (unsigned char)img.linear_atXY(x0,y0,2); + isocolors.insert(CImg::vector(r,g,b)); + } + cimg_forX(isopoints,ll) isopoints(ll,2) = -ratioz*norm.linear_atXY(isopoints(ll,0),isopoints(ll,1)); + + // Save object if necessary + if (file_o) { + std::fprintf(stderr,"\n- Save 3d object as '%s'",cimg::basename(file_o)); std::fflush(stderr); + points.save_off(primitives,colors,file_o); + } + + // Enter event loop + std::fprintf(stderr, + "\n- Enter interactive loop.\n\n" + "Reminder : \n" + " + Use mouse to rotate and zoom object\n" + " + key 'F' : Toggle fullscreen\n" + " + key 'Q' or 'ESC' : Quit\n" + " + Any other key : Change rendering type\n\n"); std::fflush(stderr); + const char *const title = "Image viewed as a surface"; + CImgDisplay disp(800,600,title,0); + unsigned int rtype = 2; + CImg pose = CImg::identity_matrix(4); + + while (!disp.is_closed()) { + const unsigned char white[3]={ 255, 255, 255 }; + CImg visu(disp.width(),disp.height(),1,3,0); + visu.draw_text(10,10,"%s",white,0,1,24, + rtype==0?"Points":(rtype==1?"Lines":(rtype==2?"Faces":(rtype==3?"Flat-shaded faces": + (rtype==4?"Gouraud-shaded faces":(rtype==5?"Phong-shaded faces":"Isophotes")))))); + static bool first_time = true; + if (rtype==6) visu.display_object3d(disp,isopoints,isoprimitives,isocolors,first_time,1,-1,true, + 500.0f,0.0f,0.0f,-5000.0f,0.0f,0.0f,true,pose.data()); + else visu.display_object3d(disp,points,primitives,colors,first_time,rtype,-1,true, + 500.0f,0.0f,0.0f,-5000.0f,0.0f,0.0f,true,pose.data()); + first_time = false; + switch (disp.key()) { + case 0: break; + case cimg::keyBACKSPACE: rtype = (7 + rtype - 1)%7; break; + case cimg::keyQ: + case cimg::keyESC: disp.close(); break; + case cimg::keyF: + if (disp.is_fullscreen()) disp.resize(800,600); else disp.resize(disp.screen_width(),disp.screen_height()); + disp.toggle_fullscreen(); + break; + default: rtype = (rtype + 1)%7; break; + } + } + + return 0; +} diff --git a/examples/img/CImg_demo.h b/examples/img/CImg_demo.h new file mode 100644 index 000000000..7ca160c80 --- /dev/null +++ b/examples/img/CImg_demo.h @@ -0,0 +1,27810 @@ +/*------------------------------------------------------------ + + Define hard-coded color images used in the 'CImg_demo.cpp' + example file, so that the corresponding executable does not + depend on additional data files. + +--------------------------------------------------------------*/ + +/* Define image 'foot' of size 200x200x1x3 and type 'const unsigned char' */ +const unsigned char data_foot[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 154, 68, + 17, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 84, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 230, 165, 84, 26, 5, 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, + 0, 25, 175, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 253, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 215, 116, 26, 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, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 254, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 194, 74, 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, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 205, 133, 68, 22, 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, 0, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 252, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 215, 144, 85, 33, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 245, 194, 122, 67, 32, 5, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 111, 39, 9, + 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, 0, 230, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 205, 58, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 116, 215, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 251, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 48, 105, 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 205, 72, 0, 0, 0, + 0, 0, 27, 66, 122, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, + 242, 0, 0, 0, 0, 0, 108, 120, 171, 233, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, + 219, 219, 0, 0, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 0, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 22, 88, 194, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 0, 0, 0, 0, 0, 0, + 13, 110, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, + 0, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 42, 0, 0, 0, 0, 0, 0, 0, 0, 11, 92, 205, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 156, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, + 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, + 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 49, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 0, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 32, 0, 10, 47, + 156, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, + 0, 149, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 1, 32, 145, 245, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 0, + 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 245, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 194, 245, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 0, 0, 0, 0, 0, + 0, 0, 2, 76, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 165, 230, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 226, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 198, 152, 119, 119, 152, 198, 0, 0, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 121, + 33, 5, 4, 24, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 11, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 205, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 164, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 152, 33, 0, 0, 0, 0, 0, 110, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, + 5, 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, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 194, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 119, 3, + 0, 0, 0, 0, 0, 16, 178, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 238, 147, 22, 0, 0, 0, 0, 0, 0, 0, 0, 58, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 119, 1, 0, 0, 0, 0, 0, 0, 70, 198, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 114, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 152, 2, + 0, 0, 0, 0, 0, 0, 5, 137, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 207, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 198, 22, 0, 0, 0, 0, 0, 0, 0, 88, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 133, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 37, 230, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 217, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 76, 0, 0, 0, 0, 0, 0, + 0, 0, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 176, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 230, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 103, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, + 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 219, 219, 219, 210, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 210, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 205, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 210, 120, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 173, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 115, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 245, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 212, 0, 0, 0, 0, 0, 0, 0, 0, 4, 205, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 159, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 245, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, + 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 176, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 170, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 100, + 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 112, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 150, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 198, 152, 119, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 215, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 167, 62, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 198, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 186, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 137, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 110, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 235, 0, 0, 0, 0, 0, 0, 0, + 0, 57, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 146, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 198, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 179, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 178, 27, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 178, 58, 0, 0, 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, 185, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 5, 235, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 178, 58, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 194, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 32, + 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, 0, 0, 0, 0, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 205, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 164, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 0, 0, 0, + 0, 0, 4, 213, 255, 255, 255, 255, 255, 255, 255, 255, 238, 51, 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, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 106, 0, 0, 0, 0, 0, 76, 235, 255, 255, 255, 255, + 255, 255, 255, 255, 120, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 0, 0, + 6, 81, 235, 255, 255, 255, 255, 255, 255, 255, 255, 205, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 83, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 230, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 207, 29, 0, 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, 1, 0, 2, 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, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 160, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 194, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 161, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 57, 22, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 88, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 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, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 31, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 229, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 205, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 163, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 221, 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, 15, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 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, 0, 0, 0, 0, 0, 0, + 0, 0, 41, 198, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 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, 1, 28, 0, 0, 0, 0, 0, 0, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 255, 255, 255, 255, 255, 255, 255, 83, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 34, 0, 0, 0, 0, + 0, 0, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 245, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 37, 4, 0, 0, 0, 0, 0, 0, 23, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 151, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 250, 253, 255, 255, 255, 255, 255, 221, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 204, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 240, 255, 255, 255, 255, 255, + 255, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 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, 157, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 250, 247, 255, 255, 255, 255, 255, 255, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, + 255, 255, 255, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 140, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 198, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 84, 170, 230, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 100, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 37, 111, 205, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 185, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 21, + 84, 165, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 39, 53, 72, 125, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 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, 23, 87, 170, 230, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 210, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 48, 105, + 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28, + 49, 72, 111, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 198, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 30, 74, 144, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 176, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 46, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 98, 20, 0, 98, 205, + 0, 0, 0, 0, 0, 0, 9, 1, 1, 1, 1, 1, 1, 0, 0, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 39, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 26, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 90, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 238, 216, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 111, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 247, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 215, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 198, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 128, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 230, 128, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 15, 79, 176, 219, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 245, 141, 24, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 47, 5, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 4, 23, 40, 57, 90, 146, 198, 219, 219, 219, 0, + 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 230, 137, 30, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 215, 124, 79, 54, 47, 51, 62, 95, 152, 198, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 238, 125, 18, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 201, 30, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 20, 31, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 230, 105, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 198, 24, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 95, 3, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 251, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 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, + 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 184, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 144, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 238, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 215, 255, 255, 255, 255, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 196, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 40, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 86, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 105, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 205, 133, 85, + 61, 63, 92, 144, 215, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 170, 255, + 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 185, 124, 73, 28, 4, 0, 0, 0, 0, 1, 6, 5, 9, 0, 142, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 110, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 10, 230, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 217, 200, 155, 100, 54, 24, 3, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 34, 170, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 198, 20, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 176, 114, 60, 22, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 110, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 133, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 210, 167, 105, 58, 25, 3, 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, 0, 17, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 198, 20, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 205, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 198, + 113, 27, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 117, 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, + 0, 0, 0, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 210, 182, 148, + 125, 106, 79, 53, 33, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 210, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 163, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, + 219, 192, 114, 40, 9, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 167, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 198, 142, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 164, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 64, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 159, 43, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 31, 185, 219, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 185, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 176, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, + 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 106, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 114, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 98, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 210, 27, 0, 0, 0, 0, 0, 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, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 159, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 173, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 245, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 178, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 78, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 58, 230, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 88, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 155, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 120, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 105, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 185, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 124, 0, 0, 0, 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, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 210, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 198, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 215, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 67, 198, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 56, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 25, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 83, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 238, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 84, 198, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 18, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 176, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, + 0, 2, 74, 190, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 128, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 82, 202, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 0, 0, 219, 113, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 69, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 73, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 109, 210, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 219, 219, 219, + 219, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 215, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 139, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, + 0, 0, 219, 219, 219, 219, 219, 219, 219, 148, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 185, 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, 0, 0, 0, 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, 146, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 182, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 151, 253, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 14, 137, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 210, 125, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 167, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 0, 0, 14, 155, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 188, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 229, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 210, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 185, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 171, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 215, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 141, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 9, 40, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 214, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 200, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 66, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 28, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 159, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 250, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 217, 37, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 5, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 0, + 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 110, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 137, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 145, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 255, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 185, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 198, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 113, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 64, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, + 3, 122, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 110, 1, + 0, 0, 0, 0, 0, 0, 0, 3, 113, 209, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 167, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 198, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 198, 37, 0, 0, 0, 0, 0, 0, 3, 94, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 210, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, + 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 159, + 39, 0, 0, 0, 1, 15, 106, 210, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 113, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 176, 107, 69, 66, 100, 167, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 168, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 149, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 255, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 204, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 47, 176, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 58, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 113, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 247, 255, 219, 219, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, + 219, 219, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 149, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 47, 176, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 253, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 133, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 142, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 107, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 176, 114, 47, + 9, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 78, 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 251, 255, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 198, 142, 56, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 198, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 206, 126, 29, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 65, 210, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 158, 46, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 70, 190, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 204, 140, 52, 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, 2, 75, + 190, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 198, 110, 24, 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, 0, + 0, 0, 0, 0, 0, 3, 65, 190, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 198, 142, 72, 22, + 3, 0, 0, 0, 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, 70, 185, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 252, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 198, 122, 46, 5, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 90, 204, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 204, 168, 124, 80, 43, 17, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 98, 210, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 210, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 130, 210, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 185, + 0, 0, 0, 0, 0, 0, 0, 3, 50, 167, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 204, 140, 58, 0, 0, 0, 42, 122, + 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 251, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, + 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, + 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 175, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 1, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 116, 215, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 9, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 48, 105, 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 255, 205, 72, 0, 0, 0, + 0, 0, 27, 66, 122, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 6, 0, 0, 0, 0, 0, 108, 120, 171, 233, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 0, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 22, 88, 194, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 0, 0, 0, 0, 0, 0, + 13, 110, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 210, 210, 210, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 42, 0, 0, 0, 0, 0, 0, 0, 0, 11, 92, 205, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 156, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 49, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, + 0, 149, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 210, 210, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 245, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 194, 245, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 165, 230, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 146, 114, 114, 146, 189, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 116, + 32, 5, 4, 23, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 11, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 205, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 32, 0, 0, 0, 0, 0, 105, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, + 5, 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, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 210, 114, 3, + 0, 0, 0, 0, 0, 16, 170, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 238, 147, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 114, 1, 0, 0, 0, 0, 0, 0, 67, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 210, 210, 146, 2, + 0, 0, 0, 0, 0, 0, 5, 132, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 207, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 189, 21, 0, 0, 0, 0, 0, 0, 0, 88, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 133, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 210, 210, 210, 210, 208, 0, + 0, 0, 0, 0, 0, 0, 0, 26, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 76, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 169, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 230, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 99, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, + 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 210, 210, 210, 202, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 202, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 202, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 166, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 110, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 245, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 212, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 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, 210, 210, 210, + 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 169, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 170, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 107, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 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, 210, 189, 146, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 30, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 215, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 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, 210, 160, 59, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 189, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 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, 210, 131, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 235, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 140, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 189, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 170, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 170, 56, 0, 0, 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, 185, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 170, 56, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 194, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 30, + 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, 0, 0, 0, 0, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 157, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 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, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 83, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 207, 29, 0, 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, 1, 0, 2, 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, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 194, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 161, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 57, 22, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 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, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 229, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 163, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 221, 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, 15, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 40, 189, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 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, 1, 28, 0, 0, 0, 0, 0, 0, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 255, 255, 255, 255, 255, 255, 255, 83, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 34, 0, 0, 0, 0, + 0, 0, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 202, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 245, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 37, 4, 0, 0, 0, 0, 0, 0, 23, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 145, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 250, 253, 255, 255, 255, 255, 255, 221, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 196, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 240, 255, 255, 255, 255, 255, + 255, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 151, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 250, 247, 255, 255, 255, 255, 255, 255, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, + 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, + 255, 255, 255, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 134, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 84, 170, 230, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 37, 111, 205, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 177, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 21, + 84, 165, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 61, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 39, 53, 72, 125, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 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, 23, 87, 170, 230, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 48, 105, + 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 123, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28, + 49, 72, 111, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 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, 189, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 30, 74, 144, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 76, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 169, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 44, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 98, 20, 0, 98, 205, + 0, 0, 0, 0, 0, 0, 9, 1, 1, 1, 1, 1, 1, 0, 0, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 39, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 26, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 86, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 238, 216, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 111, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 247, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 215, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 128, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 230, 128, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 14, 76, 169, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 245, 141, 24, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 47, 5, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 4, 22, 39, 54, 86, 140, 189, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 230, 137, 30, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 215, 119, 76, 52, 45, 49, 59, 91, 146, 189, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 238, 125, 18, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 201, 30, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 19, 30, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 230, 105, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 189, 23, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 3, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 2, + 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, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 251, 60, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 4, 0, + 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, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 76, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 5, 0, 0, + 0, 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, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 6, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 108, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 16, 0, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 184, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 238, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 196, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 86, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 205, 133, 85, + 61, 63, 92, 144, 215, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 177, 119, 70, 27, 4, 0, 0, 0, 0, 1, 6, 5, 9, 0, 142, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 208, 192, 148, 96, 52, 23, 3, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 34, 170, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 189, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 169, 110, 58, 21, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 210, 210, 210, 105, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 160, 100, 55, 24, 3, 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, 0, 17, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 189, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 189, + 108, 26, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 112, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 202, 175, 142, + 119, 101, 76, 51, 32, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 30, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 184, 110, 38, 9, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 189, 136, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 157, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 61, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, 41, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 177, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 177, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 169, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 110, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 94, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 202, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 152, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 166, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 170, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 75, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 84, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 149, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 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, 0, 0, 0, 0, 255, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 100, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 177, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 64, 189, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 80, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 81, 189, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 169, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, + 0, 2, 71, 182, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 78, 194, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 210, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 105, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, + 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 133, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 142, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, 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, 0, 0, 0, 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, 140, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 175, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 13, 131, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 119, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 160, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 0, 0, 13, 149, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 180, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 202, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 177, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 164, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 135, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 9, 39, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 205, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 192, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 208, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 5, 6, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 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, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 132, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 139, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 255, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 189, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 109, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 61, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, + 2, 117, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 105, 1, + 0, 0, 0, 0, 0, 0, 0, 3, 109, 200, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 189, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 189, 35, 0, 0, 0, 0, 0, 0, 2, 90, + 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 202, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, + 37, 0, 0, 0, 1, 15, 102, 202, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 108, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 169, 103, 66, 63, 96, 160, 202, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 161, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 142, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 196, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 45, 169, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 55, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 108, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 153, 255, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 142, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 45, 169, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 255, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 136, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 187, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 169, 110, 45, + 8, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 75, 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 154, 255, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 189, 136, 54, 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, 0, 0, 63, 189, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 198, 121, 28, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 63, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, 44, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 67, 182, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 196, 134, 50, 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, 2, 72, + 182, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 189, 105, 23, 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, 0, + 0, 0, 0, 0, 0, 2, 63, 182, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 189, 136, 69, 21, + 3, 0, 0, 0, 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, 68, 177, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 189, 117, 44, 5, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 86, 196, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 196, 161, 119, 77, 41, 16, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 94, 202, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 202, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 124, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, + 0, 0, 0, 0, 0, 0, 0, 3, 48, 160, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 196, 134, 55, 0, 0, 0, 40, 117, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 9, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 175, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 116, 215, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 48, 105, 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 255, 205, 72, 0, 0, 0, + 0, 0, 27, 66, 122, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 5, 0, 0, 0, 0, 0, 108, 120, 171, 233, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 0, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 22, 88, 194, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 0, 0, 0, 0, 0, 0, + 13, 110, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 210, 210, 210, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 42, 0, 0, 0, 0, 0, 0, 0, 0, 11, 92, 205, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 156, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 49, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, + 0, 149, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 210, 210, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 245, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 194, 245, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 165, 230, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 146, 114, 114, 146, 189, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 116, + 32, 5, 4, 23, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 11, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 205, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 32, 0, 0, 0, 0, 0, 105, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, + 5, 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, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 210, 114, 3, + 0, 0, 0, 0, 0, 16, 170, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 238, 147, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 114, 1, 0, 0, 0, 0, 0, 0, 67, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 210, 210, 146, 2, + 0, 0, 0, 0, 0, 0, 5, 132, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 207, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 189, 21, 0, 0, 0, 0, 0, 0, 0, 88, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 133, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 210, 210, 210, 210, 208, 0, + 0, 0, 0, 0, 0, 0, 0, 26, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 76, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 169, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 230, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 99, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, + 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 210, 210, 210, 202, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 202, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 202, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 166, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 110, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 245, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 212, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 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, 210, 210, 210, + 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 169, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 170, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 107, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 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, 210, 189, 146, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 30, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 215, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 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, 210, 160, 59, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 189, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 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, 210, 131, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 235, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 140, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 189, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 170, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 170, 56, 0, 0, 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, 185, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 170, 56, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 194, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 30, + 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, 0, 0, 0, 0, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 157, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 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, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 83, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 207, 29, 0, 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, 1, 0, 2, 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, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 194, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 161, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 57, 22, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 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, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 229, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 163, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 221, 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, 15, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 40, 189, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 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, 1, 28, 0, 0, 0, 0, 0, 0, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 255, 255, 255, 255, 255, 255, 255, 83, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 34, 0, 0, 0, 0, + 0, 0, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 202, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 245, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 37, 4, 0, 0, 0, 0, 0, 0, 23, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 145, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 250, 253, 255, 255, 255, 255, 255, 221, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 196, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 240, 255, 255, 255, 255, 255, + 255, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 151, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 250, 247, 255, 255, 255, 255, 255, 255, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, + 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, + 255, 255, 255, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 134, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 84, 170, 230, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 37, 111, 205, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 177, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 21, + 84, 165, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 61, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 39, 53, 72, 125, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 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, 23, 87, 170, 230, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 48, 105, + 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 123, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28, + 49, 72, 111, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 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, 189, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 30, 74, 144, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 76, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 169, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 44, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 98, 20, 0, 98, 205, + 0, 0, 0, 0, 0, 0, 9, 1, 1, 1, 1, 1, 1, 0, 0, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 39, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 26, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 86, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 238, 216, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 111, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 247, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 215, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 128, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 230, 128, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 14, 76, 169, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 245, 141, 24, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 47, 5, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 4, 22, 39, 54, 86, 140, 189, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 230, 137, 30, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 215, 119, 76, 52, 45, 49, 59, 91, 146, 189, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 238, 125, 18, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 201, 30, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 19, 30, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 230, 105, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 189, 23, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 3, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 2, + 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, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 251, 60, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 4, 0, + 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, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 76, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 5, 0, 0, + 0, 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, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 6, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 108, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 16, 0, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 184, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 238, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 196, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 86, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 205, 133, 85, + 61, 63, 92, 144, 215, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 177, 119, 70, 27, 4, 0, 0, 0, 0, 1, 6, 5, 9, 0, 142, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 208, 192, 148, 96, 52, 23, 3, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 34, 170, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 189, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 169, 110, 58, 21, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 210, 210, 210, 105, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 160, 100, 55, 24, 3, 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, 0, 17, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 189, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 189, + 108, 26, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 112, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 202, 175, 142, + 119, 101, 76, 51, 32, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 30, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 184, 110, 38, 9, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 189, 136, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 157, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 61, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, 41, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 177, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 177, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 169, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 110, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 94, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 202, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 152, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 166, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 170, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 75, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 84, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 149, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 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, 0, 0, 0, 0, 255, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 100, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 177, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 64, 189, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 80, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 81, 189, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 169, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, + 0, 2, 71, 182, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 78, 194, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 210, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 105, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, + 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 133, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 142, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, 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, 0, 0, 0, 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, 140, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 175, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 13, 131, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 119, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 160, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 0, 0, 13, 149, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 180, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 202, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 177, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 164, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 135, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 9, 39, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 205, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 192, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 45, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 208, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 5, 6, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 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, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 132, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 139, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 255, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 189, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 109, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 61, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, + 2, 117, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 105, 1, + 0, 0, 0, 0, 0, 0, 0, 3, 109, 200, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 189, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 189, 35, 0, 0, 0, 0, 0, 0, 2, 90, + 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 202, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, + 37, 0, 0, 0, 1, 15, 102, 202, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 108, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 169, 103, 66, 63, 96, 160, 202, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 161, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 142, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 255, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 196, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 45, 169, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 55, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 108, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 152, 255, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 142, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 45, 169, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 255, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 136, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 186, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 169, 110, 45, + 8, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 75, 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 152, 255, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 189, 136, 54, 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, 0, 0, 63, 189, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 198, 121, 28, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 63, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, 44, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 67, 182, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 196, 134, 50, 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, 2, 72, + 182, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 189, 105, 23, 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, 0, + 0, 0, 0, 0, 0, 2, 63, 182, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 189, 136, 69, 21, + 3, 0, 0, 0, 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, 68, 177, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 189, 117, 44, 5, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 86, 196, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 196, 161, 119, 77, 41, 16, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 94, 202, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 202, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 124, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, + 0, 0, 0, 0, 0, 0, 0, 3, 48, 160, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 196, 134, 55, 0, 0, 0, 40, 117, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 8, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +/* Define image 'milla' of size 211x242x1x3 and type 'const unsigned char' */ +const unsigned char data_milla[] = { + 93, 92, 92, 91, 91, 90, 90, 90, 92, 90, 92, 91, 91, 92, 92, 92, + 93, 99, 97, 95, 101, 95, 89, 93, 92, 92, 94, 96, 97, 95, 95, 94, + 96, 96, 96, 96, 96, 96, 96, 96, 93, 94, 95, 96, 97, 98, 98, 98, + 94, 98, 98, 95, 96, 99, 99, 97, 99, 98, 98, 97, 97, 98, 98, 100, + 103, 103, 103, 102, 102, 103, 102, 102, 100, 101, 102, 101, 101, 101, 101, 100, + 102, 103, 103, 104, 103, 104, 104, 104, 104, 102, 104, 103, 103, 104, 104, 104, + 103, 103, 105, 104, 106, 105, 107, 105, 110, 107, 108, 105, 108, 107, 111, 110, + 108, 111, 108, 104, 112, 109, 108, 112, 112, 111, 115, 113, 113, 111, 115, 114, + 109, 108, 109, 110, 110, 110, 110, 109, 104, 111, 109, 105, 111, 108, 106, 112, + 107, 105, 104, 103, 104, 106, 109, 110, 110, 112, 108, 116, 112, 106, 108, 84, + 14, 31, 62, 66, 85, 85, 103, 106, 107, 109, 103, 105, 116, 114, 105, 109, + 112, 110, 110, 113, 113, 111, 112, 115, 116, 115, 113, 113, 115, 115, 113, 112, + 111, 112, 112, 112, 112, 111, 110, 109, 113, 113, 113, 112, 112, 111, 111, 111, + 114, 113, 113, 94, 94, 94, 93, 92, 91, 91, 91, 85, 85, 88, 88, 89, + 90, 88, 89, 93, 94, 94, 93, 92, 93, 95, 97, 93, 94, 96, 94, 93, + 92, 94, 94, 95, 95, 96, 95, 94, 92, 89, 88, 93, 93, 93, 93, 93, + 94, 96, 96, 96, 96, 96, 97, 97, 98, 98, 98, 100, 99, 99, 98, 98, + 99, 99, 100, 98, 100, 102, 100, 99, 98, 98, 99, 100, 103, 104, 100, 100, + 103, 102, 99, 101, 101, 101, 102, 102, 103, 103, 103, 105, 104, 105, 105, 105, + 106, 106, 106, 102, 105, 106, 102, 104, 106, 107, 104, 104, 103, 104, 104, 105, + 105, 106, 105, 105, 106, 109, 108, 108, 106, 108, 108, 106, 109, 110, 106, 108, + 110, 111, 108, 112, 110, 106, 107, 111, 112, 109, 107, 110, 109, 107, 105, 106, + 106, 109, 110, 106, 109, 109, 106, 106, 109, 109, 106, 114, 109, 111, 110, 116, + 99, 108, 78, 9, 30, 59, 64, 90, 88, 99, 105, 107, 111, 104, 104, 114, + 112, 104, 104, 109, 107, 107, 110, 111, 108, 108, 112, 113, 113, 113, 113, 113, + 113, 113, 113, 110, 112, 114, 114, 112, 111, 111, 112, 114, 114, 112, 111, 111, + 111, 111, 111, 109, 116, 113, 93, 94, 92, 92, 91, 90, 90, 88, 89, 88, + 89, 90, 89, 89, 89, 91, 92, 94, 94, 93, 92, 93, 94, 97, 91, 92, + 92, 92, 90, 90, 91, 92, 93, 93, 94, 94, 94, 93, 92, 92, 96, 95, + 94, 93, 93, 93, 94, 94, 96, 96, 96, 97, 97, 98, 98, 98, 100, 99, + 99, 98, 98, 99, 99, 100, 98, 99, 101, 101, 100, 98, 99, 100, 100, 104, + 104, 101, 101, 104, 103, 99, 101, 101, 102, 102, 102, 103, 103, 103, 105, 105, + 105, 106, 106, 107, 107, 106, 102, 105, 105, 102, 103, 106, 106, 104, 103, 103, + 104, 104, 104, 105, 105, 105, 104, 107, 109, 109, 108, 107, 108, 109, 106, 109, + 109, 106, 107, 110, 111, 108, 111, 110, 107, 108, 110, 111, 109, 108, 109, 109, + 107, 106, 106, 107, 108, 108, 108, 111, 111, 108, 108, 111, 111, 108, 113, 109, + 111, 109, 116, 100, 109, 78, 9, 30, 58, 62, 90, 88, 99, 105, 107, 109, + 103, 103, 114, 113, 104, 107, 110, 108, 108, 112, 112, 109, 110, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 110, 112, 114, 114, 112, 111, 111, 112, 114, 113, + 112, 111, 111, 111, 111, 112, 109, 116, 113, 92, 91, 91, 91, 90, 89, 87, + 87, 91, 91, 89, 89, 87, 89, 91, 92, 92, 94, 94, 94, 93, 93, 94, + 96, 91, 93, 92, 92, 91, 90, 91, 92, 92, 92, 92, 92, 93, 93, 94, + 95, 97, 96, 95, 94, 93, 93, 93, 93, 96, 96, 96, 97, 97, 98, 98, + 98, 100, 99, 99, 98, 98, 99, 99, 100, 98, 100, 102, 102, 100, 99, 100, + 101, 101, 104, 105, 102, 101, 103, 102, 98, 101, 102, 102, 102, 103, 103, 103, + 103, 105, 105, 105, 106, 106, 107, 107, 106, 102, 105, 105, 102, 103, 106, 106, + 104, 103, 104, 104, 104, 105, 105, 105, 105, 105, 108, 110, 110, 109, 108, 109, + 110, 106, 109, 109, 107, 107, 110, 111, 108, 109, 110, 110, 109, 109, 108, 109, + 110, 109, 109, 107, 107, 107, 107, 108, 108, 109, 112, 112, 109, 109, 112, 112, + 109, 111, 108, 110, 108, 116, 102, 110, 77, 10, 30, 59, 63, 90, 88, 99, + 105, 105, 108, 102, 102, 115, 114, 106, 108, 111, 109, 109, 113, 113, 110, 111, + 114, 113, 113, 113, 113, 113, 113, 113, 113, 110, 112, 114, 114, 112, 111, 111, + 112, 114, 113, 112, 111, 111, 111, 112, 112, 109, 116, 113, 92, 92, 91, 91, + 90, 90, 88, 88, 91, 90, 87, 86, 84, 86, 89, 91, 92, 94, 95, 94, + 93, 93, 94, 96, 94, 95, 95, 94, 93, 93, 94, 95, 94, 93, 92, 91, + 91, 93, 95, 96, 96, 96, 95, 94, 94, 94, 95, 95, 96, 96, 96, 97, + 97, 98, 98, 98, 100, 99, 99, 98, 98, 99, 99, 100, 99, 101, 103, 103, + 101, 100, 101, 102, 102, 105, 105, 102, 101, 103, 102, 98, 102, 102, 102, 103, + 103, 103, 104, 104, 105, 105, 105, 106, 106, 107, 107, 106, 102, 105, 105, 102, + 103, 106, 106, 104, 104, 104, 104, 105, 105, 105, 106, 106, 106, 108, 110, 111, + 109, 109, 109, 111, 106, 109, 110, 107, 107, 111, 111, 108, 108, 111, 111, 110, + 108, 107, 108, 111, 109, 109, 108, 107, 107, 108, 108, 108, 108, 111, 111, 108, + 108, 111, 111, 108, 110, 108, 109, 107, 116, 103, 111, 75, 11, 31, 60, 63, + 90, 88, 99, 105, 106, 109, 103, 102, 114, 113, 105, 107, 110, 108, 109, 112, + 112, 110, 110, 113, 114, 114, 113, 113, 113, 113, 112, 112, 110, 112, 114, 114, + 112, 111, 111, 112, 113, 113, 112, 111, 111, 111, 112, 113, 109, 116, 113, 92, + 92, 92, 92, 92, 92, 90, 90, 92, 91, 88, 86, 87, 88, 89, 90, 91, + 93, 95, 95, 94, 93, 93, 95, 94, 96, 95, 95, 94, 94, 94, 96, 96, + 95, 93, 91, 91, 92, 93, 94, 93, 93, 93, 94, 95, 96, 98, 99, 96, + 96, 96, 97, 97, 98, 98, 98, 100, 99, 99, 98, 98, 99, 99, 100, 99, + 101, 103, 103, 101, 100, 101, 102, 101, 104, 105, 102, 101, 103, 102, 98, 102, + 102, 103, 103, 103, 104, 104, 104, 105, 105, 105, 106, 106, 107, 107, 106, 102, + 105, 105, 102, 103, 106, 106, 104, 104, 104, 105, 105, 105, 106, 106, 106, 106, + 108, 110, 111, 109, 109, 109, 111, 107, 110, 110, 108, 108, 111, 112, 109, 108, + 111, 111, 110, 108, 107, 108, 111, 109, 109, 108, 109, 109, 108, 108, 108, 107, + 110, 110, 107, 107, 110, 110, 107, 109, 108, 110, 106, 116, 105, 110, 72, 12, + 32, 60, 64, 91, 88, 98, 105, 108, 111, 104, 103, 114, 112, 103, 105, 109, + 107, 107, 111, 111, 108, 109, 112, 114, 114, 114, 113, 113, 112, 112, 112, 110, + 112, 114, 114, 112, 111, 111, 112, 113, 112, 111, 111, 111, 112, 113, 113, 109, + 116, 113, 91, 92, 92, 92, 92, 93, 91, 91, 94, 93, 91, 90, 90, 91, + 93, 93, 91, 93, 95, 95, 94, 94, 93, 94, 92, 94, 93, 93, 92, 92, + 92, 94, 95, 94, 93, 93, 92, 92, 92, 92, 92, 93, 93, 94, 96, 98, + 99, 100, 96, 96, 96, 97, 97, 98, 98, 98, 100, 99, 99, 98, 98, 99, + 99, 100, 98, 100, 102, 102, 100, 99, 100, 101, 100, 103, 104, 101, 101, 104, + 103, 100, 103, 103, 103, 103, 104, 104, 104, 105, 105, 105, 105, 106, 106, 107, + 107, 106, 102, 105, 105, 102, 103, 106, 106, 104, 105, 105, 105, 105, 106, 106, + 106, 107, 105, 108, 110, 110, 109, 108, 109, 110, 107, 110, 111, 108, 108, 112, + 112, 109, 109, 110, 110, 109, 109, 108, 109, 110, 109, 109, 109, 109, 109, 109, + 108, 108, 106, 109, 109, 106, 106, 109, 109, 106, 110, 109, 110, 105, 115, 105, + 110, 68, 13, 33, 61, 64, 91, 88, 98, 105, 109, 111, 105, 103, 114, 111, + 102, 104, 108, 106, 107, 110, 110, 108, 108, 111, 115, 115, 114, 113, 113, 112, + 111, 111, 110, 112, 114, 114, 112, 111, 111, 112, 112, 112, 111, 111, 111, 112, + 113, 114, 109, 116, 113, 90, 90, 91, 89, 89, 90, 90, 90, 93, 93, 93, + 93, 93, 92, 92, 92, 90, 93, 95, 96, 95, 94, 93, 94, 93, 94, 94, + 93, 92, 92, 92, 94, 92, 92, 93, 94, 94, 94, 93, 93, 94, 94, 94, + 95, 96, 97, 98, 99, 96, 96, 96, 97, 97, 98, 98, 98, 100, 99, 99, + 98, 98, 99, 99, 100, 98, 99, 101, 101, 100, 98, 99, 100, 98, 102, 103, + 101, 102, 105, 105, 102, 103, 103, 103, 104, 104, 104, 105, 105, 105, 105, 105, + 106, 106, 107, 107, 106, 102, 105, 105, 102, 103, 106, 106, 104, 105, 105, 105, + 106, 106, 106, 107, 107, 104, 107, 109, 109, 108, 107, 108, 109, 107, 110, 111, + 108, 109, 112, 112, 109, 111, 110, 107, 108, 110, 111, 109, 108, 109, 109, 109, + 110, 110, 109, 108, 108, 107, 110, 110, 107, 107, 110, 110, 107, 111, 111, 111, + 104, 115, 106, 108, 64, 13, 34, 62, 65, 91, 88, 98, 104, 108, 110, 104, + 103, 114, 112, 103, 106, 109, 107, 108, 111, 111, 109, 109, 112, 115, 115, 114, + 113, 113, 112, 111, 111, 110, 112, 114, 114, 112, 111, 111, 112, 112, 111, 111, + 111, 111, 112, 113, 114, 109, 116, 113, 87, 87, 87, 88, 88, 89, 89, 89, + 90, 91, 91, 92, 92, 91, 90, 90, 90, 93, 95, 96, 95, 94, 93, 94, + 95, 97, 96, 96, 95, 94, 95, 96, 88, 89, 92, 94, 95, 96, 95, 95, + 96, 96, 95, 95, 95, 96, 97, 97, 96, 96, 96, 97, 97, 98, 98, 98, + 100, 99, 99, 98, 98, 99, 99, 100, 97, 99, 101, 100, 99, 98, 98, 99, + 97, 101, 102, 101, 102, 106, 106, 103, 103, 103, 103, 104, 104, 105, 105, 105, + 105, 105, 105, 106, 106, 107, 107, 106, 102, 105, 105, 102, 103, 106, 106, 104, + 105, 105, 105, 106, 106, 107, 107, 107, 104, 106, 108, 108, 107, 106, 107, 108, + 107, 111, 111, 108, 109, 112, 112, 110, 112, 110, 106, 107, 111, 112, 109, 107, + 108, 109, 110, 111, 111, 110, 108, 107, 109, 112, 112, 109, 109, 112, 112, 109, + 111, 112, 112, 104, 115, 106, 108, 62, 14, 34, 62, 65, 91, 88, 98, 104, + 105, 108, 102, 102, 114, 113, 105, 108, 110, 109, 109, 112, 113, 110, 110, 114, + 115, 115, 114, 113, 113, 112, 111, 111, 110, 112, 114, 114, 112, 111, 111, 112, + 111, 111, 111, 111, 111, 112, 114, 114, 109, 116, 113, 91, 91, 92, 92, 92, + 91, 90, 90, 92, 91, 90, 91, 93, 94, 93, 92, 94, 94, 94, 94, 94, + 94, 93, 93, 95, 96, 94, 95, 95, 94, 93, 92, 94, 91, 91, 94, 94, + 91, 91, 94, 97, 96, 96, 96, 96, 97, 98, 99, 101, 100, 98, 96, 95, + 95, 96, 96, 99, 100, 101, 102, 102, 100, 99, 98, 100, 99, 99, 99, 99, + 100, 101, 102, 106, 105, 103, 102, 101, 101, 102, 103, 104, 104, 104, 105, 105, + 106, 106, 106, 106, 106, 107, 107, 107, 108, 108, 107, 107, 105, 104, 104, 106, + 106, 105, 104, 110, 104, 107, 109, 103, 106, 111, 106, 108, 108, 108, 109, 109, + 110, 110, 110, 111, 110, 110, 110, 110, 110, 109, 109, 115, 114, 110, 110, 110, + 110, 111, 112, 110, 110, 109, 109, 109, 109, 109, 109, 110, 112, 111, 107, 107, + 111, 112, 110, 117, 109, 114, 111, 113, 102, 107, 58, 13, 37, 65, 65, 92, + 92, 102, 106, 113, 106, 104, 108, 113, 111, 106, 106, 110, 109, 110, 112, 111, + 107, 108, 112, 116, 115, 113, 111, 109, 108, 108, 107, 110, 114, 115, 112, 112, + 114, 112, 108, 117, 115, 111, 108, 108, 110, 113, 115, 108, 117, 115, 90, 90, + 91, 92, 91, 91, 91, 90, 92, 91, 90, 91, 93, 94, 95, 94, 94, 94, + 94, 94, 94, 94, 93, 93, 95, 96, 94, 95, 95, 94, 93, 92, 95, 92, + 92, 95, 95, 92, 92, 95, 97, 96, 96, 96, 96, 97, 98, 99, 96, 96, + 96, 96, 97, 98, 99, 100, 99, 100, 100, 101, 101, 100, 100, 99, 100, 100, + 99, 99, 100, 100, 101, 102, 104, 103, 102, 102, 102, 103, 104, 105, 104, 104, + 104, 105, 105, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 106, 104, + 102, 103, 105, 105, 104, 103, 109, 103, 107, 109, 103, 106, 110, 105, 108, 108, + 108, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 112, 111, + 108, 108, 108, 108, 108, 109, 110, 110, 109, 109, 109, 109, 109, 109, 109, 112, + 111, 108, 108, 111, 112, 109, 113, 107, 112, 109, 114, 104, 109, 60, 14, 37, + 65, 65, 92, 92, 102, 106, 113, 106, 104, 108, 113, 111, 106, 106, 110, 109, + 110, 112, 111, 107, 108, 113, 114, 114, 113, 112, 111, 111, 112, 112, 111, 114, + 114, 111, 111, 113, 112, 109, 116, 114, 111, 109, 109, 110, 112, 114, 112, 116, + 112, 90, 88, 90, 90, 90, 90, 91, 91, 92, 91, 92, 93, 95, 96, 96, + 94, 94, 94, 94, 94, 94, 95, 94, 94, 95, 96, 94, 95, 95, 94, 93, + 92, 95, 92, 92, 95, 95, 92, 92, 95, 97, 96, 96, 96, 96, 97, 98, + 99, 95, 95, 96, 98, 99, 99, 99, 99, 100, 100, 100, 99, 99, 100, 100, + 101, 100, 100, 99, 99, 100, 101, 102, 102, 102, 102, 101, 102, 103, 104, 105, + 106, 104, 104, 104, 105, 105, 106, 106, 106, 105, 105, 105, 106, 106, 107, 107, + 106, 105, 103, 102, 102, 104, 105, 103, 102, 109, 103, 106, 108, 102, 105, 110, + 105, 108, 108, 108, 109, 109, 110, 110, 110, 109, 109, 109, 110, 111, 111, 112, + 112, 112, 111, 109, 108, 108, 109, 108, 109, 110, 110, 109, 109, 109, 109, 109, + 109, 108, 111, 112, 109, 109, 112, 111, 108, 110, 105, 110, 108, 114, 107, 112, + 60, 14, 38, 66, 66, 92, 92, 102, 105, 113, 106, 104, 108, 113, 111, 106, + 106, 110, 109, 110, 113, 111, 108, 109, 113, 112, 112, 112, 112, 113, 114, 115, + 116, 112, 115, 114, 110, 110, 113, 113, 110, 114, 113, 112, 111, 111, 111, 112, + 112, 114, 116, 109, 90, 88, 89, 89, 90, 90, 92, 92, 92, 91, 92, 93, + 95, 96, 96, 94, 96, 94, 94, 95, 95, 95, 94, 95, 95, 96, 94, 95, + 95, 94, 93, 92, 95, 92, 92, 95, 95, 92, 92, 95, 97, 96, 96, 96, + 96, 97, 98, 99, 97, 98, 99, 100, 99, 98, 96, 95, 101, 100, 99, 98, + 98, 100, 101, 102, 101, 100, 100, 100, 100, 101, 102, 103, 102, 102, 102, 102, + 103, 104, 104, 105, 104, 104, 104, 105, 105, 106, 106, 106, 105, 105, 105, 105, + 106, 106, 107, 106, 106, 104, 103, 103, 105, 105, 104, 103, 108, 103, 106, 108, + 102, 105, 109, 105, 108, 108, 108, 109, 109, 110, 110, 110, 108, 109, 109, 110, + 111, 112, 113, 113, 113, 113, 111, 111, 111, 111, 110, 110, 111, 111, 110, 110, + 110, 110, 110, 110, 107, 111, 112, 110, 110, 112, 111, 107, 109, 105, 110, 107, + 114, 108, 112, 57, 15, 38, 66, 66, 93, 92, 102, 105, 113, 106, 104, 108, + 113, 111, 106, 106, 109, 109, 110, 113, 112, 108, 110, 114, 112, 112, 111, 112, + 112, 113, 115, 115, 113, 115, 113, 109, 109, 112, 113, 111, 112, 113, 113, 113, + 112, 112, 111, 110, 113, 116, 110, 90, 87, 87, 87, 89, 90, 93, 93, 92, + 91, 92, 93, 96, 97, 96, 94, 96, 94, 94, 95, 95, 96, 95, 96, 95, + 96, 94, 95, 95, 94, 93, 92, 96, 93, 93, 96, 96, 93, 93, 96, 97, + 96, 96, 96, 96, 97, 98, 99, 97, 98, 99, 100, 100, 99, 97, 96, 100, + 100, 99, 98, 99, 100, 102, 103, 101, 101, 100, 100, 101, 101, 102, 103, 104, + 104, 104, 104, 103, 102, 102, 101, 104, 104, 104, 105, 105, 106, 106, 106, 105, + 105, 105, 106, 106, 107, 107, 106, 108, 106, 105, 105, 107, 107, 106, 105, 109, + 103, 106, 108, 102, 105, 110, 105, 108, 108, 108, 109, 109, 110, 110, 110, 109, + 109, 110, 111, 112, 113, 113, 114, 113, 113, 111, 111, 111, 111, 110, 110, 111, + 111, 110, 110, 110, 110, 110, 110, 107, 111, 112, 110, 110, 112, 111, 107, 111, + 108, 112, 106, 113, 108, 109, 52, 16, 39, 67, 67, 93, 92, 102, 105, 113, + 106, 104, 108, 113, 111, 106, 106, 109, 109, 110, 113, 112, 109, 111, 115, 113, + 112, 111, 111, 110, 111, 111, 111, 113, 115, 113, 109, 109, 112, 113, 111, 112, + 112, 113, 113, 113, 112, 111, 110, 109, 117, 114, 88, 87, 86, 86, 89, 90, + 93, 95, 92, 91, 92, 93, 96, 97, 96, 95, 96, 94, 95, 95, 96, 97, + 96, 96, 95, 96, 94, 95, 95, 94, 93, 92, 96, 93, 93, 96, 96, 93, + 93, 96, 97, 96, 96, 96, 96, 97, 98, 99, 94, 95, 97, 99, 100, 101, + 102, 102, 99, 99, 99, 99, 100, 101, 102, 103, 101, 101, 101, 101, 101, 102, + 103, 103, 104, 104, 105, 104, 103, 102, 101, 100, 104, 104, 104, 105, 105, 106, + 106, 106, 106, 106, 107, 107, 107, 108, 108, 107, 109, 107, 105, 106, 108, 108, + 107, 106, 110, 104, 107, 109, 103, 106, 111, 106, 108, 108, 108, 109, 109, 110, + 110, 110, 110, 110, 111, 111, 112, 113, 113, 113, 110, 111, 109, 110, 110, 109, + 108, 107, 112, 112, 111, 111, 111, 111, 111, 111, 108, 111, 112, 109, 109, 112, + 111, 108, 112, 110, 113, 106, 113, 108, 108, 47, 17, 40, 68, 67, 93, 92, + 102, 105, 113, 106, 104, 108, 113, 111, 106, 106, 109, 109, 110, 114, 113, 110, + 111, 116, 114, 113, 112, 110, 109, 109, 109, 109, 112, 115, 114, 110, 110, 113, + 113, 110, 112, 113, 113, 113, 113, 112, 111, 110, 108, 117, 116, 88, 86, 86, + 85, 88, 90, 93, 95, 92, 93, 92, 93, 96, 97, 97, 95, 96, 94, 95, + 95, 96, 97, 97, 97, 95, 96, 94, 95, 95, 94, 93, 92, 96, 93, 93, + 96, 96, 93, 93, 96, 97, 96, 96, 96, 96, 97, 98, 99, 95, 96, 96, + 97, 99, 101, 103, 104, 97, 98, 99, 100, 101, 102, 102, 102, 102, 101, 101, + 101, 101, 102, 103, 104, 102, 103, 104, 104, 104, 103, 102, 101, 104, 104, 104, + 105, 105, 106, 106, 106, 107, 107, 108, 108, 109, 109, 109, 108, 108, 106, 105, + 105, 107, 108, 106, 105, 111, 105, 109, 110, 105, 107, 112, 107, 108, 108, 108, + 109, 109, 110, 110, 110, 111, 112, 112, 112, 112, 112, 112, 112, 110, 110, 109, + 110, 110, 109, 107, 107, 112, 112, 111, 111, 111, 111, 111, 111, 109, 112, 111, + 108, 108, 111, 112, 109, 112, 110, 113, 105, 113, 109, 108, 45, 18, 41, 68, + 68, 93, 92, 102, 105, 113, 106, 104, 108, 113, 111, 106, 106, 109, 109, 110, + 114, 113, 110, 112, 117, 115, 114, 113, 111, 111, 110, 110, 110, 111, 114, 114, + 111, 111, 113, 112, 109, 113, 113, 113, 112, 112, 111, 111, 111, 110, 117, 113, + 90, 87, 88, 87, 88, 90, 93, 96, 92, 93, 92, 93, 95, 96, 96, 94, + 94, 94, 95, 96, 97, 97, 97, 98, 95, 96, 94, 95, 95, 94, 94, 92, + 97, 94, 94, 97, 97, 94, 94, 97, 97, 96, 96, 97, 97, 98, 99, 100, + 100, 99, 98, 97, 97, 99, 100, 101, 96, 97, 99, 101, 102, 102, 101, 101, + 102, 101, 101, 100, 101, 101, 103, 103, 99, 100, 102, 103, 104, 104, 103, 103, + 105, 105, 105, 106, 106, 107, 107, 106, 108, 108, 108, 108, 108, 109, 109, 107, + 107, 106, 105, 104, 107, 106, 105, 104, 112, 106, 110, 111, 105, 108, 113, 108, + 108, 108, 108, 109, 109, 110, 111, 111, 114, 114, 113, 113, 113, 112, 112, 111, + 112, 112, 112, 113, 113, 112, 109, 109, 112, 112, 111, 111, 111, 111, 111, 111, + 110, 112, 111, 107, 107, 111, 112, 110, 110, 109, 112, 104, 113, 111, 109, 45, + 17, 41, 69, 70, 94, 93, 104, 106, 113, 105, 104, 108, 111, 111, 108, 108, + 110, 109, 111, 114, 113, 111, 112, 117, 115, 114, 113, 112, 112, 112, 113, 113, + 110, 114, 115, 112, 112, 114, 112, 108, 114, 113, 112, 111, 111, 111, 112, 112, + 114, 116, 109, 91, 91, 89, 90, 90, 91, 91, 91, 92, 91, 91, 91, 91, + 92, 92, 93, 92, 92, 92, 93, 93, 94, 94, 94, 96, 96, 96, 97, 97, + 98, 98, 96, 92, 93, 94, 95, 95, 95, 96, 95, 95, 96, 98, 100, 98, + 98, 100, 101, 99, 98, 98, 99, 99, 100, 100, 100, 102, 102, 102, 101, 101, + 100, 100, 100, 99, 106, 103, 98, 104, 99, 98, 103, 98, 102, 100, 96, 96, + 103, 105, 105, 109, 112, 112, 113, 111, 110, 109, 106, 106, 113, 108, 104, 106, + 103, 98, 108, 103, 108, 109, 105, 108, 110, 106, 98, 114, 110, 108, 110, 110, + 107, 107, 111, 109, 108, 107, 109, 110, 112, 113, 113, 113, 114, 114, 114, 115, + 112, 112, 111, 112, 112, 113, 113, 111, 111, 111, 112, 110, 111, 111, 110, 109, + 110, 112, 115, 107, 110, 112, 111, 108, 106, 107, 109, 112, 104, 112, 107, 108, + 105, 108, 41, 16, 44, 67, 77, 94, 102, 105, 109, 115, 104, 100, 108, 113, + 110, 107, 110, 112, 110, 110, 113, 114, 111, 111, 115, 112, 114, 116, 115, 113, + 112, 114, 116, 111, 115, 115, 112, 111, 113, 112, 108, 114, 113, 112, 111, 111, + 111, 111, 112, 110, 111, 112, 92, 92, 92, 92, 92, 93, 91, 91, 93, 93, + 91, 91, 92, 93, 92, 92, 92, 92, 93, 93, 93, 94, 94, 94, 96, 96, + 96, 97, 97, 98, 98, 96, 93, 91, 93, 94, 94, 95, 96, 96, 95, 97, + 100, 100, 100, 99, 101, 101, 99, 98, 98, 99, 99, 100, 100, 100, 102, 102, + 102, 101, 101, 100, 100, 100, 100, 107, 103, 100, 104, 101, 98, 105, 98, 101, + 100, 97, 98, 103, 104, 104, 109, 110, 110, 109, 109, 107, 107, 106, 99, 105, + 102, 98, 102, 99, 96, 105, 101, 104, 104, 100, 103, 106, 105, 100, 108, 104, + 101, 103, 102, 98, 98, 101, 105, 105, 106, 108, 111, 111, 112, 110, 115, 115, + 115, 113, 114, 113, 113, 114, 109, 110, 111, 110, 107, 107, 108, 109, 110, 111, + 111, 110, 110, 111, 113, 116, 108, 111, 113, 112, 109, 107, 108, 109, 114, 107, + 114, 108, 108, 104, 106, 37, 17, 44, 67, 78, 96, 104, 106, 109, 114, 103, + 99, 106, 112, 109, 108, 110, 112, 110, 110, 113, 114, 111, 111, 115, 112, 114, + 116, 115, 113, 112, 114, 116, 110, 114, 114, 111, 111, 113, 113, 109, 114, 113, + 112, 111, 111, 111, 111, 112, 112, 113, 113, 92, 93, 92, 92, 93, 93, 91, + 91, 94, 94, 93, 93, 93, 94, 93, 93, 92, 93, 93, 93, 94, 94, 94, + 94, 96, 96, 96, 97, 97, 98, 98, 96, 94, 92, 93, 92, 93, 94, 97, + 98, 95, 97, 100, 100, 100, 100, 101, 102, 99, 98, 98, 99, 99, 100, 100, + 100, 102, 102, 101, 101, 101, 101, 100, 100, 103, 110, 107, 104, 108, 105, 100, + 107, 101, 104, 105, 103, 103, 106, 106, 103, 107, 104, 102, 100, 100, 101, 103, + 104, 97, 104, 102, 98, 103, 101, 98, 105, 106, 106, 104, 101, 104, 108, 108, + 106, 110, 107, 106, 108, 108, 105, 106, 108, 102, 104, 105, 107, 108, 109, 108, + 108, 113, 113, 111, 108, 108, 107, 108, 108, 111, 111, 111, 110, 108, 109, 112, + 112, 109, 110, 111, 112, 113, 114, 116, 118, 111, 112, 113, 113, 111, 109, 110, + 110, 117, 109, 116, 110, 109, 104, 105, 35, 17, 44, 67, 79, 96, 104, 106, + 109, 112, 101, 98, 105, 112, 109, 107, 110, 112, 110, 110, 113, 114, 111, 111, + 115, 113, 114, 115, 115, 113, 113, 114, 115, 109, 113, 113, 111, 111, 114, 114, + 110, 114, 113, 112, 111, 111, 111, 111, 112, 114, 114, 114, 93, 93, 92, 93, + 93, 93, 92, 92, 94, 94, 93, 92, 93, 94, 93, 93, 93, 93, 93, 94, + 94, 94, 95, 95, 96, 96, 96, 97, 97, 98, 98, 96, 95, 92, 92, 91, + 92, 94, 97, 99, 96, 97, 101, 100, 100, 100, 101, 102, 99, 98, 98, 99, + 99, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 102, 103, 111, 108, 105, + 109, 106, 103, 109, 104, 104, 108, 107, 107, 108, 107, 103, 103, 99, 97, 95, + 95, 97, 100, 102, 101, 108, 104, 101, 106, 105, 101, 106, 102, 99, 100, 100, + 103, 105, 105, 104, 108, 105, 105, 108, 109, 108, 111, 113, 111, 112, 114, 114, + 114, 115, 116, 117, 118, 117, 115, 113, 111, 110, 111, 111, 113, 114, 113, 111, + 108, 108, 112, 115, 106, 108, 112, 112, 114, 116, 119, 120, 112, 112, 113, 113, + 112, 112, 111, 111, 116, 109, 116, 110, 109, 105, 106, 35, 18, 45, 68, 79, + 96, 104, 106, 109, 111, 100, 97, 105, 111, 108, 107, 110, 112, 110, 110, 113, + 114, 111, 111, 115, 114, 114, 114, 114, 114, 114, 114, 114, 108, 112, 113, 111, + 112, 115, 115, 111, 114, 113, 112, 111, 111, 111, 111, 112, 114, 114, 113, 93, + 93, 93, 93, 93, 94, 92, 92, 93, 93, 92, 92, 92, 93, 92, 92, 93, + 93, 94, 94, 94, 95, 95, 95, 96, 96, 96, 97, 97, 98, 98, 96, 96, + 94, 92, 91, 93, 95, 97, 99, 96, 98, 101, 101, 100, 99, 101, 102, 99, + 98, 98, 99, 99, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 102, 104, + 113, 110, 107, 111, 108, 105, 110, 107, 106, 109, 110, 111, 109, 108, 104, 99, + 93, 91, 90, 92, 95, 99, 102, 101, 107, 104, 102, 110, 109, 104, 110, 112, + 112, 115, 118, 120, 119, 117, 116, 121, 117, 118, 121, 121, 118, 119, 123, 122, + 122, 123, 121, 120, 121, 125, 128, 123, 123, 121, 122, 122, 123, 124, 124, 120, + 120, 117, 112, 108, 106, 107, 108, 104, 107, 112, 113, 115, 116, 119, 120, 115, + 112, 112, 113, 113, 113, 112, 111, 113, 106, 115, 110, 110, 106, 106, 36, 19, + 46, 69, 80, 97, 104, 106, 109, 111, 100, 97, 104, 111, 109, 107, 110, 112, + 110, 110, 113, 114, 111, 111, 115, 114, 114, 114, 114, 114, 114, 114, 114, 108, + 112, 113, 111, 112, 115, 115, 111, 114, 113, 112, 111, 111, 111, 111, 112, 112, + 112, 112, 94, 94, 93, 93, 94, 94, 92, 93, 93, 93, 91, 91, 92, 93, + 92, 92, 94, 94, 94, 94, 95, 95, 95, 96, 96, 96, 96, 97, 97, 98, + 98, 96, 95, 94, 93, 92, 94, 95, 97, 98, 96, 98, 101, 101, 100, 100, + 101, 101, 98, 98, 98, 99, 99, 100, 100, 100, 100, 100, 101, 101, 101, 101, + 102, 103, 103, 110, 108, 105, 109, 106, 103, 110, 109, 107, 107, 111, 111, 108, + 107, 105, 98, 94, 92, 93, 94, 98, 101, 105, 107, 112, 110, 110, 119, 119, + 116, 123, 125, 126, 128, 133, 135, 131, 130, 130, 132, 130, 128, 130, 129, 124, + 123, 126, 123, 124, 124, 121, 120, 121, 125, 128, 121, 122, 123, 126, 127, 129, + 131, 129, 133, 132, 128, 125, 117, 112, 108, 106, 105, 107, 111, 112, 114, 117, + 118, 118, 113, 111, 111, 112, 114, 114, 113, 111, 111, 105, 114, 110, 110, 105, + 105, 35, 20, 47, 70, 80, 97, 104, 106, 109, 111, 100, 97, 105, 112, 110, + 108, 112, 112, 110, 110, 113, 114, 111, 111, 115, 115, 114, 113, 113, 115, 115, + 114, 113, 109, 113, 113, 111, 111, 114, 114, 110, 114, 113, 112, 111, 111, 111, + 111, 112, 112, 111, 111, 94, 94, 93, 94, 94, 94, 93, 93, 94, 94, 93, + 93, 93, 94, 93, 94, 94, 94, 94, 95, 95, 95, 96, 96, 96, 96, 96, + 97, 97, 98, 98, 96, 94, 94, 94, 95, 95, 96, 97, 97, 97, 98, 100, + 99, 98, 98, 99, 101, 98, 98, 98, 99, 99, 100, 100, 100, 100, 100, 100, + 101, 101, 102, 102, 102, 100, 106, 104, 101, 105, 102, 99, 106, 110, 105, 105, + 108, 108, 105, 105, 107, 102, 100, 102, 103, 105, 107, 110, 113, 117, 123, 118, + 117, 126, 125, 120, 126, 124, 123, 122, 127, 130, 126, 125, 127, 132, 130, 129, + 131, 130, 127, 128, 131, 131, 137, 141, 140, 136, 134, 136, 139, 134, 135, 136, + 138, 138, 137, 134, 128, 137, 134, 134, 133, 126, 120, 116, 112, 106, 107, 111, + 112, 112, 114, 115, 115, 112, 110, 109, 111, 114, 114, 113, 110, 111, 105, 114, + 109, 109, 103, 102, 31, 21, 47, 70, 81, 97, 105, 105, 109, 111, 101, 98, + 106, 113, 111, 110, 113, 112, 110, 110, 113, 114, 111, 111, 115, 116, 114, 112, + 113, 115, 116, 114, 112, 110, 114, 114, 111, 111, 113, 113, 109, 114, 113, 112, + 111, 111, 111, 111, 112, 114, 113, 112, 94, 94, 93, 94, 94, 95, 93, 93, + 96, 96, 94, 94, 94, 95, 94, 95, 94, 94, 94, 95, 95, 96, 96, 96, + 96, 96, 96, 97, 97, 98, 98, 98, 94, 94, 95, 96, 96, 96, 97, 96, + 97, 98, 100, 100, 98, 98, 100, 101, 98, 98, 98, 99, 99, 100, 100, 100, + 100, 100, 100, 101, 101, 102, 102, 101, 96, 101, 98, 97, 101, 99, 96, 105, + 109, 105, 103, 107, 106, 103, 104, 111, 109, 112, 113, 117, 118, 120, 123, 125, + 127, 131, 123, 120, 126, 121, 114, 121, 139, 137, 134, 138, 139, 137, 136, 140, + 149, 148, 149, 155, 156, 155, 157, 161, 152, 159, 165, 166, 164, 158, 158, 158, + 157, 157, 157, 156, 152, 147, 142, 133, 130, 127, 132, 133, 131, 126, 122, 118, + 111, 111, 111, 112, 111, 110, 111, 112, 111, 109, 108, 110, 113, 114, 112, 109, + 113, 106, 115, 109, 107, 101, 99, 28, 21, 48, 70, 81, 97, 105, 105, 109, + 112, 101, 98, 106, 114, 112, 111, 114, 112, 110, 110, 113, 114, 111, 111, 115, + 116, 114, 112, 113, 115, 116, 114, 112, 111, 115, 115, 112, 111, 113, 112, 108, + 114, 113, 112, 111, 111, 111, 111, 112, 116, 115, 113, 95, 97, 97, 96, 94, + 93, 92, 94, 92, 93, 94, 96, 96, 96, 93, 92, 93, 92, 90, 90, 91, + 93, 96, 98, 99, 98, 97, 95, 95, 96, 97, 98, 99, 97, 95, 96, 100, + 101, 99, 97, 97, 98, 99, 99, 97, 97, 99, 100, 100, 101, 101, 102, 102, + 101, 101, 100, 96, 99, 102, 102, 99, 98, 99, 99, 98, 94, 94, 96, 97, + 99, 100, 103, 97, 103, 107, 106, 103, 101, 102, 110, 120, 121, 127, 129, 122, + 125, 131, 128, 119, 121, 117, 119, 128, 124, 123, 137, 147, 148, 152, 155, 150, + 158, 164, 155, 172, 171, 169, 172, 173, 169, 169, 173, 166, 179, 177, 184, 178, + 167, 183, 188, 186, 178, 179, 160, 170, 157, 161, 144, 139, 138, 133, 122, 121, + 134, 138, 133, 121, 122, 112, 106, 108, 106, 103, 113, 109, 110, 111, 112, 112, + 113, 114, 114, 114, 108, 115, 107, 108, 107, 106, 32, 20, 53, 67, 84, 101, + 101, 110, 107, 113, 96, 97, 109, 111, 112, 115, 112, 111, 114, 107, 116, 116, + 107, 114, 111, 113, 113, 114, 114, 114, 113, 112, 112, 112, 113, 113, 114, 114, + 113, 113, 112, 114, 113, 113, 112, 112, 113, 113, 114, 109, 111, 112, 92, 94, + 94, 93, 91, 91, 90, 91, 94, 95, 94, 94, 94, 93, 91, 90, 95, 94, + 93, 93, 94, 96, 98, 99, 98, 97, 97, 96, 96, 97, 97, 98, 99, 97, + 95, 97, 99, 101, 99, 97, 97, 98, 99, 99, 97, 97, 99, 100, 100, 100, + 101, 101, 101, 101, 100, 100, 102, 104, 105, 104, 101, 100, 101, 100, 95, 92, + 93, 95, 96, 97, 99, 102, 100, 103, 110, 113, 112, 111, 111, 118, 136, 133, + 130, 126, 118, 119, 127, 125, 125, 133, 134, 139, 148, 145, 143, 157, 157, 157, + 162, 162, 158, 164, 169, 161, 181, 178, 177, 180, 181, 178, 178, 182, 175, 180, + 173, 182, 181, 173, 185, 185, 178, 173, 176, 161, 172, 162, 169, 157, 151, 147, + 141, 137, 130, 127, 130, 132, 138, 132, 117, 111, 116, 111, 104, 108, 112, 112, + 112, 112, 112, 112, 112, 112, 115, 110, 117, 109, 108, 105, 103, 28, 21, 53, + 68, 84, 101, 101, 110, 107, 113, 96, 98, 109, 111, 112, 115, 112, 111, 114, + 107, 116, 116, 107, 114, 111, 112, 113, 113, 114, 114, 113, 113, 112, 112, 113, + 113, 114, 114, 113, 113, 112, 114, 113, 113, 112, 112, 113, 113, 114, 110, 112, + 113, 92, 93, 93, 93, 91, 91, 90, 92, 96, 95, 93, 92, 91, 91, 89, + 89, 94, 94, 94, 95, 96, 97, 97, 98, 96, 97, 97, 98, 98, 97, 97, + 97, 100, 99, 98, 99, 101, 102, 99, 98, 96, 97, 99, 99, 96, 96, 98, + 99, 99, 99, 100, 100, 100, 100, 99, 99, 105, 105, 105, 104, 101, 101, 102, + 100, 95, 94, 96, 98, 101, 103, 105, 108, 114, 116, 117, 117, 117, 112, 107, + 113, 137, 135, 133, 133, 128, 134, 140, 137, 135, 144, 147, 153, 161, 157, 156, + 167, 159, 156, 160, 159, 155, 160, 165, 158, 168, 166, 166, 169, 169, 168, 169, + 172, 172, 171, 158, 168, 174, 168, 176, 170, 163, 164, 169, 156, 163, 156, 164, + 159, 163, 153, 150, 151, 140, 124, 124, 131, 141, 139, 130, 122, 120, 111, 104, + 111, 114, 114, 114, 113, 112, 111, 111, 110, 115, 111, 119, 111, 109, 105, 100, + 23, 22, 54, 68, 84, 100, 101, 110, 107, 112, 97, 99, 110, 111, 111, 114, + 111, 111, 114, 107, 116, 116, 107, 114, 111, 112, 112, 113, 114, 114, 113, 113, + 112, 112, 113, 113, 114, 114, 113, 113, 112, 114, 113, 113, 112, 112, 113, 113, + 114, 111, 113, 114, 95, 96, 97, 96, 95, 95, 94, 96, 95, 94, 91, 90, + 90, 91, 90, 91, 91, 92, 93, 94, 95, 95, 94, 94, 95, 96, 97, 99, + 99, 98, 97, 96, 99, 99, 99, 100, 100, 101, 99, 99, 96, 97, 99, 99, + 96, 96, 98, 99, 98, 99, 99, 100, 100, 99, 99, 98, 102, 102, 101, 100, + 100, 100, 101, 102, 102, 103, 106, 109, 112, 113, 115, 118, 121, 119, 117, 116, + 114, 113, 107, 112, 137, 139, 142, 151, 151, 156, 157, 148, 149, 154, 150, 153, + 162, 158, 156, 163, 156, 153, 157, 156, 148, 153, 158, 150, 155, 152, 152, 155, + 156, 154, 155, 158, 165, 163, 149, 159, 163, 159, 167, 162, 159, 162, 165, 156, + 154, 153, 155, 157, 167, 163, 159, 158, 152, 140, 135, 132, 127, 139, 141, 133, + 122, 109, 107, 119, 114, 114, 113, 113, 113, 112, 112, 112, 113, 110, 119, 112, + 111, 105, 99, 21, 23, 55, 68, 84, 100, 101, 110, 108, 112, 97, 100, 111, + 111, 110, 113, 111, 111, 114, 107, 116, 116, 107, 114, 111, 111, 112, 113, 114, + 114, 114, 113, 113, 112, 113, 113, 114, 114, 113, 113, 112, 114, 113, 113, 112, + 112, 113, 113, 114, 112, 114, 114, 95, 97, 98, 97, 96, 96, 96, 97, 92, + 91, 90, 90, 91, 93, 93, 94, 92, 93, 94, 95, 95, 95, 94, 94, 94, + 95, 97, 98, 99, 98, 97, 97, 100, 100, 101, 101, 100, 100, 99, 99, 96, + 97, 98, 98, 96, 96, 96, 99, 98, 99, 99, 100, 100, 99, 99, 98, 100, + 100, 99, 100, 101, 102, 102, 105, 112, 116, 116, 116, 117, 117, 119, 122, 119, + 117, 115, 117, 122, 125, 128, 134, 156, 155, 157, 162, 159, 161, 159, 147, 162, + 157, 147, 148, 161, 160, 155, 158, 154, 150, 155, 153, 144, 150, 155, 149, 151, + 148, 149, 151, 152, 149, 150, 154, 153, 156, 148, 155, 155, 147, 158, 157, 158, + 163, 162, 158, 150, 153, 151, 154, 164, 168, 163, 158, 159, 162, 155, 139, 127, + 135, 137, 134, 132, 123, 117, 123, 113, 112, 113, 113, 113, 114, 114, 114, 111, + 108, 118, 112, 111, 105, 99, 21, 25, 56, 69, 84, 100, 101, 111, 108, 111, + 98, 102, 112, 111, 109, 112, 111, 111, 114, 107, 116, 116, 107, 114, 111, 111, + 112, 113, 114, 114, 114, 114, 114, 112, 113, 113, 114, 114, 113, 113, 112, 114, + 113, 113, 112, 112, 113, 113, 114, 112, 114, 114, 93, 94, 95, 95, 94, 94, + 94, 96, 90, 90, 90, 91, 93, 95, 94, 95, 97, 97, 97, 97, 97, 97, + 97, 97, 94, 95, 96, 97, 98, 98, 98, 98, 99, 100, 102, 102, 99, 99, + 99, 100, 96, 97, 98, 98, 96, 96, 96, 97, 99, 99, 100, 100, 100, 100, + 99, 99, 101, 101, 101, 102, 104, 104, 103, 107, 117, 120, 119, 117, 114, 115, + 116, 119, 126, 127, 126, 129, 133, 140, 145, 151, 173, 168, 167, 167, 161, 165, + 168, 161, 166, 159, 147, 147, 159, 159, 156, 162, 156, 155, 161, 159, 149, 153, + 159, 154, 155, 152, 151, 153, 153, 150, 151, 154, 150, 156, 151, 158, 157, 146, + 159, 160, 158, 165, 159, 162, 153, 162, 157, 160, 157, 165, 165, 159, 164, 174, + 168, 150, 146, 139, 126, 127, 142, 143, 129, 121, 115, 112, 112, 113, 114, 115, + 115, 116, 111, 108, 118, 111, 110, 105, 99, 21, 26, 57, 69, 84, 99, 101, + 111, 109, 110, 98, 103, 114, 111, 108, 111, 110, 111, 114, 107, 116, 116, 107, + 114, 111, 110, 111, 112, 113, 114, 114, 114, 114, 112, 113, 113, 114, 114, 113, + 113, 112, 114, 113, 113, 112, 112, 113, 113, 114, 111, 113, 114, 90, 92, 93, + 93, 92, 93, 92, 94, 91, 92, 92, 94, 95, 95, 93, 93, 99, 98, 96, + 96, 95, 96, 97, 98, 95, 95, 95, 96, 97, 98, 99, 100, 98, 101, 102, + 102, 99, 99, 98, 101, 96, 97, 98, 98, 96, 96, 96, 97, 100, 100, 101, + 101, 101, 101, 100, 100, 102, 101, 101, 103, 104, 103, 98, 102, 113, 118, 116, + 114, 113, 116, 122, 126, 136, 143, 147, 149, 153, 155, 160, 164, 175, 170, 171, + 173, 167, 170, 176, 172, 159, 159, 152, 151, 155, 151, 152, 165, 158, 162, 169, + 167, 157, 161, 166, 161, 163, 160, 159, 160, 160, 157, 156, 159, 156, 163, 159, + 168, 167, 156, 167, 169, 166, 172, 161, 169, 159, 172, 164, 164, 157, 160, 166, + 167, 168, 170, 171, 167, 161, 149, 129, 125, 138, 141, 134, 129, 119, 114, 114, + 114, 114, 114, 114, 114, 114, 110, 119, 110, 109, 103, 97, 19, 27, 58, 70, + 84, 99, 101, 111, 109, 109, 98, 104, 114, 111, 108, 111, 110, 111, 114, 107, + 116, 116, 107, 114, 111, 110, 111, 112, 113, 114, 115, 115, 114, 112, 113, 113, + 114, 114, 113, 113, 112, 114, 113, 113, 112, 112, 113, 113, 114, 110, 112, 113, + 89, 91, 93, 93, 93, 91, 93, 95, 93, 93, 94, 96, 96, 93, 92, 91, + 98, 96, 94, 92, 92, 94, 96, 97, 96, 96, 95, 95, 96, 98, 100, 101, + 97, 101, 103, 102, 100, 98, 100, 103, 97, 98, 99, 98, 96, 94, 96, 97, + 100, 102, 102, 103, 102, 101, 100, 99, 100, 100, 101, 105, 108, 106, 101, 106, + 112, 119, 116, 117, 120, 126, 133, 140, 134, 144, 155, 161, 164, 168, 172, 177, + 171, 170, 178, 179, 171, 169, 168, 162, 156, 161, 160, 156, 153, 145, 146, 163, + 159, 161, 169, 167, 158, 162, 170, 165, 174, 170, 168, 169, 169, 164, 164, 167, + 162, 168, 164, 175, 175, 167, 175, 172, 171, 175, 163, 173, 162, 177, 168, 165, + 161, 161, 170, 177, 172, 163, 169, 181, 165, 161, 144, 131, 131, 133, 140, 147, + 127, 119, 116, 115, 114, 113, 111, 111, 117, 112, 120, 110, 108, 102, 96, 18, + 27, 59, 69, 84, 99, 101, 111, 111, 109, 99, 105, 115, 111, 107, 110, 110, + 111, 114, 107, 116, 116, 107, 114, 111, 110, 111, 112, 113, 114, 115, 115, 115, + 112, 113, 113, 114, 114, 113, 113, 112, 114, 113, 113, 112, 112, 113, 113, 114, + 109, 111, 112, 92, 92, 92, 92, 93, 94, 95, 94, 94, 94, 94, 91, 90, + 92, 96, 98, 94, 94, 94, 95, 95, 96, 96, 96, 92, 93, 94, 94, 95, + 96, 97, 97, 99, 101, 102, 103, 103, 104, 103, 103, 105, 103, 99, 97, 96, + 95, 95, 97, 97, 100, 101, 102, 101, 99, 97, 95, 105, 93, 102, 117, 118, + 112, 110, 110, 127, 131, 131, 133, 137, 137, 137, 136, 141, 148, 156, 160, 163, + 166, 173, 181, 176, 175, 179, 198, 170, 178, 176, 176, 166, 173, 159, 163, 167, + 154, 161, 166, 156, 171, 174, 164, 161, 168, 169, 161, 177, 172, 175, 175, 167, + 164, 168, 163, 173, 180, 176, 173, 177, 175, 171, 178, 181, 177, 173, 172, 174, + 176, 178, 174, 158, 167, 173, 169, 167, 170, 172, 167, 160, 159, 158, 150, 139, + 136, 150, 154, 142, 116, 110, 115, 119, 116, 110, 109, 112, 109, 110, 112, 104, + 111, 98, 24, 30, 60, 70, 85, 101, 103, 112, 109, 111, 93, 106, 112, 110, + 115, 108, 112, 111, 107, 114, 116, 109, 111, 116, 112, 114, 114, 115, 115, 115, + 114, 113, 113, 113, 114, 114, 114, 114, 113, 112, 111, 115, 115, 115, 114, 114, + 113, 113, 113, 111, 111, 112, 92, 92, 91, 90, 90, 90, 90, 90, 94, 94, + 93, 92, 91, 92, 94, 96, 94, 94, 94, 95, 95, 96, 96, 96, 93, 93, + 94, 95, 96, 96, 97, 97, 99, 99, 101, 101, 101, 103, 103, 104, 106, 104, + 100, 98, 97, 95, 93, 97, 102, 104, 105, 105, 103, 101, 99, 98, 98, 96, + 106, 116, 114, 112, 118, 120, 136, 140, 138, 140, 143, 146, 146, 145, 151, 153, + 157, 160, 165, 167, 170, 172, 177, 173, 181, 183, 177, 173, 180, 182, 169, 177, + 164, 167, 170, 157, 161, 165, 155, 163, 167, 164, 168, 175, 176, 172, 172, 168, + 175, 176, 168, 170, 175, 171, 176, 183, 179, 176, 180, 176, 173, 179, 177, 173, + 169, 171, 174, 176, 172, 167, 173, 174, 174, 173, 174, 177, 174, 166, 162, 162, + 161, 157, 147, 142, 152, 150, 138, 130, 129, 121, 117, 118, 118, 110, 110, 109, + 109, 113, 104, 112, 100, 23, 30, 57, 69, 84, 101, 104, 113, 110, 114, 95, + 107, 113, 110, 114, 106, 109, 111, 108, 114, 116, 109, 111, 116, 112, 111, 112, + 112, 113, 113, 112, 111, 111, 114, 115, 115, 115, 115, 114, 113, 112, 115, 115, + 115, 114, 114, 113, 113, 113, 111, 111, 112, 94, 93, 92, 91, 90, 90, 89, + 89, 94, 95, 94, 94, 92, 92, 92, 94, 94, 94, 94, 95, 95, 96, 96, + 96, 94, 94, 94, 95, 96, 96, 97, 97, 98, 97, 97, 98, 99, 100, 102, + 103, 102, 102, 101, 99, 97, 96, 93, 95, 104, 105, 104, 103, 103, 102, 101, + 102, 98, 103, 112, 111, 103, 107, 121, 125, 137, 140, 139, 140, 145, 149, 152, + 154, 156, 156, 157, 162, 169, 170, 167, 165, 176, 174, 181, 167, 184, 168, 180, + 187, 168, 177, 166, 170, 173, 159, 163, 166, 159, 160, 163, 167, 173, 177, 179, + 178, 172, 168, 174, 176, 169, 171, 178, 175, 176, 183, 179, 175, 179, 175, 171, + 178, 173, 171, 169, 172, 176, 175, 170, 163, 181, 176, 172, 172, 178, 180, 173, + 162, 165, 161, 160, 158, 151, 143, 144, 139, 125, 134, 142, 125, 115, 117, 117, + 108, 110, 109, 109, 113, 105, 110, 98, 22, 29, 57, 69, 84, 102, 105, 114, + 111, 115, 96, 108, 113, 110, 113, 105, 108, 112, 108, 114, 117, 110, 111, 116, + 112, 111, 111, 112, 113, 113, 112, 112, 111, 115, 116, 116, 116, 116, 115, 114, + 113, 115, 115, 115, 114, 114, 113, 113, 113, 111, 111, 112, 95, 95, 94, 93, + 93, 93, 93, 93, 93, 95, 95, 95, 93, 92, 91, 92, 94, 94, 94, 95, + 95, 96, 96, 96, 94, 95, 95, 96, 96, 97, 97, 97, 98, 97, 96, 95, + 97, 99, 102, 103, 100, 99, 100, 100, 99, 97, 94, 95, 99, 100, 100, 101, + 103, 102, 103, 104, 107, 111, 114, 104, 98, 110, 129, 131, 139, 143, 142, 142, + 146, 150, 155, 158, 157, 158, 160, 165, 168, 168, 164, 163, 174, 179, 176, 164, + 183, 168, 172, 185, 165, 174, 164, 170, 175, 162, 166, 169, 165, 160, 159, 167, + 172, 172, 172, 174, 175, 170, 176, 176, 168, 170, 177, 173, 173, 180, 176, 172, + 175, 171, 167, 174, 170, 172, 174, 175, 176, 175, 174, 172, 179, 174, 171, 170, + 175, 176, 170, 162, 168, 162, 160, 158, 153, 146, 143, 134, 118, 130, 142, 133, + 122, 121, 117, 110, 110, 107, 108, 113, 105, 109, 96, 19, 29, 57, 69, 85, + 102, 105, 115, 112, 115, 95, 108, 113, 110, 113, 106, 109, 112, 109, 115, 117, + 110, 111, 116, 111, 113, 113, 114, 115, 115, 115, 114, 114, 115, 115, 116, 116, + 115, 114, 113, 113, 115, 115, 115, 114, 114, 113, 113, 113, 112, 112, 112, 93, + 93, 93, 93, 94, 95, 96, 97, 93, 95, 95, 95, 93, 92, 91, 92, 94, + 94, 94, 95, 95, 96, 96, 96, 95, 96, 96, 96, 96, 97, 97, 97, 98, + 96, 95, 95, 96, 98, 102, 102, 98, 98, 100, 101, 99, 98, 95, 94, 95, + 96, 98, 101, 105, 106, 109, 111, 116, 111, 108, 98, 99, 118, 137, 137, 143, + 146, 145, 145, 146, 150, 154, 159, 152, 158, 165, 167, 166, 166, 165, 167, 172, + 183, 169, 174, 175, 174, 162, 179, 168, 177, 166, 172, 175, 160, 163, 166, 169, + 162, 161, 166, 171, 170, 169, 170, 177, 171, 175, 175, 168, 170, 177, 174, 172, + 179, 175, 172, 175, 171, 168, 174, 167, 173, 178, 177, 173, 173, 178, 183, 175, + 171, 172, 172, 172, 172, 171, 171, 174, 165, 159, 158, 157, 151, 147, 140, 128, + 128, 138, 145, 141, 129, 122, 116, 111, 107, 108, 111, 101, 105, 92, 16, 28, + 58, 70, 85, 103, 105, 115, 112, 112, 93, 106, 112, 110, 114, 108, 111, 113, + 110, 116, 118, 110, 111, 116, 111, 112, 113, 114, 115, 115, 115, 115, 115, 114, + 114, 114, 114, 114, 113, 112, 111, 115, 115, 115, 114, 114, 113, 113, 113, 112, + 112, 113, 89, 89, 90, 91, 92, 94, 95, 96, 94, 95, 94, 94, 92, 92, + 92, 94, 94, 94, 94, 95, 95, 96, 96, 96, 96, 96, 96, 97, 97, 97, + 97, 96, 97, 96, 96, 96, 97, 99, 101, 101, 98, 98, 99, 98, 99, 98, + 98, 96, 94, 96, 101, 106, 110, 112, 115, 117, 117, 105, 101, 101, 105, 125, + 141, 141, 147, 148, 150, 150, 150, 150, 155, 159, 153, 161, 167, 168, 167, 165, + 167, 170, 170, 179, 166, 179, 168, 174, 159, 170, 171, 179, 167, 169, 172, 158, + 161, 164, 167, 166, 165, 166, 169, 171, 172, 171, 173, 168, 172, 173, 167, 171, + 179, 177, 172, 179, 176, 172, 176, 173, 170, 177, 164, 171, 177, 175, 170, 170, + 177, 183, 172, 171, 176, 176, 173, 170, 174, 180, 176, 167, 160, 159, 159, 155, + 152, 148, 137, 128, 130, 142, 147, 137, 126, 120, 114, 109, 107, 109, 97, 103, + 90, 13, 30, 59, 71, 86, 103, 105, 114, 111, 111, 93, 106, 112, 111, 115, + 109, 112, 114, 111, 116, 118, 111, 111, 116, 111, 109, 110, 111, 112, 113, 113, + 113, 113, 113, 113, 114, 114, 113, 113, 112, 111, 115, 115, 115, 114, 114, 113, + 113, 113, 113, 113, 113, 91, 91, 91, 91, 92, 94, 94, 95, 94, 94, 93, + 92, 91, 92, 94, 96, 94, 94, 94, 95, 95, 96, 96, 96, 97, 97, 97, + 97, 97, 97, 97, 96, 96, 94, 97, 98, 99, 100, 101, 101, 98, 98, 98, + 97, 98, 98, 99, 98, 94, 98, 104, 109, 112, 115, 116, 117, 113, 101, 103, + 113, 120, 133, 145, 146, 149, 151, 154, 154, 155, 156, 158, 161, 161, 164, 167, + 169, 170, 169, 169, 169, 173, 166, 167, 175, 168, 168, 167, 164, 168, 176, 164, + 167, 171, 158, 163, 167, 162, 168, 170, 163, 162, 168, 172, 168, 171, 165, 171, + 171, 164, 168, 176, 174, 169, 176, 173, 170, 175, 172, 169, 176, 166, 169, 172, + 173, 172, 171, 172, 173, 175, 174, 176, 178, 174, 170, 174, 183, 175, 168, 163, + 164, 162, 157, 154, 153, 144, 138, 133, 133, 138, 140, 134, 122, 119, 112, 107, + 107, 94, 100, 86, 12, 31, 61, 73, 86, 103, 104, 113, 110, 113, 94, 107, + 113, 110, 114, 107, 110, 115, 111, 117, 119, 111, 111, 116, 111, 109, 110, 111, + 112, 113, 113, 113, 113, 114, 114, 115, 115, 114, 113, 113, 112, 115, 115, 115, + 114, 114, 113, 113, 113, 113, 113, 113, 95, 95, 94, 94, 94, 95, 95, 96, + 94, 94, 92, 91, 90, 92, 95, 98, 94, 94, 94, 95, 95, 96, 96, 96, + 97, 97, 97, 97, 97, 97, 97, 96, 96, 95, 98, 100, 101, 101, 101, 101, + 99, 99, 96, 96, 97, 99, 101, 101, 95, 98, 106, 112, 116, 116, 115, 117, + 112, 102, 111, 128, 134, 139, 149, 152, 150, 154, 158, 159, 158, 158, 162, 164, + 171, 169, 168, 169, 173, 173, 171, 167, 176, 156, 172, 167, 170, 160, 175, 162, + 161, 168, 157, 163, 170, 161, 170, 175, 158, 170, 170, 157, 155, 163, 166, 160, + 175, 169, 170, 169, 162, 165, 172, 169, 164, 171, 169, 166, 172, 169, 168, 174, + 171, 169, 171, 174, 178, 176, 170, 163, 177, 173, 174, 176, 174, 169, 172, 179, + 174, 169, 168, 168, 166, 158, 153, 154, 155, 158, 147, 132, 134, 149, 148, 130, + 125, 116, 109, 107, 95, 97, 83, 11, 32, 62, 73, 87, 103, 104, 112, 109, + 115, 96, 108, 113, 110, 113, 105, 108, 115, 112, 117, 119, 111, 111, 116, 111, + 111, 112, 113, 114, 115, 116, 116, 116, 115, 116, 116, 116, 116, 115, 114, 113, + 115, 115, 115, 114, 114, 113, 113, 113, 113, 113, 113, 89, 94, 95, 92, 91, + 94, 94, 93, 95, 95, 93, 94, 94, 95, 94, 94, 97, 96, 95, 94, 94, + 94, 95, 95, 91, 96, 99, 99, 100, 102, 101, 95, 97, 95, 95, 98, 99, + 96, 94, 98, 99, 97, 96, 96, 98, 99, 98, 97, 102, 107, 110, 111, 119, + 125, 119, 105, 109, 113, 118, 125, 135, 144, 151, 155, 158, 156, 154, 154, 158, + 160, 162, 162, 166, 172, 176, 170, 167, 168, 168, 164, 179, 170, 164, 165, 169, + 166, 164, 163, 165, 162, 163, 164, 164, 161, 165, 171, 169, 165, 169, 169, 160, + 158, 163, 161, 170, 166, 166, 169, 168, 164, 166, 172, 166, 171, 173, 165, 164, + 165, 173, 173, 167, 170, 174, 171, 174, 175, 176, 171, 175, 178, 166, 175, 181, + 178, 183, 174, 168, 174, 171, 165, 165, 159, 153, 161, 161, 156, 148, 140, 136, + 137, 140, 140, 135, 119, 111, 124, 96, 98, 71, 11, 33, 60, 72, 88, 104, + 102, 111, 110, 112, 98, 111, 113, 109, 115, 109, 110, 113, 114, 116, 115, 113, + 111, 111, 112, 116, 116, 115, 114, 114, 113, 112, 112, 115, 115, 115, 114, 114, + 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 116, 115, 115, 89, 94, + 95, 92, 91, 94, 94, 93, 95, 95, 93, 94, 94, 95, 94, 94, 94, 94, + 94, 94, 94, 95, 97, 97, 93, 97, 99, 98, 98, 101, 101, 97, 99, 95, + 95, 98, 99, 96, 95, 98, 96, 97, 98, 101, 103, 104, 104, 103, 100, 108, + 117, 121, 123, 121, 112, 103, 116, 121, 124, 129, 137, 144, 151, 153, 156, 156, + 155, 155, 157, 158, 162, 163, 157, 164, 169, 167, 166, 170, 170, 168, 174, 166, + 162, 163, 165, 162, 161, 160, 167, 163, 162, 164, 164, 163, 165, 168, 168, 165, + 171, 173, 163, 160, 163, 158, 163, 161, 164, 168, 167, 162, 164, 169, 164, 167, + 167, 165, 167, 171, 171, 168, 168, 171, 172, 170, 170, 173, 172, 169, 175, 177, + 167, 174, 178, 173, 179, 169, 176, 179, 171, 168, 172, 168, 161, 166, 157, 158, + 155, 148, 138, 135, 136, 136, 146, 132, 119, 125, 100, 107, 74, 11, 33, 60, + 72, 89, 105, 103, 110, 110, 111, 97, 111, 113, 109, 115, 109, 111, 112, 113, + 115, 115, 113, 112, 112, 113, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, + 115, 114, 114, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, + 114, 90, 94, 96, 92, 91, 94, 95, 93, 95, 95, 93, 94, 94, 95, 94, + 94, 93, 93, 93, 94, 95, 96, 98, 99, 95, 98, 98, 96, 97, 101, 101, + 98, 100, 96, 96, 100, 99, 96, 97, 100, 94, 97, 102, 105, 106, 105, 106, + 108, 107, 112, 118, 122, 119, 111, 107, 112, 123, 126, 128, 132, 136, 143, 148, + 151, 153, 156, 158, 157, 156, 156, 160, 163, 154, 160, 165, 165, 165, 168, 170, + 170, 168, 164, 164, 165, 165, 161, 161, 162, 167, 161, 159, 160, 162, 158, 158, + 160, 163, 162, 171, 175, 166, 163, 165, 156, 157, 158, 163, 167, 166, 162, 162, + 165, 162, 163, 162, 163, 169, 174, 171, 164, 168, 171, 170, 166, 165, 168, 169, + 166, 172, 175, 165, 172, 174, 169, 174, 165, 175, 174, 166, 164, 172, 169, 160, + 161, 154, 159, 162, 154, 142, 134, 133, 131, 150, 139, 129, 126, 102, 115, 74, + 13, 33, 61, 73, 90, 106, 103, 110, 109, 110, 95, 110, 112, 109, 115, 110, + 112, 110, 112, 114, 114, 113, 112, 113, 114, 112, 112, 113, 114, 114, 115, 116, + 116, 115, 115, 114, 114, 114, 114, 113, 113, 114, 114, 114, 114, 114, 114, 114, + 114, 113, 113, 114, 90, 95, 96, 93, 92, 94, 95, 93, 95, 95, 93, 94, + 94, 95, 94, 94, 94, 93, 93, 94, 95, 96, 97, 98, 96, 99, 98, 95, + 96, 100, 101, 99, 100, 97, 98, 100, 100, 97, 97, 100, 96, 100, 103, 105, + 104, 104, 106, 110, 125, 118, 113, 114, 112, 108, 116, 129, 129, 130, 131, 134, + 136, 142, 144, 147, 150, 156, 160, 159, 156, 156, 160, 165, 162, 165, 168, 168, + 168, 167, 168, 168, 165, 164, 166, 168, 167, 161, 162, 165, 168, 161, 158, 158, + 159, 156, 155, 157, 157, 157, 166, 169, 163, 164, 166, 157, 154, 156, 159, 160, + 160, 161, 162, 164, 161, 163, 163, 162, 165, 170, 168, 163, 164, 166, 165, 161, + 161, 165, 166, 164, 167, 171, 161, 167, 169, 164, 171, 163, 165, 169, 162, 160, + 167, 166, 159, 163, 158, 162, 163, 157, 148, 142, 138, 134, 142, 143, 139, 128, + 105, 116, 67, 12, 33, 61, 74, 91, 107, 103, 110, 108, 108, 94, 109, 112, + 109, 116, 110, 112, 109, 112, 114, 114, 113, 113, 114, 115, 113, 113, 113, 114, + 114, 115, 115, 115, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 112, 113, 113, 91, 95, 97, 93, 92, 95, 95, 94, 95, + 95, 93, 94, 94, 95, 94, 94, 96, 95, 95, 94, 94, 95, 95, 96, 97, + 99, 99, 95, 96, 100, 100, 98, 103, 100, 100, 102, 102, 98, 99, 102, 100, + 102, 103, 104, 106, 107, 111, 117, 130, 119, 110, 111, 116, 117, 127, 140, 132, + 132, 135, 135, 138, 140, 143, 145, 150, 156, 161, 160, 157, 156, 160, 165, 165, + 166, 168, 169, 169, 163, 165, 166, 166, 166, 167, 170, 168, 162, 163, 166, 171, + 165, 162, 161, 161, 157, 157, 157, 154, 154, 160, 161, 157, 164, 169, 158, 154, + 157, 157, 155, 155, 158, 162, 165, 161, 165, 165, 159, 157, 160, 164, 164, 158, + 160, 159, 156, 157, 162, 164, 162, 161, 166, 158, 165, 167, 162, 171, 164, 162, + 170, 167, 163, 168, 166, 165, 172, 163, 158, 156, 153, 153, 150, 146, 140, 136, + 142, 148, 135, 111, 117, 59, 16, 35, 62, 75, 91, 106, 103, 110, 108, 108, + 94, 108, 111, 108, 115, 110, 112, 109, 112, 114, 114, 113, 113, 114, 115, 115, + 115, 115, 114, 114, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 112, 113, 113, 91, 95, 97, 94, 93, 95, + 96, 94, 95, 95, 93, 94, 94, 95, 94, 94, 97, 96, 95, 94, 94, 94, + 94, 95, 96, 99, 99, 97, 97, 100, 100, 99, 104, 101, 102, 104, 104, 100, + 100, 102, 102, 102, 102, 105, 110, 114, 114, 119, 118, 117, 115, 119, 127, 132, + 137, 140, 135, 135, 135, 137, 138, 140, 142, 145, 150, 157, 161, 162, 161, 160, + 163, 165, 164, 164, 166, 169, 167, 163, 163, 166, 168, 166, 165, 167, 166, 163, + 161, 164, 166, 163, 160, 159, 156, 152, 152, 156, 155, 151, 157, 153, 152, 163, + 168, 158, 156, 157, 157, 151, 151, 156, 163, 164, 161, 165, 165, 157, 153, 155, + 160, 163, 154, 157, 158, 155, 157, 161, 163, 161, 156, 163, 155, 163, 164, 160, + 169, 164, 160, 170, 168, 165, 168, 166, 166, 176, 162, 154, 149, 149, 153, 155, + 150, 144, 136, 139, 151, 140, 119, 120, 53, 23, 37, 64, 75, 90, 105, 102, + 111, 110, 108, 94, 108, 111, 108, 114, 109, 111, 110, 112, 114, 114, 113, 112, + 113, 114, 116, 116, 115, 114, 114, 113, 112, 112, 113, 113, 114, 114, 114, 114, + 115, 115, 114, 114, 114, 114, 114, 114, 114, 114, 113, 113, 114, 91, 96, 97, + 94, 93, 96, 96, 95, 95, 95, 93, 94, 94, 95, 94, 94, 95, 95, 94, + 94, 94, 95, 96, 96, 95, 99, 100, 98, 98, 100, 99, 97, 106, 103, 102, + 104, 105, 100, 100, 103, 105, 102, 103, 106, 113, 112, 107, 107, 101, 113, 121, + 125, 132, 137, 142, 140, 137, 135, 137, 138, 139, 140, 141, 145, 152, 157, 159, + 162, 163, 164, 164, 164, 165, 164, 166, 170, 169, 163, 163, 168, 175, 168, 164, + 167, 167, 165, 163, 164, 163, 164, 163, 161, 155, 148, 152, 160, 156, 154, 157, + 152, 149, 160, 163, 152, 155, 158, 158, 153, 151, 156, 161, 160, 156, 159, 159, + 154, 153, 157, 158, 156, 154, 157, 158, 156, 157, 160, 160, 157, 156, 163, 156, + 162, 163, 157, 167, 162, 162, 167, 164, 160, 165, 163, 162, 168, 157, 153, 151, + 152, 155, 155, 153, 147, 142, 134, 141, 135, 123, 121, 47, 26, 40, 65, 74, + 89, 103, 102, 111, 112, 109, 95, 109, 111, 107, 113, 107, 109, 112, 113, 115, + 115, 113, 112, 112, 113, 114, 114, 114, 114, 114, 114, 114, 114, 113, 113, 113, + 114, 114, 115, 115, 115, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 114, + 91, 95, 97, 93, 93, 95, 96, 95, 95, 95, 93, 94, 94, 95, 94, 94, + 92, 93, 93, 94, 95, 96, 98, 99, 94, 99, 101, 99, 99, 99, 97, 96, + 106, 105, 102, 102, 102, 98, 96, 100, 103, 102, 103, 109, 118, 116, 104, 99, + 102, 124, 132, 127, 126, 134, 139, 139, 133, 134, 136, 137, 141, 143, 144, 149, + 154, 157, 159, 162, 166, 167, 166, 164, 172, 169, 171, 175, 172, 165, 164, 169, + 182, 173, 167, 169, 172, 169, 167, 166, 170, 170, 172, 169, 159, 154, 160, 169, + 159, 157, 160, 154, 150, 160, 161, 145, 154, 159, 160, 155, 154, 158, 159, 155, + 152, 151, 152, 152, 156, 160, 157, 150, 156, 160, 161, 158, 158, 160, 158, 154, + 155, 162, 154, 160, 159, 153, 164, 161, 169, 170, 163, 160, 169, 168, 164, 164, + 155, 154, 159, 158, 157, 155, 154, 152, 147, 131, 134, 133, 129, 132, 54, 36, + 49, 73, 78, 92, 103, 101, 110, 110, 108, 94, 107, 110, 107, 113, 107, 109, + 113, 114, 116, 115, 113, 111, 111, 112, 112, 112, 113, 114, 114, 115, 116, 116, + 113, 113, 113, 114, 114, 115, 115, 115, 114, 114, 114, 114, 114, 114, 114, 114, + 116, 115, 115, 92, 89, 91, 89, 92, 92, 94, 95, 96, 92, 90, 94, 95, + 93, 91, 92, 92, 98, 94, 92, 98, 96, 93, 99, 98, 101, 101, 98, 99, + 101, 102, 101, 102, 104, 103, 100, 94, 89, 86, 88, 96, 99, 105, 117, 125, + 122, 118, 120, 137, 143, 143, 136, 133, 131, 130, 130, 132, 128, 134, 139, 140, + 150, 158, 154, 157, 169, 168, 164, 170, 173, 171, 176, 175, 177, 176, 175, 176, + 177, 170, 162, 194, 174, 178, 185, 173, 169, 174, 166, 181, 169, 161, 164, 166, + 165, 162, 165, 170, 159, 154, 155, 163, 165, 163, 162, 169, 165, 159, 157, 158, + 160, 159, 156, 150, 149, 151, 148, 145, 145, 148, 153, 159, 159, 160, 152, 150, + 164, 167, 149, 155, 146, 155, 164, 155, 147, 152, 157, 168, 166, 166, 166, 169, + 171, 173, 170, 168, 160, 154, 153, 157, 159, 155, 151, 156, 140, 133, 132, 131, + 124, 98, 53, 74, 88, 99, 98, 104, 105, 100, 102, 103, 87, 102, 106, 106, + 112, 109, 113, 112, 112, 115, 115, 113, 113, 117, 118, 113, 113, 113, 114, 113, + 114, 114, 114, 116, 115, 113, 111, 110, 110, 110, 111, 113, 113, 113, 113, 113, + 113, 113, 113, 115, 115, 114, 93, 92, 92, 91, 92, 94, 95, 96, 96, 91, + 90, 94, 95, 93, 92, 93, 92, 97, 94, 92, 98, 96, 94, 98, 94, 97, + 98, 94, 94, 96, 96, 96, 104, 106, 102, 97, 92, 87, 86, 90, 91, 103, + 114, 117, 114, 114, 125, 146, 153, 155, 148, 140, 134, 131, 129, 127, 133, 126, + 133, 139, 139, 144, 149, 145, 160, 168, 163, 156, 162, 165, 167, 173, 161, 162, + 162, 162, 165, 168, 165, 159, 168, 154, 159, 165, 159, 163, 172, 164, 154, 153, + 156, 165, 165, 160, 158, 161, 157, 155, 154, 154, 150, 146, 149, 155, 148, 146, + 145, 146, 149, 150, 148, 145, 143, 144, 145, 144, 144, 144, 149, 153, 135, 139, + 149, 152, 149, 155, 152, 134, 150, 140, 146, 157, 151, 148, 156, 160, 157, 156, + 158, 159, 162, 163, 163, 159, 152, 152, 155, 159, 164, 164, 160, 156, 153, 148, + 148, 141, 127, 125, 122, 102, 95, 98, 103, 108, 116, 111, 103, 104, 98, 86, + 105, 110, 108, 113, 111, 116, 112, 112, 115, 115, 113, 113, 115, 116, 113, 113, + 113, 114, 113, 114, 113, 113, 116, 115, 113, 112, 111, 111, 111, 112, 113, 113, + 113, 113, 113, 113, 113, 113, 115, 114, 113, 94, 93, 93, 92, 92, 93, 94, + 94, 96, 91, 90, 94, 96, 93, 92, 94, 92, 98, 94, 92, 99, 97, 93, + 98, 93, 95, 96, 91, 91, 94, 94, 92, 104, 102, 99, 95, 92, 91, 92, + 97, 101, 107, 112, 111, 107, 112, 131, 154, 149, 146, 140, 135, 135, 133, 132, + 129, 139, 127, 128, 136, 134, 137, 148, 147, 141, 153, 158, 158, 163, 159, 150, + 149, 152, 153, 153, 153, 156, 160, 157, 152, 165, 158, 156, 150, 140, 143, 146, + 134, 142, 147, 155, 162, 163, 158, 160, 161, 157, 152, 153, 152, 147, 141, 142, + 147, 161, 160, 158, 156, 154, 148, 141, 137, 131, 134, 135, 134, 134, 135, 137, + 139, 136, 130, 133, 136, 131, 136, 139, 135, 137, 127, 128, 136, 132, 133, 141, + 142, 137, 141, 148, 154, 156, 152, 145, 140, 153, 152, 151, 152, 152, 154, 155, + 156, 154, 153, 156, 147, 130, 129, 139, 130, 111, 106, 108, 116, 128, 122, 113, + 115, 99, 89, 109, 112, 107, 112, 109, 113, 111, 111, 114, 114, 112, 112, 114, + 115, 112, 112, 113, 113, 113, 113, 114, 114, 116, 115, 114, 113, 112, 112, 112, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 114, 114, 113, 92, 91, 91, 91, + 90, 90, 91, 91, 96, 91, 90, 94, 96, 94, 93, 95, 93, 98, 95, 93, + 99, 97, 93, 98, 95, 96, 96, 93, 93, 97, 97, 94, 99, 96, 92, 91, + 92, 95, 99, 104, 116, 108, 103, 109, 121, 132, 142, 148, 143, 138, 135, 136, + 139, 137, 136, 134, 139, 122, 122, 133, 134, 143, 162, 171, 177, 190, 197, 199, + 205, 200, 189, 187, 189, 191, 191, 190, 191, 192, 186, 178, 185, 188, 186, 176, + 173, 182, 185, 177, 185, 186, 185, 184, 184, 187, 194, 199, 193, 183, 181, 183, + 186, 180, 176, 173, 177, 176, 179, 179, 180, 177, 175, 173, 178, 179, 181, 179, + 178, 175, 175, 175, 179, 166, 166, 166, 159, 158, 164, 168, 168, 156, 153, 156, + 155, 155, 159, 157, 169, 158, 144, 131, 126, 127, 132, 139, 148, 151, 150, 149, + 148, 150, 154, 155, 161, 153, 155, 154, 148, 148, 148, 130, 120, 121, 119, 118, + 128, 130, 127, 127, 110, 97, 110, 109, 105, 112, 108, 109, 110, 111, 113, 113, + 112, 112, 114, 115, 113, 113, 113, 113, 113, 113, 113, 113, 116, 115, 115, 114, + 114, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 112, 91, + 91, 91, 91, 91, 91, 90, 90, 96, 91, 91, 95, 97, 95, 94, 96, 94, + 100, 96, 94, 99, 97, 93, 96, 94, 96, 97, 94, 95, 96, 96, 93, 94, + 91, 90, 92, 98, 103, 109, 115, 117, 108, 106, 118, 137, 148, 148, 142, 141, + 134, 135, 142, 144, 140, 138, 136, 137, 125, 131, 143, 147, 158, 176, 183, 174, + 178, 171, 165, 172, 178, 182, 190, 198, 201, 203, 203, 204, 202, 193, 183, 195, + 204, 201, 191, 193, 201, 201, 199, 201, 198, 191, 187, 189, 194, 201, 204, 193, + 190, 193, 195, 193, 186, 186, 189, 192, 190, 189, 186, 184, 181, 181, 180, 176, + 174, 173, 172, 171, 170, 171, 170, 184, 177, 186, 191, 183, 175, 173, 172, 197, + 184, 180, 180, 179, 181, 184, 178, 178, 173, 164, 154, 142, 131, 119, 118, 123, + 134, 141, 148, 153, 155, 155, 155, 162, 152, 155, 160, 159, 159, 156, 138, 125, + 137, 134, 121, 125, 137, 138, 136, 127, 108, 114, 109, 105, 115, 107, 104, 108, + 109, 111, 111, 111, 111, 113, 114, 112, 112, 113, 113, 113, 113, 114, 114, 115, + 115, 115, 115, 114, 114, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 112, + 112, 111, 92, 92, 93, 94, 94, 94, 93, 93, 95, 91, 91, 95, 97, 96, + 95, 97, 95, 100, 96, 94, 100, 97, 91, 96, 92, 95, 95, 92, 91, 94, + 94, 91, 91, 89, 91, 98, 107, 113, 115, 119, 107, 113, 123, 135, 144, 145, + 147, 145, 134, 128, 133, 140, 138, 132, 129, 131, 136, 137, 151, 163, 163, 169, + 178, 173, 169, 174, 168, 162, 170, 176, 180, 189, 176, 180, 183, 184, 187, 187, + 179, 169, 187, 196, 190, 182, 186, 185, 182, 186, 185, 186, 185, 182, 182, 187, + 189, 187, 175, 186, 197, 196, 182, 173, 182, 197, 199, 197, 193, 188, 184, 183, + 185, 184, 179, 174, 172, 173, 175, 177, 178, 178, 174, 170, 176, 176, 168, 168, + 171, 169, 185, 175, 175, 176, 176, 179, 182, 174, 171, 177, 186, 189, 183, 167, + 146, 139, 128, 130, 123, 121, 126, 134, 142, 146, 151, 149, 155, 161, 154, 155, + 164, 160, 135, 148, 143, 128, 129, 137, 139, 139, 136, 119, 125, 115, 109, 118, + 110, 106, 108, 109, 111, 111, 109, 109, 113, 114, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 114, 114, 114, 114, 113, 112, 113, 113, 113, 113, 113, 113, + 113, 113, 111, 111, 111, 90, 91, 93, 94, 95, 95, 94, 93, 95, 91, 91, + 95, 98, 96, 96, 97, 97, 102, 97, 95, 100, 97, 91, 96, 91, 92, 92, + 89, 92, 95, 96, 90, 89, 87, 92, 100, 111, 116, 116, 117, 113, 126, 138, + 149, 150, 145, 146, 147, 129, 122, 127, 133, 131, 123, 127, 133, 145, 153, 167, + 169, 163, 170, 173, 159, 161, 173, 176, 175, 182, 182, 177, 180, 179, 181, 182, + 183, 187, 190, 186, 179, 179, 189, 187, 189, 200, 196, 193, 208, 192, 199, 202, + 197, 194, 196, 197, 195, 198, 204, 211, 211, 202, 196, 201, 212, 189, 191, 193, + 195, 198, 203, 211, 215, 187, 182, 178, 178, 181, 184, 187, 188, 191, 188, 188, + 177, 167, 178, 191, 185, 178, 171, 174, 176, 175, 179, 182, 174, 189, 183, 174, + 169, 171, 177, 182, 192, 169, 157, 136, 124, 124, 127, 131, 134, 139, 139, 149, + 158, 153, 154, 165, 167, 153, 153, 147, 144, 146, 137, 131, 139, 132, 122, 136, + 126, 112, 116, 111, 108, 110, 111, 113, 113, 109, 109, 111, 112, 111, 111, 113, + 112, 113, 112, 113, 113, 111, 112, 113, 114, 114, 113, 112, 111, 113, 113, 113, + 113, 113, 113, 113, 113, 111, 110, 110, 87, 88, 90, 92, 93, 93, 92, 92, + 95, 91, 91, 95, 98, 96, 96, 98, 97, 103, 97, 94, 100, 95, 91, 96, + 90, 93, 93, 92, 93, 97, 97, 94, 89, 88, 95, 105, 114, 117, 115, 115, + 133, 137, 146, 154, 156, 151, 147, 144, 130, 123, 127, 133, 127, 121, 129, 142, + 152, 158, 168, 159, 153, 164, 170, 157, 168, 178, 174, 169, 175, 178, 178, 184, + 185, 185, 182, 181, 185, 190, 189, 184, 193, 199, 193, 192, 199, 183, 174, 192, + 194, 203, 206, 195, 185, 185, 191, 194, 209, 199, 193, 198, 206, 205, 200, 196, + 208, 208, 206, 200, 194, 191, 192, 193, 200, 192, 188, 186, 188, 191, 193, 194, + 186, 195, 201, 191, 179, 186, 190, 174, 172, 168, 173, 176, 172, 177, 179, 169, + 168, 169, 171, 173, 175, 172, 166, 166, 190, 184, 174, 168, 165, 155, 138, 127, + 130, 125, 134, 149, 153, 155, 155, 151, 167, 152, 144, 160, 163, 136, 126, 140, + 125, 125, 147, 134, 115, 116, 111, 111, 112, 113, 114, 113, 111, 109, 111, 112, + 111, 111, 113, 112, 113, 112, 113, 113, 110, 111, 112, 113, 114, 113, 112, 111, + 113, 113, 113, 113, 113, 113, 113, 113, 110, 110, 110, 90, 94, 94, 91, 92, + 95, 95, 93, 96, 96, 97, 97, 97, 98, 98, 98, 102, 101, 98, 96, 95, + 91, 91, 90, 96, 94, 92, 92, 94, 97, 100, 101, 93, 97, 110, 113, 107, + 111, 129, 137, 138, 152, 161, 157, 150, 147, 139, 130, 126, 134, 136, 124, 115, + 123, 142, 156, 164, 160, 163, 165, 166, 165, 168, 170, 166, 170, 176, 183, 184, + 181, 181, 185, 190, 182, 177, 181, 192, 199, 199, 195, 194, 193, 194, 192, 190, + 191, 196, 198, 198, 199, 201, 203, 205, 206, 208, 205, 203, 194, 190, 194, 199, + 199, 197, 195, 208, 201, 208, 203, 184, 191, 205, 200, 197, 206, 209, 203, 198, + 197, 195, 192, 194, 204, 203, 190, 184, 191, 198, 193, 182, 169, 167, 169, 168, + 176, 184, 180, 180, 175, 168, 170, 180, 184, 177, 168, 166, 164, 164, 172, 178, + 175, 160, 149, 129, 121, 120, 131, 138, 134, 138, 153, 155, 160, 158, 153, 149, + 147, 145, 142, 136, 117, 114, 132, 135, 122, 114, 117, 119, 120, 116, 108, 107, + 110, 111, 110, 110, 111, 113, 112, 111, 111, 114, 116, 113, 114, 114, 114, 114, + 113, 112, 111, 114, 114, 114, 113, 113, 112, 112, 112, 113, 113, 113, 91, 94, + 94, 91, 92, 95, 96, 93, 94, 94, 94, 95, 95, 96, 96, 96, 99, 99, + 96, 95, 94, 93, 93, 94, 89, 94, 99, 101, 100, 101, 102, 102, 104, 99, + 105, 108, 105, 115, 130, 134, 146, 153, 153, 148, 143, 140, 136, 129, 129, 128, + 128, 130, 139, 149, 153, 148, 156, 155, 160, 163, 168, 170, 174, 176, 172, 171, + 176, 182, 187, 183, 185, 185, 185, 179, 179, 181, 191, 194, 194, 188, 194, 195, + 197, 196, 194, 192, 194, 195, 196, 198, 200, 202, 205, 207, 211, 207, 196, 195, + 197, 200, 201, 200, 199, 199, 201, 196, 204, 205, 195, 201, 208, 198, 202, 208, + 207, 201, 199, 204, 206, 204, 183, 199, 210, 204, 200, 197, 190, 178, 187, 176, + 178, 174, 162, 164, 173, 172, 187, 183, 179, 179, 180, 179, 173, 162, 155, 151, + 151, 157, 166, 171, 168, 165, 177, 150, 126, 120, 126, 127, 124, 130, 145, 148, + 147, 152, 158, 158, 147, 135, 139, 129, 124, 131, 136, 135, 129, 124, 119, 121, + 121, 115, 111, 110, 112, 110, 110, 111, 113, 112, 111, 111, 114, 116, 113, 114, + 114, 114, 114, 113, 112, 111, 114, 114, 114, 113, 113, 112, 112, 112, 113, 113, + 113, 91, 94, 94, 92, 92, 95, 96, 93, 94, 94, 95, 95, 95, 96, 96, + 96, 96, 96, 95, 95, 95, 95, 96, 97, 91, 97, 102, 105, 106, 105, 108, + 111, 116, 107, 106, 110, 115, 130, 143, 144, 156, 157, 154, 146, 139, 135, 128, + 120, 121, 123, 129, 140, 154, 163, 157, 143, 149, 151, 155, 161, 167, 171, 176, + 177, 175, 169, 173, 177, 183, 180, 182, 182, 179, 177, 181, 182, 187, 186, 187, + 182, 188, 191, 193, 193, 190, 187, 188, 187, 190, 192, 193, 196, 199, 203, 207, + 207, 191, 195, 202, 203, 199, 196, 195, 196, 209, 203, 204, 202, 196, 200, 202, + 190, 204, 209, 211, 212, 213, 214, 210, 204, 187, 195, 199, 190, 189, 194, 196, + 194, 183, 182, 187, 180, 164, 164, 178, 183, 176, 177, 178, 179, 179, 177, 174, + 168, 162, 155, 153, 154, 160, 162, 163, 162, 166, 175, 174, 156, 129, 109, 108, + 121, 142, 142, 138, 138, 145, 148, 144, 138, 139, 138, 133, 127, 132, 143, 143, + 134, 122, 126, 127, 122, 115, 113, 112, 112, 110, 111, 111, 112, 111, 111, 114, + 116, 113, 114, 114, 114, 114, 113, 112, 111, 114, 114, 114, 113, 113, 112, 112, + 112, 113, 113, 113, 91, 94, 95, 92, 92, 96, 96, 93, 97, 97, 97, 98, + 98, 98, 99, 99, 97, 95, 94, 94, 96, 96, 96, 98, 101, 101, 102, 104, + 106, 110, 113, 117, 117, 110, 112, 120, 126, 143, 159, 160, 159, 159, 154, 145, + 133, 123, 114, 108, 116, 131, 147, 154, 154, 154, 150, 145, 149, 150, 156, 162, + 167, 171, 175, 176, 173, 169, 173, 174, 175, 170, 175, 178, 179, 178, 182, 180, + 182, 180, 182, 183, 183, 185, 187, 187, 185, 184, 183, 184, 188, 188, 189, 191, + 193, 197, 199, 201, 194, 199, 203, 201, 197, 195, 194, 193, 217, 212, 206, 198, + 194, 199, 204, 201, 198, 195, 195, 192, 196, 195, 194, 188, 202, 200, 190, 177, + 173, 182, 193, 200, 187, 187, 192, 187, 171, 173, 187, 192, 177, 174, 174, 177, + 179, 178, 177, 175, 165, 162, 162, 161, 159, 155, 152, 150, 160, 165, 169, 166, + 158, 144, 121, 107, 121, 130, 131, 132, 134, 138, 143, 146, 140, 142, 141, 131, + 129, 137, 145, 144, 132, 130, 131, 126, 120, 119, 116, 110, 112, 111, 111, 110, + 111, 111, 114, 116, 113, 114, 114, 114, 114, 113, 112, 111, 114, 114, 114, 113, + 113, 112, 112, 112, 113, 113, 113, 92, 95, 95, 93, 93, 96, 97, 94, 97, + 97, 98, 98, 99, 99, 99, 99, 98, 97, 96, 95, 96, 95, 96, 96, 105, + 103, 103, 108, 114, 116, 112, 112, 112, 113, 122, 129, 133, 147, 161, 164, 152, + 150, 144, 133, 120, 110, 110, 111, 129, 143, 159, 164, 157, 154, 155, 153, 157, + 160, 164, 168, 171, 174, 176, 176, 172, 173, 178, 178, 171, 165, 170, 179, 179, + 179, 179, 176, 175, 174, 179, 182, 182, 183, 184, 183, 181, 182, 185, 188, 188, + 188, 188, 188, 190, 191, 192, 194, 202, 207, 207, 203, 203, 207, 207, 203, 209, + 215, 212, 205, 205, 211, 218, 224, 227, 214, 202, 196, 199, 204, 212, 215, 203, + 203, 198, 189, 183, 181, 179, 178, 199, 197, 198, 194, 181, 182, 188, 188, 195, + 184, 176, 179, 181, 179, 175, 175, 169, 168, 167, 167, 162, 159, 159, 158, 159, + 159, 156, 156, 160, 160, 147, 137, 102, 109, 115, 125, 137, 143, 144, 144, 144, + 144, 144, 140, 130, 127, 140, 149, 142, 135, 133, 128, 126, 124, 117, 109, 113, + 113, 111, 110, 111, 111, 114, 116, 113, 114, 114, 114, 114, 113, 112, 111, 114, + 114, 114, 113, 113, 112, 112, 112, 113, 113, 113, 92, 95, 96, 93, 93, 97, + 97, 94, 95, 96, 96, 96, 97, 97, 97, 98, 100, 99, 98, 96, 96, 94, + 95, 97, 100, 101, 106, 114, 119, 115, 103, 101, 117, 126, 138, 143, 142, 148, + 162, 161, 154, 144, 134, 126, 119, 121, 133, 139, 146, 145, 151, 156, 160, 166, + 163, 155, 162, 165, 169, 171, 171, 172, 174, 175, 174, 176, 184, 183, 178, 170, + 176, 183, 182, 179, 178, 174, 174, 173, 178, 181, 185, 187, 188, 185, 186, 188, + 193, 197, 189, 189, 189, 190, 189, 188, 187, 188, 196, 202, 202, 198, 201, 209, + 211, 206, 195, 211, 212, 207, 210, 208, 207, 214, 201, 195, 196, 197, 201, 197, + 197, 199, 198, 197, 197, 195, 192, 188, 184, 184, 197, 191, 195, 193, 186, 189, + 194, 189, 192, 180, 173, 178, 183, 180, 177, 179, 184, 180, 174, 167, 164, 163, + 165, 167, 153, 161, 167, 164, 156, 151, 154, 165, 138, 122, 105, 105, 123, 139, + 142, 140, 146, 147, 148, 147, 137, 128, 136, 144, 139, 135, 135, 132, 129, 126, + 120, 111, 113, 113, 111, 110, 110, 111, 114, 116, 113, 114, 114, 114, 114, 113, + 112, 111, 114, 114, 114, 113, 113, 112, 112, 112, 113, 113, 113, 92, 95, 96, + 93, 94, 97, 97, 94, 96, 96, 96, 97, 97, 97, 98, 98, 100, 99, 98, + 96, 96, 95, 97, 99, 99, 103, 108, 109, 107, 101, 97, 101, 131, 140, 151, + 156, 151, 156, 164, 162, 154, 140, 131, 133, 141, 149, 159, 160, 146, 139, 142, + 147, 159, 168, 167, 160, 169, 171, 172, 174, 172, 170, 169, 171, 177, 177, 182, + 186, 188, 183, 184, 187, 187, 184, 184, 182, 183, 182, 184, 184, 190, 192, 194, + 194, 194, 193, 196, 198, 193, 194, 196, 197, 196, 194, 190, 186, 187, 196, 200, + 194, 193, 199, 201, 197, 192, 208, 205, 199, 205, 201, 192, 200, 202, 204, 212, + 219, 218, 208, 202, 202, 204, 199, 196, 196, 197, 198, 200, 201, 192, 188, 195, + 197, 191, 193, 199, 194, 179, 170, 171, 180, 182, 176, 175, 185, 196, 193, 183, + 175, 170, 168, 166, 163, 172, 159, 152, 163, 173, 167, 155, 149, 171, 151, 124, + 111, 116, 127, 139, 145, 147, 152, 151, 146, 143, 143, 142, 132, 124, 127, 139, + 137, 130, 125, 118, 114, 114, 113, 111, 110, 110, 110, 113, 115, 113, 114, 114, + 114, 114, 113, 112, 111, 114, 114, 114, 113, 113, 112, 112, 112, 113, 113, 113, + 91, 95, 95, 92, 94, 97, 99, 97, 100, 100, 101, 101, 101, 100, 100, 100, + 99, 97, 97, 96, 94, 95, 98, 101, 103, 110, 111, 106, 97, 95, 101, 116, + 140, 144, 153, 156, 153, 158, 164, 155, 144, 128, 123, 136, 153, 161, 162, 153, + 144, 143, 149, 151, 155, 164, 169, 171, 175, 177, 180, 180, 179, 176, 174, 177, + 175, 172, 173, 183, 191, 191, 187, 184, 189, 188, 188, 189, 190, 190, 188, 186, + 188, 191, 195, 195, 195, 194, 194, 194, 193, 195, 197, 199, 199, 196, 193, 187, + 190, 205, 213, 204, 195, 196, 198, 195, 200, 212, 202, 195, 210, 211, 203, 211, + 218, 212, 206, 203, 198, 194, 200, 211, 209, 208, 205, 206, 204, 199, 193, 191, + 199, 197, 203, 203, 189, 187, 191, 187, 181, 179, 183, 191, 187, 174, 172, 183, + 184, 185, 180, 178, 179, 175, 167, 161, 168, 164, 166, 168, 156, 143, 149, 168, + 152, 155, 152, 140, 124, 118, 126, 139, 134, 146, 143, 137, 144, 159, 153, 125, + 115, 129, 149, 147, 134, 123, 120, 119, 117, 117, 114, 112, 108, 108, 109, 111, + 112, 113, 113, 113, 113, 112, 111, 110, 113, 113, 113, 112, 112, 111, 111, 111, + 113, 113, 113, 90, 90, 90, 92, 94, 96, 99, 100, 101, 101, 100, 101, 99, + 99, 97, 97, 100, 100, 99, 97, 94, 97, 99, 104, 114, 110, 105, 104, 112, + 121, 128, 132, 137, 145, 157, 157, 150, 153, 152, 136, 125, 125, 129, 144, 163, + 160, 147, 144, 147, 148, 154, 158, 161, 165, 169, 171, 173, 173, 174, 175, 177, + 179, 182, 181, 170, 175, 181, 182, 180, 179, 182, 186, 193, 185, 187, 189, 184, + 184, 183, 173, 181, 186, 192, 191, 187, 185, 189, 193, 185, 198, 206, 199, 187, + 186, 193, 197, 197, 198, 195, 192, 195, 203, 207, 206, 206, 202, 199, 200, 206, + 209, 208, 206, 203, 199, 201, 208, 205, 196, 195, 202, 207, 211, 211, 205, 200, + 200, 200, 198, 204, 203, 202, 199, 192, 187, 193, 203, 188, 189, 186, 180, 178, + 181, 182, 182, 187, 180, 171, 167, 169, 171, 167, 163, 169, 168, 165, 164, 162, + 158, 156, 153, 156, 159, 157, 153, 151, 141, 118, 99, 106, 122, 130, 131, 140, + 152, 153, 136, 143, 131, 134, 142, 144, 135, 125, 123, 121, 120, 118, 114, 110, + 106, 101, 104, 107, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111, 110, 110, + 109, 109, 109, 113, 113, 113, 89, 89, 90, 92, 94, 97, 100, 101, 103, 103, + 103, 102, 101, 100, 98, 97, 101, 98, 96, 97, 100, 102, 106, 110, 108, 108, + 107, 110, 120, 130, 137, 141, 153, 150, 153, 151, 145, 146, 147, 133, 120, 130, + 137, 146, 155, 152, 143, 145, 148, 150, 152, 156, 160, 163, 165, 166, 175, 175, + 176, 177, 179, 180, 180, 180, 173, 175, 178, 179, 180, 180, 183, 186, 182, 174, + 176, 182, 181, 185, 186, 177, 183, 185, 186, 186, 185, 184, 184, 184, 184, 191, + 193, 189, 185, 188, 192, 194, 195, 200, 205, 205, 207, 207, 203, 196, 203, 205, + 209, 215, 220, 221, 217, 213, 198, 198, 203, 210, 211, 208, 209, 212, 199, 207, + 210, 206, 202, 203, 205, 206, 204, 197, 193, 198, 201, 196, 190, 186, 190, 193, + 192, 185, 183, 184, 185, 184, 181, 175, 170, 170, 173, 173, 168, 162, 171, 168, + 165, 164, 164, 162, 156, 153, 150, 152, 151, 149, 148, 144, 134, 124, 106, 105, + 111, 129, 139, 138, 141, 146, 138, 130, 127, 133, 138, 136, 133, 126, 123, 120, + 119, 114, 110, 105, 101, 103, 107, 110, 110, 110, 110, 110, 110, 110, 111, 111, + 111, 110, 110, 109, 109, 109, 112, 112, 112, 90, 89, 90, 93, 94, 97, 99, + 100, 104, 103, 101, 100, 99, 98, 98, 96, 96, 93, 93, 97, 104, 109, 110, + 114, 103, 107, 109, 117, 128, 138, 144, 147, 152, 148, 156, 162, 156, 146, 137, + 119, 123, 146, 158, 156, 155, 151, 146, 148, 155, 153, 153, 157, 163, 166, 166, + 164, 174, 175, 177, 178, 178, 177, 176, 174, 177, 176, 177, 178, 179, 181, 183, + 184, 181, 171, 173, 180, 182, 189, 191, 181, 191, 189, 187, 188, 189, 189, 186, + 183, 193, 193, 191, 188, 191, 197, 197, 193, 197, 199, 198, 195, 195, 199, 201, + 199, 201, 205, 209, 211, 209, 207, 204, 202, 212, 214, 214, 207, 201, 196, 192, + 187, 200, 208, 212, 207, 202, 202, 203, 203, 204, 197, 194, 198, 203, 198, 189, + 184, 186, 193, 195, 188, 184, 183, 184, 184, 179, 175, 173, 175, 178, 176, 169, + 162, 172, 168, 164, 165, 167, 167, 161, 156, 152, 153, 151, 150, 152, 155, 157, + 157, 136, 115, 104, 114, 130, 134, 133, 136, 132, 129, 123, 121, 126, 133, 134, + 128, 121, 117, 114, 112, 110, 109, 108, 108, 112, 112, 112, 112, 112, 112, 113, + 113, 114, 114, 114, 113, 114, 113, 113, 112, 111, 111, 111, 91, 91, 93, 94, + 95, 97, 98, 98, 100, 100, 100, 97, 98, 97, 95, 93, 90, 87, 92, 100, + 106, 110, 108, 110, 107, 112, 120, 127, 138, 146, 151, 153, 166, 154, 152, 152, + 140, 134, 136, 131, 130, 158, 170, 161, 156, 153, 149, 149, 161, 158, 156, 160, + 168, 172, 171, 168, 170, 171, 174, 176, 176, 175, 173, 171, 177, 174, 173, 174, + 177, 180, 181, 181, 191, 180, 179, 184, 185, 191, 191, 180, 190, 190, 190, 190, + 189, 189, 187, 185, 195, 195, 193, 192, 195, 200, 197, 191, 190, 193, 193, 190, + 191, 197, 201, 202, 202, 204, 204, 200, 195, 194, 198, 203, 203, 209, 210, 204, + 204, 212, 214, 210, 198, 201, 203, 201, 201, 203, 201, 197, 201, 200, 201, 198, + 193, 187, 192, 201, 177, 187, 192, 187, 181, 180, 181, 182, 177, 175, 174, 176, + 178, 177, 170, 165, 172, 167, 163, 164, 168, 169, 164, 158, 161, 158, 156, 151, + 149, 150, 155, 161, 149, 147, 129, 108, 106, 121, 126, 124, 135, 139, 130, 119, + 119, 127, 133, 130, 119, 113, 110, 109, 110, 112, 115, 114, 114, 113, 113, 113, + 113, 114, 114, 116, 117, 117, 117, 116, 117, 116, 116, 115, 112, 111, 111, 93, + 93, 94, 94, 95, 95, 97, 97, 96, 96, 96, 93, 94, 93, 91, 90, 87, + 88, 94, 103, 109, 111, 109, 109, 118, 125, 133, 139, 146, 150, 152, 153, 153, + 149, 156, 153, 135, 125, 125, 121, 137, 159, 166, 158, 158, 159, 153, 153, 162, + 159, 156, 160, 168, 172, 172, 169, 166, 168, 171, 174, 176, 176, 175, 173, 178, + 176, 174, 175, 178, 180, 181, 181, 196, 185, 185, 188, 187, 190, 189, 178, 184, + 188, 191, 190, 186, 184, 186, 189, 183, 189, 193, 192, 194, 196, 194, 190, 178, + 190, 202, 207, 206, 204, 198, 191, 199, 203, 205, 204, 201, 204, 212, 220, 221, + 224, 217, 202, 194, 197, 197, 192, 197, 196, 195, 197, 205, 211, 207, 199, 198, + 199, 203, 201, 195, 190, 196, 205, 172, 182, 191, 188, 181, 180, 183, 184, 178, + 176, 173, 173, 175, 175, 172, 169, 169, 165, 161, 162, 166, 168, 165, 160, 161, + 157, 156, 152, 147, 144, 146, 152, 145, 163, 160, 129, 102, 96, 105, 116, 134, + 144, 139, 127, 117, 121, 130, 133, 119, 110, 106, 105, 110, 115, 122, 121, 117, + 114, 114, 114, 114, 116, 116, 117, 118, 118, 120, 119, 120, 119, 119, 116, 114, + 111, 111, 95, 95, 95, 95, 95, 95, 95, 95, 95, 94, 93, 92, 91, 91, + 90, 90, 90, 94, 102, 107, 111, 111, 112, 116, 126, 134, 139, 144, 147, 148, + 147, 147, 136, 137, 144, 138, 122, 121, 127, 117, 145, 157, 157, 153, 161, 164, + 159, 160, 158, 156, 154, 156, 160, 164, 165, 164, 165, 167, 170, 173, 176, 177, + 178, 178, 179, 177, 178, 178, 179, 180, 181, 182, 189, 181, 185, 189, 186, 188, + 188, 179, 186, 192, 197, 195, 190, 187, 190, 195, 178, 186, 193, 194, 194, 197, + 198, 197, 184, 194, 201, 201, 198, 197, 195, 191, 193, 199, 205, 207, 204, 203, + 205, 208, 194, 196, 196, 194, 197, 207, 216, 220, 210, 206, 200, 198, 204, 209, + 203, 194, 199, 194, 195, 202, 207, 202, 195, 189, 176, 184, 192, 188, 184, 184, + 187, 186, 179, 176, 173, 172, 173, 174, 174, 174, 166, 164, 162, 162, 164, 165, + 164, 163, 157, 153, 153, 156, 152, 149, 149, 155, 159, 151, 147, 148, 134, 108, + 90, 97, 126, 136, 137, 130, 121, 117, 126, 134, 122, 111, 105, 103, 110, 117, + 125, 125, 117, 113, 113, 114, 114, 116, 116, 117, 118, 120, 120, 120, 120, 120, + 120, 118, 114, 111, 111, 96, 96, 96, 95, 95, 94, 94, 92, 94, 93, 93, + 91, 92, 92, 93, 93, 97, 102, 106, 107, 108, 110, 118, 127, 134, 140, 143, + 144, 144, 141, 140, 139, 148, 140, 128, 111, 110, 142, 170, 167, 160, 162, 157, + 156, 163, 163, 158, 163, 156, 155, 153, 152, 152, 154, 155, 156, 163, 164, 166, + 168, 171, 173, 175, 176, 175, 177, 180, 180, 178, 177, 179, 182, 179, 177, 185, + 191, 186, 187, 189, 182, 192, 194, 196, 195, 192, 190, 190, 192, 186, 191, 193, + 192, 192, 197, 199, 198, 194, 197, 194, 186, 183, 189, 197, 202, 194, 197, 199, + 198, 194, 191, 191, 192, 219, 216, 214, 213, 210, 208, 211, 217, 214, 213, 208, + 201, 200, 203, 201, 196, 202, 196, 195, 201, 205, 199, 190, 184, 185, 190, 192, + 189, 187, 188, 187, 185, 178, 176, 175, 174, 175, 175, 175, 175, 163, 164, 164, + 163, 161, 161, 163, 166, 159, 155, 156, 160, 159, 155, 154, 157, 165, 145, 136, + 147, 154, 135, 103, 94, 119, 123, 127, 134, 132, 122, 123, 130, 130, 116, 107, + 105, 109, 116, 125, 125, 116, 112, 112, 113, 113, 114, 114, 116, 117, 118, 118, + 119, 119, 119, 119, 116, 113, 110, 110, 98, 98, 96, 95, 94, 92, 92, 92, + 94, 94, 94, 95, 95, 97, 97, 100, 104, 109, 110, 108, 104, 108, 120, 133, + 138, 140, 141, 140, 136, 133, 130, 127, 117, 127, 141, 150, 163, 195, 201, 176, + 171, 167, 159, 158, 163, 157, 153, 163, 158, 157, 155, 152, 148, 148, 150, 152, + 160, 160, 161, 163, 165, 167, 169, 171, 168, 173, 178, 177, 173, 171, 173, 177, + 178, 176, 188, 193, 187, 186, 190, 184, 191, 189, 187, 186, 187, 185, 182, 179, + 195, 194, 189, 184, 185, 190, 192, 189, 188, 195, 198, 195, 192, 196, 202, 204, + 198, 197, 194, 191, 191, 193, 199, 203, 203, 198, 200, 206, 206, 199, 201, 210, + 198, 203, 205, 200, 198, 204, 210, 214, 200, 201, 202, 199, 191, 183, 185, 192, + 190, 193, 192, 187, 186, 187, 185, 181, 177, 177, 177, 177, 178, 178, 177, 176, + 163, 166, 167, 165, 160, 159, 164, 168, 166, 160, 159, 163, 163, 156, 152, 155, + 145, 157, 158, 146, 138, 135, 124, 119, 116, 110, 115, 133, 139, 127, 124, 129, + 139, 125, 112, 107, 109, 114, 122, 123, 113, 110, 110, 110, 112, 112, 113, 113, + 115, 115, 117, 116, 117, 116, 118, 115, 112, 109, 109, 99, 98, 96, 95, 94, + 92, 92, 90, 90, 91, 94, 99, 102, 101, 99, 100, 119, 113, 106, 105, 111, + 120, 128, 136, 136, 137, 135, 128, 127, 132, 139, 138, 167, 171, 181, 185, 183, + 180, 180, 179, 164, 161, 160, 160, 162, 163, 165, 166, 163, 164, 163, 160, 155, + 151, 149, 150, 143, 147, 152, 154, 155, 158, 162, 166, 170, 164, 165, 173, 178, + 175, 178, 185, 182, 178, 175, 180, 188, 191, 187, 182, 206, 202, 198, 193, 190, + 190, 191, 193, 193, 194, 196, 197, 192, 186, 189, 195, 184, 190, 197, 201, 199, + 195, 191, 189, 192, 195, 197, 197, 195, 195, 197, 200, 199, 204, 204, 202, 212, + 225, 224, 213, 203, 195, 191, 200, 210, 210, 203, 198, 211, 194, 184, 189, 194, + 190, 189, 193, 191, 189, 182, 182, 188, 181, 175, 184, 159, 174, 180, 171, 166, + 171, 173, 168, 176, 171, 167, 169, 172, 169, 157, 146, 161, 158, 162, 170, 170, + 163, 158, 159, 155, 155, 153, 152, 149, 146, 145, 148, 134, 104, 105, 132, 139, + 127, 129, 137, 139, 139, 124, 105, 105, 112, 117, 119, 111, 109, 107, 105, 109, + 113, 113, 107, 112, 112, 112, 112, 113, 114, 114, 114, 106, 113, 111, 98, 98, + 98, 95, 94, 92, 91, 91, 95, 97, 101, 102, 101, 101, 106, 119, 118, 115, + 109, 115, 123, 128, 129, 130, 122, 133, 143, 148, 152, 164, 175, 178, 179, 179, + 183, 182, 174, 169, 164, 164, 157, 155, 154, 156, 157, 158, 159, 159, 161, 159, + 157, 157, 158, 156, 152, 148, 143, 145, 145, 143, 142, 143, 148, 151, 158, 163, + 173, 179, 175, 168, 172, 181, 181, 179, 179, 184, 190, 193, 192, 189, 189, 189, + 189, 190, 191, 192, 194, 195, 193, 194, 197, 199, 196, 191, 193, 199, 198, 196, + 193, 190, 188, 191, 197, 201, 195, 198, 200, 200, 198, 197, 198, 200, 203, 210, + 210, 202, 201, 208, 210, 204, 194, 192, 195, 203, 206, 203, 199, 198, 196, 189, + 191, 200, 202, 193, 190, 192, 203, 197, 186, 181, 186, 183, 178, 181, 179, 172, + 175, 185, 182, 167, 159, 162, 164, 165, 163, 159, 154, 154, 159, 164, 165, 163, + 165, 170, 170, 163, 161, 164, 166, 156, 147, 145, 150, 149, 142, 134, 141, 137, + 134, 120, 116, 129, 136, 117, 133, 144, 138, 124, 118, 113, 107, 104, 106, 110, + 111, 107, 106, 108, 106, 103, 108, 108, 109, 109, 109, 109, 110, 110, 109, 116, + 112, 96, 97, 97, 95, 94, 93, 92, 94, 99, 99, 101, 105, 108, 110, 111, + 116, 112, 117, 116, 117, 120, 122, 133, 141, 169, 181, 191, 189, 181, 180, 184, + 183, 172, 172, 174, 171, 166, 159, 158, 160, 161, 161, 160, 160, 160, 161, 163, + 163, 166, 161, 159, 162, 167, 167, 161, 154, 153, 151, 148, 142, 138, 137, 139, + 142, 153, 152, 154, 158, 164, 171, 176, 181, 179, 180, 182, 186, 188, 190, 191, + 191, 186, 187, 189, 190, 190, 190, 189, 188, 191, 192, 196, 200, 198, 194, 195, + 200, 194, 202, 212, 218, 216, 209, 201, 196, 197, 199, 201, 201, 199, 198, 197, + 197, 197, 208, 213, 205, 198, 203, 209, 211, 212, 208, 204, 199, 193, 189, 194, + 202, 205, 196, 190, 189, 185, 176, 176, 182, 185, 182, 177, 174, 179, 183, 180, + 175, 190, 171, 162, 167, 166, 156, 149, 151, 158, 163, 168, 168, 163, 158, 157, + 160, 163, 165, 167, 169, 166, 160, 162, 168, 171, 163, 154, 150, 152, 149, 142, + 135, 142, 154, 152, 125, 113, 132, 136, 108, 120, 134, 133, 125, 123, 119, 118, + 121, 105, 111, 116, 113, 108, 110, 110, 109, 109, 109, 109, 109, 109, 109, 111, + 111, 111, 117, 114, 95, 96, 95, 94, 95, 93, 94, 95, 98, 96, 98, 111, + 123, 122, 106, 98, 116, 128, 130, 123, 113, 120, 147, 172, 173, 181, 188, 185, + 177, 172, 172, 165, 161, 160, 162, 161, 158, 157, 158, 160, 166, 168, 166, 166, + 166, 166, 168, 168, 167, 164, 164, 167, 170, 170, 165, 159, 161, 159, 155, 149, + 143, 139, 137, 137, 133, 138, 145, 152, 158, 162, 168, 173, 173, 177, 180, 183, + 182, 182, 184, 187, 190, 190, 191, 191, 190, 189, 188, 187, 189, 190, 194, 198, + 196, 192, 192, 196, 198, 198, 198, 196, 194, 194, 196, 198, 196, 198, 199, 199, + 198, 195, 194, 192, 191, 203, 211, 207, 203, 205, 210, 213, 194, 201, 212, 218, + 211, 195, 184, 181, 197, 191, 188, 191, 195, 195, 199, 205, 202, 204, 209, 208, + 205, 209, 209, 197, 187, 188, 183, 174, 176, 185, 181, 169, 166, 162, 161, 166, + 172, 170, 160, 151, 156, 161, 165, 164, 160, 157, 159, 164, 162, 168, 172, 164, + 152, 142, 144, 147, 143, 141, 149, 148, 137, 133, 126, 108, 122, 131, 129, 121, + 121, 117, 113, 113, 108, 112, 115, 113, 111, 113, 115, 112, 113, 112, 112, 111, + 111, 111, 111, 112, 110, 117, 115, 95, 96, 95, 94, 95, 93, 94, 98, 97, + 100, 109, 118, 123, 120, 105, 99, 131, 135, 134, 129, 124, 135, 160, 181, 166, + 167, 167, 166, 166, 168, 165, 158, 169, 166, 166, 163, 159, 158, 157, 158, 164, + 164, 164, 164, 164, 165, 166, 167, 162, 164, 166, 166, 164, 162, 160, 159, 160, + 159, 157, 153, 148, 142, 135, 132, 117, 128, 144, 154, 152, 145, 150, 160, 163, + 169, 174, 177, 177, 178, 180, 186, 185, 185, 185, 187, 189, 191, 194, 195, 192, + 191, 193, 196, 195, 191, 190, 194, 193, 193, 193, 191, 189, 190, 192, 195, 198, + 197, 197, 197, 197, 195, 193, 191, 194, 201, 207, 208, 206, 205, 203, 200, 217, + 204, 190, 185, 187, 194, 208, 220, 202, 200, 203, 212, 215, 206, 193, 183, 175, + 170, 173, 165, 147, 146, 150, 139, 136, 151, 163, 165, 172, 182, 182, 174, 174, + 163, 152, 150, 157, 162, 162, 159, 152, 160, 165, 164, 159, 157, 158, 160, 154, + 164, 172, 168, 156, 145, 146, 149, 148, 137, 145, 159, 151, 135, 122, 112, 99, + 111, 113, 115, 125, 124, 118, 118, 117, 117, 114, 111, 113, 118, 117, 111, 113, + 112, 109, 109, 107, 107, 106, 107, 109, 116, 115, 94, 95, 94, 94, 92, 93, + 95, 98, 97, 110, 121, 118, 109, 105, 111, 125, 135, 129, 124, 133, 144, 155, + 161, 160, 173, 168, 164, 160, 163, 167, 165, 158, 167, 166, 165, 165, 164, 164, + 163, 162, 165, 165, 165, 165, 164, 165, 165, 166, 166, 168, 169, 167, 163, 161, + 161, 162, 160, 160, 159, 158, 155, 148, 139, 133, 137, 109, 93, 108, 132, 142, + 148, 159, 153, 158, 164, 170, 173, 177, 181, 185, 183, 183, 183, 183, 184, 186, + 189, 190, 195, 192, 192, 195, 195, 192, 192, 195, 186, 193, 202, 207, 206, 200, + 194, 191, 200, 198, 196, 196, 196, 196, 195, 193, 188, 192, 197, 201, 204, 203, + 199, 194, 191, 192, 202, 215, 219, 208, 192, 182, 193, 186, 179, 175, 170, 156, + 137, 122, 132, 111, 107, 98, 74, 72, 85, 81, 74, 70, 79, 94, 101, 107, + 126, 149, 166, 169, 170, 166, 159, 155, 157, 159, 152, 160, 164, 162, 160, 159, + 161, 159, 156, 156, 158, 158, 161, 154, 146, 142, 147, 141, 144, 148, 144, 147, + 144, 131, 110, 115, 106, 101, 112, 119, 124, 133, 132, 130, 125, 122, 123, 127, + 124, 115, 119, 117, 116, 113, 113, 111, 110, 111, 112, 118, 115, 96, 96, 95, + 94, 92, 92, 94, 96, 103, 111, 115, 109, 101, 104, 119, 136, 133, 130, 129, + 141, 156, 161, 158, 151, 148, 146, 146, 144, 150, 159, 165, 165, 161, 162, 165, + 167, 171, 172, 173, 171, 173, 171, 170, 168, 166, 166, 165, 166, 173, 172, 169, + 168, 167, 167, 167, 166, 165, 163, 162, 161, 158, 153, 144, 139, 145, 83, 40, + 54, 90, 110, 128, 148, 147, 150, 155, 162, 166, 171, 173, 175, 181, 182, 183, + 183, 184, 184, 183, 183, 194, 190, 188, 191, 192, 191, 193, 197, 195, 192, 187, + 183, 183, 188, 196, 203, 200, 197, 193, 192, 194, 195, 195, 194, 188, 189, 191, + 195, 197, 196, 194, 193, 194, 189, 187, 189, 186, 176, 165, 159, 148, 142, 135, + 130, 131, 130, 126, 121, 89, 54, 50, 54, 35, 33, 47, 42, 46, 36, 33, + 38, 42, 51, 76, 104, 129, 141, 158, 167, 167, 161, 155, 152, 154, 157, 159, + 156, 157, 161, 161, 157, 159, 156, 154, 154, 158, 155, 149, 145, 148, 145, 145, + 141, 136, 142, 149, 143, 155, 157, 142, 121, 110, 103, 103, 116, 133, 135, 136, + 135, 136, 136, 132, 126, 127, 125, 123, 121, 120, 119, 117, 117, 113, 119, 116, + 93, 91, 91, 91, 91, 94, 96, 100, 110, 107, 103, 103, 111, 121, 130, 133, + 138, 142, 146, 151, 152, 152, 161, 167, 161, 162, 160, 152, 150, 153, 160, 163, + 169, 170, 170, 172, 175, 176, 174, 171, 172, 170, 169, 169, 167, 165, 165, 164, + 175, 168, 162, 162, 167, 170, 168, 164, 166, 163, 159, 157, 155, 151, 144, 140, + 110, 69, 42, 51, 55, 52, 81, 124, 147, 149, 153, 157, 162, 165, 164, 167, + 170, 174, 181, 186, 192, 193, 192, 192, 192, 187, 184, 187, 190, 191, 194, 199, + 191, 195, 200, 203, 203, 202, 201, 201, 200, 195, 190, 189, 192, 194, 195, 194, + 201, 200, 198, 195, 189, 183, 182, 184, 176, 166, 156, 150, 145, 139, 137, 140, + 141, 145, 149, 149, 148, 145, 141, 137, 80, 38, 38, 55, 42, 35, 41, 29, + 29, 38, 40, 31, 30, 41, 48, 46, 86, 91, 105, 128, 152, 166, 166, 160, + 156, 157, 155, 150, 153, 160, 160, 156, 159, 162, 164, 159, 153, 148, 151, 158, + 160, 148, 148, 151, 135, 126, 130, 137, 137, 157, 163, 153, 136, 112, 99, 106, + 116, 127, 139, 142, 144, 143, 140, 135, 129, 127, 123, 120, 120, 119, 118, 120, + 115, 122, 119, 80, 84, 89, 89, 89, 94, 99, 104, 119, 108, 101, 109, 126, + 138, 145, 145, 135, 145, 143, 138, 147, 156, 163, 171, 157, 160, 161, 159, 155, + 158, 169, 174, 180, 176, 173, 170, 170, 169, 170, 170, 167, 172, 167, 163, 170, + 169, 167, 171, 172, 168, 163, 161, 161, 163, 163, 163, 159, 165, 157, 149, 162, + 139, 159, 133, 65, 31, 38, 43, 41, 37, 35, 75, 107, 128, 149, 157, 160, + 166, 173, 175, 183, 176, 185, 192, 188, 187, 192, 190, 197, 190, 202, 202, 174, + 171, 193, 204, 207, 194, 187, 192, 198, 194, 188, 186, 189, 188, 187, 185, 183, + 180, 178, 177, 169, 168, 166, 164, 163, 162, 161, 161, 161, 159, 156, 155, 156, + 157, 156, 155, 154, 177, 135, 157, 160, 133, 158, 114, 32, 32, 33, 33, 32, + 30, 28, 27, 29, 32, 35, 33, 28, 28, 33, 39, 47, 52, 70, 88, 124, + 153, 154, 169, 159, 169, 165, 154, 153, 153, 156, 166, 157, 163, 170, 164, 160, + 156, 156, 156, 152, 151, 154, 156, 151, 143, 138, 141, 146, 157, 151, 147, 150, + 136, 103, 84, 90, 93, 115, 140, 149, 152, 150, 140, 137, 123, 124, 127, 118, + 114, 123, 125, 121, 121, 120, 79, 80, 83, 90, 96, 100, 104, 107, 100, 103, + 112, 126, 138, 144, 147, 146, 148, 156, 151, 144, 148, 151, 155, 162, 170, 169, + 166, 163, 164, 168, 176, 179, 179, 176, 173, 171, 169, 168, 168, 168, 168, 173, + 168, 165, 171, 170, 168, 173, 168, 165, 161, 160, 160, 161, 160, 160, 162, 143, + 177, 149, 146, 147, 144, 64, 42, 28, 40, 38, 36, 35, 27, 45, 46, 75, + 115, 143, 161, 168, 165, 158, 159, 158, 170, 179, 173, 174, 182, 185, 192, 177, + 181, 187, 175, 173, 171, 156, 163, 165, 169, 171, 171, 173, 177, 182, 173, 173, + 173, 172, 171, 170, 169, 167, 166, 166, 165, 164, 164, 164, 164, 165, 170, 167, + 165, 164, 165, 166, 165, 165, 167, 155, 169, 154, 161, 143, 156, 52, 36, 36, + 36, 35, 34, 32, 30, 30, 33, 33, 32, 31, 30, 30, 32, 33, 37, 42, + 52, 53, 84, 121, 133, 153, 159, 168, 164, 161, 167, 164, 152, 148, 155, 161, + 164, 162, 159, 159, 158, 155, 157, 153, 152, 151, 150, 144, 144, 150, 139, 150, + 149, 147, 151, 146, 131, 130, 121, 104, 102, 119, 135, 150, 155, 145, 145, 124, + 117, 114, 106, 112, 123, 123, 133, 129, 125, 84, 85, 90, 101, 109, 111, 104, + 100, 91, 104, 120, 134, 141, 140, 145, 146, 142, 151, 151, 152, 158, 159, 161, + 167, 176, 172, 164, 161, 164, 168, 174, 174, 176, 174, 172, 170, 169, 168, 168, + 168, 168, 173, 167, 164, 169, 167, 163, 169, 163, 161, 159, 159, 159, 158, 157, + 155, 159, 142, 160, 154, 129, 150, 85, 25, 33, 37, 47, 35, 33, 40, 31, + 28, 38, 43, 52, 62, 80, 102, 119, 126, 122, 121, 132, 136, 122, 119, 128, + 133, 136, 111, 93, 87, 86, 101, 106, 93, 69, 105, 141, 155, 155, 158, 162, + 163, 170, 170, 170, 171, 171, 171, 172, 172, 178, 177, 176, 175, 174, 174, 174, + 174, 177, 175, 173, 173, 174, 175, 174, 173, 174, 161, 163, 168, 153, 159, 104, + 22, 37, 36, 35, 33, 32, 31, 30, 30, 35, 32, 29, 28, 30, 31, 29, + 27, 31, 37, 42, 31, 50, 84, 101, 128, 150, 160, 160, 160, 169, 169, 162, + 161, 154, 157, 158, 157, 159, 161, 157, 152, 157, 152, 151, 151, 150, 148, 147, + 151, 144, 156, 153, 147, 148, 149, 148, 159, 156, 133, 118, 113, 113, 124, 132, + 127, 131, 123, 125, 127, 124, 129, 131, 121, 120, 118, 116, 97, 98, 104, 113, + 117, 111, 102, 99, 109, 117, 126, 134, 137, 136, 144, 148, 132, 141, 147, 152, + 161, 162, 165, 174, 175, 173, 165, 161, 161, 164, 169, 171, 174, 173, 172, 171, + 170, 170, 169, 169, 167, 172, 166, 162, 167, 163, 158, 163, 160, 159, 158, 158, + 158, 157, 154, 151, 155, 150, 139, 135, 142, 101, 32, 42, 39, 44, 44, 32, + 30, 38, 37, 32, 30, 31, 34, 36, 40, 45, 50, 51, 57, 52, 59, 61, + 47, 42, 48, 49, 52, 52, 52, 49, 47, 54, 55, 46, 46, 99, 152, 168, + 170, 174, 178, 173, 182, 180, 181, 181, 182, 182, 184, 183, 192, 191, 189, 186, + 184, 182, 181, 181, 179, 178, 176, 176, 177, 178, 177, 175, 175, 178, 147, 164, + 166, 123, 46, 40, 32, 30, 29, 27, 27, 28, 29, 30, 32, 31, 30, 29, + 30, 30, 29, 28, 32, 33, 40, 34, 42, 56, 67, 102, 122, 144, 156, 159, + 164, 163, 162, 168, 158, 158, 156, 155, 159, 161, 156, 148, 152, 150, 153, 157, + 157, 152, 147, 148, 150, 159, 153, 144, 143, 143, 146, 163, 159, 157, 156, 140, + 112, 100, 106, 106, 105, 105, 117, 121, 119, 126, 131, 119, 128, 129, 128, 119, + 117, 115, 114, 111, 104, 105, 111, 126, 127, 129, 133, 136, 136, 142, 141, 140, + 144, 145, 149, 156, 155, 158, 169, 175, 177, 174, 168, 161, 160, 167, 174, 171, + 171, 171, 172, 172, 171, 171, 171, 168, 173, 167, 163, 167, 162, 156, 161, 158, + 157, 156, 157, 157, 156, 152, 149, 149, 148, 144, 121, 137, 37, 34, 53, 40, + 38, 32, 31, 30, 28, 34, 33, 24, 31, 41, 45, 42, 34, 27, 25, 43, + 34, 36, 43, 40, 41, 45, 42, 31, 41, 43, 41, 42, 44, 45, 48, 85, + 126, 163, 166, 167, 176, 186, 180, 187, 184, 185, 182, 184, 182, 185, 186, 192, + 191, 188, 186, 184, 182, 182, 181, 181, 179, 178, 178, 179, 178, 176, 174, 175, + 173, 169, 145, 169, 49, 43, 43, 26, 26, 25, 25, 25, 27, 29, 30, 26, + 30, 33, 32, 29, 28, 30, 34, 34, 25, 34, 39, 42, 37, 42, 86, 100, + 124, 140, 150, 161, 159, 151, 151, 163, 161, 157, 155, 159, 161, 155, 146, 151, + 148, 151, 156, 158, 153, 149, 150, 151, 154, 147, 144, 148, 148, 149, 160, 147, + 159, 172, 162, 126, 105, 101, 95, 78, 75, 78, 77, 74, 86, 107, 109, 112, + 119, 126, 132, 123, 112, 106, 102, 101, 114, 130, 129, 128, 131, 137, 141, 140, + 140, 134, 143, 142, 141, 145, 152, 150, 156, 171, 170, 175, 174, 167, 159, 156, + 164, 171, 169, 170, 171, 172, 173, 173, 172, 172, 171, 176, 171, 167, 170, 165, + 159, 162, 156, 155, 154, 155, 155, 153, 150, 147, 139, 153, 138, 148, 63, 31, + 46, 40, 34, 33, 25, 38, 39, 25, 31, 29, 37, 34, 33, 30, 28, 27, + 34, 44, 32, 20, 20, 29, 29, 33, 35, 30, 40, 37, 22, 18, 28, 31, + 35, 50, 106, 138, 163, 166, 167, 177, 179, 173, 186, 185, 183, 181, 180, 181, + 182, 182, 187, 187, 186, 185, 185, 186, 187, 187, 184, 183, 181, 181, 181, 179, + 176, 175, 169, 171, 180, 157, 100, 26, 52, 24, 26, 26, 26, 27, 28, 29, + 31, 32, 24, 29, 34, 33, 29, 27, 31, 36, 37, 24, 31, 38, 42, 35, + 37, 78, 108, 114, 113, 120, 145, 160, 162, 164, 165, 164, 160, 156, 158, 160, + 155, 147, 159, 151, 148, 149, 152, 151, 152, 155, 151, 153, 145, 145, 150, 145, + 139, 148, 151, 157, 164, 163, 143, 126, 109, 87, 63, 56, 61, 65, 59, 63, + 79, 84, 72, 84, 97, 122, 113, 106, 109, 113, 113, 124, 138, 136, 136, 137, + 141, 142, 140, 141, 136, 134, 133, 133, 140, 151, 150, 157, 174, 169, 171, 169, + 165, 160, 158, 161, 164, 166, 167, 169, 171, 172, 172, 172, 171, 169, 175, 170, + 166, 170, 164, 157, 161, 154, 152, 151, 151, 151, 150, 147, 145, 137, 153, 128, + 137, 15, 48, 39, 34, 35, 39, 28, 42, 43, 28, 34, 25, 29, 26, 29, + 34, 33, 27, 24, 26, 41, 30, 32, 37, 31, 32, 36, 32, 23, 27, 26, + 36, 48, 37, 33, 53, 131, 153, 175, 181, 184, 189, 187, 180, 187, 186, 184, + 182, 182, 183, 184, 186, 189, 188, 188, 188, 189, 190, 191, 192, 187, 185, 183, + 182, 182, 179, 175, 173, 168, 180, 165, 155, 32, 46, 36, 26, 31, 31, 32, + 32, 32, 32, 31, 29, 26, 29, 32, 32, 30, 28, 29, 30, 37, 33, 39, + 37, 43, 43, 36, 58, 113, 118, 110, 107, 124, 143, 158, 173, 163, 163, 160, + 156, 157, 159, 156, 149, 161, 151, 145, 147, 150, 151, 151, 153, 151, 153, 147, + 148, 149, 139, 132, 141, 153, 150, 156, 160, 156, 149, 126, 94, 70, 55, 62, + 77, 76, 71, 72, 72, 76, 79, 82, 106, 101, 104, 119, 132, 131, 131, 138, + 151, 149, 145, 142, 137, 137, 144, 143, 134, 130, 132, 138, 146, 145, 151, 169, + 175, 175, 171, 168, 168, 165, 166, 163, 165, 167, 169, 171, 172, 173, 172, 172, + 167, 173, 168, 165, 168, 163, 156, 160, 152, 150, 148, 147, 148, 147, 145, 144, + 146, 136, 141, 70, 42, 33, 33, 40, 35, 44, 27, 33, 33, 26, 36, 21, + 40, 30, 27, 32, 36, 33, 30, 30, 30, 23, 27, 31, 22, 22, 29, 29, + 28, 32, 27, 31, 40, 33, 52, 99, 159, 168, 173, 171, 170, 176, 182, 184, + 187, 186, 184, 183, 183, 185, 187, 189, 191, 190, 189, 188, 188, 188, 188, 189, + 187, 185, 183, 182, 181, 177, 173, 170, 175, 178, 158, 109, 28, 49, 15, 44, + 32, 33, 33, 33, 32, 30, 28, 26, 30, 28, 28, 29, 30, 29, 26, 23, + 28, 37, 46, 34, 40, 47, 28, 28, 98, 123, 134, 125, 116, 112, 123, 143, + 159, 161, 159, 156, 156, 158, 156, 152, 155, 148, 147, 152, 155, 152, 148, 145, + 146, 150, 149, 151, 152, 142, 138, 150, 136, 138, 150, 161, 163, 163, 148, 119, + 89, 59, 55, 73, 77, 74, 77, 80, 80, 75, 71, 113, 119, 123, 128, 134, + 139, 146, 149, 154, 153, 151, 148, 141, 136, 138, 137, 148, 144, 135, 133, 148, + 159, 166, 174, 176, 179, 175, 170, 171, 170, 167, 162, 157, 158, 162, 168, 173, + 176, 175, 173, 171, 168, 166, 165, 164, 162, 156, 151, 155, 148, 151, 154, 146, + 145, 146, 140, 162, 119, 125, 48, 34, 46, 28, 35, 38, 36, 35, 38, 41, + 40, 33, 26, 22, 31, 32, 30, 31, 26, 26, 38, 30, 31, 30, 28, 26, + 27, 27, 30, 30, 26, 25, 40, 57, 67, 100, 148, 172, 175, 179, 181, 182, + 183, 184, 186, 187, 187, 187, 187, 187, 187, 186, 186, 192, 192, 191, 190, 190, + 189, 188, 188, 188, 191, 189, 182, 176, 176, 175, 174, 186, 160, 164, 58, 44, + 33, 31, 32, 32, 30, 38, 42, 32, 30, 32, 26, 33, 25, 32, 32, 23, + 34, 42, 27, 34, 36, 38, 40, 41, 40, 38, 36, 81, 126, 122, 130, 134, + 130, 103, 129, 136, 154, 166, 163, 157, 157, 163, 165, 160, 154, 152, 155, 154, + 148, 147, 150, 152, 150, 148, 149, 148, 144, 141, 141, 130, 139, 143, 141, 147, + 151, 146, 136, 81, 53, 66, 89, 81, 80, 84, 70, 78, 74, 71, 118, 121, + 124, 128, 133, 139, 146, 148, 154, 154, 152, 150, 143, 138, 141, 140, 140, 148, + 147, 142, 144, 145, 154, 167, 187, 186, 175, 167, 164, 168, 171, 169, 171, 170, + 167, 166, 168, 170, 171, 171, 170, 168, 166, 166, 166, 163, 158, 154, 149, 143, + 147, 150, 145, 146, 149, 143, 145, 139, 97, 38, 39, 39, 32, 35, 34, 32, + 31, 33, 36, 35, 28, 23, 26, 31, 28, 26, 28, 23, 21, 31, 27, 29, + 31, 32, 32, 32, 29, 29, 34, 27, 35, 79, 132, 153, 156, 166, 168, 171, + 175, 178, 179, 180, 182, 183, 190, 190, 190, 190, 189, 189, 189, 190, 190, 190, + 189, 189, 189, 188, 188, 188, 185, 185, 181, 177, 177, 179, 176, 172, 174, 164, + 132, 31, 31, 31, 27, 37, 28, 28, 30, 26, 20, 28, 37, 36, 19, 26, + 40, 40, 30, 30, 31, 24, 32, 34, 36, 38, 39, 39, 38, 37, 60, 119, + 123, 128, 132, 129, 124, 122, 125, 137, 147, 151, 153, 159, 162, 161, 156, 149, + 146, 149, 150, 147, 146, 148, 148, 150, 151, 149, 145, 140, 140, 143, 137, 139, + 140, 142, 146, 149, 142, 135, 123, 90, 80, 83, 73, 72, 81, 81, 83, 80, + 77, 125, 128, 131, 133, 137, 143, 149, 151, 148, 147, 147, 146, 141, 137, 142, + 142, 170, 175, 171, 162, 163, 161, 164, 172, 178, 182, 181, 178, 174, 171, 167, + 157, 165, 164, 164, 166, 170, 173, 174, 174, 166, 165, 164, 164, 164, 161, 156, + 153, 148, 142, 145, 148, 144, 147, 149, 141, 135, 153, 62, 34, 45, 36, 40, + 36, 31, 31, 31, 33, 33, 32, 27, 23, 29, 29, 21, 22, 28, 22, 18, + 26, 41, 37, 32, 29, 27, 29, 31, 33, 28, 47, 75, 115, 157, 169, 164, + 166, 170, 174, 179, 182, 183, 184, 186, 188, 191, 191, 191, 191, 191, 191, 191, + 191, 188, 188, 188, 188, 188, 187, 187, 187, 184, 181, 177, 175, 180, 184, 179, + 172, 174, 170, 99, 24, 31, 37, 25, 36, 42, 42, 35, 28, 35, 46, 41, + 23, 26, 32, 28, 26, 33, 36, 34, 35, 32, 33, 36, 38, 40, 40, 40, + 37, 37, 99, 127, 126, 131, 130, 144, 118, 126, 131, 137, 145, 155, 164, 165, + 162, 162, 154, 149, 151, 155, 154, 152, 151, 146, 152, 155, 151, 143, 139, 141, + 146, 142, 137, 136, 141, 147, 144, 137, 134, 123, 98, 77, 74, 71, 67, 69, + 75, 67, 67, 66, 128, 133, 136, 140, 145, 147, 149, 151, 148, 144, 145, 146, + 142, 139, 143, 144, 163, 174, 172, 160, 152, 149, 155, 169, 168, 175, 178, 179, + 174, 171, 164, 154, 156, 159, 166, 172, 177, 176, 171, 167, 165, 165, 165, 164, + 162, 158, 153, 150, 153, 147, 149, 149, 144, 147, 147, 136, 140, 129, 34, 36, + 41, 37, 40, 31, 32, 33, 32, 34, 33, 33, 29, 26, 27, 26, 19, 23, + 32, 26, 21, 29, 29, 29, 31, 35, 39, 42, 42, 41, 73, 110, 139, 152, + 159, 159, 164, 177, 174, 175, 182, 183, 187, 186, 190, 190, 190, 189, 191, 189, + 191, 190, 192, 192, 191, 190, 190, 189, 188, 187, 186, 186, 184, 184, 181, 179, + 182, 185, 181, 175, 167, 144, 61, 33, 34, 42, 29, 33, 18, 38, 40, 29, + 32, 40, 34, 22, 32, 43, 34, 27, 36, 34, 31, 44, 32, 33, 35, 38, + 40, 41, 41, 39, 30, 66, 131, 127, 132, 137, 147, 125, 137, 137, 139, 143, + 152, 160, 163, 164, 166, 159, 154, 153, 158, 158, 157, 152, 149, 154, 155, 151, + 146, 145, 145, 145, 143, 134, 130, 140, 145, 139, 133, 135, 133, 111, 82, 75, + 83, 80, 72, 79, 67, 70, 70, 126, 130, 137, 141, 144, 144, 141, 142, 150, + 147, 146, 148, 147, 144, 146, 145, 150, 174, 181, 171, 159, 153, 166, 188, 173, + 173, 168, 160, 160, 165, 172, 173, 173, 173, 175, 177, 176, 170, 161, 155, 168, + 169, 170, 169, 165, 159, 154, 151, 156, 152, 154, 153, 148, 151, 148, 132, 144, + 78, 23, 42, 30, 38, 32, 25, 33, 34, 33, 34, 35, 34, 30, 28, 26, + 25, 19, 26, 32, 25, 22, 34, 34, 47, 68, 89, 103, 106, 101, 96, 133, + 154, 162, 163, 168, 172, 172, 180, 171, 175, 180, 182, 185, 185, 188, 189, 190, + 190, 191, 191, 192, 192, 193, 192, 195, 194, 192, 191, 189, 187, 186, 185, 183, + 186, 186, 182, 179, 180, 178, 175, 162, 108, 33, 39, 29, 40, 39, 48, 87, + 111, 97, 51, 25, 22, 32, 46, 19, 44, 51, 47, 45, 29, 21, 38, 33, + 34, 36, 38, 40, 41, 42, 41, 37, 37, 126, 128, 134, 144, 137, 139, 140, + 140, 139, 139, 140, 145, 153, 161, 165, 160, 156, 153, 157, 158, 156, 150, 152, + 153, 151, 147, 148, 151, 147, 141, 143, 134, 132, 140, 146, 140, 134, 138, 155, + 126, 84, 66, 74, 73, 67, 73, 71, 74, 72, 132, 135, 140, 145, 144, 143, + 140, 137, 144, 140, 139, 142, 143, 141, 141, 143, 133, 138, 133, 134, 149, 154, + 152, 152, 165, 167, 164, 160, 160, 166, 175, 175, 185, 181, 176, 173, 170, 168, + 165, 162, 171, 173, 175, 174, 169, 163, 159, 156, 156, 154, 158, 157, 153, 156, + 149, 129, 131, 43, 31, 48, 31, 40, 32, 28, 31, 32, 32, 32, 32, 32, + 29, 28, 26, 26, 22, 26, 29, 21, 27, 49, 91, 101, 116, 130, 142, 151, + 157, 161, 154, 164, 164, 162, 168, 169, 167, 173, 175, 179, 183, 185, 186, 187, + 188, 190, 191, 191, 192, 193, 193, 194, 195, 195, 195, 194, 193, 191, 189, 187, + 186, 185, 181, 186, 187, 182, 177, 175, 174, 172, 184, 122, 53, 45, 30, 38, + 43, 82, 130, 167, 177, 164, 148, 104, 45, 18, 43, 39, 32, 35, 45, 42, + 32, 32, 35, 35, 36, 38, 39, 41, 42, 40, 43, 29, 103, 127, 136, 146, + 133, 149, 141, 141, 142, 140, 136, 136, 146, 159, 162, 163, 161, 158, 158, 160, + 158, 154, 151, 151, 146, 142, 146, 152, 147, 136, 144, 142, 140, 144, 145, 140, + 138, 140, 144, 117, 90, 76, 74, 70, 65, 60, 68, 72, 72, 139, 139, 142, + 142, 142, 140, 140, 137, 135, 132, 132, 137, 142, 140, 141, 144, 152, 138, 110, + 109, 133, 149, 147, 142, 150, 159, 163, 163, 164, 167, 169, 167, 175, 171, 168, + 168, 169, 171, 172, 172, 167, 171, 175, 175, 171, 166, 162, 161, 159, 159, 163, + 161, 155, 156, 146, 121, 89, 37, 41, 41, 37, 34, 33, 34, 30, 32, 31, + 31, 31, 30, 29, 29, 27, 28, 24, 26, 26, 23, 44, 80, 129, 132, 134, + 134, 135, 143, 158, 170, 165, 176, 178, 177, 176, 169, 169, 184, 180, 184, 188, + 190, 190, 190, 191, 192, 191, 191, 192, 192, 193, 194, 195, 194, 191, 191, 190, + 190, 189, 188, 188, 187, 182, 185, 184, 180, 179, 178, 174, 169, 191, 163, 98, + 43, 39, 41, 37, 121, 161, 172, 159, 156, 178, 164, 126, 114, 110, 78, 55, + 49, 48, 49, 45, 36, 36, 36, 37, 37, 38, 40, 41, 40, 39, 42, 69, + 123, 137, 140, 144, 149, 146, 145, 147, 147, 140, 135, 139, 150, 157, 164, 167, + 164, 162, 164, 164, 159, 150, 154, 151, 145, 147, 153, 149, 141, 144, 150, 148, + 144, 140, 139, 138, 139, 139, 121, 118, 111, 92, 84, 82, 71, 85, 87, 88, + 141, 138, 136, 134, 134, 135, 136, 137, 138, 135, 136, 142, 146, 145, 146, 148, + 137, 137, 115, 93, 91, 105, 131, 157, 163, 166, 162, 154, 153, 158, 165, 168, + 165, 164, 166, 169, 172, 172, 169, 167, 162, 167, 172, 174, 170, 166, 163, 163, + 164, 164, 167, 163, 155, 154, 140, 112, 45, 38, 40, 25, 37, 20, 28, 31, + 29, 30, 31, 31, 30, 29, 29, 30, 26, 29, 26, 27, 28, 30, 63, 110, + 136, 146, 158, 161, 157, 155, 160, 165, 175, 174, 171, 175, 185, 181, 177, 187, + 179, 182, 185, 187, 186, 186, 187, 188, 186, 187, 187, 188, 189, 190, 191, 191, + 188, 188, 188, 188, 189, 189, 189, 189, 186, 185, 182, 180, 184, 185, 178, 169, + 159, 173, 114, 25, 41, 43, 27, 145, 149, 175, 174, 171, 185, 173, 159, 178, + 162, 147, 140, 114, 60, 32, 38, 40, 36, 36, 36, 36, 36, 36, 39, 36, + 30, 56, 41, 117, 134, 132, 157, 145, 148, 146, 147, 149, 142, 132, 129, 135, + 143, 154, 163, 160, 158, 160, 159, 158, 149, 156, 157, 149, 147, 154, 153, 147, + 142, 152, 152, 142, 135, 137, 137, 134, 145, 125, 123, 109, 74, 72, 87, 82, + 93, 93, 89, 141, 138, 132, 133, 137, 142, 143, 140, 137, 131, 137, 140, 137, + 141, 146, 138, 143, 136, 122, 112, 98, 84, 98, 129, 174, 168, 161, 158, 154, + 149, 149, 154, 169, 168, 164, 165, 168, 171, 171, 169, 166, 168, 170, 169, 168, + 167, 172, 173, 172, 167, 160, 152, 157, 166, 134, 79, 33, 38, 36, 28, 28, + 34, 34, 29, 30, 26, 23, 22, 25, 30, 35, 37, 34, 32, 29, 31, 51, + 82, 112, 123, 142, 146, 150, 154, 155, 159, 166, 172, 173, 181, 186, 182, 181, + 183, 182, 177, 185, 190, 188, 184, 183, 188, 190, 190, 184, 188, 188, 187, 185, + 186, 188, 190, 190, 189, 186, 186, 190, 190, 189, 187, 187, 181, 183, 186, 180, + 181, 179, 173, 163, 112, 81, 44, 40, 33, 32, 121, 164, 163, 170, 182, 188, + 184, 186, 194, 173, 185, 183, 171, 145, 84, 36, 33, 34, 34, 43, 47, 37, + 31, 39, 36, 38, 33, 47, 94, 135, 136, 137, 151, 143, 151, 156, 151, 142, + 138, 135, 132, 133, 146, 160, 163, 161, 159, 158, 155, 149, 148, 149, 146, 144, + 142, 143, 142, 148, 143, 144, 149, 148, 143, 139, 141, 147, 131, 128, 93, 81, + 87, 78, 93, 94, 92, 91, 142, 145, 145, 145, 142, 140, 140, 140, 144, 137, + 140, 143, 138, 141, 144, 137, 128, 133, 133, 133, 125, 103, 89, 94, 121, 152, + 166, 147, 139, 154, 155, 141, 159, 163, 163, 161, 160, 160, 163, 166, 165, 169, + 170, 167, 162, 161, 169, 173, 179, 172, 168, 162, 157, 147, 100, 40, 47, 45, + 44, 42, 37, 29, 28, 32, 28, 26, 28, 30, 32, 29, 23, 19, 41, 30, + 43, 80, 111, 121, 130, 141, 142, 148, 158, 164, 164, 166, 168, 170, 176, 181, + 183, 180, 181, 183, 185, 183, 183, 186, 184, 182, 185, 189, 189, 184, 193, 184, + 177, 174, 176, 180, 178, 176, 190, 189, 185, 185, 187, 189, 188, 187, 188, 181, + 183, 184, 178, 179, 178, 170, 174, 128, 86, 33, 32, 39, 36, 99, 164, 153, + 156, 174, 182, 173, 169, 174, 164, 174, 179, 184, 183, 149, 85, 38, 57, 37, + 26, 31, 38, 36, 36, 37, 37, 23, 41, 67, 121, 136, 137, 141, 142, 148, + 152, 147, 142, 139, 135, 130, 137, 127, 142, 165, 167, 160, 160, 159, 151, 149, + 148, 147, 149, 149, 150, 149, 147, 143, 145, 150, 150, 145, 141, 141, 147, 136, + 123, 90, 63, 80, 77, 97, 100, 99, 97, 138, 146, 151, 151, 144, 139, 138, + 139, 145, 138, 139, 142, 138, 141, 144, 136, 131, 136, 130, 126, 126, 116, 101, + 95, 91, 114, 143, 160, 161, 155, 147, 139, 151, 156, 160, 156, 152, 152, 158, + 165, 158, 162, 165, 161, 156, 156, 164, 172, 157, 165, 172, 157, 128, 112, 102, + 86, 47, 46, 38, 30, 35, 45, 37, 19, 33, 27, 23, 23, 29, 35, 40, + 43, 40, 44, 73, 115, 140, 139, 140, 145, 150, 156, 163, 169, 170, 172, 175, + 178, 178, 181, 182, 178, 178, 181, 185, 186, 186, 188, 187, 186, 189, 190, 187, + 181, 176, 177, 181, 184, 186, 184, 179, 176, 188, 187, 183, 183, 185, 188, 188, + 187, 189, 181, 182, 182, 176, 177, 176, 168, 168, 129, 82, 26, 33, 47, 24, + 40, 105, 152, 174, 152, 149, 175, 184, 167, 185, 182, 177, 169, 170, 165, 113, + 42, 27, 45, 45, 32, 37, 44, 38, 26, 38, 18, 38, 40, 97, 138, 140, + 136, 144, 147, 149, 146, 145, 144, 139, 132, 137, 118, 131, 155, 160, 165, 168, + 154, 157, 152, 148, 149, 151, 154, 155, 152, 148, 144, 145, 149, 150, 145, 141, + 141, 144, 144, 124, 97, 45, 65, 60, 76, 81, 87, 89, 135, 142, 147, 148, + 144, 141, 139, 139, 142, 135, 137, 140, 136, 140, 143, 136, 135, 140, 128, 117, + 124, 126, 120, 116, 88, 83, 97, 126, 146, 148, 144, 143, 151, 152, 156, 153, + 149, 148, 153, 157, 153, 153, 156, 156, 155, 157, 164, 168, 176, 157, 149, 151, + 156, 163, 160, 145, 148, 117, 78, 48, 33, 31, 38, 46, 32, 34, 38, 37, + 34, 31, 31, 31, 58, 89, 120, 127, 128, 136, 145, 146, 154, 156, 158, 158, + 161, 166, 178, 185, 180, 180, 181, 180, 178, 180, 184, 186, 187, 189, 189, 185, + 184, 185, 183, 179, 181, 182, 181, 177, 171, 171, 183, 196, 185, 185, 184, 186, + 187, 188, 186, 186, 189, 181, 181, 181, 174, 175, 174, 167, 176, 158, 123, 64, + 48, 50, 32, 40, 54, 79, 124, 160, 164, 149, 151, 169, 167, 166, 170, 165, + 163, 182, 172, 127, 36, 52, 51, 41, 45, 41, 33, 30, 38, 24, 35, 30, + 65, 139, 142, 141, 149, 149, 149, 148, 151, 152, 146, 137, 133, 129, 135, 135, + 137, 165, 177, 148, 159, 153, 148, 147, 151, 154, 152, 147, 145, 141, 142, 147, + 148, 144, 142, 142, 134, 145, 128, 114, 44, 62, 54, 64, 66, 76, 82, 141, + 140, 139, 141, 143, 144, 140, 138, 139, 133, 135, 139, 136, 141, 144, 136, 125, + 140, 138, 126, 128, 126, 115, 109, 100, 101, 90, 80, 102, 144, 167, 160, 153, + 149, 150, 148, 146, 144, 142, 142, 148, 147, 146, 148, 154, 156, 155, 153, 163, + 153, 158, 171, 176, 178, 173, 158, 155, 138, 145, 156, 120, 51, 19, 30, 29, + 32, 36, 34, 35, 47, 69, 86, 115, 139, 154, 144, 134, 140, 152, 156, 151, + 152, 154, 152, 153, 156, 166, 173, 172, 175, 178, 180, 181, 181, 184, 185, 179, + 185, 186, 180, 176, 177, 180, 180, 179, 182, 189, 194, 191, 180, 176, 176, 178, + 182, 185, 189, 189, 188, 185, 184, 188, 181, 181, 181, 174, 175, 174, 165, 161, + 165, 149, 89, 37, 16, 20, 47, 39, 43, 78, 133, 168, 164, 152, 150, 167, + 167, 180, 180, 167, 170, 166, 141, 123, 78, 41, 40, 47, 35, 33, 45, 31, + 33, 31, 34, 36, 128, 142, 151, 151, 150, 150, 149, 153, 155, 149, 140, 139, + 137, 139, 130, 128, 153, 171, 157, 163, 156, 150, 149, 152, 152, 149, 144, 141, + 138, 139, 145, 147, 144, 143, 144, 129, 141, 128, 128, 54, 65, 65, 68, 67, + 75, 77, 149, 144, 140, 140, 143, 144, 141, 137, 141, 133, 137, 141, 137, 141, + 144, 137, 123, 138, 138, 129, 128, 126, 119, 117, 119, 119, 111, 100, 97, 114, + 138, 149, 153, 146, 149, 151, 148, 144, 141, 137, 149, 145, 143, 143, 145, 145, + 145, 143, 139, 158, 182, 182, 159, 150, 160, 165, 152, 152, 149, 144, 132, 106, + 68, 37, 41, 51, 64, 74, 89, 113, 145, 168, 160, 154, 155, 159, 158, 152, + 153, 159, 157, 161, 166, 166, 163, 159, 160, 160, 163, 164, 168, 175, 177, 177, + 181, 185, 177, 180, 182, 179, 177, 182, 184, 184, 181, 173, 176, 193, 204, 198, + 183, 173, 175, 179, 183, 187, 188, 186, 183, 183, 186, 179, 181, 183, 176, 176, + 174, 165, 174, 175, 167, 139, 100, 68, 51, 43, 34, 57, 63, 63, 97, 152, + 175, 162, 147, 145, 155, 166, 169, 172, 171, 162, 160, 137, 100, 55, 27, 39, + 50, 35, 26, 36, 27, 38, 25, 101, 144, 156, 151, 150, 150, 148, 151, 154, + 149, 141, 146, 140, 137, 143, 140, 132, 143, 167, 164, 161, 158, 157, 157, 153, + 147, 143, 142, 138, 139, 144, 147, 144, 143, 145, 142, 140, 125, 128, 57, 51, + 61, 58, 52, 60, 63, 144, 143, 141, 141, 140, 141, 140, 139, 141, 134, 137, + 139, 135, 137, 140, 132, 130, 136, 131, 124, 127, 129, 129, 139, 123, 114, 119, + 126, 111, 88, 91, 105, 132, 131, 143, 149, 148, 145, 144, 145, 148, 147, 146, + 142, 139, 140, 147, 153, 178, 170, 168, 168, 170, 179, 178, 160, 155, 172, 167, + 150, 155, 160, 118, 55, 94, 113, 138, 157, 164, 161, 157, 154, 166, 157, 155, + 161, 167, 164, 160, 161, 167, 171, 176, 176, 173, 169, 167, 167, 163, 160, 163, + 168, 169, 169, 172, 178, 177, 178, 179, 180, 184, 186, 179, 170, 170, 145, 127, + 127, 141, 157, 180, 195, 175, 176, 179, 181, 181, 181, 182, 184, 184, 178, 182, + 185, 179, 178, 175, 165, 164, 160, 152, 150, 144, 125, 86, 39, 52, 32, 26, + 39, 46, 59, 106, 159, 171, 173, 164, 158, 163, 162, 156, 156, 150, 162, 162, + 99, 29, 42, 64, 30, 26, 33, 29, 36, 35, 69, 153, 157, 152, 153, 153, + 150, 152, 154, 150, 143, 145, 149, 144, 149, 149, 117, 108, 147, 163, 163, 164, + 163, 160, 154, 147, 144, 145, 143, 143, 146, 147, 144, 142, 144, 152, 135, 125, + 132, 70, 41, 56, 43, 39, 46, 51, 131, 136, 140, 141, 138, 137, 140, 141, + 142, 134, 135, 137, 131, 132, 134, 126, 131, 133, 129, 127, 133, 128, 124, 131, + 137, 142, 137, 125, 120, 122, 120, 103, 104, 112, 132, 142, 142, 142, 148, 153, + 147, 151, 151, 145, 139, 142, 158, 172, 168, 166, 167, 164, 162, 172, 170, 152, + 152, 148, 154, 163, 158, 144, 144, 157, 165, 162, 157, 155, 158, 162, 166, 167, + 157, 174, 178, 165, 163, 176, 180, 171, 171, 173, 175, 173, 172, 172, 175, 177, + 168, 162, 160, 162, 162, 158, 163, 170, 176, 172, 170, 173, 181, 181, 164, 147, + 99, 95, 95, 99, 96, 100, 122, 145, 175, 175, 175, 175, 175, 177, 181, 185, + 182, 177, 182, 187, 181, 180, 176, 165, 165, 172, 165, 156, 149, 150, 137, 96, + 64, 47, 43, 52, 48, 39, 53, 83, 123, 148, 151, 145, 158, 161, 157, 163, + 170, 138, 149, 135, 61, 36, 57, 49, 31, 30, 34, 33, 51, 50, 162, 156, + 155, 157, 157, 154, 154, 155, 152, 147, 135, 162, 155, 145, 147, 112, 87, 112, + 161, 165, 168, 168, 161, 153, 147, 145, 150, 148, 146, 149, 148, 144, 142, 143, + 147, 124, 126, 143, 94, 51, 67, 47, 45, 53, 59, 137, 139, 139, 136, 136, + 141, 141, 139, 138, 137, 137, 136, 134, 133, 131, 131, 132, 132, 133, 131, 132, + 132, 134, 137, 138, 140, 140, 136, 135, 133, 126, 108, 104, 73, 117, 161, 139, + 139, 162, 152, 151, 159, 147, 135, 148, 167, 170, 165, 166, 161, 157, 159, 161, + 161, 152, 145, 161, 152, 145, 145, 146, 147, 156, 168, 160, 159, 158, 157, 158, + 161, 165, 167, 171, 173, 178, 179, 178, 174, 171, 168, 189, 181, 176, 177, 184, + 188, 184, 178, 181, 177, 170, 168, 167, 164, 162, 158, 158, 161, 155, 148, 161, + 169, 130, 79, 87, 99, 70, 79, 89, 102, 111, 117, 154, 173, 174, 165, 168, + 174, 177, 183, 177, 175, 174, 177, 182, 183, 175, 169, 171, 172, 168, 157, 151, + 151, 148, 142, 121, 92, 58, 42, 44, 48, 43, 37, 49, 108, 160, 159, 145, + 143, 153, 155, 155, 160, 170, 137, 123, 57, 30, 60, 41, 27, 34, 44, 32, + 73, 153, 167, 150, 162, 163, 151, 149, 158, 157, 146, 139, 149, 148, 145, 149, + 137, 108, 92, 132, 179, 178, 179, 170, 157, 155, 141, 149, 150, 146, 141, 141, + 143, 140, 135, 135, 129, 127, 139, 102, 56, 64, 78, 62, 72, 92, 138, 140, + 139, 136, 136, 138, 140, 138, 136, 136, 136, 136, 134, 133, 132, 129, 132, 131, + 132, 130, 131, 133, 137, 140, 136, 140, 143, 143, 145, 146, 144, 129, 121, 89, + 105, 131, 138, 160, 172, 143, 132, 121, 115, 138, 165, 171, 176, 192, 149, 145, + 145, 151, 155, 158, 157, 153, 154, 152, 154, 158, 158, 153, 152, 158, 162, 164, + 167, 168, 169, 170, 171, 171, 174, 175, 179, 179, 178, 176, 174, 172, 183, 178, + 174, 176, 184, 185, 183, 179, 183, 180, 177, 175, 175, 172, 166, 162, 160, 157, + 152, 142, 133, 122, 105, 88, 75, 92, 95, 83, 79, 89, 95, 100, 107, 137, + 160, 169, 179, 180, 172, 171, 183, 182, 180, 177, 175, 173, 170, 170, 169, 172, + 170, 162, 159, 160, 157, 152, 143, 144, 131, 96, 57, 34, 37, 48, 33, 50, + 81, 120, 153, 164, 153, 138, 170, 159, 158, 152, 164, 113, 41, 24, 31, 30, + 32, 39, 46, 95, 163, 169, 151, 158, 162, 156, 154, 158, 155, 146, 141, 146, + 143, 141, 144, 134, 107, 91, 55, 133, 163, 166, 159, 155, 164, 155, 145, 148, + 147, 143, 144, 145, 141, 135, 147, 133, 122, 135, 111, 76, 76, 75, 89, 92, + 100, 139, 142, 139, 135, 134, 138, 138, 135, 135, 135, 135, 135, 135, 134, 133, + 131, 132, 131, 131, 130, 131, 134, 139, 144, 138, 143, 145, 145, 149, 153, 153, + 143, 135, 122, 112, 98, 92, 106, 107, 80, 57, 81, 123, 169, 187, 164, 141, + 144, 148, 150, 154, 160, 165, 167, 169, 169, 157, 158, 163, 167, 166, 160, 156, + 156, 162, 166, 170, 173, 175, 174, 171, 169, 173, 174, 174, 174, 174, 173, 172, + 171, 175, 176, 174, 176, 180, 181, 181, 179, 181, 182, 184, 186, 186, 183, 176, + 172, 168, 160, 159, 156, 134, 101, 83, 82, 77, 79, 54, 70, 69, 90, 79, + 116, 123, 148, 165, 173, 184, 188, 185, 187, 184, 185, 183, 179, 173, 173, 175, + 181, 171, 173, 173, 169, 167, 167, 164, 159, 151, 156, 156, 140, 118, 102, 100, + 105, 92, 64, 50, 70, 98, 118, 139, 161, 149, 148, 145, 151, 159, 134, 59, + 34, 26, 36, 30, 41, 77, 128, 174, 171, 154, 154, 157, 159, 160, 157, 151, + 147, 146, 144, 140, 139, 140, 132, 112, 97, 71, 92, 116, 159, 183, 162, 162, + 166, 144, 148, 148, 145, 145, 145, 142, 136, 134, 126, 118, 130, 116, 94, 98, + 91, 103, 100, 94, 140, 143, 140, 136, 135, 137, 136, 132, 134, 134, 134, 135, + 135, 135, 134, 132, 131, 131, 131, 130, 132, 135, 142, 147, 142, 146, 147, 145, + 149, 153, 152, 145, 141, 145, 132, 105, 95, 97, 87, 73, 59, 120, 163, 164, + 158, 154, 150, 148, 160, 165, 171, 174, 173, 171, 171, 171, 167, 165, 166, 165, + 167, 166, 167, 169, 167, 171, 174, 177, 178, 177, 174, 172, 176, 177, 177, 176, + 176, 177, 178, 178, 175, 176, 178, 178, 178, 178, 178, 180, 178, 180, 185, 188, + 190, 189, 185, 183, 181, 167, 164, 165, 156, 129, 108, 99, 82, 100, 87, 60, + 76, 79, 118, 102, 142, 156, 160, 159, 167, 174, 178, 188, 189, 190, 188, 184, + 179, 177, 179, 183, 176, 178, 179, 178, 175, 172, 168, 165, 171, 164, 159, 159, + 162, 159, 149, 139, 141, 121, 107, 104, 97, 92, 108, 132, 145, 157, 156, 159, + 145, 133, 66, 43, 29, 38, 28, 58, 121, 160, 177, 172, 159, 150, 151, 158, + 160, 153, 147, 147, 148, 144, 144, 145, 139, 133, 125, 115, 112, 80, 78, 120, + 171, 153, 145, 153, 148, 150, 149, 145, 143, 143, 142, 138, 135, 139, 134, 133, + 104, 81, 88, 84, 94, 98, 94, 140, 141, 140, 136, 135, 137, 135, 131, 133, + 133, 134, 135, 133, 133, 132, 132, 130, 131, 131, 130, 132, 137, 142, 147, 146, + 149, 149, 146, 149, 153, 153, 148, 156, 155, 139, 127, 130, 115, 91, 77, 92, + 149, 172, 144, 135, 154, 166, 165, 159, 166, 172, 173, 169, 162, 159, 157, 167, + 166, 167, 165, 168, 172, 176, 178, 178, 179, 180, 181, 181, 183, 182, 182, 184, + 184, 183, 183, 183, 186, 187, 188, 180, 182, 184, 182, 180, 178, 179, 179, 178, + 179, 181, 182, 183, 184, 183, 183, 184, 175, 164, 159, 162, 165, 158, 148, 117, + 115, 52, 126, 65, 77, 121, 135, 135, 150, 157, 161, 170, 172, 171, 178, 196, + 194, 191, 189, 185, 182, 176, 174, 182, 183, 185, 187, 186, 182, 178, 176, 170, + 170, 169, 165, 160, 157, 158, 159, 159, 153, 148, 144, 136, 126, 114, 107, 121, + 126, 126, 140, 142, 143, 72, 28, 31, 36, 32, 85, 159, 177, 175, 174, 164, + 150, 146, 153, 157, 150, 145, 147, 145, 140, 147, 149, 137, 134, 138, 136, 105, + 103, 103, 91, 130, 143, 154, 151, 151, 153, 150, 143, 139, 140, 140, 138, 126, + 133, 130, 129, 102, 83, 90, 84, 89, 96, 96, 137, 140, 140, 137, 136, 137, + 135, 131, 134, 134, 135, 135, 133, 132, 131, 131, 130, 131, 132, 133, 134, 136, + 141, 144, 145, 148, 149, 149, 151, 158, 158, 155, 157, 157, 150, 142, 131, 104, + 87, 89, 117, 146, 160, 157, 160, 162, 154, 147, 159, 165, 169, 171, 166, 161, + 157, 156, 159, 164, 169, 171, 173, 178, 178, 178, 183, 182, 181, 181, 181, 183, + 183, 184, 182, 184, 184, 184, 185, 187, 188, 189, 188, 187, 188, 187, 185, 183, + 182, 181, 180, 181, 182, 180, 179, 176, 176, 177, 172, 182, 181, 169, 165, 172, + 172, 163, 170, 156, 179, 255, 90, 69, 131, 126, 148, 160, 163, 167, 176, 177, + 176, 185, 186, 187, 188, 191, 191, 190, 184, 181, 186, 186, 189, 194, 195, 192, + 190, 191, 175, 175, 172, 167, 163, 163, 167, 171, 164, 163, 159, 147, 144, 149, + 146, 138, 139, 130, 131, 137, 145, 151, 96, 54, 37, 45, 54, 116, 177, 176, + 172, 176, 169, 154, 146, 149, 154, 150, 145, 143, 143, 133, 144, 151, 137, 136, + 150, 149, 114, 108, 123, 104, 140, 139, 146, 148, 148, 151, 150, 143, 139, 139, + 139, 138, 128, 126, 118, 125, 108, 89, 90, 77, 71, 78, 77, 136, 139, 140, + 137, 136, 137, 136, 132, 135, 135, 135, 135, 132, 131, 130, 129, 129, 132, 134, + 135, 135, 136, 138, 142, 142, 146, 147, 148, 152, 156, 157, 155, 148, 155, 158, + 151, 133, 125, 138, 154, 169, 168, 161, 158, 168, 167, 161, 165, 162, 166, 165, + 164, 162, 161, 163, 165, 160, 168, 173, 174, 179, 184, 184, 181, 181, 181, 181, + 181, 180, 183, 183, 183, 182, 183, 184, 185, 186, 188, 189, 188, 191, 190, 190, + 190, 190, 189, 187, 184, 182, 185, 189, 188, 186, 181, 180, 180, 175, 188, 193, + 183, 175, 174, 167, 158, 159, 186, 150, 72, 167, 157, 169, 162, 159, 164, 158, + 158, 167, 172, 177, 191, 183, 189, 194, 196, 195, 193, 192, 193, 189, 187, 190, + 196, 197, 193, 190, 193, 201, 190, 177, 173, 175, 175, 168, 161, 153, 165, 172, + 166, 157, 157, 156, 154, 156, 138, 143, 121, 112, 97, 60, 27, 53, 76, 99, + 147, 176, 166, 170, 175, 170, 159, 150, 150, 155, 155, 146, 137, 148, 129, 140, + 152, 141, 144, 158, 151, 128, 91, 114, 120, 171, 144, 124, 128, 140, 145, 149, + 145, 141, 140, 139, 137, 146, 140, 128, 131, 102, 69, 63, 54, 60, 65, 73, + 135, 139, 140, 137, 136, 138, 136, 131, 136, 136, 136, 133, 132, 131, 129, 129, + 130, 133, 136, 138, 138, 137, 138, 141, 141, 145, 146, 147, 150, 153, 153, 149, + 169, 156, 143, 136, 132, 148, 169, 171, 158, 165, 161, 153, 160, 165, 165, 172, + 161, 158, 155, 152, 152, 154, 160, 162, 171, 176, 177, 174, 178, 187, 191, 188, + 183, 184, 187, 188, 187, 187, 185, 185, 188, 189, 190, 192, 194, 195, 195, 194, + 190, 188, 189, 190, 192, 192, 190, 185, 180, 187, 195, 198, 198, 194, 191, 192, + 195, 192, 183, 177, 179, 181, 180, 174, 180, 139, 166, 175, 155, 175, 157, 163, + 157, 164, 166, 172, 184, 189, 192, 205, 200, 206, 211, 205, 194, 185, 187, 192, + 189, 188, 189, 194, 194, 188, 185, 189, 182, 180, 178, 179, 183, 185, 184, 181, + 180, 174, 167, 163, 164, 164, 165, 168, 170, 150, 171, 155, 158, 130, 92, 49, + 71, 108, 139, 167, 169, 157, 169, 172, 171, 162, 155, 153, 158, 159, 147, 133, + 154, 128, 137, 155, 147, 154, 163, 149, 119, 99, 132, 128, 185, 171, 149, 133, + 133, 141, 149, 149, 145, 143, 140, 135, 118, 121, 126, 133, 100, 61, 69, 75, + 90, 89, 95, 138, 138, 138, 137, 136, 135, 134, 133, 133, 133, 134, 132, 129, + 128, 128, 128, 133, 136, 138, 140, 140, 140, 141, 144, 144, 151, 155, 151, 149, + 152, 152, 147, 145, 147, 123, 129, 144, 174, 164, 156, 161, 166, 156, 167, 150, + 137, 112, 126, 130, 138, 144, 145, 148, 159, 168, 173, 166, 171, 178, 181, 185, + 186, 188, 190, 182, 182, 184, 184, 185, 187, 189, 190, 185, 191, 194, 193, 193, + 195, 196, 193, 194, 193, 196, 192, 189, 188, 187, 188, 190, 197, 196, 195, 198, + 194, 190, 195, 200, 196, 190, 185, 182, 178, 175, 172, 171, 169, 167, 167, 170, + 170, 167, 164, 173, 176, 178, 172, 167, 169, 178, 188, 205, 211, 207, 191, 182, + 183, 185, 180, 174, 178, 184, 188, 184, 179, 182, 189, 187, 185, 182, 177, 177, + 176, 176, 177, 174, 184, 186, 177, 175, 183, 186, 184, 174, 169, 172, 172, 161, + 149, 127, 96, 116, 136, 158, 168, 172, 173, 170, 165, 179, 163, 153, 157, 165, + 161, 148, 137, 144, 150, 141, 130, 152, 185, 177, 142, 127, 70, 105, 147, 166, + 157, 168, 174, 146, 131, 144, 155, 144, 140, 139, 127, 126, 121, 125, 133, 84, + 89, 91, 85, 92, 102, 105, 137, 137, 137, 137, 137, 137, 136, 136, 130, 132, + 132, 131, 129, 128, 127, 130, 135, 139, 141, 142, 141, 141, 142, 143, 148, 153, + 154, 150, 149, 150, 149, 144, 157, 143, 133, 164, 162, 163, 148, 154, 138, 160, + 171, 129, 101, 72, 48, 67, 71, 95, 126, 147, 159, 166, 167, 164, 175, 178, + 183, 184, 185, 184, 184, 186, 185, 186, 186, 187, 188, 190, 191, 192, 191, 196, + 198, 196, 194, 196, 196, 193, 194, 194, 196, 196, 194, 191, 192, 191, 187, 193, + 193, 191, 197, 192, 188, 194, 192, 190, 188, 186, 183, 181, 175, 172, 171, 170, + 169, 171, 176, 177, 179, 178, 178, 179, 180, 179, 178, 175, 174, 174, 182, 195, + 200, 193, 187, 185, 181, 173, 178, 176, 180, 186, 188, 184, 181, 182, 185, 184, + 182, 181, 180, 180, 181, 181, 177, 186, 188, 180, 177, 183, 183, 178, 193, 185, + 183, 180, 172, 172, 165, 146, 146, 158, 169, 170, 170, 170, 170, 167, 177, 168, + 165, 169, 171, 164, 150, 139, 131, 142, 154, 155, 159, 162, 154, 142, 120, 74, + 113, 148, 165, 157, 165, 168, 187, 151, 137, 144, 147, 152, 146, 125, 122, 116, + 122, 134, 88, 87, 92, 91, 112, 116, 118, 136, 136, 137, 138, 137, 138, 138, + 138, 131, 132, 133, 133, 131, 131, 130, 134, 135, 140, 142, 142, 142, 142, 142, + 144, 147, 149, 150, 146, 146, 148, 149, 145, 155, 136, 146, 187, 172, 167, 158, + 160, 161, 167, 152, 62, 54, 54, 76, 120, 116, 135, 157, 165, 168, 168, 169, + 167, 174, 177, 180, 181, 181, 179, 180, 180, 188, 189, 190, 190, 192, 193, 195, + 196, 194, 199, 201, 198, 197, 199, 200, 197, 193, 195, 199, 200, 199, 195, 194, + 193, 186, 193, 191, 189, 194, 191, 187, 193, 185, 185, 185, 186, 186, 183, 176, + 172, 172, 170, 170, 173, 179, 184, 189, 191, 190, 184, 181, 180, 184, 183, 177, + 170, 170, 183, 191, 189, 187, 185, 181, 171, 179, 172, 172, 181, 190, 190, 185, + 180, 182, 182, 182, 183, 183, 183, 184, 184, 180, 188, 190, 184, 181, 184, 182, + 176, 187, 180, 178, 173, 167, 174, 179, 168, 166, 171, 176, 174, 172, 170, 168, + 166, 171, 168, 171, 176, 175, 164, 150, 141, 130, 137, 156, 169, 165, 149, 142, + 148, 111, 92, 139, 157, 160, 150, 164, 172, 186, 150, 129, 130, 139, 146, 139, + 119, 122, 118, 125, 131, 87, 80, 89, 93, 98, 101, 103, 138, 138, 138, 138, + 137, 138, 137, 137, 133, 134, 135, 135, 134, 134, 135, 139, 135, 140, 142, 143, + 144, 143, 145, 146, 142, 142, 143, 143, 146, 150, 152, 148, 149, 140, 156, 187, + 164, 177, 173, 156, 161, 160, 107, 49, 60, 59, 81, 106, 141, 153, 164, 164, + 163, 168, 177, 182, 170, 173, 177, 179, 181, 181, 183, 187, 191, 191, 192, 192, + 194, 195, 197, 198, 195, 200, 202, 199, 198, 201, 203, 201, 194, 196, 199, 200, + 199, 196, 192, 191, 191, 198, 195, 191, 195, 190, 187, 192, 186, 184, 186, 187, + 187, 185, 178, 174, 171, 170, 170, 173, 178, 185, 192, 195, 198, 189, 180, 177, + 180, 183, 182, 179, 180, 184, 186, 181, 179, 180, 181, 177, 177, 168, 166, 175, + 185, 187, 186, 183, 180, 181, 182, 182, 183, 183, 183, 183, 183, 189, 192, 189, + 188, 189, 185, 179, 188, 185, 188, 185, 177, 181, 186, 177, 166, 170, 177, 180, + 181, 178, 174, 170, 170, 166, 170, 177, 178, 168, 155, 145, 145, 137, 144, 161, + 167, 159, 153, 154, 119, 106, 143, 147, 156, 154, 161, 162, 143, 130, 125, 127, + 130, 131, 125, 117, 122, 126, 128, 110, 74, 71, 82, 81, 88, 95, 100, 139, + 139, 138, 137, 136, 135, 134, 133, 132, 133, 134, 134, 132, 134, 136, 139, 134, + 138, 141, 143, 144, 145, 148, 149, 142, 139, 140, 142, 147, 149, 151, 149, 151, + 142, 159, 188, 167, 179, 173, 152, 150, 140, 54, 55, 66, 58, 76, 85, 133, + 148, 162, 166, 167, 168, 172, 172, 175, 178, 182, 186, 188, 189, 192, 196, 192, + 193, 193, 194, 195, 197, 198, 199, 200, 204, 205, 200, 198, 201, 202, 199, 198, + 200, 203, 202, 201, 196, 193, 190, 194, 200, 196, 191, 194, 188, 186, 190, 188, + 185, 184, 182, 182, 180, 177, 174, 173, 172, 171, 172, 174, 180, 186, 191, 195, + 189, 183, 177, 177, 179, 180, 181, 185, 186, 183, 177, 176, 178, 181, 180, 177, + 171, 169, 173, 177, 179, 180, 184, 180, 180, 180, 180, 180, 180, 181, 181, 181, + 186, 189, 191, 192, 192, 188, 183, 188, 187, 192, 189, 179, 182, 186, 177, 167, + 166, 171, 177, 183, 183, 180, 179, 174, 165, 164, 171, 177, 173, 162, 152, 148, + 144, 146, 151, 162, 166, 161, 152, 130, 112, 134, 135, 160, 162, 150, 131, 116, + 123, 127, 129, 132, 129, 124, 124, 119, 131, 126, 87, 64, 71, 84, 76, 88, + 102, 113, 140, 139, 138, 137, 135, 134, 131, 131, 130, 131, 131, 130, 129, 130, + 133, 137, 134, 139, 141, 143, 144, 144, 147, 148, 146, 140, 140, 145, 149, 146, + 145, 142, 136, 126, 143, 186, 172, 173, 164, 161, 159, 119, 29, 54, 58, 69, + 107, 132, 151, 161, 169, 171, 171, 170, 170, 167, 180, 183, 187, 187, 188, 188, + 190, 194, 193, 194, 194, 195, 196, 198, 199, 200, 205, 208, 207, 201, 197, 198, + 199, 197, 203, 204, 206, 205, 202, 199, 195, 194, 193, 197, 194, 189, 192, 188, + 184, 188, 189, 185, 182, 181, 180, 178, 175, 173, 174, 173, 172, 171, 170, 172, + 179, 182, 188, 190, 192, 188, 184, 180, 180, 180, 179, 178, 178, 178, 179, 180, + 178, 177, 180, 175, 174, 173, 172, 170, 173, 179, 179, 178, 177, 176, 177, 178, + 180, 181, 178, 180, 184, 188, 191, 191, 188, 184, 183, 179, 181, 177, 169, 175, + 182, 174, 169, 161, 157, 162, 169, 172, 174, 177, 171, 160, 155, 160, 168, 167, + 160, 152, 138, 150, 157, 156, 156, 157, 153, 144, 115, 122, 155, 145, 153, 139, + 129, 125, 126, 130, 123, 123, 134, 134, 126, 127, 126, 134, 124, 80, 76, 86, + 102, 91, 89, 105, 116, 137, 136, 135, 134, 133, 132, 131, 131, 133, 134, 132, + 130, 129, 131, 134, 137, 137, 139, 143, 143, 143, 142, 143, 144, 149, 142, 138, + 145, 150, 147, 144, 137, 124, 130, 141, 169, 160, 166, 159, 167, 153, 89, 60, + 77, 89, 103, 120, 139, 152, 156, 159, 161, 169, 178, 184, 183, 182, 183, 186, + 185, 185, 185, 189, 190, 194, 195, 196, 196, 197, 199, 201, 202, 204, 208, 207, + 201, 199, 201, 202, 201, 202, 204, 205, 204, 201, 199, 199, 197, 190, 196, 193, + 189, 194, 191, 189, 193, 189, 186, 186, 186, 185, 182, 178, 175, 175, 176, 175, + 173, 170, 170, 174, 177, 179, 181, 185, 184, 184, 183, 186, 187, 179, 177, 178, + 178, 180, 179, 179, 179, 181, 175, 176, 177, 177, 173, 173, 177, 177, 175, 174, + 173, 175, 178, 183, 185, 180, 179, 181, 187, 191, 191, 188, 185, 188, 184, 186, + 184, 178, 184, 189, 179, 169, 157, 152, 156, 163, 164, 165, 167, 170, 161, 157, + 159, 162, 160, 156, 153, 143, 151, 158, 158, 153, 149, 145, 139, 107, 127, 165, + 147, 141, 121, 123, 140, 136, 144, 130, 121, 132, 132, 124, 130, 134, 128, 117, + 87, 101, 100, 113, 107, 105, 117, 125, 133, 133, 133, 133, 133, 132, 132, 132, + 137, 138, 135, 133, 132, 133, 137, 140, 140, 141, 144, 143, 141, 139, 140, 140, + 145, 139, 137, 145, 151, 149, 146, 137, 134, 162, 160, 151, 138, 160, 159, 161, + 152, 61, 87, 91, 127, 162, 161, 174, 168, 170, 173, 175, 181, 185, 182, 176, + 184, 186, 188, 188, 188, 189, 193, 196, 197, 197, 197, 198, 199, 201, 202, 203, + 199, 203, 204, 201, 201, 206, 209, 209, 200, 201, 201, 200, 199, 198, 199, 200, + 191, 196, 193, 192, 197, 197, 196, 202, 190, 189, 192, 194, 194, 190, 184, 180, + 177, 178, 179, 174, 171, 170, 172, 175, 170, 167, 165, 167, 174, 181, 189, 193, + 191, 183, 178, 176, 177, 177, 183, 183, 177, 172, 174, 181, 184, 181, 178, 178, + 177, 174, 172, 171, 174, 180, 186, 190, 184, 182, 183, 188, 192, 192, 189, 187, + 182, 180, 186, 188, 182, 185, 183, 168, 170, 160, 158, 167, 174, 170, 165, 163, + 175, 170, 169, 169, 166, 161, 160, 160, 157, 150, 148, 151, 156, 152, 144, 138, + 127, 122, 140, 125, 142, 135, 132, 141, 136, 153, 148, 131, 133, 127, 124, 139, + 135, 115, 103, 87, 111, 96, 104, 106, 112, 119, 121, 131, 133, 134, 132, 132, + 134, 135, 131, 136, 132, 130, 132, 137, 141, 140, 138, 142, 137, 136, 137, 143, + 144, 142, 137, 149, 147, 157, 149, 143, 145, 140, 140, 153, 168, 157, 146, 141, + 136, 151, 154, 145, 81, 100, 134, 142, 155, 156, 168, 167, 171, 176, 182, 186, + 186, 185, 183, 186, 188, 190, 191, 195, 196, 197, 198, 203, 207, 208, 207, 205, + 204, 205, 206, 210, 207, 205, 204, 205, 205, 204, 202, 210, 207, 203, 197, 194, + 192, 192, 191, 194, 195, 196, 195, 193, 192, 197, 200, 192, 195, 194, 194, 171, + 190, 180, 177, 175, 178, 181, 178, 176, 179, 186, 188, 183, 183, 174, 168, 172, + 170, 174, 186, 185, 188, 189, 183, 176, 173, 179, 183, 178, 185, 188, 180, 175, + 178, 181, 180, 173, 175, 175, 174, 174, 176, 177, 181, 182, 183, 186, 189, 192, + 192, 189, 186, 190, 187, 184, 181, 177, 175, 176, 178, 166, 158, 161, 175, 183, + 177, 174, 178, 163, 167, 173, 174, 171, 168, 167, 165, 159, 146, 152, 159, 154, + 147, 144, 136, 130, 116, 139, 137, 136, 149, 142, 147, 152, 154, 148, 133, 127, + 131, 134, 133, 129, 112, 102, 90, 97, 104, 99, 114, 107, 119, 125, 129, 133, + 134, 132, 132, 134, 135, 131, 136, 136, 136, 135, 136, 138, 142, 144, 143, 141, + 140, 138, 140, 140, 142, 142, 154, 147, 156, 146, 142, 147, 141, 139, 165, 175, + 159, 148, 142, 135, 145, 146, 145, 103, 123, 140, 142, 162, 167, 168, 172, 174, + 178, 182, 185, 184, 183, 182, 188, 188, 190, 192, 195, 196, 197, 198, 199, 202, + 204, 204, 203, 203, 205, 207, 207, 205, 203, 203, 204, 204, 203, 202, 209, 207, + 203, 198, 195, 193, 193, 193, 196, 193, 192, 194, 196, 197, 198, 196, 187, 189, + 185, 189, 175, 190, 174, 173, 180, 170, 172, 178, 182, 188, 187, 174, 171, 179, + 180, 180, 184, 176, 164, 167, 176, 180, 183, 182, 179, 176, 178, 180, 180, 185, + 189, 184, 181, 181, 183, 182, 178, 178, 176, 175, 175, 175, 175, 177, 178, 182, + 188, 194, 197, 198, 197, 197, 183, 184, 185, 184, 181, 176, 173, 170, 168, 159, + 162, 176, 183, 174, 164, 161, 173, 175, 178, 174, 168, 162, 159, 156, 156, 150, + 157, 163, 154, 145, 145, 140, 121, 116, 142, 145, 144, 155, 147, 153, 146, 149, + 145, 133, 130, 136, 138, 135, 131, 103, 95, 90, 96, 105, 100, 109, 110, 119, + 124, 129, 132, 133, 130, 131, 134, 133, 130, 137, 139, 142, 139, 136, 137, 143, + 148, 139, 140, 141, 139, 138, 140, 147, 152, 150, 142, 149, 141, 139, 146, 139, + 137, 175, 178, 159, 148, 145, 140, 145, 140, 135, 121, 139, 142, 140, 164, 173, + 167, 177, 180, 181, 183, 184, 183, 182, 181, 188, 189, 191, 192, 195, 196, 198, + 199, 197, 201, 203, 203, 204, 205, 208, 211, 206, 204, 203, 203, 205, 205, 204, + 203, 206, 205, 200, 198, 196, 194, 195, 194, 197, 192, 190, 194, 197, 200, 198, + 192, 184, 191, 182, 187, 183, 185, 169, 170, 172, 164, 176, 179, 166, 174, 192, + 190, 181, 186, 183, 181, 187, 181, 173, 175, 169, 172, 177, 181, 183, 182, 180, + 176, 181, 185, 189, 188, 185, 185, 184, 183, 184, 181, 177, 176, 174, 174, 174, + 173, 174, 180, 187, 190, 188, 185, 184, 184, 184, 184, 183, 181, 177, 174, 171, + 166, 167, 159, 163, 178, 188, 183, 174, 170, 169, 170, 172, 169, 165, 162, 160, + 160, 157, 155, 164, 168, 153, 144, 142, 137, 112, 121, 147, 152, 151, 157, 152, + 157, 146, 147, 144, 135, 132, 138, 138, 136, 132, 91, 90, 96, 95, 105, 105, + 108, 121, 126, 125, 128, 132, 132, 130, 131, 134, 134, 131, 137, 139, 142, 142, + 140, 140, 142, 143, 133, 133, 136, 140, 143, 149, 154, 157, 146, 141, 148, 141, + 138, 145, 142, 142, 172, 175, 154, 147, 151, 149, 152, 144, 133, 131, 142, 146, + 147, 165, 175, 167, 177, 179, 179, 180, 181, 181, 182, 182, 189, 189, 191, 192, + 195, 197, 198, 200, 204, 206, 208, 208, 208, 210, 212, 215, 205, 204, 204, 205, + 207, 207, 206, 204, 202, 199, 198, 196, 195, 194, 195, 193, 196, 194, 194, 195, + 197, 197, 194, 190, 187, 200, 186, 187, 188, 177, 169, 168, 175, 167, 184, 188, + 166, 165, 178, 172, 185, 190, 184, 179, 187, 189, 185, 187, 172, 172, 175, 180, + 184, 185, 182, 176, 179, 183, 188, 188, 187, 186, 185, 183, 187, 183, 178, 176, + 175, 176, 174, 173, 185, 192, 199, 200, 195, 189, 188, 189, 193, 189, 181, 172, + 168, 169, 169, 165, 152, 150, 156, 169, 179, 177, 174, 174, 163, 163, 165, 163, + 162, 161, 160, 160, 164, 160, 166, 167, 153, 144, 138, 128, 109, 130, 149, 153, + 153, 152, 149, 157, 149, 150, 145, 134, 133, 138, 136, 133, 128, 83, 93, 104, + 95, 103, 113, 113, 104, 108, 106, 128, 129, 132, 129, 129, 133, 135, 132, 136, + 136, 139, 142, 145, 144, 140, 135, 133, 131, 133, 142, 150, 155, 154, 150, 148, + 146, 155, 143, 136, 143, 140, 144, 168, 171, 155, 153, 160, 159, 161, 153, 149, + 143, 141, 155, 161, 165, 170, 168, 174, 176, 176, 177, 179, 181, 183, 183, 189, + 191, 193, 195, 197, 198, 199, 200, 209, 212, 214, 214, 213, 212, 213, 214, 204, + 203, 203, 204, 206, 206, 204, 201, 197, 196, 196, 196, 196, 196, 197, 196, 197, + 199, 202, 199, 196, 192, 191, 191, 187, 201, 190, 188, 188, 174, 178, 163, 124, + 115, 134, 165, 180, 187, 183, 164, 172, 183, 186, 185, 193, 192, 181, 178, 179, + 176, 173, 175, 180, 182, 181, 176, 177, 179, 184, 187, 186, 185, 183, 182, 186, + 183, 179, 178, 176, 177, 176, 177, 180, 187, 196, 198, 195, 192, 192, 194, 195, + 192, 182, 171, 167, 169, 167, 159, 155, 160, 174, 185, 188, 182, 177, 177, 169, + 167, 167, 164, 161, 159, 156, 156, 164, 157, 159, 160, 153, 148, 139, 123, 109, + 139, 149, 151, 156, 151, 152, 159, 150, 150, 144, 133, 132, 137, 135, 129, 116, + 81, 99, 107, 94, 101, 115, 120, 118, 123, 123, 129, 129, 131, 128, 129, 133, + 135, 133, 137, 135, 137, 140, 145, 144, 138, 131, 139, 136, 136, 143, 150, 153, + 148, 141, 148, 144, 152, 140, 131, 135, 130, 130, 165, 174, 164, 164, 166, 160, + 165, 158, 160, 152, 138, 158, 169, 158, 163, 165, 172, 174, 176, 177, 180, 182, + 184, 187, 190, 191, 194, 195, 197, 198, 199, 201, 208, 212, 215, 215, 213, 210, + 209, 208, 200, 200, 200, 201, 203, 202, 200, 196, 195, 195, 196, 197, 198, 198, + 199, 199, 199, 201, 203, 200, 194, 190, 191, 194, 184, 194, 187, 186, 186, 175, + 188, 143, 57, 60, 75, 105, 137, 154, 167, 178, 174, 188, 187, 180, 185, 187, + 183, 184, 183, 178, 173, 172, 175, 177, 177, 174, 176, 175, 178, 185, 186, 183, + 182, 184, 183, 183, 183, 180, 176, 176, 178, 180, 178, 182, 187, 187, 184, 181, + 180, 181, 188, 190, 187, 179, 175, 175, 165, 151, 153, 164, 182, 196, 202, 196, + 188, 184, 167, 166, 166, 166, 166, 165, 162, 160, 161, 153, 153, 153, 150, 151, + 144, 124, 108, 146, 148, 150, 160, 153, 156, 162, 146, 148, 143, 133, 131, 133, + 127, 117, 99, 81, 100, 102, 92, 102, 113, 122, 116, 120, 120, 129, 129, 131, + 128, 129, 133, 136, 134, 138, 138, 139, 139, 141, 140, 138, 135, 141, 140, 140, + 144, 146, 147, 144, 142, 146, 137, 142, 133, 131, 135, 126, 119, 158, 173, 169, + 167, 167, 157, 162, 158, 158, 159, 140, 157, 168, 159, 167, 168, 173, 176, 179, + 181, 184, 185, 187, 187, 191, 191, 194, 195, 197, 199, 200, 201, 204, 210, 214, + 216, 214, 210, 207, 205, 202, 201, 201, 203, 203, 202, 199, 195, 197, 197, 198, + 201, 203, 203, 204, 204, 202, 201, 200, 198, 197, 195, 196, 197, 190, 190, 187, + 188, 189, 181, 194, 108, 53, 69, 64, 64, 77, 77, 95, 140, 174, 188, 185, + 172, 174, 181, 186, 193, 183, 180, 177, 175, 176, 177, 178, 176, 178, 174, 175, + 183, 185, 182, 182, 186, 183, 185, 187, 183, 175, 174, 177, 183, 195, 195, 194, + 192, 189, 186, 183, 182, 184, 189, 187, 180, 179, 180, 170, 153, 148, 150, 158, + 170, 182, 186, 183, 177, 162, 161, 163, 165, 168, 167, 163, 161, 160, 155, 155, + 152, 147, 147, 143, 126, 108, 152, 147, 150, 163, 152, 153, 155, 143, 146, 145, + 137, 132, 125, 112, 94, 90, 87, 97, 94, 97, 112, 115, 124, 128, 134, 134, + 126, 128, 128, 125, 126, 131, 135, 134, 137, 139, 141, 138, 135, 134, 138, 141, + 140, 140, 141, 143, 141, 142, 143, 145, 148, 133, 135, 131, 140, 148, 133, 122, + 147, 168, 169, 168, 165, 154, 158, 157, 153, 165, 147, 158, 173, 168, 182, 181, + 175, 177, 181, 183, 186, 187, 186, 187, 190, 191, 194, 195, 198, 199, 200, 201, + 203, 209, 215, 218, 217, 212, 208, 206, 205, 205, 205, 206, 207, 205, 201, 197, + 197, 198, 199, 202, 204, 206, 207, 206, 203, 199, 195, 195, 199, 202, 201, 199, + 199, 191, 189, 191, 191, 187, 195, 80, 52, 70, 57, 56, 78, 65, 59, 96, + 147, 172, 182, 177, 180, 181, 179, 181, 184, 183, 182, 181, 180, 180, 180, 179, + 179, 173, 175, 182, 185, 182, 183, 186, 183, 187, 189, 185, 174, 171, 177, 185, + 187, 186, 184, 185, 186, 186, 185, 183, 187, 189, 184, 175, 176, 182, 177, 162, + 179, 168, 157, 158, 171, 183, 186, 181, 167, 165, 165, 165, 164, 159, 152, 147, + 165, 161, 162, 154, 140, 140, 138, 124, 109, 158, 149, 151, 166, 149, 146, 145, + 149, 156, 156, 147, 138, 124, 100, 78, 92, 96, 101, 90, 104, 121, 116, 123, + 121, 129, 133, 124, 124, 127, 129, 132, 132, 133, 132, 138, 137, 135, 133, 134, + 136, 139, 141, 139, 138, 140, 140, 141, 141, 142, 142, 138, 138, 136, 132, 129, + 127, 126, 117, 135, 170, 168, 157, 157, 152, 160, 162, 156, 156, 148, 149, 167, + 177, 180, 189, 178, 179, 182, 182, 181, 182, 184, 186, 191, 186, 187, 194, 199, + 200, 200, 204, 212, 211, 210, 209, 209, 208, 205, 203, 196, 196, 197, 199, 203, + 203, 201, 197, 192, 192, 195, 198, 200, 201, 201, 199, 209, 204, 198, 194, 193, + 195, 196, 196, 201, 183, 189, 184, 186, 181, 169, 51, 53, 75, 60, 57, 53, + 65, 52, 65, 119, 176, 185, 171, 171, 188, 166, 183, 180, 186, 184, 178, 178, + 185, 180, 168, 185, 183, 178, 174, 177, 183, 188, 189, 192, 189, 185, 181, 178, + 179, 183, 186, 186, 190, 194, 193, 188, 183, 181, 180, 187, 184, 181, 182, 183, + 179, 171, 164, 160, 171, 169, 146, 174, 171, 179, 181, 165, 161, 166, 167, 158, + 159, 163, 159, 168, 156, 155, 150, 135, 139, 140, 120, 121, 156, 154, 145, 158, + 155, 141, 153, 162, 159, 145, 126, 114, 109, 104, 99, 107, 105, 101, 101, 106, + 113, 122, 127, 131, 125, 121, 124, 125, 128, 129, 130, 131, 131, 132, 135, 137, + 137, 137, 138, 139, 142, 140, 135, 134, 135, 135, 135, 136, 137, 137, 136, 135, + 133, 129, 124, 121, 122, 113, 132, 165, 167, 159, 157, 155, 164, 167, 165, 164, + 155, 155, 169, 176, 178, 185, 181, 184, 187, 189, 187, 183, 184, 183, 192, 188, + 188, 192, 195, 195, 194, 196, 207, 205, 207, 205, 207, 204, 204, 200, 203, 203, + 206, 203, 201, 197, 199, 198, 197, 195, 195, 196, 197, 198, 199, 200, 202, 201, + 200, 200, 200, 198, 194, 190, 189, 180, 184, 183, 188, 178, 155, 52, 67, 65, + 50, 65, 66, 70, 48, 54, 95, 177, 187, 179, 178, 185, 166, 181, 181, 187, + 187, 183, 184, 189, 184, 172, 180, 177, 176, 174, 177, 181, 185, 184, 183, 181, + 179, 176, 174, 177, 186, 192, 195, 196, 196, 193, 188, 184, 184, 185, 191, 187, + 184, 184, 184, 181, 174, 167, 161, 168, 159, 145, 169, 177, 180, 181, 167, 161, + 163, 162, 153, 155, 161, 160, 168, 157, 155, 148, 134, 135, 136, 117, 119, 156, + 162, 156, 167, 156, 135, 142, 118, 121, 116, 107, 105, 108, 109, 107, 112, 109, + 105, 104, 108, 116, 127, 132, 134, 129, 126, 133, 131, 131, 131, 131, 132, 133, + 133, 133, 134, 136, 139, 140, 140, 139, 136, 133, 132, 133, 133, 133, 133, 132, + 131, 127, 126, 125, 122, 118, 116, 118, 110, 123, 152, 158, 157, 153, 149, 160, + 162, 166, 168, 161, 161, 173, 177, 176, 180, 182, 188, 193, 194, 192, 185, 182, + 179, 185, 181, 183, 191, 197, 199, 201, 204, 203, 202, 204, 204, 204, 201, 201, + 198, 193, 197, 202, 199, 196, 195, 202, 207, 200, 198, 196, 196, 196, 197, 199, + 200, 201, 200, 200, 200, 200, 198, 194, 190, 185, 184, 187, 188, 197, 178, 140, + 59, 75, 58, 52, 79, 70, 68, 54, 60, 80, 186, 184, 178, 177, 173, 167, + 180, 181, 186, 186, 184, 187, 193, 186, 175, 176, 174, 175, 175, 177, 179, 183, + 183, 179, 179, 178, 175, 173, 177, 188, 197, 201, 199, 195, 190, 185, 183, 185, + 187, 192, 188, 184, 183, 183, 181, 175, 171, 165, 167, 148, 145, 157, 178, 175, + 179, 169, 161, 161, 157, 148, 151, 160, 160, 166, 158, 154, 147, 134, 133, 131, + 118, 119, 146, 149, 140, 142, 128, 106, 107, 102, 108, 107, 102, 105, 110, 113, + 112, 111, 109, 105, 105, 110, 119, 129, 133, 132, 128, 126, 139, 137, 135, 134, + 134, 134, 135, 136, 135, 134, 135, 135, 136, 134, 133, 131, 130, 129, 128, 128, + 127, 126, 123, 121, 123, 122, 121, 119, 117, 116, 118, 113, 112, 138, 149, 157, + 152, 146, 157, 156, 157, 161, 159, 162, 174, 176, 174, 179, 183, 187, 192, 194, + 190, 187, 183, 180, 178, 178, 181, 188, 195, 197, 201, 206, 203, 204, 206, 204, + 202, 198, 197, 196, 190, 193, 196, 195, 195, 197, 205, 208, 197, 196, 196, 197, + 197, 198, 198, 198, 203, 199, 195, 192, 193, 194, 195, 195, 185, 189, 186, 187, + 198, 175, 121, 65, 73, 60, 65, 87, 60, 63, 66, 75, 89, 196, 174, 166, + 167, 161, 168, 181, 180, 182, 180, 179, 183, 188, 184, 177, 180, 176, 176, 175, + 177, 177, 182, 186, 184, 185, 184, 179, 176, 179, 191, 200, 196, 194, 190, 185, + 182, 181, 182, 184, 187, 184, 181, 180, 180, 179, 177, 174, 170, 170, 147, 149, + 145, 171, 169, 176, 169, 161, 161, 158, 148, 151, 159, 158, 160, 155, 150, 144, + 136, 131, 128, 124, 108, 124, 119, 106, 105, 95, 84, 87, 97, 103, 103, 100, + 101, 104, 106, 104, 107, 108, 108, 110, 114, 119, 125, 126, 126, 125, 124, 145, + 142, 139, 138, 136, 135, 136, 137, 138, 136, 133, 131, 130, 129, 129, 127, 117, + 117, 118, 120, 118, 118, 117, 113, 124, 123, 122, 121, 118, 116, 118, 114, 99, + 119, 137, 156, 154, 148, 161, 154, 150, 158, 160, 163, 174, 176, 173, 179, 183, + 186, 191, 192, 190, 187, 187, 187, 185, 182, 185, 188, 190, 188, 190, 194, 203, + 204, 206, 200, 196, 190, 191, 190, 202, 198, 199, 196, 199, 198, 201, 197, 190, + 192, 195, 198, 200, 199, 197, 195, 198, 195, 191, 189, 190, 192, 193, 193, 185, + 189, 183, 181, 188, 170, 103, 61, 67, 66, 76, 91, 64, 69, 69, 69, 107, + 196, 165, 162, 163, 162, 173, 182, 183, 181, 176, 174, 178, 184, 184, 181, 185, + 177, 175, 173, 172, 172, 180, 188, 187, 187, 186, 183, 180, 184, 195, 203, 189, + 188, 186, 185, 184, 183, 182, 181, 181, 180, 179, 179, 180, 180, 180, 179, 170, + 169, 152, 155, 139, 162, 168, 178, 166, 161, 163, 163, 153, 154, 160, 156, 154, + 153, 144, 140, 138, 133, 129, 133, 92, 99, 97, 92, 93, 93, 93, 98, 94, + 102, 104, 101, 102, 105, 109, 108, 104, 106, 111, 117, 122, 124, 126, 124, 123, + 122, 123, 140, 138, 137, 136, 135, 133, 131, 131, 129, 125, 122, 120, 118, 117, + 118, 115, 108, 107, 113, 115, 119, 120, 120, 119, 118, 118, 116, 113, 109, 108, + 107, 105, 91, 101, 120, 148, 149, 146, 160, 151, 153, 160, 163, 167, 177, 175, + 171, 176, 184, 188, 189, 189, 188, 189, 192, 194, 189, 187, 189, 194, 196, 193, + 199, 205, 205, 205, 203, 196, 189, 184, 186, 187, 196, 195, 196, 198, 202, 202, + 200, 195, 189, 192, 197, 201, 202, 201, 197, 195, 190, 191, 193, 195, 197, 195, + 190, 187, 189, 190, 184, 180, 180, 173, 103, 59, 68, 69, 72, 90, 78, 83, + 64, 53, 124, 182, 163, 169, 169, 175, 178, 183, 188, 184, 179, 176, 179, 183, + 183, 181, 183, 175, 171, 170, 169, 167, 178, 190, 186, 185, 184, 183, 185, 189, + 197, 202, 187, 187, 186, 187, 188, 187, 183, 181, 179, 180, 181, 182, 182, 182, + 182, 181, 167, 160, 155, 156, 141, 156, 172, 179, 163, 160, 165, 166, 157, 157, + 161, 156, 150, 151, 140, 135, 139, 133, 131, 144, 87, 92, 98, 99, 100, 101, + 100, 100, 99, 107, 109, 105, 104, 107, 111, 111, 109, 112, 118, 125, 132, 133, + 131, 128, 125, 125, 127, 127, 127, 128, 128, 126, 124, 121, 119, 113, 111, 110, + 110, 108, 107, 107, 104, 102, 102, 108, 112, 116, 116, 116, 115, 105, 105, 105, + 103, 100, 98, 100, 101, 102, 101, 114, 143, 144, 142, 157, 145, 153, 163, 165, + 168, 177, 173, 169, 176, 184, 186, 188, 188, 188, 188, 190, 192, 186, 187, 192, + 198, 202, 203, 210, 218, 206, 206, 204, 194, 188, 184, 189, 191, 192, 195, 204, + 207, 211, 207, 206, 203, 195, 196, 200, 202, 203, 201, 199, 197, 190, 191, 194, + 197, 199, 197, 192, 188, 194, 191, 189, 185, 178, 185, 110, 61, 67, 70, 65, + 88, 85, 80, 58, 69, 149, 173, 170, 180, 172, 185, 182, 188, 191, 185, 182, + 182, 184, 183, 179, 177, 179, 171, 170, 172, 172, 169, 180, 193, 190, 187, 184, + 185, 189, 193, 197, 197, 190, 188, 187, 187, 188, 187, 183, 180, 178, 180, 182, + 183, 182, 180, 178, 177, 169, 153, 158, 152, 148, 152, 173, 170, 162, 158, 164, + 166, 158, 158, 162, 158, 151, 152, 138, 133, 139, 132, 132, 153, 92, 92, 100, + 106, 102, 102, 101, 95, 95, 103, 105, 100, 97, 102, 107, 107, 121, 123, 127, + 131, 134, 134, 133, 130, 128, 130, 131, 113, 113, 115, 114, 113, 111, 107, 104, + 102, 102, 105, 106, 107, 106, 103, 100, 92, 91, 95, 98, 100, 99, 97, 95, + 93, 95, 95, 97, 98, 100, 102, 105, 124, 116, 121, 148, 146, 145, 161, 146, + 150, 160, 163, 166, 175, 174, 168, 176, 180, 183, 186, 186, 185, 185, 185, 186, + 187, 188, 191, 196, 198, 197, 203, 210, 210, 209, 206, 197, 190, 187, 194, 199, + 205, 213, 224, 225, 221, 212, 209, 208, 201, 202, 202, 203, 202, 201, 200, 199, + 197, 195, 193, 193, 195, 196, 197, 196, 189, 185, 187, 185, 173, 189, 113, 57, + 65, 68, 61, 85, 80, 67, 58, 101, 173, 173, 178, 185, 167, 186, 183, 196, + 189, 185, 183, 185, 186, 182, 175, 171, 176, 169, 172, 177, 177, 174, 184, 198, + 199, 193, 188, 189, 193, 195, 194, 191, 193, 189, 185, 184, 185, 184, 181, 178, + 176, 178, 181, 181, 179, 175, 172, 171, 175, 150, 159, 149, 152, 149, 171, 159, + 161, 157, 162, 163, 156, 158, 163, 160, 151, 153, 136, 131, 139, 131, 132, 156, + 92, 90, 97, 104, 101, 103, 109, 104, 100, 107, 113, 112, 112, 120, 128, 130, + 133, 133, 133, 131, 130, 129, 128, 126, 130, 131, 132, 104, 105, 106, 105, 103, + 97, 92, 88, 93, 100, 94, 84, 81, 74, 70, 75, 63, 71, 77, 82, 89, + 83, 82, 96, 97, 95, 94, 100, 109, 115, 118, 121, 138, 135, 135, 140, 143, + 144, 145, 149, 155, 159, 164, 167, 169, 168, 167, 169, 176, 179, 181, 183, 185, + 186, 187, 187, 190, 188, 189, 194, 196, 194, 196, 200, 202, 202, 204, 204, 207, + 206, 208, 207, 208, 208, 212, 213, 216, 216, 216, 215, 208, 204, 201, 198, 199, + 201, 205, 207, 202, 197, 191, 187, 187, 189, 191, 194, 198, 191, 176, 185, 186, + 188, 159, 58, 78, 59, 68, 85, 76, 67, 92, 126, 168, 176, 183, 187, 188, + 189, 191, 193, 182, 187, 191, 190, 184, 178, 175, 174, 179, 176, 177, 176, 179, + 179, 180, 178, 197, 191, 186, 186, 192, 197, 199, 198, 189, 187, 184, 182, 182, + 182, 180, 178, 178, 172, 175, 179, 175, 177, 180, 172, 166, 168, 166, 157, 159, + 140, 166, 170, 161, 161, 160, 158, 160, 162, 158, 149, 149, 142, 141, 137, 140, + 116, 149, 161, 99, 95, 111, 107, 100, 107, 102, 101, 113, 117, 123, 129, 134, + 136, 137, 135, 140, 139, 135, 130, 125, 122, 124, 127, 129, 129, 129, 86, 85, + 82, 78, 77, 76, 75, 75, 66, 74, 74, 69, 66, 57, 52, 54, 60, 65, + 66, 79, 96, 96, 91, 97, 97, 105, 115, 121, 122, 121, 120, 124, 126, 127, + 129, 133, 137, 139, 144, 151, 150, 154, 160, 164, 167, 167, 168, 170, 172, 174, + 179, 182, 184, 186, 188, 188, 187, 185, 187, 192, 194, 192, 192, 196, 197, 199, + 201, 203, 203, 202, 200, 199, 203, 204, 206, 208, 209, 211, 211, 211, 213, 211, + 208, 205, 204, 205, 207, 208, 210, 209, 206, 201, 196, 192, 189, 190, 187, 187, + 183, 195, 192, 190, 167, 87, 68, 70, 81, 75, 57, 72, 126, 171, 177, 182, + 187, 189, 188, 189, 192, 195, 190, 191, 191, 189, 183, 177, 173, 172, 176, 176, + 177, 175, 175, 178, 187, 192, 192, 188, 187, 190, 196, 199, 199, 196, 189, 186, + 184, 183, 182, 182, 180, 178, 179, 172, 176, 179, 174, 175, 177, 169, 171, 169, + 163, 154, 159, 145, 175, 180, 166, 166, 164, 161, 162, 164, 159, 150, 148, 146, + 136, 135, 134, 123, 148, 156, 101, 97, 115, 117, 120, 137, 137, 137, 147, 145, + 146, 146, 144, 141, 138, 136, 136, 136, 133, 130, 127, 126, 129, 131, 135, 136, + 135, 77, 76, 72, 68, 67, 64, 62, 62, 56, 58, 63, 62, 61, 56, 56, + 58, 73, 80, 83, 89, 100, 96, 91, 99, 93, 104, 116, 115, 107, 98, 100, + 108, 123, 124, 127, 130, 132, 134, 142, 151, 146, 150, 157, 162, 165, 167, 169, + 172, 171, 173, 176, 178, 180, 182, 182, 183, 183, 181, 185, 190, 192, 189, 189, + 192, 192, 194, 198, 200, 199, 196, 192, 190, 199, 199, 200, 201, 203, 204, 206, + 207, 216, 214, 212, 210, 208, 207, 207, 207, 204, 207, 209, 206, 197, 188, 182, + 182, 190, 191, 193, 201, 192, 188, 180, 131, 105, 100, 91, 76, 81, 120, 164, + 180, 181, 189, 193, 198, 199, 199, 199, 199, 201, 198, 191, 186, 181, 177, 173, + 169, 185, 184, 183, 174, 170, 172, 184, 192, 186, 186, 188, 194, 199, 200, 197, + 193, 188, 186, 184, 183, 183, 182, 180, 178, 179, 172, 176, 178, 173, 174, 174, + 166, 173, 170, 165, 158, 166, 151, 177, 178, 164, 164, 161, 158, 159, 160, 154, + 145, 145, 150, 131, 134, 125, 132, 148, 153, 106, 97, 112, 119, 129, 147, 145, + 144, 138, 136, 135, 134, 132, 130, 127, 126, 130, 129, 129, 127, 126, 125, 128, + 132, 134, 135, 134, 56, 58, 59, 61, 61, 61, 58, 57, 72, 65, 68, 71, + 67, 71, 82, 87, 93, 105, 106, 99, 93, 81, 78, 90, 82, 89, 95, 91, + 83, 83, 91, 103, 127, 130, 132, 133, 131, 131, 139, 149, 144, 149, 155, 160, + 163, 165, 168, 170, 173, 173, 174, 176, 176, 177, 176, 176, 180, 179, 183, 188, + 190, 188, 187, 189, 190, 190, 192, 193, 193, 192, 190, 188, 197, 197, 196, 197, + 198, 201, 204, 205, 211, 210, 210, 209, 208, 206, 205, 204, 213, 220, 226, 225, + 218, 210, 207, 209, 207, 200, 197, 197, 187, 185, 186, 170, 169, 151, 134, 127, + 144, 180, 189, 172, 183, 191, 197, 205, 209, 209, 207, 206, 204, 198, 187, 182, + 179, 177, 173, 169, 189, 184, 179, 172, 170, 173, 183, 189, 187, 187, 190, 195, + 198, 198, 194, 190, 188, 186, 184, 184, 183, 182, 180, 177, 178, 172, 176, 179, + 173, 174, 174, 166, 172, 172, 171, 168, 175, 153, 169, 162, 161, 161, 159, 156, + 156, 157, 152, 142, 138, 153, 131, 135, 118, 138, 152, 155, 105, 90, 105, 116, + 127, 142, 134, 128, 130, 127, 126, 125, 125, 126, 126, 126, 121, 122, 122, 121, + 119, 120, 122, 125, 121, 125, 127, 83, 82, 85, 89, 95, 100, 106, 109, 90, + 76, 80, 86, 81, 85, 99, 101, 96, 102, 97, 89, 90, 86, 83, 92, 86, + 90, 93, 95, 99, 106, 120, 130, 132, 132, 134, 135, 132, 131, 138, 148, 147, + 151, 156, 160, 161, 163, 166, 169, 171, 171, 172, 173, 173, 174, 173, 174, 181, + 179, 182, 188, 189, 188, 188, 190, 188, 188, 188, 188, 189, 190, 192, 193, 197, + 197, 196, 197, 198, 201, 204, 204, 203, 203, 204, 205, 205, 204, 203, 203, 197, + 203, 209, 209, 204, 200, 201, 207, 214, 204, 201, 196, 188, 189, 189, 190, 196, + 193, 198, 199, 194, 199, 203, 197, 194, 196, 197, 199, 201, 206, 209, 211, 200, + 194, 187, 182, 179, 178, 175, 171, 177, 170, 166, 166, 174, 182, 190, 191, 192, + 192, 192, 194, 194, 193, 191, 189, 187, 186, 184, 184, 184, 183, 179, 177, 177, + 171, 176, 180, 174, 175, 175, 166, 169, 170, 170, 168, 174, 150, 164, 155, 163, + 163, 161, 158, 159, 160, 155, 145, 132, 154, 135, 136, 119, 141, 156, 159, 99, + 83, 98, 114, 129, 143, 131, 123, 128, 123, 120, 116, 114, 112, 114, 114, 115, + 115, 115, 114, 112, 111, 112, 114, 113, 119, 121, 98, 92, 86, 82, 84, 91, + 100, 104, 94, 77, 86, 98, 86, 86, 94, 86, 86, 82, 72, 76, 98, 110, + 106, 103, 104, 108, 113, 119, 125, 129, 135, 136, 130, 129, 131, 134, 133, 132, + 137, 144, 148, 151, 155, 158, 159, 161, 164, 166, 165, 166, 168, 171, 172, 174, + 176, 176, 182, 180, 181, 185, 188, 186, 188, 190, 188, 186, 185, 185, 186, 189, + 192, 194, 194, 194, 195, 196, 198, 200, 201, 202, 199, 199, 201, 202, 203, 204, + 204, 204, 208, 211, 212, 211, 208, 207, 209, 213, 208, 201, 206, 200, 198, 200, + 190, 197, 195, 195, 210, 218, 207, 202, 209, 214, 207, 201, 191, 185, 185, 193, + 202, 208, 194, 191, 188, 185, 181, 179, 177, 174, 176, 167, 163, 164, 175, 183, + 187, 184, 195, 194, 194, 193, 191, 190, 189, 188, 187, 186, 185, 185, 185, 183, + 179, 176, 176, 171, 176, 179, 173, 173, 172, 163, 164, 164, 163, 158, 165, 146, + 166, 164, 162, 162, 159, 156, 156, 157, 151, 143, 133, 149, 136, 134, 129, 141, + 159, 157, 103, 84, 100, 116, 128, 137, 124, 117, 113, 111, 107, 104, 102, 100, + 101, 101, 108, 109, 111, 110, 107, 108, 108, 110, 112, 115, 117, 121, 114, 105, + 98, 95, 95, 97, 98, 97, 75, 86, 101, 86, 85, 94, 83, 83, 87, 83, + 88, 110, 122, 118, 117, 117, 122, 128, 133, 134, 134, 135, 132, 134, 129, 131, + 135, 136, 132, 133, 136, 145, 148, 152, 155, 157, 160, 162, 164, 163, 164, 166, + 170, 173, 175, 177, 177, 182, 179, 179, 184, 185, 184, 188, 191, 189, 186, 186, + 186, 187, 188, 189, 190, 190, 191, 193, 195, 197, 198, 198, 197, 197, 196, 197, + 198, 199, 201, 202, 203, 200, 199, 197, 196, 194, 194, 194, 196, 203, 203, 215, + 203, 203, 207, 191, 203, 197, 189, 195, 202, 204, 207, 208, 201, 206, 201, 191, + 185, 187, 192, 195, 197, 191, 193, 193, 191, 185, 181, 179, 176, 181, 172, 167, + 165, 170, 176, 181, 180, 193, 193, 194, 194, 192, 189, 189, 188, 186, 185, 185, + 185, 185, 183, 179, 175, 178, 172, 176, 178, 170, 168, 165, 155, 155, 158, 160, + 156, 162, 144, 167, 168, 163, 162, 158, 153, 152, 151, 144, 136, 141, 144, 132, + 129, 141, 140, 157, 148, 109, 86, 97, 109, 117, 124, 110, 107, 107, 106, 105, + 104, 103, 103, 104, 104, 101, 103, 105, 106, 104, 104, 106, 107, 108, 108, 109, + 117, 115, 116, 114, 112, 106, 102, 97, 105, 79, 89, 103, 88, 90, 105, 96, + 97, 114, 120, 116, 119, 119, 120, 126, 121, 125, 132, 134, 134, 135, 140, 142, + 141, 134, 133, 136, 137, 132, 129, 128, 141, 145, 149, 152, 155, 159, 163, 165, + 166, 166, 168, 171, 172, 172, 175, 175, 180, 177, 177, 181, 181, 182, 185, 190, + 187, 186, 187, 187, 187, 186, 185, 184, 186, 187, 190, 192, 194, 194, 195, 193, + 197, 194, 194, 195, 196, 197, 199, 200, 205, 203, 201, 200, 200, 200, 199, 199, + 207, 210, 221, 200, 197, 204, 191, 208, 201, 198, 202, 202, 199, 208, 208, 194, + 196, 196, 195, 196, 198, 196, 192, 187, 189, 194, 197, 194, 189, 182, 178, 178, + 174, 170, 167, 164, 168, 174, 185, 190, 188, 191, 194, 193, 194, 191, 188, 187, + 186, 185, 185, 185, 185, 183, 179, 175, 179, 172, 175, 176, 167, 163, 160, 149, + 146, 154, 162, 161, 166, 143, 164, 163, 169, 168, 163, 157, 154, 151, 144, 135, + 150, 139, 130, 125, 149, 139, 155, 137, 104, 79, 87, 98, 104, 113, 103, 103, + 99, 98, 97, 95, 93, 90, 89, 88, 89, 92, 96, 97, 97, 98, 99, 101, + 96, 97, 98, 131, 128, 126, 124, 123, 121, 122, 120, 124, 110, 108, 137, 124, + 138, 131, 122, 126, 124, 124, 125, 129, 135, 135, 134, 135, 138, 135, 131, 131, + 138, 140, 139, 139, 136, 133, 133, 136, 135, 134, 131, 130, 141, 148, 148, 152, + 159, 163, 161, 165, 160, 162, 165, 169, 169, 172, 172, 176, 177, 176, 176, 178, + 182, 186, 188, 189, 188, 187, 186, 185, 185, 184, 184, 188, 189, 190, 190, 192, + 192, 193, 192, 199, 199, 199, 199, 199, 197, 196, 195, 201, 200, 198, 198, 199, + 201, 204, 207, 211, 208, 203, 204, 206, 205, 201, 195, 204, 200, 197, 203, 211, + 213, 205, 197, 192, 191, 189, 192, 197, 198, 197, 193, 188, 186, 184, 181, 178, + 176, 172, 171, 180, 166, 159, 161, 166, 167, 176, 185, 184, 188, 193, 192, 188, + 183, 183, 187, 187, 186, 185, 184, 183, 181, 177, 173, 177, 176, 179, 176, 163, + 157, 150, 135, 144, 152, 149, 148, 160, 164, 163, 164, 169, 162, 156, 153, 150, + 147, 147, 147, 141, 160, 102, 143, 138, 157, 158, 151, 96, 83, 77, 85, 86, + 78, 78, 90, 88, 86, 88, 79, 85, 85, 70, 78, 79, 75, 83, 90, 86, + 88, 89, 82, 90, 91, 95, 126, 125, 127, 129, 130, 130, 129, 127, 124, 123, + 124, 130, 119, 127, 130, 131, 130, 128, 128, 129, 132, 135, 137, 136, 141, 141, + 140, 134, 132, 134, 133, 127, 133, 134, 137, 141, 144, 141, 134, 128, 130, 143, + 151, 147, 144, 152, 163, 170, 169, 165, 166, 168, 171, 171, 171, 172, 175, 174, + 174, 174, 176, 179, 184, 186, 187, 187, 186, 185, 185, 186, 185, 186, 186, 186, + 187, 189, 190, 191, 191, 192, 197, 198, 199, 200, 201, 201, 201, 200, 199, 199, + 199, 201, 204, 208, 212, 214, 213, 210, 206, 207, 209, 209, 203, 199, 203, 200, + 198, 203, 209, 211, 207, 201, 200, 198, 195, 196, 197, 198, 194, 192, 191, 190, + 188, 186, 181, 179, 177, 176, 173, 164, 160, 160, 165, 170, 181, 187, 187, 189, + 192, 191, 186, 183, 184, 186, 188, 186, 185, 184, 183, 181, 177, 173, 174, 170, + 173, 170, 160, 158, 155, 140, 143, 152, 151, 146, 152, 154, 156, 161, 165, 158, + 153, 151, 150, 147, 141, 137, 138, 146, 119, 145, 154, 153, 153, 143, 88, 73, + 69, 81, 82, 71, 62, 67, 74, 75, 89, 82, 76, 77, 69, 74, 77, 69, + 70, 71, 68, 76, 87, 87, 85, 87, 92, 128, 131, 134, 135, 136, 134, 132, + 128, 126, 131, 126, 109, 117, 121, 129, 131, 131, 131, 131, 131, 131, 130, 132, + 132, 129, 132, 134, 131, 131, 134, 133, 130, 131, 135, 139, 143, 145, 143, 137, + 132, 132, 140, 146, 146, 147, 154, 163, 166, 165, 165, 167, 168, 172, 173, 173, + 173, 173, 172, 173, 172, 173, 175, 179, 181, 182, 182, 182, 183, 184, 185, 186, + 187, 184, 185, 187, 189, 190, 191, 191, 191, 192, 193, 195, 197, 200, 201, 202, + 202, 200, 200, 200, 202, 205, 209, 212, 214, 211, 208, 206, 207, 209, 210, 205, + 202, 201, 200, 199, 202, 206, 208, 207, 206, 208, 204, 202, 201, 199, 198, 193, + 191, 190, 189, 187, 184, 180, 178, 175, 174, 170, 170, 168, 162, 166, 175, 184, + 188, 190, 190, 191, 189, 186, 184, 186, 188, 189, 187, 186, 185, 184, 181, 177, + 173, 170, 168, 173, 172, 163, 161, 156, 139, 137, 148, 148, 143, 149, 153, 159, + 169, 164, 160, 156, 155, 154, 150, 142, 134, 141, 132, 134, 141, 160, 148, 147, + 140, 79, 65, 63, 77, 87, 80, 71, 73, 68, 65, 93, 90, 72, 74, 73, + 74, 79, 69, 67, 66, 64, 74, 88, 92, 91, 91, 92, 123, 124, 127, 130, + 132, 131, 132, 130, 129, 131, 118, 87, 121, 126, 131, 122, 130, 130, 132, 133, + 131, 126, 127, 130, 127, 129, 130, 129, 131, 134, 134, 131, 134, 133, 133, 133, + 135, 137, 138, 139, 131, 131, 136, 143, 155, 162, 159, 154, 158, 160, 164, 165, + 169, 173, 174, 170, 172, 172, 171, 172, 172, 174, 176, 178, 176, 176, 177, 178, + 180, 183, 185, 186, 187, 187, 188, 189, 190, 189, 189, 189, 188, 190, 192, 195, + 197, 198, 199, 200, 203, 203, 202, 202, 202, 203, 205, 205, 206, 204, 203, 204, + 206, 207, 203, 201, 200, 201, 201, 201, 202, 205, 207, 209, 209, 207, 205, 202, + 199, 197, 193, 190, 191, 189, 187, 181, 178, 175, 172, 170, 172, 178, 176, 167, + 168, 179, 187, 186, 192, 191, 190, 187, 185, 185, 187, 189, 189, 188, 186, 185, + 184, 181, 176, 173, 170, 170, 177, 178, 169, 164, 153, 132, 142, 150, 148, 144, + 153, 159, 165, 172, 160, 161, 160, 155, 151, 149, 144, 138, 147, 127, 137, 139, + 148, 148, 146, 147, 81, 70, 66, 78, 84, 82, 79, 82, 73, 62, 93, 93, + 67, 73, 75, 69, 74, 68, 72, 75, 71, 76, 86, 87, 94, 95, 93, 103, + 102, 104, 108, 114, 119, 123, 124, 121, 128, 113, 80, 110, 114, 118, 109, 116, + 116, 121, 128, 129, 125, 125, 127, 134, 134, 130, 124, 122, 124, 124, 123, 131, + 132, 132, 132, 133, 135, 137, 139, 129, 128, 133, 140, 149, 155, 157, 158, 156, + 160, 163, 162, 167, 172, 171, 166, 171, 172, 171, 171, 171, 173, 174, 176, 174, + 174, 175, 177, 180, 183, 185, 187, 192, 192, 192, 192, 191, 190, 188, 188, 190, + 191, 193, 195, 197, 197, 198, 198, 205, 205, 204, 203, 202, 202, 201, 201, 203, + 202, 202, 202, 202, 202, 202, 201, 199, 200, 201, 201, 200, 202, 206, 210, 206, + 205, 203, 200, 196, 194, 192, 191, 196, 193, 190, 184, 180, 175, 172, 171, 172, + 178, 177, 168, 171, 182, 189, 186, 193, 191, 188, 186, 185, 185, 187, 189, 189, + 187, 185, 184, 183, 179, 175, 171, 172, 169, 172, 172, 165, 163, 156, 136, 152, + 155, 148, 145, 159, 165, 164, 165, 152, 157, 157, 148, 140, 140, 142, 141, 143, + 127, 134, 145, 138, 153, 146, 144, 85, 81, 84, 88, 86, 78, 76, 78, 86, + 66, 89, 87, 66, 74, 74, 63, 66, 63, 69, 71, 65, 67, 76, 77, 91, + 93, 93, 105, 104, 102, 101, 103, 106, 108, 110, 110, 123, 118, 87, 86, 88, + 97, 99, 97, 97, 104, 119, 126, 123, 120, 122, 119, 120, 117, 112, 110, 115, + 118, 117, 127, 133, 136, 139, 139, 137, 136, 135, 127, 132, 139, 138, 134, 134, + 148, 165, 158, 164, 166, 163, 167, 172, 169, 162, 170, 170, 169, 170, 169, 170, + 170, 173, 173, 174, 176, 178, 181, 184, 187, 189, 192, 192, 192, 192, 191, 189, + 188, 187, 193, 194, 196, 197, 198, 198, 198, 198, 203, 203, 203, 204, 204, 205, + 205, 205, 204, 204, 204, 204, 202, 203, 203, 203, 200, 201, 201, 201, 200, 201, + 204, 205, 201, 201, 199, 195, 192, 189, 190, 192, 192, 190, 186, 183, 178, 175, + 172, 171, 170, 169, 168, 169, 174, 185, 190, 189, 191, 189, 186, 185, 185, 185, + 186, 186, 188, 186, 184, 183, 181, 178, 173, 169, 173, 164, 161, 159, 156, 163, + 165, 151, 144, 147, 143, 146, 165, 173, 169, 167, 155, 160, 157, 144, 137, 140, + 144, 143, 131, 129, 135, 154, 143, 158, 151, 124, 79, 87, 101, 112, 109, 97, + 87, 85, 96, 76, 87, 82, 71, 77, 72, 63, 63, 58, 61, 60, 52, 57, + 68, 72, 93, 94, 95, 120, 117, 114, 111, 109, 107, 104, 104, 111, 117, 112, + 95, 68, 76, 86, 92, 92, 91, 99, 117, 127, 121, 114, 111, 103, 107, 108, + 107, 110, 117, 119, 121, 128, 135, 140, 142, 139, 137, 136, 136, 131, 131, 136, + 139, 136, 131, 138, 149, 150, 160, 162, 160, 164, 172, 170, 162, 167, 168, 167, + 167, 166, 167, 167, 166, 170, 170, 173, 175, 178, 181, 183, 185, 187, 188, 190, + 190, 190, 190, 189, 189, 190, 191, 192, 194, 195, 196, 196, 196, 197, 198, 200, + 202, 203, 204, 205, 205, 203, 204, 204, 203, 203, 202, 201, 202, 202, 201, 200, + 200, 201, 202, 201, 201, 199, 198, 197, 193, 189, 186, 188, 191, 186, 185, 182, + 180, 178, 176, 173, 172, 175, 168, 165, 172, 182, 187, 190, 192, 189, 188, 185, + 184, 185, 185, 186, 186, 187, 185, 183, 181, 179, 176, 171, 167, 168, 160, 158, + 159, 160, 170, 174, 160, 137, 145, 146, 151, 168, 175, 170, 169, 164, 164, 157, + 143, 140, 146, 144, 136, 127, 133, 142, 151, 153, 150, 161, 102, 75, 88, 105, + 123, 128, 121, 112, 104, 104, 93, 96, 87, 85, 88, 76, 74, 70, 66, 67, + 66, 58, 65, 78, 84, 99, 97, 94, 114, 115, 116, 118, 117, 118, 116, 115, + 119, 111, 98, 98, 64, 84, 88, 87, 99, 95, 101, 120, 129, 120, 107, 102, + 112, 117, 119, 119, 121, 125, 123, 123, 133, 137, 137, 133, 131, 132, 137, 139, + 136, 126, 127, 140, 150, 143, 128, 120, 139, 150, 155, 155, 161, 173, 173, 164, + 164, 165, 164, 164, 163, 162, 161, 162, 164, 164, 165, 169, 172, 175, 178, 180, + 183, 184, 187, 188, 189, 190, 190, 189, 184, 185, 187, 190, 191, 193, 193, 194, + 195, 196, 197, 199, 200, 201, 201, 201, 202, 203, 204, 203, 201, 200, 200, 201, + 203, 201, 199, 200, 202, 203, 199, 197, 198, 198, 197, 190, 186, 184, 186, 188, + 186, 184, 184, 183, 183, 183, 181, 181, 187, 172, 167, 177, 189, 190, 189, 191, + 188, 186, 184, 184, 185, 185, 185, 184, 186, 184, 182, 180, 178, 175, 170, 166, + 164, 159, 164, 170, 172, 179, 177, 159, 147, 158, 160, 160, 168, 167, 159, 158, + 166, 162, 150, 138, 140, 146, 138, 122, 131, 137, 148, 141, 158, 139, 171, 91, + 85, 91, 105, 120, 130, 128, 118, 111, 111, 108, 111, 99, 102, 101, 83, 89, + 81, 79, 85, 88, 80, 84, 93, 96, 100, 96, 93, 120, 117, 109, 104, 104, + 110, 110, 105, 110, 104, 101, 115, 99, 78, 87, 91, 100, 113, 116, 117, 121, + 115, 108, 113, 113, 115, 119, 118, 117, 119, 125, 131, 134, 133, 141, 142, 132, + 131, 135, 128, 130, 126, 129, 137, 146, 147, 144, 142, 124, 139, 143, 147, 163, + 172, 166, 164, 162, 167, 172, 174, 172, 170, 170, 172, 167, 169, 168, 168, 168, + 170, 175, 181, 178, 180, 184, 187, 189, 189, 188, 187, 195, 190, 188, 189, 189, + 188, 190, 194, 191, 189, 193, 199, 199, 194, 195, 201, 201, 202, 204, 204, 202, + 200, 197, 195, 199, 200, 200, 198, 198, 197, 196, 196, 191, 192, 190, 190, 189, + 190, 193, 195, 195, 192, 186, 179, 181, 184, 179, 170, 173, 165, 166, 177, 188, + 190, 188, 187, 188, 188, 189, 189, 189, 186, 185, 184, 182, 183, 184, 181, 175, + 171, 170, 171, 163, 169, 174, 180, 163, 160, 168, 137, 156, 156, 157, 161, 168, + 173, 173, 168, 160, 150, 149, 133, 134, 144, 131, 126, 141, 148, 140, 152, 171, + 129, 173, 92, 90, 95, 115, 132, 130, 127, 125, 116, 109, 112, 113, 112, 113, + 112, 106, 97, 97, 94, 93, 94, 97, 98, 97, 97, 95, 94, 93, 126, 124, + 116, 108, 103, 102, 96, 88, 98, 92, 85, 96, 88, 79, 97, 98, 101, 104, + 98, 95, 104, 105, 102, 108, 102, 104, 109, 112, 115, 119, 124, 128, 130, 128, + 135, 135, 129, 128, 133, 128, 132, 131, 126, 125, 133, 145, 147, 145, 143, 146, + 136, 128, 136, 144, 151, 163, 170, 172, 173, 171, 168, 166, 167, 170, 169, 170, + 170, 167, 165, 166, 172, 175, 172, 173, 178, 181, 183, 185, 186, 186, 190, 186, + 186, 188, 189, 187, 189, 193, 194, 192, 195, 200, 200, 196, 197, 203, 199, 201, + 203, 203, 201, 199, 197, 194, 199, 200, 198, 197, 197, 195, 194, 192, 191, 192, + 190, 189, 187, 188, 190, 193, 189, 188, 182, 175, 178, 184, 185, 180, 167, 165, + 173, 184, 187, 186, 184, 188, 185, 186, 187, 187, 187, 184, 184, 182, 181, 179, + 177, 175, 174, 172, 169, 166, 167, 187, 165, 170, 188, 160, 147, 161, 163, 160, + 161, 167, 172, 173, 171, 167, 164, 151, 149, 134, 131, 138, 127, 129, 142, 140, + 143, 145, 134, 146, 151, 79, 90, 99, 121, 135, 132, 128, 124, 119, 118, 121, + 121, 117, 116, 116, 110, 101, 97, 95, 92, 93, 96, 95, 95, 93, 94, 92, + 93, 123, 125, 122, 118, 114, 112, 104, 96, 96, 94, 86, 94, 91, 89, 104, + 94, 100, 99, 90, 88, 100, 103, 103, 108, 108, 108, 112, 117, 122, 126, 128, + 128, 129, 125, 130, 130, 124, 125, 131, 127, 122, 129, 129, 126, 131, 144, 149, + 145, 149, 151, 144, 138, 140, 136, 137, 149, 149, 156, 166, 174, 175, 174, 171, + 169, 167, 167, 168, 165, 163, 163, 166, 169, 168, 168, 171, 172, 174, 179, 181, + 182, 185, 182, 183, 187, 188, 186, 187, 191, 194, 193, 195, 197, 197, 195, 198, + 203, 198, 199, 200, 200, 199, 198, 195, 193, 198, 196, 196, 196, 194, 192, 191, + 190, 190, 189, 189, 187, 185, 185, 187, 189, 181, 183, 182, 177, 178, 180, 181, + 178, 163, 169, 181, 189, 188, 183, 183, 188, 186, 186, 187, 186, 186, 186, 184, + 182, 187, 182, 177, 175, 175, 174, 168, 163, 171, 178, 179, 187, 174, 159, 170, + 164, 170, 164, 167, 176, 179, 172, 167, 167, 167, 151, 149, 134, 128, 131, 124, + 135, 152, 154, 151, 151, 139, 171, 110, 89, 90, 107, 130, 139, 136, 130, 126, + 124, 119, 121, 118, 114, 113, 113, 109, 101, 98, 94, 93, 93, 96, 95, 95, + 92, 89, 86, 87, 118, 123, 124, 123, 124, 124, 120, 113, 107, 111, 106, 113, + 109, 106, 108, 80, 101, 107, 106, 108, 116, 115, 111, 114, 122, 122, 122, 125, + 129, 129, 126, 122, 130, 123, 126, 126, 119, 122, 129, 125, 121, 125, 126, 124, + 123, 131, 144, 157, 155, 158, 155, 155, 156, 144, 136, 144, 138, 143, 149, 155, + 160, 161, 164, 164, 162, 162, 164, 162, 162, 162, 167, 170, 167, 167, 166, 168, + 169, 172, 175, 177, 180, 179, 180, 186, 187, 186, 186, 189, 192, 192, 192, 192, + 191, 192, 195, 199, 196, 197, 197, 197, 197, 196, 193, 193, 192, 193, 193, 193, + 192, 191, 191, 190, 187, 188, 187, 185, 183, 182, 184, 185, 175, 178, 181, 181, + 177, 173, 169, 166, 166, 174, 183, 188, 186, 182, 183, 187, 188, 188, 188, 188, + 189, 188, 186, 185, 187, 184, 179, 175, 171, 168, 164, 161, 162, 182, 197, 188, + 155, 163, 192, 163, 173, 166, 170, 181, 182, 171, 166, 168, 166, 149, 147, 132, + 124, 127, 126, 145, 149, 158, 132, 144, 161, 156, 65, 91, 90, 116, 135, 142, + 141, 134, 129, 133, 129, 130, 125, 121, 119, 122, 118, 113, 115, 112, 111, 112, + 115, 116, 116, 112, 106, 102, 102, 121, 125, 125, 120, 119, 120, 117, 114, 120, + 125, 120, 126, 124, 120, 116, 81, 107, 120, 125, 125, 130, 124, 120, 127, 129, + 128, 126, 127, 128, 126, 122, 114, 124, 115, 117, 118, 114, 119, 126, 122, 129, + 122, 119, 117, 109, 108, 129, 155, 168, 165, 152, 147, 151, 148, 146, 155, 157, + 150, 139, 132, 131, 134, 144, 150, 153, 155, 157, 157, 158, 160, 166, 170, 168, + 167, 165, 165, 165, 168, 171, 172, 176, 174, 176, 182, 184, 182, 183, 186, 187, + 189, 189, 187, 186, 188, 191, 195, 194, 194, 195, 195, 193, 193, 192, 192, 189, + 189, 190, 191, 191, 192, 191, 191, 186, 187, 185, 184, 182, 181, 183, 183, 179, + 179, 178, 178, 174, 170, 169, 168, 176, 179, 181, 182, 184, 185, 185, 186, 187, + 187, 187, 186, 188, 186, 186, 185, 177, 179, 179, 173, 165, 161, 162, 165, 170, + 205, 179, 157, 170, 172, 174, 174, 170, 167, 172, 182, 183, 173, 168, 168, 162, + 147, 145, 129, 122, 129, 133, 153, 158, 153, 130, 147, 160, 134, 95, 88, 86, + 120, 138, 140, 143, 136, 129, 136, 124, 122, 118, 112, 108, 109, 105, 99, 107, + 104, 103, 102, 107, 110, 111, 107, 103, 101, 101, 120, 125, 125, 120, 117, 120, + 121, 120, 125, 124, 117, 124, 125, 126, 128, 100, 115, 126, 127, 123, 125, 120, + 123, 135, 127, 126, 127, 129, 129, 127, 124, 118, 114, 103, 108, 112, 110, 117, + 125, 121, 119, 117, 122, 125, 116, 103, 102, 109, 150, 159, 155, 151, 157, 159, + 156, 160, 160, 156, 151, 146, 144, 142, 139, 137, 139, 141, 145, 147, 147, 150, + 155, 160, 163, 163, 162, 162, 162, 164, 166, 167, 173, 172, 173, 177, 179, 178, + 179, 183, 186, 189, 190, 187, 186, 189, 191, 191, 192, 192, 192, 192, 191, 191, + 191, 191, 188, 189, 189, 190, 191, 191, 191, 191, 185, 185, 184, 183, 180, 181, + 181, 184, 186, 179, 172, 170, 170, 173, 179, 185, 185, 181, 178, 177, 181, 186, + 186, 183, 184, 183, 182, 181, 183, 182, 182, 182, 173, 178, 181, 176, 167, 164, + 170, 177, 204, 184, 151, 161, 178, 171, 173, 168, 168, 170, 176, 180, 180, 175, + 172, 168, 158, 148, 145, 124, 120, 136, 141, 156, 174, 150, 148, 156, 136, 129, + 164, 89, 86, 123, 136, 134, 141, 135, 126, 134, 117, 116, 109, 102, 97, 95, + 90, 83, 89, 85, 83, 84, 86, 91, 92, 89, 83, 83, 85, 119, 125, 128, + 126, 125, 128, 130, 130, 128, 123, 114, 125, 126, 127, 137, 116, 118, 124, 124, + 119, 121, 118, 120, 131, 124, 126, 129, 131, 131, 130, 130, 128, 116, 104, 108, + 111, 109, 115, 122, 116, 109, 119, 127, 127, 128, 121, 95, 67, 93, 130, 155, + 160, 167, 168, 158, 154, 150, 153, 159, 165, 167, 161, 152, 144, 139, 141, 143, + 143, 142, 144, 146, 149, 155, 155, 155, 157, 157, 160, 162, 164, 171, 169, 169, + 172, 173, 173, 175, 179, 182, 187, 189, 186, 184, 188, 188, 186, 191, 191, 189, + 189, 189, 189, 188, 188, 191, 192, 191, 191, 190, 189, 188, 188, 184, 184, 184, + 183, 181, 182, 183, 185, 186, 176, 168, 170, 175, 178, 183, 187, 185, 184, 180, + 176, 180, 185, 185, 181, 180, 180, 180, 179, 181, 180, 180, 180, 176, 178, 179, + 175, 169, 167, 171, 176, 192, 153, 152, 188, 181, 172, 185, 159, 168, 177, 182, + 178, 176, 178, 175, 166, 156, 151, 147, 121, 119, 143, 147, 155, 160, 145, 144, + 148, 131, 133, 168, 101, 94, 132, 138, 131, 143, 137, 124, 132, 129, 129, 123, + 117, 114, 111, 106, 99, 101, 98, 95, 94, 95, 98, 99, 97, 91, 90, 92, + 123, 129, 133, 129, 126, 126, 126, 124, 132, 125, 120, 132, 132, 128, 135, 118, + 117, 123, 122, 120, 125, 121, 116, 121, 117, 123, 127, 127, 126, 126, 129, 129, + 126, 114, 115, 117, 112, 117, 119, 111, 122, 130, 121, 105, 117, 133, 109, 64, + 47, 102, 141, 150, 157, 164, 159, 156, 161, 157, 153, 151, 154, 158, 160, 159, + 153, 154, 154, 152, 149, 147, 149, 151, 145, 146, 148, 150, 152, 155, 157, 160, + 168, 164, 162, 165, 168, 168, 171, 176, 176, 184, 187, 183, 181, 184, 184, 180, + 189, 189, 186, 186, 186, 187, 186, 187, 194, 193, 193, 190, 190, 186, 186, 183, + 183, 183, 183, 182, 181, 180, 184, 185, 179, 169, 168, 175, 182, 180, 179, 177, + 180, 185, 184, 179, 179, 183, 184, 181, 184, 183, 182, 181, 181, 181, 182, 182, + 176, 174, 171, 166, 162, 160, 161, 162, 131, 162, 171, 188, 202, 179, 168, 169, + 169, 183, 187, 177, 174, 180, 178, 164, 156, 154, 149, 119, 118, 147, 151, 152, + 147, 162, 144, 148, 170, 154, 139, 135, 100, 136, 139, 130, 143, 138, 125, 134, + 125, 126, 125, 120, 120, 119, 117, 110, 109, 106, 101, 99, 99, 100, 100, 98, + 98, 96, 96, 121, 123, 125, 126, 125, 124, 123, 124, 123, 121, 123, 121, 121, + 121, 121, 120, 110, 119, 118, 117, 120, 116, 113, 120, 105, 111, 114, 112, 114, + 122, 125, 124, 120, 120, 122, 121, 117, 116, 117, 120, 119, 122, 121, 108, 119, + 115, 115, 67, 35, 56, 90, 124, 148, 157, 153, 149, 157, 157, 157, 157, 159, + 160, 160, 159, 149, 148, 148, 151, 156, 158, 157, 157, 159, 161, 160, 155, 146, + 140, 137, 137, 151, 154, 158, 162, 166, 164, 160, 156, 170, 174, 178, 184, 183, + 181, 183, 186, 183, 183, 181, 177, 178, 184, 187, 187, 184, 185, 188, 188, 188, + 183, 179, 175, 183, 180, 178, 177, 180, 180, 178, 175, 151, 163, 176, 179, 177, + 176, 180, 185, 183, 181, 180, 182, 184, 185, 186, 185, 188, 185, 181, 179, 181, + 181, 180, 179, 180, 176, 169, 163, 161, 158, 150, 143, 164, 157, 177, 187, 175, + 179, 179, 154, 170, 182, 192, 189, 180, 172, 168, 164, 142, 149, 154, 139, 116, + 151, 151, 154, 164, 148, 145, 158, 162, 152, 144, 149, 104, 125, 120, 128, 133, + 122, 130, 129, 132, 130, 136, 134, 122, 121, 120, 105, 115, 110, 108, 107, 108, + 106, 103, 102, 101, 104, 102, 126, 127, 127, 125, 122, 120, 120, 120, 121, 120, + 119, 117, 116, 116, 116, 117, 116, 124, 123, 119, 123, 120, 116, 122, 116, 118, + 116, 108, 104, 107, 109, 108, 110, 113, 115, 115, 112, 112, 115, 117, 117, 116, + 115, 111, 121, 110, 117, 85, 37, 45, 54, 67, 86, 115, 145, 167, 166, 164, + 158, 154, 153, 156, 156, 152, 157, 156, 156, 157, 161, 164, 167, 167, 161, 161, + 159, 155, 152, 150, 150, 151, 152, 150, 146, 145, 150, 156, 159, 163, 159, 162, + 167, 176, 179, 180, 184, 190, 183, 183, 182, 177, 179, 182, 185, 182, 190, 189, + 188, 184, 181, 178, 178, 177, 176, 176, 178, 179, 181, 176, 169, 161, 169, 174, + 179, 181, 180, 179, 180, 180, 186, 185, 186, 188, 190, 190, 187, 184, 188, 185, + 182, 180, 180, 180, 179, 178, 167, 171, 172, 166, 159, 159, 164, 170, 160, 176, + 184, 185, 184, 179, 172, 170, 190, 195, 196, 187, 178, 174, 174, 171, 160, 155, + 145, 127, 111, 155, 163, 169, 150, 145, 151, 166, 173, 162, 151, 146, 125, 109, + 125, 112, 135, 126, 130, 130, 128, 124, 128, 128, 124, 128, 126, 112, 120, 115, + 107, 100, 96, 95, 101, 104, 95, 100, 102, 126, 126, 125, 124, 122, 119, 121, + 122, 125, 122, 119, 117, 116, 114, 115, 116, 115, 122, 120, 118, 123, 119, 116, + 121, 116, 118, 114, 106, 103, 106, 110, 111, 119, 121, 123, 123, 121, 122, 124, + 125, 119, 113, 115, 117, 127, 112, 123, 101, 32, 38, 41, 41, 44, 65, 98, + 123, 136, 145, 155, 161, 166, 169, 164, 156, 162, 161, 160, 158, 158, 160, 165, + 168, 163, 163, 163, 164, 164, 163, 160, 159, 157, 153, 146, 143, 145, 152, 157, + 161, 158, 157, 160, 165, 167, 169, 173, 178, 179, 178, 180, 174, 176, 177, 179, + 173, 182, 182, 184, 180, 178, 175, 178, 179, 180, 174, 168, 165, 166, 169, 170, + 170, 184, 182, 180, 180, 182, 181, 181, 180, 187, 188, 190, 192, 193, 191, 186, + 182, 187, 185, 182, 180, 180, 180, 178, 176, 169, 169, 167, 161, 156, 156, 161, + 168, 163, 193, 192, 182, 189, 179, 168, 186, 192, 193, 190, 182, 176, 174, 173, + 168, 157, 152, 147, 137, 125, 164, 158, 155, 142, 145, 153, 163, 171, 166, 154, + 143, 149, 99, 125, 104, 134, 127, 127, 127, 134, 125, 125, 122, 117, 120, 117, + 103, 95, 104, 113, 113, 109, 101, 95, 93, 95, 98, 101, 115, 116, 122, 122, + 123, 124, 125, 126, 127, 125, 122, 117, 117, 118, 121, 121, 117, 122, 120, 117, + 123, 120, 116, 122, 116, 115, 115, 114, 114, 116, 121, 124, 130, 131, 131, 131, + 128, 128, 128, 129, 121, 120, 120, 118, 129, 118, 125, 92, 27, 39, 49, 49, + 42, 41, 50, 60, 136, 143, 145, 142, 145, 159, 170, 174, 166, 167, 167, 164, + 159, 157, 160, 163, 165, 166, 169, 173, 174, 170, 160, 152, 162, 161, 158, 157, + 157, 156, 154, 154, 158, 155, 156, 159, 161, 162, 167, 172, 183, 186, 187, 184, + 184, 187, 185, 181, 177, 182, 185, 184, 178, 173, 172, 172, 172, 167, 161, 159, + 162, 168, 177, 182, 182, 179, 178, 176, 178, 181, 184, 184, 186, 186, 187, 190, + 191, 190, 186, 183, 186, 183, 181, 179, 179, 178, 176, 174, 178, 165, 154, 154, + 160, 162, 157, 155, 178, 196, 193, 181, 180, 176, 174, 187, 179, 181, 182, 179, + 179, 178, 172, 163, 151, 150, 152, 147, 132, 160, 146, 138, 164, 168, 169, 167, + 172, 175, 169, 157, 157, 110, 111, 112, 131, 123, 128, 123, 134, 128, 126, 120, + 112, 114, 112, 100, 108, 105, 99, 90, 86, 90, 95, 97, 95, 96, 96, 103, + 107, 115, 119, 121, 121, 121, 120, 120, 118, 116, 114, 114, 117, 120, 121, 119, + 123, 119, 116, 123, 120, 116, 121, 118, 118, 119, 120, 118, 113, 115, 117, 121, + 122, 122, 123, 121, 122, 121, 121, 119, 126, 123, 110, 123, 121, 117, 64, 32, + 38, 41, 43, 41, 40, 41, 44, 50, 85, 121, 144, 155, 160, 155, 147, 169, + 173, 175, 174, 169, 166, 166, 167, 168, 167, 167, 168, 169, 167, 160, 154, 165, + 166, 165, 167, 166, 163, 158, 155, 151, 149, 149, 154, 160, 163, 169, 173, 169, + 171, 174, 173, 174, 176, 175, 171, 184, 185, 183, 178, 171, 166, 165, 165, 155, + 160, 167, 172, 176, 177, 177, 175, 178, 179, 180, 177, 176, 177, 183, 189, 186, + 185, 184, 186, 188, 190, 189, 188, 183, 181, 179, 178, 177, 175, 172, 170, 168, + 157, 152, 159, 168, 170, 168, 169, 200, 191, 192, 186, 169, 176, 188, 180, 180, + 181, 181, 180, 182, 183, 178, 169, 162, 156, 150, 136, 114, 147, 148, 156, 166, + 171, 169, 162, 164, 170, 167, 156, 153, 139, 96, 132, 131, 121, 133, 123, 125, + 123, 127, 125, 118, 121, 124, 117, 121, 115, 104, 96, 94, 97, 91, 84, 87, + 84, 82, 102, 106, 112, 115, 115, 112, 111, 111, 111, 109, 108, 108, 109, 111, + 113, 115, 113, 117, 111, 107, 115, 114, 110, 114, 110, 111, 114, 115, 114, 109, + 108, 112, 115, 116, 116, 119, 120, 122, 123, 122, 114, 124, 120, 102, 115, 116, + 107, 44, 36, 38, 37, 40, 43, 44, 42, 41, 34, 47, 55, 61, 82, 120, + 150, 162, 160, 166, 171, 174, 174, 173, 172, 172, 171, 166, 161, 158, 159, 162, + 165, 166, 167, 165, 163, 163, 165, 166, 167, 165, 151, 145, 143, 146, 151, 151, + 154, 156, 165, 168, 172, 170, 172, 174, 175, 170, 171, 166, 161, 156, 158, 162, + 169, 172, 164, 167, 172, 176, 177, 177, 178, 178, 180, 181, 183, 181, 177, 177, + 180, 185, 186, 185, 184, 185, 188, 190, 191, 190, 180, 178, 176, 175, 174, 172, + 169, 166, 154, 155, 161, 166, 163, 160, 168, 183, 210, 189, 192, 190, 170, 183, + 197, 177, 190, 188, 183, 177, 177, 179, 179, 173, 163, 157, 151, 136, 111, 144, + 154, 170, 153, 160, 163, 162, 164, 166, 161, 150, 151, 164, 92, 140, 137, 128, + 137, 129, 128, 128, 134, 132, 126, 129, 130, 118, 69, 73, 78, 82, 86, 81, + 62, 40, 80, 72, 67, 110, 109, 111, 111, 110, 109, 110, 110, 110, 108, 108, + 108, 109, 108, 109, 110, 108, 111, 104, 102, 111, 110, 105, 109, 105, 102, 105, + 111, 111, 107, 108, 115, 116, 116, 116, 119, 121, 124, 124, 123, 110, 116, 113, + 101, 113, 109, 103, 49, 36, 38, 42, 45, 45, 42, 36, 31, 40, 42, 37, + 37, 61, 103, 128, 131, 154, 155, 158, 162, 167, 169, 169, 168, 166, 164, 161, + 158, 157, 160, 165, 169, 165, 164, 162, 163, 167, 168, 168, 168, 159, 152, 147, + 147, 147, 144, 143, 144, 136, 137, 140, 136, 139, 140, 142, 137, 153, 148, 148, + 151, 162, 170, 178, 177, 178, 175, 173, 171, 170, 174, 182, 186, 181, 180, 181, + 180, 180, 180, 179, 178, 184, 183, 184, 185, 188, 188, 186, 184, 177, 176, 174, + 173, 172, 170, 166, 162, 159, 160, 166, 168, 160, 154, 166, 186, 199, 194, 192, + 188, 184, 190, 191, 183, 190, 190, 186, 179, 176, 176, 176, 171, 156, 154, 155, + 145, 121, 148, 152, 165, 163, 168, 173, 177, 180, 176, 171, 164, 153, 169, 100, + 122, 143, 138, 133, 135, 140, 134, 135, 136, 130, 129, 119, 98, 95, 92, 84, + 75, 78, 87, 88, 77, 75, 65, 58, 117, 115, 114, 112, 110, 112, 114, 118, + 114, 114, 114, 114, 112, 112, 112, 112, 114, 116, 109, 107, 115, 115, 111, 115, + 112, 108, 108, 112, 109, 105, 107, 115, 113, 112, 111, 112, 114, 115, 114, 112, + 110, 110, 110, 105, 116, 104, 105, 63, 38, 40, 41, 41, 39, 39, 38, 38, + 38, 34, 28, 36, 79, 133, 160, 160, 156, 154, 154, 157, 163, 167, 168, 166, + 161, 165, 169, 169, 166, 162, 162, 163, 164, 165, 168, 170, 171, 169, 164, 162, + 162, 156, 153, 155, 157, 155, 153, 154, 155, 158, 157, 154, 154, 156, 156, 153, + 156, 155, 159, 169, 180, 184, 179, 172, 169, 173, 178, 180, 180, 177, 179, 181, + 178, 176, 174, 178, 183, 184, 179, 173, 180, 180, 182, 185, 186, 184, 180, 176, + 176, 174, 173, 172, 171, 168, 164, 160, 172, 163, 161, 166, 169, 169, 177, 193, + 181, 199, 190, 183, 197, 193, 180, 188, 184, 190, 193, 190, 185, 181, 176, 169, + 163, 156, 153, 142, 118, 146, 149, 162, 164, 163, 166, 169, 171, 166, 164, 163, + 156, 161, 109, 100, 146, 145, 127, 137, 143, 131, 129, 131, 130, 129, 111, 82, + 93, 94, 88, 73, 68, 73, 69, 59, 66, 57, 53, 109, 110, 109, 105, 103, + 108, 110, 110, 109, 112, 116, 118, 116, 115, 115, 115, 117, 120, 112, 107, 112, + 113, 113, 121, 113, 114, 112, 106, 104, 106, 107, 105, 109, 110, 109, 110, 111, + 112, 111, 110, 106, 120, 120, 110, 110, 117, 103, 78, 37, 38, 42, 44, 38, + 30, 32, 42, 38, 37, 33, 43, 84, 136, 164, 166, 171, 172, 171, 167, 162, + 159, 158, 158, 160, 161, 162, 163, 163, 165, 167, 169, 169, 168, 168, 167, 167, + 167, 168, 169, 165, 160, 152, 149, 152, 155, 156, 155, 159, 159, 159, 160, 161, + 161, 162, 162, 164, 164, 166, 169, 172, 176, 179, 181, 175, 173, 173, 173, 174, + 176, 178, 179, 180, 180, 178, 178, 178, 179, 180, 181, 181, 181, 182, 184, 185, + 184, 181, 178, 177, 177, 173, 167, 161, 159, 163, 167, 163, 166, 167, 165, 170, + 181, 187, 190, 191, 179, 180, 187, 189, 193, 190, 175, 191, 185, 180, 179, 181, + 180, 176, 171, 174, 162, 153, 141, 121, 154, 154, 162, 167, 164, 166, 170, 172, + 167, 167, 168, 156, 148, 119, 95, 128, 127, 137, 135, 139, 133, 128, 123, 121, + 116, 106, 96, 106, 90, 77, 75, 80, 78, 62, 46, 78, 104, 65, 106, 106, + 106, 102, 101, 106, 109, 108, 106, 109, 113, 115, 115, 113, 116, 118, 126, 129, + 122, 116, 118, 112, 106, 110, 110, 110, 110, 106, 106, 108, 109, 107, 115, 116, + 114, 115, 115, 116, 115, 114, 111, 120, 119, 113, 116, 123, 116, 100, 45, 40, + 37, 37, 36, 41, 55, 71, 80, 83, 81, 82, 105, 143, 164, 165, 177, 180, + 181, 179, 176, 173, 173, 173, 169, 174, 177, 175, 171, 169, 173, 176, 180, 178, + 178, 178, 179, 181, 183, 184, 181, 177, 170, 162, 156, 155, 157, 161, 153, 155, + 159, 162, 164, 163, 162, 160, 164, 165, 168, 172, 176, 179, 182, 184, 182, 181, + 179, 178, 177, 178, 177, 178, 181, 181, 181, 180, 182, 181, 183, 183, 181, 181, + 182, 184, 186, 186, 184, 182, 174, 172, 170, 166, 163, 162, 164, 167, 167, 168, + 168, 170, 180, 191, 193, 191, 192, 196, 206, 204, 185, 181, 190, 192, 187, 185, + 184, 181, 177, 174, 175, 174, 166, 167, 167, 149, 115, 139, 148, 168, 167, 165, + 166, 171, 173, 169, 167, 167, 153, 143, 116, 94, 132, 135, 139, 132, 128, 127, + 125, 127, 128, 127, 121, 114, 95, 87, 76, 74, 76, 74, 68, 59, 39, 62, + 63, 103, 106, 106, 103, 102, 105, 108, 108, 104, 108, 112, 111, 109, 108, 113, + 118, 111, 118, 116, 113, 118, 113, 105, 108, 106, 109, 111, 107, 109, 112, 113, + 112, 120, 120, 118, 118, 117, 118, 117, 116, 113, 113, 110, 110, 114, 118, 116, + 111, 79, 72, 66, 66, 69, 81, 100, 115, 117, 126, 127, 120, 127, 147, 162, + 163, 177, 180, 183, 184, 183, 181, 180, 180, 177, 184, 189, 187, 178, 173, 176, + 182, 183, 182, 182, 182, 184, 187, 190, 192, 188, 186, 181, 170, 159, 153, 153, + 157, 156, 157, 159, 161, 163, 165, 165, 166, 162, 164, 166, 170, 173, 175, 177, + 177, 180, 179, 177, 175, 174, 174, 175, 176, 178, 178, 179, 179, 180, 179, 180, + 179, 180, 179, 178, 179, 180, 181, 179, 178, 172, 170, 167, 166, 167, 168, 169, + 168, 167, 168, 170, 177, 189, 200, 198, 192, 201, 196, 200, 199, 186, 185, 190, + 186, 180, 182, 183, 178, 171, 166, 170, 172, 167, 161, 156, 143, 118, 145, 146, + 155, 166, 164, 166, 171, 174, 169, 167, 166, 159, 143, 115, 89, 131, 141, 144, + 139, 143, 142, 141, 135, 129, 121, 112, 108, 108, 103, 96, 88, 81, 78, 76, + 74, 58, 60, 84, 108, 109, 111, 106, 104, 108, 110, 107, 106, 110, 111, 107, + 102, 101, 106, 111, 99, 107, 108, 109, 117, 113, 108, 112, 108, 111, 113, 113, + 114, 116, 117, 114, 120, 120, 117, 116, 115, 116, 116, 115, 115, 110, 105, 108, + 110, 109, 109, 110, 114, 112, 111, 114, 117, 123, 131, 137, 134, 144, 146, 140, + 142, 155, 165, 167, 175, 179, 183, 185, 185, 183, 182, 181, 181, 186, 190, 189, + 183, 179, 179, 181, 183, 182, 180, 180, 181, 184, 187, 190, 185, 185, 182, 176, + 167, 160, 156, 157, 163, 160, 157, 154, 155, 159, 164, 167, 162, 164, 165, 167, + 168, 169, 169, 168, 173, 172, 171, 171, 171, 172, 174, 175, 175, 176, 177, 178, + 178, 178, 177, 177, 181, 179, 177, 176, 176, 177, 176, 174, 175, 171, 169, 169, + 172, 174, 173, 170, 164, 170, 177, 184, 194, 202, 199, 193, 200, 188, 187, 189, + 186, 191, 193, 184, 183, 184, 184, 178, 172, 168, 171, 173, 167, 157, 152, 143, + 124, 154, 151, 157, 165, 162, 163, 170, 174, 169, 165, 163, 167, 148, 122, 85, + 124, 142, 147, 150, 136, 137, 140, 138, 134, 130, 124, 122, 123, 119, 115, 106, + 98, 94, 91, 88, 91, 70, 79, 116, 117, 119, 112, 110, 112, 113, 110, 111, + 113, 114, 108, 104, 104, 109, 114, 115, 120, 118, 115, 121, 116, 110, 115, 115, + 117, 119, 118, 118, 120, 120, 116, 123, 120, 117, 116, 114, 116, 116, 115, 119, + 113, 110, 114, 115, 111, 110, 114, 123, 126, 130, 133, 136, 137, 135, 133, 143, + 150, 152, 150, 152, 164, 173, 176, 180, 183, 187, 189, 188, 186, 185, 184, 184, + 184, 185, 186, 186, 185, 181, 178, 187, 186, 184, 182, 182, 184, 184, 186, 181, + 181, 181, 183, 183, 179, 171, 167, 164, 163, 160, 157, 156, 156, 158, 159, 163, + 163, 165, 166, 167, 167, 168, 167, 172, 171, 170, 170, 170, 172, 176, 177, 176, + 176, 177, 178, 178, 178, 178, 176, 178, 177, 175, 175, 177, 178, 178, 177, 175, + 172, 169, 170, 173, 175, 173, 171, 166, 177, 188, 193, 196, 200, 199, 198, 193, + 191, 197, 196, 183, 186, 196, 197, 192, 190, 186, 181, 178, 176, 176, 176, 160, + 165, 172, 157, 123, 147, 155, 175, 164, 160, 160, 167, 172, 168, 164, 161, 163, + 148, 132, 87, 119, 139, 140, 149, 135, 136, 139, 140, 138, 136, 135, 133, 126, + 123, 121, 120, 118, 117, 114, 108, 99, 92, 82, 118, 122, 122, 118, 116, 115, + 116, 114, 115, 115, 115, 114, 115, 115, 120, 123, 122, 127, 122, 119, 124, 120, + 115, 119, 120, 123, 124, 119, 119, 122, 122, 118, 125, 121, 118, 117, 116, 118, + 119, 119, 115, 113, 112, 115, 116, 115, 116, 119, 127, 134, 139, 139, 140, 143, + 143, 141, 149, 154, 155, 155, 157, 167, 172, 172, 181, 184, 187, 188, 187, 185, + 185, 185, 186, 183, 181, 184, 188, 188, 184, 179, 186, 185, 183, 182, 181, 180, + 179, 178, 177, 176, 178, 183, 188, 188, 182, 176, 173, 175, 176, 175, 172, 167, + 162, 158, 159, 159, 159, 160, 161, 163, 165, 166, 171, 168, 166, 165, 165, 165, + 169, 170, 169, 169, 168, 168, 168, 169, 172, 171, 168, 166, 167, 170, 174, 176, + 177, 176, 174, 172, 170, 170, 171, 173, 174, 174, 176, 189, 199, 200, 198, 200, + 200, 201, 201, 192, 192, 193, 187, 191, 195, 188, 192, 188, 183, 179, 176, 174, + 174, 173, 166, 166, 168, 154, 123, 148, 152, 167, 167, 160, 159, 164, 171, 168, + 164, 161, 153, 142, 139, 92, 120, 138, 129, 137, 142, 142, 141, 141, 139, 138, + 135, 134, 137, 134, 131, 133, 136, 133, 129, 121, 109, 125, 113, 116, 120, 122, + 119, 118, 120, 121, 117, 118, 117, 116, 117, 121, 125, 126, 126, 119, 125, 122, + 119, 126, 124, 119, 123, 122, 123, 123, 120, 121, 125, 125, 123, 125, 121, 118, + 117, 117, 120, 121, 122, 113, 115, 113, 111, 113, 117, 120, 121, 131, 141, 149, + 148, 147, 152, 157, 158, 154, 160, 164, 164, 161, 164, 166, 167, 178, 181, 183, + 184, 184, 183, 184, 186, 186, 184, 183, 183, 184, 184, 183, 181, 182, 184, 184, + 183, 180, 178, 176, 174, 177, 177, 178, 180, 182, 183, 182, 183, 190, 191, 189, + 187, 183, 179, 175, 173, 168, 166, 163, 161, 161, 162, 164, 165, 165, 164, 163, + 162, 163, 164, 166, 167, 167, 165, 163, 162, 163, 165, 169, 169, 166, 165, 166, + 169, 173, 174, 173, 172, 173, 173, 173, 172, 173, 176, 180, 184, 188, 196, 202, + 201, 199, 200, 199, 198, 205, 190, 185, 189, 189, 194, 192, 178, 188, 187, 185, + 178, 171, 167, 171, 174, 172, 163, 157, 147, 126, 155, 153, 159, 171, 163, 159, + 164, 171, 169, 167, 164, 156, 141, 139, 89, 120, 143, 129, 137, 129, 126, 126, + 131, 138, 144, 146, 146, 147, 144, 141, 140, 140, 138, 135, 130, 122, 138, 129, + 111, 116, 119, 117, 118, 121, 122, 121, 124, 120, 117, 119, 122, 126, 124, 121, + 122, 129, 127, 126, 129, 124, 117, 121, 122, 123, 122, 119, 121, 126, 128, 126, + 124, 121, 117, 117, 119, 121, 124, 124, 122, 124, 122, 115, 114, 122, 128, 126, + 128, 141, 153, 153, 152, 155, 159, 160, 161, 170, 177, 176, 171, 165, 166, 170, + 179, 181, 185, 185, 186, 186, 189, 191, 184, 185, 186, 182, 180, 178, 180, 182, + 182, 185, 186, 187, 184, 181, 178, 177, 182, 184, 184, 181, 177, 178, 183, 189, + 202, 196, 188, 179, 177, 177, 182, 184, 188, 183, 178, 171, 169, 167, 168, 168, + 162, 160, 163, 162, 164, 167, 171, 172, 172, 170, 167, 164, 165, 168, 171, 174, + 176, 176, 177, 178, 179, 178, 174, 171, 175, 176, 177, 176, 176, 180, 188, 194, + 195, 198, 199, 197, 197, 200, 196, 191, 191, 193, 202, 200, 185, 181, 194, 196, + 190, 194, 194, 185, 175, 170, 175, 183, 163, 168, 172, 157, 124, 150, 159, 180, + 174, 165, 160, 164, 170, 170, 167, 165, 167, 145, 135, 81, 114, 148, 136, 146, + 142, 135, 129, 127, 130, 131, 130, 126, 135, 134, 133, 133, 134, 136, 138, 139, + 142, 142, 134, 122, 119, 119, 117, 114, 115, 119, 122, 126, 126, 124, 123, 124, + 126, 128, 128, 125, 123, 123, 122, 122, 123, 124, 124, 132, 124, 119, 119, 123, + 125, 123, 120, 122, 124, 125, 125, 128, 130, 126, 118, 122, 128, 131, 112, 114, + 125, 122, 136, 143, 147, 154, 158, 159, 159, 163, 165, 174, 174, 176, 177, 177, + 175, 170, 166, 171, 175, 181, 183, 186, 185, 188, 188, 183, 183, 189, 192, 198, + 195, 191, 183, 186, 183, 180, 177, 176, 176, 178, 180, 174, 179, 185, 186, 183, + 180, 178, 178, 181, 188, 192, 181, 173, 172, 181, 185, 189, 190, 195, 192, 189, + 181, 178, 173, 176, 174, 173, 169, 167, 165, 163, 163, 161, 162, 164, 168, 174, + 180, 185, 188, 193, 188, 185, 185, 182, 174, 168, 167, 174, 178, 183, 185, 186, + 187, 189, 192, 194, 198, 202, 200, 198, 198, 196, 192, 187, 194, 194, 189, 191, + 199, 199, 190, 198, 196, 189, 181, 181, 184, 185, 182, 171, 169, 167, 154, 137, + 143, 155, 154, 170, 165, 163, 162, 165, 166, 166, 166, 157, 146, 140, 94, 107, + 128, 142, 135, 138, 134, 133, 127, 127, 125, 127, 127, 129, 130, 133, 136, 139, + 140, 141, 141, 131, 133, 135, 132, 128, 128, 125, 122, 120, 122, 124, 122, 121, + 121, 121, 125, 127, 130, 130, 124, 122, 121, 121, 122, 123, 124, 124, 120, 118, + 116, 117, 119, 120, 116, 113, 124, 123, 119, 113, 114, 121, 125, 124, 126, 120, + 122, 120, 127, 129, 118, 133, 145, 150, 157, 160, 161, 162, 164, 167, 165, 166, + 169, 173, 173, 170, 165, 161, 166, 171, 176, 180, 184, 185, 184, 183, 183, 184, + 186, 190, 194, 194, 191, 187, 190, 188, 185, 183, 181, 181, 182, 182, 181, 180, + 178, 174, 172, 174, 179, 184, 181, 186, 187, 182, 179, 182, 186, 187, 191, 190, + 188, 184, 180, 179, 181, 183, 182, 181, 179, 178, 178, 180, 183, 185, 183, 182, + 182, 182, 182, 184, 186, 188, 195, 190, 189, 191, 191, 187, 185, 185, 186, 188, + 190, 190, 189, 190, 194, 197, 196, 201, 202, 198, 196, 197, 197, 195, 197, 202, + 200, 193, 193, 199, 198, 189, 195, 195, 190, 183, 181, 183, 181, 176, 169, 165, + 161, 146, 130, 137, 152, 153, 167, 163, 162, 162, 164, 165, 164, 163, 158, 150, + 142, 104, 109, 134, 143, 139, 137, 136, 136, 134, 132, 130, 127, 126, 129, 129, + 128, 128, 129, 131, 133, 134, 132, 133, 134, 128, 127, 130, 126, 124, 121, 121, + 121, 124, 124, 124, 124, 125, 126, 128, 130, 122, 121, 121, 122, 123, 124, 126, + 127, 127, 127, 128, 128, 126, 123, 118, 115, 116, 116, 113, 105, 104, 111, 118, + 120, 114, 109, 118, 119, 116, 105, 102, 135, 148, 153, 160, 163, 163, 164, 165, + 167, 165, 167, 171, 176, 178, 176, 170, 166, 158, 161, 166, 175, 184, 189, 189, + 187, 185, 185, 185, 187, 191, 193, 193, 192, 188, 187, 186, 184, 182, 181, 179, + 179, 183, 180, 176, 171, 169, 171, 177, 182, 178, 181, 182, 182, 184, 189, 189, + 185, 190, 189, 186, 182, 180, 180, 184, 187, 189, 187, 186, 186, 188, 193, 197, + 201, 196, 194, 192, 190, 187, 187, 187, 187, 193, 188, 186, 190, 192, 191, 192, + 194, 197, 197, 196, 194, 192, 193, 196, 199, 199, 202, 201, 196, 193, 196, 197, + 196, 200, 203, 200, 192, 193, 198, 197, 191, 192, 193, 190, 185, 183, 183, 179, + 173, 173, 166, 160, 145, 129, 137, 156, 160, 163, 160, 160, 162, 164, 165, 164, + 163, 156, 154, 142, 114, 106, 139, 140, 140, 142, 143, 144, 144, 142, 138, 134, + 132, 136, 134, 131, 129, 128, 130, 132, 133, 132, 131, 131, 120, 122, 127, 127, + 126, 123, 122, 123, 128, 126, 126, 124, 123, 122, 122, 122, 121, 122, 122, 123, + 125, 127, 129, 130, 125, 127, 127, 125, 119, 114, 110, 107, 113, 117, 122, 118, + 115, 117, 118, 118, 119, 114, 117, 111, 109, 106, 104, 133, 149, 154, 160, 164, + 164, 164, 164, 166, 170, 171, 173, 178, 182, 182, 178, 176, 165, 165, 165, 172, + 182, 190, 191, 189, 187, 186, 185, 186, 188, 192, 195, 196, 187, 187, 187, 186, + 184, 182, 179, 177, 180, 180, 180, 178, 176, 173, 172, 171, 171, 176, 179, 179, + 182, 186, 186, 182, 185, 187, 189, 189, 187, 184, 184, 184, 190, 190, 189, 189, + 190, 193, 196, 198, 193, 192, 190, 189, 187, 188, 189, 191, 194, 188, 185, 187, + 188, 188, 190, 193, 198, 198, 197, 196, 195, 195, 195, 196, 197, 200, 200, 194, + 192, 194, 195, 193, 193, 194, 191, 187, 189, 196, 197, 194, 191, 191, 189, 184, + 183, 185, 182, 176, 174, 166, 160, 148, 133, 139, 157, 163, 160, 158, 159, 162, + 165, 166, 164, 162, 159, 161, 144, 121, 103, 142, 139, 144, 143, 144, 145, 145, + 144, 141, 138, 135, 139, 137, 135, 133, 132, 132, 134, 135, 132, 128, 126, 124, + 128, 134, 134, 133, 131, 130, 128, 125, 125, 123, 121, 120, 119, 119, 118, 124, + 125, 125, 127, 129, 131, 133, 134, 131, 132, 132, 129, 125, 121, 120, 119, 124, + 130, 137, 135, 132, 131, 130, 127, 121, 120, 119, 110, 118, 129, 119, 127, 147, + 153, 160, 164, 163, 163, 164, 166, 170, 170, 170, 173, 177, 179, 179, 178, 182, + 177, 171, 171, 177, 182, 183, 182, 185, 184, 184, 183, 185, 188, 192, 195, 191, + 191, 192, 191, 190, 187, 184, 182, 180, 180, 181, 180, 178, 173, 167, 163, 161, + 169, 176, 176, 177, 181, 185, 186, 188, 190, 191, 191, 188, 186, 185, 185, 189, + 190, 190, 192, 193, 193, 192, 192, 192, 192, 189, 189, 190, 192, 194, 195, 198, + 191, 187, 189, 190, 190, 192, 195, 194, 195, 197, 199, 199, 198, 196, 194, 191, + 196, 197, 193, 191, 192, 191, 189, 189, 188, 186, 184, 187, 193, 195, 193, 188, + 188, 184, 179, 180, 183, 183, 179, 169, 161, 159, 150, 135, 137, 153, 158, 159, + 158, 159, 162, 165, 166, 165, 163, 165, 168, 149, 123, 102, 140, 140, 147, 140, + 140, 140, 140, 139, 138, 137, 137, 135, 136, 136, 136, 136, 135, 134, 134, 133, + 131, 128, 132, 135, 138, 138, 134, 132, 131, 130, 126, 127, 126, 126, 127, 126, + 126, 127, 125, 128, 128, 129, 131, 133, 135, 137, 139, 139, 139, 139, 140, 140, + 140, 138, 132, 136, 136, 133, 132, 134, 135, 133, 86, 108, 126, 110, 107, 114, + 110, 129, 144, 151, 159, 163, 163, 162, 163, 165, 171, 171, 171, 173, 176, 178, + 177, 176, 179, 174, 169, 168, 173, 179, 184, 185, 180, 181, 182, 182, 181, 183, + 186, 189, 189, 189, 190, 190, 189, 187, 184, 183, 185, 181, 177, 174, 173, 171, + 169, 168, 156, 164, 170, 170, 171, 178, 186, 190, 193, 192, 189, 186, 183, 184, + 188, 191, 187, 189, 191, 194, 195, 195, 194, 192, 191, 190, 187, 187, 187, 189, + 191, 192, 194, 188, 185, 187, 190, 190, 193, 196, 194, 195, 198, 201, 203, 201, + 197, 193, 187, 192, 194, 191, 190, 191, 190, 188, 192, 190, 187, 186, 187, 189, + 189, 188, 185, 184, 181, 176, 176, 180, 181, 177, 170, 162, 161, 156, 140, 139, + 152, 157, 161, 159, 159, 162, 165, 166, 166, 164, 161, 163, 151, 117, 99, 128, + 132, 138, 139, 139, 139, 140, 141, 141, 141, 142, 138, 139, 140, 141, 141, 140, + 139, 138, 136, 135, 133, 132, 134, 136, 136, 134, 130, 130, 130, 130, 131, 131, + 132, 130, 129, 130, 130, 126, 126, 126, 127, 129, 130, 132, 133, 126, 125, 126, + 129, 133, 133, 129, 125, 130, 133, 130, 128, 129, 133, 134, 130, 82, 98, 116, + 104, 96, 93, 97, 129, 142, 149, 158, 163, 164, 164, 164, 166, 172, 172, 175, + 179, 181, 180, 175, 171, 171, 170, 170, 171, 174, 179, 184, 187, 179, 182, 185, + 185, 183, 182, 183, 185, 186, 186, 186, 186, 185, 185, 184, 183, 188, 183, 177, + 175, 176, 178, 178, 177, 163, 165, 164, 162, 166, 175, 181, 182, 189, 189, 188, + 187, 186, 187, 190, 193, 185, 187, 188, 190, 192, 191, 191, 191, 189, 188, 187, + 186, 184, 185, 186, 187, 188, 183, 181, 184, 187, 187, 188, 192, 196, 196, 196, + 199, 201, 200, 196, 192, 188, 192, 192, 188, 187, 190, 192, 192, 193, 190, 188, + 187, 187, 185, 183, 182, 186, 187, 184, 180, 180, 181, 179, 173, 174, 164, 163, + 158, 142, 139, 152, 158, 165, 161, 160, 161, 164, 166, 166, 166, 156, 157, 156, + 113, 103, 118, 126, 126, 134, 136, 140, 143, 145, 145, 144, 143, 145, 145, 144, + 144, 143, 143, 143, 141, 136, 136, 136, 128, 130, 133, 136, 136, 134, 135, 136, + 129, 128, 128, 127, 124, 123, 122, 121, 123, 122, 123, 123, 125, 126, 128, 128, + 128, 125, 127, 130, 134, 131, 124, 116, 128, 131, 132, 131, 135, 138, 135, 128, + 132, 104, 91, 92, 112, 116, 104, 122, 142, 149, 158, 164, 165, 165, 166, 167, + 168, 171, 175, 180, 182, 178, 169, 164, 179, 180, 180, 178, 176, 174, 175, 176, + 181, 185, 189, 190, 187, 185, 185, 185, 188, 188, 188, 188, 188, 188, 188, 188, + 186, 184, 182, 183, 186, 187, 185, 183, 172, 167, 158, 153, 158, 168, 170, 167, + 177, 182, 188, 192, 192, 190, 188, 187, 187, 184, 183, 183, 183, 184, 184, 185, + 192, 190, 189, 188, 186, 187, 189, 190, 191, 186, 183, 186, 187, 186, 186, 189, + 198, 196, 194, 194, 196, 196, 193, 190, 190, 192, 191, 186, 185, 191, 195, 196, + 190, 187, 185, 186, 186, 183, 180, 179, 190, 192, 191, 187, 186, 185, 179, 171, + 172, 160, 158, 153, 136, 133, 147, 154, 167, 163, 161, 161, 164, 166, 167, 167, + 159, 160, 168, 119, 115, 120, 130, 125, 121, 126, 132, 137, 140, 139, 136, 134, + 145, 143, 140, 137, 135, 136, 138, 139, 134, 135, 137, 131, 133, 134, 136, 135, + 133, 131, 128, 138, 132, 116, 129, 117, 122, 115, 123, 116, 104, 97, 97, 104, + 107, 106, 101, 113, 120, 124, 116, 111, 112, 116, 118, 126, 127, 128, 129, 132, + 132, 132, 133, 140, 140, 132, 120, 107, 91, 94, 116, 140, 152, 156, 161, 167, + 163, 159, 166, 167, 172, 178, 181, 178, 175, 171, 170, 177, 178, 178, 177, 175, + 175, 177, 179, 178, 183, 189, 194, 195, 191, 186, 182, 181, 182, 184, 188, 190, + 188, 183, 179, 179, 186, 191, 188, 179, 173, 173, 176, 181, 177, 163, 159, 164, + 161, 158, 167, 172, 178, 187, 193, 190, 182, 178, 178, 180, 182, 188, 194, 188, + 179, 178, 182, 192, 187, 181, 181, 186, 190, 191, 191, 192, 187, 183, 183, 187, + 192, 194, 194, 198, 199, 198, 196, 193, 191, 192, 194, 192, 192, 191, 190, 190, + 189, 188, 188, 190, 189, 189, 190, 189, 186, 180, 176, 185, 181, 179, 182, 183, + 179, 176, 177, 171, 168, 163, 155, 142, 135, 140, 149, 161, 158, 158, 160, 163, + 165, 166, 166, 153, 154, 163, 98, 132, 121, 121, 133, 127, 128, 129, 133, 135, + 135, 133, 130, 133, 130, 127, 126, 127, 131, 135, 139, 131, 133, 135, 129, 128, + 128, 129, 130, 128, 126, 123, 122, 127, 116, 119, 105, 113, 103, 100, 113, 108, + 100, 91, 84, 83, 88, 93, 85, 90, 92, 91, 94, 100, 101, 98, 101, 109, + 121, 136, 140, 134, 133, 137, 119, 135, 138, 134, 135, 131, 125, 130, 140, 151, + 155, 159, 164, 161, 158, 165, 167, 171, 177, 179, 177, 174, 172, 172, 176, 178, + 179, 179, 178, 178, 179, 181, 175, 178, 183, 187, 190, 190, 189, 188, 187, 183, + 178, 177, 179, 182, 185, 186, 183, 177, 174, 178, 186, 187, 180, 172, 172, 180, + 180, 172, 163, 149, 144, 152, 163, 176, 179, 172, 179, 196, 194, 178, 182, 185, + 190, 192, 183, 179, 186, 198, 184, 184, 185, 184, 185, 187, 190, 192, 199, 194, + 187, 185, 186, 189, 190, 191, 192, 193, 194, 193, 192, 192, 194, 195, 192, 192, + 191, 190, 190, 189, 188, 188, 191, 190, 189, 187, 185, 180, 173, 168, 177, 173, + 173, 177, 178, 175, 172, 173, 175, 170, 163, 152, 141, 136, 144, 155, 160, 159, + 161, 164, 166, 166, 164, 162, 156, 158, 153, 110, 136, 124, 122, 130, 130, 129, + 128, 130, 132, 132, 131, 129, 132, 133, 134, 134, 132, 130, 128, 127, 131, 132, + 134, 124, 122, 123, 124, 125, 125, 126, 126, 119, 141, 137, 127, 96, 105, 101, + 103, 82, 77, 77, 77, 79, 83, 90, 95, 100, 99, 95, 93, 95, 96, 90, + 85, 104, 102, 109, 121, 123, 119, 124, 136, 138, 151, 145, 129, 131, 131, 124, + 120, 140, 153, 157, 159, 165, 163, 158, 165, 167, 171, 174, 177, 177, 176, 176, + 176, 176, 178, 181, 182, 181, 180, 180, 181, 177, 178, 179, 181, 183, 186, 188, + 190, 189, 184, 177, 173, 174, 178, 181, 183, 175, 179, 183, 183, 181, 180, 182, + 185, 183, 180, 175, 173, 173, 166, 152, 140, 146, 149, 160, 175, 180, 179, 188, + 202, 190, 182, 177, 179, 182, 181, 177, 177, 179, 183, 188, 189, 187, 188, 192, + 196, 201, 196, 189, 185, 185, 187, 190, 191, 191, 193, 194, 194, 193, 192, 194, + 196, 192, 192, 191, 190, 190, 189, 188, 188, 194, 193, 191, 189, 186, 181, 175, + 171, 176, 174, 175, 180, 182, 179, 176, 176, 182, 175, 164, 151, 138, 135, 145, + 158, 159, 160, 165, 168, 169, 166, 162, 160, 159, 162, 136, 127, 141, 129, 127, + 129, 130, 129, 126, 126, 129, 131, 132, 133, 130, 132, 134, 136, 137, 137, 136, + 134, 132, 134, 136, 114, 112, 113, 114, 117, 121, 126, 127, 122, 129, 116, 115, + 92, 98, 92, 93, 85, 75, 72, 80, 92, 95, 84, 72, 80, 81, 83, 89, + 96, 101, 100, 98, 114, 106, 108, 119, 125, 118, 121, 132, 132, 141, 133, 124, + 123, 119, 113, 116, 140, 155, 158, 158, 164, 164, 160, 167, 167, 170, 172, 174, + 175, 176, 178, 179, 177, 180, 183, 184, 182, 180, 179, 179, 184, 183, 182, 181, + 181, 182, 182, 183, 185, 184, 182, 181, 180, 178, 174, 172, 172, 180, 186, 182, + 172, 168, 174, 184, 185, 174, 167, 165, 168, 173, 162, 141, 133, 131, 142, 162, + 171, 169, 175, 190, 194, 189, 187, 189, 191, 189, 183, 179, 181, 184, 187, 188, + 190, 193, 197, 201, 197, 193, 187, 184, 184, 188, 193, 196, 196, 198, 199, 198, + 195, 193, 194, 194, 191, 191, 191, 190, 190, 189, 189, 189, 189, 188, 188, 188, + 188, 186, 182, 179, 181, 178, 179, 184, 186, 182, 179, 179, 185, 178, 166, 152, + 138, 133, 142, 155, 161, 163, 167, 169, 168, 165, 162, 160, 160, 163, 121, 141, + 143, 136, 136, 135, 132, 128, 125, 124, 127, 131, 134, 136, 133, 132, 130, 129, + 130, 134, 137, 140, 133, 135, 138, 99, 96, 97, 98, 100, 105, 109, 111, 125, + 106, 87, 111, 112, 114, 91, 82, 93, 84, 82, 90, 100, 102, 91, 80, 78, + 80, 85, 91, 96, 99, 101, 104, 104, 101, 113, 136, 145, 135, 125, 122, 127, + 132, 135, 139, 131, 104, 87, 96, 134, 152, 157, 155, 159, 162, 162, 169, 167, + 170, 173, 175, 175, 176, 179, 181, 179, 181, 184, 184, 181, 178, 176, 176, 187, + 187, 186, 185, 184, 181, 179, 178, 181, 181, 182, 184, 184, 181, 176, 172, 180, + 174, 169, 169, 174, 174, 169, 165, 169, 175, 182, 170, 147, 145, 144, 127, 130, + 147, 146, 132, 150, 187, 193, 169, 176, 185, 193, 191, 183, 182, 188, 195, 184, + 182, 181, 184, 191, 197, 200, 201, 194, 191, 187, 184, 184, 187, 192, 196, 196, + 198, 199, 199, 196, 195, 194, 195, 191, 191, 190, 190, 190, 190, 189, 189, 183, + 182, 182, 183, 184, 183, 181, 178, 180, 177, 177, 181, 181, 177, 173, 173, 179, + 173, 164, 152, 139, 133, 141, 152, 163, 164, 167, 168, 165, 163, 162, 163, 159, + 159, 118, 149, 144, 145, 146, 146, 139, 135, 130, 127, 128, 130, 132, 132, 140, + 138, 134, 131, 128, 128, 129, 130, 134, 136, 137, 86, 84, 83, 84, 84, 88, + 93, 94, 103, 97, 99, 133, 124, 112, 93, 99, 85, 86, 89, 89, 88, 91, + 98, 105, 101, 99, 99, 101, 100, 96, 97, 101, 98, 97, 105, 119, 129, 124, + 115, 110, 139, 136, 134, 137, 125, 94, 80, 96, 127, 147, 153, 150, 154, 159, + 161, 168, 168, 171, 175, 177, 176, 177, 179, 181, 180, 182, 184, 183, 180, 178, + 177, 177, 183, 184, 186, 187, 186, 184, 182, 180, 181, 179, 178, 178, 181, 183, + 184, 184, 177, 178, 178, 179, 178, 178, 177, 178, 180, 181, 188, 176, 149, 139, + 118, 75, 86, 106, 111, 98, 99, 128, 160, 174, 185, 182, 176, 175, 181, 187, + 185, 178, 183, 180, 178, 183, 192, 198, 200, 199, 198, 196, 193, 188, 185, 185, + 188, 191, 189, 192, 195, 196, 196, 195, 196, 197, 190, 190, 190, 190, 190, 190, + 190, 190, 188, 186, 184, 184, 184, 182, 179, 177, 182, 177, 176, 178, 179, 175, + 172, 173, 171, 167, 161, 152, 140, 135, 142, 152, 162, 164, 167, 167, 164, 161, + 162, 164, 155, 151, 130, 153, 145, 153, 152, 156, 150, 145, 139, 135, 132, 130, + 128, 126, 136, 139, 142, 144, 144, 141, 138, 135, 133, 134, 135, 84, 84, 84, + 86, 90, 94, 98, 99, 87, 101, 111, 131, 107, 97, 87, 100, 98, 98, 98, + 91, 81, 80, 88, 97, 84, 79, 79, 87, 96, 99, 103, 107, 98, 101, 105, + 104, 106, 113, 117, 118, 130, 128, 122, 124, 126, 117, 115, 133, 125, 146, 153, + 149, 154, 161, 164, 171, 172, 175, 177, 179, 178, 178, 179, 180, 180, 182, 183, + 182, 181, 180, 181, 183, 182, 183, 184, 185, 186, 185, 184, 183, 183, 180, 177, + 176, 179, 182, 184, 185, 175, 186, 196, 194, 184, 179, 185, 195, 195, 182, 183, + 180, 164, 157, 116, 43, 52, 46, 54, 64, 53, 46, 82, 133, 178, 179, 180, + 184, 191, 195, 186, 173, 179, 182, 187, 193, 197, 200, 200, 200, 202, 202, 199, + 194, 188, 185, 186, 188, 188, 191, 195, 197, 197, 196, 196, 197, 190, 190, 190, + 190, 190, 190, 190, 190, 193, 191, 188, 186, 185, 183, 179, 177, 184, 179, 176, + 179, 180, 178, 177, 179, 173, 169, 162, 152, 139, 133, 140, 151, 157, 161, 167, + 168, 165, 161, 161, 162, 150, 143, 150, 157, 148, 159, 153, 158, 153, 151, 147, + 143, 140, 136, 131, 127, 129, 133, 140, 146, 150, 151, 150, 149, 136, 137, 137, + 96, 96, 99, 103, 109, 114, 119, 121, 129, 126, 111, 124, 118, 126, 104, 95, + 91, 90, 92, 96, 104, 109, 112, 114, 104, 91, 85, 92, 103, 106, 105, 103, + 94, 113, 128, 128, 129, 138, 143, 142, 134, 141, 138, 136, 144, 139, 129, 127, + 126, 148, 156, 151, 157, 165, 170, 175, 172, 176, 180, 181, 181, 179, 179, 180, + 179, 181, 182, 182, 182, 183, 186, 189, 184, 184, 183, 183, 183, 183, 183, 183, + 186, 182, 183, 180, 182, 180, 180, 176, 187, 184, 187, 188, 194, 191, 188, 183, + 182, 175, 185, 181, 159, 155, 121, 50, 89, 64, 49, 54, 60, 57, 58, 66, + 105, 147, 187, 190, 171, 162, 171, 181, 177, 186, 197, 203, 204, 201, 201, 202, + 203, 204, 202, 198, 191, 187, 187, 189, 194, 197, 200, 200, 199, 196, 195, 195, + 192, 190, 190, 190, 190, 190, 190, 190, 189, 187, 184, 182, 181, 180, 177, 176, + 182, 177, 174, 176, 178, 177, 178, 182, 182, 175, 165, 152, 137, 129, 136, 146, + 149, 158, 167, 171, 167, 162, 161, 161, 147, 140, 166, 160, 150, 161, 148, 153, + 146, 145, 144, 143, 141, 136, 132, 128, 125, 127, 128, 131, 135, 138, 144, 144, + 141, 141, 140, 127, 126, 126, 125, 126, 126, 126, 126, 131, 128, 125, 120, 120, + 121, 126, 127, 121, 120, 112, 109, 119, 123, 125, 135, 127, 121, 114, 109, 108, + 108, 111, 115, 137, 136, 133, 131, 127, 129, 138, 148, 143, 135, 132, 141, 142, + 132, 128, 128, 129, 150, 153, 144, 151, 162, 166, 167, 171, 176, 182, 183, 179, + 174, 175, 177, 177, 181, 185, 187, 186, 185, 185, 186, 184, 185, 186, 186, 187, + 187, 186, 186, 183, 182, 182, 179, 180, 180, 182, 182, 180, 185, 192, 192, 189, + 183, 179, 177, 186, 166, 167, 160, 157, 144, 99, 69, 116, 101, 76, 55, 43, + 40, 42, 48, 48, 83, 88, 143, 158, 180, 189, 183, 190, 195, 199, 196, 196, + 197, 197, 195, 207, 207, 206, 201, 192, 186, 191, 200, 191, 192, 193, 195, 196, + 197, 198, 198, 192, 193, 194, 194, 192, 192, 193, 195, 197, 189, 182, 184, 186, + 183, 180, 179, 181, 184, 178, 179, 184, 178, 172, 179, 177, 164, 171, 150, 145, + 129, 150, 145, 146, 152, 161, 159, 156, 169, 173, 158, 138, 156, 163, 148, 140, + 150, 153, 145, 149, 151, 149, 141, 129, 122, 122, 125, 125, 124, 125, 131, 135, + 135, 144, 152, 137, 160, 140, 129, 130, 129, 129, 128, 127, 126, 125, 120, 121, + 124, 125, 126, 127, 128, 126, 116, 120, 120, 119, 128, 129, 131, 140, 127, 133, + 139, 141, 139, 133, 129, 132, 133, 132, 136, 140, 144, 137, 133, 132, 132, 130, + 133, 141, 141, 135, 139, 147, 130, 149, 153, 145, 152, 162, 165, 167, 173, 177, + 183, 183, 179, 174, 175, 176, 176, 179, 183, 185, 185, 184, 185, 186, 187, 188, + 188, 188, 187, 186, 185, 184, 186, 185, 183, 182, 181, 182, 183, 183, 180, 183, + 187, 187, 184, 182, 181, 182, 188, 166, 166, 154, 153, 142, 122, 65, 97, 100, + 105, 107, 100, 84, 62, 51, 44, 48, 56, 142, 184, 195, 196, 197, 194, 200, + 202, 200, 198, 201, 201, 201, 201, 204, 206, 205, 198, 190, 191, 198, 191, 191, + 192, 192, 192, 192, 192, 192, 190, 192, 193, 192, 191, 190, 191, 193, 196, 189, + 184, 186, 188, 185, 181, 180, 174, 180, 177, 176, 178, 170, 168, 178, 176, 163, + 167, 144, 135, 123, 144, 146, 170, 169, 171, 165, 156, 159, 160, 148, 161, 154, + 157, 165, 158, 142, 141, 153, 148, 118, 97, 96, 102, 102, 105, 111, 125, 119, + 116, 120, 126, 131, 141, 147, 138, 156, 147, 129, 130, 131, 131, 128, 127, 125, + 124, 128, 128, 126, 124, 123, 122, 121, 117, 115, 108, 100, 105, 127, 134, 127, + 125, 123, 128, 131, 127, 119, 116, 120, 125, 141, 131, 125, 129, 137, 137, 134, + 132, 138, 140, 144, 142, 127, 110, 109, 118, 129, 148, 151, 144, 151, 160, 163, + 165, 172, 177, 181, 180, 178, 175, 176, 176, 175, 178, 182, 184, 184, 184, 185, + 186, 190, 190, 190, 189, 188, 186, 185, 184, 187, 186, 184, 182, 181, 181, 182, + 182, 181, 181, 182, 181, 180, 180, 183, 185, 183, 168, 174, 161, 161, 147, 122, + 48, 110, 101, 93, 90, 93, 97, 97, 98, 122, 96, 84, 143, 173, 173, 168, + 173, 190, 195, 198, 196, 194, 198, 199, 198, 195, 200, 207, 210, 204, 194, 192, + 195, 196, 196, 196, 195, 194, 193, 191, 190, 189, 190, 191, 190, 189, 188, 189, + 191, 194, 188, 186, 189, 190, 186, 181, 180, 179, 185, 183, 180, 178, 168, 167, + 179, 178, 169, 169, 145, 131, 126, 152, 158, 151, 150, 160, 167, 160, 156, 153, + 142, 151, 158, 160, 154, 152, 155, 150, 143, 126, 91, 74, 85, 96, 89, 87, + 95, 110, 111, 113, 123, 129, 130, 132, 133, 134, 139, 139, 129, 130, 133, 132, + 132, 128, 126, 125, 134, 127, 120, 112, 111, 113, 116, 115, 99, 112, 114, 108, + 107, 108, 118, 137, 125, 128, 126, 121, 117, 120, 125, 127, 123, 113, 104, 106, + 112, 113, 113, 114, 114, 121, 129, 132, 122, 110, 109, 114, 125, 144, 148, 144, + 151, 158, 160, 165, 171, 172, 177, 179, 179, 177, 179, 180, 176, 179, 182, 184, + 184, 185, 187, 188, 190, 191, 191, 190, 189, 188, 187, 186, 187, 186, 184, 182, + 180, 180, 181, 181, 183, 182, 181, 179, 179, 179, 181, 183, 179, 175, 177, 164, + 161, 157, 96, 69, 113, 105, 99, 97, 102, 106, 107, 106, 105, 102, 104, 138, + 165, 183, 197, 207, 185, 190, 193, 191, 189, 193, 195, 196, 196, 200, 206, 210, + 205, 195, 191, 193, 197, 197, 198, 197, 196, 193, 191, 190, 188, 190, 191, 190, + 188, 187, 188, 189, 191, 187, 187, 191, 192, 186, 181, 180, 187, 191, 185, 181, + 180, 171, 166, 176, 176, 172, 170, 149, 129, 132, 157, 168, 169, 160, 165, 169, + 157, 149, 146, 140, 142, 153, 152, 140, 139, 147, 142, 121, 104, 89, 85, 89, + 84, 75, 77, 89, 91, 98, 106, 112, 116, 117, 121, 123, 123, 120, 125, 132, + 133, 136, 134, 133, 132, 129, 128, 120, 115, 107, 105, 109, 115, 120, 121, 118, + 119, 112, 112, 124, 126, 122, 125, 111, 119, 124, 129, 135, 139, 131, 120, 126, + 125, 129, 133, 133, 126, 122, 121, 113, 114, 116, 119, 119, 117, 121, 125, 121, + 139, 145, 143, 151, 157, 159, 163, 166, 169, 174, 176, 179, 179, 181, 183, 177, + 179, 182, 183, 183, 184, 186, 188, 186, 187, 188, 188, 188, 188, 187, 187, 188, + 187, 185, 183, 182, 182, 183, 183, 185, 184, 182, 181, 180, 178, 176, 176, 177, + 181, 172, 157, 153, 160, 69, 118, 109, 105, 104, 106, 105, 102, 94, 88, 107, + 110, 132, 153, 170, 170, 174, 181, 190, 195, 196, 194, 193, 197, 199, 199, 201, + 201, 205, 206, 201, 193, 190, 192, 191, 192, 193, 193, 193, 191, 189, 187, 189, + 190, 191, 190, 188, 187, 188, 189, 188, 186, 187, 192, 192, 186, 182, 181, 189, + 187, 178, 176, 182, 175, 168, 173, 169, 170, 166, 149, 122, 129, 148, 157, 172, + 156, 150, 147, 139, 141, 152, 154, 154, 135, 129, 140, 138, 119, 111, 112, 99, + 96, 90, 73, 59, 61, 71, 80, 80, 87, 91, 87, 85, 88, 100, 110, 111, + 114, 119, 136, 136, 136, 136, 134, 133, 131, 130, 120, 117, 116, 118, 123, 124, + 121, 118, 127, 122, 114, 120, 141, 141, 122, 110, 120, 123, 122, 119, 125, 131, + 122, 109, 114, 114, 117, 117, 113, 108, 110, 117, 135, 128, 118, 111, 109, 110, + 112, 112, 117, 135, 141, 143, 151, 157, 157, 165, 166, 167, 171, 175, 177, 181, + 183, 184, 180, 182, 183, 184, 184, 184, 186, 188, 185, 186, 187, 188, 188, 188, + 188, 187, 191, 190, 188, 187, 186, 187, 188, 189, 187, 185, 183, 182, 180, 177, + 172, 169, 163, 175, 171, 157, 149, 135, 45, 111, 105, 99, 93, 88, 90, 95, + 101, 106, 109, 92, 124, 152, 182, 177, 177, 194, 194, 198, 198, 195, 194, 197, + 200, 199, 204, 201, 201, 201, 197, 191, 190, 193, 190, 191, 193, 195, 194, 193, + 191, 189, 189, 190, 191, 190, 187, 186, 187, 188, 188, 186, 189, 193, 193, 187, + 184, 185, 189, 185, 175, 176, 186, 183, 175, 179, 170, 173, 164, 149, 117, 128, + 139, 144, 142, 138, 143, 146, 143, 147, 153, 148, 132, 123, 118, 122, 122, 114, + 110, 108, 94, 93, 85, 71, 66, 72, 69, 60, 67, 81, 92, 90, 83, 80, + 82, 84, 93, 108, 114, 137, 137, 134, 133, 131, 131, 131, 131, 133, 130, 129, + 130, 132, 130, 124, 119, 106, 130, 141, 133, 120, 109, 116, 137, 136, 137, 128, + 115, 116, 124, 125, 114, 118, 113, 109, 105, 101, 102, 114, 127, 118, 116, 113, + 111, 114, 116, 115, 112, 114, 131, 139, 142, 150, 155, 158, 167, 169, 169, 171, + 173, 177, 181, 182, 183, 181, 183, 184, 183, 182, 182, 184, 186, 186, 187, 187, + 187, 187, 186, 186, 185, 189, 188, 187, 186, 187, 188, 189, 190, 188, 184, 181, + 179, 178, 175, 170, 167, 154, 164, 164, 147, 138, 97, 67, 88, 93, 96, 100, + 102, 104, 105, 107, 111, 124, 107, 138, 147, 176, 177, 179, 195, 192, 196, 198, + 193, 192, 195, 198, 197, 201, 198, 197, 198, 196, 191, 190, 194, 192, 194, 196, + 197, 197, 195, 192, 190, 188, 189, 189, 188, 185, 184, 184, 186, 190, 189, 191, + 195, 194, 189, 188, 190, 191, 188, 179, 179, 186, 182, 178, 184, 175, 177, 163, + 151, 117, 134, 143, 146, 154, 158, 167, 163, 151, 147, 138, 117, 104, 112, 108, + 97, 97, 107, 108, 95, 84, 83, 81, 81, 82, 81, 73, 63, 70, 80, 88, + 90, 88, 88, 82, 74, 83, 91, 90, 137, 136, 132, 131, 129, 130, 131, 132, + 133, 125, 121, 122, 127, 131, 129, 126, 139, 130, 112, 110, 127, 132, 125, 124, + 107, 116, 121, 116, 116, 122, 120, 108, 95, 91, 95, 98, 98, 95, 98, 105, + 105, 112, 121, 126, 126, 120, 109, 102, 110, 129, 137, 142, 151, 155, 158, 168, + 172, 172, 173, 173, 177, 180, 180, 180, 182, 183, 183, 182, 180, 180, 182, 184, + 188, 188, 188, 187, 186, 185, 183, 182, 185, 184, 183, 183, 184, 185, 187, 189, + 187, 183, 178, 175, 174, 173, 170, 168, 166, 159, 149, 122, 116, 72, 126, 106, + 98, 98, 94, 88, 82, 81, 87, 94, 98, 115, 164, 150, 172, 183, 185, 183, + 195, 199, 200, 194, 193, 195, 198, 197, 198, 195, 195, 197, 196, 192, 191, 194, + 190, 192, 194, 195, 193, 191, 187, 185, 186, 187, 188, 186, 184, 182, 182, 184, + 193, 192, 194, 197, 196, 191, 191, 194, 189, 189, 181, 177, 179, 171, 168, 178, + 172, 174, 156, 149, 117, 140, 148, 150, 146, 145, 144, 130, 121, 128, 130, 114, + 112, 94, 88, 94, 90, 74, 74, 87, 86, 79, 77, 77, 75, 72, 82, 95, + 90, 84, 73, 65, 72, 87, 94, 95, 84, 77, 66, 137, 138, 137, 137, 135, + 134, 132, 130, 131, 128, 125, 113, 98, 103, 108, 102, 96, 112, 118, 119, 119, + 113, 111, 118, 127, 120, 121, 125, 119, 101, 89, 90, 103, 97, 94, 90, 91, + 95, 102, 108, 102, 108, 115, 119, 121, 122, 127, 132, 118, 127, 138, 147, 152, + 156, 157, 160, 173, 173, 175, 176, 178, 182, 185, 189, 186, 185, 184, 183, 183, + 184, 185, 186, 185, 185, 186, 187, 188, 190, 191, 192, 184, 181, 187, 188, 179, + 181, 188, 187, 183, 186, 186, 180, 176, 174, 170, 165, 168, 133, 144, 124, 90, + 111, 123, 98, 111, 105, 101, 96, 93, 90, 92, 94, 84, 126, 154, 162, 172, + 177, 180, 186, 193, 196, 199, 198, 195, 194, 196, 199, 207, 202, 196, 194, 194, + 193, 190, 186, 187, 189, 192, 194, 194, 193, 191, 190, 194, 190, 186, 186, 189, + 191, 189, 187, 198, 197, 196, 197, 197, 194, 188, 183, 192, 189, 185, 179, 174, + 172, 173, 174, 174, 156, 165, 139, 95, 150, 150, 160, 145, 143, 142, 137, 126, + 116, 110, 107, 107, 102, 97, 92, 86, 79, 81, 88, 82, 79, 75, 75, 80, + 83, 82, 79, 86, 89, 92, 89, 77, 70, 79, 92, 80, 73, 68, 138, 138, + 137, 135, 133, 131, 129, 128, 129, 125, 124, 117, 107, 114, 119, 112, 104, 111, + 107, 105, 114, 117, 121, 132, 116, 118, 117, 115, 114, 115, 114, 108, 92, 97, + 104, 105, 102, 96, 93, 93, 104, 114, 130, 136, 130, 115, 99, 91, 130, 125, + 128, 137, 144, 145, 150, 156, 166, 169, 174, 176, 178, 180, 182, 184, 188, 187, + 187, 185, 186, 186, 188, 188, 187, 187, 188, 187, 187, 184, 183, 182, 193, 186, + 192, 192, 190, 190, 196, 188, 191, 187, 182, 173, 173, 172, 169, 161, 149, 145, + 144, 118, 105, 114, 111, 114, 110, 109, 108, 106, 102, 100, 98, 98, 97, 133, + 159, 166, 175, 181, 182, 188, 192, 194, 198, 199, 199, 198, 198, 199, 197, 196, + 195, 195, 195, 192, 189, 186, 190, 189, 188, 187, 187, 188, 190, 191, 192, 186, + 179, 177, 180, 188, 196, 200, 200, 200, 199, 195, 190, 187, 186, 186, 188, 183, + 177, 175, 175, 176, 176, 174, 191, 171, 170, 126, 102, 149, 145, 146, 136, 130, + 126, 120, 118, 125, 135, 142, 121, 112, 107, 104, 102, 94, 90, 93, 91, 90, + 88, 89, 92, 97, 101, 105, 110, 109, 110, 107, 96, 80, 73, 70, 80, 98, + 91, 138, 137, 137, 136, 135, 133, 131, 130, 132, 125, 125, 123, 118, 124, 129, + 121, 116, 113, 98, 91, 97, 97, 95, 101, 108, 119, 123, 116, 115, 120, 114, + 100, 108, 101, 89, 78, 78, 88, 108, 121, 132, 124, 112, 102, 104, 115, 132, + 146, 123, 117, 121, 133, 143, 148, 157, 166, 164, 169, 177, 180, 182, 182, 181, + 181, 188, 187, 189, 186, 188, 187, 189, 188, 185, 184, 189, 188, 190, 186, 186, + 185, 191, 182, 185, 188, 187, 190, 191, 180, 186, 185, 183, 180, 181, 176, 164, + 148, 145, 156, 134, 103, 121, 124, 103, 126, 121, 122, 124, 123, 123, 119, 115, + 113, 110, 142, 160, 167, 178, 185, 184, 188, 191, 192, 197, 200, 203, 202, 199, + 196, 187, 191, 195, 196, 195, 191, 188, 187, 190, 190, 188, 187, 187, 188, 189, + 189, 182, 185, 189, 192, 193, 195, 197, 198, 204, 205, 203, 197, 190, 188, 191, + 196, 189, 181, 174, 173, 178, 180, 177, 173, 171, 162, 160, 108, 124, 160, 156, + 149, 143, 135, 126, 113, 100, 91, 87, 84, 112, 106, 102, 107, 111, 107, 103, + 104, 105, 111, 113, 114, 113, 116, 119, 125, 100, 97, 98, 104, 105, 97, 88, + 78, 75, 103, 98, 137, 135, 136, 136, 136, 136, 135, 133, 136, 128, 128, 129, + 125, 127, 130, 120, 126, 125, 115, 107, 109, 103, 95, 98, 83, 91, 97, 100, + 107, 117, 123, 117, 119, 115, 111, 108, 105, 101, 95, 93, 102, 111, 122, 128, + 128, 119, 108, 101, 104, 113, 122, 123, 130, 142, 152, 154, 161, 166, 175, 179, + 181, 179, 181, 181, 187, 187, 187, 187, 187, 187, 187, 188, 184, 185, 186, 186, + 186, 186, 185, 185, 191, 184, 188, 192, 188, 190, 192, 184, 198, 193, 183, 175, + 174, 180, 181, 177, 158, 153, 123, 96, 125, 135, 111, 126, 128, 130, 132, 134, + 133, 130, 126, 125, 122, 145, 160, 168, 181, 186, 184, 188, 192, 192, 195, 200, + 204, 202, 196, 190, 187, 191, 195, 196, 192, 189, 189, 190, 189, 191, 193, 194, + 194, 192, 190, 188, 183, 189, 196, 199, 197, 194, 193, 194, 205, 204, 201, 197, + 194, 193, 195, 197, 191, 186, 181, 178, 179, 179, 177, 177, 171, 172, 168, 103, + 144, 155, 147, 131, 123, 122, 124, 125, 123, 119, 116, 112, 98, 94, 93, 98, + 103, 101, 102, 106, 107, 113, 117, 119, 119, 115, 112, 109, 119, 113, 109, 112, + 113, 110, 102, 93, 84, 94, 93, 132, 132, 133, 134, 136, 136, 138, 136, 137, + 128, 130, 131, 127, 128, 129, 120, 107, 114, 114, 112, 117, 114, 111, 118, 128, + 114, 102, 95, 89, 84, 88, 96, 109, 113, 122, 135, 142, 133, 112, 94, 125, + 122, 116, 113, 114, 119, 124, 128, 127, 146, 148, 127, 122, 140, 151, 144, 157, + 161, 167, 171, 173, 175, 178, 180, 186, 186, 186, 187, 187, 186, 186, 186, 188, + 187, 184, 182, 181, 180, 179, 180, 183, 180, 187, 189, 181, 183, 188, 185, 186, + 195, 200, 196, 190, 185, 179, 174, 156, 140, 133, 120, 128, 142, 132, 133, 131, + 131, 132, 132, 132, 131, 130, 129, 130, 149, 162, 172, 187, 191, 191, 194, 196, + 194, 195, 199, 201, 199, 192, 187, 194, 196, 196, 193, 189, 188, 190, 194, 193, + 193, 193, 193, 193, 192, 192, 192, 195, 193, 189, 184, 181, 185, 194, 202, 206, + 201, 197, 196, 198, 197, 191, 185, 185, 186, 185, 181, 178, 175, 178, 183, 170, + 176, 166, 101, 151, 152, 154, 142, 155, 146, 136, 124, 113, 106, 102, 97, 107, + 105, 103, 103, 101, 98, 102, 108, 120, 117, 115, 115, 119, 118, 113, 108, 114, + 115, 118, 119, 119, 118, 114, 107, 96, 90, 82, 129, 128, 130, 132, 133, 133, + 134, 135, 134, 125, 128, 134, 128, 128, 132, 127, 106, 109, 104, 98, 100, 99, + 98, 107, 106, 100, 105, 119, 123, 115, 114, 123, 116, 108, 104, 108, 121, 127, + 125, 120, 98, 103, 112, 125, 137, 145, 149, 149, 144, 159, 153, 124, 116, 135, + 149, 144, 157, 158, 163, 167, 171, 174, 179, 183, 185, 186, 186, 187, 187, 186, + 186, 185, 184, 184, 183, 183, 183, 184, 184, 186, 179, 177, 186, 185, 179, 179, + 190, 187, 181, 192, 203, 195, 181, 162, 149, 137, 143, 133, 157, 154, 136, 144, + 148, 147, 139, 138, 138, 137, 136, 137, 137, 137, 136, 154, 167, 179, 194, 195, + 195, 202, 199, 199, 199, 197, 198, 196, 192, 189, 201, 199, 195, 191, 188, 189, + 192, 195, 197, 194, 189, 186, 186, 190, 196, 200, 193, 192, 190, 189, 190, 194, + 199, 204, 212, 205, 200, 201, 205, 202, 191, 180, 175, 180, 183, 181, 176, 174, + 182, 188, 164, 166, 147, 92, 141, 144, 160, 158, 152, 150, 149, 147, 146, 141, + 136, 131, 121, 119, 120, 121, 118, 117, 123, 132, 112, 102, 92, 89, 95, 101, + 103, 102, 108, 119, 129, 134, 136, 134, 129, 122, 121, 118, 102, 132, 131, 131, + 132, 133, 133, 134, 133, 134, 126, 131, 137, 131, 130, 137, 135, 134, 133, 120, + 109, 110, 104, 98, 102, 113, 118, 131, 141, 142, 133, 123, 117, 133, 128, 123, + 117, 115, 108, 100, 93, 100, 103, 108, 118, 127, 132, 132, 131, 133, 135, 130, + 119, 118, 127, 135, 135, 148, 152, 157, 163, 168, 171, 176, 179, 179, 180, 181, + 182, 182, 181, 180, 180, 174, 175, 177, 178, 177, 175, 171, 169, 173, 167, 172, + 173, 170, 174, 184, 181, 184, 179, 166, 147, 138, 141, 150, 155, 149, 142, 164, + 161, 148, 151, 150, 153, 150, 149, 149, 150, 149, 149, 148, 147, 140, 156, 171, + 183, 195, 195, 195, 204, 202, 201, 201, 199, 195, 195, 196, 198, 202, 198, 192, + 189, 189, 191, 193, 194, 194, 193, 191, 191, 192, 194, 198, 200, 188, 191, 197, + 203, 207, 207, 203, 200, 206, 203, 200, 202, 204, 201, 193, 186, 173, 176, 181, + 180, 178, 178, 184, 187, 182, 172, 143, 101, 133, 129, 143, 135, 132, 135, 139, + 143, 144, 140, 129, 122, 129, 127, 130, 136, 140, 142, 147, 151, 145, 135, 129, + 126, 129, 134, 140, 142, 151, 158, 161, 158, 154, 147, 136, 125, 148, 155, 140, + 139, 136, 137, 135, 136, 135, 134, 134, 138, 130, 135, 140, 132, 129, 138, 138, + 135, 132, 122, 121, 129, 126, 115, 115, 121, 129, 131, 124, 126, 135, 138, 132, + 138, 139, 137, 132, 125, 122, 121, 123, 122, 120, 119, 124, 132, 139, 143, 143, + 149, 139, 137, 148, 154, 149, 144, 144, 136, 140, 148, 155, 160, 165, 167, 170, + 175, 176, 178, 179, 179, 178, 176, 176, 172, 173, 173, 170, 162, 151, 139, 132, + 135, 127, 127, 130, 131, 137, 146, 139, 129, 137, 146, 153, 161, 168, 169, 165, + 171, 158, 154, 147, 154, 161, 145, 151, 154, 154, 155, 156, 154, 153, 151, 148, + 140, 158, 174, 184, 194, 191, 191, 203, 203, 203, 202, 197, 194, 194, 199, 204, + 201, 196, 191, 189, 192, 195, 195, 193, 186, 191, 198, 204, 205, 203, 198, 195, + 197, 195, 193, 195, 200, 204, 205, 204, 190, 190, 191, 193, 194, 193, 191, 189, + 181, 181, 181, 181, 181, 182, 182, 181, 177, 162, 137, 118, 146, 144, 150, 138, + 148, 144, 138, 137, 138, 140, 141, 140, 139, 134, 134, 142, 149, 148, 147, 144, + 144, 143, 145, 144, 143, 142, 142, 146, 150, 152, 151, 147, 148, 151, 145, 137, + 134, 142, 138, 138, 129, 128, 130, 136, 134, 133, 133, 139, 136, 135, 138, 140, + 135, 138, 138, 136, 135, 134, 130, 127, 126, 129, 133, 137, 138, 135, 134, 135, + 140, 142, 144, 141, 144, 148, 150, 148, 144, 138, 134, 127, 135, 134, 130, 136, + 139, 145, 157, 148, 149, 151, 153, 154, 155, 155, 153, 160, 154, 147, 142, 144, + 152, 161, 168, 172, 172, 170, 165, 161, 163, 171, 179, 168, 161, 146, 130, 126, + 133, 142, 148, 161, 164, 167, 167, 164, 161, 164, 165, 170, 170, 170, 171, 169, + 169, 170, 170, 166, 166, 166, 166, 165, 164, 162, 161, 163, 158, 156, 157, 157, + 154, 156, 158, 151, 161, 173, 180, 188, 200, 203, 201, 199, 195, 195, 200, 200, + 196, 194, 201, 205, 198, 189, 187, 192, 195, 193, 188, 191, 197, 199, 195, 194, + 197, 195, 189, 187, 196, 203, 202, 196, 194, 200, 207, 201, 194, 188, 191, 198, + 200, 194, 187, 180, 180, 180, 182, 183, 181, 179, 175, 165, 172, 101, 150, 140, + 142, 152, 155, 153, 151, 150, 148, 147, 144, 143, 140, 145, 143, 141, 141, 143, + 148, 154, 156, 150, 149, 150, 150, 150, 149, 147, 147, 149, 150, 158, 162, 158, + 157, 147, 125, 122, 130, 153, 136, 134, 136, 140, 139, 135, 134, 138, 139, 136, + 137, 139, 139, 136, 136, 137, 132, 134, 136, 138, 136, 136, 138, 139, 143, 143, + 143, 143, 144, 148, 150, 150, 145, 146, 148, 149, 148, 147, 148, 147, 138, 149, + 151, 149, 152, 148, 146, 154, 154, 154, 154, 155, 156, 158, 160, 161, 159, 159, + 159, 159, 159, 159, 159, 159, 150, 152, 153, 149, 145, 145, 150, 154, 143, 152, + 161, 166, 172, 176, 174, 169, 171, 172, 173, 173, 170, 170, 172, 173, 173, 173, + 172, 171, 170, 169, 168, 168, 168, 167, 166, 165, 163, 162, 159, 159, 166, 163, + 162, 165, 162, 158, 158, 160, 157, 157, 169, 186, 198, 200, 203, 208, 199, 195, + 194, 197, 197, 192, 192, 198, 199, 196, 190, 187, 189, 193, 196, 198, 195, 199, + 200, 197, 197, 200, 199, 194, 191, 195, 198, 199, 198, 198, 201, 205, 203, 197, + 191, 190, 192, 191, 185, 179, 179, 179, 180, 179, 179, 177, 173, 171, 171, 159, + 112, 149, 145, 148, 154, 149, 153, 153, 151, 152, 154, 155, 155, 155, 152, 150, + 145, 142, 142, 144, 146, 148, 152, 150, 152, 149, 150, 149, 153, 153, 168, 157, + 153, 144, 141, 149, 158, 148, 107, 136, 159, 128, 129, 135, 139, 135, 129, 130, + 137, 138, 135, 135, 139, 141, 138, 139, 141, 133, 137, 142, 145, 143, 140, 140, + 139, 142, 143, 146, 147, 148, 150, 151, 152, 144, 143, 142, 142, 144, 147, 149, + 151, 145, 156, 157, 156, 158, 152, 147, 153, 156, 155, 154, 153, 155, 157, 160, + 162, 162, 164, 167, 170, 170, 167, 164, 162, 173, 176, 179, 178, 175, 172, 173, + 174, 173, 178, 180, 178, 177, 176, 172, 166, 180, 179, 175, 175, 177, 179, 178, + 178, 181, 180, 178, 176, 174, 173, 169, 169, 177, 175, 172, 170, 166, 165, 164, + 164, 166, 164, 166, 170, 168, 163, 161, 162, 162, 153, 163, 187, 200, 195, 197, + 208, 199, 195, 193, 194, 194, 191, 192, 196, 194, 194, 192, 188, 185, 188, 195, + 201, 196, 199, 198, 195, 196, 200, 200, 199, 199, 198, 197, 197, 198, 199, 200, + 199, 205, 202, 197, 194, 192, 188, 184, 181, 181, 179, 180, 181, 181, 180, 176, + 172, 166, 135, 126, 145, 149, 155, 160, 148, 155, 155, 154, 154, 156, 158, 160, + 161, 160, 158, 154, 151, 150, 150, 149, 150, 157, 157, 158, 154, 152, 152, 158, + 161, 153, 152, 161, 162, 155, 152, 150, 135, 142, 104, 137, 124, 125, 129, 134, + 134, 131, 132, 136, 136, 133, 135, 140, 143, 141, 142, 145, 139, 142, 145, 145, + 144, 140, 138, 137, 138, 140, 143, 147, 148, 149, 149, 149, 146, 145, 143, 143, + 146, 149, 152, 154, 151, 159, 157, 154, 159, 158, 156, 165, 159, 159, 160, 160, + 161, 163, 165, 166, 172, 171, 170, 170, 172, 174, 176, 178, 170, 173, 175, 175, + 172, 170, 169, 169, 180, 180, 177, 171, 172, 178, 182, 182, 187, 182, 177, 177, + 179, 181, 180, 179, 183, 181, 180, 179, 177, 176, 172, 172, 182, 180, 177, 174, + 170, 171, 172, 173, 166, 164, 165, 169, 167, 163, 161, 163, 166, 157, 161, 178, + 189, 190, 193, 201, 201, 197, 195, 192, 192, 190, 191, 193, 194, 195, 193, 190, + 187, 188, 192, 195, 194, 194, 192, 191, 192, 195, 198, 198, 203, 201, 199, 197, + 196, 196, 195, 195, 199, 199, 197, 195, 191, 188, 187, 187, 179, 178, 178, 178, + 180, 179, 175, 173, 160, 117, 142, 142, 148, 155, 157, 145, 159, 158, 156, 154, + 153, 154, 155, 157, 161, 161, 159, 159, 159, 159, 158, 158, 159, 161, 161, 157, + 152, 152, 155, 160, 161, 157, 159, 157, 146, 145, 148, 139, 135, 127, 120, 133, + 128, 127, 133, 138, 140, 142, 144, 140, 137, 138, 143, 144, 141, 140, 143, 142, + 143, 143, 142, 140, 139, 139, 140, 137, 139, 143, 145, 147, 147, 146, 147, 153, + 152, 152, 153, 153, 154, 156, 157, 156, 163, 160, 159, 167, 166, 164, 171, 163, + 165, 168, 171, 172, 172, 171, 170, 176, 174, 171, 170, 171, 174, 178, 181, 180, + 181, 181, 180, 179, 178, 178, 179, 167, 173, 178, 180, 183, 186, 184, 181, 189, + 184, 179, 176, 177, 179, 177, 174, 175, 175, 175, 173, 172, 172, 171, 171, 176, + 174, 170, 168, 168, 169, 170, 172, 169, 165, 162, 164, 165, 162, 164, 168, 165, + 164, 163, 166, 177, 190, 197, 198, 200, 200, 198, 194, 193, 193, 192, 192, 192, + 191, 189, 190, 192, 193, 190, 189, 193, 191, 189, 189, 190, 192, 194, 197, 196, + 199, 200, 198, 194, 192, 195, 198, 189, 191, 191, 189, 186, 184, 184, 186, 179, + 178, 176, 173, 173, 170, 166, 164, 161, 121, 160, 145, 147, 147, 149, 143, 160, + 161, 159, 156, 153, 152, 153, 155, 155, 156, 155, 156, 157, 158, 157, 157, 152, + 154, 156, 156, 153, 151, 153, 154, 160, 154, 157, 157, 148, 147, 151, 145, 138, + 131, 162, 140, 132, 128, 134, 141, 144, 146, 146, 145, 142, 142, 144, 142, 137, + 134, 136, 139, 139, 139, 137, 137, 138, 141, 145, 140, 142, 145, 147, 148, 148, + 147, 147, 153, 153, 154, 155, 155, 155, 155, 155, 152, 161, 162, 164, 171, 166, + 158, 161, 160, 163, 167, 171, 172, 171, 168, 166, 173, 173, 173, 173, 172, 171, + 170, 169, 172, 171, 169, 168, 168, 170, 171, 172, 176, 180, 182, 180, 178, 177, + 174, 168, 186, 183, 179, 177, 177, 175, 174, 173, 174, 173, 173, 173, 174, 174, + 175, 175, 171, 173, 170, 169, 169, 171, 171, 172, 173, 168, 164, 166, 167, 165, + 168, 172, 166, 170, 169, 162, 169, 186, 197, 197, 197, 198, 197, 194, 193, 194, + 191, 188, 185, 184, 184, 188, 193, 196, 193, 191, 196, 192, 189, 191, 192, 191, + 193, 197, 187, 192, 197, 197, 194, 194, 197, 200, 190, 190, 190, 188, 185, 182, + 182, 183, 186, 185, 180, 175, 170, 164, 158, 154, 150, 126, 161, 149, 153, 152, + 157, 157, 157, 160, 162, 161, 157, 156, 157, 160, 157, 157, 155, 155, 155, 156, + 155, 155, 149, 150, 152, 155, 156, 156, 155, 155, 148, 143, 151, 159, 154, 150, + 150, 139, 134, 126, 139, 137, 133, 132, 136, 138, 136, 138, 142, 142, 140, 141, + 143, 141, 135, 132, 133, 138, 138, 140, 137, 138, 138, 141, 145, 144, 145, 145, + 146, 146, 146, 146, 146, 148, 148, 148, 149, 151, 152, 152, 152, 150, 157, 159, + 160, 167, 163, 154, 157, 158, 160, 163, 165, 167, 166, 165, 164, 171, 172, 173, + 173, 172, 170, 168, 167, 173, 172, 171, 172, 174, 175, 175, 175, 172, 173, 171, + 167, 170, 178, 183, 184, 181, 181, 182, 179, 177, 176, 176, 175, 176, 176, 176, + 176, 176, 177, 177, 177, 175, 175, 175, 175, 173, 173, 173, 173, 170, 166, 166, + 170, 169, 167, 168, 172, 171, 171, 170, 167, 168, 171, 182, 191, 190, 195, 197, + 193, 192, 193, 191, 184, 183, 182, 183, 184, 185, 188, 193, 197, 197, 192, 191, + 194, 194, 191, 192, 197, 188, 190, 194, 196, 197, 197, 195, 194, 192, 191, 189, + 188, 187, 185, 183, 183, 184, 181, 175, 169, 163, 156, 152, 148, 144, 139, 152, + 148, 157, 156, 160, 165, 155, 160, 163, 164, 160, 158, 159, 161, 161, 160, 158, + 157, 157, 158, 158, 156, 152, 147, 144, 145, 149, 150, 148, 144, 155, 137, 130, + 130, 127, 132, 142, 140, 135, 57, 89, 136, 136, 139, 140, 136, 131, 133, 137, + 135, 134, 136, 140, 140, 136, 134, 136, 142, 143, 142, 141, 138, 138, 138, 140, + 144, 144, 144, 144, 144, 144, 144, 144, 150, 150, 149, 149, 152, 154, 156, 158, + 158, 161, 157, 155, 164, 165, 163, 169, 164, 164, 166, 167, 168, 169, 170, 170, + 174, 173, 171, 170, 170, 173, 175, 177, 169, 169, 170, 172, 175, 175, 174, 173, + 176, 179, 179, 176, 176, 179, 179, 176, 176, 179, 182, 182, 179, 176, 178, 180, + 175, 174, 174, 174, 174, 172, 172, 172, 176, 177, 177, 176, 174, 173, 172, 171, + 166, 164, 167, 171, 171, 167, 166, 169, 178, 171, 170, 176, 169, 156, 163, 180, + 187, 192, 195, 192, 192, 193, 191, 182, 183, 184, 187, 181, 177, 178, 190, 198, + 198, 191, 193, 194, 194, 189, 190, 195, 196, 193, 193, 196, 200, 198, 191, 184, + 187, 185, 183, 183, 184, 184, 182, 182, 170, 168, 163, 158, 153, 149, 144, 140, + 154, 156, 151, 149, 156, 151, 149, 152, 154, 159, 164, 164, 160, 156, 156, 158, + 159, 158, 156, 156, 157, 159, 160, 159, 151, 142, 133, 131, 134, 135, 131, 126, + 131, 120, 126, 137, 132, 124, 116, 102, 117, 84, 109, 134, 134, 136, 136, 137, + 135, 130, 123, 126, 128, 132, 135, 137, 137, 136, 136, 140, 141, 141, 142, 141, + 141, 142, 142, 137, 142, 146, 147, 144, 144, 147, 150, 148, 148, 149, 150, 150, + 151, 154, 154, 154, 152, 151, 150, 152, 155, 161, 164, 158, 162, 166, 168, 167, + 166, 166, 167, 166, 167, 167, 168, 170, 171, 172, 172, 168, 169, 170, 170, 170, + 172, 176, 179, 179, 175, 171, 172, 176, 178, 176, 173, 179, 170, 174, 178, 170, + 168, 175, 176, 180, 176, 172, 170, 169, 169, 171, 173, 171, 172, 173, 173, 172, + 170, 166, 164, 165, 163, 165, 170, 172, 169, 168, 172, 172, 172, 171, 172, 175, + 172, 168, 163, 182, 177, 175, 176, 182, 186, 186, 183, 180, 179, 180, 169, 166, + 181, 189, 171, 184, 191, 191, 187, 190, 186, 187, 196, 195, 194, 192, 190, 188, + 187, 187, 187, 187, 185, 183, 181, 179, 177, 175, 174, 172, 166, 155, 147, 146, + 149, 157, 162, 161, 161, 161, 157, 155, 155, 160, 164, 160, 158, 156, 160, 164, + 164, 157, 151, 155, 156, 157, 160, 160, 153, 140, 128, 114, 115, 115, 116, 120, + 125, 122, 116, 120, 118, 120, 126, 134, 134, 127, 117, 107, 93, 88, 138, 135, + 133, 132, 133, 134, 133, 130, 140, 138, 135, 131, 133, 134, 136, 139, 141, 142, + 143, 144, 143, 144, 144, 144, 141, 141, 142, 144, 146, 146, 146, 145, 148, 148, + 149, 150, 151, 151, 154, 154, 152, 152, 153, 154, 155, 157, 161, 162, 158, 161, + 165, 166, 167, 167, 168, 169, 170, 170, 170, 170, 170, 171, 171, 171, 170, 171, + 172, 172, 171, 172, 174, 176, 177, 174, 170, 172, 175, 177, 175, 172, 180, 169, + 172, 179, 175, 173, 174, 168, 172, 171, 168, 166, 166, 168, 170, 172, 173, 175, + 174, 173, 172, 171, 169, 169, 169, 166, 168, 172, 172, 169, 167, 170, 174, 176, + 177, 179, 181, 181, 177, 175, 174, 165, 155, 153, 158, 166, 172, 175, 179, 173, + 169, 161, 159, 175, 186, 177, 185, 193, 193, 190, 194, 190, 185, 190, 188, 188, + 188, 189, 189, 190, 190, 190, 185, 181, 178, 180, 186, 188, 185, 181, 162, 161, + 156, 152, 151, 155, 160, 162, 164, 165, 164, 161, 157, 154, 155, 157, 161, 159, + 158, 162, 167, 168, 164, 159, 163, 161, 157, 156, 157, 158, 157, 154, 131, 126, + 119, 114, 116, 123, 126, 124, 136, 135, 137, 140, 141, 132, 116, 102, 116, 118, + 116, 133, 129, 128, 129, 130, 130, 130, 129, 138, 135, 132, 129, 129, 130, 131, + 135, 138, 140, 141, 142, 143, 144, 145, 145, 146, 143, 141, 144, 148, 148, 147, + 141, 148, 148, 148, 149, 151, 152, 152, 152, 151, 153, 155, 157, 159, 159, 159, + 158, 159, 161, 164, 165, 165, 166, 169, 171, 171, 171, 170, 169, 168, 168, 169, + 169, 171, 173, 175, 174, 173, 171, 172, 173, 176, 173, 171, 172, 175, 176, 174, + 171, 179, 167, 170, 178, 177, 175, 172, 162, 167, 165, 163, 163, 164, 165, 168, + 171, 175, 176, 174, 172, 169, 170, 171, 171, 173, 170, 171, 173, 172, 168, 167, + 170, 168, 173, 177, 179, 179, 178, 178, 179, 181, 177, 174, 173, 175, 174, 171, + 165, 173, 161, 159, 159, 156, 161, 170, 168, 167, 175, 177, 181, 192, 191, 184, + 186, 183, 184, 186, 187, 188, 188, 187, 186, 184, 176, 170, 171, 176, 177, 170, + 163, 156, 157, 158, 161, 163, 164, 166, 166, 166, 168, 169, 167, 164, 161, 157, + 157, 157, 156, 154, 158, 163, 166, 164, 162, 165, 164, 160, 158, 158, 161, 166, + 167, 162, 157, 149, 142, 142, 147, 149, 148, 145, 137, 128, 123, 122, 120, 115, + 110, 120, 129, 125, 116, 114, 116, 121, 124, 121, 119, 118, 119, 121, 125, 128, + 129, 130, 128, 128, 135, 136, 139, 140, 141, 142, 143, 143, 147, 146, 145, 147, + 149, 149, 147, 143, 149, 148, 149, 149, 151, 152, 153, 153, 153, 154, 156, 158, + 160, 160, 160, 159, 162, 163, 164, 164, 164, 165, 167, 170, 167, 167, 165, 165, + 165, 165, 166, 167, 170, 172, 175, 175, 174, 172, 172, 172, 175, 173, 172, 173, + 175, 176, 174, 171, 177, 169, 172, 177, 173, 173, 172, 161, 164, 163, 162, 161, + 161, 163, 166, 167, 172, 174, 173, 173, 170, 170, 170, 169, 174, 171, 170, 173, + 173, 169, 169, 171, 167, 173, 178, 177, 175, 175, 177, 180, 176, 177, 180, 183, + 182, 178, 170, 164, 172, 161, 165, 171, 164, 159, 160, 157, 160, 165, 166, 171, + 185, 184, 177, 178, 182, 183, 184, 183, 182, 179, 175, 173, 179, 173, 167, 165, + 165, 163, 157, 152, 159, 163, 166, 169, 171, 172, 172, 173, 169, 170, 171, 169, + 168, 166, 166, 164, 158, 156, 154, 156, 160, 163, 163, 163, 164, 168, 170, 170, + 167, 165, 165, 163, 157, 158, 160, 156, 155, 153, 150, 143, 143, 132, 121, 112, + 112, 114, 116, 114, 109, 115, 117, 108, 101, 102, 107, 110, 108, 109, 114, 113, + 115, 122, 127, 130, 131, 131, 132, 136, 136, 138, 139, 140, 140, 143, 143, 147, + 150, 152, 153, 150, 149, 149, 149, 149, 148, 149, 150, 151, 151, 153, 153, 155, + 154, 156, 156, 157, 158, 160, 161, 164, 165, 166, 165, 163, 163, 165, 167, 165, + 164, 163, 163, 164, 166, 168, 170, 167, 169, 172, 173, 172, 171, 171, 172, 173, + 173, 173, 174, 175, 175, 173, 171, 174, 168, 173, 173, 166, 167, 170, 164, 165, + 163, 162, 161, 161, 160, 161, 164, 169, 171, 173, 175, 175, 173, 169, 167, 172, + 169, 169, 172, 173, 171, 170, 175, 176, 179, 182, 181, 178, 177, 179, 182, 176, + 174, 171, 171, 174, 178, 181, 183, 196, 185, 191, 200, 192, 183, 184, 184, 176, + 177, 172, 169, 177, 174, 165, 167, 174, 175, 175, 174, 171, 167, 163, 161, 164, + 165, 166, 166, 166, 165, 167, 170, 168, 169, 170, 172, 175, 176, 175, 176, 171, + 170, 169, 167, 166, 166, 166, 167, 165, 163, 160, 160, 162, 164, 165, 165, 165, + 170, 174, 175, 172, 167, 165, 163, 151, 155, 161, 160, 159, 156, 151, 143, 148, + 145, 143, 139, 136, 126, 117, 108, 106, 105, 113, 114, 102, 96, 99, 103, 104, + 111, 120, 121, 122, 122, 125, 127, 132, 137, 142, 140, 141, 141, 142, 143, 143, + 146, 146, 146, 151, 156, 156, 152, 149, 152, 154, 150, 149, 149, 150, 151, 152, + 153, 154, 155, 155, 156, 155, 156, 157, 160, 161, 163, 165, 166, 166, 164, 164, + 165, 166, 167, 166, 165, 165, 166, 169, 172, 172, 166, 167, 170, 170, 170, 170, + 171, 172, 171, 172, 173, 174, 174, 173, 172, 171, 169, 168, 174, 171, 162, 164, + 169, 162, 163, 163, 162, 162, 160, 160, 160, 163, 167, 171, 175, 178, 178, 175, + 169, 166, 169, 166, 166, 170, 171, 171, 171, 177, 179, 180, 181, 180, 178, 177, + 177, 178, 180, 180, 180, 180, 180, 179, 177, 178, 172, 161, 164, 169, 162, 160, + 167, 171, 176, 178, 171, 165, 173, 168, 165, 169, 173, 174, 175, 174, 173, 171, + 169, 168, 162, 166, 171, 171, 169, 170, 175, 179, 172, 172, 170, 171, 172, 173, + 173, 174, 174, 171, 168, 165, 164, 163, 161, 160, 165, 164, 161, 160, 160, 161, + 161, 162, 162, 163, 163, 164, 163, 163, 163, 165, 161, 165, 168, 164, 164, 164, + 166, 162, 163, 160, 158, 153, 149, 141, 134, 127, 125, 110, 107, 104, 92, 89, + 96, 99, 96, 101, 110, 118, 118, 119, 121, 126, 130, 136, 140, 141, 143, 143, + 143, 143, 144, 146, 146, 147, 151, 153, 153, 154, 153, 155, 152, 150, 148, 149, + 149, 151, 152, 154, 154, 153, 153, 156, 157, 157, 157, 157, 157, 159, 162, 165, + 167, 166, 166, 167, 168, 170, 169, 167, 165, 166, 168, 171, 171, 168, 168, 169, + 168, 166, 166, 168, 170, 167, 169, 172, 173, 172, 170, 169, 168, 167, 166, 171, + 170, 162, 166, 167, 155, 160, 160, 158, 159, 159, 160, 161, 163, 165, 168, 171, + 173, 173, 171, 167, 165, 167, 163, 164, 167, 167, 166, 169, 175, 175, 174, 172, + 171, 172, 172, 171, 170, 168, 172, 178, 179, 176, 168, 159, 155, 180, 174, 177, + 178, 171, 171, 180, 181, 168, 174, 170, 167, 173, 171, 170, 178, 175, 175, 175, + 175, 175, 175, 175, 175, 169, 171, 173, 172, 171, 171, 173, 174, 171, 170, 171, + 170, 170, 170, 171, 173, 174, 170, 168, 167, 167, 165, 161, 158, 161, 161, 160, + 160, 159, 159, 159, 160, 160, 159, 157, 158, 161, 163, 162, 162, 159, 164, 166, + 159, 159, 160, 166, 164, 172, 165, 160, 152, 151, 148, 150, 147, 136, 127, 117, + 77, 71, 77, 88, 90, 80, 78, 82, 98, 103, 110, 117, 122, 126, 126, 127, + 138, 140, 139, 139, 139, 140, 140, 141, 148, 146, 145, 149, 154, 155, 152, 148, + 150, 148, 150, 151, 152, 155, 156, 156, 153, 155, 158, 160, 160, 158, 155, 153, + 153, 157, 162, 165, 166, 166, 167, 168, 171, 169, 166, 164, 164, 165, 168, 169, + 171, 170, 169, 166, 164, 163, 165, 167, 164, 167, 170, 171, 170, 168, 167, 166, + 168, 165, 169, 171, 169, 171, 166, 148, 157, 156, 157, 157, 159, 160, 162, 164, + 163, 166, 167, 166, 168, 165, 164, 163, 168, 163, 163, 166, 167, 164, 167, 173, + 174, 171, 167, 167, 170, 172, 170, 168, 172, 172, 171, 170, 169, 170, 173, 177, + 175, 177, 183, 183, 173, 175, 177, 171, 177, 185, 181, 178, 180, 176, 173, 181, + 174, 173, 173, 172, 172, 172, 172, 173, 176, 174, 173, 176, 179, 182, 181, 179, + 172, 172, 172, 173, 173, 171, 171, 170, 170, 168, 170, 172, 174, 172, 167, 162, + 164, 164, 165, 164, 164, 163, 164, 165, 166, 166, 166, 170, 174, 173, 166, 163, + 161, 167, 171, 166, 165, 165, 168, 166, 166, 166, 167, 164, 160, 152, 144, 138, + 130, 143, 145, 86, 83, 84, 85, 84, 86, 72, 45, 91, 100, 104, 104, 104, + 107, 111, 113, 116, 129, 129, 129, 134, 132, 133, 143, 135, 144, 152, 153, 149, + 147, 147, 150, 151, 147, 148, 155, 156, 154, 156, 160, 161, 163, 166, 166, 163, + 161, 160, 158, 161, 160, 158, 159, 160, 160, 158, 157, 163, 164, 165, 167, 168, + 170, 173, 173, 167, 166, 164, 163, 163, 164, 165, 166, 166, 168, 167, 163, 163, + 168, 170, 168, 169, 175, 179, 175, 169, 168, 171, 177, 168, 167, 165, 162, 159, + 159, 160, 165, 166, 171, 172, 169, 170, 170, 166, 159, 163, 165, 168, 167, 165, + 166, 170, 175, 176, 174, 173, 175, 177, 176, 172, 169, 165, 168, 172, 175, 177, + 177, 175, 175, 178, 180, 180, 180, 179, 180, 182, 184, 184, 184, 183, 182, 180, + 179, 179, 176, 179, 179, 179, 178, 176, 174, 172, 171, 173, 171, 170, 172, 175, + 178, 179, 179, 177, 175, 173, 171, 170, 170, 171, 172, 173, 171, 169, 167, 166, + 165, 166, 166, 169, 172, 168, 159, 160, 164, 166, 163, 168, 165, 163, 165, 169, + 171, 169, 166, 167, 168, 170, 165, 164, 161, 166, 167, 161, 160, 163, 160, 158, + 149, 143, 138, 141, 144, 149, 79, 76, 82, 83, 78, 73, 62, 40, 88, 98, + 104, 102, 98, 101, 105, 109, 121, 130, 127, 127, 138, 138, 135, 139, 146, 147, + 149, 147, 146, 144, 144, 144, 152, 149, 150, 156, 159, 156, 157, 161, 159, 160, + 162, 161, 158, 156, 154, 155, 155, 154, 153, 155, 157, 158, 159, 158, 158, 159, + 161, 162, 163, 164, 167, 167, 170, 169, 167, 166, 165, 166, 166, 167, 164, 167, + 168, 165, 166, 169, 169, 168, 170, 173, 176, 173, 169, 168, 171, 173, 166, 165, + 165, 162, 160, 158, 161, 165, 165, 175, 175, 171, 168, 170, 171, 171, 171, 170, + 168, 168, 168, 170, 170, 170, 171, 170, 170, 171, 174, 174, 172, 169, 169, 170, + 173, 174, 175, 175, 174, 174, 178, 181, 183, 182, 181, 179, 178, 178, 180, 180, + 181, 181, 181, 180, 179, 179, 176, 176, 176, 175, 175, 175, 175, 175, 184, 181, + 178, 177, 178, 178, 177, 176, 178, 178, 178, 177, 175, 173, 170, 169, 169, 168, + 167, 166, 165, 166, 167, 168, 165, 168, 169, 165, 165, 169, 169, 165, 166, 165, + 164, 165, 167, 169, 169, 166, 170, 171, 172, 170, 167, 165, 167, 169, 173, 168, + 165, 165, 166, 163, 155, 150, 153, 152, 149, 81, 78, 89, 96, 87, 79, 74, + 67, 84, 95, 106, 107, 107, 112, 118, 125, 130, 136, 132, 134, 148, 149, 145, + 149, 145, 142, 141, 144, 151, 157, 160, 160, 157, 155, 156, 160, 161, 160, 161, + 163, 157, 158, 159, 158, 155, 154, 153, 155, 151, 150, 150, 152, 156, 158, 158, + 157, 161, 161, 162, 163, 163, 164, 164, 164, 166, 165, 164, 163, 163, 163, 163, + 163, 162, 167, 169, 168, 168, 170, 168, 164, 172, 172, 172, 171, 170, 169, 169, + 170, 166, 165, 165, 163, 161, 160, 163, 168, 166, 176, 178, 172, 168, 170, 175, + 179, 178, 173, 168, 169, 171, 172, 170, 166, 173, 172, 172, 174, 177, 177, 176, + 175, 174, 174, 174, 174, 174, 174, 173, 173, 174, 176, 180, 181, 180, 178, 174, + 172, 176, 177, 179, 180, 181, 180, 179, 178, 176, 175, 175, 175, 176, 178, 180, + 182, 188, 185, 182, 180, 179, 178, 176, 174, 173, 175, 177, 178, 176, 172, 167, + 164, 164, 163, 163, 163, 163, 164, 165, 166, 160, 165, 171, 169, 170, 171, 169, + 165, 166, 167, 166, 165, 165, 166, 168, 169, 163, 164, 165, 164, 162, 160, 160, + 160, 170, 162, 155, 155, 160, 160, 153, 146, 149, 145, 140, 94, 90, 101, 108, + 95, 82, 85, 88, 97, 103, 104, 99, 93, 90, 87, 87, 93, 101, 99, 102, + 115, 118, 116, 120, 117, 119, 121, 126, 134, 142, 149, 152, 156, 155, 155, 157, + 159, 158, 160, 161, 159, 160, 161, 158, 156, 154, 156, 157, 153, 152, 151, 153, + 157, 159, 158, 157, 164, 164, 165, 165, 165, 165, 164, 164, 163, 163, 163, 163, + 163, 164, 164, 165, 165, 169, 171, 169, 169, 172, 171, 167, 175, 172, 170, 170, + 172, 172, 172, 169, 167, 166, 165, 164, 164, 164, 167, 171, 169, 176, 176, 173, + 170, 173, 176, 176, 177, 174, 170, 170, 170, 171, 170, 168, 175, 175, 175, 176, + 177, 177, 177, 177, 177, 176, 175, 174, 174, 175, 176, 177, 171, 172, 173, 175, + 178, 177, 175, 173, 175, 176, 178, 181, 181, 180, 178, 177, 178, 177, 176, 176, + 177, 180, 183, 185, 181, 179, 177, 177, 178, 178, 177, 174, 168, 168, 171, 172, + 171, 168, 165, 163, 162, 162, 161, 161, 161, 161, 161, 162, 163, 166, 169, 170, + 170, 168, 167, 165, 164, 165, 167, 166, 165, 164, 167, 170, 167, 168, 169, 169, + 167, 165, 163, 162, 167, 162, 157, 157, 158, 157, 152, 146, 147, 146, 145, 103, + 97, 103, 103, 85, 74, 80, 86, 77, 82, 88, 96, 106, 117, 122, 121, 115, + 127, 128, 128, 135, 134, 135, 143, 139, 145, 150, 151, 150, 151, 156, 160, 148, + 148, 148, 149, 150, 152, 154, 153, 159, 159, 159, 157, 155, 155, 157, 159, 157, + 155, 154, 155, 158, 159, 158, 157, 161, 161, 162, 162, 162, 162, 161, 161, 163, + 164, 165, 167, 169, 170, 171, 171, 169, 171, 171, 167, 168, 172, 173, 171, 176, + 172, 169, 169, 172, 171, 171, 166, 163, 163, 164, 163, 163, 164, 167, 171, 171, + 173, 173, 172, 174, 177, 173, 166, 170, 172, 172, 171, 169, 169, 171, 174, 173, + 173, 173, 172, 171, 171, 171, 172, 177, 176, 175, 175, 175, 177, 180, 180, 174, + 171, 169, 169, 173, 174, 175, 174, 174, 174, 175, 176, 175, 173, 171, 172, 178, + 179, 177, 177, 177, 179, 182, 184, 178, 177, 177, 178, 179, 180, 179, 174, 167, + 166, 166, 167, 167, 168, 168, 168, 165, 164, 164, 163, 161, 160, 158, 160, 167, + 168, 167, 167, 167, 165, 164, 165, 161, 163, 166, 166, 164, 163, 165, 166, 163, + 162, 162, 162, 161, 159, 156, 154, 154, 155, 157, 155, 151, 147, 143, 143, 139, + 139, 140, 99, 92, 97, 98, 85, 83, 92, 94, 116, 119, 120, 119, 121, 125, + 123, 119, 128, 141, 141, 138, 141, 137, 137, 146, 135, 143, 149, 149, 143, 140, + 143, 146, 147, 148, 150, 148, 150, 155, 156, 153, 154, 156, 156, 156, 155, 153, + 156, 156, 159, 158, 157, 158, 160, 161, 160, 159, 163, 163, 165, 165, 165, 165, + 165, 164, 162, 163, 165, 167, 169, 170, 171, 171, 171, 173, 171, 167, 167, 172, + 174, 173, 172, 169, 166, 165, 167, 168, 166, 163, 160, 161, 161, 160, 161, 162, + 164, 169, 171, 171, 170, 171, 175, 179, 172, 162, 167, 171, 173, 172, 169, 168, + 173, 177, 174, 175, 175, 173, 170, 170, 171, 172, 175, 175, 174, 174, 175, 177, + 179, 179, 179, 173, 168, 167, 171, 171, 171, 168, 170, 170, 170, 168, 168, 167, + 166, 168, 175, 176, 175, 174, 174, 175, 176, 177, 180, 179, 179, 179, 180, 180, + 177, 172, 171, 166, 167, 164, 166, 166, 171, 171, 167, 165, 167, 163, 163, 159, + 159, 159, 172, 170, 165, 166, 164, 163, 164, 167, 164, 166, 170, 172, 172, 169, + 169, 166, 159, 156, 154, 153, 153, 152, 149, 147, 146, 151, 156, 154, 148, 143, + 142, 143, 143, 144, 143, 89, 88, 93, 94, 92, 99, 106, 100, 91, 102, 109, + 110, 112, 118, 123, 127, 131, 141, 138, 136, 143, 140, 136, 144, 144, 148, 151, + 153, 151, 150, 152, 151, 145, 148, 150, 147, 149, 154, 157, 153, 149, 151, 156, + 157, 155, 152, 154, 153, 156, 155, 154, 156, 161, 162, 162, 161, 164, 164, 165, + 166, 166, 166, 166, 166, 161, 162, 163, 165, 166, 166, 165, 165, 167, 170, 170, + 167, 168, 171, 172, 170, 172, 169, 167, 165, 165, 165, 164, 164, 162, 162, 163, + 162, 161, 162, 166, 169, 169, 170, 169, 169, 173, 177, 172, 166, 172, 172, 173, + 173, 173, 174, 176, 177, 174, 175, 175, 174, 171, 171, 174, 176, 174, 173, 173, + 173, 173, 173, 174, 173, 179, 173, 171, 171, 174, 174, 172, 167, 170, 169, 168, + 166, 167, 168, 169, 171, 172, 172, 173, 173, 173, 174, 174, 175, 178, 177, 177, + 177, 178, 177, 175, 171, 172, 170, 168, 165, 166, 166, 169, 169, 169, 168, 169, + 167, 167, 164, 162, 162, 172, 169, 165, 168, 167, 165, 166, 171, 166, 168, 171, + 174, 176, 173, 169, 165, 163, 158, 155, 154, 154, 154, 152, 149, 150, 151, 153, + 153, 151, 150, 151, 152, 156, 157, 157, 87, 87, 90, 88, 86, 96, 95, 79, + 83, 97, 109, 107, 105, 107, 118, 125, 128, 134, 129, 131, 144, 144, 139, 141, + 145, 143, 142, 141, 143, 143, 141, 136, 137, 139, 142, 139, 142, 148, 150, 146, + 147, 150, 155, 156, 155, 155, 154, 154, 153, 152, 153, 155, 159, 164, 164, 163, + 160, 160, 160, 162, 162, 163, 163, 163, 166, 166, 167, 168, 168, 166, 165, 164, + 163, 168, 170, 168, 169, 171, 169, 163, 172, 172, 170, 166, 165, 164, 164, 165, + 164, 167, 166, 165, 165, 165, 169, 171, 167, 170, 171, 169, 170, 175, 176, 175, + 178, 174, 171, 172, 176, 178, 177, 174, 167, 169, 170, 169, 167, 168, 171, 175, + 173, 173, 172, 171, 170, 169, 169, 167, 174, 171, 171, 174, 180, 180, 175, 169, + 172, 171, 170, 168, 169, 172, 175, 177, 172, 172, 175, 175, 177, 177, 178, 177, + 174, 172, 174, 174, 177, 176, 175, 172, 172, 170, 169, 165, 165, 163, 164, 163, + 168, 168, 170, 169, 170, 167, 166, 167, 170, 166, 166, 170, 171, 169, 168, 173, + 159, 160, 162, 168, 171, 169, 163, 154, 147, 142, 137, 135, 136, 137, 135, 133, + 131, 128, 126, 127, 131, 135, 136, 136, 132, 137, 142, 85, 88, 92, 100, 105, + 107, 102, 99, 78, 106, 120, 106, 100, 109, 116, 111, 126, 128, 130, 131, 134, + 134, 134, 134, 137, 141, 141, 136, 134, 138, 137, 131, 132, 133, 135, 134, 132, + 131, 137, 141, 141, 144, 148, 149, 150, 152, 153, 154, 153, 153, 152, 153, 154, + 158, 160, 162, 161, 165, 164, 158, 156, 162, 165, 164, 162, 160, 159, 163, 169, + 171, 170, 167, 173, 167, 166, 171, 173, 169, 168, 172, 169, 168, 165, 162, 161, + 158, 156, 154, 163, 163, 164, 163, 162, 164, 171, 176, 171, 171, 172, 172, 172, + 170, 168, 167, 170, 171, 174, 175, 175, 174, 172, 169, 168, 172, 175, 174, 169, + 167, 170, 174, 171, 172, 173, 174, 174, 173, 171, 170, 175, 175, 176, 177, 177, + 176, 176, 174, 175, 174, 174, 174, 175, 180, 183, 184, 176, 173, 174, 175, 180, + 179, 178, 173, 179, 172, 169, 168, 173, 173, 173, 167, 171, 168, 169, 167, 171, + 170, 172, 170, 172, 171, 175, 173, 173, 166, 163, 159, 169, 162, 166, 168, 159, + 159, 166, 168, 166, 164, 153, 139, 133, 142, 151, 152, 146, 143, 141, 139, 135, + 132, 135, 140, 132, 132, 132, 132, 131, 131, 131, 131, 131, 129, 129, 90, 90, + 91, 92, 93, 88, 82, 76, 83, 102, 110, 105, 104, 114, 117, 113, 118, 120, + 122, 124, 125, 126, 128, 127, 119, 124, 126, 124, 126, 132, 133, 127, 122, 122, + 124, 124, 125, 126, 130, 132, 132, 135, 138, 141, 142, 145, 149, 153, 153, 152, + 152, 151, 152, 153, 156, 157, 161, 165, 165, 159, 158, 160, 160, 157, 161, 163, + 165, 166, 167, 168, 169, 170, 172, 167, 166, 170, 172, 169, 168, 170, 168, 167, + 164, 161, 159, 157, 156, 155, 157, 159, 162, 162, 164, 166, 169, 173, 168, 168, + 169, 169, 168, 166, 164, 163, 171, 171, 174, 174, 174, 173, 171, 170, 166, 170, + 175, 175, 171, 168, 168, 170, 165, 166, 167, 169, 169, 170, 170, 170, 173, 173, + 176, 177, 177, 177, 178, 177, 174, 174, 173, 172, 173, 175, 179, 179, 176, 174, + 172, 173, 175, 176, 173, 171, 169, 167, 165, 168, 173, 174, 171, 168, 168, 172, + 173, 170, 166, 165, 167, 170, 169, 171, 173, 175, 175, 173, 171, 169, 177, 169, + 171, 171, 160, 158, 165, 163, 148, 152, 160, 160, 147, 134, 138, 148, 143, 137, + 136, 140, 145, 143, 136, 129, 131, 131, 130, 129, 128, 127, 126, 126, 130, 130, + 131, 102, 103, 104, 106, 104, 101, 97, 93, 96, 100, 103, 105, 110, 117, 116, + 111, 118, 118, 119, 121, 121, 121, 123, 121, 116, 119, 121, 120, 120, 122, 121, + 115, 118, 117, 116, 117, 120, 122, 124, 124, 132, 134, 136, 138, 142, 146, 151, + 156, 155, 155, 154, 153, 153, 154, 157, 157, 158, 162, 164, 161, 161, 161, 160, + 157, 160, 165, 168, 167, 164, 164, 167, 171, 167, 163, 161, 165, 166, 164, 163, + 164, 169, 167, 163, 159, 156, 153, 153, 152, 153, 155, 159, 161, 161, 162, 164, + 165, 163, 162, 163, 164, 165, 165, 165, 165, 173, 173, 174, 174, 174, 173, 172, + 170, 167, 171, 177, 178, 175, 172, 170, 171, 170, 170, 170, 170, 170, 171, 172, + 173, 172, 172, 176, 175, 175, 176, 175, 175, 177, 178, 176, 175, 175, 176, 178, + 177, 180, 177, 175, 175, 175, 176, 175, 173, 174, 173, 172, 174, 176, 175, 170, + 165, 170, 174, 176, 171, 164, 161, 164, 169, 163, 164, 166, 167, 168, 168, 168, + 168, 171, 161, 163, 164, 154, 150, 156, 152, 156, 147, 150, 158, 152, 136, 141, + 156, 157, 150, 144, 141, 143, 143, 140, 136, 140, 139, 138, 137, 135, 134, 132, + 132, 125, 127, 129, 99, 101, 103, 104, 106, 106, 105, 104, 108, 103, 101, 107, + 112, 111, 111, 110, 116, 116, 116, 116, 115, 114, 113, 112, 114, 114, 116, 114, + 114, 111, 110, 106, 118, 114, 111, 112, 115, 117, 117, 115, 132, 135, 140, 141, + 145, 148, 151, 155, 155, 155, 155, 155, 156, 156, 159, 159, 158, 161, 163, 162, + 163, 164, 165, 165, 163, 165, 166, 165, 163, 163, 165, 168, 167, 164, 163, 164, + 165, 165, 163, 163, 169, 168, 164, 159, 152, 148, 147, 146, 148, 152, 156, 158, + 158, 156, 156, 155, 158, 159, 161, 163, 165, 167, 170, 170, 171, 171, 172, 172, + 174, 174, 174, 173, 168, 170, 174, 175, 173, 171, 171, 171, 176, 175, 173, 172, + 171, 172, 173, 174, 173, 174, 174, 174, 173, 172, 172, 172, 176, 175, 174, 173, + 172, 172, 173, 171, 174, 172, 170, 169, 169, 170, 171, 172, 171, 170, 169, 170, + 171, 171, 169, 167, 173, 174, 176, 171, 168, 165, 167, 169, 166, 164, 164, 162, + 162, 161, 162, 161, 168, 159, 162, 164, 158, 156, 161, 160, 164, 141, 130, 138, + 147, 149, 149, 151, 147, 151, 154, 147, 143, 142, 146, 146, 149, 147, 148, 146, + 146, 144, 144, 144, 144, 146, 147, 105, 104, 104, 103, 102, 99, 98, 98, 107, + 104, 105, 111, 111, 108, 108, 113, 106, 104, 105, 105, 105, 105, 104, 104, 104, + 103, 106, 108, 109, 108, 108, 108, 112, 110, 107, 109, 111, 114, 115, 113, 128, + 134, 141, 144, 146, 146, 148, 148, 147, 148, 149, 151, 152, 153, 155, 155, 160, + 159, 159, 158, 158, 159, 162, 168, 166, 163, 160, 161, 163, 165, 164, 163, 170, + 169, 168, 167, 168, 169, 168, 166, 168, 169, 166, 161, 154, 150, 149, 150, 145, + 147, 151, 155, 158, 158, 156, 155, 159, 160, 160, 162, 164, 166, 168, 169, 168, + 168, 170, 172, 173, 175, 178, 177, 168, 168, 168, 167, 167, 168, 169, 171, 172, + 171, 170, 169, 169, 171, 172, 173, 176, 175, 173, 171, 168, 166, 165, 164, 165, + 164, 162, 161, 159, 159, 159, 160, 160, 161, 160, 160, 160, 162, 165, 167, 161, + 159, 158, 159, 162, 167, 170, 171, 168, 165, 164, 162, 167, 166, 166, 162, 166, + 163, 163, 159, 159, 157, 158, 157, 158, 147, 151, 155, 151, 152, 155, 153, 141, + 134, 127, 128, 141, 150, 147, 139, 126, 135, 145, 147, 150, 152, 150, 142, 148, + 147, 148, 147, 148, 147, 148, 149, 152, 154, 155, 109, 107, 108, 105, 103, 101, + 102, 103, 100, 101, 106, 109, 110, 109, 112, 117, 99, 98, 100, 102, 104, 105, + 105, 106, 106, 104, 103, 106, 106, 103, 103, 107, 110, 109, 109, 110, 114, 117, + 119, 120, 126, 132, 141, 146, 148, 148, 148, 149, 149, 150, 152, 154, 155, 156, + 158, 158, 165, 161, 158, 157, 155, 152, 155, 160, 165, 162, 158, 158, 163, 165, + 164, 161, 166, 166, 165, 162, 163, 165, 164, 160, 165, 168, 170, 166, 160, 156, + 156, 158, 144, 144, 147, 152, 158, 161, 162, 162, 164, 163, 162, 161, 161, 161, + 162, 163, 168, 168, 169, 171, 172, 175, 179, 178, 173, 171, 170, 169, 169, 172, + 174, 176, 169, 169, 170, 171, 172, 174, 176, 176, 174, 172, 169, 166, 162, 159, + 158, 157, 156, 155, 155, 152, 151, 150, 150, 150, 152, 156, 158, 158, 159, 159, + 163, 164, 168, 165, 161, 157, 157, 158, 162, 163, 160, 152, 150, 150, 158, 159, + 158, 152, 154, 151, 152, 150, 152, 150, 152, 151, 150, 139, 141, 146, 141, 141, + 145, 139, 133, 138, 136, 125, 122, 134, 147, 152, 150, 145, 137, 132, 144, 154, + 154, 141, 148, 146, 149, 147, 150, 149, 151, 152, 146, 146, 147, 96, 95, 96, + 94, 93, 93, 97, 99, 96, 101, 104, 106, 107, 112, 114, 113, 103, 103, 104, + 106, 105, 106, 106, 106, 105, 99, 95, 97, 96, 93, 94, 101, 107, 110, 111, + 109, 109, 110, 112, 116, 123, 129, 138, 142, 146, 149, 151, 154, 154, 155, 158, + 160, 161, 161, 162, 161, 164, 160, 161, 161, 157, 151, 152, 158, 163, 162, 160, + 160, 161, 164, 165, 166, 161, 163, 161, 157, 158, 161, 160, 155, 165, 170, 173, + 169, 161, 156, 154, 155, 148, 146, 144, 147, 154, 158, 159, 160, 163, 164, 163, + 162, 162, 163, 165, 166, 170, 170, 170, 170, 171, 173, 176, 176, 175, 173, 172, + 172, 174, 176, 177, 177, 172, 172, 173, 173, 174, 173, 173, 172, 167, 164, 162, + 159, 156, 153, 152, 150, 149, 148, 146, 145, 143, 142, 141, 143, 146, 152, 157, + 155, 156, 153, 157, 157, 168, 164, 162, 155, 152, 148, 150, 149, 147, 143, 141, + 141, 146, 147, 147, 144, 138, 138, 139, 139, 141, 140, 141, 142, 152, 141, 143, + 148, 143, 143, 145, 139, 138, 138, 134, 124, 115, 119, 138, 157, 161, 159, 149, + 134, 136, 147, 152, 147, 150, 149, 150, 149, 151, 150, 151, 151, 153, 151, 153, + 100, 98, 99, 95, 92, 91, 93, 97, 99, 103, 105, 102, 106, 112, 112, 103, + 108, 106, 106, 103, 100, 96, 93, 91, 76, 71, 69, 74, 78, 80, 85, 94, + 100, 104, 104, 98, 93, 90, 91, 95, 110, 115, 122, 129, 135, 141, 148, 152, + 155, 156, 159, 160, 160, 159, 159, 158, 163, 160, 162, 165, 164, 155, 156, 162, + 162, 165, 166, 164, 161, 162, 167, 172, 166, 168, 166, 162, 162, 166, 165, 158, + 164, 169, 171, 169, 158, 150, 147, 146, 155, 150, 145, 144, 147, 150, 151, 153, + 161, 163, 163, 164, 167, 169, 172, 175, 172, 170, 169, 168, 166, 167, 168, 169, + 165, 163, 164, 166, 168, 169, 167, 166, 170, 169, 168, 167, 164, 161, 157, 153, + 158, 156, 154, 152, 148, 147, 147, 145, 137, 136, 135, 136, 135, 133, 132, 134, + 136, 141, 145, 145, 142, 141, 141, 143, 141, 141, 142, 141, 140, 140, 141, 141, + 138, 138, 138, 137, 136, 136, 138, 139, 133, 134, 135, 133, 136, 133, 134, 134, + 130, 119, 120, 127, 124, 124, 126, 121, 126, 118, 119, 128, 125, 110, 109, 123, + 115, 145, 163, 157, 143, 141, 144, 146, 147, 147, 146, 146, 145, 145, 145, 145, + 149, 149, 147, 104, 98, 96, 98, 98, 93, 91, 94, 104, 98, 100, 108, 112, + 109, 105, 106, 102, 95, 104, 91, 87, 78, 54, 72, 62, 61, 61, 60, 60, + 61, 62, 67, 89, 84, 84, 88, 85, 78, 80, 87, 92, 89, 95, 112, 129, + 136, 140, 145, 150, 155, 158, 158, 156, 156, 160, 163, 167, 166, 164, 161, 161, + 160, 161, 163, 165, 167, 168, 168, 168, 168, 169, 169, 162, 161, 161, 165, 169, + 170, 167, 161, 168, 167, 164, 163, 162, 161, 161, 162, 153, 156, 158, 157, 153, + 152, 159, 165, 171, 168, 167, 164, 163, 164, 167, 169, 163, 162, 164, 164, 163, + 162, 158, 157, 153, 155, 157, 157, 155, 156, 159, 162, 159, 154, 151, 151, 153, + 154, 149, 145, 145, 140, 141, 144, 142, 136, 135, 137, 133, 131, 129, 130, 132, + 131, 129, 128, 136, 143, 143, 139, 139, 144, 143, 140, 144, 137, 134, 135, 133, + 128, 126, 132, 131, 132, 132, 132, 128, 126, 123, 122, 122, 120, 118, 115, 117, + 116, 120, 121, 118, 128, 110, 102, 116, 87, 113, 129, 123, 129, 129, 118, 112, + 107, 91, 78, 89, 108, 139, 170, 151, 146, 122, 143, 140, 137, 142, 151, 152, + 144, 144, 148, 151, 151, 151, 58, 59, 59, 58, 58, 57, 57, 57, 59, 60, + 59, 61, 61, 62, 62, 62, 60, 66, 64, 62, 68, 64, 58, 62, 61, 63, + 65, 67, 68, 68, 68, 68, 70, 70, 70, 70, 70, 70, 70, 70, 67, 68, + 69, 70, 71, 72, 72, 72, 69, 73, 73, 70, 71, 74, 74, 72, 74, 73, + 73, 72, 72, 73, 73, 73, 74, 74, 74, 76, 76, 77, 78, 78, 77, 78, + 79, 81, 81, 81, 81, 80, 79, 79, 78, 79, 80, 81, 81, 81, 81, 82, + 81, 83, 83, 84, 84, 84, 82, 82, 82, 83, 83, 84, 84, 84, 87, 86, + 85, 84, 85, 86, 88, 89, 85, 91, 85, 84, 89, 89, 85, 92, 89, 91, + 92, 93, 90, 91, 92, 93, 90, 92, 93, 94, 94, 94, 94, 93, 88, 95, + 93, 90, 95, 93, 90, 97, 92, 90, 88, 88, 88, 91, 93, 95, 94, 97, + 92, 101, 96, 91, 92, 69, 4, 24, 59, 67, 90, 92, 108, 108, 103, 102, + 91, 92, 102, 102, 97, 101, 104, 101, 101, 104, 104, 102, 103, 106, 107, 106, + 104, 104, 106, 106, 104, 103, 103, 104, 104, 104, 104, 103, 102, 101, 105, 105, + 105, 104, 104, 103, 103, 103, 104, 103, 103, 59, 59, 59, 58, 59, 58, 58, + 58, 55, 56, 58, 59, 60, 62, 62, 60, 62, 63, 63, 62, 61, 62, 64, + 68, 64, 65, 67, 67, 66, 65, 67, 69, 70, 71, 71, 71, 69, 68, 64, + 64, 68, 69, 68, 69, 68, 70, 71, 71, 71, 71, 71, 72, 72, 73, 73, + 73, 75, 74, 74, 73, 73, 74, 74, 75, 71, 73, 75, 75, 74, 73, 73, + 74, 75, 78, 79, 77, 77, 80, 79, 76, 77, 77, 77, 78, 78, 79, 79, + 79, 80, 81, 80, 82, 82, 83, 83, 83, 81, 86, 85, 83, 83, 87, 86, + 85, 83, 84, 83, 85, 84, 86, 85, 86, 84, 87, 88, 89, 87, 87, 87, + 89, 85, 90, 89, 87, 87, 91, 90, 89, 93, 91, 89, 90, 94, 95, 94, + 92, 95, 94, 92, 92, 91, 93, 94, 95, 91, 94, 94, 91, 91, 94, 94, + 91, 99, 94, 96, 95, 101, 84, 93, 66, 1, 25, 58, 67, 97, 95, 105, + 107, 103, 101, 92, 90, 102, 102, 98, 101, 102, 100, 100, 103, 104, 101, 101, + 105, 106, 106, 106, 106, 106, 106, 106, 106, 102, 104, 106, 106, 104, 103, 103, + 104, 106, 106, 104, 103, 103, 103, 103, 103, 101, 108, 105, 58, 58, 57, 57, + 58, 57, 57, 58, 59, 59, 60, 61, 63, 63, 65, 65, 63, 63, 63, 62, + 61, 62, 65, 68, 62, 63, 65, 65, 63, 63, 65, 67, 68, 68, 69, 69, + 69, 68, 67, 67, 71, 70, 69, 68, 68, 68, 69, 69, 71, 71, 71, 72, + 72, 73, 73, 73, 75, 74, 74, 73, 73, 74, 74, 75, 73, 74, 76, 76, + 75, 73, 74, 75, 75, 79, 79, 76, 76, 79, 78, 75, 77, 77, 78, 78, + 78, 79, 79, 79, 80, 80, 80, 81, 81, 82, 82, 83, 81, 86, 86, 83, + 84, 87, 87, 85, 84, 84, 85, 85, 85, 86, 86, 86, 85, 88, 90, 90, + 89, 88, 89, 90, 87, 90, 90, 87, 88, 91, 92, 89, 92, 91, 90, 91, + 93, 94, 94, 93, 94, 94, 94, 93, 93, 94, 95, 95, 93, 96, 96, 93, + 93, 96, 96, 93, 98, 94, 96, 94, 101, 85, 94, 66, 1, 27, 59, 67, + 98, 96, 105, 107, 100, 99, 90, 90, 102, 105, 101, 104, 104, 101, 101, 105, + 105, 102, 103, 106, 106, 106, 106, 106, 106, 106, 106, 106, 102, 104, 106, 106, + 104, 103, 103, 104, 106, 105, 104, 103, 103, 103, 103, 104, 101, 108, 105, 57, + 56, 56, 56, 57, 56, 57, 57, 61, 61, 60, 60, 61, 63, 65, 66, 63, + 64, 63, 63, 62, 62, 65, 67, 62, 64, 65, 65, 64, 63, 66, 67, 67, + 67, 67, 67, 68, 68, 69, 70, 72, 71, 70, 69, 68, 68, 68, 68, 71, + 71, 71, 72, 72, 73, 73, 73, 75, 74, 74, 73, 73, 74, 74, 75, 73, + 75, 77, 77, 75, 74, 75, 76, 76, 79, 80, 77, 76, 78, 77, 74, 77, + 78, 78, 78, 79, 79, 79, 79, 80, 80, 80, 81, 81, 82, 82, 83, 81, + 86, 86, 83, 84, 87, 87, 85, 84, 85, 85, 85, 86, 86, 86, 86, 86, + 89, 91, 91, 90, 89, 90, 91, 87, 90, 90, 88, 88, 91, 92, 89, 90, + 91, 93, 92, 92, 91, 94, 95, 94, 94, 94, 94, 94, 94, 95, 95, 94, + 97, 97, 94, 94, 97, 97, 94, 96, 93, 95, 93, 101, 87, 95, 65, 2, + 27, 60, 68, 98, 96, 105, 107, 98, 98, 89, 89, 103, 106, 103, 105, 105, + 102, 102, 106, 106, 103, 104, 107, 106, 106, 106, 106, 106, 106, 106, 106, 102, + 104, 106, 106, 104, 103, 103, 104, 106, 105, 104, 103, 103, 103, 104, 104, 101, + 108, 105, 57, 57, 56, 56, 57, 57, 58, 58, 61, 60, 58, 57, 58, 60, + 63, 65, 62, 64, 64, 63, 62, 62, 65, 67, 65, 66, 68, 67, 66, 66, + 69, 70, 69, 68, 67, 66, 66, 68, 70, 71, 71, 71, 70, 69, 69, 69, + 70, 70, 71, 71, 71, 72, 72, 73, 73, 73, 75, 74, 74, 73, 73, 74, + 74, 75, 74, 76, 78, 78, 76, 75, 76, 77, 77, 80, 80, 77, 76, 78, + 77, 74, 78, 78, 78, 79, 79, 79, 80, 80, 80, 80, 80, 81, 81, 82, + 82, 83, 81, 86, 86, 83, 84, 87, 87, 85, 85, 85, 85, 86, 86, 86, + 87, 87, 87, 89, 91, 92, 90, 90, 90, 92, 87, 90, 91, 88, 88, 92, + 92, 89, 89, 92, 94, 93, 91, 90, 93, 96, 94, 94, 95, 94, 94, 95, + 95, 95, 93, 96, 96, 93, 93, 96, 96, 93, 95, 93, 94, 92, 101, 88, + 96, 63, 3, 28, 61, 68, 98, 96, 105, 107, 99, 99, 90, 89, 102, 105, + 102, 104, 104, 101, 102, 105, 105, 103, 103, 106, 107, 107, 106, 106, 106, 106, + 105, 105, 102, 104, 106, 106, 104, 103, 103, 104, 105, 105, 104, 103, 103, 103, + 104, 105, 101, 108, 105, 57, 57, 59, 59, 59, 59, 60, 60, 62, 61, 59, + 57, 58, 59, 63, 64, 61, 63, 65, 65, 63, 62, 64, 66, 65, 67, 68, + 68, 67, 67, 69, 71, 71, 70, 68, 66, 66, 67, 68, 69, 68, 68, 68, + 69, 70, 71, 73, 74, 71, 71, 71, 72, 72, 73, 73, 73, 75, 74, 74, + 73, 73, 74, 74, 75, 74, 76, 78, 78, 76, 75, 76, 77, 76, 79, 80, + 77, 76, 78, 77, 74, 78, 78, 79, 79, 79, 80, 80, 80, 80, 80, 80, + 81, 81, 82, 82, 83, 81, 86, 86, 83, 84, 87, 87, 85, 85, 85, 86, + 86, 86, 87, 87, 87, 87, 89, 91, 92, 90, 90, 90, 92, 88, 91, 91, + 89, 89, 92, 93, 90, 89, 92, 94, 93, 91, 90, 93, 96, 94, 94, 95, + 96, 96, 95, 95, 95, 92, 95, 95, 92, 92, 95, 95, 92, 94, 93, 95, + 91, 101, 90, 95, 60, 4, 29, 61, 69, 99, 96, 104, 107, 101, 101, 91, + 90, 102, 104, 100, 102, 103, 100, 100, 104, 104, 101, 102, 105, 107, 107, 107, + 106, 106, 105, 105, 105, 102, 104, 106, 106, 104, 103, 103, 104, 105, 104, 103, + 103, 103, 104, 105, 105, 101, 108, 105, 58, 59, 59, 59, 59, 60, 61, 61, + 64, 63, 62, 61, 61, 62, 64, 64, 61, 63, 65, 65, 63, 63, 64, 65, + 63, 65, 66, 66, 65, 65, 67, 69, 70, 69, 68, 68, 67, 67, 67, 67, + 67, 68, 68, 69, 71, 73, 74, 75, 71, 71, 71, 72, 72, 73, 73, 73, + 75, 74, 74, 73, 73, 74, 74, 75, 73, 75, 77, 77, 75, 74, 75, 76, + 75, 78, 79, 76, 76, 79, 78, 76, 79, 79, 79, 79, 80, 80, 80, 81, + 80, 80, 80, 81, 81, 82, 82, 83, 81, 86, 86, 83, 84, 87, 87, 85, + 86, 86, 86, 86, 87, 87, 87, 88, 86, 89, 91, 91, 90, 89, 90, 91, + 88, 91, 92, 89, 89, 93, 93, 90, 90, 91, 93, 92, 92, 91, 94, 95, + 94, 94, 96, 96, 96, 96, 95, 95, 91, 94, 94, 91, 91, 94, 94, 91, + 95, 94, 95, 90, 100, 90, 95, 56, 5, 30, 62, 69, 99, 96, 104, 107, + 102, 101, 92, 90, 102, 103, 99, 101, 102, 99, 100, 103, 103, 101, 101, 104, + 108, 108, 107, 106, 106, 105, 104, 104, 102, 104, 106, 106, 104, 103, 103, 104, + 104, 104, 103, 103, 103, 104, 105, 106, 101, 108, 105, 57, 57, 58, 59, 59, + 60, 60, 60, 63, 63, 63, 63, 63, 63, 63, 63, 60, 63, 65, 66, 65, + 64, 64, 65, 64, 65, 67, 66, 65, 65, 67, 69, 67, 67, 68, 69, 69, + 69, 68, 68, 69, 69, 69, 70, 71, 72, 73, 74, 71, 71, 71, 72, 72, + 73, 73, 73, 75, 74, 74, 73, 73, 74, 74, 75, 73, 74, 76, 76, 75, + 73, 74, 75, 73, 77, 78, 76, 77, 80, 80, 78, 79, 79, 79, 80, 80, + 80, 81, 81, 80, 80, 80, 81, 81, 82, 82, 83, 81, 86, 86, 83, 84, + 87, 87, 85, 86, 86, 86, 87, 87, 87, 88, 88, 85, 88, 90, 90, 89, + 88, 89, 90, 88, 91, 92, 89, 90, 93, 93, 90, 92, 91, 90, 91, 93, + 94, 94, 93, 94, 94, 96, 97, 97, 96, 95, 95, 92, 95, 95, 92, 92, + 95, 95, 92, 96, 96, 96, 89, 100, 91, 93, 52, 5, 31, 63, 70, 99, + 96, 104, 106, 101, 100, 91, 90, 102, 104, 100, 103, 103, 100, 101, 104, 104, + 102, 102, 105, 108, 108, 107, 106, 106, 105, 104, 104, 102, 104, 106, 106, 104, + 103, 103, 104, 104, 103, 103, 103, 103, 104, 105, 106, 101, 108, 105, 57, 57, + 57, 58, 58, 59, 59, 59, 60, 61, 61, 62, 62, 61, 60, 60, 60, 63, + 65, 66, 65, 64, 64, 65, 66, 68, 69, 69, 68, 67, 70, 71, 63, 64, + 67, 69, 70, 71, 70, 70, 71, 71, 70, 70, 70, 71, 72, 72, 71, 71, + 71, 72, 72, 73, 73, 73, 75, 74, 74, 73, 73, 74, 74, 75, 72, 74, + 76, 75, 74, 73, 73, 74, 72, 76, 77, 76, 77, 81, 81, 79, 79, 79, + 79, 80, 80, 81, 81, 81, 80, 80, 80, 81, 81, 82, 82, 83, 81, 86, + 86, 83, 84, 87, 87, 85, 86, 86, 86, 87, 87, 88, 88, 88, 85, 87, + 89, 89, 88, 87, 88, 89, 88, 92, 92, 89, 90, 93, 93, 91, 93, 91, + 89, 90, 94, 95, 94, 92, 93, 94, 97, 98, 98, 97, 95, 94, 94, 97, + 97, 94, 94, 97, 97, 94, 96, 97, 97, 89, 100, 91, 93, 50, 6, 31, + 63, 70, 99, 96, 104, 106, 98, 98, 89, 89, 102, 105, 102, 105, 104, 102, + 102, 105, 106, 103, 103, 107, 108, 108, 107, 106, 106, 105, 104, 104, 102, 104, + 106, 106, 104, 103, 103, 104, 103, 103, 103, 103, 103, 104, 106, 106, 101, 108, + 105, 61, 61, 62, 62, 62, 61, 60, 60, 62, 61, 60, 61, 63, 64, 63, + 62, 64, 64, 64, 64, 64, 64, 64, 64, 66, 67, 68, 69, 68, 67, 68, + 67, 69, 66, 66, 69, 69, 66, 66, 69, 72, 71, 71, 71, 71, 72, 73, + 74, 76, 75, 73, 71, 70, 70, 71, 71, 74, 75, 76, 77, 77, 75, 74, + 73, 75, 74, 74, 74, 74, 75, 76, 77, 81, 80, 78, 77, 76, 76, 77, + 79, 80, 80, 80, 81, 81, 82, 82, 82, 81, 81, 82, 82, 82, 83, 83, + 84, 86, 86, 85, 85, 87, 87, 86, 85, 91, 85, 88, 90, 84, 87, 92, + 87, 89, 89, 89, 90, 90, 91, 91, 91, 92, 91, 91, 91, 91, 91, 90, + 90, 96, 95, 93, 93, 93, 93, 96, 97, 95, 95, 96, 96, 96, 96, 96, + 96, 95, 97, 96, 92, 92, 96, 97, 95, 102, 94, 99, 96, 98, 87, 92, + 46, 5, 34, 66, 70, 100, 100, 108, 108, 106, 96, 91, 95, 101, 103, 103, + 103, 104, 102, 103, 105, 104, 100, 101, 105, 109, 108, 106, 104, 102, 101, 101, + 100, 102, 106, 107, 104, 104, 106, 104, 100, 109, 107, 103, 100, 100, 102, 105, + 107, 100, 109, 107, 61, 61, 61, 62, 61, 61, 61, 60, 62, 61, 60, 61, + 63, 64, 62, 61, 64, 64, 64, 64, 64, 64, 64, 64, 66, 67, 68, 69, + 68, 67, 68, 67, 70, 67, 67, 70, 70, 67, 67, 70, 72, 71, 71, 71, + 71, 72, 73, 74, 71, 71, 71, 71, 72, 73, 74, 75, 74, 75, 75, 76, + 76, 75, 75, 74, 75, 75, 74, 74, 75, 75, 76, 77, 79, 78, 77, 77, + 77, 78, 79, 81, 80, 80, 80, 81, 81, 82, 82, 82, 81, 81, 81, 81, + 82, 82, 82, 84, 85, 85, 83, 84, 86, 86, 85, 84, 90, 84, 88, 90, + 84, 87, 91, 86, 89, 89, 89, 90, 90, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 92, 93, 92, 91, 91, 91, 91, 93, 94, 95, 95, 96, 96, + 96, 96, 96, 96, 94, 97, 96, 93, 93, 96, 97, 94, 98, 92, 97, 94, + 99, 89, 94, 48, 6, 34, 66, 70, 100, 100, 108, 108, 106, 96, 91, 95, + 101, 103, 103, 103, 104, 102, 103, 105, 104, 100, 101, 106, 107, 107, 106, 105, + 104, 104, 105, 105, 103, 106, 106, 103, 103, 105, 104, 101, 108, 106, 103, 101, + 101, 102, 104, 106, 104, 108, 104, 61, 62, 61, 61, 61, 61, 61, 61, 62, + 61, 59, 60, 62, 63, 61, 61, 64, 64, 64, 64, 64, 65, 66, 66, 66, + 67, 68, 69, 69, 68, 69, 68, 70, 67, 67, 70, 70, 67, 67, 70, 72, + 71, 71, 71, 71, 72, 73, 74, 70, 70, 71, 73, 74, 74, 74, 74, 75, + 75, 75, 74, 74, 75, 75, 76, 75, 75, 74, 74, 75, 76, 77, 77, 77, + 77, 76, 77, 78, 79, 80, 82, 80, 80, 80, 81, 81, 82, 82, 82, 80, + 80, 80, 81, 81, 82, 82, 83, 84, 84, 83, 83, 85, 86, 84, 83, 90, + 84, 87, 89, 83, 86, 91, 86, 89, 89, 89, 90, 90, 91, 91, 91, 90, + 90, 90, 91, 92, 92, 93, 93, 93, 92, 92, 91, 91, 92, 93, 94, 95, + 95, 96, 96, 96, 96, 96, 96, 93, 96, 97, 94, 94, 97, 96, 93, 95, + 90, 95, 93, 99, 92, 97, 48, 6, 35, 67, 71, 100, 100, 108, 107, 106, + 96, 91, 95, 101, 103, 103, 103, 104, 102, 103, 106, 104, 101, 102, 106, 105, + 105, 105, 105, 106, 107, 108, 109, 104, 107, 106, 102, 102, 105, 105, 102, 106, + 105, 104, 103, 103, 103, 104, 104, 106, 108, 101, 61, 62, 60, 60, 61, 61, + 62, 62, 62, 61, 59, 60, 62, 63, 61, 61, 63, 64, 64, 65, 65, 65, + 66, 67, 66, 67, 68, 69, 69, 68, 69, 68, 70, 67, 67, 70, 70, 67, + 67, 70, 72, 71, 71, 71, 71, 72, 73, 74, 72, 73, 74, 75, 74, 73, + 71, 70, 76, 75, 74, 73, 73, 75, 76, 77, 76, 75, 75, 75, 75, 76, + 77, 78, 77, 77, 77, 77, 78, 79, 79, 81, 80, 80, 80, 81, 81, 82, + 82, 82, 80, 80, 80, 80, 81, 81, 82, 83, 85, 85, 84, 84, 86, 86, + 85, 84, 89, 84, 87, 89, 83, 86, 90, 86, 89, 89, 89, 90, 90, 91, + 91, 91, 89, 90, 90, 91, 92, 93, 94, 94, 94, 94, 94, 94, 94, 94, + 95, 95, 96, 96, 97, 97, 97, 97, 97, 97, 92, 96, 97, 95, 95, 97, + 96, 92, 94, 90, 95, 92, 99, 93, 97, 45, 7, 35, 67, 71, 101, 100, + 108, 107, 106, 96, 91, 95, 101, 103, 103, 103, 103, 102, 103, 106, 105, 101, + 103, 107, 105, 105, 104, 105, 105, 106, 108, 108, 105, 107, 105, 101, 101, 104, + 105, 103, 104, 105, 105, 105, 104, 104, 103, 102, 105, 108, 102, 61, 61, 61, + 61, 60, 61, 63, 63, 62, 61, 59, 60, 61, 62, 61, 61, 63, 64, 64, + 65, 65, 66, 67, 68, 66, 67, 68, 69, 69, 68, 69, 68, 71, 68, 68, + 71, 71, 68, 68, 71, 72, 71, 71, 71, 71, 72, 73, 74, 72, 73, 74, + 75, 75, 74, 72, 71, 75, 75, 74, 73, 74, 75, 77, 78, 76, 76, 75, + 75, 76, 76, 77, 78, 79, 79, 79, 79, 78, 77, 77, 77, 80, 80, 80, + 81, 81, 82, 82, 82, 80, 80, 80, 81, 81, 82, 82, 83, 87, 87, 86, + 86, 88, 88, 87, 86, 90, 84, 87, 89, 83, 86, 91, 86, 89, 89, 89, + 90, 90, 91, 91, 91, 90, 90, 91, 92, 93, 94, 94, 95, 94, 94, 94, + 94, 94, 94, 95, 95, 96, 96, 97, 97, 97, 97, 97, 97, 92, 96, 97, + 95, 95, 97, 96, 92, 96, 93, 97, 91, 98, 93, 94, 40, 8, 36, 68, + 72, 101, 100, 108, 107, 106, 96, 91, 95, 101, 103, 103, 103, 103, 102, 103, + 106, 105, 102, 104, 108, 106, 105, 104, 104, 103, 104, 104, 104, 105, 107, 105, + 101, 101, 104, 105, 103, 104, 104, 105, 105, 105, 104, 103, 102, 101, 109, 106, + 62, 61, 60, 60, 60, 61, 63, 65, 62, 61, 59, 60, 61, 62, 61, 61, + 63, 64, 65, 65, 66, 67, 68, 68, 66, 67, 68, 69, 69, 68, 69, 68, + 71, 68, 68, 71, 71, 68, 68, 71, 72, 71, 71, 71, 71, 72, 73, 74, + 69, 70, 72, 74, 75, 76, 77, 77, 74, 74, 74, 74, 75, 76, 77, 78, + 76, 76, 76, 76, 76, 77, 78, 78, 79, 79, 80, 79, 78, 77, 76, 76, + 80, 80, 80, 81, 81, 82, 82, 82, 81, 81, 82, 82, 82, 83, 83, 84, + 88, 88, 86, 87, 89, 89, 88, 87, 91, 85, 88, 90, 84, 87, 92, 87, + 89, 89, 89, 90, 90, 91, 91, 91, 91, 91, 92, 92, 93, 94, 94, 94, + 91, 92, 92, 93, 93, 92, 93, 92, 97, 97, 98, 98, 98, 98, 98, 98, + 93, 96, 97, 94, 94, 97, 96, 93, 97, 95, 98, 91, 98, 93, 93, 35, + 9, 37, 69, 72, 101, 100, 108, 107, 106, 96, 91, 95, 101, 103, 103, 103, + 103, 102, 103, 107, 106, 103, 104, 109, 107, 106, 105, 103, 102, 102, 102, 102, + 104, 107, 106, 102, 102, 105, 105, 102, 104, 105, 105, 105, 105, 104, 103, 102, + 100, 109, 108, 62, 62, 60, 59, 59, 61, 64, 65, 62, 60, 59, 60, 61, + 62, 61, 61, 63, 64, 65, 65, 66, 67, 69, 69, 67, 68, 68, 69, 69, + 68, 69, 68, 71, 68, 68, 71, 71, 68, 68, 71, 72, 71, 71, 71, 71, + 72, 73, 74, 70, 71, 71, 72, 74, 76, 78, 79, 72, 73, 74, 75, 76, + 77, 77, 77, 77, 76, 76, 76, 76, 77, 78, 79, 77, 78, 79, 79, 79, + 78, 77, 77, 80, 80, 80, 81, 81, 82, 82, 82, 82, 82, 83, 83, 84, + 84, 84, 85, 87, 87, 86, 86, 88, 89, 87, 86, 92, 86, 90, 91, 86, + 88, 93, 88, 89, 89, 89, 90, 90, 91, 91, 91, 92, 93, 93, 93, 93, + 93, 93, 93, 91, 91, 92, 93, 93, 92, 92, 92, 97, 97, 98, 98, 98, + 98, 98, 98, 94, 97, 96, 93, 93, 96, 97, 94, 97, 95, 98, 90, 98, + 94, 93, 33, 10, 38, 69, 73, 101, 100, 108, 107, 106, 96, 91, 95, 101, + 103, 103, 103, 103, 102, 103, 107, 106, 103, 105, 110, 108, 107, 106, 104, 104, + 103, 103, 103, 103, 106, 106, 103, 103, 105, 104, 101, 105, 105, 105, 104, 104, + 103, 103, 103, 102, 109, 105, 61, 61, 59, 58, 59, 61, 64, 66, 62, 60, + 59, 60, 62, 63, 61, 61, 64, 64, 65, 66, 67, 67, 69, 70, 67, 68, + 68, 69, 69, 68, 68, 68, 73, 69, 69, 72, 72, 69, 69, 72, 72, 71, + 71, 70, 70, 71, 72, 73, 75, 74, 73, 72, 72, 74, 75, 76, 71, 72, + 74, 76, 77, 77, 76, 76, 77, 76, 76, 77, 76, 78, 78, 80, 76, 77, + 79, 80, 81, 81, 80, 78, 79, 79, 79, 80, 80, 81, 81, 82, 83, 83, + 85, 85, 85, 86, 86, 86, 86, 85, 84, 85, 86, 87, 86, 85, 93, 87, + 91, 92, 86, 89, 94, 89, 89, 89, 89, 90, 90, 91, 90, 90, 93, 93, + 92, 92, 92, 93, 93, 92, 93, 93, 95, 96, 96, 95, 94, 94, 97, 97, + 98, 98, 98, 98, 97, 98, 95, 97, 96, 92, 92, 96, 97, 95, 95, 94, + 97, 89, 98, 96, 94, 33, 11, 38, 70, 73, 100, 99, 107, 106, 106, 97, + 91, 95, 101, 103, 102, 102, 103, 102, 104, 107, 106, 104, 105, 110, 108, 107, + 106, 105, 105, 105, 106, 106, 102, 106, 107, 104, 104, 106, 104, 100, 106, 105, + 104, 103, 103, 103, 104, 104, 106, 108, 101, 58, 58, 58, 59, 59, 60, 60, + 60, 61, 60, 60, 60, 60, 61, 63, 64, 64, 64, 64, 65, 65, 66, 66, + 66, 68, 68, 68, 69, 69, 70, 70, 70, 69, 70, 71, 72, 72, 72, 72, + 71, 69, 70, 72, 71, 69, 69, 71, 72, 72, 73, 73, 74, 74, 75, 75, + 75, 77, 77, 77, 76, 76, 75, 75, 75, 76, 83, 80, 78, 81, 79, 75, + 83, 78, 82, 81, 77, 77, 84, 86, 82, 78, 79, 79, 80, 80, 79, 80, + 79, 81, 90, 87, 83, 87, 84, 81, 89, 80, 85, 86, 84, 85, 89, 85, + 77, 93, 89, 89, 91, 91, 88, 88, 92, 93, 93, 91, 91, 92, 92, 90, + 90, 88, 89, 91, 91, 91, 91, 91, 92, 93, 96, 97, 97, 94, 94, 96, + 97, 95, 96, 96, 95, 94, 95, 96, 100, 92, 95, 97, 96, 93, 91, 92, + 94, 97, 89, 97, 92, 92, 89, 92, 29, 12, 43, 67, 79, 94, 103, 103, + 106, 109, 96, 92, 98, 103, 100, 99, 102, 102, 101, 101, 104, 105, 102, 102, + 106, 103, 105, 107, 106, 104, 103, 105, 107, 103, 107, 107, 104, 103, 105, 104, + 100, 106, 105, 104, 103, 103, 103, 103, 104, 102, 104, 104, 57, 57, 59, 59, + 59, 60, 60, 60, 62, 62, 62, 62, 63, 64, 66, 66, 63, 64, 65, 65, + 65, 66, 66, 66, 68, 68, 68, 69, 69, 70, 70, 70, 70, 71, 70, 71, + 71, 72, 72, 72, 69, 71, 71, 71, 69, 68, 70, 72, 72, 73, 73, 74, + 74, 75, 75, 75, 77, 77, 77, 76, 76, 75, 75, 75, 75, 82, 80, 77, + 81, 78, 75, 82, 78, 81, 81, 78, 79, 84, 85, 81, 80, 79, 79, 80, + 80, 81, 80, 81, 76, 85, 83, 82, 85, 82, 81, 88, 82, 83, 83, 81, + 82, 87, 86, 81, 89, 85, 85, 87, 86, 82, 82, 85, 91, 92, 92, 93, + 93, 91, 89, 87, 90, 90, 92, 92, 93, 94, 94, 95, 93, 94, 95, 94, + 92, 92, 93, 96, 95, 96, 96, 95, 93, 94, 96, 99, 93, 96, 98, 97, + 94, 92, 93, 94, 99, 92, 98, 92, 92, 88, 90, 26, 13, 45, 67, 78, + 94, 102, 103, 106, 108, 97, 91, 98, 102, 99, 98, 100, 102, 101, 101, 104, + 105, 102, 102, 106, 103, 105, 107, 106, 104, 103, 105, 107, 102, 106, 106, 103, + 103, 105, 105, 101, 106, 105, 104, 103, 103, 103, 103, 104, 105, 106, 106, 57, + 58, 59, 59, 60, 60, 60, 60, 63, 63, 64, 64, 64, 65, 67, 67, 63, + 65, 65, 65, 66, 66, 66, 66, 68, 68, 68, 69, 69, 70, 70, 70, 71, + 72, 70, 69, 70, 71, 73, 74, 69, 71, 71, 71, 69, 69, 70, 73, 72, + 73, 73, 74, 74, 75, 75, 75, 77, 77, 76, 76, 76, 76, 75, 75, 74, + 81, 78, 75, 79, 76, 73, 80, 76, 79, 80, 78, 80, 83, 83, 80, 84, + 84, 82, 82, 82, 83, 84, 85, 81, 88, 86, 83, 88, 86, 83, 90, 91, + 91, 89, 88, 89, 95, 95, 93, 95, 92, 91, 93, 93, 90, 91, 95, 90, + 92, 93, 93, 93, 91, 90, 88, 93, 93, 92, 92, 91, 92, 93, 93, 95, + 95, 96, 95, 95, 96, 99, 101, 96, 97, 96, 95, 93, 92, 94, 97, 94, + 97, 98, 98, 96, 94, 95, 95, 102, 94, 100, 94, 93, 88, 89, 24, 13, + 45, 67, 79, 94, 102, 103, 106, 106, 95, 90, 97, 102, 99, 97, 100, 102, + 101, 101, 104, 105, 102, 102, 106, 104, 105, 106, 106, 104, 104, 105, 106, 101, + 105, 105, 103, 103, 106, 106, 102, 106, 105, 104, 103, 103, 103, 103, 104, 107, + 107, 107, 58, 58, 59, 60, 60, 60, 61, 61, 63, 63, 64, 63, 64, 65, + 67, 67, 64, 65, 65, 66, 66, 66, 67, 67, 68, 68, 68, 69, 69, 70, + 70, 70, 72, 72, 69, 68, 69, 71, 73, 75, 70, 71, 72, 71, 69, 69, + 70, 73, 72, 73, 73, 74, 74, 75, 75, 75, 76, 76, 76, 76, 76, 76, + 76, 75, 74, 80, 77, 74, 78, 75, 72, 80, 75, 77, 79, 80, 80, 81, + 80, 80, 87, 87, 85, 83, 83, 85, 86, 88, 87, 92, 88, 85, 90, 86, + 82, 87, 83, 83, 81, 81, 84, 86, 86, 85, 87, 84, 84, 87, 88, 87, + 88, 93, 91, 93, 92, 92, 90, 89, 90, 91, 91, 90, 90, 90, 90, 91, + 92, 92, 92, 93, 94, 95, 95, 98, 101, 104, 95, 97, 97, 95, 92, 92, + 93, 96, 95, 97, 98, 98, 97, 97, 96, 96, 101, 94, 100, 94, 93, 89, + 90, 24, 14, 46, 68, 79, 94, 102, 103, 106, 105, 94, 89, 97, 101, 98, + 97, 100, 102, 101, 101, 104, 105, 102, 102, 106, 105, 105, 105, 105, 105, 105, + 105, 105, 100, 104, 105, 103, 104, 107, 107, 103, 106, 105, 104, 103, 103, 103, + 103, 104, 107, 107, 106, 58, 58, 60, 60, 60, 61, 61, 61, 62, 62, 63, + 63, 63, 64, 66, 66, 64, 64, 65, 65, 65, 66, 66, 66, 67, 67, 67, + 68, 68, 69, 69, 70, 72, 71, 69, 68, 69, 71, 73, 75, 70, 72, 72, + 72, 71, 70, 72, 73, 72, 73, 73, 74, 74, 75, 75, 75, 76, 76, 76, + 76, 76, 76, 76, 75, 73, 79, 76, 73, 77, 74, 71, 79, 76, 77, 78, + 81, 82, 80, 79, 81, 90, 90, 88, 85, 84, 86, 87, 88, 85, 88, 84, + 82, 87, 84, 79, 83, 81, 81, 81, 84, 86, 85, 81, 80, 84, 80, 78, + 81, 81, 78, 77, 81, 81, 81, 79, 77, 74, 75, 79, 82, 77, 79, 79, + 82, 85, 87, 88, 90, 89, 91, 92, 92, 92, 93, 97, 100, 95, 96, 97, + 96, 94, 92, 91, 94, 96, 97, 97, 98, 98, 98, 97, 96, 98, 91, 99, + 94, 94, 90, 90, 25, 15, 47, 69, 80, 95, 102, 103, 106, 105, 94, 89, + 96, 101, 99, 97, 100, 102, 101, 101, 104, 105, 102, 102, 106, 105, 105, 105, + 105, 105, 105, 105, 105, 100, 104, 105, 103, 104, 107, 107, 103, 106, 105, 104, + 103, 103, 103, 103, 104, 105, 105, 105, 59, 59, 60, 60, 61, 61, 61, 62, + 62, 62, 62, 62, 63, 64, 66, 66, 65, 65, 65, 65, 66, 66, 66, 67, + 67, 67, 67, 68, 68, 69, 69, 70, 71, 71, 70, 69, 70, 71, 73, 74, + 70, 72, 72, 72, 71, 71, 72, 75, 73, 73, 73, 74, 74, 75, 75, 75, + 75, 75, 76, 76, 76, 76, 77, 76, 74, 81, 77, 74, 78, 75, 72, 79, + 80, 78, 78, 82, 82, 79, 78, 82, 89, 89, 87, 86, 85, 84, 85, 85, + 82, 85, 79, 76, 83, 82, 76, 78, 73, 69, 71, 76, 76, 72, 69, 67, + 69, 64, 62, 63, 60, 55, 54, 57, 52, 53, 51, 48, 44, 45, 49, 55, + 48, 50, 54, 59, 64, 68, 70, 72, 85, 88, 91, 91, 90, 91, 93, 96, + 94, 96, 97, 97, 94, 93, 92, 94, 96, 96, 96, 97, 99, 99, 98, 96, + 96, 90, 98, 94, 94, 89, 89, 24, 16, 48, 70, 80, 95, 102, 103, 106, + 105, 94, 89, 97, 102, 100, 98, 102, 102, 101, 101, 104, 105, 102, 102, 106, + 106, 105, 104, 104, 106, 106, 105, 104, 101, 105, 105, 103, 103, 106, 106, 102, + 106, 105, 104, 103, 103, 103, 103, 104, 105, 104, 104, 59, 59, 60, 61, 61, + 61, 62, 62, 63, 63, 64, 64, 64, 65, 67, 68, 65, 65, 65, 66, 66, + 66, 67, 67, 67, 67, 67, 68, 68, 69, 69, 70, 70, 70, 70, 71, 71, + 72, 71, 71, 71, 72, 74, 73, 72, 72, 73, 75, 73, 73, 73, 74, 74, + 75, 75, 75, 75, 75, 75, 76, 76, 77, 77, 77, 75, 83, 79, 76, 80, + 77, 74, 81, 83, 78, 78, 81, 81, 78, 78, 84, 84, 85, 84, 83, 83, + 81, 79, 78, 78, 79, 70, 65, 71, 67, 59, 59, 40, 33, 32, 37, 37, + 32, 28, 30, 33, 28, 26, 28, 25, 22, 20, 23, 22, 25, 28, 27, 23, + 21, 24, 27, 22, 26, 31, 35, 39, 40, 40, 41, 64, 71, 77, 83, 86, + 89, 93, 96, 93, 97, 98, 99, 97, 94, 94, 95, 95, 95, 94, 96, 99, + 99, 98, 95, 96, 90, 98, 93, 93, 87, 86, 20, 17, 48, 70, 81, 95, + 103, 102, 106, 105, 95, 90, 98, 103, 101, 100, 103, 102, 101, 101, 104, 105, + 102, 102, 106, 107, 105, 103, 104, 106, 107, 105, 103, 102, 106, 106, 103, 103, + 105, 105, 101, 106, 105, 104, 103, 103, 103, 103, 104, 106, 105, 104, 59, 59, + 60, 61, 61, 62, 62, 62, 65, 65, 65, 65, 65, 66, 68, 69, 65, 65, + 65, 66, 66, 67, 67, 67, 67, 67, 67, 68, 68, 69, 69, 69, 68, 70, + 71, 72, 72, 72, 71, 70, 71, 72, 74, 74, 72, 72, 74, 75, 73, 73, + 73, 74, 74, 75, 75, 75, 75, 75, 75, 76, 76, 77, 77, 78, 77, 85, + 82, 78, 82, 79, 76, 82, 86, 80, 78, 82, 81, 78, 79, 85, 79, 79, + 78, 78, 77, 75, 73, 71, 66, 66, 54, 47, 48, 42, 32, 28, 30, 19, + 16, 20, 19, 14, 13, 16, 23, 19, 18, 22, 23, 20, 22, 24, 13, 18, + 24, 25, 21, 17, 17, 19, 18, 20, 24, 25, 26, 23, 19, 19, 33, 43, + 54, 64, 73, 80, 86, 91, 90, 95, 98, 99, 97, 96, 96, 97, 96, 94, + 93, 95, 98, 99, 97, 94, 98, 91, 99, 93, 91, 85, 83, 17, 17, 49, + 70, 81, 95, 103, 102, 106, 106, 95, 90, 98, 104, 102, 101, 104, 102, 101, + 101, 104, 105, 102, 102, 106, 107, 105, 103, 104, 106, 107, 105, 103, 103, 107, + 107, 104, 103, 105, 104, 100, 106, 105, 104, 103, 103, 103, 103, 104, 108, 107, + 105, 60, 62, 64, 63, 61, 60, 61, 63, 61, 62, 65, 67, 67, 67, 67, + 66, 64, 63, 61, 61, 62, 64, 67, 69, 70, 69, 68, 66, 66, 67, 68, + 69, 73, 71, 69, 70, 74, 75, 73, 71, 71, 72, 75, 75, 73, 73, 75, + 76, 76, 77, 77, 78, 78, 77, 77, 76, 72, 75, 78, 78, 75, 74, 75, + 79, 84, 84, 84, 83, 83, 83, 84, 84, 77, 80, 82, 81, 76, 74, 75, + 75, 70, 64, 67, 67, 56, 54, 56, 49, 33, 31, 23, 21, 25, 19, 15, + 21, 19, 12, 16, 16, 11, 17, 21, 10, 25, 21, 19, 21, 19, 15, 15, + 17, 8, 18, 16, 23, 16, 6, 22, 27, 28, 22, 28, 10, 25, 14, 20, + 11, 19, 29, 32, 30, 42, 67, 86, 91, 90, 99, 96, 93, 97, 97, 97, + 104, 96, 95, 96, 97, 97, 98, 99, 99, 99, 93, 99, 91, 92, 91, 90, + 21, 16, 54, 67, 84, 99, 99, 107, 104, 107, 90, 89, 101, 101, 102, 105, + 102, 101, 105, 98, 107, 107, 98, 105, 102, 104, 104, 105, 105, 105, 104, 103, + 103, 104, 105, 105, 106, 106, 105, 105, 104, 106, 105, 105, 104, 104, 105, 105, + 106, 101, 103, 104, 57, 59, 61, 60, 58, 58, 59, 60, 63, 64, 65, 65, + 65, 64, 65, 64, 66, 65, 64, 64, 65, 67, 69, 70, 69, 68, 68, 67, + 67, 68, 68, 69, 73, 71, 69, 71, 73, 75, 73, 71, 71, 72, 75, 75, + 73, 73, 75, 76, 76, 76, 77, 77, 77, 77, 76, 76, 78, 80, 81, 80, + 77, 76, 77, 80, 82, 84, 83, 82, 82, 81, 80, 79, 75, 76, 79, 79, + 78, 76, 74, 71, 65, 50, 44, 39, 26, 26, 29, 22, 18, 21, 19, 19, + 24, 19, 17, 26, 18, 14, 17, 17, 11, 17, 19, 10, 27, 22, 21, 23, + 21, 18, 18, 20, 10, 15, 6, 15, 14, 6, 18, 18, 13, 11, 19, 5, + 18, 12, 19, 14, 16, 19, 21, 25, 31, 40, 58, 74, 92, 96, 92, 92, + 103, 105, 100, 102, 99, 97, 97, 97, 97, 97, 97, 97, 100, 95, 101, 93, + 92, 89, 87, 17, 17, 54, 68, 84, 99, 99, 107, 104, 107, 90, 90, 101, + 101, 102, 105, 102, 101, 105, 98, 107, 107, 98, 105, 102, 103, 104, 104, 105, + 105, 104, 104, 103, 104, 105, 105, 106, 106, 105, 105, 104, 106, 105, 105, 104, + 104, 105, 105, 106, 102, 104, 105, 57, 58, 60, 60, 58, 58, 59, 61, 65, + 64, 64, 63, 62, 62, 63, 63, 65, 65, 65, 66, 67, 68, 68, 69, 67, + 68, 68, 69, 69, 68, 68, 68, 71, 70, 69, 70, 72, 73, 73, 72, 72, + 73, 75, 75, 73, 73, 75, 76, 75, 75, 76, 76, 76, 76, 75, 75, 81, + 81, 81, 80, 77, 77, 78, 80, 79, 81, 82, 82, 81, 80, 78, 77, 79, + 76, 73, 71, 67, 62, 55, 46, 44, 27, 22, 21, 13, 17, 21, 14, 7, + 14, 14, 17, 22, 16, 15, 26, 18, 15, 19, 18, 12, 17, 20, 11, 21, + 16, 16, 18, 18, 14, 15, 18, 16, 13, 0, 10, 13, 7, 15, 12, 6, + 8, 15, 5, 14, 11, 19, 16, 18, 13, 14, 23, 22, 19, 31, 52, 76, + 87, 90, 92, 101, 101, 98, 105, 101, 99, 99, 98, 97, 96, 96, 95, 100, + 96, 103, 95, 93, 89, 84, 12, 18, 55, 68, 84, 98, 99, 107, 104, 106, + 91, 91, 102, 101, 101, 104, 101, 101, 105, 98, 107, 107, 98, 105, 102, 103, + 103, 104, 105, 105, 104, 104, 103, 104, 105, 105, 106, 106, 105, 105, 104, 106, + 105, 105, 104, 104, 105, 105, 106, 103, 105, 106, 60, 61, 64, 63, 62, 62, + 63, 65, 64, 63, 62, 61, 61, 62, 64, 65, 62, 63, 64, 65, 66, 66, + 65, 65, 66, 67, 68, 70, 70, 69, 68, 67, 70, 70, 70, 71, 71, 72, + 73, 73, 72, 73, 75, 75, 73, 73, 75, 76, 74, 75, 75, 76, 76, 75, + 75, 74, 78, 78, 77, 76, 76, 76, 77, 78, 79, 78, 79, 80, 78, 76, + 73, 72, 69, 62, 54, 49, 45, 40, 34, 24, 22, 10, 13, 19, 19, 22, + 21, 10, 9, 11, 7, 8, 15, 11, 6, 16, 15, 14, 18, 17, 9, 12, + 17, 9, 12, 9, 7, 10, 9, 7, 8, 11, 15, 13, 0, 7, 11, 4, + 13, 8, 8, 12, 15, 9, 9, 10, 15, 14, 20, 14, 14, 19, 19, 18, + 23, 33, 43, 67, 84, 88, 91, 88, 92, 108, 99, 99, 98, 98, 98, 97, + 97, 97, 98, 95, 103, 96, 95, 89, 83, 10, 19, 56, 68, 84, 98, 99, + 107, 105, 106, 91, 92, 103, 101, 100, 103, 101, 101, 105, 98, 107, 107, 98, + 105, 102, 102, 103, 104, 105, 105, 105, 104, 104, 104, 105, 105, 106, 106, 105, + 105, 104, 106, 105, 105, 104, 104, 105, 105, 106, 104, 106, 106, 60, 62, 65, + 64, 63, 63, 65, 66, 61, 60, 61, 61, 62, 64, 67, 68, 63, 64, 65, + 66, 66, 66, 65, 65, 65, 66, 68, 69, 70, 69, 68, 68, 69, 69, 70, + 70, 71, 71, 73, 73, 72, 73, 75, 75, 73, 73, 76, 76, 74, 75, 75, + 76, 76, 75, 75, 74, 76, 76, 75, 76, 77, 78, 78, 76, 77, 74, 72, + 68, 65, 60, 56, 53, 43, 35, 27, 24, 25, 26, 25, 21, 22, 11, 13, + 18, 15, 17, 14, 2, 15, 10, 0, 1, 11, 10, 5, 11, 14, 14, 19, + 17, 8, 11, 16, 10, 12, 9, 9, 11, 12, 9, 10, 13, 12, 14, 3, + 10, 9, 0, 11, 10, 11, 18, 17, 15, 10, 14, 15, 16, 17, 19, 16, + 13, 18, 27, 27, 21, 22, 45, 61, 73, 84, 87, 90, 102, 96, 97, 98, + 98, 98, 99, 99, 99, 96, 93, 102, 96, 95, 89, 83, 10, 21, 57, 69, + 84, 98, 99, 108, 105, 105, 92, 94, 104, 101, 99, 102, 101, 101, 105, 98, + 107, 107, 98, 105, 102, 102, 103, 104, 105, 105, 105, 105, 105, 104, 105, 105, + 106, 106, 105, 105, 104, 106, 105, 105, 104, 104, 105, 105, 106, 104, 106, 106, + 58, 59, 62, 62, 61, 61, 63, 65, 59, 59, 61, 62, 64, 66, 68, 69, + 68, 68, 68, 68, 68, 68, 68, 68, 65, 66, 67, 68, 69, 69, 69, 69, + 68, 69, 71, 71, 70, 70, 73, 74, 72, 73, 75, 75, 73, 73, 76, 77, + 75, 75, 76, 76, 76, 76, 75, 75, 77, 77, 77, 78, 80, 80, 79, 74, + 69, 63, 58, 52, 45, 39, 34, 31, 29, 24, 17, 13, 13, 16, 16, 16, + 27, 15, 14, 14, 11, 15, 19, 12, 17, 12, 0, 0, 12, 14, 9, 17, + 13, 15, 21, 19, 9, 13, 19, 14, 15, 12, 11, 13, 13, 10, 11, 13, + 10, 16, 9, 16, 11, 0, 12, 13, 11, 18, 14, 19, 10, 22, 19, 20, + 14, 20, 18, 12, 17, 29, 27, 17, 23, 30, 33, 49, 79, 92, 89, 91, + 94, 97, 97, 98, 99, 100, 100, 101, 96, 93, 102, 95, 94, 89, 83, 10, + 22, 58, 69, 84, 97, 99, 108, 106, 104, 92, 95, 106, 101, 98, 101, 100, + 101, 105, 98, 107, 107, 98, 105, 102, 101, 102, 103, 104, 105, 105, 105, 105, + 104, 105, 105, 106, 106, 105, 105, 104, 106, 105, 105, 104, 104, 105, 105, 106, + 103, 105, 106, 55, 57, 60, 60, 59, 60, 61, 63, 60, 61, 63, 65, 66, + 66, 67, 67, 70, 69, 67, 67, 66, 67, 68, 69, 66, 66, 66, 67, 68, + 69, 70, 71, 67, 70, 71, 71, 70, 70, 72, 75, 72, 73, 75, 75, 73, + 73, 76, 77, 76, 76, 77, 77, 77, 77, 76, 76, 78, 77, 77, 79, 80, + 79, 74, 66, 52, 45, 38, 32, 26, 23, 20, 18, 20, 19, 16, 12, 9, + 9, 10, 10, 20, 14, 16, 18, 14, 20, 27, 23, 13, 14, 9, 8, 15, + 12, 11, 22, 11, 13, 20, 18, 8, 12, 19, 14, 16, 13, 12, 13, 13, + 10, 11, 14, 12, 18, 13, 22, 17, 6, 15, 15, 12, 18, 10, 18, 10, + 25, 18, 19, 17, 21, 23, 20, 19, 19, 21, 24, 26, 26, 21, 32, 62, + 78, 82, 89, 95, 99, 99, 99, 99, 99, 99, 99, 99, 95, 103, 94, 93, + 87, 81, 8, 23, 59, 70, 84, 97, 99, 108, 106, 103, 92, 96, 106, 101, + 98, 101, 100, 101, 105, 98, 107, 107, 98, 105, 102, 101, 102, 103, 104, 105, + 106, 106, 105, 104, 105, 105, 106, 106, 105, 105, 104, 106, 105, 105, 104, 104, + 105, 105, 106, 102, 103, 104, 56, 58, 60, 60, 60, 60, 62, 64, 62, 64, + 65, 67, 67, 67, 66, 65, 69, 67, 65, 63, 63, 65, 67, 68, 67, 67, + 66, 65, 66, 68, 70, 71, 68, 70, 72, 71, 69, 69, 71, 74, 71, 72, + 75, 75, 73, 74, 76, 77, 75, 75, 76, 77, 78, 77, 78, 77, 78, 78, + 75, 76, 75, 69, 62, 52, 33, 26, 22, 18, 15, 17, 17, 17, 3, 7, + 11, 14, 12, 12, 14, 17, 11, 11, 19, 23, 16, 16, 17, 11, 7, 15, + 15, 13, 13, 5, 5, 20, 10, 10, 18, 16, 7, 11, 19, 14, 23, 19, + 17, 19, 18, 14, 14, 17, 15, 20, 14, 25, 23, 13, 19, 16, 15, 19, + 7, 17, 8, 26, 14, 16, 20, 20, 27, 30, 21, 9, 15, 31, 21, 28, + 24, 23, 36, 50, 66, 90, 95, 99, 99, 98, 99, 98, 97, 97, 103, 98, + 104, 94, 90, 84, 78, 5, 24, 60, 70, 84, 97, 99, 107, 105, 103, 92, + 97, 107, 101, 97, 100, 100, 101, 105, 98, 107, 107, 98, 105, 102, 101, 102, + 102, 103, 104, 105, 105, 105, 104, 105, 105, 106, 106, 105, 105, 104, 106, 105, + 105, 104, 104, 105, 105, 106, 101, 103, 103, 61, 61, 61, 61, 62, 63, 64, + 65, 65, 65, 65, 65, 64, 66, 70, 74, 68, 68, 68, 69, 69, 70, 70, + 69, 65, 66, 67, 67, 68, 69, 69, 70, 72, 72, 73, 72, 73, 71, 70, + 70, 75, 74, 73, 73, 73, 75, 76, 76, 69, 70, 71, 73, 75, 77, 78, + 78, 88, 74, 74, 81, 68, 51, 38, 23, 22, 15, 12, 13, 14, 12, 8, + 3, 5, 7, 13, 15, 13, 17, 22, 26, 16, 14, 18, 38, 10, 21, 21, + 21, 12, 22, 8, 13, 17, 7, 14, 19, 10, 22, 25, 15, 12, 19, 20, + 12, 26, 21, 24, 23, 13, 12, 16, 11, 19, 26, 22, 19, 23, 19, 15, + 22, 25, 21, 17, 16, 18, 22, 22, 22, 10, 19, 23, 17, 13, 14, 16, + 16, 13, 18, 24, 25, 22, 27, 47, 73, 95, 90, 86, 94, 102, 102, 99, + 98, 101, 98, 96, 96, 83, 89, 75, 6, 27, 62, 71, 84, 98, 99, 106, + 101, 103, 83, 96, 102, 102, 107, 100, 104, 101, 98, 105, 107, 99, 101, 106, + 102, 104, 104, 105, 105, 105, 104, 103, 103, 103, 104, 104, 104, 104, 103, 102, + 101, 105, 105, 105, 104, 104, 103, 103, 103, 101, 101, 102, 61, 61, 60, 59, + 59, 59, 61, 61, 65, 65, 67, 66, 65, 66, 70, 72, 68, 69, 69, 70, + 69, 70, 70, 70, 66, 66, 67, 68, 68, 68, 69, 69, 72, 72, 72, 72, + 71, 70, 70, 71, 73, 74, 74, 74, 74, 77, 77, 76, 74, 73, 75, 75, + 77, 79, 80, 81, 81, 75, 76, 72, 52, 36, 27, 16, 15, 11, 9, 9, + 12, 12, 11, 8, 10, 10, 12, 15, 18, 20, 21, 19, 18, 12, 20, 22, + 17, 13, 23, 25, 14, 23, 10, 16, 19, 6, 11, 16, 9, 17, 21, 18, + 19, 26, 27, 23, 21, 17, 21, 22, 13, 15, 20, 17, 21, 28, 24, 21, + 25, 21, 17, 23, 21, 17, 13, 15, 18, 20, 16, 12, 21, 24, 22, 19, + 18, 21, 18, 12, 12, 16, 21, 23, 20, 21, 32, 54, 80, 93, 97, 93, + 96, 103, 105, 101, 101, 100, 97, 99, 86, 89, 74, 5, 27, 62, 70, 85, + 98, 100, 106, 102, 104, 85, 97, 103, 102, 106, 98, 101, 101, 99, 105, 107, + 99, 101, 106, 102, 101, 102, 102, 103, 103, 102, 101, 101, 104, 105, 105, 105, + 105, 104, 103, 102, 105, 105, 105, 104, 104, 103, 103, 103, 101, 101, 102, 63, + 62, 61, 60, 59, 59, 60, 60, 65, 66, 68, 68, 66, 66, 68, 70, 68, + 69, 68, 69, 69, 70, 70, 70, 67, 67, 67, 68, 68, 68, 69, 69, 72, + 72, 70, 69, 69, 70, 72, 73, 72, 74, 75, 77, 77, 78, 77, 76, 78, + 77, 76, 76, 77, 78, 79, 81, 77, 75, 76, 61, 34, 25, 23, 15, 14, + 9, 8, 9, 11, 14, 15, 15, 15, 13, 12, 15, 20, 21, 16, 12, 17, + 13, 20, 6, 25, 9, 23, 30, 13, 24, 12, 19, 22, 10, 13, 17, 10, + 11, 14, 18, 24, 28, 28, 27, 21, 17, 20, 22, 15, 17, 22, 19, 21, + 28, 24, 20, 24, 20, 16, 23, 17, 15, 13, 16, 20, 19, 14, 8, 29, + 26, 20, 18, 22, 24, 17, 8, 14, 15, 19, 22, 21, 19, 23, 36, 56, + 85, 96, 88, 85, 96, 102, 97, 101, 100, 99, 101, 88, 92, 75, 4, 26, + 62, 70, 85, 99, 101, 107, 103, 105, 86, 98, 103, 102, 105, 97, 100, 102, + 99, 105, 108, 101, 102, 106, 102, 101, 101, 102, 103, 103, 102, 102, 101, 105, + 106, 106, 106, 106, 105, 104, 103, 105, 105, 105, 104, 104, 103, 103, 103, 101, + 101, 102, 64, 64, 63, 62, 62, 62, 64, 64, 64, 66, 69, 69, 67, 66, + 67, 68, 68, 69, 68, 69, 69, 70, 70, 70, 67, 68, 68, 69, 68, 69, + 69, 69, 72, 72, 69, 69, 68, 70, 72, 75, 72, 73, 76, 78, 79, 79, + 78, 76, 77, 76, 74, 74, 74, 76, 78, 79, 78, 75, 69, 46, 20, 19, + 23, 14, 12, 9, 8, 8, 11, 13, 16, 17, 14, 13, 13, 15, 19, 17, + 13, 8, 15, 18, 15, 5, 24, 12, 15, 30, 12, 23, 13, 21, 26, 13, + 17, 20, 16, 11, 10, 18, 23, 23, 21, 23, 24, 19, 22, 22, 14, 16, + 21, 17, 18, 25, 21, 17, 20, 16, 12, 19, 15, 16, 18, 19, 20, 19, + 18, 18, 27, 22, 17, 16, 19, 21, 15, 8, 17, 15, 16, 21, 22, 19, + 19, 25, 37, 66, 84, 84, 84, 91, 98, 97, 101, 101, 101, 103, 90, 92, + 75, 3, 26, 62, 70, 86, 99, 101, 108, 104, 105, 85, 98, 103, 102, 105, + 98, 101, 103, 100, 106, 108, 101, 102, 106, 101, 103, 103, 104, 105, 105, 105, + 104, 104, 105, 105, 106, 106, 105, 104, 103, 103, 105, 105, 105, 104, 104, 103, + 103, 103, 102, 102, 102, 62, 62, 62, 62, 63, 64, 67, 68, 64, 66, 69, + 69, 67, 66, 67, 68, 68, 68, 68, 69, 69, 70, 70, 70, 68, 69, 69, + 69, 69, 70, 69, 69, 72, 73, 70, 69, 70, 72, 74, 76, 72, 74, 76, + 79, 79, 80, 79, 77, 75, 75, 74, 74, 74, 76, 77, 77, 78, 66, 52, + 30, 10, 16, 20, 12, 12, 11, 10, 8, 9, 10, 13, 15, 7, 11, 15, + 16, 15, 12, 11, 12, 13, 25, 11, 15, 16, 18, 6, 24, 15, 27, 15, + 23, 26, 14, 17, 20, 20, 13, 12, 17, 21, 20, 18, 19, 24, 18, 21, + 21, 13, 14, 21, 19, 16, 23, 19, 16, 19, 15, 11, 17, 10, 16, 21, + 20, 16, 16, 21, 27, 21, 20, 18, 18, 17, 15, 14, 16, 21, 16, 14, + 19, 22, 21, 20, 23, 30, 45, 63, 81, 90, 91, 95, 99, 100, 101, 101, + 104, 91, 93, 75, 2, 28, 63, 71, 86, 100, 101, 108, 104, 102, 83, 96, + 102, 102, 106, 100, 103, 104, 101, 107, 109, 101, 102, 106, 101, 102, 103, 104, + 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 103, 102, 101, 105, 105, 105, + 104, 104, 103, 103, 103, 102, 102, 103, 58, 58, 59, 60, 61, 63, 66, 67, + 65, 66, 68, 68, 66, 66, 68, 70, 68, 68, 68, 69, 69, 70, 70, 70, + 69, 69, 69, 70, 70, 70, 69, 70, 74, 73, 71, 72, 73, 75, 75, 77, + 74, 76, 77, 78, 79, 80, 79, 79, 77, 76, 77, 77, 77, 76, 74, 74, + 68, 49, 34, 19, 8, 12, 15, 7, 11, 11, 10, 10, 9, 9, 11, 13, + 6, 11, 16, 17, 13, 11, 12, 15, 14, 21, 8, 23, 12, 20, 4, 17, + 21, 30, 18, 23, 26, 12, 15, 18, 18, 17, 16, 17, 19, 21, 21, 20, + 20, 15, 18, 19, 12, 16, 23, 22, 16, 23, 20, 16, 20, 17, 13, 20, + 7, 14, 20, 18, 13, 13, 20, 28, 18, 20, 22, 23, 18, 13, 17, 25, + 23, 18, 15, 18, 22, 21, 21, 25, 24, 25, 39, 63, 81, 86, 90, 96, + 99, 100, 100, 102, 90, 93, 75, 4, 30, 64, 72, 87, 100, 101, 107, 103, + 101, 83, 96, 102, 103, 107, 101, 104, 105, 102, 107, 109, 102, 102, 106, 101, + 99, 100, 101, 102, 103, 103, 103, 103, 103, 103, 104, 104, 103, 103, 102, 101, + 105, 105, 105, 104, 104, 103, 103, 103, 103, 103, 103, 60, 60, 60, 60, 61, + 63, 65, 66, 65, 65, 67, 66, 65, 66, 70, 72, 68, 68, 68, 69, 69, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 73, 74, 74, 75, 77, + 78, 77, 79, 76, 76, 76, 77, 78, 80, 80, 82, 77, 79, 79, 78, 75, + 71, 66, 63, 53, 33, 24, 20, 12, 10, 10, 6, 9, 11, 13, 13, 11, + 10, 12, 14, 14, 14, 16, 15, 15, 14, 14, 14, 17, 10, 11, 19, 12, + 14, 14, 14, 18, 27, 15, 21, 25, 13, 18, 22, 16, 22, 21, 14, 13, + 19, 21, 17, 20, 14, 18, 18, 10, 14, 22, 20, 14, 21, 18, 15, 20, + 17, 14, 21, 11, 14, 17, 18, 17, 16, 17, 18, 21, 20, 22, 25, 19, + 15, 19, 28, 22, 17, 16, 21, 23, 20, 19, 22, 17, 18, 24, 38, 60, + 78, 88, 91, 98, 99, 98, 100, 87, 90, 75, 5, 32, 66, 74, 87, 100, + 100, 106, 102, 103, 84, 97, 103, 102, 106, 99, 102, 106, 102, 108, 110, 102, + 102, 107, 102, 99, 100, 101, 102, 103, 103, 103, 103, 104, 104, 105, 105, 104, + 103, 103, 102, 105, 105, 105, 104, 104, 103, 103, 103, 103, 103, 103, 64, 64, + 63, 63, 63, 64, 66, 67, 65, 65, 66, 65, 64, 66, 71, 74, 68, 68, + 68, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 73, 75, + 75, 77, 79, 79, 79, 79, 77, 77, 76, 76, 77, 79, 80, 82, 76, 77, + 76, 75, 70, 64, 57, 52, 41, 23, 21, 26, 18, 9, 8, 7, 5, 10, + 14, 15, 12, 12, 15, 17, 21, 18, 14, 15, 18, 18, 16, 12, 20, 0, + 16, 13, 16, 8, 25, 14, 12, 22, 11, 19, 25, 16, 25, 30, 13, 24, + 23, 11, 6, 14, 17, 11, 24, 18, 19, 18, 8, 11, 18, 15, 11, 18, + 14, 13, 17, 16, 13, 21, 16, 16, 16, 21, 23, 23, 15, 10, 23, 19, + 21, 23, 19, 14, 17, 26, 21, 19, 19, 23, 22, 19, 16, 17, 17, 24, + 23, 24, 43, 75, 91, 88, 95, 97, 95, 98, 85, 90, 75, 6, 33, 67, + 74, 88, 100, 100, 105, 101, 105, 86, 98, 103, 102, 105, 97, 100, 106, 103, + 108, 110, 102, 102, 107, 102, 101, 102, 103, 104, 105, 106, 106, 106, 105, 106, + 106, 106, 106, 105, 104, 103, 105, 105, 105, 104, 104, 103, 103, 103, 103, 103, + 103, 58, 63, 64, 61, 60, 63, 65, 64, 66, 66, 67, 68, 68, 69, 70, + 70, 71, 70, 69, 68, 68, 68, 68, 68, 64, 69, 72, 72, 73, 75, 74, + 70, 74, 72, 72, 75, 77, 74, 75, 79, 77, 75, 74, 74, 75, 76, 75, + 74, 79, 80, 75, 65, 65, 63, 48, 28, 26, 23, 19, 15, 11, 9, 9, + 8, 12, 10, 8, 8, 10, 12, 12, 12, 15, 21, 22, 16, 13, 14, 13, + 9, 25, 16, 10, 12, 16, 16, 14, 14, 16, 16, 17, 19, 19, 18, 22, + 28, 26, 20, 24, 24, 13, 11, 16, 14, 21, 17, 17, 20, 17, 13, 15, + 21, 15, 20, 20, 14, 11, 14, 20, 22, 14, 19, 21, 20, 21, 24, 23, + 20, 24, 27, 15, 24, 28, 25, 30, 21, 15, 24, 22, 18, 19, 15, 12, + 19, 14, 14, 14, 19, 32, 50, 71, 85, 95, 92, 90, 108, 84, 91, 64, + 6, 34, 65, 73, 89, 101, 98, 104, 102, 102, 88, 101, 103, 101, 107, 101, + 102, 104, 106, 108, 107, 104, 102, 102, 103, 107, 107, 105, 104, 104, 103, 102, + 102, 105, 105, 105, 104, 104, 103, 103, 103, 104, 104, 104, 104, 104, 104, 104, + 104, 106, 105, 105, 58, 63, 64, 61, 60, 63, 65, 64, 66, 66, 67, 68, + 68, 69, 70, 70, 68, 68, 68, 68, 68, 69, 70, 70, 66, 70, 72, 71, + 71, 74, 74, 70, 74, 72, 72, 75, 77, 74, 76, 79, 74, 75, 76, 77, + 79, 78, 77, 76, 71, 73, 73, 66, 58, 45, 30, 15, 22, 19, 16, 12, + 10, 8, 5, 6, 10, 10, 9, 9, 9, 10, 12, 13, 6, 13, 15, 13, + 12, 16, 16, 13, 20, 13, 9, 13, 15, 13, 12, 14, 21, 18, 17, 21, + 21, 20, 22, 28, 25, 21, 27, 29, 19, 16, 17, 13, 18, 16, 17, 21, + 20, 15, 15, 20, 15, 18, 18, 16, 18, 22, 22, 19, 19, 22, 23, 21, + 21, 24, 23, 20, 26, 28, 16, 23, 27, 23, 29, 19, 26, 30, 24, 21, + 26, 22, 17, 20, 6, 10, 15, 18, 24, 36, 54, 69, 94, 92, 89, 104, + 84, 97, 67, 9, 34, 65, 73, 90, 102, 99, 103, 102, 101, 87, 101, 103, + 101, 107, 101, 103, 103, 105, 107, 107, 104, 103, 103, 104, 105, 105, 104, 104, + 104, 104, 104, 104, 105, 105, 105, 104, 104, 103, 103, 103, 104, 104, 104, 104, + 104, 104, 104, 104, 105, 105, 104, 59, 63, 65, 61, 60, 63, 66, 64, 66, + 66, 67, 68, 68, 69, 70, 70, 66, 66, 66, 67, 68, 69, 71, 72, 68, + 71, 71, 69, 70, 74, 74, 71, 73, 71, 71, 76, 77, 74, 75, 78, 72, + 75, 78, 79, 77, 76, 75, 74, 70, 66, 64, 57, 41, 23, 13, 10, 18, + 16, 13, 11, 9, 7, 5, 4, 7, 10, 12, 11, 8, 8, 13, 16, 4, + 10, 14, 14, 14, 17, 19, 17, 15, 11, 11, 15, 15, 12, 12, 16, 21, + 16, 14, 17, 19, 18, 17, 21, 22, 21, 30, 34, 25, 22, 21, 12, 13, + 15, 17, 22, 21, 17, 15, 18, 15, 16, 15, 16, 22, 27, 24, 17, 21, + 24, 23, 19, 19, 22, 23, 20, 25, 28, 16, 23, 25, 20, 25, 16, 26, + 28, 19, 17, 25, 23, 14, 15, 3, 11, 17, 20, 19, 24, 39, 52, 83, + 87, 87, 96, 82, 101, 64, 8, 34, 66, 74, 91, 103, 99, 103, 101, 100, + 85, 100, 102, 101, 107, 102, 104, 101, 104, 106, 106, 105, 104, 104, 105, 103, + 103, 104, 105, 105, 106, 106, 106, 105, 105, 104, 104, 104, 104, 103, 103, 104, + 104, 104, 104, 104, 104, 104, 104, 103, 103, 104, 59, 64, 65, 62, 61, 63, + 66, 64, 66, 66, 67, 68, 68, 69, 70, 70, 67, 66, 66, 67, 68, 69, + 70, 71, 69, 72, 71, 68, 69, 73, 74, 72, 73, 70, 71, 76, 76, 75, + 75, 78, 74, 76, 77, 76, 73, 71, 70, 70, 78, 62, 46, 37, 22, 9, + 8, 17, 14, 13, 12, 10, 9, 7, 6, 5, 5, 10, 14, 13, 8, 8, + 13, 18, 12, 15, 18, 18, 17, 18, 17, 17, 14, 14, 15, 19, 18, 15, + 15, 20, 23, 18, 15, 17, 18, 17, 16, 18, 20, 19, 28, 31, 25, 27, + 26, 17, 14, 15, 18, 19, 19, 18, 18, 20, 17, 19, 19, 18, 21, 26, + 24, 20, 21, 23, 22, 18, 18, 22, 23, 21, 22, 26, 16, 22, 24, 19, + 26, 18, 20, 22, 15, 13, 19, 18, 13, 15, 10, 14, 18, 20, 19, 22, + 30, 40, 62, 76, 86, 90, 77, 99, 55, 7, 34, 66, 75, 92, 104, 99, + 103, 100, 98, 84, 99, 102, 101, 108, 102, 104, 100, 104, 106, 106, 105, 105, + 105, 106, 104, 104, 104, 105, 105, 106, 105, 105, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 102, 103, 103, 60, 64, 66, + 62, 61, 64, 66, 65, 66, 66, 67, 68, 68, 69, 70, 70, 69, 68, 68, + 67, 67, 68, 68, 69, 70, 72, 73, 69, 70, 74, 74, 71, 73, 71, 71, + 76, 76, 74, 75, 78, 76, 76, 74, 74, 71, 70, 71, 71, 74, 53, 33, + 23, 14, 8, 11, 19, 11, 11, 11, 11, 10, 9, 8, 7, 5, 10, 15, + 14, 11, 10, 14, 19, 18, 19, 21, 22, 20, 16, 16, 17, 15, 15, 16, + 21, 19, 15, 16, 21, 26, 21, 18, 20, 20, 18, 17, 20, 18, 18, 24, + 25, 21, 28, 31, 20, 16, 17, 17, 15, 15, 17, 21, 24, 19, 23, 23, + 17, 15, 19, 23, 23, 17, 19, 18, 15, 16, 22, 24, 22, 17, 22, 14, + 22, 24, 19, 28, 21, 19, 25, 21, 17, 20, 18, 17, 25, 18, 16, 14, + 16, 19, 24, 28, 32, 42, 62, 85, 87, 76, 95, 45, 9, 36, 67, 76, + 92, 103, 99, 103, 100, 98, 84, 98, 101, 100, 107, 102, 104, 101, 104, 106, + 106, 105, 105, 106, 107, 106, 106, 106, 105, 105, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 102, 103, 103, + 60, 64, 66, 63, 62, 64, 67, 65, 66, 66, 67, 68, 68, 69, 70, 70, + 70, 69, 68, 67, 67, 67, 67, 68, 69, 72, 73, 71, 71, 74, 74, 70, + 73, 70, 71, 75, 75, 74, 74, 78, 76, 74, 72, 72, 73, 75, 72, 69, + 53, 40, 27, 22, 18, 13, 12, 13, 8, 9, 11, 13, 12, 12, 11, 9, + 8, 11, 15, 16, 15, 14, 17, 19, 17, 17, 19, 22, 20, 16, 16, 19, + 19, 15, 16, 17, 19, 16, 16, 18, 22, 19, 19, 19, 16, 12, 15, 20, + 20, 19, 22, 21, 17, 28, 33, 22, 20, 21, 19, 14, 14, 19, 23, 24, + 21, 25, 25, 17, 13, 15, 20, 23, 14, 18, 19, 16, 18, 22, 24, 22, + 15, 22, 14, 22, 23, 19, 28, 24, 19, 26, 24, 19, 20, 18, 17, 29, + 22, 17, 12, 12, 16, 22, 24, 26, 31, 49, 77, 83, 78, 94, 37, 17, + 38, 69, 76, 91, 102, 98, 104, 102, 98, 84, 98, 101, 100, 106, 101, 103, + 102, 104, 106, 106, 105, 104, 105, 106, 107, 107, 106, 105, 105, 104, 103, 103, + 103, 103, 104, 104, 104, 104, 105, 105, 104, 104, 104, 104, 104, 104, 104, 104, + 103, 103, 104, 60, 65, 66, 63, 62, 65, 67, 66, 66, 66, 67, 68, 68, + 69, 70, 70, 68, 68, 67, 67, 67, 68, 69, 69, 68, 72, 74, 72, 72, + 74, 73, 68, 72, 69, 71, 75, 76, 74, 74, 77, 77, 74, 70, 71, 74, + 71, 62, 52, 30, 30, 27, 20, 14, 12, 11, 8, 5, 8, 11, 14, 14, + 15, 15, 13, 12, 13, 15, 18, 19, 20, 20, 20, 20, 19, 21, 25, 24, + 18, 18, 21, 25, 18, 14, 17, 20, 18, 17, 18, 19, 20, 21, 21, 15, + 11, 15, 24, 23, 23, 24, 21, 16, 28, 31, 17, 20, 24, 22, 17, 15, + 20, 24, 23, 18, 21, 21, 16, 15, 19, 20, 19, 17, 20, 21, 19, 20, + 23, 23, 20, 16, 23, 16, 23, 24, 18, 28, 23, 23, 26, 20, 15, 18, + 16, 13, 23, 21, 19, 16, 15, 16, 18, 20, 23, 28, 35, 61, 72, 77, + 93, 29, 20, 41, 70, 75, 90, 100, 98, 104, 104, 99, 85, 99, 101, 99, + 105, 99, 101, 104, 105, 107, 107, 105, 104, 104, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 103, 103, 103, 104, 104, 105, 105, 105, 104, 104, 104, 104, 104, + 104, 104, 104, 105, 105, 104, 60, 66, 66, 64, 62, 66, 67, 66, 66, 66, + 67, 68, 68, 69, 70, 70, 67, 66, 66, 67, 68, 69, 71, 72, 67, 72, + 75, 73, 73, 75, 73, 67, 72, 70, 71, 76, 78, 76, 77, 81, 79, 74, + 68, 68, 68, 60, 43, 27, 12, 21, 25, 14, 6, 9, 12, 12, 6, 8, + 11, 15, 16, 16, 15, 14, 13, 12, 14, 17, 21, 22, 21, 19, 26, 23, + 25, 29, 26, 19, 18, 22, 32, 21, 15, 18, 21, 21, 21, 20, 25, 28, + 32, 31, 23, 18, 24, 34, 26, 26, 27, 23, 17, 27, 28, 12, 19, 24, + 25, 20, 17, 22, 23, 20, 17, 18, 17, 17, 21, 25, 22, 15, 20, 24, + 25, 22, 22, 25, 22, 18, 19, 26, 18, 24, 24, 18, 27, 22, 30, 29, + 19, 14, 21, 20, 13, 17, 19, 23, 24, 21, 18, 16, 18, 22, 27, 23, + 44, 56, 71, 86, 19, 13, 39, 68, 73, 87, 99, 97, 106, 106, 102, 88, + 101, 102, 99, 105, 97, 99, 104, 106, 108, 107, 105, 102, 102, 103, 103, 103, + 104, 105, 105, 105, 106, 106, 103, 103, 103, 104, 104, 105, 105, 105, 104, 104, + 104, 104, 104, 104, 104, 104, 106, 105, 105, 63, 63, 62, 63, 63, 66, 68, + 69, 70, 66, 64, 68, 69, 67, 65, 68, 67, 73, 69, 67, 73, 71, 66, + 72, 73, 76, 76, 73, 74, 78, 79, 75, 67, 69, 74, 78, 79, 80, 81, + 81, 82, 75, 69, 66, 57, 40, 26, 15, 14, 14, 14, 11, 9, 12, 13, + 14, 16, 12, 16, 16, 11, 16, 20, 12, 11, 22, 20, 17, 22, 26, 24, + 29, 28, 30, 29, 28, 29, 30, 23, 13, 41, 18, 22, 32, 21, 20, 27, + 20, 38, 28, 24, 29, 33, 32, 31, 32, 37, 26, 18, 22, 27, 29, 27, + 26, 33, 29, 23, 21, 22, 24, 23, 23, 23, 26, 26, 23, 20, 18, 22, + 25, 28, 28, 28, 20, 15, 29, 32, 17, 27, 20, 28, 37, 23, 13, 16, + 20, 28, 25, 20, 19, 19, 19, 19, 20, 28, 25, 19, 17, 18, 20, 19, + 18, 32, 25, 28, 39, 48, 51, 31, 0, 41, 68, 82, 85, 96, 101, 101, + 105, 107, 89, 103, 104, 99, 102, 94, 99, 103, 105, 106, 106, 104, 104, 105, + 106, 104, 103, 103, 104, 105, 106, 106, 106, 108, 107, 105, 103, 102, 102, 102, + 103, 105, 105, 105, 105, 105, 105, 105, 105, 107, 107, 106, 67, 66, 66, 65, + 66, 68, 69, 70, 70, 65, 64, 68, 69, 67, 66, 67, 68, 74, 69, 67, + 73, 71, 67, 73, 69, 72, 73, 71, 71, 76, 76, 72, 74, 73, 76, 79, + 80, 83, 83, 83, 76, 74, 69, 55, 33, 16, 16, 23, 18, 15, 12, 10, + 8, 11, 13, 16, 21, 14, 18, 22, 15, 18, 19, 15, 32, 41, 36, 29, + 35, 38, 40, 46, 34, 35, 35, 35, 38, 41, 38, 30, 32, 18, 23, 31, + 27, 34, 43, 38, 31, 32, 39, 50, 53, 49, 47, 50, 49, 47, 45, 46, + 41, 38, 40, 47, 39, 38, 36, 38, 40, 42, 39, 38, 40, 43, 44, 43, + 42, 42, 44, 47, 27, 29, 39, 40, 37, 40, 37, 19, 38, 28, 34, 42, + 33, 28, 32, 34, 27, 25, 22, 22, 23, 22, 19, 18, 16, 18, 20, 24, + 28, 28, 24, 22, 23, 24, 32, 31, 24, 29, 32, 26, 42, 61, 70, 84, + 100, 101, 100, 107, 102, 90, 107, 108, 101, 103, 96, 102, 102, 105, 106, 106, + 104, 104, 105, 106, 103, 103, 103, 104, 105, 106, 106, 107, 108, 107, 105, 104, + 103, 103, 103, 104, 105, 105, 105, 105, 105, 105, 105, 105, 107, 106, 105, 68, + 67, 67, 66, 66, 67, 68, 68, 70, 65, 64, 68, 70, 67, 66, 68, 68, + 73, 69, 67, 74, 72, 68, 73, 68, 72, 73, 71, 71, 75, 75, 72, 78, + 76, 77, 77, 78, 79, 80, 79, 75, 68, 56, 38, 18, 8, 16, 30, 19, + 14, 10, 8, 8, 9, 10, 11, 22, 12, 17, 27, 27, 31, 42, 48, 50, + 67, 72, 72, 77, 73, 64, 63, 66, 67, 67, 67, 70, 74, 71, 64, 73, + 64, 62, 58, 49, 55, 58, 50, 60, 67, 78, 86, 87, 85, 87, 94, 98, + 97, 98, 97, 92, 86, 87, 92, 106, 105, 103, 101, 99, 93, 86, 80, 71, + 73, 74, 73, 71, 70, 72, 72, 66, 59, 62, 63, 58, 61, 64, 55, 51, + 37, 38, 44, 39, 37, 41, 40, 31, 34, 37, 40, 41, 35, 25, 19, 27, + 25, 21, 18, 17, 17, 18, 20, 19, 23, 30, 27, 14, 19, 33, 38, 41, + 53, 59, 75, 95, 98, 97, 106, 96, 87, 107, 108, 101, 104, 99, 103, 103, + 105, 107, 107, 105, 105, 106, 107, 104, 104, 105, 105, 105, 105, 105, 106, 108, + 107, 106, 105, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 106, + 106, 105, 66, 65, 65, 65, 64, 64, 65, 65, 70, 65, 64, 68, 70, 68, + 67, 69, 69, 73, 70, 68, 74, 72, 68, 75, 72, 76, 76, 74, 74, 78, + 78, 75, 79, 76, 74, 73, 74, 75, 75, 74, 75, 54, 32, 23, 20, 19, + 20, 22, 18, 13, 10, 10, 11, 11, 9, 11, 22, 11, 19, 36, 45, 60, + 85, 103, 121, 140, 147, 149, 155, 150, 139, 137, 139, 141, 141, 140, 141, 142, + 136, 127, 132, 132, 130, 123, 120, 131, 135, 127, 138, 141, 142, 143, 143, 146, + 155, 164, 169, 165, 161, 165, 166, 162, 156, 155, 157, 158, 159, 161, 160, 159, + 155, 153, 153, 152, 152, 150, 147, 144, 143, 143, 144, 130, 127, 127, 118, 117, + 123, 121, 111, 93, 87, 90, 85, 83, 86, 81, 89, 77, 58, 44, 36, 38, + 41, 42, 38, 33, 30, 25, 21, 19, 19, 18, 24, 18, 21, 23, 18, 23, + 24, 19, 31, 47, 51, 59, 77, 90, 94, 103, 94, 85, 102, 103, 99, 106, + 99, 101, 104, 105, 107, 107, 105, 105, 106, 107, 105, 105, 105, 105, 105, 105, + 104, 105, 108, 107, 107, 106, 106, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 104, 65, 65, 65, 65, 65, 65, 64, 64, 70, 65, 65, + 69, 71, 69, 68, 70, 68, 73, 69, 67, 74, 72, 70, 76, 74, 77, 78, + 75, 76, 80, 80, 77, 80, 77, 74, 74, 73, 72, 70, 65, 56, 35, 18, + 17, 24, 24, 18, 14, 18, 14, 14, 18, 18, 13, 11, 14, 21, 19, 38, + 65, 81, 102, 128, 146, 151, 161, 154, 148, 155, 161, 165, 173, 181, 184, 186, + 186, 187, 185, 176, 166, 176, 183, 180, 172, 174, 182, 184, 182, 186, 183, 179, + 175, 177, 183, 190, 195, 189, 190, 191, 195, 191, 186, 184, 189, 190, 190, 187, + 186, 182, 181, 179, 180, 177, 175, 173, 172, 169, 168, 167, 166, 178, 171, 177, + 182, 173, 165, 163, 156, 167, 148, 143, 143, 137, 138, 139, 131, 129, 122, 111, + 99, 85, 72, 58, 47, 33, 32, 35, 38, 37, 33, 28, 23, 26, 15, 15, + 20, 18, 19, 16, 8, 16, 41, 42, 37, 51, 74, 88, 96, 94, 84, 98, + 97, 97, 109, 103, 100, 105, 106, 108, 108, 105, 105, 107, 108, 106, 106, 105, + 105, 105, 105, 104, 104, 107, 107, 107, 107, 106, 106, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 104, 104, 103, 66, 66, 67, 68, 68, 68, 67, 67, + 69, 65, 65, 69, 71, 70, 69, 71, 68, 73, 69, 67, 75, 74, 71, 77, + 73, 76, 76, 73, 75, 78, 78, 77, 81, 79, 77, 75, 73, 69, 60, 52, + 28, 21, 18, 20, 20, 15, 11, 12, 13, 11, 13, 18, 16, 9, 10, 17, + 33, 45, 74, 102, 117, 136, 152, 158, 164, 173, 167, 161, 169, 175, 179, 188, + 175, 179, 182, 183, 186, 186, 178, 168, 186, 195, 189, 181, 185, 184, 181, 187, + 186, 187, 186, 183, 186, 191, 193, 191, 179, 190, 201, 200, 186, 177, 186, 201, + 203, 201, 197, 192, 188, 187, 189, 192, 190, 188, 186, 184, 186, 188, 188, 188, + 182, 179, 181, 182, 172, 172, 175, 169, 176, 162, 160, 161, 157, 160, 161, 152, + 146, 151, 157, 158, 151, 132, 111, 92, 60, 48, 37, 29, 29, 28, 28, 24, + 24, 15, 18, 20, 10, 9, 16, 20, 10, 31, 32, 23, 35, 53, 68, 80, + 87, 82, 98, 97, 97, 112, 107, 103, 105, 106, 108, 108, 106, 106, 107, 108, + 107, 107, 105, 105, 105, 105, 103, 103, 105, 105, 106, 106, 106, 106, 105, 104, + 105, 105, 105, 105, 105, 105, 105, 105, 103, 103, 103, 64, 65, 67, 68, 69, + 69, 68, 67, 69, 65, 65, 69, 72, 70, 70, 71, 68, 73, 70, 68, 75, + 74, 71, 77, 72, 76, 76, 73, 73, 76, 77, 76, 81, 79, 76, 73, 69, + 59, 44, 30, 14, 14, 18, 21, 17, 9, 7, 12, 5, 4, 9, 16, 16, + 12, 21, 39, 62, 82, 110, 127, 135, 153, 163, 157, 160, 174, 177, 176, 183, + 183, 178, 181, 180, 182, 183, 184, 188, 191, 187, 180, 180, 190, 188, 190, 201, + 197, 194, 209, 193, 200, 203, 198, 195, 197, 198, 196, 196, 202, 209, 209, 200, + 194, 199, 210, 187, 189, 191, 193, 196, 201, 209, 216, 196, 193, 189, 187, 190, + 193, 194, 196, 196, 193, 191, 181, 171, 182, 192, 186, 179, 172, 175, 177, 173, + 177, 177, 168, 180, 173, 164, 157, 157, 161, 166, 167, 123, 101, 74, 56, 48, + 44, 38, 33, 28, 19, 22, 24, 13, 10, 19, 23, 16, 19, 17, 23, 33, + 34, 41, 61, 67, 72, 98, 98, 94, 107, 105, 105, 104, 105, 107, 107, 106, + 106, 108, 109, 108, 108, 107, 106, 105, 104, 103, 103, 103, 104, 105, 106, 106, + 105, 104, 103, 105, 105, 105, 105, 105, 105, 105, 105, 103, 102, 102, 61, 62, + 64, 66, 67, 67, 66, 66, 69, 65, 65, 69, 72, 70, 70, 72, 68, 74, + 70, 69, 75, 75, 71, 77, 74, 77, 77, 73, 74, 77, 77, 75, 76, 75, + 72, 68, 62, 48, 28, 12, 17, 13, 12, 17, 19, 14, 10, 10, 4, 5, + 12, 22, 24, 27, 45, 70, 91, 112, 132, 136, 137, 157, 169, 158, 167, 177, + 173, 168, 174, 177, 177, 183, 184, 184, 181, 180, 184, 189, 188, 183, 194, 200, + 194, 193, 200, 184, 175, 193, 193, 202, 205, 194, 184, 184, 189, 192, 207, 197, + 191, 196, 204, 203, 198, 194, 206, 206, 204, 198, 192, 189, 190, 193, 205, 199, + 193, 191, 193, 196, 198, 197, 190, 196, 202, 192, 180, 187, 190, 175, 180, 178, + 183, 186, 181, 183, 183, 173, 170, 169, 171, 172, 171, 168, 162, 156, 168, 153, + 137, 125, 114, 96, 69, 48, 39, 24, 25, 32, 28, 24, 21, 14, 26, 11, + 7, 26, 38, 21, 20, 46, 45, 60, 94, 96, 87, 98, 99, 104, 103, 104, + 107, 107, 105, 106, 108, 109, 108, 108, 107, 106, 105, 104, 103, 103, 102, 103, + 104, 105, 106, 105, 104, 103, 105, 105, 105, 105, 105, 105, 105, 105, 102, 102, + 102, 64, 68, 68, 65, 66, 69, 69, 67, 70, 70, 71, 71, 71, 72, 72, + 72, 73, 72, 71, 71, 70, 71, 71, 71, 77, 75, 73, 72, 71, 72, 75, + 76, 74, 74, 76, 65, 40, 27, 27, 21, 9, 17, 21, 17, 13, 11, 8, + 3, 1, 15, 25, 23, 27, 49, 85, 111, 131, 139, 148, 155, 161, 164, 167, + 169, 164, 165, 171, 178, 179, 176, 176, 180, 185, 177, 172, 176, 187, 194, 194, + 190, 192, 193, 192, 190, 188, 189, 191, 193, 192, 193, 195, 197, 199, 200, 199, + 201, 208, 203, 199, 203, 208, 208, 206, 204, 217, 210, 217, 212, 193, 200, 214, + 206, 198, 205, 208, 202, 197, 196, 195, 190, 192, 199, 199, 186, 180, 187, 192, + 192, 188, 180, 178, 180, 177, 185, 190, 185, 185, 177, 170, 172, 181, 185, 178, + 167, 162, 155, 152, 153, 153, 141, 118, 97, 64, 45, 34, 37, 35, 25, 23, + 30, 20, 19, 18, 17, 17, 22, 28, 35, 41, 35, 49, 79, 97, 94, 92, + 101, 105, 106, 104, 99, 100, 104, 108, 107, 107, 108, 107, 106, 103, 103, 104, + 106, 105, 106, 106, 106, 106, 105, 104, 103, 106, 106, 106, 105, 105, 104, 104, + 104, 105, 105, 105, 65, 68, 68, 65, 66, 69, 70, 67, 68, 68, 68, 69, + 69, 70, 70, 70, 70, 70, 69, 70, 71, 73, 74, 75, 70, 74, 76, 76, + 73, 72, 71, 71, 73, 64, 57, 45, 25, 18, 16, 7, 9, 11, 11, 8, + 8, 13, 12, 9, 10, 17, 27, 42, 67, 96, 117, 126, 146, 153, 161, 167, + 169, 170, 171, 173, 170, 170, 172, 181, 183, 182, 181, 184, 181, 178, 175, 180, + 187, 193, 190, 187, 194, 195, 196, 195, 193, 191, 190, 191, 192, 192, 194, 196, + 199, 201, 202, 206, 206, 208, 210, 213, 214, 213, 212, 212, 214, 209, 217, 218, + 208, 214, 221, 208, 204, 206, 205, 199, 197, 202, 204, 203, 182, 198, 206, 203, + 196, 193, 186, 177, 192, 186, 184, 181, 168, 171, 178, 177, 189, 186, 181, 182, + 183, 182, 174, 167, 164, 160, 156, 157, 161, 157, 147, 135, 135, 99, 62, 48, + 46, 41, 33, 26, 22, 14, 13, 18, 26, 28, 23, 18, 32, 34, 44, 63, + 83, 92, 95, 96, 97, 103, 105, 101, 99, 103, 106, 107, 107, 108, 107, 106, + 103, 103, 104, 106, 105, 106, 106, 106, 106, 105, 104, 103, 106, 106, 106, 105, + 105, 104, 104, 104, 105, 105, 105, 64, 67, 67, 65, 65, 68, 69, 66, 67, + 67, 68, 68, 68, 69, 69, 69, 67, 67, 68, 70, 72, 75, 77, 78, 71, + 74, 77, 76, 72, 70, 68, 69, 70, 53, 41, 31, 18, 18, 18, 8, 14, + 15, 13, 11, 13, 17, 16, 14, 16, 26, 42, 68, 101, 128, 139, 139, 155, + 162, 167, 171, 171, 170, 171, 172, 175, 174, 175, 182, 185, 185, 184, 187, 181, + 182, 183, 187, 189, 191, 189, 187, 193, 196, 198, 198, 195, 192, 190, 189, 192, + 193, 194, 197, 200, 204, 206, 210, 201, 209, 215, 217, 212, 210, 208, 210, 222, + 217, 217, 216, 209, 214, 215, 202, 210, 214, 216, 217, 218, 219, 215, 209, 192, + 200, 202, 195, 192, 197, 199, 197, 186, 185, 188, 181, 165, 165, 179, 184, 177, + 178, 179, 180, 180, 178, 174, 173, 175, 172, 168, 167, 166, 164, 158, 151, 147, + 145, 134, 106, 71, 45, 38, 40, 39, 27, 19, 17, 19, 21, 18, 14, 22, + 31, 38, 46, 63, 84, 93, 91, 89, 99, 105, 102, 99, 101, 104, 106, 107, + 108, 107, 106, 103, 103, 104, 106, 105, 106, 106, 106, 106, 105, 104, 103, 106, + 106, 106, 105, 105, 104, 104, 104, 105, 105, 105, 64, 67, 68, 65, 65, 69, + 69, 66, 70, 70, 70, 71, 71, 71, 72, 72, 68, 68, 69, 71, 73, 76, + 77, 78, 78, 76, 73, 70, 69, 68, 67, 65, 55, 38, 29, 23, 17, 20, + 25, 18, 14, 16, 19, 19, 16, 17, 17, 16, 29, 53, 81, 101, 118, 132, + 145, 150, 162, 167, 171, 174, 173, 170, 170, 171, 178, 179, 180, 184, 182, 180, + 182, 188, 186, 188, 189, 190, 189, 190, 189, 190, 190, 192, 194, 194, 192, 191, + 190, 191, 193, 193, 194, 196, 198, 202, 204, 206, 201, 209, 213, 211, 207, 205, + 204, 203, 227, 222, 216, 208, 204, 209, 214, 211, 208, 204, 202, 202, 203, 205, + 201, 198, 212, 210, 200, 187, 183, 192, 203, 208, 188, 186, 191, 186, 170, 172, + 186, 191, 176, 173, 173, 176, 178, 177, 176, 178, 176, 178, 178, 176, 172, 164, + 157, 151, 152, 151, 145, 135, 120, 100, 72, 46, 40, 36, 30, 25, 18, 16, + 17, 20, 16, 25, 31, 35, 43, 62, 78, 87, 89, 97, 101, 99, 100, 103, + 104, 102, 106, 108, 107, 106, 103, 103, 104, 106, 105, 106, 106, 106, 106, 105, + 104, 103, 106, 106, 106, 105, 105, 104, 104, 104, 105, 105, 105, 65, 68, 68, + 66, 66, 69, 70, 67, 70, 70, 71, 71, 72, 72, 72, 72, 71, 70, 71, + 72, 73, 75, 76, 76, 80, 74, 69, 68, 70, 68, 60, 50, 31, 20, 20, + 18, 9, 14, 21, 19, 10, 13, 15, 16, 15, 18, 27, 38, 67, 91, 116, + 129, 135, 142, 151, 158, 168, 173, 176, 179, 177, 175, 174, 176, 178, 184, 188, + 189, 181, 176, 180, 190, 189, 190, 189, 187, 185, 185, 189, 192, 189, 190, 191, + 190, 191, 192, 195, 198, 195, 195, 195, 195, 197, 198, 199, 199, 204, 208, 208, + 204, 204, 208, 208, 204, 210, 216, 213, 206, 206, 212, 219, 226, 233, 225, 211, + 207, 208, 215, 222, 226, 214, 215, 210, 201, 195, 193, 191, 188, 200, 193, 194, + 190, 177, 178, 187, 187, 194, 183, 177, 180, 182, 180, 176, 176, 172, 173, 174, + 174, 171, 168, 165, 163, 159, 154, 145, 138, 136, 130, 113, 93, 44, 39, 35, + 35, 33, 29, 22, 16, 13, 16, 24, 29, 29, 36, 54, 78, 89, 94, 96, + 95, 99, 104, 103, 99, 105, 107, 107, 106, 103, 103, 104, 106, 105, 106, 106, + 106, 106, 105, 104, 103, 106, 106, 106, 105, 105, 104, 104, 104, 105, 105, 105, + 65, 68, 69, 66, 66, 70, 70, 67, 68, 69, 69, 69, 70, 70, 70, 71, + 73, 72, 73, 73, 73, 74, 75, 74, 73, 70, 69, 70, 69, 60, 45, 28, + 21, 16, 21, 20, 8, 9, 16, 16, 13, 11, 13, 18, 25, 39, 61, 82, + 106, 118, 129, 137, 148, 158, 159, 155, 167, 171, 175, 177, 177, 177, 176, 177, + 180, 186, 190, 193, 184, 180, 182, 193, 188, 189, 184, 184, 180, 183, 184, 188, + 190, 189, 190, 190, 191, 193, 198, 202, 194, 196, 195, 197, 195, 195, 193, 193, + 198, 202, 202, 198, 201, 209, 211, 206, 195, 211, 212, 207, 210, 208, 207, 216, + 207, 204, 202, 206, 207, 206, 206, 208, 207, 208, 208, 206, 203, 200, 196, 191, + 198, 190, 191, 192, 185, 188, 193, 189, 192, 180, 173, 180, 185, 182, 179, 179, + 179, 175, 171, 166, 166, 168, 171, 173, 157, 161, 163, 156, 142, 133, 133, 135, + 99, 73, 44, 31, 32, 33, 24, 12, 13, 12, 17, 23, 22, 22, 38, 60, + 78, 87, 91, 95, 99, 104, 102, 99, 105, 107, 107, 106, 104, 103, 104, 106, + 105, 106, 106, 106, 106, 105, 104, 103, 106, 106, 106, 105, 105, 104, 104, 104, + 105, 105, 105, 65, 68, 69, 66, 67, 70, 70, 67, 69, 69, 69, 70, 70, + 70, 71, 71, 73, 72, 73, 73, 73, 75, 74, 74, 70, 69, 68, 63, 55, + 43, 32, 22, 25, 18, 24, 23, 11, 11, 16, 15, 16, 11, 16, 32, 55, + 77, 98, 117, 130, 135, 136, 141, 153, 162, 161, 154, 164, 167, 173, 176, 177, + 177, 178, 177, 179, 179, 182, 188, 188, 185, 184, 189, 187, 186, 184, 184, 183, + 184, 184, 184, 186, 188, 190, 190, 190, 192, 194, 197, 191, 194, 196, 197, 196, + 194, 192, 190, 193, 205, 209, 203, 202, 208, 210, 206, 201, 217, 214, 208, 214, + 210, 201, 206, 203, 205, 212, 220, 218, 210, 204, 204, 206, 204, 201, 201, 202, + 203, 205, 206, 192, 188, 193, 197, 191, 193, 199, 196, 180, 174, 175, 184, 188, + 182, 181, 185, 182, 175, 168, 164, 165, 166, 167, 167, 176, 160, 152, 159, 164, + 155, 139, 129, 146, 119, 79, 50, 35, 30, 24, 19, 12, 14, 14, 14, 19, + 26, 32, 38, 56, 76, 91, 96, 97, 98, 100, 100, 104, 107, 107, 106, 104, + 104, 104, 107, 105, 106, 106, 106, 106, 105, 104, 103, 106, 106, 106, 105, 105, + 104, 104, 104, 105, 105, 105, 66, 70, 70, 67, 67, 70, 70, 68, 71, 71, + 72, 72, 72, 74, 74, 73, 72, 72, 72, 73, 74, 75, 75, 74, 72, 70, + 63, 49, 32, 22, 22, 22, 23, 15, 20, 21, 13, 14, 19, 17, 13, 10, + 20, 50, 83, 105, 117, 127, 138, 147, 151, 151, 154, 160, 163, 162, 167, 172, + 176, 181, 181, 183, 184, 183, 177, 172, 173, 183, 191, 191, 187, 184, 189, 188, + 188, 189, 190, 190, 188, 184, 184, 187, 189, 191, 191, 190, 190, 190, 191, 193, + 197, 199, 199, 196, 193, 191, 199, 215, 223, 214, 205, 206, 208, 205, 210, 222, + 212, 205, 220, 221, 213, 220, 219, 212, 205, 203, 198, 194, 201, 212, 211, 210, + 209, 210, 209, 204, 198, 196, 201, 199, 205, 205, 193, 191, 195, 191, 185, 183, + 189, 197, 193, 180, 178, 183, 170, 167, 165, 167, 171, 171, 167, 162, 169, 165, + 166, 166, 152, 134, 139, 156, 137, 135, 121, 94, 63, 41, 33, 33, 16, 21, + 17, 10, 19, 36, 32, 19, 33, 63, 89, 98, 93, 93, 96, 101, 103, 105, + 106, 106, 104, 104, 107, 109, 106, 107, 107, 107, 107, 106, 105, 104, 107, 107, + 107, 106, 106, 105, 105, 105, 105, 105, 105, 70, 70, 70, 69, 68, 67, 66, + 65, 66, 66, 67, 68, 69, 70, 71, 71, 75, 74, 73, 74, 73, 74, 74, + 75, 77, 63, 44, 31, 25, 24, 20, 16, 13, 15, 24, 22, 15, 17, 20, + 11, 13, 27, 46, 81, 117, 129, 126, 134, 146, 150, 154, 158, 161, 164, 168, + 170, 172, 172, 173, 175, 177, 181, 184, 186, 175, 181, 187, 188, 184, 183, 186, + 190, 194, 186, 188, 190, 185, 185, 184, 174, 183, 188, 192, 193, 189, 187, 191, + 195, 187, 200, 208, 201, 189, 188, 195, 201, 203, 204, 201, 198, 201, 209, 213, + 212, 212, 208, 205, 206, 212, 215, 214, 212, 209, 205, 207, 214, 211, 202, 201, + 208, 213, 217, 217, 211, 206, 206, 206, 204, 210, 209, 208, 205, 198, 193, 199, + 207, 192, 193, 190, 184, 182, 185, 186, 184, 183, 175, 166, 163, 168, 170, 167, + 163, 169, 168, 165, 164, 161, 157, 152, 147, 145, 144, 138, 128, 116, 96, 63, + 33, 27, 31, 29, 20, 21, 27, 22, 13, 38, 42, 55, 78, 93, 97, 95, + 96, 99, 100, 101, 104, 106, 110, 112, 113, 108, 107, 107, 107, 107, 107, 107, + 107, 108, 108, 108, 107, 107, 106, 106, 106, 106, 106, 106, 71, 70, 70, 69, + 68, 66, 65, 65, 67, 67, 69, 69, 71, 72, 72, 73, 78, 77, 75, 76, + 77, 77, 75, 73, 61, 47, 31, 22, 17, 16, 14, 12, 22, 17, 18, 17, + 11, 15, 22, 18, 17, 43, 69, 96, 124, 136, 137, 145, 148, 150, 152, 156, + 160, 163, 165, 166, 175, 175, 176, 177, 179, 180, 180, 182, 179, 184, 187, 188, + 186, 186, 189, 192, 186, 178, 180, 186, 185, 189, 190, 181, 187, 189, 190, 190, + 189, 188, 188, 188, 188, 195, 197, 193, 189, 192, 196, 198, 199, 204, 209, 209, + 211, 211, 207, 200, 207, 209, 213, 219, 224, 225, 221, 219, 204, 207, 212, 219, + 220, 217, 218, 221, 208, 216, 219, 215, 211, 212, 214, 215, 213, 206, 202, 207, + 210, 205, 196, 192, 195, 198, 197, 190, 185, 186, 187, 186, 181, 175, 170, 170, + 173, 173, 168, 162, 171, 168, 165, 164, 164, 162, 156, 151, 145, 145, 142, 137, + 132, 122, 102, 82, 52, 37, 29, 33, 30, 19, 14, 21, 22, 26, 37, 57, + 79, 92, 96, 98, 99, 100, 102, 104, 106, 109, 112, 112, 108, 107, 107, 107, + 107, 107, 107, 107, 108, 108, 108, 107, 107, 106, 106, 106, 105, 105, 105, 70, + 70, 70, 68, 68, 66, 66, 65, 69, 70, 71, 71, 73, 74, 76, 76, 80, + 78, 77, 77, 77, 75, 70, 64, 40, 31, 20, 15, 14, 15, 13, 11, 12, + 8, 16, 26, 21, 18, 16, 11, 29, 68, 98, 113, 130, 139, 144, 152, 155, + 153, 153, 157, 163, 166, 166, 164, 174, 175, 177, 178, 178, 177, 176, 176, 182, + 182, 183, 184, 185, 187, 189, 190, 185, 175, 177, 184, 186, 193, 195, 185, 195, + 193, 191, 192, 193, 193, 190, 187, 197, 197, 195, 192, 195, 201, 201, 197, 201, + 203, 202, 199, 199, 203, 205, 203, 205, 209, 213, 215, 213, 211, 208, 208, 218, + 223, 223, 216, 210, 205, 201, 196, 209, 217, 221, 216, 211, 211, 212, 212, 213, + 206, 203, 207, 209, 204, 195, 190, 191, 198, 200, 193, 186, 185, 186, 186, 179, + 175, 173, 175, 178, 176, 169, 162, 172, 168, 164, 165, 167, 167, 161, 156, 152, + 151, 149, 144, 142, 139, 133, 123, 92, 59, 34, 32, 35, 29, 22, 21, 16, + 18, 24, 37, 58, 83, 96, 102, 103, 105, 104, 106, 106, 107, 106, 106, 106, + 106, 106, 106, 106, 106, 105, 105, 106, 106, 106, 105, 104, 103, 103, 104, 105, + 104, 104, 71, 71, 70, 69, 69, 68, 67, 67, 70, 71, 71, 73, 74, 75, + 76, 78, 78, 78, 76, 77, 75, 68, 56, 45, 29, 22, 16, 14, 14, 16, + 15, 13, 24, 12, 14, 17, 9, 11, 25, 33, 46, 90, 119, 126, 137, 148, + 151, 155, 163, 158, 156, 160, 168, 172, 171, 168, 170, 171, 174, 176, 176, 175, + 173, 173, 182, 180, 179, 180, 183, 186, 187, 187, 195, 184, 183, 188, 189, 195, + 195, 184, 194, 194, 194, 194, 193, 193, 191, 189, 199, 199, 197, 196, 199, 204, + 201, 195, 194, 197, 197, 194, 195, 201, 205, 206, 206, 208, 208, 204, 199, 198, + 202, 207, 209, 218, 219, 213, 213, 221, 223, 219, 207, 210, 212, 210, 210, 212, + 210, 206, 210, 209, 210, 207, 199, 193, 198, 207, 182, 192, 197, 192, 183, 182, + 183, 184, 177, 175, 174, 176, 178, 177, 170, 165, 172, 167, 163, 164, 168, 169, + 164, 160, 162, 162, 157, 151, 145, 142, 140, 137, 118, 103, 73, 42, 30, 35, + 34, 23, 21, 24, 25, 27, 41, 66, 91, 102, 106, 108, 109, 107, 106, 104, + 102, 101, 104, 105, 105, 105, 105, 104, 104, 104, 104, 105, 104, 104, 103, 102, + 102, 103, 104, 105, 105, 70, 70, 69, 69, 68, 68, 68, 68, 70, 72, 72, + 73, 74, 75, 76, 78, 80, 79, 79, 77, 70, 56, 40, 27, 21, 17, 14, + 14, 14, 15, 16, 15, 11, 10, 20, 24, 14, 14, 27, 35, 67, 104, 127, + 134, 146, 158, 160, 159, 164, 159, 156, 160, 168, 172, 172, 169, 166, 168, 171, + 174, 176, 176, 175, 175, 183, 181, 179, 180, 183, 185, 186, 186, 200, 189, 189, + 192, 191, 194, 193, 182, 188, 192, 195, 194, 190, 188, 190, 193, 187, 193, 197, + 196, 198, 200, 198, 194, 182, 194, 206, 211, 210, 208, 202, 195, 203, 207, 209, + 208, 205, 208, 216, 224, 227, 230, 223, 208, 200, 203, 203, 198, 203, 202, 201, + 203, 211, 217, 213, 205, 207, 208, 209, 207, 201, 196, 201, 210, 177, 187, 193, + 190, 183, 182, 183, 184, 178, 176, 173, 173, 175, 175, 172, 169, 169, 165, 161, + 162, 166, 168, 165, 162, 167, 166, 162, 156, 149, 143, 141, 141, 126, 134, 120, + 81, 43, 32, 34, 34, 28, 29, 29, 24, 27, 47, 77, 101, 106, 109, 111, + 109, 106, 102, 98, 97, 102, 104, 104, 104, 104, 103, 103, 103, 103, 104, 103, + 102, 101, 100, 100, 102, 106, 108, 108, 70, 70, 70, 70, 70, 70, 71, 71, + 71, 71, 73, 74, 76, 76, 77, 77, 81, 81, 78, 71, 59, 44, 28, 18, + 16, 15, 13, 13, 14, 15, 16, 16, 4, 9, 20, 22, 16, 27, 45, 50, + 92, 116, 131, 139, 156, 166, 166, 167, 160, 156, 154, 156, 160, 164, 165, 164, + 165, 167, 170, 173, 176, 177, 178, 178, 181, 182, 183, 183, 184, 185, 186, 187, + 193, 185, 189, 193, 190, 192, 192, 183, 190, 196, 201, 199, 194, 191, 194, 199, + 182, 190, 197, 198, 198, 201, 202, 201, 188, 198, 205, 205, 202, 201, 199, 195, + 197, 203, 209, 211, 208, 207, 209, 212, 200, 202, 202, 200, 203, 213, 222, 226, + 216, 212, 206, 204, 210, 215, 209, 200, 208, 203, 201, 208, 213, 208, 200, 194, + 181, 189, 194, 190, 186, 186, 187, 186, 179, 176, 173, 172, 173, 174, 174, 174, + 166, 164, 162, 162, 164, 165, 164, 165, 163, 162, 162, 162, 158, 151, 150, 150, + 148, 133, 122, 114, 94, 62, 40, 31, 32, 28, 27, 24, 21, 31, 61, 90, + 103, 109, 110, 111, 107, 103, 97, 97, 102, 104, 104, 104, 104, 103, 103, 102, + 103, 103, 103, 101, 101, 99, 99, 101, 106, 108, 108, 69, 69, 69, 70, 70, + 71, 71, 72, 74, 75, 75, 75, 77, 77, 78, 78, 78, 77, 70, 58, 41, + 28, 20, 17, 14, 14, 14, 17, 19, 20, 22, 24, 36, 32, 26, 18, 27, + 70, 110, 120, 124, 136, 142, 149, 162, 166, 165, 170, 158, 156, 154, 153, 153, + 155, 156, 157, 164, 165, 167, 169, 172, 174, 176, 177, 176, 179, 182, 182, 180, + 179, 181, 184, 184, 182, 189, 195, 190, 191, 193, 186, 196, 198, 200, 199, 196, + 194, 194, 196, 190, 195, 197, 196, 196, 201, 203, 202, 198, 201, 198, 190, 187, + 193, 201, 206, 198, 201, 203, 202, 198, 195, 195, 196, 225, 222, 220, 219, 216, + 214, 217, 223, 220, 219, 214, 207, 206, 209, 207, 202, 208, 203, 202, 208, 210, + 204, 195, 189, 187, 192, 194, 191, 188, 189, 188, 186, 180, 178, 177, 176, 177, + 177, 177, 177, 165, 166, 166, 165, 163, 163, 165, 168, 165, 161, 162, 166, 165, + 160, 156, 158, 160, 135, 121, 127, 128, 105, 71, 46, 44, 30, 23, 25, 21, + 21, 42, 71, 96, 103, 108, 110, 107, 104, 100, 100, 103, 105, 105, 104, 104, + 103, 103, 103, 104, 103, 103, 101, 101, 100, 100, 101, 105, 107, 106, 68, 68, + 69, 70, 71, 72, 72, 72, 76, 76, 76, 77, 77, 77, 77, 76, 72, 69, + 59, 43, 25, 15, 14, 17, 16, 18, 20, 23, 25, 28, 32, 35, 30, 46, + 67, 82, 105, 146, 162, 147, 151, 156, 154, 158, 164, 160, 158, 168, 159, 158, + 156, 153, 149, 149, 151, 153, 161, 161, 162, 164, 166, 168, 170, 172, 169, 174, + 179, 179, 175, 173, 175, 179, 180, 181, 192, 197, 191, 190, 194, 188, 195, 193, + 191, 190, 191, 189, 186, 183, 199, 198, 193, 188, 189, 194, 196, 193, 192, 199, + 202, 199, 196, 200, 206, 208, 202, 201, 198, 195, 195, 197, 203, 207, 209, 204, + 206, 212, 212, 205, 207, 216, 204, 209, 211, 206, 204, 210, 216, 220, 207, 208, + 209, 206, 196, 188, 190, 197, 192, 195, 194, 189, 187, 188, 186, 182, 179, 179, + 179, 179, 180, 180, 179, 178, 165, 168, 169, 167, 162, 161, 166, 170, 171, 165, + 164, 168, 168, 161, 157, 157, 144, 152, 150, 134, 122, 116, 104, 85, 59, 36, + 24, 30, 26, 16, 28, 53, 90, 99, 105, 108, 107, 106, 102, 103, 104, 106, + 106, 106, 105, 105, 104, 104, 104, 105, 104, 103, 102, 101, 100, 102, 103, 105, + 105, 69, 68, 69, 70, 71, 71, 72, 71, 71, 72, 74, 76, 78, 75, 70, + 64, 68, 52, 35, 26, 21, 17, 19, 21, 19, 25, 28, 30, 37, 51, 64, + 71, 109, 121, 135, 145, 151, 156, 162, 168, 159, 160, 161, 163, 163, 164, 166, + 167, 164, 165, 164, 161, 156, 152, 150, 151, 144, 148, 153, 155, 156, 159, 163, + 167, 169, 163, 164, 174, 179, 176, 179, 187, 184, 180, 180, 185, 194, 197, 193, + 188, 210, 206, 202, 197, 194, 194, 195, 197, 197, 198, 200, 201, 196, 190, 193, + 199, 188, 194, 201, 205, 203, 199, 195, 193, 196, 199, 201, 201, 199, 199, 201, + 204, 204, 209, 209, 207, 217, 230, 229, 218, 208, 200, 196, 205, 215, 215, 208, + 203, 216, 199, 189, 194, 199, 195, 192, 196, 194, 192, 183, 183, 187, 180, 174, + 185, 161, 176, 182, 173, 168, 173, 175, 170, 178, 173, 169, 171, 174, 171, 159, + 148, 162, 159, 163, 171, 172, 165, 160, 159, 154, 151, 147, 143, 139, 134, 130, + 127, 100, 52, 32, 40, 30, 13, 22, 46, 73, 99, 105, 98, 102, 106, 103, + 106, 107, 107, 105, 103, 105, 109, 106, 101, 103, 104, 103, 104, 103, 104, 104, + 104, 99, 106, 104, 68, 68, 68, 70, 71, 71, 72, 72, 75, 77, 77, 73, + 68, 66, 69, 69, 50, 34, 23, 22, 25, 25, 23, 24, 19, 36, 56, 70, + 85, 105, 125, 136, 147, 154, 161, 163, 163, 161, 163, 165, 160, 160, 160, 159, + 158, 158, 159, 159, 162, 160, 158, 158, 159, 157, 153, 149, 144, 146, 146, 144, + 143, 144, 149, 152, 157, 162, 172, 178, 174, 169, 173, 182, 183, 181, 184, 189, + 196, 199, 198, 195, 193, 193, 193, 194, 195, 196, 198, 199, 197, 198, 201, 203, + 200, 195, 197, 203, 202, 200, 197, 194, 192, 195, 201, 205, 199, 202, 204, 204, + 202, 201, 202, 204, 208, 215, 215, 207, 206, 213, 215, 209, 199, 197, 200, 208, + 211, 208, 204, 203, 201, 194, 196, 205, 207, 198, 193, 195, 206, 200, 187, 182, + 185, 182, 177, 182, 181, 174, 177, 187, 184, 169, 161, 164, 166, 167, 165, 161, + 156, 156, 161, 166, 164, 162, 164, 169, 169, 163, 161, 164, 165, 155, 143, 141, + 144, 143, 133, 123, 125, 108, 80, 45, 16, 19, 26, 20, 57, 91, 108, 108, + 111, 107, 98, 96, 103, 108, 109, 105, 104, 105, 103, 100, 102, 102, 103, 103, + 103, 103, 102, 102, 100, 107, 103, 66, 67, 67, 69, 70, 72, 73, 73, 76, + 74, 70, 68, 67, 64, 61, 54, 26, 19, 17, 17, 19, 25, 37, 51, 87, + 107, 128, 136, 139, 146, 154, 162, 161, 167, 170, 170, 167, 164, 165, 167, 168, + 166, 166, 163, 161, 161, 160, 160, 165, 162, 160, 163, 168, 168, 162, 155, 154, + 152, 149, 143, 139, 138, 140, 141, 150, 149, 151, 157, 163, 170, 177, 182, 181, + 182, 187, 191, 194, 196, 197, 197, 190, 191, 193, 194, 194, 194, 193, 192, 195, + 196, 200, 204, 202, 198, 199, 204, 198, 206, 216, 222, 220, 213, 205, 200, 201, + 203, 205, 205, 203, 202, 201, 201, 199, 210, 215, 207, 200, 205, 211, 213, 214, + 210, 206, 201, 195, 191, 196, 204, 210, 201, 195, 194, 188, 179, 179, 185, 186, + 183, 176, 173, 178, 182, 179, 176, 192, 176, 167, 172, 171, 161, 154, 156, 163, + 168, 173, 173, 168, 163, 162, 162, 162, 161, 163, 165, 162, 159, 161, 167, 170, + 162, 152, 148, 148, 145, 138, 132, 140, 141, 118, 67, 32, 36, 36, 12, 41, + 72, 92, 98, 107, 110, 109, 114, 100, 108, 113, 110, 105, 105, 105, 104, 106, + 106, 106, 106, 106, 106, 106, 105, 101, 107, 104, 65, 66, 68, 68, 71, 72, + 73, 74, 73, 65, 61, 65, 71, 64, 44, 21, 17, 18, 21, 20, 16, 30, + 67, 102, 113, 131, 148, 155, 156, 157, 159, 161, 164, 167, 169, 168, 165, 164, + 165, 167, 171, 171, 169, 167, 166, 166, 165, 165, 166, 165, 165, 168, 171, 171, + 166, 160, 162, 160, 156, 150, 144, 140, 138, 136, 130, 133, 140, 149, 155, 161, + 167, 174, 175, 179, 185, 188, 188, 188, 190, 193, 194, 194, 195, 195, 194, 193, + 192, 191, 193, 194, 198, 202, 200, 196, 196, 200, 202, 202, 202, 200, 198, 198, + 200, 202, 200, 202, 203, 203, 202, 199, 198, 197, 193, 205, 213, 209, 205, 207, + 212, 215, 196, 203, 214, 220, 213, 197, 186, 183, 202, 196, 193, 196, 198, 198, + 202, 208, 203, 205, 208, 207, 204, 208, 208, 198, 189, 193, 188, 179, 181, 190, + 186, 174, 171, 167, 166, 171, 177, 175, 165, 153, 157, 160, 164, 163, 159, 156, + 158, 163, 161, 167, 170, 164, 150, 142, 142, 148, 147, 140, 129, 109, 77, 58, + 43, 25, 47, 69, 81, 87, 97, 100, 97, 102, 97, 104, 107, 105, 103, 105, + 107, 106, 107, 107, 107, 106, 106, 106, 106, 106, 99, 105, 102, 65, 66, 68, + 68, 71, 72, 73, 73, 67, 64, 63, 63, 60, 48, 29, 11, 21, 20, 25, + 29, 37, 59, 98, 134, 129, 140, 151, 156, 161, 165, 165, 161, 177, 176, 173, + 171, 164, 161, 160, 159, 165, 164, 164, 164, 164, 165, 166, 167, 163, 165, 167, + 167, 165, 163, 161, 160, 161, 160, 158, 154, 149, 143, 136, 132, 112, 123, 139, + 151, 149, 144, 149, 161, 165, 171, 179, 182, 183, 184, 189, 192, 189, 189, 189, + 191, 193, 195, 198, 199, 196, 195, 197, 200, 199, 195, 194, 198, 197, 197, 197, + 195, 193, 194, 196, 199, 202, 201, 201, 201, 201, 199, 197, 196, 196, 203, 209, + 210, 208, 207, 205, 202, 219, 206, 192, 187, 189, 196, 210, 222, 205, 203, 206, + 215, 218, 209, 194, 184, 176, 171, 173, 165, 144, 143, 147, 138, 138, 156, 168, + 170, 177, 187, 187, 179, 179, 168, 157, 155, 162, 167, 167, 164, 154, 161, 166, + 165, 160, 158, 159, 161, 155, 165, 172, 170, 156, 147, 146, 151, 154, 137, 134, + 135, 116, 89, 67, 51, 39, 52, 62, 72, 88, 95, 92, 95, 99, 99, 98, + 95, 99, 104, 103, 99, 101, 102, 102, 102, 102, 102, 101, 100, 97, 104, 100, + 67, 67, 68, 70, 71, 72, 72, 71, 66, 70, 69, 55, 36, 23, 23, 26, + 20, 11, 17, 37, 67, 93, 115, 131, 156, 162, 164, 165, 168, 172, 171, 166, + 175, 174, 171, 168, 164, 161, 158, 157, 160, 160, 160, 162, 164, 166, 168, 169, + 167, 169, 170, 168, 164, 162, 162, 163, 161, 161, 160, 159, 156, 149, 140, 133, + 132, 102, 86, 103, 127, 139, 147, 158, 154, 160, 169, 175, 179, 183, 190, 194, + 187, 187, 187, 187, 188, 190, 193, 194, 199, 196, 196, 199, 199, 196, 196, 199, + 190, 197, 206, 211, 210, 204, 198, 195, 204, 202, 200, 200, 200, 200, 199, 198, + 190, 194, 199, 203, 206, 205, 201, 196, 193, 194, 204, 217, 221, 210, 194, 185, + 196, 189, 182, 178, 173, 159, 138, 123, 133, 112, 107, 98, 71, 69, 82, 80, + 76, 75, 84, 99, 106, 112, 131, 154, 171, 174, 175, 171, 164, 160, 162, 164, + 157, 165, 169, 167, 165, 164, 163, 161, 158, 158, 160, 163, 163, 159, 151, 144, + 148, 140, 141, 139, 131, 126, 114, 93, 64, 65, 55, 52, 65, 76, 86, 100, + 104, 104, 101, 98, 102, 106, 104, 98, 102, 102, 102, 102, 102, 102, 101, 100, + 99, 105, 100, 69, 68, 69, 70, 71, 71, 70, 69, 67, 66, 58, 40, 22, + 14, 22, 30, 16, 12, 24, 53, 86, 111, 127, 136, 148, 155, 158, 159, 163, + 171, 173, 171, 163, 162, 162, 163, 162, 161, 160, 158, 159, 160, 161, 163, 166, + 169, 171, 172, 176, 173, 170, 169, 168, 168, 168, 167, 166, 164, 163, 162, 159, + 154, 145, 139, 138, 76, 33, 49, 85, 107, 127, 147, 148, 152, 160, 167, 172, + 177, 182, 184, 185, 186, 187, 187, 188, 188, 187, 187, 198, 194, 192, 195, 196, + 195, 197, 201, 199, 196, 191, 187, 187, 192, 200, 207, 204, 201, 197, 196, 198, + 199, 199, 199, 190, 192, 194, 198, 200, 199, 197, 196, 197, 192, 190, 192, 189, + 179, 168, 162, 151, 145, 138, 133, 132, 131, 127, 122, 89, 54, 50, 54, 32, + 30, 44, 41, 51, 42, 39, 44, 48, 57, 82, 110, 135, 147, 164, 173, 173, + 167, 161, 158, 163, 168, 169, 166, 164, 168, 166, 162, 164, 161, 159, 161, 163, + 162, 156, 147, 144, 139, 144, 143, 139, 143, 142, 126, 126, 118, 93, 68, 55, + 48, 53, 70, 95, 101, 104, 103, 106, 109, 106, 102, 106, 106, 106, 106, 105, + 104, 104, 104, 99, 105, 101, 72, 71, 71, 71, 71, 70, 69, 66, 68, 55, + 36, 24, 18, 18, 18, 17, 16, 27, 50, 78, 99, 120, 142, 161, 165, 172, + 175, 168, 163, 163, 162, 162, 166, 165, 165, 165, 164, 162, 159, 156, 158, 159, + 160, 162, 164, 166, 168, 170, 177, 170, 164, 163, 168, 171, 169, 165, 167, 164, + 160, 158, 157, 153, 146, 140, 106, 62, 38, 47, 50, 49, 78, 123, 146, 149, + 153, 159, 164, 167, 169, 169, 172, 176, 181, 188, 192, 195, 194, 194, 194, 189, + 186, 189, 192, 193, 196, 201, 193, 197, 202, 205, 205, 204, 203, 203, 202, 197, + 192, 191, 194, 196, 197, 196, 203, 203, 201, 198, 192, 186, 185, 187, 179, 169, + 159, 153, 148, 142, 140, 143, 144, 148, 150, 150, 149, 147, 143, 139, 80, 38, + 38, 55, 39, 32, 38, 28, 31, 43, 45, 36, 35, 46, 53, 51, 91, 96, + 110, 133, 157, 171, 171, 166, 165, 168, 165, 160, 160, 167, 167, 163, 164, 169, + 169, 166, 158, 155, 158, 160, 154, 142, 148, 156, 145, 133, 131, 130, 118, 128, + 123, 108, 88, 63, 52, 62, 75, 86, 97, 100, 99, 101, 103, 101, 102, 104, + 104, 104, 104, 103, 102, 102, 97, 105, 102, 73, 77, 80, 78, 74, 70, 67, + 62, 64, 41, 19, 12, 14, 15, 15, 14, 8, 36, 63, 85, 119, 142, 155, + 165, 152, 160, 166, 168, 164, 160, 160, 164, 172, 171, 168, 165, 162, 161, 160, + 161, 160, 165, 160, 158, 166, 166, 164, 171, 172, 168, 163, 161, 161, 163, 162, + 162, 158, 165, 157, 149, 162, 140, 160, 134, 66, 32, 39, 43, 41, 34, 31, + 71, 102, 123, 144, 152, 156, 162, 167, 169, 178, 172, 180, 188, 183, 184, 189, + 187, 197, 190, 202, 202, 175, 173, 194, 205, 208, 195, 188, 193, 199, 195, 189, + 187, 190, 188, 187, 185, 183, 180, 178, 178, 172, 171, 169, 167, 166, 165, 164, + 164, 164, 162, 159, 158, 159, 160, 159, 158, 155, 178, 134, 157, 160, 133, 159, + 115, 33, 33, 34, 34, 32, 30, 28, 26, 29, 34, 37, 35, 30, 30, 35, + 41, 49, 54, 72, 90, 126, 155, 156, 171, 164, 174, 170, 159, 158, 158, 161, + 171, 159, 168, 172, 169, 162, 161, 161, 158, 151, 150, 153, 157, 152, 142, 135, + 134, 135, 139, 130, 123, 125, 108, 75, 54, 50, 45, 62, 82, 87, 91, 96, + 94, 102, 97, 106, 112, 102, 95, 100, 101, 97, 98, 97, 74, 75, 76, 76, + 76, 72, 63, 54, 34, 25, 17, 18, 18, 13, 11, 10, 22, 53, 81, 105, + 133, 148, 151, 156, 161, 163, 167, 169, 168, 166, 163, 164, 170, 171, 168, 166, + 164, 163, 163, 163, 163, 168, 163, 160, 167, 166, 164, 171, 168, 166, 161, 160, + 160, 161, 159, 159, 161, 143, 177, 149, 147, 148, 145, 66, 45, 31, 42, 40, + 36, 34, 23, 41, 40, 68, 105, 134, 152, 159, 155, 148, 151, 150, 162, 171, + 166, 167, 177, 180, 189, 174, 178, 184, 175, 173, 171, 156, 163, 164, 168, 170, + 170, 172, 176, 181, 172, 172, 172, 171, 170, 169, 168, 168, 169, 169, 168, 167, + 167, 167, 167, 168, 173, 170, 168, 167, 168, 169, 168, 168, 166, 154, 168, 154, + 161, 144, 157, 53, 37, 37, 37, 36, 34, 32, 30, 29, 33, 33, 32, 31, + 30, 30, 32, 33, 37, 42, 52, 53, 84, 121, 133, 153, 161, 170, 166, 163, + 169, 166, 154, 150, 157, 163, 166, 164, 161, 161, 160, 157, 158, 154, 151, 150, + 146, 140, 139, 142, 132, 141, 138, 133, 138, 131, 116, 107, 84, 57, 48, 56, + 67, 83, 94, 94, 106, 98, 99, 99, 90, 92, 98, 97, 107, 104, 100, 73, + 71, 73, 77, 79, 70, 53, 38, 17, 17, 21, 24, 18, 11, 10, 16, 23, + 57, 90, 118, 147, 158, 157, 161, 165, 163, 164, 165, 168, 168, 163, 162, 171, + 170, 168, 166, 165, 164, 165, 165, 165, 170, 164, 161, 166, 164, 160, 167, 163, + 162, 159, 159, 159, 158, 156, 154, 158, 142, 160, 154, 130, 151, 86, 27, 36, + 40, 49, 37, 33, 39, 27, 24, 32, 37, 43, 53, 71, 93, 109, 116, 114, + 114, 125, 129, 117, 114, 123, 128, 133, 108, 90, 84, 86, 101, 106, 92, 70, + 106, 142, 156, 156, 159, 163, 164, 171, 171, 171, 172, 172, 172, 173, 173, 181, + 180, 179, 178, 177, 177, 177, 177, 180, 178, 176, 176, 177, 178, 177, 176, 173, + 160, 163, 168, 153, 160, 105, 23, 38, 37, 36, 33, 32, 31, 30, 29, 35, + 32, 29, 28, 30, 31, 29, 27, 31, 37, 42, 31, 50, 84, 101, 128, 152, + 162, 162, 162, 171, 171, 164, 163, 156, 159, 160, 159, 161, 163, 159, 154, 159, + 154, 152, 152, 149, 144, 144, 146, 137, 147, 144, 136, 137, 136, 135, 140, 123, + 93, 69, 59, 53, 62, 77, 79, 96, 97, 107, 111, 106, 106, 104, 92, 94, + 93, 92, 76, 72, 73, 76, 72, 55, 36, 22, 22, 19, 21, 20, 14, 10, + 13, 23, 24, 57, 91, 123, 153, 163, 161, 165, 163, 162, 163, 166, 166, 166, + 164, 163, 169, 169, 168, 167, 166, 166, 166, 166, 164, 169, 163, 159, 164, 160, + 155, 160, 160, 159, 158, 158, 158, 157, 153, 150, 154, 150, 139, 135, 143, 102, + 33, 43, 42, 46, 46, 34, 29, 37, 33, 28, 24, 25, 25, 27, 31, 37, + 40, 41, 50, 45, 52, 54, 42, 37, 43, 44, 49, 48, 48, 45, 46, 53, + 54, 47, 46, 101, 152, 170, 171, 176, 179, 175, 183, 182, 182, 184, 183, 185, + 185, 186, 195, 194, 192, 189, 187, 185, 184, 184, 182, 181, 179, 179, 180, 181, + 180, 178, 175, 178, 147, 164, 167, 124, 47, 41, 33, 31, 29, 27, 27, 27, + 28, 29, 32, 31, 30, 29, 30, 30, 29, 28, 32, 33, 40, 34, 42, 56, + 67, 102, 124, 146, 158, 161, 166, 165, 164, 170, 160, 160, 158, 157, 161, 163, + 158, 150, 154, 152, 154, 158, 158, 151, 146, 145, 145, 152, 146, 135, 134, 132, + 135, 146, 134, 124, 115, 93, 60, 48, 57, 64, 71, 80, 97, 103, 99, 103, + 102, 90, 102, 103, 104, 84, 76, 68, 61, 47, 31, 22, 20, 24, 19, 15, + 14, 13, 11, 16, 24, 42, 70, 100, 128, 153, 157, 154, 159, 160, 165, 170, + 170, 168, 165, 166, 169, 167, 167, 167, 168, 168, 167, 168, 168, 165, 170, 164, + 160, 164, 159, 153, 158, 158, 157, 156, 157, 157, 156, 152, 149, 149, 148, 144, + 121, 138, 38, 35, 54, 40, 38, 32, 30, 29, 27, 30, 29, 18, 25, 35, + 39, 34, 26, 19, 18, 36, 27, 31, 38, 35, 36, 41, 38, 27, 37, 42, + 40, 40, 42, 45, 48, 87, 130, 165, 171, 169, 181, 188, 185, 190, 189, 188, + 188, 187, 188, 188, 189, 195, 194, 191, 189, 187, 185, 185, 184, 184, 182, 181, + 181, 182, 181, 179, 177, 175, 173, 169, 146, 170, 50, 44, 44, 27, 27, 25, + 25, 25, 26, 28, 29, 26, 30, 33, 32, 29, 28, 30, 34, 34, 25, 34, + 39, 42, 37, 42, 86, 102, 126, 142, 152, 163, 161, 153, 153, 165, 163, 159, + 157, 161, 163, 157, 148, 156, 153, 153, 158, 160, 154, 148, 147, 148, 149, 142, + 137, 141, 139, 140, 149, 128, 134, 141, 125, 86, 62, 59, 58, 48, 49, 57, + 57, 51, 61, 76, 78, 83, 93, 102, 83, 67, 50, 36, 22, 12, 14, 24, + 14, 9, 8, 12, 16, 15, 17, 23, 52, 79, 105, 129, 153, 155, 152, 159, + 153, 160, 168, 169, 166, 164, 165, 168, 166, 166, 167, 168, 169, 169, 169, 169, + 168, 173, 168, 164, 167, 162, 156, 159, 156, 155, 154, 155, 155, 153, 150, 147, + 139, 153, 138, 148, 64, 32, 47, 41, 34, 32, 24, 37, 38, 24, 27, 25, + 31, 28, 27, 25, 20, 19, 27, 37, 25, 13, 15, 24, 24, 28, 31, 26, + 36, 33, 20, 16, 26, 29, 34, 51, 110, 142, 167, 170, 171, 182, 184, 178, + 191, 190, 189, 187, 186, 187, 188, 188, 190, 190, 189, 188, 188, 189, 190, 190, + 187, 186, 184, 184, 184, 182, 179, 177, 170, 172, 181, 158, 101, 27, 53, 25, + 27, 26, 26, 27, 27, 28, 30, 31, 22, 29, 34, 33, 29, 27, 31, 36, + 37, 24, 31, 38, 42, 35, 37, 78, 110, 116, 115, 122, 147, 162, 164, 166, + 167, 166, 162, 158, 160, 162, 157, 149, 164, 156, 150, 151, 154, 153, 153, 154, + 151, 150, 142, 140, 146, 141, 135, 141, 140, 139, 143, 135, 112, 93, 75, 56, + 36, 32, 37, 42, 34, 36, 48, 53, 43, 57, 72, 58, 40, 27, 22, 15, + 7, 9, 17, 9, 6, 7, 11, 15, 17, 21, 30, 52, 75, 102, 130, 153, + 155, 153, 162, 150, 155, 164, 168, 168, 166, 164, 164, 165, 166, 168, 170, 171, + 171, 171, 170, 169, 175, 170, 166, 170, 164, 157, 161, 154, 152, 151, 151, 151, + 150, 147, 145, 137, 153, 128, 137, 16, 49, 40, 35, 32, 35, 24, 38, 39, + 24, 30, 21, 25, 22, 24, 29, 28, 22, 19, 21, 36, 25, 27, 32, 27, + 28, 32, 28, 21, 25, 24, 34, 47, 36, 32, 53, 135, 158, 180, 187, 190, + 195, 193, 187, 194, 193, 192, 190, 190, 191, 192, 192, 192, 191, 191, 191, 192, + 193, 194, 195, 190, 188, 186, 185, 185, 182, 178, 175, 169, 179, 164, 153, 30, + 44, 34, 24, 29, 28, 29, 29, 29, 28, 27, 28, 25, 28, 31, 31, 29, + 27, 28, 29, 36, 32, 38, 36, 42, 42, 35, 58, 115, 120, 112, 109, 126, + 145, 160, 175, 165, 165, 162, 158, 159, 161, 158, 151, 166, 158, 150, 152, 155, + 153, 154, 154, 152, 153, 147, 145, 146, 136, 129, 136, 148, 140, 142, 142, 135, + 126, 102, 71, 47, 33, 38, 53, 49, 41, 41, 41, 49, 54, 56, 28, 14, + 11, 19, 22, 12, 4, 4, 15, 12, 9, 11, 10, 14, 23, 38, 54, 77, + 103, 130, 151, 150, 145, 154, 154, 156, 163, 171, 176, 176, 170, 165, 164, 166, + 168, 170, 171, 172, 171, 171, 167, 173, 168, 165, 168, 163, 156, 160, 152, 150, + 148, 147, 148, 147, 145, 144, 146, 136, 141, 70, 43, 34, 34, 40, 31, 40, + 23, 29, 29, 22, 32, 17, 36, 26, 22, 27, 31, 28, 25, 25, 25, 18, + 22, 26, 18, 18, 25, 25, 26, 30, 24, 30, 39, 32, 50, 99, 162, 173, + 178, 177, 176, 182, 188, 191, 194, 194, 192, 191, 191, 193, 196, 197, 194, 193, + 192, 191, 191, 191, 191, 192, 190, 188, 186, 185, 184, 180, 176, 172, 176, 177, + 157, 108, 26, 47, 13, 42, 29, 30, 30, 30, 28, 26, 24, 22, 29, 27, + 27, 28, 29, 28, 25, 22, 27, 36, 45, 33, 39, 46, 27, 28, 99, 125, + 136, 127, 118, 114, 125, 145, 161, 163, 161, 158, 158, 160, 158, 154, 160, 155, + 152, 157, 160, 157, 151, 148, 147, 151, 150, 151, 152, 142, 138, 150, 135, 134, + 145, 153, 152, 150, 131, 101, 70, 38, 30, 47, 49, 44, 45, 48, 53, 49, + 45, 23, 19, 17, 15, 13, 12, 10, 9, 12, 11, 14, 14, 11, 11, 19, + 32, 66, 88, 104, 123, 150, 164, 160, 159, 156, 160, 167, 173, 179, 181, 173, + 164, 156, 157, 161, 167, 172, 175, 174, 172, 171, 168, 166, 165, 164, 162, 156, + 151, 155, 148, 151, 154, 146, 145, 146, 140, 162, 120, 126, 49, 35, 47, 29, + 35, 34, 30, 29, 32, 36, 35, 29, 23, 19, 28, 29, 27, 28, 23, 23, + 35, 27, 28, 27, 25, 22, 23, 25, 28, 28, 24, 24, 39, 55, 67, 100, + 148, 175, 180, 184, 187, 188, 189, 190, 193, 194, 195, 195, 195, 195, 195, 195, + 194, 195, 195, 194, 193, 193, 192, 191, 191, 191, 194, 192, 185, 179, 179, 178, + 176, 185, 158, 161, 55, 41, 30, 27, 28, 28, 25, 33, 37, 27, 25, 27, + 22, 32, 24, 31, 31, 22, 33, 41, 26, 33, 35, 37, 39, 40, 39, 37, + 36, 82, 129, 125, 133, 137, 133, 106, 132, 139, 157, 169, 166, 160, 160, 166, + 168, 165, 159, 157, 160, 159, 153, 150, 153, 155, 153, 151, 150, 150, 146, 143, + 142, 130, 139, 143, 142, 144, 147, 137, 124, 65, 31, 40, 62, 53, 50, 54, + 40, 50, 48, 45, 14, 11, 9, 7, 6, 5, 6, 6, 9, 9, 12, 14, + 13, 13, 20, 33, 54, 86, 112, 128, 143, 147, 146, 151, 167, 167, 170, 170, + 175, 179, 177, 171, 172, 169, 166, 165, 167, 169, 170, 170, 170, 168, 166, 166, + 166, 163, 158, 154, 148, 142, 147, 150, 145, 146, 149, 144, 146, 140, 98, 39, + 40, 40, 33, 32, 29, 26, 25, 28, 31, 30, 25, 20, 23, 28, 25, 23, + 25, 19, 17, 27, 24, 26, 28, 28, 28, 28, 27, 27, 32, 26, 34, 78, + 132, 153, 156, 166, 171, 176, 180, 184, 185, 186, 188, 190, 197, 197, 198, 198, + 197, 197, 197, 196, 193, 193, 192, 192, 192, 191, 191, 191, 188, 188, 184, 180, + 180, 182, 179, 174, 173, 162, 129, 28, 28, 27, 23, 33, 23, 23, 25, 21, + 15, 23, 32, 31, 15, 25, 39, 39, 29, 29, 30, 23, 31, 33, 35, 37, + 38, 38, 37, 36, 61, 122, 126, 131, 135, 132, 127, 125, 128, 140, 150, 154, + 156, 162, 165, 164, 161, 154, 151, 154, 155, 152, 149, 151, 151, 153, 154, 152, + 147, 142, 142, 144, 137, 141, 145, 147, 151, 150, 139, 128, 109, 70, 54, 56, + 45, 44, 53, 53, 57, 54, 51, 13, 10, 8, 7, 6, 8, 9, 9, 6, + 5, 7, 10, 9, 10, 16, 28, 74, 103, 126, 141, 158, 160, 154, 156, 158, + 166, 176, 181, 185, 182, 171, 159, 166, 165, 165, 167, 171, 174, 175, 175, 167, + 166, 165, 165, 166, 163, 158, 154, 147, 141, 145, 148, 144, 147, 149, 142, 136, + 154, 63, 35, 45, 36, 40, 33, 26, 22, 22, 25, 28, 27, 22, 18, 26, + 26, 20, 21, 27, 21, 17, 25, 37, 33, 28, 25, 26, 28, 29, 31, 28, + 46, 74, 116, 158, 169, 164, 167, 174, 178, 183, 186, 187, 189, 191, 193, 196, + 196, 197, 197, 197, 197, 197, 197, 191, 191, 191, 191, 191, 190, 190, 190, 187, + 184, 180, 178, 183, 187, 182, 174, 173, 167, 96, 21, 28, 33, 21, 32, 37, + 37, 30, 23, 30, 41, 36, 18, 22, 28, 24, 22, 29, 32, 30, 31, 28, + 29, 32, 34, 36, 36, 36, 36, 38, 102, 130, 129, 134, 133, 147, 121, 129, + 134, 140, 148, 158, 167, 168, 165, 164, 156, 151, 153, 157, 156, 155, 154, 149, + 155, 158, 154, 146, 142, 144, 147, 143, 139, 141, 150, 157, 151, 140, 131, 113, + 80, 53, 46, 44, 40, 45, 51, 43, 42, 42, 8, 9, 10, 11, 11, 12, + 12, 11, 8, 7, 7, 10, 10, 9, 13, 22, 56, 90, 117, 130, 141, 144, + 145, 155, 149, 161, 175, 182, 184, 179, 166, 154, 157, 160, 167, 173, 178, 177, + 172, 168, 166, 166, 166, 165, 164, 160, 155, 151, 152, 146, 148, 149, 144, 147, + 148, 137, 141, 130, 35, 37, 41, 37, 40, 28, 27, 25, 24, 26, 28, 28, + 24, 21, 24, 23, 18, 22, 31, 24, 19, 27, 25, 25, 27, 31, 38, 41, + 40, 39, 73, 110, 140, 153, 160, 160, 165, 178, 175, 179, 184, 188, 189, 191, + 192, 195, 193, 194, 194, 195, 194, 196, 195, 195, 194, 193, 193, 192, 191, 190, + 189, 189, 187, 187, 184, 182, 185, 188, 184, 177, 165, 141, 58, 30, 30, 38, + 25, 28, 13, 33, 35, 24, 27, 36, 30, 18, 29, 39, 30, 23, 32, 30, + 27, 40, 28, 29, 31, 34, 36, 37, 37, 38, 31, 69, 134, 130, 135, 140, + 150, 128, 140, 140, 142, 146, 155, 163, 166, 167, 168, 161, 155, 155, 159, 160, + 158, 155, 152, 157, 158, 154, 149, 148, 148, 146, 142, 133, 135, 150, 158, 151, + 140, 135, 124, 94, 58, 47, 56, 55, 52, 59, 45, 46, 46, 2, 4, 8, + 12, 13, 13, 10, 8, 16, 13, 12, 14, 12, 9, 11, 17, 31, 75, 116, + 133, 141, 146, 155, 174, 157, 161, 164, 165, 167, 171, 172, 170, 172, 174, 176, + 178, 177, 171, 162, 156, 169, 170, 171, 170, 167, 161, 156, 152, 155, 151, 153, + 153, 148, 151, 149, 133, 145, 79, 24, 43, 30, 38, 32, 22, 25, 24, 25, + 27, 28, 27, 26, 24, 23, 22, 18, 25, 32, 25, 21, 34, 32, 46, 67, + 88, 102, 105, 101, 96, 133, 154, 164, 164, 172, 176, 176, 182, 173, 177, 180, + 184, 186, 187, 189, 191, 191, 192, 192, 194, 193, 195, 194, 195, 198, 197, 195, + 194, 192, 190, 189, 188, 186, 189, 189, 185, 182, 183, 181, 177, 158, 102, 27, + 33, 22, 33, 32, 40, 79, 103, 90, 44, 18, 15, 26, 42, 16, 40, 47, + 43, 41, 25, 17, 34, 29, 30, 32, 34, 36, 37, 38, 40, 38, 40, 129, + 131, 137, 147, 140, 142, 143, 143, 142, 142, 143, 148, 156, 164, 166, 161, 155, + 154, 156, 159, 155, 151, 153, 154, 152, 148, 150, 153, 149, 141, 138, 131, 135, + 150, 159, 153, 144, 141, 146, 109, 59, 39, 48, 52, 51, 57, 49, 50, 48, + 3, 6, 11, 16, 18, 17, 13, 10, 14, 10, 9, 10, 8, 5, 5, 8, + 4, 29, 58, 88, 125, 143, 141, 141, 151, 157, 163, 165, 167, 171, 172, 170, + 184, 182, 177, 174, 171, 169, 166, 163, 172, 174, 176, 175, 171, 165, 161, 157, + 155, 153, 157, 157, 153, 157, 150, 130, 132, 44, 32, 49, 31, 40, 32, 25, + 24, 23, 25, 25, 25, 25, 25, 24, 23, 23, 21, 25, 29, 20, 26, 48, + 89, 100, 115, 129, 141, 150, 157, 161, 154, 164, 166, 164, 173, 174, 172, 175, + 176, 180, 184, 186, 187, 188, 189, 191, 192, 192, 193, 194, 194, 195, 196, 196, + 198, 197, 196, 194, 192, 190, 189, 188, 184, 189, 190, 185, 180, 178, 177, 174, + 180, 116, 47, 38, 23, 31, 35, 74, 122, 159, 170, 157, 141, 98, 39, 12, + 38, 35, 28, 31, 41, 38, 28, 28, 31, 31, 32, 34, 35, 37, 38, 39, + 44, 32, 106, 130, 139, 149, 136, 152, 144, 144, 145, 143, 139, 139, 149, 160, + 161, 162, 160, 157, 157, 159, 157, 153, 151, 152, 147, 143, 148, 154, 149, 136, + 137, 135, 141, 152, 158, 156, 150, 146, 137, 102, 67, 52, 51, 51, 50, 45, + 48, 48, 48, 9, 11, 13, 16, 17, 17, 17, 16, 12, 7, 5, 7, 6, + 2, 0, 3, 14, 19, 27, 55, 105, 136, 136, 131, 138, 151, 164, 170, 171, + 169, 164, 159, 174, 172, 169, 169, 170, 172, 173, 173, 168, 172, 176, 176, 173, + 168, 164, 162, 158, 158, 162, 161, 155, 157, 147, 122, 90, 38, 42, 42, 37, + 34, 33, 31, 23, 23, 24, 24, 24, 23, 25, 25, 24, 25, 23, 24, 25, + 22, 43, 79, 127, 130, 132, 132, 135, 143, 158, 170, 167, 178, 180, 179, 181, + 174, 174, 187, 181, 183, 187, 189, 189, 189, 190, 191, 190, 190, 191, 191, 192, + 193, 194, 195, 194, 194, 193, 193, 192, 191, 191, 190, 185, 188, 187, 183, 182, + 181, 177, 171, 187, 157, 91, 36, 32, 34, 29, 113, 153, 164, 152, 149, 172, + 158, 120, 108, 105, 73, 50, 44, 43, 44, 40, 31, 31, 31, 32, 32, 33, + 35, 36, 37, 40, 45, 72, 126, 140, 143, 147, 152, 149, 148, 150, 150, 143, + 138, 142, 151, 153, 160, 163, 160, 158, 160, 161, 158, 150, 154, 151, 145, 147, + 153, 151, 138, 135, 141, 148, 152, 154, 155, 151, 145, 132, 106, 95, 87, 70, + 67, 71, 59, 65, 63, 64, 8, 7, 7, 8, 9, 10, 13, 14, 15, 10, + 9, 12, 12, 9, 8, 10, 0, 14, 20, 23, 43, 70, 100, 129, 139, 148, + 154, 155, 155, 160, 164, 164, 161, 163, 165, 168, 171, 171, 168, 166, 161, 167, + 171, 174, 170, 166, 163, 162, 163, 163, 167, 163, 155, 154, 141, 113, 46, 39, + 41, 26, 37, 20, 28, 28, 24, 25, 26, 26, 26, 25, 26, 27, 23, 25, + 25, 25, 26, 29, 60, 107, 134, 145, 157, 160, 156, 154, 159, 164, 176, 175, + 172, 178, 188, 184, 180, 190, 179, 182, 184, 186, 185, 185, 186, 187, 187, 188, + 188, 189, 190, 191, 192, 192, 189, 189, 189, 191, 190, 192, 192, 192, 189, 188, + 185, 183, 187, 188, 181, 171, 156, 169, 110, 21, 36, 35, 19, 137, 141, 168, + 165, 162, 177, 165, 152, 171, 156, 140, 133, 107, 53, 28, 34, 35, 31, 31, + 31, 31, 31, 32, 34, 35, 32, 61, 46, 122, 139, 137, 160, 148, 151, 149, + 150, 152, 145, 135, 132, 136, 142, 153, 159, 157, 154, 157, 158, 157, 150, 159, + 158, 150, 149, 154, 153, 144, 133, 145, 152, 148, 147, 151, 147, 140, 141, 112, + 104, 89, 55, 55, 75, 67, 71, 66, 63, 10, 4, 1, 2, 7, 12, 13, + 13, 10, 4, 7, 10, 7, 11, 14, 8, 17, 16, 13, 13, 11, 8, 27, + 68, 123, 129, 137, 144, 150, 154, 158, 159, 165, 159, 158, 159, 164, 167, 167, + 165, 162, 165, 166, 165, 163, 162, 163, 168, 172, 169, 162, 154, 159, 168, 136, + 81, 35, 40, 38, 30, 28, 34, 34, 29, 29, 27, 24, 23, 24, 29, 34, + 36, 33, 31, 25, 27, 46, 80, 107, 121, 141, 146, 150, 151, 152, 156, 162, + 168, 168, 178, 183, 182, 181, 185, 183, 178, 185, 187, 188, 184, 183, 188, 191, + 191, 187, 191, 193, 192, 192, 193, 195, 195, 191, 188, 185, 187, 189, 191, 190, + 188, 188, 182, 186, 189, 183, 185, 185, 176, 164, 111, 78, 41, 37, 28, 27, + 114, 157, 154, 160, 172, 175, 172, 174, 182, 165, 179, 177, 165, 138, 79, 30, + 27, 30, 29, 40, 43, 33, 29, 34, 36, 42, 39, 53, 100, 141, 142, 142, + 156, 148, 156, 159, 154, 145, 141, 138, 135, 136, 149, 161, 163, 158, 159, 159, + 158, 157, 158, 157, 154, 147, 142, 138, 137, 145, 143, 145, 152, 153, 148, 145, + 142, 143, 123, 116, 80, 65, 70, 61, 72, 65, 61, 60, 11, 11, 11, 11, + 11, 9, 9, 9, 14, 7, 10, 13, 11, 14, 17, 12, 7, 14, 16, 19, + 18, 2, 0, 13, 54, 100, 127, 123, 127, 153, 161, 147, 155, 154, 154, 156, + 155, 156, 159, 162, 161, 165, 166, 163, 156, 155, 160, 168, 179, 174, 170, 164, + 159, 149, 102, 42, 49, 47, 46, 44, 37, 29, 28, 32, 29, 28, 29, 31, + 33, 30, 23, 18, 40, 29, 39, 76, 107, 117, 124, 137, 142, 148, 156, 160, + 160, 159, 161, 163, 167, 174, 179, 177, 178, 183, 185, 183, 180, 183, 184, 182, + 185, 189, 189, 185, 196, 190, 183, 180, 184, 188, 186, 181, 189, 185, 184, 184, + 186, 188, 189, 188, 189, 182, 186, 187, 182, 183, 184, 176, 175, 129, 85, 32, + 29, 36, 31, 94, 155, 144, 146, 161, 168, 159, 155, 162, 154, 167, 172, 177, + 177, 143, 80, 32, 50, 32, 21, 27, 34, 34, 34, 36, 42, 31, 49, 75, + 127, 142, 143, 147, 147, 153, 155, 150, 145, 142, 138, 133, 143, 133, 145, 166, + 167, 160, 161, 165, 161, 161, 160, 157, 152, 149, 145, 144, 148, 146, 148, 153, + 153, 148, 142, 141, 144, 130, 115, 78, 50, 63, 59, 71, 68, 66, 65, 7, + 12, 17, 17, 13, 8, 7, 8, 15, 8, 12, 15, 11, 14, 17, 11, 10, + 17, 13, 10, 16, 12, 6, 10, 18, 53, 97, 126, 140, 144, 142, 138, 147, + 152, 156, 155, 151, 151, 159, 166, 160, 164, 166, 162, 156, 156, 162, 171, 159, + 169, 176, 160, 130, 114, 104, 88, 49, 48, 38, 30, 35, 45, 37, 19, 32, + 28, 22, 22, 28, 34, 39, 39, 36, 40, 67, 110, 134, 134, 132, 140, 146, + 152, 159, 163, 164, 164, 166, 169, 168, 172, 175, 174, 175, 181, 185, 186, 183, + 185, 184, 183, 186, 190, 187, 181, 177, 178, 182, 187, 189, 187, 182, 177, 187, + 183, 182, 182, 184, 187, 189, 188, 190, 182, 185, 185, 179, 180, 182, 174, 169, + 130, 81, 26, 30, 44, 19, 35, 96, 143, 163, 142, 136, 162, 169, 155, 174, + 175, 170, 161, 164, 158, 106, 36, 20, 40, 40, 28, 33, 40, 34, 26, 43, + 26, 46, 48, 103, 144, 146, 142, 149, 152, 152, 149, 148, 147, 142, 135, 143, + 124, 134, 156, 160, 165, 169, 160, 165, 162, 158, 157, 157, 155, 152, 149, 149, + 147, 148, 152, 153, 148, 142, 141, 141, 138, 116, 85, 32, 48, 42, 53, 52, + 55, 60, 4, 8, 13, 14, 13, 10, 8, 8, 12, 5, 10, 13, 9, 13, + 16, 11, 14, 21, 11, 2, 10, 19, 20, 25, 7, 12, 38, 80, 110, 119, + 122, 129, 143, 149, 153, 152, 150, 151, 156, 162, 158, 160, 161, 161, 160, 162, + 166, 170, 179, 160, 152, 154, 158, 165, 162, 147, 150, 119, 78, 48, 33, 31, + 38, 46, 31, 33, 34, 33, 30, 27, 26, 26, 53, 84, 112, 119, 120, 129, + 136, 139, 148, 150, 150, 150, 151, 156, 165, 172, 167, 170, 172, 173, 174, 177, + 181, 183, 184, 186, 186, 182, 181, 182, 180, 176, 178, 179, 181, 177, 171, 171, + 183, 196, 181, 181, 183, 185, 186, 187, 187, 187, 190, 182, 184, 184, 177, 178, + 180, 173, 177, 159, 123, 64, 45, 47, 27, 35, 47, 70, 113, 149, 151, 136, + 138, 156, 159, 158, 162, 157, 156, 175, 164, 119, 29, 45, 44, 36, 40, 37, + 29, 28, 42, 32, 43, 38, 71, 145, 148, 147, 154, 154, 152, 151, 154, 155, + 149, 140, 139, 132, 136, 136, 137, 166, 178, 151, 167, 161, 156, 155, 157, 157, + 153, 148, 146, 144, 145, 150, 151, 147, 143, 142, 131, 139, 120, 102, 31, 45, + 36, 41, 38, 47, 54, 10, 9, 8, 10, 12, 13, 10, 8, 9, 3, 8, + 12, 9, 14, 19, 13, 5, 21, 19, 9, 13, 15, 10, 9, 9, 18, 17, + 18, 47, 98, 126, 130, 139, 144, 147, 148, 147, 147, 147, 149, 158, 157, 156, + 158, 160, 162, 161, 160, 166, 156, 161, 174, 179, 181, 174, 159, 156, 139, 145, + 156, 117, 48, 16, 27, 25, 28, 31, 29, 30, 42, 61, 79, 108, 132, 145, + 135, 125, 131, 142, 146, 141, 143, 142, 140, 139, 142, 149, 156, 158, 161, 165, + 170, 172, 174, 177, 181, 175, 181, 182, 176, 172, 173, 176, 176, 175, 178, 185, + 190, 184, 173, 169, 171, 174, 178, 184, 188, 188, 187, 186, 185, 189, 182, 184, + 184, 177, 178, 180, 171, 163, 167, 151, 91, 37, 16, 17, 42, 32, 36, 69, + 124, 157, 153, 141, 140, 158, 159, 171, 171, 158, 160, 158, 133, 114, 71, 34, + 33, 40, 30, 28, 44, 35, 41, 39, 42, 42, 134, 148, 157, 156, 155, 153, + 152, 156, 158, 152, 143, 142, 140, 140, 131, 129, 154, 172, 160, 166, 162, 156, + 155, 158, 158, 152, 147, 144, 141, 142, 148, 150, 147, 144, 144, 126, 135, 120, + 116, 41, 48, 47, 47, 41, 49, 54, 18, 13, 9, 9, 12, 13, 11, 7, + 11, 6, 10, 14, 10, 14, 19, 14, 3, 19, 19, 10, 11, 11, 8, 12, + 17, 23, 24, 20, 26, 49, 77, 100, 128, 136, 140, 144, 145, 145, 144, 142, + 156, 155, 153, 153, 154, 154, 151, 150, 144, 161, 185, 185, 162, 153, 161, 166, + 153, 152, 149, 141, 129, 103, 63, 32, 33, 43, 56, 66, 79, 104, 134, 157, + 150, 144, 142, 147, 146, 140, 141, 147, 144, 148, 150, 150, 145, 141, 140, 142, + 145, 147, 154, 162, 167, 168, 172, 178, 170, 176, 178, 175, 173, 175, 177, 175, + 172, 164, 167, 184, 193, 187, 172, 164, 170, 175, 182, 186, 187, 185, 184, 184, + 187, 180, 184, 186, 179, 179, 180, 171, 176, 177, 169, 141, 100, 68, 48, 40, + 29, 50, 56, 53, 87, 142, 163, 151, 137, 136, 145, 156, 159, 162, 163, 154, + 151, 128, 93, 48, 20, 32, 45, 34, 30, 44, 35, 46, 31, 107, 150, 162, + 156, 155, 153, 151, 154, 157, 152, 144, 149, 141, 138, 144, 141, 133, 144, 168, + 165, 162, 159, 160, 160, 159, 155, 151, 145, 141, 142, 147, 150, 147, 144, 145, + 139, 134, 117, 116, 44, 34, 43, 37, 30, 38, 41, 12, 11, 9, 9, 10, + 11, 10, 9, 14, 7, 10, 14, 10, 12, 15, 9, 10, 17, 10, 3, 8, + 9, 14, 25, 13, 8, 17, 30, 21, 2, 10, 39, 92, 108, 122, 132, 135, + 138, 141, 146, 150, 152, 153, 149, 146, 147, 152, 158, 181, 173, 171, 171, 171, + 180, 178, 160, 155, 169, 164, 146, 151, 156, 111, 48, 85, 102, 127, 146, 153, + 151, 144, 141, 152, 143, 141, 148, 151, 148, 144, 146, 150, 154, 157, 157, 151, + 147, 145, 145, 141, 140, 145, 151, 155, 156, 162, 170, 170, 171, 172, 173, 177, + 177, 170, 160, 160, 135, 114, 114, 126, 142, 163, 182, 167, 173, 178, 180, 180, + 180, 183, 185, 185, 179, 185, 188, 182, 181, 181, 171, 166, 162, 154, 152, 144, + 125, 86, 36, 49, 27, 21, 31, 38, 51, 96, 149, 162, 165, 156, 150, 155, + 153, 147, 147, 141, 153, 153, 90, 22, 35, 57, 27, 30, 41, 37, 44, 41, + 75, 159, 163, 157, 158, 156, 153, 155, 157, 153, 146, 146, 150, 145, 152, 152, + 118, 108, 144, 160, 160, 161, 163, 161, 160, 157, 154, 151, 146, 146, 149, 150, + 147, 143, 144, 149, 129, 117, 120, 57, 24, 38, 22, 17, 27, 32, 0, 4, + 8, 9, 8, 7, 10, 14, 15, 7, 10, 12, 6, 7, 9, 2, 10, 14, + 8, 6, 12, 7, 4, 11, 20, 26, 25, 18, 16, 20, 20, 18, 48, 72, + 97, 111, 117, 123, 134, 145, 143, 150, 153, 147, 141, 145, 161, 175, 171, 169, + 170, 165, 163, 172, 170, 149, 149, 144, 147, 156, 149, 135, 135, 148, 152, 147, + 142, 140, 143, 148, 149, 151, 139, 157, 161, 148, 145, 158, 162, 153, 150, 152, + 152, 150, 146, 146, 149, 153, 144, 140, 140, 144, 145, 144, 150, 160, 167, 165, + 161, 164, 172, 171, 154, 134, 86, 80, 80, 82, 79, 81, 103, 130, 168, 172, + 174, 174, 174, 176, 182, 186, 183, 178, 185, 190, 184, 183, 182, 171, 169, 174, + 167, 158, 149, 150, 137, 96, 61, 44, 39, 47, 42, 33, 47, 75, 116, 141, + 142, 138, 149, 154, 148, 154, 161, 129, 140, 126, 54, 29, 50, 46, 35, 38, + 42, 41, 57, 56, 168, 162, 160, 162, 160, 157, 157, 158, 155, 150, 135, 163, + 158, 148, 150, 113, 84, 107, 152, 154, 159, 161, 161, 159, 157, 157, 156, 151, + 149, 152, 151, 147, 143, 143, 144, 118, 118, 131, 81, 34, 49, 26, 26, 34, + 40, 7, 9, 9, 6, 6, 11, 14, 12, 11, 12, 12, 11, 10, 9, 7, + 7, 11, 13, 12, 10, 8, 8, 10, 13, 14, 18, 20, 18, 19, 17, 11, + 7, 29, 13, 61, 111, 97, 105, 136, 132, 137, 149, 142, 131, 145, 164, 167, + 165, 167, 162, 158, 159, 161, 158, 149, 141, 154, 145, 136, 137, 136, 137, 146, + 155, 143, 142, 139, 138, 140, 143, 146, 148, 152, 155, 157, 158, 158, 154, 149, + 146, 164, 156, 149, 150, 157, 160, 156, 150, 153, 150, 148, 148, 150, 150, 148, + 145, 148, 153, 145, 138, 151, 156, 117, 65, 73, 82, 53, 60, 70, 82, 91, + 100, 147, 170, 174, 165, 168, 174, 178, 184, 178, 176, 177, 180, 185, 186, 180, + 175, 174, 176, 170, 159, 153, 153, 149, 143, 120, 91, 57, 38, 40, 44, 39, + 31, 44, 103, 153, 154, 138, 139, 146, 148, 148, 153, 164, 131, 117, 51, 24, + 57, 45, 35, 42, 52, 38, 79, 159, 173, 155, 167, 166, 154, 152, 161, 160, + 149, 139, 150, 151, 151, 155, 138, 105, 83, 117, 161, 160, 165, 163, 158, 165, + 153, 155, 153, 149, 144, 144, 146, 141, 135, 132, 123, 119, 127, 89, 39, 46, + 57, 43, 53, 73, 8, 10, 9, 6, 6, 11, 13, 11, 11, 11, 11, 11, + 10, 9, 8, 8, 11, 12, 11, 9, 7, 9, 12, 15, 10, 14, 17, 17, + 19, 22, 18, 15, 29, 8, 30, 65, 79, 111, 133, 112, 107, 102, 103, 128, + 157, 164, 169, 187, 146, 145, 145, 148, 152, 154, 150, 146, 145, 142, 141, 146, + 144, 139, 138, 141, 144, 144, 145, 146, 147, 148, 148, 148, 151, 153, 154, 155, + 154, 152, 148, 146, 157, 150, 146, 147, 153, 156, 154, 150, 153, 153, 153, 155, + 157, 155, 152, 148, 147, 147, 139, 130, 120, 110, 91, 74, 58, 75, 76, 65, + 59, 69, 75, 83, 100, 134, 160, 169, 179, 180, 173, 172, 184, 183, 183, 180, + 178, 176, 175, 175, 172, 176, 172, 164, 161, 161, 158, 153, 144, 145, 130, 96, + 56, 33, 35, 47, 29, 47, 78, 117, 150, 161, 150, 134, 166, 155, 151, 146, + 158, 107, 35, 21, 35, 38, 40, 47, 52, 101, 169, 175, 156, 163, 165, 159, + 157, 161, 158, 149, 141, 147, 146, 147, 150, 135, 102, 77, 34, 107, 137, 145, + 145, 152, 172, 165, 151, 151, 150, 146, 147, 148, 142, 135, 144, 127, 114, 123, + 98, 59, 58, 54, 68, 70, 78, 9, 12, 12, 8, 7, 11, 11, 9, 9, + 9, 11, 11, 11, 10, 9, 10, 11, 12, 10, 9, 7, 10, 13, 17, 11, + 13, 15, 15, 19, 23, 21, 19, 25, 22, 19, 12, 16, 43, 56, 39, 24, + 56, 104, 155, 176, 153, 132, 137, 144, 147, 151, 156, 158, 160, 160, 159, 144, + 144, 146, 151, 148, 142, 137, 137, 140, 143, 147, 150, 149, 148, 146, 144, 146, + 148, 148, 148, 146, 146, 145, 143, 147, 145, 143, 145, 147, 150, 150, 150, 152, + 154, 157, 164, 166, 167, 162, 158, 154, 148, 145, 142, 120, 87, 66, 66, 60, + 63, 36, 52, 51, 72, 61, 102, 116, 145, 165, 173, 184, 188, 186, 188, 185, + 186, 186, 182, 175, 175, 180, 186, 174, 176, 176, 172, 170, 170, 167, 162, 153, + 158, 157, 142, 118, 102, 100, 105, 91, 63, 49, 69, 97, 118, 139, 158, 146, + 146, 141, 147, 155, 130, 55, 34, 30, 44, 38, 49, 83, 134, 180, 177, 159, + 159, 160, 162, 163, 160, 154, 150, 146, 145, 146, 147, 146, 133, 105, 79, 42, + 57, 80, 127, 163, 155, 165, 176, 150, 151, 151, 148, 148, 148, 143, 136, 131, + 120, 110, 118, 103, 77, 80, 70, 80, 77, 71, 10, 13, 13, 9, 8, 10, + 10, 6, 8, 8, 10, 11, 11, 11, 10, 11, 11, 11, 9, 9, 8, 11, + 16, 20, 15, 16, 15, 13, 14, 18, 17, 15, 17, 29, 22, 5, 7, 21, + 25, 23, 22, 91, 141, 148, 144, 143, 139, 139, 153, 158, 164, 167, 164, 161, + 158, 159, 150, 149, 146, 146, 145, 144, 144, 146, 142, 144, 147, 150, 151, 149, + 146, 144, 148, 147, 147, 146, 146, 145, 146, 146, 145, 146, 146, 146, 146, 145, + 147, 149, 149, 152, 159, 166, 170, 173, 171, 169, 167, 153, 148, 151, 142, 115, + 92, 83, 66, 84, 71, 44, 58, 63, 100, 88, 135, 153, 160, 159, 167, 174, + 179, 189, 190, 191, 191, 187, 181, 179, 184, 188, 179, 181, 182, 181, 178, 175, + 171, 168, 173, 166, 161, 161, 164, 161, 151, 141, 143, 123, 110, 107, 100, 93, + 109, 133, 145, 157, 156, 157, 143, 131, 62, 43, 33, 46, 36, 66, 127, 166, + 183, 178, 164, 155, 154, 161, 163, 156, 150, 150, 148, 145, 150, 153, 145, 134, + 116, 94, 76, 37, 33, 79, 142, 139, 146, 161, 151, 153, 152, 148, 146, 146, + 143, 138, 132, 133, 126, 121, 91, 64, 70, 61, 68, 71, 66, 10, 14, 13, + 9, 8, 10, 9, 5, 9, 9, 10, 11, 12, 12, 11, 11, 10, 11, 11, + 10, 10, 13, 18, 21, 19, 19, 17, 14, 14, 18, 17, 14, 22, 25, 17, + 17, 32, 33, 23, 24, 50, 118, 150, 128, 121, 143, 157, 158, 150, 157, 163, + 163, 156, 148, 142, 141, 148, 147, 144, 142, 142, 146, 149, 151, 150, 151, 152, + 153, 153, 153, 152, 152, 154, 152, 151, 151, 151, 152, 153, 154, 148, 151, 152, + 150, 148, 146, 146, 148, 149, 153, 158, 163, 165, 168, 169, 169, 168, 159, 146, + 143, 146, 149, 142, 132, 101, 99, 36, 112, 49, 63, 105, 123, 129, 148, 157, + 161, 170, 172, 172, 179, 197, 195, 193, 191, 187, 184, 181, 179, 184, 185, 187, + 189, 188, 184, 180, 178, 175, 175, 174, 170, 165, 162, 163, 164, 164, 158, 153, + 149, 141, 129, 117, 110, 123, 128, 128, 140, 142, 143, 70, 29, 37, 44, 40, + 93, 165, 183, 181, 180, 169, 155, 149, 156, 160, 153, 148, 150, 145, 141, 155, + 159, 145, 135, 127, 110, 62, 52, 50, 41, 95, 123, 149, 154, 154, 156, 153, + 146, 142, 143, 141, 138, 123, 127, 122, 117, 89, 66, 72, 61, 62, 67, 64, + 10, 13, 13, 10, 9, 10, 9, 5, 10, 10, 11, 11, 12, 11, 10, 9, + 10, 11, 12, 13, 12, 14, 17, 20, 19, 21, 19, 17, 19, 23, 22, 17, + 15, 19, 19, 24, 26, 16, 15, 31, 74, 115, 138, 141, 149, 153, 147, 140, + 150, 155, 159, 159, 152, 145, 139, 137, 137, 141, 143, 144, 146, 149, 149, 147, + 153, 152, 151, 151, 151, 152, 151, 152, 150, 150, 150, 150, 151, 151, 152, 153, + 154, 156, 157, 156, 153, 151, 150, 150, 151, 155, 159, 161, 161, 163, 162, 163, + 156, 164, 163, 151, 147, 156, 156, 147, 154, 142, 165, 252, 76, 57, 119, 116, + 144, 158, 163, 167, 176, 177, 177, 186, 187, 188, 190, 193, 193, 192, 189, 186, + 188, 188, 191, 196, 197, 194, 192, 193, 180, 180, 177, 172, 168, 168, 172, 178, + 171, 173, 166, 154, 151, 154, 152, 144, 142, 133, 133, 139, 147, 151, 96, 55, + 43, 53, 62, 124, 183, 182, 178, 182, 174, 159, 149, 152, 157, 153, 148, 146, + 143, 134, 152, 161, 145, 137, 136, 119, 67, 50, 63, 48, 99, 115, 137, 149, + 151, 154, 153, 146, 142, 142, 140, 138, 125, 120, 110, 113, 95, 72, 72, 54, + 42, 45, 44, 8, 11, 12, 9, 10, 11, 10, 6, 11, 11, 11, 11, 10, + 9, 8, 7, 8, 11, 13, 14, 14, 16, 16, 18, 18, 20, 20, 18, 20, + 24, 23, 17, 2, 10, 23, 29, 26, 34, 64, 96, 126, 137, 141, 147, 161, + 163, 159, 161, 154, 154, 153, 150, 148, 145, 144, 143, 137, 142, 146, 145, 148, + 153, 153, 149, 150, 150, 150, 150, 149, 149, 149, 149, 148, 147, 148, 149, 150, + 150, 151, 152, 157, 159, 159, 159, 158, 157, 155, 153, 153, 159, 166, 169, 168, + 168, 166, 166, 157, 169, 174, 165, 157, 156, 151, 142, 146, 173, 137, 60, 155, + 148, 160, 155, 155, 162, 158, 158, 167, 172, 178, 192, 184, 190, 196, 198, 197, + 195, 197, 198, 191, 189, 191, 198, 199, 195, 195, 198, 206, 195, 184, 180, 183, + 183, 176, 169, 163, 177, 182, 176, 167, 165, 164, 162, 162, 144, 146, 124, 115, + 99, 62, 30, 59, 84, 107, 155, 182, 172, 176, 181, 175, 164, 153, 153, 158, + 158, 149, 140, 148, 130, 148, 162, 149, 144, 143, 119, 77, 29, 48, 60, 126, + 114, 113, 128, 141, 148, 152, 148, 144, 143, 140, 137, 143, 134, 120, 119, 89, + 52, 45, 29, 29, 30, 36, 8, 12, 12, 9, 10, 12, 10, 7, 12, 12, + 12, 11, 10, 9, 7, 7, 8, 11, 14, 16, 16, 15, 16, 17, 17, 19, + 19, 17, 18, 21, 19, 11, 24, 15, 15, 21, 36, 71, 108, 124, 126, 144, + 146, 144, 153, 161, 161, 166, 148, 144, 138, 135, 134, 136, 138, 139, 145, 149, + 148, 145, 147, 154, 158, 156, 152, 153, 153, 154, 153, 153, 151, 151, 152, 153, + 154, 156, 156, 157, 157, 158, 159, 158, 158, 160, 162, 162, 159, 157, 153, 161, + 172, 179, 180, 178, 177, 176, 176, 170, 161, 158, 160, 164, 163, 158, 164, 126, + 153, 163, 143, 166, 148, 156, 151, 160, 162, 168, 181, 186, 192, 205, 199, 207, + 212, 207, 196, 190, 192, 197, 193, 190, 191, 196, 196, 190, 190, 194, 187, 185, + 183, 186, 188, 190, 190, 188, 190, 184, 177, 173, 171, 171, 172, 173, 175, 155, + 174, 158, 161, 133, 93, 52, 77, 117, 148, 176, 175, 163, 175, 178, 176, 167, + 157, 156, 161, 162, 150, 136, 155, 131, 145, 163, 153, 151, 148, 119, 74, 46, + 76, 77, 146, 145, 135, 130, 133, 143, 151, 150, 148, 146, 141, 136, 115, 117, + 118, 121, 84, 44, 48, 50, 62, 58, 62, 11, 11, 11, 10, 10, 9, 10, + 9, 9, 12, 12, 12, 9, 8, 8, 8, 9, 12, 14, 16, 16, 16, 17, + 19, 19, 24, 25, 20, 18, 18, 17, 11, 8, 18, 11, 36, 72, 123, 129, + 136, 147, 158, 148, 159, 140, 127, 102, 113, 113, 119, 123, 124, 127, 136, 143, + 146, 140, 143, 149, 152, 154, 155, 157, 158, 148, 148, 148, 148, 149, 151, 153, + 154, 149, 155, 158, 157, 157, 159, 160, 159, 164, 165, 165, 164, 161, 160, 160, + 161, 164, 174, 174, 173, 179, 176, 172, 177, 178, 172, 166, 163, 160, 159, 156, + 155, 154, 154, 151, 154, 157, 158, 155, 152, 161, 163, 165, 162, 158, 162, 174, + 183, 202, 210, 208, 193, 184, 187, 189, 186, 181, 183, 189, 193, 189, 184, 187, + 194, 189, 187, 184, 182, 179, 178, 178, 179, 179, 189, 191, 182, 180, 188, 191, + 186, 176, 171, 174, 174, 163, 151, 129, 101, 122, 145, 167, 177, 178, 179, 176, + 171, 184, 168, 155, 159, 167, 163, 150, 139, 149, 157, 147, 133, 152, 178, 162, + 121, 99, 40, 75, 119, 145, 142, 158, 169, 142, 129, 142, 155, 145, 141, 142, + 128, 126, 117, 117, 121, 69, 71, 69, 60, 70, 81, 82, 10, 10, 10, 10, + 11, 11, 12, 12, 9, 11, 12, 11, 9, 8, 10, 10, 11, 14, 16, 17, + 16, 16, 17, 18, 22, 27, 25, 19, 15, 17, 14, 10, 25, 21, 31, 83, + 104, 126, 128, 145, 135, 157, 165, 121, 89, 58, 34, 50, 52, 74, 102, 123, + 135, 141, 140, 137, 147, 150, 154, 155, 154, 153, 153, 154, 151, 150, 150, 151, + 152, 154, 155, 156, 155, 160, 162, 160, 158, 160, 160, 159, 163, 166, 168, 168, + 165, 164, 165, 165, 161, 170, 170, 169, 175, 173, 169, 174, 168, 166, 164, 162, + 161, 160, 157, 154, 154, 153, 152, 155, 160, 164, 163, 162, 161, 162, 163, 165, + 165, 165, 165, 167, 177, 192, 199, 194, 189, 190, 185, 179, 185, 183, 185, 191, + 193, 189, 186, 187, 187, 186, 184, 183, 182, 182, 181, 181, 179, 188, 190, 182, + 179, 185, 185, 180, 195, 187, 185, 182, 174, 174, 167, 150, 152, 167, 178, 179, + 176, 176, 176, 173, 182, 173, 167, 171, 173, 166, 152, 144, 138, 152, 160, 156, + 155, 153, 141, 125, 103, 57, 95, 133, 154, 148, 157, 161, 181, 148, 135, 144, + 148, 153, 149, 126, 122, 112, 114, 121, 71, 66, 66, 67, 91, 99, 100, 9, + 9, 10, 11, 11, 12, 14, 14, 10, 11, 13, 13, 11, 11, 13, 14, 14, + 17, 19, 19, 17, 17, 17, 19, 20, 22, 20, 16, 15, 17, 15, 13, 28, + 20, 48, 110, 118, 132, 138, 151, 155, 164, 145, 53, 40, 37, 59, 101, 95, + 114, 133, 142, 143, 143, 142, 140, 146, 149, 151, 152, 150, 148, 148, 148, 154, + 153, 154, 154, 156, 157, 159, 160, 158, 163, 165, 162, 161, 163, 164, 163, 161, + 164, 168, 169, 168, 167, 167, 168, 160, 170, 168, 167, 172, 169, 165, 171, 163, + 163, 163, 164, 164, 162, 158, 154, 154, 153, 153, 156, 162, 168, 171, 173, 172, + 168, 165, 166, 172, 173, 168, 163, 166, 180, 190, 190, 188, 187, 183, 176, 184, + 178, 177, 186, 195, 195, 187, 182, 184, 184, 184, 185, 185, 185, 186, 186, 182, + 190, 192, 186, 183, 186, 184, 178, 189, 182, 180, 175, 169, 176, 181, 172, 172, + 180, 185, 183, 178, 176, 174, 172, 176, 173, 173, 178, 177, 166, 152, 146, 140, + 147, 162, 172, 162, 142, 132, 133, 96, 77, 124, 144, 149, 141, 156, 167, 182, + 148, 127, 130, 140, 149, 142, 120, 122, 114, 115, 115, 69, 58, 61, 67, 76, + 83, 82, 11, 11, 11, 11, 11, 12, 13, 13, 12, 13, 15, 15, 14, 14, + 18, 19, 14, 17, 19, 20, 19, 18, 20, 21, 15, 15, 13, 13, 14, 18, + 20, 20, 28, 32, 64, 115, 113, 144, 155, 147, 155, 154, 98, 37, 43, 41, + 63, 86, 121, 133, 141, 141, 138, 144, 150, 156, 142, 146, 148, 151, 150, 151, + 151, 153, 155, 155, 156, 156, 158, 159, 161, 162, 159, 164, 166, 163, 162, 165, + 167, 165, 160, 164, 167, 169, 167, 165, 164, 164, 164, 172, 169, 168, 172, 169, + 164, 170, 164, 164, 163, 165, 165, 164, 159, 156, 153, 152, 152, 154, 159, 166, + 173, 176, 179, 171, 162, 161, 166, 171, 172, 170, 173, 180, 183, 181, 178, 181, + 182, 180, 180, 174, 171, 180, 190, 192, 188, 185, 182, 183, 184, 184, 185, 185, + 185, 185, 185, 191, 194, 191, 190, 191, 187, 181, 190, 187, 190, 187, 179, 183, + 188, 181, 172, 179, 186, 189, 187, 184, 180, 176, 175, 171, 172, 179, 180, 170, + 157, 150, 155, 149, 152, 164, 167, 155, 144, 144, 106, 93, 130, 136, 147, 147, + 156, 159, 140, 130, 125, 128, 133, 134, 128, 118, 119, 120, 116, 93, 52, 45, + 52, 54, 64, 75, 78, 14, 13, 12, 11, 10, 9, 10, 9, 11, 12, 13, + 13, 12, 14, 16, 20, 14, 15, 18, 20, 19, 20, 21, 22, 15, 12, 10, + 12, 17, 19, 21, 23, 36, 41, 73, 122, 119, 149, 157, 143, 144, 133, 42, + 41, 48, 38, 56, 63, 110, 126, 140, 144, 143, 145, 146, 146, 148, 151, 154, + 155, 156, 157, 160, 162, 156, 156, 156, 157, 158, 160, 161, 162, 163, 167, 168, + 163, 161, 164, 165, 163, 162, 166, 169, 170, 166, 164, 162, 162, 166, 173, 169, + 165, 168, 165, 160, 167, 168, 167, 164, 162, 163, 161, 158, 156, 152, 151, 150, + 151, 153, 159, 165, 169, 173, 170, 164, 159, 159, 163, 166, 169, 175, 177, 176, + 173, 171, 175, 178, 180, 180, 174, 172, 176, 180, 182, 183, 187, 182, 182, 182, + 182, 182, 182, 183, 183, 183, 188, 191, 193, 194, 194, 190, 185, 190, 189, 194, + 191, 181, 184, 188, 181, 173, 175, 180, 186, 189, 189, 186, 185, 179, 170, 166, + 173, 179, 175, 164, 157, 159, 156, 154, 157, 164, 163, 154, 143, 120, 103, 125, + 128, 155, 159, 147, 130, 117, 125, 128, 132, 135, 132, 125, 124, 115, 122, 110, + 66, 38, 41, 53, 45, 63, 81, 90, 14, 13, 12, 11, 9, 8, 7, 7, + 9, 10, 10, 9, 9, 10, 13, 16, 14, 17, 18, 20, 19, 19, 20, 21, + 19, 13, 10, 14, 18, 18, 17, 20, 29, 34, 66, 126, 131, 146, 148, 154, + 152, 110, 15, 38, 38, 47, 85, 110, 129, 139, 147, 149, 148, 147, 144, 142, + 153, 155, 156, 157, 156, 156, 158, 160, 157, 157, 157, 158, 159, 161, 162, 163, + 168, 171, 170, 164, 160, 161, 162, 160, 166, 168, 170, 171, 168, 164, 163, 163, + 162, 169, 166, 162, 165, 162, 158, 165, 169, 166, 164, 163, 161, 159, 156, 155, + 153, 152, 151, 149, 147, 149, 153, 159, 165, 168, 170, 169, 165, 162, 164, 166, + 167, 168, 170, 172, 172, 173, 174, 174, 182, 178, 175, 176, 175, 173, 176, 182, + 181, 180, 179, 178, 179, 180, 182, 183, 180, 182, 186, 190, 193, 193, 190, 186, + 185, 181, 183, 179, 171, 177, 184, 178, 175, 170, 166, 171, 175, 178, 180, 183, + 176, 165, 157, 162, 170, 169, 162, 157, 149, 162, 167, 162, 158, 157, 149, 137, + 108, 115, 148, 141, 150, 139, 128, 126, 129, 136, 128, 126, 137, 137, 127, 125, + 120, 122, 107, 58, 49, 55, 67, 58, 63, 82, 93, 11, 12, 11, 10, 9, + 8, 7, 7, 9, 10, 11, 9, 8, 10, 13, 16, 17, 20, 21, 21, 19, + 17, 16, 17, 19, 12, 10, 17, 22, 21, 17, 20, 26, 48, 71, 114, 122, + 141, 145, 160, 146, 77, 44, 58, 65, 79, 96, 115, 130, 135, 136, 138, 143, + 153, 157, 156, 154, 155, 156, 155, 153, 154, 155, 156, 158, 158, 159, 159, 160, + 162, 164, 165, 167, 171, 170, 164, 162, 164, 165, 164, 165, 167, 168, 168, 165, + 165, 165, 165, 158, 165, 162, 161, 166, 164, 162, 170, 169, 169, 168, 168, 167, + 165, 159, 157, 154, 154, 153, 148, 145, 145, 147, 151, 156, 160, 164, 165, 165, + 166, 169, 171, 166, 165, 166, 168, 170, 171, 171, 173, 178, 177, 176, 178, 178, + 174, 174, 178, 180, 178, 176, 175, 177, 180, 185, 187, 182, 181, 183, 189, 193, + 193, 190, 187, 190, 186, 188, 186, 180, 186, 191, 184, 175, 166, 161, 165, 169, + 170, 171, 173, 175, 166, 159, 161, 164, 162, 158, 158, 153, 163, 168, 164, 156, + 151, 143, 135, 103, 123, 161, 144, 141, 122, 124, 143, 143, 151, 137, 126, 135, + 133, 124, 126, 127, 115, 97, 61, 70, 65, 75, 72, 77, 93, 101, 9, 9, + 9, 9, 9, 8, 8, 8, 13, 14, 14, 12, 11, 12, 16, 19, 20, 22, + 22, 21, 17, 14, 13, 13, 15, 9, 9, 19, 24, 24, 21, 25, 44, 89, + 99, 103, 105, 140, 147, 154, 143, 49, 69, 69, 103, 135, 134, 148, 145, 149, + 150, 153, 156, 160, 155, 150, 156, 159, 158, 158, 157, 158, 159, 161, 160, 160, + 160, 161, 162, 164, 165, 166, 162, 166, 167, 164, 164, 169, 172, 172, 160, 162, + 164, 163, 162, 162, 163, 166, 156, 164, 162, 161, 169, 169, 167, 176, 170, 172, + 174, 176, 177, 173, 166, 159, 155, 156, 154, 149, 144, 143, 145, 148, 144, 144, + 144, 146, 153, 162, 170, 176, 175, 170, 165, 164, 165, 168, 171, 175, 173, 172, + 174, 181, 184, 182, 179, 179, 178, 177, 174, 173, 176, 182, 188, 192, 186, 184, + 185, 190, 194, 194, 191, 189, 184, 182, 188, 190, 184, 187, 185, 173, 176, 169, + 167, 176, 180, 176, 171, 169, 180, 175, 171, 171, 168, 163, 162, 165, 167, 160, + 156, 159, 159, 154, 144, 138, 125, 122, 137, 125, 143, 138, 135, 146, 143, 163, + 155, 136, 136, 129, 122, 133, 127, 100, 81, 60, 78, 60, 65, 71, 83, 94, + 97, 7, 11, 12, 10, 10, 12, 11, 7, 12, 8, 6, 8, 13, 18, 17, + 15, 22, 17, 13, 14, 18, 18, 12, 7, 19, 17, 29, 23, 18, 23, 17, + 32, 69, 103, 102, 104, 114, 119, 139, 147, 136, 67, 81, 112, 119, 129, 130, + 142, 144, 149, 154, 160, 161, 162, 159, 157, 158, 158, 158, 160, 161, 162, 163, + 163, 166, 167, 168, 167, 165, 164, 165, 166, 170, 167, 165, 164, 165, 165, 164, + 162, 170, 168, 164, 160, 157, 157, 156, 157, 159, 163, 165, 164, 162, 164, 169, + 174, 172, 177, 176, 176, 152, 171, 159, 156, 153, 156, 156, 153, 149, 152, 157, + 161, 157, 160, 151, 147, 151, 151, 155, 169, 168, 172, 173, 170, 163, 161, 166, + 174, 174, 182, 185, 180, 175, 178, 181, 181, 174, 176, 178, 177, 176, 178, 182, + 186, 184, 185, 188, 191, 194, 194, 191, 188, 192, 189, 186, 183, 179, 177, 178, + 183, 172, 167, 170, 184, 189, 183, 180, 184, 168, 172, 175, 176, 173, 170, 169, + 170, 166, 156, 160, 167, 157, 150, 146, 138, 130, 118, 139, 139, 137, 152, 145, + 154, 162, 164, 155, 138, 130, 131, 131, 126, 116, 94, 78, 61, 64, 69, 60, + 77, 78, 94, 102, 7, 11, 12, 10, 10, 12, 11, 7, 12, 12, 12, 11, + 13, 15, 19, 21, 23, 21, 17, 15, 14, 13, 12, 12, 24, 19, 28, 21, + 20, 26, 20, 33, 88, 116, 110, 110, 117, 121, 135, 137, 133, 90, 104, 118, + 119, 136, 141, 145, 150, 152, 156, 160, 161, 160, 157, 154, 158, 158, 159, 161, + 161, 162, 163, 163, 162, 162, 164, 164, 163, 163, 165, 167, 167, 165, 163, 163, + 164, 164, 163, 162, 169, 168, 164, 161, 158, 158, 157, 159, 161, 161, 161, 163, + 165, 169, 170, 170, 165, 171, 166, 170, 156, 169, 153, 152, 158, 148, 147, 153, + 155, 161, 160, 147, 148, 156, 157, 159, 163, 155, 145, 148, 159, 163, 167, 166, + 163, 163, 165, 168, 174, 182, 186, 181, 178, 181, 183, 182, 179, 179, 179, 178, + 177, 177, 180, 182, 180, 184, 190, 196, 199, 200, 199, 199, 185, 186, 187, 186, + 183, 178, 175, 175, 174, 168, 171, 185, 189, 180, 170, 167, 178, 180, 180, 176, + 170, 164, 161, 161, 163, 157, 165, 169, 157, 148, 147, 142, 123, 118, 144, 147, + 147, 158, 152, 160, 156, 159, 152, 139, 132, 134, 132, 127, 116, 83, 70, 61, + 62, 67, 61, 72, 81, 96, 101, 7, 11, 12, 10, 9, 12, 11, 8, 13, + 15, 17, 14, 11, 12, 18, 25, 19, 20, 18, 16, 11, 13, 17, 20, 20, + 14, 21, 16, 19, 28, 23, 35, 102, 125, 114, 114, 125, 126, 135, 131, 123, + 105, 120, 120, 117, 141, 150, 144, 155, 156, 157, 159, 158, 157, 154, 153, 158, + 159, 159, 160, 161, 162, 162, 163, 160, 161, 163, 163, 164, 165, 168, 171, 166, + 164, 163, 163, 165, 165, 164, 163, 166, 166, 163, 161, 159, 158, 159, 160, 162, + 160, 159, 163, 169, 172, 169, 166, 163, 172, 161, 166, 162, 163, 147, 148, 150, + 142, 151, 154, 140, 148, 166, 164, 158, 165, 162, 160, 166, 162, 154, 156, 152, + 155, 160, 166, 168, 167, 165, 164, 173, 181, 185, 184, 181, 182, 184, 183, 185, + 182, 180, 179, 179, 179, 179, 178, 176, 182, 189, 192, 190, 187, 186, 186, 186, + 186, 185, 183, 179, 176, 173, 171, 173, 168, 172, 187, 194, 189, 180, 176, 174, + 175, 174, 171, 167, 164, 162, 162, 162, 160, 170, 171, 156, 146, 144, 139, 114, + 123, 149, 154, 154, 160, 155, 162, 153, 157, 152, 138, 133, 135, 131, 124, 116, + 70, 65, 66, 61, 67, 66, 70, 93, 104, 103, 7, 11, 11, 9, 9, 12, + 12, 9, 13, 15, 17, 17, 15, 15, 17, 20, 12, 14, 15, 15, 16, 19, + 22, 25, 15, 10, 22, 16, 18, 29, 28, 45, 105, 126, 114, 117, 132, 136, + 142, 135, 121, 115, 123, 124, 124, 144, 154, 146, 155, 155, 155, 156, 155, 155, + 154, 154, 159, 159, 159, 160, 161, 163, 162, 163, 164, 166, 168, 168, 168, 170, + 172, 175, 165, 164, 164, 165, 167, 167, 166, 164, 162, 162, 161, 161, 159, 160, + 161, 161, 164, 163, 163, 167, 169, 170, 167, 165, 164, 177, 163, 165, 166, 155, + 147, 146, 153, 145, 159, 162, 140, 139, 152, 149, 163, 169, 162, 160, 168, 170, + 166, 168, 155, 155, 158, 163, 169, 170, 167, 163, 171, 176, 181, 184, 183, 182, + 182, 183, 187, 184, 181, 179, 180, 181, 179, 178, 187, 194, 201, 202, 197, 191, + 190, 191, 195, 191, 183, 174, 170, 171, 171, 170, 158, 159, 165, 178, 185, 183, + 180, 180, 168, 168, 167, 165, 164, 163, 162, 162, 165, 161, 167, 168, 155, 146, + 140, 130, 111, 132, 151, 155, 156, 155, 152, 160, 156, 158, 151, 138, 131, 133, + 128, 118, 111, 62, 67, 74, 61, 68, 74, 78, 78, 88, 83, 7, 11, 11, + 8, 9, 13, 13, 10, 12, 12, 14, 17, 18, 18, 14, 10, 14, 12, 12, + 17, 23, 25, 22, 18, 16, 15, 29, 21, 19, 27, 29, 49, 103, 126, 119, + 125, 141, 146, 151, 144, 135, 125, 122, 133, 140, 144, 152, 150, 152, 152, 152, + 153, 153, 155, 155, 155, 159, 159, 158, 160, 161, 162, 163, 162, 169, 170, 172, + 172, 171, 170, 171, 172, 162, 161, 161, 162, 164, 164, 162, 161, 160, 160, 160, + 160, 160, 162, 162, 164, 165, 168, 171, 170, 167, 165, 164, 166, 162, 176, 165, + 163, 163, 150, 154, 139, 102, 93, 112, 142, 157, 163, 159, 142, 150, 164, 167, + 168, 175, 175, 164, 161, 162, 159, 157, 159, 164, 166, 166, 163, 167, 170, 175, + 180, 182, 181, 180, 182, 186, 184, 182, 181, 181, 182, 183, 182, 182, 189, 198, + 200, 197, 194, 194, 196, 197, 194, 184, 173, 169, 171, 169, 164, 161, 169, 183, + 194, 194, 188, 183, 183, 174, 172, 169, 166, 163, 161, 158, 157, 163, 156, 159, + 160, 153, 148, 141, 125, 111, 141, 151, 153, 157, 152, 153, 162, 156, 156, 148, + 135, 129, 130, 124, 113, 96, 58, 70, 77, 60, 66, 77, 86, 94, 104, 103, + 8, 11, 10, 7, 8, 13, 13, 12, 13, 11, 12, 15, 19, 18, 12, 6, + 20, 16, 14, 17, 23, 23, 16, 9, 16, 13, 26, 18, 14, 21, 19, 38, + 103, 132, 128, 136, 149, 150, 155, 149, 146, 134, 119, 136, 148, 139, 146, 147, + 150, 150, 152, 153, 154, 156, 156, 156, 158, 159, 159, 160, 161, 162, 163, 163, + 167, 170, 173, 173, 171, 168, 167, 166, 158, 158, 158, 159, 161, 160, 158, 156, + 158, 159, 160, 163, 164, 166, 167, 169, 168, 173, 174, 173, 167, 165, 165, 169, + 157, 168, 161, 160, 160, 151, 164, 119, 35, 38, 52, 82, 113, 132, 144, 158, + 154, 170, 169, 162, 167, 169, 166, 167, 166, 161, 157, 156, 159, 161, 162, 161, + 166, 166, 169, 176, 179, 179, 179, 181, 183, 184, 184, 183, 181, 181, 185, 187, + 180, 184, 189, 189, 186, 183, 182, 183, 190, 192, 189, 181, 177, 177, 167, 156, + 159, 173, 191, 205, 208, 202, 194, 190, 172, 171, 168, 168, 168, 167, 164, 161, + 157, 150, 150, 153, 150, 151, 144, 126, 110, 148, 150, 152, 161, 154, 157, 163, + 149, 152, 145, 134, 128, 127, 115, 101, 80, 58, 71, 72, 60, 68, 78, 90, + 93, 104, 101, 8, 11, 10, 7, 8, 13, 14, 13, 14, 14, 14, 14, 15, + 14, 12, 10, 21, 20, 18, 18, 18, 16, 12, 7, 14, 7, 16, 12, 16, + 24, 17, 29, 97, 132, 135, 142, 150, 147, 152, 149, 144, 141, 121, 135, 149, + 141, 152, 152, 151, 151, 152, 154, 156, 157, 156, 156, 159, 159, 159, 160, 160, + 162, 163, 163, 163, 168, 172, 174, 172, 168, 165, 163, 160, 159, 159, 161, 161, + 160, 157, 155, 159, 161, 164, 167, 168, 171, 172, 173, 171, 173, 171, 171, 170, + 169, 170, 172, 162, 162, 159, 161, 161, 155, 168, 84, 31, 47, 43, 42, 55, + 57, 75, 120, 154, 170, 167, 156, 158, 165, 170, 177, 167, 164, 161, 159, 160, + 161, 162, 163, 165, 164, 166, 174, 178, 178, 179, 183, 183, 187, 188, 186, 181, + 180, 184, 190, 198, 198, 197, 195, 192, 189, 186, 185, 187, 192, 190, 183, 182, + 183, 173, 158, 154, 159, 167, 179, 188, 192, 189, 183, 167, 166, 165, 167, 170, + 169, 165, 162, 156, 150, 150, 149, 144, 147, 143, 126, 110, 154, 147, 150, 163, + 152, 152, 156, 147, 150, 146, 136, 127, 117, 98, 77, 69, 63, 71, 64, 65, + 78, 80, 91, 107, 119, 117, 9, 11, 10, 7, 8, 13, 15, 14, 16, 18, + 17, 15, 10, 9, 13, 18, 19, 20, 20, 17, 14, 12, 12, 14, 18, 7, + 14, 14, 27, 39, 29, 33, 88, 128, 135, 143, 146, 141, 148, 147, 141, 151, + 129, 141, 154, 151, 167, 164, 154, 155, 156, 158, 159, 159, 158, 156, 159, 159, + 159, 160, 161, 163, 164, 163, 162, 167, 173, 176, 175, 170, 166, 164, 163, 163, + 163, 164, 165, 163, 159, 157, 161, 163, 167, 170, 173, 175, 176, 178, 175, 171, + 168, 168, 173, 176, 175, 174, 173, 164, 163, 165, 165, 161, 169, 56, 30, 49, + 38, 38, 60, 48, 41, 78, 128, 154, 164, 161, 162, 165, 163, 165, 168, 167, + 166, 165, 164, 164, 164, 165, 166, 163, 165, 173, 178, 178, 180, 186, 183, 188, + 192, 188, 179, 176, 182, 190, 190, 189, 187, 188, 189, 189, 188, 185, 189, 191, + 186, 177, 178, 184, 179, 167, 185, 174, 163, 164, 177, 189, 191, 186, 172, 170, + 167, 167, 166, 161, 154, 148, 160, 156, 157, 151, 140, 141, 138, 124, 110, 156, + 145, 147, 162, 147, 143, 142, 145, 150, 147, 136, 123, 106, 79, 53, 66, 67, + 71, 60, 72, 89, 84, 95, 100, 112, 116, 12, 13, 15, 17, 17, 17, 17, + 16, 20, 17, 13, 12, 10, 12, 15, 18, 19, 18, 17, 17, 16, 16, 16, + 16, 17, 18, 21, 21, 23, 24, 28, 36, 81, 132, 134, 129, 137, 138, 147, + 152, 148, 146, 136, 135, 151, 160, 163, 172, 159, 160, 161, 161, 158, 156, 157, + 158, 160, 154, 152, 158, 161, 162, 162, 163, 171, 170, 169, 168, 168, 168, 165, + 164, 157, 157, 158, 160, 164, 163, 161, 160, 160, 164, 167, 170, 172, 173, 173, + 172, 182, 177, 171, 167, 166, 168, 169, 171, 177, 162, 168, 163, 162, 160, 147, + 31, 35, 58, 44, 43, 42, 54, 42, 53, 101, 155, 165, 153, 152, 171, 149, + 166, 165, 171, 168, 162, 164, 171, 165, 153, 171, 169, 165, 164, 168, 178, 185, + 188, 193, 191, 187, 183, 180, 181, 185, 188, 188, 192, 196, 195, 190, 185, 183, + 182, 189, 186, 183, 184, 185, 181, 173, 166, 165, 176, 174, 151, 179, 176, 181, + 183, 167, 163, 168, 169, 160, 161, 165, 160, 164, 152, 155, 153, 140, 144, 143, + 120, 118, 149, 146, 134, 149, 148, 135, 143, 144, 136, 118, 98, 82, 75, 68, + 60, 69, 67, 66, 67, 74, 85, 96, 103, 111, 106, 101, 12, 13, 13, 14, + 15, 15, 15, 14, 17, 17, 17, 16, 17, 18, 18, 19, 15, 15, 15, 14, + 14, 15, 15, 17, 19, 21, 24, 24, 24, 26, 28, 35, 81, 130, 134, 132, + 137, 138, 151, 157, 156, 156, 145, 143, 155, 160, 159, 166, 162, 165, 168, 167, + 164, 160, 157, 156, 161, 156, 153, 156, 159, 157, 157, 158, 166, 166, 165, 167, + 166, 167, 164, 163, 164, 167, 167, 166, 162, 160, 159, 162, 166, 168, 168, 169, + 170, 171, 172, 173, 175, 174, 173, 173, 173, 171, 167, 165, 168, 161, 165, 164, + 167, 157, 135, 31, 48, 49, 36, 55, 56, 62, 42, 44, 77, 156, 166, 159, + 159, 166, 149, 164, 166, 172, 171, 167, 170, 174, 169, 157, 163, 163, 162, 164, + 168, 176, 181, 185, 183, 183, 181, 178, 176, 179, 187, 193, 197, 198, 198, 195, + 190, 186, 186, 187, 193, 189, 186, 186, 185, 182, 175, 169, 163, 170, 161, 147, + 171, 179, 182, 183, 169, 163, 165, 164, 155, 157, 163, 161, 166, 155, 157, 153, + 141, 142, 139, 118, 114, 145, 147, 140, 152, 145, 126, 129, 92, 88, 79, 69, + 63, 64, 64, 61, 68, 67, 66, 69, 78, 90, 103, 112, 115, 110, 106, 11, + 10, 11, 11, 11, 10, 11, 12, 12, 13, 15, 15, 16, 17, 16, 15, 16, + 17, 16, 16, 15, 15, 16, 16, 15, 18, 21, 22, 23, 26, 30, 36, 74, + 119, 128, 130, 133, 132, 147, 152, 158, 160, 151, 149, 159, 161, 157, 161, 163, + 166, 171, 172, 169, 162, 155, 152, 154, 150, 151, 156, 161, 163, 165, 168, 164, + 165, 165, 167, 166, 165, 164, 163, 156, 162, 165, 164, 159, 159, 165, 172, 172, + 171, 169, 169, 169, 170, 172, 173, 174, 173, 173, 173, 173, 171, 167, 165, 164, + 165, 166, 167, 176, 157, 118, 38, 56, 40, 35, 66, 59, 60, 48, 50, 62, + 165, 163, 158, 158, 154, 150, 163, 164, 169, 170, 168, 170, 176, 171, 160, 159, + 160, 161, 165, 168, 174, 179, 184, 179, 181, 180, 177, 175, 179, 189, 198, 203, + 201, 197, 192, 187, 185, 187, 189, 194, 190, 186, 185, 185, 183, 176, 173, 167, + 169, 150, 147, 159, 180, 177, 181, 171, 163, 163, 159, 150, 153, 162, 161, 164, + 156, 155, 152, 141, 138, 133, 116, 111, 134, 131, 120, 124, 111, 90, 90, 73, + 73, 70, 65, 64, 67, 69, 66, 67, 67, 67, 71, 80, 93, 105, 113, 116, + 113, 110, 11, 11, 9, 8, 8, 10, 11, 12, 11, 13, 14, 14, 15, 15, + 14, 15, 19, 20, 19, 18, 17, 16, 15, 15, 19, 22, 26, 29, 31, 35, + 39, 46, 68, 105, 119, 130, 132, 129, 144, 146, 147, 153, 149, 150, 161, 160, + 155, 160, 161, 165, 169, 171, 167, 161, 156, 153, 150, 147, 149, 156, 160, 163, + 167, 171, 168, 168, 169, 169, 165, 163, 161, 162, 154, 159, 160, 161, 159, 163, + 169, 176, 169, 169, 169, 170, 170, 171, 171, 171, 176, 172, 168, 165, 166, 167, + 168, 170, 164, 170, 165, 166, 177, 154, 99, 43, 52, 42, 48, 74, 49, 53, + 58, 65, 71, 175, 154, 146, 148, 142, 151, 164, 163, 165, 164, 163, 166, 171, + 169, 162, 163, 162, 162, 165, 168, 172, 179, 187, 184, 187, 186, 181, 178, 181, + 192, 201, 198, 196, 192, 187, 184, 183, 184, 186, 189, 186, 183, 182, 182, 181, + 178, 176, 172, 172, 149, 151, 147, 173, 171, 178, 171, 163, 163, 160, 150, 153, + 161, 159, 160, 155, 153, 149, 141, 136, 128, 118, 97, 106, 98, 82, 81, 73, + 63, 65, 64, 67, 66, 60, 58, 59, 60, 59, 64, 66, 70, 76, 84, 93, + 101, 107, 111, 112, 110, 10, 10, 9, 8, 9, 10, 12, 13, 17, 17, 17, + 15, 16, 17, 17, 19, 17, 19, 20, 21, 22, 22, 22, 23, 36, 40, 42, + 44, 46, 49, 53, 57, 59, 89, 109, 132, 134, 131, 147, 144, 140, 148, 148, + 151, 161, 160, 154, 157, 160, 163, 165, 166, 164, 161, 160, 160, 157, 154, 154, + 158, 158, 156, 158, 162, 170, 171, 170, 167, 161, 158, 156, 158, 168, 166, 165, + 164, 164, 166, 166, 166, 163, 166, 169, 172, 174, 173, 171, 169, 172, 169, 165, + 163, 164, 166, 167, 168, 163, 168, 159, 157, 164, 146, 81, 39, 46, 47, 58, + 77, 51, 59, 61, 58, 88, 172, 142, 140, 144, 143, 154, 164, 166, 164, 160, + 158, 162, 167, 167, 164, 168, 163, 161, 163, 163, 167, 177, 189, 187, 189, 188, + 185, 182, 186, 196, 204, 192, 191, 189, 188, 186, 185, 184, 183, 183, 182, 181, + 181, 182, 182, 182, 181, 172, 171, 154, 157, 141, 164, 170, 180, 168, 163, 165, + 165, 155, 156, 162, 159, 156, 155, 150, 145, 143, 136, 127, 126, 75, 77, 70, + 63, 63, 66, 67, 70, 58, 62, 65, 60, 59, 61, 64, 63, 61, 67, 76, + 85, 94, 100, 103, 105, 110, 111, 112, 9, 11, 9, 10, 11, 13, 14, 16, + 16, 16, 16, 16, 16, 17, 18, 22, 23, 27, 30, 35, 39, 41, 43, 45, + 48, 51, 53, 52, 53, 55, 56, 60, 56, 71, 94, 124, 130, 130, 146, 139, + 141, 150, 151, 153, 161, 159, 152, 155, 161, 162, 163, 163, 162, 163, 165, 167, + 161, 159, 161, 166, 166, 165, 169, 174, 173, 173, 170, 165, 156, 153, 154, 157, + 164, 165, 164, 167, 170, 171, 167, 164, 162, 166, 171, 175, 176, 175, 171, 169, + 164, 165, 167, 169, 171, 169, 164, 162, 167, 169, 160, 156, 156, 149, 78, 37, + 45, 50, 54, 76, 65, 72, 54, 42, 105, 159, 140, 147, 150, 156, 159, 165, + 171, 167, 162, 160, 163, 166, 166, 164, 166, 161, 157, 160, 160, 162, 175, 191, + 186, 187, 186, 185, 187, 191, 198, 203, 190, 190, 189, 190, 190, 189, 185, 183, + 181, 182, 183, 184, 184, 184, 184, 183, 169, 162, 157, 158, 143, 158, 174, 181, + 165, 162, 167, 168, 159, 159, 163, 159, 153, 154, 147, 142, 144, 134, 127, 132, + 66, 64, 64, 64, 65, 67, 69, 69, 62, 68, 68, 65, 62, 63, 68, 68, + 67, 75, 85, 96, 104, 109, 111, 112, 112, 114, 116, 9, 11, 12, 14, 15, + 17, 18, 18, 17, 19, 22, 25, 27, 28, 28, 30, 37, 41, 46, 51, 55, + 58, 59, 61, 55, 58, 60, 60, 62, 64, 67, 69, 72, 74, 88, 121, 125, + 126, 143, 133, 141, 151, 151, 154, 161, 157, 150, 155, 158, 159, 161, 161, 161, + 161, 163, 165, 159, 160, 166, 172, 174, 177, 182, 190, 177, 177, 172, 165, 157, + 156, 158, 163, 161, 167, 173, 179, 180, 178, 175, 174, 168, 170, 174, 176, 177, + 175, 173, 171, 164, 165, 168, 171, 173, 171, 166, 163, 170, 167, 163, 159, 152, + 159, 83, 36, 44, 49, 46, 71, 70, 69, 48, 55, 130, 150, 147, 158, 150, + 163, 163, 169, 172, 168, 165, 164, 166, 165, 162, 160, 162, 157, 156, 162, 163, + 164, 177, 194, 191, 189, 186, 187, 191, 195, 198, 198, 193, 191, 190, 190, 191, + 190, 185, 182, 180, 182, 184, 185, 184, 182, 180, 179, 171, 155, 160, 154, 150, + 154, 175, 172, 164, 160, 166, 168, 160, 160, 164, 161, 154, 158, 145, 140, 144, + 133, 125, 137, 67, 61, 64, 65, 61, 63, 64, 60, 59, 65, 65, 60, 58, + 60, 65, 68, 84, 88, 95, 103, 109, 112, 113, 114, 115, 117, 118, 12, 13, + 15, 19, 21, 22, 22, 24, 26, 31, 37, 43, 46, 47, 46, 46, 45, 49, + 53, 56, 58, 58, 60, 60, 62, 66, 69, 72, 75, 79, 84, 86, 100, 91, + 98, 127, 127, 127, 145, 132, 136, 146, 149, 153, 159, 157, 151, 155, 154, 156, + 159, 159, 158, 158, 158, 159, 160, 161, 165, 170, 172, 171, 177, 184, 183, 181, + 177, 170, 161, 160, 166, 173, 177, 187, 196, 198, 192, 185, 180, 181, 175, 176, + 176, 177, 176, 175, 174, 173, 171, 169, 167, 167, 169, 170, 171, 171, 165, 159, + 161, 159, 147, 163, 87, 30, 40, 47, 42, 69, 66, 54, 47, 88, 152, 150, + 156, 163, 145, 164, 164, 177, 170, 166, 166, 168, 168, 164, 158, 154, 160, 155, + 158, 167, 168, 170, 181, 199, 200, 195, 190, 191, 195, 198, 195, 192, 196, 192, + 188, 187, 188, 187, 183, 180, 178, 180, 183, 183, 181, 177, 174, 173, 177, 152, + 161, 151, 154, 151, 173, 161, 163, 159, 164, 165, 158, 160, 165, 163, 157, 161, + 146, 138, 144, 132, 124, 139, 66, 56, 56, 61, 58, 63, 70, 68, 64, 71, + 75, 74, 74, 83, 91, 95, 100, 101, 104, 106, 108, 109, 110, 110, 116, 117, + 118, 28, 28, 31, 33, 32, 31, 30, 30, 39, 51, 49, 43, 44, 40, 37, + 45, 35, 45, 51, 59, 66, 62, 64, 80, 81, 81, 83, 89, 99, 107, 110, + 108, 118, 113, 113, 119, 124, 127, 129, 133, 139, 143, 148, 151, 152, 151, 150, + 150, 153, 154, 156, 158, 160, 161, 162, 162, 165, 163, 164, 169, 172, 170, 172, + 175, 176, 176, 177, 179, 180, 181, 182, 183, 181, 183, 185, 188, 189, 190, 188, + 189, 182, 181, 178, 175, 176, 178, 182, 184, 179, 174, 168, 164, 164, 166, 168, + 168, 171, 163, 148, 157, 158, 160, 131, 31, 53, 36, 46, 67, 59, 54, 81, + 113, 148, 152, 159, 163, 166, 167, 170, 172, 163, 168, 172, 171, 166, 160, 157, + 156, 163, 162, 163, 166, 170, 175, 177, 179, 198, 193, 188, 188, 195, 200, 200, + 199, 192, 190, 187, 185, 185, 185, 183, 181, 180, 174, 177, 181, 177, 179, 182, + 174, 168, 170, 168, 159, 161, 142, 168, 172, 163, 163, 162, 160, 162, 164, 160, + 154, 157, 152, 151, 144, 145, 116, 139, 144, 71, 60, 70, 64, 57, 69, 66, + 67, 80, 85, 91, 97, 102, 104, 105, 106, 111, 111, 110, 108, 105, 106, 108, + 111, 111, 111, 111, 30, 29, 28, 28, 29, 32, 36, 38, 33, 45, 49, 49, + 49, 43, 38, 41, 47, 52, 56, 69, 85, 87, 84, 93, 93, 102, 112, 118, + 120, 119, 118, 117, 110, 107, 109, 115, 120, 122, 128, 135, 134, 138, 144, 148, + 150, 150, 151, 152, 150, 152, 154, 157, 159, 161, 163, 163, 162, 160, 162, 167, + 170, 168, 168, 171, 171, 173, 175, 178, 178, 177, 176, 175, 178, 179, 181, 183, + 183, 185, 185, 185, 190, 188, 185, 182, 181, 182, 184, 185, 187, 186, 183, 178, + 173, 169, 166, 164, 160, 159, 155, 167, 164, 162, 139, 59, 41, 47, 59, 57, + 40, 58, 113, 157, 154, 158, 163, 165, 166, 167, 171, 174, 171, 172, 172, 170, + 165, 159, 155, 154, 160, 163, 163, 165, 167, 174, 184, 193, 193, 190, 189, 193, + 199, 202, 200, 197, 192, 189, 187, 186, 185, 185, 183, 181, 181, 174, 178, 181, + 176, 177, 179, 171, 173, 171, 165, 156, 161, 147, 177, 182, 168, 168, 166, 163, + 164, 166, 161, 155, 155, 156, 146, 142, 139, 123, 138, 139, 73, 62, 74, 77, + 82, 101, 104, 107, 118, 119, 120, 120, 118, 116, 114, 112, 114, 114, 113, 112, + 111, 112, 115, 117, 117, 117, 116, 43, 41, 39, 38, 38, 40, 42, 44, 42, + 48, 55, 58, 59, 58, 58, 59, 71, 77, 80, 88, 99, 96, 91, 100, 94, + 105, 116, 115, 106, 97, 97, 100, 108, 107, 110, 114, 116, 117, 125, 134, 128, + 132, 139, 144, 148, 150, 152, 154, 150, 153, 154, 156, 158, 160, 160, 161, 158, + 156, 158, 163, 165, 162, 162, 165, 167, 169, 173, 175, 174, 172, 168, 166, 175, + 174, 175, 176, 177, 178, 180, 181, 193, 191, 189, 187, 185, 184, 184, 184, 181, + 184, 186, 183, 174, 165, 159, 156, 162, 160, 162, 170, 162, 158, 149, 103, 78, + 74, 68, 57, 63, 106, 150, 163, 159, 163, 170, 175, 176, 176, 177, 177, 179, + 176, 172, 167, 162, 158, 154, 151, 169, 171, 169, 164, 162, 168, 181, 193, 187, + 189, 191, 197, 202, 203, 198, 194, 191, 189, 187, 186, 186, 185, 183, 181, 182, + 175, 178, 180, 175, 176, 176, 168, 175, 172, 167, 160, 168, 153, 179, 180, 166, + 166, 163, 160, 161, 162, 156, 150, 152, 160, 141, 141, 130, 132, 140, 136, 80, + 63, 76, 83, 95, 117, 119, 122, 118, 117, 116, 115, 113, 112, 111, 110, 114, + 115, 115, 114, 113, 115, 118, 119, 116, 116, 117, 37, 39, 41, 45, 48, 49, + 51, 51, 69, 66, 71, 75, 76, 82, 93, 97, 98, 109, 110, 103, 97, 87, + 84, 96, 86, 92, 95, 90, 80, 78, 85, 94, 115, 115, 117, 117, 115, 115, + 122, 132, 127, 131, 137, 142, 146, 148, 151, 153, 155, 155, 156, 156, 156, 155, + 154, 154, 155, 154, 156, 161, 163, 160, 159, 161, 163, 165, 167, 169, 169, 168, + 166, 164, 173, 173, 171, 172, 172, 175, 178, 179, 188, 187, 187, 186, 185, 183, + 182, 181, 190, 197, 203, 202, 195, 187, 184, 183, 179, 169, 166, 166, 155, 153, + 155, 139, 141, 126, 111, 108, 126, 163, 175, 155, 159, 165, 174, 182, 186, 186, + 185, 184, 182, 176, 168, 163, 160, 158, 154, 152, 171, 171, 165, 162, 162, 169, + 180, 190, 188, 190, 193, 198, 201, 201, 195, 191, 191, 189, 187, 187, 186, 185, + 183, 180, 181, 175, 178, 181, 175, 176, 176, 168, 174, 174, 173, 170, 177, 155, + 171, 164, 163, 163, 161, 158, 158, 159, 154, 147, 146, 163, 141, 142, 123, 137, + 143, 139, 80, 60, 72, 83, 99, 118, 116, 114, 117, 116, 115, 114, 114, 115, + 117, 117, 112, 114, 114, 113, 111, 112, 114, 115, 107, 110, 112, 73, 74, 77, + 83, 90, 98, 104, 109, 92, 81, 88, 96, 90, 97, 111, 112, 105, 111, 105, + 97, 98, 93, 90, 97, 89, 91, 90, 90, 90, 95, 105, 115, 118, 119, 121, + 121, 116, 115, 120, 129, 128, 132, 137, 141, 144, 146, 149, 152, 155, 155, 156, + 155, 155, 154, 153, 152, 156, 154, 155, 159, 160, 157, 157, 159, 161, 162, 162, + 162, 163, 164, 166, 167, 171, 171, 169, 170, 171, 173, 176, 178, 180, 181, 182, + 183, 183, 182, 181, 181, 175, 181, 187, 187, 182, 178, 179, 181, 186, 172, 169, + 164, 156, 157, 157, 159, 168, 166, 172, 177, 174, 183, 189, 181, 171, 170, 171, + 173, 178, 183, 186, 188, 178, 172, 165, 160, 160, 159, 156, 154, 160, 157, 152, + 156, 166, 178, 187, 192, 193, 195, 195, 197, 197, 196, 193, 191, 190, 189, 187, + 187, 187, 186, 182, 180, 180, 174, 179, 183, 176, 177, 177, 168, 171, 172, 172, + 170, 176, 152, 166, 157, 165, 165, 163, 160, 161, 162, 157, 150, 140, 162, 142, + 143, 124, 140, 149, 146, 78, 57, 72, 90, 109, 127, 121, 119, 124, 122, 119, + 115, 113, 111, 110, 111, 112, 112, 112, 111, 107, 107, 108, 108, 103, 106, 111, + 91, 89, 82, 81, 83, 91, 100, 107, 98, 83, 95, 107, 96, 96, 104, 98, + 95, 93, 83, 87, 108, 120, 113, 108, 106, 107, 108, 110, 111, 114, 116, 118, + 116, 116, 118, 121, 117, 116, 119, 126, 129, 132, 136, 139, 142, 144, 147, 149, + 150, 152, 154, 155, 156, 156, 156, 156, 157, 153, 152, 156, 157, 155, 155, 159, + 160, 160, 159, 159, 160, 163, 166, 168, 168, 168, 169, 169, 171, 173, 173, 176, + 176, 177, 179, 180, 181, 182, 182, 182, 186, 189, 190, 189, 186, 185, 187, 190, + 177, 169, 174, 168, 166, 168, 158, 165, 164, 168, 184, 197, 188, 184, 192, 196, + 184, 175, 165, 159, 162, 170, 179, 185, 172, 169, 166, 163, 162, 160, 158, 157, + 159, 154, 150, 155, 167, 179, 184, 185, 196, 197, 197, 196, 194, 193, 191, 190, + 190, 189, 188, 188, 188, 186, 182, 179, 179, 174, 179, 182, 175, 175, 174, 165, + 166, 166, 165, 160, 167, 148, 168, 166, 164, 164, 161, 158, 158, 159, 153, 146, + 139, 157, 143, 141, 131, 140, 152, 145, 85, 63, 77, 96, 114, 129, 122, 118, + 117, 115, 111, 108, 106, 104, 104, 104, 111, 112, 112, 109, 106, 105, 105, 106, + 106, 109, 112, 115, 112, 105, 98, 95, 95, 97, 99, 98, 79, 91, 106, 91, + 90, 99, 90, 93, 99, 95, 99, 121, 133, 127, 123, 119, 120, 122, 121, 118, + 114, 110, 111, 119, 119, 118, 122, 120, 116, 115, 118, 126, 129, 133, 136, 138, + 141, 145, 149, 151, 153, 155, 156, 157, 157, 157, 157, 157, 152, 150, 153, 152, + 151, 152, 158, 158, 158, 158, 159, 160, 161, 162, 163, 163, 163, 165, 167, 168, + 169, 169, 169, 174, 174, 175, 176, 177, 179, 180, 181, 178, 177, 175, 174, 172, + 172, 172, 173, 172, 171, 180, 168, 168, 172, 159, 171, 166, 160, 168, 179, 182, + 189, 191, 183, 183, 175, 165, 159, 161, 166, 172, 174, 168, 170, 171, 169, 166, + 162, 161, 159, 164, 159, 154, 156, 162, 172, 178, 181, 194, 196, 197, 197, 195, + 192, 191, 190, 189, 188, 188, 188, 188, 186, 182, 178, 181, 175, 179, 181, 172, + 170, 167, 157, 157, 160, 162, 158, 164, 146, 169, 170, 165, 164, 160, 155, 154, + 153, 146, 139, 147, 150, 139, 136, 143, 139, 150, 136, 92, 66, 78, 93, 107, + 120, 114, 114, 115, 115, 114, 113, 113, 113, 112, 112, 107, 107, 108, 107, 105, + 104, 103, 104, 104, 107, 109, 108, 110, 111, 111, 107, 102, 96, 93, 101, 75, + 86, 100, 85, 87, 102, 96, 100, 120, 126, 121, 124, 124, 122, 128, 118, 120, + 123, 120, 117, 116, 119, 123, 128, 124, 122, 125, 123, 118, 113, 111, 124, 126, + 130, 133, 136, 140, 144, 148, 154, 156, 156, 157, 156, 156, 155, 155, 158, 152, + 148, 150, 150, 149, 152, 157, 157, 159, 160, 160, 160, 159, 158, 157, 159, 159, + 162, 165, 165, 167, 166, 166, 171, 171, 171, 172, 173, 174, 176, 177, 182, 180, + 178, 177, 177, 177, 176, 173, 176, 178, 186, 165, 162, 172, 159, 177, 170, 169, + 175, 176, 176, 186, 189, 175, 173, 170, 169, 170, 172, 173, 169, 165, 167, 172, + 175, 175, 170, 165, 161, 161, 158, 157, 153, 155, 160, 170, 183, 192, 191, 194, + 197, 199, 197, 194, 191, 190, 189, 188, 188, 188, 188, 186, 182, 178, 182, 175, + 178, 179, 169, 165, 162, 151, 148, 156, 164, 163, 168, 145, 166, 165, 171, 171, + 165, 160, 157, 154, 147, 138, 153, 145, 135, 130, 152, 139, 148, 128, 89, 63, + 73, 89, 103, 119, 117, 121, 113, 112, 111, 109, 107, 104, 103, 102, 102, 103, + 105, 105, 103, 103, 102, 104, 99, 101, 104, 113, 113, 111, 111, 108, 108, 107, + 106, 110, 96, 94, 123, 110, 124, 116, 108, 114, 115, 115, 115, 119, 125, 126, + 125, 126, 127, 123, 119, 119, 123, 125, 125, 130, 127, 124, 124, 124, 123, 119, + 116, 115, 124, 131, 131, 133, 140, 144, 142, 150, 148, 147, 150, 153, 153, 151, + 151, 154, 152, 149, 148, 150, 151, 155, 157, 162, 161, 160, 159, 158, 158, 158, + 158, 162, 163, 164, 166, 166, 168, 167, 166, 173, 173, 172, 173, 172, 170, 169, + 168, 174, 173, 171, 171, 172, 174, 177, 178, 180, 176, 171, 172, 174, 174, 170, + 167, 176, 171, 170, 176, 185, 187, 179, 171, 165, 164, 165, 168, 173, 176, 175, + 174, 169, 168, 167, 165, 162, 160, 159, 158, 164, 152, 145, 151, 158, 163, 174, + 187, 187, 194, 199, 200, 194, 189, 189, 190, 190, 189, 188, 187, 186, 184, 180, + 176, 180, 179, 182, 179, 166, 160, 153, 138, 149, 157, 154, 153, 165, 169, 166, + 167, 172, 165, 157, 154, 151, 148, 148, 150, 144, 163, 105, 146, 140, 155, 152, + 142, 83, 70, 70, 86, 96, 97, 107, 120, 113, 108, 110, 100, 106, 109, 93, + 101, 100, 95, 102, 107, 103, 103, 103, 95, 100, 102, 106, 104, 106, 108, 110, + 111, 111, 110, 109, 106, 105, 106, 112, 101, 109, 112, 113, 112, 112, 112, 113, + 116, 120, 122, 122, 127, 129, 128, 124, 121, 123, 122, 119, 126, 127, 130, 134, + 134, 131, 122, 116, 115, 128, 134, 130, 127, 133, 144, 153, 154, 153, 151, 153, + 154, 154, 153, 151, 153, 152, 149, 147, 148, 151, 153, 156, 160, 160, 159, 158, + 158, 159, 159, 160, 160, 160, 163, 165, 166, 167, 167, 166, 169, 170, 171, 172, + 173, 173, 173, 172, 171, 171, 171, 173, 175, 179, 183, 186, 182, 178, 174, 175, + 178, 178, 175, 171, 174, 171, 171, 176, 182, 184, 180, 175, 173, 171, 171, 172, + 175, 176, 175, 173, 173, 172, 172, 170, 168, 166, 166, 164, 156, 150, 146, 150, + 157, 166, 179, 189, 190, 195, 200, 199, 194, 191, 190, 192, 191, 189, 188, 187, + 186, 184, 180, 176, 177, 173, 176, 173, 163, 161, 158, 145, 148, 159, 156, 151, + 157, 159, 159, 164, 168, 161, 154, 152, 152, 149, 143, 139, 142, 150, 122, 148, + 154, 151, 145, 131, 75, 62, 63, 83, 97, 95, 95, 101, 104, 101, 114, 109, + 103, 105, 96, 101, 105, 96, 95, 96, 91, 99, 108, 107, 100, 100, 105, 109, + 112, 115, 117, 118, 116, 114, 113, 110, 115, 110, 93, 103, 107, 115, 117, 117, + 116, 116, 116, 116, 117, 118, 121, 117, 122, 124, 123, 123, 126, 125, 122, 124, + 125, 129, 133, 133, 131, 125, 120, 117, 125, 131, 131, 132, 137, 146, 151, 152, + 152, 152, 153, 155, 156, 155, 152, 151, 150, 148, 147, 146, 148, 151, 153, 154, + 155, 155, 156, 157, 158, 158, 159, 158, 159, 161, 163, 164, 165, 165, 165, 164, + 165, 167, 169, 172, 173, 174, 174, 172, 172, 172, 174, 176, 180, 183, 186, 180, + 177, 175, 176, 178, 179, 177, 174, 172, 171, 172, 175, 179, 181, 181, 180, 181, + 180, 178, 177, 177, 176, 174, 172, 172, 171, 171, 168, 167, 165, 164, 162, 153, + 156, 154, 152, 158, 171, 184, 190, 193, 196, 199, 197, 192, 190, 192, 194, 192, + 190, 189, 188, 187, 184, 180, 176, 173, 171, 176, 175, 166, 164, 159, 144, 142, + 155, 153, 148, 154, 158, 162, 172, 167, 163, 157, 156, 156, 152, 144, 136, 145, + 136, 137, 144, 160, 146, 140, 128, 64, 52, 54, 78, 97, 100, 100, 104, 98, + 93, 121, 119, 100, 103, 102, 103, 108, 99, 96, 94, 91, 102, 115, 116, 107, + 104, 105, 103, 106, 109, 112, 114, 115, 116, 116, 117, 118, 105, 77, 111, 118, + 121, 112, 117, 117, 119, 120, 118, 115, 116, 120, 117, 122, 122, 121, 123, 128, + 128, 125, 124, 123, 123, 123, 123, 125, 126, 127, 119, 119, 121, 131, 142, 149, + 146, 141, 145, 147, 149, 150, 152, 156, 156, 152, 151, 150, 149, 147, 147, 147, + 149, 150, 148, 149, 149, 151, 152, 155, 157, 158, 161, 161, 162, 163, 164, 163, + 163, 163, 160, 162, 164, 167, 169, 170, 171, 172, 175, 175, 174, 174, 173, 174, + 176, 177, 175, 173, 172, 173, 175, 176, 175, 173, 171, 172, 174, 174, 175, 178, + 181, 183, 185, 183, 181, 178, 177, 175, 174, 172, 173, 173, 171, 168, 165, 162, + 161, 158, 158, 164, 163, 157, 160, 175, 187, 190, 195, 197, 198, 195, 191, 191, + 193, 195, 192, 191, 189, 188, 187, 184, 179, 176, 173, 173, 180, 181, 172, 167, + 156, 137, 147, 157, 153, 149, 158, 164, 168, 175, 163, 164, 161, 156, 153, 151, + 146, 140, 151, 131, 140, 141, 148, 144, 137, 134, 64, 53, 55, 72, 90, 97, + 103, 110, 102, 90, 121, 122, 97, 102, 107, 101, 106, 100, 105, 106, 102, 107, + 117, 114, 112, 108, 106, 85, 87, 88, 92, 98, 105, 110, 114, 113, 120, 107, + 74, 106, 112, 114, 105, 107, 105, 110, 117, 118, 116, 115, 120, 127, 128, 124, + 118, 115, 119, 119, 117, 121, 120, 120, 120, 121, 123, 125, 127, 117, 117, 121, + 129, 138, 144, 146, 147, 145, 149, 150, 149, 152, 157, 154, 148, 153, 151, 150, + 149, 149, 148, 149, 149, 146, 146, 147, 149, 152, 155, 157, 159, 164, 164, 164, + 164, 163, 162, 160, 160, 162, 163, 165, 167, 169, 169, 170, 170, 177, 177, 176, + 175, 173, 173, 172, 173, 172, 171, 171, 171, 174, 174, 174, 173, 172, 173, 174, + 174, 174, 176, 180, 184, 183, 181, 179, 176, 174, 172, 173, 173, 178, 177, 174, + 171, 167, 163, 160, 159, 160, 165, 164, 160, 165, 180, 189, 190, 196, 197, 196, + 194, 191, 191, 193, 195, 192, 190, 188, 187, 186, 182, 178, 174, 175, 172, 175, + 175, 168, 166, 159, 141, 157, 162, 153, 150, 164, 170, 167, 168, 155, 160, 158, + 149, 142, 142, 144, 143, 146, 130, 137, 147, 138, 149, 137, 129, 67, 64, 68, + 80, 87, 88, 93, 101, 111, 92, 115, 115, 95, 104, 106, 97, 100, 97, 104, + 106, 99, 102, 109, 105, 111, 108, 108, 89, 88, 86, 87, 89, 93, 98, 102, + 104, 119, 115, 87, 86, 90, 98, 99, 92, 90, 97, 112, 119, 116, 113, 116, + 113, 114, 111, 106, 105, 110, 113, 111, 115, 119, 124, 127, 127, 125, 124, 125, + 116, 121, 128, 130, 126, 128, 142, 157, 147, 153, 153, 150, 152, 157, 154, 145, + 153, 152, 151, 149, 148, 148, 148, 148, 146, 148, 148, 150, 153, 156, 159, 161, + 164, 164, 164, 164, 163, 161, 160, 159, 165, 166, 168, 169, 170, 170, 170, 170, + 175, 175, 175, 176, 175, 176, 176, 177, 173, 173, 173, 173, 174, 175, 175, 175, + 173, 174, 174, 174, 174, 175, 178, 182, 178, 177, 175, 173, 170, 170, 172, 174, + 176, 174, 173, 170, 166, 163, 160, 159, 158, 159, 158, 161, 170, 183, 190, 193, + 197, 195, 194, 193, 191, 191, 192, 192, 191, 189, 187, 186, 184, 181, 176, 172, + 176, 167, 164, 162, 159, 166, 168, 156, 149, 154, 148, 151, 170, 178, 172, 170, + 158, 163, 158, 145, 139, 142, 146, 145, 134, 132, 138, 155, 143, 152, 139, 107, + 59, 66, 81, 98, 104, 100, 99, 103, 116, 97, 109, 106, 96, 106, 102, 96, + 97, 92, 96, 95, 88, 92, 104, 103, 113, 109, 110, 104, 103, 99, 98, 96, + 96, 98, 100, 108, 117, 113, 99, 72, 82, 93, 96, 91, 86, 94, 112, 121, + 115, 108, 107, 98, 102, 103, 102, 105, 112, 117, 115, 116, 121, 126, 128, 127, + 125, 126, 126, 120, 123, 128, 133, 130, 126, 133, 143, 142, 149, 151, 149, 151, + 159, 157, 147, 152, 151, 150, 149, 148, 146, 146, 145, 145, 145, 146, 148, 151, + 154, 156, 158, 160, 161, 162, 162, 162, 162, 161, 161, 164, 165, 166, 168, 169, + 170, 170, 170, 170, 171, 173, 175, 176, 177, 178, 178, 175, 176, 176, 175, 175, + 174, 174, 175, 175, 174, 175, 175, 175, 176, 178, 178, 176, 176, 175, 171, 167, + 167, 170, 173, 170, 169, 169, 167, 166, 164, 164, 163, 165, 158, 157, 166, 178, + 188, 192, 196, 195, 194, 193, 192, 191, 191, 189, 189, 190, 188, 186, 184, 182, + 179, 174, 170, 171, 163, 161, 162, 163, 173, 177, 165, 142, 152, 151, 156, 173, + 180, 173, 172, 167, 167, 158, 144, 142, 148, 146, 138, 130, 136, 145, 152, 153, + 144, 149, 85, 54, 65, 84, 106, 118, 119, 117, 115, 117, 107, 112, 107, 106, + 113, 102, 104, 101, 97, 101, 101, 93, 98, 111, 112, 119, 113, 110, 99, 100, + 103, 105, 106, 109, 110, 112, 119, 112, 102, 104, 71, 91, 98, 94, 100, 91, + 97, 116, 125, 116, 103, 98, 107, 112, 114, 114, 116, 120, 121, 117, 123, 123, + 123, 121, 119, 122, 127, 132, 128, 120, 121, 136, 145, 141, 126, 115, 130, 138, + 143, 144, 150, 160, 160, 151, 151, 150, 149, 147, 146, 145, 144, 144, 141, 142, + 142, 144, 147, 150, 153, 153, 156, 157, 159, 160, 161, 162, 162, 163, 158, 159, + 161, 164, 165, 167, 167, 168, 168, 169, 170, 172, 173, 174, 174, 174, 174, 175, + 176, 175, 173, 172, 173, 174, 176, 176, 174, 175, 176, 177, 176, 174, 177, 176, + 175, 171, 167, 167, 168, 172, 170, 171, 171, 171, 171, 171, 172, 171, 177, 164, + 161, 173, 187, 191, 193, 197, 194, 192, 192, 192, 191, 191, 188, 187, 189, 187, + 185, 183, 181, 178, 173, 169, 167, 162, 167, 173, 175, 182, 180, 164, 152, 165, + 165, 165, 173, 172, 162, 161, 169, 165, 151, 139, 142, 148, 140, 124, 134, 140, + 151, 142, 158, 133, 159, 73, 61, 66, 81, 100, 115, 121, 118, 115, 116, 116, + 120, 112, 116, 118, 104, 114, 106, 105, 114, 118, 110, 114, 124, 123, 120, 112, + 109, 105, 102, 96, 91, 93, 101, 104, 102, 110, 105, 105, 121, 106, 85, 97, + 98, 100, 112, 115, 116, 119, 113, 106, 111, 111, 113, 114, 113, 112, 114, 120, + 125, 124, 121, 129, 132, 122, 121, 125, 121, 124, 122, 125, 135, 144, 145, 142, + 140, 117, 130, 134, 138, 154, 160, 154, 153, 151, 154, 159, 159, 157, 155, 155, + 157, 148, 148, 147, 145, 145, 148, 153, 156, 153, 155, 157, 160, 163, 163, 162, + 161, 169, 166, 164, 165, 165, 164, 166, 170, 166, 164, 168, 174, 174, 169, 170, + 174, 173, 174, 176, 176, 176, 174, 170, 168, 174, 175, 175, 176, 175, 174, 173, + 173, 170, 171, 171, 171, 170, 173, 176, 179, 179, 179, 172, 167, 169, 174, 169, + 160, 165, 159, 160, 173, 189, 192, 192, 193, 194, 196, 197, 197, 195, 192, 188, + 187, 185, 186, 187, 184, 178, 174, 173, 174, 166, 172, 177, 183, 166, 163, 171, + 142, 161, 163, 162, 166, 173, 178, 176, 171, 163, 153, 150, 134, 136, 146, 133, + 128, 142, 149, 141, 153, 171, 123, 161, 74, 66, 69, 89, 108, 111, 116, 120, + 115, 108, 113, 116, 117, 121, 123, 120, 115, 115, 114, 115, 118, 121, 123, 122, + 121, 115, 112, 112, 111, 109, 103, 95, 92, 93, 90, 83, 98, 93, 89, 102, + 94, 86, 104, 103, 101, 103, 97, 94, 102, 103, 100, 106, 100, 102, 104, 108, + 110, 115, 119, 122, 120, 118, 125, 128, 119, 121, 126, 122, 128, 127, 124, 123, + 131, 143, 147, 143, 136, 137, 127, 119, 127, 135, 142, 154, 158, 161, 162, 160, + 157, 155, 156, 157, 154, 153, 151, 148, 146, 148, 151, 154, 150, 151, 153, 156, + 159, 159, 160, 160, 166, 162, 162, 164, 165, 163, 165, 169, 169, 167, 170, 175, + 175, 171, 172, 178, 172, 173, 175, 175, 175, 173, 170, 169, 174, 175, 176, 175, + 174, 172, 171, 171, 170, 171, 171, 170, 170, 171, 174, 177, 176, 175, 170, 166, + 168, 174, 175, 172, 161, 161, 169, 182, 189, 190, 190, 194, 193, 194, 195, 195, + 193, 190, 187, 185, 184, 182, 180, 178, 177, 175, 172, 169, 170, 190, 168, 173, + 191, 163, 150, 166, 168, 167, 166, 172, 177, 178, 174, 170, 167, 154, 150, 135, + 133, 140, 129, 131, 143, 141, 144, 144, 131, 140, 139, 61, 66, 73, 93, 109, + 112, 113, 118, 114, 112, 117, 118, 118, 119, 122, 120, 113, 110, 110, 109, 112, + 113, 114, 113, 113, 112, 112, 111, 108, 110, 109, 105, 103, 103, 98, 92, 91, + 91, 86, 95, 92, 93, 108, 97, 100, 99, 89, 87, 99, 102, 99, 104, 104, + 104, 106, 111, 116, 120, 122, 122, 122, 118, 123, 125, 117, 119, 125, 123, 118, + 125, 127, 124, 129, 142, 147, 143, 142, 143, 136, 131, 133, 129, 130, 142, 140, + 147, 157, 166, 167, 166, 163, 161, 156, 154, 152, 149, 146, 146, 147, 151, 147, + 147, 149, 150, 152, 154, 157, 158, 161, 158, 159, 163, 164, 162, 163, 167, 169, + 168, 170, 172, 172, 170, 173, 178, 171, 173, 174, 174, 173, 172, 170, 168, 173, + 174, 174, 174, 173, 171, 170, 169, 169, 171, 171, 169, 168, 168, 171, 173, 168, + 170, 170, 167, 168, 172, 173, 170, 157, 165, 179, 190, 190, 187, 189, 196, 194, + 194, 195, 194, 192, 189, 187, 185, 190, 185, 180, 178, 178, 177, 171, 166, 174, + 181, 182, 190, 177, 162, 173, 169, 175, 171, 172, 181, 184, 177, 170, 170, 170, + 154, 150, 135, 130, 133, 126, 137, 152, 154, 150, 150, 136, 164, 98, 71, 66, + 81, 102, 114, 116, 116, 117, 118, 111, 114, 113, 112, 113, 116, 114, 110, 108, + 106, 105, 107, 108, 109, 108, 108, 107, 109, 107, 105, 108, 111, 110, 111, 113, + 111, 107, 101, 106, 103, 110, 108, 105, 107, 81, 102, 107, 105, 107, 115, 114, + 107, 110, 118, 117, 116, 120, 123, 124, 119, 117, 125, 119, 122, 122, 115, 118, + 125, 121, 117, 121, 124, 122, 121, 129, 142, 152, 148, 150, 147, 147, 148, 137, + 129, 137, 131, 136, 142, 148, 153, 156, 157, 157, 153, 153, 152, 150, 149, 149, + 151, 155, 150, 149, 148, 148, 149, 150, 153, 155, 156, 155, 156, 162, 163, 162, + 162, 165, 167, 167, 167, 167, 166, 167, 170, 174, 169, 171, 171, 171, 171, 170, + 168, 168, 170, 171, 171, 171, 171, 170, 170, 169, 169, 170, 169, 168, 166, 167, + 168, 172, 162, 166, 171, 171, 169, 165, 161, 160, 162, 172, 184, 190, 190, 189, + 191, 195, 196, 196, 196, 196, 192, 191, 189, 188, 190, 187, 182, 178, 174, 171, + 167, 164, 165, 185, 200, 191, 158, 166, 195, 168, 178, 173, 175, 186, 187, 176, + 169, 171, 169, 152, 148, 133, 126, 129, 128, 145, 146, 155, 131, 143, 158, 149, + 53, 74, 66, 90, 109, 119, 122, 120, 121, 125, 120, 121, 120, 118, 119, 123, + 124, 120, 124, 122, 121, 122, 125, 126, 126, 126, 124, 125, 125, 108, 111, 111, + 107, 106, 107, 107, 104, 109, 116, 114, 120, 118, 115, 111, 78, 106, 119, 124, + 124, 126, 120, 115, 122, 124, 121, 119, 120, 121, 119, 112, 107, 120, 114, 116, + 117, 113, 118, 125, 121, 127, 120, 115, 113, 104, 103, 124, 150, 160, 157, 146, + 141, 145, 142, 140, 149, 151, 144, 133, 127, 126, 131, 139, 145, 147, 148, 150, + 150, 149, 152, 155, 157, 153, 152, 149, 147, 147, 148, 151, 152, 155, 153, 155, + 161, 163, 161, 161, 164, 165, 167, 167, 165, 164, 166, 169, 170, 167, 168, 169, + 169, 169, 169, 167, 167, 167, 167, 169, 170, 170, 171, 170, 170, 168, 169, 168, + 167, 165, 166, 167, 170, 166, 167, 168, 168, 166, 162, 160, 161, 172, 177, 182, + 184, 188, 192, 193, 194, 195, 195, 195, 194, 191, 189, 187, 186, 180, 182, 182, + 176, 168, 164, 165, 168, 173, 208, 182, 160, 173, 175, 177, 179, 175, 174, 177, + 187, 188, 178, 171, 171, 165, 150, 146, 130, 124, 131, 135, 153, 155, 150, 129, + 146, 157, 127, 83, 71, 65, 96, 112, 117, 124, 122, 121, 131, 117, 117, 115, + 110, 110, 113, 112, 109, 116, 115, 114, 115, 117, 120, 122, 122, 121, 124, 124, + 107, 111, 111, 106, 104, 107, 108, 107, 112, 113, 106, 113, 114, 115, 119, 94, + 112, 125, 126, 122, 121, 116, 118, 130, 120, 119, 120, 120, 120, 118, 115, 111, + 113, 106, 109, 113, 110, 117, 124, 120, 117, 115, 118, 121, 111, 98, 97, 104, + 142, 151, 149, 145, 151, 153, 150, 154, 154, 150, 145, 143, 141, 139, 136, 134, + 136, 138, 139, 141, 141, 143, 147, 149, 152, 151, 147, 146, 146, 146, 149, 150, + 153, 151, 152, 156, 158, 157, 157, 161, 164, 167, 168, 165, 164, 167, 169, 169, + 165, 166, 166, 166, 167, 167, 166, 166, 166, 167, 168, 169, 170, 170, 170, 170, + 167, 167, 167, 166, 165, 166, 168, 171, 174, 167, 162, 160, 162, 165, 170, 178, + 181, 182, 180, 181, 185, 193, 194, 191, 192, 191, 190, 189, 186, 185, 183, 183, + 176, 181, 184, 179, 170, 167, 173, 180, 207, 187, 154, 164, 181, 174, 176, 173, + 173, 177, 181, 185, 185, 180, 175, 171, 161, 151, 146, 125, 122, 138, 143, 156, + 171, 146, 145, 155, 133, 125, 154, 74, 66, 100, 112, 112, 123, 123, 118, 130, + 113, 114, 110, 104, 101, 103, 100, 94, 100, 98, 96, 97, 99, 101, 102, 104, + 103, 106, 108, 106, 111, 114, 112, 111, 114, 116, 116, 113, 110, 101, 112, 113, + 114, 124, 107, 113, 123, 121, 116, 116, 113, 113, 124, 115, 117, 120, 120, 120, + 119, 119, 122, 115, 109, 111, 114, 112, 118, 122, 116, 107, 117, 123, 123, 122, + 115, 89, 60, 87, 124, 149, 154, 161, 162, 155, 151, 147, 150, 156, 162, 164, + 160, 151, 143, 137, 139, 140, 140, 139, 139, 139, 141, 144, 143, 143, 142, 143, + 144, 146, 147, 151, 148, 148, 151, 152, 152, 153, 157, 160, 165, 167, 164, 162, + 166, 166, 164, 164, 165, 165, 165, 165, 165, 166, 166, 169, 170, 170, 170, 169, + 168, 167, 167, 166, 166, 168, 167, 166, 167, 170, 172, 174, 164, 158, 160, 167, + 170, 176, 183, 183, 185, 182, 180, 184, 192, 193, 189, 191, 191, 188, 187, 184, + 183, 181, 181, 179, 181, 182, 178, 172, 170, 174, 179, 195, 156, 155, 191, 184, + 175, 188, 164, 173, 184, 187, 183, 181, 183, 178, 169, 159, 154, 148, 122, 121, + 145, 149, 155, 156, 141, 141, 145, 128, 129, 158, 86, 74, 109, 114, 109, 125, + 125, 116, 129, 129, 131, 127, 123, 121, 122, 120, 114, 116, 113, 110, 108, 109, + 111, 112, 111, 111, 114, 116, 109, 115, 119, 115, 112, 112, 112, 109, 117, 112, + 105, 119, 119, 115, 122, 107, 112, 120, 117, 115, 120, 116, 109, 114, 111, 114, + 118, 118, 117, 117, 118, 123, 125, 117, 118, 120, 115, 117, 119, 111, 120, 128, + 119, 103, 112, 128, 104, 59, 41, 96, 135, 143, 150, 157, 155, 152, 157, 153, + 150, 149, 152, 157, 159, 158, 151, 152, 152, 150, 146, 144, 144, 144, 137, 138, + 137, 139, 142, 143, 145, 146, 150, 147, 145, 148, 148, 148, 151, 156, 156, 162, + 165, 161, 159, 162, 162, 158, 164, 164, 164, 164, 164, 165, 165, 166, 173, 172, + 172, 172, 169, 168, 165, 165, 165, 167, 167, 167, 166, 167, 171, 173, 167, 159, + 158, 167, 174, 173, 172, 173, 180, 186, 186, 181, 183, 190, 190, 187, 192, 191, + 188, 187, 184, 184, 183, 183, 179, 177, 174, 169, 165, 163, 164, 165, 134, 167, + 174, 193, 207, 184, 173, 174, 176, 190, 192, 182, 179, 185, 181, 167, 159, 157, + 150, 120, 120, 149, 153, 152, 144, 159, 141, 147, 167, 150, 131, 124, 84, 119, + 120, 112, 129, 128, 117, 130, 125, 128, 127, 124, 126, 129, 127, 121, 123, 120, + 114, 112, 112, 113, 113, 113, 116, 119, 119, 107, 109, 111, 111, 110, 109, 110, + 111, 110, 110, 110, 110, 110, 110, 110, 111, 103, 112, 111, 110, 113, 109, 106, + 113, 98, 106, 109, 107, 109, 117, 120, 119, 116, 119, 121, 120, 116, 115, 115, + 118, 119, 122, 121, 108, 119, 115, 115, 66, 29, 49, 83, 117, 141, 150, 148, + 144, 154, 154, 155, 155, 157, 161, 161, 158, 147, 145, 145, 148, 153, 155, 154, + 152, 154, 156, 155, 150, 141, 134, 131, 131, 140, 142, 146, 150, 151, 149, 144, + 140, 152, 153, 158, 162, 161, 156, 158, 164, 162, 164, 162, 158, 159, 165, 168, + 168, 165, 166, 169, 171, 169, 166, 160, 158, 166, 163, 161, 162, 165, 167, 165, + 163, 142, 155, 170, 175, 173, 172, 176, 183, 183, 183, 182, 184, 186, 189, 190, + 189, 192, 189, 185, 183, 183, 183, 182, 181, 183, 179, 172, 166, 164, 161, 156, + 149, 170, 165, 183, 195, 183, 187, 186, 161, 177, 189, 197, 194, 185, 177, 171, + 167, 145, 152, 155, 140, 118, 153, 153, 156, 165, 149, 146, 159, 162, 149, 140, + 143, 96, 114, 109, 117, 123, 112, 122, 121, 127, 126, 132, 132, 123, 123, 122, + 109, 121, 118, 116, 118, 119, 118, 115, 114, 116, 121, 119, 112, 113, 112, 110, + 107, 107, 107, 109, 110, 109, 108, 108, 107, 107, 107, 108, 107, 115, 114, 112, + 116, 113, 109, 117, 111, 115, 113, 105, 101, 104, 106, 105, 106, 109, 111, 111, + 111, 111, 113, 115, 117, 116, 117, 113, 123, 112, 119, 84, 33, 38, 47, 60, + 79, 108, 140, 162, 163, 161, 155, 151, 153, 157, 157, 153, 155, 153, 153, 154, + 158, 161, 164, 164, 158, 158, 157, 153, 150, 148, 148, 149, 146, 142, 138, 137, + 139, 144, 147, 148, 143, 144, 149, 156, 157, 158, 162, 169, 164, 167, 165, 161, + 162, 166, 168, 166, 173, 173, 171, 168, 164, 162, 161, 161, 159, 161, 163, 166, + 168, 164, 157, 152, 161, 168, 175, 179, 177, 176, 177, 180, 188, 187, 188, 190, + 192, 192, 189, 186, 190, 187, 184, 182, 182, 182, 181, 180, 171, 175, 176, 170, + 163, 163, 170, 176, 168, 184, 192, 193, 194, 189, 182, 180, 197, 202, 201, 192, + 183, 179, 177, 174, 163, 158, 146, 128, 113, 157, 165, 171, 153, 148, 154, 169, + 173, 162, 149, 144, 119, 104, 118, 105, 126, 118, 121, 121, 120, 116, 120, 123, + 121, 126, 127, 114, 125, 121, 115, 111, 107, 107, 113, 118, 108, 115, 117, 112, + 113, 112, 111, 109, 109, 110, 111, 114, 113, 110, 108, 107, 108, 108, 109, 108, + 115, 113, 111, 116, 114, 111, 118, 113, 115, 111, 105, 102, 105, 109, 110, 115, + 117, 119, 119, 120, 121, 123, 124, 119, 113, 117, 119, 129, 114, 125, 100, 28, + 31, 34, 34, 39, 60, 93, 118, 132, 142, 152, 158, 166, 169, 164, 157, 160, + 159, 158, 156, 157, 159, 164, 167, 162, 162, 162, 163, 163, 162, 159, 157, 152, + 146, 140, 135, 137, 141, 146, 149, 143, 141, 144, 147, 149, 148, 153, 160, 162, + 165, 164, 161, 160, 164, 163, 160, 166, 169, 168, 167, 162, 162, 162, 166, 164, + 161, 155, 152, 153, 157, 161, 162, 176, 176, 176, 177, 179, 181, 181, 180, 189, + 190, 192, 194, 195, 193, 188, 184, 189, 187, 184, 182, 182, 182, 180, 178, 173, + 173, 171, 165, 160, 160, 167, 174, 171, 201, 200, 190, 199, 189, 178, 196, 199, + 200, 195, 187, 181, 179, 176, 171, 160, 155, 148, 138, 127, 166, 160, 157, 145, + 148, 156, 166, 171, 166, 152, 141, 143, 94, 118, 97, 125, 119, 118, 118, 125, + 117, 117, 117, 113, 118, 117, 104, 101, 111, 122, 127, 122, 116, 112, 109, 110, + 113, 116, 102, 106, 109, 112, 113, 114, 114, 117, 118, 116, 113, 111, 111, 112, + 114, 116, 110, 117, 113, 112, 118, 117, 113, 119, 113, 114, 114, 113, 113, 117, + 120, 123, 126, 127, 127, 127, 127, 127, 127, 128, 121, 120, 122, 120, 131, 120, + 127, 91, 24, 32, 42, 42, 37, 36, 45, 55, 132, 139, 141, 139, 145, 159, + 170, 174, 164, 165, 165, 162, 157, 156, 159, 162, 164, 165, 168, 172, 173, 169, + 159, 151, 160, 156, 153, 151, 151, 148, 146, 143, 146, 143, 141, 144, 145, 146, + 149, 155, 170, 174, 175, 172, 172, 175, 173, 169, 165, 170, 173, 172, 166, 161, + 160, 160, 160, 156, 149, 147, 150, 159, 169, 176, 176, 175, 175, 176, 178, 181, + 184, 185, 188, 188, 189, 192, 193, 192, 188, 185, 188, 185, 183, 181, 181, 180, + 178, 176, 182, 169, 158, 158, 164, 166, 163, 161, 186, 204, 201, 189, 190, 186, + 184, 197, 186, 188, 187, 184, 184, 183, 175, 166, 154, 153, 153, 148, 134, 162, + 148, 139, 167, 171, 172, 170, 172, 175, 166, 155, 151, 105, 104, 105, 122, 115, + 119, 114, 125, 119, 118, 115, 108, 111, 113, 103, 114, 115, 111, 105, 104, 109, + 114, 115, 113, 112, 112, 93, 99, 105, 111, 113, 113, 112, 114, 114, 112, 110, + 109, 109, 112, 115, 118, 114, 120, 114, 113, 120, 119, 115, 120, 117, 119, 120, + 121, 119, 117, 116, 118, 120, 118, 118, 119, 120, 121, 120, 120, 119, 126, 126, + 113, 125, 123, 119, 63, 29, 32, 37, 39, 36, 35, 37, 40, 46, 81, 120, + 143, 154, 159, 156, 147, 167, 171, 173, 172, 167, 164, 164, 166, 167, 166, 166, + 167, 168, 166, 159, 153, 164, 163, 162, 162, 161, 158, 151, 147, 143, 138, 137, + 142, 145, 148, 154, 161, 158, 162, 165, 164, 165, 167, 166, 162, 175, 176, 174, + 169, 162, 157, 156, 156, 146, 151, 158, 165, 169, 171, 171, 171, 174, 176, 177, + 177, 175, 178, 184, 190, 188, 187, 186, 188, 190, 192, 191, 190, 185, 183, 181, + 180, 179, 177, 174, 172, 172, 161, 156, 163, 171, 173, 174, 175, 208, 199, 199, + 193, 179, 186, 198, 190, 187, 188, 186, 185, 187, 188, 181, 172, 165, 159, 151, + 137, 116, 149, 150, 157, 169, 173, 172, 165, 164, 170, 164, 154, 147, 134, 88, + 125, 122, 113, 124, 114, 113, 114, 119, 119, 114, 120, 127, 123, 131, 128, 121, + 114, 116, 120, 117, 109, 107, 103, 102, 92, 98, 104, 107, 107, 106, 105, 105, + 105, 105, 103, 103, 104, 108, 110, 112, 110, 114, 108, 106, 114, 113, 109, 115, + 111, 112, 115, 119, 118, 113, 112, 113, 114, 112, 112, 115, 119, 121, 122, 121, + 114, 124, 123, 105, 117, 118, 109, 43, 33, 32, 33, 36, 38, 39, 38, 37, + 30, 43, 53, 59, 80, 119, 150, 163, 160, 164, 169, 172, 172, 171, 170, 170, + 169, 165, 160, 157, 158, 161, 164, 165, 166, 164, 162, 162, 162, 164, 162, 160, + 144, 139, 135, 138, 140, 140, 143, 148, 158, 163, 165, 165, 165, 169, 168, 165, + 164, 161, 154, 151, 151, 157, 162, 166, 157, 161, 166, 170, 171, 173, 174, 176, + 177, 181, 183, 182, 178, 178, 183, 188, 188, 187, 186, 187, 190, 192, 193, 192, + 182, 180, 178, 177, 176, 174, 171, 168, 158, 159, 165, 170, 166, 163, 174, 189, + 218, 197, 199, 197, 180, 193, 207, 187, 197, 195, 188, 182, 182, 184, 182, 176, + 166, 160, 152, 137, 113, 146, 156, 171, 156, 162, 166, 165, 163, 166, 158, 148, + 145, 159, 84, 133, 128, 120, 127, 120, 116, 116, 125, 126, 121, 128, 132, 126, + 80, 89, 98, 105, 111, 109, 90, 68, 104, 96, 91, 102, 104, 105, 105, 104, + 103, 104, 106, 106, 105, 105, 105, 106, 108, 108, 109, 107, 110, 103, 101, 110, + 111, 106, 110, 106, 106, 109, 115, 115, 113, 114, 119, 115, 113, 113, 116, 120, + 123, 123, 122, 110, 116, 116, 104, 116, 112, 106, 49, 33, 34, 38, 41, 42, + 38, 32, 27, 38, 40, 35, 35, 61, 103, 128, 131, 154, 155, 158, 162, 167, + 170, 170, 169, 167, 165, 162, 159, 158, 161, 166, 170, 166, 165, 163, 164, 166, + 167, 167, 165, 154, 147, 140, 141, 140, 138, 136, 137, 131, 134, 134, 133, 133, + 137, 136, 134, 147, 145, 142, 148, 156, 167, 172, 174, 172, 172, 169, 167, 166, + 172, 180, 186, 181, 181, 182, 183, 183, 183, 182, 181, 186, 185, 186, 187, 190, + 190, 188, 186, 179, 178, 176, 175, 174, 172, 168, 164, 162, 163, 169, 171, 163, + 157, 172, 192, 206, 201, 199, 195, 194, 200, 201, 193, 197, 197, 191, 184, 181, + 181, 179, 174, 159, 157, 156, 146, 123, 150, 154, 166, 166, 170, 175, 180, 179, + 176, 168, 162, 147, 164, 92, 115, 134, 130, 123, 126, 128, 122, 126, 128, 125, + 128, 123, 105, 107, 109, 104, 99, 105, 117, 118, 109, 104, 94, 87, 109, 110, + 108, 106, 104, 106, 110, 114, 111, 111, 111, 111, 112, 112, 111, 111, 113, 115, + 108, 106, 116, 116, 112, 116, 116, 112, 112, 116, 115, 111, 113, 119, 112, 109, + 108, 109, 113, 114, 113, 111, 110, 110, 113, 108, 119, 107, 108, 65, 37, 37, + 37, 37, 36, 35, 34, 34, 36, 32, 26, 35, 78, 132, 160, 160, 156, 154, + 154, 157, 163, 167, 168, 167, 162, 166, 170, 170, 167, 163, 163, 164, 167, 168, + 169, 171, 172, 170, 165, 161, 161, 153, 150, 153, 154, 153, 151, 151, 152, 155, + 154, 151, 151, 153, 153, 150, 153, 152, 156, 166, 177, 181, 176, 169, 165, 171, + 176, 178, 178, 177, 179, 181, 179, 177, 177, 181, 186, 187, 182, 176, 182, 182, + 184, 187, 188, 186, 182, 178, 178, 176, 175, 174, 173, 170, 166, 162, 175, 166, + 164, 169, 172, 172, 183, 199, 188, 206, 197, 190, 207, 203, 190, 198, 191, 197, + 198, 195, 190, 186, 179, 172, 166, 159, 154, 143, 120, 148, 151, 163, 167, 165, + 168, 171, 170, 166, 161, 161, 150, 156, 101, 93, 137, 137, 117, 128, 129, 119, + 117, 123, 125, 127, 114, 88, 105, 110, 108, 98, 96, 102, 101, 92, 101, 92, + 88, 101, 105, 103, 99, 97, 102, 106, 106, 106, 109, 113, 115, 116, 115, 114, + 114, 116, 119, 111, 106, 113, 114, 114, 122, 117, 118, 116, 110, 110, 112, 113, + 109, 108, 107, 106, 107, 110, 111, 110, 109, 107, 121, 123, 113, 113, 120, 106, + 80, 36, 36, 40, 41, 35, 26, 31, 40, 36, 35, 32, 42, 83, 137, 165, + 166, 171, 172, 171, 167, 162, 159, 158, 158, 160, 162, 163, 164, 164, 166, 168, + 170, 171, 172, 170, 170, 169, 170, 171, 170, 166, 159, 151, 148, 151, 154, 155, + 154, 158, 158, 158, 159, 160, 160, 161, 161, 163, 163, 165, 168, 171, 175, 178, + 179, 173, 173, 173, 173, 174, 176, 178, 181, 182, 182, 181, 181, 181, 182, 183, + 184, 183, 183, 184, 186, 187, 186, 183, 180, 179, 179, 175, 169, 163, 161, 165, + 169, 166, 169, 170, 168, 173, 184, 192, 195, 198, 186, 187, 194, 199, 203, 200, + 185, 198, 192, 185, 184, 186, 185, 179, 174, 177, 165, 154, 142, 123, 156, 156, + 163, 169, 166, 168, 172, 171, 167, 164, 166, 150, 143, 111, 88, 119, 118, 127, + 126, 125, 121, 116, 115, 116, 114, 109, 102, 118, 106, 97, 98, 107, 107, 94, + 79, 116, 145, 103, 96, 101, 100, 96, 95, 100, 103, 104, 102, 106, 110, 112, + 112, 113, 115, 117, 125, 128, 121, 115, 117, 113, 107, 111, 111, 114, 114, 110, + 110, 114, 115, 111, 114, 113, 111, 112, 114, 115, 114, 113, 112, 121, 122, 116, + 119, 126, 119, 102, 44, 38, 35, 34, 33, 37, 54, 69, 78, 83, 81, 82, + 106, 144, 165, 167, 178, 180, 181, 179, 176, 173, 173, 173, 169, 174, 177, 176, + 172, 170, 174, 178, 182, 182, 180, 180, 181, 183, 185, 187, 182, 178, 171, 163, + 157, 156, 158, 160, 152, 154, 158, 161, 163, 162, 161, 159, 163, 164, 167, 171, + 175, 178, 181, 182, 183, 181, 179, 178, 177, 178, 179, 180, 183, 183, 183, 183, + 183, 184, 184, 185, 183, 183, 184, 186, 188, 188, 186, 184, 176, 174, 172, 168, + 165, 164, 166, 169, 170, 171, 171, 173, 183, 194, 198, 196, 199, 203, 213, 211, + 195, 191, 200, 202, 194, 192, 189, 186, 182, 179, 178, 177, 169, 170, 168, 150, + 117, 141, 150, 169, 169, 167, 168, 173, 172, 168, 164, 165, 147, 138, 108, 87, + 123, 126, 129, 123, 116, 115, 116, 119, 123, 126, 123, 121, 105, 100, 95, 95, + 99, 101, 96, 91, 77, 101, 102, 93, 98, 98, 95, 94, 99, 102, 102, 98, + 104, 107, 106, 104, 105, 110, 115, 108, 115, 113, 112, 117, 112, 104, 109, 107, + 110, 112, 111, 113, 116, 117, 113, 120, 117, 115, 115, 116, 117, 116, 115, 114, + 114, 113, 113, 117, 121, 119, 113, 78, 70, 64, 63, 69, 80, 99, 114, 117, + 126, 127, 122, 129, 149, 164, 165, 178, 181, 184, 185, 184, 183, 182, 182, 179, + 186, 191, 189, 180, 175, 178, 184, 185, 184, 184, 184, 186, 189, 192, 194, 190, + 188, 183, 173, 162, 156, 156, 158, 154, 155, 157, 159, 161, 163, 163, 164, 160, + 162, 164, 168, 171, 173, 175, 175, 181, 179, 177, 175, 174, 174, 175, 176, 178, + 178, 179, 181, 180, 181, 180, 181, 182, 181, 180, 181, 182, 183, 181, 180, 174, + 172, 169, 168, 169, 170, 171, 170, 170, 171, 173, 180, 192, 203, 203, 197, 208, + 203, 207, 206, 195, 194, 199, 195, 187, 189, 188, 183, 176, 171, 173, 175, 170, + 164, 157, 144, 120, 147, 148, 156, 168, 166, 168, 173, 173, 168, 164, 163, 153, + 137, 107, 82, 122, 132, 134, 129, 134, 133, 132, 129, 124, 120, 114, 111, 115, + 113, 109, 104, 99, 97, 97, 99, 91, 95, 119, 95, 101, 101, 98, 96, 100, + 101, 101, 100, 104, 105, 102, 97, 96, 101, 108, 94, 104, 103, 106, 114, 112, + 107, 111, 107, 112, 114, 114, 115, 120, 118, 115, 120, 117, 114, 113, 114, 115, + 115, 114, 116, 111, 108, 111, 113, 112, 112, 112, 113, 110, 109, 111, 117, 122, + 130, 136, 134, 144, 148, 142, 144, 157, 168, 170, 176, 180, 184, 186, 186, 184, + 183, 183, 183, 188, 192, 191, 185, 181, 181, 183, 185, 184, 182, 182, 183, 186, + 189, 192, 187, 187, 184, 178, 169, 163, 159, 158, 161, 158, 155, 152, 153, 157, + 162, 165, 160, 162, 163, 165, 166, 167, 167, 166, 174, 172, 171, 171, 171, 172, + 174, 175, 175, 177, 177, 179, 178, 179, 177, 177, 183, 181, 179, 178, 178, 179, + 178, 176, 177, 173, 171, 171, 174, 176, 175, 172, 167, 173, 180, 187, 197, 205, + 204, 198, 207, 195, 194, 196, 195, 200, 202, 193, 190, 191, 189, 183, 177, 173, + 174, 176, 170, 160, 153, 144, 126, 156, 153, 158, 167, 164, 165, 172, 173, 168, + 162, 160, 161, 142, 114, 78, 115, 133, 136, 140, 127, 129, 132, 132, 130, 127, + 124, 124, 126, 126, 123, 118, 111, 107, 106, 107, 116, 99, 108, 102, 107, 106, + 102, 100, 102, 102, 101, 102, 104, 105, 102, 98, 98, 102, 109, 108, 115, 111, + 110, 116, 113, 107, 112, 112, 116, 118, 117, 117, 121, 119, 115, 120, 117, 114, + 113, 114, 116, 115, 114, 120, 114, 113, 117, 118, 114, 113, 116, 124, 126, 130, + 133, 136, 136, 136, 134, 144, 151, 154, 153, 158, 170, 179, 179, 181, 184, 188, + 190, 189, 187, 186, 185, 185, 186, 187, 188, 188, 187, 183, 180, 187, 186, 184, + 182, 182, 184, 186, 188, 183, 183, 183, 185, 185, 181, 173, 168, 162, 160, 157, + 154, 153, 153, 155, 156, 160, 160, 162, 163, 164, 164, 165, 165, 173, 172, 171, + 171, 171, 173, 174, 175, 174, 174, 175, 176, 176, 176, 176, 177, 180, 179, 177, + 177, 179, 180, 180, 179, 177, 174, 171, 172, 175, 177, 175, 173, 169, 180, 191, + 196, 199, 203, 204, 203, 200, 198, 203, 202, 192, 195, 205, 206, 199, 197, 191, + 186, 183, 181, 179, 179, 163, 168, 173, 158, 125, 149, 157, 176, 166, 162, 162, + 169, 171, 167, 161, 158, 157, 142, 124, 79, 109, 130, 129, 139, 127, 131, 134, + 135, 134, 133, 132, 132, 126, 125, 124, 125, 125, 124, 121, 119, 115, 110, 99, + 104, 109, 109, 105, 103, 105, 105, 103, 104, 106, 106, 105, 106, 109, 113, 116, + 115, 120, 115, 112, 117, 115, 110, 116, 117, 120, 121, 118, 118, 121, 121, 117, + 122, 118, 115, 114, 116, 118, 118, 118, 116, 114, 115, 118, 119, 118, 119, 121, + 128, 134, 139, 139, 140, 143, 144, 142, 150, 155, 158, 158, 163, 173, 178, 178, + 182, 185, 188, 189, 188, 186, 186, 186, 187, 184, 183, 186, 190, 190, 186, 181, + 186, 184, 183, 182, 181, 180, 180, 180, 179, 178, 180, 185, 190, 190, 184, 177, + 171, 172, 173, 172, 169, 164, 159, 155, 156, 156, 156, 157, 158, 160, 162, 163, + 169, 169, 167, 166, 166, 166, 167, 168, 167, 167, 166, 166, 166, 168, 169, 169, + 169, 168, 169, 172, 176, 178, 179, 178, 176, 174, 172, 172, 173, 175, 176, 176, + 179, 192, 202, 203, 201, 203, 205, 206, 208, 199, 198, 199, 196, 200, 204, 197, + 199, 195, 188, 184, 181, 179, 177, 176, 169, 169, 169, 155, 125, 150, 154, 168, + 169, 162, 161, 166, 170, 167, 161, 158, 147, 136, 131, 84, 110, 129, 118, 129, + 137, 137, 136, 136, 135, 134, 132, 131, 136, 133, 131, 133, 136, 136, 129, 123, + 114, 133, 120, 100, 106, 107, 104, 103, 107, 108, 106, 107, 106, 105, 108, 112, + 116, 117, 117, 110, 116, 113, 112, 119, 117, 112, 118, 117, 120, 120, 117, 118, + 122, 122, 120, 122, 118, 115, 114, 117, 120, 120, 121, 114, 116, 116, 114, 116, + 120, 123, 124, 132, 141, 149, 148, 148, 153, 158, 159, 157, 163, 167, 167, 167, + 171, 173, 174, 179, 182, 184, 185, 185, 184, 185, 187, 187, 185, 185, 185, 186, + 186, 185, 183, 182, 181, 181, 180, 179, 178, 176, 174, 179, 179, 180, 182, 184, + 185, 184, 184, 188, 187, 185, 183, 179, 175, 171, 169, 164, 162, 159, 157, 157, + 158, 160, 161, 163, 162, 161, 160, 161, 162, 164, 166, 164, 162, 160, 159, 160, + 162, 163, 166, 167, 167, 168, 171, 175, 176, 175, 174, 175, 175, 175, 174, 175, + 178, 182, 186, 191, 199, 205, 204, 202, 203, 204, 203, 212, 197, 191, 195, 198, + 203, 201, 187, 195, 194, 190, 183, 176, 172, 174, 177, 175, 166, 158, 148, 128, + 157, 155, 160, 173, 165, 161, 166, 170, 168, 164, 161, 149, 135, 131, 81, 110, + 134, 118, 129, 124, 123, 123, 128, 135, 140, 142, 142, 143, 140, 137, 136, 136, + 135, 131, 127, 118, 137, 127, 95, 102, 105, 103, 104, 106, 109, 108, 111, 107, + 104, 106, 111, 115, 113, 110, 113, 120, 118, 117, 122, 118, 110, 115, 115, 118, + 117, 114, 116, 121, 123, 121, 120, 117, 113, 113, 115, 118, 119, 121, 119, 123, + 121, 114, 113, 123, 127, 126, 126, 141, 153, 153, 152, 156, 160, 161, 162, 173, + 180, 179, 175, 172, 173, 174, 180, 182, 184, 186, 185, 187, 188, 192, 184, 186, + 186, 184, 180, 180, 180, 182, 182, 182, 183, 184, 184, 181, 178, 177, 184, 186, + 186, 183, 179, 180, 185, 189, 200, 194, 184, 177, 173, 175, 178, 182, 184, 181, + 174, 169, 165, 165, 164, 166, 160, 161, 161, 163, 165, 168, 172, 173, 170, 168, + 165, 162, 163, 167, 169, 172, 178, 178, 179, 180, 181, 180, 176, 173, 177, 178, + 179, 178, 178, 182, 190, 197, 198, 201, 202, 200, 200, 203, 201, 196, 198, 200, + 209, 206, 191, 190, 200, 202, 197, 199, 199, 190, 177, 172, 178, 186, 166, 171, + 173, 158, 126, 152, 161, 181, 176, 167, 162, 166, 170, 170, 166, 165, 163, 139, + 128, 73, 107, 139, 125, 138, 137, 131, 124, 123, 125, 127, 125, 121, 129, 129, + 127, 128, 128, 131, 132, 133, 136, 136, 127, 104, 105, 105, 103, 102, 102, 106, + 109, 113, 111, 109, 108, 108, 110, 112, 114, 114, 114, 114, 113, 113, 114, 115, + 115, 123, 118, 113, 113, 117, 119, 117, 114, 113, 115, 115, 115, 118, 121, 115, + 109, 113, 119, 122, 105, 107, 120, 115, 130, 139, 144, 151, 155, 156, 159, 163, + 166, 175, 175, 177, 180, 180, 178, 173, 169, 171, 175, 178, 183, 183, 185, 185, + 188, 180, 183, 186, 192, 195, 195, 188, 183, 186, 183, 180, 177, 176, 176, 178, + 180, 174, 179, 185, 186, 183, 180, 178, 178, 182, 189, 190, 182, 171, 172, 179, + 185, 186, 190, 192, 192, 186, 181, 175, 173, 176, 176, 173, 171, 169, 167, 165, + 165, 164, 165, 167, 171, 177, 184, 188, 191, 196, 191, 188, 188, 185, 177, 171, + 170, 177, 181, 186, 188, 189, 190, 192, 195, 197, 203, 207, 205, 203, 203, 201, + 197, 192, 199, 199, 194, 196, 206, 204, 195, 200, 198, 191, 183, 182, 185, 186, + 183, 172, 170, 168, 155, 139, 145, 157, 155, 172, 170, 168, 167, 167, 168, 168, + 169, 157, 144, 137, 89, 100, 119, 131, 124, 130, 128, 125, 121, 119, 119, 119, + 119, 120, 122, 124, 128, 130, 132, 132, 132, 125, 127, 130, 112, 115, 113, 111, + 108, 108, 108, 110, 108, 107, 105, 105, 107, 109, 112, 114, 111, 112, 110, 111, + 111, 113, 113, 114, 109, 108, 105, 107, 108, 110, 105, 102, 113, 112, 106, 100, + 101, 108, 112, 111, 113, 107, 111, 109, 117, 119, 108, 127, 141, 147, 154, 157, + 158, 159, 164, 167, 166, 167, 170, 174, 176, 173, 168, 162, 166, 168, 173, 177, + 181, 182, 181, 180, 180, 181, 183, 187, 191, 191, 188, 184, 190, 188, 185, 183, + 181, 181, 182, 182, 181, 180, 178, 174, 172, 174, 179, 185, 182, 187, 188, 183, + 179, 182, 186, 187, 191, 190, 188, 184, 180, 179, 181, 183, 183, 182, 180, 179, + 181, 183, 186, 188, 189, 188, 188, 188, 190, 192, 194, 196, 198, 193, 192, 194, + 194, 190, 188, 188, 189, 191, 193, 193, 192, 193, 197, 200, 201, 206, 207, 203, + 201, 202, 202, 200, 202, 207, 205, 198, 198, 204, 203, 194, 196, 196, 191, 184, + 182, 184, 182, 177, 170, 166, 162, 147, 132, 139, 154, 156, 170, 168, 167, 167, + 168, 169, 169, 168, 159, 150, 140, 99, 103, 127, 132, 128, 128, 127, 127, 125, + 123, 121, 118, 117, 120, 120, 119, 119, 120, 122, 124, 125, 126, 127, 129, 108, + 112, 112, 111, 108, 107, 105, 107, 110, 110, 108, 108, 109, 110, 112, 114, 108, + 108, 108, 109, 110, 111, 113, 114, 114, 114, 115, 115, 113, 110, 105, 102, 105, + 105, 100, 92, 89, 96, 103, 105, 101, 96, 107, 108, 106, 98, 95, 129, 144, + 150, 157, 160, 160, 161, 165, 167, 165, 167, 172, 177, 179, 177, 173, 167, 158, + 158, 163, 172, 181, 186, 186, 184, 182, 182, 182, 184, 188, 190, 190, 189, 188, + 187, 186, 184, 182, 181, 179, 179, 183, 180, 176, 171, 169, 171, 177, 183, 179, + 182, 183, 183, 184, 189, 189, 185, 190, 189, 186, 182, 180, 180, 184, 187, 190, + 188, 187, 187, 189, 194, 200, 204, 202, 200, 198, 196, 195, 195, 195, 195, 196, + 191, 189, 193, 195, 194, 195, 197, 200, 200, 199, 197, 195, 196, 199, 202, 204, + 207, 206, 201, 198, 201, 202, 201, 205, 208, 205, 197, 198, 203, 202, 196, 193, + 194, 191, 186, 184, 184, 180, 174, 174, 167, 161, 146, 131, 139, 158, 163, 166, + 165, 165, 167, 169, 170, 169, 168, 157, 154, 140, 109, 100, 132, 129, 129, 132, + 133, 134, 134, 132, 128, 124, 122, 126, 124, 121, 119, 118, 120, 122, 125, 126, + 125, 125, 100, 104, 107, 109, 108, 107, 106, 107, 112, 112, 110, 108, 107, 108, + 107, 108, 107, 108, 108, 109, 111, 113, 115, 116, 111, 113, 113, 111, 105, 100, + 96, 94, 99, 106, 108, 105, 100, 102, 103, 103, 106, 101, 106, 102, 102, 101, + 98, 128, 145, 151, 157, 161, 161, 161, 164, 166, 170, 171, 174, 179, 183, 183, + 181, 177, 165, 162, 162, 169, 179, 187, 188, 186, 184, 183, 182, 183, 185, 189, + 192, 193, 187, 187, 187, 186, 184, 182, 179, 177, 180, 180, 180, 178, 176, 173, + 172, 171, 172, 177, 180, 180, 182, 186, 186, 182, 185, 187, 189, 189, 187, 184, + 184, 184, 191, 191, 190, 190, 191, 194, 199, 201, 199, 198, 196, 195, 195, 196, + 197, 197, 197, 191, 188, 190, 191, 191, 193, 196, 201, 201, 200, 199, 198, 198, + 198, 199, 202, 205, 205, 199, 197, 199, 200, 198, 198, 199, 196, 192, 194, 201, + 202, 199, 192, 192, 190, 185, 184, 186, 183, 177, 175, 167, 161, 149, 135, 141, + 159, 166, 163, 163, 164, 167, 170, 171, 169, 167, 160, 161, 142, 116, 97, 135, + 128, 134, 133, 134, 135, 135, 134, 131, 128, 125, 129, 127, 125, 123, 122, 122, + 124, 125, 124, 122, 120, 104, 108, 111, 114, 113, 113, 111, 112, 109, 109, 108, + 106, 105, 106, 106, 105, 110, 111, 111, 113, 115, 117, 119, 120, 117, 118, 118, + 115, 111, 107, 106, 106, 110, 118, 123, 121, 117, 116, 115, 112, 108, 107, 108, + 101, 113, 126, 115, 125, 143, 149, 156, 160, 160, 160, 161, 163, 170, 170, 172, + 175, 179, 181, 181, 180, 182, 174, 168, 168, 174, 179, 180, 179, 182, 181, 181, + 180, 182, 185, 189, 192, 191, 191, 192, 191, 190, 187, 184, 182, 180, 180, 181, + 180, 178, 173, 167, 163, 162, 170, 177, 177, 178, 182, 185, 186, 188, 190, 191, + 191, 188, 186, 185, 185, 189, 190, 191, 193, 194, 194, 195, 195, 195, 195, 195, + 195, 196, 198, 200, 201, 201, 194, 190, 192, 193, 193, 195, 198, 197, 198, 200, + 202, 202, 201, 199, 197, 196, 201, 202, 198, 196, 197, 196, 194, 194, 193, 191, + 189, 192, 198, 200, 198, 189, 189, 185, 180, 181, 184, 184, 180, 170, 162, 160, + 151, 137, 139, 155, 161, 162, 163, 164, 167, 170, 171, 170, 168, 166, 168, 147, + 118, 96, 133, 129, 137, 130, 130, 130, 130, 129, 128, 127, 127, 125, 126, 126, + 126, 126, 125, 124, 124, 125, 123, 120, 109, 112, 115, 115, 114, 112, 111, 111, + 110, 111, 111, 113, 114, 115, 115, 116, 114, 115, 115, 116, 118, 120, 122, 124, + 126, 126, 126, 126, 127, 127, 127, 127, 120, 124, 124, 119, 116, 119, 120, 118, + 71, 95, 115, 104, 102, 111, 109, 127, 140, 147, 155, 159, 160, 159, 160, 162, + 171, 171, 171, 175, 178, 180, 179, 178, 176, 171, 166, 165, 170, 176, 181, 182, + 177, 178, 179, 179, 178, 180, 183, 186, 189, 189, 190, 190, 189, 187, 184, 183, + 185, 181, 177, 174, 173, 171, 169, 168, 157, 165, 171, 171, 172, 179, 187, 191, + 193, 192, 189, 186, 183, 184, 188, 191, 187, 189, 192, 195, 196, 196, 195, 195, + 194, 193, 193, 193, 193, 195, 197, 198, 197, 191, 188, 190, 193, 193, 196, 199, + 197, 198, 201, 204, 206, 204, 200, 196, 192, 197, 199, 196, 195, 196, 195, 193, + 197, 195, 192, 191, 192, 194, 194, 193, 186, 185, 182, 177, 177, 181, 182, 178, + 171, 163, 162, 157, 142, 141, 154, 160, 164, 164, 164, 167, 170, 171, 171, 169, + 162, 163, 150, 112, 93, 121, 121, 128, 129, 129, 129, 130, 131, 131, 131, 132, + 128, 129, 130, 131, 131, 130, 129, 129, 128, 127, 125, 109, 111, 113, 113, 111, + 110, 110, 111, 114, 115, 116, 119, 121, 122, 123, 123, 119, 119, 119, 120, 122, + 123, 125, 126, 119, 118, 119, 122, 126, 126, 122, 118, 122, 122, 118, 113, 113, + 118, 117, 115, 68, 85, 106, 98, 91, 92, 98, 129, 138, 145, 154, 159, 160, + 160, 161, 163, 169, 172, 175, 179, 181, 180, 177, 173, 168, 167, 167, 168, 171, + 176, 181, 184, 176, 179, 182, 182, 180, 179, 180, 182, 186, 186, 186, 186, 185, + 185, 184, 183, 188, 183, 177, 175, 176, 178, 178, 177, 161, 163, 162, 160, 164, + 173, 179, 180, 187, 187, 186, 185, 183, 184, 187, 190, 185, 187, 188, 190, 192, + 192, 192, 192, 192, 191, 190, 189, 190, 191, 192, 193, 191, 186, 184, 187, 190, + 190, 191, 195, 199, 199, 199, 202, 204, 203, 199, 195, 193, 197, 197, 193, 192, + 195, 197, 197, 198, 195, 193, 192, 192, 190, 188, 187, 187, 188, 185, 181, 181, + 182, 180, 174, 175, 165, 164, 159, 144, 141, 154, 161, 168, 167, 165, 166, 169, + 171, 171, 171, 157, 157, 155, 108, 97, 112, 115, 116, 121, 124, 128, 131, 133, + 133, 132, 131, 133, 133, 132, 132, 131, 131, 131, 132, 129, 129, 129, 108, 110, + 113, 113, 113, 114, 115, 118, 113, 113, 115, 116, 117, 118, 116, 117, 121, 122, + 121, 123, 123, 126, 126, 128, 126, 125, 125, 130, 132, 131, 122, 114, 123, 123, + 121, 119, 121, 123, 118, 112, 118, 91, 81, 86, 107, 115, 105, 122, 139, 145, + 154, 160, 161, 161, 163, 164, 165, 168, 175, 180, 182, 178, 171, 164, 176, 177, + 177, 175, 173, 171, 172, 173, 178, 182, 186, 187, 184, 182, 182, 182, 188, 188, + 188, 188, 188, 188, 188, 188, 186, 184, 182, 183, 186, 187, 185, 183, 170, 165, + 156, 151, 156, 166, 168, 165, 175, 180, 186, 190, 189, 187, 185, 184, 184, 184, + 183, 183, 183, 184, 185, 186, 193, 193, 192, 191, 192, 193, 195, 196, 194, 189, + 186, 189, 190, 189, 189, 192, 201, 199, 197, 197, 199, 199, 196, 193, 195, 197, + 196, 191, 190, 196, 200, 201, 195, 192, 190, 191, 191, 188, 185, 184, 191, 193, + 192, 188, 187, 186, 180, 172, 173, 161, 159, 154, 138, 135, 149, 157, 170, 169, + 166, 166, 169, 171, 172, 172, 160, 161, 167, 114, 110, 114, 119, 115, 109, 114, + 120, 125, 128, 127, 124, 122, 133, 131, 128, 125, 123, 124, 126, 127, 125, 128, + 130, 112, 114, 115, 116, 115, 113, 111, 110, 122, 117, 105, 120, 111, 118, 113, + 125, 120, 113, 103, 106, 110, 116, 112, 110, 119, 129, 130, 125, 117, 121, 122, + 122, 124, 121, 121, 121, 120, 118, 117, 117, 124, 126, 119, 112, 102, 90, 95, + 116, 137, 145, 149, 154, 163, 159, 155, 162, 165, 170, 176, 179, 178, 175, 171, + 170, 175, 176, 176, 175, 173, 173, 175, 177, 176, 181, 187, 192, 193, 189, 184, + 180, 181, 182, 184, 188, 190, 188, 183, 179, 179, 186, 191, 188, 179, 173, 173, + 176, 179, 173, 159, 155, 161, 158, 155, 164, 169, 175, 183, 189, 186, 178, 173, + 175, 177, 179, 185, 191, 188, 179, 178, 183, 193, 188, 184, 184, 189, 193, 194, + 194, 195, 190, 186, 186, 190, 195, 197, 197, 201, 202, 201, 199, 196, 194, 195, + 197, 197, 197, 196, 195, 195, 194, 193, 193, 195, 194, 194, 195, 194, 191, 185, + 181, 186, 182, 180, 183, 184, 180, 177, 178, 172, 169, 164, 156, 144, 137, 142, + 152, 164, 164, 163, 165, 168, 170, 171, 172, 155, 155, 162, 93, 127, 115, 111, + 123, 115, 116, 117, 121, 123, 123, 121, 118, 121, 118, 115, 114, 115, 119, 123, + 127, 122, 125, 127, 112, 113, 113, 113, 111, 109, 108, 107, 106, 112, 105, 112, + 101, 111, 102, 103, 123, 121, 113, 104, 97, 96, 101, 106, 98, 103, 105, 104, + 107, 113, 114, 110, 104, 107, 118, 129, 129, 123, 118, 121, 103, 119, 125, 126, + 129, 128, 124, 128, 134, 144, 148, 152, 160, 157, 154, 161, 165, 169, 175, 177, + 177, 174, 172, 172, 174, 176, 177, 177, 176, 176, 177, 179, 173, 176, 181, 185, + 188, 188, 187, 186, 187, 183, 178, 177, 179, 182, 185, 186, 183, 177, 174, 178, + 186, 187, 180, 172, 168, 176, 176, 169, 160, 146, 141, 149, 160, 173, 176, 168, + 175, 191, 189, 173, 179, 182, 187, 189, 183, 179, 186, 198, 185, 185, 186, 187, + 188, 190, 193, 195, 202, 197, 190, 188, 189, 192, 193, 194, 195, 196, 197, 196, + 195, 195, 197, 198, 197, 197, 196, 195, 195, 194, 193, 193, 196, 195, 194, 192, + 190, 185, 178, 173, 178, 174, 174, 178, 179, 176, 173, 174, 176, 171, 164, 153, + 143, 138, 146, 158, 163, 165, 166, 169, 171, 171, 169, 168, 158, 159, 152, 106, + 131, 118, 112, 121, 118, 117, 116, 118, 120, 120, 119, 117, 120, 121, 122, 122, + 120, 118, 116, 115, 119, 124, 126, 113, 113, 113, 111, 111, 111, 112, 112, 104, + 128, 128, 121, 94, 104, 102, 109, 95, 96, 96, 96, 98, 102, 109, 114, 119, + 118, 114, 112, 114, 115, 109, 100, 111, 105, 110, 118, 117, 107, 109, 120, 120, + 136, 131, 119, 122, 126, 121, 116, 134, 144, 150, 152, 158, 156, 154, 161, 163, + 167, 172, 175, 175, 174, 174, 174, 174, 176, 179, 180, 179, 178, 178, 179, 175, + 176, 177, 179, 181, 184, 186, 188, 189, 184, 177, 173, 174, 178, 181, 183, 175, + 179, 183, 183, 181, 180, 182, 185, 179, 176, 171, 170, 170, 163, 150, 138, 144, + 146, 157, 171, 176, 174, 183, 197, 187, 179, 174, 176, 179, 178, 177, 177, 179, + 184, 189, 190, 188, 189, 195, 199, 204, 199, 192, 188, 188, 190, 193, 194, 194, + 196, 197, 197, 196, 195, 197, 199, 197, 197, 196, 195, 195, 194, 193, 193, 199, + 198, 196, 194, 191, 186, 180, 176, 177, 175, 176, 181, 183, 180, 177, 177, 183, + 176, 165, 152, 140, 137, 147, 161, 162, 166, 171, 174, 174, 171, 167, 166, 161, + 163, 135, 123, 136, 123, 117, 120, 118, 116, 113, 113, 116, 118, 119, 120, 117, + 119, 121, 123, 124, 124, 123, 122, 120, 122, 125, 110, 109, 109, 108, 109, 111, + 114, 115, 109, 118, 109, 109, 90, 100, 95, 101, 102, 95, 92, 100, 112, 115, + 104, 92, 100, 101, 103, 109, 116, 121, 120, 117, 127, 113, 111, 120, 120, 108, + 108, 116, 114, 123, 117, 110, 113, 113, 108, 110, 132, 146, 151, 151, 157, 157, + 156, 163, 163, 166, 170, 172, 173, 174, 176, 177, 175, 178, 181, 182, 180, 178, + 177, 177, 182, 181, 180, 179, 179, 180, 180, 181, 185, 184, 182, 181, 180, 178, + 174, 172, 172, 180, 186, 182, 172, 168, 174, 182, 181, 170, 163, 162, 165, 171, + 160, 139, 131, 129, 139, 158, 167, 164, 170, 185, 189, 186, 184, 186, 188, 186, + 183, 179, 181, 184, 188, 189, 191, 194, 200, 204, 200, 196, 190, 187, 187, 191, + 196, 199, 199, 201, 202, 201, 198, 196, 197, 197, 196, 196, 196, 195, 195, 194, + 194, 194, 194, 193, 193, 193, 193, 191, 187, 184, 182, 179, 180, 185, 187, 183, + 180, 180, 186, 179, 167, 153, 140, 135, 144, 158, 164, 169, 173, 175, 173, 170, + 167, 166, 162, 164, 120, 137, 138, 130, 126, 126, 118, 115, 112, 111, 114, 118, + 121, 123, 120, 119, 117, 116, 117, 121, 124, 127, 121, 123, 126, 100, 100, 97, + 96, 96, 97, 100, 102, 115, 97, 80, 107, 111, 115, 95, 92, 110, 104, 102, + 110, 120, 122, 111, 100, 98, 100, 105, 111, 116, 119, 121, 123, 121, 114, 121, + 138, 143, 128, 112, 106, 109, 114, 117, 123, 118, 93, 80, 90, 127, 144, 149, + 147, 153, 156, 156, 163, 163, 166, 169, 171, 173, 174, 177, 179, 177, 179, 182, + 182, 179, 176, 174, 174, 185, 185, 184, 183, 182, 179, 177, 176, 181, 181, 182, + 184, 184, 181, 176, 172, 180, 174, 169, 169, 174, 174, 169, 163, 165, 168, 176, + 164, 142, 140, 139, 123, 125, 142, 140, 126, 143, 180, 185, 164, 171, 180, 188, + 186, 180, 179, 185, 192, 184, 182, 182, 185, 192, 198, 201, 202, 197, 194, 190, + 187, 187, 190, 195, 199, 199, 201, 202, 202, 199, 198, 197, 198, 196, 196, 195, + 195, 195, 195, 194, 194, 188, 187, 187, 188, 189, 188, 186, 183, 181, 178, 178, + 182, 182, 178, 174, 174, 180, 174, 165, 153, 141, 135, 143, 155, 166, 170, 173, + 174, 170, 168, 168, 169, 161, 160, 117, 145, 139, 139, 136, 137, 126, 122, 117, + 114, 115, 117, 119, 119, 127, 125, 121, 118, 115, 115, 116, 117, 121, 123, 124, + 94, 92, 89, 86, 84, 84, 85, 86, 95, 91, 94, 129, 123, 115, 97, 109, + 100, 105, 108, 108, 107, 110, 117, 124, 120, 118, 118, 120, 119, 115, 116, 120, + 117, 114, 117, 126, 128, 118, 104, 94, 121, 116, 114, 118, 110, 81, 71, 89, + 120, 139, 145, 142, 148, 153, 155, 162, 164, 167, 171, 173, 174, 175, 177, 179, + 178, 180, 182, 181, 178, 176, 175, 175, 181, 182, 184, 185, 184, 182, 180, 178, + 181, 179, 178, 178, 181, 183, 184, 184, 177, 178, 178, 179, 178, 178, 177, 176, + 176, 174, 182, 170, 144, 134, 114, 71, 81, 101, 106, 92, 92, 121, 152, 166, + 180, 177, 171, 170, 178, 184, 182, 175, 183, 180, 179, 184, 193, 199, 201, 200, + 201, 199, 196, 191, 188, 188, 191, 194, 192, 195, 198, 199, 199, 198, 199, 200, + 195, 195, 195, 195, 195, 195, 195, 195, 193, 191, 189, 189, 189, 187, 184, 182, + 183, 178, 177, 179, 180, 176, 173, 174, 172, 168, 162, 153, 142, 137, 144, 155, + 165, 170, 173, 173, 169, 166, 168, 170, 157, 152, 129, 149, 140, 147, 142, 144, + 137, 132, 126, 122, 119, 117, 115, 113, 123, 126, 129, 131, 131, 128, 125, 122, + 119, 120, 122, 96, 96, 94, 93, 92, 92, 93, 94, 81, 95, 106, 129, 109, + 99, 90, 107, 111, 115, 114, 108, 97, 97, 104, 114, 100, 96, 95, 104, 112, + 116, 119, 123, 119, 121, 118, 112, 108, 109, 106, 102, 110, 106, 100, 104, 110, + 102, 104, 123, 116, 138, 145, 141, 146, 153, 158, 165, 166, 169, 173, 175, 176, + 176, 177, 178, 178, 180, 181, 180, 179, 178, 179, 181, 180, 181, 182, 183, 184, + 183, 182, 181, 183, 180, 177, 176, 179, 182, 184, 185, 175, 186, 196, 194, 184, + 179, 185, 193, 191, 175, 177, 174, 159, 152, 112, 39, 48, 41, 49, 58, 46, + 39, 74, 125, 173, 174, 175, 179, 188, 192, 183, 170, 179, 182, 187, 193, 198, + 201, 201, 201, 205, 205, 202, 197, 191, 188, 189, 191, 191, 194, 198, 200, 200, + 199, 199, 200, 195, 195, 195, 195, 195, 195, 195, 195, 198, 196, 193, 191, 190, + 188, 184, 182, 185, 180, 177, 180, 181, 179, 178, 180, 174, 170, 163, 153, 141, + 135, 142, 154, 161, 167, 173, 174, 170, 166, 167, 168, 152, 144, 149, 153, 143, + 153, 143, 146, 140, 136, 132, 128, 125, 121, 116, 112, 114, 118, 125, 131, 135, + 136, 135, 134, 122, 123, 124, 102, 102, 103, 105, 107, 110, 111, 113, 121, 117, + 104, 118, 116, 125, 105, 97, 99, 100, 102, 106, 112, 117, 120, 120, 110, 97, + 91, 100, 111, 114, 113, 114, 105, 124, 135, 130, 125, 129, 128, 123, 114, 119, + 115, 116, 125, 122, 114, 115, 117, 140, 148, 143, 149, 157, 162, 169, 166, 170, + 174, 178, 177, 177, 177, 178, 177, 179, 180, 180, 180, 181, 184, 187, 182, 182, + 181, 181, 181, 181, 181, 181, 184, 183, 181, 181, 180, 181, 178, 177, 185, 184, + 185, 188, 192, 191, 186, 181, 178, 171, 181, 177, 157, 154, 120, 52, 90, 65, + 50, 54, 60, 56, 57, 65, 100, 143, 183, 186, 168, 159, 168, 181, 177, 186, + 197, 204, 205, 204, 204, 205, 206, 207, 205, 201, 194, 190, 190, 192, 197, 200, + 203, 203, 202, 199, 198, 198, 195, 196, 196, 196, 196, 196, 195, 195, 194, 192, + 189, 187, 186, 185, 182, 179, 183, 178, 175, 177, 179, 178, 179, 183, 183, 176, + 166, 153, 139, 131, 138, 149, 157, 166, 175, 177, 173, 168, 165, 165, 148, 139, + 164, 156, 145, 157, 142, 145, 136, 134, 133, 132, 130, 127, 121, 118, 115, 114, + 116, 117, 120, 123, 127, 129, 127, 128, 128, 118, 117, 115, 114, 113, 113, 111, + 111, 116, 114, 111, 109, 108, 111, 116, 121, 120, 122, 111, 107, 115, 117, 118, + 126, 118, 112, 105, 102, 101, 103, 105, 110, 128, 123, 120, 116, 111, 110, 118, + 128, 120, 112, 112, 120, 121, 113, 109, 112, 118, 141, 143, 135, 141, 155, 158, + 160, 163, 170, 176, 177, 173, 171, 172, 174, 175, 180, 183, 185, 184, 183, 183, + 184, 182, 183, 184, 184, 185, 185, 184, 184, 182, 181, 179, 178, 177, 179, 179, + 180, 177, 183, 188, 190, 185, 181, 175, 175, 183, 166, 167, 161, 160, 149, 106, + 79, 127, 112, 89, 68, 54, 51, 53, 55, 48, 80, 84, 139, 156, 177, 189, + 183, 189, 196, 200, 199, 199, 203, 203, 201, 210, 209, 208, 203, 194, 188, 193, + 202, 193, 194, 195, 197, 198, 199, 200, 201, 195, 196, 197, 197, 195, 195, 196, + 198, 200, 192, 185, 187, 189, 186, 183, 182, 182, 183, 179, 180, 184, 178, 172, + 179, 179, 166, 174, 153, 148, 132, 154, 153, 158, 164, 171, 167, 162, 173, 176, + 160, 136, 155, 159, 144, 139, 149, 152, 144, 146, 147, 147, 139, 130, 124, 123, + 126, 124, 120, 118, 121, 119, 117, 123, 133, 127, 151, 132, 112, 113, 112, 112, + 111, 110, 109, 108, 103, 106, 109, 110, 111, 112, 113, 115, 110, 119, 115, 112, + 119, 119, 117, 124, 112, 118, 124, 127, 125, 120, 119, 119, 115, 113, 114, 121, + 122, 117, 113, 112, 112, 110, 114, 122, 122, 116, 120, 131, 117, 140, 144, 136, + 143, 155, 158, 160, 166, 171, 177, 177, 173, 171, 172, 173, 174, 178, 182, 184, + 183, 182, 183, 184, 185, 186, 186, 186, 185, 184, 183, 182, 183, 183, 181, 180, + 178, 179, 180, 180, 177, 180, 183, 183, 180, 178, 177, 178, 186, 166, 166, 157, + 158, 152, 133, 78, 112, 117, 122, 124, 117, 101, 80, 63, 46, 47, 53, 140, + 182, 195, 196, 198, 195, 201, 205, 203, 204, 207, 209, 207, 205, 206, 208, 207, + 200, 192, 193, 200, 193, 193, 194, 194, 194, 194, 194, 194, 194, 196, 197, 196, + 194, 193, 194, 196, 199, 192, 187, 189, 191, 188, 184, 183, 173, 179, 178, 177, + 178, 170, 168, 178, 178, 165, 170, 147, 138, 127, 150, 154, 182, 181, 181, 173, + 160, 162, 162, 148, 160, 153, 156, 164, 158, 145, 145, 156, 151, 123, 103, 105, + 113, 114, 116, 122, 132, 123, 115, 114, 115, 116, 123, 131, 132, 151, 141, 110, + 111, 112, 112, 112, 111, 108, 107, 113, 113, 111, 110, 109, 108, 107, 108, 111, + 107, 95, 99, 118, 124, 114, 111, 109, 114, 117, 114, 109, 107, 111, 117, 127, + 117, 110, 115, 121, 123, 120, 118, 124, 126, 130, 128, 113, 96, 94, 104, 118, + 139, 144, 137, 144, 153, 155, 159, 166, 171, 175, 177, 175, 172, 172, 174, 173, + 176, 180, 182, 182, 182, 183, 184, 188, 188, 188, 187, 186, 184, 183, 182, 184, + 184, 181, 179, 178, 178, 179, 179, 178, 178, 178, 177, 176, 176, 179, 181, 177, + 165, 171, 162, 163, 153, 130, 59, 124, 117, 110, 107, 110, 114, 114, 111, 125, + 97, 82, 144, 173, 175, 169, 174, 191, 198, 201, 199, 200, 204, 205, 204, 199, + 202, 209, 212, 206, 196, 194, 197, 198, 198, 198, 197, 196, 195, 193, 192, 193, + 194, 195, 194, 192, 191, 192, 194, 197, 191, 189, 192, 193, 189, 184, 183, 178, + 184, 184, 181, 178, 168, 167, 179, 178, 170, 172, 148, 134, 130, 156, 164, 159, + 158, 166, 171, 163, 158, 152, 142, 151, 158, 160, 156, 156, 160, 158, 152, 139, + 107, 90, 104, 116, 110, 107, 115, 126, 123, 123, 127, 128, 125, 124, 126, 130, + 138, 135, 110, 112, 113, 114, 113, 112, 110, 109, 119, 114, 106, 101, 100, 102, + 105, 108, 96, 109, 109, 103, 101, 100, 108, 128, 112, 115, 116, 113, 111, 114, + 120, 123, 118, 105, 96, 98, 104, 105, 105, 106, 106, 111, 119, 122, 112, 100, + 99, 105, 117, 137, 141, 137, 144, 152, 154, 159, 165, 169, 174, 176, 176, 175, + 177, 178, 174, 177, 180, 182, 182, 183, 185, 186, 188, 189, 189, 188, 187, 186, + 185, 184, 184, 183, 181, 179, 177, 177, 178, 178, 180, 179, 177, 175, 175, 175, + 177, 180, 173, 169, 173, 162, 163, 160, 104, 81, 126, 120, 114, 115, 120, 124, + 123, 120, 113, 105, 107, 141, 167, 187, 198, 210, 188, 193, 196, 194, 195, 199, + 201, 200, 198, 202, 208, 212, 207, 197, 193, 195, 199, 199, 200, 199, 198, 195, + 193, 192, 192, 194, 195, 194, 191, 190, 191, 192, 194, 190, 190, 194, 195, 189, + 184, 183, 188, 190, 186, 182, 180, 171, 166, 176, 176, 173, 173, 152, 133, 136, + 161, 172, 176, 167, 169, 172, 160, 151, 148, 142, 144, 156, 155, 144, 146, 158, + 153, 137, 126, 118, 113, 119, 115, 106, 108, 118, 119, 122, 124, 127, 125, 122, + 123, 125, 126, 122, 125, 112, 114, 114, 115, 115, 114, 113, 112, 105, 102, 96, + 96, 100, 106, 111, 114, 115, 116, 107, 108, 118, 120, 114, 117, 103, 111, 118, + 125, 132, 136, 130, 121, 128, 127, 131, 135, 133, 126, 120, 119, 111, 110, 112, + 115, 115, 113, 115, 119, 115, 133, 139, 137, 145, 151, 153, 160, 162, 165, 170, + 174, 177, 179, 181, 183, 177, 180, 182, 184, 183, 184, 186, 188, 186, 187, 188, + 188, 188, 188, 187, 188, 187, 186, 184, 182, 181, 180, 181, 181, 183, 182, 180, + 179, 178, 176, 174, 173, 170, 172, 165, 153, 153, 163, 75, 128, 122, 121, 120, + 122, 124, 121, 113, 104, 117, 118, 139, 160, 176, 176, 177, 184, 193, 198, 199, + 197, 196, 200, 203, 201, 203, 203, 207, 208, 203, 195, 192, 194, 193, 194, 195, + 195, 195, 193, 191, 189, 193, 194, 195, 194, 191, 190, 191, 192, 191, 189, 190, + 195, 195, 189, 185, 184, 190, 188, 179, 177, 182, 175, 168, 173, 170, 171, 167, + 151, 124, 131, 151, 160, 177, 161, 153, 150, 142, 144, 155, 158, 158, 141, 139, + 152, 151, 136, 127, 137, 133, 136, 129, 114, 102, 104, 114, 120, 118, 121, 121, + 114, 106, 106, 114, 122, 121, 123, 126, 114, 115, 115, 114, 115, 115, 116, 116, + 107, 107, 107, 112, 116, 119, 116, 113, 124, 119, 110, 116, 137, 137, 118, 106, + 116, 119, 119, 119, 126, 132, 125, 114, 124, 125, 127, 127, 120, 114, 116, 121, + 139, 129, 118, 111, 109, 110, 109, 109, 112, 129, 135, 137, 145, 151, 154, 162, + 162, 165, 169, 173, 177, 181, 183, 184, 180, 182, 183, 184, 184, 184, 186, 188, + 185, 186, 187, 188, 188, 188, 188, 188, 189, 189, 187, 186, 184, 185, 186, 187, + 185, 183, 181, 180, 178, 175, 170, 166, 156, 166, 164, 154, 148, 140, 51, 121, + 120, 115, 109, 107, 109, 117, 123, 125, 123, 104, 133, 161, 190, 183, 183, 200, + 197, 201, 201, 198, 197, 200, 202, 201, 206, 203, 203, 203, 199, 193, 192, 195, + 192, 193, 195, 197, 196, 195, 193, 191, 193, 194, 195, 194, 190, 189, 190, 191, + 191, 189, 192, 196, 196, 190, 187, 188, 190, 186, 176, 177, 186, 183, 175, 180, + 171, 174, 166, 151, 119, 131, 140, 147, 145, 141, 146, 151, 147, 154, 159, 156, + 144, 136, 134, 140, 143, 138, 135, 139, 135, 140, 134, 119, 116, 122, 118, 108, + 113, 123, 130, 124, 113, 107, 105, 105, 112, 124, 127, 115, 114, 113, 112, 112, + 114, 116, 117, 120, 120, 120, 124, 127, 127, 120, 116, 103, 128, 139, 131, 117, + 106, 113, 134, 136, 137, 129, 118, 121, 129, 130, 123, 133, 129, 124, 120, 114, + 115, 125, 136, 125, 121, 116, 114, 115, 117, 116, 112, 109, 126, 134, 137, 147, + 152, 155, 164, 167, 167, 169, 173, 177, 181, 182, 183, 181, 183, 184, 183, 182, + 182, 184, 186, 187, 188, 188, 188, 188, 187, 187, 186, 187, 186, 185, 184, 185, + 186, 187, 188, 186, 182, 179, 177, 176, 173, 168, 164, 148, 157, 159, 146, 138, + 103, 75, 101, 109, 115, 120, 125, 127, 129, 131, 132, 140, 121, 150, 159, 187, + 185, 187, 203, 197, 201, 201, 196, 194, 197, 198, 197, 203, 200, 199, 200, 198, + 193, 192, 196, 194, 196, 198, 199, 199, 197, 194, 192, 192, 193, 193, 192, 188, + 187, 187, 189, 193, 192, 194, 198, 197, 192, 191, 193, 192, 189, 180, 180, 187, + 183, 177, 183, 174, 177, 163, 152, 118, 135, 142, 148, 157, 163, 172, 170, 160, + 158, 151, 132, 123, 133, 133, 124, 127, 141, 141, 132, 130, 132, 133, 133, 135, + 134, 125, 115, 119, 126, 132, 130, 125, 121, 113, 104, 109, 116, 112, 116, 114, + 111, 110, 110, 113, 116, 118, 120, 117, 115, 118, 124, 128, 128, 125, 136, 128, + 110, 108, 124, 132, 125, 125, 108, 119, 124, 121, 123, 129, 126, 118, 110, 110, + 113, 116, 114, 111, 112, 118, 115, 121, 127, 130, 129, 123, 112, 102, 108, 124, + 132, 137, 148, 152, 155, 165, 170, 170, 171, 173, 177, 180, 180, 180, 182, 183, + 183, 182, 180, 180, 182, 185, 189, 189, 189, 188, 187, 186, 184, 183, 183, 182, + 181, 181, 182, 183, 185, 187, 185, 181, 176, 173, 172, 171, 168, 165, 160, 153, + 144, 122, 120, 80, 138, 121, 116, 117, 116, 112, 106, 107, 112, 117, 113, 129, + 177, 163, 183, 194, 193, 191, 200, 204, 203, 197, 195, 197, 198, 197, 200, 197, + 197, 199, 198, 194, 193, 196, 192, 194, 196, 197, 195, 193, 189, 187, 190, 191, + 192, 190, 187, 185, 185, 187, 196, 195, 197, 200, 199, 194, 194, 197, 190, 190, + 182, 178, 180, 172, 167, 177, 172, 174, 156, 147, 116, 139, 147, 152, 151, 152, + 153, 141, 133, 144, 149, 136, 138, 123, 121, 130, 127, 115, 115, 129, 133, 128, + 126, 128, 127, 124, 131, 145, 138, 131, 116, 106, 111, 123, 129, 127, 116, 108, + 96, 116, 116, 116, 116, 116, 117, 117, 118, 121, 120, 119, 109, 95, 100, 107, + 101, 93, 110, 115, 116, 119, 114, 112, 121, 130, 125, 126, 131, 125, 107, 98, + 100, 118, 116, 111, 107, 106, 110, 116, 120, 112, 116, 120, 124, 125, 126, 129, + 132, 116, 122, 133, 142, 147, 151, 154, 157, 170, 171, 173, 174, 176, 180, 185, + 189, 184, 183, 182, 181, 181, 182, 183, 184, 183, 183, 184, 186, 186, 189, 190, + 191, 181, 178, 184, 185, 176, 178, 185, 184, 180, 183, 183, 177, 173, 171, 167, + 162, 162, 130, 143, 127, 94, 119, 135, 115, 129, 128, 124, 121, 118, 118, 117, + 118, 102, 140, 166, 174, 180, 185, 186, 192, 196, 199, 200, 199, 195, 194, 196, + 199, 209, 204, 198, 196, 196, 195, 192, 188, 189, 191, 194, 196, 196, 195, 193, + 192, 198, 194, 190, 190, 192, 194, 192, 190, 201, 200, 199, 200, 200, 197, 191, + 186, 195, 192, 186, 180, 175, 173, 172, 173, 171, 154, 163, 136, 92, 148, 148, + 159, 153, 154, 155, 151, 143, 137, 135, 135, 138, 136, 135, 134, 129, 124, 127, + 134, 127, 122, 118, 121, 126, 129, 126, 122, 130, 131, 132, 127, 113, 104, 112, + 126, 116, 111, 106, 116, 117, 116, 116, 116, 116, 115, 116, 119, 117, 118, 112, + 104, 111, 118, 111, 101, 108, 104, 105, 115, 121, 124, 137, 121, 122, 123, 121, + 120, 121, 120, 118, 105, 111, 119, 120, 115, 109, 105, 102, 112, 122, 135, 140, + 132, 117, 101, 91, 126, 121, 122, 133, 139, 140, 145, 153, 163, 166, 171, 174, + 176, 178, 179, 182, 186, 185, 183, 183, 182, 184, 184, 186, 184, 186, 185, 186, + 184, 183, 181, 179, 190, 183, 186, 189, 184, 187, 190, 185, 185, 184, 177, 170, + 168, 169, 164, 158, 146, 143, 145, 122, 111, 124, 124, 130, 130, 131, 130, 128, + 126, 124, 122, 119, 112, 145, 168, 175, 183, 187, 188, 191, 195, 197, 199, 200, + 199, 198, 198, 199, 199, 198, 197, 197, 197, 194, 191, 188, 192, 191, 190, 189, + 189, 190, 192, 193, 196, 190, 183, 181, 183, 191, 199, 203, 203, 203, 202, 198, + 193, 190, 189, 189, 191, 186, 178, 176, 176, 177, 175, 174, 188, 169, 167, 123, + 100, 144, 141, 146, 144, 143, 138, 136, 138, 148, 161, 172, 154, 149, 147, 147, + 145, 139, 137, 138, 129, 127, 125, 127, 130, 134, 139, 141, 147, 145, 143, 139, + 126, 111, 102, 102, 117, 138, 129, 119, 118, 118, 119, 117, 118, 117, 118, 122, + 117, 119, 118, 115, 121, 126, 118, 113, 110, 98, 90, 98, 100, 100, 107, 114, + 125, 129, 122, 120, 125, 119, 106, 118, 110, 98, 87, 86, 96, 113, 126, 136, + 128, 114, 104, 104, 115, 132, 144, 117, 112, 114, 127, 137, 142, 151, 161, 159, + 163, 171, 177, 178, 178, 177, 177, 184, 183, 183, 182, 182, 184, 183, 185, 180, + 182, 184, 186, 185, 184, 181, 180, 186, 177, 178, 183, 180, 185, 184, 175, 179, + 180, 176, 175, 174, 171, 158, 143, 142, 154, 134, 107, 127, 134, 115, 139, 136, + 139, 141, 143, 141, 137, 133, 130, 122, 150, 167, 174, 184, 189, 187, 189, 192, + 193, 197, 200, 203, 202, 199, 196, 189, 193, 197, 198, 197, 193, 190, 189, 192, + 192, 190, 189, 189, 190, 191, 191, 186, 189, 193, 196, 196, 198, 200, 201, 207, + 208, 206, 200, 193, 191, 194, 199, 192, 184, 177, 176, 179, 181, 176, 173, 169, + 158, 154, 103, 119, 154, 151, 147, 151, 148, 138, 129, 120, 114, 114, 114, 146, + 141, 139, 147, 151, 149, 145, 144, 137, 139, 142, 143, 143, 145, 149, 153, 129, + 125, 124, 129, 129, 122, 111, 105, 107, 139, 134, 119, 120, 121, 121, 121, 122, + 123, 123, 128, 119, 122, 123, 120, 124, 125, 117, 123, 124, 114, 108, 112, 107, + 101, 104, 89, 97, 103, 104, 110, 120, 124, 120, 122, 119, 115, 112, 108, 104, + 98, 93, 102, 110, 121, 127, 124, 115, 104, 96, 97, 107, 113, 116, 123, 135, + 144, 148, 154, 161, 168, 173, 175, 175, 175, 175, 181, 179, 179, 179, 179, 180, + 180, 181, 177, 179, 180, 180, 180, 180, 179, 179, 183, 175, 179, 184, 179, 182, + 184, 176, 190, 185, 175, 167, 166, 172, 174, 171, 153, 150, 122, 97, 129, 141, + 119, 136, 140, 142, 144, 146, 145, 141, 137, 134, 126, 148, 163, 171, 183, 188, + 185, 189, 191, 191, 195, 200, 204, 202, 196, 190, 189, 193, 197, 198, 194, 191, + 191, 192, 191, 193, 195, 196, 196, 194, 192, 190, 187, 193, 200, 203, 200, 197, + 196, 197, 208, 207, 204, 200, 197, 196, 198, 200, 194, 189, 184, 181, 180, 180, + 177, 174, 167, 169, 162, 98, 138, 149, 142, 130, 128, 131, 135, 138, 139, 139, + 139, 139, 127, 124, 124, 132, 137, 136, 136, 137, 133, 135, 139, 142, 140, 137, + 133, 131, 139, 133, 129, 130, 131, 127, 119, 113, 111, 124, 123, 116, 118, 119, + 120, 122, 123, 125, 126, 129, 119, 121, 125, 121, 123, 122, 115, 103, 113, 113, + 112, 119, 118, 116, 123, 133, 120, 106, 98, 89, 83, 85, 93, 107, 111, 120, + 133, 140, 131, 110, 90, 121, 116, 110, 107, 108, 113, 118, 122, 118, 137, 137, + 118, 113, 131, 141, 137, 149, 155, 159, 164, 166, 169, 170, 172, 176, 177, 176, + 178, 178, 177, 178, 178, 180, 179, 177, 175, 174, 173, 172, 173, 172, 169, 176, + 178, 170, 172, 177, 174, 175, 185, 190, 186, 180, 175, 169, 164, 149, 134, 129, + 118, 126, 141, 134, 136, 136, 136, 137, 135, 135, 133, 132, 131, 129, 148, 160, + 170, 185, 189, 188, 194, 193, 193, 195, 199, 201, 199, 192, 187, 196, 198, 198, + 195, 191, 190, 192, 196, 195, 195, 195, 195, 195, 194, 194, 194, 199, 197, 193, + 188, 184, 188, 197, 205, 209, 204, 200, 199, 201, 200, 194, 188, 188, 189, 188, + 184, 179, 176, 178, 181, 166, 173, 161, 95, 144, 145, 147, 139, 155, 150, 141, + 132, 125, 120, 119, 117, 129, 127, 126, 126, 125, 122, 124, 130, 138, 136, 132, + 132, 134, 133, 127, 123, 127, 129, 130, 131, 131, 129, 125, 121, 114, 109, 103, + 114, 115, 117, 119, 120, 123, 123, 124, 125, 116, 119, 125, 122, 122, 125, 122, + 102, 109, 104, 100, 104, 103, 103, 112, 111, 104, 107, 119, 119, 110, 109, 118, + 109, 102, 96, 102, 113, 121, 119, 113, 90, 95, 103, 116, 128, 136, 140, 140, + 134, 149, 143, 113, 105, 124, 138, 134, 147, 150, 155, 159, 162, 167, 171, 174, + 173, 174, 174, 175, 175, 175, 175, 174, 173, 174, 173, 174, 174, 175, 175, 174, + 167, 164, 171, 172, 164, 167, 175, 175, 166, 180, 189, 184, 167, 151, 135, 126, + 133, 123, 148, 148, 129, 139, 144, 143, 138, 137, 134, 132, 131, 130, 130, 130, + 131, 148, 161, 173, 187, 191, 190, 199, 196, 196, 196, 197, 198, 196, 192, 189, + 203, 201, 197, 193, 190, 191, 194, 197, 199, 196, 191, 188, 188, 192, 198, 202, + 197, 196, 194, 193, 193, 197, 202, 207, 215, 208, 203, 204, 208, 205, 194, 183, + 178, 183, 186, 184, 177, 175, 179, 186, 160, 160, 140, 86, 134, 137, 154, 152, + 148, 149, 149, 150, 150, 149, 145, 143, 134, 134, 135, 134, 132, 129, 135, 145, + 127, 117, 106, 103, 106, 112, 113, 112, 115, 127, 136, 142, 142, 142, 135, 129, + 131, 129, 112, 119, 120, 120, 121, 122, 122, 123, 124, 125, 117, 122, 128, 122, + 121, 128, 128, 133, 133, 120, 111, 114, 109, 103, 107, 116, 122, 131, 140, 137, + 126, 114, 108, 121, 118, 111, 106, 102, 97, 89, 82, 88, 91, 98, 108, 117, + 122, 122, 120, 121, 122, 117, 106, 105, 116, 124, 123, 136, 141, 146, 152, 156, + 162, 167, 170, 167, 167, 168, 169, 169, 168, 167, 168, 162, 163, 165, 167, 166, + 164, 160, 158, 158, 152, 155, 158, 153, 159, 168, 167, 168, 165, 150, 133, 123, + 127, 135, 140, 136, 129, 151, 149, 136, 142, 140, 145, 142, 141, 139, 137, 135, + 133, 132, 132, 129, 149, 163, 175, 186, 188, 188, 199, 197, 198, 198, 196, 195, + 195, 196, 198, 204, 200, 194, 191, 191, 193, 195, 196, 196, 195, 193, 193, 194, + 196, 200, 202, 192, 195, 201, 207, 210, 210, 206, 203, 209, 206, 203, 205, 207, + 204, 196, 189, 178, 181, 184, 183, 179, 179, 181, 185, 178, 166, 136, 95, 126, + 122, 134, 126, 123, 126, 133, 140, 143, 140, 132, 126, 135, 133, 137, 141, 144, + 143, 149, 156, 156, 151, 142, 139, 140, 145, 148, 150, 157, 164, 167, 163, 157, + 152, 139, 128, 148, 156, 142, 126, 127, 126, 126, 125, 126, 125, 125, 129, 121, + 126, 131, 121, 120, 127, 131, 131, 130, 122, 121, 131, 128, 117, 115, 121, 128, + 126, 118, 117, 125, 126, 119, 125, 124, 122, 117, 110, 107, 106, 108, 106, 104, + 106, 111, 119, 126, 129, 129, 134, 124, 123, 134, 140, 135, 129, 131, 121, 126, + 134, 141, 145, 150, 155, 158, 160, 159, 162, 163, 163, 162, 160, 161, 157, 158, + 158, 155, 148, 137, 125, 118, 118, 107, 107, 110, 112, 120, 127, 123, 113, 121, + 130, 137, 145, 152, 153, 150, 154, 142, 138, 131, 140, 147, 132, 138, 141, 141, + 140, 138, 136, 134, 132, 130, 128, 146, 162, 174, 184, 182, 184, 196, 198, 200, + 199, 197, 194, 196, 201, 206, 201, 197, 191, 190, 192, 195, 195, 195, 188, 193, + 200, 206, 207, 205, 200, 197, 201, 199, 197, 199, 203, 207, 208, 207, 193, 193, + 194, 196, 197, 196, 194, 192, 186, 186, 184, 184, 184, 183, 182, 181, 173, 159, + 132, 112, 139, 135, 141, 128, 135, 131, 128, 129, 132, 135, 138, 137, 139, 134, + 134, 140, 145, 145, 142, 143, 150, 153, 153, 152, 149, 148, 148, 148, 152, 154, + 152, 148, 149, 151, 145, 136, 130, 137, 135, 128, 124, 120, 124, 127, 125, 124, + 123, 127, 124, 123, 126, 126, 124, 124, 129, 131, 131, 129, 125, 122, 121, 123, + 124, 127, 126, 123, 121, 120, 123, 125, 128, 125, 128, 130, 132, 130, 126, 120, + 116, 109, 117, 113, 109, 115, 118, 124, 139, 129, 130, 132, 134, 135, 136, 136, + 135, 141, 136, 129, 124, 126, 134, 143, 150, 152, 151, 149, 145, 141, 143, 151, + 160, 149, 142, 127, 111, 108, 115, 124, 127, 138, 141, 144, 144, 141, 140, 141, + 144, 149, 149, 149, 150, 150, 150, 151, 152, 148, 149, 149, 149, 147, 146, 146, + 144, 146, 141, 139, 140, 140, 137, 139, 142, 137, 148, 160, 168, 179, 192, 196, + 194, 195, 192, 195, 201, 203, 199, 200, 205, 206, 196, 187, 185, 190, 193, 191, + 189, 192, 198, 199, 195, 196, 199, 197, 191, 190, 199, 206, 205, 199, 197, 203, + 210, 204, 197, 191, 194, 201, 203, 197, 190, 183, 183, 185, 187, 188, 187, 182, + 178, 165, 170, 99, 144, 131, 131, 139, 141, 139, 137, 136, 136, 135, 134, 133, + 132, 137, 135, 133, 134, 136, 141, 147, 152, 148, 148, 149, 149, 149, 148, 146, + 144, 146, 146, 154, 158, 154, 152, 142, 120, 117, 125, 148, 127, 126, 128, 132, + 130, 126, 125, 126, 127, 124, 123, 125, 125, 122, 122, 126, 125, 127, 129, 129, + 127, 126, 125, 127, 129, 128, 126, 126, 126, 128, 130, 132, 129, 129, 130, 131, + 130, 129, 127, 126, 117, 128, 128, 126, 129, 125, 123, 131, 133, 133, 133, 134, + 135, 137, 139, 140, 138, 138, 138, 138, 138, 138, 138, 138, 126, 128, 129, 125, + 121, 122, 127, 131, 120, 130, 139, 144, 150, 154, 153, 148, 145, 146, 147, 147, + 147, 147, 149, 150, 151, 151, 150, 149, 149, 148, 147, 148, 148, 147, 146, 145, + 143, 142, 141, 141, 148, 145, 145, 148, 148, 144, 144, 145, 142, 142, 154, 173, + 186, 191, 195, 201, 195, 192, 194, 198, 200, 198, 198, 202, 197, 193, 187, 184, + 186, 190, 194, 196, 196, 200, 200, 197, 199, 202, 201, 196, 194, 198, 201, 202, + 201, 201, 204, 208, 206, 200, 194, 193, 195, 194, 188, 182, 182, 182, 183, 184, + 184, 183, 179, 174, 173, 160, 110, 143, 136, 137, 140, 135, 137, 137, 137, 138, + 140, 141, 143, 143, 140, 138, 136, 133, 133, 135, 139, 141, 145, 146, 145, 145, + 143, 144, 146, 148, 160, 152, 145, 139, 133, 143, 149, 142, 101, 132, 154, 116, + 120, 126, 130, 125, 118, 119, 123, 124, 121, 121, 125, 126, 123, 124, 128, 124, + 128, 133, 134, 132, 130, 127, 127, 128, 128, 129, 130, 132, 132, 133, 134, 127, + 126, 125, 125, 126, 129, 131, 133, 124, 135, 134, 133, 135, 129, 124, 130, 135, + 134, 133, 132, 134, 136, 139, 141, 141, 143, 146, 149, 149, 146, 143, 141, 149, + 152, 155, 154, 151, 149, 150, 151, 150, 156, 158, 156, 155, 154, 151, 145, 154, + 153, 152, 152, 154, 156, 156, 156, 159, 158, 157, 155, 153, 152, 151, 151, 157, + 155, 152, 150, 148, 147, 146, 146, 150, 148, 149, 153, 154, 149, 147, 147, 147, + 139, 149, 175, 189, 186, 189, 202, 195, 193, 193, 196, 196, 194, 195, 198, 192, + 191, 188, 184, 183, 186, 193, 199, 196, 199, 200, 197, 198, 202, 202, 201, 202, + 201, 200, 200, 201, 202, 203, 202, 208, 205, 200, 197, 195, 191, 187, 184, 182, + 182, 183, 184, 184, 183, 179, 176, 169, 134, 121, 138, 140, 145, 146, 134, 140, + 140, 140, 140, 142, 144, 148, 149, 148, 146, 145, 142, 141, 141, 142, 143, 150, + 150, 149, 147, 143, 144, 149, 153, 143, 144, 151, 154, 144, 143, 139, 126, 138, + 102, 133, 111, 112, 116, 120, 120, 116, 117, 123, 121, 119, 121, 127, 128, 126, + 127, 132, 128, 131, 135, 135, 131, 127, 126, 125, 125, 127, 128, 130, 131, 132, + 132, 132, 129, 128, 126, 126, 128, 131, 134, 136, 130, 138, 134, 131, 136, 135, + 133, 142, 138, 138, 139, 139, 140, 142, 144, 145, 151, 150, 149, 149, 151, 153, + 155, 157, 146, 149, 151, 151, 149, 147, 146, 146, 157, 158, 155, 149, 150, 156, + 160, 161, 164, 159, 154, 154, 156, 159, 158, 157, 161, 161, 159, 158, 156, 155, + 154, 154, 161, 160, 156, 154, 152, 153, 154, 155, 150, 148, 148, 152, 153, 149, + 147, 148, 150, 142, 145, 164, 177, 179, 184, 193, 195, 193, 193, 192, 192, 192, + 193, 193, 192, 192, 189, 186, 185, 186, 190, 193, 194, 194, 194, 193, 194, 197, + 200, 200, 206, 204, 202, 200, 199, 199, 198, 198, 202, 202, 200, 198, 194, 191, + 190, 190, 180, 179, 179, 181, 181, 181, 177, 176, 161, 115, 138, 135, 138, 143, + 143, 132, 144, 143, 142, 140, 139, 140, 143, 145, 149, 149, 150, 150, 150, 150, + 151, 151, 150, 152, 152, 148, 143, 142, 145, 150, 151, 147, 149, 146, 135, 134, + 137, 133, 135, 129, 120, 118, 113, 112, 118, 123, 124, 126, 129, 123, 122, 123, + 129, 130, 127, 126, 129, 129, 130, 130, 130, 126, 125, 125, 126, 124, 126, 128, + 130, 133, 133, 132, 130, 136, 135, 135, 136, 136, 137, 138, 139, 135, 142, 139, + 138, 144, 143, 141, 148, 142, 144, 147, 150, 151, 151, 150, 149, 155, 153, 150, + 149, 150, 153, 157, 160, 158, 159, 159, 158, 157, 156, 157, 158, 146, 152, 158, + 160, 163, 166, 164, 159, 166, 161, 156, 154, 155, 157, 155, 154, 155, 155, 154, + 155, 154, 154, 153, 153, 155, 153, 152, 150, 150, 151, 154, 156, 153, 149, 148, + 150, 151, 149, 150, 154, 150, 148, 146, 151, 161, 175, 184, 186, 190, 192, 192, + 190, 189, 191, 190, 190, 188, 187, 187, 188, 190, 191, 190, 189, 193, 191, 191, + 191, 191, 193, 197, 200, 199, 202, 203, 201, 197, 195, 198, 201, 192, 194, 194, + 192, 189, 187, 187, 189, 180, 178, 176, 175, 173, 170, 167, 163, 159, 117, 155, + 139, 137, 135, 136, 128, 145, 146, 146, 143, 140, 139, 141, 143, 143, 144, 146, + 147, 148, 149, 150, 150, 143, 145, 146, 146, 143, 141, 143, 144, 149, 143, 146, + 146, 137, 136, 140, 139, 143, 138, 167, 123, 115, 111, 117, 123, 126, 128, 130, + 129, 126, 128, 130, 128, 123, 120, 123, 125, 125, 124, 123, 122, 124, 127, 131, + 127, 129, 130, 132, 133, 133, 132, 133, 136, 136, 137, 138, 138, 138, 137, 137, + 131, 140, 141, 143, 148, 143, 135, 138, 139, 142, 146, 150, 151, 150, 147, 145, + 152, 152, 152, 152, 151, 150, 149, 148, 150, 149, 147, 146, 146, 148, 150, 151, + 155, 159, 161, 160, 158, 157, 154, 148, 164, 161, 157, 155, 155, 155, 154, 153, + 154, 155, 155, 155, 156, 156, 157, 157, 152, 152, 151, 151, 151, 153, 154, 156, + 157, 152, 150, 153, 154, 152, 155, 158, 149, 152, 150, 146, 152, 170, 182, 184, + 185, 189, 189, 188, 187, 188, 187, 184, 181, 180, 182, 186, 191, 194, 193, 191, + 196, 192, 191, 193, 193, 192, 196, 200, 190, 195, 200, 200, 197, 197, 200, 203, + 193, 193, 193, 191, 188, 185, 185, 184, 186, 182, 177, 173, 168, 162, 155, 152, + 146, 121, 155, 141, 141, 139, 143, 143, 142, 145, 149, 148, 144, 143, 145, 148, + 145, 145, 146, 146, 146, 147, 148, 147, 141, 142, 144, 147, 148, 148, 146, 146, + 139, 134, 142, 150, 145, 141, 141, 136, 140, 137, 147, 118, 115, 113, 117, 119, + 118, 120, 124, 126, 124, 125, 128, 128, 122, 119, 120, 123, 123, 122, 122, 120, + 123, 126, 130, 129, 130, 132, 133, 133, 133, 133, 133, 134, 134, 134, 135, 134, + 135, 135, 135, 132, 139, 138, 139, 146, 142, 133, 136, 137, 139, 142, 144, 146, + 145, 144, 143, 150, 151, 152, 152, 151, 149, 147, 146, 151, 150, 149, 150, 152, + 154, 154, 154, 151, 152, 150, 146, 150, 158, 163, 164, 159, 159, 160, 159, 157, + 156, 156, 157, 158, 158, 158, 159, 159, 160, 160, 160, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 152, 153, 157, 157, 156, 157, 159, 154, 154, 152, 151, 152, + 156, 166, 176, 177, 183, 185, 184, 182, 185, 183, 178, 177, 179, 180, 181, 183, + 186, 191, 195, 197, 192, 191, 194, 196, 193, 194, 199, 189, 191, 195, 197, 198, + 198, 196, 195, 193, 192, 190, 189, 188, 186, 184, 183, 181, 177, 171, 166, 160, + 153, 147, 142, 137, 130, 144, 139, 145, 143, 146, 151, 140, 145, 150, 151, 147, + 145, 147, 149, 149, 148, 149, 148, 148, 149, 150, 151, 148, 145, 141, 142, 146, + 147, 145, 141, 152, 134, 127, 127, 124, 129, 139, 141, 146, 72, 101, 117, 117, + 120, 123, 118, 113, 115, 121, 119, 118, 121, 127, 127, 123, 121, 123, 125, 126, + 125, 124, 121, 121, 123, 125, 129, 129, 131, 131, 131, 131, 130, 131, 136, 136, + 135, 135, 135, 137, 139, 141, 140, 143, 136, 134, 143, 144, 142, 148, 143, 143, + 145, 146, 147, 148, 149, 149, 153, 152, 150, 149, 149, 152, 154, 156, 148, 147, + 148, 150, 154, 154, 153, 152, 155, 158, 158, 155, 155, 159, 159, 156, 156, 159, + 162, 162, 159, 158, 160, 162, 157, 158, 157, 157, 157, 158, 158, 158, 159, 158, + 158, 157, 157, 156, 155, 154, 152, 150, 153, 158, 159, 156, 155, 156, 162, 152, + 153, 158, 151, 140, 146, 164, 172, 179, 182, 181, 180, 184, 179, 173, 177, 181, + 181, 178, 174, 176, 187, 196, 196, 192, 191, 195, 194, 191, 190, 195, 196, 193, + 193, 196, 200, 198, 191, 184, 187, 185, 183, 183, 184, 184, 182, 180, 164, 160, + 156, 151, 146, 143, 137, 133, 145, 146, 139, 137, 143, 139, 135, 138, 140, 144, + 151, 151, 147, 143, 144, 146, 147, 146, 147, 147, 148, 150, 152, 154, 151, 144, + 135, 133, 135, 136, 132, 127, 132, 121, 127, 138, 133, 125, 117, 108, 129, 101, + 124, 117, 119, 121, 121, 122, 120, 114, 109, 112, 114, 118, 123, 125, 126, 125, + 123, 123, 123, 122, 123, 124, 124, 125, 125, 122, 127, 131, 132, 130, 130, 133, + 137, 134, 134, 135, 136, 136, 137, 137, 137, 137, 135, 133, 132, 134, 137, 140, + 143, 137, 141, 145, 147, 146, 145, 145, 146, 145, 146, 146, 147, 149, 150, 151, + 151, 149, 150, 151, 151, 151, 153, 158, 161, 161, 157, 153, 154, 158, 160, 158, + 155, 161, 152, 156, 160, 152, 150, 157, 160, 163, 162, 158, 156, 155, 156, 158, + 159, 154, 154, 155, 156, 155, 153, 152, 150, 151, 149, 153, 158, 160, 157, 159, + 161, 156, 154, 153, 155, 157, 156, 151, 147, 166, 162, 160, 164, 170, 175, 174, + 172, 173, 174, 173, 164, 161, 178, 184, 168, 181, 190, 188, 185, 188, 187, 185, + 194, 193, 192, 190, 188, 186, 185, 185, 185, 185, 183, 181, 179, 177, 175, 173, + 171, 165, 157, 147, 139, 135, 139, 146, 152, 148, 149, 148, 144, 141, 141, 146, + 150, 146, 144, 143, 147, 151, 151, 145, 139, 143, 144, 148, 151, 151, 144, 132, + 124, 118, 123, 123, 124, 128, 133, 130, 124, 128, 126, 128, 134, 142, 142, 135, + 128, 122, 110, 105, 125, 123, 121, 120, 121, 122, 120, 117, 127, 126, 123, 122, + 121, 123, 125, 126, 124, 124, 125, 126, 126, 127, 127, 127, 126, 126, 127, 129, + 131, 132, 131, 130, 134, 134, 135, 136, 137, 137, 137, 137, 135, 135, 135, 136, + 137, 139, 140, 141, 137, 140, 144, 145, 146, 146, 147, 148, 149, 149, 149, 149, + 149, 150, 150, 150, 151, 152, 153, 153, 152, 153, 156, 158, 159, 156, 152, 154, + 157, 159, 157, 154, 162, 151, 154, 161, 157, 157, 158, 154, 158, 157, 154, 154, + 153, 155, 157, 159, 158, 157, 156, 155, 155, 154, 155, 155, 155, 154, 156, 160, + 160, 157, 157, 158, 158, 158, 159, 162, 163, 163, 161, 158, 159, 149, 141, 139, + 144, 154, 160, 163, 172, 165, 161, 155, 153, 169, 180, 172, 180, 188, 188, 188, + 191, 188, 182, 187, 183, 183, 182, 184, 183, 185, 184, 185, 179, 176, 172, 175, + 180, 183, 179, 176, 154, 150, 146, 140, 140, 141, 145, 148, 149, 150, 150, 147, + 143, 140, 141, 143, 147, 145, 145, 149, 154, 155, 152, 147, 151, 149, 148, 147, + 148, 149, 149, 150, 137, 136, 129, 124, 126, 133, 136, 134, 146, 146, 147, 151, + 152, 143, 127, 114, 131, 133, 131, 125, 124, 123, 124, 124, 124, 124, 123, 130, + 127, 124, 121, 120, 121, 122, 124, 124, 123, 124, 125, 126, 127, 128, 128, 129, + 126, 124, 127, 131, 133, 129, 126, 134, 136, 136, 137, 137, 138, 138, 138, 134, + 136, 138, 140, 141, 141, 141, 140, 138, 140, 143, 144, 144, 145, 148, 150, 150, + 150, 149, 148, 147, 147, 148, 148, 153, 155, 157, 156, 155, 153, 154, 155, 158, + 155, 153, 154, 157, 158, 156, 153, 163, 151, 154, 162, 161, 161, 158, 148, 153, + 153, 150, 150, 151, 154, 157, 158, 160, 159, 157, 155, 154, 155, 157, 157, 160, + 158, 159, 163, 162, 158, 157, 158, 155, 157, 161, 162, 162, 163, 162, 163, 166, + 162, 159, 160, 162, 161, 158, 154, 162, 152, 150, 150, 147, 154, 163, 161, 160, + 169, 171, 177, 188, 187, 180, 182, 177, 178, 180, 181, 182, 182, 181, 180, 178, + 170, 164, 165, 170, 171, 164, 155, 146, 146, 147, 148, 148, 148, 148, 148, 149, + 151, 152, 150, 147, 144, 143, 143, 143, 142, 141, 145, 150, 153, 152, 150, 153, + 152, 151, 149, 148, 151, 158, 163, 168, 167, 159, 152, 152, 157, 160, 159, 156, + 148, 139, 134, 133, 131, 126, 121, 132, 141, 137, 116, 116, 118, 123, 124, 121, + 116, 115, 114, 117, 119, 123, 124, 123, 121, 119, 121, 122, 122, 123, 124, 125, + 126, 126, 130, 129, 128, 128, 130, 130, 128, 126, 135, 136, 137, 137, 137, 138, + 139, 139, 136, 137, 139, 141, 142, 142, 142, 141, 141, 142, 143, 143, 143, 144, + 146, 149, 146, 146, 144, 144, 144, 144, 145, 146, 152, 154, 157, 157, 156, 154, + 154, 154, 157, 155, 154, 155, 157, 158, 156, 154, 161, 153, 156, 161, 159, 159, + 158, 149, 152, 151, 149, 150, 150, 152, 155, 156, 158, 157, 156, 156, 155, 155, + 156, 155, 161, 158, 159, 163, 162, 158, 158, 161, 154, 157, 162, 163, 161, 160, + 162, 164, 162, 163, 166, 169, 169, 166, 158, 152, 159, 148, 152, 161, 153, 148, + 149, 148, 151, 159, 160, 165, 178, 177, 170, 171, 173, 174, 174, 174, 172, 170, + 165, 164, 169, 164, 157, 156, 155, 154, 147, 143, 148, 150, 153, 155, 156, 154, + 153, 152, 148, 149, 150, 151, 150, 149, 149, 150, 144, 142, 141, 143, 147, 150, + 151, 151, 152, 156, 161, 161, 157, 155, 157, 159, 161, 166, 166, 164, 161, 161, + 156, 151, 150, 140, 128, 121, 119, 123, 123, 123, 117, 125, 127, 116, 111, 109, + 114, 115, 113, 112, 115, 112, 114, 119, 123, 126, 126, 126, 125, 123, 123, 123, + 124, 126, 126, 126, 126, 128, 131, 133, 132, 129, 128, 128, 130, 135, 136, 137, + 138, 139, 139, 139, 139, 141, 140, 139, 139, 140, 141, 142, 143, 143, 144, 145, + 144, 142, 142, 144, 146, 144, 143, 142, 142, 143, 145, 147, 149, 149, 153, 155, + 156, 155, 154, 154, 155, 156, 156, 156, 157, 158, 158, 156, 154, 158, 154, 159, + 159, 152, 153, 158, 152, 152, 152, 151, 150, 150, 152, 153, 153, 155, 157, 159, + 161, 161, 159, 156, 154, 159, 156, 158, 161, 162, 160, 162, 164, 162, 166, 168, + 169, 165, 164, 166, 168, 162, 160, 159, 159, 162, 167, 170, 172, 182, 171, 177, + 186, 178, 171, 172, 172, 163, 167, 162, 161, 169, 166, 157, 159, 164, 165, 164, + 164, 160, 157, 152, 151, 153, 155, 155, 156, 155, 155, 156, 157, 156, 155, 156, + 157, 156, 155, 154, 154, 149, 148, 147, 146, 148, 149, 149, 150, 151, 149, 148, + 148, 149, 151, 153, 153, 153, 158, 165, 165, 162, 157, 157, 157, 148, 157, 161, + 162, 159, 158, 151, 145, 148, 147, 144, 142, 137, 129, 118, 110, 110, 111, 119, + 128, 118, 110, 113, 114, 113, 117, 125, 124, 123, 121, 122, 124, 128, 131, 134, + 128, 128, 128, 129, 129, 129, 129, 129, 127, 132, 135, 133, 129, 126, 127, 133, + 136, 137, 137, 138, 139, 140, 139, 140, 141, 141, 139, 138, 139, 140, 142, 143, + 142, 144, 145, 145, 143, 143, 144, 145, 146, 145, 144, 144, 145, 148, 151, 154, + 148, 151, 153, 153, 153, 153, 154, 155, 154, 155, 156, 157, 157, 156, 155, 154, + 155, 154, 160, 157, 148, 150, 157, 150, 152, 152, 151, 151, 152, 152, 152, 152, + 155, 157, 161, 164, 164, 161, 156, 153, 156, 153, 155, 159, 160, 159, 162, 166, + 167, 168, 169, 168, 165, 164, 164, 165, 167, 167, 169, 169, 169, 169, 167, 166, + 158, 146, 149, 154, 147, 147, 154, 158, 163, 166, 159, 156, 161, 159, 153, 157, + 161, 160, 161, 160, 159, 157, 155, 154, 148, 152, 157, 157, 155, 156, 161, 165, + 159, 157, 156, 154, 151, 151, 151, 151, 151, 148, 144, 142, 143, 144, 144, 143, + 151, 150, 149, 148, 147, 148, 149, 150, 150, 151, 153, 154, 153, 153, 155, 157, + 155, 161, 162, 160, 158, 160, 160, 158, 158, 157, 153, 150, 144, 138, 129, 124, + 125, 114, 111, 124, 114, 108, 113, 114, 109, 111, 119, 122, 121, 119, 120, 123, + 127, 132, 135, 132, 131, 132, 132, 130, 129, 129, 129, 129, 130, 130, 130, 130, + 129, 128, 129, 136, 138, 139, 139, 139, 140, 140, 140, 139, 139, 139, 140, 140, + 140, 140, 139, 138, 141, 144, 146, 145, 145, 146, 147, 149, 148, 146, 144, 145, + 147, 150, 153, 150, 152, 153, 152, 149, 149, 151, 153, 150, 152, 155, 156, 155, + 153, 152, 151, 153, 152, 157, 156, 150, 154, 155, 143, 149, 149, 150, 151, 151, + 152, 153, 152, 153, 154, 157, 159, 159, 157, 154, 152, 156, 152, 152, 155, 158, + 157, 160, 163, 163, 162, 160, 161, 161, 161, 160, 159, 157, 161, 167, 169, 166, + 158, 149, 143, 164, 157, 160, 161, 154, 157, 166, 167, 153, 161, 157, 156, 160, + 159, 157, 165, 160, 160, 160, 160, 160, 160, 160, 160, 154, 156, 158, 157, 156, + 156, 158, 159, 156, 156, 155, 152, 150, 149, 148, 147, 148, 147, 144, 144, 146, + 146, 143, 141, 147, 147, 148, 148, 146, 146, 147, 148, 148, 147, 147, 148, 151, + 153, 153, 153, 148, 153, 153, 149, 146, 150, 153, 155, 160, 156, 148, 143, 139, + 139, 138, 140, 132, 126, 118, 102, 95, 99, 109, 109, 99, 93, 95, 108, 112, + 117, 122, 126, 127, 127, 127, 133, 133, 132, 131, 131, 129, 127, 126, 131, 127, + 126, 128, 131, 132, 129, 127, 136, 137, 137, 138, 138, 138, 139, 139, 134, 137, + 139, 142, 143, 141, 138, 136, 135, 139, 144, 147, 148, 147, 148, 149, 150, 148, + 145, 143, 143, 144, 147, 148, 153, 154, 153, 150, 147, 146, 148, 150, 147, 150, + 153, 154, 153, 151, 150, 149, 151, 149, 152, 154, 152, 157, 152, 134, 144, 145, + 146, 149, 151, 152, 154, 153, 149, 150, 151, 152, 151, 151, 150, 150, 155, 152, + 151, 154, 155, 155, 158, 161, 161, 159, 157, 156, 159, 161, 159, 157, 161, 161, + 160, 160, 159, 160, 163, 165, 157, 156, 164, 165, 155, 157, 160, 154, 160, 168, + 167, 164, 165, 161, 158, 166, 156, 155, 155, 154, 154, 154, 154, 155, 158, 157, + 155, 159, 162, 165, 164, 162, 155, 155, 154, 153, 151, 149, 148, 147, 144, 144, + 146, 149, 153, 153, 148, 145, 147, 150, 151, 152, 150, 150, 151, 152, 153, 153, + 154, 158, 161, 160, 156, 150, 147, 153, 155, 152, 149, 151, 153, 152, 151, 153, + 152, 151, 145, 139, 129, 125, 121, 135, 139, 109, 106, 109, 110, 109, 111, 96, + 69, 113, 120, 124, 121, 120, 122, 123, 121, 119, 128, 128, 126, 131, 128, 126, + 134, 126, 132, 139, 138, 134, 129, 129, 132, 138, 134, 133, 137, 137, 132, 133, + 137, 136, 140, 143, 145, 144, 144, 143, 144, 145, 144, 141, 142, 143, 143, 141, + 140, 144, 145, 146, 148, 149, 151, 152, 152, 149, 148, 146, 145, 145, 146, 147, + 148, 148, 150, 149, 145, 145, 150, 152, 150, 148, 152, 156, 154, 148, 147, 152, + 158, 151, 153, 152, 151, 151, 151, 154, 154, 149, 153, 154, 153, 152, 153, 149, + 145, 148, 152, 155, 155, 153, 154, 158, 163, 163, 161, 160, 162, 164, 163, 159, + 156, 152, 155, 159, 162, 164, 164, 162, 161, 156, 156, 156, 156, 157, 158, 160, + 162, 162, 162, 162, 161, 159, 158, 158, 157, 160, 160, 160, 159, 157, 155, 153, + 152, 154, 152, 151, 153, 156, 159, 160, 160, 156, 154, 152, 148, 147, 147, 148, + 149, 149, 148, 146, 144, 143, 144, 144, 144, 152, 155, 151, 145, 143, 150, 152, + 149, 154, 151, 148, 150, 154, 156, 153, 151, 152, 153, 153, 150, 147, 147, 149, + 153, 144, 146, 146, 146, 141, 135, 126, 121, 123, 126, 132, 102, 99, 105, 109, + 103, 100, 88, 68, 114, 122, 128, 124, 118, 119, 121, 121, 127, 132, 129, 129, + 137, 135, 130, 134, 139, 138, 137, 135, 132, 130, 129, 129, 138, 135, 135, 138, + 137, 132, 131, 135, 131, 135, 139, 139, 139, 139, 140, 141, 141, 140, 139, 141, + 142, 143, 141, 140, 140, 141, 142, 143, 144, 145, 146, 146, 152, 151, 149, 148, + 147, 148, 148, 149, 146, 149, 150, 147, 148, 151, 151, 147, 147, 150, 151, 150, + 146, 147, 150, 154, 149, 151, 151, 149, 149, 150, 153, 155, 148, 154, 157, 153, + 150, 152, 154, 154, 156, 155, 155, 155, 156, 158, 158, 158, 158, 157, 157, 158, + 161, 161, 159, 156, 156, 157, 160, 161, 162, 162, 161, 159, 158, 158, 159, 160, + 159, 157, 156, 156, 158, 158, 160, 160, 160, 159, 158, 158, 157, 157, 157, 156, + 156, 156, 156, 156, 165, 162, 159, 159, 160, 160, 159, 158, 157, 157, 157, 156, + 154, 152, 149, 148, 148, 147, 146, 145, 144, 145, 146, 147, 146, 151, 150, 148, + 148, 152, 153, 149, 150, 148, 147, 148, 150, 151, 151, 151, 155, 157, 158, 156, + 153, 151, 153, 155, 159, 154, 151, 151, 152, 149, 141, 133, 132, 130, 128, 102, + 101, 112, 122, 112, 106, 100, 93, 108, 119, 128, 127, 124, 128, 134, 136, 132, + 135, 131, 133, 145, 146, 140, 142, 136, 133, 129, 131, 136, 142, 145, 145, 143, + 141, 141, 142, 142, 138, 137, 139, 132, 135, 136, 136, 136, 137, 139, 141, 139, + 138, 138, 139, 141, 143, 143, 142, 143, 143, 143, 144, 144, 145, 145, 145, 148, + 147, 146, 145, 145, 145, 145, 145, 144, 149, 151, 150, 150, 152, 150, 146, 151, + 151, 149, 150, 149, 150, 150, 151, 149, 151, 151, 150, 150, 152, 155, 158, 149, + 155, 160, 154, 150, 152, 158, 162, 163, 158, 155, 156, 159, 160, 158, 154, 160, + 159, 159, 161, 164, 164, 163, 162, 161, 161, 161, 161, 161, 161, 160, 160, 159, + 161, 162, 163, 162, 160, 156, 155, 157, 158, 160, 161, 163, 162, 161, 159, 157, + 156, 156, 156, 157, 159, 161, 163, 169, 167, 164, 162, 161, 160, 158, 156, 156, + 158, 160, 161, 159, 155, 150, 147, 147, 146, 146, 146, 146, 147, 148, 149, 141, + 146, 150, 151, 152, 153, 151, 147, 149, 150, 151, 150, 150, 150, 152, 155, 149, + 150, 151, 150, 148, 146, 146, 146, 156, 148, 141, 141, 146, 146, 139, 131, 132, + 126, 123, 115, 112, 122, 131, 117, 107, 109, 112, 121, 125, 124, 116, 109, 104, + 101, 97, 95, 99, 97, 101, 112, 113, 109, 113, 108, 107, 108, 113, 119, 127, + 134, 139, 144, 143, 141, 142, 141, 139, 138, 139, 137, 138, 139, 139, 139, 140, + 142, 144, 141, 140, 138, 140, 142, 144, 143, 142, 146, 146, 145, 146, 146, 146, + 145, 145, 144, 145, 144, 145, 144, 146, 145, 147, 146, 151, 152, 151, 150, 154, + 152, 148, 156, 153, 151, 151, 153, 155, 153, 152, 150, 152, 152, 151, 151, 153, + 156, 158, 151, 155, 158, 155, 152, 155, 159, 159, 162, 159, 157, 157, 158, 159, + 158, 156, 162, 162, 162, 163, 164, 164, 164, 164, 164, 163, 162, 161, 161, 162, + 163, 164, 159, 160, 161, 163, 165, 164, 162, 160, 161, 162, 164, 164, 164, 163, + 161, 160, 159, 158, 157, 157, 158, 161, 164, 167, 163, 161, 159, 159, 160, 160, + 159, 158, 154, 155, 158, 159, 158, 155, 152, 150, 149, 149, 148, 148, 148, 148, + 148, 148, 142, 143, 146, 149, 149, 150, 149, 147, 147, 151, 152, 151, 149, 150, + 152, 157, 157, 158, 159, 159, 157, 155, 153, 152, 157, 152, 147, 147, 148, 147, + 142, 136, 133, 132, 131, 124, 116, 121, 124, 107, 96, 102, 108, 98, 103, 108, + 113, 122, 131, 134, 129, 115, 123, 124, 125, 130, 129, 128, 136, 130, 133, 137, + 138, 135, 137, 142, 147, 139, 139, 139, 137, 137, 137, 136, 135, 140, 142, 142, + 142, 141, 142, 144, 146, 144, 144, 143, 144, 145, 145, 144, 143, 145, 146, 144, + 144, 145, 145, 144, 144, 146, 147, 148, 150, 152, 153, 154, 154, 152, 154, 154, + 150, 151, 155, 156, 154, 159, 155, 152, 152, 155, 156, 154, 151, 148, 150, 151, + 150, 150, 151, 154, 157, 153, 155, 155, 154, 157, 160, 156, 149, 155, 157, 159, + 158, 156, 156, 158, 161, 160, 160, 160, 159, 158, 158, 158, 159, 164, 163, 162, + 162, 162, 164, 167, 169, 166, 164, 162, 162, 165, 166, 164, 163, 161, 162, 163, + 162, 161, 159, 157, 155, 159, 158, 156, 156, 156, 158, 161, 163, 157, 156, 156, + 157, 158, 160, 159, 158, 155, 156, 156, 157, 157, 158, 158, 158, 155, 154, 154, + 153, 151, 150, 148, 146, 146, 144, 143, 145, 145, 144, 146, 147, 144, 148, 151, + 152, 149, 150, 151, 155, 156, 157, 157, 157, 156, 154, 151, 149, 149, 150, 152, + 150, 146, 142, 138, 136, 130, 130, 131, 117, 111, 115, 116, 106, 105, 114, 116, + 137, 138, 137, 134, 135, 136, 133, 125, 128, 137, 137, 134, 136, 132, 129, 139, + 126, 131, 137, 136, 130, 127, 129, 135, 140, 143, 143, 141, 141, 143, 143, 140, + 139, 141, 143, 143, 142, 142, 143, 145, 148, 147, 146, 146, 146, 147, 146, 145, + 147, 147, 147, 147, 147, 148, 148, 147, 145, 146, 147, 150, 151, 153, 153, 154, + 153, 156, 153, 150, 149, 155, 156, 156, 157, 154, 151, 152, 154, 155, 153, 150, + 147, 148, 148, 147, 146, 147, 149, 152, 154, 153, 152, 153, 158, 162, 155, 145, + 152, 156, 160, 159, 156, 155, 160, 164, 161, 162, 162, 160, 157, 157, 158, 159, + 162, 162, 161, 161, 162, 164, 166, 168, 172, 169, 164, 163, 164, 165, 163, 160, + 160, 160, 158, 156, 154, 153, 152, 151, 156, 155, 154, 153, 153, 154, 155, 156, + 159, 158, 158, 158, 160, 160, 157, 156, 159, 158, 157, 156, 156, 158, 161, 163, + 157, 157, 157, 155, 153, 151, 149, 145, 150, 143, 141, 142, 142, 142, 146, 150, + 149, 152, 156, 159, 158, 158, 157, 158, 154, 154, 152, 151, 151, 150, 147, 145, + 144, 149, 154, 152, 146, 141, 140, 141, 138, 138, 137, 107, 105, 109, 112, 110, + 119, 126, 119, 110, 119, 126, 125, 126, 129, 133, 133, 131, 137, 134, 132, 137, + 135, 131, 136, 137, 139, 142, 142, 140, 139, 139, 143, 142, 146, 147, 144, 144, + 149, 150, 146, 140, 142, 144, 146, 144, 144, 143, 145, 148, 146, 145, 147, 149, + 150, 149, 148, 150, 150, 150, 151, 151, 151, 152, 151, 143, 144, 145, 147, 148, + 148, 147, 147, 149, 152, 152, 149, 150, 153, 154, 152, 157, 156, 154, 154, 154, + 154, 153, 153, 151, 151, 150, 149, 146, 147, 149, 152, 152, 153, 152, 152, 156, + 160, 158, 152, 158, 158, 158, 158, 158, 159, 161, 162, 161, 162, 162, 161, 158, + 158, 161, 163, 161, 160, 160, 160, 160, 160, 161, 162, 173, 169, 165, 165, 166, + 166, 162, 157, 158, 157, 154, 152, 150, 151, 152, 153, 153, 153, 155, 155, 155, + 156, 156, 157, 160, 159, 159, 159, 160, 159, 158, 155, 160, 160, 156, 155, 154, + 156, 157, 159, 157, 158, 157, 157, 155, 154, 150, 148, 150, 142, 141, 144, 145, + 144, 148, 154, 151, 154, 158, 163, 166, 166, 161, 158, 161, 159, 156, 155, 155, + 155, 153, 150, 151, 152, 154, 154, 152, 151, 152, 153, 154, 155, 155, 103, 102, + 106, 104, 103, 113, 114, 98, 100, 114, 124, 122, 116, 118, 125, 131, 128, 131, + 126, 128, 140, 140, 135, 137, 140, 138, 135, 134, 134, 134, 133, 132, 135, 141, + 143, 140, 140, 146, 147, 143, 142, 145, 148, 149, 148, 146, 145, 145, 144, 143, + 144, 146, 150, 151, 151, 150, 146, 146, 146, 147, 147, 148, 149, 148, 148, 148, + 149, 150, 150, 148, 147, 146, 145, 150, 152, 150, 151, 153, 151, 148, 159, 159, + 159, 158, 157, 156, 156, 157, 156, 156, 155, 152, 150, 150, 152, 154, 150, 153, + 154, 152, 153, 158, 162, 161, 164, 160, 156, 157, 161, 163, 162, 159, 154, 156, + 157, 156, 154, 155, 158, 162, 160, 160, 159, 158, 157, 156, 156, 156, 166, 165, + 163, 166, 170, 170, 163, 157, 158, 157, 153, 151, 152, 154, 157, 159, 153, 155, + 157, 158, 159, 160, 160, 161, 156, 156, 156, 158, 159, 160, 158, 156, 158, 158, + 155, 153, 151, 151, 150, 151, 154, 156, 156, 157, 156, 155, 152, 150, 148, 142, + 142, 148, 149, 148, 151, 158, 145, 147, 151, 158, 163, 163, 156, 151, 147, 143, + 138, 136, 137, 138, 136, 134, 132, 129, 127, 128, 132, 136, 137, 137, 134, 139, + 142, 101, 103, 108, 116, 122, 124, 121, 118, 94, 122, 135, 121, 111, 120, 123, + 116, 127, 128, 130, 131, 131, 131, 131, 132, 135, 139, 137, 133, 131, 135, 134, + 129, 134, 138, 140, 139, 137, 136, 139, 142, 139, 142, 145, 146, 145, 145, 146, + 147, 146, 145, 144, 145, 146, 148, 150, 152, 148, 152, 152, 144, 143, 149, 152, + 151, 147, 144, 143, 147, 153, 155, 154, 151, 157, 151, 150, 155, 157, 153, 152, + 157, 156, 155, 153, 153, 152, 151, 149, 147, 156, 156, 155, 151, 149, 149, 153, + 159, 156, 156, 157, 157, 157, 155, 154, 153, 156, 157, 157, 158, 158, 157, 155, + 155, 155, 159, 162, 161, 156, 154, 157, 161, 158, 159, 160, 161, 161, 160, 158, + 157, 164, 165, 166, 167, 165, 164, 162, 160, 158, 157, 155, 155, 156, 159, 162, + 163, 159, 159, 157, 161, 163, 165, 161, 159, 163, 158, 153, 154, 157, 160, 157, + 154, 154, 154, 152, 153, 154, 156, 155, 156, 155, 157, 158, 159, 156, 152, 146, + 142, 147, 140, 144, 147, 141, 142, 151, 155, 156, 156, 146, 133, 128, 137, 145, + 150, 147, 145, 143, 141, 137, 134, 137, 142, 134, 134, 134, 134, 133, 133, 133, + 133, 133, 131, 130, 106, 106, 107, 110, 110, 108, 101, 95, 102, 118, 126, 120, + 117, 125, 126, 120, 124, 124, 126, 128, 129, 130, 129, 131, 121, 126, 128, 126, + 128, 134, 135, 132, 128, 130, 132, 132, 133, 134, 137, 139, 137, 137, 139, 139, + 138, 140, 144, 145, 145, 144, 144, 143, 144, 144, 145, 146, 148, 152, 152, 147, + 144, 147, 147, 144, 146, 147, 149, 150, 151, 152, 153, 154, 156, 151, 150, 154, + 156, 153, 152, 155, 155, 154, 152, 152, 152, 153, 152, 152, 153, 155, 155, 153, + 151, 151, 154, 158, 153, 153, 154, 154, 153, 151, 150, 149, 157, 157, 157, 157, + 157, 156, 154, 153, 151, 157, 162, 162, 158, 155, 155, 157, 152, 153, 154, 156, + 156, 157, 157, 157, 160, 161, 162, 163, 163, 163, 161, 160, 157, 155, 154, 153, + 154, 156, 157, 160, 161, 161, 159, 160, 162, 164, 160, 159, 157, 155, 153, 156, + 161, 162, 159, 154, 154, 155, 156, 153, 149, 148, 150, 153, 152, 154, 156, 158, + 158, 156, 154, 152, 159, 151, 153, 154, 146, 145, 152, 154, 140, 146, 155, 156, + 145, 133, 135, 146, 144, 139, 138, 142, 147, 145, 138, 131, 133, 133, 132, 131, + 130, 129, 128, 128, 132, 132, 133, 120, 121, 122, 124, 124, 123, 118, 114, 116, + 119, 119, 120, 123, 128, 125, 121, 128, 128, 129, 131, 131, 131, 130, 131, 123, + 126, 128, 127, 127, 130, 128, 125, 130, 129, 128, 129, 132, 134, 134, 134, 140, + 140, 140, 140, 140, 142, 147, 150, 149, 149, 148, 147, 147, 148, 148, 148, 147, + 152, 154, 152, 149, 150, 149, 146, 147, 151, 154, 153, 150, 150, 153, 157, 153, + 149, 147, 151, 152, 150, 149, 150, 154, 154, 151, 150, 149, 149, 150, 151, 150, + 152, 155, 154, 152, 150, 149, 150, 148, 149, 150, 151, 152, 152, 150, 150, 156, + 156, 157, 157, 156, 155, 154, 153, 152, 158, 164, 165, 162, 159, 157, 158, 157, + 157, 157, 157, 157, 158, 159, 160, 158, 158, 159, 161, 161, 161, 160, 160, 162, + 161, 158, 157, 157, 158, 160, 162, 167, 166, 163, 164, 164, 165, 164, 162, 163, + 163, 162, 164, 166, 165, 160, 155, 155, 159, 161, 156, 149, 146, 149, 154, 148, + 149, 151, 152, 153, 153, 153, 153, 157, 148, 150, 151, 143, 141, 147, 147, 152, + 144, 146, 156, 151, 137, 139, 156, 158, 152, 146, 143, 145, 145, 142, 138, 142, + 141, 140, 139, 137, 136, 134, 134, 125, 127, 129, 117, 119, 121, 124, 128, 127, + 126, 125, 128, 123, 120, 123, 127, 124, 122, 121, 130, 130, 130, 130, 129, 128, + 127, 126, 128, 129, 130, 129, 128, 126, 123, 121, 132, 129, 126, 127, 131, 133, + 131, 129, 144, 145, 146, 145, 145, 145, 148, 150, 149, 149, 149, 149, 150, 150, + 150, 150, 147, 151, 153, 153, 151, 152, 154, 154, 150, 151, 152, 151, 149, 149, + 151, 154, 153, 150, 149, 150, 151, 151, 149, 149, 154, 153, 151, 147, 145, 145, + 146, 148, 150, 151, 153, 154, 151, 147, 143, 142, 145, 146, 148, 150, 152, 154, + 155, 155, 154, 154, 155, 155, 156, 156, 156, 156, 154, 157, 161, 162, 160, 158, + 158, 158, 163, 162, 160, 159, 158, 159, 160, 161, 159, 160, 160, 159, 160, 159, + 159, 159, 164, 163, 162, 161, 160, 160, 161, 162, 165, 165, 163, 162, 162, 163, + 164, 165, 164, 164, 163, 164, 165, 165, 163, 159, 161, 162, 162, 159, 154, 153, + 153, 157, 152, 152, 150, 150, 148, 149, 148, 149, 160, 151, 154, 157, 151, 151, + 158, 156, 161, 141, 129, 138, 149, 150, 150, 153, 148, 153, 154, 149, 143, 144, + 146, 148, 149, 149, 148, 148, 146, 146, 144, 144, 144, 146, 145, 123, 125, 125, + 125, 124, 123, 122, 122, 130, 124, 124, 127, 126, 121, 122, 127, 123, 124, 125, + 125, 125, 125, 124, 123, 123, 124, 125, 128, 128, 128, 126, 126, 128, 126, 124, + 126, 130, 133, 132, 130, 143, 145, 148, 149, 147, 145, 145, 145, 142, 143, 144, + 146, 147, 148, 148, 149, 151, 151, 151, 150, 149, 150, 154, 157, 153, 150, 147, + 148, 150, 152, 151, 150, 157, 156, 155, 154, 155, 156, 155, 151, 150, 149, 151, + 149, 147, 147, 150, 153, 148, 150, 152, 154, 153, 151, 147, 143, 147, 148, 148, + 150, 151, 153, 153, 154, 151, 151, 152, 154, 155, 157, 157, 159, 154, 155, 155, + 154, 154, 155, 156, 158, 159, 158, 157, 156, 156, 158, 159, 160, 163, 162, 162, + 159, 159, 157, 158, 157, 160, 159, 159, 158, 157, 157, 157, 156, 157, 156, 155, + 155, 155, 158, 160, 163, 157, 155, 154, 155, 158, 163, 166, 167, 163, 160, 156, + 157, 159, 161, 158, 157, 158, 158, 155, 154, 151, 152, 150, 152, 153, 144, 148, + 154, 150, 150, 156, 154, 143, 135, 127, 130, 143, 153, 149, 141, 127, 136, 144, + 148, 149, 153, 149, 143, 147, 148, 147, 148, 147, 148, 147, 148, 150, 152, 151, + 127, 130, 130, 130, 127, 127, 127, 128, 123, 124, 127, 128, 127, 124, 127, 132, + 121, 123, 125, 127, 128, 129, 129, 130, 131, 129, 128, 130, 130, 127, 127, 129, + 128, 128, 128, 131, 134, 138, 140, 139, 142, 147, 150, 153, 151, 148, 147, 145, + 144, 145, 147, 149, 150, 151, 151, 151, 156, 152, 150, 149, 146, 143, 147, 152, + 153, 149, 145, 145, 150, 152, 151, 148, 153, 153, 152, 149, 150, 152, 151, 145, + 145, 148, 152, 152, 153, 153, 157, 161, 150, 150, 150, 153, 155, 156, 155, 153, + 152, 151, 150, 149, 148, 148, 147, 148, 151, 151, 151, 153, 154, 157, 158, 160, + 159, 158, 157, 156, 156, 159, 161, 163, 156, 156, 157, 158, 159, 161, 163, 165, + 166, 164, 162, 159, 158, 156, 155, 156, 157, 158, 157, 157, 158, 157, 157, 155, + 153, 154, 155, 156, 156, 158, 160, 163, 165, 164, 158, 156, 155, 157, 160, 162, + 158, 153, 148, 151, 156, 160, 156, 153, 152, 152, 150, 151, 150, 151, 150, 152, + 151, 140, 144, 149, 144, 144, 147, 144, 137, 142, 139, 127, 125, 137, 150, 154, + 150, 144, 133, 131, 140, 153, 150, 140, 144, 145, 145, 146, 146, 148, 147, 148, + 142, 142, 141, 114, 118, 118, 119, 117, 119, 122, 126, 121, 124, 127, 127, 126, + 129, 129, 130, 128, 129, 130, 132, 133, 133, 133, 133, 131, 125, 123, 125, 124, + 121, 121, 126, 129, 130, 131, 132, 132, 133, 135, 137, 142, 145, 148, 151, 150, + 149, 149, 150, 150, 152, 153, 155, 156, 156, 155, 154, 158, 154, 153, 153, 150, + 144, 145, 150, 152, 149, 147, 147, 148, 151, 152, 153, 148, 150, 148, 144, 145, + 148, 147, 140, 143, 148, 153, 155, 154, 153, 155, 158, 154, 152, 150, 150, 153, + 155, 154, 153, 154, 152, 151, 150, 149, 150, 150, 151, 153, 153, 152, 152, 153, + 155, 155, 158, 161, 160, 159, 159, 161, 163, 164, 164, 159, 159, 160, 160, 161, + 160, 160, 161, 163, 161, 159, 156, 155, 154, 155, 156, 156, 157, 157, 158, 158, + 157, 158, 155, 151, 153, 155, 156, 154, 154, 155, 158, 167, 165, 161, 157, 151, + 150, 149, 150, 152, 150, 146, 148, 151, 154, 152, 151, 143, 145, 144, 146, 146, + 147, 146, 147, 157, 147, 148, 153, 148, 148, 150, 146, 144, 143, 139, 128, 119, + 122, 141, 158, 158, 156, 144, 131, 131, 144, 147, 144, 145, 146, 145, 146, 146, + 147, 146, 146, 148, 146, 144, 120, 123, 124, 121, 118, 117, 120, 124, 124, 128, + 129, 126, 127, 132, 129, 122, 132, 133, 133, 132, 130, 128, 126, 126, 110, 105, + 105, 110, 114, 113, 118, 126, 127, 127, 128, 125, 120, 119, 120, 122, 135, 136, + 140, 143, 143, 145, 148, 150, 151, 153, 154, 155, 155, 154, 152, 151, 156, 154, + 156, 160, 156, 150, 149, 153, 149, 150, 151, 149, 146, 147, 152, 157, 151, 153, + 151, 147, 147, 151, 150, 143, 146, 151, 156, 155, 151, 147, 146, 147, 158, 153, + 148, 145, 146, 147, 146, 146, 152, 151, 151, 152, 154, 156, 159, 160, 157, 155, + 154, 154, 153, 154, 155, 156, 153, 154, 155, 157, 159, 160, 158, 157, 161, 162, + 161, 160, 157, 154, 150, 148, 159, 159, 157, 155, 153, 154, 156, 156, 150, 151, + 152, 153, 153, 154, 153, 150, 144, 146, 150, 150, 147, 146, 146, 148, 146, 148, + 149, 148, 147, 147, 148, 150, 149, 150, 150, 149, 148, 148, 150, 151, 145, 146, + 147, 148, 148, 148, 146, 146, 142, 131, 132, 138, 135, 135, 136, 131, 136, 127, + 130, 138, 135, 122, 121, 132, 117, 142, 160, 154, 140, 138, 141, 143, 144, 144, + 143, 143, 142, 142, 140, 140, 144, 141, 139, 130, 124, 122, 125, 125, 120, 117, + 120, 130, 124, 124, 132, 136, 131, 127, 127, 125, 119, 131, 122, 120, 114, 96, + 117, 109, 110, 110, 109, 107, 106, 107, 108, 120, 114, 115, 122, 123, 117, 119, + 127, 128, 121, 122, 134, 144, 145, 146, 148, 147, 150, 153, 153, 151, 151, 155, + 158, 162, 161, 159, 156, 155, 155, 155, 155, 150, 149, 150, 150, 150, 150, 151, + 151, 144, 143, 143, 147, 151, 152, 149, 146, 154, 155, 155, 154, 154, 156, 156, + 157, 150, 153, 155, 152, 148, 147, 151, 158, 162, 160, 156, 153, 151, 152, 155, + 157, 151, 153, 157, 159, 160, 160, 159, 158, 151, 153, 155, 155, 155, 156, 159, + 162, 159, 156, 153, 153, 155, 156, 154, 152, 153, 151, 152, 155, 154, 151, 150, + 153, 149, 149, 150, 151, 153, 153, 151, 149, 150, 153, 153, 149, 151, 156, 157, + 155, 159, 153, 150, 151, 151, 146, 147, 153, 148, 149, 149, 149, 148, 146, 143, + 142, 144, 142, 140, 139, 139, 140, 142, 143, 140, 150, 132, 122, 133, 104, 128, + 144, 139, 148, 149, 141, 136, 133, 120, 100, 100, 111, 140, 171, 152, 147, 123, + 144, 139, 136, 141, 150, 151, 143, 141, 145, 146, 146, 146, 26, 28, 28, 27, + 25, 24, 24, 24, 24, 24, 24, 25, 25, 24, 26, 26, 27, 35, 33, 31, + 37, 33, 27, 31, 30, 31, 33, 37, 38, 38, 38, 35, 37, 35, 37, 35, + 37, 35, 37, 35, 34, 33, 36, 35, 38, 37, 39, 39, 38, 42, 42, 39, + 40, 43, 43, 41, 43, 42, 42, 41, 41, 42, 42, 43, 42, 42, 42, 43, + 43, 44, 44, 44, 43, 44, 45, 46, 46, 46, 46, 45, 45, 45, 47, 48, + 48, 49, 49, 49, 49, 49, 49, 50, 50, 51, 51, 51, 51, 51, 51, 52, + 52, 53, 53, 53, 56, 55, 54, 53, 54, 55, 57, 58, 54, 58, 54, 51, + 58, 56, 54, 59, 58, 58, 61, 60, 59, 58, 61, 62, 58, 59, 60, 61, + 61, 61, 61, 60, 55, 62, 60, 57, 62, 60, 57, 66, 63, 61, 62, 59, + 62, 62, 67, 66, 68, 68, 66, 72, 70, 62, 66, 46, 0, 16, 54, 62, + 86, 85, 101, 97, 91, 86, 75, 76, 89, 90, 86, 90, 91, 86, 86, 89, + 89, 87, 88, 91, 92, 91, 89, 89, 91, 91, 89, 88, 90, 91, 91, 91, + 91, 90, 89, 88, 92, 92, 92, 91, 91, 90, 90, 90, 92, 91, 91, 27, + 27, 27, 26, 26, 25, 25, 25, 21, 22, 24, 25, 26, 25, 27, 26, 31, + 32, 32, 31, 30, 31, 35, 38, 34, 35, 37, 38, 37, 36, 38, 39, 39, + 37, 40, 37, 38, 34, 33, 30, 37, 35, 37, 35, 37, 36, 40, 40, 40, + 40, 40, 41, 41, 42, 42, 42, 44, 43, 43, 42, 42, 43, 43, 44, 41, + 43, 45, 44, 43, 42, 42, 43, 44, 47, 48, 45, 45, 48, 47, 42, 43, + 41, 43, 44, 44, 45, 45, 45, 49, 49, 50, 51, 51, 52, 52, 52, 52, + 56, 56, 53, 54, 57, 57, 55, 54, 54, 54, 55, 55, 56, 56, 56, 55, + 55, 59, 57, 58, 55, 58, 57, 56, 58, 60, 55, 58, 59, 61, 59, 63, + 61, 59, 60, 64, 65, 63, 61, 64, 63, 61, 60, 60, 61, 63, 64, 60, + 63, 65, 60, 62, 63, 65, 60, 70, 63, 67, 64, 72, 53, 64, 42, 0, + 19, 53, 60, 89, 87, 95, 96, 92, 91, 80, 79, 90, 90, 84, 86, 86, + 84, 84, 87, 88, 85, 85, 89, 90, 90, 90, 90, 90, 90, 90, 90, 89, + 91, 93, 93, 91, 90, 90, 91, 93, 93, 91, 90, 90, 90, 90, 90, 90, + 97, 94, 26, 26, 25, 25, 25, 24, 24, 24, 25, 25, 26, 27, 28, 28, + 29, 30, 31, 32, 32, 31, 30, 31, 35, 38, 32, 33, 36, 36, 36, 36, + 38, 37, 37, 37, 38, 38, 38, 37, 36, 36, 40, 39, 38, 37, 37, 37, + 38, 38, 40, 40, 40, 41, 41, 42, 42, 42, 44, 43, 43, 42, 42, 43, + 43, 44, 42, 43, 45, 45, 44, 42, 43, 44, 44, 48, 48, 45, 45, 48, + 47, 41, 43, 41, 42, 42, 44, 45, 45, 45, 49, 49, 50, 51, 51, 52, + 52, 52, 52, 56, 56, 53, 54, 57, 57, 55, 54, 54, 55, 55, 55, 56, + 56, 56, 55, 58, 60, 60, 59, 58, 59, 60, 57, 60, 60, 57, 58, 61, + 62, 59, 62, 61, 60, 61, 63, 64, 63, 62, 63, 63, 62, 61, 61, 62, + 63, 63, 62, 65, 65, 62, 62, 65, 65, 62, 67, 63, 65, 63, 70, 54, + 63, 42, 0, 22, 53, 60, 87, 85, 93, 96, 90, 90, 81, 81, 90, 92, + 84, 87, 88, 85, 85, 89, 89, 86, 87, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 89, 91, 93, 93, 91, 90, 90, 91, 93, 92, 91, 90, 90, 90, + 90, 91, 90, 97, 94, 25, 24, 24, 24, 24, 23, 23, 23, 27, 27, 26, + 26, 26, 28, 30, 31, 29, 30, 32, 32, 31, 31, 35, 37, 32, 34, 36, + 36, 35, 34, 36, 37, 36, 36, 36, 36, 37, 37, 38, 39, 41, 40, 39, + 38, 37, 37, 37, 37, 40, 40, 40, 41, 41, 42, 42, 42, 44, 43, 43, + 42, 42, 43, 43, 44, 42, 44, 46, 46, 44, 43, 44, 45, 45, 48, 49, + 46, 45, 47, 46, 40, 43, 42, 42, 42, 45, 45, 45, 45, 49, 49, 50, + 51, 51, 52, 52, 52, 52, 56, 56, 53, 54, 57, 57, 55, 54, 55, 55, + 55, 56, 56, 56, 56, 56, 59, 61, 61, 60, 59, 60, 61, 57, 60, 60, + 58, 58, 61, 62, 59, 60, 61, 63, 62, 62, 61, 63, 64, 63, 63, 62, + 62, 62, 62, 63, 63, 63, 66, 66, 63, 63, 66, 66, 63, 65, 62, 64, + 62, 70, 56, 64, 41, 0, 22, 54, 61, 87, 85, 93, 96, 88, 89, 80, + 80, 91, 93, 86, 88, 89, 86, 86, 90, 90, 87, 88, 91, 90, 90, 90, + 90, 90, 90, 90, 90, 89, 91, 93, 93, 91, 90, 90, 91, 93, 92, 91, + 90, 90, 90, 91, 91, 90, 97, 94, 25, 25, 24, 24, 24, 24, 24, 24, + 27, 26, 24, 23, 23, 25, 28, 30, 28, 30, 33, 32, 31, 31, 35, 37, + 35, 36, 39, 38, 37, 37, 39, 40, 38, 37, 36, 35, 35, 37, 39, 40, + 40, 40, 39, 38, 38, 38, 39, 39, 40, 40, 40, 41, 41, 42, 42, 42, + 44, 43, 43, 42, 42, 43, 43, 44, 43, 45, 47, 47, 45, 44, 45, 46, + 46, 49, 49, 46, 45, 47, 46, 40, 44, 42, 42, 43, 45, 45, 46, 46, + 49, 49, 50, 51, 51, 52, 52, 52, 52, 56, 56, 53, 54, 57, 57, 55, + 55, 55, 55, 56, 56, 56, 57, 57, 57, 59, 61, 62, 60, 60, 60, 62, + 57, 60, 61, 58, 58, 62, 62, 59, 59, 62, 64, 63, 61, 60, 62, 65, + 63, 63, 63, 62, 62, 63, 63, 63, 62, 65, 65, 62, 62, 65, 65, 62, + 64, 62, 63, 61, 70, 57, 65, 39, 0, 23, 55, 61, 87, 85, 93, 96, + 89, 90, 81, 80, 90, 92, 85, 87, 88, 85, 86, 89, 89, 87, 87, 90, + 91, 91, 90, 90, 90, 90, 89, 89, 89, 91, 93, 93, 91, 90, 90, 91, + 92, 92, 91, 90, 90, 90, 91, 92, 90, 97, 94, 25, 25, 26, 26, 26, + 26, 26, 26, 28, 27, 25, 23, 24, 25, 28, 29, 27, 29, 31, 31, 32, + 31, 32, 34, 35, 37, 38, 38, 38, 38, 39, 41, 40, 39, 37, 35, 35, + 36, 37, 38, 37, 37, 37, 38, 39, 40, 42, 43, 40, 40, 40, 41, 41, + 42, 42, 42, 44, 43, 43, 42, 42, 43, 43, 44, 43, 45, 47, 47, 45, + 44, 45, 46, 45, 48, 49, 46, 45, 47, 46, 40, 44, 42, 43, 43, 45, + 46, 46, 46, 49, 49, 50, 51, 51, 52, 52, 52, 52, 56, 56, 53, 54, + 57, 57, 55, 55, 55, 56, 56, 56, 57, 57, 57, 57, 59, 61, 62, 60, + 60, 60, 62, 58, 61, 61, 59, 59, 62, 63, 60, 59, 62, 64, 63, 61, + 60, 62, 65, 63, 63, 63, 64, 64, 63, 63, 63, 61, 64, 64, 61, 61, + 64, 64, 61, 63, 62, 64, 60, 70, 59, 64, 36, 0, 24, 55, 62, 88, + 85, 92, 96, 91, 92, 82, 81, 90, 91, 83, 85, 87, 84, 84, 88, 88, + 85, 86, 89, 91, 91, 91, 90, 90, 89, 89, 89, 89, 91, 93, 93, 91, + 90, 90, 91, 92, 91, 90, 90, 90, 91, 92, 92, 90, 97, 94, 25, 26, + 26, 26, 26, 27, 27, 27, 30, 29, 28, 27, 27, 28, 30, 30, 27, 29, + 31, 31, 32, 32, 32, 33, 33, 35, 36, 36, 36, 36, 37, 39, 39, 38, + 37, 37, 36, 36, 36, 36, 36, 37, 37, 38, 40, 42, 43, 44, 40, 40, + 40, 41, 41, 42, 42, 42, 44, 43, 43, 42, 42, 43, 43, 44, 42, 44, + 46, 46, 44, 43, 44, 45, 44, 47, 48, 45, 45, 48, 47, 42, 45, 43, + 43, 43, 46, 46, 46, 47, 49, 49, 50, 51, 51, 52, 52, 52, 52, 56, + 56, 53, 54, 57, 57, 55, 56, 56, 56, 56, 57, 57, 57, 58, 56, 59, + 61, 61, 60, 59, 60, 61, 58, 61, 62, 59, 59, 63, 63, 60, 60, 61, + 63, 62, 62, 61, 63, 64, 63, 63, 64, 64, 64, 64, 63, 63, 60, 63, + 63, 60, 60, 63, 63, 60, 64, 63, 64, 59, 69, 59, 64, 32, 0, 25, + 56, 62, 88, 85, 92, 96, 92, 92, 83, 81, 90, 90, 82, 84, 86, 83, + 84, 87, 87, 85, 85, 88, 92, 92, 91, 90, 90, 89, 88, 88, 89, 91, + 93, 93, 91, 90, 90, 91, 91, 91, 90, 90, 90, 91, 92, 93, 90, 97, + 94, 24, 24, 25, 25, 25, 26, 26, 26, 29, 29, 29, 29, 29, 29, 29, + 29, 24, 27, 31, 32, 31, 30, 32, 33, 32, 33, 37, 36, 35, 35, 36, + 38, 36, 36, 37, 38, 38, 38, 37, 37, 38, 38, 38, 39, 40, 41, 42, + 43, 40, 40, 40, 41, 41, 42, 42, 42, 44, 43, 43, 42, 42, 43, 43, + 44, 42, 43, 45, 45, 44, 42, 43, 44, 42, 46, 47, 45, 46, 49, 49, + 44, 45, 43, 43, 44, 46, 46, 47, 47, 49, 49, 50, 51, 51, 52, 52, + 52, 52, 56, 56, 53, 54, 57, 57, 55, 56, 56, 56, 57, 57, 57, 58, + 58, 55, 58, 60, 60, 59, 58, 59, 60, 58, 61, 62, 59, 60, 63, 63, + 60, 62, 61, 60, 61, 63, 64, 63, 62, 63, 63, 64, 65, 65, 64, 63, + 63, 61, 64, 64, 61, 61, 64, 64, 61, 65, 65, 65, 58, 69, 60, 62, + 28, 0, 26, 57, 63, 88, 85, 92, 95, 91, 91, 82, 81, 90, 91, 83, + 86, 87, 84, 85, 88, 88, 86, 86, 89, 92, 92, 91, 90, 90, 89, 88, + 88, 89, 91, 93, 93, 91, 90, 90, 91, 91, 90, 90, 90, 90, 91, 92, + 93, 90, 97, 94, 23, 23, 23, 24, 24, 25, 25, 25, 26, 27, 27, 28, + 28, 27, 26, 26, 24, 27, 31, 32, 31, 30, 32, 33, 34, 36, 39, 39, + 38, 37, 39, 40, 32, 33, 36, 38, 39, 40, 39, 39, 40, 40, 39, 39, + 39, 40, 41, 41, 40, 40, 40, 41, 41, 42, 42, 42, 44, 43, 43, 42, + 42, 43, 43, 44, 41, 43, 45, 44, 43, 42, 42, 43, 41, 45, 46, 45, + 46, 50, 50, 45, 45, 43, 43, 44, 46, 47, 47, 47, 49, 49, 50, 51, + 51, 52, 52, 52, 52, 56, 56, 53, 54, 57, 57, 55, 56, 56, 56, 57, + 57, 58, 58, 58, 55, 57, 59, 59, 58, 57, 58, 59, 58, 62, 62, 59, + 60, 63, 63, 61, 63, 61, 59, 60, 64, 65, 63, 61, 62, 63, 65, 66, + 66, 65, 63, 62, 63, 66, 66, 63, 63, 66, 66, 63, 65, 66, 66, 58, + 69, 60, 62, 26, 0, 26, 57, 63, 88, 85, 92, 95, 88, 89, 80, 80, + 90, 92, 85, 88, 88, 86, 86, 89, 90, 87, 87, 91, 92, 92, 91, 90, + 90, 89, 88, 88, 89, 91, 93, 93, 91, 90, 90, 91, 90, 90, 90, 90, + 90, 91, 93, 93, 90, 97, 94, 27, 27, 28, 28, 28, 27, 26, 26, 28, + 27, 26, 27, 29, 30, 29, 28, 28, 28, 28, 28, 28, 28, 30, 30, 34, + 35, 35, 36, 38, 37, 37, 36, 38, 35, 35, 38, 38, 35, 35, 38, 41, + 40, 40, 40, 40, 41, 42, 43, 45, 44, 42, 40, 39, 39, 40, 40, 43, + 44, 45, 46, 46, 44, 43, 42, 44, 43, 43, 43, 43, 44, 45, 46, 50, + 49, 47, 46, 45, 45, 46, 45, 46, 44, 44, 45, 47, 48, 48, 48, 50, + 50, 52, 52, 52, 53, 53, 53, 57, 56, 55, 55, 57, 57, 56, 55, 61, + 55, 58, 60, 54, 57, 62, 57, 59, 59, 59, 60, 60, 61, 61, 61, 62, + 61, 61, 61, 61, 61, 60, 60, 66, 65, 63, 63, 63, 63, 65, 66, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 66, 65, 61, 61, 65, 66, 64, 71, + 63, 68, 65, 67, 56, 61, 22, 0, 29, 60, 63, 89, 89, 96, 97, 96, + 87, 82, 86, 89, 90, 86, 86, 88, 86, 87, 89, 88, 84, 85, 89, 93, + 92, 90, 88, 86, 85, 85, 84, 89, 93, 94, 91, 91, 93, 91, 87, 96, + 94, 90, 87, 87, 89, 92, 94, 89, 98, 96, 27, 27, 27, 28, 27, 27, + 27, 26, 28, 27, 26, 27, 29, 30, 29, 28, 28, 28, 28, 28, 28, 28, + 30, 30, 34, 35, 35, 36, 38, 37, 37, 36, 39, 36, 36, 39, 39, 36, + 36, 39, 41, 40, 40, 40, 40, 41, 42, 43, 40, 40, 40, 40, 41, 42, + 43, 44, 43, 44, 44, 45, 45, 44, 44, 43, 44, 44, 43, 43, 44, 44, + 45, 46, 48, 47, 46, 46, 46, 47, 48, 47, 46, 44, 44, 45, 47, 48, + 48, 48, 50, 50, 51, 51, 52, 52, 52, 53, 56, 55, 53, 54, 56, 56, + 55, 54, 60, 54, 58, 60, 54, 57, 61, 56, 59, 59, 59, 60, 60, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 63, 62, 61, 61, 61, 61, + 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 63, 66, 65, 62, 62, 65, + 66, 63, 67, 61, 66, 63, 68, 58, 63, 24, 0, 29, 60, 63, 89, 89, + 96, 97, 96, 87, 82, 86, 89, 90, 86, 86, 88, 86, 87, 89, 88, 84, + 85, 90, 91, 91, 90, 89, 88, 88, 89, 89, 90, 93, 93, 90, 90, 92, + 91, 88, 95, 93, 90, 88, 88, 89, 91, 93, 93, 97, 93, 27, 27, 27, + 27, 27, 27, 27, 27, 28, 27, 26, 27, 29, 30, 29, 28, 28, 26, 26, + 26, 28, 29, 29, 29, 32, 33, 35, 36, 36, 35, 35, 34, 39, 36, 36, + 39, 39, 36, 36, 39, 41, 40, 40, 40, 40, 41, 42, 43, 39, 39, 40, + 42, 43, 43, 43, 43, 44, 44, 44, 43, 43, 44, 44, 45, 44, 44, 43, + 43, 44, 45, 46, 46, 46, 46, 45, 46, 47, 48, 49, 48, 46, 44, 44, + 45, 47, 48, 48, 48, 49, 49, 50, 51, 51, 52, 52, 52, 55, 54, 53, + 53, 55, 56, 54, 53, 60, 54, 57, 59, 53, 56, 61, 56, 59, 59, 59, + 60, 60, 61, 61, 61, 60, 60, 60, 61, 62, 62, 63, 63, 63, 62, 62, + 61, 61, 62, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 62, 65, 66, + 63, 63, 66, 65, 62, 64, 59, 64, 62, 68, 61, 66, 24, 0, 30, 61, + 64, 89, 89, 96, 96, 96, 87, 82, 86, 89, 90, 86, 86, 88, 86, 87, + 90, 88, 85, 86, 90, 89, 89, 89, 89, 90, 91, 92, 93, 91, 94, 93, + 89, 89, 92, 92, 89, 93, 92, 91, 90, 90, 90, 91, 91, 95, 97, 90, + 27, 27, 26, 26, 27, 27, 28, 28, 28, 27, 26, 27, 29, 30, 29, 26, + 28, 26, 26, 27, 29, 29, 29, 30, 32, 33, 35, 36, 36, 35, 35, 34, + 39, 36, 36, 39, 39, 36, 36, 39, 41, 40, 40, 40, 40, 41, 42, 43, + 41, 42, 43, 44, 43, 42, 40, 39, 45, 44, 43, 42, 42, 44, 45, 46, + 45, 44, 44, 44, 44, 45, 46, 47, 46, 46, 46, 46, 47, 48, 48, 47, + 46, 44, 44, 45, 47, 48, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, + 56, 55, 54, 54, 56, 56, 55, 54, 59, 54, 57, 59, 53, 56, 60, 56, + 59, 59, 59, 60, 60, 61, 61, 61, 59, 60, 60, 61, 62, 63, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, + 61, 65, 66, 64, 64, 66, 65, 61, 63, 59, 64, 61, 68, 62, 66, 21, + 0, 30, 61, 64, 90, 89, 96, 96, 96, 87, 82, 86, 89, 90, 86, 86, + 87, 86, 87, 90, 89, 85, 87, 91, 89, 89, 88, 89, 89, 90, 92, 92, + 92, 94, 92, 88, 88, 91, 92, 90, 91, 92, 92, 92, 91, 91, 90, 89, + 94, 97, 91, 27, 26, 26, 26, 26, 27, 29, 29, 28, 27, 26, 27, 29, + 30, 29, 26, 28, 26, 26, 27, 27, 28, 30, 31, 32, 33, 33, 34, 36, + 35, 35, 34, 40, 37, 37, 40, 40, 37, 37, 40, 41, 40, 40, 40, 40, + 41, 42, 43, 41, 42, 43, 44, 44, 43, 41, 40, 44, 44, 43, 42, 43, + 44, 46, 47, 45, 45, 44, 44, 45, 45, 46, 47, 48, 48, 48, 48, 47, + 46, 46, 43, 46, 44, 44, 45, 47, 48, 48, 48, 49, 49, 50, 51, 51, + 52, 52, 52, 58, 57, 56, 56, 58, 58, 57, 56, 60, 54, 57, 59, 53, + 56, 61, 56, 59, 59, 59, 60, 60, 61, 61, 61, 60, 60, 61, 62, 63, + 64, 64, 65, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, + 65, 65, 65, 61, 65, 66, 64, 64, 66, 65, 61, 65, 62, 66, 60, 67, + 62, 63, 16, 0, 31, 62, 65, 90, 89, 96, 96, 96, 87, 82, 86, 89, + 90, 86, 86, 87, 86, 87, 90, 89, 86, 88, 92, 90, 89, 88, 88, 87, + 88, 88, 88, 92, 94, 92, 88, 88, 91, 92, 90, 91, 91, 92, 92, 92, + 91, 90, 89, 90, 98, 95, 27, 26, 25, 25, 26, 27, 29, 31, 28, 27, + 26, 27, 29, 30, 29, 26, 28, 26, 27, 27, 28, 29, 31, 31, 32, 33, + 33, 34, 36, 35, 35, 34, 40, 37, 37, 40, 40, 37, 37, 40, 41, 40, + 40, 40, 40, 41, 42, 43, 38, 39, 41, 43, 44, 45, 46, 46, 43, 43, + 43, 43, 44, 45, 46, 47, 45, 45, 45, 45, 45, 46, 47, 47, 48, 48, + 49, 48, 47, 46, 45, 42, 46, 44, 44, 45, 47, 48, 48, 48, 50, 50, + 52, 52, 52, 53, 53, 53, 59, 58, 56, 57, 59, 59, 58, 57, 61, 55, + 58, 60, 54, 57, 62, 57, 59, 59, 59, 60, 60, 61, 61, 61, 61, 61, + 62, 62, 63, 64, 64, 64, 61, 62, 62, 63, 63, 62, 62, 61, 66, 66, + 66, 66, 66, 66, 66, 66, 62, 65, 66, 63, 63, 66, 65, 62, 66, 64, + 67, 60, 67, 62, 62, 11, 0, 32, 63, 65, 90, 89, 96, 96, 96, 87, + 82, 86, 89, 90, 86, 86, 87, 86, 87, 91, 90, 87, 88, 93, 91, 90, + 89, 87, 86, 86, 86, 86, 91, 94, 93, 89, 89, 92, 92, 89, 91, 92, + 92, 92, 92, 91, 90, 89, 89, 98, 97, 27, 26, 25, 24, 25, 27, 30, + 31, 28, 27, 26, 27, 29, 30, 29, 26, 28, 26, 27, 27, 28, 29, 32, + 32, 30, 31, 33, 34, 34, 33, 35, 34, 40, 37, 37, 40, 40, 37, 37, + 40, 41, 40, 40, 40, 40, 41, 42, 43, 39, 40, 40, 41, 43, 45, 47, + 48, 41, 42, 43, 44, 45, 46, 46, 46, 46, 45, 45, 45, 45, 46, 47, + 48, 46, 47, 48, 48, 48, 47, 46, 43, 46, 44, 44, 45, 47, 48, 48, + 48, 51, 51, 53, 53, 54, 54, 54, 54, 58, 57, 56, 56, 58, 59, 57, + 56, 62, 56, 60, 61, 56, 58, 63, 58, 59, 59, 59, 60, 60, 61, 61, + 61, 62, 63, 63, 63, 63, 63, 63, 63, 61, 61, 62, 63, 63, 62, 61, + 61, 66, 66, 66, 66, 66, 66, 66, 66, 63, 66, 65, 62, 62, 65, 66, + 63, 66, 64, 67, 59, 67, 63, 62, 9, 0, 33, 63, 66, 90, 89, 96, + 96, 96, 87, 82, 86, 89, 90, 86, 86, 87, 86, 87, 91, 90, 87, 89, + 94, 92, 91, 90, 88, 88, 87, 87, 87, 90, 93, 93, 90, 90, 92, 91, + 88, 92, 92, 92, 91, 91, 90, 90, 90, 91, 98, 94, 27, 26, 25, 24, + 25, 27, 30, 32, 28, 27, 26, 27, 29, 30, 29, 28, 28, 26, 27, 28, + 29, 29, 32, 33, 30, 31, 33, 34, 34, 33, 33, 34, 39, 38, 38, 41, + 41, 38, 38, 41, 41, 40, 40, 40, 40, 41, 42, 43, 44, 43, 42, 41, + 41, 43, 44, 45, 40, 41, 43, 45, 46, 46, 45, 45, 46, 45, 45, 45, + 45, 46, 47, 48, 44, 45, 47, 48, 49, 49, 48, 47, 46, 44, 44, 45, + 47, 48, 48, 48, 52, 52, 54, 54, 54, 55, 55, 55, 57, 56, 55, 55, + 57, 57, 56, 55, 63, 57, 61, 62, 56, 59, 64, 57, 57, 57, 57, 58, + 58, 59, 59, 59, 62, 64, 63, 63, 63, 63, 63, 62, 63, 63, 65, 66, + 66, 65, 63, 63, 66, 66, 66, 66, 66, 66, 68, 66, 64, 66, 65, 61, + 61, 65, 66, 64, 64, 63, 66, 58, 69, 67, 65, 9, 0, 33, 64, 64, + 90, 87, 96, 94, 96, 86, 82, 86, 89, 90, 88, 88, 87, 86, 88, 91, + 90, 88, 89, 94, 92, 91, 90, 89, 89, 89, 90, 90, 89, 93, 94, 91, + 91, 93, 91, 87, 93, 92, 91, 90, 90, 90, 91, 91, 93, 95, 90, 27, + 27, 27, 28, 28, 29, 29, 29, 30, 29, 29, 29, 29, 30, 31, 30, 27, + 27, 27, 28, 28, 29, 29, 29, 31, 31, 31, 32, 32, 33, 33, 35, 35, + 36, 37, 38, 38, 38, 38, 37, 36, 37, 39, 39, 37, 37, 39, 42, 42, + 43, 43, 44, 44, 45, 45, 45, 47, 47, 47, 46, 46, 45, 45, 45, 44, + 51, 48, 45, 49, 46, 43, 50, 45, 49, 48, 44, 44, 51, 53, 50, 47, + 48, 48, 49, 49, 48, 50, 49, 50, 58, 56, 52, 57, 54, 51, 59, 49, + 54, 55, 53, 54, 58, 54, 46, 62, 58, 57, 59, 59, 56, 56, 59, 57, + 54, 55, 55, 56, 57, 58, 58, 57, 59, 60, 60, 63, 62, 62, 62, 61, + 63, 64, 64, 64, 64, 65, 66, 66, 67, 67, 66, 65, 66, 70, 71, 61, + 64, 66, 65, 62, 60, 63, 65, 68, 60, 68, 63, 66, 63, 66, 7, 1, + 38, 59, 68, 82, 89, 90, 91, 95, 83, 79, 86, 93, 90, 88, 91, 90, + 86, 86, 89, 90, 87, 87, 91, 88, 90, 92, 91, 89, 88, 90, 92, 90, + 94, 94, 91, 90, 92, 91, 87, 93, 92, 91, 90, 90, 90, 90, 91, 89, + 88, 91, 27, 27, 28, 28, 28, 29, 29, 29, 31, 31, 30, 30, 31, 32, + 33, 31, 29, 27, 28, 28, 28, 29, 29, 29, 31, 31, 31, 32, 32, 33, + 33, 33, 36, 36, 36, 37, 37, 38, 38, 38, 36, 38, 39, 39, 38, 37, + 39, 40, 43, 43, 43, 44, 44, 45, 45, 45, 47, 47, 47, 46, 46, 45, + 45, 45, 44, 51, 48, 45, 49, 46, 43, 50, 45, 48, 48, 45, 46, 51, + 52, 49, 48, 48, 48, 48, 48, 48, 50, 50, 44, 52, 51, 49, 55, 52, + 50, 58, 50, 52, 52, 49, 51, 55, 54, 49, 57, 53, 52, 54, 53, 49, + 49, 51, 52, 50, 53, 54, 55, 54, 55, 53, 59, 59, 61, 61, 64, 64, + 64, 65, 60, 61, 62, 61, 61, 61, 62, 64, 66, 67, 67, 66, 67, 68, + 70, 71, 64, 65, 67, 66, 63, 61, 64, 65, 70, 63, 72, 66, 66, 62, + 65, 6, 2, 37, 59, 66, 82, 89, 88, 91, 92, 81, 78, 85, 92, 89, + 89, 90, 90, 86, 86, 89, 90, 87, 87, 91, 88, 90, 92, 91, 89, 88, + 90, 92, 89, 93, 93, 90, 90, 92, 92, 88, 93, 92, 91, 90, 90, 90, + 90, 91, 89, 90, 90, 27, 28, 28, 28, 29, 29, 29, 29, 32, 32, 32, + 32, 32, 33, 34, 32, 29, 28, 28, 28, 29, 29, 29, 29, 31, 31, 31, + 32, 32, 33, 33, 33, 37, 37, 36, 35, 36, 37, 39, 40, 36, 38, 39, + 39, 38, 38, 39, 41, 43, 43, 43, 44, 44, 45, 45, 45, 47, 47, 46, + 46, 46, 46, 45, 45, 44, 51, 48, 45, 49, 46, 43, 50, 45, 48, 49, + 47, 48, 51, 51, 48, 50, 47, 47, 46, 46, 47, 51, 52, 47, 54, 53, + 50, 55, 53, 50, 57, 58, 58, 56, 54, 56, 61, 61, 59, 62, 59, 58, + 60, 60, 57, 58, 60, 50, 50, 53, 54, 54, 53, 54, 53, 60, 60, 60, + 59, 61, 61, 62, 62, 62, 62, 63, 62, 61, 62, 67, 69, 64, 65, 67, + 67, 68, 68, 70, 70, 66, 66, 67, 67, 65, 63, 66, 66, 73, 65, 74, + 68, 67, 62, 64, 4, 2, 37, 59, 67, 82, 89, 88, 91, 90, 79, 77, + 84, 92, 89, 88, 90, 90, 86, 86, 89, 90, 87, 87, 91, 89, 90, 91, + 91, 89, 89, 90, 91, 88, 92, 92, 90, 90, 93, 93, 89, 93, 92, 91, + 90, 90, 90, 90, 91, 91, 91, 91, 28, 28, 28, 29, 29, 29, 30, 30, + 32, 32, 32, 31, 32, 33, 34, 34, 30, 28, 28, 29, 29, 29, 30, 30, + 31, 31, 31, 32, 32, 33, 33, 35, 38, 37, 35, 34, 35, 37, 39, 41, + 37, 38, 40, 39, 38, 38, 39, 41, 43, 43, 43, 44, 44, 45, 45, 45, + 46, 46, 46, 46, 46, 46, 46, 46, 44, 51, 48, 45, 49, 46, 43, 50, + 45, 47, 49, 50, 50, 51, 50, 46, 51, 47, 47, 45, 45, 47, 51, 53, + 52, 58, 55, 52, 57, 54, 50, 55, 51, 50, 49, 49, 52, 54, 54, 53, + 56, 53, 53, 56, 57, 56, 57, 60, 54, 53, 55, 55, 54, 54, 57, 58, + 61, 60, 60, 59, 61, 61, 62, 60, 61, 62, 62, 62, 61, 63, 69, 72, + 63, 65, 68, 67, 68, 68, 70, 70, 65, 66, 67, 67, 66, 66, 67, 67, + 72, 65, 74, 68, 67, 63, 65, 4, 3, 38, 60, 67, 82, 89, 88, 91, + 89, 78, 76, 84, 91, 88, 88, 90, 90, 86, 86, 89, 90, 87, 87, 91, + 90, 90, 90, 90, 90, 90, 90, 90, 87, 91, 92, 90, 91, 94, 94, 90, + 93, 92, 91, 90, 90, 90, 90, 91, 91, 91, 90, 28, 28, 29, 29, 29, + 30, 30, 30, 31, 31, 31, 31, 31, 32, 33, 33, 30, 30, 31, 31, 31, + 32, 32, 32, 33, 33, 33, 34, 34, 35, 35, 35, 38, 37, 35, 34, 35, + 37, 39, 41, 37, 39, 40, 40, 39, 38, 40, 41, 43, 43, 43, 44, 44, + 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 44, 51, 48, 45, 49, + 46, 43, 50, 47, 47, 49, 51, 52, 50, 49, 47, 51, 47, 45, 43, 45, + 47, 49, 51, 51, 55, 51, 49, 56, 54, 49, 54, 53, 53, 54, 57, 59, + 58, 55, 54, 58, 54, 53, 56, 56, 53, 53, 56, 53, 51, 50, 48, 48, + 49, 53, 56, 53, 54, 55, 57, 59, 61, 62, 63, 61, 61, 61, 59, 59, + 59, 62, 64, 62, 64, 68, 68, 67, 66, 67, 69, 66, 66, 66, 67, 67, + 67, 68, 67, 69, 62, 73, 68, 68, 64, 65, 5, 4, 39, 61, 68, 83, + 89, 88, 91, 89, 78, 76, 83, 91, 89, 88, 90, 90, 86, 86, 89, 90, + 87, 87, 91, 90, 90, 90, 90, 90, 90, 90, 90, 87, 91, 92, 90, 91, + 94, 94, 90, 93, 92, 91, 90, 90, 90, 90, 91, 89, 89, 89, 29, 29, + 29, 29, 30, 30, 30, 31, 31, 31, 30, 30, 31, 32, 33, 33, 31, 31, + 31, 31, 32, 32, 32, 33, 33, 33, 33, 34, 34, 35, 35, 35, 37, 37, + 36, 35, 36, 37, 39, 40, 37, 39, 40, 40, 39, 39, 40, 42, 42, 43, + 43, 44, 44, 45, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 44, 51, + 48, 45, 49, 46, 43, 50, 50, 48, 48, 52, 52, 49, 48, 48, 48, 47, + 45, 44, 46, 47, 49, 50, 51, 55, 50, 48, 57, 56, 51, 55, 52, 50, + 52, 57, 58, 54, 51, 50, 52, 48, 46, 47, 45, 40, 39, 41, 34, 33, + 32, 29, 28, 29, 33, 38, 33, 35, 39, 43, 47, 50, 52, 53, 62, 63, + 64, 63, 61, 60, 60, 61, 62, 64, 68, 68, 67, 67, 67, 68, 66, 65, + 65, 66, 68, 68, 69, 67, 67, 61, 72, 68, 68, 63, 64, 4, 5, 40, + 62, 68, 83, 89, 88, 91, 89, 78, 76, 84, 92, 90, 89, 92, 90, 86, + 86, 89, 90, 87, 87, 91, 91, 90, 89, 89, 91, 91, 90, 89, 88, 92, + 92, 90, 90, 93, 93, 89, 93, 92, 91, 90, 90, 90, 90, 91, 89, 88, + 88, 29, 29, 29, 30, 30, 30, 31, 31, 32, 32, 32, 32, 32, 33, 34, + 35, 31, 31, 31, 32, 32, 32, 33, 33, 33, 33, 33, 34, 34, 35, 35, + 35, 36, 36, 36, 37, 37, 38, 38, 38, 38, 39, 41, 40, 39, 39, 40, + 42, 42, 42, 42, 43, 43, 44, 44, 44, 44, 44, 44, 45, 45, 46, 46, + 46, 44, 51, 48, 45, 49, 46, 43, 50, 53, 48, 48, 51, 51, 48, 48, + 50, 46, 44, 46, 46, 46, 46, 48, 48, 49, 52, 47, 43, 50, 47, 40, + 42, 29, 24, 23, 28, 29, 24, 21, 23, 27, 23, 21, 23, 21, 18, 17, + 20, 17, 21, 24, 23, 19, 17, 22, 25, 20, 23, 27, 30, 33, 33, 32, + 31, 49, 53, 57, 60, 60, 60, 62, 63, 59, 62, 66, 67, 68, 67, 67, + 68, 65, 64, 63, 65, 68, 68, 69, 66, 67, 61, 72, 67, 67, 61, 61, + 0, 6, 40, 62, 69, 83, 90, 87, 91, 89, 79, 77, 85, 93, 91, 91, + 93, 90, 86, 86, 89, 90, 87, 87, 91, 92, 90, 88, 89, 91, 92, 90, + 88, 89, 93, 93, 90, 90, 92, 92, 88, 93, 92, 91, 90, 90, 90, 90, + 91, 93, 92, 91, 29, 29, 29, 30, 30, 31, 31, 31, 34, 34, 33, 33, + 33, 34, 35, 36, 31, 31, 31, 32, 32, 33, 33, 33, 33, 33, 33, 34, + 34, 35, 35, 35, 35, 36, 37, 38, 38, 38, 38, 37, 38, 39, 41, 41, + 39, 39, 41, 42, 42, 42, 42, 43, 43, 44, 44, 44, 44, 44, 44, 45, + 45, 46, 46, 46, 44, 51, 48, 45, 49, 46, 43, 50, 54, 49, 47, 51, + 50, 47, 48, 52, 45, 44, 46, 47, 47, 46, 48, 47, 45, 46, 38, 32, + 35, 29, 20, 20, 27, 19, 16, 20, 20, 16, 15, 18, 26, 23, 23, 27, + 28, 26, 28, 31, 18, 24, 30, 31, 27, 23, 25, 26, 25, 27, 29, 30, + 29, 25, 21, 18, 26, 32, 41, 48, 53, 56, 60, 62, 59, 62, 66, 67, + 68, 67, 67, 68, 65, 63, 62, 64, 67, 68, 68, 65, 69, 62, 73, 67, + 65, 59, 58, 0, 6, 41, 62, 69, 83, 90, 87, 91, 90, 79, 77, 85, + 94, 92, 92, 94, 90, 86, 86, 89, 90, 87, 87, 91, 92, 90, 88, 89, + 91, 92, 90, 88, 90, 94, 94, 91, 90, 92, 91, 87, 93, 92, 91, 90, + 90, 90, 90, 91, 95, 94, 92, 30, 32, 33, 32, 30, 29, 30, 32, 30, + 31, 33, 35, 35, 35, 34, 33, 32, 31, 29, 29, 30, 32, 35, 37, 38, + 37, 36, 34, 34, 35, 36, 37, 40, 38, 36, 37, 41, 42, 40, 38, 38, + 39, 41, 41, 39, 39, 41, 42, 42, 43, 43, 44, 44, 43, 43, 42, 38, + 41, 44, 44, 41, 40, 41, 44, 49, 48, 48, 48, 48, 49, 50, 51, 44, + 48, 51, 50, 46, 44, 45, 45, 43, 37, 41, 42, 32, 32, 37, 32, 20, + 20, 13, 12, 20, 15, 12, 21, 20, 16, 20, 21, 16, 23, 27, 17, 33, + 30, 28, 30, 29, 25, 25, 28, 22, 33, 31, 38, 31, 21, 37, 42, 42, + 35, 37, 19, 32, 20, 26, 14, 18, 24, 24, 19, 29, 50, 64, 66, 62, + 68, 63, 59, 65, 64, 63, 71, 64, 64, 65, 66, 66, 67, 70, 70, 70, + 64, 73, 65, 66, 65, 65, 1, 5, 46, 59, 72, 87, 86, 92, 89, 91, + 74, 76, 88, 91, 92, 96, 92, 89, 90, 83, 92, 92, 83, 90, 87, 89, + 89, 90, 90, 90, 89, 88, 88, 91, 92, 92, 93, 93, 92, 92, 91, 93, + 92, 92, 91, 91, 92, 92, 93, 88, 90, 91, 27, 29, 30, 29, 27, 27, + 28, 29, 32, 33, 33, 33, 33, 32, 32, 31, 34, 33, 32, 32, 33, 35, + 37, 38, 37, 36, 36, 35, 35, 36, 36, 37, 40, 38, 36, 38, 40, 42, + 40, 38, 38, 39, 41, 41, 39, 39, 41, 42, 42, 42, 43, 43, 43, 43, + 42, 42, 44, 46, 47, 46, 43, 42, 43, 45, 47, 47, 47, 47, 47, 47, + 47, 47, 44, 46, 50, 51, 50, 48, 47, 45, 45, 32, 27, 22, 11, 11, + 18, 13, 12, 17, 16, 18, 26, 22, 20, 31, 23, 20, 24, 24, 19, 25, + 28, 19, 37, 33, 32, 34, 33, 30, 30, 33, 26, 31, 23, 32, 31, 23, + 35, 35, 29, 26, 30, 16, 28, 21, 28, 20, 20, 20, 20, 21, 25, 30, + 43, 54, 69, 70, 62, 60, 71, 71, 65, 68, 67, 66, 66, 66, 66, 66, + 68, 68, 71, 66, 75, 67, 66, 63, 62, 0, 6, 46, 60, 72, 87, 86, + 92, 89, 91, 74, 77, 88, 91, 92, 96, 92, 89, 90, 83, 92, 92, 83, + 90, 87, 88, 89, 89, 90, 90, 89, 89, 88, 91, 92, 92, 93, 93, 92, + 92, 91, 93, 92, 92, 91, 91, 92, 92, 93, 89, 91, 92, 27, 28, 29, + 29, 27, 27, 28, 30, 34, 33, 32, 31, 30, 30, 30, 30, 35, 35, 35, + 36, 37, 38, 38, 39, 37, 38, 38, 39, 39, 38, 38, 38, 39, 38, 37, + 38, 40, 41, 40, 39, 38, 39, 41, 41, 39, 39, 41, 42, 41, 41, 42, + 42, 42, 42, 41, 41, 47, 47, 47, 46, 43, 43, 44, 45, 45, 46, 47, + 48, 48, 48, 48, 48, 51, 50, 48, 47, 44, 39, 33, 27, 29, 15, 11, + 10, 6, 10, 15, 9, 6, 14, 17, 21, 27, 22, 21, 32, 24, 21, 25, + 24, 18, 23, 27, 19, 29, 25, 25, 27, 27, 24, 25, 28, 29, 28, 15, + 25, 29, 23, 30, 26, 17, 19, 25, 14, 20, 16, 24, 20, 23, 16, 18, + 24, 20, 13, 23, 39, 58, 65, 65, 64, 69, 66, 64, 71, 69, 68, 68, + 67, 66, 65, 67, 66, 71, 67, 77, 69, 67, 63, 59, 0, 7, 47, 60, + 72, 86, 86, 92, 89, 90, 75, 78, 89, 91, 91, 95, 91, 89, 90, 83, + 92, 92, 83, 90, 87, 88, 88, 89, 90, 90, 89, 89, 88, 91, 92, 92, + 93, 93, 92, 92, 91, 93, 92, 92, 91, 91, 92, 92, 93, 92, 94, 95, + 30, 31, 33, 32, 31, 31, 32, 34, 33, 32, 30, 29, 29, 30, 31, 32, + 32, 33, 34, 35, 36, 36, 35, 35, 36, 37, 38, 40, 40, 39, 38, 37, + 38, 38, 38, 39, 39, 40, 40, 40, 38, 39, 41, 41, 39, 39, 41, 42, + 40, 41, 41, 42, 42, 41, 41, 40, 44, 44, 43, 42, 42, 42, 43, 44, + 47, 47, 49, 50, 50, 49, 48, 48, 47, 42, 36, 32, 29, 25, 19, 12, + 15, 5, 8, 15, 17, 21, 21, 10, 12, 15, 13, 15, 23, 19, 15, 24, + 21, 19, 23, 22, 14, 18, 23, 15, 18, 15, 14, 17, 17, 15, 16, 19, + 27, 25, 11, 20, 24, 18, 25, 20, 17, 21, 24, 17, 14, 14, 18, 18, + 26, 20, 21, 24, 22, 17, 21, 27, 32, 52, 65, 65, 63, 57, 61, 76, + 68, 68, 67, 67, 67, 66, 68, 68, 69, 66, 77, 70, 69, 63, 58, 0, + 8, 48, 60, 72, 86, 86, 92, 90, 90, 75, 79, 90, 91, 90, 94, 91, + 89, 90, 83, 92, 92, 83, 90, 87, 87, 88, 89, 90, 90, 90, 89, 89, + 91, 92, 92, 93, 93, 92, 92, 91, 93, 92, 92, 91, 91, 92, 92, 93, + 93, 95, 95, 30, 32, 34, 33, 32, 32, 34, 35, 30, 29, 29, 29, 30, + 32, 34, 35, 33, 34, 35, 36, 36, 36, 35, 35, 35, 36, 38, 39, 40, + 39, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 38, 39, 41, 41, 39, + 39, 41, 42, 38, 39, 39, 40, 40, 39, 39, 38, 40, 40, 39, 40, 41, + 42, 42, 44, 49, 49, 47, 45, 43, 40, 38, 37, 29, 23, 17, 16, 18, + 20, 20, 17, 21, 11, 13, 18, 15, 17, 17, 5, 21, 16, 6, 7, 20, + 19, 14, 19, 17, 16, 21, 19, 10, 14, 19, 13, 15, 12, 12, 14, 15, + 12, 13, 19, 21, 26, 16, 23, 20, 11, 21, 20, 19, 25, 22, 19, 13, + 17, 15, 16, 23, 25, 22, 18, 24, 31, 28, 19, 18, 36, 47, 54, 62, + 61, 61, 71, 66, 66, 67, 67, 67, 68, 70, 70, 67, 64, 76, 70, 69, + 63, 58, 0, 10, 49, 61, 72, 86, 86, 93, 90, 89, 76, 81, 91, 91, + 89, 93, 91, 89, 90, 83, 92, 92, 83, 90, 87, 87, 88, 89, 90, 90, + 90, 90, 90, 91, 92, 92, 93, 93, 92, 92, 91, 93, 92, 92, 91, 91, + 92, 92, 93, 93, 95, 95, 28, 29, 31, 31, 30, 30, 32, 34, 28, 28, + 29, 30, 32, 34, 35, 36, 38, 38, 38, 38, 38, 38, 38, 38, 35, 36, + 37, 38, 39, 39, 39, 39, 37, 38, 40, 40, 38, 38, 40, 41, 38, 39, + 41, 41, 39, 39, 41, 42, 39, 39, 40, 40, 40, 40, 39, 39, 41, 41, + 41, 42, 44, 44, 43, 41, 46, 43, 39, 34, 29, 25, 22, 21, 22, 19, + 14, 13, 14, 18, 20, 20, 30, 18, 17, 17, 13, 17, 23, 16, 23, 18, + 6, 6, 20, 21, 17, 24, 17, 18, 24, 22, 12, 16, 22, 17, 18, 15, + 14, 16, 16, 13, 14, 19, 19, 27, 21, 28, 22, 11, 22, 23, 19, 26, + 19, 23, 14, 25, 19, 21, 18, 25, 24, 18, 25, 36, 33, 20, 25, 27, + 25, 36, 62, 71, 64, 63, 65, 66, 66, 67, 68, 69, 71, 72, 67, 64, + 76, 69, 68, 63, 58, 0, 11, 50, 61, 72, 85, 86, 93, 91, 88, 76, + 82, 93, 91, 88, 92, 90, 89, 90, 83, 92, 92, 83, 90, 87, 86, 87, + 88, 89, 90, 90, 90, 90, 91, 92, 92, 93, 93, 92, 92, 91, 93, 92, + 92, 91, 91, 92, 92, 93, 92, 94, 95, 25, 27, 29, 29, 28, 29, 30, + 32, 29, 30, 31, 33, 34, 34, 34, 34, 40, 39, 37, 37, 36, 37, 38, + 39, 36, 36, 36, 37, 38, 39, 40, 41, 36, 39, 40, 40, 38, 38, 39, + 42, 38, 39, 41, 41, 39, 39, 41, 42, 40, 40, 41, 41, 41, 41, 40, + 40, 42, 41, 41, 43, 44, 43, 38, 34, 33, 30, 25, 20, 16, 15, 15, + 15, 20, 21, 21, 19, 18, 19, 21, 20, 26, 18, 20, 22, 17, 22, 31, + 27, 16, 17, 13, 12, 18, 15, 17, 28, 17, 19, 26, 24, 14, 18, 25, + 20, 22, 19, 18, 19, 19, 16, 16, 21, 22, 31, 26, 35, 29, 18, 27, + 27, 22, 28, 17, 25, 16, 31, 21, 22, 20, 24, 27, 26, 25, 26, 30, + 30, 32, 28, 18, 24, 49, 61, 61, 64, 67, 68, 68, 68, 68, 68, 70, + 70, 70, 66, 77, 68, 67, 61, 56, 0, 12, 51, 62, 72, 85, 86, 93, + 91, 87, 76, 83, 93, 91, 88, 92, 90, 89, 90, 83, 92, 92, 83, 90, + 87, 86, 87, 88, 89, 90, 91, 91, 90, 91, 92, 92, 93, 93, 92, 92, + 91, 93, 92, 92, 91, 91, 92, 92, 93, 91, 94, 95, 25, 27, 29, 29, + 29, 29, 31, 33, 31, 32, 33, 35, 35, 34, 33, 32, 37, 35, 33, 31, + 31, 33, 37, 38, 37, 37, 36, 37, 38, 40, 42, 43, 38, 39, 41, 40, + 38, 37, 39, 40, 38, 39, 41, 41, 39, 39, 41, 44, 44, 45, 43, 44, + 42, 41, 39, 38, 39, 39, 40, 42, 42, 40, 33, 28, 20, 18, 14, 12, + 11, 14, 17, 19, 8, 14, 20, 24, 24, 23, 28, 29, 19, 16, 24, 27, + 20, 19, 22, 16, 11, 18, 20, 17, 16, 8, 11, 26, 16, 15, 25, 23, + 14, 18, 26, 21, 30, 26, 24, 28, 27, 23, 23, 26, 25, 32, 26, 37, + 35, 25, 32, 29, 26, 30, 18, 28, 18, 35, 22, 22, 26, 26, 33, 38, + 30, 19, 25, 40, 30, 33, 25, 21, 30, 42, 55, 73, 72, 72, 71, 68, + 68, 67, 68, 68, 74, 69, 78, 68, 66, 60, 56, 0, 15, 54, 62, 74, + 85, 86, 95, 91, 89, 76, 84, 94, 91, 87, 91, 90, 89, 90, 83, 92, + 92, 83, 90, 87, 86, 87, 90, 91, 92, 93, 93, 93, 91, 92, 92, 93, + 93, 92, 92, 91, 93, 92, 92, 91, 91, 92, 92, 93, 90, 92, 94, 30, + 30, 30, 30, 31, 32, 33, 33, 33, 33, 33, 32, 31, 33, 37, 38, 33, + 31, 31, 32, 34, 35, 37, 39, 35, 37, 38, 40, 41, 42, 45, 43, 43, + 42, 41, 41, 39, 38, 37, 35, 41, 40, 38, 37, 39, 40, 43, 45, 45, + 46, 45, 43, 42, 38, 36, 35, 44, 32, 37, 49, 43, 32, 24, 14, 19, + 16, 14, 15, 17, 16, 12, 8, 9, 13, 19, 22, 22, 23, 31, 34, 24, + 20, 26, 46, 18, 28, 29, 29, 20, 29, 17, 22, 26, 15, 22, 25, 13, + 24, 29, 19, 16, 23, 26, 18, 35, 30, 33, 35, 25, 24, 28, 23, 27, + 34, 30, 27, 33, 30, 26, 33, 38, 34, 30, 29, 31, 34, 36, 35, 22, + 31, 34, 29, 25, 25, 27, 25, 23, 26, 31, 31, 28, 30, 50, 69, 79, + 67, 62, 67, 74, 73, 67, 66, 71, 68, 69, 71, 62, 68, 57, 0, 20, + 57, 66, 79, 89, 88, 94, 88, 90, 71, 84, 90, 91, 96, 89, 93, 89, + 83, 90, 92, 87, 89, 94, 90, 92, 92, 95, 95, 95, 94, 93, 93, 91, + 92, 92, 92, 92, 91, 90, 89, 93, 93, 93, 92, 92, 91, 91, 91, 89, + 89, 92, 30, 30, 29, 28, 28, 28, 29, 29, 33, 33, 34, 33, 32, 33, + 36, 36, 31, 29, 29, 30, 32, 35, 37, 37, 37, 37, 40, 41, 44, 44, + 47, 45, 45, 42, 42, 40, 37, 37, 35, 36, 38, 38, 39, 38, 40, 41, + 44, 47, 52, 52, 51, 47, 44, 40, 38, 37, 35, 32, 38, 43, 31, 23, + 22, 15, 20, 16, 14, 15, 18, 19, 17, 15, 16, 16, 19, 22, 24, 26, + 27, 24, 23, 18, 28, 30, 25, 21, 32, 34, 22, 31, 20, 25, 28, 15, + 20, 22, 12, 18, 22, 19, 23, 30, 33, 29, 30, 26, 33, 34, 27, 29, + 34, 29, 27, 32, 30, 27, 33, 29, 28, 34, 34, 30, 26, 29, 32, 34, + 30, 28, 36, 36, 35, 31, 31, 32, 29, 22, 23, 26, 30, 32, 29, 30, + 42, 56, 69, 75, 76, 71, 69, 74, 73, 68, 70, 69, 71, 73, 66, 71, + 59, 0, 20, 58, 65, 79, 91, 89, 96, 91, 92, 73, 85, 91, 91, 95, + 87, 88, 89, 84, 90, 92, 87, 89, 94, 90, 91, 92, 92, 93, 94, 93, + 92, 91, 94, 93, 93, 93, 93, 92, 91, 90, 93, 93, 93, 92, 92, 91, + 91, 91, 89, 89, 90, 32, 31, 30, 29, 28, 28, 28, 28, 33, 34, 35, + 35, 33, 33, 34, 34, 31, 29, 31, 32, 34, 35, 37, 37, 38, 38, 40, + 41, 44, 44, 47, 45, 45, 41, 40, 37, 35, 36, 36, 37, 36, 37, 40, + 40, 42, 42, 44, 46, 55, 55, 52, 47, 44, 40, 38, 38, 34, 35, 40, + 34, 18, 14, 20, 16, 19, 15, 14, 15, 18, 21, 22, 22, 21, 19, 19, + 23, 26, 27, 23, 17, 22, 18, 26, 12, 30, 14, 30, 37, 19, 29, 20, + 26, 29, 16, 22, 23, 14, 13, 16, 20, 28, 32, 33, 32, 28, 24, 30, + 32, 27, 29, 35, 30, 27, 32, 28, 24, 30, 26, 24, 31, 28, 26, 24, + 29, 33, 32, 27, 22, 42, 38, 33, 30, 35, 35, 28, 16, 23, 25, 28, + 32, 31, 27, 32, 39, 49, 71, 80, 69, 61, 69, 71, 65, 70, 69, 72, + 75, 68, 72, 59, 0, 19, 58, 65, 79, 92, 90, 97, 92, 93, 74, 86, + 91, 91, 94, 86, 87, 90, 84, 90, 93, 86, 87, 94, 90, 91, 91, 92, + 93, 94, 93, 93, 91, 95, 94, 94, 94, 94, 93, 92, 91, 93, 93, 93, + 92, 92, 91, 91, 91, 89, 89, 90, 33, 33, 32, 31, 31, 31, 32, 32, + 32, 34, 36, 36, 34, 33, 33, 32, 31, 29, 31, 32, 34, 35, 37, 37, + 37, 39, 41, 42, 44, 45, 47, 45, 45, 41, 39, 36, 34, 36, 36, 38, + 35, 36, 40, 41, 44, 43, 45, 46, 53, 52, 49, 45, 42, 39, 38, 38, + 38, 39, 38, 22, 7, 14, 25, 20, 19, 16, 15, 15, 18, 21, 23, 25, + 20, 20, 21, 24, 25, 24, 20, 14, 20, 23, 20, 10, 29, 16, 22, 36, + 17, 28, 20, 27, 32, 19, 23, 26, 20, 13, 12, 20, 27, 27, 26, 28, + 31, 26, 32, 32, 24, 28, 34, 28, 24, 29, 25, 21, 26, 22, 20, 27, + 23, 27, 29, 30, 31, 30, 31, 30, 39, 34, 29, 26, 30, 29, 23, 16, + 24, 23, 25, 29, 30, 28, 27, 30, 33, 56, 72, 67, 63, 67, 68, 65, + 70, 69, 72, 76, 67, 72, 58, 0, 19, 58, 65, 80, 92, 90, 98, 93, + 93, 73, 86, 91, 91, 94, 87, 88, 88, 85, 91, 93, 86, 87, 94, 89, + 93, 93, 94, 95, 96, 96, 95, 94, 93, 93, 94, 94, 93, 92, 91, 91, + 93, 93, 93, 92, 92, 91, 91, 91, 90, 90, 90, 31, 31, 31, 31, 32, + 33, 35, 36, 32, 34, 36, 36, 34, 33, 33, 32, 31, 31, 31, 32, 34, + 35, 37, 37, 38, 39, 40, 40, 42, 43, 45, 45, 45, 41, 39, 36, 35, + 37, 37, 39, 35, 36, 40, 42, 44, 44, 46, 47, 48, 48, 46, 44, 43, + 40, 39, 40, 42, 33, 27, 11, 2, 14, 26, 20, 20, 18, 17, 16, 17, + 19, 21, 24, 14, 19, 24, 25, 22, 20, 19, 18, 17, 26, 12, 19, 20, + 21, 10, 28, 18, 29, 20, 27, 30, 17, 20, 23, 22, 15, 14, 19, 23, + 22, 23, 24, 29, 23, 29, 29, 21, 25, 32, 27, 20, 26, 23, 20, 23, + 19, 18, 24, 17, 25, 30, 29, 25, 25, 32, 38, 31, 29, 28, 26, 25, + 22, 21, 22, 26, 22, 21, 26, 29, 29, 27, 29, 31, 41, 57, 69, 73, + 68, 68, 69, 68, 69, 72, 76, 66, 71, 57, 0, 20, 59, 66, 80, 93, + 90, 98, 93, 90, 71, 84, 90, 91, 95, 89, 90, 89, 84, 92, 94, 86, + 87, 94, 89, 90, 91, 94, 95, 95, 95, 95, 95, 92, 92, 92, 92, 92, + 91, 90, 89, 93, 93, 93, 92, 92, 91, 91, 91, 90, 90, 91, 27, 27, + 28, 29, 30, 32, 34, 35, 33, 34, 35, 35, 33, 33, 34, 36, 33, 31, + 31, 32, 34, 35, 37, 37, 39, 39, 40, 41, 43, 43, 45, 43, 43, 41, + 40, 38, 37, 39, 38, 39, 36, 37, 40, 41, 44, 44, 47, 49, 49, 49, + 49, 47, 46, 44, 42, 40, 38, 22, 15, 7, 2, 14, 26, 18, 21, 19, + 19, 19, 18, 18, 20, 23, 14, 20, 25, 26, 21, 19, 20, 21, 17, 22, + 9, 24, 15, 22, 8, 20, 23, 32, 22, 26, 29, 15, 18, 21, 20, 19, + 18, 19, 21, 23, 26, 25, 25, 20, 26, 27, 20, 24, 34, 30, 20, 26, + 24, 20, 24, 21, 20, 27, 14, 21, 29, 27, 22, 22, 29, 36, 28, 27, + 30, 28, 24, 20, 24, 31, 28, 22, 20, 24, 29, 28, 29, 30, 28, 28, + 36, 56, 67, 67, 66, 68, 68, 67, 71, 73, 64, 68, 54, 0, 22, 60, + 67, 81, 93, 90, 97, 92, 89, 71, 84, 90, 92, 96, 90, 91, 90, 85, + 92, 94, 87, 87, 94, 89, 87, 88, 91, 92, 93, 93, 93, 93, 91, 91, + 92, 92, 91, 91, 90, 89, 93, 93, 93, 92, 92, 91, 91, 91, 91, 91, + 91, 29, 29, 29, 29, 30, 32, 33, 34, 33, 33, 34, 33, 32, 33, 36, + 38, 33, 33, 33, 34, 36, 37, 37, 37, 40, 40, 41, 41, 43, 43, 43, + 43, 42, 41, 42, 41, 40, 41, 39, 40, 37, 37, 39, 40, 43, 44, 48, + 49, 47, 49, 49, 49, 46, 42, 39, 35, 29, 12, 9, 12, 10, 15, 24, + 19, 20, 20, 22, 22, 21, 21, 22, 24, 22, 23, 25, 25, 23, 22, 22, + 20, 20, 11, 12, 20, 13, 14, 16, 15, 20, 29, 17, 22, 28, 16, 21, + 25, 19, 25, 25, 18, 17, 23, 26, 22, 25, 19, 23, 23, 18, 22, 30, + 28, 18, 25, 22, 19, 24, 21, 18, 25, 15, 18, 23, 24, 23, 22, 23, + 24, 29, 28, 30, 30, 25, 19, 23, 32, 25, 22, 22, 27, 30, 27, 26, + 30, 26, 27, 27, 36, 50, 63, 65, 63, 69, 67, 69, 71, 61, 65, 53, + 0, 24, 62, 69, 81, 93, 89, 96, 91, 91, 72, 85, 91, 91, 95, 88, + 89, 91, 85, 91, 93, 85, 85, 92, 87, 87, 88, 89, 90, 93, 93, 93, + 93, 92, 92, 93, 93, 92, 91, 91, 90, 93, 93, 93, 92, 92, 91, 91, + 91, 91, 91, 91, 33, 33, 32, 32, 32, 33, 34, 35, 33, 33, 33, 32, + 31, 33, 37, 40, 33, 33, 33, 34, 36, 37, 37, 37, 40, 40, 41, 41, + 43, 43, 43, 43, 42, 42, 43, 43, 42, 42, 40, 40, 38, 38, 39, 39, + 42, 44, 49, 50, 44, 46, 48, 48, 44, 40, 33, 30, 21, 8, 12, 22, + 21, 19, 24, 22, 18, 20, 24, 25, 23, 23, 25, 27, 30, 27, 24, 25, + 26, 26, 24, 18, 23, 1, 17, 13, 16, 7, 26, 14, 14, 23, 12, 19, + 28, 19, 28, 33, 16, 27, 29, 14, 12, 18, 23, 15, 29, 23, 24, 23, + 16, 19, 26, 23, 16, 21, 18, 16, 21, 19, 17, 24, 20, 19, 22, 26, + 29, 28, 21, 15, 31, 27, 26, 28, 23, 18, 21, 29, 24, 21, 25, 28, + 31, 26, 24, 27, 30, 35, 31, 24, 38, 64, 72, 64, 69, 67, 66, 69, + 58, 64, 52, 0, 25, 63, 69, 82, 93, 89, 95, 90, 93, 74, 86, 91, + 91, 94, 86, 87, 91, 86, 91, 93, 85, 85, 92, 87, 89, 90, 91, 92, + 95, 96, 96, 96, 93, 94, 94, 94, 94, 93, 92, 91, 93, 93, 93, 92, + 92, 91, 91, 91, 91, 91, 91, 27, 32, 33, 30, 29, 32, 33, 32, 34, + 34, 34, 35, 35, 36, 36, 36, 38, 37, 36, 35, 35, 35, 38, 38, 34, + 39, 42, 42, 44, 46, 45, 40, 43, 40, 40, 41, 40, 37, 35, 39, 38, + 36, 37, 37, 41, 42, 44, 43, 48, 50, 47, 41, 41, 42, 30, 12, 12, + 14, 14, 16, 19, 23, 25, 26, 25, 21, 19, 19, 22, 24, 23, 23, 24, + 30, 32, 26, 21, 22, 21, 15, 27, 16, 12, 14, 18, 17, 16, 16, 18, + 17, 20, 22, 22, 20, 24, 30, 30, 25, 31, 29, 21, 17, 24, 20, 27, + 23, 23, 26, 24, 20, 22, 28, 20, 25, 25, 19, 16, 19, 25, 27, 19, + 24, 26, 25, 26, 29, 26, 25, 31, 34, 20, 29, 31, 28, 33, 24, 18, + 26, 28, 24, 29, 24, 21, 31, 30, 28, 25, 24, 31, 41, 56, 65, 70, + 65, 63, 82, 58, 63, 38, 0, 26, 61, 68, 83, 94, 87, 94, 91, 90, + 76, 89, 91, 90, 96, 90, 89, 87, 87, 89, 88, 87, 85, 85, 86, 92, + 92, 93, 92, 92, 91, 90, 90, 93, 93, 93, 92, 92, 91, 91, 91, 92, + 92, 92, 92, 92, 92, 92, 92, 94, 93, 93, 27, 32, 33, 30, 29, 32, + 33, 32, 34, 34, 34, 35, 35, 36, 36, 36, 35, 35, 35, 35, 35, 36, + 40, 40, 36, 40, 42, 41, 42, 45, 45, 41, 44, 40, 40, 41, 40, 37, + 36, 39, 35, 36, 39, 41, 45, 45, 48, 47, 41, 45, 48, 45, 38, 29, + 16, 5, 14, 15, 16, 18, 21, 22, 24, 24, 23, 21, 20, 20, 21, 22, + 23, 24, 15, 22, 25, 23, 20, 24, 24, 19, 22, 15, 11, 14, 16, 15, + 14, 15, 22, 21, 20, 23, 23, 22, 26, 31, 31, 30, 36, 38, 28, 25, + 27, 20, 25, 21, 25, 27, 26, 21, 21, 26, 21, 24, 24, 22, 24, 28, + 28, 23, 23, 26, 27, 25, 25, 28, 25, 24, 32, 34, 23, 28, 32, 25, + 31, 21, 28, 34, 30, 29, 36, 32, 27, 33, 23, 26, 26, 26, 24, 31, + 43, 53, 73, 67, 63, 77, 58, 70, 41, 0, 26, 61, 68, 84, 95, 88, + 93, 91, 89, 75, 89, 91, 90, 96, 90, 90, 86, 86, 88, 88, 87, 86, + 86, 87, 90, 90, 92, 92, 92, 92, 92, 92, 93, 93, 93, 92, 92, 91, + 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 92, 28, 32, 34, + 30, 29, 32, 34, 32, 34, 34, 34, 35, 35, 36, 36, 36, 36, 36, 36, + 37, 38, 39, 41, 42, 38, 41, 41, 39, 40, 44, 44, 41, 44, 40, 40, + 42, 40, 37, 36, 39, 33, 36, 42, 44, 45, 44, 47, 47, 43, 40, 40, + 37, 28, 13, 5, 6, 15, 17, 16, 18, 20, 21, 23, 22, 20, 21, 23, + 22, 20, 20, 23, 26, 13, 19, 23, 23, 21, 24, 26, 22, 18, 14, 14, + 17, 17, 16, 16, 19, 24, 21, 19, 21, 23, 21, 23, 26, 31, 30, 39, + 43, 34, 31, 31, 21, 22, 21, 27, 29, 28, 24, 23, 26, 23, 24, 23, + 24, 30, 35, 32, 23, 27, 30, 29, 25, 22, 25, 26, 23, 31, 34, 22, + 27, 29, 24, 29, 20, 30, 31, 25, 25, 35, 34, 27, 28, 20, 27, 30, + 29, 22, 23, 31, 39, 67, 66, 65, 72, 57, 75, 39, 0, 26, 62, 69, + 85, 96, 88, 93, 90, 88, 73, 88, 90, 90, 96, 91, 91, 84, 85, 87, + 87, 86, 85, 87, 88, 86, 86, 89, 90, 90, 91, 94, 94, 93, 93, 92, + 92, 92, 92, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 91, 91, 92, + 28, 33, 34, 31, 30, 32, 34, 32, 34, 34, 34, 35, 35, 36, 36, 36, + 37, 36, 36, 37, 38, 39, 40, 41, 39, 42, 41, 38, 39, 43, 44, 42, + 44, 40, 41, 42, 40, 38, 36, 39, 35, 38, 42, 42, 42, 40, 44, 44, + 52, 39, 27, 21, 13, 3, 6, 16, 17, 19, 18, 20, 20, 21, 22, 21, + 18, 21, 25, 24, 20, 20, 23, 28, 21, 24, 27, 27, 24, 24, 24, 24, + 19, 16, 20, 23, 22, 18, 21, 25, 28, 24, 21, 23, 24, 22, 23, 25, + 30, 32, 41, 44, 38, 37, 37, 26, 23, 24, 27, 27, 27, 24, 27, 29, + 26, 29, 29, 28, 31, 35, 33, 26, 27, 27, 26, 22, 22, 24, 25, 25, + 29, 33, 23, 27, 29, 22, 29, 21, 23, 28, 23, 23, 31, 32, 26, 31, + 26, 28, 31, 28, 24, 24, 27, 32, 51, 60, 68, 67, 55, 73, 29, 0, + 26, 62, 70, 86, 97, 88, 93, 89, 86, 72, 87, 90, 90, 97, 91, 91, + 83, 85, 87, 87, 86, 86, 88, 89, 87, 87, 89, 90, 90, 91, 93, 93, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 90, 91, 91, 29, 33, 35, 31, 30, 33, 34, 33, 34, 34, 34, 35, 35, + 36, 36, 36, 39, 38, 38, 37, 37, 38, 38, 39, 40, 42, 40, 36, 37, + 41, 41, 41, 45, 41, 41, 43, 41, 38, 37, 40, 38, 39, 40, 40, 41, + 41, 46, 47, 51, 31, 17, 11, 9, 5, 12, 24, 18, 18, 21, 22, 23, + 23, 23, 22, 18, 21, 26, 25, 22, 21, 24, 29, 26, 27, 29, 30, 26, + 22, 22, 23, 22, 20, 23, 27, 25, 21, 24, 28, 33, 30, 27, 28, 28, + 25, 26, 28, 30, 32, 38, 39, 35, 40, 44, 33, 29, 28, 28, 24, 24, + 25, 30, 33, 31, 35, 35, 29, 27, 28, 32, 31, 25, 25, 24, 21, 22, + 25, 27, 25, 26, 31, 23, 28, 30, 23, 32, 25, 23, 32, 31, 28, 34, + 34, 33, 41, 33, 28, 26, 24, 26, 27, 28, 29, 34, 51, 70, 67, 56, + 71, 19, 0, 28, 63, 71, 86, 96, 88, 93, 89, 86, 72, 86, 89, 89, + 96, 91, 91, 82, 83, 85, 85, 86, 86, 87, 88, 89, 89, 91, 90, 90, + 89, 89, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 90, 91, 91, 29, 33, 35, 32, 31, 33, 35, 33, 34, 34, + 34, 35, 35, 36, 36, 36, 40, 39, 38, 37, 37, 37, 37, 38, 39, 42, + 40, 38, 38, 41, 41, 38, 45, 41, 42, 43, 41, 39, 37, 40, 39, 37, + 38, 39, 44, 46, 48, 46, 33, 22, 15, 13, 15, 15, 18, 20, 17, 20, + 22, 24, 24, 25, 25, 23, 20, 22, 26, 27, 26, 25, 27, 29, 25, 25, + 27, 30, 26, 22, 22, 25, 25, 22, 22, 26, 27, 24, 23, 28, 31, 28, + 28, 28, 25, 21, 23, 30, 35, 33, 39, 35, 32, 42, 47, 36, 34, 33, + 32, 24, 24, 27, 32, 35, 34, 38, 38, 30, 26, 26, 31, 32, 23, 25, + 26, 21, 23, 27, 29, 27, 24, 31, 23, 30, 31, 25, 34, 27, 25, 35, + 34, 32, 36, 34, 36, 47, 35, 27, 20, 20, 23, 27, 27, 26, 27, 40, + 66, 66, 60, 71, 12, 0, 30, 65, 71, 85, 95, 87, 94, 91, 86, 72, + 86, 89, 89, 95, 90, 90, 83, 83, 85, 85, 86, 85, 86, 87, 90, 90, + 91, 90, 90, 89, 88, 88, 91, 91, 92, 92, 92, 92, 93, 93, 92, 92, + 92, 92, 92, 92, 92, 92, 91, 91, 92, 29, 34, 35, 32, 31, 34, 35, + 34, 34, 34, 34, 35, 35, 36, 36, 36, 38, 39, 38, 38, 37, 38, 39, + 39, 38, 42, 41, 39, 39, 41, 40, 36, 45, 41, 42, 43, 42, 39, 37, + 40, 40, 37, 37, 39, 45, 43, 39, 31, 10, 12, 15, 14, 14, 16, 19, + 19, 18, 19, 23, 25, 28, 29, 29, 27, 23, 23, 25, 28, 29, 30, 29, + 29, 27, 26, 28, 32, 29, 23, 23, 27, 34, 27, 23, 28, 30, 28, 27, + 29, 29, 30, 33, 32, 26, 21, 25, 36, 40, 39, 43, 37, 33, 42, 45, + 31, 34, 35, 34, 29, 27, 30, 34, 33, 33, 36, 36, 31, 30, 32, 33, + 29, 27, 28, 29, 26, 27, 30, 30, 27, 25, 32, 25, 30, 31, 23, 33, + 28, 30, 34, 30, 28, 34, 34, 33, 40, 33, 28, 23, 23, 23, 25, 23, + 23, 27, 29, 52, 57, 61, 71, 5, 0, 33, 66, 70, 84, 93, 87, 94, + 93, 87, 73, 87, 89, 88, 94, 88, 88, 85, 84, 86, 86, 86, 85, 85, + 86, 88, 88, 88, 88, 90, 90, 90, 90, 91, 91, 91, 92, 92, 93, 93, + 93, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 92, 29, 32, 35, 30, + 31, 32, 35, 32, 34, 32, 34, 33, 35, 34, 36, 36, 36, 37, 37, 38, + 38, 39, 41, 42, 37, 42, 42, 40, 40, 41, 39, 35, 44, 42, 40, 41, + 42, 39, 37, 41, 41, 37, 36, 38, 43, 37, 24, 12, 1, 12, 19, 10, + 8, 15, 21, 23, 17, 20, 25, 28, 32, 33, 33, 31, 29, 25, 29, 30, + 36, 35, 34, 32, 37, 34, 36, 40, 36, 29, 28, 32, 44, 34, 30, 33, + 36, 35, 34, 33, 40, 42, 45, 44, 35, 30, 38, 49, 45, 44, 48, 41, + 36, 46, 45, 29, 34, 39, 40, 34, 33, 36, 37, 34, 32, 35, 32, 32, + 36, 40, 36, 29, 32, 36, 37, 32, 32, 32, 32, 28, 31, 38, 28, 34, + 31, 25, 34, 29, 37, 37, 29, 27, 35, 36, 30, 33, 29, 29, 31, 28, + 25, 21, 22, 24, 26, 20, 36, 46, 57, 70, 0, 0, 30, 64, 69, 81, + 90, 86, 94, 94, 88, 74, 87, 89, 88, 94, 87, 87, 87, 87, 89, 88, + 86, 85, 85, 86, 86, 88, 89, 90, 90, 93, 94, 94, 91, 91, 91, 92, + 92, 93, 93, 93, 92, 92, 92, 92, 92, 92, 92, 92, 94, 93, 93, 29, + 26, 28, 26, 29, 29, 33, 32, 35, 29, 29, 31, 34, 30, 30, 32, 36, + 42, 38, 36, 42, 40, 36, 42, 42, 45, 45, 42, 43, 46, 47, 42, 35, + 37, 40, 39, 38, 37, 39, 39, 43, 39, 37, 39, 36, 26, 15, 11, 16, + 19, 19, 15, 17, 18, 21, 23, 27, 25, 32, 34, 33, 40, 46, 38, 34, + 41, 42, 36, 44, 45, 43, 48, 47, 49, 48, 47, 48, 49, 42, 33, 62, + 40, 44, 53, 42, 40, 46, 39, 58, 47, 42, 46, 50, 49, 47, 51, 58, + 47, 42, 43, 49, 51, 49, 48, 55, 51, 45, 41, 44, 44, 43, 42, 42, + 44, 44, 41, 36, 35, 36, 40, 44, 42, 42, 34, 30, 43, 47, 31, 40, + 32, 39, 48, 34, 24, 26, 30, 37, 33, 30, 29, 30, 31, 31, 31, 37, + 32, 25, 21, 23, 23, 21, 19, 30, 22, 25, 34, 42, 44, 23, 0, 34, + 61, 74, 76, 85, 89, 85, 88, 92, 75, 89, 91, 89, 93, 87, 90, 88, + 87, 89, 89, 87, 89, 91, 92, 89, 91, 91, 92, 92, 95, 95, 95, 95, + 94, 92, 90, 89, 89, 89, 90, 92, 92, 92, 92, 92, 92, 92, 92, 94, + 94, 93, 32, 29, 29, 28, 29, 31, 32, 33, 33, 28, 27, 31, 32, 30, + 29, 32, 34, 42, 38, 36, 42, 40, 37, 42, 38, 41, 42, 39, 39, 43, + 43, 38, 40, 38, 39, 39, 38, 38, 40, 41, 37, 40, 40, 32, 16, 5, + 11, 25, 25, 26, 22, 20, 19, 21, 22, 25, 33, 28, 35, 41, 39, 42, + 47, 41, 55, 62, 57, 50, 56, 59, 61, 67, 55, 56, 56, 56, 59, 62, + 59, 52, 56, 42, 47, 55, 50, 56, 65, 59, 51, 51, 57, 67, 69, 65, + 63, 66, 65, 63, 64, 62, 60, 54, 59, 63, 58, 54, 55, 54, 59, 58, + 58, 56, 57, 59, 60, 57, 56, 56, 58, 61, 42, 42, 52, 54, 51, 55, + 52, 34, 52, 42, 46, 55, 45, 40, 43, 45, 37, 33, 32, 30, 30, 30, + 28, 26, 26, 27, 27, 30, 32, 30, 26, 23, 23, 24, 32, 32, 25, 30, + 32, 26, 38, 53, 63, 74, 87, 89, 85, 90, 87, 75, 93, 95, 91, 94, + 89, 93, 90, 89, 91, 91, 89, 89, 93, 94, 91, 91, 93, 94, 94, 95, + 96, 95, 97, 94, 92, 91, 90, 90, 90, 91, 92, 92, 92, 92, 92, 92, + 92, 92, 94, 93, 92, 33, 30, 30, 29, 29, 30, 31, 31, 33, 28, 27, + 31, 33, 30, 29, 33, 34, 42, 38, 36, 43, 41, 37, 42, 37, 40, 41, + 38, 38, 42, 42, 37, 43, 41, 40, 39, 39, 39, 40, 41, 40, 37, 31, + 19, 4, 0, 11, 30, 27, 25, 20, 17, 19, 20, 23, 25, 38, 29, 36, + 46, 47, 51, 64, 68, 67, 80, 85, 85, 90, 86, 77, 76, 79, 80, 80, + 80, 83, 87, 84, 78, 88, 80, 78, 73, 64, 69, 72, 63, 72, 78, 88, + 96, 97, 94, 96, 103, 104, 102, 104, 102, 98, 91, 93, 97, 112, 110, 109, + 106, 105, 98, 92, 87, 79, 81, 82, 81, 80, 78, 80, 81, 74, 67, 70, + 70, 65, 68, 71, 64, 62, 49, 50, 57, 50, 49, 53, 51, 41, 42, 46, + 48, 48, 43, 34, 28, 38, 36, 31, 27, 24, 24, 25, 24, 23, 25, 33, + 29, 17, 22, 37, 41, 41, 49, 55, 69, 86, 88, 84, 91, 81, 72, 94, + 96, 89, 93, 90, 93, 90, 89, 91, 91, 89, 89, 93, 94, 91, 91, 94, + 94, 94, 94, 96, 95, 97, 94, 93, 92, 91, 91, 91, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 93, 93, 92, 31, 28, 28, 28, 27, 27, 28, 28, + 33, 28, 27, 31, 33, 31, 30, 34, 35, 42, 39, 37, 43, 41, 37, 43, + 40, 43, 43, 41, 41, 45, 45, 42, 44, 39, 38, 35, 38, 38, 39, 40, + 45, 28, 12, 8, 10, 13, 17, 23, 24, 21, 18, 21, 24, 25, 26, 29, + 40, 30, 38, 55, 63, 76, 101, 116, 132, 149, 156, 158, 164, 159, 148, 146, + 148, 150, 150, 149, 150, 151, 145, 136, 142, 143, 141, 133, 130, 140, 144, 136, + 146, 148, 149, 149, 149, 152, 160, 168, 169, 163, 162, 163, 167, 160, 157, 153, + 158, 156, 160, 159, 161, 157, 156, 154, 156, 157, 157, 155, 152, 149, 148, 146, + 148, 134, 130, 130, 122, 121, 127, 127, 120, 104, 99, 100, 96, 94, 95, 91, + 98, 86, 67, 52, 45, 44, 48, 51, 49, 45, 42, 36, 30, 27, 26, 26, + 31, 24, 28, 29, 26, 29, 32, 25, 33, 46, 50, 55, 73, 82, 85, 91, + 81, 73, 89, 91, 87, 94, 90, 90, 90, 89, 91, 91, 89, 89, 93, 94, + 92, 92, 94, 94, 94, 94, 95, 94, 97, 94, 94, 93, 93, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 91, 30, 30, 30, 30, 30, + 30, 29, 29, 35, 30, 30, 34, 36, 34, 33, 35, 35, 43, 39, 37, 43, + 41, 38, 43, 41, 44, 45, 42, 43, 46, 46, 43, 45, 40, 40, 38, 42, + 41, 41, 40, 35, 18, 4, 7, 18, 22, 18, 15, 23, 23, 23, 29, 32, + 30, 32, 35, 42, 41, 57, 81, 95, 115, 140, 154, 157, 167, 160, 154, 161, + 167, 171, 179, 187, 190, 192, 192, 193, 191, 182, 172, 182, 190, 187, 178, 180, + 188, 190, 188, 191, 188, 183, 179, 181, 187, 194, 198, 190, 188, 192, 193, 192, + 184, 185, 187, 191, 188, 188, 184, 183, 179, 180, 180, 179, 177, 175, 174, 172, + 171, 168, 167, 180, 171, 178, 183, 172, 164, 162, 157, 175, 158, 151, 151, 147, + 147, 146, 139, 135, 129, 117, 104, 91, 78, 65, 55, 45, 46, 49, 51, 48, + 44, 39, 34, 36, 23, 24, 29, 27, 28, 27, 18, 21, 43, 45, 37, 50, + 69, 81, 88, 85, 72, 85, 85, 84, 95, 91, 88, 90, 89, 91, 91, 89, + 89, 93, 94, 92, 92, 94, 94, 94, 94, 95, 94, 96, 94, 94, 94, 93, + 93, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 91, 91, 90, 33, 31, + 32, 33, 33, 33, 32, 32, 34, 30, 30, 34, 36, 35, 34, 36, 38, 43, + 39, 37, 44, 42, 38, 44, 40, 43, 43, 40, 41, 44, 44, 42, 45, 43, + 42, 43, 45, 44, 39, 33, 13, 10, 12, 15, 20, 15, 13, 17, 20, 20, + 25, 31, 31, 27, 30, 40, 54, 66, 92, 117, 130, 145, 161, 165, 170, 178, + 172, 166, 174, 180, 184, 193, 180, 184, 187, 188, 191, 191, 183, 173, 191, 200, + 194, 186, 190, 189, 186, 191, 190, 191, 190, 187, 189, 194, 196, 194, 180, 191, + 202, 201, 187, 178, 187, 202, 204, 202, 198, 193, 189, 188, 190, 194, 192, 189, + 189, 186, 188, 190, 190, 189, 184, 178, 184, 182, 173, 171, 176, 171, 181, 169, + 167, 166, 163, 164, 166, 155, 150, 154, 161, 163, 154, 136, 115, 98, 71, 62, + 50, 42, 40, 40, 38, 35, 35, 26, 28, 29, 20, 20, 28, 29, 18, 37, + 38, 27, 36, 53, 66, 76, 80, 73, 87, 85, 83, 98, 92, 88, 88, 89, + 91, 91, 89, 89, 93, 94, 93, 93, 94, 94, 94, 94, 94, 93, 94, 92, + 93, 93, 93, 93, 92, 91, 92, 92, 92, 92, 92, 92, 92, 92, 90, 90, + 90, 31, 30, 32, 33, 34, 34, 33, 32, 34, 30, 30, 34, 37, 35, 35, + 36, 38, 43, 40, 38, 44, 42, 38, 44, 39, 42, 42, 39, 40, 43, 44, + 41, 45, 43, 43, 44, 45, 39, 29, 20, 8, 12, 19, 22, 22, 13, 12, + 19, 15, 16, 23, 32, 33, 29, 41, 57, 80, 100, 125, 139, 147, 161, 171, + 162, 166, 179, 182, 181, 188, 188, 183, 186, 185, 187, 188, 189, 193, 196, 192, + 185, 185, 195, 193, 195, 206, 202, 199, 214, 198, 205, 208, 203, 200, 202, 203, + 200, 199, 205, 212, 212, 203, 197, 202, 213, 190, 192, 194, 196, 199, 204, 212, + 220, 201, 197, 195, 192, 195, 198, 200, 199, 200, 196, 196, 184, 174, 183, 196, + 190, 183, 176, 179, 179, 176, 180, 181, 170, 183, 174, 165, 157, 157, 162, 166, + 170, 133, 112, 85, 67, 58, 54, 48, 41, 37, 28, 31, 33, 22, 20, 29, + 33, 24, 28, 27, 30, 39, 37, 41, 59, 63, 65, 89, 87, 82, 92, 89, + 88, 88, 89, 91, 91, 89, 89, 93, 94, 93, 93, 95, 94, 94, 93, 94, + 93, 92, 91, 92, 93, 93, 92, 91, 90, 92, 92, 92, 92, 92, 92, 92, + 92, 90, 89, 89, 28, 27, 29, 31, 32, 32, 31, 31, 34, 30, 30, 34, + 37, 35, 35, 39, 38, 44, 40, 38, 44, 42, 38, 44, 40, 43, 43, 40, + 41, 44, 44, 42, 42, 41, 41, 42, 41, 33, 18, 7, 17, 15, 19, 25, + 27, 22, 17, 19, 18, 21, 29, 38, 41, 43, 60, 84, 106, 123, 144, 146, + 147, 165, 175, 163, 173, 182, 178, 173, 179, 182, 182, 188, 189, 189, 186, 185, + 189, 194, 193, 188, 198, 204, 198, 197, 204, 188, 179, 197, 198, 207, 210, 199, + 189, 189, 194, 197, 210, 198, 192, 197, 205, 204, 199, 195, 207, 207, 205, 199, + 193, 190, 191, 195, 209, 205, 199, 197, 197, 200, 202, 202, 193, 200, 206, 196, + 182, 189, 192, 177, 182, 179, 182, 185, 180, 183, 184, 172, 169, 167, 169, 170, + 170, 165, 159, 155, 171, 159, 144, 132, 121, 102, 74, 53, 46, 30, 31, 38, + 34, 30, 28, 22, 35, 20, 17, 35, 46, 26, 24, 47, 44, 56, 88, 87, + 76, 84, 83, 88, 88, 89, 91, 91, 89, 89, 93, 94, 93, 93, 95, 94, + 94, 93, 94, 93, 91, 90, 91, 92, 93, 92, 91, 90, 92, 92, 92, 92, + 92, 92, 92, 92, 89, 89, 89, 31, 35, 35, 32, 33, 36, 36, 34, 37, + 37, 38, 38, 38, 39, 39, 39, 43, 42, 41, 40, 39, 38, 38, 38, 44, + 42, 40, 39, 39, 41, 44, 45, 41, 42, 48, 42, 24, 17, 23, 22, 14, + 24, 32, 28, 23, 21, 16, 14, 17, 35, 44, 39, 43, 62, 94, 118, 138, + 144, 155, 163, 168, 172, 175, 177, 169, 169, 175, 182, 183, 180, 180, 184, 189, + 181, 176, 180, 191, 198, 198, 194, 195, 195, 195, 193, 191, 192, 195, 197, 196, + 197, 199, 201, 203, 204, 204, 202, 204, 198, 194, 198, 203, 203, 201, 199, 212, + 205, 212, 207, 188, 195, 209, 204, 200, 210, 213, 207, 202, 201, 197, 193, 195, + 203, 200, 187, 181, 188, 192, 190, 186, 176, 174, 176, 174, 182, 188, 181, 181, + 172, 165, 167, 176, 179, 172, 163, 161, 156, 154, 155, 156, 142, 120, 99, 68, + 49, 37, 38, 38, 28, 26, 33, 27, 28, 29, 27, 28, 30, 36, 41, 45, + 37, 45, 73, 86, 82, 78, 86, 92, 93, 90, 84, 84, 88, 93, 92, 92, + 93, 95, 94, 92, 92, 95, 96, 94, 93, 93, 93, 93, 92, 91, 90, 93, + 93, 93, 92, 92, 91, 91, 91, 92, 92, 92, 32, 35, 35, 32, 33, 36, + 37, 34, 35, 35, 35, 36, 36, 37, 37, 37, 40, 40, 39, 39, 39, 40, + 41, 42, 37, 41, 44, 45, 43, 42, 42, 42, 44, 36, 34, 27, 14, 12, + 16, 14, 19, 25, 25, 21, 22, 24, 22, 21, 29, 36, 45, 58, 79, 104, + 121, 128, 147, 154, 163, 170, 174, 178, 180, 180, 173, 168, 171, 179, 182, 180, + 180, 182, 180, 176, 174, 178, 186, 191, 189, 185, 192, 193, 194, 193, 191, 189, + 189, 190, 191, 192, 194, 196, 199, 201, 203, 204, 198, 198, 201, 203, 205, 203, + 203, 202, 205, 199, 208, 208, 199, 204, 212, 200, 203, 207, 206, 200, 198, 203, + 205, 201, 180, 196, 205, 199, 193, 190, 183, 173, 186, 178, 180, 174, 164, 164, + 174, 171, 184, 179, 176, 175, 176, 175, 168, 160, 159, 157, 152, 155, 158, 156, + 146, 133, 136, 98, 62, 49, 45, 40, 32, 27, 27, 23, 22, 29, 37, 38, + 33, 27, 38, 38, 45, 60, 75, 83, 83, 84, 84, 91, 92, 88, 85, 87, + 92, 92, 92, 93, 95, 94, 92, 92, 95, 96, 94, 93, 93, 93, 93, 92, + 91, 90, 93, 93, 93, 92, 92, 91, 91, 91, 92, 92, 92, 34, 37, 37, + 35, 35, 38, 39, 36, 37, 37, 38, 38, 38, 39, 39, 39, 37, 37, 38, + 39, 40, 42, 44, 45, 38, 42, 46, 46, 44, 42, 42, 44, 44, 29, 21, + 16, 11, 17, 22, 18, 28, 31, 29, 26, 27, 29, 28, 26, 33, 45, 59, + 82, 109, 132, 139, 136, 151, 158, 165, 172, 174, 176, 178, 178, 173, 168, 170, + 176, 180, 179, 179, 181, 176, 176, 178, 181, 184, 185, 184, 181, 187, 190, 192, + 192, 189, 186, 185, 184, 187, 188, 189, 192, 195, 199, 202, 203, 192, 196, 205, + 204, 202, 197, 198, 197, 212, 204, 207, 203, 199, 201, 205, 192, 206, 210, 212, + 213, 214, 213, 209, 203, 186, 193, 195, 188, 185, 188, 190, 188, 179, 178, 183, + 175, 160, 159, 174, 178, 171, 170, 173, 172, 172, 170, 166, 166, 168, 164, 161, + 160, 162, 159, 154, 147, 143, 143, 132, 105, 69, 43, 36, 39, 42, 32, 25, + 26, 30, 32, 30, 25, 31, 37, 42, 45, 58, 78, 84, 82, 80, 90, 94, + 91, 86, 87, 91, 92, 92, 93, 95, 94, 92, 92, 95, 96, 94, 93, 93, + 93, 93, 92, 91, 90, 93, 93, 93, 92, 92, 91, 91, 91, 92, 92, 92, + 34, 37, 38, 35, 35, 39, 39, 36, 40, 40, 40, 41, 41, 41, 42, 42, + 38, 38, 38, 39, 41, 43, 44, 45, 46, 45, 43, 42, 42, 43, 43, 41, + 32, 16, 13, 14, 12, 22, 32, 32, 31, 34, 36, 33, 32, 29, 28, 27, + 46, 69, 95, 111, 122, 134, 142, 146, 155, 161, 168, 172, 173, 175, 176, 175, + 174, 170, 172, 175, 174, 171, 174, 179, 178, 179, 181, 181, 181, 181, 181, 182, + 182, 184, 186, 186, 184, 183, 182, 183, 186, 186, 187, 189, 191, 195, 197, 199, + 193, 200, 204, 202, 198, 196, 195, 194, 218, 213, 207, 199, 195, 200, 205, 202, + 200, 199, 195, 194, 196, 197, 194, 189, 203, 201, 191, 176, 172, 181, 192, 197, + 182, 181, 186, 181, 165, 167, 181, 186, 171, 168, 168, 171, 173, 172, 171, 171, + 168, 168, 168, 169, 165, 159, 153, 146, 149, 148, 143, 133, 117, 97, 68, 45, + 39, 37, 34, 31, 27, 27, 29, 32, 27, 34, 40, 39, 44, 57, 72, 80, + 83, 90, 93, 90, 89, 90, 92, 89, 92, 93, 95, 94, 92, 92, 95, 96, + 94, 93, 93, 93, 93, 92, 91, 90, 93, 93, 93, 92, 92, 91, 91, 91, + 92, 92, 92, 35, 38, 38, 36, 36, 39, 40, 37, 40, 40, 41, 41, 42, + 42, 42, 42, 41, 40, 40, 40, 41, 42, 43, 43, 49, 44, 41, 42, 45, + 45, 38, 29, 12, 3, 8, 9, 9, 19, 30, 34, 26, 31, 33, 32, 30, + 29, 37, 47, 80, 103, 125, 135, 137, 142, 148, 154, 162, 166, 172, 175, 175, + 177, 177, 176, 174, 176, 180, 181, 173, 168, 172, 182, 181, 182, 181, 179, 177, + 177, 181, 184, 182, 183, 184, 183, 183, 184, 187, 190, 188, 188, 188, 188, 190, + 191, 192, 193, 199, 203, 203, 199, 199, 203, 203, 199, 205, 211, 208, 201, 201, + 207, 214, 221, 229, 219, 206, 201, 203, 207, 214, 218, 206, 205, 200, 191, 185, + 181, 179, 177, 194, 190, 191, 187, 174, 175, 183, 183, 190, 179, 172, 175, 177, + 175, 171, 171, 165, 166, 166, 167, 166, 163, 161, 159, 157, 151, 143, 136, 134, + 128, 112, 92, 42, 37, 34, 37, 40, 39, 35, 31, 27, 29, 34, 36, 33, + 35, 53, 74, 85, 90, 90, 88, 90, 93, 92, 87, 92, 93, 95, 94, 92, + 92, 95, 96, 94, 93, 93, 93, 93, 92, 91, 90, 93, 93, 93, 92, 92, + 91, 91, 91, 92, 92, 92, 35, 38, 39, 36, 36, 40, 40, 37, 38, 39, + 39, 39, 40, 40, 40, 41, 43, 42, 42, 41, 41, 41, 42, 42, 43, 41, + 42, 45, 46, 39, 25, 11, 5, 3, 11, 13, 9, 16, 27, 31, 29, 28, + 30, 34, 39, 51, 72, 89, 114, 123, 132, 139, 148, 156, 158, 153, 163, 167, + 171, 173, 175, 173, 175, 174, 176, 178, 186, 185, 180, 172, 178, 185, 184, 181, + 180, 176, 176, 175, 180, 181, 186, 184, 187, 184, 187, 187, 194, 196, 190, 189, + 191, 190, 191, 188, 189, 189, 195, 202, 202, 198, 201, 209, 211, 206, 195, 211, + 212, 207, 210, 208, 207, 215, 205, 201, 200, 203, 205, 201, 201, 203, 202, 200, + 200, 198, 195, 190, 186, 183, 193, 186, 190, 190, 183, 186, 191, 187, 190, 178, + 173, 179, 184, 181, 178, 177, 175, 169, 164, 161, 161, 164, 169, 173, 158, 161, + 162, 154, 142, 133, 132, 133, 92, 66, 41, 32, 39, 43, 38, 27, 30, 27, + 31, 33, 29, 26, 39, 58, 77, 85, 88, 89, 91, 93, 92, 87, 92, 93, + 95, 94, 92, 92, 95, 96, 94, 93, 93, 93, 93, 92, 91, 90, 93, 93, + 93, 92, 92, 91, 91, 91, 92, 92, 92, 35, 38, 39, 36, 37, 40, 40, + 37, 39, 39, 39, 40, 40, 40, 41, 41, 43, 42, 42, 41, 41, 42, 42, + 43, 40, 41, 42, 39, 33, 23, 14, 5, 11, 7, 15, 18, 12, 18, 28, + 31, 32, 29, 33, 48, 68, 88, 106, 124, 131, 134, 136, 141, 153, 162, 161, + 154, 161, 164, 168, 171, 173, 170, 173, 173, 176, 176, 182, 185, 188, 182, 184, + 186, 187, 183, 184, 181, 183, 181, 184, 182, 187, 187, 191, 189, 191, 190, 195, + 195, 192, 192, 196, 195, 196, 192, 191, 189, 193, 204, 208, 202, 201, 207, 209, + 205, 200, 216, 213, 207, 213, 209, 200, 206, 205, 207, 214, 222, 220, 209, 203, + 203, 205, 200, 197, 197, 198, 197, 199, 202, 190, 186, 194, 197, 191, 193, 199, + 195, 182, 175, 176, 185, 188, 182, 181, 185, 179, 171, 165, 162, 162, 167, 169, + 170, 179, 164, 154, 160, 167, 157, 140, 128, 139, 108, 73, 49, 41, 39, 37, + 33, 29, 30, 30, 27, 29, 32, 35, 39, 57, 75, 89, 92, 90, 89, 90, + 89, 92, 93, 95, 94, 92, 92, 95, 96, 94, 93, 93, 93, 93, 92, 91, + 90, 93, 93, 93, 92, 92, 91, 91, 91, 92, 92, 92, 35, 39, 39, 36, + 37, 40, 40, 36, 41, 39, 40, 40, 40, 41, 41, 43, 42, 42, 42, 41, + 41, 42, 43, 44, 43, 44, 40, 29, 14, 7, 9, 12, 14, 9, 15, 18, + 16, 23, 32, 32, 29, 26, 37, 63, 94, 116, 124, 130, 138, 146, 148, 149, + 152, 159, 163, 163, 165, 169, 173, 176, 176, 176, 176, 179, 174, 172, 173, 183, + 191, 191, 187, 184, 189, 188, 188, 189, 190, 190, 190, 185, 185, 188, 191, 192, + 192, 191, 191, 191, 192, 194, 197, 199, 199, 196, 193, 190, 198, 214, 224, 213, + 206, 205, 209, 204, 211, 221, 213, 204, 221, 220, 214, 219, 223, 214, 210, 205, + 200, 196, 203, 214, 210, 209, 208, 209, 205, 200, 194, 192, 200, 198, 204, 204, + 192, 190, 196, 192, 186, 184, 189, 197, 193, 180, 178, 183, 169, 165, 162, 165, + 169, 172, 169, 164, 173, 169, 168, 169, 153, 137, 140, 156, 132, 128, 118, 94, + 68, 49, 43, 45, 30, 35, 29, 21, 27, 41, 37, 23, 37, 65, 89, 94, + 87, 85, 86, 91, 92, 93, 95, 94, 92, 92, 95, 96, 92, 93, 93, 93, + 93, 92, 91, 90, 93, 93, 93, 92, 92, 91, 91, 91, 94, 94, 94, 35, + 37, 37, 37, 35, 35, 35, 33, 36, 34, 34, 35, 35, 36, 36, 38, 45, + 47, 46, 43, 42, 43, 43, 45, 48, 37, 25, 16, 15, 17, 18, 16, 11, + 13, 25, 26, 22, 29, 34, 27, 29, 42, 62, 92, 127, 135, 131, 135, 144, + 147, 152, 156, 159, 162, 166, 168, 170, 170, 171, 173, 175, 178, 181, 182, 171, + 177, 183, 184, 183, 182, 185, 189, 196, 188, 190, 192, 187, 187, 188, 176, 182, + 187, 192, 192, 188, 186, 190, 194, 186, 199, 207, 200, 188, 187, 194, 200, 201, + 202, 201, 196, 201, 207, 213, 210, 212, 206, 205, 204, 212, 213, 214, 210, 209, + 203, 207, 212, 209, 200, 199, 206, 211, 215, 215, 209, 204, 204, 204, 202, 206, + 205, 204, 201, 194, 189, 197, 206, 191, 192, 189, 183, 181, 184, 185, 181, 180, + 172, 163, 160, 166, 168, 167, 163, 169, 168, 165, 164, 159, 155, 151, 147, 149, + 147, 142, 132, 120, 101, 68, 37, 32, 36, 35, 26, 27, 33, 28, 18, 45, + 46, 58, 76, 89, 88, 85, 87, 88, 89, 91, 94, 94, 96, 96, 96, 92, + 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 90, 90, 89, 89, 91, 96, + 98, 98, 35, 37, 37, 37, 35, 35, 33, 33, 35, 35, 34, 34, 35, 35, + 35, 37, 47, 48, 46, 45, 46, 47, 46, 46, 35, 26, 17, 12, 12, 16, + 17, 17, 27, 20, 24, 24, 22, 29, 38, 35, 34, 59, 82, 107, 130, 139, + 139, 145, 146, 148, 150, 154, 158, 161, 163, 164, 173, 173, 174, 175, 177, 178, + 178, 179, 175, 179, 182, 183, 184, 184, 187, 190, 187, 179, 181, 187, 188, 192, + 193, 182, 188, 188, 189, 189, 188, 187, 187, 187, 187, 194, 196, 192, 188, 191, + 195, 197, 198, 203, 208, 208, 210, 210, 206, 199, 206, 208, 212, 218, 223, 224, + 220, 217, 202, 204, 209, 216, 217, 214, 215, 218, 205, 213, 216, 212, 208, 209, + 211, 212, 208, 201, 197, 202, 205, 200, 192, 188, 191, 194, 193, 186, 182, 183, + 184, 183, 179, 173, 168, 168, 171, 171, 166, 160, 169, 166, 163, 162, 162, 160, + 154, 152, 151, 152, 147, 141, 135, 124, 103, 83, 52, 38, 31, 35, 35, 23, + 21, 27, 31, 33, 39, 57, 73, 83, 87, 87, 87, 89, 92, 92, 94, 95, + 96, 95, 92, 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 90, 90, 89, + 89, 91, 95, 97, 97, 35, 37, 37, 37, 35, 35, 35, 35, 37, 37, 37, + 37, 36, 36, 37, 39, 46, 45, 44, 44, 47, 47, 44, 41, 22, 17, 12, + 11, 14, 20, 21, 21, 21, 17, 27, 38, 36, 33, 33, 27, 45, 82, 108, + 122, 134, 141, 145, 151, 153, 151, 151, 155, 161, 164, 164, 162, 172, 173, 175, + 176, 176, 175, 174, 173, 178, 178, 179, 180, 181, 183, 187, 188, 184, 174, 178, + 185, 189, 196, 198, 186, 196, 192, 190, 191, 192, 192, 189, 186, 196, 196, 194, + 191, 194, 200, 200, 196, 200, 202, 201, 198, 198, 202, 204, 202, 204, 208, 212, + 214, 212, 210, 207, 206, 216, 220, 220, 213, 207, 202, 198, 193, 206, 214, 218, + 213, 208, 208, 209, 209, 208, 201, 198, 202, 205, 200, 191, 186, 187, 194, 196, + 189, 183, 182, 183, 183, 177, 173, 171, 173, 176, 174, 167, 160, 170, 166, 162, + 163, 165, 165, 159, 156, 154, 156, 152, 146, 143, 139, 133, 122, 91, 58, 34, + 34, 39, 33, 28, 28, 25, 25, 27, 37, 55, 76, 85, 89, 89, 91, 92, + 92, 94, 94, 94, 93, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, + 92, 92, 91, 91, 91, 93, 94, 94, 36, 38, 38, 38, 36, 36, 36, 36, + 36, 37, 37, 37, 36, 36, 36, 39, 40, 39, 40, 43, 46, 43, 34, 27, + 16, 14, 13, 16, 22, 26, 27, 26, 40, 28, 29, 32, 27, 29, 41, 48, + 59, 101, 126, 130, 139, 145, 148, 151, 160, 156, 154, 158, 166, 170, 169, 166, + 168, 169, 172, 174, 174, 173, 171, 170, 178, 176, 175, 176, 179, 182, 185, 185, + 194, 183, 184, 189, 192, 198, 198, 185, 193, 193, 193, 193, 192, 192, 190, 188, + 198, 198, 196, 195, 198, 203, 200, 194, 193, 196, 196, 193, 194, 200, 204, 205, + 205, 207, 207, 203, 198, 197, 201, 206, 207, 215, 216, 210, 210, 218, 220, 216, + 204, 207, 209, 207, 207, 209, 207, 203, 205, 204, 205, 202, 195, 189, 194, 203, + 178, 188, 193, 188, 180, 179, 180, 181, 175, 173, 172, 174, 176, 175, 168, 163, + 170, 165, 161, 162, 166, 167, 162, 159, 164, 163, 159, 151, 144, 139, 137, 135, + 115, 100, 72, 43, 32, 38, 37, 27, 29, 31, 29, 28, 39, 61, 79, 88, + 89, 89, 91, 92, 94, 93, 94, 93, 94, 92, 94, 92, 94, 92, 94, 92, + 95, 93, 95, 92, 94, 91, 93, 91, 93, 91, 93, 36, 38, 38, 38, 38, + 38, 36, 36, 37, 38, 36, 36, 37, 37, 35, 36, 38, 38, 40, 42, 41, + 35, 24, 16, 15, 17, 20, 22, 27, 29, 30, 31, 33, 31, 40, 44, 33, + 31, 42, 48, 77, 110, 130, 134, 146, 154, 153, 155, 161, 157, 154, 158, 166, + 170, 170, 167, 164, 166, 169, 172, 174, 174, 173, 172, 177, 175, 173, 174, 179, + 181, 182, 182, 199, 188, 190, 193, 192, 195, 194, 183, 187, 191, 194, 193, 189, + 187, 189, 192, 186, 192, 196, 195, 197, 199, 197, 193, 181, 193, 205, 210, 209, + 207, 201, 194, 202, 206, 208, 207, 204, 207, 215, 223, 225, 228, 221, 206, 198, + 201, 201, 196, 201, 200, 199, 201, 209, 215, 211, 203, 202, 203, 205, 203, 197, + 192, 197, 206, 173, 183, 190, 187, 180, 179, 181, 182, 176, 174, 171, 171, 173, + 173, 170, 167, 167, 163, 159, 160, 164, 166, 163, 161, 167, 165, 162, 155, 146, + 139, 137, 137, 122, 130, 118, 79, 45, 33, 38, 38, 32, 34, 32, 27, 27, + 44, 69, 88, 89, 89, 91, 92, 94, 93, 94, 93, 95, 94, 95, 94, 95, + 94, 95, 94, 96, 95, 96, 94, 95, 93, 94, 93, 93, 91, 93, 39, 39, + 39, 39, 39, 39, 37, 37, 37, 37, 36, 36, 37, 37, 35, 35, 38, 39, + 40, 37, 35, 27, 18, 15, 19, 21, 25, 27, 31, 32, 32, 34, 27, 32, + 44, 43, 36, 43, 59, 59, 98, 120, 132, 136, 152, 161, 159, 160, 157, 154, + 152, 154, 158, 162, 163, 162, 163, 165, 168, 171, 174, 175, 176, 176, 176, 176, + 177, 177, 180, 181, 182, 183, 192, 184, 190, 194, 191, 193, 193, 184, 189, 195, + 200, 198, 193, 190, 193, 198, 181, 189, 196, 197, 197, 200, 201, 200, 187, 197, + 204, 204, 201, 200, 198, 194, 196, 202, 208, 210, 207, 206, 208, 211, 198, 200, + 200, 198, 201, 211, 220, 224, 214, 210, 204, 202, 208, 213, 207, 196, 203, 198, + 197, 204, 209, 204, 196, 190, 177, 185, 191, 187, 183, 183, 185, 184, 177, 174, + 171, 170, 171, 172, 172, 172, 164, 162, 160, 160, 162, 163, 162, 162, 161, 159, + 159, 158, 154, 146, 145, 146, 144, 129, 118, 113, 94, 64, 43, 33, 33, 28, + 30, 26, 23, 30, 55, 79, 86, 88, 90, 90, 92, 94, 94, 94, 95, 95, + 95, 95, 95, 95, 95, 95, 96, 96, 96, 95, 95, 94, 94, 94, 93, 91, + 93, 39, 40, 40, 40, 39, 39, 39, 39, 39, 39, 39, 39, 38, 38, 39, + 37, 36, 37, 34, 28, 22, 16, 17, 20, 23, 26, 32, 34, 35, 35, 38, + 41, 58, 55, 48, 37, 43, 82, 118, 126, 126, 137, 139, 143, 157, 159, 157, + 162, 153, 151, 149, 148, 148, 150, 151, 152, 159, 160, 162, 164, 167, 169, 171, + 172, 171, 174, 177, 177, 175, 174, 178, 181, 180, 178, 188, 194, 191, 192, 194, + 187, 195, 197, 199, 198, 195, 193, 193, 195, 189, 194, 196, 195, 195, 200, 202, + 201, 197, 200, 197, 189, 186, 192, 200, 205, 197, 200, 202, 201, 197, 194, 194, + 195, 221, 218, 216, 215, 212, 210, 213, 219, 216, 215, 210, 203, 202, 205, 203, + 198, 204, 196, 195, 201, 204, 198, 189, 183, 182, 187, 189, 186, 183, 184, 183, + 181, 177, 175, 174, 173, 174, 174, 174, 174, 162, 163, 163, 162, 160, 160, 162, + 165, 161, 157, 158, 162, 161, 154, 151, 153, 156, 133, 118, 126, 129, 107, 74, + 46, 39, 25, 24, 28, 27, 25, 41, 65, 84, 86, 90, 90, 92, 92, 95, + 96, 95, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 97, 97, 96, 96, + 94, 94, 92, 94, 40, 40, 40, 40, 39, 39, 39, 39, 40, 40, 40, 41, + 39, 40, 40, 38, 34, 33, 28, 21, 12, 10, 16, 26, 29, 33, 39, 41, + 41, 42, 45, 48, 47, 65, 84, 97, 117, 152, 167, 149, 150, 152, 148, 150, + 158, 153, 151, 161, 154, 153, 151, 148, 144, 144, 146, 148, 156, 156, 157, 159, + 161, 163, 165, 167, 164, 169, 174, 174, 170, 168, 172, 176, 177, 177, 191, 196, + 192, 191, 195, 189, 194, 192, 190, 189, 190, 188, 185, 182, 198, 197, 192, 187, + 188, 193, 195, 192, 191, 198, 201, 198, 195, 199, 205, 207, 201, 200, 197, 194, + 194, 196, 202, 206, 205, 200, 202, 208, 208, 201, 203, 212, 200, 205, 207, 202, + 200, 206, 212, 216, 200, 201, 202, 199, 190, 182, 184, 191, 187, 190, 189, 184, + 182, 183, 181, 177, 176, 176, 176, 176, 177, 177, 176, 175, 162, 165, 166, 164, + 159, 158, 163, 167, 167, 161, 160, 164, 164, 157, 151, 152, 140, 149, 148, 134, + 123, 118, 106, 84, 52, 27, 21, 33, 32, 23, 32, 53, 83, 86, 87, 90, + 92, 93, 95, 96, 95, 95, 97, 95, 97, 95, 97, 95, 98, 96, 98, 95, + 97, 94, 96, 94, 94, 93, 94, 41, 42, 40, 40, 40, 40, 39, 38, 38, + 39, 39, 42, 44, 42, 38, 32, 37, 24, 13, 11, 13, 18, 25, 34, 35, + 41, 46, 45, 49, 60, 71, 80, 121, 132, 145, 153, 156, 156, 162, 166, 155, + 155, 153, 154, 155, 156, 158, 159, 158, 159, 158, 155, 150, 146, 144, 145, 138, + 142, 147, 149, 150, 153, 157, 161, 164, 158, 159, 168, 174, 171, 174, 182, 181, + 177, 176, 181, 192, 195, 191, 186, 209, 205, 201, 196, 193, 193, 194, 196, 196, + 197, 199, 200, 195, 189, 192, 198, 187, 193, 200, 204, 202, 198, 194, 192, 195, + 198, 200, 200, 198, 198, 200, 203, 200, 205, 205, 203, 213, 226, 225, 214, 204, + 196, 192, 201, 211, 211, 204, 199, 210, 192, 182, 187, 192, 188, 185, 189, 187, + 185, 177, 177, 182, 175, 169, 180, 158, 173, 179, 170, 165, 170, 172, 167, 175, + 170, 166, 168, 171, 168, 156, 145, 157, 154, 158, 166, 169, 162, 157, 157, 152, + 150, 147, 144, 140, 136, 133, 124, 88, 38, 25, 41, 36, 23, 32, 53, 74, + 91, 91, 80, 85, 90, 92, 97, 95, 94, 93, 90, 94, 97, 96, 89, 94, + 93, 94, 93, 94, 94, 95, 95, 89, 96, 96, 40, 42, 40, 40, 40, 40, + 40, 39, 42, 44, 43, 41, 37, 36, 40, 42, 27, 15, 8, 14, 24, 29, + 33, 38, 36, 53, 72, 83, 94, 111, 128, 138, 152, 158, 164, 165, 161, 158, + 158, 159, 153, 153, 150, 150, 150, 150, 151, 151, 156, 154, 152, 152, 153, 151, + 147, 143, 138, 140, 140, 138, 137, 138, 143, 146, 152, 157, 167, 173, 170, 164, + 168, 177, 180, 178, 180, 185, 194, 197, 196, 193, 192, 192, 192, 193, 194, 195, + 197, 198, 196, 197, 200, 202, 199, 194, 196, 202, 201, 199, 196, 193, 191, 194, + 200, 204, 198, 201, 203, 203, 201, 200, 201, 203, 204, 211, 211, 203, 202, 209, + 211, 205, 195, 193, 196, 204, 207, 204, 200, 197, 194, 187, 189, 198, 200, 191, + 186, 188, 199, 193, 181, 176, 180, 177, 172, 176, 178, 171, 174, 184, 181, 166, + 158, 161, 163, 164, 162, 158, 153, 153, 158, 163, 160, 158, 160, 165, 167, 161, + 159, 162, 163, 153, 144, 142, 146, 145, 136, 121, 110, 90, 70, 42, 24, 30, + 39, 31, 61, 87, 98, 93, 95, 91, 83, 83, 88, 93, 94, 90, 89, 90, + 88, 85, 88, 88, 89, 89, 89, 89, 89, 91, 91, 98, 94, 38, 41, 41, + 42, 42, 41, 41, 42, 44, 43, 41, 41, 39, 38, 36, 33, 11, 10, 11, + 15, 23, 32, 49, 63, 101, 120, 139, 144, 141, 145, 152, 159, 159, 164, 167, + 166, 162, 158, 157, 159, 160, 159, 156, 154, 153, 153, 153, 153, 160, 156, 154, + 157, 162, 162, 156, 149, 148, 146, 143, 137, 133, 132, 134, 136, 143, 142, 146, + 152, 158, 165, 172, 177, 176, 177, 183, 187, 190, 192, 195, 195, 189, 190, 192, + 193, 193, 193, 192, 191, 194, 195, 199, 203, 201, 197, 198, 203, 197, 205, 215, + 221, 219, 212, 204, 199, 200, 202, 204, 204, 202, 201, 200, 200, 196, 205, 210, + 202, 195, 200, 206, 208, 209, 205, 201, 196, 190, 186, 191, 199, 203, 194, 188, + 187, 181, 172, 172, 178, 180, 177, 171, 168, 173, 177, 174, 170, 189, 172, 163, + 168, 167, 157, 150, 152, 159, 164, 169, 169, 164, 159, 158, 159, 158, 158, 160, + 162, 161, 157, 159, 165, 168, 160, 153, 149, 149, 146, 139, 127, 125, 124, 108, + 65, 38, 47, 48, 24, 47, 73, 86, 87, 92, 93, 92, 96, 81, 89, 94, + 91, 86, 86, 86, 85, 87, 87, 87, 87, 87, 87, 87, 89, 89, 97, 94, + 39, 40, 41, 41, 43, 43, 42, 43, 42, 36, 34, 41, 47, 42, 23, 5, + 11, 17, 24, 24, 23, 40, 78, 113, 125, 140, 156, 157, 155, 152, 153, 152, + 157, 159, 162, 160, 158, 156, 157, 159, 164, 164, 160, 159, 158, 158, 158, 158, + 161, 159, 159, 162, 165, 165, 160, 154, 156, 154, 150, 144, 138, 134, 132, 131, + 123, 127, 136, 144, 150, 156, 163, 169, 170, 174, 181, 184, 184, 184, 188, 191, + 193, 193, 194, 194, 193, 192, 191, 190, 192, 193, 197, 201, 199, 195, 195, 199, + 201, 201, 201, 199, 197, 197, 199, 201, 199, 201, 202, 202, 201, 198, 197, 193, + 190, 200, 208, 204, 200, 202, 207, 210, 191, 198, 209, 215, 208, 192, 181, 178, + 195, 189, 186, 189, 191, 191, 195, 201, 197, 199, 203, 202, 199, 203, 203, 192, + 184, 189, 184, 175, 177, 186, 182, 170, 167, 163, 162, 167, 173, 171, 161, 150, + 152, 156, 160, 159, 157, 154, 156, 161, 159, 165, 171, 164, 151, 142, 143, 143, + 133, 122, 120, 104, 79, 65, 53, 35, 52, 70, 77, 78, 85, 84, 82, 84, + 77, 83, 86, 84, 82, 84, 86, 84, 85, 85, 85, 84, 84, 84, 84, 84, + 81, 89, 86, 39, 42, 41, 41, 43, 43, 42, 43, 39, 38, 39, 42, 42, + 33, 15, 1, 22, 25, 31, 37, 46, 71, 109, 142, 137, 147, 152, 155, 157, + 158, 155, 150, 166, 165, 165, 160, 157, 152, 151, 151, 157, 156, 156, 156, 156, + 157, 158, 159, 155, 157, 159, 159, 157, 155, 153, 152, 153, 152, 150, 146, 141, + 135, 128, 124, 106, 117, 133, 144, 144, 139, 144, 155, 160, 166, 173, 176, 179, + 180, 184, 188, 188, 188, 188, 190, 192, 194, 197, 198, 195, 194, 196, 199, 198, + 194, 193, 197, 196, 196, 196, 194, 192, 193, 195, 198, 201, 200, 200, 200, 200, + 198, 196, 192, 193, 198, 204, 205, 203, 202, 200, 197, 214, 201, 187, 182, 184, + 191, 205, 217, 198, 194, 197, 206, 209, 200, 186, 176, 168, 163, 165, 157, 137, + 136, 140, 133, 133, 152, 164, 166, 173, 183, 183, 175, 175, 164, 153, 151, 158, + 163, 163, 160, 149, 156, 161, 160, 155, 153, 154, 156, 150, 160, 170, 167, 154, + 144, 144, 146, 144, 125, 128, 131, 114, 91, 70, 56, 41, 54, 59, 66, 79, + 81, 79, 79, 77, 75, 73, 70, 73, 78, 77, 73, 75, 75, 74, 74, 73, + 73, 72, 72, 73, 80, 77, 40, 43, 41, 42, 42, 43, 41, 42, 38, 45, + 47, 37, 21, 11, 13, 21, 27, 23, 27, 48, 77, 104, 125, 136, 162, 164, + 164, 161, 162, 165, 161, 153, 164, 163, 161, 159, 156, 154, 152, 151, 154, 154, + 154, 155, 156, 158, 159, 160, 159, 161, 162, 160, 156, 154, 154, 155, 153, 153, + 152, 151, 148, 141, 132, 125, 126, 96, 80, 97, 123, 134, 142, 153, 149, 155, + 163, 169, 175, 179, 185, 189, 186, 186, 186, 186, 187, 189, 192, 193, 198, 195, + 195, 198, 198, 195, 195, 198, 189, 196, 205, 210, 209, 203, 197, 194, 203, 201, + 199, 199, 199, 199, 198, 194, 185, 189, 194, 198, 201, 200, 196, 191, 188, 189, + 199, 212, 216, 205, 189, 178, 187, 180, 173, 169, 164, 150, 130, 115, 125, 104, + 99, 90, 64, 62, 75, 75, 71, 71, 80, 95, 102, 108, 127, 150, 167, 170, + 171, 167, 160, 156, 158, 160, 151, 159, 163, 161, 159, 158, 158, 156, 153, 153, + 155, 157, 160, 153, 147, 139, 142, 135, 136, 134, 125, 121, 112, 92, 64, 64, + 52, 47, 59, 67, 75, 85, 82, 79, 75, 72, 75, 79, 77, 70, 74, 73, + 73, 72, 72, 71, 70, 70, 67, 73, 69, 42, 44, 44, 44, 42, 42, 42, + 42, 41, 43, 38, 24, 9, 5, 15, 30, 25, 26, 38, 65, 97, 120, 133, + 141, 150, 154, 156, 154, 154, 161, 162, 161, 152, 152, 153, 154, 155, 155, 154, + 152, 156, 156, 156, 157, 158, 160, 161, 162, 167, 165, 162, 161, 160, 160, 160, + 159, 158, 156, 155, 154, 151, 146, 137, 131, 132, 70, 27, 43, 79, 100, 122, + 142, 143, 147, 154, 161, 168, 173, 177, 179, 184, 185, 186, 186, 187, 187, 186, + 186, 197, 193, 191, 194, 195, 194, 196, 200, 198, 195, 190, 186, 186, 191, 199, + 206, 203, 200, 196, 195, 197, 198, 198, 195, 185, 185, 187, 191, 193, 192, 190, + 189, 190, 185, 183, 185, 182, 172, 161, 155, 142, 136, 129, 124, 124, 123, 119, + 114, 81, 46, 42, 46, 25, 23, 37, 36, 45, 38, 35, 40, 44, 53, 78, + 106, 131, 143, 160, 169, 169, 163, 157, 154, 158, 162, 161, 158, 157, 161, 160, + 156, 158, 155, 153, 153, 157, 154, 149, 142, 143, 139, 140, 138, 132, 135, 134, + 119, 120, 113, 89, 64, 52, 43, 44, 57, 74, 76, 79, 78, 80, 82, 79, + 74, 77, 76, 76, 75, 74, 73, 72, 70, 62, 66, 62, 45, 44, 44, 44, + 44, 42, 42, 41, 44, 34, 19, 11, 10, 13, 16, 20, 29, 44, 64, 89, + 107, 125, 146, 163, 166, 173, 172, 165, 156, 155, 157, 157, 159, 159, 159, 159, + 160, 159, 156, 153, 155, 155, 155, 156, 157, 158, 159, 160, 166, 159, 153, 155, + 160, 163, 161, 157, 159, 156, 152, 150, 146, 142, 135, 128, 97, 54, 29, 38, + 44, 42, 73, 119, 144, 147, 151, 156, 161, 164, 165, 166, 169, 173, 179, 185, + 190, 192, 191, 191, 191, 186, 183, 186, 189, 188, 193, 198, 190, 194, 199, 202, + 202, 201, 200, 200, 199, 196, 191, 190, 193, 195, 196, 193, 198, 196, 194, 191, + 185, 179, 178, 180, 172, 162, 152, 146, 141, 135, 133, 136, 137, 141, 142, 142, + 141, 136, 132, 128, 70, 28, 28, 45, 30, 25, 31, 23, 26, 39, 41, 32, + 31, 42, 49, 47, 87, 92, 106, 129, 153, 167, 167, 162, 160, 162, 157, 152, + 153, 160, 160, 156, 158, 162, 163, 158, 152, 147, 151, 155, 154, 142, 146, 150, + 137, 125, 123, 122, 112, 124, 121, 105, 84, 59, 46, 51, 57, 64, 75, 78, + 76, 77, 76, 73, 72, 72, 71, 70, 70, 70, 69, 66, 57, 62, 59, 44, + 48, 51, 48, 45, 44, 44, 40, 44, 25, 8, 6, 12, 17, 17, 22, 27, + 55, 76, 91, 118, 141, 153, 167, 156, 162, 169, 167, 163, 159, 163, 165, 170, + 167, 164, 161, 159, 158, 158, 156, 154, 159, 154, 152, 157, 157, 155, 161, 160, + 156, 151, 151, 153, 155, 157, 157, 153, 157, 149, 139, 150, 126, 144, 116, 50, + 16, 25, 31, 31, 29, 28, 72, 106, 127, 148, 156, 157, 163, 167, 169, 175, + 169, 177, 185, 179, 179, 184, 182, 189, 182, 194, 194, 167, 162, 186, 197, 202, + 189, 183, 188, 194, 190, 184, 182, 185, 186, 185, 183, 181, 178, 176, 173, 165, + 162, 160, 158, 157, 156, 155, 155, 155, 153, 150, 149, 150, 151, 150, 151, 150, + 173, 129, 149, 150, 121, 145, 101, 17, 17, 20, 20, 20, 20, 20, 21, 27, + 33, 36, 34, 29, 29, 34, 40, 48, 53, 71, 89, 125, 154, 155, 170, 160, + 170, 166, 155, 154, 154, 157, 167, 156, 164, 169, 163, 159, 155, 157, 153, 149, + 146, 149, 152, 147, 137, 130, 128, 129, 135, 127, 119, 121, 104, 71, 46, 38, + 31, 48, 68, 72, 72, 72, 68, 70, 62, 68, 73, 66, 62, 68, 67, 59, + 56, 55, 44, 46, 47, 49, 49, 48, 43, 36, 20, 13, 11, 16, 19, 18, + 15, 20, 43, 74, 92, 108, 130, 143, 148, 156, 164, 167, 169, 169, 169, 167, + 170, 169, 171, 168, 165, 163, 161, 160, 159, 159, 157, 162, 157, 154, 158, 157, + 155, 159, 156, 152, 149, 150, 152, 153, 154, 155, 156, 135, 169, 137, 133, 130, + 127, 45, 24, 12, 28, 27, 28, 29, 22, 42, 44, 75, 113, 139, 155, 160, + 156, 147, 148, 147, 159, 168, 160, 161, 171, 174, 182, 165, 171, 175, 165, 163, + 161, 146, 155, 159, 163, 165, 165, 167, 171, 176, 168, 168, 170, 169, 168, 165, + 166, 163, 162, 160, 159, 158, 158, 158, 158, 159, 164, 161, 159, 158, 159, 160, + 159, 161, 162, 150, 163, 146, 149, 130, 141, 37, 19, 21, 21, 22, 22, 22, + 22, 24, 31, 33, 32, 31, 30, 30, 32, 33, 37, 42, 52, 53, 84, 121, + 133, 153, 158, 167, 163, 160, 166, 163, 151, 147, 154, 160, 163, 161, 158, 158, + 157, 154, 153, 149, 147, 146, 143, 137, 135, 139, 126, 136, 134, 130, 132, 126, + 111, 101, 76, 47, 38, 47, 56, 67, 75, 67, 75, 61, 61, 60, 54, 57, + 67, 64, 70, 63, 60, 45, 44, 47, 53, 55, 50, 34, 23, 6, 10, 16, + 23, 20, 15, 16, 26, 43, 75, 98, 119, 143, 153, 154, 161, 169, 166, 164, + 164, 167, 166, 167, 164, 168, 167, 165, 163, 162, 161, 160, 160, 158, 163, 157, + 154, 157, 155, 151, 155, 151, 148, 147, 149, 151, 150, 151, 149, 153, 134, 152, + 142, 116, 133, 68, 6, 17, 23, 35, 24, 25, 35, 26, 25, 36, 41, 48, + 56, 74, 94, 110, 115, 111, 108, 119, 123, 113, 110, 119, 124, 128, 101, 85, + 77, 78, 93, 98, 87, 64, 101, 137, 151, 151, 154, 158, 159, 166, 166, 166, + 167, 167, 166, 168, 167, 172, 171, 170, 169, 168, 168, 168, 168, 171, 169, 167, + 167, 168, 169, 168, 167, 168, 155, 155, 158, 141, 146, 89, 7, 22, 21, 22, + 21, 22, 23, 22, 25, 33, 32, 29, 28, 30, 31, 29, 27, 31, 37, 42, + 31, 50, 84, 101, 128, 149, 159, 159, 159, 168, 168, 161, 160, 153, 156, 157, + 156, 158, 160, 156, 151, 154, 149, 147, 147, 145, 141, 139, 142, 131, 142, 139, + 132, 131, 130, 129, 134, 116, 85, 62, 49, 42, 47, 57, 56, 66, 62, 71, + 75, 70, 72, 74, 60, 57, 53, 54, 49, 49, 52, 57, 53, 40, 22, 12, + 15, 16, 18, 20, 16, 13, 18, 31, 40, 73, 100, 125, 150, 158, 160, 166, + 167, 166, 164, 162, 162, 161, 161, 161, 166, 166, 165, 164, 163, 163, 161, 161, + 157, 162, 156, 152, 155, 151, 146, 151, 148, 147, 148, 148, 150, 149, 148, 145, + 149, 142, 129, 123, 129, 86, 15, 25, 25, 32, 33, 23, 24, 33, 32, 29, + 26, 27, 28, 28, 32, 35, 39, 39, 44, 39, 46, 48, 38, 33, 39, 40, + 44, 45, 45, 42, 42, 49, 50, 42, 44, 98, 150, 165, 166, 171, 174, 170, + 178, 177, 177, 177, 177, 176, 179, 177, 186, 185, 183, 180, 178, 176, 175, 175, + 173, 172, 170, 170, 171, 172, 171, 169, 167, 170, 137, 152, 153, 110, 31, 25, + 17, 17, 17, 17, 19, 22, 23, 25, 30, 31, 30, 29, 30, 30, 29, 28, + 32, 33, 40, 34, 42, 56, 67, 102, 121, 143, 155, 158, 163, 162, 161, 167, + 157, 157, 155, 154, 158, 160, 155, 147, 149, 147, 149, 153, 153, 147, 141, 140, + 139, 146, 140, 130, 127, 126, 129, 139, 127, 117, 109, 85, 49, 35, 40, 42, + 44, 49, 64, 67, 64, 69, 72, 58, 67, 68, 68, 62, 58, 50, 45, 35, + 22, 14, 15, 22, 19, 15, 16, 16, 15, 19, 32, 57, 85, 105, 127, 148, + 152, 153, 160, 165, 169, 169, 167, 161, 158, 161, 165, 164, 164, 164, 165, 165, + 164, 163, 163, 158, 163, 157, 153, 155, 150, 144, 149, 146, 145, 146, 147, 149, + 148, 144, 141, 141, 140, 134, 109, 124, 22, 17, 38, 28, 28, 24, 25, 24, + 23, 29, 28, 18, 25, 35, 39, 32, 23, 16, 12, 30, 21, 25, 32, 31, + 32, 38, 35, 24, 36, 40, 38, 41, 43, 47, 50, 86, 129, 164, 167, 166, + 177, 183, 179, 183, 182, 181, 178, 178, 176, 179, 180, 186, 185, 182, 180, 178, + 176, 176, 175, 175, 173, 172, 172, 173, 172, 170, 166, 165, 161, 157, 132, 156, + 34, 28, 28, 13, 13, 13, 15, 17, 21, 24, 27, 26, 30, 33, 32, 29, + 28, 30, 34, 34, 25, 34, 39, 42, 37, 42, 86, 99, 123, 139, 149, 160, + 158, 150, 150, 162, 160, 156, 154, 158, 160, 154, 145, 150, 147, 148, 153, 155, + 149, 143, 142, 141, 143, 136, 131, 133, 132, 133, 143, 122, 129, 136, 119, 78, + 53, 45, 39, 24, 22, 26, 24, 19, 30, 47, 49, 51, 60, 68, 66, 52, + 37, 26, 15, 8, 12, 24, 17, 13, 11, 16, 20, 19, 20, 29, 67, 90, + 109, 129, 148, 149, 151, 161, 159, 163, 168, 164, 158, 153, 157, 161, 161, 163, + 164, 165, 166, 166, 164, 164, 161, 166, 161, 157, 158, 153, 147, 150, 144, 143, + 144, 145, 147, 145, 142, 139, 131, 143, 126, 136, 50, 16, 31, 27, 24, 27, + 19, 33, 34, 20, 26, 24, 31, 28, 27, 22, 17, 16, 21, 31, 19, 7, + 9, 18, 20, 25, 28, 25, 35, 34, 21, 19, 31, 34, 40, 55, 113, 143, + 168, 169, 170, 178, 180, 172, 184, 183, 179, 175, 174, 175, 176, 176, 181, 181, + 180, 179, 179, 180, 181, 181, 178, 177, 175, 175, 175, 173, 170, 166, 156, 156, + 165, 142, 85, 11, 37, 11, 13, 14, 16, 19, 22, 24, 28, 29, 23, 29, + 34, 33, 29, 27, 31, 36, 37, 24, 31, 38, 42, 35, 37, 76, 107, 113, + 112, 119, 144, 159, 161, 163, 164, 163, 159, 155, 157, 159, 154, 146, 158, 150, + 145, 146, 149, 148, 147, 149, 143, 143, 135, 134, 137, 132, 126, 133, 136, 135, + 140, 131, 107, 84, 63, 38, 15, 6, 9, 11, 4, 6, 19, 24, 13, 27, + 42, 46, 31, 20, 15, 12, 7, 12, 22, 16, 14, 15, 19, 22, 20, 23, + 34, 64, 87, 107, 128, 148, 151, 152, 164, 154, 158, 161, 161, 157, 153, 153, + 154, 160, 162, 164, 166, 167, 167, 166, 165, 161, 167, 162, 158, 160, 154, 147, + 151, 144, 142, 141, 141, 141, 140, 137, 135, 127, 143, 116, 125, 2, 33, 24, + 21, 27, 32, 21, 37, 38, 23, 29, 20, 22, 19, 21, 25, 24, 16, 13, + 15, 30, 19, 23, 28, 24, 25, 31, 29, 22, 28, 29, 39, 53, 42, 40, + 61, 138, 161, 183, 187, 188, 191, 189, 180, 186, 185, 181, 177, 177, 176, 177, + 178, 181, 182, 182, 182, 183, 184, 185, 186, 181, 179, 177, 176, 176, 173, 169, + 164, 153, 161, 146, 138, 15, 29, 21, 11, 17, 19, 22, 24, 24, 25, 26, + 26, 23, 26, 29, 29, 27, 25, 26, 27, 34, 30, 36, 34, 40, 40, 33, + 56, 112, 115, 107, 104, 121, 140, 155, 170, 160, 160, 157, 153, 154, 156, 153, + 146, 160, 151, 144, 146, 149, 148, 147, 148, 144, 145, 139, 138, 137, 127, 120, + 130, 144, 138, 141, 138, 130, 118, 92, 57, 29, 10, 14, 27, 22, 13, 13, + 13, 20, 24, 29, 18, 7, 6, 17, 23, 16, 11, 13, 25, 22, 19, 19, + 17, 19, 28, 43, 65, 87, 107, 127, 145, 146, 145, 157, 159, 158, 160, 162, + 163, 160, 156, 154, 159, 162, 164, 166, 167, 168, 166, 166, 159, 165, 160, 157, + 158, 153, 146, 150, 142, 140, 138, 137, 138, 137, 135, 134, 136, 124, 129, 58, + 29, 20, 18, 28, 28, 39, 22, 28, 28, 21, 31, 14, 33, 23, 18, 23, + 25, 22, 19, 19, 19, 12, 18, 22, 15, 17, 26, 26, 29, 35, 31, 36, + 47, 40, 61, 107, 167, 176, 181, 177, 176, 180, 184, 184, 187, 183, 181, 178, + 176, 178, 179, 182, 183, 184, 183, 182, 182, 182, 182, 183, 181, 179, 177, 176, + 175, 171, 167, 159, 158, 157, 139, 90, 11, 32, 0, 30, 20, 23, 25, 25, + 25, 23, 23, 21, 27, 25, 25, 26, 27, 26, 23, 20, 25, 34, 43, 31, + 37, 44, 25, 26, 94, 120, 131, 122, 113, 109, 120, 140, 156, 158, 156, 153, + 153, 155, 153, 149, 154, 148, 146, 151, 154, 151, 144, 141, 139, 143, 142, 143, + 142, 132, 128, 142, 131, 133, 142, 150, 146, 142, 123, 89, 55, 19, 10, 24, + 25, 18, 20, 23, 26, 22, 20, 15, 17, 17, 17, 18, 19, 20, 20, 24, + 23, 24, 23, 19, 17, 23, 39, 80, 99, 109, 121, 145, 158, 160, 162, 158, + 162, 164, 164, 166, 165, 159, 151, 151, 153, 157, 163, 168, 171, 169, 167, 163, + 160, 158, 157, 154, 152, 146, 141, 147, 140, 143, 146, 136, 135, 134, 128, 150, + 106, 112, 35, 21, 33, 15, 23, 31, 32, 29, 32, 33, 32, 26, 18, 14, + 23, 24, 22, 23, 18, 18, 30, 22, 23, 22, 20, 19, 22, 26, 29, 31, + 29, 30, 47, 66, 77, 112, 158, 180, 183, 187, 187, 188, 187, 186, 186, 187, + 184, 184, 182, 180, 180, 178, 179, 184, 186, 185, 184, 184, 183, 182, 182, 182, + 185, 183, 176, 170, 170, 169, 163, 167, 137, 142, 38, 26, 15, 15, 17, 19, + 19, 29, 33, 24, 22, 24, 19, 30, 22, 29, 29, 20, 31, 39, 24, 31, + 33, 35, 37, 38, 37, 35, 34, 77, 122, 118, 126, 130, 126, 99, 125, 132, + 150, 162, 159, 153, 153, 159, 161, 159, 153, 151, 154, 153, 147, 143, 146, 146, + 144, 142, 142, 139, 135, 132, 134, 128, 139, 141, 137, 139, 138, 128, 112, 52, + 17, 23, 43, 31, 26, 28, 14, 26, 23, 22, 11, 10, 12, 12, 13, 14, + 17, 18, 22, 22, 23, 24, 21, 19, 27, 41, 67, 99, 116, 127, 138, 142, + 144, 154, 169, 169, 166, 161, 161, 163, 163, 158, 166, 165, 162, 161, 163, 165, + 165, 165, 162, 160, 158, 158, 156, 153, 148, 146, 143, 137, 139, 142, 135, 136, + 137, 130, 132, 126, 84, 25, 26, 26, 19, 23, 26, 26, 25, 25, 28, 26, + 20, 15, 18, 23, 20, 18, 20, 16, 14, 24, 19, 21, 23, 25, 27, 27, + 28, 28, 35, 31, 40, 86, 140, 163, 166, 174, 176, 179, 183, 184, 183, 182, + 184, 183, 189, 189, 187, 185, 184, 182, 182, 182, 182, 184, 183, 183, 183, 182, + 182, 182, 179, 179, 175, 171, 171, 173, 170, 161, 155, 141, 110, 11, 13, 15, + 12, 24, 17, 17, 21, 17, 11, 19, 28, 28, 12, 23, 37, 37, 27, 27, + 28, 21, 29, 31, 33, 35, 36, 36, 35, 32, 55, 115, 119, 124, 128, 125, + 120, 118, 121, 133, 143, 147, 149, 155, 158, 157, 155, 148, 145, 148, 149, 146, + 142, 144, 142, 144, 145, 143, 136, 131, 131, 136, 135, 140, 141, 143, 145, 144, + 130, 118, 98, 59, 41, 39, 24, 22, 29, 29, 34, 31, 28, 11, 10, 11, + 11, 12, 15, 20, 21, 18, 17, 20, 22, 20, 19, 27, 38, 88, 115, 131, + 140, 152, 155, 153, 157, 160, 167, 172, 172, 171, 166, 157, 148, 160, 160, 160, + 162, 166, 169, 169, 169, 159, 158, 157, 157, 155, 152, 147, 146, 142, 136, 137, + 140, 134, 137, 137, 128, 122, 138, 49, 21, 33, 24, 28, 24, 23, 23, 23, + 23, 25, 23, 18, 12, 19, 19, 15, 16, 23, 19, 15, 23, 34, 30, 25, + 22, 24, 26, 30, 32, 30, 51, 79, 121, 163, 177, 172, 172, 177, 179, 184, + 185, 186, 185, 187, 187, 189, 189, 187, 185, 185, 185, 185, 185, 182, 182, 182, + 182, 182, 181, 181, 181, 178, 175, 171, 169, 174, 178, 173, 161, 155, 148, 79, + 4, 13, 21, 10, 23, 31, 33, 26, 19, 26, 35, 30, 12, 19, 25, 21, + 19, 26, 29, 27, 28, 25, 26, 29, 31, 33, 33, 33, 32, 32, 95, 123, + 122, 127, 126, 140, 114, 122, 127, 133, 141, 151, 160, 161, 158, 159, 151, 146, + 148, 152, 151, 148, 147, 140, 146, 149, 145, 135, 131, 133, 139, 138, 136, 137, + 145, 149, 143, 131, 122, 103, 70, 41, 32, 25, 19, 21, 27, 19, 20, 18, + 9, 11, 14, 16, 18, 19, 22, 22, 19, 17, 20, 22, 21, 19, 25, 35, + 72, 105, 123, 130, 135, 138, 143, 155, 151, 161, 170, 175, 173, 166, 155, 144, + 151, 155, 162, 168, 173, 172, 166, 162, 158, 158, 158, 157, 153, 149, 144, 143, + 147, 142, 143, 141, 134, 135, 134, 123, 125, 114, 21, 23, 29, 25, 28, 19, + 23, 23, 22, 23, 24, 22, 18, 15, 17, 16, 13, 18, 29, 25, 20, 28, + 24, 22, 24, 28, 36, 39, 41, 40, 73, 112, 142, 157, 164, 164, 169, 182, + 177, 178, 183, 184, 186, 187, 187, 189, 186, 187, 187, 185, 185, 184, 186, 186, + 185, 184, 184, 183, 182, 181, 180, 180, 178, 178, 175, 173, 176, 179, 175, 166, + 150, 124, 41, 15, 18, 27, 16, 22, 9, 29, 31, 18, 21, 27, 21, 9, + 24, 36, 27, 20, 29, 27, 24, 37, 25, 26, 28, 31, 33, 34, 34, 34, + 25, 62, 127, 123, 128, 133, 143, 121, 133, 133, 135, 139, 148, 156, 159, 160, + 163, 156, 150, 150, 154, 155, 152, 148, 143, 148, 149, 145, 138, 137, 137, 138, + 137, 129, 129, 142, 149, 141, 132, 127, 115, 86, 48, 35, 39, 35, 28, 35, + 22, 22, 22, 4, 7, 12, 16, 19, 19, 18, 17, 25, 22, 23, 25, 26, + 23, 25, 32, 51, 93, 122, 132, 137, 140, 153, 173, 158, 161, 161, 158, 159, + 161, 164, 163, 167, 169, 171, 173, 172, 166, 156, 150, 161, 162, 163, 162, 156, + 150, 145, 144, 150, 147, 148, 145, 138, 139, 135, 117, 129, 63, 8, 29, 18, + 26, 22, 13, 22, 22, 22, 21, 22, 19, 17, 15, 16, 15, 13, 21, 32, + 27, 26, 36, 33, 44, 65, 86, 100, 103, 99, 94, 131, 154, 163, 166, 173, + 177, 177, 181, 170, 174, 178, 179, 181, 182, 184, 186, 186, 187, 187, 187, 187, + 186, 188, 186, 189, 188, 186, 185, 183, 181, 180, 179, 177, 180, 180, 176, 173, + 174, 172, 166, 146, 88, 13, 21, 12, 25, 26, 37, 76, 100, 84, 38, 10, + 5, 14, 31, 11, 37, 44, 40, 38, 22, 14, 31, 26, 27, 29, 31, 33, + 34, 35, 36, 32, 31, 120, 122, 128, 138, 131, 133, 134, 134, 133, 133, 134, + 139, 147, 157, 161, 156, 151, 149, 152, 154, 150, 145, 145, 146, 144, 140, 139, + 142, 138, 131, 132, 126, 128, 141, 149, 143, 135, 132, 139, 102, 52, 28, 33, + 33, 28, 32, 26, 26, 24, 7, 10, 15, 20, 22, 21, 20, 17, 22, 18, + 19, 21, 22, 19, 19, 25, 26, 48, 65, 88, 121, 137, 137, 139, 151, 156, + 159, 159, 159, 164, 167, 166, 180, 177, 172, 169, 166, 164, 160, 157, 164, 166, + 168, 167, 160, 154, 150, 149, 150, 149, 152, 149, 143, 143, 136, 114, 116, 28, + 16, 33, 19, 28, 22, 18, 18, 18, 19, 17, 17, 17, 16, 15, 16, 18, + 17, 23, 31, 25, 32, 53, 90, 98, 113, 127, 139, 148, 155, 159, 152, 162, + 163, 161, 169, 170, 168, 172, 171, 175, 179, 181, 182, 183, 184, 186, 187, 187, + 188, 189, 189, 189, 191, 190, 189, 188, 187, 185, 183, 181, 180, 179, 175, 180, + 181, 176, 171, 169, 168, 163, 168, 102, 35, 28, 15, 25, 32, 71, 119, 156, + 164, 149, 131, 86, 25, 0, 32, 32, 25, 28, 38, 35, 25, 25, 28, 28, + 29, 31, 32, 34, 35, 34, 36, 23, 97, 121, 130, 140, 127, 143, 135, 135, + 136, 134, 130, 130, 140, 152, 157, 158, 156, 153, 153, 155, 152, 148, 143, 144, + 139, 135, 137, 143, 138, 126, 129, 127, 133, 141, 148, 145, 140, 136, 131, 95, + 59, 40, 37, 34, 29, 22, 24, 24, 22, 11, 12, 17, 19, 21, 20, 20, + 21, 17, 15, 14, 17, 20, 17, 17, 22, 37, 39, 35, 55, 101, 128, 132, + 129, 138, 149, 159, 163, 164, 164, 161, 157, 170, 167, 164, 164, 165, 167, 167, + 167, 160, 164, 168, 168, 162, 157, 153, 154, 154, 154, 157, 153, 145, 143, 133, + 106, 72, 20, 26, 26, 25, 22, 23, 24, 17, 18, 18, 16, 16, 13, 14, + 16, 17, 20, 19, 25, 30, 28, 51, 85, 130, 131, 133, 133, 133, 141, 156, + 168, 162, 173, 175, 174, 175, 168, 168, 180, 175, 178, 182, 184, 184, 184, 185, + 186, 186, 186, 189, 189, 190, 189, 192, 190, 187, 185, 184, 184, 183, 182, 182, + 181, 176, 179, 178, 174, 173, 172, 168, 160, 176, 145, 81, 26, 24, 28, 26, + 111, 150, 161, 146, 141, 160, 144, 104, 94, 99, 69, 46, 40, 39, 40, 36, + 27, 27, 27, 28, 28, 29, 31, 32, 32, 32, 36, 63, 117, 131, 134, 138, + 143, 140, 139, 141, 141, 134, 129, 133, 143, 150, 157, 160, 157, 155, 157, 156, + 153, 142, 146, 143, 137, 137, 143, 140, 129, 126, 132, 138, 139, 141, 142, 141, + 135, 126, 99, 89, 77, 57, 49, 49, 35, 41, 39, 38, 13, 12, 11, 12, + 13, 14, 16, 19, 20, 18, 18, 22, 23, 23, 23, 26, 20, 32, 28, 25, + 41, 66, 98, 128, 139, 148, 151, 150, 150, 155, 160, 161, 158, 159, 161, 164, + 167, 167, 163, 161, 156, 159, 166, 166, 162, 158, 155, 157, 158, 158, 159, 153, + 145, 142, 127, 97, 30, 23, 27, 12, 25, 10, 18, 21, 18, 19, 20, 20, + 17, 16, 17, 20, 18, 22, 23, 26, 31, 35, 69, 114, 135, 141, 155, 156, + 152, 150, 155, 160, 170, 169, 166, 171, 181, 175, 173, 181, 171, 174, 179, 181, + 180, 180, 181, 182, 181, 183, 183, 184, 185, 186, 187, 187, 183, 183, 183, 184, + 184, 183, 183, 183, 180, 179, 176, 174, 178, 177, 172, 160, 147, 158, 101, 12, + 30, 32, 16, 134, 138, 162, 158, 153, 166, 152, 136, 155, 144, 130, 123, 97, + 43, 19, 25, 29, 25, 27, 27, 27, 28, 29, 31, 31, 27, 54, 40, 115, + 132, 130, 153, 141, 144, 140, 141, 143, 136, 126, 123, 128, 137, 148, 156, 152, + 151, 152, 153, 152, 142, 150, 150, 142, 138, 144, 143, 135, 124, 135, 142, 136, + 135, 138, 138, 130, 132, 104, 97, 78, 41, 37, 53, 44, 48, 45, 40, 16, + 11, 7, 10, 15, 20, 21, 20, 17, 11, 15, 18, 15, 21, 25, 18, 28, + 26, 19, 18, 17, 12, 33, 73, 128, 132, 137, 143, 147, 150, 153, 155, 164, + 160, 158, 159, 161, 164, 164, 162, 159, 160, 163, 162, 160, 159, 164, 165, 164, + 156, 149, 141, 146, 155, 123, 68, 22, 27, 25, 17, 18, 24, 24, 21, 24, + 21, 18, 17, 19, 24, 30, 32, 31, 29, 26, 28, 50, 83, 113, 122, 136, + 136, 142, 142, 143, 147, 153, 159, 162, 171, 176, 174, 173, 174, 175, 170, 177, + 180, 180, 176, 175, 180, 183, 183, 178, 184, 186, 185, 184, 185, 187, 188, 186, + 184, 181, 182, 185, 185, 184, 182, 180, 174, 175, 178, 172, 171, 173, 165, 156, + 106, 73, 36, 32, 24, 23, 108, 149, 145, 151, 162, 166, 160, 162, 166, 144, + 155, 155, 143, 119, 60, 16, 15, 21, 23, 35, 40, 32, 30, 38, 38, 43, + 37, 53, 98, 139, 138, 138, 150, 142, 149, 152, 147, 136, 132, 129, 126, 127, + 140, 155, 155, 153, 151, 151, 149, 146, 147, 146, 143, 138, 134, 132, 131, 136, + 133, 137, 143, 146, 141, 135, 134, 134, 112, 104, 64, 49, 52, 41, 53, 47, + 43, 42, 19, 20, 20, 20, 19, 17, 17, 17, 22, 15, 18, 21, 18, 21, + 24, 18, 14, 20, 24, 27, 26, 10, 7, 20, 61, 104, 130, 123, 127, 151, + 157, 143, 154, 155, 155, 153, 152, 153, 156, 159, 158, 162, 163, 160, 156, 155, + 163, 165, 169, 160, 156, 151, 146, 136, 89, 29, 38, 36, 35, 33, 27, 19, + 18, 24, 23, 23, 24, 26, 28, 25, 21, 16, 38, 27, 40, 75, 108, 118, + 126, 134, 132, 136, 144, 149, 149, 149, 151, 153, 160, 166, 170, 168, 169, 173, + 175, 173, 173, 176, 176, 174, 177, 181, 181, 177, 187, 180, 173, 170, 173, 177, + 175, 174, 185, 184, 182, 182, 182, 184, 183, 182, 181, 174, 175, 176, 168, 169, + 170, 164, 169, 124, 81, 27, 24, 31, 25, 88, 148, 135, 137, 152, 159, 150, + 146, 146, 129, 138, 144, 151, 153, 121, 61, 18, 40, 26, 17, 24, 35, 37, + 39, 41, 45, 33, 51, 77, 127, 140, 141, 143, 141, 147, 148, 143, 136, 133, + 129, 124, 133, 123, 136, 158, 159, 152, 153, 155, 150, 149, 148, 146, 143, 141, + 139, 138, 140, 137, 139, 144, 146, 141, 134, 131, 135, 118, 102, 62, 33, 45, + 39, 54, 53, 51, 50, 15, 21, 26, 26, 21, 16, 15, 16, 23, 16, 19, + 22, 18, 21, 24, 17, 15, 23, 21, 19, 25, 21, 14, 17, 25, 58, 100, + 127, 139, 142, 139, 134, 144, 149, 153, 151, 147, 146, 153, 160, 155, 159, 161, + 157, 154, 154, 163, 167, 148, 155, 162, 149, 119, 103, 93, 77, 38, 37, 28, + 20, 27, 37, 29, 11, 27, 23, 18, 18, 24, 30, 35, 36, 33, 37, 67, + 107, 134, 131, 130, 136, 135, 140, 147, 151, 152, 153, 157, 160, 159, 163, 165, + 163, 166, 171, 175, 176, 176, 178, 177, 176, 179, 182, 179, 173, 169, 170, 174, + 178, 180, 178, 173, 171, 183, 182, 180, 180, 180, 183, 183, 182, 182, 174, 174, + 174, 168, 169, 168, 162, 161, 124, 76, 18, 23, 37, 13, 29, 89, 136, 157, + 133, 128, 154, 162, 141, 152, 149, 144, 138, 142, 139, 90, 24, 10, 34, 36, + 25, 32, 41, 35, 28, 46, 28, 48, 50, 103, 142, 144, 138, 143, 146, 145, + 142, 139, 138, 133, 126, 133, 114, 125, 148, 152, 157, 161, 150, 154, 151, 147, + 146, 147, 147, 145, 142, 141, 138, 139, 143, 146, 141, 134, 131, 132, 126, 103, + 69, 15, 30, 22, 35, 38, 42, 46, 12, 17, 22, 23, 21, 18, 16, 16, + 20, 13, 17, 20, 16, 20, 23, 17, 19, 25, 17, 9, 18, 27, 28, 32, + 14, 18, 44, 83, 112, 121, 124, 128, 140, 144, 148, 147, 144, 144, 149, 155, + 152, 153, 155, 155, 156, 158, 165, 165, 170, 149, 141, 143, 147, 154, 151, 136, + 139, 108, 68, 38, 25, 23, 30, 38, 27, 29, 31, 30, 27, 24, 23, 22, + 49, 80, 109, 116, 117, 123, 131, 131, 136, 136, 139, 139, 141, 146, 156, 164, + 159, 161, 163, 163, 165, 168, 172, 174, 177, 179, 179, 175, 174, 175, 173, 169, + 171, 172, 173, 169, 163, 163, 175, 188, 178, 180, 181, 181, 182, 183, 181, 181, + 182, 174, 173, 173, 166, 167, 166, 161, 169, 151, 115, 56, 38, 40, 21, 29, + 39, 63, 107, 143, 145, 130, 132, 147, 140, 135, 141, 136, 137, 157, 151, 108, + 19, 37, 38, 32, 37, 34, 28, 29, 43, 34, 45, 40, 71, 143, 146, 143, + 148, 148, 145, 144, 145, 146, 140, 131, 129, 123, 128, 128, 129, 158, 170, 142, + 156, 150, 145, 144, 147, 148, 145, 140, 138, 135, 136, 141, 144, 140, 135, 132, + 122, 127, 107, 86, 14, 27, 16, 23, 24, 33, 40, 18, 17, 16, 18, 20, + 21, 18, 16, 17, 11, 15, 19, 16, 21, 25, 18, 7, 25, 23, 15, 20, + 22, 17, 17, 18, 26, 24, 23, 52, 101, 130, 130, 136, 138, 140, 140, 139, + 138, 140, 141, 150, 149, 148, 150, 156, 158, 157, 153, 157, 147, 152, 165, 170, + 172, 166, 151, 148, 131, 137, 148, 110, 41, 9, 20, 22, 25, 28, 26, 26, + 38, 58, 73, 102, 126, 138, 128, 116, 122, 133, 136, 129, 128, 130, 128, 128, + 131, 139, 148, 149, 152, 156, 160, 163, 164, 167, 170, 166, 172, 173, 167, 163, + 164, 167, 167, 166, 169, 176, 181, 176, 165, 161, 165, 171, 175, 180, 184, 184, + 182, 180, 179, 181, 174, 175, 175, 166, 167, 168, 159, 152, 156, 140, 80, 27, + 6, 10, 36, 26, 30, 64, 119, 153, 149, 137, 131, 143, 140, 154, 154, 143, + 148, 145, 122, 105, 63, 26, 27, 34, 26, 25, 42, 36, 43, 41, 44, 42, + 132, 146, 153, 150, 149, 146, 145, 147, 149, 143, 134, 133, 131, 132, 123, 121, + 146, 164, 151, 157, 152, 146, 145, 148, 148, 143, 138, 135, 132, 133, 139, 143, + 140, 136, 134, 117, 123, 107, 100, 24, 30, 27, 28, 26, 36, 40, 26, 21, + 17, 17, 20, 21, 19, 15, 19, 13, 17, 21, 17, 21, 25, 19, 5, 21, + 23, 14, 17, 18, 15, 19, 28, 34, 33, 29, 34, 55, 84, 103, 124, 127, + 133, 136, 138, 137, 137, 135, 149, 147, 145, 145, 149, 149, 147, 143, 137, 152, + 176, 176, 153, 144, 153, 158, 145, 144, 141, 134, 122, 96, 57, 26, 30, 40, + 54, 63, 77, 99, 130, 151, 141, 135, 133, 135, 134, 126, 127, 133, 128, 132, + 135, 137, 133, 129, 129, 132, 135, 139, 145, 153, 158, 159, 163, 168, 162, 167, + 169, 166, 164, 167, 169, 168, 165, 157, 160, 177, 187, 181, 166, 157, 166, 172, + 178, 182, 182, 180, 178, 178, 179, 172, 175, 177, 168, 168, 168, 159, 165, 166, + 158, 130, 90, 58, 41, 33, 23, 44, 50, 51, 85, 140, 163, 147, 127, 121, + 133, 144, 147, 152, 152, 143, 142, 119, 85, 40, 12, 26, 39, 30, 31, 46, + 37, 48, 31, 105, 148, 158, 150, 149, 146, 144, 145, 148, 143, 135, 140, 133, + 130, 136, 133, 125, 136, 160, 157, 154, 151, 151, 151, 149, 144, 140, 136, 132, + 133, 138, 143, 140, 136, 135, 130, 122, 104, 100, 27, 16, 23, 20, 16, 24, + 27, 23, 22, 20, 20, 20, 21, 20, 19, 23, 16, 19, 22, 18, 20, 23, + 14, 12, 19, 15, 8, 14, 18, 21, 33, 22, 18, 28, 41, 31, 11, 17, + 43, 90, 102, 117, 125, 129, 132, 136, 140, 145, 146, 146, 142, 139, 140, 146, + 151, 174, 166, 164, 164, 163, 172, 170, 152, 147, 162, 155, 137, 142, 147, 103, + 42, 80, 98, 125, 142, 147, 142, 136, 132, 141, 132, 128, 132, 136, 132, 128, + 127, 134, 138, 142, 143, 138, 134, 132, 134, 130, 131, 135, 141, 146, 147, 152, + 159, 160, 161, 162, 163, 167, 168, 161, 151, 151, 126, 106, 106, 119, 135, 156, + 176, 164, 168, 173, 175, 175, 175, 177, 179, 179, 173, 176, 179, 173, 172, 171, + 159, 153, 149, 141, 139, 134, 115, 78, 29, 44, 23, 17, 29, 36, 49, 97, + 147, 153, 154, 145, 139, 144, 144, 138, 138, 132, 144, 144, 81, 12, 27, 49, + 22, 29, 43, 39, 46, 41, 73, 157, 159, 151, 152, 149, 146, 146, 148, 144, + 137, 138, 142, 137, 143, 143, 110, 100, 137, 153, 153, 154, 155, 153, 150, 146, + 143, 141, 137, 137, 140, 143, 140, 135, 134, 140, 117, 104, 104, 40, 6, 18, + 5, 3, 13, 18, 10, 15, 19, 20, 18, 17, 20, 23, 24, 16, 18, 20, + 14, 15, 17, 10, 15, 16, 13, 11, 19, 14, 13, 20, 29, 37, 37, 28, + 27, 31, 30, 25, 49, 70, 93, 108, 113, 119, 131, 142, 140, 146, 148, 142, + 136, 138, 154, 168, 164, 162, 163, 159, 155, 164, 162, 142, 142, 135, 139, 146, + 142, 126, 128, 141, 146, 142, 137, 135, 136, 139, 139, 138, 127, 141, 145, 130, + 125, 138, 140, 131, 131, 133, 136, 134, 131, 133, 136, 141, 132, 129, 131, 134, + 137, 135, 141, 150, 158, 155, 152, 155, 163, 162, 145, 126, 78, 73, 73, 75, + 72, 75, 97, 123, 162, 167, 169, 169, 169, 171, 176, 180, 177, 172, 176, 181, + 175, 174, 172, 159, 155, 160, 154, 145, 139, 140, 129, 88, 56, 39, 36, 44, + 42, 33, 47, 73, 110, 133, 135, 130, 142, 144, 139, 145, 152, 120, 131, 117, + 44, 19, 40, 39, 34, 40, 44, 43, 57, 54, 166, 158, 154, 156, 153, 150, + 148, 149, 146, 141, 127, 155, 149, 139, 141, 105, 77, 101, 147, 150, 154, 155, + 153, 149, 146, 145, 146, 142, 140, 143, 144, 140, 135, 133, 135, 106, 105, 115, + 64, 16, 29, 9, 11, 20, 26, 17, 19, 19, 16, 16, 21, 23, 21, 20, + 20, 20, 19, 18, 17, 15, 15, 16, 17, 17, 15, 16, 16, 18, 23, 24, + 29, 30, 30, 32, 30, 24, 15, 33, 13, 62, 112, 99, 106, 137, 133, 137, + 148, 139, 128, 140, 159, 162, 157, 161, 156, 150, 151, 153, 151, 140, 132, 146, + 135, 127, 126, 127, 127, 137, 147, 136, 135, 132, 131, 130, 131, 132, 133, 137, + 135, 138, 137, 134, 130, 125, 122, 142, 136, 132, 133, 140, 146, 142, 138, 142, + 139, 137, 137, 140, 139, 139, 136, 138, 142, 135, 128, 141, 147, 108, 56, 64, + 74, 45, 53, 63, 75, 84, 93, 141, 163, 166, 157, 160, 166, 172, 178, 172, + 170, 170, 173, 178, 179, 173, 165, 163, 162, 157, 146, 142, 142, 141, 135, 115, + 87, 55, 37, 39, 43, 40, 31, 40, 97, 147, 148, 132, 130, 138, 140, 138, + 143, 152, 119, 105, 39, 12, 48, 44, 37, 44, 54, 38, 77, 157, 169, 149, + 161, 159, 147, 143, 152, 151, 140, 131, 142, 142, 141, 145, 130, 98, 78, 114, + 159, 158, 162, 157, 150, 154, 141, 145, 144, 140, 135, 137, 139, 133, 125, 123, + 111, 106, 111, 72, 21, 26, 40, 28, 38, 58, 18, 20, 19, 16, 16, 20, + 22, 20, 19, 19, 19, 19, 18, 17, 16, 15, 18, 16, 18, 16, 15, 17, + 20, 23, 21, 25, 29, 29, 31, 33, 32, 25, 34, 14, 35, 69, 85, 115, + 138, 117, 111, 104, 103, 127, 154, 158, 163, 181, 139, 137, 137, 141, 145, 145, + 142, 136, 136, 132, 132, 134, 133, 128, 127, 131, 134, 133, 134, 133, 134, 134, + 132, 132, 133, 132, 132, 131, 130, 126, 123, 121, 134, 129, 125, 129, 135, 140, + 138, 136, 142, 142, 141, 144, 147, 145, 143, 139, 138, 135, 130, 118, 111, 98, + 82, 63, 50, 65, 69, 55, 52, 60, 68, 75, 92, 127, 152, 161, 171, 172, + 167, 166, 178, 177, 176, 173, 171, 169, 168, 168, 161, 162, 161, 153, 150, 153, + 150, 147, 139, 140, 128, 94, 54, 31, 36, 45, 26, 42, 73, 112, 143, 154, + 143, 125, 157, 144, 141, 134, 146, 95, 21, 12, 34, 40, 42, 49, 52, 99, + 167, 171, 150, 157, 158, 152, 148, 152, 149, 140, 133, 139, 137, 137, 140, 127, + 96, 74, 33, 108, 138, 144, 142, 145, 161, 154, 141, 142, 141, 137, 140, 141, + 134, 125, 135, 115, 101, 107, 81, 41, 38, 35, 51, 56, 64, 21, 24, 23, + 19, 18, 22, 22, 20, 20, 20, 21, 21, 21, 20, 19, 19, 20, 18, 19, + 18, 17, 20, 24, 28, 22, 25, 27, 27, 31, 35, 35, 30, 34, 30, 27, + 21, 26, 52, 65, 47, 31, 60, 106, 155, 174, 149, 127, 129, 135, 138, 142, + 147, 150, 150, 151, 149, 135, 133, 136, 138, 136, 130, 123, 123, 126, 127, 131, + 134, 134, 131, 126, 124, 125, 125, 125, 123, 122, 119, 118, 119, 123, 124, 122, + 124, 128, 132, 132, 134, 138, 142, 146, 151, 155, 154, 151, 147, 143, 134, 134, + 129, 109, 74, 56, 53, 50, 50, 26, 40, 41, 60, 51, 91, 106, 136, 155, + 163, 176, 180, 178, 180, 179, 180, 179, 175, 170, 170, 174, 179, 165, 165, 167, + 163, 161, 163, 160, 155, 148, 153, 152, 137, 116, 100, 98, 103, 87, 59, 44, + 64, 92, 110, 131, 149, 137, 134, 130, 136, 143, 118, 43, 24, 29, 46, 40, + 51, 83, 132, 178, 173, 153, 153, 153, 155, 154, 151, 145, 141, 138, 137, 136, + 136, 136, 125, 99, 77, 44, 61, 84, 130, 162, 149, 156, 165, 140, 142, 142, + 139, 141, 141, 135, 126, 122, 108, 97, 102, 86, 59, 60, 51, 64, 61, 55, + 22, 25, 24, 20, 19, 21, 21, 17, 19, 19, 20, 21, 21, 21, 20, 20, + 20, 20, 20, 18, 18, 21, 27, 31, 26, 28, 28, 26, 28, 32, 31, 27, + 27, 38, 33, 17, 19, 34, 36, 32, 30, 96, 144, 148, 143, 139, 133, 132, + 145, 150, 156, 157, 155, 151, 149, 147, 140, 136, 135, 132, 132, 130, 130, 130, + 122, 125, 128, 131, 130, 128, 124, 122, 126, 123, 123, 122, 120, 120, 121, 121, + 119, 120, 123, 123, 125, 126, 127, 131, 133, 138, 146, 153, 159, 160, 160, 158, + 154, 140, 135, 138, 129, 102, 79, 70, 53, 71, 58, 31, 46, 50, 88, 77, + 125, 144, 150, 149, 159, 166, 171, 181, 184, 185, 184, 180, 176, 174, 178, 182, + 172, 174, 175, 174, 171, 168, 164, 161, 168, 161, 156, 156, 159, 156, 148, 136, + 138, 118, 103, 100, 93, 87, 101, 125, 135, 147, 144, 145, 131, 118, 50, 33, + 32, 48, 38, 68, 127, 164, 181, 174, 158, 149, 147, 154, 154, 147, 141, 141, + 140, 137, 140, 142, 135, 126, 111, 93, 80, 44, 40, 85, 144, 136, 138, 150, + 142, 144, 143, 139, 139, 139, 135, 128, 123, 121, 113, 105, 74, 46, 50, 43, + 51, 54, 52, 22, 25, 24, 20, 19, 21, 20, 16, 19, 19, 20, 21, 21, + 21, 20, 20, 20, 21, 23, 20, 21, 24, 29, 33, 30, 31, 30, 27, 28, + 32, 29, 25, 33, 37, 30, 30, 47, 47, 36, 34, 60, 124, 153, 128, 120, + 139, 150, 148, 141, 148, 154, 153, 147, 137, 132, 128, 134, 132, 130, 126, 127, + 129, 132, 132, 128, 127, 128, 129, 129, 129, 128, 128, 130, 127, 126, 126, 126, + 127, 128, 129, 123, 123, 127, 125, 125, 125, 127, 130, 133, 138, 144, 148, 151, + 153, 156, 156, 155, 146, 134, 130, 133, 136, 129, 119, 88, 86, 23, 99, 36, + 50, 92, 111, 117, 136, 147, 151, 160, 162, 164, 171, 191, 189, 188, 186, 184, + 181, 177, 175, 179, 180, 182, 184, 183, 179, 175, 173, 169, 169, 167, 163, 158, + 155, 157, 157, 157, 151, 146, 142, 134, 122, 108, 101, 112, 117, 117, 128, 130, + 131, 58, 21, 35, 46, 42, 95, 165, 181, 179, 176, 163, 149, 142, 149, 151, + 144, 139, 141, 137, 133, 144, 148, 134, 127, 123, 111, 69, 61, 60, 50, 99, + 122, 143, 145, 145, 147, 144, 137, 135, 136, 133, 128, 114, 115, 109, 101, 72, + 48, 52, 43, 45, 49, 49, 21, 24, 24, 21, 20, 21, 20, 16, 20, 20, + 21, 21, 21, 20, 19, 20, 22, 23, 24, 25, 25, 25, 28, 31, 31, 32, + 31, 30, 32, 37, 34, 30, 29, 32, 33, 38, 41, 32, 29, 43, 84, 121, + 141, 141, 145, 146, 137, 130, 141, 145, 149, 147, 141, 132, 127, 123, 123, 125, + 128, 127, 129, 131, 131, 126, 127, 124, 123, 123, 123, 124, 126, 127, 125, 125, + 125, 125, 126, 127, 128, 129, 127, 128, 129, 128, 128, 128, 129, 130, 133, 138, + 143, 146, 147, 147, 149, 150, 143, 152, 151, 139, 135, 143, 143, 134, 141, 129, + 152, 239, 63, 43, 105, 104, 132, 146, 153, 157, 166, 167, 169, 178, 181, 182, + 185, 188, 190, 189, 185, 182, 185, 185, 190, 193, 194, 191, 189, 188, 174, 174, + 170, 165, 161, 161, 165, 170, 163, 164, 158, 146, 143, 147, 142, 134, 131, 122, + 122, 128, 134, 139, 84, 47, 41, 55, 64, 126, 183, 180, 176, 178, 168, 153, + 142, 145, 148, 144, 139, 137, 135, 126, 141, 150, 134, 129, 133, 121, 75, 62, + 75, 59, 105, 115, 132, 141, 142, 145, 144, 137, 135, 135, 132, 128, 116, 108, + 97, 97, 78, 54, 52, 36, 24, 26, 27, 21, 24, 25, 22, 22, 23, 22, + 18, 22, 22, 22, 22, 21, 20, 19, 18, 23, 26, 28, 29, 29, 28, 29, + 29, 29, 32, 31, 30, 33, 37, 34, 30, 15, 25, 38, 44, 42, 49, 79, + 108, 136, 143, 143, 145, 155, 154, 147, 149, 143, 142, 141, 139, 137, 132, 130, + 129, 121, 125, 129, 127, 130, 133, 133, 126, 122, 121, 121, 121, 120, 121, 122, + 122, 121, 121, 122, 123, 126, 127, 128, 126, 129, 130, 130, 131, 133, 134, 134, + 133, 135, 142, 150, 154, 154, 152, 153, 153, 143, 155, 160, 151, 143, 142, 136, + 127, 130, 157, 121, 44, 139, 131, 143, 139, 143, 150, 146, 146, 157, 162, 170, + 184, 178, 184, 191, 193, 194, 192, 193, 194, 190, 188, 193, 197, 198, 192, 191, + 194, 200, 189, 176, 172, 172, 172, 165, 158, 154, 167, 173, 167, 156, 154, 153, + 151, 152, 134, 135, 113, 104, 88, 51, 23, 57, 86, 109, 157, 182, 170, 174, + 177, 169, 158, 146, 146, 149, 149, 140, 131, 140, 122, 137, 151, 138, 136, 140, + 122, 86, 42, 62, 72, 133, 116, 109, 120, 133, 139, 143, 139, 137, 136, 132, + 127, 134, 122, 107, 103, 72, 34, 25, 9, 9, 10, 18, 19, 23, 25, 22, + 22, 24, 22, 18, 23, 23, 23, 22, 21, 20, 18, 18, 21, 26, 27, 29, + 29, 28, 27, 28, 27, 30, 28, 27, 29, 32, 28, 24, 41, 32, 30, 34, + 48, 81, 116, 130, 129, 143, 143, 139, 145, 150, 149, 154, 139, 135, 130, 125, + 124, 124, 125, 125, 130, 132, 132, 127, 129, 135, 139, 133, 124, 122, 125, 126, + 125, 125, 123, 123, 126, 127, 128, 130, 133, 134, 134, 132, 131, 130, 130, 134, + 138, 138, 138, 136, 134, 144, 156, 164, 166, 163, 164, 163, 162, 157, 148, 144, + 146, 148, 147, 142, 148, 109, 137, 147, 127, 149, 131, 140, 139, 149, 151, 157, + 172, 177, 184, 197, 194, 201, 207, 202, 193, 186, 188, 193, 192, 189, 190, 195, + 193, 187, 186, 190, 181, 179, 177, 178, 181, 183, 180, 180, 181, 176, 169, 165, + 163, 163, 164, 166, 168, 148, 165, 149, 152, 124, 85, 45, 75, 116, 147, 175, + 175, 161, 171, 174, 170, 161, 152, 149, 154, 155, 143, 129, 147, 122, 134, 152, + 143, 144, 145, 119, 81, 56, 87, 86, 151, 146, 132, 123, 123, 132, 140, 142, + 139, 139, 135, 128, 106, 106, 105, 105, 68, 24, 29, 30, 41, 38, 43, 20, + 20, 22, 21, 21, 20, 20, 19, 19, 21, 23, 22, 19, 18, 18, 18, 19, + 22, 24, 26, 24, 24, 25, 27, 25, 31, 33, 28, 24, 25, 24, 23, 26, + 38, 27, 46, 76, 122, 125, 127, 138, 147, 137, 148, 130, 117, 90, 104, 106, + 115, 118, 119, 122, 130, 136, 137, 127, 129, 133, 134, 136, 135, 137, 137, 123, + 120, 122, 122, 123, 125, 127, 128, 123, 129, 132, 131, 131, 133, 134, 134, 140, + 143, 144, 142, 140, 139, 141, 144, 147, 158, 160, 160, 165, 162, 160, 165, 167, + 162, 154, 150, 146, 142, 139, 137, 136, 135, 135, 137, 141, 142, 141, 138, 149, + 154, 156, 152, 149, 152, 165, 177, 197, 205, 203, 188, 181, 186, 188, 182, 174, + 177, 183, 187, 183, 178, 181, 188, 184, 182, 179, 178, 176, 175, 175, 176, 175, + 185, 187, 178, 176, 184, 187, 183, 173, 168, 171, 171, 160, 148, 126, 97, 120, + 142, 164, 174, 176, 175, 172, 167, 180, 164, 152, 154, 162, 158, 145, 134, 142, + 149, 137, 124, 142, 170, 157, 116, 98, 40, 75, 118, 144, 139, 156, 163, 130, + 116, 129, 143, 137, 135, 135, 122, 118, 108, 106, 107, 50, 51, 46, 38, 49, + 62, 64, 19, 19, 19, 19, 22, 22, 22, 22, 18, 20, 22, 21, 19, 18, + 19, 19, 19, 22, 24, 25, 22, 22, 23, 24, 26, 31, 30, 25, 22, 22, + 21, 21, 46, 42, 45, 90, 103, 118, 117, 130, 118, 140, 151, 108, 77, 47, + 23, 42, 48, 71, 100, 119, 131, 136, 133, 128, 135, 136, 138, 137, 136, 133, + 133, 133, 126, 124, 124, 125, 126, 128, 129, 130, 129, 134, 136, 134, 132, 134, + 134, 134, 142, 145, 147, 147, 147, 145, 148, 148, 146, 154, 156, 156, 162, 159, + 155, 163, 158, 156, 154, 150, 147, 143, 137, 134, 134, 133, 134, 139, 145, 148, + 150, 149, 151, 152, 153, 156, 156, 156, 156, 159, 171, 187, 194, 189, 186, 186, + 184, 175, 177, 175, 178, 184, 186, 182, 180, 181, 182, 181, 181, 180, 181, 181, + 181, 181, 178, 187, 189, 181, 178, 184, 184, 179, 194, 186, 184, 181, 173, 173, + 166, 149, 148, 162, 173, 174, 172, 172, 172, 169, 178, 169, 164, 168, 170, 163, + 149, 138, 131, 143, 150, 148, 146, 146, 133, 118, 96, 50, 91, 128, 150, 143, + 154, 155, 169, 133, 122, 132, 140, 147, 142, 120, 114, 103, 103, 105, 53, 45, + 43, 43, 70, 79, 80, 18, 20, 21, 22, 22, 23, 24, 24, 19, 20, 23, + 23, 21, 21, 22, 23, 19, 22, 24, 24, 23, 23, 23, 25, 27, 29, 28, + 24, 23, 23, 24, 26, 47, 39, 61, 116, 118, 126, 127, 136, 139, 147, 129, + 38, 29, 27, 49, 94, 90, 109, 129, 136, 138, 136, 133, 129, 134, 135, 135, + 134, 130, 127, 127, 125, 129, 127, 128, 128, 130, 131, 133, 134, 132, 137, 139, + 136, 135, 137, 138, 138, 138, 143, 147, 148, 148, 146, 148, 148, 143, 154, 152, + 153, 158, 155, 151, 158, 152, 152, 152, 151, 150, 145, 138, 134, 134, 133, 135, + 138, 146, 152, 157, 159, 160, 155, 152, 155, 160, 163, 159, 155, 157, 173, 185, + 185, 183, 182, 180, 170, 177, 168, 170, 179, 188, 188, 182, 177, 179, 179, 181, + 182, 182, 182, 183, 183, 181, 189, 191, 185, 182, 185, 183, 177, 188, 181, 179, + 174, 168, 175, 180, 171, 168, 175, 180, 178, 174, 172, 170, 168, 172, 169, 170, + 175, 174, 163, 149, 140, 132, 138, 152, 163, 153, 134, 123, 126, 89, 70, 119, + 138, 145, 136, 153, 161, 171, 135, 115, 120, 132, 142, 135, 114, 114, 103, 103, + 99, 49, 35, 37, 42, 53, 61, 61, 20, 22, 22, 22, 22, 23, 23, 23, + 21, 22, 25, 25, 24, 24, 27, 28, 19, 20, 22, 25, 25, 24, 26, 27, + 22, 22, 21, 23, 25, 29, 31, 33, 45, 48, 75, 119, 112, 137, 143, 132, + 139, 138, 83, 23, 33, 31, 53, 77, 114, 126, 135, 133, 131, 134, 139, 143, + 128, 129, 130, 130, 129, 127, 128, 128, 129, 129, 130, 130, 132, 133, 135, 136, + 133, 138, 140, 137, 136, 139, 141, 139, 135, 141, 144, 148, 146, 145, 143, 145, + 145, 155, 152, 152, 156, 152, 150, 156, 153, 155, 155, 154, 152, 147, 142, 136, + 133, 132, 132, 137, 142, 151, 158, 162, 165, 157, 150, 148, 153, 159, 162, 161, + 163, 171, 176, 173, 173, 175, 176, 173, 171, 164, 164, 173, 183, 185, 183, 180, + 177, 178, 181, 181, 182, 182, 182, 182, 184, 190, 193, 190, 189, 190, 186, 180, + 189, 186, 189, 186, 178, 182, 187, 180, 168, 174, 181, 184, 183, 180, 176, 172, + 171, 167, 169, 176, 177, 167, 154, 144, 147, 139, 141, 155, 157, 146, 135, 135, + 98, 85, 124, 130, 142, 141, 152, 152, 131, 118, 115, 120, 126, 127, 121, 110, + 110, 108, 102, 75, 29, 20, 24, 25, 38, 50, 54, 22, 24, 23, 22, 21, + 20, 20, 19, 20, 21, 22, 22, 21, 23, 25, 26, 16, 17, 20, 23, 23, + 24, 28, 29, 24, 21, 20, 24, 29, 31, 33, 37, 53, 57, 84, 126, 117, + 141, 144, 128, 128, 117, 28, 28, 36, 27, 45, 52, 102, 115, 129, 131, 131, + 131, 131, 129, 129, 130, 133, 134, 133, 132, 135, 137, 130, 130, 130, 131, 132, + 134, 135, 136, 137, 141, 142, 137, 135, 138, 139, 137, 136, 141, 144, 147, 144, + 143, 141, 141, 145, 154, 150, 148, 151, 147, 145, 153, 157, 157, 155, 151, 149, + 144, 141, 136, 131, 130, 129, 132, 134, 142, 148, 155, 159, 155, 150, 145, 145, + 150, 153, 157, 165, 168, 166, 164, 165, 168, 171, 172, 171, 165, 163, 167, 173, + 175, 176, 180, 177, 177, 177, 177, 179, 179, 180, 180, 182, 187, 190, 192, 193, + 193, 189, 184, 189, 188, 193, 190, 180, 183, 187, 180, 169, 170, 175, 181, 185, + 185, 182, 181, 175, 166, 163, 170, 176, 172, 161, 151, 151, 146, 143, 147, 153, + 154, 144, 134, 111, 94, 118, 120, 149, 152, 142, 125, 109, 114, 120, 123, 128, + 125, 117, 114, 104, 107, 94, 45, 13, 13, 24, 14, 33, 50, 59, 25, 24, + 23, 22, 20, 19, 17, 17, 18, 19, 19, 18, 18, 19, 22, 21, 15, 16, + 20, 22, 23, 23, 27, 28, 28, 22, 22, 28, 32, 31, 32, 35, 45, 47, + 74, 128, 127, 137, 135, 138, 136, 95, 2, 25, 27, 36, 74, 99, 116, 126, + 134, 135, 134, 131, 127, 122, 132, 133, 135, 133, 131, 131, 133, 133, 131, 131, + 131, 132, 133, 135, 136, 137, 142, 145, 144, 138, 134, 135, 136, 134, 140, 142, + 144, 146, 143, 142, 140, 142, 141, 148, 145, 143, 146, 145, 141, 149, 158, 159, + 154, 151, 147, 142, 139, 135, 132, 131, 130, 128, 129, 131, 136, 143, 149, 154, + 156, 154, 150, 148, 149, 153, 155, 156, 159, 160, 162, 163, 163, 165, 171, 169, + 167, 167, 168, 166, 169, 175, 176, 175, 174, 173, 176, 177, 179, 180, 179, 181, + 185, 189, 192, 192, 189, 185, 184, 180, 182, 178, 170, 176, 183, 177, 171, 165, + 161, 166, 171, 174, 176, 179, 172, 161, 154, 159, 167, 166, 159, 151, 141, 152, + 156, 152, 147, 147, 138, 127, 98, 105, 140, 132, 143, 131, 123, 120, 122, 126, + 121, 119, 130, 128, 119, 113, 106, 106, 87, 35, 22, 24, 35, 23, 30, 48, + 59, 22, 23, 22, 21, 20, 19, 17, 17, 19, 20, 20, 18, 15, 17, 20, + 21, 18, 16, 20, 20, 21, 21, 23, 24, 29, 24, 23, 30, 37, 35, 34, + 36, 39, 60, 79, 117, 119, 134, 132, 144, 130, 63, 29, 44, 53, 67, 84, + 103, 116, 118, 120, 120, 126, 133, 138, 135, 132, 131, 132, 129, 128, 126, 128, + 129, 132, 132, 133, 133, 134, 136, 138, 139, 141, 145, 144, 138, 136, 138, 139, + 138, 138, 140, 141, 142, 139, 140, 140, 142, 135, 144, 141, 140, 145, 145, 143, + 154, 158, 161, 158, 156, 153, 147, 142, 137, 133, 131, 130, 126, 125, 125, 128, + 134, 140, 143, 147, 148, 148, 150, 153, 156, 150, 151, 154, 156, 158, 158, 160, + 161, 169, 166, 168, 170, 170, 166, 168, 172, 173, 171, 171, 170, 172, 175, 180, + 182, 179, 178, 180, 186, 190, 190, 187, 184, 187, 183, 185, 183, 177, 183, 188, + 180, 171, 161, 156, 160, 165, 166, 167, 169, 171, 162, 156, 158, 161, 159, 155, + 152, 145, 153, 157, 154, 145, 140, 131, 124, 92, 112, 152, 135, 133, 114, 118, + 136, 135, 143, 130, 119, 128, 125, 112, 114, 111, 96, 73, 36, 41, 33, 39, + 34, 40, 55, 65, 20, 20, 20, 20, 20, 19, 18, 18, 23, 24, 23, 19, + 18, 19, 23, 24, 19, 18, 21, 20, 19, 18, 20, 22, 27, 21, 22, 33, + 41, 40, 37, 39, 56, 98, 104, 103, 100, 131, 133, 138, 128, 35, 55, 56, + 91, 124, 123, 135, 129, 130, 132, 132, 136, 138, 134, 127, 132, 132, 132, 132, + 129, 130, 131, 133, 134, 134, 134, 135, 136, 138, 139, 140, 136, 140, 141, 138, + 138, 143, 146, 145, 134, 133, 137, 136, 136, 136, 139, 141, 134, 141, 141, 140, + 148, 148, 149, 159, 159, 162, 164, 164, 161, 155, 146, 138, 132, 133, 132, 127, + 125, 124, 126, 131, 127, 128, 127, 129, 136, 145, 155, 160, 160, 154, 149, 148, + 151, 153, 157, 162, 162, 162, 166, 173, 176, 174, 173, 173, 172, 170, 169, 168, + 171, 177, 183, 187, 183, 181, 182, 187, 191, 191, 188, 186, 181, 179, 185, 187, + 181, 184, 182, 169, 172, 164, 162, 171, 176, 172, 167, 165, 176, 171, 168, 168, + 165, 160, 159, 159, 159, 151, 145, 148, 148, 143, 132, 126, 113, 110, 128, 115, + 135, 129, 128, 139, 136, 155, 148, 129, 127, 118, 109, 117, 108, 79, 57, 31, + 47, 24, 26, 31, 43, 54, 59, 18, 24, 25, 23, 21, 23, 22, 18, 22, + 18, 14, 16, 21, 23, 22, 18, 23, 16, 15, 16, 22, 22, 20, 17, 31, + 29, 42, 37, 34, 38, 35, 47, 82, 111, 107, 105, 107, 109, 125, 131, 121, + 54, 67, 99, 105, 116, 117, 127, 126, 128, 133, 137, 139, 138, 136, 132, 134, + 132, 133, 132, 134, 135, 135, 135, 140, 142, 143, 142, 140, 139, 140, 141, 145, + 142, 140, 139, 140, 140, 139, 136, 144, 139, 135, 131, 130, 129, 130, 132, 137, + 140, 144, 143, 142, 143, 148, 157, 161, 167, 164, 162, 137, 154, 140, 135, 130, + 133, 134, 131, 130, 133, 141, 144, 140, 142, 135, 130, 134, 134, 138, 151, 152, + 156, 157, 153, 147, 145, 150, 159, 163, 173, 176, 170, 165, 168, 173, 173, 168, + 170, 171, 170, 171, 173, 176, 180, 181, 182, 185, 188, 191, 191, 188, 185, 189, + 186, 183, 180, 176, 174, 175, 179, 168, 162, 165, 179, 185, 179, 176, 180, 164, + 168, 172, 173, 170, 167, 166, 164, 159, 147, 149, 156, 146, 139, 133, 125, 118, + 105, 129, 128, 129, 143, 138, 146, 154, 156, 147, 131, 121, 119, 116, 108, 97, + 70, 50, 29, 29, 31, 19, 35, 38, 53, 61, 20, 24, 25, 23, 23, 23, + 22, 18, 22, 22, 20, 19, 18, 20, 24, 24, 24, 22, 19, 18, 18, 20, + 22, 22, 36, 32, 43, 35, 35, 41, 37, 47, 98, 122, 113, 109, 112, 110, + 123, 122, 119, 74, 90, 104, 105, 123, 128, 129, 129, 129, 133, 137, 137, 136, + 132, 130, 132, 132, 131, 133, 134, 135, 135, 135, 136, 137, 139, 139, 138, 138, + 140, 142, 142, 140, 138, 138, 139, 139, 138, 136, 143, 139, 135, 132, 131, 130, + 131, 134, 139, 138, 140, 142, 145, 148, 149, 153, 152, 159, 152, 155, 139, 150, + 132, 131, 135, 125, 125, 133, 136, 144, 143, 130, 130, 138, 141, 142, 146, 138, + 128, 131, 143, 147, 151, 150, 147, 146, 148, 152, 162, 173, 177, 172, 169, 171, + 175, 174, 173, 173, 172, 171, 172, 172, 174, 176, 177, 181, 187, 193, 196, 197, + 196, 196, 182, 183, 184, 183, 180, 175, 172, 171, 170, 163, 166, 180, 185, 176, + 166, 163, 174, 176, 177, 173, 167, 161, 158, 155, 156, 149, 154, 159, 146, 137, + 134, 129, 110, 105, 133, 136, 138, 149, 145, 152, 148, 150, 144, 129, 121, 121, + 116, 108, 95, 58, 40, 27, 25, 28, 20, 30, 41, 55, 60, 20, 26, 27, + 22, 22, 25, 22, 19, 23, 25, 25, 22, 17, 18, 22, 28, 21, 22, 21, + 21, 18, 20, 27, 31, 32, 27, 36, 30, 31, 40, 36, 48, 111, 131, 117, + 112, 118, 115, 123, 116, 109, 90, 106, 106, 103, 125, 134, 126, 132, 132, 133, + 135, 135, 134, 130, 129, 132, 133, 134, 135, 134, 135, 136, 137, 134, 136, 138, + 138, 139, 140, 143, 146, 141, 139, 138, 138, 140, 140, 139, 137, 140, 137, 136, + 134, 133, 132, 135, 135, 140, 137, 138, 142, 148, 151, 151, 149, 146, 157, 144, + 147, 143, 142, 126, 125, 127, 119, 131, 134, 123, 133, 151, 149, 142, 148, 145, + 143, 149, 145, 137, 139, 134, 137, 142, 147, 149, 148, 146, 148, 162, 170, 174, + 173, 172, 173, 174, 173, 177, 174, 173, 172, 172, 172, 172, 171, 171, 177, 184, + 187, 185, 182, 181, 181, 181, 181, 180, 178, 174, 171, 168, 165, 169, 163, 167, + 182, 190, 185, 176, 172, 170, 171, 171, 168, 164, 161, 159, 157, 156, 153, 160, + 162, 145, 135, 131, 126, 101, 110, 138, 143, 145, 151, 148, 155, 145, 148, 141, + 127, 119, 120, 113, 102, 91, 41, 34, 32, 24, 28, 25, 31, 54, 65, 64, + 22, 26, 26, 24, 22, 25, 23, 20, 23, 23, 25, 23, 21, 19, 21, 23, + 17, 18, 20, 21, 25, 29, 33, 38, 29, 24, 36, 30, 30, 40, 38, 54, + 112, 130, 115, 115, 125, 127, 130, 120, 107, 100, 108, 110, 108, 127, 137, 127, + 132, 131, 131, 132, 132, 132, 130, 130, 135, 133, 134, 135, 136, 136, 138, 137, + 139, 141, 143, 143, 143, 145, 147, 150, 140, 139, 139, 140, 142, 142, 141, 139, + 136, 135, 134, 133, 133, 133, 136, 136, 141, 142, 142, 146, 148, 149, 148, 145, + 146, 159, 145, 144, 145, 132, 124, 123, 130, 122, 139, 145, 125, 126, 139, 135, + 149, 152, 148, 143, 153, 153, 149, 151, 137, 137, 140, 145, 150, 151, 148, 146, + 160, 166, 171, 173, 174, 173, 173, 173, 179, 176, 174, 172, 173, 174, 172, 171, + 182, 189, 196, 197, 192, 186, 185, 186, 190, 186, 178, 169, 165, 166, 166, 164, + 154, 154, 160, 173, 181, 179, 176, 176, 164, 164, 164, 162, 161, 160, 159, 157, + 160, 155, 159, 160, 144, 135, 127, 117, 98, 119, 140, 144, 147, 146, 145, 153, + 148, 147, 139, 124, 116, 114, 107, 95, 85, 31, 34, 38, 24, 30, 35, 38, + 41, 51, 49, 22, 27, 26, 23, 21, 25, 24, 21, 22, 20, 22, 23, 25, + 22, 18, 14, 20, 18, 19, 25, 34, 37, 35, 31, 30, 29, 41, 32, 28, + 36, 36, 57, 109, 131, 119, 122, 134, 137, 139, 129, 122, 111, 107, 119, 123, + 127, 132, 128, 129, 128, 128, 129, 130, 132, 133, 131, 135, 136, 136, 138, 139, + 138, 141, 139, 144, 146, 148, 148, 147, 146, 147, 148, 138, 137, 137, 138, 140, + 140, 138, 136, 134, 134, 134, 134, 136, 137, 140, 141, 144, 147, 151, 152, 149, + 146, 147, 146, 142, 154, 143, 141, 141, 126, 130, 115, 79, 70, 91, 124, 143, + 151, 149, 131, 137, 149, 153, 152, 161, 159, 148, 145, 146, 143, 141, 143, 148, + 150, 147, 146, 157, 161, 166, 170, 171, 170, 171, 172, 178, 176, 173, 172, 174, + 175, 175, 175, 177, 184, 193, 195, 192, 189, 189, 191, 192, 189, 179, 168, 164, + 166, 164, 158, 157, 164, 178, 189, 190, 184, 179, 179, 170, 168, 166, 163, 160, + 158, 155, 152, 159, 151, 151, 152, 143, 138, 128, 112, 98, 128, 140, 142, 149, + 144, 147, 155, 146, 144, 134, 121, 112, 111, 102, 88, 69, 27, 38, 41, 23, + 28, 38, 48, 58, 71, 70, 23, 27, 25, 22, 23, 25, 24, 21, 23, 19, + 18, 21, 23, 22, 15, 10, 26, 25, 25, 28, 34, 35, 29, 22, 30, 27, + 38, 29, 23, 29, 26, 43, 108, 136, 128, 133, 141, 140, 143, 134, 133, 120, + 104, 122, 131, 122, 126, 125, 127, 126, 128, 129, 131, 133, 134, 135, 135, 136, + 137, 138, 139, 140, 141, 142, 145, 146, 149, 149, 147, 144, 143, 142, 134, 134, + 134, 135, 137, 136, 134, 131, 132, 133, 134, 136, 139, 141, 144, 145, 147, 152, + 156, 154, 148, 145, 148, 149, 136, 145, 138, 135, 137, 127, 140, 95, 12, 17, + 34, 66, 101, 121, 136, 149, 143, 156, 155, 148, 153, 155, 150, 151, 150, 145, + 141, 140, 143, 145, 143, 145, 156, 157, 160, 167, 169, 168, 170, 172, 175, 176, + 176, 174, 174, 174, 177, 179, 175, 179, 184, 184, 181, 178, 177, 178, 185, 187, + 184, 176, 172, 172, 162, 150, 155, 168, 186, 200, 204, 198, 190, 186, 168, 167, + 165, 165, 165, 164, 161, 156, 154, 145, 143, 145, 140, 141, 132, 113, 97, 135, + 139, 141, 153, 146, 151, 155, 138, 138, 131, 118, 109, 105, 91, 75, 50, 26, + 39, 36, 22, 30, 40, 52, 61, 71, 71, 23, 27, 27, 22, 23, 25, 25, + 22, 24, 22, 20, 20, 19, 18, 15, 14, 30, 30, 31, 30, 31, 30, 26, + 22, 27, 19, 27, 21, 23, 30, 22, 31, 102, 136, 136, 138, 142, 137, 140, + 134, 131, 127, 106, 121, 132, 121, 131, 129, 128, 129, 131, 133, 134, 135, 135, + 135, 138, 138, 139, 140, 141, 143, 144, 142, 141, 144, 148, 150, 148, 144, 141, + 139, 136, 135, 135, 137, 137, 136, 133, 130, 136, 137, 139, 142, 146, 148, 151, + 152, 151, 152, 153, 152, 153, 152, 155, 152, 140, 138, 135, 134, 137, 130, 143, + 60, 8, 26, 24, 28, 44, 48, 68, 113, 143, 158, 155, 143, 143, 150, 155, + 162, 152, 149, 145, 143, 144, 145, 146, 147, 156, 155, 157, 165, 168, 167, 170, + 174, 173, 176, 180, 177, 171, 170, 176, 182, 191, 191, 190, 188, 185, 182, 179, + 178, 180, 185, 183, 176, 175, 176, 166, 152, 150, 154, 162, 174, 184, 188, 185, + 179, 163, 162, 162, 164, 167, 166, 162, 157, 153, 146, 144, 142, 135, 137, 131, + 114, 97, 141, 137, 140, 155, 144, 147, 148, 133, 135, 130, 118, 107, 94, 72, + 49, 38, 29, 36, 28, 27, 40, 42, 56, 76, 88, 89, 25, 27, 26, 23, + 24, 27, 27, 24, 25, 25, 25, 20, 16, 15, 17, 23, 26, 29, 29, 28, + 25, 24, 26, 28, 30, 18, 23, 22, 33, 42, 30, 35, 90, 129, 134, 139, + 139, 132, 138, 135, 127, 138, 115, 125, 137, 133, 148, 144, 135, 134, 136, 138, + 138, 138, 137, 135, 138, 138, 139, 140, 142, 141, 142, 142, 140, 145, 151, 154, + 151, 146, 142, 139, 138, 138, 138, 139, 140, 139, 135, 132, 137, 141, 144, 147, + 152, 154, 155, 157, 154, 150, 149, 149, 156, 159, 158, 154, 148, 137, 136, 138, + 138, 136, 144, 32, 7, 30, 21, 24, 50, 41, 37, 74, 121, 144, 154, 148, + 148, 150, 147, 149, 152, 151, 150, 149, 149, 149, 151, 152, 157, 154, 156, 164, + 168, 169, 171, 178, 175, 180, 185, 181, 172, 169, 175, 183, 183, 182, 180, 181, + 182, 182, 181, 180, 184, 186, 181, 172, 173, 179, 174, 161, 181, 170, 159, 160, + 173, 185, 187, 182, 168, 166, 164, 164, 163, 158, 151, 143, 156, 150, 151, 144, + 132, 133, 128, 112, 96, 143, 133, 135, 151, 135, 134, 133, 133, 134, 130, 118, + 102, 82, 52, 23, 33, 33, 35, 22, 34, 51, 46, 58, 69, 82, 86, 26, + 29, 31, 31, 32, 30, 30, 27, 32, 27, 24, 21, 20, 20, 23, 23, 21, + 20, 20, 22, 22, 24, 27, 27, 26, 27, 28, 27, 25, 25, 27, 33, 79, + 129, 132, 125, 130, 129, 138, 142, 137, 136, 124, 122, 136, 144, 147, 156, 144, + 145, 144, 144, 140, 139, 138, 137, 140, 133, 132, 136, 140, 139, 139, 141, 151, + 152, 149, 148, 146, 143, 139, 135, 128, 128, 129, 131, 135, 137, 135, 134, 139, + 143, 146, 149, 151, 152, 152, 153, 163, 158, 152, 148, 147, 149, 150, 149, 151, + 133, 139, 134, 136, 133, 123, 7, 15, 42, 31, 34, 36, 52, 41, 53, 99, + 150, 158, 143, 138, 155, 131, 148, 146, 152, 152, 147, 151, 162, 158, 146, 162, + 160, 157, 155, 161, 172, 180, 184, 188, 188, 184, 180, 175, 176, 180, 183, 183, + 187, 191, 190, 185, 180, 178, 179, 186, 183, 180, 181, 184, 180, 172, 165, 161, + 170, 168, 145, 173, 170, 176, 178, 162, 158, 163, 164, 155, 156, 160, 154, 155, + 141, 147, 144, 134, 137, 134, 108, 101, 131, 127, 116, 132, 132, 121, 131, 130, + 122, 101, 77, 59, 48, 36, 27, 32, 30, 28, 29, 36, 48, 61, 67, 78, + 73, 66, 24, 27, 28, 29, 28, 28, 28, 26, 29, 27, 27, 25, 26, 25, + 26, 26, 17, 17, 17, 19, 21, 24, 26, 27, 28, 29, 30, 29, 26, 24, + 26, 31, 77, 124, 129, 125, 130, 130, 143, 148, 147, 145, 133, 129, 142, 145, + 144, 151, 148, 151, 153, 153, 148, 142, 140, 137, 141, 135, 133, 134, 135, 134, + 131, 135, 148, 149, 149, 148, 144, 141, 138, 134, 135, 135, 138, 137, 133, 133, + 133, 138, 146, 149, 149, 150, 151, 152, 153, 154, 156, 155, 154, 154, 154, 152, + 148, 143, 141, 131, 135, 134, 140, 130, 111, 10, 31, 34, 25, 46, 54, 60, + 42, 45, 77, 153, 161, 150, 145, 149, 131, 144, 145, 151, 155, 152, 159, 167, + 164, 152, 155, 152, 153, 155, 161, 170, 178, 180, 181, 182, 180, 177, 173, 176, + 182, 188, 192, 193, 193, 190, 185, 181, 183, 184, 192, 188, 185, 185, 187, 184, + 177, 168, 160, 165, 156, 142, 166, 174, 177, 178, 164, 158, 160, 159, 150, 152, + 158, 155, 154, 143, 146, 146, 134, 135, 130, 104, 95, 125, 124, 117, 131, 125, + 109, 113, 77, 71, 61, 48, 39, 35, 31, 25, 29, 27, 27, 31, 40, 53, + 69, 77, 82, 77, 71, 24, 25, 23, 23, 23, 21, 22, 21, 21, 20, 22, + 23, 24, 22, 21, 20, 22, 24, 24, 25, 27, 29, 29, 31, 29, 31, 30, + 30, 27, 26, 29, 33, 69, 110, 120, 123, 126, 124, 139, 143, 147, 149, 139, + 135, 146, 146, 142, 146, 148, 152, 157, 158, 153, 144, 138, 133, 134, 129, 130, + 134, 137, 139, 141, 146, 147, 147, 148, 148, 145, 141, 138, 135, 129, 132, 138, + 136, 132, 133, 139, 150, 151, 152, 150, 150, 150, 151, 153, 154, 155, 154, 154, + 154, 154, 152, 148, 143, 137, 135, 139, 140, 149, 130, 95, 17, 39, 26, 25, + 58, 55, 58, 48, 49, 62, 162, 158, 149, 144, 137, 132, 143, 144, 149, 154, + 153, 160, 169, 166, 155, 151, 149, 152, 156, 161, 168, 176, 179, 177, 178, 177, + 174, 172, 176, 184, 193, 198, 196, 192, 187, 182, 180, 184, 186, 191, 187, 185, + 184, 184, 182, 178, 172, 164, 164, 145, 142, 154, 175, 172, 176, 166, 158, 158, + 154, 145, 148, 157, 155, 152, 144, 147, 145, 134, 131, 122, 103, 92, 112, 107, + 95, 100, 91, 74, 74, 57, 54, 51, 39, 36, 35, 34, 30, 28, 27, 28, + 33, 42, 56, 71, 80, 83, 80, 77, 24, 23, 21, 20, 20, 20, 21, 20, + 19, 18, 19, 19, 20, 19, 16, 18, 25, 26, 25, 27, 28, 27, 28, 27, + 30, 30, 32, 31, 30, 31, 32, 38, 59, 96, 111, 121, 123, 121, 135, 136, + 137, 140, 137, 136, 145, 145, 140, 145, 147, 151, 155, 155, 151, 144, 137, 134, + 129, 127, 128, 133, 138, 138, 142, 149, 149, 152, 153, 150, 146, 141, 137, 135, + 128, 132, 134, 134, 135, 138, 147, 155, 148, 150, 150, 151, 151, 152, 152, 152, + 157, 153, 149, 146, 147, 148, 149, 148, 137, 140, 138, 139, 150, 127, 76, 22, + 35, 28, 38, 66, 45, 51, 56, 64, 69, 172, 147, 137, 134, 125, 133, 144, + 143, 145, 148, 148, 156, 163, 164, 157, 155, 151, 153, 156, 161, 166, 174, 182, + 182, 184, 183, 178, 175, 178, 187, 196, 193, 191, 187, 182, 179, 178, 181, 183, + 186, 183, 182, 181, 181, 180, 180, 175, 169, 167, 144, 146, 142, 168, 166, 173, + 166, 158, 158, 155, 145, 148, 156, 153, 148, 143, 144, 142, 135, 129, 118, 104, + 77, 82, 71, 54, 55, 50, 44, 44, 45, 45, 40, 34, 26, 26, 24, 20, + 22, 24, 31, 38, 46, 56, 67, 74, 80, 80, 81, 25, 23, 21, 20, 20, + 18, 20, 21, 24, 21, 20, 16, 16, 16, 16, 19, 17, 20, 21, 24, 24, + 24, 26, 25, 35, 36, 35, 34, 32, 32, 33, 40, 47, 78, 98, 122, 123, + 121, 136, 132, 128, 136, 136, 137, 145, 145, 139, 143, 144, 147, 150, 151, 149, + 144, 141, 141, 136, 133, 133, 134, 135, 133, 133, 139, 153, 156, 154, 148, 141, + 135, 134, 133, 143, 141, 140, 139, 142, 143, 146, 146, 144, 149, 152, 155, 157, + 156, 154, 152, 155, 152, 148, 146, 147, 149, 150, 148, 139, 141, 133, 131, 138, + 120, 58, 18, 27, 32, 46, 68, 45, 57, 59, 56, 84, 168, 136, 129, 130, + 126, 137, 144, 146, 144, 144, 143, 149, 159, 160, 157, 158, 152, 152, 154, 156, + 161, 172, 184, 185, 186, 185, 182, 177, 181, 191, 199, 185, 184, 182, 181, 181, + 180, 179, 178, 180, 179, 180, 180, 181, 181, 181, 180, 169, 166, 149, 152, 136, + 159, 165, 175, 163, 158, 160, 160, 150, 151, 157, 152, 145, 144, 140, 138, 137, + 129, 115, 110, 55, 53, 41, 33, 35, 39, 44, 46, 34, 36, 36, 28, 25, + 24, 25, 22, 19, 24, 36, 46, 55, 62, 69, 72, 78, 81, 84, 23, 22, + 22, 21, 21, 22, 22, 23, 20, 19, 16, 15, 14, 15, 16, 17, 16, 18, + 22, 28, 32, 34, 35, 36, 36, 35, 35, 31, 28, 24, 25, 31, 37, 60, + 81, 112, 116, 117, 135, 127, 129, 138, 137, 140, 146, 143, 137, 138, 145, 147, + 148, 148, 145, 146, 146, 148, 140, 138, 139, 144, 142, 141, 145, 153, 158, 160, + 155, 147, 137, 132, 133, 133, 141, 141, 141, 146, 149, 151, 148, 146, 145, 149, + 154, 158, 159, 158, 154, 152, 147, 148, 150, 152, 154, 152, 147, 142, 143, 142, + 134, 130, 130, 123, 56, 16, 27, 35, 42, 67, 59, 68, 52, 40, 101, 153, + 132, 136, 136, 141, 142, 145, 151, 149, 146, 145, 150, 156, 158, 156, 156, 148, + 146, 150, 151, 156, 170, 186, 184, 184, 183, 182, 182, 186, 193, 198, 183, 183, + 182, 183, 185, 184, 180, 178, 178, 179, 182, 183, 183, 183, 183, 180, 166, 157, + 152, 153, 138, 153, 169, 176, 160, 157, 162, 163, 154, 154, 158, 152, 142, 143, + 139, 134, 138, 128, 116, 118, 45, 40, 36, 32, 35, 39, 41, 41, 33, 37, + 36, 30, 24, 24, 26, 26, 25, 33, 44, 56, 65, 71, 76, 78, 80, 84, + 86, 21, 20, 23, 22, 22, 23, 22, 22, 19, 20, 20, 22, 23, 23, 23, + 21, 19, 20, 25, 32, 36, 38, 39, 37, 28, 28, 27, 25, 23, 19, 22, + 30, 48, 57, 73, 107, 111, 111, 130, 119, 129, 139, 138, 141, 146, 141, 135, + 138, 143, 142, 144, 144, 144, 144, 144, 146, 138, 139, 143, 149, 152, 152, 158, + 168, 161, 163, 157, 147, 137, 134, 137, 141, 140, 145, 152, 158, 160, 160, 157, + 158, 151, 153, 157, 159, 160, 158, 156, 154, 147, 148, 151, 154, 156, 154, 149, + 143, 146, 141, 138, 134, 127, 134, 62, 16, 26, 32, 32, 61, 63, 63, 46, + 52, 124, 144, 139, 147, 137, 149, 146, 152, 155, 150, 149, 150, 154, 155, 154, + 152, 152, 144, 145, 152, 154, 158, 172, 188, 186, 184, 181, 182, 186, 190, 192, + 192, 186, 184, 183, 183, 184, 183, 180, 177, 175, 177, 181, 182, 181, 179, 179, + 176, 168, 150, 155, 149, 145, 149, 170, 167, 159, 155, 161, 163, 155, 155, 159, + 154, 145, 146, 137, 133, 138, 127, 115, 122, 45, 33, 32, 33, 29, 32, 35, + 30, 27, 29, 30, 24, 19, 20, 23, 25, 42, 46, 54, 63, 69, 73, 78, + 80, 81, 85, 86, 20, 21, 23, 25, 26, 26, 25, 25, 26, 29, 34, 38, + 41, 41, 39, 34, 25, 25, 29, 32, 36, 36, 34, 32, 33, 32, 34, 32, + 33, 32, 36, 43, 72, 71, 80, 110, 112, 113, 130, 119, 123, 133, 136, 137, + 143, 141, 133, 138, 137, 139, 142, 142, 141, 141, 139, 140, 139, 140, 142, 147, + 149, 148, 152, 161, 166, 167, 161, 151, 143, 139, 144, 150, 155, 164, 175, 179, + 174, 168, 164, 164, 158, 159, 159, 160, 159, 158, 157, 156, 154, 152, 150, 150, + 152, 153, 154, 151, 141, 134, 136, 134, 122, 138, 64, 9, 20, 30, 28, 56, + 57, 46, 43, 82, 147, 142, 145, 150, 131, 150, 147, 160, 153, 149, 150, 152, + 154, 152, 148, 144, 147, 142, 147, 157, 159, 161, 174, 193, 195, 190, 185, 186, + 190, 191, 189, 186, 189, 185, 181, 180, 181, 180, 178, 175, 173, 175, 180, 180, + 178, 174, 173, 170, 172, 147, 156, 146, 149, 146, 168, 156, 158, 154, 159, 160, + 153, 155, 160, 156, 147, 150, 137, 131, 138, 124, 113, 123, 43, 28, 24, 27, + 24, 28, 39, 36, 30, 35, 39, 37, 35, 41, 49, 53, 59, 60, 64, 66, + 69, 72, 74, 74, 81, 82, 83, 32, 34, 36, 37, 36, 33, 31, 29, 37, + 47, 44, 37, 36, 31, 28, 34, 21, 28, 34, 41, 50, 45, 44, 57, 58, + 54, 55, 57, 64, 68, 71, 73, 91, 90, 92, 100, 107, 111, 114, 118, 124, + 128, 133, 136, 136, 135, 132, 133, 135, 134, 136, 138, 140, 141, 142, 142, 143, + 141, 142, 147, 148, 146, 148, 153, 159, 161, 160, 159, 161, 159, 159, 159, 160, + 161, 166, 168, 172, 175, 174, 174, 167, 165, 162, 159, 160, 162, 166, 168, 163, + 158, 152, 148, 148, 150, 152, 151, 150, 141, 124, 133, 134, 136, 109, 10, 33, + 18, 32, 55, 51, 46, 75, 105, 141, 142, 149, 151, 152, 153, 153, 155, 146, + 151, 157, 156, 152, 148, 145, 144, 150, 149, 152, 156, 161, 166, 170, 173, 193, + 188, 183, 183, 188, 193, 194, 191, 183, 181, 178, 176, 178, 178, 176, 174, 175, + 169, 172, 176, 174, 176, 179, 171, 163, 165, 163, 154, 156, 137, 163, 167, 158, + 158, 157, 155, 157, 159, 155, 147, 146, 141, 142, 137, 139, 108, 129, 128, 49, + 32, 38, 29, 22, 33, 32, 32, 45, 47, 53, 58, 63, 63, 64, 64, 71, + 72, 70, 69, 68, 70, 72, 75, 73, 73, 73, 29, 30, 28, 27, 27, 29, + 31, 32, 26, 37, 42, 40, 39, 32, 29, 32, 39, 44, 47, 60, 79, 80, + 76, 82, 81, 87, 95, 99, 99, 94, 93, 89, 84, 82, 85, 93, 100, 104, + 112, 120, 119, 123, 129, 133, 134, 134, 133, 132, 129, 131, 134, 137, 139, 141, + 143, 143, 140, 138, 140, 145, 146, 144, 144, 149, 154, 156, 158, 158, 156, 155, + 152, 151, 156, 157, 161, 163, 168, 170, 172, 172, 174, 172, 169, 166, 165, 166, + 168, 169, 171, 170, 167, 162, 157, 153, 150, 147, 139, 137, 131, 143, 140, 138, + 117, 37, 22, 29, 45, 43, 30, 49, 105, 148, 146, 146, 151, 153, 152, 153, + 154, 157, 154, 155, 157, 155, 151, 145, 141, 140, 145, 147, 150, 153, 156, 165, + 177, 187, 188, 185, 184, 186, 192, 195, 192, 189, 183, 180, 178, 177, 178, 178, + 176, 174, 176, 169, 173, 176, 173, 174, 176, 168, 168, 166, 160, 151, 156, 142, + 172, 177, 163, 163, 161, 158, 159, 161, 156, 148, 147, 145, 138, 135, 133, 115, + 128, 123, 51, 34, 42, 41, 45, 65, 69, 71, 84, 84, 83, 83, 81, 76, + 76, 74, 75, 75, 76, 74, 75, 77, 80, 80, 79, 77, 76, 34, 35, 32, + 30, 30, 30, 33, 34, 31, 36, 44, 46, 46, 44, 45, 51, 72, 84, 87, + 94, 107, 104, 99, 105, 99, 109, 118, 115, 104, 92, 92, 89, 85, 79, 84, + 89, 93, 97, 107, 118, 114, 118, 125, 130, 132, 134, 134, 134, 129, 129, 131, + 133, 135, 137, 137, 138, 136, 134, 137, 142, 144, 141, 141, 144, 147, 149, 153, + 153, 152, 148, 144, 142, 151, 152, 155, 156, 162, 163, 167, 168, 179, 177, 175, + 173, 171, 170, 170, 170, 167, 170, 172, 169, 160, 151, 145, 141, 141, 139, 141, + 149, 138, 134, 128, 81, 59, 57, 52, 43, 53, 97, 141, 153, 148, 150, 156, + 161, 162, 162, 163, 163, 165, 162, 157, 152, 147, 143, 139, 137, 154, 155, 156, + 152, 151, 159, 174, 185, 181, 182, 184, 190, 195, 194, 190, 186, 180, 178, 178, + 177, 177, 176, 176, 174, 175, 168, 173, 175, 170, 171, 171, 163, 170, 167, 162, + 155, 163, 148, 174, 175, 161, 161, 158, 155, 156, 157, 151, 143, 144, 149, 133, + 134, 124, 124, 129, 120, 57, 35, 42, 47, 58, 79, 82, 85, 83, 84, 83, + 82, 80, 76, 77, 74, 78, 78, 78, 79, 78, 80, 83, 84, 76, 74, 74, + 20, 25, 27, 30, 32, 33, 35, 35, 54, 50, 54, 58, 59, 65, 76, 86, + 101, 118, 119, 114, 108, 99, 96, 108, 97, 101, 105, 98, 87, 84, 89, 89, + 91, 84, 88, 91, 90, 92, 102, 114, 111, 117, 123, 128, 130, 132, 133, 133, + 133, 131, 132, 132, 132, 132, 131, 131, 133, 132, 135, 140, 142, 139, 138, 140, + 142, 143, 145, 145, 145, 144, 142, 140, 149, 149, 149, 152, 155, 160, 165, 166, + 174, 173, 173, 172, 171, 169, 168, 167, 176, 183, 189, 188, 181, 173, 170, 168, + 158, 148, 145, 145, 132, 130, 134, 118, 120, 106, 95, 93, 114, 153, 166, 145, + 147, 152, 160, 168, 172, 172, 171, 170, 168, 162, 153, 148, 145, 143, 139, 136, + 157, 155, 152, 150, 151, 158, 171, 182, 182, 183, 186, 191, 192, 192, 187, 183, + 180, 178, 178, 178, 177, 176, 176, 173, 174, 168, 173, 176, 170, 171, 171, 163, + 169, 169, 168, 165, 172, 150, 166, 159, 158, 158, 156, 153, 153, 154, 149, 140, + 135, 152, 132, 135, 117, 132, 134, 124, 58, 32, 39, 48, 62, 80, 78, 79, + 85, 86, 85, 82, 84, 83, 84, 84, 79, 78, 78, 77, 75, 76, 78, 79, + 68, 69, 71, 48, 51, 54, 59, 68, 75, 81, 85, 70, 58, 65, 72, 69, + 75, 89, 95, 100, 110, 107, 99, 101, 99, 96, 103, 96, 96, 97, 96, 95, + 99, 110, 110, 92, 85, 89, 92, 91, 92, 100, 112, 113, 117, 122, 126, 128, + 130, 131, 132, 132, 130, 131, 131, 131, 130, 129, 129, 136, 134, 136, 141, 142, + 139, 139, 139, 140, 139, 139, 139, 140, 139, 141, 142, 146, 148, 148, 151, 154, + 159, 164, 165, 166, 167, 168, 169, 169, 168, 167, 167, 161, 167, 173, 173, 168, + 164, 165, 166, 165, 151, 148, 143, 133, 134, 136, 138, 147, 147, 157, 163, 163, + 170, 178, 168, 157, 155, 156, 158, 164, 169, 172, 174, 164, 158, 151, 146, 143, + 142, 139, 136, 144, 141, 139, 144, 155, 167, 178, 184, 187, 188, 188, 190, 188, + 187, 182, 180, 179, 178, 176, 176, 178, 177, 173, 171, 173, 167, 172, 176, 171, + 172, 172, 163, 166, 167, 167, 165, 171, 147, 161, 152, 160, 160, 158, 155, 156, + 157, 152, 143, 129, 151, 134, 136, 118, 135, 139, 130, 57, 30, 39, 54, 72, + 91, 85, 84, 95, 94, 91, 85, 85, 81, 81, 80, 81, 81, 79, 78, 75, + 72, 73, 72, 67, 71, 75, 62, 58, 53, 51, 53, 63, 72, 78, 71, 55, + 68, 80, 71, 71, 79, 74, 76, 77, 67, 73, 97, 111, 106, 102, 101, 103, + 104, 105, 108, 109, 112, 106, 87, 81, 84, 89, 91, 91, 97, 106, 112, 117, + 121, 124, 126, 128, 129, 129, 127, 126, 128, 130, 131, 132, 132, 132, 137, 134, + 134, 138, 139, 137, 138, 139, 138, 137, 136, 134, 135, 136, 139, 141, 143, 143, + 146, 148, 154, 156, 159, 163, 162, 163, 165, 166, 167, 168, 168, 168, 172, 175, + 176, 175, 172, 171, 173, 174, 157, 148, 153, 147, 143, 145, 137, 144, 144, 149, + 167, 180, 174, 172, 182, 184, 170, 160, 150, 144, 148, 156, 165, 171, 158, 155, + 152, 149, 145, 143, 141, 139, 143, 137, 134, 140, 154, 168, 175, 177, 190, 190, + 190, 189, 185, 184, 180, 179, 179, 178, 177, 177, 179, 177, 173, 170, 172, 167, + 172, 175, 170, 170, 169, 160, 161, 161, 160, 155, 162, 143, 163, 161, 159, 159, + 156, 153, 153, 154, 148, 139, 129, 146, 135, 134, 126, 135, 142, 131, 63, 36, + 45, 61, 77, 92, 84, 86, 90, 92, 86, 83, 81, 79, 77, 77, 82, 81, + 81, 78, 75, 72, 72, 71, 72, 77, 80, 81, 74, 69, 62, 59, 61, 63, + 65, 66, 46, 59, 74, 61, 60, 69, 57, 56, 61, 59, 65, 89, 101, 98, + 95, 95, 97, 98, 97, 95, 90, 88, 84, 86, 83, 84, 90, 94, 91, 93, + 98, 109, 112, 118, 121, 121, 124, 127, 128, 125, 125, 127, 129, 132, 133, 133, + 133, 137, 133, 132, 135, 135, 134, 136, 139, 137, 134, 134, 132, 133, 134, 135, + 134, 136, 139, 143, 146, 152, 153, 155, 155, 160, 160, 161, 162, 163, 165, 166, + 167, 164, 163, 161, 160, 158, 158, 158, 157, 152, 150, 160, 148, 146, 150, 136, + 150, 146, 142, 151, 163, 169, 177, 181, 171, 167, 158, 150, 144, 148, 153, 158, + 160, 154, 156, 157, 155, 149, 145, 141, 141, 148, 142, 138, 141, 149, 161, 169, + 173, 188, 189, 190, 190, 186, 183, 180, 179, 178, 177, 177, 177, 177, 175, 173, + 169, 172, 166, 172, 174, 167, 165, 162, 152, 152, 155, 157, 153, 159, 141, 164, + 165, 160, 159, 155, 150, 149, 148, 141, 132, 137, 140, 131, 129, 138, 134, 140, + 122, 72, 39, 46, 59, 71, 83, 79, 81, 91, 94, 93, 92, 89, 89, 88, + 88, 81, 80, 79, 76, 73, 70, 70, 71, 75, 79, 81, 69, 70, 71, 70, + 69, 64, 60, 56, 66, 40, 51, 67, 52, 54, 71, 60, 57, 74, 82, 80, + 84, 84, 85, 91, 85, 88, 92, 91, 89, 86, 90, 93, 94, 89, 90, 95, + 96, 92, 90, 91, 106, 109, 113, 116, 119, 123, 127, 128, 130, 129, 130, 131, + 131, 131, 131, 131, 137, 132, 130, 132, 132, 130, 135, 138, 133, 132, 133, 133, + 133, 132, 129, 128, 132, 135, 140, 144, 147, 148, 150, 149, 154, 153, 155, 154, + 157, 158, 160, 161, 166, 164, 162, 161, 161, 161, 160, 156, 156, 157, 166, 145, + 140, 149, 136, 156, 150, 151, 156, 159, 162, 173, 175, 161, 159, 155, 156, 157, + 159, 159, 155, 151, 153, 158, 161, 160, 153, 147, 143, 143, 142, 141, 140, 140, + 147, 158, 171, 181, 182, 185, 190, 189, 188, 185, 180, 179, 178, 177, 179, 177, + 179, 177, 173, 169, 173, 166, 171, 172, 164, 160, 157, 146, 143, 151, 159, 158, + 163, 140, 161, 160, 166, 164, 160, 153, 150, 147, 140, 131, 142, 133, 128, 123, + 145, 131, 138, 113, 70, 38, 46, 60, 75, 93, 92, 99, 96, 97, 98, 96, + 94, 91, 90, 87, 85, 86, 84, 82, 77, 73, 73, 73, 72, 74, 76, 73, + 72, 70, 69, 67, 66, 68, 67, 73, 59, 57, 88, 75, 89, 83, 73, 76, + 76, 76, 79, 84, 90, 93, 94, 97, 99, 97, 93, 93, 100, 102, 99, 101, + 98, 95, 95, 98, 99, 96, 93, 94, 104, 111, 113, 116, 123, 127, 125, 129, + 124, 124, 127, 130, 130, 130, 130, 131, 130, 128, 127, 129, 130, 135, 136, 135, + 132, 131, 130, 131, 131, 131, 131, 135, 136, 139, 142, 143, 144, 144, 143, 150, + 150, 151, 150, 151, 149, 148, 147, 155, 154, 152, 152, 155, 157, 160, 160, 160, + 155, 150, 151, 153, 153, 149, 146, 155, 153, 151, 159, 168, 172, 164, 158, 154, + 153, 153, 156, 161, 163, 162, 160, 155, 154, 151, 149, 146, 144, 142, 141, 151, + 141, 134, 139, 147, 151, 162, 176, 176, 182, 189, 189, 184, 179, 179, 181, 181, + 180, 181, 178, 179, 177, 173, 169, 173, 172, 175, 172, 159, 153, 146, 131, 143, + 151, 148, 147, 159, 163, 159, 160, 165, 156, 151, 146, 143, 140, 140, 139, 133, + 152, 94, 137, 129, 143, 138, 127, 66, 51, 51, 70, 85, 91, 105, 120, 109, + 105, 108, 101, 109, 113, 99, 107, 103, 94, 98, 97, 87, 82, 78, 67, 73, + 72, 76, 63, 64, 66, 68, 69, 71, 70, 69, 68, 67, 68, 76, 65, 73, + 76, 77, 76, 78, 78, 79, 83, 89, 93, 93, 100, 103, 104, 99, 99, 101, + 102, 96, 100, 99, 102, 106, 109, 106, 98, 92, 94, 107, 114, 110, 109, 116, + 127, 135, 133, 131, 130, 132, 134, 134, 131, 130, 130, 129, 127, 126, 126, 129, + 132, 132, 133, 131, 130, 129, 131, 132, 132, 133, 133, 133, 137, 139, 140, 141, + 141, 141, 145, 146, 147, 148, 149, 149, 151, 150, 150, 150, 150, 152, 157, 161, + 165, 165, 162, 157, 153, 154, 157, 157, 154, 150, 156, 153, 152, 157, 165, 167, + 163, 160, 162, 162, 161, 162, 162, 163, 161, 159, 159, 158, 156, 154, 151, 149, + 148, 148, 146, 141, 137, 140, 146, 154, 167, 176, 179, 183, 187, 186, 183, 180, + 180, 182, 184, 182, 181, 180, 179, 177, 173, 169, 170, 166, 169, 166, 156, 154, + 151, 138, 142, 152, 150, 145, 151, 153, 152, 157, 159, 152, 146, 144, 141, 138, + 132, 128, 128, 136, 111, 137, 142, 138, 132, 115, 58, 44, 47, 72, 92, 97, + 104, 110, 106, 102, 119, 116, 114, 119, 113, 118, 117, 105, 99, 93, 81, 83, + 89, 82, 71, 70, 75, 69, 72, 75, 77, 78, 78, 76, 74, 74, 79, 74, + 59, 68, 72, 80, 82, 82, 83, 83, 83, 85, 85, 89, 93, 91, 95, 99, + 100, 102, 105, 104, 99, 98, 98, 102, 106, 109, 107, 101, 96, 96, 104, 110, + 110, 113, 119, 128, 132, 133, 133, 131, 132, 135, 136, 133, 131, 130, 129, 126, + 125, 125, 127, 130, 131, 130, 128, 128, 129, 130, 131, 134, 135, 133, 134, 136, + 138, 139, 140, 140, 140, 140, 141, 143, 145, 148, 149, 152, 152, 151, 151, 151, + 153, 158, 162, 165, 165, 160, 156, 154, 155, 157, 158, 156, 153, 154, 153, 153, + 156, 162, 164, 164, 165, 170, 170, 166, 165, 164, 163, 160, 158, 158, 157, 155, + 152, 150, 148, 146, 146, 143, 147, 145, 142, 147, 159, 172, 177, 182, 184, 186, + 184, 182, 180, 182, 184, 185, 183, 182, 181, 180, 177, 173, 169, 166, 164, 169, + 168, 159, 157, 152, 137, 136, 148, 147, 142, 148, 152, 155, 165, 158, 154, 149, + 148, 145, 141, 133, 125, 131, 122, 126, 133, 148, 133, 124, 112, 45, 33, 37, + 64, 89, 98, 104, 109, 100, 94, 125, 127, 112, 117, 118, 119, 122, 109, 102, + 95, 84, 88, 98, 94, 80, 74, 75, 66, 66, 71, 74, 76, 79, 80, 79, + 79, 83, 70, 41, 76, 81, 86, 77, 83, 85, 87, 88, 86, 85, 88, 93, + 90, 96, 99, 98, 102, 106, 106, 101, 99, 96, 96, 96, 99, 101, 102, 103, + 97, 97, 100, 109, 123, 130, 127, 122, 126, 128, 130, 129, 132, 136, 136, 130, + 130, 129, 128, 125, 125, 126, 128, 128, 124, 122, 125, 124, 128, 131, 133, 134, + 136, 136, 137, 138, 139, 138, 138, 138, 136, 138, 140, 143, 145, 146, 149, 150, + 154, 154, 153, 153, 155, 156, 158, 156, 155, 152, 151, 152, 154, 155, 154, 152, + 153, 154, 155, 155, 158, 161, 164, 168, 173, 173, 169, 166, 164, 162, 160, 158, + 159, 158, 155, 151, 148, 145, 143, 142, 147, 155, 154, 147, 149, 163, 175, 176, + 184, 185, 185, 182, 181, 181, 183, 185, 185, 184, 182, 181, 180, 177, 172, 169, + 166, 166, 173, 174, 165, 160, 149, 130, 141, 150, 147, 143, 152, 158, 161, 168, + 154, 155, 153, 148, 142, 140, 135, 129, 137, 117, 129, 130, 136, 132, 122, 117, + 44, 33, 35, 56, 78, 90, 103, 111, 100, 91, 124, 128, 107, 116, 122, 116, + 119, 111, 112, 108, 97, 99, 102, 95, 86, 78, 76, 49, 48, 52, 56, 62, + 70, 75, 78, 76, 84, 71, 38, 71, 74, 79, 70, 74, 75, 80, 87, 88, + 87, 88, 94, 101, 104, 100, 96, 96, 99, 99, 95, 96, 94, 94, 94, 97, + 99, 101, 103, 95, 95, 99, 107, 118, 124, 126, 127, 127, 129, 131, 130, 133, + 136, 134, 128, 133, 130, 129, 128, 128, 128, 127, 128, 124, 122, 125, 125, 130, + 133, 135, 137, 142, 142, 142, 142, 141, 140, 138, 138, 138, 139, 141, 143, 145, + 145, 148, 148, 156, 156, 155, 154, 155, 155, 154, 152, 152, 150, 150, 150, 152, + 152, 153, 152, 153, 154, 155, 155, 157, 159, 163, 169, 169, 169, 167, 164, 161, + 159, 159, 159, 164, 162, 159, 155, 151, 147, 144, 145, 148, 156, 155, 149, 153, + 167, 177, 176, 185, 185, 183, 181, 181, 181, 183, 185, 185, 183, 181, 180, 179, + 175, 171, 167, 168, 165, 168, 168, 161, 159, 152, 134, 151, 155, 147, 144, 158, + 164, 160, 161, 146, 151, 150, 141, 131, 131, 133, 132, 135, 119, 128, 136, 126, + 137, 120, 110, 43, 38, 43, 59, 71, 77, 85, 95, 107, 89, 116, 119, 103, + 114, 119, 109, 112, 107, 110, 108, 98, 95, 100, 90, 86, 79, 79, 55, 52, + 52, 52, 54, 59, 63, 66, 68, 84, 80, 51, 50, 53, 64, 65, 60, 61, + 68, 83, 91, 88, 87, 90, 89, 90, 89, 84, 85, 90, 93, 89, 91, 93, + 98, 101, 103, 101, 100, 100, 94, 99, 106, 107, 105, 106, 120, 136, 129, 135, + 136, 131, 133, 138, 135, 125, 133, 132, 131, 128, 127, 127, 127, 126, 125, 125, + 127, 128, 131, 134, 137, 139, 142, 142, 142, 142, 141, 139, 138, 137, 141, 142, + 144, 145, 146, 146, 148, 148, 154, 154, 154, 155, 157, 158, 158, 156, 153, 152, + 152, 152, 152, 153, 154, 154, 154, 155, 155, 155, 157, 158, 161, 166, 164, 165, + 163, 160, 157, 156, 158, 160, 161, 159, 157, 154, 150, 147, 144, 145, 146, 149, + 148, 150, 158, 170, 178, 179, 185, 183, 181, 180, 181, 181, 182, 182, 184, 182, + 180, 179, 177, 174, 169, 165, 169, 160, 157, 155, 152, 159, 161, 149, 143, 147, + 142, 145, 164, 172, 165, 163, 149, 154, 150, 137, 128, 131, 135, 134, 123, 121, + 129, 147, 133, 140, 123, 87, 34, 39, 54, 72, 82, 83, 85, 91, 105, 90, + 106, 106, 100, 112, 110, 105, 106, 101, 100, 97, 84, 86, 94, 87, 88, 80, + 81, 71, 68, 66, 64, 62, 64, 64, 65, 73, 83, 79, 64, 37, 46, 59, + 63, 60, 57, 65, 83, 95, 89, 82, 82, 76, 80, 83, 82, 85, 92, 96, + 93, 92, 95, 100, 102, 103, 101, 101, 101, 98, 100, 105, 109, 108, 104, 111, + 121, 123, 131, 133, 131, 134, 140, 138, 128, 133, 131, 130, 129, 128, 127, 127, + 124, 125, 123, 127, 127, 130, 133, 135, 137, 139, 140, 140, 140, 140, 140, 139, + 139, 139, 140, 141, 143, 144, 145, 147, 147, 149, 150, 152, 154, 157, 158, 159, + 157, 154, 154, 154, 153, 153, 152, 153, 154, 156, 155, 155, 155, 158, 159, 160, + 162, 162, 162, 161, 157, 153, 152, 156, 159, 155, 154, 153, 151, 152, 150, 149, + 148, 153, 148, 146, 154, 166, 174, 179, 182, 183, 182, 180, 179, 181, 181, 180, + 180, 183, 181, 179, 177, 175, 172, 167, 163, 164, 156, 154, 155, 156, 166, 170, + 158, 136, 145, 145, 150, 167, 174, 166, 165, 158, 158, 150, 136, 131, 137, 135, + 127, 121, 127, 138, 144, 143, 132, 133, 65, 27, 34, 53, 76, 91, 96, 97, + 98, 100, 92, 101, 98, 101, 110, 103, 106, 104, 100, 102, 97, 87, 89, 100, + 97, 94, 86, 83, 68, 67, 69, 71, 74, 76, 76, 77, 85, 78, 67, 68, + 37, 57, 63, 60, 69, 62, 70, 89, 98, 89, 78, 73, 85, 90, 94, 94, + 96, 100, 100, 95, 98, 97, 97, 95, 95, 97, 102, 106, 105, 96, 97, 111, + 123, 118, 103, 95, 113, 122, 127, 126, 132, 143, 143, 132, 132, 131, 130, 127, + 126, 125, 124, 124, 123, 121, 124, 124, 127, 128, 131, 132, 135, 136, 138, 138, + 139, 140, 140, 140, 133, 134, 136, 139, 140, 142, 144, 145, 147, 148, 149, 151, + 154, 155, 155, 153, 153, 153, 154, 153, 151, 150, 152, 153, 157, 156, 154, 155, + 159, 160, 158, 156, 160, 162, 161, 156, 152, 151, 154, 157, 155, 155, 155, 155, + 157, 157, 157, 159, 167, 153, 149, 161, 174, 177, 179, 183, 182, 180, 179, 179, + 181, 181, 179, 178, 182, 180, 178, 176, 174, 171, 166, 162, 160, 155, 160, 166, + 168, 175, 173, 157, 146, 158, 159, 159, 167, 166, 155, 154, 160, 156, 143, 131, + 131, 137, 129, 113, 125, 131, 144, 134, 150, 121, 143, 51, 33, 35, 47, 67, + 84, 93, 94, 92, 94, 93, 101, 95, 103, 108, 97, 110, 103, 102, 109, 110, + 100, 102, 109, 104, 95, 85, 82, 74, 71, 64, 59, 61, 68, 72, 69, 76, + 71, 72, 87, 72, 51, 63, 65, 72, 84, 87, 88, 94, 88, 81, 86, 88, + 90, 92, 91, 90, 92, 98, 101, 99, 95, 103, 105, 97, 96, 100, 95, 100, + 97, 100, 110, 121, 122, 119, 119, 99, 115, 119, 121, 137, 144, 138, 135, 133, + 135, 140, 140, 138, 136, 136, 138, 131, 129, 130, 127, 127, 127, 132, 136, 133, + 133, 136, 139, 140, 140, 139, 138, 144, 140, 138, 139, 139, 138, 142, 146, 144, + 142, 146, 152, 154, 149, 150, 153, 152, 152, 154, 154, 153, 151, 149, 147, 154, + 155, 155, 155, 157, 156, 155, 155, 153, 154, 154, 154, 155, 157, 160, 163, 164, + 163, 159, 153, 157, 162, 157, 148, 154, 147, 148, 161, 175, 178, 178, 179, 182, + 183, 184, 184, 185, 182, 179, 178, 178, 179, 180, 177, 171, 167, 166, 167, 159, + 165, 170, 176, 159, 156, 164, 135, 155, 156, 156, 160, 167, 172, 169, 164, 154, + 144, 142, 126, 125, 135, 122, 117, 134, 141, 135, 145, 163, 111, 145, 52, 38, + 36, 52, 72, 78, 86, 91, 87, 78, 82, 89, 94, 100, 106, 105, 101, 103, + 103, 102, 104, 105, 104, 103, 99, 90, 86, 84, 80, 78, 71, 63, 60, 60, + 58, 51, 64, 59, 56, 68, 60, 52, 71, 71, 73, 75, 69, 66, 77, 78, + 75, 81, 75, 77, 82, 83, 88, 90, 97, 98, 95, 91, 98, 100, 94, 95, + 100, 96, 103, 102, 99, 98, 108, 120, 123, 122, 118, 122, 112, 104, 112, 118, + 125, 137, 142, 143, 144, 140, 137, 135, 136, 138, 135, 135, 136, 131, 129, 128, + 132, 133, 129, 130, 131, 134, 135, 136, 137, 137, 140, 136, 136, 138, 139, 137, + 141, 145, 147, 145, 148, 153, 155, 151, 152, 156, 151, 151, 153, 153, 152, 150, + 149, 147, 154, 155, 155, 154, 156, 154, 153, 152, 153, 154, 154, 153, 154, 155, + 158, 161, 160, 159, 156, 151, 156, 162, 163, 159, 149, 149, 157, 169, 175, 175, + 176, 180, 180, 181, 182, 182, 183, 180, 178, 176, 177, 175, 173, 171, 170, 168, + 165, 162, 163, 183, 161, 166, 184, 156, 143, 159, 162, 160, 160, 166, 171, 172, + 167, 163, 158, 145, 142, 127, 122, 129, 118, 120, 135, 133, 138, 139, 124, 128, + 123, 39, 38, 38, 56, 72, 77, 80, 86, 82, 76, 80, 85, 86, 90, 96, + 96, 93, 92, 91, 90, 92, 94, 92, 91, 88, 88, 85, 85, 77, 77, 75, + 71, 71, 70, 64, 57, 59, 58, 52, 61, 60, 60, 75, 66, 72, 71, 61, + 59, 71, 74, 72, 77, 77, 77, 82, 85, 92, 94, 98, 96, 94, 90, 95, + 96, 91, 93, 99, 96, 93, 100, 102, 99, 106, 119, 124, 122, 126, 130, 123, + 115, 117, 113, 114, 124, 123, 130, 140, 147, 148, 147, 144, 142, 138, 137, 137, + 133, 130, 128, 130, 131, 128, 126, 126, 127, 129, 132, 133, 134, 135, 132, 133, + 137, 138, 136, 139, 143, 147, 146, 148, 150, 152, 150, 153, 156, 150, 150, 151, + 151, 150, 149, 148, 146, 153, 153, 153, 153, 154, 152, 151, 150, 150, 151, 151, + 149, 150, 150, 155, 157, 152, 154, 156, 155, 156, 159, 162, 159, 145, 153, 166, + 176, 176, 172, 175, 181, 181, 181, 182, 181, 182, 180, 178, 176, 183, 178, 173, + 171, 171, 170, 164, 159, 167, 174, 175, 183, 170, 155, 166, 162, 169, 164, 166, + 175, 178, 171, 163, 163, 161, 145, 142, 127, 119, 122, 115, 126, 144, 146, 145, + 145, 129, 154, 84, 49, 38, 48, 63, 74, 79, 81, 84, 82, 72, 72, 73, + 74, 79, 85, 84, 83, 83, 82, 81, 82, 84, 83, 82, 82, 81, 81, 80, + 71, 75, 77, 76, 77, 81, 78, 73, 69, 74, 70, 77, 77, 74, 76, 49, + 71, 79, 77, 79, 87, 86, 80, 83, 91, 88, 90, 91, 97, 95, 93, 88, + 96, 90, 93, 93, 88, 91, 98, 94, 92, 96, 99, 97, 98, 106, 119, 132, + 132, 137, 134, 134, 135, 121, 113, 121, 115, 118, 124, 130, 135, 136, 138, 139, + 136, 136, 136, 134, 133, 132, 135, 136, 130, 129, 126, 124, 125, 127, 129, 131, + 130, 129, 130, 136, 137, 136, 138, 141, 145, 145, 145, 145, 146, 147, 150, 152, + 148, 148, 148, 148, 148, 147, 146, 146, 149, 150, 150, 150, 152, 151, 151, 150, + 149, 150, 149, 148, 148, 148, 152, 155, 146, 152, 159, 159, 156, 152, 150, 148, + 150, 159, 170, 176, 175, 173, 176, 180, 183, 183, 183, 183, 183, 182, 180, 179, + 183, 180, 175, 171, 167, 164, 160, 157, 158, 178, 193, 184, 151, 159, 188, 161, + 172, 166, 169, 180, 181, 170, 162, 164, 160, 143, 140, 125, 115, 118, 117, 135, + 139, 148, 126, 138, 151, 139, 39, 54, 40, 57, 72, 78, 82, 83, 85, 88, + 79, 78, 78, 77, 81, 89, 90, 89, 95, 95, 94, 95, 98, 99, 99, 100, + 98, 99, 97, 74, 76, 76, 72, 71, 73, 72, 69, 77, 83, 80, 86, 86, + 83, 79, 47, 76, 89, 94, 94, 97, 91, 86, 93, 95, 92, 91, 91, 93, + 90, 85, 79, 91, 84, 86, 87, 85, 90, 97, 93, 102, 95, 90, 88, 82, + 81, 102, 130, 147, 146, 134, 127, 131, 128, 126, 133, 135, 128, 117, 108, 107, + 112, 120, 126, 131, 132, 134, 132, 132, 133, 137, 138, 132, 131, 126, 125, 123, + 124, 126, 127, 128, 126, 128, 134, 136, 134, 137, 140, 142, 144, 144, 142, 143, + 145, 148, 148, 146, 145, 146, 146, 145, 145, 145, 145, 146, 146, 148, 149, 151, + 152, 151, 151, 146, 147, 148, 147, 147, 147, 151, 153, 150, 153, 156, 156, 155, + 151, 151, 151, 160, 164, 168, 170, 173, 176, 178, 179, 182, 182, 182, 181, 182, + 180, 179, 178, 173, 175, 175, 169, 161, 157, 158, 161, 166, 201, 175, 153, 166, + 168, 170, 172, 169, 167, 171, 181, 182, 172, 164, 164, 156, 141, 138, 122, 113, + 120, 124, 143, 146, 143, 124, 141, 150, 117, 69, 51, 38, 62, 75, 76, 84, + 85, 84, 93, 75, 75, 72, 71, 71, 78, 78, 75, 85, 85, 84, 85, 90, + 93, 92, 93, 95, 98, 98, 72, 76, 76, 71, 69, 72, 74, 73, 80, 81, + 74, 81, 84, 85, 88, 62, 81, 95, 96, 92, 92, 87, 89, 100, 91, 90, + 91, 91, 91, 87, 86, 82, 83, 75, 78, 82, 82, 89, 96, 92, 92, 90, + 93, 96, 89, 76, 75, 84, 129, 140, 137, 133, 137, 139, 136, 140, 138, 134, + 129, 126, 122, 120, 117, 117, 121, 123, 125, 125, 125, 125, 128, 131, 132, 129, + 124, 123, 121, 122, 123, 124, 126, 124, 125, 129, 131, 130, 133, 137, 141, 144, + 145, 142, 143, 146, 148, 146, 144, 143, 143, 143, 143, 143, 144, 144, 145, 146, + 147, 148, 151, 151, 151, 151, 145, 145, 147, 146, 146, 147, 151, 154, 160, 153, + 150, 148, 151, 154, 161, 168, 169, 168, 166, 166, 170, 177, 179, 176, 179, 178, + 177, 176, 177, 176, 175, 175, 169, 174, 177, 172, 163, 160, 166, 173, 200, 180, + 147, 157, 174, 167, 169, 166, 167, 170, 175, 179, 179, 174, 168, 164, 152, 142, + 138, 117, 111, 127, 132, 146, 162, 137, 138, 150, 126, 114, 142, 55, 39, 68, + 76, 73, 85, 85, 82, 93, 75, 73, 70, 65, 64, 66, 66, 62, 68, 68, + 66, 69, 71, 74, 75, 75, 76, 80, 82, 71, 74, 77, 75, 76, 79, 81, + 81, 80, 76, 67, 78, 81, 82, 92, 76, 83, 92, 90, 85, 86, 83, 84, + 95, 86, 86, 89, 90, 90, 87, 89, 90, 84, 77, 80, 83, 83, 89, 94, + 88, 82, 92, 98, 98, 100, 93, 67, 41, 73, 112, 137, 142, 149, 150, 140, + 136, 132, 135, 139, 145, 147, 142, 131, 125, 122, 124, 125, 123, 122, 120, 120, + 122, 124, 121, 119, 119, 117, 119, 120, 121, 124, 121, 121, 124, 125, 125, 129, + 133, 137, 142, 144, 141, 141, 145, 145, 141, 143, 142, 141, 141, 141, 141, 143, + 143, 148, 149, 149, 149, 150, 149, 148, 148, 144, 144, 145, 144, 145, 148, 153, + 155, 160, 150, 146, 148, 156, 159, 166, 172, 170, 171, 168, 165, 169, 176, 178, + 174, 177, 177, 175, 174, 175, 174, 173, 173, 172, 174, 175, 171, 165, 163, 167, + 172, 188, 149, 148, 184, 177, 168, 181, 157, 167, 177, 181, 177, 175, 177, 171, + 162, 150, 145, 140, 114, 110, 134, 138, 145, 145, 132, 134, 140, 121, 118, 146, + 67, 49, 77, 78, 70, 87, 87, 80, 94, 91, 92, 90, 87, 87, 88, 87, + 83, 85, 84, 81, 82, 83, 85, 86, 85, 86, 90, 90, 74, 78, 82, 80, + 77, 77, 77, 76, 84, 78, 72, 87, 87, 83, 90, 77, 82, 89, 87, 85, + 90, 86, 80, 85, 79, 83, 87, 87, 86, 84, 88, 91, 94, 86, 87, 89, + 86, 89, 91, 83, 95, 103, 94, 78, 90, 106, 82, 39, 27, 84, 123, 133, + 140, 147, 143, 140, 145, 141, 135, 134, 137, 139, 141, 140, 136, 137, 137, 135, + 129, 127, 125, 125, 118, 117, 115, 117, 117, 119, 119, 120, 126, 121, 119, 122, + 123, 123, 127, 132, 132, 139, 142, 138, 138, 141, 141, 137, 142, 142, 141, 141, + 141, 142, 144, 145, 154, 153, 153, 152, 150, 148, 148, 145, 145, 144, 144, 146, + 145, 148, 154, 157, 153, 147, 146, 156, 163, 163, 162, 162, 168, 172, 172, 167, + 168, 174, 176, 173, 179, 178, 176, 175, 173, 173, 175, 175, 170, 168, 165, 160, + 156, 154, 155, 156, 127, 160, 167, 186, 200, 177, 166, 167, 169, 183, 186, 176, + 173, 179, 174, 160, 150, 148, 142, 112, 109, 138, 142, 142, 135, 150, 134, 142, + 160, 141, 118, 106, 61, 91, 87, 76, 92, 92, 81, 93, 87, 89, 90, 87, + 90, 94, 93, 87, 90, 87, 84, 82, 82, 83, 83, 84, 90, 91, 91, 72, + 74, 76, 78, 77, 76, 76, 79, 78, 78, 78, 80, 80, 80, 80, 82, 74, + 83, 82, 81, 84, 80, 77, 84, 69, 76, 79, 77, 79, 85, 90, 89, 87, + 89, 93, 92, 88, 87, 90, 93, 93, 96, 97, 84, 95, 91, 91, 45, 15, + 39, 73, 109, 133, 142, 142, 138, 145, 145, 143, 143, 144, 145, 143, 140, 132, + 130, 130, 131, 136, 138, 135, 133, 135, 136, 135, 128, 119, 112, 109, 107, 118, + 120, 124, 128, 128, 126, 121, 117, 130, 132, 134, 139, 138, 134, 136, 143, 143, + 147, 145, 141, 142, 148, 151, 151, 148, 149, 152, 153, 152, 148, 145, 140, 146, + 143, 141, 143, 146, 150, 148, 147, 127, 142, 158, 164, 162, 163, 167, 171, 171, + 170, 169, 171, 173, 175, 176, 175, 178, 175, 171, 169, 170, 170, 171, 170, 172, + 168, 161, 155, 153, 150, 144, 137, 160, 154, 173, 184, 172, 176, 178, 153, 170, + 182, 191, 188, 179, 171, 164, 160, 136, 143, 147, 132, 107, 142, 142, 145, 157, + 141, 140, 153, 154, 140, 128, 127, 77, 92, 81, 85, 88, 76, 83, 82, 89, + 88, 94, 93, 83, 84, 83, 72, 83, 79, 77, 78, 79, 78, 75, 78, 83, + 89, 87, 77, 78, 79, 77, 74, 73, 75, 77, 78, 77, 78, 77, 76, 76, + 78, 79, 78, 86, 85, 83, 87, 84, 80, 87, 81, 84, 82, 74, 70, 73, + 75, 74, 77, 80, 84, 84, 83, 83, 88, 90, 91, 90, 93, 89, 99, 88, + 95, 63, 21, 28, 39, 52, 73, 102, 136, 158, 158, 154, 148, 142, 141, 143, + 141, 137, 140, 138, 136, 137, 141, 144, 145, 145, 139, 139, 136, 132, 129, 127, + 127, 128, 124, 121, 117, 116, 117, 122, 125, 127, 120, 122, 127, 132, 134, 135, + 139, 148, 147, 151, 149, 145, 146, 150, 152, 150, 157, 157, 155, 152, 148, 146, + 145, 145, 141, 142, 144, 147, 151, 148, 141, 137, 148, 156, 164, 167, 168, 167, + 168, 170, 175, 174, 175, 177, 179, 179, 176, 173, 177, 174, 171, 169, 169, 169, + 168, 167, 157, 161, 162, 156, 149, 149, 158, 164, 155, 171, 181, 182, 183, 178, + 173, 171, 190, 195, 195, 186, 177, 173, 170, 167, 154, 149, 138, 120, 102, 146, + 154, 160, 146, 141, 147, 162, 165, 152, 137, 129, 103, 84, 92, 76, 93, 81, + 82, 80, 81, 77, 81, 83, 80, 87, 87, 75, 85, 83, 76, 71, 67, 67, + 73, 82, 78, 86, 88, 77, 78, 78, 77, 75, 74, 78, 79, 82, 80, 79, + 77, 76, 76, 79, 80, 79, 86, 84, 82, 87, 84, 81, 87, 82, 84, 80, + 74, 71, 74, 78, 79, 86, 88, 90, 90, 92, 93, 95, 96, 93, 87, 93, + 95, 105, 90, 101, 79, 16, 21, 26, 26, 33, 54, 89, 115, 129, 137, 147, + 151, 156, 157, 152, 143, 145, 144, 143, 141, 139, 141, 146, 149, 142, 142, 142, + 143, 142, 141, 138, 136, 132, 127, 118, 114, 116, 121, 124, 127, 122, 118, 121, + 125, 127, 127, 129, 138, 146, 149, 149, 145, 145, 148, 148, 144, 151, 153, 153, + 151, 147, 146, 147, 149, 148, 144, 138, 135, 137, 141, 146, 149, 163, 164, 165, + 168, 172, 173, 173, 170, 176, 177, 179, 181, 182, 180, 175, 171, 176, 174, 171, + 169, 169, 169, 167, 165, 159, 159, 157, 151, 146, 146, 155, 162, 160, 190, 189, + 179, 190, 180, 169, 187, 192, 193, 189, 181, 175, 173, 169, 164, 151, 146, 140, + 130, 116, 155, 149, 146, 138, 141, 149, 159, 163, 156, 140, 128, 127, 74, 92, + 68, 92, 82, 79, 77, 86, 78, 80, 79, 75, 80, 81, 70, 67, 78, 91, + 94, 92, 85, 80, 82, 87, 94, 97, 67, 70, 75, 77, 78, 79, 82, 84, + 85, 83, 82, 79, 79, 80, 85, 86, 81, 87, 84, 82, 88, 86, 82, 88, + 82, 83, 83, 82, 82, 85, 89, 92, 97, 98, 98, 98, 99, 99, 99, 100, + 95, 94, 98, 96, 107, 96, 103, 70, 9, 22, 34, 34, 31, 32, 42, 52, + 129, 136, 138, 134, 137, 151, 160, 162, 151, 150, 150, 147, 142, 138, 141, 144, + 146, 145, 148, 152, 153, 148, 138, 130, 139, 136, 133, 129, 129, 127, 125, 121, + 124, 121, 120, 121, 122, 123, 127, 135, 153, 158, 159, 156, 156, 159, 157, 153, + 149, 154, 157, 156, 150, 145, 144, 144, 144, 138, 133, 131, 134, 144, 156, 164, + 164, 164, 166, 166, 170, 173, 176, 177, 177, 175, 176, 179, 180, 179, 175, 172, + 175, 172, 170, 168, 168, 167, 165, 163, 168, 155, 144, 144, 150, 152, 151, 149, + 175, 193, 190, 178, 181, 177, 175, 188, 179, 181, 181, 178, 178, 177, 168, 159, + 145, 144, 145, 140, 123, 151, 137, 131, 160, 164, 165, 163, 164, 165, 157, 142, + 135, 85, 78, 76, 89, 78, 80, 73, 86, 80, 81, 77, 71, 76, 81, 72, + 86, 88, 87, 82, 82, 89, 94, 99, 101, 102, 102, 57, 62, 70, 75, 77, + 77, 79, 80, 80, 78, 78, 77, 77, 80, 85, 87, 84, 89, 84, 82, 89, + 88, 84, 89, 86, 87, 88, 89, 87, 84, 84, 86, 90, 89, 89, 90, 90, + 91, 92, 92, 93, 100, 99, 86, 101, 99, 95, 42, 14, 20, 26, 30, 30, + 31, 34, 39, 45, 80, 118, 141, 150, 155, 150, 139, 155, 158, 160, 157, 152, + 149, 149, 148, 149, 148, 148, 147, 148, 146, 139, 133, 144, 144, 143, 142, 141, + 138, 132, 126, 122, 116, 115, 120, 124, 127, 133, 139, 140, 145, 148, 147, 148, + 150, 149, 145, 158, 159, 157, 152, 145, 140, 139, 139, 129, 134, 143, 149, 153, + 157, 157, 159, 163, 167, 168, 169, 170, 172, 178, 182, 177, 174, 173, 175, 177, + 179, 178, 177, 172, 170, 168, 167, 166, 164, 161, 159, 158, 147, 142, 149, 160, + 162, 162, 163, 197, 188, 191, 185, 170, 177, 189, 181, 180, 181, 180, 179, 181, + 182, 174, 165, 156, 150, 143, 129, 105, 138, 139, 149, 162, 168, 165, 158, 156, + 160, 155, 141, 131, 114, 65, 97, 89, 76, 85, 75, 73, 75, 82, 83, 79, + 89, 98, 97, 107, 108, 103, 100, 104, 110, 108, 105, 108, 107, 103, 56, 61, + 68, 71, 71, 70, 71, 71, 71, 70, 71, 71, 72, 75, 79, 81, 79, 83, + 77, 75, 83, 82, 78, 83, 79, 80, 83, 86, 85, 80, 79, 81, 84, 83, + 83, 86, 89, 91, 94, 93, 88, 98, 96, 78, 93, 94, 85, 22, 18, 20, + 22, 27, 32, 36, 37, 36, 31, 44, 54, 60, 81, 117, 148, 157, 150, 151, + 156, 159, 159, 156, 155, 155, 154, 147, 142, 139, 140, 141, 144, 145, 146, 144, + 142, 142, 143, 143, 142, 140, 125, 117, 114, 115, 120, 118, 123, 127, 140, 144, + 147, 146, 147, 150, 150, 146, 146, 142, 136, 132, 133, 138, 144, 150, 141, 145, + 152, 156, 157, 161, 162, 164, 168, 171, 175, 174, 172, 172, 176, 179, 177, 174, + 173, 174, 177, 179, 180, 179, 169, 167, 165, 164, 163, 161, 158, 155, 144, 145, + 151, 156, 155, 152, 162, 177, 207, 186, 191, 189, 171, 184, 198, 178, 190, 188, + 182, 176, 176, 178, 175, 169, 157, 151, 144, 129, 102, 135, 145, 163, 149, 157, + 159, 158, 158, 158, 149, 135, 129, 139, 61, 105, 95, 84, 91, 81, 76, 76, + 86, 90, 89, 98, 108, 103, 63, 76, 89, 99, 108, 110, 93, 72, 114, 108, + 101, 65, 66, 69, 69, 68, 67, 70, 71, 71, 70, 72, 72, 73, 74, 77, + 78, 76, 79, 72, 70, 79, 79, 74, 78, 74, 73, 76, 82, 82, 79, 80, + 86, 84, 82, 82, 85, 90, 93, 93, 92, 82, 88, 89, 77, 89, 85, 79, + 25, 16, 22, 27, 32, 35, 35, 31, 28, 41, 43, 38, 38, 63, 105, 130, + 129, 144, 143, 146, 150, 155, 156, 156, 153, 151, 149, 146, 141, 140, 143, 148, + 152, 148, 147, 145, 146, 148, 147, 147, 146, 135, 127, 121, 119, 121, 116, 117, + 118, 112, 117, 118, 116, 117, 120, 120, 117, 131, 128, 126, 131, 140, 150, 156, + 157, 158, 157, 157, 155, 154, 160, 168, 176, 171, 173, 174, 174, 176, 176, 175, + 172, 175, 172, 173, 174, 177, 177, 175, 173, 166, 165, 163, 162, 161, 159, 155, + 151, 151, 152, 158, 160, 152, 146, 162, 182, 198, 193, 191, 187, 186, 192, 193, + 185, 190, 190, 185, 178, 175, 175, 172, 167, 150, 148, 148, 138, 112, 139, 143, + 158, 159, 165, 170, 173, 174, 168, 159, 150, 133, 145, 69, 87, 103, 94, 87, + 87, 88, 82, 87, 92, 95, 100, 100, 89, 95, 101, 102, 101, 112, 125, 129, + 122, 120, 112, 105, 72, 72, 72, 70, 68, 70, 75, 79, 76, 76, 78, 78, + 78, 78, 80, 80, 82, 84, 77, 75, 84, 84, 80, 84, 83, 79, 79, 83, + 81, 77, 79, 86, 81, 78, 77, 78, 83, 84, 83, 81, 82, 82, 86, 81, + 92, 80, 81, 41, 19, 22, 26, 28, 29, 32, 33, 35, 39, 35, 31, 40, + 83, 137, 162, 158, 148, 142, 142, 145, 151, 155, 156, 153, 148, 150, 154, 154, + 151, 145, 145, 146, 150, 151, 153, 153, 156, 152, 147, 141, 143, 134, 131, 132, + 135, 132, 130, 132, 135, 138, 137, 134, 134, 136, 136, 133, 136, 135, 139, 149, + 160, 164, 159, 154, 153, 158, 163, 165, 166, 165, 169, 171, 171, 169, 168, 172, + 179, 180, 175, 167, 171, 169, 171, 174, 175, 173, 169, 165, 165, 163, 162, 161, + 160, 157, 153, 149, 164, 155, 153, 158, 161, 161, 173, 189, 180, 198, 189, 182, + 199, 195, 182, 190, 184, 190, 192, 189, 184, 180, 172, 165, 157, 150, 146, 135, + 109, 137, 140, 155, 160, 160, 163, 166, 165, 158, 154, 149, 136, 137, 78, 65, + 106, 101, 81, 89, 90, 79, 79, 87, 95, 102, 93, 74, 95, 107, 109, 103, + 107, 116, 116, 109, 121, 112, 108, 64, 67, 67, 63, 61, 66, 71, 71, 71, + 74, 80, 82, 82, 81, 83, 83, 85, 88, 80, 75, 81, 82, 82, 90, 84, + 85, 83, 77, 76, 78, 79, 76, 77, 76, 75, 76, 79, 80, 80, 79, 76, + 90, 94, 84, 84, 91, 79, 56, 18, 21, 28, 32, 28, 23, 29, 41, 39, + 38, 37, 47, 88, 141, 167, 164, 163, 162, 161, 157, 152, 147, 146, 146, 148, + 148, 149, 150, 150, 150, 152, 154, 157, 157, 156, 153, 155, 153, 154, 152, 150, + 141, 133, 128, 133, 134, 135, 134, 140, 140, 140, 141, 142, 142, 143, 143, 145, + 145, 147, 150, 153, 157, 160, 164, 160, 161, 161, 161, 164, 166, 168, 170, 171, + 171, 172, 172, 172, 173, 174, 175, 172, 170, 171, 173, 174, 173, 170, 167, 166, + 166, 162, 156, 150, 148, 152, 156, 155, 158, 161, 159, 164, 175, 185, 188, 190, + 178, 180, 187, 191, 195, 192, 177, 191, 185, 179, 178, 180, 179, 172, 167, 168, + 156, 146, 134, 112, 145, 145, 155, 164, 163, 163, 167, 166, 159, 157, 154, 136, + 124, 90, 62, 90, 85, 92, 87, 86, 81, 78, 79, 86, 89, 88, 88, 108, + 103, 98, 104, 118, 121, 109, 96, 135, 163, 122, 60, 63, 64, 60, 59, 64, + 69, 69, 67, 71, 77, 79, 79, 79, 84, 86, 94, 97, 90, 84, 86, 81, + 75, 79, 79, 81, 81, 77, 77, 80, 81, 78, 83, 82, 80, 81, 83, 84, + 84, 83, 81, 90, 93, 87, 90, 97, 92, 78, 26, 25, 23, 25, 26, 34, + 52, 70, 81, 85, 83, 84, 108, 146, 167, 164, 172, 170, 171, 169, 166, 163, + 163, 161, 157, 162, 165, 162, 158, 156, 160, 164, 168, 167, 167, 166, 168, 169, + 171, 170, 166, 162, 155, 145, 139, 138, 140, 142, 134, 136, 140, 143, 145, 144, + 143, 141, 145, 146, 149, 153, 157, 160, 163, 167, 169, 169, 167, 166, 167, 168, + 168, 169, 172, 172, 172, 172, 175, 173, 176, 174, 170, 170, 171, 173, 175, 175, + 173, 171, 163, 161, 159, 155, 152, 151, 153, 156, 159, 160, 162, 164, 174, 185, + 191, 189, 191, 195, 206, 204, 187, 183, 192, 194, 187, 185, 183, 180, 176, 173, + 171, 170, 160, 161, 160, 142, 106, 130, 139, 161, 164, 164, 163, 168, 168, 163, + 157, 153, 133, 119, 87, 61, 94, 93, 94, 84, 76, 75, 77, 83, 93, 98, + 101, 105, 94, 93, 93, 98, 107, 110, 108, 104, 90, 116, 117, 57, 61, 62, + 59, 58, 63, 68, 68, 64, 69, 75, 74, 72, 72, 79, 84, 77, 84, 82, + 81, 86, 81, 73, 77, 75, 78, 80, 78, 80, 83, 84, 81, 86, 84, 82, + 82, 85, 86, 85, 84, 83, 83, 82, 82, 88, 92, 90, 89, 60, 57, 52, + 54, 61, 76, 97, 112, 117, 126, 127, 121, 128, 146, 161, 160, 172, 173, 176, + 177, 176, 172, 171, 171, 168, 173, 178, 176, 167, 161, 164, 170, 172, 171, 173, + 171, 175, 176, 179, 180, 176, 174, 169, 156, 145, 139, 139, 142, 139, 140, 142, + 144, 146, 148, 148, 149, 145, 147, 149, 153, 156, 158, 160, 160, 167, 167, 165, + 163, 162, 162, 163, 164, 166, 166, 167, 168, 170, 168, 170, 168, 169, 168, 167, + 168, 169, 170, 168, 167, 161, 159, 156, 155, 156, 157, 158, 157, 159, 162, 164, + 171, 185, 196, 196, 190, 201, 196, 200, 199, 190, 189, 194, 190, 180, 182, 182, + 177, 170, 165, 166, 168, 161, 155, 149, 136, 109, 136, 137, 148, 163, 163, 165, + 168, 169, 163, 157, 154, 141, 121, 86, 56, 93, 99, 99, 93, 95, 92, 93, + 93, 92, 90, 90, 90, 99, 102, 102, 101, 99, 101, 102, 104, 96, 101, 125, + 60, 64, 66, 62, 60, 64, 68, 67, 66, 70, 73, 70, 65, 64, 71, 77, + 64, 73, 73, 75, 83, 81, 76, 80, 76, 80, 82, 82, 83, 87, 86, 83, + 86, 84, 81, 80, 83, 84, 84, 83, 85, 80, 77, 80, 84, 83, 83, 88, + 95, 97, 97, 102, 109, 117, 126, 134, 132, 142, 145, 139, 139, 152, 161, 163, + 170, 174, 176, 178, 178, 176, 175, 172, 172, 177, 181, 178, 172, 168, 168, 170, + 174, 173, 171, 171, 172, 175, 178, 179, 174, 173, 170, 164, 155, 146, 142, 142, + 146, 143, 140, 137, 138, 142, 147, 150, 145, 147, 148, 150, 151, 152, 152, 151, + 160, 160, 159, 159, 159, 160, 162, 163, 163, 163, 165, 165, 166, 165, 165, 165, + 170, 168, 166, 165, 165, 166, 165, 163, 164, 160, 158, 158, 161, 163, 162, 159, + 158, 164, 171, 178, 190, 198, 197, 191, 200, 188, 187, 189, 190, 195, 197, 188, + 183, 184, 183, 177, 171, 167, 167, 169, 161, 151, 145, 136, 115, 145, 142, 150, + 162, 161, 162, 169, 169, 163, 157, 151, 149, 126, 93, 52, 86, 102, 104, 104, + 88, 90, 95, 96, 95, 96, 96, 100, 105, 108, 108, 106, 102, 100, 101, 103, + 112, 95, 106, 67, 71, 72, 67, 65, 67, 70, 68, 69, 71, 74, 70, 66, + 66, 73, 79, 79, 85, 82, 80, 86, 82, 76, 81, 81, 85, 87, 86, 86, + 89, 88, 84, 87, 84, 81, 80, 80, 82, 84, 83, 88, 82, 82, 86, 87, + 83, 84, 92, 108, 114, 120, 123, 128, 131, 131, 129, 139, 146, 149, 146, 148, + 160, 167, 168, 175, 178, 182, 184, 183, 179, 178, 177, 177, 175, 176, 177, 177, + 174, 170, 167, 179, 178, 176, 174, 174, 174, 175, 177, 172, 170, 170, 172, 172, + 167, 159, 154, 147, 145, 142, 139, 138, 138, 140, 141, 145, 145, 147, 148, 149, + 149, 150, 150, 159, 158, 157, 157, 157, 159, 161, 162, 161, 159, 162, 161, 163, + 161, 163, 163, 167, 166, 164, 164, 166, 167, 167, 166, 164, 161, 158, 159, 162, + 164, 162, 160, 160, 171, 184, 189, 192, 196, 198, 197, 193, 191, 199, 198, 187, + 190, 200, 201, 192, 190, 185, 180, 177, 175, 172, 172, 154, 159, 165, 150, 114, + 138, 146, 168, 163, 161, 159, 166, 167, 162, 156, 149, 145, 126, 105, 56, 82, + 99, 97, 103, 88, 91, 96, 97, 97, 98, 101, 102, 100, 101, 103, 105, 107, + 108, 105, 103, 102, 98, 89, 69, 74, 75, 71, 69, 70, 73, 71, 72, 73, + 75, 74, 75, 77, 84, 87, 86, 91, 86, 83, 88, 85, 80, 85, 86, 89, + 90, 87, 87, 90, 90, 86, 89, 85, 82, 81, 82, 84, 87, 87, 84, 82, + 84, 87, 88, 87, 90, 97, 112, 122, 129, 129, 132, 135, 138, 137, 145, 149, + 151, 149, 151, 159, 164, 164, 174, 179, 182, 183, 182, 180, 178, 178, 179, 176, + 172, 175, 179, 179, 173, 170, 178, 179, 175, 174, 173, 172, 172, 169, 168, 167, + 167, 172, 177, 177, 170, 163, 158, 157, 158, 157, 154, 149, 144, 140, 141, 141, + 141, 142, 143, 145, 147, 148, 156, 155, 153, 152, 152, 152, 154, 153, 152, 152, + 151, 151, 151, 150, 154, 154, 155, 155, 156, 159, 163, 165, 166, 165, 163, 161, + 159, 159, 160, 162, 163, 165, 170, 183, 195, 196, 194, 196, 199, 200, 201, 192, + 194, 195, 191, 195, 199, 192, 192, 188, 182, 178, 175, 173, 170, 169, 160, 160, + 161, 147, 114, 139, 143, 160, 166, 161, 158, 163, 168, 163, 156, 149, 135, 120, + 112, 61, 83, 98, 86, 92, 99, 97, 98, 98, 97, 97, 97, 98, 105, 103, + 103, 105, 110, 109, 103, 99, 92, 112, 102, 66, 71, 74, 71, 70, 73, 76, + 74, 75, 74, 75, 77, 81, 85, 88, 88, 81, 87, 84, 83, 90, 88, 83, + 88, 87, 89, 89, 86, 87, 91, 91, 89, 89, 83, 80, 79, 83, 86, 89, + 90, 82, 84, 85, 83, 85, 89, 92, 97, 116, 129, 139, 138, 140, 145, 152, + 153, 150, 154, 158, 156, 153, 155, 155, 158, 171, 177, 179, 180, 179, 178, 179, + 181, 179, 177, 174, 174, 175, 175, 174, 172, 174, 176, 176, 175, 174, 170, 168, + 166, 168, 168, 169, 171, 171, 172, 171, 170, 175, 175, 173, 171, 167, 163, 159, + 157, 152, 150, 147, 145, 145, 146, 148, 149, 148, 147, 146, 145, 146, 147, 149, + 148, 147, 145, 143, 142, 143, 143, 147, 149, 153, 154, 155, 158, 162, 163, 162, + 161, 162, 162, 162, 161, 162, 165, 169, 175, 182, 192, 198, 197, 195, 196, 198, + 197, 205, 190, 187, 191, 195, 200, 198, 182, 188, 187, 184, 177, 170, 166, 167, + 170, 166, 157, 150, 140, 117, 146, 144, 152, 170, 164, 160, 163, 168, 164, 159, + 152, 139, 121, 112, 58, 83, 103, 86, 92, 86, 82, 82, 87, 94, 102, 104, + 105, 106, 105, 102, 101, 101, 100, 96, 94, 89, 109, 104, 59, 65, 70, 68, + 69, 73, 75, 74, 79, 75, 72, 74, 79, 83, 81, 80, 82, 89, 89, 86, + 93, 86, 81, 83, 86, 86, 87, 82, 86, 89, 93, 89, 85, 82, 78, 78, + 80, 85, 87, 88, 86, 92, 90, 84, 83, 92, 97, 102, 111, 131, 143, 143, + 144, 148, 154, 155, 154, 164, 169, 168, 161, 156, 157, 160, 172, 176, 180, 180, + 180, 181, 183, 186, 176, 178, 176, 173, 170, 169, 170, 172, 174, 175, 176, 177, + 176, 173, 170, 167, 173, 175, 175, 172, 166, 167, 172, 177, 187, 181, 172, 164, + 161, 162, 166, 170, 173, 169, 163, 157, 154, 153, 153, 153, 147, 147, 148, 149, + 151, 154, 156, 157, 155, 153, 150, 147, 148, 149, 154, 157, 165, 165, 168, 167, + 170, 167, 165, 160, 166, 165, 168, 165, 167, 169, 179, 186, 189, 194, 195, 193, + 193, 196, 195, 190, 191, 193, 202, 202, 187, 185, 196, 198, 190, 193, 193, 184, + 172, 167, 171, 179, 157, 162, 165, 150, 115, 141, 150, 173, 171, 166, 161, 165, + 168, 168, 161, 157, 154, 125, 110, 52, 79, 108, 93, 102, 99, 93, 86, 85, + 87, 89, 87, 83, 93, 91, 91, 90, 92, 93, 96, 97, 102, 104, 99, 66, + 66, 68, 66, 64, 67, 71, 74, 79, 78, 76, 75, 74, 76, 78, 79, 82, + 81, 83, 80, 82, 81, 84, 82, 92, 84, 81, 79, 85, 85, 85, 80, 80, + 82, 80, 80, 83, 88, 83, 76, 80, 88, 93, 76, 79, 91, 89, 108, 127, + 137, 144, 148, 149, 151, 155, 158, 167, 167, 169, 171, 169, 167, 162, 158, 163, + 167, 173, 175, 176, 177, 178, 180, 173, 175, 179, 184, 188, 187, 181, 173, 176, + 173, 170, 167, 166, 166, 168, 168, 162, 167, 173, 174, 171, 168, 166, 166, 168, + 173, 177, 168, 159, 160, 167, 175, 177, 180, 183, 182, 177, 171, 166, 163, 166, + 165, 163, 160, 158, 156, 154, 154, 153, 154, 156, 160, 166, 170, 177, 180, 185, + 180, 179, 177, 176, 166, 162, 159, 168, 170, 177, 177, 180, 179, 183, 186, 190, + 196, 200, 198, 196, 196, 194, 190, 185, 192, 192, 188, 190, 199, 198, 189, 195, + 193, 186, 178, 177, 180, 180, 177, 164, 162, 160, 147, 128, 134, 146, 147, 167, + 166, 164, 163, 166, 165, 165, 162, 149, 132, 122, 69, 74, 90, 101, 92, 94, + 92, 89, 85, 83, 83, 83, 83, 87, 86, 91, 92, 97, 96, 99, 99, 91, + 95, 100, 75, 73, 74, 72, 71, 70, 73, 75, 73, 72, 71, 71, 71, 73, + 76, 78, 77, 77, 78, 76, 79, 78, 81, 79, 77, 73, 73, 72, 76, 75, + 73, 70, 81, 80, 74, 66, 67, 74, 78, 77, 81, 75, 81, 81, 90, 92, + 83, 105, 130, 140, 147, 150, 151, 152, 156, 159, 158, 159, 162, 166, 167, 164, + 159, 154, 158, 161, 166, 170, 174, 175, 174, 173, 173, 174, 176, 180, 184, 184, + 181, 175, 180, 176, 173, 171, 169, 169, 170, 170, 169, 168, 166, 162, 160, 162, + 167, 171, 168, 171, 174, 169, 167, 170, 176, 177, 183, 182, 180, 176, 172, 171, + 171, 173, 175, 174, 172, 171, 172, 174, 177, 179, 179, 178, 178, 178, 179, 181, + 183, 185, 189, 184, 183, 185, 185, 181, 179, 179, 180, 182, 184, 184, 183, 184, + 188, 191, 194, 199, 200, 196, 194, 195, 195, 193, 195, 200, 198, 191, 191, 197, + 196, 187, 191, 191, 186, 179, 177, 179, 176, 171, 162, 158, 154, 139, 121, 128, + 143, 147, 163, 162, 163, 163, 167, 168, 165, 162, 153, 140, 125, 79, 79, 98, + 102, 96, 95, 94, 94, 92, 90, 88, 85, 84, 87, 87, 86, 86, 87, 89, + 91, 92, 92, 93, 97, 71, 73, 74, 72, 72, 70, 71, 72, 75, 75, 74, + 74, 75, 76, 78, 80, 73, 73, 74, 74, 76, 76, 79, 79, 80, 79, 81, + 80, 79, 75, 71, 68, 73, 73, 68, 60, 58, 65, 70, 72, 69, 64, 77, + 80, 79, 70, 69, 107, 133, 143, 150, 153, 153, 154, 157, 159, 157, 159, 164, + 169, 171, 169, 164, 159, 150, 151, 156, 165, 174, 179, 179, 177, 175, 175, 175, + 177, 181, 183, 183, 180, 178, 175, 174, 172, 170, 169, 167, 167, 171, 168, 164, + 159, 157, 159, 165, 169, 165, 166, 169, 169, 172, 177, 179, 175, 180, 179, 178, + 174, 172, 172, 176, 179, 182, 180, 179, 179, 181, 186, 191, 195, 192, 190, 188, + 186, 184, 184, 184, 184, 187, 182, 180, 184, 186, 185, 186, 188, 191, 191, 190, + 188, 186, 187, 190, 193, 197, 200, 199, 194, 191, 194, 195, 194, 198, 201, 198, + 190, 191, 196, 195, 189, 188, 189, 186, 181, 179, 179, 174, 168, 166, 159, 153, + 138, 120, 128, 147, 154, 159, 158, 159, 161, 165, 166, 165, 162, 151, 144, 125, + 89, 76, 103, 99, 97, 97, 98, 99, 99, 97, 93, 89, 87, 91, 89, 86, + 84, 83, 85, 87, 89, 90, 91, 91, 65, 66, 70, 71, 72, 71, 72, 73, + 78, 77, 76, 74, 73, 73, 74, 73, 72, 73, 73, 74, 76, 78, 80, 81, + 76, 78, 78, 76, 70, 65, 61, 60, 70, 76, 79, 73, 69, 71, 70, 70, + 74, 69, 76, 71, 73, 72, 72, 106, 133, 144, 150, 154, 154, 154, 156, 158, + 162, 163, 166, 171, 175, 175, 172, 169, 157, 155, 155, 162, 172, 180, 181, 179, + 177, 176, 175, 176, 178, 182, 185, 184, 175, 175, 175, 174, 172, 170, 167, 165, + 168, 168, 168, 166, 164, 161, 160, 159, 158, 161, 166, 166, 170, 174, 176, 172, + 175, 177, 181, 181, 179, 176, 176, 176, 183, 183, 182, 182, 183, 186, 190, 192, + 189, 188, 186, 185, 184, 185, 186, 187, 188, 182, 179, 181, 182, 182, 184, 187, + 192, 192, 191, 190, 189, 189, 189, 190, 195, 198, 198, 192, 190, 192, 193, 191, + 191, 192, 189, 185, 187, 194, 195, 192, 187, 187, 185, 180, 179, 181, 177, 171, + 167, 159, 153, 141, 124, 130, 148, 155, 156, 156, 158, 161, 166, 167, 165, 161, + 154, 149, 127, 96, 71, 106, 98, 99, 98, 99, 100, 100, 99, 96, 93, 90, + 94, 92, 90, 88, 87, 87, 89, 90, 88, 86, 84, 69, 73, 77, 79, 78, + 77, 78, 78, 75, 75, 75, 73, 72, 72, 74, 71, 75, 76, 76, 78, 80, + 82, 84, 85, 82, 83, 83, 80, 76, 72, 71, 72, 83, 92, 96, 92, 88, + 85, 82, 79, 74, 73, 76, 70, 83, 95, 86, 102, 131, 140, 147, 151, 151, + 151, 152, 154, 160, 160, 161, 164, 168, 170, 170, 169, 172, 165, 159, 159, 165, + 170, 171, 170, 173, 172, 172, 171, 173, 176, 180, 183, 179, 179, 180, 179, 178, + 175, 172, 170, 168, 168, 169, 168, 166, 161, 155, 151, 148, 156, 163, 163, 164, + 168, 173, 174, 176, 178, 181, 181, 180, 178, 177, 177, 181, 182, 183, 185, 186, + 186, 186, 186, 186, 186, 185, 185, 186, 188, 190, 191, 192, 185, 181, 183, 184, + 184, 186, 189, 188, 189, 191, 193, 193, 192, 190, 188, 189, 194, 195, 191, 189, + 190, 189, 187, 187, 186, 184, 182, 185, 191, 193, 191, 184, 184, 180, 175, 176, + 179, 178, 174, 162, 154, 152, 143, 126, 128, 144, 150, 155, 156, 158, 161, 166, + 167, 164, 161, 158, 156, 132, 98, 70, 104, 97, 102, 95, 94, 94, 94, 93, + 92, 91, 91, 89, 90, 90, 90, 90, 89, 88, 88, 88, 86, 83, 75, 78, + 81, 81, 79, 77, 78, 78, 76, 77, 78, 81, 82, 85, 85, 84, 82, 81, + 83, 82, 86, 86, 90, 90, 94, 92, 94, 92, 95, 93, 95, 97, 94, 100, + 98, 92, 90, 90, 89, 85, 38, 61, 83, 70, 70, 80, 79, 102, 128, 138, + 146, 150, 151, 150, 151, 153, 161, 161, 161, 164, 167, 169, 168, 167, 167, 162, + 157, 156, 161, 167, 172, 173, 168, 169, 170, 170, 169, 171, 174, 177, 177, 177, + 178, 178, 177, 175, 172, 171, 173, 169, 165, 162, 161, 159, 157, 156, 143, 151, + 157, 157, 158, 165, 173, 177, 181, 180, 177, 176, 175, 176, 180, 183, 179, 181, + 184, 187, 188, 188, 187, 186, 185, 184, 183, 183, 183, 185, 187, 188, 188, 182, + 179, 181, 184, 184, 187, 190, 188, 189, 192, 195, 197, 195, 191, 187, 185, 190, + 192, 189, 188, 189, 188, 186, 190, 188, 185, 184, 185, 187, 187, 186, 181, 180, + 177, 172, 172, 176, 176, 172, 163, 155, 154, 149, 131, 130, 143, 149, 155, 157, + 158, 161, 166, 167, 165, 162, 154, 151, 132, 92, 67, 92, 89, 93, 93, 93, + 93, 94, 95, 95, 95, 96, 92, 93, 94, 95, 95, 94, 93, 90, 89, 88, + 86, 77, 79, 81, 81, 77, 75, 75, 78, 80, 82, 85, 87, 90, 93, 94, + 94, 90, 90, 91, 91, 94, 94, 97, 97, 91, 89, 91, 93, 98, 97, 94, + 90, 99, 102, 96, 90, 87, 89, 87, 82, 33, 50, 71, 64, 59, 61, 67, + 103, 126, 136, 145, 150, 151, 151, 152, 154, 160, 162, 165, 169, 171, 170, 166, + 162, 159, 158, 158, 159, 162, 167, 172, 175, 167, 170, 173, 173, 171, 170, 171, + 173, 174, 174, 174, 174, 173, 173, 172, 171, 176, 171, 165, 163, 164, 166, 166, + 165, 148, 150, 149, 147, 149, 158, 164, 165, 174, 174, 174, 173, 174, 177, 180, + 185, 177, 179, 180, 182, 184, 184, 184, 184, 183, 182, 181, 180, 180, 181, 182, + 183, 182, 177, 175, 178, 181, 181, 182, 186, 190, 190, 190, 193, 195, 194, 190, + 186, 186, 190, 190, 186, 185, 188, 190, 190, 191, 188, 186, 185, 185, 183, 181, + 180, 182, 183, 180, 176, 176, 177, 174, 168, 167, 157, 156, 151, 133, 130, 143, + 150, 159, 157, 158, 159, 163, 165, 165, 164, 149, 145, 137, 88, 71, 80, 83, + 81, 86, 86, 90, 93, 95, 95, 94, 93, 95, 95, 94, 94, 93, 93, 93, + 93, 87, 87, 87, 75, 77, 80, 81, 81, 79, 80, 82, 80, 80, 83, 86, + 88, 89, 90, 92, 98, 98, 100, 99, 102, 102, 105, 104, 105, 101, 104, 106, + 111, 107, 101, 93, 104, 104, 101, 97, 95, 94, 88, 79, 83, 56, 46, 50, + 75, 84, 74, 96, 124, 136, 145, 151, 152, 152, 154, 155, 156, 159, 165, 170, + 172, 168, 160, 154, 167, 168, 168, 166, 164, 162, 163, 164, 169, 173, 177, 178, + 175, 173, 173, 173, 176, 176, 176, 176, 176, 176, 176, 176, 174, 172, 170, 171, + 174, 175, 173, 171, 157, 152, 143, 138, 141, 151, 153, 150, 160, 165, 173, 178, + 180, 178, 180, 179, 177, 176, 175, 175, 175, 176, 177, 178, 185, 184, 183, 182, + 182, 183, 185, 186, 185, 180, 177, 180, 181, 180, 180, 183, 192, 190, 188, 188, + 190, 190, 187, 184, 188, 190, 189, 184, 183, 189, 193, 194, 188, 185, 183, 184, + 184, 181, 178, 177, 186, 188, 187, 183, 182, 181, 174, 166, 165, 153, 151, 146, + 127, 124, 138, 146, 161, 159, 159, 159, 163, 165, 166, 165, 152, 147, 149, 92, + 81, 82, 87, 79, 71, 76, 82, 87, 90, 89, 86, 84, 95, 93, 90, 87, + 85, 86, 88, 87, 82, 84, 86, 80, 82, 83, 83, 82, 80, 76, 74, 89, + 86, 75, 91, 85, 93, 90, 103, 103, 96, 89, 89, 96, 99, 98, 93, 105, + 112, 116, 108, 103, 104, 108, 107, 109, 105, 103, 100, 96, 91, 86, 84, 90, + 89, 84, 76, 70, 59, 64, 90, 122, 135, 139, 144, 152, 148, 144, 151, 153, + 158, 164, 167, 166, 163, 159, 158, 163, 164, 164, 163, 161, 161, 163, 165, 164, + 169, 175, 180, 181, 177, 172, 168, 169, 170, 172, 176, 178, 176, 171, 167, 167, + 174, 179, 176, 167, 161, 161, 164, 167, 162, 147, 143, 146, 141, 138, 147, 152, + 160, 171, 178, 177, 169, 169, 170, 170, 172, 178, 184, 180, 171, 170, 175, 185, + 180, 175, 175, 180, 184, 185, 185, 186, 181, 177, 177, 181, 186, 188, 188, 192, + 193, 192, 190, 187, 185, 186, 188, 190, 190, 189, 188, 188, 187, 186, 186, 188, + 187, 187, 188, 187, 184, 178, 174, 181, 177, 175, 178, 179, 175, 171, 172, 164, + 161, 156, 148, 133, 126, 131, 141, 155, 154, 156, 158, 162, 164, 164, 162, 144, + 141, 144, 71, 98, 83, 76, 87, 77, 76, 77, 81, 83, 83, 81, 78, 81, + 78, 75, 74, 75, 79, 83, 87, 79, 79, 81, 82, 82, 80, 80, 78, 76, + 72, 71, 73, 81, 75, 84, 76, 88, 81, 86, 112, 111, 104, 94, 88, 86, + 92, 96, 89, 93, 96, 94, 98, 103, 105, 100, 93, 94, 103, 110, 107, 95, + 87, 87, 67, 83, 90, 89, 95, 95, 93, 103, 120, 134, 138, 142, 149, 146, + 143, 150, 153, 157, 163, 165, 165, 162, 160, 160, 162, 164, 165, 165, 164, 164, + 165, 167, 161, 164, 169, 173, 176, 176, 175, 174, 175, 171, 166, 165, 167, 170, + 173, 174, 171, 165, 162, 166, 174, 175, 168, 160, 157, 165, 164, 154, 143, 127, + 122, 130, 141, 156, 161, 156, 164, 185, 185, 169, 172, 175, 180, 182, 175, 171, + 178, 190, 177, 177, 178, 178, 179, 181, 184, 186, 193, 188, 181, 179, 180, 183, + 184, 185, 186, 187, 188, 187, 186, 186, 188, 189, 190, 190, 189, 188, 188, 187, + 186, 186, 189, 188, 187, 185, 183, 178, 171, 166, 173, 169, 169, 173, 174, 171, + 167, 168, 168, 163, 156, 145, 132, 127, 135, 147, 154, 155, 159, 162, 165, 165, + 162, 158, 147, 145, 132, 81, 102, 86, 77, 82, 78, 77, 76, 78, 80, 80, + 79, 77, 80, 81, 82, 82, 80, 78, 76, 73, 77, 78, 80, 81, 80, 78, + 77, 76, 76, 75, 75, 71, 96, 99, 95, 71, 83, 84, 95, 86, 90, 92, + 90, 94, 96, 105, 108, 115, 112, 110, 106, 110, 109, 105, 93, 103, 94, 96, + 101, 93, 81, 78, 86, 84, 97, 94, 83, 89, 94, 90, 91, 120, 135, 140, + 142, 148, 146, 143, 150, 152, 156, 160, 163, 163, 162, 162, 162, 162, 164, 167, + 168, 167, 166, 166, 167, 163, 164, 165, 167, 169, 172, 174, 176, 177, 172, 165, + 161, 162, 166, 169, 171, 163, 167, 171, 171, 169, 168, 170, 173, 168, 165, 159, + 155, 153, 144, 129, 117, 123, 127, 142, 159, 165, 168, 179, 193, 180, 172, 167, + 169, 172, 171, 169, 169, 171, 176, 181, 182, 180, 181, 186, 190, 195, 190, 183, + 179, 179, 181, 184, 185, 185, 187, 188, 188, 187, 186, 188, 190, 190, 190, 189, + 188, 188, 187, 186, 186, 192, 191, 189, 187, 184, 179, 173, 169, 172, 170, 171, + 176, 178, 175, 171, 171, 175, 168, 157, 144, 129, 126, 136, 150, 151, 154, 161, + 164, 167, 164, 160, 156, 150, 149, 115, 98, 107, 89, 82, 81, 78, 74, 71, + 71, 74, 76, 77, 78, 75, 77, 79, 81, 82, 82, 81, 80, 78, 80, 80, + 75, 76, 74, 72, 72, 75, 76, 77, 75, 86, 80, 83, 67, 79, 78, 88, + 96, 93, 90, 98, 110, 113, 102, 90, 98, 99, 101, 107, 114, 119, 118, 113, + 120, 105, 100, 104, 98, 81, 76, 82, 78, 85, 81, 75, 78, 81, 78, 86, + 119, 137, 141, 141, 147, 147, 145, 152, 152, 155, 158, 160, 161, 162, 164, 165, + 163, 166, 169, 170, 168, 166, 165, 165, 170, 169, 168, 167, 167, 168, 168, 169, + 173, 172, 170, 169, 168, 166, 162, 160, 160, 168, 174, 170, 160, 156, 162, 170, + 170, 159, 151, 147, 148, 150, 137, 116, 110, 108, 122, 146, 156, 158, 166, 181, + 185, 179, 177, 179, 181, 179, 175, 171, 173, 176, 180, 181, 183, 186, 191, 195, + 191, 187, 181, 178, 178, 182, 187, 190, 190, 192, 193, 192, 189, 187, 188, 188, + 189, 189, 189, 188, 188, 187, 187, 187, 187, 186, 186, 186, 186, 184, 180, 177, + 177, 174, 175, 180, 182, 178, 174, 174, 178, 171, 159, 145, 129, 124, 133, 147, + 153, 157, 163, 165, 166, 163, 160, 156, 151, 148, 99, 112, 108, 96, 91, 87, + 79, 73, 70, 69, 72, 76, 79, 81, 78, 77, 75, 74, 75, 79, 82, 85, + 79, 81, 84, 66, 65, 61, 58, 58, 60, 61, 63, 80, 64, 52, 82, 90, + 97, 80, 81, 104, 102, 100, 108, 118, 120, 109, 98, 96, 98, 103, 109, 114, + 117, 119, 119, 115, 105, 110, 124, 122, 100, 80, 72, 73, 76, 81, 89, 84, + 63, 51, 64, 111, 133, 138, 136, 141, 144, 144, 151, 151, 154, 157, 159, 160, + 161, 164, 166, 164, 166, 169, 169, 166, 163, 161, 161, 172, 172, 171, 170, 169, + 166, 164, 163, 169, 169, 170, 172, 172, 169, 164, 160, 168, 162, 157, 157, 162, + 162, 157, 151, 156, 158, 164, 148, 123, 120, 117, 98, 103, 122, 124, 112, 133, + 174, 182, 160, 167, 174, 182, 180, 173, 172, 178, 185, 176, 174, 174, 177, 184, + 190, 193, 194, 188, 185, 181, 178, 178, 181, 186, 190, 190, 192, 193, 193, 190, + 189, 188, 189, 189, 189, 188, 188, 188, 188, 187, 187, 181, 180, 180, 181, 182, + 181, 179, 176, 176, 173, 173, 177, 177, 173, 168, 168, 172, 166, 157, 145, 130, + 124, 132, 144, 155, 158, 163, 164, 163, 161, 158, 157, 148, 144, 96, 120, 109, + 105, 100, 96, 84, 78, 73, 70, 71, 73, 75, 75, 83, 81, 77, 74, 71, + 71, 72, 75, 79, 81, 82, 57, 55, 53, 47, 46, 46, 46, 47, 59, 57, + 65, 104, 103, 98, 83, 98, 95, 101, 106, 104, 105, 106, 115, 120, 118, 114, + 116, 116, 117, 111, 114, 116, 113, 106, 107, 110, 107, 92, 74, 60, 85, 79, + 79, 85, 77, 49, 42, 63, 104, 128, 134, 131, 136, 141, 143, 150, 152, 155, + 159, 161, 161, 162, 164, 166, 165, 167, 169, 168, 165, 163, 162, 162, 168, 169, + 171, 172, 171, 169, 167, 165, 169, 167, 166, 166, 169, 171, 172, 172, 165, 166, + 166, 167, 166, 166, 165, 164, 167, 164, 170, 154, 125, 112, 89, 46, 59, 81, + 87, 78, 82, 115, 149, 163, 176, 171, 165, 164, 171, 177, 175, 168, 175, 172, + 171, 176, 185, 191, 193, 192, 192, 190, 187, 182, 179, 179, 182, 185, 183, 186, + 189, 190, 190, 189, 190, 191, 188, 188, 188, 188, 188, 188, 188, 188, 186, 184, + 182, 182, 182, 180, 177, 175, 178, 173, 172, 174, 175, 171, 167, 168, 164, 160, + 154, 145, 131, 126, 133, 144, 154, 158, 163, 163, 162, 159, 158, 158, 144, 136, + 108, 124, 110, 113, 106, 104, 95, 88, 82, 78, 75, 73, 71, 69, 79, 82, + 85, 87, 87, 84, 81, 80, 80, 81, 80, 58, 58, 57, 52, 53, 53, 53, + 54, 45, 61, 77, 104, 88, 85, 79, 99, 104, 109, 111, 102, 94, 91, 101, + 108, 97, 90, 92, 98, 109, 110, 116, 120, 114, 112, 108, 97, 87, 82, 76, + 68, 73, 67, 63, 69, 77, 71, 76, 98, 101, 127, 134, 130, 135, 142, 146, + 153, 154, 157, 161, 163, 163, 163, 164, 165, 165, 167, 168, 167, 166, 165, 166, + 168, 167, 168, 169, 170, 171, 170, 169, 168, 171, 168, 165, 164, 167, 170, 172, + 173, 163, 174, 184, 182, 172, 167, 173, 181, 182, 165, 165, 158, 140, 130, 87, + 12, 23, 19, 30, 44, 36, 33, 71, 122, 169, 168, 169, 173, 181, 185, 176, + 163, 171, 174, 179, 185, 190, 193, 193, 193, 196, 196, 193, 188, 182, 179, 180, + 182, 182, 185, 189, 191, 191, 190, 190, 191, 188, 188, 188, 188, 188, 188, 188, + 188, 191, 189, 186, 184, 183, 181, 177, 175, 180, 175, 172, 175, 176, 174, 172, + 174, 166, 162, 155, 145, 130, 124, 131, 143, 147, 155, 163, 164, 163, 159, 157, + 156, 139, 128, 128, 128, 113, 117, 107, 106, 98, 93, 89, 85, 82, 78, 73, + 69, 71, 75, 82, 88, 92, 93, 92, 93, 83, 84, 82, 66, 66, 68, 68, + 69, 73, 74, 76, 85, 84, 75, 92, 95, 105, 89, 84, 88, 91, 91, 95, + 101, 104, 107, 108, 98, 83, 79, 87, 98, 101, 100, 100, 91, 108, 117, 109, + 100, 100, 97, 90, 77, 82, 81, 83, 93, 92, 85, 91, 100, 127, 137, 130, + 138, 144, 151, 155, 154, 156, 162, 163, 165, 164, 164, 165, 164, 164, 167, 167, + 167, 168, 171, 174, 169, 169, 168, 168, 168, 168, 168, 168, 171, 169, 168, 167, + 167, 167, 165, 163, 172, 172, 173, 176, 180, 179, 174, 169, 169, 162, 170, 165, + 142, 136, 100, 31, 72, 47, 36, 42, 52, 51, 53, 60, 94, 134, 174, 177, + 159, 152, 161, 173, 169, 178, 189, 196, 197, 195, 195, 194, 197, 196, 196, 190, + 185, 179, 181, 181, 188, 189, 194, 192, 193, 188, 189, 189, 186, 186, 186, 186, + 186, 186, 188, 188, 187, 185, 182, 180, 179, 178, 175, 172, 178, 173, 170, 172, + 174, 173, 174, 177, 177, 170, 158, 145, 128, 120, 127, 138, 144, 153, 164, 167, + 163, 156, 151, 150, 132, 119, 141, 129, 115, 122, 106, 109, 101, 102, 101, 100, + 98, 94, 89, 83, 80, 79, 78, 78, 79, 80, 84, 86, 90, 93, 90, 87, + 86, 85, 84, 81, 81, 80, 80, 85, 85, 82, 81, 82, 84, 91, 97, 99, + 101, 90, 84, 90, 91, 90, 97, 89, 81, 76, 73, 73, 74, 79, 81, 97, + 91, 88, 83, 78, 77, 85, 93, 86, 78, 79, 89, 92, 83, 79, 87, 100, + 126, 131, 120, 129, 139, 145, 144, 150, 154, 162, 161, 159, 156, 157, 159, 160, + 162, 168, 170, 169, 168, 168, 169, 167, 168, 171, 171, 172, 172, 171, 169, 162, + 161, 160, 158, 160, 161, 164, 165, 162, 170, 176, 177, 173, 168, 164, 163, 174, + 158, 159, 155, 153, 142, 98, 70, 119, 104, 80, 61, 48, 45, 47, 47, 36, + 65, 72, 127, 144, 168, 181, 175, 184, 190, 192, 190, 188, 191, 191, 187, 199, + 196, 197, 190, 183, 175, 182, 189, 182, 181, 184, 184, 187, 186, 189, 190, 184, + 185, 186, 186, 184, 184, 187, 189, 191, 183, 176, 178, 182, 179, 176, 175, 177, + 179, 174, 175, 182, 176, 170, 177, 176, 161, 167, 144, 137, 121, 140, 140, 148, + 154, 160, 154, 148, 156, 157, 138, 113, 127, 132, 115, 108, 118, 121, 116, 127, + 135, 134, 126, 116, 110, 109, 110, 104, 95, 89, 86, 83, 77, 80, 91, 92, + 118, 96, 82, 83, 82, 82, 81, 80, 81, 80, 75, 77, 80, 81, 82, 83, + 84, 87, 84, 91, 86, 83, 88, 84, 82, 88, 73, 79, 85, 90, 90, 86, + 84, 84, 77, 73, 75, 81, 85, 80, 78, 77, 79, 77, 82, 90, 90, 84, + 90, 105, 100, 125, 129, 121, 128, 139, 142, 144, 150, 155, 161, 161, 157, 154, + 157, 158, 159, 160, 164, 166, 168, 167, 168, 169, 170, 171, 173, 173, 172, 171, + 170, 167, 164, 160, 160, 159, 159, 160, 163, 163, 162, 165, 171, 171, 168, 166, + 166, 167, 174, 154, 156, 148, 151, 144, 127, 71, 107, 111, 114, 116, 107, 91, + 68, 49, 32, 29, 38, 125, 170, 183, 188, 190, 189, 195, 196, 194, 192, 195, + 194, 193, 191, 193, 195, 194, 187, 179, 180, 187, 180, 180, 181, 181, 181, 181, + 181, 181, 180, 182, 183, 182, 183, 182, 183, 185, 190, 183, 178, 180, 184, 181, + 177, 176, 169, 175, 173, 172, 176, 168, 168, 178, 175, 160, 163, 138, 127, 113, + 136, 141, 172, 171, 170, 158, 143, 143, 140, 122, 132, 125, 126, 136, 130, 118, + 118, 135, 142, 119, 101, 102, 109, 110, 112, 116, 124, 109, 95, 90, 87, 83, + 85, 95, 100, 121, 109, 78, 79, 80, 80, 79, 78, 78, 77, 82, 82, 82, + 81, 80, 79, 80, 79, 82, 77, 66, 67, 85, 89, 79, 74, 72, 77, 80, + 79, 74, 74, 78, 81, 90, 78, 71, 76, 85, 86, 83, 81, 87, 89, 95, + 93, 78, 61, 61, 75, 98, 124, 128, 121, 128, 137, 142, 145, 152, 157, 161, + 162, 160, 157, 160, 159, 158, 161, 165, 167, 167, 167, 170, 171, 175, 175, 175, + 174, 173, 171, 171, 167, 165, 163, 162, 160, 159, 159, 162, 162, 163, 163, 166, + 165, 165, 165, 168, 169, 161, 146, 154, 146, 149, 139, 117, 45, 111, 104, 94, + 91, 92, 96, 95, 91, 108, 79, 67, 128, 161, 162, 161, 166, 185, 191, 192, + 190, 188, 192, 191, 190, 185, 189, 196, 199, 193, 183, 181, 184, 185, 185, 185, + 184, 183, 182, 180, 179, 179, 180, 181, 180, 181, 180, 181, 183, 188, 182, 180, + 183, 186, 182, 177, 176, 173, 179, 179, 176, 176, 166, 165, 177, 176, 165, 165, + 139, 123, 116, 142, 150, 146, 145, 152, 156, 144, 137, 131, 118, 125, 132, 136, + 132, 133, 138, 135, 135, 130, 104, 89, 102, 115, 111, 108, 114, 125, 119, 114, + 113, 110, 105, 101, 100, 103, 110, 106, 77, 76, 78, 78, 80, 78, 76, 76, + 86, 82, 77, 71, 70, 72, 77, 79, 65, 78, 79, 71, 67, 64, 72, 89, + 77, 80, 80, 77, 77, 82, 88, 88, 80, 66, 57, 59, 67, 68, 68, 69, + 69, 75, 83, 86, 76, 64, 63, 74, 96, 121, 125, 121, 128, 136, 140, 145, + 151, 154, 159, 161, 161, 162, 164, 165, 161, 162, 167, 167, 169, 170, 172, 173, + 175, 176, 176, 175, 174, 173, 173, 171, 167, 164, 162, 160, 158, 160, 161, 161, + 165, 164, 165, 163, 164, 164, 166, 165, 151, 145, 148, 139, 141, 139, 83, 61, + 106, 99, 93, 91, 96, 98, 97, 95, 92, 86, 90, 124, 154, 173, 190, 201, + 181, 186, 187, 185, 183, 187, 187, 186, 185, 189, 195, 199, 194, 184, 180, 182, + 186, 186, 187, 186, 185, 182, 180, 179, 178, 180, 181, 180, 180, 179, 180, 181, + 185, 181, 181, 185, 188, 182, 177, 176, 182, 185, 181, 177, 178, 169, 164, 174, + 174, 168, 164, 141, 119, 121, 146, 157, 160, 151, 152, 155, 141, 130, 126, 120, + 123, 135, 136, 127, 130, 142, 139, 126, 123, 116, 114, 119, 118, 109, 113, 124, + 123, 126, 124, 124, 120, 115, 112, 111, 107, 100, 101, 75, 74, 75, 75, 77, + 78, 77, 78, 72, 70, 66, 65, 71, 77, 82, 85, 84, 83, 75, 73, 82, + 84, 78, 80, 67, 75, 82, 90, 99, 105, 99, 89, 91, 90, 94, 98, 97, + 90, 82, 81, 73, 73, 75, 78, 78, 76, 79, 87, 93, 117, 123, 121, 131, + 137, 139, 145, 150, 153, 158, 161, 164, 167, 169, 171, 165, 166, 170, 170, 171, + 172, 174, 176, 174, 175, 176, 176, 176, 176, 175, 174, 169, 168, 166, 164, 163, + 165, 166, 166, 170, 169, 167, 166, 166, 164, 162, 156, 144, 143, 136, 124, 125, + 136, 49, 103, 96, 94, 93, 93, 94, 89, 81, 75, 93, 97, 121, 142, 162, + 162, 168, 175, 186, 191, 190, 188, 185, 189, 189, 188, 190, 190, 194, 195, 190, + 182, 179, 181, 180, 181, 182, 182, 182, 180, 178, 176, 179, 180, 181, 180, 180, + 179, 180, 181, 182, 180, 181, 186, 188, 182, 178, 177, 184, 182, 174, 172, 180, + 173, 166, 171, 165, 165, 159, 140, 111, 117, 134, 141, 157, 141, 134, 131, 123, + 125, 136, 141, 143, 127, 128, 142, 144, 130, 124, 134, 134, 138, 134, 118, 109, + 111, 123, 132, 129, 131, 131, 121, 111, 110, 115, 118, 110, 106, 108, 75, 72, + 72, 73, 75, 77, 77, 79, 72, 72, 74, 80, 87, 89, 86, 83, 91, 84, + 75, 81, 100, 100, 81, 69, 81, 84, 86, 85, 94, 101, 94, 82, 90, 91, + 93, 93, 87, 80, 82, 86, 104, 95, 84, 75, 73, 74, 74, 78, 92, 113, + 119, 121, 131, 137, 139, 147, 150, 152, 156, 160, 165, 169, 171, 172, 168, 170, + 171, 172, 172, 172, 174, 176, 173, 174, 175, 176, 176, 176, 176, 174, 174, 171, + 169, 168, 169, 170, 171, 172, 172, 170, 168, 167, 166, 163, 158, 149, 130, 135, + 135, 123, 118, 110, 23, 94, 91, 86, 80, 75, 77, 81, 87, 93, 98, 82, + 114, 142, 175, 169, 173, 190, 190, 194, 192, 189, 186, 189, 189, 188, 193, 190, + 190, 190, 186, 180, 179, 182, 179, 180, 182, 184, 183, 182, 180, 178, 179, 180, + 181, 180, 179, 178, 179, 180, 182, 180, 183, 187, 189, 183, 180, 181, 184, 180, + 171, 172, 184, 181, 173, 175, 165, 166, 155, 138, 105, 114, 122, 126, 124, 120, + 125, 131, 130, 136, 145, 143, 134, 129, 131, 140, 144, 142, 140, 144, 141, 146, + 141, 129, 127, 133, 132, 122, 128, 137, 143, 134, 123, 114, 111, 108, 106, 114, + 117, 74, 70, 68, 69, 69, 71, 77, 80, 85, 85, 87, 92, 97, 96, 91, + 85, 68, 90, 101, 93, 82, 71, 78, 99, 102, 103, 97, 87, 89, 99, 100, + 94, 104, 102, 95, 91, 86, 85, 95, 105, 94, 89, 85, 83, 83, 85, 84, + 84, 89, 107, 115, 118, 130, 135, 140, 149, 154, 154, 157, 161, 167, 171, 172, + 173, 171, 173, 172, 171, 170, 170, 172, 174, 173, 174, 174, 174, 174, 173, 173, + 172, 172, 171, 170, 169, 170, 171, 172, 173, 173, 169, 166, 164, 163, 160, 155, + 147, 124, 128, 130, 118, 112, 77, 51, 75, 82, 87, 92, 96, 98, 97, 99, + 101, 114, 98, 130, 139, 171, 170, 176, 192, 190, 194, 192, 187, 183, 186, 186, + 185, 190, 187, 186, 187, 185, 180, 179, 183, 181, 183, 185, 186, 186, 184, 181, + 179, 178, 179, 179, 178, 177, 176, 176, 178, 184, 183, 185, 189, 190, 185, 184, + 186, 186, 183, 175, 175, 182, 178, 173, 179, 169, 169, 151, 138, 102, 117, 122, + 127, 136, 143, 152, 152, 143, 144, 141, 125, 119, 134, 137, 131, 137, 153, 156, + 148, 143, 146, 146, 147, 149, 148, 139, 129, 133, 139, 143, 138, 131, 126, 116, + 104, 108, 112, 109, 73, 67, 66, 65, 67, 70, 75, 79, 85, 80, 81, 83, + 93, 97, 98, 94, 101, 90, 72, 70, 89, 96, 91, 91, 76, 88, 93, 91, + 92, 98, 98, 91, 87, 88, 89, 92, 88, 85, 86, 92, 88, 94, 99, 103, + 100, 94, 83, 76, 87, 104, 113, 118, 129, 135, 138, 150, 155, 157, 159, 161, + 167, 170, 170, 170, 172, 173, 171, 170, 168, 168, 170, 171, 175, 175, 175, 172, + 173, 170, 168, 167, 168, 167, 166, 166, 167, 168, 170, 172, 170, 166, 163, 158, + 159, 156, 155, 148, 138, 129, 122, 98, 97, 57, 116, 100, 94, 95, 93, 86, + 80, 78, 83, 89, 90, 106, 157, 143, 167, 178, 182, 180, 193, 197, 194, 188, + 184, 186, 186, 185, 187, 184, 184, 186, 185, 181, 180, 183, 179, 181, 183, 184, + 182, 180, 176, 174, 176, 177, 178, 176, 176, 174, 174, 176, 187, 186, 188, 191, + 192, 187, 187, 190, 184, 184, 177, 173, 175, 167, 163, 172, 164, 164, 144, 132, + 98, 119, 126, 130, 131, 134, 136, 125, 119, 133, 143, 134, 139, 129, 130, 142, + 143, 133, 135, 151, 151, 143, 143, 145, 141, 138, 146, 156, 148, 137, 122, 108, + 110, 119, 123, 122, 115, 110, 98, 73, 69, 71, 71, 73, 74, 76, 78, 85, + 83, 85, 74, 64, 69, 77, 70, 58, 72, 80, 81, 85, 80, 80, 90, 99, + 95, 96, 103, 97, 79, 69, 75, 97, 97, 92, 88, 87, 89, 93, 98, 88, + 93, 97, 101, 100, 101, 105, 108, 93, 100, 113, 122, 127, 132, 135, 140, 155, + 156, 160, 161, 164, 168, 175, 179, 172, 171, 170, 169, 169, 170, 170, 171, 170, + 168, 169, 168, 171, 171, 172, 173, 166, 163, 169, 170, 161, 163, 168, 167, 163, + 166, 168, 160, 158, 154, 152, 145, 146, 111, 125, 110, 79, 104, 121, 99, 115, + 112, 106, 102, 99, 96, 96, 96, 80, 117, 146, 154, 165, 170, 176, 182, 189, + 192, 192, 191, 185, 184, 184, 187, 196, 191, 185, 183, 183, 182, 179, 175, 176, + 178, 181, 183, 183, 182, 180, 179, 184, 180, 176, 176, 181, 183, 181, 179, 192, + 191, 190, 191, 193, 190, 184, 179, 188, 185, 180, 174, 170, 168, 167, 168, 164, + 142, 150, 121, 73, 127, 125, 138, 132, 137, 138, 138, 133, 130, 132, 136, 143, + 146, 148, 150, 148, 145, 150, 157, 148, 141, 135, 137, 141, 142, 137, 128, 131, + 129, 124, 116, 99, 87, 91, 110, 114, 114, 109, 75, 72, 71, 73, 72, 73, + 76, 78, 83, 81, 84, 80, 73, 80, 88, 80, 66, 73, 69, 71, 81, 88, + 93, 107, 91, 95, 95, 93, 92, 93, 92, 91, 85, 94, 100, 101, 97, 89, + 85, 81, 91, 99, 113, 117, 110, 95, 79, 67, 101, 96, 98, 108, 117, 120, + 125, 134, 146, 151, 156, 161, 164, 166, 170, 170, 174, 173, 172, 171, 171, 171, + 172, 171, 169, 168, 168, 166, 165, 163, 160, 160, 173, 166, 172, 172, 170, 170, + 174, 166, 169, 165, 158, 151, 149, 150, 145, 141, 131, 128, 131, 108, 99, 113, + 114, 119, 119, 119, 118, 115, 112, 108, 106, 100, 91, 123, 149, 156, 168, 173, + 178, 182, 188, 190, 191, 192, 189, 188, 186, 187, 186, 185, 184, 184, 184, 181, + 178, 175, 179, 178, 177, 176, 176, 177, 179, 180, 182, 176, 169, 167, 172, 180, + 188, 192, 194, 194, 193, 189, 186, 183, 182, 182, 184, 179, 172, 170, 171, 171, + 170, 166, 179, 157, 152, 106, 79, 122, 116, 122, 123, 125, 124, 125, 129, 142, + 158, 174, 161, 158, 159, 163, 162, 158, 157, 159, 148, 143, 141, 140, 141, 142, + 142, 139, 139, 133, 126, 118, 100, 80, 71, 78, 110, 140, 132, 79, 75, 75, + 76, 77, 79, 78, 80, 86, 81, 85, 86, 84, 90, 95, 87, 80, 77, 64, + 59, 67, 71, 70, 79, 86, 97, 101, 94, 90, 95, 89, 78, 94, 89, 77, + 66, 63, 73, 91, 103, 113, 105, 92, 80, 80, 91, 108, 119, 91, 83, 88, + 101, 113, 118, 129, 141, 140, 147, 157, 162, 166, 166, 166, 166, 173, 171, 171, + 170, 170, 169, 169, 168, 161, 161, 164, 165, 163, 161, 159, 158, 167, 158, 162, + 164, 164, 166, 166, 155, 161, 160, 157, 155, 155, 151, 136, 123, 127, 141, 122, + 93, 115, 123, 105, 130, 129, 129, 131, 131, 129, 123, 119, 114, 102, 129, 149, + 156, 170, 175, 178, 181, 186, 187, 189, 192, 193, 192, 187, 184, 176, 180, 184, + 185, 184, 180, 177, 176, 179, 179, 177, 176, 176, 177, 178, 178, 172, 175, 179, + 182, 185, 187, 189, 190, 198, 199, 197, 191, 186, 184, 187, 192, 185, 177, 170, + 169, 173, 175, 171, 165, 157, 146, 138, 84, 97, 130, 122, 122, 128, 130, 124, + 116, 109, 106, 109, 114, 148, 147, 148, 157, 163, 161, 159, 156, 148, 150, 150, + 149, 145, 143, 141, 141, 111, 103, 97, 97, 93, 82, 69, 72, 96, 137, 132, + 81, 79, 80, 80, 82, 85, 85, 87, 92, 86, 90, 91, 90, 93, 95, 86, + 92, 93, 84, 77, 83, 80, 75, 78, 63, 71, 75, 77, 81, 91, 93, 91, + 93, 92, 88, 85, 79, 75, 69, 65, 74, 82, 93, 99, 97, 88, 75, 67, + 68, 75, 84, 87, 95, 109, 121, 126, 135, 142, 152, 159, 161, 163, 163, 163, + 169, 166, 168, 166, 166, 164, 164, 163, 158, 157, 158, 156, 156, 154, 153, 155, + 164, 158, 162, 165, 162, 163, 165, 155, 169, 164, 154, 144, 143, 149, 148, 147, + 133, 133, 104, 81, 114, 127, 106, 125, 128, 130, 132, 132, 131, 125, 121, 117, + 109, 129, 146, 154, 170, 175, 177, 181, 186, 186, 187, 192, 194, 192, 184, 178, + 176, 180, 184, 185, 181, 178, 178, 179, 178, 180, 182, 183, 183, 181, 179, 177, + 173, 179, 186, 189, 189, 186, 185, 186, 199, 198, 195, 191, 190, 189, 191, 193, + 187, 182, 177, 174, 174, 172, 169, 165, 156, 154, 146, 78, 114, 123, 112, 100, + 105, 110, 118, 121, 126, 128, 131, 134, 123, 124, 126, 133, 139, 138, 138, 139, + 132, 133, 136, 136, 131, 124, 116, 110, 114, 105, 94, 92, 91, 85, 75, 76, + 92, 114, 115, 82, 81, 82, 83, 87, 88, 90, 91, 93, 86, 90, 93, 89, + 91, 93, 85, 74, 83, 85, 86, 95, 93, 93, 100, 110, 94, 79, 71, 61, + 53, 54, 60, 69, 72, 81, 94, 102, 93, 72, 53, 84, 80, 74, 71, 72, + 77, 82, 86, 85, 104, 107, 87, 84, 102, 114, 111, 126, 133, 140, 146, 150, + 155, 157, 159, 164, 162, 164, 163, 163, 160, 159, 157, 159, 156, 151, 147, 146, + 145, 144, 147, 152, 151, 158, 158, 152, 152, 157, 152, 153, 160, 165, 161, 153, + 148, 142, 137, 121, 108, 104, 95, 105, 121, 113, 117, 116, 116, 117, 114, 114, + 111, 110, 109, 109, 130, 145, 155, 173, 177, 181, 186, 188, 188, 187, 191, 191, + 189, 180, 175, 183, 185, 185, 182, 178, 177, 179, 183, 182, 182, 182, 182, 182, + 181, 181, 181, 185, 183, 179, 174, 173, 177, 186, 194, 200, 195, 191, 190, 194, + 193, 187, 181, 181, 182, 181, 177, 171, 168, 170, 169, 154, 156, 142, 73, 118, + 117, 118, 108, 129, 127, 118, 111, 105, 103, 103, 105, 117, 115, 116, 116, 112, + 109, 112, 117, 122, 117, 114, 113, 113, 110, 101, 94, 97, 94, 94, 93, 91, + 89, 85, 85, 88, 89, 84, 81, 81, 83, 85, 86, 88, 91, 92, 92, 83, + 88, 94, 90, 90, 96, 92, 75, 83, 78, 76, 81, 80, 81, 90, 89, 81, + 83, 91, 90, 80, 77, 80, 63, 52, 47, 54, 66, 73, 71, 67, 44, 49, + 60, 73, 85, 93, 97, 99, 98, 114, 108, 81, 73, 94, 110, 107, 122, 127, + 134, 140, 145, 151, 158, 159, 159, 160, 160, 159, 159, 157, 155, 152, 151, 149, + 146, 145, 145, 144, 146, 148, 145, 145, 152, 153, 145, 145, 154, 151, 143, 154, + 163, 156, 140, 123, 108, 96, 98, 88, 115, 116, 100, 110, 115, 116, 110, 109, + 107, 103, 102, 101, 101, 102, 111, 132, 147, 159, 177, 180, 184, 192, 191, 191, + 189, 189, 188, 186, 180, 177, 190, 188, 184, 180, 177, 178, 181, 184, 186, 183, + 178, 175, 175, 179, 185, 189, 183, 182, 180, 179, 182, 186, 191, 196, 206, 199, + 194, 195, 201, 198, 187, 176, 171, 176, 179, 177, 169, 167, 170, 174, 148, 144, + 122, 64, 108, 108, 122, 120, 119, 121, 121, 123, 127, 126, 124, 123, 114, 113, + 114, 114, 109, 105, 111, 119, 96, 86, 73, 70, 74, 78, 79, 77, 81, 90, + 102, 105, 106, 105, 101, 95, 97, 97, 85, 87, 88, 88, 89, 90, 90, 93, + 93, 94, 86, 91, 97, 91, 90, 97, 99, 105, 107, 96, 89, 91, 87, 83, + 85, 95, 99, 107, 112, 108, 97, 81, 67, 69, 59, 53, 50, 47, 41, 33, + 28, 36, 39, 47, 57, 68, 73, 73, 74, 81, 87, 82, 72, 73, 86, 96, + 97, 112, 119, 126, 134, 140, 145, 152, 155, 153, 151, 152, 152, 152, 149, 148, + 146, 138, 137, 139, 139, 136, 132, 130, 130, 135, 131, 135, 137, 133, 136, 145, + 141, 143, 138, 124, 104, 94, 98, 106, 107, 94, 85, 107, 107, 96, 103, 104, + 109, 106, 105, 104, 102, 100, 97, 96, 101, 109, 133, 150, 162, 177, 178, 182, + 193, 193, 193, 191, 189, 185, 185, 184, 186, 191, 187, 181, 178, 178, 180, 182, + 183, 183, 182, 180, 180, 181, 183, 187, 189, 178, 181, 187, 193, 199, 199, 195, + 192, 200, 197, 194, 196, 200, 197, 189, 182, 171, 174, 177, 176, 171, 171, 172, + 173, 166, 150, 117, 71, 98, 93, 103, 93, 90, 95, 101, 109, 113, 112, 105, + 99, 107, 105, 106, 109, 111, 109, 112, 116, 114, 106, 98, 95, 97, 103, 107, + 111, 119, 128, 133, 131, 126, 122, 112, 97, 112, 116, 105, 94, 94, 94, 93, + 95, 95, 94, 96, 100, 92, 97, 102, 93, 89, 97, 102, 104, 105, 96, 97, + 107, 104, 93, 91, 95, 100, 97, 86, 84, 89, 88, 75, 72, 65, 65, 60, + 53, 50, 49, 53, 54, 52, 54, 59, 67, 74, 80, 82, 91, 85, 84, 97, + 105, 100, 96, 99, 92, 97, 107, 115, 122, 127, 133, 136, 139, 139, 139, 140, + 140, 137, 134, 132, 128, 127, 125, 122, 113, 100, 88, 83, 88, 80, 80, 83, + 82, 90, 97, 90, 80, 88, 96, 103, 111, 118, 119, 111, 108, 91, 89, 82, + 93, 102, 88, 96, 99, 99, 99, 98, 96, 92, 90, 94, 104, 130, 148, 162, + 174, 173, 176, 190, 192, 193, 192, 189, 184, 185, 188, 193, 189, 183, 179, 176, + 180, 183, 183, 182, 175, 180, 187, 193, 194, 192, 187, 184, 187, 185, 183, 185, + 192, 196, 197, 196, 184, 184, 185, 187, 188, 187, 187, 185, 179, 179, 177, 177, + 175, 175, 174, 169, 161, 142, 112, 88, 111, 104, 108, 93, 101, 97, 93, 93, + 98, 103, 105, 104, 105, 100, 98, 102, 107, 104, 100, 97, 102, 103, 104, 103, + 103, 102, 104, 108, 113, 117, 118, 116, 118, 123, 119, 106, 92, 95, 94, 92, + 86, 84, 88, 94, 94, 95, 96, 101, 98, 97, 100, 100, 96, 97, 100, 102, + 102, 100, 96, 92, 89, 91, 91, 92, 88, 83, 79, 77, 79, 79, 79, 74, + 77, 80, 82, 80, 76, 70, 68, 61, 69, 66, 62, 68, 71, 79, 93, 86, + 87, 89, 92, 93, 94, 94, 95, 101, 96, 89, 86, 88, 96, 105, 114, 119, + 120, 118, 112, 108, 108, 114, 120, 109, 100, 84, 68, 62, 69, 76, 80, 94, + 97, 100, 100, 99, 97, 99, 101, 106, 106, 106, 107, 107, 107, 108, 106, 98, + 97, 97, 97, 97, 98, 97, 98, 100, 95, 95, 96, 96, 94, 96, 106, 110, + 129, 143, 152, 164, 179, 186, 186, 186, 185, 187, 193, 192, 188, 188, 191, 192, + 181, 174, 170, 177, 180, 178, 175, 178, 184, 187, 183, 183, 186, 186, 180, 179, + 188, 195, 194, 188, 186, 192, 199, 193, 186, 180, 183, 190, 192, 188, 181, 176, + 176, 178, 180, 181, 177, 173, 167, 153, 155, 78, 120, 102, 101, 105, 106, 104, + 100, 99, 98, 97, 98, 97, 95, 98, 96, 94, 92, 94, 97, 103, 105, 100, + 100, 103, 103, 103, 104, 102, 103, 105, 108, 117, 123, 119, 120, 110, 88, 79, + 85, 110, 88, 87, 89, 95, 97, 95, 96, 100, 101, 98, 97, 99, 99, 95, + 95, 98, 96, 98, 100, 98, 94, 91, 90, 87, 90, 85, 82, 80, 78, 78, + 80, 82, 80, 83, 84, 85, 84, 83, 82, 81, 72, 83, 84, 82, 85, 81, + 79, 87, 88, 88, 88, 89, 90, 92, 94, 95, 93, 93, 93, 93, 93, 93, + 93, 95, 88, 92, 93, 87, 83, 81, 85, 87, 76, 83, 90, 95, 100, 104, + 100, 95, 94, 95, 96, 96, 97, 97, 99, 100, 102, 102, 101, 100, 102, 101, + 100, 98, 97, 94, 95, 94, 92, 91, 91, 91, 100, 97, 99, 102, 103, 99, + 99, 106, 113, 119, 133, 154, 170, 176, 184, 191, 184, 183, 186, 190, 189, 186, + 186, 188, 184, 178, 172, 169, 171, 175, 181, 183, 182, 186, 188, 185, 186, 189, + 190, 185, 183, 187, 190, 191, 190, 190, 193, 197, 195, 189, 183, 182, 184, 183, + 177, 173, 175, 175, 176, 177, 177, 173, 169, 163, 159, 142, 89, 117, 107, 105, + 105, 98, 101, 101, 98, 99, 101, 102, 103, 103, 98, 96, 93, 90, 90, 92, + 93, 95, 99, 101, 101, 100, 99, 102, 104, 108, 121, 114, 108, 101, 97, 107, + 116, 108, 65, 94, 116, 76, 79, 85, 91, 90, 86, 89, 96, 97, 94, 94, + 96, 97, 92, 93, 96, 93, 97, 102, 102, 100, 95, 92, 87, 89, 85, 85, + 84, 83, 84, 85, 86, 81, 80, 79, 79, 80, 83, 85, 87, 79, 90, 90, + 89, 91, 85, 80, 86, 90, 89, 88, 87, 89, 91, 94, 96, 96, 98, 101, + 104, 104, 101, 98, 98, 111, 116, 117, 116, 113, 108, 108, 107, 106, 109, 109, + 107, 105, 104, 98, 92, 103, 102, 100, 100, 104, 106, 106, 106, 110, 109, 110, + 108, 106, 105, 103, 103, 107, 104, 102, 100, 98, 97, 98, 98, 101, 99, 103, + 107, 107, 102, 100, 106, 114, 112, 123, 153, 171, 169, 176, 190, 184, 181, 183, + 185, 185, 183, 184, 185, 179, 176, 176, 172, 170, 173, 181, 187, 184, 187, 189, + 186, 187, 191, 191, 190, 193, 192, 191, 191, 192, 193, 194, 193, 199, 196, 191, + 188, 186, 182, 178, 175, 176, 175, 176, 177, 175, 174, 168, 162, 152, 114, 99, + 110, 109, 110, 109, 95, 101, 101, 101, 101, 103, 105, 108, 109, 106, 104, 102, + 99, 98, 98, 98, 99, 106, 108, 108, 105, 102, 105, 110, 116, 107, 108, 116, + 118, 112, 110, 107, 93, 101, 64, 96, 69, 70, 74, 81, 85, 83, 86, 91, + 92, 90, 92, 95, 97, 93, 94, 98, 96, 99, 100, 100, 97, 92, 88, 85, + 83, 85, 85, 86, 85, 86, 86, 86, 83, 82, 80, 80, 82, 85, 88, 90, + 85, 93, 90, 87, 92, 91, 89, 98, 93, 93, 94, 94, 95, 97, 99, 100, + 106, 105, 104, 104, 106, 108, 110, 114, 108, 113, 113, 113, 108, 106, 104, 104, + 113, 111, 106, 100, 100, 106, 110, 108, 112, 107, 102, 102, 106, 109, 108, 107, + 112, 111, 112, 111, 109, 108, 106, 106, 114, 110, 109, 104, 104, 105, 106, 107, + 101, 99, 102, 106, 106, 100, 100, 105, 116, 111, 119, 138, 155, 161, 167, 180, + 183, 182, 181, 182, 182, 181, 182, 181, 179, 177, 177, 174, 172, 173, 178, 181, + 182, 182, 183, 182, 183, 186, 189, 189, 197, 195, 193, 191, 190, 190, 189, 189, + 193, 193, 191, 189, 185, 182, 181, 181, 174, 173, 173, 172, 173, 170, 164, 159, + 143, 94, 111, 106, 103, 105, 104, 90, 105, 104, 103, 101, 100, 101, 103, 105, + 107, 107, 107, 107, 107, 107, 107, 109, 109, 111, 113, 109, 104, 106, 109, 114, + 116, 112, 114, 114, 103, 102, 105, 99, 97, 90, 82, 75, 70, 69, 77, 84, + 88, 92, 96, 93, 89, 90, 94, 95, 90, 89, 92, 94, 95, 95, 92, 89, + 88, 86, 87, 82, 84, 85, 87, 88, 88, 87, 84, 90, 89, 89, 90, 90, + 91, 92, 93, 90, 97, 94, 93, 100, 99, 97, 104, 97, 99, 102, 105, 106, + 106, 105, 104, 110, 108, 105, 104, 105, 108, 112, 117, 117, 120, 120, 119, 116, + 115, 114, 115, 101, 105, 108, 110, 113, 115, 113, 109, 116, 111, 106, 104, 105, + 107, 106, 104, 105, 105, 107, 107, 106, 106, 107, 107, 110, 106, 106, 102, 104, + 103, 105, 107, 104, 100, 99, 101, 102, 97, 101, 107, 111, 114, 116, 122, 136, + 154, 167, 170, 178, 181, 180, 179, 178, 179, 178, 178, 176, 175, 174, 175, 178, + 179, 178, 177, 183, 181, 180, 180, 183, 185, 188, 191, 192, 195, 196, 194, 190, + 188, 191, 194, 185, 187, 187, 185, 182, 180, 180, 182, 172, 170, 168, 164, 163, + 158, 151, 145, 138, 92, 125, 105, 101, 95, 94, 85, 104, 105, 104, 101, 98, + 97, 99, 101, 103, 104, 105, 106, 107, 108, 108, 108, 104, 106, 110, 110, 107, + 106, 108, 109, 117, 111, 114, 116, 107, 106, 110, 105, 103, 97, 127, 79, 71, + 68, 74, 83, 88, 92, 96, 95, 92, 93, 93, 91, 84, 81, 81, 86, 86, + 85, 84, 83, 85, 88, 92, 85, 87, 87, 89, 90, 90, 89, 88, 90, 90, + 91, 92, 92, 92, 91, 91, 86, 95, 96, 98, 104, 99, 91, 94, 94, 97, + 101, 105, 106, 105, 102, 100, 107, 107, 107, 107, 106, 105, 104, 105, 109, 110, + 108, 105, 105, 107, 107, 108, 110, 114, 114, 110, 108, 107, 103, 97, 114, 111, + 107, 105, 105, 104, 104, 103, 104, 105, 107, 107, 108, 108, 111, 111, 109, 109, + 108, 105, 105, 107, 108, 107, 108, 103, 101, 101, 102, 100, 103, 109, 106, 114, + 117, 113, 124, 145, 161, 167, 169, 174, 176, 174, 175, 176, 175, 172, 169, 168, + 169, 173, 179, 182, 181, 179, 186, 182, 180, 182, 185, 184, 187, 191, 183, 188, + 193, 193, 190, 190, 193, 196, 186, 186, 186, 184, 181, 178, 178, 176, 178, 173, + 168, 161, 155, 147, 138, 131, 121, 92, 121, 104, 101, 97, 98, 98, 99, 104, + 107, 106, 102, 101, 103, 106, 105, 105, 105, 105, 105, 106, 106, 108, 104, 105, + 108, 111, 112, 112, 113, 113, 106, 101, 111, 119, 114, 110, 110, 103, 102, 95, + 106, 75, 69, 70, 75, 79, 80, 84, 88, 90, 88, 89, 89, 86, 78, 75, + 76, 82, 82, 82, 81, 80, 82, 85, 89, 88, 89, 90, 91, 91, 91, 91, + 89, 89, 87, 87, 88, 88, 89, 89, 89, 86, 93, 93, 94, 101, 97, 88, + 91, 92, 94, 97, 99, 101, 100, 99, 98, 105, 106, 107, 107, 106, 104, 102, + 103, 110, 109, 108, 109, 111, 111, 111, 111, 106, 107, 103, 99, 100, 108, 113, + 114, 109, 109, 110, 108, 107, 106, 106, 107, 110, 110, 112, 113, 113, 114, 114, + 116, 114, 114, 114, 113, 112, 110, 110, 110, 107, 103, 101, 105, 105, 102, 103, + 107, 110, 111, 114, 115, 119, 127, 141, 155, 160, 167, 171, 169, 170, 172, 170, + 164, 163, 164, 165, 166, 170, 173, 178, 182, 185, 180, 179, 182, 185, 182, 183, + 188, 181, 183, 187, 189, 190, 190, 188, 187, 185, 184, 182, 181, 180, 178, 176, + 175, 172, 166, 159, 151, 143, 134, 125, 116, 108, 97, 107, 98, 103, 98, 99, + 104, 97, 102, 108, 109, 105, 103, 105, 107, 109, 108, 108, 107, 107, 108, 111, + 111, 111, 107, 106, 107, 111, 112, 112, 108, 119, 101, 94, 94, 91, 96, 106, + 107, 106, 31, 61, 74, 74, 77, 80, 78, 75, 79, 85, 83, 82, 82, 85, + 85, 79, 76, 78, 81, 82, 82, 81, 78, 78, 82, 84, 88, 88, 89, 89, + 89, 89, 91, 89, 91, 89, 88, 88, 89, 91, 93, 95, 94, 97, 91, 89, + 98, 99, 97, 103, 98, 98, 100, 101, 102, 103, 104, 104, 108, 107, 105, 104, + 104, 107, 109, 111, 105, 106, 107, 109, 111, 111, 110, 109, 110, 113, 111, 108, + 108, 109, 109, 106, 106, 108, 111, 111, 109, 108, 110, 112, 109, 109, 111, 111, + 111, 111, 111, 113, 116, 118, 116, 115, 114, 112, 111, 108, 105, 101, 104, 106, + 107, 102, 101, 104, 113, 109, 110, 118, 115, 107, 118, 139, 151, 160, 165, 163, + 164, 167, 163, 156, 161, 164, 165, 161, 159, 161, 172, 181, 183, 178, 178, 181, + 182, 178, 178, 183, 186, 183, 183, 186, 190, 188, 181, 174, 177, 175, 173, 173, + 174, 174, 172, 168, 152, 147, 140, 133, 127, 121, 111, 104, 112, 110, 99, 95, + 98, 91, 86, 91, 95, 101, 109, 109, 105, 101, 102, 104, 107, 106, 106, 106, + 107, 109, 113, 116, 115, 107, 98, 96, 101, 102, 98, 93, 98, 87, 93, 104, + 99, 91, 83, 72, 89, 59, 83, 74, 76, 78, 80, 81, 81, 78, 72, 75, + 77, 79, 81, 83, 81, 79, 78, 79, 77, 79, 80, 80, 80, 82, 82, 79, + 84, 90, 91, 91, 91, 94, 95, 89, 87, 88, 89, 89, 90, 91, 91, 91, + 89, 87, 86, 88, 91, 95, 98, 92, 96, 100, 102, 101, 100, 100, 101, 100, + 101, 101, 102, 104, 105, 106, 106, 106, 107, 108, 108, 108, 110, 112, 115, 115, + 111, 107, 106, 110, 112, 110, 105, 111, 102, 106, 110, 102, 100, 109, 111, 117, + 115, 111, 109, 110, 111, 113, 114, 111, 114, 115, 113, 112, 109, 107, 103, 104, + 100, 103, 106, 108, 105, 104, 107, 105, 106, 107, 112, 119, 122, 121, 121, 141, + 139, 139, 142, 148, 153, 152, 152, 154, 154, 154, 144, 142, 159, 165, 149, 164, + 172, 173, 170, 173, 171, 170, 179, 180, 179, 177, 175, 173, 172, 172, 172, 172, + 170, 168, 166, 164, 162, 160, 156, 149, 140, 128, 118, 113, 112, 116, 117, 113, + 109, 106, 99, 94, 92, 97, 103, 101, 99, 99, 103, 107, 107, 103, 97, 103, + 104, 109, 112, 112, 105, 95, 86, 81, 86, 86, 87, 91, 96, 93, 87, 91, + 89, 91, 97, 103, 103, 96, 88, 81, 68, 63, 83, 81, 81, 80, 83, 84, + 85, 82, 92, 88, 85, 81, 79, 78, 80, 81, 78, 78, 79, 80, 82, 83, + 84, 84, 83, 83, 86, 88, 90, 93, 92, 89, 89, 87, 88, 89, 90, 90, + 91, 91, 89, 89, 89, 90, 91, 93, 95, 96, 92, 95, 99, 100, 101, 101, + 102, 103, 104, 104, 104, 104, 104, 105, 105, 105, 108, 109, 110, 110, 109, 110, + 110, 112, 113, 110, 106, 108, 109, 111, 109, 106, 112, 101, 104, 111, 107, 106, + 109, 105, 111, 110, 107, 106, 108, 110, 112, 114, 115, 117, 116, 115, 112, 111, + 110, 110, 108, 106, 108, 110, 110, 105, 104, 106, 107, 108, 111, 118, 123, 125, + 127, 128, 130, 123, 115, 113, 118, 128, 134, 137, 146, 142, 138, 131, 129, 147, + 158, 150, 158, 168, 168, 167, 172, 167, 163, 168, 164, 164, 166, 165, 167, 166, + 168, 166, 163, 157, 156, 156, 164, 164, 163, 157, 133, 128, 121, 114, 112, 112, + 112, 111, 110, 107, 105, 100, 96, 91, 92, 96, 100, 100, 101, 105, 110, 111, + 110, 105, 111, 109, 109, 108, 109, 110, 112, 113, 99, 99, 92, 87, 89, 96, + 99, 97, 109, 106, 110, 111, 112, 101, 87, 74, 90, 92, 90, 86, 84, 85, + 86, 88, 88, 88, 87, 94, 91, 87, 82, 79, 78, 79, 79, 79, 77, 80, + 81, 82, 83, 84, 84, 86, 83, 81, 84, 88, 92, 89, 83, 89, 88, 88, + 89, 90, 91, 91, 91, 88, 90, 92, 94, 95, 95, 95, 94, 93, 95, 98, + 99, 99, 100, 103, 105, 105, 105, 104, 103, 102, 102, 103, 103, 107, 109, 111, + 110, 109, 107, 108, 109, 112, 109, 107, 108, 111, 112, 110, 105, 112, 100, 105, + 113, 112, 112, 111, 101, 106, 105, 105, 105, 106, 108, 111, 113, 117, 116, 114, + 112, 111, 112, 112, 112, 115, 110, 111, 114, 113, 107, 106, 108, 103, 106, 112, + 116, 119, 122, 126, 129, 133, 131, 128, 128, 130, 129, 126, 122, 132, 123, 121, + 121, 118, 126, 135, 133, 132, 143, 145, 150, 163, 160, 155, 157, 153, 154, 158, + 157, 160, 158, 159, 156, 156, 146, 142, 141, 148, 147, 142, 132, 119, 118, 117, + 116, 115, 114, 110, 108, 106, 107, 106, 104, 101, 98, 96, 96, 96, 95, 96, + 100, 106, 109, 110, 108, 113, 112, 112, 110, 112, 115, 122, 126, 130, 130, 122, + 115, 115, 120, 120, 119, 116, 106, 99, 92, 91, 88, 84, 79, 92, 103, 99, + 78, 77, 81, 86, 90, 87, 83, 82, 82, 82, 83, 85, 84, 81, 79, 76, + 76, 77, 78, 79, 80, 81, 82, 82, 87, 86, 85, 86, 88, 88, 86, 83, + 90, 88, 89, 89, 90, 91, 92, 92, 90, 91, 93, 95, 96, 96, 96, 95, + 96, 97, 98, 98, 98, 99, 101, 104, 101, 101, 99, 99, 99, 99, 100, 101, + 106, 108, 111, 111, 110, 108, 108, 108, 111, 109, 108, 109, 111, 112, 110, 108, + 112, 102, 107, 112, 110, 110, 111, 101, 104, 103, 104, 104, 104, 106, 109, 110, + 113, 113, 113, 113, 112, 112, 111, 110, 116, 113, 113, 114, 116, 112, 112, 112, + 102, 106, 113, 116, 116, 117, 123, 128, 127, 128, 131, 134, 134, 128, 120, 114, + 124, 114, 118, 126, 121, 116, 117, 115, 120, 127, 128, 133, 149, 148, 141, 142, + 144, 145, 147, 145, 145, 141, 138, 135, 142, 135, 130, 127, 128, 125, 120, 114, + 116, 116, 118, 118, 117, 114, 111, 109, 103, 102, 103, 103, 104, 103, 103, 103, + 97, 95, 96, 98, 103, 106, 109, 109, 112, 116, 122, 122, 121, 119, 121, 122, + 124, 129, 130, 127, 125, 122, 118, 110, 109, 99, 87, 78, 77, 78, 81, 80, + 78, 88, 90, 79, 74, 75, 80, 83, 81, 81, 84, 81, 83, 86, 88, 89, + 88, 88, 83, 79, 79, 80, 81, 81, 81, 82, 82, 85, 88, 90, 89, 86, + 85, 85, 87, 88, 88, 89, 90, 91, 91, 92, 92, 94, 93, 93, 93, 94, + 95, 96, 97, 98, 99, 100, 99, 97, 97, 99, 101, 99, 98, 97, 97, 98, + 100, 102, 104, 101, 104, 109, 110, 109, 108, 108, 109, 110, 110, 112, 113, 114, + 114, 112, 108, 109, 105, 110, 110, 103, 104, 110, 104, 107, 106, 105, 104, 105, + 106, 107, 107, 110, 110, 114, 116, 116, 114, 111, 109, 115, 112, 113, 115, 117, + 115, 116, 118, 113, 114, 119, 121, 120, 120, 124, 129, 123, 121, 119, 119, 120, + 122, 125, 127, 143, 132, 138, 147, 141, 133, 134, 134, 128, 131, 126, 124, 133, + 130, 121, 123, 129, 130, 132, 129, 128, 122, 120, 116, 121, 120, 123, 121, 123, + 120, 124, 123, 118, 116, 117, 116, 113, 110, 107, 107, 100, 99, 100, 99, 102, + 105, 105, 106, 104, 102, 100, 100, 104, 107, 111, 111, 113, 118, 126, 129, 127, + 122, 121, 121, 113, 120, 125, 125, 123, 119, 113, 106, 110, 107, 104, 99, 95, + 84, 76, 70, 73, 75, 83, 92, 82, 77, 80, 84, 84, 89, 95, 95, 92, + 90, 89, 89, 91, 95, 95, 86, 84, 84, 85, 84, 84, 85, 85, 84, 89, + 92, 91, 87, 82, 86, 88, 89, 89, 89, 90, 91, 92, 92, 93, 94, 94, + 93, 92, 93, 94, 96, 97, 97, 99, 100, 100, 98, 98, 99, 100, 101, 100, + 99, 99, 100, 103, 106, 108, 100, 102, 107, 107, 107, 107, 108, 109, 108, 109, + 112, 113, 113, 112, 111, 108, 108, 105, 111, 108, 99, 101, 109, 102, 106, 106, + 105, 105, 106, 106, 106, 106, 107, 110, 114, 117, 119, 116, 111, 108, 112, 109, + 110, 114, 115, 117, 119, 121, 119, 116, 119, 120, 120, 119, 120, 123, 125, 125, + 124, 124, 123, 120, 118, 118, 113, 103, 106, 111, 104, 103, 112, 116, 121, 124, + 119, 115, 121, 118, 115, 119, 123, 123, 124, 123, 122, 120, 118, 117, 111, 115, + 120, 120, 118, 119, 124, 126, 117, 114, 111, 108, 104, 102, 102, 101, 101, 98, + 96, 98, 100, 102, 101, 100, 104, 103, 101, 100, 102, 103, 107, 108, 110, 111, + 117, 118, 118, 118, 119, 121, 121, 126, 128, 123, 122, 123, 124, 120, 120, 116, + 113, 107, 102, 95, 87, 83, 89, 79, 76, 89, 78, 76, 81, 85, 81, 84, + 92, 97, 94, 91, 90, 90, 92, 97, 97, 91, 89, 87, 87, 86, 86, 85, + 85, 83, 85, 86, 86, 86, 83, 85, 85, 89, 89, 90, 90, 91, 92, 93, + 93, 92, 92, 93, 94, 94, 94, 94, 93, 93, 96, 99, 101, 100, 100, 101, + 102, 104, 103, 101, 99, 100, 102, 105, 107, 102, 103, 104, 103, 103, 103, 105, + 107, 104, 106, 111, 112, 111, 109, 108, 105, 106, 103, 108, 107, 102, 106, 107, + 95, 103, 103, 103, 104, 105, 106, 107, 106, 105, 105, 108, 110, 112, 110, 109, + 107, 111, 107, 110, 113, 115, 116, 119, 121, 115, 112, 112, 112, 115, 115, 115, + 114, 112, 116, 121, 120, 115, 105, 96, 91, 115, 111, 114, 115, 108, 110, 121, + 122, 110, 117, 113, 111, 118, 117, 115, 123, 121, 121, 121, 121, 121, 121, 121, + 121, 115, 117, 119, 118, 117, 117, 119, 118, 113, 109, 106, 102, 99, 96, 96, + 96, 97, 97, 96, 100, 103, 104, 103, 98, 100, 98, 100, 100, 101, 101, 105, + 106, 108, 107, 111, 112, 116, 118, 120, 120, 116, 121, 119, 114, 112, 114, 118, + 116, 122, 115, 108, 100, 97, 96, 96, 98, 97, 95, 86, 63, 59, 63, 76, + 77, 69, 64, 67, 81, 83, 86, 90, 93, 93, 93, 89, 91, 89, 86, 85, + 85, 84, 83, 83, 87, 84, 83, 85, 87, 88, 85, 82, 91, 91, 92, 93, + 93, 94, 95, 95, 91, 91, 96, 96, 97, 95, 92, 90, 89, 93, 98, 101, + 102, 104, 105, 106, 107, 105, 102, 100, 100, 99, 102, 103, 105, 105, 104, 101, + 101, 100, 102, 104, 101, 104, 107, 108, 109, 105, 106, 103, 105, 100, 106, 108, + 106, 110, 105, 87, 99, 99, 100, 102, 105, 106, 108, 107, 102, 101, 102, 103, + 105, 104, 105, 105, 111, 107, 109, 112, 115, 114, 119, 119, 116, 111, 108, 110, + 113, 115, 114, 112, 116, 116, 114, 111, 108, 109, 110, 115, 111, 111, 121, 119, + 109, 111, 116, 110, 116, 124, 122, 119, 122, 118, 115, 123, 116, 115, 115, 114, + 114, 114, 114, 115, 118, 114, 115, 116, 119, 122, 121, 119, 111, 109, 106, 103, + 102, 99, 98, 97, 95, 96, 100, 105, 110, 111, 108, 102, 103, 103, 104, 104, + 105, 105, 107, 108, 111, 111, 114, 120, 126, 125, 121, 116, 112, 118, 119, 115, + 113, 112, 114, 113, 110, 111, 109, 107, 102, 95, 86, 83, 82, 99, 103, 67, + 62, 67, 70, 70, 72, 60, 33, 77, 85, 89, 85, 83, 83, 85, 80, 74, + 82, 82, 81, 86, 83, 82, 91, 83, 90, 97, 97, 93, 89, 89, 92, 96, + 92, 92, 97, 95, 91, 92, 96, 96, 98, 102, 102, 101, 100, 99, 97, 96, + 95, 95, 96, 99, 100, 98, 97, 104, 105, 104, 106, 107, 108, 109, 107, 101, + 100, 98, 97, 97, 98, 99, 100, 100, 102, 101, 97, 99, 102, 106, 104, 103, + 108, 114, 111, 105, 104, 109, 115, 107, 108, 107, 105, 104, 104, 106, 108, 103, + 105, 106, 104, 106, 107, 105, 100, 105, 108, 113, 113, 111, 112, 118, 121, 119, + 116, 115, 118, 120, 119, 115, 112, 108, 111, 115, 117, 119, 119, 117, 116, 117, + 118, 120, 118, 118, 119, 119, 121, 121, 121, 119, 118, 116, 115, 115, 114, 118, + 120, 120, 119, 117, 115, 111, 110, 112, 109, 109, 110, 113, 116, 117, 117, 113, + 111, 107, 104, 103, 103, 104, 105, 105, 104, 102, 102, 101, 101, 103, 103, 108, + 111, 107, 100, 97, 103, 105, 102, 107, 106, 105, 107, 113, 117, 117, 112, 111, + 110, 110, 107, 104, 102, 105, 108, 100, 101, 102, 101, 97, 90, 82, 75, 77, + 80, 88, 56, 53, 61, 64, 63, 59, 49, 28, 77, 86, 92, 88, 81, 81, + 84, 81, 83, 85, 82, 82, 93, 92, 88, 92, 97, 97, 97, 95, 93, 91, + 90, 90, 99, 96, 96, 100, 98, 94, 94, 98, 92, 95, 98, 98, 96, 95, + 95, 94, 92, 91, 92, 96, 99, 100, 101, 100, 102, 103, 102, 103, 102, 103, + 103, 103, 106, 103, 101, 100, 99, 100, 100, 101, 98, 101, 102, 99, 100, 103, + 103, 102, 105, 108, 110, 108, 104, 104, 107, 111, 105, 106, 106, 104, 103, 103, + 106, 106, 102, 107, 109, 105, 104, 106, 110, 110, 113, 112, 113, 113, 114, 116, + 118, 116, 116, 113, 113, 114, 117, 117, 115, 112, 112, 113, 116, 117, 118, 118, + 117, 118, 121, 124, 125, 123, 122, 118, 117, 115, 117, 117, 117, 117, 117, 116, + 113, 115, 115, 117, 117, 116, 116, 114, 114, 113, 122, 119, 116, 113, 114, 114, + 113, 112, 114, 114, 114, 113, 111, 109, 106, 105, 105, 104, 103, 102, 101, 102, + 103, 104, 104, 107, 107, 102, 102, 106, 104, 100, 101, 102, 103, 105, 107, 111, + 113, 112, 112, 112, 113, 111, 108, 106, 108, 110, 114, 109, 106, 106, 107, 104, + 96, 89, 85, 83, 81, 59, 55, 68, 77, 72, 65, 61, 56, 72, 83, 92, + 92, 88, 91, 97, 96, 92, 91, 87, 89, 102, 103, 98, 100, 93, 90, 87, + 89, 95, 101, 104, 104, 104, 102, 102, 104, 102, 99, 99, 101, 92, 94, 95, + 95, 93, 93, 94, 94, 89, 88, 90, 94, 98, 100, 102, 103, 105, 105, 103, + 104, 102, 103, 102, 102, 102, 101, 100, 99, 99, 99, 99, 99, 98, 103, 105, + 104, 104, 106, 104, 100, 108, 108, 107, 107, 106, 107, 107, 108, 105, 106, 106, + 105, 104, 105, 108, 109, 103, 108, 112, 106, 104, 106, 114, 118, 120, 115, 113, + 114, 117, 118, 118, 112, 118, 115, 115, 117, 120, 120, 119, 118, 117, 117, 117, + 117, 117, 117, 116, 118, 120, 122, 124, 125, 124, 120, 116, 112, 115, 115, 117, + 118, 117, 116, 115, 116, 115, 114, 114, 114, 115, 117, 119, 120, 126, 121, 118, + 116, 115, 112, 110, 110, 112, 114, 116, 117, 115, 111, 106, 103, 103, 102, 102, + 102, 102, 103, 104, 105, 98, 103, 107, 105, 106, 105, 103, 99, 103, 104, 108, + 109, 111, 114, 118, 120, 110, 111, 112, 111, 109, 107, 107, 107, 117, 109, 102, + 102, 107, 107, 100, 90, 89, 84, 80, 72, 66, 79, 87, 78, 67, 73, 76, + 85, 89, 89, 82, 73, 69, 65, 60, 55, 58, 56, 57, 69, 71, 67, 71, + 65, 65, 66, 71, 78, 84, 91, 95, 102, 103, 102, 103, 101, 99, 99, 100, + 96, 97, 98, 97, 95, 95, 97, 99, 93, 92, 93, 96, 99, 103, 104, 103, + 108, 108, 108, 106, 104, 104, 102, 102, 101, 99, 101, 99, 101, 100, 102, 101, + 103, 105, 109, 105, 107, 108, 109, 105, 113, 110, 108, 108, 110, 111, 110, 108, + 106, 107, 107, 106, 106, 107, 110, 113, 105, 108, 110, 107, 106, 109, 115, 115, + 119, 116, 115, 115, 116, 117, 118, 114, 118, 118, 118, 119, 120, 120, 120, 120, + 120, 119, 118, 117, 117, 118, 119, 120, 117, 118, 121, 121, 123, 120, 118, 115, + 116, 117, 119, 118, 118, 117, 115, 114, 116, 116, 115, 115, 116, 118, 121, 121, + 117, 115, 113, 111, 112, 112, 111, 109, 107, 110, 113, 114, 113, 110, 107, 105, + 104, 104, 103, 103, 103, 103, 103, 103, 99, 99, 102, 104, 102, 102, 101, 101, + 101, 106, 111, 112, 113, 115, 121, 125, 122, 123, 124, 124, 122, 120, 118, 117, + 122, 117, 112, 112, 113, 112, 107, 100, 98, 95, 94, 81, 71, 79, 81, 68, + 57, 66, 72, 65, 70, 73, 79, 86, 96, 98, 92, 77, 85, 86, 84, 90, + 89, 86, 94, 87, 91, 93, 94, 92, 92, 97, 103, 96, 98, 98, 97, 95, + 96, 96, 95, 98, 99, 99, 99, 96, 97, 99, 101, 99, 98, 97, 99, 103, + 106, 105, 106, 109, 107, 106, 104, 102, 102, 100, 100, 102, 103, 105, 106, 109, + 109, 111, 110, 109, 110, 111, 106, 108, 111, 113, 111, 116, 112, 109, 109, 112, + 113, 111, 108, 105, 106, 107, 106, 106, 107, 110, 112, 107, 109, 109, 108, 111, + 114, 112, 105, 112, 114, 115, 114, 114, 114, 116, 119, 116, 116, 116, 115, 114, + 114, 114, 115, 120, 119, 118, 118, 118, 120, 123, 124, 120, 118, 118, 116, 119, + 120, 119, 117, 116, 114, 115, 115, 114, 110, 108, 109, 116, 115, 113, 113, 113, + 113, 116, 118, 112, 109, 109, 110, 111, 110, 109, 109, 107, 107, 107, 108, 108, + 109, 109, 109, 106, 105, 105, 104, 102, 101, 99, 99, 101, 98, 97, 98, 98, + 97, 100, 101, 100, 105, 112, 117, 116, 118, 124, 127, 128, 128, 128, 128, 127, + 125, 122, 120, 120, 121, 123, 121, 117, 113, 109, 107, 101, 99, 102, 75, 66, + 73, 76, 67, 67, 78, 80, 104, 106, 103, 101, 102, 102, 99, 89, 90, 99, + 100, 96, 98, 92, 90, 97, 85, 89, 95, 92, 86, 82, 84, 90, 96, 101, + 101, 99, 100, 101, 101, 98, 98, 98, 99, 99, 98, 96, 98, 99, 102, 102, + 101, 104, 107, 108, 109, 108, 111, 111, 109, 107, 107, 105, 104, 103, 102, 103, + 107, 107, 111, 110, 113, 111, 113, 113, 113, 107, 109, 112, 116, 113, 114, 111, + 108, 108, 110, 111, 109, 106, 103, 104, 104, 103, 103, 104, 106, 109, 110, 107, + 106, 107, 112, 116, 111, 101, 109, 113, 116, 115, 114, 113, 118, 122, 117, 118, + 118, 116, 113, 113, 114, 115, 118, 118, 117, 117, 118, 120, 122, 123, 126, 122, + 117, 116, 118, 117, 116, 113, 111, 111, 110, 108, 105, 104, 103, 105, 113, 112, + 111, 110, 108, 109, 110, 111, 112, 111, 111, 111, 110, 110, 107, 105, 109, 109, + 108, 107, 107, 109, 112, 114, 108, 108, 108, 106, 104, 102, 100, 98, 103, 98, + 95, 96, 95, 95, 100, 106, 106, 113, 121, 127, 129, 130, 133, 135, 132, 133, + 131, 130, 130, 129, 126, 124, 123, 128, 133, 131, 125, 120, 119, 120, 116, 114, + 115, 67, 63, 70, 72, 72, 82, 91, 87, 78, 87, 94, 92, 93, 95, 99, + 99, 95, 100, 99, 95, 101, 97, 93, 97, 95, 96, 99, 97, 95, 94, 94, + 97, 99, 105, 106, 103, 104, 107, 108, 102, 97, 99, 102, 101, 99, 98, 98, + 99, 102, 103, 102, 106, 109, 112, 114, 113, 115, 113, 111, 110, 110, 108, 107, + 108, 103, 104, 107, 107, 110, 108, 109, 107, 111, 112, 114, 109, 112, 113, 116, + 112, 114, 112, 110, 109, 109, 109, 108, 108, 106, 106, 106, 105, 103, 104, 106, + 109, 108, 109, 108, 108, 112, 116, 113, 107, 113, 113, 115, 115, 115, 116, 118, + 119, 117, 118, 118, 117, 114, 114, 117, 119, 117, 116, 116, 116, 116, 116, 117, + 117, 125, 121, 117, 117, 119, 117, 113, 108, 110, 109, 107, 105, 104, 105, 106, + 107, 110, 110, 109, 109, 109, 110, 108, 109, 112, 111, 109, 109, 110, 109, 106, + 104, 110, 111, 108, 106, 106, 107, 109, 110, 109, 109, 109, 108, 107, 105, 102, + 101, 103, 95, 93, 96, 98, 97, 102, 111, 110, 117, 124, 133, 139, 140, 140, + 139, 146, 145, 142, 141, 141, 141, 139, 136, 137, 138, 140, 140, 138, 137, 138, + 139, 139, 140, 140, 64, 61, 67, 67, 67, 79, 82, 66, 68, 82, 93, 91, + 84, 86, 92, 97, 94, 96, 91, 93, 105, 103, 98, 99, 100, 96, 93, 90, + 91, 91, 87, 87, 94, 101, 103, 98, 101, 105, 106, 100, 100, 103, 106, 105, + 104, 103, 102, 102, 101, 102, 103, 107, 111, 116, 116, 115, 111, 111, 109, 108, + 106, 105, 104, 105, 108, 110, 111, 112, 112, 110, 109, 108, 107, 112, 114, 112, + 113, 115, 113, 109, 117, 115, 114, 112, 111, 110, 110, 111, 110, 111, 110, 108, + 107, 107, 109, 111, 107, 109, 110, 108, 109, 114, 117, 116, 119, 115, 113, 114, + 118, 120, 119, 116, 110, 112, 113, 112, 110, 111, 114, 118, 116, 116, 115, 114, + 113, 112, 112, 111, 119, 117, 116, 119, 121, 121, 115, 109, 111, 110, 107, 105, + 106, 108, 111, 113, 110, 111, 111, 112, 113, 114, 112, 112, 108, 107, 106, 107, + 109, 109, 106, 105, 111, 110, 108, 105, 104, 103, 103, 103, 107, 108, 109, 109, + 109, 107, 105, 104, 101, 94, 94, 99, 102, 103, 107, 115, 108, 112, 121, 131, + 140, 141, 137, 134, 135, 135, 130, 128, 129, 130, 128, 126, 124, 121, 119, 120, + 124, 128, 129, 129, 123, 128, 132, 62, 62, 69, 79, 86, 90, 89, 86, 65, + 93, 104, 90, 79, 88, 90, 84, 95, 94, 96, 97, 98, 96, 96, 94, 97, + 100, 99, 92, 90, 92, 91, 88, 94, 98, 100, 98, 97, 95, 99, 100, 98, + 101, 104, 103, 103, 103, 104, 105, 104, 106, 105, 108, 109, 113, 115, 117, 114, + 117, 114, 105, 101, 105, 107, 107, 108, 108, 107, 111, 117, 119, 118, 115, 121, + 115, 114, 119, 121, 117, 116, 118, 114, 113, 111, 110, 109, 107, 105, 103, 112, + 112, 112, 109, 107, 108, 113, 116, 113, 113, 114, 114, 114, 112, 109, 108, 111, + 112, 113, 114, 114, 113, 111, 110, 111, 115, 118, 117, 112, 110, 113, 117, 114, + 115, 116, 117, 117, 116, 114, 113, 118, 116, 117, 118, 117, 116, 117, 115, 114, + 113, 112, 112, 113, 116, 119, 120, 115, 114, 113, 116, 117, 118, 115, 112, 114, + 109, 104, 105, 106, 108, 106, 102, 108, 109, 108, 108, 110, 111, 111, 111, 111, + 112, 114, 114, 112, 107, 102, 96, 100, 93, 97, 100, 95, 96, 108, 113, 120, + 120, 117, 107, 106, 118, 129, 137, 139, 140, 138, 136, 132, 129, 132, 137, 129, + 129, 129, 129, 128, 128, 128, 128, 128, 126, 125, 67, 67, 70, 72, 76, 73, + 69, 63, 72, 89, 97, 89, 87, 93, 95, 87, 90, 91, 91, 93, 94, 95, + 95, 96, 84, 89, 89, 87, 89, 94, 96, 92, 90, 93, 93, 93, 94, 95, + 96, 98, 97, 98, 99, 100, 100, 102, 106, 108, 108, 107, 107, 107, 108, 111, + 113, 114, 116, 118, 117, 107, 105, 103, 103, 100, 107, 111, 113, 114, 115, 116, + 117, 118, 120, 115, 114, 118, 120, 117, 116, 116, 113, 112, 110, 109, 108, 108, + 107, 107, 108, 110, 111, 110, 109, 110, 113, 117, 110, 110, 111, 111, 110, 108, + 105, 104, 112, 112, 113, 113, 113, 112, 110, 109, 108, 113, 118, 118, 114, 111, + 111, 113, 108, 109, 110, 112, 112, 113, 113, 113, 115, 113, 115, 116, 116, 118, + 117, 116, 113, 112, 112, 111, 112, 114, 116, 118, 118, 116, 115, 115, 117, 116, + 115, 111, 109, 105, 103, 106, 111, 110, 109, 105, 109, 111, 113, 109, 106, 104, + 107, 109, 109, 110, 113, 114, 115, 112, 111, 108, 113, 105, 107, 108, 101, 100, + 110, 113, 103, 112, 125, 131, 124, 115, 120, 134, 139, 136, 135, 139, 144, 142, + 135, 128, 130, 130, 129, 128, 127, 126, 125, 125, 129, 129, 132, 80, 81, 84, + 86, 89, 87, 85, 83, 88, 89, 90, 89, 93, 96, 94, 87, 93, 93, 94, + 96, 96, 96, 96, 96, 89, 92, 94, 93, 93, 93, 94, 90, 94, 93, 92, + 93, 94, 96, 97, 97, 101, 102, 103, 103, 102, 105, 110, 114, 113, 113, 112, + 113, 113, 116, 117, 115, 115, 117, 118, 111, 109, 105, 104, 101, 105, 112, 115, + 114, 111, 111, 114, 118, 114, 110, 108, 112, 113, 111, 110, 111, 113, 112, 109, + 107, 105, 104, 105, 105, 105, 107, 110, 110, 109, 108, 108, 109, 107, 107, 108, + 109, 108, 108, 107, 107, 112, 112, 111, 111, 110, 109, 108, 109, 109, 114, 120, + 121, 118, 115, 113, 114, 113, 113, 113, 113, 113, 114, 115, 116, 113, 113, 115, + 116, 116, 118, 117, 117, 119, 118, 118, 117, 117, 118, 120, 121, 125, 121, 121, + 119, 119, 119, 119, 116, 117, 114, 113, 115, 117, 114, 111, 106, 112, 116, 120, + 113, 108, 103, 108, 111, 107, 106, 110, 109, 112, 110, 112, 110, 112, 103, 105, + 106, 98, 98, 106, 107, 115, 111, 117, 133, 131, 119, 124, 144, 153, 151, 145, + 142, 144, 144, 141, 137, 141, 140, 139, 138, 136, 135, 133, 133, 125, 127, 131, + 79, 79, 83, 87, 92, 94, 95, 94, 100, 95, 90, 94, 96, 94, 90, 89, + 95, 94, 94, 94, 94, 93, 92, 93, 95, 96, 97, 96, 95, 95, 93, 90, + 99, 96, 93, 94, 95, 97, 96, 94, 108, 110, 112, 112, 111, 112, 115, 118, + 115, 115, 115, 117, 118, 118, 119, 119, 115, 116, 117, 114, 111, 110, 109, 109, + 108, 112, 113, 112, 110, 110, 112, 115, 114, 111, 110, 111, 112, 112, 110, 110, + 113, 112, 109, 105, 101, 100, 100, 101, 103, 105, 108, 109, 107, 104, 101, 100, + 103, 104, 106, 108, 108, 110, 112, 112, 110, 110, 109, 109, 110, 110, 110, 110, + 109, 113, 117, 118, 116, 114, 114, 114, 119, 118, 116, 115, 114, 115, 116, 117, + 114, 115, 115, 116, 116, 115, 115, 117, 122, 123, 122, 121, 120, 122, 123, 121, + 124, 121, 121, 118, 118, 117, 120, 119, 118, 116, 115, 114, 117, 115, 115, 112, + 119, 122, 123, 119, 115, 113, 114, 117, 113, 112, 111, 110, 109, 109, 109, 107, + 114, 105, 108, 113, 107, 109, 117, 118, 126, 107, 101, 114, 128, 132, 136, 142, + 143, 150, 154, 146, 143, 141, 146, 145, 149, 146, 148, 145, 146, 143, 144, 144, + 144, 148, 148, 85, 84, 86, 87, 88, 89, 90, 90, 101, 96, 94, 98, 95, + 91, 89, 94, 87, 87, 88, 88, 90, 90, 89, 91, 93, 93, 97, 100, 100, + 101, 100, 100, 101, 97, 92, 94, 98, 101, 98, 96, 110, 113, 115, 117, 116, + 115, 114, 114, 110, 111, 112, 116, 117, 118, 119, 117, 118, 115, 114, 111, 108, + 107, 108, 112, 111, 108, 105, 106, 108, 110, 109, 108, 115, 114, 113, 112, 113, + 114, 113, 110, 112, 112, 112, 109, 105, 104, 106, 108, 103, 105, 108, 110, 111, + 109, 106, 103, 107, 108, 106, 108, 109, 111, 110, 111, 107, 107, 106, 108, 107, + 109, 110, 113, 109, 111, 111, 110, 110, 111, 112, 114, 115, 114, 113, 112, 112, + 114, 115, 116, 119, 118, 117, 117, 116, 114, 114, 115, 118, 119, 118, 117, 116, + 118, 118, 118, 116, 114, 115, 113, 113, 113, 118, 118, 112, 108, 107, 107, 111, + 115, 119, 120, 121, 120, 117, 117, 120, 121, 119, 117, 119, 118, 116, 114, 112, + 112, 111, 112, 111, 99, 103, 110, 106, 109, 114, 114, 106, 103, 99, 106, 122, + 134, 135, 128, 121, 131, 142, 143, 147, 148, 147, 138, 145, 143, 145, 143, 145, + 143, 145, 146, 151, 153, 152, 89, 88, 92, 91, 93, 92, 95, 96, 94, 95, + 96, 98, 95, 93, 94, 99, 83, 84, 86, 88, 92, 95, 95, 98, 101, 100, + 99, 104, 106, 103, 105, 106, 102, 100, 100, 100, 106, 107, 109, 107, 113, 116, + 121, 122, 124, 120, 119, 116, 114, 113, 117, 119, 120, 121, 122, 122, 125, 119, + 114, 110, 105, 100, 101, 106, 111, 107, 103, 103, 108, 110, 109, 106, 111, 111, + 110, 107, 108, 110, 109, 104, 108, 111, 114, 113, 111, 110, 113, 116, 104, 104, + 105, 109, 112, 114, 113, 112, 112, 111, 108, 107, 106, 106, 104, 105, 107, 107, + 105, 107, 106, 109, 111, 114, 114, 114, 113, 112, 112, 115, 117, 119, 112, 112, + 113, 114, 115, 117, 119, 120, 120, 118, 118, 115, 113, 111, 112, 112, 115, 115, + 117, 116, 116, 116, 116, 115, 113, 113, 114, 115, 115, 114, 117, 119, 122, 118, + 113, 108, 107, 109, 112, 116, 117, 113, 109, 111, 117, 120, 117, 113, 113, 112, + 111, 111, 111, 111, 111, 112, 109, 96, 101, 106, 101, 101, 107, 104, 102, 109, + 110, 103, 104, 118, 133, 141, 142, 139, 130, 126, 137, 148, 147, 135, 141, 140, + 142, 141, 143, 143, 144, 145, 141, 141, 143, 76, 76, 80, 80, 83, 84, 90, + 95, 91, 95, 98, 96, 94, 97, 98, 96, 89, 90, 91, 93, 95, 98, 100, + 102, 102, 98, 98, 102, 102, 99, 102, 105, 106, 103, 104, 103, 104, 104, 106, + 106, 114, 116, 121, 122, 125, 123, 124, 123, 121, 121, 124, 126, 127, 127, 127, + 125, 126, 120, 117, 114, 108, 100, 99, 104, 107, 105, 103, 103, 104, 107, 108, + 109, 104, 106, 104, 100, 101, 104, 103, 99, 106, 111, 116, 116, 112, 110, 111, + 113, 108, 106, 104, 105, 109, 112, 112, 111, 113, 112, 109, 108, 107, 108, 107, + 108, 109, 109, 106, 106, 105, 107, 108, 112, 116, 116, 115, 115, 117, 119, 120, + 120, 115, 115, 116, 116, 117, 116, 116, 116, 118, 116, 116, 113, 111, 110, 112, + 112, 114, 114, 115, 115, 115, 116, 116, 115, 110, 113, 116, 116, 115, 112, 114, + 114, 123, 121, 117, 110, 105, 103, 103, 106, 111, 109, 106, 107, 111, 113, 112, + 110, 103, 104, 104, 105, 106, 106, 106, 106, 116, 103, 107, 112, 107, 107, 110, + 105, 108, 111, 109, 103, 96, 103, 124, 144, 149, 149, 140, 124, 127, 137, 143, + 137, 141, 139, 141, 139, 142, 140, 142, 142, 145, 143, 145, 83, 84, 85, 84, + 83, 82, 87, 91, 92, 96, 97, 94, 94, 97, 97, 90, 98, 100, 100, 101, + 102, 104, 105, 106, 93, 89, 91, 98, 102, 102, 107, 113, 112, 111, 112, 108, + 103, 101, 102, 103, 116, 117, 118, 120, 120, 122, 124, 125, 122, 122, 124, 125, + 125, 124, 124, 122, 127, 122, 122, 122, 119, 110, 107, 112, 107, 107, 108, 106, + 103, 104, 109, 114, 108, 110, 108, 104, 104, 108, 107, 102, 108, 113, 117, 116, + 109, 104, 102, 103, 113, 108, 103, 101, 102, 104, 104, 104, 111, 109, 109, 110, + 112, 114, 117, 117, 114, 112, 111, 109, 108, 109, 110, 112, 111, 113, 114, 116, + 118, 119, 117, 116, 120, 120, 119, 118, 115, 112, 108, 106, 117, 116, 114, 112, + 112, 112, 113, 113, 107, 108, 110, 111, 111, 113, 112, 111, 105, 106, 110, 110, + 107, 106, 106, 107, 105, 106, 107, 106, 103, 103, 104, 107, 109, 112, 112, 111, + 110, 110, 112, 113, 107, 108, 109, 109, 110, 109, 108, 106, 102, 91, 92, 98, + 95, 95, 99, 96, 102, 96, 100, 113, 111, 100, 99, 115, 106, 135, 153, 147, + 133, 131, 134, 136, 137, 137, 136, 136, 135, 135, 134, 136, 141, 139, 137, 95, + 89, 87, 90, 90, 85, 82, 85, 95, 89, 90, 96, 100, 93, 91, 94, 97, + 97, 112, 106, 111, 110, 95, 120, 115, 117, 117, 116, 113, 111, 112, 110, 122, + 116, 117, 124, 126, 122, 124, 129, 128, 116, 113, 121, 125, 124, 120, 119, 116, + 118, 121, 121, 119, 119, 125, 128, 132, 131, 127, 124, 123, 123, 123, 119, 111, + 109, 110, 110, 110, 110, 111, 111, 104, 103, 103, 107, 111, 112, 109, 105, 115, + 117, 116, 115, 115, 116, 116, 117, 109, 112, 114, 112, 108, 107, 112, 116, 119, + 114, 111, 108, 109, 110, 113, 117, 111, 112, 115, 119, 119, 119, 119, 118, 112, + 115, 117, 117, 117, 118, 121, 124, 121, 117, 114, 114, 116, 117, 114, 111, 114, + 111, 112, 115, 116, 112, 111, 114, 110, 109, 109, 110, 112, 114, 112, 110, 114, + 118, 118, 114, 115, 120, 121, 116, 120, 114, 111, 112, 111, 106, 106, 114, 112, + 115, 115, 115, 113, 111, 108, 107, 108, 106, 104, 103, 103, 104, 106, 107, 104, + 112, 96, 87, 101, 72, 99, 115, 112, 120, 122, 113, 110, 106, 92, 79, 86, + 104, 134, 165, 146, 141, 117, 138, 134, 131, 136, 145, 146, 138, 136, 140, 143, + 143, 143 }; + +/* Define image 'logo' of size 555x103x1x3 and type 'unsigned char' */ +const unsigned char data_logo[] = { + 76, 77, 75, 75, 75, 99, 102, 72, 63, 0, 84, 115, 114, 110, 115, 80, + 81, 108, 112, 69, 38, 87, 115, 118, 96, 116, 84, 88, 85, 107, 83, 72, + 65, 0, 111, 131, 127, 72, 131, 75, 73, 77, 104, 102, 33, 56, 111, 110, + 111, 114, 116, 112, 87, 80, 104, 100, 106, 24, 96, 79, 71, 71, 104, 108, + 83, 69, 65, 57, 63, 32, 100, 120, 76, 79, 79, 65, 107, 67, 84, 69, + 59, 32, 65, 112, 67, 68, 69, 111, 103, 71, 103, 59, 61, 4, 107, 111, + 80, 118, 136, 80, 65, 106, 71, 96, 37, 38, 115, 123, 118, 57, 48, 57, + 83, 57, 87, 51, 49, 12, 100, 106, 118, 111, 96, 100, 96, 68, 65, 55, + 46, 0, 103, 106, 97, 103, 72, 65, 63, 93, 127, 68, 65, 17, 92, 126, + 106, 65, 64, 96, 68, 61, 57, 55, 36, 67, 131, 110, 67, 106, 93, 63, + 65, 63, 95, 130, 53, 0, 100, 79, 103, 99, 75, 59, 64, 93, 97, 89, + 14, 104, 106, 65, 71, 67, 68, 103, 69, 55, 63, 99, 16, 97, 96, 72, + 100, 99, 88, 75, 67, 69, 55, 52, 46, 1, 52, 123, 84, 87, 57, 85, + 48, 93, 52, 49, 45, 17, 95, 100, 64, 103, 77, 57, 53, 49, 48, 48, + 38, 5, 89, 93, 102, 99, 55, 59, 68, 52, 89, 36, 8, 136, 111, 112, + 80, 136, 111, 106, 76, 85, 76, 79, 69, 38, 61, 108, 93, 68, 59, 65, + 92, 59, 89, 52, 28, 52, 128, 147, 127, 154, 100, 93, 96, 128, 85, 88, + 26, 53, 93, 99, 89, 52, 56, 52, 103, 49, 49, 76, 22, 73, 103, 124, + 89, 132, 56, 51, 45, 52, 42, 53, 46, 12, 88, 55, 59, 59, 87, 57, + 48, 51, 84, 40, 49, 12, 123, 96, 87, 91, 92, 63, 65, 99, 49, 44, + 40, 4, 53, 118, 89, 111, 44, 46, 42, 73, 40, 41, 18, 81, 91, 88, + 87, 83, 49, 56, 93, 93, 46, 41, 33, 1, 93, 63, 93, 92, 46, 57, + 40, 44, 41, 80, 42, 1, 123, 95, 134, 69, 53, 84, 45, 41, 37, 36, + 17, 61, 91, 49, 102, 85, 38, 85, 87, 32, 36, 36, 5, 97, 142, 114, + 83, 72, 76, 143, 108, 69, 71, 64, 57, 1, 73, 79, 79, 48, 41, 42, + 48, 45, 44, 45, 44, 8, 79, 83, 38, 102, 68, 77, 30, 33, 30, 28, + 26, 2, 87, 107, 88, 93, 111, 34, 83, 88, 41, 36, 30, 20, 0, 108, + 115, 99, 91, 88, 69, 64, 60, 56, 61, 1, 115, 89, 116, 71, 26, 76, + 33, 84, 30, 26, 5, 75, 106, 53, 73, 32, 71, 24, 65, 97, 55, 26, + 20, 10, 48, 89, 80, 89, 85, 46, 21, 22, 30, 32, 22, 5, 77, 75, + 28, 71, 38, 79, 25, 20, 18, 16, 0, 114, 107, 95, 21, 24, 83, 69, + 73, 102, 30, 20, 16, 1, 85, 21, 21, 14, 16, 95, 75, 40, 17, 16, + 10, 1, 38, 80, 48, 77, 93, 10, 17, 21, 9, 14, 6, 0, 71, 76, + 21, 16, 9, 10, 22, 71, 16, 13, 6, 0, 38, 96, 67, 42, 29, 96, + 30, 30, 33, 24, 57, 18, 12, 97, 38, 114, 30, 110, 104, 110, 75, 75, + 93, 99, 77, 60, 0, 88, 120, 108, 103, 119, 87, 80, 106, 112, 63, 34, + 88, 106, 115, 108, 92, 84, 85, 84, 104, 89, 75, 65, 0, 107, 122, 118, + 76, 118, 76, 72, 88, 96, 91, 45, 61, 106, 107, 108, 93, 92, 76, 79, + 95, 81, 89, 97, 37, 92, 85, 71, 72, 77, 108, 99, 83, 67, 57, 60, + 42, 100, 124, 80, 77, 89, 75, 107, 77, 89, 67, 52, 29, 67, 112, 69, + 68, 69, 106, 99, 75, 99, 57, 59, 1, 106, 107, 96, 112, 130, 87, 65, + 102, 75, 87, 30, 42, 97, 114, 68, 49, 55, 63, 69, 72, 59, 46, 44, + 17, 96, 102, 97, 131, 106, 92, 95, 95, 64, 57, 48, 0, 99, 102, 110, + 96, 72, 67, 71, 87, 107, 84, 65, 18, 87, 120, 103, 71, 68, 91, 95, + 64, 53, 57, 34, 67, 119, 92, 67, 79, 80, 84, 63, 64, 87, 115, 48, + 0, 99, 87, 88, 97, 76, 63, 69, 85, 95, 85, 20, 111, 102, 72, 76, + 60, 95, 93, 64, 64, 55, 84, 25, 91, 96, 88, 93, 72, 73, 73, 65, + 80, 53, 53, 41, 0, 65, 107, 73, 57, 72, 75, 52, 77, 51, 51, 46, + 24, 89, 103, 68, 92, 88, 65, 73, 71, 57, 46, 44, 5, 84, 89, 87, + 64, 57, 80, 59, 61, 79, 41, 12, 126, 110, 111, 91, 107, 110, 99, 83, + 95, 77, 87, 69, 36, 63, 110, 95, 59, 69, 87, 81, 56, 85, 61, 26, + 56, 123, 136, 120, 135, 99, 88, 97, 122, 85, 85, 32, 61, 93, 97, 77, + 49, 63, 55, 92, 51, 49, 65, 21, 69, 106, 115, 91, 112, 67, 56, 49, + 48, 44, 52, 48, 18, 68, 63, 65, 89, 85, 67, 48, 48, 69, 45, 48, + 12, 118, 102, 73, 83, 53, 53, 71, 92, 42, 45, 41, 5, 64, 103, 84, + 110, 41, 46, 48, 65, 40, 40, 17, 77, 87, 88, 83, 57, 84, 84, 87, + 65, 46, 49, 33, 1, 93, 67, 89, 81, 48, 52, 51, 36, 51, 67, 40, + 2, 114, 112, 100, 65, 38, 81, 45, 44, 36, 34, 17, 64, 83, 87, 95, + 57, 36, 83, 84, 32, 36, 34, 8, 91, 128, 108, 103, 68, 68, 110, 103, + 67, 81, 67, 61, 8, 69, 73, 68, 44, 40, 41, 37, 42, 40, 41, 41, + 12, 77, 81, 52, 83, 59, 76, 30, 32, 37, 28, 22, 4, 83, 83, 83, + 93, 76, 38, 75, 81, 51, 36, 28, 20, 0, 115, 119, 89, 83, 67, 65, + 65, 57, 56, 55, 0, 102, 104, 115, 57, 28, 68, 37, 81, 36, 25, 6, + 72, 108, 63, 65, 33, 63, 24, 25, 22, 22, 28, 21, 10, 48, 97, 61, + 79, 81, 42, 24, 24, 59, 37, 28, 5, 75, 61, 36, 44, 49, 72, 28, + 20, 20, 13, 1, 102, 91, 76, 40, 24, 85, 75, 55, 49, 40, 21, 14, + 1, 83, 41, 28, 17, 13, 25, 84, 73, 17, 25, 10, 0, 51, 77, 60, + 88, 51, 26, 17, 24, 8, 8, 6, 0, 75, 72, 18, 18, 12, 10, 12, + 69, 21, 34, 6, 0, 34, 87, 61, 48, 28, 79, 34, 28, 29, 21, 51, + 16, 12, 104, 51, 104, 41, 84, 97, 85, 75, 75, 88, 100, 77, 69, 8, + 91, 115, 103, 110, 110, 89, 80, 93, 108, 67, 32, 88, 111, 108, 112, 88, + 87, 79, 85, 100, 87, 76, 64, 0, 106, 110, 81, 106, 92, 76, 73, 79, + 102, 91, 42, 64, 110, 96, 77, 79, 96, 96, 95, 88, 88, 85, 103, 36, + 85, 84, 73, 69, 71, 87, 100, 95, 76, 57, 57, 42, 102, 126, 79, 81, + 77, 77, 85, 91, 81, 69, 65, 28, 73, 97, 73, 69, 87, 104, 80, 91, + 92, 56, 59, 2, 92, 106, 83, 81, 79, 72, 67, 100, 77, 81, 28, 42, + 104, 108, 65, 41, 63, 42, 48, 46, 46, 51, 44, 17, 91, 100, 99, 100, + 116, 100, 80, 91, 67, 57, 48, 0, 97, 111, 104, 88, 79, 65, 67, 68, + 65, 76, 65, 24, 79, 118, 99, 69, 64, 76, 97, 60, 59, 59, 33, 68, + 115, 103, 100, 85, 81, 83, 81, 67, 81, 102, 60, 1, 88, 88, 96, 87, + 84, 68, 72, 80, 89, 79, 21, 104, 102, 69, 68, 93, 68, 59, 71, 65, + 51, 79, 28, 87, 96, 80, 75, 83, 77, 72, 72, 67, 52, 52, 53, 9, + 51, 103, 72, 63, 75, 71, 57, 69, 51, 49, 46, 26, 85, 102, 68, 91, + 76, 76, 63, 67, 59, 51, 42, 4, 80, 88, 76, 64, 77, 52, 59, 48, + 71, 32, 13, 118, 107, 108, 100, 88, 76, 80, 91, 77, 83, 83, 68, 33, + 64, 104, 91, 64, 68, 104, 84, 63, 73, 67, 28, 80, 122, 122, 119, 126, + 108, 96, 103, 119, 89, 87, 37, 59, 93, 95, 76, 55, 63, 56, 87, 49, + 46, 59, 20, 69, 100, 107, 92, 108, 80, 53, 51, 45, 44, 51, 48, 20, + 83, 68, 63, 100, 61, 59, 51, 48, 68, 45, 52, 20, 106, 96, 72, 80, + 104, 106, 104, 87, 45, 46, 34, 9, 65, 96, 83, 76, 41, 45, 56, 41, + 40, 41, 22, 68, 85, 87, 81, 63, 59, 48, 61, 49, 45, 45, 32, 9, + 100, 73, 103, 53, 37, 49, 51, 34, 44, 57, 40, 2, 107, 89, 112, 91, + 63, 89, 49, 45, 41, 30, 21, 75, 69, 96, 73, 37, 44, 80, 87, 33, + 34, 36, 8, 83, 128, 110, 95, 81, 72, 76, 69, 69, 76, 68, 60, 5, + 67, 79, 53, 37, 36, 34, 34, 37, 44, 37, 33, 10, 73, 84, 59, 71, + 52, 68, 32, 33, 34, 30, 26, 0, 80, 81, 87, 103, 49, 37, 63, 84, + 45, 37, 29, 20, 0, 95, 120, 89, 80, 65, 69, 65, 69, 53, 55, 0, + 96, 91, 60, 33, 59, 56, 60, 76, 30, 26, 8, 64, 99, 55, 85, 30, + 28, 22, 22, 22, 22, 28, 18, 9, 44, 87, 71, 76, 75, 44, 25, 26, + 30, 37, 25, 10, 67, 55, 57, 59, 51, 65, 26, 21, 20, 16, 1, 96, + 69, 61, 30, 22, 79, 75, 48, 42, 33, 34, 16, 0, 92, 22, 24, 25, + 16, 16, 14, 75, 49, 24, 10, 0, 51, 64, 72, 103, 24, 16, 37, 37, + 8, 8, 6, 0, 65, 72, 41, 30, 16, 9, 46, 32, 18, 18, 6, 0, + 33, 34, 63, 51, 24, 22, 25, 28, 25, 25, 42, 13, 16, 96, 63, 93, + 83, 80, 92, 85, 73, 75, 85, 93, 72, 68, 0, 92, 123, 100, 99, 110, + 106, 81, 91, 99, 65, 26, 87, 108, 100, 81, 81, 99, 89, 91, 93, 97, + 75, 63, 8, 104, 104, 77, 96, 80, 77, 73, 83, 88, 71, 42, 69, 106, + 92, 114, 88, 103, 95, 91, 87, 79, 88, 91, 40, 83, 96, 79, 69, 71, + 69, 75, 87, 64, 61, 53, 44, 106, 134, 67, 72, 75, 91, 80, 76, 67, + 65, 64, 24, 71, 103, 69, 72, 93, 84, 85, 85, 71, 59, 56, 2, 102, + 106, 100, 97, 93, 68, 84, 80, 89, 59, 25, 42, 92, 59, 42, 34, 36, + 29, 34, 34, 36, 45, 37, 17, 87, 100, 89, 93, 110, 112, 83, 72, 71, + 64, 41, 0, 95, 102, 102, 85, 83, 95, 79, 76, 71, 75, 67, 26, 76, + 97, 96, 72, 67, 71, 88, 71, 56, 44, 29, 65, 110, 97, 103, 111, 91, + 107, 95, 81, 75, 92, 57, 0, 84, 93, 79, 81, 83, 71, 65, 80, 75, + 73, 25, 99, 97, 73, 71, 69, 68, 57, 60, 67, 46, 71, 30, 83, 89, + 85, 87, 80, 76, 73, 75, 80, 52, 52, 52, 2, 63, 85, 63, 52, 72, + 63, 57, 67, 48, 51, 46, 30, 81, 100, 76, 89, 97, 59, 69, 65, 59, + 49, 38, 9, 65, 85, 93, 68, 42, 75, 60, 65, 67, 29, 12, 104, 111, + 107, 97, 79, 84, 85, 77, 75, 88, 87, 68, 28, 67, 103, 84, 60, 75, + 81, 69, 59, 69, 67, 28, 63, 120, 128, 112, 99, 95, 100, 115, 112, 89, + 87, 42, 59, 88, 103, 53, 65, 55, 52, 99, 49, 44, 51, 17, 69, 99, + 91, 84, 91, 96, 55, 61, 48, 44, 55, 48, 21, 73, 67, 71, 76, 65, + 67, 56, 49, 61, 45, 55, 21, 103, 96, 71, 83, 75, 79, 61, 60, 59, + 59, 32, 12, 67, 83, 84, 73, 41, 49, 55, 36, 38, 46, 24, 69, 83, + 84, 77, 88, 56, 55, 55, 64, 38, 44, 33, 2, 87, 61, 76, 79, 33, + 61, 64, 37, 41, 56, 41, 2, 92, 96, 110, 73, 60, 104, 56, 48, 38, + 34, 24, 73, 52, 88, 68, 36, 40, 73, 72, 32, 34, 36, 6, 88, 120, + 103, 69, 76, 72, 69, 65, 71, 83, 69, 57, 8, 52, 72, 40, 32, 30, + 25, 36, 34, 40, 29, 29, 10, 67, 67, 53, 57, 46, 61, 37, 45, 37, + 30, 28, 0, 77, 77, 77, 99, 37, 46, 57, 72, 57, 33, 30, 18, 0, + 103, 120, 80, 73, 65, 69, 65, 71, 52, 55, 0, 88, 95, 56, 26, 52, + 24, 44, 34, 52, 26, 9, 61, 75, 84, 61, 45, 22, 21, 22, 22, 22, + 33, 25, 8, 52, 81, 75, 65, 64, 56, 26, 26, 38, 38, 29, 9, 72, + 53, 53, 45, 52, 45, 25, 20, 18, 16, 1, 89, 60, 49, 34, 25, 76, + 83, 87, 57, 40, 24, 18, 0, 88, 41, 34, 33, 10, 14, 14, 16, 38, + 24, 10, 1, 57, 67, 57, 34, 10, 21, 21, 16, 8, 8, 6, 0, 60, + 71, 20, 30, 21, 9, 30, 25, 28, 20, 6, 0, 16, 56, 52, 51, 22, + 21, 21, 21, 14, 17, 26, 10, 18, 80, 63, 64, 92, 72, 75, 76, 75, + 75, 88, 89, 69, 60, 0, 89, 97, 99, 102, 104, 106, 85, 84, 84, 64, + 26, 84, 115, 110, 89, 96, 108, 96, 93, 95, 81, 71, 61, 0, 103, 106, + 75, 100, 79, 79, 73, 77, 91, 65, 44, 68, 102, 106, 91, 88, 99, 104, + 92, 92, 92, 85, 91, 41, 52, 88, 83, 69, 72, 69, 71, 69, 72, 57, + 56, 46, 102, 110, 76, 92, 81, 95, 88, 79, 71, 65, 53, 22, 72, 99, + 72, 89, 85, 79, 87, 89, 63, 57, 56, 12, 97, 92, 91, 80, 68, 83, + 71, 77, 92, 57, 22, 41, 93, 51, 28, 29, 34, 42, 25, 30, 37, 51, + 37, 21, 85, 99, 93, 89, 110, 88, 89, 73, 75, 53, 41, 0, 92, 89, + 108, 93, 68, 76, 81, 88, 84, 72, 69, 30, 44, 93, 103, 85, 64, 65, + 83, 75, 53, 42, 29, 64, 108, 100, 77, 88, 99, 89, 87, 89, 75, 93, + 48, 0, 91, 99, 97, 77, 83, 75, 73, 79, 77, 75, 28, 93, 96, 92, + 76, 77, 65, 55, 55, 68, 67, 72, 29, 81, 81, 77, 77, 83, 79, 85, + 83, 80, 53, 52, 42, 2, 48, 91, 60, 60, 67, 55, 64, 63, 52, 48, + 45, 30, 49, 91, 69, 96, 97, 63, 67, 56, 55, 41, 38, 9, 76, 80, + 72, 59, 75, 80, 80, 73, 71, 26, 10, 59, 114, 103, 89, 81, 85, 81, + 79, 79, 89, 67, 67, 26, 75, 100, 87, 68, 77, 65, 61, 64, 65, 56, + 28, 64, 120, 108, 122, 92, 118, 100, 111, 95, 88, 91, 46, 48, 84, 100, + 53, 64, 67, 72, 88, 51, 40, 48, 22, 69, 93, 75, 79, 68, 72, 64, + 56, 67, 42, 53, 48, 24, 75, 69, 69, 69, 60, 61, 65, 53, 48, 48, + 51, 24, 92, 92, 83, 79, 57, 75, 61, 67, 60, 46, 42, 12, 73, 93, + 75, 65, 38, 53, 49, 36, 37, 37, 24, 32, 77, 81, 79, 80, 53, 46, + 67, 52, 41, 41, 30, 4, 84, 84, 71, 75, 53, 68, 72, 34, 40, 53, + 40, 5, 89, 88, 104, 61, 88, 89, 71, 49, 34, 34, 25, 75, 69, 83, + 69, 65, 34, 67, 71, 32, 34, 37, 12, 75, 126, 97, 79, 72, 72, 79, + 76, 72, 77, 79, 53, 9, 38, 67, 33, 28, 37, 26, 32, 24, 32, 25, + 25, 10, 32, 68, 42, 73, 49, 51, 51, 51, 38, 42, 25, 0, 77, 80, + 81, 48, 67, 68, 52, 73, 67, 38, 44, 17, 0, 107, 115, 81, 73, 68, + 72, 67, 57, 52, 63, 4, 96, 83, 45, 36, 60, 56, 38, 46, 57, 26, + 14, 22, 64, 83, 85, 41, 32, 29, 24, 21, 21, 28, 21, 8, 46, 80, + 63, 63, 59, 51, 24, 22, 36, 42, 22, 10, 64, 57, 49, 44, 52, 67, + 26, 22, 18, 16, 1, 96, 73, 49, 20, 28, 20, 30, 32, 22, 38, 22, + 14, 2, 77, 33, 22, 14, 14, 10, 14, 14, 21, 14, 10, 0, 53, 61, + 57, 9, 28, 14, 59, 26, 21, 17, 5, 0, 48, 61, 28, 41, 36, 9, + 22, 33, 22, 16, 5, 0, 5, 12, 25, 36, 49, 37, 14, 12, 10, 36, + 17, 8, 26, 84, 68, 41, 32, 76, 79, 80, 75, 81, 81, 92, 77, 55, + 1, 84, 110, 92, 99, 107, 103, 85, 95, 95, 51, 24, 84, 110, 114, 93, + 93, 103, 103, 100, 95, 88, 84, 63, 0, 99, 110, 84, 100, 77, 73, 76, + 80, 88, 48, 41, 61, 84, 110, 95, 97, 83, 89, 88, 91, 79, 92, 69, + 44, 51, 79, 85, 79, 73, 72, 68, 77, 65, 56, 51, 49, 91, 128, 83, + 92, 83, 81, 93, 79, 67, 67, 46, 18, 76, 103, 68, 91, 76, 81, 95, + 87, 61, 52, 55, 5, 95, 96, 99, 89, 80, 87, 89, 77, 88, 56, 21, + 45, 91, 32, 49, 45, 51, 45, 22, 25, 34, 44, 33, 24, 51, 99, 93, + 84, 106, 102, 108, 96, 72, 51, 53, 0, 89, 96, 108, 91, 80, 76, 73, + 72, 75, 72, 68, 34, 38, 76, 83, 96, 63, 52, 73, 71, 49, 41, 25, + 56, 107, 95, 91, 88, 89, 83, 87, 72, 75, 92, 41, 0, 88, 88, 87, + 75, 84, 76, 67, 64, 84, 77, 34, 59, 81, 103, 87, 97, 75, 75, 79, + 83, 46, 69, 34, 55, 76, 79, 76, 75, 75, 71, 73, 57, 52, 55, 34, + 1, 48, 95, 65, 49, 49, 57, 45, 46, 46, 48, 45, 33, 38, 83, 91, + 92, 61, 67, 63, 53, 53, 44, 44, 8, 71, 76, 68, 48, 53, 40, 60, + 60, 81, 28, 12, 56, 112, 104, 89, 79, 80, 83, 93, 89, 89, 75, 56, + 21, 65, 95, 79, 68, 92, 65, 60, 63, 64, 52, 28, 57, 110, 108, 95, + 99, 91, 100, 107, 92, 87, 92, 49, 25, 72, 95, 49, 71, 67, 84, 73, + 44, 48, 45, 16, 68, 88, 81, 88, 67, 63, 68, 45, 48, 42, 52, 49, + 25, 65, 64, 71, 71, 64, 64, 60, 67, 49, 46, 53, 24, 45, 96, 85, + 63, 69, 77, 60, 75, 51, 48, 46, 12, 72, 92, 67, 38, 40, 56, 48, + 37, 38, 42, 30, 32, 72, 76, 75, 68, 57, 76, 42, 48, 40, 36, 30, + 4, 80, 69, 61, 56, 64, 37, 52, 34, 36, 49, 52, 8, 76, 104, 81, + 56, 52, 56, 75, 55, 33, 34, 22, 68, 61, 81, 77, 61, 37, 63, 36, + 34, 36, 37, 13, 88, 116, 93, 67, 64, 80, 63, 79, 75, 84, 71, 61, + 9, 60, 59, 28, 21, 26, 40, 24, 28, 20, 18, 24, 9, 24, 60, 87, + 53, 42, 29, 36, 48, 37, 33, 18, 5, 59, 80, 48, 51, 59, 52, 68, + 51, 51, 41, 32, 17, 0, 99, 107, 75, 72, 65, 68, 67, 56, 51, 51, + 4, 83, 88, 42, 26, 56, 57, 45, 33, 53, 24, 21, 17, 57, 81, 85, + 40, 21, 22, 20, 21, 25, 30, 21, 5, 69, 71, 59, 83, 56, 40, 26, + 26, 25, 44, 26, 10, 20, 65, 51, 46, 41, 41, 36, 22, 21, 12, 1, + 92, 61, 46, 28, 28, 37, 32, 26, 26, 41, 18, 14, 2, 75, 28, 14, + 10, 12, 13, 38, 25, 17, 13, 9, 0, 53, 55, 68, 30, 29, 40, 41, + 9, 22, 9, 5, 0, 34, 59, 32, 30, 30, 36, 37, 30, 22, 14, 5, + 0, 5, 4, 18, 21, 21, 33, 14, 9, 10, 24, 10, 4, 36, 72, 37, + 36, 32, 99, 92, 87, 84, 83, 81, 80, 81, 68, 16, 84, 96, 93, 92, + 93, 102, 96, 100, 95, 61, 20, 80, 103, 96, 96, 87, 92, 91, 95, 81, + 88, 79, 63, 0, 95, 102, 92, 79, 81, 96, 91, 93, 69, 56, 38, 80, + 91, 104, 104, 93, 65, 61, 65, 72, 72, 63, 64, 69, 63, 55, 61, 76, + 80, 79, 75, 64, 59, 52, 46, 56, 97, 124, 88, 96, 84, 93, 84, 67, + 76, 64, 63, 16, 75, 96, 67, 93, 93, 93, 83, 87, 73, 52, 56, 6, + 95, 96, 99, 87, 83, 93, 87, 89, 89, 41, 18, 40, 41, 22, 22, 45, + 37, 46, 26, 20, 24, 24, 49, 25, 40, 85, 93, 88, 85, 80, 84, 77, + 59, 55, 42, 1, 85, 80, 103, 83, 84, 79, 73, 69, 71, 67, 65, 63, + 61, 38, 42, 48, 53, 53, 63, 72, 56, 52, 28, 68, 102, 83, 83, 75, + 87, 85, 84, 87, 88, 91, 56, 1, 81, 88, 88, 79, 87, 84, 69, 80, + 80, 75, 37, 41, 48, 77, 75, 91, 85, 67, 61, 81, 63, 40, 34, 41, + 45, 73, 49, 52, 56, 52, 53, 52, 49, 55, 51, 14, 56, 84, 52, 48, + 44, 49, 46, 44, 49, 45, 45, 46, 32, 45, 71, 72, 51, 44, 59, 51, + 56, 51, 42, 5, 67, 73, 53, 67, 57, 57, 52, 56, 46, 25, 36, 40, + 110, 103, 93, 92, 85, 85, 84, 85, 87, 72, 65, 18, 69, 89, 76, 64, + 71, 73, 60, 60, 63, 55, 24, 92, 114, 92, 91, 99, 102, 100, 88, 96, + 96, 91, 53, 41, 61, 89, 51, 79, 73, 59, 53, 51, 49, 42, 16, 63, + 85, 68, 45, 45, 45, 46, 44, 45, 49, 53, 49, 26, 34, 75, 72, 71, + 65, 57, 56, 63, 48, 48, 51, 32, 38, 83, 84, 67, 75, 92, 71, 61, + 40, 46, 41, 16, 64, 69, 44, 38, 38, 38, 32, 36, 26, 34, 40, 26, + 36, 61, 60, 68, 45, 48, 41, 40, 40, 44, 28, 6, 71, 84, 89, 60, + 61, 61, 34, 57, 49, 45, 38, 6, 83, 88, 73, 93, 41, 40, 57, 53, + 42, 28, 20, 75, 65, 75, 69, 53, 37, 56, 37, 36, 34, 34, 14, 73, + 122, 99, 87, 76, 77, 80, 80, 76, 71, 71, 59, 9, 44, 17, 17, 14, + 6, 13, 14, 14, 14, 14, 20, 12, 28, 55, 42, 29, 30, 25, 30, 32, + 32, 36, 25, 1, 68, 68, 46, 45, 68, 53, 46, 45, 45, 45, 32, 16, + 0, 103, 107, 73, 72, 76, 68, 68, 76, 49, 49, 0, 76, 75, 46, 28, + 53, 53, 53, 38, 38, 25, 22, 14, 51, 68, 59, 18, 20, 26, 21, 25, + 28, 28, 22, 6, 49, 71, 76, 36, 45, 41, 26, 33, 40, 45, 32, 17, + 10, 36, 64, 61, 49, 53, 46, 36, 25, 16, 2, 81, 63, 44, 18, 26, + 28, 36, 32, 26, 41, 16, 18, 0, 69, 21, 14, 14, 12, 16, 30, 42, + 18, 16, 9, 1, 55, 79, 51, 32, 26, 48, 16, 24, 24, 9, 5, 0, + 16, 40, 44, 44, 33, 30, 36, 34, 29, 9, 5, 0, 5, 13, 6, 9, + 8, 8, 9, 9, 9, 21, 24, 4, 71, 85, 64, 46, 41, 76, 80, 75, + 80, 79, 87, 81, 69, 61, 0, 80, 81, 83, 81, 83, 81, 85, 80, 73, + 59, 14, 79, 83, 80, 77, 79, 77, 79, 85, 75, 76, 63, 61, 12, 89, + 96, 95, 92, 92, 84, 91, 89, 65, 53, 42, 68, 87, 96, 93, 65, 71, + 56, 55, 63, 71, 60, 57, 55, 59, 60, 63, 72, 67, 67, 65, 65, 51, + 53, 44, 56, 95, 95, 88, 75, 68, 73, 79, 63, 61, 63, 63, 13, 71, + 96, 87, 71, 67, 81, 89, 80, 69, 57, 56, 8, 89, 95, 104, 88, 89, + 96, 92, 87, 61, 49, 16, 49, 42, 14, 18, 13, 21, 16, 20, 20, 18, + 17, 21, 24, 52, 36, 44, 46, 46, 48, 49, 55, 60, 46, 36, 4, 77, + 83, 83, 80, 75, 52, 71, 44, 48, 51, 63, 46, 52, 55, 61, 55, 56, + 59, 59, 79, 57, 40, 21, 63, 67, 79, 68, 65, 65, 68, 69, 71, 63, + 57, 56, 1, 79, 77, 81, 76, 71, 69, 69, 69, 68, 61, 59, 59, 64, + 51, 49, 53, 52, 49, 63, 55, 60, 56, 53, 57, 56, 55, 45, 57, 56, + 48, 56, 57, 56, 53, 52, 4, 44, 75, 57, 45, 37, 37, 41, 42, 42, + 42, 46, 44, 46, 51, 49, 51, 49, 49, 51, 52, 52, 45, 37, 12, 57, + 63, 57, 53, 48, 44, 57, 40, 36, 32, 22, 38, 61, 100, 107, 69, 85, + 85, 88, 72, 73, 67, 65, 14, 61, 59, 61, 53, 55, 55, 59, 59, 63, + 56, 25, 68, 103, 95, 92, 83, 85, 83, 80, 72, 63, 65, 53, 41, 53, + 68, 64, 55, 53, 51, 52, 56, 44, 41, 13, 64, 81, 67, 63, 65, 57, + 63, 55, 60, 63, 59, 48, 51, 29, 33, 41, 59, 36, 40, 57, 61, 59, + 61, 46, 41, 32, 42, 88, 73, 71, 67, 40, 42, 49, 38, 30, 25, 59, + 76, 42, 32, 33, 34, 28, 28, 34, 28, 28, 33, 40, 40, 49, 42, 45, + 41, 42, 44, 45, 42, 30, 5, 68, 71, 77, 61, 38, 67, 59, 65, 49, + 48, 42, 9, 73, 88, 61, 57, 67, 65, 60, 59, 36, 34, 24, 73, 59, + 52, 42, 57, 34, 33, 36, 34, 33, 38, 10, 77, 104, 84, 53, 76, 72, + 53, 65, 69, 68, 65, 32, 12, 10, 13, 18, 8, 9, 14, 12, 13, 13, + 16, 16, 14, 22, 28, 26, 24, 24, 28, 29, 26, 26, 25, 25, 0, 56, + 60, 56, 53, 51, 49, 48, 38, 41, 40, 28, 16, 0, 93, 103, 72, 71, + 68, 71, 69, 75, 46, 49, 6, 63, 75, 44, 26, 20, 29, 22, 24, 16, + 18, 22, 16, 16, 18, 20, 22, 26, 25, 25, 24, 26, 25, 20, 6, 18, + 49, 45, 20, 28, 40, 37, 22, 30, 30, 30, 17, 12, 14, 25, 20, 20, + 18, 18, 24, 25, 16, 2, 53, 60, 53, 45, 42, 42, 37, 26, 32, 41, + 17, 17, 0, 65, 37, 14, 12, 10, 29, 25, 25, 20, 17, 10, 1, 49, + 75, 30, 30, 6, 29, 28, 8, 9, 20, 4, 0, 13, 22, 36, 10, 10, + 16, 25, 21, 10, 10, 5, 0, 4, 10, 10, 9, 8, 8, 8, 10, 8, + 17, 10, 2, 56, 85, 42, 24, 24, 56, 55, 63, 52, 51, 46, 63, 45, + 18, 0, 33, 41, 38, 40, 45, 42, 42, 44, 48, 42, 17, 44, 51, 49, + 46, 44, 42, 40, 41, 40, 38, 37, 30, 0, 33, 36, 34, 42, 42, 37, + 38, 49, 45, 34, 45, 38, 60, 65, 38, 37, 46, 38, 36, 37, 34, 36, + 32, 33, 30, 30, 34, 38, 41, 42, 44, 48, 49, 53, 41, 46, 64, 63, + 55, 49, 53, 60, 51, 48, 56, 51, 32, 12, 37, 55, 65, 55, 59, 57, + 64, 57, 60, 53, 52, 9, 81, 92, 91, 91, 79, 75, 83, 73, 46, 45, + 12, 61, 26, 10, 14, 10, 10, 12, 17, 16, 13, 20, 16, 17, 21, 22, + 18, 30, 32, 34, 36, 36, 40, 42, 38, 1, 24, 36, 41, 26, 26, 26, + 28, 21, 21, 18, 26, 25, 18, 20, 26, 26, 28, 21, 51, 53, 52, 33, + 20, 36, 42, 41, 41, 41, 56, 51, 41, 37, 36, 32, 16, 30, 33, 37, + 45, 52, 40, 41, 45, 45, 45, 45, 46, 45, 49, 51, 55, 51, 51, 49, + 51, 51, 55, 48, 45, 44, 53, 48, 44, 41, 52, 41, 37, 36, 52, 36, + 8, 6, 41, 29, 29, 32, 20, 25, 17, 16, 18, 21, 18, 18, 20, 20, + 20, 20, 26, 28, 32, 33, 44, 36, 34, 12, 12, 13, 14, 13, 16, 10, + 14, 13, 17, 12, 12, 25, 46, 42, 49, 52, 49, 48, 51, 51, 51, 46, + 44, 13, 38, 44, 42, 45, 42, 42, 44, 55, 46, 45, 26, 18, 71, 81, + 60, 60, 65, 76, 61, 61, 67, 69, 59, 41, 36, 37, 42, 49, 52, 51, + 55, 63, 41, 37, 12, 56, 75, 75, 69, 55, 60, 60, 60, 51, 48, 46, + 40, 37, 41, 45, 45, 42, 44, 41, 44, 42, 41, 40, 38, 41, 42, 44, + 46, 49, 44, 42, 41, 41, 41, 34, 45, 17, 60, 33, 26, 25, 22, 21, + 24, 18, 17, 16, 17, 17, 17, 30, 16, 17, 17, 20, 18, 28, 30, 26, + 25, 6, 18, 64, 60, 26, 26, 52, 51, 26, 33, 44, 33, 9, 44, 72, + 67, 48, 46, 57, 56, 38, 36, 32, 25, 69, 59, 36, 34, 32, 32, 34, + 32, 33, 33, 36, 17, 65, 81, 73, 26, 21, 22, 22, 25, 18, 18, 12, + 36, 13, 0, 1, 8, 1, 8, 0, 4, 5, 8, 4, 10, 13, 18, 22, + 21, 16, 22, 21, 22, 14, 24, 22, 17, 0, 10, 13, 14, 13, 13, 12, + 13, 13, 13, 13, 13, 13, 0, 41, 89, 85, 83, 83, 81, 80, 73, 45, + 64, 8, 42, 61, 24, 26, 21, 22, 32, 26, 24, 22, 22, 21, 18, 12, + 10, 10, 8, 10, 9, 9, 8, 6, 6, 4, 9, 9, 9, 12, 10, 10, + 10, 10, 13, 12, 12, 13, 13, 14, 14, 16, 16, 16, 14, 14, 16, 14, + 2, 9, 17, 26, 12, 14, 17, 34, 34, 41, 21, 20, 12, 4, 60, 20, + 22, 21, 17, 18, 13, 17, 12, 9, 6, 2, 8, 14, 30, 2, 2, 1, + 4, 1, 1, 1, 13, 0, 2, 2, 1, 8, 4, 5, 4, 8, 10, 14, + 4, 0, 8, 2, 13, 4, 9, 12, 13, 9, 16, 17, 9, 5, 37, 85, + 30, 29, 25, 4, 1, 4, 12, 13, 1, 1, 18, 20, 6, 21, 17, 13, + 12, 10, 24, 9, 8, 6, 25, 20, 2, 21, 4, 2, 2, 13, 2, 2, + 2, 1, 1, 1, 2, 5, 8, 5, 9, 6, 6, 6, 12, 9, 9, 45, + 48, 51, 72, 72, 81, 81, 83, 89, 91, 87, 81, 83, 81, 81, 100, 80, + 83, 52, 55, 51, 49, 42, 42, 36, 25, 28, 24, 22, 18, 18, 17, 17, + 17, 18, 20, 20, 20, 22, 26, 26, 29, 33, 34, 37, 38, 41, 44, 48, + 16, 13, 34, 36, 36, 34, 36, 37, 37, 37, 33, 14, 33, 9, 24, 12, + 18, 12, 17, 36, 55, 69, 72, 59, 61, 75, 79, 88, 79, 72, 59, 53, + 44, 46, 18, 36, 2, 16, 18, 33, 33, 40, 48, 57, 65, 91, 81, 65, + 56, 88, 91, 77, 87, 88, 63, 48, 42, 33, 21, 10, 18, 16, 8, 10, + 10, 9, 5, 6, 6, 5, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 8, 0, 0, 0, 13, 0, 0, 0, 21, 0, 0, 4, 12, 20, 25, + 24, 65, 89, 92, 99, 92, 85, 63, 72, 88, 85, 69, 83, 80, 73, 59, + 40, 34, 17, 26, 13, 1, 0, 12, 10, 0, 0, 8, 2, 4, 0, 2, + 4, 4, 0, 1, 1, 0, 2, 9, 10, 0, 4, 1, 1, 25, 28, 1, + 1, 14, 16, 16, 17, 24, 17, 30, 9, 9, 14, 10, 9, 10, 14, 9, + 9, 9, 14, 10, 10, 10, 32, 10, 10, 10, 13, 16, 20, 20, 37, 10, + 29, 48, 48, 30, 29, 44, 44, 29, 29, 30, 29, 28, 21, 21, 17, 10, + 13, 14, 16, 21, 21, 32, 32, 30, 28, 32, 30, 22, 21, 28, 22, 17, + 14, 26, 16, 36, 21, 32, 44, 56, 53, 57, 65, 85, 67, 49, 45, 34, + 34, 42, 71, 68, 71, 64, 48, 34, 28, 24, 18, 13, 14, 17, 25, 18, + 22, 14, 18, 21, 24, 16, 17, 13, 26, 25, 25, 26, 26, 25, 22, 25, + 25, 24, 24, 26, 65, 34, 26, 34, 28, 32, 28, 29, 25, 25, 26, 33, + 20, 26, 37, 42, 52, 53, 55, 55, 45, 52, 38, 29, 5, 25, 97, 69, + 63, 45, 22, 25, 17, 16, 4, 4, 4, 1, 8, 6, 2, 1, 8, 8, + 5, 1, 6, 8, 2, 1, 5, 6, 5, 0, 4, 1, 4, 0, 1, 1, + 0, 0, 20, 22, 26, 29, 32, 34, 37, 40, 44, 42, 6, 49, 16, 17, + 12, 10, 14, 12, 10, 9, 12, 6, 9, 29, 41, 45, 56, 57, 60, 61, + 52, 45, 38, 17, 6, 57, 69, 68, 49, 63, 57, 52, 21, 10, 10, 4, + 8, 8, 9, 8, 12, 10, 6, 4, 5, 4, 2, 2, 9, 8, 9, 6, + 6, 9, 12, 13, 14, 13, 13, 12, 0, 51, 2, 2, 5, 2, 1, 1, + 0, 1, 1, 0, 1, 4, 14, 29, 25, 26, 36, 40, 37, 33, 25, 6, + 0, 41, 69, 61, 61, 61, 56, 26, 16, 6, 4, 1, 0, 0, 2, 0, + 0, 4, 2, 2, 1, 2, 0, 6, 4, 24, 76, 42, 40, 29, 138, 130, + 122, 114, 106, 103, 99, 75, 36, 16, 52, 102, 108, 95, 81, 83, 87, 87, + 89, 68, 30, 40, 102, 106, 107, 102, 111, 108, 108, 99, 104, 92, 103, 99, + 108, 110, 114, 122, 118, 108, 111, 100, 59, 45, 53, 81, 108, 122, 111, 102, + 111, 110, 111, 100, 106, 111, 103, 71, 65, 77, 71, 83, 80, 79, 87, 81, + 41, 53, 41, 40, 102, 99, 89, 81, 88, 87, 76, 76, 77, 65, 65, 72, + 81, 93, 83, 84, 60, 51, 34, 22, 32, 22, 13, 17, 22, 12, 10, 13, + 28, 8, 6, 8, 37, 21, 21, 26, 56, 65, 69, 76, 69, 75, 84, 76, + 73, 81, 72, 63, 53, 67, 84, 68, 73, 71, 75, 69, 76, 60, 48, 4, + 36, 100, 103, 103, 107, 97, 92, 87, 84, 92, 83, 49, 76, 89, 100, 91, + 91, 85, 71, 81, 52, 44, 22, 33, 76, 80, 89, 92, 92, 79, 85, 97, + 99, 64, 63, 67, 111, 108, 111, 110, 108, 106, 111, 108, 102, 67, 71, 97, + 104, 107, 100, 85, 95, 106, 89, 91, 89, 91, 77, 16, 40, 91, 96, 71, + 79, 85, 93, 76, 81, 79, 28, 28, 36, 99, 85, 85, 92, 87, 83, 96, + 85, 60, 67, 52, 64, 72, 88, 80, 85, 76, 64, 65, 65, 41, 20, 2, + 26, 75, 84, 73, 65, 72, 64, 61, 57, 40, 20, 0, 37, 85, 107, 80, + 77, 76, 72, 87, 88, 87, 48, 33, 41, 95, 99, 87, 92, 93, 97, 68, + 77, 37, 40, 32, 75, 80, 81, 64, 65, 60, 55, 77, 64, 57, 25, 32, + 37, 67, 72, 65, 71, 40, 40, 17, 16, 12, 13, 18, 17, 26, 32, 25, + 26, 20, 20, 29, 34, 25, 25, 17, 9, 55, 81, 88, 71, 80, 64, 56, + 24, 22, 14, 9, 16, 29, 49, 53, 52, 52, 59, 51, 53, 44, 33, 49, + 73, 106, 114, 100, 99, 97, 93, 91, 88, 87, 34, 34, 61, 91, 89, 95, + 87, 84, 79, 88, 79, 59, 41, 40, 65, 65, 72, 67, 59, 55, 59, 48, + 26, 20, 13, 21, 21, 32, 32, 24, 12, 16, 12, 25, 8, 10, 29, 25, + 46, 63, 64, 77, 80, 87, 80, 85, 75, 40, 33, 55, 67, 71, 75, 71, + 73, 72, 75, 63, 80, 59, 44, 0, 76, 71, 64, 44, 71, 69, 60, 52, + 48, 64, 53, 44, 75, 83, 72, 76, 84, 76, 68, 61, 60, 52, 12, 0, + 20, 68, 96, 75, 67, 65, 72, 59, 56, 71, 56, 17, 0, 64, 75, 69, + 68, 61, 55, 18, 36, 32, 25, 1, 16, 26, 44, 51, 49, 59, 67, 72, + 59, 68, 55, 68, 55, 61, 65, 60, 57, 65, 61, 71, 56, 41, 18, 8, + 68, 69, 45, 48, 56, 38, 46, 41, 46, 41, 25, 33, 24, 60, 68, 67, + 57, 69, 64, 55, 52, 14, 2, 26, 59, 55, 41, 44, 44, 38, 12, 8, + 5, 5, 5, 0, 1, 32, 32, 30, 32, 40, 41, 42, 41, 41, 12, 2, + 38, 71, 67, 71, 67, 63, 56, 49, 44, 26, 8, 0, 49, 79, 59, 56, + 51, 60, 49, 55, 46, 25, 6, 0, 37, 52, 51, 13, 10, 8, 6, 13, + 6, 2, 6, 2, 71, 48, 106, 116, 120, 124, 115, 107, 110, 103, 106, 96, + 93, 41, 24, 107, 100, 93, 85, 97, 97, 92, 89, 87, 96, 32, 115, 118, + 118, 114, 110, 115, 112, 122, 110, 118, 108, 102, 93, 107, 100, 106, 104, 110, + 106, 106, 106, 102, 103, 55, 118, 112, 99, 95, 102, 93, 107, 92, 97, 93, + 67, 69, 57, 75, 88, 83, 85, 72, 71, 72, 77, 85, 57, 51, 85, 97, + 93, 97, 103, 92, 96, 93, 95, 89, 85, 72, 85, 80, 80, 80, 73, 80, + 69, 69, 73, 67, 71, 52, 12, 30, 81, 88, 67, 75, 76, 88, 79, 73, + 40, 18, 60, 85, 85, 92, 81, 89, 91, 102, 93, 81, 89, 73, 38, 68, + 89, 100, 96, 72, 83, 83, 76, 79, 64, 52, 5, 76, 110, 88, 89, 95, + 83, 93, 77, 81, 102, 80, 52, 76, 104, 102, 89, 96, 92, 96, 71, 85, + 49, 22, 76, 87, 95, 85, 88, 83, 89, 83, 96, 89, 96, 91, 81, 75, + 75, 73, 72, 73, 72, 72, 75, 77, 85, 79, 67, 80, 81, 80, 71, 88, + 87, 92, 92, 99, 93, 87, 16, 100, 114, 99, 95, 99, 91, 79, 80, 76, + 79, 34, 24, 75, 83, 87, 85, 89, 88, 91, 91, 81, 71, 60, 48, 63, + 91, 93, 88, 92, 87, 76, 71, 68, 45, 22, 6, 83, 87, 87, 80, 84, + 85, 79, 75, 75, 64, 21, 1, 115, 119, 119, 112, 116, 111, 106, 97, 116, + 110, 76, 34, 100, 118, 115, 106, 103, 89, 100, 92, 84, 53, 40, 75, 96, + 84, 80, 80, 89, 91, 81, 87, 84, 85, 72, 30, 64, 83, 85, 81, 81, + 77, 73, 65, 38, 24, 12, 42, 63, 40, 48, 55, 51, 61, 52, 46, 44, + 30, 28, 12, 8, 68, 88, 69, 61, 68, 72, 88, 71, 83, 67, 55, 72, + 53, 76, 80, 89, 76, 91, 71, 81, 57, 51, 59, 91, 115, 79, 83, 79, + 80, 64, 79, 69, 63, 67, 53, 85, 72, 77, 67, 64, 64, 75, 67, 64, + 57, 73, 61, 65, 69, 68, 55, 71, 69, 71, 57, 57, 60, 60, 81, 76, + 83, 83, 84, 85, 83, 89, 93, 93, 40, 41, 63, 116, 116, 118, 115, 118, + 114, 107, 111, 108, 67, 33, 53, 77, 73, 67, 64, 56, 57, 48, 44, 55, + 63, 30, 2, 51, 72, 61, 49, 44, 59, 38, 51, 46, 36, 41, 49, 49, + 55, 59, 51, 40, 45, 46, 53, 44, 63, 14, 0, 93, 97, 102, 103, 97, + 93, 91, 79, 87, 81, 64, 33, 0, 68, 67, 72, 75, 75, 69, 63, 55, + 48, 26, 6, 49, 81, 83, 85, 88, 87, 85, 76, 67, 63, 30, 55, 80, + 79, 80, 80, 71, 63, 49, 52, 56, 42, 22, 9, 67, 73, 44, 42, 34, + 40, 55, 45, 60, 49, 20, 16, 63, 80, 76, 76, 75, 65, 59, 67, 65, + 16, 4, 48, 60, 60, 60, 63, 55, 56, 42, 44, 37, 28, 8, 37, 67, + 81, 77, 76, 69, 72, 68, 60, 65, 44, 21, 2, 60, 61, 51, 48, 48, + 32, 34, 20, 30, 45, 10, 1, 32, 76, 61, 49, 33, 37, 36, 37, 55, + 42, 10, 0, 56, 56, 64, 52, 48, 30, 41, 46, 45, 5, 8, 0, 69, + 64, 85, 84, 92, 138, 136, 124, 120, 111, 110, 71, 71, 41, 22, 92, 99, + 83, 83, 87, 60, 83, 87, 84, 41, 34, 118, 132, 139, 150, 170, 178, 189, + 197, 205, 205, 212, 216, 220, 213, 218, 218, 216, 202, 193, 155, 128, 123, 120, + 93, 112, 108, 110, 104, 99, 104, 106, 84, 60, 60, 63, 59, 55, 76, 95, + 107, 85, 77, 87, 85, 88, 84, 77, 37, 96, 103, 91, 92, 83, 85, 87, + 84, 79, 85, 84, 77, 75, 91, 93, 92, 83, 80, 72, 72, 80, 83, 63, + 55, 16, 92, 88, 100, 99, 85, 95, 95, 88, 89, 73, 20, 73, 110, 96, + 76, 99, 91, 84, 83, 84, 95, 91, 69, 45, 68, 92, 100, 81, 80, 88, + 84, 91, 75, 64, 60, 4, 83, 103, 100, 91, 79, 85, 81, 96, 81, 91, + 87, 37, 71, 92, 93, 95, 79, 81, 75, 73, 80, 56, 28, 81, 72, 81, + 83, 75, 91, 88, 96, 97, 84, 77, 65, 93, 75, 91, 81, 84, 84, 84, + 77, 67, 65, 55, 55, 73, 89, 85, 87, 89, 88, 83, 88, 88, 87, 87, + 81, 16, 103, 112, 73, 72, 73, 67, 68, 64, 76, 75, 34, 25, 72, 92, + 87, 83, 73, 71, 75, 77, 88, 72, 65, 34, 57, 88, 77, 81, 89, 87, + 67, 60, 71, 49, 37, 9, 80, 83, 79, 76, 76, 68, 68, 68, 61, 65, + 28, 0, 100, 112, 114, 115, 111, 111, 114, 103, 103, 108, 85, 41, 110, 106, + 103, 84, 73, 79, 64, 72, 75, 89, 71, 92, 79, 73, 79, 65, 76, 52, + 57, 56, 60, 44, 46, 36, 84, 118, 80, 87, 84, 91, 81, 72, 84, 33, + 12, 52, 53, 36, 52, 38, 33, 52, 40, 36, 45, 26, 24, 14, 10, 69, + 97, 65, 57, 76, 64, 67, 65, 52, 71, 34, 48, 99, 92, 91, 97, 92, + 85, 79, 77, 67, 53, 55, 106, 108, 75, 77, 73, 64, 57, 71, 88, 83, + 85, 85, 95, 93, 104, 93, 93, 97, 124, 96, 103, 99, 102, 95, 102, 103, + 106, 97, 96, 103, 99, 102, 79, 60, 41, 85, 83, 77, 81, 76, 73, 64, + 73, 72, 69, 46, 30, 88, 122, 111, 110, 107, 112, 112, 118, 104, 87, 83, + 40, 56, 73, 72, 51, 48, 63, 51, 46, 63, 61, 56, 30, 4, 40, 73, + 63, 61, 51, 59, 53, 65, 61, 46, 41, 41, 64, 77, 65, 81, 80, 73, + 60, 80, 68, 59, 16, 4, 83, 96, 87, 88, 92, 89, 84, 83, 76, 93, + 67, 30, 0, 71, 75, 71, 52, 53, 41, 57, 69, 52, 14, 9, 45, 89, + 85, 73, 57, 48, 68, 45, 44, 36, 33, 65, 84, 68, 68, 53, 45, 52, + 67, 56, 45, 24, 20, 5, 65, 76, 65, 44, 45, 51, 55, 52, 46, 45, + 20, 36, 76, 77, 72, 57, 72, 52, 49, 57, 72, 14, 4, 56, 63, 37, + 37, 30, 22, 25, 20, 26, 46, 38, 8, 33, 72, 65, 72, 79, 59, 48, + 49, 67, 59, 56, 17, 2, 59, 44, 25, 55, 37, 37, 26, 20, 25, 21, + 8, 0, 48, 71, 48, 59, 44, 32, 32, 60, 41, 38, 12, 0, 24, 59, + 51, 59, 51, 55, 42, 52, 38, 13, 8, 1, 83, 103, 84, 75, 84, 112, + 99, 108, 103, 91, 77, 81, 93, 44, 36, 67, 93, 85, 73, 64, 60, 61, + 64, 68, 93, 102, 130, 204, 212, 222, 225, 225, 224, 226, 228, 233, 234, 237, + 237, 237, 233, 230, 230, 229, 226, 221, 222, 193, 147, 132, 122, 146, 161, 190, + 165, 140, 107, 85, 56, 61, 61, 60, 55, 97, 108, 99, 96, 84, 95, 100, + 102, 85, 95, 81, 89, 87, 89, 64, 91, 85, 92, 84, 87, 79, 79, 77, + 89, 106, 114, 99, 102, 97, 104, 100, 83, 69, 63, 56, 16, 100, 92, 97, + 96, 97, 84, 85, 79, 77, 71, 32, 80, 89, 99, 88, 84, 89, 79, 84, + 95, 96, 80, 65, 37, 64, 95, 107, 85, 80, 85, 91, 84, 76, 60, 46, + 5, 71, 95, 93, 91, 88, 85, 83, 65, 100, 99, 77, 45, 75, 93, 89, + 81, 81, 79, 67, 79, 81, 59, 38, 48, 75, 77, 84, 93, 102, 80, 81, + 84, 71, 72, 57, 84, 89, 71, 87, 83, 85, 68, 76, 76, 75, 51, 51, + 81, 85, 83, 81, 76, 80, 83, 61, 83, 83, 49, 53, 21, 64, 115, 75, + 71, 79, 59, 67, 69, 75, 72, 37, 22, 71, 85, 84, 67, 71, 71, 67, + 69, 84, 72, 60, 34, 63, 81, 72, 61, 91, 93, 67, 61, 73, 40, 37, + 9, 60, 88, 75, 72, 79, 64, 83, 77, 57, 61, 25, 4, 65, 111, 102, + 89, 85, 85, 93, 99, 88, 85, 88, 87, 91, 107, 104, 95, 83, 100, 71, + 83, 63, 69, 61, 71, 60, 72, 67, 63, 60, 67, 65, 64, 60, 67, 64, + 68, 76, 89, 97, 65, 72, 73, 107, 77, 73, 30, 9, 34, 45, 34, 42, + 51, 55, 48, 52, 36, 29, 32, 18, 10, 8, 64, 83, 60, 63, 76, 77, + 77, 71, 61, 64, 34, 87, 103, 96, 87, 75, 76, 73, 68, 77, 52, 51, + 65, 87, 107, 67, 76, 63, 68, 73, 116, 202, 205, 193, 206, 221, 222, 206, + 214, 228, 232, 228, 225, 232, 242, 226, 229, 224, 241, 221, 210, 216, 246, 222, + 155, 91, 57, 45, 85, 100, 114, 110, 106, 106, 93, 87, 88, 69, 46, 42, + 104, 115, 104, 103, 110, 108, 120, 114, 87, 95, 77, 45, 45, 72, 60, 51, + 45, 56, 51, 45, 45, 60, 53, 25, 1, 51, 84, 68, 88, 65, 52, 60, + 53, 51, 46, 40, 18, 69, 76, 63, 65, 69, 69, 44, 68, 67, 59, 13, + 4, 57, 91, 85, 77, 72, 71, 65, 69, 73, 84, 65, 29, 0, 68, 68, + 60, 34, 55, 57, 52, 55, 53, 25, 12, 56, 87, 67, 60, 60, 53, 64, + 33, 42, 38, 22, 60, 71, 56, 49, 48, 67, 45, 46, 37, 30, 34, 21, + 9, 64, 76, 67, 59, 68, 68, 34, 45, 38, 46, 12, 29, 80, 76, 69, + 41, 69, 55, 71, 68, 64, 16, 5, 55, 45, 30, 32, 21, 21, 21, 21, + 21, 41, 36, 9, 30, 67, 64, 69, 89, 61, 44, 49, 53, 45, 41, 16, + 2, 52, 56, 29, 63, 29, 41, 24, 25, 37, 21, 6, 0, 48, 72, 49, + 45, 40, 41, 37, 56, 36, 20, 10, 0, 45, 42, 49, 51, 34, 37, 36, + 26, 34, 28, 9, 1, 67, 61, 59, 28, 17, 81, 81, 88, 81, 87, 73, + 95, 85, 44, 32, 72, 96, 89, 65, 61, 56, 55, 102, 115, 162, 197, 214, + 226, 236, 233, 233, 230, 230, 225, 232, 237, 238, 237, 236, 233, 232, 228, 222, + 225, 226, 225, 221, 224, 218, 220, 212, 205, 208, 202, 194, 130, 106, 83, 56, + 61, 67, 68, 69, 123, 183, 193, 186, 187, 194, 199, 202, 198, 195, 194, 193, + 193, 136, 114, 106, 102, 103, 92, 89, 97, 99, 135, 170, 195, 201, 195, 193, + 189, 134, 97, 84, 53, 64, 46, 18, 65, 92, 84, 81, 80, 80, 71, 81, + 85, 73, 34, 55, 89, 100, 81, 84, 84, 79, 80, 85, 95, 79, 67, 36, + 71, 84, 100, 88, 77, 84, 88, 81, 76, 59, 51, 6, 61, 99, 104, 97, + 88, 96, 71, 85, 89, 88, 77, 36, 75, 84, 93, 75, 75, 85, 73, 91, + 76, 57, 37, 42, 89, 93, 73, 76, 77, 89, 77, 81, 76, 68, 51, 91, + 89, 79, 76, 73, 72, 75, 97, 87, 73, 64, 49, 85, 83, 91, 72, 80, + 81, 77, 81, 72, 80, 83, 76, 22, 64, 112, 79, 73, 67, 53, 57, 57, + 75, 73, 37, 20, 71, 84, 73, 61, 60, 60, 61, 63, 80, 65, 53, 36, + 52, 79, 76, 60, 77, 68, 56, 61, 71, 41, 21, 4, 60, 92, 68, 61, + 72, 77, 71, 63, 68, 56, 25, 2, 100, 102, 93, 92, 99, 99, 95, 96, + 130, 181, 193, 199, 209, 214, 221, 224, 230, 232, 249, 249, 246, 240, 240, 225, + 232, 236, 233, 230, 225, 228, 222, 224, 198, 202, 181, 205, 197, 228, 190, 182, + 174, 175, 199, 142, 83, 36, 14, 48, 28, 51, 55, 45, 41, 56, 30, 26, + 10, 34, 10, 8, 5, 61, 89, 64, 65, 80, 85, 81, 57, 55, 67, 24, + 88, 102, 87, 71, 71, 80, 87, 77, 84, 64, 40, 49, 81, 103, 65, 69, + 61, 64, 67, 127, 190, 195, 199, 205, 206, 212, 209, 209, 214, 217, 218, 220, + 222, 221, 218, 218, 216, 208, 208, 204, 199, 199, 193, 143, 85, 57, 12, 77, + 88, 92, 96, 95, 93, 111, 108, 76, 77, 49, 49, 76, 115, 103, 120, 118, + 102, 93, 72, 75, 87, 81, 46, 42, 76, 64, 45, 51, 51, 51, 44, 56, + 37, 52, 33, 0, 53, 83, 59, 67, 55, 64, 61, 80, 44, 42, 40, 32, + 63, 84, 72, 79, 81, 79, 77, 65, 55, 53, 14, 0, 60, 91, 76, 67, + 63, 69, 81, 83, 85, 91, 71, 28, 0, 65, 57, 51, 40, 69, 53, 55, + 57, 44, 20, 9, 41, 89, 72, 53, 52, 45, 63, 37, 36, 28, 22, 57, + 80, 48, 64, 71, 56, 46, 44, 48, 53, 32, 22, 14, 59, 64, 51, 57, + 45, 45, 36, 51, 38, 44, 12, 32, 76, 68, 52, 67, 59, 83, 68, 67, + 61, 18, 5, 42, 61, 34, 34, 24, 20, 17, 21, 21, 21, 25, 8, 2, + 64, 64, 77, 83, 42, 49, 51, 45, 56, 40, 21, 2, 45, 59, 30, 65, + 17, 40, 22, 20, 30, 18, 5, 0, 33, 68, 57, 60, 44, 44, 34, 53, + 42, 22, 10, 0, 41, 53, 48, 21, 26, 24, 25, 14, 29, 12, 8, 6, + 68, 60, 45, 56, 18, 77, 76, 79, 84, 77, 73, 95, 81, 44, 36, 97, + 88, 64, 61, 69, 91, 103, 177, 228, 233, 236, 237, 230, 229, 229, 229, 205, + 175, 162, 166, 170, 162, 146, 135, 128, 124, 112, 108, 116, 122, 135, 183, 205, + 218, 217, 214, 212, 202, 202, 187, 136, 103, 72, 55, 63, 53, 69, 116, 147, + 204, 201, 213, 201, 212, 218, 218, 216, 225, 222, 228, 225, 222, 217, 222, 220, + 217, 212, 202, 210, 214, 210, 217, 214, 202, 198, 189, 191, 134, 97, 79, 49, + 63, 49, 21, 65, 91, 73, 73, 102, 87, 87, 85, 76, 71, 34, 33, 84, + 93, 92, 88, 87, 93, 95, 96, 96, 79, 67, 36, 63, 106, 110, 80, 85, + 85, 89, 80, 75, 60, 46, 9, 77, 100, 92, 88, 81, 96, 77, 81, 92, + 77, 81, 36, 80, 81, 87, 80, 76, 88, 79, 83, 76, 57, 37, 33, 88, + 75, 72, 77, 85, 75, 87, 81, 68, 63, 48, 80, 91, 72, 69, 69, 81, + 77, 73, 76, 69, 49, 49, 85, 87, 97, 85, 83, 68, 88, 81, 68, 81, + 80, 79, 24, 67, 107, 81, 69, 67, 52, 53, 68, 79, 71, 37, 18, 77, + 79, 71, 61, 64, 59, 59, 64, 75, 63, 59, 37, 61, 76, 69, 60, 56, + 88, 79, 61, 65, 42, 21, 8, 69, 92, 75, 71, 72, 64, 63, 51, 67, + 76, 24, 2, 112, 114, 93, 95, 103, 91, 106, 179, 190, 202, 205, 205, 213, + 225, 225, 229, 233, 237, 246, 248, 248, 245, 244, 242, 226, 236, 241, 232, 225, + 225, 233, 226, 221, 228, 217, 213, 204, 210, 199, 195, 186, 206, 187, 157, 81, + 34, 13, 45, 26, 52, 45, 40, 46, 34, 36, 26, 13, 33, 12, 6, 5, + 64, 83, 65, 76, 71, 81, 84, 69, 56, 59, 22, 87, 96, 72, 83, 83, + 89, 99, 95, 91, 72, 51, 67, 77, 111, 72, 76, 76, 61, 63, 91, 131, + 178, 193, 197, 199, 195, 205, 194, 199, 206, 209, 210, 217, 217, 220, 209, 205, + 210, 202, 191, 190, 194, 166, 99, 76, 33, 21, 81, 95, 76, 89, 89, 97, + 96, 107, 80, 80, 49, 44, 77, 110, 96, 91, 71, 73, 77, 75, 80, 84, + 89, 60, 40, 71, 64, 56, 44, 46, 49, 52, 41, 55, 75, 30, 2, 75, + 59, 73, 52, 53, 60, 65, 59, 60, 44, 40, 30, 65, 85, 56, 79, 60, + 56, 56, 59, 64, 57, 13, 0, 93, 80, 71, 75, 77, 76, 76, 87, 85, + 83, 67, 40, 0, 61, 76, 48, 79, 45, 38, 52, 49, 44, 18, 4, 37, + 87, 69, 64, 60, 63, 60, 48, 33, 33, 22, 60, 76, 45, 56, 72, 59, + 46, 52, 51, 37, 33, 24, 18, 60, 79, 65, 67, 68, 48, 37, 41, 38, + 56, 16, 40, 73, 64, 44, 73, 79, 81, 61, 67, 52, 21, 5, 44, 55, + 41, 32, 21, 20, 33, 20, 24, 37, 46, 9, 2, 60, 57, 51, 42, 45, + 40, 40, 37, 38, 42, 20, 4, 37, 63, 38, 79, 17, 40, 16, 33, 26, + 22, 8, 2, 45, 67, 60, 55, 42, 33, 41, 44, 45, 30, 13, 0, 41, + 57, 28, 22, 10, 13, 14, 18, 25, 8, 8, 0, 63, 56, 34, 13, 2, + 102, 80, 75, 75, 73, 73, 99, 71, 48, 34, 99, 93, 64, 73, 97, 130, + 216, 236, 234, 232, 233, 236, 230, 217, 185, 151, 118, 107, 102, 103, 103, 103, + 103, 102, 100, 103, 100, 102, 99, 100, 99, 102, 115, 124, 151, 183, 191, 198, + 185, 140, 116, 84, 48, 52, 57, 60, 72, 128, 153, 226, 232, 202, 220, 212, + 224, 222, 226, 224, 221, 220, 226, 233, 229, 226, 224, 218, 217, 224, 217, 213, + 212, 212, 217, 209, 201, 201, 191, 118, 81, 68, 49, 59, 49, 24, 89, 89, + 84, 83, 92, 79, 87, 84, 88, 89, 68, 25, 80, 92, 103, 103, 103, 97, + 97, 91, 89, 76, 65, 36, 61, 92, 99, 89, 84, 88, 93, 83, 77, 77, + 49, 8, 71, 97, 92, 97, 89, 96, 92, 95, 95, 67, 65, 26, 76, 79, + 96, 73, 97, 81, 80, 75, 79, 68, 57, 32, 80, 77, 75, 72, 72, 77, + 77, 77, 67, 53, 45, 75, 83, 67, 65, 72, 81, 71, 71, 68, 64, 41, + 45, 75, 80, 88, 89, 79, 67, 81, 71, 80, 64, 81, 73, 26, 45, 67, + 108, 80, 65, 61, 53, 63, 79, 65, 38, 22, 64, 73, 68, 52, 56, 53, + 52, 71, 79, 73, 55, 30, 48, 65, 64, 55, 53, 83, 60, 64, 65, 46, + 30, 9, 71, 83, 67, 77, 71, 76, 71, 63, 69, 59, 25, 0, 92, 110, + 93, 96, 102, 91, 165, 190, 198, 201, 206, 210, 210, 217, 221, 229, 229, 232, + 241, 245, 244, 246, 245, 244, 238, 229, 238, 232, 228, 230, 220, 217, 221, 225, + 214, 213, 202, 198, 194, 190, 185, 189, 143, 120, 49, 33, 14, 45, 29, 41, + 56, 38, 34, 33, 24, 25, 13, 21, 17, 10, 6, 51, 95, 68, 81, 67, + 76, 79, 72, 64, 55, 29, 83, 81, 96, 104, 107, 118, 116, 114, 104, 87, + 77, 53, 92, 118, 80, 76, 60, 57, 64, 64, 79, 92, 104, 107, 107, 100, + 97, 93, 99, 97, 97, 99, 103, 108, 108, 104, 104, 106, 99, 96, 99, 96, + 92, 79, 71, 32, 38, 77, 91, 75, 73, 96, 89, 91, 99, 77, 75, 51, + 53, 72, 107, 108, 85, 85, 108, 93, 96, 102, 72, 80, 79, 40, 60, 77, + 61, 45, 48, 42, 51, 57, 56, 61, 29, 4, 46, 68, 65, 52, 52, 49, + 45, 57, 64, 51, 38, 30, 55, 92, 51, 84, 85, 69, 76, 73, 71, 48, + 17, 2, 92, 92, 79, 83, 73, 77, 76, 91, 83, 83, 65, 30, 0, 67, + 75, 55, 53, 52, 55, 44, 53, 29, 16, 10, 40, 84, 72, 46, 64, 55, + 46, 42, 36, 36, 26, 63, 77, 63, 63, 67, 55, 46, 46, 64, 40, 22, + 25, 12, 68, 73, 60, 48, 59, 55, 36, 48, 34, 42, 14, 59, 67, 45, + 68, 63, 61, 57, 67, 69, 56, 16, 6, 22, 41, 53, 32, 33, 20, 37, + 33, 21, 33, 45, 9, 22, 55, 64, 52, 40, 38, 42, 40, 40, 38, 38, + 21, 4, 38, 61, 29, 51, 20, 34, 16, 36, 28, 17, 6, 0, 57, 68, + 64, 63, 42, 38, 51, 46, 46, 34, 12, 0, 24, 41, 21, 9, 4, 1, + 2, 12, 18, 9, 8, 1, 64, 77, 28, 2, 25, 130, 88, 85, 84, 84, + 87, 88, 87, 48, 48, 75, 61, 75, 102, 165, 225, 240, 233, 234, 226, 216, + 195, 169, 126, 110, 103, 103, 103, 104, 104, 104, 104, 110, 104, 91, 77, 69, + 76, 84, 95, 124, 107, 100, 100, 97, 106, 108, 108, 108, 104, 100, 63, 48, + 52, 57, 51, 68, 111, 131, 182, 191, 191, 159, 124, 115, 120, 126, 123, 122, + 124, 135, 162, 190, 198, 205, 210, 216, 214, 206, 195, 197, 204, 202, 198, 183, + 138, 115, 92, 77, 45, 44, 56, 44, 24, 61, 85, 85, 83, 83, 93, 92, + 84, 84, 92, 53, 28, 68, 91, 88, 89, 95, 88, 91, 91, 88, 71, 65, + 30, 57, 85, 102, 104, 106, 97, 99, 83, 79, 64, 45, 6, 64, 92, 91, + 92, 84, 96, 88, 89, 84, 79, 48, 25, 75, 83, 91, 72, 84, 83, 84, + 76, 73, 77, 49, 32, 52, 84, 77, 84, 77, 76, 77, 72, 65, 49, 40, + 65, 89, 73, 68, 73, 76, 77, 72, 73, 68, 41, 40, 79, 77, 77, 75, + 76, 76, 81, 79, 81, 61, 51, 64, 32, 38, 68, 83, 95, 76, 61, 52, + 69, 71, 68, 41, 18, 60, 80, 65, 61, 52, 53, 64, 96, 68, 64, 51, + 24, 61, 75, 55, 49, 55, 51, 56, 57, 55, 40, 30, 10, 48, 91, 79, + 80, 69, 61, 63, 79, 65, 67, 24, 5, 69, 108, 95, 96, 106, 93, 93, + 138, 182, 191, 189, 169, 123, 114, 111, 110, 115, 112, 110, 104, 108, 108, 111, + 111, 111, 107, 103, 104, 106, 104, 103, 97, 97, 106, 110, 104, 102, 95, 89, + 93, 71, 63, 60, 56, 45, 16, 12, 41, 36, 45, 38, 45, 34, 29, 29, + 26, 10, 17, 14, 6, 5, 56, 71, 72, 63, 71, 77, 59, 65, 57, 48, + 33, 87, 89, 110, 132, 170, 179, 181, 162, 166, 144, 118, 102, 88, 115, 71, + 84, 71, 56, 59, 57, 72, 71, 64, 73, 79, 83, 80, 79, 81, 81, 81, + 83, 84, 84, 85, 87, 87, 85, 84, 85, 85, 81, 85, 81, 22, 13, 36, + 80, 85, 76, 85, 80, 80, 85, 102, 76, 71, 63, 42, 53, 92, 103, 83, + 69, 100, 104, 103, 77, 72, 80, 65, 44, 46, 63, 65, 49, 52, 52, 51, + 52, 53, 57, 21, 2, 41, 75, 69, 51, 55, 52, 45, 55, 65, 42, 37, + 14, 67, 84, 57, 67, 84, 85, 67, 83, 71, 44, 13, 2, 60, 77, 68, + 81, 87, 72, 77, 81, 81, 84, 63, 29, 1, 63, 53, 69, 53, 40, 32, + 45, 25, 24, 21, 14, 38, 77, 71, 63, 71, 57, 51, 46, 46, 26, 16, + 68, 72, 63, 71, 71, 48, 48, 61, 44, 34, 26, 24, 17, 71, 63, 48, + 61, 46, 38, 44, 52, 36, 42, 12, 38, 76, 72, 76, 57, 28, 60, 61, + 81, 57, 16, 8, 17, 42, 51, 37, 30, 29, 37, 18, 20, 36, 34, 10, + 18, 49, 63, 57, 45, 52, 45, 46, 45, 42, 40, 26, 6, 16, 57, 36, + 26, 22, 26, 18, 33, 33, 18, 5, 0, 30, 67, 45, 55, 38, 48, 36, + 37, 46, 20, 10, 0, 55, 49, 9, 9, 2, 13, 1, 6, 20, 14, 4, + 2, 64, 81, 20, 6, 51, 111, 112, 99, 104, 91, 100, 81, 81, 49, 46, + 63, 72, 114, 199, 234, 237, 234, 237, 236, 189, 146, 114, 104, 104, 106, 108, + 112, 100, 116, 115, 102, 73, 46, 30, 30, 29, 36, 30, 34, 37, 59, 77, + 119, 112, 100, 103, 99, 99, 96, 107, 95, 44, 41, 45, 53, 52, 71, 87, + 108, 103, 118, 104, 108, 92, 88, 87, 95, 89, 92, 87, 97, 93, 95, 102, + 103, 106, 103, 103, 103, 100, 97, 100, 106, 107, 95, 95, 85, 73, 40, 44, + 51, 53, 44, 25, 51, 81, 91, 84, 96, 85, 91, 91, 88, 84, 56, 32, + 56, 87, 85, 87, 81, 85, 89, 92, 84, 65, 63, 24, 63, 73, 85, 91, + 88, 84, 81, 84, 69, 69, 49, 8, 64, 85, 97, 92, 93, 88, 88, 89, + 80, 76, 59, 24, 68, 76, 91, 92, 77, 83, 71, 79, 59, 56, 45, 37, + 45, 44, 60, 57, 52, 55, 57, 59, 64, 60, 38, 72, 85, 67, 63, 73, + 73, 72, 72, 71, 69, 48, 36, 77, 75, 73, 69, 68, 71, 69, 73, 72, + 72, 72, 72, 51, 37, 73, 88, 77, 59, 49, 51, 72, 64, 65, 42, 17, + 71, 83, 71, 61, 51, 51, 65, 84, 68, 61, 51, 26, 51, 67, 53, 49, + 40, 42, 41, 51, 41, 38, 24, 10, 45, 88, 67, 42, 61, 72, 75, 56, + 61, 61, 22, 5, 97, 100, 95, 92, 96, 95, 99, 99, 102, 102, 102, 96, + 97, 97, 99, 97, 97, 95, 99, 97, 97, 96, 97, 96, 96, 92, 92, 89, + 88, 87, 88, 79, 84, 81, 80, 79, 77, 72, 72, 69, 61, 57, 42, 38, + 18, 12, 17, 37, 29, 41, 33, 29, 13, 17, 10, 2, 14, 16, 28, 6, + 2, 61, 95, 73, 65, 68, 65, 69, 59, 56, 25, 51, 91, 108, 174, 193, + 206, 206, 204, 189, 194, 194, 186, 174, 139, 112, 76, 53, 55, 60, 48, 55, + 44, 60, 56, 55, 64, 77, 87, 87, 89, 88, 85, 89, 93, 95, 95, 95, + 93, 92, 93, 93, 91, 97, 71, 18, 25, 14, 8, 72, 79, 87, 69, 77, + 68, 64, 61, 79, 67, 60, 41, 55, 73, 81, 77, 96, 88, 83, 73, 68, + 65, 69, 75, 45, 40, 51, 81, 75, 69, 63, 67, 69, 55, 53, 34, 1, + 49, 73, 75, 63, 55, 61, 52, 57, 73, 34, 37, 22, 55, 91, 65, 76, + 63, 46, 46, 57, 56, 51, 13, 1, 60, 85, 71, 72, 73, 75, 80, 83, + 76, 79, 72, 28, 1, 63, 69, 37, 30, 34, 29, 25, 37, 24, 17, 16, + 42, 73, 69, 73, 53, 42, 56, 51, 51, 29, 18, 52, 65, 56, 64, 52, + 49, 49, 48, 48, 46, 26, 25, 20, 75, 61, 57, 40, 42, 40, 33, 45, + 38, 20, 10, 63, 64, 77, 57, 33, 49, 44, 64, 45, 55, 13, 9, 13, + 38, 46, 42, 46, 40, 30, 20, 21, 24, 29, 8, 2, 52, 60, 64, 44, + 48, 48, 40, 34, 40, 42, 17, 8, 10, 53, 44, 24, 33, 30, 18, 25, + 22, 14, 5, 0, 49, 63, 55, 44, 32, 36, 36, 45, 46, 32, 26, 0, + 24, 38, 5, 17, 5, 16, 6, 8, 21, 9, 4, 12, 55, 52, 26, 42, + 95, 68, 67, 68, 64, 60, 61, 61, 52, 41, 76, 71, 112, 213, 240, 237, + 238, 236, 238, 197, 132, 107, 108, 108, 115, 115, 110, 115, 120, 115, 81, 44, + 26, 22, 24, 25, 26, 32, 32, 33, 36, 36, 49, 77, 108, 150, 112, 103, + 102, 102, 107, 89, 42, 37, 40, 49, 52, 55, 87, 84, 84, 79, 77, 91, + 92, 93, 93, 93, 95, 95, 92, 93, 92, 93, 95, 93, 92, 93, 91, 91, + 89, 87, 87, 91, 89, 87, 83, 61, 36, 38, 36, 51, 51, 46, 28, 34, + 79, 80, 91, 79, 55, 65, 57, 49, 45, 46, 55, 34, 51, 67, 79, 77, + 76, 76, 75, 80, 64, 63, 22, 61, 67, 87, 91, 89, 85, 81, 69, 65, + 63, 45, 12, 65, 69, 71, 71, 69, 69, 69, 71, 73, 63, 56, 24, 64, + 71, 85, 75, 57, 67, 64, 53, 55, 61, 55, 51, 55, 67, 51, 69, 61, + 64, 55, 64, 63, 44, 38, 59, 71, 76, 63, 65, 69, 69, 64, 68, 64, + 46, 34, 77, 73, 73, 64, 68, 67, 67, 61, 64, 60, 67, 56, 60, 34, + 48, 55, 53, 52, 53, 59, 60, 64, 63, 44, 14, 72, 64, 71, 59, 51, + 48, 46, 51, 56, 55, 44, 34, 48, 60, 41, 33, 36, 36, 37, 36, 37, + 36, 18, 12, 33, 64, 67, 48, 57, 67, 64, 61, 65, 72, 21, 2, 89, + 104, 97, 95, 93, 93, 95, 92, 92, 84, 88, 87, 76, 85, 72, 80, 85, + 81, 114, 111, 108, 111, 108, 108, 108, 107, 106, 103, 100, 102, 97, 93, 92, + 95, 89, 88, 91, 85, 67, 38, 18, 16, 13, 12, 10, 8, 17, 4, 8, + 9, 2, 1, 1, 2, 1, 2, 2, 9, 10, 5, 2, 46, 76, 81, 79, + 75, 83, 75, 60, 56, 22, 60, 100, 158, 214, 210, 206, 210, 195, 202, 205, + 197, 179, 174, 150, 73, 64, 68, 61, 64, 60, 57, 53, 61, 67, 38, 38, + 41, 75, 162, 107, 104, 111, 108, 124, 118, 120, 124, 131, 127, 128, 126, 107, + 84, 49, 14, 30, 16, 9, 56, 72, 79, 79, 77, 80, 76, 81, 77, 73, + 69, 67, 72, 75, 57, 57, 63, 56, 55, 56, 65, 67, 56, 51, 51, 48, + 45, 46, 44, 42, 42, 30, 41, 40, 42, 20, 4, 44, 53, 56, 59, 56, + 60, 51, 57, 61, 41, 34, 20, 79, 91, 65, 61, 41, 56, 59, 49, 48, + 51, 13, 1, 80, 80, 69, 73, 67, 77, 68, 72, 69, 73, 59, 42, 1, + 56, 65, 38, 45, 28, 32, 25, 28, 22, 16, 5, 44, 65, 63, 60, 36, + 40, 52, 52, 34, 28, 16, 48, 52, 53, 49, 49, 52, 49, 49, 52, 46, + 26, 32, 25, 80, 61, 41, 38, 42, 38, 30, 40, 34, 14, 10, 52, 38, + 52, 56, 52, 46, 38, 41, 38, 37, 14, 13, 12, 25, 34, 36, 20, 26, + 26, 33, 32, 32, 29, 10, 0, 44, 51, 48, 41, 36, 33, 32, 30, 26, + 26, 10, 10, 10, 9, 9, 9, 14, 16, 10, 28, 20, 18, 6, 5, 44, + 59, 51, 38, 33, 33, 33, 34, 34, 26, 14, 0, 45, 42, 5, 12, 9, + 16, 12, 12, 6, 5, 2, 0, 42, 60, 45, 38, 30, 44, 36, 46, 45, + 41, 38, 44, 55, 88, 67, 93, 194, 238, 236, 237, 237, 240, 189, 136, 107, + 115, 119, 118, 111, 103, 119, 124, 119, 80, 30, 20, 21, 20, 22, 30, 37, + 41, 40, 45, 40, 40, 41, 60, 85, 140, 155, 116, 115, 115, 108, 92, 38, + 34, 36, 46, 52, 41, 73, 81, 81, 81, 83, 88, 93, 95, 96, 100, 99, + 100, 102, 103, 103, 97, 96, 96, 96, 95, 99, 93, 93, 91, 89, 88, 93, + 79, 40, 34, 33, 32, 24, 28, 46, 45, 42, 29, 33, 38, 46, 53, 36, + 32, 30, 26, 28, 22, 24, 25, 36, 36, 48, 51, 55, 57, 63, 64, 64, + 55, 24, 53, 61, 77, 79, 73, 68, 55, 29, 33, 28, 17, 12, 38, 40, + 40, 42, 42, 42, 42, 46, 46, 45, 34, 29, 44, 46, 53, 32, 29, 29, + 32, 21, 13, 21, 18, 13, 12, 10, 12, 12, 12, 17, 18, 20, 21, 22, + 29, 17, 18, 18, 18, 18, 32, 33, 22, 28, 33, 56, 33, 56, 69, 56, + 52, 52, 52, 51, 51, 51, 49, 51, 49, 46, 48, 51, 55, 55, 56, 57, + 59, 59, 59, 61, 44, 18, 65, 64, 53, 46, 41, 45, 42, 40, 48, 48, + 36, 16, 44, 29, 25, 14, 13, 12, 12, 12, 12, 9, 9, 13, 17, 17, + 20, 17, 16, 17, 17, 26, 26, 36, 21, 0, 14, 51, 57, 56, 57, 61, + 67, 65, 68, 65, 68, 48, 68, 97, 106, 118, 122, 120, 123, 126, 119, 124, + 123, 124, 123, 123, 120, 119, 115, 114, 111, 108, 107, 102, 106, 95, 77, 52, + 17, 12, 12, 10, 8, 6, 6, 6, 20, 13, 10, 14, 13, 10, 6, 8, + 8, 6, 5, 8, 2, 8, 5, 29, 59, 61, 57, 64, 65, 51, 38, 57, + 21, 67, 118, 197, 216, 210, 210, 210, 216, 190, 165, 134, 127, 106, 87, 71, + 69, 46, 34, 52, 52, 46, 45, 49, 45, 32, 40, 34, 72, 173, 147, 108, + 108, 131, 123, 126, 128, 131, 140, 135, 136, 132, 110, 73, 18, 14, 10, 32, + 26, 34, 59, 57, 49, 53, 56, 53, 55, 57, 56, 57, 56, 59, 60, 61, + 61, 60, 60, 60, 61, 59, 59, 59, 57, 51, 51, 48, 46, 40, 57, 44, + 41, 32, 41, 40, 21, 4, 17, 45, 46, 25, 30, 46, 45, 36, 36, 40, + 30, 25, 59, 106, 46, 37, 45, 44, 28, 29, 36, 26, 20, 2, 65, 88, + 80, 84, 76, 80, 71, 69, 75, 71, 42, 30, 1, 59, 60, 33, 34, 24, + 20, 21, 21, 18, 12, 12, 34, 14, 18, 20, 21, 20, 20, 17, 12, 10, + 18, 16, 18, 20, 17, 17, 21, 32, 41, 41, 41, 21, 22, 14, 73, 57, + 38, 32, 36, 25, 24, 22, 20, 17, 14, 36, 18, 29, 16, 16, 33, 26, + 32, 26, 30, 28, 14, 9, 21, 26, 29, 24, 20, 17, 17, 14, 14, 13, + 9, 13, 17, 17, 8, 9, 12, 12, 9, 10, 10, 9, 10, 10, 8, 10, + 10, 10, 13, 14, 13, 14, 13, 16, 5, 0, 36, 33, 30, 28, 29, 28, + 26, 26, 26, 14, 17, 0, 37, 30, 1, 1, 0, 0, 0, 0, 1, 2, + 0, 0, 5, 9, 8, 12, 2, 102, 96, 89, 84, 80, 83, 79, 88, 67, + 76, 151, 234, 237, 237, 237, 236, 186, 135, 111, 114, 123, 112, 104, 100, 123, + 130, 124, 91, 34, 18, 20, 18, 20, 32, 37, 37, 33, 33, 28, 33, 18, + 24, 56, 77, 120, 165, 138, 116, 115, 110, 97, 37, 34, 36, 45, 48, 40, + 40, 42, 46, 48, 48, 51, 63, 110, 170, 114, 99, 100, 104, 102, 100, 95, + 95, 99, 100, 108, 108, 108, 102, 99, 103, 99, 71, 32, 28, 28, 21, 22, + 25, 22, 25, 28, 28, 29, 25, 25, 26, 24, 45, 49, 52, 55, 59, 60, + 56, 25, 75, 76, 52, 46, 45, 46, 41, 38, 44, 53, 20, 46, 29, 25, + 22, 21, 22, 16, 14, 14, 14, 16, 8, 12, 12, 9, 9, 10, 12, 12, + 12, 14, 16, 16, 32, 13, 24, 45, 48, 53, 45, 56, 64, 87, 69, 80, + 68, 89, 96, 88, 97, 96, 89, 83, 77, 63, 33, 29, 72, 106, 108, 81, + 77, 67, 51, 46, 41, 14, 12, 9, 8, 9, 9, 8, 8, 9, 9, 9, + 9, 12, 13, 13, 14, 14, 17, 20, 21, 22, 26, 29, 45, 46, 59, 45, + 21, 59, 41, 34, 25, 24, 24, 21, 24, 24, 21, 22, 17, 12, 30, 48, + 48, 52, 73, 81, 77, 85, 73, 40, 12, 53, 88, 87, 67, 46, 48, 48, + 34, 32, 12, 9, 1, 9, 9, 21, 16, 17, 17, 26, 24, 28, 28, 36, + 51, 75, 108, 171, 161, 111, 122, 140, 134, 131, 134, 132, 132, 130, 128, 127, + 126, 123, 122, 119, 114, 112, 102, 103, 92, 48, 16, 13, 10, 9, 10, 13, + 13, 16, 24, 14, 21, 42, 55, 59, 61, 64, 57, 56, 40, 36, 13, 10, + 5, 5, 20, 16, 17, 29, 30, 55, 56, 44, 46, 17, 76, 134, 204, 232, + 213, 213, 202, 151, 124, 92, 93, 85, 79, 77, 73, 28, 51, 40, 45, 42, + 34, 29, 33, 30, 32, 49, 55, 73, 181, 177, 114, 95, 112, 120, 131, 135, + 139, 144, 140, 140, 134, 112, 65, 16, 14, 13, 14, 10, 4, 4, 5, 2, + 1, 1, 2, 1, 0, 0, 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, + 4, 9, 9, 10, 10, 10, 13, 14, 18, 21, 25, 36, 13, 40, 51, 48, + 32, 33, 41, 40, 25, 26, 33, 12, 2, 9, 36, 38, 33, 29, 40, 41, + 33, 29, 44, 41, 8, 1, 16, 46, 49, 14, 9, 6, 5, 6, 12, 33, + 21, 17, 29, 21, 33, 30, 36, 40, 40, 37, 29, 13, 45, 53, 60, 56, + 33, 12, 9, 13, 9, 17, 18, 30, 24, 56, 33, 32, 34, 30, 42, 51, + 44, 51, 33, 12, 49, 56, 59, 55, 30, 24, 24, 12, 16, 16, 8, 13, + 22, 20, 12, 16, 13, 13, 12, 10, 13, 8, 5, 5, 12, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 1, 4, + 6, 8, 8, 4, 0, 12, 5, 8, 5, 5, 5, 8, 5, 5, 5, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 1, + 0, 1, 110, 97, 99, 91, 89, 95, 89, 68, 73, 135, 222, 237, 237, 238, + 236, 187, 124, 112, 120, 127, 110, 104, 110, 126, 136, 131, 110, 44, 18, 17, + 16, 17, 26, 30, 29, 30, 32, 33, 48, 52, 68, 64, 57, 71, 111, 169, + 153, 120, 115, 116, 96, 38, 34, 34, 45, 49, 40, 48, 88, 97, 99, 92, + 97, 95, 111, 181, 153, 99, 97, 102, 96, 102, 111, 114, 127, 131, 134, 132, + 138, 135, 131, 103, 96, 36, 28, 26, 21, 20, 20, 22, 21, 20, 21, 28, + 28, 45, 60, 73, 84, 96, 100, 104, 103, 102, 93, 63, 41, 87, 92, 64, + 64, 68, 69, 61, 51, 48, 53, 20, 20, 28, 45, 48, 53, 83, 93, 103, + 72, 59, 55, 102, 100, 110, 88, 96, 83, 102, 87, 80, 87, 80, 32, 20, + 64, 104, 95, 106, 97, 81, 73, 83, 100, 79, 93, 85, 79, 68, 83, 96, + 92, 81, 84, 75, 92, 38, 28, 79, 115, 102, 100, 115, 111, 114, 118, 104, + 96, 48, 24, 85, 100, 93, 97, 96, 100, 106, 99, 97, 96, 91, 87, 85, + 92, 89, 96, 85, 84, 76, 49, 37, 38, 33, 45, 18, 24, 30, 52, 63, + 60, 65, 79, 69, 61, 52, 41, 33, 76, 100, 99, 97, 95, 97, 93, 87, + 83, 73, 41, 13, 68, 89, 89, 83, 84, 83, 83, 80, 59, 40, 33, 2, + 57, 71, 72, 63, 68, 76, 73, 71, 73, 69, 24, 44, 80, 102, 195, 170, + 120, 114, 126, 143, 143, 140, 144, 153, 153, 151, 153, 153, 144, 142, 118, 112, + 102, 118, 104, 88, 28, 16, 12, 12, 14, 14, 16, 24, 24, 25, 13, 34, + 68, 67, 79, 85, 89, 80, 79, 65, 61, 59, 46, 24, 4, 71, 75, 73, + 71, 30, 29, 24, 46, 46, 10, 85, 162, 214, 210, 218, 201, 138, 103, 93, + 85, 76, 77, 73, 80, 33, 28, 41, 49, 61, 64, 72, 57, 60, 59, 63, + 69, 93, 72, 190, 186, 150, 110, 108, 111, 131, 146, 139, 142, 146, 142, 132, + 116, 61, 16, 21, 18, 17, 10, 14, 45, 52, 51, 53, 51, 56, 45, 80, + 72, 42, 48, 92, 79, 96, 102, 97, 106, 104, 93, 108, 108, 103, 96, 77, + 80, 96, 97, 87, 87, 91, 87, 83, 55, 38, 17, 4, 46, 73, 63, 55, + 51, 38, 25, 26, 8, 17, 16, 18, 2, 1, 8, 2, 2, 0, 4, 0, + 1, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 2, 10, 10, 14, 20, 36, 44, 26, 22, 37, 4, 24, 61, 73, 77, 75, + 71, 75, 76, 81, 51, 29, 14, 49, 63, 65, 77, 72, 61, 60, 55, 44, + 42, 40, 52, 37, 51, 59, 48, 51, 55, 64, 63, 71, 68, 32, 10, 61, + 55, 34, 65, 60, 56, 51, 42, 32, 24, 18, 12, 13, 5, 12, 29, 24, + 40, 40, 41, 29, 25, 20, 4, 9, 20, 68, 77, 60, 65, 69, 67, 59, + 61, 40, 44, 55, 63, 67, 79, 76, 71, 26, 5, 1, 0, 5, 0, 0, + 6, 6, 2, 4, 6, 5, 2, 4, 4, 0, 0, 8, 21, 24, 29, 18, + 29, 44, 53, 38, 25, 17, 1, 16, 68, 83, 69, 71, 83, 77, 80, 80, + 87, 85, 87, 72, 83, 126, 216, 230, 238, 236, 234, 177, 122, 114, 122, 130, + 107, 107, 119, 130, 143, 139, 128, 81, 25, 18, 17, 18, 26, 30, 32, 33, + 38, 79, 79, 75, 79, 79, 67, 63, 64, 85, 166, 173, 143, 112, 107, 91, + 36, 32, 32, 44, 46, 36, 83, 107, 114, 114, 110, 96, 85, 97, 193, 177, + 120, 96, 97, 108, 116, 131, 134, 136, 142, 143, 147, 146, 140, 134, 110, 84, + 28, 24, 21, 20, 24, 30, 36, 33, 34, 34, 36, 48, 96, 107, 110, 103, + 100, 102, 95, 88, 81, 65, 60, 22, 85, 85, 71, 65, 63, 71, 72, 77, + 48, 56, 20, 71, 102, 99, 102, 99, 107, 88, 107, 81, 108, 68, 72, 91, + 93, 95, 97, 83, 80, 85, 79, 93, 95, 40, 17, 84, 100, 104, 95, 96, + 96, 97, 84, 83, 89, 83, 57, 77, 91, 100, 97, 85, 93, 96, 89, 93, + 41, 38, 93, 114, 110, 85, 103, 100, 102, 95, 100, 111, 68, 25, 110, 118, + 118, 81, 72, 69, 71, 79, 79, 72, 96, 87, 51, 65, 77, 95, 81, 84, + 80, 85, 87, 72, 42, 49, 14, 44, 85, 91, 91, 87, 92, 84, 84, 83, + 61, 42, 28, 75, 96, 83, 77, 75, 73, 73, 72, 68, 76, 46, 14, 59, + 88, 93, 83, 76, 85, 87, 83, 76, 52, 33, 9, 80, 102, 99, 76, 71, + 60, 77, 72, 65, 69, 32, 42, 79, 97, 187, 202, 150, 110, 120, 140, 142, + 154, 159, 167, 170, 166, 170, 162, 155, 148, 115, 107, 122, 118, 107, 79, 21, + 12, 10, 16, 20, 18, 21, 30, 25, 34, 17, 55, 75, 84, 77, 73, 60, + 67, 61, 71, 73, 76, 60, 29, 4, 65, 71, 84, 77, 72, 65, 68, 48, + 45, 12, 85, 175, 216, 216, 208, 150, 108, 95, 83, 89, 73, 71, 85, 85, + 28, 21, 34, 29, 36, 36, 40, 41, 44, 38, 71, 102, 83, 91, 195, 191, + 178, 110, 106, 115, 136, 148, 144, 154, 151, 142, 132, 114, 48, 18, 10, 16, + 17, 16, 29, 71, 87, 72, 67, 65, 59, 68, 64, 65, 59, 69, 81, 102, + 95, 96, 91, 92, 77, 81, 100, 115, 84, 80, 77, 64, 75, 67, 69, 65, + 69, 64, 67, 69, 65, 20, 4, 44, 79, 71, 69, 55, 56, 56, 55, 38, + 37, 25, 17, 13, 83, 84, 65, 60, 61, 52, 49, 46, 36, 16, 4, 22, + 81, 73, 61, 64, 73, 72, 73, 60, 72, 59, 14, 2, 26, 59, 56, 21, + 25, 30, 33, 38, 26, 5, 45, 92, 84, 80, 64, 63, 49, 55, 40, 46, + 30, 14, 56, 69, 71, 59, 52, 49, 48, 44, 56, 64, 57, 46, 49, 63, + 67, 69, 64, 69, 77, 73, 57, 57, 30, 12, 59, 57, 56, 37, 45, 48, + 51, 55, 53, 41, 18, 18, 12, 49, 56, 49, 55, 41, 33, 12, 28, 30, + 16, 6, 2, 51, 67, 64, 55, 59, 55, 67, 48, 56, 48, 41, 42, 42, + 57, 53, 45, 49, 51, 48, 55, 48, 46, 37, 37, 63, 68, 79, 71, 81, + 79, 71, 69, 55, 63, 60, 65, 42, 45, 46, 56, 60, 30, 45, 32, 44, + 26, 5, 53, 84, 85, 61, 42, 28, 84, 87, 88, 79, 83, 71, 81, 85, + 185, 225, 229, 233, 233, 187, 126, 112, 124, 134, 115, 107, 131, 139, 144, 140, + 138, 115, 49, 18, 17, 20, 26, 36, 32, 28, 33, 77, 88, 87, 79, 76, + 85, 85, 63, 72, 79, 146, 178, 158, 116, 103, 84, 34, 30, 30, 44, 48, + 42, 96, 119, 99, 103, 92, 93, 92, 97, 198, 182, 166, 97, 97, 112, 123, + 135, 142, 148, 144, 148, 147, 150, 144, 128, 110, 55, 28, 22, 18, 30, 33, + 36, 38, 36, 40, 42, 38, 84, 115, 114, 107, 107, 92, 93, 77, 71, 76, + 59, 59, 26, 77, 91, 77, 60, 63, 67, 68, 77, 49, 57, 21, 76, 93, + 100, 95, 111, 80, 89, 93, 69, 81, 61, 87, 103, 99, 87, 87, 79, 81, + 80, 85, 87, 87, 34, 17, 99, 96, 93, 87, 95, 97, 88, 84, 85, 77, + 71, 49, 75, 97, 107, 93, 92, 92, 89, 84, 88, 40, 29, 85, 110, 111, + 103, 100, 85, 100, 87, 100, 93, 92, 29, 96, 89, 126, 115, 115, 114, 110, + 111, 107, 102, 85, 77, 52, 92, 103, 96, 103, 92, 91, 89, 87, 83, 61, + 52, 17, 72, 96, 88, 88, 69, 75, 63, 61, 75, 73, 44, 29, 63, 80, + 87, 79, 80, 76, 75, 76, 81, 71, 46, 16, 63, 73, 92, 80, 68, 79, + 75, 88, 87, 52, 36, 0, 80, 77, 88, 88, 97, 92, 88, 95, 73, 73, + 36, 40, 83, 100, 186, 213, 191, 128, 115, 130, 144, 151, 159, 171, 174, 173, + 171, 174, 166, 153, 116, 116, 130, 120, 110, 77, 18, 12, 13, 20, 22, 33, + 33, 25, 29, 29, 17, 64, 76, 81, 72, 55, 56, 52, 64, 52, 57, 65, + 67, 28, 4, 75, 73, 76, 67, 61, 65, 55, 30, 45, 20, 80, 182, 213, + 220, 190, 111, 92, 87, 89, 75, 72, 92, 91, 75, 28, 20, 24, 45, 33, + 34, 32, 41, 33, 34, 75, 97, 92, 87, 199, 205, 191, 110, 97, 114, 122, + 139, 144, 147, 154, 146, 132, 116, 53, 17, 9, 21, 26, 10, 40, 77, 63, + 67, 64, 63, 59, 68, 63, 51, 48, 64, 95, 108, 97, 85, 83, 76, 81, + 77, 87, 91, 91, 84, 59, 75, 87, 92, 92, 99, 93, 92, 75, 63, 29, + 21, 5, 56, 75, 69, 71, 68, 65, 49, 53, 51, 45, 24, 18, 53, 84, + 68, 65, 65, 61, 71, 64, 52, 55, 18, 2, 64, 81, 55, 46, 60, 65, + 56, 59, 65, 52, 53, 20, 2, 45, 49, 33, 20, 32, 18, 29, 40, 18, + 5, 34, 91, 69, 65, 40, 38, 37, 41, 42, 77, 29, 16, 46, 59, 45, + 69, 80, 61, 51, 56, 40, 45, 42, 26, 57, 68, 81, 81, 79, 91, 71, + 73, 37, 68, 34, 13, 56, 52, 55, 42, 30, 28, 32, 38, 32, 53, 25, + 18, 2, 56, 56, 56, 53, 29, 40, 26, 26, 29, 30, 5, 4, 67, 64, + 29, 40, 34, 42, 52, 59, 60, 48, 59, 16, 51, 41, 55, 45, 44, 44, + 33, 28, 41, 57, 14, 69, 77, 69, 69, 72, 64, 55, 64, 68, 67, 63, + 24, 26, 53, 79, 60, 60, 51, 37, 17, 48, 49, 33, 4, 63, 83, 61, + 55, 25, 10, 75, 75, 76, 97, 67, 83, 81, 127, 222, 225, 230, 234, 209, + 143, 116, 120, 132, 130, 107, 124, 146, 151, 147, 142, 132, 85, 25, 17, 16, + 22, 26, 38, 33, 17, 34, 81, 81, 87, 77, 71, 73, 71, 72, 67, 77, + 116, 183, 173, 122, 106, 79, 34, 30, 30, 44, 49, 42, 77, 114, 100, 102, + 97, 93, 102, 104, 202, 194, 178, 92, 99, 112, 131, 139, 150, 147, 157, 148, + 144, 148, 139, 127, 112, 33, 24, 21, 18, 32, 42, 42, 37, 41, 42, 38, + 53, 103, 112, 114, 106, 89, 87, 83, 80, 72, 69, 65, 55, 25, 76, 81, + 84, 77, 73, 68, 60, 61, 48, 55, 17, 84, 92, 111, 81, 79, 79, 76, + 83, 83, 80, 59, 83, 103, 95, 89, 89, 100, 92, 92, 84, 76, 81, 37, + 20, 77, 100, 84, 102, 85, 69, 91, 84, 80, 80, 71, 48, 76, 89, 107, + 89, 106, 95, 85, 93, 84, 44, 26, 85, 106, 103, 96, 96, 95, 84, 83, + 89, 93, 103, 33, 65, 110, 84, 107, 116, 100, 112, 106, 96, 107, 91, 67, + 51, 95, 100, 85, 75, 73, 65, 83, 88, 81, 75, 52, 22, 84, 88, 89, + 92, 68, 59, 60, 67, 71, 60, 40, 16, 72, 85, 75, 85, 81, 76, 83, + 80, 77, 60, 48, 22, 56, 77, 88, 84, 84, 65, 80, 75, 81, 48, 32, + 0, 80, 87, 83, 84, 92, 77, 103, 100, 104, 85, 41, 41, 81, 100, 183, + 205, 189, 130, 114, 127, 140, 144, 155, 171, 177, 178, 178, 170, 166, 148, 118, + 128, 132, 124, 116, 63, 17, 12, 16, 24, 33, 29, 25, 25, 30, 36, 20, + 68, 83, 80, 56, 64, 71, 67, 60, 56, 59, 61, 51, 28, 4, 75, 57, + 80, 72, 73, 65, 51, 32, 42, 14, 85, 178, 209, 216, 167, 102, 92, 83, + 85, 76, 77, 100, 93, 77, 26, 17, 16, 25, 36, 38, 29, 34, 32, 22, + 71, 97, 76, 93, 199, 193, 197, 108, 97, 104, 115, 130, 138, 153, 158, 150, + 134, 110, 49, 20, 8, 13, 26, 12, 40, 77, 80, 61, 53, 45, 48, 41, + 48, 44, 41, 14, 89, 104, 92, 80, 76, 76, 87, 91, 92, 79, 96, 83, + 57, 79, 89, 100, 91, 81, 71, 60, 76, 69, 67, 24, 6, 52, 55, 75, + 55, 49, 44, 44, 46, 56, 71, 26, 16, 68, 84, 46, 56, 41, 63, 68, + 72, 59, 55, 21, 2, 72, 80, 59, 49, 64, 77, 75, 72, 73, 59, 61, + 20, 2, 51, 41, 18, 20, 37, 20, 20, 28, 22, 4, 37, 75, 72, 40, + 57, 60, 38, 41, 46, 42, 45, 12, 40, 61, 48, 69, 51, 36, 44, 36, + 51, 49, 42, 30, 72, 60, 56, 49, 60, 71, 81, 60, 60, 52, 33, 14, + 52, 51, 67, 52, 37, 40, 36, 40, 40, 51, 44, 17, 22, 41, 65, 56, + 37, 34, 52, 26, 37, 22, 20, 5, 6, 28, 63, 59, 33, 33, 30, 29, + 20, 30, 25, 18, 13, 59, 49, 57, 36, 32, 29, 25, 26, 29, 57, 18, + 71, 73, 69, 52, 55, 42, 44, 49, 44, 42, 30, 25, 26, 55, 48, 42, + 37, 26, 16, 29, 30, 38, 40, 2, 25, 85, 55, 56, 13, 0, 110, 104, + 102, 76, 73, 83, 93, 178, 221, 234, 228, 220, 158, 126, 116, 131, 135, 120, + 112, 144, 155, 155, 147, 140, 120, 55, 18, 14, 18, 24, 32, 38, 33, 18, + 71, 91, 84, 77, 71, 76, 80, 69, 65, 65, 69, 111, 189, 181, 154, 104, + 75, 34, 28, 28, 40, 49, 42, 64, 118, 102, 97, 100, 92, 89, 95, 209, + 199, 178, 93, 103, 114, 126, 140, 148, 150, 150, 147, 148, 148, 136, 118, 112, + 30, 20, 18, 32, 38, 44, 42, 46, 41, 42, 37, 52, 106, 107, 110, 89, + 83, 84, 83, 77, 73, 68, 60, 67, 37, 83, 79, 68, 71, 69, 80, 57, + 71, 46, 55, 16, 77, 87, 92, 68, 84, 69, 89, 61, 80, 75, 51, 83, + 103, 89, 93, 91, 92, 99, 88, 88, 93, 75, 36, 18, 81, 93, 88, 102, + 93, 95, 85, 91, 76, 84, 69, 49, 75, 89, 92, 92, 107, 91, 79, 89, + 77, 49, 25, 87, 111, 111, 106, 93, 91, 89, 88, 87, 89, 103, 44, 37, + 108, 116, 119, 112, 108, 106, 104, 104, 115, 97, 75, 51, 89, 104, 83, 81, + 95, 73, 73, 73, 84, 65, 53, 20, 76, 104, 77, 83, 65, 60, 75, 60, + 64, 64, 41, 17, 60, 76, 77, 95, 76, 73, 72, 67, 64, 68, 51, 24, + 57, 85, 88, 89, 71, 75, 73, 79, 77, 49, 36, 4, 87, 76, 75, 93, + 95, 77, 91, 103, 107, 80, 34, 46, 83, 88, 148, 213, 195, 134, 110, 122, + 140, 144, 155, 167, 166, 169, 173, 174, 165, 130, 114, 131, 136, 126, 116, 44, + 14, 10, 20, 25, 33, 26, 25, 29, 32, 29, 25, 68, 81, 67, 65, 57, + 61, 53, 61, 65, 53, 60, 51, 26, 4, 55, 80, 73, 69, 65, 65, 44, + 33, 44, 16, 92, 193, 208, 208, 138, 103, 85, 91, 77, 71, 91, 93, 96, + 77, 25, 17, 21, 20, 38, 42, 38, 33, 36, 26, 63, 97, 92, 97, 201, + 205, 201, 106, 93, 102, 119, 123, 131, 151, 157, 151, 135, 106, 51, 21, 12, + 17, 17, 13, 33, 69, 68, 60, 46, 63, 56, 56, 56, 45, 38, 46, 102, + 106, 96, 81, 93, 83, 89, 89, 77, 75, 91, 75, 60, 80, 95, 92, 80, + 73, 69, 69, 75, 69, 64, 22, 6, 51, 72, 64, 45, 48, 48, 51, 42, + 56, 49, 25, 16, 36, 79, 44, 53, 57, 68, 57, 73, 63, 45, 22, 4, + 34, 80, 49, 60, 49, 60, 55, 53, 51, 48, 56, 17, 5, 44, 32, 24, + 25, 38, 18, 20, 21, 17, 5, 38, 79, 68, 52, 68, 79, 63, 41, 44, + 52, 29, 13, 36, 72, 48, 65, 51, 30, 41, 61, 45, 56, 41, 24, 75, + 67, 64, 61, 79, 75, 60, 32, 59, 55, 33, 14, 52, 46, 67, 73, 63, + 56, 51, 55, 44, 38, 24, 20, 22, 49, 67, 42, 41, 28, 42, 30, 49, + 20, 17, 4, 5, 28, 68, 60, 36, 26, 26, 26, 29, 29, 24, 20, 14, + 56, 30, 49, 46, 37, 32, 21, 24, 38, 33, 8, 52, 72, 63, 46, 40, + 34, 37, 42, 28, 49, 32, 17, 26, 59, 51, 57, 41, 37, 9, 33, 33, + 36, 24, 4, 26, 67, 55, 24, 1, 0, 108, 83, 92, 67, 81, 84, 127, + 210, 222, 225, 225, 181, 120, 120, 128, 135, 131, 108, 126, 151, 158, 154, 146, + 135, 99, 28, 16, 14, 20, 28, 29, 37, 34, 18, 80, 87, 81, 75, 75, + 79, 83, 73, 68, 71, 68, 93, 187, 183, 162, 104, 76, 30, 26, 29, 41, + 48, 44, 55, 112, 103, 99, 100, 95, 97, 91, 210, 199, 169, 99, 99, 111, + 124, 136, 136, 148, 146, 148, 148, 144, 131, 115, 114, 29, 18, 17, 32, 45, + 38, 40, 46, 49, 45, 40, 51, 107, 112, 107, 84, 77, 84, 71, 75, 80, + 68, 61, 63, 26, 80, 75, 85, 91, 85, 84, 57, 64, 45, 56, 20, 75, + 89, 106, 81, 79, 76, 65, 71, 76, 77, 52, 88, 97, 84, 92, 92, 99, + 83, 80, 83, 84, 75, 41, 17, 73, 89, 81, 102, 104, 100, 88, 85, 77, + 79, 68, 45, 76, 83, 85, 87, 102, 107, 103, 102, 77, 41, 26, 77, 108, + 108, 103, 91, 87, 85, 97, 83, 91, 99, 75, 37, 96, 112, 106, 102, 88, + 100, 108, 114, 92, 87, 67, 52, 91, 104, 73, 79, 83, 76, 76, 93, 83, + 60, 55, 22, 69, 85, 88, 81, 68, 57, 55, 73, 72, 59, 41, 22, 75, + 80, 81, 103, 85, 80, 65, 76, 83, 72, 64, 25, 59, 88, 73, 69, 72, + 65, 60, 68, 80, 51, 36, 4, 75, 77, 72, 79, 80, 83, 65, 88, 81, + 61, 48, 45, 68, 99, 136, 212, 212, 154, 107, 111, 138, 144, 157, 167, 173, + 178, 173, 165, 161, 123, 127, 139, 134, 127, 115, 25, 13, 10, 21, 30, 29, + 25, 29, 34, 34, 33, 25, 68, 79, 75, 68, 72, 53, 71, 60, 65, 53, + 59, 56, 28, 4, 71, 55, 68, 97, 65, 64, 60, 34, 41, 13, 84, 181, + 205, 205, 126, 89, 81, 81, 72, 77, 95, 95, 97, 91, 22, 17, 12, 17, + 36, 44, 36, 29, 36, 29, 71, 106, 81, 104, 205, 206, 201, 106, 100, 106, + 108, 123, 135, 147, 158, 153, 138, 119, 46, 20, 17, 14, 18, 16, 33, 65, + 64, 55, 42, 67, 36, 52, 69, 41, 42, 48, 103, 97, 83, 69, 84, 87, + 96, 75, 68, 75, 91, 67, 57, 75, 100, 83, 71, 73, 59, 65, 56, 77, + 79, 24, 6, 49, 64, 72, 41, 46, 51, 38, 45, 40, 46, 25, 14, 53, + 75, 34, 49, 53, 56, 73, 75, 51, 53, 22, 4, 32, 76, 49, 46, 46, + 48, 44, 45, 69, 53, 53, 18, 4, 56, 34, 21, 26, 38, 20, 17, 17, + 13, 5, 55, 81, 64, 73, 83, 85, 69, 51, 49, 49, 29, 16, 34, 76, + 57, 60, 51, 29, 32, 42, 34, 53, 46, 17, 79, 59, 64, 53, 67, 56, + 37, 32, 65, 46, 32, 16, 52, 46, 64, 40, 45, 49, 46, 49, 48, 36, + 25, 18, 6, 40, 67, 60, 26, 24, 41, 25, 38, 41, 32, 5, 4, 22, + 67, 56, 26, 32, 18, 24, 22, 25, 17, 17, 10, 51, 63, 36, 34, 32, + 44, 30, 22, 33, 41, 14, 53, 60, 55, 41, 22, 22, 34, 52, 37, 37, + 18, 22, 34, 53, 63, 32, 18, 24, 18, 33, 18, 42, 25, 6, 34, 57, + 41, 29, 0, 0, 127, 92, 73, 65, 83, 88, 174, 214, 226, 220, 208, 154, + 115, 116, 134, 138, 131, 114, 142, 158, 158, 153, 146, 132, 76, 20, 13, 14, + 24, 29, 36, 34, 34, 21, 87, 85, 84, 71, 80, 85, 77, 69, 72, 76, + 71, 99, 185, 186, 170, 108, 77, 34, 26, 29, 45, 51, 45, 42, 108, 107, + 97, 107, 97, 99, 96, 212, 194, 178, 103, 102, 112, 124, 132, 136, 144, 148, + 148, 148, 135, 130, 112, 111, 30, 17, 16, 33, 48, 46, 42, 40, 48, 45, + 37, 64, 102, 115, 92, 91, 80, 83, 81, 81, 75, 76, 59, 59, 26, 85, + 76, 71, 72, 75, 80, 56, 63, 46, 52, 18, 75, 88, 95, 71, 76, 71, + 76, 64, 63, 73, 53, 81, 95, 99, 93, 97, 81, 84, 87, 85, 83, 72, + 37, 16, 69, 89, 80, 77, 92, 92, 84, 85, 80, 77, 64, 38, 71, 88, + 99, 89, 103, 89, 87, 77, 87, 37, 28, 68, 108, 103, 97, 88, 91, 93, + 85, 83, 89, 95, 69, 30, 72, 110, 115, 91, 102, 107, 104, 92, 96, 81, + 61, 59, 91, 100, 71, 77, 87, 76, 75, 63, 75, 76, 55, 25, 73, 85, + 84, 88, 80, 59, 59, 56, 68, 67, 42, 26, 72, 88, 71, 76, 84, 68, + 79, 81, 80, 72, 56, 26, 59, 73, 83, 68, 67, 64, 73, 72, 69, 53, + 37, 0, 93, 81, 69, 57, 83, 77, 89, 85, 80, 71, 42, 37, 67, 99, + 87, 213, 217, 181, 110, 110, 132, 143, 154, 165, 170, 170, 169, 171, 150, 124, + 132, 143, 135, 127, 115, 21, 13, 12, 20, 33, 30, 29, 36, 41, 34, 30, + 25, 57, 79, 72, 76, 53, 68, 61, 60, 67, 52, 56, 56, 28, 4, 67, + 65, 69, 67, 93, 81, 68, 34, 41, 12, 75, 170, 195, 228, 142, 92, 75, + 83, 71, 89, 96, 96, 102, 76, 22, 17, 10, 22, 30, 40, 38, 29, 33, + 25, 75, 92, 88, 115, 210, 213, 199, 97, 92, 103, 115, 122, 138, 146, 159, + 154, 139, 130, 48, 25, 8, 17, 22, 17, 28, 67, 63, 56, 61, 52, 48, + 52, 44, 53, 33, 40, 92, 95, 92, 83, 88, 69, 65, 79, 72, 83, 85, + 56, 60, 81, 97, 79, 65, 69, 65, 61, 77, 68, 61, 25, 9, 51, 61, + 61, 36, 57, 37, 48, 44, 46, 38, 26, 14, 55, 83, 36, 44, 59, 59, + 63, 65, 44, 55, 24, 4, 34, 75, 55, 57, 55, 48, 55, 73, 42, 46, + 49, 17, 4, 42, 29, 24, 30, 36, 32, 16, 13, 9, 6, 46, 76, 53, + 75, 73, 72, 67, 79, 73, 51, 25, 13, 44, 69, 37, 65, 44, 32, 36, + 44, 45, 56, 42, 18, 69, 68, 77, 55, 57, 52, 44, 29, 28, 42, 29, + 14, 33, 42, 61, 55, 52, 51, 41, 51, 46, 49, 22, 18, 4, 40, 76, + 56, 46, 22, 38, 32, 36, 20, 24, 4, 4, 22, 64, 59, 38, 40, 24, + 22, 22, 21, 22, 34, 10, 40, 44, 17, 26, 25, 20, 28, 26, 28, 41, + 24, 60, 71, 68, 53, 16, 44, 38, 42, 32, 40, 28, 20, 38, 46, 26, + 51, 24, 12, 22, 21, 21, 16, 9, 4, 34, 52, 46, 18, 0, 0, 77, + 104, 73, 76, 84, 114, 199, 221, 214, 217, 170, 128, 115, 131, 135, 138, 120, + 126, 155, 159, 157, 151, 142, 124, 40, 16, 12, 17, 24, 34, 37, 42, 36, + 20, 95, 84, 79, 73, 87, 77, 75, 72, 73, 69, 65, 120, 183, 182, 178, + 106, 73, 33, 28, 29, 44, 48, 44, 40, 107, 106, 102, 108, 103, 96, 93, + 217, 191, 189, 104, 100, 111, 120, 131, 138, 142, 144, 148, 143, 135, 128, 111, + 110, 26, 16, 16, 33, 53, 44, 46, 44, 55, 46, 37, 67, 107, 114, 91, + 83, 88, 91, 81, 81, 84, 72, 57, 57, 26, 77, 81, 75, 73, 59, 63, + 67, 60, 48, 51, 17, 73, 93, 104, 77, 79, 81, 60, 77, 67, 73, 49, + 87, 97, 95, 85, 84, 92, 91, 91, 88, 83, 46, 44, 18, 65, 81, 85, + 81, 83, 85, 80, 79, 84, 76, 68, 34, 83, 87, 95, 92, 95, 96, 91, + 97, 85, 37, 28, 64, 95, 102, 93, 77, 95, 95, 77, 87, 87, 83, 76, + 38, 71, 107, 116, 110, 88, 96, 80, 92, 88, 79, 42, 68, 83, 99, 81, + 83, 67, 61, 67, 59, 65, 76, 55, 29, 49, 75, 93, 65, 56, 65, 71, + 61, 65, 51, 42, 10, 67, 80, 76, 69, 71, 60, 72, 80, 72, 67, 57, + 32, 36, 67, 79, 83, 85, 83, 81, 84, 69, 46, 33, 0, 79, 72, 68, + 69, 72, 88, 87, 84, 59, 87, 48, 51, 42, 96, 80, 218, 221, 213, 111, + 108, 131, 147, 150, 154, 170, 171, 170, 170, 140, 128, 147, 146, 135, 126, 115, + 22, 13, 9, 24, 38, 29, 32, 36, 45, 38, 36, 28, 48, 76, 71, 69, + 68, 71, 71, 65, 63, 60, 56, 60, 26, 5, 63, 57, 53, 67, 103, 71, + 63, 34, 37, 8, 57, 114, 182, 228, 147, 88, 84, 87, 88, 96, 92, 99, + 92, 48, 21, 18, 12, 21, 32, 40, 38, 36, 29, 17, 68, 89, 83, 108, + 210, 204, 202, 102, 95, 106, 119, 128, 138, 146, 158, 155, 148, 135, 49, 24, + 6, 12, 20, 14, 17, 59, 56, 63, 57, 55, 57, 51, 44, 49, 33, 9, + 93, 96, 76, 65, 71, 76, 79, 79, 80, 85, 88, 56, 63, 88, 77, 61, + 84, 61, 57, 63, 64, 68, 60, 28, 9, 41, 65, 69, 42, 40, 44, 42, + 41, 53, 55, 29, 12, 68, 75, 42, 52, 59, 56, 57, 59, 42, 41, 29, + 2, 37, 64, 55, 52, 49, 72, 72, 48, 41, 40, 53, 16, 4, 57, 33, + 21, 18, 17, 34, 13, 13, 9, 6, 38, 71, 64, 67, 65, 81, 63, 59, + 55, 46, 33, 12, 41, 71, 59, 59, 34, 32, 42, 44, 37, 61, 44, 21, + 67, 59, 79, 45, 45, 72, 38, 28, 36, 25, 33, 14, 24, 49, 37, 51, + 75, 63, 46, 45, 55, 45, 25, 17, 28, 40, 76, 44, 28, 33, 36, 22, + 10, 10, 9, 5, 5, 17, 37, 53, 34, 29, 33, 29, 25, 22, 24, 12, + 9, 25, 24, 22, 21, 25, 21, 33, 26, 30, 14, 17, 65, 68, 65, 60, + 24, 45, 26, 25, 48, 20, 28, 22, 44, 29, 17, 18, 10, 21, 5, 6, + 2, 16, 5, 5, 20, 51, 10, 12, 2, 0, 104, 79, 64, 83, 88, 138, + 198, 218, 212, 204, 135, 131, 127, 132, 138, 138, 114, 144, 162, 161, 158, 150, + 140, 116, 32, 16, 13, 18, 24, 30, 26, 37, 36, 18, 88, 80, 80, 81, + 73, 73, 72, 68, 69, 77, 65, 130, 183, 183, 166, 102, 68, 33, 26, 28, + 46, 55, 49, 46, 95, 116, 95, 102, 102, 92, 89, 220, 193, 198, 104, 100, + 111, 122, 130, 140, 144, 146, 146, 131, 132, 130, 115, 115, 25, 14, 13, 36, + 49, 40, 45, 41, 60, 46, 36, 68, 100, 100, 87, 56, 57, 75, 79, 61, + 61, 65, 63, 67, 40, 89, 80, 75, 60, 65, 57, 65, 56, 45, 48, 14, + 73, 81, 95, 67, 77, 80, 72, 79, 79, 69, 40, 81, 97, 106, 102, 102, + 95, 83, 73, 81, 59, 46, 41, 18, 52, 71, 75, 55, 65, 84, 75, 59, + 65, 73, 60, 36, 69, 80, 95, 97, 80, 71, 68, 67, 53, 45, 25, 59, + 103, 106, 100, 96, 87, 85, 84, 87, 80, 84, 83, 42, 56, 102, 112, 104, + 81, 103, 97, 88, 83, 75, 42, 56, 81, 99, 83, 77, 64, 65, 55, 60, + 61, 64, 56, 26, 48, 56, 55, 55, 55, 53, 57, 57, 64, 64, 41, 12, + 64, 80, 81, 71, 71, 68, 61, 68, 59, 59, 56, 34, 42, 60, 84, 83, + 92, 81, 73, 79, 46, 48, 38, 2, 80, 73, 65, 69, 56, 75, 79, 81, + 69, 77, 34, 46, 33, 89, 85, 221, 226, 214, 111, 106, 131, 146, 150, 153, + 163, 170, 167, 158, 128, 140, 146, 146, 139, 132, 118, 18, 13, 10, 21, 33, + 30, 32, 33, 41, 45, 37, 32, 37, 73, 77, 77, 63, 67, 69, 63, 63, + 59, 52, 48, 26, 6, 55, 59, 69, 67, 61, 57, 51, 45, 40, 8, 41, + 83, 139, 136, 95, 85, 73, 63, 79, 77, 83, 79, 45, 22, 20, 17, 14, + 17, 33, 37, 37, 34, 32, 18, 73, 88, 73, 69, 204, 216, 213, 104, 93, + 106, 120, 130, 139, 147, 161, 155, 135, 124, 46, 24, 9, 12, 20, 16, 16, + 42, 59, 55, 57, 55, 56, 53, 45, 53, 30, 29, 96, 91, 67, 73, 89, + 91, 85, 89, 87, 89, 83, 55, 69, 97, 75, 76, 77, 63, 65, 75, 67, + 64, 55, 28, 8, 48, 61, 65, 41, 36, 38, 34, 52, 57, 48, 28, 13, + 44, 71, 40, 33, 37, 38, 40, 38, 42, 49, 32, 5, 37, 36, 76, 69, + 72, 75, 76, 41, 49, 45, 49, 20, 6, 42, 22, 20, 14, 22, 20, 30, + 16, 12, 5, 33, 68, 63, 64, 81, 53, 57, 51, 42, 46, 28, 14, 41, + 68, 44, 38, 42, 67, 46, 63, 53, 48, 38, 20, 59, 57, 56, 57, 59, + 52, 49, 44, 30, 42, 37, 18, 21, 36, 48, 40, 28, 24, 24, 34, 29, + 26, 24, 18, 29, 60, 76, 46, 20, 4, 4, 14, 13, 2, 4, 9, 6, + 9, 24, 29, 26, 18, 20, 16, 16, 17, 21, 18, 17, 25, 25, 38, 25, + 29, 18, 18, 21, 24, 17, 22, 37, 60, 71, 45, 25, 21, 20, 22, 17, + 13, 14, 18, 20, 18, 18, 20, 18, 10, 32, 28, 33, 26, 13, 24, 26, + 34, 34, 28, 16, 10, 77, 79, 57, 80, 91, 147, 201, 212, 213, 151, 134, + 122, 132, 136, 142, 135, 119, 154, 165, 162, 157, 148, 136, 103, 25, 14, 12, + 17, 22, 34, 36, 44, 34, 22, 89, 79, 73, 80, 72, 69, 67, 68, 71, + 67, 69, 140, 178, 178, 163, 104, 65, 33, 28, 29, 46, 52, 49, 41, 83, + 114, 107, 91, 102, 93, 88, 220, 199, 206, 106, 103, 111, 124, 138, 136, 140, + 139, 132, 124, 130, 127, 116, 116, 22, 14, 12, 36, 44, 45, 40, 41, 38, + 56, 56, 61, 71, 73, 67, 63, 67, 61, 63, 65, 85, 76, 64, 57, 28, + 73, 80, 60, 53, 57, 56, 53, 51, 56, 53, 21, 73, 91, 87, 67, 64, + 63, 57, 67, 65, 64, 45, 63, 80, 96, 63, 68, 59, 57, 51, 44, 36, + 32, 45, 40, 44, 45, 44, 55, 40, 42, 41, 41, 42, 40, 34, 30, 51, + 51, 53, 46, 40, 40, 44, 42, 36, 36, 49, 51, 83, 93, 87, 72, 81, + 85, 88, 75, 75, 88, 81, 72, 52, 60, 100, 91, 69, 80, 80, 81, 80, + 68, 46, 52, 75, 76, 61, 60, 61, 68, 68, 59, 56, 57, 53, 52, 45, + 53, 53, 53, 45, 51, 44, 61, 53, 59, 42, 21, 69, 64, 65, 63, 61, + 60, 60, 60, 56, 56, 46, 53, 29, 33, 36, 40, 37, 40, 38, 38, 38, + 44, 37, 2, 28, 77, 72, 34, 49, 65, 69, 61, 56, 69, 61, 51, 38, + 60, 64, 212, 228, 217, 106, 103, 126, 140, 144, 144, 150, 162, 163, 158, 135, + 151, 151, 150, 142, 132, 118, 17, 12, 12, 18, 29, 33, 38, 37, 34, 36, + 40, 38, 30, 36, 53, 63, 57, 57, 55, 57, 59, 59, 52, 53, 28, 6, + 51, 63, 64, 49, 52, 42, 41, 41, 40, 16, 28, 41, 64, 83, 59, 29, + 20, 16, 14, 16, 16, 16, 16, 18, 17, 10, 10, 14, 34, 34, 36, 26, + 32, 20, 67, 75, 91, 69, 185, 214, 210, 102, 95, 110, 123, 134, 139, 148, + 161, 155, 136, 123, 42, 26, 25, 10, 20, 18, 16, 20, 36, 42, 41, 52, + 44, 53, 45, 42, 37, 38, 93, 83, 87, 84, 79, 80, 75, 76, 81, 77, + 63, 53, 57, 79, 87, 85, 77, 81, 75, 67, 42, 38, 37, 26, 9, 38, + 48, 55, 64, 75, 53, 63, 52, 40, 25, 30, 12, 42, 64, 63, 55, 53, + 51, 49, 42, 45, 40, 33, 5, 28, 21, 22, 28, 38, 41, 25, 28, 41, + 21, 25, 18, 6, 44, 22, 28, 26, 26, 20, 18, 18, 10, 10, 33, 29, + 24, 29, 20, 38, 46, 52, 46, 38, 25, 17, 21, 48, 38, 48, 34, 41, + 40, 45, 38, 33, 40, 12, 42, 55, 53, 34, 38, 42, 42, 33, 33, 36, + 32, 25, 30, 30, 28, 22, 24, 24, 22, 29, 22, 21, 20, 17, 2, 55, + 1, 22, 1, 20, 2, 4, 17, 16, 4, 5, 10, 10, 9, 8, 9, 9, + 9, 9, 12, 12, 10, 13, 10, 14, 18, 13, 20, 14, 13, 12, 14, 16, + 17, 14, 28, 41, 22, 37, 17, 21, 60, 65, 60, 29, 51, 48, 18, 17, + 12, 14, 18, 16, 17, 13, 9, 8, 12, 16, 37, 16, 14, 53, 57, 68, + 52, 53, 56, 83, 88, 165, 213, 157, 151, 144, 112, 142, 131, 138, 139, 131, + 131, 161, 165, 161, 155, 147, 132, 87, 20, 14, 13, 20, 26, 36, 36, 37, + 34, 13, 84, 79, 69, 69, 55, 61, 67, 60, 72, 69, 68, 154, 182, 177, + 163, 97, 61, 33, 29, 30, 48, 51, 56, 52, 59, 85, 106, 99, 97, 91, + 87, 218, 212, 214, 107, 102, 108, 123, 124, 124, 127, 126, 131, 134, 132, 131, + 122, 119, 21, 13, 13, 32, 36, 38, 44, 45, 41, 46, 44, 46, 55, 52, + 48, 53, 53, 53, 56, 55, 56, 57, 57, 56, 53, 59, 56, 55, 53, 53, + 55, 55, 51, 51, 45, 22, 67, 91, 60, 53, 49, 49, 52, 49, 48, 49, + 41, 48, 49, 46, 46, 44, 41, 40, 41, 38, 37, 33, 28, 18, 18, 17, + 18, 17, 14, 14, 14, 12, 13, 10, 10, 12, 10, 16, 17, 17, 13, 14, + 21, 32, 28, 30, 28, 41, 61, 60, 71, 80, 69, 65, 71, 73, 72, 71, + 72, 61, 56, 64, 57, 53, 46, 38, 38, 38, 45, 40, 32, 38, 41, 49, + 42, 42, 61, 60, 59, 42, 42, 36, 32, 38, 48, 53, 53, 53, 40, 32, + 34, 44, 48, 46, 41, 18, 34, 37, 32, 38, 37, 38, 37, 40, 40, 40, + 42, 44, 42, 48, 32, 33, 28, 18, 14, 13, 17, 20, 16, 0, 13, 14, + 21, 18, 21, 25, 29, 30, 38, 46, 65, 53, 51, 51, 76, 210, 229, 218, + 106, 100, 107, 118, 134, 143, 153, 150, 155, 151, 136, 153, 151, 148, 140, 128, + 116, 16, 12, 9, 14, 17, 25, 24, 28, 32, 33, 34, 30, 32, 41, 42, + 44, 41, 44, 44, 45, 44, 48, 49, 44, 26, 6, 56, 60, 41, 30, 32, + 28, 22, 33, 33, 17, 14, 16, 25, 20, 17, 16, 14, 13, 13, 17, 18, + 13, 14, 14, 16, 17, 18, 18, 18, 20, 20, 21, 29, 18, 29, 34, 41, + 73, 171, 217, 208, 103, 99, 110, 119, 132, 142, 150, 163, 154, 135, 120, 41, + 29, 8, 14, 14, 17, 16, 20, 20, 20, 18, 18, 18, 21, 20, 18, 30, + 25, 33, 67, 67, 53, 53, 60, 63, 53, 52, 53, 51, 45, 48, 46, 48, + 49, 57, 42, 44, 34, 32, 24, 36, 26, 29, 29, 29, 14, 29, 34, 22, + 30, 22, 21, 37, 28, 29, 28, 32, 29, 26, 25, 22, 22, 21, 36, 28, + 26, 2, 6, 6, 10, 10, 9, 10, 13, 10, 12, 18, 29, 18, 10, 18, + 17, 12, 16, 18, 14, 14, 34, 17, 22, 17, 21, 26, 22, 20, 18, 20, + 25, 22, 21, 21, 24, 21, 22, 22, 24, 22, 24, 22, 25, 24, 24, 20, + 13, 16, 25, 17, 17, 16, 25, 16, 17, 17, 20, 21, 16, 14, 17, 16, + 16, 16, 14, 14, 14, 14, 13, 12, 12, 1, 32, 32, 32, 29, 45, 41, + 41, 41, 46, 48, 49, 49, 59, 63, 67, 71, 81, 107, 127, 148, 162, 170, + 226, 224, 221, 208, 202, 202, 198, 202, 187, 185, 175, 158, 73, 26, 21, 17, + 18, 14, 68, 60, 153, 183, 162, 159, 158, 97, 80, 81, 59, 48, 46, 55, + 85, 110, 143, 161, 153, 115, 75, 42, 13, 8, 6, 87, 80, 83, 99, 107, + 179, 120, 139, 111, 112, 111, 128, 127, 138, 144, 138, 138, 165, 167, 158, 151, + 139, 126, 45, 17, 12, 14, 24, 28, 20, 32, 32, 28, 18, 40, 48, 45, + 46, 46, 46, 48, 49, 73, 63, 51, 136, 174, 175, 162, 97, 55, 32, 28, + 33, 46, 48, 49, 51, 55, 60, 57, 61, 64, 96, 72, 222, 217, 217, 106, + 99, 107, 122, 116, 116, 115, 118, 120, 132, 131, 134, 122, 116, 18, 10, 10, + 20, 18, 21, 22, 22, 18, 21, 26, 29, 34, 44, 44, 46, 49, 49, 48, + 53, 57, 60, 64, 57, 52, 64, 71, 60, 72, 79, 89, 123, 107, 52, 49, + 57, 51, 46, 45, 44, 42, 52, 44, 42, 33, 29, 30, 32, 26, 37, 34, + 36, 34, 40, 30, 36, 32, 61, 81, 108, 110, 106, 115, 102, 107, 97, 111, + 108, 93, 73, 77, 75, 80, 95, 95, 81, 72, 57, 41, 30, 26, 20, 16, + 14, 13, 12, 10, 10, 12, 13, 10, 12, 14, 14, 13, 13, 18, 24, 72, + 77, 83, 88, 93, 89, 61, 61, 40, 96, 95, 107, 81, 41, 38, 55, 33, + 34, 72, 79, 96, 84, 89, 97, 103, 99, 87, 67, 53, 44, 29, 30, 40, + 20, 10, 9, 9, 10, 8, 8, 9, 9, 6, 8, 8, 8, 8, 12, 29, + 34, 57, 72, 67, 68, 59, 33, 29, 0, 57, 91, 79, 60, 81, 60, 67, + 68, 49, 38, 37, 41, 42, 46, 65, 199, 216, 206, 95, 91, 102, 103, 97, + 111, 128, 143, 150, 155, 132, 147, 154, 150, 138, 131, 115, 14, 10, 9, 8, + 8, 8, 8, 8, 8, 8, 13, 12, 8, 9, 10, 21, 22, 25, 12, 13, + 13, 22, 14, 30, 10, 6, 61, 24, 18, 18, 20, 17, 21, 14, 13, 13, + 13, 16, 14, 12, 17, 16, 9, 9, 10, 10, 10, 12, 10, 10, 10, 10, + 12, 13, 18, 26, 30, 33, 30, 13, 61, 80, 79, 71, 171, 204, 193, 106, + 99, 111, 123, 131, 139, 153, 162, 155, 134, 104, 37, 32, 6, 12, 9, 12, + 4, 4, 4, 2, 2, 4, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 4, 4, 4, 5, 6, 6, 8, 8, 10, 10, 13, 13, 13, 17, 18, 18, + 24, 48, 53, 45, 38, 44, 30, 28, 26, 25, 22, 24, 29, 36, 60, 67, + 77, 69, 64, 60, 57, 63, 67, 57, 46, 26, 29, 34, 14, 32, 75, 83, + 59, 51, 57, 32, 22, 16, 17, 13, 14, 12, 18, 29, 25, 21, 25, 26, + 21, 17, 24, 28, 30, 38, 33, 34, 30, 33, 28, 24, 17, 14, 12, 12, + 9, 10, 9, 10, 9, 10, 10, 10, 9, 10, 10, 38, 10, 8, 8, 8, + 6, 5, 5, 5, 4, 4, 2, 2, 2, 2, 1, 1, 0, 18, 1, 0, + 0, 1, 0, 2, 40, 37, 56, 60, 84, 107, 144, 148, 163, 171, 165, 151, + 140, 132, 119, 120, 130, 116, 110, 118, 123, 139, 153, 163, 175, 185, 182, 179, + 177, 178, 174, 173, 166, 159, 146, 147, 138, 20, 14, 12, 67, 33, 130, 189, + 195, 197, 194, 193, 198, 190, 187, 195, 199, 189, 195, 195, 204, 201, 189, 197, + 194, 136, 55, 48, 12, 9, 112, 114, 122, 116, 165, 159, 161, 157, 127, 146, + 103, 103, 108, 111, 111, 130, 138, 163, 163, 161, 147, 136, 122, 42, 16, 13, + 22, 26, 38, 37, 45, 32, 38, 40, 42, 55, 59, 61, 68, 73, 79, 71, + 59, 76, 56, 128, 171, 174, 123, 95, 52, 32, 28, 42, 48, 46, 42, 45, + 53, 59, 63, 69, 84, 88, 88, 220, 218, 218, 106, 99, 107, 115, 112, 122, + 128, 131, 131, 130, 132, 139, 124, 123, 22, 13, 10, 21, 32, 42, 42, 49, + 64, 153, 162, 177, 183, 183, 178, 189, 197, 202, 197, 197, 193, 190, 194, 195, + 194, 187, 189, 186, 183, 179, 185, 179, 183, 127, 99, 57, 67, 72, 102, 143, + 169, 182, 181, 169, 162, 151, 153, 154, 143, 134, 116, 104, 114, 111, 106, 114, + 118, 93, 132, 159, 178, 186, 193, 187, 179, 178, 174, 142, 114, 87, 99, 99, + 88, 103, 97, 107, 93, 108, 93, 89, 77, 52, 36, 21, 77, 96, 92, 85, + 85, 89, 93, 100, 89, 88, 80, 83, 85, 79, 76, 92, 92, 92, 92, 88, + 80, 65, 33, 100, 114, 87, 85, 114, 108, 104, 95, 84, 110, 138, 151, 159, + 151, 155, 155, 151, 143, 128, 104, 85, 79, 51, 44, 17, 33, 95, 104, 80, + 83, 69, 95, 81, 83, 76, 73, 65, 76, 91, 75, 71, 65, 75, 60, 63, + 71, 55, 32, 1, 71, 89, 96, 100, 72, 93, 89, 75, 81, 67, 51, 56, + 75, 75, 64, 218, 229, 221, 106, 102, 112, 110, 111, 110, 114, 112, 119, 118, + 136, 154, 155, 150, 136, 127, 110, 16, 12, 10, 18, 22, 22, 28, 18, 18, + 16, 30, 9, 12, 33, 76, 72, 65, 65, 65, 40, 22, 21, 16, 20, 20, + 18, 40, 59, 64, 65, 69, 79, 72, 65, 56, 64, 75, 84, 72, 65, 53, + 60, 51, 56, 29, 29, 25, 21, 22, 29, 37, 36, 36, 41, 51, 53, 48, + 51, 34, 14, 73, 73, 81, 77, 183, 214, 179, 104, 100, 110, 124, 132, 142, + 151, 165, 157, 157, 123, 44, 33, 6, 6, 17, 17, 32, 65, 71, 72, 72, + 71, 80, 76, 73, 71, 38, 24, 67, 84, 96, 88, 85, 89, 97, 93, 87, + 80, 84, 84, 97, 116, 104, 104, 104, 87, 79, 83, 96, 163, 174, 186, 170, + 146, 103, 67, 57, 57, 64, 76, 116, 136, 157, 143, 146, 140, 132, 140, 119, + 118, 111, 103, 69, 44, 36, 20, 10, 71, 85, 108, 111, 85, 89, 65, 59, + 64, 65, 55, 52, 72, 123, 136, 147, 148, 147, 151, 153, 144, 151, 161, 175, + 182, 181, 165, 150, 100, 81, 41, 41, 34, 33, 21, 9, 26, 65, 79, 57, + 65, 64, 55, 51, 41, 24, 9, 28, 71, 83, 71, 69, 85, 84, 68, 99, + 99, 99, 69, 76, 111, 119, 150, 150, 146, 154, 142, 134, 124, 77, 45, 42, + 65, 118, 155, 167, 182, 193, 193, 193, 197, 199, 190, 175, 187, 174, 159, 157, + 159, 148, 143, 144, 146, 142, 143, 139, 153, 150, 154, 179, 179, 163, 150, 161, + 147, 139, 132, 147, 134, 110, 115, 96, 48, 166, 212, 202, 218, 178, 218, 174, + 214, 204, 225, 206, 210, 195, 205, 201, 201, 195, 201, 198, 146, 64, 67, 61, + 61, 126, 136, 115, 135, 194, 195, 229, 189, 116, 104, 108, 123, 128, 135, 123, + 131, 147, 166, 165, 150, 142, 136, 122, 40, 17, 13, 38, 38, 53, 60, 63, + 65, 68, 85, 91, 99, 95, 103, 103, 106, 104, 106, 87, 76, 49, 79, 135, + 169, 110, 79, 38, 34, 33, 46, 63, 63, 61, 55, 56, 92, 106, 103, 103, + 91, 87, 225, 220, 218, 106, 99, 108, 118, 130, 135, 134, 135, 134, 134, 130, + 136, 124, 123, 22, 10, 10, 26, 45, 55, 122, 69, 128, 165, 185, 190, 190, + 193, 198, 204, 209, 210, 214, 222, 225, 225, 229, 228, 229, 226, 233, 224, 232, + 236, 234, 228, 222, 224, 216, 218, 217, 209, 209, 212, 208, 210, 202, 201, 190, + 186, 183, 183, 177, 167, 157, 142, 139, 97, 99, 127, 153, 171, 187, 198, 208, + 209, 206, 209, 206, 205, 202, 197, 190, 171, 122, 103, 89, 79, 81, 85, 91, + 97, 97, 97, 95, 71, 48, 22, 95, 88, 102, 95, 97, 96, 83, 81, 84, + 91, 91, 65, 63, 102, 107, 114, 114, 108, 88, 81, 93, 64, 36, 108, 108, + 108, 88, 119, 87, 96, 111, 130, 173, 202, 213, 210, 208, 206, 199, 194, 189, + 178, 174, 157, 144, 81, 44, 22, 93, 93, 76, 76, 84, 89, 93, 77, 76, + 87, 93, 83, 61, 81, 79, 72, 71, 68, 68, 69, 69, 63, 36, 0, 57, + 84, 85, 80, 65, 61, 76, 73, 60, 69, 76, 32, 65, 89, 68, 226, 234, + 221, 104, 96, 107, 123, 130, 134, 138, 138, 135, 136, 140, 155, 153, 144, 136, + 130, 116, 13, 12, 13, 18, 12, 20, 32, 29, 26, 17, 12, 10, 17, 61, + 84, 89, 84, 89, 81, 73, 68, 76, 73, 61, 65, 75, 79, 76, 79, 75, + 81, 88, 91, 68, 76, 76, 95, 115, 108, 100, 119, 120, 120, 75, 63, 59, + 51, 46, 45, 51, 46, 37, 24, 29, 30, 22, 18, 17, 30, 18, 73, 83, + 80, 75, 212, 217, 186, 100, 97, 107, 123, 134, 140, 151, 163, 157, 140, 128, + 45, 45, 49, 51, 52, 77, 72, 80, 83, 83, 79, 87, 64, 68, 67, 67, + 71, 30, 91, 84, 87, 99, 91, 126, 148, 163, 167, 170, 170, 174, 182, 189, + 189, 182, 183, 181, 181, 181, 183, 190, 190, 191, 189, 181, 171, 170, 144, 138, + 154, 139, 154, 177, 182, 195, 191, 185, 183, 183, 170, 171, 177, 173, 150, 69, + 32, 30, 14, 83, 102, 87, 107, 112, 93, 108, 104, 81, 102, 120, 159, 158, + 179, 183, 191, 185, 186, 186, 190, 194, 193, 197, 205, 205, 206, 204, 202, 195, + 175, 154, 102, 60, 49, 22, 6, 68, 77, 60, 71, 77, 61, 71, 60, 51, + 18, 14, 80, 167, 178, 181, 175, 181, 189, 198, 206, 201, 195, 198, 194, 195, + 194, 195, 177, 191, 193, 185, 148, 170, 136, 61, 46, 95, 150, 177, 185, 191, + 195, 199, 204, 201, 204, 201, 174, 202, 197, 155, 104, 95, 146, 167, 167, 163, + 150, 157, 153, 142, 120, 119, 106, 114, 112, 104, 147, 150, 95, 148, 157, 118, + 110, 106, 53, 34, 91, 155, 187, 143, 124, 97, 102, 108, 108, 136, 178, 183, + 183, 191, 171, 175, 187, 191, 111, 76, 65, 87, 102, 114, 108, 108, 116, 140, + 177, 202, 237, 208, 122, 103, 120, 130, 136, 147, 153, 158, 162, 161, 153, 151, + 142, 138, 122, 36, 16, 14, 34, 49, 53, 75, 67, 79, 89, 83, 87, 92, + 97, 100, 88, 104, 95, 96, 92, 76, 65, 68, 80, 151, 96, 63, 42, 36, + 30, 57, 56, 55, 52, 42, 84, 108, 104, 96, 93, 87, 85, 232, 224, 220, + 100, 97, 114, 122, 135, 132, 138, 140, 138, 132, 130, 134, 123, 120, 22, 10, + 12, 25, 40, 110, 49, 64, 76, 111, 169, 178, 185, 194, 197, 201, 205, 210, + 216, 218, 218, 225, 225, 228, 229, 229, 232, 226, 234, 233, 233, 228, 221, 213, + 208, 210, 210, 216, 217, 212, 208, 209, 202, 187, 189, 175, 166, 178, 167, 167, + 122, 87, 122, 139, 163, 183, 198, 199, 195, 190, 202, 209, 208, 210, 210, 210, + 206, 205, 201, 195, 190, 171, 147, 104, 81, 75, 81, 80, 79, 84, 81, 85, + 53, 29, 97, 91, 100, 91, 83, 72, 68, 69, 69, 68, 71, 52, 76, 114, + 95, 79, 111, 111, 102, 73, 71, 61, 37, 114, 112, 120, 111, 120, 126, 115, + 142, 201, 218, 226, 224, 213, 204, 194, 181, 155, 140, 116, 93, 73, 64, 132, + 55, 29, 100, 88, 92, 100, 95, 91, 83, 73, 85, 77, 65, 52, 84, 85, + 81, 59, 60, 73, 67, 59, 73, 46, 33, 0, 65, 61, 68, 69, 76, 79, + 85, 95, 88, 76, 79, 40, 63, 84, 61, 233, 236, 232, 107, 97, 110, 130, + 138, 144, 151, 151, 151, 154, 151, 148, 144, 142, 140, 132, 122, 17, 12, 14, + 13, 21, 12, 8, 18, 17, 21, 9, 12, 17, 65, 88, 91, 87, 83, 88, + 77, 81, 85, 100, 87, 67, 65, 79, 123, 158, 165, 177, 186, 197, 198, 193, + 198, 206, 212, 209, 212, 221, 221, 212, 206, 210, 189, 195, 195, 199, 190, 157, + 67, 28, 20, 24, 18, 18, 12, 32, 21, 65, 73, 83, 89, 218, 224, 213, + 96, 93, 107, 122, 132, 142, 151, 162, 162, 155, 169, 87, 76, 71, 71, 72, + 73, 73, 91, 92, 99, 77, 79, 75, 92, 76, 71, 67, 69, 59, 87, 79, + 68, 100, 173, 186, 187, 170, 183, 194, 189, 195, 185, 183, 198, 183, 197, 198, + 190, 185, 183, 177, 178, 181, 185, 193, 181, 171, 131, 138, 178, 193, 193, 190, + 185, 197, 183, 169, 134, 138, 122, 112, 122, 107, 81, 26, 26, 17, 67, 73, + 93, 77, 81, 100, 80, 76, 103, 146, 153, 174, 178, 179, 177, 170, 178, 182, + 189, 183, 181, 177, 171, 174, 179, 183, 194, 199, 201, 201, 198, 187, 123, 53, + 30, 8, 79, 75, 61, 56, 51, 46, 52, 71, 61, 29, 22, 115, 177, 181, + 173, 189, 202, 201, 201, 204, 204, 205, 198, 189, 183, 186, 179, 174, 166, 151, + 158, 148, 146, 122, 68, 53, 118, 154, 175, 183, 189, 195, 205, 205, 165, 165, + 147, 136, 139, 134, 112, 64, 68, 89, 162, 167, 151, 142, 130, 131, 127, 127, + 123, 119, 124, 126, 132, 132, 140, 142, 142, 144, 106, 96, 97, 111, 46, 57, + 72, 81, 77, 75, 72, 72, 73, 77, 76, 79, 79, 83, 87, 89, 91, 84, + 80, 75, 60, 88, 22, 18, 13, 100, 102, 119, 130, 193, 208, 199, 190, 139, + 107, 115, 134, 155, 158, 158, 162, 163, 159, 153, 147, 140, 138, 124, 34, 16, + 14, 37, 55, 55, 73, 75, 85, 65, 100, 104, 89, 87, 93, 85, 96, 96, + 96, 96, 79, 64, 37, 71, 147, 96, 63, 38, 33, 33, 57, 60, 52, 52, + 49, 95, 108, 102, 92, 89, 85, 85, 237, 228, 222, 108, 97, 114, 124, 132, + 134, 142, 139, 134, 127, 127, 131, 124, 119, 20, 10, 12, 22, 44, 60, 59, + 67, 119, 143, 174, 173, 130, 161, 138, 143, 142, 138, 134, 134, 132, 130, 126, + 126, 122, 120, 119, 127, 122, 116, 116, 118, 110, 107, 110, 110, 163, 178, 210, + 183, 174, 170, 154, 131, 108, 102, 102, 103, 107, 102, 99, 115, 118, 170, 197, + 198, 199, 205, 183, 167, 174, 171, 159, 148, 139, 143, 142, 144, 146, 167, 182, + 182, 186, 114, 92, 64, 79, 72, 49, 61, 71, 83, 60, 26, 73, 92, 104, + 83, 67, 76, 81, 69, 64, 59, 77, 48, 71, 116, 111, 84, 88, 102, 79, + 79, 76, 60, 48, 119, 123, 103, 115, 122, 127, 135, 205, 228, 233, 222, 213, + 185, 135, 108, 93, 87, 80, 76, 64, 42, 44, 63, 48, 17, 67, 85, 83, + 81, 71, 63, 56, 63, 61, 83, 67, 40, 77, 79, 73, 60, 72, 67, 65, + 63, 76, 49, 29, 0, 64, 72, 76, 72, 73, 65, 65, 75, 79, 81, 55, + 21, 69, 97, 49, 230, 237, 233, 110, 100, 108, 135, 142, 148, 148, 157, 157, + 161, 157, 158, 154, 144, 138, 134, 122, 13, 8, 9, 13, 26, 14, 5, 18, + 6, 44, 9, 10, 12, 57, 87, 85, 85, 89, 88, 80, 85, 76, 75, 60, + 42, 84, 92, 84, 151, 178, 189, 198, 201, 205, 209, 212, 214, 218, 221, 226, + 226, 225, 224, 222, 220, 222, 221, 218, 217, 212, 185, 79, 30, 26, 17, 34, + 13, 18, 32, 16, 45, 63, 80, 72, 226, 230, 224, 100, 93, 107, 122, 132, + 142, 151, 162, 165, 161, 136, 170, 119, 124, 179, 195, 198, 199, 198, 199, 198, + 195, 193, 197, 191, 185, 175, 110, 68, 72, 71, 48, 91, 103, 110, 183, 197, + 178, 194, 195, 198, 169, 157, 132, 144, 163, 185, 182, 182, 165, 167, 147, 158, + 155, 151, 150, 146, 130, 114, 163, 193, 195, 195, 189, 185, 155, 138, 111, 104, + 106, 100, 102, 99, 110, 37, 28, 25, 16, 77, 77, 95, 104, 73, 83, 96, + 72, 106, 143, 162, 183, 187, 169, 157, 134, 132, 132, 139, 134, 134, 126, 123, + 120, 127, 128, 144, 153, 154, 165, 175, 187, 169, 81, 42, 12, 49, 80, 61, + 51, 53, 51, 59, 60, 65, 28, 18, 107, 158, 183, 195, 195, 229, 193, 197, + 197, 197, 190, 179, 175, 187, 178, 171, 167, 103, 88, 84, 79, 87, 77, 71, + 63, 114, 161, 175, 187, 202, 171, 162, 143, 120, 126, 118, 115, 119, 110, 114, + 63, 48, 77, 99, 162, 161, 142, 155, 131, 127, 114, 131, 128, 132, 132, 131, + 131, 138, 139, 142, 132, 100, 88, 91, 108, 55, 60, 64, 67, 64, 71, 79, + 81, 77, 71, 76, 68, 80, 73, 76, 75, 77, 72, 69, 88, 77, 16, 12, + 12, 46, 84, 93, 110, 118, 191, 209, 232, 190, 119, 104, 126, 140, 154, 162, + 158, 159, 159, 161, 154, 150, 143, 136, 118, 29, 14, 14, 34, 51, 63, 71, + 76, 88, 69, 100, 100, 84, 92, 83, 85, 91, 107, 104, 87, 73, 67, 40, + 68, 136, 97, 85, 61, 40, 34, 53, 49, 52, 40, 40, 103, 112, 96, 99, + 92, 84, 80, 237, 228, 221, 107, 99, 112, 124, 130, 136, 136, 130, 127, 126, + 127, 126, 122, 115, 20, 10, 9, 22, 38, 44, 61, 42, 77, 110, 134, 108, + 142, 118, 107, 107, 110, 110, 99, 107, 111, 108, 100, 100, 100, 103, 100, 100, + 97, 100, 97, 97, 97, 96, 96, 97, 100, 103, 103, 99, 96, 95, 95, 95, + 96, 97, 100, 103, 106, 110, 112, 118, 118, 187, 195, 195, 198, 182, 150, 124, + 111, 106, 107, 104, 102, 106, 108, 108, 111, 114, 131, 132, 159, 155, 93, 64, + 87, 60, 73, 75, 69, 76, 53, 28, 89, 102, 97, 83, 84, 77, 102, 71, + 60, 56, 72, 45, 79, 116, 106, 84, 72, 75, 68, 75, 73, 60, 41, 110, + 120, 111, 135, 128, 136, 202, 226, 237, 234, 214, 155, 87, 76, 68, 68, 68, + 64, 55, 49, 36, 29, 45, 49, 28, 68, 81, 85, 67, 61, 59, 57, 56, + 60, 72, 59, 46, 80, 84, 63, 63, 79, 77, 60, 71, 75, 63, 28, 1, + 57, 81, 76, 64, 83, 95, 85, 83, 76, 71, 56, 22, 64, 71, 49, 236, + 240, 234, 110, 102, 110, 135, 144, 153, 153, 161, 166, 167, 165, 159, 154, 146, + 139, 131, 118, 10, 10, 13, 10, 20, 5, 8, 1, 18, 26, 13, 9, 17, + 53, 84, 83, 73, 81, 92, 77, 84, 64, 60, 53, 42, 83, 85, 107, 99, + 126, 151, 185, 199, 198, 206, 209, 217, 217, 224, 208, 230, 228, 225, 210, 224, + 228, 222, 197, 228, 228, 186, 77, 28, 14, 32, 29, 13, 21, 28, 24, 33, + 61, 79, 71, 229, 234, 228, 102, 93, 106, 119, 131, 144, 150, 162, 167, 167, + 159, 174, 181, 186, 191, 198, 198, 198, 198, 197, 194, 194, 190, 191, 187, 183, + 181, 177, 167, 103, 80, 76, 75, 59, 72, 99, 122, 108, 104, 110, 95, 93, + 91, 87, 96, 95, 103, 103, 103, 102, 103, 100, 99, 103, 108, 107, 106, 130, + 119, 161, 195, 193, 185, 186, 136, 114, 107, 106, 104, 111, 110, 111, 116, 87, + 29, 22, 16, 9, 75, 80, 89, 93, 93, 77, 103, 108, 116, 165, 163, 151, + 163, 153, 111, 93, 91, 92, 95, 96, 96, 95, 95, 99, 102, 103, 107, 110, + 115, 119, 124, 134, 171, 123, 57, 13, 57, 77, 60, 60, 57, 53, 49, 46, + 65, 29, 20, 40, 83, 143, 159, 155, 146, 135, 114, 106, 99, 85, 79, 84, + 80, 81, 79, 72, 69, 71, 65, 65, 65, 61, 76, 68, 118, 165, 175, 175, + 167, 128, 123, 102, 107, 119, 120, 128, 119, 124, 108, 61, 61, 56, 60, 96, + 185, 161, 153, 144, 138, 135, 132, 134, 135, 132, 131, 135, 135, 130, 118, 134, + 93, 33, 84, 84, 85, 89, 92, 53, 63, 97, 124, 110, 111, 100, 97, 88, + 89, 87, 81, 95, 79, 80, 93, 84, 25, 10, 9, 16, 21, 72, 87, 100, + 104, 185, 212, 238, 179, 123, 108, 126, 148, 158, 162, 162, 165, 169, 162, 155, + 150, 143, 134, 120, 32, 14, 17, 36, 48, 56, 60, 71, 80, 63, 91, 96, + 80, 102, 83, 76, 91, 76, 79, 77, 69, 67, 46, 77, 130, 128, 99, 76, + 60, 52, 53, 51, 48, 38, 68, 102, 106, 100, 95, 89, 80, 77, 241, 232, + 230, 102, 99, 111, 122, 130, 136, 128, 127, 126, 135, 134, 132, 127, 120, 20, + 9, 9, 22, 34, 44, 72, 63, 42, 72, 107, 111, 115, 122, 108, 110, 96, + 107, 112, 107, 104, 102, 106, 107, 108, 108, 108, 107, 108, 110, 110, 111, 115, + 118, 114, 111, 99, 97, 96, 97, 97, 100, 97, 102, 110, 112, 116, 119, 122, + 122, 119, 122, 112, 142, 201, 177, 151, 131, 104, 119, 119, 118, 116, 116, 118, + 118, 118, 116, 114, 112, 107, 108, 114, 135, 102, 67, 77, 61, 65, 68, 71, + 76, 56, 29, 88, 102, 99, 96, 95, 73, 99, 73, 59, 69, 72, 42, 72, + 107, 102, 88, 85, 83, 79, 75, 71, 60, 45, 118, 126, 139, 118, 130, 190, + 225, 238, 238, 226, 159, 103, 71, 56, 44, 38, 34, 40, 36, 36, 25, 29, + 33, 52, 28, 42, 91, 87, 61, 61, 61, 64, 61, 56, 68, 64, 44, 76, + 80, 60, 75, 79, 63, 59, 71, 69, 73, 32, 0, 68, 76, 81, 71, 65, + 61, 69, 76, 83, 65, 49, 32, 57, 87, 51, 228, 238, 237, 108, 97, 110, + 134, 147, 154, 161, 165, 175, 175, 173, 162, 158, 148, 142, 130, 120, 10, 8, + 10, 13, 22, 16, 8, 10, 30, 37, 14, 9, 16, 55, 79, 83, 83, 88, + 76, 81, 79, 64, 56, 65, 36, 72, 96, 77, 108, 110, 115, 120, 134, 142, + 135, 127, 126, 128, 131, 131, 153, 144, 139, 157, 167, 139, 132, 147, 165, 126, + 106, 75, 24, 21, 30, 37, 16, 18, 22, 34, 17, 59, 69, 68, 233, 234, + 232, 106, 95, 107, 120, 131, 143, 151, 163, 170, 169, 165, 161, 131, 175, 185, + 191, 199, 198, 199, 197, 195, 195, 194, 193, 191, 190, 185, 181, 170, 166, 150, + 144, 79, 72, 72, 59, 63, 72, 87, 75, 85, 83, 85, 84, 89, 89, 96, + 95, 96, 97, 99, 100, 103, 103, 106, 110, 112, 131, 122, 151, 186, 178, 181, + 120, 108, 112, 108, 119, 118, 120, 116, 120, 120, 76, 20, 18, 21, 12, 71, + 80, 87, 87, 97, 95, 79, 97, 132, 139, 148, 127, 119, 95, 85, 93, 102, + 99, 99, 102, 100, 104, 106, 107, 106, 108, 108, 108, 111, 111, 112, 114, 124, + 147, 67, 17, 51, 68, 52, 59, 59, 61, 55, 51, 53, 44, 26, 33, 36, + 61, 69, 73, 68, 77, 79, 68, 69, 67, 69, 67, 73, 75, 72, 69, 72, + 79, 106, 110, 112, 112, 81, 76, 122, 193, 182, 142, 110, 107, 119, 122, 128, + 131, 134, 132, 132, 134, 96, 48, 14, 48, 65, 53, 80, 178, 162, 148, 148, + 148, 143, 146, 146, 150, 148, 150, 150, 147, 136, 110, 100, 88, 89, 76, 73, + 76, 92, 81, 60, 95, 182, 183, 132, 132, 115, 118, 118, 110, 123, 123, 126, + 115, 112, 37, 16, 10, 20, 25, 40, 65, 87, 84, 110, 191, 214, 238, 161, + 128, 108, 127, 150, 157, 161, 166, 166, 170, 166, 162, 147, 142, 132, 122, 32, + 16, 16, 40, 44, 56, 71, 64, 79, 68, 97, 97, 75, 96, 87, 77, 75, + 111, 76, 77, 67, 65, 37, 65, 126, 123, 92, 96, 80, 67, 69, 48, 41, + 33, 71, 106, 99, 102, 87, 104, 106, 81, 238, 232, 233, 107, 95, 112, 123, + 132, 127, 136, 140, 142, 147, 146, 139, 128, 124, 20, 9, 9, 24, 37, 45, + 57, 49, 69, 40, 57, 108, 80, 89, 96, 107, 126, 135, 115, 118, 119, 139, + 119, 123, 126, 135, 123, 123, 124, 138, 128, 130, 139, 139, 134, 132, 124, 116, + 114, 114, 115, 116, 116, 120, 124, 131, 134, 138, 138, 139, 128, 124, 100, 116, + 132, 124, 102, 124, 124, 143, 140, 128, 127, 128, 127, 127, 128, 128, 126, 124, + 120, 119, 115, 111, 115, 71, 63, 73, 60, 65, 71, 71, 57, 34, 83, 95, + 95, 93, 95, 80, 103, 84, 57, 65, 60, 38, 67, 107, 103, 75, 84, 65, + 89, 88, 88, 79, 77, 119, 148, 142, 142, 178, 216, 237, 242, 234, 209, 119, + 77, 51, 29, 26, 32, 26, 25, 28, 32, 30, 32, 30, 93, 30, 36, 89, + 81, 61, 61, 65, 65, 64, 61, 61, 61, 42, 72, 83, 63, 76, 68, 59, + 59, 60, 73, 52, 30, 0, 67, 77, 65, 63, 63, 67, 67, 76, 73, 61, + 40, 40, 48, 83, 76, 238, 242, 238, 115, 97, 108, 132, 143, 154, 161, 167, + 175, 174, 173, 171, 161, 144, 140, 132, 122, 10, 10, 9, 13, 21, 12, 8, + 10, 32, 24, 4, 9, 14, 44, 65, 83, 83, 79, 84, 89, 63, 51, 45, + 44, 37, 83, 84, 76, 111, 108, 92, 100, 107, 108, 110, 116, 114, 108, 114, + 120, 118, 122, 124, 126, 124, 127, 115, 119, 112, 112, 91, 48, 16, 12, 34, + 28, 16, 20, 18, 30, 9, 53, 81, 71, 233, 240, 233, 107, 97, 110, 124, + 131, 143, 151, 163, 169, 171, 169, 162, 163, 144, 139, 138, 134, 132, 128, 127, + 124, 124, 123, 122, 120, 116, 114, 112, 104, 112, 110, 110, 89, 95, 72, 93, + 87, 92, 85, 88, 89, 91, 93, 93, 95, 99, 102, 102, 103, 104, 107, 110, + 110, 112, 114, 119, 120, 115, 122, 119, 163, 194, 123, 115, 120, 124, 128, 130, + 130, 127, 123, 126, 122, 65, 18, 18, 17, 8, 64, 79, 84, 89, 83, 84, + 81, 87, 81, 84, 79, 85, 87, 73, 68, 61, 68, 85, 85, 108, 108, 110, + 114, 116, 116, 118, 118, 120, 120, 122, 120, 119, 116, 161, 85, 30, 33, 53, + 73, 69, 57, 46, 48, 53, 42, 59, 28, 18, 53, 49, 65, 69, 79, 80, + 81, 81, 89, 88, 92, 95, 99, 102, 103, 106, 104, 108, 118, 122, 124, 122, + 91, 79, 115, 163, 155, 126, 106, 128, 134, 140, 138, 139, 138, 138, 139, 127, + 79, 14, 33, 44, 49, 51, 61, 103, 163, 162, 140, 131, 154, 154, 155, 155, + 159, 159, 161, 159, 155, 142, 122, 95, 40, 79, 81, 75, 73, 73, 53, 96, + 191, 179, 162, 161, 132, 126, 128, 134, 122, 128, 144, 124, 104, 38, 14, 8, + 22, 26, 8, 63, 80, 79, 100, 202, 220, 229, 162, 116, 108, 127, 147, 158, + 162, 165, 165, 170, 166, 162, 150, 139, 136, 124, 33, 14, 20, 40, 55, 61, + 67, 71, 73, 64, 92, 89, 76, 85, 88, 84, 75, 69, 75, 71, 67, 57, + 33, 63, 122, 112, 84, 87, 84, 63, 111, 75, 40, 32, 84, 104, 95, 95, + 85, 100, 89, 79, 240, 232, 234, 107, 95, 110, 123, 135, 138, 150, 154, 159, + 161, 154, 142, 131, 126, 20, 9, 10, 18, 30, 42, 41, 57, 85, 61, 41, + 53, 96, 96, 92, 167, 179, 161, 115, 134, 159, 126, 128, 138, 148, 134, 132, + 136, 147, 134, 138, 144, 138, 143, 144, 143, 140, 136, 134, 134, 132, 138, 139, + 140, 143, 146, 150, 150, 150, 150, 144, 127, 132, 99, 97, 132, 130, 102, 72, + 65, 79, 103, 119, 154, 131, 134, 153, 135, 135, 134, 131, 130, 126, 115, 131, + 89, 52, 69, 71, 68, 60, 79, 60, 33, 41, 91, 96, 108, 96, 79, 102, + 83, 52, 68, 56, 40, 93, 96, 103, 88, 97, 91, 107, 126, 144, 151, 161, + 190, 206, 212, 217, 221, 236, 242, 244, 233, 169, 92, 45, 52, 37, 46, 41, + 46, 41, 37, 36, 37, 37, 40, 40, 42, 29, 69, 77, 65, 68, 68, 67, + 73, 65, 65, 61, 40, 67, 72, 61, 75, 67, 61, 63, 65, 75, 57, 28, + 1, 60, 79, 73, 75, 72, 79, 76, 73, 77, 55, 25, 18, 49, 76, 53, + 237, 244, 241, 112, 99, 108, 135, 146, 151, 161, 166, 171, 173, 173, 171, 162, + 144, 136, 134, 122, 10, 8, 14, 9, 14, 8, 9, 2, 24, 10, 13, 6, + 14, 40, 61, 79, 89, 83, 79, 67, 63, 52, 52, 48, 32, 83, 83, 88, + 76, 80, 73, 76, 124, 130, 103, 116, 122, 128, 131, 130, 122, 123, 124, 126, + 122, 118, 120, 118, 116, 104, 87, 33, 17, 16, 28, 34, 16, 21, 22, 34, + 9, 56, 73, 75, 228, 238, 237, 108, 99, 111, 124, 134, 143, 153, 165, 169, + 170, 169, 155, 147, 116, 91, 85, 106, 100, 114, 112, 112, 108, 106, 102, 99, + 91, 88, 88, 88, 81, 80, 73, 67, 61, 57, 53, 56, 64, 53, 63, 170, + 99, 100, 97, 104, 103, 108, 111, 111, 112, 118, 122, 122, 123, 124, 126, 128, + 128, 130, 120, 122, 119, 118, 126, 135, 139, 138, 138, 135, 134, 132, 128, 110, + 41, 21, 13, 17, 12, 52, 79, 76, 84, 88, 88, 91, 79, 75, 65, 57, + 45, 41, 37, 29, 36, 36, 51, 65, 80, 93, 112, 110, 118, 116, 122, 115, + 119, 124, 130, 130, 128, 127, 124, 122, 59, 14, 51, 53, 42, 38, 55, 46, + 49, 42, 49, 28, 25, 49, 45, 45, 53, 52, 134, 89, 96, 102, 106, 104, + 108, 112, 111, 114, 115, 114, 114, 126, 128, 131, 131, 126, 85, 106, 151, 130, + 123, 134, 144, 140, 143, 139, 140, 144, 142, 140, 128, 61, 30, 29, 37, 30, + 42, 57, 63, 130, 170, 155, 134, 132, 153, 163, 163, 161, 166, 166, 170, 170, + 166, 148, 108, 77, 68, 40, 63, 71, 56, 60, 110, 191, 190, 177, 136, 150, + 134, 135, 135, 140, 147, 144, 118, 120, 30, 16, 20, 24, 8, 0, 57, 77, + 77, 96, 199, 221, 233, 139, 116, 107, 126, 140, 155, 161, 161, 163, 170, 166, + 165, 151, 143, 134, 126, 30, 14, 17, 36, 56, 64, 64, 84, 87, 56, 89, + 84, 77, 84, 84, 87, 75, 69, 69, 67, 65, 60, 33, 63, 128, 142, 93, + 91, 92, 92, 65, 76, 45, 25, 81, 100, 93, 93, 87, 93, 85, 76, 241, + 238, 233, 104, 96, 110, 124, 139, 147, 159, 165, 163, 165, 157, 144, 132, 126, + 17, 9, 9, 20, 38, 41, 41, 46, 64, 61, 45, 42, 80, 87, 91, 195, + 190, 124, 107, 118, 136, 134, 151, 157, 136, 138, 147, 151, 142, 146, 142, 148, + 148, 147, 159, 159, 163, 157, 148, 144, 146, 151, 155, 154, 158, 157, 161, 161, + 161, 159, 155, 140, 140, 140, 134, 106, 60, 38, 28, 30, 41, 77, 111, 130, + 170, 179, 177, 163, 170, 169, 155, 135, 132, 124, 115, 104, 57, 51, 68, 65, + 63, 64, 63, 46, 36, 83, 83, 73, 93, 84, 85, 61, 61, 57, 46, 61, + 91, 84, 126, 140, 171, 195, 218, 222, 237, 237, 244, 244, 246, 248, 246, 246, + 248, 248, 238, 213, 134, 89, 56, 29, 40, 38, 38, 41, 37, 38, 40, 44, + 44, 38, 40, 40, 34, 67, 85, 80, 79, 80, 76, 80, 72, 63, 56, 40, + 71, 77, 64, 67, 77, 72, 88, 75, 65, 61, 25, 0, 64, 88, 76, 87, + 83, 75, 81, 79, 71, 56, 26, 20, 45, 73, 51, 237, 244, 240, 110, 97, + 108, 132, 143, 151, 158, 162, 167, 174, 171, 171, 165, 146, 139, 132, 123, 10, + 10, 9, 12, 18, 20, 20, 8, 6, 10, 6, 6, 18, 29, 56, 56, 57, + 55, 57, 56, 44, 48, 49, 45, 33, 57, 77, 77, 69, 68, 65, 65, 73, + 57, 79, 157, 119, 112, 118, 134, 135, 140, 142, 147, 147, 150, 142, 147, 112, + 106, 89, 21, 12, 16, 20, 16, 29, 33, 17, 28, 20, 48, 69, 77, 216, + 238, 238, 107, 99, 108, 124, 135, 144, 153, 165, 169, 170, 166, 157, 124, 65, + 26, 24, 24, 64, 81, 108, 106, 111, 108, 108, 110, 110, 108, 112, 112, 111, + 108, 59, 55, 59, 56, 53, 52, 48, 51, 57, 174, 178, 108, 88, 114, 120, + 112, 115, 119, 119, 120, 126, 128, 131, 134, 135, 135, 135, 128, 127, 116, 112, + 138, 143, 143, 146, 140, 140, 139, 134, 135, 124, 79, 20, 17, 13, 17, 13, + 34, 73, 77, 75, 65, 55, 41, 45, 45, 45, 38, 49, 49, 48, 45, 61, + 59, 37, 32, 61, 99, 112, 167, 170, 166, 144, 153, 166, 151, 151, 147, 132, + 136, 126, 153, 91, 29, 18, 51, 51, 46, 41, 45, 44, 45, 55, 25, 21, + 37, 46, 52, 38, 45, 131, 158, 100, 99, 108, 119, 116, 118, 120, 122, 120, + 120, 123, 128, 138, 135, 136, 135, 131, 89, 89, 131, 143, 147, 147, 147, 146, + 138, 143, 143, 142, 138, 96, 41, 33, 32, 9, 34, 34, 55, 51, 57, 148, + 163, 139, 127, 136, 153, 161, 166, 169, 173, 173, 174, 175, 167, 138, 72, 67, + 48, 67, 61, 67, 60, 119, 202, 195, 212, 147, 153, 136, 135, 138, 139, 151, + 144, 118, 118, 26, 14, 6, 12, 8, 0, 56, 59, 67, 89, 208, 220, 234, + 140, 102, 111, 130, 144, 153, 157, 159, 165, 167, 166, 162, 155, 136, 131, 123, + 33, 16, 18, 37, 53, 53, 63, 65, 72, 55, 99, 97, 76, 65, 64, 67, + 64, 64, 61, 63, 65, 61, 44, 69, 87, 110, 95, 33, 44, 40, 38, 37, + 34, 24, 49, 79, 77, 69, 68, 87, 77, 75, 242, 240, 233, 103, 96, 108, + 123, 138, 150, 163, 166, 163, 166, 158, 143, 132, 124, 17, 9, 9, 18, 22, + 34, 37, 36, 41, 34, 38, 46, 79, 93, 87, 198, 195, 167, 112, 115, 123, + 139, 139, 144, 157, 154, 142, 155, 146, 150, 148, 148, 155, 166, 170, 178, 185, + 185, 179, 159, 158, 161, 167, 166, 167, 166, 167, 169, 169, 166, 162, 144, 144, + 142, 110, 60, 28, 28, 24, 20, 29, 57, 87, 119, 173, 177, 190, 181, 175, + 151, 170, 163, 150, 131, 119, 116, 71, 42, 49, 61, 64, 63, 59, 59, 51, + 44, 46, 52, 52, 55, 55, 55, 56, 49, 77, 88, 115, 177, 214, 234, 240, + 240, 245, 249, 252, 252, 252, 252, 252, 250, 252, 249, 248, 245, 233, 171, 122, + 93, 53, 26, 38, 36, 34, 34, 38, 37, 38, 38, 42, 37, 41, 38, 36, + 36, 52, 56, 52, 64, 56, 60, 57, 56, 59, 37, 67, 67, 67, 55, 60, + 59, 61, 56, 57, 44, 28, 2, 59, 65, 72, 77, 71, 71, 69, 71, 59, + 52, 25, 21, 36, 71, 46, 237, 242, 237, 108, 95, 108, 134, 144, 153, 158, + 159, 162, 171, 173, 171, 161, 151, 139, 131, 120, 9, 8, 9, 12, 14, 12, + 14, 16, 17, 16, 33, 24, 20, 32, 38, 44, 37, 37, 41, 45, 40, 44, + 49, 40, 28, 65, 72, 67, 64, 63, 65, 64, 65, 61, 59, 161, 167, 112, + 111, 122, 127, 135, 140, 147, 148, 144, 150, 147, 119, 107, 91, 21, 13, 17, + 13, 10, 20, 22, 12, 17, 24, 37, 51, 73, 224, 242, 238, 112, 99, 110, + 124, 136, 142, 150, 165, 170, 167, 178, 146, 77, 34, 16, 12, 9, 26, 73, + 123, 163, 167, 162, 119, 151, 154, 153, 150, 122, 119, 114, 80, 49, 63, 53, + 52, 49, 48, 40, 45, 161, 187, 161, 103, 103, 122, 123, 127, 127, 131, 131, + 134, 138, 138, 139, 139, 143, 140, 138, 136, 136, 148, 147, 151, 146, 142, 127, + 120, 110, 96, 95, 69, 30, 16, 10, 12, 17, 13, 25, 32, 37, 34, 38, + 40, 40, 51, 52, 57, 49, 63, 60, 60, 56, 57, 60, 60, 61, 77, 104, + 175, 187, 189, 179, 171, 171, 174, 170, 163, 167, 157, 143, 138, 126, 115, 63, + 16, 24, 59, 57, 40, 41, 40, 36, 52, 29, 21, 30, 48, 44, 40, 48, + 126, 166, 155, 97, 100, 120, 122, 126, 126, 124, 128, 128, 126, 142, 148, 151, + 148, 147, 139, 143, 151, 153, 150, 150, 144, 140, 132, 126, 116, 111, 108, 84, + 45, 26, 21, 30, 21, 26, 13, 28, 32, 20, 92, 169, 163, 132, 126, 136, + 153, 159, 167, 171, 174, 174, 177, 177, 161, 111, 56, 67, 77, 77, 65, 59, + 155, 204, 199, 187, 165, 162, 144, 140, 146, 150, 148, 144, 116, 114, 24, 9, + 5, 17, 13, 13, 53, 51, 59, 88, 197, 221, 234, 131, 97, 107, 128, 144, + 155, 158, 165, 166, 167, 159, 155, 157, 139, 132, 124, 36, 14, 20, 36, 37, + 56, 64, 60, 69, 57, 91, 84, 60, 61, 59, 64, 61, 60, 57, 65, 65, + 55, 41, 49, 37, 24, 22, 22, 22, 20, 17, 20, 20, 22, 29, 32, 37, + 44, 45, 57, 77, 76, 241, 240, 229, 103, 96, 108, 127, 139, 150, 162, 169, + 169, 162, 157, 142, 130, 122, 14, 8, 8, 16, 14, 32, 36, 28, 29, 30, + 28, 33, 48, 87, 87, 205, 198, 193, 114, 110, 122, 135, 165, 163, 144, 154, + 148, 150, 157, 161, 163, 167, 170, 174, 178, 169, 153, 174, 183, 190, 181, 163, + 178, 178, 175, 171, 183, 178, 175, 178, 174, 181, 150, 144, 100, 45, 28, 21, + 17, 17, 20, 48, 81, 114, 182, 190, 161, 165, 183, 179, 159, 155, 161, 135, + 124, 131, 80, 44, 42, 57, 59, 57, 52, 55, 53, 57, 55, 52, 56, 56, + 53, 57, 46, 87, 95, 140, 218, 241, 242, 244, 248, 249, 252, 252, 250, 241, + 236, 230, 229, 229, 222, 220, 213, 209, 175, 140, 128, 102, 55, 49, 38, 41, + 38, 38, 42, 40, 40, 41, 40, 40, 42, 40, 38, 42, 42, 42, 42, 42, + 45, 42, 42, 42, 42, 40, 41, 34, 40, 40, 49, 32, 36, 34, 32, 28, + 33, 4, 16, 28, 30, 33, 32, 33, 32, 42, 36, 22, 12, 34, 33, 64, + 53, 240, 242, 238, 110, 95, 103, 130, 140, 153, 158, 163, 170, 170, 173, 163, + 157, 148, 139, 131, 123, 8, 10, 10, 14, 14, 16, 22, 12, 14, 13, 10, + 16, 18, 18, 18, 28, 25, 24, 22, 22, 24, 25, 24, 38, 42, 40, 46, + 38, 30, 59, 60, 55, 57, 61, 52, 142, 173, 162, 112, 116, 130, 128, 136, + 143, 139, 146, 148, 150, 123, 112, 83, 18, 10, 9, 14, 12, 16, 26, 25, + 13, 16, 36, 49, 75, 233, 242, 241, 112, 100, 110, 124, 135, 144, 153, 166, + 170, 163, 157, 112, 40, 20, 9, 10, 12, 18, 59, 142, 179, 128, 162, 154, + 154, 158, 167, 140, 146, 122, 118, 107, 44, 41, 45, 51, 49, 45, 52, 38, + 89, 197, 179, 114, 104, 112, 136, 131, 134, 135, 136, 138, 140, 142, 143, 144, + 146, 148, 153, 155, 151, 153, 151, 136, 104, 65, 41, 22, 16, 16, 17, 14, + 13, 9, 13, 10, 18, 14, 30, 28, 30, 34, 44, 64, 106, 177, 195, 209, + 210, 208, 199, 186, 177, 103, 92, 85, 85, 108, 186, 213, 163, 191, 183, 185, + 182, 174, 178, 177, 170, 163, 155, 142, 132, 147, 91, 29, 16, 29, 34, 38, + 40, 37, 41, 42, 44, 28, 29, 40, 45, 29, 38, 104, 175, 173, 108, 100, + 110, 123, 132, 130, 130, 135, 143, 146, 153, 157, 157, 157, 154, 151, 155, 155, + 151, 146, 130, 95, 67, 38, 26, 20, 13, 21, 21, 22, 25, 25, 1, 4, + 4, 34, 36, 25, 22, 32, 118, 171, 146, 120, 122, 143, 154, 159, 166, 171, + 175, 178, 181, 177, 135, 68, 37, 45, 63, 75, 88, 187, 201, 202, 189, 161, + 151, 154, 153, 154, 155, 148, 147, 128, 110, 21, 10, 6, 9, 13, 10, 33, + 41, 40, 72, 190, 222, 221, 130, 107, 110, 128, 144, 154, 159, 162, 166, 165, + 151, 158, 150, 139, 132, 124, 44, 17, 18, 25, 29, 30, 37, 67, 65, 52, + 60, 60, 53, 41, 38, 40, 36, 32, 28, 21, 29, 29, 37, 17, 41, 45, + 48, 52, 55, 52, 61, 53, 37, 18, 59, 104, 104, 81, 87, 87, 83, 77, + 242, 237, 222, 104, 96, 107, 126, 134, 150, 162, 169, 167, 163, 158, 142, 127, + 126, 18, 9, 9, 13, 13, 10, 21, 25, 26, 24, 26, 30, 38, 88, 91, + 208, 206, 204, 116, 126, 116, 132, 161, 165, 151, 153, 154, 165, 173, 173, 173, + 171, 169, 178, 143, 89, 59, 80, 150, 183, 185, 169, 161, 174, 175, 177, 175, + 175, 179, 181, 183, 185, 154, 151, 95, 42, 25, 21, 17, 17, 20, 49, 73, + 106, 195, 197, 163, 186, 189, 187, 165, 181, 170, 140, 128, 118, 100, 53, 38, + 48, 44, 37, 32, 38, 36, 36, 37, 40, 40, 38, 42, 55, 68, 106, 165, + 236, 245, 246, 244, 250, 249, 238, 220, 191, 167, 124, 112, 115, 108, 111, 116, + 114, 110, 115, 131, 118, 124, 116, 89, 63, 20, 18, 16, 13, 12, 12, 10, + 9, 8, 9, 9, 5, 4, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 2, 6, 8, 6, 1, 1, 0, 2, 5, 6, 2, 16, 14, 14, 6, + 17, 16, 13, 13, 17, 18, 17, 30, 25, 24, 75, 57, 240, 244, 242, 114, + 96, 106, 130, 142, 154, 161, 169, 173, 171, 169, 159, 161, 144, 136, 132, 120, + 6, 9, 12, 10, 9, 9, 8, 9, 8, 10, 9, 9, 9, 14, 24, 57, + 64, 75, 71, 73, 67, 67, 63, 56, 56, 80, 85, 77, 48, 38, 37, 34, + 53, 67, 57, 76, 185, 179, 119, 115, 126, 128, 134, 135, 136, 150, 146, 146, + 116, 111, 84, 18, 8, 13, 17, 12, 20, 21, 24, 22, 28, 55, 51, 80, + 233, 244, 241, 107, 97, 108, 122, 134, 140, 154, 166, 169, 165, 144, 73, 26, + 14, 10, 10, 10, 28, 72, 185, 193, 162, 130, 159, 162, 150, 142, 131, 151, + 126, 120, 111, 41, 40, 41, 45, 46, 42, 51, 45, 75, 210, 201, 126, 103, + 115, 130, 139, 139, 138, 139, 138, 142, 144, 147, 147, 158, 162, 159, 155, 157, + 148, 100, 53, 16, 10, 9, 8, 8, 8, 9, 8, 9, 10, 13, 10, 21, + 29, 30, 46, 55, 72, 126, 185, 234, 242, 244, 244, 244, 242, 240, 240, 237, + 237, 236, 232, 224, 229, 229, 224, 208, 190, 183, 179, 179, 177, 175, 178, 174, + 170, 169, 150, 140, 127, 115, 61, 18, 21, 22, 28, 20, 25, 28, 26, 33, + 33, 32, 33, 29, 33, 42, 97, 186, 183, 120, 106, 107, 120, 130, 134, 138, + 153, 157, 162, 161, 159, 157, 159, 163, 159, 157, 153, 134, 91, 46, 13, 9, + 6, 8, 9, 10, 14, 12, 2, 6, 4, 6, 13, 5, 5, 10, 16, 8, + 20, 64, 151, 165, 128, 118, 132, 147, 155, 159, 167, 174, 177, 182, 185, 158, + 100, 75, 75, 76, 73, 112, 201, 205, 208, 194, 166, 157, 167, 155, 150, 157, + 146, 147, 123, 119, 21, 9, 10, 2, 2, 1, 144, 134, 128, 85, 186, 221, + 222, 140, 110, 107, 126, 144, 154, 158, 162, 163, 159, 159, 161, 140, 138, 132, + 127, 49, 17, 18, 24, 45, 41, 37, 37, 41, 46, 37, 44, 61, 73, 71, + 84, 89, 92, 100, 99, 91, 73, 22, 67, 79, 104, 110, 102, 93, 93, 91, + 68, 44, 17, 92, 104, 102, 100, 104, 104, 84, 84, 245, 233, 233, 104, 93, + 104, 127, 135, 148, 162, 166, 165, 161, 158, 143, 132, 127, 20, 10, 9, 16, + 12, 18, 32, 30, 38, 5, 36, 30, 84, 87, 99, 216, 212, 210, 130, 126, + 131, 123, 154, 162, 155, 153, 167, 177, 177, 177, 175, 167, 169, 155, 91, 34, + 36, 59, 108, 174, 197, 178, 157, 174, 179, 178, 181, 182, 183, 186, 187, 185, + 159, 155, 103, 48, 32, 24, 22, 20, 22, 52, 85, 103, 199, 204, 169, 166, + 170, 189, 189, 186, 173, 151, 134, 122, 126, 76, 37, 42, 49, 56, 52, 59, + 80, 88, 97, 91, 99, 95, 84, 96, 135, 183, 240, 242, 245, 249, 244, 221, + 186, 143, 118, 112, 104, 97, 107, 110, 111, 97, 115, 114, 110, 104, 123, 126, + 127, 122, 116, 76, 80, 61, 59, 60, 65, 60, 60, 57, 51, 55, 41, 49, + 73, 92, 95, 108, 102, 99, 111, 114, 97, 75, 69, 79, 122, 97, 100, 128, + 124, 99, 89, 91, 110, 83, 10, 0, 22, 45, 60, 32, 38, 33, 29, 26, + 5, 14, 21, 49, 77, 73, 65, 241, 244, 241, 112, 95, 110, 131, 143, 153, + 161, 170, 170, 171, 166, 162, 161, 143, 135, 132, 124, 8, 14, 12, 24, 48, + 61, 67, 71, 77, 75, 73, 63, 72, 72, 71, 83, 106, 97, 97, 80, 87, + 84, 89, 89, 80, 93, 103, 99, 79, 56, 49, 45, 42, 53, 59, 71, 193, + 187, 136, 115, 122, 132, 130, 132, 146, 148, 147, 146, 122, 110, 77, 16, 8, + 14, 22, 29, 36, 46, 45, 57, 57, 41, 77, 81, 233, 244, 240, 106, 97, + 108, 124, 135, 143, 155, 167, 166, 178, 134, 40, 20, 16, 13, 16, 8, 44, + 72, 195, 198, 187, 130, 154, 155, 157, 139, 130, 130, 127, 123, 112, 44, 34, + 38, 53, 49, 44, 45, 37, 65, 212, 209, 182, 110, 107, 122, 134, 143, 148, + 140, 144, 144, 151, 151, 158, 167, 162, 159, 159, 144, 83, 25, 9, 6, 9, + 9, 13, 14, 14, 14, 13, 13, 13, 12, 18, 22, 32, 42, 60, 107, 204, + 236, 240, 242, 242, 242, 240, 241, 241, 241, 240, 238, 236, 234, 233, 230, 230, + 230, 226, 222, 169, 165, 182, 183, 190, 173, 185, 178, 175, 171, 161, 146, 132, + 138, 87, 26, 26, 28, 36, 33, 45, 38, 33, 24, 18, 22, 29, 29, 36, + 53, 96, 191, 197, 166, 103, 104, 112, 127, 134, 148, 162, 162, 159, 161, 162, + 161, 162, 165, 159, 155, 138, 77, 17, 12, 5, 4, 0, 1, 1, 5, 4, + 10, 18, 13, 16, 14, 20, 26, 17, 17, 9, 9, 21, 37, 135, 162, 139, + 118, 118, 134, 151, 157, 165, 170, 177, 181, 183, 183, 131, 73, 65, 59, 89, + 146, 210, 208, 216, 206, 171, 161, 166, 151, 154, 154, 150, 148, 127, 118, 25, + 14, 12, 12, 34, 42, 103, 88, 93, 80, 155, 216, 224, 146, 110, 107, 126, + 140, 154, 159, 162, 163, 157, 159, 157, 140, 135, 132, 126, 57, 18, 20, 29, + 41, 55, 64, 64, 64, 45, 68, 99, 119, 112, 115, 122, 122, 116, 110, 116, + 104, 76, 22, 67, 138, 122, 123, 104, 106, 110, 80, 69, 44, 20, 100, 102, + 87, 80, 80, 96, 84, 85, 245, 236, 233, 104, 92, 106, 128, 134, 148, 162, + 169, 167, 162, 157, 143, 134, 128, 20, 10, 10, 13, 14, 26, 34, 24, 37, + 12, 29, 32, 84, 95, 106, 214, 216, 213, 131, 107, 114, 123, 134, 161, 158, + 162, 175, 178, 177, 179, 178, 173, 167, 122, 45, 30, 32, 37, 63, 153, 199, + 185, 158, 159, 174, 189, 190, 193, 194, 195, 195, 191, 185, 163, 134, 65, 34, + 26, 25, 21, 40, 65, 89, 97, 201, 209, 183, 166, 186, 189, 174, 187, 170, + 163, 136, 127, 119, 99, 45, 36, 51, 48, 81, 69, 76, 92, 96, 112, 87, + 100, 103, 139, 222, 241, 244, 245, 249, 230, 182, 136, 114, 108, 108, 111, 122, + 72, 41, 34, 37, 48, 99, 106, 114, 151, 174, 181, 171, 128, 124, 112, 91, + 63, 85, 83, 65, 69, 63, 64, 57, 76, 88, 59, 93, 112, 108, 107, 72, + 96, 118, 119, 100, 96, 80, 73, 112, 111, 119, 115, 120, 107, 110, 104, 96, + 93, 64, 0, 60, 52, 55, 65, 53, 46, 55, 45, 22, 18, 20, 77, 77, + 65, 76, 244, 244, 241, 103, 99, 110, 132, 142, 153, 162, 169, 169, 174, 165, + 159, 158, 142, 135, 132, 120, 8, 10, 17, 38, 60, 56, 60, 63, 64, 73, + 68, 77, 59, 80, 108, 88, 79, 77, 81, 93, 80, 79, 93, 134, 147, 199, + 185, 131, 96, 73, 59, 60, 57, 55, 55, 61, 199, 198, 169, 116, 120, 130, + 132, 130, 139, 153, 146, 151, 120, 112, 80, 17, 10, 16, 28, 48, 52, 51, + 49, 55, 34, 64, 91, 138, 234, 244, 238, 111, 99, 110, 126, 136, 143, 159, + 167, 165, 158, 114, 36, 20, 10, 12, 18, 9, 52, 83, 204, 202, 194, 158, + 151, 151, 159, 142, 144, 132, 128, 130, 118, 41, 37, 32, 42, 52, 55, 37, + 33, 59, 213, 206, 190, 108, 107, 115, 130, 140, 148, 148, 150, 165, 169, 167, + 169, 169, 161, 159, 146, 87, 20, 5, 6, 8, 9, 16, 14, 17, 17, 17, + 17, 17, 22, 22, 22, 20, 33, 48, 95, 221, 238, 238, 242, 241, 238, 229, + 218, 197, 194, 185, 186, 190, 201, 205, 208, 218, 221, 224, 220, 224, 210, 171, + 198, 197, 206, 205, 197, 178, 182, 175, 167, 150, 139, 132, 110, 55, 22, 20, + 48, 41, 46, 61, 60, 56, 49, 56, 64, 65, 64, 52, 104, 193, 201, 183, + 106, 104, 114, 127, 139, 151, 162, 165, 167, 165, 166, 163, 167, 165, 161, 136, + 77, 16, 12, 4, 2, 4, 6, 2, 4, 9, 6, 20, 30, 37, 30, 44, + 40, 41, 44, 48, 40, 41, 13, 42, 122, 159, 158, 118, 114, 128, 144, 154, + 159, 166, 173, 178, 185, 191, 178, 118, 56, 79, 102, 174, 212, 210, 210, 193, + 178, 166, 161, 158, 162, 155, 150, 148, 128, 119, 17, 12, 13, 22, 20, 6, + 103, 97, 93, 97, 107, 208, 213, 175, 114, 107, 120, 142, 151, 158, 161, 159, + 159, 157, 146, 128, 135, 131, 126, 81, 22, 20, 36, 45, 61, 68, 60, 63, + 34, 100, 116, 122, 118, 112, 134, 128, 131, 122, 123, 97, 73, 20, 84, 146, + 139, 142, 136, 126, 104, 92, 61, 41, 22, 93, 102, 87, 87, 83, 92, 83, + 81, 241, 230, 233, 102, 92, 107, 130, 136, 148, 162, 167, 170, 159, 158, 144, + 135, 128, 21, 12, 10, 12, 6, 29, 29, 14, 26, 12, 44, 21, 102, 95, + 143, 221, 220, 216, 115, 106, 114, 136, 135, 146, 157, 169, 178, 179, 179, 177, + 174, 170, 161, 92, 34, 29, 30, 37, 64, 126, 201, 198, 163, 153, 171, 177, + 189, 195, 198, 198, 198, 197, 191, 167, 155, 88, 41, 24, 25, 22, 53, 75, + 91, 100, 194, 214, 198, 170, 186, 187, 185, 186, 171, 170, 140, 132, 123, 116, + 68, 37, 49, 44, 46, 61, 95, 76, 81, 79, 88, 85, 104, 199, 244, 242, + 246, 248, 218, 158, 116, 111, 111, 115, 134, 120, 63, 32, 28, 32, 29, 48, + 97, 179, 193, 185, 159, 166, 166, 171, 130, 127, 118, 93, 49, 67, 64, 75, + 59, 61, 60, 61, 56, 63, 128, 123, 116, 107, 111, 106, 95, 100, 88, 76, + 69, 93, 123, 118, 107, 104, 99, 103, 103, 112, 100, 100, 76, 16, 69, 44, + 25, 17, 13, 21, 26, 49, 29, 12, 22, 75, 88, 72, 108, 244, 244, 238, + 106, 99, 111, 132, 142, 151, 161, 169, 169, 173, 163, 158, 142, 131, 134, 131, + 120, 9, 14, 18, 48, 49, 61, 60, 71, 56, 61, 61, 52, 37, 81, 104, + 91, 75, 73, 83, 81, 84, 87, 163, 224, 205, 217, 205, 161, 100, 80, 60, + 69, 57, 51, 55, 56, 199, 199, 187, 118, 120, 131, 139, 134, 135, 146, 140, + 135, 122, 115, 69, 18, 9, 21, 36, 48, 42, 45, 65, 40, 33, 64, 93, + 142, 234, 242, 240, 118, 102, 114, 127, 140, 147, 161, 167, 162, 154, 84, 32, + 17, 12, 13, 20, 8, 57, 89, 202, 206, 204, 124, 147, 150, 157, 128, 134, + 138, 127, 128, 115, 38, 29, 30, 38, 40, 46, 46, 38, 59, 218, 209, 193, + 107, 108, 114, 127, 140, 148, 154, 167, 170, 174, 175, 170, 167, 165, 150, 85, + 22, 5, 9, 10, 9, 14, 16, 24, 30, 28, 29, 25, 26, 22, 26, 32, + 25, 36, 65, 169, 238, 238, 238, 234, 230, 197, 175, 151, 150, 147, 151, 154, + 158, 163, 167, 171, 174, 178, 181, 191, 195, 204, 198, 199, 195, 194, 197, 198, + 195, 187, 178, 169, 154, 146, 128, 119, 75, 28, 32, 44, 49, 42, 51, 40, + 46, 55, 60, 59, 48, 44, 45, 88, 197, 205, 193, 107, 104, 114, 128, 138, + 154, 162, 165, 166, 167, 166, 169, 166, 165, 150, 96, 26, 13, 4, 6, 9, + 6, 8, 8, 14, 12, 9, 33, 40, 42, 41, 44, 32, 28, 22, 30, 33, + 45, 1, 44, 100, 143, 170, 134, 112, 120, 138, 148, 155, 162, 170, 177, 182, + 195, 194, 185, 138, 110, 148, 204, 204, 212, 208, 189, 191, 173, 179, 165, 162, + 161, 154, 150, 135, 119, 24, 12, 5, 30, 5, 59, 69, 89, 93, 81, 88, + 191, 216, 197, 114, 103, 116, 139, 151, 155, 158, 161, 157, 154, 138, 136, 135, + 131, 126, 97, 25, 22, 36, 48, 60, 64, 55, 69, 41, 103, 132, 126, 130, + 128, 122, 126, 124, 128, 112, 93, 76, 20, 91, 139, 166, 189, 162, 140, 116, + 103, 67, 44, 24, 87, 97, 89, 102, 84, 89, 79, 91, 240, 237, 232, 93, + 93, 106, 127, 134, 147, 162, 169, 167, 162, 157, 147, 138, 127, 18, 13, 10, + 10, 16, 29, 29, 17, 17, 14, 34, 21, 88, 100, 143, 226, 225, 217, 118, + 118, 114, 123, 136, 155, 158, 171, 177, 181, 181, 177, 174, 167, 143, 53, 29, + 25, 30, 49, 53, 107, 191, 204, 171, 150, 154, 173, 182, 191, 198, 198, 199, + 199, 195, 191, 169, 124, 51, 29, 25, 29, 55, 76, 91, 91, 190, 220, 212, + 175, 170, 185, 174, 185, 173, 166, 147, 136, 128, 131, 85, 36, 37, 45, 41, + 60, 83, 89, 93, 88, 77, 93, 130, 229, 237, 242, 245, 224, 146, 114, 114, + 114, 120, 139, 140, 83, 49, 26, 29, 32, 30, 51, 112, 197, 191, 162, 165, + 170, 169, 174, 134, 130, 115, 107, 84, 46, 56, 51, 56, 49, 60, 59, 52, + 22, 118, 128, 100, 115, 110, 116, 126, 120, 97, 76, 67, 88, 126, 111, 107, + 99, 97, 103, 100, 96, 99, 108, 42, 14, 44, 51, 38, 13, 16, 14, 20, + 37, 25, 13, 18, 75, 85, 67, 91, 242, 244, 240, 110, 100, 110, 132, 143, + 150, 161, 167, 170, 174, 162, 158, 136, 131, 131, 131, 119, 9, 14, 14, 25, + 51, 57, 72, 65, 52, 72, 55, 59, 41, 72, 108, 80, 95, 77, 69, 87, + 77, 95, 198, 226, 208, 213, 183, 139, 97, 67, 49, 53, 59, 49, 55, 57, + 206, 204, 194, 122, 123, 131, 136, 139, 140, 131, 146, 132, 120, 115, 59, 17, + 10, 20, 38, 46, 40, 44, 76, 41, 29, 63, 95, 138, 232, 241, 240, 120, + 103, 114, 126, 138, 146, 161, 165, 163, 144, 61, 24, 14, 12, 13, 24, 10, + 56, 85, 205, 208, 232, 127, 147, 147, 148, 139, 131, 130, 127, 124, 112, 34, + 30, 24, 38, 37, 46, 36, 42, 59, 222, 220, 204, 107, 106, 115, 126, 138, + 148, 154, 166, 173, 173, 171, 167, 163, 158, 111, 32, 6, 9, 9, 8, 9, + 17, 26, 33, 33, 33, 26, 28, 26, 28, 28, 34, 32, 42, 89, 218, 236, + 236, 229, 214, 179, 146, 134, 135, 140, 148, 157, 166, 173, 183, 193, 197, 201, + 202, 199, 183, 187, 191, 194, 195, 198, 202, 201, 205, 202, 182, 178, 163, 154, + 147, 132, 128, 95, 36, 30, 34, 41, 59, 46, 48, 52, 38, 33, 49, 60, + 60, 60, 76, 198, 210, 199, 110, 106, 115, 128, 139, 154, 162, 165, 167, 166, + 171, 169, 165, 157, 116, 40, 16, 6, 6, 9, 9, 8, 10, 12, 8, 9, + 5, 36, 42, 33, 26, 28, 33, 28, 18, 36, 37, 37, 4, 46, 91, 115, + 165, 146, 116, 110, 128, 136, 154, 161, 169, 173, 182, 187, 199, 198, 195, 182, + 204, 210, 210, 212, 212, 193, 181, 179, 173, 167, 169, 159, 153, 151, 135, 123, + 18, 12, 9, 20, 6, 1, 120, 81, 84, 80, 71, 130, 213, 205, 120, 102, + 112, 130, 144, 153, 158, 161, 159, 157, 147, 132, 136, 128, 128, 111, 32, 25, + 36, 44, 57, 68, 59, 76, 40, 77, 118, 126, 124, 120, 123, 123, 134, 119, + 115, 95, 77, 24, 118, 159, 210, 216, 225, 183, 140, 115, 81, 42, 22, 88, + 96, 97, 87, 85, 87, 80, 84, 238, 241, 225, 97, 92, 103, 122, 134, 146, + 162, 169, 167, 162, 158, 147, 138, 128, 20, 9, 16, 10, 14, 25, 33, 30, + 30, 8, 30, 29, 87, 96, 114, 228, 225, 221, 127, 118, 126, 122, 142, 138, + 162, 167, 179, 173, 181, 178, 169, 165, 123, 41, 28, 22, 32, 42, 55, 88, + 183, 208, 189, 151, 148, 167, 178, 187, 191, 198, 199, 201, 199, 195, 175, 157, + 69, 32, 24, 26, 55, 75, 89, 91, 170, 224, 216, 183, 185, 181, 186, 186, + 177, 161, 148, 139, 130, 122, 102, 44, 34, 45, 41, 56, 87, 96, 80, 80, + 92, 88, 181, 234, 241, 244, 233, 157, 116, 116, 120, 127, 143, 142, 146, 71, + 45, 26, 18, 34, 37, 68, 89, 202, 198, 165, 166, 170, 163, 165, 166, 132, + 124, 120, 93, 46, 44, 52, 55, 48, 51, 57, 56, 42, 122, 136, 106, 115, + 110, 116, 126, 107, 92, 88, 59, 99, 127, 116, 96, 102, 96, 108, 104, 102, + 106, 100, 60, 0, 53, 41, 25, 13, 30, 41, 51, 38, 13, 12, 16, 71, + 83, 61, 89, 244, 242, 232, 108, 99, 111, 131, 139, 154, 161, 166, 170, 173, + 161, 154, 146, 136, 131, 130, 115, 9, 14, 17, 32, 53, 65, 67, 63, 51, + 64, 55, 53, 38, 81, 97, 75, 84, 89, 80, 79, 75, 100, 214, 220, 224, + 218, 177, 115, 85, 49, 32, 53, 49, 49, 51, 60, 210, 208, 202, 126, 123, + 134, 138, 142, 139, 132, 150, 130, 116, 110, 46, 17, 10, 18, 38, 45, 38, + 45, 64, 42, 25, 77, 89, 95, 229, 241, 237, 119, 104, 114, 124, 135, 143, + 162, 163, 161, 142, 41, 17, 14, 14, 14, 17, 9, 53, 88, 205, 206, 208, + 146, 138, 143, 143, 139, 131, 130, 123, 122, 107, 29, 25, 24, 34, 37, 41, + 37, 34, 52, 228, 224, 210, 111, 106, 116, 127, 136, 147, 155, 166, 173, 173, + 169, 157, 161, 136, 49, 6, 10, 10, 9, 14, 16, 20, 38, 41, 36, 32, + 30, 33, 30, 29, 42, 30, 29, 63, 179, 216, 230, 218, 195, 159, 135, 124, + 132, 142, 157, 166, 175, 182, 190, 201, 210, 213, 216, 217, 216, 213, 198, 193, + 194, 189, 185, 183, 206, 206, 206, 183, 178, 161, 158, 150, 136, 128, 106, 52, + 30, 28, 49, 46, 56, 49, 44, 40, 42, 26, 38, 56, 33, 64, 195, 216, + 206, 108, 106, 115, 130, 138, 154, 161, 165, 167, 167, 170, 166, 162, 136, 53, + 14, 12, 9, 12, 9, 13, 13, 12, 8, 8, 9, 5, 41, 42, 24, 26, + 25, 30, 18, 22, 42, 29, 44, 5, 42, 73, 95, 126, 165, 124, 112, 116, + 132, 148, 158, 166, 170, 177, 186, 194, 201, 202, 205, 208, 205, 209, 221, 208, + 190, 183, 183, 175, 170, 163, 161, 153, 150, 135, 122, 16, 12, 5, 12, 63, + 72, 114, 68, 80, 83, 79, 95, 193, 206, 132, 103, 111, 124, 142, 150, 154, + 158, 163, 165, 158, 148, 126, 126, 127, 116, 44, 22, 34, 37, 55, 68, 59, + 65, 61, 51, 111, 126, 126, 130, 124, 126, 126, 123, 108, 99, 81, 34, 155, + 193, 226, 209, 204, 198, 209, 139, 102, 46, 24, 81, 89, 91, 79, 77, 81, + 72, 79, 240, 240, 230, 102, 95, 99, 118, 132, 148, 161, 170, 170, 162, 158, + 147, 138, 126, 17, 12, 13, 13, 12, 24, 29, 37, 34, 30, 26, 32, 79, + 89, 104, 226, 226, 222, 128, 104, 114, 124, 134, 136, 153, 163, 174, 181, 183, + 178, 167, 157, 100, 34, 26, 22, 32, 48, 60, 81, 171, 216, 198, 155, 144, + 158, 173, 182, 190, 193, 197, 201, 202, 198, 193, 174, 102, 36, 25, 28, 55, + 75, 80, 83, 144, 221, 221, 187, 169, 181, 187, 177, 165, 146, 140, 140, 134, + 123, 115, 60, 36, 40, 38, 55, 87, 97, 85, 85, 87, 79, 197, 238, 241, + 242, 190, 124, 118, 124, 130, 130, 144, 148, 148, 65, 26, 24, 22, 29, 36, + 55, 92, 205, 206, 183, 163, 169, 167, 165, 167, 136, 132, 119, 91, 40, 40, + 51, 44, 51, 55, 59, 40, 71, 111, 122, 106, 99, 97, 106, 102, 106, 89, + 72, 41, 107, 127, 116, 96, 106, 96, 106, 104, 103, 96, 97, 56, 0, 51, + 42, 33, 13, 16, 22, 16, 12, 24, 16, 17, 72, 83, 68, 85, 241, 240, + 226, 104, 99, 112, 132, 143, 153, 161, 167, 166, 173, 173, 161, 154, 139, 124, + 127, 112, 10, 16, 16, 46, 51, 57, 67, 73, 71, 69, 52, 56, 38, 75, + 97, 73, 72, 84, 67, 83, 76, 110, 218, 232, 222, 169, 118, 106, 61, 42, + 41, 48, 45, 42, 48, 60, 213, 216, 210, 130, 124, 135, 143, 158, 144, 144, + 148, 120, 115, 107, 33, 14, 10, 17, 38, 41, 38, 45, 64, 41, 22, 88, + 91, 71, 225, 240, 234, 120, 104, 114, 126, 138, 146, 162, 162, 158, 132, 34, + 16, 14, 13, 13, 17, 10, 44, 96, 209, 214, 206, 140, 135, 139, 144, 138, + 132, 132, 131, 115, 104, 25, 22, 18, 30, 32, 34, 45, 53, 55, 228, 228, + 216, 112, 108, 118, 127, 138, 148, 157, 161, 173, 169, 163, 159, 151, 96, 21, + 8, 10, 10, 9, 8, 14, 18, 38, 42, 60, 59, 57, 52, 42, 34, 30, + 40, 48, 122, 217, 225, 212, 179, 144, 126, 124, 136, 146, 157, 169, 175, 185, + 191, 199, 208, 199, 148, 116, 144, 193, 217, 214, 201, 193, 187, 195, 197, 206, + 204, 202, 183, 175, 163, 157, 147, 134, 127, 112, 71, 32, 22, 40, 44, 55, + 60, 45, 40, 42, 34, 41, 57, 20, 77, 204, 218, 213, 112, 107, 118, 131, + 138, 154, 161, 166, 169, 170, 170, 163, 153, 96, 25, 16, 12, 12, 10, 17, + 18, 13, 10, 10, 9, 12, 9, 40, 46, 30, 26, 16, 20, 22, 40, 33, + 25, 26, 2, 44, 63, 81, 104, 159, 158, 114, 106, 124, 142, 155, 162, 169, + 175, 185, 186, 191, 199, 197, 198, 212, 217, 209, 195, 189, 186, 179, 175, 170, + 163, 161, 153, 150, 132, 120, 13, 9, 9, 17, 5, 10, 97, 110, 87, 75, + 71, 64, 132, 204, 162, 104, 107, 118, 134, 144, 150, 158, 166, 161, 162, 153, + 126, 122, 128, 123, 61, 25, 28, 44, 49, 65, 63, 71, 59, 48, 106, 123, + 130, 126, 130, 130, 128, 124, 114, 102, 79, 34, 167, 206, 224, 216, 220, 201, + 179, 142, 100, 42, 25, 80, 97, 91, 93, 80, 83, 75, 96, 240, 241, 233, + 107, 93, 97, 112, 136, 146, 161, 167, 167, 163, 158, 147, 139, 128, 22, 14, + 8, 13, 14, 21, 21, 36, 33, 42, 16, 13, 79, 87, 103, 225, 225, 220, + 115, 103, 115, 127, 122, 127, 142, 158, 170, 177, 177, 174, 161, 147, 73, 29, + 26, 20, 34, 63, 53, 77, 153, 216, 206, 159, 142, 148, 167, 177, 183, 189, + 190, 195, 201, 201, 194, 181, 142, 48, 30, 24, 51, 72, 79, 84, 120, 218, + 224, 191, 171, 182, 182, 175, 154, 143, 136, 143, 139, 126, 124, 76, 34, 34, + 40, 53, 84, 102, 81, 72, 75, 85, 208, 232, 240, 238, 157, 118, 123, 131, + 135, 139, 148, 151, 154, 59, 28, 24, 17, 29, 34, 55, 81, 205, 212, 204, + 169, 170, 169, 165, 171, 142, 136, 116, 88, 33, 33, 42, 48, 44, 48, 51, + 46, 60, 120, 118, 108, 103, 103, 104, 100, 112, 88, 65, 56, 85, 108, 114, + 102, 104, 104, 104, 107, 103, 103, 95, 57, 13, 53, 40, 34, 8, 16, 40, + 12, 12, 25, 10, 18, 79, 81, 69, 89, 240, 236, 178, 100, 99, 112, 132, + 139, 148, 155, 163, 166, 173, 174, 169, 158, 144, 128, 126, 116, 10, 17, 18, + 49, 42, 59, 61, 64, 72, 55, 53, 48, 36, 83, 88, 73, 79, 80, 75, + 83, 77, 118, 230, 234, 221, 139, 107, 88, 49, 38, 33, 51, 45, 41, 55, + 67, 213, 216, 210, 131, 126, 139, 163, 162, 161, 154, 147, 118, 116, 107, 29, + 16, 12, 18, 37, 40, 38, 46, 52, 34, 22, 60, 89, 103, 224, 238, 236, + 123, 103, 115, 124, 138, 146, 163, 163, 159, 124, 30, 16, 13, 16, 13, 18, + 10, 48, 88, 209, 213, 228, 119, 132, 134, 140, 132, 136, 139, 134, 114, 92, + 25, 22, 22, 29, 32, 29, 38, 32, 53, 232, 221, 214, 111, 108, 119, 130, + 139, 151, 159, 161, 171, 167, 161, 159, 139, 52, 10, 10, 10, 10, 12, 14, + 16, 38, 40, 53, 46, 48, 55, 64, 42, 32, 26, 36, 73, 199, 222, 220, + 197, 136, 112, 124, 135, 147, 158, 167, 174, 182, 186, 195, 202, 202, 104, 64, + 59, 69, 106, 154, 218, 209, 204, 190, 197, 205, 208, 208, 195, 179, 175, 167, + 159, 147, 134, 122, 116, 83, 38, 40, 41, 46, 51, 48, 44, 38, 45, 41, + 37, 56, 34, 64, 217, 220, 216, 112, 108, 119, 131, 139, 153, 162, 165, 167, + 171, 166, 158, 136, 56, 14, 12, 13, 13, 21, 17, 16, 10, 9, 13, 10, + 13, 12, 45, 49, 32, 29, 34, 29, 33, 41, 20, 26, 29, 1, 41, 59, + 77, 81, 134, 171, 123, 104, 120, 135, 151, 161, 169, 174, 181, 187, 189, 189, + 187, 187, 190, 198, 199, 195, 193, 193, 182, 174, 171, 163, 162, 154, 151, 135, + 116, 12, 10, 6, 25, 9, 9, 95, 92, 93, 67, 72, 67, 96, 183, 189, + 108, 106, 114, 123, 140, 153, 159, 167, 165, 165, 154, 123, 123, 128, 126, 92, + 29, 26, 32, 37, 48, 69, 68, 64, 45, 87, 126, 127, 123, 128, 126, 128, + 124, 111, 97, 87, 28, 182, 213, 224, 217, 185, 163, 134, 107, 95, 40, 25, + 56, 93, 96, 100, 75, 81, 73, 85, 241, 242, 234, 107, 97, 96, 115, 130, + 143, 158, 166, 167, 165, 155, 144, 140, 127, 21, 16, 20, 14, 17, 32, 24, + 24, 29, 37, 25, 26, 69, 81, 96, 222, 233, 222, 126, 115, 115, 120, 120, + 126, 132, 146, 159, 177, 175, 162, 158, 140, 57, 30, 22, 20, 34, 55, 49, + 68, 138, 210, 212, 174, 138, 140, 159, 170, 175, 182, 186, 189, 194, 197, 195, + 181, 169, 79, 29, 25, 48, 63, 77, 81, 106, 213, 224, 194, 170, 181, 185, + 166, 150, 131, 128, 130, 136, 128, 126, 97, 44, 30, 38, 49, 81, 88, 80, + 75, 87, 88, 209, 232, 241, 218, 142, 122, 128, 135, 134, 150, 154, 159, 161, + 56, 28, 26, 22, 28, 38, 44, 75, 206, 216, 212, 171, 170, 174, 167, 170, + 143, 134, 118, 88, 29, 29, 38, 38, 37, 41, 45, 16, 64, 112, 111, 108, + 108, 107, 102, 99, 122, 91, 63, 51, 107, 123, 99, 106, 108, 116, 123, 114, + 106, 100, 102, 41, 16, 36, 37, 41, 10, 16, 14, 12, 12, 10, 13, 18, + 73, 81, 68, 81, 236, 236, 166, 99, 96, 111, 120, 132, 142, 151, 162, 166, + 175, 173, 169, 158, 146, 126, 128, 115, 12, 18, 16, 33, 41, 48, 60, 64, + 64, 56, 53, 52, 34, 64, 84, 73, 75, 72, 68, 72, 79, 157, 244, 236, + 210, 122, 103, 77, 34, 37, 37, 48, 44, 40, 49, 67, 216, 217, 210, 131, + 127, 139, 163, 157, 161, 148, 150, 116, 116, 106, 30, 14, 10, 20, 34, 38, + 37, 37, 48, 34, 17, 61, 95, 99, 224, 237, 236, 120, 104, 112, 126, 138, + 148, 165, 161, 163, 123, 26, 14, 14, 17, 13, 24, 12, 41, 79, 206, 214, + 210, 134, 127, 131, 140, 135, 132, 136, 132, 114, 85, 20, 20, 20, 26, 30, + 33, 34, 34, 76, 232, 233, 217, 112, 108, 119, 130, 139, 153, 159, 163, 170, + 165, 161, 157, 110, 30, 10, 12, 13, 9, 12, 9, 10, 44, 46, 55, 71, + 59, 44, 64, 41, 38, 34, 42, 132, 213, 218, 210, 167, 112, 119, 132, 142, + 157, 166, 170, 179, 179, 190, 194, 205, 165, 72, 37, 22, 28, 46, 103, 198, + 218, 209, 195, 186, 208, 206, 206, 204, 189, 175, 169, 158, 147, 131, 118, 118, + 92, 42, 40, 36, 53, 45, 48, 57, 37, 45, 36, 46, 51, 25, 72, 217, + 226, 217, 114, 110, 119, 131, 138, 154, 161, 161, 166, 166, 161, 155, 110, 33, + 14, 12, 17, 18, 24, 20, 13, 10, 12, 16, 9, 13, 9, 42, 37, 42, + 24, 37, 33, 33, 33, 33, 28, 24, 4, 36, 55, 64, 63, 92, 162, 138, + 103, 110, 131, 146, 157, 166, 173, 178, 185, 191, 191, 194, 193, 190, 189, 191, + 202, 193, 194, 185, 177, 169, 165, 165, 155, 148, 134, 120, 13, 9, 6, 18, + 12, 9, 69, 69, 72, 79, 63, 61, 67, 128, 185, 122, 102, 107, 115, 138, + 150, 158, 162, 167, 161, 147, 128, 123, 130, 124, 110, 36, 30, 41, 38, 44, + 67, 56, 72, 49, 81, 112, 122, 131, 128, 132, 126, 120, 103, 100, 88, 32, + 181, 224, 229, 218, 165, 124, 97, 92, 73, 34, 25, 44, 83, 93, 97, 77, + 76, 71, 87, 240, 241, 230, 103, 95, 99, 119, 131, 140, 158, 163, 167, 162, + 155, 146, 142, 124, 22, 18, 17, 14, 17, 26, 24, 13, 25, 26, 30, 36, + 56, 88, 112, 228, 230, 222, 127, 118, 123, 119, 118, 123, 136, 150, 146, 154, + 157, 153, 154, 131, 40, 26, 20, 20, 33, 37, 52, 67, 99, 202, 213, 183, + 138, 135, 151, 163, 170, 171, 175, 181, 189, 194, 194, 189, 181, 106, 34, 24, + 49, 56, 75, 80, 91, 205, 222, 204, 173, 179, 185, 167, 157, 147, 147, 143, + 130, 131, 122, 108, 53, 33, 36, 34, 68, 83, 76, 72, 85, 81, 208, 234, + 241, 187, 134, 127, 131, 136, 135, 147, 154, 159, 161, 55, 25, 24, 17, 25, + 41, 61, 72, 204, 218, 217, 171, 174, 173, 163, 171, 147, 134, 120, 84, 29, + 25, 30, 34, 36, 40, 48, 29, 84, 115, 120, 116, 108, 118, 104, 107, 92, + 88, 84, 45, 99, 115, 123, 119, 128, 118, 115, 107, 114, 108, 93, 61, 0, + 51, 36, 12, 14, 10, 6, 12, 10, 16, 14, 18, 59, 80, 61, 84, 233, + 230, 178, 103, 100, 108, 114, 126, 134, 148, 161, 167, 173, 174, 162, 157, 143, + 128, 132, 111, 13, 17, 18, 33, 40, 49, 57, 61, 56, 67, 53, 49, 34, + 63, 77, 79, 63, 77, 75, 69, 91, 197, 237, 237, 208, 122, 103, 63, 34, + 32, 36, 36, 42, 36, 48, 63, 212, 218, 206, 130, 128, 142, 167, 162, 154, + 148, 147, 119, 115, 102, 24, 14, 14, 22, 30, 38, 36, 45, 46, 37, 16, + 69, 89, 69, 221, 237, 232, 118, 106, 116, 126, 138, 153, 165, 162, 159, 116, + 32, 16, 14, 10, 17, 21, 12, 34, 67, 206, 212, 201, 130, 126, 130, 140, + 138, 130, 134, 132, 114, 85, 17, 16, 13, 24, 28, 34, 32, 30, 57, 233, + 226, 220, 112, 108, 119, 131, 140, 153, 161, 163, 169, 161, 155, 146, 75, 14, + 13, 14, 12, 12, 16, 13, 12, 38, 49, 55, 65, 68, 45, 59, 42, 40, + 34, 37, 158, 209, 216, 201, 135, 107, 120, 134, 147, 159, 163, 175, 181, 185, + 191, 197, 208, 130, 42, 20, 18, 22, 41, 81, 159, 221, 212, 206, 182, 206, + 210, 213, 205, 193, 177, 170, 161, 147, 134, 123, 122, 107, 52, 41, 32, 36, + 45, 48, 42, 21, 42, 29, 57, 44, 36, 60, 210, 226, 224, 112, 107, 118, + 131, 138, 153, 162, 158, 166, 165, 159, 144, 81, 21, 16, 16, 17, 21, 17, + 14, 14, 13, 14, 13, 12, 13, 9, 41, 42, 25, 38, 38, 34, 36, 34, + 34, 24, 21, 1, 29, 45, 51, 64, 79, 124, 155, 119, 100, 119, 139, 154, + 162, 173, 177, 183, 187, 183, 182, 186, 195, 191, 185, 189, 201, 194, 186, 179, + 173, 166, 165, 157, 150, 139, 120, 8, 12, 8, 10, 16, 2, 60, 59, 60, + 53, 48, 53, 55, 84, 174, 167, 102, 104, 115, 136, 148, 155, 157, 155, 151, + 148, 122, 123, 123, 126, 123, 65, 30, 30, 36, 40, 64, 64, 73, 55, 61, + 100, 111, 114, 116, 110, 114, 114, 107, 100, 89, 44, 186, 225, 233, 197, 150, + 102, 95, 95, 68, 34, 28, 34, 52, 60, 73, 65, 76, 67, 79, 238, 240, + 222, 104, 93, 102, 116, 126, 136, 157, 167, 165, 162, 155, 143, 142, 124, 22, + 20, 22, 13, 17, 8, 22, 24, 12, 29, 34, 28, 49, 81, 106, 226, 229, + 221, 128, 104, 111, 127, 128, 127, 138, 140, 139, 151, 150, 150, 148, 127, 41, + 29, 25, 21, 33, 42, 56, 69, 80, 191, 214, 193, 142, 132, 140, 157, 163, + 166, 169, 174, 181, 189, 190, 189, 182, 140, 49, 28, 42, 55, 69, 69, 79, + 194, 225, 212, 174, 175, 185, 173, 161, 157, 150, 147, 144, 130, 122, 120, 76, + 36, 36, 33, 63, 89, 100, 77, 80, 71, 187, 236, 241, 181, 128, 132, 139, + 142, 136, 148, 158, 162, 162, 53, 26, 21, 17, 24, 32, 49, 77, 213, 220, + 218, 173, 173, 174, 167, 171, 147, 135, 123, 85, 28, 25, 28, 32, 48, 33, + 46, 30, 80, 88, 77, 85, 84, 85, 84, 87, 83, 83, 60, 32, 96, 108, + 110, 100, 115, 106, 99, 95, 106, 102, 85, 40, 0, 44, 14, 18, 13, 24, + 12, 30, 12, 17, 17, 16, 60, 77, 71, 84, 237, 238, 220, 104, 100, 106, + 114, 114, 134, 153, 162, 173, 175, 167, 157, 147, 132, 127, 123, 107, 16, 20, + 20, 30, 44, 44, 53, 57, 57, 63, 51, 48, 34, 61, 80, 79, 69, 67, + 73, 72, 107, 220, 237, 241, 209, 126, 100, 52, 32, 26, 38, 29, 42, 41, + 38, 53, 214, 213, 206, 126, 128, 140, 159, 154, 153, 144, 136, 118, 114, 97, + 25, 12, 13, 18, 26, 37, 34, 38, 65, 36, 13, 76, 87, 80, 214, 234, + 226, 122, 107, 116, 127, 140, 154, 158, 161, 162, 131, 41, 16, 17, 17, 16, + 22, 12, 30, 60, 206, 205, 199, 122, 127, 130, 140, 131, 132, 130, 132, 114, + 80, 16, 17, 10, 29, 25, 26, 25, 29, 55, 230, 228, 220, 114, 107, 118, + 128, 139, 153, 162, 166, 166, 158, 155, 140, 53, 13, 13, 13, 13, 10, 9, + 16, 12, 49, 55, 49, 44, 38, 44, 41, 41, 38, 30, 37, 165, 208, 201, + 191, 119, 108, 120, 134, 147, 166, 166, 178, 182, 185, 191, 197, 201, 116, 37, + 24, 18, 18, 33, 60, 135, 222, 214, 208, 190, 204, 208, 209, 208, 201, 179, + 174, 161, 153, 135, 126, 119, 112, 72, 45, 45, 36, 40, 49, 42, 38, 29, + 25, 25, 26, 25, 57, 197, 225, 225, 115, 107, 118, 131, 136, 153, 159, 158, + 165, 162, 154, 136, 59, 17, 16, 16, 20, 18, 20, 16, 13, 13, 12, 12, + 12, 16, 13, 33, 36, 37, 42, 38, 38, 37, 34, 37, 20, 21, 1, 26, + 38, 52, 57, 71, 80, 162, 138, 102, 110, 135, 150, 159, 169, 177, 181, 181, + 182, 179, 183, 187, 197, 197, 183, 190, 194, 189, 183, 174, 167, 167, 157, 151, + 139, 120, 8, 9, 8, 18, 13, 5, 59, 46, 52, 60, 42, 41, 38, 48, + 100, 186, 114, 102, 112, 126, 142, 148, 155, 158, 150, 134, 122, 122, 122, 123, + 126, 99, 41, 36, 40, 42, 49, 53, 53, 57, 69, 84, 73, 75, 81, 77, + 80, 77, 108, 100, 85, 36, 170, 224, 236, 179, 120, 102, 95, 92, 67, 32, + 26, 34, 40, 42, 46, 48, 49, 75, 83, 240, 238, 229, 107, 88, 97, 115, + 116, 134, 148, 158, 163, 161, 154, 142, 140, 126, 24, 20, 9, 9, 12, 13, + 17, 5, 5, 20, 29, 30, 42, 80, 92, 224, 228, 228, 123, 99, 111, 122, + 130, 142, 143, 138, 134, 140, 135, 147, 144, 122, 45, 26, 26, 14, 36, 34, + 56, 53, 73, 182, 214, 195, 139, 130, 135, 150, 155, 162, 163, 169, 177, 183, + 187, 186, 181, 161, 73, 34, 34, 51, 60, 68, 79, 175, 226, 217, 179, 169, + 183, 187, 161, 169, 162, 154, 148, 144, 131, 122, 111, 52, 34, 32, 55, 85, + 89, 68, 69, 76, 177, 221, 240, 169, 126, 135, 142, 143, 136, 150, 166, 170, + 170, 61, 34, 20, 21, 24, 33, 65, 89, 221, 224, 221, 177, 175, 175, 169, + 170, 151, 138, 126, 81, 25, 28, 25, 28, 29, 28, 33, 40, 42, 64, 64, + 67, 68, 73, 69, 64, 77, 80, 42, 40, 37, 83, 75, 65, 60, 77, 63, + 53, 51, 72, 49, 9, 24, 16, 12, 10, 12, 17, 14, 13, 13, 22, 17, + 17, 55, 67, 73, 97, 238, 234, 226, 106, 104, 108, 114, 122, 135, 159, 161, + 167, 174, 170, 159, 146, 122, 130, 132, 103, 17, 21, 21, 26, 32, 37, 44, + 51, 53, 49, 49, 46, 32, 64, 69, 73, 63, 65, 65, 75, 130, 240, 245, + 240, 190, 120, 100, 44, 29, 28, 30, 34, 33, 36, 40, 48, 214, 218, 209, + 130, 130, 139, 153, 155, 154, 151, 119, 119, 114, 95, 20, 14, 10, 20, 24, + 32, 36, 37, 49, 30, 20, 42, 77, 76, 206, 230, 228, 122, 108, 118, 128, + 143, 154, 165, 163, 162, 139, 46, 16, 17, 17, 14, 18, 10, 49, 79, 199, + 212, 209, 128, 124, 124, 134, 134, 131, 128, 126, 112, 72, 16, 13, 12, 20, + 17, 22, 28, 30, 49, 230, 229, 225, 116, 110, 115, 124, 140, 154, 162, 166, + 167, 158, 154, 139, 45, 13, 16, 16, 25, 17, 12, 18, 17, 44, 52, 41, + 46, 46, 44, 41, 49, 41, 32, 34, 163, 202, 199, 167, 106, 111, 119, 130, + 148, 163, 166, 171, 175, 183, 189, 194, 208, 107, 37, 26, 21, 21, 21, 42, + 127, 225, 220, 210, 189, 194, 206, 206, 213, 208, 191, 174, 163, 153, 143, 134, + 119, 119, 88, 51, 52, 29, 30, 34, 29, 40, 21, 4, 18, 13, 22, 61, + 181, 221, 226, 115, 108, 119, 131, 135, 151, 159, 161, 163, 159, 151, 130, 52, + 20, 16, 18, 24, 20, 25, 14, 18, 18, 20, 18, 21, 20, 14, 14, 30, + 51, 17, 20, 29, 30, 26, 32, 24, 21, 1, 25, 29, 34, 32, 59, 61, + 99, 153, 104, 99, 127, 143, 157, 166, 173, 174, 177, 177, 181, 182, 185, 187, + 195, 194, 185, 189, 189, 185, 178, 170, 167, 158, 154, 140, 122, 9, 9, 6, + 10, 4, 2, 55, 63, 68, 64, 61, 72, 68, 64, 49, 148, 167, 110, 106, + 112, 130, 142, 147, 153, 147, 138, 127, 122, 115, 126, 127, 120, 63, 40, 30, + 33, 34, 36, 33, 33, 37, 40, 40, 48, 53, 60, 64, 65, 80, 97, 92, + 38, 171, 220, 230, 169, 112, 93, 93, 91, 65, 30, 20, 26, 36, 36, 36, + 42, 42, 68, 68, 240, 237, 226, 107, 99, 96, 115, 127, 127, 143, 155, 166, + 162, 151, 142, 142, 118, 24, 24, 24, 17, 17, 24, 21, 22, 22, 38, 21, + 25, 42, 72, 102, 224, 229, 224, 126, 111, 114, 123, 128, 140, 134, 136, 132, + 135, 135, 144, 140, 118, 41, 37, 25, 26, 51, 67, 63, 65, 68, 171, 209, + 205, 144, 126, 134, 146, 153, 155, 162, 165, 170, 178, 183, 185, 182, 173, 95, + 38, 26, 40, 55, 64, 73, 153, 226, 220, 183, 169, 177, 187, 183, 154, 169, + 159, 155, 143, 144, 130, 123, 85, 37, 37, 52, 59, 65, 60, 76, 72, 134, + 226, 240, 169, 131, 136, 146, 142, 143, 157, 167, 173, 175, 68, 41, 26, 22, + 49, 64, 65, 100, 222, 226, 224, 183, 175, 178, 171, 171, 155, 140, 124, 89, + 24, 22, 22, 8, 6, 5, 8, 8, 20, 18, 9, 9, 18, 20, 18, 17, + 24, 28, 26, 38, 13, 13, 8, 10, 13, 14, 4, 9, 13, 14, 2, 8, + 38, 5, 30, 42, 48, 49, 56, 55, 53, 51, 44, 18, 77, 72, 77, 108, + 237, 238, 226, 106, 104, 111, 116, 127, 140, 155, 158, 163, 167, 171, 158, 146, + 126, 130, 127, 99, 21, 24, 21, 24, 29, 28, 29, 32, 33, 38, 37, 33, + 32, 55, 60, 53, 55, 63, 75, 75, 190, 241, 245, 236, 166, 115, 97, 37, + 28, 24, 20, 22, 25, 29, 40, 53, 220, 222, 208, 128, 123, 123, 144, 151, + 151, 144, 116, 108, 118, 88, 18, 12, 12, 14, 21, 26, 29, 28, 30, 28, + 16, 21, 80, 81, 199, 226, 226, 123, 110, 119, 128, 142, 153, 165, 167, 166, + 146, 68, 24, 18, 18, 10, 17, 29, 59, 112, 208, 214, 197, 126, 122, 123, + 130, 130, 134, 130, 123, 111, 65, 13, 12, 9, 12, 14, 13, 29, 34, 45, + 229, 233, 228, 114, 106, 114, 124, 140, 154, 162, 169, 166, 157, 151, 140, 42, + 13, 16, 16, 20, 26, 24, 13, 12, 26, 29, 25, 28, 34, 33, 28, 28, + 34, 37, 41, 150, 201, 183, 144, 100, 110, 116, 130, 147, 165, 171, 178, 173, + 183, 185, 187, 204, 131, 42, 29, 17, 26, 30, 52, 131, 222, 221, 216, 191, + 178, 202, 208, 208, 206, 194, 174, 166, 157, 151, 136, 118, 119, 102, 56, 56, + 44, 37, 33, 29, 4, 16, 12, 17, 13, 21, 72, 174, 228, 224, 115, 110, + 120, 131, 135, 151, 159, 161, 165, 158, 151, 131, 51, 18, 20, 22, 17, 17, + 14, 13, 12, 12, 9, 9, 8, 5, 14, 14, 5, 14, 10, 9, 5, 6, + 14, 22, 22, 16, 2, 28, 29, 32, 29, 25, 33, 67, 136, 122, 95, 120, + 140, 153, 162, 167, 170, 170, 169, 170, 171, 174, 183, 191, 198, 187, 186, 193, + 186, 178, 170, 167, 158, 154, 142, 123, 6, 6, 6, 10, 5, 4, 143, 134, + 119, 119, 119, 111, 118, 75, 69, 89, 161, 114, 104, 107, 115, 128, 143, 143, + 142, 134, 140, 140, 128, 116, 123, 127, 108, 51, 45, 59, 64, 67, 60, 64, + 71, 77, 92, 81, 87, 81, 65, 68, 59, 68, 88, 42, 159, 222, 233, 189, + 114, 96, 95, 85, 53, 26, 25, 26, 49, 63, 73, 72, 69, 72, 81, 226, + 232, 224, 100, 91, 106, 118, 118, 120, 130, 151, 165, 157, 150, 139, 139, 122, + 25, 24, 26, 9, 21, 24, 24, 17, 29, 45, 26, 24, 75, 72, 124, 221, + 226, 222, 123, 112, 122, 130, 128, 138, 124, 146, 139, 138, 132, 143, 136, 111, + 41, 36, 22, 34, 60, 69, 67, 68, 69, 151, 214, 201, 150, 123, 130, 139, + 148, 151, 159, 162, 166, 174, 179, 181, 178, 175, 124, 44, 40, 41, 63, 68, + 85, 142, 221, 224, 183, 166, 173, 182, 186, 179, 154, 166, 162, 155, 146, 144, + 127, 116, 57, 37, 38, 40, 48, 67, 83, 72, 118, 217, 228, 173, 134, 142, + 151, 139, 140, 155, 175, 179, 179, 80, 32, 24, 16, 38, 64, 73, 147, 226, + 226, 224, 179, 179, 175, 169, 169, 155, 140, 126, 88, 28, 24, 24, 18, 30, + 20, 29, 18, 77, 83, 76, 65, 73, 75, 76, 69, 75, 72, 29, 17, 29, + 96, 88, 75, 73, 88, 84, 73, 68, 65, 63, 37, 4, 26, 81, 89, 93, + 83, 91, 84, 85, 53, 37, 16, 81, 81, 83, 163, 234, 238, 216, 104, 104, + 108, 118, 130, 143, 151, 151, 150, 155, 167, 159, 147, 130, 136, 138, 100, 25, + 26, 28, 36, 41, 44, 30, 42, 42, 40, 36, 46, 41, 51, 55, 65, 64, + 68, 79, 148, 234, 241, 244, 236, 144, 110, 95, 33, 25, 21, 24, 25, 32, + 36, 40, 63, 217, 221, 210, 126, 124, 127, 134, 139, 153, 142, 120, 114, 119, + 97, 20, 14, 13, 18, 21, 21, 24, 24, 20, 26, 12, 32, 67, 72, 195, + 222, 220, 126, 110, 119, 128, 139, 153, 159, 163, 165, 153, 91, 25, 20, 16, + 20, 20, 44, 69, 181, 221, 221, 206, 123, 122, 126, 127, 126, 138, 136, 118, + 111, 55, 13, 9, 9, 21, 21, 28, 34, 36, 56, 229, 228, 226, 115, 106, + 118, 130, 142, 153, 163, 167, 163, 155, 147, 142, 46, 17, 20, 29, 36, 42, + 40, 20, 17, 20, 18, 26, 18, 22, 20, 25, 16, 24, 20, 26, 138, 197, + 187, 131, 100, 112, 116, 128, 131, 162, 171, 169, 173, 177, 187, 191, 202, 150, + 56, 33, 24, 40, 32, 75, 135, 224, 222, 218, 189, 174, 193, 206, 205, 202, + 195, 178, 173, 157, 158, 142, 127, 120, 110, 67, 48, 57, 55, 48, 33, 5, + 21, 85, 115, 88, 85, 122, 194, 216, 221, 111, 110, 116, 130, 130, 147, 157, + 162, 159, 158, 148, 134, 55, 22, 24, 36, 42, 64, 76, 81, 81, 77, 88, + 84, 77, 33, 14, 45, 63, 61, 53, 57, 57, 38, 16, 8, 6, 17, 20, + 13, 17, 17, 24, 24, 17, 30, 102, 134, 100, 99, 134, 140, 150, 157, 153, + 155, 150, 151, 139, 146, 146, 183, 197, 205, 178, 191, 186, 177, 169, 166, 157, + 153, 143, 119, 6, 6, 6, 6, 22, 24, 144, 124, 136, 126, 124, 136, 89, + 103, 72, 36, 158, 140, 110, 106, 108, 108, 118, 130, 132, 143, 136, 134, 142, + 132, 122, 131, 122, 95, 49, 46, 37, 57, 65, 65, 80, 91, 115, 97, 102, + 103, 91, 83, 92, 96, 89, 60, 181, 230, 236, 186, 114, 92, 89, 71, 38, + 24, 25, 26, 59, 69, 69, 71, 67, 71, 83, 210, 225, 222, 95, 89, 106, + 119, 118, 118, 127, 139, 159, 157, 148, 136, 138, 123, 33, 29, 24, 20, 36, + 49, 67, 72, 73, 80, 76, 73, 60, 85, 191, 214, 221, 220, 120, 104, 114, + 115, 130, 139, 119, 130, 138, 142, 134, 140, 139, 115, 36, 29, 26, 32, 65, + 60, 63, 59, 68, 132, 206, 204, 158, 120, 128, 131, 140, 151, 157, 163, 163, + 171, 177, 177, 174, 174, 148, 69, 40, 37, 72, 75, 77, 120, 212, 221, 189, + 163, 169, 178, 186, 187, 163, 153, 165, 167, 157, 151, 139, 126, 100, 64, 60, + 63, 87, 91, 89, 79, 97, 199, 225, 175, 140, 144, 154, 138, 142, 157, 179, + 186, 185, 130, 56, 26, 13, 48, 71, 87, 175, 230, 229, 225, 179, 178, 177, + 170, 166, 155, 140, 126, 81, 25, 22, 22, 34, 32, 33, 32, 17, 91, 91, + 80, 63, 59, 68, 60, 67, 71, 75, 37, 13, 73, 93, 76, 81, 81, 77, + 84, 75, 81, 73, 77, 34, 4, 77, 91, 87, 87, 77, 79, 64, 76, 64, + 51, 14, 84, 85, 85, 186, 238, 240, 220, 104, 103, 107, 116, 132, 146, 157, + 154, 140, 150, 151, 147, 126, 126, 139, 140, 100, 28, 28, 25, 38, 29, 41, + 46, 46, 53, 57, 59, 53, 61, 72, 73, 80, 85, 92, 131, 204, 242, 244, + 241, 213, 122, 111, 68, 29, 22, 21, 26, 32, 30, 38, 41, 71, 220, 225, + 220, 119, 118, 128, 114, 130, 131, 131, 114, 119, 118, 103, 21, 13, 13, 20, + 25, 38, 34, 40, 30, 26, 9, 88, 80, 81, 173, 218, 214, 131, 112, 119, + 127, 138, 147, 162, 163, 167, 167, 130, 40, 24, 18, 24, 40, 53, 89, 194, + 222, 222, 208, 123, 122, 124, 122, 131, 128, 126, 118, 100, 29, 12, 8, 14, + 28, 32, 32, 37, 33, 67, 226, 229, 228, 116, 107, 116, 126, 140, 153, 162, + 167, 159, 150, 144, 132, 59, 25, 17, 30, 46, 53, 53, 38, 13, 28, 91, + 88, 85, 81, 91, 81, 81, 80, 80, 48, 122, 187, 183, 120, 100, 114, 119, + 123, 124, 150, 155, 173, 169, 166, 179, 189, 193, 194, 107, 46, 40, 46, 53, + 123, 194, 226, 224, 220, 183, 173, 187, 197, 198, 197, 195, 171, 171, 163, 154, + 154, 135, 120, 120, 72, 69, 88, 130, 118, 36, 10, 67, 123, 111, 120, 142, + 151, 210, 220, 208, 112, 108, 118, 127, 124, 143, 153, 161, 161, 154, 147, 132, + 61, 26, 21, 42, 73, 88, 85, 80, 84, 85, 85, 85, 88, 57, 20, 59, + 71, 69, 69, 64, 65, 60, 60, 48, 17, 8, 20, 36, 83, 89, 57, 72, + 77, 64, 34, 144, 122, 91, 112, 124, 132, 139, 142, 120, 122, 130, 67, 55, + 77, 162, 197, 209, 185, 182, 185, 175, 167, 165, 157, 148, 139, 114, 5, 8, + 9, 17, 57, 64, 123, 120, 99, 124, 122, 112, 79, 102, 71, 30, 143, 139, + 103, 107, 106, 106, 104, 106, 112, 132, 147, 139, 132, 140, 127, 120, 124, 116, + 84, 46, 55, 63, 34, 57, 76, 111, 102, 95, 97, 87, 83, 79, 92, 72, + 56, 123, 210, 234, 230, 199, 112, 88, 81, 59, 32, 22, 25, 24, 56, 71, + 63, 63, 57, 71, 115, 228, 222, 204, 100, 100, 108, 120, 124, 119, 126, 132, + 148, 153, 143, 128, 139, 124, 30, 30, 9, 61, 51, 59, 60, 73, 84, 76, + 75, 60, 80, 102, 221, 220, 220, 209, 123, 97, 107, 118, 142, 143, 127, 116, + 124, 131, 128, 139, 138, 114, 49, 26, 26, 33, 65, 65, 75, 52, 60, 110, + 197, 199, 165, 122, 127, 127, 140, 144, 154, 161, 157, 165, 169, 174, 170, 170, + 161, 92, 44, 30, 61, 73, 76, 102, 194, 218, 198, 163, 166, 177, 185, 189, + 182, 153, 154, 166, 170, 159, 150, 138, 128, 96, 87, 84, 87, 83, 77, 75, + 81, 179, 229, 178, 142, 150, 158, 138, 140, 169, 181, 187, 190, 158, 42, 26, + 25, 61, 80, 96, 186, 233, 230, 225, 179, 178, 170, 169, 166, 158, 140, 123, + 76, 24, 22, 21, 30, 41, 42, 30, 18, 84, 99, 85, 96, 83, 83, 99, + 83, 73, 73, 37, 34, 89, 99, 77, 83, 76, 64, 57, 77, 63, 49, 73, + 25, 1, 76, 95, 80, 65, 59, 67, 75, 80, 56, 41, 17, 84, 85, 91, + 208, 238, 233, 213, 108, 104, 110, 114, 126, 147, 157, 159, 159, 153, 138, 131, + 122, 134, 138, 144, 104, 56, 29, 28, 40, 34, 40, 53, 56, 48, 45, 49, + 48, 69, 85, 95, 100, 93, 126, 198, 241, 246, 244, 236, 155, 118, 108, 55, + 26, 24, 20, 29, 33, 32, 37, 41, 69, 221, 222, 217, 127, 128, 123, 131, + 116, 110, 106, 111, 122, 112, 102, 21, 17, 12, 22, 32, 40, 41, 42, 44, + 24, 10, 81, 92, 77, 139, 208, 216, 147, 114, 120, 128, 139, 146, 155, 162, + 159, 167, 150, 103, 48, 45, 49, 72, 100, 170, 197, 221, 214, 214, 123, 120, + 124, 124, 124, 131, 119, 114, 69, 17, 13, 6, 16, 26, 30, 38, 44, 40, + 79, 224, 226, 225, 114, 110, 119, 134, 142, 153, 163, 167, 158, 151, 147, 134, + 71, 26, 18, 34, 53, 46, 49, 55, 13, 99, 97, 88, 84, 80, 92, 91, + 84, 87, 75, 52, 59, 177, 175, 118, 103, 114, 118, 122, 127, 130, 162, 170, + 178, 158, 173, 179, 189, 202, 155, 76, 52, 68, 112, 135, 213, 222, 224, 220, + 185, 167, 174, 183, 179, 183, 185, 175, 171, 166, 162, 161, 151, 127, 120, 81, + 85, 127, 136, 131, 28, 5, 76, 126, 112, 136, 143, 158, 214, 221, 217, 108, + 107, 118, 128, 120, 134, 154, 165, 158, 151, 143, 131, 88, 32, 25, 45, 79, + 76, 81, 73, 84, 80, 69, 72, 85, 88, 18, 61, 68, 63, 41, 32, 29, + 32, 40, 59, 34, 9, 14, 79, 79, 79, 80, 83, 68, 61, 56, 41, 45, + 52, 72, 102, 97, 107, 89, 65, 42, 38, 28, 33, 65, 139, 197, 209, 191, + 175, 183, 174, 169, 166, 155, 148, 139, 106, 4, 8, 13, 26, 41, 44, 134, + 102, 96, 102, 83, 100, 81, 75, 64, 36, 139, 134, 97, 115, 107, 103, 106, + 104, 102, 108, 131, 150, 139, 128, 138, 123, 128, 120, 116, 79, 63, 60, 57, + 53, 73, 108, 89, 87, 83, 79, 80, 75, 76, 91, 132, 183, 226, 232, 229, + 185, 110, 88, 64, 36, 25, 21, 25, 24, 41, 65, 64, 52, 57, 85, 191, + 228, 225, 208, 104, 99, 108, 123, 124, 138, 126, 120, 135, 148, 146, 134, 138, + 114, 33, 29, 14, 51, 53, 51, 76, 59, 59, 61, 57, 57, 80, 153, 212, + 216, 220, 209, 123, 118, 106, 116, 132, 131, 142, 131, 115, 115, 124, 130, 138, + 116, 55, 24, 21, 33, 68, 81, 57, 56, 64, 92, 185, 199, 163, 124, 119, + 124, 136, 142, 150, 158, 155, 157, 159, 165, 169, 163, 163, 120, 53, 51, 68, + 67, 81, 89, 151, 217, 201, 162, 162, 173, 186, 186, 187, 173, 148, 153, 167, + 165, 159, 148, 132, 127, 119, 112, 92, 77, 81, 79, 68, 114, 216, 189, 147, + 148, 166, 140, 140, 174, 183, 194, 197, 179, 75, 32, 25, 30, 85, 104, 204, + 233, 233, 228, 175, 177, 171, 167, 170, 159, 139, 115, 48, 22, 22, 13, 33, + 32, 38, 34, 22, 52, 71, 95, 59, 84, 79, 77, 77, 81, 71, 40, 30, + 60, 97, 87, 91, 59, 59, 76, 53, 59, 64, 64, 26, 0, 76, 84, 65, + 73, 83, 73, 76, 63, 51, 46, 24, 71, 76, 102, 218, 237, 236, 210, 111, + 107, 111, 112, 122, 143, 155, 163, 157, 151, 150, 147, 130, 135, 144, 144, 111, + 87, 32, 29, 40, 32, 34, 34, 38, 41, 40, 40, 63, 68, 97, 102, 95, + 127, 185, 234, 244, 248, 245, 221, 128, 114, 100, 41, 24, 20, 21, 30, 30, + 30, 37, 55, 110, 205, 216, 217, 128, 112, 119, 123, 114, 118, 107, 107, 119, + 120, 102, 22, 14, 16, 17, 18, 40, 44, 40, 37, 29, 8, 88, 88, 75, + 95, 189, 213, 181, 118, 116, 128, 135, 144, 151, 162, 161, 171, 171, 151, 107, + 107, 128, 159, 187, 202, 197, 225, 209, 209, 124, 123, 124, 126, 132, 126, 114, + 92, 24, 9, 10, 9, 24, 21, 28, 41, 40, 40, 81, 218, 228, 222, 112, + 104, 114, 123, 142, 153, 161, 166, 158, 150, 143, 134, 111, 36, 18, 34, 45, + 48, 45, 41, 13, 102, 100, 115, 95, 85, 91, 73, 73, 79, 85, 72, 36, + 122, 174, 127, 97, 114, 119, 123, 130, 126, 150, 155, 167, 155, 166, 171, 183, + 191, 202, 165, 131, 150, 177, 213, 221, 224, 218, 218, 181, 166, 163, 173, 177, + 174, 179, 177, 177, 170, 162, 154, 161, 144, 124, 87, 93, 114, 143, 123, 24, + 5, 64, 108, 126, 124, 140, 171, 218, 216, 220, 110, 106, 116, 131, 126, 142, + 154, 163, 159, 151, 140, 134, 108, 42, 32, 45, 76, 76, 75, 83, 92, 89, + 83, 71, 87, 63, 28, 53, 67, 60, 34, 37, 36, 25, 24, 57, 45, 10, + 13, 83, 67, 73, 71, 64, 63, 49, 40, 41, 34, 37, 32, 34, 49, 44, + 29, 26, 29, 24, 18, 36, 64, 147, 205, 216, 194, 171, 181, 177, 170, 166, + 158, 144, 136, 97, 2, 6, 12, 28, 4, 2, 132, 97, 107, 107, 96, 89, + 119, 81, 64, 30, 142, 128, 100, 80, 104, 112, 106, 106, 106, 102, 111, 131, + 142, 139, 138, 135, 114, 123, 123, 114, 97, 84, 88, 79, 97, 96, 115, 93, + 84, 81, 83, 93, 132, 181, 214, 232, 236, 232, 208, 163, 96, 75, 46, 28, + 21, 21, 25, 28, 51, 60, 61, 59, 67, 122, 214, 218, 226, 204, 93, 93, + 111, 119, 120, 136, 115, 119, 123, 142, 136, 131, 136, 116, 37, 33, 45, 80, + 77, 49, 60, 51, 67, 53, 56, 52, 79, 165, 210, 213, 208, 191, 124, 104, + 112, 128, 142, 136, 144, 147, 135, 116, 112, 127, 132, 118, 49, 37, 37, 40, + 69, 73, 67, 52, 57, 64, 179, 201, 163, 116, 123, 123, 135, 140, 147, 157, + 161, 148, 148, 153, 153, 161, 162, 138, 84, 55, 40, 53, 75, 77, 127, 208, + 209, 163, 161, 171, 179, 185, 187, 187, 177, 146, 153, 171, 165, 154, 148, 138, + 128, 130, 132, 106, 83, 72, 72, 83, 181, 213, 163, 153, 165, 140, 143, 179, + 189, 201, 201, 194, 140, 69, 29, 30, 92, 148, 214, 233, 233, 229, 183, 178, + 166, 167, 167, 158, 134, 103, 29, 22, 21, 17, 40, 32, 34, 37, 25, 32, + 93, 99, 85, 89, 83, 80, 76, 73, 67, 38, 34, 63, 100, 69, 77, 63, + 80, 63, 52, 63, 64, 61, 34, 6, 79, 88, 61, 64, 64, 52, 67, 53, + 42, 40, 40, 72, 88, 157, 222, 241, 233, 208, 111, 110, 115, 107, 118, 138, + 151, 159, 165, 161, 154, 148, 142, 126, 131, 147, 130, 93, 33, 34, 33, 40, + 38, 53, 57, 51, 42, 46, 61, 77, 100, 96, 115, 175, 232, 241, 246, 246, + 242, 166, 116, 114, 87, 30, 21, 14, 21, 28, 29, 38, 40, 56, 171, 206, + 214, 204, 123, 116, 122, 127, 115, 115, 118, 102, 106, 119, 107, 28, 16, 13, + 16, 33, 41, 42, 34, 37, 29, 6, 80, 87, 80, 80, 115, 197, 197, 124, + 116, 124, 132, 140, 142, 150, 147, 174, 177, 175, 166, 182, 195, 198, 206, 205, + 213, 202, 209, 161, 124, 124, 132, 135, 130, 120, 114, 34, 13, 12, 8, 14, + 24, 25, 33, 36, 37, 41, 161, 221, 224, 222, 112, 99, 114, 120, 140, 148, + 159, 159, 162, 153, 147, 144, 138, 56, 30, 26, 48, 48, 45, 42, 16, 73, + 103, 115, 106, 97, 110, 91, 92, 84, 77, 84, 38, 61, 166, 143, 102, 103, + 118, 120, 124, 127, 131, 155, 157, 154, 163, 166, 178, 183, 199, 209, 205, 214, + 216, 221, 220, 218, 224, 204, 182, 161, 162, 142, 162, 167, 177, 177, 175, 177, + 167, 166, 159, 159, 140, 118, 96, 131, 139, 63, 20, 5, 56, 108, 108, 115, + 127, 155, 216, 226, 214, 110, 104, 115, 126, 120, 147, 155, 159, 155, 151, 143, + 136, 122, 63, 33, 51, 76, 72, 81, 81, 84, 83, 84, 87, 72, 75, 22, + 42, 65, 55, 26, 34, 18, 20, 29, 32, 36, 12, 16, 40, 63, 36, 52, + 53, 63, 38, 33, 29, 28, 22, 30, 29, 36, 24, 22, 25, 21, 24, 20, + 59, 65, 170, 212, 218, 182, 167, 179, 175, 170, 166, 158, 143, 132, 52, 2, + 6, 13, 38, 2, 1, 135, 111, 89, 100, 102, 87, 85, 88, 64, 26, 128, + 119, 96, 85, 71, 85, 115, 110, 106, 104, 102, 107, 132, 146, 143, 143, 136, + 118, 116, 119, 148, 126, 116, 115, 120, 124, 131, 132, 134, 134, 154, 186, 212, + 225, 236, 234, 229, 216, 186, 111, 84, 51, 30, 22, 18, 22, 26, 41, 55, + 48, 59, 61, 127, 182, 228, 225, 226, 212, 108, 93, 104, 115, 130, 132, 122, + 126, 119, 128, 130, 132, 135, 123, 91, 67, 37, 69, 80, 80, 60, 59, 64, + 77, 55, 65, 99, 185, 205, 209, 212, 155, 110, 112, 118, 126, 131, 143, 143, + 144, 143, 134, 111, 116, 130, 123, 95, 49, 44, 44, 73, 56, 59, 52, 56, + 55, 158, 198, 163, 114, 119, 123, 135, 143, 147, 154, 158, 146, 144, 139, 139, + 146, 154, 147, 100, 56, 29, 49, 68, 79, 107, 190, 209, 170, 158, 169, 178, + 181, 183, 185, 187, 177, 150, 154, 166, 163, 155, 147, 143, 132, 132, 131, 100, + 72, 77, 77, 127, 218, 175, 154, 162, 144, 179, 183, 199, 205, 204, 206, 186, + 110, 40, 45, 102, 179, 230, 232, 233, 222, 178, 177, 174, 169, 166, 146, 134, + 83, 24, 21, 21, 22, 37, 37, 32, 38, 29, 29, 81, 97, 84, 89, 77, + 76, 84, 75, 75, 46, 34, 64, 91, 76, 76, 57, 67, 52, 60, 56, 61, + 63, 32, 1, 84, 88, 52, 64, 53, 60, 44, 36, 45, 63, 59, 71, 96, + 206, 233, 228, 237, 197, 112, 115, 115, 116, 110, 127, 147, 157, 159, 161, 158, + 154, 150, 136, 139, 132, 154, 108, 89, 69, 65, 71, 73, 71, 69, 75, 75, + 69, 71, 91, 108, 96, 171, 228, 234, 238, 245, 241, 216, 122, 118, 108, 56, + 28, 21, 17, 25, 26, 34, 36, 49, 171, 208, 206, 216, 195, 110, 124, 132, + 123, 128, 130, 134, 123, 104, 120, 115, 41, 13, 12, 25, 29, 30, 40, 44, + 30, 26, 5, 79, 80, 75, 81, 84, 122, 195, 132, 118, 122, 126, 131, 134, + 134, 135, 138, 153, 182, 181, 190, 193, 204, 210, 212, 201, 206, 186, 124, 123, + 132, 134, 131, 122, 122, 57, 13, 10, 9, 5, 21, 26, 32, 41, 38, 38, + 65, 199, 213, 221, 218, 112, 102, 108, 118, 132, 144, 157, 159, 159, 155, 146, + 139, 124, 107, 46, 25, 28, 49, 46, 45, 20, 69, 103, 116, 93, 102, 110, + 71, 103, 83, 77, 76, 45, 37, 153, 175, 110, 95, 112, 122, 124, 123, 126, + 139, 140, 151, 163, 169, 170, 175, 181, 195, 194, 204, 210, 212, 216, 213, 206, + 189, 173, 161, 139, 139, 138, 142, 159, 167, 175, 174, 171, 161, 161, 162, 159, + 132, 102, 138, 91, 28, 8, 8, 53, 103, 111, 124, 138, 162, 216, 221, 217, + 115, 107, 114, 122, 122, 157, 157, 157, 155, 151, 143, 132, 123, 106, 44, 56, + 80, 85, 75, 75, 80, 80, 85, 84, 92, 84, 36, 37, 67, 55, 29, 21, + 29, 29, 32, 28, 33, 9, 16, 69, 60, 57, 49, 38, 40, 29, 34, 29, + 38, 29, 25, 36, 29, 28, 22, 22, 17, 21, 16, 53, 79, 199, 214, 217, + 162, 162, 179, 178, 170, 165, 157, 142, 130, 42, 2, 4, 12, 32, 4, 10, + 124, 116, 91, 93, 102, 107, 73, 92, 64, 30, 122, 119, 97, 91, 85, 69, + 68, 87, 111, 111, 107, 104, 106, 127, 144, 139, 130, 123, 119, 148, 165, 175, + 175, 183, 189, 185, 191, 189, 194, 206, 213, 225, 228, 232, 230, 218, 217, 177, + 127, 81, 52, 33, 24, 21, 22, 34, 42, 52, 46, 71, 120, 159, 183, 210, + 213, 220, 225, 206, 114, 87, 114, 107, 116, 130, 144, 147, 130, 122, 120, 136, + 135, 140, 119, 106, 108, 110, 116, 104, 84, 68, 55, 75, 53, 72, 140, 198, + 209, 209, 201, 153, 118, 107, 110, 126, 138, 143, 132, 147, 147, 140, 131, 110, + 123, 122, 108, 92, 57, 53, 75, 71, 59, 53, 44, 53, 124, 202, 177, 111, + 116, 124, 138, 142, 148, 157, 139, 134, 130, 127, 126, 128, 142, 146, 127, 92, + 60, 32, 56, 71, 93, 150, 204, 174, 155, 161, 171, 175, 179, 178, 181, 182, + 170, 151, 159, 166, 159, 155, 143, 132, 131, 127, 93, 75, 68, 72, 79, 178, + 210, 158, 155, 140, 185, 195, 204, 208, 210, 209, 208, 178, 124, 132, 182, 222, + 234, 233, 233, 214, 186, 179, 173, 170, 159, 136, 120, 46, 20, 18, 20, 25, + 41, 36, 45, 45, 36, 30, 85, 100, 64, 84, 77, 71, 83, 88, 77, 61, + 34, 48, 95, 65, 77, 56, 51, 51, 63, 57, 49, 65, 25, 4, 76, 81, + 51, 63, 42, 59, 59, 53, 61, 65, 75, 130, 201, 222, 234, 236, 228, 182, + 114, 119, 108, 119, 123, 112, 136, 148, 153, 155, 154, 155, 153, 151, 143, 127, + 142, 157, 108, 103, 103, 100, 97, 100, 96, 91, 91, 87, 83, 89, 128, 181, + 226, 230, 237, 241, 240, 230, 142, 116, 120, 104, 42, 22, 18, 21, 29, 33, + 32, 48, 175, 204, 209, 210, 205, 197, 119, 111, 124, 119, 138, 120, 126, 122, + 130, 112, 115, 95, 17, 22, 16, 16, 30, 41, 41, 34, 21, 10, 71, 80, + 76, 67, 72, 83, 103, 173, 170, 124, 124, 123, 126, 127, 128, 128, 130, 130, + 131, 140, 159, 163, 166, 177, 182, 159, 124, 128, 127, 126, 124, 122, 115, 46, + 13, 9, 8, 4, 6, 14, 21, 30, 40, 37, 44, 158, 213, 214, 217, 212, + 114, 103, 114, 120, 134, 143, 153, 161, 161, 157, 150, 151, 134, 136, 100, 63, + 40, 33, 34, 48, 21, 71, 103, 111, 110, 92, 93, 73, 79, 96, 73, 79, + 42, 29, 124, 167, 135, 95, 103, 118, 123, 126, 120, 122, 126, 150, 161, 158, + 167, 163, 162, 158, 153, 173, 185, 189, 197, 194, 183, 158, 136, 140, 139, 136, + 138, 139, 136, 139, 151, 157, 154, 151, 158, 148, 140, 114, 131, 91, 28, 0, + 9, 5, 46, 91, 120, 142, 138, 189, 205, 216, 216, 118, 106, 108, 123, 144, + 154, 166, 155, 153, 151, 142, 134, 124, 123, 91, 56, 44, 55, 73, 79, 87, + 80, 77, 89, 68, 103, 29, 20, 56, 37, 42, 30, 30, 37, 33, 25, 33, + 10, 12, 59, 61, 63, 65, 65, 57, 48, 44, 33, 40, 37, 18, 34, 37, + 37, 28, 25, 21, 20, 30, 40, 108, 210, 224, 217, 154, 157, 173, 177, 170, + 163, 157, 144, 128, 30, 2, 4, 10, 30, 4, 1, 118, 85, 85, 79, 81, + 73, 73, 72, 60, 30, 114, 112, 97, 84, 81, 80, 68, 53, 61, 84, 104, + 107, 103, 106, 112, 120, 128, 135, 135, 139, 139, 150, 171, 185, 194, 198, 208, + 204, 209, 216, 220, 221, 217, 217, 214, 197, 158, 118, 79, 48, 32, 24, 20, + 20, 30, 38, 53, 42, 128, 166, 202, 212, 199, 206, 208, 213, 209, 154, 110, + 89, 135, 116, 124, 131, 132, 126, 132, 139, 132, 127, 146, 135, 136, 130, 139, + 144, 159, 140, 127, 100, 80, 46, 45, 75, 163, 199, 202, 201, 206, 144, 119, + 115, 116, 144, 146, 138, 138, 132, 131, 132, 139, 128, 108, 123, 119, 106, 81, + 106, 91, 84, 51, 59, 48, 51, 89, 185, 187, 128, 108, 124, 135, 139, 138, + 138, 134, 127, 124, 118, 118, 116, 118, 132, 134, 108, 75, 26, 42, 65, 79, + 104, 179, 193, 151, 155, 163, 171, 174, 175, 175, 181, 179, 158, 150, 163, 165, + 153, 138, 136, 128, 103, 64, 41, 63, 68, 72, 99, 204, 170, 163, 147, 187, + 195, 209, 210, 213, 209, 216, 210, 205, 209, 226, 230, 230, 233, 232, 201, 181, + 182, 177, 166, 140, 131, 85, 25, 20, 18, 21, 30, 42, 38, 46, 41, 38, + 25, 71, 73, 92, 76, 85, 93, 91, 88, 77, 73, 33, 38, 64, 85, 88, + 49, 55, 49, 57, 63, 63, 60, 26, 1, 72, 73, 69, 52, 60, 53, 59, + 68, 106, 167, 187, 218, 216, 232, 221, 226, 224, 150, 116, 118, 124, 130, 142, + 123, 116, 135, 140, 142, 142, 144, 148, 148, 153, 142, 138, 148, 159, 146, 169, + 179, 189, 198, 204, 208, 212, 217, 220, 217, 222, 222, 226, 232, 237, 237, 224, + 154, 118, 122, 118, 81, 26, 18, 18, 21, 30, 36, 76, 150, 221, 206, 201, + 214, 216, 158, 124, 128, 135, 130, 131, 124, 138, 119, 122, 111, 112, 96, 67, + 48, 20, 17, 12, 36, 41, 32, 28, 9, 69, 71, 65, 65, 72, 61, 79, + 91, 99, 107, 112, 151, 155, 150, 147, 147, 143, 140, 136, 131, 131, 128, 128, + 128, 130, 127, 124, 124, 122, 120, 118, 81, 29, 12, 9, 9, 4, 4, 22, + 20, 32, 37, 38, 41, 136, 197, 206, 209, 214, 205, 108, 104, 107, 120, 134, + 136, 139, 146, 153, 153, 148, 140, 146, 138, 142, 112, 93, 79, 59, 32, 21, + 55, 104, 95, 107, 80, 99, 95, 93, 97, 73, 77, 59, 25, 81, 148, 177, + 114, 102, 110, 118, 119, 122, 123, 124, 127, 130, 132, 131, 132, 140, 130, 128, + 126, 128, 130, 127, 126, 128, 131, 131, 136, 136, 139, 142, 139, 139, 142, 135, + 130, 130, 128, 127, 123, 135, 138, 99, 26, 0, 5, 5, 5, 45, 89, 97, + 132, 191, 197, 195, 213, 206, 115, 111, 116, 120, 147, 151, 153, 144, 153, 150, + 143, 136, 127, 122, 120, 119, 97, 67, 63, 49, 84, 79, 75, 76, 65, 89, + 32, 13, 72, 26, 26, 28, 41, 36, 38, 25, 30, 12, 12, 51, 55, 56, + 52, 40, 42, 30, 24, 20, 24, 26, 18, 30, 41, 36, 29, 32, 34, 14, + 42, 51, 138, 220, 222, 210, 146, 151, 161, 173, 173, 163, 157, 143, 126, 25, + 4, 4, 12, 24, 6, 2, 77, 76, 75, 79, 73, 73, 80, 67, 61, 26, + 93, 104, 97, 88, 99, 85, 77, 68, 55, 48, 53, 71, 95, 104, 106, 104, + 104, 111, 108, 116, 118, 122, 127, 142, 165, 177, 186, 201, 205, 202, 202, 202, + 199, 181, 158, 118, 84, 65, 44, 30, 24, 18, 18, 21, 29, 38, 38, 104, + 225, 193, 202, 194, 206, 201, 210, 177, 140, 118, 104, 115, 115, 116, 112, 118, + 111, 116, 115, 120, 119, 123, 127, 120, 130, 142, 134, 138, 138, 135, 139, 148, + 79, 45, 63, 96, 216, 190, 193, 197, 202, 138, 122, 126, 136, 119, 140, 138, + 135, 123, 126, 123, 123, 123, 120, 120, 122, 108, 114, 108, 102, 77, 49, 51, + 52, 46, 57, 144, 191, 151, 106, 123, 127, 131, 134, 132, 127, 126, 119, 118, + 114, 110, 107, 103, 108, 122, 85, 72, 65, 49, 61, 77, 130, 197, 161, 151, + 158, 161, 159, 166, 169, 174, 178, 174, 155, 153, 159, 147, 136, 136, 115, 69, + 34, 33, 32, 71, 65, 63, 157, 182, 174, 134, 182, 197, 198, 205, 210, 217, + 217, 221, 220, 222, 230, 228, 230, 226, 217, 190, 186, 179, 175, 161, 134, 99, + 38, 22, 20, 18, 17, 34, 40, 37, 40, 45, 41, 26, 56, 79, 92, 89, + 73, 76, 71, 83, 65, 41, 33, 32, 64, 89, 73, 46, 60, 57, 59, 63, + 72, 38, 29, 4, 64, 69, 59, 67, 32, 52, 79, 185, 210, 205, 213, 234, + 212, 225, 240, 221, 190, 120, 118, 119, 138, 140, 131, 139, 131, 127, 127, 124, + 127, 130, 123, 127, 130, 136, 146, 143, 132, 167, 170, 182, 190, 198, 202, 208, + 213, 216, 218, 222, 224, 229, 229, 230, 226, 199, 138, 115, 118, 124, 114, 49, + 20, 17, 18, 28, 34, 83, 181, 190, 190, 202, 208, 228, 205, 140, 120, 111, + 119, 116, 131, 126, 115, 128, 115, 114, 126, 96, 83, 73, 63, 44, 16, 21, + 40, 28, 28, 8, 64, 73, 61, 46, 38, 48, 52, 53, 51, 56, 57, 75, + 96, 103, 106, 103, 100, 107, 111, 111, 112, 111, 110, 111, 118, 115, 114, 107, + 102, 72, 30, 17, 9, 8, 5, 2, 4, 8, 18, 22, 40, 37, 44, 140, + 190, 197, 198, 202, 209, 147, 108, 100, 110, 126, 122, 127, 135, 136, 144, 140, + 153, 148, 138, 143, 126, 138, 148, 144, 103, 67, 38, 24, 69, 106, 85, 100, + 79, 93, 89, 97, 71, 79, 73, 20, 69, 135, 144, 150, 144, 139, 136, 143, + 138, 116, 115, 118, 118, 123, 126, 126, 123, 122, 127, 119, 102, 96, 89, 81, + 85, 97, 114, 123, 130, 134, 135, 132, 127, 132, 132, 135, 138, 136, 132, 132, + 123, 96, 28, 9, 1, 2, 5, 6, 44, 99, 132, 194, 204, 201, 198, 214, + 187, 114, 106, 120, 128, 126, 140, 147, 150, 146, 147, 143, 139, 135, 128, 120, + 118, 114, 126, 111, 76, 53, 53, 56, 68, 61, 88, 29, 12, 67, 42, 28, + 33, 45, 28, 29, 32, 22, 14, 17, 55, 71, 49, 45, 34, 33, 32, 22, + 24, 32, 20, 38, 34, 28, 20, 20, 21, 26, 14, 42, 51, 158, 220, 225, + 208, 142, 146, 150, 163, 171, 163, 155, 143, 118, 13, 5, 2, 12, 24, 14, + 17, 72, 75, 76, 80, 72, 77, 84, 85, 59, 25, 99, 99, 93, 97, 84, + 80, 72, 67, 59, 55, 45, 38, 42, 48, 65, 83, 96, 97, 103, 103, 103, + 104, 106, 111, 119, 124, 128, 135, 153, 150, 144, 142, 115, 91, 76, 57, 34, + 29, 28, 22, 17, 18, 22, 21, 42, 49, 41, 146, 191, 212, 193, 194, 178, + 155, 134, 122, 108, 89, 83, 79, 81, 85, 88, 91, 91, 95, 99, 100, 99, + 102, 104, 110, 115, 119, 118, 116, 120, 126, 126, 114, 80, 42, 72, 154, 175, + 181, 155, 158, 135, 128, 107, 110, 115, 110, 116, 115, 119, 111, 122, 123, 114, + 127, 123, 118, 108, 106, 106, 102, 93, 45, 25, 33, 48, 41, 45, 100, 171, + 178, 104, 115, 112, 115, 116, 116, 114, 118, 112, 112, 108, 106, 103, 103, 100, + 99, 91, 80, 46, 42, 48, 60, 92, 155, 173, 147, 153, 157, 155, 150, 159, + 165, 166, 170, 167, 158, 140, 136, 139, 123, 85, 46, 32, 26, 26, 49, 63, + 65, 126, 195, 175, 151, 162, 182, 195, 198, 201, 201, 201, 199, 201, 198, 199, + 199, 201, 199, 191, 182, 177, 174, 165, 139, 111, 37, 18, 18, 18, 20, 20, + 34, 32, 34, 42, 40, 41, 34, 33, 36, 40, 49, 33, 36, 42, 36, 34, + 44, 42, 38, 37, 48, 52, 57, 44, 45, 44, 42, 41, 44, 22, 2, 24, + 52, 56, 36, 40, 61, 154, 202, 198, 204, 218, 242, 212, 206, 198, 148, 120, + 114, 122, 132, 135, 134, 136, 136, 134, 132, 126, 130, 131, 128, 127, 123, 120, + 122, 123, 124, 122, 122, 123, 123, 132, 140, 159, 182, 187, 201, 201, 198, 195, + 197, 198, 185, 158, 119, 114, 116, 123, 123, 97, 25, 16, 12, 28, 32, 59, + 165, 186, 191, 201, 193, 201, 170, 139, 127, 111, 128, 115, 116, 118, 124, 107, + 112, 100, 107, 100, 120, 100, 103, 89, 79, 20, 18, 38, 26, 25, 9, 72, + 67, 34, 30, 26, 30, 29, 34, 25, 26, 21, 20, 20, 22, 22, 18, 20, + 18, 17, 17, 16, 16, 13, 14, 18, 14, 13, 10, 10, 10, 6, 6, 6, + 2, 2, 5, 13, 20, 13, 41, 33, 52, 136, 181, 181, 178, 193, 201, 171, + 122, 104, 112, 122, 116, 120, 127, 126, 128, 126, 130, 139, 135, 124, 140, 135, + 118, 115, 116, 153, 130, 37, 25, 57, 53, 57, 59, 63, 64, 68, 68, 73, + 73, 56, 16, 38, 84, 97, 88, 87, 83, 91, 95, 99, 103, 103, 99, 99, + 111, 112, 103, 99, 96, 73, 34, 13, 8, 4, 4, 5, 12, 53, 91, 100, + 104, 106, 102, 95, 96, 100, 99, 96, 95, 92, 80, 38, 16, 2, 0, 1, + 12, 10, 14, 84, 140, 179, 195, 183, 181, 201, 199, 134, 110, 114, 124, 118, + 119, 118, 127, 128, 130, 134, 130, 122, 124, 123, 123, 120, 112, 112, 128, 114, + 96, 84, 85, 76, 75, 57, 46, 14, 38, 53, 60, 45, 46, 32, 28, 29, + 24, 10, 16, 51, 40, 26, 33, 22, 16, 14, 21, 21, 21, 26, 22, 18, + 17, 13, 18, 14, 17, 37, 48, 63, 178, 225, 225, 204, 138, 143, 148, 158, + 166, 161, 154, 139, 96, 8, 4, 2, 6, 16, 10, 5, 84, 80, 79, 80, + 79, 87, 80, 73, 56, 25, 88, 95, 77, 83, 75, 75, 64, 65, 57, 56, + 49, 45, 40, 38, 33, 32, 33, 41, 46, 57, 68, 88, 88, 89, 89, 85, + 85, 80, 77, 76, 72, 63, 42, 32, 28, 24, 24, 18, 16, 16, 25, 33, + 33, 29, 37, 26, 26, 80, 126, 144, 139, 134, 135, 87, 75, 64, 59, 44, + 25, 28, 28, 24, 22, 22, 25, 26, 28, 33, 33, 30, 37, 68, 77, 84, + 81, 80, 79, 95, 88, 61, 33, 46, 68, 130, 131, 142, 139, 143, 115, 92, + 81, 81, 96, 97, 96, 93, 99, 100, 106, 103, 102, 102, 104, 99, 92, 89, + 89, 83, 49, 22, 22, 20, 24, 44, 34, 42, 103, 122, 104, 110, 88, 106, + 107, 111, 108, 110, 107, 103, 96, 96, 89, 97, 89, 92, 91, 76, 24, 26, + 59, 40, 67, 93, 157, 166, 146, 153, 151, 151, 151, 154, 154, 153, 148, 143, + 138, 138, 123, 97, 49, 32, 30, 30, 32, 38, 68, 61, 161, 183, 178, 163, + 118, 150, 181, 183, 187, 190, 189, 187, 185, 182, 175, 174, 177, 178, 177, 174, + 159, 143, 131, 103, 40, 21, 18, 18, 24, 28, 25, 30, 22, 22, 33, 34, + 38, 37, 42, 42, 56, 44, 46, 44, 48, 46, 46, 44, 44, 42, 37, 45, + 44, 30, 26, 13, 13, 20, 20, 18, 18, 2, 9, 13, 21, 38, 33, 57, + 144, 193, 209, 197, 199, 173, 143, 128, 119, 111, 120, 114, 130, 128, 128, 128, + 130, 130, 130, 126, 126, 123, 122, 122, 120, 112, 118, 119, 119, 119, 119, 116, + 119, 116, 114, 112, 111, 111, 112, 115, 116, 116, 114, 111, 111, 110, 111, 111, + 118, 120, 126, 119, 49, 13, 14, 17, 28, 30, 128, 186, 171, 182, 197, 169, + 135, 128, 111, 110, 96, 103, 100, 97, 104, 100, 97, 88, 93, 93, 92, 89, + 97, 91, 83, 76, 20, 21, 33, 26, 20, 12, 61, 65, 30, 24, 24, 24, + 22, 22, 20, 17, 14, 12, 13, 12, 12, 10, 12, 9, 9, 9, 6, 6, + 6, 8, 6, 5, 4, 5, 2, 2, 2, 4, 8, 6, 9, 17, 13, 16, + 26, 41, 41, 87, 166, 173, 185, 177, 154, 140, 115, 104, 114, 110, 116, 110, + 114, 111, 110, 112, 119, 124, 126, 119, 116, 126, 126, 114, 111, 120, 126, 100, + 24, 46, 55, 52, 52, 46, 55, 53, 55, 51, 60, 56, 28, 17, 20, 24, + 21, 16, 13, 14, 12, 9, 9, 10, 9, 8, 6, 8, 5, 5, 5, 5, + 4, 2, 2, 2, 1, 1, 2, 4, 2, 4, 2, 1, 1, 2, 2, 1, + 1, 2, 1, 1, 1, 2, 0, 0, 0, 1, 4, 8, 12, 14, 89, 157, + 198, 189, 195, 185, 154, 126, 115, 108, 112, 115, 108, 106, 114, 118, 116, 120, + 123, 119, 115, 112, 112, 108, 100, 104, 114, 111, 106, 77, 69, 56, 60, 51, + 33, 29, 25, 26, 25, 29, 28, 28, 25, 36, 28, 24, 13, 9, 45, 41, + 20, 14, 40, 71, 115, 153, 140, 84, 18, 30, 34, 9, 14, 14, 22, 14, + 41, 36, 88, 202, 224, 230, 199, 135, 138, 143, 154, 163, 159, 148, 135, 60, + 2, 5, 2, 2, 1, 1, 0, 29, 29, 32, 51, 52, 53, 61, 57, 53, + 24, 38, 44, 40, 41, 42, 40, 38, 36, 34, 34, 33, 30, 26, 29, 25, + 24, 22, 24, 22, 25, 24, 21, 21, 21, 24, 22, 24, 22, 22, 22, 22, + 22, 22, 17, 14, 12, 14, 21, 33, 25, 34, 40, 37, 25, 25, 36, 26, + 14, 26, 34, 33, 30, 28, 18, 26, 28, 20, 14, 16, 16, 16, 14, 13, + 14, 13, 13, 13, 16, 14, 12, 8, 12, 14, 13, 13, 18, 22, 5, 9, + 20, 20, 25, 14, 32, 42, 44, 63, 29, 4, 5, 16, 16, 13, 13, 14, + 17, 13, 13, 16, 13, 13, 14, 16, 20, 20, 18, 18, 17, 22, 26, 34, + 44, 41, 34, 26, 33, 30, 24, 20, 9, 10, 16, 13, 12, 10, 10, 8, + 6, 10, 6, 5, 10, 14, 6, 6, 13, 10, 12, 16, 13, 25, 59, 91, + 151, 154, 142, 140, 144, 143, 146, 148, 146, 143, 138, 134, 123, 85, 44, 32, + 29, 29, 28, 18, 41, 64, 60, 147, 181, 194, 175, 132, 107, 108, 124, 119, + 119, 112, 127, 122, 118, 115, 115, 115, 118, 114, 112, 108, 65, 49, 28, 20, + 18, 20, 21, 18, 18, 10, 8, 18, 8, 8, 8, 8, 20, 6, 6, 5, + 6, 8, 6, 6, 8, 8, 6, 6, 10, 21, 22, 34, 37, 65, 75, 79, + 80, 64, 57, 30, 5, 45, 55, 52, 28, 34, 55, 88, 120, 139, 126, 124, + 110, 93, 92, 93, 99, 100, 102, 126, 126, 120, 124, 124, 126, 126, 124, 124, + 123, 120, 122, 122, 118, 120, 120, 120, 120, 118, 116, 116, 115, 116, 115, 115, + 115, 114, 112, 114, 114, 112, 112, 112, 114, 116, 119, 123, 126, 122, 88, 21, + 12, 13, 14, 20, 29, 87, 151, 173, 138, 131, 102, 88, 83, 84, 85, 88, + 89, 89, 91, 91, 93, 92, 91, 91, 92, 87, 87, 83, 81, 76, 48, 21, + 18, 20, 21, 21, 10, 59, 22, 22, 14, 14, 13, 17, 9, 10, 12, 10, + 6, 6, 5, 5, 5, 6, 6, 6, 6, 5, 5, 5, 6, 8, 9, 10, + 10, 10, 10, 12, 13, 16, 17, 25, 12, 17, 29, 49, 41, 51, 143, 140, + 130, 123, 118, 108, 107, 99, 93, 99, 100, 106, 103, 100, 102, 108, 106, 106, + 111, 110, 108, 108, 104, 100, 95, 93, 95, 92, 33, 38, 5, 4, 5, 4, + 2, 4, 2, 4, 4, 1, 4, 2, 1, 10, 9, 6, 2, 9, 4, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 2, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 4, 4, 13, 9, 12, 17, 107, 150, 170, 154, 157, 131, 112, + 106, 100, 97, 100, 93, 99, 100, 96, 96, 106, 107, 110, 107, 106, 102, 96, + 96, 97, 95, 93, 87, 53, 20, 9, 5, 5, 5, 5, 4, 5, 4, 2, + 4, 5, 5, 5, 5, 6, 6, 13, 9, 41, 14, 32, 75, 138, 158, 171, + 186, 182, 169, 100, 21, 17, 49, 65, 56, 57, 48, 34, 60, 112, 214, 230, + 230, 189, 132, 138, 142, 154, 161, 158, 146, 130, 28, 2, 4, 5, 9, 14, + 29, 41, 85, 84, 83, 79, 57, 32, 40, 26, 38, 13, 0, 2, 2, 16, + 1, 2, 9, 12, 2, 2, 9, 10, 10, 6, 10, 10, 10, 5, 5, 14, + 13, 13, 12, 12, 12, 10, 9, 9, 9, 9, 9, 12, 10, 13, 20, 21, + 30, 28, 37, 42, 40, 44, 48, 51, 63, 59, 30, 34, 42, 52, 37, 33, + 29, 28, 32, 30, 28, 26, 28, 29, 29, 26, 25, 24, 22, 25, 29, 26, + 24, 22, 20, 17, 14, 20, 29, 33, 14, 24, 37, 17, 20, 17, 38, 34, + 44, 48, 46, 40, 33, 30, 34, 33, 30, 28, 32, 30, 30, 28, 29, 32, + 32, 29, 30, 30, 24, 26, 26, 30, 24, 29, 55, 48, 49, 49, 52, 46, + 33, 38, 33, 33, 36, 38, 36, 30, 32, 32, 30, 26, 29, 30, 28, 25, + 32, 32, 29, 28, 34, 41, 42, 53, 57, 48, 46, 92, 140, 148, 158, 142, + 147, 142, 146, 136, 139, 126, 114, 67, 36, 32, 30, 21, 20, 18, 32, 56, + 63, 128, 165, 190, 199, 171, 119, 81, 61, 59, 55, 51, 51, 41, 41, 38, + 42, 36, 38, 37, 37, 33, 36, 30, 30, 29, 32, 22, 36, 29, 33, 29, + 29, 29, 29, 28, 21, 20, 18, 6, 5, 26, 83, 110, 72, 77, 79, 79, + 73, 64, 69, 77, 83, 103, 89, 102, 103, 75, 81, 76, 84, 72, 45, 9, + 55, 49, 61, 57, 26, 41, 55, 73, 60, 60, 60, 52, 52, 44, 40, 37, + 32, 34, 32, 33, 28, 28, 25, 24, 22, 26, 22, 26, 24, 24, 22, 24, + 21, 22, 20, 22, 21, 26, 24, 25, 24, 21, 24, 29, 34, 55, 89, 104, + 114, 116, 118, 120, 120, 123, 124, 120, 106, 34, 13, 10, 12, 17, 28, 26, + 45, 53, 52, 56, 59, 60, 17, 12, 12, 12, 9, 9, 9, 9, 6, 8, + 8, 8, 9, 9, 9, 10, 9, 9, 10, 10, 8, 5, 8, 6, 8, 12, + 14, 30, 38, 37, 45, 51, 41, 36, 36, 36, 25, 5, 32, 46, 40, 38, + 26, 29, 25, 30, 20, 10, 16, 28, 49, 55, 52, 49, 45, 51, 45, 46, + 48, 41, 36, 8, 33, 49, 51, 41, 65, 88, 84, 93, 81, 76, 71, 69, + 68, 61, 38, 51, 36, 40, 36, 32, 28, 30, 29, 29, 28, 29, 28, 28, + 29, 29, 28, 32, 32, 28, 8, 10, 55, 60, 61, 67, 68, 61, 72, 60, + 56, 56, 21, 5, 53, 56, 63, 52, 56, 45, 51, 21, 12, 9, 8, 4, + 9, 9, 8, 6, 5, 4, 6, 5, 2, 5, 4, 4, 2, 9, 12, 10, + 5, 13, 10, 5, 2, 2, 5, 4, 6, 8, 8, 6, 6, 6, 8, 18, + 24, 10, 17, 13, 96, 99, 104, 95, 102, 88, 76, 52, 40, 38, 25, 24, + 22, 25, 18, 18, 18, 18, 13, 16, 14, 10, 9, 10, 13, 12, 10, 10, + 8, 9, 22, 24, 34, 36, 21, 32, 40, 46, 52, 48, 45, 24, 22, 17, + 12, 33, 34, 28, 13, 44, 81, 144, 189, 191, 187, 198, 186, 147, 100, 24, + 24, 49, 63, 53, 41, 51, 49, 81, 159, 220, 230, 232, 175, 130, 132, 140, + 151, 158, 153, 142, 106, 12, 4, 2, 5, 20, 41, 48, 55, 139, 128, 122, + 116, 88, 77, 71, 64, 42, 5, 26, 89, 103, 87, 83, 93, 104, 89, 85, + 84, 84, 84, 85, 91, 89, 89, 77, 65, 40, 33, 26, 18, 17, 16, 17, + 18, 25, 26, 24, 26, 29, 37, 36, 38, 41, 40, 38, 46, 57, 68, 75, + 72, 83, 76, 85, 71, 52, 25, 80, 68, 45, 41, 41, 37, 38, 37, 38, + 40, 37, 26, 34, 44, 46, 41, 40, 41, 44, 37, 29, 22, 18, 17, 10, + 13, 26, 28, 24, 21, 28, 26, 26, 30, 24, 5, 56, 45, 38, 37, 36, + 33, 41, 33, 29, 29, 32, 29, 28, 18, 21, 33, 26, 29, 30, 32, 25, + 32, 26, 25, 26, 51, 55, 48, 49, 49, 52, 49, 52, 44, 10, 67, 56, + 40, 41, 30, 34, 37, 33, 30, 33, 33, 32, 34, 34, 37, 37, 34, 36, + 37, 37, 46, 51, 53, 41, 48, 127, 136, 136, 140, 131, 128, 126, 124, 107, + 64, 49, 38, 36, 32, 34, 22, 18, 29, 56, 85, 76, 131, 186, 195, 201, + 158, 99, 51, 34, 29, 57, 34, 34, 32, 38, 40, 36, 33, 34, 36, 34, + 34, 28, 30, 26, 28, 25, 28, 24, 18, 24, 29, 29, 28, 32, 33, 28, + 36, 18, 6, 5, 91, 107, 97, 91, 77, 83, 79, 97, 88, 92, 52, 72, + 80, 77, 76, 84, 84, 73, 72, 80, 84, 44, 5, 34, 61, 57, 65, 48, + 25, 37, 41, 25, 20, 20, 34, 22, 24, 22, 22, 22, 22, 21, 17, 17, + 16, 20, 13, 14, 14, 17, 14, 17, 14, 14, 14, 14, 14, 13, 10, 13, + 13, 12, 12, 12, 12, 12, 12, 12, 13, 17, 22, 30, 41, 55, 69, 79, + 87, 87, 71, 33, 13, 13, 12, 17, 18, 32, 33, 34, 28, 29, 30, 25, + 33, 25, 25, 24, 20, 24, 21, 18, 17, 18, 17, 16, 16, 13, 14, 14, + 13, 13, 12, 12, 13, 12, 12, 18, 12, 18, 14, 56, 84, 87, 84, 81, + 87, 79, 76, 77, 49, 26, 1, 65, 51, 45, 41, 38, 49, 59, 40, 44, + 29, 16, 60, 71, 65, 63, 61, 68, 63, 63, 61, 55, 49, 36, 8, 55, + 48, 44, 63, 75, 64, 69, 61, 64, 61, 68, 45, 28, 29, 33, 29, 22, + 20, 18, 17, 17, 18, 16, 16, 16, 16, 12, 12, 10, 8, 12, 9, 9, + 6, 9, 12, 69, 71, 65, 64, 59, 55, 53, 56, 61, 72, 24, 5, 72, + 56, 42, 56, 46, 48, 45, 41, 37, 26, 12, 4, 18, 42, 36, 22, 26, + 37, 36, 22, 26, 33, 26, 16, 14, 26, 30, 29, 38, 34, 32, 26, 26, + 12, 2, 10, 22, 30, 24, 22, 26, 18, 21, 22, 22, 12, 17, 6, 69, + 77, 63, 45, 51, 48, 44, 26, 29, 29, 30, 20, 22, 20, 25, 18, 18, + 16, 16, 13, 17, 14, 13, 17, 20, 17, 17, 17, 21, 26, 24, 26, 32, + 38, 37, 26, 40, 57, 56, 26, 26, 49, 56, 51, 36, 34, 16, 12, 49, + 76, 134, 190, 189, 174, 187, 136, 112, 91, 99, 24, 26, 49, 76, 75, 80, + 65, 51, 88, 191, 222, 229, 228, 159, 128, 134, 139, 150, 151, 144, 134, 61, + 5, 5, 2, 4, 21, 44, 41, 69, 107, 107, 111, 108, 95, 108, 91, 83, + 45, 2, 107, 102, 93, 91, 91, 91, 85, 92, 89, 88, 83, 84, 85, 83, + 79, 80, 80, 79, 91, 84, 61, 40, 36, 24, 42, 57, 59, 56, 56, 53, + 52, 49, 52, 48, 42, 29, 36, 71, 80, 88, 83, 85, 81, 84, 87, 80, + 64, 28, 79, 69, 67, 61, 63, 61, 57, 56, 51, 49, 45, 26, 42, 56, + 65, 61, 60, 56, 59, 52, 42, 41, 38, 33, 10, 48, 49, 48, 59, 32, + 37, 55, 34, 32, 33, 12, 56, 71, 61, 64, 61, 49, 48, 36, 32, 38, + 30, 12, 21, 67, 36, 60, 45, 52, 38, 51, 38, 25, 17, 14, 26, 46, + 56, 55, 52, 52, 63, 52, 46, 40, 9, 67, 71, 41, 48, 40, 40, 40, + 40, 45, 37, 37, 26, 18, 32, 36, 45, 34, 40, 41, 48, 45, 46, 51, + 51, 41, 103, 132, 115, 84, 69, 65, 61, 51, 49, 42, 42, 34, 30, 33, + 26, 21, 37, 51, 55, 77, 79, 173, 186, 198, 197, 150, 97, 40, 34, 34, + 33, 34, 33, 36, 42, 41, 41, 59, 84, 124, 136, 154, 162, 153, 142, 97, + 52, 36, 29, 24, 26, 26, 21, 14, 17, 16, 21, 30, 21, 16, 17, 96, + 107, 68, 56, 55, 59, 55, 51, 75, 48, 63, 88, 88, 75, 95, 67, 69, + 63, 71, 73, 88, 41, 4, 45, 51, 72, 49, 41, 45, 25, 21, 21, 33, + 37, 13, 17, 14, 16, 18, 9, 14, 12, 12, 9, 6, 9, 9, 10, 12, + 12, 12, 10, 10, 10, 10, 12, 9, 12, 12, 12, 14, 14, 20, 14, 17, + 17, 20, 14, 13, 10, 13, 13, 14, 14, 16, 14, 14, 16, 13, 13, 12, + 12, 8, 17, 30, 40, 37, 30, 30, 28, 26, 24, 25, 24, 22, 28, 21, + 24, 21, 20, 20, 17, 17, 14, 14, 14, 14, 16, 13, 12, 14, 12, 14, + 16, 22, 26, 26, 22, 36, 67, 83, 79, 69, 68, 67, 69, 67, 75, 55, + 30, 2, 57, 53, 60, 33, 48, 48, 44, 40, 44, 34, 16, 63, 80, 84, + 79, 72, 77, 83, 77, 64, 64, 55, 38, 6, 55, 46, 51, 85, 88, 72, + 64, 87, 57, 26, 29, 32, 33, 36, 24, 21, 20, 17, 17, 17, 17, 16, + 13, 14, 14, 14, 12, 9, 9, 9, 10, 10, 8, 8, 10, 21, 68, 64, + 53, 56, 59, 52, 44, 44, 46, 91, 22, 6, 67, 64, 65, 64, 61, 60, + 53, 40, 41, 29, 12, 4, 37, 46, 45, 34, 32, 21, 26, 33, 24, 16, + 17, 9, 21, 40, 59, 53, 55, 41, 48, 42, 25, 14, 5, 42, 51, 32, + 32, 26, 26, 26, 25, 18, 16, 13, 17, 9, 48, 91, 65, 57, 42, 37, + 44, 29, 29, 29, 28, 21, 21, 24, 25, 17, 20, 20, 17, 20, 16, 16, + 18, 21, 18, 22, 24, 20, 21, 25, 26, 34, 25, 33, 13, 18, 57, 55, + 77, 51, 25, 22, 26, 18, 22, 18, 12, 46, 79, 85, 171, 189, 173, 170, + 139, 96, 89, 93, 68, 40, 32, 45, 69, 45, 51, 46, 63, 120, 204, 222, + 229, 222, 142, 127, 132, 139, 148, 147, 140, 112, 20, 4, 5, 1, 4, 22, + 41, 44, 59, 81, 88, 84, 77, 81, 79, 102, 79, 45, 10, 91, 108, 96, + 107, 92, 89, 91, 84, 80, 77, 61, 49, 64, 84, 97, 97, 91, 93, 72, + 80, 84, 67, 41, 29, 51, 63, 60, 63, 59, 61, 61, 57, 57, 61, 33, + 28, 57, 85, 92, 88, 87, 80, 85, 84, 76, 64, 53, 30, 75, 73, 67, + 67, 68, 63, 67, 56, 57, 59, 48, 28, 51, 55, 63, 63, 64, 75, 71, + 68, 56, 55, 41, 33, 13, 51, 60, 49, 59, 59, 53, 51, 55, 34, 30, + 9, 49, 69, 85, 88, 89, 64, 65, 53, 48, 34, 32, 9, 51, 75, 73, + 65, 63, 59, 59, 60, 49, 44, 28, 13, 34, 53, 59, 44, 42, 51, 55, + 53, 57, 28, 2, 75, 76, 71, 53, 33, 37, 28, 40, 34, 32, 36, 24, + 16, 30, 67, 56, 56, 55, 55, 49, 49, 48, 51, 59, 41, 119, 127, 108, + 85, 75, 61, 60, 53, 49, 41, 41, 33, 22, 21, 28, 33, 51, 53, 87, + 81, 112, 170, 198, 197, 201, 136, 96, 63, 59, 60, 49, 45, 49, 64, 80, + 112, 146, 179, 204, 216, 221, 225, 224, 217, 217, 208, 183, 153, 120, 65, 40, + 25, 22, 20, 20, 16, 12, 26, 17, 13, 4, 69, 107, 55, 45, 57, 60, + 56, 51, 71, 51, 67, 77, 85, 80, 85, 92, 83, 73, 75, 73, 81, 38, + 5, 45, 49, 57, 48, 41, 24, 25, 26, 22, 21, 20, 12, 55, 34, 26, + 24, 26, 40, 24, 30, 26, 25, 20, 21, 26, 16, 25, 29, 28, 25, 22, + 22, 21, 18, 18, 20, 20, 32, 28, 30, 28, 30, 28, 28, 25, 28, 18, + 16, 13, 14, 13, 10, 12, 12, 12, 13, 12, 13, 10, 5, 22, 37, 40, + 42, 45, 41, 44, 38, 38, 28, 26, 24, 52, 53, 34, 32, 30, 24, 25, + 29, 26, 10, 6, 25, 32, 36, 22, 17, 22, 29, 18, 33, 26, 30, 20, + 30, 65, 77, 69, 71, 73, 64, 64, 53, 61, 65, 22, 4, 37, 60, 56, + 55, 51, 61, 65, 44, 57, 29, 16, 59, 81, 81, 84, 80, 79, 85, 73, + 79, 63, 55, 45, 8, 53, 40, 45, 57, 68, 107, 83, 64, 29, 33, 30, + 46, 64, 61, 56, 40, 44, 44, 45, 37, 36, 25, 25, 24, 26, 22, 21, + 20, 17, 17, 16, 14, 18, 13, 12, 10, 51, 75, 84, 56, 40, 52, 73, + 49, 51, 71, 21, 8, 57, 63, 60, 56, 55, 49, 81, 36, 38, 37, 12, + 5, 41, 46, 32, 44, 28, 33, 17, 18, 20, 29, 14, 10, 38, 57, 63, + 60, 42, 30, 32, 53, 25, 16, 12, 46, 45, 29, 24, 25, 20, 32, 20, + 21, 12, 13, 16, 5, 51, 72, 44, 63, 49, 56, 56, 36, 28, 29, 32, + 25, 29, 28, 13, 20, 20, 20, 21, 18, 22, 21, 16, 21, 26, 26, 28, + 24, 25, 26, 30, 28, 45, 34, 22, 5, 46, 59, 51, 42, 42, 16, 26, + 16, 12, 21, 10, 51, 81, 102, 183, 179, 177, 146, 103, 93, 89, 110, 57, + 40, 29, 51, 56, 57, 48, 48, 64, 143, 212, 220, 226, 205, 131, 128, 134, + 140, 147, 143, 135, 71, 9, 5, 4, 1, 2, 22, 34, 26, 77, 77, 75, + 88, 88, 84, 80, 84, 65, 42, 20, 72, 102, 103, 96, 106, 92, 95, 91, + 93, 79, 60, 44, 83, 92, 93, 84, 77, 77, 80, 77, 79, 80, 49, 30, + 64, 72, 71, 72, 67, 67, 65, 60, 59, 69, 33, 26, 59, 88, 89, 95, + 93, 72, 73, 76, 75, 68, 45, 33, 73, 68, 65, 68, 64, 72, 67, 61, + 60, 64, 51, 36, 53, 63, 76, 65, 53, 76, 64, 80, 64, 57, 49, 37, + 14, 44, 64, 63, 53, 49, 49, 51, 55, 38, 34, 9, 60, 77, 83, 80, + 83, 88, 67, 73, 57, 48, 34, 6, 60, 73, 85, 73, 69, 68, 72, 65, + 64, 60, 26, 13, 57, 60, 67, 61, 45, 53, 72, 60, 52, 40, 8, 79, + 75, 64, 59, 44, 36, 37, 48, 51, 48, 44, 28, 13, 61, 69, 71, 68, + 67, 57, 59, 53, 55, 60, 57, 51, 108, 124, 111, 97, 84, 69, 63, 56, + 46, 41, 41, 24, 21, 30, 30, 49, 49, 63, 83, 71, 84, 182, 191, 208, + 177, 131, 99, 115, 119, 108, 118, 126, 150, 169, 194, 208, 218, 224, 225, 224, + 222, 220, 220, 220, 217, 212, 213, 206, 206, 175, 108, 42, 22, 21, 17, 24, + 18, 24, 32, 5, 4, 68, 103, 67, 51, 84, 59, 80, 67, 55, 42, 67, + 93, 89, 72, 83, 77, 93, 88, 65, 65, 76, 46, 8, 52, 48, 59, 52, + 52, 34, 33, 14, 24, 13, 29, 21, 41, 60, 52, 32, 36, 28, 38, 32, + 32, 32, 33, 20, 18, 32, 33, 34, 37, 30, 30, 30, 32, 32, 33, 28, + 26, 32, 38, 33, 34, 29, 32, 29, 30, 28, 18, 32, 37, 37, 37, 32, + 33, 20, 17, 17, 12, 13, 10, 6, 28, 40, 46, 41, 36, 37, 40, 44, + 41, 33, 26, 28, 48, 60, 38, 49, 46, 45, 33, 26, 28, 24, 8, 40, + 40, 37, 38, 38, 34, 32, 28, 28, 25, 25, 24, 21, 60, 75, 76, 69, + 68, 61, 63, 52, 59, 42, 29, 5, 53, 60, 72, 56, 48, 48, 53, 60, + 53, 33, 22, 71, 84, 77, 76, 79, 84, 87, 84, 83, 75, 61, 41, 6, + 53, 44, 55, 38, 52, 72, 93, 81, 29, 33, 28, 49, 67, 55, 52, 51, + 52, 49, 51, 52, 51, 33, 33, 22, 34, 33, 29, 28, 28, 24, 21, 25, + 25, 14, 12, 44, 65, 73, 60, 56, 48, 57, 48, 55, 53, 83, 28, 9, + 69, 64, 59, 76, 51, 53, 48, 53, 37, 37, 13, 4, 40, 52, 34, 71, + 40, 41, 40, 32, 24, 26, 14, 6, 49, 63, 64, 33, 26, 25, 26, 46, + 25, 12, 5, 38, 45, 30, 26, 22, 21, 16, 18, 17, 16, 16, 18, 10, + 57, 76, 64, 42, 49, 46, 60, 44, 46, 25, 24, 10, 8, 22, 18, 21, + 18, 21, 14, 17, 20, 10, 12, 21, 38, 41, 40, 44, 22, 16, 18, 22, + 29, 30, 25, 9, 52, 53, 49, 42, 32, 20, 24, 18, 14, 10, 10, 52, + 81, 106, 185, 179, 146, 112, 96, 85, 103, 100, 73, 37, 30, 38, 61, 52, + 40, 53, 96, 187, 216, 222, 228, 185, 124, 127, 132, 146, 143, 138, 114, 20, + 5, 5, 4, 1, 2, 12, 40, 21, 49, 108, 76, 76, 80, 73, 81, 81, + 88, 38, 2, 72, 108, 100, 97, 104, 99, 92, 89, 92, 71, 61, 42, 80, + 87, 76, 84, 85, 87, 103, 91, 80, 83, 60, 38, 71, 76, 80, 73, 80, + 73, 75, 64, 57, 64, 34, 24, 73, 91, 88, 89, 87, 71, 84, 77, 80, + 65, 56, 37, 69, 76, 61, 77, 76, 61, 64, 69, 67, 68, 55, 36, 59, + 72, 71, 68, 53, 65, 61, 75, 71, 64, 52, 37, 5, 46, 52, 63, 56, + 51, 49, 52, 55, 38, 34, 10, 55, 76, 79, 71, 67, 67, 68, 64, 63, + 49, 32, 8, 68, 85, 83, 73, 73, 67, 77, 75, 68, 59, 37, 14, 57, + 63, 69, 53, 64, 53, 65, 59, 49, 41, 6, 76, 67, 59, 53, 53, 41, + 42, 56, 59, 53, 44, 26, 13, 63, 65, 75, 69, 71, 59, 63, 63, 56, + 49, 46, 44, 95, 119, 116, 92, 96, 88, 72, 67, 52, 48, 25, 17, 25, + 45, 52, 52, 65, 53, 77, 69, 80, 155, 201, 204, 171, 119, 91, 111, 182, + 186, 191, 199, 204, 209, 218, 220, 220, 220, 213, 208, 193, 190, 190, 179, 170, + 159, 162, 166, 182, 198, 197, 151, 61, 29, 20, 16, 20, 20, 18, 1, 5, + 89, 114, 80, 56, 55, 67, 52, 65, 64, 37, 67, 88, 84, 68, 65, 67, + 68, 72, 72, 69, 71, 46, 9, 55, 34, 57, 44, 57, 52, 34, 30, 16, + 12, 21, 21, 49, 53, 37, 45, 45, 32, 38, 44, 46, 38, 29, 13, 30, + 48, 64, 60, 34, 34, 34, 40, 40, 38, 37, 21, 30, 57, 49, 51, 49, + 34, 33, 33, 30, 29, 21, 30, 44, 38, 42, 36, 36, 30, 28, 28, 25, + 25, 12, 5, 33, 40, 45, 51, 55, 55, 44, 30, 45, 34, 28, 22, 45, + 45, 61, 44, 41, 44, 41, 33, 34, 26, 4, 46, 40, 25, 41, 37, 22, + 24, 38, 30, 36, 28, 24, 16, 59, 75, 77, 59, 57, 51, 49, 61, 41, + 48, 30, 1, 55, 60, 69, 53, 42, 38, 42, 49, 63, 36, 24, 77, 85, + 93, 87, 80, 73, 75, 84, 85, 80, 67, 41, 6, 53, 40, 45, 36, 60, + 68, 67, 49, 30, 34, 33, 52, 63, 61, 53, 52, 49, 52, 46, 45, 52, + 52, 32, 26, 34, 37, 32, 30, 29, 29, 26, 30, 28, 17, 8, 59, 51, + 71, 42, 52, 51, 56, 53, 48, 53, 65, 32, 9, 68, 64, 72, 75, 76, + 75, 48, 53, 38, 37, 14, 4, 32, 53, 44, 46, 51, 38, 33, 38, 36, + 28, 14, 14, 53, 63, 59, 25, 24, 37, 37, 40, 24, 16, 5, 56, 33, + 36, 17, 17, 16, 17, 17, 20, 18, 16, 17, 8, 41, 85, 63, 55, 46, + 59, 37, 48, 40, 37, 26, 6, 10, 18, 29, 25, 16, 16, 14, 17, 21, + 12, 13, 42, 40, 40, 40, 30, 41, 36, 41, 28, 29, 25, 25, 16, 51, + 56, 44, 40, 32, 18, 12, 16, 16, 13, 12, 44, 77, 84, 178, 177, 131, + 102, 97, 95, 118, 112, 73, 25, 30, 40, 55, 52, 46, 72, 159, 202, 208, + 222, 217, 146, 122, 127, 139, 142, 136, 123, 48, 6, 4, 4, 2, 1, 4, + 20, 34, 25, 17, 108, 77, 76, 81, 85, 88, 83, 80, 37, 2, 80, 100, + 95, 104, 102, 100, 97, 97, 85, 71, 56, 38, 79, 75, 84, 83, 96, 93, + 95, 85, 87, 80, 72, 41, 75, 85, 87, 85, 77, 80, 71, 67, 61, 60, + 32, 48, 80, 87, 87, 76, 81, 61, 65, 65, 67, 67, 64, 38, 60, 73, + 63, 56, 61, 68, 72, 77, 64, 64, 65, 34, 59, 69, 67, 61, 60, 72, + 67, 79, 71, 71, 53, 37, 8, 42, 60, 65, 52, 67, 55, 51, 52, 38, + 36, 14, 56, 80, 72, 72, 72, 73, 72, 67, 67, 51, 32, 8, 63, 67, + 76, 76, 77, 77, 81, 77, 76, 59, 32, 25, 61, 60, 69, 59, 65, 65, + 79, 56, 46, 36, 6, 76, 76, 63, 57, 53, 69, 69, 69, 68, 63, 45, + 26, 10, 65, 72, 72, 67, 68, 64, 67, 72, 57, 59, 61, 40, 83, 111, + 112, 102, 84, 92, 77, 71, 56, 64, 29, 14, 38, 51, 65, 68, 65, 53, + 100, 72, 93, 108, 177, 197, 174, 115, 103, 111, 148, 183, 193, 195, 202, 205, + 206, 208, 199, 193, 185, 166, 147, 143, 143, 144, 136, 140, 136, 143, 146, 144, + 155, 179, 169, 73, 18, 16, 22, 18, 16, 12, 14, 91, 95, 81, 56, 57, + 65, 53, 64, 59, 37, 64, 88, 79, 69, 75, 68, 67, 63, 77, 76, 68, + 45, 9, 46, 33, 67, 72, 60, 40, 29, 22, 21, 13, 26, 9, 42, 59, + 44, 46, 34, 37, 42, 44, 44, 41, 28, 14, 42, 60, 59, 63, 65, 45, + 44, 42, 38, 44, 33, 22, 56, 52, 56, 52, 51, 48, 36, 34, 36, 32, + 21, 41, 40, 49, 44, 46, 42, 36, 29, 30, 30, 25, 12, 5, 37, 46, + 45, 42, 38, 44, 44, 30, 37, 37, 29, 18, 46, 45, 56, 52, 57, 60, + 44, 53, 32, 26, 4, 51, 41, 34, 40, 34, 44, 37, 44, 40, 41, 34, + 24, 29, 59, 83, 59, 60, 56, 65, 52, 55, 64, 42, 32, 1, 65, 60, + 55, 52, 61, 65, 67, 64, 51, 38, 21, 72, 80, 88, 99, 92, 85, 83, + 84, 77, 83, 67, 41, 5, 52, 48, 46, 42, 71, 26, 29, 28, 29, 36, + 30, 52, 61, 59, 63, 48, 61, 55, 53, 46, 49, 48, 40, 26, 30, 34, + 44, 41, 44, 38, 37, 36, 28, 18, 8, 51, 75, 69, 51, 55, 71, 64, + 63, 49, 45, 67, 24, 12, 64, 68, 55, 53, 56, 56, 56, 53, 37, 37, + 17, 5, 41, 61, 32, 40, 34, 55, 44, 45, 37, 24, 13, 20, 53, 67, + 38, 30, 26, 41, 42, 41, 22, 12, 5, 52, 57, 34, 30, 22, 25, 24, + 24, 26, 21, 18, 18, 9, 48, 72, 81, 59, 53, 42, 29, 36, 36, 33, + 22, 5, 22, 41, 38, 32, 26, 26, 25, 32, 22, 12, 8, 41, 34, 37, + 26, 36, 41, 28, 40, 32, 30, 25, 14, 16, 49, 65, 32, 34, 25, 20, + 14, 16, 14, 14, 10, 45, 67, 79, 127, 171, 143, 107, 99, 102, 126, 114, + 53, 44, 36, 45, 49, 41, 69, 134, 198, 208, 212, 220, 193, 124, 123, 128, + 143, 136, 128, 80, 10, 4, 8, 4, 2, 1, 2, 21, 34, 38, 18, 76, + 80, 85, 99, 96, 89, 81, 80, 38, 4, 92, 103, 97, 102, 102, 100, 91, + 99, 79, 68, 56, 36, 75, 100, 108, 100, 100, 97, 87, 83, 81, 81, 75, + 44, 45, 69, 75, 69, 73, 72, 72, 65, 64, 60, 32, 52, 85, 89, 72, + 69, 68, 71, 69, 71, 69, 64, 61, 38, 55, 80, 68, 65, 56, 67, 53, + 61, 53, 52, 65, 38, 63, 72, 68, 67, 71, 73, 71, 60, 63, 73, 53, + 36, 6, 46, 53, 65, 56, 56, 61, 52, 49, 42, 37, 9, 45, 79, 73, + 73, 75, 73, 69, 71, 63, 49, 33, 5, 44, 83, 71, 83, 77, 80, 81, + 80, 73, 72, 30, 10, 55, 67, 72, 65, 60, 61, 57, 59, 55, 28, 1, + 72, 69, 52, 63, 56, 52, 51, 56, 53, 60, 44, 25, 9, 67, 59, 65, + 65, 64, 65, 73, 85, 63, 59, 59, 46, 63, 107, 110, 100, 81, 88, 77, + 76, 68, 60, 34, 17, 45, 64, 67, 61, 57, 56, 100, 77, 102, 77, 147, + 205, 177, 107, 99, 100, 120, 130, 157, 166, 175, 178, 179, 173, 158, 140, 134, + 138, 139, 140, 144, 154, 157, 161, 146, 139, 134, 128, 135, 136, 173, 146, 69, + 16, 22, 16, 12, 8, 5, 75, 89, 79, 44, 55, 69, 57, 64, 55, 38, + 64, 84, 87, 79, 68, 75, 69, 68, 81, 75, 71, 44, 12, 38, 40, 42, + 46, 51, 51, 30, 22, 21, 13, 36, 8, 33, 48, 53, 52, 68, 65, 75, + 73, 69, 45, 34, 6, 46, 60, 55, 65, 55, 53, 55, 67, 71, 49, 37, + 20, 55, 49, 65, 52, 46, 52, 46, 45, 36, 33, 24, 42, 45, 45, 45, + 41, 41, 38, 36, 32, 29, 24, 13, 4, 37, 48, 40, 34, 44, 60, 37, + 40, 41, 34, 29, 18, 55, 52, 55, 46, 51, 51, 52, 55, 40, 21, 4, + 49, 48, 57, 45, 42, 45, 52, 40, 38, 37, 42, 29, 18, 41, 75, 81, + 81, 79, 73, 80, 81, 59, 55, 22, 0, 49, 61, 60, 68, 77, 64, 63, + 61, 48, 38, 21, 56, 85, 83, 85, 81, 83, 84, 85, 93, 88, 80, 41, + 5, 52, 36, 52, 65, 37, 56, 38, 44, 28, 36, 34, 51, 56, 69, 69, + 53, 56, 61, 64, 57, 59, 51, 48, 29, 34, 44, 38, 41, 45, 42, 41, + 41, 32, 17, 9, 64, 73, 67, 75, 59, 60, 57, 48, 48, 55, 68, 24, + 14, 36, 68, 57, 48, 56, 56, 52, 46, 37, 34, 14, 5, 45, 53, 44, + 40, 45, 46, 49, 37, 29, 20, 17, 12, 53, 64, 38, 25, 38, 33, 38, + 37, 22, 14, 4, 51, 38, 40, 33, 45, 44, 53, 51, 45, 26, 20, 20, + 9, 42, 76, 87, 85, 61, 64, 32, 32, 34, 28, 20, 14, 33, 33, 22, + 30, 40, 40, 41, 29, 18, 12, 9, 46, 33, 33, 18, 42, 41, 34, 38, + 28, 30, 29, 21, 9, 48, 63, 40, 32, 20, 20, 17, 30, 10, 17, 9, + 33, 52, 72, 95, 131, 166, 111, 99, 126, 136, 96, 45, 45, 57, 44, 53, + 71, 132, 186, 208, 209, 220, 209, 150, 120, 127, 138, 135, 124, 96, 20, 5, + 5, 5, 5, 2, 1, 1, 14, 33, 5, 28, 77, 79, 79, 77, 79, 81, + 83, 69, 33, 5, 65, 103, 96, 97, 96, 97, 100, 89, 71, 65, 57, 29, + 84, 83, 91, 81, 95, 84, 83, 76, 72, 72, 68, 67, 46, 51, 60, 59, + 69, 71, 72, 61, 63, 61, 28, 55, 81, 80, 69, 75, 76, 75, 69, 75, + 65, 81, 57, 42, 55, 79, 75, 77, 67, 72, 61, 59, 57, 67, 51, 42, + 67, 76, 71, 80, 63, 64, 73, 69, 71, 56, 53, 40, 10, 38, 60, 63, + 63, 57, 64, 55, 55, 44, 40, 13, 72, 80, 85, 87, 77, 73, 73, 72, + 68, 48, 33, 4, 61, 84, 72, 79, 81, 80, 88, 80, 76, 65, 42, 12, + 59, 73, 77, 63, 64, 61, 61, 65, 49, 44, 5, 67, 81, 67, 81, 69, + 81, 72, 71, 67, 63, 44, 25, 9, 71, 68, 69, 77, 64, 63, 61, 72, + 72, 57, 63, 45, 55, 99, 102, 97, 97, 84, 80, 79, 73, 65, 36, 17, + 53, 67, 68, 68, 69, 91, 75, 100, 65, 107, 84, 190, 189, 120, 108, 102, + 107, 114, 127, 131, 132, 136, 132, 130, 123, 115, 114, 112, 116, 130, 140, 150, + 154, 155, 158, 143, 140, 142, 139, 128, 138, 167, 80, 17, 16, 17, 13, 5, + 5, 67, 93, 75, 57, 59, 61, 59, 65, 49, 32, 61, 83, 93, 93, 81, + 80, 83, 83, 87, 73, 69, 44, 17, 37, 38, 51, 40, 37, 26, 24, 12, + 18, 24, 21, 28, 41, 69, 67, 65, 65, 59, 67, 51, 44, 45, 29, 9, + 44, 64, 67, 55, 56, 56, 53, 57, 55, 44, 37, 20, 72, 46, 69, 45, + 56, 49, 48, 46, 49, 36, 22, 37, 45, 38, 38, 38, 44, 36, 36, 33, + 33, 25, 14, 5, 37, 46, 40, 30, 40, 36, 36, 28, 29, 34, 26, 20, + 51, 61, 57, 48, 46, 48, 53, 55, 36, 28, 12, 49, 46, 45, 59, 46, + 45, 45, 48, 46, 51, 52, 40, 22, 38, 61, 71, 72, 69, 52, 56, 51, + 51, 44, 32, 4, 52, 60, 59, 64, 61, 57, 51, 49, 51, 44, 32, 36, + 73, 77, 79, 77, 76, 79, 79, 76, 77, 69, 46, 5, 49, 48, 33, 38, + 28, 33, 33, 33, 33, 37, 37, 33, 57, 46, 49, 45, 51, 46, 49, 46, + 51, 48, 48, 41, 32, 32, 32, 28, 32, 36, 37, 42, 32, 21, 9, 63, + 73, 61, 49, 48, 55, 48, 49, 57, 68, 69, 34, 12, 21, 63, 71, 63, + 71, 59, 53, 33, 34, 25, 14, 5, 38, 49, 53, 63, 49, 53, 46, 41, + 38, 18, 16, 18, 52, 76, 51, 24, 26, 41, 42, 53, 26, 10, 4, 33, + 51, 37, 36, 38, 30, 26, 30, 33, 40, 21, 22, 9, 38, 64, 77, 71, + 53, 55, 24, 32, 33, 29, 16, 13, 40, 29, 32, 26, 25, 20, 22, 26, + 20, 9, 9, 45, 26, 36, 38, 38, 32, 33, 33, 30, 30, 32, 22, 8, + 46, 53, 33, 17, 26, 20, 17, 12, 14, 9, 14, 34, 40, 34, 59, 77, + 155, 143, 100, 110, 132, 123, 56, 42, 52, 67, 107, 148, 185, 198, 204, 217, + 213, 162, 119, 123, 135, 131, 120, 87, 18, 6, 5, 6, 5, 4, 2, 1, + 1, 20, 25, 57, 65, 67, 65, 65, 65, 65, 65, 63, 61, 32, 13, 37, + 71, 103, 107, 87, 88, 71, 69, 69, 51, 51, 29, 79, 77, 75, 76, 76, + 79, 75, 64, 59, 57, 59, 56, 60, 71, 71, 61, 57, 57, 57, 55, 60, + 48, 26, 71, 80, 87, 69, 69, 61, 64, 61, 60, 59, 64, 63, 52, 45, + 61, 60, 55, 60, 59, 73, 64, 63, 67, 64, 57, 56, 55, 59, 68, 61, + 56, 55, 55, 53, 52, 49, 38, 5, 36, 60, 56, 55, 53, 53, 53, 55, + 56, 37, 16, 51, 68, 65, 67, 67, 68, 64, 77, 68, 48, 30, 6, 65, + 84, 79, 73, 72, 76, 68, 75, 73, 61, 34, 6, 56, 61, 72, 71, 63, + 71, 71, 64, 46, 42, 5, 61, 68, 67, 67, 64, 64, 63, 61, 59, 59, + 42, 24, 8, 65, 67, 72, 68, 73, 68, 75, 61, 68, 68, 60, 48, 45, + 76, 100, 87, 81, 71, 59, 61, 65, 63, 41, 16, 46, 64, 84, 75, 95, + 107, 77, 112, 112, 100, 69, 111, 174, 132, 100, 102, 108, 111, 112, 107, 120, + 116, 120, 112, 108, 104, 104, 108, 147, 153, 128, 148, 159, 154, 154, 162, 147, + 146, 143, 143, 139, 163, 81, 13, 12, 14, 13, 2, 4, 63, 85, 75, 60, + 55, 61, 59, 65, 52, 30, 63, 69, 83, 80, 73, 72, 68, 71, 68, 59, + 56, 45, 16, 8, 28, 26, 9, 5, 20, 21, 2, 5, 12, 14, 30, 44, + 60, 68, 56, 53, 48, 48, 45, 45, 49, 26, 9, 38, 59, 69, 61, 64, + 67, 57, 61, 59, 46, 38, 21, 52, 45, 60, 48, 40, 40, 33, 30, 40, + 37, 33, 33, 28, 32, 29, 29, 26, 25, 26, 28, 25, 24, 13, 4, 38, + 53, 22, 22, 25, 21, 22, 24, 24, 26, 24, 25, 25, 36, 48, 48, 36, + 34, 33, 32, 26, 29, 4, 46, 45, 42, 40, 40, 41, 42, 40, 40, 37, + 38, 37, 34, 26, 24, 30, 32, 30, 28, 30, 30, 30, 32, 34, 1, 26, + 52, 53, 51, 49, 49, 29, 26, 29, 33, 46, 48, 40, 52, 64, 57, 60, + 59, 63, 69, 68, 57, 41, 5, 41, 29, 26, 29, 29, 29, 32, 34, 20, + 18, 20, 38, 38, 41, 41, 45, 42, 44, 44, 45, 44, 45, 44, 44, 42, + 48, 42, 42, 40, 30, 32, 40, 30, 24, 12, 60, 75, 55, 60, 64, 48, + 67, 71, 57, 49, 46, 36, 13, 16, 59, 55, 59, 32, 29, 29, 20, 24, + 20, 14, 4, 36, 41, 36, 21, 34, 34, 37, 26, 26, 21, 16, 17, 49, + 61, 32, 33, 29, 38, 40, 56, 18, 13, 4, 48, 41, 42, 36, 32, 29, + 29, 29, 26, 24, 24, 25, 10, 21, 34, 57, 51, 34, 24, 29, 25, 22, + 29, 25, 13, 40, 30, 34, 24, 32, 25, 24, 21, 20, 10, 9, 38, 40, + 36, 32, 33, 33, 32, 25, 28, 24, 22, 14, 9, 40, 49, 24, 9, 10, + 13, 16, 14, 13, 10, 12, 24, 33, 32, 37, 57, 73, 170, 112, 107, 138, + 130, 124, 120, 123, 150, 177, 182, 193, 195, 209, 206, 162, 116, 122, 130, 119, + 111, 81, 22, 6, 6, 6, 5, 4, 4, 4, 1, 1, 12, 14, 12, 10, + 38, 36, 34, 30, 26, 25, 21, 20, 16, 18, 20, 26, 32, 30, 38, 40, + 48, 38, 48, 52, 42, 28, 42, 34, 40, 37, 30, 30, 36, 29, 28, 25, + 29, 28, 34, 28, 34, 34, 49, 67, 69, 69, 49, 38, 26, 61, 67, 69, + 61, 59, 53, 63, 60, 55, 64, 63, 59, 55, 59, 64, 72, 64, 63, 63, + 61, 61, 61, 59, 57, 57, 56, 56, 34, 36, 25, 18, 17, 17, 16, 16, + 13, 17, 5, 14, 16, 18, 20, 21, 25, 44, 52, 45, 37, 20, 5, 42, + 60, 32, 40, 46, 60, 32, 45, 44, 24, 6, 32, 44, 36, 36, 44, 44, + 37, 37, 45, 45, 18, 8, 32, 41, 30, 41, 37, 37, 28, 42, 34, 20, + 6, 16, 38, 38, 37, 36, 40, 40, 38, 38, 41, 40, 21, 8, 48, 71, + 65, 51, 49, 61, 61, 44, 49, 56, 61, 52, 56, 59, 53, 49, 56, 53, + 55, 48, 45, 45, 36, 16, 49, 75, 76, 65, 64, 79, 80, 76, 85, 107, + 108, 142, 174, 167, 112, 106, 97, 108, 99, 56, 45, 45, 46, 45, 42, 44, + 44, 81, 103, 163, 123, 126, 153, 155, 159, 157, 154, 161, 147, 147, 140, 162, + 91, 20, 12, 13, 2, 9, 8, 22, 42, 64, 83, 81, 75, 84, 55, 48, + 30, 55, 56, 71, 69, 65, 52, 46, 44, 40, 40, 30, 22, 21, 25, 10, + 13, 12, 10, 8, 9, 6, 6, 5, 5, 6, 14, 40, 46, 46, 44, 40, + 60, 46, 56, 42, 16, 9, 32, 55, 49, 42, 51, 52, 49, 46, 49, 46, + 38, 24, 63, 45, 37, 40, 38, 38, 38, 38, 36, 34, 33, 32, 33, 32, + 32, 32, 30, 29, 28, 28, 28, 25, 25, 4, 18, 21, 17, 17, 20, 21, + 20, 21, 21, 24, 21, 21, 24, 24, 25, 25, 24, 24, 24, 25, 24, 21, + 4, 25, 29, 26, 28, 28, 29, 29, 29, 30, 30, 32, 32, 26, 30, 33, + 32, 28, 34, 33, 29, 24, 34, 29, 22, 9, 33, 20, 17, 16, 20, 12, + 18, 21, 13, 13, 22, 13, 28, 34, 30, 28, 42, 48, 44, 33, 48, 49, + 29, 6, 37, 9, 10, 10, 10, 8, 8, 9, 9, 6, 6, 8, 6, 6, + 6, 8, 8, 8, 8, 10, 10, 9, 10, 12, 14, 14, 16, 18, 21, 40, + 38, 45, 32, 21, 9, 51, 69, 56, 67, 71, 64, 63, 51, 52, 36, 33, + 24, 20, 12, 18, 18, 20, 22, 21, 14, 14, 12, 10, 17, 6, 12, 12, + 12, 13, 13, 20, 28, 17, 14, 17, 16, 25, 32, 28, 21, 29, 20, 24, + 28, 25, 20, 12, 4, 38, 36, 38, 38, 33, 30, 29, 28, 29, 26, 25, + 26, 24, 25, 22, 22, 22, 22, 20, 22, 21, 22, 21, 20, 14, 36, 21, + 25, 24, 22, 21, 14, 18, 20, 12, 6, 5, 8, 6, 8, 8, 6, 5, + 6, 20, 18, 17, 9, 9, 33, 14, 9, 8, 10, 9, 5, 8, 8, 6, + 21, 24, 12, 26, 26, 37, 42, 88, 132, 112, 123, 148, 151, 159, 167, 174, + 181, 191, 194, 205, 198, 165, 120, 120, 119, 110, 96, 60, 18, 9, 6, 8, + 4, 5, 5, 6, 2, 4, 0, 0, 0, 0, 0, 65, 60, 75, 77, 69, + 63, 84, 80, 29, 6, 44, 73, 68, 52, 63, 57, 33, 29, 34, 32, 30, + 28, 17, 21, 40, 48, 63, 68, 81, 81, 96, 103, 84, 67, 85, 93, 85, + 76, 48, 37, 34, 30, 52, 45, 26, 42, 44, 36, 37, 29, 30, 22, 25, + 24, 22, 24, 21, 17, 16, 13, 13, 12, 12, 12, 12, 12, 12, 13, 12, + 10, 12, 21, 53, 69, 79, 77, 81, 80, 81, 75, 75, 42, 6, 79, 108, + 107, 89, 53, 52, 44, 28, 26, 37, 29, 5, 1, 13, 9, 10, 1, 10, + 6, 1, 1, 8, 6, 0, 0, 10, 2, 1, 1, 5, 2, 1, 4, 8, + 8, 1, 1, 4, 13, 1, 0, 4, 1, 2, 0, 0, 4, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 2, 14, 5, 16, 13, 17, 16, 18, 24, 29, + 44, 44, 46, 55, 37, 36, 29, 33, 29, 28, 28, 22, 21, 32, 26, 28, + 18, 48, 52, 51, 60, 72, 72, 67, 96, 76, 110, 132, 146, 194, 189, 150, + 110, 100, 102, 100, 32, 29, 28, 37, 34, 32, 37, 36, 56, 95, 154, 161, + 126, 122, 150, 153, 155, 155, 162, 143, 144, 158, 151, 85, 17, 13, 10, 4, + 2, 13, 18, 20, 26, 18, 17, 29, 29, 37, 51, 30, 51, 52, 46, 33, + 34, 37, 34, 22, 24, 25, 18, 12, 6, 8, 9, 5, 4, 4, 2, 4, + 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 2, 4, 5, 5, 5, + 6, 12, 14, 20, 18, 21, 21, 26, 34, 46, 49, 38, 25, 46, 34, 34, + 28, 21, 22, 20, 16, 14, 14, 10, 8, 8, 8, 5, 4, 4, 6, 2, + 2, 2, 6, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 2, 2, + 2, 4, 5, 1, 2, 8, 9, 1, 4, 12, 13, 10, 2, 10, 9, 1, + 1, 8, 1, 1, 5, 5, 0, 0, 0, 4, 1, 0, 2, 2, 0, 0, + 0, 2, 0, 0, 8, 10, 20, 40, 63, 42, 48, 57, 71, 60, 45, 25, + 17, 42, 60, 60, 45, 46, 22, 12, 12, 9, 13, 9, 5, 6, 26, 28, + 22, 22, 33, 29, 33, 26, 41, 20, 1, 16, 75, 96, 59, 69, 77, 88, + 67, 69, 64, 64, 60, 68, 76, 76, 65, 32, 22, 21, 21, 32, 18, 9, + 24, 22, 22, 21, 24, 21, 21, 22, 24, 22, 24, 21, 20, 16, 9, 6, + 14, 21, 10, 12, 38, 59, 64, 36, 6, 45, 59, 56, 22, 20, 18, 22, + 14, 20, 10, 34, 17, 12, 8, 8, 13, 8, 20, 17, 21, 13, 14, 17, + 6, 18, 18, 30, 14, 17, 16, 18, 16, 20, 20, 16, 16, 18, 18, 16, + 17, 20, 17, 16, 16, 21, 17, 6, 18, 36, 26, 26, 21, 25, 28, 30, + 41, 29, 21, 8, 45, 65, 65, 51, 64, 61, 59, 29, 21, 17, 8, 4, + 2, 9, 25, 33, 33, 36, 29, 32, 20, 28, 14, 14, 36, 75, 96, 65, + 63, 65, 53, 127, 151, 138, 146, 123, 126, 128, 144, 147, 154, 153, 155, 140, + 127, 131, 107, 72, 53, 29, 10, 9, 9, 8, 5, 9, 12, 18, 17, 21, + 1, 0, 18, 64, 64, 61, 115, 114, 110, 108, 96, 102, 96, 92, 61, 18, + 44, 59, 55, 59, 68, 63, 63, 64, 53, 55, 30, 18, 52, 112, 123, 115, + 116, 115, 114, 107, 103, 89, 102, 107, 106, 107, 99, 108, 106, 97, 87, 76, + 51, 48, 25, 28, 33, 42, 48, 61, 67, 91, 76, 83, 67, 48, 45, 53, + 100, 107, 100, 89, 112, 103, 80, 108, 95, 96, 88, 93, 91, 97, 112, 96, + 89, 76, 87, 91, 79, 87, 77, 45, 9, 80, 106, 106, 99, 107, 107, 83, + 93, 57, 38, 29, 42, 60, 60, 59, 51, 46, 34, 46, 36, 12, 14, 4, + 24, 108, 104, 72, 76, 99, 97, 76, 76, 73, 28, 2, 18, 67, 81, 53, + 56, 53, 52, 61, 52, 26, 10, 44, 57, 60, 46, 42, 46, 46, 44, 42, + 33, 29, 4, 6, 81, 99, 96, 80, 95, 69, 30, 21, 18, 17, 14, 16, + 20, 34, 52, 56, 61, 61, 65, 73, 71, 69, 51, 18, 85, 87, 88, 75, + 107, 80, 88, 75, 84, 126, 143, 199, 202, 190, 177, 119, 104, 100, 110, 30, + 28, 30, 29, 32, 26, 28, 42, 55, 92, 175, 177, 119, 126, 110, 127, 134, + 130, 126, 154, 150, 138, 97, 68, 17, 13, 5, 20, 16, 20, 69, 80, 63, + 63, 38, 30, 30, 28, 44, 22, 18, 29, 41, 44, 46, 37, 42, 41, 60, + 56, 59, 61, 96, 91, 100, 89, 97, 91, 84, 102, 97, 89, 91, 83, 81, + 84, 88, 100, 81, 85, 73, 44, 52, 41, 30, 2, 9, 69, 103, 108, 77, + 73, 61, 55, 45, 48, 30, 34, 26, 28, 42, 40, 44, 29, 41, 41, 64, + 36, 33, 37, 72, 96, 100, 83, 71, 84, 87, 80, 79, 85, 77, 13, 2, + 45, 104, 75, 77, 72, 80, 77, 85, 95, 91, 88, 77, 88, 89, 104, 88, + 87, 87, 88, 84, 81, 16, 5, 26, 91, 110, 84, 87, 89, 89, 87, 95, + 92, 93, 95, 89, 97, 108, 104, 102, 96, 92, 88, 80, 85, 80, 18, 1, + 44, 72, 83, 88, 81, 79, 83, 73, 80, 71, 34, 14, 44, 73, 59, 59, + 53, 51, 56, 48, 45, 36, 9, 28, 69, 79, 76, 75, 69, 64, 40, 42, + 53, 36, 22, 1, 80, 84, 67, 72, 68, 77, 65, 80, 63, 65, 59, 63, + 42, 59, 72, 60, 55, 65, 64, 57, 45, 26, 9, 8, 8, 6, 5, 6, + 6, 6, 5, 5, 6, 6, 6, 6, 13, 61, 76, 69, 61, 67, 57, 60, + 65, 64, 46, 6, 53, 69, 60, 55, 44, 42, 36, 48, 49, 38, 8, 13, + 63, 75, 72, 65, 59, 44, 22, 12, 12, 10, 4, 0, 0, 4, 2, 0, + 0, 2, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 6, 1, 1, 1, + 10, 2, 2, 17, 33, 49, 79, 80, 83, 81, 79, 73, 36, 26, 8, 53, + 65, 42, 48, 53, 45, 44, 42, 55, 46, 32, 10, 5, 45, 65, 73, 72, + 67, 75, 65, 65, 29, 16, 14, 100, 110, 88, 97, 85, 97, 89, 99, 41, + 61, 61, 88, 89, 99, 134, 135, 132, 127, 132, 131, 116, 84, 57, 22, 12, + 13, 14, 13, 8, 6, 10, 17, 13, 20, 29, 8, 1, 4, 42, 68, 83, + 84, 84, 91, 91, 103, 99, 104, 95, 100, 63, 18, 59, 61, 72, 52, 65, + 65, 48, 72, 72, 55, 29, 14, 103, 111, 104, 80, 85, 81, 75, 79, 84, + 79, 91, 67, 84, 89, 110, 111, 103, 106, 97, 97, 64, 59, 25, 69, 97, + 93, 97, 92, 97, 92, 106, 119, 83, 73, 73, 56, 72, 111, 103, 84, 89, + 104, 111, 118, 112, 96, 95, 97, 77, 79, 92, 92, 87, 88, 80, 76, 76, + 77, 80, 53, 6, 91, 108, 102, 104, 97, 97, 96, 102, 80, 56, 30, 53, + 65, 63, 68, 61, 60, 65, 75, 65, 30, 9, 12, 83, 107, 95, 89, 89, + 91, 96, 96, 93, 88, 33, 0, 89, 96, 100, 95, 88, 84, 88, 81, 76, + 51, 13, 67, 59, 56, 44, 48, 36, 37, 26, 25, 25, 32, 1, 5, 83, + 97, 99, 96, 93, 88, 85, 92, 84, 80, 67, 75, 59, 72, 89, 80, 88, + 84, 99, 100, 93, 84, 51, 18, 92, 104, 96, 112, 87, 100, 80, 83, 111, + 144, 197, 198, 194, 198, 170, 111, 104, 106, 110, 36, 28, 25, 30, 32, 28, + 46, 40, 60, 87, 186, 186, 123, 120, 127, 123, 92, 103, 99, 83, 76, 87, + 72, 49, 13, 13, 6, 18, 14, 45, 85, 77, 79, 71, 76, 76, 65, 68, + 36, 25, 42, 100, 104, 96, 95, 93, 104, 85, 99, 53, 83, 71, 69, 87, + 81, 93, 85, 77, 81, 88, 75, 72, 80, 73, 76, 65, 46, 33, 61, 38, + 42, 37, 36, 41, 33, 2, 8, 83, 118, 100, 96, 108, 107, 87, 96, 104, + 69, 52, 28, 55, 95, 99, 96, 95, 87, 95, 99, 93, 110, 89, 64, 61, + 65, 64, 61, 69, 76, 64, 77, 69, 76, 38, 4, 99, 91, 60, 71, 85, + 79, 85, 69, 81, 91, 88, 79, 59, 55, 61, 51, 46, 59, 59, 52, 48, + 18, 0, 97, 119, 115, 116, 112, 116, 111, 112, 106, 104, 108, 103, 80, 63, + 75, 77, 76, 81, 81, 81, 64, 63, 68, 18, 12, 60, 79, 80, 60, 52, + 61, 56, 57, 57, 76, 37, 20, 55, 71, 52, 59, 56, 69, 53, 34, 55, + 37, 9, 22, 73, 72, 57, 75, 61, 65, 71, 57, 36, 32, 22, 4, 79, + 79, 60, 59, 51, 64, 72, 72, 64, 73, 40, 32, 59, 72, 60, 57, 53, + 51, 49, 57, 32, 32, 12, 17, 80, 89, 71, 60, 81, 89, 85, 81, 85, + 77, 75, 68, 71, 75, 92, 93, 87, 83, 64, 60, 52, 59, 42, 8, 48, + 68, 65, 64, 61, 61, 56, 36, 30, 12, 8, 49, 104, 102, 110, 97, 100, + 89, 85, 77, 48, 22, 5, 57, 64, 75, 61, 76, 61, 69, 55, 65, 60, + 63, 51, 52, 85, 69, 83, 76, 83, 84, 63, 73, 100, 75, 25, 18, 60, + 83, 75, 72, 59, 57, 48, 57, 45, 21, 6, 51, 64, 67, 42, 48, 53, + 52, 48, 44, 41, 44, 13, 6, 55, 64, 72, 67, 67, 67, 59, 36, 22, + 12, 9, 108, 85, 96, 96, 95, 75, 130, 127, 56, 44, 36, 32, 38, 42, + 59, 65, 56, 59, 57, 51, 33, 18, 13, 10, 13, 13, 13, 2, 4, 9, + 20, 21, 13, 25, 10, 9, 0, 2, 38, 73, 55, 57, 77, 80, 87, 96, + 102, 96, 95, 97, 55, 8, 42, 59, 67, 60, 57, 52, 68, 63, 68, 49, + 29, 16, 107, 108, 83, 73, 87, 85, 102, 89, 73, 79, 83, 61, 81, 99, + 81, 97, 92, 97, 99, 96, 93, 57, 26, 87, 99, 104, 84, 80, 76, 76, + 71, 69, 64, 76, 71, 53, 108, 115, 106, 97, 103, 99, 97, 87, 100, 83, + 80, 60, 96, 99, 80, 75, 73, 79, 77, 81, 69, 77, 67, 49, 6, 84, + 97, 92, 104, 99, 96, 89, 92, 75, 57, 32, 59, 51, 72, 79, 77, 84, + 88, 80, 63, 33, 9, 2, 111, 104, 81, 84, 84, 81, 80, 75, 81, 77, + 33, 10, 95, 72, 77, 79, 83, 89, 88, 89, 71, 63, 17, 61, 49, 41, + 34, 21, 14, 34, 24, 13, 26, 34, 1, 2, 76, 96, 83, 79, 71, 77, + 89, 91, 83, 79, 52, 42, 87, 103, 99, 92, 85, 91, 87, 93, 93, 80, + 55, 20, 88, 93, 107, 99, 123, 104, 83, 91, 116, 173, 199, 197, 195, 194, + 138, 107, 106, 103, 97, 26, 24, 25, 28, 22, 36, 46, 36, 56, 88, 201, + 193, 175, 122, 124, 144, 135, 134, 134, 130, 130, 111, 100, 48, 13, 10, 6, + 21, 13, 48, 87, 69, 84, 75, 71, 65, 69, 61, 38, 22, 76, 88, 79, + 85, 88, 80, 72, 68, 65, 89, 73, 60, 83, 93, 95, 87, 75, 76, 60, + 67, 64, 76, 64, 61, 33, 52, 48, 28, 28, 30, 29, 41, 38, 45, 28, + 6, 6, 77, 123, 104, 108, 95, 93, 103, 103, 108, 112, 63, 29, 77, 100, + 103, 96, 107, 92, 99, 92, 81, 85, 57, 71, 88, 83, 80, 73, 68, 71, + 80, 80, 73, 75, 51, 5, 95, 57, 96, 88, 60, 64, 89, 75, 69, 69, + 72, 45, 64, 77, 88, 92, 81, 79, 80, 59, 57, 21, 8, 102, 115, 110, + 89, 93, 97, 104, 100, 107, 99, 104, 83, 61, 88, 89, 85, 80, 80, 81, + 69, 69, 64, 56, 25, 1, 59, 80, 71, 56, 59, 56, 72, 73, 67, 71, + 36, 18, 59, 64, 38, 57, 36, 44, 38, 36, 67, 37, 9, 21, 67, 65, + 61, 59, 57, 67, 64, 63, 36, 33, 21, 2, 51, 77, 64, 64, 48, 46, + 60, 45, 63, 48, 38, 29, 56, 72, 67, 59, 52, 61, 56, 48, 37, 32, + 12, 46, 92, 84, 83, 81, 84, 87, 84, 80, 71, 68, 64, 40, 72, 93, + 75, 61, 71, 64, 63, 67, 52, 69, 34, 9, 45, 51, 75, 38, 36, 37, + 22, 17, 22, 8, 5, 64, 104, 102, 84, 89, 91, 102, 95, 96, 68, 36, + 9, 49, 56, 33, 48, 63, 79, 44, 34, 56, 38, 37, 48, 57, 63, 85, + 99, 97, 95, 83, 81, 83, 93, 80, 46, 30, 64, 72, 55, 59, 59, 63, + 63, 64, 34, 22, 6, 55, 65, 65, 38, 38, 49, 37, 49, 51, 49, 41, + 12, 5, 57, 69, 63, 51, 57, 56, 52, 32, 18, 10, 6, 81, 97, 81, + 107, 115, 97, 97, 48, 65, 56, 51, 29, 33, 24, 24, 29, 20, 24, 20, + 21, 18, 16, 14, 10, 13, 5, 5, 13, 22, 21, 18, 17, 18, 26, 10, + 2, 0, 0, 44, 67, 48, 12, 112, 106, 102, 79, 80, 99, 91, 91, 55, + 6, 53, 64, 68, 81, 61, 57, 52, 60, 61, 34, 24, 14, 83, 111, 79, + 83, 69, 88, 76, 89, 73, 81, 85, 63, 77, 93, 75, 79, 87, 107, 100, + 87, 93, 65, 26, 83, 104, 79, 81, 75, 73, 73, 68, 65, 73, 71, 37, + 22, 111, 112, 100, 107, 95, 99, 95, 95, 107, 77, 81, 55, 91, 93, 77, + 79, 79, 73, 89, 89, 80, 72, 81, 45, 6, 80, 99, 93, 97, 92, 85, + 76, 106, 96, 59, 41, 37, 60, 61, 77, 69, 51, 63, 71, 57, 5, 9, + 2, 72, 103, 79, 84, 81, 88, 79, 87, 85, 84, 36, 1, 61, 85, 89, + 68, 67, 72, 73, 103, 84, 41, 20, 26, 46, 46, 33, 18, 24, 10, 17, + 16, 14, 22, 1, 4, 71, 92, 93, 72, 64, 69, 71, 69, 67, 51, 55, + 46, 102, 102, 91, 112, 83, 89, 87, 91, 93, 84, 60, 24, 93, 96, 92, + 69, 67, 85, 77, 103, 144, 202, 198, 198, 190, 140, 111, 100, 103, 114, 56, + 24, 24, 24, 25, 36, 38, 48, 46, 69, 92, 201, 202, 187, 122, 124, 128, + 143, 147, 148, 147, 143, 135, 116, 56, 12, 14, 5, 18, 10, 37, 83, 71, + 75, 73, 88, 87, 71, 67, 46, 24, 79, 81, 81, 72, 79, 85, 71, 68, + 71, 72, 69, 52, 79, 93, 69, 64, 81, 67, 71, 61, 61, 65, 68, 59, + 30, 49, 67, 64, 55, 34, 17, 46, 21, 22, 25, 6, 8, 91, 112, 95, + 99, 104, 106, 102, 99, 97, 93, 71, 36, 85, 102, 87, 84, 85, 83, 81, + 85, 77, 59, 52, 76, 91, 68, 76, 76, 75, 72, 73, 73, 76, 83, 32, + 5, 51, 87, 65, 79, 79, 76, 83, 87, 84, 76, 59, 41, 65, 77, 71, + 61, 52, 60, 61, 73, 65, 18, 6, 75, 115, 107, 114, 102, 100, 103, 108, + 106, 111, 93, 79, 60, 91, 95, 73, 81, 77, 79, 80, 81, 76, 52, 22, + 1, 57, 84, 69, 52, 53, 56, 61, 55, 60, 65, 38, 25, 44, 75, 42, + 44, 48, 42, 52, 41, 51, 29, 9, 21, 44, 68, 57, 49, 48, 59, 63, + 64, 36, 36, 22, 0, 49, 85, 52, 65, 46, 51, 56, 41, 63, 41, 33, + 21, 65, 73, 71, 61, 38, 45, 48, 60, 55, 45, 12, 63, 93, 77, 59, + 61, 64, 75, 64, 77, 68, 60, 42, 37, 72, 88, 69, 72, 68, 64, 55, + 53, 56, 64, 34, 10, 51, 57, 36, 38, 18, 25, 22, 24, 9, 6, 2, + 52, 102, 99, 83, 89, 88, 88, 84, 103, 75, 40, 6, 48, 49, 79, 64, + 73, 87, 34, 55, 57, 36, 44, 53, 42, 80, 97, 89, 88, 75, 84, 85, + 84, 81, 76, 55, 20, 72, 64, 61, 42, 46, 40, 46, 60, 44, 22, 9, + 49, 69, 72, 38, 37, 36, 41, 36, 33, 46, 26, 10, 4, 56, 60, 64, + 37, 42, 30, 30, 29, 21, 13, 9, 88, 93, 95, 79, 89, 68, 104, 64, + 67, 56, 53, 45, 36, 25, 24, 21, 21, 18, 17, 14, 16, 14, 13, 10, + 5, 6, 16, 21, 22, 30, 17, 14, 17, 30, 12, 21, 0, 0, 41, 67, + 37, 59, 77, 80, 80, 96, 80, 77, 89, 84, 60, 14, 52, 52, 64, 60, + 60, 63, 57, 69, 55, 40, 36, 13, 85, 103, 89, 71, 88, 77, 77, 72, + 75, 85, 75, 57, 87, 99, 93, 84, 93, 108, 95, 85, 102, 64, 32, 71, + 96, 75, 76, 71, 67, 84, 79, 77, 75, 68, 46, 20, 111, 112, 106, 99, + 92, 100, 83, 84, 88, 71, 73, 53, 91, 93, 79, 81, 79, 84, 69, 77, + 88, 71, 72, 48, 8, 83, 96, 85, 115, 100, 83, 89, 99, 88, 64, 42, + 55, 51, 56, 45, 32, 42, 45, 38, 49, 12, 6, 1, 71, 99, 76, 83, + 87, 85, 85, 89, 87, 80, 34, 1, 68, 81, 80, 76, 69, 67, 68, 83, + 77, 44, 18, 56, 65, 24, 29, 13, 32, 13, 12, 28, 24, 22, 0, 2, + 79, 93, 88, 69, 73, 76, 80, 75, 64, 55, 36, 42, 97, 106, 89, 97, + 77, 91, 103, 102, 91, 76, 56, 29, 79, 85, 93, 73, 68, 79, 67, 100, + 181, 198, 197, 194, 146, 115, 100, 107, 111, 65, 38, 21, 25, 25, 26, 36, + 41, 48, 48, 64, 89, 209, 206, 195, 120, 122, 128, 131, 139, 143, 146, 147, + 140, 120, 57, 10, 10, 5, 21, 9, 42, 84, 68, 73, 71, 87, 87, 68, + 79, 38, 24, 71, 79, 87, 96, 96, 100, 71, 63, 61, 71, 60, 49, 73, + 92, 75, 75, 61, 73, 75, 76, 60, 80, 65, 53, 36, 61, 57, 48, 28, + 21, 10, 16, 18, 25, 21, 4, 6, 91, 114, 111, 92, 114, 99, 97, 97, + 91, 96, 68, 42, 73, 97, 80, 77, 72, 95, 79, 67, 75, 63, 44, 79, + 93, 69, 68, 75, 67, 75, 69, 72, 76, 79, 33, 5, 55, 83, 92, 56, + 59, 81, 67, 68, 69, 71, 57, 38, 63, 93, 81, 48, 71, 87, 73, 56, + 56, 17, 0, 89, 110, 108, 106, 99, 100, 92, 93, 93, 102, 95, 75, 57, + 87, 85, 67, 69, 75, 79, 79, 81, 64, 61, 22, 1, 51, 75, 63, 60, + 52, 59, 45, 60, 60, 65, 42, 24, 48, 64, 34, 32, 46, 46, 45, 51, + 52, 29, 12, 18, 60, 67, 48, 75, 52, 68, 65, 41, 38, 37, 18, 1, + 73, 71, 57, 64, 44, 42, 52, 38, 73, 42, 33, 25, 56, 68, 80, 65, + 68, 56, 44, 42, 49, 32, 14, 53, 95, 88, 85, 67, 71, 52, 59, 59, + 65, 32, 30, 21, 67, 80, 59, 56, 53, 44, 52, 53, 65, 57, 37, 14, + 44, 61, 34, 29, 24, 38, 24, 25, 9, 6, 4, 56, 103, 100, 83, 99, + 89, 83, 81, 93, 67, 42, 6, 34, 41, 56, 67, 46, 51, 48, 57, 29, + 51, 49, 52, 8, 77, 95, 76, 88, 92, 84, 96, 100, 96, 81, 52, 22, + 63, 67, 51, 45, 44, 44, 59, 60, 65, 33, 8, 52, 55, 65, 38, 40, + 44, 41, 37, 53, 44, 40, 14, 2, 49, 76, 60, 41, 33, 42, 34, 28, + 24, 13, 8, 100, 104, 88, 91, 63, 65, 83, 64, 65, 52, 56, 55, 48, + 22, 33, 21, 24, 22, 21, 16, 14, 14, 17, 9, 2, 6, 17, 26, 29, + 26, 30, 22, 22, 21, 13, 5, 0, 6, 49, 61, 40, 30, 114, 114, 93, + 92, 96, 91, 89, 102, 63, 10, 34, 60, 65, 52, 75, 55, 59, 45, 57, + 36, 24, 12, 85, 108, 87, 89, 89, 77, 85, 84, 77, 84, 69, 56, 81, + 88, 85, 72, 93, 99, 93, 83, 100, 64, 34, 75, 96, 83, 83, 61, 69, + 83, 72, 69, 69, 68, 59, 41, 116, 120, 92, 104, 77, 92, 85, 88, 83, + 79, 77, 53, 92, 87, 80, 83, 87, 72, 81, 85, 85, 69, 73, 49, 8, + 79, 91, 97, 92, 102, 81, 85, 107, 81, 65, 36, 59, 69, 48, 55, 59, + 55, 53, 41, 32, 20, 5, 10, 77, 100, 91, 87, 89, 96, 97, 89, 92, + 79, 34, 0, 79, 83, 64, 77, 76, 67, 69, 72, 67, 53, 24, 51, 57, + 40, 24, 16, 29, 6, 13, 17, 16, 20, 0, 2, 83, 93, 88, 79, 79, + 72, 81, 88, 69, 55, 40, 53, 107, 99, 96, 84, 72, 92, 95, 84, 80, + 79, 56, 29, 81, 89, 96, 79, 91, 64, 61, 99, 190, 199, 193, 155, 116, + 97, 119, 57, 55, 37, 22, 24, 22, 26, 25, 32, 40, 42, 49, 75, 115, + 208, 205, 198, 118, 118, 126, 128, 131, 135, 143, 147, 140, 116, 48, 9, 8, + 5, 16, 13, 48, 83, 68, 72, 71, 88, 73, 80, 56, 44, 30, 71, 92, + 77, 93, 83, 81, 91, 80, 59, 68, 59, 46, 80, 92, 89, 55, 89, 65, + 71, 60, 79, 72, 65, 46, 40, 32, 53, 38, 24, 12, 12, 20, 20, 28, + 17, 1, 5, 95, 112, 92, 95, 103, 114, 103, 91, 103, 97, 72, 42, 64, + 102, 85, 79, 97, 84, 67, 75, 64, 53, 40, 79, 95, 69, 79, 88, 81, + 87, 92, 76, 72, 75, 38, 9, 60, 76, 84, 60, 73, 85, 77, 68, 76, + 68, 57, 36, 60, 76, 73, 65, 60, 59, 59, 59, 59, 18, 0, 88, 112, + 108, 108, 103, 107, 99, 93, 95, 99, 91, 52, 63, 89, 76, 67, 79, 89, + 88, 71, 63, 63, 56, 21, 17, 69, 76, 60, 56, 52, 68, 53, 64, 64, + 65, 44, 29, 52, 75, 34, 30, 51, 53, 55, 44, 44, 26, 10, 17, 57, + 64, 55, 65, 55, 64, 45, 41, 41, 40, 21, 8, 68, 67, 45, 56, 40, + 41, 55, 36, 56, 42, 32, 25, 51, 69, 67, 72, 72, 59, 34, 45, 46, + 32, 17, 41, 89, 81, 84, 63, 60, 63, 89, 65, 59, 33, 33, 34, 67, + 77, 61, 55, 52, 68, 71, 61, 68, 61, 42, 14, 44, 56, 37, 25, 12, + 18, 16, 33, 13, 6, 6, 65, 102, 96, 84, 99, 84, 84, 91, 95, 69, + 41, 6, 53, 44, 53, 57, 40, 51, 59, 38, 26, 37, 44, 25, 5, 79, + 93, 89, 96, 95, 85, 83, 84, 80, 81, 53, 26, 57, 69, 61, 40, 44, + 41, 49, 55, 56, 33, 6, 42, 63, 59, 38, 40, 33, 38, 33, 33, 42, + 34, 14, 4, 55, 63, 61, 40, 24, 33, 30, 18, 22, 12, 6, 102, 93, + 93, 64, 76, 81, 49, 65, 55, 59, 56, 52, 44, 26, 37, 25, 22, 16, + 18, 13, 22, 21, 17, 9, 4, 8, 17, 26, 21, 25, 29, 14, 20, 6, + 18, 5, 0, 1, 36, 63, 24, 18, 88, 100, 104, 97, 95, 88, 91, 88, + 59, 10, 46, 55, 61, 59, 52, 51, 55, 53, 56, 38, 25, 13, 77, 100, + 77, 77, 80, 80, 85, 81, 79, 67, 68, 45, 84, 89, 88, 65, 91, 83, + 83, 81, 87, 64, 36, 53, 89, 81, 87, 71, 75, 81, 81, 85, 80, 65, + 65, 38, 118, 106, 100, 108, 85, 102, 83, 88, 79, 83, 75, 56, 88, 87, + 80, 71, 76, 71, 87, 75, 81, 69, 63, 48, 8, 84, 81, 79, 92, 92, + 83, 84, 92, 81, 68, 37, 49, 44, 52, 41, 34, 34, 49, 48, 18, 10, + 8, 2, 76, 100, 77, 83, 99, 97, 83, 88, 93, 77, 36, 12, 83, 80, + 65, 79, 73, 64, 71, 69, 72, 64, 28, 56, 52, 61, 26, 18, 41, 12, + 12, 13, 28, 20, 0, 1, 83, 81, 92, 80, 75, 61, 77, 87, 71, 57, + 38, 63, 110, 96, 84, 80, 79, 97, 85, 77, 68, 71, 60, 30, 76, 91, + 89, 88, 65, 63, 72, 93, 183, 191, 166, 118, 99, 106, 56, 34, 24, 21, + 21, 22, 21, 25, 22, 33, 42, 44, 63, 81, 166, 210, 206, 199, 119, 119, + 126, 130, 130, 134, 143, 144, 138, 112, 26, 9, 9, 6, 16, 13, 44, 80, + 64, 73, 72, 83, 76, 77, 59, 40, 25, 72, 83, 85, 81, 73, 64, 64, + 65, 63, 65, 46, 42, 75, 89, 91, 65, 73, 61, 75, 73, 79, 68, 59, + 49, 30, 42, 52, 37, 37, 44, 46, 38, 28, 32, 16, 5, 4, 75, 112, + 91, 95, 87, 104, 114, 99, 93, 96, 69, 48, 64, 96, 79, 89, 87, 93, + 68, 71, 65, 52, 41, 83, 97, 79, 75, 91, 84, 85, 79, 76, 72, 67, + 51, 10, 69, 76, 84, 61, 72, 81, 72, 73, 71, 68, 53, 32, 53, 79, + 75, 81, 60, 65, 73, 63, 56, 20, 5, 89, 108, 118, 91, 85, 103, 100, + 99, 91, 93, 89, 46, 63, 95, 77, 71, 79, 97, 88, 77, 69, 55, 51, + 22, 2, 72, 75, 55, 53, 51, 64, 60, 64, 60, 64, 48, 22, 41, 71, + 41, 73, 37, 26, 38, 53, 40, 25, 9, 14, 63, 61, 45, 71, 51, 44, + 42, 38, 42, 38, 20, 5, 37, 56, 49, 38, 42, 40, 63, 36, 52, 40, + 30, 20, 55, 67, 77, 68, 76, 71, 57, 40, 44, 29, 16, 46, 85, 83, + 76, 49, 63, 53, 67, 57, 41, 37, 34, 32, 69, 71, 56, 61, 63, 51, + 45, 53, 48, 52, 38, 12, 38, 53, 41, 26, 21, 9, 9, 8, 14, 5, + 5, 67, 97, 96, 84, 88, 92, 85, 85, 100, 59, 41, 9, 48, 30, 51, + 40, 45, 36, 40, 41, 36, 38, 18, 37, 21, 77, 91, 89, 103, 77, 84, + 91, 87, 85, 77, 52, 28, 59, 61, 45, 30, 48, 59, 46, 56, 25, 28, + 8, 30, 38, 60, 32, 37, 41, 42, 32, 32, 38, 34, 12, 2, 53, 61, + 59, 34, 36, 29, 44, 21, 34, 10, 6, 59, 102, 79, 81, 79, 73, 59, + 65, 64, 63, 57, 61, 45, 28, 29, 25, 13, 28, 25, 24, 13, 16, 12, + 13, 4, 13, 20, 34, 37, 30, 25, 21, 8, 12, 12, 2, 0, 1, 49, + 38, 49, 20, 75, 106, 110, 89, 92, 95, 87, 81, 56, 5, 38, 61, 64, + 59, 56, 59, 68, 68, 48, 32, 24, 12, 72, 95, 79, 100, 80, 88, 80, + 72, 81, 73, 71, 41, 69, 103, 76, 63, 91, 87, 83, 83, 91, 65, 40, + 51, 89, 75, 89, 63, 76, 71, 75, 87, 75, 65, 41, 10, 115, 108, 95, + 89, 99, 88, 96, 92, 88, 76, 77, 52, 87, 84, 73, 77, 69, 71, 79, + 80, 75, 71, 67, 46, 8, 80, 93, 89, 95, 89, 73, 81, 87, 89, 69, + 53, 40, 51, 69, 60, 55, 61, 37, 33, 18, 1, 5, 1, 67, 96, 92, + 84, 87, 96, 85, 91, 83, 69, 37, 2, 60, 79, 61, 80, 73, 77, 59, + 68, 81, 52, 33, 16, 49, 49, 21, 20, 30, 13, 9, 17, 16, 16, 0, + 0, 79, 89, 89, 80, 80, 83, 81, 79, 68, 52, 41, 67, 108, 81, 91, + 92, 85, 85, 84, 97, 89, 67, 60, 32, 76, 87, 91, 88, 84, 75, 61, + 87, 170, 197, 162, 107, 89, 96, 44, 32, 24, 20, 25, 21, 20, 25, 22, + 45, 42, 41, 67, 93, 182, 217, 210, 204, 120, 119, 124, 130, 132, 138, 142, + 143, 130, 84, 13, 9, 8, 8, 16, 13, 51, 75, 65, 73, 75, 68, 80, + 71, 40, 46, 25, 65, 81, 76, 72, 71, 69, 81, 69, 64, 68, 57, 40, + 79, 80, 102, 72, 67, 68, 72, 73, 75, 59, 57, 30, 38, 28, 38, 33, + 32, 29, 29, 13, 18, 28, 18, 5, 4, 97, 114, 99, 88, 88, 88, 91, + 91, 89, 87, 81, 59, 67, 100, 79, 95, 83, 84, 61, 72, 53, 53, 38, + 77, 92, 73, 75, 81, 95, 76, 77, 75, 72, 64, 37, 9, 40, 56, 79, + 69, 83, 69, 68, 81, 68, 61, 48, 32, 48, 68, 69, 85, 80, 76, 59, + 63, 65, 18, 4, 76, 111, 110, 103, 99, 92, 97, 95, 95, 97, 72, 41, + 65, 88, 80, 63, 79, 99, 81, 72, 63, 57, 45, 24, 1, 57, 77, 53, + 46, 56, 55, 55, 60, 59, 61, 44, 36, 34, 63, 38, 36, 67, 26, 26, + 36, 32, 25, 8, 13, 56, 55, 48, 61, 61, 59, 48, 40, 48, 40, 22, + 5, 49, 67, 44, 37, 37, 32, 46, 46, 36, 38, 25, 14, 49, 63, 71, + 61, 69, 63, 60, 40, 42, 30, 17, 34, 73, 73, 103, 61, 68, 42, 37, + 44, 29, 28, 34, 28, 69, 69, 52, 45, 61, 49, 49, 44, 48, 44, 38, + 13, 37, 55, 42, 34, 26, 16, 26, 18, 8, 6, 2, 68, 96, 89, 92, + 95, 88, 75, 88, 103, 64, 42, 6, 49, 34, 63, 37, 25, 25, 57, 42, + 28, 25, 20, 45, 26, 81, 92, 92, 87, 87, 83, 83, 77, 83, 80, 73, + 29, 33, 64, 55, 46, 51, 49, 34, 30, 33, 25, 9, 20, 51, 56, 40, + 32, 29, 30, 34, 38, 36, 24, 9, 1, 41, 49, 53, 34, 44, 24, 30, + 22, 20, 10, 5, 89, 96, 76, 85, 80, 80, 65, 69, 69, 61, 57, 56, + 48, 28, 45, 30, 13, 13, 10, 9, 16, 10, 16, 8, 4, 17, 29, 28, + 13, 9, 10, 10, 8, 21, 13, 4, 0, 0, 22, 57, 21, 24, 80, 96, + 114, 107, 88, 83, 88, 81, 59, 8, 38, 56, 64, 69, 73, 65, 55, 52, + 45, 26, 17, 13, 71, 83, 97, 81, 100, 88, 81, 81, 80, 84, 65, 38, + 80, 89, 81, 80, 64, 71, 76, 71, 71, 69, 41, 53, 76, 73, 79, 80, + 76, 75, 75, 75, 75, 73, 46, 18, 106, 102, 77, 80, 88, 102, 100, 84, + 100, 75, 72, 46, 77, 85, 79, 72, 77, 73, 73, 76, 67, 69, 71, 46, + 9, 80, 83, 61, 75, 73, 59, 59, 75, 69, 72, 55, 34, 44, 30, 44, + 25, 28, 28, 34, 32, 1, 5, 8, 65, 92, 73, 80, 81, 80, 83, 93, + 87, 61, 36, 1, 59, 77, 64, 76, 77, 69, 68, 72, 69, 53, 22, 12, + 29, 21, 29, 21, 28, 24, 29, 22, 25, 16, 0, 0, 83, 92, 80, 83, + 85, 99, 89, 73, 59, 56, 29, 79, 108, 97, 102, 91, 93, 87, 72, 79, + 84, 77, 63, 34, 71, 85, 91, 87, 83, 61, 56, 69, 126, 198, 163, 114, + 97, 97, 49, 36, 22, 29, 29, 24, 24, 24, 24, 30, 42, 61, 83, 136, + 205, 216, 213, 198, 122, 119, 126, 131, 138, 143, 144, 139, 119, 41, 10, 8, + 5, 10, 21, 10, 42, 72, 71, 81, 76, 80, 77, 71, 53, 42, 24, 36, + 76, 79, 56, 61, 60, 52, 69, 67, 65, 52, 34, 68, 76, 79, 79, 73, + 73, 72, 71, 71, 64, 52, 32, 30, 45, 53, 57, 45, 42, 29, 45, 34, + 14, 13, 1, 2, 96, 110, 99, 68, 67, 67, 76, 63, 72, 73, 75, 60, + 55, 87, 83, 84, 83, 83, 59, 72, 51, 49, 32, 71, 85, 76, 75, 80, + 76, 76, 73, 76, 75, 72, 33, 9, 61, 73, 100, 79, 81, 79, 68, 65, + 63, 60, 49, 28, 38, 51, 60, 69, 76, 65, 72, 59, 64, 17, 10, 77, + 97, 102, 100, 92, 97, 99, 96, 95, 91, 73, 36, 61, 65, 91, 88, 95, + 88, 77, 65, 63, 51, 52, 21, 1, 67, 65, 55, 46, 53, 49, 48, 44, + 45, 45, 49, 37, 20, 44, 64, 49, 52, 18, 26, 38, 38, 26, 14, 10, + 57, 49, 44, 52, 46, 49, 46, 45, 45, 41, 20, 8, 48, 46, 42, 30, + 29, 26, 29, 33, 32, 36, 26, 14, 38, 57, 69, 68, 59, 49, 37, 42, + 44, 32, 18, 22, 46, 71, 68, 67, 34, 38, 36, 37, 34, 26, 25, 14, + 67, 69, 42, 56, 60, 56, 56, 41, 55, 46, 41, 21, 17, 52, 33, 36, + 14, 9, 16, 22, 20, 6, 14, 60, 91, 79, 93, 92, 91, 87, 88, 99, + 56, 41, 5, 48, 48, 52, 37, 24, 21, 18, 25, 36, 17, 33, 45, 4, + 68, 83, 81, 87, 79, 85, 76, 84, 79, 83, 64, 29, 33, 52, 53, 37, + 44, 33, 34, 36, 24, 29, 12, 16, 45, 25, 24, 17, 20, 25, 34, 37, + 25, 24, 14, 0, 44, 51, 61, 56, 38, 36, 37, 26, 21, 12, 4, 100, + 106, 72, 71, 73, 72, 73, 68, 68, 55, 59, 60, 48, 25, 22, 20, 10, + 9, 14, 16, 13, 10, 13, 9, 2, 17, 34, 9, 22, 40, 25, 26, 18, + 10, 9, 5, 0, 1, 45, 33, 30, 20, 81, 85, 88, 89, 99, 91, 91, + 73, 56, 6, 32, 48, 51, 49, 45, 48, 45, 46, 40, 29, 24, 12, 65, + 89, 97, 96, 87, 84, 85, 85, 84, 81, 57, 36, 77, 77, 81, 81, 83, + 72, 75, 72, 68, 68, 64, 60, 46, 48, 49, 46, 51, 49, 51, 55, 53, + 55, 56, 24, 116, 97, 92, 97, 88, 89, 89, 89, 88, 83, 76, 49, 89, + 87, 73, 73, 72, 64, 68, 61, 65, 64, 68, 46, 10, 77, 80, 73, 73, + 69, 84, 68, 65, 57, 71, 38, 33, 38, 28, 25, 24, 21, 21, 18, 17, + 13, 4, 1, 48, 91, 84, 84, 83, 91, 87, 91, 73, 73, 38, 1, 57, + 73, 63, 56, 77, 75, 71, 59, 61, 45, 40, 30, 18, 18, 12, 8, 5, + 5, 6, 5, 2, 4, 0, 1, 89, 89, 89, 83, 80, 77, 73, 73, 46, + 48, 29, 71, 103, 95, 84, 80, 80, 80, 72, 71, 71, 68, 63, 36, 46, + 76, 83, 77, 68, 44, 63, 59, 100, 182, 183, 143, 92, 119, 85, 44, 36, + 29, 33, 30, 30, 33, 38, 36, 65, 73, 116, 195, 216, 214, 216, 191, 120, + 120, 127, 135, 140, 146, 140, 128, 65, 12, 10, 8, 6, 9, 14, 16, 41, + 63, 67, 65, 64, 63, 59, 53, 56, 53, 30, 37, 72, 80, 55, 59, 64, + 60, 63, 61, 53, 48, 32, 46, 71, 75, 59, 56, 68, 71, 59, 59, 59, + 45, 29, 30, 29, 10, 14, 12, 25, 9, 12, 8, 4, 10, 0, 2, 84, + 97, 103, 96, 88, 87, 91, 88, 83, 81, 76, 75, 75, 52, 57, 63, 61, + 60, 72, 69, 64, 49, 29, 68, 84, 79, 81, 75, 76, 75, 77, 73, 72, + 68, 42, 13, 56, 59, 60, 60, 60, 60, 64, 57, 60, 49, 46, 25, 38, + 44, 57, 57, 52, 51, 51, 51, 44, 18, 0, 13, 48, 60, 49, 49, 57, + 67, 59, 56, 65, 57, 29, 26, 32, 34, 37, 41, 45, 41, 46, 44, 52, + 46, 18, 8, 64, 63, 64, 67, 59, 67, 56, 53, 49, 45, 41, 41, 20, + 18, 29, 37, 28, 20, 38, 37, 32, 25, 12, 9, 52, 45, 64, 49, 48, + 51, 49, 48, 46, 44, 24, 0, 38, 49, 25, 25, 28, 32, 30, 44, 33, + 38, 22, 14, 22, 45, 48, 37, 34, 38, 41, 32, 32, 37, 29, 18, 28, + 46, 45, 32, 32, 49, 36, 29, 32, 26, 25, 22, 60, 64, 63, 60, 55, + 60, 56, 49, 48, 53, 45, 17, 12, 38, 42, 42, 33, 12, 25, 25, 16, + 6, 6, 65, 93, 85, 88, 91, 92, 96, 88, 96, 69, 41, 5, 38, 45, + 36, 18, 25, 17, 17, 21, 17, 21, 25, 28, 12, 56, 68, 71, 49, 53, + 64, 64, 67, 59, 55, 46, 41, 42, 38, 33, 33, 32, 42, 30, 30, 25, + 25, 24, 10, 13, 16, 13, 17, 17, 20, 13, 37, 26, 17, 13, 0, 37, + 44, 42, 45, 41, 55, 24, 17, 20, 12, 2, 92, 92, 76, 65, 68, 60, + 59, 59, 60, 59, 55, 52, 44, 28, 30, 14, 22, 17, 13, 14, 10, 12, + 8, 8, 2, 20, 37, 44, 21, 16, 12, 8, 9, 8, 6, 4, 0, 0, + 32, 36, 25, 24, 72, 69, 69, 68, 69, 67, 69, 59, 41, 6, 29, 40, + 34, 25, 38, 40, 32, 29, 36, 32, 22, 10, 46, 89, 88, 85, 83, 63, + 56, 53, 64, 60, 51, 33, 53, 59, 59, 57, 56, 57, 60, 56, 56, 55, + 55, 51, 52, 37, 26, 21, 22, 32, 16, 12, 13, 10, 10, 21, 114, 77, + 92, 48, 88, 85, 83, 53, 84, 79, 72, 46, 81, 84, 65, 61, 57, 56, + 49, 53, 53, 53, 41, 21, 13, 44, 38, 41, 38, 37, 40, 37, 38, 36, + 33, 30, 26, 22, 21, 22, 20, 14, 13, 14, 12, 10, 12, 0, 18, 68, + 73, 51, 56, 77, 71, 64, 67, 65, 36, 16, 48, 64, 65, 61, 53, 51, + 49, 46, 42, 44, 18, 10, 6, 5, 9, 18, 22, 16, 8, 10, 10, 8, + 1, 0, 80, 51, 61, 59, 60, 64, 65, 71, 49, 42, 26, 63, 79, 85, + 83, 76, 79, 73, 69, 67, 71, 76, 67, 63, 64, 61, 41, 45, 59, 57, + 51, 56, 65, 162, 193, 157, 111, 111, 107, 72, 44, 30, 42, 41, 38, 36, + 40, 63, 73, 114, 183, 216, 216, 217, 213, 161, 119, 122, 128, 140, 143, 142, + 132, 92, 21, 10, 9, 8, 10, 10, 14, 17, 25, 52, 52, 48, 38, 51, + 49, 38, 41, 46, 36, 34, 67, 53, 51, 41, 40, 38, 37, 38, 40, 48, + 26, 16, 16, 22, 18, 17, 18, 24, 32, 44, 49, 34, 28, 8, 8, 5, + 5, 4, 4, 2, 0, 2, 4, 0, 5, 1, 10, 52, 63, 53, 53, 56, + 67, 60, 59, 61, 61, 61, 53, 63, 60, 63, 60, 67, 63, 65, 55, 48, + 34, 55, 75, 75, 77, 67, 64, 61, 60, 53, 56, 53, 38, 14, 24, 26, + 25, 26, 28, 30, 32, 36, 34, 36, 36, 24, 24, 13, 17, 17, 13, 9, + 9, 12, 12, 10, 2, 2, 5, 13, 5, 4, 12, 17, 8, 9, 16, 18, + 18, 16, 5, 13, 13, 12, 18, 26, 21, 26, 32, 32, 21, 0, 14, 24, + 28, 26, 26, 29, 30, 24, 25, 25, 22, 24, 20, 24, 33, 24, 22, 22, + 14, 22, 20, 24, 13, 16, 45, 40, 49, 46, 45, 44, 44, 40, 40, 38, + 18, 12, 34, 12, 16, 9, 9, 12, 14, 6, 5, 9, 13, 13, 9, 10, + 13, 12, 12, 14, 14, 17, 20, 28, 30, 30, 29, 32, 29, 26, 26, 28, + 26, 25, 24, 28, 28, 22, 57, 53, 51, 51, 41, 40, 38, 34, 33, 32, + 18, 21, 21, 18, 22, 16, 14, 9, 9, 9, 10, 5, 5, 61, 67, 83, + 85, 79, 76, 75, 81, 72, 53, 38, 8, 48, 33, 24, 21, 22, 20, 20, + 22, 22, 21, 22, 36, 17, 13, 14, 14, 13, 18, 21, 24, 24, 26, 34, + 38, 32, 29, 25, 26, 25, 25, 24, 25, 22, 22, 20, 18, 17, 20, 18, + 18, 16, 17, 16, 16, 12, 16, 16, 12, 0, 21, 29, 41, 17, 20, 25, + 36, 25, 16, 10, 2, 59, 92, 75, 63, 61, 61, 60, 55, 40, 38, 34, + 29, 29, 29, 16, 9, 20, 17, 13, 16, 13, 16, 10, 10, 2, 9, 18, + 16, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 45, 42, 38, 32, 30, 29, 25, 22, 0, 4, 8, 8, 6, 8, 14, 12, + 13, 18, 30, 17, 9, 64, 34, 33, 32, 32, 44, 33, 25, 22, 40, 36, + 20, 17, 13, 16, 13, 13, 12, 16, 13, 12, 10, 13, 12, 13, 29, 42, + 52, 52, 57, 91, 76, 95, 76, 55, 8, 122, 83, 96, 75, 63, 56, 57, + 57, 71, 73, 71, 44, 45, 46, 46, 40, 36, 33, 28, 25, 21, 22, 16, + 13, 12, 10, 9, 8, 6, 6, 5, 5, 4, 4, 4, 2, 1, 5, 6, + 1, 0, 1, 4, 0, 0, 1, 2, 0, 17, 13, 13, 17, 16, 34, 61, + 37, 46, 55, 33, 1, 44, 14, 20, 16, 17, 12, 17, 12, 16, 9, 8, + 9, 10, 24, 49, 44, 57, 61, 67, 59, 68, 64, 38, 0, 92, 79, 77, + 68, 61, 59, 59, 45, 55, 44, 25, 48, 49, 52, 49, 49, 51, 52, 52, + 53, 49, 55, 52, 51, 51, 33, 25, 26, 28, 37, 64, 63, 65, 108, 181, + 171, 114, 81, 151, 100, 77, 76, 80, 81, 81, 80, 79, 102, 150, 197, 216, + 216, 214, 214, 199, 132, 119, 127, 139, 142, 139, 132, 103, 29, 12, 10, 8, + 10, 14, 16, 8, 17, 24, 21, 25, 28, 28, 28, 29, 30, 34, 42, 42, + 36, 38, 30, 33, 40, 33, 37, 45, 61, 52, 46, 32, 37, 79, 81, 71, + 63, 46, 45, 41, 37, 13, 9, 6, 4, 0, 13, 2, 1, 2, 9, 0, + 2, 4, 0, 0, 5, 8, 2, 2, 2, 6, 5, 5, 6, 8, 9, 10, + 12, 13, 16, 18, 25, 25, 29, 30, 36, 37, 45, 33, 37, 51, 51, 32, + 33, 36, 37, 22, 22, 26, 21, 12, 2, 8, 2, 13, 14, 8, 6, 12, + 12, 6, 8, 10, 13, 45, 57, 69, 68, 60, 72, 64, 68, 36, 32, 1, + 14, 102, 108, 72, 67, 84, 92, 60, 64, 61, 21, 10, 40, 89, 85, 48, + 45, 48, 26, 25, 20, 25, 13, 10, 4, 1, 0, 8, 1, 0, 0, 6, + 4, 0, 2, 9, 8, 10, 6, 12, 9, 8, 20, 14, 10, 13, 21, 5, + 8, 37, 8, 12, 8, 9, 9, 9, 6, 6, 4, 4, 9, 6, 22, 34, + 40, 40, 42, 52, 59, 48, 46, 24, 10, 51, 76, 85, 64, 65, 42, 29, + 24, 16, 16, 13, 12, 14, 12, 17, 10, 12, 14, 12, 14, 16, 17, 17, + 13, 25, 21, 30, 24, 24, 18, 22, 21, 20, 18, 18, 16, 13, 6, 2, + 1, 1, 2, 2, 2, 2, 6, 4, 12, 18, 25, 21, 36, 37, 33, 24, + 40, 44, 25, 6, 34, 18, 25, 21, 18, 20, 22, 29, 33, 34, 33, 45, + 1, 32, 103, 103, 65, 65, 57, 56, 48, 34, 17, 13, 10, 8, 8, 8, + 6, 6, 6, 5, 5, 4, 6, 6, 4, 1, 0, 0, 1, 0, 0, 0, + 0, 1, 1, 0, 0, 4, 2, 6, 4, 5, 5, 6, 6, 17, 10, 1, + 55, 87, 61, 53, 51, 46, 45, 45, 41, 40, 48, 37, 41, 13, 17, 25, + 16, 13, 6, 4, 2, 2, 2, 1, 1, 2, 1, 1, 1, 4, 4, 1, + 1, 2, 1, 0, 0, 0, 1, 0, 0, 0, 52, 63, 64, 56, 68, 57, + 68, 67, 52, 0, 32, 83, 80, 55, 60, 65, 53, 36, 25, 20, 12, 12, + 22, 53, 56, 48, 59, 65, 88, 76, 68, 64, 52, 14, 65, 87, 89, 80, + 69, 83, 73, 84, 80, 77, 36, 9, 68, 119, 115, 110, 108, 103, 102, 102, + 111, 88, 51, 10, 122, 84, 88, 123, 115, 99, 81, 84, 61, 45, 25, 38, + 44, 51, 53, 59, 59, 57, 65, 69, 68, 46, 64, 61, 112, 115, 115, 116, + 122, 118, 111, 115, 123, 110, 93, 89, 110, 106, 100, 108, 107, 102, 91, 83, + 102, 81, 20, 1, 65, 106, 104, 81, 67, 49, 40, 36, 20, 14, 10, 1, + 10, 44, 51, 56, 48, 57, 61, 64, 61, 65, 41, 1, 52, 111, 123, 126, + 122, 120, 104, 114, 103, 76, 37, 0, 88, 77, 92, 89, 96, 88, 87, 75, + 63, 44, 25, 9, 9, 9, 9, 10, 10, 10, 13, 12, 12, 12, 16, 17, + 18, 59, 61, 79, 79, 76, 103, 97, 76, 69, 120, 179, 128, 88, 114, 126, + 123, 135, 131, 118, 124, 138, 148, 191, 210, 214, 218, 216, 213, 212, 150, 122, + 126, 135, 138, 134, 126, 89, 28, 13, 13, 10, 16, 14, 12, 17, 25, 32, + 38, 73, 88, 80, 63, 61, 48, 45, 45, 36, 32, 29, 53, 84, 99, 91, + 104, 75, 76, 88, 67, 49, 29, 55, 99, 80, 65, 64, 80, 72, 73, 46, + 42, 36, 0, 16, 118, 110, 85, 73, 87, 85, 81, 76, 84, 65, 33, 0, + 30, 76, 88, 87, 88, 88, 91, 83, 81, 76, 69, 63, 75, 76, 77, 79, + 73, 51, 37, 30, 24, 24, 25, 17, 22, 42, 38, 49, 42, 51, 48, 55, + 56, 45, 33, 4, 18, 61, 67, 77, 69, 64, 65, 57, 65, 67, 60, 60, + 59, 80, 89, 93, 88, 87, 79, 65, 61, 34, 4, 91, 88, 67, 84, 72, + 80, 68, 81, 75, 61, 25, 6, 83, 100, 96, 93, 93, 88, 79, 57, 64, + 65, 26, 18, 4, 14, 100, 93, 60, 45, 91, 85, 61, 49, 61, 55, 24, + 2, 36, 89, 84, 48, 46, 41, 34, 25, 17, 9, 4, 6, 33, 34, 37, + 28, 41, 45, 36, 40, 40, 29, 0, 30, 92, 87, 83, 85, 88, 77, 79, + 75, 59, 24, 9, 59, 85, 63, 60, 80, 80, 79, 79, 56, 29, 22, 5, + 37, 122, 115, 75, 68, 67, 60, 51, 24, 10, 12, 5, 5, 6, 6, 4, + 5, 4, 4, 1, 4, 2, 2, 2, 5, 12, 55, 64, 65, 63, 49, 72, + 57, 16, 5, 40, 79, 72, 67, 29, 24, 16, 12, 10, 6, 9, 2, 14, + 34, 76, 75, 75, 77, 75, 79, 69, 72, 53, 45, 4, 85, 119, 111, 95, + 112, 99, 100, 99, 99, 89, 89, 68, 63, 81, 61, 45, 57, 69, 60, 57, + 46, 34, 2, 0, 14, 68, 95, 64, 59, 63, 79, 64, 60, 52, 4, 0, + 48, 64, 60, 38, 64, 53, 53, 12, 6, 10, 1, 64, 68, 72, 69, 76, + 73, 72, 72, 73, 75, 68, 38, 24, 18, 21, 45, 40, 34, 38, 37, 25, + 18, 9, 12, 4, 2, 14, 37, 40, 52, 38, 44, 45, 60, 60, 67, 56, + 72, 76, 83, 81, 83, 120, 103, 110, 104, 99, 100, 64, 68, 53, 0, 67, + 77, 95, 91, 84, 87, 83, 81, 80, 75, 33, 12, 73, 112, 114, 108, 106, + 97, 110, 107, 96, 67, 57, 16, 91, 92, 85, 76, 73, 92, 81, 77, 75, + 77, 41, 8, 96, 118, 93, 99, 108, 119, 99, 102, 83, 92, 57, 14, 130, + 106, 81, 79, 59, 80, 93, 111, 119, 104, 85, 99, 116, 106, 108, 116, 106, + 107, 112, 103, 108, 92, 102, 88, 76, 110, 97, 85, 93, 96, 83, 76, 72, + 76, 91, 64, 76, 93, 110, 114, 99, 99, 88, 83, 92, 91, 45, 0, 84, + 102, 127, 89, 95, 71, 80, 77, 71, 55, 33, 8, 69, 112, 108, 108, 100, + 99, 64, 84, 87, 71, 46, 1, 102, 124, 106, 91, 77, 100, 89, 81, 84, + 73, 36, 0, 104, 75, 81, 87, 83, 80, 83, 84, 71, 56, 25, 30, 100, + 81, 76, 80, 93, 93, 77, 75, 72, 68, 67, 63, 69, 65, 104, 108, 106, + 89, 89, 91, 85, 56, 73, 169, 146, 97, 79, 158, 169, 177, 190, 199, 205, + 206, 210, 213, 214, 213, 209, 212, 205, 155, 124, 130, 134, 130, 126, 99, 56, + 26, 16, 13, 10, 18, 13, 18, 25, 40, 25, 26, 64, 103, 114, 100, 103, + 106, 112, 111, 112, 92, 83, 84, 87, 102, 99, 83, 72, 83, 72, 71, 71, + 52, 32, 51, 97, 93, 81, 67, 63, 59, 73, 80, 52, 40, 0, 118, 120, + 95, 97, 92, 93, 89, 67, 64, 59, 55, 65, 0, 110, 104, 92, 93, 81, + 92, 77, 80, 80, 81, 77, 55, 49, 77, 80, 72, 72, 60, 59, 64, 72, + 40, 22, 41, 91, 89, 96, 85, 87, 87, 81, 85, 83, 64, 36, 2, 99, + 93, 102, 96, 85, 80, 73, 65, 71, 67, 48, 59, 95, 114, 108, 93, 93, + 79, 83, 85, 59, 36, 2, 104, 84, 83, 73, 65, 64, 63, 63, 69, 75, + 26, 9, 96, 108, 85, 51, 68, 55, 83, 76, 60, 38, 33, 20, 0, 104, + 115, 96, 48, 65, 84, 75, 61, 59, 59, 56, 29, 2, 87, 96, 75, 72, + 77, 68, 83, 45, 30, 21, 2, 36, 87, 96, 102, 88, 83, 75, 72, 76, + 71, 41, 14, 80, 97, 92, 83, 71, 73, 71, 72, 69, 75, 28, 8, 67, + 93, 63, 65, 52, 52, 55, 67, 71, 60, 25, 4, 106, 126, 104, 102, 108, + 104, 100, 73, 85, 83, 81, 81, 92, 99, 89, 87, 91, 80, 97, 87, 88, + 87, 71, 69, 75, 61, 63, 60, 68, 56, 75, 63, 60, 20, 5, 52, 104, + 72, 64, 71, 48, 57, 51, 36, 28, 14, 24, 63, 85, 89, 97, 88, 88, + 80, 84, 71, 65, 55, 33, 12, 100, 110, 115, 103, 103, 93, 76, 71, 80, + 68, 65, 76, 77, 67, 40, 41, 57, 61, 28, 34, 24, 59, 2, 0, 71, + 96, 63, 60, 55, 49, 57, 49, 55, 61, 9, 0, 56, 56, 45, 55, 69, + 52, 53, 52, 16, 10, 0, 91, 72, 67, 67, 65, 61, 38, 53, 64, 52, + 49, 30, 21, 16, 30, 37, 21, 24, 17, 20, 17, 25, 21, 2, 0, 34, + 64, 75, 75, 79, 71, 63, 53, 67, 52, 61, 56, 57, 46, 65, 84, 72, + 143, 128, 106, 114, 122, 108, 119, 67, 55, 0, 71, 85, 92, 89, 73, 76, + 53, 67, 65, 73, 38, 13, 97, 118, 107, 100, 97, 100, 104, 111, 106, 72, + 57, 18, 91, 102, 111, 122, 104, 112, 102, 99, 83, 79, 46, 8, 88, 116, + 95, 96, 79, 83, 88, 81, 68, 68, 52, 13, 130, 102, 99, 69, 77, 77, + 81, 84, 65, 84, 95, 91, 65, 64, 77, 77, 79, 60, 55, 80, 61, 64, + 95, 64, 111, 97, 104, 100, 88, 95, 92, 95, 91, 79, 81, 57, 103, 124, + 110, 92, 103, 97, 96, 102, 96, 91, 49, 1, 89, 104, 131, 88, 75, 93, + 67, 84, 68, 60, 37, 21, 88, 107, 96, 102, 102, 91, 85, 91, 88, 83, + 46, 0, 99, 124, 71, 80, 85, 85, 77, 103, 79, 85, 41, 0, 97, 71, + 79, 75, 73, 75, 73, 76, 76, 53, 25, 92, 93, 89, 77, 65, 83, 89, + 80, 72, 84, 72, 84, 65, 46, 103, 114, 97, 76, 68, 73, 89, 93, 53, + 55, 124, 154, 104, 73, 112, 118, 136, 154, 179, 191, 199, 204, 202, 204, 208, + 193, 170, 147, 119, 132, 128, 112, 92, 56, 28, 16, 17, 14, 13, 16, 13, + 17, 22, 34, 26, 29, 29, 64, 104, 112, 112, 110, 106, 100, 102, 104, 85, + 83, 64, 103, 95, 69, 72, 84, 87, 84, 73, 52, 67, 30, 52, 85, 80, + 69, 72, 69, 64, 71, 71, 52, 38, 0, 122, 118, 114, 87, 79, 77, 73, + 57, 57, 57, 73, 67, 0, 107, 87, 80, 84, 96, 88, 87, 97, 83, 81, + 63, 36, 69, 116, 87, 72, 67, 65, 63, 75, 71, 40, 30, 85, 89, 83, + 75, 64, 77, 88, 69, 71, 64, 53, 40, 9, 97, 76, 73, 76, 96, 84, + 69, 63, 67, 51, 42, 84, 118, 91, 77, 91, 81, 60, 48, 71, 42, 34, + 0, 68, 81, 71, 56, 45, 53, 68, 67, 87, 64, 28, 6, 85, 107, 64, + 57, 41, 46, 49, 60, 37, 30, 32, 18, 2, 88, 91, 84, 65, 69, 57, + 53, 64, 56, 80, 61, 30, 4, 91, 95, 61, 53, 55, 51, 53, 63, 34, + 29, 4, 75, 95, 91, 87, 79, 87, 84, 77, 52, 49, 29, 8, 80, 95, + 84, 68, 69, 59, 63, 63, 63, 56, 25, 8, 65, 88, 72, 69, 67, 52, + 51, 46, 57, 65, 24, 5, 93, 115, 112, 111, 97, 91, 81, 95, 80, 76, + 65, 72, 89, 89, 103, 69, 84, 88, 80, 80, 65, 83, 69, 46, 42, 83, + 91, 67, 61, 40, 34, 65, 48, 25, 5, 42, 102, 77, 65, 63, 53, 65, + 51, 52, 32, 16, 30, 65, 95, 84, 73, 69, 69, 71, 69, 76, 83, 37, + 40, 10, 89, 106, 112, 106, 100, 69, 71, 99, 96, 92, 81, 61, 34, 73, + 73, 44, 41, 30, 26, 9, 32, 41, 1, 4, 85, 85, 59, 61, 51, 68, + 69, 61, 55, 52, 10, 0, 38, 45, 41, 29, 22, 22, 18, 36, 32, 10, + 0, 102, 81, 59, 67, 46, 42, 33, 42, 45, 48, 42, 29, 16, 22, 40, + 33, 21, 8, 4, 4, 5, 12, 20, 0, 4, 53, 93, 95, 61, 67, 60, + 61, 68, 53, 33, 40, 44, 51, 89, 107, 131, 136, 84, 89, 115, 108, 79, + 95, 116, 68, 53, 0, 64, 99, 89, 67, 65, 75, 72, 64, 52, 65, 38, + 16, 80, 120, 103, 108, 99, 95, 93, 95, 111, 73, 60, 25, 59, 104, 104, + 89, 97, 111, 107, 79, 77, 77, 45, 6, 104, 110, 112, 88, 97, 97, 88, + 99, 75, 87, 57, 5, 124, 107, 97, 68, 65, 71, 87, 80, 81, 77, 61, + 67, 60, 97, 71, 69, 87, 80, 83, 80, 79, 61, 56, 37, 111, 100, 103, + 95, 83, 85, 76, 73, 92, 84, 75, 59, 119, 122, 93, 87, 83, 91, 96, + 88, 85, 104, 45, 0, 93, 110, 114, 71, 76, 91, 84, 100, 99, 81, 40, + 6, 106, 106, 110, 92, 104, 97, 88, 89, 85, 69, 46, 0, 93, 118, 69, + 81, 77, 93, 96, 97, 83, 67, 40, 0, 99, 80, 80, 87, 84, 73, 75, + 73, 79, 59, 25, 92, 89, 79, 84, 89, 85, 77, 79, 79, 71, 71, 57, + 38, 61, 110, 104, 96, 69, 72, 76, 64, 89, 56, 48, 108, 153, 104, 67, + 81, 99, 111, 118, 124, 150, 161, 170, 169, 163, 159, 139, 126, 126, 119, 100, + 77, 45, 29, 17, 14, 14, 13, 17, 13, 13, 24, 22, 29, 32, 32, 28, + 25, 67, 116, 119, 112, 88, 97, 88, 80, 72, 71, 52, 88, 107, 69, 75, + 97, 77, 69, 65, 73, 55, 69, 37, 42, 87, 83, 75, 87, 71, 83, 69, + 67, 60, 37, 0, 76, 111, 92, 97, 111, 88, 81, 76, 60, 59, 63, 36, + 4, 76, 75, 87, 96, 84, 85, 83, 77, 76, 55, 51, 34, 73, 108, 71, + 67, 84, 97, 92, 73, 60, 38, 21, 83, 88, 76, 64, 60, 56, 77, 76, + 63, 53, 49, 40, 2, 91, 65, 76, 57, 83, 97, 85, 64, 67, 41, 26, + 80, 119, 89, 85, 89, 79, 55, 65, 55, 46, 37, 0, 87, 91, 91, 42, + 57, 63, 59, 77, 72, 79, 29, 5, 88, 104, 59, 52, 41, 53, 53, 42, + 45, 29, 25, 20, 1, 77, 95, 53, 69, 75, 61, 56, 55, 51, 63, 53, + 41, 4, 79, 89, 59, 44, 61, 63, 59, 59, 56, 29, 0, 81, 100, 77, + 73, 73, 59, 53, 46, 40, 45, 28, 1, 76, 96, 76, 56, 69, 55, 53, + 57, 55, 63, 26, 5, 64, 88, 84, 65, 79, 79, 75, 53, 52, 49, 25, + 5, 81, 108, 111, 106, 110, 100, 107, 107, 104, 95, 64, 91, 106, 83, 63, + 57, 59, 64, 59, 46, 51, 55, 34, 30, 55, 96, 89, 33, 53, 55, 87, + 46, 49, 24, 6, 52, 95, 73, 48, 68, 71, 56, 64, 52, 38, 17, 26, + 64, 95, 80, 68, 68, 80, 80, 65, 64, 76, 38, 41, 1, 88, 102, 99, + 103, 108, 68, 75, 83, 93, 88, 79, 56, 60, 84, 63, 24, 44, 18, 29, + 28, 33, 34, 1, 0, 68, 72, 63, 60, 49, 56, 64, 61, 59, 44, 10, + 0, 65, 57, 26, 37, 34, 28, 17, 33, 44, 12, 0, 96, 64, 61, 65, + 42, 67, 36, 33, 57, 49, 36, 33, 16, 12, 40, 29, 8, 12, 16, 10, + 8, 9, 16, 0, 10, 73, 96, 61, 53, 60, 37, 51, 84, 57, 41, 51, + 38, 51, 93, 131, 77, 30, 111, 112, 120, 83, 92, 97, 110, 64, 53, 1, + 64, 95, 91, 56, 61, 64, 77, 51, 51, 71, 40, 17, 72, 110, 104, 100, + 110, 114, 93, 91, 97, 76, 61, 22, 100, 112, 103, 89, 93, 106, 106, 80, + 79, 80, 45, 6, 93, 110, 87, 96, 99, 91, 96, 85, 77, 75, 55, 5, + 122, 97, 95, 68, 71, 68, 92, 84, 84, 73, 53, 73, 92, 89, 95, 91, + 68, 71, 80, 68, 72, 76, 77, 32, 110, 110, 100, 83, 85, 77, 93, 73, + 84, 81, 77, 61, 118, 119, 77, 79, 84, 85, 72, 84, 85, 83, 48, 1, + 93, 107, 123, 83, 93, 76, 67, 68, 92, 59, 40, 0, 93, 97, 116, 96, + 106, 92, 91, 87, 69, 79, 48, 0, 106, 118, 79, 91, 89, 88, 79, 95, + 89, 77, 40, 0, 89, 89, 81, 81, 80, 75, 73, 73, 75, 56, 28, 57, + 76, 93, 81, 71, 85, 76, 75, 80, 75, 67, 56, 36, 87, 111, 102, 91, + 81, 65, 72, 77, 95, 63, 46, 99, 154, 115, 84, 60, 64, 64, 69, 89, + 110, 114, 118, 122, 118, 116, 112, 87, 65, 44, 29, 21, 18, 18, 14, 10, + 16, 17, 12, 25, 26, 28, 29, 36, 37, 32, 32, 25, 60, 112, 96, 83, + 71, 81, 87, 84, 69, 55, 51, 93, 97, 71, 87, 77, 77, 60, 56, 79, + 65, 72, 38, 34, 81, 80, 71, 71, 75, 68, 61, 63, 46, 38, 0, 80, + 108, 106, 119, 95, 51, 49, 64, 52, 72, 72, 37, 2, 79, 89, 87, 91, + 72, 76, 77, 76, 56, 67, 53, 32, 75, 115, 83, 63, 65, 57, 60, 79, + 64, 38, 21, 71, 87, 73, 79, 71, 56, 71, 65, 52, 53, 42, 37, 1, + 73, 80, 76, 56, 76, 92, 85, 60, 51, 42, 30, 83, 123, 71, 77, 65, + 76, 56, 56, 46, 52, 34, 2, 92, 88, 79, 45, 52, 67, 72, 64, 75, + 65, 30, 4, 103, 106, 56, 42, 41, 38, 49, 48, 36, 38, 26, 18, 0, + 83, 111, 75, 73, 67, 59, 44, 77, 55, 57, 59, 28, 1, 77, 93, 51, + 45, 52, 49, 48, 53, 33, 28, 0, 84, 93, 57, 75, 55, 46, 52, 41, + 44, 37, 28, 9, 85, 95, 68, 65, 49, 55, 53, 51, 41, 60, 26, 5, + 63, 83, 77, 56, 45, 53, 45, 48, 53, 49, 26, 2, 97, 120, 110, 115, + 88, 91, 92, 100, 92, 91, 42, 89, 91, 84, 65, 57, 46, 55, 52, 52, + 53, 34, 46, 28, 91, 104, 102, 29, 67, 65, 73, 42, 44, 41, 10, 53, + 99, 76, 67, 69, 72, 53, 49, 65, 52, 17, 9, 51, 93, 64, 56, 51, + 59, 65, 59, 55, 83, 49, 41, 2, 99, 103, 96, 103, 95, 76, 73, 67, + 103, 83, 79, 51, 64, 92, 51, 21, 33, 10, 18, 26, 28, 30, 1, 0, + 57, 83, 53, 51, 46, 46, 49, 48, 40, 49, 10, 0, 42, 44, 42, 37, + 51, 41, 17, 24, 36, 12, 0, 106, 61, 59, 65, 37, 72, 36, 33, 32, + 38, 30, 30, 14, 18, 34, 24, 2, 9, 2, 4, 1, 5, 20, 0, 32, + 85, 87, 45, 48, 60, 48, 41, 68, 32, 28, 42, 33, 71, 108, 107, 24, + 32, 116, 119, 80, 87, 95, 83, 103, 79, 52, 0, 69, 100, 91, 59, 57, + 64, 71, 52, 51, 65, 42, 18, 68, 115, 108, 104, 92, 103, 104, 92, 93, + 89, 64, 25, 99, 104, 103, 96, 81, 84, 92, 77, 79, 75, 45, 5, 95, + 114, 91, 92, 92, 89, 102, 91, 77, 80, 59, 6, 124, 111, 91, 71, 68, + 69, 69, 76, 85, 79, 51, 97, 102, 89, 88, 71, 69, 91, 99, 68, 88, + 83, 84, 46, 119, 95, 84, 79, 84, 73, 93, 72, 89, 79, 65, 65, 122, + 110, 79, 87, 71, 83, 88, 103, 81, 81, 51, 0, 89, 110, 123, 83, 81, + 79, 71, 69, 103, 57, 42, 5, 100, 112, 99, 87, 99, 81, 81, 87, 71, + 81, 49, 1, 102, 122, 79, 76, 87, 85, 88, 95, 88, 72, 41, 0, 92, + 83, 83, 89, 76, 75, 76, 71, 67, 56, 30, 60, 81, 85, 83, 80, 85, + 75, 67, 71, 65, 71, 60, 29, 89, 110, 104, 75, 84, 64, 75, 87, 77, + 69, 42, 89, 150, 123, 93, 77, 60, 52, 46, 48, 42, 41, 41, 41, 45, + 38, 33, 30, 22, 22, 20, 18, 16, 14, 14, 16, 10, 18, 29, 34, 44, + 44, 41, 38, 32, 33, 33, 25, 63, 116, 85, 88, 88, 83, 72, 95, 83, + 69, 37, 87, 100, 69, 91, 67, 55, 55, 53, 73, 67, 73, 41, 24, 83, + 87, 92, 87, 88, 81, 73, 63, 51, 40, 0, 76, 102, 85, 104, 51, 48, + 59, 64, 51, 60, 61, 59, 0, 106, 96, 68, 100, 72, 64, 61, 64, 55, + 80, 57, 30, 81, 103, 76, 75, 59, 61, 53, 75, 65, 40, 24, 68, 83, + 99, 112, 65, 53, 49, 52, 53, 56, 49, 37, 0, 114, 72, 65, 59, 72, + 71, 85, 59, 52, 46, 29, 81, 122, 89, 83, 60, 72, 51, 51, 44, 56, + 40, 0, 96, 88, 91, 48, 51, 52, 77, 80, 77, 75, 30, 5, 95, 110, + 59, 42, 33, 37, 34, 49, 28, 37, 28, 21, 1, 115, 115, 73, 88, 38, + 59, 79, 42, 48, 63, 53, 30, 0, 84, 87, 55, 41, 49, 102, 55, 65, + 32, 26, 0, 83, 96, 60, 69, 42, 60, 45, 40, 40, 52, 28, 16, 79, + 91, 56, 69, 52, 51, 49, 51, 45, 61, 26, 4, 57, 85, 65, 44, 44, + 53, 77, 49, 49, 59, 28, 2, 91, 126, 107, 102, 85, 89, 88, 88, 93, + 85, 41, 91, 103, 69, 96, 72, 53, 48, 51, 46, 38, 37, 44, 28, 89, + 95, 87, 37, 75, 83, 42, 44, 25, 22, 9, 55, 100, 60, 61, 64, 38, + 32, 28, 52, 59, 17, 12, 67, 92, 79, 53, 52, 49, 53, 48, 65, 75, + 51, 37, 5, 97, 115, 97, 97, 69, 68, 71, 65, 97, 77, 79, 45, 64, + 91, 57, 13, 32, 9, 20, 22, 28, 28, 0, 0, 71, 75, 59, 48, 44, + 60, 59, 49, 34, 51, 10, 0, 61, 46, 32, 29, 18, 53, 26, 26, 26, + 12, 0, 91, 75, 69, 36, 21, 75, 33, 30, 26, 48, 20, 30, 14, 14, + 26, 21, 13, 34, 20, 21, 6, 6, 13, 0, 41, 89, 79, 41, 46, 48, + 41, 55, 75, 32, 29, 33, 33, 63, 108, 46, 38, 33, 118, 107, 77, 89, + 95, 80, 104, 67, 55, 0, 60, 93, 84, 59, 65, 57, 77, 49, 63, 72, + 46, 21, 45, 102, 114, 100, 104, 100, 89, 85, 93, 96, 60, 29, 73, 110, + 87, 97, 102, 87, 96, 81, 77, 87, 49, 6, 95, 111, 81, 83, 107, 89, + 87, 75, 68, 71, 59, 5, 123, 110, 106, 72, 72, 68, 72, 72, 84, 76, + 49, 103, 99, 91, 73, 68, 77, 114, 68, 69, 68, 81, 96, 42, 108, 89, + 88, 85, 83, 76, 100, 72, 83, 76, 45, 71, 123, 123, 79, 112, 79, 77, + 89, 107, 79, 79, 57, 0, 88, 103, 112, 81, 89, 76, 71, 65, 99, 61, + 44, 13, 96, 112, 92, 92, 83, 79, 104, 87, 77, 72, 51, 0, 99, 123, + 68, 89, 85, 80, 83, 102, 79, 71, 41, 0, 88, 83, 85, 80, 68, 72, + 73, 71, 77, 52, 30, 57, 93, 64, 77, 81, 89, 77, 85, 84, 53, 76, + 51, 26, 100, 116, 102, 85, 83, 61, 65, 85, 73, 71, 44, 84, 143, 127, + 104, 92, 81, 75, 53, 44, 41, 37, 34, 34, 29, 29, 28, 25, 22, 20, + 18, 18, 18, 18, 17, 6, 17, 29, 46, 51, 41, 42, 42, 42, 42, 36, + 36, 30, 59, 127, 88, 76, 92, 85, 85, 80, 76, 75, 30, 88, 88, 71, + 68, 69, 55, 76, 64, 60, 65, 77, 41, 20, 69, 84, 93, 71, 64, 60, + 68, 60, 51, 40, 0, 92, 99, 89, 97, 48, 49, 73, 51, 51, 71, 72, + 60, 0, 100, 87, 75, 99, 64, 61, 69, 53, 51, 76, 55, 26, 73, 122, + 72, 63, 65, 63, 57, 76, 64, 40, 25, 61, 95, 96, 68, 56, 67, 49, + 71, 68, 59, 51, 40, 6, 104, 59, 77, 51, 72, 49, 100, 55, 53, 45, + 30, 79, 120, 77, 88, 67, 65, 68, 45, 44, 41, 36, 0, 89, 87, 87, + 45, 61, 45, 56, 59, 81, 57, 30, 4, 97, 111, 65, 55, 36, 33, 32, + 63, 29, 33, 30, 20, 0, 106, 124, 67, 80, 38, 61, 53, 64, 53, 52, + 49, 30, 2, 73, 102, 53, 49, 84, 79, 60, 55, 33, 29, 5, 88, 97, + 51, 57, 45, 45, 40, 53, 38, 52, 29, 6, 76, 95, 67, 72, 67, 73, + 71, 73, 45, 67, 28, 2, 68, 77, 59, 51, 89, 44, 42, 46, 48, 65, + 26, 4, 124, 122, 110, 91, 91, 104, 88, 91, 91, 91, 45, 95, 87, 92, + 68, 89, 61, 44, 49, 34, 37, 36, 49, 25, 95, 107, 83, 29, 71, 63, + 41, 40, 41, 26, 10, 59, 106, 45, 51, 36, 28, 28, 25, 26, 51, 17, + 28, 64, 92, 91, 52, 48, 48, 61, 48, 51, 69, 55, 37, 4, 92, 115, + 93, 91, 77, 68, 67, 71, 84, 77, 73, 41, 76, 96, 46, 16, 13, 5, + 18, 21, 21, 46, 0, 2, 73, 80, 53, 53, 56, 51, 36, 57, 44, 48, + 12, 0, 67, 56, 29, 33, 29, 20, 28, 28, 21, 12, 1, 77, 83, 46, + 53, 34, 75, 30, 28, 28, 38, 21, 26, 9, 16, 21, 22, 24, 16, 20, + 21, 5, 6, 6, 0, 41, 97, 65, 42, 51, 53, 46, 57, 96, 36, 34, + 34, 30, 76, 107, 41, 63, 63, 122, 81, 76, 88, 88, 77, 116, 64, 56, + 0, 61, 84, 91, 60, 79, 59, 68, 48, 53, 61, 52, 29, 52, 96, 114, + 112, 108, 88, 112, 96, 91, 100, 61, 30, 46, 108, 107, 89, 88, 89, 77, + 89, 81, 76, 51, 5, 104, 116, 83, 83, 80, 88, 92, 72, 68, 73, 59, + 2, 123, 110, 100, 71, 68, 65, 91, 75, 73, 73, 45, 108, 84, 75, 69, + 76, 107, 73, 69, 75, 81, 69, 80, 24, 112, 95, 80, 81, 72, 76, 103, + 68, 84, 72, 51, 85, 124, 110, 83, 108, 83, 72, 81, 111, 76, 75, 56, + 0, 88, 92, 122, 80, 77, 67, 72, 68, 114, 75, 53, 5, 99, 114, 85, + 85, 77, 77, 103, 80, 77, 67, 55, 0, 85, 123, 81, 76, 79, 79, 76, + 102, 72, 71, 41, 0, 96, 69, 80, 71, 68, 65, 72, 68, 71, 55, 32, + 26, 57, 104, 77, 71, 57, 71, 59, 59, 57, 79, 53, 22, 111, 112, 108, + 72, 92, 65, 63, 85, 67, 69, 46, 75, 130, 123, 127, 95, 91, 79, 71, + 57, 53, 44, 40, 34, 30, 30, 28, 30, 26, 29, 26, 26, 24, 20, 30, + 6, 28, 51, 49, 45, 57, 51, 59, 64, 61, 37, 34, 24, 55, 131, 88, + 99, 63, 91, 102, 65, 75, 72, 33, 80, 89, 72, 75, 59, 55, 87, 67, + 64, 64, 83, 44, 21, 75, 81, 84, 69, 60, 61, 67, 61, 48, 38, 0, + 93, 95, 85, 114, 48, 49, 61, 49, 49, 56, 57, 38, 1, 67, 81, 64, + 110, 67, 64, 67, 53, 53, 83, 59, 24, 67, 120, 65, 63, 68, 57, 67, + 60, 56, 41, 24, 73, 92, 102, 53, 52, 51, 64, 60, 51, 49, 46, 40, + 0, 100, 61, 69, 52, 77, 51, 84, 55, 53, 40, 16, 71, 120, 83, 92, + 67, 63, 53, 49, 49, 44, 36, 0, 91, 75, 106, 42, 48, 45, 45, 57, + 85, 60, 32, 2, 99, 118, 69, 73, 29, 42, 29, 73, 30, 29, 28, 20, + 0, 91, 99, 51, 93, 38, 59, 45, 68, 49, 53, 48, 30, 2, 87, 108, + 55, 38, 80, 52, 53, 57, 42, 30, 0, 79, 87, 57, 42, 42, 40, 38, + 72, 40, 68, 32, 1, 61, 91, 83, 51, 64, 59, 51, 44, 44, 73, 29, + 1, 63, 77, 56, 79, 95, 68, 41, 45, 46, 60, 28, 2, 108, 114, 108, + 85, 92, 107, 87, 87, 87, 89, 44, 100, 102, 75, 75, 81, 53, 38, 60, + 36, 36, 40, 37, 21, 97, 96, 37, 87, 38, 42, 51, 38, 41, 29, 13, + 32, 97, 46, 40, 28, 25, 26, 24, 25, 52, 20, 10, 56, 84, 99, 48, + 41, 46, 71, 48, 51, 83, 41, 41, 1, 93, 116, 95, 67, 69, 67, 67, + 97, 83, 72, 71, 34, 76, 88, 67, 13, 13, 10, 12, 22, 20, 26, 0, + 0, 48, 69, 38, 33, 30, 46, 37, 60, 36, 73, 12, 0, 53, 53, 25, + 17, 24, 30, 25, 17, 30, 13, 2, 25, 96, 41, 36, 30, 59, 26, 24, + 24, 48, 17, 18, 5, 20, 14, 2, 6, 5, 18, 6, 4, 13, 1, 0, + 45, 91, 55, 32, 51, 38, 45, 45, 81, 42, 37, 33, 25, 71, 111, 45, + 61, 5, 122, 79, 81, 87, 89, 73, 116, 65, 51, 0, 55, 77, 97, 56, + 87, 56, 64, 49, 56, 46, 59, 29, 33, 88, 118, 115, 119, 87, 108, 122, + 80, 107, 57, 33, 26, 119, 112, 76, 76, 81, 93, 92, 76, 75, 52, 4, + 108, 120, 84, 77, 80, 80, 73, 75, 68, 73, 60, 2, 123, 111, 111, 71, + 68, 68, 73, 76, 73, 68, 37, 112, 77, 72, 65, 110, 88, 68, 71, 75, + 84, 72, 67, 21, 99, 97, 77, 72, 72, 76, 112, 67, 79, 71, 46, 96, + 128, 115, 80, 110, 71, 77, 81, 114, 76, 76, 60, 0, 80, 88, 122, 68, + 81, 68, 77, 67, 134, 61, 51, 0, 110, 115, 81, 83, 75, 75, 111, 77, + 73, 68, 52, 0, 79, 122, 76, 76, 73, 71, 76, 112, 76, 75, 42, 0, + 84, 76, 75, 67, 64, 73, 67, 68, 64, 51, 34, 32, 56, 107, 106, 59, + 71, 61, 53, 56, 53, 96, 52, 21, 108, 118, 120, 75, 100, 97, 60, 77, + 69, 60, 45, 69, 115, 126, 118, 114, 93, 85, 76, 71, 63, 55, 41, 42, + 41, 37, 36, 36, 22, 24, 24, 22, 20, 20, 36, 5, 28, 55, 37, 63, + 44, 45, 63, 85, 81, 52, 36, 32, 48, 136, 79, 108, 64, 102, 77, 68, + 72, 60, 29, 80, 84, 68, 72, 60, 55, 99, 61, 65, 60, 97, 46, 24, + 79, 75, 59, 60, 61, 61, 61, 63, 48, 38, 0, 96, 80, 80, 130, 48, + 48, 56, 49, 51, 55, 64, 42, 0, 69, 85, 67, 110, 64, 64, 63, 53, + 49, 92, 52, 20, 69, 134, 60, 65, 61, 53, 55, 56, 56, 41, 25, 65, + 97, 60, 52, 51, 52, 49, 52, 55, 51, 41, 38, 1, 115, 63, 61, 51, + 92, 49, 100, 51, 46, 37, 17, 65, 119, 67, 102, 57, 57, 53, 44, 38, + 48, 37, 0, 104, 73, 93, 42, 51, 81, 84, 56, 96, 59, 33, 1, 115, + 127, 77, 75, 25, 32, 30, 81, 37, 26, 28, 20, 0, 89, 111, 63, 95, + 38, 52, 44, 77, 48, 53, 48, 32, 0, 91, 99, 51, 42, 88, 44, 57, + 55, 34, 30, 0, 89, 106, 53, 42, 41, 38, 38, 81, 40, 40, 29, 0, + 55, 96, 97, 46, 44, 42, 41, 38, 38, 85, 29, 1, 57, 65, 55, 83, + 110, 45, 40, 40, 45, 77, 29, 1, 112, 126, 120, 84, 85, 115, 85, 84, + 85, 87, 26, 104, 99, 93, 57, 92, 51, 38, 44, 33, 36, 33, 37, 17, + 102, 97, 36, 97, 37, 40, 38, 37, 37, 29, 14, 22, 97, 42, 30, 29, + 68, 26, 24, 26, 40, 20, 10, 51, 56, 107, 44, 44, 45, 56, 48, 48, + 68, 45, 38, 1, 84, 119, 87, 71, 67, 67, 64, 99, 80, 75, 72, 28, + 81, 89, 71, 16, 5, 12, 17, 10, 17, 22, 0, 0, 40, 68, 21, 17, + 17, 24, 33, 72, 34, 45, 13, 0, 45, 44, 29, 17, 25, 24, 22, 26, + 30, 13, 8, 5, 97, 45, 33, 29, 48, 28, 22, 22, 26, 18, 16, 8, + 6, 14, 1, 30, 1, 0, 2, 5, 4, 1, 0, 38, 83, 40, 37, 53, + 41, 33, 53, 91, 28, 26, 38, 21, 92, 106, 9, 8, 0, 162, 165, 161, + 159, 159, 170, 173, 154, 132, 0, 162, 179, 179, 175, 181, 155, 165, 177, 178, + 148, 84, 124, 179, 181, 165, 181, 163, 165, 165, 174, 159, 153, 140, 0, 170, + 185, 182, 151, 186, 155, 153, 155, 169, 161, 72, 100, 169, 169, 170, 174, 175, + 173, 161, 158, 170, 163, 169, 46, 161, 157, 150, 150, 165, 171, 154, 140, 139, + 122, 130, 65, 148, 170, 148, 150, 147, 131, 161, 131, 155, 142, 126, 68, 102, + 170, 138, 146, 146, 169, 165, 146, 163, 124, 130, 8, 163, 166, 143, 171, 185, + 151, 134, 165, 144, 153, 77, 73, 153, 158, 158, 120, 115, 123, 138, 124, 142, + 123, 115, 30, 155, 163, 170, 166, 153, 157, 153, 138, 135, 115, 100, 0, 150, + 157, 153, 159, 140, 138, 128, 153, 173, 139, 136, 37, 148, 171, 158, 135, 134, + 150, 130, 131, 120, 119, 79, 102, 174, 159, 135, 157, 148, 130, 132, 130, 147, + 171, 114, 1, 153, 139, 154, 153, 138, 123, 131, 146, 148, 142, 33, 151, 154, + 127, 132, 128, 126, 153, 132, 114, 128, 147, 34, 144, 147, 134, 150, 148, 142, + 135, 130, 128, 110, 110, 99, 4, 104, 151, 127, 135, 112, 132, 102, 135, 111, + 106, 96, 34, 142, 147, 123, 148, 132, 116, 112, 104, 100, 104, 85, 13, 135, + 136, 144, 143, 112, 115, 123, 107, 135, 84, 17, 169, 153, 153, 132, 171, 151, + 148, 123, 135, 130, 130, 115, 65, 91, 147, 138, 120, 112, 118, 138, 115, 132, + 97, 56, 73, 163, 177, 162, 182, 144, 139, 140, 163, 132, 128, 38, 106, 135, + 138, 131, 107, 104, 107, 139, 104, 104, 108, 49, 91, 136, 157, 130, 162, 106, + 103, 95, 103, 92, 104, 99, 28, 124, 104, 108, 103, 126, 106, 97, 100, 122, + 83, 99, 26, 150, 130, 124, 126, 127, 108, 110, 132, 93, 92, 83, 8, 91, + 139, 120, 140, 87, 89, 87, 107, 88, 88, 36, 114, 124, 123, 122, 119, 95, + 99, 126, 126, 92, 84, 69, 4, 122, 102, 123, 123, 88, 99, 80, 85, 83, + 110, 81, 4, 146, 123, 154, 107, 95, 115, 84, 80, 80, 77, 38, 76, 116, + 84, 127, 114, 72, 111, 114, 64, 75, 69, 8, 119, 161, 136, 114, 104, 107, + 161, 131, 102, 103, 89, 85, 2, 91, 97, 97, 57, 52, 51, 57, 53, 55, + 56, 49, 16, 104, 106, 73, 119, 92, 103, 63, 68, 63, 63, 61, 8, 110, + 127, 111, 114, 130, 65, 106, 111, 73, 68, 61, 40, 0, 123, 131, 118, 110, + 110, 91, 87, 84, 76, 81, 4, 124, 103, 128, 87, 53, 93, 61, 99, 57, + 52, 13, 92, 122, 76, 88, 56, 87, 45, 84, 111, 76, 53, 41, 25, 56, + 103, 96, 103, 102, 68, 46, 48, 53, 56, 44, 12, 89, 89, 52, 84, 56, + 91, 48, 45, 42, 37, 1, 123, 116, 107, 42, 44, 93, 83, 87, 111, 49, + 38, 33, 2, 91, 38, 38, 36, 36, 104, 84, 55, 32, 32, 26, 2, 51, + 84, 60, 84, 100, 22, 30, 36, 24, 29, 20, 0, 77, 83, 33, 26, 21, + 22, 34, 76, 25, 22, 13, 8, 40, 97, 68, 42, 29, 97, 30, 30, 33, + 24, 59, 18, 12, 97, 38, 114, 30, 181, 178, 181, 158, 159, 167, 173, 155, + 127, 1, 163, 183, 177, 170, 183, 161, 162, 175, 178, 134, 75, 128, 173, 179, + 177, 161, 162, 158, 162, 174, 162, 153, 140, 0, 167, 181, 178, 155, 179, 157, + 150, 162, 162, 154, 88, 103, 159, 167, 170, 159, 162, 153, 155, 163, 158, 157, + 162, 67, 155, 159, 150, 151, 153, 169, 167, 158, 136, 122, 126, 83, 150, 173, + 151, 148, 158, 144, 167, 143, 157, 139, 111, 64, 106, 170, 140, 144, 144, 166, + 162, 147, 159, 120, 122, 5, 157, 159, 155, 169, 181, 155, 135, 163, 147, 144, + 64, 73, 142, 150, 122, 115, 118, 124, 127, 131, 127, 122, 110, 46, 150, 159, + 158, 178, 163, 150, 151, 153, 135, 116, 104, 0, 146, 154, 165, 155, 140, 139, + 136, 147, 162, 148, 134, 42, 143, 167, 157, 136, 135, 147, 150, 126, 112, 119, + 75, 103, 166, 148, 134, 140, 142, 142, 130, 130, 140, 162, 102, 0, 151, 143, + 144, 151, 139, 128, 134, 140, 147, 140, 40, 155, 148, 135, 135, 118, 144, 146, + 119, 126, 115, 135, 52, 136, 147, 143, 144, 132, 132, 134, 128, 136, 110, 112, + 88, 2, 111, 139, 119, 108, 119, 120, 108, 124, 110, 108, 99, 48, 135, 150, + 126, 143, 139, 123, 127, 127, 115, 103, 97, 12, 131, 132, 132, 116, 114, 128, + 112, 115, 127, 91, 22, 158, 151, 151, 140, 150, 151, 144, 128, 142, 131, 135, + 115, 60, 93, 148, 136, 108, 119, 134, 130, 114, 128, 103, 55, 77, 159, 169, + 157, 167, 142, 136, 140, 158, 132, 126, 46, 111, 134, 136, 123, 106, 110, 108, + 132, 106, 102, 100, 48, 89, 136, 148, 130, 147, 114, 107, 100, 100, 93, 103, + 99, 40, 107, 110, 111, 127, 124, 111, 97, 99, 111, 89, 96, 26, 146, 134, + 114, 116, 100, 100, 112, 128, 87, 93, 84, 6, 99, 128, 114, 138, 83, 91, + 91, 99, 85, 84, 34, 108, 120, 122, 118, 102, 119, 119, 120, 104, 91, 85, + 68, 4, 122, 104, 120, 114, 89, 95, 92, 75, 92, 99, 76, 4, 138, 136, + 128, 103, 84, 115, 84, 84, 77, 76, 36, 80, 111, 112, 120, 89, 71, 108, + 111, 65, 75, 68, 9, 112, 150, 132, 128, 96, 97, 134, 127, 99, 108, 95, + 89, 14, 89, 92, 91, 55, 51, 51, 46, 53, 52, 51, 48, 20, 103, 106, + 79, 106, 89, 102, 64, 67, 71, 61, 51, 9, 106, 107, 107, 114, 102, 69, + 99, 104, 81, 68, 56, 40, 0, 130, 135, 110, 104, 89, 88, 87, 79, 75, + 75, 0, 114, 116, 126, 76, 53, 87, 64, 97, 63, 49, 17, 89, 123, 84, + 81, 56, 79, 46, 51, 49, 49, 53, 41, 22, 56, 110, 80, 95, 99, 63, + 49, 51, 77, 60, 49, 14, 88, 79, 57, 64, 68, 87, 49, 45, 42, 30, + 1, 111, 102, 91, 59, 45, 96, 88, 71, 65, 57, 38, 30, 2, 88, 55, + 46, 37, 34, 44, 93, 83, 33, 40, 25, 1, 61, 83, 68, 93, 63, 38, + 29, 37, 24, 22, 18, 0, 81, 80, 30, 30, 24, 22, 24, 76, 29, 42, + 13, 8, 36, 87, 63, 48, 28, 80, 34, 28, 29, 21, 52, 16, 12, 104, + 51, 104, 41, 169, 174, 169, 161, 159, 162, 173, 155, 147, 17, 162, 179, 173, + 173, 178, 162, 162, 169, 175, 140, 69, 131, 175, 175, 179, 166, 155, 151, 158, + 169, 159, 155, 138, 0, 165, 174, 157, 173, 165, 154, 153, 155, 166, 153, 84, + 110, 170, 163, 153, 155, 163, 166, 166, 161, 158, 154, 166, 71, 150, 158, 153, + 150, 148, 158, 159, 162, 146, 123, 120, 80, 153, 175, 150, 148, 143, 146, 148, + 157, 151, 140, 136, 60, 118, 162, 144, 144, 154, 165, 153, 157, 155, 118, 123, + 6, 153, 163, 147, 150, 148, 139, 136, 162, 147, 139, 57, 76, 139, 151, 126, + 106, 119, 110, 115, 120, 116, 116, 111, 48, 144, 159, 158, 158, 169, 159, 140, + 147, 135, 122, 102, 1, 146, 162, 161, 150, 144, 136, 139, 136, 131, 142, 134, + 52, 135, 166, 153, 136, 132, 138, 151, 116, 124, 122, 72, 107, 165, 157, 153, + 142, 142, 142, 139, 131, 136, 148, 123, 4, 144, 144, 148, 144, 144, 132, 135, + 136, 143, 135, 48, 148, 150, 127, 123, 143, 127, 110, 128, 127, 107, 130, 56, + 132, 146, 138, 135, 139, 136, 131, 131, 123, 108, 108, 112, 18, 99, 134, 114, + 119, 116, 116, 114, 116, 108, 107, 99, 53, 131, 147, 126, 140, 130, 128, 119, + 122, 116, 111, 95, 10, 127, 131, 123, 115, 127, 107, 114, 106, 123, 79, 32, + 150, 150, 150, 144, 136, 126, 128, 139, 131, 135, 130, 115, 56, 97, 144, 134, + 114, 118, 146, 132, 118, 119, 107, 55, 110, 159, 158, 154, 159, 150, 140, 144, + 157, 131, 128, 56, 107, 134, 135, 122, 106, 112, 108, 130, 104, 97, 95, 44, + 93, 132, 143, 131, 143, 123, 104, 102, 96, 92, 102, 99, 44, 116, 114, 107, + 135, 108, 107, 99, 97, 110, 91, 99, 40, 135, 128, 111, 118, 136, 138, 136, + 124, 88, 95, 73, 13, 99, 120, 110, 108, 81, 85, 95, 81, 84, 84, 46, + 102, 120, 122, 118, 104, 100, 92, 103, 92, 88, 85, 67, 14, 127, 110, 131, + 87, 76, 84, 88, 75, 84, 88, 76, 5, 134, 120, 136, 123, 103, 120, 87, + 84, 83, 64, 42, 92, 100, 120, 104, 71, 77, 108, 112, 68, 71, 68, 10, + 107, 150, 134, 122, 112, 100, 107, 99, 100, 106, 95, 84, 8, 88, 99, 71, + 49, 48, 46, 46, 48, 56, 49, 38, 20, 97, 107, 88, 95, 77, 95, 64, + 64, 67, 64, 61, 1, 103, 106, 110, 123, 79, 69, 88, 107, 76, 71, 59, + 40, 0, 112, 136, 108, 102, 88, 92, 88, 93, 72, 76, 0, 107, 103, 77, + 56, 81, 77, 80, 92, 57, 51, 20, 83, 115, 77, 102, 55, 49, 48, 48, + 48, 49, 53, 36, 20, 55, 100, 87, 91, 92, 65, 51, 52, 55, 60, 45, + 20, 80, 73, 75, 75, 69, 80, 48, 44, 44, 37, 2, 107, 85, 77, 51, + 44, 91, 88, 65, 60, 52, 48, 33, 0, 96, 38, 41, 44, 36, 34, 33, + 85, 61, 38, 25, 1, 60, 72, 77, 110, 37, 28, 51, 51, 22, 22, 18, + 0, 72, 79, 51, 40, 26, 21, 55, 41, 26, 26, 12, 6, 34, 36, 64, + 51, 25, 22, 25, 28, 25, 25, 44, 13, 16, 96, 63, 93, 83, 166, 171, + 169, 155, 158, 162, 169, 150, 142, 0, 162, 183, 169, 169, 178, 173, 159, 167, + 169, 138, 60, 132, 174, 165, 153, 154, 170, 166, 166, 167, 166, 153, 136, 17, + 163, 171, 154, 163, 159, 155, 150, 158, 158, 135, 81, 115, 166, 162, 174, 162, + 171, 166, 162, 157, 155, 159, 158, 79, 147, 165, 154, 148, 150, 144, 151, 158, + 130, 131, 111, 85, 159, 182, 135, 138, 143, 153, 139, 142, 136, 135, 134, 55, + 115, 165, 143, 146, 158, 154, 154, 153, 138, 122, 118, 8, 155, 162, 159, 158, + 155, 136, 153, 150, 154, 120, 53, 75, 131, 111, 114, 100, 103, 106, 107, 112, + 111, 112, 103, 53, 139, 158, 153, 154, 165, 167, 146, 134, 139, 119, 88, 1, + 143, 155, 159, 147, 147, 154, 144, 144, 140, 142, 135, 60, 131, 153, 151, 138, + 132, 136, 146, 134, 120, 92, 64, 108, 161, 153, 155, 159, 147, 158, 147, 138, + 132, 143, 118, 1, 142, 147, 135, 139, 143, 134, 124, 136, 127, 131, 55, 144, + 148, 127, 130, 130, 128, 111, 111, 127, 102, 122, 63, 128, 142, 140, 142, 138, + 132, 131, 132, 134, 110, 111, 110, 5, 103, 119, 108, 104, 114, 112, 108, 120, + 100, 107, 100, 61, 126, 146, 128, 140, 144, 110, 123, 122, 116, 107, 85, 20, + 116, 128, 139, 122, 100, 127, 115, 118, 120, 75, 29, 136, 153, 148, 142, 127, + 134, 136, 131, 128, 135, 132, 116, 48, 103, 143, 128, 108, 122, 127, 122, 112, + 116, 106, 55, 87, 155, 165, 148, 139, 139, 144, 154, 151, 134, 127, 63, 106, + 131, 140, 108, 112, 108, 104, 136, 106, 85, 88, 41, 93, 134, 130, 124, 130, + 135, 104, 108, 97, 95, 103, 97, 48, 110, 112, 114, 118, 110, 110, 104, 99, + 104, 91, 99, 44, 132, 130, 111, 119, 115, 119, 106, 103, 103, 102, 69, 20, + 96, 111, 118, 106, 81, 89, 92, 77, 84, 88, 49, 102, 118, 119, 115, 122, + 97, 95, 96, 103, 80, 84, 68, 6, 114, 100, 100, 114, 69, 102, 102, 76, + 73, 92, 79, 6, 122, 124, 135, 108, 99, 132, 93, 88, 81, 73, 45, 92, + 84, 114, 99, 72, 75, 100, 100, 65, 72, 65, 9, 111, 143, 127, 99, 107, + 103, 99, 95, 102, 110, 95, 83, 10, 68, 95, 55, 44, 48, 40, 51, 48, + 53, 41, 37, 18, 92, 87, 79, 83, 75, 88, 71, 73, 69, 63, 61, 0, + 100, 103, 102, 120, 69, 76, 85, 96, 87, 65, 59, 38, 0, 119, 136, 100, + 96, 88, 92, 88, 93, 71, 72, 0, 100, 106, 73, 51, 76, 51, 67, 59, + 73, 51, 24, 80, 93, 97, 77, 65, 46, 46, 48, 48, 48, 59, 42, 17, + 63, 96, 91, 81, 83, 76, 51, 52, 61, 60, 49, 21, 85, 72, 71, 63, + 69, 64, 46, 44, 41, 38, 2, 100, 77, 68, 53, 45, 89, 95, 97, 72, + 57, 40, 34, 0, 93, 55, 51, 45, 29, 34, 33, 33, 52, 38, 26, 2, + 65, 75, 65, 48, 21, 33, 33, 29, 22, 21, 17, 0, 67, 77, 32, 41, + 30, 21, 40, 34, 36, 28, 12, 5, 20, 59, 55, 52, 24, 21, 21, 21, + 14, 18, 28, 10, 18, 80, 63, 64, 92, 153, 159, 162, 158, 158, 163, 166, + 148, 126, 0, 161, 170, 167, 174, 175, 173, 163, 163, 148, 135, 57, 131, 177, + 177, 165, 169, 174, 169, 167, 166, 158, 146, 132, 0, 162, 166, 151, 167, 157, + 155, 151, 153, 159, 124, 81, 112, 162, 170, 165, 163, 167, 171, 163, 161, 163, + 157, 158, 84, 97, 157, 157, 147, 150, 148, 147, 144, 143, 122, 114, 88, 153, + 157, 146, 158, 150, 158, 154, 146, 139, 136, 112, 49, 115, 162, 143, 155, 155, + 148, 153, 154, 131, 120, 119, 24, 153, 154, 154, 147, 140, 148, 142, 148, 154, + 116, 48, 77, 134, 112, 95, 104, 104, 108, 104, 108, 106, 111, 103, 59, 138, + 157, 154, 151, 166, 150, 148, 135, 138, 112, 88, 0, 138, 146, 163, 153, 136, + 142, 146, 150, 148, 140, 136, 68, 89, 150, 155, 144, 131, 130, 142, 135, 114, + 91, 61, 110, 158, 155, 139, 147, 153, 144, 142, 146, 131, 142, 100, 0, 146, + 151, 150, 139, 143, 136, 135, 136, 131, 132, 60, 139, 144, 143, 126, 136, 118, + 106, 107, 128, 128, 123, 64, 127, 136, 134, 134, 136, 135, 138, 136, 134, 107, + 111, 89, 8, 93, 120, 103, 115, 110, 100, 110, 110, 108, 102, 99, 64, 84, + 140, 126, 144, 143, 118, 123, 108, 114, 92, 84, 20, 122, 123, 119, 108, 127, + 130, 131, 124, 124, 72, 29, 85, 154, 146, 138, 131, 135, 132, 130, 131, 135, + 111, 114, 44, 110, 142, 130, 118, 126, 116, 115, 115, 115, 97, 53, 85, 157, + 146, 155, 135, 155, 143, 150, 138, 132, 131, 71, 81, 128, 140, 107, 112, 116, + 118, 130, 104, 81, 83, 41, 93, 128, 119, 120, 114, 116, 110, 107, 112, 92, + 103, 97, 51, 111, 114, 112, 114, 106, 106, 110, 99, 96, 93, 96, 48, 123, + 127, 120, 116, 93, 114, 104, 108, 103, 92, 83, 17, 102, 116, 104, 97, 77, + 89, 85, 77, 80, 77, 48, 63, 112, 118, 115, 118, 95, 87, 106, 92, 81, + 81, 65, 8, 111, 116, 95, 104, 93, 106, 108, 72, 80, 88, 75, 10, 118, + 118, 131, 99, 118, 122, 104, 88, 73, 72, 46, 89, 97, 108, 99, 96, 69, + 96, 97, 65, 71, 65, 16, 99, 147, 123, 106, 103, 100, 107, 104, 103, 106, + 104, 77, 18, 57, 89, 49, 46, 52, 41, 46, 38, 44, 38, 37, 20, 49, + 96, 67, 102, 76, 81, 79, 77, 71, 72, 55, 0, 100, 104, 104, 77, 92, + 93, 80, 97, 93, 71, 69, 37, 0, 122, 131, 102, 96, 91, 93, 89, 79, + 69, 80, 8, 106, 95, 64, 56, 83, 79, 61, 67, 76, 49, 28, 38, 84, + 102, 100, 60, 55, 53, 48, 44, 46, 53, 38, 17, 59, 95, 81, 81, 77, + 72, 48, 46, 59, 63, 44, 21, 79, 75, 68, 61, 68, 81, 49, 46, 41, + 36, 2, 104, 87, 68, 41, 48, 41, 51, 52, 42, 56, 38, 30, 6, 81, + 46, 38, 26, 29, 26, 28, 29, 37, 29, 24, 2, 63, 69, 65, 21, 40, + 26, 69, 38, 34, 32, 16, 0, 53, 69, 38, 51, 44, 20, 32, 41, 30, + 24, 12, 5, 10, 16, 29, 38, 51, 38, 14, 12, 10, 38, 18, 8, 26, + 84, 68, 41, 32, 154, 158, 159, 157, 158, 158, 167, 155, 116, 2, 157, 175, + 163, 173, 177, 173, 165, 170, 167, 110, 51, 134, 174, 179, 167, 166, 171, 171, + 170, 169, 159, 158, 135, 1, 159, 173, 157, 167, 157, 150, 151, 155, 157, 95, + 79, 111, 142, 173, 157, 167, 157, 163, 161, 162, 144, 161, 130, 89, 96, 150, + 157, 153, 150, 148, 147, 150, 136, 120, 102, 96, 150, 178, 151, 158, 150, 144, + 158, 146, 135, 138, 99, 40, 122, 163, 142, 157, 147, 148, 159, 153, 128, 110, + 114, 13, 146, 150, 159, 154, 148, 153, 155, 148, 151, 114, 44, 77, 143, 106, + 111, 107, 128, 111, 99, 100, 104, 111, 96, 71, 89, 155, 154, 147, 162, 159, + 163, 157, 130, 107, 112, 1, 134, 153, 163, 151, 146, 143, 140, 139, 140, 139, + 135, 75, 80, 136, 142, 151, 130, 110, 135, 134, 104, 89, 55, 99, 158, 151, + 148, 146, 146, 139, 144, 131, 131, 144, 87, 0, 143, 143, 143, 135, 143, 138, + 128, 123, 140, 135, 71, 100, 130, 151, 132, 150, 123, 119, 134, 138, 100, 120, + 71, 93, 128, 134, 134, 128, 128, 127, 128, 108, 106, 112, 72, 4, 91, 122, + 119, 99, 93, 103, 97, 97, 97, 102, 96, 68, 75, 132, 140, 140, 108, 122, + 118, 104, 112, 95, 97, 18, 118, 119, 114, 102, 107, 97, 118, 115, 130, 72, + 32, 83, 153, 147, 136, 130, 131, 134, 140, 136, 138, 119, 96, 36, 106, 136, + 123, 118, 136, 115, 114, 112, 112, 95, 52, 81, 147, 144, 134, 139, 132, 140, + 146, 135, 131, 132, 72, 45, 120, 135, 106, 116, 115, 127, 122, 93, 85, 76, + 33, 92, 122, 123, 128, 114, 108, 112, 92, 96, 92, 102, 97, 53, 102, 110, + 115, 114, 108, 107, 106, 110, 99, 92, 99, 51, 71, 128, 122, 106, 111, 118, + 103, 114, 91, 92, 87, 16, 99, 116, 99, 75, 77, 91, 85, 80, 77, 81, + 65, 60, 107, 112, 112, 107, 97, 112, 84, 88, 79, 72, 64, 8, 110, 103, + 87, 96, 103, 75, 92, 73, 72, 83, 83, 13, 108, 131, 114, 95, 91, 93, + 108, 93, 72, 75, 42, 85, 91, 112, 103, 93, 71, 93, 68, 68, 72, 68, + 17, 108, 138, 122, 93, 87, 110, 88, 108, 104, 111, 96, 89, 13, 77, 81, + 48, 34, 37, 52, 37, 40, 37, 30, 33, 18, 45, 89, 110, 79, 69, 57, + 64, 80, 68, 64, 41, 13, 84, 103, 77, 80, 87, 80, 93, 80, 80, 73, + 60, 36, 0, 115, 122, 96, 95, 89, 91, 91, 77, 68, 68, 8, 93, 97, + 61, 48, 79, 79, 71, 56, 72, 49, 41, 33, 79, 99, 102, 60, 45, 46, + 44, 44, 49, 55, 37, 12, 81, 87, 79, 99, 75, 61, 48, 51, 49, 65, + 48, 24, 32, 81, 69, 65, 60, 59, 53, 46, 42, 28, 4, 103, 76, 65, + 48, 48, 56, 51, 46, 45, 59, 36, 30, 5, 79, 41, 29, 29, 26, 28, + 51, 37, 33, 29, 24, 2, 61, 61, 77, 44, 41, 52, 53, 24, 36, 22, + 16, 0, 38, 67, 41, 40, 40, 44, 46, 38, 30, 22, 10, 4, 10, 8, + 21, 24, 24, 34, 14, 10, 10, 26, 13, 4, 36, 72, 37, 36, 32, 171, + 167, 163, 162, 161, 159, 158, 158, 143, 33, 155, 167, 163, 166, 167, 174, 169, + 169, 167, 130, 44, 134, 171, 169, 169, 159, 167, 166, 169, 154, 158, 153, 134, + 1, 157, 167, 162, 153, 153, 163, 159, 163, 127, 116, 71, 124, 159, 169, 170, + 163, 127, 118, 130, 140, 140, 128, 130, 136, 128, 108, 119, 148, 153, 153, 150, + 130, 127, 114, 92, 108, 153, 175, 154, 159, 147, 158, 146, 134, 144, 132, 130, + 36, 128, 159, 139, 161, 157, 158, 151, 154, 140, 108, 116, 16, 150, 155, 159, + 153, 151, 158, 154, 154, 150, 87, 38, 77, 93, 87, 89, 106, 103, 108, 104, + 84, 88, 88, 111, 77, 83, 142, 151, 150, 148, 143, 142, 142, 123, 119, 91, + 4, 134, 130, 161, 147, 147, 143, 134, 130, 134, 128, 126, 123, 120, 83, 89, + 100, 111, 111, 127, 134, 120, 112, 60, 114, 154, 140, 142, 131, 140, 142, 142, + 140, 142, 142, 114, 5, 139, 143, 144, 131, 142, 140, 122, 139, 138, 132, 79, + 76, 89, 124, 120, 142, 131, 112, 104, 134, 110, 81, 73, 76, 87, 127, 96, + 97, 102, 100, 102, 102, 102, 114, 107, 29, 95, 114, 93, 95, 88, 103, 93, + 91, 104, 95, 95, 100, 68, 88, 123, 124, 96, 92, 106, 102, 115, 108, 95, + 13, 112, 118, 103, 119, 112, 112, 107, 112, 104, 67, 76, 69, 148, 144, 139, + 139, 131, 132, 130, 132, 131, 116, 111, 32, 110, 132, 123, 110, 115, 120, 110, + 110, 112, 97, 46, 127, 153, 131, 128, 139, 140, 140, 128, 136, 136, 131, 80, + 67, 112, 131, 104, 122, 119, 111, 108, 103, 85, 73, 30, 93, 119, 111, 93, + 95, 93, 96, 93, 96, 99, 102, 97, 57, 63, 112, 115, 114, 111, 102, 102, + 108, 95, 93, 93, 67, 65, 119, 119, 108, 112, 128, 111, 104, 83, 92, 81, + 20, 93, 96, 79, 76, 77, 77, 68, 76, 57, 71, 80, 56, 71, 97, 97, + 104, 81, 84, 79, 77, 79, 85, 60, 10, 100, 118, 122, 97, 102, 100, 71, + 96, 83, 76, 71, 12, 112, 118, 107, 124, 84, 83, 95, 91, 81, 59, 34, + 93, 93, 108, 97, 85, 72, 87, 72, 71, 71, 61, 18, 96, 143, 124, 114, + 103, 104, 108, 107, 103, 99, 97, 83, 14, 64, 37, 37, 34, 25, 34, 33, + 32, 33, 32, 28, 24, 44, 84, 65, 56, 57, 52, 59, 61, 63, 65, 57, + 2, 92, 95, 76, 75, 93, 83, 76, 76, 76, 75, 57, 33, 0, 118, 124, + 95, 93, 97, 91, 91, 97, 65, 71, 1, 88, 87, 63, 48, 77, 76, 76, + 60, 60, 48, 42, 32, 72, 87, 79, 41, 42, 52, 44, 46, 49, 52, 42, + 13, 64, 87, 93, 55, 64, 61, 45, 53, 60, 67, 52, 34, 24, 49, 79, + 77, 68, 69, 65, 55, 46, 37, 4, 93, 79, 63, 40, 46, 48, 55, 52, + 46, 57, 32, 33, 0, 75, 36, 28, 29, 25, 29, 42, 55, 33, 30, 22, + 4, 63, 88, 60, 44, 38, 59, 29, 37, 37, 22, 14, 0, 18, 49, 52, + 52, 41, 40, 44, 42, 37, 17, 10, 4, 9, 14, 9, 12, 10, 9, 10, + 10, 10, 24, 26, 4, 71, 85, 64, 46, 41, 151, 154, 151, 157, 155, 161, + 157, 144, 128, 0, 153, 159, 161, 157, 159, 159, 162, 158, 151, 124, 32, 135, + 144, 144, 140, 144, 142, 144, 151, 143, 143, 134, 131, 26, 151, 165, 165, 161, + 163, 153, 159, 157, 122, 110, 71, 119, 153, 166, 163, 127, 136, 118, 116, 128, + 138, 126, 122, 114, 122, 123, 130, 142, 139, 138, 136, 135, 111, 108, 83, 108, + 157, 157, 153, 139, 132, 140, 147, 127, 127, 130, 130, 28, 122, 161, 154, 142, + 139, 148, 155, 147, 138, 120, 114, 17, 144, 153, 162, 153, 154, 159, 155, 148, + 119, 106, 33, 83, 104, 73, 80, 72, 91, 81, 85, 85, 84, 80, 83, 84, + 110, 91, 97, 103, 107, 107, 108, 115, 127, 103, 77, 8, 128, 142, 143, 140, + 136, 104, 131, 93, 103, 104, 122, 99, 102, 115, 126, 115, 118, 123, 122, 138, + 122, 84, 46, 111, 122, 130, 123, 120, 124, 127, 128, 130, 123, 115, 114, 4, + 134, 135, 139, 134, 130, 128, 128, 127, 126, 119, 116, 118, 122, 102, 97, 102, + 103, 99, 112, 107, 118, 112, 110, 111, 111, 97, 93, 116, 112, 97, 115, 118, + 115, 112, 110, 10, 81, 107, 110, 95, 77, 80, 87, 88, 89, 91, 100, 92, + 96, 102, 106, 107, 106, 106, 107, 110, 111, 99, 81, 26, 106, 108, 106, 97, + 92, 87, 95, 81, 75, 67, 59, 68, 91, 139, 147, 108, 127, 127, 132, 114, + 115, 111, 111, 25, 106, 103, 106, 96, 100, 100, 108, 108, 111, 96, 48, 93, + 140, 130, 127, 116, 119, 119, 114, 106, 93, 96, 80, 67, 106, 116, 112, 107, + 104, 104, 104, 107, 77, 73, 26, 93, 120, 114, 107, 110, 103, 108, 102, 106, + 110, 102, 91, 93, 61, 68, 75, 99, 72, 76, 102, 104, 103, 104, 91, 83, + 60, 77, 124, 112, 111, 108, 80, 83, 93, 83, 65, 32, 84, 100, 81, 69, + 67, 65, 60, 60, 69, 59, 59, 68, 79, 81, 91, 85, 88, 83, 84, 85, + 87, 83, 64, 12, 93, 106, 114, 99, 69, 103, 99, 102, 83, 81, 77, 17, + 104, 118, 97, 88, 103, 102, 97, 97, 75, 72, 41, 93, 87, 83, 75, 87, + 68, 67, 72, 69, 68, 65, 14, 99, 130, 111, 75, 103, 102, 76, 92, 97, + 96, 92, 42, 18, 21, 36, 40, 25, 24, 36, 26, 28, 28, 34, 36, 26, + 38, 51, 53, 49, 51, 55, 57, 55, 56, 55, 56, 0, 80, 87, 84, 81, + 80, 79, 77, 67, 71, 69, 53, 30, 0, 108, 120, 93, 92, 91, 92, 91, + 97, 63, 65, 13, 77, 85, 60, 46, 41, 51, 45, 45, 32, 33, 42, 34, + 36, 38, 40, 46, 49, 48, 49, 46, 51, 49, 38, 12, 29, 65, 63, 38, + 45, 59, 56, 41, 49, 49, 51, 36, 28, 30, 41, 37, 37, 36, 37, 42, + 46, 36, 5, 64, 75, 69, 63, 60, 59, 56, 45, 51, 57, 34, 32, 1, + 71, 48, 28, 25, 24, 41, 37, 37, 33, 32, 24, 4, 57, 84, 41, 44, + 18, 41, 40, 20, 22, 33, 12, 0, 17, 30, 45, 17, 20, 25, 33, 30, + 18, 18, 9, 2, 8, 13, 12, 10, 9, 10, 9, 12, 9, 18, 12, 2, + 56, 85, 42, 24, 24, 119, 114, 132, 108, 106, 99, 131, 96, 40, 0, 72, + 88, 83, 84, 96, 92, 91, 93, 103, 91, 38, 92, 106, 103, 99, 92, 91, + 85, 87, 84, 83, 81, 67, 0, 72, 79, 76, 89, 91, 80, 83, 102, 97, + 73, 71, 79, 119, 123, 84, 80, 85, 76, 72, 71, 68, 72, 65, 67, 64, + 65, 75, 85, 89, 92, 96, 104, 107, 102, 80, 95, 114, 126, 110, 103, 110, + 122, 102, 100, 114, 103, 68, 25, 80, 110, 127, 115, 120, 119, 128, 122, 124, + 111, 110, 22, 138, 151, 153, 153, 140, 136, 144, 135, 97, 95, 25, 102, 79, + 61, 75, 61, 65, 64, 76, 68, 56, 67, 60, 59, 61, 60, 48, 75, 80, + 84, 88, 88, 93, 96, 81, 4, 53, 77, 81, 59, 57, 57, 61, 48, 45, + 41, 59, 56, 41, 40, 55, 56, 59, 45, 107, 114, 111, 71, 42, 75, 88, + 85, 83, 83, 97, 87, 79, 72, 72, 63, 34, 64, 67, 75, 91, 93, 84, + 84, 95, 93, 92, 93, 97, 95, 102, 104, 111, 107, 106, 104, 107, 106, 114, + 99, 95, 93, 114, 100, 93, 87, 110, 87, 80, 77, 110, 77, 18, 16, 79, + 63, 63, 65, 44, 55, 37, 34, 40, 48, 42, 41, 44, 44, 44, 44, 57, + 64, 71, 75, 96, 80, 75, 26, 40, 42, 48, 45, 51, 41, 48, 45, 53, + 41, 38, 59, 89, 77, 92, 96, 89, 85, 91, 91, 88, 80, 76, 22, 77, + 84, 85, 89, 85, 85, 89, 97, 89, 83, 46, 37, 107, 119, 96, 99, 102, + 114, 103, 102, 108, 112, 103, 76, 69, 75, 84, 91, 93, 95, 104, 110, 72, + 67, 24, 87, 110, 118, 114, 96, 103, 104, 103, 91, 91, 89, 80, 77, 84, + 89, 89, 88, 88, 85, 88, 88, 87, 80, 80, 85, 83, 85, 89, 91, 88, + 87, 85, 85, 84, 75, 81, 21, 84, 55, 49, 46, 42, 41, 45, 38, 34, + 33, 36, 34, 36, 52, 36, 37, 37, 41, 38, 57, 60, 55, 53, 13, 36, + 97, 95, 51, 53, 84, 84, 53, 64, 77, 65, 16, 72, 106, 102, 79, 81, + 96, 92, 73, 73, 69, 42, 91, 85, 67, 61, 56, 56, 59, 56, 57, 60, + 60, 24, 85, 107, 96, 38, 34, 34, 38, 40, 29, 30, 18, 51, 25, 1, + 2, 12, 4, 17, 2, 8, 10, 17, 14, 20, 29, 36, 48, 45, 36, 51, + 46, 49, 33, 53, 52, 40, 1, 25, 30, 32, 30, 30, 28, 29, 29, 29, + 29, 28, 26, 0, 51, 108, 106, 103, 103, 102, 100, 95, 60, 81, 16, 55, + 73, 40, 42, 38, 40, 49, 45, 44, 42, 42, 41, 40, 28, 25, 22, 20, + 21, 20, 18, 17, 16, 16, 9, 16, 14, 17, 21, 17, 20, 22, 24, 29, + 28, 24, 29, 28, 32, 30, 34, 34, 33, 30, 34, 36, 32, 6, 18, 30, + 41, 26, 30, 33, 51, 52, 59, 37, 34, 26, 9, 65, 32, 33, 36, 29, + 30, 26, 30, 24, 24, 18, 5, 14, 22, 38, 8, 8, 8, 9, 8, 5, + 5, 17, 0, 5, 5, 5, 9, 6, 8, 6, 16, 18, 22, 8, 2, 13, + 6, 16, 6, 10, 14, 14, 10, 17, 20, 12, 5, 37, 85, 30, 29, 25, + 8, 4, 8, 28, 29, 4, 4, 40, 42, 13, 44, 34, 26, 24, 21, 49, + 18, 17, 13, 53, 42, 5, 38, 9, 6, 5, 24, 6, 5, 4, 2, 4, + 2, 6, 12, 16, 10, 16, 14, 14, 16, 20, 20, 20, 79, 76, 73, 107, + 107, 123, 124, 126, 132, 138, 136, 131, 132, 131, 134, 151, 134, 134, 95, 95, + 93, 88, 80, 80, 67, 44, 46, 42, 40, 36, 36, 36, 34, 34, 37, 40, + 40, 42, 46, 55, 56, 63, 69, 73, 80, 81, 85, 92, 99, 34, 34, 73, + 76, 76, 73, 77, 77, 79, 77, 69, 28, 79, 41, 71, 40, 56, 37, 40, + 68, 85, 110, 112, 96, 100, 116, 126, 140, 130, 119, 103, 95, 87, 87, 42, + 76, 5, 32, 30, 51, 53, 61, 73, 89, 102, 138, 130, 102, 95, 135, 139, + 122, 134, 138, 107, 89, 81, 71, 44, 22, 40, 33, 17, 24, 24, 21, 12, + 13, 13, 10, 8, 5, 6, 4, 5, 2, 2, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, + 0, 0, 25, 0, 0, 0, 38, 0, 0, 9, 26, 33, 38, 37, 92, 123, + 127, 134, 128, 122, 92, 106, 127, 126, 116, 124, 120, 112, 96, 72, 69, 36, + 59, 29, 2, 1, 26, 22, 1, 0, 17, 5, 8, 1, 6, 9, 9, 1, + 5, 4, 1, 6, 18, 21, 1, 8, 4, 2, 36, 37, 2, 2, 21, 22, + 25, 26, 33, 29, 59, 21, 20, 32, 24, 20, 22, 32, 22, 20, 22, 30, + 24, 22, 22, 56, 25, 24, 24, 30, 36, 45, 41, 65, 22, 59, 80, 79, + 61, 61, 75, 73, 59, 60, 64, 60, 55, 42, 46, 49, 37, 41, 41, 45, + 51, 46, 69, 69, 67, 63, 69, 67, 51, 48, 60, 48, 38, 34, 59, 34, + 52, 26, 44, 63, 75, 75, 76, 87, 111, 93, 69, 73, 61, 59, 64, 97, + 95, 97, 89, 72, 57, 46, 42, 36, 29, 29, 32, 46, 36, 44, 32, 36, + 44, 49, 33, 34, 26, 52, 51, 52, 56, 55, 52, 46, 53, 53, 52, 49, + 44, 88, 59, 45, 56, 44, 48, 45, 45, 40, 40, 42, 53, 29, 41, 56, + 63, 71, 72, 75, 73, 69, 75, 64, 51, 12, 34, 119, 83, 77, 60, 34, + 34, 28, 25, 10, 9, 8, 5, 16, 12, 6, 5, 17, 17, 13, 5, 17, + 17, 5, 4, 13, 14, 13, 1, 9, 2, 9, 1, 5, 2, 0, 0, 26, + 30, 36, 38, 42, 46, 49, 53, 59, 56, 13, 60, 28, 29, 22, 22, 25, + 24, 21, 18, 21, 14, 16, 38, 51, 56, 69, 71, 73, 75, 68, 60, 53, + 34, 12, 68, 80, 79, 57, 72, 67, 60, 26, 14, 13, 6, 10, 10, 10, + 9, 13, 12, 8, 5, 6, 6, 4, 6, 17, 14, 18, 12, 12, 17, 25, + 26, 29, 29, 28, 25, 1, 55, 9, 9, 16, 10, 8, 6, 6, 9, 5, + 4, 5, 10, 21, 36, 32, 33, 44, 48, 45, 42, 34, 17, 0, 48, 75, + 68, 67, 67, 61, 30, 20, 10, 6, 2, 2, 0, 4, 1, 1, 6, 6, + 6, 4, 6, 4, 9, 4, 24, 76, 42, 40, 29, 191, 187, 182, 177, 171, + 159, 166, 135, 73, 32, 80, 151, 161, 147, 136, 142, 139, 139, 144, 123, 57, + 68, 155, 161, 162, 157, 165, 163, 162, 157, 163, 147, 157, 150, 162, 165, 162, + 167, 167, 163, 161, 151, 96, 64, 80, 114, 157, 167, 162, 159, 165, 166, 163, + 155, 165, 167, 162, 124, 114, 131, 122, 143, 143, 136, 146, 139, 75, 100, 69, + 64, 154, 153, 140, 136, 139, 136, 126, 128, 126, 114, 106, 116, 134, 151, 143, + 138, 112, 88, 61, 45, 56, 41, 24, 37, 42, 36, 34, 41, 48, 37, 30, + 34, 57, 51, 64, 59, 87, 100, 108, 119, 111, 122, 131, 126, 118, 132, 118, + 119, 91, 107, 134, 116, 119, 122, 126, 123, 131, 106, 97, 9, 57, 148, 153, + 153, 157, 148, 143, 130, 131, 150, 138, 88, 116, 134, 154, 143, 140, 136, 122, + 135, 102, 89, 48, 67, 114, 119, 134, 135, 134, 115, 126, 139, 139, 96, 92, + 97, 153, 150, 155, 154, 153, 148, 154, 150, 144, 97, 106, 138, 143, 148, 142, + 130, 134, 147, 130, 130, 128, 136, 114, 33, 64, 132, 142, 103, 120, 128, 140, + 102, 124, 124, 60, 55, 53, 136, 124, 130, 132, 136, 132, 142, 135, 97, 107, + 91, 95, 110, 130, 123, 127, 120, 107, 108, 114, 79, 45, 6, 44, 108, 126, + 102, 96, 108, 99, 97, 93, 75, 42, 0, 52, 110, 142, 106, 107, 106, 103, + 116, 122, 118, 71, 48, 61, 132, 139, 127, 131, 134, 136, 99, 120, 56, 63, + 56, 112, 122, 120, 104, 107, 99, 95, 115, 108, 92, 51, 57, 64, 100, 108, + 100, 104, 71, 71, 34, 32, 26, 25, 36, 37, 45, 49, 45, 48, 48, 48, + 57, 61, 59, 55, 53, 21, 73, 110, 116, 89, 107, 84, 83, 40, 46, 33, + 21, 30, 46, 71, 77, 75, 80, 85, 83, 81, 72, 60, 68, 95, 127, 138, + 127, 123, 123, 116, 115, 114, 114, 59, 57, 87, 119, 116, 122, 116, 112, 107, + 114, 107, 81, 60, 57, 85, 87, 92, 88, 77, 72, 75, 63, 37, 29, 21, + 30, 29, 41, 41, 34, 18, 21, 18, 37, 16, 17, 42, 37, 61, 77, 79, + 93, 96, 103, 96, 104, 92, 57, 52, 72, 89, 96, 100, 97, 100, 100, 102, + 93, 108, 84, 69, 1, 99, 87, 83, 67, 93, 92, 79, 72, 67, 85, 71, + 64, 96, 107, 95, 99, 107, 100, 92, 88, 85, 79, 28, 0, 22, 81, 114, + 87, 81, 81, 85, 76, 65, 88, 72, 26, 0, 77, 92, 88, 87, 80, 63, + 24, 46, 42, 40, 2, 24, 33, 52, 57, 57, 69, 79, 84, 68, 81, 68, + 83, 68, 73, 79, 75, 71, 80, 77, 87, 72, 59, 37, 13, 79, 81, 59, + 64, 72, 52, 57, 53, 61, 55, 34, 44, 34, 69, 77, 79, 69, 80, 76, + 69, 68, 24, 6, 34, 71, 68, 53, 56, 56, 51, 21, 12, 9, 8, 6, + 1, 4, 34, 36, 36, 37, 45, 48, 49, 49, 51, 24, 6, 46, 80, 76, + 79, 76, 71, 67, 61, 56, 37, 17, 0, 56, 84, 68, 63, 59, 67, 57, + 61, 53, 30, 12, 1, 42, 59, 57, 17, 13, 12, 9, 16, 10, 5, 10, + 2, 71, 48, 106, 116, 120, 186, 179, 173, 174, 167, 173, 166, 161, 87, 42, + 162, 161, 158, 153, 161, 159, 159, 157, 154, 158, 57, 166, 173, 170, 170, 166, + 173, 167, 174, 166, 175, 161, 155, 150, 165, 158, 163, 162, 165, 157, 157, 161, + 154, 153, 85, 147, 169, 157, 162, 165, 157, 163, 158, 161, 155, 120, 131, 107, + 126, 140, 136, 139, 130, 131, 134, 134, 143, 103, 91, 127, 158, 155, 155, 161, + 151, 154, 151, 153, 150, 144, 130, 143, 142, 146, 144, 140, 144, 138, 138, 140, + 135, 138, 104, 28, 56, 127, 136, 120, 123, 127, 135, 130, 123, 84, 61, 93, + 131, 134, 138, 128, 144, 151, 154, 147, 131, 147, 134, 73, 112, 146, 158, 154, + 123, 138, 140, 131, 136, 116, 99, 12, 124, 158, 147, 144, 143, 135, 148, 124, + 128, 158, 143, 95, 119, 158, 154, 147, 151, 148, 151, 123, 138, 100, 45, 116, + 132, 143, 130, 134, 134, 140, 130, 143, 140, 143, 138, 126, 107, 111, 115, 119, + 115, 116, 118, 122, 120, 128, 124, 95, 123, 132, 120, 114, 127, 136, 134, 135, + 140, 143, 140, 34, 147, 158, 147, 144, 147, 140, 134, 135, 131, 130, 72, 45, + 104, 123, 128, 127, 136, 136, 139, 138, 132, 123, 111, 85, 93, 128, 139, 127, + 130, 130, 124, 116, 118, 88, 49, 20, 123, 134, 135, 126, 130, 132, 128, 124, + 123, 107, 48, 2, 153, 155, 151, 150, 153, 151, 146, 139, 154, 147, 108, 51, + 138, 153, 151, 143, 143, 132, 138, 130, 127, 87, 63, 114, 136, 122, 116, 114, + 131, 132, 126, 128, 127, 128, 119, 56, 100, 119, 122, 118, 116, 112, 108, 100, + 73, 51, 24, 80, 100, 81, 93, 96, 92, 102, 92, 92, 85, 76, 61, 46, + 17, 100, 119, 107, 104, 102, 108, 119, 100, 112, 95, 77, 99, 76, 96, 103, + 111, 100, 114, 97, 107, 84, 69, 75, 115, 138, 108, 111, 111, 107, 95, 110, + 104, 93, 99, 77, 112, 106, 111, 103, 102, 100, 108, 103, 99, 91, 103, 92, + 99, 100, 102, 88, 102, 96, 97, 87, 81, 80, 76, 107, 100, 103, 106, 110, + 112, 108, 114, 120, 122, 57, 63, 80, 136, 139, 140, 138, 140, 136, 131, 134, + 132, 88, 52, 79, 106, 102, 97, 96, 89, 91, 81, 79, 83, 93, 57, 10, + 72, 91, 81, 69, 69, 77, 65, 81, 77, 61, 65, 71, 64, 77, 80, 77, + 67, 73, 73, 77, 69, 91, 34, 0, 112, 118, 120, 122, 116, 114, 111, 100, + 108, 103, 84, 48, 0, 81, 89, 95, 97, 97, 92, 87, 77, 69, 40, 9, + 63, 95, 99, 102, 103, 102, 102, 93, 84, 81, 42, 64, 93, 95, 95, 96, + 89, 81, 71, 71, 73, 60, 42, 14, 80, 85, 61, 56, 49, 55, 72, 64, + 79, 69, 30, 24, 72, 93, 91, 91, 89, 80, 76, 83, 80, 29, 8, 57, + 75, 75, 75, 77, 71, 71, 60, 57, 52, 40, 17, 40, 75, 91, 88, 85, + 81, 83, 80, 69, 76, 55, 32, 6, 68, 71, 61, 59, 59, 45, 46, 34, + 44, 55, 21, 2, 40, 83, 71, 59, 42, 46, 45, 46, 61, 49, 17, 1, + 61, 61, 69, 59, 55, 38, 48, 53, 51, 9, 12, 1, 69, 64, 85, 84, + 92, 191, 191, 185, 178, 175, 175, 150, 134, 87, 46, 155, 161, 153, 153, 154, + 111, 153, 151, 148, 80, 64, 171, 183, 182, 190, 201, 205, 209, 214, 217, 220, + 224, 228, 230, 226, 226, 226, 226, 218, 209, 189, 173, 167, 161, 142, 167, 159, + 158, 154, 148, 151, 150, 135, 112, 118, 128, 114, 96, 130, 144, 157, 142, 139, + 143, 144, 146, 144, 139, 65, 151, 161, 153, 154, 148, 148, 151, 148, 144, 146, + 147, 138, 139, 150, 154, 153, 147, 144, 139, 138, 146, 147, 131, 111, 34, 142, + 146, 157, 157, 148, 153, 153, 150, 150, 131, 56, 118, 162, 154, 138, 157, 150, + 138, 138, 150, 150, 151, 132, 77, 110, 151, 159, 148, 147, 150, 150, 148, 132, + 119, 108, 9, 132, 153, 154, 143, 134, 143, 130, 147, 138, 151, 144, 76, 107, + 148, 142, 148, 140, 142, 126, 126, 136, 107, 57, 126, 122, 128, 138, 124, 139, + 140, 147, 146, 138, 127, 97, 130, 123, 139, 139, 140, 139, 135, 127, 114, 112, + 104, 88, 118, 144, 134, 135, 146, 143, 140, 144, 143, 142, 140, 135, 33, 150, + 158, 131, 127, 130, 124, 126, 120, 131, 128, 72, 46, 103, 128, 132, 126, 126, + 122, 127, 127, 135, 124, 115, 67, 85, 126, 118, 123, 131, 132, 119, 108, 112, + 95, 81, 29, 123, 127, 128, 127, 127, 120, 120, 120, 114, 110, 64, 1, 131, + 150, 151, 153, 148, 151, 153, 146, 143, 147, 124, 60, 146, 143, 142, 130, 123, + 126, 115, 120, 120, 127, 112, 132, 119, 112, 116, 106, 115, 92, 96, 95, 99, + 80, 79, 64, 123, 142, 116, 119, 118, 122, 112, 108, 110, 64, 22, 89, 96, + 85, 99, 91, 84, 95, 89, 84, 87, 69, 65, 56, 22, 97, 130, 104, 104, + 118, 106, 107, 104, 93, 103, 59, 67, 127, 122, 120, 128, 123, 118, 112, 106, + 93, 76, 71, 127, 132, 103, 106, 106, 99, 92, 103, 116, 111, 116, 112, 122, + 120, 130, 123, 122, 123, 147, 123, 128, 123, 127, 116, 126, 126, 128, 122, 120, + 123, 122, 122, 104, 85, 59, 108, 108, 106, 110, 106, 103, 92, 103, 102, 97, + 69, 48, 108, 143, 135, 132, 130, 136, 134, 140, 128, 111, 104, 61, 81, 100, + 103, 87, 85, 93, 84, 83, 91, 93, 85, 56, 10, 61, 95, 83, 93, 75, + 89, 79, 92, 92, 80, 68, 61, 81, 99, 92, 107, 104, 100, 88, 106, 93, + 85, 36, 9, 104, 116, 110, 110, 112, 111, 107, 106, 99, 114, 87, 42, 0, + 88, 96, 89, 79, 79, 67, 83, 91, 73, 29, 14, 60, 102, 103, 93, 77, + 71, 88, 68, 67, 52, 45, 76, 100, 87, 87, 73, 65, 71, 83, 75, 65, + 42, 37, 9, 79, 88, 80, 59, 60, 67, 72, 69, 67, 64, 32, 45, 88, + 92, 87, 73, 87, 69, 68, 72, 85, 29, 8, 65, 77, 56, 55, 49, 41, + 44, 40, 45, 63, 53, 18, 36, 81, 77, 84, 91, 72, 60, 61, 77, 68, + 67, 30, 8, 67, 57, 38, 63, 49, 48, 41, 34, 40, 33, 18, 0, 55, + 77, 59, 67, 55, 42, 44, 68, 49, 45, 18, 1, 30, 65, 57, 65, 57, + 61, 51, 57, 46, 20, 13, 1, 83, 103, 84, 75, 84, 179, 171, 175, 171, + 166, 154, 157, 166, 92, 68, 106, 158, 154, 127, 122, 119, 120, 122, 116, 153, + 154, 178, 221, 220, 228, 229, 226, 225, 226, 229, 233, 236, 238, 240, 240, 236, + 234, 236, 234, 234, 232, 232, 216, 178, 167, 161, 173, 179, 205, 179, 167, 148, + 138, 104, 119, 122, 111, 96, 146, 157, 150, 151, 143, 151, 157, 155, 143, 153, + 132, 150, 144, 151, 115, 155, 148, 153, 147, 153, 143, 143, 140, 146, 153, 155, + 147, 147, 143, 161, 158, 131, 123, 131, 107, 34, 148, 153, 155, 155, 157, 147, + 147, 148, 143, 130, 83, 126, 148, 153, 151, 148, 146, 134, 144, 148, 154, 140, + 127, 69, 103, 150, 163, 150, 146, 150, 153, 142, 132, 114, 95, 10, 116, 144, + 147, 143, 140, 143, 131, 118, 157, 157, 136, 83, 114, 150, 147, 139, 134, 131, + 124, 130, 140, 111, 80, 80, 126, 130, 138, 146, 151, 132, 134, 136, 123, 126, + 89, 122, 143, 127, 143, 139, 140, 127, 134, 135, 134, 95, 81, 127, 142, 131, + 139, 132, 139, 138, 112, 138, 139, 95, 97, 45, 99, 161, 132, 123, 127, 112, + 119, 123, 130, 126, 77, 42, 103, 123, 127, 116, 119, 120, 122, 124, 138, 123, + 108, 61, 92, 118, 114, 103, 134, 139, 119, 110, 118, 83, 81, 26, 93, 136, + 126, 124, 127, 116, 128, 128, 111, 102, 55, 6, 84, 148, 142, 134, 130, 130, + 135, 136, 128, 124, 130, 126, 131, 143, 144, 136, 127, 139, 120, 128, 110, 116, + 104, 115, 106, 116, 115, 110, 108, 112, 114, 111, 106, 110, 106, 108, 111, 122, + 130, 100, 108, 108, 132, 108, 106, 60, 20, 79, 89, 85, 92, 97, 99, 93, + 93, 88, 80, 71, 57, 51, 20, 95, 115, 100, 108, 118, 118, 118, 114, 104, + 103, 55, 111, 135, 130, 122, 111, 112, 110, 103, 106, 81, 75, 80, 110, 128, + 96, 107, 100, 99, 104, 136, 206, 209, 201, 213, 224, 224, 212, 221, 230, 234, + 230, 228, 233, 244, 229, 230, 225, 242, 221, 212, 216, 246, 222, 167, 112, 84, + 63, 107, 127, 139, 136, 132, 132, 122, 116, 115, 99, 71, 63, 123, 138, 130, + 128, 134, 134, 143, 138, 110, 122, 97, 69, 69, 100, 93, 87, 83, 88, 85, + 83, 83, 93, 83, 46, 6, 71, 108, 96, 112, 88, 79, 91, 85, 76, 77, + 68, 36, 89, 99, 91, 93, 96, 95, 73, 96, 95, 87, 32, 9, 68, 112, + 107, 100, 96, 96, 89, 93, 97, 107, 85, 41, 0, 84, 84, 80, 61, 81, + 80, 75, 77, 79, 44, 17, 72, 100, 87, 83, 81, 76, 83, 56, 64, 56, + 33, 72, 91, 77, 71, 68, 84, 67, 67, 57, 49, 52, 38, 13, 76, 88, + 80, 76, 83, 84, 56, 64, 60, 64, 22, 36, 92, 91, 84, 61, 81, 72, + 85, 83, 80, 30, 9, 67, 61, 51, 51, 41, 41, 41, 41, 41, 57, 51, + 20, 32, 76, 75, 81, 100, 75, 56, 61, 65, 56, 51, 30, 9, 60, 67, + 41, 71, 41, 52, 37, 40, 49, 34, 17, 0, 56, 77, 61, 55, 49, 52, + 48, 64, 44, 26, 18, 1, 49, 46, 56, 57, 42, 45, 44, 34, 42, 36, + 13, 2, 67, 61, 59, 28, 17, 163, 163, 166, 162, 162, 154, 169, 157, 93, + 59, 114, 161, 157, 127, 124, 110, 103, 161, 167, 197, 214, 222, 228, 236, 233, + 233, 229, 229, 224, 230, 237, 238, 238, 236, 234, 233, 230, 225, 229, 230, 232, + 229, 233, 230, 221, 225, 222, 209, 202, 216, 157, 144, 131, 106, 123, 123, 114, + 110, 163, 193, 198, 194, 198, 205, 209, 210, 208, 208, 204, 206, 208, 177, 166, + 162, 155, 159, 153, 150, 154, 151, 169, 185, 199, 205, 202, 195, 190, 155, 139, + 131, 108, 130, 103, 44, 104, 151, 146, 148, 146, 147, 140, 148, 153, 132, 84, + 96, 150, 159, 142, 144, 148, 136, 134, 138, 154, 140, 128, 67, 112, 148, 158, + 147, 146, 147, 151, 139, 138, 115, 103, 14, 112, 151, 157, 150, 143, 155, 124, + 148, 148, 148, 135, 67, 116, 139, 148, 134, 134, 139, 128, 143, 134, 111, 76, + 75, 140, 146, 127, 131, 132, 143, 131, 135, 128, 116, 81, 127, 143, 135, 134, + 131, 130, 134, 148, 140, 134, 120, 76, 130, 140, 140, 126, 138, 136, 135, 138, + 130, 136, 138, 128, 49, 102, 158, 135, 123, 118, 106, 114, 111, 127, 126, 77, + 38, 104, 123, 122, 112, 112, 112, 115, 119, 128, 116, 102, 65, 84, 112, 110, + 103, 124, 110, 103, 108, 114, 85, 48, 10, 95, 139, 118, 116, 124, 127, 122, + 118, 115, 100, 55, 4, 134, 142, 136, 134, 138, 135, 128, 132, 157, 194, 205, + 209, 218, 222, 230, 232, 236, 237, 248, 248, 246, 238, 238, 224, 232, 236, 232, + 230, 225, 228, 222, 224, 204, 205, 187, 206, 198, 228, 191, 182, 177, 178, 199, + 155, 114, 63, 26, 85, 77, 92, 99, 91, 89, 97, 79, 81, 55, 68, 49, + 42, 13, 93, 122, 106, 111, 122, 122, 119, 104, 92, 104, 42, 116, 132, 124, + 108, 107, 114, 118, 111, 115, 89, 71, 56, 106, 126, 93, 99, 96, 97, 97, + 142, 199, 205, 206, 213, 213, 217, 216, 213, 217, 221, 224, 225, 226, 225, 224, + 222, 221, 213, 214, 210, 208, 209, 202, 154, 106, 79, 22, 100, 118, 122, 126, + 124, 123, 136, 135, 107, 106, 72, 71, 97, 136, 128, 144, 140, 124, 120, 97, + 103, 110, 103, 67, 64, 104, 96, 83, 87, 85, 85, 83, 87, 75, 80, 60, + 1, 73, 108, 83, 97, 80, 89, 88, 107, 71, 71, 67, 46, 79, 104, 99, + 104, 106, 104, 103, 93, 81, 81, 32, 0, 71, 112, 99, 91, 88, 93, 104, + 104, 107, 111, 91, 40, 0, 79, 80, 77, 65, 95, 76, 76, 80, 64, 38, + 10, 60, 106, 92, 77, 72, 68, 83, 60, 59, 44, 34, 68, 97, 69, 83, + 87, 76, 68, 63, 68, 72, 49, 38, 18, 72, 77, 71, 75, 65, 65, 59, + 69, 57, 63, 24, 40, 89, 83, 69, 80, 75, 95, 83, 81, 77, 32, 12, + 55, 76, 53, 52, 42, 40, 38, 38, 40, 40, 40, 18, 2, 75, 76, 88, + 95, 56, 63, 64, 57, 67, 51, 33, 10, 53, 68, 41, 75, 29, 52, 37, + 34, 44, 30, 17, 0, 42, 75, 67, 69, 53, 55, 45, 63, 49, 29, 17, + 1, 46, 59, 55, 29, 34, 32, 33, 24, 37, 18, 13, 8, 68, 60, 45, + 56, 18, 161, 161, 162, 163, 161, 154, 167, 151, 93, 65, 153, 150, 123, 119, + 128, 158, 159, 205, 233, 234, 236, 237, 230, 228, 228, 228, 204, 175, 162, 167, + 170, 163, 147, 136, 131, 127, 116, 112, 120, 128, 143, 191, 214, 228, 228, 228, + 225, 221, 221, 209, 157, 139, 119, 106, 124, 104, 115, 151, 175, 206, 205, 213, + 204, 214, 220, 218, 216, 226, 224, 229, 226, 225, 222, 225, 221, 218, 213, 206, + 210, 214, 218, 216, 222, 214, 213, 208, 208, 155, 135, 126, 102, 127, 104, 48, + 106, 154, 139, 140, 161, 154, 153, 151, 147, 131, 85, 67, 142, 154, 153, 148, + 150, 155, 155, 155, 155, 139, 128, 63, 107, 162, 163, 144, 150, 147, 153, 139, + 138, 115, 96, 17, 126, 153, 144, 146, 140, 148, 138, 142, 151, 142, 138, 67, + 118, 138, 144, 136, 134, 140, 138, 139, 135, 110, 77, 61, 139, 131, 131, 134, + 140, 130, 142, 135, 120, 108, 77, 116, 139, 131, 127, 131, 139, 136, 134, 136, + 126, 95, 77, 131, 143, 150, 140, 139, 120, 143, 136, 127, 138, 135, 131, 53, + 104, 155, 138, 118, 116, 104, 107, 119, 128, 127, 80, 37, 111, 116, 118, 115, + 115, 110, 110, 120, 124, 115, 106, 64, 89, 108, 107, 97, 95, 132, 131, 106, + 111, 88, 48, 21, 106, 139, 124, 124, 123, 118, 116, 102, 115, 119, 51, 4, + 148, 148, 135, 132, 139, 127, 136, 199, 202, 216, 212, 214, 220, 232, 233, 234, + 238, 241, 245, 248, 248, 244, 242, 242, 226, 236, 240, 229, 224, 228, 233, 229, + 221, 226, 216, 213, 205, 214, 206, 201, 186, 212, 199, 169, 107, 61, 28, 83, + 76, 92, 93, 88, 93, 87, 85, 81, 59, 65, 48, 40, 12, 100, 119, 106, + 115, 112, 122, 122, 112, 93, 95, 37, 115, 128, 110, 119, 119, 120, 127, 122, + 119, 104, 76, 81, 103, 131, 100, 104, 107, 96, 95, 116, 144, 190, 201, 206, + 208, 204, 210, 201, 205, 212, 214, 216, 222, 222, 224, 216, 210, 217, 209, 201, + 197, 204, 178, 116, 97, 51, 33, 106, 122, 107, 120, 120, 126, 126, 134, 110, + 110, 73, 67, 99, 132, 120, 116, 97, 99, 103, 97, 103, 107, 114, 83, 61, + 100, 96, 89, 80, 84, 85, 85, 79, 87, 100, 57, 8, 95, 84, 99, 80, + 84, 91, 96, 87, 87, 75, 65, 45, 81, 108, 87, 103, 89, 87, 85, 87, + 92, 87, 29, 1, 114, 103, 95, 99, 102, 100, 100, 108, 107, 104, 88, 57, + 1, 77, 96, 73, 102, 75, 63, 77, 72, 65, 36, 6, 56, 103, 89, 85, + 80, 83, 81, 71, 55, 49, 33, 72, 95, 67, 75, 89, 77, 68, 71, 71, + 57, 53, 42, 24, 75, 91, 83, 84, 85, 68, 59, 63, 60, 75, 28, 48, + 85, 79, 63, 87, 92, 95, 77, 81, 69, 36, 10, 59, 71, 59, 51, 41, + 40, 51, 37, 42, 53, 60, 20, 4, 69, 69, 63, 56, 59, 56, 56, 53, + 55, 53, 34, 12, 46, 72, 51, 87, 28, 51, 32, 46, 40, 36, 20, 4, + 53, 73, 69, 64, 52, 45, 52, 52, 53, 38, 20, 0, 48, 63, 36, 30, + 18, 22, 22, 26, 33, 14, 13, 1, 63, 56, 34, 13, 2, 173, 161, 158, + 158, 154, 154, 170, 140, 102, 69, 153, 159, 122, 131, 159, 179, 225, 236, 233, + 232, 233, 234, 229, 216, 185, 150, 118, 107, 103, 104, 104, 104, 104, 104, 103, + 106, 106, 107, 104, 107, 108, 111, 126, 136, 166, 197, 206, 214, 202, 162, 140, + 124, 93, 104, 115, 110, 118, 159, 178, 232, 234, 218, 229, 224, 232, 228, 232, + 230, 225, 225, 230, 234, 232, 229, 226, 221, 220, 228, 222, 221, 222, 222, 225, + 220, 216, 216, 208, 146, 127, 116, 99, 122, 107, 55, 139, 150, 143, 150, 158, + 139, 150, 151, 154, 155, 126, 56, 135, 153, 159, 161, 161, 157, 157, 151, 150, + 135, 127, 63, 100, 154, 158, 150, 146, 146, 154, 142, 140, 132, 100, 16, 120, + 151, 147, 153, 146, 148, 151, 153, 154, 128, 116, 53, 112, 134, 147, 135, 146, + 139, 136, 134, 136, 120, 110, 63, 131, 132, 135, 132, 128, 132, 135, 134, 118, + 89, 69, 112, 131, 127, 123, 134, 140, 134, 132, 128, 120, 81, 72, 124, 138, + 142, 142, 135, 122, 138, 131, 138, 115, 136, 126, 59, 79, 108, 155, 136, 114, + 110, 107, 116, 132, 119, 80, 44, 99, 114, 115, 106, 107, 104, 103, 127, 127, + 122, 100, 61, 80, 102, 102, 95, 92, 131, 108, 106, 108, 91, 67, 25, 110, + 123, 118, 128, 123, 126, 123, 115, 118, 104, 57, 1, 118, 146, 134, 134, 132, + 126, 189, 201, 208, 214, 217, 221, 220, 225, 230, 234, 234, 237, 241, 245, 244, + 246, 245, 244, 238, 230, 240, 233, 230, 232, 222, 222, 225, 229, 220, 220, 209, + 205, 202, 199, 195, 202, 159, 138, 73, 63, 28, 83, 81, 87, 99, 92, 88, + 81, 76, 79, 59, 60, 55, 46, 14, 75, 127, 108, 118, 108, 114, 119, 112, + 106, 88, 45, 112, 119, 126, 131, 132, 143, 139, 135, 128, 120, 104, 87, 114, + 136, 106, 104, 88, 87, 99, 93, 104, 112, 122, 122, 120, 112, 110, 107, 110, + 108, 108, 108, 114, 118, 118, 114, 114, 116, 111, 108, 108, 107, 106, 92, 87, + 49, 53, 103, 119, 106, 106, 126, 119, 120, 124, 108, 104, 76, 73, 93, 130, + 132, 112, 112, 132, 118, 120, 126, 92, 102, 102, 57, 89, 106, 95, 81, 85, + 80, 85, 91, 87, 91, 53, 9, 67, 93, 89, 80, 81, 80, 76, 85, 91, + 79, 63, 45, 72, 111, 77, 108, 110, 96, 100, 97, 96, 75, 38, 8, 111, + 112, 102, 106, 97, 102, 100, 112, 106, 106, 87, 44, 1, 84, 96, 80, 80, + 75, 76, 65, 79, 49, 30, 16, 56, 97, 93, 71, 84, 77, 69, 67, 57, + 56, 37, 75, 95, 81, 81, 84, 75, 67, 67, 84, 60, 41, 42, 16, 81, + 87, 79, 65, 76, 72, 57, 67, 56, 63, 25, 68, 81, 63, 81, 80, 77, + 73, 83, 84, 72, 32, 14, 36, 56, 68, 52, 52, 40, 55, 52, 38, 49, + 60, 20, 24, 65, 76, 65, 55, 55, 59, 55, 55, 55, 51, 36, 13, 48, + 72, 42, 59, 32, 44, 32, 49, 41, 30, 17, 1, 64, 75, 72, 71, 52, + 48, 60, 56, 55, 41, 18, 0, 30, 48, 29, 18, 13, 10, 12, 20, 26, + 16, 13, 1, 64, 77, 28, 2, 25, 189, 165, 163, 163, 162, 159, 158, 162, + 102, 87, 118, 118, 134, 162, 198, 229, 240, 233, 233, 225, 216, 195, 170, 126, + 110, 103, 104, 104, 106, 104, 106, 106, 112, 111, 103, 92, 88, 93, 97, 107, + 128, 108, 111, 114, 114, 122, 126, 127, 130, 127, 131, 102, 87, 104, 116, 100, + 111, 143, 162, 204, 212, 208, 174, 142, 128, 134, 138, 134, 131, 134, 140, 167, + 195, 204, 210, 216, 221, 220, 213, 201, 206, 213, 216, 212, 201, 159, 138, 123, + 119, 89, 89, 120, 99, 55, 97, 147, 148, 150, 150, 157, 157, 151, 151, 157, + 103, 68, 122, 153, 151, 153, 155, 151, 153, 153, 151, 128, 130, 56, 96, 139, + 158, 158, 159, 154, 155, 143, 140, 120, 92, 16, 116, 146, 148, 151, 144, 150, + 146, 147, 144, 142, 89, 42, 112, 134, 146, 128, 138, 142, 139, 134, 128, 128, + 103, 61, 95, 138, 132, 139, 130, 132, 132, 126, 116, 88, 61, 106, 144, 132, + 126, 134, 135, 136, 132, 134, 123, 83, 65, 130, 127, 138, 135, 135, 134, 139, + 138, 136, 114, 97, 115, 67, 72, 111, 134, 147, 123, 110, 103, 118, 126, 123, + 88, 38, 96, 118, 110, 112, 103, 103, 123, 147, 118, 114, 95, 41, 88, 106, + 88, 87, 93, 93, 102, 102, 99, 81, 68, 28, 80, 138, 130, 131, 123, 112, + 114, 124, 114, 108, 51, 8, 88, 143, 134, 132, 139, 124, 122, 161, 201, 208, + 204, 183, 139, 130, 126, 123, 128, 123, 111, 106, 110, 111, 114, 114, 112, 110, + 106, 107, 110, 110, 107, 102, 103, 111, 116, 112, 111, 104, 99, 104, 84, 79, + 77, 76, 65, 33, 22, 80, 88, 92, 87, 91, 85, 80, 80, 79, 55, 56, + 49, 40, 12, 92, 108, 111, 106, 112, 118, 103, 108, 99, 79, 48, 115, 123, + 139, 153, 181, 187, 195, 178, 177, 158, 135, 123, 111, 135, 97, 110, 95, 84, + 87, 89, 104, 95, 87, 92, 96, 97, 96, 95, 96, 95, 95, 95, 96, 96, + 97, 99, 99, 96, 97, 99, 96, 93, 97, 96, 36, 29, 48, 104, 114, 107, + 116, 112, 112, 116, 128, 107, 102, 88, 60, 72, 115, 126, 108, 95, 122, 130, + 127, 102, 99, 103, 89, 64, 75, 95, 97, 85, 87, 87, 85, 85, 87, 87, + 41, 6, 64, 100, 93, 77, 85, 81, 76, 83, 92, 72, 63, 29, 89, 106, + 88, 91, 108, 111, 93, 107, 96, 72, 30, 6, 69, 102, 92, 104, 108, 96, + 102, 104, 104, 106, 84, 42, 2, 79, 75, 93, 80, 64, 55, 69, 45, 44, + 37, 18, 57, 91, 91, 83, 89, 77, 72, 68, 68, 44, 24, 84, 91, 83, + 89, 88, 69, 68, 79, 65, 55, 45, 41, 21, 83, 79, 65, 79, 67, 60, + 63, 69, 55, 57, 21, 48, 89, 87, 91, 73, 48, 76, 77, 95, 73, 29, + 16, 29, 56, 68, 55, 51, 48, 55, 36, 37, 51, 49, 22, 21, 59, 75, + 69, 61, 65, 59, 60, 60, 57, 52, 40, 14, 25, 67, 49, 37, 33, 38, + 33, 45, 46, 33, 17, 1, 40, 73, 56, 64, 48, 57, 46, 48, 55, 28, + 18, 0, 57, 55, 18, 17, 12, 21, 10, 16, 28, 22, 9, 2, 64, 81, + 20, 6, 51, 177, 178, 169, 173, 161, 170, 157, 158, 104, 81, 120, 128, 170, + 218, 236, 236, 234, 237, 236, 191, 143, 114, 106, 106, 107, 110, 114, 102, 118, + 116, 108, 87, 67, 53, 56, 53, 61, 60, 63, 67, 85, 97, 126, 115, 116, + 119, 119, 120, 120, 128, 126, 83, 77, 89, 110, 106, 116, 124, 140, 134, 142, + 127, 127, 110, 103, 100, 107, 99, 103, 96, 104, 100, 103, 110, 111, 115, 115, + 115, 114, 111, 112, 116, 122, 124, 118, 119, 112, 110, 81, 85, 108, 112, 99, + 57, 85, 134, 154, 151, 159, 153, 155, 155, 151, 146, 108, 80, 100, 144, 148, + 151, 146, 148, 151, 151, 147, 127, 124, 44, 104, 126, 150, 153, 150, 147, 142, + 146, 132, 126, 97, 18, 118, 142, 151, 148, 151, 148, 148, 151, 140, 138, 114, + 44, 110, 130, 146, 143, 135, 138, 127, 130, 106, 103, 97, 75, 83, 84, 107, + 104, 100, 103, 107, 107, 116, 108, 64, 114, 140, 128, 123, 131, 132, 132, 132, + 131, 127, 93, 57, 127, 127, 127, 124, 120, 128, 126, 131, 128, 130, 128, 126, + 96, 73, 112, 128, 123, 103, 99, 102, 119, 120, 120, 89, 33, 106, 124, 115, + 110, 102, 99, 123, 136, 116, 110, 96, 45, 80, 99, 88, 87, 80, 83, 85, + 92, 84, 79, 55, 29, 76, 136, 112, 83, 103, 119, 120, 103, 108, 110, 48, + 8, 128, 135, 132, 128, 131, 128, 131, 131, 130, 128, 126, 118, 116, 112, 112, + 111, 111, 106, 100, 97, 99, 97, 99, 99, 97, 95, 93, 92, 92, 91, 92, + 84, 88, 88, 87, 87, 88, 83, 83, 84, 77, 72, 56, 56, 32, 24, 30, + 77, 75, 88, 83, 72, 57, 60, 51, 40, 55, 51, 56, 41, 6, 93, 128, + 114, 110, 110, 108, 111, 103, 96, 49, 75, 124, 138, 186, 202, 213, 212, 205, + 197, 201, 201, 197, 178, 151, 132, 103, 79, 80, 87, 72, 81, 72, 84, 83, + 81, 92, 103, 103, 102, 103, 102, 99, 100, 104, 106, 107, 107, 104, 104, 106, + 106, 103, 107, 83, 30, 38, 32, 14, 96, 104, 115, 100, 110, 97, 93, 89, + 111, 95, 84, 61, 77, 96, 106, 100, 119, 108, 107, 96, 91, 88, 89, 99, + 67, 67, 83, 108, 103, 99, 92, 99, 100, 87, 83, 63, 5, 72, 100, 100, + 92, 84, 91, 83, 87, 100, 60, 63, 33, 69, 108, 93, 102, 89, 72, 75, + 84, 85, 80, 30, 2, 71, 108, 95, 97, 97, 97, 103, 106, 99, 100, 95, + 38, 2, 76, 89, 67, 55, 56, 49, 45, 59, 45, 34, 18, 60, 91, 89, + 93, 75, 67, 76, 72, 72, 48, 28, 63, 85, 76, 81, 72, 69, 71, 68, + 68, 67, 44, 41, 24, 87, 79, 75, 61, 63, 60, 56, 64, 59, 32, 20, + 73, 76, 92, 73, 53, 65, 61, 80, 63, 73, 26, 20, 24, 55, 61, 59, + 64, 57, 49, 38, 38, 40, 45, 18, 4, 63, 72, 75, 59, 61, 61, 53, + 49, 53, 56, 32, 20, 21, 63, 55, 37, 42, 41, 33, 40, 37, 26, 17, + 1, 56, 71, 65, 53, 41, 46, 45, 53, 55, 40, 32, 1, 30, 45, 14, + 25, 14, 24, 14, 16, 29, 17, 9, 13, 55, 52, 26, 42, 95, 144, 140, + 143, 135, 124, 130, 128, 110, 83, 142, 132, 169, 226, 241, 238, 238, 236, 240, + 198, 131, 108, 110, 111, 116, 116, 111, 115, 120, 118, 92, 61, 48, 44, 45, + 48, 48, 56, 57, 61, 64, 69, 81, 103, 119, 154, 115, 120, 122, 124, 132, + 118, 79, 75, 76, 97, 103, 85, 127, 120, 119, 114, 106, 114, 111, 110, 110, + 108, 107, 108, 106, 104, 104, 104, 106, 104, 103, 104, 103, 104, 104, 103, 104, + 110, 108, 108, 111, 95, 72, 76, 75, 106, 108, 99, 61, 72, 128, 143, 154, + 139, 107, 122, 108, 104, 97, 96, 107, 84, 103, 123, 140, 136, 139, 139, 139, + 142, 122, 127, 41, 103, 120, 148, 150, 150, 146, 144, 128, 124, 122, 92, 24, + 123, 128, 131, 130, 127, 127, 127, 132, 135, 116, 112, 44, 104, 126, 138, 131, + 104, 120, 118, 107, 108, 115, 106, 103, 108, 120, 102, 123, 116, 118, 104, 119, + 116, 75, 64, 97, 115, 131, 115, 122, 126, 126, 119, 126, 122, 91, 57, 128, + 126, 126, 119, 123, 123, 123, 119, 119, 115, 122, 112, 114, 76, 87, 95, 97, + 99, 102, 107, 110, 120, 119, 92, 30, 110, 107, 116, 107, 100, 97, 95, 100, + 107, 107, 85, 64, 77, 92, 79, 72, 75, 76, 79, 77, 79, 77, 40, 30, + 59, 110, 118, 89, 104, 115, 114, 108, 115, 120, 45, 4, 122, 139, 132, 131, + 126, 124, 128, 123, 119, 108, 111, 106, 89, 99, 81, 87, 93, 83, 115, 114, + 111, 112, 111, 111, 111, 111, 108, 107, 104, 107, 104, 100, 96, 103, 99, 97, + 102, 97, 77, 48, 32, 28, 24, 24, 21, 14, 34, 29, 40, 42, 37, 34, + 34, 37, 36, 38, 36, 42, 40, 34, 6, 68, 115, 118, 116, 114, 122, 115, + 102, 95, 42, 85, 130, 174, 217, 216, 209, 218, 206, 208, 214, 210, 194, 190, + 166, 102, 88, 96, 87, 92, 89, 88, 77, 88, 96, 57, 65, 64, 102, 163, + 110, 116, 122, 119, 131, 126, 128, 132, 134, 134, 134, 131, 116, 92, 61, 26, + 45, 33, 20, 75, 99, 104, 106, 104, 107, 104, 108, 104, 100, 96, 93, 99, + 100, 79, 79, 84, 77, 76, 79, 89, 91, 79, 72, 80, 79, 77, 80, 76, + 76, 75, 61, 73, 71, 73, 40, 9, 67, 81, 84, 88, 87, 87, 84, 87, + 85, 72, 59, 30, 102, 112, 92, 89, 68, 87, 87, 77, 76, 79, 29, 4, + 99, 103, 93, 97, 91, 100, 92, 96, 92, 96, 79, 59, 2, 75, 87, 59, + 68, 48, 53, 46, 49, 44, 32, 8, 60, 84, 83, 80, 60, 64, 73, 73, + 55, 44, 25, 60, 72, 73, 68, 68, 71, 71, 71, 72, 67, 45, 51, 30, + 92, 79, 61, 60, 61, 59, 49, 60, 52, 28, 20, 64, 52, 65, 72, 68, + 64, 55, 59, 56, 53, 29, 24, 20, 40, 51, 52, 36, 42, 42, 49, 46, + 46, 45, 24, 2, 57, 63, 60, 55, 51, 48, 45, 45, 41, 40, 28, 26, + 25, 20, 21, 20, 29, 29, 22, 40, 34, 33, 17, 8, 51, 67, 61, 48, + 42, 41, 41, 44, 42, 34, 22, 1, 51, 48, 14, 20, 17, 24, 20, 20, + 13, 13, 8, 1, 42, 60, 45, 38, 30, 91, 80, 92, 91, 88, 83, 88, + 102, 134, 123, 150, 217, 241, 237, 238, 237, 241, 191, 136, 108, 116, 122, 120, + 112, 103, 120, 127, 122, 89, 49, 40, 42, 38, 42, 55, 73, 79, 80, 87, + 84, 80, 76, 89, 106, 147, 159, 120, 119, 119, 132, 119, 73, 68, 69, 92, + 104, 83, 116, 127, 124, 122, 120, 119, 118, 116, 115, 119, 116, 115, 116, 118, + 118, 111, 108, 108, 108, 108, 111, 107, 110, 107, 108, 107, 115, 104, 72, 69, + 68, 67, 56, 60, 100, 99, 93, 59, 71, 83, 95, 103, 76, 69, 67, 59, + 57, 51, 52, 56, 80, 80, 96, 107, 111, 115, 122, 122, 126, 111, 42, 92, + 112, 138, 143, 135, 130, 97, 61, 71, 60, 38, 26, 83, 87, 87, 89, 92, + 91, 91, 95, 99, 96, 69, 60, 81, 91, 92, 65, 60, 59, 60, 45, 30, + 46, 37, 29, 28, 21, 25, 22, 22, 30, 33, 33, 36, 37, 48, 36, 38, + 38, 38, 40, 65, 68, 48, 56, 63, 97, 55, 99, 114, 106, 100, 102, 102, + 100, 102, 103, 103, 106, 102, 99, 100, 106, 111, 111, 112, 115, 115, 116, 115, + 114, 92, 37, 100, 106, 99, 95, 89, 95, 89, 80, 97, 97, 69, 32, 68, + 60, 44, 32, 29, 28, 25, 28, 26, 20, 21, 32, 38, 36, 44, 37, 36, + 37, 37, 52, 52, 65, 49, 0, 18, 73, 81, 80, 79, 84, 91, 88, 91, + 87, 87, 49, 81, 111, 122, 134, 135, 130, 126, 127, 120, 127, 126, 127, 127, + 126, 123, 123, 120, 119, 116, 115, 115, 110, 114, 104, 84, 60, 28, 21, 21, + 18, 12, 13, 12, 10, 37, 37, 33, 40, 38, 36, 29, 33, 33, 32, 29, + 37, 30, 34, 10, 44, 99, 103, 96, 106, 108, 89, 72, 92, 36, 93, 144, + 205, 220, 217, 216, 220, 225, 202, 177, 146, 140, 123, 106, 91, 89, 68, 56, + 73, 76, 73, 72, 76, 69, 53, 68, 60, 102, 174, 150, 111, 110, 135, 132, + 134, 136, 139, 144, 142, 140, 136, 119, 83, 29, 25, 21, 52, 40, 46, 83, + 83, 73, 80, 84, 80, 79, 84, 83, 84, 81, 83, 87, 89, 88, 89, 88, + 88, 89, 85, 88, 88, 84, 76, 80, 80, 77, 67, 87, 75, 68, 56, 73, + 71, 38, 8, 30, 73, 76, 51, 59, 79, 77, 64, 65, 69, 53, 42, 87, + 124, 73, 64, 73, 73, 53, 55, 63, 52, 44, 8, 83, 110, 103, 104, 97, + 102, 91, 91, 97, 93, 60, 41, 4, 77, 84, 53, 56, 44, 40, 42, 41, + 38, 21, 17, 53, 26, 32, 33, 36, 33, 32, 32, 24, 22, 29, 30, 34, + 34, 33, 32, 38, 51, 60, 61, 61, 38, 38, 20, 88, 73, 57, 52, 55, + 38, 36, 36, 32, 30, 24, 44, 26, 37, 25, 28, 45, 41, 46, 41, 42, + 41, 28, 16, 33, 40, 42, 37, 33, 32, 33, 32, 30, 28, 22, 16, 28, + 29, 21, 21, 25, 25, 22, 24, 24, 22, 26, 25, 24, 26, 25, 26, 28, + 29, 28, 30, 28, 30, 16, 1, 45, 44, 41, 37, 38, 37, 36, 36, 34, + 21, 24, 0, 42, 36, 9, 9, 8, 8, 8, 6, 8, 10, 5, 1, 5, + 9, 8, 12, 2, 143, 140, 136, 132, 130, 126, 128, 144, 126, 139, 190, 240, + 241, 240, 238, 238, 190, 135, 111, 115, 126, 114, 106, 100, 124, 131, 126, 97, + 49, 37, 37, 37, 37, 59, 69, 68, 60, 60, 52, 59, 33, 38, 93, 110, + 134, 170, 143, 122, 120, 135, 123, 69, 64, 67, 88, 97, 77, 55, 56, 61, + 61, 57, 60, 73, 135, 171, 115, 116, 118, 119, 115, 104, 99, 99, 103, 107, + 116, 118, 119, 114, 112, 118, 116, 93, 60, 59, 57, 46, 49, 56, 49, 57, + 63, 61, 67, 55, 55, 55, 51, 87, 91, 96, 99, 106, 111, 108, 53, 122, + 127, 100, 92, 89, 91, 85, 80, 95, 111, 38, 84, 65, 55, 51, 46, 46, + 34, 33, 34, 28, 32, 17, 22, 21, 18, 18, 21, 22, 24, 22, 26, 29, + 30, 64, 29, 36, 64, 71, 77, 73, 81, 93, 128, 108, 116, 111, 132, 142, + 130, 142, 142, 136, 130, 127, 110, 63, 48, 102, 144, 147, 116, 112, 97, 83, + 75, 69, 26, 25, 20, 18, 18, 18, 18, 17, 18, 20, 21, 21, 24, 28, + 29, 32, 30, 34, 41, 46, 49, 57, 63, 95, 99, 112, 93, 41, 95, 87, + 69, 55, 52, 48, 44, 46, 46, 40, 38, 29, 25, 44, 72, 71, 79, 111, + 122, 120, 130, 119, 79, 25, 84, 130, 130, 99, 77, 79, 80, 67, 67, 26, + 18, 2, 9, 9, 34, 20, 17, 18, 36, 28, 29, 29, 42, 61, 91, 126, + 175, 174, 124, 131, 144, 138, 135, 138, 136, 136, 134, 132, 132, 131, 130, 128, + 126, 120, 119, 106, 112, 102, 55, 24, 21, 16, 16, 17, 20, 24, 26, 45, + 38, 44, 71, 80, 87, 92, 95, 88, 84, 69, 65, 32, 29, 20, 10, 36, + 36, 37, 52, 55, 91, 93, 85, 85, 28, 103, 157, 209, 234, 220, 222, 213, + 163, 136, 111, 110, 104, 96, 95, 91, 49, 64, 55, 61, 59, 51, 46, 51, + 49, 52, 71, 75, 102, 182, 178, 115, 103, 114, 128, 139, 142, 147, 148, 146, + 146, 139, 120, 75, 26, 26, 26, 32, 24, 10, 9, 12, 6, 5, 4, 6, + 2, 1, 1, 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 9, 20, 20, + 22, 22, 22, 28, 29, 37, 40, 46, 61, 26, 60, 79, 76, 59, 59, 69, + 67, 51, 53, 61, 26, 6, 13, 52, 56, 48, 42, 56, 60, 48, 44, 63, + 57, 12, 4, 30, 71, 71, 32, 21, 17, 14, 13, 20, 44, 32, 25, 37, + 30, 45, 44, 49, 53, 55, 53, 48, 22, 63, 67, 75, 69, 44, 20, 17, + 25, 17, 33, 36, 46, 29, 72, 45, 44, 48, 42, 56, 64, 59, 65, 51, + 20, 60, 67, 71, 67, 40, 34, 36, 20, 25, 25, 17, 22, 36, 34, 25, + 28, 25, 24, 21, 20, 21, 17, 10, 12, 13, 4, 2, 2, 1, 1, 1, + 1, 0, 0, 0, 2, 5, 1, 5, 2, 5, 9, 8, 14, 18, 22, 22, + 13, 2, 18, 14, 16, 13, 12, 12, 13, 12, 10, 10, 12, 0, 4, 4, + 4, 4, 2, 2, 1, 1, 1, 1, 1, 2, 2, 4, 1, 1, 1, 173, + 165, 163, 159, 158, 161, 154, 127, 138, 181, 232, 241, 241, 241, 240, 191, 127, + 114, 123, 128, 110, 102, 108, 126, 139, 132, 115, 55, 36, 33, 30, 33, 48, + 60, 52, 48, 45, 52, 68, 76, 93, 95, 97, 107, 128, 174, 159, 127, 122, + 136, 122, 71, 64, 65, 87, 100, 61, 65, 128, 143, 144, 138, 143, 144, 143, + 182, 154, 116, 110, 103, 97, 103, 114, 118, 127, 132, 135, 134, 139, 138, 131, + 116, 114, 60, 55, 52, 45, 44, 42, 46, 46, 45, 45, 55, 56, 81, 96, + 112, 124, 140, 143, 146, 153, 144, 143, 115, 69, 138, 144, 123, 112, 116, 122, + 110, 100, 99, 110, 37, 42, 46, 71, 71, 81, 120, 135, 146, 112, 88, 85, + 150, 153, 159, 144, 148, 138, 150, 142, 138, 140, 135, 69, 36, 96, 157, 151, + 159, 153, 131, 122, 134, 154, 126, 143, 128, 128, 107, 131, 147, 144, 128, 134, + 127, 143, 75, 45, 110, 157, 146, 144, 161, 159, 162, 165, 150, 139, 81, 41, + 120, 136, 135, 136, 135, 138, 144, 138, 136, 138, 135, 127, 127, 134, 134, 139, + 132, 130, 124, 87, 72, 73, 64, 93, 37, 53, 56, 87, 97, 96, 103, 118, + 110, 103, 93, 83, 51, 111, 142, 144, 143, 142, 144, 142, 138, 134, 122, 84, + 30, 102, 134, 135, 128, 130, 128, 128, 124, 95, 77, 69, 6, 75, 96, 97, + 91, 96, 104, 104, 103, 108, 108, 48, 57, 102, 123, 197, 182, 132, 122, 128, + 147, 146, 143, 147, 155, 157, 155, 155, 155, 147, 144, 122, 116, 106, 126, 111, + 93, 36, 24, 18, 17, 22, 25, 29, 40, 46, 51, 40, 61, 100, 103, 118, + 124, 127, 119, 116, 106, 100, 95, 81, 60, 8, 100, 108, 108, 106, 55, 55, + 52, 87, 83, 21, 116, 178, 216, 218, 225, 210, 148, 119, 110, 102, 92, 93, + 89, 95, 55, 38, 72, 69, 79, 83, 89, 79, 81, 79, 83, 88, 116, 103, + 191, 187, 153, 111, 110, 118, 139, 148, 144, 148, 151, 146, 135, 123, 71, 25, + 32, 32, 37, 22, 24, 65, 73, 72, 76, 71, 76, 67, 106, 92, 61, 64, + 115, 99, 118, 124, 123, 128, 126, 118, 131, 131, 127, 120, 99, 102, 119, 120, + 112, 111, 116, 112, 110, 83, 64, 37, 9, 68, 100, 91, 79, 76, 59, 45, + 44, 17, 26, 26, 29, 5, 4, 17, 4, 4, 1, 10, 0, 2, 1, 5, + 4, 1, 4, 1, 0, 0, 1, 1, 0, 0, 0, 2, 0, 6, 20, 17, + 22, 30, 46, 61, 38, 32, 53, 10, 30, 75, 87, 93, 89, 88, 92, 96, + 100, 67, 49, 24, 67, 79, 83, 92, 85, 77, 75, 69, 56, 56, 48, 63, + 48, 64, 72, 60, 67, 67, 79, 76, 79, 81, 51, 20, 72, 69, 52, 80, + 76, 72, 67, 57, 45, 38, 30, 21, 21, 8, 14, 33, 28, 45, 46, 48, + 34, 30, 25, 10, 13, 28, 79, 88, 69, 75, 80, 76, 68, 71, 48, 53, + 64, 71, 73, 84, 83, 76, 33, 10, 5, 4, 10, 4, 2, 9, 9, 5, + 6, 9, 8, 5, 5, 4, 2, 2, 9, 21, 25, 29, 20, 30, 45, 55, + 40, 25, 18, 4, 17, 69, 85, 71, 72, 83, 155, 158, 158, 161, 155, 154, + 132, 150, 179, 229, 237, 241, 241, 238, 183, 126, 116, 124, 132, 107, 104, 118, + 130, 146, 142, 131, 88, 40, 34, 32, 34, 48, 63, 60, 51, 60, 114, 115, + 112, 115, 115, 102, 107, 104, 112, 174, 181, 150, 120, 126, 115, 65, 61, 64, + 87, 93, 56, 110, 155, 166, 166, 159, 153, 146, 134, 194, 178, 134, 108, 97, + 110, 119, 132, 136, 139, 144, 146, 151, 148, 143, 134, 122, 102, 53, 51, 45, + 42, 46, 63, 68, 65, 71, 69, 75, 80, 136, 153, 158, 157, 154, 157, 150, + 138, 135, 120, 120, 51, 138, 136, 126, 122, 115, 126, 128, 126, 96, 118, 38, + 107, 147, 150, 157, 154, 159, 128, 158, 127, 159, 126, 116, 140, 143, 144, 148, + 139, 139, 140, 132, 148, 150, 83, 32, 126, 155, 158, 153, 154, 154, 148, 134, + 128, 146, 142, 95, 123, 144, 151, 151, 142, 148, 151, 139, 143, 77, 64, 130, + 159, 155, 134, 153, 150, 151, 143, 150, 159, 110, 42, 151, 161, 161, 115, 108, + 107, 108, 118, 119, 112, 139, 124, 87, 96, 114, 139, 120, 123, 123, 127, 136, + 123, 83, 100, 33, 76, 126, 138, 140, 138, 140, 135, 135, 134, 106, 85, 45, + 110, 142, 134, 131, 130, 128, 128, 128, 112, 126, 93, 30, 96, 132, 136, 131, + 124, 130, 131, 128, 123, 95, 69, 21, 122, 144, 142, 110, 106, 100, 123, 108, + 102, 107, 63, 56, 103, 120, 191, 202, 162, 119, 122, 143, 144, 158, 162, 171, + 175, 171, 174, 166, 159, 153, 118, 108, 126, 123, 112, 84, 29, 20, 17, 25, + 32, 34, 38, 49, 51, 59, 44, 83, 108, 124, 120, 116, 108, 112, 107, 114, + 115, 116, 96, 67, 8, 95, 106, 120, 114, 110, 103, 104, 89, 83, 21, 118, + 189, 218, 224, 217, 162, 123, 111, 97, 104, 87, 84, 100, 102, 45, 36, 63, + 52, 63, 60, 64, 67, 69, 59, 92, 126, 111, 115, 195, 193, 181, 112, 107, + 116, 139, 151, 151, 157, 155, 146, 136, 120, 56, 29, 21, 29, 37, 29, 44, + 93, 112, 99, 92, 89, 89, 89, 91, 91, 84, 87, 96, 120, 114, 115, 111, + 115, 96, 100, 122, 135, 107, 99, 103, 83, 99, 95, 99, 96, 96, 93, 93, + 96, 93, 42, 9, 67, 106, 99, 100, 83, 87, 80, 84, 61, 61, 46, 26, + 20, 104, 107, 83, 81, 83, 73, 68, 71, 60, 33, 9, 33, 106, 97, 76, + 80, 97, 96, 89, 75, 95, 80, 30, 5, 37, 73, 71, 34, 38, 42, 46, + 49, 37, 12, 57, 110, 103, 100, 87, 85, 73, 79, 65, 64, 53, 25, 73, + 87, 89, 80, 71, 68, 65, 63, 69, 77, 71, 61, 64, 75, 80, 81, 73, + 79, 88, 85, 75, 72, 52, 21, 71, 73, 71, 59, 61, 64, 68, 72, 71, + 60, 33, 36, 18, 55, 63, 55, 60, 48, 38, 16, 33, 37, 20, 13, 6, + 61, 79, 75, 67, 71, 67, 77, 61, 68, 60, 53, 52, 51, 67, 63, 56, + 59, 60, 57, 63, 55, 52, 42, 42, 71, 73, 84, 76, 87, 84, 76, 76, + 60, 67, 64, 68, 51, 53, 53, 64, 67, 38, 53, 40, 51, 32, 8, 56, + 87, 88, 63, 44, 29, 161, 161, 162, 155, 151, 138, 153, 151, 212, 233, 237, + 238, 238, 194, 130, 116, 127, 138, 115, 104, 131, 140, 148, 143, 139, 119, 61, + 34, 32, 36, 51, 64, 67, 52, 56, 115, 127, 128, 126, 123, 148, 148, 111, + 116, 116, 158, 186, 167, 124, 122, 108, 64, 59, 61, 87, 95, 67, 140, 170, + 158, 162, 150, 154, 155, 139, 198, 182, 167, 108, 97, 114, 126, 138, 144, 151, + 147, 151, 150, 153, 147, 128, 122, 73, 51, 45, 42, 64, 69, 76, 77, 76, + 87, 85, 73, 120, 165, 166, 159, 158, 143, 151, 135, 127, 136, 114, 119, 56, + 131, 143, 135, 120, 123, 123, 126, 132, 99, 119, 40, 114, 146, 143, 142, 162, + 130, 144, 153, 128, 142, 99, 132, 158, 155, 148, 148, 143, 146, 144, 147, 144, + 144, 75, 33, 139, 151, 151, 146, 153, 155, 144, 143, 144, 140, 127, 87, 118, + 148, 159, 148, 148, 150, 148, 138, 142, 75, 48, 123, 151, 158, 151, 147, 134, + 148, 135, 151, 140, 140, 49, 135, 130, 167, 155, 162, 161, 157, 158, 154, 148, + 131, 122, 81, 138, 150, 143, 148, 142, 142, 142, 130, 128, 107, 106, 38, 104, + 142, 138, 130, 126, 127, 119, 116, 127, 119, 87, 45, 106, 132, 136, 126, 132, + 127, 124, 127, 128, 119, 95, 37, 100, 112, 136, 122, 122, 126, 116, 132, 132, + 96, 76, 0, 120, 126, 135, 135, 142, 138, 127, 138, 110, 112, 68, 51, 104, + 126, 190, 214, 197, 132, 116, 132, 147, 155, 163, 177, 179, 178, 177, 179, 170, + 157, 119, 119, 135, 126, 114, 85, 26, 20, 20, 33, 44, 53, 52, 49, 56, + 55, 41, 95, 114, 122, 116, 104, 104, 103, 110, 102, 104, 110, 107, 67, 8, + 107, 110, 108, 104, 102, 104, 89, 61, 85, 29, 111, 193, 214, 226, 201, 124, + 108, 102, 106, 87, 85, 107, 107, 91, 46, 37, 40, 69, 65, 60, 57, 73, + 68, 55, 96, 124, 119, 114, 199, 205, 193, 111, 103, 115, 127, 142, 148, 153, + 159, 150, 135, 122, 61, 26, 18, 36, 49, 21, 56, 106, 92, 95, 95, 97, + 95, 102, 97, 80, 75, 79, 112, 131, 122, 111, 108, 100, 110, 104, 115, 118, + 116, 110, 77, 100, 115, 119, 119, 124, 120, 119, 106, 91, 57, 44, 12, 79, + 102, 99, 100, 99, 96, 79, 81, 77, 71, 49, 28, 73, 107, 95, 92, 92, + 89, 99, 93, 77, 80, 37, 6, 84, 104, 83, 76, 87, 91, 83, 84, 89, + 79, 75, 37, 6, 59, 64, 48, 32, 45, 28, 41, 53, 26, 12, 48, 110, + 91, 87, 68, 67, 65, 68, 69, 97, 52, 28, 65, 75, 65, 89, 97, 83, + 71, 77, 60, 67, 59, 37, 67, 83, 92, 91, 88, 102, 84, 89, 55, 81, + 55, 24, 68, 67, 71, 63, 49, 46, 51, 57, 52, 71, 42, 37, 5, 60, + 63, 63, 59, 34, 45, 33, 32, 34, 36, 13, 9, 77, 75, 46, 55, 49, + 56, 65, 71, 71, 61, 68, 29, 59, 52, 64, 56, 55, 55, 45, 41, 52, + 67, 22, 75, 84, 75, 75, 79, 69, 61, 69, 75, 72, 67, 30, 34, 60, + 84, 67, 68, 59, 45, 28, 56, 56, 40, 5, 64, 85, 64, 56, 28, 13, + 155, 153, 154, 163, 132, 147, 153, 175, 233, 233, 238, 240, 218, 150, 122, 123, + 136, 132, 106, 123, 147, 154, 150, 144, 135, 93, 41, 30, 30, 40, 52, 68, + 67, 30, 53, 122, 135, 150, 146, 140, 142, 140, 123, 115, 120, 138, 193, 182, + 132, 124, 100, 63, 57, 60, 87, 99, 83, 106, 167, 159, 159, 159, 157, 161, + 146, 204, 194, 179, 102, 99, 114, 134, 142, 153, 150, 159, 151, 148, 153, 140, + 127, 124, 53, 45, 42, 41, 69, 83, 81, 79, 87, 87, 81, 92, 148, 163, + 163, 158, 139, 146, 142, 139, 132, 131, 127, 114, 53, 128, 134, 139, 132, 131, + 126, 116, 116, 100, 115, 33, 124, 142, 161, 132, 139, 140, 132, 140, 143, 140, + 97, 127, 159, 154, 150, 151, 157, 151, 153, 144, 135, 135, 80, 40, 118, 155, + 144, 155, 142, 118, 146, 144, 140, 140, 130, 81, 126, 143, 158, 147, 158, 151, + 140, 143, 139, 75, 48, 122, 151, 148, 146, 143, 144, 134, 131, 140, 144, 151, + 55, 93, 157, 119, 147, 154, 142, 161, 154, 143, 151, 140, 107, 77, 140, 147, + 134, 127, 126, 122, 135, 139, 128, 124, 106, 45, 124, 138, 134, 136, 123, 112, + 114, 120, 127, 106, 83, 28, 111, 132, 127, 135, 127, 126, 130, 127, 127, 108, + 96, 49, 92, 119, 135, 131, 131, 116, 130, 124, 126, 92, 67, 0, 116, 131, + 132, 132, 138, 126, 146, 144, 143, 131, 72, 60, 106, 127, 190, 206, 197, 132, + 115, 128, 143, 147, 159, 177, 182, 183, 182, 174, 170, 151, 119, 132, 138, 130, + 122, 69, 25, 20, 24, 49, 55, 52, 49, 53, 61, 64, 48, 100, 122, 123, + 106, 111, 115, 112, 107, 106, 106, 107, 89, 68, 8, 106, 93, 114, 110, 108, + 103, 87, 64, 80, 24, 116, 187, 210, 222, 179, 118, 108, 99, 99, 87, 91, + 115, 107, 93, 45, 32, 33, 52, 64, 69, 59, 68, 68, 46, 91, 122, 108, + 120, 199, 198, 198, 110, 102, 110, 119, 134, 140, 155, 162, 154, 138, 115, 59, + 29, 18, 25, 51, 25, 57, 106, 108, 93, 91, 85, 85, 76, 85, 76, 68, + 24, 104, 127, 118, 106, 104, 103, 114, 118, 119, 104, 120, 107, 76, 106, 116, + 126, 118, 110, 102, 93, 102, 96, 97, 46, 12, 76, 83, 103, 89, 84, 72, + 80, 83, 88, 99, 52, 25, 91, 107, 79, 87, 75, 91, 95, 97, 87, 80, + 41, 6, 97, 103, 87, 79, 91, 102, 97, 96, 99, 87, 87, 38, 5, 64, + 55, 30, 33, 48, 26, 28, 40, 34, 9, 49, 93, 92, 67, 81, 83, 67, + 68, 71, 63, 65, 24, 59, 79, 69, 88, 72, 60, 67, 59, 71, 71, 63, + 41, 87, 75, 72, 67, 77, 85, 95, 77, 75, 69, 53, 25, 65, 65, 79, + 67, 55, 57, 53, 57, 60, 67, 60, 36, 28, 46, 71, 61, 41, 38, 57, + 32, 42, 26, 24, 13, 10, 38, 75, 71, 46, 49, 46, 45, 36, 46, 41, + 32, 26, 67, 59, 65, 48, 44, 41, 37, 40, 41, 65, 28, 76, 80, 76, + 59, 63, 52, 51, 57, 51, 48, 36, 33, 36, 61, 56, 51, 45, 36, 25, + 38, 38, 46, 44, 5, 28, 88, 57, 57, 14, 0, 171, 169, 165, 150, 135, + 150, 157, 208, 232, 241, 236, 229, 169, 128, 122, 134, 139, 122, 110, 144, 159, + 159, 151, 143, 124, 65, 33, 28, 34, 46, 65, 69, 67, 30, 108, 134, 134, + 146, 140, 144, 148, 143, 122, 118, 112, 132, 199, 193, 165, 123, 97, 61, 55, + 59, 81, 99, 73, 92, 169, 161, 158, 159, 157, 154, 142, 209, 199, 178, 102, + 103, 116, 128, 143, 151, 154, 154, 150, 151, 153, 138, 123, 123, 49, 41, 40, + 68, 79, 83, 87, 91, 87, 87, 80, 89, 154, 161, 162, 144, 143, 140, 146, + 139, 135, 127, 123, 123, 65, 139, 132, 124, 131, 126, 138, 111, 120, 97, 115, + 30, 122, 134, 142, 126, 143, 128, 148, 114, 140, 134, 89, 130, 158, 150, 153, + 153, 154, 157, 148, 147, 146, 134, 80, 33, 124, 148, 147, 155, 153, 150, 144, + 148, 135, 142, 127, 84, 123, 142, 143, 148, 158, 147, 135, 140, 132, 81, 46, + 127, 154, 157, 151, 143, 142, 140, 135, 135, 135, 151, 73, 60, 155, 162, 162, + 154, 154, 155, 148, 151, 159, 144, 119, 75, 136, 144, 138, 136, 143, 131, 127, + 126, 132, 114, 108, 44, 111, 140, 123, 126, 122, 116, 126, 116, 122, 110, 84, + 29, 104, 128, 127, 142, 124, 122, 120, 115, 111, 120, 97, 52, 95, 130, 134, + 138, 123, 126, 124, 128, 122, 96, 77, 10, 123, 124, 122, 139, 140, 128, 134, + 142, 146, 122, 65, 68, 107, 120, 163, 214, 202, 136, 111, 123, 143, 147, 159, + 173, 171, 174, 178, 179, 169, 132, 115, 134, 142, 131, 122, 51, 22, 20, 37, + 49, 56, 53, 55, 60, 73, 60, 55, 102, 123, 114, 112, 107, 108, 103, 108, + 111, 100, 104, 87, 63, 6, 88, 111, 107, 107, 104, 104, 77, 67, 85, 29, + 120, 199, 210, 216, 153, 118, 100, 107, 91, 81, 103, 108, 111, 93, 44, 32, + 34, 41, 65, 71, 72, 65, 75, 46, 88, 123, 118, 122, 199, 206, 202, 108, + 97, 106, 120, 126, 135, 154, 161, 155, 139, 110, 59, 32, 21, 29, 38, 29, + 52, 96, 99, 92, 87, 97, 87, 87, 88, 77, 65, 61, 122, 128, 122, 111, + 119, 112, 116, 116, 104, 103, 116, 99, 79, 108, 122, 119, 110, 103, 97, 97, + 103, 96, 95, 48, 13, 75, 99, 95, 81, 83, 84, 85, 79, 88, 73, 51, + 25, 55, 99, 76, 84, 87, 95, 87, 100, 91, 73, 44, 9, 55, 103, 79, + 88, 79, 88, 83, 81, 80, 76, 83, 36, 10, 60, 46, 38, 40, 51, 24, + 28, 30, 25, 10, 51, 97, 91, 76, 91, 99, 85, 68, 69, 71, 51, 28, + 56, 88, 69, 83, 71, 56, 64, 81, 68, 76, 65, 37, 87, 83, 80, 77, + 93, 89, 77, 51, 76, 71, 53, 26, 64, 61, 80, 87, 76, 71, 68, 72, + 61, 57, 41, 38, 28, 56, 72, 48, 46, 32, 48, 37, 55, 24, 20, 10, + 9, 40, 79, 73, 51, 42, 41, 42, 44, 42, 36, 34, 26, 64, 40, 59, + 57, 48, 44, 34, 36, 49, 42, 16, 57, 77, 69, 56, 48, 44, 45, 51, + 37, 56, 40, 22, 32, 65, 59, 63, 51, 46, 20, 42, 41, 42, 30, 6, + 29, 69, 57, 26, 1, 0, 171, 161, 163, 131, 146, 155, 179, 226, 234, 236, + 236, 193, 128, 124, 131, 139, 132, 108, 124, 155, 162, 157, 148, 138, 106, 42, + 29, 29, 38, 52, 57, 68, 71, 30, 124, 138, 138, 147, 146, 151, 150, 143, + 126, 124, 112, 120, 199, 197, 174, 123, 96, 61, 55, 57, 85, 96, 88, 81, + 165, 162, 159, 158, 155, 155, 136, 212, 201, 174, 106, 100, 114, 127, 139, 139, + 153, 148, 153, 153, 147, 131, 120, 123, 46, 38, 36, 69, 85, 77, 83, 97, + 95, 91, 85, 85, 154, 163, 158, 142, 136, 148, 131, 135, 143, 130, 120, 123, + 53, 134, 132, 136, 146, 142, 142, 118, 118, 95, 120, 40, 122, 138, 158, 143, + 138, 142, 123, 132, 139, 139, 92, 131, 154, 147, 154, 153, 157, 146, 140, 143, + 140, 136, 87, 34, 119, 147, 143, 155, 159, 154, 146, 144, 139, 139, 123, 76, + 124, 136, 135, 146, 153, 157, 154, 153, 131, 76, 48, 116, 154, 155, 154, 142, + 139, 140, 151, 130, 142, 148, 118, 61, 140, 158, 143, 142, 131, 150, 158, 159, + 138, 132, 108, 80, 139, 144, 124, 132, 131, 127, 126, 143, 134, 106, 108, 51, + 107, 123, 132, 123, 122, 114, 114, 128, 126, 107, 87, 40, 115, 131, 131, 147, + 131, 132, 118, 124, 135, 123, 110, 55, 97, 132, 123, 119, 123, 122, 114, 118, + 122, 97, 76, 10, 115, 126, 120, 128, 131, 130, 116, 130, 126, 103, 80, 67, + 95, 127, 155, 213, 213, 158, 107, 112, 140, 148, 162, 173, 178, 183, 178, 169, + 163, 123, 128, 143, 138, 132, 119, 32, 22, 17, 34, 53, 57, 55, 61, 68, + 68, 67, 56, 102, 120, 119, 114, 116, 104, 116, 108, 112, 100, 106, 97, 65, + 8, 97, 92, 102, 132, 103, 103, 100, 69, 80, 26, 114, 190, 214, 214, 142, + 106, 96, 97, 84, 89, 108, 108, 112, 106, 38, 29, 28, 37, 63, 72, 68, + 57, 73, 49, 93, 130, 112, 127, 204, 208, 201, 107, 100, 107, 111, 123, 138, + 151, 162, 158, 142, 123, 56, 30, 30, 26, 42, 33, 52, 95, 96, 91, 83, + 95, 68, 80, 102, 69, 69, 64, 123, 122, 108, 99, 108, 112, 120, 99, 95, + 103, 118, 91, 73, 104, 126, 111, 97, 103, 89, 95, 88, 103, 107, 49, 14, + 72, 93, 100, 79, 81, 84, 73, 80, 71, 76, 52, 25, 71, 95, 68, 81, + 84, 87, 100, 99, 81, 81, 45, 10, 53, 99, 79, 77, 77, 79, 75, 76, + 95, 79, 76, 40, 9, 72, 51, 34, 41, 49, 26, 24, 25, 20, 9, 65, + 100, 87, 95, 103, 104, 91, 76, 75, 69, 51, 29, 55, 93, 77, 81, 72, + 55, 56, 67, 57, 73, 68, 26, 91, 76, 80, 72, 83, 73, 57, 51, 80, + 65, 53, 29, 65, 63, 77, 57, 64, 67, 63, 65, 65, 53, 44, 37, 12, + 46, 72, 67, 30, 29, 46, 30, 44, 46, 36, 12, 9, 34, 77, 69, 41, + 48, 34, 38, 37, 40, 30, 30, 24, 59, 72, 46, 46, 44, 55, 42, 34, + 44, 52, 21, 59, 67, 61, 52, 33, 32, 42, 59, 45, 42, 25, 28, 42, + 60, 69, 40, 29, 34, 29, 40, 28, 49, 32, 9, 38, 60, 44, 30, 0, + 0, 183, 163, 148, 131, 150, 155, 206, 229, 236, 232, 222, 159, 124, 123, 136, + 142, 132, 112, 143, 161, 161, 155, 148, 135, 84, 34, 26, 30, 46, 55, 72, + 67, 71, 34, 130, 138, 146, 143, 148, 154, 148, 140, 127, 128, 116, 126, 199, + 199, 185, 120, 100, 64, 55, 57, 89, 99, 89, 67, 158, 165, 157, 166, 158, + 159, 147, 213, 194, 177, 108, 103, 114, 127, 135, 139, 147, 151, 153, 153, 136, + 128, 116, 119, 45, 36, 36, 72, 91, 95, 85, 84, 92, 93, 79, 103, 154, + 162, 147, 143, 139, 144, 144, 147, 136, 138, 115, 120, 56, 136, 136, 130, 131, + 136, 138, 111, 116, 95, 110, 38, 123, 142, 143, 127, 138, 131, 136, 132, 122, + 134, 89, 130, 153, 157, 154, 157, 147, 144, 146, 143, 138, 132, 83, 33, 116, + 142, 143, 139, 147, 148, 143, 142, 139, 135, 120, 67, 114, 139, 154, 148, 155, + 147, 143, 131, 143, 72, 51, 106, 153, 150, 150, 139, 144, 148, 140, 130, 140, + 144, 114, 48, 111, 157, 161, 132, 143, 157, 146, 139, 144, 131, 95, 85, 138, + 142, 124, 130, 139, 130, 130, 116, 130, 130, 107, 55, 112, 132, 128, 131, 130, + 112, 111, 111, 123, 116, 88, 44, 115, 136, 122, 126, 134, 120, 130, 131, 132, + 122, 106, 56, 99, 116, 130, 120, 120, 119, 126, 122, 115, 99, 79, 0, 127, + 127, 116, 99, 132, 127, 136, 134, 127, 110, 77, 59, 89, 130, 120, 214, 217, + 183, 110, 111, 135, 146, 158, 170, 174, 174, 173, 175, 153, 124, 134, 148, 139, + 131, 119, 29, 22, 20, 33, 59, 65, 63, 71, 83, 71, 63, 57, 91, 119, + 118, 120, 104, 114, 108, 107, 112, 97, 103, 100, 68, 9, 96, 99, 102, 103, + 130, 115, 106, 69, 79, 21, 103, 181, 208, 233, 153, 106, 91, 97, 83, 103, + 110, 110, 115, 91, 37, 32, 25, 38, 57, 71, 73, 60, 72, 45, 99, 120, + 116, 136, 210, 216, 199, 102, 95, 106, 118, 124, 140, 150, 163, 158, 142, 132, + 57, 36, 18, 30, 46, 36, 48, 95, 95, 92, 96, 87, 81, 87, 76, 85, + 57, 53, 110, 118, 116, 110, 114, 96, 92, 106, 100, 110, 112, 77, 84, 111, + 124, 106, 95, 97, 97, 89, 103, 96, 93, 51, 17, 77, 88, 92, 73, 88, + 75, 83, 79, 76, 65, 53, 24, 75, 104, 69, 76, 87, 89, 91, 92, 71, + 81, 46, 8, 57, 97, 83, 87, 83, 77, 83, 99, 71, 72, 73, 37, 9, + 59, 44, 36, 45, 46, 41, 22, 18, 14, 10, 57, 96, 77, 96, 93, 93, + 89, 99, 95, 72, 48, 28, 61, 84, 59, 85, 67, 56, 59, 67, 67, 76, + 64, 25, 83, 84, 92, 73, 76, 71, 59, 49, 48, 60, 52, 28, 46, 59, + 75, 71, 67, 67, 59, 67, 64, 67, 42, 37, 8, 45, 81, 63, 51, 26, + 42, 37, 41, 22, 28, 10, 9, 36, 76, 71, 53, 53, 40, 38, 37, 36, + 34, 46, 22, 49, 55, 30, 37, 37, 32, 40, 37, 38, 51, 29, 68, 77, + 75, 61, 26, 52, 48, 49, 38, 46, 34, 25, 46, 55, 36, 57, 33, 21, + 30, 29, 29, 24, 14, 8, 38, 55, 49, 21, 0, 0, 157, 170, 150, 142, + 151, 170, 221, 233, 229, 232, 182, 135, 124, 134, 139, 142, 122, 126, 158, 163, + 161, 154, 144, 127, 52, 30, 26, 33, 48, 68, 72, 72, 72, 33, 138, 136, + 144, 142, 151, 146, 144, 142, 131, 126, 111, 146, 199, 197, 191, 124, 97, 64, + 56, 57, 87, 95, 85, 64, 161, 158, 162, 162, 161, 157, 146, 217, 191, 189, + 110, 102, 112, 123, 132, 140, 144, 147, 153, 146, 135, 128, 114, 116, 42, 34, + 33, 71, 96, 91, 93, 91, 99, 92, 80, 107, 161, 162, 148, 143, 150, 154, + 142, 144, 147, 134, 116, 116, 56, 132, 131, 132, 135, 115, 118, 119, 111, 96, + 107, 36, 126, 148, 150, 139, 139, 144, 116, 140, 134, 135, 83, 139, 155, 155, + 148, 146, 150, 146, 147, 146, 140, 99, 95, 38, 112, 135, 146, 144, 140, 146, + 143, 139, 140, 136, 123, 60, 128, 135, 150, 150, 151, 148, 144, 150, 140, 71, + 51, 99, 139, 150, 148, 127, 146, 144, 127, 139, 139, 128, 120, 64, 108, 154, + 162, 158, 128, 144, 123, 139, 134, 124, 69, 100, 135, 140, 135, 131, 119, 115, + 120, 114, 116, 127, 110, 60, 89, 122, 132, 111, 100, 111, 120, 112, 114, 100, + 89, 22, 112, 127, 126, 122, 120, 112, 120, 128, 123, 118, 107, 63, 68, 112, + 128, 130, 132, 130, 130, 128, 114, 92, 71, 0, 119, 122, 115, 118, 111, 136, + 134, 131, 103, 134, 83, 73, 61, 127, 118, 220, 222, 216, 111, 111, 134, 151, + 154, 158, 175, 177, 174, 174, 142, 128, 150, 151, 139, 130, 119, 29, 22, 17, + 38, 64, 60, 68, 72, 81, 76, 72, 63, 83, 115, 116, 115, 114, 115, 115, + 112, 108, 106, 103, 99, 63, 10, 93, 89, 87, 102, 138, 106, 100, 69, 76, + 16, 84, 136, 189, 234, 159, 106, 100, 100, 102, 110, 106, 112, 106, 63, 36, + 30, 26, 38, 57, 72, 72, 68, 71, 36, 93, 116, 112, 131, 209, 208, 205, + 104, 96, 108, 120, 131, 140, 150, 161, 161, 151, 139, 59, 33, 17, 25, 42, + 33, 37, 89, 88, 96, 91, 89, 92, 84, 75, 80, 56, 16, 107, 120, 102, + 92, 99, 104, 106, 107, 108, 112, 114, 77, 88, 116, 107, 88, 111, 91, 88, + 91, 92, 96, 91, 55, 17, 69, 93, 97, 80, 75, 77, 79, 75, 85, 85, + 57, 21, 91, 97, 75, 79, 87, 85, 87, 88, 72, 69, 51, 5, 61, 89, + 84, 81, 80, 97, 96, 73, 69, 68, 79, 36, 8, 71, 48, 33, 30, 29, + 46, 18, 20, 16, 10, 51, 89, 87, 89, 88, 102, 84, 80, 76, 69, 56, + 26, 57, 87, 76, 79, 59, 56, 65, 68, 60, 80, 65, 28, 81, 76, 93, + 65, 65, 88, 59, 49, 56, 48, 53, 29, 37, 65, 55, 67, 88, 77, 63, + 63, 71, 63, 44, 37, 32, 46, 81, 49, 30, 38, 40, 25, 13, 14, 14, + 14, 10, 30, 49, 67, 49, 44, 48, 42, 40, 37, 36, 26, 20, 37, 36, + 34, 33, 36, 33, 44, 37, 41, 26, 25, 72, 75, 72, 68, 33, 53, 36, + 34, 56, 28, 36, 29, 51, 37, 26, 28, 18, 29, 13, 14, 9, 21, 12, + 9, 25, 55, 14, 14, 2, 0, 167, 155, 128, 146, 154, 185, 218, 233, 228, + 218, 148, 136, 132, 136, 142, 140, 114, 144, 166, 165, 161, 153, 143, 120, 44, + 29, 26, 37, 49, 55, 55, 73, 69, 30, 135, 135, 150, 146, 144, 143, 144, + 135, 128, 132, 107, 155, 198, 201, 185, 122, 95, 64, 56, 60, 88, 102, 96, + 76, 136, 171, 158, 158, 161, 155, 144, 221, 193, 198, 111, 103, 112, 123, 132, + 143, 148, 150, 150, 132, 131, 130, 118, 122, 40, 32, 32, 76, 93, 87, 92, + 87, 103, 93, 76, 114, 154, 158, 146, 115, 116, 132, 140, 126, 123, 127, 123, + 123, 65, 144, 136, 130, 120, 120, 118, 122, 110, 93, 104, 29, 124, 135, 148, + 127, 142, 143, 135, 143, 143, 130, 73, 128, 155, 161, 158, 158, 150, 142, 132, + 140, 112, 100, 91, 41, 99, 124, 128, 107, 120, 138, 132, 112, 122, 130, 116, + 61, 119, 128, 150, 153, 132, 124, 122, 118, 102, 85, 44, 95, 146, 151, 148, + 146, 134, 131, 128, 136, 127, 134, 131, 71, 91, 151, 159, 146, 122, 151, 144, + 134, 127, 118, 69, 83, 132, 139, 132, 126, 115, 118, 112, 114, 112, 120, 110, + 59, 81, 100, 100, 100, 103, 100, 106, 104, 114, 114, 87, 25, 111, 128, 128, + 122, 123, 120, 115, 118, 111, 110, 107, 68, 81, 106, 128, 130, 138, 128, 120, + 127, 91, 96, 83, 8, 116, 120, 112, 119, 100, 122, 127, 130, 119, 124, 69, + 69, 52, 124, 123, 222, 228, 220, 112, 108, 134, 148, 153, 157, 169, 174, 171, + 162, 130, 142, 148, 150, 142, 136, 122, 26, 21, 18, 38, 63, 65, 67, 71, + 79, 79, 75, 64, 72, 110, 118, 120, 108, 112, 114, 107, 107, 103, 96, 83, + 61, 10, 84, 92, 103, 100, 100, 95, 84, 79, 80, 17, 65, 111, 155, 150, + 112, 99, 89, 76, 93, 92, 97, 92, 60, 37, 33, 29, 28, 36, 60, 69, + 72, 67, 71, 37, 97, 115, 104, 103, 202, 217, 213, 104, 95, 108, 122, 131, + 142, 150, 165, 159, 139, 130, 56, 34, 18, 24, 42, 37, 33, 68, 91, 88, + 92, 88, 89, 87, 79, 83, 55, 38, 119, 115, 95, 103, 115, 116, 114, 116, + 112, 116, 108, 73, 95, 123, 102, 103, 103, 92, 93, 102, 95, 96, 87, 55, + 17, 76, 91, 95, 77, 72, 72, 71, 83, 87, 77, 56, 25, 61, 92, 72, + 65, 69, 72, 72, 68, 73, 77, 55, 13, 61, 59, 100, 95, 97, 99, 100, + 65, 75, 72, 75, 44, 14, 60, 37, 32, 25, 36, 30, 40, 21, 20, 10, + 46, 88, 84, 85, 100, 76, 79, 75, 65, 71, 51, 30, 59, 85, 65, 61, + 64, 85, 67, 83, 73, 67, 60, 32, 73, 76, 73, 75, 77, 71, 68, 64, + 52, 63, 57, 36, 34, 51, 63, 56, 44, 40, 40, 52, 46, 44, 42, 37, + 33, 65, 81, 51, 24, 6, 8, 20, 18, 8, 9, 17, 16, 21, 36, 42, + 41, 34, 33, 32, 30, 32, 34, 33, 29, 37, 36, 49, 37, 40, 30, 32, + 34, 34, 29, 33, 45, 67, 79, 53, 34, 30, 29, 32, 26, 22, 22, 26, + 29, 26, 26, 29, 25, 17, 38, 34, 38, 33, 20, 28, 30, 38, 38, 30, + 18, 12, 157, 158, 116, 142, 157, 189, 222, 228, 229, 169, 140, 132, 135, 140, + 146, 138, 119, 158, 169, 166, 159, 151, 139, 107, 38, 28, 25, 36, 48, 69, + 73, 76, 73, 36, 138, 142, 143, 148, 143, 138, 134, 136, 130, 124, 115, 165, + 195, 198, 182, 123, 91, 64, 57, 63, 89, 102, 97, 72, 127, 169, 163, 144, + 161, 153, 140, 221, 199, 210, 111, 104, 112, 127, 140, 139, 143, 142, 134, 123, + 130, 128, 119, 122, 36, 30, 29, 79, 87, 83, 87, 87, 76, 110, 103, 111, + 122, 130, 122, 122, 126, 122, 120, 127, 140, 134, 122, 116, 57, 135, 134, 115, + 110, 114, 116, 111, 103, 104, 114, 45, 126, 142, 143, 132, 127, 124, 112, 130, + 126, 123, 83, 111, 135, 148, 118, 122, 114, 114, 110, 95, 79, 67, 96, 84, + 93, 93, 95, 97, 85, 87, 88, 88, 89, 81, 73, 55, 93, 93, 97, 91, + 77, 79, 84, 85, 73, 72, 88, 87, 126, 138, 132, 112, 128, 132, 136, 120, + 118, 136, 128, 118, 84, 96, 148, 139, 110, 130, 131, 131, 128, 107, 72, 76, + 119, 124, 108, 108, 111, 122, 123, 110, 107, 108, 104, 102, 92, 107, 108, 108, + 95, 104, 88, 107, 100, 110, 91, 38, 119, 112, 112, 112, 112, 111, 110, 112, + 107, 108, 89, 104, 61, 72, 76, 83, 79, 83, 83, 84, 83, 93, 77, 5, + 51, 124, 119, 68, 91, 110, 115, 107, 99, 112, 104, 83, 59, 81, 103, 213, + 229, 220, 107, 104, 128, 143, 148, 147, 154, 167, 169, 161, 135, 153, 155, 154, + 144, 136, 122, 25, 20, 20, 34, 59, 65, 71, 73, 71, 75, 80, 79, 63, + 73, 95, 103, 102, 100, 99, 102, 103, 103, 97, 96, 61, 12, 80, 93, 96, + 85, 88, 76, 77, 77, 77, 32, 49, 68, 87, 108, 79, 48, 41, 30, 29, + 32, 30, 30, 29, 33, 30, 25, 25, 32, 63, 65, 65, 55, 71, 40, 91, + 103, 119, 102, 189, 214, 212, 102, 96, 112, 124, 136, 140, 153, 165, 159, 140, + 128, 51, 36, 37, 22, 44, 42, 34, 42, 64, 72, 71, 79, 76, 85, 76, + 75, 65, 52, 118, 107, 111, 110, 103, 103, 97, 100, 106, 102, 85, 72, 83, + 103, 112, 107, 103, 107, 102, 96, 75, 67, 69, 53, 20, 64, 75, 85, 95, + 102, 85, 92, 83, 72, 53, 59, 24, 64, 84, 89, 80, 79, 77, 75, 65, + 71, 65, 56, 12, 51, 41, 44, 55, 64, 67, 49, 53, 65, 42, 49, 41, + 14, 60, 37, 42, 40, 40, 30, 28, 28, 20, 16, 45, 48, 45, 48, 38, + 57, 68, 71, 71, 61, 46, 36, 36, 67, 59, 68, 55, 61, 60, 65, 59, + 53, 61, 17, 60, 72, 69, 53, 59, 61, 61, 53, 53, 56, 52, 44, 49, + 51, 48, 44, 44, 44, 42, 48, 42, 40, 38, 37, 6, 60, 5, 28, 4, + 25, 6, 9, 24, 22, 9, 13, 18, 20, 20, 20, 21, 21, 21, 22, 24, + 24, 22, 28, 21, 26, 29, 26, 32, 28, 24, 24, 26, 28, 28, 25, 37, + 49, 32, 46, 28, 29, 65, 71, 65, 34, 55, 52, 26, 25, 21, 22, 26, + 24, 25, 20, 17, 14, 16, 20, 41, 18, 17, 56, 60, 71, 104, 106, 111, + 146, 150, 201, 230, 179, 171, 151, 124, 148, 143, 140, 143, 132, 131, 165, 169, + 165, 158, 150, 134, 93, 33, 26, 26, 40, 52, 71, 76, 72, 72, 21, 134, + 136, 136, 136, 108, 119, 126, 118, 132, 130, 116, 175, 202, 195, 182, 119, 89, + 65, 59, 63, 92, 97, 108, 97, 95, 132, 161, 148, 147, 144, 140, 221, 210, + 214, 112, 104, 110, 126, 126, 126, 127, 126, 131, 134, 132, 131, 124, 123, 34, + 29, 30, 69, 76, 81, 89, 91, 87, 96, 91, 97, 110, 110, 99, 106, 107, + 110, 112, 112, 115, 120, 118, 118, 112, 119, 115, 112, 111, 108, 106, 104, 97, + 106, 93, 51, 119, 147, 120, 112, 106, 107, 110, 104, 102, 103, 87, 102, 103, + 99, 99, 93, 89, 84, 85, 81, 77, 65, 53, 32, 33, 30, 30, 29, 26, + 25, 25, 22, 25, 21, 21, 22, 22, 29, 34, 33, 29, 32, 42, 61, 56, + 60, 57, 76, 107, 102, 122, 130, 118, 108, 122, 124, 123, 120, 120, 106, 95, + 107, 96, 91, 77, 64, 63, 63, 73, 63, 51, 69, 73, 81, 80, 79, 107, + 110, 108, 88, 85, 69, 64, 75, 83, 95, 97, 96, 79, 69, 72, 92, 100, + 99, 88, 37, 69, 77, 68, 79, 79, 80, 80, 84, 84, 87, 89, 89, 87, + 93, 67, 67, 57, 40, 29, 26, 36, 42, 33, 0, 26, 26, 38, 34, 40, + 44, 52, 55, 65, 77, 104, 88, 79, 73, 114, 212, 230, 220, 106, 103, 110, + 119, 135, 146, 157, 154, 159, 154, 138, 155, 155, 153, 143, 131, 119, 24, 20, + 18, 26, 36, 52, 51, 60, 65, 68, 71, 67, 67, 83, 85, 88, 85, 88, + 87, 89, 88, 93, 93, 87, 63, 16, 88, 92, 72, 63, 63, 57, 48, 68, + 64, 36, 32, 33, 53, 41, 37, 32, 34, 28, 29, 37, 36, 28, 28, 28, + 29, 38, 40, 40, 41, 44, 44, 45, 71, 36, 53, 56, 68, 104, 178, 217, + 208, 104, 100, 111, 120, 134, 144, 153, 167, 158, 139, 126, 52, 40, 16, 30, + 32, 36, 34, 41, 40, 41, 38, 40, 41, 44, 41, 40, 51, 34, 48, 91, + 91, 79, 77, 87, 89, 80, 77, 80, 77, 73, 77, 76, 77, 79, 85, 73, + 75, 64, 57, 46, 56, 51, 52, 56, 53, 32, 59, 59, 46, 63, 46, 41, + 60, 52, 52, 55, 56, 53, 51, 51, 45, 46, 41, 55, 38, 34, 6, 16, + 14, 24, 24, 21, 22, 29, 26, 28, 36, 51, 33, 22, 33, 32, 24, 26, + 29, 29, 28, 48, 33, 37, 29, 34, 40, 37, 33, 33, 41, 48, 45, 42, + 42, 45, 42, 44, 45, 46, 44, 44, 42, 44, 44, 42, 37, 18, 29, 45, + 32, 33, 33, 45, 32, 33, 34, 40, 38, 32, 30, 37, 34, 33, 32, 30, + 30, 30, 30, 29, 28, 26, 2, 37, 34, 34, 32, 46, 42, 41, 42, 46, + 48, 51, 51, 59, 64, 68, 72, 83, 107, 128, 150, 163, 171, 228, 226, 222, + 209, 202, 205, 199, 204, 191, 187, 178, 162, 80, 36, 32, 29, 29, 22, 73, + 65, 155, 185, 165, 161, 159, 100, 83, 83, 61, 51, 48, 57, 87, 111, 144, + 162, 154, 116, 76, 45, 16, 9, 9, 142, 139, 140, 161, 159, 205, 140, 147, + 130, 124, 127, 135, 132, 143, 148, 140, 139, 169, 170, 162, 154, 140, 128, 55, + 29, 25, 30, 45, 56, 40, 67, 67, 55, 29, 77, 95, 88, 91, 91, 93, + 93, 99, 140, 119, 91, 166, 193, 198, 182, 118, 83, 63, 59, 68, 91, 91, + 95, 96, 102, 108, 106, 112, 114, 150, 118, 225, 218, 218, 111, 102, 108, 123, + 116, 116, 115, 116, 119, 131, 131, 134, 124, 120, 29, 24, 25, 42, 38, 42, + 45, 48, 38, 40, 46, 53, 60, 77, 73, 80, 84, 85, 83, 89, 93, 97, + 102, 96, 87, 100, 106, 99, 104, 110, 116, 146, 132, 92, 99, 110, 108, 95, + 92, 87, 80, 79, 72, 72, 63, 56, 56, 57, 49, 64, 59, 57, 56, 63, + 56, 61, 56, 89, 112, 146, 150, 144, 155, 147, 153, 146, 158, 157, 136, 110, + 111, 107, 116, 136, 136, 120, 110, 93, 73, 60, 51, 42, 29, 29, 25, 25, + 21, 21, 22, 24, 20, 24, 26, 26, 25, 24, 29, 37, 107, 114, 120, 126, + 132, 128, 96, 106, 57, 134, 130, 143, 116, 68, 64, 84, 60, 63, 111, 118, + 124, 114, 115, 123, 128, 123, 112, 103, 92, 84, 60, 59, 84, 40, 22, 21, + 21, 22, 16, 16, 17, 20, 13, 14, 16, 16, 16, 18, 52, 60, 91, 107, + 103, 106, 97, 65, 61, 0, 84, 124, 114, 80, 115, 81, 92, 89, 68, 57, + 55, 63, 60, 63, 106, 201, 216, 208, 95, 92, 103, 104, 99, 112, 130, 147, + 154, 159, 132, 148, 158, 154, 140, 134, 118, 20, 17, 17, 14, 14, 14, 16, + 16, 14, 17, 28, 25, 17, 21, 42, 59, 41, 44, 25, 30, 28, 49, 33, + 71, 24, 16, 92, 48, 38, 37, 37, 33, 40, 32, 26, 29, 26, 28, 29, + 28, 34, 30, 24, 24, 26, 25, 26, 28, 26, 28, 26, 28, 30, 32, 36, + 46, 53, 56, 73, 34, 83, 104, 104, 103, 177, 202, 193, 107, 100, 112, 124, + 132, 142, 155, 166, 159, 136, 111, 46, 42, 14, 24, 17, 22, 6, 6, 6, + 4, 5, 5, 4, 4, 2, 2, 2, 2, 4, 5, 5, 5, 8, 9, 9, + 10, 13, 14, 16, 16, 21, 21, 26, 28, 29, 33, 36, 36, 45, 68, 73, + 64, 57, 63, 49, 49, 52, 48, 44, 48, 49, 55, 71, 76, 85, 77, 72, + 69, 67, 71, 76, 68, 63, 49, 52, 56, 26, 38, 88, 96, 69, 60, 65, + 40, 29, 22, 24, 20, 24, 18, 25, 37, 36, 29, 34, 34, 30, 25, 33, + 38, 42, 55, 46, 48, 42, 45, 40, 36, 28, 24, 21, 22, 18, 20, 18, + 18, 17, 20, 18, 20, 17, 21, 21, 51, 20, 16, 14, 14, 12, 10, 10, + 9, 8, 6, 5, 4, 5, 4, 1, 1, 0, 18, 1, 0, 0, 1, 1, + 8, 44, 40, 56, 60, 85, 108, 146, 150, 165, 174, 165, 151, 140, 132, 120, + 122, 131, 118, 108, 118, 124, 139, 155, 165, 177, 186, 185, 182, 178, 179, 175, + 174, 169, 159, 147, 150, 139, 28, 22, 18, 72, 40, 132, 189, 194, 197, 194, + 191, 198, 190, 187, 195, 201, 190, 197, 197, 204, 201, 189, 197, 195, 138, 59, + 51, 13, 10, 173, 173, 178, 170, 199, 169, 173, 163, 140, 151, 103, 103, 108, + 111, 111, 132, 140, 167, 167, 163, 150, 139, 124, 52, 29, 26, 41, 46, 63, + 64, 73, 60, 67, 67, 71, 87, 96, 99, 112, 119, 130, 120, 110, 135, 103, + 161, 193, 197, 147, 120, 83, 64, 59, 81, 87, 85, 76, 81, 93, 99, 99, + 110, 130, 147, 147, 221, 218, 218, 110, 100, 108, 115, 112, 122, 128, 131, 132, + 130, 132, 140, 126, 126, 33, 26, 26, 41, 55, 75, 77, 84, 99, 175, 185, + 193, 198, 198, 193, 201, 208, 210, 205, 202, 195, 191, 197, 197, 194, 189, 190, + 185, 182, 178, 183, 178, 183, 142, 120, 80, 88, 91, 119, 157, 178, 194, 191, + 182, 177, 169, 167, 174, 167, 161, 142, 134, 140, 143, 136, 148, 161, 130, 163, + 178, 190, 195, 199, 198, 193, 193, 189, 169, 148, 130, 150, 147, 140, 151, 150, + 155, 146, 154, 140, 139, 124, 97, 75, 45, 112, 135, 128, 124, 124, 130, 128, + 135, 130, 130, 122, 120, 122, 120, 116, 135, 134, 134, 140, 132, 115, 115, 53, + 138, 151, 122, 119, 150, 148, 144, 132, 116, 140, 163, 174, 179, 171, 175, 175, + 171, 165, 154, 131, 118, 112, 92, 85, 38, 52, 131, 140, 116, 119, 110, 132, + 118, 122, 115, 110, 103, 112, 128, 120, 112, 110, 122, 106, 108, 122, 93, 65, + 2, 110, 128, 136, 142, 104, 138, 135, 115, 119, 96, 80, 77, 99, 104, 108, + 220, 229, 222, 107, 103, 114, 111, 111, 111, 114, 114, 119, 118, 139, 157, 159, + 151, 139, 130, 111, 22, 20, 18, 37, 48, 48, 53, 51, 52, 51, 59, 51, + 30, 56, 107, 104, 89, 93, 95, 61, 38, 36, 40, 42, 46, 33, 61, 80, + 88, 88, 95, 103, 100, 87, 79, 87, 102, 110, 97, 89, 81, 83, 73, 75, + 44, 44, 40, 34, 37, 45, 55, 53, 53, 59, 73, 77, 72, 76, 77, 32, + 103, 103, 111, 108, 187, 213, 179, 106, 102, 111, 126, 134, 146, 154, 169, 161, + 159, 130, 55, 44, 12, 12, 21, 22, 41, 83, 87, 91, 92, 92, 99, 97, + 96, 93, 57, 36, 84, 106, 118, 111, 108, 111, 119, 115, 108, 104, 108, 104, + 116, 134, 123, 122, 119, 103, 95, 99, 110, 169, 179, 190, 175, 154, 115, 81, + 72, 71, 77, 87, 124, 143, 162, 146, 150, 144, 136, 144, 123, 120, 115, 110, + 77, 57, 55, 44, 20, 85, 102, 124, 127, 102, 106, 79, 72, 76, 80, 67, + 64, 85, 134, 144, 154, 155, 155, 157, 157, 150, 157, 165, 181, 187, 185, 170, + 155, 110, 91, 51, 49, 44, 44, 32, 12, 32, 77, 92, 68, 77, 75, 69, + 64, 52, 41, 18, 34, 83, 95, 84, 84, 97, 96, 81, 110, 110, 110, 80, + 85, 120, 128, 157, 157, 153, 158, 147, 140, 132, 84, 48, 45, 67, 120, 158, + 170, 183, 194, 193, 193, 198, 201, 190, 179, 189, 175, 161, 159, 161, 148, 142, + 143, 143, 138, 140, 135, 148, 147, 153, 179, 179, 162, 150, 159, 146, 139, 134, + 150, 136, 114, 119, 102, 53, 167, 212, 202, 220, 179, 218, 174, 214, 204, 224, + 206, 212, 195, 205, 202, 201, 195, 202, 198, 147, 67, 68, 63, 64, 182, 189, + 171, 183, 210, 197, 238, 198, 135, 104, 108, 124, 128, 136, 123, 132, 148, 170, + 167, 153, 144, 139, 126, 49, 29, 26, 67, 65, 83, 97, 106, 110, 108, 132, + 147, 154, 157, 162, 162, 165, 163, 166, 144, 135, 91, 127, 169, 195, 136, 108, + 72, 68, 67, 84, 107, 107, 103, 96, 91, 134, 155, 155, 157, 153, 142, 226, + 221, 220, 108, 100, 110, 116, 131, 136, 135, 136, 135, 134, 130, 138, 124, 124, + 33, 25, 26, 57, 80, 95, 151, 110, 170, 191, 201, 210, 208, 210, 212, 220, + 222, 222, 222, 230, 232, 232, 233, 234, 234, 230, 236, 225, 233, 237, 237, 229, + 225, 225, 220, 224, 224, 216, 216, 218, 216, 221, 216, 214, 205, 204, 201, 204, + 199, 195, 187, 174, 174, 134, 132, 157, 174, 181, 193, 202, 210, 212, 209, 213, + 210, 210, 208, 204, 199, 186, 151, 139, 130, 122, 139, 139, 143, 148, 148, 148, + 146, 118, 92, 46, 142, 134, 147, 140, 143, 142, 130, 128, 130, 136, 135, 115, + 93, 140, 151, 157, 153, 147, 138, 130, 136, 112, 56, 147, 148, 146, 124, 154, + 120, 131, 147, 159, 193, 213, 222, 221, 220, 218, 214, 210, 206, 195, 193, 181, + 171, 116, 85, 46, 131, 139, 123, 120, 130, 134, 138, 118, 115, 130, 132, 123, + 99, 126, 126, 126, 126, 123, 123, 123, 116, 110, 76, 0, 99, 124, 132, 127, + 100, 104, 124, 123, 102, 112, 116, 65, 102, 126, 110, 228, 236, 222, 106, 97, + 108, 124, 131, 136, 140, 139, 138, 138, 143, 159, 155, 147, 139, 131, 118, 20, + 20, 20, 46, 48, 60, 76, 71, 72, 64, 61, 55, 40, 91, 118, 124, 122, + 124, 118, 108, 99, 111, 104, 88, 93, 103, 110, 100, 104, 100, 107, 116, 118, + 96, 106, 102, 123, 140, 135, 128, 143, 142, 140, 100, 88, 84, 75, 72, 65, + 72, 67, 57, 45, 61, 65, 59, 57, 59, 77, 40, 102, 111, 111, 108, 210, + 217, 187, 102, 99, 108, 124, 135, 143, 155, 167, 161, 143, 135, 55, 56, 61, + 64, 65, 92, 88, 99, 102, 103, 102, 107, 89, 93, 93, 92, 95, 42, 112, + 108, 111, 122, 116, 143, 159, 171, 174, 179, 179, 181, 189, 194, 191, 186, 187, + 185, 185, 183, 186, 193, 194, 195, 193, 186, 177, 177, 153, 146, 159, 146, 158, + 181, 186, 199, 195, 190, 189, 187, 174, 175, 182, 177, 155, 80, 51, 55, 26, + 97, 118, 106, 123, 128, 110, 124, 120, 97, 118, 130, 165, 165, 182, 186, 193, + 186, 189, 187, 190, 194, 194, 199, 206, 206, 208, 205, 205, 198, 179, 159, 110, + 69, 59, 30, 9, 84, 93, 80, 89, 95, 80, 89, 79, 67, 33, 21, 93, + 170, 181, 185, 178, 182, 189, 198, 206, 202, 197, 199, 195, 197, 194, 195, 179, + 193, 193, 185, 148, 171, 140, 65, 46, 96, 153, 178, 186, 194, 195, 201, 205, + 204, 205, 202, 179, 204, 198, 161, 110, 104, 151, 170, 167, 165, 150, 157, 153, + 142, 122, 120, 106, 116, 112, 107, 146, 150, 97, 150, 158, 118, 112, 110, 59, + 41, 93, 157, 187, 144, 126, 97, 102, 110, 110, 138, 179, 185, 185, 193, 173, + 178, 189, 193, 112, 79, 67, 88, 103, 115, 163, 162, 173, 189, 187, 204, 242, + 216, 138, 104, 122, 131, 139, 151, 158, 162, 166, 163, 154, 153, 143, 139, 126, + 46, 28, 29, 63, 80, 91, 124, 115, 134, 142, 131, 136, 140, 159, 163, 157, + 166, 161, 159, 155, 140, 130, 116, 124, 181, 127, 96, 77, 69, 65, 99, 104, + 99, 95, 75, 124, 162, 159, 157, 153, 153, 148, 233, 224, 218, 103, 99, 115, + 122, 136, 132, 138, 140, 138, 132, 130, 135, 124, 123, 33, 25, 26, 57, 77, + 144, 95, 104, 119, 135, 189, 197, 202, 212, 213, 216, 218, 221, 225, 226, 226, + 232, 233, 234, 234, 233, 236, 229, 236, 237, 236, 232, 225, 218, 213, 216, 217, + 222, 224, 221, 218, 220, 214, 199, 202, 189, 181, 198, 186, 187, 143, 122, 150, + 163, 171, 186, 201, 202, 197, 191, 204, 209, 209, 213, 213, 212, 210, 208, 205, + 202, 197, 185, 167, 138, 120, 118, 139, 135, 135, 140, 136, 135, 100, 61, 146, + 143, 146, 139, 139, 131, 128, 130, 130, 128, 127, 92, 111, 153, 140, 127, 151, + 153, 147, 119, 111, 108, 56, 153, 147, 157, 148, 155, 158, 150, 169, 214, 225, + 234, 232, 222, 216, 206, 194, 171, 159, 136, 116, 99, 92, 159, 102, 60, 142, + 134, 139, 144, 140, 138, 134, 126, 134, 127, 115, 87, 123, 135, 131, 118, 118, + 126, 120, 114, 123, 89, 71, 0, 104, 95, 103, 119, 124, 123, 131, 139, 134, + 120, 116, 72, 99, 124, 110, 233, 237, 233, 108, 100, 111, 132, 140, 148, 154, + 155, 154, 157, 153, 151, 144, 143, 142, 135, 124, 21, 20, 21, 45, 65, 64, + 61, 71, 71, 73, 64, 63, 42, 99, 124, 130, 127, 123, 128, 115, 116, 120, + 130, 119, 100, 88, 108, 150, 179, 185, 194, 201, 210, 212, 205, 209, 216, 220, + 218, 218, 226, 226, 217, 210, 214, 194, 201, 199, 204, 195, 169, 85, 46, 41, + 57, 55, 60, 55, 77, 42, 91, 102, 112, 120, 217, 224, 213, 97, 95, 108, + 123, 135, 144, 154, 166, 167, 159, 171, 97, 88, 84, 85, 88, 92, 93, 111, + 115, 120, 103, 106, 102, 115, 102, 97, 93, 93, 75, 108, 102, 93, 118, 177, + 187, 187, 173, 182, 194, 189, 197, 185, 182, 198, 185, 198, 199, 190, 186, 185, + 178, 181, 182, 187, 195, 185, 178, 139, 144, 182, 197, 197, 195, 189, 201, 189, + 174, 140, 143, 127, 119, 127, 115, 91, 42, 52, 28, 83, 91, 111, 96, 100, + 118, 97, 92, 115, 151, 158, 178, 182, 181, 178, 170, 178, 183, 190, 183, 182, + 178, 171, 175, 179, 185, 195, 201, 202, 202, 201, 191, 128, 60, 38, 9, 92, + 92, 81, 77, 73, 68, 73, 88, 80, 46, 30, 122, 178, 181, 174, 190, 204, + 204, 204, 205, 204, 208, 199, 189, 183, 187, 179, 174, 167, 151, 158, 150, 146, + 123, 73, 55, 119, 155, 177, 185, 190, 197, 208, 208, 170, 169, 151, 140, 142, + 138, 116, 73, 77, 99, 167, 171, 154, 144, 134, 134, 130, 128, 126, 120, 126, + 127, 134, 134, 142, 143, 144, 146, 107, 99, 102, 114, 53, 61, 75, 83, 79, + 77, 75, 73, 75, 79, 77, 79, 80, 84, 88, 91, 92, 85, 81, 76, 63, + 89, 22, 18, 13, 155, 155, 177, 182, 202, 208, 201, 205, 144, 110, 115, 138, + 161, 162, 162, 166, 166, 161, 155, 148, 142, 139, 127, 45, 28, 29, 67, 88, + 97, 126, 130, 136, 110, 154, 159, 154, 155, 163, 154, 166, 166, 165, 157, 142, + 123, 75, 116, 178, 131, 99, 73, 68, 71, 102, 111, 96, 97, 85, 146, 166, + 158, 153, 150, 148, 148, 238, 228, 221, 110, 100, 115, 124, 134, 135, 143, 140, + 134, 127, 126, 131, 124, 120, 32, 24, 26, 57, 83, 104, 110, 108, 161, 158, + 175, 177, 142, 165, 146, 148, 146, 142, 138, 136, 134, 132, 130, 130, 126, 123, + 123, 128, 123, 119, 118, 119, 112, 110, 112, 115, 169, 186, 220, 193, 185, 181, + 166, 144, 120, 115, 118, 120, 127, 120, 123, 144, 140, 174, 198, 199, 201, 206, + 189, 173, 175, 171, 162, 153, 143, 146, 144, 148, 148, 171, 186, 187, 194, 143, + 126, 107, 120, 130, 102, 124, 131, 135, 107, 59, 118, 142, 151, 135, 130, 134, + 139, 128, 122, 116, 131, 83, 106, 154, 153, 131, 135, 144, 122, 122, 116, 108, + 65, 155, 155, 142, 155, 155, 159, 165, 218, 234, 240, 230, 221, 197, 148, 124, + 110, 106, 99, 96, 85, 69, 72, 93, 93, 38, 93, 132, 128, 132, 124, 119, + 114, 119, 115, 131, 119, 67, 116, 130, 126, 118, 126, 120, 119, 112, 123, 93, + 64, 0, 102, 104, 124, 122, 120, 110, 114, 122, 120, 126, 88, 53, 103, 134, + 99, 232, 238, 234, 111, 103, 111, 138, 144, 153, 151, 159, 159, 165, 159, 161, + 155, 146, 140, 136, 124, 18, 17, 18, 44, 69, 67, 63, 68, 71, 89, 64, + 63, 33, 92, 120, 120, 122, 128, 126, 122, 126, 114, 111, 97, 63, 111, 126, + 115, 173, 195, 204, 210, 212, 216, 217, 221, 222, 226, 226, 232, 232, 228, 228, + 225, 222, 225, 224, 221, 218, 214, 190, 96, 52, 48, 56, 65, 53, 63, 76, + 41, 67, 93, 111, 107, 226, 230, 222, 102, 93, 108, 122, 134, 144, 154, 166, + 170, 166, 139, 173, 130, 135, 185, 198, 202, 204, 204, 205, 204, 201, 199, 202, + 199, 193, 185, 128, 92, 95, 96, 65, 111, 120, 122, 187, 198, 179, 195, 198, + 198, 173, 157, 135, 147, 166, 185, 185, 182, 165, 167, 146, 158, 157, 154, 151, + 148, 134, 122, 167, 197, 201, 199, 193, 189, 162, 144, 118, 111, 111, 106, 107, + 106, 115, 52, 44, 48, 26, 91, 95, 112, 120, 92, 102, 114, 85, 115, 147, + 165, 186, 191, 169, 157, 134, 132, 132, 139, 134, 134, 126, 123, 120, 127, 128, + 146, 154, 155, 167, 177, 190, 173, 88, 49, 14, 59, 97, 81, 72, 75, 72, + 79, 79, 84, 48, 26, 115, 165, 186, 197, 199, 230, 194, 201, 201, 199, 193, + 181, 175, 189, 181, 171, 167, 102, 88, 84, 79, 87, 79, 75, 64, 115, 162, + 177, 190, 205, 175, 166, 147, 123, 130, 120, 118, 122, 114, 119, 69, 60, 88, + 107, 167, 165, 144, 158, 132, 128, 116, 132, 130, 134, 134, 134, 134, 139, 140, + 143, 134, 103, 91, 95, 111, 61, 65, 67, 69, 65, 72, 80, 83, 79, 72, + 77, 69, 81, 75, 77, 76, 77, 75, 71, 91, 79, 16, 12, 12, 46, 144, + 147, 167, 175, 199, 212, 240, 199, 131, 106, 127, 144, 158, 165, 161, 163, 162, + 163, 155, 153, 144, 139, 122, 41, 26, 29, 65, 83, 108, 122, 130, 143, 119, + 151, 158, 148, 158, 150, 158, 150, 171, 163, 148, 136, 132, 77, 108, 175, 135, + 124, 92, 76, 71, 99, 99, 95, 79, 68, 154, 167, 158, 157, 153, 148, 147, + 238, 228, 222, 108, 102, 114, 126, 131, 138, 138, 130, 126, 124, 127, 126, 123, + 116, 30, 24, 24, 56, 72, 85, 108, 95, 126, 151, 151, 126, 148, 130, 119, + 119, 119, 119, 108, 114, 115, 114, 107, 107, 106, 107, 104, 104, 100, 103, 99, + 99, 99, 97, 97, 97, 106, 108, 110, 107, 106, 104, 106, 106, 96, 97, 100, + 104, 106, 110, 112, 144, 136, 190, 197, 208, 206, 189, 158, 132, 118, 111, 114, + 108, 106, 110, 112, 111, 114, 116, 132, 136, 163, 169, 126, 104, 127, 123, 132, + 134, 128, 130, 104, 61, 136, 150, 147, 139, 142, 134, 154, 127, 118, 114, 127, + 79, 114, 155, 150, 134, 120, 122, 114, 119, 116, 103, 63, 146, 157, 147, 166, + 161, 166, 216, 232, 242, 240, 222, 169, 103, 92, 83, 85, 85, 84, 77, 73, + 61, 57, 72, 91, 63, 99, 124, 132, 122, 116, 114, 112, 111, 116, 122, 111, + 81, 118, 134, 119, 119, 128, 127, 115, 118, 124, 108, 63, 5, 100, 115, 126, + 116, 130, 138, 131, 127, 126, 118, 85, 51, 96, 116, 96, 237, 242, 236, 111, + 103, 111, 138, 148, 157, 155, 163, 169, 171, 167, 162, 157, 147, 142, 134, 120, + 16, 18, 21, 42, 65, 61, 67, 67, 79, 77, 68, 59, 45, 87, 120, 122, + 110, 119, 128, 120, 123, 108, 96, 89, 64, 107, 122, 138, 124, 146, 166, 201, + 213, 210, 214, 220, 226, 226, 229, 216, 236, 234, 232, 218, 230, 234, 229, 206, + 234, 234, 190, 95, 46, 37, 65, 68, 55, 65, 73, 53, 52, 97, 110, 106, + 229, 234, 228, 103, 95, 108, 119, 132, 147, 153, 165, 171, 171, 163, 178, 183, + 190, 197, 204, 204, 205, 204, 204, 201, 202, 198, 199, 197, 193, 190, 187, 178, + 123, 104, 100, 99, 75, 93, 112, 130, 116, 111, 115, 103, 100, 97, 95, 102, + 100, 107, 107, 106, 104, 104, 103, 102, 104, 110, 110, 108, 136, 124, 165, 199, + 198, 190, 191, 142, 119, 112, 111, 110, 115, 114, 116, 123, 93, 42, 36, 37, + 20, 89, 97, 107, 111, 110, 96, 118, 119, 124, 167, 166, 153, 165, 153, 115, + 99, 96, 97, 99, 100, 100, 99, 99, 102, 104, 106, 110, 111, 116, 120, 126, + 135, 174, 128, 63, 14, 68, 95, 80, 79, 77, 73, 71, 68, 84, 49, 29, + 51, 87, 148, 166, 161, 151, 139, 116, 108, 102, 87, 80, 85, 80, 83, 80, + 73, 69, 71, 67, 67, 67, 63, 79, 69, 118, 166, 177, 178, 170, 131, 126, + 104, 110, 123, 124, 131, 123, 130, 114, 67, 68, 67, 72, 106, 190, 163, 154, + 147, 140, 136, 135, 136, 138, 134, 134, 138, 138, 132, 119, 135, 95, 37, 88, + 88, 89, 93, 96, 59, 68, 99, 128, 112, 114, 102, 99, 88, 91, 88, 83, + 96, 81, 81, 96, 85, 25, 10, 9, 16, 21, 138, 139, 142, 165, 195, 213, + 244, 185, 130, 110, 128, 153, 162, 165, 165, 169, 173, 165, 158, 151, 144, 136, + 123, 41, 26, 32, 68, 76, 102, 104, 119, 130, 108, 148, 155, 143, 170, 150, + 148, 163, 147, 146, 130, 132, 128, 87, 119, 169, 171, 138, 119, 96, 95, 96, + 97, 91, 79, 107, 151, 165, 159, 155, 148, 143, 140, 242, 232, 230, 103, 100, + 114, 123, 131, 138, 128, 127, 124, 136, 135, 132, 127, 122, 30, 22, 24, 55, + 67, 84, 122, 115, 88, 119, 148, 134, 134, 138, 126, 124, 112, 122, 124, 118, + 115, 111, 115, 115, 115, 115, 114, 111, 112, 114, 112, 114, 118, 119, 115, 112, + 99, 99, 97, 97, 97, 99, 97, 102, 108, 112, 116, 119, 122, 122, 120, 146, + 131, 157, 201, 186, 163, 142, 114, 122, 122, 119, 119, 119, 120, 120, 120, 118, + 116, 115, 110, 110, 115, 138, 128, 103, 123, 123, 127, 130, 130, 128, 107, 63, + 136, 150, 150, 146, 148, 126, 150, 131, 115, 123, 127, 73, 106, 146, 143, 134, + 134, 130, 126, 120, 120, 108, 71, 153, 161, 170, 155, 162, 208, 232, 242, 244, + 233, 171, 118, 84, 75, 68, 64, 61, 65, 64, 64, 49, 59, 64, 92, 64, + 67, 136, 134, 119, 115, 115, 119, 116, 108, 119, 116, 79, 115, 131, 118, 127, + 130, 118, 115, 120, 118, 118, 68, 1, 107, 111, 130, 111, 116, 112, 118, 124, + 127, 107, 79, 63, 85, 126, 100, 229, 238, 237, 110, 99, 111, 136, 151, 158, + 163, 169, 179, 179, 177, 165, 161, 150, 143, 132, 122, 16, 16, 20, 41, 67, + 68, 64, 71, 76, 81, 67, 59, 45, 88, 116, 119, 120, 124, 118, 123, 120, + 107, 93, 97, 59, 100, 130, 115, 136, 135, 136, 138, 147, 154, 148, 139, 138, + 139, 140, 142, 159, 153, 148, 163, 173, 146, 142, 155, 171, 135, 118, 88, 40, + 41, 67, 68, 59, 64, 67, 72, 33, 88, 100, 104, 233, 234, 232, 107, 96, + 108, 120, 132, 147, 155, 167, 174, 174, 170, 165, 135, 178, 189, 195, 204, 204, + 205, 202, 202, 202, 201, 199, 198, 198, 194, 189, 181, 177, 163, 158, 103, 97, + 96, 75, 77, 85, 97, 84, 95, 92, 95, 93, 97, 96, 103, 102, 102, 103, + 104, 106, 107, 106, 108, 112, 115, 138, 128, 157, 190, 183, 185, 126, 114, 116, + 112, 123, 122, 124, 122, 127, 124, 83, 32, 32, 41, 24, 87, 97, 104, 104, + 114, 110, 92, 110, 138, 142, 148, 128, 126, 100, 92, 100, 107, 106, 104, 106, + 106, 110, 110, 111, 110, 112, 111, 111, 112, 114, 115, 115, 126, 151, 73, 18, + 61, 87, 75, 80, 79, 80, 76, 72, 75, 63, 42, 44, 46, 65, 73, 76, + 71, 79, 80, 71, 71, 68, 71, 68, 75, 75, 72, 69, 72, 80, 108, 112, + 115, 114, 85, 77, 123, 197, 186, 144, 111, 111, 123, 126, 134, 135, 138, 136, + 136, 138, 102, 55, 24, 57, 75, 65, 89, 183, 165, 150, 151, 151, 146, 148, + 147, 153, 151, 153, 153, 148, 139, 111, 100, 89, 92, 80, 77, 81, 96, 87, + 65, 97, 185, 187, 136, 135, 118, 120, 120, 112, 126, 127, 128, 118, 114, 37, + 16, 10, 20, 25, 40, 132, 136, 131, 169, 202, 216, 244, 171, 132, 110, 130, + 154, 161, 165, 169, 170, 174, 170, 165, 148, 143, 135, 124, 41, 28, 33, 75, + 72, 97, 120, 111, 130, 114, 151, 154, 136, 165, 151, 147, 143, 174, 144, 132, + 131, 123, 72, 103, 162, 159, 134, 139, 126, 104, 111, 96, 80, 67, 107, 163, + 159, 163, 150, 159, 162, 147, 240, 232, 233, 108, 96, 114, 123, 134, 127, 138, + 140, 143, 150, 148, 140, 130, 126, 30, 22, 24, 60, 72, 87, 102, 96, 123, + 84, 103, 150, 130, 132, 120, 128, 144, 150, 134, 134, 134, 147, 131, 134, 134, + 140, 130, 128, 131, 140, 134, 135, 142, 143, 138, 135, 126, 118, 114, 115, 116, + 116, 118, 122, 126, 132, 135, 140, 140, 142, 130, 126, 120, 134, 148, 138, 114, + 127, 128, 148, 147, 131, 130, 131, 130, 131, 131, 131, 128, 127, 123, 122, 118, + 114, 134, 102, 108, 131, 123, 124, 130, 126, 108, 73, 132, 147, 144, 144, 148, + 136, 154, 142, 112, 120, 112, 68, 104, 144, 144, 118, 128, 100, 135, 132, 132, + 120, 110, 155, 178, 171, 171, 198, 225, 242, 246, 240, 217, 132, 89, 71, 46, + 46, 55, 51, 51, 56, 64, 57, 63, 60, 127, 68, 61, 135, 131, 118, 119, + 120, 122, 120, 115, 111, 114, 73, 112, 132, 119, 127, 122, 116, 115, 114, 120, + 96, 65, 2, 106, 111, 107, 116, 116, 119, 119, 126, 120, 107, 65, 73, 91, + 122, 119, 241, 244, 238, 116, 100, 111, 135, 147, 158, 163, 170, 179, 178, 177, + 175, 163, 146, 142, 134, 123, 16, 17, 18, 40, 64, 65, 67, 71, 81, 76, + 67, 63, 42, 76, 106, 120, 122, 119, 123, 126, 107, 87, 85, 77, 59, 107, + 120, 115, 139, 139, 122, 126, 128, 127, 127, 131, 128, 124, 128, 132, 131, 134, + 135, 136, 135, 136, 126, 130, 124, 123, 99, 64, 34, 32, 68, 64, 59, 63, + 63, 68, 22, 85, 111, 107, 233, 241, 233, 110, 99, 111, 124, 134, 146, 155, + 167, 173, 175, 174, 166, 167, 148, 143, 143, 140, 138, 135, 134, 131, 132, 130, + 128, 128, 126, 122, 122, 116, 122, 120, 122, 108, 114, 97, 110, 103, 107, 103, + 103, 103, 104, 106, 104, 104, 108, 110, 108, 108, 111, 114, 115, 115, 116, 119, + 122, 124, 118, 127, 124, 167, 198, 130, 120, 124, 128, 132, 134, 135, 132, 130, + 131, 127, 72, 32, 32, 38, 14, 79, 95, 102, 107, 100, 100, 97, 102, 96, + 97, 92, 97, 97, 85, 80, 73, 79, 95, 95, 115, 114, 115, 118, 120, 120, + 122, 122, 124, 124, 124, 123, 122, 119, 163, 92, 37, 41, 73, 91, 87, 77, + 68, 71, 73, 64, 76, 48, 28, 63, 60, 69, 73, 83, 83, 84, 84, 92, + 89, 95, 97, 102, 103, 107, 108, 106, 111, 122, 124, 128, 124, 95, 80, 116, + 166, 158, 130, 108, 132, 136, 144, 142, 143, 142, 142, 142, 132, 83, 22, 40, + 53, 61, 60, 71, 110, 169, 165, 142, 132, 158, 157, 158, 158, 162, 162, 163, + 161, 157, 144, 123, 96, 44, 81, 85, 79, 79, 79, 59, 100, 194, 182, 166, + 163, 136, 130, 131, 136, 124, 132, 148, 126, 107, 38, 14, 8, 22, 26, 8, + 126, 130, 126, 165, 210, 221, 237, 166, 122, 110, 130, 151, 162, 166, 167, 169, + 173, 170, 165, 153, 140, 138, 127, 44, 28, 36, 69, 89, 108, 112, 119, 123, + 106, 147, 148, 139, 157, 153, 148, 144, 127, 131, 138, 130, 115, 65, 102, 155, + 157, 143, 150, 138, 122, 163, 128, 76, 61, 131, 162, 157, 155, 147, 157, 153, + 143, 241, 233, 234, 108, 96, 111, 123, 136, 139, 153, 158, 163, 165, 158, 144, + 132, 128, 30, 22, 25, 56, 63, 84, 85, 108, 136, 115, 83, 91, 142, 146, + 122, 174, 182, 162, 134, 148, 166, 142, 142, 148, 154, 143, 140, 144, 151, 142, + 144, 148, 143, 147, 148, 147, 144, 140, 136, 136, 135, 140, 143, 143, 147, 148, + 154, 154, 153, 154, 147, 128, 153, 116, 112, 136, 132, 112, 88, 81, 95, 119, + 134, 161, 134, 136, 159, 138, 138, 136, 134, 132, 128, 118, 134, 112, 85, 122, + 128, 127, 122, 132, 112, 73, 80, 143, 148, 154, 148, 132, 154, 142, 106, 123, + 106, 65, 132, 135, 142, 135, 136, 134, 147, 162, 174, 179, 186, 208, 217, 225, + 226, 229, 241, 246, 248, 238, 177, 104, 60, 73, 69, 81, 68, 83, 77, 75, + 72, 72, 72, 76, 72, 84, 57, 108, 127, 120, 122, 123, 122, 126, 120, 114, + 115, 68, 111, 126, 118, 127, 120, 116, 118, 118, 123, 102, 63, 4, 103, 115, + 120, 126, 122, 122, 123, 123, 123, 93, 45, 60, 83, 122, 106, 238, 245, 241, + 114, 102, 110, 136, 148, 155, 163, 170, 174, 177, 177, 175, 166, 146, 138, 135, + 123, 14, 16, 22, 37, 59, 63, 67, 68, 77, 68, 68, 57, 41, 69, 99, + 114, 127, 119, 116, 110, 107, 84, 88, 83, 46, 110, 119, 124, 115, 116, 108, + 110, 148, 150, 123, 134, 136, 142, 143, 142, 135, 135, 136, 136, 134, 130, 131, + 128, 126, 114, 97, 46, 33, 33, 64, 69, 59, 65, 65, 69, 28, 85, 104, + 108, 229, 238, 237, 110, 100, 112, 124, 135, 146, 157, 169, 173, 175, 174, 159, + 151, 120, 96, 89, 110, 107, 120, 119, 119, 116, 115, 112, 108, 102, 100, 102, + 102, 96, 96, 91, 88, 84, 83, 79, 83, 91, 83, 87, 174, 111, 108, 108, + 114, 112, 116, 118, 118, 119, 123, 127, 127, 128, 128, 131, 134, 132, 135, 126, + 127, 124, 124, 131, 140, 144, 144, 144, 142, 139, 138, 134, 115, 52, 32, 25, + 37, 22, 65, 95, 93, 102, 104, 104, 106, 95, 89, 80, 73, 61, 57, 51, + 45, 51, 52, 64, 77, 89, 102, 119, 116, 123, 123, 127, 122, 126, 130, 135, + 134, 131, 130, 127, 126, 65, 18, 65, 72, 61, 59, 73, 68, 71, 64, 68, + 48, 40, 64, 57, 55, 67, 63, 138, 93, 100, 106, 108, 108, 112, 116, 115, + 118, 118, 116, 116, 128, 132, 134, 134, 128, 87, 108, 153, 132, 126, 139, 148, + 144, 147, 144, 146, 148, 146, 146, 134, 67, 37, 36, 45, 44, 56, 67, 72, + 139, 174, 157, 134, 135, 157, 167, 167, 165, 170, 170, 174, 174, 169, 150, 111, + 81, 72, 45, 67, 76, 61, 65, 112, 193, 193, 182, 140, 153, 136, 139, 139, + 144, 151, 150, 120, 122, 30, 16, 20, 24, 8, 0, 119, 126, 123, 161, 210, + 224, 238, 148, 119, 108, 128, 144, 159, 165, 165, 166, 173, 170, 167, 154, 144, + 136, 130, 41, 28, 36, 64, 92, 111, 108, 144, 136, 95, 138, 144, 140, 158, + 158, 147, 140, 135, 135, 132, 131, 119, 63, 104, 167, 186, 147, 142, 144, 142, + 120, 131, 87, 53, 127, 159, 154, 157, 148, 151, 148, 142, 242, 238, 233, 107, + 97, 111, 126, 140, 150, 163, 169, 169, 169, 161, 147, 134, 128, 28, 22, 24, + 57, 73, 80, 84, 92, 120, 115, 91, 81, 131, 142, 127, 198, 193, 127, 124, + 132, 150, 146, 161, 163, 147, 148, 153, 155, 148, 151, 148, 153, 153, 150, 163, + 163, 167, 159, 153, 148, 150, 155, 159, 157, 162, 161, 163, 165, 165, 163, 159, + 142, 157, 157, 138, 110, 77, 59, 48, 51, 60, 96, 130, 143, 177, 182, 181, + 167, 174, 171, 161, 139, 135, 127, 116, 123, 85, 89, 118, 120, 120, 122, 116, + 95, 75, 136, 139, 120, 147, 138, 140, 112, 115, 111, 80, 95, 130, 132, 165, + 175, 197, 213, 230, 230, 242, 241, 248, 246, 250, 250, 249, 249, 250, 250, 244, + 220, 143, 102, 76, 42, 73, 79, 79, 75, 77, 76, 79, 83, 77, 73, 76, + 83, 72, 104, 134, 130, 130, 130, 126, 132, 124, 110, 108, 72, 111, 128, 118, + 120, 123, 119, 132, 122, 114, 108, 60, 6, 107, 128, 115, 134, 128, 124, 130, + 126, 116, 95, 46, 64, 88, 119, 103, 238, 245, 240, 111, 100, 110, 135, 147, + 154, 162, 167, 170, 177, 175, 175, 167, 147, 140, 135, 126, 13, 18, 18, 37, + 61, 63, 69, 67, 67, 71, 65, 59, 52, 57, 93, 96, 100, 96, 97, 97, + 80, 84, 87, 83, 53, 80, 115, 116, 108, 108, 104, 103, 112, 93, 106, 173, + 134, 127, 131, 146, 147, 151, 151, 155, 155, 158, 147, 153, 122, 114, 99, 37, + 28, 32, 56, 53, 68, 71, 56, 65, 41, 79, 100, 110, 220, 240, 238, 110, + 100, 111, 126, 138, 147, 157, 170, 174, 174, 170, 161, 130, 69, 38, 34, 34, + 73, 92, 111, 110, 114, 112, 112, 112, 112, 111, 115, 115, 114, 110, 64, 68, + 81, 79, 77, 76, 76, 80, 84, 177, 179, 118, 100, 122, 130, 120, 122, 126, + 126, 127, 132, 134, 136, 139, 140, 139, 139, 132, 132, 122, 119, 143, 148, 150, + 151, 146, 146, 144, 139, 140, 130, 85, 32, 26, 25, 36, 25, 46, 89, 92, + 91, 81, 69, 55, 59, 59, 60, 49, 61, 63, 61, 59, 73, 69, 52, 48, + 75, 107, 119, 171, 174, 170, 148, 157, 170, 155, 155, 151, 138, 140, 128, 155, + 96, 36, 28, 67, 72, 65, 60, 64, 65, 65, 73, 42, 36, 48, 60, 65, + 52, 59, 136, 163, 103, 103, 112, 123, 120, 122, 124, 124, 124, 124, 127, 131, + 140, 139, 140, 139, 134, 92, 91, 135, 147, 151, 151, 151, 151, 143, 147, 148, + 146, 143, 102, 46, 40, 37, 18, 46, 48, 64, 61, 67, 155, 166, 140, 128, + 140, 157, 163, 171, 174, 177, 178, 178, 178, 171, 140, 76, 69, 52, 71, 65, + 72, 65, 123, 204, 198, 216, 151, 155, 140, 138, 142, 142, 155, 148, 120, 120, + 26, 14, 6, 12, 8, 0, 110, 110, 111, 153, 222, 224, 240, 147, 103, 112, + 132, 147, 155, 159, 162, 169, 171, 170, 165, 157, 138, 132, 126, 42, 29, 37, + 67, 89, 91, 108, 118, 120, 92, 155, 153, 138, 131, 128, 130, 127, 127, 126, + 124, 132, 124, 81, 116, 134, 161, 143, 72, 88, 83, 83, 79, 67, 51, 92, + 130, 131, 126, 124, 147, 142, 139, 244, 240, 233, 104, 97, 110, 124, 139, 153, + 167, 171, 166, 169, 162, 146, 134, 127, 28, 21, 25, 55, 51, 72, 84, 79, + 91, 76, 83, 87, 112, 144, 126, 201, 198, 170, 127, 128, 136, 153, 150, 154, + 162, 159, 150, 159, 150, 151, 150, 151, 158, 170, 174, 181, 187, 187, 183, 163, + 162, 165, 171, 170, 171, 171, 171, 173, 173, 170, 165, 147, 159, 158, 114, 75, + 46, 46, 42, 38, 48, 77, 106, 136, 178, 181, 194, 185, 179, 155, 174, 167, + 154, 134, 120, 130, 93, 75, 95, 114, 119, 118, 112, 114, 102, 89, 95, 103, + 103, 106, 104, 104, 106, 83, 116, 126, 155, 201, 226, 238, 242, 242, 246, 250, + 253, 253, 253, 252, 253, 252, 252, 250, 250, 248, 238, 178, 138, 103, 73, 40, + 73, 69, 69, 69, 73, 73, 76, 76, 81, 75, 81, 79, 76, 75, 93, 99, + 97, 108, 104, 107, 106, 104, 111, 68, 106, 115, 115, 103, 108, 108, 111, 106, + 106, 93, 60, 5, 102, 114, 118, 122, 116, 115, 115, 115, 102, 92, 41, 69, + 84, 116, 96, 238, 242, 238, 110, 96, 110, 135, 147, 155, 161, 162, 163, 175, + 177, 175, 163, 153, 140, 132, 122, 12, 16, 17, 36, 57, 57, 56, 65, 68, + 65, 75, 68, 64, 64, 71, 77, 71, 73, 77, 81, 75, 80, 85, 73, 48, + 87, 108, 104, 102, 102, 103, 104, 104, 100, 91, 175, 179, 126, 124, 132, 136, + 146, 150, 155, 155, 150, 155, 151, 126, 115, 99, 34, 26, 30, 44, 45, 56, + 61, 49, 51, 48, 56, 80, 107, 228, 241, 237, 115, 100, 112, 126, 139, 144, + 154, 169, 174, 173, 182, 151, 83, 45, 26, 21, 18, 37, 85, 131, 165, 169, + 162, 120, 153, 155, 153, 151, 123, 120, 115, 83, 55, 79, 77, 76, 75, 76, + 73, 76, 163, 190, 169, 111, 112, 130, 131, 134, 134, 136, 138, 139, 142, 142, + 143, 143, 147, 144, 142, 140, 142, 154, 153, 155, 151, 146, 132, 126, 116, 103, + 100, 77, 40, 25, 22, 24, 36, 25, 38, 45, 51, 46, 52, 56, 55, 65, + 67, 71, 60, 77, 75, 75, 71, 71, 73, 73, 75, 87, 111, 179, 190, 191, + 183, 174, 174, 177, 173, 166, 170, 161, 147, 142, 128, 120, 67, 20, 34, 77, + 76, 59, 61, 59, 56, 71, 49, 37, 42, 60, 57, 56, 61, 131, 169, 159, + 102, 104, 124, 126, 130, 130, 128, 132, 131, 130, 144, 151, 155, 151, 150, 143, + 147, 157, 157, 154, 154, 150, 144, 136, 131, 122, 116, 112, 89, 49, 32, 28, + 37, 28, 38, 26, 41, 42, 33, 100, 171, 165, 134, 127, 140, 157, 162, 170, + 175, 178, 179, 182, 181, 165, 114, 60, 71, 80, 83, 71, 64, 158, 206, 202, + 191, 170, 165, 147, 144, 150, 153, 151, 148, 120, 116, 24, 9, 5, 17, 13, + 13, 114, 107, 97, 150, 214, 225, 240, 139, 99, 108, 132, 148, 158, 161, 167, + 170, 171, 161, 158, 158, 140, 134, 128, 45, 28, 37, 63, 67, 93, 112, 110, + 119, 96, 150, 138, 119, 122, 116, 124, 124, 122, 115, 130, 134, 110, 73, 88, + 76, 53, 51, 51, 49, 44, 42, 45, 45, 46, 57, 63, 72, 80, 84, 110, + 138, 140, 242, 240, 229, 104, 97, 111, 130, 140, 153, 167, 174, 173, 165, 159, + 144, 132, 123, 24, 20, 22, 49, 56, 63, 73, 65, 67, 76, 65, 73, 85, + 139, 128, 208, 201, 197, 126, 122, 132, 147, 170, 169, 153, 159, 150, 153, 159, + 165, 167, 171, 174, 178, 181, 173, 161, 179, 187, 193, 185, 167, 183, 182, 181, + 177, 189, 182, 179, 183, 178, 186, 166, 159, 106, 61, 46, 38, 36, 34, 36, + 67, 102, 134, 189, 193, 165, 169, 186, 183, 163, 159, 165, 138, 126, 132, 99, + 68, 77, 95, 110, 108, 104, 104, 102, 112, 110, 104, 107, 106, 104, 108, 77, + 126, 135, 175, 228, 244, 244, 244, 248, 249, 252, 253, 252, 245, 240, 234, 234, + 233, 229, 225, 220, 216, 183, 147, 138, 110, 69, 69, 67, 75, 72, 75, 79, + 77, 80, 81, 80, 81, 84, 81, 79, 89, 89, 91, 91, 89, 92, 91, 91, + 88, 87, 83, 84, 73, 84, 84, 84, 68, 76, 73, 68, 59, 65, 8, 33, + 57, 63, 67, 65, 67, 64, 79, 69, 44, 24, 88, 69, 108, 104, 241, 244, + 238, 110, 95, 104, 131, 144, 157, 162, 166, 173, 174, 177, 165, 159, 148, 140, + 134, 126, 13, 18, 18, 42, 45, 48, 49, 45, 51, 45, 42, 49, 51, 49, + 51, 61, 59, 56, 56, 53, 55, 56, 53, 63, 71, 64, 71, 61, 59, 93, + 97, 92, 95, 100, 84, 155, 185, 173, 124, 127, 138, 136, 146, 150, 148, 150, + 154, 154, 130, 119, 91, 30, 24, 25, 42, 41, 46, 61, 60, 45, 45, 55, + 77, 108, 234, 244, 241, 115, 103, 114, 126, 138, 147, 157, 170, 174, 169, 161, + 116, 48, 30, 20, 24, 21, 32, 71, 148, 179, 131, 163, 155, 155, 159, 169, + 143, 147, 124, 119, 110, 51, 51, 65, 75, 73, 72, 80, 69, 111, 199, 189, + 120, 111, 120, 144, 139, 142, 142, 142, 144, 146, 146, 148, 148, 150, 153, 157, + 161, 157, 157, 155, 142, 108, 71, 49, 30, 24, 24, 25, 24, 22, 20, 24, + 22, 34, 24, 46, 41, 45, 48, 57, 77, 116, 183, 201, 212, 214, 212, 204, + 190, 181, 112, 100, 95, 95, 116, 191, 216, 166, 194, 187, 189, 186, 177, 182, + 181, 173, 166, 159, 146, 135, 150, 95, 32, 22, 45, 52, 57, 60, 57, 60, + 63, 63, 45, 40, 53, 61, 41, 52, 112, 178, 177, 112, 103, 114, 127, 138, + 134, 134, 138, 147, 150, 157, 161, 161, 161, 158, 157, 159, 159, 155, 150, 134, + 99, 72, 42, 32, 25, 18, 26, 26, 28, 32, 30, 9, 12, 12, 44, 46, + 37, 34, 42, 124, 175, 147, 122, 123, 147, 158, 163, 170, 175, 179, 183, 185, + 179, 138, 71, 41, 49, 67, 79, 92, 190, 204, 205, 194, 166, 155, 157, 155, + 157, 158, 153, 151, 131, 112, 21, 10, 6, 9, 13, 10, 53, 63, 69, 120, + 208, 228, 232, 139, 110, 110, 132, 147, 157, 163, 166, 170, 169, 154, 161, 151, + 139, 134, 127, 52, 30, 34, 49, 53, 55, 67, 114, 112, 87, 114, 112, 106, + 83, 75, 84, 76, 67, 59, 44, 60, 60, 68, 33, 68, 72, 79, 87, 89, + 85, 100, 93, 80, 40, 99, 153, 150, 124, 131, 135, 143, 140, 244, 240, 222, + 106, 97, 108, 126, 135, 151, 166, 173, 170, 166, 162, 143, 127, 127, 29, 22, + 24, 51, 56, 55, 68, 69, 69, 67, 69, 69, 69, 135, 128, 212, 210, 206, + 127, 132, 128, 142, 166, 170, 159, 155, 157, 167, 178, 178, 178, 177, 173, 182, + 150, 99, 76, 97, 162, 189, 187, 173, 165, 178, 179, 181, 179, 179, 183, 183, + 189, 190, 169, 165, 100, 57, 44, 38, 34, 34, 36, 71, 97, 130, 202, 199, + 166, 190, 191, 191, 169, 185, 174, 143, 131, 119, 114, 76, 68, 85, 72, 67, + 59, 63, 57, 60, 57, 61, 61, 61, 67, 84, 97, 144, 191, 240, 245, 246, + 244, 252, 250, 242, 225, 197, 173, 130, 118, 120, 112, 115, 120, 118, 115, 120, + 136, 126, 131, 124, 97, 83, 25, 22, 20, 17, 14, 14, 14, 12, 10, 13, + 13, 8, 5, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 4, 10, + 12, 9, 2, 2, 8, 6, 9, 10, 8, 30, 28, 30, 13, 30, 32, 30, + 26, 33, 34, 33, 81, 51, 48, 115, 103, 241, 244, 242, 114, 97, 106, 132, + 146, 158, 165, 173, 177, 177, 173, 162, 165, 146, 138, 134, 122, 10, 16, 21, + 25, 17, 14, 14, 17, 16, 17, 18, 20, 20, 25, 36, 76, 83, 96, 91, + 97, 91, 93, 88, 81, 79, 108, 115, 108, 75, 63, 64, 63, 88, 104, 95, + 100, 195, 189, 130, 124, 135, 136, 142, 144, 144, 154, 150, 148, 123, 118, 91, + 29, 22, 26, 38, 24, 36, 40, 42, 37, 48, 83, 77, 111, 234, 245, 241, + 111, 99, 110, 123, 136, 143, 157, 170, 173, 169, 148, 77, 37, 24, 22, 25, + 18, 38, 85, 186, 194, 165, 132, 162, 165, 153, 143, 132, 153, 127, 122, 112, + 46, 49, 57, 64, 68, 67, 80, 75, 97, 212, 202, 132, 111, 122, 138, 147, + 146, 144, 144, 143, 146, 147, 151, 151, 162, 167, 165, 161, 161, 153, 104, 57, + 22, 17, 16, 14, 14, 16, 16, 17, 20, 22, 22, 24, 38, 45, 44, 63, + 71, 85, 135, 190, 236, 242, 245, 245, 244, 242, 240, 240, 237, 238, 237, 233, + 225, 230, 229, 225, 210, 191, 186, 182, 182, 179, 178, 181, 178, 174, 171, 153, + 144, 130, 119, 65, 21, 29, 36, 44, 36, 41, 45, 44, 52, 52, 52, 53, + 48, 44, 56, 104, 189, 187, 124, 108, 111, 126, 134, 138, 140, 155, 161, 167, + 166, 165, 162, 165, 169, 163, 161, 157, 138, 93, 51, 17, 13, 10, 12, 13, + 14, 18, 16, 8, 10, 9, 14, 18, 13, 13, 17, 28, 22, 32, 71, 157, + 166, 130, 119, 135, 151, 159, 163, 171, 178, 181, 186, 187, 161, 102, 77, 77, + 81, 79, 116, 204, 208, 210, 201, 171, 161, 170, 158, 154, 159, 148, 151, 127, + 122, 21, 9, 10, 2, 2, 1, 194, 189, 183, 143, 209, 228, 230, 150, 112, + 108, 128, 148, 157, 161, 166, 166, 161, 162, 163, 140, 136, 135, 130, 57, 30, + 36, 49, 83, 76, 71, 68, 75, 80, 73, 77, 99, 115, 112, 130, 136, 136, + 144, 148, 140, 128, 42, 96, 119, 144, 153, 142, 138, 135, 134, 107, 93, 37, + 140, 158, 158, 158, 161, 162, 144, 147, 246, 233, 236, 106, 95, 104, 128, 136, + 151, 165, 171, 169, 163, 161, 144, 134, 130, 30, 24, 25, 57, 59, 73, 87, + 100, 108, 72, 100, 65, 127, 138, 138, 218, 213, 213, 136, 131, 136, 134, 159, + 167, 158, 155, 170, 182, 182, 181, 179, 171, 173, 159, 103, 55, 57, 81, 128, + 183, 199, 182, 161, 178, 183, 182, 183, 186, 187, 190, 191, 189, 162, 170, 108, + 60, 51, 44, 40, 38, 38, 69, 110, 127, 206, 205, 173, 170, 174, 191, 193, + 190, 175, 155, 136, 123, 134, 93, 61, 75, 89, 92, 88, 89, 119, 127, 134, + 132, 140, 132, 115, 134, 174, 205, 242, 244, 245, 250, 246, 225, 190, 147, 122, + 115, 108, 103, 111, 114, 115, 103, 118, 116, 115, 111, 127, 128, 130, 127, 123, + 87, 102, 80, 79, 83, 91, 84, 84, 84, 79, 77, 68, 69, 99, 124, 127, + 143, 132, 124, 143, 147, 130, 102, 93, 103, 155, 126, 127, 163, 161, 126, 116, + 116, 144, 106, 16, 0, 48, 92, 110, 75, 76, 73, 72, 71, 46, 59, 44, + 76, 116, 115, 112, 242, 244, 241, 114, 96, 111, 134, 147, 155, 165, 174, 174, + 175, 169, 165, 163, 144, 135, 135, 127, 12, 20, 21, 32, 63, 80, 85, 93, + 100, 99, 97, 87, 93, 95, 91, 107, 131, 123, 124, 108, 114, 116, 118, 120, + 108, 122, 126, 123, 102, 91, 79, 76, 69, 92, 93, 95, 202, 197, 147, 124, + 131, 140, 135, 139, 150, 151, 150, 148, 127, 115, 87, 26, 21, 28, 40, 51, + 57, 71, 72, 83, 83, 68, 103, 114, 234, 245, 241, 107, 99, 111, 126, 138, + 146, 159, 171, 170, 182, 136, 48, 30, 25, 26, 28, 16, 56, 84, 197, 199, + 189, 132, 157, 158, 158, 140, 131, 131, 128, 124, 115, 48, 42, 52, 72, 68, + 67, 72, 67, 88, 213, 210, 189, 116, 114, 128, 140, 151, 155, 146, 148, 148, + 155, 155, 162, 171, 166, 163, 163, 148, 87, 30, 17, 14, 16, 17, 21, 21, + 22, 22, 22, 22, 25, 25, 37, 36, 48, 60, 75, 119, 208, 237, 240, 242, + 242, 244, 241, 242, 244, 244, 242, 241, 237, 237, 234, 232, 233, 233, 229, 224, + 170, 167, 185, 187, 193, 177, 187, 181, 178, 174, 163, 148, 135, 140, 91, 29, + 32, 37, 45, 42, 56, 48, 42, 34, 28, 32, 38, 40, 46, 65, 103, 194, + 201, 170, 107, 107, 116, 132, 138, 151, 166, 166, 163, 166, 166, 163, 166, 170, + 163, 158, 140, 80, 21, 16, 9, 8, 5, 6, 5, 8, 8, 18, 24, 17, + 18, 18, 24, 33, 24, 24, 14, 17, 32, 45, 142, 163, 139, 119, 119, 135, + 157, 161, 169, 174, 179, 186, 186, 186, 134, 76, 68, 64, 92, 148, 213, 209, + 218, 212, 175, 165, 170, 154, 158, 158, 153, 154, 130, 120, 25, 14, 12, 12, + 34, 42, 165, 157, 157, 136, 193, 225, 232, 157, 114, 108, 128, 144, 157, 162, + 165, 166, 158, 162, 158, 140, 135, 135, 128, 64, 32, 37, 57, 73, 103, 115, + 119, 115, 87, 104, 146, 167, 162, 167, 177, 178, 171, 170, 174, 157, 132, 45, + 99, 183, 170, 169, 155, 157, 157, 128, 111, 95, 42, 148, 161, 151, 148, 142, + 154, 146, 144, 246, 234, 234, 106, 93, 107, 131, 136, 151, 166, 173, 170, 165, + 161, 146, 135, 130, 32, 24, 25, 57, 67, 79, 106, 92, 106, 88, 99, 64, + 131, 134, 143, 217, 218, 214, 136, 115, 122, 131, 142, 165, 161, 166, 179, 183, + 182, 183, 182, 175, 173, 128, 63, 52, 53, 60, 85, 167, 202, 189, 162, 163, + 179, 194, 195, 198, 199, 202, 202, 197, 189, 177, 138, 75, 49, 46, 45, 40, + 57, 84, 116, 127, 208, 210, 186, 169, 189, 191, 177, 190, 173, 166, 139, 130, + 120, 111, 67, 63, 85, 89, 120, 108, 107, 131, 134, 147, 127, 138, 151, 175, + 230, 244, 244, 245, 250, 233, 187, 139, 116, 112, 111, 114, 126, 80, 60, 57, + 60, 69, 115, 120, 128, 158, 178, 185, 175, 131, 130, 118, 97, 87, 112, 111, + 93, 95, 91, 89, 85, 107, 123, 84, 123, 153, 148, 151, 104, 135, 155, 158, + 135, 128, 112, 96, 142, 147, 157, 154, 157, 146, 147, 144, 131, 128, 92, 0, + 108, 107, 111, 118, 108, 104, 108, 88, 72, 68, 38, 116, 116, 112, 116, 244, + 244, 241, 104, 100, 112, 135, 144, 157, 166, 173, 171, 177, 166, 162, 159, 143, + 135, 134, 123, 10, 18, 38, 53, 84, 81, 89, 92, 95, 100, 97, 104, 92, + 102, 135, 122, 116, 115, 119, 124, 114, 114, 122, 155, 165, 208, 195, 147, 116, + 99, 92, 93, 91, 91, 92, 85, 208, 208, 179, 124, 128, 135, 138, 134, 140, + 155, 147, 154, 126, 116, 85, 28, 22, 34, 46, 72, 80, 84, 85, 91, 59, + 87, 122, 158, 236, 244, 238, 114, 100, 112, 127, 139, 146, 163, 171, 169, 162, + 118, 42, 30, 21, 25, 32, 18, 63, 95, 205, 205, 197, 161, 154, 154, 159, + 142, 146, 134, 128, 131, 119, 45, 42, 41, 60, 72, 75, 68, 68, 85, 214, + 212, 197, 115, 114, 122, 136, 147, 154, 154, 154, 169, 173, 171, 173, 174, 165, + 163, 150, 92, 25, 13, 14, 16, 17, 26, 22, 28, 28, 28, 29, 29, 38, + 40, 44, 33, 49, 64, 107, 224, 240, 238, 244, 242, 240, 230, 220, 199, 197, + 186, 189, 193, 204, 206, 209, 220, 222, 226, 222, 225, 213, 175, 201, 199, 209, + 209, 199, 181, 185, 179, 170, 153, 140, 135, 112, 57, 26, 28, 59, 53, 59, + 73, 73, 68, 61, 69, 76, 77, 77, 63, 111, 195, 204, 187, 108, 107, 118, + 131, 143, 154, 166, 170, 171, 169, 169, 169, 171, 169, 165, 140, 80, 20, 14, + 9, 8, 9, 12, 8, 9, 17, 9, 24, 37, 45, 37, 51, 48, 49, 53, + 57, 48, 49, 26, 49, 127, 162, 158, 118, 115, 130, 148, 159, 163, 171, 177, + 182, 189, 194, 181, 120, 59, 83, 106, 178, 213, 212, 213, 198, 183, 170, 165, + 161, 165, 158, 154, 154, 131, 122, 17, 12, 13, 22, 20, 6, 166, 161, 155, + 153, 161, 224, 222, 186, 120, 108, 123, 146, 155, 161, 165, 161, 162, 158, 146, + 128, 135, 134, 128, 87, 37, 38, 65, 76, 116, 132, 118, 114, 71, 147, 174, + 181, 178, 171, 190, 186, 186, 179, 182, 148, 128, 37, 120, 189, 179, 175, 174, + 165, 151, 143, 104, 89, 46, 142, 159, 150, 151, 148, 153, 147, 148, 241, 229, + 234, 102, 92, 107, 131, 139, 151, 166, 171, 173, 162, 161, 147, 138, 131, 32, + 26, 29, 59, 57, 84, 102, 92, 93, 87, 107, 49, 147, 135, 173, 224, 221, + 217, 123, 114, 120, 140, 143, 154, 159, 173, 183, 185, 183, 182, 179, 174, 165, + 100, 52, 48, 52, 59, 89, 148, 205, 201, 167, 157, 175, 182, 194, 201, 204, + 205, 204, 204, 197, 178, 167, 95, 55, 44, 46, 41, 73, 102, 118, 132, 204, + 216, 201, 174, 190, 191, 186, 190, 175, 174, 144, 135, 126, 126, 84, 61, 80, + 83, 84, 99, 131, 126, 131, 127, 134, 132, 151, 213, 245, 244, 246, 248, 222, + 163, 119, 115, 114, 118, 138, 126, 75, 55, 49, 57, 49, 68, 115, 183, 195, + 189, 163, 170, 170, 174, 131, 131, 122, 99, 64, 97, 99, 108, 96, 95, 95, + 99, 88, 89, 165, 162, 158, 153, 150, 144, 136, 144, 128, 114, 95, 119, 161, + 159, 151, 150, 144, 148, 148, 155, 144, 142, 106, 29, 115, 104, 93, 87, 85, + 91, 95, 107, 83, 63, 41, 116, 127, 119, 144, 245, 244, 238, 107, 100, 114, + 135, 144, 154, 165, 171, 173, 175, 165, 161, 142, 131, 134, 134, 122, 13, 22, + 38, 71, 77, 95, 95, 103, 87, 92, 97, 87, 57, 106, 132, 124, 114, 110, + 119, 115, 118, 119, 179, 228, 216, 218, 208, 174, 119, 103, 85, 103, 91, 87, + 92, 83, 206, 208, 195, 126, 128, 138, 144, 138, 139, 147, 140, 139, 126, 120, + 77, 28, 22, 42, 57, 75, 76, 83, 96, 73, 57, 85, 123, 163, 236, 244, + 240, 120, 104, 115, 128, 144, 151, 165, 171, 166, 158, 88, 40, 26, 24, 28, + 33, 18, 69, 104, 204, 208, 204, 128, 150, 153, 158, 128, 135, 138, 128, 130, + 116, 45, 37, 41, 55, 60, 67, 75, 72, 87, 220, 214, 199, 114, 114, 119, + 132, 147, 155, 159, 171, 175, 178, 179, 175, 171, 169, 154, 89, 28, 13, 17, + 17, 17, 24, 24, 34, 42, 45, 46, 42, 45, 41, 45, 51, 41, 53, 80, + 175, 240, 240, 241, 237, 232, 197, 177, 154, 153, 151, 155, 158, 162, 167, 171, + 175, 179, 183, 186, 197, 198, 206, 201, 202, 199, 199, 201, 202, 199, 191, 181, + 171, 157, 148, 131, 122, 77, 30, 38, 53, 59, 55, 65, 51, 60, 69, 71, + 71, 59, 56, 56, 97, 199, 208, 197, 110, 107, 116, 132, 142, 158, 166, 170, + 170, 171, 170, 173, 170, 169, 153, 99, 29, 16, 9, 12, 12, 12, 13, 13, + 22, 18, 12, 40, 49, 53, 51, 53, 42, 40, 34, 44, 46, 56, 12, 51, + 107, 146, 170, 132, 112, 122, 142, 153, 159, 166, 173, 179, 186, 199, 198, 187, + 139, 114, 153, 208, 206, 214, 212, 195, 197, 178, 183, 169, 165, 163, 157, 154, + 138, 122, 24, 12, 5, 30, 5, 59, 146, 155, 155, 146, 147, 214, 226, 208, + 122, 106, 118, 143, 154, 159, 161, 162, 159, 155, 136, 136, 135, 132, 127, 103, + 40, 42, 67, 88, 118, 126, 111, 123, 83, 151, 190, 186, 189, 187, 183, 186, + 186, 187, 171, 144, 130, 36, 127, 182, 194, 204, 186, 171, 157, 148, 114, 92, + 51, 134, 154, 151, 159, 150, 148, 142, 153, 241, 236, 232, 93, 93, 106, 128, + 136, 148, 165, 173, 170, 165, 161, 150, 139, 130, 32, 28, 25, 60, 71, 84, + 104, 95, 95, 87, 103, 51, 136, 142, 175, 229, 226, 220, 124, 120, 119, 128, + 142, 158, 162, 175, 182, 186, 186, 182, 179, 171, 147, 67, 49, 44, 52, 77, + 83, 135, 198, 206, 175, 154, 157, 177, 187, 198, 204, 204, 205, 205, 201, 197, + 181, 131, 63, 48, 44, 52, 76, 106, 122, 128, 201, 221, 213, 178, 174, 189, + 177, 189, 175, 169, 151, 138, 130, 134, 97, 57, 67, 83, 80, 96, 120, 140, + 143, 135, 126, 146, 167, 233, 238, 244, 245, 228, 148, 116, 116, 118, 123, 142, + 144, 92, 63, 48, 41, 53, 52, 73, 131, 199, 194, 167, 169, 174, 171, 178, + 142, 135, 118, 111, 89, 61, 85, 83, 92, 83, 93, 95, 83, 37, 154, 166, + 143, 159, 153, 159, 166, 162, 143, 114, 93, 112, 165, 155, 153, 146, 144, 148, + 147, 144, 146, 151, 65, 30, 81, 106, 100, 88, 88, 88, 91, 99, 68, 63, + 38, 118, 128, 115, 131, 242, 245, 241, 111, 102, 112, 134, 146, 151, 165, 171, + 174, 178, 165, 161, 136, 130, 131, 132, 120, 13, 22, 26, 42, 79, 92, 107, + 103, 92, 106, 89, 95, 61, 93, 136, 115, 127, 115, 107, 120, 115, 126, 208, + 228, 213, 217, 195, 153, 115, 89, 75, 85, 92, 87, 93, 85, 213, 210, 202, + 130, 130, 136, 140, 143, 144, 134, 147, 136, 123, 119, 65, 28, 24, 41, 63, + 75, 75, 81, 106, 76, 52, 84, 124, 159, 234, 242, 240, 123, 106, 116, 127, + 140, 148, 166, 169, 167, 147, 67, 33, 25, 25, 29, 38, 24, 69, 102, 205, + 209, 233, 130, 150, 150, 150, 140, 134, 130, 128, 124, 114, 40, 37, 34, 56, + 56, 67, 65, 75, 88, 224, 221, 209, 114, 111, 120, 131, 144, 155, 159, 171, + 177, 178, 177, 173, 169, 162, 115, 37, 14, 17, 17, 14, 18, 24, 36, 46, + 52, 52, 45, 46, 45, 46, 49, 49, 52, 59, 100, 220, 237, 237, 230, 217, + 181, 147, 135, 138, 143, 151, 161, 170, 178, 190, 199, 202, 206, 208, 205, 189, + 193, 198, 199, 202, 205, 209, 208, 209, 206, 185, 181, 166, 157, 150, 135, 131, + 97, 37, 36, 44, 51, 68, 60, 61, 65, 48, 45, 64, 72, 71, 73, 87, + 201, 213, 202, 112, 108, 118, 132, 143, 157, 166, 170, 171, 171, 175, 174, 170, + 161, 119, 42, 20, 10, 12, 14, 16, 13, 14, 17, 17, 17, 8, 44, 52, + 45, 40, 41, 46, 41, 34, 48, 51, 48, 14, 53, 96, 120, 166, 144, 116, + 112, 131, 140, 158, 165, 171, 177, 186, 193, 204, 201, 199, 185, 208, 213, 213, + 214, 216, 199, 187, 185, 178, 171, 173, 163, 157, 155, 139, 127, 18, 12, 9, + 20, 6, 1, 169, 146, 148, 143, 124, 175, 225, 217, 130, 104, 114, 132, 148, + 155, 161, 162, 162, 159, 147, 131, 136, 130, 131, 115, 46, 45, 65, 75, 112, + 130, 116, 135, 81, 120, 179, 187, 185, 183, 183, 185, 190, 181, 169, 148, 134, + 42, 157, 194, 218, 218, 226, 197, 167, 153, 131, 91, 49, 135, 154, 158, 151, + 147, 148, 142, 148, 240, 241, 225, 99, 92, 103, 122, 135, 148, 166, 171, 171, + 165, 162, 151, 140, 131, 33, 28, 33, 61, 69, 79, 89, 107, 108, 76, 99, + 69, 131, 139, 157, 230, 226, 224, 131, 122, 128, 128, 146, 143, 166, 171, 185, + 178, 186, 183, 173, 169, 130, 56, 45, 37, 52, 65, 85, 119, 193, 209, 191, + 155, 153, 171, 183, 194, 197, 204, 205, 208, 205, 201, 186, 167, 79, 48, 42, + 49, 79, 106, 122, 130, 186, 225, 218, 187, 187, 185, 189, 189, 179, 163, 151, + 140, 131, 123, 111, 64, 61, 80, 79, 91, 126, 146, 123, 123, 136, 140, 201, + 237, 241, 245, 234, 159, 119, 119, 123, 130, 146, 144, 150, 81, 60, 46, 33, + 59, 57, 88, 112, 205, 201, 169, 170, 174, 166, 169, 169, 135, 128, 124, 99, + 60, 65, 81, 85, 81, 84, 95, 92, 64, 159, 173, 148, 159, 154, 158, 166, + 151, 138, 132, 81, 131, 166, 158, 143, 147, 144, 154, 150, 148, 150, 144, 92, + 0, 102, 102, 91, 85, 89, 106, 110, 93, 65, 63, 34, 108, 124, 110, 130, + 245, 242, 232, 110, 100, 114, 132, 142, 157, 165, 169, 174, 175, 162, 157, 146, + 136, 131, 130, 116, 14, 24, 29, 49, 80, 99, 106, 102, 93, 103, 91, 89, + 57, 103, 126, 110, 118, 122, 116, 114, 112, 130, 220, 226, 230, 226, 189, 127, + 102, 72, 65, 87, 81, 85, 89, 88, 217, 213, 209, 132, 130, 140, 142, 147, + 142, 135, 153, 134, 119, 115, 55, 26, 22, 38, 63, 75, 72, 81, 93, 81, + 46, 103, 120, 126, 232, 241, 237, 122, 107, 116, 126, 139, 147, 167, 167, 165, + 144, 49, 28, 24, 26, 30, 33, 21, 67, 103, 206, 208, 209, 148, 140, 144, + 143, 139, 132, 131, 124, 122, 107, 36, 32, 33, 52, 57, 63, 68, 69, 83, + 229, 224, 216, 116, 111, 122, 132, 142, 154, 161, 171, 177, 178, 173, 161, 166, + 140, 53, 14, 17, 18, 16, 25, 26, 26, 55, 60, 56, 53, 52, 55, 51, + 52, 59, 49, 46, 76, 183, 217, 233, 220, 197, 162, 138, 126, 134, 144, 159, + 171, 181, 187, 197, 206, 216, 218, 221, 222, 221, 218, 202, 197, 201, 194, 190, + 189, 213, 212, 210, 187, 182, 163, 159, 153, 139, 131, 107, 53, 34, 36, 60, + 59, 69, 61, 57, 48, 55, 40, 51, 67, 45, 73, 198, 217, 209, 112, 108, + 118, 134, 142, 158, 165, 169, 171, 173, 175, 170, 166, 140, 56, 18, 14, 13, + 16, 16, 18, 18, 17, 14, 17, 17, 8, 48, 52, 38, 40, 38, 42, 32, + 37, 55, 41, 55, 13, 51, 80, 102, 130, 163, 123, 112, 118, 135, 153, 163, + 169, 173, 181, 190, 199, 206, 206, 209, 212, 208, 212, 224, 213, 195, 189, 189, + 179, 174, 165, 165, 157, 155, 138, 124, 16, 12, 5, 12, 63, 72, 162, 135, + 144, 140, 135, 153, 213, 220, 144, 104, 112, 127, 144, 153, 157, 159, 166, 167, + 161, 150, 124, 124, 128, 122, 57, 44, 67, 69, 110, 127, 115, 118, 114, 85, + 165, 186, 187, 190, 187, 187, 186, 182, 165, 153, 139, 57, 195, 212, 228, 212, + 205, 201, 214, 165, 142, 93, 52, 130, 148, 147, 139, 142, 146, 135, 138, 241, + 241, 230, 103, 95, 99, 116, 132, 150, 165, 174, 173, 165, 162, 150, 140, 130, + 34, 28, 33, 65, 68, 77, 92, 108, 104, 102, 93, 72, 124, 139, 147, 230, + 229, 225, 130, 110, 119, 128, 135, 139, 155, 166, 178, 186, 187, 183, 170, 161, + 110, 49, 44, 36, 52, 77, 92, 115, 186, 217, 201, 159, 148, 161, 178, 187, + 197, 197, 202, 206, 208, 205, 198, 183, 108, 49, 44, 49, 79, 107, 115, 123, + 166, 225, 222, 191, 173, 183, 190, 179, 167, 146, 140, 142, 135, 124, 122, 79, + 61, 75, 75, 91, 124, 147, 132, 127, 132, 131, 209, 240, 242, 242, 193, 126, + 120, 127, 132, 132, 148, 151, 153, 76, 48, 44, 36, 52, 57, 77, 115, 208, + 209, 187, 167, 173, 170, 167, 171, 139, 136, 122, 96, 53, 56, 84, 71, 80, + 85, 100, 71, 97, 154, 159, 151, 146, 144, 151, 148, 150, 136, 111, 64, 139, + 165, 158, 144, 151, 144, 151, 151, 148, 142, 140, 83, 0, 106, 99, 96, 85, + 91, 76, 68, 65, 75, 64, 34, 111, 123, 116, 126, 241, 241, 226, 106, 100, + 114, 135, 146, 155, 165, 170, 169, 177, 175, 163, 155, 139, 124, 126, 114, 14, + 24, 34, 63, 79, 93, 106, 106, 110, 107, 88, 95, 57, 97, 127, 110, 107, + 118, 104, 118, 112, 138, 222, 233, 230, 179, 128, 118, 80, 64, 69, 80, 79, + 77, 84, 88, 218, 220, 216, 135, 130, 139, 146, 159, 148, 147, 150, 122, 118, + 111, 41, 25, 24, 37, 63, 71, 73, 81, 95, 81, 41, 112, 122, 104, 228, + 240, 236, 123, 106, 116, 127, 142, 148, 167, 166, 161, 136, 42, 26, 25, 29, + 28, 30, 24, 61, 111, 210, 216, 208, 143, 138, 140, 146, 139, 134, 132, 132, + 115, 104, 32, 29, 29, 48, 51, 53, 71, 81, 83, 229, 229, 220, 118, 112, + 123, 131, 143, 155, 162, 166, 178, 173, 167, 165, 155, 100, 28, 16, 18, 18, + 18, 17, 21, 26, 49, 64, 84, 83, 81, 79, 68, 57, 46, 59, 68, 131, + 220, 228, 213, 179, 144, 127, 126, 139, 148, 161, 174, 181, 190, 197, 204, 213, + 204, 154, 123, 150, 198, 222, 220, 205, 198, 193, 201, 202, 213, 209, 206, 186, + 178, 166, 159, 150, 135, 128, 114, 72, 36, 29, 51, 55, 68, 72, 57, 46, + 53, 48, 55, 68, 32, 87, 205, 220, 216, 115, 108, 120, 134, 142, 158, 165, + 170, 173, 174, 175, 167, 155, 99, 29, 18, 16, 16, 17, 21, 22, 18, 17, + 17, 18, 20, 12, 48, 57, 45, 40, 30, 36, 37, 52, 48, 38, 40, 12, + 52, 69, 88, 110, 162, 157, 114, 106, 127, 147, 159, 167, 173, 179, 190, 191, + 197, 205, 202, 204, 216, 220, 213, 202, 194, 191, 186, 181, 173, 166, 166, 157, + 154, 136, 123, 13, 9, 9, 17, 5, 10, 155, 166, 144, 136, 134, 119, 175, + 218, 175, 106, 108, 119, 136, 147, 153, 159, 169, 163, 165, 155, 124, 120, 130, + 126, 73, 44, 56, 76, 99, 127, 124, 128, 110, 84, 161, 185, 190, 186, 189, + 187, 187, 185, 169, 157, 135, 57, 201, 218, 225, 217, 220, 202, 195, 162, 138, + 88, 56, 124, 154, 147, 154, 142, 146, 135, 155, 241, 241, 233, 108, 95, 97, + 111, 138, 148, 165, 171, 171, 166, 161, 150, 142, 132, 37, 32, 25, 65, 72, + 67, 80, 107, 110, 114, 76, 48, 120, 134, 148, 230, 228, 221, 122, 108, 119, + 130, 126, 130, 144, 161, 174, 182, 181, 179, 165, 151, 84, 44, 42, 33, 55, + 88, 87, 112, 173, 217, 208, 163, 146, 151, 171, 182, 189, 194, 195, 199, 206, + 208, 199, 190, 151, 60, 46, 44, 75, 104, 114, 124, 150, 224, 225, 194, 174, + 185, 185, 177, 155, 144, 136, 143, 142, 127, 127, 92, 59, 67, 75, 87, 126, + 150, 128, 116, 119, 138, 217, 234, 242, 238, 159, 120, 127, 134, 138, 142, 151, + 154, 158, 72, 49, 42, 28, 53, 57, 77, 108, 208, 214, 206, 173, 173, 173, + 169, 174, 144, 140, 120, 93, 46, 49, 65, 79, 71, 83, 85, 83, 83, 161, + 158, 153, 147, 150, 151, 147, 157, 132, 99, 81, 108, 151, 157, 147, 150, 150, + 148, 150, 148, 148, 138, 83, 24, 103, 96, 96, 81, 88, 95, 71, 72, 84, + 56, 36, 120, 124, 116, 131, 240, 236, 179, 102, 100, 114, 134, 142, 151, 158, + 166, 169, 177, 177, 171, 161, 146, 126, 126, 118, 16, 26, 37, 72, 71, 95, + 99, 103, 108, 96, 92, 83, 55, 110, 119, 108, 111, 115, 110, 118, 116, 144, + 233, 236, 229, 150, 118, 102, 69, 60, 65, 80, 76, 76, 88, 97, 216, 220, + 216, 136, 130, 143, 166, 163, 163, 158, 148, 119, 118, 111, 37, 26, 25, 40, + 61, 72, 73, 83, 84, 68, 42, 79, 119, 131, 226, 238, 237, 126, 106, 118, + 126, 140, 148, 169, 167, 162, 128, 40, 26, 25, 30, 30, 33, 25, 61, 107, + 209, 214, 229, 122, 135, 136, 142, 134, 138, 142, 135, 114, 92, 30, 29, 30, + 49, 49, 49, 67, 64, 84, 234, 225, 218, 116, 112, 123, 134, 144, 157, 163, + 166, 177, 171, 165, 163, 142, 56, 18, 18, 18, 18, 24, 26, 22, 56, 61, + 79, 73, 75, 80, 88, 69, 51, 45, 56, 89, 204, 225, 222, 195, 135, 114, + 126, 136, 148, 161, 173, 179, 187, 190, 201, 206, 208, 111, 72, 67, 77, 112, + 161, 224, 213, 208, 194, 202, 210, 214, 212, 199, 182, 179, 171, 162, 150, 135, + 123, 118, 84, 41, 45, 51, 56, 63, 61, 56, 45, 56, 53, 51, 67, 46, + 72, 218, 221, 218, 116, 111, 122, 135, 143, 157, 165, 169, 171, 175, 170, 162, + 139, 59, 18, 14, 17, 20, 25, 22, 21, 17, 17, 22, 21, 22, 13, 53, + 61, 46, 44, 49, 44, 48, 53, 33, 40, 41, 10, 49, 65, 85, 89, 138, + 171, 122, 104, 123, 139, 157, 165, 173, 178, 185, 191, 194, 194, 193, 193, 197, + 204, 206, 202, 198, 198, 187, 178, 174, 165, 166, 158, 155, 138, 118, 12, 10, + 6, 25, 9, 9, 148, 147, 144, 130, 134, 122, 153, 206, 205, 111, 107, 115, + 124, 143, 154, 161, 170, 166, 167, 155, 120, 122, 130, 127, 100, 48, 51, 60, + 72, 95, 135, 124, 112, 79, 138, 186, 187, 186, 189, 186, 189, 185, 167, 153, + 144, 45, 212, 224, 225, 218, 202, 181, 155, 138, 127, 84, 55, 95, 148, 154, + 165, 138, 143, 136, 146, 242, 242, 234, 108, 97, 95, 114, 131, 144, 162, 170, + 171, 167, 158, 147, 143, 132, 37, 33, 38, 69, 75, 89, 93, 93, 103, 106, + 89, 72, 110, 130, 142, 229, 236, 225, 130, 118, 118, 123, 123, 126, 134, 147, + 162, 181, 181, 165, 163, 146, 69, 44, 38, 29, 53, 81, 85, 104, 163, 213, + 213, 178, 143, 144, 163, 174, 181, 187, 191, 194, 199, 204, 201, 190, 178, 87, + 45, 42, 75, 97, 114, 124, 142, 220, 225, 198, 173, 183, 187, 167, 150, 131, + 126, 130, 135, 130, 127, 107, 64, 59, 73, 81, 120, 139, 126, 116, 131, 140, + 216, 233, 241, 221, 144, 124, 131, 138, 136, 153, 157, 162, 165, 69, 49, 45, + 32, 53, 64, 71, 106, 208, 218, 214, 175, 174, 177, 170, 173, 147, 138, 120, + 92, 42, 44, 64, 64, 61, 71, 79, 32, 84, 154, 148, 151, 153, 153, 147, + 147, 162, 134, 93, 73, 140, 163, 146, 151, 153, 159, 163, 157, 146, 146, 144, + 63, 32, 79, 92, 93, 79, 85, 72, 71, 75, 68, 63, 37, 115, 123, 116, + 126, 237, 234, 165, 99, 97, 112, 122, 134, 144, 154, 165, 169, 179, 175, 171, + 161, 147, 126, 127, 119, 17, 28, 29, 52, 69, 80, 97, 103, 103, 97, 92, + 89, 53, 89, 116, 106, 107, 106, 104, 108, 116, 175, 244, 236, 220, 131, 114, + 95, 56, 59, 63, 76, 73, 75, 85, 96, 218, 220, 214, 136, 131, 142, 166, + 159, 163, 151, 153, 116, 118, 108, 38, 25, 25, 41, 61, 69, 75, 75, 79, + 69, 34, 80, 123, 128, 228, 238, 236, 123, 107, 114, 126, 142, 151, 169, 163, + 166, 127, 36, 25, 26, 34, 28, 42, 26, 57, 97, 206, 214, 210, 135, 130, + 132, 142, 136, 135, 138, 134, 112, 85, 28, 26, 29, 45, 48, 53, 61, 68, + 100, 233, 234, 221, 116, 111, 123, 134, 144, 158, 165, 167, 174, 169, 165, 161, + 112, 36, 18, 20, 21, 18, 22, 18, 16, 63, 67, 80, 95, 84, 71, 89, + 68, 61, 55, 64, 142, 216, 220, 212, 166, 111, 120, 134, 144, 159, 171, 174, + 185, 185, 194, 201, 209, 170, 80, 46, 33, 37, 55, 110, 204, 222, 213, 199, + 191, 213, 213, 210, 208, 193, 178, 173, 161, 148, 132, 118, 119, 93, 45, 44, + 45, 65, 56, 61, 69, 44, 55, 49, 59, 60, 36, 81, 218, 228, 218, 116, + 112, 122, 135, 140, 157, 165, 165, 169, 170, 165, 159, 112, 37, 17, 16, 21, + 24, 28, 25, 20, 18, 20, 25, 20, 22, 12, 49, 49, 56, 41, 52, 48, + 48, 48, 46, 41, 37, 14, 45, 61, 71, 72, 97, 162, 136, 103, 111, 134, + 151, 162, 170, 175, 182, 189, 197, 197, 198, 197, 195, 194, 198, 209, 199, 199, + 190, 182, 173, 167, 169, 158, 153, 136, 123, 13, 9, 6, 18, 12, 9, 136, + 134, 130, 132, 119, 119, 119, 173, 204, 136, 102, 107, 116, 140, 153, 159, 165, + 171, 163, 148, 128, 123, 131, 126, 116, 55, 56, 76, 72, 89, 128, 111, 130, + 89, 132, 169, 182, 190, 187, 190, 186, 179, 155, 155, 146, 52, 212, 229, 229, + 220, 167, 144, 127, 120, 103, 73, 55, 79, 132, 148, 159, 136, 135, 132, 148, + 241, 241, 230, 104, 95, 99, 119, 131, 142, 162, 167, 170, 165, 158, 148, 146, + 131, 40, 36, 38, 69, 75, 83, 83, 76, 99, 93, 95, 84, 91, 134, 155, + 233, 233, 226, 130, 120, 126, 122, 120, 124, 136, 151, 147, 157, 159, 154, 158, + 138, 53, 40, 36, 29, 49, 56, 79, 104, 134, 208, 213, 187, 140, 142, 154, + 167, 175, 177, 179, 186, 194, 201, 199, 195, 190, 114, 48, 41, 76, 89, 111, + 120, 132, 214, 225, 206, 177, 182, 187, 167, 158, 148, 147, 142, 127, 131, 123, + 114, 71, 59, 69, 67, 111, 131, 114, 111, 128, 134, 217, 236, 241, 190, 135, + 130, 135, 140, 138, 151, 157, 162, 165, 68, 46, 44, 30, 53, 61, 84, 102, + 208, 220, 220, 177, 178, 175, 166, 175, 150, 138, 123, 88, 42, 38, 46, 57, + 61, 67, 83, 52, 122, 155, 161, 157, 150, 158, 147, 151, 134, 134, 128, 67, + 134, 155, 163, 161, 167, 161, 158, 151, 157, 150, 136, 93, 0, 91, 93, 81, + 79, 76, 71, 68, 71, 69, 67, 36, 96, 122, 108, 127, 234, 229, 178, 103, + 102, 110, 114, 126, 135, 151, 163, 171, 175, 178, 165, 159, 143, 127, 132, 114, + 18, 28, 30, 52, 65, 81, 96, 100, 93, 106, 92, 87, 49, 91, 107, 110, + 97, 110, 108, 104, 124, 209, 240, 237, 216, 130, 114, 76, 55, 52, 61, 63, + 71, 65, 84, 92, 214, 220, 210, 134, 132, 144, 169, 163, 157, 151, 148, 119, + 118, 106, 33, 24, 28, 41, 57, 69, 72, 81, 80, 76, 30, 93, 118, 104, + 224, 237, 232, 122, 108, 119, 127, 142, 157, 169, 166, 163, 120, 41, 28, 25, + 22, 33, 38, 24, 48, 87, 206, 212, 202, 132, 128, 131, 142, 140, 130, 135, + 134, 114, 87, 25, 24, 22, 38, 46, 56, 59, 64, 87, 234, 228, 222, 116, + 111, 123, 135, 144, 158, 166, 169, 173, 163, 161, 148, 77, 22, 21, 22, 20, + 21, 28, 26, 16, 51, 69, 81, 89, 88, 72, 83, 71, 59, 55, 57, 166, + 212, 220, 202, 134, 107, 122, 135, 150, 163, 169, 181, 186, 190, 197, 202, 212, + 136, 53, 29, 28, 33, 51, 89, 167, 225, 214, 209, 186, 213, 217, 218, 209, + 197, 181, 173, 163, 148, 135, 123, 123, 108, 53, 45, 41, 45, 57, 61, 55, + 30, 53, 41, 71, 55, 45, 69, 212, 228, 226, 115, 110, 120, 134, 142, 155, + 166, 162, 170, 169, 163, 148, 84, 25, 18, 20, 21, 26, 24, 25, 25, 22, + 25, 24, 22, 22, 12, 49, 55, 40, 51, 52, 48, 49, 48, 48, 36, 34, + 6, 38, 52, 59, 72, 87, 128, 155, 118, 102, 122, 143, 159, 167, 177, 179, + 186, 193, 187, 186, 189, 199, 195, 190, 195, 208, 201, 191, 183, 177, 169, 170, + 159, 154, 143, 123, 8, 12, 8, 10, 16, 2, 127, 126, 126, 114, 104, 102, + 108, 142, 201, 185, 102, 106, 116, 139, 151, 158, 159, 158, 154, 150, 120, 122, + 123, 128, 131, 79, 55, 61, 69, 79, 122, 123, 126, 103, 104, 157, 169, 173, + 178, 167, 170, 171, 161, 158, 150, 64, 216, 230, 234, 198, 163, 126, 119, 123, + 93, 73, 60, 69, 88, 106, 120, 114, 135, 123, 136, 240, 240, 222, 104, 95, + 102, 116, 126, 138, 159, 170, 167, 165, 158, 146, 146, 130, 42, 38, 42, 65, + 75, 60, 84, 84, 69, 96, 104, 80, 85, 128, 147, 233, 233, 225, 131, 107, + 114, 130, 130, 128, 139, 142, 139, 151, 150, 153, 154, 134, 52, 41, 40, 29, + 51, 63, 83, 107, 120, 199, 214, 195, 147, 139, 144, 159, 167, 169, 173, 179, + 187, 194, 197, 194, 191, 148, 60, 44, 68, 85, 104, 110, 122, 205, 226, 214, + 178, 178, 187, 174, 163, 158, 151, 148, 144, 127, 120, 123, 91, 59, 68, 65, + 104, 131, 150, 124, 122, 124, 198, 237, 241, 185, 130, 135, 142, 144, 140, 151, + 161, 165, 166, 68, 48, 41, 30, 44, 57, 76, 107, 216, 221, 221, 177, 177, + 178, 170, 174, 151, 138, 126, 89, 41, 38, 44, 53, 77, 57, 87, 51, 115, + 128, 118, 127, 128, 130, 127, 131, 127, 127, 95, 53, 131, 146, 150, 143, 155, + 147, 139, 136, 148, 144, 126, 61, 0, 92, 76, 76, 69, 81, 72, 85, 69, + 77, 61, 34, 99, 118, 115, 124, 238, 237, 220, 106, 102, 106, 115, 114, 135, + 155, 165, 177, 179, 170, 159, 148, 132, 127, 124, 111, 22, 29, 33, 48, 68, + 79, 92, 96, 100, 102, 88, 84, 51, 89, 110, 108, 100, 102, 106, 108, 136, + 226, 238, 241, 217, 131, 110, 67, 51, 45, 71, 56, 68, 69, 72, 83, 214, + 213, 209, 130, 132, 143, 162, 157, 155, 146, 138, 119, 115, 100, 33, 22, 26, + 40, 51, 68, 71, 76, 96, 75, 28, 104, 118, 111, 220, 236, 228, 126, 110, + 118, 128, 144, 157, 163, 165, 166, 134, 49, 28, 28, 33, 33, 40, 25, 45, + 81, 206, 202, 199, 124, 131, 130, 142, 132, 134, 131, 134, 114, 81, 22, 24, + 21, 46, 42, 45, 48, 61, 83, 233, 230, 224, 118, 111, 120, 131, 144, 158, + 166, 171, 171, 161, 159, 144, 57, 21, 21, 21, 22, 20, 20, 29, 16, 69, + 75, 76, 68, 63, 71, 69, 68, 61, 51, 59, 173, 210, 202, 190, 118, 110, + 122, 135, 148, 170, 170, 183, 189, 189, 197, 202, 205, 122, 48, 33, 28, 28, + 41, 68, 142, 226, 218, 212, 194, 209, 213, 214, 213, 205, 182, 178, 163, 154, + 136, 126, 120, 114, 75, 48, 51, 46, 51, 63, 55, 44, 41, 38, 37, 36, + 34, 65, 198, 226, 226, 118, 110, 120, 134, 139, 155, 162, 161, 169, 166, 157, + 139, 63, 21, 18, 20, 24, 26, 29, 25, 24, 24, 22, 22, 22, 26, 16, + 42, 49, 51, 56, 52, 51, 51, 49, 51, 32, 36, 6, 37, 46, 60, 65, + 79, 87, 162, 136, 102, 112, 139, 154, 165, 174, 181, 183, 185, 186, 183, 186, + 190, 201, 201, 189, 197, 199, 195, 189, 178, 169, 171, 161, 157, 142, 123, 8, + 9, 8, 18, 13, 5, 127, 102, 114, 126, 92, 88, 84, 95, 146, 209, 128, + 102, 112, 128, 144, 150, 158, 159, 151, 132, 119, 120, 120, 124, 127, 110, 63, + 65, 73, 76, 91, 100, 99, 106, 124, 146, 127, 130, 138, 131, 134, 127, 162, + 157, 146, 56, 195, 230, 236, 182, 138, 124, 119, 116, 92, 67, 59, 72, 76, + 87, 92, 91, 92, 130, 136, 241, 238, 229, 108, 88, 96, 114, 115, 135, 151, + 162, 167, 165, 158, 144, 143, 132, 42, 38, 24, 61, 65, 68, 76, 57, 53, + 75, 89, 83, 75, 124, 136, 232, 233, 232, 127, 102, 114, 123, 131, 143, 144, + 140, 136, 142, 136, 151, 150, 128, 56, 38, 40, 24, 49, 52, 81, 91, 114, + 193, 214, 198, 147, 136, 139, 153, 159, 165, 167, 174, 182, 190, 193, 191, 189, + 169, 81, 48, 56, 81, 96, 108, 123, 193, 229, 220, 183, 173, 187, 190, 161, + 170, 165, 155, 150, 144, 130, 122, 116, 71, 64, 61, 96, 130, 140, 115, 107, + 128, 191, 225, 240, 171, 128, 138, 144, 147, 139, 153, 169, 171, 173, 75, 55, + 38, 29, 42, 55, 89, 116, 222, 225, 222, 182, 179, 178, 173, 174, 155, 142, + 128, 87, 38, 41, 41, 44, 48, 46, 60, 71, 71, 103, 103, 107, 108, 116, + 110, 100, 124, 123, 60, 61, 51, 122, 110, 96, 89, 116, 95, 83, 77, 110, + 76, 14, 51, 75, 64, 45, 48, 56, 48, 44, 44, 61, 49, 37, 89, 104, + 118, 135, 240, 234, 228, 107, 106, 110, 114, 122, 136, 162, 165, 170, 177, 173, + 162, 147, 120, 130, 131, 108, 25, 33, 34, 41, 52, 61, 79, 89, 92, 89, + 85, 84, 46, 92, 99, 104, 95, 96, 99, 111, 155, 242, 245, 241, 198, 127, + 111, 60, 48, 44, 59, 67, 57, 63, 73, 80, 216, 218, 212, 135, 134, 142, + 155, 157, 155, 154, 119, 120, 115, 97, 28, 24, 24, 42, 45, 61, 69, 73, + 79, 64, 38, 60, 106, 107, 212, 232, 229, 126, 112, 120, 130, 146, 157, 169, + 167, 166, 142, 55, 30, 29, 32, 26, 34, 24, 63, 96, 199, 210, 210, 131, + 128, 126, 135, 135, 132, 130, 126, 111, 73, 24, 20, 21, 38, 32, 37, 46, + 61, 77, 233, 232, 228, 120, 114, 119, 127, 144, 159, 167, 171, 171, 161, 159, + 142, 49, 21, 24, 24, 37, 28, 22, 30, 22, 65, 73, 63, 71, 68, 65, + 61, 69, 60, 53, 56, 171, 205, 202, 166, 104, 111, 120, 131, 151, 167, 170, + 177, 181, 189, 193, 199, 212, 114, 46, 36, 32, 32, 32, 52, 134, 229, 222, + 214, 194, 199, 213, 212, 220, 212, 195, 177, 166, 154, 144, 135, 119, 119, 88, + 53, 56, 37, 40, 45, 37, 45, 29, 17, 26, 20, 30, 68, 182, 221, 228, + 116, 110, 122, 134, 139, 155, 163, 163, 166, 163, 155, 132, 55, 25, 18, 24, + 32, 28, 32, 25, 28, 28, 29, 28, 30, 28, 17, 22, 41, 61, 28, 32, + 42, 44, 40, 45, 37, 33, 6, 36, 37, 42, 40, 65, 69, 100, 151, 104, + 100, 130, 147, 161, 170, 177, 178, 182, 181, 185, 186, 189, 191, 199, 198, 190, + 195, 194, 190, 182, 173, 171, 162, 158, 144, 124, 9, 9, 6, 10, 4, 2, + 87, 99, 104, 104, 110, 118, 120, 134, 97, 181, 190, 111, 107, 112, 132, 144, + 148, 154, 148, 136, 126, 120, 112, 126, 130, 130, 80, 65, 61, 61, 63, 63, + 60, 59, 65, 68, 71, 84, 89, 97, 104, 107, 131, 153, 154, 59, 201, 232, + 232, 170, 130, 118, 118, 115, 91, 64, 46, 55, 73, 72, 72, 79, 80, 119, + 111, 241, 237, 226, 107, 99, 95, 114, 128, 127, 144, 159, 170, 165, 155, 144, + 146, 126, 42, 46, 45, 56, 60, 71, 68, 72, 73, 93, 65, 69, 76, 119, + 140, 232, 234, 225, 131, 114, 116, 126, 130, 143, 136, 139, 135, 138, 136, 150, + 146, 124, 52, 49, 38, 32, 73, 91, 88, 104, 110, 186, 210, 206, 153, 132, + 136, 148, 155, 159, 166, 170, 175, 183, 189, 190, 190, 181, 104, 51, 45, 65, + 88, 102, 115, 175, 229, 224, 186, 173, 179, 189, 186, 154, 170, 161, 157, 144, + 144, 131, 126, 95, 61, 67, 89, 106, 111, 99, 111, 123, 162, 230, 238, 171, + 132, 139, 148, 146, 146, 161, 171, 175, 179, 81, 60, 48, 36, 67, 85, 93, + 127, 226, 228, 226, 189, 179, 182, 174, 174, 159, 144, 126, 95, 34, 33, 36, + 13, 13, 9, 12, 13, 34, 36, 16, 14, 32, 33, 25, 25, 36, 41, 36, + 61, 30, 30, 18, 24, 29, 32, 9, 22, 30, 34, 6, 24, 76, 22, 51, + 64, 71, 75, 84, 84, 87, 85, 88, 40, 118, 112, 120, 143, 238, 240, 229, + 107, 106, 112, 118, 127, 142, 158, 161, 166, 170, 174, 161, 146, 124, 130, 127, + 103, 29, 34, 34, 42, 53, 53, 55, 57, 60, 72, 68, 56, 46, 85, 91, + 84, 81, 93, 107, 107, 202, 242, 246, 238, 173, 122, 107, 53, 45, 38, 36, + 40, 44, 51, 71, 79, 221, 224, 208, 131, 127, 124, 147, 154, 153, 146, 118, + 110, 118, 89, 25, 22, 26, 36, 44, 55, 59, 59, 64, 57, 33, 41, 104, + 112, 206, 228, 228, 127, 114, 122, 130, 146, 155, 169, 171, 170, 148, 73, 34, + 29, 34, 24, 29, 44, 75, 124, 208, 214, 197, 128, 124, 123, 131, 131, 135, + 131, 123, 110, 67, 21, 18, 17, 25, 28, 30, 49, 63, 68, 233, 236, 230, + 118, 110, 118, 127, 144, 159, 167, 174, 170, 159, 157, 143, 46, 22, 22, 25, + 26, 37, 32, 24, 17, 44, 49, 44, 45, 56, 55, 46, 46, 55, 56, 61, + 159, 204, 187, 143, 99, 111, 118, 131, 150, 169, 177, 183, 178, 189, 190, 193, + 208, 136, 52, 37, 25, 33, 38, 61, 138, 226, 224, 218, 195, 183, 209, 213, + 213, 212, 198, 177, 169, 158, 153, 138, 118, 119, 102, 59, 61, 49, 41, 38, + 33, 12, 21, 17, 22, 20, 26, 80, 175, 229, 225, 118, 112, 123, 134, 139, + 155, 163, 163, 169, 162, 154, 134, 55, 22, 22, 29, 21, 20, 16, 14, 14, + 12, 10, 10, 10, 6, 17, 21, 13, 21, 18, 16, 12, 14, 24, 34, 34, + 25, 8, 37, 36, 38, 36, 34, 40, 72, 135, 120, 95, 123, 143, 157, 166, + 171, 174, 174, 173, 174, 175, 178, 187, 194, 202, 191, 191, 199, 191, 183, 173, + 173, 162, 159, 146, 127, 6, 6, 6, 10, 5, 4, 197, 191, 183, 179, 179, + 177, 179, 126, 138, 135, 194, 136, 104, 108, 115, 130, 146, 144, 143, 132, 139, + 139, 126, 115, 124, 130, 120, 76, 75, 93, 99, 104, 97, 104, 106, 123, 136, + 126, 132, 126, 106, 110, 95, 104, 143, 64, 187, 232, 233, 191, 128, 118, 116, + 106, 83, 55, 56, 52, 79, 102, 115, 115, 114, 124, 132, 228, 234, 224, 102, + 91, 104, 118, 116, 120, 131, 154, 167, 159, 153, 140, 143, 128, 41, 42, 48, + 30, 34, 40, 40, 30, 48, 67, 44, 40, 118, 110, 163, 230, 232, 226, 128, + 118, 126, 132, 130, 140, 127, 148, 143, 140, 134, 148, 142, 118, 51, 49, 38, + 45, 81, 95, 99, 110, 111, 173, 216, 202, 158, 132, 134, 142, 151, 155, 162, + 165, 170, 179, 186, 189, 185, 185, 132, 55, 56, 65, 95, 107, 126, 167, 225, + 226, 187, 171, 177, 185, 189, 181, 154, 169, 163, 157, 147, 144, 127, 120, 76, + 65, 69, 73, 79, 96, 115, 122, 154, 222, 229, 175, 135, 144, 154, 142, 143, + 159, 178, 181, 183, 92, 52, 44, 25, 61, 88, 102, 162, 229, 229, 225, 185, + 183, 179, 171, 171, 159, 143, 127, 93, 40, 36, 38, 29, 53, 33, 56, 38, + 112, 124, 119, 106, 116, 120, 119, 107, 119, 120, 63, 37, 51, 138, 132, 114, + 114, 134, 126, 111, 108, 108, 103, 72, 32, 52, 118, 134, 138, 131, 135, 130, + 132, 93, 84, 37, 119, 123, 122, 182, 236, 240, 218, 106, 106, 110, 119, 131, + 144, 153, 153, 151, 158, 170, 162, 148, 128, 136, 138, 106, 34, 38, 41, 57, + 67, 69, 49, 68, 69, 67, 60, 72, 65, 76, 81, 92, 95, 99, 112, 169, + 237, 244, 246, 240, 150, 116, 103, 49, 42, 38, 41, 45, 56, 61, 75, 91, + 220, 222, 212, 130, 127, 130, 136, 142, 154, 143, 119, 115, 119, 99, 28, 24, + 28, 40, 45, 42, 44, 48, 38, 57, 25, 48, 89, 103, 202, 224, 221, 130, + 114, 122, 130, 142, 155, 163, 167, 169, 157, 95, 38, 32, 28, 33, 34, 59, + 87, 185, 221, 222, 208, 126, 124, 127, 128, 127, 139, 136, 116, 110, 57, 21, + 17, 24, 38, 40, 49, 56, 67, 83, 232, 230, 230, 119, 110, 122, 134, 144, + 158, 169, 173, 167, 159, 153, 144, 51, 25, 29, 40, 46, 55, 52, 26, 22, + 25, 24, 33, 25, 29, 25, 30, 21, 30, 25, 37, 147, 199, 191, 128, 99, + 112, 118, 128, 132, 166, 177, 174, 177, 181, 191, 197, 206, 154, 65, 41, 32, + 48, 40, 83, 143, 228, 225, 222, 193, 179, 199, 212, 210, 208, 199, 182, 177, + 158, 161, 143, 128, 120, 111, 68, 55, 64, 61, 57, 41, 9, 25, 89, 120, + 93, 91, 128, 194, 216, 222, 114, 111, 120, 134, 132, 151, 159, 166, 162, 161, + 153, 136, 59, 26, 26, 41, 46, 68, 83, 88, 88, 84, 93, 91, 84, 37, + 16, 53, 73, 72, 63, 67, 67, 49, 26, 14, 13, 25, 24, 14, 18, 20, + 25, 25, 18, 34, 104, 132, 100, 100, 138, 144, 155, 162, 157, 159, 154, 154, + 143, 150, 148, 186, 201, 209, 183, 197, 191, 182, 171, 171, 161, 158, 146, 122, + 6, 6, 6, 6, 22, 24, 198, 187, 193, 186, 182, 194, 148, 173, 140, 60, + 194, 171, 112, 107, 107, 108, 119, 131, 134, 144, 135, 132, 140, 131, 122, 134, + 134, 110, 80, 80, 75, 96, 108, 106, 115, 126, 158, 135, 150, 148, 138, 120, + 146, 150, 143, 88, 208, 234, 237, 190, 126, 112, 111, 95, 69, 51, 55, 53, + 97, 111, 112, 116, 115, 126, 128, 212, 226, 222, 96, 89, 104, 118, 118, 118, + 127, 140, 163, 159, 153, 138, 143, 131, 52, 48, 46, 34, 57, 75, 102, 110, + 114, 122, 118, 116, 102, 122, 213, 217, 222, 225, 127, 110, 118, 118, 132, 142, + 120, 132, 142, 146, 138, 146, 144, 123, 46, 42, 41, 41, 88, 88, 99, 100, + 110, 161, 209, 204, 167, 131, 131, 132, 144, 154, 161, 167, 169, 177, 183, 185, + 181, 183, 158, 77, 53, 60, 106, 114, 122, 155, 220, 226, 193, 167, 173, 182, + 189, 189, 163, 153, 167, 169, 159, 154, 139, 127, 107, 84, 84, 88, 114, 120, + 122, 128, 139, 209, 226, 177, 142, 147, 157, 140, 146, 161, 183, 189, 186, 138, + 72, 48, 22, 68, 95, 114, 187, 233, 230, 228, 183, 181, 181, 173, 170, 159, + 143, 127, 85, 37, 34, 38, 63, 55, 59, 64, 38, 131, 139, 124, 110, 107, + 116, 103, 107, 112, 123, 75, 29, 106, 139, 128, 131, 131, 128, 132, 124, 130, + 123, 126, 76, 28, 115, 136, 132, 132, 127, 128, 116, 124, 106, 99, 37, 126, + 126, 124, 199, 240, 241, 221, 106, 103, 108, 118, 134, 147, 159, 155, 140, 151, + 153, 148, 124, 124, 139, 139, 106, 36, 40, 40, 64, 49, 60, 69, 73, 80, + 85, 85, 79, 88, 100, 103, 110, 116, 124, 155, 214, 244, 245, 242, 218, 127, + 118, 80, 44, 37, 37, 49, 53, 56, 68, 72, 96, 222, 228, 221, 123, 122, + 131, 115, 131, 132, 131, 114, 120, 118, 104, 29, 24, 26, 45, 49, 65, 69, + 69, 61, 59, 20, 112, 107, 111, 183, 221, 216, 135, 115, 122, 130, 142, 150, + 166, 167, 171, 170, 135, 52, 38, 33, 37, 56, 72, 103, 197, 222, 224, 208, + 126, 124, 126, 122, 132, 130, 127, 116, 100, 34, 18, 14, 28, 45, 52, 53, + 64, 63, 89, 232, 232, 232, 120, 112, 122, 131, 144, 158, 167, 173, 163, 153, + 148, 136, 61, 33, 26, 40, 60, 68, 67, 52, 17, 32, 106, 107, 97, 96, + 106, 100, 93, 95, 99, 64, 132, 190, 185, 118, 100, 114, 119, 124, 124, 153, + 158, 178, 173, 170, 183, 194, 197, 198, 114, 56, 48, 55, 63, 131, 201, 229, + 226, 222, 187, 177, 193, 204, 204, 202, 199, 175, 175, 166, 157, 155, 136, 122, + 122, 73, 76, 93, 132, 122, 46, 16, 75, 131, 119, 128, 150, 158, 210, 220, + 209, 115, 110, 120, 131, 127, 147, 157, 163, 165, 157, 150, 135, 65, 30, 25, + 45, 80, 95, 93, 87, 92, 93, 93, 93, 96, 63, 22, 67, 81, 80, 80, + 75, 76, 72, 71, 59, 29, 21, 22, 38, 88, 95, 61, 75, 83, 68, 38, + 144, 120, 91, 115, 128, 136, 142, 144, 123, 124, 131, 71, 57, 81, 165, 199, + 213, 190, 187, 190, 179, 170, 170, 159, 153, 143, 116, 5, 8, 9, 17, 57, + 64, 186, 183, 161, 187, 185, 173, 140, 171, 139, 60, 182, 177, 116, 108, 106, + 104, 103, 104, 112, 134, 148, 139, 131, 139, 124, 120, 126, 131, 104, 81, 89, + 103, 73, 99, 112, 155, 147, 140, 154, 138, 132, 122, 147, 111, 89, 146, 226, + 237, 232, 202, 127, 110, 104, 85, 61, 46, 56, 46, 95, 110, 104, 108, 111, + 123, 162, 229, 225, 204, 102, 99, 108, 119, 124, 118, 124, 132, 151, 155, 146, + 130, 146, 132, 49, 51, 22, 83, 83, 93, 97, 111, 123, 118, 116, 103, 115, + 136, 232, 228, 226, 212, 130, 103, 111, 120, 144, 147, 130, 119, 127, 135, 134, + 144, 144, 123, 60, 40, 40, 40, 88, 93, 112, 95, 104, 144, 201, 199, 166, + 132, 130, 130, 143, 147, 158, 163, 161, 170, 175, 182, 177, 177, 170, 99, 56, + 51, 97, 115, 122, 140, 205, 222, 201, 167, 170, 179, 187, 191, 183, 153, 154, + 169, 173, 162, 153, 138, 130, 104, 108, 110, 116, 116, 112, 126, 130, 193, 230, + 179, 142, 153, 161, 140, 143, 173, 185, 190, 191, 163, 63, 51, 41, 81, 103, + 122, 197, 234, 232, 228, 185, 182, 173, 173, 171, 162, 143, 124, 81, 36, 36, + 36, 53, 76, 83, 63, 41, 123, 143, 131, 142, 134, 132, 142, 131, 123, 120, + 77, 59, 134, 143, 128, 124, 120, 114, 110, 123, 114, 103, 122, 56, 26, 118, + 136, 127, 118, 112, 118, 123, 127, 99, 91, 40, 124, 127, 128, 218, 238, 234, + 216, 110, 104, 110, 114, 126, 150, 159, 161, 159, 151, 136, 130, 119, 131, 138, + 144, 111, 65, 41, 42, 68, 52, 64, 77, 81, 76, 76, 80, 79, 95, 115, + 123, 131, 123, 151, 209, 241, 246, 245, 238, 161, 123, 115, 67, 42, 40, 34, + 51, 56, 57, 67, 72, 96, 222, 225, 220, 131, 131, 126, 132, 116, 110, 106, + 112, 123, 112, 103, 29, 28, 25, 48, 63, 76, 77, 72, 76, 53, 21, 106, + 118, 107, 157, 212, 217, 151, 116, 123, 130, 142, 148, 159, 166, 163, 170, 153, + 108, 60, 60, 65, 87, 112, 174, 198, 221, 216, 217, 126, 123, 126, 124, 124, + 132, 118, 112, 71, 24, 18, 16, 30, 44, 51, 61, 71, 71, 102, 229, 230, + 229, 119, 114, 123, 136, 146, 158, 169, 173, 162, 155, 151, 138, 75, 34, 28, + 45, 65, 63, 64, 68, 18, 116, 118, 110, 104, 102, 111, 108, 100, 106, 95, + 69, 77, 179, 177, 116, 104, 115, 118, 122, 127, 131, 166, 175, 182, 161, 177, + 183, 194, 205, 161, 85, 61, 77, 122, 143, 220, 225, 226, 222, 189, 171, 178, + 189, 185, 187, 189, 179, 174, 169, 165, 162, 153, 127, 120, 84, 91, 130, 139, + 135, 38, 10, 84, 134, 122, 144, 150, 162, 216, 222, 217, 110, 108, 120, 131, + 122, 138, 158, 169, 162, 154, 146, 135, 91, 36, 29, 49, 85, 84, 89, 83, + 93, 89, 79, 81, 93, 96, 22, 71, 80, 73, 56, 48, 46, 48, 53, 71, + 46, 22, 16, 85, 85, 85, 87, 89, 75, 68, 63, 44, 48, 52, 75, 104, + 99, 108, 92, 68, 45, 42, 32, 36, 69, 143, 201, 213, 197, 181, 189, 177, + 171, 171, 158, 151, 143, 108, 4, 8, 13, 26, 41, 44, 191, 173, 166, 171, + 163, 169, 143, 138, 131, 64, 185, 177, 136, 119, 107, 103, 104, 104, 100, 108, + 134, 151, 138, 128, 138, 120, 130, 122, 132, 104, 99, 99, 93, 89, 107, 151, + 138, 132, 127, 127, 123, 116, 120, 134, 171, 208, 233, 232, 229, 186, 124, 108, + 88, 65, 53, 45, 51, 45, 75, 103, 108, 100, 110, 130, 209, 229, 228, 208, + 106, 99, 108, 123, 124, 139, 124, 119, 135, 150, 148, 139, 140, 123, 55, 51, + 38, 79, 85, 83, 110, 97, 95, 99, 95, 99, 112, 183, 220, 225, 228, 217, + 131, 123, 110, 119, 135, 134, 147, 135, 119, 119, 130, 135, 144, 126, 64, 37, + 34, 40, 91, 106, 99, 100, 106, 134, 191, 198, 165, 126, 131, 126, 139, 146, + 154, 162, 159, 161, 166, 171, 177, 171, 173, 128, 63, 68, 102, 107, 123, 134, + 175, 222, 208, 166, 165, 177, 189, 190, 190, 174, 148, 153, 170, 167, 161, 150, + 132, 128, 126, 120, 107, 110, 115, 118, 119, 151, 220, 190, 148, 151, 167, 143, + 144, 178, 189, 197, 198, 182, 89, 56, 41, 52, 106, 128, 210, 234, 234, 230, + 179, 179, 174, 170, 174, 163, 142, 118, 57, 34, 34, 24, 59, 60, 72, 69, + 51, 79, 102, 139, 96, 134, 131, 127, 124, 130, 119, 80, 57, 92, 143, 128, + 135, 110, 114, 124, 108, 112, 112, 112, 64, 24, 115, 130, 116, 123, 128, 122, + 124, 104, 95, 95, 52, 111, 118, 136, 225, 237, 237, 214, 112, 108, 111, 112, + 123, 144, 158, 166, 158, 153, 150, 146, 128, 134, 143, 144, 118, 95, 44, 45, + 67, 46, 59, 60, 67, 69, 71, 69, 93, 96, 124, 130, 126, 153, 198, 236, + 244, 248, 245, 225, 132, 119, 107, 56, 40, 36, 37, 51, 53, 60, 68, 83, + 127, 205, 216, 221, 132, 116, 123, 124, 115, 119, 108, 108, 119, 120, 103, 30, + 24, 34, 38, 40, 77, 81, 71, 68, 63, 17, 111, 115, 104, 120, 197, 214, + 183, 122, 119, 131, 138, 147, 153, 165, 163, 174, 175, 155, 114, 115, 135, 165, + 190, 205, 197, 226, 210, 210, 127, 124, 126, 126, 134, 124, 114, 91, 30, 17, + 17, 21, 41, 40, 46, 65, 67, 71, 103, 224, 232, 225, 118, 108, 118, 128, + 146, 158, 167, 171, 162, 154, 148, 139, 114, 42, 28, 46, 59, 61, 60, 55, + 18, 122, 120, 134, 118, 108, 111, 93, 93, 102, 107, 89, 55, 130, 177, 126, + 97, 114, 119, 123, 130, 126, 151, 158, 171, 158, 169, 175, 189, 197, 206, 170, + 138, 158, 185, 217, 225, 226, 221, 222, 185, 170, 166, 178, 181, 178, 183, 181, + 181, 174, 165, 155, 162, 146, 124, 88, 99, 119, 146, 126, 33, 12, 71, 118, + 135, 134, 148, 175, 220, 216, 221, 111, 108, 120, 134, 127, 144, 158, 167, 162, + 154, 143, 136, 112, 46, 36, 48, 84, 84, 84, 92, 100, 97, 92, 79, 95, + 68, 30, 63, 77, 72, 51, 53, 52, 42, 41, 68, 56, 25, 16, 89, 76, + 80, 77, 71, 71, 57, 49, 49, 42, 45, 38, 41, 53, 48, 33, 30, 33, + 28, 22, 38, 69, 150, 209, 220, 198, 177, 187, 181, 174, 170, 161, 148, 140, + 99, 2, 6, 12, 28, 4, 2, 190, 171, 179, 173, 170, 163, 183, 144, 130, + 59, 187, 173, 142, 106, 115, 114, 106, 106, 104, 100, 111, 132, 142, 139, 136, + 134, 114, 124, 124, 131, 123, 115, 124, 119, 136, 136, 154, 146, 135, 132, 130, + 135, 173, 208, 228, 234, 236, 232, 208, 170, 112, 97, 75, 56, 42, 45, 51, + 52, 88, 100, 103, 110, 112, 158, 222, 218, 229, 205, 96, 95, 110, 119, 120, + 136, 115, 118, 123, 143, 138, 136, 140, 124, 59, 56, 71, 106, 102, 80, 91, + 84, 102, 95, 95, 91, 112, 195, 226, 224, 216, 193, 132, 111, 118, 134, 148, + 144, 153, 153, 140, 120, 118, 134, 142, 127, 64, 48, 49, 48, 89, 99, 102, + 95, 102, 107, 189, 199, 175, 130, 124, 124, 138, 143, 150, 159, 165, 153, 153, + 158, 159, 169, 170, 147, 92, 67, 65, 93, 118, 124, 159, 216, 217, 167, 163, + 174, 183, 187, 191, 190, 178, 144, 154, 173, 167, 157, 150, 139, 128, 128, 135, + 116, 104, 111, 122, 130, 194, 214, 163, 154, 166, 142, 146, 183, 193, 204, 202, + 195, 150, 87, 51, 53, 115, 165, 221, 233, 234, 232, 186, 182, 169, 170, 171, + 162, 134, 107, 40, 34, 33, 29, 65, 61, 68, 72, 53, 57, 138, 144, 135, + 138, 135, 128, 128, 126, 115, 79, 64, 93, 144, 112, 119, 110, 128, 116, 107, + 115, 112, 111, 71, 28, 116, 132, 112, 110, 110, 97, 112, 102, 91, 73, 77, + 112, 124, 179, 226, 242, 234, 213, 112, 111, 116, 107, 118, 139, 153, 162, 167, + 162, 155, 147, 140, 124, 130, 147, 134, 103, 46, 48, 52, 59, 60, 76, 80, + 75, 71, 76, 88, 108, 128, 127, 142, 189, 233, 241, 246, 246, 244, 170, 120, + 119, 95, 44, 36, 24, 40, 46, 55, 67, 69, 83, 179, 208, 214, 206, 127, + 120, 126, 128, 118, 118, 119, 103, 107, 119, 108, 34, 25, 26, 37, 63, 75, + 81, 64, 67, 61, 14, 106, 114, 107, 108, 134, 201, 198, 127, 120, 127, 135, + 143, 146, 153, 150, 177, 181, 178, 169, 185, 198, 201, 208, 206, 213, 202, 212, + 163, 127, 127, 134, 136, 130, 119, 114, 38, 20, 17, 14, 28, 38, 44, 51, + 61, 65, 72, 173, 226, 228, 226, 118, 104, 118, 126, 143, 153, 165, 165, 167, + 159, 153, 147, 140, 61, 38, 36, 60, 63, 61, 57, 22, 88, 123, 135, 127, + 119, 130, 112, 112, 106, 99, 106, 55, 76, 171, 142, 100, 104, 118, 122, 124, + 127, 132, 158, 161, 157, 165, 169, 182, 189, 204, 213, 208, 217, 218, 225, 222, + 221, 226, 209, 186, 165, 166, 143, 165, 171, 181, 182, 181, 181, 170, 169, 161, + 162, 142, 118, 100, 132, 143, 69, 29, 10, 63, 118, 119, 124, 135, 158, 217, + 228, 217, 112, 107, 118, 130, 122, 151, 158, 163, 158, 155, 146, 139, 126, 67, + 37, 56, 83, 80, 89, 91, 93, 92, 93, 96, 80, 80, 26, 53, 76, 68, + 44, 51, 37, 38, 46, 48, 48, 25, 18, 48, 72, 46, 60, 61, 69, 48, + 42, 40, 37, 32, 38, 36, 40, 30, 26, 30, 26, 29, 26, 64, 71, 173, + 214, 221, 187, 173, 185, 179, 174, 171, 162, 146, 135, 52, 2, 6, 13, 38, + 2, 1, 189, 177, 161, 169, 170, 163, 159, 162, 130, 52, 177, 169, 140, 127, + 103, 100, 118, 110, 104, 103, 102, 107, 134, 146, 142, 143, 135, 118, 116, 136, + 158, 144, 139, 143, 150, 154, 159, 166, 170, 171, 185, 206, 224, 230, 236, 234, + 229, 217, 187, 124, 103, 77, 61, 48, 41, 49, 53, 73, 92, 88, 100, 111, + 154, 190, 229, 232, 229, 213, 111, 95, 103, 115, 131, 134, 120, 124, 119, 130, + 131, 139, 144, 131, 107, 88, 61, 93, 106, 108, 89, 88, 97, 119, 95, 102, + 130, 209, 220, 220, 220, 163, 118, 120, 124, 131, 136, 151, 150, 153, 151, 139, + 115, 124, 138, 132, 107, 60, 55, 51, 95, 83, 97, 93, 99, 100, 175, 198, + 177, 127, 120, 124, 136, 146, 151, 157, 162, 151, 150, 144, 144, 154, 163, 155, + 110, 65, 45, 81, 111, 126, 147, 202, 217, 174, 161, 173, 181, 185, 187, 187, + 190, 178, 150, 154, 169, 166, 157, 150, 144, 132, 132, 135, 118, 111, 120, 126, + 158, 222, 177, 155, 163, 147, 183, 187, 202, 208, 205, 206, 190, 123, 64, 69, + 126, 191, 233, 233, 234, 226, 181, 179, 177, 171, 170, 150, 135, 88, 36, 33, + 34, 46, 65, 71, 57, 76, 65, 55, 128, 143, 134, 138, 128, 128, 136, 126, + 123, 87, 67, 97, 138, 127, 119, 114, 119, 100, 115, 111, 111, 115, 68, 18, + 122, 130, 106, 112, 104, 107, 93, 75, 77, 108, 99, 112, 131, 216, 236, 230, + 238, 202, 115, 116, 116, 118, 110, 127, 150, 159, 162, 163, 159, 155, 148, 135, + 138, 131, 154, 118, 102, 85, 83, 92, 95, 96, 96, 104, 104, 100, 99, 118, + 134, 127, 186, 229, 233, 238, 245, 242, 220, 126, 122, 114, 65, 41, 36, 30, + 44, 49, 61, 67, 76, 179, 209, 208, 216, 198, 114, 128, 135, 124, 130, 131, + 134, 124, 104, 120, 115, 46, 22, 25, 53, 60, 63, 77, 81, 60, 56, 13, + 103, 107, 104, 110, 110, 138, 198, 136, 120, 124, 128, 134, 135, 136, 138, 140, + 155, 185, 183, 193, 195, 206, 212, 213, 202, 208, 189, 127, 126, 134, 135, 132, + 122, 120, 59, 20, 17, 16, 13, 37, 44, 48, 64, 65, 68, 93, 206, 220, + 226, 224, 119, 107, 115, 123, 135, 148, 162, 165, 166, 162, 151, 144, 127, 110, + 53, 34, 37, 64, 61, 59, 28, 84, 123, 135, 112, 123, 130, 95, 123, 104, + 99, 97, 63, 51, 159, 175, 108, 95, 112, 122, 124, 123, 124, 140, 142, 154, + 166, 171, 173, 179, 185, 201, 198, 208, 214, 216, 220, 217, 210, 194, 177, 165, + 142, 140, 139, 144, 165, 171, 181, 179, 175, 165, 163, 165, 162, 134, 107, 140, + 96, 36, 14, 12, 59, 112, 122, 134, 144, 166, 218, 221, 220, 118, 108, 116, + 124, 124, 159, 159, 161, 158, 155, 146, 135, 126, 110, 49, 63, 87, 92, 83, + 85, 89, 89, 95, 93, 99, 91, 40, 48, 77, 68, 46, 38, 46, 46, 46, + 45, 45, 24, 18, 75, 69, 65, 59, 48, 49, 40, 45, 40, 49, 40, 34, + 42, 36, 33, 28, 28, 22, 26, 20, 59, 84, 202, 217, 220, 166, 167, 185, + 183, 174, 169, 161, 144, 132, 42, 2, 4, 12, 32, 4, 10, 181, 182, 162, + 165, 173, 174, 154, 165, 130, 60, 170, 167, 143, 130, 122, 111, 91, 96, 114, + 112, 107, 103, 104, 127, 147, 139, 130, 123, 131, 151, 163, 177, 181, 189, 194, + 193, 201, 198, 204, 216, 218, 225, 228, 230, 229, 218, 217, 181, 136, 102, 76, + 63, 51, 44, 45, 63, 75, 88, 81, 106, 144, 171, 187, 212, 220, 226, 229, + 209, 118, 89, 112, 106, 115, 131, 146, 148, 131, 122, 120, 144, 144, 143, 130, + 119, 122, 124, 130, 123, 108, 97, 85, 115, 95, 104, 169, 208, 224, 221, 204, + 161, 127, 115, 116, 132, 147, 154, 143, 155, 155, 147, 136, 118, 131, 134, 120, + 100, 65, 64, 96, 99, 93, 93, 89, 97, 154, 202, 177, 126, 119, 127, 140, + 146, 151, 159, 142, 136, 132, 130, 130, 134, 148, 154, 135, 97, 72, 61, 93, + 115, 138, 174, 212, 185, 158, 163, 174, 179, 182, 181, 185, 185, 171, 151, 162, + 169, 161, 157, 144, 134, 132, 132, 108, 111, 110, 120, 127, 193, 212, 158, 157, + 143, 189, 199, 208, 212, 212, 208, 208, 183, 139, 146, 191, 225, 236, 236, 234, + 218, 189, 183, 177, 173, 162, 139, 123, 56, 32, 30, 34, 51, 72, 71, 87, + 85, 75, 55, 131, 146, 107, 134, 118, 115, 135, 138, 123, 111, 68, 79, 140, + 107, 118, 111, 107, 106, 116, 111, 102, 118, 53, 24, 115, 127, 103, 107, 92, + 95, 104, 102, 104, 108, 114, 153, 209, 226, 234, 237, 232, 189, 116, 120, 110, + 119, 123, 112, 138, 150, 154, 158, 155, 157, 154, 151, 143, 126, 140, 157, 119, + 115, 116, 115, 115, 120, 119, 118, 118, 115, 110, 120, 148, 191, 226, 229, 236, + 241, 241, 233, 146, 120, 123, 110, 55, 36, 32, 36, 56, 59, 60, 73, 182, + 206, 210, 214, 206, 199, 123, 116, 128, 122, 139, 123, 130, 124, 131, 111, 115, + 97, 26, 41, 30, 32, 63, 79, 79, 64, 46, 22, 95, 106, 107, 95, 99, + 107, 122, 178, 173, 127, 127, 124, 128, 130, 130, 130, 131, 132, 132, 143, 162, + 166, 170, 179, 183, 161, 126, 130, 128, 126, 124, 120, 115, 49, 20, 16, 14, + 12, 17, 29, 37, 49, 64, 64, 73, 173, 220, 220, 224, 217, 120, 110, 118, + 126, 136, 146, 158, 166, 166, 163, 157, 154, 138, 138, 104, 69, 48, 42, 46, + 61, 29, 88, 123, 131, 130, 115, 114, 99, 102, 118, 93, 100, 59, 41, 134, + 169, 135, 93, 102, 119, 123, 126, 120, 122, 126, 153, 163, 159, 170, 165, 165, + 159, 154, 175, 187, 193, 202, 198, 187, 162, 139, 143, 139, 138, 139, 142, 138, + 143, 155, 161, 157, 155, 162, 151, 142, 119, 132, 96, 34, 8, 14, 10, 53, + 102, 128, 150, 143, 189, 206, 216, 218, 120, 108, 110, 124, 147, 158, 170, 158, + 155, 155, 143, 136, 127, 126, 95, 60, 49, 60, 80, 87, 95, 89, 87, 99, + 76, 110, 34, 30, 69, 53, 57, 49, 48, 52, 49, 42, 45, 25, 14, 65, + 69, 72, 73, 73, 65, 56, 53, 44, 52, 48, 26, 42, 44, 44, 34, 30, + 28, 26, 34, 44, 112, 212, 225, 218, 157, 161, 178, 182, 174, 169, 159, 146, + 131, 30, 2, 4, 10, 30, 4, 1, 183, 162, 163, 159, 161, 151, 150, 138, + 124, 56, 165, 165, 143, 128, 126, 119, 106, 83, 80, 95, 108, 108, 103, 106, + 112, 120, 128, 135, 136, 140, 140, 151, 173, 185, 194, 197, 206, 202, 206, 214, + 220, 221, 217, 217, 214, 199, 162, 128, 97, 72, 60, 49, 41, 42, 53, 69, + 88, 75, 147, 173, 204, 213, 209, 216, 216, 217, 212, 158, 114, 92, 139, 120, + 127, 132, 136, 130, 134, 143, 138, 134, 148, 147, 142, 138, 146, 148, 162, 147, + 136, 122, 112, 83, 81, 103, 193, 218, 218, 216, 217, 154, 131, 126, 124, 155, + 155, 147, 146, 142, 140, 142, 147, 135, 115, 134, 131, 119, 91, 111, 100, 108, + 84, 97, 92, 93, 124, 189, 187, 143, 126, 127, 138, 142, 142, 140, 136, 131, + 128, 120, 120, 120, 122, 140, 142, 119, 83, 44, 75, 110, 126, 144, 194, 204, + 155, 159, 166, 174, 177, 178, 179, 185, 182, 158, 151, 165, 166, 154, 138, 138, + 132, 114, 81, 68, 91, 111, 119, 140, 208, 171, 165, 150, 191, 199, 213, 213, + 216, 210, 216, 210, 206, 212, 228, 232, 230, 234, 233, 205, 183, 185, 181, 170, + 143, 132, 92, 36, 32, 30, 37, 61, 73, 73, 84, 80, 81, 53, 115, 112, + 139, 127, 135, 140, 138, 135, 124, 120, 65, 72, 104, 134, 128, 96, 110, 102, + 110, 115, 114, 111, 63, 22, 112, 119, 119, 102, 99, 97, 103, 108, 134, 182, + 198, 222, 217, 232, 226, 230, 228, 157, 118, 119, 126, 131, 143, 123, 116, 135, + 142, 142, 143, 144, 150, 150, 153, 142, 136, 148, 157, 148, 169, 178, 187, 197, + 202, 206, 210, 216, 218, 216, 221, 221, 225, 230, 237, 238, 226, 157, 120, 124, + 122, 89, 38, 32, 30, 40, 59, 61, 93, 159, 222, 208, 205, 218, 218, 163, + 130, 132, 138, 132, 134, 127, 139, 123, 127, 115, 112, 97, 71, 55, 33, 32, + 30, 73, 77, 60, 60, 20, 95, 99, 95, 92, 96, 88, 103, 111, 116, 120, + 124, 154, 158, 153, 150, 148, 144, 142, 138, 132, 134, 130, 130, 130, 131, 130, + 126, 124, 122, 120, 116, 83, 34, 20, 16, 14, 12, 14, 40, 34, 48, 61, + 65, 69, 150, 206, 214, 216, 220, 212, 118, 111, 114, 126, 136, 139, 143, 151, + 158, 158, 154, 146, 150, 140, 144, 115, 99, 87, 67, 42, 28, 67, 126, 118, + 128, 100, 120, 116, 115, 119, 96, 99, 72, 41, 95, 154, 177, 112, 102, 110, + 118, 119, 120, 123, 124, 128, 130, 134, 132, 132, 142, 130, 128, 126, 127, 131, + 128, 126, 130, 132, 132, 138, 138, 140, 143, 140, 139, 143, 138, 134, 132, 131, + 131, 127, 138, 139, 103, 33, 8, 12, 16, 10, 52, 100, 107, 136, 193, 198, + 198, 214, 208, 118, 114, 118, 122, 150, 155, 157, 148, 157, 153, 146, 139, 130, + 124, 123, 123, 103, 72, 69, 55, 92, 88, 84, 85, 73, 96, 37, 22, 83, + 44, 45, 45, 57, 52, 52, 41, 42, 25, 14, 59, 65, 67, 63, 49, 53, + 40, 36, 30, 34, 36, 25, 40, 48, 42, 36, 37, 40, 24, 48, 56, 140, + 221, 224, 212, 148, 155, 165, 178, 178, 167, 159, 146, 127, 25, 4, 4, 12, + 24, 6, 2, 162, 161, 157, 154, 154, 154, 151, 128, 127, 52, 132, 158, 147, + 135, 139, 130, 118, 106, 89, 75, 71, 81, 102, 107, 107, 106, 106, 112, 110, + 118, 119, 124, 130, 144, 166, 178, 186, 199, 204, 201, 202, 202, 199, 182, 162, + 127, 99, 85, 69, 57, 48, 38, 40, 46, 55, 69, 68, 126, 228, 206, 214, + 206, 217, 208, 217, 183, 146, 122, 107, 119, 119, 120, 116, 123, 116, 122, 120, + 127, 126, 132, 138, 130, 139, 144, 142, 150, 151, 153, 163, 155, 110, 83, 95, + 118, 222, 208, 210, 210, 216, 150, 134, 136, 148, 131, 151, 148, 144, 134, 134, + 132, 134, 132, 131, 132, 134, 120, 127, 124, 120, 100, 87, 88, 92, 87, 97, + 162, 191, 169, 123, 124, 130, 134, 136, 136, 130, 130, 122, 120, 119, 114, 111, + 108, 115, 134, 96, 83, 87, 87, 107, 126, 159, 209, 165, 155, 162, 162, 162, + 169, 173, 178, 182, 177, 155, 154, 162, 147, 136, 139, 124, 85, 59, 57, 59, + 106, 108, 112, 175, 185, 174, 138, 185, 201, 202, 209, 214, 220, 218, 221, 218, + 222, 230, 228, 232, 229, 221, 194, 190, 183, 179, 165, 135, 104, 51, 34, 32, + 30, 30, 65, 73, 73, 77, 85, 85, 57, 89, 123, 138, 132, 116, 122, 116, + 132, 110, 85, 72, 64, 104, 136, 111, 92, 112, 108, 110, 114, 120, 84, 61, + 16, 100, 115, 107, 107, 71, 95, 111, 195, 216, 212, 216, 236, 220, 229, 242, + 226, 199, 128, 119, 120, 140, 142, 134, 142, 132, 127, 127, 124, 127, 130, 123, + 127, 130, 136, 146, 143, 131, 166, 169, 181, 189, 198, 202, 208, 212, 216, 218, + 221, 222, 228, 228, 230, 226, 201, 140, 118, 122, 127, 118, 59, 33, 29, 32, + 48, 59, 97, 186, 193, 197, 208, 212, 232, 210, 146, 126, 116, 123, 120, 134, + 128, 119, 131, 119, 118, 127, 99, 84, 77, 68, 53, 29, 42, 76, 56, 57, + 17, 91, 100, 91, 71, 64, 69, 77, 77, 73, 75, 75, 89, 108, 114, 115, + 112, 107, 112, 116, 116, 116, 115, 112, 114, 119, 118, 115, 108, 104, 76, 37, + 24, 16, 14, 12, 9, 12, 17, 33, 38, 63, 64, 72, 155, 201, 205, 206, + 209, 216, 155, 118, 108, 118, 132, 127, 131, 139, 139, 148, 147, 158, 154, 144, + 147, 132, 140, 151, 147, 108, 73, 51, 32, 88, 126, 104, 122, 99, 116, 108, + 115, 92, 100, 95, 33, 84, 142, 148, 151, 146, 139, 138, 142, 138, 115, 114, + 118, 119, 124, 126, 127, 124, 123, 128, 120, 104, 99, 92, 85, 89, 100, 116, + 124, 131, 136, 138, 134, 127, 134, 134, 136, 139, 138, 135, 135, 126, 102, 34, + 17, 9, 8, 16, 10, 51, 110, 139, 195, 205, 202, 199, 216, 189, 116, 108, + 123, 131, 130, 144, 150, 154, 151, 151, 147, 142, 138, 131, 122, 120, 118, 130, + 118, 83, 60, 60, 61, 75, 68, 95, 34, 21, 77, 59, 46, 49, 60, 42, + 44, 46, 34, 26, 20, 63, 79, 60, 56, 45, 42, 41, 32, 33, 40, 29, + 46, 42, 37, 30, 28, 29, 33, 18, 49, 57, 161, 221, 226, 209, 143, 148, + 154, 169, 175, 166, 159, 147, 120, 13, 5, 2, 12, 24, 14, 17, 150, 153, + 154, 158, 151, 151, 155, 159, 120, 49, 154, 154, 147, 146, 136, 132, 124, 115, + 99, 91, 76, 65, 64, 64, 76, 91, 100, 103, 107, 107, 107, 108, 110, 115, + 122, 127, 131, 138, 154, 153, 148, 146, 123, 103, 91, 76, 57, 53, 53, 42, + 36, 38, 45, 46, 76, 84, 75, 166, 208, 220, 206, 206, 187, 165, 142, 128, + 114, 95, 87, 83, 84, 88, 92, 95, 93, 100, 104, 107, 106, 110, 115, 122, + 128, 134, 131, 131, 135, 147, 140, 134, 107, 77, 107, 181, 198, 198, 171, 174, + 150, 143, 120, 115, 127, 122, 128, 127, 128, 120, 132, 134, 124, 138, 134, 130, + 122, 119, 122, 118, 112, 69, 45, 56, 87, 80, 83, 131, 175, 177, 126, 134, + 131, 131, 132, 131, 127, 128, 123, 122, 119, 114, 111, 111, 108, 106, 97, 89, + 63, 75, 87, 106, 135, 178, 187, 150, 157, 159, 158, 153, 162, 167, 169, 174, + 171, 161, 140, 138, 142, 131, 97, 65, 55, 44, 45, 77, 103, 112, 154, 199, + 175, 155, 165, 185, 199, 202, 205, 205, 204, 202, 204, 201, 202, 202, 205, 202, + 195, 186, 181, 179, 169, 140, 116, 48, 29, 30, 30, 33, 36, 65, 64, 71, + 81, 79, 83, 75, 68, 69, 76, 89, 69, 72, 81, 72, 72, 92, 89, 77, + 79, 88, 93, 108, 96, 97, 97, 97, 92, 95, 53, 13, 55, 96, 100, 77, + 83, 97, 170, 208, 210, 214, 225, 244, 218, 214, 206, 157, 130, 122, 124, 134, + 136, 136, 139, 139, 136, 134, 127, 130, 132, 130, 127, 123, 120, 122, 123, 124, + 122, 122, 123, 123, 132, 140, 159, 182, 189, 201, 202, 199, 195, 198, 199, 186, + 159, 120, 116, 119, 127, 127, 104, 36, 28, 20, 53, 53, 79, 171, 189, 193, + 205, 199, 204, 178, 146, 132, 118, 132, 120, 119, 123, 127, 111, 115, 106, 111, + 103, 123, 106, 108, 96, 81, 30, 36, 76, 53, 53, 21, 96, 93, 60, 57, + 53, 56, 53, 57, 46, 46, 41, 37, 34, 36, 36, 32, 32, 30, 30, 29, + 26, 25, 22, 24, 28, 24, 22, 21, 18, 20, 14, 14, 12, 10, 10, 14, + 24, 34, 28, 63, 59, 76, 151, 191, 191, 187, 201, 209, 181, 131, 114, 120, + 130, 124, 127, 132, 131, 134, 132, 134, 143, 139, 130, 143, 140, 123, 122, 123, + 154, 135, 49, 32, 73, 72, 76, 79, 83, 84, 88, 88, 93, 93, 71, 22, + 56, 96, 111, 100, 95, 89, 97, 100, 104, 108, 107, 103, 103, 114, 115, 107, + 103, 100, 77, 41, 21, 16, 12, 12, 13, 20, 57, 93, 103, 108, 110, 106, + 97, 100, 103, 103, 102, 99, 96, 84, 44, 24, 12, 8, 6, 18, 22, 18, + 95, 148, 182, 198, 186, 181, 202, 202, 136, 112, 116, 127, 122, 122, 122, 130, + 132, 134, 136, 132, 126, 127, 126, 127, 123, 115, 116, 132, 119, 103, 89, 91, + 81, 80, 64, 52, 25, 51, 64, 71, 59, 60, 45, 42, 45, 37, 24, 18, + 59, 49, 37, 42, 30, 25, 22, 32, 30, 30, 34, 30, 26, 28, 25, 29, + 25, 26, 41, 53, 69, 179, 225, 226, 206, 140, 147, 151, 162, 170, 163, 158, + 142, 99, 8, 4, 2, 6, 16, 10, 5, 162, 158, 158, 158, 154, 162, 153, + 144, 118, 52, 143, 153, 132, 139, 130, 130, 116, 118, 108, 104, 93, 87, 73, + 69, 60, 56, 53, 57, 60, 68, 79, 95, 96, 99, 97, 95, 95, 91, 89, + 88, 85, 77, 63, 52, 49, 46, 45, 37, 33, 36, 48, 61, 63, 59, 69, + 49, 49, 99, 143, 159, 153, 146, 144, 93, 80, 69, 64, 49, 34, 37, 38, + 32, 30, 30, 33, 34, 34, 40, 38, 36, 44, 72, 81, 88, 88, 85, 83, + 114, 110, 68, 40, 59, 99, 157, 151, 159, 157, 159, 130, 107, 87, 88, 102, + 106, 103, 102, 107, 108, 112, 112, 114, 114, 115, 111, 106, 102, 103, 96, 67, + 42, 40, 36, 41, 76, 68, 76, 131, 146, 128, 130, 108, 124, 124, 127, 123, + 124, 122, 115, 110, 108, 102, 111, 103, 106, 106, 91, 38, 44, 80, 76, 112, + 132, 178, 169, 150, 155, 154, 154, 153, 155, 157, 155, 150, 144, 139, 140, 131, + 108, 65, 53, 48, 49, 56, 63, 106, 108, 178, 189, 179, 167, 120, 151, 183, + 187, 191, 194, 193, 191, 189, 185, 178, 177, 181, 182, 181, 178, 163, 146, 135, + 108, 51, 33, 30, 30, 42, 55, 49, 60, 45, 46, 69, 73, 80, 79, 83, + 87, 103, 92, 96, 92, 100, 99, 97, 93, 93, 91, 79, 97, 95, 65, 56, + 30, 28, 42, 40, 38, 38, 14, 34, 40, 55, 80, 73, 95, 163, 205, 218, + 210, 210, 183, 157, 140, 130, 123, 130, 124, 131, 128, 130, 130, 131, 131, 131, + 126, 126, 123, 123, 122, 120, 112, 118, 119, 119, 119, 119, 118, 120, 116, 114, + 112, 111, 112, 114, 116, 118, 118, 115, 112, 112, 111, 114, 112, 119, 123, 128, + 123, 57, 22, 25, 29, 55, 51, 139, 189, 183, 193, 205, 175, 143, 135, 119, + 115, 103, 108, 106, 102, 108, 103, 102, 92, 97, 99, 97, 95, 102, 96, 88, + 84, 32, 42, 57, 51, 42, 26, 89, 92, 60, 52, 52, 51, 49, 49, 45, + 38, 34, 26, 30, 26, 25, 26, 25, 22, 22, 22, 18, 17, 16, 18, 17, + 16, 14, 13, 12, 10, 9, 9, 13, 12, 17, 30, 22, 29, 40, 61, 65, + 107, 179, 183, 193, 186, 163, 151, 124, 115, 124, 120, 126, 119, 123, 118, 116, + 120, 126, 131, 132, 127, 124, 131, 131, 122, 118, 124, 131, 110, 30, 60, 69, + 69, 68, 63, 73, 71, 73, 68, 80, 76, 38, 24, 36, 41, 40, 34, 30, + 26, 25, 21, 21, 21, 21, 17, 17, 17, 16, 14, 14, 14, 13, 12, 10, + 9, 8, 9, 10, 12, 10, 13, 12, 10, 10, 12, 10, 9, 8, 10, 10, + 9, 10, 10, 9, 9, 8, 4, 8, 20, 24, 20, 100, 161, 201, 191, 197, + 186, 157, 130, 118, 112, 116, 119, 111, 108, 116, 122, 120, 126, 128, 124, 119, + 116, 116, 112, 104, 108, 119, 116, 111, 83, 77, 65, 69, 60, 44, 41, 36, + 38, 40, 42, 40, 42, 38, 49, 42, 36, 25, 10, 55, 52, 29, 22, 48, + 76, 118, 155, 142, 89, 28, 36, 40, 13, 20, 20, 28, 18, 45, 42, 93, + 205, 225, 232, 202, 136, 140, 146, 158, 169, 163, 151, 138, 61, 2, 5, 2, + 2, 1, 1, 0, 61, 60, 65, 106, 110, 111, 126, 119, 111, 49, 79, 88, + 87, 87, 87, 83, 83, 79, 76, 75, 73, 67, 59, 63, 57, 53, 49, 52, + 49, 51, 46, 42, 41, 40, 44, 42, 44, 42, 44, 44, 44, 44, 42, 36, + 30, 26, 30, 40, 56, 44, 60, 67, 63, 52, 51, 65, 45, 28, 38, 45, + 41, 38, 34, 26, 38, 40, 30, 24, 25, 25, 25, 22, 21, 22, 20, 18, + 20, 21, 20, 17, 12, 16, 20, 17, 17, 24, 28, 6, 12, 26, 26, 33, + 18, 34, 45, 48, 67, 32, 5, 8, 20, 20, 17, 18, 20, 22, 18, 18, + 22, 20, 21, 22, 25, 30, 30, 30, 29, 26, 34, 41, 48, 61, 61, 51, + 44, 56, 53, 44, 37, 17, 18, 28, 24, 22, 17, 20, 17, 13, 17, 13, + 10, 16, 22, 13, 13, 20, 20, 24, 26, 26, 44, 96, 132, 173, 158, 146, + 144, 148, 147, 150, 153, 147, 144, 142, 142, 131, 97, 61, 51, 46, 46, 49, + 36, 64, 103, 106, 167, 186, 195, 178, 136, 111, 112, 128, 123, 123, 118, 131, + 126, 122, 119, 118, 119, 122, 118, 116, 112, 73, 60, 40, 30, 29, 33, 34, + 30, 29, 14, 13, 33, 13, 13, 13, 14, 38, 13, 10, 29, 30, 12, 12, + 29, 13, 13, 13, 16, 26, 44, 41, 59, 56, 97, 111, 119, 118, 104, 95, + 63, 13, 92, 100, 100, 56, 76, 89, 118, 142, 157, 143, 140, 128, 114, 108, + 110, 112, 114, 112, 127, 127, 120, 126, 126, 127, 127, 126, 124, 124, 122, 123, + 123, 120, 120, 122, 122, 122, 119, 116, 118, 116, 118, 116, 116, 116, 115, 114, + 115, 115, 115, 115, 114, 115, 118, 120, 124, 127, 126, 95, 29, 21, 24, 24, + 38, 48, 102, 161, 178, 148, 140, 111, 96, 91, 92, 93, 96, 97, 96, 97, + 97, 100, 100, 100, 97, 102, 95, 95, 92, 92, 89, 63, 40, 38, 46, 48, + 42, 24, 84, 48, 44, 34, 32, 32, 33, 24, 25, 22, 20, 14, 13, 12, + 12, 12, 12, 12, 12, 10, 9, 9, 9, 10, 12, 13, 13, 16, 14, 16, + 17, 18, 24, 26, 38, 21, 29, 41, 71, 64, 76, 157, 154, 143, 135, 130, + 122, 120, 112, 107, 112, 112, 115, 114, 110, 111, 115, 112, 112, 118, 115, 116, + 115, 111, 106, 100, 100, 102, 99, 37, 49, 9, 6, 9, 6, 5, 6, 5, + 8, 9, 4, 10, 8, 4, 24, 21, 13, 4, 18, 9, 1, 1, 2, 2, + 4, 4, 5, 6, 5, 5, 5, 5, 4, 5, 6, 9, 9, 9, 9, 10, + 10, 10, 9, 8, 8, 8, 8, 8, 5, 8, 8, 8, 6, 6, 5, 2, + 5, 8, 18, 21, 25, 22, 118, 154, 173, 158, 159, 135, 116, 111, 104, 102, + 104, 97, 103, 104, 99, 100, 108, 111, 114, 111, 110, 106, 100, 99, 102, 97, + 97, 91, 60, 26, 13, 9, 9, 10, 10, 9, 12, 10, 6, 10, 14, 16, + 14, 14, 17, 18, 22, 12, 51, 24, 41, 81, 143, 162, 174, 186, 183, 171, + 104, 30, 20, 52, 69, 61, 61, 52, 41, 65, 116, 216, 232, 232, 191, 134, + 140, 144, 158, 165, 161, 148, 132, 29, 2, 4, 5, 9, 14, 29, 41, 139, + 138, 132, 130, 103, 60, 81, 51, 83, 20, 0, 5, 5, 32, 2, 5, 20, + 22, 4, 5, 17, 20, 18, 12, 18, 17, 17, 9, 9, 32, 30, 29, 28, + 28, 25, 24, 21, 21, 21, 20, 20, 22, 21, 24, 33, 36, 49, 49, 60, + 73, 72, 72, 76, 80, 102, 95, 63, 63, 64, 73, 59, 53, 48, 46, 52, + 48, 45, 42, 46, 45, 45, 41, 38, 38, 36, 38, 44, 42, 37, 34, 30, + 26, 22, 30, 44, 49, 22, 37, 57, 28, 30, 28, 57, 45, 56, 61, 59, + 52, 45, 42, 46, 45, 42, 40, 45, 41, 42, 40, 41, 44, 45, 41, 44, + 45, 38, 40, 41, 44, 37, 44, 85, 75, 85, 85, 91, 69, 52, 64, 51, + 59, 64, 57, 53, 46, 48, 48, 45, 41, 42, 46, 42, 40, 48, 49, 45, + 45, 52, 63, 64, 84, 92, 76, 79, 131, 166, 153, 162, 147, 153, 147, 150, + 143, 146, 134, 123, 79, 52, 46, 45, 32, 33, 36, 52, 93, 104, 153, 177, + 193, 199, 175, 124, 92, 73, 71, 68, 64, 65, 59, 56, 52, 56, 51, 52, + 52, 52, 48, 49, 44, 51, 49, 52, 38, 59, 46, 60, 51, 52, 51, 52, + 52, 52, 52, 53, 46, 12, 38, 114, 147, 103, 108, 111, 112, 110, 93, 103, + 107, 122, 144, 136, 144, 144, 114, 120, 119, 131, 116, 96, 22, 103, 100, 115, + 114, 64, 79, 88, 104, 92, 87, 87, 77, 79, 68, 65, 61, 53, 55, 41, + 41, 36, 34, 33, 30, 30, 33, 30, 33, 30, 30, 29, 30, 29, 29, 28, + 28, 28, 32, 30, 32, 32, 29, 32, 37, 41, 60, 92, 107, 115, 119, 120, + 123, 123, 126, 127, 123, 111, 42, 24, 18, 17, 28, 56, 45, 61, 68, 67, + 68, 69, 71, 26, 20, 20, 18, 17, 17, 17, 16, 14, 14, 16, 16, 18, + 20, 18, 22, 22, 22, 24, 24, 12, 6, 12, 9, 13, 25, 32, 51, 63, + 57, 72, 76, 67, 59, 67, 64, 52, 9, 41, 59, 55, 55, 38, 46, 37, + 48, 29, 18, 25, 37, 64, 69, 65, 64, 61, 65, 61, 63, 64, 56, 53, + 20, 46, 68, 73, 67, 88, 107, 107, 112, 100, 96, 88, 87, 81, 71, 52, + 60, 45, 49, 44, 41, 36, 38, 36, 37, 36, 37, 36, 36, 37, 37, 36, + 41, 41, 36, 12, 17, 71, 76, 79, 87, 87, 81, 92, 81, 80, 81, 41, + 12, 69, 72, 79, 69, 72, 63, 68, 34, 21, 13, 10, 6, 13, 13, 12, + 9, 9, 6, 9, 8, 5, 9, 6, 8, 4, 12, 14, 13, 8, 16, 13, + 8, 4, 4, 8, 6, 8, 10, 10, 10, 9, 10, 12, 24, 30, 24, 30, + 20, 108, 107, 111, 102, 108, 95, 81, 59, 46, 44, 32, 30, 28, 30, 24, + 22, 22, 24, 18, 21, 20, 16, 14, 14, 17, 14, 14, 14, 12, 13, 28, + 29, 41, 42, 30, 40, 46, 55, 61, 56, 51, 30, 29, 22, 17, 40, 40, + 34, 22, 52, 85, 148, 191, 193, 187, 201, 187, 150, 104, 32, 29, 53, 68, + 60, 49, 56, 55, 85, 162, 221, 232, 232, 178, 132, 135, 143, 154, 161, 155, + 144, 107, 12, 4, 2, 5, 20, 41, 48, 55, 194, 189, 185, 178, 154, 134, + 124, 115, 87, 13, 44, 131, 159, 127, 127, 140, 162, 136, 134, 134, 132, 130, + 131, 134, 138, 138, 124, 104, 71, 61, 53, 29, 28, 25, 26, 29, 38, 40, + 40, 42, 48, 63, 60, 65, 68, 65, 69, 69, 91, 111, 119, 119, 132, 126, + 140, 116, 102, 52, 120, 115, 79, 77, 75, 72, 71, 71, 75, 75, 72, 52, + 60, 83, 85, 79, 79, 81, 84, 75, 57, 45, 36, 32, 18, 20, 44, 46, + 42, 42, 51, 49, 52, 59, 46, 8, 88, 71, 64, 64, 63, 61, 67, 48, + 45, 42, 45, 42, 42, 34, 37, 48, 42, 45, 46, 46, 41, 48, 41, 38, + 44, 84, 87, 77, 85, 91, 95, 95, 99, 89, 14, 100, 92, 76, 75, 55, + 60, 55, 53, 53, 57, 56, 52, 56, 57, 61, 61, 61, 65, 65, 69, 81, + 87, 93, 77, 83, 159, 162, 142, 146, 138, 136, 134, 132, 116, 77, 64, 53, + 51, 41, 51, 40, 33, 49, 87, 120, 118, 157, 194, 198, 202, 162, 104, 71, + 56, 51, 69, 55, 55, 51, 56, 56, 55, 52, 57, 59, 60, 59, 56, 56, + 53, 53, 53, 55, 53, 52, 59, 64, 65, 67, 72, 73, 73, 77, 71, 48, + 9, 122, 146, 138, 134, 119, 119, 114, 138, 122, 132, 81, 114, 123, 120, 114, + 127, 131, 120, 122, 124, 128, 85, 16, 92, 110, 112, 118, 96, 68, 79, 87, + 61, 51, 49, 64, 46, 48, 45, 45, 42, 42, 30, 26, 26, 24, 26, 21, + 22, 24, 25, 24, 24, 22, 22, 22, 22, 22, 20, 20, 18, 21, 20, 20, + 20, 20, 20, 21, 20, 22, 25, 30, 38, 49, 61, 76, 84, 92, 92, 77, + 41, 24, 24, 22, 24, 33, 59, 59, 57, 44, 46, 49, 42, 51, 42, 41, + 37, 36, 37, 34, 29, 26, 28, 25, 22, 22, 18, 21, 20, 17, 17, 14, + 14, 16, 16, 18, 33, 21, 40, 28, 76, 112, 118, 118, 115, 118, 112, 111, + 111, 81, 59, 2, 85, 68, 67, 60, 56, 71, 83, 59, 61, 51, 26, 75, + 91, 87, 84, 81, 87, 81, 83, 80, 72, 67, 53, 20, 76, 75, 67, 85, + 95, 91, 93, 84, 84, 76, 80, 59, 42, 44, 45, 41, 33, 30, 28, 25, + 25, 25, 21, 22, 22, 21, 17, 17, 14, 13, 16, 14, 13, 10, 16, 16, + 85, 89, 85, 85, 85, 83, 81, 84, 87, 95, 46, 13, 93, 81, 72, 81, + 73, 75, 72, 63, 55, 42, 24, 6, 24, 53, 48, 26, 32, 45, 44, 26, + 32, 40, 34, 21, 24, 38, 40, 41, 46, 48, 41, 38, 36, 17, 4, 13, + 26, 37, 28, 26, 30, 25, 26, 29, 33, 28, 32, 13, 81, 84, 73, 52, + 60, 55, 51, 33, 36, 37, 37, 26, 26, 28, 30, 24, 24, 22, 22, 20, + 21, 20, 18, 22, 24, 22, 21, 22, 25, 32, 29, 34, 41, 46, 49, 36, + 45, 65, 61, 37, 40, 60, 65, 61, 45, 45, 26, 18, 57, 81, 139, 193, + 190, 177, 187, 142, 116, 93, 104, 32, 32, 53, 80, 79, 84, 71, 57, 93, + 194, 222, 230, 229, 163, 131, 136, 142, 153, 154, 147, 136, 63, 5, 5, 2, + 4, 21, 44, 41, 69, 177, 174, 179, 174, 170, 175, 158, 147, 92, 6, 165, + 163, 159, 155, 155, 159, 151, 155, 154, 151, 147, 146, 147, 147, 146, 147, 142, + 143, 147, 138, 110, 79, 69, 46, 75, 93, 95, 88, 87, 87, 84, 81, 83, + 79, 75, 56, 60, 114, 132, 142, 140, 140, 138, 130, 135, 135, 114, 59, 122, + 116, 116, 112, 115, 112, 104, 104, 95, 93, 85, 52, 75, 97, 111, 108, 104, + 106, 106, 97, 84, 83, 80, 68, 18, 79, 84, 85, 99, 57, 65, 91, 64, + 60, 65, 20, 81, 106, 99, 106, 103, 89, 88, 65, 60, 67, 56, 29, 40, + 102, 59, 93, 76, 87, 63, 81, 64, 44, 30, 22, 44, 85, 89, 92, 85, + 91, 115, 99, 95, 79, 12, 106, 103, 73, 88, 79, 73, 75, 75, 81, 69, + 68, 52, 42, 52, 61, 77, 64, 69, 76, 85, 83, 85, 92, 93, 76, 142, + 161, 140, 95, 81, 76, 75, 65, 63, 56, 55, 44, 41, 49, 45, 38, 56, + 80, 95, 116, 119, 189, 195, 201, 198, 154, 104, 63, 56, 55, 56, 55, 56, + 56, 61, 61, 64, 77, 100, 136, 148, 165, 173, 165, 154, 115, 75, 63, 57, + 53, 57, 60, 59, 59, 63, 63, 65, 73, 72, 72, 34, 135, 143, 123, 110, + 110, 110, 107, 104, 119, 80, 97, 134, 138, 119, 131, 115, 122, 112, 122, 119, + 132, 88, 14, 97, 103, 120, 110, 99, 92, 61, 59, 55, 72, 71, 45, 37, + 36, 36, 42, 26, 32, 22, 22, 21, 20, 20, 20, 18, 20, 20, 21, 20, + 20, 20, 21, 20, 20, 20, 20, 20, 21, 25, 32, 28, 30, 32, 30, 26, + 22, 20, 21, 21, 24, 25, 25, 24, 25, 26, 24, 24, 21, 22, 13, 25, + 60, 67, 65, 59, 59, 56, 53, 49, 45, 42, 41, 45, 40, 38, 37, 33, + 33, 30, 30, 26, 26, 26, 25, 28, 24, 24, 24, 21, 24, 29, 38, 46, + 48, 46, 59, 93, 116, 114, 108, 107, 100, 99, 100, 107, 88, 64, 6, 80, + 73, 79, 60, 71, 72, 69, 61, 64, 59, 26, 80, 102, 108, 103, 95, 100, + 107, 103, 87, 85, 73, 56, 18, 69, 68, 80, 110, 111, 88, 81, 102, 75, + 46, 46, 46, 49, 51, 37, 33, 32, 26, 26, 26, 25, 24, 20, 21, 21, + 20, 18, 16, 14, 14, 16, 16, 13, 12, 22, 30, 88, 81, 76, 80, 84, + 80, 75, 75, 75, 111, 46, 16, 89, 89, 91, 91, 88, 87, 81, 68, 64, + 46, 28, 6, 48, 61, 64, 48, 45, 29, 34, 42, 36, 24, 26, 18, 28, + 55, 73, 69, 69, 60, 65, 59, 40, 26, 6, 55, 63, 46, 46, 40, 40, + 40, 37, 32, 30, 29, 34, 16, 61, 103, 73, 65, 49, 42, 51, 36, 34, + 36, 34, 25, 25, 28, 29, 20, 22, 24, 20, 24, 18, 18, 21, 24, 21, + 26, 28, 24, 25, 32, 34, 42, 34, 42, 22, 26, 63, 63, 85, 61, 38, + 36, 40, 33, 34, 29, 22, 53, 85, 92, 175, 190, 175, 171, 139, 96, 91, + 96, 73, 46, 37, 48, 75, 53, 57, 52, 69, 124, 206, 222, 230, 224, 144, + 130, 135, 140, 153, 150, 142, 114, 21, 4, 5, 1, 4, 22, 41, 44, 59, + 163, 169, 163, 158, 163, 159, 174, 144, 95, 22, 155, 173, 170, 175, 162, 162, + 162, 154, 147, 143, 120, 104, 115, 147, 158, 159, 153, 155, 130, 143, 143, 123, + 80, 55, 91, 104, 104, 106, 102, 103, 102, 100, 99, 103, 69, 52, 95, 136, + 147, 146, 136, 140, 138, 143, 144, 114, 108, 63, 119, 123, 118, 120, 120, 116, + 122, 107, 107, 110, 91, 56, 95, 102, 114, 116, 119, 132, 127, 124, 108, 108, + 83, 68, 18, 80, 103, 87, 99, 107, 93, 95, 93, 65, 63, 17, 72, 107, + 142, 144, 146, 107, 110, 96, 89, 64, 59, 26, 75, 114, 122, 112, 108, 103, + 104, 107, 87, 75, 53, 21, 56, 92, 96, 81, 69, 91, 99, 99, 110, 63, + 5, 114, 111, 118, 110, 68, 72, 56, 75, 71, 67, 69, 46, 33, 49, 108, + 92, 92, 91, 91, 84, 84, 83, 93, 111, 73, 154, 159, 139, 99, 87, 72, + 69, 61, 61, 51, 51, 42, 40, 37, 46, 55, 77, 83, 122, 120, 142, 186, + 204, 202, 202, 139, 103, 83, 77, 81, 71, 68, 71, 80, 95, 124, 155, 186, + 208, 218, 224, 226, 226, 218, 220, 212, 190, 163, 138, 88, 67, 57, 60, 60, + 63, 60, 60, 71, 69, 68, 12, 96, 142, 100, 97, 114, 114, 107, 107, 114, + 81, 102, 123, 135, 132, 126, 131, 127, 120, 127, 123, 126, 81, 14, 97, 102, + 112, 108, 97, 64, 63, 61, 61, 67, 49, 29, 80, 68, 56, 49, 56, 68, + 48, 52, 49, 44, 40, 38, 44, 40, 51, 51, 51, 44, 42, 42, 40, 37, + 34, 36, 33, 55, 48, 51, 49, 57, 55, 57, 51, 48, 38, 29, 22, 26, + 24, 21, 21, 20, 20, 22, 20, 24, 22, 9, 33, 64, 77, 81, 84, 81, + 85, 79, 79, 67, 56, 48, 76, 80, 60, 57, 59, 48, 48, 57, 55, 24, + 9, 38, 53, 61, 40, 32, 40, 48, 32, 55, 48, 52, 45, 53, 95, 114, + 108, 107, 108, 100, 99, 84, 95, 102, 48, 8, 59, 84, 77, 87, 85, 95, + 96, 72, 87, 51, 28, 73, 104, 110, 110, 104, 103, 112, 99, 104, 85, 75, + 64, 20, 71, 64, 72, 83, 96, 128, 107, 93, 53, 56, 46, 61, 85, 81, + 76, 55, 61, 61, 64, 55, 53, 44, 40, 34, 37, 34, 32, 30, 28, 28, + 26, 25, 28, 22, 25, 16, 68, 95, 104, 83, 72, 80, 99, 80, 79, 96, + 45, 18, 77, 89, 88, 84, 83, 77, 104, 65, 63, 60, 28, 8, 51, 63, + 48, 64, 45, 53, 34, 37, 38, 51, 28, 21, 48, 72, 80, 77, 65, 56, + 55, 68, 40, 30, 13, 59, 60, 46, 42, 44, 38, 48, 37, 37, 25, 32, + 34, 13, 63, 83, 61, 79, 65, 71, 72, 51, 41, 41, 40, 33, 37, 36, + 21, 28, 28, 28, 28, 26, 29, 28, 24, 29, 32, 33, 33, 30, 32, 33, + 38, 34, 52, 48, 33, 12, 53, 65, 57, 51, 53, 30, 38, 29, 25, 32, + 21, 59, 88, 106, 186, 181, 175, 144, 103, 96, 93, 112, 64, 45, 33, 55, + 60, 61, 55, 55, 71, 147, 213, 220, 228, 208, 134, 131, 136, 143, 150, 146, + 138, 72, 9, 5, 4, 1, 2, 22, 34, 26, 77, 162, 157, 167, 165, 162, + 155, 157, 128, 88, 38, 110, 171, 174, 170, 175, 166, 163, 165, 163, 147, 120, + 97, 143, 155, 159, 154, 150, 146, 151, 136, 143, 139, 96, 61, 107, 128, 132, + 131, 127, 127, 127, 118, 110, 119, 67, 48, 97, 143, 146, 148, 148, 132, 131, + 138, 132, 120, 89, 71, 118, 118, 123, 114, 115, 127, 124, 116, 114, 118, 97, + 67, 96, 115, 131, 124, 106, 134, 122, 132, 123, 111, 103, 77, 25, 67, 110, + 103, 97, 95, 95, 92, 102, 72, 69, 17, 97, 115, 143, 138, 139, 144, 115, + 120, 106, 92, 63, 13, 95, 116, 131, 127, 119, 118, 120, 115, 111, 104, 52, + 21, 100, 102, 104, 104, 79, 96, 120, 110, 102, 85, 12, 118, 120, 110, 103, + 89, 75, 79, 99, 103, 97, 91, 56, 20, 99, 110, 115, 114, 104, 95, 96, + 91, 91, 102, 103, 91, 146, 159, 148, 130, 106, 87, 77, 69, 61, 53, 55, + 45, 37, 48, 52, 79, 79, 100, 118, 112, 123, 195, 198, 210, 183, 135, 104, + 122, 127, 118, 126, 136, 158, 174, 198, 210, 221, 225, 226, 225, 224, 221, 220, + 221, 218, 213, 213, 208, 210, 181, 127, 71, 61, 59, 61, 65, 61, 69, 76, + 51, 10, 99, 146, 120, 106, 132, 114, 132, 116, 99, 71, 100, 139, 138, 127, + 132, 124, 138, 132, 118, 116, 122, 97, 18, 103, 102, 114, 111, 110, 87, 83, + 63, 75, 65, 67, 49, 72, 89, 87, 68, 67, 59, 65, 63, 60, 59, 59, + 40, 33, 49, 51, 55, 60, 52, 56, 57, 57, 59, 57, 49, 45, 53, 64, + 60, 63, 57, 59, 57, 57, 56, 37, 59, 63, 64, 63, 56, 56, 34, 32, + 30, 28, 28, 24, 10, 41, 71, 85, 85, 83, 85, 85, 89, 83, 75, 63, + 53, 71, 89, 68, 80, 77, 77, 61, 52, 60, 53, 13, 64, 65, 67, 64, + 64, 59, 55, 52, 51, 46, 49, 51, 44, 85, 107, 111, 104, 106, 95, 95, + 85, 95, 77, 64, 12, 76, 81, 95, 80, 77, 81, 84, 88, 84, 57, 37, + 91, 106, 103, 104, 106, 112, 115, 112, 110, 99, 83, 60, 20, 71, 67, 83, + 69, 84, 99, 119, 107, 56, 57, 46, 67, 91, 77, 75, 73, 75, 71, 73, + 75, 71, 53, 52, 41, 57, 59, 56, 53, 53, 44, 40, 46, 46, 32, 22, + 56, 87, 93, 81, 83, 76, 87, 79, 84, 81, 106, 53, 21, 88, 89, 87, + 100, 79, 81, 75, 79, 60, 63, 28, 6, 53, 69, 56, 88, 59, 60, 63, + 53, 44, 49, 28, 18, 63, 80, 80, 57, 51, 51, 52, 67, 41, 25, 5, + 48, 60, 49, 52, 42, 41, 32, 37, 36, 33, 34, 37, 21, 71, 85, 80, + 60, 68, 65, 76, 61, 63, 40, 37, 18, 14, 32, 28, 32, 29, 30, 24, + 26, 29, 20, 17, 26, 46, 51, 51, 52, 29, 25, 25, 30, 38, 45, 37, + 17, 57, 60, 57, 51, 44, 33, 36, 32, 28, 24, 22, 60, 88, 110, 186, + 182, 146, 112, 99, 89, 107, 104, 80, 44, 36, 44, 65, 56, 48, 61, 102, + 189, 217, 224, 228, 187, 127, 130, 135, 148, 146, 140, 116, 20, 5, 5, 4, + 1, 4, 12, 40, 21, 49, 181, 162, 162, 161, 155, 159, 155, 153, 79, 5, + 122, 174, 171, 170, 174, 169, 165, 162, 165, 135, 118, 93, 142, 155, 146, 153, + 150, 157, 165, 157, 148, 144, 114, 71, 120, 138, 140, 124, 139, 135, 135, 124, + 108, 106, 69, 45, 120, 147, 147, 151, 140, 130, 143, 136, 138, 119, 111, 79, + 116, 126, 114, 135, 124, 114, 115, 127, 124, 127, 104, 69, 103, 128, 131, 130, + 107, 118, 119, 127, 123, 119, 107, 79, 8, 71, 97, 108, 100, 95, 93, 97, + 100, 72, 69, 20, 88, 116, 138, 132, 127, 131, 130, 115, 111, 96, 60, 28, + 108, 126, 130, 127, 130, 122, 132, 131, 119, 107, 71, 20, 104, 104, 108, 96, + 104, 100, 111, 108, 100, 85, 10, 118, 104, 97, 92, 102, 87, 91, 114, 116, + 103, 91, 55, 36, 102, 110, 124, 124, 123, 102, 103, 107, 102, 92, 92, 83, + 136, 157, 154, 132, 132, 123, 95, 91, 71, 64, 48, 33, 42, 71, 80, 81, + 100, 96, 118, 116, 122, 178, 206, 208, 179, 122, 96, 114, 183, 187, 193, 201, + 205, 212, 220, 221, 221, 221, 214, 209, 194, 193, 193, 181, 171, 161, 162, 166, + 182, 199, 199, 161, 87, 67, 57, 60, 61, 64, 67, 42, 9, 118, 154, 128, + 115, 110, 119, 107, 114, 111, 63, 102, 132, 135, 122, 122, 122, 123, 124, 122, + 119, 116, 96, 20, 102, 95, 112, 107, 111, 107, 99, 81, 73, 64, 55, 52, + 80, 88, 79, 81, 81, 64, 81, 85, 87, 75, 53, 38, 44, 79, 95, 91, + 59, 59, 60, 64, 65, 65, 68, 37, 51, 87, 83, 84, 83, 65, 64, 67, + 63, 63, 42, 59, 72, 69, 73, 65, 65, 56, 52, 51, 48, 45, 25, 8, + 64, 72, 87, 93, 97, 95, 85, 73, 91, 79, 68, 44, 71, 73, 91, 75, + 73, 80, 76, 67, 67, 57, 6, 72, 69, 53, 75, 72, 42, 48, 72, 64, + 68, 53, 51, 37, 83, 110, 112, 96, 95, 89, 87, 97, 76, 83, 64, 2, + 76, 83, 102, 83, 73, 71, 75, 83, 96, 60, 38, 97, 110, 116, 114, 107, + 100, 102, 112, 115, 104, 89, 61, 20, 69, 63, 69, 63, 85, 99, 96, 81, + 57, 59, 52, 69, 88, 85, 79, 76, 75, 76, 72, 71, 73, 73, 53, 44, + 60, 63, 63, 60, 59, 57, 56, 56, 55, 34, 16, 77, 67, 88, 72, 80, + 80, 84, 84, 77, 80, 92, 57, 22, 89, 89, 95, 99, 100, 99, 75, 81, + 63, 63, 30, 6, 46, 71, 67, 68, 65, 57, 53, 59, 59, 51, 29, 24, + 71, 81, 79, 46, 48, 60, 60, 63, 38, 28, 5, 72, 53, 53, 40, 41, + 41, 44, 42, 45, 45, 36, 40, 18, 59, 97, 77, 72, 65, 76, 57, 65, + 59, 55, 44, 13, 20, 29, 42, 38, 28, 29, 29, 32, 34, 24, 18, 49, + 48, 53, 51, 40, 52, 49, 51, 37, 42, 38, 37, 21, 56, 61, 53, 49, + 44, 32, 25, 29, 29, 26, 22, 51, 85, 91, 183, 178, 130, 103, 100, 99, + 120, 118, 80, 32, 36, 44, 59, 57, 53, 79, 163, 204, 208, 224, 220, 148, + 124, 130, 142, 143, 138, 126, 49, 6, 4, 4, 2, 1, 4, 20, 34, 25, + 17, 178, 166, 161, 161, 165, 161, 159, 147, 76, 6, 132, 170, 166, 174, 169, + 171, 169, 167, 157, 132, 112, 89, 136, 140, 155, 154, 161, 155, 150, 153, 154, + 142, 134, 80, 122, 130, 136, 132, 126, 131, 130, 126, 119, 108, 68, 83, 135, + 146, 146, 134, 140, 123, 128, 135, 128, 123, 122, 83, 103, 127, 123, 108, 111, + 123, 126, 135, 122, 123, 119, 72, 106, 130, 128, 116, 110, 124, 128, 128, 126, + 126, 111, 77, 13, 77, 108, 110, 99, 111, 100, 99, 97, 75, 73, 26, 81, + 122, 131, 134, 136, 136, 136, 131, 116, 97, 60, 28, 100, 112, 118, 126, 134, + 135, 135, 134, 128, 108, 64, 46, 107, 104, 108, 103, 123, 118, 122, 104, 96, + 72, 9, 123, 118, 107, 102, 108, 124, 126, 126, 124, 118, 96, 55, 18, 107, + 120, 130, 127, 127, 127, 128, 130, 108, 107, 108, 79, 124, 153, 151, 143, 128, + 131, 116, 111, 83, 96, 52, 30, 59, 75, 100, 103, 104, 96, 136, 118, 131, + 144, 191, 204, 175, 118, 106, 112, 151, 185, 194, 197, 204, 206, 206, 209, 201, + 195, 186, 167, 150, 144, 144, 147, 139, 142, 138, 144, 147, 144, 155, 181, 173, + 96, 57, 60, 64, 63, 67, 63, 29, 128, 132, 132, 115, 111, 118, 107, 111, + 102, 64, 96, 136, 131, 123, 128, 120, 122, 114, 128, 127, 115, 92, 20, 97, + 92, 118, 122, 114, 100, 87, 73, 75, 68, 55, 29, 76, 99, 83, 89, 77, + 80, 92, 93, 95, 84, 55, 37, 64, 95, 95, 103, 100, 75, 76, 73, 67, + 77, 63, 36, 81, 85, 91, 89, 91, 84, 71, 68, 69, 67, 45, 71, 73, + 81, 77, 77, 73, 65, 57, 57, 52, 48, 25, 6, 69, 84, 89, 75, 85, + 93, 95, 73, 83, 81, 68, 37, 72, 76, 88, 83, 89, 93, 76, 83, 67, + 60, 6, 80, 72, 65, 69, 67, 73, 71, 76, 73, 75, 68, 52, 55, 85, + 116, 96, 97, 93, 102, 89, 89, 97, 77, 68, 4, 85, 84, 80, 79, 99, + 95, 100, 89, 81, 63, 36, 92, 104, 112, 120, 118, 111, 110, 111, 104, 110, + 89, 61, 20, 68, 68, 71, 69, 96, 55, 60, 63, 56, 61, 51, 71, 87, + 85, 88, 71, 85, 80, 79, 73, 76, 73, 63, 44, 55, 64, 73, 72, 72, + 68, 67, 65, 56, 36, 16, 69, 96, 89, 77, 84, 93, 91, 89, 77, 73, + 92, 51, 26, 87, 93, 84, 83, 84, 83, 84, 80, 61, 63, 33, 9, 57, + 79, 52, 61, 49, 73, 63, 69, 61, 46, 28, 30, 68, 85, 60, 55, 49, + 64, 65, 63, 37, 25, 5, 68, 73, 53, 51, 45, 48, 49, 51, 51, 46, + 38, 41, 22, 61, 85, 92, 71, 67, 60, 49, 55, 53, 52, 41, 9, 32, + 53, 55, 46, 42, 40, 44, 48, 36, 25, 14, 48, 46, 49, 42, 48, 53, + 41, 52, 45, 46, 38, 28, 21, 55, 72, 41, 45, 37, 33, 28, 29, 28, + 25, 20, 52, 73, 85, 131, 173, 142, 108, 103, 106, 130, 118, 60, 51, 40, + 48, 53, 48, 76, 138, 201, 208, 212, 221, 194, 126, 124, 131, 146, 139, 130, + 81, 12, 4, 8, 4, 2, 1, 2, 21, 34, 38, 18, 162, 163, 165, 174, + 171, 166, 157, 150, 80, 9, 154, 171, 170, 171, 171, 171, 165, 165, 144, 130, + 112, 81, 130, 154, 167, 165, 162, 159, 153, 151, 148, 143, 135, 87, 85, 119, + 128, 123, 131, 131, 126, 123, 124, 107, 65, 92, 143, 144, 130, 130, 130, 138, + 138, 135, 134, 115, 119, 83, 102, 135, 126, 123, 110, 128, 104, 120, 103, 96, + 123, 77, 108, 132, 131, 115, 122, 134, 132, 118, 112, 127, 111, 75, 9, 81, + 103, 115, 102, 102, 107, 99, 93, 81, 77, 20, 75, 124, 132, 128, 130, 128, + 124, 134, 116, 99, 65, 25, 73, 127, 116, 132, 135, 138, 138, 138, 128, 126, + 61, 18, 104, 112, 111, 112, 107, 115, 110, 110, 110, 61, 4, 120, 116, 97, + 115, 108, 102, 95, 108, 99, 119, 92, 52, 16, 108, 110, 118, 124, 119, 128, + 132, 138, 110, 108, 108, 89, 103, 148, 150, 142, 128, 134, 119, 118, 112, 99, + 63, 32, 72, 97, 106, 102, 100, 99, 135, 123, 136, 122, 171, 209, 178, 110, + 103, 106, 120, 131, 158, 167, 177, 178, 181, 174, 159, 143, 135, 140, 142, 143, + 146, 157, 158, 163, 147, 140, 135, 130, 136, 136, 173, 153, 93, 53, 63, 60, + 60, 59, 14, 103, 128, 127, 96, 112, 122, 114, 114, 96, 65, 99, 134, 136, + 130, 122, 127, 123, 122, 131, 126, 116, 89, 25, 92, 97, 99, 104, 107, 107, + 89, 72, 77, 73, 60, 29, 55, 91, 93, 92, 103, 104, 119, 118, 115, 89, + 60, 16, 68, 96, 96, 103, 91, 84, 89, 108, 100, 80, 67, 34, 83, 87, + 95, 87, 84, 88, 84, 84, 71, 67, 49, 69, 80, 81, 80, 76, 77, 73, + 67, 61, 57, 46, 28, 6, 71, 88, 69, 73, 81, 102, 88, 84, 88, 77, + 68, 40, 83, 81, 88, 80, 87, 83, 85, 87, 71, 46, 8, 79, 79, 95, + 77, 76, 79, 89, 77, 75, 73, 81, 60, 42, 68, 104, 114, 115, 108, 103, + 110, 115, 92, 85, 46, 1, 69, 88, 87, 96, 106, 95, 95, 93, 80, 64, + 34, 73, 107, 107, 111, 108, 111, 112, 111, 118, 114, 106, 63, 21, 67, 60, + 73, 88, 65, 83, 67, 68, 53, 63, 55, 71, 77, 95, 93, 76, 79, 88, + 89, 83, 85, 79, 72, 48, 57, 75, 60, 69, 76, 75, 72, 71, 59, 38, + 18, 87, 95, 91, 97, 87, 87, 84, 77, 77, 81, 95, 51, 33, 53, 92, + 84, 77, 83, 81, 79, 75, 61, 59, 32, 9, 59, 73, 65, 61, 68, 67, + 69, 59, 53, 41, 32, 24, 69, 80, 63, 46, 61, 55, 61, 60, 38, 29, + 4, 64, 60, 57, 53, 68, 68, 75, 73, 69, 53, 41, 42, 24, 57, 91, + 97, 96, 77, 77, 51, 51, 53, 46, 33, 22, 45, 48, 40, 46, 55, 55, + 53, 44, 34, 25, 14, 53, 48, 46, 32, 55, 52, 48, 51, 44, 46, 42, + 34, 13, 53, 68, 48, 41, 32, 33, 30, 41, 24, 29, 18, 42, 60, 79, + 102, 135, 167, 112, 103, 130, 139, 100, 52, 51, 60, 48, 57, 77, 135, 187, + 208, 209, 221, 210, 151, 120, 130, 140, 138, 126, 97, 18, 5, 5, 5, 5, + 2, 1, 1, 14, 33, 5, 28, 158, 159, 157, 154, 157, 155, 154, 138, 71, + 12, 116, 171, 169, 169, 169, 171, 171, 158, 134, 126, 112, 72, 150, 147, 158, + 148, 157, 148, 146, 142, 138, 138, 132, 130, 91, 96, 108, 107, 124, 130, 134, + 119, 123, 116, 60, 93, 142, 146, 124, 134, 135, 136, 131, 135, 122, 143, 106, + 88, 100, 135, 126, 128, 119, 130, 114, 111, 107, 123, 96, 84, 112, 134, 127, + 139, 111, 114, 132, 128, 130, 115, 110, 84, 21, 68, 107, 110, 112, 104, 108, + 103, 103, 83, 81, 26, 119, 127, 128, 139, 127, 122, 123, 124, 120, 96, 64, + 8, 108, 130, 119, 130, 134, 132, 140, 134, 128, 120, 83, 20, 114, 122, 120, + 110, 118, 115, 118, 123, 99, 93, 9, 118, 134, 123, 130, 122, 123, 124, 119, + 114, 118, 95, 52, 13, 119, 118, 122, 135, 126, 116, 114, 130, 127, 108, 111, + 91, 96, 143, 147, 142, 142, 134, 128, 127, 118, 107, 68, 32, 80, 100, 106, + 108, 116, 132, 119, 136, 114, 140, 126, 201, 191, 123, 111, 107, 115, 119, 127, + 132, 134, 139, 134, 132, 126, 118, 115, 115, 118, 132, 143, 153, 157, 158, 159, + 144, 142, 142, 140, 130, 139, 170, 100, 53, 59, 60, 63, 51, 14, 102, 140, + 128, 116, 114, 116, 115, 118, 95, 52, 96, 130, 142, 139, 134, 132, 132, 132, + 135, 122, 114, 95, 34, 93, 99, 107, 100, 91, 84, 81, 65, 76, 79, 52, + 64, 76, 106, 116, 102, 107, 103, 116, 99, 92, 89, 55, 16, 76, 100, 106, + 95, 97, 97, 96, 99, 97, 75, 69, 30, 97, 87, 96, 83, 91, 85, 88, + 89, 89, 71, 49, 67, 75, 73, 75, 73, 76, 69, 68, 65, 65, 48, 30, + 9, 73, 89, 87, 67, 89, 73, 72, 79, 79, 76, 65, 44, 79, 91, 91, + 83, 80, 81, 87, 87, 67, 64, 22, 80, 80, 80, 93, 83, 81, 81, 87, + 87, 88, 87, 76, 51, 68, 91, 99, 102, 99, 83, 91, 85, 85, 80, 69, + 8, 72, 91, 89, 92, 93, 89, 83, 80, 81, 75, 55, 52, 95, 103, 103, + 103, 102, 104, 104, 103, 103, 95, 68, 21, 65, 67, 56, 64, 55, 69, 64, + 63, 63, 72, 64, 55, 79, 71, 73, 69, 75, 72, 75, 73, 77, 75, 75, + 69, 55, 61, 61, 55, 63, 67, 65, 72, 63, 44, 16, 76, 95, 85, 79, + 79, 83, 77, 79, 85, 93, 96, 60, 28, 38, 87, 95, 88, 95, 84, 79, + 57, 59, 49, 32, 9, 55, 71, 73, 81, 71, 76, 69, 65, 63, 38, 32, + 28, 69, 93, 72, 45, 48, 63, 64, 75, 42, 24, 5, 45, 68, 57, 60, + 61, 53, 49, 53, 57, 64, 42, 44, 24, 55, 80, 92, 85, 71, 71, 42, + 51, 52, 49, 29, 18, 52, 46, 51, 44, 41, 37, 40, 42, 34, 21, 14, + 55, 44, 48, 52, 52, 48, 49, 48, 45, 46, 48, 36, 10, 52, 59, 41, + 29, 38, 32, 29, 24, 26, 20, 20, 45, 49, 42, 65, 81, 157, 144, 103, + 114, 135, 127, 61, 49, 56, 72, 111, 150, 186, 198, 202, 217, 213, 165, 119, + 124, 136, 134, 122, 87, 18, 6, 5, 6, 5, 5, 2, 1, 2, 21, 25, + 57, 65, 139, 138, 138, 138, 136, 138, 131, 130, 67, 26, 79, 128, 173, 174, + 151, 155, 134, 134, 132, 104, 99, 72, 142, 146, 144, 140, 143, 147, 142, 132, + 126, 122, 124, 119, 124, 138, 134, 123, 110, 110, 110, 106, 111, 97, 59, 119, + 140, 148, 127, 128, 118, 124, 120, 119, 114, 123, 122, 107, 92, 111, 114, 108, + 116, 115, 127, 122, 122, 123, 123, 116, 111, 99, 104, 128, 123, 118, 114, 115, + 112, 108, 103, 81, 9, 64, 107, 104, 102, 104, 102, 100, 102, 93, 77, 30, + 83, 119, 119, 122, 120, 123, 120, 128, 122, 95, 59, 30, 112, 128, 123, 122, + 122, 127, 115, 128, 123, 108, 72, 12, 108, 106, 124, 124, 120, 122, 126, 116, + 96, 88, 9, 110, 120, 119, 118, 119, 118, 116, 115, 114, 115, 89, 49, 29, + 112, 116, 124, 119, 123, 118, 124, 114, 118, 119, 111, 97, 85, 120, 146, 138, + 131, 124, 110, 115, 122, 106, 71, 30, 80, 103, 126, 122, 134, 146, 127, 150, + 147, 135, 116, 144, 182, 134, 103, 106, 110, 118, 119, 115, 124, 123, 126, 120, + 118, 115, 116, 120, 151, 155, 131, 150, 161, 157, 157, 165, 148, 147, 143, 144, + 140, 166, 96, 46, 52, 57, 61, 44, 9, 92, 124, 127, 118, 111, 118, 115, + 106, 95, 51, 96, 115, 132, 130, 124, 122, 119, 119, 116, 108, 104, 93, 29, + 48, 84, 85, 61, 55, 75, 73, 49, 52, 60, 61, 67, 79, 99, 108, 99, + 96, 93, 96, 93, 92, 91, 48, 30, 68, 95, 110, 104, 104, 110, 97, 102, + 97, 77, 68, 33, 85, 83, 89, 84, 79, 77, 67, 64, 80, 76, 72, 71, + 56, 59, 59, 59, 55, 53, 55, 57, 52, 51, 29, 6, 77, 95, 59, 60, + 64, 60, 61, 61, 65, 69, 63, 61, 59, 64, 76, 76, 65, 65, 63, 64, + 59, 67, 5, 79, 79, 80, 76, 76, 79, 81, 79, 79, 75, 79, 77, 72, + 53, 52, 61, 65, 63, 61, 65, 65, 65, 69, 73, 5, 41, 85, 85, 83, + 83, 80, 53, 51, 53, 59, 73, 73, 59, 73, 85, 79, 83, 80, 85, 91, + 91, 81, 63, 21, 57, 51, 52, 57, 55, 56, 60, 63, 40, 38, 41, 69, + 71, 73, 75, 76, 75, 76, 77, 79, 75, 77, 73, 73, 72, 77, 75, 76, + 73, 60, 60, 71, 60, 46, 20, 85, 96, 81, 87, 92, 79, 93, 96, 84, + 73, 71, 63, 32, 32, 83, 77, 85, 55, 53, 53, 42, 46, 42, 32, 9, + 53, 63, 60, 42, 59, 59, 63, 49, 51, 42, 30, 25, 68, 81, 55, 56, + 49, 60, 60, 76, 34, 26, 5, 67, 63, 60, 57, 55, 52, 52, 52, 49, + 48, 46, 46, 26, 34, 52, 73, 67, 52, 41, 48, 44, 41, 49, 45, 18, + 52, 48, 51, 42, 48, 42, 40, 37, 34, 24, 14, 48, 53, 49, 46, 48, + 48, 46, 41, 42, 40, 36, 24, 13, 44, 56, 34, 21, 22, 25, 28, 26, + 25, 21, 21, 33, 42, 41, 46, 67, 77, 171, 114, 110, 140, 134, 128, 124, + 126, 153, 179, 182, 193, 195, 210, 206, 163, 116, 124, 131, 120, 111, 83, 22, + 6, 6, 6, 5, 4, 5, 4, 1, 2, 12, 14, 12, 10, 81, 77, 75, + 67, 60, 56, 49, 45, 36, 40, 40, 56, 65, 63, 80, 84, 95, 77, 97, + 107, 84, 69, 106, 75, 99, 93, 65, 67, 85, 71, 60, 55, 68, 64, 77, + 60, 76, 75, 99, 131, 134, 132, 95, 81, 56, 114, 123, 127, 118, 116, 110, + 123, 118, 115, 126, 127, 120, 115, 119, 130, 135, 134, 130, 132, 128, 130, 128, + 124, 122, 122, 119, 119, 75, 76, 53, 40, 37, 36, 33, 33, 28, 36, 10, + 32, 32, 37, 41, 44, 55, 84, 99, 89, 76, 37, 10, 85, 112, 68, 83, + 95, 114, 68, 91, 91, 48, 29, 60, 83, 68, 67, 84, 80, 69, 67, 84, + 85, 38, 13, 63, 83, 61, 87, 77, 77, 59, 91, 75, 42, 10, 33, 80, + 81, 80, 79, 87, 88, 83, 84, 88, 87, 45, 17, 85, 122, 118, 96, 92, + 108, 111, 84, 95, 103, 115, 102, 107, 111, 104, 93, 107, 103, 103, 95, 92, + 89, 69, 33, 76, 112, 112, 103, 100, 112, 112, 103, 106, 130, 136, 167, 182, + 170, 115, 108, 103, 110, 106, 65, 56, 56, 57, 57, 56, 60, 60, 97, 116, + 165, 124, 130, 154, 158, 161, 158, 155, 162, 148, 148, 142, 163, 102, 46, 46, + 55, 44, 53, 18, 48, 75, 102, 128, 126, 120, 132, 97, 87, 55, 91, 100, + 122, 122, 115, 95, 87, 83, 77, 77, 60, 48, 63, 69, 61, 65, 63, 61, + 53, 55, 53, 53, 44, 45, 45, 55, 87, 85, 93, 100, 96, 104, 87, 97, + 83, 32, 28, 63, 91, 87, 77, 88, 89, 85, 81, 85, 80, 68, 36, 87, + 84, 72, 79, 77, 76, 76, 77, 73, 71, 69, 67, 71, 69, 67, 68, 67, + 64, 61, 61, 60, 56, 53, 6, 49, 59, 53, 55, 56, 59, 57, 60, 61, + 63, 61, 57, 63, 60, 61, 61, 59, 57, 56, 60, 53, 46, 5, 52, 60, + 55, 59, 59, 63, 64, 64, 65, 67, 68, 68, 59, 67, 73, 68, 60, 73, + 71, 63, 51, 75, 63, 48, 18, 52, 38, 33, 33, 36, 26, 32, 34, 29, + 30, 34, 29, 46, 55, 46, 44, 64, 72, 65, 51, 71, 72, 44, 25, 51, + 21, 22, 22, 21, 18, 18, 20, 20, 14, 14, 20, 14, 13, 13, 17, 16, + 16, 17, 20, 21, 20, 21, 24, 28, 29, 32, 34, 40, 72, 69, 76, 60, + 41, 17, 73, 93, 80, 89, 93, 88, 87, 75, 76, 63, 60, 48, 45, 28, + 41, 40, 44, 48, 44, 33, 32, 28, 25, 34, 13, 24, 21, 21, 28, 29, + 36, 48, 34, 30, 33, 29, 34, 46, 49, 45, 51, 41, 46, 48, 45, 34, + 24, 5, 60, 57, 61, 60, 56, 55, 53, 52, 53, 52, 49, 49, 46, 48, + 45, 45, 46, 45, 44, 45, 44, 44, 42, 38, 18, 46, 37, 41, 40, 38, + 36, 28, 34, 36, 24, 13, 12, 13, 13, 16, 13, 13, 12, 14, 29, 26, + 25, 18, 12, 38, 21, 16, 16, 18, 17, 13, 16, 14, 12, 30, 30, 13, + 33, 33, 42, 49, 93, 132, 114, 126, 151, 153, 161, 169, 174, 181, 191, 194, + 205, 199, 166, 120, 122, 119, 110, 97, 61, 18, 10, 8, 8, 4, 5, 5, + 8, 4, 4, 0, 0, 0, 0, 0, 99, 88, 118, 123, 102, 92, 135, 134, + 64, 13, 84, 131, 127, 95, 107, 99, 60, 53, 65, 61, 57, 69, 34, 36, + 60, 71, 89, 102, 119, 122, 140, 151, 127, 108, 127, 143, 131, 122, 87, 76, + 75, 68, 108, 93, 56, 88, 92, 73, 73, 61, 60, 49, 51, 51, 46, 51, + 42, 37, 32, 26, 26, 24, 24, 25, 25, 24, 22, 26, 24, 21, 24, 37, + 88, 112, 124, 124, 128, 131, 131, 127, 128, 89, 10, 120, 161, 161, 138, 88, + 89, 76, 56, 55, 71, 57, 10, 1, 29, 20, 21, 1, 21, 12, 2, 2, + 14, 32, 1, 0, 41, 22, 2, 1, 21, 16, 4, 6, 20, 17, 5, 4, + 9, 30, 2, 1, 10, 2, 6, 0, 1, 9, 0, 0, 1, 4, 2, 2, + 1, 2, 2, 4, 26, 8, 34, 29, 38, 37, 42, 51, 63, 85, 87, 95, + 106, 79, 76, 69, 72, 65, 61, 60, 51, 46, 67, 57, 59, 36, 67, 72, + 73, 81, 93, 93, 93, 118, 120, 142, 161, 163, 199, 190, 153, 114, 104, 106, + 107, 48, 49, 49, 56, 53, 51, 57, 56, 73, 111, 158, 162, 127, 126, 151, + 154, 157, 157, 163, 144, 146, 159, 153, 97, 42, 41, 45, 32, 10, 33, 45, + 46, 55, 41, 41, 57, 61, 72, 96, 53, 83, 95, 89, 68, 64, 67, 64, + 44, 45, 46, 34, 25, 14, 16, 16, 12, 9, 9, 8, 8, 5, 5, 5, + 4, 2, 2, 1, 1, 0, 0, 0, 6, 8, 12, 12, 14, 16, 22, 26, + 36, 33, 38, 49, 46, 61, 79, 83, 65, 37, 76, 64, 64, 53, 44, 44, + 38, 33, 29, 29, 22, 16, 14, 20, 10, 9, 8, 21, 6, 5, 5, 24, + 4, 2, 1, 2, 2, 0, 1, 4, 2, 2, 5, 8, 5, 6, 9, 12, + 4, 6, 18, 20, 4, 8, 26, 28, 24, 6, 21, 21, 4, 2, 16, 4, + 4, 12, 13, 1, 1, 0, 8, 2, 0, 5, 8, 0, 0, 0, 6, 0, + 0, 17, 22, 29, 55, 84, 63, 71, 87, 99, 89, 73, 51, 34, 64, 92, + 92, 76, 80, 36, 26, 25, 22, 25, 21, 16, 13, 40, 44, 38, 41, 53, + 52, 52, 51, 65, 45, 5, 21, 95, 116, 76, 85, 97, 110, 85, 88, 87, + 84, 81, 87, 97, 99, 85, 49, 36, 41, 41, 60, 41, 18, 45, 46, 46, + 44, 48, 46, 46, 48, 48, 46, 52, 45, 44, 34, 21, 17, 24, 34, 18, + 21, 52, 76, 84, 57, 13, 56, 75, 73, 37, 32, 28, 36, 22, 28, 18, + 49, 30, 24, 18, 18, 25, 20, 30, 30, 34, 26, 26, 22, 17, 36, 37, + 46, 33, 37, 36, 38, 36, 41, 42, 37, 36, 38, 40, 37, 37, 42, 38, + 34, 34, 42, 36, 14, 25, 48, 38, 38, 30, 36, 38, 42, 52, 42, 37, + 14, 56, 77, 77, 61, 75, 72, 69, 38, 30, 28, 14, 9, 5, 14, 30, + 40, 38, 42, 37, 40, 29, 37, 26, 17, 38, 80, 102, 69, 67, 69, 59, + 132, 154, 138, 148, 123, 126, 130, 144, 147, 155, 154, 157, 140, 128, 131, 107, + 72, 55, 29, 12, 9, 9, 8, 6, 10, 12, 18, 18, 22, 2, 0, 18, + 64, 64, 61, 178, 178, 174, 174, 166, 170, 165, 150, 124, 38, 87, 142, 130, + 136, 138, 130, 130, 130, 112, 119, 85, 40, 79, 158, 173, 177, 177, 175, 174, + 173, 169, 157, 165, 170, 167, 167, 165, 165, 162, 153, 143, 127, 104, 95, 53, + 56, 63, 73, 79, 93, 103, 136, 115, 124, 108, 77, 79, 81, 148, 161, 150, + 135, 167, 158, 135, 159, 147, 150, 140, 143, 140, 147, 166, 154, 139, 134, 139, + 143, 139, 144, 135, 95, 16, 122, 162, 163, 159, 163, 163, 127, 147, 110, 73, + 61, 88, 116, 122, 112, 108, 106, 100, 103, 97, 65, 53, 8, 36, 155, 158, + 112, 119, 151, 151, 123, 128, 122, 63, 6, 30, 102, 126, 95, 95, 91, 91, + 111, 97, 53, 29, 76, 97, 99, 87, 84, 84, 83, 79, 77, 73, 72, 37, + 9, 123, 142, 139, 116, 139, 106, 56, 42, 40, 37, 33, 36, 40, 63, 84, + 93, 96, 107, 108, 119, 120, 118, 100, 34, 116, 134, 132, 114, 143, 127, 130, + 120, 123, 157, 162, 206, 205, 191, 179, 123, 108, 104, 116, 46, 48, 48, 49, + 51, 41, 41, 61, 72, 110, 178, 178, 120, 127, 114, 132, 136, 135, 131, 157, + 153, 143, 106, 83, 41, 40, 38, 38, 45, 45, 100, 114, 96, 97, 73, 61, + 63, 57, 76, 40, 37, 45, 61, 64, 68, 59, 61, 60, 84, 80, 80, 84, + 130, 132, 140, 131, 139, 134, 128, 139, 136, 132, 131, 120, 122, 123, 127, 135, + 123, 127, 118, 93, 96, 89, 79, 33, 14, 92, 135, 143, 104, 100, 85, 79, + 67, 72, 51, 57, 41, 46, 61, 61, 65, 51, 60, 65, 89, 60, 55, 60, + 99, 131, 135, 112, 100, 122, 123, 107, 103, 122, 112, 26, 5, 61, 134, 96, + 100, 97, 104, 103, 111, 119, 119, 115, 110, 116, 120, 135, 119, 119, 119, 120, + 116, 114, 34, 12, 33, 108, 135, 103, 108, 111, 111, 110, 118, 119, 120, 119, + 114, 124, 135, 130, 128, 126, 123, 119, 103, 116, 112, 38, 2, 64, 96, 115, + 120, 115, 114, 115, 110, 114, 102, 67, 32, 69, 106, 97, 97, 93, 92, 95, + 87, 83, 76, 37, 36, 91, 107, 106, 104, 102, 96, 68, 75, 88, 63, 53, + 4, 103, 106, 92, 99, 95, 102, 93, 104, 92, 93, 87, 89, 59, 84, 99, + 88, 76, 92, 88, 81, 71, 51, 20, 17, 14, 13, 13, 13, 12, 13, 12, + 10, 12, 12, 12, 12, 20, 77, 93, 85, 79, 87, 76, 76, 85, 88, 67, + 14, 67, 87, 76, 71, 61, 61, 53, 65, 69, 53, 20, 18, 73, 85, 84, + 77, 72, 56, 33, 21, 22, 20, 9, 0, 0, 9, 5, 0, 0, 6, 4, + 0, 0, 4, 2, 0, 2, 2, 2, 1, 9, 2, 2, 4, 14, 4, 5, + 24, 46, 61, 91, 93, 95, 95, 92, 88, 49, 45, 14, 64, 79, 61, 64, + 69, 63, 59, 59, 69, 59, 44, 21, 8, 53, 75, 84, 84, 77, 85, 76, + 76, 38, 29, 17, 106, 115, 95, 103, 91, 103, 95, 104, 46, 65, 65, 91, + 92, 102, 135, 136, 134, 128, 134, 132, 118, 85, 59, 24, 13, 13, 14, 13, + 10, 8, 12, 18, 14, 22, 32, 10, 4, 4, 42, 68, 83, 84, 166, 170, + 169, 174, 171, 174, 167, 167, 124, 38, 111, 142, 140, 135, 136, 136, 128, 144, + 139, 122, 88, 32, 144, 169, 170, 144, 155, 153, 136, 155, 153, 153, 158, 115, + 144, 158, 170, 173, 166, 169, 159, 155, 118, 120, 53, 110, 150, 143, 150, 144, + 144, 139, 161, 174, 130, 120, 119, 93, 106, 157, 150, 138, 140, 157, 159, 169, + 165, 150, 146, 148, 120, 120, 150, 151, 151, 154, 147, 143, 143, 138, 139, 112, + 13, 135, 165, 155, 162, 161, 158, 157, 162, 131, 107, 64, 123, 128, 130, 130, + 128, 126, 131, 135, 124, 96, 53, 24, 122, 162, 155, 151, 151, 151, 155, 155, + 154, 140, 71, 1, 130, 143, 155, 144, 142, 142, 147, 140, 138, 100, 33, 119, + 119, 118, 110, 111, 104, 102, 95, 95, 93, 92, 36, 9, 123, 142, 146, 146, + 139, 135, 130, 136, 131, 122, 107, 116, 93, 106, 130, 128, 128, 128, 143, 147, + 140, 131, 100, 37, 128, 150, 140, 150, 130, 139, 130, 127, 150, 166, 204, 204, + 198, 201, 174, 115, 108, 110, 115, 48, 46, 42, 53, 51, 44, 64, 60, 80, + 107, 189, 187, 126, 123, 130, 123, 100, 107, 104, 93, 89, 95, 87, 68, 37, + 38, 37, 49, 42, 75, 128, 123, 126, 111, 114, 116, 107, 107, 76, 46, 63, + 138, 144, 135, 131, 135, 142, 123, 139, 93, 127, 110, 96, 120, 118, 130, 124, + 111, 122, 126, 112, 115, 120, 111, 115, 111, 81, 83, 99, 89, 81, 88, 84, + 87, 79, 34, 14, 110, 151, 139, 132, 144, 143, 118, 131, 139, 103, 85, 42, + 79, 128, 134, 132, 131, 124, 131, 134, 128, 142, 126, 92, 89, 95, 97, 97, + 102, 107, 99, 112, 107, 118, 67, 8, 132, 128, 84, 99, 119, 116, 123, 99, + 118, 127, 123, 112, 83, 88, 95, 88, 83, 93, 92, 88, 83, 40, 0, 119, + 146, 138, 143, 139, 144, 139, 140, 135, 135, 138, 132, 108, 81, 103, 107, 107, + 111, 111, 110, 99, 97, 99, 40, 24, 85, 110, 114, 97, 93, 100, 96, 97, + 97, 108, 71, 40, 83, 106, 92, 97, 93, 104, 92, 77, 89, 77, 41, 30, + 96, 99, 88, 106, 88, 99, 103, 93, 76, 61, 53, 8, 100, 102, 85, 84, + 80, 93, 99, 99, 92, 99, 67, 48, 79, 100, 91, 87, 84, 83, 83, 85, + 55, 57, 24, 29, 100, 111, 88, 80, 99, 108, 100, 97, 104, 95, 91, 84, + 89, 92, 112, 112, 107, 103, 89, 81, 80, 84, 68, 17, 65, 85, 81, 79, + 76, 76, 71, 53, 49, 26, 17, 59, 118, 116, 124, 112, 116, 106, 100, 93, + 64, 34, 12, 65, 80, 88, 75, 87, 76, 83, 65, 77, 75, 73, 61, 61, + 97, 87, 96, 89, 97, 99, 77, 87, 112, 88, 32, 25, 72, 95, 89, 87, + 75, 75, 65, 75, 57, 38, 14, 63, 79, 79, 60, 64, 68, 68, 64, 60, + 59, 59, 28, 9, 63, 77, 84, 79, 79, 79, 72, 52, 34, 24, 10, 114, + 92, 102, 102, 100, 81, 135, 132, 63, 48, 38, 36, 41, 46, 60, 68, 59, + 61, 59, 53, 36, 21, 14, 10, 13, 13, 13, 4, 5, 12, 21, 22, 16, + 28, 12, 12, 4, 2, 38, 73, 55, 57, 161, 161, 165, 171, 174, 171, 169, + 167, 118, 17, 79, 140, 143, 140, 136, 118, 143, 139, 142, 119, 88, 34, 155, + 173, 155, 144, 162, 162, 173, 162, 151, 157, 151, 108, 140, 162, 151, 165, 142, + 163, 163, 162, 150, 119, 56, 138, 153, 166, 143, 138, 134, 143, 136, 142, 134, + 139, 128, 89, 153, 170, 165, 161, 158, 157, 155, 147, 151, 142, 140, 100, 143, + 158, 142, 139, 138, 143, 143, 150, 135, 142, 123, 103, 13, 131, 154, 151, 162, + 161, 159, 154, 155, 130, 110, 65, 122, 118, 130, 131, 131, 136, 139, 135, 124, + 100, 55, 5, 159, 161, 147, 147, 147, 144, 144, 140, 139, 131, 75, 25, 138, + 132, 140, 142, 144, 148, 147, 147, 126, 120, 40, 116, 103, 100, 85, 99, 95, + 103, 92, 91, 89, 92, 41, 5, 124, 143, 142, 135, 128, 131, 140, 142, 131, + 131, 96, 73, 126, 148, 151, 144, 140, 144, 144, 148, 142, 132, 110, 38, 127, + 142, 151, 142, 161, 146, 126, 135, 150, 186, 205, 202, 199, 198, 142, 112, 110, + 108, 106, 40, 41, 42, 49, 33, 53, 64, 56, 79, 111, 201, 194, 177, 123, + 126, 147, 136, 135, 134, 131, 131, 112, 102, 67, 37, 36, 40, 48, 38, 79, + 130, 119, 128, 124, 120, 116, 120, 104, 84, 42, 110, 131, 128, 132, 132, 128, + 122, 118, 107, 132, 118, 88, 116, 138, 138, 132, 120, 123, 107, 112, 108, 123, + 110, 103, 68, 99, 99, 87, 88, 88, 88, 95, 95, 96, 73, 42, 12, 102, + 157, 142, 143, 135, 135, 144, 143, 147, 147, 95, 45, 107, 138, 140, 135, 143, + 131, 136, 132, 123, 123, 89, 99, 126, 123, 122, 115, 108, 112, 119, 120, 114, + 114, 84, 13, 130, 83, 132, 127, 93, 96, 126, 112, 103, 103, 111, 67, 91, + 115, 123, 126, 118, 114, 118, 100, 99, 42, 18, 124, 144, 138, 124, 126, 130, + 135, 132, 136, 131, 134, 111, 85, 120, 122, 119, 115, 115, 115, 104, 104, 103, + 91, 52, 5, 81, 112, 107, 95, 97, 96, 108, 108, 104, 108, 69, 40, 85, + 97, 84, 95, 80, 87, 80, 81, 99, 77, 38, 29, 89, 93, 91, 96, 92, + 103, 100, 97, 77, 65, 49, 6, 65, 99, 88, 87, 79, 76, 89, 76, 93, + 76, 63, 45, 77, 100, 95, 89, 84, 91, 87, 80, 63, 60, 24, 61, 112, + 104, 104, 103, 106, 106, 104, 102, 92, 89, 87, 55, 91, 114, 99, 88, 95, + 91, 88, 92, 80, 93, 61, 18, 63, 68, 92, 59, 55, 57, 42, 40, 40, + 21, 14, 75, 119, 118, 103, 108, 107, 118, 112, 111, 83, 51, 17, 60, 65, + 45, 65, 81, 95, 53, 46, 71, 53, 48, 60, 73, 73, 97, 110, 110, 106, + 95, 93, 96, 106, 92, 56, 40, 76, 87, 72, 76, 76, 77, 76, 79, 49, + 40, 13, 65, 79, 79, 56, 57, 67, 55, 65, 65, 65, 57, 26, 8, 67, + 83, 75, 64, 68, 69, 65, 46, 30, 22, 9, 87, 104, 87, 112, 120, 104, + 103, 53, 73, 63, 57, 34, 38, 26, 25, 30, 21, 25, 21, 22, 20, 17, + 16, 12, 13, 8, 8, 14, 24, 24, 21, 18, 21, 29, 12, 5, 2, 0, + 44, 67, 48, 12, 178, 177, 174, 161, 161, 173, 165, 150, 116, 13, 110, 142, + 146, 148, 136, 136, 127, 138, 132, 100, 83, 34, 134, 167, 154, 158, 143, 162, + 155, 163, 148, 159, 146, 102, 128, 162, 130, 151, 143, 169, 163, 155, 151, 131, + 59, 134, 167, 143, 148, 142, 143, 146, 142, 139, 146, 146, 80, 42, 155, 169, + 155, 167, 158, 157, 155, 161, 163, 138, 143, 92, 139, 155, 138, 139, 140, 138, + 147, 146, 142, 136, 136, 97, 12, 130, 154, 151, 158, 155, 150, 130, 166, 158, + 114, 79, 81, 123, 127, 131, 128, 115, 123, 126, 123, 55, 56, 5, 110, 161, + 144, 147, 143, 151, 138, 150, 140, 135, 77, 4, 91, 147, 150, 136, 134, 138, + 139, 157, 146, 85, 46, 76, 100, 107, 92, 100, 102, 93, 92, 99, 99, 81, + 40, 5, 114, 139, 150, 130, 124, 126, 131, 127, 124, 103, 100, 77, 146, 154, + 146, 161, 142, 147, 144, 146, 146, 132, 114, 42, 127, 142, 143, 123, 120, 131, + 124, 142, 167, 212, 205, 204, 195, 146, 118, 107, 106, 118, 67, 42, 41, 42, + 45, 57, 56, 65, 65, 95, 115, 202, 205, 190, 123, 126, 131, 146, 148, 151, + 150, 146, 138, 118, 73, 36, 38, 37, 46, 34, 67, 124, 120, 126, 124, 135, + 130, 123, 108, 91, 46, 112, 127, 128, 126, 130, 135, 120, 119, 110, 118, 112, + 79, 112, 136, 116, 115, 130, 116, 118, 112, 111, 114, 119, 100, 64, 97, 114, + 110, 103, 92, 83, 100, 80, 85, 71, 41, 12, 123, 146, 135, 136, 142, 143, + 143, 142, 139, 128, 104, 52, 116, 139, 128, 127, 126, 126, 123, 126, 120, 97, + 80, 108, 127, 112, 116, 118, 119, 116, 118, 118, 116, 120, 59, 12, 69, 124, + 92, 119, 120, 115, 119, 123, 120, 114, 95, 63, 92, 116, 111, 104, 96, 103, + 104, 112, 104, 40, 14, 95, 143, 135, 143, 134, 130, 134, 138, 135, 140, 123, + 107, 85, 122, 127, 110, 115, 115, 112, 116, 116, 110, 84, 51, 2, 77, 114, + 104, 91, 93, 96, 102, 96, 99, 99, 71, 48, 72, 108, 85, 83, 89, 83, + 93, 85, 87, 68, 38, 28, 65, 92, 87, 84, 85, 93, 96, 99, 76, 65, + 52, 0, 63, 106, 80, 91, 79, 80, 87, 73, 93, 69, 55, 34, 85, 100, + 97, 92, 72, 79, 80, 89, 83, 73, 24, 84, 115, 102, 84, 89, 91, 97, + 89, 100, 93, 84, 64, 52, 89, 111, 93, 96, 93, 89, 83, 81, 83, 89, + 60, 24, 64, 73, 57, 59, 41, 45, 44, 44, 29, 20, 10, 61, 116, 115, + 102, 108, 106, 106, 103, 119, 89, 56, 14, 59, 59, 91, 73, 81, 103, 51, + 72, 75, 51, 63, 71, 52, 89, 110, 103, 102, 91, 99, 99, 99, 96, 91, + 65, 28, 84, 80, 77, 61, 64, 59, 61, 76, 57, 41, 17, 61, 83, 87, + 57, 53, 53, 59, 55, 52, 63, 41, 21, 5, 67, 73, 75, 53, 56, 48, + 44, 41, 34, 25, 10, 93, 100, 100, 85, 96, 73, 110, 69, 72, 63, 60, + 52, 40, 29, 25, 24, 22, 20, 18, 16, 17, 14, 14, 10, 9, 10, 18, + 24, 25, 36, 18, 17, 20, 34, 14, 24, 2, 0, 41, 67, 37, 59, 163, + 165, 163, 169, 159, 157, 167, 151, 126, 30, 110, 138, 142, 131, 138, 142, 134, + 139, 128, 111, 89, 29, 131, 163, 162, 146, 165, 157, 157, 148, 148, 162, 138, + 99, 146, 165, 159, 157, 161, 170, 162, 155, 159, 130, 69, 120, 155, 142, 144, + 140, 140, 154, 147, 148, 143, 142, 95, 38, 155, 169, 163, 159, 154, 161, 146, + 148, 150, 130, 134, 88, 136, 150, 139, 140, 140, 142, 134, 140, 147, 132, 131, + 102, 16, 131, 154, 151, 169, 162, 150, 155, 161, 151, 120, 87, 107, 120, 126, + 116, 115, 118, 120, 114, 122, 68, 52, 4, 108, 154, 144, 146, 151, 150, 150, + 147, 146, 136, 75, 2, 93, 143, 142, 139, 136, 135, 136, 143, 131, 93, 48, + 108, 104, 87, 92, 97, 104, 95, 92, 97, 104, 76, 41, 2, 124, 142, 146, + 128, 132, 139, 142, 139, 118, 106, 75, 72, 144, 155, 144, 150, 138, 148, 150, + 150, 142, 128, 108, 55, 116, 135, 144, 130, 119, 126, 114, 136, 195, 206, 205, + 201, 153, 122, 107, 108, 115, 73, 53, 40, 41, 45, 44, 57, 59, 68, 69, + 89, 115, 210, 208, 198, 123, 124, 131, 134, 142, 147, 148, 151, 143, 123, 75, + 34, 34, 33, 49, 30, 72, 126, 118, 123, 123, 132, 131, 119, 122, 81, 46, + 102, 130, 135, 142, 142, 144, 120, 114, 107, 119, 100, 75, 108, 136, 123, 122, + 114, 124, 124, 122, 108, 127, 118, 96, 61, 107, 107, 102, 88, 84, 77, 80, + 79, 83, 67, 34, 10, 123, 148, 148, 132, 151, 138, 134, 138, 131, 134, 103, + 63, 103, 136, 123, 122, 118, 134, 119, 106, 116, 100, 71, 107, 131, 115, 115, + 116, 114, 119, 114, 115, 119, 120, 60, 10, 85, 122, 126, 91, 93, 118, 111, + 108, 108, 112, 96, 59, 88, 128, 119, 92, 112, 124, 112, 99, 99, 37, 0, + 114, 138, 139, 136, 131, 134, 124, 127, 128, 130, 124, 100, 80, 120, 119, 106, + 108, 112, 116, 115, 115, 100, 97, 51, 5, 84, 107, 99, 99, 92, 97, 87, + 100, 100, 100, 77, 46, 77, 100, 80, 79, 91, 91, 89, 92, 91, 69, 42, + 24, 81, 93, 81, 108, 91, 102, 100, 80, 77, 71, 46, 2, 95, 91, 81, + 88, 75, 73, 81, 71, 100, 72, 55, 38, 79, 96, 106, 93, 96, 87, 77, + 76, 79, 61, 29, 68, 114, 111, 106, 93, 93, 77, 83, 84, 88, 53, 49, + 33, 85, 103, 85, 83, 80, 72, 80, 81, 91, 84, 60, 28, 57, 80, 55, + 49, 48, 61, 46, 49, 28, 24, 9, 65, 119, 116, 100, 115, 107, 102, 100, + 110, 80, 57, 14, 46, 55, 65, 80, 65, 65, 67, 75, 52, 67, 69, 69, + 13, 87, 107, 92, 103, 107, 97, 110, 112, 110, 96, 60, 30, 76, 81, 67, + 60, 61, 61, 75, 73, 81, 52, 17, 64, 71, 80, 57, 59, 61, 59, 55, + 68, 60, 55, 29, 4, 59, 88, 71, 57, 48, 56, 46, 40, 36, 26, 10, + 107, 111, 93, 96, 69, 71, 87, 72, 71, 57, 63, 61, 53, 26, 38, 26, + 29, 28, 26, 20, 18, 20, 22, 13, 5, 8, 20, 29, 34, 32, 36, 26, + 25, 24, 14, 9, 4, 6, 49, 61, 40, 30, 181, 178, 170, 167, 167, 163, + 165, 167, 126, 24, 83, 140, 142, 127, 146, 135, 139, 123, 130, 104, 83, 28, + 132, 171, 161, 163, 166, 153, 161, 159, 151, 161, 131, 100, 144, 153, 140, 143, + 161, 163, 161, 153, 157, 128, 76, 126, 157, 155, 150, 134, 144, 153, 144, 139, + 140, 143, 104, 69, 162, 173, 153, 163, 142, 155, 151, 150, 142, 138, 138, 87, + 142, 144, 140, 142, 143, 132, 143, 146, 146, 131, 132, 106, 17, 132, 154, 154, + 151, 162, 144, 151, 166, 138, 124, 76, 114, 134, 114, 115, 115, 112, 115, 102, + 111, 83, 51, 20, 120, 159, 153, 147, 150, 158, 158, 151, 154, 136, 75, 1, + 118, 143, 127, 140, 140, 134, 138, 138, 126, 108, 57, 110, 104, 95, 87, 99, + 104, 92, 99, 93, 97, 77, 38, 4, 132, 143, 146, 136, 139, 132, 143, 147, + 124, 104, 79, 91, 151, 150, 147, 142, 132, 148, 146, 135, 132, 130, 107, 56, + 118, 138, 146, 130, 138, 115, 110, 135, 202, 208, 201, 161, 123, 104, 123, 71, + 69, 56, 41, 41, 40, 46, 42, 45, 59, 64, 73, 102, 136, 209, 208, 199, + 120, 120, 130, 131, 132, 138, 147, 150, 143, 119, 65, 33, 30, 32, 40, 37, + 79, 124, 116, 122, 122, 135, 123, 126, 103, 91, 60, 100, 136, 128, 139, 131, + 131, 135, 128, 107, 116, 100, 71, 111, 135, 131, 108, 134, 115, 116, 108, 124, + 120, 114, 85, 65, 91, 106, 93, 87, 79, 76, 80, 79, 87, 61, 36, 9, + 123, 148, 132, 132, 142, 150, 142, 132, 144, 136, 107, 64, 96, 139, 127, 119, + 136, 126, 112, 118, 103, 88, 64, 108, 134, 115, 123, 127, 123, 128, 131, 120, + 115, 118, 69, 18, 89, 118, 123, 96, 114, 119, 116, 110, 115, 108, 95, 55, + 85, 116, 114, 107, 103, 103, 103, 100, 100, 41, 0, 110, 139, 139, 139, 135, + 138, 132, 128, 128, 130, 122, 69, 89, 122, 112, 106, 116, 123, 118, 106, 97, + 96, 92, 48, 30, 99, 108, 99, 95, 92, 104, 93, 104, 103, 103, 79, 55, + 81, 107, 80, 75, 91, 93, 93, 84, 81, 68, 42, 22, 79, 89, 91, 100, + 91, 99, 84, 80, 79, 72, 51, 14, 88, 88, 72, 80, 69, 72, 89, 68, + 87, 72, 53, 37, 72, 97, 96, 99, 99, 91, 68, 77, 75, 63, 33, 57, + 111, 103, 104, 85, 85, 88, 110, 88, 83, 56, 52, 53, 87, 102, 88, 83, + 80, 93, 93, 87, 92, 87, 68, 29, 60, 73, 57, 46, 34, 42, 40, 57, + 34, 20, 12, 76, 118, 114, 103, 115, 103, 103, 108, 111, 87, 57, 16, 64, + 55, 63, 72, 57, 67, 79, 56, 49, 53, 64, 40, 10, 89, 107, 104, 110, + 108, 100, 96, 99, 95, 95, 63, 34, 71, 85, 73, 55, 61, 57, 67, 72, + 71, 52, 17, 56, 79, 73, 57, 59, 51, 57, 51, 49, 59, 51, 29, 5, + 64, 76, 73, 56, 40, 46, 41, 32, 36, 24, 9, 107, 99, 99, 71, 83, + 88, 55, 73, 60, 67, 63, 59, 51, 29, 42, 30, 30, 25, 26, 21, 29, + 29, 25, 14, 5, 10, 20, 32, 25, 30, 33, 18, 24, 9, 21, 9, 4, + 1, 36, 63, 24, 18, 167, 173, 177, 169, 169, 162, 166, 161, 123, 24, 87, + 138, 142, 134, 134, 132, 132, 130, 134, 106, 84, 32, 119, 169, 151, 154, 157, + 155, 161, 155, 154, 138, 128, 83, 144, 158, 157, 132, 161, 154, 154, 153, 151, + 130, 79, 102, 148, 154, 153, 142, 148, 154, 146, 155, 151, 139, 123, 65, 165, + 161, 163, 163, 151, 163, 144, 153, 132, 144, 132, 91, 138, 143, 139, 132, 136, + 135, 147, 142, 144, 131, 118, 102, 17, 136, 146, 140, 155, 154, 150, 150, 155, + 140, 127, 79, 102, 93, 126, 116, 104, 104, 123, 119, 89, 67, 52, 6, 114, + 158, 144, 146, 158, 153, 143, 153, 154, 135, 79, 25, 127, 134, 132, 142, 139, + 134, 138, 135, 131, 123, 64, 115, 122, 122, 91, 102, 110, 97, 97, 96, 106, + 76, 40, 2, 131, 131, 148, 136, 138, 120, 142, 147, 126, 110, 75, 100, 158, + 148, 140, 139, 138, 146, 139, 134, 120, 124, 115, 59, 112, 136, 136, 135, 111, + 116, 119, 131, 198, 201, 174, 126, 108, 108, 69, 56, 42, 38, 37, 40, 38, + 45, 34, 48, 59, 67, 89, 111, 177, 212, 209, 202, 122, 122, 130, 131, 132, + 136, 146, 147, 140, 116, 46, 33, 32, 20, 40, 37, 79, 123, 114, 123, 123, + 131, 123, 124, 103, 84, 53, 108, 124, 131, 131, 124, 119, 120, 118, 114, 110, + 87, 65, 110, 134, 135, 116, 120, 110, 124, 123, 126, 118, 107, 85, 61, 96, + 104, 95, 92, 95, 96, 93, 88, 87, 52, 36, 8, 97, 147, 134, 132, 120, + 144, 151, 139, 136, 136, 106, 69, 97, 135, 122, 130, 126, 134, 111, 114, 106, + 85, 65, 118, 135, 120, 120, 131, 126, 127, 122, 120, 116, 108, 84, 22, 103, + 116, 122, 99, 112, 118, 112, 112, 110, 107, 91, 49, 80, 119, 114, 119, 103, + 107, 114, 104, 99, 42, 12, 111, 138, 146, 120, 118, 134, 131, 130, 122, 124, + 119, 61, 88, 127, 115, 110, 115, 128, 122, 111, 103, 88, 85, 53, 6, 92, + 108, 95, 93, 91, 102, 99, 103, 100, 103, 83, 48, 73, 104, 85, 106, 75, + 69, 84, 91, 81, 67, 40, 20, 81, 84, 77, 104, 89, 83, 83, 79, 80, + 72, 49, 13, 55, 79, 75, 67, 72, 69, 96, 67, 83, 69, 51, 30, 77, + 95, 106, 96, 104, 99, 88, 73, 72, 59, 33, 64, 107, 103, 99, 73, 88, + 81, 91, 84, 65, 60, 53, 48, 89, 96, 81, 87, 88, 76, 71, 79, 75, + 77, 65, 28, 56, 71, 63, 46, 44, 34, 34, 33, 36, 17, 10, 79, 112, + 114, 100, 106, 110, 103, 104, 115, 73, 56, 18, 59, 45, 63, 60, 61, 53, + 61, 57, 55, 56, 36, 55, 29, 89, 104, 104, 116, 93, 99, 104, 102, 100, + 92, 63, 37, 71, 77, 65, 51, 65, 72, 63, 71, 42, 46, 18, 42, 49, + 75, 51, 56, 59, 60, 51, 51, 55, 51, 28, 2, 63, 75, 71, 51, 51, + 44, 59, 33, 46, 24, 8, 64, 107, 85, 88, 84, 79, 65, 72, 72, 68, + 65, 68, 51, 30, 36, 32, 24, 36, 33, 32, 22, 24, 20, 20, 8, 17, + 25, 37, 41, 36, 29, 24, 12, 14, 14, 6, 5, 1, 49, 38, 49, 20, + 155, 177, 177, 163, 167, 166, 163, 147, 120, 12, 89, 139, 142, 136, 136, 136, + 143, 140, 128, 96, 84, 28, 118, 159, 153, 167, 158, 159, 153, 139, 154, 140, + 130, 69, 122, 166, 139, 126, 157, 157, 148, 151, 153, 131, 87, 103, 151, 144, + 155, 134, 148, 147, 147, 155, 147, 138, 89, 21, 165, 167, 157, 154, 161, 151, + 157, 158, 146, 131, 135, 84, 135, 139, 132, 135, 132, 135, 144, 142, 136, 134, + 127, 100, 16, 135, 146, 154, 158, 151, 140, 147, 146, 151, 128, 102, 83, 102, + 130, 122, 115, 128, 100, 111, 92, 51, 52, 2, 106, 157, 154, 147, 151, 157, + 147, 154, 146, 123, 79, 5, 87, 132, 130, 143, 138, 140, 123, 135, 144, 104, + 71, 65, 108, 103, 83, 97, 106, 97, 97, 102, 99, 72, 38, 0, 130, 135, + 144, 138, 135, 143, 143, 142, 123, 107, 77, 104, 157, 139, 148, 148, 143, 143, + 143, 151, 147, 119, 114, 61, 111, 135, 142, 139, 134, 124, 110, 126, 190, 208, + 171, 116, 93, 107, 63, 55, 41, 37, 42, 38, 38, 48, 40, 69, 60, 63, + 92, 122, 190, 220, 212, 205, 123, 122, 128, 132, 136, 142, 144, 146, 132, 95, + 34, 30, 30, 28, 42, 36, 77, 118, 114, 123, 124, 120, 126, 119, 85, 92, + 52, 99, 122, 123, 122, 120, 123, 131, 119, 112, 116, 100, 59, 114, 127, 143, + 122, 116, 119, 120, 120, 123, 107, 103, 63, 80, 89, 96, 92, 89, 87, 91, + 80, 84, 85, 61, 41, 6, 131, 148, 134, 127, 123, 127, 130, 134, 128, 124, + 116, 81, 100, 138, 123, 135, 126, 126, 100, 115, 88, 88, 60, 111, 130, 116, + 119, 124, 134, 119, 122, 118, 115, 104, 65, 20, 63, 91, 118, 111, 122, 111, + 111, 120, 110, 100, 80, 46, 71, 107, 111, 123, 119, 116, 102, 103, 106, 41, + 8, 100, 140, 140, 134, 131, 126, 130, 126, 126, 130, 100, 55, 96, 120, 116, + 102, 115, 130, 114, 107, 96, 92, 77, 59, 5, 77, 110, 93, 84, 95, 93, + 92, 102, 97, 96, 77, 63, 68, 97, 83, 83, 100, 68, 69, 72, 72, 67, + 36, 18, 72, 77, 76, 97, 97, 95, 85, 79, 85, 72, 52, 12, 63, 87, + 69, 64, 65, 65, 76, 77, 65, 68, 45, 24, 72, 91, 100, 91, 97, 93, + 91, 71, 72, 60, 34, 52, 96, 95, 123, 85, 93, 68, 63, 69, 51, 48, + 53, 38, 89, 93, 80, 75, 88, 76, 77, 72, 75, 71, 64, 29, 51, 71, + 63, 56, 48, 37, 49, 42, 33, 18, 9, 80, 111, 107, 110, 112, 107, 93, + 107, 118, 80, 56, 14, 60, 48, 79, 55, 45, 46, 77, 60, 51, 44, 38, + 64, 33, 93, 103, 107, 102, 102, 97, 97, 92, 96, 95, 84, 38, 46, 80, + 71, 64, 64, 64, 51, 46, 52, 44, 21, 32, 64, 73, 57, 51, 48, 49, + 53, 56, 52, 38, 20, 1, 52, 63, 67, 51, 60, 41, 44, 34, 34, 24, + 6, 96, 102, 83, 91, 85, 87, 72, 75, 76, 67, 64, 64, 53, 30, 51, + 37, 24, 24, 21, 17, 25, 21, 25, 17, 8, 20, 33, 32, 18, 16, 14, + 14, 12, 24, 17, 9, 5, 0, 22, 57, 21, 24, 157, 169, 181, 177, 163, + 158, 166, 150, 124, 17, 79, 135, 140, 146, 146, 140, 134, 131, 128, 91, 79, + 32, 118, 136, 166, 155, 169, 155, 154, 153, 155, 157, 126, 68, 147, 159, 148, + 150, 135, 138, 144, 135, 139, 138, 89, 106, 138, 144, 150, 146, 142, 144, 146, + 147, 147, 139, 100, 33, 153, 159, 144, 148, 150, 163, 163, 153, 158, 131, 128, + 72, 127, 138, 135, 130, 135, 131, 138, 134, 128, 131, 128, 99, 18, 136, 140, + 132, 136, 136, 126, 127, 135, 131, 130, 104, 72, 108, 107, 112, 93, 97, 107, + 115, 112, 52, 46, 16, 100, 153, 142, 144, 146, 143, 144, 154, 148, 111, 76, + 2, 85, 139, 124, 142, 142, 135, 134, 138, 131, 108, 59, 60, 77, 79, 99, + 96, 104, 99, 103, 99, 104, 67, 33, 0, 131, 143, 138, 139, 139, 153, 147, + 131, 115, 110, 60, 122, 157, 153, 157, 146, 146, 140, 131, 134, 138, 131, 115, + 63, 110, 134, 142, 139, 135, 110, 108, 115, 155, 210, 174, 124, 100, 108, 68, + 52, 41, 46, 48, 42, 45, 44, 42, 46, 63, 87, 111, 157, 206, 218, 216, + 201, 123, 122, 130, 134, 142, 147, 148, 142, 122, 57, 32, 28, 26, 29, 49, + 32, 73, 118, 116, 128, 124, 127, 124, 120, 97, 85, 51, 67, 116, 122, 107, + 112, 111, 99, 119, 118, 114, 92, 56, 102, 123, 126, 126, 120, 120, 120, 119, + 118, 111, 97, 57, 65, 96, 102, 106, 97, 95, 87, 97, 89, 73, 52, 29, + 5, 131, 146, 140, 104, 103, 102, 115, 95, 110, 112, 107, 85, 84, 122, 126, + 123, 122, 122, 97, 115, 84, 81, 51, 100, 126, 120, 120, 123, 120, 119, 116, + 118, 116, 114, 60, 20, 93, 114, 134, 115, 120, 118, 110, 108, 103, 100, 85, + 42, 65, 76, 102, 111, 116, 106, 112, 100, 104, 36, 22, 102, 127, 132, 130, + 124, 128, 130, 128, 126, 122, 99, 46, 92, 96, 122, 120, 127, 119, 110, 100, + 97, 83, 88, 46, 2, 99, 102, 95, 81, 92, 88, 85, 84, 83, 83, 85, + 64, 45, 83, 102, 80, 84, 61, 69, 76, 77, 69, 51, 14, 76, 76, 83, + 89, 84, 87, 84, 84, 83, 77, 51, 17, 64, 69, 68, 59, 56, 52, 57, + 61, 61, 64, 45, 22, 52, 85, 97, 97, 88, 79, 67, 72, 72, 61, 38, + 41, 67, 92, 89, 89, 60, 64, 60, 63, 63, 45, 42, 24, 88, 93, 71, + 83, 85, 81, 83, 71, 81, 72, 67, 40, 32, 69, 56, 57, 41, 33, 37, + 46, 41, 16, 22, 71, 108, 96, 111, 108, 108, 104, 106, 114, 71, 56, 14, + 60, 60, 68, 57, 42, 41, 38, 45, 56, 37, 52, 63, 8, 79, 96, 95, + 100, 92, 99, 88, 97, 93, 97, 75, 38, 46, 67, 67, 55, 61, 51, 52, + 55, 42, 46, 28, 28, 60, 45, 44, 33, 36, 40, 52, 55, 41, 40, 32, + 1, 55, 64, 75, 68, 53, 51, 53, 40, 36, 26, 6, 106, 111, 79, 79, + 80, 79, 80, 75, 75, 61, 65, 67, 53, 28, 29, 28, 18, 18, 22, 24, + 20, 18, 22, 17, 6, 20, 38, 16, 28, 42, 29, 30, 20, 13, 13, 10, + 6, 1, 45, 33, 30, 20, 162, 163, 165, 159, 171, 162, 161, 144, 118, 16, + 71, 128, 131, 134, 127, 130, 127, 130, 124, 93, 87, 29, 112, 153, 166, 162, + 154, 154, 157, 157, 155, 153, 115, 67, 146, 146, 146, 148, 147, 140, 143, 139, + 136, 136, 131, 126, 100, 103, 107, 103, 111, 107, 110, 119, 114, 115, 111, 40, + 166, 154, 154, 161, 150, 153, 153, 154, 147, 144, 135, 75, 140, 138, 130, 130, + 134, 123, 128, 122, 127, 126, 128, 97, 22, 138, 135, 128, 124, 120, 130, 119, + 115, 104, 124, 104, 103, 107, 91, 87, 87, 81, 84, 77, 76, 69, 46, 2, + 73, 153, 147, 148, 147, 153, 150, 151, 131, 130, 83, 2, 87, 138, 123, 126, + 140, 136, 127, 112, 115, 89, 83, 93, 91, 92, 73, 61, 53, 49, 53, 55, + 51, 49, 29, 1, 140, 140, 142, 135, 135, 132, 130, 127, 91, 97, 59, 115, + 151, 148, 142, 134, 138, 136, 131, 128, 130, 123, 115, 71, 77, 118, 126, 126, + 108, 85, 111, 104, 135, 198, 195, 155, 99, 124, 97, 57, 56, 52, 56, 53, + 55, 56, 60, 56, 91, 97, 139, 201, 217, 217, 218, 194, 122, 123, 130, 138, + 144, 150, 144, 132, 79, 32, 29, 28, 29, 28, 37, 41, 68, 106, 110, 111, + 111, 110, 103, 100, 104, 99, 64, 72, 116, 123, 103, 107, 114, 110, 110, 112, + 99, 88, 55, 80, 116, 122, 104, 100, 115, 119, 106, 107, 106, 84, 51, 61, + 69, 63, 63, 61, 68, 63, 53, 52, 41, 42, 26, 6, 116, 135, 140, 134, + 127, 126, 130, 130, 123, 123, 118, 119, 118, 84, 92, 96, 97, 97, 118, 115, + 106, 83, 46, 95, 123, 120, 123, 118, 119, 118, 120, 114, 114, 110, 73, 28, + 91, 95, 100, 102, 100, 100, 106, 97, 100, 85, 84, 37, 64, 71, 99, 96, + 93, 92, 91, 89, 84, 40, 0, 22, 68, 81, 71, 69, 80, 89, 83, 77, + 89, 79, 36, 49, 56, 63, 65, 75, 77, 72, 77, 76, 89, 80, 41, 25, + 99, 97, 100, 102, 93, 95, 93, 91, 87, 84, 79, 80, 53, 56, 64, 71, + 67, 61, 81, 80, 64, 69, 51, 12, 71, 69, 100, 85, 84, 87, 84, 83, + 81, 79, 55, 1, 53, 69, 51, 49, 53, 59, 57, 68, 61, 67, 38, 21, + 36, 75, 76, 65, 64, 69, 71, 61, 61, 65, 57, 36, 46, 64, 64, 52, + 52, 65, 55, 48, 53, 48, 44, 40, 83, 89, 88, 84, 80, 84, 83, 75, + 75, 79, 72, 37, 28, 55, 60, 61, 52, 32, 44, 45, 40, 18, 13, 76, + 110, 103, 104, 108, 108, 112, 106, 112, 85, 56, 14, 52, 57, 55, 37, 46, + 37, 36, 40, 36, 38, 44, 44, 16, 68, 81, 84, 63, 67, 76, 76, 77, + 69, 65, 57, 57, 60, 55, 52, 51, 48, 59, 49, 49, 44, 42, 42, 24, + 28, 32, 29, 33, 32, 34, 29, 52, 41, 34, 29, 0, 48, 57, 56, 60, + 56, 67, 40, 30, 33, 25, 6, 99, 97, 83, 72, 75, 67, 65, 65, 65, + 65, 61, 57, 48, 30, 37, 22, 30, 25, 24, 24, 22, 22, 18, 17, 6, + 24, 41, 45, 24, 20, 16, 13, 14, 13, 12, 10, 6, 0, 32, 36, 25, + 24, 153, 147, 147, 143, 144, 140, 143, 124, 88, 14, 63, 119, 115, 95, 122, + 124, 112, 106, 120, 100, 84, 26, 89, 153, 155, 155, 150, 124, 115, 110, 130, + 123, 99, 64, 107, 119, 120, 120, 118, 120, 126, 120, 120, 116, 118, 111, 114, + 83, 61, 48, 53, 73, 37, 28, 33, 24, 24, 37, 161, 126, 144, 92, 146, + 147, 146, 108, 147, 139, 128, 73, 131, 132, 123, 120, 115, 115, 103, 111, 111, + 111, 88, 45, 28, 92, 92, 97, 95, 91, 99, 93, 99, 93, 91, 87, 84, + 81, 81, 84, 77, 67, 68, 68, 61, 57, 57, 0, 32, 124, 132, 100, 110, + 138, 128, 119, 124, 120, 76, 36, 72, 119, 134, 130, 116, 118, 114, 110, 107, + 114, 76, 60, 52, 44, 41, 60, 63, 55, 37, 44, 41, 34, 25, 0, 126, + 92, 114, 107, 115, 120, 123, 126, 96, 87, 55, 108, 123, 130, 124, 118, 124, + 123, 119, 115, 122, 123, 114, 111, 108, 108, 77, 83, 108, 106, 97, 100, 102, + 186, 208, 171, 123, 112, 119, 88, 56, 44, 55, 55, 52, 52, 57, 83, 96, + 132, 190, 216, 218, 218, 214, 163, 122, 124, 132, 144, 146, 146, 136, 104, 38, + 29, 26, 25, 29, 32, 34, 41, 53, 89, 92, 87, 79, 93, 92, 83, 83, + 89, 77, 69, 103, 95, 99, 83, 83, 79, 76, 80, 80, 85, 48, 40, 40, + 55, 48, 48, 49, 57, 60, 80, 92, 65, 46, 52, 56, 56, 53, 51, 51, + 51, 41, 40, 40, 30, 33, 4, 18, 83, 97, 83, 85, 91, 104, 93, 97, + 99, 99, 97, 92, 102, 104, 106, 106, 111, 110, 111, 95, 81, 57, 81, 115, + 115, 119, 104, 103, 100, 99, 88, 95, 89, 68, 30, 52, 56, 52, 55, 55, + 59, 60, 65, 64, 65, 61, 37, 52, 28, 32, 32, 25, 21, 20, 25, 24, + 22, 6, 6, 10, 25, 10, 9, 20, 33, 17, 17, 30, 34, 38, 33, 12, + 26, 30, 30, 41, 59, 45, 56, 65, 64, 52, 0, 32, 53, 59, 59, 59, + 63, 65, 57, 59, 61, 57, 60, 56, 64, 64, 65, 61, 64, 49, 65, 57, + 68, 48, 28, 63, 64, 87, 83, 81, 80, 79, 73, 76, 75, 45, 22, 49, + 28, 33, 21, 22, 24, 30, 14, 13, 18, 28, 20, 18, 20, 24, 24, 25, + 28, 30, 34, 38, 51, 57, 57, 59, 60, 53, 53, 52, 52, 51, 48, 46, + 48, 44, 38, 80, 77, 75, 73, 63, 63, 63, 60, 56, 55, 41, 44, 42, + 42, 46, 38, 36, 30, 30, 28, 29, 14, 10, 73, 81, 100, 102, 95, 92, + 92, 97, 88, 67, 51, 18, 61, 48, 44, 41, 41, 37, 38, 38, 38, 37, + 40, 53, 22, 20, 21, 18, 17, 26, 30, 34, 34, 38, 48, 53, 48, 41, + 44, 45, 41, 42, 41, 42, 40, 41, 38, 36, 34, 40, 38, 37, 33, 37, + 34, 34, 26, 34, 34, 28, 0, 29, 41, 55, 29, 32, 38, 51, 37, 29, + 24, 5, 65, 99, 80, 69, 68, 68, 65, 60, 44, 42, 38, 32, 30, 32, + 20, 14, 28, 25, 21, 25, 22, 25, 20, 20, 8, 13, 22, 20, 16, 8, + 9, 8, 6, 6, 6, 5, 4, 0, 0, 0, 0, 0, 104, 96, 91, 84, + 71, 67, 64, 57, 51, 0, 25, 33, 37, 34, 40, 53, 51, 57, 73, 93, + 76, 25, 107, 73, 72, 68, 67, 89, 67, 55, 48, 83, 76, 42, 36, 29, + 36, 30, 29, 28, 34, 29, 28, 26, 29, 29, 29, 49, 59, 84, 84, 95, + 144, 122, 150, 124, 110, 16, 171, 128, 142, 111, 96, 87, 89, 93, 123, 128, + 122, 68, 84, 87, 91, 76, 72, 68, 57, 53, 46, 52, 38, 32, 21, 18, + 17, 16, 13, 13, 10, 9, 8, 9, 8, 5, 4, 9, 12, 4, 0, 2, + 8, 0, 0, 2, 9, 0, 37, 24, 28, 30, 33, 71, 112, 80, 96, 108, + 71, 4, 68, 48, 53, 48, 49, 49, 55, 42, 46, 44, 42, 45, 32, 38, + 72, 57, 85, 93, 106, 77, 108, 104, 95, 0, 142, 123, 122, 112, 104, 102, + 103, 85, 107, 91, 53, 96, 96, 106, 102, 100, 100, 103, 104, 107, 100, 108, + 103, 102, 99, 68, 51, 51, 52, 59, 100, 97, 106, 150, 198, 187, 128, 88, + 154, 112, 92, 95, 97, 102, 102, 100, 99, 120, 163, 201, 218, 218, 217, 216, + 202, 135, 122, 130, 143, 146, 143, 136, 111, 44, 29, 28, 26, 28, 33, 34, + 20, 42, 53, 48, 53, 59, 60, 60, 63, 64, 71, 80, 81, 76, 80, 64, + 65, 68, 61, 67, 73, 93, 89, 95, 56, 65, 115, 120, 108, 97, 77, 79, + 77, 72, 48, 41, 44, 8, 0, 29, 6, 4, 6, 18, 0, 4, 4, 0, + 0, 29, 29, 21, 20, 18, 24, 24, 21, 21, 25, 26, 28, 29, 32, 36, + 41, 48, 51, 56, 59, 65, 68, 77, 57, 63, 80, 77, 55, 56, 60, 57, + 42, 41, 46, 34, 24, 6, 18, 6, 29, 32, 16, 12, 24, 25, 14, 14, + 22, 25, 68, 83, 93, 97, 91, 103, 96, 99, 69, 64, 4, 18, 128, 139, + 95, 91, 116, 127, 81, 96, 95, 46, 21, 49, 118, 115, 71, 71, 73, 51, + 51, 46, 57, 34, 25, 6, 4, 2, 26, 6, 4, 5, 22, 14, 6, 12, + 28, 24, 24, 24, 33, 32, 29, 53, 45, 37, 38, 64, 34, 12, 55, 21, + 28, 21, 25, 22, 21, 18, 18, 13, 10, 22, 14, 34, 48, 55, 56, 61, + 75, 76, 69, 69, 49, 14, 72, 100, 108, 85, 92, 65, 51, 44, 29, 29, + 25, 24, 30, 25, 34, 20, 22, 32, 22, 29, 32, 34, 34, 28, 49, 44, + 59, 51, 49, 42, 51, 48, 45, 42, 44, 41, 36, 21, 12, 12, 9, 9, + 8, 9, 10, 17, 12, 17, 26, 33, 29, 46, 49, 45, 32, 53, 57, 34, + 14, 46, 34, 37, 34, 33, 30, 33, 41, 45, 48, 48, 64, 4, 37, 112, + 114, 72, 73, 65, 64, 55, 41, 21, 16, 12, 10, 9, 9, 9, 8, 6, + 6, 6, 4, 13, 12, 4, 2, 6, 4, 1, 0, 5, 2, 0, 1, 6, + 0, 0, 9, 9, 14, 13, 13, 14, 16, 17, 30, 24, 4, 63, 92, 65, + 56, 53, 49, 49, 49, 45, 44, 52, 41, 45, 17, 21, 29, 18, 17, 10, + 9, 8, 8, 9, 9, 9, 8, 8, 6, 6, 8, 8, 4, 4, 5, 4, + 2, 2, 2, 2, 1, 1, 1, 84, 97, 100, 99, 114, 110, 120, 123, 115, + 1, 71, 146, 143, 99, 111, 123, 104, 71, 60, 55, 45, 32, 48, 91, 96, + 87, 102, 111, 143, 127, 120, 119, 104, 32, 106, 136, 140, 135, 127, 139, 135, + 140, 140, 140, 79, 24, 93, 171, 174, 161, 158, 154, 151, 154, 166, 151, 104, + 21, 167, 131, 139, 174, 167, 150, 128, 126, 91, 71, 44, 63, 65, 76, 83, + 89, 89, 88, 97, 103, 107, 80, 88, 93, 153, 165, 165, 169, 170, 167, 162, + 163, 171, 162, 138, 130, 162, 158, 153, 165, 163, 159, 139, 120, 161, 136, 42, + 4, 99, 158, 157, 130, 112, 87, 77, 72, 36, 26, 20, 2, 28, 67, 75, + 83, 77, 91, 97, 102, 102, 110, 89, 20, 77, 155, 169, 174, 171, 170, 155, + 165, 157, 122, 95, 0, 138, 127, 150, 146, 150, 143, 139, 122, 112, 89, 52, + 20, 18, 18, 18, 21, 21, 20, 24, 22, 22, 22, 29, 32, 34, 88, 99, + 120, 111, 110, 148, 136, 126, 108, 154, 199, 147, 99, 115, 135, 131, 144, 143, + 134, 140, 151, 162, 195, 213, 216, 220, 218, 214, 213, 153, 124, 128, 139, 142, + 138, 130, 97, 42, 29, 28, 24, 34, 25, 25, 34, 55, 57, 68, 99, 115, + 108, 91, 89, 75, 69, 69, 59, 55, 53, 80, 118, 135, 131, 142, 114, 115, + 124, 103, 100, 52, 93, 140, 126, 108, 108, 123, 112, 116, 87, 81, 73, 12, + 20, 151, 150, 110, 102, 115, 116, 112, 104, 124, 103, 52, 16, 40, 97, 116, + 108, 111, 114, 122, 111, 111, 108, 102, 88, 106, 111, 118, 115, 110, 84, 64, + 52, 37, 38, 42, 33, 37, 67, 63, 76, 69, 80, 81, 89, 88, 81, 69, + 9, 26, 80, 89, 95, 89, 87, 88, 84, 88, 91, 84, 92, 81, 110, 123, + 127, 123, 122, 116, 104, 97, 69, 8, 118, 124, 108, 122, 112, 118, 110, 119, + 115, 96, 57, 16, 110, 127, 128, 118, 119, 122, 114, 87, 100, 102, 63, 52, + 6, 20, 130, 124, 81, 73, 122, 119, 88, 73, 91, 87, 45, 12, 52, 116, + 111, 67, 67, 63, 56, 48, 41, 36, 6, 16, 45, 49, 53, 46, 60, 64, + 59, 63, 67, 57, 0, 41, 116, 115, 112, 114, 116, 108, 108, 104, 81, 51, + 13, 80, 111, 93, 92, 107, 106, 106, 104, 84, 57, 46, 9, 42, 139, 131, + 84, 79, 77, 71, 60, 32, 16, 20, 10, 10, 10, 12, 9, 9, 8, 8, + 5, 8, 6, 6, 5, 10, 17, 67, 79, 83, 81, 68, 91, 76, 33, 12, + 52, 96, 91, 84, 42, 40, 21, 16, 16, 10, 13, 6, 25, 45, 92, 91, + 91, 93, 91, 96, 88, 89, 68, 64, 6, 93, 130, 123, 108, 123, 111, 112, + 111, 110, 102, 100, 77, 72, 92, 73, 59, 68, 81, 72, 69, 59, 48, 12, + 0, 18, 77, 106, 69, 69, 73, 91, 69, 72, 64, 10, 0, 59, 75, 71, + 46, 73, 64, 64, 22, 14, 24, 4, 71, 72, 76, 76, 83, 80, 80, 79, + 80, 83, 76, 49, 30, 21, 24, 49, 42, 37, 41, 40, 29, 22, 13, 16, + 6, 4, 16, 38, 41, 52, 40, 45, 46, 61, 61, 68, 57, 72, 77, 83, + 83, 83, 182, 173, 175, 173, 169, 169, 124, 127, 115, 2, 123, 148, 163, 162, + 158, 159, 155, 153, 155, 147, 85, 30, 118, 173, 175, 173, 167, 165, 174, 169, + 159, 123, 114, 36, 148, 158, 157, 142, 140, 159, 153, 147, 147, 142, 89, 17, + 139, 177, 157, 163, 171, 175, 157, 162, 148, 158, 116, 24, 178, 162, 134, 143, + 107, 135, 148, 162, 169, 151, 131, 139, 159, 148, 158, 167, 155, 155, 165, 158, + 159, 142, 153, 143, 107, 159, 148, 144, 148, 151, 134, 127, 118, 128, 142, 114, + 119, 136, 153, 155, 144, 150, 142, 138, 146, 155, 91, 1, 120, 159, 177, 151, + 154, 122, 134, 134, 126, 107, 72, 16, 95, 166, 163, 163, 158, 158, 112, 146, + 148, 118, 100, 14, 140, 170, 161, 153, 143, 159, 153, 146, 148, 120, 91, 0, + 154, 127, 144, 146, 144, 142, 144, 142, 122, 116, 52, 46, 147, 135, 115, 119, + 139, 139, 115, 115, 114, 111, 108, 102, 104, 93, 144, 158, 155, 146, 143, 144, + 131, 107, 107, 193, 167, 116, 85, 159, 170, 179, 193, 201, 206, 208, 212, 214, + 217, 216, 210, 213, 206, 158, 127, 134, 138, 134, 130, 106, 67, 40, 30, 26, + 24, 33, 24, 36, 46, 60, 56, 51, 92, 132, 150, 143, 138, 142, 150, 144, + 148, 127, 114, 116, 128, 140, 142, 131, 126, 132, 124, 122, 114, 106, 60, 88, + 140, 136, 122, 112, 111, 107, 119, 126, 95, 81, 0, 154, 157, 140, 142, 138, + 139, 136, 118, 116, 111, 108, 114, 14, 147, 142, 131, 132, 126, 130, 119, 122, + 122, 123, 120, 95, 75, 115, 120, 116, 111, 96, 97, 108, 115, 71, 38, 64, + 120, 123, 128, 116, 123, 123, 119, 112, 112, 100, 72, 5, 131, 126, 132, 128, + 118, 115, 108, 100, 104, 100, 81, 85, 126, 144, 140, 130, 130, 120, 122, 124, + 97, 73, 4, 134, 120, 120, 114, 107, 107, 104, 106, 111, 106, 60, 18, 122, + 135, 118, 96, 107, 99, 118, 114, 102, 87, 67, 57, 2, 134, 139, 127, 73, + 88, 115, 111, 89, 88, 89, 89, 52, 14, 112, 123, 106, 103, 107, 100, 114, + 75, 57, 60, 5, 52, 114, 123, 127, 118, 112, 106, 103, 107, 103, 71, 20, + 104, 123, 119, 111, 102, 102, 102, 104, 100, 99, 57, 12, 91, 118, 88, 97, + 85, 87, 88, 96, 99, 87, 53, 8, 120, 142, 118, 114, 123, 119, 115, 84, + 100, 96, 93, 95, 106, 116, 104, 102, 106, 99, 111, 102, 104, 103, 85, 83, + 91, 81, 77, 79, 87, 77, 97, 88, 84, 38, 13, 64, 119, 93, 84, 89, + 68, 79, 73, 55, 48, 33, 34, 77, 102, 106, 114, 106, 106, 97, 102, 89, + 84, 72, 51, 16, 110, 120, 128, 115, 115, 107, 87, 83, 91, 77, 75, 88, + 89, 80, 51, 52, 72, 75, 41, 45, 36, 69, 14, 0, 80, 107, 77, 75, + 69, 65, 72, 65, 69, 75, 22, 0, 67, 68, 61, 69, 83, 67, 68, 64, + 26, 25, 4, 96, 76, 76, 76, 75, 71, 49, 63, 72, 63, 57, 41, 28, + 18, 34, 40, 22, 26, 20, 21, 18, 26, 24, 5, 1, 34, 65, 77, 77, + 81, 73, 64, 55, 68, 53, 63, 57, 59, 48, 65, 84, 72, 195, 187, 175, + 179, 183, 177, 181, 128, 122, 2, 130, 151, 162, 162, 151, 155, 136, 144, 143, + 154, 96, 32, 153, 179, 175, 170, 169, 170, 173, 175, 171, 131, 119, 40, 146, + 170, 175, 182, 173, 174, 169, 165, 151, 144, 99, 20, 136, 177, 163, 165, 146, + 148, 157, 153, 130, 124, 110, 22, 178, 154, 161, 128, 142, 142, 147, 151, 130, + 135, 150, 143, 104, 106, 126, 128, 130, 108, 103, 135, 108, 111, 155, 100, 157, + 154, 165, 163, 155, 161, 158, 161, 153, 144, 140, 96, 148, 175, 166, 155, 161, + 158, 157, 161, 148, 150, 99, 2, 134, 162, 179, 151, 126, 154, 124, 148, 127, + 112, 83, 33, 134, 163, 157, 161, 159, 154, 151, 151, 148, 138, 100, 16, 143, + 171, 138, 143, 148, 150, 144, 159, 142, 131, 100, 0, 150, 123, 142, 142, 139, + 139, 138, 138, 128, 112, 53, 142, 147, 138, 118, 108, 131, 135, 119, 112, 127, + 115, 124, 110, 71, 144, 161, 151, 134, 131, 136, 146, 143, 100, 87, 162, 179, + 126, 81, 115, 119, 136, 155, 182, 194, 202, 205, 204, 205, 210, 194, 173, 148, + 122, 135, 131, 118, 99, 67, 41, 30, 30, 28, 26, 28, 25, 33, 46, 56, + 56, 63, 60, 91, 135, 150, 148, 147, 142, 139, 143, 144, 123, 118, 88, 143, + 142, 124, 126, 134, 136, 134, 126, 96, 116, 57, 84, 130, 127, 120, 122, 119, + 111, 115, 119, 97, 80, 18, 158, 155, 154, 134, 128, 127, 124, 114, 114, 112, + 124, 114, 13, 144, 130, 123, 124, 134, 128, 126, 134, 123, 122, 103, 60, 103, + 150, 131, 119, 116, 111, 111, 120, 115, 76, 52, 114, 120, 116, 111, 108, 118, + 124, 110, 108, 99, 91, 81, 21, 131, 114, 116, 119, 132, 126, 112, 107, 100, + 89, 64, 112, 147, 128, 119, 128, 120, 104, 96, 106, 81, 69, 0, 93, 119, + 111, 100, 92, 97, 110, 110, 123, 102, 61, 13, 110, 132, 106, 100, 83, 92, + 95, 103, 85, 68, 69, 59, 4, 122, 112, 119, 103, 106, 96, 92, 100, 95, + 114, 93, 57, 14, 118, 122, 99, 92, 92, 89, 89, 96, 64, 68, 6, 99, + 123, 120, 115, 104, 115, 114, 107, 87, 85, 60, 13, 107, 122, 111, 100, 99, + 89, 89, 89, 88, 80, 55, 10, 89, 112, 99, 99, 96, 83, 84, 81, 89, + 93, 53, 12, 110, 131, 130, 128, 116, 110, 96, 115, 93, 88, 79, 84, 106, + 111, 122, 92, 102, 106, 102, 100, 87, 100, 92, 71, 55, 102, 111, 92, 88, + 71, 68, 87, 75, 45, 13, 59, 116, 97, 88, 84, 76, 85, 73, 75, 52, + 34, 40, 81, 111, 102, 92, 89, 89, 89, 89, 95, 100, 56, 59, 13, 99, + 118, 126, 119, 115, 85, 85, 114, 110, 107, 96, 69, 45, 84, 84, 57, 53, + 44, 41, 26, 46, 51, 13, 8, 97, 97, 73, 76, 67, 83, 83, 76, 69, + 68, 24, 0, 51, 60, 57, 46, 41, 41, 37, 52, 42, 25, 5, 107, 85, + 65, 76, 59, 55, 46, 55, 55, 57, 55, 41, 21, 26, 44, 36, 24, 9, + 4, 4, 6, 13, 22, 1, 5, 55, 96, 97, 64, 69, 63, 64, 69, 55, + 34, 41, 46, 51, 89, 107, 131, 136, 165, 166, 179, 178, 155, 167, 181, 131, + 122, 2, 127, 162, 162, 147, 144, 153, 147, 146, 139, 143, 104, 37, 130, 182, + 173, 175, 166, 165, 163, 166, 174, 132, 122, 51, 102, 171, 173, 163, 167, 175, + 173, 153, 148, 143, 97, 17, 147, 166, 175, 150, 159, 155, 161, 165, 140, 146, + 122, 10, 175, 155, 157, 128, 136, 140, 155, 147, 146, 143, 95, 100, 104, 158, + 122, 122, 150, 146, 144, 142, 144, 112, 107, 65, 158, 158, 165, 159, 150, 154, + 143, 140, 151, 150, 136, 93, 165, 173, 157, 150, 150, 153, 155, 148, 142, 159, + 93, 0, 138, 163, 158, 131, 130, 151, 150, 158, 158, 144, 87, 14, 154, 162, + 166, 157, 163, 158, 151, 154, 148, 119, 102, 13, 139, 165, 138, 147, 146, 154, + 157, 157, 144, 120, 97, 0, 151, 131, 143, 147, 144, 138, 140, 135, 136, 119, + 53, 143, 134, 135, 131, 139, 135, 116, 128, 127, 118, 111, 107, 68, 88, 153, + 155, 150, 131, 135, 138, 128, 140, 103, 88, 144, 183, 131, 80, 88, 103, 114, + 119, 126, 151, 162, 173, 170, 166, 161, 140, 128, 130, 124, 107, 87, 57, 44, + 32, 28, 26, 26, 36, 21, 26, 45, 46, 52, 55, 69, 64, 55, 96, 154, + 154, 153, 138, 139, 128, 128, 118, 114, 77, 126, 150, 124, 128, 143, 130, 126, + 122, 126, 102, 116, 69, 71, 131, 128, 122, 132, 112, 122, 116, 118, 103, 79, + 14, 106, 151, 139, 142, 151, 135, 130, 126, 115, 111, 115, 75, 17, 104, 123, + 128, 135, 127, 126, 118, 119, 120, 104, 93, 61, 111, 146, 119, 118, 128, 135, + 134, 120, 107, 79, 40, 112, 127, 118, 111, 110, 106, 119, 115, 99, 95, 88, + 80, 5, 114, 108, 119, 104, 124, 134, 126, 107, 103, 80, 46, 110, 150, 127, + 124, 127, 118, 102, 104, 93, 87, 75, 2, 111, 126, 126, 89, 102, 106, 102, + 115, 112, 112, 64, 12, 114, 131, 103, 97, 92, 95, 92, 81, 89, 69, 64, + 61, 4, 97, 114, 83, 107, 108, 99, 97, 95, 93, 95, 89, 67, 13, 104, + 116, 93, 85, 99, 102, 97, 95, 83, 69, 1, 107, 127, 107, 106, 106, 93, + 89, 84, 77, 81, 60, 4, 103, 122, 106, 91, 99, 85, 83, 87, 84, 88, + 56, 9, 88, 112, 110, 96, 107, 107, 103, 87, 87, 73, 55, 10, 100, 127, + 130, 124, 127, 119, 126, 127, 123, 115, 76, 106, 123, 106, 87, 80, 85, 87, + 84, 69, 75, 79, 60, 44, 65, 116, 111, 67, 83, 83, 106, 72, 76, 46, + 17, 64, 111, 95, 75, 91, 92, 81, 84, 75, 59, 37, 37, 80, 112, 99, + 88, 88, 97, 99, 85, 84, 95, 56, 60, 2, 97, 112, 112, 118, 122, 84, + 91, 99, 107, 102, 92, 63, 71, 95, 76, 38, 57, 33, 44, 40, 44, 46, + 12, 0, 76, 85, 76, 75, 65, 72, 77, 76, 75, 60, 24, 0, 75, 69, + 44, 53, 52, 45, 36, 49, 57, 26, 5, 102, 69, 69, 75, 55, 75, 48, + 46, 65, 59, 48, 44, 20, 13, 44, 32, 8, 13, 17, 10, 9, 9, 17, + 1, 10, 76, 99, 65, 56, 63, 41, 55, 85, 60, 42, 52, 40, 51, 93, + 131, 77, 30, 177, 177, 183, 162, 170, 173, 177, 130, 122, 2, 127, 159, 162, + 142, 140, 143, 151, 136, 138, 144, 110, 44, 124, 170, 171, 169, 175, 177, 165, + 162, 166, 135, 124, 51, 157, 175, 171, 163, 165, 173, 173, 154, 150, 147, 99, + 16, 144, 167, 158, 162, 163, 161, 165, 148, 146, 139, 115, 12, 173, 146, 153, + 131, 139, 136, 159, 148, 151, 140, 85, 108, 159, 154, 158, 155, 142, 143, 146, + 138, 142, 134, 134, 57, 157, 169, 163, 154, 155, 147, 159, 140, 146, 144, 134, + 92, 166, 171, 147, 151, 154, 148, 142, 153, 144, 143, 99, 2, 138, 162, 175, + 150, 154, 132, 127, 127, 147, 115, 88, 1, 146, 153, 170, 158, 163, 155, 153, + 153, 128, 128, 103, 13, 148, 163, 143, 153, 153, 148, 144, 153, 148, 130, 97, + 0, 144, 147, 143, 143, 142, 139, 140, 136, 128, 116, 61, 96, 124, 144, 134, + 119, 136, 120, 122, 122, 116, 114, 106, 60, 124, 154, 150, 146, 140, 128, 134, + 138, 143, 116, 87, 138, 186, 144, 110, 72, 75, 73, 79, 95, 114, 116, 120, + 123, 122, 120, 118, 95, 76, 57, 45, 37, 34, 32, 28, 24, 28, 34, 22, + 48, 52, 53, 55, 60, 63, 69, 68, 57, 89, 144, 139, 131, 115, 127, 128, + 127, 116, 95, 77, 131, 143, 124, 135, 130, 131, 118, 116, 130, 115, 118, 76, + 60, 120, 127, 118, 116, 119, 115, 108, 111, 93, 81, 12, 110, 150, 148, 157, + 139, 108, 106, 116, 107, 120, 120, 77, 14, 114, 132, 127, 130, 115, 120, 120, + 120, 106, 106, 97, 57, 110, 150, 127, 115, 116, 110, 108, 123, 108, 77, 41, + 96, 126, 119, 123, 118, 106, 114, 102, 96, 97, 84, 79, 2, 103, 118, 119, + 103, 119, 130, 124, 103, 89, 81, 46, 112, 153, 115, 118, 108, 116, 102, 103, + 87, 92, 72, 4, 122, 124, 118, 92, 99, 110, 112, 106, 112, 104, 67, 9, + 127, 132, 100, 92, 92, 81, 92, 92, 76, 75, 68, 57, 1, 104, 135, 112, + 110, 104, 99, 89, 110, 93, 96, 92, 56, 8, 104, 120, 89, 88, 91, 89, + 87, 92, 64, 67, 1, 107, 122, 93, 107, 91, 84, 88, 79, 83, 68, 60, + 14, 111, 122, 100, 95, 81, 87, 83, 80, 72, 87, 56, 8, 87, 108, 106, + 88, 81, 88, 81, 83, 87, 76, 56, 6, 114, 138, 128, 132, 111, 115, 114, + 119, 112, 111, 52, 104, 112, 106, 92, 84, 76, 80, 77, 77, 77, 60, 69, + 41, 106, 123, 120, 64, 93, 89, 95, 71, 71, 60, 21, 65, 115, 97, 89, + 92, 95, 79, 73, 84, 73, 36, 18, 68, 110, 84, 76, 73, 79, 85, 79, + 73, 99, 67, 60, 5, 110, 115, 111, 116, 110, 92, 88, 83, 116, 96, 92, + 57, 76, 103, 65, 37, 46, 25, 30, 40, 37, 42, 14, 0, 67, 95, 69, + 67, 64, 64, 67, 63, 57, 63, 25, 0, 55, 59, 59, 55, 64, 56, 37, + 42, 46, 26, 5, 110, 68, 67, 75, 49, 79, 46, 46, 45, 51, 44, 40, + 18, 22, 37, 25, 4, 10, 2, 4, 1, 5, 22, 1, 33, 89, 89, 49, + 52, 64, 52, 44, 68, 33, 29, 44, 36, 71, 108, 107, 24, 32, 181, 183, + 162, 166, 170, 154, 171, 142, 116, 2, 132, 163, 162, 142, 142, 144, 144, 138, + 138, 139, 114, 49, 118, 173, 175, 174, 167, 173, 173, 162, 163, 148, 123, 56, + 157, 171, 170, 167, 159, 161, 162, 153, 151, 143, 97, 12, 148, 174, 162, 159, + 161, 158, 167, 155, 144, 146, 123, 12, 177, 166, 146, 148, 138, 139, 138, 150, + 154, 142, 81, 151, 162, 154, 153, 146, 142, 154, 159, 139, 154, 144, 146, 73, + 165, 157, 155, 148, 154, 140, 159, 139, 148, 143, 120, 102, 170, 166, 148, 155, + 147, 154, 151, 163, 143, 144, 104, 0, 136, 165, 175, 148, 138, 135, 132, 130, + 159, 112, 93, 10, 148, 166, 161, 154, 159, 148, 147, 153, 130, 134, 104, 10, + 148, 170, 144, 144, 150, 150, 150, 153, 147, 128, 100, 0, 148, 138, 144, 148, + 139, 138, 142, 132, 122, 118, 64, 99, 122, 128, 124, 126, 138, 127, 116, 122, + 112, 120, 111, 52, 124, 155, 155, 136, 140, 127, 136, 144, 131, 124, 85, 126, + 185, 155, 124, 103, 77, 64, 60, 60, 55, 55, 53, 53, 57, 53, 49, 46, + 41, 40, 36, 34, 30, 30, 29, 34, 18, 30, 53, 60, 67, 68, 68, 65, + 67, 72, 72, 59, 91, 151, 130, 134, 134, 131, 122, 140, 126, 112, 59, 127, + 144, 124, 139, 123, 115, 115, 114, 127, 116, 115, 83, 42, 123, 134, 136, 132, + 130, 126, 118, 111, 100, 81, 2, 111, 144, 134, 146, 107, 102, 114, 116, 108, + 111, 116, 107, 9, 146, 138, 116, 138, 120, 110, 108, 110, 106, 122, 100, 55, + 118, 140, 123, 123, 111, 111, 104, 118, 112, 80, 45, 95, 124, 138, 147, 115, + 103, 96, 99, 97, 100, 92, 76, 0, 143, 112, 112, 104, 116, 115, 124, 104, + 91, 87, 45, 111, 151, 127, 122, 104, 114, 99, 99, 85, 96, 80, 0, 130, + 124, 126, 93, 97, 97, 116, 116, 115, 111, 67, 12, 123, 136, 102, 92, 87, + 81, 77, 93, 71, 77, 69, 63, 2, 142, 142, 112, 119, 85, 99, 114, 87, + 87, 100, 89, 60, 5, 111, 116, 91, 85, 89, 128, 93, 100, 64, 67, 0, + 108, 124, 95, 103, 83, 93, 81, 77, 79, 88, 63, 22, 106, 118, 91, 100, + 84, 81, 81, 83, 76, 89, 56, 5, 85, 111, 96, 80, 81, 88, 106, 84, + 83, 87, 57, 5, 110, 142, 126, 123, 110, 111, 110, 110, 114, 104, 49, 106, + 123, 93, 115, 97, 83, 77, 77, 72, 67, 64, 68, 38, 104, 114, 110, 69, + 99, 103, 69, 72, 52, 44, 20, 68, 115, 85, 85, 87, 67, 60, 57, 75, + 79, 37, 25, 81, 108, 97, 76, 73, 71, 72, 69, 83, 93, 71, 56, 6, + 110, 126, 112, 112, 85, 85, 87, 83, 111, 91, 93, 52, 76, 100, 71, 29, + 45, 25, 32, 37, 40, 41, 12, 0, 81, 88, 73, 65, 61, 75, 73, 67, + 52, 64, 25, 0, 71, 61, 49, 46, 38, 67, 44, 44, 40, 26, 8, 96, + 80, 77, 46, 33, 81, 44, 44, 41, 59, 33, 40, 17, 17, 29, 22, 14, + 36, 21, 22, 8, 6, 14, 0, 44, 92, 81, 45, 49, 51, 45, 59, 76, + 33, 30, 34, 34, 63, 108, 46, 38, 33, 181, 177, 161, 169, 170, 153, 174, + 136, 123, 0, 130, 158, 161, 142, 144, 140, 151, 134, 142, 143, 118, 60, 88, + 163, 178, 170, 173, 170, 165, 161, 162, 158, 124, 64, 123, 174, 159, 167, 170, + 163, 166, 157, 148, 153, 106, 16, 148, 174, 159, 157, 169, 161, 161, 144, 131, + 136, 124, 9, 175, 162, 166, 143, 139, 139, 143, 153, 153, 139, 77, 157, 162, + 155, 148, 142, 144, 169, 140, 136, 131, 146, 158, 65, 161, 153, 158, 154, 153, + 147, 163, 138, 144, 142, 92, 106, 171, 174, 150, 169, 151, 150, 158, 166, 139, + 144, 115, 0, 140, 162, 169, 148, 153, 139, 136, 126, 153, 120, 96, 22, 143, + 166, 157, 157, 151, 144, 162, 153, 140, 132, 110, 12, 150, 171, 136, 151, 150, + 146, 147, 157, 140, 128, 99, 0, 147, 136, 144, 143, 134, 134, 139, 134, 135, + 112, 68, 99, 146, 115, 128, 131, 146, 123, 135, 131, 103, 124, 100, 46, 139, + 163, 154, 143, 140, 124, 128, 143, 128, 127, 87, 118, 181, 163, 139, 127, 112, + 96, 71, 61, 56, 52, 49, 48, 46, 44, 44, 41, 38, 37, 36, 34, 34, + 37, 37, 14, 28, 57, 69, 73, 72, 84, 85, 88, 89, 76, 76, 68, 85, + 162, 136, 126, 138, 131, 128, 127, 126, 118, 51, 128, 138, 124, 124, 126, 115, + 130, 119, 119, 118, 119, 85, 37, 107, 131, 136, 122, 118, 112, 112, 111, 102, + 84, 12, 123, 143, 138, 142, 103, 104, 122, 107, 108, 119, 123, 111, 9, 142, + 131, 119, 138, 115, 112, 114, 103, 100, 119, 99, 45, 111, 154, 122, 115, 115, + 112, 108, 120, 111, 80, 49, 87, 132, 135, 116, 104, 114, 96, 112, 110, 106, + 93, 84, 14, 138, 104, 120, 99, 114, 97, 135, 102, 92, 84, 45, 112, 150, + 119, 126, 108, 108, 111, 89, 85, 84, 76, 0, 114, 123, 124, 92, 106, 92, + 102, 103, 118, 96, 68, 8, 122, 136, 107, 100, 88, 85, 84, 96, 75, 71, + 73, 63, 1, 134, 150, 107, 114, 85, 102, 95, 102, 88, 89, 87, 61, 9, + 103, 127, 92, 92, 115, 112, 97, 91, 65, 68, 8, 112, 124, 88, 93, 81, + 81, 79, 88, 79, 87, 64, 9, 104, 122, 100, 102, 96, 102, 99, 102, 77, + 92, 60, 4, 93, 104, 89, 87, 116, 81, 80, 81, 83, 93, 59, 9, 142, + 139, 128, 114, 112, 124, 108, 112, 111, 111, 56, 111, 108, 112, 93, 110, 89, + 75, 77, 64, 65, 63, 69, 34, 110, 124, 106, 64, 93, 87, 69, 68, 71, + 48, 22, 71, 120, 73, 76, 64, 56, 56, 55, 57, 72, 38, 42, 77, 108, + 107, 75, 71, 67, 83, 68, 69, 89, 72, 57, 5, 103, 126, 108, 106, 92, + 84, 83, 87, 97, 91, 88, 48, 87, 107, 60, 32, 28, 20, 28, 36, 29, + 57, 12, 5, 87, 92, 69, 69, 72, 68, 55, 72, 60, 63, 26, 0, 77, + 68, 46, 51, 46, 38, 45, 44, 36, 28, 8, 84, 87, 56, 64, 48, 83, + 41, 41, 42, 51, 34, 36, 12, 17, 22, 24, 25, 17, 22, 22, 5, 8, + 8, 0, 44, 100, 68, 46, 55, 57, 51, 60, 96, 37, 34, 36, 32, 76, + 107, 41, 63, 63, 183, 163, 161, 162, 167, 151, 181, 134, 127, 0, 130, 155, + 162, 142, 154, 139, 143, 131, 136, 135, 127, 84, 93, 162, 178, 178, 174, 163, + 178, 170, 163, 162, 124, 65, 83, 173, 173, 163, 163, 163, 155, 163, 151, 144, + 111, 12, 157, 171, 159, 158, 153, 157, 157, 142, 131, 139, 124, 6, 175, 162, + 154, 139, 144, 135, 161, 154, 147, 139, 69, 163, 151, 147, 146, 146, 165, 144, + 138, 143, 146, 131, 143, 38, 166, 157, 153, 153, 136, 150, 163, 132, 153, 132, + 93, 126, 177, 165, 151, 165, 154, 147, 153, 167, 138, 139, 112, 0, 146, 154, + 174, 147, 138, 130, 138, 131, 166, 138, 115, 12, 151, 167, 153, 153, 143, 143, + 162, 148, 140, 126, 115, 9, 140, 170, 147, 144, 144, 140, 144, 157, 134, 132, + 96, 0, 148, 128, 140, 136, 131, 128, 136, 131, 131, 118, 72, 52, 108, 155, + 140, 131, 104, 124, 108, 114, 107, 127, 104, 41, 151, 161, 158, 134, 147, 126, + 127, 143, 122, 124, 92, 102, 171, 163, 162, 132, 126, 114, 97, 81, 77, 63, + 57, 52, 49, 48, 46, 49, 48, 52, 49, 51, 46, 42, 51, 13, 53, 73, + 75, 77, 96, 99, 106, 110, 110, 79, 77, 60, 84, 167, 136, 144, 114, 138, + 144, 114, 122, 116, 51, 123, 138, 126, 128, 119, 115, 136, 119, 122, 115, 123, + 89, 41, 110, 130, 132, 122, 115, 115, 114, 115, 100, 83, 9, 124, 140, 135, + 154, 102, 106, 114, 104, 110, 108, 114, 79, 9, 106, 128, 111, 146, 118, 118, + 112, 104, 104, 123, 100, 40, 111, 154, 116, 115, 116, 108, 116, 107, 106, 84, + 48, 99, 131, 139, 104, 104, 97, 108, 106, 97, 96, 89, 83, 1, 124, 108, + 115, 99, 119, 96, 123, 100, 92, 80, 28, 107, 150, 123, 128, 108, 106, 97, + 93, 91, 88, 76, 0, 118, 114, 136, 89, 96, 92, 92, 102, 122, 102, 69, + 6, 124, 142, 108, 111, 84, 92, 81, 104, 75, 68, 71, 64, 0, 112, 122, + 88, 124, 87, 100, 88, 103, 87, 91, 84, 60, 8, 112, 131, 92, 84, 112, + 91, 92, 92, 77, 71, 0, 107, 116, 95, 80, 79, 79, 76, 103, 80, 100, + 67, 2, 91, 119, 112, 87, 95, 89, 85, 80, 76, 99, 61, 4, 89, 104, + 87, 108, 120, 99, 79, 80, 81, 85, 60, 6, 126, 131, 128, 110, 112, 127, + 108, 108, 107, 110, 52, 116, 122, 96, 99, 103, 84, 68, 88, 65, 64, 69, + 61, 30, 112, 116, 69, 107, 67, 71, 77, 69, 71, 52, 28, 45, 114, 75, + 68, 59, 53, 56, 52, 56, 73, 41, 25, 72, 103, 114, 72, 63, 65, 89, + 68, 69, 100, 60, 60, 2, 104, 127, 110, 84, 85, 81, 83, 111, 97, 85, + 85, 40, 87, 99, 80, 29, 28, 21, 26, 37, 30, 38, 14, 0, 61, 84, + 56, 52, 49, 63, 55, 75, 52, 84, 26, 0, 64, 67, 45, 38, 41, 46, + 42, 36, 45, 30, 9, 36, 102, 52, 48, 44, 67, 38, 38, 38, 60, 32, + 29, 8, 24, 16, 2, 6, 6, 20, 8, 5, 13, 2, 0, 49, 93, 59, + 37, 55, 42, 49, 48, 83, 44, 38, 34, 26, 71, 111, 45, 61, 5, 183, + 162, 163, 166, 169, 142, 181, 135, 118, 0, 128, 151, 166, 139, 159, 136, 142, + 134, 134, 123, 138, 88, 68, 157, 181, 179, 181, 163, 175, 183, 158, 169, 120, + 72, 55, 179, 177, 150, 150, 159, 166, 166, 148, 144, 114, 10, 159, 177, 159, + 158, 157, 154, 147, 150, 132, 139, 124, 6, 173, 162, 165, 138, 138, 138, 147, + 153, 148, 136, 55, 169, 146, 151, 138, 169, 155, 142, 138, 148, 154, 134, 130, + 33, 158, 161, 150, 138, 140, 151, 170, 128, 148, 131, 84, 136, 178, 169, 150, + 166, 147, 150, 151, 170, 140, 140, 118, 0, 140, 153, 174, 132, 143, 132, 144, + 132, 179, 120, 110, 1, 158, 165, 151, 151, 139, 140, 166, 146, 136, 131, 112, + 8, 136, 169, 143, 144, 142, 134, 144, 163, 136, 138, 99, 0, 144, 139, 136, + 131, 124, 140, 131, 130, 123, 110, 75, 64, 108, 157, 158, 115, 131, 123, 104, + 112, 103, 142, 99, 33, 147, 161, 166, 138, 153, 151, 124, 138, 120, 115, 92, + 96, 161, 169, 158, 154, 134, 122, 111, 104, 92, 80, 64, 68, 65, 64, 63, + 63, 51, 55, 52, 49, 42, 44, 56, 10, 57, 79, 72, 92, 93, 95, 116, + 127, 126, 106, 77, 69, 76, 167, 132, 150, 116, 143, 130, 116, 120, 104, 41, + 127, 135, 123, 127, 119, 116, 144, 115, 123, 114, 135, 99, 46, 112, 126, 114, + 116, 116, 116, 108, 118, 102, 80, 2, 128, 131, 131, 165, 102, 103, 108, 103, + 110, 106, 119, 88, 5, 114, 132, 114, 144, 116, 118, 110, 104, 99, 130, 93, + 33, 112, 163, 114, 116, 114, 106, 103, 104, 102, 84, 52, 88, 134, 111, 104, + 102, 102, 99, 100, 104, 97, 87, 81, 2, 139, 108, 110, 97, 130, 95, 135, + 96, 87, 75, 26, 103, 148, 112, 135, 102, 102, 102, 89, 81, 93, 79, 0, + 134, 114, 128, 88, 97, 119, 122, 102, 130, 103, 72, 4, 138, 150, 114, 112, + 81, 85, 84, 115, 87, 67, 75, 64, 0, 114, 136, 104, 124, 87, 95, 89, + 112, 84, 93, 85, 64, 4, 115, 124, 91, 87, 119, 87, 96, 91, 69, 71, + 0, 114, 131, 92, 79, 80, 73, 76, 111, 80, 72, 65, 2, 88, 122, 123, + 85, 81, 80, 77, 71, 72, 110, 61, 2, 85, 96, 87, 110, 132, 80, 79, + 77, 81, 102, 63, 4, 130, 143, 138, 108, 107, 132, 106, 106, 106, 107, 32, + 122, 119, 114, 85, 114, 83, 69, 75, 61, 64, 61, 63, 24, 118, 116, 69, + 115, 65, 71, 69, 68, 68, 52, 30, 36, 114, 72, 60, 56, 88, 57, 52, + 56, 63, 41, 26, 60, 76, 122, 68, 65, 64, 79, 67, 65, 87, 65, 56, + 2, 97, 130, 103, 85, 83, 83, 81, 112, 95, 89, 87, 30, 92, 100, 83, + 29, 20, 20, 30, 25, 26, 32, 17, 0, 55, 83, 42, 38, 38, 45, 52, + 84, 51, 60, 29, 0, 57, 59, 48, 37, 42, 41, 40, 44, 46, 29, 20, + 16, 103, 57, 45, 44, 59, 38, 37, 37, 40, 33, 26, 9, 8, 16, 1, + 32, 2, 0, 2, 5, 5, 2, 0, 42, 85, 45, 42, 57, 45, 37, 56, + 91, 29, 28, 40, 22, 92, 106, 9, 8, 0, 9, 12, 9, 12, 12, 56, + 59, 12, 14, 0, 34, 80, 80, 75, 80, 34, 30, 73, 80, 22, 10, 68, + 85, 88, 60, 85, 40, 44, 44, 76, 42, 30, 26, 0, 85, 110, 104, 32, + 108, 34, 36, 41, 77, 77, 16, 38, 91, 88, 91, 93, 96, 91, 60, 51, + 81, 77, 84, 16, 76, 53, 42, 44, 85, 89, 60, 48, 42, 38, 42, 24, + 89, 108, 56, 59, 60, 49, 95, 51, 67, 49, 42, 21, 59, 102, 52, 53, + 55, 100, 92, 57, 93, 45, 48, 2, 99, 103, 68, 110, 130, 71, 56, 97, + 61, 89, 32, 34, 112, 120, 114, 52, 42, 51, 80, 52, 83, 46, 48, 12, + 99, 106, 118, 111, 96, 100, 96, 69, 68, 57, 49, 0, 104, 108, 102, 106, + 76, 71, 68, 99, 130, 73, 71, 20, 99, 131, 112, 73, 73, 103, 77, 72, + 65, 65, 44, 72, 139, 119, 80, 116, 104, 76, 80, 77, 107, 139, 68, 1, + 114, 93, 116, 114, 91, 77, 83, 108, 112, 104, 21, 118, 120, 87, 91, 88, + 88, 119, 92, 76, 87, 115, 24, 115, 116, 96, 119, 119, 111, 100, 93, 95, + 77, 77, 71, 2, 76, 136, 106, 110, 84, 108, 75, 114, 84, 80, 72, 26, + 120, 126, 99, 128, 108, 92, 88, 83, 80, 83, 68, 10, 119, 122, 130, 127, + 93, 96, 106, 89, 122, 69, 14, 159, 140, 142, 118, 161, 140, 136, 112, 122, + 116, 118, 104, 60, 87, 139, 128, 111, 104, 108, 130, 107, 127, 92, 53, 69, + 159, 175, 159, 181, 142, 136, 138, 162, 130, 127, 38, 106, 136, 139, 132, 110, + 106, 111, 142, 108, 107, 111, 52, 93, 140, 161, 135, 166, 114, 112, 102, 111, + 100, 115, 110, 30, 131, 116, 119, 114, 136, 119, 112, 115, 135, 96, 114, 30, + 162, 144, 140, 140, 142, 126, 128, 148, 112, 112, 102, 9, 110, 153, 136, 157, + 108, 114, 110, 126, 112, 112, 49, 134, 146, 146, 144, 143, 124, 128, 150, 148, + 122, 115, 96, 5, 144, 134, 150, 151, 122, 134, 112, 119, 119, 139, 116, 5, + 170, 153, 178, 143, 135, 147, 122, 119, 123, 119, 60, 93, 148, 123, 161, 147, + 112, 147, 148, 103, 122, 112, 10, 153, 191, 174, 157, 150, 154, 193, 170, 150, + 150, 134, 131, 5, 124, 131, 135, 103, 104, 99, 111, 106, 118, 119, 107, 34, + 153, 157, 136, 158, 140, 154, 124, 134, 123, 124, 123, 17, 162, 174, 163, 165, + 175, 132, 162, 165, 144, 139, 134, 92, 0, 170, 181, 174, 169, 170, 153, 150, + 147, 140, 144, 12, 163, 151, 167, 144, 128, 157, 140, 159, 139, 128, 37, 159, + 179, 155, 150, 135, 150, 123, 163, 177, 151, 142, 112, 76, 96, 171, 167, 171, + 170, 155, 146, 147, 146, 151, 135, 41, 166, 169, 151, 167, 147, 170, 148, 147, + 147, 131, 6, 187, 185, 182, 153, 146, 175, 171, 170, 185, 157, 138, 136, 14, + 154, 138, 139, 153, 150, 178, 167, 155, 130, 135, 124, 14, 153, 154, 169, 157, + 174, 139, 148, 147, 136, 139, 115, 0, 173, 179, 158, 159, 146, 150, 163, 177, + 162, 144, 116, 73, 115, 185, 173, 161, 155, 183, 155, 155, 144, 151, 163, 76, + 88, 187, 174, 198, 174, 68, 57, 63, 12, 12, 45, 55, 20, 13, 0, 41, + 89, 71, 65, 84, 41, 29, 68, 79, 21, 9, 68, 72, 85, 73, 55, 38, + 45, 44, 71, 52, 34, 26, 0, 83, 97, 92, 37, 91, 37, 34, 55, 67, + 64, 26, 44, 87, 85, 87, 69, 67, 48, 51, 71, 53, 65, 75, 28, 72, + 61, 44, 44, 52, 89, 79, 59, 44, 37, 41, 30, 89, 112, 61, 59, 71, + 57, 93, 61, 72, 49, 37, 20, 59, 102, 55, 53, 55, 95, 88, 60, 89, + 44, 45, 1, 97, 99, 87, 104, 123, 77, 56, 93, 65, 80, 25, 40, 93, + 111, 64, 42, 49, 57, 65, 67, 53, 42, 42, 17, 95, 100, 97, 131, 106, + 92, 96, 95, 65, 59, 51, 0, 102, 106, 112, 100, 76, 72, 77, 92, 112, + 89, 71, 22, 93, 126, 110, 77, 76, 99, 103, 72, 61, 67, 41, 72, 127, + 103, 80, 91, 92, 96, 77, 77, 99, 126, 61, 0, 112, 100, 103, 111, 92, + 81, 87, 100, 110, 102, 26, 124, 116, 93, 96, 80, 111, 111, 84, 87, 77, + 103, 36, 110, 116, 110, 114, 97, 97, 99, 92, 104, 76, 79, 63, 1, 85, + 122, 96, 83, 95, 97, 80, 100, 83, 83, 75, 37, 115, 128, 102, 120, 116, + 100, 106, 104, 92, 81, 79, 9, 115, 118, 116, 99, 95, 112, 95, 97, 112, + 75, 20, 148, 139, 140, 126, 138, 140, 132, 118, 130, 116, 124, 106, 55, 88, + 140, 127, 100, 110, 124, 122, 104, 123, 99, 52, 75, 155, 166, 154, 165, 140, + 132, 136, 157, 130, 124, 46, 111, 135, 138, 124, 107, 110, 111, 134, 110, 104, + 103, 49, 92, 140, 153, 135, 153, 122, 115, 108, 108, 102, 114, 108, 45, 116, + 120, 123, 138, 136, 124, 111, 112, 124, 104, 111, 32, 157, 148, 131, 131, 119, + 119, 130, 144, 106, 112, 103, 8, 116, 142, 128, 154, 103, 114, 114, 118, 110, + 107, 48, 130, 143, 146, 142, 128, 143, 144, 144, 131, 119, 112, 96, 5, 144, + 134, 147, 142, 123, 130, 126, 107, 128, 130, 110, 6, 163, 163, 159, 139, 127, + 148, 123, 124, 119, 116, 57, 100, 144, 144, 153, 127, 112, 144, 147, 106, 122, + 108, 12, 147, 183, 170, 167, 136, 140, 173, 166, 147, 150, 142, 135, 24, 131, + 127, 135, 103, 97, 100, 100, 111, 115, 115, 106, 42, 150, 155, 130, 148, 148, + 154, 126, 130, 131, 123, 103, 18, 158, 162, 161, 163, 157, 136, 158, 161, 148, + 139, 124, 93, 0, 174, 181, 170, 165, 155, 151, 150, 139, 138, 138, 1, 154, + 159, 165, 136, 124, 153, 139, 157, 140, 126, 48, 155, 179, 159, 144, 132, 143, + 124, 134, 136, 138, 140, 110, 71, 99, 175, 161, 165, 169, 151, 144, 148, 154, + 150, 139, 51, 162, 163, 154, 157, 159, 169, 148, 147, 144, 110, 6, 181, 178, + 173, 159, 147, 177, 173, 162, 162, 159, 136, 124, 14, 150, 139, 150, 151, 150, + 151, 171, 165, 142, 139, 119, 8, 151, 154, 147, 162, 170, 158, 136, 143, 138, + 130, 112, 0, 178, 175, 154, 158, 148, 151, 155, 177, 163, 158, 112, 67, 120, + 181, 170, 163, 154, 177, 157, 154, 146, 147, 161, 72, 87, 190, 175, 194, 177, + 22, 46, 24, 12, 12, 38, 56, 20, 14, 2, 49, 81, 65, 73, 73, 45, + 28, 51, 73, 22, 9, 67, 79, 76, 79, 45, 48, 38, 48, 65, 51, 36, + 25, 0, 81, 80, 45, 75, 57, 37, 37, 44, 75, 64, 24, 46, 89, 72, + 49, 49, 72, 69, 69, 61, 64, 60, 81, 24, 64, 60, 46, 42, 44, 64, + 81, 75, 55, 38, 38, 32, 89, 114, 59, 63, 60, 60, 68, 75, 64, 51, + 48, 18, 64, 84, 60, 53, 73, 93, 67, 79, 81, 44, 45, 1, 83, 97, + 72, 71, 68, 63, 57, 92, 69, 75, 24, 40, 100, 106, 60, 36, 57, 36, + 42, 41, 42, 48, 42, 17, 91, 100, 99, 100, 116, 100, 80, 91, 68, 59, + 51, 0, 99, 114, 107, 92, 83, 71, 72, 75, 72, 81, 72, 28, 85, 124, + 106, 77, 73, 84, 104, 68, 68, 68, 40, 75, 124, 114, 110, 97, 93, 95, + 93, 80, 93, 112, 75, 2, 102, 103, 110, 102, 100, 85, 89, 96, 104, 96, + 30, 118, 116, 89, 87, 110, 89, 77, 91, 88, 72, 96, 40, 104, 115, 103, + 99, 106, 102, 96, 96, 91, 76, 76, 80, 13, 73, 116, 92, 91, 96, 93, + 85, 93, 81, 80, 75, 41, 111, 126, 102, 119, 107, 107, 96, 99, 93, 88, + 76, 8, 112, 116, 107, 99, 111, 89, 96, 88, 107, 64, 26, 140, 138, 139, + 132, 123, 114, 116, 127, 116, 122, 119, 104, 52, 92, 135, 124, 104, 110, 138, + 124, 108, 114, 102, 52, 107, 155, 155, 153, 158, 147, 138, 142, 155, 130, 127, + 55, 107, 136, 136, 124, 107, 114, 112, 131, 108, 102, 97, 45, 96, 136, 148, + 136, 148, 131, 112, 108, 103, 100, 112, 108, 49, 124, 124, 119, 146, 122, 120, + 114, 112, 123, 106, 114, 46, 146, 144, 128, 134, 151, 153, 151, 140, 107, 114, + 91, 16, 115, 134, 124, 126, 102, 108, 115, 104, 107, 107, 64, 123, 143, 144, + 142, 132, 128, 123, 130, 120, 116, 116, 93, 17, 148, 139, 157, 116, 107, 114, + 120, 107, 122, 119, 110, 8, 161, 151, 165, 155, 140, 153, 126, 123, 126, 99, + 65, 112, 136, 150, 139, 112, 119, 144, 147, 110, 114, 107, 14, 140, 183, 171, + 163, 157, 143, 151, 143, 148, 150, 139, 127, 10, 130, 136, 119, 100, 100, 103, + 103, 107, 119, 115, 89, 46, 146, 155, 142, 140, 128, 148, 126, 124, 127, 126, + 124, 2, 154, 159, 162, 171, 140, 136, 150, 163, 144, 142, 124, 91, 0, 163, + 186, 169, 165, 154, 155, 154, 159, 131, 142, 1, 148, 147, 132, 124, 151, 147, + 143, 154, 136, 127, 55, 153, 177, 158, 167, 130, 124, 127, 128, 132, 135, 138, + 96, 61, 104, 170, 158, 161, 166, 154, 147, 150, 148, 151, 135, 65, 154, 161, + 159, 161, 158, 163, 150, 142, 147, 134, 8, 179, 170, 167, 155, 148, 174, 174, + 163, 155, 155, 134, 130, 0, 153, 130, 135, 154, 150, 147, 144, 169, 154, 139, + 115, 10, 150, 154, 147, 190, 159, 135, 162, 158, 131, 132, 110, 0, 173, 175, + 169, 162, 157, 148, 165, 169, 161, 148, 112, 63, 124, 139, 169, 163, 148, 144, + 146, 150, 150, 147, 150, 63, 103, 189, 178, 190, 185, 16, 36, 25, 10, 12, + 33, 45, 16, 14, 0, 51, 92, 61, 60, 72, 68, 33, 45, 59, 22, 8, + 65, 75, 67, 42, 41, 61, 51, 52, 56, 64, 33, 25, 2, 79, 73, 40, + 65, 42, 40, 37, 49, 57, 41, 25, 52, 84, 67, 92, 60, 79, 68, 64, + 60, 49, 63, 68, 26, 63, 76, 55, 42, 44, 44, 51, 64, 44, 40, 37, + 33, 92, 123, 48, 53, 57, 75, 65, 59, 49, 48, 48, 17, 61, 91, 56, + 57, 81, 71, 73, 75, 59, 45, 44, 2, 93, 97, 91, 89, 85, 59, 76, + 71, 81, 52, 21, 40, 89, 55, 36, 29, 30, 24, 29, 28, 30, 44, 36, + 16, 87, 99, 89, 93, 110, 112, 83, 72, 73, 65, 42, 0, 97, 106, 104, + 89, 87, 99, 83, 81, 76, 80, 72, 32, 83, 104, 103, 80, 76, 80, 96, + 80, 65, 51, 34, 73, 119, 108, 112, 120, 102, 116, 106, 92, 88, 103, 72, + 0, 99, 107, 95, 97, 97, 87, 83, 96, 89, 91, 34, 114, 114, 91, 91, + 89, 89, 76, 79, 88, 68, 88, 44, 102, 110, 107, 110, 104, 100, 97, 99, + 103, 77, 77, 79, 4, 81, 100, 84, 77, 93, 88, 83, 93, 75, 81, 75, + 48, 107, 126, 106, 118, 123, 89, 100, 99, 93, 84, 68, 16, 99, 115, 124, + 104, 83, 110, 97, 102, 103, 60, 24, 127, 140, 138, 130, 115, 120, 123, 116, + 115, 123, 122, 106, 44, 96, 134, 119, 100, 114, 119, 114, 104, 111, 102, 52, + 84, 153, 162, 146, 136, 136, 142, 151, 150, 131, 126, 61, 106, 132, 143, 111, + 112, 110, 107, 139, 108, 89, 91, 41, 96, 138, 135, 130, 135, 140, 112, 116, + 106, 102, 112, 108, 53, 118, 123, 124, 130, 123, 122, 118, 112, 119, 106, 114, + 51, 144, 144, 128, 135, 131, 135, 124, 122, 122, 120, 85, 22, 112, 126, 135, + 123, 100, 111, 112, 100, 108, 110, 67, 123, 140, 143, 139, 146, 124, 123, 123, + 128, 110, 114, 96, 9, 136, 131, 120, 142, 100, 134, 134, 108, 103, 126, 112, + 9, 150, 154, 163, 143, 136, 162, 131, 127, 123, 114, 68, 115, 122, 143, 135, + 114, 116, 138, 138, 106, 115, 103, 12, 146, 178, 167, 143, 153, 148, 143, 140, + 150, 153, 138, 127, 16, 102, 134, 100, 95, 108, 95, 110, 112, 116, 106, 97, + 52, 139, 130, 126, 132, 126, 142, 132, 130, 131, 123, 126, 0, 153, 158, 158, + 169, 136, 140, 148, 155, 151, 135, 124, 88, 0, 165, 186, 163, 161, 155, 155, + 154, 159, 128, 131, 1, 142, 147, 130, 118, 151, 124, 138, 131, 140, 124, 64, + 147, 165, 148, 139, 132, 124, 128, 128, 132, 131, 143, 102, 55, 112, 167, 159, + 148, 161, 161, 146, 147, 151, 144, 138, 68, 155, 161, 158, 147, 154, 155, 150, + 147, 143, 136, 9, 170, 167, 162, 155, 150, 173, 178, 179, 169, 157, 135, 127, + 2, 147, 134, 146, 122, 130, 146, 144, 140, 148, 139, 122, 14, 150, 157, 143, + 163, 130, 138, 131, 132, 131, 124, 106, 0, 148, 175, 159, 159, 158, 155, 161, + 163, 159, 144, 104, 53, 130, 143, 143, 163, 151, 151, 153, 151, 143, 134, 135, + 59, 104, 183, 177, 178, 185, 9, 10, 10, 10, 12, 38, 38, 12, 12, 0, + 48, 56, 61, 59, 67, 67, 38, 34, 46, 21, 6, 61, 84, 75, 48, 60, + 75, 60, 55, 59, 42, 30, 25, 0, 77, 79, 36, 71, 40, 41, 36, 41, + 61, 40, 28, 52, 80, 83, 64, 61, 75, 81, 67, 67, 67, 59, 68, 26, + 36, 65, 59, 42, 46, 44, 45, 45, 51, 37, 38, 36, 89, 99, 57, 75, + 63, 79, 72, 61, 52, 48, 38, 16, 63, 87, 57, 76, 73, 67, 75, 77, + 49, 44, 44, 9, 88, 83, 80, 69, 57, 73, 60, 68, 85, 49, 18, 37, + 91, 44, 20, 21, 28, 37, 20, 24, 33, 49, 36, 20, 84, 97, 93, 89, + 110, 88, 89, 75, 75, 55, 42, 0, 93, 93, 111, 97, 73, 81, 85, 92, + 88, 77, 75, 36, 49, 100, 108, 92, 72, 73, 91, 84, 61, 51, 34, 73, + 118, 111, 91, 100, 110, 100, 97, 102, 88, 104, 60, 0, 104, 112, 111, 93, + 99, 91, 91, 95, 93, 91, 38, 107, 111, 108, 92, 97, 83, 72, 72, 88, + 89, 89, 44, 100, 103, 102, 100, 106, 103, 107, 106, 103, 76, 77, 64, 5, + 69, 104, 81, 87, 88, 77, 87, 87, 81, 77, 73, 49, 69, 119, 103, 123, + 123, 95, 100, 87, 89, 73, 67, 16, 107, 108, 104, 92, 110, 112, 115, 110, + 107, 59, 24, 79, 143, 135, 124, 118, 122, 119, 116, 118, 124, 102, 103, 40, + 103, 132, 120, 108, 116, 108, 106, 107, 108, 93, 51, 83, 153, 143, 154, 131, + 153, 142, 147, 135, 130, 130, 69, 81, 130, 142, 110, 112, 119, 120, 132, 107, + 84, 84, 42, 96, 132, 124, 127, 120, 123, 118, 116, 120, 100, 114, 107, 57, + 119, 124, 123, 127, 119, 119, 123, 112, 111, 108, 110, 57, 136, 143, 136, 132, + 108, 130, 123, 126, 122, 111, 100, 20, 115, 130, 120, 114, 97, 108, 104, 99, + 103, 99, 65, 81, 135, 140, 139, 142, 122, 114, 132, 119, 110, 110, 91, 10, + 132, 143, 118, 128, 127, 136, 138, 103, 116, 120, 106, 14, 146, 150, 159, 136, + 148, 153, 139, 127, 112, 111, 69, 110, 132, 139, 135, 132, 111, 134, 132, 106, + 114, 103, 21, 135, 182, 163, 148, 150, 142, 150, 147, 151, 150, 146, 119, 30, + 93, 128, 97, 104, 114, 108, 112, 107, 110, 103, 100, 56, 81, 148, 115, 155, + 124, 139, 135, 130, 132, 132, 114, 0, 150, 158, 158, 142, 153, 154, 144, 157, + 153, 142, 131, 84, 0, 167, 179, 162, 161, 155, 157, 154, 138, 126, 136, 21, + 142, 138, 122, 118, 155, 151, 128, 132, 140, 123, 64, 89, 154, 167, 166, 127, + 128, 128, 127, 123, 128, 138, 99, 51, 111, 166, 161, 153, 151, 155, 144, 144, + 148, 147, 132, 72, 154, 161, 158, 147, 148, 166, 151, 146, 143, 127, 13, 166, + 169, 162, 150, 155, 147, 153, 155, 150, 155, 134, 120, 25, 138, 124, 130, 100, + 115, 118, 115, 118, 140, 122, 111, 16, 142, 150, 135, 122, 157, 131, 167, 135, + 148, 139, 93, 0, 124, 171, 161, 167, 162, 155, 159, 161, 155, 144, 102, 49, + 110, 138, 139, 147, 148, 158, 148, 140, 138, 147, 122, 51, 97, 182, 179, 173, + 170, 17, 20, 21, 13, 26, 29, 42, 22, 12, 0, 40, 75, 51, 56, 69, + 61, 36, 52, 53, 17, 6, 59, 77, 80, 53, 55, 68, 67, 64, 56, 53, + 48, 25, 0, 73, 81, 49, 69, 38, 37, 42, 45, 57, 26, 24, 41, 64, + 87, 72, 72, 55, 63, 61, 65, 55, 68, 46, 29, 36, 56, 63, 55, 48, + 48, 42, 55, 42, 37, 36, 36, 76, 118, 65, 75, 65, 65, 79, 63, 49, + 48, 33, 12, 67, 91, 53, 79, 63, 68, 83, 75, 48, 40, 42, 4, 87, + 87, 88, 79, 69, 77, 81, 68, 80, 48, 17, 42, 85, 22, 42, 40, 45, + 41, 16, 18, 30, 42, 33, 24, 51, 99, 93, 84, 107, 102, 110, 97, 72, + 53, 56, 0, 91, 99, 111, 95, 85, 81, 79, 77, 80, 77, 73, 40, 44, + 84, 91, 103, 71, 60, 83, 80, 57, 49, 30, 64, 116, 106, 103, 100, 100, + 93, 99, 84, 87, 104, 52, 0, 102, 103, 103, 91, 100, 92, 84, 81, 100, + 95, 46, 72, 96, 118, 103, 115, 91, 89, 97, 103, 67, 88, 49, 71, 97, + 102, 100, 97, 97, 95, 96, 79, 75, 79, 52, 2, 68, 107, 91, 73, 71, + 80, 73, 73, 73, 76, 72, 52, 60, 111, 119, 119, 88, 99, 95, 84, 88, + 75, 77, 14, 102, 106, 99, 84, 89, 79, 99, 97, 115, 59, 25, 75, 142, + 135, 124, 116, 118, 120, 128, 124, 126, 108, 87, 33, 99, 128, 114, 110, 128, + 107, 104, 106, 106, 89, 49, 79, 143, 142, 131, 136, 130, 138, 144, 132, 128, + 130, 71, 45, 122, 136, 107, 116, 118, 130, 124, 96, 88, 79, 34, 96, 126, + 128, 134, 120, 116, 119, 100, 103, 99, 111, 107, 60, 111, 120, 126, 126, 122, + 120, 119, 123, 114, 107, 112, 59, 80, 143, 138, 123, 127, 134, 122, 131, 107, + 111, 104, 17, 114, 130, 115, 93, 96, 110, 106, 102, 99, 102, 87, 80, 130, + 136, 138, 134, 124, 138, 111, 115, 107, 100, 89, 12, 134, 130, 110, 128, 135, + 106, 126, 106, 106, 115, 112, 17, 139, 159, 147, 134, 130, 131, 142, 132, 110, + 115, 64, 108, 126, 150, 132, 131, 108, 131, 107, 108, 116, 104, 22, 140, 173, + 162, 134, 123, 154, 127, 153, 148, 154, 140, 134, 18, 110, 122, 99, 85, 104, + 112, 104, 108, 102, 92, 95, 57, 83, 144, 158, 126, 118, 111, 116, 139, 126, + 120, 87, 28, 140, 158, 139, 146, 148, 144, 154, 144, 147, 143, 124, 81, 0, + 163, 171, 159, 161, 155, 154, 157, 136, 123, 124, 20, 132, 136, 118, 111, 153, + 150, 146, 126, 132, 122, 97, 85, 153, 167, 166, 126, 122, 122, 123, 122, 127, + 135, 95, 37, 140, 162, 158, 171, 150, 143, 127, 144, 147, 151, 136, 81, 87, + 159, 158, 154, 150, 140, 143, 143, 142, 99, 16, 177, 165, 161, 151, 154, 155, + 154, 150, 148, 154, 128, 119, 24, 131, 123, 112, 128, 112, 114, 132, 115, 135, + 126, 115, 17, 139, 130, 173, 158, 155, 163, 159, 132, 148, 123, 89, 1, 100, + 170, 161, 163, 159, 159, 163, 158, 155, 142, 97, 36, 111, 130, 136, 138, 142, + 142, 151, 142, 142, 144, 124, 44, 114, 179, 165, 161, 158, 53, 41, 34, 28, + 28, 28, 24, 28, 13, 4, 41, 55, 52, 49, 51, 60, 53, 60, 55, 20, + 5, 52, 69, 59, 59, 49, 52, 52, 57, 44, 53, 41, 25, 0, 68, 72, + 60, 45, 51, 67, 61, 63, 42, 28, 25, 63, 67, 80, 80, 68, 40, 38, + 41, 45, 46, 37, 41, 45, 40, 37, 42, 53, 57, 56, 52, 44, 37, 34, + 34, 41, 84, 112, 71, 81, 68, 77, 69, 49, 59, 46, 46, 10, 64, 84, + 52, 80, 81, 81, 71, 75, 60, 40, 44, 4, 87, 87, 89, 76, 72, 85, + 77, 81, 81, 36, 16, 36, 36, 17, 16, 41, 32, 41, 18, 16, 18, 20, + 48, 24, 40, 85, 95, 88, 85, 81, 85, 79, 60, 56, 45, 1, 87, 83, + 106, 88, 88, 83, 79, 75, 76, 72, 71, 69, 68, 45, 49, 55, 61, 61, + 71, 81, 65, 61, 33, 77, 111, 95, 95, 87, 97, 97, 96, 97, 100, 103, + 69, 2, 96, 103, 103, 93, 102, 100, 84, 96, 96, 91, 51, 53, 61, 92, + 89, 108, 100, 81, 76, 99, 79, 55, 51, 56, 63, 96, 69, 71, 75, 72, + 75, 73, 72, 79, 76, 21, 75, 99, 72, 71, 67, 77, 72, 69, 79, 72, + 72, 77, 53, 71, 100, 103, 77, 73, 87, 81, 91, 85, 76, 10, 97, 103, + 87, 103, 95, 95, 89, 95, 87, 55, 65, 61, 138, 134, 127, 126, 120, 120, + 119, 120, 120, 106, 100, 29, 102, 124, 114, 102, 107, 112, 102, 103, 106, 92, + 45, 123, 148, 128, 126, 136, 138, 138, 126, 135, 135, 128, 79, 67, 112, 134, + 106, 123, 120, 114, 111, 107, 88, 76, 32, 97, 123, 116, 102, 103, 103, 104, + 102, 104, 108, 111, 107, 64, 71, 122, 126, 126, 123, 115, 114, 122, 110, 108, + 107, 79, 75, 134, 135, 126, 128, 143, 130, 123, 100, 111, 100, 22, 108, 111, + 96, 93, 96, 97, 87, 99, 75, 92, 104, 75, 93, 120, 122, 128, 107, 110, + 106, 104, 107, 115, 83, 14, 124, 144, 150, 128, 134, 132, 100, 130, 114, 106, + 100, 16, 140, 148, 140, 155, 126, 126, 132, 128, 120, 89, 52, 118, 126, 147, + 131, 122, 111, 124, 114, 112, 114, 96, 25, 131, 178, 165, 154, 144, 146, 153, + 151, 147, 143, 140, 124, 20, 102, 91, 88, 85, 79, 95, 91, 91, 96, 92, + 84, 68, 75, 140, 111, 104, 107, 102, 114, 116, 118, 122, 120, 6, 143, 153, + 142, 140, 153, 148, 143, 144, 144, 142, 118, 76, 0, 166, 178, 158, 157, 159, + 155, 155, 159, 118, 135, 4, 128, 128, 116, 107, 150, 150, 150, 124, 127, 118, + 103, 85, 146, 158, 155, 114, 116, 132, 116, 120, 124, 132, 115, 37, 126, 162, + 166, 128, 143, 142, 124, 132, 144, 151, 140, 111, 80, 115, 157, 159, 157, 155, + 153, 140, 142, 130, 17, 171, 166, 158, 147, 150, 154, 157, 155, 151, 153, 118, + 120, 4, 131, 115, 112, 115, 107, 110, 120, 140, 131, 127, 107, 21, 139, 178, + 142, 158, 154, 162, 131, 150, 150, 123, 84, 1, 64, 162, 166, 166, 161, 157, + 157, 158, 155, 128, 93, 32, 112, 135, 132, 138, 135, 138, 138, 140, 138, 139, + 131, 36, 166, 182, 169, 162, 161, 21, 26, 18, 25, 25, 36, 29, 16, 12, + 0, 34, 34, 36, 36, 37, 36, 41, 34, 28, 20, 4, 51, 52, 48, 44, + 45, 44, 44, 53, 40, 41, 25, 24, 4, 61, 64, 63, 63, 60, 53, 61, + 60, 40, 26, 30, 48, 63, 71, 68, 42, 45, 32, 32, 38, 45, 36, 34, + 33, 37, 38, 38, 49, 42, 44, 42, 41, 32, 37, 33, 42, 80, 79, 72, + 60, 52, 57, 61, 46, 45, 46, 46, 9, 61, 84, 73, 56, 52, 68, 77, + 68, 56, 45, 44, 5, 80, 85, 95, 76, 80, 88, 84, 79, 55, 42, 13, + 45, 36, 8, 13, 9, 17, 12, 14, 16, 16, 14, 18, 21, 51, 36, 44, + 48, 48, 48, 51, 56, 61, 48, 37, 4, 80, 85, 88, 84, 80, 56, 76, + 49, 53, 56, 68, 52, 57, 61, 69, 61, 63, 67, 67, 87, 65, 46, 25, + 72, 77, 88, 79, 77, 77, 80, 81, 84, 76, 71, 69, 2, 93, 92, 97, + 91, 88, 85, 87, 87, 84, 79, 76, 77, 83, 68, 65, 69, 71, 68, 81, + 75, 81, 77, 75, 79, 77, 73, 65, 81, 80, 69, 81, 83, 81, 79, 77, + 6, 61, 89, 83, 71, 59, 60, 65, 67, 68, 69, 76, 72, 75, 80, 81, + 83, 81, 81, 84, 87, 87, 77, 64, 21, 89, 93, 89, 84, 79, 73, 83, + 68, 63, 56, 48, 60, 83, 128, 136, 97, 116, 116, 122, 104, 106, 100, 100, + 22, 99, 95, 97, 89, 93, 92, 100, 102, 104, 92, 45, 92, 136, 126, 124, + 114, 116, 116, 111, 103, 92, 93, 79, 65, 107, 118, 114, 108, 106, 106, 107, + 108, 79, 75, 28, 97, 126, 120, 115, 118, 111, 116, 110, 115, 119, 111, 100, + 103, 71, 77, 84, 111, 83, 87, 114, 116, 115, 118, 103, 97, 69, 91, 139, + 130, 127, 126, 96, 99, 112, 100, 80, 36, 97, 114, 100, 89, 84, 83, 77, + 79, 89, 76, 77, 88, 102, 106, 118, 112, 115, 110, 112, 115, 115, 112, 91, + 16, 115, 135, 143, 131, 96, 135, 132, 134, 114, 114, 110, 24, 135, 148, 134, + 118, 140, 139, 136, 135, 114, 111, 61, 119, 120, 118, 111, 122, 107, 106, 114, + 112, 110, 100, 21, 135, 169, 154, 108, 144, 146, 112, 134, 142, 140, 135, 61, + 26, 57, 89, 96, 73, 69, 91, 79, 80, 83, 92, 96, 72, 75, 96, 100, + 97, 103, 107, 110, 108, 112, 112, 116, 2, 134, 148, 147, 143, 142, 142, 140, + 128, 136, 135, 112, 72, 0, 157, 175, 158, 157, 155, 155, 155, 159, 115, 116, + 30, 120, 124, 114, 106, 102, 115, 110, 111, 79, 79, 104, 92, 95, 103, 106, + 124, 126, 124, 126, 123, 130, 127, 102, 33, 73, 138, 136, 111, 115, 138, 135, + 118, 127, 130, 134, 116, 93, 100, 112, 112, 118, 118, 123, 127, 142, 124, 18, + 132, 165, 161, 155, 155, 151, 154, 148, 151, 153, 126, 118, 9, 127, 118, 107, + 106, 106, 122, 123, 123, 124, 122, 112, 26, 131, 175, 136, 154, 104, 150, 148, + 112, 122, 138, 76, 2, 53, 130, 158, 111, 120, 135, 154, 151, 135, 131, 81, + 26, 111, 136, 136, 135, 134, 134, 134, 139, 138, 134, 128, 32, 154, 181, 165, + 154, 153, 8, 8, 10, 8, 8, 8, 10, 8, 2, 0, 9, 10, 10, 10, + 13, 12, 12, 12, 14, 12, 5, 16, 20, 18, 18, 16, 16, 14, 14, 14, + 14, 14, 12, 0, 14, 16, 16, 20, 20, 17, 17, 24, 21, 16, 36, 21, + 37, 42, 20, 18, 32, 24, 21, 25, 21, 21, 18, 21, 18, 18, 21, 22, + 24, 25, 26, 29, 30, 38, 30, 34, 52, 46, 40, 36, 40, 44, 37, 36, + 42, 36, 24, 8, 28, 44, 53, 42, 46, 45, 51, 45, 46, 41, 40, 6, + 73, 84, 83, 81, 69, 67, 75, 65, 40, 38, 10, 57, 20, 6, 12, 8, + 9, 10, 14, 14, 12, 18, 14, 17, 20, 22, 18, 30, 32, 34, 36, 37, + 40, 42, 40, 1, 26, 38, 45, 29, 29, 29, 30, 24, 24, 21, 30, 29, + 21, 22, 30, 30, 32, 24, 59, 61, 60, 38, 24, 44, 52, 51, 49, 49, + 64, 59, 49, 44, 44, 38, 20, 40, 42, 48, 57, 64, 53, 55, 60, 60, + 60, 61, 64, 61, 67, 69, 73, 69, 69, 69, 71, 69, 77, 67, 64, 63, + 77, 68, 64, 59, 76, 60, 55, 53, 77, 53, 13, 10, 59, 46, 46, 49, + 33, 41, 28, 26, 30, 37, 32, 32, 34, 33, 33, 33, 45, 49, 55, 59, + 75, 63, 60, 21, 30, 33, 37, 36, 40, 32, 37, 36, 42, 33, 30, 48, + 77, 68, 81, 84, 79, 76, 81, 80, 79, 73, 69, 21, 71, 77, 79, 83, + 79, 79, 83, 91, 84, 79, 44, 36, 106, 116, 95, 97, 99, 111, 102, 102, + 108, 111, 102, 77, 71, 76, 85, 92, 95, 97, 107, 112, 75, 69, 24, 91, + 114, 124, 120, 103, 111, 112, 111, 99, 99, 97, 88, 85, 93, 100, 100, 99, + 100, 97, 100, 102, 102, 93, 93, 99, 96, 100, 106, 108, 104, 103, 102, 103, + 102, 92, 99, 24, 96, 65, 61, 57, 53, 52, 57, 49, 45, 44, 46, 45, + 48, 65, 48, 49, 51, 57, 53, 77, 81, 75, 76, 18, 51, 126, 123, 71, + 76, 111, 112, 75, 89, 107, 93, 22, 99, 139, 138, 111, 115, 132, 128, 108, + 111, 106, 61, 116, 116, 104, 93, 85, 85, 87, 87, 88, 92, 92, 33, 119, + 147, 132, 56, 60, 53, 59, 65, 57, 63, 29, 77, 59, 14, 12, 30, 22, + 49, 25, 36, 40, 55, 52, 59, 80, 87, 110, 103, 85, 112, 103, 107, 76, + 118, 111, 88, 4, 53, 65, 68, 65, 64, 61, 64, 64, 64, 63, 61, 61, + 0, 83, 165, 166, 163, 163, 163, 161, 158, 108, 134, 36, 92, 116, 89, 96, + 89, 89, 106, 106, 104, 104, 106, 104, 102, 73, 68, 59, 53, 55, 51, 49, + 45, 42, 40, 29, 48, 41, 49, 61, 51, 57, 71, 75, 92, 92, 80, 96, + 93, 104, 99, 118, 119, 116, 99, 119, 124, 111, 24, 68, 99, 119, 100, 110, + 112, 142, 151, 155, 127, 122, 106, 37, 114, 102, 102, 131, 111, 111, 108, 115, + 106, 107, 91, 32, 63, 85, 108, 48, 46, 46, 51, 48, 37, 36, 53, 4, + 28, 28, 32, 34, 37, 38, 40, 103, 124, 134, 79, 25, 106, 126, 136, 131, + 135, 135, 136, 136, 140, 134, 116, 30, 112, 183, 157, 151, 154, 0, 0, 0, + 2, 4, 0, 0, 5, 5, 1, 6, 5, 4, 4, 2, 8, 2, 2, 1, + 9, 6, 0, 12, 1, 1, 0, 6, 1, 0, 1, 0, 0, 0, 1, 2, + 4, 1, 6, 2, 2, 2, 8, 4, 4, 30, 37, 42, 60, 59, 67, 68, + 68, 76, 76, 71, 64, 67, 65, 64, 84, 64, 67, 37, 41, 37, 37, 30, + 30, 28, 20, 24, 18, 18, 13, 14, 13, 13, 12, 14, 14, 16, 14, 17, + 20, 21, 22, 25, 26, 29, 29, 32, 33, 37, 13, 9, 28, 29, 29, 28, + 30, 30, 32, 32, 28, 12, 26, 6, 20, 10, 16, 10, 16, 34, 53, 68, + 72, 59, 61, 75, 79, 88, 79, 72, 59, 53, 45, 46, 18, 37, 2, 16, + 20, 34, 36, 41, 51, 60, 69, 95, 87, 69, 60, 93, 96, 83, 92, 93, + 68, 53, 48, 38, 25, 12, 22, 18, 9, 13, 13, 12, 5, 8, 8, 5, + 4, 2, 4, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 10, 0, 0, 0, 18, + 0, 0, 0, 29, 0, 0, 6, 20, 26, 32, 32, 79, 107, 111, 118, 111, + 106, 79, 91, 110, 108, 96, 107, 103, 96, 81, 60, 56, 28, 46, 24, 2, + 1, 21, 18, 1, 0, 14, 4, 6, 1, 5, 6, 8, 1, 4, 2, 1, + 6, 17, 20, 1, 6, 4, 2, 33, 36, 2, 2, 20, 21, 24, 25, 32, + 26, 55, 20, 20, 30, 22, 20, 22, 30, 22, 20, 22, 30, 25, 24, 24, + 56, 26, 24, 25, 32, 37, 46, 42, 67, 22, 63, 85, 84, 65, 65, 79, + 79, 64, 67, 71, 65, 61, 46, 52, 57, 44, 48, 49, 53, 59, 53, 80, + 80, 77, 72, 81, 79, 60, 56, 72, 57, 45, 41, 72, 42, 60, 29, 52, + 73, 85, 85, 87, 99, 128, 110, 83, 89, 77, 73, 79, 115, 112, 115, 106, + 88, 73, 61, 57, 48, 40, 41, 44, 64, 49, 63, 44, 51, 65, 72, 48, + 49, 38, 73, 73, 77, 84, 81, 77, 71, 81, 80, 79, 76, 63, 114, 87, + 68, 80, 64, 68, 65, 67, 59, 59, 61, 79, 42, 65, 81, 92, 100, 102, + 106, 104, 103, 110, 100, 81, 36, 51, 158, 107, 104, 84, 57, 51, 46, 41, + 26, 29, 24, 17, 36, 29, 18, 16, 37, 36, 33, 17, 38, 40, 10, 8, + 28, 30, 26, 2, 18, 5, 18, 2, 10, 5, 0, 0, 48, 56, 64, 71, + 77, 83, 89, 96, 103, 102, 32, 97, 61, 65, 55, 56, 59, 55, 49, 44, + 48, 37, 37, 72, 88, 95, 116, 120, 124, 127, 124, 116, 114, 93, 30, 120, + 130, 128, 95, 119, 111, 100, 48, 33, 28, 16, 20, 25, 20, 18, 25, 20, + 14, 10, 14, 21, 8, 25, 65, 52, 63, 46, 45, 65, 96, 103, 114, 114, + 111, 96, 9, 97, 45, 46, 71, 55, 40, 36, 34, 46, 25, 20, 32, 52, + 80, 102, 99, 103, 118, 123, 120, 124, 115, 97, 5, 118, 166, 162, 158, 153, + 153, 95, 77, 41, 32, 21, 22, 38, 45, 49, 57, 89, 104, 110, 93, 104, + 114, 115, 29, 111, 173, 96, 89, 65, 107, 97, 87, 76, 64, 69, 57, 36, + 10, 5, 34, 75, 79, 64, 51, 49, 57, 59, 59, 36, 14, 24, 76, 79, + 81, 76, 87, 83, 84, 72, 79, 68, 80, 77, 87, 87, 93, 104, 99, 85, + 92, 81, 42, 38, 44, 72, 91, 108, 95, 80, 92, 89, 95, 83, 84, 92, + 84, 53, 49, 61, 55, 63, 61, 60, 69, 63, 32, 37, 34, 34, 89, 85, + 76, 67, 76, 76, 64, 64, 67, 55, 56, 63, 71, 83, 71, 73, 49, 42, + 29, 17, 28, 18, 10, 13, 20, 8, 6, 9, 25, 5, 4, 5, 34, 18, + 14, 22, 55, 63, 67, 73, 68, 73, 81, 75, 71, 79, 71, 61, 53, 67, + 84, 69, 73, 72, 75, 71, 77, 60, 49, 4, 37, 104, 107, 107, 111, 102, + 96, 89, 88, 97, 88, 55, 81, 95, 107, 96, 97, 92, 77, 88, 59, 51, + 26, 40, 83, 88, 97, 102, 100, 87, 93, 107, 107, 71, 68, 73, 120, 119, + 122, 122, 120, 116, 122, 119, 114, 76, 80, 110, 115, 119, 114, 100, 107, 119, + 103, 104, 103, 107, 91, 22, 51, 108, 115, 84, 96, 104, 114, 87, 100, 99, + 42, 40, 44, 118, 104, 108, 112, 112, 108, 119, 111, 80, 89, 75, 81, 93, + 112, 104, 108, 102, 89, 91, 95, 64, 36, 5, 38, 97, 111, 92, 87, 97, + 87, 85, 83, 64, 36, 0, 48, 103, 132, 99, 100, 99, 96, 110, 114, 111, + 65, 45, 57, 126, 131, 120, 124, 126, 131, 93, 114, 53, 60, 53, 108, 118, + 118, 102, 103, 96, 92, 112, 106, 91, 49, 56, 63, 100, 108, 100, 104, 71, + 72, 36, 33, 26, 26, 38, 40, 48, 52, 48, 53, 53, 53, 63, 67, 65, + 61, 61, 24, 79, 118, 124, 95, 115, 91, 91, 45, 55, 38, 25, 36, 53, + 80, 87, 84, 92, 97, 97, 93, 85, 72, 79, 107, 140, 153, 143, 139, 139, + 130, 130, 130, 131, 72, 71, 104, 139, 135, 142, 136, 132, 127, 134, 128, 97, + 75, 72, 100, 104, 110, 107, 93, 87, 89, 76, 45, 38, 28, 41, 37, 51, + 51, 46, 25, 28, 25, 51, 22, 24, 59, 53, 81, 97, 99, 116, 120, 126, + 120, 131, 118, 80, 77, 99, 123, 134, 138, 136, 140, 143, 142, 139, 148, 123, + 108, 13, 138, 115, 116, 104, 132, 131, 114, 107, 97, 123, 104, 99, 136, 153, + 139, 143, 148, 147, 139, 138, 132, 130, 57, 0, 29, 115, 159, 122, 119, 124, + 124, 120, 91, 136, 115, 48, 0, 116, 142, 140, 138, 131, 89, 38, 80, 73, + 80, 9, 53, 55, 81, 84, 88, 110, 124, 127, 106, 127, 114, 135, 114, 122, + 130, 128, 127, 138, 138, 148, 134, 119, 99, 33, 124, 139, 111, 127, 135, 108, + 107, 103, 120, 108, 73, 91, 80, 124, 131, 138, 134, 140, 144, 143, 146, 71, + 26, 85, 146, 144, 122, 124, 131, 120, 77, 36, 36, 25, 22, 8, 18, 71, + 75, 77, 87, 99, 107, 106, 115, 122, 102, 44, 115, 163, 167, 167, 167, 165, + 166, 165, 161, 123, 102, 5, 130, 175, 171, 166, 167, 171, 167, 166, 157, 115, + 93, 21, 130, 163, 161, 81, 73, 81, 76, 83, 87, 68, 108, 28, 165, 111, + 182, 190, 197, 88, 76, 67, 69, 63, 64, 51, 48, 12, 10, 77, 68, 57, + 46, 63, 61, 53, 49, 46, 63, 17, 91, 92, 95, 89, 84, 89, 89, 100, + 87, 93, 85, 77, 69, 81, 73, 80, 80, 87, 85, 84, 83, 81, 85, 41, + 110, 91, 77, 71, 80, 69, 88, 68, 76, 72, 46, 48, 40, 59, 72, 65, + 68, 55, 52, 53, 60, 68, 44, 40, 75, 84, 79, 84, 91, 77, 83, 80, + 81, 77, 73, 60, 72, 68, 67, 67, 59, 67, 55, 55, 60, 53, 57, 42, + 9, 28, 75, 81, 59, 69, 71, 83, 73, 68, 34, 16, 57, 83, 83, 89, + 77, 85, 87, 99, 89, 79, 85, 71, 38, 68, 89, 102, 96, 72, 84, 83, + 76, 79, 64, 53, 5, 80, 114, 92, 95, 97, 87, 99, 81, 85, 106, 85, + 57, 81, 111, 107, 96, 103, 99, 103, 77, 92, 57, 26, 84, 96, 104, 95, + 97, 93, 100, 93, 106, 102, 107, 102, 93, 84, 84, 84, 84, 85, 84, 84, + 88, 89, 97, 92, 75, 95, 99, 92, 85, 100, 103, 106, 106, 112, 110, 106, + 24, 119, 132, 119, 116, 119, 112, 103, 103, 100, 102, 52, 33, 89, 103, 107, + 106, 114, 112, 115, 115, 108, 99, 87, 69, 80, 112, 120, 110, 112, 111, 104, + 97, 96, 72, 38, 14, 110, 118, 119, 110, 115, 116, 112, 108, 107, 92, 40, + 2, 142, 146, 142, 140, 143, 142, 136, 130, 144, 139, 102, 46, 130, 146, 144, + 136, 136, 126, 134, 126, 122, 84, 60, 110, 132, 118, 114, 111, 128, 128, 122, + 124, 124, 126, 116, 56, 99, 119, 122, 119, 118, 114, 110, 102, 75, 53, 25, + 85, 106, 87, 100, 102, 97, 108, 99, 99, 93, 84, 69, 55, 20, 110, 127, + 118, 118, 111, 119, 128, 110, 122, 104, 85, 110, 84, 106, 112, 120, 111, 124, + 111, 119, 96, 79, 83, 128, 151, 124, 127, 128, 122, 112, 128, 124, 112, 118, + 93, 130, 128, 132, 128, 126, 126, 132, 128, 126, 116, 126, 116, 124, 126, 127, + 115, 126, 120, 122, 111, 103, 97, 92, 130, 124, 126, 128, 136, 142, 136, 142, + 150, 153, 79, 88, 102, 166, 170, 171, 170, 173, 171, 166, 169, 167, 118, 77, + 115, 146, 143, 143, 143, 136, 138, 131, 127, 124, 136, 95, 30, 108, 123, 115, + 104, 110, 111, 110, 130, 128, 103, 106, 108, 92, 120, 123, 128, 115, 124, 123, + 124, 119, 143, 69, 0, 161, 170, 169, 171, 166, 166, 165, 158, 163, 162, 136, + 85, 0, 119, 146, 155, 158, 157, 154, 147, 135, 126, 77, 20, 103, 142, 153, + 154, 153, 150, 153, 150, 142, 143, 81, 102, 142, 153, 148, 159, 158, 154, 147, + 139, 139, 124, 111, 32, 142, 144, 130, 114, 110, 114, 148, 138, 155, 147, 73, + 60, 127, 159, 165, 169, 165, 159, 162, 166, 155, 96, 26, 116, 157, 161, 166, + 166, 162, 162, 154, 135, 140, 114, 71, 71, 143, 177, 174, 170, 173, 173, 171, + 150, 171, 136, 120, 42, 150, 170, 166, 166, 166, 158, 148, 153, 159, 143, 114, + 8, 131, 178, 173, 170, 163, 163, 165, 161, 167, 155, 106, 17, 150, 151, 175, + 171, 167, 159, 161, 170, 158, 96, 122, 26, 173, 131, 187, 187, 190, 107, 104, + 88, 84, 68, 68, 14, 25, 10, 6, 55, 63, 40, 38, 45, 28, 40, 49, + 45, 18, 17, 95, 112, 123, 136, 163, 174, 189, 197, 205, 205, 213, 214, 221, + 212, 222, 222, 218, 202, 193, 147, 112, 107, 107, 75, 91, 89, 92, 88, 81, + 88, 91, 65, 41, 40, 40, 38, 41, 60, 80, 92, 68, 60, 72, 68, 72, + 67, 59, 29, 81, 89, 76, 77, 67, 71, 71, 69, 63, 72, 71, 63, 61, + 80, 81, 80, 69, 67, 59, 60, 67, 69, 51, 45, 12, 85, 81, 93, 92, + 77, 88, 87, 81, 83, 67, 17, 71, 107, 93, 72, 96, 87, 81, 80, 80, + 91, 85, 68, 45, 68, 92, 100, 83, 81, 88, 84, 91, 75, 64, 60, 4, + 85, 107, 104, 95, 83, 91, 85, 100, 85, 96, 92, 42, 75, 99, 99, 102, + 87, 88, 81, 80, 87, 63, 33, 89, 81, 89, 93, 85, 100, 99, 107, 108, + 96, 89, 73, 103, 87, 104, 97, 99, 99, 97, 91, 80, 79, 68, 65, 88, + 108, 102, 103, 108, 107, 103, 107, 107, 106, 106, 100, 22, 122, 131, 97, 96, + 97, 92, 93, 89, 99, 97, 52, 34, 87, 110, 110, 103, 100, 96, 102, 103, + 112, 100, 92, 52, 73, 108, 100, 104, 114, 112, 97, 88, 95, 77, 65, 22, + 108, 112, 111, 110, 110, 103, 103, 103, 96, 96, 53, 0, 123, 140, 142, 143, + 139, 140, 143, 135, 134, 138, 116, 56, 139, 136, 135, 122, 115, 118, 108, 115, + 115, 123, 107, 128, 116, 110, 114, 103, 112, 89, 93, 92, 97, 79, 77, 64, + 122, 144, 118, 120, 119, 124, 115, 110, 112, 67, 24, 95, 103, 92, 104, 97, + 91, 103, 97, 92, 93, 79, 73, 65, 26, 106, 139, 115, 118, 130, 118, 119, + 116, 106, 114, 68, 75, 138, 134, 132, 140, 136, 130, 126, 118, 106, 87, 80, + 140, 147, 120, 122, 123, 118, 112, 123, 134, 130, 136, 132, 140, 139, 148, 143, + 143, 143, 165, 143, 148, 142, 147, 132, 146, 146, 148, 143, 140, 139, 140, 140, + 126, 107, 76, 134, 138, 138, 140, 138, 135, 122, 135, 135, 127, 95, 69, 135, + 175, 169, 165, 163, 170, 166, 174, 162, 143, 134, 91, 118, 140, 146, 135, 135, + 139, 132, 131, 131, 139, 128, 91, 29, 99, 132, 118, 143, 114, 140, 122, 139, + 142, 134, 114, 97, 115, 144, 146, 157, 154, 151, 143, 157, 146, 138, 76, 18, + 155, 169, 163, 165, 166, 165, 162, 162, 157, 167, 140, 76, 0, 136, 154, 143, + 146, 143, 130, 144, 147, 131, 67, 29, 108, 142, 158, 155, 142, 139, 148, 134, + 134, 108, 88, 119, 163, 155, 159, 148, 135, 142, 146, 143, 136, 108, 99, 25, + 139, 143, 142, 119, 120, 138, 144, 142, 148, 142, 81, 95, 151, 166, 161, 158, + 161, 157, 157, 148, 158, 95, 29, 131, 161, 155, 155, 151, 146, 146, 143, 147, + 157, 139, 76, 60, 157, 169, 170, 177, 169, 147, 146, 165, 144, 150, 124, 46, + 155, 165, 157, 150, 154, 148, 155, 150, 154, 127, 106, 6, 135, 170, 169, 173, + 169, 165, 165, 173, 163, 157, 120, 16, 134, 153, 153, 175, 173, 174, 171, 173, + 166, 114, 118, 21, 174, 190, 187, 185, 187, 73, 52, 68, 60, 40, 22, 28, + 46, 10, 13, 44, 57, 44, 41, 28, 24, 26, 30, 38, 61, 76, 110, 204, + 216, 228, 230, 230, 232, 234, 234, 238, 241, 244, 242, 241, 238, 236, 236, 233, + 229, 222, 224, 189, 139, 122, 110, 140, 159, 191, 165, 135, 92, 67, 38, 40, + 40, 42, 41, 84, 96, 84, 81, 67, 80, 85, 87, 69, 80, 68, 73, 72, + 73, 52, 75, 69, 77, 69, 71, 63, 63, 64, 79, 97, 108, 91, 95, 91, + 93, 89, 75, 59, 51, 46, 12, 93, 85, 91, 88, 89, 77, 77, 71, 69, + 64, 26, 77, 85, 96, 84, 80, 87, 75, 81, 91, 92, 77, 63, 37, 63, + 95, 107, 87, 80, 87, 91, 84, 77, 61, 48, 5, 73, 99, 97, 95, 92, + 89, 87, 69, 104, 104, 83, 49, 80, 100, 97, 89, 87, 85, 75, 85, 89, + 67, 46, 55, 84, 87, 95, 104, 111, 91, 92, 96, 83, 85, 65, 93, 104, + 85, 102, 97, 100, 84, 92, 92, 91, 63, 60, 96, 104, 99, 102, 95, 100, + 102, 79, 102, 103, 65, 68, 32, 79, 134, 99, 92, 99, 81, 89, 92, 97, + 95, 56, 32, 87, 104, 106, 92, 95, 96, 95, 97, 111, 99, 85, 49, 79, + 102, 96, 85, 115, 119, 97, 89, 100, 65, 65, 21, 83, 120, 108, 107, 110, + 99, 112, 111, 95, 88, 45, 6, 79, 139, 132, 123, 119, 120, 126, 128, 119, + 116, 122, 118, 123, 136, 138, 131, 120, 132, 115, 123, 104, 111, 100, 111, 102, + 112, 111, 107, 104, 110, 111, 110, 104, 108, 104, 107, 112, 123, 132, 103, 110, + 111, 136, 112, 107, 61, 21, 84, 96, 92, 99, 104, 106, 100, 100, 96, 88, + 79, 67, 59, 22, 103, 123, 112, 122, 130, 130, 130, 126, 116, 114, 61, 120, + 147, 142, 134, 126, 126, 123, 118, 119, 95, 87, 88, 123, 140, 112, 124, 120, + 116, 122, 150, 212, 214, 208, 218, 228, 230, 220, 226, 236, 238, 236, 233, 236, + 248, 233, 234, 232, 248, 226, 216, 220, 249, 226, 179, 132, 107, 81, 131, 158, + 169, 166, 162, 163, 153, 150, 146, 131, 96, 87, 150, 170, 165, 163, 169, 169, + 177, 173, 142, 158, 128, 100, 103, 143, 139, 135, 131, 136, 134, 134, 134, 139, + 126, 77, 21, 106, 148, 144, 153, 127, 122, 139, 136, 120, 126, 114, 65, 130, + 143, 144, 148, 148, 147, 128, 148, 148, 140, 65, 20, 96, 166, 163, 159, 157, + 155, 153, 154, 155, 163, 139, 75, 0, 131, 128, 135, 122, 148, 136, 132, 134, + 142, 91, 33, 118, 143, 147, 148, 144, 143, 142, 126, 128, 110, 68, 116, 162, + 155, 147, 138, 148, 139, 138, 127, 118, 115, 100, 28, 130, 143, 142, 144, 151, + 154, 140, 144, 143, 138, 67, 69, 159, 163, 163, 151, 151, 158, 161, 159, 159, + 93, 32, 132, 154, 153, 151, 147, 144, 142, 142, 142, 150, 138, 81, 57, 150, + 167, 170, 179, 169, 147, 148, 161, 140, 132, 126, 59, 147, 169, 155, 153, 144, + 148, 154, 153, 155, 126, 103, 6, 138, 171, 170, 161, 163, 169, 167, 170, 157, + 126, 116, 13, 136, 124, 147, 173, 166, 170, 166, 159, 161, 150, 127, 24, 171, + 143, 179, 171, 169, 24, 25, 36, 25, 36, 14, 46, 37, 10, 14, 49, 57, + 48, 26, 21, 22, 24, 71, 89, 150, 195, 218, 234, 242, 240, 241, 238, 238, + 234, 238, 244, 245, 244, 241, 240, 238, 234, 228, 232, 230, 230, 224, 224, 217, + 224, 210, 202, 212, 206, 189, 122, 92, 65, 37, 38, 46, 53, 57, 114, 186, + 195, 189, 191, 199, 205, 206, 204, 199, 198, 195, 195, 130, 103, 93, 89, 91, + 79, 76, 87, 88, 132, 171, 201, 206, 199, 201, 194, 132, 92, 76, 42, 52, + 37, 13, 60, 84, 77, 73, 72, 71, 63, 73, 77, 65, 29, 52, 84, 96, + 77, 81, 80, 76, 77, 81, 89, 73, 64, 36, 71, 84, 100, 89, 77, 84, + 88, 83, 77, 60, 51, 6, 65, 103, 107, 102, 92, 102, 76, 91, 95, 93, + 83, 40, 80, 91, 100, 81, 81, 91, 80, 96, 83, 65, 44, 49, 99, 104, + 83, 88, 89, 100, 88, 92, 88, 80, 59, 100, 103, 93, 92, 89, 87, 91, + 110, 100, 89, 81, 57, 100, 103, 108, 91, 100, 100, 96, 100, 92, 100, 103, + 95, 34, 79, 131, 103, 93, 88, 76, 81, 80, 97, 96, 56, 28, 87, 103, + 97, 87, 87, 87, 88, 92, 104, 92, 79, 52, 69, 97, 93, 85, 104, 91, + 84, 89, 96, 68, 37, 8, 83, 123, 100, 99, 107, 111, 106, 100, 99, 85, + 45, 4, 124, 131, 126, 123, 130, 127, 122, 124, 154, 194, 205, 210, 218, 222, + 229, 232, 236, 237, 250, 250, 249, 242, 244, 229, 238, 242, 240, 237, 233, 233, + 230, 230, 210, 212, 195, 214, 206, 234, 199, 191, 186, 186, 206, 161, 116, 65, + 28, 91, 84, 99, 104, 97, 96, 104, 85, 89, 63, 75, 57, 51, 16, 102, + 131, 118, 123, 132, 132, 131, 118, 104, 116, 48, 127, 146, 138, 123, 123, 128, + 131, 126, 128, 102, 87, 60, 119, 139, 110, 115, 115, 116, 115, 154, 209, 213, + 212, 221, 222, 226, 225, 222, 228, 230, 232, 232, 233, 232, 230, 230, 229, 222, + 224, 220, 220, 220, 213, 165, 122, 97, 33, 124, 150, 155, 157, 157, 157, 166, + 165, 140, 136, 99, 96, 124, 170, 163, 178, 174, 158, 157, 134, 142, 143, 134, + 96, 93, 146, 142, 131, 136, 136, 135, 134, 131, 124, 123, 99, 10, 110, 150, + 126, 146, 122, 132, 131, 153, 116, 115, 112, 75, 111, 146, 148, 153, 155, 154, + 153, 150, 132, 134, 65, 1, 99, 167, 157, 153, 148, 153, 162, 161, 163, 166, + 146, 73, 1, 119, 139, 143, 126, 158, 132, 134, 138, 116, 84, 20, 111, 154, + 153, 144, 135, 134, 143, 130, 130, 95, 72, 110, 163, 150, 151, 150, 144, 142, + 132, 139, 143, 111, 99, 36, 128, 140, 147, 148, 142, 143, 144, 148, 138, 140, + 71, 76, 155, 157, 154, 153, 158, 167, 162, 158, 161, 99, 42, 124, 159, 154, + 150, 147, 143, 143, 131, 136, 139, 126, 77, 8, 154, 167, 174, 178, 148, 150, + 151, 143, 146, 136, 131, 64, 140, 169, 134, 161, 131, 155, 155, 151, 157, 116, + 100, 8, 128, 171, 170, 173, 167, 169, 166, 170, 159, 126, 104, 12, 135, 146, + 146, 136, 144, 144, 143, 139, 157, 122, 131, 32, 174, 140, 174, 181, 169, 17, + 16, 18, 28, 18, 14, 45, 33, 10, 16, 67, 51, 28, 24, 32, 51, 75, + 171, 233, 241, 242, 245, 240, 238, 238, 237, 216, 185, 171, 175, 178, 169, 153, + 139, 132, 127, 116, 111, 118, 123, 136, 187, 208, 221, 220, 214, 210, 197, 199, + 183, 131, 91, 56, 34, 40, 34, 55, 108, 142, 208, 205, 218, 206, 218, 221, + 224, 221, 232, 228, 232, 229, 228, 224, 230, 228, 225, 218, 208, 217, 220, 213, + 221, 217, 202, 198, 189, 191, 132, 91, 69, 38, 51, 40, 16, 60, 84, 65, + 64, 93, 77, 79, 77, 68, 63, 30, 30, 80, 88, 87, 84, 81, 89, 89, + 92, 91, 75, 64, 34, 63, 106, 110, 80, 85, 85, 89, 81, 76, 60, 48, + 9, 81, 104, 96, 92, 85, 100, 83, 87, 96, 83, 87, 40, 84, 88, 95, + 87, 83, 93, 87, 91, 84, 65, 44, 38, 97, 87, 84, 88, 97, 87, 97, + 92, 80, 73, 55, 89, 103, 88, 84, 85, 96, 95, 91, 92, 85, 63, 57, + 100, 107, 116, 104, 102, 85, 106, 100, 88, 102, 100, 96, 37, 81, 127, 106, + 89, 87, 75, 77, 89, 100, 95, 57, 28, 93, 97, 93, 88, 89, 84, 84, + 92, 100, 89, 84, 52, 77, 93, 91, 80, 77, 114, 110, 88, 92, 71, 37, + 17, 92, 123, 107, 107, 107, 100, 99, 85, 99, 104, 42, 4, 139, 139, 126, + 124, 131, 119, 131, 197, 202, 214, 213, 213, 220, 232, 232, 233, 237, 241, 249, + 250, 250, 248, 246, 246, 232, 242, 245, 237, 232, 236, 240, 236, 228, 233, 225, + 221, 214, 224, 216, 209, 195, 220, 206, 173, 110, 64, 28, 88, 81, 97, 100, + 95, 100, 93, 92, 89, 65, 72, 55, 46, 13, 110, 128, 118, 127, 124, 132, + 132, 124, 104, 107, 42, 126, 140, 124, 132, 134, 134, 139, 135, 132, 118, 88, + 88, 118, 144, 115, 120, 124, 116, 112, 131, 154, 201, 210, 216, 217, 213, 220, + 212, 216, 221, 224, 226, 230, 230, 230, 225, 222, 225, 220, 213, 210, 214, 193, + 132, 118, 67, 45, 132, 151, 142, 154, 154, 158, 158, 163, 142, 142, 100, 92, + 127, 165, 157, 153, 134, 135, 138, 128, 135, 139, 147, 114, 91, 143, 142, 138, + 130, 134, 136, 131, 130, 131, 138, 96, 24, 131, 126, 144, 124, 135, 140, 144, + 132, 132, 124, 107, 73, 112, 153, 142, 153, 147, 144, 142, 140, 146, 143, 60, + 2, 162, 161, 155, 158, 161, 159, 159, 166, 163, 162, 144, 104, 2, 120, 153, + 136, 161, 142, 122, 136, 127, 122, 77, 14, 110, 153, 153, 150, 140, 147, 146, + 136, 123, 103, 69, 118, 163, 143, 143, 157, 146, 142, 142, 142, 128, 120, 107, + 42, 136, 153, 151, 155, 158, 150, 143, 146, 140, 151, 77, 88, 150, 157, 147, + 159, 166, 165, 159, 155, 153, 107, 38, 136, 158, 157, 150, 146, 144, 147, 130, + 140, 144, 144, 81, 13, 151, 166, 154, 151, 148, 159, 162, 159, 159, 140, 131, + 71, 126, 170, 159, 170, 131, 142, 154, 157, 157, 134, 110, 12, 138, 173, 170, + 167, 166, 161, 163, 166, 166, 147, 116, 9, 150, 140, 138, 134, 130, 132, 132, + 132, 153, 118, 123, 26, 173, 143, 173, 169, 161, 56, 22, 16, 16, 14, 13, + 49, 21, 13, 9, 68, 55, 28, 37, 64, 110, 221, 245, 242, 240, 242, 242, + 237, 226, 194, 159, 124, 112, 107, 110, 108, 108, 107, 106, 103, 106, 103, 103, + 102, 102, 99, 102, 115, 124, 151, 185, 190, 197, 185, 136, 108, 71, 32, 33, + 36, 41, 57, 122, 150, 230, 237, 202, 221, 214, 228, 229, 234, 232, 228, 226, + 234, 238, 236, 230, 230, 224, 221, 226, 221, 217, 216, 214, 220, 210, 202, 205, + 195, 114, 75, 59, 40, 48, 40, 18, 84, 81, 77, 73, 84, 71, 79, 75, + 81, 81, 61, 22, 76, 87, 99, 99, 99, 92, 92, 85, 85, 71, 63, 36, + 60, 93, 99, 89, 85, 88, 95, 84, 77, 77, 51, 8, 73, 102, 96, 102, + 93, 100, 97, 100, 99, 72, 69, 30, 80, 85, 102, 80, 103, 88, 88, 81, + 85, 76, 65, 38, 91, 88, 87, 84, 84, 88, 89, 89, 79, 63, 52, 84, + 95, 83, 81, 89, 97, 88, 88, 85, 80, 53, 53, 91, 100, 107, 107, 97, + 85, 100, 91, 100, 83, 102, 91, 40, 59, 84, 127, 104, 85, 81, 76, 85, + 102, 89, 57, 33, 80, 92, 91, 79, 81, 79, 77, 100, 103, 99, 79, 48, + 65, 85, 85, 77, 75, 111, 87, 88, 89, 73, 53, 20, 96, 108, 100, 111, + 107, 110, 107, 97, 102, 89, 48, 1, 111, 136, 124, 124, 126, 119, 186, 201, + 206, 212, 216, 221, 220, 226, 230, 236, 234, 238, 246, 249, 248, 249, 250, 248, + 244, 236, 245, 241, 240, 241, 230, 230, 232, 236, 228, 226, 217, 213, 210, 206, + 202, 208, 163, 142, 76, 65, 28, 88, 88, 92, 104, 99, 95, 89, 84, 88, + 67, 68, 63, 55, 17, 81, 136, 119, 128, 122, 124, 130, 124, 119, 99, 51, + 123, 132, 138, 143, 144, 155, 150, 147, 140, 136, 116, 103, 127, 148, 122, 120, + 104, 106, 119, 110, 119, 126, 132, 131, 130, 122, 119, 115, 119, 116, 116, 116, + 120, 126, 126, 123, 123, 126, 120, 119, 118, 116, 118, 104, 103, 65, 68, 131, + 148, 139, 140, 157, 153, 154, 154, 143, 136, 104, 99, 122, 163, 167, 148, 151, + 167, 154, 155, 161, 120, 131, 134, 80, 131, 148, 140, 131, 135, 131, 134, 139, + 131, 134, 87, 22, 103, 136, 130, 127, 128, 130, 126, 131, 138, 124, 104, 72, + 104, 151, 127, 157, 161, 150, 150, 146, 148, 127, 76, 16, 159, 166, 159, 163, + 158, 161, 159, 166, 162, 161, 144, 80, 5, 131, 153, 144, 146, 130, 131, 118, + 140, 99, 71, 32, 114, 136, 158, 139, 144, 143, 136, 139, 126, 115, 73, 122, + 161, 150, 147, 148, 147, 136, 138, 154, 131, 108, 107, 30, 140, 147, 151, 136, + 147, 147, 140, 144, 136, 140, 69, 124, 153, 143, 151, 162, 161, 157, 161, 159, + 154, 110, 53, 104, 134, 155, 153, 150, 144, 150, 147, 134, 136, 144, 79, 48, + 143, 167, 154, 157, 157, 161, 159, 159, 159, 140, 135, 75, 134, 170, 157, 139, + 132, 136, 153, 157, 157, 132, 103, 9, 143, 170, 171, 170, 165, 162, 169, 170, + 166, 146, 122, 9, 126, 131, 130, 127, 118, 116, 119, 130, 139, 126, 116, 18, + 158, 181, 169, 165, 173, 95, 34, 29, 28, 29, 36, 40, 33, 12, 21, 49, + 26, 38, 69, 155, 232, 246, 241, 241, 233, 225, 205, 178, 132, 115, 108, 110, + 110, 110, 110, 108, 110, 115, 107, 91, 73, 64, 71, 81, 96, 130, 112, 100, + 99, 95, 104, 106, 103, 103, 99, 92, 49, 33, 33, 36, 32, 55, 104, 127, + 182, 191, 194, 162, 124, 116, 122, 128, 127, 124, 128, 140, 169, 199, 208, 214, + 220, 224, 222, 213, 205, 204, 210, 208, 202, 187, 139, 114, 88, 72, 37, 34, + 45, 34, 18, 56, 79, 77, 73, 73, 85, 84, 75, 76, 84, 48, 25, 64, + 87, 83, 85, 91, 83, 85, 87, 84, 67, 64, 30, 57, 85, 102, 104, 106, + 99, 99, 84, 79, 65, 46, 6, 67, 96, 95, 96, 88, 100, 92, 93, 88, + 84, 52, 26, 80, 88, 97, 79, 89, 89, 92, 84, 80, 84, 59, 38, 61, + 95, 88, 95, 88, 88, 88, 84, 77, 59, 45, 75, 103, 88, 84, 89, 92, + 92, 89, 89, 83, 53, 48, 95, 95, 99, 95, 96, 96, 102, 99, 100, 80, + 68, 81, 46, 52, 85, 104, 116, 95, 81, 73, 89, 93, 92, 63, 28, 77, + 97, 87, 87, 77, 79, 95, 122, 93, 91, 75, 34, 76, 91, 73, 71, 77, + 76, 83, 83, 81, 65, 55, 22, 68, 122, 112, 114, 106, 95, 97, 108, 97, + 95, 42, 8, 83, 134, 124, 124, 132, 118, 116, 158, 198, 206, 202, 183, 139, + 128, 126, 123, 127, 123, 115, 110, 114, 115, 116, 118, 116, 112, 110, 112, 115, + 114, 112, 107, 108, 116, 120, 118, 115, 108, 104, 108, 88, 83, 81, 79, 69, + 34, 24, 85, 95, 97, 93, 96, 93, 87, 88, 87, 61, 63, 57, 46, 14, + 100, 118, 122, 118, 124, 128, 116, 122, 112, 88, 53, 126, 136, 153, 163, 190, + 197, 206, 191, 186, 169, 147, 136, 123, 146, 114, 124, 111, 99, 104, 108, 122, + 110, 100, 103, 107, 107, 106, 106, 106, 104, 106, 106, 106, 104, 106, 110, 108, + 107, 107, 111, 108, 106, 110, 111, 46, 44, 60, 131, 144, 140, 148, 146, 147, + 150, 159, 140, 135, 116, 83, 95, 146, 159, 144, 131, 151, 166, 161, 136, 135, + 135, 123, 91, 114, 139, 142, 135, 136, 134, 132, 131, 131, 128, 68, 18, 102, + 143, 136, 120, 135, 130, 126, 131, 138, 120, 104, 52, 134, 147, 143, 136, 158, + 161, 148, 158, 146, 124, 63, 14, 96, 159, 153, 162, 163, 155, 161, 162, 162, + 161, 140, 76, 5, 122, 130, 154, 146, 118, 110, 126, 96, 93, 80, 34, 108, + 136, 153, 146, 151, 142, 138, 131, 134, 99, 48, 144, 162, 153, 157, 157, 140, + 142, 146, 142, 126, 110, 102, 40, 136, 148, 134, 151, 144, 140, 142, 144, 132, + 122, 59, 93, 161, 165, 167, 151, 140, 159, 161, 170, 155, 99, 56, 87, 134, + 158, 151, 150, 148, 148, 130, 128, 139, 139, 88, 40, 140, 166, 158, 159, 162, + 150, 150, 159, 158, 143, 138, 80, 104, 166, 161, 128, 130, 140, 154, 157, 157, + 134, 103, 12, 134, 171, 169, 167, 163, 167, 166, 166, 165, 136, 124, 8, 134, + 131, 124, 120, 118, 116, 112, 127, 147, 135, 115, 24, 166, 183, 169, 158, 173, + 71, 73, 53, 61, 45, 56, 28, 26, 12, 24, 25, 36, 85, 198, 240, 244, + 241, 242, 242, 199, 153, 119, 110, 110, 112, 114, 118, 108, 124, 120, 104, 72, + 38, 20, 20, 17, 24, 17, 21, 25, 49, 73, 122, 118, 99, 102, 95, 95, + 91, 102, 87, 29, 28, 29, 33, 33, 56, 76, 100, 97, 115, 102, 107, 91, + 85, 84, 95, 88, 92, 88, 100, 95, 97, 106, 106, 110, 104, 106, 106, 102, + 99, 102, 107, 108, 95, 92, 83, 69, 33, 36, 41, 42, 34, 21, 46, 75, + 83, 75, 88, 77, 83, 83, 80, 76, 51, 28, 53, 83, 81, 81, 76, 80, + 85, 88, 80, 61, 60, 24, 61, 72, 87, 91, 88, 84, 81, 85, 71, 69, + 49, 8, 67, 89, 102, 96, 97, 92, 93, 95, 85, 81, 65, 26, 73, 83, + 97, 97, 84, 89, 79, 87, 65, 63, 53, 44, 53, 52, 69, 67, 63, 65, + 68, 69, 76, 72, 45, 83, 100, 84, 79, 89, 89, 88, 89, 88, 85, 61, + 42, 93, 92, 92, 88, 85, 91, 88, 93, 92, 93, 92, 91, 69, 52, 89, + 104, 96, 77, 71, 73, 92, 88, 89, 64, 25, 87, 103, 92, 85, 76, 75, + 95, 111, 93, 87, 75, 37, 67, 84, 73, 71, 64, 67, 68, 75, 67, 63, + 44, 22, 65, 119, 96, 69, 88, 103, 104, 87, 93, 93, 40, 6, 120, 126, + 123, 120, 123, 120, 124, 124, 124, 123, 120, 114, 114, 111, 111, 110, 110, 106, + 104, 102, 102, 102, 103, 103, 102, 97, 97, 96, 96, 95, 96, 88, 93, 92, + 92, 92, 92, 87, 87, 87, 83, 76, 60, 57, 33, 24, 32, 83, 80, 93, + 89, 77, 63, 67, 56, 45, 60, 57, 61, 48, 8, 103, 138, 124, 122, 120, + 120, 123, 116, 110, 57, 83, 136, 150, 194, 213, 221, 221, 212, 208, 213, 213, + 209, 186, 163, 144, 119, 95, 96, 102, 87, 97, 88, 100, 100, 97, 110, 118, + 112, 112, 112, 111, 110, 110, 114, 115, 115, 115, 114, 112, 115, 115, 114, 118, + 96, 41, 51, 46, 21, 123, 134, 147, 134, 144, 130, 126, 122, 146, 126, 112, + 85, 106, 126, 136, 130, 153, 138, 139, 126, 123, 120, 119, 132, 93, 103, 124, + 146, 144, 142, 134, 143, 144, 131, 127, 103, 13, 111, 146, 146, 140, 134, 140, + 131, 136, 146, 103, 104, 53, 99, 146, 146, 150, 143, 120, 126, 135, 142, 136, + 61, 6, 100, 163, 155, 158, 157, 157, 161, 163, 159, 157, 154, 71, 6, 114, + 143, 135, 112, 110, 99, 93, 114, 97, 79, 33, 111, 147, 151, 155, 138, 136, + 139, 135, 138, 107, 57, 104, 159, 148, 147, 142, 140, 144, 139, 142, 140, 107, + 102, 44, 140, 150, 144, 140, 142, 140, 139, 140, 136, 81, 57, 131, 143, 169, + 154, 148, 144, 150, 161, 153, 159, 93, 75, 80, 140, 147, 146, 157, 148, 144, + 134, 130, 130, 131, 76, 14, 143, 165, 159, 151, 157, 157, 150, 147, 150, 150, + 135, 107, 104, 159, 153, 150, 136, 144, 153, 154, 154, 111, 100, 13, 139, 171, + 166, 165, 161, 162, 162, 166, 163, 155, 118, 8, 127, 123, 115, 124, 112, 118, + 114, 127, 143, 126, 118, 40, 170, 153, 173, 174, 189, 12, 12, 14, 13, 12, + 13, 13, 10, 10, 34, 32, 84, 216, 245, 242, 244, 241, 245, 206, 139, 112, + 114, 115, 120, 122, 118, 122, 127, 119, 81, 37, 16, 13, 12, 13, 14, 18, + 18, 18, 21, 18, 37, 69, 108, 155, 118, 100, 99, 97, 102, 83, 29, 25, + 25, 30, 32, 44, 75, 73, 73, 68, 71, 87, 89, 91, 91, 92, 93, 95, + 92, 93, 93, 95, 96, 95, 95, 95, 92, 92, 91, 87, 87, 91, 88, 84, + 81, 56, 29, 32, 28, 41, 41, 37, 21, 30, 72, 73, 83, 71, 48, 59, + 52, 42, 40, 42, 49, 32, 46, 63, 75, 73, 72, 72, 69, 75, 61, 60, + 22, 61, 67, 88, 92, 89, 85, 81, 69, 67, 64, 45, 12, 69, 73, 75, + 75, 75, 75, 75, 76, 79, 67, 61, 26, 69, 79, 92, 83, 63, 75, 72, + 63, 63, 71, 64, 60, 64, 76, 60, 80, 72, 75, 65, 75, 75, 51, 45, + 68, 81, 91, 76, 81, 84, 85, 79, 84, 80, 60, 41, 95, 92, 92, 83, + 87, 85, 87, 81, 84, 80, 88, 77, 80, 52, 64, 71, 72, 72, 73, 80, + 81, 87, 87, 65, 22, 91, 85, 93, 83, 76, 75, 72, 77, 83, 81, 67, + 51, 64, 77, 63, 56, 60, 60, 61, 61, 63, 61, 32, 24, 49, 93, 100, + 75, 88, 99, 96, 92, 97, 104, 37, 2, 112, 130, 124, 122, 118, 118, 120, + 115, 112, 103, 106, 102, 88, 96, 81, 87, 93, 84, 118, 115, 112, 115, 114, + 114, 114, 112, 111, 110, 106, 110, 107, 103, 100, 106, 102, 102, 106, 103, 81, + 49, 32, 28, 24, 24, 21, 16, 36, 32, 44, 46, 41, 40, 40, 41, 40, + 44, 40, 48, 45, 41, 8, 73, 126, 128, 128, 126, 132, 126, 114, 107, 49, + 95, 142, 183, 222, 222, 214, 225, 213, 212, 221, 217, 205, 199, 175, 118, 103, + 112, 102, 110, 107, 106, 93, 104, 114, 68, 80, 77, 116, 170, 114, 124, 128, + 126, 136, 132, 134, 138, 138, 138, 138, 135, 127, 104, 75, 37, 59, 48, 29, + 95, 127, 134, 136, 135, 139, 135, 140, 136, 132, 130, 126, 134, 134, 106, 106, + 114, 107, 106, 108, 122, 123, 108, 99, 122, 120, 120, 124, 119, 120, 120, 102, + 116, 115, 116, 68, 20, 107, 130, 131, 135, 136, 131, 136, 138, 127, 120, 99, + 49, 146, 157, 144, 143, 119, 142, 140, 130, 132, 132, 59, 8, 148, 159, 154, + 155, 151, 158, 151, 155, 151, 157, 134, 106, 6, 126, 146, 110, 123, 95, 104, + 97, 103, 96, 72, 16, 111, 142, 144, 143, 127, 132, 138, 140, 119, 95, 55, + 102, 139, 146, 139, 139, 144, 144, 147, 146, 139, 110, 116, 53, 151, 148, 134, + 142, 138, 136, 122, 136, 122, 80, 60, 122, 118, 134, 148, 146, 146, 130, 143, + 135, 134, 104, 79, 60, 115, 136, 138, 119, 127, 130, 132, 131, 130, 135, 91, + 18, 144, 147, 151, 144, 147, 142, 146, 139, 144, 136, 140, 135, 132, 103, 107, + 112, 142, 143, 119, 147, 151, 142, 104, 22, 139, 170, 165, 161, 154, 151, 147, + 151, 153, 140, 126, 9, 153, 120, 114, 116, 114, 127, 128, 132, 126, 119, 108, + 26, 166, 175, 161, 159, 163, 10, 4, 13, 13, 9, 5, 12, 24, 63, 32, + 63, 190, 242, 240, 241, 241, 245, 199, 143, 114, 122, 124, 126, 120, 111, 126, + 132, 124, 81, 22, 10, 9, 9, 12, 18, 18, 22, 21, 24, 18, 20, 24, + 46, 79, 144, 158, 122, 120, 120, 104, 85, 26, 24, 21, 29, 33, 26, 59, + 65, 67, 68, 72, 80, 88, 92, 93, 97, 97, 99, 100, 103, 104, 100, 99, + 99, 97, 97, 100, 93, 95, 92, 89, 88, 93, 76, 34, 28, 28, 25, 20, + 22, 37, 36, 33, 25, 26, 33, 41, 46, 32, 26, 26, 22, 24, 20, 20, + 22, 33, 32, 44, 45, 51, 53, 59, 60, 61, 52, 24, 52, 60, 77, 79, + 75, 68, 53, 29, 33, 28, 17, 12, 41, 44, 44, 45, 48, 48, 46, 51, + 52, 51, 37, 32, 49, 52, 59, 36, 33, 33, 36, 25, 14, 25, 21, 16, + 14, 12, 14, 13, 14, 20, 21, 22, 24, 26, 33, 22, 24, 24, 24, 25, + 42, 42, 29, 36, 41, 68, 40, 71, 84, 73, 69, 69, 69, 68, 69, 69, + 69, 71, 69, 67, 68, 72, 77, 77, 79, 81, 81, 83, 83, 84, 65, 28, + 81, 84, 76, 72, 67, 72, 67, 60, 75, 73, 53, 25, 57, 48, 34, 25, + 22, 21, 20, 21, 21, 16, 16, 25, 30, 29, 36, 30, 29, 30, 30, 42, + 42, 56, 40, 0, 18, 68, 76, 73, 75, 79, 85, 83, 85, 83, 83, 49, + 80, 111, 120, 131, 134, 131, 128, 130, 124, 130, 128, 130, 130, 128, 127, 127, + 124, 123, 120, 118, 118, 112, 119, 111, 89, 63, 28, 21, 21, 18, 12, 13, + 12, 10, 38, 40, 36, 42, 41, 38, 30, 36, 36, 36, 32, 41, 34, 41, + 12, 48, 110, 114, 107, 118, 120, 102, 81, 104, 40, 103, 155, 210, 225, 224, + 220, 224, 230, 209, 185, 155, 148, 134, 116, 103, 102, 80, 67, 87, 89, 88, + 87, 91, 83, 67, 84, 75, 119, 179, 155, 115, 114, 139, 139, 140, 142, 144, + 148, 147, 146, 140, 128, 93, 40, 33, 29, 69, 55, 60, 107, 110, 100, 110, + 114, 108, 108, 114, 114, 115, 111, 112, 120, 124, 123, 126, 124, 126, 126, 122, + 128, 127, 122, 111, 119, 122, 118, 102, 128, 119, 106, 88, 116, 114, 63, 18, + 56, 122, 126, 92, 102, 128, 130, 111, 111, 118, 91, 72, 136, 165, 122, 111, + 126, 124, 99, 103, 114, 99, 87, 16, 127, 163, 159, 159, 151, 159, 142, 146, + 157, 151, 107, 75, 9, 124, 144, 102, 107, 92, 89, 93, 89, 87, 44, 33, + 110, 79, 72, 75, 79, 72, 72, 73, 68, 59, 59, 77, 85, 87, 85, 85, + 99, 116, 131, 135, 135, 102, 96, 36, 148, 138, 132, 126, 128, 93, 85, 88, + 83, 81, 64, 84, 59, 76, 69, 83, 102, 107, 115, 107, 108, 110, 93, 55, + 97, 112, 115, 112, 107, 106, 122, 120, 114, 110, 87, 37, 100, 107, 95, 97, + 108, 110, 103, 111, 112, 110, 136, 131, 123, 138, 138, 139, 143, 143, 139, 143, + 139, 135, 97, 14, 138, 154, 153, 151, 151, 148, 151, 151, 151, 118, 127, 6, + 124, 107, 103, 110, 104, 108, 106, 91, 114, 122, 88, 24, 68, 100, 112, 111, + 108, 77, 71, 61, 57, 49, 57, 49, 56, 29, 36, 136, 238, 241, 240, 240, + 241, 195, 140, 116, 120, 130, 122, 114, 108, 131, 136, 131, 93, 28, 9, 9, + 8, 10, 18, 20, 21, 21, 22, 17, 21, 12, 20, 40, 67, 122, 169, 142, + 122, 120, 106, 91, 26, 24, 22, 29, 30, 25, 37, 40, 44, 45, 46, 52, + 63, 107, 175, 119, 97, 100, 106, 104, 107, 100, 99, 103, 104, 111, 111, 111, + 104, 100, 104, 100, 69, 26, 22, 21, 17, 18, 21, 18, 21, 22, 22, 25, + 21, 21, 22, 20, 40, 44, 46, 49, 55, 56, 51, 21, 71, 71, 48, 42, + 42, 44, 38, 36, 41, 52, 20, 45, 30, 25, 22, 21, 22, 16, 14, 16, + 14, 16, 9, 13, 12, 9, 9, 12, 12, 13, 13, 14, 17, 17, 36, 14, + 25, 46, 51, 57, 49, 60, 68, 93, 76, 85, 76, 97, 104, 96, 106, 106, + 99, 92, 87, 72, 38, 33, 79, 115, 118, 89, 85, 73, 60, 55, 49, 18, + 16, 12, 12, 12, 12, 12, 10, 13, 13, 13, 14, 16, 18, 20, 22, 21, + 25, 29, 33, 34, 40, 44, 65, 69, 83, 67, 30, 76, 64, 52, 40, 38, + 36, 33, 34, 36, 32, 30, 24, 20, 37, 63, 61, 68, 95, 104, 102, 111, + 100, 63, 20, 73, 115, 115, 88, 68, 69, 69, 57, 56, 22, 16, 2, 9, + 9, 30, 18, 18, 18, 34, 28, 29, 29, 41, 60, 89, 124, 179, 175, 124, + 131, 144, 139, 136, 139, 139, 139, 136, 135, 135, 134, 132, 131, 130, 123, 126, + 114, 118, 107, 56, 24, 21, 16, 16, 17, 20, 24, 26, 48, 41, 46, 73, + 83, 92, 96, 100, 92, 89, 75, 71, 33, 32, 21, 10, 41, 41, 44, 59, + 63, 102, 104, 97, 97, 32, 112, 167, 214, 238, 224, 228, 220, 170, 143, 119, + 119, 115, 108, 107, 103, 60, 72, 64, 69, 68, 60, 56, 60, 60, 63, 83, + 85, 119, 189, 182, 119, 110, 118, 135, 144, 147, 151, 153, 151, 150, 142, 128, + 85, 36, 36, 37, 46, 34, 17, 14, 18, 10, 8, 6, 9, 5, 2, 2, + 4, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 4, 4, 18, 37, 37, 42, 41, 40, + 51, 52, 67, 71, 81, 104, 48, 97, 130, 128, 106, 106, 120, 116, 97, 102, + 112, 53, 13, 25, 91, 99, 84, 75, 99, 106, 84, 79, 111, 103, 24, 10, + 67, 131, 126, 72, 46, 38, 32, 29, 40, 79, 68, 80, 85, 80, 99, 100, + 106, 112, 115, 118, 111, 51, 123, 116, 130, 119, 84, 46, 40, 68, 45, 87, + 93, 102, 51, 135, 96, 89, 100, 88, 108, 122, 119, 130, 124, 59, 118, 131, + 140, 136, 88, 87, 89, 55, 67, 65, 55, 63, 102, 100, 91, 89, 83, 79, + 72, 67, 69, 64, 40, 41, 29, 18, 16, 17, 9, 8, 9, 12, 1, 1, + 1, 17, 29, 17, 36, 33, 40, 52, 40, 83, 103, 126, 123, 84, 17, 80, + 89, 85, 84, 84, 80, 79, 79, 73, 75, 71, 5, 52, 55, 65, 60, 46, + 60, 59, 55, 56, 48, 56, 42, 52, 59, 59, 60, 65, 73, 56, 59, 48, + 45, 55, 51, 28, 32, 115, 225, 238, 238, 240, 238, 194, 130, 118, 127, 134, + 118, 112, 116, 132, 143, 139, 115, 42, 10, 8, 8, 8, 16, 16, 17, 22, + 28, 25, 40, 42, 59, 52, 40, 56, 110, 171, 157, 126, 120, 115, 91, 28, + 24, 21, 30, 30, 34, 44, 76, 84, 85, 77, 84, 81, 107, 186, 161, 97, + 99, 108, 102, 106, 115, 118, 132, 139, 140, 140, 144, 143, 136, 106, 97, 32, + 24, 21, 18, 17, 17, 18, 17, 17, 17, 24, 22, 41, 56, 69, 79, 92, + 95, 100, 99, 96, 88, 57, 38, 83, 88, 60, 60, 65, 65, 59, 48, 46, + 52, 20, 20, 28, 45, 48, 53, 83, 93, 103, 73, 59, 56, 103, 103, 112, + 92, 100, 85, 106, 91, 85, 91, 84, 36, 21, 68, 112, 102, 112, 104, 88, + 80, 91, 108, 87, 102, 92, 87, 76, 92, 106, 103, 91, 93, 85, 103, 46, + 32, 85, 124, 114, 112, 127, 123, 126, 130, 116, 107, 57, 29, 96, 112, 106, + 110, 108, 112, 119, 112, 111, 111, 106, 102, 100, 108, 107, 112, 103, 103, 95, + 65, 52, 55, 46, 67, 28, 38, 42, 69, 80, 79, 84, 99, 89, 83, 73, + 64, 42, 95, 123, 124, 124, 122, 124, 120, 116, 112, 102, 67, 24, 89, 118, + 119, 114, 114, 114, 114, 110, 84, 65, 57, 6, 71, 89, 91, 84, 89, 97, + 96, 95, 102, 100, 42, 56, 97, 120, 201, 183, 134, 123, 131, 148, 148, 147, + 151, 159, 159, 158, 159, 159, 153, 148, 130, 124, 114, 131, 118, 99, 37, 24, + 18, 17, 24, 25, 29, 40, 48, 52, 44, 64, 106, 108, 123, 130, 134, 126, + 123, 112, 107, 102, 88, 65, 9, 108, 116, 118, 115, 61, 63, 59, 99, 95, + 24, 127, 186, 220, 224, 230, 217, 157, 127, 120, 111, 102, 106, 100, 107, 65, + 45, 88, 80, 88, 93, 100, 91, 93, 89, 95, 99, 131, 120, 197, 191, 157, + 115, 114, 126, 144, 151, 148, 153, 155, 151, 140, 131, 81, 36, 42, 44, 53, + 34, 32, 85, 96, 93, 100, 92, 97, 88, 135, 114, 80, 80, 140, 123, 146, + 155, 155, 159, 157, 151, 165, 165, 161, 154, 128, 132, 154, 155, 150, 150, 155, + 151, 150, 123, 100, 65, 18, 102, 144, 138, 119, 119, 95, 77, 73, 32, 42, + 45, 45, 10, 8, 33, 9, 8, 4, 20, 1, 5, 2, 12, 9, 4, 8, + 5, 1, 0, 2, 2, 0, 0, 0, 5, 1, 14, 42, 34, 42, 61, 85, + 114, 83, 71, 115, 71, 77, 128, 142, 151, 148, 148, 151, 158, 161, 127, 112, + 56, 126, 135, 147, 153, 143, 134, 130, 122, 102, 106, 83, 103, 91, 115, 130, + 112, 128, 123, 139, 138, 124, 146, 130, 57, 131, 144, 131, 159, 158, 153, 146, + 131, 110, 106, 91, 61, 59, 24, 30, 79, 75, 111, 119, 124, 102, 96, 102, + 87, 37, 76, 167, 171, 140, 155, 167, 151, 144, 148, 114, 131, 140, 140, 140, + 146, 150, 143, 87, 46, 36, 33, 53, 32, 30, 33, 33, 28, 24, 28, 28, + 24, 24, 26, 30, 29, 33, 53, 68, 72, 72, 85, 112, 122, 104, 87, 81, + 89, 93, 142, 154, 140, 140, 146, 21, 24, 24, 37, 40, 44, 32, 38, 97, + 216, 232, 241, 237, 236, 185, 127, 119, 128, 136, 115, 112, 126, 136, 151, 146, + 135, 83, 18, 10, 9, 9, 14, 14, 17, 25, 29, 65, 64, 61, 65, 67, + 52, 44, 48, 77, 170, 175, 147, 118, 106, 85, 25, 21, 20, 28, 29, 29, + 77, 92, 99, 97, 96, 79, 69, 92, 197, 182, 122, 97, 103, 112, 122, 139, + 142, 144, 148, 151, 154, 153, 147, 139, 114, 84, 22, 20, 17, 17, 20, 25, + 29, 26, 29, 28, 29, 44, 92, 102, 104, 97, 93, 95, 88, 83, 75, 60, + 53, 20, 81, 81, 67, 60, 59, 65, 68, 75, 44, 55, 20, 71, 102, 99, + 102, 99, 108, 88, 108, 81, 110, 72, 75, 93, 97, 97, 102, 88, 85, 89, + 83, 97, 99, 44, 18, 89, 107, 111, 102, 104, 103, 104, 91, 89, 99, 92, + 64, 87, 100, 110, 108, 96, 104, 107, 99, 103, 49, 45, 102, 124, 120, 99, + 116, 114, 115, 107, 114, 124, 79, 30, 123, 131, 131, 92, 84, 81, 83, 91, + 92, 85, 111, 100, 65, 79, 92, 114, 96, 100, 97, 103, 107, 93, 60, 72, + 24, 60, 106, 115, 116, 112, 118, 111, 111, 110, 84, 65, 37, 93, 122, 112, + 108, 107, 106, 106, 106, 93, 106, 75, 24, 83, 118, 120, 114, 108, 115, 116, + 114, 108, 81, 57, 17, 111, 134, 131, 102, 97, 92, 112, 99, 93, 99, 57, + 55, 100, 116, 195, 205, 163, 120, 124, 146, 148, 162, 167, 174, 177, 174, 177, + 170, 163, 157, 126, 116, 130, 130, 118, 88, 30, 20, 17, 25, 32, 34, 40, + 51, 53, 60, 48, 87, 114, 130, 127, 124, 116, 120, 115, 122, 123, 123, 104, + 73, 8, 102, 115, 130, 123, 120, 114, 115, 103, 95, 24, 128, 194, 221, 228, + 222, 167, 131, 119, 106, 115, 97, 95, 111, 114, 55, 42, 77, 64, 76, 72, + 77, 80, 83, 71, 104, 140, 128, 132, 202, 197, 185, 115, 111, 120, 143, 155, + 157, 161, 159, 151, 140, 128, 65, 40, 29, 40, 55, 42, 57, 116, 140, 128, + 118, 115, 119, 114, 120, 118, 112, 108, 116, 146, 140, 142, 138, 146, 123, 128, + 151, 163, 136, 124, 140, 108, 134, 134, 140, 139, 135, 136, 132, 135, 136, 76, + 18, 102, 150, 148, 148, 128, 138, 122, 134, 102, 102, 83, 42, 33, 148, 150, + 118, 120, 124, 115, 104, 114, 103, 64, 20, 56, 159, 155, 115, 120, 154, 153, + 131, 112, 151, 130, 68, 12, 63, 116, 115, 93, 114, 112, 116, 112, 106, 69, + 106, 169, 165, 163, 155, 157, 148, 154, 144, 130, 123, 57, 135, 148, 162, 157, + 134, 135, 128, 128, 124, 135, 122, 116, 122, 130, 138, 131, 116, 124, 135, 147, + 148, 142, 134, 63, 135, 153, 144, 154, 142, 140, 150, 157, 157, 147, 97, 114, + 51, 97, 135, 128, 143, 144, 140, 128, 138, 138, 103, 95, 30, 136, 163, 161, + 155, 157, 157, 161, 150, 161, 151, 142, 131, 108, 150, 151, 143, 146, 147, 148, + 151, 114, 102, 95, 102, 148, 151, 165, 161, 169, 166, 167, 167, 144, 138, 138, + 144, 155, 155, 154, 170, 171, 150, 159, 153, 155, 134, 91, 130, 169, 167, 162, + 167, 166, 30, 36, 38, 24, 38, 24, 33, 45, 179, 228, 229, 232, 233, 193, + 130, 118, 131, 140, 123, 114, 138, 147, 153, 148, 144, 120, 46, 9, 9, 10, + 13, 21, 14, 14, 24, 63, 73, 71, 60, 56, 59, 57, 41, 53, 64, 147, + 179, 162, 120, 102, 79, 24, 20, 17, 28, 30, 33, 84, 104, 83, 85, 75, + 75, 75, 88, 204, 187, 173, 99, 103, 116, 130, 143, 148, 155, 151, 155, 154, + 157, 151, 135, 114, 53, 24, 17, 17, 24, 28, 29, 32, 28, 32, 34, 34, + 80, 108, 108, 100, 100, 85, 87, 71, 64, 69, 53, 52, 22, 73, 87, 73, + 55, 59, 63, 63, 73, 45, 55, 21, 75, 93, 99, 95, 111, 80, 89, 93, + 72, 81, 63, 89, 106, 103, 91, 92, 83, 87, 85, 89, 92, 92, 38, 18, + 103, 103, 102, 95, 102, 106, 96, 93, 95, 88, 81, 57, 83, 107, 116, 104, + 103, 104, 102, 95, 99, 48, 33, 95, 119, 122, 115, 112, 99, 112, 100, 114, + 107, 106, 36, 108, 103, 139, 127, 130, 128, 124, 126, 122, 116, 100, 93, 64, + 111, 122, 115, 122, 112, 111, 111, 104, 102, 80, 76, 28, 88, 119, 114, 108, + 99, 103, 92, 89, 102, 97, 67, 38, 87, 110, 115, 106, 110, 106, 104, 107, + 108, 99, 75, 29, 87, 99, 120, 107, 104, 111, 102, 118, 116, 81, 64, 0, + 110, 114, 123, 123, 130, 127, 116, 127, 102, 103, 63, 49, 102, 122, 194, 217, + 201, 136, 119, 136, 150, 159, 167, 178, 182, 179, 179, 181, 173, 161, 127, 126, + 140, 131, 120, 88, 28, 20, 20, 34, 45, 55, 53, 52, 57, 57, 44, 99, + 119, 128, 123, 112, 112, 111, 118, 110, 112, 118, 115, 73, 9, 115, 119, 118, + 115, 111, 115, 97, 71, 97, 33, 122, 199, 218, 230, 206, 131, 115, 110, 114, + 99, 97, 116, 118, 102, 56, 45, 46, 81, 83, 73, 72, 89, 87, 67, 108, + 140, 136, 132, 206, 209, 198, 114, 108, 119, 132, 146, 153, 157, 163, 155, 140, + 128, 71, 36, 28, 49, 68, 32, 73, 134, 123, 124, 127, 134, 131, 136, 132, + 111, 103, 99, 135, 163, 157, 147, 142, 135, 148, 142, 153, 154, 153, 146, 104, + 136, 157, 158, 158, 162, 159, 158, 148, 131, 95, 77, 22, 116, 147, 147, 150, + 150, 146, 124, 128, 122, 114, 89, 42, 110, 151, 144, 143, 143, 142, 150, 147, + 127, 128, 72, 13, 132, 159, 144, 139, 147, 148, 144, 146, 148, 140, 126, 77, + 14, 93, 108, 102, 99, 118, 110, 112, 118, 89, 67, 95, 167, 159, 157, 146, + 147, 144, 147, 147, 159, 118, 63, 128, 131, 134, 161, 166, 158, 142, 154, 130, + 147, 115, 75, 111, 143, 147, 134, 136, 155, 150, 163, 130, 144, 135, 68, 134, + 138, 147, 154, 136, 135, 138, 148, 142, 154, 120, 118, 24, 120, 130, 136, 135, + 134, 139, 132, 131, 138, 131, 107, 42, 167, 162, 148, 151, 148, 151, 154, 155, + 154, 151, 146, 122, 132, 143, 151, 144, 146, 151, 153, 150, 154, 159, 83, 150, + 170, 157, 161, 170, 154, 155, 155, 171, 170, 144, 119, 135, 170, 181, 173, 171, + 169, 162, 148, 169, 167, 150, 92, 138, 171, 162, 166, 163, 162, 16, 18, 20, + 59, 21, 41, 34, 104, 222, 226, 230, 233, 212, 146, 119, 126, 139, 138, 114, + 130, 153, 159, 155, 150, 139, 87, 18, 9, 8, 12, 14, 25, 16, 10, 28, + 65, 57, 59, 46, 38, 40, 37, 49, 45, 59, 114, 185, 174, 126, 104, 75, + 24, 21, 17, 28, 30, 26, 71, 99, 83, 84, 79, 75, 85, 95, 206, 199, + 185, 95, 104, 116, 138, 147, 155, 154, 163, 155, 153, 157, 146, 134, 116, 30, + 20, 17, 16, 25, 37, 36, 30, 33, 36, 30, 49, 96, 106, 108, 100, 83, + 79, 76, 73, 64, 63, 60, 49, 22, 71, 76, 80, 73, 68, 64, 56, 57, + 45, 52, 17, 83, 91, 110, 81, 79, 80, 77, 84, 83, 81, 60, 85, 106, + 99, 93, 93, 104, 96, 96, 89, 81, 85, 41, 21, 83, 107, 92, 108, 92, + 75, 99, 92, 89, 89, 81, 55, 85, 100, 116, 102, 116, 106, 96, 103, 95, + 51, 32, 95, 116, 114, 108, 108, 108, 97, 96, 103, 108, 116, 40, 75, 124, + 95, 119, 128, 114, 127, 122, 111, 122, 108, 80, 61, 114, 119, 106, 96, 95, + 89, 104, 108, 100, 95, 76, 33, 104, 114, 111, 115, 97, 87, 88, 95, 100, + 84, 63, 22, 93, 112, 106, 115, 107, 104, 110, 107, 107, 88, 77, 40, 80, + 104, 118, 115, 115, 100, 112, 108, 111, 79, 56, 0, 107, 120, 119, 120, 127, + 114, 135, 134, 134, 120, 67, 57, 102, 123, 194, 210, 199, 135, 118, 132, 146, + 150, 163, 178, 183, 185, 186, 177, 173, 155, 127, 138, 142, 136, 127, 72, 26, + 20, 24, 51, 55, 53, 52, 56, 64, 67, 51, 104, 127, 128, 114, 118, 122, + 120, 115, 114, 112, 115, 97, 75, 8, 112, 103, 122, 119, 118, 114, 97, 75, + 92, 28, 127, 193, 214, 226, 185, 124, 115, 107, 107, 99, 102, 124, 116, 103, + 55, 40, 40, 65, 79, 84, 73, 85, 87, 60, 104, 138, 128, 138, 208, 205, + 202, 114, 107, 115, 124, 139, 146, 159, 166, 158, 143, 123, 69, 38, 25, 36, + 71, 40, 73, 135, 140, 126, 128, 123, 122, 110, 122, 107, 96, 34, 124, 159, + 154, 142, 143, 139, 150, 154, 155, 140, 155, 142, 103, 144, 157, 163, 157, 150, + 144, 139, 138, 134, 142, 81, 21, 114, 130, 151, 143, 140, 116, 136, 139, 140, + 147, 93, 40, 134, 151, 136, 144, 136, 144, 147, 148, 142, 130, 76, 13, 154, + 158, 147, 143, 150, 159, 153, 153, 158, 150, 144, 80, 12, 103, 102, 97, 103, + 118, 108, 108, 111, 104, 59, 93, 153, 159, 143, 155, 155, 147, 147, 148, 130, + 130, 60, 119, 138, 140, 161, 150, 143, 146, 138, 143, 148, 138, 81, 150, 144, + 142, 138, 148, 153, 161, 153, 139, 142, 132, 76, 130, 142, 153, 143, 138, 139, + 139, 142, 148, 150, 142, 120, 56, 100, 143, 127, 128, 138, 146, 124, 140, 134, + 111, 111, 40, 112, 166, 158, 139, 148, 144, 148, 142, 147, 144, 126, 111, 146, + 143, 148, 154, 151, 147, 150, 148, 138, 159, 100, 154, 178, 170, 163, 174, 167, + 150, 169, 154, 136, 128, 130, 139, 170, 166, 165, 150, 157, 151, 162, 161, 157, + 140, 89, 108, 170, 162, 165, 157, 161, 75, 67, 64, 25, 32, 37, 56, 170, + 218, 236, 224, 218, 162, 132, 122, 138, 142, 128, 119, 151, 163, 163, 155, 147, + 126, 52, 10, 6, 9, 10, 16, 24, 16, 12, 55, 75, 64, 46, 37, 44, + 49, 34, 40, 42, 52, 107, 190, 182, 157, 102, 69, 24, 18, 14, 25, 30, + 32, 57, 103, 83, 80, 83, 72, 71, 83, 213, 204, 186, 95, 108, 119, 132, + 147, 155, 158, 157, 155, 155, 157, 144, 122, 118, 28, 17, 16, 25, 32, 37, + 33, 40, 34, 36, 30, 46, 99, 102, 104, 81, 75, 76, 75, 71, 65, 61, + 55, 61, 34, 79, 75, 64, 67, 65, 76, 53, 68, 44, 52, 16, 76, 85, + 92, 68, 85, 71, 89, 63, 81, 75, 53, 85, 106, 93, 97, 95, 96, 103, + 92, 93, 97, 80, 41, 20, 85, 102, 96, 108, 100, 103, 93, 99, 85, 93, + 80, 56, 84, 100, 103, 103, 116, 103, 89, 99, 89, 57, 30, 96, 120, 122, + 118, 107, 106, 104, 100, 100, 102, 116, 53, 45, 124, 131, 132, 126, 123, 122, + 119, 119, 130, 112, 89, 60, 108, 119, 106, 104, 115, 97, 95, 95, 104, 85, + 77, 32, 92, 122, 100, 104, 95, 88, 100, 89, 95, 88, 64, 24, 84, 106, + 106, 122, 103, 102, 100, 96, 92, 99, 79, 41, 83, 115, 118, 120, 106, 108, + 107, 111, 107, 81, 64, 8, 114, 112, 110, 127, 128, 116, 123, 131, 136, 112, + 59, 64, 103, 115, 165, 220, 206, 140, 115, 127, 147, 151, 163, 174, 173, 177, + 181, 181, 173, 139, 123, 139, 146, 135, 127, 53, 22, 20, 38, 49, 57, 56, + 57, 63, 77, 64, 59, 107, 128, 120, 119, 115, 116, 111, 116, 119, 108, 112, + 95, 69, 8, 96, 119, 115, 116, 114, 115, 85, 77, 97, 33, 131, 204, 213, + 220, 159, 126, 107, 115, 100, 93, 112, 118, 119, 102, 52, 40, 40, 52, 80, + 85, 89, 81, 93, 57, 104, 139, 135, 139, 209, 210, 206, 112, 103, 111, 126, + 131, 140, 159, 165, 159, 143, 118, 68, 41, 30, 40, 59, 44, 69, 124, 131, + 126, 126, 134, 118, 118, 120, 111, 92, 79, 148, 162, 157, 147, 155, 151, 155, + 154, 140, 142, 153, 135, 106, 147, 161, 158, 150, 143, 135, 136, 142, 132, 139, + 85, 25, 112, 144, 146, 138, 138, 140, 140, 136, 142, 116, 92, 42, 87, 142, + 136, 142, 144, 146, 142, 151, 144, 123, 83, 18, 99, 158, 140, 150, 146, 151, + 144, 144, 146, 138, 140, 79, 24, 99, 102, 100, 111, 119, 108, 112, 110, 93, + 60, 96, 157, 159, 153, 159, 165, 158, 148, 147, 136, 118, 68, 120, 148, 144, + 148, 148, 140, 140, 157, 146, 150, 146, 88, 144, 154, 151, 150, 162, 158, 151, + 128, 146, 144, 132, 81, 130, 139, 155, 165, 150, 150, 157, 161, 150, 143, 120, + 122, 55, 111, 135, 118, 132, 128, 139, 132, 142, 127, 110, 100, 40, 120, 167, + 162, 146, 138, 132, 140, 138, 135, 120, 130, 103, 138, 131, 138, 150, 151, 150, + 147, 143, 150, 139, 77, 127, 170, 157, 155, 150, 161, 150, 155, 159, 155, 151, + 103, 120, 171, 167, 155, 167, 169, 143, 163, 162, 154, 138, 85, 116, 165, 163, + 163, 161, 157, 71, 28, 44, 21, 40, 37, 100, 206, 220, 221, 222, 182, 120, + 126, 134, 142, 136, 116, 132, 159, 166, 161, 153, 142, 102, 22, 6, 6, 9, + 14, 16, 21, 14, 13, 61, 65, 57, 41, 42, 45, 51, 41, 42, 48, 49, + 87, 187, 183, 163, 102, 69, 20, 17, 17, 26, 30, 29, 48, 97, 85, 81, + 83, 76, 81, 81, 214, 205, 173, 102, 104, 116, 131, 143, 142, 155, 153, 157, + 157, 151, 138, 119, 118, 26, 16, 14, 25, 38, 32, 33, 38, 41, 37, 32, + 46, 100, 106, 100, 76, 71, 76, 63, 67, 72, 60, 56, 57, 24, 75, 71, + 83, 87, 81, 80, 53, 60, 42, 55, 20, 73, 88, 106, 80, 80, 77, 65, + 72, 77, 79, 55, 91, 100, 88, 96, 97, 103, 88, 85, 88, 89, 80, 45, + 18, 79, 97, 89, 108, 111, 107, 96, 95, 87, 88, 79, 51, 85, 93, 95, + 99, 111, 116, 114, 111, 88, 49, 30, 87, 119, 120, 116, 106, 102, 102, 111, + 96, 106, 114, 85, 45, 111, 127, 118, 114, 102, 115, 124, 128, 107, 102, 81, + 64, 110, 120, 95, 100, 102, 96, 96, 115, 104, 79, 79, 36, 88, 104, 110, + 103, 96, 87, 85, 102, 99, 84, 65, 33, 97, 110, 110, 127, 111, 110, 96, + 104, 112, 102, 91, 42, 84, 116, 107, 102, 107, 103, 96, 102, 107, 83, 64, + 9, 104, 114, 108, 116, 118, 118, 104, 119, 115, 93, 73, 63, 91, 122, 155, + 218, 217, 162, 111, 116, 143, 150, 166, 175, 179, 185, 181, 171, 167, 131, 135, + 147, 143, 136, 123, 33, 22, 18, 36, 55, 59, 59, 64, 71, 72, 71, 60, + 107, 126, 126, 120, 124, 112, 123, 116, 119, 108, 114, 106, 71, 8, 104, 102, + 111, 142, 112, 112, 110, 79, 91, 30, 126, 195, 220, 220, 150, 112, 102, 106, + 93, 100, 116, 116, 120, 114, 45, 37, 33, 46, 76, 87, 84, 72, 91, 61, + 108, 146, 131, 144, 213, 213, 206, 111, 106, 111, 118, 130, 142, 157, 166, 162, + 146, 130, 67, 40, 41, 38, 63, 49, 69, 123, 128, 128, 122, 124, 100, 111, + 135, 99, 97, 83, 151, 154, 142, 135, 140, 148, 154, 134, 130, 143, 154, 124, + 96, 146, 163, 153, 135, 143, 131, 135, 131, 138, 148, 87, 28, 111, 142, 148, + 136, 136, 138, 128, 134, 119, 123, 93, 41, 106, 135, 127, 139, 143, 144, 153, + 148, 138, 132, 84, 22, 100, 151, 142, 144, 144, 143, 142, 143, 154, 134, 127, + 87, 20, 114, 107, 97, 111, 119, 110, 108, 107, 96, 60, 110, 162, 157, 162, + 166, 167, 159, 153, 150, 136, 122, 72, 118, 154, 151, 157, 150, 140, 140, 148, + 138, 146, 146, 56, 150, 153, 153, 150, 157, 150, 144, 127, 144, 142, 138, 85, + 131, 140, 150, 139, 154, 150, 146, 147, 154, 136, 123, 120, 33, 106, 131, 138, + 112, 120, 136, 122, 131, 140, 130, 102, 40, 116, 167, 161, 134, 142, 135, 132, + 132, 131, 115, 120, 104, 135, 157, 148, 147, 148, 155, 146, 144, 143, 153, 81, + 130, 169, 165, 159, 153, 151, 155, 153, 146, 138, 122, 115, 143, 169, 170, 150, + 157, 159, 158, 151, 153, 155, 142, 92, 123, 163, 159, 162, 159, 155, 93, 45, + 20, 20, 37, 45, 161, 209, 224, 214, 206, 159, 116, 119, 139, 144, 138, 120, + 148, 165, 165, 161, 153, 138, 77, 12, 4, 5, 10, 16, 18, 20, 16, 16, + 69, 64, 56, 36, 48, 56, 44, 37, 46, 53, 52, 93, 185, 185, 171, 110, + 71, 24, 16, 16, 28, 32, 30, 34, 93, 91, 79, 89, 79, 81, 83, 217, + 201, 186, 106, 107, 118, 131, 139, 143, 150, 155, 157, 155, 143, 135, 116, 115, + 28, 16, 13, 26, 42, 38, 34, 32, 40, 37, 30, 60, 95, 110, 84, 83, + 72, 75, 75, 73, 67, 69, 53, 53, 24, 81, 72, 67, 67, 71, 76, 52, + 59, 44, 51, 18, 73, 87, 95, 71, 76, 72, 77, 65, 64, 75, 55, 85, + 99, 103, 97, 102, 87, 89, 92, 89, 88, 77, 42, 17, 75, 96, 89, 87, + 100, 100, 93, 93, 88, 87, 75, 44, 79, 97, 108, 102, 112, 102, 97, 88, + 97, 45, 33, 77, 119, 115, 111, 102, 104, 108, 100, 96, 104, 108, 81, 36, + 85, 124, 128, 104, 114, 123, 118, 108, 112, 97, 72, 69, 110, 116, 92, 99, + 108, 97, 97, 85, 97, 97, 77, 40, 92, 110, 106, 110, 106, 87, 87, 84, + 96, 92, 67, 36, 96, 115, 100, 104, 112, 99, 108, 110, 111, 102, 85, 45, + 85, 102, 114, 103, 103, 100, 108, 104, 100, 84, 65, 0, 118, 115, 104, 88, + 119, 115, 124, 122, 115, 100, 71, 55, 85, 124, 115, 220, 222, 189, 114, 114, + 139, 150, 162, 173, 177, 178, 175, 178, 158, 132, 139, 151, 143, 136, 123, 29, + 22, 20, 34, 60, 68, 65, 75, 87, 73, 67, 61, 95, 124, 124, 127, 112, + 122, 116, 115, 119, 106, 111, 108, 75, 10, 103, 107, 110, 112, 139, 124, 115, + 79, 91, 22, 114, 186, 213, 237, 159, 112, 97, 106, 93, 111, 119, 116, 123, + 99, 44, 38, 30, 46, 71, 85, 91, 76, 93, 56, 115, 138, 135, 154, 220, + 220, 208, 107, 100, 111, 123, 130, 144, 155, 167, 162, 147, 139, 68, 45, 26, + 42, 67, 53, 67, 124, 127, 128, 131, 120, 114, 122, 110, 119, 81, 69, 134, + 150, 150, 143, 148, 132, 128, 142, 139, 147, 147, 106, 119, 153, 162, 142, 134, + 136, 142, 131, 140, 134, 139, 89, 29, 119, 132, 142, 128, 139, 132, 136, 134, + 124, 111, 95, 38, 114, 148, 130, 134, 143, 147, 146, 146, 124, 134, 87, 17, + 106, 151, 144, 150, 146, 143, 147, 157, 130, 126, 128, 81, 21, 100, 104, 104, + 110, 116, 115, 106, 103, 85, 60, 103, 161, 150, 163, 162, 161, 157, 163, 159, + 140, 120, 71, 123, 142, 132, 158, 147, 140, 142, 150, 144, 147, 143, 53, 144, + 157, 158, 150, 153, 150, 124, 130, 124, 134, 136, 85, 108, 138, 146, 151, 146, + 148, 140, 148, 150, 154, 128, 120, 26, 103, 138, 136, 130, 116, 130, 132, 130, + 110, 126, 100, 45, 120, 166, 153, 144, 144, 136, 131, 128, 124, 115, 132, 100, + 130, 148, 142, 142, 140, 139, 144, 139, 140, 153, 93, 153, 173, 162, 162, 153, + 151, 158, 155, 134, 147, 144, 110, 154, 165, 161, 165, 153, 151, 135, 146, 140, + 136, 124, 87, 136, 161, 162, 154, 159, 159, 20, 65, 20, 33, 38, 83, 190, + 218, 208, 212, 171, 132, 116, 138, 142, 144, 128, 132, 162, 167, 165, 158, 148, + 130, 36, 8, 5, 6, 10, 17, 20, 29, 17, 14, 76, 63, 49, 40, 57, + 45, 41, 40, 48, 44, 45, 116, 185, 182, 178, 103, 67, 22, 17, 16, 26, + 29, 29, 33, 92, 89, 84, 92, 85, 80, 80, 221, 199, 197, 107, 106, 115, + 127, 136, 143, 147, 151, 157, 151, 142, 135, 115, 114, 25, 14, 10, 25, 46, + 36, 38, 36, 48, 38, 29, 61, 102, 108, 83, 75, 80, 83, 73, 75, 77, + 65, 52, 52, 24, 72, 79, 72, 68, 56, 60, 64, 56, 45, 49, 17, 72, + 92, 103, 77, 77, 83, 61, 79, 67, 75, 51, 89, 102, 99, 91, 88, 97, + 95, 96, 92, 87, 51, 48, 20, 71, 88, 93, 91, 91, 93, 89, 88, 92, + 85, 77, 40, 92, 96, 106, 104, 106, 107, 102, 108, 96, 45, 33, 73, 106, + 114, 108, 92, 108, 108, 91, 102, 100, 96, 88, 46, 83, 123, 131, 126, 100, + 112, 93, 108, 104, 95, 53, 81, 104, 115, 103, 103, 88, 84, 89, 83, 87, + 97, 79, 45, 68, 99, 114, 88, 77, 88, 96, 88, 91, 76, 68, 17, 92, + 107, 106, 100, 99, 91, 100, 108, 102, 97, 87, 51, 57, 96, 111, 112, 116, + 114, 112, 112, 99, 77, 59, 0, 108, 110, 104, 107, 102, 124, 122, 119, 92, + 123, 76, 69, 59, 122, 111, 226, 226, 220, 115, 114, 138, 153, 157, 163, 177, + 179, 177, 177, 148, 136, 154, 154, 143, 135, 123, 30, 22, 18, 38, 67, 63, + 71, 76, 85, 80, 76, 68, 88, 122, 123, 122, 120, 122, 122, 119, 116, 112, + 112, 106, 69, 10, 100, 97, 96, 111, 147, 116, 110, 79, 87, 18, 93, 146, + 193, 237, 165, 112, 108, 107, 110, 118, 114, 120, 114, 69, 42, 36, 32, 46, + 71, 88, 91, 84, 91, 46, 110, 135, 132, 148, 220, 214, 210, 110, 102, 112, + 126, 135, 146, 155, 166, 165, 157, 144, 71, 45, 25, 37, 64, 51, 56, 119, + 122, 131, 126, 124, 127, 116, 106, 112, 81, 24, 126, 154, 136, 127, 138, 142, + 144, 144, 146, 148, 148, 104, 126, 157, 150, 124, 150, 131, 131, 131, 132, 136, + 136, 93, 29, 112, 140, 144, 136, 132, 127, 134, 126, 136, 138, 102, 37, 134, + 143, 132, 131, 142, 142, 142, 143, 127, 119, 89, 13, 111, 148, 146, 146, 144, + 157, 154, 128, 130, 128, 138, 77, 17, 108, 102, 100, 97, 100, 116, 103, 104, + 88, 52, 96, 151, 155, 158, 157, 165, 150, 144, 143, 138, 124, 71, 114, 148, + 143, 154, 143, 140, 144, 148, 139, 151, 144, 53, 148, 153, 162, 144, 146, 161, + 138, 139, 139, 134, 136, 93, 100, 140, 135, 147, 161, 157, 146, 150, 153, 146, + 126, 126, 52, 95, 140, 111, 124, 115, 132, 120, 111, 115, 107, 110, 49, 114, + 127, 158, 140, 135, 136, 132, 134, 126, 119, 122, 92, 132, 142, 143, 142, 138, + 142, 147, 143, 135, 134, 96, 158, 177, 167, 163, 144, 157, 146, 142, 158, 134, + 143, 126, 161, 144, 134, 139, 131, 144, 134, 127, 115, 130, 108, 93, 120, 162, + 146, 144, 157, 163, 64, 25, 18, 41, 45, 114, 189, 213, 204, 204, 134, 136, + 134, 139, 144, 144, 122, 150, 169, 169, 165, 157, 147, 120, 26, 6, 5, 6, + 12, 18, 12, 20, 17, 13, 68, 56, 48, 52, 40, 40, 38, 36, 42, 53, + 46, 126, 185, 182, 166, 99, 61, 22, 16, 14, 30, 38, 33, 37, 83, 99, + 76, 84, 83, 73, 76, 225, 199, 205, 108, 106, 115, 127, 135, 146, 151, 153, + 153, 138, 139, 136, 122, 119, 22, 13, 10, 29, 41, 32, 37, 32, 53, 38, + 29, 63, 92, 92, 80, 49, 49, 68, 71, 53, 55, 59, 57, 61, 37, 84, + 76, 71, 56, 61, 55, 63, 53, 42, 46, 14, 72, 80, 93, 65, 77, 80, + 72, 80, 79, 71, 42, 84, 102, 110, 106, 106, 99, 87, 79, 85, 63, 51, + 46, 21, 57, 77, 81, 63, 73, 92, 83, 67, 73, 83, 69, 40, 79, 89, + 106, 108, 89, 81, 79, 77, 63, 55, 29, 68, 114, 116, 112, 110, 99, 97, + 96, 102, 93, 99, 96, 51, 67, 118, 127, 116, 95, 119, 112, 103, 97, 88, + 52, 67, 103, 114, 103, 97, 85, 88, 80, 83, 83, 88, 80, 42, 64, 79, + 77, 77, 79, 77, 81, 81, 89, 89, 65, 18, 91, 108, 108, 100, 100, 99, + 92, 97, 89, 88, 87, 55, 68, 91, 114, 114, 122, 112, 104, 111, 76, 81, + 69, 6, 107, 110, 100, 107, 89, 111, 115, 118, 107, 114, 63, 65, 48, 119, + 116, 226, 232, 222, 116, 111, 139, 151, 155, 159, 171, 177, 174, 165, 136, 147, + 153, 154, 146, 140, 126, 28, 21, 18, 40, 64, 68, 69, 75, 83, 83, 79, + 68, 77, 115, 124, 127, 115, 119, 120, 114, 114, 110, 103, 89, 68, 12, 92, + 100, 112, 110, 111, 106, 92, 88, 92, 20, 73, 122, 163, 157, 120, 106, 96, + 83, 100, 97, 103, 99, 68, 44, 40, 34, 33, 44, 75, 87, 89, 83, 91, + 48, 114, 134, 123, 122, 213, 224, 220, 110, 97, 112, 127, 136, 146, 155, 169, + 163, 144, 138, 67, 46, 26, 34, 64, 56, 51, 93, 123, 120, 126, 122, 123, + 122, 111, 114, 79, 48, 150, 148, 131, 140, 150, 153, 151, 153, 148, 154, 143, + 100, 131, 162, 140, 142, 139, 134, 134, 139, 134, 139, 135, 95, 32, 122, 138, + 143, 134, 128, 127, 126, 134, 134, 124, 102, 44, 95, 136, 131, 122, 128, 131, + 130, 123, 131, 128, 97, 26, 112, 110, 158, 154, 155, 157, 158, 115, 131, 128, + 131, 93, 30, 102, 97, 97, 96, 102, 99, 114, 103, 91, 56, 104, 154, 148, + 151, 161, 144, 146, 144, 136, 142, 123, 81, 119, 151, 142, 144, 144, 155, 139, + 157, 144, 136, 138, 77, 144, 154, 153, 151, 155, 148, 148, 147, 139, 146, 142, + 110, 93, 120, 138, 135, 116, 110, 118, 135, 123, 123, 126, 123, 52, 116, 142, + 127, 102, 102, 88, 114, 115, 104, 110, 112, 73, 97, 123, 134, 134, 128, 128, + 135, 131, 128, 130, 146, 127, 139, 139, 153, 146, 146, 136, 147, 146, 139, 140, + 135, 126, 174, 171, 142, 144, 142, 140, 142, 135, 130, 135, 135, 142, 128, 130, + 136, 124, 115, 139, 147, 154, 143, 146, 142, 148, 155, 158, 155, 150, 146, 25, + 25, 13, 38, 48, 126, 191, 202, 209, 146, 139, 122, 139, 143, 148, 142, 127, + 162, 171, 169, 165, 155, 143, 106, 18, 6, 4, 6, 9, 17, 16, 30, 14, + 14, 69, 52, 41, 46, 38, 36, 34, 36, 44, 41, 51, 136, 179, 177, 162, + 102, 57, 21, 17, 16, 29, 33, 33, 30, 71, 97, 91, 75, 84, 77, 75, + 225, 208, 210, 108, 107, 116, 131, 144, 143, 147, 146, 139, 131, 136, 134, 122, + 122, 20, 13, 10, 29, 37, 37, 32, 32, 32, 48, 49, 55, 64, 67, 60, + 56, 60, 55, 56, 59, 80, 71, 59, 52, 25, 68, 76, 56, 51, 52, 51, + 49, 46, 53, 52, 21, 72, 88, 85, 67, 63, 63, 57, 67, 67, 65, 46, + 65, 84, 100, 67, 72, 63, 63, 56, 48, 40, 34, 51, 45, 49, 51, 51, + 60, 46, 48, 48, 48, 49, 46, 41, 36, 59, 59, 61, 56, 48, 48, 52, + 52, 44, 44, 59, 59, 93, 106, 99, 83, 93, 99, 102, 88, 87, 102, 95, + 85, 63, 72, 116, 107, 83, 96, 96, 97, 96, 81, 56, 61, 93, 96, 81, + 81, 83, 91, 92, 80, 79, 81, 77, 75, 68, 79, 80, 80, 69, 77, 67, + 84, 79, 84, 68, 30, 97, 91, 93, 92, 91, 91, 89, 92, 87, 88, 72, + 85, 51, 59, 63, 68, 65, 69, 68, 69, 69, 77, 64, 4, 45, 114, 107, + 60, 81, 99, 104, 96, 89, 103, 95, 77, 55, 77, 96, 220, 233, 224, 111, + 108, 132, 147, 151, 150, 157, 170, 170, 165, 143, 158, 158, 157, 148, 140, 126, + 25, 20, 20, 34, 61, 68, 75, 76, 75, 80, 85, 84, 68, 79, 100, 110, + 108, 107, 107, 110, 111, 111, 106, 104, 68, 12, 87, 100, 104, 95, 97, 84, + 87, 88, 88, 36, 57, 77, 96, 118, 87, 56, 48, 37, 34, 37, 37, 37, + 34, 40, 36, 30, 30, 40, 77, 80, 81, 68, 89, 49, 107, 120, 136, 120, + 201, 222, 218, 107, 100, 116, 130, 140, 146, 158, 169, 165, 146, 136, 63, 48, + 49, 33, 64, 63, 53, 63, 92, 100, 99, 107, 107, 116, 106, 106, 93, 68, + 148, 138, 144, 144, 135, 135, 128, 131, 139, 134, 115, 96, 119, 138, 148, 140, + 138, 143, 139, 138, 119, 107, 114, 93, 37, 106, 118, 136, 144, 147, 136, 140, + 131, 122, 97, 104, 44, 102, 122, 140, 128, 128, 127, 124, 108, 119, 111, 96, + 26, 97, 83, 89, 107, 118, 119, 100, 107, 120, 89, 100, 91, 30, 104, 102, + 103, 103, 106, 100, 97, 103, 95, 61, 102, 116, 118, 114, 102, 112, 134, 126, + 142, 128, 116, 95, 83, 134, 126, 139, 124, 134, 131, 138, 132, 128, 139, 37, + 134, 146, 143, 132, 139, 139, 143, 135, 134, 142, 134, 124, 130, 135, 135, 132, + 132, 127, 128, 134, 131, 123, 124, 123, 22, 108, 84, 115, 75, 110, 91, 95, + 118, 114, 96, 107, 111, 118, 115, 122, 122, 120, 119, 123, 127, 124, 112, 131, + 104, 124, 126, 131, 134, 136, 119, 123, 134, 130, 132, 128, 140, 147, 127, 155, + 147, 128, 138, 150, 147, 116, 132, 132, 126, 128, 138, 143, 143, 138, 142, 144, + 126, 107, 102, 95, 147, 99, 147, 163, 163, 173, 14, 17, 17, 40, 48, 150, + 209, 148, 143, 150, 112, 147, 131, 144, 146, 138, 138, 169, 173, 169, 162, 154, + 138, 89, 14, 6, 5, 8, 12, 17, 16, 20, 14, 9, 61, 53, 37, 37, + 29, 34, 38, 33, 45, 42, 48, 151, 181, 175, 163, 95, 53, 21, 17, 16, + 32, 34, 37, 36, 48, 71, 89, 84, 83, 76, 72, 225, 217, 220, 110, 107, + 112, 130, 131, 131, 134, 132, 138, 142, 139, 138, 127, 124, 18, 12, 9, 25, + 28, 30, 36, 38, 34, 38, 37, 40, 46, 44, 41, 46, 48, 46, 51, 48, + 49, 51, 51, 49, 48, 53, 51, 51, 48, 48, 51, 51, 46, 46, 42, 24, + 64, 89, 59, 53, 49, 49, 52, 51, 49, 51, 42, 51, 51, 49, 51, 48, + 45, 44, 44, 42, 40, 36, 30, 20, 20, 18, 20, 18, 16, 16, 16, 14, + 16, 13, 13, 14, 13, 18, 21, 21, 17, 18, 25, 37, 33, 37, 34, 48, + 73, 71, 84, 93, 83, 77, 84, 87, 87, 85, 85, 75, 67, 76, 69, 64, + 56, 48, 46, 46, 55, 48, 38, 51, 55, 63, 59, 59, 81, 83, 81, 64, + 63, 51, 46, 56, 64, 73, 75, 75, 60, 51, 53, 68, 75, 73, 67, 29, + 55, 61, 53, 64, 63, 64, 64, 68, 68, 69, 72, 73, 71, 77, 55, 53, + 46, 32, 24, 21, 29, 34, 28, 0, 24, 24, 34, 30, 36, 40, 46, 51, + 60, 71, 96, 81, 73, 69, 107, 217, 234, 225, 110, 106, 115, 124, 140, 150, + 158, 157, 162, 159, 144, 159, 159, 155, 147, 135, 123, 24, 20, 20, 28, 37, + 53, 53, 63, 68, 71, 75, 71, 71, 88, 91, 93, 92, 95, 93, 96, 96, + 100, 102, 93, 69, 17, 95, 99, 80, 71, 72, 64, 53, 77, 73, 40, 38, + 40, 63, 49, 44, 38, 41, 33, 34, 44, 42, 33, 33, 33, 36, 48, 51, + 51, 53, 56, 55, 57, 91, 46, 68, 68, 84, 123, 191, 224, 216, 108, 104, + 115, 126, 139, 148, 158, 171, 163, 144, 132, 63, 51, 22, 45, 48, 55, 51, + 61, 61, 63, 59, 60, 61, 67, 63, 63, 72, 45, 68, 123, 123, 111, 108, + 120, 123, 115, 112, 118, 112, 110, 119, 118, 118, 122, 124, 116, 116, 104, 93, + 79, 87, 85, 87, 97, 91, 60, 103, 97, 87, 112, 84, 73, 99, 93, 91, + 100, 97, 96, 92, 92, 85, 88, 77, 93, 59, 53, 12, 40, 37, 55, 59, + 53, 59, 73, 73, 77, 89, 104, 91, 73, 91, 95, 89, 84, 89, 95, 92, + 99, 100, 99, 77, 84, 93, 88, 81, 80, 112, 123, 122, 114, 114, 115, 115, + 116, 116, 118, 112, 111, 110, 111, 111, 107, 95, 36, 84, 128, 95, 97, 96, + 130, 97, 103, 104, 119, 111, 102, 97, 114, 107, 106, 103, 99, 99, 100, 100, + 97, 93, 91, 13, 108, 97, 89, 80, 76, 75, 68, 67, 69, 65, 68, 67, + 73, 80, 83, 84, 95, 119, 139, 161, 173, 179, 238, 236, 233, 225, 221, 222, + 220, 228, 220, 213, 209, 198, 153, 126, 142, 139, 143, 114, 150, 140, 193, 204, + 202, 194, 197, 167, 146, 150, 134, 128, 122, 130, 150, 165, 170, 197, 174, 150, + 126, 142, 84, 143, 143, 53, 41, 46, 59, 77, 165, 114, 144, 106, 112, 110, + 135, 135, 143, 153, 144, 144, 173, 174, 166, 158, 146, 131, 44, 9, 5, 6, + 12, 12, 6, 13, 12, 14, 12, 21, 25, 22, 25, 24, 24, 25, 26, 44, + 37, 33, 131, 173, 173, 162, 95, 45, 18, 16, 18, 29, 32, 33, 34, 40, + 42, 42, 44, 48, 80, 60, 229, 224, 222, 111, 104, 112, 128, 123, 123, 122, + 124, 127, 139, 138, 140, 128, 122, 16, 9, 9, 17, 16, 18, 20, 20, 17, + 20, 25, 28, 32, 41, 41, 44, 46, 46, 45, 51, 55, 57, 63, 55, 51, + 63, 71, 60, 73, 80, 93, 127, 110, 51, 46, 56, 49, 44, 44, 42, 42, + 53, 45, 44, 33, 30, 30, 32, 28, 38, 36, 36, 36, 41, 33, 38, 34, + 65, 85, 115, 116, 111, 122, 108, 114, 104, 118, 115, 100, 80, 83, 80, 85, + 102, 103, 88, 80, 65, 49, 37, 32, 25, 18, 18, 16, 16, 13, 13, 14, + 16, 13, 16, 18, 18, 17, 16, 21, 28, 84, 89, 95, 102, 106, 103, 73, + 77, 46, 111, 110, 122, 96, 53, 51, 68, 45, 48, 89, 97, 112, 102, 106, + 115, 119, 116, 104, 88, 75, 65, 45, 44, 64, 30, 17, 17, 17, 17, 13, + 13, 14, 16, 10, 12, 13, 13, 13, 16, 44, 52, 79, 95, 89, 93, 84, + 56, 52, 0, 77, 115, 104, 76, 107, 77, 87, 84, 64, 53, 52, 59, 57, + 60, 97, 209, 221, 214, 100, 97, 110, 111, 107, 119, 136, 151, 157, 162, 139, + 154, 161, 157, 144, 138, 122, 20, 17, 17, 14, 14, 16, 17, 17, 16, 18, + 30, 28, 18, 22, 46, 63, 44, 48, 28, 33, 30, 53, 37, 77, 26, 17, + 100, 53, 44, 42, 42, 38, 44, 36, 32, 33, 30, 32, 34, 34, 41, 37, + 29, 30, 33, 32, 34, 36, 34, 36, 34, 36, 38, 41, 45, 57, 64, 69, + 95, 45, 96, 120, 120, 123, 187, 212, 199, 111, 104, 116, 130, 138, 146, 162, + 170, 165, 143, 120, 57, 53, 22, 36, 25, 34, 9, 9, 9, 6, 6, 8, + 6, 5, 5, 5, 5, 5, 6, 8, 9, 9, 14, 14, 16, 17, 22, 24, + 26, 26, 34, 36, 44, 48, 51, 56, 61, 63, 75, 99, 103, 93, 85, 93, + 79, 84, 89, 84, 79, 87, 83, 85, 96, 102, 108, 103, 99, 96, 93, 97, + 100, 97, 93, 89, 93, 96, 52, 61, 126, 139, 103, 92, 96, 67, 55, 46, + 52, 51, 57, 49, 59, 81, 84, 72, 88, 91, 87, 76, 91, 93, 100, 112, + 103, 103, 96, 95, 91, 88, 72, 60, 59, 63, 52, 53, 48, 49, 46, 53, + 51, 53, 46, 59, 59, 102, 55, 42, 41, 37, 33, 30, 29, 28, 24, 20, + 22, 21, 20, 18, 20, 20, 20, 24, 6, 29, 29, 21, 40, 63, 102, 73, + 77, 84, 110, 135, 171, 177, 190, 199, 190, 181, 169, 165, 155, 159, 165, 151, + 143, 146, 150, 165, 177, 179, 190, 197, 201, 199, 201, 193, 195, 198, 195, 177, + 178, 183, 182, 104, 95, 89, 146, 136, 174, 199, 205, 208, 205, 205, 208, 208, + 205, 213, 216, 210, 212, 208, 212, 208, 198, 205, 202, 161, 123, 150, 65, 56, + 76, 80, 92, 88, 144, 166, 162, 163, 126, 153, 108, 110, 115, 118, 118, 136, + 146, 171, 170, 167, 154, 143, 127, 40, 9, 6, 12, 18, 28, 25, 32, 18, + 26, 28, 30, 40, 42, 44, 48, 55, 57, 49, 34, 49, 36, 122, 171, 170, + 120, 89, 41, 20, 16, 29, 34, 33, 30, 33, 40, 45, 52, 57, 72, 72, + 72, 226, 225, 224, 111, 104, 112, 120, 118, 127, 135, 138, 139, 136, 139, 147, + 132, 128, 20, 12, 9, 20, 29, 37, 38, 45, 59, 153, 161, 177, 183, 185, + 182, 190, 199, 204, 198, 199, 197, 195, 199, 201, 199, 195, 197, 194, 191, 187, + 193, 189, 193, 134, 102, 59, 69, 75, 107, 150, 177, 189, 189, 177, 170, 159, + 158, 161, 148, 139, 122, 108, 118, 116, 110, 119, 124, 100, 142, 169, 189, 195, + 201, 197, 190, 189, 183, 151, 122, 93, 107, 107, 97, 111, 107, 116, 104, 116, + 103, 99, 88, 61, 45, 26, 87, 107, 102, 96, 96, 100, 103, 110, 102, 100, + 92, 95, 96, 91, 89, 106, 106, 106, 108, 103, 92, 84, 41, 115, 130, 103, + 100, 130, 127, 122, 114, 100, 127, 154, 165, 171, 165, 169, 170, 165, 157, 143, + 122, 106, 99, 73, 65, 30, 44, 116, 124, 102, 104, 93, 118, 104, 107, 99, + 96, 89, 99, 115, 104, 97, 95, 106, 91, 93, 106, 81, 56, 2, 100, 118, + 127, 131, 96, 127, 123, 106, 110, 88, 75, 73, 95, 99, 102, 225, 234, 226, + 111, 107, 118, 116, 118, 116, 120, 120, 127, 127, 143, 161, 162, 157, 143, 134, + 115, 22, 21, 20, 38, 49, 51, 56, 53, 55, 53, 61, 53, 34, 59, 112, + 111, 95, 99, 100, 65, 42, 38, 42, 48, 51, 37, 67, 87, 95, 95, 102, + 110, 108, 93, 85, 93, 110, 118, 106, 99, 92, 91, 83, 83, 51, 51, 45, + 41, 44, 53, 63, 63, 63, 69, 84, 91, 85, 89, 99, 42, 120, 122, 130, + 128, 201, 218, 190, 110, 107, 116, 131, 138, 148, 161, 173, 166, 165, 138, 67, + 57, 17, 18, 26, 29, 53, 104, 107, 114, 115, 116, 120, 123, 123, 119, 80, + 49, 104, 132, 147, 140, 139, 142, 151, 144, 139, 136, 142, 131, 143, 159, 151, + 147, 143, 128, 122, 126, 134, 187, 198, 208, 194, 173, 139, 108, 100, 95, 103, + 111, 148, 166, 181, 161, 163, 159, 153, 162, 142, 139, 134, 132, 104, 89, 88, + 85, 42, 123, 148, 167, 169, 151, 154, 119, 115, 120, 132, 110, 110, 135, 171, + 177, 185, 186, 186, 186, 185, 175, 183, 189, 201, 206, 201, 189, 179, 144, 134, + 103, 99, 93, 97, 77, 22, 52, 128, 148, 118, 130, 122, 127, 119, 97, 110, + 51, 59, 138, 151, 140, 143, 155, 151, 140, 161, 163, 161, 131, 128, 167, 170, + 193, 194, 189, 186, 182, 177, 174, 118, 63, 87, 85, 148, 183, 193, 201, 210, + 208, 209, 212, 213, 206, 208, 208, 197, 191, 190, 189, 175, 170, 167, 167, 162, + 157, 153, 166, 171, 178, 191, 193, 177, 179, 171, 162, 171, 171, 170, 187, 167, + 181, 169, 142, 187, 229, 225, 234, 212, 233, 206, 228, 221, 232, 220, 220, 214, + 212, 210, 210, 205, 220, 217, 169, 122, 161, 159, 166, 97, 111, 84, 108, 195, + 199, 234, 197, 110, 111, 114, 130, 134, 140, 128, 138, 154, 174, 171, 158, 148, + 143, 127, 37, 10, 6, 24, 25, 40, 42, 44, 45, 49, 64, 67, 76, 68, + 77, 76, 81, 77, 79, 61, 51, 30, 61, 128, 165, 104, 71, 26, 21, 18, + 32, 46, 46, 46, 41, 45, 81, 91, 87, 87, 73, 71, 230, 228, 224, 111, + 103, 114, 120, 136, 142, 142, 143, 142, 140, 136, 144, 131, 128, 21, 9, 9, + 24, 40, 49, 118, 64, 124, 165, 186, 191, 191, 194, 202, 206, 212, 213, 218, + 226, 229, 230, 233, 234, 236, 234, 240, 233, 241, 242, 242, 236, 230, 230, 225, + 225, 224, 216, 216, 218, 216, 217, 212, 208, 201, 195, 193, 194, 186, 175, 166, + 150, 146, 103, 106, 135, 163, 183, 199, 209, 218, 217, 216, 218, 216, 214, 210, + 205, 199, 181, 130, 111, 97, 87, 92, 96, 102, 108, 107, 107, 104, 81, 59, + 28, 107, 100, 114, 107, 110, 108, 96, 95, 96, 104, 104, 81, 73, 115, 120, + 127, 126, 120, 104, 97, 108, 81, 44, 126, 126, 124, 106, 135, 103, 114, 130, + 146, 186, 212, 222, 220, 217, 216, 210, 205, 201, 193, 190, 171, 162, 103, 67, + 37, 115, 120, 103, 102, 111, 115, 119, 102, 99, 112, 118, 107, 85, 111, 110, + 107, 107, 106, 104, 106, 102, 95, 64, 0, 88, 114, 120, 115, 91, 93, 112, + 111, 92, 103, 107, 59, 95, 119, 102, 233, 240, 226, 110, 102, 112, 130, 136, + 140, 144, 143, 142, 143, 147, 162, 159, 151, 144, 135, 122, 20, 20, 20, 48, + 49, 61, 77, 73, 75, 67, 64, 59, 44, 96, 123, 131, 128, 131, 123, 115, + 106, 119, 112, 95, 99, 110, 118, 107, 112, 107, 115, 124, 126, 106, 116, 111, + 132, 150, 146, 139, 153, 151, 150, 111, 97, 93, 85, 83, 73, 81, 76, 65, + 53, 75, 80, 75, 73, 77, 99, 52, 119, 130, 130, 128, 222, 225, 195, 107, + 104, 114, 130, 140, 147, 161, 171, 166, 148, 142, 67, 68, 75, 79, 81, 110, + 107, 119, 123, 126, 124, 131, 116, 122, 123, 120, 123, 57, 140, 140, 143, 153, + 148, 170, 182, 194, 197, 204, 201, 202, 209, 214, 212, 208, 209, 208, 206, 205, + 208, 212, 212, 213, 210, 205, 198, 198, 174, 170, 183, 162, 171, 190, 195, 206, + 204, 199, 205, 198, 186, 186, 197, 187, 169, 107, 84, 99, 52, 138, 163, 154, + 169, 173, 158, 169, 165, 150, 165, 165, 191, 194, 208, 206, 216, 209, 209, 208, + 209, 213, 212, 216, 221, 218, 220, 217, 214, 212, 195, 179, 143, 116, 108, 77, + 18, 140, 161, 153, 159, 161, 154, 159, 154, 132, 87, 45, 153, 193, 198, 212, + 204, 202, 208, 214, 220, 220, 214, 217, 216, 216, 210, 213, 198, 208, 208, 199, + 170, 189, 171, 87, 76, 118, 177, 193, 199, 206, 208, 212, 217, 221, 220, 218, + 209, 217, 217, 187, 139, 167, 194, 190, 189, 183, 169, 171, 161, 150, 136, 138, + 118, 136, 123, 131, 155, 158, 124, 163, 166, 143, 159, 167, 146, 135, 144, 187, + 208, 174, 161, 136, 136, 140, 142, 171, 204, 209, 214, 209, 204, 205, 210, 213, + 154, 124, 119, 143, 157, 167, 79, 80, 84, 114, 185, 206, 241, 216, 116, 110, + 127, 135, 142, 154, 161, 165, 169, 167, 159, 158, 148, 143, 128, 33, 9, 6, + 20, 34, 36, 53, 44, 55, 65, 61, 65, 71, 71, 71, 56, 77, 64, 68, + 63, 48, 36, 49, 64, 144, 89, 51, 29, 24, 16, 41, 37, 37, 37, 32, + 72, 92, 88, 77, 76, 67, 68, 237, 230, 226, 106, 103, 119, 127, 142, 139, + 144, 147, 146, 140, 136, 142, 130, 127, 21, 10, 10, 20, 33, 106, 41, 59, + 71, 114, 174, 182, 189, 198, 201, 204, 209, 214, 220, 225, 226, 229, 232, 233, + 233, 236, 237, 234, 240, 240, 240, 234, 228, 220, 214, 217, 217, 222, 224, 218, + 214, 214, 210, 195, 197, 183, 174, 189, 177, 175, 130, 92, 128, 147, 174, 194, + 209, 210, 208, 202, 214, 220, 218, 221, 218, 218, 214, 213, 209, 205, 198, 179, + 155, 112, 89, 83, 93, 91, 91, 95, 93, 96, 64, 37, 110, 104, 114, 104, + 99, 88, 85, 85, 87, 85, 87, 64, 87, 127, 110, 96, 124, 124, 116, 89, + 85, 79, 44, 130, 127, 136, 127, 138, 140, 132, 157, 212, 225, 233, 230, 222, + 216, 206, 194, 169, 155, 131, 108, 88, 80, 148, 80, 48, 124, 115, 120, 126, + 122, 119, 114, 104, 115, 107, 95, 73, 110, 118, 115, 97, 99, 108, 103, 97, + 107, 76, 59, 0, 93, 87, 93, 107, 112, 112, 119, 127, 123, 110, 108, 65, + 92, 116, 102, 238, 242, 237, 112, 104, 115, 136, 144, 151, 158, 158, 158, 161, + 158, 155, 151, 147, 147, 138, 128, 22, 20, 22, 45, 68, 67, 64, 73, 73, + 76, 67, 67, 46, 104, 130, 135, 134, 130, 135, 122, 123, 127, 136, 127, 107, + 93, 116, 159, 187, 193, 201, 209, 214, 216, 210, 214, 221, 224, 222, 222, 230, + 229, 221, 216, 220, 201, 206, 204, 208, 199, 174, 95, 55, 51, 71, 71, 77, + 72, 100, 55, 107, 120, 132, 139, 228, 233, 222, 103, 99, 114, 128, 139, 150, + 159, 170, 171, 165, 175, 111, 102, 97, 102, 104, 114, 116, 132, 138, 143, 131, + 132, 130, 142, 131, 126, 122, 122, 95, 138, 128, 126, 143, 193, 201, 202, 190, + 198, 210, 206, 216, 204, 202, 217, 204, 217, 217, 209, 205, 204, 198, 201, 202, + 206, 214, 205, 199, 157, 159, 190, 204, 205, 205, 198, 214, 195, 183, 150, 153, + 138, 128, 142, 131, 116, 73, 96, 53, 126, 140, 157, 150, 153, 166, 150, 144, + 157, 179, 187, 204, 206, 201, 202, 191, 201, 205, 209, 202, 201, 195, 189, 191, + 195, 199, 209, 212, 212, 212, 209, 202, 153, 110, 92, 18, 140, 161, 154, 153, + 150, 147, 148, 158, 151, 114, 61, 159, 194, 197, 190, 208, 214, 225, 225, 218, + 218, 222, 218, 206, 201, 206, 197, 193, 186, 174, 178, 170, 165, 148, 99, 87, + 142, 174, 191, 198, 204, 206, 218, 217, 193, 183, 170, 155, 157, 155, 140, 116, + 142, 165, 202, 191, 169, 157, 142, 139, 138, 136, 132, 127, 135, 135, 140, 142, + 150, 151, 155, 159, 134, 128, 155, 171, 146, 134, 130, 134, 127, 120, 119, 112, + 112, 112, 111, 114, 116, 119, 124, 130, 127, 120, 122, 118, 114, 135, 89, 103, + 112, 68, 72, 87, 99, 199, 210, 206, 191, 146, 114, 120, 140, 162, 165, 166, + 170, 170, 166, 159, 153, 147, 143, 130, 32, 9, 6, 24, 40, 34, 49, 51, + 63, 44, 76, 80, 60, 53, 60, 55, 65, 65, 64, 69, 49, 36, 21, 52, + 139, 85, 51, 24, 18, 18, 40, 40, 37, 36, 37, 80, 92, 84, 75, 71, + 67, 67, 241, 234, 230, 112, 103, 119, 130, 139, 142, 150, 147, 142, 134, 134, + 138, 131, 124, 18, 9, 10, 20, 38, 55, 52, 60, 114, 146, 181, 181, 135, + 167, 144, 148, 148, 146, 140, 139, 138, 136, 131, 132, 130, 127, 126, 134, 127, + 122, 122, 123, 116, 114, 115, 116, 171, 187, 220, 191, 185, 179, 165, 140, 115, + 108, 107, 108, 114, 107, 104, 122, 126, 182, 208, 209, 212, 218, 193, 177, 183, + 181, 167, 157, 147, 151, 150, 153, 154, 177, 191, 191, 194, 122, 99, 72, 87, + 85, 61, 76, 84, 93, 69, 34, 84, 104, 118, 97, 84, 92, 97, 85, 80, + 75, 92, 59, 81, 128, 126, 100, 104, 115, 93, 93, 89, 77, 55, 134, 136, + 120, 132, 138, 143, 151, 216, 236, 238, 232, 222, 197, 147, 120, 106, 99, 92, + 89, 77, 57, 60, 80, 72, 29, 81, 112, 110, 112, 103, 96, 91, 97, 95, + 111, 99, 56, 103, 114, 108, 99, 108, 103, 102, 96, 107, 79, 53, 0, 92, + 96, 111, 110, 110, 100, 102, 111, 110, 115, 81, 46, 97, 127, 91, 237, 242, + 238, 116, 106, 115, 142, 147, 155, 155, 165, 165, 170, 165, 165, 161, 150, 144, + 140, 128, 18, 17, 18, 45, 72, 69, 67, 72, 75, 91, 67, 67, 37, 99, + 126, 126, 128, 134, 132, 128, 132, 122, 119, 106, 67, 118, 136, 123, 179, 202, + 209, 216, 214, 220, 221, 225, 225, 229, 230, 234, 234, 230, 230, 229, 226, 228, + 226, 225, 222, 220, 195, 104, 61, 56, 72, 80, 71, 81, 96, 56, 79, 114, + 130, 128, 236, 238, 232, 106, 99, 114, 128, 139, 148, 161, 170, 174, 170, 146, + 177, 143, 148, 191, 204, 209, 210, 210, 212, 212, 209, 209, 212, 209, 204, 197, + 153, 119, 122, 126, 85, 139, 147, 146, 208, 217, 199, 214, 216, 216, 191, 175, + 155, 165, 186, 204, 202, 201, 185, 186, 165, 177, 174, 170, 169, 166, 153, 139, + 177, 204, 213, 212, 201, 198, 175, 154, 130, 123, 123, 120, 119, 122, 128, 80, + 73, 88, 49, 126, 142, 157, 165, 147, 154, 162, 131, 148, 178, 194, 212, 214, + 190, 179, 153, 151, 150, 155, 148, 147, 139, 135, 134, 136, 139, 157, 163, 166, + 177, 187, 198, 183, 123, 95, 24, 96, 163, 153, 150, 153, 147, 153, 153, 155, + 127, 57, 153, 191, 204, 208, 225, 241, 212, 224, 224, 222, 216, 202, 193, 205, + 198, 190, 182, 119, 107, 103, 95, 106, 103, 93, 88, 136, 179, 191, 206, 214, + 195, 183, 162, 138, 143, 134, 135, 136, 134, 140, 108, 118, 158, 171, 201, 181, + 158, 163, 139, 138, 130, 140, 139, 144, 143, 142, 144, 148, 150, 155, 148, 123, + 122, 136, 166, 147, 153, 127, 124, 123, 123, 122, 123, 119, 112, 112, 106, 112, + 107, 114, 111, 112, 114, 115, 127, 120, 81, 80, 122, 110, 45, 63, 73, 81, + 199, 213, 236, 195, 119, 111, 132, 147, 162, 169, 165, 167, 167, 167, 161, 155, + 150, 143, 123, 25, 8, 5, 18, 36, 42, 48, 52, 63, 45, 77, 75, 55, + 61, 51, 52, 64, 81, 79, 59, 44, 36, 24, 53, 124, 88, 72, 49, 25, + 20, 36, 30, 37, 25, 30, 88, 95, 77, 81, 73, 67, 60, 242, 236, 230, + 111, 104, 116, 131, 138, 143, 144, 138, 134, 131, 134, 134, 128, 120, 18, 10, + 8, 18, 33, 37, 55, 34, 71, 104, 136, 111, 147, 123, 111, 111, 115, 114, + 103, 112, 116, 114, 106, 107, 107, 108, 106, 106, 103, 106, 103, 103, 103, 103, + 102, 103, 107, 108, 108, 106, 103, 102, 102, 100, 102, 103, 106, 108, 111, 114, + 118, 123, 126, 198, 208, 206, 209, 190, 157, 131, 116, 111, 112, 111, 108, 112, + 115, 115, 118, 122, 139, 140, 170, 165, 102, 72, 95, 75, 87, 87, 81, 88, + 65, 37, 102, 114, 111, 97, 100, 92, 115, 85, 76, 73, 87, 56, 89, 128, + 120, 100, 88, 91, 84, 89, 88, 75, 49, 124, 136, 127, 150, 144, 153, 214, + 234, 242, 241, 222, 167, 97, 87, 79, 79, 79, 77, 68, 63, 49, 44, 61, + 72, 48, 85, 107, 114, 100, 95, 91, 91, 89, 93, 102, 91, 68, 104, 116, + 100, 100, 111, 111, 97, 103, 108, 93, 53, 4, 89, 107, 112, 103, 118, 127, + 120, 116, 114, 107, 80, 46, 89, 108, 88, 241, 245, 240, 116, 107, 115, 142, + 151, 159, 161, 169, 174, 175, 173, 167, 161, 151, 146, 138, 124, 16, 18, 21, + 44, 68, 64, 72, 71, 83, 80, 71, 61, 49, 92, 126, 127, 116, 126, 134, + 127, 130, 116, 103, 96, 68, 114, 132, 147, 132, 154, 174, 208, 218, 218, 220, + 225, 232, 232, 234, 224, 241, 241, 237, 226, 237, 238, 234, 212, 240, 240, 195, + 103, 55, 46, 80, 84, 71, 84, 95, 69, 63, 119, 130, 127, 237, 242, 236, + 107, 100, 112, 126, 139, 151, 158, 170, 175, 175, 169, 185, 190, 197, 204, 210, + 214, 213, 212, 212, 210, 212, 210, 210, 209, 206, 202, 201, 191, 144, 131, 130, + 128, 97, 123, 135, 151, 138, 131, 132, 122, 115, 112, 108, 114, 111, 118, 116, + 114, 112, 112, 111, 108, 111, 116, 115, 114, 151, 139, 174, 210, 208, 199, 202, + 154, 128, 124, 122, 119, 126, 126, 128, 138, 111, 69, 60, 73, 40, 127, 142, + 153, 155, 154, 151, 161, 157, 163, 193, 193, 182, 189, 174, 139, 118, 115, 114, + 114, 114, 114, 111, 110, 111, 112, 112, 116, 118, 122, 126, 132, 142, 181, 150, + 104, 22, 111, 162, 157, 153, 151, 148, 148, 146, 155, 127, 64, 92, 111, 175, + 194, 185, 174, 161, 138, 130, 119, 103, 97, 102, 97, 100, 96, 89, 85, 85, + 81, 81, 80, 80, 93, 89, 138, 181, 190, 193, 186, 144, 138, 122, 123, 138, + 142, 143, 138, 148, 134, 99, 102, 128, 147, 171, 214, 177, 162, 154, 147, 142, + 139, 143, 142, 140, 140, 144, 144, 139, 130, 154, 123, 88, 122, 142, 158, 159, + 169, 147, 155, 132, 150, 144, 139, 130, 126, 122, 123, 120, 115, 126, 116, 120, + 127, 122, 79, 72, 73, 102, 118, 22, 57, 79, 65, 195, 216, 242, 189, 127, + 115, 132, 155, 165, 169, 170, 171, 177, 169, 162, 155, 148, 140, 126, 29, 8, + 6, 18, 33, 36, 40, 48, 59, 41, 65, 69, 49, 71, 52, 41, 56, 42, + 46, 53, 41, 38, 29, 61, 119, 114, 87, 61, 46, 34, 36, 32, 33, 25, + 56, 87, 88, 81, 76, 72, 61, 59, 245, 237, 236, 107, 104, 116, 128, 138, + 143, 134, 132, 131, 140, 139, 139, 132, 126, 18, 9, 8, 20, 29, 37, 67, + 53, 36, 65, 103, 111, 118, 124, 111, 112, 99, 110, 115, 111, 110, 108, 112, + 114, 114, 114, 114, 111, 114, 115, 116, 118, 120, 122, 120, 116, 104, 103, 100, + 103, 103, 104, 103, 107, 112, 116, 120, 123, 126, 127, 124, 128, 120, 150, 210, + 186, 159, 138, 111, 127, 127, 126, 124, 124, 124, 124, 124, 123, 122, 120, 114, + 116, 120, 143, 108, 75, 87, 76, 79, 81, 84, 88, 67, 38, 100, 114, 114, + 110, 108, 87, 111, 88, 75, 84, 87, 52, 83, 119, 115, 104, 103, 99, 96, + 91, 88, 77, 55, 132, 140, 154, 135, 147, 202, 233, 244, 244, 234, 170, 114, + 80, 67, 57, 52, 49, 53, 51, 51, 38, 45, 51, 75, 49, 56, 118, 115, + 96, 93, 93, 97, 93, 88, 99, 96, 65, 103, 114, 99, 110, 112, 100, 97, + 104, 102, 103, 57, 1, 96, 102, 116, 100, 104, 100, 106, 112, 116, 97, 72, + 57, 80, 118, 91, 240, 246, 241, 114, 103, 115, 140, 154, 161, 167, 173, 182, + 183, 181, 170, 165, 154, 147, 136, 126, 16, 16, 20, 41, 69, 71, 68, 75, + 79, 84, 69, 61, 49, 93, 123, 124, 126, 131, 124, 130, 126, 115, 102, 106, + 63, 107, 139, 126, 146, 143, 144, 146, 157, 162, 157, 146, 144, 146, 146, 147, + 165, 158, 154, 169, 177, 151, 147, 161, 177, 142, 126, 96, 48, 51, 83, 83, + 77, 84, 87, 92, 42, 106, 120, 126, 240, 242, 238, 111, 100, 112, 127, 138, + 151, 161, 171, 178, 178, 174, 170, 142, 186, 197, 202, 210, 212, 212, 212, 210, + 210, 210, 209, 209, 209, 205, 201, 194, 191, 182, 177, 131, 127, 126, 95, 97, + 104, 112, 97, 110, 108, 110, 107, 108, 107, 112, 111, 111, 112, 112, 114, 114, + 114, 116, 119, 119, 148, 143, 167, 199, 191, 195, 140, 126, 126, 123, 132, 131, + 135, 132, 139, 138, 100, 57, 57, 79, 45, 124, 142, 150, 148, 155, 151, 139, + 147, 166, 166, 173, 154, 154, 124, 114, 122, 124, 123, 119, 120, 118, 122, 120, + 120, 120, 120, 118, 118, 119, 119, 118, 119, 131, 163, 111, 26, 102, 155, 153, + 157, 154, 153, 153, 151, 148, 135, 103, 84, 88, 88, 95, 93, 88, 95, 96, + 87, 87, 84, 88, 84, 89, 89, 87, 85, 87, 93, 116, 119, 122, 120, 97, + 91, 142, 206, 198, 163, 126, 126, 132, 139, 146, 140, 143, 142, 142, 153, 123, + 85, 72, 112, 139, 142, 154, 208, 175, 157, 158, 155, 150, 151, 151, 158, 155, + 158, 157, 154, 147, 123, 122, 114, 118, 131, 131, 147, 158, 159, 150, 139, 189, + 195, 157, 154, 139, 139, 139, 134, 140, 140, 140, 142, 138, 77, 67, 65, 84, + 93, 111, 14, 60, 56, 72, 197, 217, 244, 162, 132, 114, 134, 157, 165, 169, + 173, 174, 179, 174, 170, 153, 147, 139, 127, 28, 9, 6, 22, 30, 38, 49, + 42, 53, 46, 73, 72, 45, 65, 59, 42, 42, 84, 44, 52, 37, 38, 21, + 51, 116, 114, 80, 81, 64, 53, 55, 28, 28, 21, 60, 87, 81, 83, 67, + 88, 91, 61, 245, 237, 238, 112, 99, 118, 128, 139, 132, 143, 146, 147, 154, + 153, 146, 135, 130, 18, 9, 8, 20, 33, 38, 51, 41, 61, 32, 49, 103, + 72, 83, 97, 110, 128, 139, 116, 119, 122, 144, 123, 127, 131, 140, 128, 127, + 130, 144, 134, 136, 144, 146, 139, 139, 130, 122, 119, 119, 120, 120, 122, 126, + 131, 138, 140, 144, 146, 146, 134, 130, 107, 124, 139, 131, 108, 132, 132, 150, + 147, 136, 135, 136, 134, 135, 135, 135, 132, 132, 127, 126, 123, 119, 122, 77, + 72, 87, 75, 79, 84, 84, 68, 44, 95, 108, 108, 107, 110, 95, 115, 100, + 73, 80, 75, 48, 79, 119, 116, 89, 99, 77, 106, 104, 104, 93, 89, 135, + 163, 157, 157, 190, 225, 244, 246, 241, 218, 130, 87, 63, 38, 37, 44, 38, + 38, 42, 49, 45, 49, 46, 112, 52, 51, 116, 111, 95, 96, 97, 99, 97, + 93, 91, 93, 60, 99, 115, 102, 111, 104, 97, 97, 97, 106, 83, 55, 1, + 95, 102, 95, 103, 103, 106, 107, 114, 108, 96, 60, 68, 83, 115, 111, 245, + 248, 242, 120, 104, 115, 139, 151, 161, 169, 175, 183, 182, 181, 181, 167, 150, + 146, 138, 127, 16, 18, 18, 41, 67, 68, 71, 76, 85, 80, 69, 65, 48, + 81, 112, 126, 127, 126, 130, 131, 114, 93, 93, 84, 63, 114, 131, 127, 148, + 148, 131, 134, 136, 134, 134, 138, 134, 131, 134, 138, 136, 139, 140, 142, 140, + 143, 132, 135, 131, 131, 106, 72, 42, 40, 83, 80, 76, 81, 84, 88, 30, + 104, 130, 128, 241, 246, 241, 114, 103, 115, 131, 139, 151, 161, 171, 178, 181, + 178, 171, 173, 154, 150, 148, 146, 144, 142, 140, 140, 139, 138, 138, 139, 135, + 134, 132, 131, 134, 136, 138, 132, 136, 127, 128, 123, 126, 126, 123, 122, 120, + 120, 119, 118, 120, 120, 119, 119, 120, 123, 123, 123, 124, 126, 128, 130, 123, + 139, 136, 177, 208, 142, 130, 134, 138, 142, 142, 144, 142, 142, 143, 139, 89, + 55, 55, 75, 25, 119, 138, 147, 151, 144, 143, 140, 142, 138, 134, 127, 128, + 126, 116, 110, 104, 107, 119, 118, 128, 127, 127, 128, 131, 130, 131, 130, 131, + 131, 131, 128, 126, 123, 169, 122, 68, 71, 140, 161, 159, 150, 144, 147, 148, + 143, 143, 124, 61, 107, 103, 92, 95, 99, 99, 100, 97, 107, 104, 108, 111, + 114, 115, 116, 119, 115, 120, 128, 131, 134, 131, 111, 103, 135, 182, 175, 140, + 122, 139, 142, 147, 146, 147, 144, 144, 146, 147, 106, 67, 71, 103, 122, 127, + 143, 162, 193, 174, 147, 136, 163, 162, 162, 162, 166, 166, 169, 165, 162, 151, + 142, 123, 88, 124, 130, 134, 136, 148, 144, 140, 198, 187, 179, 175, 157, 147, + 147, 151, 140, 146, 151, 144, 134, 73, 63, 59, 75, 93, 99, 17, 51, 49, + 60, 206, 222, 230, 170, 122, 115, 135, 154, 165, 170, 171, 173, 178, 174, 169, + 157, 146, 142, 130, 30, 9, 9, 26, 38, 41, 46, 48, 51, 45, 69, 63, + 46, 51, 59, 55, 41, 42, 48, 40, 36, 32, 18, 49, 111, 96, 61, 63, + 64, 38, 92, 55, 26, 20, 71, 88, 75, 76, 67, 83, 72, 60, 245, 241, + 240, 111, 99, 115, 128, 142, 144, 157, 161, 166, 167, 161, 148, 138, 132, 18, + 9, 10, 16, 25, 36, 34, 51, 77, 52, 34, 46, 91, 89, 92, 171, 185, + 166, 118, 138, 165, 130, 134, 143, 155, 138, 139, 143, 154, 140, 144, 151, 146, + 150, 153, 151, 148, 143, 140, 139, 139, 143, 146, 147, 150, 153, 158, 158, 157, + 158, 151, 132, 139, 106, 104, 142, 136, 107, 76, 68, 83, 110, 127, 161, 138, + 140, 159, 142, 142, 140, 138, 136, 132, 123, 139, 95, 59, 80, 84, 81, 75, + 91, 71, 44, 51, 104, 110, 120, 110, 93, 115, 99, 67, 84, 69, 48, 106, + 108, 116, 104, 111, 107, 123, 143, 159, 166, 175, 201, 216, 222, 226, 229, 242, + 246, 248, 241, 178, 102, 53, 63, 53, 65, 55, 65, 61, 57, 56, 56, 56, + 60, 59, 67, 45, 92, 107, 99, 99, 102, 99, 104, 99, 93, 93, 56, 96, + 107, 99, 110, 103, 99, 100, 100, 107, 88, 53, 4, 91, 106, 108, 114, 111, + 111, 111, 111, 112, 85, 41, 53, 77, 112, 96, 244, 249, 245, 118, 104, 114, + 142, 154, 159, 167, 174, 179, 182, 181, 179, 170, 151, 144, 139, 127, 14, 16, + 22, 37, 61, 65, 71, 72, 80, 71, 72, 61, 46, 75, 104, 119, 132, 124, + 123, 116, 114, 91, 96, 89, 51, 116, 130, 135, 126, 127, 119, 120, 157, 158, + 131, 140, 143, 147, 148, 148, 142, 142, 144, 144, 142, 136, 138, 135, 132, 120, + 103, 52, 38, 40, 80, 84, 77, 85, 85, 87, 37, 103, 123, 131, 238, 246, + 244, 114, 104, 116, 131, 140, 151, 162, 173, 177, 179, 178, 165, 155, 126, 102, + 95, 112, 114, 127, 127, 128, 124, 124, 122, 120, 115, 115, 116, 116, 114, 115, + 112, 112, 111, 111, 108, 114, 124, 116, 116, 178, 127, 119, 120, 127, 126, 128, + 130, 128, 130, 131, 134, 134, 134, 134, 136, 138, 136, 144, 138, 139, 136, 134, + 139, 148, 153, 153, 153, 151, 150, 148, 146, 128, 72, 53, 46, 75, 44, 100, + 136, 136, 147, 146, 147, 146, 135, 127, 119, 111, 99, 95, 84, 81, 85, 87, + 96, 108, 114, 119, 130, 128, 135, 135, 136, 134, 136, 138, 140, 139, 136, 134, + 131, 140, 95, 34, 114, 140, 123, 124, 140, 144, 147, 143, 139, 123, 95, 123, + 108, 92, 118, 116, 157, 106, 114, 119, 120, 120, 123, 127, 126, 128, 127, 126, + 126, 136, 138, 140, 140, 134, 108, 126, 171, 142, 135, 146, 151, 155, 151, 158, + 159, 151, 157, 158, 150, 92, 65, 65, 79, 107, 126, 134, 146, 186, 191, 165, + 140, 140, 159, 171, 170, 170, 174, 174, 177, 177, 173, 155, 134, 104, 110, 102, + 128, 136, 136, 146, 151, 197, 198, 195, 165, 169, 155, 154, 154, 158, 155, 153, + 142, 142, 65, 57, 55, 64, 68, 75, 10, 46, 48, 53, 206, 224, 236, 142, + 123, 114, 134, 147, 162, 167, 169, 171, 178, 175, 173, 158, 150, 140, 131, 26, + 8, 6, 21, 38, 44, 44, 59, 63, 36, 68, 56, 48, 48, 49, 59, 42, + 38, 37, 36, 34, 32, 21, 46, 115, 130, 73, 72, 72, 73, 44, 55, 29, + 16, 68, 83, 75, 75, 67, 76, 67, 56, 248, 244, 240, 111, 100, 115, 130, + 146, 154, 166, 171, 170, 171, 163, 151, 138, 132, 14, 9, 8, 16, 33, 36, + 34, 40, 55, 53, 37, 36, 72, 79, 88, 199, 195, 132, 110, 120, 140, 138, + 158, 163, 143, 143, 153, 158, 148, 154, 150, 158, 157, 155, 167, 167, 170, 163, + 155, 153, 153, 159, 162, 161, 165, 165, 167, 169, 169, 167, 163, 146, 147, 148, + 142, 111, 64, 41, 29, 33, 44, 83, 118, 138, 178, 185, 185, 173, 177, 175, + 162, 142, 139, 131, 122, 111, 64, 59, 79, 77, 76, 77, 75, 59, 45, 96, + 97, 85, 108, 99, 100, 76, 76, 72, 57, 71, 103, 100, 142, 155, 183, 206, + 228, 232, 244, 245, 250, 249, 252, 252, 250, 250, 250, 250, 246, 222, 143, 99, + 68, 36, 57, 59, 60, 59, 59, 59, 60, 65, 63, 57, 60, 64, 57, 88, + 114, 108, 108, 110, 104, 111, 103, 91, 88, 59, 96, 111, 100, 103, 108, 103, + 118, 107, 97, 93, 51, 5, 96, 118, 106, 122, 118, 112, 118, 114, 106, 87, + 42, 56, 80, 110, 92, 244, 249, 245, 115, 104, 114, 139, 151, 158, 166, 171, + 175, 182, 181, 181, 173, 153, 146, 139, 128, 13, 18, 18, 37, 64, 67, 73, + 69, 69, 75, 68, 61, 57, 63, 100, 103, 107, 103, 104, 104, 87, 91, 93, + 89, 57, 87, 124, 127, 120, 119, 116, 115, 123, 106, 115, 179, 140, 132, 136, + 151, 154, 157, 157, 159, 159, 162, 153, 158, 127, 119, 104, 44, 34, 38, 71, + 69, 85, 89, 73, 84, 55, 96, 119, 131, 230, 248, 245, 114, 104, 115, 131, + 142, 151, 161, 173, 178, 179, 175, 165, 134, 76, 48, 45, 45, 83, 102, 115, + 114, 118, 116, 115, 115, 116, 115, 118, 119, 118, 114, 72, 83, 107, 104, 106, + 106, 107, 115, 116, 182, 183, 128, 112, 131, 142, 132, 132, 135, 135, 136, 139, + 140, 142, 143, 144, 144, 144, 138, 142, 135, 128, 150, 155, 158, 159, 154, 154, + 153, 148, 150, 143, 99, 52, 45, 45, 69, 46, 76, 130, 132, 132, 123, 107, + 88, 92, 93, 95, 77, 93, 92, 91, 91, 102, 95, 88, 84, 104, 123, 131, + 175, 178, 174, 155, 162, 174, 161, 161, 157, 146, 144, 132, 161, 118, 64, 57, + 122, 142, 127, 127, 128, 142, 144, 143, 110, 91, 92, 114, 119, 103, 118, 158, + 175, 115, 115, 124, 135, 131, 131, 134, 134, 132, 132, 134, 138, 144, 144, 146, + 144, 139, 106, 112, 143, 151, 154, 161, 161, 161, 158, 158, 158, 158, 157, 123, + 76, 68, 63, 63, 107, 111, 127, 135, 142, 194, 179, 148, 132, 143, 161, 169, + 175, 177, 181, 182, 182, 182, 175, 148, 107, 100, 102, 127, 135, 147, 142, 158, + 206, 204, 222, 171, 173, 161, 155, 158, 157, 158, 153, 139, 138, 59, 53, 52, + 45, 88, 87, 14, 20, 40, 46, 213, 222, 238, 144, 107, 116, 136, 151, 159, + 163, 166, 174, 177, 174, 170, 161, 143, 138, 128, 30, 8, 8, 22, 36, 37, + 44, 40, 49, 37, 73, 73, 46, 33, 33, 36, 33, 34, 30, 33, 34, 32, + 28, 51, 69, 91, 77, 17, 25, 21, 21, 20, 22, 14, 36, 61, 60, 51, + 51, 68, 59, 56, 248, 245, 241, 108, 100, 112, 128, 144, 157, 170, 173, 170, + 171, 165, 151, 138, 131, 14, 8, 9, 16, 18, 28, 30, 29, 34, 29, 32, + 41, 75, 88, 84, 202, 201, 175, 116, 119, 126, 143, 144, 151, 163, 161, 150, + 163, 154, 158, 157, 157, 163, 175, 178, 185, 190, 191, 186, 167, 165, 167, 174, + 173, 174, 174, 174, 175, 177, 174, 170, 151, 151, 150, 116, 64, 29, 30, 26, + 22, 30, 61, 91, 126, 182, 185, 199, 189, 183, 158, 178, 170, 157, 139, 126, + 123, 76, 49, 57, 73, 76, 75, 71, 72, 63, 56, 60, 67, 65, 69, 68, + 69, 69, 59, 88, 100, 130, 189, 222, 240, 245, 246, 249, 252, 255, 255, 255, + 253, 255, 255, 255, 253, 253, 250, 241, 182, 134, 103, 64, 33, 56, 53, 53, + 53, 57, 56, 59, 59, 64, 57, 64, 61, 59, 59, 76, 81, 79, 91, 85, + 88, 87, 85, 89, 56, 92, 99, 99, 87, 92, 92, 95, 89, 91, 77, 51, + 5, 89, 102, 106, 111, 106, 104, 104, 104, 92, 84, 37, 61, 75, 108, 87, + 244, 248, 244, 114, 100, 115, 140, 151, 159, 165, 167, 170, 179, 181, 181, 167, + 157, 146, 138, 126, 12, 17, 18, 37, 60, 60, 60, 69, 72, 71, 79, 73, + 69, 69, 76, 83, 76, 80, 84, 88, 81, 87, 93, 80, 52, 92, 119, 115, + 112, 112, 115, 115, 116, 112, 102, 183, 186, 132, 131, 138, 143, 153, 157, 161, + 161, 155, 159, 155, 132, 120, 104, 40, 33, 37, 57, 60, 71, 80, 65, 67, + 61, 67, 96, 127, 234, 246, 242, 119, 104, 115, 131, 143, 148, 159, 173, 179, + 178, 187, 154, 88, 55, 36, 29, 25, 46, 96, 140, 169, 174, 167, 126, 159, + 161, 158, 154, 128, 124, 119, 88, 63, 97, 103, 104, 103, 108, 112, 111, 170, + 193, 179, 120, 123, 139, 140, 142, 142, 144, 144, 146, 148, 148, 148, 148, 153, + 151, 148, 146, 147, 161, 159, 161, 158, 154, 142, 136, 128, 116, 114, 92, 57, + 44, 41, 45, 68, 46, 67, 77, 84, 77, 85, 92, 89, 99, 103, 106, 85, + 114, 108, 110, 104, 102, 100, 100, 100, 108, 126, 185, 194, 195, 187, 179, 179, + 181, 178, 171, 175, 165, 153, 144, 131, 134, 91, 34, 72, 142, 143, 123, 130, + 127, 124, 143, 127, 92, 85, 111, 118, 110, 122, 158, 183, 170, 112, 115, 134, + 136, 140, 140, 138, 142, 139, 138, 150, 155, 158, 155, 154, 148, 151, 159, 159, + 162, 162, 158, 155, 148, 142, 135, 131, 130, 110, 73, 59, 55, 64, 61, 97, + 100, 114, 120, 119, 159, 198, 174, 140, 132, 144, 161, 166, 174, 179, 182, 182, + 186, 183, 170, 132, 96, 114, 124, 138, 143, 142, 181, 221, 221, 197, 183, 178, + 165, 163, 166, 165, 155, 153, 138, 134, 55, 51, 48, 68, 85, 99, 5, 5, + 33, 46, 201, 224, 238, 134, 104, 114, 135, 151, 161, 165, 173, 174, 177, 169, + 162, 162, 144, 136, 130, 33, 6, 9, 22, 22, 38, 42, 36, 45, 40, 65, + 59, 32, 33, 32, 36, 32, 32, 30, 34, 33, 28, 26, 34, 22, 12, 10, + 10, 13, 10, 8, 10, 10, 14, 20, 21, 25, 32, 32, 38, 59, 57, 246, + 245, 240, 108, 99, 114, 134, 144, 157, 170, 177, 175, 167, 162, 148, 136, 126, + 13, 8, 8, 13, 12, 26, 29, 22, 24, 24, 22, 28, 41, 79, 84, 209, + 204, 201, 118, 112, 124, 140, 171, 170, 151, 162, 158, 159, 165, 169, 171, 175, + 178, 182, 186, 177, 161, 181, 190, 197, 189, 170, 186, 185, 183, 178, 190, 185, + 181, 185, 181, 187, 157, 153, 106, 49, 29, 22, 20, 18, 20, 52, 85, 122, + 189, 197, 170, 175, 191, 189, 167, 165, 169, 143, 131, 138, 85, 49, 49, 65, + 71, 69, 65, 67, 65, 71, 69, 65, 69, 69, 67, 72, 55, 99, 108, 154, + 225, 246, 248, 248, 250, 252, 253, 255, 255, 248, 241, 237, 237, 236, 232, 229, + 222, 218, 186, 148, 138, 110, 64, 60, 53, 59, 57, 57, 63, 60, 61, 63, + 63, 64, 65, 63, 61, 69, 69, 71, 72, 71, 73, 72, 72, 71, 71, 67, + 68, 59, 68, 68, 72, 56, 63, 61, 57, 49, 56, 8, 28, 51, 55, 59, + 57, 59, 56, 71, 63, 38, 21, 79, 63, 100, 95, 245, 248, 244, 115, 100, + 110, 136, 148, 159, 166, 171, 178, 179, 182, 173, 163, 154, 144, 136, 128, 13, + 18, 20, 44, 46, 51, 52, 49, 53, 49, 46, 53, 55, 52, 53, 65, 64, + 61, 61, 59, 60, 61, 59, 67, 76, 69, 77, 68, 65, 103, 108, 103, 107, + 111, 93, 162, 191, 179, 128, 131, 143, 143, 153, 157, 155, 155, 158, 157, 135, + 124, 95, 36, 30, 33, 56, 55, 60, 77, 76, 61, 59, 65, 95, 128, 241, + 248, 245, 119, 106, 116, 131, 142, 151, 162, 174, 178, 174, 165, 120, 56, 40, + 28, 36, 28, 44, 83, 157, 185, 135, 169, 161, 159, 163, 174, 148, 153, 127, + 123, 114, 59, 63, 87, 102, 103, 102, 115, 107, 139, 202, 199, 130, 119, 130, + 154, 148, 150, 150, 150, 151, 151, 151, 154, 154, 154, 158, 163, 166, 163, 163, + 161, 148, 118, 83, 63, 44, 40, 38, 41, 40, 36, 36, 40, 41, 63, 41, + 81, 72, 76, 77, 89, 110, 143, 197, 210, 220, 221, 218, 210, 199, 189, 131, + 120, 116, 116, 130, 195, 220, 173, 198, 191, 193, 190, 182, 186, 185, 178, 173, + 165, 151, 139, 155, 114, 40, 44, 95, 114, 120, 124, 124, 127, 132, 134, 110, + 81, 103, 122, 87, 112, 148, 191, 186, 123, 114, 123, 135, 147, 142, 142, 142, + 150, 153, 159, 163, 163, 163, 161, 159, 163, 162, 162, 158, 143, 114, 88, 63, + 52, 48, 45, 49, 51, 51, 56, 56, 48, 56, 57, 96, 104, 114, 122, 120, + 177, 190, 155, 128, 127, 150, 161, 167, 174, 178, 183, 187, 189, 183, 146, 103, + 93, 102, 120, 138, 139, 201, 220, 210, 210, 182, 171, 171, 170, 170, 167, 158, + 154, 144, 130, 49, 46, 46, 60, 84, 83, 20, 29, 20, 41, 193, 225, 221, + 132, 114, 115, 135, 150, 159, 166, 170, 174, 174, 159, 165, 155, 144, 139, 131, + 41, 9, 9, 12, 17, 18, 24, 46, 42, 37, 33, 36, 26, 21, 20, 18, + 16, 13, 13, 9, 13, 13, 24, 10, 32, 36, 37, 40, 44, 41, 46, 37, + 21, 12, 46, 89, 91, 69, 73, 72, 64, 59, 248, 245, 232, 110, 100, 112, + 132, 142, 157, 169, 177, 174, 169, 165, 148, 132, 130, 17, 9, 9, 10, 10, + 9, 17, 21, 22, 20, 21, 26, 36, 81, 87, 212, 213, 210, 120, 131, 120, + 136, 167, 170, 158, 161, 162, 171, 181, 181, 181, 179, 177, 185, 150, 93, 60, + 83, 157, 191, 191, 175, 167, 182, 183, 185, 183, 183, 186, 187, 190, 193, 161, + 158, 99, 45, 26, 22, 18, 18, 21, 53, 79, 115, 202, 204, 173, 195, 197, + 195, 173, 189, 179, 147, 135, 124, 106, 60, 45, 56, 51, 44, 37, 44, 41, + 41, 42, 45, 45, 45, 49, 63, 77, 119, 177, 241, 249, 252, 246, 253, 252, + 244, 226, 199, 175, 132, 119, 123, 116, 118, 123, 120, 116, 123, 139, 127, 134, + 126, 97, 73, 24, 21, 17, 16, 13, 13, 13, 10, 9, 12, 12, 6, 5, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 4, 9, 10, 8, 2, + 2, 6, 5, 9, 9, 6, 26, 24, 26, 12, 28, 28, 26, 24, 29, 30, + 30, 72, 45, 44, 107, 93, 246, 249, 246, 119, 102, 111, 136, 150, 161, 167, + 177, 181, 181, 179, 169, 169, 150, 143, 139, 126, 10, 16, 21, 26, 17, 16, + 16, 17, 17, 18, 20, 21, 21, 26, 38, 79, 85, 100, 95, 103, 95, 99, + 93, 87, 84, 115, 122, 116, 81, 69, 71, 71, 97, 116, 107, 110, 202, 195, + 134, 130, 139, 143, 147, 150, 151, 159, 154, 154, 130, 124, 96, 34, 26, 32, + 48, 29, 44, 49, 52, 45, 59, 100, 93, 130, 241, 249, 245, 114, 103, 114, + 128, 140, 148, 162, 174, 178, 174, 153, 83, 45, 32, 32, 36, 25, 49, 96, + 191, 198, 169, 135, 166, 169, 158, 150, 138, 157, 131, 126, 118, 55, 57, 75, + 84, 93, 95, 114, 110, 127, 213, 205, 140, 119, 130, 144, 155, 155, 153, 153, + 151, 153, 153, 157, 158, 167, 171, 170, 166, 166, 158, 112, 68, 36, 30, 26, + 25, 26, 28, 29, 30, 33, 38, 41, 48, 73, 77, 73, 97, 107, 120, 158, + 202, 240, 245, 246, 248, 246, 248, 244, 244, 240, 240, 238, 236, 229, 233, 233, + 228, 214, 198, 191, 187, 187, 187, 186, 187, 185, 181, 178, 159, 148, 132, 132, + 85, 33, 59, 80, 95, 84, 96, 104, 103, 114, 116, 118, 119, 111, 85, 118, + 148, 202, 197, 134, 118, 120, 134, 142, 144, 144, 158, 163, 169, 169, 167, 165, + 169, 171, 167, 166, 162, 146, 103, 64, 37, 30, 28, 26, 29, 32, 34, 36, + 36, 38, 44, 60, 61, 60, 63, 63, 97, 102, 112, 138, 189, 177, 136, 124, + 138, 154, 162, 167, 175, 181, 186, 190, 190, 170, 120, 99, 107, 138, 142, 155, + 209, 212, 213, 214, 186, 175, 179, 171, 169, 169, 155, 155, 140, 135, 42, 38, + 38, 12, 10, 8, 115, 104, 97, 48, 185, 222, 224, 142, 114, 114, 132, 151, + 159, 165, 170, 171, 167, 167, 166, 146, 142, 139, 132, 48, 10, 9, 8, 24, + 22, 18, 20, 24, 30, 20, 29, 45, 56, 53, 65, 71, 76, 81, 80, 71, + 49, 14, 56, 64, 91, 96, 89, 79, 80, 76, 55, 26, 9, 76, 88, 84, + 81, 88, 87, 67, 65, 250, 240, 242, 110, 97, 110, 132, 142, 157, 169, 173, + 171, 166, 165, 148, 138, 132, 18, 9, 9, 14, 10, 16, 26, 26, 34, 4, + 29, 25, 79, 80, 95, 220, 217, 217, 135, 131, 136, 127, 161, 169, 163, 161, + 175, 185, 185, 185, 182, 175, 177, 162, 93, 34, 34, 60, 112, 181, 204, 185, + 163, 179, 186, 183, 186, 189, 190, 193, 194, 193, 166, 163, 108, 51, 34, 25, + 24, 22, 24, 56, 91, 110, 206, 209, 178, 177, 181, 198, 197, 194, 179, 159, + 140, 128, 132, 81, 42, 49, 59, 64, 60, 65, 91, 99, 107, 102, 110, 104, + 93, 108, 148, 193, 245, 248, 249, 250, 248, 228, 193, 150, 124, 119, 111, 104, + 112, 116, 116, 104, 122, 120, 118, 112, 131, 132, 134, 130, 126, 84, 92, 72, + 69, 72, 79, 73, 72, 71, 65, 65, 56, 60, 87, 111, 112, 128, 119, 112, + 130, 132, 116, 89, 83, 93, 142, 114, 116, 150, 146, 115, 107, 107, 131, 97, + 14, 0, 42, 81, 99, 65, 68, 64, 63, 63, 40, 52, 40, 71, 108, 107, + 103, 246, 249, 245, 118, 100, 115, 138, 151, 159, 167, 178, 178, 181, 175, 170, + 167, 148, 140, 138, 130, 12, 21, 21, 33, 63, 81, 87, 95, 103, 102, 100, + 89, 96, 97, 95, 111, 136, 127, 130, 114, 120, 123, 124, 127, 115, 128, 131, + 130, 108, 100, 87, 85, 77, 103, 104, 104, 209, 204, 151, 130, 135, 146, 142, + 146, 155, 157, 154, 153, 131, 120, 92, 32, 26, 33, 49, 61, 69, 85, 88, + 99, 99, 83, 120, 135, 241, 249, 246, 111, 102, 115, 131, 142, 151, 163, 175, + 175, 186, 142, 55, 38, 34, 37, 37, 22, 67, 97, 202, 204, 191, 135, 159, + 162, 162, 146, 135, 136, 131, 128, 118, 55, 51, 65, 92, 89, 93, 104, 102, + 118, 216, 213, 197, 123, 122, 136, 146, 158, 163, 154, 155, 155, 162, 162, 170, + 175, 171, 169, 167, 154, 95, 44, 30, 25, 26, 29, 33, 36, 36, 38, 38, + 44, 46, 49, 69, 60, 81, 99, 108, 147, 217, 241, 244, 246, 246, 248, 246, + 246, 246, 246, 245, 245, 242, 242, 240, 238, 238, 237, 234, 228, 175, 174, 191, + 193, 199, 182, 194, 187, 183, 181, 169, 154, 138, 146, 108, 38, 51, 72, 76, + 77, 95, 83, 75, 68, 61, 63, 73, 76, 87, 126, 143, 206, 210, 181, 116, + 116, 126, 139, 144, 154, 167, 169, 167, 170, 171, 169, 170, 173, 167, 162, 147, + 91, 40, 33, 26, 26, 28, 30, 29, 30, 32, 63, 59, 42, 46, 48, 57, + 80, 65, 68, 53, 76, 106, 114, 183, 179, 147, 124, 123, 139, 158, 165, 171, + 177, 183, 189, 190, 190, 147, 108, 102, 134, 134, 177, 216, 214, 228, 218, 186, + 178, 178, 170, 170, 169, 158, 157, 142, 132, 48, 42, 41, 32, 81, 91, 68, + 44, 55, 42, 140, 216, 226, 147, 115, 114, 132, 147, 159, 165, 170, 171, 165, + 166, 163, 146, 140, 139, 131, 56, 12, 10, 10, 24, 29, 38, 37, 38, 25, + 52, 81, 100, 92, 95, 100, 100, 95, 85, 95, 84, 53, 13, 55, 124, 107, + 108, 87, 89, 93, 64, 55, 25, 12, 85, 83, 67, 57, 61, 77, 67, 68, + 250, 242, 241, 110, 96, 111, 135, 140, 157, 170, 175, 173, 167, 163, 150, 139, + 132, 18, 10, 9, 12, 12, 22, 30, 20, 33, 10, 24, 29, 76, 91, 102, + 218, 221, 218, 136, 111, 118, 127, 139, 167, 166, 170, 182, 187, 187, 187, 186, + 179, 175, 126, 46, 29, 32, 37, 64, 158, 206, 193, 165, 166, 181, 195, 197, + 199, 201, 204, 204, 198, 193, 171, 139, 71, 36, 28, 26, 22, 42, 69, 95, + 104, 208, 214, 193, 175, 194, 198, 183, 195, 178, 173, 143, 134, 126, 104, 51, + 41, 57, 57, 91, 79, 84, 103, 107, 122, 97, 112, 119, 153, 229, 246, 248, + 248, 252, 236, 189, 142, 119, 115, 114, 115, 127, 77, 49, 44, 46, 57, 110, + 116, 124, 161, 183, 189, 181, 135, 132, 120, 99, 76, 100, 99, 80, 84, 77, + 79, 73, 92, 107, 72, 110, 134, 131, 131, 89, 118, 138, 142, 120, 115, 99, + 88, 131, 134, 143, 140, 143, 132, 134, 131, 119, 116, 81, 0, 96, 93, 97, + 106, 95, 92, 95, 79, 61, 60, 36, 108, 108, 103, 110, 249, 248, 245, 110, + 104, 116, 140, 150, 161, 169, 175, 177, 183, 173, 166, 165, 147, 140, 138, 126, + 12, 18, 40, 55, 85, 84, 92, 95, 97, 103, 100, 107, 96, 104, 139, 127, + 122, 120, 124, 130, 120, 120, 130, 162, 170, 210, 199, 153, 123, 107, 100, 103, + 100, 102, 103, 93, 213, 213, 185, 130, 134, 140, 144, 142, 146, 161, 151, 159, + 131, 122, 91, 32, 28, 44, 57, 87, 95, 104, 106, 111, 73, 100, 142, 174, + 242, 248, 242, 116, 104, 115, 132, 144, 151, 167, 175, 174, 167, 123, 49, 38, + 29, 37, 44, 26, 73, 108, 209, 209, 199, 163, 157, 158, 165, 147, 150, 139, + 132, 136, 122, 53, 49, 52, 80, 93, 97, 103, 108, 120, 217, 218, 205, 122, + 120, 128, 142, 153, 161, 162, 162, 174, 178, 177, 177, 178, 170, 169, 154, 99, + 37, 25, 25, 26, 32, 48, 41, 49, 48, 51, 52, 51, 68, 71, 84, 59, + 81, 99, 138, 230, 244, 244, 249, 248, 245, 236, 224, 204, 201, 190, 193, 197, + 208, 212, 214, 224, 226, 229, 226, 230, 217, 181, 206, 205, 216, 216, 205, 187, + 191, 185, 177, 158, 146, 139, 126, 72, 45, 57, 103, 104, 112, 124, 127, 118, + 111, 122, 128, 127, 130, 118, 158, 206, 213, 197, 118, 116, 124, 138, 148, 157, + 169, 173, 174, 173, 173, 171, 174, 173, 167, 144, 91, 36, 29, 25, 28, 30, + 37, 36, 40, 59, 28, 55, 88, 99, 85, 111, 103, 110, 124, 127, 111, 112, + 111, 115, 181, 186, 166, 126, 119, 132, 150, 162, 166, 174, 179, 186, 193, 197, + 186, 142, 99, 135, 144, 194, 216, 216, 216, 201, 193, 185, 177, 174, 175, 169, + 158, 157, 142, 135, 44, 41, 40, 63, 91, 91, 65, 56, 55, 64, 77, 210, + 216, 178, 115, 112, 127, 148, 158, 163, 169, 167, 166, 163, 153, 134, 140, 138, + 132, 83, 17, 10, 17, 30, 34, 37, 30, 37, 16, 81, 93, 100, 95, 88, + 114, 106, 110, 99, 102, 77, 51, 12, 71, 134, 128, 134, 127, 115, 88, 75, + 46, 24, 13, 79, 84, 65, 65, 61, 73, 63, 63, 248, 236, 242, 107, 95, + 111, 135, 143, 155, 170, 174, 177, 165, 163, 151, 140, 134, 20, 12, 10, 10, + 5, 25, 25, 13, 24, 10, 37, 18, 95, 91, 142, 225, 224, 221, 119, 111, + 118, 142, 142, 153, 166, 177, 186, 187, 187, 185, 182, 178, 169, 95, 33, 29, + 30, 36, 65, 130, 208, 204, 170, 159, 177, 183, 197, 202, 206, 206, 205, 205, + 198, 175, 163, 92, 44, 26, 28, 24, 57, 80, 96, 107, 201, 220, 206, 181, + 195, 197, 193, 195, 179, 178, 148, 139, 130, 123, 73, 42, 56, 53, 55, 71, + 104, 89, 96, 92, 102, 100, 119, 209, 248, 248, 249, 250, 225, 166, 122, 116, + 116, 120, 140, 127, 69, 41, 36, 42, 37, 56, 108, 187, 199, 191, 169, 175, + 175, 181, 136, 134, 126, 100, 59, 84, 83, 93, 79, 79, 79, 81, 73, 77, + 147, 143, 138, 131, 131, 126, 118, 124, 111, 97, 84, 108, 147, 144, 135, 134, + 128, 132, 132, 140, 130, 127, 95, 25, 104, 89, 79, 72, 71, 75, 79, 93, + 72, 55, 37, 107, 119, 110, 138, 249, 248, 244, 111, 104, 116, 139, 148, 158, + 167, 175, 178, 182, 170, 165, 148, 136, 139, 136, 126, 13, 24, 40, 72, 80, + 97, 97, 106, 89, 95, 100, 91, 60, 108, 138, 128, 120, 115, 124, 120, 124, + 126, 186, 229, 220, 220, 209, 178, 126, 110, 92, 111, 99, 97, 104, 91, 212, + 214, 201, 130, 131, 143, 150, 144, 144, 154, 146, 144, 131, 124, 81, 32, 28, + 53, 71, 92, 96, 104, 115, 93, 72, 99, 143, 179, 242, 246, 244, 123, 107, + 118, 132, 147, 157, 169, 175, 171, 162, 95, 48, 34, 33, 40, 45, 28, 80, + 119, 208, 212, 208, 130, 151, 155, 162, 134, 139, 144, 131, 135, 119, 52, 45, + 52, 72, 80, 89, 108, 110, 122, 222, 221, 209, 120, 119, 126, 139, 151, 159, + 165, 177, 178, 182, 182, 179, 175, 173, 158, 96, 40, 25, 28, 29, 36, 45, + 41, 55, 67, 76, 79, 75, 80, 76, 83, 89, 72, 91, 114, 193, 244, 246, + 246, 245, 237, 205, 181, 157, 155, 154, 158, 161, 165, 169, 174, 178, 181, 185, + 189, 199, 202, 210, 206, 206, 204, 202, 206, 208, 205, 197, 187, 178, 162, 153, + 135, 131, 95, 42, 63, 92, 100, 106, 120, 93, 124, 130, 122, 120, 114, 115, + 119, 153, 210, 217, 206, 118, 115, 124, 138, 147, 161, 169, 173, 173, 174, 173, + 175, 174, 171, 157, 106, 44, 30, 26, 30, 34, 40, 46, 51, 73, 64, 28, + 89, 112, 120, 118, 115, 111, 110, 107, 128, 132, 135, 72, 116, 166, 181, 182, + 140, 118, 126, 143, 155, 162, 170, 177, 183, 189, 204, 201, 193, 155, 142, 175, + 213, 217, 218, 222, 205, 201, 189, 189, 178, 175, 173, 161, 157, 146, 132, 44, + 38, 37, 85, 85, 108, 10, 45, 55, 40, 51, 190, 216, 199, 116, 110, 123, + 147, 157, 162, 166, 169, 163, 161, 143, 140, 140, 136, 131, 102, 20, 12, 17, + 28, 30, 33, 26, 44, 21, 84, 110, 103, 108, 106, 99, 103, 102, 106, 89, + 73, 55, 13, 77, 127, 163, 193, 163, 136, 104, 89, 49, 25, 13, 72, 79, + 69, 83, 63, 72, 60, 73, 245, 242, 241, 99, 96, 111, 132, 140, 154, 169, + 175, 174, 167, 165, 154, 143, 132, 16, 12, 9, 8, 13, 25, 25, 14, 16, + 13, 29, 17, 81, 96, 142, 229, 229, 224, 123, 123, 118, 127, 143, 162, 167, + 179, 185, 190, 190, 186, 182, 175, 150, 53, 29, 25, 30, 48, 53, 110, 199, + 210, 179, 157, 159, 179, 190, 199, 205, 206, 208, 208, 204, 198, 177, 130, 55, + 32, 26, 30, 59, 81, 96, 97, 197, 224, 218, 185, 179, 195, 183, 194, 179, + 174, 155, 143, 135, 138, 91, 40, 44, 53, 51, 69, 93, 103, 108, 102, 92, + 110, 144, 234, 244, 246, 248, 230, 151, 119, 119, 119, 126, 146, 147, 89, 56, + 34, 34, 41, 38, 60, 124, 205, 198, 170, 174, 179, 177, 183, 143, 138, 120, + 114, 91, 55, 72, 68, 75, 68, 79, 79, 68, 30, 138, 147, 124, 139, 132, + 139, 147, 143, 123, 96, 83, 103, 151, 139, 136, 130, 128, 132, 131, 127, 130, + 136, 57, 26, 71, 92, 85, 73, 73, 72, 76, 85, 57, 55, 34, 110, 119, + 106, 124, 249, 249, 246, 115, 106, 116, 139, 151, 157, 167, 175, 179, 183, 170, + 166, 142, 135, 136, 136, 124, 13, 24, 26, 44, 80, 95, 110, 106, 95, 110, + 93, 99, 64, 96, 142, 120, 132, 120, 112, 126, 122, 132, 212, 229, 216, 218, + 199, 157, 122, 95, 83, 93, 102, 99, 106, 95, 218, 216, 208, 132, 132, 142, + 146, 148, 151, 140, 151, 143, 128, 123, 71, 32, 28, 52, 77, 91, 96, 103, + 122, 97, 65, 97, 144, 175, 240, 245, 242, 126, 108, 120, 132, 144, 153, 169, + 174, 171, 151, 73, 41, 34, 37, 44, 51, 33, 81, 116, 209, 213, 236, 132, + 153, 153, 154, 146, 138, 135, 131, 130, 118, 46, 45, 46, 75, 76, 89, 99, + 112, 124, 226, 224, 216, 119, 116, 124, 136, 148, 158, 163, 175, 181, 181, 181, + 177, 173, 165, 122, 49, 26, 28, 28, 34, 38, 38, 51, 71, 87, 88, 81, + 84, 83, 85, 93, 77, 91, 92, 128, 228, 244, 244, 238, 224, 187, 151, 139, + 140, 146, 154, 163, 173, 181, 191, 201, 205, 208, 209, 208, 191, 195, 199, 202, + 204, 206, 209, 209, 213, 210, 191, 187, 173, 162, 154, 139, 138, 112, 48, 56, + 80, 93, 111, 115, 115, 116, 85, 110, 131, 126, 122, 140, 150, 213, 222, 212, + 119, 115, 124, 139, 147, 159, 169, 173, 174, 174, 178, 177, 173, 163, 123, 55, + 33, 25, 30, 38, 48, 48, 51, 56, 69, 60, 24, 99, 122, 122, 124, 119, + 131, 122, 123, 132, 134, 134, 80, 122, 162, 174, 185, 154, 122, 118, 134, 143, + 161, 167, 175, 179, 189, 195, 208, 206, 204, 194, 213, 216, 216, 225, 225, 206, + 195, 193, 187, 181, 179, 171, 161, 158, 146, 135, 40, 38, 37, 63, 85, 106, + 92, 38, 41, 40, 34, 108, 212, 206, 120, 108, 118, 136, 151, 159, 165, 167, + 166, 163, 154, 136, 142, 134, 135, 115, 26, 14, 18, 28, 29, 37, 29, 46, + 17, 60, 95, 102, 102, 96, 100, 99, 112, 96, 95, 75, 55, 16, 106, 153, + 214, 220, 230, 189, 138, 104, 64, 25, 13, 72, 79, 77, 65, 65, 67, 63, + 64, 245, 245, 234, 103, 95, 107, 127, 139, 153, 169, 175, 174, 167, 165, 154, + 143, 134, 17, 9, 14, 9, 12, 22, 28, 28, 26, 6, 25, 25, 80, 91, + 110, 230, 229, 228, 134, 124, 131, 127, 148, 146, 170, 175, 187, 182, 190, 187, + 177, 173, 128, 41, 28, 22, 32, 41, 56, 91, 190, 214, 195, 158, 154, 173, + 186, 195, 199, 205, 208, 209, 206, 202, 183, 163, 73, 34, 25, 29, 59, 79, + 95, 97, 179, 228, 224, 193, 194, 191, 195, 194, 185, 170, 157, 146, 135, 128, + 107, 48, 41, 53, 49, 64, 97, 110, 93, 93, 106, 104, 191, 240, 246, 248, + 238, 163, 122, 122, 126, 132, 150, 147, 153, 77, 52, 34, 24, 45, 45, 76, + 103, 210, 205, 173, 175, 179, 173, 173, 175, 140, 132, 127, 100, 55, 56, 67, + 71, 67, 68, 77, 75, 55, 142, 155, 130, 139, 134, 139, 147, 131, 118, 114, + 72, 119, 151, 143, 127, 131, 127, 136, 134, 132, 134, 128, 81, 0, 89, 87, + 76, 69, 76, 91, 96, 81, 55, 55, 30, 100, 116, 100, 123, 250, 248, 240, + 114, 104, 118, 138, 146, 162, 169, 173, 179, 181, 169, 162, 151, 142, 136, 135, + 120, 14, 25, 29, 51, 81, 102, 108, 104, 96, 106, 93, 92, 60, 106, 130, + 115, 123, 127, 122, 119, 119, 136, 225, 229, 233, 229, 191, 131, 107, 77, 75, + 95, 89, 96, 102, 97, 222, 221, 213, 136, 134, 146, 147, 151, 147, 142, 157, + 139, 124, 120, 60, 32, 28, 48, 77, 92, 92, 102, 112, 106, 59, 120, 140, + 146, 237, 244, 240, 124, 108, 119, 132, 143, 151, 170, 173, 169, 150, 56, 36, + 34, 38, 44, 46, 30, 80, 118, 210, 214, 212, 151, 143, 148, 148, 144, 138, + 136, 127, 126, 112, 42, 40, 42, 72, 80, 87, 103, 108, 118, 230, 226, 221, + 122, 115, 126, 138, 146, 157, 163, 175, 181, 181, 178, 167, 169, 144, 64, 29, + 28, 30, 34, 49, 48, 40, 87, 96, 95, 93, 92, 95, 92, 97, 92, 88, + 83, 108, 198, 225, 240, 229, 206, 167, 140, 130, 138, 148, 162, 174, 182, 190, + 198, 209, 218, 220, 222, 224, 222, 218, 205, 201, 204, 198, 197, 194, 214, 214, + 216, 194, 187, 170, 166, 157, 142, 138, 120, 61, 49, 71, 106, 106, 127, 114, + 110, 84, 107, 106, 120, 118, 108, 143, 210, 226, 218, 119, 116, 124, 139, 146, + 161, 167, 171, 174, 175, 177, 173, 169, 143, 63, 33, 29, 32, 41, 49, 52, + 53, 57, 60, 72, 64, 24, 102, 127, 134, 119, 120, 126, 111, 134, 139, 128, + 136, 72, 120, 151, 165, 166, 174, 130, 118, 120, 138, 155, 165, 171, 177, 183, + 194, 202, 209, 212, 210, 214, 217, 216, 229, 218, 202, 195, 194, 187, 181, 174, + 171, 161, 158, 144, 132, 36, 36, 33, 55, 118, 124, 84, 20, 36, 45, 41, + 60, 193, 206, 132, 108, 116, 131, 148, 157, 161, 165, 171, 173, 165, 154, 131, + 131, 134, 122, 41, 12, 16, 21, 25, 38, 30, 40, 37, 36, 91, 103, 103, + 107, 100, 100, 103, 102, 87, 77, 59, 26, 144, 191, 232, 214, 210, 206, 217, + 138, 89, 29, 13, 65, 69, 73, 59, 55, 61, 53, 61, 246, 245, 238, 107, + 97, 104, 122, 138, 155, 167, 177, 175, 167, 165, 154, 143, 131, 14, 10, 12, + 12, 10, 21, 25, 33, 30, 28, 22, 29, 72, 83, 99, 230, 230, 228, 134, + 110, 119, 130, 139, 143, 161, 173, 183, 189, 191, 186, 174, 165, 104, 33, 25, + 22, 32, 48, 61, 84, 178, 221, 205, 162, 150, 163, 181, 189, 198, 201, 205, + 208, 209, 206, 199, 182, 106, 38, 28, 29, 59, 80, 85, 89, 151, 226, 226, + 197, 179, 191, 197, 185, 174, 155, 150, 147, 140, 130, 120, 67, 41, 48, 46, + 64, 96, 111, 99, 97, 102, 93, 206, 244, 246, 245, 195, 130, 123, 130, 135, + 136, 151, 155, 155, 71, 34, 30, 28, 38, 44, 64, 104, 214, 212, 190, 173, + 178, 175, 173, 178, 144, 140, 127, 97, 46, 49, 69, 57, 65, 72, 81, 57, + 85, 134, 140, 131, 124, 123, 131, 128, 131, 115, 95, 55, 127, 151, 143, 127, + 135, 127, 135, 134, 132, 126, 126, 75, 0, 92, 84, 81, 69, 75, 64, 57, + 53, 64, 56, 32, 103, 114, 107, 119, 248, 246, 233, 110, 104, 119, 140, 150, + 161, 169, 175, 174, 182, 181, 170, 159, 144, 131, 131, 118, 14, 25, 34, 64, + 80, 96, 108, 108, 112, 111, 91, 97, 60, 100, 131, 115, 111, 123, 110, 123, + 119, 144, 226, 234, 233, 183, 132, 123, 84, 71, 75, 88, 87, 87, 96, 97, + 224, 225, 220, 139, 135, 144, 151, 165, 154, 153, 155, 128, 124, 116, 46, 29, + 29, 48, 77, 89, 93, 102, 112, 106, 52, 128, 142, 126, 233, 242, 238, 126, + 110, 119, 132, 146, 153, 170, 170, 165, 140, 49, 36, 36, 41, 41, 41, 34, + 76, 124, 214, 220, 210, 146, 140, 144, 150, 143, 139, 138, 136, 122, 108, 38, + 37, 40, 68, 71, 76, 100, 116, 116, 232, 232, 225, 122, 116, 126, 136, 146, + 157, 165, 170, 181, 178, 173, 169, 159, 107, 40, 28, 30, 33, 40, 41, 38, + 42, 72, 104, 130, 130, 127, 127, 119, 102, 79, 96, 108, 153, 228, 237, 222, + 187, 150, 130, 130, 142, 153, 163, 177, 183, 191, 199, 206, 216, 208, 165, 139, + 162, 204, 224, 222, 209, 201, 197, 205, 205, 216, 212, 212, 193, 185, 173, 167, + 155, 140, 136, 123, 85, 49, 59, 91, 100, 126, 124, 110, 80, 107, 108, 122, + 119, 96, 147, 217, 229, 222, 122, 115, 126, 139, 146, 161, 167, 173, 175, 177, + 177, 170, 158, 106, 41, 33, 32, 38, 51, 56, 59, 57, 61, 68, 77, 69, + 26, 108, 135, 131, 123, 115, 134, 131, 139, 143, 120, 134, 63, 123, 139, 155, + 165, 182, 165, 119, 111, 131, 148, 162, 169, 175, 182, 194, 194, 201, 208, 205, + 206, 220, 224, 220, 209, 201, 198, 193, 189, 179, 173, 171, 159, 157, 143, 131, + 32, 34, 34, 61, 85, 104, 63, 77, 49, 32, 29, 28, 114, 202, 161, 111, + 112, 124, 142, 151, 158, 165, 174, 169, 170, 159, 130, 127, 135, 130, 61, 16, + 12, 26, 22, 33, 32, 42, 34, 30, 84, 100, 107, 103, 107, 107, 106, 103, + 91, 80, 56, 26, 159, 209, 229, 222, 226, 209, 181, 140, 91, 26, 14, 65, + 81, 72, 73, 59, 63, 55, 80, 245, 246, 241, 112, 97, 103, 118, 143, 154, + 167, 174, 174, 170, 165, 154, 144, 134, 20, 13, 6, 12, 13, 18, 18, 30, + 30, 38, 13, 10, 72, 80, 97, 229, 232, 226, 120, 108, 119, 134, 128, 132, + 148, 166, 178, 186, 185, 182, 169, 154, 76, 29, 26, 20, 34, 63, 53, 80, + 158, 222, 213, 166, 146, 154, 174, 183, 191, 197, 199, 204, 209, 209, 202, 189, + 148, 52, 32, 25, 53, 76, 84, 91, 127, 224, 229, 202, 181, 191, 191, 182, + 163, 153, 146, 151, 147, 132, 131, 83, 40, 41, 48, 61, 95, 115, 95, 85, + 88, 102, 216, 238, 244, 242, 163, 124, 130, 136, 140, 144, 157, 158, 161, 65, + 36, 30, 21, 40, 44, 64, 96, 213, 218, 210, 177, 178, 178, 174, 181, 150, + 144, 124, 96, 40, 41, 55, 64, 57, 67, 69, 67, 72, 142, 138, 134, 128, + 128, 130, 127, 136, 114, 84, 72, 99, 136, 142, 131, 134, 134, 132, 135, 132, + 134, 123, 75, 21, 91, 83, 81, 65, 73, 83, 59, 59, 71, 49, 32, 112, + 115, 107, 123, 246, 244, 189, 106, 106, 118, 139, 146, 157, 163, 173, 174, 182, + 182, 177, 166, 150, 132, 131, 123, 16, 28, 37, 73, 72, 97, 102, 106, 111, + 99, 95, 87, 57, 114, 123, 114, 116, 120, 115, 123, 123, 151, 236, 237, 232, + 153, 123, 107, 75, 65, 73, 88, 84, 87, 100, 107, 222, 226, 220, 140, 134, + 148, 170, 170, 167, 162, 154, 124, 124, 116, 42, 30, 30, 49, 75, 89, 95, + 104, 102, 87, 52, 92, 139, 151, 233, 241, 240, 128, 108, 120, 131, 144, 154, + 171, 171, 166, 134, 48, 34, 36, 45, 45, 46, 37, 75, 123, 214, 220, 233, + 126, 138, 139, 147, 138, 143, 146, 138, 118, 97, 38, 37, 40, 72, 68, 73, + 99, 102, 119, 236, 233, 224, 120, 116, 127, 138, 147, 158, 166, 170, 179, 175, + 169, 166, 146, 65, 32, 30, 33, 38, 49, 53, 38, 88, 99, 127, 123, 123, + 126, 132, 120, 91, 79, 99, 124, 216, 233, 230, 205, 140, 118, 130, 140, 153, + 165, 175, 182, 189, 194, 204, 210, 210, 127, 95, 89, 99, 128, 170, 225, 217, + 210, 198, 206, 214, 217, 217, 205, 189, 185, 177, 169, 154, 140, 131, 127, 96, + 53, 67, 91, 102, 115, 115, 110, 79, 110, 114, 120, 119, 103, 143, 226, 230, + 225, 122, 116, 127, 139, 146, 159, 167, 171, 175, 178, 173, 165, 143, 71, 33, + 29, 37, 52, 57, 57, 61, 61, 65, 73, 83, 76, 29, 115, 142, 135, 140, + 138, 136, 139, 142, 118, 127, 132, 65, 123, 136, 155, 161, 175, 181, 128, 110, + 126, 142, 158, 166, 174, 181, 189, 195, 197, 198, 197, 197, 198, 205, 208, 208, + 205, 201, 194, 186, 181, 173, 170, 162, 158, 144, 126, 30, 32, 30, 73, 60, + 103, 64, 59, 60, 22, 32, 30, 63, 181, 186, 114, 111, 120, 131, 148, 159, + 166, 175, 171, 173, 159, 127, 128, 135, 131, 93, 20, 14, 16, 18, 24, 37, + 41, 41, 29, 67, 103, 103, 99, 106, 102, 106, 102, 89, 76, 63, 21, 177, + 217, 228, 225, 186, 165, 130, 100, 87, 24, 14, 42, 75, 79, 80, 53, 61, + 55, 67, 245, 246, 242, 112, 100, 100, 119, 136, 151, 166, 173, 174, 171, 161, + 151, 146, 131, 18, 14, 17, 12, 14, 29, 21, 21, 26, 33, 21, 22, 63, + 75, 89, 226, 237, 230, 132, 120, 119, 126, 127, 131, 138, 154, 167, 185, 185, + 170, 166, 147, 57, 29, 22, 20, 34, 53, 49, 69, 143, 218, 217, 182, 143, + 146, 166, 177, 183, 190, 193, 197, 202, 206, 204, 190, 177, 83, 32, 26, 52, + 67, 83, 88, 112, 220, 229, 205, 179, 190, 194, 174, 161, 139, 135, 138, 144, + 136, 132, 104, 49, 37, 48, 57, 92, 102, 93, 87, 100, 104, 217, 237, 245, + 225, 148, 128, 132, 140, 139, 155, 161, 165, 167, 61, 37, 33, 26, 40, 49, + 56, 91, 214, 221, 217, 179, 178, 182, 175, 178, 153, 142, 124, 95, 37, 37, + 52, 52, 49, 57, 63, 25, 75, 135, 131, 132, 134, 132, 127, 126, 143, 115, + 80, 64, 127, 148, 130, 135, 138, 143, 148, 142, 132, 130, 130, 55, 26, 68, + 79, 80, 64, 71, 60, 59, 61, 56, 55, 33, 107, 115, 107, 118, 245, 242, + 171, 103, 102, 116, 128, 139, 150, 159, 171, 174, 183, 181, 177, 166, 151, 131, + 132, 123, 17, 29, 29, 53, 71, 81, 102, 107, 107, 100, 95, 93, 55, 92, + 120, 111, 111, 111, 110, 114, 123, 181, 246, 237, 222, 135, 119, 100, 61, 64, + 69, 84, 80, 85, 97, 106, 225, 226, 220, 140, 135, 147, 171, 163, 169, 157, + 158, 123, 124, 115, 44, 30, 30, 52, 76, 88, 96, 95, 96, 88, 44, 92, + 142, 147, 232, 240, 238, 124, 110, 116, 131, 146, 155, 173, 167, 170, 132, 44, + 34, 36, 48, 40, 57, 37, 72, 114, 212, 220, 214, 139, 132, 136, 146, 140, + 140, 143, 136, 118, 91, 36, 34, 38, 67, 69, 76, 92, 107, 132, 237, 237, + 226, 120, 115, 126, 136, 147, 158, 166, 171, 177, 173, 169, 163, 118, 48, 32, + 32, 37, 42, 48, 41, 28, 96, 104, 130, 140, 134, 119, 136, 119, 107, 95, + 108, 167, 228, 230, 224, 175, 115, 123, 138, 148, 163, 174, 177, 186, 187, 197, + 202, 213, 178, 99, 71, 59, 63, 79, 127, 208, 224, 216, 205, 195, 216, 216, + 214, 213, 199, 186, 179, 167, 154, 138, 124, 127, 104, 56, 61, 85, 119, 106, + 114, 115, 75, 107, 112, 119, 112, 93, 148, 229, 236, 226, 123, 118, 126, 138, + 144, 159, 166, 169, 173, 173, 167, 162, 120, 53, 34, 33, 45, 56, 63, 63, + 63, 64, 71, 76, 77, 77, 28, 110, 138, 140, 140, 142, 136, 139, 140, 136, + 130, 128, 80, 128, 131, 142, 148, 159, 181, 146, 108, 116, 136, 153, 163, 171, + 178, 186, 193, 199, 199, 202, 201, 198, 197, 201, 210, 202, 202, 194, 187, 178, + 174, 173, 162, 157, 142, 128, 28, 30, 30, 53, 63, 102, 20, 22, 33, 45, + 25, 22, 32, 107, 181, 119, 107, 111, 122, 144, 157, 165, 170, 175, 169, 154, + 134, 130, 136, 131, 112, 28, 17, 21, 21, 21, 37, 28, 44, 29, 61, 91, + 99, 108, 106, 111, 103, 97, 83, 80, 65, 24, 175, 226, 234, 226, 173, 123, + 92, 87, 65, 20, 14, 30, 68, 76, 76, 59, 56, 52, 69, 244, 245, 238, + 110, 97, 103, 123, 138, 147, 166, 170, 174, 169, 162, 153, 147, 128, 20, 17, + 16, 12, 16, 24, 21, 12, 22, 24, 26, 32, 51, 83, 107, 229, 234, 232, + 132, 124, 128, 123, 124, 128, 142, 157, 153, 162, 165, 158, 161, 139, 40, 25, + 20, 20, 32, 37, 52, 68, 102, 210, 217, 191, 143, 140, 157, 169, 177, 179, + 183, 189, 197, 202, 202, 198, 189, 110, 37, 25, 52, 61, 80, 85, 97, 213, + 228, 212, 183, 189, 194, 174, 167, 155, 154, 150, 136, 138, 128, 114, 59, 40, + 44, 42, 79, 96, 87, 84, 99, 97, 217, 244, 245, 194, 139, 132, 136, 143, + 142, 154, 162, 167, 169, 61, 34, 32, 22, 37, 49, 71, 85, 210, 222, 222, + 179, 183, 181, 173, 181, 155, 142, 127, 89, 37, 32, 40, 46, 48, 55, 67, + 41, 104, 136, 142, 138, 131, 139, 127, 131, 116, 114, 110, 59, 120, 142, 148, + 146, 153, 146, 143, 136, 142, 135, 122, 83, 0, 80, 79, 65, 65, 63, 59, + 56, 59, 57, 59, 32, 89, 114, 99, 119, 241, 237, 187, 107, 107, 115, 119, + 132, 142, 157, 169, 177, 181, 183, 170, 165, 148, 132, 138, 119, 18, 29, 32, + 52, 68, 83, 99, 104, 96, 108, 95, 89, 52, 95, 110, 114, 102, 115, 114, + 111, 131, 213, 241, 240, 220, 132, 119, 81, 60, 57, 67, 69, 79, 73, 95, + 103, 221, 228, 216, 138, 136, 150, 174, 169, 162, 157, 153, 124, 123, 111, 38, + 29, 33, 51, 72, 88, 92, 102, 99, 99, 40, 110, 138, 127, 229, 238, 234, + 123, 110, 120, 132, 146, 159, 173, 170, 167, 127, 49, 37, 36, 33, 48, 53, + 33, 61, 103, 213, 218, 206, 135, 131, 135, 144, 143, 136, 140, 136, 118, 92, + 33, 30, 34, 56, 68, 81, 88, 103, 122, 237, 234, 230, 122, 115, 126, 138, + 147, 158, 167, 171, 177, 169, 165, 151, 85, 36, 34, 37, 38, 44, 53, 53, + 26, 75, 110, 131, 136, 130, 120, 130, 120, 99, 96, 97, 189, 222, 230, 214, + 139, 112, 127, 140, 154, 167, 171, 183, 189, 193, 198, 205, 214, 147, 76, 53, + 51, 57, 75, 110, 177, 226, 217, 213, 190, 216, 220, 221, 213, 204, 187, 179, + 169, 154, 140, 130, 130, 116, 63, 60, 80, 88, 104, 116, 107, 64, 104, 107, + 135, 106, 102, 144, 224, 237, 232, 120, 115, 124, 138, 144, 158, 167, 165, 173, + 171, 166, 151, 95, 44, 33, 40, 48, 64, 69, 79, 80, 79, 81, 81, 85, + 75, 28, 116, 138, 131, 136, 143, 138, 138, 135, 138, 123, 123, 46, 124, 128, + 135, 143, 157, 167, 165, 126, 107, 126, 146, 161, 169, 178, 183, 190, 195, 191, + 190, 194, 204, 201, 194, 198, 212, 204, 195, 189, 181, 174, 173, 162, 157, 146, + 128, 24, 29, 29, 53, 73, 83, 8, 8, 9, 8, 6, 17, 18, 48, 167, + 162, 107, 110, 122, 144, 155, 162, 165, 165, 159, 155, 127, 130, 130, 134, 126, + 63, 20, 13, 18, 20, 34, 34, 48, 30, 42, 79, 88, 91, 92, 87, 91, + 91, 87, 77, 67, 36, 181, 229, 238, 208, 154, 99, 91, 88, 61, 21, 14, + 21, 38, 42, 57, 49, 57, 49, 63, 242, 244, 234, 110, 97, 106, 122, 131, + 143, 165, 174, 171, 169, 161, 150, 147, 127, 20, 18, 20, 12, 14, 6, 20, + 22, 10, 25, 32, 25, 44, 75, 100, 228, 232, 229, 134, 110, 118, 132, 135, + 132, 144, 147, 144, 157, 157, 157, 157, 135, 41, 29, 25, 21, 32, 42, 56, + 71, 81, 199, 220, 201, 147, 138, 146, 162, 169, 171, 175, 182, 189, 195, 198, + 197, 190, 147, 52, 30, 45, 59, 73, 75, 85, 201, 229, 220, 185, 185, 194, + 181, 170, 166, 159, 155, 151, 136, 128, 127, 83, 42, 42, 41, 72, 100, 114, + 89, 93, 87, 198, 242, 245, 187, 135, 138, 144, 147, 143, 154, 165, 170, 170, + 60, 36, 29, 21, 32, 42, 61, 92, 221, 224, 224, 181, 182, 183, 177, 179, + 157, 143, 130, 91, 34, 32, 36, 42, 64, 46, 69, 41, 99, 111, 100, 108, + 108, 110, 108, 111, 107, 108, 80, 45, 118, 132, 135, 128, 140, 132, 124, 122, + 134, 130, 111, 55, 0, 80, 63, 63, 57, 68, 59, 75, 57, 65, 53, 30, + 91, 110, 106, 116, 244, 245, 225, 110, 106, 112, 120, 120, 142, 161, 171, 181, + 185, 175, 166, 154, 139, 134, 130, 116, 22, 30, 33, 49, 69, 80, 95, 99, + 104, 104, 91, 88, 52, 92, 114, 112, 104, 107, 111, 115, 143, 232, 241, 242, + 220, 135, 115, 71, 55, 51, 77, 61, 75, 77, 83, 92, 222, 222, 214, 134, + 135, 148, 166, 162, 161, 153, 144, 126, 122, 107, 38, 28, 32, 51, 64, 87, + 92, 96, 112, 97, 34, 122, 138, 132, 226, 237, 229, 127, 112, 120, 132, 147, + 161, 166, 167, 169, 139, 56, 37, 37, 46, 46, 55, 37, 57, 99, 213, 212, + 205, 127, 134, 135, 146, 138, 140, 136, 138, 119, 88, 30, 30, 30, 67, 63, + 67, 72, 97, 116, 236, 236, 229, 122, 114, 124, 135, 147, 158, 167, 174, 174, + 166, 163, 148, 68, 33, 33, 36, 42, 44, 44, 59, 25, 107, 116, 126, 115, + 108, 119, 122, 119, 106, 92, 97, 193, 222, 216, 201, 123, 114, 127, 140, 154, + 173, 173, 185, 190, 191, 199, 205, 209, 135, 71, 57, 52, 52, 64, 89, 153, + 228, 221, 214, 199, 213, 217, 218, 216, 210, 189, 183, 170, 159, 142, 132, 127, + 122, 83, 61, 69, 88, 96, 118, 104, 67, 96, 96, 93, 87, 85, 134, 213, + 234, 232, 123, 115, 124, 138, 143, 158, 165, 165, 173, 170, 161, 144, 76, 41, + 34, 44, 60, 76, 79, 77, 77, 81, 80, 80, 84, 83, 33, 110, 135, 136, + 144, 139, 138, 138, 144, 142, 112, 132, 37, 123, 122, 134, 135, 148, 151, 178, + 147, 108, 118, 142, 155, 166, 175, 183, 187, 189, 189, 186, 190, 195, 205, 206, + 193, 199, 204, 197, 191, 182, 175, 175, 163, 158, 146, 128, 22, 26, 28, 56, + 68, 87, 2, 1, 2, 8, 2, 4, 5, 17, 75, 177, 108, 107, 118, 134, + 148, 155, 163, 166, 157, 139, 126, 128, 128, 130, 131, 100, 33, 22, 22, 26, + 26, 29, 30, 33, 42, 56, 49, 52, 56, 55, 57, 56, 87, 79, 63, 28, + 166, 225, 240, 189, 119, 99, 91, 87, 59, 18, 14, 21, 26, 26, 29, 32, + 33, 57, 67, 245, 242, 240, 114, 92, 102, 120, 122, 140, 157, 165, 170, 167, + 162, 148, 144, 130, 21, 17, 8, 8, 10, 12, 14, 5, 5, 18, 26, 26, + 38, 73, 87, 225, 230, 232, 128, 104, 116, 127, 135, 146, 151, 147, 142, 146, + 142, 154, 151, 127, 46, 26, 26, 14, 36, 34, 56, 53, 75, 190, 221, 204, + 146, 134, 142, 154, 162, 166, 170, 177, 183, 191, 195, 194, 189, 167, 76, 37, + 36, 55, 65, 73, 85, 183, 230, 224, 189, 178, 194, 195, 169, 177, 170, 163, + 157, 151, 139, 128, 118, 57, 41, 40, 65, 97, 103, 81, 80, 92, 187, 229, + 245, 175, 132, 140, 147, 148, 143, 155, 173, 177, 177, 68, 42, 28, 25, 30, + 41, 76, 103, 226, 228, 226, 185, 183, 183, 178, 178, 159, 146, 132, 87, 33, + 34, 33, 36, 38, 38, 48, 57, 57, 87, 87, 89, 91, 97, 92, 85, 104, + 106, 53, 53, 45, 108, 97, 85, 79, 103, 83, 72, 68, 97, 67, 13, 42, + 61, 52, 37, 38, 46, 40, 37, 36, 52, 41, 33, 81, 96, 108, 128, 245, + 238, 234, 111, 110, 115, 120, 128, 143, 167, 170, 177, 182, 178, 167, 153, 128, + 135, 138, 114, 25, 34, 34, 42, 52, 63, 81, 92, 95, 92, 88, 87, 48, + 95, 103, 110, 100, 102, 104, 116, 161, 245, 248, 242, 201, 131, 115, 64, 52, + 49, 67, 75, 63, 69, 84, 89, 222, 228, 218, 138, 136, 147, 161, 163, 161, + 159, 126, 126, 122, 104, 33, 29, 29, 53, 56, 77, 88, 93, 96, 81, 51, + 71, 123, 127, 220, 233, 232, 127, 114, 122, 134, 150, 161, 171, 170, 169, 148, + 63, 40, 40, 44, 37, 46, 34, 75, 111, 208, 220, 217, 134, 131, 131, 140, + 139, 139, 135, 131, 118, 80, 30, 28, 30, 60, 48, 55, 69, 96, 111, 237, + 238, 232, 124, 116, 123, 131, 147, 161, 169, 174, 175, 166, 163, 146, 60, 36, + 37, 40, 63, 52, 46, 60, 36, 106, 114, 102, 115, 110, 107, 97, 111, 100, + 96, 96, 193, 220, 216, 175, 110, 115, 124, 136, 157, 171, 173, 178, 182, 191, + 195, 202, 214, 127, 71, 60, 56, 59, 55, 77, 148, 230, 225, 217, 198, 202, + 216, 216, 221, 216, 202, 183, 173, 162, 148, 140, 126, 127, 97, 65, 71, 73, + 80, 88, 72, 67, 67, 69, 71, 60, 79, 132, 201, 230, 233, 123, 115, 127, + 138, 142, 158, 166, 166, 170, 167, 159, 140, 72, 45, 36, 51, 73, 73, 77, + 71, 76, 80, 83, 84, 85, 77, 34, 77, 119, 139, 102, 111, 127, 134, 128, + 136, 123, 124, 37, 123, 120, 122, 120, 131, 139, 146, 165, 112, 107, 134, 150, + 163, 173, 179, 181, 183, 182, 186, 187, 190, 194, 204, 204, 194, 198, 195, 193, + 185, 177, 175, 165, 159, 147, 128, 24, 28, 28, 55, 63, 64, 36, 41, 46, + 40, 29, 45, 36, 13, 17, 138, 162, 115, 111, 118, 138, 148, 154, 158, 155, + 142, 131, 127, 122, 132, 134, 122, 59, 28, 13, 18, 21, 22, 20, 18, 24, + 25, 25, 32, 37, 42, 46, 48, 59, 75, 68, 30, 165, 220, 234, 177, 110, + 91, 89, 85, 57, 18, 10, 17, 24, 22, 24, 30, 30, 52, 55, 244, 241, + 236, 112, 103, 102, 120, 132, 134, 151, 162, 174, 169, 158, 147, 146, 123, 20, + 21, 21, 16, 16, 21, 20, 20, 21, 36, 20, 22, 38, 65, 97, 225, 232, + 228, 130, 115, 119, 128, 132, 146, 143, 143, 140, 143, 140, 153, 147, 123, 41, + 38, 25, 26, 49, 68, 63, 67, 69, 178, 216, 210, 150, 130, 139, 151, 158, + 161, 167, 171, 178, 186, 191, 193, 190, 179, 99, 41, 28, 42, 59, 69, 80, + 161, 230, 228, 193, 178, 186, 195, 191, 162, 178, 169, 165, 151, 151, 136, 130, + 92, 44, 44, 61, 71, 77, 71, 87, 87, 147, 234, 244, 174, 136, 142, 151, + 148, 148, 163, 175, 179, 182, 75, 49, 34, 28, 56, 73, 79, 114, 230, 230, + 229, 191, 183, 187, 181, 179, 163, 148, 130, 95, 29, 28, 29, 10, 9, 6, + 9, 10, 28, 28, 13, 12, 25, 28, 22, 21, 30, 36, 32, 53, 25, 25, + 14, 20, 24, 26, 8, 18, 25, 29, 5, 20, 67, 18, 45, 59, 65, 68, + 77, 77, 79, 77, 77, 36, 110, 104, 112, 138, 245, 245, 234, 111, 111, 118, + 122, 135, 148, 163, 167, 173, 175, 179, 166, 153, 131, 136, 134, 108, 29, 36, + 34, 44, 55, 56, 56, 59, 63, 75, 71, 59, 48, 89, 95, 88, 85, 97, + 112, 112, 208, 245, 248, 240, 177, 126, 112, 57, 49, 42, 41, 44, 49, 57, + 80, 87, 228, 230, 216, 135, 131, 131, 151, 159, 159, 151, 124, 118, 124, 96, + 30, 28, 32, 45, 57, 69, 75, 75, 81, 75, 41, 53, 120, 132, 214, 229, + 229, 127, 114, 123, 134, 150, 159, 171, 174, 173, 154, 81, 45, 40, 48, 34, + 40, 59, 89, 138, 214, 221, 204, 131, 127, 128, 135, 136, 140, 135, 128, 116, + 75, 28, 25, 28, 40, 42, 49, 75, 96, 96, 238, 241, 234, 122, 114, 122, + 132, 147, 161, 169, 177, 174, 163, 161, 146, 57, 34, 34, 44, 48, 63, 56, + 52, 26, 77, 87, 80, 80, 96, 95, 84, 83, 95, 93, 102, 183, 218, 204, + 151, 106, 115, 122, 136, 154, 171, 178, 185, 179, 191, 193, 195, 210, 147, 75, + 61, 45, 49, 61, 83, 151, 228, 225, 222, 199, 186, 212, 216, 217, 214, 205, + 183, 175, 165, 157, 143, 124, 126, 108, 69, 79, 71, 60, 60, 55, 46, 51, + 49, 59, 56, 67, 140, 195, 236, 230, 124, 118, 127, 139, 143, 157, 166, 166, + 173, 166, 159, 142, 71, 42, 41, 67, 44, 32, 28, 25, 33, 20, 17, 17, + 30, 10, 33, 59, 57, 69, 65, 57, 59, 59, 84, 114, 118, 99, 40, 122, + 93, 106, 100, 112, 116, 128, 155, 132, 104, 127, 146, 159, 169, 173, 175, 175, + 174, 177, 178, 182, 190, 197, 208, 195, 194, 201, 193, 186, 177, 175, 165, 161, + 148, 130, 22, 25, 26, 51, 53, 59, 115, 100, 80, 84, 84, 69, 80, 42, + 24, 64, 147, 106, 110, 112, 120, 138, 153, 150, 148, 139, 146, 146, 132, 123, + 131, 132, 108, 40, 32, 42, 51, 49, 42, 46, 57, 57, 73, 64, 69, 64, + 49, 52, 44, 52, 67, 34, 155, 222, 237, 198, 115, 92, 91, 81, 42, 16, + 14, 16, 40, 51, 60, 59, 56, 56, 65, 237, 237, 232, 106, 95, 110, 123, + 123, 127, 138, 158, 171, 162, 155, 144, 143, 126, 22, 21, 25, 8, 20, 21, + 21, 16, 28, 42, 24, 21, 68, 67, 119, 222, 229, 226, 128, 118, 127, 135, + 134, 143, 132, 153, 147, 147, 139, 151, 144, 116, 41, 37, 22, 36, 60, 69, + 67, 69, 71, 158, 221, 210, 155, 127, 136, 144, 154, 158, 165, 167, 173, 182, + 186, 190, 186, 183, 128, 46, 42, 44, 67, 72, 91, 148, 226, 229, 194, 177, + 182, 191, 194, 187, 162, 175, 170, 165, 155, 151, 134, 123, 64, 45, 46, 49, + 57, 76, 93, 85, 132, 225, 236, 178, 139, 148, 158, 146, 147, 162, 182, 185, + 186, 87, 40, 32, 20, 48, 75, 87, 157, 233, 232, 229, 189, 189, 185, 178, + 177, 165, 148, 132, 93, 34, 30, 32, 24, 42, 26, 44, 30, 97, 107, 100, + 88, 99, 102, 102, 91, 102, 100, 49, 30, 44, 123, 116, 100, 100, 118, 112, + 99, 95, 95, 89, 63, 26, 46, 108, 122, 126, 119, 124, 119, 120, 84, 73, + 32, 111, 115, 115, 183, 242, 245, 225, 110, 110, 115, 124, 138, 151, 159, 158, + 157, 166, 177, 167, 154, 136, 142, 143, 111, 34, 40, 42, 59, 69, 72, 52, + 71, 72, 69, 63, 75, 68, 80, 84, 95, 99, 103, 119, 174, 241, 246, 248, + 244, 154, 122, 107, 55, 46, 42, 46, 51, 63, 69, 85, 100, 226, 232, 218, + 132, 131, 134, 142, 147, 159, 148, 126, 122, 126, 106, 33, 29, 33, 49, 57, + 53, 55, 60, 49, 75, 33, 57, 104, 123, 209, 226, 222, 131, 115, 123, 134, + 146, 159, 166, 170, 173, 161, 103, 49, 42, 38, 44, 46, 73, 102, 194, 229, + 230, 213, 130, 127, 131, 134, 132, 143, 140, 124, 116, 64, 28, 25, 37, 59, + 61, 73, 81, 103, 116, 237, 237, 234, 123, 114, 126, 138, 148, 159, 170, 175, + 171, 163, 158, 147, 61, 38, 42, 63, 64, 77, 72, 45, 34, 37, 33, 46, + 36, 42, 37, 45, 33, 46, 37, 61, 173, 213, 206, 135, 104, 118, 123, 134, + 138, 169, 178, 175, 179, 185, 195, 201, 209, 162, 87, 67, 56, 71, 61, 104, + 159, 229, 226, 225, 198, 182, 202, 214, 214, 212, 206, 187, 182, 166, 165, 148, + 134, 127, 118, 77, 76, 88, 85, 85, 68, 30, 52, 128, 165, 128, 126, 174, + 210, 226, 230, 120, 118, 126, 139, 138, 154, 162, 169, 166, 166, 158, 144, 77, + 49, 46, 73, 77, 112, 132, 146, 142, 136, 144, 153, 140, 65, 32, 112, 153, + 151, 132, 142, 143, 126, 93, 59, 57, 81, 64, 24, 32, 40, 40, 38, 30, + 69, 142, 147, 110, 110, 140, 147, 157, 163, 159, 162, 158, 159, 153, 158, 159, + 191, 205, 213, 186, 198, 193, 185, 177, 174, 163, 159, 148, 126, 20, 22, 26, + 49, 48, 51, 115, 84, 103, 88, 91, 106, 52, 57, 25, 21, 144, 127, 114, + 111, 114, 115, 126, 138, 139, 150, 142, 142, 148, 136, 130, 139, 123, 92, 36, + 30, 17, 38, 46, 46, 68, 79, 100, 84, 83, 85, 73, 68, 72, 76, 69, + 49, 177, 236, 241, 195, 116, 89, 85, 65, 28, 14, 14, 17, 46, 57, 55, + 56, 52, 52, 69, 216, 230, 230, 100, 92, 111, 124, 123, 123, 134, 146, 167, + 162, 155, 143, 142, 127, 30, 26, 21, 18, 33, 45, 61, 67, 68, 75, 69, + 68, 53, 81, 190, 217, 225, 225, 126, 110, 119, 120, 135, 144, 126, 138, 146, + 148, 142, 147, 146, 122, 34, 30, 25, 32, 65, 60, 63, 59, 69, 136, 216, + 210, 165, 126, 134, 136, 147, 157, 162, 169, 170, 178, 183, 185, 182, 182, 155, + 72, 42, 38, 76, 80, 84, 128, 218, 228, 198, 174, 178, 187, 195, 195, 171, + 162, 175, 175, 166, 161, 147, 132, 107, 69, 67, 71, 96, 102, 100, 93, 112, + 210, 232, 182, 146, 153, 159, 146, 148, 165, 186, 191, 191, 136, 64, 34, 17, + 56, 81, 99, 185, 237, 234, 232, 187, 187, 186, 179, 175, 165, 147, 131, 87, + 32, 28, 30, 49, 44, 48, 51, 29, 114, 119, 106, 89, 87, 96, 85, 91, + 96, 103, 61, 24, 93, 124, 111, 114, 115, 111, 116, 108, 114, 107, 110, 65, + 22, 106, 124, 120, 120, 115, 116, 104, 112, 96, 88, 32, 116, 118, 116, 201, + 245, 245, 226, 110, 108, 114, 123, 140, 154, 165, 162, 147, 157, 158, 154, 131, + 131, 146, 146, 111, 37, 41, 41, 65, 51, 61, 71, 77, 83, 88, 88, 83, + 92, 104, 106, 114, 120, 130, 162, 218, 248, 248, 246, 221, 131, 123, 84, 48, + 41, 41, 55, 61, 64, 76, 81, 104, 226, 232, 225, 127, 126, 135, 122, 136, + 138, 138, 119, 127, 124, 111, 34, 29, 32, 56, 64, 81, 88, 85, 77, 77, + 25, 128, 124, 130, 194, 222, 217, 135, 116, 123, 134, 144, 154, 169, 171, 175, + 174, 142, 61, 49, 45, 49, 69, 87, 116, 204, 230, 228, 213, 130, 127, 130, + 127, 136, 135, 131, 122, 107, 42, 26, 22, 42, 67, 75, 79, 97, 97, 120, + 237, 238, 236, 124, 116, 126, 135, 147, 158, 169, 175, 169, 158, 154, 143, 72, + 45, 40, 60, 87, 96, 93, 79, 26, 42, 139, 148, 126, 131, 142, 139, 120, + 131, 139, 97, 159, 206, 201, 124, 106, 118, 124, 130, 131, 157, 162, 181, 175, + 174, 187, 197, 199, 201, 128, 79, 71, 77, 87, 150, 209, 230, 228, 226, 193, + 181, 197, 206, 208, 206, 205, 183, 181, 171, 162, 161, 142, 127, 127, 83, 96, + 112, 143, 134, 77, 44, 124, 178, 173, 178, 190, 193, 222, 229, 218, 122, 118, + 127, 138, 134, 150, 159, 167, 169, 163, 157, 143, 84, 55, 46, 73, 130, 153, + 155, 154, 159, 161, 159, 162, 163, 115, 41, 138, 162, 170, 170, 166, 166, 163, + 157, 140, 107, 97, 53, 67, 154, 161, 106, 120, 143, 114, 85, 161, 132, 102, + 122, 134, 140, 146, 148, 134, 135, 147, 107, 97, 112, 175, 204, 217, 194, 189, + 191, 182, 175, 173, 162, 155, 147, 122, 17, 24, 29, 53, 89, 102, 88, 84, + 60, 87, 84, 76, 37, 55, 25, 10, 127, 123, 100, 114, 111, 111, 110, 112, + 119, 140, 153, 146, 140, 147, 132, 127, 131, 116, 79, 29, 38, 44, 14, 38, + 63, 96, 84, 76, 76, 65, 63, 63, 69, 56, 44, 118, 212, 238, 237, 209, + 112, 85, 77, 51, 21, 13, 14, 14, 44, 57, 49, 48, 37, 55, 103, 236, + 228, 210, 106, 103, 114, 126, 130, 124, 130, 140, 157, 159, 150, 135, 142, 130, + 28, 28, 9, 59, 44, 53, 55, 68, 77, 69, 68, 52, 75, 96, 224, 221, + 224, 216, 127, 103, 112, 123, 146, 148, 132, 123, 132, 139, 136, 146, 144, 120, + 49, 26, 26, 33, 67, 67, 75, 52, 61, 112, 206, 206, 173, 126, 132, 134, + 146, 151, 161, 166, 163, 171, 177, 182, 178, 177, 167, 96, 46, 32, 67, 79, + 83, 108, 201, 225, 208, 173, 175, 186, 194, 197, 189, 161, 163, 177, 179, 167, + 159, 144, 136, 103, 96, 95, 97, 95, 89, 89, 96, 190, 237, 185, 147, 157, + 165, 144, 147, 178, 189, 194, 197, 166, 51, 37, 30, 69, 91, 108, 195, 237, + 236, 232, 189, 187, 181, 178, 175, 166, 147, 128, 81, 30, 29, 28, 42, 60, + 65, 48, 32, 106, 123, 112, 122, 112, 112, 123, 111, 102, 102, 61, 49, 118, + 128, 111, 110, 106, 96, 92, 107, 97, 87, 106, 48, 21, 107, 126, 115, 104, + 99, 106, 111, 115, 88, 80, 36, 116, 119, 122, 221, 244, 241, 222, 112, 110, + 115, 120, 132, 157, 166, 167, 166, 161, 144, 138, 127, 139, 144, 150, 116, 69, + 42, 42, 69, 53, 65, 80, 84, 79, 79, 83, 81, 99, 119, 127, 135, 128, + 157, 213, 245, 249, 248, 242, 163, 126, 119, 71, 46, 44, 38, 57, 63, 65, + 76, 81, 106, 230, 232, 224, 134, 134, 128, 138, 124, 118, 114, 119, 130, 119, + 110, 34, 33, 30, 60, 80, 95, 97, 89, 93, 69, 28, 122, 134, 127, 170, + 216, 218, 153, 118, 124, 135, 146, 153, 162, 170, 167, 175, 159, 118, 71, 73, + 79, 102, 126, 181, 206, 230, 222, 221, 128, 126, 130, 130, 130, 135, 123, 118, + 77, 30, 25, 24, 46, 65, 73, 91, 103, 107, 131, 236, 238, 234, 123, 119, + 127, 139, 148, 159, 169, 175, 166, 162, 157, 144, 83, 48, 42, 63, 92, 91, + 95, 93, 29, 157, 163, 159, 148, 148, 155, 148, 136, 146, 139, 107, 119, 195, + 190, 122, 108, 119, 123, 128, 132, 138, 170, 178, 185, 166, 181, 187, 197, 209, + 169, 104, 85, 97, 139, 159, 224, 228, 229, 226, 194, 175, 183, 194, 190, 193, + 194, 186, 181, 174, 170, 167, 157, 134, 127, 91, 108, 138, 147, 146, 69, 36, + 135, 179, 175, 189, 190, 193, 226, 233, 226, 118, 118, 127, 138, 131, 144, 161, + 171, 169, 162, 155, 146, 108, 63, 55, 80, 135, 154, 161, 158, 169, 162, 154, + 157, 161, 161, 41, 140, 167, 167, 158, 153, 153, 153, 153, 163, 131, 107, 28, + 148, 155, 153, 151, 150, 142, 132, 130, 77, 76, 75, 107, 134, 111, 119, 118, + 95, 77, 88, 79, 87, 103, 161, 205, 217, 201, 182, 191, 181, 177, 174, 162, + 155, 146, 115, 17, 24, 41, 59, 89, 111, 100, 55, 49, 56, 26, 55, 37, + 32, 18, 17, 119, 114, 77, 119, 112, 108, 110, 110, 107, 116, 139, 155, 144, + 138, 144, 128, 136, 127, 114, 71, 46, 42, 41, 36, 61, 93, 71, 69, 65, + 60, 63, 59, 59, 76, 120, 182, 232, 238, 234, 193, 110, 85, 59, 26, 16, + 12, 13, 14, 30, 53, 48, 34, 37, 72, 191, 234, 229, 216, 111, 103, 114, + 128, 130, 143, 131, 127, 143, 154, 153, 138, 143, 118, 30, 26, 13, 45, 48, + 44, 72, 51, 52, 55, 51, 51, 76, 150, 214, 218, 224, 214, 127, 122, 111, + 122, 136, 136, 146, 135, 122, 123, 131, 135, 144, 122, 56, 24, 21, 34, 69, + 83, 57, 56, 64, 93, 193, 206, 171, 130, 123, 130, 143, 148, 157, 163, 162, + 163, 167, 171, 177, 171, 170, 124, 56, 53, 72, 72, 87, 96, 159, 224, 209, + 171, 171, 182, 194, 195, 195, 179, 155, 162, 177, 174, 167, 157, 140, 134, 126, + 119, 99, 89, 93, 91, 83, 128, 224, 197, 153, 157, 171, 148, 147, 183, 194, + 201, 202, 186, 81, 42, 32, 38, 95, 116, 212, 238, 237, 234, 186, 186, 181, + 175, 178, 169, 146, 120, 53, 29, 28, 18, 46, 46, 56, 55, 38, 67, 88, + 120, 80, 114, 108, 106, 104, 110, 99, 64, 48, 80, 127, 114, 120, 92, 95, + 108, 89, 96, 97, 96, 53, 18, 106, 119, 104, 110, 116, 110, 112, 93, 84, + 84, 46, 103, 108, 130, 229, 241, 241, 220, 115, 112, 118, 119, 130, 151, 165, + 171, 165, 159, 159, 154, 138, 142, 150, 150, 123, 99, 44, 46, 68, 48, 60, + 63, 69, 72, 73, 72, 97, 99, 128, 135, 130, 159, 202, 240, 246, 250, 248, + 229, 136, 123, 112, 60, 44, 38, 42, 56, 60, 68, 79, 92, 135, 217, 225, + 224, 135, 120, 126, 130, 120, 124, 116, 116, 126, 127, 110, 34, 29, 42, 48, + 52, 96, 102, 89, 85, 81, 22, 127, 132, 124, 138, 202, 216, 185, 122, 120, + 135, 142, 151, 158, 169, 169, 178, 178, 161, 124, 127, 144, 171, 195, 209, 205, + 233, 217, 216, 130, 128, 130, 130, 136, 131, 120, 97, 37, 25, 24, 32, 60, + 61, 69, 93, 100, 108, 132, 233, 240, 232, 123, 115, 124, 134, 148, 159, 169, + 173, 167, 158, 154, 146, 119, 55, 44, 71, 84, 89, 89, 83, 29, 166, 166, + 177, 165, 161, 157, 139, 138, 153, 157, 130, 93, 155, 193, 131, 103, 119, 124, + 128, 135, 131, 158, 162, 174, 162, 173, 179, 193, 199, 209, 178, 151, 171, 194, + 221, 226, 228, 225, 226, 189, 173, 173, 182, 185, 182, 187, 185, 186, 179, 170, + 163, 166, 150, 131, 95, 115, 132, 153, 138, 63, 38, 115, 169, 183, 179, 190, + 202, 232, 229, 228, 120, 116, 127, 140, 135, 148, 161, 170, 169, 163, 154, 146, + 128, 73, 61, 83, 139, 154, 163, 167, 167, 169, 162, 153, 162, 120, 55, 131, + 162, 167, 158, 158, 153, 151, 151, 158, 139, 118, 42, 161, 159, 150, 146, 142, + 140, 130, 124, 123, 110, 108, 99, 96, 96, 95, 84, 81, 79, 76, 72, 92, + 106, 170, 213, 224, 202, 178, 189, 183, 177, 174, 163, 153, 144, 107, 16, 25, + 40, 85, 96, 100, 99, 48, 57, 63, 45, 40, 79, 40, 18, 12, 122, 107, + 80, 69, 103, 118, 111, 111, 110, 108, 119, 139, 147, 146, 144, 139, 122, 131, + 130, 111, 89, 75, 73, 64, 83, 83, 102, 73, 63, 61, 64, 79, 120, 177, + 216, 234, 241, 237, 216, 169, 95, 69, 37, 18, 13, 13, 14, 20, 38, 46, + 46, 40, 52, 115, 218, 224, 230, 214, 99, 97, 116, 126, 127, 143, 122, 124, + 130, 148, 143, 135, 140, 119, 34, 30, 40, 77, 75, 45, 56, 45, 61, 45, + 49, 45, 75, 162, 210, 214, 214, 197, 127, 108, 116, 132, 146, 140, 150, 151, + 139, 120, 119, 134, 139, 123, 49, 37, 37, 41, 69, 75, 67, 52, 57, 64, + 187, 208, 170, 120, 128, 128, 142, 146, 154, 162, 166, 155, 155, 159, 161, 169, + 169, 143, 88, 57, 42, 57, 81, 84, 135, 214, 217, 171, 169, 179, 189, 193, + 195, 194, 183, 153, 162, 181, 174, 162, 155, 144, 136, 139, 139, 112, 92, 84, + 87, 97, 193, 221, 169, 159, 171, 147, 150, 187, 198, 206, 208, 201, 148, 77, + 37, 40, 103, 159, 222, 237, 238, 234, 191, 187, 177, 175, 177, 166, 139, 108, + 34, 28, 26, 22, 55, 48, 53, 56, 41, 46, 119, 124, 114, 118, 112, 107, + 107, 104, 95, 64, 53, 83, 130, 97, 104, 93, 112, 99, 89, 99, 96, 95, + 60, 24, 107, 120, 100, 97, 99, 87, 100, 89, 80, 65, 69, 104, 118, 178, + 230, 246, 240, 217, 116, 115, 120, 112, 124, 146, 159, 166, 171, 167, 162, 157, + 147, 132, 138, 154, 140, 108, 48, 48, 53, 60, 61, 79, 83, 77, 73, 79, + 92, 111, 134, 132, 147, 194, 238, 245, 249, 249, 248, 173, 124, 123, 99, 48, + 40, 26, 44, 52, 61, 75, 79, 91, 187, 214, 221, 212, 131, 123, 128, 134, + 123, 124, 126, 111, 118, 126, 115, 40, 32, 32, 46, 80, 93, 102, 80, 83, + 81, 18, 123, 132, 124, 126, 148, 204, 199, 128, 122, 130, 138, 147, 148, 157, + 154, 181, 183, 182, 174, 189, 201, 205, 212, 210, 218, 209, 217, 169, 130, 130, + 136, 140, 135, 126, 120, 46, 28, 24, 22, 42, 56, 64, 72, 92, 99, 108, + 190, 234, 237, 233, 124, 111, 124, 132, 147, 155, 167, 169, 170, 165, 157, 151, + 144, 72, 52, 53, 85, 91, 89, 87, 37, 119, 170, 177, 171, 167, 177, 162, + 157, 155, 148, 155, 87, 107, 190, 147, 107, 110, 123, 127, 131, 132, 138, 163, + 165, 161, 169, 174, 186, 191, 208, 216, 212, 220, 221, 226, 224, 224, 229, 212, + 189, 167, 170, 150, 171, 177, 185, 185, 183, 185, 175, 173, 166, 166, 146, 123, + 116, 139, 151, 87, 57, 32, 104, 169, 170, 173, 175, 187, 229, 238, 228, 122, + 116, 126, 138, 132, 154, 163, 169, 166, 165, 158, 148, 139, 92, 67, 97, 132, + 153, 166, 166, 169, 170, 170, 169, 151, 132, 52, 124, 163, 165, 154, 155, 151, + 153, 153, 153, 128, 118, 48, 120, 161, 139, 140, 143, 140, 128, 119, 127, 126, + 115, 107, 91, 91, 83, 80, 79, 75, 77, 88, 106, 112, 187, 218, 226, 191, + 175, 186, 182, 177, 174, 165, 150, 139, 67, 16, 25, 41, 102, 96, 100, 106, + 69, 42, 56, 59, 33, 33, 38, 20, 10, 104, 92, 72, 61, 52, 81, 119, + 115, 111, 108, 106, 114, 140, 151, 148, 151, 142, 124, 123, 118, 151, 123, 111, + 107, 112, 116, 123, 123, 124, 123, 146, 183, 213, 229, 240, 238, 236, 224, 193, + 112, 80, 42, 20, 13, 10, 12, 16, 30, 41, 33, 44, 44, 123, 186, 233, + 226, 229, 221, 114, 97, 108, 120, 135, 140, 127, 132, 124, 135, 136, 136, 138, + 127, 92, 65, 33, 68, 79, 77, 56, 55, 60, 71, 48, 60, 95, 183, 208, + 212, 217, 159, 112, 116, 122, 130, 135, 148, 148, 150, 148, 138, 115, 122, 136, + 128, 99, 51, 45, 45, 75, 56, 60, 52, 56, 55, 165, 206, 170, 118, 126, + 128, 140, 148, 154, 159, 163, 151, 151, 146, 146, 154, 162, 153, 104, 59, 30, + 53, 73, 85, 114, 198, 216, 179, 166, 177, 186, 189, 193, 194, 195, 183, 157, + 162, 175, 171, 162, 155, 150, 139, 139, 136, 108, 84, 91, 92, 142, 229, 182, + 162, 169, 151, 187, 193, 206, 212, 210, 212, 194, 118, 49, 55, 114, 190, 234, + 237, 238, 229, 187, 186, 183, 177, 174, 154, 139, 88, 29, 26, 26, 36, 52, + 56, 45, 60, 51, 44, 108, 123, 112, 118, 107, 107, 115, 104, 103, 71, 55, + 85, 122, 110, 104, 93, 102, 84, 97, 92, 95, 97, 59, 14, 112, 119, 92, + 100, 92, 96, 81, 65, 69, 99, 89, 103, 124, 220, 238, 234, 242, 206, 118, + 120, 122, 123, 116, 135, 157, 165, 167, 169, 166, 162, 158, 142, 146, 140, 159, + 123, 106, 89, 85, 95, 97, 99, 100, 108, 108, 104, 103, 122, 138, 131, 191, + 234, 238, 242, 248, 245, 224, 130, 126, 119, 69, 45, 38, 34, 48, 56, 69, + 75, 85, 186, 214, 214, 222, 204, 118, 132, 139, 130, 136, 136, 140, 131, 112, + 127, 122, 52, 28, 32, 67, 77, 80, 97, 102, 76, 73, 18, 120, 124, 124, + 128, 127, 150, 201, 136, 122, 127, 131, 138, 140, 140, 142, 144, 159, 187, 186, + 197, 199, 209, 214, 216, 206, 212, 193, 130, 128, 138, 139, 138, 128, 127, 65, + 28, 24, 21, 21, 56, 63, 68, 91, 96, 103, 128, 217, 230, 236, 230, 126, + 115, 122, 131, 140, 151, 163, 167, 169, 167, 159, 150, 136, 116, 67, 52, 56, + 92, 88, 87, 45, 115, 170, 178, 157, 169, 174, 148, 171, 151, 150, 147, 100, + 79, 181, 185, 115, 100, 118, 127, 131, 130, 130, 147, 148, 158, 169, 175, 177, + 183, 189, 204, 201, 212, 218, 218, 222, 220, 213, 198, 179, 169, 147, 147, 146, + 151, 171, 174, 183, 182, 178, 169, 169, 170, 166, 138, 120, 147, 112, 61, 34, + 37, 96, 165, 173, 179, 179, 195, 230, 234, 230, 128, 120, 126, 135, 135, 163, + 165, 167, 167, 165, 158, 147, 142, 131, 79, 112, 140, 161, 158, 166, 167, 163, + 167, 171, 163, 147, 71, 127, 163, 167, 155, 148, 157, 155, 147, 151, 134, 116, + 45, 135, 155, 144, 148, 135, 136, 128, 134, 123, 136, 122, 118, 107, 97, 88, + 84, 79, 75, 80, 75, 107, 126, 209, 222, 225, 170, 169, 186, 185, 177, 171, + 163, 148, 136, 57, 17, 24, 42, 99, 100, 106, 92, 77, 42, 44, 56, 64, + 16, 42, 20, 10, 97, 93, 75, 71, 65, 45, 56, 85, 115, 116, 111, 107, + 111, 134, 153, 146, 136, 130, 122, 154, 170, 181, 179, 187, 193, 189, 194, 190, + 197, 209, 216, 229, 233, 236, 234, 224, 222, 182, 130, 79, 44, 22, 14, 12, + 13, 22, 32, 38, 34, 60, 116, 162, 189, 216, 214, 222, 230, 214, 119, 91, + 116, 112, 123, 138, 151, 154, 135, 128, 127, 140, 138, 144, 122, 107, 108, 110, + 118, 104, 83, 64, 51, 69, 46, 68, 138, 201, 209, 210, 206, 155, 119, 110, + 114, 130, 143, 148, 138, 154, 153, 144, 135, 115, 128, 128, 114, 96, 59, 55, + 76, 72, 59, 53, 44, 55, 130, 210, 185, 115, 123, 130, 143, 148, 154, 161, + 143, 139, 135, 132, 131, 135, 148, 153, 131, 96, 64, 36, 60, 77, 100, 157, + 210, 182, 163, 169, 178, 185, 187, 186, 190, 189, 177, 158, 169, 175, 167, 162, + 150, 139, 138, 134, 100, 87, 81, 87, 93, 190, 220, 163, 163, 147, 194, 205, + 212, 214, 214, 214, 214, 186, 134, 142, 191, 229, 238, 238, 238, 221, 195, 189, + 182, 178, 167, 143, 126, 52, 26, 24, 26, 38, 59, 55, 68, 68, 57, 45, + 112, 126, 88, 114, 100, 96, 112, 118, 104, 91, 55, 68, 124, 92, 104, 92, + 88, 87, 100, 93, 84, 100, 45, 20, 106, 115, 89, 95, 81, 85, 95, 91, + 95, 100, 107, 150, 213, 230, 238, 240, 236, 193, 119, 124, 114, 124, 128, 119, + 144, 157, 162, 165, 162, 162, 161, 159, 150, 134, 150, 163, 124, 120, 122, 120, + 120, 126, 123, 123, 122, 120, 115, 126, 154, 197, 232, 236, 240, 245, 244, 237, + 148, 123, 128, 114, 57, 40, 34, 40, 63, 67, 68, 81, 189, 212, 217, 220, + 213, 205, 127, 119, 131, 126, 144, 130, 136, 132, 136, 119, 123, 104, 32, 51, + 37, 40, 80, 99, 99, 80, 61, 30, 112, 123, 127, 114, 118, 124, 136, 182, + 174, 128, 128, 127, 131, 132, 132, 132, 135, 135, 136, 147, 165, 170, 173, 182, + 187, 165, 130, 132, 132, 132, 130, 126, 120, 56, 28, 22, 21, 18, 29, 44, + 56, 72, 93, 97, 108, 191, 229, 230, 234, 225, 128, 119, 127, 134, 140, 148, + 161, 167, 167, 169, 163, 158, 144, 142, 112, 80, 65, 61, 67, 88, 44, 122, + 171, 178, 177, 163, 157, 153, 153, 169, 142, 148, 95, 65, 158, 182, 140, 99, + 108, 124, 128, 132, 128, 128, 132, 157, 167, 163, 174, 169, 169, 165, 159, 181, + 191, 197, 205, 202, 190, 166, 143, 147, 144, 143, 144, 147, 146, 150, 163, 165, + 162, 159, 165, 157, 147, 131, 138, 110, 59, 30, 37, 37, 92, 155, 175, 190, + 177, 208, 222, 230, 230, 134, 120, 120, 136, 154, 165, 173, 167, 165, 165, 158, + 153, 140, 146, 124, 97, 89, 108, 135, 159, 167, 165, 165, 174, 144, 169, 67, + 104, 161, 161, 155, 159, 159, 153, 151, 150, 131, 119, 28, 135, 154, 162, 153, + 144, 139, 134, 127, 122, 140, 135, 103, 115, 108, 107, 100, 88, 89, 87, 89, + 93, 148, 220, 229, 225, 161, 163, 181, 183, 177, 171, 162, 150, 135, 46, 20, + 25, 41, 99, 97, 102, 79, 34, 32, 22, 24, 17, 18, 25, 14, 13, 87, + 83, 72, 59, 56, 59, 45, 37, 53, 84, 107, 112, 108, 111, 118, 128, 135, + 142, 142, 146, 146, 158, 177, 189, 199, 205, 213, 210, 214, 221, 226, 228, 224, + 222, 220, 202, 163, 119, 76, 40, 21, 14, 12, 12, 20, 26, 41, 32, 127, + 169, 206, 217, 201, 209, 209, 218, 214, 159, 115, 92, 140, 120, 130, 136, 138, + 131, 138, 144, 136, 131, 151, 138, 140, 134, 142, 148, 165, 143, 128, 100, 77, + 40, 40, 72, 162, 198, 202, 204, 210, 146, 122, 119, 119, 148, 150, 142, 142, + 138, 135, 138, 143, 132, 112, 130, 126, 111, 85, 110, 93, 87, 51, 59, 48, + 51, 92, 193, 195, 132, 114, 130, 140, 143, 143, 142, 138, 132, 130, 123, 122, + 120, 123, 139, 139, 114, 79, 29, 46, 71, 87, 111, 186, 201, 158, 163, 171, + 179, 181, 183, 185, 189, 187, 165, 158, 171, 173, 161, 144, 143, 135, 110, 71, + 49, 72, 81, 87, 114, 214, 177, 170, 154, 197, 206, 217, 217, 220, 214, 222, + 216, 212, 217, 233, 234, 234, 237, 237, 209, 190, 191, 186, 174, 147, 136, 91, + 30, 25, 24, 29, 46, 59, 57, 67, 63, 64, 41, 96, 95, 119, 106, 115, + 122, 118, 115, 104, 102, 52, 60, 89, 118, 115, 80, 91, 84, 92, 99, 96, + 95, 52, 17, 102, 107, 106, 89, 88, 88, 93, 100, 130, 183, 201, 226, 222, + 234, 229, 234, 232, 161, 122, 123, 130, 136, 148, 128, 123, 143, 150, 150, 150, + 153, 157, 157, 159, 150, 143, 157, 166, 157, 177, 185, 195, 204, 209, 212, 216, + 221, 224, 222, 226, 228, 230, 236, 241, 242, 230, 162, 123, 128, 126, 92, 41, + 34, 33, 45, 65, 69, 100, 165, 228, 214, 212, 225, 221, 167, 132, 135, 142, + 138, 140, 134, 146, 130, 134, 122, 120, 104, 76, 61, 40, 38, 38, 93, 97, + 76, 77, 26, 112, 116, 114, 112, 112, 107, 120, 124, 128, 131, 132, 158, 159, + 154, 151, 151, 147, 144, 142, 136, 136, 134, 134, 134, 135, 132, 130, 130, 126, + 126, 122, 89, 41, 26, 22, 20, 18, 24, 59, 52, 68, 89, 97, 104, 171, + 217, 225, 228, 232, 218, 127, 120, 122, 134, 140, 144, 148, 157, 162, 162, 159, + 154, 153, 147, 148, 122, 111, 100, 83, 63, 42, 95, 171, 167, 175, 144, 169, + 165, 165, 167, 146, 148, 106, 72, 126, 175, 186, 118, 107, 116, 124, 124, 127, + 128, 131, 134, 135, 139, 138, 138, 147, 135, 134, 131, 132, 136, 134, 132, 134, + 136, 136, 142, 143, 144, 147, 146, 144, 148, 146, 142, 140, 140, 140, 135, 144, + 144, 114, 55, 32, 28, 52, 33, 91, 154, 161, 170, 212, 217, 217, 229, 222, + 131, 127, 128, 135, 157, 162, 166, 161, 166, 166, 161, 158, 148, 139, 144, 153, + 140, 116, 118, 107, 159, 162, 161, 158, 143, 150, 72, 88, 167, 155, 155, 157, + 155, 151, 148, 140, 124, 115, 41, 131, 153, 154, 153, 128, 132, 127, 120, 111, + 108, 110, 96, 115, 115, 112, 106, 97, 100, 97, 104, 108, 170, 228, 229, 218, + 153, 158, 167, 179, 179, 170, 163, 150, 132, 41, 21, 24, 46, 97, 99, 102, + 16, 16, 13, 22, 12, 13, 30, 21, 17, 9, 75, 73, 72, 61, 79, 63, + 57, 45, 33, 33, 46, 69, 97, 107, 110, 108, 108, 115, 114, 123, 123, 128, + 134, 148, 171, 182, 190, 205, 209, 206, 208, 208, 204, 186, 163, 120, 83, 61, + 36, 21, 14, 9, 12, 10, 18, 28, 28, 102, 230, 191, 202, 194, 206, 205, + 213, 181, 146, 123, 110, 119, 120, 120, 116, 122, 115, 120, 119, 123, 122, 126, + 130, 124, 134, 147, 136, 140, 140, 135, 136, 153, 76, 38, 57, 95, 218, 190, + 194, 199, 202, 139, 123, 128, 139, 123, 143, 142, 139, 127, 130, 127, 127, 127, + 124, 126, 127, 112, 118, 115, 107, 79, 49, 51, 52, 46, 59, 151, 198, 157, + 110, 128, 132, 136, 139, 138, 131, 130, 123, 120, 118, 112, 111, 107, 114, 127, + 88, 77, 69, 55, 68, 85, 136, 204, 169, 159, 166, 169, 167, 174, 177, 182, + 186, 181, 161, 161, 166, 154, 143, 143, 123, 76, 42, 40, 40, 81, 79, 79, + 169, 190, 182, 140, 190, 205, 208, 213, 218, 224, 222, 225, 224, 226, 233, 232, + 236, 233, 225, 199, 195, 189, 183, 169, 138, 104, 45, 28, 25, 24, 24, 51, + 59, 57, 61, 68, 67, 44, 75, 104, 118, 115, 97, 103, 96, 111, 91, 68, + 56, 53, 91, 120, 99, 76, 93, 91, 92, 97, 104, 69, 52, 13, 91, 103, + 95, 97, 63, 85, 106, 198, 218, 214, 218, 238, 221, 232, 246, 229, 204, 130, + 123, 124, 144, 146, 138, 146, 136, 134, 134, 131, 135, 138, 131, 135, 139, 144, + 153, 150, 139, 174, 175, 187, 195, 204, 208, 213, 217, 220, 222, 225, 228, 232, + 233, 234, 232, 206, 144, 122, 124, 131, 122, 61, 36, 33, 36, 55, 65, 104, + 191, 198, 204, 213, 218, 236, 214, 150, 130, 119, 127, 127, 140, 136, 126, 139, + 126, 126, 134, 107, 91, 84, 75, 61, 36, 55, 95, 71, 75, 24, 108, 118, + 110, 88, 80, 85, 95, 93, 89, 88, 88, 102, 116, 120, 123, 119, 115, 119, + 123, 122, 122, 120, 118, 119, 123, 122, 120, 112, 108, 83, 44, 32, 24, 21, + 18, 16, 21, 28, 48, 56, 88, 95, 106, 175, 214, 218, 220, 225, 228, 163, + 127, 118, 127, 142, 138, 139, 146, 144, 151, 154, 159, 158, 153, 150, 143, 144, + 155, 153, 118, 88, 72, 46, 128, 173, 146, 170, 144, 165, 153, 159, 139, 148, + 140, 59, 116, 166, 165, 165, 157, 150, 147, 148, 143, 120, 119, 123, 124, 130, + 131, 131, 128, 127, 134, 127, 112, 108, 102, 96, 96, 108, 122, 128, 136, 140, + 142, 139, 132, 138, 139, 142, 143, 143, 142, 142, 134, 112, 55, 41, 30, 25, + 53, 32, 91, 158, 170, 213, 222, 220, 218, 230, 202, 131, 123, 136, 143, 146, + 153, 159, 163, 163, 163, 161, 157, 158, 154, 146, 144, 144, 161, 155, 134, 115, + 116, 120, 139, 131, 146, 68, 89, 165, 163, 157, 157, 157, 139, 142, 150, 110, + 114, 48, 136, 162, 151, 140, 132, 126, 119, 106, 104, 104, 96, 123, 112, 110, + 111, 103, 99, 102, 80, 107, 114, 185, 226, 232, 216, 147, 151, 157, 171, 178, + 169, 161, 150, 126, 30, 22, 22, 42, 97, 96, 100, 12, 17, 17, 24, 13, + 24, 36, 36, 16, 8, 68, 67, 61, 71, 52, 49, 41, 37, 34, 32, 26, + 22, 33, 41, 64, 83, 97, 100, 106, 106, 106, 107, 108, 115, 123, 130, 134, + 142, 159, 158, 151, 148, 119, 91, 75, 52, 25, 20, 18, 14, 9, 10, 14, + 12, 30, 37, 30, 144, 190, 213, 193, 195, 179, 158, 136, 124, 112, 92, 87, + 83, 85, 89, 92, 95, 96, 99, 103, 104, 103, 106, 107, 112, 118, 120, 120, + 119, 123, 126, 127, 114, 77, 37, 68, 153, 175, 181, 155, 158, 136, 130, 108, + 114, 119, 112, 119, 119, 122, 115, 126, 127, 119, 131, 127, 122, 112, 110, 110, + 106, 96, 45, 25, 33, 48, 41, 45, 104, 178, 186, 108, 120, 118, 120, 122, + 122, 119, 123, 118, 118, 114, 112, 108, 110, 106, 103, 95, 85, 49, 46, 53, + 67, 100, 163, 181, 155, 159, 165, 163, 158, 167, 171, 173, 178, 175, 165, 146, + 144, 147, 130, 91, 53, 38, 32, 32, 59, 76, 80, 138, 204, 182, 158, 170, + 191, 205, 206, 210, 210, 209, 209, 210, 208, 210, 210, 212, 209, 202, 191, 186, + 182, 173, 143, 116, 42, 24, 24, 24, 25, 28, 52, 51, 55, 64, 61, 65, + 57, 53, 56, 61, 73, 55, 57, 65, 57, 57, 75, 72, 64, 65, 73, 79, + 91, 79, 80, 80, 80, 76, 79, 45, 10, 48, 85, 89, 68, 73, 89, 169, + 210, 210, 214, 228, 248, 221, 217, 210, 159, 131, 123, 128, 138, 140, 140, 143, + 143, 140, 138, 132, 136, 139, 135, 134, 130, 127, 128, 130, 131, 128, 128, 130, + 130, 139, 147, 165, 189, 194, 206, 206, 204, 201, 205, 205, 193, 166, 126, 120, + 123, 130, 131, 107, 37, 30, 21, 60, 60, 85, 177, 193, 198, 213, 206, 208, + 181, 150, 136, 120, 138, 127, 126, 130, 134, 116, 122, 112, 119, 110, 130, 115, + 116, 104, 89, 37, 46, 95, 67, 68, 28, 112, 111, 76, 76, 69, 75, 71, + 72, 63, 61, 53, 49, 46, 46, 48, 44, 42, 41, 42, 38, 37, 34, 30, + 33, 37, 34, 33, 30, 28, 28, 22, 20, 18, 17, 17, 22, 37, 51, 42, + 88, 87, 107, 174, 208, 206, 205, 217, 221, 191, 142, 126, 131, 140, 136, 138, + 142, 139, 142, 143, 142, 148, 143, 139, 146, 144, 131, 132, 136, 161, 144, 72, + 45, 110, 114, 118, 120, 126, 128, 135, 135, 140, 139, 104, 37, 91, 124, 142, + 127, 116, 110, 116, 116, 120, 123, 120, 118, 116, 123, 123, 116, 114, 111, 88, + 55, 37, 33, 29, 30, 30, 36, 68, 102, 110, 114, 116, 112, 107, 108, 112, + 111, 110, 110, 107, 97, 61, 44, 34, 28, 25, 42, 60, 42, 148, 189, 204, + 216, 209, 199, 221, 218, 150, 128, 131, 143, 138, 138, 138, 146, 148, 150, 150, + 148, 147, 148, 146, 151, 150, 144, 146, 163, 158, 147, 131, 126, 120, 122, 102, + 85, 97, 134, 148, 159, 150, 151, 136, 140, 147, 126, 112, 42, 131, 135, 130, + 124, 108, 104, 91, 107, 112, 104, 93, 89, 95, 114, 111, 116, 107, 106, 99, + 112, 123, 199, 230, 232, 213, 144, 150, 154, 165, 173, 167, 161, 146, 107, 25, + 24, 21, 44, 81, 88, 87, 30, 25, 24, 26, 26, 33, 28, 25, 13, 6, + 56, 61, 45, 48, 44, 41, 32, 33, 26, 26, 22, 21, 20, 21, 17, 17, + 22, 34, 41, 55, 67, 89, 89, 91, 89, 85, 87, 81, 77, 75, 71, 59, + 36, 24, 20, 16, 14, 12, 8, 8, 16, 22, 21, 17, 25, 18, 20, 76, + 124, 144, 138, 135, 138, 88, 76, 65, 60, 44, 24, 25, 24, 21, 21, 22, + 24, 26, 28, 33, 33, 32, 37, 69, 80, 87, 85, 83, 81, 96, 88, 63, + 33, 46, 64, 128, 130, 140, 139, 143, 116, 93, 84, 85, 100, 102, 99, 97, + 103, 103, 110, 107, 106, 106, 108, 103, 96, 92, 93, 85, 49, 22, 22, 20, + 24, 44, 34, 42, 107, 128, 110, 115, 92, 110, 111, 116, 114, 114, 112, 108, + 103, 102, 96, 104, 96, 97, 96, 81, 26, 30, 65, 45, 75, 100, 166, 171, + 154, 159, 158, 158, 158, 161, 162, 161, 155, 150, 146, 144, 130, 103, 55, 38, + 34, 36, 38, 45, 80, 76, 171, 191, 189, 173, 126, 157, 189, 193, 195, 198, + 198, 197, 195, 191, 185, 183, 186, 187, 185, 182, 167, 148, 136, 108, 45, 26, + 24, 24, 33, 42, 37, 45, 33, 36, 53, 56, 61, 60, 65, 68, 84, 73, + 76, 73, 79, 79, 77, 75, 76, 73, 63, 79, 77, 52, 44, 24, 22, 34, + 33, 32, 30, 12, 29, 34, 46, 71, 65, 87, 162, 206, 220, 210, 212, 185, + 158, 142, 131, 123, 131, 124, 135, 134, 135, 135, 136, 136, 135, 131, 131, 130, + 128, 127, 127, 119, 124, 126, 126, 126, 127, 123, 124, 123, 120, 119, 118, 118, + 118, 120, 122, 122, 119, 118, 116, 116, 118, 118, 123, 127, 132, 127, 60, 25, + 28, 32, 60, 57, 144, 193, 189, 197, 209, 181, 147, 139, 124, 120, 108, 114, + 112, 108, 114, 110, 108, 100, 104, 106, 106, 104, 111, 103, 96, 92, 40, 55, + 72, 64, 56, 34, 107, 111, 77, 71, 69, 68, 67, 67, 61, 52, 46, 36, + 42, 37, 36, 36, 36, 32, 32, 32, 28, 25, 22, 26, 25, 24, 22, 21, + 18, 17, 17, 14, 21, 20, 26, 44, 34, 42, 56, 85, 95, 135, 195, 202, + 212, 204, 179, 163, 136, 128, 138, 132, 138, 132, 135, 130, 128, 131, 138, 138, + 139, 138, 134, 138, 138, 132, 130, 131, 138, 128, 46, 89, 103, 106, 104, 96, + 112, 108, 114, 106, 124, 119, 63, 37, 67, 75, 77, 68, 60, 49, 51, 42, + 42, 41, 45, 37, 36, 34, 34, 32, 32, 32, 30, 28, 25, 25, 22, 25, + 25, 29, 28, 30, 28, 26, 28, 29, 28, 26, 22, 28, 28, 29, 32, 32, + 29, 29, 25, 17, 25, 65, 65, 48, 154, 194, 220, 212, 216, 206, 174, 150, + 136, 132, 134, 136, 132, 126, 134, 136, 136, 140, 143, 143, 139, 135, 138, 134, + 127, 130, 147, 146, 148, 118, 128, 127, 135, 127, 112, 114, 106, 120, 126, 131, + 126, 135, 130, 143, 134, 115, 108, 25, 135, 148, 108, 95, 123, 139, 163, 186, + 177, 136, 111, 79, 85, 65, 87, 88, 93, 81, 102, 110, 146, 217, 229, 237, + 209, 140, 144, 148, 161, 170, 166, 154, 142, 75, 22, 22, 21, 48, 42, 33, + 40, 1, 5, 5, 10, 12, 13, 14, 13, 13, 6, 13, 16, 9, 10, 13, + 12, 9, 8, 8, 9, 8, 6, 5, 6, 5, 5, 5, 6, 6, 10, 9, + 8, 10, 10, 14, 13, 14, 13, 13, 13, 13, 13, 12, 10, 8, 5, 6, + 14, 25, 18, 26, 30, 28, 17, 17, 28, 20, 10, 24, 33, 32, 29, 26, + 16, 22, 24, 16, 12, 13, 13, 13, 12, 10, 12, 12, 12, 12, 14, 13, + 10, 8, 10, 13, 13, 13, 18, 21, 5, 9, 20, 20, 25, 14, 32, 44, + 46, 65, 30, 4, 5, 14, 16, 13, 13, 14, 16, 13, 13, 16, 13, 13, + 14, 16, 20, 20, 18, 18, 17, 22, 26, 34, 44, 41, 34, 26, 33, 30, + 25, 20, 9, 10, 16, 13, 12, 10, 10, 8, 8, 12, 6, 5, 10, 16, + 8, 8, 14, 12, 14, 17, 16, 29, 65, 99, 159, 161, 148, 147, 151, 150, + 154, 157, 153, 150, 144, 140, 128, 91, 49, 37, 33, 34, 33, 24, 48, 76, + 75, 159, 189, 202, 183, 139, 114, 114, 131, 126, 124, 119, 134, 127, 123, 120, + 120, 120, 123, 119, 118, 114, 69, 55, 33, 24, 24, 26, 28, 25, 24, 12, + 10, 26, 10, 10, 10, 12, 30, 10, 9, 20, 21, 10, 10, 20, 12, 12, + 10, 12, 20, 37, 34, 51, 49, 85, 99, 106, 104, 91, 83, 52, 12, 81, + 89, 89, 51, 67, 81, 112, 139, 157, 142, 139, 127, 111, 107, 108, 112, 114, + 112, 130, 130, 124, 128, 128, 131, 130, 128, 128, 128, 124, 127, 127, 124, 126, + 126, 126, 127, 124, 123, 123, 122, 122, 120, 120, 120, 119, 118, 120, 119, 119, + 119, 119, 120, 122, 124, 128, 131, 128, 96, 32, 24, 26, 28, 44, 53, 108, + 166, 183, 153, 144, 116, 102, 95, 97, 97, 100, 100, 100, 102, 102, 106, 106, + 106, 104, 108, 100, 100, 99, 102, 99, 73, 51, 51, 61, 64, 56, 32, 100, + 64, 57, 46, 44, 42, 42, 32, 33, 28, 26, 18, 17, 16, 16, 14, 16, + 14, 14, 14, 13, 13, 13, 14, 16, 17, 18, 20, 20, 21, 22, 26, 33, + 37, 53, 33, 42, 55, 97, 91, 107, 178, 175, 165, 153, 147, 138, 138, 130, + 123, 126, 126, 127, 126, 122, 122, 123, 122, 120, 128, 123, 126, 127, 120, 114, + 108, 110, 115, 114, 46, 72, 14, 10, 17, 12, 9, 12, 8, 16, 17, 6, + 21, 17, 8, 46, 42, 25, 8, 36, 18, 4, 4, 5, 8, 10, 12, 13, + 16, 16, 16, 16, 14, 13, 16, 17, 21, 22, 24, 22, 29, 29, 30, 25, + 24, 21, 21, 22, 22, 17, 22, 22, 22, 21, 20, 20, 13, 17, 21, 37, + 68, 72, 51, 166, 175, 191, 178, 177, 157, 135, 134, 128, 123, 124, 116, 120, + 120, 116, 118, 126, 127, 130, 128, 128, 124, 123, 120, 122, 120, 120, 116, 103, + 67, 36, 28, 34, 38, 37, 34, 48, 41, 36, 51, 69, 72, 69, 67, 87, + 91, 85, 33, 135, 99, 118, 146, 181, 191, 195, 197, 195, 193, 146, 107, 51, + 97, 120, 118, 112, 108, 110, 118, 161, 225, 236, 237, 198, 138, 143, 148, 161, + 167, 163, 151, 136, 46, 24, 22, 33, 46, 71, 79, 95, 56, 53, 53, 49, + 24, 12, 10, 8, 8, 9, 0, 1, 1, 5, 1, 1, 2, 4, 1, 2, + 4, 6, 5, 5, 6, 8, 8, 4, 1, 4, 2, 4, 2, 2, 2, 2, + 2, 2, 4, 4, 5, 6, 6, 9, 14, 16, 24, 20, 28, 30, 28, 34, + 38, 40, 49, 45, 20, 24, 34, 44, 30, 26, 22, 21, 24, 24, 22, 21, + 22, 24, 24, 21, 20, 18, 18, 21, 25, 22, 20, 18, 17, 14, 13, 18, + 26, 32, 13, 22, 33, 16, 17, 14, 36, 33, 42, 48, 45, 38, 33, 30, + 33, 32, 30, 28, 32, 29, 30, 28, 29, 32, 32, 29, 30, 30, 24, 26, + 26, 30, 24, 29, 55, 46, 49, 49, 52, 46, 33, 38, 34, 34, 37, 40, + 37, 32, 32, 33, 32, 28, 30, 32, 29, 26, 33, 34, 30, 30, 37, 44, + 45, 57, 63, 52, 52, 100, 148, 155, 163, 148, 154, 148, 153, 143, 146, 131, + 119, 72, 41, 37, 34, 24, 24, 24, 38, 67, 76, 140, 175, 198, 208, 181, + 127, 88, 67, 64, 61, 56, 57, 48, 46, 44, 48, 41, 44, 44, 42, 38, + 41, 36, 40, 38, 41, 30, 48, 38, 48, 41, 41, 41, 41, 41, 38, 38, + 38, 30, 9, 33, 100, 131, 89, 96, 99, 100, 95, 83, 89, 96, 107, 130, + 119, 128, 130, 100, 107, 104, 115, 102, 80, 18, 92, 88, 102, 99, 56, 71, + 81, 99, 85, 83, 81, 73, 73, 64, 60, 57, 49, 52, 41, 40, 36, 34, + 32, 30, 29, 33, 30, 33, 30, 30, 29, 30, 29, 30, 29, 29, 28, 33, + 30, 33, 32, 30, 33, 38, 42, 63, 96, 110, 119, 123, 124, 127, 126, 128, + 131, 127, 114, 45, 26, 21, 18, 30, 61, 49, 65, 73, 71, 72, 73, 75, + 29, 22, 21, 21, 20, 20, 20, 20, 17, 17, 18, 18, 24, 25, 24, 28, + 29, 29, 32, 30, 14, 8, 14, 12, 14, 34, 41, 64, 79, 71, 91, 95, + 84, 73, 88, 84, 72, 12, 49, 71, 68, 68, 49, 61, 46, 63, 38, 25, + 34, 48, 79, 85, 81, 81, 80, 84, 79, 81, 83, 75, 72, 32, 61, 89, + 100, 97, 118, 131, 135, 136, 124, 119, 110, 107, 100, 85, 69, 73, 60, 63, + 57, 55, 49, 52, 49, 51, 49, 51, 49, 53, 53, 55, 53, 60, 60, 53, + 17, 30, 103, 107, 114, 124, 124, 122, 130, 126, 128, 130, 76, 25, 104, 111, + 118, 111, 111, 102, 106, 67, 38, 25, 20, 13, 25, 21, 24, 18, 18, 17, + 20, 18, 13, 17, 14, 17, 8, 18, 22, 22, 14, 25, 21, 14, 9, 9, + 13, 13, 16, 18, 21, 21, 21, 26, 25, 44, 55, 69, 76, 46, 161, 142, + 146, 136, 138, 127, 111, 88, 75, 72, 56, 53, 48, 52, 41, 40, 40, 41, + 37, 38, 36, 33, 32, 30, 33, 32, 34, 34, 30, 34, 65, 68, 84, 91, + 84, 91, 103, 118, 130, 120, 107, 81, 80, 59, 56, 87, 89, 95, 88, 124, + 146, 186, 202, 201, 195, 218, 197, 187, 139, 114, 71, 107, 123, 127, 122, 122, + 115, 138, 191, 226, 236, 237, 185, 135, 139, 146, 158, 163, 158, 147, 114, 32, + 24, 26, 30, 67, 97, 122, 135, 108, 93, 83, 79, 48, 45, 37, 32, 12, + 1, 17, 68, 73, 67, 60, 71, 77, 67, 61, 57, 60, 63, 65, 71, 65, + 65, 55, 46, 25, 20, 14, 14, 13, 12, 13, 14, 20, 21, 18, 20, 21, + 26, 25, 28, 30, 30, 26, 37, 45, 53, 60, 55, 65, 59, 67, 55, 36, + 14, 65, 52, 33, 30, 30, 26, 28, 26, 26, 28, 26, 20, 26, 33, 34, + 30, 29, 29, 33, 26, 21, 16, 13, 13, 9, 12, 24, 24, 20, 17, 22, + 22, 21, 25, 20, 5, 52, 41, 34, 33, 33, 29, 38, 32, 28, 28, 30, + 28, 26, 17, 20, 33, 26, 28, 29, 32, 24, 32, 26, 25, 26, 51, 55, + 48, 49, 49, 52, 51, 53, 45, 12, 69, 57, 41, 42, 32, 36, 37, 34, + 33, 34, 36, 33, 37, 37, 40, 40, 38, 40, 42, 42, 52, 56, 60, 48, + 55, 135, 144, 142, 146, 136, 134, 131, 130, 112, 69, 55, 44, 40, 34, 38, + 28, 22, 36, 64, 96, 89, 143, 195, 202, 208, 166, 104, 59, 42, 37, 64, + 42, 42, 40, 46, 46, 44, 41, 45, 46, 46, 45, 41, 42, 38, 40, 38, + 41, 40, 37, 42, 48, 49, 49, 55, 56, 55, 60, 49, 32, 6, 108, 130, + 122, 116, 102, 103, 99, 122, 108, 118, 71, 99, 108, 106, 100, 112, 115, 104, + 104, 110, 114, 73, 13, 80, 97, 99, 104, 85, 60, 71, 77, 53, 45, 44, + 59, 41, 44, 41, 41, 38, 40, 29, 25, 25, 22, 25, 20, 20, 22, 22, + 22, 22, 21, 21, 21, 21, 21, 20, 20, 18, 21, 20, 20, 20, 20, 21, + 21, 20, 22, 26, 32, 40, 51, 64, 77, 87, 95, 95, 79, 44, 26, 25, + 24, 26, 36, 64, 65, 61, 48, 52, 53, 46, 56, 46, 46, 42, 40, 41, + 37, 32, 30, 30, 28, 26, 26, 21, 24, 22, 21, 21, 17, 17, 18, 18, + 22, 41, 26, 52, 37, 89, 134, 139, 142, 138, 140, 136, 135, 134, 103, 81, + 4, 103, 81, 85, 77, 72, 89, 104, 75, 77, 68, 36, 93, 112, 111, 107, + 104, 108, 104, 106, 102, 93, 88, 72, 30, 102, 103, 96, 114, 120, 123, 124, + 112, 111, 96, 99, 77, 61, 63, 60, 55, 48, 44, 40, 36, 34, 34, 29, + 30, 30, 29, 24, 24, 21, 21, 21, 20, 17, 16, 26, 24, 116, 128, 126, + 128, 135, 135, 135, 135, 138, 142, 87, 29, 143, 136, 134, 136, 132, 132, 132, + 112, 97, 77, 52, 14, 36, 84, 79, 41, 48, 71, 67, 41, 49, 61, 56, + 37, 51, 73, 68, 75, 72, 89, 71, 73, 63, 33, 8, 21, 41, 61, 44, + 44, 49, 52, 52, 59, 73, 81, 80, 40, 131, 120, 119, 87, 96, 88, 83, + 63, 64, 65, 63, 49, 48, 51, 51, 45, 45, 45, 44, 42, 44, 44, 42, + 44, 49, 49, 49, 51, 56, 71, 71, 87, 99, 110, 131, 91, 91, 131, 116, + 107, 120, 135, 139, 132, 120, 118, 108, 68, 131, 154, 182, 204, 197, 202, 206, + 178, 154, 132, 142, 106, 71, 104, 126, 135, 140, 134, 124, 148, 210, 228, 234, + 234, 169, 134, 139, 146, 157, 158, 150, 140, 77, 25, 25, 25, 32, 64, 116, + 138, 154, 65, 65, 68, 71, 45, 65, 48, 40, 12, 1, 77, 68, 57, 55, + 55, 52, 46, 59, 56, 55, 49, 51, 53, 49, 42, 44, 48, 45, 63, 57, + 37, 21, 20, 13, 28, 41, 42, 42, 42, 40, 38, 36, 38, 34, 28, 17, + 26, 55, 63, 69, 63, 67, 63, 69, 71, 60, 46, 17, 65, 53, 51, 42, + 46, 45, 41, 40, 36, 34, 32, 17, 32, 45, 55, 49, 48, 42, 45, 40, + 30, 29, 28, 24, 9, 42, 42, 42, 51, 28, 33, 48, 29, 25, 28, 10, + 53, 65, 56, 59, 56, 44, 42, 32, 28, 34, 28, 10, 20, 64, 34, 57, + 42, 51, 37, 49, 37, 25, 16, 14, 28, 46, 56, 56, 52, 52, 63, 53, + 48, 41, 9, 68, 72, 42, 51, 42, 42, 41, 42, 46, 40, 38, 28, 21, + 34, 40, 51, 37, 44, 46, 53, 51, 52, 56, 59, 48, 111, 140, 123, 89, + 75, 69, 67, 56, 53, 46, 46, 37, 34, 38, 30, 26, 42, 59, 67, 89, + 93, 182, 195, 206, 204, 158, 103, 48, 42, 41, 41, 41, 41, 44, 51, 51, + 51, 69, 93, 134, 146, 163, 173, 165, 153, 110, 64, 49, 44, 40, 42, 44, + 41, 40, 42, 42, 46, 55, 52, 51, 28, 118, 128, 100, 88, 88, 89, 87, + 84, 102, 68, 84, 118, 120, 103, 118, 99, 104, 96, 104, 104, 118, 73, 12, + 85, 91, 108, 95, 87, 81, 53, 51, 48, 64, 64, 40, 33, 32, 33, 38, + 25, 29, 21, 21, 20, 17, 20, 18, 18, 20, 20, 20, 20, 18, 20, 21, + 20, 20, 20, 20, 20, 22, 26, 32, 28, 32, 32, 32, 28, 24, 21, 22, + 21, 24, 25, 25, 25, 26, 28, 25, 26, 24, 25, 14, 28, 67, 73, 72, + 65, 65, 63, 59, 55, 51, 48, 46, 49, 44, 42, 41, 37, 37, 34, 33, + 30, 29, 29, 29, 30, 26, 26, 28, 25, 28, 36, 46, 59, 61, 61, 72, + 112, 140, 139, 132, 132, 123, 120, 122, 128, 112, 88, 9, 97, 89, 96, 81, + 88, 91, 91, 81, 83, 79, 36, 99, 127, 135, 128, 120, 127, 132, 131, 111, + 110, 95, 76, 30, 91, 93, 112, 139, 142, 110, 104, 123, 96, 72, 71, 65, + 69, 71, 55, 49, 46, 38, 41, 38, 37, 34, 30, 30, 29, 29, 28, 25, + 24, 22, 24, 22, 20, 18, 40, 45, 127, 115, 122, 126, 135, 135, 132, 134, + 128, 153, 89, 34, 139, 147, 147, 148, 146, 146, 140, 127, 114, 87, 61, 13, + 76, 100, 106, 80, 77, 48, 56, 69, 64, 45, 49, 46, 49, 100, 123, 120, + 120, 115, 118, 108, 83, 63, 10, 96, 106, 96, 95, 88, 85, 84, 81, 77, + 80, 85, 91, 46, 114, 158, 114, 104, 81, 73, 81, 67, 64, 67, 61, 51, + 49, 53, 52, 46, 48, 49, 48, 49, 45, 46, 49, 51, 49, 56, 60, 60, + 61, 77, 83, 97, 91, 102, 80, 77, 112, 122, 147, 134, 120, 123, 126, 119, + 119, 107, 92, 120, 154, 154, 195, 199, 201, 197, 170, 132, 123, 126, 130, 110, + 72, 97, 124, 130, 132, 118, 131, 169, 218, 228, 236, 229, 148, 134, 138, 144, + 155, 153, 146, 120, 42, 26, 25, 25, 20, 64, 116, 140, 153, 22, 29, 26, + 17, 21, 20, 52, 36, 10, 4, 55, 75, 53, 68, 52, 46, 49, 44, 41, + 38, 28, 24, 37, 52, 68, 68, 60, 61, 42, 48, 55, 38, 24, 17, 33, + 44, 40, 45, 40, 44, 42, 37, 38, 42, 17, 17, 44, 68, 73, 68, 71, + 59, 65, 63, 51, 46, 34, 18, 60, 57, 49, 48, 51, 44, 48, 38, 41, + 44, 34, 21, 37, 41, 48, 48, 49, 60, 55, 52, 41, 40, 29, 24, 12, + 45, 52, 42, 52, 51, 46, 42, 48, 28, 25, 8, 45, 65, 77, 81, 81, + 59, 61, 48, 42, 32, 29, 9, 49, 73, 69, 64, 60, 57, 56, 59, 48, + 42, 26, 13, 34, 53, 59, 44, 42, 51, 55, 55, 57, 29, 2, 77, 79, + 73, 56, 36, 40, 30, 42, 37, 34, 37, 25, 17, 33, 72, 61, 61, 59, + 59, 55, 53, 53, 56, 67, 46, 127, 135, 118, 91, 79, 65, 64, 57, 53, + 44, 44, 36, 26, 25, 33, 38, 59, 61, 97, 95, 126, 179, 206, 205, 208, + 143, 102, 72, 67, 69, 59, 55, 59, 73, 89, 120, 154, 187, 210, 221, 226, + 229, 229, 222, 224, 216, 193, 163, 134, 79, 55, 42, 44, 42, 44, 41, 40, + 52, 49, 46, 9, 84, 127, 81, 76, 91, 92, 87, 85, 96, 69, 89, 108, + 118, 115, 111, 116, 111, 104, 110, 107, 111, 68, 12, 85, 89, 99, 93, 85, + 56, 56, 55, 53, 57, 44, 25, 76, 61, 51, 45, 51, 63, 44, 49, 46, + 42, 38, 36, 41, 38, 49, 49, 49, 42, 41, 41, 40, 36, 34, 36, 34, + 56, 49, 53, 51, 59, 57, 59, 52, 51, 40, 30, 25, 28, 25, 22, 22, + 22, 22, 24, 21, 26, 25, 9, 36, 69, 87, 92, 95, 93, 96, 91, 91, + 76, 64, 56, 87, 92, 69, 67, 68, 57, 56, 68, 67, 28, 10, 45, 63, + 73, 48, 38, 48, 57, 38, 67, 59, 65, 60, 67, 115, 138, 134, 131, 132, + 123, 123, 106, 118, 127, 67, 12, 75, 103, 96, 112, 112, 120, 122, 95, 112, + 69, 37, 91, 130, 140, 138, 134, 131, 142, 127, 132, 112, 99, 85, 32, 92, + 91, 102, 114, 132, 161, 138, 128, 83, 87, 68, 84, 118, 112, 106, 77, 87, + 87, 89, 81, 79, 69, 63, 51, 53, 51, 48, 48, 44, 44, 42, 41, 42, + 36, 45, 25, 102, 135, 143, 135, 128, 132, 146, 139, 131, 147, 89, 38, 123, + 147, 147, 143, 143, 138, 157, 127, 114, 112, 60, 14, 80, 104, 87, 115, 88, + 102, 76, 80, 81, 102, 63, 48, 75, 120, 135, 134, 130, 128, 123, 118, 84, + 72, 24, 100, 108, 102, 102, 99, 96, 97, 92, 88, 68, 91, 95, 51, 115, + 138, 126, 143, 127, 135, 138, 111, 93, 89, 80, 72, 75, 76, 64, 69, 69, + 69, 68, 68, 68, 68, 68, 69, 71, 75, 76, 73, 77, 81, 91, 79, 106, + 127, 99, 51, 108, 115, 111, 111, 123, 114, 120, 112, 111, 107, 91, 128, 161, + 163, 201, 191, 198, 167, 132, 126, 122, 147, 116, 103, 65, 96, 110, 120, 118, + 120, 136, 182, 221, 225, 232, 213, 138, 134, 139, 146, 154, 150, 140, 85, 30, + 26, 25, 26, 16, 64, 114, 132, 154, 16, 14, 33, 36, 30, 29, 32, 20, + 9, 10, 53, 64, 63, 53, 68, 49, 56, 48, 53, 40, 26, 20, 52, 60, + 59, 46, 38, 40, 41, 48, 45, 51, 26, 16, 45, 46, 42, 45, 38, 38, + 36, 33, 34, 48, 17, 16, 44, 69, 69, 76, 75, 51, 52, 52, 53, 49, + 29, 18, 60, 51, 45, 53, 46, 55, 48, 42, 41, 48, 36, 25, 41, 48, + 61, 49, 38, 60, 49, 67, 48, 42, 36, 28, 13, 40, 56, 55, 45, 41, + 41, 42, 46, 32, 28, 8, 55, 72, 76, 72, 76, 80, 60, 67, 52, 42, + 32, 6, 59, 71, 81, 69, 67, 65, 69, 63, 61, 57, 25, 13, 57, 60, + 67, 61, 45, 53, 72, 60, 52, 41, 8, 81, 77, 68, 61, 46, 38, 41, + 52, 55, 53, 48, 30, 13, 67, 75, 76, 73, 72, 61, 63, 59, 59, 65, + 65, 57, 116, 134, 120, 107, 91, 75, 68, 60, 51, 44, 45, 29, 25, 36, + 37, 57, 56, 72, 93, 84, 97, 191, 199, 217, 186, 138, 104, 122, 127, 118, + 126, 135, 158, 177, 201, 213, 224, 228, 229, 229, 228, 224, 224, 225, 222, 217, + 218, 213, 213, 185, 122, 59, 44, 42, 42, 46, 44, 51, 57, 33, 8, 84, + 128, 99, 84, 112, 92, 112, 97, 83, 60, 88, 123, 122, 108, 116, 108, 123, + 118, 100, 99, 107, 81, 16, 91, 89, 100, 96, 96, 76, 72, 53, 65, 56, + 60, 45, 67, 84, 81, 63, 61, 53, 61, 57, 56, 55, 56, 37, 33, 49, + 51, 53, 59, 52, 56, 56, 56, 57, 56, 49, 45, 55, 64, 61, 63, 59, + 61, 60, 60, 59, 40, 63, 67, 68, 67, 60, 60, 37, 34, 33, 30, 32, + 25, 10, 44, 77, 95, 96, 93, 96, 96, 100, 95, 87, 73, 63, 79, 102, + 80, 91, 89, 89, 71, 61, 72, 63, 16, 75, 80, 81, 79, 77, 71, 67, + 64, 63, 57, 63, 67, 57, 102, 130, 134, 128, 131, 116, 116, 110, 120, 102, + 88, 16, 92, 99, 116, 100, 102, 108, 110, 112, 111, 80, 51, 114, 131, 132, + 135, 136, 143, 146, 143, 140, 127, 107, 81, 32, 92, 93, 116, 104, 123, 134, + 151, 139, 87, 88, 69, 91, 126, 112, 110, 107, 107, 104, 106, 110, 103, 83, + 79, 65, 93, 99, 97, 93, 92, 73, 69, 80, 83, 59, 38, 80, 127, 135, + 124, 135, 128, 140, 138, 139, 134, 151, 96, 45, 132, 147, 147, 154, 140, 140, + 132, 136, 112, 115, 61, 14, 89, 112, 103, 136, 106, 110, 119, 106, 92, 103, + 64, 49, 108, 135, 128, 126, 123, 124, 123, 132, 85, 61, 10, 80, 114, 107, + 130, 108, 106, 84, 99, 96, 91, 96, 99, 61, 127, 135, 147, 128, 138, 136, + 140, 128, 128, 95, 88, 57, 41, 73, 75, 77, 77, 76, 68, 71, 79, 67, + 48, 63, 95, 110, 114, 110, 76, 75, 75, 81, 96, 130, 112, 53, 110, 107, + 111, 110, 122, 115, 116, 118, 116, 104, 95, 134, 163, 175, 198, 199, 173, 139, + 124, 118, 138, 144, 130, 97, 71, 87, 112, 115, 114, 127, 158, 205, 224, 229, + 233, 193, 131, 132, 139, 151, 150, 144, 123, 41, 29, 28, 28, 26, 36, 59, + 122, 131, 143, 61, 12, 12, 21, 13, 28, 29, 46, 9, 1, 44, 73, 59, + 56, 65, 59, 52, 48, 49, 34, 29, 18, 49, 52, 38, 46, 52, 51, 71, + 57, 45, 52, 32, 24, 48, 48, 52, 52, 53, 46, 48, 37, 33, 45, 18, + 14, 56, 72, 68, 68, 68, 48, 63, 56, 61, 46, 37, 22, 53, 59, 42, + 59, 60, 44, 46, 51, 48, 49, 38, 25, 46, 56, 55, 51, 38, 52, 45, + 60, 56, 49, 37, 28, 5, 42, 42, 55, 48, 42, 41, 45, 46, 32, 28, + 9, 49, 69, 71, 63, 59, 59, 60, 57, 56, 42, 29, 6, 65, 83, 80, + 71, 71, 63, 73, 71, 64, 56, 36, 14, 57, 63, 69, 53, 64, 53, 65, + 59, 51, 42, 8, 77, 68, 61, 56, 56, 44, 46, 60, 63, 57, 48, 29, + 14, 68, 71, 80, 76, 77, 64, 68, 68, 61, 55, 55, 51, 103, 128, 126, + 102, 107, 97, 79, 73, 57, 53, 30, 20, 29, 52, 60, 60, 75, 65, 89, + 83, 95, 167, 209, 212, 181, 126, 96, 119, 189, 194, 198, 206, 210, 216, 222, + 224, 225, 224, 218, 213, 201, 197, 198, 186, 179, 167, 170, 173, 189, 205, 205, + 162, 76, 51, 41, 41, 44, 46, 48, 28, 8, 104, 138, 108, 91, 88, 99, + 87, 95, 93, 53, 88, 118, 118, 103, 103, 104, 104, 107, 104, 103, 102, 80, + 16, 91, 81, 99, 92, 97, 95, 84, 72, 61, 55, 49, 46, 75, 83, 71, + 76, 76, 59, 75, 79, 81, 69, 52, 36, 44, 76, 93, 89, 57, 57, 59, + 63, 65, 65, 67, 37, 52, 88, 84, 85, 84, 67, 65, 68, 64, 65, 45, + 63, 76, 75, 77, 69, 69, 60, 55, 55, 52, 48, 28, 9, 71, 80, 96, + 104, 107, 104, 95, 83, 102, 91, 80, 51, 80, 84, 103, 87, 85, 93, 89, + 80, 79, 69, 6, 84, 84, 68, 91, 91, 53, 59, 91, 81, 87, 69, 67, + 51, 100, 132, 136, 122, 119, 114, 111, 123, 100, 107, 88, 4, 93, 100, 128, + 107, 99, 96, 100, 111, 123, 83, 53, 120, 136, 143, 144, 136, 130, 131, 144, + 148, 134, 115, 84, 33, 89, 89, 99, 92, 116, 139, 135, 122, 89, 91, 76, + 95, 126, 122, 115, 114, 111, 112, 110, 107, 108, 107, 85, 69, 99, 104, 110, + 107, 104, 102, 100, 97, 97, 63, 28, 112, 97, 126, 126, 131, 136, 138, 142, + 134, 132, 144, 104, 46, 139, 148, 150, 154, 155, 155, 131, 142, 116, 116, 67, + 16, 88, 118, 123, 120, 104, 104, 104, 107, 115, 104, 69, 48, 123, 138, 138, + 107, 118, 130, 126, 132, 84, 68, 9, 124, 115, 111, 108, 111, 114, 118, 120, + 123, 124, 103, 107, 63, 120, 154, 139, 140, 138, 142, 132, 131, 130, 119, 111, + 37, 57, 80, 106, 103, 85, 89, 91, 99, 93, 79, 51, 97, 100, 126, 111, + 97, 119, 122, 112, 96, 126, 118, 110, 55, 104, 103, 120, 118, 119, 116, 111, + 112, 118, 103, 91, 119, 166, 166, 213, 187, 154, 126, 123, 127, 144, 150, 128, + 95, 68, 81, 106, 112, 116, 138, 190, 213, 214, 229, 225, 153, 127, 132, 146, + 147, 143, 131, 67, 30, 28, 26, 30, 29, 38, 61, 123, 127, 134, 64, 12, + 12, 25, 28, 38, 29, 33, 9, 1, 53, 63, 52, 64, 64, 61, 59, 57, + 45, 33, 24, 18, 49, 38, 46, 44, 63, 63, 67, 51, 53, 49, 41, 22, + 55, 68, 65, 64, 56, 57, 45, 40, 33, 37, 14, 34, 60, 67, 65, 53, + 60, 38, 42, 40, 44, 46, 45, 22, 45, 56, 42, 37, 44, 49, 55, 60, + 46, 44, 48, 24, 46, 53, 48, 45, 46, 57, 49, 67, 56, 55, 38, 26, + 6, 36, 51, 56, 44, 60, 46, 42, 42, 32, 29, 12, 52, 75, 65, 63, + 63, 65, 64, 57, 60, 44, 29, 6, 60, 63, 73, 73, 73, 73, 79, 73, + 72, 57, 30, 25, 61, 60, 69, 59, 65, 65, 79, 57, 48, 37, 6, 79, + 79, 67, 60, 57, 73, 73, 73, 72, 67, 49, 29, 12, 71, 79, 80, 73, + 76, 72, 75, 79, 64, 65, 69, 48, 91, 120, 122, 112, 95, 102, 87, 81, + 64, 73, 34, 18, 44, 56, 75, 77, 75, 65, 112, 85, 107, 123, 189, 206, + 183, 122, 110, 118, 157, 190, 198, 202, 208, 210, 210, 213, 206, 201, 193, 174, + 155, 150, 150, 151, 143, 147, 142, 148, 153, 151, 162, 187, 177, 87, 41, 41, + 46, 45, 46, 44, 22, 111, 116, 111, 91, 89, 97, 87, 92, 85, 53, 84, + 120, 114, 106, 110, 102, 104, 96, 111, 110, 100, 77, 16, 85, 79, 106, 108, + 100, 87, 76, 63, 64, 57, 51, 24, 69, 92, 76, 83, 69, 73, 84, 87, + 88, 77, 52, 36, 63, 93, 92, 100, 97, 73, 73, 72, 65, 76, 61, 36, + 83, 87, 92, 91, 92, 85, 72, 69, 71, 69, 46, 75, 79, 87, 83, 83, + 79, 71, 61, 61, 56, 51, 28, 8, 76, 93, 99, 81, 95, 104, 106, 83, + 95, 95, 79, 44, 81, 88, 100, 95, 103, 107, 88, 95, 79, 72, 8, 93, + 88, 83, 85, 83, 89, 88, 95, 92, 95, 88, 68, 71, 103, 140, 122, 123, + 118, 124, 115, 114, 120, 103, 92, 5, 100, 106, 103, 102, 128, 120, 128, 112, + 107, 87, 49, 115, 132, 139, 147, 144, 139, 140, 142, 135, 139, 115, 84, 33, + 88, 92, 100, 100, 126, 89, 97, 100, 88, 95, 77, 96, 124, 123, 126, 104, + 122, 119, 116, 114, 116, 112, 96, 71, 91, 110, 122, 120, 119, 116, 115, 114, + 100, 64, 29, 106, 138, 131, 127, 140, 139, 142, 139, 132, 127, 142, 96, 55, + 138, 150, 143, 143, 143, 140, 144, 138, 114, 118, 73, 20, 102, 124, 99, 111, + 85, 124, 111, 127, 119, 100, 64, 59, 118, 143, 127, 122, 115, 134, 131, 130, + 81, 65, 9, 120, 128, 115, 118, 119, 122, 123, 127, 128, 127, 106, 110, 68, + 119, 146, 142, 124, 126, 123, 119, 123, 120, 120, 108, 30, 75, 112, 131, 115, + 111, 102, 122, 119, 96, 83, 46, 97, 118, 119, 128, 119, 120, 112, 120, 127, + 134, 118, 103, 56, 103, 131, 100, 114, 112, 114, 112, 115, 111, 100, 84, 124, + 139, 150, 171, 183, 163, 128, 122, 132, 151, 150, 111, 104, 73, 85, 110, 107, + 132, 173, 210, 214, 218, 226, 201, 131, 128, 135, 148, 143, 135, 95, 34, 28, + 29, 28, 34, 30, 9, 76, 126, 134, 139, 9, 16, 29, 49, 45, 34, 26, + 32, 8, 1, 59, 67, 56, 61, 63, 59, 46, 63, 40, 32, 24, 16, 48, + 75, 79, 68, 68, 67, 53, 46, 46, 49, 42, 25, 25, 46, 51, 44, 48, + 45, 48, 38, 36, 38, 17, 36, 64, 69, 51, 46, 44, 45, 44, 46, 46, + 45, 42, 24, 40, 63, 49, 45, 38, 45, 34, 41, 36, 37, 48, 26, 49, + 56, 49, 53, 57, 56, 53, 45, 48, 59, 37, 25, 5, 40, 44, 57, 46, + 48, 53, 44, 41, 36, 29, 8, 40, 73, 65, 65, 67, 65, 61, 61, 56, + 42, 30, 4, 41, 80, 67, 80, 73, 76, 79, 77, 69, 69, 29, 10, 55, + 67, 72, 65, 60, 61, 59, 60, 56, 29, 1, 75, 72, 56, 65, 59, 56, + 55, 59, 57, 64, 48, 28, 10, 72, 67, 73, 72, 71, 73, 81, 91, 68, + 67, 67, 53, 71, 116, 119, 110, 93, 99, 88, 85, 79, 69, 41, 21, 52, + 72, 76, 72, 69, 68, 111, 91, 114, 92, 159, 214, 186, 114, 106, 107, 127, + 138, 163, 174, 183, 186, 189, 181, 166, 148, 140, 147, 148, 150, 153, 162, 163, + 167, 154, 147, 140, 135, 140, 143, 178, 155, 84, 37, 46, 42, 41, 40, 10, + 89, 112, 107, 75, 88, 102, 92, 95, 80, 55, 85, 116, 119, 112, 104, 110, + 104, 104, 115, 108, 102, 76, 20, 80, 84, 85, 91, 93, 93, 77, 63, 65, + 61, 56, 24, 51, 84, 87, 85, 97, 97, 112, 111, 108, 84, 57, 16, 65, + 95, 93, 100, 88, 83, 87, 106, 97, 79, 65, 34, 83, 87, 95, 87, 85, + 91, 87, 85, 72, 68, 52, 73, 85, 87, 85, 83, 83, 79, 72, 67, 61, + 51, 30, 6, 77, 97, 75, 81, 89, 111, 99, 95, 99, 89, 79, 48, 93, + 93, 102, 92, 100, 95, 97, 99, 83, 56, 9, 92, 96, 115, 95, 93, 97, + 110, 97, 95, 93, 103, 79, 57, 87, 126, 136, 138, 130, 124, 131, 138, 116, + 108, 64, 1, 84, 111, 110, 120, 131, 120, 122, 119, 106, 88, 48, 93, 132, + 135, 140, 139, 140, 142, 139, 146, 144, 134, 85, 34, 87, 87, 100, 116, 97, + 115, 100, 99, 84, 97, 83, 99, 108, 131, 130, 111, 114, 128, 130, 120, 126, + 122, 110, 75, 93, 123, 95, 114, 127, 126, 122, 119, 103, 72, 34, 128, 138, + 138, 144, 142, 136, 135, 130, 131, 132, 146, 97, 71, 93, 147, 143, 140, 142, + 138, 138, 134, 115, 111, 71, 21, 97, 123, 116, 115, 122, 115, 123, 110, 110, + 92, 69, 56, 118, 132, 131, 110, 131, 120, 126, 131, 83, 72, 8, 112, 124, + 118, 116, 142, 143, 150, 148, 146, 132, 108, 112, 71, 115, 154, 148, 147, 139, + 138, 118, 120, 123, 115, 87, 55, 100, 116, 115, 119, 122, 122, 119, 108, 102, + 89, 42, 103, 128, 122, 95, 120, 115, 123, 120, 131, 138, 120, 115, 40, 102, + 122, 103, 103, 107, 112, 112, 115, 108, 112, 79, 116, 140, 155, 171, 170, 183, + 130, 122, 148, 161, 139, 106, 95, 99, 100, 110, 130, 167, 199, 214, 216, 226, + 217, 157, 126, 132, 144, 142, 132, 107, 44, 29, 29, 29, 32, 34, 32, 12, + 61, 128, 150, 143, 17, 20, 21, 21, 22, 30, 33, 20, 8, 1, 37, 65, + 55, 56, 55, 56, 60, 49, 34, 30, 25, 13, 51, 49, 56, 46, 63, 51, + 48, 42, 38, 38, 36, 36, 26, 30, 38, 36, 44, 42, 44, 34, 33, 36, + 13, 41, 59, 56, 49, 52, 55, 52, 46, 52, 44, 60, 41, 26, 40, 61, + 59, 60, 51, 53, 44, 42, 41, 49, 36, 29, 55, 60, 56, 63, 51, 52, + 57, 53, 55, 41, 37, 29, 9, 33, 52, 55, 53, 49, 56, 46, 45, 36, + 32, 12, 65, 73, 79, 80, 71, 67, 67, 65, 61, 41, 30, 2, 57, 81, + 69, 76, 77, 77, 85, 76, 72, 63, 41, 12, 59, 73, 77, 63, 64, 63, + 63, 65, 51, 45, 5, 71, 84, 71, 84, 73, 84, 76, 73, 71, 67, 49, + 28, 10, 77, 75, 76, 84, 72, 69, 67, 79, 79, 64, 71, 52, 63, 110, + 112, 107, 107, 95, 91, 91, 84, 76, 44, 21, 60, 75, 77, 77, 84, 104, + 88, 111, 80, 120, 97, 201, 198, 128, 115, 107, 115, 122, 134, 138, 140, 144, + 140, 139, 132, 123, 120, 120, 123, 139, 150, 159, 162, 163, 165, 153, 148, 148, + 146, 136, 144, 174, 95, 37, 41, 44, 44, 33, 10, 85, 122, 107, 92, 92, + 95, 93, 97, 77, 44, 83, 114, 124, 123, 116, 115, 115, 116, 119, 106, 99, + 79, 29, 80, 85, 93, 87, 80, 72, 71, 56, 65, 68, 48, 57, 69, 100, + 108, 96, 100, 96, 108, 92, 85, 84, 52, 16, 73, 97, 103, 93, 96, 95, + 93, 96, 95, 75, 68, 30, 99, 88, 96, 83, 92, 87, 89, 91, 91, 72, + 52, 71, 80, 79, 79, 79, 81, 75, 73, 71, 71, 52, 33, 10, 83, 100, + 97, 73, 100, 80, 80, 92, 91, 87, 77, 51, 88, 103, 103, 95, 92, 95, + 99, 100, 80, 77, 28, 95, 96, 99, 114, 102, 100, 102, 108, 108, 110, 108, + 99, 67, 87, 111, 119, 122, 120, 104, 114, 110, 110, 104, 96, 12, 88, 116, + 115, 116, 119, 115, 111, 106, 108, 102, 75, 69, 120, 131, 131, 131, 128, 132, + 134, 132, 132, 124, 92, 34, 87, 89, 83, 93, 87, 111, 103, 102, 102, 116, + 100, 83, 110, 104, 108, 103, 112, 110, 115, 115, 119, 119, 119, 111, 88, 106, + 110, 97, 111, 115, 108, 120, 114, 79, 28, 103, 138, 131, 134, 135, 134, 130, + 131, 140, 143, 147, 107, 59, 76, 142, 148, 146, 148, 140, 139, 112, 112, 100, + 69, 22, 97, 124, 123, 128, 122, 130, 126, 124, 122, 89, 75, 56, 123, 150, + 134, 107, 110, 130, 128, 142, 91, 61, 8, 83, 130, 118, 136, 135, 123, 120, + 123, 136, 140, 108, 112, 73, 115, 146, 154, 144, 136, 135, 111, 124, 122, 123, + 77, 44, 111, 124, 131, 119, 115, 115, 114, 110, 100, 76, 44, 115, 132, 116, + 132, 134, 132, 135, 131, 130, 135, 138, 115, 33, 104, 102, 99, 103, 114, 107, + 106, 102, 106, 93, 63, 130, 136, 114, 144, 140, 175, 159, 120, 134, 158, 155, + 110, 103, 106, 118, 147, 173, 197, 206, 209, 224, 221, 171, 124, 128, 140, 138, + 127, 99, 42, 30, 30, 28, 29, 33, 37, 30, 45, 95, 128, 147, 155, 10, + 10, 10, 12, 12, 12, 12, 12, 8, 4, 13, 37, 64, 71, 51, 52, 33, + 33, 32, 18, 22, 13, 46, 42, 38, 42, 40, 42, 40, 32, 28, 26, 28, + 26, 30, 38, 40, 33, 32, 33, 33, 30, 36, 25, 13, 52, 57, 63, 46, + 48, 40, 41, 38, 38, 37, 41, 42, 33, 29, 45, 42, 37, 41, 41, 57, + 46, 44, 49, 45, 40, 38, 41, 45, 51, 44, 38, 37, 38, 38, 36, 36, + 28, 4, 32, 52, 48, 46, 45, 44, 45, 45, 49, 30, 13, 46, 60, 57, + 59, 59, 60, 57, 69, 60, 41, 28, 4, 61, 80, 76, 71, 69, 73, 65, + 72, 69, 59, 33, 6, 56, 61, 72, 72, 64, 72, 71, 65, 48, 44, 5, + 64, 72, 69, 69, 68, 68, 67, 65, 64, 64, 46, 26, 9, 72, 73, 79, + 75, 80, 75, 81, 69, 75, 76, 68, 56, 53, 85, 111, 99, 92, 83, 69, + 73, 77, 72, 48, 20, 55, 73, 95, 88, 107, 119, 91, 124, 124, 112, 84, + 124, 183, 139, 107, 106, 114, 119, 120, 115, 127, 124, 127, 120, 116, 112, 114, + 118, 155, 161, 138, 158, 167, 163, 161, 170, 157, 154, 151, 150, 146, 170, 91, + 32, 36, 40, 42, 28, 6, 79, 108, 106, 93, 88, 95, 93, 89, 79, 42, + 83, 99, 115, 114, 107, 106, 103, 103, 100, 92, 89, 79, 24, 40, 71, 73, + 51, 45, 63, 63, 40, 42, 51, 52, 60, 72, 92, 102, 92, 89, 87, 89, + 87, 85, 85, 45, 29, 65, 93, 107, 102, 102, 107, 96, 99, 95, 77, 67, + 33, 87, 84, 89, 84, 80, 79, 68, 65, 83, 80, 75, 75, 60, 63, 63, + 63, 59, 57, 59, 61, 57, 55, 32, 8, 87, 104, 67, 69, 75, 71, 72, + 72, 76, 81, 75, 73, 71, 73, 87, 87, 76, 76, 75, 76, 71, 80, 6, + 96, 96, 99, 93, 95, 97, 102, 99, 100, 95, 102, 100, 93, 71, 71, 83, + 87, 84, 84, 89, 89, 89, 93, 100, 8, 53, 112, 112, 110, 110, 106, 73, + 71, 76, 81, 99, 97, 77, 97, 108, 103, 108, 106, 111, 116, 116, 108, 85, + 36, 77, 73, 84, 92, 87, 89, 95, 100, 65, 63, 67, 110, 112, 116, 119, + 120, 119, 123, 124, 124, 122, 126, 119, 119, 118, 123, 123, 126, 124, 104, 104, + 122, 107, 83, 34, 132, 139, 130, 139, 143, 138, 144, 146, 134, 122, 118, 111, + 67, 64, 136, 128, 143, 104, 104, 104, 91, 97, 91, 69, 25, 96, 119, 115, + 93, 119, 119, 124, 104, 107, 95, 71, 46, 126, 142, 120, 123, 108, 127, 122, + 142, 77, 65, 8, 127, 130, 119, 128, 124, 126, 124, 124, 120, 120, 118, 116, + 83, 85, 116, 136, 131, 118, 107, 115, 114, 110, 122, 120, 44, 110, 126, 124, + 122, 120, 116, 114, 108, 102, 85, 44, 103, 131, 131, 128, 128, 132, 132, 123, + 127, 124, 118, 81, 37, 87, 110, 97, 89, 93, 100, 110, 106, 104, 91, 84, + 110, 120, 118, 128, 148, 132, 178, 128, 127, 157, 158, 157, 154, 155, 171, 190, + 191, 198, 202, 216, 214, 171, 122, 128, 136, 127, 119, 97, 46, 30, 30, 26, + 32, 32, 34, 30, 28, 40, 49, 120, 124, 127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 9, 8, 10, 12, 13, 13, 20, 14, 17, 20, 20, 13, + 16, 13, 14, 14, 12, 12, 13, 10, 12, 9, 12, 10, 16, 12, 16, 14, + 26, 34, 40, 38, 29, 18, 13, 41, 45, 48, 40, 37, 32, 40, 37, 32, + 41, 38, 36, 33, 37, 41, 51, 40, 41, 40, 40, 40, 41, 38, 38, 38, + 38, 37, 22, 24, 17, 12, 12, 12, 10, 10, 9, 12, 5, 12, 12, 14, + 16, 17, 20, 37, 42, 37, 29, 17, 4, 37, 52, 26, 33, 40, 53, 28, + 38, 38, 22, 4, 29, 41, 33, 33, 41, 41, 34, 34, 42, 42, 17, 6, + 32, 41, 30, 41, 37, 37, 28, 44, 36, 20, 6, 17, 41, 41, 40, 40, + 44, 45, 42, 44, 45, 44, 24, 8, 53, 77, 73, 57, 56, 68, 69, 51, + 56, 63, 71, 61, 65, 68, 64, 59, 67, 63, 64, 57, 56, 55, 44, 21, + 56, 85, 87, 76, 73, 88, 89, 85, 93, 116, 119, 153, 185, 177, 119, 111, + 103, 115, 106, 61, 52, 52, 53, 52, 49, 52, 51, 91, 112, 170, 131, 135, + 163, 165, 167, 163, 161, 167, 154, 155, 147, 169, 100, 36, 33, 38, 28, 36, + 14, 37, 61, 85, 110, 107, 102, 112, 80, 72, 45, 76, 85, 104, 104, 97, + 80, 73, 69, 65, 65, 51, 40, 52, 59, 49, 53, 51, 51, 44, 45, 44, + 44, 36, 38, 37, 46, 80, 79, 87, 91, 87, 99, 81, 91, 77, 29, 26, + 60, 89, 84, 76, 85, 88, 83, 80, 83, 79, 67, 36, 88, 85, 72, 80, + 80, 79, 79, 81, 76, 73, 72, 69, 75, 73, 71, 72, 71, 68, 65, 65, + 64, 60, 57, 8, 57, 67, 61, 63, 67, 68, 67, 69, 73, 73, 72, 68, + 75, 72, 73, 72, 69, 68, 68, 71, 63, 56, 6, 65, 76, 69, 75, 75, + 80, 83, 81, 84, 87, 89, 89, 76, 88, 96, 89, 79, 99, 96, 84, 68, + 100, 85, 65, 26, 64, 55, 45, 46, 49, 38, 44, 46, 41, 42, 46, 42, + 63, 75, 64, 60, 87, 96, 87, 69, 95, 96, 59, 41, 68, 34, 37, 36, + 34, 29, 30, 32, 32, 25, 24, 33, 24, 22, 22, 28, 26, 26, 29, 33, + 34, 34, 37, 41, 46, 52, 57, 60, 69, 120, 118, 124, 107, 76, 32, 116, + 139, 127, 134, 139, 134, 131, 123, 122, 112, 112, 95, 92, 60, 88, 85, 95, + 102, 95, 72, 68, 60, 55, 72, 28, 57, 49, 48, 67, 68, 79, 100, 79, + 73, 75, 63, 63, 92, 111, 115, 111, 110, 114, 104, 104, 79, 60, 8, 127, + 127, 131, 131, 130, 131, 131, 131, 132, 131, 130, 127, 124, 126, 124, 123, 128, + 126, 127, 124, 124, 122, 122, 110, 40, 102, 104, 119, 114, 115, 107, 87, 103, + 112, 80, 44, 44, 42, 51, 55, 46, 48, 46, 61, 79, 76, 73, 71, 33, + 79, 59, 57, 63, 64, 59, 55, 63, 53, 44, 93, 80, 26, 97, 97, 104, + 116, 169, 146, 124, 138, 162, 162, 170, 177, 183, 189, 198, 202, 210, 206, 174, + 126, 128, 127, 118, 110, 81, 45, 34, 29, 29, 34, 32, 26, 32, 18, 20, + 26, 26, 42, 46, 46, 48, 46, 51, 51, 53, 48, 55, 48, 4, 1, 24, + 49, 48, 36, 41, 37, 18, 16, 17, 14, 16, 13, 8, 14, 30, 38, 52, + 53, 65, 64, 77, 81, 65, 49, 68, 73, 68, 57, 29, 18, 17, 13, 25, + 22, 13, 24, 26, 21, 22, 17, 18, 12, 14, 13, 13, 13, 13, 9, 9, + 8, 9, 6, 8, 8, 8, 6, 8, 8, 8, 6, 9, 17, 45, 59, 67, + 65, 69, 68, 69, 61, 61, 30, 5, 72, 99, 97, 80, 46, 44, 38, 22, + 22, 30, 24, 5, 1, 10, 8, 10, 1, 8, 5, 1, 1, 6, 5, 0, + 0, 8, 1, 1, 1, 2, 1, 1, 4, 6, 8, 1, 1, 4, 13, 1, + 0, 4, 1, 2, 0, 0, 4, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 2, 14, 5, 20, 16, 21, 20, 22, 28, 34, 51, 51, 55, 64, 45, 45, + 37, 41, 37, 34, 34, 29, 26, 40, 33, 36, 22, 55, 59, 57, 67, 79, + 80, 75, 104, 88, 122, 144, 157, 205, 201, 158, 116, 107, 108, 107, 37, 36, + 36, 45, 41, 38, 44, 44, 64, 104, 161, 169, 134, 131, 159, 162, 166, 166, + 171, 153, 153, 166, 159, 96, 32, 30, 32, 21, 6, 25, 34, 36, 42, 32, + 32, 45, 48, 57, 79, 45, 69, 80, 75, 56, 53, 56, 55, 36, 37, 38, + 28, 20, 12, 13, 13, 9, 8, 8, 6, 6, 5, 5, 4, 4, 2, 1, + 1, 1, 0, 0, 0, 6, 8, 12, 10, 14, 16, 22, 26, 34, 33, 37, + 48, 45, 60, 76, 81, 64, 37, 77, 65, 65, 53, 44, 44, 38, 33, 29, + 30, 22, 16, 14, 21, 10, 9, 8, 24, 6, 5, 5, 26, 4, 2, 1, + 4, 2, 1, 1, 4, 4, 4, 6, 9, 6, 9, 13, 14, 4, 8, 22, + 25, 5, 10, 34, 36, 29, 8, 26, 25, 5, 4, 20, 4, 4, 14, 16, + 1, 1, 0, 10, 2, 0, 8, 10, 0, 0, 0, 9, 0, 0, 24, 30, + 37, 68, 102, 80, 91, 112, 124, 116, 99, 72, 48, 84, 123, 120, 103, 110, + 48, 38, 37, 33, 34, 30, 25, 20, 57, 64, 57, 64, 77, 79, 73, 80, + 95, 76, 8, 29, 126, 147, 103, 112, 130, 144, 114, 119, 122, 116, 115, 119, + 135, 135, 120, 79, 60, 72, 75, 106, 77, 33, 83, 88, 88, 85, 92, 91, + 91, 93, 95, 93, 104, 92, 89, 72, 45, 37, 46, 65, 36, 41, 88, 120, + 130, 108, 30, 96, 124, 128, 83, 67, 56, 72, 45, 51, 42, 96, 75, 65, + 59, 56, 60, 59, 63, 68, 76, 68, 60, 38, 48, 88, 93, 97, 93, 100, + 100, 103, 99, 115, 115, 103, 102, 108, 115, 107, 106, 122, 114, 102, 102, 119, + 107, 46, 55, 100, 96, 97, 81, 85, 93, 96, 111, 111, 114, 46, 114, 154, + 151, 130, 144, 140, 139, 99, 87, 84, 51, 37, 20, 45, 69, 92, 87, 92, + 95, 104, 96, 107, 108, 41, 75, 138, 178, 128, 130, 136, 116, 189, 162, 148, + 155, 130, 132, 136, 153, 157, 165, 162, 163, 148, 135, 136, 116, 88, 77, 56, + 36, 32, 30, 29, 33, 38, 45, 52, 59, 65, 72, 6, 64, 159, 157, 151, + 80, 77, 72, 71, 52, 60, 51, 56, 14, 4, 22, 26, 25, 29, 40, 37, + 38, 40, 33, 33, 13, 5, 40, 93, 103, 87, 89, 88, 87, 76, 72, 57, + 73, 79, 79, 81, 71, 85, 83, 75, 64, 53, 25, 26, 12, 16, 21, 30, + 36, 48, 53, 75, 61, 69, 52, 37, 33, 44, 85, 89, 84, 76, 96, 85, + 63, 93, 79, 81, 73, 80, 76, 85, 99, 80, 77, 63, 73, 77, 64, 73, + 63, 33, 8, 72, 96, 93, 87, 96, 96, 75, 84, 48, 32, 24, 37, 53, + 52, 53, 44, 40, 26, 40, 29, 9, 10, 2, 22, 106, 100, 71, 75, 96, + 95, 75, 75, 72, 26, 2, 18, 67, 81, 53, 56, 55, 52, 61, 53, 28, + 12, 45, 60, 61, 48, 45, 48, 48, 45, 44, 36, 32, 4, 6, 87, 104, + 102, 85, 102, 75, 34, 25, 22, 21, 18, 20, 24, 40, 59, 63, 68, 71, + 75, 83, 81, 79, 61, 22, 93, 99, 100, 85, 118, 93, 99, 88, 97, 139, + 154, 210, 213, 201, 185, 126, 111, 106, 116, 36, 34, 37, 36, 38, 32, 33, + 49, 61, 102, 181, 185, 126, 134, 120, 136, 142, 139, 135, 163, 159, 147, 107, + 79, 30, 29, 25, 30, 33, 34, 87, 99, 83, 83, 60, 49, 49, 46, 63, + 33, 30, 38, 55, 57, 60, 52, 55, 53, 76, 72, 73, 77, 120, 120, 130, + 119, 128, 122, 118, 130, 127, 122, 122, 112, 114, 115, 119, 128, 116, 119, 110, + 87, 91, 84, 73, 30, 14, 91, 132, 140, 103, 99, 84, 77, 65, 71, 49, + 56, 40, 46, 61, 63, 65, 52, 61, 68, 91, 61, 55, 61, 102, 135, 139, + 116, 103, 127, 128, 111, 106, 127, 119, 28, 6, 65, 143, 103, 108, 107, 114, + 112, 120, 128, 130, 126, 120, 127, 131, 147, 131, 131, 131, 134, 130, 127, 42, + 14, 37, 120, 150, 115, 120, 124, 126, 126, 132, 136, 138, 136, 131, 142, 155, + 148, 147, 147, 144, 140, 120, 139, 135, 55, 4, 81, 116, 143, 148, 146, 143, + 144, 142, 144, 130, 95, 45, 92, 136, 132, 132, 130, 130, 131, 122, 118, 110, + 60, 48, 118, 139, 140, 140, 140, 135, 102, 112, 128, 96, 88, 8, 135, 136, + 130, 136, 135, 136, 135, 142, 135, 138, 130, 130, 84, 128, 146, 135, 112, 135, + 131, 122, 115, 93, 37, 32, 28, 25, 25, 25, 22, 24, 22, 20, 22, 21, + 25, 24, 34, 114, 134, 126, 122, 136, 123, 114, 138, 147, 114, 32, 112, 143, + 128, 123, 114, 118, 104, 118, 128, 104, 68, 48, 118, 131, 130, 126, 118, 102, + 69, 55, 52, 49, 25, 0, 0, 25, 16, 0, 0, 18, 10, 0, 0, 12, + 8, 1, 6, 8, 8, 5, 21, 8, 9, 12, 33, 13, 16, 53, 104, 116, + 153, 161, 165, 165, 166, 163, 114, 132, 46, 127, 162, 154, 155, 159, 155, 143, + 151, 155, 136, 118, 83, 22, 114, 157, 170, 173, 167, 171, 166, 159, 116, 123, + 37, 181, 185, 179, 177, 171, 183, 179, 175, 107, 118, 100, 115, 112, 122, 142, + 142, 140, 136, 139, 138, 126, 103, 84, 55, 41, 38, 40, 34, 46, 38, 48, + 57, 60, 81, 92, 83, 80, 40, 142, 165, 186, 186, 24, 36, 36, 60, 53, + 60, 46, 57, 18, 4, 32, 30, 44, 22, 36, 38, 22, 42, 44, 32, 14, + 4, 84, 84, 73, 46, 49, 44, 44, 37, 48, 40, 57, 44, 59, 56, 84, + 84, 76, 80, 71, 72, 38, 30, 12, 53, 77, 75, 79, 73, 80, 76, 87, + 102, 64, 56, 57, 42, 63, 99, 88, 68, 73, 89, 99, 103, 99, 83, 81, + 84, 67, 68, 77, 77, 71, 72, 63, 60, 59, 61, 65, 38, 5, 83, 97, + 91, 93, 87, 87, 85, 91, 71, 48, 24, 44, 56, 52, 60, 51, 52, 56, + 67, 57, 25, 4, 12, 81, 103, 91, 85, 85, 87, 92, 92, 89, 85, 32, + 0, 89, 96, 100, 95, 88, 84, 88, 81, 76, 52, 13, 69, 61, 57, 46, + 51, 40, 41, 30, 29, 30, 36, 2, 5, 87, 103, 106, 103, 100, 95, 92, + 99, 91, 87, 73, 81, 65, 79, 97, 91, 96, 93, 107, 110, 103, 93, 61, + 24, 102, 116, 108, 123, 97, 111, 95, 97, 124, 155, 208, 209, 205, 208, 178, + 118, 110, 114, 116, 41, 34, 30, 40, 38, 34, 53, 46, 69, 97, 193, 194, + 131, 128, 135, 130, 104, 112, 110, 95, 89, 97, 87, 63, 26, 28, 25, 37, + 30, 61, 110, 104, 106, 95, 97, 99, 89, 92, 60, 38, 56, 124, 131, 122, + 119, 120, 128, 111, 126, 81, 114, 99, 89, 111, 108, 120, 115, 103, 112, 116, + 103, 106, 111, 103, 107, 102, 76, 75, 92, 81, 75, 81, 79, 81, 73, 32, + 13, 107, 150, 136, 130, 142, 140, 115, 130, 138, 102, 83, 41, 80, 130, 135, + 135, 132, 127, 134, 135, 131, 144, 128, 95, 93, 99, 103, 102, 107, 112, 106, + 118, 112, 124, 73, 9, 143, 138, 91, 107, 130, 127, 135, 110, 130, 139, 135, + 123, 92, 100, 107, 102, 97, 107, 107, 103, 97, 49, 0, 131, 162, 153, 161, + 154, 162, 158, 159, 154, 155, 158, 153, 127, 95, 123, 128, 130, 131, 132, 131, + 123, 123, 122, 56, 32, 106, 134, 143, 131, 128, 135, 132, 132, 132, 139, 99, + 57, 108, 138, 128, 132, 128, 138, 127, 114, 122, 114, 67, 41, 123, 131, 124, + 142, 122, 138, 142, 136, 123, 95, 89, 13, 130, 134, 118, 118, 118, 135, 136, + 138, 134, 138, 108, 73, 115, 147, 142, 135, 135, 136, 136, 132, 92, 103, 42, + 48, 143, 153, 124, 118, 138, 147, 134, 134, 144, 131, 128, 120, 130, 132, 159, + 161, 157, 155, 146, 128, 142, 144, 128, 36, 118, 143, 135, 130, 126, 123, 120, + 106, 110, 83, 55, 88, 167, 171, 179, 165, 171, 163, 157, 148, 122, 71, 32, + 95, 140, 143, 123, 138, 132, 138, 111, 130, 134, 120, 106, 102, 153, 158, 157, + 151, 169, 169, 144, 151, 177, 157, 67, 59, 131, 165, 167, 166, 161, 161, 153, + 161, 124, 122, 49, 128, 163, 147, 154, 155, 159, 159, 157, 157, 155, 146, 107, + 24, 136, 170, 173, 169, 169, 169, 166, 157, 118, 104, 32, 190, 179, 167, 177, + 185, 147, 194, 191, 159, 110, 92, 85, 84, 87, 89, 92, 92, 87, 85, 84, + 69, 56, 48, 42, 40, 36, 42, 45, 46, 55, 63, 76, 80, 91, 89, 92, + 89, 17, 146, 171, 177, 178, 16, 20, 30, 45, 53, 46, 45, 51, 9, 1, + 25, 28, 36, 33, 28, 28, 38, 33, 40, 26, 12, 4, 84, 77, 44, 33, + 45, 44, 67, 52, 33, 36, 48, 37, 56, 72, 48, 68, 71, 69, 71, 68, + 69, 29, 13, 68, 80, 81, 61, 57, 52, 48, 44, 40, 34, 52, 51, 40, + 96, 99, 88, 77, 85, 83, 80, 69, 85, 67, 63, 49, 84, 84, 64, 59, + 56, 61, 61, 63, 52, 60, 53, 36, 5, 76, 87, 81, 93, 87, 85, 77, + 80, 65, 48, 25, 51, 42, 64, 72, 71, 77, 83, 73, 53, 25, 5, 1, + 108, 100, 76, 79, 80, 76, 76, 71, 77, 75, 32, 10, 95, 72, 77, 79, + 83, 89, 88, 89, 71, 63, 17, 63, 52, 44, 37, 24, 16, 36, 25, 17, + 29, 37, 2, 4, 83, 102, 91, 87, 79, 85, 96, 97, 89, 87, 60, 48, + 95, 112, 108, 102, 96, 102, 99, 104, 103, 91, 67, 25, 99, 107, 119, 111, + 135, 116, 96, 106, 130, 183, 210, 209, 206, 202, 146, 115, 112, 111, 106, 32, + 30, 32, 36, 26, 42, 53, 44, 67, 99, 205, 201, 183, 128, 132, 154, 142, + 140, 140, 135, 136, 118, 107, 61, 28, 26, 28, 37, 28, 65, 111, 97, 110, + 103, 100, 96, 100, 88, 67, 36, 97, 115, 111, 116, 116, 112, 106, 103, 93, + 120, 104, 80, 107, 127, 127, 120, 110, 112, 96, 102, 99, 112, 100, 93, 63, + 91, 91, 77, 79, 79, 79, 87, 87, 89, 68, 38, 12, 99, 154, 139, 140, + 132, 132, 142, 140, 144, 144, 93, 44, 108, 140, 143, 138, 144, 134, 139, 135, + 127, 127, 93, 103, 132, 130, 127, 122, 115, 119, 126, 127, 120, 120, 89, 14, + 140, 89, 143, 138, 103, 106, 136, 124, 114, 115, 124, 75, 100, 131, 136, 139, + 132, 128, 131, 116, 115, 52, 24, 136, 162, 154, 143, 144, 150, 154, 153, 155, + 151, 153, 131, 102, 143, 144, 143, 139, 139, 139, 130, 130, 130, 115, 73, 6, + 99, 139, 138, 128, 131, 132, 142, 142, 138, 140, 97, 56, 111, 130, 122, 131, + 118, 124, 116, 119, 131, 114, 63, 38, 116, 127, 126, 136, 132, 144, 142, 138, + 124, 104, 84, 10, 85, 130, 120, 119, 119, 116, 131, 120, 134, 118, 99, 72, + 116, 147, 143, 139, 136, 140, 138, 134, 106, 110, 42, 91, 154, 150, 148, 150, + 153, 148, 150, 148, 139, 135, 134, 87, 132, 162, 154, 148, 153, 150, 148, 151, + 143, 153, 123, 40, 114, 122, 147, 123, 115, 122, 110, 110, 100, 76, 52, 110, + 171, 177, 169, 171, 167, 177, 171, 165, 138, 103, 42, 93, 103, 89, 124, 151, + 162, 95, 91, 134, 108, 89, 112, 140, 123, 158, 167, 177, 167, 162, 162, 165, + 170, 159, 102, 83, 135, 163, 157, 159, 159, 154, 150, 158, 120, 120, 49, 130, + 159, 161, 151, 155, 159, 150, 154, 155, 155, 147, 107, 18, 143, 173, 167, 161, + 148, 163, 162, 153, 120, 102, 25, 154, 182, 165, 183, 187, 178, 178, 126, 165, + 155, 139, 93, 106, 71, 68, 69, 64, 64, 60, 57, 55, 51, 46, 41, 42, + 49, 52, 63, 64, 73, 73, 79, 92, 96, 93, 91, 89, 10, 150, 170, 175, + 166, 72, 61, 55, 18, 22, 49, 40, 52, 9, 1, 28, 33, 38, 55, 33, + 29, 25, 30, 34, 17, 6, 4, 59, 84, 37, 41, 28, 49, 33, 51, 33, + 40, 56, 45, 56, 64, 49, 44, 63, 80, 73, 56, 68, 33, 12, 61, 80, + 53, 55, 48, 44, 44, 37, 34, 44, 37, 21, 14, 97, 96, 84, 88, 75, + 81, 76, 75, 89, 60, 64, 45, 77, 77, 61, 63, 63, 56, 73, 75, 63, + 56, 68, 33, 5, 71, 88, 83, 87, 80, 72, 67, 95, 85, 49, 34, 30, + 51, 52, 71, 63, 45, 55, 63, 49, 0, 4, 1, 69, 99, 73, 80, 76, + 83, 75, 83, 81, 81, 34, 1, 61, 87, 89, 69, 67, 72, 73, 103, 84, + 41, 20, 28, 49, 49, 36, 21, 26, 14, 21, 18, 18, 26, 1, 4, 76, + 97, 102, 80, 73, 77, 80, 79, 75, 60, 63, 52, 110, 111, 102, 122, 95, + 102, 99, 102, 103, 95, 72, 29, 102, 108, 106, 84, 81, 99, 91, 116, 157, + 212, 212, 209, 199, 150, 119, 108, 110, 122, 64, 30, 29, 30, 33, 44, 46, + 56, 55, 81, 104, 208, 210, 195, 128, 132, 135, 153, 157, 158, 157, 151, 142, + 124, 69, 26, 28, 24, 34, 24, 53, 106, 99, 104, 103, 115, 111, 100, 92, + 73, 37, 100, 111, 111, 107, 112, 118, 104, 103, 97, 104, 100, 71, 104, 126, + 104, 103, 118, 106, 106, 100, 99, 103, 107, 92, 59, 89, 106, 102, 95, 83, + 73, 92, 72, 76, 65, 37, 12, 120, 143, 131, 134, 139, 140, 139, 139, 136, + 126, 102, 51, 118, 140, 131, 130, 128, 128, 127, 128, 123, 100, 83, 112, 132, + 119, 122, 124, 126, 123, 124, 123, 123, 127, 64, 13, 73, 134, 99, 130, 132, + 127, 131, 135, 134, 127, 107, 71, 102, 131, 127, 120, 114, 120, 122, 128, 120, + 49, 18, 106, 161, 151, 161, 153, 148, 153, 157, 155, 158, 143, 127, 104, 144, + 150, 135, 139, 140, 136, 140, 142, 134, 106, 71, 4, 93, 136, 135, 124, 128, + 131, 136, 131, 134, 130, 99, 68, 96, 140, 123, 116, 127, 119, 130, 124, 119, + 103, 63, 37, 89, 120, 122, 123, 126, 134, 135, 140, 123, 102, 87, 0, 83, + 135, 115, 123, 120, 119, 127, 119, 134, 111, 89, 55, 120, 146, 143, 143, 127, + 132, 134, 140, 131, 122, 45, 127, 161, 150, 135, 143, 143, 144, 142, 148, 147, + 134, 107, 84, 134, 162, 151, 153, 151, 150, 144, 143, 143, 148, 119, 51, 111, + 128, 123, 124, 116, 111, 112, 108, 99, 75, 48, 91, 166, 174, 167, 171, 171, + 170, 169, 178, 143, 110, 38, 93, 95, 146, 116, 126, 167, 108, 138, 143, 104, + 130, 140, 96, 143, 175, 173, 171, 166, 173, 171, 171, 170, 159, 122, 63, 147, + 162, 162, 153, 150, 148, 136, 161, 124, 124, 64, 130, 163, 167, 155, 143, 144, + 151, 148, 146, 157, 122, 87, 16, 146, 169, 157, 157, 143, 154, 134, 127, 123, + 112, 30, 166, 181, 179, 170, 174, 146, 182, 140, 140, 158, 151, 131, 99, 71, + 67, 64, 63, 57, 53, 49, 49, 46, 45, 41, 55, 63, 69, 72, 84, 123, + 79, 92, 96, 106, 99, 104, 91, 5, 151, 170, 171, 178, 13, 18, 18, 46, + 24, 20, 37, 38, 13, 2, 25, 20, 34, 33, 29, 33, 30, 42, 29, 18, + 17, 4, 64, 73, 52, 29, 48, 34, 34, 30, 36, 46, 44, 37, 60, 69, + 67, 49, 65, 83, 67, 55, 79, 33, 14, 51, 75, 46, 48, 42, 36, 57, + 52, 49, 46, 36, 28, 13, 99, 95, 88, 79, 73, 83, 64, 65, 69, 53, + 56, 42, 80, 79, 63, 67, 64, 69, 52, 61, 72, 56, 59, 34, 6, 73, + 85, 72, 104, 88, 71, 76, 87, 77, 55, 34, 46, 41, 48, 36, 20, 33, + 34, 26, 38, 6, 4, 1, 68, 95, 71, 79, 81, 80, 81, 85, 83, 77, + 33, 1, 68, 81, 80, 76, 69, 67, 68, 83, 77, 44, 20, 57, 67, 26, + 30, 14, 34, 16, 17, 30, 26, 25, 2, 2, 84, 100, 95, 77, 81, 85, + 88, 84, 72, 64, 42, 48, 107, 115, 100, 108, 89, 103, 112, 111, 102, 88, + 68, 36, 88, 99, 107, 89, 81, 93, 81, 114, 193, 208, 209, 204, 157, 124, + 107, 112, 119, 72, 45, 28, 30, 32, 33, 44, 48, 56, 56, 76, 102, 214, + 213, 202, 128, 128, 136, 139, 147, 153, 155, 157, 148, 128, 69, 25, 25, 21, + 37, 21, 59, 107, 96, 102, 100, 112, 112, 99, 104, 64, 38, 89, 111, 118, + 127, 127, 130, 104, 97, 92, 104, 88, 67, 99, 124, 111, 110, 102, 112, 112, + 111, 97, 115, 106, 87, 57, 97, 97, 92, 79, 75, 67, 71, 69, 75, 61, + 32, 9, 119, 146, 146, 130, 148, 136, 132, 135, 130, 132, 100, 61, 104, 139, + 126, 124, 120, 136, 122, 108, 119, 104, 73, 112, 136, 122, 122, 122, 120, 126, + 120, 120, 124, 128, 65, 12, 93, 132, 136, 102, 103, 130, 123, 120, 122, 124, + 108, 65, 96, 143, 134, 111, 128, 139, 128, 116, 115, 46, 0, 128, 155, 158, + 157, 150, 153, 142, 147, 147, 147, 144, 118, 97, 143, 143, 131, 135, 139, 142, + 139, 139, 124, 123, 71, 6, 110, 134, 131, 132, 127, 130, 123, 135, 135, 131, + 107, 65, 103, 134, 119, 119, 128, 128, 127, 130, 126, 104, 71, 32, 107, 124, + 119, 146, 132, 142, 140, 126, 123, 110, 79, 5, 124, 120, 115, 120, 115, 112, + 122, 115, 138, 115, 87, 59, 116, 144, 148, 142, 144, 136, 131, 131, 130, 112, + 55, 97, 157, 159, 148, 147, 140, 130, 134, 134, 135, 97, 87, 59, 130, 157, + 146, 144, 139, 132, 140, 143, 150, 146, 116, 57, 103, 140, 123, 116, 122, 131, + 122, 126, 95, 85, 42, 96, 175, 175, 165, 174, 171, 167, 166, 174, 132, 110, + 38, 87, 96, 103, 136, 135, 123, 135, 143, 124, 130, 144, 140, 36, 136, 173, + 167, 173, 177, 167, 177, 178, 177, 166, 111, 68, 139, 161, 140, 139, 147, 146, + 155, 143, 161, 136, 65, 131, 159, 163, 153, 154, 158, 154, 146, 153, 148, 144, + 114, 13, 132, 173, 158, 161, 143, 148, 138, 122, 124, 123, 26, 182, 186, 177, + 175, 148, 143, 157, 167, 144, 134, 155, 148, 130, 69, 104, 97, 96, 99, 99, + 95, 91, 99, 100, 84, 52, 61, 77, 89, 127, 127, 127, 107, 110, 111, 108, + 103, 95, 57, 158, 169, 173, 163, 75, 75, 40, 41, 48, 40, 37, 59, 17, + 2, 13, 30, 36, 25, 45, 26, 29, 24, 30, 17, 8, 2, 64, 79, 46, + 51, 49, 37, 46, 45, 38, 45, 38, 33, 53, 60, 60, 38, 65, 72, 64, + 52, 76, 33, 16, 53, 75, 53, 56, 32, 37, 55, 42, 40, 40, 37, 41, + 30, 103, 104, 73, 87, 57, 73, 67, 69, 65, 61, 60, 44, 79, 72, 64, + 67, 73, 56, 65, 69, 69, 53, 59, 36, 5, 69, 80, 87, 80, 91, 68, + 73, 97, 71, 55, 29, 51, 60, 38, 46, 52, 46, 45, 32, 21, 14, 4, + 9, 75, 96, 85, 83, 85, 91, 93, 85, 88, 75, 33, 0, 79, 83, 64, + 77, 76, 67, 69, 72, 67, 55, 25, 52, 60, 44, 26, 18, 32, 10, 18, + 20, 18, 24, 1, 2, 89, 99, 96, 87, 85, 80, 89, 95, 77, 63, 46, + 61, 115, 108, 106, 96, 85, 103, 104, 95, 91, 89, 67, 37, 91, 103, 110, + 93, 104, 79, 75, 111, 199, 210, 205, 165, 124, 104, 126, 64, 61, 44, 29, + 29, 28, 34, 32, 37, 46, 51, 60, 87, 127, 213, 213, 205, 126, 126, 134, + 136, 139, 143, 153, 157, 148, 126, 60, 24, 22, 21, 29, 26, 64, 106, 96, + 100, 100, 115, 103, 106, 84, 73, 49, 89, 120, 111, 123, 115, 114, 119, 111, + 91, 102, 88, 64, 103, 124, 120, 96, 122, 103, 106, 97, 114, 108, 102, 77, + 61, 81, 96, 85, 76, 68, 65, 71, 69, 79, 56, 33, 8, 120, 146, 130, + 130, 139, 148, 139, 130, 142, 135, 104, 63, 96, 140, 130, 122, 138, 128, 115, + 120, 107, 92, 65, 112, 139, 122, 128, 132, 130, 134, 136, 127, 122, 124, 75, + 21, 96, 128, 134, 106, 126, 131, 128, 123, 127, 120, 107, 61, 95, 132, 130, + 123, 120, 119, 120, 116, 118, 51, 0, 120, 155, 157, 158, 154, 155, 151, 150, + 148, 147, 142, 81, 110, 146, 138, 131, 140, 146, 139, 130, 120, 119, 118, 67, + 40, 122, 135, 132, 130, 127, 135, 128, 138, 136, 135, 110, 77, 108, 140, 118, + 112, 126, 130, 130, 119, 116, 104, 71, 29, 103, 118, 134, 139, 131, 139, 128, + 126, 124, 110, 84, 22, 116, 118, 107, 112, 107, 112, 136, 111, 127, 114, 84, + 56, 108, 146, 144, 143, 146, 142, 123, 130, 123, 114, 60, 91, 155, 147, 148, + 130, 135, 142, 154, 134, 135, 102, 92, 95, 132, 155, 147, 142, 140, 150, 144, + 148, 150, 146, 128, 60, 111, 130, 124, 114, 107, 122, 112, 128, 104, 79, 46, + 112, 174, 174, 167, 175, 169, 169, 173, 174, 146, 110, 40, 97, 92, 102, 131, + 118, 130, 157, 115, 126, 110, 139, 99, 29, 144, 173, 174, 178, 177, 171, 169, + 171, 169, 163, 115, 75, 134, 163, 139, 130, 147, 134, 155, 158, 143, 139, 67, + 124, 165, 159, 154, 157, 143, 150, 146, 135, 146, 144, 111, 13, 140, 170, 166, + 161, 142, 134, 124, 123, 124, 110, 32, 186, 181, 178, 151, 173, 174, 132, 167, + 138, 158, 155, 154, 130, 71, 110, 114, 123, 120, 114, 114, 111, 119, 106, 83, + 55, 67, 76, 123, 114, 127, 124, 116, 116, 110, 112, 111, 103, 14, 155, 170, + 169, 155, 30, 53, 57, 51, 45, 36, 38, 37, 12, 0, 25, 25, 30, 32, + 22, 21, 25, 25, 26, 17, 8, 2, 56, 67, 37, 34, 37, 37, 44, 42, + 40, 28, 38, 26, 57, 59, 57, 33, 60, 51, 49, 51, 59, 32, 17, 33, + 67, 52, 61, 41, 44, 53, 56, 57, 52, 34, 42, 29, 103, 88, 80, 91, + 65, 83, 64, 69, 63, 65, 59, 46, 76, 72, 65, 55, 60, 53, 71, 59, + 65, 53, 49, 34, 5, 75, 69, 68, 81, 80, 71, 72, 80, 71, 56, 29, + 41, 34, 42, 30, 25, 26, 40, 40, 9, 4, 4, 2, 73, 96, 73, 79, + 95, 93, 79, 84, 89, 75, 34, 12, 83, 80, 65, 79, 73, 64, 71, 69, + 72, 64, 29, 57, 53, 64, 28, 21, 44, 16, 16, 17, 30, 22, 1, 1, + 88, 88, 99, 87, 83, 69, 87, 95, 79, 67, 45, 71, 119, 106, 95, 92, + 91, 107, 96, 88, 80, 81, 73, 38, 85, 103, 102, 102, 77, 77, 87, 106, + 194, 204, 175, 126, 107, 111, 63, 42, 30, 28, 26, 28, 28, 32, 28, 38, + 49, 53, 75, 93, 175, 216, 214, 208, 126, 126, 134, 138, 138, 143, 153, 154, + 146, 120, 38, 24, 22, 13, 29, 25, 64, 104, 93, 102, 102, 110, 103, 104, + 85, 67, 42, 95, 110, 115, 114, 107, 100, 100, 100, 97, 95, 75, 59, 100, + 122, 123, 104, 108, 97, 111, 111, 114, 106, 96, 79, 56, 87, 95, 85, 84, + 87, 88, 85, 80, 80, 48, 33, 8, 95, 146, 131, 130, 118, 142, 148, 136, + 134, 134, 104, 69, 97, 136, 124, 132, 127, 136, 114, 116, 108, 88, 68, 123, + 140, 127, 126, 136, 131, 134, 127, 126, 122, 116, 91, 25, 112, 127, 131, 110, + 124, 130, 126, 126, 122, 120, 102, 55, 89, 135, 130, 135, 120, 124, 131, 122, + 115, 52, 14, 123, 157, 163, 138, 135, 153, 150, 148, 140, 143, 138, 71, 106, + 148, 139, 136, 139, 150, 146, 134, 127, 111, 110, 76, 9, 107, 136, 128, 126, + 124, 134, 134, 136, 135, 138, 114, 68, 100, 135, 123, 136, 107, 104, 122, 124, + 119, 103, 65, 25, 104, 112, 112, 143, 131, 127, 127, 124, 126, 111, 83, 22, + 77, 110, 108, 104, 110, 110, 140, 108, 123, 111, 83, 46, 114, 142, 154, 144, + 151, 146, 136, 126, 122, 107, 61, 97, 153, 146, 146, 118, 138, 136, 143, 136, + 115, 106, 91, 84, 136, 153, 136, 144, 144, 130, 127, 136, 131, 134, 126, 60, + 108, 127, 127, 114, 118, 111, 116, 111, 110, 73, 45, 119, 166, 174, 163, 167, + 171, 167, 170, 174, 127, 106, 46, 96, 92, 106, 128, 120, 115, 130, 118, 122, + 119, 95, 123, 59, 144, 173, 177, 182, 167, 171, 175, 175, 173, 161, 118, 79, + 132, 159, 155, 147, 147, 144, 143, 144, 123, 131, 71, 106, 108, 159, 143, 153, + 155, 154, 148, 150, 146, 143, 108, 9, 140, 169, 165, 158, 147, 139, 161, 118, + 134, 111, 28, 134, 182, 169, 162, 161, 155, 150, 150, 169, 147, 159, 158, 124, + 67, 108, 122, 128, 128, 128, 122, 111, 115, 110, 107, 71, 83, 93, 134, 136, + 130, 123, 108, 116, 118, 110, 111, 99, 6, 161, 166, 170, 159, 14, 63, 68, + 40, 41, 48, 32, 34, 9, 0, 14, 30, 36, 29, 26, 30, 38, 40, 20, + 13, 4, 2, 49, 61, 38, 65, 36, 51, 42, 36, 44, 38, 41, 28, 45, + 77, 46, 33, 63, 57, 53, 53, 63, 36, 18, 29, 65, 45, 63, 34, 46, + 38, 44, 60, 45, 33, 22, 6, 100, 91, 76, 71, 80, 69, 79, 73, 71, + 61, 60, 42, 76, 71, 59, 63, 52, 53, 60, 63, 59, 55, 52, 34, 5, + 71, 83, 77, 83, 77, 61, 71, 76, 79, 57, 44, 33, 44, 61, 52, 46, + 52, 28, 22, 9, 0, 2, 1, 64, 92, 88, 80, 83, 92, 81, 87, 77, + 65, 36, 1, 60, 79, 61, 80, 73, 77, 59, 68, 81, 52, 33, 17, 51, + 52, 22, 22, 32, 17, 12, 21, 18, 20, 0, 0, 84, 95, 96, 88, 87, + 89, 89, 87, 76, 61, 48, 75, 118, 93, 103, 103, 97, 97, 96, 108, 102, + 77, 72, 40, 85, 99, 104, 102, 97, 89, 75, 99, 181, 208, 171, 114, 95, + 104, 52, 40, 29, 26, 32, 28, 26, 33, 29, 55, 51, 49, 77, 107, 191, + 222, 217, 210, 127, 126, 132, 138, 142, 147, 153, 151, 138, 93, 26, 22, 22, + 20, 32, 25, 65, 99, 93, 102, 104, 97, 107, 99, 68, 75, 42, 87, 107, + 107, 106, 104, 104, 114, 102, 97, 102, 87, 53, 104, 115, 132, 110, 104, 106, + 108, 110, 111, 95, 93, 57, 73, 79, 87, 83, 80, 77, 81, 71, 75, 77, + 56, 38, 6, 128, 146, 131, 124, 120, 126, 127, 131, 127, 123, 115, 80, 102, + 140, 124, 136, 128, 128, 102, 118, 91, 91, 63, 116, 136, 123, 126, 130, 140, + 126, 128, 124, 120, 112, 72, 22, 69, 99, 128, 123, 132, 123, 124, 132, 123, + 114, 91, 52, 79, 122, 127, 138, 134, 132, 118, 119, 122, 51, 10, 112, 158, + 158, 153, 151, 144, 150, 144, 144, 148, 118, 63, 118, 144, 140, 128, 139, 151, + 136, 130, 120, 116, 100, 83, 6, 93, 136, 127, 116, 127, 126, 126, 136, 130, + 128, 107, 84, 96, 132, 122, 122, 131, 102, 103, 104, 108, 104, 60, 24, 92, + 103, 108, 139, 139, 136, 130, 123, 128, 111, 87, 21, 81, 115, 103, 100, 103, + 107, 115, 119, 107, 108, 73, 36, 112, 138, 150, 140, 144, 144, 140, 122, 123, + 112, 64, 84, 140, 140, 167, 132, 142, 118, 112, 122, 95, 91, 91, 64, 138, + 151, 142, 139, 143, 136, 140, 132, 134, 127, 123, 64, 99, 127, 127, 120, 118, + 104, 122, 119, 108, 75, 38, 118, 165, 170, 171, 173, 171, 161, 171, 175, 136, + 106, 37, 97, 93, 135, 118, 111, 116, 153, 124, 127, 104, 100, 135, 60, 154, + 166, 178, 175, 174, 170, 171, 166, 166, 165, 140, 81, 110, 161, 150, 150, 132, + 140, 126, 120, 139, 128, 80, 93, 142, 163, 155, 153, 148, 150, 150, 151, 139, + 124, 81, 8, 130, 159, 163, 158, 162, 151, 136, 119, 135, 115, 24, 166, 181, + 162, 171, 163, 165, 154, 151, 151, 144, 158, 157, 132, 65, 120, 127, 134, 126, + 130, 108, 123, 124, 127, 106, 68, 76, 142, 132, 134, 128, 130, 127, 123, 130, + 112, 112, 102, 1, 150, 169, 158, 161, 24, 48, 73, 64, 36, 30, 33, 32, + 10, 1, 20, 26, 33, 40, 45, 34, 26, 24, 17, 9, 4, 4, 46, 55, + 61, 42, 65, 55, 44, 44, 40, 48, 33, 24, 49, 59, 51, 48, 30, 40, + 44, 40, 38, 37, 18, 33, 51, 42, 51, 53, 51, 48, 45, 45, 45, 45, + 24, 13, 91, 84, 57, 57, 69, 84, 81, 64, 83, 59, 55, 38, 64, 72, + 64, 57, 61, 57, 57, 60, 51, 53, 56, 34, 6, 69, 72, 48, 63, 61, + 45, 46, 63, 57, 60, 45, 28, 34, 21, 33, 16, 20, 18, 22, 21, 0, + 2, 8, 63, 88, 69, 75, 77, 76, 77, 89, 83, 59, 36, 1, 59, 77, + 64, 76, 77, 69, 68, 72, 69, 55, 24, 13, 30, 24, 30, 22, 30, 26, + 32, 25, 29, 18, 0, 0, 88, 99, 87, 89, 92, 106, 96, 83, 67, 64, + 34, 87, 118, 108, 112, 102, 104, 97, 84, 89, 95, 89, 73, 42, 81, 97, + 106, 100, 96, 75, 71, 84, 138, 209, 174, 122, 103, 106, 57, 44, 29, 36, + 37, 30, 32, 30, 32, 37, 51, 72, 95, 150, 212, 222, 221, 205, 128, 127, + 134, 139, 147, 153, 154, 148, 127, 52, 24, 21, 18, 21, 37, 22, 60, 97, + 97, 108, 103, 107, 104, 100, 81, 69, 41, 56, 102, 107, 89, 96, 93, 84, + 102, 100, 97, 80, 51, 92, 111, 114, 114, 108, 108, 108, 107, 107, 100, 87, + 52, 59, 87, 93, 97, 89, 87, 77, 89, 81, 67, 48, 26, 5, 128, 143, + 138, 102, 102, 99, 112, 92, 108, 111, 106, 84, 84, 123, 128, 124, 124, 123, + 100, 116, 87, 84, 52, 104, 131, 126, 126, 130, 127, 126, 123, 123, 123, 122, + 67, 21, 103, 126, 144, 126, 132, 130, 122, 120, 114, 112, 97, 46, 73, 85, + 118, 127, 132, 122, 128, 118, 119, 44, 28, 115, 144, 151, 147, 143, 146, 148, + 147, 144, 139, 115, 55, 112, 119, 143, 144, 148, 142, 132, 124, 120, 107, 114, + 65, 4, 124, 130, 127, 112, 124, 122, 119, 116, 115, 116, 116, 87, 65, 116, + 135, 108, 114, 93, 104, 108, 114, 107, 83, 18, 97, 106, 127, 132, 127, 131, + 128, 128, 127, 119, 84, 29, 85, 99, 99, 95, 93, 87, 96, 99, 102, 104, + 73, 33, 75, 132, 144, 144, 135, 127, 115, 123, 123, 112, 72, 73, 104, 136, + 132, 134, 108, 112, 108, 112, 120, 83, 76, 41, 136, 147, 131, 139, 143, 139, + 139, 132, 142, 128, 124, 79, 79, 132, 123, 122, 119, 106, 106, 119, 110, 76, + 51, 107, 167, 163, 171, 171, 170, 169, 171, 174, 124, 106, 38, 100, 103, 130, + 123, 106, 106, 102, 110, 126, 102, 120, 136, 18, 135, 161, 163, 173, 162, 169, + 154, 170, 163, 169, 131, 85, 111, 143, 135, 136, 142, 131, 134, 140, 122, 132, + 103, 89, 139, 146, 148, 116, 119, 123, 144, 148, 130, 127, 119, 6, 135, 161, + 167, 159, 153, 157, 155, 130, 134, 124, 21, 181, 186, 157, 167, 170, 161, 159, + 167, 167, 155, 157, 155, 126, 64, 103, 120, 119, 123, 124, 122, 115, 122, 123, + 106, 68, 76, 138, 131, 135, 130, 143, 139, 120, 114, 112, 114, 107, 59, 162, + 163, 162, 153, 22, 29, 34, 42, 51, 44, 44, 24, 9, 1, 14, 18, 21, + 18, 17, 18, 17, 18, 17, 12, 4, 1, 40, 59, 61, 64, 52, 46, 48, + 49, 48, 45, 28, 20, 46, 46, 52, 52, 55, 41, 45, 41, 37, 37, 34, + 32, 24, 24, 24, 22, 26, 25, 26, 28, 28, 30, 34, 18, 102, 81, 73, + 79, 69, 69, 71, 71, 71, 64, 60, 41, 76, 73, 59, 60, 56, 48, 52, + 45, 49, 49, 53, 33, 6, 67, 69, 64, 63, 60, 76, 57, 56, 48, 61, + 29, 22, 30, 17, 14, 13, 12, 13, 12, 10, 8, 2, 1, 45, 87, 80, + 80, 77, 87, 83, 85, 69, 69, 37, 1, 56, 73, 64, 56, 77, 76, 71, + 59, 61, 45, 40, 32, 20, 20, 13, 8, 5, 5, 6, 5, 4, 5, 0, + 1, 96, 96, 96, 89, 88, 84, 81, 80, 55, 56, 34, 80, 112, 106, 96, + 91, 92, 92, 84, 83, 84, 80, 75, 45, 55, 87, 93, 89, 79, 56, 76, + 72, 112, 193, 195, 153, 99, 126, 93, 51, 44, 37, 42, 38, 38, 41, 46, + 44, 76, 84, 128, 204, 221, 221, 222, 199, 127, 127, 134, 143, 150, 155, 150, + 136, 75, 24, 21, 20, 20, 20, 28, 30, 56, 87, 91, 92, 91, 89, 84, + 81, 87, 81, 52, 60, 100, 108, 87, 91, 96, 92, 93, 95, 84, 76, 48, + 72, 104, 110, 93, 89, 104, 107, 93, 95, 95, 76, 46, 56, 61, 53, 53, + 52, 61, 55, 46, 45, 36, 40, 24, 6, 114, 132, 139, 132, 124, 124, 128, + 130, 122, 123, 118, 118, 118, 85, 93, 97, 99, 99, 119, 118, 108, 85, 48, + 99, 130, 127, 130, 123, 124, 124, 127, 122, 120, 116, 80, 32, 100, 106, 110, + 112, 111, 111, 118, 110, 111, 96, 95, 41, 72, 80, 115, 112, 110, 108, 107, + 107, 100, 51, 0, 28, 79, 93, 83, 80, 92, 104, 96, 89, 103, 91, 41, + 64, 72, 81, 85, 97, 99, 95, 100, 99, 115, 103, 59, 36, 126, 127, 130, + 131, 123, 119, 123, 122, 116, 116, 110, 112, 81, 85, 93, 100, 99, 95, 118, + 118, 92, 108, 81, 16, 93, 96, 140, 128, 127, 130, 127, 126, 122, 120, 91, + 2, 72, 97, 84, 83, 87, 93, 95, 104, 100, 104, 63, 30, 56, 123, 123, + 111, 111, 119, 120, 107, 110, 115, 106, 67, 81, 100, 104, 89, 89, 100, 91, + 85, 97, 89, 81, 76, 132, 147, 143, 140, 136, 140, 140, 134, 135, 139, 132, + 79, 72, 112, 120, 123, 115, 93, 111, 112, 111, 77, 38, 115, 169, 166, 167, + 173, 167, 175, 169, 171, 143, 104, 37, 99, 99, 119, 99, 115, 100, 96, 103, + 97, 100, 104, 108, 33, 128, 151, 144, 120, 126, 136, 136, 136, 123, 116, 112, + 130, 138, 131, 134, 135, 130, 138, 135, 139, 130, 131, 130, 92, 99, 107, 108, + 118, 110, 116, 111, 135, 126, 126, 111, 4, 130, 153, 154, 157, 157, 161, 150, + 123, 130, 119, 25, 178, 179, 163, 162, 163, 154, 153, 154, 157, 155, 151, 140, + 120, 64, 108, 108, 126, 122, 128, 128, 130, 124, 123, 106, 68, 85, 140, 132, + 118, 116, 119, 116, 119, 118, 115, 112, 111, 10, 159, 158, 161, 153, 10, 10, + 12, 12, 12, 13, 14, 9, 4, 0, 14, 14, 13, 5, 13, 12, 9, 9, + 16, 13, 8, 1, 24, 56, 53, 49, 46, 29, 25, 22, 30, 26, 25, 17, + 28, 30, 29, 28, 26, 29, 29, 26, 26, 25, 25, 22, 25, 16, 10, 8, + 9, 14, 5, 2, 4, 4, 4, 16, 99, 63, 76, 36, 71, 68, 63, 36, + 65, 61, 56, 40, 69, 71, 51, 46, 42, 41, 36, 38, 38, 38, 29, 14, + 9, 34, 29, 30, 28, 26, 29, 28, 28, 25, 24, 21, 17, 13, 12, 13, + 10, 9, 8, 10, 6, 6, 5, 0, 18, 64, 69, 48, 53, 73, 67, 60, + 63, 61, 34, 16, 48, 64, 67, 61, 53, 52, 49, 46, 42, 44, 18, 10, + 6, 5, 10, 18, 24, 16, 8, 10, 10, 9, 1, 0, 85, 56, 69, 65, + 68, 72, 73, 79, 56, 51, 32, 72, 88, 95, 91, 85, 88, 84, 80, 77, + 81, 87, 77, 75, 75, 73, 52, 56, 72, 71, 63, 68, 77, 174, 202, 166, + 119, 116, 116, 81, 49, 37, 49, 48, 45, 42, 48, 72, 84, 123, 193, 218, + 221, 224, 220, 170, 126, 130, 136, 148, 151, 151, 142, 102, 32, 21, 20, 18, + 21, 22, 26, 30, 40, 73, 75, 71, 61, 75, 75, 65, 67, 73, 63, 57, + 89, 80, 81, 68, 68, 64, 63, 65, 67, 75, 41, 34, 33, 48, 41, 41, + 42, 49, 55, 72, 83, 59, 42, 44, 48, 48, 44, 42, 42, 42, 33, 33, + 34, 25, 30, 4, 18, 81, 95, 81, 84, 89, 103, 93, 97, 99, 99, 97, + 92, 103, 106, 107, 107, 112, 111, 112, 97, 84, 59, 85, 120, 122, 124, 111, + 110, 107, 106, 93, 102, 96, 73, 34, 59, 63, 57, 61, 63, 67, 68, 73, + 72, 73, 69, 42, 61, 33, 37, 38, 30, 26, 25, 30, 29, 28, 8, 8, + 14, 32, 13, 13, 26, 42, 22, 24, 40, 45, 52, 45, 17, 36, 41, 44, + 57, 79, 61, 76, 89, 87, 75, 0, 45, 76, 84, 84, 84, 89, 92, 84, + 85, 91, 84, 89, 83, 99, 91, 100, 95, 99, 77, 103, 88, 106, 77, 41, + 81, 89, 130, 124, 124, 123, 122, 112, 118, 118, 76, 37, 68, 48, 56, 37, + 38, 40, 53, 26, 24, 30, 49, 28, 34, 34, 44, 42, 48, 52, 57, 65, + 71, 91, 103, 103, 107, 108, 97, 99, 97, 96, 95, 92, 89, 89, 80, 71, + 134, 132, 131, 128, 111, 118, 124, 123, 112, 112, 99, 102, 100, 104, 115, 102, + 96, 91, 89, 85, 88, 64, 36, 111, 134, 158, 161, 153, 150, 150, 155, 147, + 122, 96, 48, 103, 93, 107, 103, 103, 95, 99, 97, 99, 93, 99, 120, 41, + 44, 48, 37, 34, 59, 73, 80, 85, 93, 115, 123, 116, 99, 122, 126, 122, + 123, 122, 127, 123, 130, 124, 119, 115, 135, 134, 127, 115, 131, 126, 126, 97, + 130, 130, 107, 4, 91, 128, 151, 107, 116, 130, 148, 127, 122, 115, 22, 128, + 174, 161, 153, 153, 153, 147, 140, 102, 93, 83, 72, 64, 72, 65, 76, 114, + 118, 112, 127, 124, 132, 119, 120, 93, 91, 111, 114, 110, 116, 114, 102, 84, + 128, 83, 75, 64, 38, 97, 100, 132, 134, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 4, 9, 2, 0, 42, + 12, 12, 10, 12, 20, 14, 9, 9, 18, 16, 9, 6, 5, 6, 5, 5, + 4, 6, 5, 5, 4, 5, 4, 5, 22, 38, 42, 41, 44, 73, 61, 76, + 59, 32, 4, 108, 68, 83, 63, 52, 48, 48, 46, 55, 56, 56, 37, 34, + 34, 34, 29, 26, 24, 18, 17, 14, 14, 9, 9, 9, 8, 6, 6, 5, + 5, 4, 4, 2, 2, 2, 1, 1, 5, 5, 1, 0, 1, 2, 0, 0, + 1, 2, 0, 16, 12, 12, 16, 14, 33, 59, 36, 42, 52, 32, 1, 44, + 14, 20, 16, 17, 13, 17, 13, 16, 9, 8, 9, 12, 24, 51, 44, 60, + 65, 71, 60, 72, 68, 42, 0, 97, 84, 84, 73, 68, 64, 64, 51, 61, + 52, 30, 59, 59, 64, 60, 60, 61, 64, 64, 64, 61, 68, 64, 63, 63, + 42, 33, 33, 34, 42, 73, 72, 77, 123, 190, 182, 123, 87, 157, 108, 85, + 85, 89, 91, 91, 89, 88, 111, 161, 204, 220, 222, 221, 221, 212, 140, 127, + 134, 147, 150, 147, 140, 111, 37, 22, 21, 18, 18, 24, 25, 14, 30, 41, + 37, 42, 46, 48, 48, 49, 51, 56, 65, 67, 60, 64, 52, 53, 59, 52, + 57, 64, 83, 77, 80, 48, 59, 106, 110, 99, 89, 69, 71, 69, 64, 41, + 34, 37, 6, 0, 26, 5, 4, 5, 17, 0, 4, 4, 0, 0, 25, 28, + 20, 17, 17, 24, 22, 20, 21, 25, 28, 28, 29, 33, 36, 41, 49, 52, + 57, 60, 67, 71, 80, 59, 64, 83, 80, 57, 59, 63, 60, 44, 44, 51, + 37, 25, 6, 21, 8, 33, 36, 18, 13, 28, 29, 17, 17, 26, 28, 76, + 92, 104, 108, 103, 116, 110, 112, 84, 79, 5, 21, 143, 157, 107, 104, 132, + 146, 92, 112, 114, 60, 29, 57, 136, 136, 87, 88, 92, 68, 68, 63, 79, + 46, 33, 9, 6, 5, 40, 10, 6, 10, 34, 22, 12, 20, 44, 37, 36, + 38, 52, 51, 46, 83, 72, 60, 59, 100, 57, 17, 75, 34, 44, 36, 41, + 34, 34, 30, 33, 21, 18, 37, 26, 51, 68, 77, 81, 88, 107, 104, 102, + 103, 85, 22, 107, 142, 150, 122, 135, 102, 84, 77, 52, 52, 44, 44, 57, + 48, 65, 37, 42, 63, 45, 57, 64, 68, 69, 57, 102, 93, 120, 110, 104, + 95, 112, 110, 104, 100, 104, 102, 95, 68, 48, 46, 41, 42, 40, 42, 41, + 53, 37, 40, 56, 67, 60, 89, 95, 87, 64, 100, 108, 71, 41, 87, 83, + 79, 77, 77, 71, 76, 87, 96, 103, 106, 142, 12, 61, 170, 170, 115, 119, + 110, 108, 95, 79, 45, 28, 22, 20, 18, 17, 16, 14, 13, 12, 10, 9, + 40, 38, 6, 4, 49, 40, 2, 1, 40, 26, 0, 4, 36, 1, 2, 46, + 48, 65, 68, 69, 72, 79, 84, 124, 118, 24, 128, 166, 115, 106, 102, 99, + 99, 107, 104, 99, 119, 111, 104, 81, 95, 106, 95, 65, 60, 56, 60, 73, + 89, 83, 81, 72, 72, 69, 73, 76, 71, 60, 57, 57, 51, 36, 34, 32, + 29, 25, 24, 18, 33, 40, 40, 24, 38, 21, 32, 26, 1, 0, 14, 49, + 48, 32, 32, 34, 25, 18, 10, 5, 0, 1, 6, 33, 36, 28, 36, 42, + 63, 52, 42, 36, 24, 5, 48, 65, 67, 57, 42, 60, 46, 59, 55, 51, + 17, 4, 60, 102, 95, 92, 91, 85, 85, 84, 92, 67, 30, 6, 108, 68, + 73, 108, 100, 84, 67, 73, 53, 38, 20, 32, 38, 44, 45, 52, 51, 49, + 59, 63, 59, 38, 59, 55, 104, 106, 106, 107, 114, 108, 102, 107, 115, 102, + 87, 83, 103, 99, 93, 102, 100, 95, 84, 79, 95, 75, 17, 1, 63, 103, + 102, 79, 64, 48, 38, 34, 18, 13, 10, 1, 10, 45, 51, 56, 48, 59, + 61, 65, 63, 67, 42, 1, 53, 114, 126, 130, 126, 124, 108, 118, 107, 80, + 42, 0, 93, 84, 100, 96, 104, 96, 93, 81, 69, 52, 29, 12, 10, 10, + 10, 13, 13, 12, 16, 14, 14, 14, 20, 21, 24, 65, 71, 89, 87, 85, + 115, 108, 91, 81, 132, 190, 139, 95, 120, 134, 130, 143, 139, 127, 134, 147, + 158, 198, 216, 218, 222, 222, 220, 220, 159, 128, 132, 144, 146, 142, 134, 96, + 36, 22, 21, 18, 25, 21, 18, 26, 41, 45, 56, 88, 103, 96, 79, 77, + 64, 60, 60, 51, 46, 44, 71, 104, 122, 116, 128, 100, 102, 112, 91, 84, + 45, 83, 130, 115, 97, 97, 112, 103, 106, 77, 73, 67, 9, 18, 144, 142, + 106, 97, 111, 111, 107, 99, 119, 97, 49, 13, 40, 96, 115, 108, 111, 112, + 120, 110, 111, 108, 102, 88, 107, 111, 119, 115, 111, 85, 67, 53, 37, 38, + 45, 34, 38, 71, 67, 81, 75, 85, 87, 96, 95, 88, 76, 10, 29, 85, + 96, 102, 96, 93, 96, 93, 97, 100, 93, 104, 89, 120, 136, 140, 136, 136, + 132, 119, 114, 85, 10, 131, 143, 130, 140, 132, 138, 131, 139, 135, 115, 72, + 22, 127, 147, 150, 135, 138, 144, 138, 108, 126, 128, 87, 73, 9, 24, 155, + 151, 102, 97, 148, 147, 112, 95, 118, 116, 65, 21, 67, 144, 140, 87, 88, + 84, 79, 71, 65, 57, 9, 24, 61, 68, 72, 69, 84, 89, 87, 92, 99, + 89, 0, 55, 153, 157, 154, 157, 158, 153, 150, 150, 118, 89, 21, 116, 153, + 144, 146, 153, 153, 153, 150, 134, 103, 87, 20, 56, 177, 170, 110, 106, 103, + 96, 84, 51, 26, 37, 22, 22, 21, 25, 21, 22, 20, 21, 18, 22, 21, + 22, 21, 30, 38, 103, 123, 128, 128, 114, 142, 130, 85, 40, 91, 154, 151, + 142, 92, 95, 44, 34, 34, 25, 29, 20, 61, 80, 150, 153, 153, 158, 154, + 162, 158, 158, 128, 139, 17, 139, 187, 182, 178, 187, 178, 178, 177, 177, 171, + 167, 136, 130, 161, 143, 140, 144, 157, 151, 153, 146, 139, 79, 0, 37, 136, + 181, 106, 135, 144, 171, 110, 147, 140, 52, 1, 135, 159, 154, 111, 154, 148, + 151, 88, 79, 114, 24, 134, 122, 143, 150, 159, 169, 167, 162, 165, 173, 169, + 140, 100, 87, 108, 139, 140, 136, 136, 136, 112, 88, 79, 85, 57, 69, 83, + 97, 102, 111, 112, 116, 124, 134, 135, 140, 139, 150, 157, 162, 166, 169, 83, + 59, 68, 60, 53, 55, 21, 28, 4, 0, 40, 34, 57, 51, 42, 46, 42, + 41, 36, 33, 6, 1, 51, 83, 84, 79, 76, 64, 80, 77, 67, 38, 28, + 6, 65, 63, 53, 44, 41, 63, 48, 45, 42, 49, 20, 2, 81, 99, 71, + 76, 85, 100, 77, 80, 59, 68, 33, 10, 116, 88, 65, 60, 45, 65, 77, + 97, 104, 92, 73, 88, 106, 93, 96, 103, 93, 95, 99, 89, 96, 80, 89, + 76, 71, 102, 88, 73, 83, 85, 75, 67, 64, 68, 84, 57, 72, 88, 104, + 108, 93, 93, 83, 76, 85, 84, 41, 0, 81, 97, 123, 85, 91, 67, 76, + 75, 68, 53, 32, 8, 69, 112, 108, 108, 100, 99, 64, 85, 88, 72, 48, + 1, 103, 127, 110, 96, 83, 106, 95, 87, 89, 77, 41, 0, 110, 80, 88, + 93, 89, 88, 89, 91, 79, 67, 29, 34, 110, 92, 84, 88, 103, 103, 85, + 84, 81, 79, 76, 72, 77, 72, 115, 122, 119, 106, 104, 106, 97, 71, 84, + 179, 157, 106, 84, 165, 173, 182, 195, 204, 208, 210, 214, 217, 221, 221, 216, + 220, 213, 163, 132, 138, 143, 138, 135, 107, 63, 33, 24, 21, 18, 25, 18, + 28, 36, 49, 42, 40, 79, 119, 134, 124, 123, 126, 134, 130, 134, 112, 102, + 104, 114, 127, 127, 115, 107, 115, 107, 104, 99, 88, 52, 79, 130, 124, 111, + 100, 99, 95, 107, 115, 84, 72, 0, 146, 150, 131, 134, 130, 131, 128, 111, + 108, 104, 102, 108, 12, 143, 139, 128, 130, 123, 128, 118, 119, 120, 123, 119, + 95, 76, 116, 123, 118, 114, 99, 100, 111, 116, 73, 40, 68, 126, 128, 134, + 120, 130, 128, 126, 116, 118, 107, 79, 6, 139, 135, 143, 138, 128, 126, 119, + 111, 115, 111, 93, 95, 138, 157, 154, 144, 144, 136, 138, 140, 114, 89, 5, + 148, 140, 140, 134, 130, 128, 127, 127, 132, 124, 76, 25, 140, 154, 138, 123, + 131, 126, 142, 139, 128, 116, 89, 83, 2, 158, 159, 153, 95, 110, 143, 140, + 115, 115, 118, 120, 75, 24, 139, 151, 138, 136, 139, 134, 147, 104, 84, 96, + 8, 72, 146, 159, 162, 154, 151, 146, 144, 147, 143, 106, 28, 139, 162, 159, + 154, 146, 140, 147, 150, 147, 138, 99, 18, 132, 159, 132, 147, 140, 142, 143, + 148, 148, 134, 97, 16, 153, 182, 153, 148, 158, 154, 150, 110, 132, 128, 127, + 128, 140, 159, 143, 140, 144, 147, 147, 142, 147, 148, 127, 124, 134, 132, 118, + 126, 134, 131, 155, 150, 143, 96, 41, 108, 169, 155, 148, 153, 131, 143, 140, + 118, 112, 88, 69, 126, 161, 171, 178, 173, 173, 170, 171, 162, 158, 140, 122, + 30, 158, 183, 191, 181, 185, 179, 148, 143, 144, 134, 127, 163, 163, 159, 120, + 124, 158, 158, 123, 127, 128, 153, 91, 0, 135, 181, 167, 165, 163, 158, 163, + 161, 162, 161, 89, 2, 147, 159, 166, 169, 174, 169, 170, 162, 104, 122, 28, + 167, 142, 166, 171, 170, 166, 147, 161, 167, 162, 136, 136, 99, 79, 124, 138, + 132, 138, 134, 135, 134, 130, 119, 92, 64, 81, 126, 166, 173, 179, 171, 167, + 150, 150, 135, 147, 155, 127, 130, 140, 178, 154, 112, 92, 61, 75, 87, 65, + 85, 22, 0, 0, 42, 49, 56, 51, 29, 32, 4, 24, 22, 26, 8, 2, + 69, 89, 73, 65, 63, 65, 71, 81, 75, 41, 25, 6, 67, 71, 83, 96, + 75, 87, 73, 71, 52, 49, 22, 2, 69, 96, 69, 69, 55, 59, 63, 56, + 44, 46, 29, 9, 115, 85, 80, 48, 59, 59, 61, 64, 45, 69, 81, 76, + 55, 53, 64, 64, 65, 46, 42, 67, 49, 52, 81, 57, 103, 87, 93, 88, + 75, 83, 80, 83, 79, 67, 71, 53, 96, 119, 102, 84, 95, 91, 89, 95, + 89, 83, 45, 1, 85, 100, 127, 83, 72, 88, 63, 80, 64, 56, 36, 21, + 88, 107, 95, 102, 102, 91, 87, 91, 88, 84, 48, 0, 100, 128, 75, 84, + 91, 91, 83, 107, 84, 89, 45, 0, 104, 76, 85, 84, 81, 84, 83, 85, + 83, 63, 30, 102, 103, 99, 85, 73, 92, 99, 88, 80, 93, 81, 93, 76, + 52, 112, 126, 112, 92, 85, 91, 106, 107, 68, 65, 138, 166, 114, 79, 118, + 123, 142, 162, 187, 199, 208, 210, 209, 210, 217, 201, 178, 155, 127, 138, 135, + 120, 99, 63, 34, 24, 25, 22, 21, 22, 20, 25, 34, 45, 42, 48, 46, + 79, 120, 132, 132, 131, 126, 122, 126, 128, 107, 104, 80, 128, 126, 106, 108, + 118, 119, 116, 108, 81, 102, 49, 76, 119, 115, 108, 108, 106, 99, 104, 107, + 87, 72, 14, 150, 148, 144, 126, 119, 119, 116, 106, 106, 106, 118, 108, 12, + 142, 127, 122, 123, 132, 127, 124, 132, 122, 120, 103, 60, 104, 151, 132, 122, + 119, 114, 114, 123, 118, 79, 55, 118, 124, 120, 116, 115, 123, 130, 115, 114, + 104, 99, 89, 25, 140, 124, 127, 131, 143, 136, 124, 119, 112, 102, 72, 123, + 159, 143, 135, 144, 135, 123, 115, 122, 97, 84, 0, 106, 139, 132, 122, 115, + 122, 131, 131, 142, 120, 77, 18, 127, 151, 131, 127, 107, 119, 123, 128, 115, + 92, 95, 84, 6, 150, 128, 147, 135, 138, 130, 127, 132, 128, 144, 124, 80, + 22, 146, 153, 135, 131, 128, 127, 127, 132, 92, 106, 10, 130, 158, 157, 151, + 138, 153, 151, 146, 131, 131, 99, 18, 143, 161, 148, 144, 140, 130, 128, 126, + 126, 120, 96, 16, 130, 153, 146, 148, 146, 132, 139, 138, 143, 142, 99, 22, + 143, 170, 171, 170, 162, 154, 132, 161, 127, 119, 108, 114, 147, 158, 167, 142, + 148, 153, 153, 147, 139, 146, 146, 127, 87, 154, 165, 155, 155, 144, 143, 143, + 138, 106, 38, 107, 167, 157, 154, 150, 144, 150, 143, 146, 118, 92, 73, 135, + 174, 169, 166, 165, 165, 166, 165, 169, 170, 124, 135, 24, 153, 178, 190, 187, + 185, 167, 167, 185, 182, 179, 175, 114, 104, 161, 165, 151, 147, 143, 144, 139, + 143, 144, 93, 32, 174, 177, 163, 167, 162, 167, 169, 167, 161, 161, 93, 0, + 143, 159, 163, 159, 157, 158, 154, 162, 120, 124, 30, 178, 153, 142, 167, 161, + 159, 159, 163, 151, 144, 150, 139, 75, 102, 135, 136, 134, 130, 128, 130, 128, + 132, 119, 84, 55, 116, 186, 191, 179, 178, 177, 153, 169, 161, 146, 147, 130, + 122, 183, 195, 206, 209, 30, 37, 79, 65, 24, 48, 81, 21, 0, 0, 36, + 65, 51, 20, 20, 29, 29, 17, 0, 22, 5, 2, 53, 93, 69, 76, 65, + 60, 59, 61, 81, 44, 28, 12, 38, 76, 75, 55, 67, 83, 79, 45, 45, + 49, 21, 2, 89, 91, 89, 67, 75, 77, 61, 75, 51, 67, 33, 2, 108, + 92, 79, 48, 40, 49, 67, 60, 63, 59, 53, 59, 49, 81, 57, 56, 69, + 63, 65, 64, 61, 49, 44, 32, 103, 89, 91, 84, 69, 72, 64, 61, 81, + 72, 63, 53, 114, 115, 85, 77, 73, 83, 88, 80, 79, 97, 41, 0, 89, + 107, 111, 67, 73, 87, 80, 96, 95, 77, 38, 6, 106, 106, 110, 92, 104, + 97, 88, 91, 87, 71, 49, 0, 95, 122, 73, 87, 81, 97, 100, 103, 88, + 72, 45, 0, 104, 85, 88, 93, 91, 81, 83, 81, 87, 68, 29, 102, 97, + 89, 93, 100, 96, 85, 89, 88, 81, 80, 69, 46, 68, 119, 118, 111, 87, + 91, 93, 83, 104, 71, 60, 120, 166, 115, 75, 87, 104, 116, 123, 131, 155, + 167, 177, 174, 170, 166, 146, 132, 132, 126, 107, 84, 52, 36, 24, 21, 20, + 20, 26, 17, 20, 34, 34, 41, 44, 52, 48, 42, 83, 136, 138, 135, 116, + 122, 111, 110, 99, 97, 68, 112, 134, 106, 110, 127, 111, 107, 103, 108, 87, + 100, 60, 63, 119, 116, 108, 120, 102, 111, 106, 106, 93, 71, 12, 100, 143, + 130, 134, 144, 127, 122, 118, 107, 104, 108, 69, 16, 102, 120, 126, 132, 126, + 124, 115, 118, 119, 103, 93, 61, 111, 147, 122, 119, 130, 138, 135, 123, 110, + 81, 41, 116, 132, 124, 118, 116, 112, 126, 120, 106, 102, 96, 88, 5, 119, + 119, 130, 116, 135, 144, 138, 119, 115, 93, 53, 120, 161, 143, 140, 142, 134, + 119, 119, 111, 104, 92, 2, 122, 144, 144, 114, 124, 128, 124, 136, 134, 131, + 81, 17, 131, 151, 128, 124, 120, 122, 116, 106, 115, 96, 89, 88, 5, 114, + 128, 106, 138, 139, 132, 132, 130, 130, 126, 122, 89, 21, 132, 146, 128, 127, + 138, 140, 138, 132, 112, 108, 2, 139, 161, 146, 146, 146, 138, 135, 131, 124, + 127, 99, 8, 138, 161, 148, 136, 143, 128, 126, 128, 126, 127, 99, 13, 128, + 154, 154, 146, 155, 154, 153, 142, 143, 118, 102, 20, 138, 169, 174, 169, 171, + 163, 173, 174, 169, 162, 106, 143, 169, 155, 142, 135, 142, 142, 140, 123, 127, + 134, 118, 77, 96, 170, 167, 142, 153, 153, 157, 136, 138, 114, 51, 107, 163, + 155, 150, 158, 157, 151, 150, 147, 124, 99, 72, 136, 177, 169, 163, 165, 170, + 170, 163, 162, 167, 123, 136, 9, 150, 175, 179, 186, 189, 166, 169, 177, 179, + 175, 171, 106, 140, 170, 159, 140, 151, 139, 144, 138, 140, 143, 95, 0, 127, + 171, 166, 165, 157, 163, 162, 167, 167, 155, 96, 0, 154, 159, 155, 163, 161, + 159, 154, 162, 158, 130, 32, 177, 140, 148, 170, 161, 167, 161, 155, 155, 147, + 148, 144, 71, 81, 136, 138, 131, 132, 134, 131, 126, 132, 124, 91, 55, 161, + 190, 177, 173, 174, 139, 162, 177, 169, 155, 154, 102, 127, 189, 206, 187, 163, + 72, 72, 83, 26, 40, 48, 68, 16, 0, 1, 33, 63, 52, 6, 16, 18, + 36, 1, 0, 29, 1, 1, 44, 83, 72, 65, 77, 85, 59, 56, 67, 46, + 29, 8, 77, 87, 75, 55, 61, 76, 77, 49, 46, 49, 22, 2, 76, 89, + 61, 73, 76, 65, 71, 64, 52, 52, 32, 4, 106, 81, 76, 45, 48, 48, + 71, 64, 63, 55, 45, 64, 73, 72, 77, 72, 48, 52, 63, 49, 53, 61, + 65, 28, 100, 100, 89, 69, 72, 63, 81, 61, 73, 69, 67, 57, 111, 112, + 68, 68, 73, 77, 63, 76, 77, 76, 42, 1, 89, 103, 119, 79, 88, 72, + 63, 64, 89, 55, 38, 0, 93, 97, 116, 96, 104, 92, 91, 88, 71, 80, + 49, 0, 107, 120, 83, 96, 93, 93, 84, 100, 95, 83, 45, 0, 96, 96, + 88, 88, 87, 83, 83, 81, 83, 65, 33, 65, 85, 104, 92, 80, 96, 85, + 84, 89, 84, 77, 68, 41, 96, 120, 115, 106, 97, 84, 89, 95, 108, 80, + 59, 111, 166, 127, 95, 67, 69, 69, 76, 95, 115, 119, 123, 127, 123, 122, + 119, 93, 71, 51, 37, 28, 25, 25, 21, 18, 21, 25, 18, 36, 40, 41, + 42, 48, 51, 52, 52, 44, 76, 130, 120, 110, 95, 108, 111, 110, 97, 79, + 68, 118, 127, 106, 119, 111, 112, 97, 96, 114, 99, 103, 65, 53, 110, 115, + 106, 104, 107, 103, 97, 100, 83, 73, 9, 103, 142, 139, 148, 131, 99, 97, + 108, 99, 114, 115, 73, 13, 110, 130, 124, 128, 114, 118, 118, 119, 106, 106, + 96, 57, 111, 151, 130, 116, 118, 112, 110, 127, 111, 80, 42, 100, 132, 124, + 128, 124, 114, 120, 108, 103, 104, 92, 87, 4, 110, 128, 130, 116, 130, 140, + 136, 115, 103, 93, 53, 122, 163, 131, 132, 123, 132, 119, 122, 106, 110, 88, + 5, 136, 143, 138, 115, 122, 130, 132, 127, 132, 126, 85, 12, 143, 153, 127, + 120, 120, 107, 119, 119, 100, 99, 96, 83, 2, 122, 155, 143, 140, 136, 132, + 127, 136, 130, 132, 122, 81, 13, 132, 148, 127, 130, 128, 128, 124, 131, 95, + 104, 2, 138, 158, 138, 147, 136, 131, 134, 124, 130, 106, 99, 22, 147, 159, + 144, 135, 127, 132, 123, 123, 115, 128, 97, 12, 128, 151, 154, 140, 139, 143, + 138, 138, 142, 124, 104, 13, 147, 177, 171, 179, 163, 169, 163, 167, 162, 158, + 75, 143, 161, 155, 148, 143, 138, 138, 135, 134, 135, 119, 128, 75, 148, 175, + 174, 140, 159, 148, 150, 135, 135, 120, 60, 107, 169, 159, 155, 157, 159, 148, + 148, 150, 144, 95, 51, 123, 173, 161, 155, 155, 158, 161, 158, 150, 170, 138, + 136, 12, 162, 179, 178, 186, 181, 171, 166, 166, 185, 173, 170, 95, 143, 173, + 154, 142, 146, 135, 132, 138, 134, 140, 99, 0, 132, 174, 163, 161, 161, 162, + 161, 153, 161, 146, 106, 0, 144, 157, 162, 162, 167, 163, 155, 158, 130, 131, + 40, 179, 146, 150, 171, 158, 171, 157, 155, 161, 150, 148, 134, 65, 104, 138, + 136, 124, 126, 120, 119, 119, 130, 114, 75, 89, 163, 189, 170, 169, 174, 150, + 147, 159, 144, 143, 144, 95, 161, 195, 197, 163, 163, 80, 83, 22, 30, 45, + 34, 60, 34, 2, 0, 37, 68, 53, 10, 8, 16, 29, 1, 0, 24, 2, + 1, 40, 89, 76, 71, 52, 68, 72, 57, 60, 61, 33, 10, 75, 76, 73, + 65, 44, 49, 60, 44, 46, 45, 21, 1, 76, 92, 65, 67, 67, 64, 77, + 68, 53, 56, 34, 5, 110, 93, 72, 44, 45, 48, 48, 53, 65, 60, 42, + 84, 85, 72, 71, 49, 49, 73, 83, 49, 71, 67, 71, 41, 111, 84, 69, + 64, 71, 60, 81, 59, 80, 67, 56, 60, 115, 103, 68, 76, 60, 73, 80, + 96, 75, 75, 46, 0, 85, 106, 119, 77, 77, 75, 65, 64, 99, 53, 41, + 5, 100, 112, 99, 87, 99, 81, 81, 88, 72, 83, 51, 1, 103, 126, 83, + 81, 91, 89, 93, 100, 93, 77, 46, 0, 99, 89, 89, 96, 83, 83, 85, + 79, 75, 65, 36, 67, 88, 93, 91, 89, 96, 85, 77, 81, 76, 83, 72, + 34, 97, 120, 118, 92, 100, 81, 92, 103, 93, 87, 56, 102, 163, 135, 106, + 87, 69, 59, 53, 53, 48, 48, 46, 48, 51, 45, 41, 37, 30, 30, 28, + 26, 22, 22, 21, 25, 14, 24, 41, 48, 55, 56, 55, 52, 51, 53, 55, + 44, 77, 135, 111, 115, 115, 111, 102, 122, 110, 96, 51, 112, 128, 106, 123, + 104, 95, 95, 93, 110, 102, 102, 69, 37, 111, 122, 124, 120, 119, 114, 107, + 99, 88, 73, 2, 103, 135, 124, 139, 99, 93, 106, 108, 100, 104, 110, 100, + 8, 142, 135, 114, 136, 118, 107, 106, 108, 106, 120, 100, 56, 118, 142, 126, + 124, 112, 112, 107, 120, 115, 83, 46, 99, 130, 142, 151, 120, 110, 104, 106, + 104, 108, 102, 83, 0, 153, 123, 124, 116, 128, 126, 136, 116, 104, 99, 51, + 122, 162, 143, 138, 120, 130, 118, 119, 103, 115, 97, 0, 146, 143, 144, 116, + 120, 120, 136, 136, 135, 131, 85, 16, 142, 155, 128, 120, 116, 107, 104, 122, + 97, 103, 97, 91, 4, 165, 163, 142, 147, 123, 132, 143, 124, 122, 134, 122, + 87, 10, 139, 148, 127, 127, 128, 158, 134, 136, 95, 106, 1, 139, 159, 139, + 144, 131, 136, 126, 124, 127, 132, 103, 30, 143, 158, 134, 143, 127, 126, 128, + 127, 120, 134, 100, 9, 131, 154, 147, 138, 139, 143, 155, 140, 138, 135, 106, + 10, 148, 182, 171, 173, 163, 159, 161, 162, 163, 151, 71, 146, 169, 148, 162, + 153, 143, 139, 135, 127, 130, 122, 128, 65, 150, 170, 166, 143, 162, 159, 134, + 140, 118, 106, 56, 110, 170, 151, 154, 155, 143, 142, 139, 144, 148, 97, 61, + 128, 173, 169, 158, 151, 151, 144, 153, 155, 167, 146, 132, 12, 166, 186, 185, + 183, 166, 165, 166, 166, 182, 166, 170, 87, 147, 171, 155, 136, 144, 136, 132, + 139, 142, 143, 97, 0, 148, 171, 166, 163, 159, 165, 162, 165, 155, 147, 100, + 1, 153, 158, 158, 154, 157, 169, 158, 161, 138, 130, 48, 170, 153, 153, 140, + 134, 175, 155, 151, 154, 158, 138, 135, 61, 104, 122, 134, 132, 140, 135, 135, + 126, 128, 108, 68, 108, 182, 186, 169, 170, 167, 150, 165, 165, 146, 146, 142, + 92, 159, 195, 173, 175, 174, 81, 65, 20, 34, 42, 29, 60, 14, 0, 0, + 24, 60, 44, 12, 20, 8, 37, 1, 17, 34, 4, 0, 20, 71, 83, 65, + 71, 65, 51, 46, 60, 67, 26, 12, 52, 81, 55, 67, 72, 52, 65, 48, + 45, 59, 24, 2, 76, 89, 52, 55, 85, 64, 59, 49, 44, 46, 34, 2, + 107, 92, 87, 46, 49, 45, 49, 48, 63, 59, 42, 89, 80, 73, 52, 48, + 60, 99, 49, 52, 52, 65, 84, 38, 99, 77, 75, 72, 68, 63, 88, 59, + 72, 64, 37, 65, 116, 116, 69, 103, 67, 67, 81, 102, 72, 71, 52, 0, + 84, 99, 107, 76, 85, 72, 67, 61, 95, 57, 42, 13, 96, 112, 92, 92, + 83, 79, 104, 88, 79, 75, 53, 0, 100, 127, 73, 93, 91, 85, 88, 107, + 84, 76, 46, 0, 95, 88, 92, 87, 75, 80, 81, 80, 85, 63, 37, 65, + 103, 75, 88, 91, 100, 87, 96, 93, 65, 88, 63, 30, 108, 127, 115, 102, + 99, 80, 83, 103, 89, 88, 56, 95, 157, 140, 116, 106, 93, 84, 61, 52, + 48, 44, 41, 40, 37, 36, 34, 32, 30, 28, 26, 26, 25, 26, 26, 12, + 22, 42, 57, 61, 57, 64, 65, 65, 68, 57, 59, 52, 72, 144, 116, 104, + 118, 112, 111, 107, 107, 102, 42, 114, 120, 106, 106, 106, 95, 111, 102, 100, + 100, 106, 72, 32, 96, 119, 126, 108, 104, 100, 103, 99, 89, 75, 10, 115, + 134, 127, 134, 95, 96, 115, 99, 100, 112, 116, 106, 8, 138, 128, 116, 135, + 111, 110, 111, 102, 100, 119, 97, 45, 112, 155, 123, 115, 116, 116, 111, 123, + 114, 84, 52, 91, 138, 140, 122, 111, 120, 104, 119, 116, 114, 102, 92, 17, + 147, 115, 131, 112, 126, 110, 146, 114, 106, 96, 51, 123, 161, 135, 140, 124, + 124, 127, 107, 104, 103, 93, 0, 126, 142, 143, 115, 128, 116, 124, 127, 138, + 118, 87, 10, 139, 155, 131, 126, 118, 116, 115, 119, 103, 95, 103, 89, 2, + 158, 170, 139, 142, 124, 135, 131, 135, 120, 124, 119, 88, 14, 134, 155, 130, + 131, 146, 147, 136, 128, 97, 106, 10, 143, 159, 131, 138, 126, 126, 127, 132, + 127, 131, 106, 13, 143, 159, 143, 144, 138, 142, 139, 140, 122, 135, 104, 6, + 136, 148, 143, 143, 162, 139, 135, 138, 142, 143, 111, 18, 179, 179, 173, 167, + 162, 171, 161, 163, 162, 158, 77, 151, 159, 161, 153, 159, 148, 138, 138, 127, + 128, 122, 123, 59, 157, 175, 163, 140, 153, 147, 136, 134, 139, 111, 60, 112, + 173, 150, 147, 143, 139, 136, 138, 143, 143, 100, 89, 126, 173, 173, 157, 150, + 139, 161, 151, 144, 165, 142, 135, 10, 162, 185, 182, 181, 169, 165, 163, 167, + 171, 167, 166, 83, 154, 175, 150, 138, 135, 131, 130, 138, 128, 150, 102, 22, + 170, 175, 163, 162, 165, 162, 157, 163, 155, 148, 108, 0, 161, 163, 158, 159, + 158, 157, 159, 161, 132, 138, 55, 155, 157, 147, 166, 158, 174, 153, 153, 162, + 159, 143, 128, 46, 110, 128, 122, 126, 124, 131, 130, 120, 130, 97, 65, 114, + 191, 178, 167, 169, 163, 165, 167, 185, 158, 155, 142, 83, 169, 194, 171, 179, + 181, 87, 26, 16, 40, 30, 25, 81, 12, 0, 0, 26, 42, 55, 14, 38, + 12, 28, 1, 5, 21, 6, 2, 28, 61, 83, 80, 77, 48, 81, 59, 56, + 73, 28, 12, 29, 81, 79, 55, 55, 56, 41, 56, 51, 46, 25, 1, 87, + 99, 55, 55, 52, 64, 69, 45, 45, 49, 34, 1, 107, 93, 83, 46, 42, + 44, 69, 51, 51, 55, 38, 92, 65, 55, 48, 57, 92, 55, 52, 59, 65, + 53, 65, 21, 102, 83, 65, 68, 59, 61, 91, 56, 71, 61, 44, 80, 118, + 102, 73, 100, 72, 63, 73, 106, 69, 67, 51, 0, 83, 87, 118, 75, 73, + 63, 68, 63, 110, 69, 52, 5, 99, 115, 85, 85, 77, 77, 103, 83, 77, + 69, 56, 0, 88, 126, 85, 81, 83, 84, 81, 106, 77, 76, 45, 0, 103, + 77, 85, 77, 75, 75, 80, 77, 79, 65, 38, 32, 67, 112, 89, 83, 68, + 81, 69, 71, 69, 91, 67, 28, 120, 123, 120, 89, 107, 83, 81, 102, 83, + 85, 60, 83, 144, 138, 140, 108, 103, 92, 80, 67, 63, 52, 48, 42, 38, + 38, 36, 38, 36, 40, 36, 36, 34, 30, 40, 10, 40, 61, 63, 61, 79, + 76, 83, 88, 87, 60, 59, 44, 71, 150, 115, 126, 92, 118, 126, 93, 104, + 99, 44, 107, 120, 107, 110, 99, 95, 119, 102, 103, 99, 110, 76, 36, 100, + 118, 119, 108, 100, 102, 103, 102, 88, 75, 8, 118, 131, 124, 146, 93, 96, + 106, 96, 100, 102, 107, 73, 8, 102, 124, 108, 143, 115, 114, 110, 103, 104, + 122, 99, 40, 111, 155, 118, 115, 118, 111, 119, 110, 108, 87, 49, 103, 136, + 144, 111, 111, 104, 115, 112, 106, 103, 99, 91, 2, 131, 119, 126, 111, 131, + 108, 134, 114, 104, 93, 32, 118, 161, 139, 143, 124, 122, 114, 112, 108, 107, + 92, 0, 131, 135, 154, 112, 119, 118, 118, 126, 140, 123, 88, 8, 142, 159, + 132, 135, 114, 122, 112, 127, 104, 93, 100, 92, 0, 130, 139, 116, 151, 124, + 134, 124, 134, 120, 126, 118, 88, 12, 139, 159, 130, 126, 146, 132, 132, 130, + 114, 110, 0, 142, 154, 139, 124, 123, 126, 122, 144, 128, 139, 110, 5, 130, + 158, 153, 135, 139, 135, 132, 130, 119, 139, 107, 6, 134, 150, 140, 157, 165, + 150, 135, 138, 139, 131, 112, 13, 161, 174, 178, 163, 161, 174, 159, 159, 158, + 159, 71, 158, 169, 147, 155, 153, 147, 131, 151, 128, 127, 131, 122, 53, 159, + 171, 142, 162, 134, 136, 143, 138, 139, 122, 76, 84, 167, 148, 143, 142, 132, + 143, 126, 143, 146, 108, 68, 122, 169, 177, 155, 142, 138, 165, 151, 143, 171, + 135, 139, 6, 166, 186, 178, 165, 163, 161, 169, 181, 171, 161, 170, 67, 157, + 170, 161, 136, 135, 126, 132, 139, 138, 139, 107, 0, 136, 171, 155, 155, 155, + 161, 157, 165, 147, 165, 107, 0, 153, 161, 158, 155, 151, 159, 158, 157, 153, + 148, 60, 102, 182, 147, 153, 154, 169, 153, 150, 161, 166, 143, 123, 36, 111, + 126, 123, 123, 122, 124, 122, 119, 131, 96, 59, 123, 183, 170, 163, 169, 155, + 167, 154, 181, 167, 165, 142, 71, 170, 197, 173, 182, 167, 87, 21, 24, 29, + 33, 24, 83, 12, 0, 0, 16, 33, 63, 8, 48, 8, 22, 0, 12, 5, + 10, 1, 10, 51, 89, 85, 89, 44, 77, 95, 38, 81, 25, 13, 12, 95, + 85, 42, 41, 44, 60, 60, 44, 44, 25, 1, 91, 102, 57, 46, 51, 51, + 46, 46, 45, 49, 36, 1, 107, 95, 93, 46, 45, 46, 51, 52, 49, 48, + 33, 97, 59, 51, 46, 93, 69, 48, 53, 56, 67, 57, 52, 18, 88, 85, + 63, 57, 57, 61, 102, 55, 67, 60, 41, 91, 122, 108, 69, 103, 59, 68, + 73, 108, 68, 68, 55, 0, 75, 83, 118, 63, 77, 63, 72, 63, 131, 57, + 49, 0, 110, 115, 81, 83, 75, 75, 111, 79, 73, 71, 55, 0, 80, 124, + 80, 81, 77, 75, 83, 118, 81, 81, 48, 0, 91, 83, 81, 73, 72, 83, + 76, 77, 72, 60, 41, 38, 67, 115, 115, 69, 83, 75, 64, 69, 65, 107, + 64, 24, 116, 127, 131, 92, 114, 112, 79, 95, 84, 77, 59, 77, 131, 140, + 131, 128, 107, 97, 89, 83, 75, 65, 52, 52, 51, 48, 46, 46, 34, 37, + 36, 33, 30, 30, 45, 8, 42, 65, 55, 77, 71, 71, 89, 107, 104, 81, + 59, 53, 63, 153, 110, 131, 93, 124, 108, 97, 102, 87, 37, 110, 116, 104, + 108, 99, 96, 128, 97, 104, 96, 123, 83, 40, 102, 112, 100, 102, 103, 103, + 97, 104, 89, 72, 1, 120, 120, 120, 158, 93, 95, 100, 95, 102, 100, 112, + 84, 4, 110, 128, 110, 143, 112, 114, 106, 104, 99, 130, 92, 33, 114, 165, + 115, 116, 115, 108, 106, 107, 106, 87, 55, 91, 139, 118, 111, 108, 108, 107, + 110, 114, 107, 96, 89, 2, 144, 119, 122, 110, 140, 107, 146, 108, 100, 87, + 30, 115, 161, 130, 148, 118, 118, 119, 108, 100, 112, 97, 1, 148, 135, 146, + 111, 122, 139, 140, 126, 147, 127, 92, 5, 155, 166, 135, 135, 112, 116, 115, + 138, 116, 91, 104, 92, 0, 134, 158, 138, 151, 124, 130, 127, 142, 116, 130, + 119, 93, 6, 143, 154, 130, 128, 150, 128, 136, 128, 103, 110, 0, 146, 163, + 136, 123, 128, 114, 120, 150, 130, 111, 107, 4, 131, 157, 161, 135, 134, 131, + 127, 114, 118, 150, 108, 5, 132, 146, 142, 157, 173, 136, 135, 138, 140, 146, + 119, 8, 166, 182, 182, 163, 155, 178, 155, 155, 155, 155, 44, 165, 167, 162, + 147, 163, 147, 134, 143, 124, 127, 120, 126, 38, 167, 171, 143, 169, 131, 142, + 139, 138, 138, 122, 84, 71, 169, 148, 143, 132, 154, 143, 128, 143, 139, 107, + 72, 96, 144, 182, 154, 144, 134, 159, 147, 138, 165, 144, 132, 6, 169, 189, + 179, 161, 161, 161, 166, 181, 169, 163, 169, 52, 162, 170, 162, 134, 130, 123, + 131, 131, 131, 135, 114, 0, 131, 171, 146, 147, 146, 155, 157, 171, 147, 150, + 115, 0, 150, 159, 161, 155, 151, 153, 154, 161, 157, 135, 104, 68, 182, 162, + 151, 159, 167, 155, 147, 161, 151, 153, 118, 29, 102, 127, 128, 140, 116, 124, + 116, 119, 131, 89, 48, 127, 186, 165, 163, 170, 153, 170, 162, 175, 154, 157, + 146, 56, 182, 194, 167, 167, 166 }; diff --git a/examples/img/logo.bmp b/examples/img/logo.bmp new file mode 100644 index 000000000..4b21da396 Binary files /dev/null and b/examples/img/logo.bmp differ diff --git a/examples/img/milla.bmp b/examples/img/milla.bmp new file mode 100644 index 000000000..54350e9eb Binary files /dev/null and b/examples/img/milla.bmp differ diff --git a/examples/img/odykill.h b/examples/img/odykill.h new file mode 100644 index 000000000..cfeafff6f --- /dev/null +++ b/examples/img/odykill.h @@ -0,0 +1,79162 @@ +/*------------------------------------------------------------ + + Define hard-coded color images used in the 'odykill.cpp' + example file, so that the corresponding executable does not + depend on additional data files. + +--------------------------------------------------------------*/ + +/* Define image 'brain' of size 100x100x1x3 and type 'const unsigned char' */ +const unsigned char data_brain[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 139, 89, 7, 7, 7, 7, 7, 7, 7, 7, 105, + 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 147, 43, 15, 15, 15, + 15, 15, 15, 15, 15, 112, 147, 147, 88, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 51, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 121, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 92, 92, 92, 92, 56, 0, 0, 0, 0, 0, 105, 235, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 159, 0, 0, 0, 0, 11, 85, 85, 85, 85, 85, 53, 0, 0, 0, 0, + 0, 0, 114, 207, 229, 236, 236, 236, 236, 224, 206, 116, 7, 0, 0, 0, + 76, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 170, 170, 170, 170, 161, 39, 39, + 39, 39, 39, 39, 3, 0, 0, 47, 174, 205, 237, 237, 237, 237, 237, 223, + 200, 161, 39, 0, 37, 200, 229, 237, 237, 236, 236, 236, 236, 236, 236, 236, + 202, 95, 0, 0, 0, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 169, 47, 46, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 219, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 215, 193, 212, 237, 237, 237, 237, 236, 236, 236, + 236, 236, 236, 236, 236, 225, 135, 0, 0, 113, 198, 178, 142, 47, 47, 47, + 47, 47, 47, 84, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 75, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 63, 63, 28, 0, 0, 0, 178, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 236, 236, 236, 236, 236, 236, 236, 236, 237, 230, 23, 0, 8, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 138, 242, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 194, 194, 194, + 115, 0, 0, 0, 23, 56, 100, 178, 178, 178, 178, 203, 237, 237, 188, 38, + 0, 14, 208, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 111, + 0, 0, 0, 0, 0, 0, 35, 55, 55, 55, 4, 0, 0, 0, 103, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, + 53, 0, 0, 0, 0, 0, 3, 129, 198, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 216, 171, 187, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, + 236, 237, 237, 196, 9, 0, 16, 60, 170, 170, 211, 236, 236, 236, 175, 72, + 0, 0, 0, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 249, 116, 8, 0, 0, 0, 0, 0, 0, 101, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, + 236, 236, 236, 236, 236, 237, 237, 237, 178, 163, 187, 236, 236, 236, 236, 236, + 236, 236, 236, 215, 105, 0, 0, 12, 193, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 139, 0, 0, 0, 28, 34, 7, 0, 61, 228, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 232, 71, 0, 0, 29, 228, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 5, 0, 1, 56, 222, 237, 53, + 0, 169, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 236, 208, 196, 196, 196, 195, 234, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 216, 39, 0, + 0, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 23, 0, 0, 81, + 237, 237, 237, 68, 19, 175, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 235, 215, 224, 237, 237, 237, 217, 210, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 198, 9, 0, 10, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, + 0, 0, 45, 225, 237, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 216, 210, 237, 237, 237, 237, 237, + 206, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 155, 0, 0, 68, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 252, 48, 0, 15, 205, 237, 236, 236, 236, 236, 236, 236, 236, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 216, 224, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 217, 33, 0, 0, 222, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 149, 0, 0, 78, 237, 236, 236, 236, 236, 236, + 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 216, 224, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 155, 0, 0, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 169, 17, 2, 1, 0, 0, 173, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 231, 198, 196, 186, 224, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 231, 199, 203, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 235, 16, 0, 67, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 3, 0, 0, 0, 0, + 81, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 205, 234, 237, 225, 230, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 205, 233, 230, 209, 237, 237, 237, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 59, 0, 7, 141, 141, 207, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 0, + 0, 21, 94, 97, 197, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 204, 237, 237, 237, 237, 237, + 237, 237, 237, 206, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 207, 233, 237, 237, + 214, 211, 196, 196, 209, 236, 236, 236, 236, 236, 236, 236, 237, 154, 0, 0, + 0, 0, 10, 18, 33, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 114, 0, 47, 204, 222, 234, 237, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 210, 230, 237, + 237, 237, 237, 237, 237, 237, 211, 229, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 207, 186, 196, 196, 201, 237, 237, 237, 237, 237, 237, 237, 221, + 219, 237, 237, 237, 234, 186, 237, 237, 223, 199, 234, 236, 236, 236, 236, 236, + 237, 221, 27, 0, 0, 0, 0, 0, 0, 7, 186, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 240, 104, 0, 105, 222, 222, 224, 235, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 207, 233, 237, 237, 237, 237, 237, 237, 233, 208, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 221, 208, 229, 237, 237, 204, 237, 237, 237, 237, + 237, 237, 237, 226, 226, 237, 237, 237, 237, 232, 237, 237, 237, 219, 221, 237, + 237, 237, 237, 237, 237, 237, 214, 205, 177, 83, 83, 20, 0, 0, 22, 222, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 104, 0, 105, 222, 222, 222, + 233, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 207, 233, 237, 237, 237, 237, 237, 237, 225, 215, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 204, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 212, 229, 237, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 207, + 44, 0, 0, 57, 240, 255, 255, 255, 255, 255, 255, 255, 255, 229, 104, 0, + 105, 222, 222, 222, 233, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 207, 233, 237, 237, 237, 237, 237, + 237, 225, 215, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 213, 214, 214, 214, 214, 214, 220, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 235, 232, 237, 237, 237, 237, 237, 236, 236, 236, + 236, 236, 236, 236, 198, 20, 0, 0, 124, 255, 255, 255, 255, 255, 255, 255, + 255, 229, 104, 0, 105, 222, 222, 222, 233, 236, 236, 236, 236, 236, 236, 236, + 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 215, 226, 237, + 237, 237, 237, 237, 237, 228, 212, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 235, 203, 219, 219, 219, 219, 212, 206, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 236, 236, 236, 236, 236, 236, 236, 236, 163, 7, 0, 23, 227, 255, 255, + 255, 255, 255, 255, 255, 229, 104, 0, 105, 222, 222, 222, 233, 236, 236, 236, + 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 204, 237, 237, 237, 237, 237, 237, 237, 204, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 204, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 101, 0, + 0, 71, 255, 255, 255, 255, 255, 255, 255, 229, 86, 0, 105, 222, 222, 222, + 229, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 204, 237, 237, 237, 237, 237, 237, 237, 197, 198, + 221, 228, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 204, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 197, 16, 0, 44, 255, 255, 255, 255, 255, 255, 255, 161, 4, 0, + 105, 222, 222, 222, 226, 235, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 226, 237, 237, 237, 237, 237, + 237, 237, 237, 234, 208, 204, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 204, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 150, 0, 14, 213, 255, 255, 255, 255, 255, + 225, 20, 0, 0, 117, 222, 222, 222, 222, 235, 236, 236, 236, 236, 236, 236, + 235, 226, 231, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 216, 224, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 234, 207, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 181, 0, 0, 194, 255, + 255, 255, 255, 255, 144, 0, 0, 50, 212, 222, 222, 222, 222, 236, 236, 236, + 236, 236, 236, 237, 213, 206, 201, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 216, 224, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 217, 192, 216, 232, 237, 237, 237, 237, 237, 237, 237, 237, 230, 228, 228, + 232, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 215, + 26, 0, 194, 255, 255, 255, 255, 255, 43, 0, 15, 195, 222, 222, 222, 222, + 222, 236, 237, 237, 237, 237, 237, 234, 206, 237, 206, 235, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 216, 224, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 216, 201, 231, 237, 237, 237, 237, 237, 237, + 237, 212, 204, 204, 200, 219, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 42, 0, 194, 255, 255, 255, 255, 255, 0, 0, 77, 222, + 222, 222, 222, 222, 222, 236, 237, 237, 237, 237, 237, 208, 233, 237, 234, 206, + 237, 237, 237, 237, 235, 215, 196, 227, 235, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 216, 223, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 190, 236, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 235, 206, 237, 237, 237, 237, 237, 236, + 236, 236, 236, 236, 236, 236, 236, 205, 19, 0, 190, 255, 255, 255, 255, 255, + 0, 0, 165, 222, 222, 222, 222, 222, 222, 236, 237, 237, 237, 237, 237, 223, + 235, 237, 237, 204, 236, 237, 237, 237, 212, 213, 237, 205, 197, 210, 236, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 227, 198, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 224, 216, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 212, 229, 237, + 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 180, 0, 0, 183, 254, + 255, 255, 255, 255, 0, 38, 215, 222, 222, 222, 222, 222, 222, 236, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 217, 223, 237, 237, 237, 224, 232, 237, 237, + 237, 191, 233, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 188, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 214, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 219, 222, 237, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 84, + 0, 20, 208, 250, 255, 255, 255, 255, 0, 78, 222, 222, 222, 222, 222, 222, + 224, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 217, 223, 237, 237, 237, + 237, 237, 237, 237, 237, 207, 198, 200, 233, 237, 237, 237, 237, 237, 237, 237, + 237, 235, 196, 196, 166, 209, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 219, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 204, 236, 237, 237, 237, 237, 237, 237, 237, 236, 236, + 236, 236, 236, 84, 0, 40, 237, 239, 255, 255, 255, 255, 0, 78, 222, 222, + 222, 222, 222, 222, 230, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 225, + 195, 223, 237, 237, 237, 237, 237, 237, 237, 235, 232, 232, 199, 209, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 207, 232, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 221, 220, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 84, 0, 2, 141, 237, 249, 255, 255, 255, + 0, 78, 222, 222, 222, 222, 222, 222, 222, 233, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 236, 204, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 223, 204, 237, 237, 237, 237, 237, 237, 237, 222, 219, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 215, 196, 199, 210, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 124, 0, 0, 6, 94, + 249, 255, 255, 255, 0, 49, 217, 222, 222, 222, 222, 222, 222, 223, 235, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 220, 221, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 200, 237, 237, 237, 237, 237, 237, 237, 221, 220, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 233, 222, 214, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 202, + 52, 0, 0, 17, 223, 255, 255, 255, 0, 0, 209, 222, 222, 222, 222, 222, + 222, 222, 225, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 234, 202, 224, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 214, 226, 237, 237, 237, 237, + 237, 237, 221, 220, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 218, 223, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 223, 67, 0, 0, 87, 254, 255, 255, 0, 0, 133, 222, + 222, 222, 222, 222, 222, 222, 222, 233, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 204, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 209, 231, + 237, 237, 237, 237, 237, 237, 221, 220, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 211, 229, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 208, 17, 0, 12, 223, 255, 255, + 0, 0, 37, 203, 222, 222, 222, 222, 222, 222, 222, 223, 235, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 210, 230, 237, 237, 237, 237, 237, 237, 237, + 237, 231, 210, 237, 237, 237, 237, 237, 237, 237, 233, 207, 237, 237, 237, 237, + 237, 237, 237, 172, 171, 171, 171, 171, 171, 171, 181, 236, 236, 236, 233, 170, + 170, 170, 170, 231, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 230, 210, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 237, 133, 0, + 0, 217, 255, 255, 80, 0, 0, 37, 52, 140, 222, 222, 222, 222, 222, 222, + 217, 196, 200, 232, 237, 237, 237, 237, 237, 237, 237, 218, 198, 237, 237, 237, + 237, 237, 237, 237, 237, 232, 234, 237, 237, 237, 237, 237, 237, 237, 237, 204, + 237, 237, 237, 237, 235, 102, 56, 1, 0, 0, 0, 0, 0, 0, 8, 146, + 166, 55, 53, 0, 0, 0, 0, 113, 217, 236, 236, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 212, 229, 237, 237, 237, 236, 236, 236, 236, 236, + 236, 236, 217, 11, 0, 217, 255, 255, 191, 12, 0, 0, 0, 52, 222, 222, + 222, 222, 222, 222, 224, 236, 225, 215, 237, 237, 237, 237, 237, 237, 237, 201, + 231, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 228, 237, 237, 237, 237, 137, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 191, 236, 236, + 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 212, 229, 237, 237, 236, 236, + 236, 236, 236, 236, 236, 236, 237, 14, 0, 196, 255, 255, 255, 150, 47, 13, + 0, 15, 195, 222, 222, 222, 222, 222, 222, 234, 237, 207, 234, 237, 237, 237, + 237, 237, 237, 227, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 225, 28, 0, 0, 42, + 83, 166, 165, 165, 165, 51, 0, 0, 0, 0, 19, 43, 91, 89, 0, 0, + 0, 31, 174, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 226, 214, 237, + 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 14, 0, 119, 255, 255, + 255, 255, 255, 144, 0, 0, 169, 222, 222, 222, 222, 222, 222, 230, 237, 227, + 213, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 225, 200, 118, 78, 78, 78, 78, 78, 78, 57, + 0, 0, 75, 234, 237, 237, 236, 236, 236, 205, 68, 0, 3, 69, 193, 236, + 236, 223, 117, 17, 0, 0, 148, 236, 236, 236, 236, 237, 237, 237, 237, 211, + 193, 206, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 14, + 0, 119, 255, 255, 255, 255, 255, 188, 3, 0, 92, 222, 222, 222, 222, 222, + 222, 227, 237, 237, 204, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 236, 235, 235, 235, 225, 140, 58, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 194, 237, 237, 237, 236, 236, 236, 236, 187, 150, + 158, 236, 236, 236, 236, 236, 236, 180, 9, 0, 148, 236, 236, 236, 236, 237, + 237, 237, 237, 232, 209, 236, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, + 236, 236, 226, 12, 0, 119, 255, 255, 255, 255, 255, 255, 29, 0, 83, 222, + 222, 222, 222, 222, 222, 222, 227, 234, 185, 196, 196, 218, 235, 237, 237, 237, + 237, 237, 237, 237, 236, 235, 228, 227, 224, 222, 222, 217, 81, 0, 0, 0, + 0, 0, 21, 21, 21, 21, 20, 0, 0, 57, 237, 237, 237, 237, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 172, 143, 201, 236, + 236, 236, 236, 236, 237, 237, 237, 237, 226, 215, 237, 237, 237, 237, 236, 236, + 236, 236, 236, 236, 236, 236, 153, 0, 0, 129, 255, 255, 255, 255, 255, 255, + 89, 0, 0, 222, 222, 222, 222, 222, 222, 222, 222, 224, 232, 237, 237, 215, + 212, 237, 237, 237, 237, 237, 237, 236, 230, 222, 222, 222, 222, 222, 222, 125, + 0, 0, 0, 13, 96, 139, 237, 237, 237, 237, 228, 136, 136, 198, 237, 237, + 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 237, 216, 192, 227, + 235, 237, 236, 236, 236, 236, 236, 236, 236, 236, 153, 0, 4, 226, 255, 255, + 255, 255, 255, 255, 137, 0, 0, 219, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 231, 236, 237, 204, 237, 237, 237, 237, 237, 237, 233, 222, 222, 222, 222, + 222, 222, 222, 86, 0, 1, 96, 226, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, + 237, 200, 199, 199, 206, 236, 237, 236, 236, 236, 236, 236, 236, 236, 153, 0, + 33, 238, 255, 255, 255, 255, 255, 255, 239, 0, 0, 131, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 228, 229, 199, 229, 229, 229, 229, 229, 229, 223, + 222, 222, 222, 222, 222, 222, 222, 86, 0, 80, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, + 236, 236, 236, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 237, 237, 223, 218, 226, 199, 219, 222, 237, 236, 236, 236, 236, 236, + 236, 236, 153, 0, 0, 170, 255, 255, 255, 255, 255, 255, 239, 0, 0, 87, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 195, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 86, 0, 124, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 226, 215, 237, 204, 237, 236, + 236, 236, 236, 236, 236, 236, 193, 7, 0, 0, 164, 255, 255, 255, 255, 255, + 254, 86, 0, 21, 198, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 195, 222, 222, 222, 222, 222, 222, 222, 222, 222, 208, 85, 6, 6, 6, 2, + 0, 124, 237, 237, 237, 237, 237, 237, 237, 237, 233, 201, 216, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 210, 200, 207, 236, + 237, 204, 237, 236, 236, 236, 236, 236, 236, 236, 236, 58, 0, 0, 63, 255, + 255, 255, 255, 255, 255, 133, 0, 0, 132, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 213, 187, 211, 222, 222, 222, 222, 222, 222, 222, 222, 67, 0, + 0, 0, 0, 0, 0, 127, 237, 237, 237, 237, 237, 237, 237, 226, 200, 232, + 216, 207, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, + 233, 232, 237, 237, 237, 204, 237, 237, 236, 236, 236, 236, 236, 236, 236, 215, + 29, 0, 3, 212, 255, 255, 255, 255, 255, 217, 17, 0, 79, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 221, 199, 204, 222, 222, 222, 222, 222, + 205, 45, 0, 0, 0, 57, 85, 0, 0, 168, 237, 237, 237, 237, 237, 237, + 232, 209, 236, 237, 237, 225, 200, 236, 226, 208, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 232, 186, 196, 196, 201, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 237, 237, 237, 237, 237, 215, 226, 237, 237, 236, 236, 236, 236, + 236, 236, 237, 237, 158, 0, 0, 209, 255, 255, 255, 255, 255, 255, 81, 0, + 9, 178, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 196, 220, + 222, 222, 222, 222, 146, 0, 0, 0, 128, 212, 221, 199, 206, 235, 237, 237, + 237, 237, 237, 237, 207, 234, 237, 237, 237, 237, 233, 185, 206, 228, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 235, 230, 237, 237, 204, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 237, 223, 205, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 228, 24, 0, 209, 255, 255, 255, 255, + 255, 255, 149, 0, 0, 41, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 218, 199, 222, 222, 222, 220, 58, 0, 9, 109, 218, 222, 222, 230, + 237, 237, 237, 222, 196, 196, 193, 210, 230, 237, 237, 237, 237, 237, 237, 231, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 214, 227, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 218, 195, + 232, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 28, 0, 209, + 255, 255, 255, 255, 255, 255, 234, 31, 0, 5, 142, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 195, 222, 222, 222, 218, 0, 0, 57, 222, + 222, 222, 222, 222, 232, 237, 237, 204, 237, 237, 217, 190, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 233, 202, 212, 216, 236, 236, 236, 236, 236, 236, 237, + 237, 237, 232, 202, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 28, 0, 209, 255, 255, 255, 255, 255, 255, 255, 186, 0, 0, 14, 178, + 222, 222, 222, 222, 222, 222, 222, 222, 221, 191, 192, 214, 222, 222, 222, 218, + 0, 0, 121, 222, 222, 222, 222, 222, 223, 236, 237, 204, 237, 237, 233, 226, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 210, 219, 202, 230, 236, 236, + 236, 236, 237, 237, 237, 237, 237, 226, 214, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 156, 6, 0, 209, 255, 255, 255, 255, 255, 255, 255, 243, + 69, 0, 0, 34, 175, 169, 179, 222, 222, 222, 222, 222, 221, 206, 218, 222, + 222, 222, 222, 218, 0, 0, 121, 222, 222, 222, 222, 222, 222, 236, 237, 204, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 233, 207, 236, 236, 236, 237, 237, 237, 237, 237, 237, 236, 205, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 193, 17, 0, 0, 209, 255, 255, 255, 255, + 255, 255, 255, 255, 182, 24, 0, 0, 0, 0, 11, 61, 214, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 219, 18, 0, 102, 222, 222, 222, 222, 222, + 222, 236, 237, 209, 231, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 217, + 196, 196, 217, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 204, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 204, 237, 237, 237, 237, 237, 237, 237, 237, 237, 219, 38, 0, 0, 64, 242, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 12, 0, 0, 0, 0, 0, + 147, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 87, 0, 30, 222, + 222, 222, 222, 222, 222, 236, 237, 230, 210, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 215, 215, 237, 237, 216, 225, 234, 223, 223, 223, 223, 223, 229, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 234, 206, 237, 237, 237, 237, 237, 237, + 226, 224, 237, 236, 205, 237, 237, 237, 237, 237, 237, 237, 237, 237, 86, 0, + 0, 28, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 168, + 168, 58, 0, 0, 110, 225, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 100, 0, 10, 168, 222, 222, 222, 222, 222, 236, 237, 230, 210, 237, 237, 237, + 237, 237, 237, 237, 237, 226, 215, 237, 237, 237, 237, 187, 210, 210, 210, 210, + 210, 210, 203, 217, 237, 237, 237, 237, 237, 237, 237, 237, 232, 230, 237, 237, + 237, 237, 237, 208, 206, 208, 199, 231, 208, 237, 237, 237, 237, 237, 237, 237, + 237, 131, 19, 0, 10, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 64, 0, 11, 180, 223, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 179, 0, 0, 69, 222, 222, 222, 222, 230, 237, 237, 234, + 227, 237, 237, 237, 237, 237, 237, 237, 237, 222, 222, 237, 237, 237, 237, 223, + 225, 237, 237, 237, 237, 237, 235, 205, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 204, 237, 237, 216, 198, 226, 237, 237, 237, + 237, 237, 237, 237, 176, 0, 0, 0, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 0, 0, 0, 96, 209, + 203, 203, 203, 206, 222, 222, 222, 222, 124, 0, 0, 69, 222, 222, 222, 222, + 227, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 204, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 234, 207, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 140, 0, 0, 24, 221, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 8, + 0, 0, 0, 0, 0, 0, 0, 12, 134, 222, 222, 219, 37, 0, 1, 124, + 222, 222, 222, 222, 222, 225, 234, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 235, 201, 224, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 235, 236, 237, 205, 236, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 140, 0, 0, 121, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 212, 65, 1, 0, 0, 0, 0, 0, 0, 31, 209, 222, 169, + 0, 0, 79, 222, 222, 222, 222, 222, 222, 222, 224, 236, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 236, 214, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 226, + 214, 237, 205, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 142, 0, 0, 13, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 66, 0, 0, 24, 28, 0, + 0, 153, 222, 126, 0, 0, 167, 222, 222, 222, 222, 222, 222, 222, 222, 225, + 234, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 216, 208, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 219, 197, 213, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 50, 0, 0, 179, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 252, + 252, 252, 204, 5, 0, 1, 2, 1, 0, 38, 217, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 224, 235, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 199, 208, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 214, 26, 0, 179, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 11, 0, 0, 0, 0, 0, 82, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 225, 201, 215, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 224, 202, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 197, 2, 0, + 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 105, 105, 105, 60, + 0, 82, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 197, 218, 203, + 235, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 230, 208, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 65, 0, 0, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 145, 0, 8, 213, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 183, 210, 222, 223, 207, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 235, 205, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 227, 146, 146, 204, 237, 237, 237, + 237, 237, 237, 221, 96, 0, 0, 26, 247, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 145, 0, 0, 180, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 216, 220, 222, 222, 201, 228, 209, 209, 232, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 209, 209, 209, 205, 197, 233, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 235, 164, 153, 184, 227, 197, 36, 0, 0, + 20, 31, 102, 153, 153, 118, 31, 26, 0, 0, 0, 157, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 0, 0, 92, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 210, 186, 223, 223, + 200, 227, 237, 237, 237, 237, 237, 237, 237, 237, 224, 223, 223, 227, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 235, 231, 142, 4, 0, 60, 151, + 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 252, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 29, 0, 5, 126, 162, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 215, 204, 228, 235, 236, 205, 219, 224, 214, 214, 214, 233, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 228, 223, 177, 13, + 0, 0, 0, 0, 0, 0, 18, 64, 49, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 127, 0, 0, 0, 3, 50, 53, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 224, 225, 225, 191, 205, 215, 215, 202, 225, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 230, + 222, 202, 32, 0, 0, 0, 0, 0, 0, 6, 151, 222, 210, 171, 164, 175, + 182, 182, 186, 47, 0, 0, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 216, 36, 0, 0, 0, 0, 3, 202, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 195, 221, + 222, 222, 220, 206, 233, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 233, 222, 222, 126, 0, 0, 28, 164, 164, 164, 164, 170, 222, 222, + 222, 222, 182, 226, 236, 236, 131, 0, 0, 56, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 181, 86, + 46, 0, 0, 135, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 195, 205, 223, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 235, 223, 222, 196, 16, 0, 12, 172, 222, 222, 222, + 222, 222, 222, 222, 222, 216, 200, 226, 236, 236, 29, 0, 0, 169, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 238, 14, 0, 65, 214, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 199, 215, 233, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 226, 222, 222, 171, 0, 0, 77, + 222, 222, 222, 222, 222, 222, 222, 203, 206, 194, 221, 227, 236, 236, 29, 0, + 87, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 0, 0, 104, 208, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 227, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 233, 222, 222, 222, + 35, 0, 3, 162, 222, 222, 222, 222, 222, 222, 222, 194, 204, 222, 224, 234, + 236, 236, 29, 0, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 4, 0, + 0, 62, 215, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 227, 237, 237, 237, 237, 237, 237, 237, 237, 237, 234, + 223, 222, 222, 158, 1, 0, 32, 222, 222, 222, 222, 222, 222, 222, 222, 195, + 222, 223, 233, 236, 236, 236, 29, 0, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 55, 0, 0, 0, 66, 196, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 227, 237, 237, 237, 237, 237, 237, + 237, 237, 233, 222, 222, 221, 181, 17, 0, 0, 167, 222, 222, 222, 222, 222, + 222, 230, 230, 200, 231, 236, 236, 236, 236, 231, 27, 0, 208, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 115, 2, 0, 0, 8, 98, 148, 214, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 227, 237, 229, + 227, 227, 227, 227, 227, 227, 223, 222, 222, 158, 0, 0, 0, 45, 214, 222, + 222, 222, 222, 219, 221, 237, 236, 205, 236, 236, 236, 236, 236, 164, 0, 0, + 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 1, 0, 0, + 0, 0, 21, 105, 105, 105, 105, 105, 105, 175, 221, 222, 222, 222, 222, 222, + 222, 231, 217, 29, 0, 0, 0, 0, 0, 16, 143, 219, 141, 14, 0, 0, + 19, 195, 222, 222, 222, 223, 235, 223, 217, 237, 214, 226, 236, 236, 236, 236, + 236, 70, 0, 0, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 183, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 173, + 222, 222, 222, 222, 228, 237, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 43, 174, 222, 222, 222, 225, 234, 237, 230, 197, 197, 208, 236, + 236, 236, 236, 236, 236, 70, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 238, 118, 18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 41, 119, 119, 213, 213, 79, 0, 0, 9, 102, 102, 102, + 20, 0, 0, 0, 0, 0, 22, 197, 222, 222, 222, 223, 235, 237, 237, 237, + 235, 235, 235, 236, 236, 236, 236, 236, 223, 38, 0, 161, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 241, 241, + 241, 241, 241, 203, 61, 0, 0, 0, 0, 0, 0, 10, 9, 0, 0, 0, + 147, 222, 222, 222, 212, 98, 96, 96, 96, 99, 185, 194, 210, 222, 228, 234, + 235, 202, 230, 237, 237, 236, 236, 236, 236, 236, 236, 236, 209, 0, 0, 163, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 206, 102, 2, 0, 0, 0, 0, + 0, 0, 0, 103, 220, 222, 222, 222, 222, 222, 222, 222, 214, 191, 216, 216, + 202, 225, 236, 212, 197, 214, 222, 237, 223, 236, 236, 236, 236, 236, 236, 236, + 120, 0, 5, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, + 226, 160, 94, 91, 33, 0, 29, 215, 222, 222, 222, 222, 222, 222, 222, 209, + 189, 221, 222, 222, 214, 217, 203, 220, 223, 207, 235, 232, 209, 236, 236, 236, + 236, 236, 236, 236, 26, 0, 13, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 253, 95, 0, 111, 222, 222, 222, 222, 222, + 222, 222, 222, 217, 215, 222, 222, 213, 231, 203, 229, 237, 191, 197, 196, 201, + 234, 236, 236, 236, 236, 236, 236, 166, 2, 0, 103, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 0, 125, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 195, 224, 235, 237, 237, + 224, 231, 237, 237, 237, 237, 236, 236, 236, 236, 223, 56, 0, 0, 205, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 96, 0, 52, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 218, 192, + 222, 226, 236, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, 169, 0, + 0, 58, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 96, 0, 25, 207, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 204, 206, 222, 222, 235, 237, 237, 223, 178, 178, 178, 208, 237, 237, + 237, 139, 23, 0, 7, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 119, 0, 0, 128, 218, 222, 222, 222, + 222, 222, 222, 222, 212, 204, 202, 222, 222, 222, 235, 237, 234, 94, 0, 0, + 0, 32, 63, 63, 63, 11, 0, 0, 51, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 9, 0, 0, + 122, 222, 222, 222, 222, 222, 222, 222, 222, 192, 222, 222, 222, 222, 235, 224, + 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 209, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 67, 0, 0, 6, 104, 187, 187, 187, 221, 222, 222, 222, 222, 222, 222, + 222, 222, 232, 94, 0, 0, 0, 93, 39, 39, 39, 39, 39, 39, 61, 234, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 219, 84, 0, 0, 0, 0, 0, 0, 206, 222, 222, + 222, 222, 222, 222, 222, 204, 135, 0, 0, 7, 84, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 57, 1, 0, 0, 0, + 0, 49, 172, 211, 222, 222, 222, 222, 191, 21, 0, 0, 1, 129, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 156, 147, 142, 5, 0, 0, 0, 47, 93, 192, 208, 166, 40, 0, 0, 0, + 78, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 154, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 139, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 110, 0, 0, + 0, 0, 0, 0, 0, 0, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 139, 89, 7, 7, 7, 7, 7, 7, 7, 7, 105, + 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 147, 43, 15, 15, 15, + 15, 15, 15, 15, 15, 112, 147, 147, 88, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 51, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 121, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 65, 69, 79, 79, 48, 0, 0, 0, 0, 0, 105, 235, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 159, 0, 0, 0, 0, 8, 60, 60, 60, 60, 60, 37, 0, 0, 0, 0, + 0, 0, 81, 147, 162, 169, 193, 202, 202, 192, 177, 99, 5, 0, 0, 0, + 76, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 170, 170, 170, 170, 161, 39, 39, + 39, 39, 39, 39, 3, 0, 0, 33, 123, 145, 168, 168, 168, 168, 168, 158, + 142, 114, 27, 0, 26, 142, 162, 168, 168, 171, 202, 202, 202, 202, 202, 202, + 170, 67, 0, 0, 0, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 169, 47, 46, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 155, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 152, 136, 150, 168, 168, 168, 168, 171, 202, 202, + 202, 202, 202, 202, 198, 159, 96, 0, 0, 113, 198, 178, 142, 47, 47, 47, + 47, 47, 47, 84, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 75, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 19, 45, 45, 20, 0, 0, 0, 126, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 171, 202, 202, 202, 202, 202, 202, 198, 168, 163, 16, 0, 8, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 138, 242, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 194, 194, 194, + 115, 0, 0, 0, 16, 39, 71, 126, 126, 126, 126, 144, 168, 168, 133, 27, + 0, 10, 147, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 171, 202, 202, 202, 202, 202, 202, 198, 168, 168, 79, + 0, 0, 0, 0, 0, 0, 30, 47, 47, 47, 3, 0, 0, 0, 103, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, + 53, 0, 0, 0, 0, 0, 2, 91, 141, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 153, 121, 133, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 191, 202, 202, 202, 202, 202, + 185, 168, 168, 139, 6, 0, 13, 51, 145, 145, 181, 202, 202, 202, 149, 62, + 0, 0, 0, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 249, 116, 8, 0, 0, 0, 0, 0, 0, 71, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 170, 196, + 202, 202, 202, 191, 168, 168, 168, 168, 126, 139, 160, 202, 202, 202, 202, 202, + 202, 202, 202, 184, 90, 0, 0, 12, 193, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 139, 0, 0, 0, 20, 24, 5, 0, 43, 161, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 173, 179, 179, 179, 170, 168, 168, 168, 168, 168, 201, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 198, 60, 0, 0, 29, 228, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 5, 0, 1, 40, 157, 168, 38, + 0, 120, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 167, 143, 132, 132, 132, 132, 165, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 185, 33, 0, + 0, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 23, 0, 0, 58, + 168, 168, 168, 48, 13, 124, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 166, 149, 157, 168, 168, 168, 151, 145, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 169, 8, 0, 10, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, + 0, 0, 32, 159, 168, 168, 169, 169, 169, 169, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 150, 145, 168, 168, 168, 168, 168, + 141, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 200, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 132, 0, 0, 68, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 252, 48, 0, 11, 145, 168, 172, 186, 202, 202, 202, 197, 170, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 150, 157, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 179, 201, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 186, 28, 0, 0, 222, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 149, 0, 0, 55, 168, 176, 196, 202, 202, 202, + 202, 202, 192, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 150, 157, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 186, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 119, 0, 0, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 169, 17, 2, 1, 0, 0, 122, 172, 199, + 202, 202, 202, 202, 202, 202, 201, 179, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 163, 134, 132, 124, 157, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 162, 135, 139, 168, 168, 168, 175, 195, 202, 202, 202, + 202, 202, 202, 202, 175, 11, 0, 67, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 3, 0, 0, 0, 0, + 57, 169, 195, 202, 202, 202, 202, 202, 202, 202, 202, 179, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 140, 166, 168, 158, 162, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 140, 165, 162, 144, 168, 168, 168, + 171, 198, 202, 202, 202, 202, 202, 199, 172, 42, 0, 7, 141, 141, 207, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 0, + 0, 13, 62, 69, 140, 172, 202, 202, 202, 202, 202, 202, 202, 202, 202, 179, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 140, 168, 168, 168, 168, 168, + 168, 168, 168, 142, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 142, 165, 168, 168, + 148, 146, 132, 132, 144, 175, 195, 202, 202, 202, 202, 177, 168, 109, 0, 0, + 0, 0, 10, 18, 33, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 101, 0, 29, 129, 141, 163, 168, 184, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 179, 168, 168, 168, 168, 168, 168, 168, 168, 168, 145, 162, 168, + 168, 168, 168, 168, 168, 168, 146, 161, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 142, 124, 132, 132, 137, 168, 168, 168, 168, 168, 168, 168, 154, + 153, 168, 168, 168, 166, 124, 168, 168, 156, 136, 169, 189, 189, 189, 182, 168, + 168, 156, 19, 0, 0, 0, 0, 0, 0, 7, 186, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 203, 66, 0, 66, 140, 140, 144, 165, 191, 202, 202, + 202, 202, 202, 202, 202, 202, 201, 175, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 142, 165, 168, 168, 168, 168, 168, 168, 164, 143, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 154, 143, 161, 168, 168, 140, 168, 168, 168, 168, + 168, 168, 168, 158, 159, 168, 168, 168, 168, 164, 168, 168, 168, 153, 154, 168, + 168, 168, 168, 168, 168, 168, 152, 145, 125, 58, 58, 14, 0, 0, 22, 222, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 65, 0, 66, 140, 140, 140, + 161, 200, 202, 202, 202, 202, 202, 202, 202, 202, 183, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 142, 165, 168, 168, 168, 168, 168, 168, 158, 149, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 140, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 146, 161, 168, 168, 168, 168, 168, 168, 171, 194, 196, 196, 193, 154, + 31, 0, 0, 57, 240, 255, 255, 255, 255, 255, 255, 255, 255, 166, 65, 0, + 66, 140, 140, 140, 161, 200, 202, 202, 202, 202, 202, 202, 196, 186, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 142, 165, 168, 168, 168, 168, 168, + 168, 158, 149, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 147, 148, 148, 148, 148, 148, 153, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 166, 163, 168, 168, 168, 168, 168, 169, 191, 202, + 202, 202, 202, 199, 166, 17, 0, 0, 124, 255, 255, 255, 255, 255, 255, 255, + 255, 166, 65, 0, 66, 140, 140, 140, 161, 200, 202, 202, 202, 202, 202, 202, + 180, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 149, 158, 168, + 168, 168, 168, 168, 168, 160, 147, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 166, 139, 152, 152, 152, 152, 147, 141, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 182, 202, 202, 202, 202, 202, 202, 202, 139, 6, 0, 23, 227, 255, 255, + 255, 255, 255, 255, 255, 166, 65, 0, 66, 140, 140, 140, 161, 200, 202, 202, + 202, 202, 202, 202, 169, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 140, 168, 168, 168, 168, 168, 168, 168, 140, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 140, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 185, 202, 202, 202, 202, 202, 202, 202, 202, 86, 0, + 0, 71, 255, 255, 255, 255, 255, 255, 255, 166, 54, 0, 66, 140, 140, 140, + 153, 200, 202, 202, 202, 202, 202, 202, 169, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 140, 168, 168, 168, 168, 168, 168, 168, 134, 134, + 154, 160, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 140, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 185, 202, 202, 202, 202, 202, 202, + 202, 202, 168, 11, 0, 44, 255, 255, 255, 255, 255, 255, 255, 123, 2, 0, + 66, 140, 140, 140, 148, 197, 202, 202, 202, 202, 202, 199, 169, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 159, 168, 168, 168, 168, 168, + 168, 168, 168, 166, 143, 139, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 140, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 185, 202, 202, + 202, 202, 202, 202, 202, 202, 201, 117, 0, 14, 213, 255, 255, 255, 255, 255, + 225, 20, 0, 0, 73, 140, 140, 140, 140, 175, 200, 202, 202, 202, 201, 179, + 166, 158, 163, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 150, 157, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 165, 142, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 183, 202, 202, 202, 202, 202, 202, 202, 202, 202, 155, 0, 0, 194, 255, + 255, 255, 255, 255, 144, 0, 0, 31, 133, 140, 140, 140, 140, 166, 182, 198, + 198, 198, 185, 168, 147, 142, 137, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 150, 157, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 151, 129, 150, 163, 168, 168, 168, 168, 168, 168, 168, 168, 162, 160, 160, + 164, 168, 168, 168, 168, 169, 194, 202, 202, 202, 202, 202, 202, 202, 202, 179, + 18, 0, 194, 255, 255, 255, 255, 255, 43, 0, 9, 123, 140, 140, 140, 140, + 140, 166, 168, 168, 168, 168, 168, 166, 141, 168, 141, 166, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 150, 157, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 150, 137, 163, 168, 168, 168, 168, 168, 168, + 168, 146, 139, 139, 136, 153, 168, 168, 168, 168, 171, 197, 202, 202, 202, 202, + 202, 202, 202, 194, 30, 0, 194, 255, 255, 255, 255, 255, 0, 0, 48, 140, + 140, 140, 140, 140, 140, 166, 168, 168, 168, 168, 168, 143, 164, 168, 165, 142, + 168, 168, 168, 168, 167, 149, 132, 160, 166, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 150, 156, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 128, 167, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 166, 141, 168, 168, 168, 168, 168, 168, + 187, 202, 202, 202, 202, 202, 202, 172, 13, 0, 174, 255, 255, 255, 255, 255, + 0, 0, 104, 140, 140, 140, 140, 140, 140, 166, 168, 168, 168, 168, 168, 156, + 166, 168, 168, 140, 167, 168, 168, 168, 147, 147, 168, 140, 134, 145, 167, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 159, 134, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 157, 150, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 146, 161, 168, + 168, 168, 168, 168, 171, 198, 202, 202, 202, 202, 201, 147, 0, 0, 142, 252, + 255, 255, 255, 255, 0, 24, 135, 140, 140, 140, 140, 140, 140, 166, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 151, 156, 168, 168, 168, 157, 164, 168, 168, + 168, 128, 165, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 125, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 148, 159, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 152, 155, 168, 168, 168, 168, 168, 168, 174, 201, 202, 202, 202, 193, 60, + 0, 14, 147, 231, 255, 255, 255, 255, 0, 49, 140, 140, 140, 140, 140, 140, + 144, 167, 168, 168, 168, 168, 168, 168, 168, 168, 168, 151, 156, 168, 168, 168, + 168, 168, 168, 168, 168, 142, 134, 136, 164, 168, 168, 168, 168, 168, 168, 168, + 168, 166, 132, 132, 106, 144, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 152, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 140, 167, 168, 168, 168, 168, 168, 168, 168, 178, 186, + 186, 186, 170, 60, 0, 29, 168, 178, 255, 255, 255, 255, 0, 49, 140, 140, + 140, 140, 140, 140, 155, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 158, + 132, 156, 168, 168, 168, 168, 168, 168, 168, 166, 164, 164, 136, 144, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 142, 163, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 154, 153, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 60, 0, 1, 100, 168, 230, 255, 255, 255, + 0, 49, 140, 140, 140, 140, 140, 140, 140, 161, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 167, 140, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 156, 140, 168, 168, 168, 168, 168, 168, 168, 155, 152, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 149, 132, 136, 145, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 87, 0, 0, 4, 67, + 229, 255, 255, 255, 0, 31, 137, 140, 140, 140, 140, 140, 140, 143, 165, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 153, 154, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 136, 168, 168, 168, 168, 168, 168, 168, 154, 153, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 164, 155, 148, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 143, + 36, 0, 0, 12, 210, 255, 255, 255, 0, 0, 131, 140, 140, 140, 140, 140, + 140, 140, 147, 166, 168, 168, 168, 168, 168, 168, 168, 168, 168, 166, 138, 156, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 149, 158, 168, 168, 168, 168, + 168, 168, 154, 153, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 151, 156, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 158, 47, 0, 0, 81, 251, 255, 255, 0, 0, 84, 140, + 140, 140, 140, 140, 140, 140, 140, 161, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 140, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 144, 163, + 168, 168, 168, 168, 168, 168, 154, 153, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 178, 178, 178, 178, 176, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 146, 161, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 147, 12, 0, 8, 198, 255, 255, + 0, 0, 23, 128, 140, 140, 140, 140, 140, 140, 140, 143, 165, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 145, 162, 168, 168, 168, 168, 168, 168, 168, + 168, 163, 144, 168, 168, 168, 168, 168, 168, 168, 165, 142, 168, 168, 168, 168, + 168, 168, 168, 122, 121, 121, 121, 121, 121, 121, 129, 183, 195, 202, 199, 145, + 145, 144, 138, 174, 170, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 162, 145, 168, 168, 168, 168, 168, 172, 177, 177, 177, 169, 168, 94, 0, + 0, 188, 255, 255, 80, 0, 0, 23, 33, 88, 140, 140, 140, 140, 140, 140, + 141, 132, 136, 164, 168, 168, 168, 168, 168, 168, 168, 152, 134, 168, 168, 168, + 168, 168, 168, 168, 168, 163, 165, 168, 168, 168, 168, 168, 168, 168, 168, 140, + 168, 168, 168, 168, 166, 72, 39, 1, 0, 0, 0, 0, 0, 0, 7, 125, + 142, 47, 46, 0, 0, 0, 0, 97, 180, 186, 174, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 146, 161, 168, 168, 168, 170, 196, 202, 202, 202, + 188, 168, 154, 7, 0, 188, 255, 255, 191, 12, 0, 0, 0, 33, 140, 140, + 140, 140, 140, 140, 145, 166, 158, 149, 168, 168, 168, 168, 168, 168, 168, 137, + 162, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 160, 168, 168, 168, 168, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 163, 200, 178, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 146, 161, 168, 168, 169, 191, + 202, 202, 202, 202, 202, 181, 168, 10, 0, 173, 255, 255, 255, 150, 47, 13, + 0, 9, 123, 140, 140, 140, 140, 140, 140, 163, 168, 142, 165, 168, 168, 168, + 168, 168, 168, 159, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 159, 20, 0, 0, 30, + 59, 117, 133, 141, 141, 43, 0, 0, 0, 0, 16, 37, 78, 76, 0, 0, + 0, 27, 149, 202, 180, 168, 168, 168, 168, 168, 168, 168, 168, 159, 148, 168, + 168, 168, 173, 202, 202, 202, 202, 202, 202, 197, 169, 10, 0, 119, 255, 255, + 255, 255, 255, 144, 0, 0, 106, 140, 140, 140, 140, 140, 140, 155, 168, 159, + 148, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 159, 142, 83, 55, 55, 55, 55, 55, 55, 40, + 0, 0, 53, 166, 168, 168, 191, 202, 202, 176, 59, 0, 2, 59, 165, 202, + 202, 191, 100, 15, 0, 0, 127, 202, 200, 177, 168, 168, 168, 168, 168, 146, + 130, 141, 168, 168, 168, 168, 173, 202, 202, 202, 202, 202, 202, 202, 176, 10, + 0, 119, 255, 255, 255, 255, 255, 188, 3, 0, 58, 140, 140, 140, 140, 140, + 140, 150, 168, 168, 140, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 166, 164, 164, 164, 159, 99, 41, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 137, 168, 168, 168, 191, 202, 202, 202, 160, 129, + 136, 202, 202, 202, 202, 202, 202, 154, 7, 0, 127, 202, 202, 202, 181, 168, + 168, 168, 168, 163, 144, 167, 168, 168, 168, 168, 173, 202, 202, 202, 202, 202, + 202, 202, 177, 9, 0, 119, 255, 255, 255, 255, 255, 255, 29, 0, 52, 140, + 140, 140, 140, 140, 140, 140, 150, 163, 123, 132, 132, 151, 166, 168, 168, 168, + 168, 168, 168, 168, 167, 165, 151, 150, 145, 140, 140, 137, 54, 0, 0, 0, + 0, 0, 15, 15, 15, 15, 14, 0, 0, 40, 168, 168, 168, 168, 191, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 147, 122, 172, 202, + 202, 202, 200, 175, 168, 168, 168, 168, 158, 149, 168, 168, 168, 168, 173, 202, + 202, 202, 202, 202, 202, 202, 131, 0, 0, 129, 255, 255, 255, 255, 255, 255, + 89, 0, 0, 140, 140, 140, 140, 140, 140, 140, 140, 144, 159, 168, 168, 149, + 147, 168, 168, 168, 168, 168, 168, 167, 155, 140, 140, 140, 140, 140, 140, 79, + 0, 0, 0, 9, 68, 98, 168, 168, 168, 168, 161, 96, 96, 140, 168, 168, + 168, 168, 190, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 197, 171, 168, 168, 168, 168, 150, 129, 159, + 166, 168, 170, 197, 202, 202, 202, 202, 202, 202, 131, 0, 4, 226, 255, 255, + 255, 255, 255, 255, 137, 0, 0, 138, 140, 140, 140, 140, 140, 140, 140, 140, + 141, 157, 167, 168, 140, 168, 168, 168, 168, 168, 168, 160, 140, 140, 140, 140, + 140, 140, 140, 54, 0, 0, 68, 160, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 172, 198, 202, 202, 202, 202, 202, 202, 201, 200, + 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 194, 168, 168, 168, + 168, 136, 135, 135, 141, 167, 168, 186, 202, 202, 202, 202, 202, 202, 131, 0, + 33, 238, 255, 255, 255, 255, 255, 255, 239, 0, 0, 82, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 152, 153, 131, 153, 153, 153, 153, 153, 153, 142, + 140, 140, 140, 140, 140, 140, 140, 54, 0, 53, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 175, 202, 202, 202, 196, + 184, 184, 170, 168, 174, 187, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 187, 168, 168, 156, 151, 158, 135, 152, 155, 168, 179, 202, 202, 202, 202, + 202, 202, 131, 0, 0, 170, 255, 255, 255, 255, 255, 255, 239, 0, 0, 55, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 123, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 54, 0, 81, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 185, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 174, 168, 168, 168, 158, 149, 168, 140, 168, 179, + 202, 202, 202, 202, 202, 202, 159, 5, 0, 0, 164, 255, 255, 255, 255, 255, + 254, 86, 0, 13, 125, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 123, 140, 140, 140, 140, 140, 140, 140, 140, 140, 131, 53, 4, 4, 4, 1, + 0, 81, 168, 168, 168, 168, 168, 168, 168, 168, 165, 137, 150, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 185, 202, 202, 202, 202, 202, 202, 202, 202, 202, 174, 168, 144, 136, 142, 167, + 168, 140, 168, 174, 200, 202, 202, 202, 202, 202, 183, 41, 0, 0, 63, 255, + 255, 255, 255, 255, 255, 133, 0, 0, 83, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 134, 118, 133, 140, 140, 140, 140, 140, 140, 140, 140, 42, 0, + 0, 0, 0, 0, 0, 85, 168, 168, 168, 168, 168, 168, 168, 158, 136, 163, + 150, 142, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 185, 202, 202, 202, 202, 202, 202, 202, 202, 174, 168, + 164, 164, 168, 168, 168, 140, 168, 168, 180, 202, 202, 202, 202, 190, 168, 152, + 21, 0, 3, 212, 255, 255, 255, 255, 255, 217, 17, 0, 50, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 139, 126, 128, 140, 140, 140, 140, 140, + 129, 28, 0, 0, 0, 36, 53, 0, 0, 119, 168, 168, 168, 168, 168, 168, + 164, 144, 167, 168, 168, 158, 136, 167, 159, 143, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 163, 124, 132, 132, 137, 190, 202, 202, 202, 202, 202, + 202, 202, 174, 168, 168, 168, 168, 168, 149, 158, 168, 168, 168, 183, 188, 188, + 188, 169, 168, 168, 112, 0, 0, 209, 255, 255, 255, 255, 255, 255, 81, 0, + 6, 112, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 124, 139, + 140, 140, 140, 140, 92, 0, 0, 0, 80, 134, 139, 132, 144, 167, 168, 168, + 168, 168, 168, 168, 142, 165, 168, 168, 168, 168, 164, 123, 141, 160, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 166, 162, 168, 168, 140, 174, 199, + 202, 202, 202, 202, 202, 202, 174, 168, 168, 168, 168, 156, 141, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 161, 17, 0, 209, 255, 255, 255, 255, + 255, 255, 149, 0, 0, 26, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 137, 125, 140, 140, 140, 139, 37, 0, 6, 68, 137, 140, 140, 154, + 168, 168, 168, 155, 132, 132, 130, 145, 162, 168, 168, 168, 168, 168, 168, 163, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 148, 159, 195, 202, 202, 202, 202, 202, 202, 174, 168, 168, 168, 151, 132, + 164, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 20, 0, 209, + 255, 255, 255, 255, 255, 255, 234, 31, 0, 3, 89, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 123, 140, 140, 140, 137, 0, 0, 36, 140, + 140, 140, 140, 141, 159, 168, 168, 140, 168, 168, 151, 128, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 165, 138, 166, 176, 202, 202, 202, 202, 199, 172, 168, + 168, 168, 164, 138, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 20, 0, 209, 255, 255, 255, 255, 255, 255, 255, 186, 0, 0, 9, 112, + 140, 140, 140, 140, 140, 140, 140, 140, 139, 121, 121, 135, 140, 140, 140, 137, + 0, 0, 76, 140, 140, 140, 140, 140, 142, 167, 168, 140, 168, 168, 165, 158, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 167, 144, 153, 153, 195, 202, 202, + 201, 180, 168, 168, 168, 168, 168, 159, 148, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 111, 4, 0, 209, 255, 255, 255, 255, 255, 255, 255, 243, + 69, 0, 0, 22, 117, 106, 112, 140, 140, 140, 140, 140, 139, 130, 137, 140, + 140, 140, 140, 137, 0, 0, 76, 140, 140, 140, 140, 140, 140, 166, 168, 140, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 171, 159, 193, 193, 185, 168, 168, 168, 168, 168, 168, 167, 140, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 137, 12, 0, 0, 209, 255, 255, 255, 255, + 255, 255, 255, 255, 182, 24, 0, 0, 0, 0, 7, 38, 135, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 138, 11, 0, 64, 140, 140, 140, 140, 140, + 140, 166, 168, 144, 163, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 151, + 132, 132, 150, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 140, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 140, 168, 168, 168, 168, 168, 168, 168, 168, 168, 155, 27, 0, 0, 64, 242, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 12, 0, 0, 0, 0, 0, + 93, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 55, 0, 19, 140, + 140, 140, 140, 140, 140, 166, 168, 162, 145, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 149, 149, 168, 168, 149, 158, 165, 156, 156, 156, 156, 156, 161, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 166, 141, 168, 168, 168, 168, 168, 168, + 159, 157, 168, 167, 140, 168, 168, 168, 168, 168, 168, 168, 168, 168, 61, 0, + 0, 28, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 168, + 168, 58, 0, 0, 75, 146, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 63, 0, 6, 106, 140, 140, 140, 140, 141, 167, 168, 162, 145, 168, 168, 168, + 168, 168, 168, 168, 168, 158, 149, 168, 168, 168, 168, 125, 145, 144, 144, 144, + 144, 144, 139, 151, 168, 168, 168, 168, 168, 168, 168, 168, 164, 162, 168, 168, + 168, 168, 168, 143, 141, 143, 136, 163, 143, 168, 168, 168, 168, 168, 168, 168, + 168, 93, 13, 0, 10, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 64, 0, 7, 153, 151, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 112, 0, 0, 43, 140, 140, 140, 140, 156, 168, 168, 165, + 159, 168, 168, 168, 168, 168, 168, 168, 168, 155, 155, 168, 168, 168, 168, 156, + 158, 168, 168, 168, 168, 168, 167, 140, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 140, 168, 168, 150, 134, 158, 168, 168, 168, + 168, 168, 168, 168, 124, 0, 0, 0, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 0, 0, 0, 83, 148, + 128, 128, 128, 129, 140, 140, 140, 140, 78, 0, 0, 43, 140, 140, 140, 140, + 149, 166, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 167, 140, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 165, 142, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 99, 0, 0, 18, 211, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 8, + 0, 0, 0, 0, 0, 0, 0, 7, 85, 140, 140, 138, 23, 0, 0, 78, + 140, 140, 140, 140, 140, 146, 163, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 167, 137, 156, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 167, 167, 168, 140, 167, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 99, 0, 0, 94, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 212, 65, 1, 0, 0, 0, 0, 0, 0, 20, 132, 140, 106, + 0, 0, 49, 140, 140, 140, 140, 140, 140, 140, 144, 166, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 167, 148, 158, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 159, + 148, 168, 140, 167, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 100, 0, 0, 13, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 66, 0, 0, 24, 28, 0, + 0, 96, 140, 80, 0, 0, 105, 140, 140, 140, 140, 140, 140, 140, 140, 146, + 163, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 150, 143, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 152, 133, 147, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 35, 0, 0, 179, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 252, + 252, 252, 204, 5, 0, 0, 1, 0, 0, 24, 136, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 143, 165, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 135, 143, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 167, 167, 167, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 152, 19, 0, 179, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 11, 0, 0, 0, 0, 0, 51, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 146, 137, 149, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 157, 138, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 140, 1, 0, + 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 105, 105, 105, 60, + 0, 51, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 124, 140, 137, + 167, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 162, 143, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 46, 0, 0, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 145, 0, 5, 134, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 115, 132, 140, 145, 142, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 167, 140, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 161, 103, 103, 144, 168, 168, 168, + 168, 168, 169, 178, 68, 0, 0, 26, 247, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 145, 0, 0, 114, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 136, 139, 140, 140, 135, 160, 144, 144, 164, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 144, 144, 144, 141, 133, 164, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 165, 115, 109, 128, 149, 126, 25, 0, 0, + 14, 22, 72, 109, 109, 84, 23, 26, 0, 0, 0, 157, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 0, 0, 58, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 133, 122, 155, 156, + 136, 159, 168, 168, 168, 168, 168, 168, 168, 168, 157, 156, 156, 159, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 164, 157, 92, 3, 0, 38, 95, + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 252, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 29, 0, 3, 79, 102, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 135, 129, 152, 165, 167, 141, 152, 157, 148, 148, 148, 165, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 151, 143, 111, 8, + 0, 0, 0, 0, 0, 0, 11, 40, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 127, 0, 0, 0, 2, 31, 33, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 144, 146, 146, 123, 137, 145, 146, 138, 158, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 156, + 140, 127, 20, 0, 0, 0, 0, 0, 0, 3, 95, 140, 132, 108, 104, 124, + 156, 156, 164, 47, 0, 0, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 216, 36, 0, 0, 0, 0, 2, 127, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 123, 139, + 140, 140, 142, 139, 164, 158, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 160, 141, 140, 79, 0, 0, 17, 103, 103, 103, 103, 107, 140, 140, + 140, 140, 115, 161, 202, 202, 116, 0, 0, 56, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 181, 86, + 46, 0, 0, 85, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 123, 136, 155, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 164, 142, 140, 124, 10, 0, 7, 108, 140, 140, 140, + 140, 140, 140, 140, 140, 136, 126, 161, 202, 202, 24, 0, 0, 169, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 238, 14, 0, 41, 135, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 125, 137, 162, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 147, 140, 140, 108, 0, 0, 48, + 140, 140, 140, 140, 140, 140, 140, 128, 130, 122, 139, 165, 202, 202, 24, 0, + 87, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 0, 0, 65, 131, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 150, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 161, 141, 140, 140, + 22, 0, 1, 102, 140, 140, 140, 140, 140, 140, 140, 122, 129, 140, 150, 196, + 202, 202, 24, 0, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 4, 0, + 0, 39, 136, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 150, 168, 168, 168, 168, 168, 168, 168, 168, 168, 163, + 143, 140, 140, 99, 0, 0, 20, 140, 140, 140, 140, 140, 140, 140, 140, 123, + 141, 146, 191, 202, 202, 202, 24, 0, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 55, 0, 0, 0, 42, 123, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 150, 168, 168, 168, 168, 168, 168, + 168, 168, 161, 140, 140, 139, 114, 11, 0, 0, 105, 140, 140, 140, 140, 140, + 140, 155, 156, 134, 182, 202, 202, 202, 202, 197, 23, 0, 208, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 115, 2, 0, 0, 5, 62, 93, 135, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 150, 168, 162, + 161, 161, 161, 161, 161, 159, 143, 140, 140, 99, 0, 0, 0, 28, 135, 140, + 140, 140, 140, 143, 150, 168, 167, 150, 202, 202, 202, 202, 202, 140, 0, 0, + 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 1, 0, 0, + 0, 0, 13, 66, 66, 66, 66, 66, 66, 110, 139, 140, 140, 140, 140, 140, + 140, 156, 153, 20, 0, 0, 0, 0, 0, 10, 90, 138, 88, 9, 0, 0, + 12, 123, 140, 140, 140, 143, 165, 156, 151, 168, 148, 189, 202, 202, 202, 202, + 202, 60, 0, 0, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 183, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 109, + 140, 140, 140, 140, 151, 168, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 109, 140, 140, 140, 146, 162, 168, 162, 134, 134, 160, 202, + 202, 202, 202, 202, 202, 60, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 238, 118, 18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 26, 75, 75, 142, 151, 56, 0, 0, 6, 64, 64, 64, + 12, 0, 0, 0, 0, 0, 14, 124, 140, 140, 140, 143, 165, 168, 168, 168, + 166, 170, 201, 202, 202, 202, 202, 202, 191, 32, 0, 161, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 241, 241, + 241, 241, 241, 188, 61, 0, 0, 0, 0, 0, 0, 7, 6, 0, 0, 0, + 92, 140, 140, 140, 134, 62, 60, 60, 60, 62, 117, 122, 132, 140, 151, 162, + 166, 138, 162, 168, 168, 171, 202, 202, 202, 202, 202, 202, 179, 0, 0, 163, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 206, 102, 2, 0, 0, 0, 0, + 0, 0, 0, 65, 139, 140, 140, 140, 140, 140, 140, 140, 135, 120, 136, 136, + 127, 155, 167, 146, 134, 148, 155, 168, 156, 171, 202, 202, 202, 202, 202, 202, + 103, 0, 5, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, + 226, 160, 94, 80, 23, 0, 18, 135, 140, 140, 140, 140, 140, 140, 140, 132, + 119, 139, 140, 140, 137, 150, 139, 154, 156, 142, 166, 163, 144, 171, 202, 202, + 202, 202, 202, 202, 22, 0, 13, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 249, 91, 0, 70, 140, 140, 140, 140, 140, + 140, 140, 140, 137, 135, 140, 140, 134, 160, 139, 161, 168, 129, 133, 132, 137, + 165, 168, 188, 202, 202, 202, 202, 142, 1, 0, 103, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 0, 78, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 123, 145, 165, 168, 168, + 157, 163, 168, 168, 168, 168, 169, 194, 202, 202, 191, 48, 0, 0, 205, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 96, 0, 33, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 137, 121, + 140, 149, 167, 168, 168, 168, 168, 168, 168, 168, 168, 171, 175, 175, 126, 0, + 0, 58, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 96, 0, 16, 131, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 129, 130, 140, 140, 165, 168, 168, 158, 126, 126, 126, 147, 168, 168, + 168, 99, 16, 0, 7, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 119, 0, 0, 81, 137, 140, 140, 140, + 140, 140, 140, 140, 134, 129, 127, 140, 140, 140, 165, 168, 166, 66, 0, 0, + 0, 23, 45, 45, 45, 8, 0, 0, 51, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 9, 0, 0, + 77, 140, 140, 140, 140, 140, 140, 140, 140, 121, 140, 140, 140, 140, 165, 159, + 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 209, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 67, 0, 0, 4, 65, 118, 118, 118, 139, 140, 140, 140, 140, 140, 140, + 140, 140, 163, 66, 0, 0, 0, 93, 39, 39, 39, 39, 39, 39, 61, 234, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 219, 84, 0, 0, 0, 0, 0, 0, 129, 140, 140, + 140, 140, 140, 140, 140, 131, 95, 0, 0, 7, 84, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 57, 1, 0, 0, 0, + 0, 31, 108, 133, 140, 140, 140, 140, 120, 13, 0, 0, 1, 129, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 156, 147, 142, 5, 0, 0, 0, 30, 59, 121, 131, 108, 25, 0, 0, 0, + 78, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 154, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 139, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 110, 0, 0, + 0, 0, 0, 0, 0, 0, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 139, 89, 7, 7, 7, 7, 7, 7, 7, 7, 105, + 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 147, 43, 15, 15, 15, + 15, 15, 15, 15, 15, 112, 147, 147, 88, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 51, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 121, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 21, 26, 39, 39, 24, 0, 0, 0, 0, 0, 105, 235, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 159, 0, 0, 0, 0, 2, 19, 19, 19, 19, 19, 12, 0, 0, 0, 0, + 0, 0, 26, 47, 52, 55, 89, 102, 102, 97, 89, 50, 3, 0, 0, 0, + 76, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 170, 170, 170, 170, 161, 39, 39, + 39, 39, 39, 39, 3, 0, 0, 10, 39, 46, 54, 54, 54, 54, 54, 50, + 45, 36, 8, 0, 8, 45, 52, 54, 54, 58, 102, 102, 102, 102, 102, 102, + 83, 21, 0, 0, 0, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 169, 47, 46, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 50, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 49, 43, 48, 54, 54, 54, 54, 58, 102, 102, + 102, 102, 102, 102, 97, 51, 30, 0, 0, 113, 198, 178, 142, 47, 47, 47, + 47, 47, 47, 84, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 75, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 14, 14, 6, 0, 0, 0, 40, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 58, 102, 102, 102, 102, 102, 102, 97, 54, 52, 5, 0, 8, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 138, 242, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 194, 194, 194, + 115, 0, 0, 0, 5, 12, 22, 40, 40, 40, 40, 46, 54, 54, 42, 8, + 0, 3, 47, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 58, 102, 102, 102, 102, 102, 102, 97, 54, 54, 25, + 0, 0, 0, 0, 0, 0, 15, 24, 24, 24, 1, 0, 0, 0, 103, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, + 53, 0, 0, 0, 0, 0, 0, 29, 45, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 49, 38, 42, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 86, 102, 102, 102, 102, 102, + 79, 54, 54, 44, 2, 0, 7, 26, 73, 73, 91, 102, 102, 102, 75, 31, + 0, 0, 0, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 249, 116, 8, 0, 0, 0, 0, 0, 0, 23, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 57, 93, + 102, 102, 102, 87, 55, 54, 54, 54, 40, 69, 80, 102, 102, 102, 102, 102, + 102, 102, 102, 93, 45, 0, 0, 12, 193, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 139, 0, 0, 0, 6, 7, 1, 0, 14, 52, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 61, 70, 70, 70, 58, 54, 54, 54, 54, 54, 101, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 100, 30, 0, 0, 29, 228, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 5, 0, 0, 12, 50, 54, 12, + 0, 38, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 53, 46, 42, 42, 42, 42, 53, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 101, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 93, 16, 0, + 0, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 23, 0, 0, 18, + 54, 54, 54, 15, 4, 39, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 53, 48, 50, 54, 54, 54, 48, 46, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 101, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 85, 4, 0, 10, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, + 0, 0, 10, 51, 54, 54, 56, 56, 56, 55, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 48, 46, 54, 54, 54, 54, 54, + 45, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 99, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 67, 0, 0, 68, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 252, 48, 0, 3, 46, 54, 60, 79, 102, 102, 102, 95, 57, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 48, 50, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 70, 101, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 94, 13, 0, 0, 222, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 149, 0, 0, 17, 54, 65, 93, 102, 102, 102, + 102, 102, 88, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 48, 50, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 79, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 47, 0, 0, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 169, 17, 2, 1, 0, 0, 39, 60, 98, + 102, 102, 102, 102, 102, 102, 101, 70, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 52, 43, 42, 39, 50, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 52, 43, 45, 54, 54, 54, 64, 92, 102, 102, 102, + 102, 102, 102, 102, 65, 3, 0, 67, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 3, 0, 0, 0, 0, + 18, 56, 93, 102, 102, 102, 102, 102, 102, 102, 102, 70, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 45, 53, 54, 50, 52, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 45, 53, 52, 46, 54, 54, 54, + 59, 96, 102, 102, 102, 102, 102, 98, 60, 13, 0, 7, 141, 141, 207, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 0, + 0, 4, 20, 22, 45, 59, 102, 102, 102, 102, 102, 102, 102, 102, 102, 70, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 44, 54, 54, 54, 54, 54, + 54, 54, 54, 45, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 45, 53, 54, 54, + 47, 47, 42, 42, 46, 64, 92, 102, 102, 102, 102, 67, 54, 35, 0, 0, + 0, 0, 10, 18, 33, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 86, 0, 9, 41, 45, 52, 54, 77, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 70, 54, 54, 54, 54, 54, 54, 54, 54, 54, 46, 52, 54, + 54, 54, 54, 54, 54, 54, 46, 51, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 45, 39, 42, 42, 44, 54, 54, 54, 54, 54, 54, 54, 49, + 49, 54, 54, 54, 53, 39, 54, 54, 50, 43, 58, 83, 83, 83, 73, 54, + 54, 50, 6, 0, 0, 0, 0, 0, 0, 7, 186, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 160, 22, 0, 21, 45, 45, 46, 53, 86, 102, 102, + 102, 102, 102, 102, 102, 102, 100, 64, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 45, 53, 54, 54, 54, 54, 54, 54, 52, 46, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 49, 46, 52, 54, 54, 44, 54, 54, 54, 54, + 54, 54, 54, 50, 51, 54, 54, 54, 54, 52, 54, 54, 54, 49, 49, 54, + 54, 54, 54, 54, 54, 54, 48, 46, 40, 18, 18, 4, 0, 0, 22, 222, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 21, 0, 21, 45, 45, 45, + 51, 99, 102, 102, 102, 102, 102, 102, 102, 102, 75, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 45, 53, 54, 54, 54, 54, 54, 54, 50, 48, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 44, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 47, 51, 54, 54, 54, 54, 54, 54, 58, 90, 94, 94, 89, 57, + 10, 0, 0, 57, 240, 255, 255, 255, 255, 255, 255, 255, 255, 94, 21, 0, + 21, 45, 45, 45, 51, 99, 102, 102, 102, 102, 102, 102, 94, 80, 55, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 45, 53, 54, 54, 54, 54, 54, + 54, 50, 48, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 47, 47, 47, 47, 47, 47, 49, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 53, 52, 54, 54, 54, 54, 54, 55, 87, 102, + 102, 102, 102, 98, 81, 8, 0, 0, 124, 255, 255, 255, 255, 255, 255, 255, + 255, 94, 21, 0, 21, 45, 45, 45, 51, 99, 102, 102, 102, 102, 102, 102, + 71, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 47, 50, 54, + 54, 54, 54, 54, 54, 51, 47, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 53, 44, 49, 49, 49, 49, 47, 45, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 74, 102, 102, 102, 102, 102, 102, 102, 70, 3, 0, 23, 227, 255, 255, + 255, 255, 255, 255, 255, 94, 21, 0, 21, 45, 45, 45, 51, 99, 102, 102, + 102, 102, 102, 102, 56, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 44, 54, 54, 54, 54, 54, 54, 54, 44, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 44, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 78, 102, 102, 102, 102, 102, 102, 102, 102, 43, 0, + 0, 71, 255, 255, 255, 255, 255, 255, 255, 94, 17, 0, 21, 45, 45, 45, + 49, 99, 102, 102, 102, 102, 102, 102, 56, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 44, 54, 54, 54, 54, 54, 54, 54, 43, 43, + 49, 51, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 44, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 78, 102, 102, 102, 102, 102, 102, + 102, 102, 84, 3, 0, 44, 255, 255, 255, 255, 255, 255, 255, 80, 0, 0, + 21, 45, 45, 45, 47, 96, 102, 102, 102, 102, 102, 99, 55, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 51, 54, 54, 54, 54, 54, + 54, 54, 54, 53, 46, 44, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 44, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 78, 102, 102, + 102, 102, 102, 102, 102, 102, 101, 49, 0, 14, 213, 255, 255, 255, 255, 255, + 225, 20, 0, 0, 23, 45, 45, 45, 45, 65, 100, 102, 102, 102, 100, 70, + 53, 51, 52, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 48, 50, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 53, 45, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 76, 102, 102, 102, 102, 102, 102, 102, 102, 102, 78, 0, 0, 194, 255, + 255, 255, 255, 255, 144, 0, 0, 10, 43, 45, 45, 45, 45, 53, 74, 97, + 97, 97, 78, 54, 47, 45, 44, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 48, 50, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 48, 41, 48, 52, 54, 54, 54, 54, 54, 54, 54, 54, 52, 51, 51, + 52, 54, 54, 54, 54, 55, 90, 102, 102, 102, 102, 102, 102, 102, 102, 86, + 6, 0, 194, 255, 255, 255, 255, 255, 43, 0, 3, 39, 45, 45, 45, 45, + 45, 53, 54, 54, 54, 54, 54, 53, 45, 54, 45, 53, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 48, 50, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 48, 44, 52, 54, 54, 54, 54, 54, 54, + 54, 47, 44, 44, 43, 49, 54, 54, 54, 54, 59, 95, 102, 102, 102, 102, + 102, 102, 102, 90, 9, 0, 194, 255, 255, 255, 255, 255, 0, 0, 15, 45, + 45, 45, 45, 45, 45, 53, 54, 54, 54, 54, 54, 46, 52, 54, 53, 45, + 54, 54, 54, 54, 53, 48, 42, 51, 53, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 48, 50, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 41, 53, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 53, 45, 54, 54, 54, 54, 54, 55, + 81, 102, 102, 102, 102, 102, 102, 84, 4, 0, 148, 255, 255, 255, 255, 255, + 0, 0, 33, 45, 45, 45, 45, 45, 45, 53, 54, 54, 54, 54, 54, 50, + 53, 54, 54, 44, 53, 54, 54, 54, 47, 47, 54, 45, 43, 46, 53, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 51, 43, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 50, 48, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 47, 51, 54, + 54, 54, 54, 54, 59, 97, 102, 102, 102, 102, 101, 67, 0, 0, 74, 248, + 255, 255, 255, 255, 0, 7, 43, 45, 45, 45, 45, 45, 45, 53, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 48, 50, 54, 54, 54, 50, 52, 54, 54, + 54, 41, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 40, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 47, 51, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 49, 49, 54, 54, 54, 54, 54, 54, 63, 101, 102, 102, 102, 89, 19, + 0, 4, 47, 201, 255, 255, 255, 255, 0, 15, 45, 45, 45, 45, 45, 45, + 46, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 48, 50, 54, 54, 54, + 54, 54, 54, 54, 54, 45, 43, 43, 52, 54, 54, 54, 54, 54, 54, 54, + 54, 53, 42, 42, 34, 46, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 49, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 45, 53, 54, 54, 54, 54, 54, 54, 54, 69, 79, + 79, 79, 57, 19, 0, 9, 54, 78, 255, 255, 255, 255, 0, 15, 45, 45, + 45, 45, 45, 45, 50, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 50, + 42, 50, 54, 54, 54, 54, 54, 54, 54, 53, 52, 52, 43, 46, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 45, 52, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 49, 49, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 19, 0, 0, 32, 55, 198, 255, 255, 255, + 0, 15, 45, 45, 45, 45, 45, 45, 45, 52, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 53, 44, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 50, 44, 54, 54, 54, 54, 54, 54, 54, 49, 49, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 48, 42, 43, 46, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 28, 0, 0, 1, 21, + 195, 255, 255, 255, 0, 10, 44, 45, 45, 45, 45, 45, 45, 46, 53, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 49, 49, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 43, 54, 54, 54, 54, 54, 54, 54, 49, 49, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 53, 50, 47, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 46, + 11, 0, 0, 3, 189, 255, 255, 255, 0, 0, 42, 45, 45, 45, 45, 45, + 45, 45, 47, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 53, 44, 50, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 47, 51, 54, 54, 54, 54, + 54, 54, 49, 49, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 48, 50, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 50, 15, 0, 0, 69, 246, 255, 255, 0, 0, 27, 45, + 45, 45, 45, 45, 45, 45, 45, 51, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 44, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 46, 52, + 54, 54, 54, 54, 54, 54, 49, 49, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 55, 68, 68, 68, 68, 66, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 47, 51, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 47, 3, 0, 2, 157, 255, 255, + 0, 0, 7, 41, 45, 45, 45, 45, 45, 45, 45, 46, 53, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 46, 52, 54, 54, 54, 54, 54, 54, 54, + 54, 52, 46, 54, 54, 54, 54, 54, 54, 54, 53, 45, 54, 54, 54, 54, + 54, 54, 54, 39, 38, 38, 38, 38, 38, 38, 43, 75, 93, 102, 100, 73, + 73, 72, 63, 67, 58, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 52, 46, 54, 54, 54, 54, 54, 60, 67, 67, 67, 56, 54, 30, 0, + 0, 141, 255, 255, 80, 0, 0, 7, 10, 28, 45, 45, 45, 45, 45, 45, + 45, 42, 43, 52, 54, 54, 54, 54, 54, 54, 54, 48, 43, 54, 54, 54, + 54, 54, 54, 54, 54, 52, 53, 54, 54, 54, 54, 54, 54, 54, 54, 44, + 54, 54, 54, 54, 53, 23, 12, 0, 0, 0, 0, 0, 0, 0, 3, 63, + 71, 24, 23, 0, 0, 0, 0, 49, 86, 79, 63, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 47, 51, 54, 54, 54, 58, 94, 102, 102, 102, + 82, 54, 49, 2, 0, 141, 255, 255, 191, 12, 0, 0, 0, 10, 45, 45, + 45, 45, 45, 45, 46, 53, 50, 48, 54, 54, 54, 54, 54, 54, 54, 44, + 52, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 51, 54, 54, 54, 54, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 82, 99, 69, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 47, 51, 54, 54, 55, 87, + 102, 102, 102, 102, 102, 72, 54, 3, 0, 137, 255, 255, 255, 150, 47, 13, + 0, 3, 39, 45, 45, 45, 45, 45, 45, 52, 54, 45, 53, 54, 54, 54, + 54, 54, 54, 51, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 51, 6, 0, 0, 9, + 19, 37, 60, 71, 71, 22, 0, 0, 0, 0, 8, 18, 39, 38, 0, 0, + 0, 13, 75, 102, 72, 54, 54, 54, 54, 54, 54, 54, 54, 51, 47, 54, + 54, 54, 62, 102, 102, 102, 102, 102, 102, 95, 56, 3, 0, 119, 255, 255, + 255, 255, 255, 144, 0, 0, 34, 45, 45, 45, 45, 45, 45, 49, 54, 51, + 47, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 51, 45, 26, 17, 17, 17, 17, 17, 17, 13, + 0, 0, 17, 53, 54, 54, 86, 102, 102, 88, 29, 0, 1, 30, 83, 102, + 102, 96, 50, 7, 0, 0, 64, 102, 99, 67, 54, 54, 54, 54, 54, 46, + 41, 45, 54, 54, 54, 54, 62, 102, 102, 102, 102, 102, 102, 102, 65, 3, + 0, 119, 255, 255, 255, 255, 255, 188, 3, 0, 18, 45, 45, 45, 45, 45, + 45, 48, 54, 54, 44, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 53, 52, 52, 52, 51, 31, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 44, 54, 54, 54, 86, 102, 102, 102, 81, 65, + 68, 102, 102, 102, 102, 102, 102, 78, 3, 0, 64, 102, 102, 102, 72, 54, + 54, 54, 54, 52, 46, 53, 54, 54, 54, 54, 62, 102, 102, 102, 102, 102, + 102, 102, 75, 2, 0, 119, 255, 255, 255, 255, 255, 255, 29, 0, 16, 45, + 45, 45, 45, 45, 45, 45, 48, 52, 39, 42, 42, 48, 53, 54, 54, 54, + 54, 54, 54, 54, 53, 53, 48, 48, 46, 45, 45, 44, 17, 0, 0, 0, + 0, 0, 5, 5, 5, 5, 4, 0, 0, 13, 54, 54, 54, 54, 86, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 74, 62, 87, 102, + 102, 102, 100, 64, 54, 54, 54, 54, 51, 47, 54, 54, 54, 54, 62, 102, + 102, 102, 102, 102, 102, 102, 66, 0, 0, 129, 255, 255, 255, 255, 255, 255, + 89, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 46, 51, 54, 54, 47, + 47, 54, 54, 54, 54, 54, 54, 53, 49, 45, 45, 45, 45, 45, 45, 25, + 0, 0, 0, 3, 22, 31, 54, 54, 54, 54, 52, 31, 31, 45, 54, 54, + 54, 54, 85, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 96, 58, 54, 54, 54, 54, 48, 41, 51, + 53, 54, 57, 95, 102, 102, 102, 102, 102, 102, 66, 0, 4, 226, 255, 255, + 255, 255, 255, 255, 137, 0, 0, 44, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 50, 53, 54, 44, 54, 54, 54, 54, 54, 54, 51, 45, 45, 45, 45, + 45, 45, 45, 17, 0, 0, 21, 51, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 59, 97, 102, 102, 102, 102, 102, 102, 100, 100, + 101, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 90, 54, 54, 54, + 54, 43, 43, 43, 45, 53, 54, 79, 102, 102, 102, 102, 102, 102, 66, 0, + 33, 238, 255, 255, 255, 255, 255, 255, 239, 0, 0, 26, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 48, 49, 42, 49, 49, 49, 49, 49, 49, 45, + 45, 45, 45, 45, 45, 45, 45, 17, 0, 17, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 65, 102, 102, 102, 93, + 77, 77, 57, 54, 63, 81, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 81, 54, 54, 50, 48, 50, 43, 49, 49, 54, 70, 102, 102, 102, 102, + 102, 102, 66, 0, 0, 170, 255, 255, 255, 255, 255, 255, 239, 0, 0, 17, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 39, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 17, 0, 26, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 79, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 63, 54, 54, 54, 50, 47, 54, 44, 54, 70, + 102, 102, 102, 102, 102, 102, 75, 1, 0, 0, 164, 255, 255, 255, 255, 255, + 254, 86, 0, 4, 40, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 39, 45, 45, 45, 45, 45, 45, 45, 45, 45, 42, 17, 1, 1, 1, 0, + 0, 26, 54, 54, 54, 54, 54, 54, 54, 54, 53, 44, 48, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 78, 102, 102, 102, 102, 102, 102, 102, 102, 102, 63, 54, 46, 43, 45, 53, + 54, 44, 54, 63, 100, 102, 102, 102, 102, 102, 76, 13, 0, 0, 63, 255, + 255, 255, 255, 255, 255, 133, 0, 0, 26, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 43, 37, 42, 45, 45, 45, 45, 45, 45, 45, 45, 13, 0, + 0, 0, 0, 0, 0, 27, 54, 54, 54, 54, 54, 54, 54, 51, 43, 52, + 48, 45, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 79, 102, 102, 102, 102, 102, 102, 102, 102, 63, 54, + 52, 52, 54, 54, 54, 44, 54, 54, 71, 102, 102, 102, 102, 85, 54, 49, + 6, 0, 3, 212, 255, 255, 255, 255, 255, 217, 17, 0, 16, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 44, 40, 41, 45, 45, 45, 45, 45, + 41, 9, 0, 0, 0, 11, 17, 0, 0, 38, 54, 54, 54, 54, 54, 54, + 52, 46, 53, 54, 54, 50, 43, 53, 51, 46, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 52, 39, 42, 42, 44, 85, 102, 102, 102, 102, 102, + 102, 102, 63, 54, 54, 54, 54, 54, 47, 51, 54, 54, 54, 75, 83, 83, + 83, 55, 54, 54, 36, 0, 0, 209, 255, 255, 255, 255, 255, 255, 81, 0, + 1, 36, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 39, 44, + 45, 45, 45, 45, 29, 0, 0, 0, 25, 43, 44, 42, 46, 53, 54, 54, + 54, 54, 54, 54, 45, 53, 54, 54, 54, 54, 52, 39, 45, 51, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 53, 52, 54, 54, 44, 63, 98, + 102, 102, 102, 102, 102, 102, 63, 54, 54, 54, 54, 50, 45, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 52, 5, 0, 209, 255, 255, 255, 255, + 255, 255, 149, 0, 0, 8, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 44, 40, 45, 45, 45, 44, 11, 0, 2, 22, 44, 45, 45, 49, + 54, 54, 54, 50, 42, 42, 41, 46, 52, 54, 54, 54, 54, 54, 54, 52, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 47, 51, 92, 102, 102, 102, 102, 102, 102, 63, 54, 54, 54, 48, 42, + 52, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 6, 0, 209, + 255, 255, 255, 255, 255, 255, 234, 31, 0, 1, 28, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 39, 45, 45, 45, 44, 0, 0, 11, 45, + 45, 45, 45, 45, 51, 54, 54, 44, 54, 54, 48, 41, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 53, 44, 74, 84, 102, 102, 102, 102, 98, 60, 54, + 54, 54, 52, 44, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 6, 0, 209, 255, 255, 255, 255, 255, 255, 255, 186, 0, 0, 2, 36, + 45, 45, 45, 45, 45, 45, 45, 45, 44, 38, 39, 43, 45, 45, 45, 44, + 0, 0, 24, 45, 45, 45, 45, 45, 45, 53, 54, 44, 54, 54, 53, 51, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 53, 46, 49, 65, 97, 102, 102, + 101, 71, 54, 54, 54, 54, 54, 51, 47, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 35, 1, 0, 209, 255, 255, 255, 255, 255, 255, 255, 243, + 69, 0, 0, 7, 37, 34, 36, 45, 45, 45, 45, 45, 44, 41, 44, 45, + 45, 45, 45, 44, 0, 0, 24, 45, 45, 45, 45, 45, 45, 53, 54, 44, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 61, 69, 90, 90, 78, 54, 54, 54, 54, 54, 54, 53, 45, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 44, 3, 0, 0, 209, 255, 255, 255, 255, + 255, 255, 255, 255, 182, 24, 0, 0, 0, 0, 2, 12, 43, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 44, 3, 0, 20, 45, 45, 45, 45, 45, + 45, 53, 54, 46, 52, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 48, + 42, 42, 48, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 44, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 44, 54, 54, 54, 54, 54, 54, 54, 54, 54, 50, 8, 0, 0, 64, 242, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 12, 0, 0, 0, 0, 0, + 29, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 17, 0, 6, 45, + 45, 45, 45, 45, 45, 53, 54, 52, 46, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 48, 48, 54, 54, 48, 50, 53, 50, 50, 50, 50, 50, 51, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 53, 45, 54, 54, 54, 54, 54, 54, + 51, 50, 54, 53, 45, 54, 54, 54, 54, 54, 54, 54, 54, 54, 19, 0, + 0, 28, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 168, + 168, 58, 0, 0, 24, 47, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 20, 0, 2, 34, 45, 45, 45, 45, 45, 53, 54, 52, 46, 54, 54, 54, + 54, 54, 54, 54, 54, 51, 47, 54, 54, 54, 54, 40, 46, 46, 46, 46, + 46, 46, 44, 48, 54, 54, 54, 54, 54, 54, 54, 54, 52, 52, 54, 54, + 54, 54, 54, 46, 45, 46, 43, 52, 46, 54, 54, 54, 54, 54, 54, 54, + 54, 29, 4, 0, 10, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 64, 0, 2, 113, 66, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 36, 0, 0, 14, 45, 45, 45, 45, 50, 54, 54, 53, + 51, 54, 54, 54, 54, 54, 54, 54, 54, 49, 49, 54, 54, 54, 54, 50, + 50, 54, 54, 54, 54, 54, 53, 45, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 44, 54, 54, 48, 43, 51, 54, 54, 54, + 54, 54, 54, 54, 40, 0, 0, 0, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 0, 0, 0, 61, 78, + 41, 41, 41, 41, 45, 45, 45, 45, 25, 0, 0, 14, 45, 45, 45, 45, + 48, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 53, 45, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 53, 45, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 32, 0, 0, 7, 193, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 8, + 0, 0, 0, 0, 0, 0, 0, 2, 27, 45, 45, 44, 7, 0, 0, 25, + 45, 45, 45, 45, 45, 47, 52, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 53, 44, 50, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 53, 53, 54, 45, 53, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 32, 0, 0, 50, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 212, 65, 1, 0, 0, 0, 0, 0, 0, 6, 42, 45, 34, + 0, 0, 16, 45, 45, 45, 45, 45, 45, 45, 46, 53, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 53, 47, 50, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 51, + 47, 54, 45, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 32, 0, 0, 13, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 66, 0, 0, 24, 28, 0, + 0, 31, 45, 25, 0, 0, 33, 45, 45, 45, 45, 45, 45, 45, 45, 47, + 52, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 48, 46, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 49, 42, 47, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 11, 0, 0, 179, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 252, + 252, 252, 204, 5, 0, 0, 0, 0, 0, 7, 44, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 46, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 43, 46, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 53, 53, 53, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 48, 6, 0, 179, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 11, 0, 0, 0, 0, 0, 16, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 47, 44, 47, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 50, 44, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 45, 0, 0, + 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 105, 105, 105, 60, + 0, 16, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 40, 44, 44, + 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 52, 46, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 14, 0, 0, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 145, 0, 1, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 37, 42, 45, 46, 45, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 53, 45, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 51, 33, 33, 46, 54, 54, 54, + 54, 54, 58, 108, 22, 0, 0, 26, 247, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 145, 0, 0, 36, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 43, 44, 45, 45, 43, 51, 46, 46, 52, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 46, 46, 46, 45, 42, 52, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 53, 37, 35, 41, 48, 40, 8, 0, 0, + 4, 7, 23, 35, 35, 27, 8, 26, 0, 0, 0, 157, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 0, 0, 18, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 42, 39, 50, 50, + 43, 51, 54, 54, 54, 54, 54, 54, 54, 54, 50, 50, 50, 51, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 53, 50, 29, 0, 0, 12, 30, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 252, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 29, 0, 1, 25, 33, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 43, 41, 48, 53, 53, 45, 49, 50, 47, 47, 47, 53, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 48, 46, 35, 2, + 0, 0, 0, 0, 0, 0, 3, 12, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 127, 0, 0, 0, 0, 10, 10, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, 39, 43, 46, 46, 44, 50, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 50, + 45, 41, 6, 0, 0, 0, 0, 0, 0, 1, 30, 45, 42, 34, 33, 50, + 78, 78, 120, 47, 0, 0, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 216, 36, 0, 0, 0, 0, 0, 41, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 39, 44, + 45, 45, 45, 44, 52, 50, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 51, 45, 45, 25, 0, 0, 5, 33, 33, 33, 33, 34, 45, 45, + 45, 45, 36, 64, 102, 102, 72, 0, 0, 56, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 181, 86, + 46, 0, 0, 27, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 39, 43, 50, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 53, 45, 45, 39, 3, 0, 2, 34, 45, 45, 45, + 45, 45, 45, 45, 45, 43, 40, 64, 102, 102, 12, 0, 0, 169, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 238, 14, 0, 13, 43, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 40, 44, 52, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 47, 45, 45, 34, 0, 0, 15, + 45, 45, 45, 45, 45, 45, 45, 41, 41, 39, 44, 68, 102, 102, 12, 0, + 87, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 0, 0, 21, 42, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 48, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 51, 45, 45, 45, + 7, 0, 0, 32, 45, 45, 45, 45, 45, 45, 45, 39, 41, 45, 54, 97, + 102, 102, 12, 0, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 4, 0, + 0, 12, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 48, 54, 54, 54, 54, 54, 54, 54, 54, 54, 52, + 46, 45, 45, 32, 0, 0, 6, 45, 45, 45, 45, 45, 45, 45, 45, 39, + 46, 50, 92, 102, 102, 102, 12, 0, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 55, 0, 0, 0, 13, 39, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 48, 54, 54, 54, 54, 54, 54, + 54, 54, 51, 45, 45, 44, 36, 3, 0, 0, 34, 45, 45, 45, 45, 45, + 45, 49, 50, 44, 83, 102, 102, 102, 102, 99, 11, 0, 208, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 115, 2, 0, 0, 1, 19, 30, 43, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 48, 54, 52, + 51, 51, 51, 51, 51, 51, 46, 45, 45, 32, 0, 0, 0, 9, 43, 45, + 45, 45, 45, 46, 48, 54, 53, 59, 102, 102, 102, 102, 102, 70, 0, 0, + 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 1, 0, 0, + 0, 0, 4, 21, 21, 21, 21, 21, 21, 35, 44, 45, 45, 45, 45, 45, + 45, 50, 49, 6, 0, 0, 0, 0, 0, 3, 29, 44, 28, 2, 0, 0, + 3, 39, 45, 45, 45, 46, 53, 50, 48, 54, 47, 93, 102, 102, 102, 102, + 102, 30, 0, 0, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 183, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 35, + 45, 45, 45, 45, 48, 54, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 35, 45, 45, 45, 47, 52, 54, 52, 43, 43, 69, 102, + 102, 102, 102, 102, 102, 30, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 238, 118, 18, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 24, 24, 45, 48, 18, 0, 0, 1, 20, 20, 20, + 4, 0, 0, 0, 0, 0, 4, 39, 45, 45, 45, 46, 53, 54, 54, 54, + 53, 58, 101, 102, 102, 102, 102, 102, 96, 16, 0, 161, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 241, 241, + 241, 241, 241, 164, 61, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 29, 45, 45, 45, 43, 19, 19, 19, 19, 20, 37, 39, 42, 45, 48, 52, + 53, 44, 52, 54, 54, 59, 102, 102, 102, 102, 102, 102, 90, 0, 0, 163, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 206, 102, 2, 0, 0, 0, 0, + 0, 0, 0, 21, 44, 45, 45, 45, 45, 45, 45, 45, 43, 38, 43, 43, + 40, 49, 53, 47, 43, 47, 49, 54, 50, 59, 102, 102, 102, 102, 102, 102, + 52, 0, 5, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, + 226, 160, 94, 61, 7, 0, 6, 43, 45, 45, 45, 45, 45, 45, 45, 42, + 38, 44, 45, 45, 44, 48, 44, 49, 50, 45, 53, 52, 46, 59, 102, 102, + 102, 102, 102, 102, 11, 0, 13, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 242, 85, 0, 22, 45, 45, 45, 45, 45, + 45, 45, 45, 44, 43, 45, 45, 43, 51, 44, 51, 54, 41, 42, 42, 44, + 53, 54, 82, 102, 102, 102, 102, 71, 0, 0, 103, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 0, 25, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 39, 46, 53, 54, 54, + 50, 52, 54, 54, 54, 54, 56, 90, 102, 102, 96, 24, 0, 0, 205, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 96, 0, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 44, 38, + 45, 47, 53, 54, 54, 54, 54, 54, 54, 54, 54, 58, 63, 63, 46, 0, + 0, 58, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 96, 0, 5, 42, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 41, 41, 45, 45, 53, 54, 54, 51, 40, 40, 40, 47, 54, 54, + 54, 31, 5, 0, 7, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 119, 0, 0, 26, 44, 45, 45, 45, + 45, 45, 45, 45, 43, 41, 41, 45, 45, 45, 53, 54, 53, 21, 0, 0, + 0, 7, 14, 14, 14, 2, 0, 0, 51, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 9, 0, 0, + 24, 45, 45, 45, 45, 45, 45, 45, 45, 39, 45, 45, 45, 45, 53, 51, + 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 209, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 67, 0, 0, 1, 21, 38, 38, 38, 44, 45, 45, 45, 45, 45, 45, + 45, 45, 52, 21, 0, 0, 0, 93, 39, 39, 39, 39, 39, 39, 61, 234, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 219, 84, 0, 0, 0, 0, 0, 0, 41, 45, 45, + 45, 45, 45, 45, 45, 42, 30, 0, 0, 7, 84, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 57, 1, 0, 0, 0, + 0, 10, 34, 42, 45, 45, 45, 45, 38, 4, 0, 0, 1, 129, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 156, 147, 142, 5, 0, 0, 0, 9, 19, 39, 42, 34, 8, 0, 0, 0, + 78, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 154, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 139, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 110, 0, 0, + 0, 0, 0, 0, 0, 0, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'cdrom' of size 100x100x1x3 and type 'const unsigned char' */ +const unsigned char data_cdrom[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 245, 191, 191, 187, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 148, 175, 224, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, + 246, 245, 222, 139, 59, 26, 8, 24, 24, 48, 108, 95, 95, 95, 95, 95, + 95, 95, 95, 57, 24, 5, 23, 25, 65, 119, 177, 222, 253, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 241, 178, 103, 45, 0, 0, 50, 110, 160, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 144, 143, 125, 71, 50, 0, 0, + 61, 102, 181, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 249, 146, 16, 9, 78, 119, 180, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 137, 105, 47, 0, 7, 123, 249, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 246, 153, 55, 3, 40, 170, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 149, 62, 7, 40, 159, 240, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 170, 45, 0, 29, 82, 107, + 139, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 197, 210, 211, + 179, 43, 0, 53, 233, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 153, 37, 1, 38, + 86, 107, 107, 81, 47, 128, 182, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 167, 0, 156, 246, 246, 235, 122, 20, 1, 116, 245, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 74, + 0, 67, 95, 107, 107, 107, 107, 72, 0, 60, 141, 184, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 200, 111, 5, 235, 246, 246, 246, 233, 165, 67, 9, 32, 153, + 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 243, 68, 0, 83, 189, 121, 107, 107, 107, 107, 107, 33, 0, 62, 134, + 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 192, 232, 30, 78, 246, 246, 246, 246, 245, 190, + 190, 161, 50, 0, 43, 190, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 237, 58, 16, 127, 190, 190, 130, 107, 107, 107, 107, 107, + 98, 23, 10, 87, 156, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 217, 222, 5, 162, 246, 246, + 246, 237, 81, 35, 190, 190, 190, 142, 50, 0, 97, 234, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 235, 53, 9, 155, 190, 190, 190, 183, 115, + 107, 107, 107, 107, 107, 100, 19, 13, 105, 180, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 241, 157, + 6, 203, 246, 246, 246, 151, 0, 139, 190, 190, 190, 190, 187, 91, 11, 21, + 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 50, 19, 141, 190, 190, + 190, 190, 190, 176, 123, 107, 107, 107, 107, 107, 80, 5, 30, 123, 189, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 202, 244, 84, 48, 246, 246, 246, 217, 13, 52, 188, 190, 190, 190, 190, + 190, 190, 151, 17, 14, 185, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 5, + 140, 190, 190, 190, 190, 190, 190, 190, 175, 131, 107, 107, 107, 107, 107, 66, + 0, 61, 149, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 206, 246, 62, 142, 246, 246, 246, 146, 6, 154, 190, + 190, 190, 190, 190, 190, 190, 190, 188, 65, 0, 90, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 154, 0, 112, 190, 190, 190, 190, 190, 190, 190, 190, 190, 177, 114, 107, + 107, 107, 107, 105, 34, 7, 96, 171, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 220, 216, 6, 156, 246, 246, 246, + 76, 63, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 185, 74, 0, 85, + 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 221, 13, 61, 182, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 158, 107, 107, 107, 107, 107, 86, 3, 49, 124, 183, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 194, 246, 210, 0, + 238, 246, 246, 231, 17, 99, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 186, 76, 0, 76, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 217, 45, 19, 188, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 135, 107, 107, 107, 107, 107, 34, 14, 105, + 174, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 216, 246, 116, 0, 238, 246, 246, 201, 0, 146, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 113, 0, 80, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 35, 4, 117, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 186, 112, 107, 107, 107, + 107, 89, 3, 45, 140, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 216, 246, 66, 78, 245, 246, 246, 117, 29, 181, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 187, 93, 5, 140, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 235, 40, 1, + 116, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 165, 107, 107, 107, 107, 107, 57, 4, 91, 166, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 225, 244, 20, 126, 246, 246, 244, 34, + 58, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 39, 0, 140, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 115, 5, 124, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 122, 107, 107, 107, 107, 93, 12, 18, 114, 182, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 238, 171, 0, 183, + 246, 246, 185, 0, 130, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 178, 93, 0, 123, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 228, 8, 69, 190, 190, 190, 91, 161, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 143, 107, 107, 107, 107, 107, 81, + 0, 66, 133, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 202, + 245, 85, 30, 239, 246, 246, 99, 13, 184, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 103, 1, 166, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 253, 101, 20, 176, 190, 190, 190, 5, 18, + 108, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 188, 119, 107, + 107, 107, 107, 102, 32, 16, 102, 157, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 220, 237, 45, 107, 246, 246, 239, 20, 72, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 180, + 52, 16, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 0, 99, 190, 190, + 190, 190, 175, 42, 0, 93, 174, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 174, 109, 107, 107, 107, 107, 73, 0, 65, 115, 185, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 238, 225, 0, 191, 246, 246, 144, 0, 136, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 155, 17, 22, 236, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 118, + 8, 183, 190, 190, 190, 190, 190, 178, 81, 3, 63, 172, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 151, 107, 107, 107, 107, 106, 40, 12, 102, + 159, 186, 190, 190, 190, 190, 190, 190, 190, 190, 194, 246, 139, 11, 228, 246, + 246, 93, 47, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 156, 10, 50, 248, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 45, 67, 190, 190, 190, 190, 190, 190, 190, 190, 110, 1, 33, + 169, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 188, 127, 107, 107, 107, + 107, 90, 5, 41, 106, 155, 189, 190, 190, 190, 190, 190, 190, 190, 213, 246, + 91, 74, 246, 246, 244, 47, 112, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 106, 0, + 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 131, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 143, 29, 24, 119, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 171, 108, 107, 107, 107, 107, 41, 0, 86, 107, 169, 190, 190, 190, 190, 190, + 190, 190, 235, 205, 11, 137, 246, 246, 172, 0, 120, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 182, 33, 32, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 8, 192, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 169, 46, 4, 79, 179, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 142, 107, 107, 107, 107, 98, 17, 34, 107, 114, 176, + 190, 190, 190, 190, 190, 190, 235, 169, 10, 210, 246, 246, 88, 19, 183, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 184, 176, 176, 176, 188, 152, 4, 94, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 49, + 215, 212, 210, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 91, 1, 45, + 175, 190, 190, 190, 190, 190, 190, 190, 190, 175, 115, 107, 107, 107, 107, 64, + 3, 85, 107, 141, 190, 190, 190, 190, 190, 190, 235, 89, 23, 246, 246, 246, + 7, 86, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 189, 131, 44, 100, 107, 107, 107, 139, 180, 96, 0, 138, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 57, 80, 246, 246, 246, 232, 198, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 103, 0, 6, 132, 190, 190, 190, 190, 190, 190, 190, 190, 168, 108, + 107, 107, 107, 95, 5, 39, 107, 141, 190, 190, 190, 190, 190, 190, 212, 63, + 115, 246, 246, 187, 2, 159, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 96, 0, 24, 99, 107, 107, 107, 107, 138, + 177, 47, 19, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 245, 46, 149, 246, 246, 246, 246, 243, 216, 193, 190, + 190, 190, 190, 190, 190, 190, 189, 154, 24, 5, 121, 182, 190, 190, 190, 190, + 190, 190, 190, 155, 107, 107, 107, 107, 76, 75, 107, 141, 190, 190, 190, 190, + 190, 190, 184, 0, 167, 246, 246, 70, 32, 186, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 187, 90, 3, 60, 102, 107, 107, + 107, 107, 107, 107, 186, 182, 11, 59, 241, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 0, 188, 246, 246, 246, 246, + 246, 246, 238, 223, 192, 190, 190, 190, 190, 190, 190, 190, 170, 76, 0, 57, + 186, 190, 190, 190, 190, 190, 190, 186, 157, 107, 107, 107, 107, 107, 113, 173, + 190, 190, 190, 190, 190, 190, 184, 0, 173, 201, 181, 13, 94, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 88, 1, 63, + 107, 107, 107, 107, 107, 107, 107, 107, 186, 190, 132, 1, 130, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 27, 245, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 229, 212, 197, 190, 190, 190, 190, + 190, 190, 83, 0, 52, 158, 190, 190, 190, 190, 190, 190, 189, 154, 110, 107, + 107, 115, 166, 190, 190, 142, 135, 135, 135, 135, 131, 34, 171, 190, 164, 0, + 159, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 138, 9, 43, 107, 107, 107, 107, 107, 107, 107, 107, 107, 186, 190, 190, 79, + 24, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 209, 52, 94, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 240, + 212, 199, 191, 190, 190, 190, 187, 147, 25, 7, 81, 173, 190, 190, 190, 190, + 190, 190, 183, 182, 166, 128, 87, 29, 16, 5, 32, 32, 32, 32, 18, 10, + 16, 65, 122, 169, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 187, 120, 6, 20, 104, 107, 107, 107, 107, 107, 107, 107, 107, 150, + 189, 190, 190, 173, 10, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 1, 135, 245, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 236, 228, 211, 192, 190, 190, 181, 116, 2, 19, + 112, 186, 190, 190, 190, 190, 179, 88, 18, 6, 51, 84, 155, 159, 197, 197, + 197, 197, 179, 155, 120, 59, 3, 34, 136, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 189, 175, 87, 4, 39, 103, 107, 107, 107, 107, 107, 107, + 107, 107, 142, 185, 190, 190, 190, 190, 92, 17, 226, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 170, 41, 204, 221, 243, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 228, 219, + 202, 190, 148, 59, 0, 34, 117, 188, 190, 175, 42, 0, 92, 180, 197, 195, + 120, 65, 65, 65, 65, 65, 65, 65, 65, 116, 135, 76, 1, 27, 169, 190, + 190, 190, 190, 190, 190, 190, 169, 144, 131, 69, 1, 41, 107, 107, 107, 107, + 107, 107, 107, 107, 108, 148, 190, 190, 190, 190, 190, 190, 172, 13, 119, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 31, 191, 190, + 203, 232, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 245, 224, 220, 196, 151, 60, 0, 186, 188, 62, 3, 110, + 190, 108, 17, 15, 0, 34, 106, 106, 106, 106, 106, 106, 43, 10, 8, 71, + 108, 19, 9, 82, 180, 190, 190, 181, 175, 137, 108, 107, 64, 2, 47, 105, + 107, 107, 107, 107, 107, 107, 107, 122, 166, 190, 190, 190, 190, 190, 190, 190, + 190, 87, 39, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 129, 31, 190, 190, 190, 193, 214, 243, 245, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 240, 204, 184, 150, 189, + 152, 0, 92, 197, 74, 3, 80, 142, 156, 191, 197, 197, 197, 197, 197, 197, + 197, 168, 78, 5, 37, 156, 91, 1, 48, 148, 164, 115, 107, 107, 101, 50, + 2, 48, 106, 107, 107, 107, 107, 107, 107, 107, 122, 171, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 124, 0, 200, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 71, 52, 190, 190, 183, 62, 131, 190, 207, 230, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 240, 192, 190, 190, 59, 43, 209, 112, 0, 123, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 173, 26, 1, 111, 127, 18, 8, 83, 107, + 107, 107, 29, 0, 53, 107, 107, 107, 107, 107, 107, 107, 107, 148, 184, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 174, 15, 142, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 32, 104, 190, 190, 182, 32, 5, 14, + 81, 142, 185, 216, 238, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 194, 190, 141, 3, 137, 190, 26, 68, 193, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 173, 76, 0, 53, + 153, 22, 2, 80, 107, 107, 31, 57, 106, 107, 107, 107, 107, 107, 107, 123, + 175, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 64, 51, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 0, 163, 190, 190, + 190, 190, 148, 80, 13, 5, 23, 38, 88, 174, 219, 239, 245, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 194, 190, 46, 39, 195, 114, 2, + 166, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 196, 92, 5, 49, 122, 13, 19, 97, 107, 107, 107, 107, 107, 107, 107, + 107, 111, 151, 188, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 125, 8, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, + 0, 178, 190, 190, 190, 190, 190, 190, 190, 166, 128, 97, 19, 0, 0, 33, + 75, 163, 172, 172, 179, 246, 246, 246, 246, 246, 246, 246, 240, 192, 142, 1, + 135, 197, 26, 61, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 132, 18, 23, 72, 1, 57, 107, 107, 107, + 107, 107, 107, 107, 129, 175, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 169, 6, 169, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 227, 0, 178, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 180, 175, 152, 104, 50, 33, 33, 24, 1, 18, 18, 18, 18, 18, 18, 212, + 205, 190, 79, 21, 180, 136, 5, 142, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 164, 23, 20, 40, + 4, 100, 107, 107, 108, 132, 158, 183, 187, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 50, 100, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 227, 0, 178, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 180, 152, 152, 163, 173, + 173, 173, 173, 192, 190, 178, 26, 72, 196, 66, 21, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 128, 2, 8, 0, 32, 113, 142, 160, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 87, + 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 0, 178, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 161, 0, 139, 190, 0, 94, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 123, 2, 0, 0, 174, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 157, 0, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, + 0, 137, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 161, 0, 193, + 147, 0, 165, 197, 197, 197, 197, 197, 197, 197, 197, 125, 32, 14, 14, 14, + 20, 110, 193, 197, 197, 197, 197, 197, 197, 197, 197, 120, 0, 0, 59, 193, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 165, 9, 156, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 239, 30, 104, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 164, 0, 193, 113, 40, 191, 197, 197, 197, 197, 197, 197, 197, 143, 3, + 82, 165, 205, 181, 64, 4, 83, 194, 197, 197, 197, 197, 197, 197, 197, 189, + 32, 0, 10, 175, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 201, 55, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 71, 104, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 164, 0, 193, 113, 50, 197, 197, 197, 197, 197, 197, + 197, 197, 59, 24, 234, 255, 255, 255, 255, 108, 0, 94, 197, 197, 197, 197, + 197, 197, 197, 197, 92, 17, 10, 107, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 201, + 123, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 36, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 121, 0, 193, 113, 50, 197, 197, + 197, 197, 197, 197, 197, 197, 59, 128, 255, 255, 255, 255, 255, 249, 130, 4, + 148, 197, 197, 197, 197, 197, 197, 197, 130, 0, 42, 45, 188, 200, 200, 200, + 193, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 127, 25, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 170, 29, 187, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 87, 58, 196, + 113, 50, 197, 197, 197, 197, 197, 197, 197, 197, 59, 134, 255, 255, 255, 255, + 255, 255, 235, 33, 49, 194, 197, 197, 197, 197, 197, 197, 193, 0, 105, 0, + 200, 246, 246, 246, 234, 203, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 194, 0, 213, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 0, 147, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 87, 22, 194, 113, 15, 179, 197, 197, 197, 197, 197, 197, 197, 59, 134, + 255, 255, 255, 255, 255, 255, 255, 192, 2, 157, 197, 197, 197, 197, 197, 197, + 194, 22, 82, 24, 40, 77, 77, 114, 169, 196, 222, 191, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 0, 182, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 249, 13, 105, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 157, 0, 178, 185, 0, 170, 197, 197, 197, 197, 197, + 197, 197, 59, 79, 254, 255, 255, 255, 255, 255, 255, 255, 7, 157, 197, 197, + 197, 197, 197, 197, 197, 72, 94, 77, 71, 138, 85, 46, 35, 7, 15, 57, + 83, 151, 154, 176, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 189, 18, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 74, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 174, 20, 82, 190, 0, 137, 197, + 197, 197, 197, 197, 197, 197, 122, 19, 225, 255, 255, 255, 255, 255, 255, 249, + 7, 157, 197, 197, 197, 197, 197, 197, 197, 72, 94, 77, 127, 246, 246, 246, + 235, 199, 173, 107, 40, 15, 9, 22, 95, 154, 179, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 87, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 114, 30, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 99, 12, + 169, 48, 94, 197, 197, 197, 197, 197, 197, 197, 178, 11, 92, 252, 255, 255, + 255, 255, 255, 132, 0, 157, 197, 197, 197, 197, 197, 197, 194, 22, 94, 77, + 127, 246, 246, 246, 246, 246, 246, 246, 246, 246, 215, 112, 42, 0, 7, 59, + 71, 130, 130, 180, 190, 190, 190, 190, 190, 73, 114, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 207, 0, 194, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 3, 145, 84, 18, 185, 197, 197, 197, 197, 197, 197, 197, 102, + 0, 88, 225, 254, 255, 255, 160, 28, 78, 194, 197, 197, 197, 197, 197, 197, + 193, 0, 163, 63, 7, 14, 67, 180, 246, 246, 246, 246, 246, 246, 246, 246, + 239, 231, 148, 123, 50, 46, 0, 20, 190, 190, 190, 190, 190, 73, 57, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 0, 207, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 8, 78, 149, 1, 104, 197, 197, 197, 197, + 197, 197, 197, 191, 105, 12, 18, 46, 46, 46, 5, 39, 179, 197, 197, 197, + 197, 197, 197, 197, 193, 0, 167, 62, 101, 131, 52, 0, 67, 143, 234, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 200, 193, 208, 193, 191, 190, + 190, 133, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 18, 132, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 102, 4, 174, 50, 18, + 161, 197, 197, 197, 197, 197, 197, 197, 197, 185, 136, 136, 136, 136, 144, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 140, 0, 163, 42, 98, 210, 217, 169, + 78, 11, 22, 122, 225, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 233, 213, 190, 147, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 57, 92, 196, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 175, + 20, 45, 173, 11, 55, 187, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 116, 44, 180, 0, + 112, 190, 194, 222, 246, 227, 113, 23, 10, 118, 217, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 245, 226, 147, 14, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 138, 9, 165, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 102, 0, 136, 126, 1, 80, 191, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 194, + 50, 47, 118, 3, 173, 190, 190, 190, 200, 227, 243, 223, 102, 14, 17, 44, + 128, 233, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 164, 13, 248, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 0, 133, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 188, 47, 69, 197, 93, 0, 62, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 135, 0, 99, 78, 56, 190, 190, 190, 190, 190, 190, 194, 220, + 246, 232, 170, 79, 12, 21, 121, 224, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 168, 0, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, + 41, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 191, 217, 222, 222, 133, 7, 147, + 195, 103, 2, 101, 183, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 167, 9, 47, 180, 22, 98, 190, 190, 190, 190, + 190, 190, 190, 190, 192, 204, 222, 241, 193, 78, 23, 9, 116, 216, 246, 246, + 246, 246, 246, 246, 246, 209, 29, 170, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 144, 5, 161, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 194, 234, 246, 209, + 132, 32, 7, 33, 184, 197, 105, 2, 40, 179, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 135, 8, 22, 161, 113, 6, 176, + 203, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 201, 220, 235, 219, 131, + 12, 17, 100, 177, 239, 246, 246, 246, 244, 201, 31, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 238, 30, 101, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 194, 219, + 246, 234, 95, 1, 2, 103, 185, 0, 42, 181, 197, 116, 0, 34, 177, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 130, 5, 47, 175, + 200, 0, 0, 77, 236, 215, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 164, 112, 47, 0, 49, 156, 224, 242, 212, 190, 31, 170, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 41, 185, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 200, 236, 241, 167, 17, 18, 104, 181, 190, 23, 11, 2, 34, 178, 196, + 168, 30, 6, 87, 157, 195, 197, 197, 197, 197, 197, 197, 197, 197, 171, 88, + 2, 30, 175, 208, 25, 53, 95, 0, 70, 232, 209, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 187, 116, 38, 18, 8, 51, + 136, 134, 4, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 187, 0, 100, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 219, 232, 110, 38, 6, 32, 197, 246, 187, 15, 17, 171, + 111, 3, 63, 173, 197, 180, 111, 19, 0, 33, 93, 154, 181, 192, 197, 197, + 188, 120, 12, 19, 111, 180, 187, 75, 1, 189, 242, 113, 1, 63, 188, 219, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 173, 133, 46, 3, 12, 13, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 60, 13, 172, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 192, 216, 146, 41, 0, 79, 196, 246, 246, 179, + 13, 76, 208, 221, 190, 121, 1, 26, 173, 197, 197, 188, 138, 66, 37, 0, + 0, 40, 58, 58, 24, 0, 59, 188, 197, 183, 54, 0, 0, 123, 246, 246, + 168, 21, 13, 178, 204, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 146, 75, 0, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 17, 80, 187, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 200, 173, 32, 10, 90, 202, 244, + 246, 246, 173, 6, 47, 242, 232, 190, 190, 190, 125, 7, 24, 121, 197, 197, + 197, 197, 193, 188, 124, 114, 114, 114, 114, 144, 193, 197, 183, 48, 0, 114, + 103, 2, 155, 246, 246, 205, 44, 5, 118, 199, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 104, 12, 241, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 0, + 110, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 175, 55, 5, 54, + 175, 246, 246, 246, 246, 164, 10, 74, 220, 227, 194, 190, 190, 190, 190, 161, + 37, 2, 55, 112, 150, 155, 156, 194, 197, 197, 197, 197, 197, 197, 186, 140, + 22, 17, 112, 202, 226, 49, 26, 202, 246, 246, 238, 93, 0, 78, 201, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 73, 75, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 247, 51, 8, 159, 190, 190, 190, 190, 190, 190, 190, 190, 198, 136, + 28, 0, 136, 246, 246, 246, 246, 246, 159, 5, 96, 236, 205, 190, 190, 190, + 190, 190, 190, 190, 175, 100, 33, 0, 11, 31, 31, 48, 120, 131, 131, 131, + 117, 57, 21, 0, 43, 157, 190, 190, 219, 206, 12, 48, 238, 246, 246, 244, + 116, 12, 71, 201, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 189, 48, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 216, 9, 75, 190, 190, 190, 190, 190, 190, + 190, 163, 109, 3, 54, 208, 245, 246, 246, 246, 232, 69, 2, 109, 224, 192, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 164, 35, 8, 62, 62, 62, 36, + 23, 39, 39, 39, 39, 69, 111, 144, 187, 190, 190, 190, 190, 210, 186, 16, + 68, 232, 246, 246, 246, 188, 16, 64, 181, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 189, 0, 172, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 11, 182, 190, + 190, 190, 190, 163, 47, 4, 25, 137, 240, 246, 246, 246, 246, 225, 62, 10, + 106, 196, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 146, 17, 49, + 107, 107, 107, 107, 113, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 217, 189, 18, 62, 233, 246, 246, 246, 191, 19, 14, 168, 191, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 127, 0, 213, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 228, 19, 61, 190, 190, 190, 121, 3, 31, 188, 246, 246, 246, 246, 246, 246, + 177, 12, 21, 186, 201, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 127, 0, 86, 107, 107, 107, 107, 113, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 212, 197, 21, 57, 228, 246, 246, 246, 198, + 21, 12, 148, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 90, 40, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 116, 16, 170, 190, 191, 58, 42, 218, 246, 246, 246, + 246, 246, 246, 171, 5, 26, 198, 193, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 59, 19, 103, 107, 107, 107, 107, 113, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 207, 174, 2, 46, + 226, 246, 246, 246, 207, 47, 2, 68, 183, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 183, 32, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 10, 88, 190, 213, 217, 227, + 246, 246, 246, 246, 246, 246, 161, 9, 31, 191, 196, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 25, 52, 107, 107, 107, 107, 107, + 116, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 191, 213, 136, 4, 68, 242, 246, 246, 246, 238, 96, 0, 62, 186, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 157, 0, 165, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 2, + 143, 217, 246, 246, 246, 246, 246, 246, 246, 157, 4, 24, 181, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 155, 7, 74, 107, + 107, 107, 107, 107, 146, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 206, 151, 0, 107, 246, 246, 246, 246, 245, 99, + 0, 63, 158, 190, 190, 190, 190, 190, 190, 190, 190, 104, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 232, 47, 42, 212, 246, 246, 246, 246, 246, 246, 145, 2, 33, 169, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 141, 8, 105, 107, 107, 107, 107, 107, 146, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 200, 153, 8, 97, 240, + 246, 246, 246, 244, 189, 17, 3, 82, 188, 190, 190, 190, 190, 190, 176, 10, + 59, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 190, 0, 114, 244, 246, 246, 246, 245, 138, + 6, 68, 171, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 135, 9, 107, 107, 107, 107, 107, 107, 146, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 205, 161, 7, 93, 239, 246, 246, 246, 246, 219, 113, 6, 56, 190, 190, 190, + 190, 190, 91, 4, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 96, 15, 204, 244, + 246, 246, 133, 0, 97, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 68, 9, 107, 107, 107, 107, 107, 107, + 146, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 200, 147, 0, 82, 242, 246, 246, 246, 246, 246, 163, + 110, 206, 190, 190, 190, 174, 14, 77, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 227, 18, 27, 179, 212, 169, 1, 65, 189, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 68, 49, 107, 107, + 107, 107, 107, 107, 146, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 201, 95, 0, 75, 234, 246, + 246, 246, 246, 246, 246, 236, 194, 190, 190, 123, 0, 201, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 164, 7, 65, 185, 168, 92, 179, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 68, 50, 107, 107, 107, 107, 107, 107, 146, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 192, + 157, 14, 67, 227, 246, 246, 246, 246, 246, 246, 211, 190, 190, 59, 73, 253, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 5, 67, 189, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 185, 18, 50, 107, 107, 107, 107, 107, 107, 146, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 173, 18, 15, 151, 246, 246, 246, 246, 246, 211, 190, + 150, 5, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, + 0, 126, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 184, 0, 75, 107, 107, 107, 107, 107, 107, + 177, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 165, 42, 0, 168, 246, 246, + 246, 246, 211, 187, 50, 17, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 249, 97, 5, 118, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 184, 0, 92, 107, 107, + 107, 107, 107, 124, 188, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 209, + 209, 234, 246, 246, 246, 235, 193, 80, 0, 161, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 228, 37, 2, 116, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 184, + 0, 92, 107, 107, 107, 107, 107, 139, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 193, 216, 246, 246, 246, 231, 199, 132, 8, 87, 247, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 50, 1, + 105, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 164, 0, 92, 107, 107, 107, 107, 107, 159, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 191, 191, 191, 190, 127, 1, 98, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 234, 52, 2, 100, 188, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 151, 0, 92, 107, 107, 107, 107, 107, 159, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 186, 36, 97, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 236, 130, 0, 58, 173, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 151, 0, 92, 107, 107, + 107, 107, 108, 181, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 102, 0, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 152, 27, 29, + 153, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 151, + 0, 92, 107, 107, 107, 107, 109, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 197, 155, 6, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 183, 40, 5, 115, 182, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 155, 0, 92, 107, 107, 107, 107, 107, 164, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 184, 157, 9, 32, 226, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 229, 74, 0, 51, 154, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 184, 0, 92, 107, 107, 107, 107, 107, 159, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 158, 58, 0, 99, + 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 132, 21, 8, + 133, 186, 190, 190, 190, 190, 190, 190, 190, 190, 190, 138, 0, 92, 107, 107, + 107, 107, 107, 159, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 162, + 12, 0, 114, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 207, 78, 8, 34, 97, 171, 190, 190, 190, 190, 190, 190, 190, 110, + 13, 99, 107, 107, 107, 107, 111, 174, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 180, 47, 1, 120, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 207, 86, 0, 10, 79, 165, 190, 190, + 190, 190, 190, 139, 86, 122, 107, 107, 107, 112, 159, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 59, 21, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 216, 100, + 11, 19, 107, 176, 190, 190, 190, 190, 190, 186, 157, 157, 157, 176, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 65, 1, 143, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 223, 63, 3, 17, 101, 176, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 169, 44, 6, 143, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 64, 0, 17, 90, 149, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 191, 129, 23, + 0, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 202, 122, 25, 0, 19, 78, 143, 186, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 171, + 136, 39, 0, 67, 227, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 235, 181, 101, 27, 0, 32, 96, 137, 167, 167, + 169, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 160, 96, 27, 14, 19, 74, 191, 251, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 190, 102, + 60, 0, 0, 0, 3, 48, 85, 119, 187, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 157, 98, 4, 0, 90, 170, 230, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 254, 254, 230, 158, 92, 54, 0, 0, 0, 0, 0, + 49, 71, 71, 71, 42, 0, 0, 43, 75, 191, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 222, + 222, 212, 198, 164, 127, 127, 127, 127, 127, 187, 222, 244, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 245, 191, 191, 187, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 147, 174, 222, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, + 246, 245, 222, 139, 59, 26, 8, 23, 23, 48, 106, 93, 93, 93, 93, 93, + 93, 93, 93, 56, 23, 5, 22, 25, 64, 119, 177, 222, 253, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 240, 176, 101, 44, 0, 0, 49, 107, 157, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 141, 140, 122, 70, 49, 0, 0, + 61, 102, 181, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 249, 144, 16, 9, 77, 117, 177, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 134, 103, 46, 0, 7, 123, 249, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 246, 153, 55, 3, 39, 167, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 185, 146, 61, 7, 40, 159, 240, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 170, 45, 0, 28, 79, 104, + 136, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 185, 192, 205, 206, + 175, 42, 0, 53, 233, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 153, 37, 1, 37, + 84, 104, 104, 79, 46, 125, 178, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 163, 0, 152, 240, 240, 229, 119, 20, 1, 116, 245, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 74, + 0, 66, 92, 104, 104, 104, 104, 70, 0, 58, 138, 180, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 195, 108, 4, 229, 240, 240, 240, 228, 161, 66, 9, 32, 153, + 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 243, 68, 0, 81, 185, 118, 104, 104, 104, 104, 104, 32, 0, 60, 131, + 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 188, 226, 29, 76, 240, 240, 240, 240, 239, 186, + 186, 157, 49, 0, 43, 190, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 237, 58, 15, 124, 186, 186, 127, 104, 104, 104, 104, 104, + 96, 22, 9, 84, 153, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 212, 217, 5, 158, 240, 240, + 240, 231, 79, 34, 186, 186, 186, 139, 49, 0, 96, 234, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 235, 53, 9, 151, 186, 186, 186, 179, 112, + 104, 104, 104, 104, 104, 97, 18, 12, 102, 176, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 235, 154, + 6, 198, 240, 240, 240, 147, 0, 136, 186, 186, 186, 186, 183, 89, 11, 21, + 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 50, 19, 138, 186, 186, + 186, 186, 186, 172, 120, 104, 104, 104, 104, 104, 77, 5, 29, 120, 185, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 198, 238, 82, 47, 240, 240, 240, 211, 13, 51, 184, 186, 186, 186, 186, + 186, 186, 148, 17, 14, 185, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 5, + 137, 186, 186, 186, 186, 186, 186, 186, 171, 127, 104, 104, 104, 104, 104, 64, + 0, 59, 145, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 202, 240, 60, 139, 240, 240, 240, 143, 6, 150, 186, + 186, 186, 186, 186, 186, 186, 186, 184, 63, 0, 90, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 154, 0, 110, 186, 186, 186, 186, 186, 186, 186, 186, 186, 173, 111, 104, + 104, 104, 104, 102, 33, 7, 94, 168, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 215, 210, 6, 152, 240, 240, 240, + 74, 62, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 181, 72, 0, 85, + 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 221, 13, 60, 178, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 154, 104, 104, 104, 104, 104, 84, 3, 47, 121, 179, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 190, 240, 205, 0, + 232, 240, 240, 225, 17, 96, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 182, 75, 0, 76, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 216, 45, 19, 184, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 132, 104, 104, 104, 104, 104, 33, 13, 102, + 170, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 211, 240, 113, 0, 232, 240, 240, 196, 0, 143, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 111, 0, 80, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 34, 4, 114, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 182, 109, 104, 104, 104, + 104, 86, 3, 44, 137, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 211, 240, 65, 76, 239, 240, 240, 114, 29, 178, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 183, 91, 5, 140, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 234, 39, 1, + 114, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 162, 104, 104, 104, 104, 104, 56, 4, 88, 162, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 219, 238, 20, 122, 240, 240, 238, 33, + 57, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 38, 0, 140, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 115, 5, 122, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 118, 104, 104, 104, 104, 90, 12, 17, 111, 178, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 232, 167, 0, 179, + 240, 240, 181, 0, 128, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 174, 92, 0, 123, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 228, 8, 68, 186, 186, 186, 89, 158, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 140, 104, 104, 104, 104, 104, 78, + 0, 64, 129, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 198, + 239, 83, 29, 233, 240, 240, 97, 13, 180, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 185, 101, 1, 166, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 253, 101, 20, 172, 186, 186, 186, 5, 18, + 106, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 184, 116, 104, + 104, 104, 104, 99, 31, 16, 100, 154, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 215, 232, 44, 105, 240, 240, 233, 19, 70, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 176, + 51, 16, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 0, 97, 186, 186, + 186, 186, 172, 41, 0, 91, 171, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 170, 106, 104, 104, 104, 104, 71, 0, 63, 112, 181, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 233, 220, 0, 186, 240, 240, 141, 0, 134, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 151, 16, 22, 236, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 116, + 8, 179, 186, 186, 186, 186, 186, 174, 79, 3, 62, 168, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 148, 104, 104, 104, 104, 103, 39, 11, 99, + 156, 182, 186, 186, 186, 186, 186, 186, 186, 186, 190, 240, 136, 11, 222, 240, + 240, 91, 46, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 153, 9, 50, 248, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 44, 65, 186, 186, 186, 186, 186, 186, 186, 186, 108, 1, 33, + 166, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 184, 123, 104, 104, 104, + 104, 88, 5, 40, 103, 152, 185, 186, 186, 186, 186, 186, 186, 186, 209, 240, + 89, 72, 240, 240, 238, 46, 109, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 104, 0, + 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 129, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 140, 28, 24, 116, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 167, 105, 104, 104, 104, 104, 40, 0, 84, 104, 166, 186, 186, 186, 186, 186, + 186, 186, 229, 200, 11, 134, 240, 240, 168, 0, 117, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 178, 32, 32, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 8, 191, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 165, 45, 4, 77, 175, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 138, 104, 104, 104, 104, 95, 16, 33, 104, 111, 172, + 186, 186, 186, 186, 186, 186, 229, 165, 10, 205, 240, 240, 86, 18, 179, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 180, 173, 173, 173, 184, 149, 4, 94, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 48, + 210, 208, 205, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 89, 1, 44, + 171, 186, 186, 186, 186, 186, 186, 186, 186, 171, 112, 104, 104, 104, 104, 62, + 3, 82, 104, 138, 186, 186, 186, 186, 186, 186, 229, 86, 22, 240, 240, 240, + 7, 84, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 185, 128, 43, 97, 104, 104, 104, 135, 177, 94, 0, 138, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 57, 78, 240, 240, 240, 226, 194, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 101, 0, 6, 129, 186, 186, 186, 186, 186, 186, 186, 186, 164, 105, + 104, 104, 104, 92, 5, 38, 104, 138, 186, 186, 186, 186, 186, 186, 207, 62, + 112, 240, 240, 183, 2, 156, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 94, 0, 23, 96, 104, 104, 104, 104, 134, + 173, 46, 19, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 243, 45, 145, 240, 240, 240, 240, 237, 211, 189, 186, + 186, 186, 186, 186, 186, 186, 185, 150, 24, 5, 119, 178, 186, 186, 186, 186, + 186, 186, 186, 151, 104, 104, 104, 104, 74, 73, 104, 138, 186, 186, 186, 186, + 186, 186, 180, 0, 163, 240, 240, 69, 32, 182, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 183, 88, 3, 58, 99, 104, 104, + 104, 104, 104, 104, 182, 178, 11, 59, 241, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 169, 0, 184, 240, 240, 240, 240, + 240, 240, 233, 218, 188, 186, 186, 186, 186, 186, 186, 186, 166, 74, 0, 56, + 182, 186, 186, 186, 186, 186, 186, 182, 154, 104, 104, 104, 104, 104, 110, 169, + 186, 186, 186, 186, 186, 186, 180, 0, 169, 197, 177, 12, 92, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 86, 1, 61, + 104, 104, 104, 104, 104, 104, 104, 104, 182, 186, 129, 1, 130, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 26, 239, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 223, 207, 193, 186, 186, 186, 186, + 186, 186, 81, 0, 51, 155, 186, 186, 186, 186, 186, 186, 185, 150, 107, 104, + 104, 112, 163, 186, 186, 139, 132, 132, 132, 132, 128, 34, 167, 186, 160, 0, + 155, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 135, 9, 42, 104, 104, 104, 104, 104, 104, 104, 104, 104, 182, 186, 186, 77, + 24, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 209, 52, 92, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 234, + 207, 194, 187, 186, 186, 186, 183, 143, 25, 6, 79, 170, 186, 186, 186, 186, + 186, 186, 179, 178, 162, 125, 85, 29, 16, 4, 31, 31, 31, 31, 18, 10, + 16, 64, 120, 166, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 183, 117, 5, 19, 101, 104, 104, 104, 104, 104, 104, 104, 104, 146, + 185, 186, 186, 170, 10, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 1, 131, 239, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 230, 223, 206, 188, 186, 186, 177, 114, 2, 18, + 110, 182, 186, 186, 186, 186, 176, 86, 18, 5, 49, 81, 150, 154, 191, 191, + 191, 191, 174, 150, 117, 57, 3, 34, 135, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 185, 171, 85, 4, 37, 100, 104, 104, 104, 104, 104, 104, + 104, 104, 138, 181, 186, 186, 186, 186, 90, 17, 226, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 170, 41, 201, 216, 237, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 223, 214, + 198, 186, 145, 58, 0, 33, 114, 184, 186, 172, 41, 0, 89, 175, 191, 189, + 117, 63, 63, 63, 63, 63, 63, 63, 63, 113, 131, 73, 1, 27, 166, 186, + 186, 186, 186, 186, 186, 186, 165, 141, 127, 67, 1, 40, 104, 104, 104, 104, + 104, 104, 104, 104, 105, 144, 186, 186, 186, 186, 186, 186, 168, 13, 119, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 31, 187, 186, + 198, 226, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 239, 219, 215, 191, 148, 58, 0, 182, 184, 60, 3, 107, + 185, 104, 17, 15, 0, 33, 103, 103, 103, 103, 103, 103, 42, 9, 8, 69, + 104, 18, 9, 80, 176, 186, 186, 178, 171, 134, 104, 104, 62, 2, 46, 102, + 104, 104, 104, 104, 104, 104, 104, 119, 162, 186, 186, 186, 186, 186, 186, 186, + 186, 85, 39, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 129, 30, 186, 186, 186, 189, 209, 237, 239, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 234, 199, 180, 147, 185, + 149, 0, 91, 192, 72, 3, 78, 138, 151, 185, 191, 191, 191, 191, 191, 191, + 191, 163, 76, 5, 36, 152, 88, 1, 47, 145, 160, 112, 104, 104, 98, 48, + 2, 47, 103, 104, 104, 104, 104, 104, 104, 104, 119, 168, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 122, 0, 200, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 71, 51, 186, 186, 179, 61, 128, 186, 202, 225, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 234, 188, 186, 186, 58, 43, 205, 109, 0, 119, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 168, 25, 1, 108, 123, 17, 8, 81, 104, + 104, 104, 28, 0, 52, 104, 104, 104, 104, 104, 104, 104, 104, 144, 180, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 170, 14, 142, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 32, 102, 186, 186, 178, 32, 5, 14, + 79, 139, 181, 211, 233, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 189, 186, 138, 3, 134, 185, 25, 65, 187, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 168, 74, 0, 51, + 148, 22, 2, 78, 104, 104, 30, 56, 103, 104, 104, 104, 104, 104, 104, 120, + 171, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 63, 51, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 0, 160, 186, 186, + 186, 186, 145, 78, 13, 5, 22, 37, 86, 170, 214, 233, 239, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 189, 186, 45, 38, 189, 110, 2, + 161, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 190, 89, 4, 48, 118, 13, 19, 95, 104, 104, 104, 104, 104, 104, 104, + 104, 107, 147, 184, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 123, 8, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, + 0, 175, 186, 186, 186, 186, 186, 186, 186, 162, 125, 95, 19, 0, 0, 33, + 74, 159, 168, 168, 175, 240, 240, 240, 240, 240, 240, 240, 234, 188, 139, 1, + 131, 191, 25, 59, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 128, 17, 22, 70, 1, 55, 104, 104, 104, + 104, 104, 104, 104, 126, 171, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 165, 6, 169, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 227, 0, 175, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 176, 172, 149, 102, 49, 32, 32, 24, 1, 17, 17, 17, 17, 17, 17, 206, + 200, 186, 77, 21, 174, 132, 4, 138, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 159, 22, 19, 39, + 4, 97, 104, 104, 105, 129, 154, 179, 183, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 49, 100, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 227, 0, 175, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 176, 149, 149, 160, 169, + 169, 169, 169, 188, 186, 174, 25, 70, 190, 64, 20, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 124, 2, 8, 0, 31, 110, 139, 156, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 85, + 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 0, 175, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 158, 0, 135, 184, 0, 91, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 119, 2, 0, 0, 173, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 154, 0, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, + 0, 135, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 158, 0, 187, + 143, 0, 160, 191, 191, 191, 191, 191, 191, 191, 191, 121, 31, 13, 13, 13, + 19, 106, 188, 191, 191, 191, 191, 191, 191, 191, 191, 116, 0, 0, 58, 189, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 162, 9, 156, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 239, 30, 102, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 160, 0, 187, 109, 39, 186, 191, 191, 191, 191, 191, 191, 191, 139, 3, + 82, 165, 205, 181, 64, 4, 81, 188, 191, 191, 191, 191, 191, 191, 191, 184, + 31, 0, 10, 173, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 197, 55, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 71, 102, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 160, 0, 187, 109, 49, 191, 191, 191, 191, 191, 191, + 191, 191, 57, 24, 234, 255, 255, 255, 255, 108, 0, 92, 191, 191, 191, 191, + 191, 191, 191, 191, 89, 17, 10, 105, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 197, + 123, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 35, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 118, 0, 187, 109, 49, 191, 191, + 191, 191, 191, 191, 191, 191, 57, 128, 255, 255, 255, 255, 255, 249, 130, 4, + 143, 191, 191, 191, 191, 191, 191, 191, 126, 0, 41, 44, 184, 195, 195, 195, + 189, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 125, 25, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 170, 28, 183, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 86, 57, 190, + 109, 49, 191, 191, 191, 191, 191, 191, 191, 191, 57, 134, 255, 255, 255, 255, + 255, 255, 235, 33, 48, 188, 191, 191, 191, 191, 191, 191, 187, 0, 102, 0, + 196, 240, 240, 240, 228, 198, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 191, 0, 213, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 0, 144, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 86, 22, 188, 109, 15, 173, 191, 191, 191, 191, 191, 191, 191, 57, 134, + 255, 255, 255, 255, 255, 255, 255, 192, 2, 153, 191, 191, 191, 191, 191, 191, + 188, 21, 79, 23, 39, 75, 75, 111, 165, 191, 217, 187, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 185, 0, 182, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 249, 13, 103, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 153, 0, 173, 179, 0, 165, 191, 191, 191, 191, 191, + 191, 191, 57, 79, 254, 255, 255, 255, 255, 255, 255, 255, 7, 153, 191, 191, + 191, 191, 191, 191, 191, 70, 92, 75, 69, 134, 83, 44, 34, 7, 15, 55, + 81, 148, 151, 172, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 185, 18, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 73, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 170, 20, 80, 184, 0, 133, 191, + 191, 191, 191, 191, 191, 191, 118, 19, 225, 255, 255, 255, 255, 255, 255, 249, + 7, 153, 191, 191, 191, 191, 191, 191, 191, 70, 92, 75, 124, 240, 240, 240, + 229, 195, 168, 105, 39, 15, 9, 21, 93, 151, 175, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 86, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 114, 30, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 96, 12, + 164, 46, 91, 191, 191, 191, 191, 191, 191, 191, 172, 10, 92, 252, 255, 255, + 255, 255, 255, 132, 0, 153, 191, 191, 191, 191, 191, 191, 188, 21, 92, 75, + 124, 240, 240, 240, 240, 240, 240, 240, 240, 240, 210, 109, 41, 0, 6, 57, + 70, 127, 127, 176, 186, 186, 186, 186, 186, 71, 114, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 207, 0, 190, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 185, 3, 141, 81, 18, 180, 191, 191, 191, 191, 191, 191, 191, 99, + 0, 88, 225, 254, 255, 255, 160, 28, 76, 188, 191, 191, 191, 191, 191, 191, + 187, 0, 158, 61, 7, 14, 65, 176, 240, 240, 240, 240, 240, 240, 240, 240, + 233, 225, 144, 120, 49, 45, 0, 20, 186, 186, 186, 186, 186, 71, 57, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 0, 205, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 8, 75, 145, 1, 100, 191, 191, 191, 191, + 191, 191, 191, 186, 102, 12, 18, 46, 46, 46, 5, 38, 174, 191, 191, 191, + 191, 191, 191, 191, 187, 0, 162, 60, 99, 128, 51, 0, 65, 140, 228, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 239, 195, 188, 204, 189, 186, 186, + 186, 130, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 18, 131, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 100, 4, 169, 48, 18, + 157, 191, 191, 191, 191, 191, 191, 191, 191, 179, 132, 132, 132, 132, 140, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 135, 0, 158, 41, 96, 205, 212, 164, + 76, 11, 21, 119, 219, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 227, 209, 186, 144, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 57, 91, 192, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 171, + 20, 43, 168, 11, 54, 181, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 112, 43, 175, 0, + 110, 186, 190, 217, 240, 222, 110, 22, 9, 115, 211, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 239, 221, 144, 14, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 138, 9, 162, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 99, 0, 132, 122, 1, 78, 185, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 188, + 49, 46, 115, 3, 169, 186, 186, 186, 195, 222, 237, 217, 99, 14, 17, 43, + 124, 227, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 239, 161, 13, 248, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 0, 130, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 184, 46, 67, 191, 90, 0, 60, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 131, 0, 97, 76, 55, 186, 186, 186, 186, 186, 186, 190, 214, + 240, 226, 166, 77, 12, 20, 118, 219, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 164, 0, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, + 40, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 212, 216, 216, 130, 7, 143, + 189, 100, 2, 97, 177, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 162, 9, 46, 175, 22, 96, 186, 186, 186, 186, + 186, 186, 186, 186, 188, 200, 217, 235, 188, 76, 23, 9, 114, 211, 240, 240, + 240, 240, 240, 240, 240, 204, 28, 170, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 144, 5, 157, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 190, 228, 240, 204, + 128, 31, 6, 32, 178, 191, 101, 2, 39, 173, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 131, 8, 21, 157, 110, 6, 172, + 199, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 196, 215, 229, 214, 127, + 11, 16, 97, 172, 234, 240, 240, 240, 238, 197, 30, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 238, 30, 99, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 190, 214, + 240, 228, 93, 1, 2, 101, 181, 0, 40, 175, 191, 112, 0, 33, 172, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 126, 5, 46, 170, + 195, 0, 0, 75, 230, 210, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 160, 110, 46, 0, 48, 152, 218, 236, 208, 186, 30, 170, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 40, 181, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 195, 230, 235, 163, 16, 17, 101, 176, 185, 22, 11, 2, 33, 173, 190, + 163, 30, 6, 85, 152, 189, 191, 191, 191, 191, 191, 191, 191, 191, 166, 85, + 2, 29, 170, 203, 25, 52, 93, 0, 68, 226, 204, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 183, 114, 37, 18, 8, 50, + 133, 131, 4, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 187, 0, 98, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 214, 226, 107, 37, 5, 32, 192, 240, 183, 14, 17, 167, + 109, 3, 61, 168, 191, 175, 108, 18, 0, 32, 90, 150, 175, 186, 191, 191, + 182, 116, 12, 18, 107, 175, 182, 73, 1, 184, 236, 110, 1, 62, 184, 214, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 169, 130, 45, 3, 12, 13, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 60, 13, 168, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 188, 211, 143, 40, 0, 77, 191, 240, 240, 175, + 13, 74, 202, 216, 186, 118, 1, 25, 168, 191, 191, 183, 134, 64, 36, 0, + 0, 39, 56, 56, 23, 0, 57, 182, 191, 179, 53, 0, 0, 120, 240, 240, + 164, 20, 12, 174, 200, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 142, 74, 0, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 17, 78, 183, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 196, 169, 32, 10, 87, 197, 238, + 240, 240, 169, 6, 46, 236, 226, 186, 186, 186, 123, 7, 23, 117, 191, 191, + 191, 191, 187, 182, 120, 110, 110, 110, 110, 140, 187, 191, 178, 47, 0, 111, + 100, 2, 151, 240, 240, 200, 43, 5, 115, 195, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 102, 12, 241, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 0, + 108, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 171, 54, 5, 53, + 171, 240, 240, 240, 240, 160, 9, 72, 215, 222, 189, 186, 186, 186, 186, 158, + 36, 2, 54, 109, 145, 151, 152, 188, 191, 191, 191, 191, 191, 191, 181, 136, + 22, 17, 109, 197, 220, 48, 25, 197, 240, 240, 232, 91, 0, 76, 197, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 71, 74, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 247, 51, 8, 155, 186, 186, 186, 186, 186, 186, 186, 186, 193, 133, + 27, 0, 133, 240, 240, 240, 240, 240, 155, 5, 93, 230, 201, 186, 186, 186, + 186, 186, 186, 186, 172, 98, 32, 0, 10, 30, 30, 46, 117, 127, 127, 127, + 113, 55, 20, 0, 42, 153, 186, 186, 214, 201, 11, 47, 232, 240, 240, 238, + 113, 12, 69, 196, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 185, 47, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 216, 9, 73, 186, 186, 186, 186, 186, 186, + 186, 159, 107, 3, 52, 203, 239, 240, 240, 240, 226, 67, 2, 106, 218, 188, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 160, 34, 8, 60, 60, 60, 35, + 23, 39, 39, 39, 39, 67, 108, 141, 183, 186, 186, 186, 186, 205, 181, 15, + 67, 226, 240, 240, 240, 184, 16, 62, 177, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 185, 0, 172, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 11, 178, 186, + 186, 186, 186, 160, 46, 4, 24, 134, 235, 240, 240, 240, 240, 219, 60, 9, + 104, 192, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 142, 17, 48, + 104, 104, 104, 104, 110, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 212, 184, 18, 60, 227, 240, 240, 240, 186, 18, 13, 164, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 124, 0, 213, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 228, 19, 60, 186, 186, 186, 118, 3, 30, 184, 240, 240, 240, 240, 240, 240, + 173, 12, 21, 181, 196, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 124, 0, 83, 104, 104, 104, 104, 110, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 208, 192, 21, 56, 223, 240, 240, 240, 193, + 21, 12, 144, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 88, 40, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 116, 16, 166, 186, 187, 56, 41, 213, 240, 240, 240, + 240, 240, 240, 167, 5, 25, 193, 189, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 58, 18, 100, 104, 104, 104, 104, 110, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 202, 170, 1, 44, + 220, 240, 240, 240, 202, 45, 2, 66, 179, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 179, 31, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 10, 86, 186, 209, 212, 222, + 240, 240, 240, 240, 240, 240, 157, 9, 30, 187, 192, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 25, 50, 104, 104, 104, 104, 104, + 113, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 187, 208, 132, 4, 66, 236, 240, 240, 240, 233, 94, 0, 61, 182, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 154, 0, 165, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 2, + 140, 212, 240, 240, 240, 240, 240, 240, 240, 153, 4, 23, 177, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 152, 7, 72, 104, + 104, 104, 104, 104, 142, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 201, 148, 0, 104, 240, 240, 240, 240, 239, 96, + 0, 61, 154, 186, 186, 186, 186, 186, 186, 186, 186, 102, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 232, 47, 41, 207, 240, 240, 240, 240, 240, 240, 141, 2, 32, 165, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 138, 8, 102, 104, 104, 104, 104, 104, 142, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 196, 149, 8, 95, 234, + 240, 240, 240, 238, 185, 16, 3, 81, 184, 186, 186, 186, 186, 186, 172, 9, + 59, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 190, 0, 111, 238, 240, 240, 240, 239, 134, + 6, 66, 167, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 132, 8, 104, 104, 104, 104, 104, 104, 142, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 200, 157, 7, 91, 234, 240, 240, 240, 240, 214, 110, 6, 55, 186, 186, 186, + 186, 186, 89, 4, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 96, 14, 200, 238, + 240, 240, 130, 0, 95, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 66, 8, 104, 104, 104, 104, 104, 104, + 142, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 195, 143, 0, 80, 236, 240, 240, 240, 240, 240, 159, + 107, 201, 186, 186, 186, 170, 14, 77, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 227, 18, 26, 175, 207, 165, 1, 63, 185, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 66, 48, 104, 104, + 104, 104, 104, 104, 142, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 197, 93, 0, 74, 228, 240, + 240, 240, 240, 240, 240, 231, 190, 186, 186, 121, 0, 201, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 164, 7, 64, 181, 165, 90, 176, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 66, 49, 104, 104, 104, 104, 104, 104, 142, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 188, + 153, 13, 66, 222, 240, 240, 240, 240, 240, 240, 206, 186, 186, 57, 73, 253, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 5, 65, 185, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 181, 18, 49, 104, 104, 104, 104, 104, 104, 142, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 169, 17, 15, 147, 240, 240, 240, 240, 240, 206, 186, + 147, 5, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, + 0, 124, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 180, 0, 73, 104, 104, 104, 104, 104, 104, + 173, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 161, 41, 0, 164, 240, 240, + 240, 240, 206, 183, 49, 17, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 249, 97, 5, 115, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 180, 0, 89, 104, 104, + 104, 104, 104, 121, 184, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 204, + 204, 228, 240, 240, 240, 229, 189, 78, 0, 161, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 228, 37, 2, 113, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 180, + 0, 89, 104, 104, 104, 104, 104, 135, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 189, 211, 240, 240, 240, 225, 194, 129, 8, 87, 247, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 50, 1, + 103, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 160, 0, 89, 104, 104, 104, 104, 104, 156, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, 186, 124, 1, 98, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 234, 52, 2, 98, 184, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 148, 0, 89, 104, 104, 104, 104, 104, 156, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 182, 35, 97, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 236, 130, 0, 57, 170, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 148, 0, 89, 104, 104, + 104, 104, 105, 177, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 100, 0, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 152, 27, 28, + 150, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 148, + 0, 89, 104, 104, 104, 104, 106, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 194, 153, 5, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 183, 40, 5, 113, 178, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 151, 0, 89, 104, 104, 104, 104, 104, 160, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 180, 157, 9, 32, 226, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 229, 74, 0, 50, 151, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 180, 0, 89, 104, 104, 104, 104, 104, 156, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 155, 57, 0, 99, + 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 132, 21, 7, + 131, 182, 186, 186, 186, 186, 186, 186, 186, 186, 186, 136, 0, 89, 104, 104, + 104, 104, 104, 156, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 159, + 12, 0, 114, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 207, 78, 8, 34, 95, 167, 186, 186, 186, 186, 186, 186, 186, 107, + 12, 96, 104, 104, 104, 104, 108, 170, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 176, 46, 1, 120, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 207, 86, 0, 9, 78, 162, 186, 186, + 186, 186, 186, 136, 84, 119, 104, 104, 104, 109, 155, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 58, 21, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 216, 100, + 11, 19, 105, 172, 186, 186, 186, 186, 186, 182, 154, 154, 154, 172, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 64, 1, 143, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 223, 63, 3, 17, 99, 172, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 166, 43, 6, 143, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 64, 0, 17, 88, 146, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 127, 23, + 0, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 202, 122, 25, 0, 19, 77, 140, 182, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 167, + 134, 39, 0, 67, 227, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 235, 181, 101, 27, 0, 32, 94, 134, 163, 163, + 165, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 156, 94, 27, 14, 19, 74, 191, 251, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 190, 102, + 60, 0, 0, 0, 3, 47, 83, 117, 183, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 154, 96, 4, 0, 90, 170, 230, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 254, 254, 230, 158, 92, 54, 0, 0, 0, 0, 0, + 48, 70, 70, 70, 41, 0, 0, 43, 75, 191, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 222, + 222, 211, 196, 164, 127, 127, 127, 127, 127, 187, 222, 244, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 245, 191, 191, 187, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 134, 154, 200, 233, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, + 240, 239, 222, 139, 59, 26, 6, 17, 17, 42, 92, 69, 69, 69, 69, 69, + 69, 69, 69, 42, 17, 3, 17, 20, 56, 113, 177, 222, 253, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 231, 147, 75, 33, 0, 0, 37, 80, 117, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 105, 104, 91, 52, 36, 0, 0, + 61, 102, 181, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 245, 120, 12, 7, 57, 87, 132, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 100, 77, 34, 0, 7, 123, 249, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 246, 146, 53, 2, 27, 124, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 138, 109, 45, 5, 40, 159, 240, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 170, 45, 0, 16, 46, 61, + 91, 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 138, 147, 163, 163, + 140, 33, 0, 53, 233, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 153, 37, 0, 21, + 49, 61, 61, 46, 27, 82, 131, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 128, 0, 129, 204, 204, 191, 93, 15, 1, 116, 245, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 74, + 0, 49, 57, 61, 61, 61, 61, 41, 0, 34, 93, 133, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 150, 91, 4, 195, 204, 204, 204, 189, 121, 49, 6, 32, 153, + 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 243, 68, 0, 61, 138, 74, 61, 61, 61, 61, 61, 19, 0, 35, 86, + 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 142, 187, 25, 65, 204, 204, 204, 204, 203, 139, + 139, 117, 37, 0, 43, 190, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 237, 58, 11, 92, 139, 139, 82, 61, 61, 61, 61, 61, + 56, 13, 5, 49, 107, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 170, 184, 4, 134, 204, 204, + 204, 196, 67, 25, 139, 139, 139, 104, 36, 0, 90, 229, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 235, 53, 7, 113, 139, 139, 139, 132, 68, + 61, 61, 61, 61, 61, 57, 10, 7, 61, 129, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 198, 130, + 5, 169, 204, 204, 204, 125, 0, 101, 139, 139, 139, 139, 136, 66, 8, 19, + 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 50, 14, 103, 139, 139, + 139, 139, 139, 126, 76, 61, 61, 61, 61, 61, 45, 3, 17, 77, 138, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 154, 202, 70, 40, 204, 204, 204, 180, 11, 38, 137, 139, 139, 139, 139, + 139, 139, 110, 12, 14, 185, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 4, + 102, 139, 139, 139, 139, 139, 139, 139, 125, 83, 61, 61, 61, 61, 61, 37, + 0, 34, 100, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 158, 204, 51, 118, 204, 204, 204, 121, 4, 112, 139, + 139, 139, 139, 139, 139, 139, 139, 138, 47, 0, 90, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 154, 0, 82, 139, 139, 139, 139, 139, 139, 139, 139, 139, 126, 68, 61, + 61, 61, 61, 60, 19, 4, 56, 121, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 174, 179, 5, 129, 204, 204, 204, + 63, 46, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 135, 54, 0, 85, + 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 221, 13, 45, 133, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 108, 61, 61, 61, 61, 61, 49, 1, 28, 77, 133, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 144, 204, 174, 0, + 197, 204, 204, 191, 14, 72, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 136, 56, 0, 76, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 206, 44, 14, 138, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 87, 61, 61, 61, 61, 61, 19, 8, 60, + 124, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 169, 204, 96, 0, 197, 204, 204, 166, 0, 107, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 83, 0, 80, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 28, 3, 85, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 135, 66, 61, 61, 61, + 61, 50, 2, 26, 92, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 169, 204, 55, 65, 203, 204, 204, 97, 21, 133, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 137, 68, 5, 140, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 221, 31, 1, + 85, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 116, 61, 61, 61, 61, 61, 33, 2, 52, 117, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 179, 202, 17, 104, 204, 204, 202, 28, + 42, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 28, 0, 140, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 111, 3, 91, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 75, 61, 61, 61, 61, 53, 7, 10, 68, 132, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 194, 142, 0, 152, + 204, 204, 153, 0, 95, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 130, 68, 0, 123, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 228, 8, 51, 139, 139, 139, 66, 118, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 95, 61, 61, 61, 61, 61, 46, + 0, 38, 85, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 153, + 203, 70, 24, 198, 204, 204, 82, 9, 134, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 138, 75, 1, 166, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 253, 101, 15, 129, 139, 139, 139, 3, 13, + 79, 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 137, 72, 61, + 61, 61, 61, 58, 18, 9, 59, 108, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 174, 197, 37, 89, 204, 204, 198, 16, 52, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 131, + 38, 16, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 0, 73, 139, 139, + 139, 139, 128, 30, 0, 68, 127, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 124, 63, 61, 61, 61, 61, 41, 0, 37, 69, 135, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 140, 195, 187, 0, 158, 204, 204, 119, 0, 100, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 113, 12, 22, 236, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, + 6, 134, 139, 139, 139, 139, 139, 130, 59, 2, 46, 125, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 103, 61, 61, 61, 61, 60, 23, 6, 58, + 110, 136, 139, 139, 139, 139, 139, 139, 139, 139, 144, 204, 115, 9, 189, 204, + 204, 77, 36, 140, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 114, 7, 50, 248, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 33, 49, 139, 139, 139, 139, 139, 139, 139, 139, 81, 1, 24, + 124, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 137, 79, 61, 61, 61, + 61, 51, 3, 23, 60, 106, 138, 139, 139, 139, 139, 139, 139, 139, 166, 204, + 75, 61, 204, 204, 202, 39, 85, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 78, 0, + 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 96, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 104, 21, 18, 87, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 121, 62, 61, 61, 61, 61, 23, 0, 49, 61, 120, 139, 139, 139, 139, 139, + 139, 139, 191, 170, 9, 113, 204, 204, 142, 0, 88, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 133, 24, 32, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 8, 172, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 123, 34, 2, 57, 131, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 94, 61, 61, 61, 61, 56, 9, 19, 61, 68, 126, + 139, 139, 139, 139, 139, 139, 191, 140, 8, 174, 204, 204, 73, 15, 134, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 134, 126, 126, 126, 137, 111, 3, 94, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 41, + 169, 165, 162, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 67, 0, 33, + 128, 139, 139, 139, 139, 139, 139, 139, 139, 125, 68, 61, 61, 61, 61, 36, + 1, 48, 61, 93, 139, 139, 139, 139, 139, 139, 191, 73, 19, 204, 204, 204, + 6, 65, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 138, 96, 32, 61, 61, 61, 61, 91, 130, 70, 0, 138, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 57, 67, 204, 204, 204, 188, 148, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 75, 0, 4, 96, 139, 139, 139, 139, 139, 139, 139, 139, 118, 62, + 61, 61, 61, 54, 3, 22, 61, 93, 139, 139, 139, 139, 139, 139, 165, 52, + 96, 204, 204, 155, 2, 120, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 70, 0, 13, 56, 61, 61, 61, 61, 90, + 129, 35, 19, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 231, 39, 123, 204, 204, 204, 204, 200, 170, 143, 139, + 139, 139, 139, 139, 139, 139, 138, 112, 17, 3, 89, 133, 139, 139, 139, 139, + 139, 139, 139, 106, 61, 61, 61, 61, 43, 43, 61, 93, 139, 139, 139, 139, + 139, 139, 135, 0, 138, 204, 204, 58, 24, 136, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 137, 65, 2, 34, 58, 61, 61, + 61, 61, 61, 61, 135, 133, 8, 59, 241, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 0, 156, 204, 204, 204, 204, + 204, 204, 195, 178, 141, 139, 139, 139, 139, 139, 139, 139, 124, 55, 0, 42, + 136, 139, 139, 139, 139, 139, 139, 135, 108, 61, 61, 61, 61, 61, 67, 123, + 139, 139, 139, 139, 139, 139, 135, 0, 131, 152, 137, 11, 69, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 64, 0, 36, + 61, 61, 61, 61, 61, 61, 61, 61, 135, 139, 96, 0, 130, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 22, 203, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 184, 164, 147, 139, 139, 139, 139, + 139, 139, 61, 0, 38, 116, 139, 139, 139, 139, 139, 139, 138, 105, 63, 61, + 61, 69, 117, 139, 139, 104, 98, 98, 98, 98, 96, 25, 125, 139, 120, 0, + 116, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 101, 7, 24, 61, 61, 61, 61, 61, 61, 61, 61, 61, 135, 139, 139, 58, + 24, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 209, 52, 78, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 197, + 164, 149, 140, 139, 139, 139, 137, 107, 18, 5, 59, 127, 139, 139, 139, 139, + 139, 139, 133, 132, 120, 92, 64, 21, 11, 4, 31, 31, 31, 31, 18, 7, + 11, 48, 89, 128, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 136, 84, 4, 11, 59, 61, 61, 61, 61, 61, 61, 61, 61, 101, + 138, 139, 139, 127, 7, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 1, 111, 203, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 192, 183, 163, 141, 139, 139, 132, 85, 2, 14, + 82, 136, 139, 139, 139, 139, 131, 65, 13, 5, 49, 81, 150, 154, 191, 191, + 191, 191, 174, 150, 117, 57, 3, 30, 115, 144, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 138, 125, 55, 2, 22, 59, 61, 61, 61, 61, 61, 61, + 61, 61, 93, 134, 139, 139, 139, 139, 67, 17, 226, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 170, 41, 165, 175, 200, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 183, 173, + 154, 139, 108, 43, 0, 24, 85, 138, 139, 128, 31, 0, 89, 175, 191, 189, + 117, 63, 63, 63, 63, 63, 63, 63, 63, 113, 131, 73, 1, 20, 124, 139, + 139, 139, 139, 139, 139, 139, 119, 96, 83, 39, 0, 23, 61, 61, 61, 61, + 61, 61, 61, 61, 62, 99, 139, 139, 139, 139, 139, 139, 125, 9, 119, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 24, 141, 139, + 154, 187, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 202, 178, 174, 146, 111, 44, 0, 136, 138, 45, 3, 107, + 185, 104, 17, 15, 0, 33, 103, 103, 103, 103, 103, 103, 42, 9, 8, 69, + 104, 18, 7, 60, 131, 139, 139, 131, 125, 89, 61, 61, 36, 1, 27, 59, + 61, 61, 61, 61, 61, 61, 61, 76, 117, 139, 139, 139, 139, 139, 139, 139, + 139, 64, 39, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 129, 22, 139, 139, 139, 142, 166, 201, 203, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 197, 155, 134, 110, 138, + 111, 0, 91, 192, 72, 3, 78, 138, 151, 185, 191, 191, 191, 191, 191, 191, + 191, 163, 76, 5, 36, 152, 88, 1, 35, 108, 114, 68, 61, 61, 58, 28, + 1, 27, 60, 61, 61, 61, 61, 61, 61, 61, 75, 121, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 91, 0, 200, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 71, 38, 139, 139, 134, 45, 96, 139, 159, 186, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 197, 142, 139, 139, 43, 43, 205, 109, 0, 119, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 168, 25, 1, 108, 123, 17, 6, 50, 61, + 61, 61, 16, 0, 30, 61, 61, 61, 61, 61, 61, 61, 61, 99, 133, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 127, 11, 142, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 32, 76, 139, 139, 133, 23, 3, 10, + 59, 105, 139, 169, 195, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 143, 139, 103, 2, 118, 185, 25, 65, 187, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 168, 74, 0, 51, + 148, 22, 1, 46, 61, 61, 17, 32, 60, 61, 61, 61, 61, 61, 61, 76, + 125, 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 47, 51, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 0, 119, 139, 139, + 139, 139, 108, 58, 10, 4, 16, 28, 65, 140, 177, 197, 203, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 143, 139, 33, 37, 180, 110, 2, + 161, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 190, 89, 4, 48, 102, 7, 11, 55, 61, 61, 61, 61, 61, 61, 61, + 61, 64, 102, 137, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 91, 8, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, + 0, 130, 139, 139, 139, 139, 139, 139, 139, 121, 93, 71, 14, 0, 0, 24, + 61, 132, 142, 142, 148, 204, 204, 204, 204, 204, 204, 204, 197, 142, 104, 0, + 131, 191, 25, 59, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 128, 17, 13, 41, 0, 32, 61, 61, 61, + 61, 61, 61, 61, 82, 125, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 123, 4, 169, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 227, 0, 130, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 132, 128, 111, 76, 36, 24, 24, 17, 1, 15, 15, 15, 15, 15, 15, 174, + 156, 139, 57, 21, 174, 132, 4, 138, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 159, 22, 11, 22, + 2, 57, 61, 61, 62, 84, 109, 133, 136, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 36, 100, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 227, 0, 130, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 131, 111, 111, 124, 135, + 135, 135, 135, 143, 139, 130, 19, 70, 190, 64, 20, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 124, 2, 4, 0, 18, 68, 94, 111, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 63, + 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 0, 130, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 118, 0, 135, 184, 0, 91, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 119, 2, 0, 0, 164, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 115, 0, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, + 0, 100, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 118, 0, 187, + 143, 0, 160, 191, 191, 191, 191, 191, 191, 191, 191, 121, 31, 13, 13, 13, + 19, 106, 188, 191, 191, 191, 191, 191, 191, 191, 191, 116, 0, 0, 56, 145, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 123, 9, 156, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 239, 30, 76, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 134, 0, 187, 109, 39, 186, 191, 191, 191, 191, 191, 191, 191, 139, 3, + 82, 165, 205, 181, 64, 4, 81, 188, 191, 191, 191, 191, 191, 191, 191, 184, + 31, 0, 10, 140, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 158, 55, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 71, 76, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 138, 0, 187, 109, 49, 191, 191, 191, 191, 191, 191, + 191, 191, 57, 24, 234, 255, 255, 255, 255, 108, 0, 92, 191, 191, 191, 191, + 191, 191, 191, 191, 89, 17, 10, 78, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 158, + 123, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 26, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 97, 0, 187, 109, 49, 191, 191, + 191, 191, 191, 191, 191, 191, 57, 128, 255, 255, 255, 255, 255, 249, 130, 4, + 143, 191, 191, 191, 191, 191, 191, 191, 126, 0, 41, 33, 138, 150, 150, 150, + 143, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 140, 106, 25, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 170, 21, 137, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 64, 57, 190, + 109, 49, 191, 191, 191, 191, 191, 191, 191, 191, 57, 134, 255, 255, 255, 255, + 255, 255, 235, 33, 48, 188, 191, 191, 191, 191, 191, 191, 187, 0, 102, 0, + 161, 204, 204, 204, 190, 154, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 161, 0, 213, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 0, 107, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 64, 22, 188, 109, 15, 173, 191, 191, 191, 191, 191, 191, 191, 57, 134, + 255, 255, 255, 255, 255, 255, 255, 192, 2, 153, 191, 191, 191, 191, 191, 191, + 188, 21, 79, 19, 33, 64, 64, 95, 140, 160, 176, 140, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 138, 0, 182, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 249, 13, 77, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 115, 0, 173, 179, 0, 165, 191, 191, 191, 191, 191, + 191, 191, 57, 79, 254, 255, 255, 255, 255, 255, 255, 255, 7, 153, 191, 191, + 191, 191, 191, 191, 191, 70, 89, 64, 59, 114, 70, 38, 29, 5, 12, 45, + 60, 110, 112, 129, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 138, 18, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 56, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 130, 20, 80, 184, 0, 133, 191, + 191, 191, 191, 191, 191, 191, 118, 19, 225, 255, 255, 255, 255, 255, 255, 249, + 7, 153, 191, 191, 191, 191, 191, 191, 191, 70, 89, 64, 105, 204, 204, 204, + 194, 165, 143, 89, 33, 12, 7, 16, 69, 113, 131, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 78, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 114, 30, 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 144, 93, 12, + 164, 46, 91, 191, 191, 191, 191, 191, 191, 191, 172, 10, 92, 252, 255, 255, + 255, 255, 255, 132, 0, 153, 191, 191, 191, 191, 191, 191, 188, 21, 89, 64, + 105, 204, 204, 204, 204, 204, 204, 204, 204, 204, 178, 93, 34, 0, 5, 43, + 52, 95, 95, 132, 139, 139, 139, 139, 139, 53, 114, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 207, 0, 147, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 170, 3, 141, 81, 18, 180, 191, 191, 191, 191, 191, 191, 191, 99, + 0, 88, 225, 254, 255, 255, 160, 28, 76, 188, 191, 191, 191, 191, 191, 191, + 187, 0, 158, 60, 6, 12, 55, 149, 204, 204, 204, 204, 204, 204, 204, 204, + 198, 191, 123, 97, 41, 38, 0, 15, 139, 139, 139, 139, 139, 53, 57, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 0, 176, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 142, 7, 75, 145, 1, 100, 191, 191, 191, 191, + 191, 191, 191, 186, 102, 12, 18, 46, 46, 46, 5, 38, 174, 191, 191, 191, + 191, 191, 191, 191, 187, 0, 162, 60, 83, 108, 43, 0, 55, 119, 194, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 203, 166, 157, 160, 143, 140, 139, + 139, 97, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 18, 115, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 86, 4, 169, 48, 18, + 157, 191, 191, 191, 191, 191, 191, 191, 191, 179, 132, 132, 132, 132, 140, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 135, 0, 158, 41, 71, 162, 175, 140, + 64, 9, 18, 101, 186, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 189, 166, 139, 107, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 57, 87, 150, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 18, 43, 168, 11, 54, 181, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 112, 43, 175, 0, + 82, 139, 144, 177, 204, 188, 93, 19, 8, 98, 180, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 203, 181, 107, 14, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 138, 9, 123, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 81, 0, 132, 122, 1, 78, 185, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 188, + 49, 46, 106, 2, 126, 139, 139, 139, 150, 182, 200, 185, 84, 11, 14, 36, + 106, 193, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 203, 128, 13, 248, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 0, 97, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 138, 41, 67, 191, 90, 0, 60, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 131, 0, 89, 59, 41, 139, 139, 139, 139, 139, 139, 144, 173, + 204, 192, 141, 65, 10, 17, 100, 186, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 132, 0, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, + 30, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 140, 170, 176, 176, 107, 7, 143, + 189, 100, 2, 97, 177, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 162, 9, 45, 152, 16, 72, 139, 139, 139, 139, + 139, 139, 139, 139, 142, 156, 176, 199, 160, 65, 19, 7, 96, 179, 204, 204, + 204, 204, 204, 204, 204, 162, 21, 170, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 144, 3, 117, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 143, 190, 204, 173, + 109, 26, 5, 32, 178, 191, 101, 2, 39, 173, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 131, 8, 21, 147, 86, 5, 139, + 154, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 151, 174, 191, 180, 107, + 9, 14, 83, 146, 199, 204, 204, 204, 201, 152, 22, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 238, 30, 74, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 144, 173, + 204, 194, 79, 1, 2, 86, 153, 0, 40, 175, 191, 112, 0, 33, 172, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 126, 5, 46, 165, + 165, 0, 0, 64, 195, 168, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 123, 86, 34, 0, 41, 129, 185, 200, 165, 139, 22, 170, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 30, 135, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 150, 193, 200, 138, 14, 15, 86, 150, 157, 19, 8, 2, 33, 173, 190, + 163, 30, 6, 85, 152, 189, 191, 191, 191, 191, 191, 191, 191, 191, 166, 85, + 2, 29, 170, 179, 21, 44, 79, 0, 58, 192, 161, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 137, 85, 28, 13, 7, 38, + 99, 98, 4, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 187, 0, 73, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 173, 192, 91, 31, 5, 27, 163, 204, 155, 12, 14, 136, + 81, 2, 61, 168, 191, 175, 108, 18, 0, 32, 90, 150, 175, 186, 191, 191, + 182, 116, 12, 18, 107, 174, 154, 61, 1, 156, 201, 93, 1, 52, 156, 173, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 126, 97, 33, 2, 9, 13, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 60, 9, 125, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 142, 169, 121, 34, 0, 65, 162, 204, 204, 148, + 11, 63, 172, 175, 139, 88, 1, 25, 168, 191, 191, 183, 134, 64, 36, 0, + 0, 39, 56, 56, 23, 0, 57, 182, 191, 149, 39, 0, 0, 102, 204, 204, + 139, 17, 11, 147, 156, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 106, 55, 0, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 17, 58, 137, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 151, 139, 27, 8, 74, 168, 202, + 204, 204, 143, 5, 39, 200, 188, 139, 139, 139, 91, 5, 23, 117, 191, 191, + 191, 191, 187, 182, 120, 110, 110, 110, 110, 140, 187, 191, 169, 36, 0, 93, + 85, 2, 129, 204, 204, 170, 37, 4, 96, 153, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 76, 11, 234, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 0, + 80, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 128, 42, 4, 45, + 145, 204, 204, 204, 204, 136, 8, 61, 183, 182, 143, 139, 139, 139, 139, 118, + 27, 2, 54, 106, 128, 131, 132, 187, 191, 191, 191, 191, 191, 191, 181, 136, + 19, 12, 81, 153, 187, 40, 21, 168, 204, 204, 197, 77, 0, 62, 154, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 53, 58, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 247, 51, 6, 116, 139, 139, 139, 139, 139, 139, 139, 139, 148, 102, + 20, 0, 113, 204, 204, 204, 204, 204, 132, 4, 79, 193, 157, 139, 139, 139, + 139, 139, 139, 139, 128, 73, 21, 0, 6, 17, 17, 42, 117, 127, 127, 127, + 113, 55, 20, 0, 31, 114, 139, 139, 172, 171, 10, 40, 197, 204, 204, 203, + 96, 10, 57, 154, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 138, 35, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 216, 9, 55, 139, 139, 139, 139, 139, 139, + 139, 124, 89, 2, 44, 173, 203, 204, 204, 204, 192, 57, 2, 89, 179, 141, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 114, 20, 4, 35, 35, 35, 21, + 14, 29, 29, 29, 29, 50, 81, 105, 137, 139, 139, 139, 140, 162, 153, 13, + 56, 192, 204, 204, 204, 156, 13, 51, 140, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 138, 0, 172, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 8, 133, 139, + 139, 139, 139, 119, 35, 3, 20, 114, 199, 204, 204, 204, 204, 186, 51, 8, + 86, 147, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 99, 9, 28, + 61, 61, 61, 61, 67, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 170, 156, 15, 51, 193, 204, 204, 204, 158, 15, 11, 134, 140, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 93, 0, 213, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 228, 19, 45, 139, 139, 139, 88, 2, 25, 156, 204, 204, 204, 204, 204, 204, + 147, 10, 17, 150, 151, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 88, 0, 49, 61, 61, 61, 61, 67, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 165, 163, 17, 47, 189, 204, 204, 204, 164, + 18, 10, 113, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 66, 40, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 116, 12, 124, 139, 140, 44, 35, 181, 204, 204, 204, + 204, 204, 204, 142, 4, 21, 161, 143, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 38, 11, 58, 61, 61, 61, 61, 67, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 158, 144, 1, 38, + 187, 204, 204, 204, 171, 39, 2, 49, 134, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 133, 23, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 10, 64, 139, 166, 180, 189, + 204, 204, 204, 204, 204, 204, 134, 7, 25, 154, 146, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 18, 29, 61, 61, 61, 61, 61, + 70, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 140, 166, 112, 3, 56, 201, 204, 204, 204, 198, 79, 0, 46, 137, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 115, 0, 165, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 1, + 104, 170, 204, 204, 204, 204, 204, 204, 204, 130, 4, 17, 138, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 113, 5, 42, 61, + 61, 61, 61, 61, 97, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 158, 125, 0, 89, 204, 204, 204, 204, 203, 82, + 0, 48, 115, 139, 139, 139, 139, 139, 139, 139, 139, 76, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 232, 47, 31, 167, 204, 204, 204, 204, 204, 204, 120, 2, 24, 123, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 103, 5, 60, 61, 61, 61, 61, 61, 97, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 151, 125, 7, 81, 199, + 204, 204, 204, 202, 157, 14, 2, 60, 137, 139, 139, 139, 139, 139, 128, 7, + 59, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 190, 0, 91, 202, 204, 204, 204, 203, 114, + 5, 49, 125, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 98, 5, 61, 61, 61, 61, 61, 61, 97, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 156, 133, 6, 77, 198, 204, 204, 204, 204, 182, 94, 5, 41, 139, 139, 139, + 139, 139, 66, 4, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 96, 13, 168, 202, + 204, 204, 110, 0, 71, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 49, 5, 61, 61, 61, 61, 61, 61, + 97, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 150, 122, 0, 68, 200, 204, 204, 204, 204, 204, 135, + 90, 157, 139, 139, 139, 127, 10, 77, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 227, 18, 19, 136, 165, 131, 1, 47, 138, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 49, 28, 61, 61, + 61, 61, 61, 61, 97, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 153, 77, 0, 62, 194, 204, + 204, 204, 204, 204, 204, 193, 144, 139, 139, 90, 0, 201, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 164, 7, 48, 135, 123, 67, 131, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 49, 28, 61, 61, 61, 61, 61, 61, 97, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 143, + 123, 11, 56, 188, 204, 204, 204, 204, 204, 204, 163, 139, 139, 43, 73, 253, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 5, 49, 138, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 135, 13, 28, 61, 61, 61, 61, 61, 61, 97, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 137, 14, 13, 125, 204, 204, 204, 204, 204, 163, 139, + 110, 4, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, + 0, 92, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 134, 0, 43, 61, 61, 61, 61, 61, 61, + 127, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 124, 35, 0, 139, 204, 204, + 204, 204, 163, 137, 36, 17, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 249, 97, 4, 86, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 134, 0, 52, 61, 61, + 61, 61, 61, 77, 137, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 163, + 173, 194, 204, 204, 204, 191, 142, 58, 0, 161, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 228, 37, 1, 84, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 134, + 0, 52, 61, 61, 61, 61, 61, 91, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 143, 169, 204, 204, 204, 186, 149, 96, 6, 87, 247, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 50, 0, + 77, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 116, 0, 52, 61, 61, 61, 61, 61, 110, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 140, 140, 140, 139, 92, 1, 98, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 234, 52, 1, 73, 137, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 104, 0, 52, 61, 61, 61, 61, 61, 110, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 136, 26, 97, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 236, 130, 0, 42, 127, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 104, 0, 52, 61, 61, + 61, 61, 62, 131, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 75, 0, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 152, 27, 21, + 112, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 104, + 0, 52, 61, 61, 61, 61, 63, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 152, 136, 5, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 183, 40, 4, 84, 133, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 107, 0, 52, 61, 61, 61, 61, 61, 114, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 134, 150, 9, 32, 226, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 229, 74, 0, 37, 113, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 134, 0, 52, 61, 61, 61, 61, 61, 110, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 116, 43, 0, 99, + 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 132, 21, 5, + 107, 136, 139, 139, 139, 139, 139, 139, 139, 139, 139, 101, 0, 52, 61, 61, + 61, 61, 61, 110, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 119, + 9, 0, 114, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 207, 78, 8, 25, 71, 125, 139, 139, 139, 139, 139, 139, 139, 80, + 7, 56, 61, 61, 61, 61, 65, 124, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 132, 34, 1, 120, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 207, 86, 0, 7, 58, 121, 139, 139, + 139, 139, 139, 101, 60, 75, 61, 61, 61, 66, 110, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 43, 21, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 216, 100, + 11, 14, 78, 129, 139, 139, 139, 139, 139, 136, 108, 108, 108, 126, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 47, 1, 143, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 223, 63, 3, 13, 74, 128, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 124, 32, 6, 143, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 64, 0, 13, 66, 109, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 141, 102, 17, + 0, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 202, 122, 25, 0, 14, 57, 105, 136, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 125, + 109, 29, 0, 67, 227, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 235, 181, 101, 27, 0, 24, 70, 100, 122, 122, + 123, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 117, 70, 20, 10, 19, 74, 191, 251, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 190, 102, + 60, 0, 0, 0, 2, 35, 62, 87, 137, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 115, 72, 3, 0, 90, 170, 230, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 254, 254, 230, 158, 92, 54, 0, 0, 0, 0, 0, + 36, 52, 52, 52, 31, 0, 0, 43, 75, 191, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 222, + 222, 204, 179, 154, 127, 127, 127, 127, 127, 187, 222, 244, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'choose' of size 524x49x1x3 and type 'const unsigned char' */ +const unsigned char data_choose[] = { + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 20, 19, 14, 14, 15, + 14, 14, 14, 27, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 20, 19, + 14, 14, 14, 14, 15, 18, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 17, 17, 14, 14, 14, 14, 14, 16, 20, 26, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 15, 15, 15, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 19, 15, 19, 24, 27, 24, 22, 22, 29, 28, 27, 27, + 25, 21, 21, 21, 24, 27, 35, 36, 27, 14, 14, 14, 14, 14, 14, 52, + 44, 37, 21, 23, 26, 19, 28, 25, 14, 14, 16, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 36, 55, 38, 31, 35, 37, + 41, 44, 29, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 34, + 49, 31, 20, 24, 29, 27, 32, 40, 24, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 29, 17, 22, 27, 34, 40, 47, 55, 20, 14, 14, 14, + 16, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 15, 15, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 32, 53, + 16, 14, 14, 14, 14, 17, 21, 25, 24, 24, 21, 21, 19, 17, 16, 17, + 14, 18, 27, 32, 21, 14, 14, 14, 14, 14, 14, 43, 43, 33, 16, 20, + 18, 14, 27, 24, 14, 14, 21, 16, 16, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 18, 14, 14, 14, 14, 24, 49, 33, 24, 26, 30, 37, 47, 33, 14, + 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 45, 57, 31, 14, 18, + 18, 18, 26, 37, 23, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 22, 14, 17, 21, 27, 33, 41, 47, 37, 15, 14, 14, 18, 14, 14, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 14, 15, 14, 14, 14, 14, 47, 65, 36, 15, 14, 14, 14, + 14, 15, 18, 23, 24, 26, 25, 23, 20, 19, 16, 16, 15, 14, 19, 28, + 14, 14, 16, 14, 14, 14, 14, 69, 36, 32, 14, 14, 14, 21, 17, 20, + 14, 14, 15, 20, 16, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 15, + 16, 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 15, 14, 15, 15, 18, + 19, 18, 14, 14, 19, 14, 14, 14, 14, 18, 14, 14, 16, 14, 14, 15, + 16, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, + 15, 16, 15, 14, 14, 14, 14, 15, 15, 15, 15, 15, 14, 16, 14, 14, + 14, 15, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 14, 14, 14, 14, + 14, 14, 14, 15, 18, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 16, 16, 20, 16, 15, 15, 14, 14, 15, 17, 14, 15, 15, 16, + 16, 14, 14, 14, 14, 15, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 15, 18, 15, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 15, 16, 31, 15, 15, 15, 15, 15, + 14, 14, 14, 14, 14, 15, 14, 14, 15, 16, 14, 14, 14, 15, 14, 14, + 14, 14, 32, 41, 31, 22, 24, 23, 24, 27, 25, 18, 14, 17, 14, 14, + 22, 15, 21, 14, 14, 14, 38, 67, 44, 26, 14, 15, 16, 20, 14, 20, + 27, 14, 14, 14, 14, 14, 19, 14, 14, 14, 14, 38, 24, 14, 14, 18, + 21, 24, 31, 41, 24, 14, 14, 16, 14, 14, 19, 14, 15, 15, 15, 15, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 15, 15, 15, + 15, 14, 14, 14, 14, 14, 14, 20, 18, 14, 14, 15, 19, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 15, 14, 14, 14, 14, 15, 16, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 16, 14, 14, + 14, 14, 23, 14, 14, 21, 14, 14, 14, 21, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 17, 14, 14, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 17, 53, 55, 37, 15, 14, 14, 14, 14, 14, 18, 24, + 22, 22, 21, 20, 17, 15, 14, 14, 14, 14, 16, 27, 14, 14, 14, 14, + 14, 14, 14, 64, 37, 29, 14, 14, 14, 24, 24, 14, 14, 16, 15, 16, + 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 22, 19, 14, 14, 14, 14, 15, 15, 14, 15, 15, 15, 14, 14, + 14, 15, 27, 24, 14, 14, 14, 18, 17, 14, 14, 14, 14, 14, 15, 17, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, + 14, 17, 19, 18, 18, 15, 15, 15, 15, 15, 16, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 16, 14, 14, 14, 14, 14, 14, 14, 16, 17, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 19, + 17, 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 15, 14, 14, 16, 15, 14, 14, 14, 15, 14, 16, 19, 15, 18, 21, 19, + 18, 16, 27, 28, 19, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, + 14, 15, 15, 16, 14, 14, 14, 14, 18, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 15, 18, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 18, 20, 15, 15, 14, 14, 14, 14, + 15, 14, 14, 21, 21, 15, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 32, 41, + 30, 19, 21, 21, 21, 24, 23, 16, 14, 14, 14, 15, 19, 14, 15, 14, + 14, 24, 76, 64, 42, 23, 14, 14, 14, 18, 14, 19, 27, 14, 14, 14, + 16, 14, 14, 14, 14, 14, 18, 60, 24, 15, 15, 16, 18, 22, 27, 32, + 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 15, 14, 15, 15, 15, 15, + 14, 14, 14, 14, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 18, 15, 14, 14, 15, 19, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 19, 18, 21, 27, 23, 15, 14, 14, 15, + 24, 14, 14, 14, 14, 18, 15, 15, 15, 15, 15, 18, 16, 14, 14, 17, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, + 15, 15, 14, 15, 16, 18, 15, 15, 14, 14, 15, 20, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 14, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 71, 59, 46, 36, 25, 21, 20, 21, 21, 21, 29, 37, 37, 37, 36, 32, + 30, 25, 21, 19, 14, 15, 25, 31, 14, 14, 14, 14, 14, 14, 42, 67, + 39, 29, 18, 18, 15, 21, 31, 14, 14, 16, 14, 16, 16, 15, 14, 14, + 14, 14, 18, 16, 14, 14, 14, 14, 14, 14, 15, 14, 24, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 23, 15, 14, 14, + 20, 21, 15, 15, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, + 16, 15, 16, 16, 18, 15, 15, 14, 14, 14, 14, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 17, 16, 15, 16, 15, 14, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 16, 20, 16, 15, 14, + 14, 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 14, + 15, 15, 15, 16, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 18, 15, 15, 14, 14, 14, 14, 14, 14, 14, 18, + 19, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 18, 14, 15, 14, 14, 14, 14, 38, 49, 34, 23, 22, 22, + 21, 24, 21, 16, 14, 14, 14, 18, 14, 14, 14, 14, 14, 53, 84, 60, + 39, 21, 19, 14, 16, 21, 16, 21, 29, 14, 14, 14, 16, 14, 14, 14, + 14, 14, 55, 64, 27, 19, 20, 18, 18, 23, 22, 20, 14, 14, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 20, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 16, 14, 14, + 14, 15, 15, 15, 16, 18, 18, 16, 15, 14, 14, 14, 19, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 15, + 15, 16, 16, 15, 14, 14, 14, 14, 18, 14, 14, 19, 16, 14, 15, 15, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 15, 16, 16, 14, 15, + 15, 16, 18, 15, 14, 14, 14, 14, 14, 14, 14, 21, 78, 55, 40, 33, + 34, 34, 33, 32, 31, 28, 32, 42, 48, 49, 47, 45, 42, 38, 34, 27, + 24, 19, 24, 22, 14, 14, 16, 16, 14, 14, 76, 72, 46, 34, 23, 21, + 31, 18, 27, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 14, 14, 15, 20, + 14, 15, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 21, + 23, 15, 14, 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 20, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 20, 19, 15, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 16, 16, 15, + 20, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 21, + 14, 18, 15, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, + 18, 18, 16, 21, 14, 15, 14, 14, 14, 14, 14, 14, 14, 16, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 46, 63, 44, 31, 29, 29, 27, 28, 24, 18, + 14, 14, 14, 17, 14, 14, 14, 14, 14, 78, 76, 61, 41, 24, 30, 20, + 19, 25, 19, 27, 32, 14, 14, 14, 14, 14, 14, 14, 14, 14, 78, 53, + 32, 24, 24, 20, 25, 30, 20, 14, 14, 14, 14, 14, 15, 16, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 19, 21, 19, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 18, 18, + 14, 29, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 18, 15, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 15, 16, + 16, 18, 16, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 21, + 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 15, 15, 18, 18, 15, + 14, 14, 14, 14, 14, 14, 14, 69, 59, 49, 39, 32, 40, 44, 41, 37, + 30, 21, 21, 27, 31, 33, 33, 31, 31, 27, 25, 19, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 97, 75, 57, 45, 34, 24, 43, 21, 17, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 16, 15, 15, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 16, 14, + 14, 14, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 17, 14, 14, 16, 14, 14, 16, 14, 14, 14, 14, 14, + 14, 14, 59, 67, 46, 41, 39, 37, 35, 34, 28, 18, 14, 14, 16, 14, + 14, 14, 14, 14, 45, 95, 72, 60, 50, 31, 37, 27, 27, 33, 26, 32, + 39, 14, 14, 14, 14, 15, 14, 14, 14, 24, 67, 53, 40, 31, 27, 29, + 36, 38, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 14, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 18, 14, 15, 15, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 15, 15, 15, 14, 14, 14, 14, + 14, 14, 19, 92, 61, 45, 34, 35, 45, 50, 43, 32, 20, 14, 14, 14, + 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, + 14, 19, 104, 81, 65, 57, 44, 31, 41, 32, 14, 14, 15, 43, 65, 43, + 57, 54, 54, 57, 65, 63, 56, 52, 14, 14, 14, 14, 14, 14, 14, 14, + 21, 14, 14, 14, 14, 27, 47, 57, 72, 75, 76, 81, 84, 89, 89, 85, + 75, 36, 14, 14, 14, 14, 14, 14, 14, 15, 14, 15, 14, 14, 14, 14, + 14, 14, 33, 63, 89, 92, 87, 87, 84, 82, 79, 67, 59, 45, 25, 14, + 14, 14, 14, 14, 17, 15, 14, 14, 14, 14, 14, 14, 14, 14, 27, 45, + 69, 67, 64, 61, 59, 59, 56, 56, 55, 47, 64, 72, 64, 79, 76, 36, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 24, 34, 37, 36, 34, + 31, 29, 29, 33, 35, 28, 16, 14, 15, 18, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 61, 87, + 100, 89, 75, 73, 78, 65, 31, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 20, 18, 14, 14, 19, 50, 65, 56, 50, 45, 53, 48, 24, 14, 14, 14, + 14, 14, 14, 14, 17, 40, 56, 59, 76, 75, 75, 81, 84, 82, 85, 85, + 48, 28, 14, 14, 14, 14, 14, 14, 15, 21, 14, 16, 50, 81, 72, 72, + 64, 61, 75, 79, 56, 24, 14, 14, 24, 29, 19, 21, 14, 22, 89, 75, + 67, 67, 69, 71, 65, 44, 18, 14, 18, 21, 16, 14, 14, 82, 60, 78, + 68, 46, 61, 60, 52, 19, 14, 22, 52, 47, 53, 60, 63, 68, 72, 75, + 44, 14, 14, 14, 14, 14, 21, 14, 14, 14, 14, 14, 14, 14, 69, 79, + 54, 48, 46, 46, 41, 39, 29, 18, 14, 15, 18, 14, 14, 14, 14, 14, + 89, 92, 68, 63, 57, 45, 44, 41, 36, 42, 34, 41, 45, 14, 14, 15, + 15, 14, 14, 14, 14, 63, 53, 45, 46, 35, 31, 36, 44, 35, 17, 14, + 14, 14, 14, 14, 14, 14, 14, 24, 21, 20, 21, 24, 26, 27, 30, 32, + 48, 40, 22, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 48, 79, 72, 75, 67, 56, 60, 46, 44, 46, 48, 54, 57, 63, 67, + 71, 67, 69, 64, 37, 14, 14, 14, 26, 21, 18, 21, 41, 78, 93, 73, + 61, 60, 64, 63, 49, 28, 14, 14, 14, 16, 44, 55, 54, 56, 67, 76, + 60, 45, 26, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 24, 50, 78, 85, 89, 84, 82, 87, 82, 71, 63, 54, 36, 16, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 16, 85, 82, 57, 78, 68, 75, + 60, 44, 14, 14, 14, 31, 42, 57, 52, 48, 53, 57, 64, 63, 55, 49, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 59, 104, + 60, 44, 34, 34, 42, 42, 35, 23, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 27, 15, 14, 14, 14, 52, 109, 89, + 72, 64, 55, 45, 46, 31, 14, 32, 75, 82, 93, 68, 60, 55, 56, 63, + 72, 84, 90, 89, 48, 21, 14, 14, 14, 14, 14, 14, 14, 14, 16, 45, + 93, 100, 82, 63, 53, 49, 50, 54, 60, 68, 76, 85, 95, 100, 79, 42, + 14, 14, 14, 20, 14, 15, 18, 23, 15, 14, 14, 14, 75, 90, 104, 102, + 90, 82, 78, 73, 63, 68, 73, 78, 82, 92, 92, 76, 30, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 21, 55, 93, 105, 82, 73, 69, 65, + 60, 61, 57, 64, 75, 79, 89, 97, 89, 113, 95, 27, 14, 14, 14, 14, + 14, 14, 17, 37, 78, 71, 78, 78, 79, 78, 79, 78, 78, 79, 79, 84, + 84, 78, 75, 75, 73, 69, 34, 14, 14, 14, 15, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 52, 130, 120, 111, 104, 95, + 85, 81, 48, 29, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 68, 98, 81, 73, 73, 73, 55, 18, 14, 14, 14, 14, 14, 19, 55, + 95, 98, 85, 63, 54, 50, 50, 55, 63, 68, 76, 85, 97, 90, 55, 27, + 14, 14, 14, 14, 14, 14, 14, 14, 52, 113, 107, 104, 118, 104, 114, 128, + 81, 24, 14, 14, 15, 15, 14, 14, 14, 19, 116, 111, 113, 102, 98, 102, + 92, 56, 18, 14, 14, 14, 14, 14, 14, 100, 87, 90, 81, 65, 64, 68, + 73, 23, 14, 52, 78, 78, 82, 87, 90, 100, 104, 107, 50, 14, 14, 15, + 14, 14, 21, 14, 14, 14, 14, 14, 14, 14, 79, 97, 65, 52, 50, 52, + 48, 44, 32, 21, 14, 15, 14, 14, 14, 14, 14, 39, 95, 73, 64, 65, + 55, 60, 56, 56, 44, 53, 44, 49, 53, 14, 15, 15, 15, 14, 14, 14, + 22, 67, 44, 41, 50, 40, 36, 43, 40, 24, 14, 14, 15, 14, 14, 54, + 100, 111, 104, 78, 65, 63, 63, 64, 69, 75, 81, 93, 92, 100, 105, 105, + 82, 50, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 75, 126, 104, + 97, 90, 84, 75, 56, 49, 50, 54, 57, 64, 71, 78, 95, 98, 102, 100, + 73, 32, 14, 14, 14, 15, 14, 14, 14, 54, 116, 111, 104, 102, 111, 113, + 105, 55, 16, 14, 40, 61, 69, 68, 63, 67, 69, 78, 87, 93, 93, 67, + 29, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 32, 100, 104, 102, 100, + 82, 73, 69, 68, 63, 61, 69, 78, 84, 92, 76, 65, 18, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 79, 98, 82, 92, 90, 90, 98, 84, 23, 14, + 30, 73, 90, 89, 69, 69, 73, 78, 82, 92, 92, 87, 43, 17, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 100, 97, 69, 48, 38, 37, + 38, 37, 27, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 21, 14, 14, 14, 14, 79, 116, 92, 75, 67, 63, 57, + 59, 23, 14, 84, 113, 75, 67, 61, 55, 49, 54, 59, 67, 73, 84, 92, + 120, 45, 14, 14, 15, 14, 14, 14, 14, 27, 87, 118, 105, 85, 75, 72, + 60, 54, 59, 60, 60, 67, 73, 75, 81, 89, 98, 102, 63, 19, 14, 14, + 18, 14, 14, 14, 14, 14, 32, 84, 126, 124, 118, 107, 93, 84, 82, 81, + 75, 72, 73, 75, 78, 79, 87, 95, 109, 60, 19, 14, 14, 14, 14, 14, + 14, 14, 14, 22, 85, 114, 104, 72, 67, 64, 63, 60, 64, 65, 63, 68, + 75, 73, 90, 92, 81, 105, 76, 14, 14, 14, 14, 14, 14, 14, 55, 126, + 78, 60, 64, 67, 71, 76, 81, 81, 78, 78, 73, 73, 68, 64, 60, 81, + 124, 128, 75, 27, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 14, 14, 14, 14, 84, 109, 118, 116, 90, 81, 71, 63, 63, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 87, 93, 72, + 63, 55, 63, 45, 14, 14, 14, 14, 14, 34, 104, 132, 92, 78, 72, 68, + 59, 57, 57, 60, 60, 65, 72, 76, 81, 89, 95, 97, 44, 14, 14, 14, + 14, 19, 14, 14, 47, 111, 107, 97, 92, 89, 89, 104, 64, 16, 14, 16, + 15, 24, 14, 14, 14, 16, 114, 109, 105, 89, 92, 93, 97, 71, 28, 14, + 14, 15, 14, 14, 14, 98, 79, 76, 63, 56, 67, 61, 69, 60, 36, 109, + 79, 78, 78, 84, 90, 87, 81, 81, 37, 14, 14, 18, 14, 14, 19, 14, + 14, 14, 14, 14, 14, 14, 84, 109, 79, 61, 60, 64, 60, 55, 37, 23, + 14, 15, 14, 14, 14, 14, 14, 87, 104, 71, 81, 65, 56, 68, 63, 61, + 50, 60, 48, 57, 56, 14, 16, 15, 14, 17, 14, 14, 76, 68, 45, 47, + 60, 47, 46, 49, 35, 15, 14, 14, 14, 15, 85, 164, 130, 93, 84, 73, + 63, 57, 56, 61, 63, 64, 72, 75, 84, 89, 92, 92, 95, 89, 33, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 90, 143, 107, 95, 89, 84, 73, + 63, 54, 55, 54, 53, 55, 60, 63, 71, 75, 82, 87, 93, 78, 24, 14, + 20, 15, 25, 14, 14, 16, 100, 114, 98, 82, 82, 89, 85, 60, 28, 14, + 67, 56, 53, 54, 49, 63, 64, 67, 75, 82, 90, 107, 89, 29, 14, 14, + 14, 14, 14, 14, 14, 14, 49, 122, 118, 104, 92, 84, 82, 78, 75, 73, + 76, 76, 76, 78, 81, 81, 92, 95, 82, 35, 14, 14, 14, 14, 14, 14, + 14, 14, 54, 95, 79, 89, 73, 72, 72, 72, 53, 14, 89, 90, 92, 73, + 67, 65, 71, 72, 78, 82, 89, 97, 107, 35, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 21, 102, 100, 82, 60, 59, 59, 46, 54, 35, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 20, 14, 14, 14, 14, 104, 95, 93, 73, 71, 69, 65, 46, 43, 56, 84, + 89, 81, 76, 72, 68, 69, 71, 72, 78, 72, 84, 65, 100, 79, 16, 14, + 14, 14, 14, 14, 26, 90, 118, 87, 82, 102, 98, 72, 63, 50, 50, 65, + 57, 57, 82, 81, 79, 78, 85, 84, 82, 55, 14, 14, 15, 14, 16, 14, + 14, 27, 126, 120, 107, 111, 98, 89, 79, 81, 73, 57, 59, 54, 82, 78, + 68, 75, 72, 76, 81, 72, 78, 14, 14, 14, 14, 14, 14, 14, 14, 89, + 100, 79, 98, 68, 73, 67, 68, 50, 60, 69, 57, 72, 54, 61, 63, 57, + 79, 90, 50, 15, 14, 14, 14, 14, 14, 53, 113, 85, 59, 47, 53, 63, + 73, 82, 89, 95, 95, 89, 85, 72, 63, 65, 50, 59, 68, 90, 72, 60, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 41, 132, 118, 113, 89, 82, 68, 47, 50, 35, 14, 16, 14, + 14, 14, 17, 14, 14, 14, 14, 14, 84, 81, 75, 82, 53, 54, 56, 21, + 14, 14, 14, 14, 75, 118, 145, 118, 90, 87, 79, 59, 53, 54, 48, 59, + 73, 79, 78, 76, 73, 78, 87, 84, 84, 50, 14, 14, 14, 14, 14, 14, + 55, 109, 84, 82, 76, 71, 65, 52, 75, 14, 17, 15, 14, 19, 14, 14, + 14, 45, 111, 98, 93, 92, 79, 65, 68, 63, 14, 14, 14, 16, 14, 14, + 16, 120, 84, 81, 63, 61, 63, 72, 75, 90, 104, 111, 93, 89, 87, 93, + 82, 64, 61, 75, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 14, 14, 90, 109, 85, 73, 76, 79, 68, 59, 44, 24, 14, 15, 14, 14, + 14, 14, 27, 98, 89, 89, 72, 72, 72, 71, 68, 68, 61, 65, 55, 63, + 63, 14, 15, 14, 15, 14, 14, 16, 93, 64, 57, 57, 75, 31, 64, 55, + 17, 14, 14, 14, 14, 102, 164, 118, 105, 105, 89, 85, 75, 72, 73, 65, + 67, 73, 73, 76, 76, 75, 81, 78, 76, 55, 72, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 128, 132, 98, 89, 53, 65, 72, 75, 59, 65, 50, + 73, 57, 61, 65, 56, 63, 64, 72, 68, 67, 52, 14, 14, 20, 16, 14, + 14, 16, 111, 95, 82, 69, 73, 56, 79, 33, 14, 85, 71, 71, 60, 61, + 61, 73, 65, 67, 75, 85, 95, 85, 107, 65, 14, 14, 14, 14, 14, 14, + 14, 100, 134, 93, 104, 100, 90, 84, 68, 63, 63, 57, 61, 75, 72, 59, + 81, 75, 75, 76, 85, 46, 26, 14, 14, 14, 14, 14, 14, 14, 92, 104, + 93, 78, 75, 68, 64, 54, 60, 53, 81, 84, 100, 81, 76, 68, 78, 65, + 79, 78, 82, 85, 78, 69, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 55, 130, 114, 82, 72, 69, 60, 55, 55, 33, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 102, 93, 92, 72, 69, 73, 72, 64, 65, 82, 89, 87, 76, 71, 85, + 85, 81, 82, 81, 84, 78, 81, 65, 84, 61, 56, 14, 14, 15, 14, 14, + 93, 85, 100, 92, 85, 75, 73, 75, 71, 60, 57, 71, 84, 90, 90, 64, + 78, 78, 79, 79, 89, 87, 35, 14, 14, 14, 14, 14, 14, 116, 104, 124, + 116, 93, 85, 68, 67, 65, 75, 79, 76, 68, 92, 82, 73, 72, 68, 72, + 79, 82, 93, 31, 14, 14, 18, 14, 14, 14, 42, 97, 113, 87, 79, 75, + 68, 57, 61, 56, 67, 73, 57, 64, 50, 56, 63, 68, 84, 84, 46, 16, + 14, 14, 14, 14, 17, 87, 92, 76, 60, 50, 61, 64, 67, 67, 76, 87, + 78, 69, 85, 73, 61, 57, 47, 55, 64, 75, 60, 57, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 24, + 141, 118, 105, 95, 87, 68, 47, 60, 37, 14, 14, 14, 14, 14, 15, 14, + 14, 14, 14, 44, 97, 79, 90, 67, 72, 52, 48, 14, 14, 14, 14, 50, + 143, 148, 150, 139, 97, 61, 44, 49, 54, 67, 60, 57, 71, 82, 82, 71, + 76, 75, 82, 84, 93, 76, 24, 14, 14, 14, 14, 14, 93, 107, 90, 78, + 72, 64, 60, 59, 55, 14, 19, 15, 14, 14, 14, 14, 14, 67, 120, 98, + 87, 87, 79, 67, 65, 57, 14, 14, 14, 15, 14, 14, 39, 130, 98, 87, + 67, 67, 68, 79, 73, 84, 109, 111, 89, 67, 50, 45, 47, 49, 56, 65, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 14, 14, 14, 14, 85, 113, + 102, 84, 84, 89, 75, 65, 48, 24, 18, 14, 14, 14, 14, 14, 79, 111, + 97, 87, 81, 79, 76, 75, 73, 71, 64, 68, 57, 64, 65, 14, 14, 14, + 14, 14, 14, 65, 84, 79, 59, 64, 65, 63, 48, 46, 18, 14, 14, 14, + 69, 130, 145, 113, 104, 93, 82, 67, 50, 53, 59, 64, 63, 59, 56, 54, + 81, 78, 81, 75, 75, 53, 72, 31, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 114, 124, 105, 90, 52, 59, 54, 82, 84, 95, 69, 87, 68, 61, 52, + 56, 57, 64, 72, 61, 63, 52, 14, 14, 19, 14, 14, 14, 41, 114, 90, + 76, 67, 68, 65, 57, 41, 29, 98, 95, 84, 64, 65, 65, 65, 63, 69, + 79, 84, 95, 85, 98, 75, 15, 14, 14, 14, 14, 14, 84, 105, 120, 114, + 92, 82, 63, 65, 73, 75, 78, 79, 75, 90, 95, 85, 82, 72, 69, 69, + 79, 69, 52, 14, 14, 14, 16, 14, 14, 14, 109, 111, 102, 84, 75, 71, + 68, 67, 73, 76, 84, 87, 87, 65, 71, 61, 78, 68, 78, 81, 82, 65, + 72, 76, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 104, 141, 116, + 79, 76, 71, 59, 59, 47, 24, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 30, 118, 104, 93, + 73, 73, 76, 73, 71, 76, 87, 93, 72, 55, 60, 87, 89, 87, 87, 85, + 90, 85, 81, 67, 72, 68, 32, 14, 14, 17, 14, 95, 145, 118, 98, 92, + 85, 55, 53, 65, 50, 42, 32, 30, 45, 79, 98, 92, 84, 81, 81, 84, + 82, 104, 68, 14, 14, 14, 14, 14, 84, 162, 137, 120, 95, 85, 71, 65, + 57, 38, 34, 39, 35, 35, 64, 82, 89, 87, 72, 72, 82, 84, 102, 65, + 14, 14, 14, 14, 14, 31, 132, 120, 128, 100, 90, 72, 60, 35, 32, 28, + 35, 41, 30, 31, 23, 21, 24, 31, 39, 37, 21, 14, 14, 14, 14, 14, + 82, 116, 89, 84, 63, 68, 60, 59, 60, 60, 61, 64, 79, 72, 85, 98, + 89, 75, 60, 72, 75, 73, 63, 71, 18, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 139, 122, 104, 97, + 89, 71, 53, 73, 48, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 124, + 120, 109, 84, 46, 69, 43, 27, 14, 14, 14, 21, 132, 169, 152, 136, 114, + 90, 48, 34, 39, 36, 52, 46, 39, 56, 92, 93, 100, 82, 76, 82, 89, + 92, 102, 46, 14, 14, 14, 14, 14, 134, 111, 102, 76, 75, 65, 59, 67, + 31, 14, 15, 15, 15, 14, 14, 14, 14, 102, 128, 114, 89, 87, 81, 69, + 64, 43, 14, 14, 14, 14, 14, 14, 82, 132, 104, 85, 67, 69, 75, 81, + 68, 75, 93, 93, 76, 69, 63, 60, 68, 67, 50, 35, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 15, 14, 14, 14, 14, 95, 118, 109, 87, 92, 93, + 84, 69, 52, 26, 19, 14, 14, 14, 14, 24, 122, 116, 107, 82, 82, 81, + 81, 76, 75, 72, 67, 75, 64, 72, 68, 14, 14, 14, 14, 14, 14, 126, + 98, 84, 68, 65, 54, 72, 47, 24, 14, 14, 14, 16, 164, 148, 128, 109, + 104, 92, 72, 61, 64, 54, 48, 54, 59, 59, 75, 97, 100, 93, 95, 89, + 87, 63, 71, 64, 14, 14, 14, 14, 14, 14, 14, 14, 14, 67, 79, 89, + 85, 65, 82, 67, 50, 61, 65, 40, 63, 78, 85, 76, 75, 73, 79, 85, + 63, 69, 60, 14, 14, 15, 14, 14, 14, 102, 126, 97, 89, 71, 76, 78, + 50, 61, 107, 124, 82, 67, 44, 59, 65, 73, 72, 85, 85, 87, 100, 97, + 89, 85, 32, 14, 14, 14, 14, 45, 173, 120, 120, 113, 87, 67, 52, 46, + 43, 36, 38, 42, 41, 53, 76, 97, 89, 81, 72, 73, 79, 89, 82, 17, + 14, 14, 14, 14, 14, 38, 118, 113, 114, 84, 79, 75, 68, 68, 79, 84, + 89, 89, 92, 79, 76, 68, 79, 76, 81, 81, 87, 63, 65, 76, 25, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 143, 139, 122, 84, 78, 76, 61, + 60, 39, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 14, 15, 14, 14, 73, 134, 118, 97, 78, 76, 79, 67, + 57, 48, 37, 31, 27, 24, 35, 54, 87, 113, 102, 92, 95, 87, 84, 67, + 71, 64, 14, 14, 14, 14, 57, 178, 147, 122, 93, 78, 69, 64, 50, 34, + 14, 14, 14, 14, 14, 16, 47, 98, 90, 95, 84, 85, 78, 90, 84, 14, + 14, 14, 14, 55, 182, 128, 157, 100, 81, 68, 57, 49, 33, 16, 14, 14, + 14, 14, 21, 47, 95, 100, 79, 79, 85, 79, 92, 97, 14, 14, 14, 14, + 14, 85, 169, 132, 128, 104, 92, 85, 57, 21, 14, 14, 14, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 27, 130, 124, 89, 78, + 72, 69, 64, 55, 47, 39, 35, 34, 40, 32, 31, 54, 95, 116, 85, 85, + 84, 71, 63, 75, 34, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 102, 136, 122, 111, 98, 82, 68, 82, + 63, 14, 14, 14, 14, 14, 14, 14, 14, 14, 82, 164, 122, 126, 67, 55, + 52, 39, 14, 14, 14, 14, 113, 159, 145, 141, 107, 85, 65, 54, 34, 21, + 14, 14, 14, 14, 14, 22, 47, 93, 98, 81, 84, 97, 82, 109, 65, 14, + 14, 14, 14, 22, 159, 120, 98, 79, 84, 67, 61, 69, 16, 14, 14, 14, + 18, 14, 14, 14, 14, 130, 134, 120, 102, 90, 87, 78, 65, 33, 14, 14, + 14, 14, 14, 14, 124, 130, 109, 85, 71, 75, 82, 75, 55, 50, 55, 47, + 52, 57, 64, 65, 72, 63, 36, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 14, 14, 14, 14, 102, 136, 118, 92, 97, 100, 92, 81, 54, 27, + 14, 19, 14, 14, 14, 107, 128, 113, 113, 84, 87, 90, 84, 82, 78, 75, + 71, 78, 69, 79, 71, 14, 14, 14, 14, 14, 54, 145, 124, 78, 76, 67, + 63, 49, 60, 14, 14, 14, 14, 89, 175, 143, 128, 114, 95, 73, 68, 64, + 46, 28, 19, 19, 21, 24, 44, 75, 116, 114, 124, 111, 100, 72, 63, 82, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 25, 97, 109, 105, 89, 102, 107, 73, 76, 63, 14, + 14, 14, 14, 14, 14, 147, 132, 107, 92, 78, 79, 89, 64, 76, 141, 114, + 81, 72, 52, 68, 85, 82, 84, 85, 95, 95, 116, 109, 87, 90, 46, 14, + 14, 14, 18, 141, 139, 132, 116, 90, 68, 65, 53, 32, 16, 14, 14, 14, + 14, 14, 34, 95, 98, 85, 79, 84, 73, 82, 87, 29, 14, 14, 14, 14, + 14, 82, 128, 120, 114, 89, 85, 81, 65, 55, 47, 40, 41, 40, 49, 54, + 72, 82, 87, 85, 82, 87, 95, 67, 63, 68, 22, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 48, 179, 145, 132, 93, 84, 79, 63, 59, 32, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 15, 14, 14, 120, 143, 130, 105, 87, 81, 79, 54, 38, 21, 14, 14, + 14, 14, 14, 14, 60, 128, 124, 105, 98, 95, 87, 73, 69, 44, 14, 14, + 19, 14, 152, 167, 145, 128, 97, 68, 65, 57, 31, 14, 14, 14, 14, 14, + 14, 14, 14, 78, 104, 97, 87, 97, 93, 95, 100, 23, 14, 14, 14, 167, + 173, 136, 134, 97, 78, 72, 45, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 61, 113, 102, 111, 98, 87, 92, 118, 23, 14, 14, 14, 27, 143, 143, 150, + 136, 113, 107, 95, 63, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 111, 143, 107, 97, 78, 85, 85, 65, 39, + 23, 14, 14, 14, 14, 14, 14, 14, 41, 141, 120, 102, 92, 81, 68, 79, + 45, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, + 14, 14, 14, 14, 40, 143, 147, 118, 98, 87, 85, 78, 79, 26, 14, 14, + 14, 14, 14, 14, 14, 32, 175, 167, 150, 100, 52, 59, 40, 24, 14, 14, + 14, 27, 157, 150, 143, 120, 100, 75, 60, 43, 21, 14, 14, 14, 14, 14, + 14, 14, 23, 120, 120, 97, 109, 104, 84, 109, 84, 14, 14, 14, 14, 61, + 159, 137, 105, 84, 85, 75, 67, 64, 14, 14, 14, 15, 18, 14, 14, 14, + 27, 157, 139, 122, 107, 90, 92, 82, 63, 21, 14, 14, 14, 14, 14, 14, + 150, 132, 116, 93, 84, 82, 84, 60, 31, 19, 16, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 109, 150, 132, 100, 104, 107, 100, 85, 55, 26, 14, 14, 14, 14, + 41, 164, 118, 126, 113, 93, 92, 90, 89, 85, 81, 81, 75, 84, 82, 89, + 71, 14, 14, 14, 14, 14, 145, 143, 128, 85, 76, 68, 73, 44, 39, 14, + 14, 14, 16, 175, 173, 155, 136, 111, 89, 64, 48, 32, 15, 14, 14, 14, + 14, 14, 14, 14, 102, 152, 147, 145, 122, 90, 64, 84, 40, 32, 16, 15, + 15, 14, 14, 14, 21, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 89, 130, 137, 113, 132, 124, 87, 84, 56, 14, 14, 14, 14, 14, + 16, 167, 130, 113, 90, 100, 79, 82, 73, 60, 82, 45, 38, 41, 30, 42, + 65, 89, 118, 98, 109, 107, 126, 118, 92, 89, 52, 14, 14, 14, 81, 183, + 120, 141, 111, 79, 50, 52, 36, 14, 14, 14, 14, 14, 14, 14, 14, 53, + 109, 120, 98, 92, 87, 78, 87, 47, 14, 14, 14, 14, 14, 107, 141, 132, + 116, 98, 98, 90, 81, 47, 19, 14, 14, 14, 14, 14, 33, 89, 98, 98, + 87, 95, 109, 73, 65, 53, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, + 118, 179, 145, 128, 111, 87, 85, 69, 60, 27, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 155, 148, 141, 107, 100, 89, 75, 50, 27, 14, 14, 14, 14, 14, 14, 14, + 26, 118, 136, 124, 102, 102, 90, 84, 63, 34, 14, 14, 14, 73, 178, 164, + 159, 111, 90, 85, 71, 37, 14, 14, 18, 14, 14, 18, 19, 14, 14, 71, + 128, 107, 102, 107, 102, 97, 82, 35, 14, 14, 75, 173, 154, 152, 114, 93, + 76, 65, 31, 14, 14, 14, 14, 14, 14, 14, 14, 14, 64, 134, 116, 118, + 111, 98, 89, 98, 31, 14, 15, 14, 65, 170, 126, 162, 147, 124, 116, 95, + 54, 14, 14, 15, 14, 15, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 14, 21, 173, 143, 98, 105, 81, 98, 87, 52, 22, 14, 14, 14, 14, + 14, 18, 14, 14, 14, 130, 159, 143, 105, 92, 75, 71, 49, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, + 14, 134, 154, 126, 109, 97, 93, 78, 93, 44, 14, 14, 14, 14, 14, 14, + 14, 132, 195, 173, 165, 72, 68, 42, 31, 14, 14, 14, 14, 118, 145, 148, + 150, 104, 82, 84, 64, 25, 14, 14, 14, 14, 14, 14, 14, 14, 14, 114, + 128, 114, 116, 111, 90, 98, 85, 14, 14, 14, 14, 130, 152, 154, 116, 102, + 92, 78, 69, 46, 14, 14, 14, 18, 14, 14, 14, 14, 68, 164, 145, 126, + 114, 97, 89, 79, 54, 14, 14, 14, 14, 14, 14, 38, 164, 145, 126, 107, + 93, 92, 82, 53, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 116, 162, + 148, 116, 120, 120, 107, 95, 61, 27, 15, 14, 16, 14, 128, 173, 139, 141, + 107, 104, 82, 61, 92, 98, 89, 87, 81, 85, 92, 93, 76, 14, 14, 14, + 14, 54, 175, 159, 114, 114, 82, 78, 68, 57, 14, 14, 14, 14, 81, 197, + 178, 162, 128, 107, 98, 75, 31, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 40, 167, 154, 162, 141, 105, 82, 81, 37, 30, 15, 15, 15, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 111, 169, + 157, 134, 152, 134, 97, 87, 41, 14, 14, 14, 14, 14, 53, 170, 134, 124, + 89, 109, 78, 67, 54, 24, 19, 14, 14, 14, 14, 14, 18, 43, 134, 120, + 120, 122, 128, 134, 107, 85, 53, 14, 14, 25, 159, 148, 157, 128, 97, 82, + 65, 40, 14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 134, 143, 126, 109, + 102, 82, 81, 54, 14, 14, 14, 14, 14, 120, 145, 137, 120, 111, 107, 98, + 76, 37, 14, 14, 14, 14, 14, 14, 14, 82, 98, 118, 102, 105, 107, 76, + 76, 42, 14, 14, 14, 14, 19, 14, 14, 14, 14, 14, 159, 164, 161, 128, + 118, 98, 92, 75, 60, 27, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 27, 185, 155, 157, 116, + 111, 92, 79, 56, 20, 16, 14, 14, 14, 14, 14, 14, 14, 122, 159, 157, + 122, 114, 97, 93, 60, 27, 14, 14, 14, 178, 172, 181, 154, 116, 89, 87, + 60, 21, 14, 14, 16, 14, 14, 14, 14, 14, 14, 69, 155, 136, 132, 104, + 105, 105, 56, 26, 14, 18, 170, 148, 161, 141, 114, 87, 69, 43, 18, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 75, 162, 134, 122, 114, 105, 89, 76, + 35, 14, 14, 14, 105, 159, 143, 139, 147, 134, 124, 102, 49, 14, 14, 17, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 87, 185, + 145, 113, 95, 84, 102, 73, 34, 14, 14, 14, 18, 19, 14, 17, 14, 14, + 14, 113, 167, 147, 118, 104, 84, 61, 46, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 126, 152, 143, + 139, 105, 102, 92, 109, 67, 14, 14, 14, 14, 14, 14, 67, 199, 192, 181, + 136, 64, 67, 29, 16, 14, 14, 14, 31, 172, 130, 150, 126, 98, 76, 75, + 48, 16, 14, 19, 14, 14, 16, 14, 18, 14, 14, 130, 152, 137, 118, 120, + 100, 95, 76, 14, 14, 14, 14, 179, 159, 164, 141, 109, 98, 85, 69, 29, + 14, 14, 14, 19, 14, 14, 14, 14, 137, 170, 157, 139, 124, 105, 95, 85, + 52, 14, 14, 14, 14, 14, 14, 89, 167, 162, 126, 113, 98, 98, 84, 46, + 18, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 126, 173, 164, 132, 134, 141, + 116, 105, 68, 30, 14, 14, 14, 33, 170, 167, 159, 134, 109, 113, 56, 32, + 97, 128, 102, 98, 87, 97, 104, 105, 79, 14, 14, 14, 15, 157, 181, 169, + 134, 113, 92, 82, 60, 45, 14, 14, 14, 17, 165, 195, 172, 165, 122, 104, + 109, 69, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 183, 162, 169, + 137, 97, 95, 73, 16, 15, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 130, 164, 164, 150, 152, 128, + 107, 82, 25, 14, 14, 14, 14, 14, 126, 165, 137, 134, 104, 102, 87, 71, + 34, 14, 14, 14, 14, 14, 14, 14, 14, 14, 118, 132, 143, 145, 132, 143, + 116, 82, 53, 14, 14, 93, 170, 128, 162, 116, 81, 78, 65, 24, 14, 14, + 14, 16, 14, 14, 18, 14, 14, 14, 164, 162, 145, 122, 107, 89, 79, 49, + 14, 14, 14, 14, 53, 137, 152, 143, 120, 132, 114, 102, 64, 30, 14, 14, + 14, 20, 14, 14, 14, 98, 118, 136, 122, 122, 111, 84, 78, 33, 14, 14, + 14, 14, 18, 14, 14, 14, 14, 14, 195, 181, 190, 145, 134, 111, 98, 71, + 64, 27, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 15, 14, 22, 63, 199, 162, 165, 118, 113, 98, 84, 64, + 16, 14, 14, 14, 14, 14, 14, 14, 14, 137, 182, 173, 134, 122, 102, 102, + 60, 15, 14, 14, 98, 164, 176, 164, 159, 130, 104, 81, 41, 14, 14, 14, + 14, 14, 26, 14, 16, 14, 14, 78, 170, 154, 150, 107, 111, 122, 54, 27, + 14, 79, 154, 179, 152, 143, 105, 95, 81, 32, 14, 14, 14, 14, 14, 14, + 14, 19, 14, 14, 65, 170, 162, 162, 130, 118, 105, 72, 41, 14, 14, 14, + 114, 126, 157, 105, 132, 136, 126, 120, 63, 14, 14, 15, 14, 14, 14, 16, + 14, 14, 14, 14, 14, 15, 18, 15, 14, 16, 167, 170, 157, 141, 82, 89, + 100, 65, 24, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 141, 186, 157, + 126, 118, 90, 57, 44, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 14, 14, 15, 15, 14, 14, 14, 14, 122, 148, 157, 164, 113, 113, 109, + 113, 82, 14, 14, 14, 14, 14, 14, 186, 215, 200, 176, 100, 84, 52, 25, + 14, 14, 14, 14, 132, 167, 155, 141, 105, 109, 97, 60, 27, 14, 15, 16, + 16, 14, 19, 15, 16, 16, 15, 139, 178, 167, 136, 130, 114, 102, 78, 14, + 14, 14, 19, 205, 172, 155, 159, 114, 105, 92, 75, 21, 14, 14, 14, 18, + 14, 15, 14, 14, 176, 172, 167, 159, 150, 116, 104, 90, 54, 14, 15, 14, + 14, 14, 14, 130, 164, 173, 128, 118, 116, 109, 85, 43, 14, 14, 14, 16, + 21, 14, 14, 14, 18, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 136, 186, 176, 148, 148, 148, 124, 114, 73, 31, + 14, 19, 14, 139, 173, 175, 164, 122, 111, 122, 42, 20, 102, 159, 116, 105, + 95, 107, 107, 111, 84, 14, 14, 14, 31, 213, 181, 167, 178, 105, 109, 76, + 59, 24, 14, 14, 14, 61, 198, 198, 173, 173, 130, 113, 111, 47, 14, 14, + 14, 14, 16, 14, 14, 14, 14, 14, 14, 202, 175, 170, 134, 85, 100, 61, + 14, 14, 14, 16, 15, 14, 14, 14, 61, 72, 79, 67, 71, 76, 65, 87, + 69, 78, 72, 73, 72, 87, 198, 173, 157, 152, 152, 118, 111, 78, 15, 14, + 14, 14, 14, 14, 173, 170, 148, 148, 134, 97, 105, 87, 25, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 120, 162, 165, 167, 141, 145, 124, 79, 48, 14, + 21, 161, 164, 159, 128, 111, 87, 75, 43, 14, 14, 14, 18, 14, 14, 19, + 14, 14, 14, 14, 189, 175, 155, 136, 116, 102, 93, 49, 14, 14, 14, 14, + 109, 150, 148, 148, 126, 148, 114, 109, 78, 37, 14, 14, 14, 19, 14, 14, + 14, 141, 141, 139, 134, 132, 113, 90, 79, 29, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 84, 206, 197, 185, 169, 154, 120, 100, 87, 67, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 18, 16, 14, 167, 202, 179, 170, 148, 118, 97, 73, 55, 14, 19, 14, 14, + 16, 14, 14, 14, 16, 199, 194, 183, 159, 132, 111, 97, 52, 14, 14, 14, + 155, 164, 185, 178, 152, 141, 104, 97, 31, 14, 17, 14, 20, 14, 21, 15, + 15, 15, 15, 65, 190, 173, 148, 139, 124, 114, 71, 18, 14, 147, 175, 155, + 157, 124, 116, 97, 72, 18, 14, 14, 14, 14, 14, 14, 15, 14, 14, 15, + 68, 172, 183, 170, 152, 116, 122, 78, 20, 14, 14, 14, 157, 118, 126, 128, + 109, 120, 137, 126, 152, 56, 14, 14, 14, 14, 14, 14, 15, 14, 16, 14, + 14, 18, 14, 14, 14, 68, 200, 181, 173, 122, 107, 97, 111, 53, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 178, 175, 181, 159, 89, 92, 92, + 27, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 40, 181, 176, 155, 141, 137, 114, 122, 95, 27, 14, + 14, 14, 14, 126, 219, 210, 202, 150, 89, 84, 45, 14, 14, 14, 14, 30, + 190, 161, 162, 139, 113, 78, 93, 65, 14, 17, 16, 16, 14, 16, 16, 15, + 25, 15, 15, 155, 186, 178, 162, 132, 118, 120, 60, 14, 14, 14, 85, 199, + 181, 165, 165, 137, 109, 89, 72, 14, 14, 14, 14, 14, 17, 14, 14, 14, + 193, 175, 189, 147, 152, 113, 128, 81, 21, 14, 14, 14, 14, 14, 14, 176, + 178, 173, 143, 155, 126, 116, 78, 53, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 14, 150, 197, 189, 170, 161, 154, 141, 136, 78, 29, 16, 14, 32, 195, + 190, 164, 173, 132, 134, 84, 26, 14, 132, 164, 130, 130, 128, 109, 124, 137, + 73, 14, 18, 14, 167, 203, 200, 176, 161, 124, 93, 89, 57, 14, 14, 14, + 14, 161, 215, 197, 189, 162, 137, 130, 102, 41, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 102, 176, 179, 155, 116, 102, 85, 57, 14, 14, 14, 14, + 14, 29, 147, 210, 199, 193, 193, 194, 190, 176, 176, 182, 183, 181, 183, 169, + 194, 179, 173, 152, 155, 165, 134, 113, 87, 68, 14, 14, 14, 14, 14, 33, + 183, 164, 179, 143, 143, 120, 102, 71, 14, 14, 14, 18, 14, 17, 14, 16, + 14, 14, 78, 183, 186, 170, 162, 139, 132, 84, 28, 14, 87, 161, 159, 139, + 137, 111, 82, 71, 29, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 194, 195, 176, 150, 120, 98, 84, 48, 14, 14, 14, 14, 147, 141, 154, 152, + 141, 130, 126, 116, 72, 14, 14, 14, 22, 14, 14, 14, 28, 132, 155, 155, + 137, 145, 118, 109, 78, 14, 14, 14, 14, 21, 14, 14, 14, 14, 14, 118, + 213, 203, 190, 176, 157, 130, 105, 90, 63, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 186, + 208, 190, 178, 162, 126, 105, 92, 45, 14, 18, 14, 14, 14, 14, 15, 14, + 46, 210, 205, 195, 169, 139, 120, 100, 50, 14, 14, 28, 178, 175, 185, 178, + 147, 136, 98, 79, 19, 14, 14, 14, 15, 14, 19, 15, 15, 18, 14, 107, + 205, 183, 167, 148, 130, 124, 72, 14, 27, 173, 181, 167, 170, 124, 107, 85, + 55, 18, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 109, 192, 197, 186, + 165, 120, 120, 79, 14, 14, 14, 14, 134, 118, 132, 137, 118, 132, 157, 164, + 145, 162, 165, 145, 82, 31, 14, 14, 14, 14, 14, 14, 22, 16, 14, 20, + 14, 139, 218, 203, 173, 143, 124, 105, 126, 116, 97, 105, 134, 152, 162, 162, + 162, 162, 161, 150, 132, 195, 165, 147, 148, 102, 79, 85, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 175, 172, 169, 162, 145, 132, 141, 107, 30, 14, 14, 14, 47, 203, + 217, 208, 181, 141, 109, 64, 21, 14, 14, 14, 14, 97, 202, 188, 167, 154, + 116, 84, 92, 47, 14, 14, 16, 16, 14, 14, 14, 15, 16, 18, 14, 183, + 205, 194, 176, 145, 132, 120, 57, 14, 14, 14, 134, 214, 195, 178, 172, 139, + 118, 98, 72, 14, 14, 14, 14, 14, 14, 14, 14, 50, 207, 189, 192, 162, + 162, 122, 124, 76, 16, 14, 14, 14, 14, 14, 41, 194, 189, 185, 155, 164, + 134, 120, 92, 44, 14, 14, 15, 14, 15, 15, 15, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 159, 205, + 203, 183, 175, 167, 154, 139, 79, 30, 14, 14, 145, 209, 195, 193, 139, 122, + 124, 59, 18, 14, 145, 182, 161, 152, 128, 126, 130, 141, 75, 16, 14, 27, + 206, 211, 204, 186, 162, 130, 98, 93, 31, 14, 14, 14, 21, 194, 217, 206, + 182, 161, 148, 154, 155, 143, 143, 148, 152, 147, 148, 150, 148, 147, 141, 139, + 165, 194, 193, 176, 122, 85, 69, 40, 14, 14, 14, 14, 16, 169, 206, 193, + 206, 193, 186, 183, 182, 173, 165, 167, 164, 173, 183, 169, 164, 154, 167, 175, + 148, 161, 134, 116, 87, 52, 14, 14, 14, 14, 14, 71, 199, 183, 185, 161, + 139, 124, 109, 67, 14, 14, 14, 15, 19, 15, 14, 15, 14, 14, 126, 209, + 195, 173, 185, 150, 152, 85, 19, 14, 134, 173, 164, 154, 145, 111, 89, 79, + 19, 14, 14, 14, 14, 14, 15, 15, 14, 14, 15, 23, 205, 203, 185, 175, + 143, 134, 79, 42, 14, 14, 14, 14, 167, 159, 164, 161, 154, 150, 139, 114, + 73, 14, 14, 14, 14, 14, 14, 14, 65, 159, 164, 169, 157, 155, 126, 105, + 75, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 170, 217, 209, 198, 185, + 172, 139, 111, 93, 56, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 30, 211, 216, 203, 178, 170, + 130, 109, 105, 29, 14, 15, 18, 14, 14, 14, 16, 14, 118, 216, 214, 206, + 176, 147, 134, 97, 40, 14, 14, 98, 195, 188, 183, 181, 148, 136, 107, 59, + 14, 14, 14, 14, 14, 14, 15, 15, 15, 18, 14, 167, 214, 192, 186, 157, + 134, 134, 63, 14, 92, 185, 178, 172, 176, 134, 113, 98, 37, 14, 14, 14, + 14, 14, 14, 14, 14, 17, 14, 14, 172, 202, 209, 197, 178, 132, 124, 82, + 14, 14, 14, 14, 152, 124, 120, 116, 145, 154, 143, 137, 145, 173, 183, 178, + 167, 164, 155, 148, 71, 16, 15, 15, 14, 14, 16, 14, 14, 186, 223, 209, + 176, 161, 161, 132, 137, 148, 164, 183, 194, 195, 203, 208, 208, 190, 214, 200, + 203, 188, 181, 172, 139, 126, 85, 84, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 148, 182, + 189, 179, 154, 155, 139, 137, 52, 14, 14, 14, 147, 225, 216, 203, 152, 120, + 105, 34, 14, 14, 14, 14, 14, 183, 203, 202, 169, 162, 122, 97, 82, 25, + 14, 14, 16, 16, 16, 14, 14, 16, 15, 27, 14, 221, 216, 206, 186, 155, + 139, 113, 49, 14, 14, 14, 167, 214, 200, 193, 181, 152, 128, 98, 59, 14, + 14, 14, 14, 14, 14, 14, 14, 128, 213, 194, 193, 179, 164, 137, 116, 68, + 14, 14, 14, 14, 14, 14, 107, 210, 199, 192, 169, 172, 145, 107, 98, 26, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 175, 214, 210, 192, 183, 176, + 165, 150, 89, 32, 14, 20, 217, 206, 186, 189, 141, 137, 104, 34, 14, 14, + 155, 198, 179, 162, 130, 150, 139, 145, 84, 18, 14, 120, 226, 215, 202, 189, + 154, 130, 105, 81, 14, 14, 14, 16, 48, 220, 216, 208, 193, 172, 157, 157, + 165, 178, 199, 208, 194, 193, 190, 193, 195, 193, 195, 193, 182, 190, 183, 170, + 116, 90, 84, 38, 14, 14, 14, 14, 97, 213, 211, 197, 193, 181, 167, 170, + 172, 169, 169, 165, 167, 159, 159, 161, 152, 161, 167, 165, 157, 159, 134, 122, + 87, 38, 14, 14, 14, 14, 14, 147, 209, 199, 192, 178, 139, 132, 107, 52, + 14, 15, 14, 14, 20, 14, 14, 14, 14, 14, 170, 215, 206, 182, 195, 159, + 162, 81, 14, 33, 188, 178, 161, 167, 141, 111, 100, 73, 14, 14, 14, 17, + 15, 14, 15, 16, 14, 15, 14, 76, 220, 204, 197, 189, 143, 161, 78, 31, + 14, 14, 14, 71, 183, 167, 164, 162, 167, 162, 139, 113, 65, 15, 14, 14, + 14, 14, 19, 14, 132, 181, 173, 175, 175, 161, 128, 105, 61, 14, 15, 14, + 14, 16, 14, 14, 14, 14, 14, 209, 224, 214, 203, 190, 181, 154, 122, 97, + 42, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 71, 233, 219, 209, 181, 173, 134, 105, 100, 16, + 16, 14, 19, 14, 14, 14, 14, 14, 189, 223, 218, 210, 179, 154, 141, 90, + 27, 14, 14, 170, 203, 192, 178, 175, 155, 134, 124, 36, 14, 15, 14, 14, + 14, 14, 14, 14, 16, 15, 14, 210, 217, 200, 193, 164, 143, 143, 55, 14, + 159, 188, 178, 181, 175, 134, 113, 102, 21, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 14, 14, 207, 210, 216, 204, 181, 137, 128, 85, 14, 14, 14, 14, + 143, 134, 124, 118, 157, 179, 175, 185, 203, 199, 193, 189, 198, 194, 179, 162, + 190, 169, 71, 14, 14, 15, 14, 14, 19, 217, 221, 211, 185, 176, 181, 162, + 143, 152, 170, 181, 188, 186, 198, 205, 208, 189, 206, 186, 190, 162, 178, 172, + 114, 118, 98, 67, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 85, 204, 198, 190, 170, 172, + 136, 164, 81, 14, 14, 61, 213, 222, 210, 185, 141, 111, 71, 18, 14, 14, + 14, 14, 16, 216, 205, 208, 182, 154, 132, 116, 69, 14, 15, 14, 15, 14, + 14, 14, 14, 19, 15, 18, 47, 238, 225, 215, 188, 162, 150, 104, 39, 14, + 14, 17, 202, 215, 203, 200, 185, 164, 139, 97, 40, 14, 14, 14, 14, 14, + 14, 14, 14, 175, 213, 200, 195, 194, 162, 148, 113, 61, 14, 15, 14, 15, + 14, 14, 169, 218, 209, 202, 183, 170, 147, 100, 95, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 182, 223, 216, 198, 192, 188, 183, 162, 95, 34, + 14, 111, 214, 206, 188, 157, 162, 141, 85, 21, 14, 14, 169, 205, 193, 167, + 150, 167, 159, 159, 89, 14, 29, 210, 225, 210, 203, 182, 148, 137, 111, 55, + 14, 14, 14, 14, 124, 232, 217, 205, 189, 175, 165, 167, 182, 194, 207, 211, + 189, 183, 182, 183, 186, 190, 192, 193, 202, 192, 179, 159, 114, 105, 93, 24, + 14, 14, 14, 43, 204, 199, 203, 208, 179, 165, 145, 132, 128, 126, 120, 116, + 120, 105, 113, 139, 148, 175, 176, 170, 181, 169, 147, 137, 84, 24, 14, 14, + 14, 14, 14, 199, 215, 209, 194, 190, 148, 136, 104, 34, 14, 15, 14, 14, + 14, 14, 14, 14, 14, 16, 203, 214, 213, 194, 186, 164, 143, 79, 14, 105, + 205, 181, 165, 170, 134, 118, 107, 42, 14, 14, 14, 18, 15, 14, 14, 16, + 14, 16, 14, 148, 227, 215, 203, 190, 139, 155, 85, 18, 14, 14, 16, 169, + 190, 178, 170, 165, 170, 161, 137, 111, 38, 14, 20, 15, 14, 16, 14, 14, + 182, 194, 181, 182, 182, 155, 130, 107, 40, 14, 16, 14, 14, 14, 14, 14, + 14, 14, 24, 227, 227, 216, 207, 197, 186, 162, 126, 95, 32, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, + 14, 17, 136, 238, 224, 214, 188, 172, 137, 113, 85, 14, 19, 14, 16, 14, + 14, 16, 14, 15, 220, 225, 226, 209, 188, 165, 147, 89, 19, 14, 15, 210, + 204, 192, 181, 170, 157, 120, 124, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 28, 226, 222, 205, 200, 167, 157, 141, 50, 15, 208, 202, 192, 189, + 173, 132, 104, 82, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, + 222, 214, 222, 207, 179, 143, 134, 78, 14, 15, 16, 14, 78, 126, 157, 145, + 145, 150, 175, 207, 182, 182, 194, 202, 197, 185, 182, 194, 206, 188, 197, 136, + 14, 14, 23, 14, 95, 237, 228, 225, 203, 186, 181, 170, 147, 148, 148, 154, + 157, 154, 157, 165, 165, 162, 172, 159, 150, 136, 141, 105, 113, 102, 104, 42, + 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 29, 215, 202, 193, 192, 181, 157, 164, 95, 14, + 14, 173, 226, 216, 199, 155, 136, 92, 30, 14, 14, 14, 14, 14, 65, 225, + 217, 217, 208, 155, 145, 122, 53, 14, 16, 14, 14, 14, 14, 14, 14, 14, + 21, 15, 126, 240, 227, 218, 193, 169, 161, 95, 30, 14, 14, 61, 225, 218, + 205, 207, 185, 161, 143, 89, 22, 14, 14, 16, 14, 14, 14, 14, 14, 199, + 211, 210, 200, 197, 161, 152, 116, 52, 14, 17, 14, 14, 14, 20, 204, 223, + 217, 213, 194, 172, 154, 105, 75, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 192, 227, 222, 209, 202, 198, 193, 173, 105, 37, 15, 204, 204, 206, + 199, 148, 139, 111, 63, 16, 14, 16, 179, 216, 204, 176, 169, 175, 173, 173, + 95, 14, 128, 234, 215, 207, 202, 178, 141, 147, 104, 30, 14, 16, 14, 14, + 203, 240, 225, 206, 185, 175, 165, 162, 170, 181, 183, 173, 154, 143, 143, 148, + 150, 150, 155, 157, 159, 159, 148, 137, 109, 128, 102, 14, 14, 14, 14, 116, + 222, 205, 208, 198, 169, 162, 141, 122, 109, 105, 109, 109, 120, 111, 130, 148, + 165, 173, 190, 198, 203, 189, 165, 148, 85, 18, 14, 14, 14, 14, 38, 221, + 217, 213, 197, 192, 154, 139, 87, 19, 14, 14, 14, 14, 14, 19, 14, 14, + 14, 64, 223, 217, 213, 204, 173, 181, 109, 72, 14, 175, 206, 189, 178, 176, + 137, 132, 107, 20, 14, 14, 14, 14, 15, 14, 14, 14, 16, 14, 14, 189, + 229, 223, 214, 188, 154, 141, 98, 14, 14, 14, 14, 199, 193, 182, 178, 175, + 172, 154, 132, 105, 18, 14, 14, 14, 14, 14, 14, 16, 200, 199, 189, 186, + 186, 147, 139, 118, 20, 14, 14, 14, 14, 14, 14, 14, 14, 14, 64, 232, + 228, 219, 209, 199, 188, 164, 126, 93, 22, 14, 15, 14, 14, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 194, 237, + 228, 216, 197, 162, 143, 120, 56, 14, 16, 14, 15, 14, 14, 14, 14, 40, + 230, 228, 226, 207, 197, 175, 150, 82, 16, 15, 50, 223, 205, 193, 186, 155, + 161, 128, 90, 15, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 81, 232, + 224, 208, 203, 170, 169, 120, 40, 55, 219, 203, 199, 197, 169, 145, 107, 68, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 78, 228, 225, 223, 202, + 173, 147, 130, 50, 15, 16, 18, 14, 19, 68, 154, 173, 178, 173, 169, 176, + 209, 202, 199, 194, 181, 165, 173, 195, 185, 208, 195, 176, 92, 14, 14, 15, + 179, 239, 229, 223, 214, 195, 176, 155, 134, 120, 120, 128, 130, 118, 116, 118, + 118, 132, 122, 128, 118, 130, 143, 102, 137, 111, 105, 24, 15, 14, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 193, 204, 192, 202, 183, 175, 157, 134, 76, 93, 223, 220, 204, + 172, 134, 111, 57, 14, 14, 19, 14, 14, 14, 155, 221, 224, 220, 216, 164, + 152, 118, 34, 14, 15, 14, 14, 14, 14, 14, 14, 14, 18, 14, 199, 233, + 228, 217, 189, 165, 162, 85, 24, 14, 14, 134, 225, 217, 207, 211, 183, 167, + 137, 81, 14, 14, 14, 15, 14, 14, 14, 14, 39, 217, 219, 217, 202, 189, + 155, 148, 113, 34, 15, 15, 14, 14, 14, 56, 225, 227, 226, 219, 205, 172, + 152, 120, 49, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 192, 231, + 229, 217, 210, 203, 194, 178, 124, 52, 116, 225, 211, 198, 182, 169, 105, 104, + 34, 14, 14, 16, 189, 224, 209, 190, 181, 173, 181, 176, 116, 14, 207, 234, + 210, 208, 194, 165, 141, 130, 76, 15, 14, 14, 14, 14, 232, 238, 226, 202, + 190, 178, 150, 132, 122, 136, 143, 126, 116, 107, 109, 114, 114, 116, 118, 118, + 111, 139, 136, 136, 126, 137, 93, 14, 14, 14, 14, 203, 226, 229, 214, 190, + 162, 152, 124, 87, 68, 67, 72, 78, 82, 61, 65, 89, 192, 199, 209, 213, + 214, 202, 179, 148, 81, 15, 14, 14, 14, 14, 109, 233, 222, 217, 198, 189, + 157, 130, 76, 14, 14, 14, 14, 14, 14, 23, 14, 14, 14, 145, 225, 218, + 205, 204, 167, 192, 97, 50, 14, 205, 205, 200, 192, 178, 143, 134, 97, 14, + 16, 14, 14, 14, 14, 15, 14, 14, 14, 14, 23, 215, 227, 232, 217, 179, + 161, 130, 93, 14, 14, 15, 31, 222, 199, 186, 189, 179, 172, 157, 128, 98, + 14, 14, 14, 14, 14, 14, 14, 75, 208, 204, 202, 189, 186, 145, 148, 109, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 139, 231, 226, 219, 209, 203, + 193, 167, 126, 92, 15, 14, 16, 14, 14, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 31, 223, 232, 225, 207, 199, 147, + 147, 126, 28, 14, 14, 14, 14, 14, 15, 14, 14, 102, 228, 227, 228, 195, + 199, 176, 130, 65, 18, 18, 124, 227, 205, 189, 189, 150, 154, 137, 46, 15, + 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 178, 234, 222, 209, 197, 155, + 164, 84, 25, 120, 222, 204, 207, 197, 162, 162, 111, 41, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 179, 229, 229, 223, 193, 169, 137, 116, 24, + 21, 14, 15, 14, 14, 19, 67, 114, 159, 198, 207, 182, 175, 183, 192, 200, + 203, 203, 193, 183, 207, 185, 164, 189, 120, 22, 14, 14, 202, 229, 231, 211, + 215, 204, 179, 130, 69, 65, 68, 81, 97, 102, 105, 111, 114, 113, 92, 89, + 82, 75, 111, 81, 82, 63, 54, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 137, + 210, 200, 209, 194, 178, 173, 167, 178, 204, 219, 205, 175, 141, 113, 67, 27, + 14, 14, 15, 14, 14, 14, 195, 223, 228, 220, 207, 175, 155, 102, 18, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 36, 233, 230, 226, 214, 170, 154, + 155, 72, 20, 14, 14, 186, 218, 216, 207, 216, 176, 170, 118, 72, 14, 14, + 14, 14, 14, 14, 14, 14, 104, 223, 224, 217, 204, 182, 157, 134, 105, 18, + 14, 14, 15, 14, 14, 126, 236, 233, 227, 215, 200, 172, 143, 124, 24, 15, + 15, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 193, 229, 228, 217, 208, 202, + 193, 190, 157, 97, 217, 220, 214, 186, 155, 145, 105, 72, 16, 14, 14, 14, + 192, 226, 208, 198, 178, 185, 190, 183, 154, 72, 226, 222, 210, 199, 173, 152, + 141, 95, 42, 15, 14, 14, 14, 25, 242, 236, 218, 195, 170, 162, 132, 82, + 60, 73, 100, 100, 89, 84, 85, 87, 90, 90, 97, 97, 104, 122, 107, 107, + 97, 73, 48, 14, 18, 14, 72, 237, 234, 232, 213, 198, 179, 148, 82, 31, + 15, 14, 14, 14, 14, 14, 14, 24, 217, 228, 230, 222, 222, 205, 178, 139, + 75, 14, 18, 14, 14, 14, 198, 236, 226, 222, 202, 179, 154, 111, 65, 14, + 14, 14, 14, 15, 14, 15, 14, 14, 24, 199, 222, 209, 199, 195, 164, 175, + 90, 25, 23, 225, 211, 206, 195, 182, 145, 116, 72, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 76, 234, 220, 226, 214, 169, 155, 120, 61, 14, + 18, 21, 109, 237, 203, 186, 185, 182, 173, 154, 111, 75, 14, 19, 14, 14, + 16, 14, 14, 169, 209, 203, 203, 189, 186, 141, 141, 79, 14, 16, 14, 14, + 14, 14, 14, 14, 17, 14, 189, 234, 232, 224, 215, 206, 198, 169, 124, 90, + 14, 14, 18, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 41, 238, 238, 228, 206, 204, 139, 145, 118, 14, 16, + 14, 14, 14, 14, 15, 14, 14, 175, 231, 231, 231, 188, 199, 176, 113, 52, + 16, 18, 173, 228, 214, 195, 198, 141, 132, 134, 15, 19, 14, 15, 14, 14, + 14, 14, 14, 14, 15, 14, 228, 241, 231, 215, 198, 161, 165, 64, 18, 165, + 235, 219, 222, 202, 167, 165, 95, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 224, 232, 235, 225, 188, 162, 137, 105, 14, 19, 14, 14, 14, + 14, 14, 15, 14, 14, 59, 134, 139, 164, 193, 198, 189, 189, 206, 207, 197, + 195, 211, 181, 179, 150, 38, 14, 14, 219, 233, 244, 211, 215, 209, 176, 100, + 24, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 20, 14, 20, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 87, 225, 214, 217, 205, + 197, 204, 190, 192, 222, 199, 204, 155, 118, 111, 39, 14, 14, 14, 14, 15, + 14, 14, 218, 232, 236, 226, 195, 183, 147, 85, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 92, 246, 236, 232, 218, 170, 145, 141, 63, 14, 14, + 14, 229, 230, 232, 219, 223, 170, 159, 107, 71, 14, 14, 14, 14, 14, 14, + 14, 14, 161, 226, 225, 221, 211, 194, 164, 128, 98, 14, 14, 14, 15, 14, + 14, 173, 240, 238, 225, 210, 195, 172, 126, 122, 14, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 192, 232, 228, 217, 211, 202, 199, 204, 193, 152, + 232, 203, 204, 207, 167, 100, 128, 28, 14, 19, 16, 14, 189, 227, 210, 205, + 185, 198, 203, 197, 190, 176, 234, 226, 219, 203, 157, 143, 139, 69, 22, 14, + 14, 19, 21, 55, 249, 242, 222, 213, 186, 181, 134, 46, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 20, 14, 14, 16, + 18, 14, 208, 231, 230, 228, 224, 181, 161, 114, 50, 16, 14, 14, 14, 14, + 14, 14, 22, 46, 246, 238, 233, 224, 222, 205, 173, 120, 68, 14, 21, 14, + 14, 14, 230, 238, 231, 227, 207, 175, 150, 105, 60, 14, 18, 14, 14, 14, + 14, 14, 14, 15, 67, 231, 226, 218, 210, 199, 173, 161, 90, 15, 48, 242, + 225, 221, 205, 192, 155, 100, 57, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 148, 243, 223, 227, 208, 165, 155, 132, 40, 14, 16, 14, 167, 235, + 211, 195, 190, 181, 178, 157, 100, 56, 14, 20, 14, 14, 17, 14, 14, 195, + 224, 216, 213, 190, 188, 136, 126, 53, 14, 21, 14, 14, 14, 14, 14, 15, + 14, 14, 229, 237, 234, 236, 224, 209, 208, 186, 122, 72, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 20, 14, 14, 14, 14, 15, + 15, 155, 244, 236, 232, 219, 194, 167, 116, 81, 14, 14, 14, 14, 14, 14, + 14, 21, 15, 229, 239, 241, 225, 215, 188, 175, 143, 30, 14, 14, 188, 222, + 218, 217, 193, 172, 143, 87, 16, 16, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 102, 246, 248, 243, 234, 210, 193, 143, 47, 19, 204, 237, 243, 239, 214, + 186, 173, 93, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 25, 87, 237, + 238, 237, 234, 164, 154, 136, 69, 14, 18, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 41, 65, 130, 172, 217, 215, 221, 219, 217, 226, 203, 175, + 141, 55, 14, 14, 238, 240, 240, 230, 211, 203, 164, 97, 14, 14, 14, 14, + 14, 15, 14, 14, 20, 14, 14, 19, 14, 14, 21, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 217, 224, 239, 217, 217, 215, 216, 218, + 218, 208, 173, 126, 118, 53, 16, 14, 14, 14, 14, 15, 14, 14, 229, 235, + 239, 215, 203, 183, 122, 57, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 186, 237, 243, 236, 211, 197, 161, 120, 29, 20, 14, 81, 247, 240, 237, + 226, 209, 181, 157, 114, 30, 14, 14, 15, 15, 14, 14, 14, 14, 205, 236, + 228, 236, 215, 188, 161, 130, 75, 14, 14, 14, 14, 14, 14, 225, 242, 237, + 221, 220, 203, 155, 116, 76, 14, 14, 15, 14, 17, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 199, 234, 232, 222, 215, 213, 217, 214, 216, 214, 218, 215, 219, 170, + 161, 137, 89, 14, 15, 15, 16, 14, 192, 232, 225, 213, 200, 204, 210, 219, + 226, 234, 236, 235, 228, 221, 162, 150, 89, 42, 14, 16, 14, 14, 14, 128, + 244, 243, 239, 224, 208, 193, 147, 53, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 18, 14, 14, 18, 14, 16, 219, 235, + 229, 228, 197, 183, 167, 89, 27, 14, 14, 14, 14, 14, 14, 14, 17, 143, + 241, 246, 242, 225, 225, 186, 167, 126, 22, 19, 14, 14, 14, 64, 234, 233, + 240, 218, 223, 178, 157, 120, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, + 219, 238, 241, 233, 229, 185, 205, 143, 71, 14, 120, 241, 237, 233, 236, 192, + 175, 139, 28, 20, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 227, 243, + 228, 234, 209, 183, 145, 118, 21, 14, 14, 14, 195, 219, 206, 219, 189, 199, + 178, 132, 116, 14, 18, 14, 14, 14, 14, 14, 14, 231, 228, 238, 224, 206, + 164, 143, 120, 27, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 235, 241, + 236, 234, 225, 216, 206, 186, 120, 59, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 24, 15, 14, 14, 14, 14, 14, 14, 14, 15, 185, 245, 238, + 236, 225, 193, 169, 128, 65, 14, 14, 14, 14, 14, 14, 14, 24, 31, 239, + 239, 240, 225, 208, 175, 154, 104, 16, 14, 14, 182, 225, 224, 225, 206, 176, + 155, 85, 14, 15, 14, 14, 14, 14, 16, 14, 14, 19, 14, 215, 251, 243, + 245, 230, 200, 186, 122, 36, 14, 194, 242, 242, 236, 215, 183, 157, 84, 20, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 183, 240, 238, 240, 203, 178, + 155, 124, 40, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 21, 55, 181, 231, 231, 233, 230, 233, 202, 162, 122, 39, 14, 31, + 240, 241, 243, 234, 216, 203, 155, 81, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 16, 14, 14, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 18, 197, 234, 239, 230, 225, 221, 220, 218, 210, 185, 147, 113, + 75, 34, 15, 14, 14, 14, 14, 15, 14, 14, 231, 234, 241, 218, 200, 176, + 137, 57, 15, 14, 14, 14, 14, 14, 14, 14, 16, 14, 31, 231, 246, 237, + 235, 194, 179, 150, 102, 21, 14, 14, 141, 251, 243, 240, 226, 208, 182, 150, + 114, 32, 14, 15, 16, 16, 14, 14, 14, 22, 215, 239, 234, 234, 217, 193, + 161, 118, 43, 14, 14, 14, 14, 14, 34, 238, 245, 237, 221, 214, 195, 150, + 126, 63, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 203, 238, + 235, 229, 219, 219, 219, 220, 218, 220, 217, 215, 203, 178, 134, 116, 55, 14, + 15, 15, 16, 14, 193, 234, 230, 220, 211, 215, 219, 221, 225, 234, 239, 238, + 230, 195, 170, 114, 82, 15, 14, 14, 14, 14, 15, 152, 243, 244, 240, 232, + 207, 186, 134, 54, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 26, 15, 14, 14, 14, 16, 16, 14, 14, 44, 224, 233, 230, 217, 195, 176, + 120, 53, 14, 14, 14, 14, 14, 14, 14, 14, 14, 203, 244, 246, 244, 232, + 222, 176, 154, 102, 18, 16, 14, 14, 14, 124, 243, 239, 238, 216, 215, 173, + 161, 128, 16, 14, 18, 15, 14, 14, 14, 14, 14, 76, 243, 242, 240, 228, + 220, 189, 185, 128, 43, 14, 104, 239, 242, 236, 231, 190, 195, 148, 23, 15, + 20, 15, 14, 14, 15, 14, 14, 14, 14, 87, 239, 243, 234, 230, 199, 167, + 145, 69, 16, 14, 14, 19, 207, 221, 217, 226, 202, 198, 172, 132, 98, 14, + 15, 14, 15, 14, 14, 17, 53, 237, 238, 244, 228, 205, 159, 124, 89, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 32, 239, 243, 241, 231, 232, 229, + 208, 189, 137, 53, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 18, 14, 16, 14, 14, 14, 14, 26, 222, 243, 242, 236, 219, 181, 161, + 128, 36, 14, 14, 14, 14, 14, 14, 18, 19, 100, 246, 242, 242, 225, 209, + 173, 134, 78, 14, 14, 14, 186, 226, 226, 225, 202, 175, 137, 76, 14, 18, + 14, 14, 14, 14, 14, 14, 14, 14, 20, 250, 250, 240, 243, 213, 189, 176, + 92, 24, 14, 186, 240, 234, 224, 210, 178, 136, 69, 20, 14, 14, 15, 15, + 14, 14, 14, 14, 16, 26, 239, 243, 239, 237, 185, 173, 155, 95, 19, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 15, + 139, 234, 225, 227, 226, 225, 188, 159, 122, 33, 19, 92, 240, 242, 243, 235, + 218, 204, 154, 75, 14, 14, 14, 14, 14, 14, 14, 14, 19, 17, 14, 14, + 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, + 120, 238, 230, 234, 228, 225, 223, 217, 202, 161, 126, 105, 38, 21, 14, 14, + 15, 14, 14, 14, 14, 14, 232, 235, 239, 215, 195, 176, 132, 42, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 14, 111, 246, 248, 238, 231, 176, 165, 143, + 76, 14, 14, 14, 204, 249, 238, 236, 218, 197, 176, 134, 60, 14, 14, 14, + 14, 15, 14, 18, 16, 78, 228, 240, 235, 228, 217, 183, 159, 111, 21, 16, + 15, 14, 14, 15, 97, 243, 243, 234, 221, 207, 183, 145, 118, 37, 19, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 203, 240, 239, 232, 225, 224, + 222, 220, 220, 221, 217, 216, 181, 175, 111, 78, 25, 14, 14, 14, 15, 14, + 195, 238, 234, 225, 217, 220, 222, 221, 225, 232, 234, 234, 224, 175, 159, 100, + 50, 14, 14, 14, 14, 14, 15, 193, 241, 243, 242, 236, 233, 203, 150, 65, + 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 27, 19, + 14, 14, 15, 14, 14, 113, 232, 234, 232, 211, 202, 183, 147, 63, 19, 14, + 14, 14, 14, 14, 14, 14, 14, 242, 246, 246, 244, 232, 211, 169, 143, 78, + 14, 14, 14, 14, 14, 198, 243, 238, 236, 217, 214, 189, 139, 85, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 183, 241, 238, 242, 234, 202, 190, 162, 93, + 19, 15, 100, 234, 239, 237, 223, 172, 181, 111, 15, 14, 14, 15, 18, 14, + 14, 14, 14, 14, 14, 217, 242, 238, 234, 214, 183, 159, 136, 29, 16, 14, + 19, 61, 225, 228, 229, 221, 208, 185, 155, 128, 67, 14, 14, 16, 14, 14, + 14, 15, 141, 238, 241, 243, 226, 202, 161, 118, 65, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 68, 243, 249, 247, 234, 238, 239, 218, 202, 162, 63, + 16, 14, 14, 14, 15, 15, 15, 15, 14, 19, 14, 14, 22, 15, 14, 14, + 14, 14, 14, 15, 44, 240, 244, 246, 239, 218, 175, 155, 118, 15, 15, 14, + 14, 14, 14, 14, 15, 16, 182, 248, 246, 243, 232, 209, 179, 137, 63, 14, + 14, 14, 193, 231, 231, 228, 207, 182, 139, 78, 15, 21, 14, 14, 14, 14, + 14, 21, 14, 14, 148, 249, 244, 249, 238, 197, 183, 164, 63, 14, 15, 189, + 234, 228, 219, 205, 183, 147, 68, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 165, 249, 246, 239, 222, 208, 148, 137, 65, 18, 15, 14, 18, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 27, 14, 136, 238, 235, 229, + 223, 217, 183, 164, 120, 25, 16, 137, 243, 245, 245, 240, 226, 211, 169, 93, + 14, 14, 14, 17, 17, 14, 14, 16, 14, 14, 14, 14, 20, 14, 14, 47, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 55, 234, 224, 239, + 224, 229, 225, 213, 192, 161, 118, 84, 19, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 236, 238, 242, 217, 200, 182, 124, 32, 14, 21, 14, 14, 14, 14, + 14, 15, 16, 15, 234, 239, 243, 246, 225, 182, 170, 118, 47, 14, 14, 26, + 232, 244, 234, 235, 217, 189, 178, 126, 65, 20, 14, 19, 18, 18, 14, 14, + 15, 152, 242, 242, 237, 232, 221, 182, 155, 111, 15, 16, 15, 16, 15, 14, + 169, 245, 243, 236, 229, 206, 181, 159, 107, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 15, 207, 243, 244, 238, 232, 232, 232, 230, 229, 227, + 223, 217, 176, 162, 105, 44, 14, 17, 14, 14, 14, 15, 195, 243, 239, 232, + 222, 223, 228, 227, 229, 233, 234, 233, 210, 181, 132, 97, 17, 14, 14, 14, + 16, 14, 18, 216, 239, 244, 243, 240, 219, 193, 143, 61, 15, 14, 14, 14, + 15, 14, 14, 14, 14, 15, 15, 15, 33, 15, 18, 36, 14, 14, 14, 14, + 14, 188, 234, 232, 234, 211, 218, 198, 148, 59, 15, 15, 23, 18, 14, 15, + 16, 18, 45, 250, 240, 242, 245, 243, 210, 170, 139, 59, 14, 14, 14, 14, + 25, 236, 239, 234, 234, 224, 213, 198, 148, 63, 20, 21, 15, 16, 21, 18, + 14, 21, 76, 243, 242, 241, 239, 229, 195, 190, 152, 59, 15, 18, 113, 231, + 232, 239, 221, 175, 170, 90, 15, 19, 14, 14, 15, 14, 14, 14, 14, 19, + 57, 246, 243, 238, 226, 190, 159, 155, 104, 14, 18, 18, 14, 147, 242, 231, + 237, 222, 218, 181, 150, 114, 38, 14, 14, 17, 14, 14, 14, 15, 215, 242, + 243, 240, 224, 198, 170, 124, 56, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 120, 249, 251, 250, 240, 243, 244, 225, 211, 186, 97, 15, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 18, 14, 14, 30, 167, 14, 14, 20, 15, + 90, 248, 248, 250, 244, 221, 186, 161, 100, 14, 15, 14, 14, 15, 14, 15, + 16, 18, 234, 251, 250, 246, 235, 206, 181, 124, 45, 14, 15, 14, 199, 237, + 236, 232, 218, 203, 188, 104, 18, 16, 15, 19, 18, 15, 14, 21, 15, 38, + 242, 243, 248, 249, 222, 189, 169, 128, 37, 14, 14, 188, 231, 231, 223, 205, + 188, 169, 78, 14, 15, 19, 15, 14, 14, 14, 14, 14, 23, 249, 249, 247, + 237, 199, 188, 152, 118, 40, 21, 15, 15, 25, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 29, 15, 198, 239, 241, 232, 225, 215, 178, 150, + 90, 14, 14, 136, 249, 249, 250, 248, 239, 228, 197, 141, 24, 14, 14, 14, + 14, 14, 14, 14, 18, 16, 30, 14, 14, 14, 24, 137, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 21, 222, 228, 243, 225, 234, 229, 194, + 175, 159, 98, 44, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 239, 239, + 245, 228, 217, 197, 176, 43, 16, 21, 15, 15, 16, 16, 18, 19, 18, 124, + 253, 240, 249, 241, 200, 190, 165, 78, 21, 14, 14, 52, 242, 238, 234, 232, + 222, 194, 186, 139, 52, 15, 15, 18, 19, 19, 14, 16, 18, 211, 250, 244, + 239, 240, 227, 185, 148, 104, 15, 15, 14, 16, 14, 14, 220, 247, 246, 239, + 238, 215, 188, 161, 111, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 18, 16, 215, 248, 248, 246, 242, 241, 242, 240, 238, 237, 228, 206, 176, 126, + 89, 18, 14, 14, 14, 14, 14, 15, 204, 248, 247, 242, 229, 229, 234, 234, + 238, 239, 240, 234, 193, 179, 114, 60, 14, 14, 14, 14, 14, 14, 15, 216, + 237, 243, 243, 242, 243, 233, 203, 128, 24, 16, 15, 15, 15, 15, 15, 15, + 16, 16, 18, 18, 16, 21, 56, 107, 19, 14, 14, 14, 14, 224, 237, 236, + 238, 223, 231, 217, 186, 84, 19, 18, 19, 16, 15, 14, 14, 14, 136, 251, + 248, 250, 245, 240, 216, 176, 134, 46, 14, 14, 14, 15, 76, 251, 240, 237, + 233, 230, 208, 194, 148, 27, 19, 19, 16, 15, 15, 15, 18, 27, 213, 253, + 246, 250, 239, 215, 193, 181, 137, 23, 16, 15, 114, 230, 228, 236, 219, 190, + 197, 118, 25, 16, 19, 14, 14, 14, 16, 17, 15, 14, 202, 252, 247, 246, + 217, 173, 128, 134, 53, 14, 15, 19, 16, 222, 248, 239, 243, 227, 226, 181, + 147, 100, 18, 14, 14, 16, 14, 21, 15, 21, 243, 249, 246, 240, 225, 194, + 173, 124, 44, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 169, 251, 252, + 253, 248, 249, 250, 243, 236, 218, 175, 20, 18, 16, 16, 16, 16, 16, 15, + 24, 18, 15, 15, 15, 24, 113, 226, 14, 14, 21, 18, 165, 249, 251, 252, + 248, 224, 198, 165, 76, 15, 14, 15, 14, 14, 14, 16, 16, 34, 250, 253, + 254, 250, 239, 206, 178, 107, 28, 15, 18, 15, 197, 239, 240, 240, 231, 226, + 230, 157, 20, 18, 18, 23, 20, 15, 16, 15, 16, 170, 251, 248, 254, 238, + 200, 186, 155, 85, 21, 14, 15, 188, 233, 236, 232, 217, 200, 193, 116, 21, + 14, 14, 15, 15, 14, 14, 14, 14, 165, 254, 252, 249, 236, 199, 147, 173, + 84, 23, 18, 18, 34, 19, 18, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 39, 15, 16, 50, 246, 246, 246, 232, 229, 207, 165, 137, 71, 14, 21, 137, + 250, 252, 253, 252, 246, 243, 232, 197, 64, 34, 16, 15, 18, 16, 16, 18, + 15, 15, 15, 15, 31, 104, 170, 207, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 16, 15, 16, 189, 236, 246, 238, 241, 229, 190, 167, 143, 73, 21, + 14, 14, 14, 14, 14, 14, 14, 16, 18, 18, 242, 242, 248, 238, 234, 220, + 227, 90, 19, 18, 16, 15, 19, 15, 21, 20, 20, 244, 250, 252, 253, 216, + 186, 193, 150, 50, 15, 16, 15, 126, 246, 242, 242, 236, 235, 218, 210, 176, + 34, 16, 16, 16, 16, 15, 15, 19, 68, 240, 253, 248, 244, 246, 223, 194, + 154, 82, 23, 15, 14, 16, 14, 27, 244, 250, 250, 241, 243, 217, 185, 150, + 92, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 18, 224, 251, + 252, 250, 248, 248, 248, 247, 246, 245, 232, 198, 179, 102, 68, 14, 14, 14, + 14, 14, 15, 15, 215, 252, 252, 249, 238, 236, 239, 240, 245, 247, 241, 234, + 195, 161, 107, 24, 14, 14, 15, 14, 14, 14, 15, 194, 244, 247, 248, 247, + 244, 243, 235, 186, 85, 26, 21, 20, 18, 18, 19, 20, 21, 21, 21, 21, + 21, 145, 206, 172, 14, 14, 14, 16, 15, 240, 245, 243, 242, 231, 239, 230, + 217, 143, 48, 21, 21, 21, 18, 16, 15, 26, 214, 252, 253, 253, 246, 236, + 217, 178, 130, 31, 14, 14, 14, 15, 167, 251, 243, 242, 240, 240, 229, 219, + 139, 23, 20, 21, 23, 18, 18, 20, 48, 122, 251, 251, 243, 252, 239, 215, + 195, 161, 109, 16, 24, 15, 116, 231, 237, 238, 217, 207, 219, 165, 49, 15, + 15, 14, 16, 19, 14, 14, 15, 50, 252, 251, 250, 246, 206, 173, 130, 105, + 21, 14, 15, 16, 21, 246, 252, 248, 248, 234, 225, 183, 147, 79, 14, 14, + 14, 14, 14, 19, 16, 68, 250, 252, 250, 242, 224, 190, 169, 107, 29, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 200, 252, 253, 253, 253, 252, 252, + 251, 250, 247, 240, 217, 217, 217, 219, 221, 222, 223, 223, 210, 229, 231, 220, + 224, 240, 233, 176, 19, 14, 16, 20, 228, 249, 254, 253, 248, 218, 202, 162, + 50, 16, 14, 18, 14, 14, 14, 16, 18, 102, 255, 254, 255, 250, 240, 202, + 175, 105, 20, 15, 16, 16, 197, 242, 244, 245, 239, 237, 238, 221, 107, 55, + 20, 19, 19, 18, 18, 21, 113, 244, 253, 250, 252, 215, 185, 183, 120, 46, + 15, 14, 14, 181, 236, 243, 240, 233, 225, 219, 185, 116, 20, 15, 15, 18, + 15, 14, 19, 73, 250, 254, 254, 249, 217, 188, 155, 139, 47, 19, 18, 53, + 145, 20, 23, 18, 14, 14, 14, 14, 14, 15, 16, 16, 18, 18, 24, 178, + 254, 250, 252, 243, 227, 189, 162, 130, 56, 16, 27, 97, 252, 253, 254, 254, + 250, 248, 247, 237, 241, 226, 214, 220, 224, 219, 219, 227, 224, 229, 220, 229, + 242, 246, 229, 128, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 15, + 18, 155, 246, 247, 248, 242, 224, 194, 167, 104, 47, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 18, 18, 243, 243, 250, 243, 243, 238, 235, 186, 92, 32, + 18, 18, 18, 18, 20, 40, 154, 254, 250, 254, 247, 193, 181, 178, 97, 21, + 16, 19, 15, 204, 251, 249, 250, 241, 248, 238, 234, 221, 95, 31, 29, 23, + 19, 19, 19, 21, 211, 253, 254, 252, 249, 249, 206, 204, 161, 53, 31, 15, + 21, 14, 14, 85, 253, 253, 253, 243, 244, 217, 190, 152, 54, 27, 14, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 19, 18, 230, 253, 253, 252, 251, 252, + 252, 251, 251, 250, 232, 204, 172, 98, 37, 14, 14, 14, 14, 14, 15, 15, + 221, 254, 254, 253, 247, 244, 244, 246, 249, 250, 240, 217, 193, 137, 64, 14, + 19, 14, 14, 14, 14, 15, 18, 173, 249, 251, 252, 251, 251, 251, 252, 251, + 240, 229, 227, 223, 219, 221, 222, 227, 230, 232, 229, 229, 250, 251, 224, 71, + 14, 14, 19, 14, 20, 244, 250, 250, 246, 246, 247, 243, 251, 243, 225, 210, + 218, 226, 225, 222, 215, 209, 249, 251, 252, 250, 250, 248, 210, 172, 116, 19, + 14, 14, 14, 16, 232, 250, 249, 249, 246, 248, 243, 240, 206, 150, 175, 154, + 167, 154, 150, 161, 246, 252, 255, 254, 248, 250, 218, 204, 190, 136, 64, 16, + 24, 16, 97, 235, 245, 245, 236, 229, 229, 207, 139, 34, 18, 16, 21, 21, + 15, 15, 69, 200, 255, 253, 250, 229, 189, 162, 136, 52, 14, 14, 15, 18, + 114, 254, 254, 254, 251, 243, 217, 188, 150, 60, 14, 14, 14, 14, 14, 14, + 18, 169, 254, 253, 252, 243, 229, 190, 170, 97, 18, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 222, 253, 254, 252, 253, 252, 251, 253, 253, 252, 252, + 251, 251, 251, 252, 253, 253, 253, 253, 254, 253, 254, 253, 250, 252, 242, 167, + 24, 15, 15, 20, 246, 250, 255, 252, 242, 209, 199, 152, 23, 19, 15, 16, + 18, 19, 14, 16, 21, 150, 255, 254, 254, 247, 234, 193, 173, 95, 16, 15, + 16, 16, 194, 241, 245, 246, 244, 244, 229, 251, 232, 165, 27, 20, 21, 26, + 21, 122, 246, 254, 255, 246, 232, 199, 165, 173, 82, 15, 14, 14, 14, 159, + 242, 244, 246, 245, 239, 237, 236, 226, 143, 34, 18, 23, 20, 18, 109, 246, + 255, 253, 253, 240, 182, 147, 193, 63, 19, 21, 19, 136, 240, 21, 36, 20, + 16, 15, 16, 16, 18, 18, 19, 20, 20, 145, 199, 255, 255, 252, 253, 246, + 227, 182, 165, 130, 43, 14, 15, 21, 252, 253, 255, 254, 250, 250, 251, 249, + 248, 246, 249, 253, 254, 253, 253, 254, 254, 254, 250, 253, 248, 229, 211, 109, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 26, 16, 21, 126, 251, 250, + 250, 234, 206, 192, 152, 72, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 18, 239, 242, 250, 246, 247, 243, 230, 246, 219, 87, 20, 19, 20, 19, + 21, 189, 255, 252, 255, 253, 206, 188, 172, 148, 50, 16, 16, 16, 14, 229, + 254, 254, 254, 245, 252, 249, 247, 244, 252, 232, 234, 234, 232, 242, 248, 254, + 255, 255, 254, 254, 252, 248, 192, 210, 157, 20, 23, 15, 24, 15, 14, 148, + 255, 253, 254, 243, 245, 220, 192, 152, 16, 23, 14, 14, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 18, 18, 234, 254, 254, 253, 253, 253, 253, 253, 252, 251, + 222, 202, 152, 92, 14, 14, 14, 14, 14, 14, 15, 16, 226, 255, 255, 254, + 251, 249, 247, 249, 251, 250, 236, 202, 181, 114, 18, 14, 14, 14, 14, 14, + 14, 14, 15, 143, 250, 250, 253, 250, 253, 251, 251, 252, 252, 253, 254, 252, + 252, 252, 253, 253, 254, 254, 254, 253, 246, 229, 173, 19, 19, 14, 21, 14, + 21, 246, 252, 253, 250, 251, 251, 250, 246, 251, 253, 253, 253, 253, 251, 246, + 226, 240, 249, 255, 255, 252, 250, 240, 204, 161, 97, 14, 14, 15, 16, 18, + 254, 252, 254, 254, 247, 248, 246, 244, 249, 245, 255, 248, 253, 253, 253, 253, + 254, 255, 251, 254, 252, 247, 204, 198, 165, 105, 21, 16, 15, 15, 68, 233, + 243, 249, 248, 245, 238, 242, 240, 185, 82, 21, 19, 19, 27, 75, 195, 255, + 255, 255, 250, 193, 165, 130, 107, 14, 16, 14, 18, 19, 199, 255, 255, 255, + 253, 249, 214, 190, 154, 50, 14, 14, 14, 14, 14, 15, 21, 233, 255, 255, + 253, 243, 231, 192, 170, 98, 15, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 228, 254, 253, 250, 251, 252, 252, 253, 253, 254, 254, 254, 254, 255, 255, + 254, 255, 255, 254, 255, 252, 252, 255, 252, 243, 222, 122, 16, 15, 15, 85, + 248, 255, 251, 253, 230, 221, 181, 132, 18, 26, 15, 18, 27, 14, 22, 15, + 18, 240, 254, 254, 254, 250, 205, 214, 162, 73, 20, 15, 16, 21, 92, 241, + 238, 249, 245, 252, 247, 244, 244, 246, 245, 238, 236, 236, 253, 254, 254, 254, + 250, 238, 195, 162, 170, 78, 20, 14, 14, 14, 19, 63, 245, 250, 250, 249, + 250, 249, 245, 238, 246, 240, 230, 222, 238, 251, 253, 253, 253, 255, 243, 179, + 148, 155, 89, 19, 18, 32, 19, 225, 251, 242, 242, 238, 229, 225, 226, 227, + 231, 229, 232, 229, 255, 255, 255, 255, 255, 255, 253, 243, 189, 190, 159, 68, + 19, 14, 15, 19, 249, 249, 252, 250, 255, 250, 249, 248, 254, 255, 255, 255, + 255, 255, 255, 254, 255, 253, 254, 251, 234, 244, 203, 20, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 18, 16, 18, 42, 246, 254, 253, 253, 225, 195, 178, + 100, 24, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 24, 21, 157, 249, + 248, 248, 253, 243, 245, 242, 242, 243, 242, 238, 238, 240, 255, 255, 255, 255, + 249, 225, 183, 150, 157, 75, 16, 18, 18, 18, 15, 250, 254, 255, 255, 253, + 252, 252, 253, 251, 251, 253, 253, 253, 255, 255, 254, 255, 255, 255, 254, 253, + 250, 238, 207, 183, 111, 18, 18, 16, 25, 15, 15, 220, 255, 255, 253, 252, + 238, 193, 181, 139, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 16, 15, + 16, 18, 233, 252, 253, 252, 251, 250, 253, 254, 253, 245, 215, 205, 145, 45, + 14, 14, 14, 14, 14, 14, 14, 16, 236, 255, 255, 255, 253, 251, 251, 252, + 251, 245, 220, 192, 159, 75, 19, 14, 15, 14, 14, 14, 14, 14, 20, 71, + 252, 251, 247, 250, 250, 252, 252, 251, 251, 251, 252, 253, 253, 254, 254, 253, + 253, 254, 253, 247, 227, 229, 122, 16, 14, 16, 14, 14, 19, 253, 248, 255, + 252, 251, 252, 253, 250, 252, 253, 252, 251, 250, 246, 233, 220, 179, 254, 254, + 253, 253, 251, 229, 193, 154, 90, 14, 15, 15, 18, 111, 255, 255, 255, 254, + 253, 250, 249, 250, 251, 250, 251, 252, 252, 253, 254, 254, 255, 255, 254, 251, + 245, 231, 193, 162, 141, 29, 20, 15, 20, 15, 14, 233, 246, 252, 252, 250, + 248, 247, 247, 243, 245, 240, 236, 239, 249, 254, 254, 254, 255, 250, 210, 179, + 155, 107, 40, 14, 14, 14, 29, 19, 239, 255, 255, 255, 254, 249, 210, 197, + 132, 14, 14, 14, 14, 14, 14, 15, 34, 253, 255, 255, 253, 250, 203, 210, + 178, 56, 27, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 213, 246, 240, + 247, 247, 248, 249, 250, 250, 249, 249, 252, 253, 253, 253, 252, 253, 252, 250, + 250, 251, 250, 249, 222, 219, 219, 126, 24, 19, 18, 136, 248, 254, 248, 247, + 204, 188, 170, 89, 21, 21, 15, 18, 14, 14, 21, 29, 19, 248, 251, 253, + 246, 236, 189, 192, 136, 46, 15, 16, 28, 15, 34, 217, 244, 244, 213, 226, + 247, 245, 245, 247, 250, 250, 252, 254, 254, 254, 251, 242, 207, 179, 167, 165, + 90, 40, 15, 15, 14, 14, 14, 32, 240, 251, 250, 243, 239, 247, 249, 247, + 245, 247, 247, 247, 251, 254, 255, 253, 246, 221, 185, 175, 165, 105, 45, 16, + 16, 21, 21, 236, 253, 251, 253, 254, 254, 253, 253, 254, 254, 254, 254, 254, + 253, 254, 254, 254, 255, 253, 249, 224, 188, 157, 102, 41, 14, 14, 15, 18, + 190, 242, 250, 250, 250, 251, 248, 250, 251, 253, 253, 253, 253, 253, 252, 251, + 249, 243, 246, 229, 199, 209, 175, 24, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 18, 24, 190, 250, 255, 254, 243, 213, 189, 150, 68, 16, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 100, 238, 243, 231, 238, 229, + 246, 243, 243, 245, 248, 250, 253, 255, 254, 254, 253, 242, 198, 167, 159, 165, + 65, 31, 15, 15, 15, 15, 15, 249, 255, 255, 255, 254, 253, 252, 251, 247, + 249, 252, 251, 251, 253, 253, 252, 253, 254, 254, 254, 252, 248, 226, 190, 155, + 116, 18, 16, 16, 21, 15, 23, 245, 255, 255, 253, 250, 233, 190, 172, 111, + 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 15, 16, 21, 225, 246, + 250, 250, 249, 248, 251, 252, 248, 229, 202, 176, 98, 24, 14, 14, 14, 14, + 14, 14, 15, 16, 217, 253, 255, 255, 252, 251, 251, 248, 242, 217, 189, 157, + 116, 55, 15, 14, 14, 14, 14, 14, 16, 14, 15, 31, 226, 244, 247, 243, + 245, 247, 248, 248, 248, 248, 250, 252, 251, 254, 254, 253, 253, 252, 244, 217, + 179, 188, 105, 18, 14, 14, 14, 18, 20, 250, 252, 252, 245, 245, 248, 247, + 245, 250, 251, 248, 246, 238, 207, 175, 134, 209, 254, 255, 253, 250, 250, 202, + 173, 132, 42, 14, 15, 16, 20, 185, 255, 255, 255, 254, 252, 249, 248, 247, + 249, 248, 248, 248, 250, 250, 251, 252, 254, 254, 251, 238, 210, 192, 172, 154, + 68, 19, 19, 15, 21, 18, 14, 139, 246, 249, 248, 247, 250, 252, 250, 245, + 251, 251, 251, 252, 253, 254, 254, 253, 243, 208, 189, 185, 132, 42, 14, 16, + 18, 14, 19, 31, 243, 254, 254, 254, 252, 242, 199, 182, 116, 14, 15, 14, + 14, 14, 14, 15, 73, 253, 254, 255, 251, 247, 193, 185, 126, 16, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 21, 170, 236, 236, 220, 217, 218, 229, + 243, 246, 247, 247, 249, 251, 251, 249, 248, 248, 247, 243, 240, 248, 243, 217, + 192, 198, 194, 65, 16, 14, 15, 186, 248, 252, 243, 234, 204, 173, 179, 48, + 21, 15, 20, 14, 16, 16, 14, 15, 20, 243, 246, 249, 243, 231, 198, 183, + 128, 20, 15, 16, 18, 14, 16, 92, 213, 239, 220, 205, 197, 207, 227, 248, + 252, 251, 250, 249, 243, 236, 224, 205, 189, 162, 124, 95, 24, 16, 14, 14, + 14, 14, 14, 14, 114, 208, 245, 236, 210, 213, 220, 217, 243, 248, 249, 247, + 246, 243, 238, 223, 222, 179, 152, 150, 102, 36, 15, 15, 15, 16, 69, 245, + 252, 253, 254, 255, 251, 250, 250, 251, 251, 251, 251, 251, 253, 253, 252, 248, + 238, 222, 208, 186, 175, 107, 48, 21, 14, 14, 14, 18, 126, 227, 240, 226, + 194, 227, 227, 243, 248, 252, 251, 251, 250, 250, 248, 246, 245, 236, 225, 204, + 183, 178, 120, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 18, 93, + 250, 254, 255, 251, 209, 197, 170, 104, 26, 15, 15, 18, 14, 14, 14, 14, + 14, 14, 14, 14, 22, 15, 31, 145, 222, 234, 225, 210, 208, 213, 232, 246, + 250, 250, 249, 247, 242, 238, 224, 202, 175, 143, 105, 85, 15, 15, 14, 14, + 14, 16, 18, 238, 248, 252, 250, 246, 248, 249, 249, 246, 249, 249, 246, 234, + 233, 218, 206, 208, 249, 247, 246, 240, 228, 202, 170, 132, 45, 15, 26, 15, + 15, 24, 57, 242, 251, 252, 243, 233, 204, 176, 147, 69, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 19, 14, 15, 26, 214, 241, 246, 244, 242, 239, + 243, 243, 230, 211, 188, 128, 55, 16, 14, 14, 14, 14, 14, 14, 15, 15, + 198, 250, 250, 244, 246, 246, 246, 243, 232, 204, 179, 157, 69, 32, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 165, 230, 244, 220, 226, 230, 234, 235, + 235, 234, 238, 240, 239, 246, 246, 244, 240, 228, 206, 176, 154, 141, 64, 14, + 14, 14, 14, 16, 18, 205, 249, 244, 239, 240, 246, 242, 239, 239, 228, 217, + 211, 202, 179, 139, 21, 237, 250, 253, 247, 242, 249, 189, 182, 148, 21, 21, + 16, 18, 18, 234, 255, 255, 255, 252, 249, 246, 240, 234, 220, 217, 218, 218, + 222, 221, 224, 226, 238, 235, 219, 199, 183, 159, 126, 92, 18, 15, 15, 14, + 15, 18, 14, 34, 234, 245, 244, 228, 214, 217, 236, 246, 246, 248, 247, 246, + 243, 239, 230, 214, 198, 189, 167, 116, 53, 20, 14, 14, 14, 14, 15, 98, + 251, 252, 251, 251, 249, 233, 195, 164, 93, 14, 14, 14, 14, 14, 14, 15, + 150, 254, 255, 253, 242, 238, 192, 186, 118, 16, 15, 26, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 78, 181, 217, 209, 206, 199, 195, 198, 200, 202, 203, + 208, 215, 215, 209, 206, 207, 203, 198, 182, 193, 181, 175, 175, 185, 155, 26, + 15, 14, 14, 214, 235, 226, 195, 162, 169, 141, 152, 23, 15, 14, 19, 14, + 14, 14, 19, 14, 107, 245, 239, 199, 173, 159, 152, 137, 111, 15, 15, 14, + 14, 14, 14, 15, 97, 170, 202, 209, 206, 205, 199, 198, 197, 193, 195, 195, + 200, 185, 172, 169, 155, 116, 57, 21, 14, 14, 14, 14, 14, 14, 14, 14, + 20, 109, 192, 215, 214, 213, 204, 190, 183, 190, 195, 193, 198, 199, 195, 179, + 173, 143, 105, 57, 28, 14, 14, 19, 18, 16, 100, 239, 234, 226, 203, 200, + 224, 221, 222, 222, 221, 219, 217, 214, 206, 206, 203, 197, 194, 194, 190, 175, + 120, 59, 21, 14, 14, 14, 14, 18, 23, 152, 217, 225, 198, 205, 182, 181, + 210, 219, 217, 214, 209, 210, 204, 199, 195, 188, 169, 164, 175, 150, 75, 18, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 19, 18, 21, 194, 250, 255, 250, 236, + 192, 169, 130, 56, 16, 15, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 21, 16, 15, 29, 114, 199, 213, 195, 193, 189, 186, 188, 192, 194, 202, 206, + 199, 188, 172, 157, 139, 95, 45, 14, 14, 14, 15, 15, 14, 21, 14, 175, + 237, 243, 233, 214, 202, 199, 199, 199, 190, 198, 195, 192, 194, 181, 169, 172, + 239, 234, 217, 199, 186, 175, 155, 143, 21, 14, 24, 14, 15, 37, 87, 238, + 238, 238, 207, 193, 175, 161, 139, 59, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 15, 21, 179, 240, 204, 199, 189, 185, 186, 186, 176, 157, + 178, 89, 27, 15, 14, 14, 14, 14, 14, 14, 14, 15, 176, 245, 238, 206, + 198, 199, 195, 194, 182, 164, 139, 118, 32, 18, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 78, 170, 229, 207, 194, 198, 198, 198, 188, 189, 188, 190, + 200, 205, 202, 192, 185, 182, 167, 145, 165, 102, 23, 14, 15, 16, 14, 14, + 15, 109, 221, 217, 221, 203, 193, 182, 203, 195, 185, 175, 167, 154, 116, 81, + 18, 244, 242, 234, 205, 192, 195, 139, 143, 128, 14, 14, 15, 16, 26, 250, + 255, 255, 253, 249, 242, 232, 216, 202, 186, 185, 183, 185, 186, 186, 189, 193, + 202, 198, 186, 179, 170, 137, 65, 23, 14, 14, 14, 14, 14, 14, 17, 15, + 79, 161, 215, 232, 217, 202, 197, 197, 192, 195, 197, 197, 198, 203, 198, 190, + 164, 137, 79, 31, 15, 16, 18, 14, 14, 14, 15, 137, 244, 234, 211, 200, + 202, 189, 172, 145, 95, 14, 18, 14, 14, 14, 16, 16, 170, 244, 234, 209, + 183, 181, 159, 172, 116, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 18, 64, 102, 164, 170, 175, 172, 167, 164, 167, 173, 175, 182, 182, 173, + 170, 175, 170, 164, 155, 157, 141, 152, 148, 116, 73, 18, 14, 14, 15, 203, + 207, 190, 183, 148, 167, 159, 157, 57, 15, 14, 14, 14, 14, 14, 19, 14, + 122, 230, 219, 178, 161, 154, 152, 145, 130, 27, 15, 14, 16, 14, 14, 14, + 36, 24, 78, 148, 169, 172, 173, 170, 170, 167, 167, 161, 155, 148, 118, 82, + 48, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 20, 32, 84, + 150, 173, 169, 159, 164, 159, 159, 159, 164, 164, 154, 126, 82, 54, 27, 15, + 14, 18, 16, 14, 14, 14, 84, 203, 197, 206, 185, 176, 182, 179, 178, 179, + 173, 175, 170, 165, 165, 164, 157, 157, 162, 161, 145, 114, 49, 19, 14, 14, + 14, 14, 14, 14, 15, 48, 130, 150, 179, 169, 162, 162, 181, 194, 190, 183, + 176, 179, 173, 162, 159, 161, 136, 122, 122, 72, 26, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 16, 18, 113, 242, 248, 254, 245, 209, 182, 124, 69, 21, + 15, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 15, + 20, 64, 111, 145, 175, 173, 172, 164, 165, 162, 165, 162, 143, 132, 105, 71, + 39, 17, 14, 14, 14, 14, 14, 14, 14, 18, 14, 57, 175, 202, 207, 195, + 179, 170, 170, 167, 152, 165, 165, 159, 164, 145, 120, 124, 199, 188, 170, 150, + 139, 139, 137, 137, 61, 14, 14, 16, 15, 14, 64, 231, 195, 192, 162, 148, + 137, 139, 136, 69, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 16, + 14, 15, 100, 200, 189, 176, 162, 161, 157, 157, 155, 147, 126, 55, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 107, 205, 198, 185, 186, 181, 170, 167, + 161, 147, 114, 92, 18, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 19, 60, 150, 169, 165, 170, 175, 169, 157, 154, 150, 154, 175, 179, 172, 164, + 165, 164, 159, 147, 107, 56, 14, 14, 16, 15, 14, 14, 14, 21, 113, 147, + 198, 175, 162, 155, 157, 162, 164, 164, 152, 109, 56, 19, 20, 208, 210, 186, + 179, 183, 155, 162, 145, 147, 45, 14, 21, 18, 84, 252, 254, 254, 252, 244, + 228, 210, 175, 134, 139, 137, 137, 141, 148, 150, 154, 159, 170, 167, 150, 130, + 102, 67, 27, 14, 14, 14, 14, 14, 14, 14, 20, 14, 18, 31, 75, 124, + 170, 185, 175, 154, 173, 170, 164, 159, 157, 155, 141, 107, 82, 32, 14, 14, + 14, 14, 14, 28, 15, 21, 15, 109, 204, 202, 186, 167, 157, 154, 159, 139, + 95, 21, 14, 14, 14, 14, 18, 19, 165, 219, 204, 178, 170, 162, 150, 175, + 152, 48, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 19, + 38, 60, 81, 100, 97, 97, 102, 105, 100, 109, 105, 98, 98, 102, 102, 97, + 98, 104, 85, 90, 67, 31, 19, 15, 14, 14, 14, 104, 109, 114, 124, 116, + 113, 118, 122, 75, 19, 18, 14, 14, 14, 16, 14, 14, 21, 113, 105, 130, + 124, 128, 111, 116, 107, 36, 19, 14, 14, 14, 16, 14, 16, 15, 20, 24, + 23, 50, 82, 111, 126, 120, 98, 78, 71, 55, 35, 16, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 24, 33, 47, 69, + 111, 102, 92, 89, 82, 68, 47, 29, 26, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 36, 95, 113, 137, 141, 139, 134, 132, 130, 130, 134, 128, 122, 120, + 109, 109, 102, 90, 82, 68, 41, 19, 16, 14, 14, 14, 14, 14, 14, 14, + 16, 15, 21, 19, 63, 53, 76, 102, 109, 126, 120, 111, 105, 107, 105, 92, + 85, 100, 89, 64, 40, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 16, 21, 213, 244, 249, 249, 234, 185, 165, 78, 29, 14, 14, 16, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 16, 42, + 54, 72, 100, 118, 120, 107, 84, 63, 64, 47, 28, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 18, 36, 69, 102, 114, 109, 102, 102, 98, + 93, 104, 95, 81, 76, 55, 36, 34, 132, 128, 118, 109, 109, 105, 102, 100, + 52, 15, 14, 15, 14, 14, 21, 113, 150, 141, 113, 114, 107, 116, 132, 81, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 15, 14, 34, 97, + 128, 111, 100, 98, 93, 92, 95, 98, 56, 25, 14, 14, 14, 14, 14, 14, + 14, 14, 18, 14, 30, 71, 89, 114, 132, 122, 105, 105, 109, 102, 81, 64, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 15, 40, 57, + 87, 93, 92, 95, 89, 82, 82, 84, 90, 95, 100, 100, 100, 95, 85, 79, + 27, 16, 14, 14, 14, 14, 14, 14, 14, 14, 27, 48, 114, 93, 100, 109, + 90, 87, 89, 87, 82, 55, 26, 14, 14, 76, 105, 95, 122, 134, 98, 130, + 105, 105, 64, 15, 21, 18, 159, 250, 253, 253, 248, 230, 210, 176, 113, 60, + 57, 54, 54, 56, 60, 61, 63, 69, 72, 85, 78, 48, 20, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 15, 14, 18, 16, 15, 15, 26, 52, 81, 98, + 105, 105, 90, 79, 69, 55, 32, 15, 14, 14, 14, 14, 14, 14, 15, 15, + 15, 15, 15, 42, 93, 122, 124, 109, 136, 128, 150, 128, 105, 39, 25, 15, + 15, 15, 15, 15, 90, 126, 137, 122, 116, 102, 93, 107, 111, 56, 23, 17, + 14, 14, 14, 14, 14, 14, 14, 14, 18, 21, 15, 15, 15, 16, 19, 21, + 19, 15, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 16, 14, 18, + 17, 14, 14, 17, 16, 14, 14, 20, 15, 16, 18, 18, 18, 18, 27, 28, + 14, 17, 14, 14, 14, 14, 14, 19, 14, 29, 18, 21, 18, 19, 18, 20, + 24, 16, 14, 14, 14, 14, 18, 14, 14, 20, 23, 15, 16, 18, 18, 18, + 18, 16, 16, 15, 15, 14, 14, 14, 14, 19, 18, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 18, 15, 14, 14, 14, 21, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 19, 22, 14, 14, 14, 14, 14, 14, 14, 19, + 21, 18, 20, 20, 19, 18, 18, 18, 18, 16, 15, 15, 14, 15, 16, 15, + 16, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 21, 14, 14, 14, 15, 19, 18, 15, 15, 16, 15, 14, 14, 14, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 20, 105, 235, 239, + 246, 218, 209, 172, 122, 38, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 18, 21, 14, 15, 15, 16, 16, 16, 15, + 15, 19, 23, 19, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 20, 20, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 18, 14, + 14, 14, 15, 15, 16, 15, 15, 15, 15, 14, 22, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 24, 18, 16, 15, 15, + 15, 15, 14, 16, 18, 14, 14, 14, 14, 14, 14, 15, 15, 15, 20, 14, + 14, 15, 19, 36, 19, 16, 16, 15, 19, 19, 16, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 15, 19, 16, 15, 18, 18, 18, 18, 19, 19, + 16, 15, 16, 16, 14, 16, 20, 21, 21, 16, 15, 15, 15, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 23, 14, 15, 15, 27, 18, 15, 14, + 14, 14, 14, 14, 14, 21, 31, 21, 27, 20, 19, 18, 15, 14, 21, 14, + 16, 21, 213, 250, 250, 250, 242, 213, 189, 145, 71, 21, 15, 15, 15, 15, + 16, 16, 16, 18, 18, 21, 20, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 17, 14, 14, 14, 14, 14, 14, 14, 16, 16, + 20, 20, 14, 14, 14, 14, 16, 14, 14, 18, 16, 15, 21, 15, 15, 15, + 14, 16, 14, 14, 14, 14, 15, 15, 24, 15, 15, 15, 23, 16, 15, 15, + 15, 14, 18, 14, 15, 14, 14, 14, 19, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 19, 15, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 14, 14, 16, 14, 14, 14, + 14, 14, 15, 14, 14, 19, 16, 16, 23, 15, 16, 16, 14, 14, 14, 14, + 16, 14, 15, 14, 21, 15, 20, 16, 16, 33, 15, 15, 14, 16, 14, 14, + 16, 14, 14, 17, 14, 14, 15, 15, 14, 16, 18, 15, 15, 19, 17, 15, + 14, 15, 19, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 15, 19, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 16, 15, 19, 18, + 16, 15, 15, 15, 15, 15, 14, 14, 14, 15, 14, 14, 14, 14, 14, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 14, 14, 14, 18, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 16, 60, 227, 232, 240, 232, 203, 170, 169, + 81, 18, 14, 19, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 20, 15, 14, 18, 16, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 15, 14, 14, 14, 14, 14, 15, 14, 14, 15, 14, 14, 14, 14, 14, 15, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 16, + 14, 14, 14, 22, 14, 14, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 24, 14, 14, 14, 14, 14, 16, 16, 14, 14, 14, + 14, 14, 14, 17, 15, 14, 14, 15, 15, 15, 14, 16, 15, 18, 14, 14, + 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 14, + 14, 14, 14, 14, 14, 21, 16, 16, 15, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 22, 14, 14, 14, 14, 14, 14, 14, + 14, 21, 14, 14, 16, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 15, + 16, 14, 14, 15, 21, 16, 31, 15, 21, 14, 22, 20, 18, 31, 229, 243, + 245, 244, 226, 202, 170, 130, 57, 15, 15, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, + 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 21, 19, 14, 27, 14, 14, 16, 14, 14, + 21, 14, 18, 14, 19, 15, 18, 22, 15, 15, 16, 24, 14, 14, 15, 14, + 14, 15, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 16, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 18, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 15, 16, 16, 16, + 15, 15, 15, 15, 16, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 18, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 15, 18, 21, 173, 229, 238, 215, 202, 172, 143, 134, 39, 21, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 16, 14, 18, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 17, 18, 18, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 19, 15, 16, 19, 97, 242, 241, 246, 233, 220, 175, + 155, 122, 32, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 17, 14, 14, 14, 14, 15, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 18, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 21, 71, + 198, 230, 224, 192, 178, 178, 143, 97, 19, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 17, 16, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 18, 18, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 15, + 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 17, 16, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 18, 19, 134, 234, 226, 237, 220, 210, 170, 141, 92, 19, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 16, 14, 15, 19, 20, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 16, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 18, 18, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 14, 16, 15, 14, 14, 14, 15, 15, 14, 14, 14, 14, 16, 16, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 17, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 59, 159, 213, 218, 204, 164, + 137, 143, 85, 20, 18, 15, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 15, 14, 16, 16, 16, 14, 14, 14, 14, 14, 14, + 14, 15, 15, 15, 14, 15, 15, 14, 14, 14, 14, 16, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 18, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 14, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 19, 16, + 14, 14, 14, 15, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 15, 21, + 23, 176, 218, 216, 215, 203, 190, 152, 116, 63, 15, 14, 17, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 20, 16, 16, 15, 14, 14, 14, 15, 14, 14, 17, 15, + 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 19, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 19, 82, 198, 172, 162, 152, 137, 114, 137, 104, 21, + 21, 18, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 18, 170, 173, 189, + 176, 165, 145, 128, 109, 67, 23, 20, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 18, 17, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 16, 17, 14, 14, 16, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 16, 15, 14, 15, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 16, 18, 19, 18, 16, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 16, 16, 16, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 20, 71, 170, 152, 114, 113, 132, 122, 137, 143, 104, 64, 42, 24, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 19, 20, 18, 18, 18, 16, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 14, 14, 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 21, 19, 14, 16, 18, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 16, 14, 14, 14, 21, 20, 14, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 15, 15, 15, 18, 18, 16, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 16, 18, 14, 15, 15, 18, 19, 19, 18, 18, 14, 14, 14, 14, + 14, 14, 14, 16, 14, 15, 14, 15, 16, 124, 116, 162, 141, 141, 120, 122, + 134, 98, 69, 56, 21, 14, 14, 14, 14, 14, 14, 14, 18, 16, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 18, 15, 15, 15, 15, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 18, 19, 16, 15, 18, 18, 18, 18, + 18, 16, 18, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 16, 16, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 15, 14, 15, 15, 16, 18, 17, 15, 17, 15, 14, 14, 14, + 14, 14, 19, 23, 16, 16, 17, 17, 19, 18, 18, 17, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, 14, 16, 17, 16, + 16, 17, 17, 16, 15, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 14, 14, 15, 16, 17, 16, 16, 17, 16, 18, 18, 15, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 25, 16, 18, 18, 17, 16, 17, 17, 16, + 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, + 15, 16, 15, 18, 17, 23, 33, 50, 61, 67, 64, 57, 63, 63, 61, 61, + 60, 60, 57, 61, 75, 71, 59, 48, 27, 14, 14, 14, 14, 15, 33, 85, + 75, 69, 56, 61, 76, 57, 61, 41, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 22, 43, 67, 87, 71, 69, 82, 75, + 56, 49, 30, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 17, 40, + 67, 67, 61, 69, 69, 69, 69, 61, 39, 18, 14, 14, 14, 14, 14, 14, + 14, 14, 23, 43, 67, 72, 71, 72, 72, 71, 67, 60, 19, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 16, 22, 50, 85, + 147, 165, 170, 179, 179, 178, 165, 155, 178, 176, 167, 165, 165, 164, 162, 162, + 170, 154, 128, 93, 42, 14, 14, 14, 14, 15, 37, 152, 167, 165, 141, 157, + 162, 134, 120, 75, 18, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 19, 55, 132, 186, 186, 183, 181, 165, 137, 105, 56, 20, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 27, 97, 161, 155, 152, 161, + 162, 150, 147, 136, 71, 20, 14, 15, 14, 14, 14, 15, 14, 14, 22, 42, + 154, 165, 172, 165, 155, 145, 128, 116, 45, 20, 14, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 16, 19, 48, 124, 193, 189, 188, 189, 181, + 190, 194, 198, 202, 194, 194, 189, 188, 188, 182, 181, 179, 152, 154, 126, 87, + 37, 14, 14, 14, 16, 15, 24, 152, 176, 182, 152, 172, 161, 120, 116, 71, + 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 26, 124, 203, 204, 195, 188, 170, 148, 126, 75, 27, 14, 14, 14, 14, + 14, 14, 14, 14, 18, 15, 41, 143, 199, 182, 159, 167, 167, 145, 145, 139, + 75, 17, 14, 18, 14, 14, 14, 15, 14, 14, 15, 31, 172, 175, 176, 170, + 159, 145, 118, 111, 69, 24, 14, 14, 17, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 19, 14, 19, 19, 18, 162, 190, 186, 197, 193, 192, 195, 192, 193, 194, 197, + 195, 190, 192, 192, 190, 183, 185, 183, 169, 130, 105, 87, 14, 14, 14, 14, + 14, 15, 25, 192, 179, 194, 157, 161, 137, 143, 84, 61, 17, 14, 14, 15, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 16, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 15, 16, 15, 14, 14, + 16, 14, 14, 14, 14, 15, 14, 14, 16, 14, 14, 15, 16, 14, 14, 14, + 16, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 16, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 15, 14, 14, + 17, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, + 16, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, 14, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 14, 17, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 14, 15, 15, 16, 16, 14, 14, 14, 14, + 14, 16, 14, 14, 15, 16, 14, 14, 14, 14, 14, 14, 18, 18, 154, 203, + 208, 199, 192, 179, 137, 104, 72, 41, 14, 17, 14, 14, 16, 14, 16, 14, + 14, 15, 100, 182, 186, 185, 162, 183, 162, 165, 114, 105, 89, 16, 17, 14, + 14, 14, 18, 14, 14, 23, 15, 120, 182, 186, 179, 170, 152, 122, 98, 90, + 46, 16, 14, 17, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 17, 15, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 15, 16, 14, 14, 14, 14, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 19, 14, + 14, 18, 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 18, + 82, 176, 195, 193, 182, 182, 173, 170, 167, 154, 159, 161, 157, 157, 152, 148, + 143, 145, 132, 137, 100, 89, 89, 78, 14, 14, 14, 14, 15, 15, 61, 200, + 183, 186, 162, 165, 118, 130, 93, 36, 14, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 19, + 15, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 16, + 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 16, 21, 14, 14, 14, 14, + 14, 15, 15, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, + 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, + 14, 14, 14, 14, 14, 14, 15, 18, 17, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 15, 14, 14, 14, 16, 14, 14, 14, 14, 14, 16, 14, 14, 14, 18, 18, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 16, 14, 14, 15, 15, 15, 15, 16, 18, + 17, 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 16, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 15, 15, 14, 14, 18, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 17, 18, 152, 198, 204, 193, 190, 170, + 130, 107, 71, 38, 14, 14, 14, 14, 14, 14, 15, 14, 16, 56, 170, 208, + 188, 183, 169, 170, 172, 169, 114, 111, 89, 15, 17, 14, 14, 14, 14, 14, + 15, 15, 46, 169, 192, 193, 185, 167, 136, 107, 89, 75, 24, 14, 14, 15, + 14, 14, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, + 15, 15, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 15, 14, 14, + 15, 18, 15, 14, 14, 14, 14, 14, 16, 15, 14, 16, 19, 19, 16, 14, + 14, 14, 14, 16, 15, 17, 18, 18, 14, 14, 14, 15, 21, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 27, 188, 194, 190, 192, + 175, 165, 150, 139, 120, 113, 111, 118, 111, 105, 102, 102, 97, 90, 84, 93, + 113, 111, 98, 76, 16, 14, 14, 14, 16, 15, 120, 211, 183, 189, 167, 164, + 128, 111, 100, 26, 14, 17, 14, 15, 15, 15, 14, 14, 14, 14, 14, 14, + 15, 16, 14, 14, 14, 14, 14, 14, 20, 14, 14, 14, 14, 17, 19, 20, + 14, 14, 14, 14, 14, 14, 14, 14, 19, 14, 14, 14, 15, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 15, 14, 14, 14, 14, 15, + 14, 15, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 14, 14, 14, 14, 15, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 16, 16, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, + 15, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 16, 19, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 14, 14, 14, 15, 14, 15, 16, 15, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 16, 15, 15, 16, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 17, 14, 14, 18, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 15, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 18, 150, 200, 203, 190, 189, 172, 132, 107, 75, 39, + 16, 14, 14, 16, 14, 14, 15, 15, 15, 113, 207, 209, 183, 176, 185, 170, + 165, 169, 120, 113, 89, 15, 15, 14, 14, 14, 14, 14, 16, 15, 124, 185, + 197, 203, 190, 161, 122, 95, 69, 44, 14, 15, 22, 18, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 17, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 16, 16, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, + 14, 15, 14, 14, 16, 14, 14, 18, 15, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 18, 14, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 15, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 18, 14, 14, 19, 16, 14, 15, 15, 14, 14, 14, 15, + 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 18, 17, 82, 224, 198, 193, 179, 161, 148, 132, 116, + 90, 75, 71, 78, 73, 73, 69, 71, 64, 64, 61, 71, 107, 95, 78, 52, + 15, 14, 14, 16, 15, 16, 170, 210, 186, 186, 173, 155, 154, 92, 84, 18, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 17, 17, 14, + 14, 14, 14, 14, 14, 14, 14, 18, 19, 18, 15, 15, 17, 15, 14, 14, + 15, 16, 15, 15, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 15, 15, 14, 15, 15, 15, 15, 15, 16, 18, 18, 18, 19, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 15, 15, 16, + 15, 14, 15, 14, 14, 15, 14, 14, 14, 14, 14, 14, 19, 16, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 14, 14, 14, 14, + 14, 14, 16, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 15, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 15, 15, 15, 15, 18, 18, 14, 14, 16, + 14, 14, 17, 15, 14, 14, 14, 15, 16, 15, 14, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 14, 14, 14, 14, 15, 14, 14, 19, 16, 14, 14, + 18, 15, 15, 15, 15, 16, 16, 14, 14, 14, 18, 19, 14, 16, 15, 19, + 17, 15, 18, 15, 16, 15, 15, 15, 15, 15, 16, 18, 15, 14, 14, 18, + 14, 19, 14, 15, 14, 16, 18, 14, 14, 20, 15, 15, 16, 17, 16, 15, + 15, 15, 15, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 17, 148, 198, 204, 190, 185, 172, 148, 118, 79, 40, 15, 14, 14, 17, + 14, 14, 19, 15, 20, 169, 209, 197, 181, 175, 192, 175, 170, 170, 124, 107, + 85, 15, 15, 14, 14, 14, 14, 19, 15, 19, 170, 182, 197, 202, 183, 150, + 126, 97, 54, 25, 15, 15, 14, 14, 24, 32, 19, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 18, 19, 19, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 18, 18, 15, 15, 15, 15, 15, 16, 15, 15, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 20, 19, 14, 24, 19, 14, + 17, 14, 15, 18, 15, 15, 17, 18, 18, 17, 18, 18, 23, 19, 15, 14, + 14, 15, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 17, 19, 18, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 14, 14, 14, + 16, 15, 14, 15, 14, 14, 14, 22, 14, 14, 14, 14, 15, 15, 14, 14, + 15, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 21, 167, 213, 197, 198, 175, 155, 134, 118, 93, 64, 39, 30, 32, + 31, 31, 29, 28, 28, 29, 28, 34, 43, 31, 24, 16, 14, 14, 14, 14, + 14, 20, 197, 202, 189, 188, 176, 152, 159, 90, 67, 15, 15, 19, 21, 21, + 16, 16, 17, 18, 18, 16, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 16, 15, 15, 15, 18, 25, 16, 15, 15, 16, 16, 16, 15, 15, + 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 19, 19, + 15, 15, 18, 20, 19, 18, 17, 17, 16, 16, 15, 15, 18, 21, 19, 14, + 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 15, 15, + 16, 16, 16, 16, 15, 15, 15, 15, 17, 16, 15, 16, 15, 15, 15, 14, + 14, 14, 14, 14, 14, 18, 16, 14, 15, 15, 15, 15, 16, 16, 15, 15, + 19, 17, 15, 16, 18, 17, 15, 15, 14, 14, 14, 14, 15, 18, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 15, 26, 18, + 15, 16, 16, 15, 16, 16, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 17, 19, 17, 16, 17, 16, 18, 19, 14, 14, 14, 14, + 14, 15, 18, 15, 15, 15, 19, 24, 15, 15, 15, 15, 16, 15, 15, 15, + 17, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 19, 20, 16, 18, + 15, 16, 17, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 26, 16, + 15, 15, 15, 16, 18, 16, 15, 14, 14, 14, 14, 14, 14, 29, 15, 16, + 15, 18, 23, 15, 15, 16, 15, 15, 16, 17, 16, 17, 16, 16, 15, 15, + 27, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 139, 199, + 197, 186, 183, 175, 152, 122, 84, 44, 14, 14, 15, 14, 14, 19, 16, 16, + 113, 214, 208, 195, 186, 165, 183, 176, 173, 175, 130, 113, 84, 15, 14, 14, + 14, 14, 16, 19, 15, 84, 193, 190, 199, 193, 170, 148, 130, 95, 40, 14, + 16, 17, 14, 14, 15, 15, 16, 19, 16, 16, 16, 16, 15, 16, 16, 16, + 14, 14, 14, 14, 14, 14, 15, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 18, 15, 18, 16, 15, 19, 17, 17, 18, 18, 18, 18, 18, 18, + 15, 16, 19, 18, 14, 14, 14, 14, 14, 14, 14, 14, 16, 20, 16, 18, + 16, 16, 15, 16, 15, 15, 15, 15, 14, 15, 16, 17, 18, 18, 16, 15, + 21, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 15, 19, 19, 17, 15, 16, 16, 16, 16, 16, 16, 17, 18, 15, 14, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 15, 23, 15, 15, 19, 15, 15, + 19, 18, 15, 18, 15, 27, 17, 19, 15, 16, 15, 17, 17, 16, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 56, 218, + 192, 195, 205, 179, 165, 147, 118, 85, 46, 23, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 16, 16, 14, 14, 16, 14, 14, 14, 14, 53, 209, 199, + 195, 190, 176, 150, 150, 120, 57, 20, 43, 95, 136, 113, 152, 157, 159, 159, + 148, 126, 95, 78, 19, 14, 14, 14, 14, 14, 14, 14, 24, 14, 14, 15, + 30, 78, 128, 157, 186, 188, 188, 182, 181, 176, 159, 152, 126, 63, 23, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 37, 81, 141, + 175, 198, 206, 207, 203, 194, 178, 161, 137, 102, 59, 31, 17, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 26, 61, 102, 152, 150, 148, 143, + 137, 130, 126, 126, 141, 130, 145, 139, 114, 128, 109, 49, 14, 14, 14, 15, + 14, 14, 14, 14, 19, 27, 48, 71, 89, 93, 92, 89, 84, 79, 79, 87, + 90, 78, 55, 36, 27, 24, 15, 14, 14, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 14, 14, 34, 85, 128, 143, 143, 130, 136, + 147, 141, 81, 40, 15, 14, 14, 14, 14, 14, 14, 14, 18, 21, 18, 19, + 48, 107, 150, 145, 132, 116, 120, 100, 50, 25, 19, 18, 22, 14, 15, 17, + 48, 98, 136, 145, 182, 183, 185, 181, 176, 170, 154, 150, 89, 52, 24, 15, + 14, 14, 14, 16, 16, 25, 19, 29, 89, 141, 139, 148, 130, 124, 134, 128, + 82, 34, 15, 14, 16, 19, 15, 22, 19, 42, 145, 139, 141, 148, 145, 143, + 130, 89, 43, 15, 20, 22, 20, 21, 28, 141, 132, 164, 159, 126, 147, 143, + 118, 55, 16, 69, 139, 145, 147, 147, 141, 136, 130, 122, 67, 18, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 137, 197, 190, 179, 179, 172, + 150, 130, 89, 47, 14, 14, 17, 14, 14, 16, 16, 26, 199, 220, 204, 197, + 188, 172, 179, 175, 176, 178, 136, 118, 85, 14, 14, 14, 14, 14, 14, 14, + 19, 161, 202, 210, 198, 186, 161, 141, 116, 75, 29, 14, 14, 14, 15, 17, + 17, 23, 54, 85, 75, 78, 76, 78, 75, 75, 73, 73, 85, 72, 43, 18, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 15, 20, 87, 139, 136, + 150, 148, 130, 147, 143, 145, 143, 145, 143, 143, 147, 147, 143, 128, 128, 114, + 65, 26, 15, 16, 21, 15, 14, 23, 57, 116, 148, 136, 134, 139, 137, 128, + 105, 64, 27, 15, 20, 54, 105, 132, 130, 137, 150, 159, 124, 90, 54, 31, + 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 27, 56, 113, 161, + 179, 190, 199, 206, 203, 186, 170, 154, 128, 85, 44, 19, 15, 14, 14, 14, + 14, 14, 14, 14, 20, 47, 150, 148, 114, 143, 130, 139, 118, 93, 21, 15, + 18, 72, 90, 126, 143, 145, 143, 148, 143, 128, 105, 89, 21, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 122, 225, 203, 200, 199, 186, + 175, 157, 128, 84, 41, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 15, 19, 14, 21, 14, 14, 14, 14, 104, 220, 210, 204, 190, 179, 161, + 154, 114, 38, 93, 154, 188, 217, 210, 215, 216, 217, 211, 206, 190, 157, 139, + 76, 35, 14, 14, 14, 14, 14, 14, 14, 14, 34, 90, 173, 213, 213, 200, + 200, 199, 199, 198, 194, 190, 179, 173, 190, 170, 130, 73, 26, 14, 14, 24, + 14, 14, 14, 18, 14, 14, 14, 26, 128, 159, 195, 216, 216, 206, 198, 193, + 192, 195, 197, 202, 203, 202, 175, 147, 63, 33, 15, 14, 14, 14, 14, 14, + 15, 14, 14, 20, 50, 116, 188, 220, 214, 209, 202, 198, 193, 189, 179, 185, + 190, 183, 195, 188, 159, 172, 139, 42, 15, 14, 15, 16, 14, 14, 27, 68, + 161, 175, 189, 203, 207, 203, 197, 188, 206, 204, 207, 211, 211, 203, 179, 159, + 109, 82, 43, 14, 14, 14, 17, 17, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 18, 31, 93, 199, 200, 205, 204, 197, 199, 190, 145, 85, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 36, 154, 216, 213, + 199, 183, 176, 143, 61, 18, 15, 15, 15, 19, 53, 128, 195, 220, 218, 207, + 197, 198, 199, 197, 190, 183, 176, 173, 192, 155, 95, 53, 23, 14, 14, 19, + 14, 15, 14, 15, 95, 189, 200, 205, 210, 195, 190, 188, 118, 36, 14, 14, + 14, 14, 14, 14, 14, 38, 185, 194, 208, 208, 198, 190, 173, 122, 46, 15, + 14, 14, 14, 15, 19, 188, 194, 217, 221, 188, 208, 204, 179, 92, 31, 143, + 199, 203, 202, 203, 194, 185, 169, 164, 79, 18, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 130, 190, 189, 181, 179, 172, 157, 136, 98, 48, + 14, 14, 14, 14, 16, 15, 16, 105, 219, 200, 202, 192, 182, 188, 185, 185, + 179, 183, 145, 120, 87, 14, 14, 14, 14, 14, 14, 15, 69, 199, 203, 207, + 200, 179, 155, 141, 92, 44, 18, 14, 14, 14, 17, 82, 159, 203, 215, 202, + 199, 200, 198, 203, 203, 203, 198, 197, 178, 182, 182, 159, 132, 79, 27, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 15, 128, 202, 195, 205, 202, 185, 199, + 199, 198, 195, 197, 200, 204, 199, 203, 211, 205, 198, 182, 139, 78, 26, 15, + 14, 14, 14, 14, 21, 87, 186, 195, 203, 208, 209, 210, 185, 122, 43, 15, + 116, 162, 195, 202, 193, 193, 202, 203, 204, 188, 165, 118, 53, 16, 14, 15, + 14, 14, 14, 15, 14, 15, 27, 67, 172, 195, 219, 226, 223, 211, 204, 199, + 193, 192, 192, 199, 200, 189, 162, 137, 45, 19, 14, 14, 14, 14, 14, 14, + 15, 23, 172, 209, 181, 205, 203, 204, 211, 189, 81, 17, 97, 167, 204, 216, + 207, 207, 200, 205, 203, 195, 175, 159, 82, 36, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 25, 182, 218, 224, 199, 183, 182, 159, 145, 105, 68, + 26, 15, 14, 14, 14, 14, 14, 14, 15, 14, 15, 14, 14, 14, 15, 14, + 16, 14, 14, 15, 16, 155, 225, 219, 206, 183, 178, 164, 161, 89, 21, 182, + 219, 178, 192, 208, 208, 207, 206, 206, 198, 192, 169, 157, 173, 68, 14, 14, + 16, 14, 14, 14, 14, 56, 165, 214, 214, 203, 193, 200, 197, 195, 193, 194, + 195, 200, 203, 205, 186, 185, 194, 178, 113, 40, 15, 14, 16, 14, 14, 14, + 14, 16, 56, 139, 203, 215, 218, 216, 211, 203, 195, 195, 200, 206, 204, 200, + 198, 200, 199, 185, 200, 111, 40, 17, 14, 14, 14, 15, 15, 15, 15, 56, + 161, 221, 225, 208, 208, 206, 200, 194, 188, 179, 178, 176, 179, 181, 190, 176, + 137, 154, 104, 17, 14, 14, 14, 16, 14, 21, 93, 204, 203, 205, 203, 198, + 202, 206, 207, 209, 205, 205, 203, 203, 200, 207, 205, 200, 189, 167, 105, 42, + 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 14, 14, 15, + 14, 15, 27, 154, 189, 214, 217, 209, 185, 181, 172, 154, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 18, 15, 15, 57, 182, 220, 193, 172, 159, 159, 116, + 44, 15, 16, 17, 17, 79, 193, 225, 217, 194, 204, 219, 199, 200, 197, 195, + 194, 198, 200, 202, 182, 189, 189, 162, 82, 24, 14, 14, 14, 25, 14, 15, + 90, 203, 211, 207, 204, 169, 161, 165, 97, 24, 14, 16, 14, 16, 14, 16, + 14, 41, 193, 204, 208, 202, 186, 178, 172, 136, 64, 19, 14, 21, 18, 15, + 21, 204, 204, 218, 217, 202, 220, 202, 198, 169, 113, 228, 204, 209, 206, 203, + 188, 170, 148, 136, 61, 14, 14, 19, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 128, 193, 190, 185, 178, 176, 157, 137, 98, 50, 14, 14, 14, 14, + 20, 16, 22, 206, 229, 193, 216, 198, 170, 193, 179, 179, 185, 185, 143, 120, + 87, 14, 15, 14, 14, 17, 14, 18, 169, 216, 211, 205, 194, 178, 145, 120, + 71, 26, 14, 15, 14, 22, 126, 218, 209, 190, 203, 204, 197, 198, 202, 202, + 207, 206, 200, 200, 200, 199, 195, 190, 179, 155, 76, 25, 14, 14, 14, 14, + 14, 14, 15, 15, 15, 148, 219, 202, 202, 200, 190, 204, 199, 198, 199, 199, + 202, 205, 205, 209, 199, 199, 190, 188, 189, 155, 64, 15, 16, 14, 20, 14, + 14, 36, 176, 217, 209, 198, 189, 183, 176, 141, 81, 41, 195, 200, 197, 190, + 200, 217, 213, 199, 205, 185, 189, 193, 147, 56, 18, 14, 15, 14, 14, 15, + 15, 21, 98, 214, 219, 218, 217, 216, 209, 203, 200, 199, 208, 205, 203, 202, + 203, 198, 194, 185, 164, 75, 19, 14, 14, 14, 14, 14, 18, 17, 143, 210, + 188, 216, 199, 189, 182, 188, 154, 42, 213, 217, 217, 181, 205, 202, 202, 203, + 207, 205, 194, 179, 179, 75, 16, 14, 16, 14, 14, 14, 14, 14, 14, 15, + 15, 54, 202, 215, 216, 188, 186, 185, 141, 137, 93, 36, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 16, 14, 14, 16, + 16, 195, 218, 225, 194, 178, 176, 157, 128, 118, 143, 189, 200, 190, 185, 197, + 195, 189, 200, 193, 197, 167, 183, 143, 173, 134, 28, 14, 14, 14, 20, 15, + 76, 197, 238, 226, 203, 211, 194, 136, 147, 136, 128, 141, 132, 136, 188, 206, + 215, 192, 204, 183, 161, 102, 18, 14, 15, 14, 18, 14, 14, 54, 202, 210, + 211, 215, 206, 178, 161, 159, 141, 124, 130, 132, 176, 173, 178, 197, 194, 195, + 173, 148, 137, 23, 14, 14, 14, 14, 17, 16, 20, 189, 214, 209, 225, 205, + 181, 172, 161, 136, 139, 141, 116, 148, 130, 139, 128, 109, 116, 116, 60, 18, + 15, 15, 14, 17, 16, 124, 214, 209, 214, 207, 202, 200, 189, 179, 173, 182, + 186, 175, 197, 182, 198, 220, 211, 190, 172, 172, 139, 107, 15, 14, 19, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 27, 75, + 200, 202, 210, 195, 181, 172, 145, 132, 60, 14, 21, 14, 14, 14, 16, 14, + 14, 20, 15, 19, 164, 198, 206, 211, 136, 126, 114, 52, 18, 16, 15, 15, + 122, 189, 221, 217, 211, 215, 204, 181, 150, 143, 124, 137, 152, 162, 183, 188, + 200, 199, 204, 170, 150, 82, 14, 14, 14, 17, 14, 15, 111, 213, 211, 211, + 209, 165, 137, 97, 102, 14, 15, 14, 14, 15, 14, 14, 16, 95, 205, 202, + 204, 203, 165, 141, 120, 105, 15, 16, 14, 16, 14, 18, 44, 216, 211, 211, + 198, 193, 203, 195, 169, 176, 198, 204, 204, 194, 189, 188, 167, 130, 114, 122, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 16, 148, 202, + 198, 179, 188, 186, 152, 136, 97, 46, 14, 14, 14, 16, 15, 17, 95, 225, + 218, 215, 195, 179, 188, 186, 178, 189, 197, 193, 148, 122, 87, 14, 14, 14, + 16, 14, 18, 63, 223, 205, 214, 198, 202, 113, 143, 102, 34, 23, 14, 14, + 15, 162, 232, 215, 209, 210, 193, 197, 183, 189, 186, 175, 176, 192, 204, 207, + 206, 205, 207, 205, 197, 155, 175, 46, 14, 14, 14, 14, 14, 14, 14, 16, + 15, 197, 205, 172, 167, 122, 150, 161, 155, 137, 148, 136, 181, 170, 185, 219, + 188, 209, 195, 189, 161, 150, 122, 16, 14, 15, 15, 14, 18, 42, 209, 218, + 213, 198, 198, 164, 185, 104, 21, 181, 190, 217, 197, 189, 189, 219, 182, 204, + 205, 199, 194, 164, 175, 114, 18, 15, 22, 14, 15, 16, 16, 172, 225, 205, + 220, 216, 209, 181, 154, 141, 137, 132, 139, 164, 164, 154, 213, 199, 188, 181, + 178, 109, 60, 15, 14, 14, 14, 14, 15, 16, 175, 209, 206, 203, 182, 205, + 197, 167, 169, 159, 210, 211, 215, 193, 193, 185, 203, 176, 209, 190, 181, 172, + 155, 132, 29, 14, 18, 14, 14, 14, 14, 14, 14, 15, 15, 116, 221, 226, + 215, 189, 190, 169, 134, 118, 72, 27, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 28, 206, 217, 223, + 193, 176, 170, 154, 143, 147, 167, 193, 186, 161, 154, 170, 181, 182, 188, 179, + 194, 169, 189, 148, 161, 116, 81, 14, 14, 17, 14, 29, 199, 229, 244, 239, + 207, 161, 126, 116, 128, 120, 109, 124, 141, 162, 176, 167, 205, 205, 210, 188, + 179, 154, 57, 16, 14, 14, 15, 15, 21, 197, 199, 223, 223, 206, 173, 150, + 126, 122, 120, 130, 130, 124, 164, 169, 169, 195, 193, 203, 189, 169, 161, 56, + 14, 14, 15, 14, 15, 31, 111, 207, 223, 214, 209, 178, 162, 143, 136, 118, + 118, 126, 90, 107, 105, 118, 116, 105, 109, 97, 48, 16, 14, 14, 16, 15, + 56, 181, 220, 224, 220, 206, 182, 169, 157, 137, 134, 137, 126, 130, 161, 167, + 165, 176, 176, 193, 170, 169, 143, 118, 21, 14, 17, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 20, 44, 203, 198, 199, 197, + 186, 164, 143, 143, 71, 14, 17, 14, 14, 14, 15, 14, 14, 17, 15, 93, + 197, 199, 218, 169, 148, 100, 89, 27, 15, 23, 14, 81, 195, 211, 223, 225, + 205, 173, 155, 154, 132, 139, 113, 105, 122, 143, 162, 165, 206, 192, 205, 183, + 165, 126, 33, 15, 14, 14, 14, 15, 165, 209, 218, 214, 204, 165, 139, 104, + 76, 14, 14, 14, 14, 14, 15, 14, 15, 128, 215, 208, 199, 198, 159, 132, + 114, 90, 14, 15, 14, 15, 14, 18, 76, 217, 213, 216, 200, 193, 194, 181, + 152, 154, 167, 172, 167, 145, 116, 107, 98, 97, 97, 104, 15, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 16, 152, 208, 204, 190, 195, 189, + 154, 139, 100, 46, 14, 14, 15, 14, 16, 25, 185, 232, 219, 205, 188, 183, + 186, 190, 188, 193, 194, 195, 152, 124, 84, 14, 14, 14, 14, 15, 16, 157, + 218, 221, 214, 205, 170, 154, 104, 81, 30, 14, 16, 15, 122, 211, 232, 219, + 215, 202, 157, 139, 128, 139, 143, 154, 159, 155, 147, 150, 193, 188, 200, 199, + 189, 159, 178, 87, 16, 14, 15, 16, 15, 14, 14, 15, 17, 167, 185, 164, + 157, 111, 122, 107, 132, 136, 154, 137, 175, 170, 167, 165, 193, 203, 198, 192, + 152, 145, 120, 16, 14, 14, 14, 14, 16, 87, 217, 217, 220, 188, 195, 175, + 159, 118, 89, 202, 222, 225, 193, 190, 182, 199, 172, 206, 202, 192, 192, 169, + 170, 134, 40, 19, 14, 15, 16, 27, 150, 199, 223, 225, 208, 182, 152, 148, + 143, 134, 128, 128, 128, 152, 167, 172, 194, 185, 181, 190, 185, 155, 105, 18, + 14, 14, 14, 14, 15, 33, 185, 210, 210, 203, 189, 197, 195, 183, 198, 188, + 211, 194, 182, 162, 178, 167, 188, 173, 210, 197, 183, 155, 154, 141, 43, 14, + 21, 14, 14, 14, 14, 14, 15, 15, 15, 176, 228, 221, 202, 202, 206, 164, + 137, 98, 53, 20, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 16, 71, 217, 225, 221, 192, 179, 173, 150, + 145, 145, 157, 164, 147, 120, 136, 169, 175, 192, 188, 181, 194, 181, 190, 150, + 147, 122, 56, 14, 14, 21, 14, 162, 241, 237, 236, 231, 189, 124, 90, 98, + 90, 84, 63, 60, 78, 136, 179, 195, 208, 223, 214, 186, 165, 161, 100, 14, + 14, 14, 15, 19, 136, 226, 223, 220, 202, 173, 150, 139, 105, 75, 59, 68, + 61, 71, 122, 159, 185, 204, 192, 195, 195, 164, 167, 104, 16, 14, 14, 14, + 15, 78, 219, 215, 225, 207, 182, 157, 139, 90, 75, 60, 60, 63, 40, 49, + 55, 57, 55, 54, 56, 43, 22, 14, 14, 14, 16, 15, 159, 222, 217, 225, + 209, 188, 161, 137, 124, 107, 97, 95, 113, 111, 139, 170, 185, 192, 176, 216, + 183, 164, 139, 132, 41, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 19, 200, 200, 195, 203, 198, 167, 150, 159, + 87, 15, 14, 14, 15, 14, 14, 14, 14, 14, 24, 194, 209, 216, 208, 128, + 136, 81, 52, 15, 15, 18, 43, 193, 225, 218, 214, 209, 181, 137, 111, 116, + 87, 104, 82, 69, 92, 143, 178, 203, 209, 183, 199, 183, 159, 147, 60, 14, + 14, 14, 18, 19, 207, 215, 225, 206, 199, 159, 130, 116, 46, 14, 14, 14, + 14, 14, 16, 14, 16, 172, 219, 221, 200, 200, 162, 136, 111, 71, 14, 14, + 14, 14, 14, 15, 143, 218, 217, 213, 195, 186, 189, 173, 145, 137, 148, 148, + 141, 136, 120, 116, 118, 111, 84, 59, 15, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 16, 155, 208, 205, 189, 195, 199, 165, 145, 105, 47, + 15, 14, 14, 15, 16, 92, 234, 234, 227, 198, 188, 193, 190, 194, 197, 199, + 197, 198, 157, 126, 87, 14, 14, 14, 14, 15, 22, 229, 223, 225, 215, 194, + 154, 162, 98, 48, 22, 14, 14, 31, 220, 224, 223, 218, 207, 178, 137, 120, + 122, 107, 109, 118, 120, 130, 152, 183, 192, 182, 198, 194, 181, 159, 161, 128, + 14, 14, 14, 14, 14, 14, 14, 18, 17, 92, 118, 137, 141, 120, 143, 116, + 79, 89, 100, 84, 128, 165, 203, 202, 200, 190, 194, 190, 143, 137, 109, 15, + 14, 14, 14, 14, 15, 167, 225, 220, 223, 186, 193, 190, 141, 147, 194, 213, + 176, 169, 136, 161, 172, 179, 178, 214, 199, 188, 200, 178, 155, 147, 68, 21, + 14, 18, 16, 87, 233, 216, 219, 219, 189, 157, 126, 109, 93, 76, 67, 72, + 68, 97, 141, 185, 186, 179, 182, 203, 175, 169, 148, 36, 14, 14, 14, 14, + 15, 89, 204, 210, 216, 203, 199, 185, 173, 176, 188, 183, 190, 175, 175, 164, + 175, 175, 188, 179, 199, 200, 200, 147, 139, 141, 52, 17, 16, 14, 14, 14, + 14, 14, 15, 15, 20, 214, 221, 221, 197, 205, 205, 162, 137, 87, 38, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, + 14, 14, 14, 16, 128, 225, 228, 218, 205, 183, 164, 126, 105, 89, 72, 67, + 60, 59, 78, 113, 162, 204, 200, 190, 198, 189, 185, 150, 141, 124, 16, 18, + 15, 14, 85, 236, 236, 237, 225, 188, 155, 122, 82, 52, 27, 21, 19, 15, + 15, 36, 98, 199, 211, 226, 214, 198, 161, 148, 116, 15, 17, 14, 15, 89, + 231, 203, 235, 200, 161, 150, 128, 102, 68, 34, 18, 16, 18, 20, 49, 97, + 179, 210, 192, 197, 197, 161, 159, 141, 21, 14, 14, 14, 19, 152, 230, 210, + 209, 193, 169, 155, 114, 48, 28, 19, 16, 19, 14, 19, 19, 16, 15, 15, + 16, 14, 14, 14, 14, 14, 15, 56, 217, 231, 222, 214, 182, 169, 141, 114, + 89, 65, 47, 42, 47, 47, 54, 98, 165, 213, 189, 199, 190, 162, 134, 137, + 59, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 15, 15, 159, 209, 211, 210, 205, 172, 164, 164, 107, 24, 14, 14, + 16, 14, 14, 14, 16, 14, 122, 217, 210, 222, 159, 134, 95, 67, 25, 15, + 20, 16, 173, 224, 219, 217, 200, 167, 143, 124, 92, 63, 15, 15, 15, 14, + 20, 42, 90, 189, 209, 190, 210, 190, 148, 152, 82, 14, 14, 14, 19, 42, + 224, 215, 214, 199, 194, 157, 126, 114, 26, 14, 14, 14, 15, 14, 18, 15, + 24, 204, 218, 217, 204, 194, 162, 141, 107, 50, 14, 14, 14, 14, 14, 15, + 193, 217, 217, 213, 199, 185, 176, 154, 111, 92, 89, 79, 92, 104, 109, 109, + 113, 95, 56, 25, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 16, 159, 214, 213, 197, 197, 198, 169, 150, 107, 48, 14, 14, 14, 19, + 24, 197, 232, 228, 225, 193, 186, 194, 189, 188, 206, 206, 204, 202, 165, 139, + 93, 14, 14, 14, 14, 15, 113, 232, 236, 211, 209, 172, 159, 120, 107, 24, + 15, 17, 14, 130, 227, 221, 221, 216, 185, 157, 130, 114, 75, 53, 39, 44, + 45, 52, 84, 134, 193, 195, 205, 204, 185, 155, 139, 136, 16, 14, 14, 14, + 14, 14, 14, 18, 14, 14, 14, 18, 15, 15, 17, 15, 16, 18, 23, 16, + 31, 65, 181, 214, 208, 186, 202, 189, 128, 130, 98, 16, 14, 14, 14, 15, + 17, 217, 226, 220, 217, 206, 188, 192, 152, 157, 214, 183, 159, 155, 130, 159, + 178, 183, 193, 194, 205, 195, 207, 189, 150, 148, 82, 16, 18, 15, 42, 207, + 218, 223, 217, 185, 152, 147, 120, 75, 41, 19, 18, 21, 19, 30, 68, 161, + 194, 197, 189, 200, 164, 164, 152, 53, 14, 14, 14, 14, 15, 154, 217, 216, + 216, 198, 198, 178, 159, 137, 120, 104, 100, 95, 104, 114, 169, 194, 205, 195, + 185, 202, 207, 148, 128, 124, 44, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 85, 232, 220, 222, 204, 195, 189, 159, 130, 71, 24, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, + 181, 225, 231, 219, 205, 179, 154, 104, 64, 40, 18, 15, 16, 16, 21, 26, + 116, 203, 206, 199, 198, 199, 185, 157, 143, 90, 20, 15, 30, 14, 199, 224, + 230, 229, 204, 165, 137, 104, 48, 15, 14, 14, 15, 15, 14, 14, 29, 148, + 207, 219, 210, 215, 178, 154, 141, 36, 14, 15, 16, 217, 229, 209, 218, 181, + 155, 141, 93, 43, 18, 14, 14, 14, 15, 15, 15, 31, 126, 210, 205, 218, + 203, 164, 150, 161, 35, 14, 14, 14, 48, 206, 207, 211, 202, 178, 169, 152, + 98, 29, 15, 14, 14, 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 173, 229, 220, 228, 202, 172, 157, 120, 72, 39, 21, 14, 14, + 14, 14, 14, 26, 75, 208, 205, 203, 197, 167, 136, 139, 73, 16, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 75, 208, 220, 208, 205, 182, 178, 162, 130, 39, 14, 14, 16, 14, 14, 14, + 14, 43, 213, 219, 217, 199, 132, 132, 67, 40, 15, 16, 18, 65, 234, 232, + 228, 215, 182, 137, 113, 82, 40, 18, 18, 14, 14, 14, 15, 18, 46, 198, + 214, 206, 218, 207, 150, 154, 100, 14, 14, 15, 14, 95, 217, 223, 208, 202, + 190, 155, 126, 98, 15, 14, 14, 14, 15, 14, 16, 16, 48, 217, 217, 216, + 206, 189, 161, 139, 97, 32, 15, 14, 14, 14, 14, 28, 211, 217, 217, 209, + 200, 186, 164, 124, 64, 36, 27, 17, 15, 16, 16, 14, 15, 17, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 16, 164, 217, + 218, 198, 198, 202, 173, 152, 109, 47, 14, 14, 14, 14, 95, 239, 225, 226, + 214, 192, 175, 170, 173, 186, 204, 210, 207, 210, 172, 143, 95, 14, 14, 14, + 14, 27, 217, 230, 233, 211, 202, 161, 161, 109, 76, 16, 14, 15, 25, 213, + 226, 223, 221, 208, 172, 137, 92, 61, 22, 15, 14, 16, 16, 14, 15, 24, + 145, 198, 202, 205, 193, 155, 124, 126, 37, 21, 14, 14, 14, 14, 14, 14, + 21, 18, 15, 18, 14, 14, 19, 14, 14, 14, 15, 14, 15, 20, 147, 209, + 217, 190, 200, 186, 130, 122, 82, 17, 14, 14, 14, 16, 38, 230, 221, 219, + 206, 215, 172, 167, 143, 113, 137, 84, 75, 84, 71, 97, 139, 173, 214, 197, + 208, 200, 207, 198, 154, 147, 90, 15, 18, 16, 136, 236, 202, 224, 208, 164, + 122, 118, 81, 37, 15, 14, 14, 14, 14, 15, 24, 95, 195, 215, 203, 204, + 182, 155, 145, 78, 21, 14, 14, 17, 15, 185, 224, 218, 214, 194, 197, 172, + 165, 111, 50, 31, 19, 18, 17, 21, 92, 190, 211, 210, 186, 197, 207, 150, + 126, 100, 29, 14, 14, 14, 18, 14, 14, 14, 14, 15, 162, 229, 216, 216, + 208, 189, 185, 157, 118, 56, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 16, 207, 224, 232, 217, + 207, 173, 141, 90, 41, 20, 14, 14, 14, 15, 15, 15, 52, 188, 208, 207, + 197, 202, 182, 161, 128, 76, 17, 15, 14, 105, 217, 220, 229, 211, 176, 161, + 126, 61, 20, 14, 24, 14, 15, 18, 19, 14, 16, 120, 215, 218, 217, 217, + 186, 157, 120, 52, 15, 15, 122, 224, 217, 220, 198, 164, 145, 116, 65, 20, + 14, 14, 15, 14, 16, 14, 15, 17, 111, 214, 208, 213, 203, 170, 147, 150, + 48, 14, 16, 14, 102, 226, 195, 222, 213, 185, 169, 139, 78, 16, 14, 16, + 14, 14, 14, 14, 15, 16, 16, 19, 16, 14, 14, 14, 14, 14, 37, 229, + 229, 214, 229, 194, 178, 147, 85, 37, 15, 14, 14, 14, 14, 16, 14, 14, + 20, 185, 216, 214, 199, 170, 137, 122, 78, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 24, 197, 222, 207, + 208, 189, 188, 155, 145, 64, 14, 14, 14, 14, 14, 14, 15, 152, 221, 221, + 222, 139, 147, 93, 47, 15, 15, 19, 16, 208, 232, 240, 235, 195, 154, 145, + 98, 36, 15, 14, 16, 14, 14, 14, 14, 14, 17, 170, 209, 211, 217, 210, + 148, 141, 104, 14, 14, 14, 14, 172, 209, 226, 211, 208, 182, 155, 122, 76, + 14, 15, 14, 14, 14, 14, 14, 16, 104, 221, 215, 214, 205, 185, 155, 132, + 85, 18, 14, 14, 15, 14, 15, 71, 221, 225, 217, 209, 198, 178, 154, 102, + 39, 16, 14, 14, 15, 15, 15, 14, 14, 17, 19, 18, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 167, 221, 217, 202, 204, 204, + 178, 154, 114, 47, 14, 14, 20, 14, 189, 242, 230, 229, 204, 193, 145, 124, + 162, 198, 200, 214, 208, 213, 175, 148, 93, 14, 14, 14, 14, 92, 236, 232, + 218, 221, 186, 164, 148, 118, 26, 17, 14, 14, 97, 223, 224, 227, 216, 194, + 181, 139, 61, 23, 14, 14, 14, 16, 15, 14, 14, 14, 57, 199, 194, 205, + 197, 162, 136, 120, 34, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 19, 15, 16, 14, 14, 15, 15, 15, 167, 225, 219, 198, 206, 178, + 137, 120, 56, 18, 14, 14, 17, 15, 93, 231, 218, 222, 198, 213, 161, 134, + 104, 52, 37, 17, 15, 17, 15, 18, 46, 93, 207, 202, 202, 206, 204, 204, + 164, 143, 95, 15, 15, 55, 219, 218, 227, 216, 176, 159, 130, 89, 37, 15, + 14, 21, 18, 14, 18, 14, 15, 42, 197, 219, 214, 206, 197, 154, 137, 95, + 20, 14, 14, 15, 33, 204, 226, 221, 202, 195, 185, 165, 141, 76, 21, 17, + 15, 14, 14, 15, 20, 175, 211, 217, 205, 205, 197, 141, 130, 69, 18, 14, + 14, 14, 18, 14, 14, 14, 14, 15, 198, 214, 218, 208, 208, 194, 183, 150, + 107, 48, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 38, 223, 221, 234, 213, 203, 162, 136, 85, + 24, 16, 14, 14, 18, 19, 17, 15, 20, 176, 215, 217, 198, 198, 169, 165, + 113, 61, 15, 15, 19, 219, 219, 230, 222, 185, 148, 145, 92, 34, 14, 14, + 18, 14, 14, 14, 14, 14, 14, 107, 222, 225, 225, 207, 186, 167, 87, 44, + 15, 41, 219, 207, 218, 213, 190, 152, 126, 82, 36, 18, 14, 16, 16, 14, + 14, 17, 14, 18, 113, 217, 207, 205, 198, 176, 147, 126, 53, 14, 15, 14, + 161, 225, 215, 211, 209, 197, 178, 148, 73, 14, 14, 19, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 124, 233, 227, 219, 219, 195, + 173, 130, 57, 20, 14, 14, 16, 16, 14, 15, 15, 14, 14, 159, 217, 210, + 202, 178, 145, 104, 73, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 15, 176, 216, 214, 218, 195, 192, 167, + 152, 92, 14, 14, 14, 15, 14, 14, 78, 217, 218, 219, 198, 114, 132, 57, + 26, 14, 14, 18, 76, 244, 231, 243, 229, 183, 141, 124, 64, 16, 14, 15, + 14, 14, 15, 14, 14, 14, 15, 162, 208, 216, 208, 202, 159, 134, 93, 14, + 14, 14, 17, 217, 210, 220, 218, 203, 172, 152, 120, 52, 14, 15, 14, 15, + 14, 14, 14, 15, 179, 222, 217, 216, 207, 178, 147, 126, 73, 14, 15, 14, + 15, 16, 15, 141, 224, 231, 214, 208, 193, 172, 145, 82, 28, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 16, 169, 225, 221, 205, 207, 205, 181, 162, 118, 46, + 14, 14, 16, 57, 226, 238, 235, 218, 183, 188, 97, 69, 157, 209, 206, 214, + 207, 215, 178, 148, 97, 14, 14, 14, 23, 204, 234, 236, 221, 213, 169, 152, + 118, 90, 15, 17, 14, 21, 186, 221, 220, 225, 207, 183, 179, 122, 37, 15, + 14, 14, 14, 14, 14, 14, 15, 18, 18, 213, 202, 213, 195, 154, 147, 107, + 16, 14, 14, 14, 14, 14, 14, 15, 14, 15, 18, 15, 14, 14, 14, 14, + 21, 15, 14, 14, 15, 26, 194, 218, 217, 207, 206, 172, 148, 114, 36, 17, + 15, 14, 17, 15, 183, 229, 220, 223, 205, 188, 152, 122, 61, 17, 14, 14, + 15, 17, 14, 14, 16, 27, 175, 195, 210, 211, 202, 203, 172, 132, 87, 15, + 16, 152, 232, 204, 229, 199, 150, 148, 126, 54, 15, 14, 15, 18, 14, 14, + 18, 14, 14, 20, 207, 217, 214, 205, 193, 154, 136, 89, 14, 14, 14, 14, + 95, 216, 223, 218, 198, 200, 176, 159, 107, 55, 14, 17, 14, 25, 16, 19, + 16, 194, 217, 223, 211, 206, 181, 137, 126, 56, 14, 15, 14, 14, 16, 14, + 14, 14, 14, 15, 229, 219, 236, 208, 207, 193, 179, 134, 98, 42, 14, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 22, 79, 233, 221, 232, 211, 197, 157, 128, 84, 16, 14, 14, 14, + 14, 14, 14, 15, 14, 181, 222, 225, 199, 199, 169, 161, 107, 35, 26, 15, + 150, 217, 227, 218, 216, 185, 150, 113, 59, 18, 14, 14, 14, 14, 20, 14, + 14, 14, 14, 100, 223, 224, 229, 197, 189, 186, 81, 47, 15, 134, 210, 233, + 213, 207, 164, 157, 136, 59, 16, 14, 14, 14, 14, 14, 14, 19, 14, 14, + 90, 213, 217, 220, 198, 189, 162, 109, 60, 14, 16, 15, 182, 215, 232, 188, + 205, 202, 186, 164, 87, 16, 14, 19, 14, 14, 14, 16, 14, 15, 14, 14, + 14, 14, 16, 14, 14, 20, 200, 219, 229, 226, 195, 193, 172, 116, 47, 15, + 14, 14, 14, 14, 14, 14, 14, 22, 14, 186, 234, 218, 204, 185, 147, 90, + 67, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 16, 14, 14, 14, 15, 167, 209, 218, 228, 200, 198, 178, 157, 111, 16, 14, + 14, 15, 14, 14, 200, 230, 223, 215, 143, 132, 93, 47, 14, 14, 17, 15, + 210, 240, 241, 239, 214, 197, 157, 93, 31, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 159, 217, 224, 209, 206, 173, 139, 85, 14, 15, 14, 27, 229, + 215, 211, 217, 194, 164, 147, 113, 35, 14, 15, 14, 16, 14, 16, 14, 16, + 214, 219, 220, 218, 210, 181, 154, 132, 73, 14, 16, 15, 14, 16, 15, 186, + 222, 234, 208, 203, 195, 169, 136, 69, 18, 14, 14, 15, 17, 14, 14, 14, + 15, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 167, 224, 222, 207, 208, 208, 186, 167, 120, 48, 14, 16, 14, 179, + 227, 238, 231, 194, 170, 176, 69, 39, 154, 218, 208, 208, 206, 209, 176, 150, + 95, 14, 14, 14, 46, 240, 230, 232, 236, 173, 172, 124, 111, 52, 16, 14, + 14, 67, 209, 218, 216, 229, 211, 188, 173, 82, 19, 14, 14, 14, 16, 14, + 14, 14, 14, 14, 14, 227, 217, 219, 192, 136, 152, 97, 14, 14, 14, 16, + 15, 14, 14, 15, 72, 92, 104, 95, 100, 107, 98, 120, 93, 104, 102, 109, + 111, 137, 240, 229, 214, 209, 206, 161, 152, 109, 25, 16, 16, 14, 16, 15, + 222, 229, 222, 222, 211, 162, 161, 132, 38, 14, 14, 17, 14, 14, 14, 14, + 14, 15, 164, 214, 217, 220, 198, 202, 175, 122, 81, 16, 53, 225, 227, 224, + 203, 189, 152, 134, 82, 26, 14, 15, 20, 14, 14, 17, 14, 14, 16, 14, + 217, 215, 211, 200, 185, 161, 148, 79, 14, 16, 16, 14, 164, 223, 222, 218, + 194, 208, 167, 148, 107, 54, 14, 14, 14, 19, 14, 14, 19, 225, 226, 224, + 214, 200, 169, 132, 116, 47, 14, 18, 15, 14, 14, 14, 14, 14, 18, 104, + 231, 230, 223, 217, 210, 192, 165, 141, 102, 15, 14, 17, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 181, + 233, 230, 232, 220, 185, 154, 107, 64, 14, 16, 14, 14, 15, 14, 14, 14, + 24, 226, 229, 222, 210, 195, 167, 152, 82, 15, 15, 18, 214, 217, 231, 225, + 198, 175, 132, 109, 36, 14, 19, 14, 20, 14, 15, 14, 14, 14, 14, 81, + 228, 229, 223, 217, 193, 164, 104, 33, 15, 213, 231, 217, 219, 186, 176, 150, + 111, 35, 14, 14, 16, 14, 14, 14, 14, 14, 14, 19, 89, 210, 222, 218, + 209, 167, 167, 116, 33, 15, 14, 16, 227, 218, 225, 218, 203, 204, 204, 183, + 198, 87, 19, 14, 14, 14, 14, 14, 18, 18, 20, 14, 14, 16, 14, 14, + 14, 78, 225, 226, 227, 213, 211, 203, 183, 102, 31, 15, 15, 15, 14, 14, + 14, 18, 14, 18, 20, 224, 229, 234, 215, 137, 136, 132, 44, 15, 18, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 15, 65, 227, 228, 217, 213, 211, 176, 165, 126, 41, 14, 14, 18, 14, 139, + 231, 227, 224, 185, 130, 124, 73, 14, 14, 14, 14, 52, 240, 236, 241, 235, + 215, 161, 152, 92, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 169, + 221, 227, 222, 202, 172, 150, 67, 14, 14, 14, 105, 225, 217, 211, 215, 199, + 157, 132, 105, 14, 14, 15, 14, 14, 17, 14, 14, 24, 219, 215, 231, 206, + 209, 162, 165, 111, 29, 18, 15, 14, 15, 15, 29, 223, 228, 229, 207, 215, + 192, 170, 114, 75, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 181, 223, + 223, 213, 213, 208, 198, 179, 116, 45, 16, 14, 40, 229, 237, 229, 234, 199, + 189, 124, 41, 14, 182, 218, 205, 219, 219, 203, 185, 181, 84, 14, 19, 14, + 197, 234, 240, 227, 217, 185, 134, 132, 93, 15, 19, 14, 14, 161, 225, 220, + 226, 220, 214, 207, 159, 68, 21, 14, 14, 14, 14, 14, 14, 15, 14, 15, + 139, 218, 225, 209, 189, 162, 145, 95, 22, 14, 14, 17, 14, 40, 170, 232, + 225, 226, 228, 229, 227, 223, 223, 227, 224, 221, 223, 217, 239, 233, 229, 219, + 215, 224, 198, 165, 137, 107, 15, 15, 16, 14, 15, 56, 229, 218, 233, 207, + 208, 173, 147, 100, 15, 14, 14, 18, 14, 18, 14, 20, 14, 21, 107, 219, + 225, 218, 205, 188, 176, 122, 48, 15, 150, 225, 225, 213, 210, 172, 136, 118, + 52, 26, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 217, 229, 217, 204, + 186, 150, 126, 78, 14, 19, 14, 14, 206, 218, 221, 213, 203, 188, 165, 145, + 92, 15, 14, 14, 21, 14, 14, 14, 60, 218, 227, 222, 206, 202, 162, 145, + 102, 14, 14, 14, 14, 21, 14, 14, 14, 14, 14, 139, 232, 227, 225, 217, + 210, 189, 162, 132, 85, 15, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 200, 234, 233, 232, 221, + 183, 148, 116, 50, 14, 15, 14, 14, 14, 14, 15, 14, 55, 227, 230, 229, + 210, 198, 173, 143, 72, 16, 15, 56, 229, 229, 231, 225, 181, 157, 105, 81, + 20, 14, 14, 14, 15, 14, 15, 14, 14, 14, 14, 120, 230, 232, 225, 217, + 194, 172, 97, 21, 55, 229, 230, 219, 222, 179, 161, 128, 85, 28, 14, 14, + 16, 14, 14, 14, 14, 14, 14, 15, 130, 216, 230, 220, 208, 164, 159, 107, + 22, 14, 14, 15, 219, 225, 227, 223, 210, 211, 217, 218, 202, 205, 206, 181, + 113, 48, 21, 14, 14, 14, 14, 14, 22, 14, 14, 19, 14, 152, 237, 234, + 225, 215, 213, 199, 207, 178, 155, 157, 173, 188, 185, 185, 185, 185, 195, 195, + 188, 240, 225, 210, 203, 148, 116, 118, 22, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 27, 217, 220, + 224, 220, 209, 195, 185, 139, 44, 16, 15, 14, 56, 215, 232, 225, 202, 167, + 137, 85, 35, 15, 14, 14, 14, 132, 241, 242, 238, 234, 204, 157, 137, 60, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 183, 227, 232, 223, 202, + 175, 145, 61, 14, 18, 14, 161, 233, 222, 213, 208, 188, 155, 130, 95, 14, + 14, 14, 14, 14, 14, 14, 15, 69, 232, 224, 229, 206, 205, 165, 155, 98, + 21, 15, 14, 14, 16, 14, 67, 232, 232, 229, 211, 218, 190, 159, 118, 53, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 182, 226, 227, 219, 214, 210, + 199, 189, 122, 47, 14, 14, 165, 238, 236, 240, 199, 175, 164, 79, 26, 14, + 181, 221, 217, 220, 210, 208, 186, 173, 85, 16, 14, 34, 228, 240, 241, 231, + 207, 172, 124, 116, 49, 14, 14, 14, 19, 189, 223, 228, 221, 217, 213, 216, + 200, 176, 155, 162, 164, 170, 172, 178, 179, 181, 183, 188, 210, 236, 238, 225, + 193, 152, 130, 72, 14, 18, 16, 14, 25, 200, 231, 226, 239, 236, 231, 232, + 229, 224, 219, 220, 218, 224, 232, 223, 220, 215, 229, 235, 218, 220, 197, 172, + 137, 92, 15, 16, 16, 14, 15, 105, 233, 229, 233, 217, 198, 167, 145, 82, + 15, 14, 14, 15, 17, 14, 14, 16, 14, 14, 154, 234, 228, 216, 220, 194, + 197, 116, 32, 19, 198, 227, 220, 215, 205, 165, 141, 116, 32, 18, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 28, 223, 225, 221, 210, 190, 182, 113, 61, + 14, 14, 14, 22, 220, 225, 220, 216, 208, 195, 165, 139, 82, 14, 14, 14, + 14, 14, 14, 16, 109, 229, 228, 226, 210, 203, 159, 134, 93, 14, 14, 14, + 14, 18, 14, 14, 14, 14, 14, 188, 233, 230, 223, 220, 210, 188, 155, 124, + 65, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 26, 219, 235, 236, 229, 224, 175, 141, 116, 27, + 14, 14, 15, 14, 14, 14, 16, 14, 128, 232, 234, 231, 206, 192, 173, 128, + 47, 16, 14, 145, 240, 238, 232, 221, 178, 145, 98, 55, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 14, 178, 234, 234, 234, 218, 192, 176, 84, 14, + 134, 232, 225, 220, 223, 181, 154, 132, 53, 19, 14, 15, 15, 14, 14, 14, + 14, 16, 14, 14, 188, 218, 231, 223, 207, 162, 152, 102, 14, 14, 14, 15, + 225, 228, 217, 211, 220, 221, 210, 199, 202, 216, 223, 217, 208, 206, 200, 192, + 90, 21, 19, 16, 14, 14, 16, 14, 14, 195, 239, 233, 217, 216, 221, 208, + 214, 213, 218, 229, 229, 229, 227, 229, 230, 217, 242, 234, 241, 234, 234, 227, + 189, 159, 116, 109, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 190, 221, 226, 225, 206, 209, + 182, 169, 73, 19, 19, 18, 167, 239, 232, 220, 172, 141, 126, 45, 14, 17, + 14, 14, 14, 208, 236, 243, 227, 222, 185, 152, 114, 31, 14, 14, 14, 14, + 16, 14, 14, 14, 14, 15, 14, 218, 232, 236, 224, 202, 172, 134, 54, 14, + 14, 14, 195, 233, 224, 215, 205, 179, 152, 126, 73, 14, 14, 14, 14, 16, + 14, 15, 14, 154, 236, 229, 228, 217, 205, 170, 143, 84, 14, 14, 14, 14, + 15, 14, 136, 236, 232, 229, 210, 214, 186, 143, 120, 33, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 190, 229, 231, 221, 215, 214, 206, 194, 128, 47, + 14, 20, 233, 237, 231, 236, 194, 181, 132, 42, 15, 14, 179, 224, 225, 221, + 206, 215, 189, 173, 90, 18, 14, 136, 244, 241, 240, 226, 197, 155, 116, 87, + 16, 14, 14, 15, 43, 214, 216, 225, 228, 225, 217, 216, 206, 199, 199, 215, + 214, 219, 225, 228, 229, 230, 232, 235, 227, 232, 232, 223, 178, 148, 141, 75, + 14, 15, 16, 18, 136, 245, 244, 238, 234, 229, 220, 221, 225, 226, 225, 224, + 225, 219, 219, 219, 213, 218, 225, 224, 219, 215, 197, 176, 130, 65, 15, 18, + 14, 14, 14, 179, 239, 234, 228, 217, 185, 162, 130, 61, 14, 15, 14, 14, + 16, 14, 14, 14, 14, 14, 192, 238, 231, 218, 222, 194, 197, 105, 19, 52, + 230, 228, 216, 219, 197, 155, 141, 97, 15, 14, 14, 17, 14, 14, 14, 15, + 14, 15, 14, 79, 231, 221, 220, 217, 178, 193, 102, 42, 16, 14, 16, 89, + 232, 231, 222, 213, 208, 197, 159, 124, 65, 15, 14, 14, 14, 14, 17, 14, + 188, 238, 225, 223, 214, 195, 150, 120, 71, 14, 15, 14, 14, 16, 14, 14, + 14, 14, 14, 221, 234, 230, 225, 217, 209, 188, 154, 122, 47, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 64, 235, 239, 238, 227, 222, 167, 128, 109, 14, 14, 14, 16, 14, + 14, 14, 14, 14, 200, 233, 234, 231, 206, 189, 173, 111, 26, 14, 14, 209, + 244, 240, 229, 217, 178, 130, 109, 27, 14, 15, 14, 19, 14, 14, 14, 14, + 14, 14, 14, 210, 236, 235, 238, 218, 192, 175, 69, 14, 202, 232, 218, 218, + 217, 173, 147, 130, 31, 14, 14, 16, 14, 14, 14, 14, 14, 15, 14, 14, + 214, 222, 231, 221, 202, 159, 141, 98, 14, 14, 14, 14, 206, 223, 206, 197, + 217, 228, 222, 225, 234, 232, 226, 226, 232, 236, 225, 207, 215, 185, 79, 17, + 14, 14, 14, 14, 19, 217, 231, 229, 214, 215, 218, 214, 206, 211, 218, 225, + 226, 222, 223, 230, 229, 216, 236, 225, 233, 214, 229, 220, 155, 148, 126, 87, + 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 18, 14, 118, 234, 230, 227, 214, 214, 178, 195, 111, 14, + 14, 82, 229, 237, 227, 205, 155, 124, 82, 23, 14, 17, 14, 14, 21, 231, + 231, 238, 222, 200, 170, 150, 87, 15, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 38, 236, 234, 239, 224, 203, 178, 118, 39, 14, 14, 27, 225, 234, + 225, 218, 205, 178, 152, 109, 48, 14, 14, 14, 14, 14, 14, 15, 14, 195, + 232, 226, 222, 220, 194, 176, 134, 72, 14, 15, 14, 15, 14, 14, 193, 239, + 234, 229, 215, 205, 182, 130, 109, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 194, 233, 232, 221, 217, 217, 215, 203, 136, 49, 14, 118, 234, 236, + 232, 210, 209, 176, 109, 24, 14, 14, 179, 227, 226, 217, 214, 220, 202, 183, + 97, 14, 33, 222, 245, 239, 237, 218, 178, 152, 105, 53, 14, 14, 14, 14, + 109, 225, 217, 223, 224, 221, 222, 217, 214, 205, 203, 211, 215, 219, 221, 223, + 225, 227, 228, 229, 234, 229, 218, 203, 157, 148, 143, 45, 19, 14, 15, 63, + 234, 230, 237, 241, 225, 217, 202, 190, 188, 183, 176, 173, 179, 162, 169, 202, + 207, 225, 224, 218, 220, 210, 194, 179, 122, 44, 15, 18, 14, 14, 20, 223, + 238, 234, 223, 219, 178, 162, 118, 39, 14, 15, 14, 14, 14, 14, 14, 14, + 15, 21, 220, 234, 236, 220, 217, 193, 170, 100, 14, 134, 239, 226, 215, 213, + 182, 157, 134, 54, 14, 14, 14, 16, 14, 14, 14, 15, 14, 14, 14, 150, + 233, 226, 220, 209, 161, 179, 97, 24, 16, 14, 16, 185, 232, 231, 224, 217, + 202, 189, 152, 113, 38, 14, 16, 14, 14, 16, 14, 14, 222, 242, 226, 221, + 214, 183, 145, 118, 40, 14, 14, 14, 14, 14, 14, 14, 14, 14, 30, 236, + 237, 232, 225, 220, 211, 192, 154, 114, 31, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 130, 240, + 238, 237, 227, 216, 164, 128, 82, 14, 15, 14, 15, 14, 14, 16, 14, 16, + 229, 235, 236, 226, 207, 188, 170, 97, 15, 14, 18, 234, 245, 240, 230, 208, + 172, 111, 93, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 226, + 236, 236, 239, 218, 200, 172, 60, 22, 233, 236, 225, 224, 206, 159, 134, 104, + 18, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 21, 228, 225, 233, 220, + 193, 159, 141, 81, 14, 15, 14, 14, 116, 197, 211, 193, 188, 186, 200, 230, + 205, 208, 218, 229, 233, 229, 227, 229, 228, 209, 210, 145, 17, 14, 23, 14, + 92, 237, 228, 231, 220, 210, 206, 203, 194, 194, 192, 197, 192, 183, 186, 194, + 189, 190, 199, 194, 193, 175, 183, 147, 143, 126, 130, 50, 19, 14, 21, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 44, 237, 233, 228, 225, 217, 200, 205, 126, 17, 17, 206, 244, 235, + 217, 179, 150, 102, 35, 14, 14, 14, 14, 15, 76, 236, 228, 232, 225, 178, + 159, 139, 59, 14, 18, 14, 14, 14, 14, 16, 14, 14, 14, 14, 109, 240, + 238, 238, 222, 205, 183, 105, 29, 14, 18, 84, 240, 234, 223, 217, 194, 172, + 154, 95, 26, 14, 14, 18, 14, 14, 15, 14, 16, 217, 232, 231, 223, 220, + 189, 172, 132, 60, 14, 16, 14, 14, 14, 24, 214, 233, 234, 230, 218, 200, + 182, 130, 87, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 194, 235, + 230, 221, 220, 221, 217, 206, 141, 53, 17, 209, 226, 237, 234, 203, 181, 139, + 72, 16, 14, 14, 179, 225, 229, 218, 218, 215, 204, 186, 95, 14, 136, 243, + 239, 238, 235, 209, 164, 150, 90, 24, 14, 18, 14, 14, 189, 229, 225, 224, + 221, 221, 217, 207, 198, 189, 175, 170, 182, 192, 186, 192, 193, 194, 198, 199, + 194, 194, 183, 164, 143, 157, 132, 22, 14, 16, 16, 141, 241, 225, 233, 224, + 200, 194, 185, 162, 148, 147, 150, 154, 162, 162, 175, 195, 206, 213, 219, 225, + 225, 214, 198, 172, 107, 26, 14, 15, 14, 14, 47, 237, 234, 233, 219, 217, + 176, 155, 102, 22, 14, 14, 14, 14, 14, 18, 14, 14, 14, 75, 238, 236, + 234, 226, 200, 202, 130, 84, 14, 195, 236, 227, 218, 214, 170, 159, 124, 24, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 193, 235, 234, 225, 203, + 169, 157, 105, 14, 14, 14, 14, 206, 231, 233, 224, 215, 199, 178, 143, 107, + 18, 14, 14, 14, 14, 14, 14, 21, 235, 241, 232, 221, 210, 170, 150, 118, + 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 72, 239, 234, 230, 222, 217, + 207, 188, 147, 109, 20, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 179, 235, 237, 236, 228, 203, + 167, 134, 50, 14, 15, 14, 15, 14, 14, 15, 14, 42, 238, 236, 236, 219, + 210, 192, 164, 84, 14, 14, 53, 244, 245, 240, 235, 199, 172, 111, 63, 14, + 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 75, 234, 240, 238, 237, 215, + 205, 152, 49, 65, 239, 234, 231, 225, 197, 169, 134, 81, 14, 14, 14, 14, + 14, 14, 16, 14, 15, 14, 14, 79, 234, 231, 234, 215, 183, 150, 134, 49, + 14, 14, 14, 14, 30, 104, 182, 202, 193, 189, 179, 181, 215, 211, 211, 219, + 213, 206, 216, 232, 209, 225, 214, 192, 104, 15, 14, 15, 176, 238, 228, 225, + 220, 206, 192, 178, 162, 157, 152, 157, 152, 145, 132, 134, 136, 147, 137, 150, + 143, 159, 172, 132, 161, 126, 120, 31, 20, 14, 20, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 218, + 230, 227, 233, 220, 214, 200, 165, 104, 124, 245, 240, 225, 194, 157, 120, 65, + 14, 14, 19, 14, 14, 16, 170, 232, 231, 220, 216, 157, 150, 116, 32, 14, + 16, 14, 14, 14, 14, 19, 14, 14, 14, 14, 188, 233, 238, 238, 217, 203, + 188, 95, 22, 14, 16, 162, 241, 234, 219, 219, 183, 167, 137, 82, 14, 14, + 14, 17, 14, 14, 14, 14, 50, 233, 238, 236, 224, 209, 179, 162, 124, 36, + 15, 15, 14, 14, 14, 60, 228, 234, 234, 229, 217, 195, 175, 136, 57, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 194, 233, 231, 225, 222, 222, + 213, 204, 152, 71, 122, 230, 231, 229, 222, 211, 141, 132, 37, 14, 14, 14, + 186, 230, 230, 225, 220, 214, 204, 189, 116, 14, 215, 243, 235, 239, 231, 200, + 155, 128, 54, 14, 14, 14, 14, 14, 219, 226, 226, 220, 217, 217, 205, 170, + 143, 139, 128, 116, 143, 148, 152, 147, 148, 150, 150, 150, 136, 155, 152, 145, + 139, 141, 98, 14, 14, 17, 18, 214, 236, 239, 225, 209, 185, 175, 145, 114, + 84, 90, 97, 104, 114, 89, 92, 114, 217, 218, 221, 221, 222, 205, 183, 154, + 85, 16, 14, 14, 14, 14, 122, 243, 232, 234, 217, 208, 175, 145, 84, 14, + 14, 14, 14, 14, 14, 23, 14, 14, 14, 165, 243, 238, 227, 226, 190, 210, + 111, 57, 14, 217, 230, 232, 226, 208, 169, 154, 105, 14, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 24, 217, 233, 237, 228, 195, 172, 134, 97, 14, + 14, 14, 26, 224, 231, 234, 228, 215, 199, 172, 130, 98, 14, 14, 14, 14, + 14, 14, 14, 93, 240, 242, 236, 224, 206, 159, 148, 105, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 143, 238, 234, 228, 217, 215, 206, 183, 141, 100, + 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 24, 211, 231, 235, 230, 226, 181, 161, 128, 26, 14, + 14, 14, 15, 14, 16, 15, 14, 113, 236, 235, 236, 206, 209, 189, 141, 63, + 14, 14, 124, 245, 245, 239, 236, 185, 154, 114, 28, 14, 14, 16, 15, 15, + 15, 15, 14, 14, 14, 14, 172, 236, 238, 234, 228, 203, 199, 105, 32, 137, + 242, 230, 232, 221, 188, 176, 126, 47, 14, 14, 14, 14, 14, 14, 16, 14, + 16, 14, 15, 183, 235, 234, 229, 202, 172, 139, 114, 21, 16, 14, 14, 14, + 14, 26, 71, 118, 157, 195, 199, 173, 167, 181, 195, 210, 221, 229, 226, 220, + 232, 209, 193, 208, 134, 26, 14, 14, 199, 227, 229, 209, 213, 206, 183, 139, + 82, 78, 78, 92, 100, 105, 104, 109, 113, 114, 95, 98, 93, 89, 128, 95, + 97, 78, 65, 22, 17, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 165, 234, 226, 234, 224, + 215, 211, 207, 216, 235, 248, 230, 202, 162, 136, 73, 28, 14, 14, 15, 14, + 14, 14, 216, 229, 228, 214, 192, 152, 134, 89, 16, 14, 14, 14, 15, 14, + 15, 14, 14, 14, 14, 30, 225, 230, 237, 236, 208, 183, 170, 76, 16, 14, + 14, 214, 235, 232, 219, 222, 181, 167, 116, 71, 14, 14, 14, 14, 14, 14, + 14, 14, 124, 238, 238, 233, 221, 203, 173, 145, 107, 18, 14, 14, 14, 14, + 14, 126, 236, 236, 231, 223, 210, 188, 159, 141, 29, 18, 16, 14, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 193, 233, 229, 225, 220, 220, 214, 217, 185, 118, + 226, 229, 232, 222, 203, 190, 141, 95, 16, 14, 14, 14, 183, 232, 229, 229, + 218, 220, 208, 190, 154, 73, 232, 238, 235, 234, 215, 179, 152, 90, 27, 14, + 14, 14, 14, 19, 229, 225, 218, 215, 202, 205, 186, 120, 75, 76, 82, 89, + 109, 114, 118, 114, 116, 116, 113, 113, 116, 132, 109, 107, 97, 67, 45, 14, + 18, 14, 71, 235, 232, 234, 215, 202, 182, 152, 84, 38, 16, 14, 14, 14, + 15, 14, 14, 30, 225, 232, 232, 220, 216, 197, 170, 130, 68, 14, 15, 14, + 14, 14, 202, 243, 234, 232, 215, 194, 162, 120, 65, 14, 14, 14, 14, 14, + 14, 16, 14, 14, 31, 217, 240, 234, 223, 219, 188, 195, 104, 30, 24, 231, + 232, 231, 219, 203, 165, 132, 81, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 79, 236, 227, 232, 220, 178, 159, 124, 60, 14, 14, 16, 93, 235, + 234, 234, 225, 211, 195, 169, 113, 75, 14, 18, 14, 14, 17, 14, 17, 190, + 241, 242, 234, 218, 202, 152, 136, 71, 14, 15, 14, 14, 14, 14, 14, 14, + 17, 14, 192, 236, 234, 224, 215, 208, 200, 178, 134, 93, 14, 14, 14, 14, + 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 14, 32, 228, 229, 228, 216, 217, 155, 154, 122, 14, 14, 14, 14, 18, 14, + 16, 14, 14, 175, 227, 231, 231, 188, 203, 181, 114, 48, 14, 14, 173, 243, + 243, 232, 233, 167, 132, 116, 14, 14, 14, 19, 14, 15, 15, 14, 14, 14, + 14, 14, 219, 239, 231, 225, 213, 178, 185, 75, 19, 170, 242, 228, 230, 211, + 170, 169, 97, 18, 15, 14, 14, 14, 14, 14, 17, 14, 14, 14, 14, 222, + 234, 237, 227, 192, 167, 139, 107, 14, 19, 14, 14, 14, 14, 14, 15, 14, + 14, 48, 116, 122, 150, 181, 195, 189, 192, 219, 225, 217, 208, 224, 197, 193, + 164, 43, 14, 14, 215, 226, 238, 202, 211, 206, 176, 102, 26, 21, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 17, 20, 14, 22, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 18, 100, 236, 227, 228, 223, 216, 225, 215, 217, + 240, 222, 225, 183, 145, 126, 45, 14, 14, 14, 14, 15, 15, 14, 229, 234, + 236, 217, 178, 167, 130, 73, 14, 16, 14, 15, 16, 15, 19, 14, 14, 16, + 14, 82, 242, 234, 237, 230, 193, 164, 154, 64, 14, 14, 14, 240, 238, 236, + 222, 223, 165, 154, 102, 65, 14, 14, 14, 14, 14, 15, 17, 14, 178, 236, + 235, 229, 221, 203, 167, 128, 98, 14, 14, 14, 15, 14, 14, 169, 238, 235, + 225, 210, 199, 176, 136, 132, 14, 18, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 189, 230, 225, 217, 215, 211, 209, 217, 206, 165, 237, 214, 222, 228, + 199, 128, 145, 31, 14, 14, 14, 14, 183, 229, 222, 226, 214, 219, 215, 197, + 182, 170, 231, 229, 229, 217, 181, 159, 145, 65, 16, 14, 14, 18, 15, 45, + 235, 232, 217, 215, 200, 207, 165, 68, 18, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 19, 14, 14, 15, 18, 14, 208, 231, + 230, 228, 224, 181, 161, 113, 50, 16, 14, 14, 14, 14, 15, 14, 27, 46, + 240, 229, 218, 208, 205, 186, 154, 105, 56, 14, 18, 14, 14, 14, 234, 242, + 234, 231, 210, 179, 155, 105, 59, 14, 17, 14, 14, 14, 14, 14, 15, 18, + 76, 240, 236, 229, 217, 209, 186, 164, 93, 15, 48, 242, 232, 227, 207, 194, + 157, 98, 55, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 150, 245, + 221, 227, 208, 165, 155, 126, 37, 14, 15, 14, 162, 237, 234, 231, 217, 207, + 193, 161, 100, 54, 14, 19, 14, 14, 18, 14, 14, 215, 242, 238, 234, 210, + 199, 139, 126, 50, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 225, 232, + 228, 231, 216, 202, 198, 182, 116, 68, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 20, 14, 14, 17, 14, 14, 14, 120, 222, 211, + 211, 197, 179, 159, 113, 84, 14, 14, 14, 21, 14, 14, 14, 14, 14, 203, + 216, 222, 207, 202, 178, 172, 145, 30, 14, 14, 188, 228, 231, 229, 206, 179, + 143, 87, 16, 16, 14, 14, 14, 14, 15, 14, 23, 14, 14, 82, 231, 229, + 220, 214, 186, 173, 128, 42, 16, 193, 219, 226, 222, 189, 161, 155, 79, 14, + 14, 14, 14, 14, 15, 16, 14, 14, 14, 16, 68, 225, 229, 229, 234, 165, + 157, 145, 76, 14, 19, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 32, 54, 120, 161, 207, 208, 219, 210, 204, 213, 198, 178, 150, 64, 14, 14, + 231, 230, 223, 213, 194, 192, 164, 98, 14, 14, 14, 14, 15, 17, 14, 14, + 20, 14, 14, 18, 14, 14, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 16, 216, 217, 233, 210, 214, 215, 218, 221, 226, 221, 189, 143, + 136, 59, 19, 14, 14, 14, 14, 14, 14, 15, 231, 235, 238, 215, 198, 178, + 113, 56, 19, 14, 16, 14, 15, 19, 14, 16, 18, 14, 14, 178, 230, 237, + 230, 206, 192, 161, 120, 30, 21, 14, 73, 245, 234, 229, 217, 197, 165, 141, + 98, 23, 14, 14, 14, 14, 14, 14, 14, 14, 213, 238, 229, 236, 208, 179, + 150, 120, 65, 14, 14, 14, 14, 14, 14, 208, 229, 228, 213, 211, 200, 152, + 118, 78, 14, 14, 15, 14, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 185, 225, + 222, 211, 202, 203, 205, 209, 208, 214, 225, 225, 225, 182, 165, 137, 87, 14, + 14, 14, 14, 14, 182, 228, 223, 213, 206, 209, 206, 208, 206, 208, 215, 216, + 208, 205, 154, 150, 90, 45, 14, 17, 14, 14, 14, 105, 230, 225, 221, 205, + 198, 193, 148, 60, 14, 14, 15, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 16, 19, 14, 14, 19, 14, 24, 229, 243, 234, 229, 199, 186, + 169, 90, 30, 14, 14, 14, 14, 14, 15, 14, 20, 137, 225, 226, 216, 190, + 203, 162, 152, 114, 21, 19, 14, 14, 14, 71, 238, 236, 240, 211, 215, 167, + 141, 111, 14, 14, 18, 14, 14, 16, 14, 14, 14, 14, 221, 236, 236, 224, + 215, 165, 186, 126, 63, 14, 109, 234, 219, 213, 211, 157, 143, 107, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 227, 240, 219, 225, 190, 165, + 124, 105, 18, 14, 14, 14, 216, 239, 227, 234, 204, 209, 182, 132, 114, 14, + 16, 14, 14, 14, 14, 14, 18, 238, 232, 239, 227, 210, 169, 148, 126, 30, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 224, 230, 225, 218, 210, 197, + 188, 165, 104, 53, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 24, + 15, 14, 14, 14, 14, 15, 14, 14, 14, 152, 215, 205, 204, 188, 164, 150, + 118, 64, 14, 14, 14, 15, 14, 14, 14, 14, 15, 207, 208, 210, 189, 178, + 155, 137, 104, 16, 14, 14, 182, 223, 224, 225, 202, 172, 152, 87, 14, 16, + 14, 15, 14, 14, 27, 14, 16, 21, 14, 193, 233, 208, 210, 190, 161, 148, + 90, 25, 14, 179, 220, 215, 206, 185, 150, 126, 64, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 148, 228, 221, 232, 192, 175, 152, 130, 44, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 45, + 159, 217, 217, 215, 205, 207, 185, 162, 134, 46, 14, 29, 230, 227, 221, 206, + 189, 183, 150, 82, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 173, 219, 222, 210, 207, 209, 214, 217, 213, 189, 152, 126, 89, 42, 16, 14, + 14, 14, 14, 14, 14, 14, 227, 232, 238, 216, 193, 173, 132, 57, 15, 14, + 14, 18, 16, 14, 21, 14, 17, 14, 26, 223, 238, 225, 222, 178, 159, 137, + 93, 19, 14, 14, 122, 244, 232, 227, 211, 189, 162, 134, 98, 25, 14, 14, + 14, 14, 14, 14, 14, 22, 213, 238, 228, 225, 203, 169, 132, 92, 32, 14, + 14, 14, 14, 14, 25, 215, 227, 219, 199, 200, 181, 141, 116, 61, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 185, 224, 219, 207, 198, 198, + 199, 198, 205, 209, 217, 217, 206, 178, 132, 105, 46, 14, 14, 14, 14, 14, + 178, 223, 217, 209, 204, 207, 208, 199, 199, 202, 204, 203, 194, 159, 148, 102, + 84, 19, 14, 14, 14, 14, 14, 122, 220, 221, 218, 204, 181, 161, 120, 54, + 16, 14, 17, 15, 15, 14, 14, 14, 14, 14, 14, 14, 26, 15, 14, 14, + 14, 18, 21, 14, 15, 56, 235, 243, 234, 222, 195, 176, 120, 53, 14, 14, + 14, 14, 15, 18, 23, 19, 15, 186, 217, 216, 210, 192, 186, 152, 143, 98, + 18, 16, 14, 14, 14, 134, 243, 236, 232, 202, 194, 152, 134, 105, 15, 14, + 16, 16, 14, 16, 17, 18, 14, 78, 238, 230, 222, 202, 192, 157, 150, 98, + 31, 14, 93, 225, 216, 205, 192, 145, 152, 109, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 84, 232, 235, 221, 210, 178, 143, 118, 56, 15, 14, + 18, 31, 229, 241, 228, 228, 205, 198, 169, 130, 97, 14, 14, 14, 15, 14, + 14, 19, 55, 237, 232, 238, 222, 205, 161, 132, 93, 19, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 27, 228, 232, 225, 210, 208, 203, 182, 164, 104, 39, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 14, 16, + 14, 14, 14, 14, 15, 189, 217, 209, 199, 182, 147, 136, 114, 35, 14, 14, + 14, 14, 14, 14, 15, 14, 61, 217, 208, 208, 192, 173, 150, 118, 69, 14, + 14, 14, 186, 225, 220, 220, 190, 167, 128, 67, 14, 17, 14, 14, 14, 14, + 14, 14, 14, 14, 17, 239, 229, 207, 209, 170, 147, 141, 68, 18, 14, 176, + 221, 210, 198, 186, 155, 120, 59, 16, 14, 14, 17, 19, 17, 14, 14, 15, + 14, 15, 218, 229, 222, 226, 170, 157, 136, 87, 18, 14, 14, 14, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 122, 227, 210, 207, + 200, 200, 172, 154, 128, 36, 19, 81, 225, 221, 216, 204, 185, 176, 137, 72, + 14, 14, 14, 14, 14, 14, 14, 14, 19, 18, 14, 14, 14, 16, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 97, 221, 209, 214, + 208, 205, 207, 206, 193, 159, 128, 114, 41, 23, 14, 14, 14, 14, 14, 14, + 14, 14, 224, 232, 234, 210, 185, 159, 111, 37, 14, 14, 14, 15, 16, 14, + 14, 14, 16, 14, 93, 236, 236, 223, 215, 155, 143, 122, 67, 14, 14, 14, + 188, 241, 228, 225, 203, 178, 162, 118, 49, 14, 14, 14, 14, 14, 14, 15, + 14, 65, 219, 234, 224, 214, 193, 157, 128, 82, 15, 14, 14, 14, 18, 15, + 73, 221, 221, 211, 200, 183, 165, 134, 111, 32, 19, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 181, 224, 217, 206, 198, 193, 198, 194, 193, 197, + 206, 214, 178, 172, 109, 75, 20, 14, 14, 14, 14, 14, 175, 222, 216, 205, + 204, 207, 203, 194, 189, 190, 195, 193, 185, 134, 134, 89, 52, 14, 14, 15, + 14, 14, 14, 167, 219, 221, 215, 206, 202, 176, 120, 56, 19, 14, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 18, 14, 14, 18, 14, + 14, 120, 233, 236, 226, 204, 192, 165, 126, 52, 16, 14, 14, 14, 14, 14, + 14, 14, 14, 229, 221, 205, 207, 188, 172, 141, 132, 75, 14, 14, 14, 14, + 14, 198, 235, 225, 219, 192, 179, 155, 98, 59, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 173, 232, 219, 221, 204, 165, 159, 122, 69, 15, 14, 90, 225, + 217, 211, 188, 141, 147, 82, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 199, 228, 225, 217, 190, 159, 134, 107, 22, 15, 14, 20, 67, 234, 232, + 227, 219, 206, 182, 152, 126, 65, 14, 14, 16, 14, 14, 14, 15, 139, 232, + 232, 232, 214, 192, 152, 114, 68, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 53, 231, 234, 226, 206, 210, 210, 181, 162, 109, 39, 15, 14, 14, 14, + 15, 15, 15, 15, 14, 19, 14, 14, 21, 15, 14, 14, 14, 14, 14, 14, + 27, 213, 217, 223, 204, 181, 137, 124, 98, 15, 15, 14, 14, 15, 14, 14, + 14, 14, 137, 222, 217, 213, 195, 178, 154, 114, 52, 14, 14, 14, 183, 227, + 218, 216, 189, 164, 113, 57, 14, 16, 14, 14, 14, 14, 14, 24, 14, 14, + 120, 232, 218, 224, 202, 154, 139, 126, 44, 14, 14, 179, 221, 208, 198, 186, + 164, 132, 61, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 130, 238, 233, + 223, 200, 185, 122, 111, 52, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 16, 23, 14, 113, 227, 220, 211, 192, 189, 162, 154, + 122, 27, 16, 116, 225, 218, 210, 202, 183, 179, 139, 75, 14, 14, 14, 17, + 18, 14, 14, 16, 14, 14, 14, 14, 19, 14, 14, 44, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 39, 215, 202, 217, 193, 200, 203, 189, + 172, 152, 118, 85, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 223, 229, + 233, 204, 182, 157, 97, 21, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 217, 219, 226, 229, 198, 152, 143, 93, 40, 14, 14, 22, 221, 233, 220, 221, + 198, 173, 161, 113, 54, 16, 14, 15, 14, 14, 14, 14, 14, 122, 225, 226, + 217, 208, 190, 143, 114, 79, 14, 14, 14, 16, 17, 14, 139, 217, 217, 207, + 200, 179, 159, 141, 95, 15, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 183, 221, 218, 209, 199, 199, 195, 194, 188, 193, 199, 194, 154, 147, + 93, 42, 14, 17, 14, 14, 14, 14, 175, 222, 215, 200, 198, 203, 199, 193, + 192, 195, 192, 192, 167, 141, 105, 85, 18, 14, 14, 15, 16, 14, 14, 190, + 213, 218, 214, 207, 183, 150, 104, 43, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 24, 14, 15, 30, 14, 14, 14, 14, 14, 179, 228, 225, + 220, 188, 193, 172, 107, 41, 14, 14, 18, 15, 14, 15, 19, 24, 38, 234, + 203, 199, 205, 204, 170, 143, 122, 56, 14, 14, 14, 14, 16, 222, 223, 211, + 207, 189, 164, 152, 105, 38, 14, 16, 14, 14, 17, 15, 14, 18, 57, 229, + 222, 217, 217, 192, 155, 154, 114, 40, 14, 15, 97, 221, 213, 215, 197, 145, + 143, 65, 14, 14, 14, 14, 14, 14, 14, 14, 16, 18, 40, 226, 220, 219, + 204, 167, 130, 134, 84, 14, 16, 16, 14, 136, 235, 224, 222, 203, 203, 170, + 139, 116, 39, 14, 14, 19, 14, 14, 14, 14, 194, 225, 224, 221, 203, 178, + 152, 114, 55, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 95, 234, 234, + 229, 203, 208, 214, 179, 167, 128, 55, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 16, 14, 14, 26, 159, 14, 14, 15, 14, 61, 225, 223, 234, + 216, 186, 145, 126, 79, 14, 14, 14, 14, 15, 14, 14, 14, 14, 199, 230, + 228, 217, 203, 175, 147, 95, 31, 14, 14, 14, 183, 228, 220, 217, 192, 170, + 150, 69, 14, 14, 14, 14, 14, 14, 14, 21, 14, 27, 224, 217, 226, 222, + 185, 147, 132, 98, 27, 14, 14, 185, 217, 215, 204, 190, 170, 159, 71, 14, + 15, 20, 16, 14, 14, 16, 18, 14, 19, 233, 236, 232, 219, 173, 155, 120, + 85, 24, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 20, 14, 178, 227, 226, 208, 195, 189, 157, 143, 89, 14, 14, 109, + 227, 217, 214, 207, 197, 186, 159, 104, 18, 14, 14, 14, 14, 14, 14, 14, + 17, 16, 25, 14, 14, 14, 20, 126, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 198, 200, 219, 179, 195, 192, 164, 147, 139, 90, 44, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 223, 225, 232, 208, 190, 165, + 137, 23, 14, 14, 14, 14, 14, 14, 14, 14, 14, 85, 241, 211, 229, 214, + 162, 159, 143, 61, 18, 14, 14, 43, 231, 223, 217, 217, 200, 176, 165, 114, + 35, 14, 14, 15, 15, 14, 14, 14, 14, 170, 229, 219, 210, 210, 192, 137, + 97, 67, 14, 14, 14, 14, 14, 14, 185, 216, 217, 205, 207, 182, 157, 134, + 93, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 182, 225, + 222, 211, 204, 203, 204, 202, 195, 200, 183, 167, 139, 98, 79, 18, 14, 16, + 14, 14, 14, 14, 176, 225, 215, 204, 195, 202, 202, 197, 202, 204, 198, 194, + 148, 141, 92, 52, 14, 14, 15, 14, 14, 14, 14, 190, 213, 217, 206, 208, + 204, 194, 162, 85, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 41, 92, 17, 14, 14, 14, 14, 203, 218, 209, 209, 183, 195, 175, + 136, 46, 14, 14, 14, 14, 14, 14, 14, 14, 105, 233, 214, 210, 194, 194, + 175, 148, 118, 40, 14, 14, 14, 14, 53, 231, 211, 200, 194, 188, 155, 141, + 93, 18, 14, 14, 14, 14, 14, 14, 14, 20, 175, 238, 217, 227, 205, 172, + 150, 136, 93, 18, 14, 14, 98, 216, 211, 218, 197, 165, 172, 93, 16, 15, + 16, 14, 14, 14, 16, 19, 16, 14, 162, 224, 217, 221, 182, 150, 105, 118, + 44, 14, 14, 16, 14, 193, 230, 211, 217, 192, 199, 159, 136, 102, 24, 14, + 14, 20, 14, 19, 14, 15, 217, 224, 223, 206, 190, 165, 147, 104, 38, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 136, 234, 234, 231, 214, 214, 216, + 195, 183, 159, 107, 14, 15, 14, 14, 14, 14, 14, 14, 21, 14, 14, 14, + 14, 20, 89, 210, 14, 14, 15, 14, 128, 226, 233, 235, 223, 189, 162, 128, + 54, 14, 14, 14, 14, 14, 14, 14, 14, 26, 232, 239, 239, 223, 207, 170, + 145, 78, 18, 14, 15, 14, 181, 225, 221, 220, 198, 183, 189, 104, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 134, 232, 223, 239, 203, 162, 145, 114, 63, + 18, 14, 15, 188, 218, 221, 214, 194, 182, 176, 97, 19, 14, 14, 15, 15, + 14, 14, 14, 14, 137, 248, 240, 233, 207, 170, 102, 136, 52, 14, 14, 14, + 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 29, 14, 14, 30, + 227, 229, 222, 200, 197, 172, 145, 124, 64, 14, 19, 102, 229, 219, 216, 216, + 199, 198, 185, 152, 40, 22, 14, 14, 15, 14, 14, 15, 14, 14, 14, 14, + 22, 79, 143, 194, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 157, 211, 217, 193, 200, 182, 148, 130, 116, 59, 19, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 223, 225, 232, 214, 204, 183, 183, 48, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 213, 226, 230, 238, 178, 145, 162, 114, 35, + 14, 14, 14, 104, 231, 217, 217, 214, 211, 190, 179, 147, 24, 14, 14, 14, + 14, 14, 14, 14, 32, 199, 230, 221, 210, 216, 176, 147, 98, 48, 14, 14, + 14, 14, 14, 20, 214, 219, 221, 209, 214, 181, 150, 124, 73, 17, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 186, 229, 225, 217, 207, 208, + 207, 205, 203, 194, 176, 150, 130, 72, 57, 14, 14, 16, 14, 14, 15, 14, + 179, 229, 222, 209, 197, 200, 199, 202, 207, 211, 203, 189, 150, 118, 84, 19, + 14, 14, 21, 14, 14, 14, 14, 172, 218, 221, 215, 208, 199, 197, 188, 136, + 48, 18, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 104, 182, 148, + 14, 14, 14, 15, 14, 214, 217, 213, 204, 188, 197, 181, 167, 81, 24, 14, + 14, 14, 14, 14, 14, 23, 185, 227, 225, 220, 200, 189, 173, 150, 107, 27, + 14, 14, 14, 14, 116, 222, 203, 197, 193, 194, 172, 162, 73, 14, 14, 14, + 16, 14, 14, 14, 28, 68, 226, 226, 208, 226, 197, 172, 152, 111, 71, 14, + 18, 14, 93, 217, 222, 220, 192, 181, 190, 139, 32, 14, 14, 14, 15, 17, + 14, 14, 15, 37, 220, 208, 214, 211, 167, 150, 113, 95, 18, 14, 14, 14, + 16, 223, 226, 215, 207, 190, 190, 162, 136, 81, 15, 14, 14, 15, 14, 17, + 14, 40, 224, 225, 217, 204, 182, 150, 134, 84, 22, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 172, 236, 235, 232, 224, 217, 213, 208, 202, 190, 185, + 179, 185, 182, 188, 185, 186, 186, 186, 175, 194, 198, 183, 186, 211, 202, 141, + 14, 14, 14, 14, 193, 230, 240, 235, 220, 181, 165, 114, 30, 14, 14, 14, + 14, 14, 14, 14, 14, 68, 245, 242, 243, 229, 209, 162, 136, 71, 14, 14, + 14, 14, 170, 223, 221, 219, 206, 202, 197, 170, 57, 26, 14, 14, 14, 14, + 14, 16, 73, 220, 236, 226, 232, 175, 139, 150, 89, 33, 14, 14, 14, 172, + 221, 218, 220, 209, 197, 194, 157, 92, 16, 14, 14, 15, 14, 14, 16, 59, + 235, 243, 241, 227, 181, 147, 104, 93, 20, 14, 14, 24, 90, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 132, 239, 227, 230, 213, + 189, 157, 145, 118, 52, 15, 23, 65, 230, 223, 221, 216, 202, 205, 208, 194, + 205, 183, 170, 178, 186, 183, 183, 195, 198, 203, 192, 200, 219, 225, 197, 97, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 105, 218, 219, + 210, 189, 165, 147, 116, 76, 32, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 216, 219, 232, 218, 209, 195, 197, 132, 49, 15, 14, 14, 14, 14, + 14, 24, 85, 234, 222, 236, 221, 152, 141, 143, 68, 18, 14, 16, 14, 179, + 230, 221, 224, 205, 219, 204, 198, 181, 52, 20, 19, 15, 14, 14, 14, 14, + 150, 219, 225, 221, 217, 214, 154, 152, 104, 24, 14, 14, 14, 14, 14, 67, + 231, 224, 226, 206, 214, 181, 148, 116, 37, 22, 14, 14, 15, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 193, 234, 229, 218, 210, 211, 209, 206, 204, 202, + 165, 136, 114, 65, 29, 14, 15, 15, 14, 14, 15, 14, 190, 233, 225, 217, + 210, 210, 204, 208, 215, 217, 198, 170, 148, 95, 48, 14, 19, 14, 18, 14, + 14, 14, 14, 139, 224, 224, 223, 211, 204, 209, 218, 217, 199, 189, 188, 182, + 179, 181, 181, 182, 185, 183, 188, 185, 225, 234, 200, 50, 14, 14, 19, 14, + 15, 215, 225, 222, 207, 203, 200, 189, 211, 198, 165, 157, 167, 179, 182, 182, + 189, 188, 229, 227, 217, 208, 209, 208, 169, 145, 95, 16, 14, 14, 14, 14, + 179, 205, 204, 202, 194, 200, 193, 186, 143, 82, 111, 97, 118, 100, 100, 111, + 205, 216, 239, 223, 210, 214, 165, 152, 139, 87, 37, 14, 17, 14, 76, 219, + 228, 221, 207, 199, 198, 182, 100, 26, 14, 14, 17, 18, 14, 14, 55, 170, + 224, 213, 206, 178, 143, 137, 120, 49, 14, 14, 14, 14, 65, 227, 228, 218, + 210, 197, 173, 155, 141, 67, 14, 14, 14, 14, 14, 14, 14, 107, 230, 221, + 220, 198, 179, 141, 120, 72, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 197, 237, 236, 224, 224, 210, 207, 210, 209, 199, 210, 220, 223, 225, 227, + 229, 231, 230, 231, 232, 230, 233, 227, 219, 224, 200, 114, 14, 14, 14, 14, + 225, 230, 246, 233, 211, 170, 159, 107, 17, 15, 14, 14, 14, 14, 14, 14, + 15, 102, 249, 243, 240, 223, 200, 152, 126, 64, 14, 14, 14, 14, 162, 221, + 219, 220, 213, 210, 183, 222, 182, 100, 17, 14, 14, 18, 14, 79, 224, 242, + 246, 219, 195, 159, 116, 137, 60, 14, 14, 14, 14, 152, 223, 217, 220, 221, + 213, 206, 203, 192, 93, 24, 14, 16, 15, 14, 76, 230, 249, 238, 236, 210, + 137, 97, 147, 33, 14, 14, 14, 81, 199, 14, 22, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 92, 143, 243, 239, 220, 225, 207, 185, 148, 148, 114, + 40, 14, 14, 16, 225, 222, 222, 216, 205, 207, 217, 216, 209, 205, 213, 226, + 233, 228, 229, 235, 237, 236, 224, 236, 216, 188, 169, 71, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 18, 14, 14, 76, 229, 217, 214, 179, 141, 136, + 102, 46, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 211, 215, + 230, 223, 217, 208, 186, 209, 167, 45, 14, 14, 14, 14, 14, 120, 239, 223, + 240, 229, 167, 145, 126, 109, 31, 14, 14, 14, 14, 207, 232, 223, 225, 203, + 223, 209, 205, 203, 218, 186, 188, 186, 182, 205, 217, 231, 235, 232, 217, 224, + 224, 213, 132, 165, 100, 14, 14, 14, 14, 14, 14, 116, 237, 231, 232, 207, + 213, 183, 155, 116, 14, 19, 14, 14, 16, 14, 16, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 198, 235, 229, 225, 214, 217, 210, 206, 205, 206, 148, 130, 84, 60, + 14, 14, 14, 14, 14, 14, 15, 14, 192, 238, 229, 220, 217, 217, 209, 214, + 219, 216, 193, 152, 132, 81, 14, 14, 14, 16, 14, 16, 14, 14, 14, 105, + 225, 223, 221, 213, 218, 204, 209, 218, 221, 227, 233, 229, 226, 227, 226, 229, + 229, 228, 231, 231, 216, 195, 139, 15, 17, 14, 21, 14, 15, 211, 225, 223, + 215, 217, 211, 207, 197, 210, 221, 221, 225, 228, 226, 220, 203, 218, 225, 240, + 236, 210, 213, 190, 162, 134, 85, 14, 14, 14, 14, 14, 221, 207, 217, 215, + 200, 203, 198, 193, 210, 207, 236, 220, 235, 238, 234, 235, 222, 229, 207, 225, + 217, 207, 148, 143, 113, 64, 16, 14, 14, 14, 56, 217, 219, 224, 222, 217, + 198, 214, 210, 139, 46, 15, 14, 14, 19, 47, 164, 242, 219, 227, 203, 128, + 114, 102, 97, 14, 16, 14, 14, 14, 148, 229, 230, 223, 207, 202, 169, 154, + 134, 56, 14, 14, 14, 14, 14, 14, 15, 192, 238, 225, 217, 197, 176, 139, + 124, 68, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 202, 238, 231, + 217, 217, 210, 210, 207, 210, 216, 218, 224, 232, 230, 229, 229, 231, 230, 226, + 231, 215, 215, 231, 214, 190, 164, 61, 14, 14, 14, 56, 228, 249, 232, 234, + 198, 188, 134, 89, 14, 15, 14, 14, 20, 14, 17, 14, 14, 214, 245, 241, + 239, 228, 162, 178, 113, 47, 14, 14, 14, 16, 59, 218, 206, 226, 213, 229, + 210, 211, 209, 218, 213, 208, 202, 207, 238, 240, 241, 240, 234, 209, 155, 118, + 134, 53, 17, 14, 14, 14, 23, 57, 223, 217, 217, 223, 225, 221, 209, 203, + 214, 208, 189, 181, 200, 228, 234, 233, 234, 240, 211, 126, 92, 102, 52, 14, + 14, 14, 14, 179, 227, 204, 205, 200, 198, 198, 192, 195, 190, 192, 193, 185, + 236, 235, 233, 229, 234, 232, 215, 190, 147, 167, 141, 59, 18, 14, 14, 14, + 219, 211, 210, 199, 227, 209, 216, 211, 217, 218, 224, 223, 225, 226, 229, 225, + 231, 224, 229, 220, 176, 200, 141, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 25, 216, 234, 225, 220, 172, 124, 116, 59, 18, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 109, 228, 226, 227, 233, 209, + 213, 205, 207, 215, 217, 214, 217, 216, 238, 234, 238, 237, 220, 189, 137, 105, + 118, 50, 14, 14, 15, 15, 14, 229, 228, 226, 220, 214, 210, 210, 211, 211, + 205, 221, 219, 222, 229, 230, 227, 228, 226, 225, 225, 225, 219, 195, 162, 132, + 68, 14, 14, 14, 14, 14, 14, 190, 240, 238, 231, 229, 198, 148, 141, 104, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 195, 229, + 225, 221, 207, 207, 210, 218, 208, 189, 136, 136, 78, 25, 14, 14, 16, 14, + 16, 14, 14, 14, 204, 238, 229, 224, 220, 220, 221, 222, 222, 204, 173, 147, + 113, 48, 15, 14, 15, 15, 14, 14, 14, 14, 18, 50, 234, 229, 209, 208, + 202, 209, 214, 214, 219, 221, 230, 233, 231, 236, 232, 228, 227, 235, 232, 217, + 190, 198, 89, 14, 14, 16, 14, 14, 14, 234, 217, 235, 221, 217, 216, 215, + 207, 217, 221, 220, 219, 225, 215, 200, 194, 136, 235, 231, 214, 216, 215, 183, + 152, 122, 79, 14, 14, 14, 14, 68, 230, 225, 224, 218, 211, 213, 210, 213, + 219, 225, 226, 232, 233, 236, 237, 237, 229, 227, 222, 214, 197, 176, 137, 107, + 92, 20, 15, 14, 16, 14, 14, 214, 217, 224, 224, 218, 214, 214, 210, 208, + 209, 199, 190, 198, 218, 234, 234, 231, 227, 190, 139, 118, 111, 82, 33, 14, + 14, 14, 20, 14, 194, 237, 237, 228, 219, 207, 157, 162, 111, 14, 14, 14, + 14, 14, 14, 14, 24, 229, 234, 236, 217, 213, 143, 165, 134, 35, 21, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 183, 223, 204, 209, 203, 202, 202, + 205, 205, 202, 197, 210, 218, 217, 215, 210, 213, 209, 205, 205, 203, 200, 195, + 154, 148, 148, 57, 15, 14, 14, 95, 225, 244, 224, 223, 157, 136, 124, 53, + 15, 14, 14, 14, 14, 14, 16, 21, 14, 232, 235, 239, 218, 204, 145, 148, + 92, 26, 14, 14, 17, 14, 20, 183, 218, 221, 169, 185, 218, 214, 214, 222, + 227, 232, 238, 242, 240, 242, 236, 216, 170, 139, 130, 132, 63, 31, 15, 15, + 14, 14, 14, 29, 210, 219, 215, 199, 194, 209, 214, 208, 207, 214, 211, 209, + 221, 232, 234, 231, 211, 176, 136, 120, 114, 69, 23, 14, 14, 15, 15, 206, + 234, 227, 236, 239, 239, 235, 232, 237, 234, 233, 232, 232, 221, 224, 225, 221, + 221, 215, 195, 169, 145, 136, 85, 37, 14, 14, 14, 14, 141, 197, 203, 209, + 209, 220, 218, 217, 202, 203, 204, 206, 205, 214, 210, 205, 200, 192, 199, 170, + 126, 145, 95, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, + 141, 222, 243, 230, 198, 157, 126, 93, 37, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 61, 206, 219, 199, 205, 198, 216, 215, 210, 221, + 231, 239, 246, 248, 236, 231, 226, 204, 155, 124, 120, 132, 48, 25, 14, 14, + 14, 14, 14, 227, 231, 232, 221, 211, 203, 206, 200, 192, 199, 210, 208, 206, + 216, 214, 210, 216, 217, 217, 217, 224, 217, 190, 145, 107, 76, 14, 14, 14, + 14, 14, 18, 226, 243, 239, 229, 224, 193, 148, 126, 78, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 15, 188, 217, 217, 209, 200, 198, + 204, 207, 195, 167, 124, 97, 53, 17, 14, 14, 16, 14, 14, 14, 15, 14, + 185, 230, 229, 226, 219, 222, 218, 215, 197, 172, 134, 107, 81, 37, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 23, 197, 214, 211, 195, 190, 192, 195, 205, + 208, 220, 222, 229, 225, 234, 233, 230, 229, 226, 209, 181, 136, 159, 78, 16, + 14, 14, 14, 18, 15, 224, 228, 229, 203, 204, 209, 207, 202, 215, 221, 217, + 207, 199, 167, 124, 93, 176, 236, 234, 215, 209, 213, 147, 128, 100, 35, 14, + 14, 14, 14, 130, 234, 232, 224, 218, 215, 213, 210, 213, 218, 221, 222, 229, + 225, 233, 230, 229, 218, 217, 206, 181, 155, 137, 118, 104, 40, 15, 15, 14, + 15, 15, 14, 107, 215, 213, 208, 207, 215, 219, 216, 202, 217, 218, 220, 223, + 226, 232, 228, 217, 182, 143, 114, 130, 92, 29, 14, 14, 16, 14, 15, 21, + 207, 226, 221, 213, 215, 198, 147, 141, 95, 14, 20, 16, 18, 19, 14, 14, + 45, 232, 232, 229, 217, 208, 134, 134, 79, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 18, 137, 205, 199, 173, 167, 162, 178, 194, 204, 205, 203, + 203, 211, 208, 203, 202, 202, 199, 183, 181, 198, 183, 150, 104, 114, 107, 30, + 14, 14, 14, 161, 232, 236, 217, 206, 161, 126, 132, 30, 16, 14, 14, 14, + 14, 14, 14, 14, 16, 225, 224, 227, 211, 190, 155, 141, 92, 15, 14, 14, + 14, 14, 14, 67, 181, 214, 189, 170, 152, 167, 197, 226, 236, 236, 234, 233, + 219, 208, 193, 178, 157, 128, 98, 76, 21, 15, 14, 14, 14, 14, 14, 14, + 71, 154, 205, 190, 155, 159, 172, 165, 198, 208, 210, 207, 204, 202, 190, 178, + 172, 130, 100, 104, 65, 22, 14, 14, 14, 14, 43, 227, 235, 235, 237, 239, + 224, 218, 215, 219, 218, 217, 218, 211, 217, 217, 214, 200, 176, 155, 130, 113, + 130, 90, 41, 21, 14, 14, 14, 14, 81, 182, 194, 173, 128, 186, 197, 210, + 190, 194, 193, 194, 192, 193, 197, 190, 186, 181, 167, 136, 105, 105, 54, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 53, 224, 225, 236, 215, + 159, 145, 116, 63, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 17, 105, 186, 205, 193, 178, 165, 181, 206, 226, 234, 239, 239, 235, + 214, 197, 183, 169, 141, 107, 81, 68, 14, 14, 14, 14, 14, 15, 14, 209, + 204, 204, 197, 188, 192, 197, 197, 192, 199, 200, 189, 179, 178, 161, 137, 141, + 205, 200, 202, 203, 188, 165, 126, 97, 30, 14, 15, 14, 14, 16, 45, 228, + 232, 231, 214, 200, 165, 130, 105, 48, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 19, 176, 209, 209, 202, 192, 189, 194, 194, 178, 147, + 120, 73, 27, 14, 14, 14, 14, 14, 14, 14, 15, 14, 161, 225, 217, 193, + 208, 214, 216, 207, 193, 164, 134, 116, 43, 21, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 130, 190, 207, 165, 167, 178, 182, 188, 189, 199, 206, 211, + 204, 217, 216, 210, 204, 192, 164, 126, 113, 111, 47, 14, 14, 14, 14, 16, + 14, 172, 226, 217, 200, 203, 207, 203, 198, 198, 189, 178, 172, 162, 137, 98, + 15, 206, 225, 225, 202, 186, 209, 136, 148, 124, 18, 16, 14, 14, 14, 186, + 234, 232, 225, 213, 205, 204, 200, 195, 183, 186, 186, 190, 189, 194, 193, 190, + 185, 178, 161, 143, 122, 104, 85, 67, 14, 14, 14, 14, 14, 15, 14, 22, + 189, 200, 199, 179, 157, 164, 189, 204, 203, 208, 206, 203, 189, 182, 167, 159, + 136, 136, 114, 76, 34, 15, 14, 14, 14, 14, 14, 65, 229, 228, 218, 217, + 211, 189, 147, 116, 72, 14, 14, 14, 14, 14, 14, 14, 100, 240, 236, 227, + 202, 197, 143, 145, 82, 14, 14, 21, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 56, 147, 175, 167, 159, 148, 143, 147, 150, 152, 150, 154, 159, 159, 150, + 145, 143, 139, 130, 104, 118, 100, 95, 92, 104, 75, 16, 14, 14, 14, 192, + 214, 192, 154, 114, 116, 90, 104, 17, 14, 14, 15, 14, 14, 14, 16, 14, + 79, 229, 207, 157, 122, 105, 102, 97, 75, 14, 14, 14, 14, 14, 14, 14, + 73, 130, 169, 176, 169, 170, 164, 161, 159, 159, 161, 161, 172, 152, 139, 137, + 132, 93, 44, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 57, 137, 170, + 169, 167, 155, 136, 126, 136, 141, 139, 145, 148, 141, 126, 116, 98, 64, 37, + 16, 14, 14, 15, 15, 15, 81, 219, 204, 193, 152, 148, 176, 172, 169, 167, + 173, 170, 167, 162, 150, 150, 137, 126, 124, 120, 114, 107, 87, 46, 19, 14, + 14, 14, 14, 15, 17, 97, 172, 179, 155, 173, 155, 137, 139, 139, 147, 137, + 136, 137, 134, 130, 134, 126, 102, 102, 113, 92, 36, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 147, 220, 232, 211, 186, 137, 116, 84, 35, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, + 82, 173, 181, 159, 157, 152, 148, 148, 162, 175, 185, 189, 165, 145, 136, 130, + 116, 81, 39, 14, 14, 14, 15, 15, 14, 14, 14, 139, 185, 185, 173, 152, + 130, 126, 126, 130, 118, 136, 132, 120, 126, 118, 102, 105, 193, 182, 170, 157, + 148, 143, 130, 120, 18, 14, 18, 14, 14, 27, 72, 223, 210, 206, 173, 152, + 130, 120, 100, 39, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 16, 145, 210, 161, 148, 134, 128, 130, 132, 113, 102, 122, 56, 18, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 147, 219, 197, 154, 148, 150, 152, 148, + 136, 116, 98, 82, 23, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 55, 130, 181, 155, 132, 137, 141, 145, 143, 152, 157, 162, 164, 165, 161, 148, + 139, 136, 120, 100, 128, 82, 21, 14, 15, 18, 14, 14, 14, 75, 193, 185, + 186, 162, 148, 126, 154, 152, 139, 130, 128, 118, 84, 57, 14, 225, 209, 188, + 143, 126, 134, 85, 104, 98, 14, 14, 14, 14, 17, 220, 228, 226, 214, 204, + 198, 188, 175, 162, 145, 143, 148, 150, 152, 152, 154, 150, 148, 136, 130, 126, + 122, 100, 49, 19, 14, 14, 14, 14, 14, 14, 15, 14, 43, 92, 165, 185, + 169, 148, 141, 141, 132, 137, 139, 139, 139, 147, 139, 134, 111, 97, 52, 21, + 14, 14, 14, 14, 14, 14, 14, 98, 219, 202, 167, 155, 152, 143, 122, 111, + 73, 14, 18, 15, 14, 14, 15, 14, 137, 217, 199, 167, 132, 132, 111, 137, + 87, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 44, 67, + 114, 124, 128, 126, 118, 116, 120, 128, 126, 139, 139, 124, 120, 126, 122, 111, + 100, 104, 84, 95, 92, 67, 38, 14, 14, 14, 14, 185, 181, 157, 141, 100, + 114, 109, 113, 37, 14, 14, 14, 14, 14, 14, 18, 14, 93, 211, 178, 126, + 107, 100, 102, 107, 100, 20, 14, 14, 15, 14, 14, 14, 27, 19, 53, 109, + 124, 130, 130, 128, 126, 132, 130, 126, 132, 118, 97, 65, 38, 19, 14, 14, + 14, 14, 14, 14, 14, 16, 15, 14, 15, 14, 24, 59, 109, 137, 130, 118, + 124, 118, 111, 109, 114, 116, 104, 89, 53, 34, 15, 14, 14, 16, 18, 14, + 14, 14, 73, 185, 165, 169, 128, 116, 120, 118, 114, 120, 122, 124, 118, 114, + 113, 111, 105, 107, 109, 107, 92, 78, 32, 17, 14, 14, 14, 14, 14, 14, + 14, 28, 81, 102, 150, 145, 152, 141, 120, 118, 118, 109, 107, 113, 113, 105, + 105, 113, 93, 85, 84, 52, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 67, 203, 208, 232, 194, 148, 136, 92, 48, 18, 14, 14, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 47, 78, 109, + 134, 128, 126, 128, 137, 143, 147, 145, 116, 109, 90, 64, 36, 18, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 40, 124, 152, 162, 148, 126, 114, 113, 118, + 102, 118, 116, 111, 116, 105, 84, 79, 157, 141, 124, 111, 116, 120, 128, 130, + 60, 14, 14, 14, 14, 14, 50, 219, 173, 162, 124, 107, 98, 107, 109, 53, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 15, 14, 14, 75, 170, + 148, 132, 114, 113, 107, 109, 104, 104, 97, 39, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 84, 173, 167, 143, 143, 134, 122, 120, 120, 109, 85, 72, + 15, 14, 14, 14, 14, 14, 14, 14, 21, 14, 14, 14, 15, 36, 97, 113, + 107, 111, 118, 122, 124, 128, 132, 134, 143, 145, 137, 126, 118, 116, 120, 111, + 84, 43, 14, 14, 16, 19, 14, 14, 14, 18, 90, 118, 169, 137, 116, 107, + 109, 114, 128, 130, 124, 90, 44, 16, 16, 182, 170, 137, 116, 122, 97, 113, + 113, 124, 36, 14, 16, 14, 44, 223, 221, 217, 205, 192, 176, 161, 124, 90, + 102, 102, 104, 107, 109, 111, 114, 109, 113, 111, 102, 92, 75, 54, 23, 14, + 14, 15, 14, 15, 14, 14, 20, 14, 14, 18, 40, 79, 122, 143, 128, 105, + 126, 122, 111, 104, 104, 102, 84, 69, 63, 27, 14, 14, 14, 14, 14, 18, + 14, 15, 14, 81, 183, 175, 162, 134, 122, 116, 124, 111, 76, 16, 14, 14, + 14, 14, 15, 15, 139, 192, 176, 145, 132, 130, 120, 152, 130, 42, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 24, 36, 53, 69, + 73, 72, 76, 79, 78, 85, 82, 76, 73, 78, 78, 71, 72, 78, 59, 64, + 45, 18, 14, 14, 14, 14, 14, 92, 82, 78, 82, 69, 67, 75, 84, 54, + 14, 16, 14, 14, 18, 21, 14, 14, 17, 82, 65, 81, 75, 78, 72, 79, + 81, 28, 17, 14, 14, 14, 17, 14, 15, 14, 15, 18, 18, 31, 53, 72, + 84, 82, 67, 53, 54, 44, 27, 15, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 19, 24, 36, 56, 92, 85, 73, 69, + 65, 53, 36, 22, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 36, 78, + 84, 93, 82, 82, 79, 81, 79, 84, 85, 90, 87, 84, 78, 78, 76, 72, + 64, 53, 28, 16, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 17, 14, + 46, 48, 81, 97, 71, 73, 71, 68, 65, 69, 71, 69, 65, 84, 78, 57, + 34, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 170, 210, + 215, 207, 175, 113, 118, 61, 24, 14, 14, 14, 16, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 29, 33, 46, 67, 81, + 90, 85, 67, 53, 57, 44, 29, 14, 14, 14, 14, 15, 16, 14, 14, 14, + 14, 14, 14, 14, 23, 43, 69, 79, 75, 78, 76, 78, 72, 81, 73, 67, + 63, 44, 27, 24, 92, 89, 90, 89, 93, 102, 104, 104, 55, 15, 14, 14, + 14, 14, 19, 93, 124, 114, 85, 85, 82, 90, 105, 68, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 19, 15, 14, 24, 72, 90, 76, 68, 65, + 69, 65, 68, 73, 47, 24, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 21, 50, 65, 85, 92, 84, 71, 72, 76, 75, 59, 49, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, 19, 29, 48, 53, 57, 64, + 69, 75, 81, 76, 75, 73, 73, 75, 68, 64, 61, 56, 19, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 21, 39, 89, 71, 67, 76, 60, 63, 64, 72, + 67, 47, 24, 14, 14, 55, 71, 57, 68, 76, 53, 87, 79, 90, 56, 14, + 16, 14, 98, 215, 213, 213, 195, 172, 152, 122, 69, 36, 40, 39, 39, 42, + 41, 42, 43, 44, 46, 55, 52, 34, 18, 14, 14, 14, 14, 14, 14, 18, + 14, 14, 16, 14, 14, 14, 14, 14, 18, 36, 61, 78, 79, 78, 68, 56, + 48, 37, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 28, + 76, 107, 107, 93, 116, 105, 128, 109, 85, 27, 15, 14, 14, 14, 14, 14, + 73, 102, 114, 100, 93, 82, 76, 95, 102, 55, 24, 19, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 16, 14, 14, 14, 14, 15, 18, 16, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 14, 14, 15, + 18, 14, 14, 18, 14, 14, 14, 14, 14, 14, 15, 19, 14, 15, 14, 18, + 14, 14, 14, 18, 14, 18, 14, 14, 14, 14, 14, 15, 18, 15, 14, 14, + 14, 16, 24, 14, 14, 18, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 20, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 19, 16, 14, 14, 14, 22, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 16, 23, 15, 14, 14, 18, 16, 14, 14, 17, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 16, 16, 14, 14, + 14, 14, 15, 16, 16, 14, 14, 15, 14, 14, 14, 14, 19, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 15, 14, 14, 14, 18, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 68, 194, 195, 202, 159, 134, 97, + 85, 33, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 18, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, + 16, 14, 14, 14, 14, 20, 16, 14, 18, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 18, 18, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 18, 15, 18, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 19, 15, 14, 14, 14, 14, 14, 14, 14, + 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 24, + 15, 14, 14, 14, 15, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 16, 19, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 16, 16, + 14, 15, 15, 17, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 17, 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 14, + 14, 15, 18, 14, 18, 14, 14, 14, 14, 14, 17, 14, 14, 15, 162, 206, + 197, 193, 178, 150, 124, 92, 42, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 16, 14, 14, 14, 14, 21, 14, 14, 15, 15, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 14, 14, + 14, 21, 27, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, + 14, 14, 14, 14, 19, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 17, 14, 14, 16, 14, 14, 14, 14, 14, 15, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 22, 14, 19, 14, + 16, 14, 14, 14, 14, 19, 14, 14, 14, 16, 14, 14, 22, 14, 14, 19, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 20, 19, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 19, 16, 14, 14, 14, 14, 14, 14, 14, 15, 20, 14, 14, 14, 14, + 14, 15, 15, 14, 14, 21, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 17, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 18, 14, 14, 14, 19, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 18, 14, 14, 14, 14, 15, 16, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 35, 188, 183, 197, 179, 134, 87, 95, 56, 16, 14, 19, + 16, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 15, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 18, + 14, 14, 14, 15, 15, 14, 16, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 14, 15, 14, 14, 17, 14, 14, 16, 14, 14, 17, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 16, 14, 14, 14, 15, 14, 14, 14, 19, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, + 14, 21, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 17, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 14, 14, 15, 16, 14, 14, 21, 14, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 15, 14, 18, 14, 15, 14, 17, 16, 14, 20, 176, 190, 188, 188, 169, 141, + 116, 82, 39, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 19, 15, 14, 15, 15, 16, 14, 14, 18, 14, 14, 14, 14, 14, 14, + 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 16, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 21, 14, 14, 16, 14, 14, 21, 14, 16, 14, + 15, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 15, 14, 14, + 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 16, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 120, 183, 190, 161, 137, 97, 69, 75, 24, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 14, 14, 14, + 14, 14, 14, 15, 16, 14, 14, 14, 14, 14, 14, 16, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 17, 17, 14, 14, 14, 14, 14, 14, 14, 16, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 14, 54, 194, 192, 199, 179, 169, 116, 111, 89, 26, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 41, 147, 183, 170, 124, + 107, 107, 78, 53, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 18, 14, 14, 15, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 16, + 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 79, 186, 173, 185, 172, 157, 111, 97, 69, 18, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 17, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 18, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 18, 15, 14, 14, 14, 16, 15, 15, + 14, 14, 16, 16, 14, 14, 14, 14, 14, 15, 16, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 35, 104, 169, 172, 150, 97, 73, 78, 42, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 18, 18, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 15, 14, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, + 14, 15, 15, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 18, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 17, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 18, 18, 16, 15, 15, 15, 14, 14, 14, 14, 16, 17, 126, 173, 162, + 155, 137, 124, 90, 72, 44, 14, 14, 18, 15, 14, 15, 18, 18, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 15, 15, 16, 15, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 16, 14, 14, 15, 14, 14, 14, 15, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 55, 161, 118, 100, 92, 72, 56, 72, 49, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 122, 122, 136, 98, 85, 75, 71, + 63, 42, 18, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 15, 15, 15, 15, 15, 15, 15, + 14, 14, 15, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 16, 18, + 14, 14, 16, 14, 14, 14, 14, 14, 17, 14, 14, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 15, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 16, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 15, 15, 15, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, + 18, 16, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 50, 134, + 98, 67, 64, 73, 64, 79, 79, 56, 39, 28, 16, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 19, + 16, 15, 15, 15, 15, 15, 15, 16, 14, 14, 14, 14, 14, 16, 14, 14, + 14, 15, 15, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 18, 16, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 16, 14, 14, 14, 18, 18, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, + 14, 14, 14, 14, 14, 87, 79, 109, 71, 65, 53, 59, 76, 63, 49, 42, + 16, 14, 14, 14, 14, 14, 14, 14, 18, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 15, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, + 19, 19, 20, 21, 23, 24, 24, 24, 26, 26, 24, 24, 26, 26, 26, 26, + 26, 26, 26, 26, 23, 21, 21, 21, 21, 14, 14, 14, 14, 14, 20, 26, + 21, 23, 29, 29, 29, 26, 26, 24, 20, 18, 19, 14, 14, 14, 14, 14, + 14, 15, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 15, 15, 15, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 14, + 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 16, 16, 16, 16, 15, 16, 15, 16, 15, 16, 16, + 16, 16, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 18, 18, 18, 18, 18, 16, 16, 16, 16, 16, 15, + 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 22, 18, 14, 14, 14, 16, 18, 20, 21, 26, 27, 26, + 23, 21, 21, 15, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 16, 19, + 21, 24, 24, 26, 24, 21, 23, 21, 19, 18, 14, 14, 16, 14, 14, 14, + 14, 14, 14, 27, 21, 24, 24, 23, 21, 21, 21, 19, 16, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 14, + 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 19, 21, 21, 27, + 32, 42, 57, 97, 128, 136, 128, 120, 130, 130, 128, 128, 126, 126, 120, 120, + 120, 105, 104, 78, 44, 19, 14, 15, 14, 15, 42, 114, 118, 128, 111, 120, + 136, 92, 104, 73, 21, 18, 19, 14, 14, 14, 14, 14, 14, 15, 16, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 16, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 16, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 18, 18, 16, 16, 15, 15, 15, 15, 15, 15, 16, 16, 18, 18, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 18, 18, 18, 19, 18, 18, 18, 18, 16, 16, 15, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 18, 14, 14, 14, 23, 42, 75, 111, 105, 111, 141, 141, 113, 92, 60, 20, + 18, 15, 14, 14, 14, 14, 14, 14, 15, 14, 20, 63, 105, 120, 111, 120, + 120, 113, 120, 100, 60, 21, 16, 14, 16, 14, 14, 14, 14, 14, 23, 53, + 111, 113, 118, 120, 120, 113, 97, 84, 23, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 16, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 18, 21, 29, 71, 137, 210, 224, 225, 229, + 228, 224, 219, 216, 222, 221, 222, 221, 221, 222, 221, 221, 217, 206, 185, 143, + 65, 21, 14, 14, 14, 15, 50, 188, 215, 228, 225, 230, 227, 203, 188, 136, + 27, 16, 18, 14, 14, 14, 14, 14, 14, 14, 15, 16, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 16, 15, + 15, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 16, + 18, 18, 18, 18, 16, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 19, 57, 145, 210, 218, 222, 229, 225, 205, 178, 118, 40, 19, 16, 15, 14, + 14, 14, 14, 14, 14, 14, 34, 137, 205, 215, 218, 227, 225, 208, 202, 183, + 114, 27, 18, 19, 14, 14, 14, 14, 14, 14, 24, 63, 215, 231, 228, 220, + 213, 194, 179, 159, 64, 26, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 16, 19, 24, 68, 169, 227, 236, 236, 232, 232, 233, 235, 236, 238, + 232, 232, 233, 232, 233, 234, 233, 232, 214, 206, 189, 145, 63, 15, 14, 14, + 16, 16, 31, 195, 226, 241, 236, 242, 226, 197, 185, 124, 21, 15, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 16, 16, + 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 15, 14, 15, 27, 141, 221, + 231, 233, 234, 231, 217, 203, 154, 67, 20, 18, 15, 14, 14, 14, 14, 14, + 17, 15, 57, 190, 237, 232, 229, 236, 232, 214, 208, 200, 122, 24, 18, 21, + 14, 14, 14, 15, 14, 14, 16, 40, 228, 239, 238, 232, 224, 203, 179, 157, + 102, 36, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 21, 23, + 23, 200, 224, 225, 240, 239, 238, 240, 238, 235, 234, 234, 233, 233, 234, 234, + 234, 234, 236, 236, 225, 200, 173, 139, 21, 16, 16, 14, 14, 16, 32, 225, + 232, 245, 242, 239, 211, 200, 150, 104, 21, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 18, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 15, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 24, 19, 14, 15, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 19, 15, 16, 15, 15, 14, 14, 14, 14, 16, 15, 14, 14, + 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 18, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 19, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, + 17, 18, 14, 14, 14, 15, 14, 14, 19, 20, 178, 225, 238, 240, 241, 237, + 214, 193, 157, 89, 21, 29, 14, 14, 16, 14, 14, 14, 14, 16, 137, 219, + 234, 239, 232, 243, 234, 229, 197, 178, 148, 23, 21, 14, 14, 14, 19, 14, + 14, 29, 18, 169, 239, 245, 241, 234, 218, 193, 165, 143, 72, 20, 15, 19, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 19, 14, 14, 14, 14, 14, 14, 15, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 18, + 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 23, 128, 215, 229, 234, + 239, 236, 230, 228, 225, 216, 217, 219, 211, 211, 213, 210, 214, 211, 214, 208, + 162, 143, 147, 124, 20, 15, 14, 14, 15, 16, 85, 236, 234, 245, 243, 241, + 195, 189, 150, 55, 18, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 17, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, + 16, 14, 14, 14, 14, 14, 15, 20, 14, 14, 14, 14, 14, 15, 14, 14, + 14, 17, 19, 16, 14, 14, 14, 14, 14, 18, 19, 18, 17, 15, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 17, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 18, 14, 14, 15, 14, 14, 19, 18, 14, 14, 14, 16, 15, 14, 14, + 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 19, 19, 14, 14, 14, + 19, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 16, 16, 15, 18, 18, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 15, 15, 14, 16, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 18, 18, 19, 14, 14, 17, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 19, 20, 183, 228, 238, 240, 241, 236, 216, 195, 152, 84, + 21, 22, 14, 16, 15, 14, 14, 14, 16, 71, 204, 242, 236, 239, 236, 237, + 237, 232, 199, 181, 148, 21, 21, 14, 15, 14, 14, 14, 18, 19, 67, 208, + 241, 247, 243, 232, 211, 185, 150, 120, 34, 18, 15, 18, 14, 14, 19, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 14, 16, 23, 21, 16, 14, 14, 14, 15, 15, + 14, 14, 16, 15, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 15, 17, 16, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 15, 16, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 15, 15, 15, 14, + 14, 14, 14, 14, 14, 18, 20, 36, 220, 229, 233, 237, 236, 232, 226, 217, + 206, 193, 186, 193, 182, 182, 183, 181, 185, 182, 183, 183, 176, 161, 147, 107, + 20, 14, 14, 14, 16, 18, 152, 241, 234, 243, 243, 238, 197, 161, 147, 34, + 18, 21, 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 16, 16, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 19, 23, 24, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 15, + 14, 14, 14, 14, 16, 15, 15, 14, 14, 14, 14, 15, 15, 16, 21, 16, + 15, 15, 16, 15, 14, 14, 15, 16, 16, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 14, 14, + 14, 14, 15, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 18, + 16, 15, 18, 15, 15, 14, 15, 15, 20, 21, 18, 15, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 16, 21, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 20, 23, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 16, 20, 18, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 16, 19, 18, 18, 18, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 20, 14, 14, 18, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 15, 14, 14, 16, 16, 14, 14, 14, 15, 14, 14, 14, 14, + 18, 20, 183, 231, 239, 240, 240, 236, 217, 194, 152, 78, 24, 14, 14, 19, + 14, 14, 15, 15, 18, 145, 235, 243, 234, 236, 242, 237, 236, 230, 200, 181, + 141, 20, 18, 14, 14, 14, 14, 16, 20, 21, 172, 226, 243, 248, 242, 221, + 200, 172, 128, 78, 20, 19, 30, 21, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 16, 18, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 14, 15, 20, 18, 18, 18, 15, 15, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 15, + 15, 14, 14, 14, 23, 19, 15, 15, 16, 16, 16, 15, 15, 14, 15, 18, + 16, 16, 18, 19, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 15, 18, 16, 16, 15, + 15, 15, 16, 18, 18, 16, 14, 15, 15, 16, 16, 14, 14, 14, 14, 14, + 15, 19, 20, 124, 248, 236, 237, 232, 230, 225, 216, 202, 178, 150, 137, 134, + 137, 128, 139, 143, 141, 145, 148, 143, 159, 132, 105, 65, 16, 14, 15, 16, + 15, 18, 194, 238, 233, 240, 240, 230, 203, 126, 122, 24, 19, 16, 14, 14, + 14, 14, 14, 14, 14, 16, 18, 16, 15, 18, 19, 14, 14, 14, 14, 14, + 14, 14, 14, 19, 21, 21, 21, 21, 20, 16, 15, 15, 15, 16, 15, 15, + 14, 14, 15, 14, 14, 14, 14, 15, 14, 14, 18, 14, 14, 16, 15, 14, + 16, 15, 16, 16, 18, 18, 20, 21, 23, 24, 21, 19, 19, 18, 16, 16, + 16, 15, 14, 15, 15, 15, 15, 18, 15, 14, 14, 14, 14, 16, 14, 14, + 14, 14, 14, 14, 15, 15, 15, 16, 20, 18, 18, 19, 16, 16, 16, 16, + 14, 15, 14, 14, 14, 14, 14, 14, 18, 16, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 18, 14, 14, 14, 14, 14, 14, 16, 18, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 21, 14, 14, 15, 15, + 16, 16, 18, 19, 19, 20, 21, 21, 15, 14, 14, 14, 14, 14, 14, 14, + 19, 18, 15, 18, 18, 19, 20, 21, 21, 16, 14, 19, 14, 14, 14, 14, + 14, 14, 14, 15, 18, 15, 16, 16, 18, 16, 16, 16, 15, 15, 15, 15, + 16, 14, 14, 14, 14, 14, 14, 14, 17, 14, 14, 14, 20, 18, 19, 20, + 20, 20, 20, 15, 14, 14, 16, 14, 14, 14, 14, 16, 18, 16, 21, 19, + 21, 20, 20, 18, 16, 16, 18, 17, 14, 14, 14, 14, 14, 23, 15, 16, + 18, 20, 21, 15, 14, 21, 15, 15, 18, 19, 18, 18, 16, 16, 15, 15, + 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 16, 20, 182, 232, + 243, 241, 242, 237, 220, 195, 148, 72, 20, 14, 14, 19, 14, 14, 21, 18, + 24, 193, 240, 234, 231, 229, 242, 236, 232, 229, 202, 173, 130, 19, 15, 14, + 14, 14, 14, 23, 21, 29, 214, 227, 242, 243, 232, 213, 190, 161, 100, 38, + 20, 20, 16, 16, 32, 41, 23, 18, 18, 16, 16, 15, 15, 14, 14, 14, + 14, 14, 16, 16, 18, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 23, 20, 16, 16, 18, 18, 19, 19, 16, 15, 15, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 17, 14, 14, 15, 14, 14, 18, 15, 18, 21, + 21, 20, 21, 21, 21, 19, 20, 22, 30, 26, 18, 15, 14, 15, 14, 14, + 14, 14, 17, 14, 14, 14, 14, 14, 14, 16, 15, 15, 15, 15, 16, 15, + 16, 16, 18, 19, 19, 21, 21, 21, 23, 21, 19, 18, 16, 16, 15, 15, + 16, 14, 14, 14, 14, 14, 14, 16, 24, 14, 14, 14, 18, 15, 14, 15, + 14, 14, 14, 22, 14, 14, 14, 14, 19, 20, 20, 19, 20, 20, 19, 20, + 15, 20, 19, 15, 15, 16, 16, 14, 14, 14, 14, 14, 15, 15, 27, 200, + 246, 240, 243, 232, 222, 208, 193, 167, 120, 76, 56, 53, 54, 52, 59, 60, + 63, 67, 68, 71, 53, 32, 26, 16, 14, 14, 14, 14, 14, 21, 214, 229, + 229, 238, 237, 220, 198, 126, 92, 21, 21, 26, 27, 26, 19, 19, 19, 21, + 21, 20, 19, 18, 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, 18, 18, + 20, 21, 27, 36, 23, 21, 21, 21, 21, 21, 20, 19, 20, 16, 15, 15, + 14, 14, 14, 16, 15, 14, 14, 14, 14, 18, 21, 21, 16, 18, 21, 24, + 23, 21, 21, 21, 21, 21, 21, 21, 23, 27, 23, 19, 23, 16, 15, 18, + 16, 15, 14, 15, 14, 14, 16, 18, 15, 15, 16, 18, 20, 21, 21, 21, + 21, 21, 21, 21, 24, 21, 21, 21, 20, 19, 19, 16, 15, 14, 14, 14, + 14, 16, 15, 14, 16, 18, 19, 18, 20, 19, 19, 18, 23, 20, 19, 19, + 21, 20, 19, 16, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 17, 14, 19, 14, 14, 20, 38, 26, 20, 21, 21, 21, + 23, 24, 21, 21, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, + 21, 24, 23, 21, 23, 21, 21, 21, 14, 14, 14, 14, 14, 14, 18, 15, + 16, 19, 24, 32, 21, 21, 21, 21, 21, 21, 20, 19, 21, 16, 15, 14, + 19, 16, 14, 14, 14, 14, 14, 15, 23, 26, 21, 24, 21, 21, 21, 21, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 16, 34, 21, 21, 21, 21, 20, + 21, 19, 16, 14, 14, 14, 14, 14, 14, 37, 19, 21, 21, 24, 32, 21, + 19, 19, 16, 18, 21, 21, 21, 21, 20, 19, 18, 16, 34, 14, 14, 18, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 19, 182, 238, 246, 241, 240, 235, + 217, 194, 143, 68, 14, 14, 14, 14, 14, 21, 19, 21, 150, 240, 243, 236, + 232, 223, 234, 229, 231, 229, 194, 169, 120, 16, 14, 14, 14, 14, 21, 24, + 23, 147, 241, 234, 238, 232, 217, 199, 181, 145, 69, 19, 21, 27, 16, 18, + 19, 20, 21, 26, 23, 23, 23, 21, 21, 21, 21, 20, 18, 16, 15, 14, + 14, 14, 18, 18, 14, 14, 14, 14, 14, 14, 15, 16, 16, 19, 21, 20, + 23, 21, 21, 27, 23, 23, 24, 23, 23, 23, 21, 21, 18, 19, 20, 19, + 14, 14, 14, 14, 14, 14, 14, 14, 18, 23, 21, 23, 23, 21, 21, 20, + 19, 18, 16, 18, 21, 21, 24, 24, 23, 24, 21, 19, 24, 20, 15, 14, + 14, 16, 14, 14, 14, 14, 15, 14, 15, 21, 20, 18, 19, 19, 24, 26, + 23, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 16, 18, 16, 18, 18, + 14, 14, 14, 16, 16, 18, 31, 18, 19, 23, 19, 18, 23, 21, 19, 21, + 19, 34, 21, 24, 21, 21, 21, 23, 23, 21, 19, 19, 18, 16, 19, 15, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 15, 79, 243, 232, 243, 250, 235, + 219, 199, 176, 130, 75, 34, 18, 18, 14, 14, 14, 18, 19, 21, 21, 20, + 16, 15, 14, 14, 15, 14, 14, 14, 14, 57, 221, 226, 232, 233, 233, 214, + 188, 145, 79, 29, 76, 150, 189, 164, 192, 195, 190, 192, 183, 165, 143, 116, + 21, 14, 14, 14, 14, 14, 14, 14, 22, 14, 15, 19, 44, 124, 185, 206, + 231, 228, 227, 225, 221, 213, 202, 189, 167, 93, 34, 19, 18, 18, 16, 14, + 14, 14, 14, 16, 14, 14, 15, 16, 20, 50, 109, 172, 204, 220, 231, 232, + 231, 224, 208, 190, 176, 139, 82, 44, 21, 18, 16, 14, 21, 15, 14, 14, + 15, 18, 18, 16, 18, 34, 85, 139, 188, 190, 193, 195, 195, 195, 198, 193, + 189, 173, 182, 176, 161, 165, 145, 72, 16, 15, 15, 16, 14, 14, 14, 14, + 23, 36, 73, 104, 126, 132, 130, 126, 120, 114, 114, 124, 128, 113, 84, 48, + 30, 21, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 18, 14, 15, 46, 109, 154, 173, 175, 170, 175, 193, 186, 139, 65, + 15, 14, 14, 14, 14, 14, 14, 14, 19, 25, 21, 23, 69, 148, 186, 185, + 181, 164, 159, 134, 67, 29, 20, 18, 23, 14, 16, 20, 71, 137, 179, 195, + 222, 225, 226, 223, 217, 208, 197, 186, 130, 79, 38, 19, 16, 16, 16, 21, + 19, 26, 21, 37, 111, 170, 176, 188, 173, 164, 164, 152, 98, 38, 15, 14, + 14, 17, 15, 24, 23, 57, 178, 179, 182, 185, 179, 175, 152, 107, 55, 15, + 16, 14, 16, 24, 35, 165, 169, 200, 202, 182, 193, 183, 164, 85, 23, 95, + 173, 182, 178, 175, 175, 165, 157, 147, 81, 21, 14, 16, 14, 14, 16, 14, + 14, 14, 14, 14, 14, 19, 179, 240, 246, 240, 238, 233, 214, 188, 134, 60, + 14, 14, 14, 14, 14, 19, 20, 34, 234, 246, 240, 233, 230, 221, 225, 226, + 229, 229, 194, 164, 113, 14, 14, 14, 14, 14, 15, 20, 31, 218, 247, 249, + 233, 219, 200, 183, 159, 102, 44, 16, 15, 15, 21, 21, 21, 31, 81, 130, + 132, 134, 134, 126, 130, 122, 124, 118, 134, 114, 68, 24, 19, 19, 19, 16, + 14, 14, 14, 14, 14, 15, 16, 18, 24, 114, 169, 173, 188, 185, 176, 192, + 197, 197, 197, 194, 193, 189, 186, 179, 175, 161, 154, 132, 76, 31, 16, 16, + 18, 14, 14, 25, 68, 143, 179, 175, 176, 178, 173, 164, 128, 79, 34, 21, + 34, 116, 178, 192, 185, 185, 190, 189, 159, 120, 75, 43, 19, 16, 16, 16, + 14, 14, 14, 15, 15, 16, 18, 19, 38, 79, 148, 190, 210, 218, 228, 234, + 228, 213, 197, 181, 164, 114, 61, 23, 16, 15, 14, 16, 16, 14, 14, 14, + 26, 78, 186, 186, 159, 182, 172, 179, 162, 137, 29, 21, 24, 109, 134, 170, + 185, 186, 181, 181, 179, 164, 137, 116, 26, 19, 16, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 16, 154, 246, 242, 243, 248, 237, 215, 189, 154, 97, + 46, 15, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 17, 14, 14, 14, 14, 113, 232, 230, 232, 228, 227, 211, 183, 139, 50, 141, + 203, 234, 251, 249, 248, 248, 246, 244, 241, 231, 209, 183, 97, 37, 14, 14, + 14, 14, 14, 14, 14, 14, 45, 120, 209, 245, 248, 244, 246, 246, 246, 245, + 243, 238, 230, 220, 236, 214, 181, 114, 46, 20, 20, 37, 14, 14, 15, 22, + 18, 14, 16, 34, 157, 185, 219, 237, 241, 234, 228, 222, 220, 222, 225, 226, + 232, 224, 202, 175, 85, 45, 16, 14, 15, 14, 14, 16, 21, 20, 20, 27, + 81, 162, 219, 244, 243, 245, 246, 247, 248, 246, 246, 242, 231, 220, 232, 221, + 202, 210, 175, 65, 19, 16, 16, 18, 14, 14, 21, 67, 193, 215, 226, 238, + 240, 238, 232, 225, 240, 238, 240, 243, 243, 238, 217, 193, 118, 78, 40, 14, + 14, 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 20, 39, 113, 219, 224, 231, 231, 229, 236, 226, 194, 126, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 20, 50, 189, 242, 242, 236, 218, 215, 183, + 85, 21, 18, 16, 16, 21, 69, 159, 227, 247, 246, 243, 244, 245, 246, 243, + 240, 233, 227, 220, 236, 200, 148, 87, 38, 20, 20, 29, 14, 15, 15, 18, + 124, 218, 231, 236, 241, 228, 219, 210, 143, 44, 14, 14, 14, 14, 14, 14, + 16, 57, 220, 232, 242, 239, 232, 215, 194, 143, 59, 15, 14, 14, 14, 15, + 23, 214, 225, 248, 249, 232, 246, 240, 220, 148, 44, 185, 229, 232, 230, 228, + 225, 209, 193, 188, 100, 21, 14, 19, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 19, 181, 241, 247, 243, 239, 234, 215, 186, 130, 55, 14, 14, 14, 14, + 16, 18, 21, 154, 247, 237, 242, 232, 224, 227, 225, 225, 225, 225, 192, 157, + 107, 14, 14, 14, 14, 14, 14, 21, 128, 245, 251, 250, 230, 208, 186, 164, + 122, 60, 24, 15, 21, 15, 29, 116, 193, 232, 240, 234, 240, 242, 243, 243, + 242, 241, 241, 239, 225, 229, 224, 202, 178, 126, 53, 20, 14, 14, 14, 14, + 14, 15, 18, 19, 20, 164, 231, 228, 238, 236, 226, 238, 240, 243, 244, 244, + 243, 241, 239, 235, 243, 236, 225, 205, 169, 97, 32, 16, 14, 14, 14, 14, + 29, 120, 222, 234, 239, 239, 239, 233, 204, 141, 55, 21, 192, 232, 251, 250, + 244, 241, 241, 235, 239, 219, 200, 161, 81, 21, 20, 26, 15, 14, 14, 15, + 15, 16, 36, 90, 195, 219, 238, 244, 245, 238, 229, 225, 218, 217, 216, 219, + 225, 208, 181, 155, 55, 21, 14, 14, 14, 14, 14, 15, 23, 36, 215, 243, + 222, 242, 240, 241, 244, 229, 141, 29, 161, 213, 241, 245, 238, 232, 229, 229, + 232, 218, 202, 185, 109, 48, 16, 14, 15, 14, 14, 15, 14, 14, 14, 14, + 14, 29, 205, 246, 250, 242, 237, 229, 197, 164, 122, 75, 26, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 18, 169, 238, 239, 234, 225, 224, 213, 193, 122, 31, 223, 251, 229, 243, 249, + 250, 249, 245, 244, 244, 238, 223, 202, 189, 68, 14, 14, 15, 14, 14, 14, + 14, 65, 182, 235, 243, 240, 241, 245, 243, 243, 238, 240, 244, 246, 243, 242, + 228, 227, 227, 213, 159, 69, 21, 18, 19, 14, 14, 15, 15, 19, 75, 173, + 229, 237, 243, 244, 239, 231, 225, 225, 228, 234, 232, 228, 228, 233, 229, 215, + 222, 137, 53, 19, 14, 14, 14, 16, 20, 21, 21, 95, 206, 249, 249, 243, + 244, 245, 244, 243, 241, 237, 237, 230, 217, 213, 221, 206, 179, 192, 141, 21, + 18, 16, 15, 18, 14, 21, 93, 221, 238, 245, 243, 244, 243, 243, 243, 244, + 242, 242, 243, 243, 245, 246, 245, 235, 208, 175, 116, 45, 16, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 15, 14, 15, 32, 173, + 215, 235, 243, 238, 221, 217, 214, 192, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 22, 19, 21, 92, 219, 247, 231, 210, 202, 197, 164, 65, 21, 21, 21, + 21, 107, 219, 244, 242, 225, 232, 248, 239, 240, 240, 242, 243, 244, 245, 244, + 231, 232, 232, 200, 122, 36, 20, 18, 16, 31, 16, 19, 132, 232, 241, 242, + 240, 210, 197, 190, 120, 31, 14, 16, 14, 14, 14, 20, 18, 64, 232, 239, + 243, 239, 222, 207, 198, 159, 79, 20, 14, 17, 18, 16, 27, 234, 236, 250, + 249, 244, 252, 243, 239, 208, 172, 250, 236, 238, 238, 231, 217, 198, 182, 164, + 79, 16, 14, 23, 14, 14, 14, 14, 14, 14, 14, 14, 14, 20, 182, 239, + 246, 243, 242, 232, 213, 186, 132, 59, 14, 14, 14, 14, 21, 19, 29, 236, + 250, 234, 248, 239, 216, 232, 218, 221, 224, 224, 192, 155, 102, 14, 14, 14, + 14, 17, 16, 26, 213, 250, 252, 246, 224, 198, 175, 154, 95, 38, 16, 18, + 15, 31, 152, 239, 235, 223, 239, 242, 239, 242, 244, 243, 243, 245, 245, 244, + 242, 243, 238, 234, 232, 204, 136, 40, 16, 14, 14, 14, 15, 16, 19, 19, + 20, 185, 243, 235, 236, 238, 228, 242, 240, 245, 245, 246, 247, 246, 245, 245, + 239, 238, 232, 225, 220, 188, 97, 19, 16, 14, 19, 14, 18, 57, 211, 244, + 243, 238, 227, 215, 199, 162, 98, 60, 245, 252, 251, 246, 249, 251, 249, 238, + 242, 224, 225, 226, 183, 84, 24, 18, 15, 14, 14, 15, 16, 24, 124, 232, + 236, 241, 242, 240, 234, 228, 228, 227, 230, 227, 225, 226, 229, 228, 217, 206, + 186, 92, 21, 14, 14, 14, 14, 14, 26, 29, 195, 244, 233, 247, 243, 234, + 228, 232, 208, 71, 249, 247, 248, 222, 236, 232, 227, 231, 236, 233, 222, 205, + 203, 92, 18, 15, 18, 14, 14, 14, 14, 15, 18, 19, 20, 82, 229, 245, + 246, 227, 229, 225, 183, 167, 120, 48, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 19, 15, 15, 20, 21, 219, 240, 247, + 232, 227, 229, 217, 186, 176, 195, 229, 243, 238, 234, 242, 243, 238, 243, 236, + 243, 216, 234, 186, 176, 120, 30, 14, 16, 16, 31, 20, 100, 211, 249, 242, + 232, 244, 238, 195, 192, 176, 176, 192, 189, 189, 225, 240, 242, 219, 227, 207, + 192, 145, 26, 18, 17, 14, 19, 15, 18, 81, 231, 240, 241, 243, 238, 215, + 199, 190, 178, 159, 167, 170, 208, 214, 215, 236, 238, 234, 216, 188, 167, 27, + 14, 14, 14, 14, 23, 26, 32, 232, 246, 244, 252, 243, 225, 219, 210, 192, + 192, 193, 170, 188, 170, 173, 164, 137, 141, 139, 72, 23, 16, 18, 16, 21, + 21, 155, 238, 242, 250, 250, 247, 244, 236, 220, 218, 225, 229, 220, 242, 231, + 243, 253, 252, 235, 213, 207, 176, 137, 18, 14, 19, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 19, 14, 15, 38, 95, 224, 229, 239, 232, + 218, 213, 198, 181, 79, 14, 25, 14, 14, 14, 14, 14, 14, 27, 20, 27, + 207, 241, 247, 245, 165, 147, 139, 73, 24, 24, 23, 21, 170, 225, 245, 241, + 234, 232, 218, 198, 181, 176, 169, 190, 206, 215, 236, 237, 239, 232, 234, 200, + 179, 107, 16, 15, 15, 24, 18, 20, 155, 242, 243, 245, 240, 208, 183, 139, + 128, 14, 18, 14, 14, 15, 14, 15, 21, 139, 244, 242, 245, 244, 210, 186, + 162, 130, 19, 18, 14, 14, 14, 20, 65, 243, 243, 249, 243, 242, 245, 239, + 214, 209, 229, 234, 238, 230, 226, 219, 199, 164, 147, 147, 18, 16, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 18, 16, 21, 190, 242, 244, 234, 237, 232, + 202, 179, 137, 60, 14, 14, 14, 16, 15, 19, 124, 243, 245, 246, 241, 228, + 232, 229, 218, 222, 225, 220, 189, 162, 111, 14, 15, 14, 18, 14, 21, 87, + 247, 242, 252, 238, 229, 150, 176, 145, 53, 34, 18, 18, 18, 178, 242, 234, + 236, 240, 234, 236, 225, 228, 224, 217, 217, 229, 242, 243, 243, 242, 243, 242, + 236, 206, 217, 79, 18, 14, 14, 16, 18, 18, 18, 20, 20, 227, 233, 206, + 204, 178, 194, 198, 195, 182, 199, 192, 225, 222, 234, 252, 238, 249, 241, 234, + 208, 200, 170, 21, 14, 14, 14, 14, 21, 69, 239, 246, 248, 239, 234, 205, + 213, 136, 26, 206, 232, 251, 243, 236, 236, 251, 227, 241, 242, 236, 225, 194, + 198, 145, 21, 16, 24, 14, 15, 19, 19, 198, 245, 234, 245, 246, 238, 209, + 189, 172, 164, 159, 170, 188, 198, 193, 242, 238, 228, 218, 215, 155, 81, 16, + 14, 14, 14, 14, 18, 21, 204, 238, 242, 238, 223, 243, 239, 217, 217, 210, + 245, 243, 245, 228, 227, 218, 232, 210, 240, 225, 213, 206, 188, 164, 38, 15, + 21, 14, 14, 14, 16, 18, 19, 20, 21, 159, 246, 247, 243, 228, 229, 208, + 178, 155, 98, 40, 18, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 18, 21, 40, 236, 246, 248, 236, 229, 233, 217, + 203, 202, 215, 237, 232, 210, 206, 217, 226, 231, 234, 228, 240, 219, 236, 189, + 164, 100, 85, 15, 23, 32, 21, 42, 221, 244, 251, 248, 230, 198, 181, 173, + 159, 145, 141, 165, 182, 198, 209, 203, 229, 225, 229, 210, 202, 188, 95, 21, + 14, 14, 16, 16, 26, 225, 234, 248, 250, 242, 217, 192, 167, 155, 150, 159, + 159, 155, 199, 206, 213, 239, 240, 246, 234, 206, 193, 72, 14, 14, 14, 14, + 21, 48, 172, 242, 250, 246, 244, 219, 213, 194, 188, 164, 161, 155, 114, 132, + 137, 150, 137, 126, 124, 105, 52, 18, 14, 14, 20, 21, 92, 217, 246, 251, + 253, 248, 231, 221, 205, 190, 181, 182, 173, 176, 206, 213, 219, 227, 228, 242, + 223, 214, 189, 159, 27, 15, 20, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 14, 17, 14, 15, 24, 60, 228, 226, 230, 229, 223, 208, 193, 189, + 95, 15, 21, 14, 14, 14, 15, 14, 14, 20, 20, 137, 239, 244, 253, 214, + 167, 102, 100, 34, 20, 36, 21, 130, 236, 241, 246, 243, 225, 188, 169, 167, + 143, 154, 145, 152, 178, 202, 217, 215, 243, 226, 233, 207, 190, 145, 43, 19, + 14, 15, 19, 21, 200, 244, 249, 246, 240, 207, 183, 147, 100, 14, 15, 14, + 14, 14, 15, 16, 21, 176, 247, 247, 245, 242, 210, 182, 157, 114, 16, 15, + 14, 14, 14, 20, 109, 244, 245, 249, 246, 241, 242, 227, 199, 188, 199, 203, + 202, 188, 162, 147, 143, 128, 120, 126, 16, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 19, 18, 21, 194, 242, 243, 231, 235, 232, 200, 181, 145, 64, + 15, 14, 14, 14, 16, 26, 202, 247, 246, 242, 235, 236, 236, 231, 225, 222, + 223, 220, 189, 164, 114, 15, 15, 14, 14, 15, 19, 183, 244, 250, 250, 242, + 204, 181, 145, 126, 55, 20, 21, 19, 143, 225, 242, 238, 240, 235, 206, 195, + 178, 181, 190, 198, 197, 195, 195, 195, 228, 225, 235, 238, 229, 206, 219, 134, + 20, 18, 21, 21, 18, 16, 18, 19, 21, 190, 213, 197, 193, 157, 167, 147, + 162, 164, 189, 179, 217, 215, 221, 221, 244, 247, 242, 235, 203, 197, 170, 21, + 14, 14, 14, 14, 20, 124, 245, 248, 251, 231, 234, 213, 197, 150, 118, 222, + 247, 251, 236, 233, 227, 240, 218, 244, 236, 229, 224, 197, 194, 154, 52, 21, + 14, 15, 18, 31, 179, 225, 248, 249, 242, 220, 197, 183, 175, 161, 147, 148, + 157, 179, 202, 208, 234, 229, 231, 239, 230, 198, 147, 21, 14, 14, 14, 14, + 15, 44, 210, 235, 242, 239, 229, 237, 234, 225, 234, 222, 243, 225, 219, 197, + 210, 207, 221, 210, 241, 232, 222, 199, 188, 172, 57, 15, 20, 14, 14, 14, + 16, 18, 19, 20, 21, 207, 249, 247, 236, 234, 239, 205, 176, 139, 79, 24, + 18, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 18, 21, 105, 241, 246, 246, 238, 234, 234, 213, 199, 192, 200, 205, + 198, 178, 192, 214, 220, 236, 234, 226, 238, 226, 238, 190, 150, 114, 59, 15, + 18, 42, 21, 197, 251, 248, 245, 242, 213, 169, 137, 145, 118, 100, 87, 82, + 120, 178, 213, 225, 229, 240, 232, 209, 194, 193, 148, 19, 14, 14, 15, 23, + 164, 246, 247, 246, 240, 217, 192, 181, 148, 100, 78, 85, 82, 95, 164, 199, + 227, 241, 235, 239, 236, 207, 197, 126, 16, 14, 14, 14, 20, 120, 245, 242, + 248, 239, 217, 198, 183, 136, 114, 89, 79, 76, 50, 56, 69, 73, 67, 65, + 60, 48, 24, 14, 14, 15, 20, 21, 194, 249, 248, 251, 245, 227, 208, 190, + 169, 148, 136, 132, 148, 150, 178, 204, 227, 232, 220, 247, 225, 208, 183, 172, + 59, 15, 16, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 15, 18, 23, 222, 228, 228, 234, 233, 210, 197, 197, 114, 16, 15, 14, + 17, 14, 14, 14, 14, 16, 34, 229, 245, 249, 249, 186, 157, 85, 61, 18, + 20, 24, 73, 229, 249, 245, 238, 232, 203, 162, 137, 132, 97, 116, 111, 109, + 150, 199, 231, 242, 242, 218, 229, 208, 186, 172, 78, 15, 14, 15, 26, 26, + 239, 243, 249, 243, 238, 204, 176, 154, 63, 14, 14, 14, 14, 14, 19, 16, + 23, 210, 249, 249, 243, 239, 209, 185, 154, 92, 15, 14, 14, 14, 14, 18, + 172, 244, 247, 248, 243, 235, 229, 216, 189, 173, 179, 173, 178, 173, 159, 148, + 155, 136, 104, 71, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, + 18, 21, 197, 243, 244, 235, 238, 234, 203, 185, 150, 64, 18, 14, 14, 15, + 16, 97, 245, 247, 247, 238, 234, 240, 235, 233, 236, 228, 225, 221, 188, 167, + 118, 15, 16, 14, 14, 15, 24, 241, 245, 249, 249, 237, 193, 188, 143, 81, + 42, 20, 19, 45, 232, 235, 236, 237, 234, 218, 198, 179, 164, 147, 145, 154, + 161, 167, 190, 211, 219, 214, 230, 230, 217, 197, 206, 167, 15, 14, 14, 14, + 14, 14, 14, 21, 20, 116, 145, 165, 169, 152, 172, 147, 100, 105, 126, 114, + 172, 205, 243, 244, 244, 237, 238, 230, 186, 179, 152, 19, 14, 14, 14, 14, + 18, 197, 248, 247, 251, 229, 227, 225, 181, 173, 214, 230, 208, 209, 186, 205, + 217, 220, 219, 244, 236, 225, 228, 200, 183, 165, 84, 23, 14, 19, 18, 105, + 247, 238, 243, 246, 226, 200, 167, 148, 124, 93, 78, 84, 89, 126, 181, 221, + 229, 221, 228, 243, 217, 210, 183, 48, 14, 14, 14, 14, 16, 118, 228, 236, + 241, 239, 234, 226, 217, 213, 224, 216, 227, 204, 204, 197, 206, 208, 224, 217, + 234, 235, 231, 186, 175, 172, 68, 19, 16, 14, 14, 14, 15, 16, 19, 19, + 27, 237, 244, 245, 234, 236, 237, 205, 172, 116, 55, 20, 18, 16, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 19, 21, + 169, 245, 248, 246, 242, 233, 227, 198, 165, 130, 109, 105, 97, 98, 124, 167, + 207, 240, 240, 234, 239, 235, 235, 190, 152, 116, 16, 20, 20, 20, 126, 250, + 248, 246, 236, 205, 182, 161, 118, 78, 36, 24, 23, 19, 21, 64, 143, 227, + 234, 243, 234, 224, 193, 188, 167, 21, 20, 14, 16, 114, 247, 232, 253, 238, + 205, 192, 172, 143, 92, 45, 21, 19, 21, 24, 75, 139, 213, 244, 236, 240, + 236, 199, 192, 167, 24, 14, 14, 14, 23, 189, 249, 236, 238, 225, 202, 189, + 155, 72, 40, 21, 18, 23, 14, 19, 21, 19, 16, 16, 16, 14, 14, 14, + 15, 15, 19, 89, 244, 252, 249, 246, 217, 205, 185, 155, 116, 85, 63, 52, + 64, 61, 72, 128, 197, 240, 220, 236, 228, 204, 181, 173, 78, 18, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 15, 16, 18, + 183, 230, 235, 235, 236, 210, 208, 202, 137, 33, 15, 15, 19, 14, 14, 14, + 18, 15, 148, 242, 244, 251, 214, 189, 124, 73, 29, 18, 24, 21, 204, 245, + 242, 240, 226, 192, 172, 150, 118, 73, 16, 15, 18, 20, 31, 82, 154, 235, + 243, 226, 238, 219, 183, 181, 111, 16, 15, 15, 24, 63, 245, 245, 246, 234, + 234, 200, 170, 154, 36, 14, 14, 14, 14, 14, 21, 18, 34, 236, 248, 249, + 243, 238, 207, 185, 145, 68, 16, 14, 14, 14, 14, 19, 217, 242, 247, 246, + 242, 226, 218, 200, 155, 126, 114, 98, 120, 134, 139, 134, 136, 118, 69, 31, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 16, 21, 194, 243, + 246, 237, 239, 236, 202, 185, 147, 65, 14, 14, 14, 19, 24, 203, 243, 244, + 247, 234, 232, 238, 229, 229, 238, 234, 227, 226, 195, 169, 118, 15, 16, 14, + 14, 15, 132, 246, 250, 242, 249, 219, 194, 154, 148, 34, 21, 26, 19, 155, + 238, 233, 234, 234, 215, 197, 186, 164, 104, 68, 52, 56, 60, 72, 111, 164, + 217, 225, 232, 229, 217, 190, 183, 169, 19, 14, 14, 14, 14, 14, 15, 18, + 14, 14, 15, 20, 18, 18, 21, 18, 16, 20, 26, 19, 48, 98, 217, 243, + 243, 229, 234, 223, 169, 165, 126, 18, 14, 14, 14, 15, 21, 239, 248, 247, + 248, 238, 224, 220, 179, 181, 225, 200, 190, 190, 173, 202, 215, 222, 231, 234, + 238, 227, 232, 215, 179, 167, 104, 18, 20, 16, 54, 225, 238, 243, 243, 221, + 192, 183, 159, 104, 53, 21, 19, 23, 21, 43, 97, 194, 227, 236, 234, 242, + 208, 202, 185, 72, 14, 14, 14, 14, 18, 183, 238, 238, 241, 233, 237, 217, + 204, 186, 167, 145, 139, 130, 136, 150, 198, 224, 235, 226, 224, 232, 236, 185, + 164, 152, 57, 15, 14, 14, 14, 14, 15, 16, 19, 19, 120, 249, 244, 246, + 238, 232, 225, 197, 167, 97, 34, 18, 16, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 18, 16, 19, 208, 243, 249, 243, + 242, 228, 213, 173, 104, 55, 21, 20, 21, 23, 29, 38, 165, 236, 239, 238, + 239, 238, 231, 197, 157, 97, 21, 18, 50, 21, 232, 244, 245, 242, 221, 181, + 155, 134, 68, 18, 14, 14, 18, 18, 19, 20, 46, 185, 234, 239, 235, 239, + 207, 194, 190, 69, 18, 16, 20, 232, 244, 236, 243, 217, 195, 182, 136, 65, + 21, 15, 14, 14, 16, 16, 19, 46, 170, 239, 242, 247, 240, 203, 186, 182, + 43, 14, 14, 14, 65, 233, 234, 237, 230, 210, 193, 178, 126, 41, 16, 14, + 14, 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 19, 18, 16, 20, 205, + 250, 247, 251, 234, 206, 186, 152, 92, 48, 25, 15, 14, 14, 14, 14, 33, + 95, 229, 229, 230, 232, 203, 178, 169, 95, 18, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 15, 14, 14, 14, 16, 18, 100, 230, 243, 236, + 236, 219, 215, 195, 159, 52, 15, 14, 18, 14, 14, 14, 14, 54, 229, 243, + 244, 240, 195, 185, 87, 46, 16, 19, 21, 92, 247, 246, 243, 234, 205, 173, + 145, 109, 60, 21, 19, 14, 15, 18, 21, 31, 93, 238, 244, 239, 243, 234, + 185, 186, 143, 18, 15, 19, 16, 128, 242, 247, 243, 238, 230, 195, 167, 132, + 19, 15, 14, 14, 14, 14, 19, 19, 71, 242, 245, 247, 243, 234, 202, 181, + 130, 44, 16, 14, 14, 14, 15, 40, 237, 243, 247, 244, 242, 227, 207, 169, + 92, 49, 33, 19, 16, 19, 19, 15, 16, 19, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 18, 16, 21, 197, 244, 244, 236, 238, 235, + 207, 189, 148, 64, 14, 14, 14, 14, 98, 243, 235, 242, 240, 232, 218, 217, + 218, 227, 238, 236, 229, 231, 194, 175, 122, 15, 15, 14, 14, 27, 225, 242, + 247, 243, 244, 208, 194, 137, 109, 21, 20, 20, 41, 229, 237, 236, 237, 229, + 199, 179, 152, 100, 32, 15, 14, 18, 18, 15, 16, 32, 169, 223, 229, 229, + 225, 188, 167, 154, 39, 16, 14, 14, 14, 14, 14, 14, 24, 19, 15, 19, + 14, 14, 21, 14, 14, 14, 16, 15, 18, 26, 183, 235, 242, 222, 230, 215, + 157, 147, 92, 19, 14, 14, 14, 18, 52, 248, 246, 248, 240, 245, 210, 199, + 172, 134, 148, 95, 100, 113, 105, 134, 175, 204, 241, 230, 234, 226, 234, 226, + 181, 165, 113, 18, 21, 20, 164, 249, 230, 246, 238, 202, 162, 157, 118, 54, + 18, 14, 14, 14, 14, 16, 32, 130, 229, 242, 240, 240, 225, 195, 182, 102, + 26, 14, 14, 18, 19, 216, 243, 239, 237, 227, 230, 207, 198, 150, 78, 42, + 23, 21, 19, 24, 128, 218, 238, 238, 223, 229, 233, 183, 159, 118, 37, 14, + 14, 14, 14, 14, 15, 16, 18, 19, 190, 245, 240, 242, 238, 226, 217, 195, + 159, 78, 21, 18, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 16, 21, 232, 242, 249, 241, 239, 218, 200, 148, + 56, 27, 15, 16, 16, 19, 19, 20, 78, 223, 239, 240, 237, 238, 226, 200, + 152, 87, 20, 19, 20, 148, 244, 243, 245, 226, 193, 178, 145, 73, 29, 14, + 24, 14, 18, 24, 31, 19, 23, 162, 237, 239, 240, 241, 218, 198, 175, 92, + 19, 18, 147, 239, 236, 241, 228, 195, 181, 159, 95, 24, 15, 14, 16, 14, + 18, 14, 16, 21, 154, 240, 239, 244, 240, 204, 183, 176, 59, 15, 18, 14, + 130, 246, 226, 240, 233, 213, 192, 159, 92, 18, 14, 15, 14, 14, 14, 14, + 15, 16, 16, 19, 18, 14, 14, 16, 14, 16, 57, 248, 249, 244, 252, 229, + 204, 170, 105, 46, 15, 14, 14, 14, 14, 17, 14, 14, 24, 200, 234, 233, + 230, 204, 173, 152, 98, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 16, 18, 29, 219, 243, 234, 234, 217, 219, 188, + 173, 84, 16, 15, 15, 14, 14, 14, 16, 169, 237, 243, 245, 188, 199, 148, + 64, 15, 16, 23, 19, 223, 242, 249, 247, 217, 183, 173, 132, 55, 20, 16, + 18, 14, 18, 15, 21, 21, 27, 217, 242, 240, 242, 235, 188, 183, 152, 19, + 15, 15, 16, 193, 236, 248, 243, 239, 224, 193, 164, 100, 15, 18, 14, 14, + 14, 14, 14, 19, 137, 243, 245, 246, 241, 221, 197, 172, 109, 21, 15, 14, + 16, 14, 16, 90, 243, 246, 246, 244, 238, 218, 192, 134, 53, 19, 14, 14, + 15, 16, 15, 14, 14, 19, 19, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 16, 16, 21, 197, 245, 244, 233, 234, 234, 209, 189, 147, 63, + 18, 14, 24, 14, 194, 246, 237, 243, 228, 225, 192, 176, 204, 232, 236, 240, + 234, 234, 202, 179, 122, 15, 15, 14, 14, 90, 241, 242, 236, 244, 227, 209, + 178, 141, 34, 21, 19, 19, 132, 240, 238, 236, 229, 214, 204, 179, 107, 38, + 15, 14, 14, 18, 16, 14, 15, 15, 78, 222, 222, 228, 225, 192, 175, 147, + 36, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 20, 15, + 16, 14, 14, 15, 16, 19, 190, 242, 238, 225, 226, 200, 161, 130, 63, 20, + 14, 14, 20, 18, 122, 248, 243, 247, 233, 239, 193, 167, 124, 60, 39, 18, + 16, 20, 18, 21, 63, 124, 232, 230, 230, 229, 230, 226, 188, 162, 113, 18, + 19, 76, 238, 240, 246, 242, 209, 194, 169, 118, 54, 18, 14, 20, 17, 14, + 18, 14, 16, 57, 228, 243, 242, 240, 237, 192, 176, 124, 24, 14, 14, 16, + 48, 232, 245, 241, 230, 226, 216, 197, 172, 98, 26, 20, 15, 14, 14, 15, + 26, 206, 238, 241, 232, 232, 223, 178, 159, 90, 21, 14, 14, 14, 16, 14, + 15, 16, 18, 19, 225, 237, 242, 234, 236, 227, 217, 188, 145, 65, 19, 16, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 19, 56, 242, 239, 247, 234, 232, 204, 192, 132, 30, 16, 14, 14, + 21, 24, 20, 19, 24, 207, 240, 242, 232, 235, 216, 200, 141, 75, 19, 20, + 26, 241, 241, 246, 239, 202, 165, 161, 107, 38, 14, 14, 15, 14, 14, 14, + 15, 16, 19, 147, 244, 243, 244, 234, 220, 206, 143, 81, 20, 59, 237, 231, + 242, 236, 219, 185, 157, 109, 50, 20, 14, 16, 15, 14, 14, 20, 14, 20, + 147, 241, 239, 239, 235, 215, 183, 155, 71, 15, 16, 15, 189, 246, 239, 236, + 236, 223, 202, 169, 89, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 19, 161, 250, 249, 248, 247, 232, 197, 148, 69, 24, + 14, 14, 17, 16, 14, 16, 16, 14, 15, 172, 230, 227, 229, 209, 173, 128, + 87, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 19, 18, 195, 232, 233, 238, 222, 224, 194, 175, 116, 16, 15, + 14, 15, 14, 14, 89, 229, 235, 239, 229, 161, 182, 97, 38, 14, 16, 21, + 92, 249, 240, 248, 239, 199, 172, 154, 90, 31, 16, 20, 14, 14, 18, 14, + 24, 19, 24, 207, 239, 241, 236, 230, 193, 178, 141, 19, 15, 15, 21, 233, + 235, 243, 243, 236, 213, 189, 157, 69, 15, 17, 14, 15, 14, 14, 14, 18, + 200, 242, 244, 244, 240, 217, 189, 159, 95, 15, 15, 14, 15, 18, 19, 169, + 244, 250, 242, 242, 229, 206, 173, 104, 35, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, + 15, 20, 195, 245, 243, 233, 235, 232, 213, 192, 148, 63, 15, 14, 18, 60, + 230, 242, 240, 231, 206, 217, 147, 114, 198, 238, 236, 238, 232, 235, 203, 178, + 126, 15, 15, 14, 26, 204, 238, 242, 239, 237, 213, 197, 152, 109, 19, 21, + 18, 36, 216, 238, 235, 236, 221, 203, 208, 164, 69, 21, 14, 14, 14, 14, + 14, 14, 18, 21, 21, 232, 228, 236, 229, 190, 189, 145, 18, 14, 14, 14, + 14, 14, 14, 16, 14, 15, 21, 16, 14, 14, 15, 14, 20, 15, 14, 15, + 16, 36, 217, 236, 234, 227, 226, 189, 164, 126, 40, 18, 15, 14, 19, 18, + 205, 246, 244, 246, 236, 220, 185, 152, 72, 18, 14, 14, 15, 18, 14, 15, + 19, 34, 198, 222, 232, 232, 225, 224, 194, 155, 107, 19, 20, 188, 248, 233, + 247, 229, 185, 185, 159, 75, 18, 15, 15, 15, 14, 14, 18, 14, 14, 24, + 230, 241, 242, 239, 232, 194, 175, 116, 18, 15, 14, 15, 130, 241, 244, 242, + 229, 230, 200, 183, 132, 71, 15, 18, 14, 24, 16, 19, 21, 222, 240, 242, + 235, 229, 205, 164, 150, 73, 15, 15, 14, 14, 15, 14, 14, 15, 16, 18, + 243, 239, 250, 235, 235, 223, 213, 175, 132, 57, 16, 15, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 14, 32, 100, + 246, 236, 246, 231, 227, 194, 182, 120, 18, 14, 14, 14, 14, 14, 14, 18, + 18, 203, 243, 246, 231, 229, 206, 197, 137, 47, 34, 20, 183, 238, 244, 236, + 234, 205, 170, 124, 63, 21, 14, 14, 14, 14, 17, 14, 16, 16, 18, 139, + 244, 244, 246, 223, 226, 225, 132, 81, 21, 162, 233, 247, 238, 234, 197, 183, + 164, 75, 19, 14, 14, 14, 14, 14, 14, 19, 14, 15, 114, 234, 241, 244, + 231, 225, 192, 143, 79, 15, 18, 18, 217, 243, 250, 222, 233, 230, 217, 186, + 111, 18, 14, 19, 14, 14, 14, 14, 14, 15, 14, 14, 14, 15, 19, 18, + 15, 31, 227, 244, 249, 250, 236, 229, 195, 134, 56, 16, 14, 14, 14, 14, + 14, 14, 14, 26, 15, 198, 242, 232, 226, 209, 173, 114, 81, 14, 14, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 14, 14, 15, + 16, 185, 223, 234, 243, 225, 224, 202, 181, 137, 19, 16, 15, 16, 15, 14, + 209, 240, 236, 232, 173, 167, 136, 73, 16, 14, 20, 16, 218, 244, 246, 243, + 225, 208, 179, 118, 49, 16, 15, 16, 14, 14, 16, 14, 16, 19, 29, 197, + 244, 244, 234, 232, 207, 178, 136, 19, 19, 14, 39, 244, 238, 238, 242, 226, + 199, 183, 147, 49, 15, 16, 14, 15, 14, 18, 14, 19, 230, 241, 243, 243, + 238, 213, 185, 157, 92, 14, 19, 15, 14, 19, 19, 209, 243, 250, 237, 234, + 227, 202, 159, 82, 20, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 20, 192, 242, + 243, 231, 232, 232, 215, 190, 145, 65, 15, 24, 14, 186, 229, 240, 237, 207, + 190, 207, 111, 69, 194, 243, 233, 234, 230, 235, 205, 182, 128, 15, 14, 14, + 47, 242, 236, 238, 246, 202, 210, 172, 132, 60, 19, 18, 18, 95, 234, 238, + 233, 239, 225, 202, 198, 116, 29, 19, 14, 14, 18, 15, 15, 15, 16, 16, + 19, 245, 240, 244, 226, 181, 193, 136, 14, 14, 14, 18, 16, 14, 14, 19, + 82, 98, 118, 105, 111, 118, 114, 130, 98, 109, 113, 126, 132, 161, 251, 242, + 236, 229, 226, 182, 167, 120, 31, 16, 18, 14, 18, 18, 239, 244, 244, 244, + 236, 193, 183, 154, 46, 14, 14, 14, 14, 14, 14, 14, 15, 16, 181, 229, + 235, 237, 221, 219, 194, 145, 100, 20, 75, 244, 247, 245, 232, 221, 185, 164, + 109, 32, 15, 15, 19, 14, 14, 14, 14, 14, 18, 16, 234, 235, 238, 232, + 220, 197, 179, 109, 18, 19, 18, 16, 197, 246, 244, 240, 225, 232, 190, 169, + 124, 57, 14, 14, 14, 15, 14, 14, 23, 243, 244, 240, 235, 224, 192, 157, + 141, 59, 14, 21, 16, 14, 14, 14, 18, 14, 23, 128, 244, 243, 242, 240, + 233, 224, 198, 173, 128, 19, 15, 20, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 16, 14, 14, 19, 18, 15, 204, 244, 240, 240, 234, + 209, 190, 155, 90, 14, 14, 14, 14, 14, 14, 14, 14, 31, 236, 242, 241, + 235, 227, 205, 188, 113, 19, 19, 21, 232, 234, 244, 241, 219, 198, 147, 120, + 41, 14, 16, 14, 14, 14, 14, 14, 14, 15, 24, 107, 244, 244, 241, 237, + 227, 200, 150, 57, 21, 233, 246, 236, 238, 215, 204, 176, 132, 44, 15, 14, + 15, 14, 14, 14, 14, 14, 14, 23, 107, 228, 241, 240, 236, 197, 198, 143, + 47, 18, 14, 20, 250, 248, 248, 247, 236, 232, 232, 205, 219, 109, 21, 15, + 14, 14, 14, 14, 19, 16, 19, 14, 14, 19, 14, 15, 15, 107, 242, 246, + 248, 242, 241, 234, 205, 122, 42, 18, 16, 16, 14, 14, 14, 22, 15, 20, + 24, 238, 240, 246, 232, 165, 162, 155, 50, 16, 21, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 78, 238, 238, + 234, 232, 232, 195, 188, 152, 54, 16, 15, 20, 15, 150, 240, 238, 236, 208, + 155, 150, 102, 19, 15, 14, 15, 63, 245, 240, 244, 237, 224, 170, 167, 107, + 15, 18, 15, 14, 14, 14, 14, 14, 21, 15, 21, 198, 241, 242, 240, 225, + 203, 181, 104, 20, 15, 14, 130, 240, 238, 236, 238, 229, 194, 169, 132, 16, + 14, 16, 14, 14, 17, 14, 14, 33, 236, 235, 248, 234, 236, 192, 194, 137, + 38, 21, 17, 14, 15, 16, 41, 237, 245, 248, 234, 239, 219, 194, 139, 81, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 16, 16, 204, 240, 242, 234, 232, 229, + 221, 202, 143, 61, 24, 15, 49, 234, 238, 232, 237, 210, 205, 150, 64, 20, + 213, 243, 231, 238, 239, 229, 213, 203, 114, 15, 24, 14, 199, 236, 243, 233, + 230, 213, 176, 169, 114, 15, 21, 16, 16, 189, 243, 236, 241, 232, 229, 223, + 183, 95, 38, 18, 15, 14, 14, 14, 18, 18, 19, 20, 178, 240, 247, 239, + 227, 202, 189, 141, 32, 15, 15, 21, 15, 54, 192, 245, 240, 239, 242, 243, + 242, 237, 237, 240, 236, 234, 235, 232, 250, 247, 244, 238, 239, 241, 225, 189, + 161, 130, 18, 18, 16, 14, 16, 73, 241, 239, 247, 234, 230, 197, 172, 118, + 15, 14, 14, 14, 14, 14, 14, 19, 14, 23, 124, 234, 240, 233, 225, 210, + 199, 147, 63, 19, 179, 246, 246, 238, 235, 203, 169, 148, 69, 33, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 231, 243, 237, 230, 220, 183, 164, 100, + 18, 24, 14, 16, 234, 243, 243, 238, 228, 211, 185, 159, 98, 15, 14, 14, + 18, 14, 14, 14, 82, 239, 244, 240, 225, 219, 179, 162, 116, 14, 14, 14, + 14, 24, 14, 14, 15, 14, 15, 157, 243, 242, 239, 237, 230, 219, 192, 164, + 111, 18, 14, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 15, 14, 14, 214, 243, 243, 239, 234, 205, 178, 155, 68, + 14, 14, 14, 14, 14, 14, 15, 14, 64, 238, 243, 243, 232, 220, 204, 173, + 97, 20, 18, 73, 240, 240, 244, 239, 204, 178, 126, 90, 22, 14, 14, 14, + 14, 14, 14, 14, 14, 17, 15, 147, 245, 245, 243, 236, 221, 202, 132, 31, + 84, 244, 246, 239, 238, 204, 185, 155, 100, 35, 14, 14, 15, 14, 14, 14, + 14, 14, 14, 15, 148, 229, 243, 240, 231, 192, 189, 137, 31, 16, 14, 19, + 245, 250, 252, 249, 241, 239, 242, 239, 223, 225, 223, 195, 130, 59, 23, 14, + 14, 14, 14, 14, 24, 17, 14, 27, 20, 181, 251, 249, 246, 239, 239, 225, + 228, 197, 173, 178, 193, 203, 205, 205, 205, 205, 210, 215, 206, 248, 239, 227, + 221, 169, 141, 137, 27, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 32, 228, 232, 235, 232, 223, 210, + 205, 164, 57, 19, 18, 15, 68, 222, 242, 236, 216, 185, 159, 105, 49, 18, + 16, 18, 15, 143, 246, 246, 243, 239, 210, 167, 152, 73, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 16, 15, 211, 242, 242, 237, 219, 197, 175, 93, 23, + 21, 14, 173, 243, 239, 235, 232, 215, 185, 159, 116, 16, 14, 14, 14, 14, + 14, 14, 16, 87, 245, 239, 245, 229, 228, 193, 178, 118, 26, 16, 14, 14, + 18, 15, 79, 242, 243, 243, 231, 236, 209, 178, 134, 59, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 16, 14, 16, 15, 203, 238, 242, 234, 229, 225, 220, 206, 145, 57, + 19, 16, 182, 243, 238, 242, 202, 185, 178, 98, 41, 19, 211, 240, 234, 239, + 233, 231, 209, 198, 116, 24, 14, 39, 229, 240, 240, 234, 223, 193, 162, 150, + 56, 14, 15, 16, 29, 217, 243, 242, 237, 230, 229, 229, 221, 199, 186, 193, + 188, 192, 193, 197, 203, 206, 214, 215, 235, 253, 253, 248, 229, 194, 176, 114, + 20, 24, 21, 19, 41, 223, 246, 240, 251, 248, 245, 245, 243, 239, 236, 237, + 236, 239, 245, 242, 243, 239, 247, 250, 240, 238, 223, 194, 161, 116, 18, 19, + 18, 14, 16, 122, 246, 241, 246, 234, 220, 189, 162, 98, 15, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 167, 243, 240, 233, 236, 213, 216, 136, 41, 23, + 225, 248, 243, 239, 234, 193, 169, 141, 41, 20, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 31, 234, 237, 237, 234, 217, 209, 148, 84, 16, 15, 14, 31, + 243, 246, 243, 237, 229, 215, 183, 147, 84, 14, 14, 14, 14, 14, 14, 15, + 134, 246, 243, 240, 227, 219, 173, 148, 102, 14, 15, 14, 14, 20, 14, 14, + 14, 14, 14, 204, 243, 242, 238, 236, 228, 215, 185, 154, 85, 15, 14, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 35, 233, 243, 243, 235, 233, 193, 165, 152, 39, 14, 14, 14, 14, + 14, 14, 16, 14, 143, 242, 244, 244, 225, 213, 203, 157, 69, 23, 16, 165, + 246, 244, 241, 234, 200, 169, 126, 64, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 14, 204, 247, 245, 243, 232, 211, 198, 107, 19, 165, 245, 241, 238, + 237, 198, 175, 148, 63, 21, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 198, 234, 244, 240, 228, 183, 175, 126, 15, 14, 14, 19, 246, 252, 248, 243, + 244, 243, 232, 221, 219, 233, 239, 234, 227, 225, 221, 205, 97, 21, 19, 19, + 14, 15, 21, 14, 15, 217, 251, 247, 237, 237, 239, 230, 229, 229, 236, 241, + 243, 242, 242, 243, 244, 234, 250, 246, 250, 247, 246, 238, 206, 173, 136, 124, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 198, 230, 235, 237, 220, 223, 202, 190, 95, 23, + 23, 20, 183, 247, 242, 232, 188, 159, 145, 56, 15, 21, 14, 15, 15, 219, + 243, 247, 235, 231, 195, 164, 126, 38, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 21, 14, 231, 242, 241, 232, 214, 194, 162, 79, 21, 14, 14, 208, 243, + 239, 236, 229, 209, 181, 152, 89, 15, 14, 14, 14, 15, 14, 15, 14, 172, + 248, 242, 242, 233, 224, 193, 162, 100, 14, 14, 14, 14, 16, 15, 150, 244, + 243, 240, 229, 228, 200, 154, 130, 33, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 16, 14, 200, 239, 242, 232, 226, 225, 223, 208, 145, 61, 19, 37, 245, 245, + 234, 236, 198, 188, 147, 52, 21, 16, 205, 240, 238, 236, 228, 234, 217, 203, + 124, 27, 14, 145, 245, 241, 239, 231, 204, 173, 148, 120, 16, 14, 14, 21, + 60, 236, 239, 242, 242, 236, 230, 229, 223, 217, 228, 238, 234, 236, 238, 242, + 243, 246, 246, 248, 246, 249, 250, 244, 217, 188, 182, 114, 21, 21, 21, 24, + 170, 254, 254, 250, 250, 246, 240, 240, 243, 243, 242, 241, 242, 238, 238, 243, + 238, 242, 243, 241, 238, 236, 223, 200, 157, 87, 18, 20, 14, 14, 14, 189, + 246, 244, 242, 234, 206, 183, 154, 71, 14, 15, 14, 14, 14, 14, 14, 14, + 15, 14, 206, 246, 244, 233, 238, 209, 211, 120, 21, 63, 248, 247, 240, 239, + 225, 185, 164, 118, 18, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 90, + 238, 236, 236, 235, 204, 215, 128, 56, 20, 14, 21, 111, 249, 249, 243, 236, + 227, 211, 175, 134, 65, 14, 14, 14, 14, 14, 14, 14, 206, 250, 243, 240, + 229, 210, 159, 130, 76, 14, 17, 14, 14, 18, 14, 16, 14, 14, 14, 229, + 243, 240, 237, 234, 228, 210, 179, 143, 61, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 15, 19, 14, 14, 79, 243, + 242, 243, 229, 225, 182, 152, 136, 19, 14, 14, 14, 14, 14, 14, 14, 14, + 207, 239, 243, 242, 222, 204, 195, 136, 37, 19, 15, 222, 248, 246, 238, 226, + 198, 154, 130, 36, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 228, + 246, 243, 243, 225, 204, 189, 84, 16, 221, 243, 235, 235, 231, 188, 162, 145, + 34, 14, 14, 16, 14, 14, 14, 14, 14, 16, 14, 14, 224, 232, 243, 236, + 225, 179, 165, 114, 14, 14, 15, 15, 233, 246, 236, 228, 242, 243, 236, 237, + 245, 243, 239, 241, 245, 249, 242, 223, 218, 193, 87, 20, 14, 21, 14, 15, + 29, 236, 244, 244, 232, 232, 235, 229, 220, 225, 233, 239, 238, 236, 238, 243, + 246, 232, 246, 238, 244, 229, 240, 232, 164, 154, 141, 95, 15, 14, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 19, 14, 130, 239, 239, 236, 224, 228, 197, 217, 137, 18, 16, 102, 242, 246, + 238, 218, 167, 136, 93, 26, 14, 20, 14, 14, 29, 240, 240, 246, 234, 213, + 183, 159, 95, 16, 16, 14, 14, 14, 14, 14, 14, 15, 14, 15, 44, 244, + 239, 238, 225, 205, 189, 136, 53, 15, 14, 29, 228, 241, 237, 237, 227, 206, + 181, 136, 56, 14, 14, 14, 14, 14, 14, 16, 15, 210, 243, 242, 238, 236, + 216, 195, 152, 82, 14, 15, 14, 15, 14, 14, 200, 241, 239, 235, 226, 218, + 192, 136, 118, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 202, 239, + 237, 230, 226, 229, 226, 216, 152, 64, 19, 157, 247, 244, 234, 209, 208, 175, + 114, 31, 14, 20, 205, 242, 239, 232, 230, 237, 221, 209, 122, 15, 41, 228, + 245, 239, 235, 220, 182, 167, 141, 69, 14, 14, 14, 15, 130, 242, 240, 240, + 239, 235, 234, 230, 225, 225, 227, 232, 232, 234, 237, 239, 240, 242, 242, 243, + 246, 245, 238, 226, 185, 178, 170, 67, 26, 20, 21, 92, 249, 246, 250, 252, + 242, 235, 223, 215, 210, 205, 199, 197, 206, 192, 197, 227, 231, 240, 240, 233, + 236, 229, 217, 198, 147, 54, 16, 19, 14, 14, 21, 226, 243, 243, 234, 231, + 200, 181, 136, 47, 14, 16, 14, 14, 14, 14, 14, 14, 15, 26, 232, 244, + 247, 236, 228, 210, 183, 107, 14, 148, 251, 246, 238, 234, 209, 179, 154, 67, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 15, 14, 161, 241, 236, 236, 227, + 186, 200, 122, 31, 21, 14, 20, 200, 249, 250, 245, 235, 224, 206, 164, 116, + 38, 14, 14, 14, 14, 14, 14, 14, 234, 250, 242, 237, 225, 195, 154, 120, + 43, 14, 15, 14, 14, 15, 14, 16, 14, 14, 33, 241, 243, 242, 236, 234, + 226, 209, 176, 134, 40, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 15, 14, 14, 14, 19, 14, 18, 143, 246, 241, 240, 226, 216, + 176, 145, 104, 14, 16, 14, 14, 14, 14, 16, 14, 18, 234, 242, 242, 237, + 220, 203, 192, 118, 21, 14, 24, 238, 246, 243, 236, 220, 197, 139, 120, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 29, 240, 245, 240, 242, 222, + 202, 176, 67, 26, 242, 246, 239, 234, 218, 172, 139, 111, 20, 14, 14, 16, + 14, 14, 14, 14, 14, 16, 14, 26, 236, 236, 242, 232, 215, 175, 161, 92, + 14, 16, 17, 14, 143, 221, 232, 216, 207, 202, 211, 233, 213, 218, 227, 239, + 243, 242, 243, 243, 236, 217, 219, 159, 24, 15, 33, 15, 114, 249, 243, 243, + 232, 221, 217, 211, 202, 200, 205, 210, 206, 202, 204, 211, 214, 207, 216, 209, + 206, 189, 190, 155, 148, 134, 139, 56, 22, 14, 25, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 47, 240, + 238, 233, 231, 228, 218, 224, 152, 21, 21, 218, 252, 245, 228, 195, 162, 111, + 40, 14, 14, 14, 14, 16, 90, 244, 243, 244, 239, 198, 182, 157, 69, 14, + 16, 14, 14, 14, 14, 15, 14, 14, 16, 14, 114, 243, 238, 236, 221, 204, + 189, 114, 37, 14, 21, 85, 244, 243, 234, 234, 217, 197, 178, 114, 32, 14, + 14, 16, 14, 14, 16, 14, 19, 229, 243, 242, 236, 234, 206, 188, 145, 65, + 14, 14, 14, 14, 14, 25, 219, 238, 238, 235, 227, 205, 186, 137, 95, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 15, 14, 198, 240, 235, 229, 226, 230, + 227, 215, 152, 68, 31, 236, 241, 245, 239, 203, 179, 137, 73, 18, 14, 20, + 202, 240, 239, 232, 236, 235, 225, 215, 126, 15, 148, 247, 235, 234, 230, 209, + 170, 162, 109, 32, 15, 17, 14, 14, 207, 246, 246, 241, 237, 235, 229, 223, + 215, 207, 200, 194, 199, 204, 206, 205, 206, 208, 205, 206, 203, 203, 193, 176, + 148, 162, 137, 27, 18, 21, 21, 172, 253, 243, 246, 239, 221, 216, 205, 182, + 169, 169, 165, 172, 183, 182, 198, 217, 223, 224, 231, 232, 233, 217, 203, 179, + 114, 28, 14, 15, 14, 14, 47, 240, 238, 241, 228, 226, 197, 172, 120, 28, + 14, 14, 14, 14, 14, 16, 14, 14, 14, 85, 246, 246, 246, 241, 217, 219, + 148, 95, 14, 210, 247, 244, 239, 230, 193, 178, 143, 30, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 203, 243, 243, 236, 217, 194, 173, 126, 14, + 14, 14, 14, 217, 248, 251, 246, 235, 219, 194, 152, 111, 18, 14, 14, 14, + 14, 14, 14, 25, 244, 251, 243, 235, 221, 178, 152, 118, 19, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 79, 243, 243, 237, 233, 229, 225, 208, 167, 128, + 25, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 14, 16, 14, 22, 197, 243, 242, 237, 228, 203, 175, 141, 64, 14, + 16, 14, 15, 14, 14, 17, 14, 45, 242, 240, 243, 227, 219, 203, 175, 97, + 15, 14, 56, 244, 244, 242, 236, 214, 192, 139, 85, 15, 18, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 89, 243, 244, 239, 237, 211, 204, 148, 49, 72, + 245, 243, 240, 231, 209, 176, 139, 81, 14, 14, 14, 14, 14, 14, 15, 14, + 16, 14, 14, 89, 243, 239, 243, 226, 202, 162, 147, 57, 16, 14, 15, 14, + 37, 122, 194, 206, 200, 189, 182, 178, 211, 214, 217, 223, 225, 223, 233, 243, + 224, 236, 225, 206, 130, 19, 16, 26, 199, 250, 242, 234, 230, 213, 199, 182, + 164, 157, 157, 162, 161, 154, 148, 150, 154, 162, 150, 159, 150, 161, 175, 134, + 167, 136, 130, 35, 24, 14, 24, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 14, 222, 236, 232, 238, 231, + 229, 220, 188, 130, 150, 253, 250, 238, 209, 164, 136, 72, 14, 14, 19, 14, + 14, 16, 179, 242, 245, 239, 236, 192, 172, 134, 41, 14, 15, 14, 14, 14, + 14, 18, 14, 14, 15, 14, 190, 233, 235, 232, 209, 192, 179, 97, 26, 14, + 18, 164, 245, 238, 230, 233, 205, 192, 161, 95, 16, 14, 14, 16, 14, 14, + 14, 14, 63, 243, 248, 246, 236, 223, 195, 173, 134, 39, 15, 14, 14, 14, + 14, 57, 226, 236, 236, 234, 224, 200, 179, 145, 60, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 198, 236, 238, 231, 229, 229, 225, 216, 165, 89, + 159, 252, 247, 238, 227, 209, 136, 122, 35, 14, 14, 16, 203, 242, 242, 234, + 236, 232, 228, 217, 145, 18, 225, 246, 232, 234, 225, 194, 164, 141, 71, 15, + 14, 14, 14, 14, 234, 243, 243, 239, 236, 234, 220, 183, 161, 152, 148, 137, + 155, 157, 159, 157, 154, 155, 154, 154, 134, 155, 147, 143, 128, 136, 90, 14, + 14, 26, 27, 232, 248, 247, 236, 222, 200, 190, 162, 120, 100, 95, 102, 109, + 126, 105, 107, 130, 221, 223, 227, 223, 224, 203, 181, 145, 82, 14, 14, 14, + 14, 14, 118, 243, 236, 238, 224, 221, 192, 161, 97, 18, 14, 14, 14, 14, + 14, 23, 14, 14, 14, 182, 251, 247, 242, 241, 210, 223, 124, 64, 14, 225, + 243, 244, 240, 228, 186, 170, 120, 14, 18, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 30, 225, 241, 244, 238, 210, 192, 147, 109, 14, 14, 14, 27, 231, + 247, 250, 246, 237, 219, 186, 141, 98, 14, 14, 14, 14, 14, 14, 15, 102, + 249, 250, 245, 234, 219, 167, 154, 100, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 148, 239, 239, 233, 227, 222, 218, 199, 157, 114, 18, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 15, + 14, 31, 225, 239, 240, 232, 226, 175, 169, 132, 31, 14, 14, 14, 17, 14, + 18, 15, 14, 122, 240, 240, 240, 213, 216, 197, 150, 73, 14, 14, 124, 243, + 243, 236, 238, 194, 175, 147, 43, 15, 16, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 185, 243, 241, 234, 228, 195, 188, 92, 27, 132, 244, 236, 238, 225, + 195, 185, 136, 48, 14, 14, 14, 14, 14, 14, 16, 14, 19, 14, 19, 197, + 246, 245, 238, 215, 185, 150, 128, 25, 18, 14, 14, 14, 14, 26, 68, 113, + 147, 181, 186, 159, 154, 170, 193, 213, 227, 236, 236, 231, 242, 224, 210, 226, + 165, 38, 19, 16, 217, 241, 240, 220, 223, 209, 181, 137, 73, 69, 75, 89, + 105, 111, 116, 122, 126, 126, 100, 100, 90, 84, 122, 90, 92, 76, 65, 22, + 19, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 167, 238, 230, 237, 231, 229, 229, 225, 232, + 246, 254, 243, 217, 179, 145, 85, 31, 14, 14, 14, 14, 14, 14, 222, 238, + 243, 232, 221, 188, 164, 107, 21, 14, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 31, 223, 226, 230, 225, 189, 167, 161, 73, 17, 14, 14, 216, 240, 237, + 227, 232, 194, 183, 134, 84, 14, 14, 14, 14, 14, 14, 15, 15, 143, 246, + 246, 243, 232, 217, 182, 154, 111, 18, 14, 14, 14, 14, 14, 120, 233, 234, + 229, 225, 213, 188, 159, 141, 31, 19, 15, 14, 14, 14, 14, 15, 15, 15, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 14, 193, 231, 233, 227, 226, 225, 220, 220, 197, 143, 249, 251, 248, 236, + 209, 186, 136, 87, 16, 14, 14, 14, 203, 240, 238, 238, 235, 236, 233, 219, + 181, 85, 240, 241, 232, 228, 207, 176, 154, 98, 35, 14, 14, 14, 14, 23, + 243, 243, 238, 234, 224, 225, 202, 137, 90, 87, 100, 104, 114, 120, 118, 116, + 113, 113, 107, 102, 100, 111, 87, 85, 73, 49, 27, 14, 18, 14, 81, 243, + 242, 242, 223, 206, 186, 157, 87, 36, 18, 14, 14, 14, 15, 14, 14, 31, + 224, 226, 223, 209, 203, 183, 157, 107, 57, 14, 14, 14, 14, 14, 195, 241, + 236, 236, 221, 204, 175, 136, 84, 14, 18, 14, 14, 16, 14, 19, 14, 14, + 39, 234, 249, 246, 239, 236, 208, 210, 116, 34, 30, 239, 243, 244, 236, 220, + 182, 145, 89, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 90, 243, + 239, 243, 230, 193, 173, 134, 69, 14, 15, 16, 93, 243, 249, 250, 244, 232, + 215, 178, 124, 75, 14, 16, 14, 14, 19, 14, 22, 205, 251, 250, 245, 226, + 211, 154, 139, 69, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 179, 227, + 224, 221, 215, 211, 208, 193, 148, 105, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 18, 14, 38, 235, 236, + 232, 217, 214, 150, 152, 116, 14, 15, 14, 14, 21, 14, 18, 14, 15, 179, + 232, 234, 234, 192, 207, 178, 118, 54, 15, 16, 178, 242, 238, 226, 227, 164, + 137, 122, 14, 15, 14, 15, 14, 14, 14, 14, 14, 14, 15, 14, 217, 236, + 227, 217, 203, 167, 165, 63, 15, 162, 243, 233, 235, 214, 175, 173, 95, 17, + 14, 14, 14, 14, 14, 14, 18, 14, 23, 18, 21, 236, 243, 243, 230, 189, + 159, 126, 95, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 42, 105, 111, + 141, 172, 192, 189, 195, 219, 229, 223, 217, 234, 211, 215, 186, 56, 21, 15, + 221, 228, 236, 199, 214, 208, 176, 100, 24, 19, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 17, 20, 14, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 19, 14, 21, 109, 236, 226, 228, 227, 228, 238, 229, 231, 249, 235, 234, 195, + 154, 136, 50, 14, 14, 14, 14, 15, 16, 15, 235, 240, 239, 225, 190, 178, + 141, 84, 14, 14, 14, 14, 14, 14, 18, 14, 14, 16, 14, 75, 234, 225, + 219, 209, 159, 141, 137, 55, 14, 14, 14, 233, 236, 234, 225, 225, 173, 165, + 114, 78, 14, 16, 14, 14, 14, 16, 21, 16, 194, 242, 240, 230, 227, 205, + 172, 134, 100, 14, 14, 14, 14, 14, 14, 172, 239, 237, 225, 210, 197, 173, + 134, 130, 14, 17, 14, 14, 14, 14, 14, 15, 15, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 185, 226, + 222, 217, 213, 214, 216, 225, 218, 190, 253, 237, 240, 239, 204, 126, 139, 27, + 14, 14, 14, 14, 198, 238, 229, 234, 232, 239, 236, 216, 202, 183, 233, 224, + 221, 207, 167, 148, 141, 68, 20, 14, 14, 16, 17, 48, 241, 239, 224, 223, + 209, 211, 170, 72, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 208, 231, 230, 225, 221, 176, + 155, 109, 47, 15, 14, 14, 14, 14, 15, 14, 31, 46, 234, 217, 198, 188, + 182, 162, 137, 90, 45, 14, 14, 14, 14, 14, 224, 232, 229, 225, 205, 176, + 152, 111, 68, 14, 23, 15, 14, 19, 15, 14, 15, 21, 82, 246, 243, 236, + 228, 216, 194, 169, 98, 16, 52, 245, 240, 236, 218, 207, 170, 111, 67, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 22, 161, 251, 230, 231, 214, 165, + 155, 130, 39, 14, 16, 14, 165, 243, 248, 246, 236, 223, 203, 172, 100, 50, + 14, 17, 14, 14, 20, 14, 14, 227, 247, 243, 238, 215, 202, 143, 126, 47, + 14, 17, 14, 14, 14, 14, 14, 15, 14, 14, 197, 198, 192, 197, 188, 183, + 190, 185, 130, 78, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 20, 14, 14, 18, 14, 16, 14, 134, 232, 221, 215, 200, 170, 145, + 100, 65, 14, 14, 14, 18, 14, 14, 14, 16, 14, 214, 221, 225, 203, 193, + 169, 157, 132, 30, 15, 21, 208, 236, 231, 221, 188, 148, 107, 60, 14, 14, + 14, 14, 14, 14, 15, 14, 21, 14, 14, 69, 209, 207, 197, 186, 157, 148, + 111, 34, 14, 190, 222, 229, 225, 193, 164, 155, 79, 14, 14, 14, 14, 14, + 14, 16, 14, 14, 21, 49, 126, 248, 240, 228, 218, 124, 107, 92, 41, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 38, 61, 122, 157, + 200, 195, 208, 204, 208, 222, 210, 188, 164, 69, 14, 14, 210, 202, 198, 182, + 178, 183, 169, 109, 14, 14, 14, 14, 16, 16, 14, 14, 18, 14, 14, 19, + 14, 14, 24, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 16, 14, 14, 16, + 213, 205, 218, 199, 216, 217, 217, 219, 225, 217, 183, 137, 130, 57, 18, 14, + 14, 14, 14, 18, 18, 23, 240, 235, 228, 190, 162, 143, 92, 47, 15, 14, + 14, 14, 14, 14, 14, 18, 21, 14, 14, 154, 205, 213, 195, 162, 154, 126, + 97, 23, 16, 14, 55, 224, 214, 209, 202, 186, 157, 141, 104, 28, 14, 14, + 16, 16, 14, 20, 19, 18, 227, 242, 220, 221, 195, 165, 148, 122, 78, 14, + 15, 14, 14, 14, 14, 226, 243, 235, 215, 209, 189, 139, 102, 65, 14, 14, + 14, 14, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 167, 210, 207, 195, 193, 200, + 215, 220, 225, 230, 239, 232, 234, 189, 162, 132, 78, 14, 14, 14, 14, 14, + 185, 233, 232, 229, 232, 234, 229, 221, 214, 208, 204, 192, 183, 175, 128, 128, + 79, 40, 14, 19, 14, 14, 14, 100, 219, 209, 198, 173, 164, 162, 132, 59, + 14, 16, 19, 20, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 16, 215, 231, 220, 213, 176, 164, 154, 76, 26, 14, + 14, 14, 14, 15, 19, 19, 29, 141, 215, 206, 185, 155, 176, 147, 141, 105, + 18, 15, 14, 14, 14, 52, 221, 215, 221, 190, 192, 139, 122, 97, 14, 14, + 19, 16, 14, 21, 14, 14, 14, 14, 210, 227, 227, 209, 199, 148, 169, 114, + 56, 14, 107, 232, 222, 216, 217, 172, 167, 134, 27, 21, 19, 14, 14, 14, + 15, 14, 14, 15, 14, 14, 231, 242, 213, 217, 165, 143, 102, 82, 14, 14, + 14, 14, 222, 245, 239, 246, 217, 216, 179, 126, 104, 14, 14, 14, 14, 14, + 14, 14, 21, 243, 226, 231, 217, 198, 161, 139, 122, 28, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 183, 181, 164, 157, 157, 155, 164, 157, 104, 54, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 21, 14, 14, 14, 14, + 14, 16, 14, 14, 14, 152, 215, 205, 195, 178, 143, 128, 93, 45, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 207, 199, 203, 181, 164, 139, 118, 82, 15, + 15, 20, 204, 232, 221, 207, 167, 130, 98, 48, 14, 14, 14, 14, 14, 14, + 29, 14, 16, 16, 14, 157, 200, 164, 165, 136, 118, 120, 76, 22, 14, 170, + 216, 213, 204, 179, 150, 122, 60, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 21, 21, 200, 242, 224, 218, 155, 120, 92, 68, 17, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 18, 45, 150, 197, 190, 195, + 200, 213, 192, 167, 136, 44, 14, 15, 192, 178, 165, 155, 155, 165, 154, 92, + 21, 21, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 16, 18, 18, 14, 14, 14, 164, 199, 199, 185, + 200, 202, 200, 205, 198, 176, 139, 109, 78, 36, 15, 14, 15, 15, 14, 16, + 19, 21, 232, 223, 211, 157, 137, 122, 95, 39, 14, 14, 14, 15, 14, 14, + 24, 14, 19, 14, 16, 194, 203, 176, 169, 120, 111, 104, 72, 14, 14, 14, + 89, 209, 200, 195, 183, 164, 145, 122, 98, 27, 14, 15, 18, 19, 16, 19, + 23, 36, 223, 230, 208, 197, 167, 141, 126, 100, 43, 14, 14, 14, 14, 14, + 36, 235, 242, 226, 203, 189, 162, 114, 92, 43, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 152, 198, 192, 178, 178, 183, 194, 206, 215, 218, + 220, 219, 204, 178, 128, 97, 41, 14, 14, 14, 14, 14, 169, 223, 217, 218, + 225, 227, 221, 208, 194, 188, 173, 164, 150, 126, 114, 79, 71, 15, 14, 14, + 14, 14, 14, 116, 199, 185, 170, 139, 122, 109, 85, 40, 15, 14, 21, 18, + 15, 14, 14, 14, 14, 14, 14, 14, 17, 14, 14, 14, 14, 15, 19, 14, + 14, 42, 215, 225, 210, 195, 165, 148, 97, 39, 14, 14, 14, 14, 16, 21, + 34, 26, 18, 186, 199, 179, 167, 148, 157, 137, 134, 93, 16, 14, 14, 14, + 14, 105, 225, 211, 207, 165, 161, 118, 107, 84, 14, 14, 17, 19, 14, 18, + 18, 14, 14, 65, 219, 207, 197, 165, 154, 120, 122, 75, 24, 14, 85, 221, + 208, 197, 192, 148, 175, 137, 21, 15, 23, 16, 14, 14, 18, 15, 14, 14, + 14, 89, 231, 229, 207, 185, 143, 104, 89, 36, 14, 14, 14, 29, 230, 243, + 233, 232, 203, 194, 157, 114, 84, 14, 14, 14, 14, 14, 14, 18, 59, 237, + 215, 214, 202, 183, 145, 114, 85, 18, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 178, 170, 152, 130, 136, 150, 143, 136, 92, 35, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 16, 14, 14, 14, + 14, 170, 198, 186, 169, 145, 120, 104, 90, 22, 14, 14, 14, 14, 14, 14, + 14, 14, 48, 195, 185, 185, 164, 145, 130, 102, 55, 14, 14, 14, 186, 217, + 204, 192, 154, 124, 85, 43, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 206, 189, 157, 154, 116, 105, 104, 54, 15, 14, 167, 217, 199, 188, 170, + 147, 111, 53, 14, 14, 14, 16, 19, 18, 14, 14, 17, 16, 18, 222, 224, + 206, 198, 130, 111, 89, 54, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 15, 15, 18, 14, 14, 14, 104, 207, 182, 182, 189, 195, 172, 157, + 124, 30, 14, 54, 175, 157, 141, 134, 128, 143, 118, 68, 14, 14, 15, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 18, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 16, 16, 18, 15, 14, 14, 90, 199, 182, 186, 189, 192, 192, 192, + 173, 145, 111, 95, 34, 19, 14, 14, 18, 14, 14, 14, 14, 14, 217, 206, + 190, 139, 126, 111, 84, 30, 14, 14, 14, 15, 16, 14, 15, 14, 14, 14, + 65, 200, 195, 172, 152, 98, 95, 84, 49, 14, 14, 14, 150, 206, 195, 192, + 173, 154, 145, 109, 49, 14, 14, 14, 14, 18, 15, 24, 20, 75, 213, 215, + 189, 162, 143, 128, 116, 85, 19, 16, 16, 14, 14, 14, 81, 226, 221, 207, + 186, 162, 136, 102, 79, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 145, 183, 178, 164, 154, 164, 170, 182, 188, 192, 199, 204, 173, 167, + 105, 71, 19, 14, 14, 14, 14, 14, 155, 205, 197, 192, 204, 213, 205, 189, + 167, 157, 154, 145, 132, 95, 102, 68, 44, 14, 14, 15, 16, 14, 14, 145, + 186, 176, 148, 130, 132, 114, 75, 35, 14, 14, 18, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 19, 16, 14, 14, 21, 14, 14, 100, 217, 219, + 206, 181, 157, 136, 104, 41, 14, 14, 14, 14, 14, 14, 16, 15, 14, 216, + 183, 159, 150, 136, 134, 120, 122, 71, 14, 14, 14, 14, 14, 175, 223, 205, + 197, 161, 148, 128, 78, 47, 14, 14, 14, 14, 14, 14, 14, 14, 14, 143, + 204, 186, 183, 162, 124, 122, 95, 50, 14, 14, 82, 217, 202, 195, 178, 136, + 159, 98, 15, 14, 15, 19, 21, 15, 14, 14, 14, 14, 14, 192, 222, 211, + 198, 162, 132, 102, 84, 14, 14, 14, 15, 55, 227, 226, 219, 210, 193, 169, + 139, 111, 55, 14, 14, 14, 14, 14, 14, 14, 128, 218, 204, 194, 181, 157, + 134, 102, 56, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 28, 176, 162, + 147, 105, 122, 136, 116, 116, 82, 28, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 21, 181, 173, 169, + 145, 116, 92, 89, 73, 14, 14, 14, 14, 17, 14, 14, 14, 14, 93, 170, + 164, 164, 145, 137, 126, 92, 45, 14, 14, 14, 162, 199, 186, 178, 137, 118, + 78, 42, 14, 16, 14, 15, 16, 18, 14, 15, 14, 14, 79, 188, 162, 167, + 134, 102, 95, 90, 33, 14, 14, 170, 207, 189, 178, 162, 147, 114, 52, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 82, 199, 193, 178, 147, 136, 85, + 82, 35, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 22, 14, 90, 199, 186, 181, 165, 178, 157, 145, 109, 19, 14, 73, + 164, 134, 126, 113, 111, 122, 102, 63, 14, 14, 16, 17, 14, 14, 14, 14, + 14, 14, 14, 14, 17, 14, 14, 49, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, + 16, 16, 14, 14, 31, 190, 164, 183, 164, 175, 176, 161, 147, 126, 95, 72, + 15, 14, 14, 14, 16, 14, 14, 14, 14, 14, 198, 181, 170, 122, 114, 107, + 75, 19, 14, 26, 16, 16, 18, 14, 14, 14, 14, 14, 175, 169, 170, 169, + 120, 93, 93, 63, 27, 14, 14, 17, 186, 189, 178, 178, 157, 139, 132, 89, + 47, 14, 14, 16, 18, 19, 14, 14, 14, 116, 203, 188, 157, 136, 130, 104, + 98, 79, 14, 16, 15, 16, 14, 14, 128, 204, 198, 181, 173, 139, 120, 98, + 68, 14, 14, 14, 14, 15, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 134, 172, + 162, 143, 136, 136, 147, 150, 154, 164, 172, 179, 145, 136, 90, 39, 14, 15, + 14, 14, 14, 14, 141, 185, 169, 157, 170, 183, 175, 157, 147, 143, 141, 132, + 113, 102, 78, 65, 14, 14, 14, 15, 18, 14, 14, 162, 173, 162, 132, 118, + 100, 81, 52, 20, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 18, 14, 14, 28, 14, 14, 18, 14, 14, 159, 208, 204, 194, 159, 161, 141, + 85, 27, 14, 14, 15, 14, 14, 17, 20, 19, 26, 205, 145, 126, 134, 139, + 124, 114, 111, 53, 14, 14, 14, 14, 14, 207, 211, 195, 185, 161, 136, 126, + 82, 27, 14, 14, 14, 14, 18, 14, 14, 14, 35, 193, 178, 172, 167, 141, + 111, 114, 82, 26, 14, 14, 87, 213, 189, 190, 169, 128, 137, 68, 14, 17, + 14, 15, 16, 14, 14, 14, 16, 15, 30, 204, 197, 195, 178, 141, 109, 109, + 65, 14, 14, 14, 14, 104, 211, 197, 195, 170, 173, 143, 118, 100, 32, 14, + 14, 15, 14, 14, 14, 14, 161, 193, 181, 170, 150, 137, 122, 93, 46, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 52, 162, 145, 126, 90, 97, 109, + 95, 93, 73, 29, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 16, 145, 14, 14, 15, 14, 40, 173, 147, 148, 122, 100, 79, 75, + 55, 14, 14, 14, 14, 16, 14, 14, 14, 14, 111, 145, 141, 134, 122, 120, + 120, 78, 29, 14, 14, 14, 136, 179, 165, 162, 128, 118, 111, 53, 14, 14, + 15, 21, 21, 16, 14, 14, 14, 14, 169, 152, 157, 155, 105, 85, 82, 61, + 16, 14, 14, 172, 192, 178, 172, 152, 141, 128, 53, 14, 14, 16, 14, 14, + 14, 16, 18, 14, 14, 130, 143, 154, 143, 113, 114, 92, 71, 19, 14, 14, + 14, 20, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 137, 186, 183, 159, 167, 161, 139, 128, 76, 14, 14, 61, 147, 120, 104, 98, + 93, 100, 102, 73, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 14, 17, 124, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 14, 16, 14, 14, + 14, 167, 155, 173, 130, 154, 147, 128, 116, 109, 69, 31, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 178, 161, 152, 107, 105, 109, 111, 21, 15, 24, + 18, 19, 23, 18, 14, 14, 14, 52, 194, 145, 164, 141, 93, 93, 89, 34, + 14, 14, 14, 34, 192, 165, 155, 162, 147, 128, 128, 84, 23, 14, 14, 14, + 14, 14, 14, 14, 14, 126, 185, 150, 124, 122, 109, 90, 76, 65, 14, 14, + 14, 15, 14, 14, 139, 172, 169, 155, 157, 124, 107, 90, 60, 14, 14, 14, + 14, 18, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 124, 154, 147, 126, 109, 114, + 116, 114, 120, 132, 134, 136, 114, 85, 72, 18, 14, 16, 14, 14, 14, 14, + 120, 155, 130, 116, 130, 145, 137, 128, 126, 128, 122, 122, 97, 93, 65, 37, + 14, 14, 15, 14, 14, 14, 14, 148, 161, 141, 111, 102, 102, 89, 81, 33, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 38, 92, + 20, 18, 14, 14, 14, 176, 193, 183, 178, 137, 152, 126, 98, 31, 14, 14, + 14, 14, 14, 14, 14, 14, 64, 178, 132, 114, 102, 111, 118, 118, 109, 35, + 14, 14, 14, 14, 45, 215, 193, 176, 170, 154, 124, 113, 68, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 113, 189, 155, 172, 147, 113, 104, 92, 68, 14, + 14, 14, 89, 200, 175, 170, 148, 130, 143, 76, 14, 14, 15, 14, 14, 14, + 15, 16, 14, 14, 116, 173, 178, 183, 150, 130, 90, 102, 35, 14, 14, 14, + 14, 139, 186, 154, 152, 124, 145, 120, 107, 87, 19, 14, 14, 16, 14, 14, + 14, 14, 161, 167, 152, 141, 124, 116, 111, 78, 28, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 73, 150, 132, 116, 87, 87, 90, 82, 79, 79, 53, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 59, 189, + 14, 14, 14, 14, 79, 152, 132, 124, 104, 85, 78, 68, 33, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 132, 134, 128, 116, 109, 105, 109, 65, 18, 14, + 14, 14, 124, 169, 155, 147, 118, 111, 132, 72, 14, 14, 14, 20, 20, 15, + 14, 14, 14, 72, 170, 147, 172, 116, 93, 85, 68, 35, 14, 14, 14, 165, + 173, 169, 165, 137, 134, 130, 67, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 40, 114, 116, 130, 114, 105, 69, 111, 46, 14, 14, 14, 20, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 20, 14, 14, 15, 181, 167, 154, 137, + 154, 141, 120, 98, 47, 14, 14, 50, 145, 113, 97, 84, 82, 85, 95, 98, + 23, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 60, 122, 178, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 116, 159, 164, + 130, 141, 128, 104, 90, 81, 41, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 157, 141, 134, 98, 100, 105, 139, 42, 14, 15, 16, 15, 20, 14, + 14, 14, 14, 148, 161, 159, 170, 100, 79, 97, 67, 17, 14, 14, 14, 82, + 178, 136, 136, 128, 134, 116, 116, 93, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 132, 155, 120, 100, 105, 93, 85, 72, 43, 15, 14, 14, 14, 14, 14, + 152, 141, 141, 122, 132, 105, 93, 75, 43, 14, 14, 14, 14, 18, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 113, 150, 134, 105, 97, 90, 97, 93, 93, 102, + 107, 107, 100, 59, 52, 14, 14, 16, 14, 14, 14, 14, 105, 132, 98, 90, + 98, 109, 102, 105, 114, 120, 114, 100, 90, 75, 60, 14, 14, 14, 29, 14, + 14, 14, 14, 128, 155, 137, 116, 93, 79, 76, 81, 55, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 82, 167, 143, 14, 14, 14, 16, + 14, 175, 175, 164, 157, 126, 136, 116, 107, 45, 14, 14, 14, 14, 14, 14, + 14, 14, 107, 141, 120, 107, 93, 100, 113, 113, 92, 23, 14, 14, 14, 14, + 93, 197, 167, 161, 148, 150, 118, 111, 45, 14, 14, 14, 14, 14, 14, 14, + 14, 26, 152, 152, 124, 162, 120, 105, 100, 72, 45, 14, 14, 14, 87, 197, + 170, 143, 118, 118, 137, 95, 20, 14, 14, 14, 14, 14, 14, 14, 14, 22, + 165, 128, 155, 165, 136, 130, 102, 87, 15, 14, 14, 14, 14, 152, 148, 116, + 109, 93, 109, 105, 104, 68, 15, 14, 14, 15, 14, 14, 14, 14, 137, 134, + 137, 116, 105, 93, 89, 55, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 100, 147, 124, 102, 87, 78, 78, 78, 79, 75, 76, 97, 102, 107, 104, + 107, 109, 107, 107, 102, 120, 126, 113, 113, 145, 132, 100, 15, 14, 14, 14, + 118, 137, 126, 95, 76, 68, 71, 57, 15, 14, 14, 19, 15, 15, 14, 14, + 14, 17, 137, 109, 113, 98, 93, 92, 98, 59, 14, 14, 14, 14, 105, 150, + 141, 137, 116, 109, 107, 104, 32, 15, 14, 14, 14, 14, 14, 14, 27, 137, + 164, 147, 155, 95, 72, 85, 48, 15, 14, 14, 14, 147, 162, 134, 139, 132, + 118, 118, 104, 49, 14, 14, 14, 14, 14, 14, 14, 27, 105, 89, 107, 111, + 98, 90, 79, 81, 20, 14, 14, 27, 85, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 68, 165, 139, 134, 126, 132, 116, 109, 87, + 32, 14, 14, 24, 134, 100, 90, 76, 68, 81, 93, 102, 148, 126, 111, 109, + 113, 107, 107, 105, 109, 120, 116, 136, 170, 182, 154, 72, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 15, 14, 14, 14, 14, 14, 65, 159, 152, 132, 116, 102, 95, + 75, 50, 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 143, 126, + 124, 98, 95, 97, 126, 98, 39, 14, 14, 14, 14, 14, 14, 14, 39, 161, + 143, 164, 141, 78, 68, 79, 34, 14, 14, 14, 14, 150, 157, 114, 118, 93, + 116, 104, 105, 100, 19, 14, 14, 14, 14, 14, 14, 14, 87, 126, 122, 107, + 89, 93, 71, 89, 72, 19, 18, 14, 18, 14, 14, 45, 148, 107, 120, 95, + 109, 98, 81, 63, 18, 14, 14, 14, 17, 14, 18, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 14, 14, + 14, 14, 105, 141, 116, 95, 75, 76, 76, 72, 71, 82, 87, 92, 76, 49, + 24, 14, 15, 15, 14, 14, 14, 14, 97, 113, 79, 69, 82, 85, 82, 89, + 104, 109, 93, 92, 90, 57, 31, 14, 19, 14, 23, 14, 14, 14, 14, 93, + 167, 145, 118, 95, 82, 76, 95, 100, 87, 89, 98, 100, 100, 100, 105, 98, + 98, 105, 114, 122, 181, 202, 170, 39, 14, 14, 19, 14, 14, 154, 157, 145, + 128, 114, 111, 97, 124, 109, 92, 95, 102, 114, 126, 124, 116, 104, 137, 109, + 90, 76, 93, 111, 105, 98, 75, 14, 14, 14, 14, 14, 134, 148, 145, 143, + 126, 132, 120, 113, 82, 37, 57, 47, 59, 54, 52, 54, 109, 120, 165, 139, + 118, 130, 92, 89, 87, 54, 20, 14, 14, 14, 71, 192, 152, 120, 100, 100, + 104, 104, 49, 14, 14, 14, 14, 14, 14, 14, 34, 118, 143, 109, 126, 113, + 113, 116, 111, 46, 14, 14, 14, 14, 27, 137, 118, 90, 78, 76, 90, 90, + 97, 48, 14, 14, 14, 14, 14, 14, 14, 44, 120, 107, 114, 102, 95, 78, + 75, 42, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 109, 148, 124, + 93, 84, 71, 68, 71, 72, 73, 90, 111, 120, 124, 124, 132, 134, 139, 139, + 141, 139, 152, 143, 132, 139, 114, 69, 15, 14, 14, 14, 148, 126, 122, 87, + 64, 52, 65, 46, 14, 14, 14, 18, 20, 21, 14, 14, 14, 31, 130, 100, + 92, 78, 82, 78, 84, 52, 14, 14, 14, 14, 105, 148, 137, 130, 107, 100, + 87, 128, 93, 50, 14, 14, 14, 14, 14, 26, 130, 162, 170, 128, 97, 82, + 57, 75, 31, 14, 14, 14, 14, 116, 145, 107, 111, 120, 113, 116, 114, 111, + 47, 14, 14, 14, 14, 14, 52, 172, 134, 89, 111, 95, 72, 61, 126, 33, + 14, 14, 14, 72, 170, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 38, 68, 165, 141, 105, 109, 97, 113, 107, 105, 82, 23, 14, 14, 14, + 132, 100, 82, 72, 65, 72, 100, 109, 126, 118, 120, 139, 145, 139, 132, 137, + 141, 145, 137, 162, 147, 114, 104, 45, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 38, 157, 137, 130, 90, 79, 79, 63, 26, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 154, 130, 126, 97, 90, 92, + 92, 137, 107, 24, 14, 14, 14, 14, 14, 53, 159, 137, 162, 143, 85, 72, + 65, 55, 14, 14, 14, 14, 14, 178, 141, 97, 100, 76, 100, 90, 93, 92, + 124, 87, 92, 90, 93, 120, 136, 159, 139, 120, 98, 98, 85, 85, 50, 92, + 69, 14, 15, 14, 19, 14, 14, 82, 143, 95, 104, 78, 98, 89, 82, 65, + 14, 14, 14, 14, 18, 14, 21, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 18, 15, 14, 14, 14, 14, 105, 139, + 109, 85, 73, 69, 68, 64, 64, 75, 76, 76, 55, 43, 14, 14, 14, 14, + 14, 14, 14, 14, 87, 105, 72, 64, 76, 75, 75, 81, 95, 105, 85, 79, + 76, 46, 14, 14, 14, 21, 16, 18, 14, 14, 14, 64, 167, 145, 116, 87, + 87, 71, 76, 95, 107, 122, 136, 130, 124, 124, 124, 128, 128, 139, 148, 157, + 145, 130, 90, 14, 14, 14, 17, 14, 14, 126, 141, 132, 107, 107, 102, 89, + 87, 100, 118, 130, 139, 152, 152, 143, 107, 113, 109, 118, 113, 78, 87, 90, + 102, 90, 65, 14, 14, 14, 14, 14, 157, 114, 136, 124, 100, 104, 98, 93, + 114, 104, 148, 118, 143, 150, 152, 143, 116, 126, 97, 126, 122, 122, 82, 81, + 71, 37, 14, 14, 14, 14, 49, 182, 122, 98, 97, 93, 84, 102, 105, 67, + 14, 14, 14, 14, 14, 20, 111, 182, 116, 136, 116, 78, 89, 89, 95, 14, + 16, 14, 14, 14, 76, 128, 93, 78, 65, 65, 75, 78, 87, 40, 14, 14, + 14, 14, 14, 14, 14, 82, 122, 93, 113, 95, 90, 71, 72, 37, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 118, 159, 124, 92, 78, 71, 71, + 68, 71, 78, 87, 89, 97, 105, 104, 111, 111, 113, 105, 120, 98, 107, 130, + 105, 81, 76, 27, 14, 14, 14, 33, 152, 164, 92, 84, 68, 69, 48, 35, + 14, 14, 14, 20, 37, 14, 14, 14, 14, 100, 122, 97, 92, 85, 61, 97, + 73, 37, 15, 14, 14, 14, 31, 162, 122, 137, 100, 113, 82, 76, 79, 97, + 100, 95, 95, 104, 157, 155, 155, 154, 148, 107, 81, 53, 72, 23, 14, 14, + 14, 14, 16, 35, 130, 89, 89, 104, 107, 111, 100, 95, 120, 120, 102, 105, + 130, 172, 186, 164, 132, 132, 105, 67, 60, 82, 52, 14, 14, 14, 14, 134, + 170, 109, 87, 89, 107, 113, 111, 105, 104, 100, 89, 84, 134, 128, 114, 113, + 114, 102, 79, 72, 79, 118, 98, 37, 14, 14, 14, 14, 130, 93, 78, 61, + 89, 81, 87, 92, 111, 113, 113, 111, 107, 107, 104, 98, 111, 102, 128, 114, + 84, 105, 72, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 145, 152, 132, 128, 87, 67, 65, 32, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 75, 159, 120, 102, 105, 73, 89, 92, 98, 113, + 114, 98, 90, 92, 143, 147, 152, 150, 130, 95, 65, 45, 61, 21, 14, 14, + 14, 14, 14, 203, 126, 84, 76, 73, 71, 78, 78, 79, 84, 98, 105, 109, + 128, 128, 126, 124, 116, 105, 93, 85, 79, 73, 72, 65, 42, 14, 14, 15, + 18, 14, 14, 143, 134, 98, 95, 107, 82, 64, 68, 56, 14, 14, 14, 14, + 14, 15, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 20, 14, 14, 14, 14, 14, 102, 130, 104, 82, 68, 61, + 68, 75, 65, 63, 68, 81, 50, 15, 14, 14, 16, 14, 16, 14, 14, 14, + 89, 105, 71, 63, 72, 76, 81, 92, 97, 89, 85, 73, 65, 27, 14, 14, + 15, 18, 15, 14, 14, 14, 14, 25, 179, 150, 100, 92, 79, 79, 81, 85, + 95, 104, 116, 118, 109, 109, 105, 98, 105, 114, 116, 109, 95, 107, 42, 14, + 14, 14, 14, 14, 14, 136, 111, 134, 107, 93, 84, 79, 75, 90, 95, 95, + 100, 114, 104, 89, 93, 49, 116, 93, 73, 82, 90, 87, 90, 87, 60, 14, + 14, 14, 14, 42, 139, 100, 105, 98, 90, 87, 92, 95, 102, 105, 107, 116, + 120, 126, 122, 122, 113, 116, 118, 107, 98, 90, 78, 57, 57, 14, 14, 14, + 14, 14, 14, 179, 107, 81, 81, 79, 72, 78, 82, 92, 100, 95, 93, 100, + 137, 164, 172, 155, 124, 84, 71, 67, 82, 71, 35, 14, 14, 14, 14, 14, + 105, 130, 130, 76, 68, 67, 63, 85, 69, 14, 14, 14, 14, 14, 14, 14, + 14, 116, 97, 105, 111, 116, 75, 92, 79, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 113, 141, 92, 89, 78, 69, 65, 75, 75, 72, 64, + 71, 71, 78, 75, 78, 79, 76, 75, 75, 79, 85, 81, 71, 67, 67, 24, + 14, 15, 14, 61, 157, 154, 90, 78, 46, 43, 47, 19, 14, 14, 15, 20, + 15, 14, 14, 14, 14, 134, 114, 102, 75, 75, 55, 76, 61, 19, 14, 14, + 15, 14, 14, 126, 155, 126, 76, 75, 76, 69, 69, 76, 82, 95, 113, 128, + 154, 162, 152, 116, 93, 67, 64, 71, 31, 14, 14, 14, 14, 14, 14, 15, + 105, 87, 89, 73, 76, 89, 102, 98, 104, 114, 120, 124, 145, 164, 165, 161, + 126, 97, 78, 82, 95, 64, 27, 14, 14, 14, 14, 145, 159, 124, 100, 116, + 150, 162, 150, 145, 147, 136, 120, 113, 95, 98, 89, 90, 85, 79, 60, 73, + 78, 90, 59, 21, 14, 14, 14, 14, 72, 85, 81, 78, 81, 97, 105, 107, + 85, 82, 82, 78, 79, 78, 78, 72, 64, 67, 82, 75, 50, 69, 46, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 81, 143, 165, 128, + 98, 85, 71, 54, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 48, 155, 124, 84, 75, 72, 82, 79, 82, 93, 98, 100, 100, 124, + 132, 147, 143, 109, 81, 56, 57, 71, 21, 14, 14, 14, 14, 14, 14, 199, + 120, 81, 78, 67, 67, 67, 63, 60, 67, 81, 78, 85, 97, 93, 95, 100, + 104, 100, 97, 92, 82, 81, 61, 57, 54, 14, 14, 15, 16, 14, 14, 183, + 139, 102, 98, 100, 85, 75, 71, 44, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 16, 14, 14, 14, 104, 114, 100, 82, 64, 63, 71, 73, 64, 69, + 65, 61, 30, 14, 14, 14, 16, 14, 14, 14, 14, 14, 95, 107, 82, 75, + 79, 82, 85, 89, 84, 81, 60, 52, 45, 21, 14, 14, 15, 16, 15, 14, + 14, 14, 14, 14, 130, 143, 120, 84, 73, 71, 75, 81, 90, 98, 111, 113, + 93, 95, 98, 95, 92, 95, 81, 78, 49, 72, 30, 14, 14, 14, 14, 14, + 14, 118, 120, 114, 76, 69, 69, 68, 64, 75, 81, 82, 78, 78, 67, 42, + 29, 81, 124, 116, 79, 78, 104, 71, 75, 69, 24, 14, 14, 14, 14, 87, + 128, 98, 81, 78, 73, 72, 76, 76, 84, 89, 97, 97, 102, 104, 100, 98, + 98, 102, 97, 82, 79, 68, 65, 64, 22, 14, 14, 14, 14, 14, 14, 81, + 104, 72, 68, 68, 75, 79, 82, 75, 100, 104, 114, 118, 139, 148, 152, 132, + 79, 63, 60, 87, 69, 25, 14, 18, 19, 14, 14, 14, 120, 124, 87, 71, + 68, 64, 57, 69, 59, 14, 20, 16, 20, 19, 14, 14, 14, 126, 97, 95, + 107, 114, 67, 72, 46, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 84, 128, 105, 85, 78, 73, 75, 82, 93, 93, 78, 68, 71, 73, 68, + 69, 69, 68, 67, 69, 81, 73, 67, 40, 47, 46, 14, 14, 14, 14, 124, + 173, 154, 105, 82, 60, 45, 64, 14, 14, 14, 20, 14, 20, 18, 14, 14, + 14, 147, 114, 111, 89, 84, 75, 82, 64, 14, 14, 15, 15, 14, 14, 47, + 124, 128, 89, 64, 42, 49, 68, 75, 89, 92, 93, 100, 122, 120, 105, 100, + 85, 68, 49, 39, 14, 14, 14, 14, 14, 14, 14, 14, 26, 60, 82, 76, + 68, 71, 79, 76, 98, 111, 113, 113, 107, 114, 100, 97, 116, 93, 79, 90, + 64, 24, 14, 14, 14, 14, 23, 159, 147, 116, 100, 107, 122, 130, 118, 113, + 107, 100, 93, 82, 89, 89, 81, 68, 67, 63, 46, 42, 73, 57, 25, 14, + 14, 14, 14, 14, 42, 98, 84, 78, 48, 85, 98, 104, 82, 73, 73, 68, + 67, 68, 67, 63, 67, 73, 78, 63, 48, 48, 24, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 26, 148, 134, 136, 105, 81, 73, 64, 34, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 23, 15, 17, 73, + 109, 92, 82, 63, 55, 65, 78, 93, 97, 82, 68, 78, 102, 107, 102, 92, + 73, 54, 39, 33, 14, 14, 14, 14, 14, 14, 14, 183, 97, 65, 59, 55, + 57, 63, 63, 64, 68, 81, 69, 73, 73, 68, 57, 60, 105, 102, 90, 85, + 84, 71, 56, 54, 19, 14, 18, 14, 14, 14, 30, 179, 130, 102, 89, 89, + 89, 67, 61, 29, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 19, 14, + 14, 14, 107, 122, 107, 89, 79, 73, 82, 82, 79, 75, 72, 45, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 93, 124, 92, 67, 79, 87, 95, 95, + 89, 89, 69, 65, 23, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, + 82, 128, 136, 89, 81, 79, 79, 81, 87, 93, 98, 98, 78, 75, 82, 75, + 72, 78, 63, 43, 39, 44, 16, 14, 14, 14, 14, 14, 14, 87, 130, 107, + 85, 78, 78, 69, 69, 69, 72, 71, 69, 68, 47, 31, 14, 116, 126, 116, + 84, 75, 111, 68, 97, 92, 14, 14, 14, 14, 14, 114, 114, 85, 65, 61, + 63, 64, 69, 76, 76, 78, 82, 79, 82, 81, 79, 78, 78, 78, 81, 73, + 65, 60, 50, 43, 14, 14, 14, 14, 14, 14, 14, 14, 97, 81, 79, 72, + 59, 64, 72, 78, 84, 92, 97, 93, 97, 92, 89, 87, 64, 68, 64, 49, + 27, 14, 14, 14, 14, 14, 14, 37, 164, 128, 93, 78, 71, 73, 61, 64, + 46, 14, 14, 14, 14, 14, 14, 14, 52, 152, 116, 105, 98, 107, 79, 89, + 48, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 31, 95, 109, + 100, 85, 71, 67, 69, 72, 73, 69, 60, 60, 60, 59, 55, 59, 59, 52, + 43, 56, 48, 46, 46, 54, 38, 14, 14, 14, 14, 155, 159, 111, 78, 44, + 48, 38, 57, 14, 14, 14, 19, 14, 14, 14, 15, 14, 53, 175, 122, 76, + 52, 46, 48, 55, 55, 14, 14, 14, 14, 14, 14, 14, 44, 75, 92, 81, + 68, 56, 53, 47, 48, 47, 54, 64, 93, 87, 76, 79, 79, 52, 22, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 63, 89, 93, 92, 82, 67, + 60, 67, 69, 69, 72, 76, 69, 69, 97, 90, 64, 37, 18, 14, 14, 16, + 14, 14, 46, 152, 104, 85, 54, 52, 85, 93, 85, 82, 81, 78, 71, 67, + 57, 57, 56, 48, 48, 53, 49, 53, 47, 27, 14, 14, 14, 14, 14, 14, + 14, 55, 95, 90, 81, 97, 81, 73, 71, 67, 67, 59, 56, 57, 55, 50, + 54, 52, 46, 45, 63, 52, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 85, 134, 132, 85, 75, 68, 65, 44, 15, 14, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 29, 18, 14, 14, 44, 92, 85, 61, + 61, 57, 55, 52, 48, 48, 48, 63, 82, 84, 73, 72, 67, 41, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 120, 95, 68, 71, 61, 53, 50, 50, 50, + 45, 54, 52, 50, 55, 48, 38, 44, 109, 97, 92, 76, 68, 65, 68, 78, + 14, 14, 20, 14, 14, 20, 48, 165, 113, 93, 84, 78, 73, 72, 69, 31, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 19, 14, 16, 14, 14, 14, 93, 134, + 89, 76, 60, 61, 63, 65, 59, 53, 82, 41, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 93, 145, 105, 71, 61, 63, 72, 73, 69, 64, 56, 53, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 34, 84, 124, 97, + 73, 72, 72, 72, 75, 76, 81, 81, 69, 69, 65, 57, 54, 52, 45, 38, + 57, 31, 14, 14, 14, 14, 14, 14, 14, 33, 111, 102, 100, 75, 64, 46, + 64, 59, 52, 46, 47, 45, 30, 16, 14, 162, 128, 92, 67, 57, 69, 43, + 69, 75, 14, 14, 14, 14, 14, 155, 97, 72, 64, 59, 64, 73, 75, 68, + 55, 59, 60, 61, 63, 63, 60, 61, 68, 64, 63, 67, 78, 60, 31, 14, + 14, 14, 14, 14, 14, 14, 16, 14, 21, 43, 92, 92, 89, 68, 57, 57, + 50, 59, 65, 65, 75, 81, 81, 75, 61, 55, 30, 14, 14, 14, 16, 14, + 14, 14, 14, 65, 157, 109, 75, 56, 63, 60, 57, 65, 52, 14, 18, 18, + 14, 14, 14, 14, 84, 139, 93, 78, 65, 76, 63, 89, 59, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 26, 37, 72, 72, 71, 71, + 64, 64, 67, 67, 57, 59, 59, 56, 57, 60, 61, 61, 57, 64, 53, 63, + 63, 43, 24, 14, 14, 14, 14, 152, 141, 111, 85, 55, 69, 71, 84, 28, + 14, 14, 14, 15, 14, 14, 16, 14, 71, 167, 122, 76, 64, 61, 65, 76, + 76, 14, 14, 14, 19, 14, 14, 14, 16, 14, 23, 50, 55, 55, 54, 54, + 57, 61, 64, 67, 79, 73, 55, 35, 19, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 16, 14, 14, 14, 14, 29, 64, 87, 79, 68, 72, 68, 60, 57, + 63, 64, 54, 50, 43, 34, 15, 14, 14, 17, 17, 14, 14, 14, 48, 130, + 109, 98, 61, 54, 64, 64, 60, 56, 56, 53, 49, 44, 46, 49, 49, 52, + 60, 64, 55, 46, 18, 14, 14, 14, 15, 14, 14, 14, 14, 15, 46, 56, + 97, 89, 95, 89, 73, 68, 67, 60, 56, 56, 54, 53, 57, 64, 56, 55, + 63, 36, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 37, 130, + 111, 122, 64, 56, 67, 52, 23, 14, 14, 14, 19, 14, 16, 16, 15, 14, + 14, 14, 14, 14, 19, 27, 16, 14, 14, 16, 29, 44, 63, 67, 65, 64, + 57, 57, 50, 53, 59, 64, 49, 33, 18, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 37, 79, 79, 90, 78, 61, 54, 57, 59, 48, 60, 57, 60, + 64, 53, 39, 41, 109, 93, 72, 56, 52, 61, 76, 92, 50, 14, 14, 14, + 14, 14, 26, 155, 93, 85, 60, 60, 65, 81, 90, 48, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 20, 14, 14, 14, 14, 14, 44, 118, 92, 75, 65, 64, + 69, 75, 79, 81, 73, 31, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 60, 130, 118, 87, 76, 65, 67, 69, 72, 67, 57, 49, 14, 14, 14, 14, + 14, 14, 14, 14, 19, 14, 14, 14, 14, 24, 72, 79, 71, 72, 71, 71, + 69, 69, 71, 72, 79, 75, 71, 63, 60, 64, 63, 61, 44, 20, 14, 14, + 14, 15, 14, 14, 14, 14, 61, 78, 118, 82, 68, 57, 53, 57, 64, 69, + 68, 43, 18, 14, 14, 143, 116, 79, 61, 65, 55, 73, 85, 107, 31, 14, + 14, 14, 24, 148, 93, 71, 67, 64, 75, 71, 53, 36, 47, 50, 55, 57, + 55, 56, 59, 57, 57, 56, 56, 53, 49, 34, 15, 14, 14, 14, 14, 17, + 14, 14, 22, 14, 14, 14, 26, 52, 78, 87, 71, 52, 64, 61, 61, 55, + 64, 63, 53, 44, 39, 14, 14, 14, 14, 14, 14, 23, 14, 14, 14, 59, + 124, 109, 82, 59, 52, 52, 71, 72, 59, 14, 14, 14, 14, 14, 14, 14, + 95, 122, 98, 71, 78, 79, 75, 113, 98, 31, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 31, 38, 44, 40, 45, 45, + 40, 41, 43, 39, 41, 47, 47, 46, 52, 57, 47, 55, 38, 16, 14, 14, + 14, 14, 14, 65, 61, 57, 59, 49, 52, 60, 71, 50, 14, 18, 14, 14, + 18, 19, 14, 14, 14, 69, 52, 63, 59, 61, 53, 61, 65, 21, 14, 14, + 14, 15, 19, 14, 14, 14, 14, 14, 14, 14, 28, 46, 60, 64, 54, 42, + 35, 24, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 16, 14, 14, + 14, 14, 14, 14, 14, 14, 23, 36, 63, 54, 43, 39, 35, 25, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 22, 56, 56, 63, 57, 52, + 50, 47, 46, 44, 42, 43, 38, 35, 35, 39, 43, 42, 43, 35, 20, 14, + 14, 14, 14, 15, 19, 18, 16, 14, 14, 14, 14, 14, 27, 28, 53, 67, + 49, 48, 49, 42, 40, 44, 43, 41, 41, 57, 59, 44, 30, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 116, 128, 105, 82, 63, 33, + 60, 31, 14, 14, 14, 15, 20, 15, 18, 18, 16, 14, 14, 14, 14, 14, + 19, 20, 16, 14, 14, 14, 14, 14, 14, 26, 48, 60, 61, 50, 32, 22, + 29, 23, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 16, 14, 14, + 14, 23, 43, 50, 47, 47, 45, 45, 46, 53, 47, 40, 37, 24, 15, 14, + 69, 67, 55, 49, 49, 54, 68, 82, 49, 16, 14, 15, 14, 14, 14, 45, + 67, 63, 49, 57, 63, 78, 100, 72, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 15, 19, 14, 14, 14, 42, 59, 48, 42, 47, 50, 56, 64, 69, + 42, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 39, 52, 63, + 56, 46, 40, 45, 52, 54, 46, 40, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 15, 21, 36, 36, 39, 39, 39, 41, 43, 46, + 46, 47, 48, 44, 44, 41, 39, 39, 14, 14, 14, 14, 14, 14, 15, 16, + 14, 14, 18, 33, 76, 53, 48, 52, 38, 40, 41, 44, 43, 30, 14, 14, + 14, 43, 52, 35, 40, 46, 30, 63, 64, 81, 50, 14, 14, 14, 63, 132, + 90, 76, 73, 76, 73, 59, 31, 15, 19, 21, 24, 26, 27, 27, 28, 24, + 21, 27, 26, 18, 14, 14, 14, 14, 14, 14, 14, 20, 14, 14, 18, 14, + 16, 14, 14, 14, 14, 24, 38, 45, 47, 43, 40, 35, 32, 24, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 44, 57, 54, 45, + 59, 59, 84, 78, 72, 24, 18, 14, 14, 14, 14, 14, 48, 63, 65, 55, + 52, 47, 50, 68, 82, 46, 18, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 19, 19, 14, 14, 18, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 19, 14, 18, 14, 18, 14, 14, 14, 16, + 14, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 24, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 15, 14, 14, 14, 14, + 14, 16, 16, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 18, 21, 18, + 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 15, 18, + 20, 20, 19, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 19, 16, 15, 16, 18, 27, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 47, 134, 109, 90, 60, 37, 26, 40, 16, 14, 14, + 14, 14, 15, 16, 18, 18, 16, 14, 14, 14, 14, 14, 31, 20, 15, 18, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 18, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 17, 15, 22, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 18, 14, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 20, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 18, 19, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 22, 16, 19, 20, 20, 21, 16, 15, 14, + 21, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 105, 126, 90, 78, 75, 79, + 68, 55, 24, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 23, 14, 15, 16, 15, 15, 14, 14, 15, 18, 20, 26, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 25, 14, + 14, 17, 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 19, 14, 14, 21, 14, 19, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 15, 14, 14, 14, 16, 20, 14, 18, 14, 18, 14, 16, 14, + 14, 19, 14, 14, 14, 14, 14, 14, 18, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 15, 14, 15, 20, 21, 15, 14, 14, 16, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 17, 15, 16, 14, 14, 14, 18, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 21, 21, 14, 14, 15, 15, 18, 19, 19, 16, + 14, 19, 14, 14, 14, 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 14, 14, 14, 15, 20, 21, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 24, 136, 113, 109, 79, 45, 19, 31, 27, 14, 14, 14, 16, 14, 15, 21, + 18, 18, 15, 14, 14, 14, 14, 14, 16, 16, 16, 14, 14, 14, 14, 14, + 14, 15, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 15, 14, 16, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, 16, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 17, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 16, 14, 14, 14, 20, 14, 14, 14, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 14, 14, 18, 16, 20, 21, 19, 18, 34, 15, 14, 19, 14, 14, 15, + 14, 14, 14, 14, 14, 16, 16, 16, 17, 14, 14, 14, 14, 14, 16, 14, + 15, 14, 14, 14, 14, 14, 100, 98, 78, 71, 78, 68, 64, 50, 25, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 16, 14, + 18, 16, 16, 14, 14, 20, 14, 14, 18, 19, 19, 18, 19, 18, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 18, 16, 14, 14, 14, 14, 14, 14, 17, + 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 16, + 16, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 15, 14, 15, 15, 14, 15, 14, 14, 14, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 18, 19, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 67, 97, 100, 82, + 63, 38, 19, 29, 14, 14, 14, 14, 14, 14, 14, 18, 16, 16, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, + 15, 14, 14, 14, 14, 14, 14, 15, 17, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 14, + 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 17, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 17, 16, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 18, 18, 14, 14, 14, 14, 14, 14, 14, 16, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 14, 19, 19, 15, 14, 19, 14, 14, + 14, 23, 105, 81, 73, 68, 73, 42, 48, 46, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 18, 15, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 15, 15, 14, 14, 14, 14, 15, 18, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 75, 92, 85, 55, 46, 46, 31, 21, + 14, 14, 14, 14, 14, 14, 14, 16, 16, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 16, 18, 14, 14, 16, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16, 14, 14, 14, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 18, 17, 16, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 18, 20, 20, 18, 16, 14, 14, 14, 14, 36, 90, 78, + 71, 65, 63, 39, 40, 31, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 16, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 15, 18, 19, 16, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 19, 18, 18, 16, 14, 14, 14, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 18, 18, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 16, 16, 15, 15, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 15, 16, 15, 16, 14, 14, 14, 15, 14, + 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 18, 18, 18, 18, 14, 14, 14, 14, + 14, 14, 15, 15, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 55, 95, 92, 79, 43, 29, 31, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 16, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 15, 14, 16, + 18, 18, 16, 14, 15, 15, 15, 16, 16, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 17, 14, 14, 14, 14, 14, 14, 14, 15, 14, 15, 15, 14, + 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 14, 15, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 15, 15, 14, 14, 14, 15, 15, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 17, 19, 16, 14, 14, 14, 14, 14, 14, 19, 18, + 19, 21, 21, 16, 18, 14, 14, 14, 14, 72, 95, 84, 68, 56, 47, 34, + 33, 21, 14, 14, 14, 14, 14, 15, 18, 18, 16, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 16, 18, 15, 14, 14, 14, 15, 15, 18, 15, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 15, 15, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 28, 104, + 65, 44, 40, 27, 21, 27, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 18, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 16, 18, 16, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, + 15, 14, 14, 14, 14, 78, 69, 68, 41, 32, 27, 27, 31, 23, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 16, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 15, 16, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 15, 14, + 14, 14, 14, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, + 15, 16, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 18, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 15, 16, 19, 14, 14, 14, 15, 16, 18, 18, 16, 16, 15, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 20, 18, 14, 14, + 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 27, 84, 57, 31, 27, 28, + 27, 32, 37, 27, 26, 22, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 16, 18, 18, 16, 16, 16, 15, 14, 14, 14, 14, 14, + 14, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 19, 16, 15, 16, 16, + 16, 16, 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, + 16, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, + 15, 16, 19, 18, 14, 14, 14, 14, 15, 18, 17, 18, 14, 15, 15, 18, + 19, 19, 18, 15, 14, 14, 14, 14, 14, 14, 18, 20, 14, 14, 14, 14, + 14, 56, 47, 60, 27, 27, 21, 29, 46, 43, 34, 38, 14, 14, 14, 14, + 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 15, 16, 16, 18, 16, 16, 15, 15, 14, 18, 15, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 15, 15, 15, 14, 15, 15, 15, 15, 15, 14, 15, 14, 14, 14, 14, 14, + 14, 14, 14, 14 }; +/* Define image 'dynamite' of size 100x100x1x3 and type 'const unsigned char' */ +const unsigned char data_dynamite[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 208, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 85, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 177, 61, 23, 23, 23, 23, 23, 23, 23, 100, 139, + 61, 0, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 77, 0, 21, 127, 127, 124, 124, 124, + 124, 0, 0, 0, 15, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 30, 15, 113, 234, 234, + 231, 229, 229, 229, 229, 41, 34, 15, 224, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 21, + 197, 234, 234, 234, 230, 229, 229, 229, 229, 208, 0, 167, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 46, + 46, 46, 0, 173, 239, 234, 234, 232, 229, 229, 229, 229, 229, 62, 30, 253, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 216, 61, 0, 0, 0, 0, 0, 94, 238, 234, 234, 230, 229, 229, 229, 229, + 124, 0, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 115, 0, 0, 38, + 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 115, 7, 21, 94, 130, 72, 0, 86, 234, 234, 234, 230, + 229, 229, 215, 138, 0, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 129, + 13, 74, 109, 26, 0, 92, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 130, 239, 239, 159, 0, 28, 207, + 234, 170, 85, 84, 83, 83, 27, 0, 85, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 199, 0, 91, 216, 216, 196, 91, 19, 23, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 43, 65, 65, + 0, 79, 217, 235, 234, 21, 46, 69, 69, 69, 69, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 193, 15, 26, 202, 216, 216, 216, 216, 157, 54, 15, + 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 123, 46, 46, 46, 46, + 61, 61, 0, 0, 65, 224, 239, 237, 170, 0, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 100, 7, 32, 202, 216, 216, 216, 216, + 216, 216, 210, 65, 0, 23, 139, 255, 255, 255, 255, 255, 255, 139, 7, 0, + 77, 115, 115, 115, 208, 247, 154, 0, 7, 21, 21, 57, 85, 77, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 115, 6, 85, 216, 218, + 218, 218, 216, 216, 216, 216, 216, 216, 150, 52, 6, 38, 231, 255, 255, 239, + 38, 0, 100, 255, 255, 255, 255, 255, 255, 255, 255, 216, 139, 139, 139, 23, + 23, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 0, + 130, 216, 225, 244, 244, 244, 225, 216, 216, 216, 216, 216, 216, 216, 163, 13, + 0, 170, 239, 30, 15, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 146, 0, 124, 216, 221, 244, 244, 244, 244, 244, 218, 216, 216, 216, 216, + 216, 216, 216, 176, 72, 0, 46, 0, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 123, 0, 85, 216, 222, 242, 244, 244, 244, 244, 244, 232, + 216, 216, 216, 216, 216, 216, 216, 216, 202, 111, 0, 38, 224, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 138, 0, 98, 209, 224, 243, 244, 244, 244, + 244, 244, 244, 234, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 163, 0, + 54, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 35, 111, 216, 217, 239, + 244, 244, 244, 244, 244, 244, 244, 234, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 183, 13, 0, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 100, 13, + 189, 219, 240, 244, 244, 244, 244, 244, 244, 244, 244, 234, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 214, 178, 11, 69, 239, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 231, 46, 0, 144, 221, 241, 244, 244, 244, 244, 244, 244, 244, 244, 244, 225, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 206, 193, 128, 0, 146, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 69, 26, 144, 219, 238, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 237, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 194, + 193, 193, 76, 15, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 139, 0, 170, 220, 238, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 239, 221, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 212, 193, 193, 193, 187, 29, 54, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 0, 117, 221, 239, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 238, 220, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 204, 193, 193, 193, 193, 163, 0, 162, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 30, 58, + 216, 237, 244, 244, 244, 244, 244, 244, 244, 244, 244, 236, 219, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 200, 193, 193, 193, 193, 193, + 52, 30, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 226, 21, 19, 196, 227, 244, 244, 244, 244, 244, 244, 244, 244, 244, 241, 222, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 200, 193, + 193, 193, 193, 193, 175, 0, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 252, 65, 26, 193, 238, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 240, 223, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 200, 193, 193, 193, 193, 193, 193, 76, 53, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 96, 0, 170, 242, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 239, 221, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 200, 193, 193, 193, 193, 193, 193, 157, 0, 177, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 76, 6, 117, 231, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 243, 224, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 196, 193, 193, 193, 193, 193, + 193, 193, 70, 76, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 30, 13, 130, + 227, 244, 244, 244, 244, 244, 244, 244, 244, 244, 242, 222, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 209, 193, 193, + 193, 193, 193, 193, 193, 193, 140, 0, 238, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 169, + 23, 39, 176, 221, 241, 244, 244, 244, 244, 244, 244, 244, 244, 244, 221, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 200, 193, 193, 193, 193, 193, 193, 193, 193, 193, 17, 170, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 150, 15, 52, 202, 222, 242, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 225, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 200, 193, 193, 193, 193, 193, 193, 193, 193, 193, 64, + 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 132, 7, 65, 209, 216, 238, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 235, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 197, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 122, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 154, 0, 85, 216, 216, 231, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 232, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 215, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 128, 85, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 170, 0, 72, 216, 217, + 232, 244, 244, 244, 244, 244, 244, 244, 244, 244, 232, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 208, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 87, 85, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 157, 0, + 72, 216, 218, 234, 244, 244, 244, 244, 244, 244, 244, 244, 244, 234, 218, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 202, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 64, + 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 250, 141, 13, 85, 202, 219, 232, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 232, 217, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 197, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 40, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 203, 6, 65, 209, 220, 238, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 239, 221, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 209, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 163, 0, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 187, 0, 45, 216, 216, 231, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 243, 220, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 215, 196, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 96, 46, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 0, 58, 189, 216, 225, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 231, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 214, 202, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 205, 29, 139, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 46, 52, + 196, 216, 227, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 232, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 206, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 152, 0, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 69, 26, 157, 216, 230, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 229, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 209, 194, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 206, 14, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 216, 54, 0, 170, 216, 220, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 227, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 194, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 115, 0, 247, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 239, 38, 13, 183, 216, 216, 234, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 232, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 199, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 192, 35, 131, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 30, 13, 189, 216, 216, 216, + 234, 244, 244, 244, 244, 244, 244, 244, 244, 234, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 206, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 79, + 15, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 23, 19, 176, + 216, 216, 216, 216, 234, 244, 244, 244, 244, 244, 244, 244, 238, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 213, 195, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 129, 0, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, + 61, 26, 189, 216, 216, 216, 216, 216, 234, 244, 244, 244, 244, 244, 244, 237, + 217, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 213, 199, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 41, 100, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 192, 13, 0, 170, 216, 216, 216, 216, 216, 216, 221, 244, 244, 244, + 244, 244, 235, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 201, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 164, 0, 208, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 247, 142, 32, 0, 65, 98, 98, 98, 130, 196, 216, 216, + 216, 232, 244, 244, 244, 232, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 210, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 187, 29, 54, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 61, 0, 39, 39, 39, 39, 39, 26, + 0, 0, 78, 144, 202, 216, 226, 226, 226, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 213, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 76, 15, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 0, 72, 216, 216, + 216, 216, 216, 196, 157, 91, 39, 0, 39, 144, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 211, 195, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 128, 0, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 0, + 85, 202, 216, 216, 216, 216, 216, 216, 216, 216, 202, 144, 52, 13, 72, 189, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 210, 194, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 169, 40, 100, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 7, 32, 209, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 209, 98, 0, 45, 205, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 212, 197, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 40, 0, 208, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 197, 0, 183, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 199, 163, 5, 58, 184, 214, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 211, 196, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 152, 0, 216, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 45, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 209, 193, 193, 116, 11, 23, 187, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 209, 198, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 181, 23, 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 124, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 200, 193, 193, 193, + 157, 17, 64, 199, 199, 211, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 213, 206, 195, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 64, 23, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 0, 170, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 200, 193, 193, 193, 193, 140, 0, 116, 193, 194, 210, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 206, 195, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 116, 0, 185, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 32, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 200, 193, 193, 193, 193, 193, 87, 5, 105, 193, 193, 205, + 216, 216, 216, 216, 216, 216, 216, 216, 209, 198, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 163, 5, 115, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 85, 75, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 201, 193, 193, 193, 193, 193, 193, 76, + 0, 152, 193, 193, 199, 213, 216, 216, 213, 213, 203, 196, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 187, 29, 54, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 80, 217, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 209, 193, 193, 193, + 193, 193, 193, 193, 52, 52, 193, 193, 193, 193, 201, 201, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 76, 15, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 170, 22, 218, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 213, 193, 193, 193, 193, 193, 193, 193, 146, 0, 128, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 128, 0, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 239, 0, 157, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 208, 193, 193, 193, 193, 193, 193, 193, 193, 76, 11, 169, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 11, 100, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 78, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 201, 193, 193, 193, 193, 193, 193, 193, + 193, 187, 29, 99, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 46, 0, 247, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, 32, 216, + 216, 216, 213, 213, 213, 216, 216, 216, 216, 216, 216, 210, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 105, 0, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 187, 58, 7, + 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 224, 0, 189, 216, 208, 193, 193, 193, 201, 211, 216, 216, 216, 208, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 0, 152, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 116, 15, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 23, 19, 216, 193, 193, 193, 193, 193, 193, 199, + 202, 199, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 46, + 64, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 128, 17, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 0, 138, 196, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 140, 0, 140, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 169, 11, 61, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, + 7, 192, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 58, 99, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 163, 40, 38, 247, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 54, 38, 203, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 99, 32, 199, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 29, 15, + 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 224, 15, 92, 200, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 169, 0, 181, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 140, 0, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 0, 151, + 194, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 17, 128, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 175, 17, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 100, 53, 218, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 64, 76, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 169, 23, 30, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 208, 0, 174, 202, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 122, 5, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 40, 38, 200, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 0, 226, 194, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 0, 157, 193, 193, 193, 193, 193, 193, 193, 193, 193, 187, 58, 7, + 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 15, 30, 222, 204, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 40, 116, 193, 193, 193, 193, 193, 193, 193, 193, + 181, 46, 15, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 208, 0, 96, 216, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 81, 64, 193, 193, 193, 193, + 193, 193, 193, 175, 35, 23, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 0, 130, 195, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 128, 64, + 193, 193, 193, 193, 193, 193, 169, 23, 30, 185, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 6, + 167, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 128, 64, 193, 193, 193, 193, 193, 163, 40, 38, 200, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 249, 45, 29, 152, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 128, 64, 193, 193, 193, 193, 187, 58, 15, 216, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 208, 26, 23, 181, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 128, 64, 193, 193, 193, 181, + 76, 0, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 19, 64, 175, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 128, 64, + 193, 193, 193, 64, 0, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 246, 161, 0, 52, 169, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 128, 64, 193, 193, 116, 0, 170, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 240, 163, 0, 40, 163, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 70, 64, 193, 134, 5, 115, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 185, 13, 0, 116, 187, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 58, 144, 170, 0, 61, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, + 194, 72, 0, 46, 157, 193, 193, 193, 193, 193, 193, 193, 193, 181, 0, 98, + 26, 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 223, 124, 19, 0, 81, 157, 193, 193, 193, 193, 193, + 193, 111, 0, 19, 42, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 231, 189, 111, 0, 11, 93, + 169, 193, 193, 193, 169, 11, 0, 30, 231, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 245, + 227, 196, 65, 0, 11, 46, 105, 17, 11, 0, 38, 239, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 237, 219, 186, 121, 23, 23, 55, 133, 139, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 208, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 85, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 177, 61, 23, 23, 23, 23, 23, 23, 23, 100, 139, + 61, 0, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 77, 0, 14, 85, 82, 30, 30, 30, + 30, 0, 0, 0, 15, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 30, 15, 75, 156, 156, + 101, 56, 56, 56, 56, 10, 8, 15, 224, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 21, + 194, 156, 156, 156, 80, 56, 56, 56, 56, 50, 0, 151, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 46, + 46, 46, 0, 170, 235, 165, 156, 116, 56, 56, 56, 56, 56, 15, 30, 242, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 216, 61, 0, 0, 0, 0, 0, 92, 223, 158, 156, 89, 56, 56, 56, 56, + 30, 0, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 115, 0, 0, 38, + 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 115, 7, 21, 92, 128, 71, 0, 83, 167, 156, 156, 92, + 56, 56, 52, 33, 0, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 91, + 3, 33, 52, 7, 0, 92, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 128, 235, 235, 156, 0, 28, 163, + 156, 113, 56, 44, 20, 20, 6, 0, 85, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 160, 0, 23, 56, 56, 51, 23, 5, 23, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 42, 64, 64, + 0, 78, 213, 182, 156, 14, 46, 69, 69, 69, 69, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 193, 15, 6, 52, 56, 56, 56, 56, 42, 25, 15, + 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 123, 46, 46, 46, 46, + 61, 61, 0, 0, 64, 220, 235, 184, 113, 0, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 100, 7, 8, 52, 56, 56, 56, 56, + 56, 56, 61, 16, 0, 23, 139, 255, 255, 255, 255, 255, 255, 139, 7, 0, + 77, 115, 115, 115, 208, 247, 154, 0, 7, 21, 21, 40, 56, 77, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 115, 1, 22, 56, 68, + 68, 68, 56, 56, 56, 56, 56, 56, 39, 13, 1, 38, 231, 255, 255, 239, + 38, 0, 100, 255, 255, 255, 255, 255, 255, 255, 255, 216, 139, 139, 139, 23, + 23, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 0, + 33, 56, 100, 188, 188, 188, 100, 56, 56, 56, 56, 56, 56, 56, 42, 3, + 0, 170, 239, 30, 15, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 146, 0, 32, 56, 80, 188, 188, 188, 188, 188, 68, 56, 56, 56, 56, + 56, 56, 56, 45, 18, 0, 46, 0, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 123, 0, 22, 56, 88, 180, 188, 188, 188, 188, 188, 136, + 56, 56, 56, 56, 56, 56, 56, 56, 52, 28, 0, 38, 224, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 133, 0, 25, 54, 96, 184, 188, 188, 188, + 188, 188, 188, 144, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 42, 0, + 54, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 20, 28, 56, 64, 168, + 188, 188, 188, 188, 188, 188, 188, 144, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 47, 3, 0, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 98, 3, + 49, 72, 172, 188, 188, 188, 188, 188, 188, 188, 188, 144, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 54, 36, 1, 69, 239, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 231, 46, 0, 37, 80, 176, 188, 188, 188, 188, 188, 188, 188, 188, 188, 100, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 44, 29, 19, 0, 146, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 69, 6, 37, 72, 160, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 156, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 30, + 29, 29, 11, 15, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 139, 0, 44, 76, 160, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 168, 80, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 51, 29, 29, 29, 28, 4, 54, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 0, 30, 80, 168, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 160, 76, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 42, 29, 29, 29, 29, 24, 0, 162, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 30, 15, + 56, 156, 188, 188, 188, 188, 188, 188, 188, 188, 188, 152, 72, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, + 7, 30, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 205, 13, 5, 50, 112, 188, 188, 188, 188, 188, 188, 188, 188, 188, 176, 88, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, + 29, 29, 29, 29, 26, 0, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 242, 49, 6, 65, 164, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 172, 92, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 38, 29, 29, 29, 29, 29, 29, 11, 52, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 250, 79, 0, 44, 180, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 168, 84, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, 29, 23, 0, 176, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 70, 1, 30, 128, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 184, 96, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 33, 29, 29, 29, 29, 29, + 29, 29, 10, 75, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 30, 3, 33, + 112, 188, 188, 188, 188, 188, 188, 188, 188, 188, 180, 88, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 48, 29, 29, + 29, 29, 29, 29, 29, 29, 21, 0, 232, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 169, + 23, 10, 45, 80, 176, 188, 188, 188, 188, 188, 188, 188, 188, 188, 80, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 38, 29, 29, 29, 29, 29, 29, 29, 29, 29, 2, 170, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 246, 134, 15, 13, 52, 88, 180, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 100, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, 29, 29, 29, 29, 9, + 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 106, 4, 16, 54, 56, 164, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 148, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 33, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 18, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 154, 0, 22, 56, 60, 128, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 136, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 55, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 19, 85, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 170, 0, 18, 56, 64, + 136, 188, 188, 188, 188, 188, 188, 188, 188, 188, 132, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 47, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 13, 85, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 103, 0, + 18, 56, 68, 144, 188, 188, 188, 188, 188, 188, 188, 188, 188, 144, 68, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 40, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 9, + 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 88, 3, 22, 52, 72, 132, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 136, 64, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 34, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 6, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 150, 1, 16, 54, 76, 160, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 168, 80, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 47, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 24, 0, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 163, 0, 11, 56, 56, 128, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 184, 76, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 55, 33, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 26, 46, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 0, 15, 49, 56, 100, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 128, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 54, 39, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 75, 24, 139, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 46, 13, + 50, 56, 112, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 132, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 44, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 30, 106, 0, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 69, 6, 40, 56, 124, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 120, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 48, 30, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 77, 12, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 216, 54, 0, 44, 56, 76, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 108, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 30, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 52, 0, 247, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 239, 38, 3, 47, 56, 56, 144, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 136, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 37, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 46, 26, 131, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 30, 3, 49, 56, 56, 56, + 144, 188, 188, 188, 188, 188, 188, 188, 188, 144, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 44, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 24, + 15, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 23, 5, 45, + 56, 56, 56, 56, 144, 188, 188, 188, 188, 188, 188, 188, 164, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 53, 31, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 22, 0, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, + 27, 6, 49, 56, 56, 56, 56, 56, 144, 188, 188, 188, 188, 188, 188, 156, + 64, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 52, 36, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 9, 100, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 95, 3, 0, 44, 56, 56, 56, 56, 56, 56, 84, 188, 188, 188, + 188, 188, 148, 60, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 27, 0, 208, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 247, 94, 8, 0, 16, 25, 25, 25, 33, 50, 56, 56, + 56, 136, 188, 188, 188, 136, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 49, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 4, 54, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 61, 0, 10, 10, 10, 10, 10, 6, + 0, 0, 20, 37, 52, 56, 104, 104, 104, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 52, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 11, 15, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 0, 18, 56, 56, + 56, 56, 56, 50, 40, 23, 10, 0, 10, 37, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 51, 31, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 19, 0, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 0, + 22, 52, 56, 56, 56, 56, 56, 56, 56, 56, 52, 37, 13, 3, 18, 49, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 49, 30, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 25, 6, 100, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 7, 8, 54, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 54, 25, 0, 11, 43, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 51, 33, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 6, 0, 208, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 152, 0, 47, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 37, 24, 0, 8, 31, 54, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 51, 33, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 22, 0, 216, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 11, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 48, 29, 29, 17, 1, 3, 34, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 48, 35, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 27, 3, 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 32, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, + 23, 2, 9, 36, 36, 51, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 53, 44, 31, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 9, 23, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 0, 44, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 38, 29, 29, 29, 29, 21, 0, 17, 29, 30, 49, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 45, 32, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 17, 0, 185, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 9, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, 13, 0, 15, 29, 29, 43, + 56, 56, 56, 56, 56, 56, 56, 56, 47, 35, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 24, 0, 115, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 85, 33, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, 29, 11, + 0, 22, 29, 29, 37, 53, 56, 56, 53, 53, 41, 33, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 4, 53, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 62, 61, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 48, 29, 29, 29, + 29, 29, 29, 29, 7, 7, 29, 29, 29, 29, 38, 38, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 11, 14, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 170, 20, 67, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 53, 29, 29, 29, 29, 29, 29, 29, 21, 0, 19, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 19, 0, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 239, 0, 43, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 47, 29, 29, 29, 29, 29, 29, 29, 29, 11, 1, 25, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 1, 100, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 20, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, 29, 29, + 29, 28, 4, 14, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 7, 0, 247, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 8, 56, + 56, 56, 53, 53, 53, 56, 56, 56, 56, 56, 56, 49, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 15, 0, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 8, 7, + 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 224, 0, 49, 56, 47, 29, 29, 29, 38, 51, 56, 56, 56, 47, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 0, 22, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 17, 15, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 23, 5, 69, 29, 29, 29, 29, 29, 29, 36, + 40, 36, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 7, + 9, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 19, 2, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 0, 91, 40, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 21, 0, 21, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 25, 1, 61, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, + 7, 128, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 8, 14, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 24, 6, 38, 247, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 54, 36, 88, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 14, 8, 37, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 4, 15, + 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 224, 15, 72, 58, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 25, 0, 27, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 21, 0, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 0, 103, + 34, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 2, 19, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 26, 2, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 100, 51, 121, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 9, 11, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 25, 3, 30, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 208, 0, 166, 64, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 0, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 6, 38, 200, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 0, 191, 32, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 0, 23, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 8, 7, + 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 15, 30, 108, 42, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 6, 17, 29, 29, 29, 29, 29, 29, 29, 29, + 27, 7, 15, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 208, 0, 49, 56, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 12, 9, 29, 29, 29, 29, + 29, 29, 29, 26, 5, 23, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 0, 33, 32, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 19, 9, + 29, 29, 29, 29, 29, 29, 25, 3, 30, 185, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 1, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 19, 9, 29, 29, 29, 29, 29, 24, 6, 38, 200, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 224, 11, 4, 22, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 19, 9, 29, 29, 29, 29, 28, 8, 15, 216, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 145, 6, 3, 27, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 19, 9, 29, 29, 29, 27, + 11, 0, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 5, 9, 26, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 19, 9, + 29, 29, 29, 9, 0, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 212, 64, 0, 7, 25, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 19, 9, 29, 29, 17, 0, 170, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 42, 0, 6, 24, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 10, 9, 29, 20, 0, 115, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 59, 3, 0, 17, 28, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 8, 37, 44, 0, 61, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 73, 18, 0, 7, 23, 29, 29, 29, 29, 29, 29, 29, 29, 27, 0, 25, + 6, 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 236, 92, 32, 5, 0, 12, 23, 29, 29, 29, 29, 29, + 29, 16, 0, 5, 28, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 134, 49, 28, 0, 1, 14, + 25, 29, 29, 29, 25, 1, 0, 30, 197, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 206, + 116, 50, 16, 0, 1, 7, 15, 2, 1, 0, 38, 239, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 164, 74, 65, 48, 23, 23, 31, 108, 139, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 208, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 85, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 177, 61, 23, 23, 23, 23, 23, 23, 23, 100, 139, + 61, 0, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 77, 0, 1, 6, 6, 7, 7, 7, + 7, 0, 0, 0, 15, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 30, 15, 5, 11, 11, + 12, 13, 13, 13, 13, 2, 1, 15, 224, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 0, + 29, 11, 11, 11, 12, 13, 13, 13, 13, 11, 0, 148, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 46, + 46, 46, 0, 6, 9, 10, 11, 11, 13, 13, 13, 13, 13, 3, 30, 240, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 216, 61, 0, 0, 0, 0, 0, 3, 9, 10, 11, 12, 13, 13, 13, 13, + 7, 0, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 115, 0, 0, 38, + 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 115, 0, 0, 3, 4, 2, 0, 3, 10, 11, 11, 12, + 13, 13, 12, 7, 0, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 91, + 3, 33, 52, 7, 0, 92, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 4, 9, 9, 6, 0, 1, 9, + 11, 8, 4, 4, 4, 4, 1, 0, 85, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 160, 0, 23, 56, 56, 51, 23, 5, 23, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 2, 2, + 0, 3, 8, 10, 11, 1, 46, 69, 69, 69, 69, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 193, 15, 6, 52, 56, 56, 56, 56, 42, 25, 15, + 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 123, 46, 46, 46, 46, + 61, 61, 0, 0, 2, 8, 9, 40, 8, 0, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 100, 7, 8, 52, 56, 56, 56, 56, + 56, 56, 61, 16, 0, 23, 139, 255, 255, 255, 255, 255, 255, 139, 7, 0, + 77, 115, 115, 115, 208, 247, 154, 0, 0, 0, 0, 10, 4, 77, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 115, 1, 22, 56, 68, + 68, 68, 56, 56, 56, 56, 56, 56, 39, 13, 1, 38, 231, 255, 255, 239, + 38, 0, 100, 255, 255, 255, 255, 255, 255, 255, 255, 216, 139, 139, 139, 23, + 23, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 0, + 33, 56, 100, 188, 188, 188, 100, 56, 56, 56, 56, 56, 56, 56, 42, 3, + 0, 170, 239, 30, 15, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 146, 0, 32, 56, 80, 188, 188, 188, 188, 188, 68, 56, 56, 56, 56, + 56, 56, 56, 45, 18, 0, 46, 0, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 123, 0, 22, 56, 88, 180, 188, 188, 188, 188, 188, 136, + 56, 56, 56, 56, 56, 56, 56, 56, 52, 28, 0, 38, 224, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 133, 0, 25, 54, 96, 184, 188, 188, 188, + 188, 188, 188, 144, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 42, 0, + 54, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 20, 28, 56, 64, 168, + 188, 188, 188, 188, 188, 188, 188, 144, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 47, 3, 0, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 98, 3, + 49, 72, 172, 188, 188, 188, 188, 188, 188, 188, 188, 144, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 54, 36, 1, 69, 239, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 231, 46, 0, 37, 80, 176, 188, 188, 188, 188, 188, 188, 188, 188, 188, 100, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 44, 29, 19, 0, 146, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 69, 6, 37, 72, 160, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 156, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 30, + 29, 29, 11, 15, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 139, 0, 44, 76, 160, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 168, 80, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 51, 29, 29, 29, 28, 4, 54, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 0, 30, 80, 168, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 160, 76, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 42, 29, 29, 29, 29, 24, 0, 162, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 30, 15, + 56, 156, 188, 188, 188, 188, 188, 188, 188, 188, 188, 152, 72, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, + 7, 30, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 205, 13, 5, 50, 112, 188, 188, 188, 188, 188, 188, 188, 188, 188, 176, 88, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, + 29, 29, 29, 29, 26, 0, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 242, 49, 6, 65, 164, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 172, 92, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 38, 29, 29, 29, 29, 29, 29, 11, 52, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 250, 79, 0, 44, 180, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 168, 84, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, 29, 23, 0, 176, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 70, 1, 30, 128, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 184, 96, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 33, 29, 29, 29, 29, 29, + 29, 29, 10, 75, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 30, 3, 33, + 112, 188, 188, 188, 188, 188, 188, 188, 188, 188, 180, 88, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 48, 29, 29, + 29, 29, 29, 29, 29, 29, 21, 0, 232, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 169, + 23, 10, 45, 80, 176, 188, 188, 188, 188, 188, 188, 188, 188, 188, 80, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 38, 29, 29, 29, 29, 29, 29, 29, 29, 29, 2, 170, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 246, 134, 15, 13, 52, 88, 180, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 100, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, 29, 29, 29, 29, 9, + 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 106, 4, 16, 54, 56, 164, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 148, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 33, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 18, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 154, 0, 22, 56, 60, 128, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 136, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 55, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 19, 85, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 170, 0, 18, 56, 64, + 136, 188, 188, 188, 188, 188, 188, 188, 188, 188, 132, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 47, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 13, 85, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 103, 0, + 18, 56, 68, 144, 188, 188, 188, 188, 188, 188, 188, 188, 188, 144, 68, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 40, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 9, + 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 88, 3, 22, 52, 72, 132, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 136, 64, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 34, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 6, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 150, 1, 16, 54, 76, 160, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 168, 80, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 47, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 24, 0, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 163, 0, 11, 56, 56, 128, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 184, 76, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 55, 33, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 26, 46, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 0, 15, 49, 56, 100, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 128, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 54, 39, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 75, 24, 139, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 46, 13, + 50, 56, 112, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 132, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 44, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 30, 106, 0, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 69, 6, 40, 56, 124, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 120, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 48, 30, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 77, 12, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 216, 54, 0, 44, 56, 76, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 108, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 30, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 52, 0, 247, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 239, 38, 3, 47, 56, 56, 144, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 136, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 37, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 46, 26, 131, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 30, 3, 49, 56, 56, 56, + 144, 188, 188, 188, 188, 188, 188, 188, 188, 144, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 44, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 24, + 15, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 23, 5, 45, + 56, 56, 56, 56, 144, 188, 188, 188, 188, 188, 188, 188, 164, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 53, 31, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 22, 0, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, + 27, 6, 49, 56, 56, 56, 56, 56, 144, 188, 188, 188, 188, 188, 188, 156, + 64, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 52, 36, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 9, 100, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 95, 3, 0, 44, 56, 56, 56, 56, 56, 56, 84, 188, 188, 188, + 188, 188, 148, 60, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 27, 0, 208, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 247, 94, 8, 0, 16, 25, 25, 25, 33, 50, 56, 56, + 56, 136, 188, 188, 188, 136, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 49, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 4, 54, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 61, 0, 10, 10, 10, 10, 10, 6, + 0, 0, 20, 37, 52, 56, 104, 104, 104, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 52, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 11, 15, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 0, 18, 56, 56, + 56, 56, 56, 50, 40, 23, 10, 0, 10, 37, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 51, 31, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 19, 0, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 0, + 22, 52, 56, 56, 56, 56, 56, 56, 56, 56, 52, 37, 13, 3, 18, 49, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 49, 30, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 25, 6, 100, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 7, 8, 54, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 54, 25, 0, 11, 43, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 51, 33, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 6, 0, 208, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 152, 0, 47, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 37, 24, 0, 8, 31, 54, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 51, 33, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 22, 0, 216, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 11, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 48, 29, 29, 17, 1, 3, 34, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 48, 35, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 27, 3, 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 32, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, + 23, 2, 9, 36, 36, 51, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 53, 44, 31, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 9, 23, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 0, 44, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 38, 29, 29, 29, 29, 21, 0, 17, 29, 30, 49, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 45, 32, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 17, 0, 185, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 9, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, 13, 0, 15, 29, 29, 43, + 56, 56, 56, 56, 56, 56, 56, 56, 47, 35, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 24, 0, 115, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 85, 33, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, 29, 11, + 0, 22, 29, 29, 37, 53, 56, 56, 53, 53, 41, 33, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 4, 53, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 62, 61, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 48, 29, 29, 29, + 29, 29, 29, 29, 7, 7, 29, 29, 29, 29, 38, 38, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 11, 14, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 170, 20, 67, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 53, 29, 29, 29, 29, 29, 29, 29, 21, 0, 19, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 19, 0, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 239, 0, 43, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 47, 29, 29, 29, 29, 29, 29, 29, 29, 11, 1, 25, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 1, 100, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 20, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 38, 29, 29, 29, 29, 29, 29, 29, + 29, 28, 4, 14, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 7, 0, 247, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 8, 56, + 56, 56, 53, 53, 53, 56, 56, 56, 56, 56, 56, 49, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 15, 0, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 8, 7, + 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 224, 0, 49, 56, 47, 29, 29, 29, 38, 51, 56, 56, 56, 47, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 0, 22, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 17, 15, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 23, 5, 69, 29, 29, 29, 29, 29, 29, 36, + 40, 36, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 7, + 9, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 19, 2, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 0, 91, 40, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 21, 0, 21, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 25, 1, 61, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, + 7, 128, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 8, 14, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 24, 6, 38, 247, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 54, 36, 88, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 14, 8, 37, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 4, 15, + 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 224, 15, 72, 58, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 25, 0, 27, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 21, 0, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 0, 103, + 34, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 2, 19, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 26, 2, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 100, 51, 121, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 9, 11, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 25, 3, 30, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 208, 0, 166, 64, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 0, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 6, 38, 200, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 0, 191, 32, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 0, 23, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 8, 7, + 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 15, 30, 108, 42, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 6, 17, 29, 29, 29, 29, 29, 29, 29, 29, + 27, 7, 15, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 208, 0, 49, 56, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 12, 9, 29, 29, 29, 29, + 29, 29, 29, 26, 5, 23, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 0, 33, 32, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 19, 9, + 29, 29, 29, 29, 29, 29, 25, 3, 30, 185, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 1, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 19, 9, 29, 29, 29, 29, 29, 24, 6, 38, 200, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 224, 11, 4, 22, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 19, 9, 29, 29, 29, 29, 28, 8, 15, 216, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 145, 6, 3, 27, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 19, 9, 29, 29, 29, 27, + 11, 0, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 5, 9, 26, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 19, 9, + 29, 29, 29, 9, 0, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 212, 64, 0, 7, 25, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 19, 9, 29, 29, 17, 0, 170, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 42, 0, 6, 24, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 10, 9, 29, 20, 0, 115, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 59, 3, 0, 17, 28, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 8, 37, 44, 0, 61, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 73, 18, 0, 7, 23, 29, 29, 29, 29, 29, 29, 29, 29, 27, 0, 25, + 6, 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 236, 92, 32, 5, 0, 12, 23, 29, 29, 29, 29, 29, + 29, 16, 0, 5, 28, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 134, 49, 28, 0, 1, 14, + 25, 29, 29, 29, 25, 1, 0, 30, 197, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 206, + 116, 50, 16, 0, 1, 7, 15, 2, 1, 0, 38, 239, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 164, 74, 65, 48, 23, 23, 31, 108, 139, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy10' of size 158x214x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy10[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 71, 79, 113, 136, 142, 148, 145, 137, + 135, 138, 145, 147, 139, 131, 129, 130, 129, 126, 124, 123, 119, 115, 115, 118, + 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 187, 57, 80, 104, 114, 142, 153, 147, 146, 145, 138, 136, 129, + 140, 149, 149, 145, 143, 140, 136, 139, 137, 136, 131, 124, 119, 119, 121, 118, + 126, 134, 142, 155, 162, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, + 92, 125, 133, 116, 96, 131, 152, 152, 135, 129, 124, 115, 110, 86, 95, 104, + 111, 120, 134, 146, 150, 140, 140, 138, 130, 120, 114, 114, 116, 121, 131, 142, + 153, 165, 167, 149, 124, 125, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 68, 67, 64, 75, 106, 136, + 146, 136, 124, 134, 156, 155, 136, 128, 121, 107, 97, 119, 116, 106, 98, 101, + 118, 136, 146, 127, 126, 122, 113, 102, 96, 96, 99, 118, 128, 140, 150, 159, + 157, 133, 107, 90, 83, 83, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 75, 76, 81, 74, 74, 92, 128, 155, 159, 152, + 148, 138, 148, 150, 136, 118, 108, 108, 111, 101, 99, 99, 101, 107, 116, 125, + 129, 120, 112, 113, 121, 123, 114, 108, 110, 121, 128, 134, 136, 135, 126, 104, + 82, 74, 74, 76, 77, 78, 76, 75, 134, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 78, 72, 68, 68, 79, 89, 109, 133, 147, 147, 142, 139, 140, + 130, 113, 96, 90, 93, 95, 92, 111, 113, 116, 118, 117, 113, 109, 107, 126, + 122, 122, 124, 122, 112, 103, 98, 96, 100, 98, 87, 80, 81, 86, 87, 70, + 69, 68, 67, 68, 68, 68, 66, 60, 100, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, + 79, 83, 84, 84, 85, 86, 106, 127, 135, 134, 131, 127, 124, 115, 112, 106, + 102, 104, 106, 100, 91, 93, 97, 102, 105, 104, 98, 90, 84, 90, 94, 97, + 97, 96, 94, 86, 77, 78, 82, 80, 71, 65, 69, 78, 85, 73, 70, 66, + 65, 67, 68, 69, 68, 64, 56, 49, 117, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 81, 82, 83, 82, + 82, 84, 87, 86, 109, 126, 125, 117, 113, 108, 101, 94, 106, 117, 118, 113, + 109, 103, 98, 86, 87, 89, 91, 92, 91, 90, 89, 75, 82, 85, 82, 82, + 87, 83, 73, 83, 82, 79, 77, 77, 79, 79, 78, 70, 67, 67, 66, 70, + 72, 72, 69, 65, 57, 51, 50, 97, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 199, 87, 78, 86, 92, 89, 83, 83, 91, + 98, 101, 117, 128, 126, 121, 119, 112, 102, 97, 100, 98, 88, 80, 80, 84, + 85, 84, 83, 83, 82, 81, 80, 80, 80, 84, 90, 88, 79, 75, 78, 76, + 68, 88, 87, 85, 82, 77, 74, 75, 79, 60, 59, 62, 66, 72, 74, 71, + 65, 65, 57, 53, 53, 49, 42, 39, 111, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 195, 82, 86, 86, 79, 89, 95, 90, 85, 88, 98, 106, 80, + 86, 92, 95, 97, 96, 89, 81, 94, 86, 73, 64, 66, 72, 72, 67, 73, + 76, 80, 82, 82, 79, 76, 73, 82, 83, 81, 73, 69, 69, 69, 68, 72, + 85, 100, 102, 88, 72, 69, 74, 58, 57, 60, 67, 75, 77, 73, 67, 66, + 59, 56, 57, 52, 43, 42, 48, 49, 119, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 82, + 80, 83, 86, 86, 81, 104, 106, 100, 87, 78, 78, 80, 80, 90, 88, 92, + 101, 107, 106, 102, 100, 86, 86, 82, 78, 78, 80, 76, 69, 83, 87, 92, + 97, 98, 96, 92, 89, 82, 81, 83, 84, 83, 80, 82, 88, 68, 77, 94, + 109, 107, 91, 76, 69, 65, 63, 63, 70, 79, 82, 78, 72, 77, 64, 60, + 66, 67, 60, 57, 62, 60, 57, 98, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 87, 88, 84, 75, 75, + 83, 90, 88, 96, 92, 83, 74, 73, 80, 81, 77, 72, 66, 72, 85, 92, + 90, 89, 93, 93, 102, 104, 91, 75, 70, 75, 80, 91, 91, 91, 91, 90, + 88, 86, 85, 77, 74, 79, 85, 83, 75, 77, 84, 83, 65, 61, 78, 100, + 100, 85, 70, 70, 65, 63, 68, 77, 81, 78, 73, 87, 73, 65, 74, 81, + 77, 73, 75, 68, 61, 53, 45, 42, 114, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 218, 139, 130, 122, 87, 84, 94, 87, 83, 84, 82, 79, 83, + 90, 90, 82, 77, 81, 90, 96, 93, 88, 77, 78, 81, 83, 84, 82, 78, + 76, 78, 76, 80, 85, 82, 75, 72, 76, 80, 86, 91, 88, 83, 82, 82, + 81, 82, 90, 92, 79, 75, 74, 71, 59, 72, 64, 64, 71, 87, 90, 84, + 74, 66, 63, 59, 65, 75, 81, 77, 71, 76, 85, 87, 80, 72, 69, 66, + 62, 61, 44, 37, 43, 47, 46, 122, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 118, + 87, 118, 135, 91, 91, 96, 94, 105, 94, 86, 87, 89, 89, 91, 93, 86, + 88, 95, 103, 108, 106, 96, 87, 76, 74, 72, 71, 70, 67, 63, 62, 72, + 72, 76, 80, 77, 71, 71, 76, 70, 76, 79, 77, 75, 77, 77, 75, 74, + 82, 82, 71, 66, 72, 76, 74, 67, 67, 71, 80, 90, 91, 83, 76, 85, + 75, 61, 58, 65, 75, 80, 81, 87, 90, 87, 76, 68, 67, 68, 68, 54, + 49, 54, 69, 76, 70, 63, 126, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 108, 70, 76, 106, 112, + 93, 88, 96, 98, 95, 90, 78, 68, 68, 73, 75, 76, 75, 77, 85, 97, + 105, 103, 96, 84, 77, 79, 76, 71, 69, 66, 63, 60, 57, 63, 66, 71, + 75, 72, 70, 75, 83, 68, 73, 76, 78, 82, 87, 87, 82, 70, 79, 78, + 67, 62, 67, 72, 73, 73, 77, 82, 87, 89, 87, 83, 79, 81, 74, 67, + 66, 70, 76, 77, 76, 86, 88, 85, 75, 67, 65, 66, 66, 53, 65, 81, + 90, 86, 75, 63, 56, 126, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 241, 186, 119, 73, 66, 73, 92, 120, 113, 91, 95, + 100, 92, 89, 77, 70, 64, 62, 64, 67, 68, 66, 71, 72, 75, 76, 74, + 71, 66, 63, 74, 74, 71, 69, 69, 66, 64, 61, 58, 64, 71, 75, 76, + 80, 90, 99, 102, 100, 94, 87, 81, 74, 60, 47, 68, 71, 70, 65, 63, + 65, 65, 62, 81, 85, 87, 84, 80, 77, 80, 84, 75, 72, 69, 69, 73, + 76, 77, 74, 73, 77, 80, 79, 74, 69, 65, 63, 68, 86, 96, 84, 62, + 50, 51, 55, 48, 93, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 247, 216, 154, 109, 91, 74, 69, 67, 75, 108, 116, 102, 92, 106, 103, 86, + 83, 67, 69, 69, 65, 61, 60, 63, 65, 75, 68, 61, 58, 58, 61, 60, + 58, 59, 61, 63, 66, 71, 69, 68, 65, 63, 71, 77, 82, 88, 98, 108, + 116, 91, 95, 97, 103, 111, 115, 107, 96, 74, 70, 64, 60, 62, 66, 65, + 61, 78, 83, 88, 86, 81, 78, 82, 86, 86, 79, 70, 62, 64, 71, 81, + 86, 68, 72, 78, 82, 81, 77, 73, 72, 89, 92, 84, 63, 43, 38, 44, + 49, 49, 58, 62, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 128, 108, + 83, 86, 79, 70, 76, 80, 89, 105, 97, 89, 94, 106, 99, 83, 79, 70, + 76, 77, 69, 62, 61, 65, 68, 79, 70, 64, 60, 61, 62, 59, 56, 52, + 56, 60, 66, 70, 71, 69, 65, 69, 76, 80, 85, 93, 105, 113, 116, 118, + 120, 119, 120, 123, 124, 115, 105, 101, 91, 76, 65, 62, 62, 62, 60, 69, + 75, 83, 87, 87, 85, 85, 85, 88, 86, 81, 77, 75, 76, 79, 83, 78, + 78, 81, 87, 89, 87, 86, 87, 95, 79, 59, 49, 50, 52, 50, 46, 49, + 65, 72, 65, 60, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 77, 76, 71, 59, 72, + 71, 72, 89, 94, 100, 96, 92, 100, 108, 103, 99, 94, 86, 90, 92, 88, + 77, 71, 74, 79, 80, 78, 75, 72, 67, 63, 63, 62, 62, 58, 60, 61, + 64, 67, 67, 66, 63, 69, 73, 75, 77, 83, 93, 96, 93, 90, 93, 95, + 99, 106, 115, 118, 114, 112, 108, 99, 88, 76, 67, 64, 65, 72, 72, 73, + 76, 80, 83, 83, 81, 78, 83, 90, 93, 88, 82, 78, 76, 88, 87, 92, + 100, 99, 93, 89, 91, 82, 62, 47, 52, 62, 64, 61, 60, 58, 59, 60, + 61, 62, 64, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 197, 79, 74, 69, 71, 63, 76, 71, 73, + 91, 94, 95, 98, 105, 127, 129, 108, 107, 113, 100, 88, 86, 76, 63, 60, + 67, 71, 70, 83, 82, 78, 70, 63, 61, 66, 72, 64, 61, 59, 58, 59, + 59, 57, 56, 67, 67, 66, 65, 71, 77, 76, 68, 96, 97, 95, 94, 98, + 108, 114, 116, 97, 105, 112, 109, 95, 81, 77, 80, 83, 73, 61, 58, 64, + 73, 78, 80, 80, 82, 85, 84, 81, 80, 84, 88, 89, 91, 101, 113, 111, + 98, 85, 83, 65, 54, 52, 61, 63, 60, 67, 82, 105, 84, 69, 73, 74, + 68, 61, 61, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 191, 70, 85, 64, 60, 59, 74, 66, 83, 87, 94, 83, + 106, 116, 120, 117, 108, 110, 117, 109, 92, 107, 83, 61, 61, 73, 83, 88, + 91, 112, 99, 80, 71, 79, 87, 79, 64, 62, 59, 60, 64, 64, 62, 64, + 65, 68, 67, 67, 69, 74, 78, 77, 77, 75, 73, 77, 91, 102, 104, 101, + 99, 118, 123, 124, 113, 96, 85, 85, 90, 75, 73, 69, 64, 62, 66, 73, + 79, 100, 101, 96, 92, 94, 97, 88, 77, 71, 77, 89, 105, 111, 99, 77, + 59, 55, 57, 62, 68, 69, 67, 68, 72, 57, 65, 73, 75, 71, 69, 71, + 74, 62, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 217, 123, 73, 80, 85, 63, 67, 66, 77, 82, 95, 98, 101, 100, 115, 104, + 108, 109, 108, 109, 105, 88, 68, 65, 67, 72, 76, 76, 79, 94, 111, 103, + 97, 81, 67, 63, 69, 71, 68, 71, 66, 64, 64, 63, 61, 65, 68, 63, + 63, 64, 67, 69, 72, 74, 73, 73, 73, 78, 87, 92, 91, 90, 92, 101, + 102, 101, 98, 93, 91, 93, 96, 80, 75, 69, 67, 71, 79, 87, 91, 87, + 91, 91, 86, 89, 95, 100, 98, 105, 96, 91, 91, 89, 81, 75, 76, 70, + 63, 63, 73, 83, 83, 77, 72, 66, 69, 71, 70, 64, 62, 63, 65, 60, + 78, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 114, 79, 83, + 78, 89, 82, 59, 72, 72, 73, 92, 99, 101, 97, 107, 106, 95, 99, 102, + 95, 82, 74, 74, 77, 87, 75, 71, 86, 106, 116, 112, 106, 98, 90, 77, + 66, 68, 74, 77, 76, 75, 69, 65, 65, 66, 66, 70, 76, 80, 80, 80, + 79, 79, 80, 83, 86, 80, 82, 86, 91, 90, 87, 88, 93, 93, 89, 84, + 83, 85, 87, 86, 83, 84, 75, 65, 61, 65, 71, 75, 74, 88, 93, 92, + 82, 76, 79, 90, 95, 106, 97, 95, 96, 86, 69, 64, 71, 76, 72, 73, + 81, 85, 81, 74, 70, 62, 60, 58, 55, 51, 50, 50, 51, 65, 64, 64, + 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 62, 64, 75, 77, 81, 98, + 85, 63, 75, 76, 65, 91, 91, 97, 88, 102, 85, 90, 85, 81, 79, 73, + 69, 74, 83, 85, 87, 92, 98, 102, 106, 112, 116, 95, 84, 74, 78, 91, + 100, 91, 78, 70, 67, 67, 71, 75, 76, 81, 86, 78, 77, 74, 70, 67, + 69, 74, 79, 79, 77, 78, 82, 81, 78, 79, 84, 79, 76, 75, 81, 90, + 97, 98, 96, 91, 85, 78, 72, 70, 70, 71, 72, 90, 91, 91, 79, 69, + 64, 70, 75, 80, 78, 88, 95, 85, 63, 56, 65, 69, 77, 86, 85, 71, + 58, 58, 65, 51, 49, 47, 47, 46, 47, 47, 46, 37, 45, 53, 55, 120, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 185, 55, 65, 70, 80, 78, 89, 104, 93, 80, + 78, 83, 67, 87, 85, 95, 89, 98, 73, 79, 67, 63, 75, 87, 87, 75, + 66, 68, 73, 81, 89, 98, 103, 104, 102, 92, 88, 89, 99, 107, 103, 86, + 71, 66, 67, 73, 82, 87, 86, 85, 87, 91, 89, 85, 82, 82, 87, 93, + 98, 97, 89, 84, 87, 90, 87, 84, 84, 89, 88, 89, 91, 93, 94, 92, + 91, 80, 83, 85, 81, 74, 70, 71, 74, 75, 76, 79, 77, 74, 69, 69, + 68, 73, 67, 71, 76, 70, 59, 64, 76, 65, 73, 83, 81, 66, 51, 51, + 59, 49, 49, 50, 52, 53, 55, 54, 52, 46, 47, 47, 46, 44, 118, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 190, 64, 64, 66, 75, 83, 81, 93, 98, 95, 96, 76, 87, + 78, 83, 81, 88, 88, 87, 68, 64, 68, 72, 74, 73, 74, 78, 82, 86, + 84, 87, 102, 121, 127, 109, 87, 101, 109, 120, 121, 108, 88, 77, 73, 73, + 77, 87, 98, 100, 93, 85, 83, 71, 69, 69, 72, 79, 87, 91, 94, 110, + 101, 94, 97, 100, 97, 91, 88, 88, 88, 87, 84, 79, 75, 73, 72, 75, + 82, 87, 83, 72, 63, 62, 65, 69, 67, 71, 75, 77, 74, 71, 70, 69, + 68, 70, 71, 70, 67, 71, 76, 68, 66, 68, 73, 71, 64, 58, 57, 53, + 54, 57, 60, 59, 60, 60, 60, 73, 57, 45, 51, 62, 66, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 185, 54, 59, 58, 55, 72, 80, 85, 97, 90, 98, 118, 84, 96, 102, 89, + 84, 80, 82, 69, 67, 60, 73, 79, 69, 63, 72, 89, 100, 91, 116, 137, + 135, 121, 112, 112, 114, 112, 118, 124, 118, 99, 79, 74, 81, 81, 86, 98, + 108, 110, 98, 86, 82, 78, 78, 83, 93, 104, 110, 109, 105, 95, 90, 89, + 94, 94, 91, 89, 89, 80, 78, 76, 76, 77, 81, 84, 86, 85, 90, 93, + 88, 79, 70, 67, 69, 75, 70, 70, 71, 71, 67, 67, 69, 68, 72, 76, + 78, 82, 83, 77, 66, 66, 61, 61, 67, 69, 65, 60, 59, 59, 62, 65, + 66, 63, 65, 70, 74, 66, 69, 73, 71, 58, 49, 121, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 39, 51, + 62, 65, 63, 71, 81, 93, 104, 88, 105, 141, 100, 110, 127, 103, 93, 76, + 78, 59, 69, 66, 65, 63, 68, 90, 109, 101, 78, 100, 113, 123, 120, 114, + 113, 112, 110, 117, 110, 103, 97, 89, 78, 77, 83, 87, 93, 104, 115, 116, + 103, 90, 84, 78, 80, 88, 101, 114, 117, 108, 98, 93, 95, 100, 106, 106, + 104, 106, 111, 128, 117, 105, 94, 89, 86, 83, 81, 70, 71, 73, 74, 72, + 70, 68, 67, 77, 71, 68, 66, 64, 59, 67, 74, 77, 79, 77, 72, 80, + 89, 86, 71, 56, 59, 67, 67, 60, 52, 55, 61, 67, 70, 74, 73, 73, + 75, 86, 95, 87, 72, 61, 62, 61, 55, 47, 114, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 44, 61, 69, 61, 57, + 59, 68, 69, 89, 107, 108, 121, 133, 124, 116, 150, 80, 100, 57, 78, 67, + 58, 60, 61, 65, 67, 68, 74, 85, 94, 97, 115, 127, 122, 115, 116, 117, + 116, 115, 110, 105, 97, 84, 72, 78, 93, 86, 103, 112, 106, 105, 104, 93, + 76, 92, 82, 87, 106, 115, 106, 97, 98, 94, 98, 111, 130, 142, 139, 129, + 121, 120, 115, 107, 97, 94, 94, 92, 85, 76, 73, 68, 67, 68, 71, 76, + 81, 75, 68, 68, 71, 73, 68, 68, 69, 72, 76, 79, 76, 71, 70, 76, + 80, 61, 52, 55, 64, 64, 52, 48, 52, 55, 67, 67, 59, 60, 58, 59, + 66, 68, 82, 78, 61, 61, 75, 66, 42, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 182, 35, 45, 55, 55, 47, 48, 60, 78, + 85, 97, 105, 109, 121, 127, 120, 120, 149, 88, 97, 61, 72, 65, 56, 56, + 58, 61, 61, 62, 68, 77, 85, 87, 96, 103, 102, 99, 105, 114, 120, 110, + 104, 95, 87, 81, 78, 86, 97, 107, 107, 121, 138, 131, 103, 89, 95, 74, + 99, 116, 111, 101, 99, 98, 94, 107, 117, 130, 135, 124, 109, 103, 105, 110, + 113, 116, 118, 118, 112, 98, 83, 75, 74, 74, 71, 71, 71, 73, 74, 71, + 69, 69, 69, 68, 64, 67, 72, 84, 84, 82, 79, 78, 79, 79, 77, 77, + 67, 57, 55, 60, 64, 60, 54, 50, 59, 63, 68, 78, 77, 65, 57, 68, + 61, 62, 74, 79, 71, 58, 55, 46, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 183, 37, 41, 49, 53, 47, 41, 52, 71, 78, 97, 101, + 98, 108, 119, 117, 114, 116, 138, 93, 87, 64, 63, 65, 57, 58, 60, 63, + 63, 64, 68, 76, 82, 101, 98, 97, 95, 92, 95, 108, 122, 102, 102, 97, + 89, 89, 93, 96, 96, 102, 100, 115, 131, 118, 87, 77, 88, 76, 96, 110, + 107, 102, 103, 99, 89, 100, 104, 107, 105, 98, 97, 112, 129, 113, 113, 111, + 108, 109, 108, 100, 91, 81, 83, 85, 82, 79, 75, 75, 76, 69, 70, 72, + 73, 71, 70, 76, 82, 88, 82, 76, 76, 80, 81, 76, 72, 86, 86, 78, + 63, 62, 71, 69, 58, 60, 62, 61, 62, 69, 78, 80, 78, 73, 61, 61, + 75, 80, 70, 61, 62, 49, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 42, 38, 42, 49, 50, 46, 47, 63, 85, 70, 97, 98, 91, 107, + 116, 107, 106, 102, 118, 91, 75, 65, 56, 65, 59, 59, 60, 61, 62, 64, + 68, 74, 79, 93, 84, 77, 73, 65, 59, 67, 81, 93, 103, 107, 99, 96, + 97, 92, 84, 98, 114, 120, 107, 99, 100, 96, 85, 89, 89, 96, 103, 99, + 88, 85, 91, 90, 82, 76, 76, 79, 84, 94, 103, 105, 104, 98, 88, 84, + 85, 87, 86, 87, 90, 92, 89, 85, 81, 81, 83, 75, 78, 82, 86, 91, + 91, 95, 97, 83, 74, 70, 71, 75, 74, 72, 70, 74, 88, 93, 82, 73, + 76, 78, 77, 73, 77, 79, 69, 53, 57, 70, 76, 74, 83, 77, 60, 59, + 75, 77, 62, 60, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, + 44, 42, 43, 46, 48, 50, 56, 73, 87, 70, 97, 99, 94, 108, 111, 99, + 98, 93, 104, 89, 68, 65, 54, 62, 59, 54, 54, 55, 57, 59, 63, 68, + 72, 89, 84, 82, 81, 73, 64, 69, 81, 94, 107, 113, 101, 88, 83, 81, + 75, 95, 114, 116, 96, 95, 111, 107, 82, 87, 97, 107, 100, 78, 63, 75, + 95, 82, 85, 93, 103, 105, 97, 87, 83, 84, 95, 103, 100, 93, 85, 79, + 74, 87, 88, 89, 86, 85, 83, 85, 88, 90, 89, 93, 99, 109, 113, 110, + 103, 80, 74, 72, 71, 72, 67, 72, 77, 73, 77, 83, 86, 85, 83, 85, + 90, 78, 85, 102, 100, 74, 61, 56, 41, 63, 85, 83, 55, 51, 74, 83, + 69, 66, 55, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 47, 48, 52, + 53, 56, 59, 63, 69, 79, 86, 85, 97, 101, 100, 105, 101, 91, 88, 90, + 96, 86, 69, 66, 59, 57, 59, 56, 55, 55, 56, 59, 62, 65, 67, 50, + 57, 65, 69, 66, 65, 74, 87, 108, 114, 112, 97, 80, 75, 79, 84, 92, + 96, 100, 102, 103, 101, 90, 77, 80, 101, 105, 86, 76, 88, 96, 92, 93, + 102, 114, 119, 111, 98, 94, 97, 87, 98, 107, 109, 107, 101, 93, 85, 88, + 88, 88, 88, 91, 92, 92, 91, 98, 97, 99, 105, 116, 121, 114, 103, 91, + 85, 83, 80, 73, 66, 75, 89, 97, 84, 74, 78, 84, 84, 78, 75, 84, + 81, 100, 113, 103, 100, 87, 55, 56, 65, 70, 67, 65, 70, 76, 79, 68, + 56, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 51, 57, 58, 64, 71, + 74, 78, 80, 84, 86, 93, 86, 92, 97, 90, 83, 80, 76, 81, 86, 77, + 69, 64, 66, 53, 58, 60, 59, 58, 58, 59, 60, 61, 61, 51, 67, 80, + 81, 80, 89, 106, 119, 117, 113, 106, 97, 86, 80, 85, 95, 111, 103, 107, + 118, 115, 97, 85, 86, 87, 100, 100, 93, 102, 121, 116, 94, 111, 106, 101, + 96, 88, 83, 87, 94, 109, 105, 99, 98, 106, 111, 106, 96, 89, 88, 88, + 92, 97, 98, 94, 90, 95, 96, 98, 101, 110, 117, 115, 108, 108, 98, 91, + 83, 73, 62, 71, 87, 98, 97, 90, 81, 80, 82, 76, 66, 82, 68, 83, + 100, 100, 117, 123, 97, 73, 63, 64, 75, 75, 67, 68, 80, 79, 66, 51, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 187, 51, 56, 62, 52, 63, 75, 79, 80, + 81, 83, 86, 90, 71, 78, 88, 74, 66, 71, 67, 71, 76, 67, 67, 62, + 71, 51, 59, 59, 56, 54, 53, 53, 52, 51, 50, 55, 74, 86, 80, 76, + 89, 110, 124, 111, 102, 97, 97, 93, 84, 85, 94, 115, 110, 110, 111, 101, + 87, 81, 85, 99, 107, 118, 123, 120, 112, 106, 104, 98, 86, 81, 93, 111, + 123, 127, 127, 114, 102, 90, 92, 105, 113, 100, 83, 85, 83, 84, 91, 98, + 98, 90, 81, 87, 92, 95, 97, 103, 115, 120, 118, 119, 106, 91, 82, 69, + 58, 63, 76, 66, 96, 109, 93, 81, 87, 89, 81, 66, 56, 76, 90, 82, + 100, 120, 103, 97, 80, 68, 71, 72, 69, 69, 73, 90, 77, 62, 117, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 185, 61, 67, 65, 58, 67, 67, 73, 84, 87, 84, 81, + 80, 80, 81, 79, 72, 64, 64, 74, 84, 83, 77, 73, 73, 72, 66, 56, + 49, 53, 51, 48, 57, 70, 62, 51, 55, 83, 85, 87, 91, 98, 105, 108, + 108, 96, 106, 108, 95, 84, 84, 93, 98, 103, 106, 113, 114, 99, 82, 85, + 100, 101, 102, 104, 105, 104, 105, 111, 119, 101, 94, 89, 94, 101, 102, 97, + 92, 103, 102, 105, 106, 101, 92, 88, 89, 83, 97, 91, 84, 91, 83, 75, + 86, 86, 82, 89, 101, 107, 108, 117, 130, 121, 118, 105, 82, 65, 63, 65, + 67, 81, 86, 105, 118, 109, 97, 85, 71, 71, 61, 56, 63, 73, 84, 98, + 110, 96, 90, 86, 87, 90, 84, 71, 59, 74, 72, 70, 63, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 180, 39, 51, 60, 65, 65, 71, 72, 79, 89, 93, 89, 85, 84, 70, + 77, 85, 84, 75, 67, 63, 63, 85, 84, 79, 67, 54, 51, 59, 69, 64, + 62, 52, 47, 51, 54, 72, 103, 102, 95, 92, 100, 114, 119, 109, 96, 113, + 111, 102, 87, 81, 88, 99, 103, 108, 110, 109, 102, 99, 102, 108, 112, 113, + 103, 97, 104, 117, 124, 121, 115, 88, 100, 116, 125, 122, 113, 106, 104, 98, + 97, 100, 102, 100, 93, 92, 94, 90, 88, 70, 68, 88, 89, 77, 78, 87, + 83, 85, 91, 99, 108, 120, 131, 125, 121, 109, 87, 68, 61, 59, 59, 62, + 64, 79, 95, 99, 100, 98, 93, 77, 65, 56, 55, 59, 65, 77, 88, 98, + 92, 86, 84, 87, 87, 81, 76, 73, 73, 73, 68, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 29, + 33, 45, 58, 72, 80, 72, 72, 79, 88, 92, 87, 81, 79, 79, 75, 68, + 61, 59, 66, 80, 90, 61, 73, 84, 82, 71, 61, 58, 59, 50, 60, 64, + 69, 74, 72, 84, 111, 113, 106, 103, 110, 117, 115, 100, 86, 121, 111, 97, + 86, 87, 96, 104, 105, 110, 111, 104, 94, 100, 114, 116, 105, 105, 111, 119, + 123, 123, 121, 118, 116, 105, 112, 117, 114, 105, 98, 96, 96, 95, 93, 95, + 98, 96, 91, 90, 94, 83, 88, 81, 79, 88, 88, 87, 94, 86, 88, 89, + 92, 100, 114, 123, 124, 105, 104, 93, 77, 64, 58, 56, 54, 60, 57, 60, + 71, 81, 87, 91, 94, 85, 74, 62, 54, 49, 50, 58, 66, 91, 89, 84, + 82, 82, 86, 89, 91, 73, 73, 74, 71, 125, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 33, 42, + 57, 77, 91, 78, 77, 82, 88, 90, 82, 75, 72, 74, 74, 75, 77, 81, + 86, 90, 93, 79, 75, 69, 63, 63, 66, 65, 61, 66, 64, 58, 65, 79, + 85, 96, 117, 108, 109, 109, 107, 98, 88, 83, 84, 115, 105, 95, 89, 92, + 98, 101, 100, 105, 104, 99, 96, 101, 107, 101, 89, 105, 122, 139, 141, 130, + 118, 109, 105, 127, 119, 107, 97, 94, 94, 90, 86, 95, 94, 94, 92, 89, + 84, 84, 87, 77, 87, 92, 93, 93, 91, 94, 100, 82, 89, 94, 96, 107, + 117, 117, 109, 88, 85, 77, 64, 55, 51, 51, 54, 65, 61, 56, 60, 67, + 68, 72, 85, 92, 86, 77, 67, 57, 52, 55, 59, 73, 75, 77, 79, 79, + 83, 87, 89, 77, 75, 75, 70, 58, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 34, 36, 41, 52, 71, + 85, 93, 90, 92, 96, 94, 85, 79, 77, 73, 73, 75, 79, 80, 77, 69, + 62, 76, 73, 64, 58, 61, 67, 64, 57, 73, 73, 69, 76, 89, 91, 97, + 116, 113, 109, 105, 98, 87, 78, 81, 90, 112, 104, 95, 89, 88, 90, 96, + 99, 102, 95, 94, 101, 105, 100, 98, 100, 123, 127, 129, 129, 130, 125, 109, + 92, 112, 117, 119, 117, 117, 113, 101, 90, 95, 91, 89, 88, 85, 79, 81, + 86, 92, 82, 76, 81, 88, 93, 87, 77, 78, 85, 89, 89, 97, 107, 105, + 93, 93, 86, 75, 64, 55, 51, 51, 54, 53, 57, 54, 59, 68, 63, 64, + 85, 92, 95, 93, 85, 72, 63, 59, 58, 54, 62, 72, 79, 82, 82, 80, + 80, 87, 82, 77, 71, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 34, 38, 38, 39, 44, 57, 67, 95, + 93, 93, 95, 94, 86, 82, 81, 86, 82, 79, 82, 84, 81, 70, 60, 43, + 57, 69, 72, 74, 78, 76, 69, 70, 83, 93, 100, 102, 93, 96, 116, 123, + 107, 95, 93, 94, 91, 93, 99, 111, 102, 92, 86, 83, 85, 96, 106, 99, + 92, 94, 104, 107, 103, 111, 127, 117, 121, 118, 108, 103, 106, 107, 102, 95, + 114, 127, 122, 109, 101, 95, 91, 90, 87, 84, 85, 83, 83, 86, 93, 101, + 87, 81, 78, 71, 75, 78, 71, 78, 79, 77, 76, 80, 87, 91, 90, 92, + 81, 71, 64, 58, 53, 55, 60, 47, 56, 56, 65, 79, 67, 58, 80, 81, + 93, 100, 95, 82, 71, 63, 60, 53, 59, 69, 77, 81, 81, 78, 78, 95, + 89, 82, 75, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 37, 40, 39, 40, 42, 51, 59, 84, 82, 82, + 86, 89, 86, 84, 85, 88, 91, 100, 113, 121, 111, 88, 69, 65, 68, 66, + 62, 72, 92, 103, 103, 94, 96, 91, 90, 94, 94, 107, 134, 108, 96, 90, + 94, 97, 95, 98, 106, 100, 92, 87, 88, 93, 97, 106, 115, 93, 97, 103, + 106, 109, 111, 120, 129, 109, 122, 123, 105, 90, 95, 110, 119, 111, 125, 128, + 111, 94, 89, 88, 87, 89, 86, 84, 85, 85, 87, 93, 101, 96, 91, 97, + 93, 72, 70, 80, 76, 80, 77, 76, 78, 79, 81, 87, 93, 86, 77, 69, + 65, 61, 56, 57, 61, 54, 61, 57, 70, 92, 74, 51, 66, 62, 80, 95, + 94, 85, 77, 72, 68, 65, 65, 64, 66, 71, 76, 80, 83, 94, 89, 83, + 79, 70, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 33, 37, 40, 40, 42, 46, 54, 61, 75, 73, 74, 80, 85, + 87, 89, 92, 97, 86, 75, 76, 85, 89, 83, 75, 90, 85, 80, 82, 100, + 114, 102, 79, 86, 87, 89, 103, 121, 115, 105, 109, 83, 83, 92, 97, 92, + 83, 94, 111, 83, 78, 82, 95, 108, 112, 116, 121, 88, 103, 113, 110, 108, + 113, 116, 110, 124, 127, 123, 110, 110, 118, 121, 114, 134, 138, 134, 120, 113, + 110, 102, 88, 94, 89, 87, 88, 89, 90, 98, 107, 97, 84, 92, 102, 95, + 93, 88, 65, 80, 78, 83, 92, 91, 86, 89, 99, 97, 86, 79, 74, 67, + 57, 52, 53, 56, 60, 53, 71, 102, 83, 53, 61, 47, 67, 87, 91, 86, + 82, 81, 79, 78, 70, 59, 54, 59, 71, 81, 89, 88, 85, 83, 80, 74, + 62, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 27, 43, 42, 34, 41, 52, 60, 70, 70, 78, 86, 91, 87, 83, 85, + 92, 98, 91, 81, 77, 77, 81, 83, 84, 86, 93, 109, 120, 123, 113, 94, + 79, 67, 80, 91, 98, 118, 130, 114, 83, 84, 98, 109, 107, 106, 104, 98, + 87, 74, 91, 84, 105, 118, 138, 106, 87, 115, 117, 115, 107, 99, 101, 116, + 129, 127, 128, 129, 124, 125, 127, 139, 145, 143, 127, 117, 112, 110, 99, 94, + 94, 100, 100, 99, 98, 99, 98, 94, 89, 79, 87, 92, 90, 92, 95, 92, + 86, 78, 76, 78, 80, 79, 75, 77, 81, 77, 73, 70, 66, 63, 60, 57, + 54, 60, 50, 60, 87, 94, 73, 60, 62, 62, 58, 79, 87, 87, 97, 92, + 75, 76, 72, 71, 70, 65, 62, 71, 83, 89, 85, 84, 83, 81, 68, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, + 55, 49, 38, 46, 58, 66, 76, 66, 73, 82, 88, 89, 90, 97, 106, 90, + 94, 93, 84, 74, 77, 92, 107, 104, 106, 108, 107, 101, 90, 76, 67, 91, + 85, 93, 115, 124, 110, 94, 88, 91, 96, 102, 108, 114, 113, 102, 89, 95, + 104, 112, 135, 137, 123, 101, 107, 92, 95, 101, 106, 113, 122, 132, 140, 133, + 129, 123, 121, 123, 128, 133, 135, 127, 117, 110, 112, 114, 111, 109, 112, 114, + 113, 110, 112, 115, 116, 109, 103, 88, 90, 90, 88, 89, 89, 85, 76, 75, + 72, 72, 74, 73, 69, 70, 75, 80, 77, 71, 67, 63, 61, 60, 58, 60, + 53, 61, 80, 87, 76, 65, 66, 61, 85, 68, 73, 85, 79, 86, 83, 94, + 79, 68, 71, 77, 76, 71, 68, 78, 84, 92, 93, 83, 68, 126, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 54, 43, + 32, 44, 59, 68, 76, 80, 84, 90, 88, 87, 88, 96, 103, 95, 89, 79, + 75, 80, 90, 100, 106, 115, 122, 130, 135, 132, 122, 110, 102, 99, 86, 88, + 105, 105, 88, 80, 89, 95, 100, 110, 120, 118, 106, 94, 88, 103, 117, 135, + 136, 129, 96, 91, 105, 103, 105, 112, 124, 138, 146, 148, 148, 133, 125, 115, + 114, 121, 128, 129, 126, 125, 119, 115, 119, 123, 124, 123, 127, 121, 119, 114, + 114, 116, 116, 109, 104, 95, 91, 87, 84, 86, 88, 80, 71, 82, 78, 78, + 79, 77, 73, 74, 79, 83, 79, 73, 67, 62, 59, 59, 58, 59, 57, 63, + 73, 79, 77, 72, 71, 67, 80, 85, 58, 79, 88, 55, 95, 92, 89, 86, + 83, 76, 68, 66, 68, 70, 74, 82, 88, 86, 75, 67, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 48, 57, 48, 40, 55, + 71, 78, 85, 88, 94, 94, 90, 84, 86, 88, 91, 91, 81, 68, 69, 81, + 93, 97, 95, 95, 105, 118, 124, 125, 121, 118, 116, 98, 91, 84, 81, 82, + 85, 88, 91, 98, 111, 129, 133, 113, 89, 85, 95, 108, 132, 144, 109, 104, + 83, 91, 92, 112, 111, 112, 116, 122, 123, 120, 115, 130, 121, 113, 113, 120, + 126, 128, 126, 135, 131, 128, 127, 127, 125, 122, 123, 125, 122, 117, 111, 105, + 103, 101, 101, 98, 92, 84, 83, 87, 89, 82, 75, 74, 69, 68, 68, 65, + 60, 61, 66, 79, 78, 74, 68, 63, 59, 59, 58, 58, 62, 67, 70, 75, + 79, 76, 72, 58, 95, 66, 79, 95, 72, 82, 80, 86, 91, 94, 89, 76, + 66, 65, 70, 73, 61, 58, 70, 84, 85, 75, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 36, 42, 54, 51, 47, 61, 72, 74, + 79, 79, 88, 91, 89, 87, 91, 92, 91, 75, 81, 83, 81, 78, 78, 86, + 94, 91, 89, 86, 83, 82, 87, 98, 107, 109, 99, 88, 84, 87, 91, 93, + 95, 108, 115, 124, 123, 105, 89, 96, 115, 133, 138, 132, 92, 95, 85, 97, + 98, 105, 104, 103, 101, 101, 102, 105, 109, 127, 126, 123, 121, 121, 124, 128, + 130, 139, 137, 134, 130, 126, 123, 119, 116, 130, 131, 126, 115, 104, 101, 106, + 112, 104, 95, 86, 86, 88, 89, 85, 78, 74, 69, 67, 65, 61, 57, 58, + 62, 71, 72, 74, 72, 69, 67, 68, 68, 61, 66, 70, 72, 76, 81, 76, + 68, 78, 59, 90, 84, 85, 104, 77, 87, 94, 88, 83, 83, 87, 85, 75, + 64, 79, 64, 54, 61, 74, 79, 76, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 44, 44, 60, 62, 58, 68, 75, 72, 72, 81, + 89, 93, 88, 88, 92, 93, 89, 86, 85, 84, 85, 86, 86, 85, 82, 84, + 84, 84, 85, 91, 102, 114, 120, 120, 98, 91, 103, 103, 89, 85, 96, 120, + 112, 104, 102, 104, 110, 122, 133, 139, 123, 104, 91, 100, 88, 95, 110, 101, + 103, 108, 109, 112, 118, 131, 141, 133, 136, 137, 133, 127, 124, 127, 131, 137, + 140, 140, 136, 134, 133, 130, 127, 133, 135, 132, 123, 113, 109, 117, 126, 112, + 102, 93, 93, 93, 89, 85, 82, 85, 78, 75, 73, 68, 63, 63, 68, 64, + 68, 73, 74, 75, 77, 81, 84, 72, 71, 72, 75, 80, 82, 73, 63, 83, + 81, 67, 94, 90, 83, 110, 86, 91, 92, 91, 87, 87, 87, 82, 77, 81, + 77, 74, 70, 65, 64, 73, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 45, 59, 80, 85, 81, 87, 91, 89, 89, 92, 98, 98, + 89, 87, 93, 95, 89, 102, 91, 82, 86, 97, 98, 86, 73, 74, 76, 84, + 94, 105, 113, 117, 117, 110, 100, 97, 102, 101, 92, 94, 105, 119, 114, 107, + 105, 114, 127, 134, 135, 118, 110, 93, 100, 104, 101, 97, 111, 107, 111, 117, + 120, 124, 129, 138, 144, 139, 143, 146, 143, 136, 132, 132, 134, 140, 146, 148, + 146, 145, 146, 144, 141, 135, 137, 135, 131, 125, 123, 124, 126, 118, 110, 105, + 104, 103, 98, 96, 97, 79, 72, 68, 65, 59, 54, 54, 59, 67, 70, 72, + 71, 71, 75, 83, 90, 86, 77, 72, 77, 83, 81, 69, 61, 91, 78, 86, + 80, 86, 95, 82, 100, 88, 98, 101, 91, 79, 77, 82, 86, 78, 82, 85, + 81, 69, 63, 73, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 184, 41, 50, 72, 80, 77, 84, 87, 87, 89, 97, 103, 101, 91, 90, + 99, 103, 98, 96, 97, 97, 94, 91, 87, 85, 83, 97, 92, 87, 85, 89, + 95, 99, 99, 96, 107, 105, 88, 85, 104, 119, 120, 108, 120, 127, 124, 123, + 128, 128, 124, 97, 119, 109, 114, 110, 128, 114, 114, 137, 139, 141, 142, 140, + 137, 136, 135, 142, 144, 148, 148, 145, 141, 139, 139, 142, 149, 152, 148, 147, + 148, 146, 141, 143, 142, 139, 137, 138, 135, 127, 121, 121, 115, 112, 115, 112, + 108, 108, 112, 84, 77, 72, 69, 63, 57, 58, 63, 74, 73, 71, 66, 63, + 67, 77, 85, 97, 80, 71, 77, 84, 79, 67, 61, 79, 100, 82, 80, 98, + 81, 72, 96, 100, 97, 89, 81, 82, 86, 82, 72, 76, 77, 80, 83, 79, + 74, 76, 79, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, + 30, 45, 61, 84, 89, 79, 81, 90, 90, 98, 103, 105, 100, 95, 92, 95, + 93, 97, 94, 96, 104, 107, 95, 78, 67, 82, 86, 92, 98, 102, 101, 99, + 94, 91, 89, 86, 88, 101, 116, 121, 118, 117, 115, 117, 124, 127, 121, 115, + 114, 114, 116, 121, 130, 133, 130, 132, 138, 149, 147, 144, 143, 144, 147, 150, + 151, 151, 151, 152, 153, 153, 151, 146, 142, 144, 147, 151, 152, 151, 149, 149, + 149, 146, 149, 150, 148, 144, 140, 142, 144, 135, 129, 123, 122, 120, 117, 118, + 121, 92, 81, 76, 80, 79, 70, 62, 61, 66, 78, 79, 65, 61, 73, 81, + 76, 80, 77, 75, 75, 75, 72, 64, 60, 67, 90, 102, 92, 82, 86, 88, + 87, 98, 92, 93, 99, 94, 80, 76, 81, 73, 79, 75, 71, 72, 70, 77, + 94, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, 32, 50, + 61, 82, 94, 88, 86, 96, 96, 101, 108, 110, 103, 98, 98, 97, 97, 114, + 103, 95, 97, 106, 118, 138, 154, 106, 95, 85, 84, 91, 94, 87, 80, 87, + 94, 102, 111, 120, 125, 119, 110, 110, 107, 107, 112, 114, 113, 115, 121, 139, + 140, 144, 150, 150, 145, 145, 150, 152, 152, 152, 153, 155, 157, 159, 160, 154, + 153, 153, 153, 154, 152, 148, 145, 147, 149, 152, 152, 151, 150, 150, 153, 149, + 150, 150, 147, 143, 141, 140, 141, 142, 135, 126, 124, 122, 120, 124, 129, 118, + 102, 87, 79, 76, 71, 64, 60, 62, 72, 71, 59, 58, 71, 77, 70, 76, + 73, 71, 70, 69, 66, 59, 54, 55, 75, 93, 98, 97, 98, 92, 85, 95, + 83, 85, 99, 98, 80, 70, 75, 71, 71, 63, 61, 67, 67, 71, 83, 91, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, 32, 53, 56, 77, + 97, 95, 91, 99, 102, 106, 112, 114, 109, 104, 102, 101, 100, 111, 107, 100, + 92, 88, 92, 108, 122, 126, 113, 98, 89, 88, 89, 88, 85, 84, 97, 111, + 120, 123, 121, 111, 101, 108, 106, 106, 109, 111, 115, 125, 137, 141, 143, 146, + 149, 147, 144, 143, 147, 155, 157, 159, 162, 164, 165, 165, 165, 160, 158, 156, + 155, 156, 155, 153, 151, 152, 153, 154, 154, 152, 153, 154, 156, 158, 156, 154, + 152, 151, 149, 146, 144, 144, 136, 128, 124, 121, 120, 124, 127, 133, 120, 102, + 87, 81, 77, 69, 60, 64, 71, 69, 59, 60, 72, 76, 70, 75, 73, 71, + 70, 69, 66, 59, 56, 56, 67, 84, 101, 111, 113, 105, 99, 96, 80, 78, + 94, 101, 87, 74, 73, 82, 76, 62, 59, 68, 69, 68, 76, 101, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 177, 23, 26, 50, 48, 68, 95, 98, + 93, 98, 103, 108, 114, 118, 111, 106, 105, 104, 103, 96, 102, 108, 107, 100, + 91, 90, 93, 121, 121, 119, 108, 93, 88, 94, 102, 89, 99, 108, 109, 107, + 106, 102, 97, 105, 108, 113, 118, 120, 123, 136, 149, 148, 150, 154, 156, 156, + 156, 157, 160, 158, 160, 161, 163, 164, 165, 164, 164, 162, 159, 156, 155, 155, + 155, 154, 153, 153, 154, 153, 152, 151, 152, 155, 158, 162, 158, 155, 154, 156, + 155, 152, 148, 142, 137, 132, 130, 125, 119, 117, 117, 125, 122, 115, 102, 92, + 86, 77, 66, 64, 72, 71, 61, 58, 67, 72, 70, 71, 69, 68, 68, 67, + 66, 62, 61, 64, 65, 73, 91, 106, 112, 112, 114, 108, 92, 78, 81, 95, + 100, 91, 78, 91, 84, 69, 63, 69, 67, 66, 73, 89, 147, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 20, 22, 23, 42, 40, 61, 89, 95, 93, 98, + 103, 110, 116, 119, 114, 107, 107, 107, 106, 110, 113, 113, 109, 107, 107, 107, + 105, 106, 115, 121, 116, 104, 96, 98, 103, 105, 112, 114, 110, 105, 105, 106, + 106, 102, 109, 121, 130, 131, 131, 139, 150, 154, 155, 158, 159, 160, 162, 164, + 166, 162, 161, 160, 159, 159, 159, 160, 160, 162, 159, 155, 154, 154, 155, 154, + 154, 153, 153, 152, 150, 149, 151, 154, 158, 154, 150, 148, 148, 151, 151, 151, + 148, 144, 142, 143, 143, 137, 124, 115, 108, 114, 117, 119, 110, 99, 90, 84, + 80, 61, 70, 70, 60, 52, 57, 64, 66, 62, 61, 61, 60, 61, 63, 64, + 66, 64, 61, 63, 77, 91, 100, 105, 112, 125, 114, 88, 69, 80, 104, 102, + 81, 84, 83, 72, 64, 64, 59, 62, 74, 66, 92, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 22, 24, 24, 34, 37, 60, 87, 94, 95, 102, 105, 115, + 121, 123, 118, 113, 112, 112, 111, 121, 118, 110, 105, 104, 109, 109, 106, 114, + 115, 116, 120, 122, 118, 110, 105, 127, 134, 138, 132, 130, 126, 127, 122, 115, + 122, 137, 145, 147, 142, 148, 153, 155, 157, 158, 156, 155, 158, 159, 158, 166, + 165, 163, 161, 160, 159, 160, 160, 162, 160, 156, 155, 155, 156, 155, 154, 153, + 153, 152, 151, 149, 151, 154, 157, 152, 151, 150, 150, 151, 152, 153, 152, 143, + 143, 146, 148, 140, 124, 112, 103, 114, 113, 116, 114, 103, 92, 89, 93, 65, + 71, 71, 62, 55, 58, 65, 67, 63, 61, 60, 58, 60, 65, 70, 76, 63, + 61, 62, 72, 88, 100, 103, 102, 129, 129, 106, 74, 71, 93, 99, 86, 78, + 83, 77, 70, 66, 60, 65, 81, 63, 91, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 22, 23, 23, 30, 41, 68, 89, 95, 104, 113, 109, 121, 128, 130, + 125, 120, 118, 118, 118, 112, 116, 119, 120, 127, 135, 134, 130, 133, 130, 128, + 131, 135, 138, 135, 133, 149, 154, 157, 153, 151, 149, 146, 140, 139, 143, 153, + 159, 160, 155, 159, 164, 165, 168, 169, 163, 162, 165, 166, 164, 163, 164, 164, + 164, 163, 162, 161, 160, 163, 161, 159, 158, 158, 158, 156, 155, 153, 154, 154, + 153, 152, 152, 155, 157, 154, 155, 155, 154, 152, 151, 154, 155, 147, 145, 145, + 145, 139, 125, 115, 108, 114, 105, 110, 122, 119, 102, 93, 97, 72, 71, 67, + 62, 64, 69, 71, 69, 68, 66, 62, 59, 60, 67, 76, 84, 68, 65, 60, + 66, 87, 109, 109, 99, 114, 127, 124, 100, 78, 79, 92, 102, 85, 90, 86, + 78, 74, 66, 68, 83, 78, 85, 255, 255, 255, 255, 255, 255, 255, 255, 177, + 19, 20, 19, 30, 47, 76, 94, 99, 111, 121, 116, 127, 133, 135, 130, 125, + 124, 124, 123, 129, 135, 136, 132, 132, 138, 138, 134, 140, 142, 142, 140, 138, + 141, 156, 166, 161, 163, 161, 157, 155, 156, 155, 151, 155, 155, 158, 162, 162, + 160, 163, 169, 161, 165, 168, 160, 161, 163, 167, 162, 160, 160, 165, 165, 167, + 163, 162, 160, 164, 162, 162, 160, 161, 160, 159, 156, 155, 155, 157, 155, 155, + 154, 157, 158, 154, 156, 157, 155, 150, 148, 149, 152, 156, 151, 148, 146, 140, + 130, 125, 122, 108, 98, 109, 133, 137, 114, 95, 94, 72, 65, 57, 57, 66, + 74, 72, 67, 69, 65, 60, 56, 56, 63, 76, 83, 72, 64, 51, 52, 80, + 112, 116, 98, 97, 117, 136, 126, 92, 71, 89, 120, 93, 96, 89, 81, 76, + 66, 64, 78, 89, 74, 138, 255, 255, 255, 255, 255, 255, 255, 15, 16, 19, + 20, 39, 61, 86, 102, 111, 112, 119, 124, 121, 126, 128, 131, 132, 130, 128, + 127, 131, 133, 136, 137, 139, 142, 146, 150, 151, 149, 149, 153, 159, 164, 167, + 167, 170, 170, 169, 164, 156, 152, 154, 156, 157, 155, 159, 164, 165, 162, 162, + 164, 165, 165, 167, 167, 167, 164, 162, 159, 165, 163, 163, 162, 163, 163, 166, + 167, 164, 166, 169, 164, 162, 159, 163, 164, 164, 161, 163, 160, 161, 158, 159, + 159, 163, 162, 159, 158, 157, 155, 155, 154, 160, 160, 156, 149, 141, 134, 129, + 126, 105, 114, 107, 111, 133, 131, 105, 96, 89, 74, 64, 66, 67, 60, 62, + 66, 66, 67, 74, 69, 55, 59, 75, 80, 72, 82, 72, 50, 59, 96, 117, + 110, 98, 104, 131, 118, 98, 83, 75, 120, 105, 84, 95, 71, 96, 65, 79, + 69, 90, 93, 86, 255, 255, 255, 255, 255, 255, 255, 18, 19, 19, 21, 42, + 74, 100, 105, 108, 118, 126, 125, 126, 128, 129, 130, 131, 128, 127, 125, 132, + 135, 139, 143, 145, 148, 152, 155, 160, 158, 157, 159, 164, 168, 169, 169, 166, + 166, 165, 162, 159, 157, 157, 158, 167, 164, 167, 171, 171, 168, 167, 169, 169, + 167, 168, 168, 167, 165, 164, 163, 163, 162, 162, 161, 162, 163, 164, 165, 164, + 164, 164, 162, 160, 159, 160, 162, 161, 160, 160, 159, 158, 157, 157, 156, 160, + 159, 158, 158, 158, 157, 155, 155, 154, 154, 151, 147, 139, 132, 126, 124, 119, + 121, 119, 124, 144, 142, 119, 100, 92, 78, 71, 75, 77, 69, 66, 68, 65, + 65, 70, 67, 56, 61, 74, 77, 78, 88, 83, 64, 57, 77, 101, 114, 108, + 102, 113, 122, 115, 88, 78, 110, 115, 94, 94, 77, 95, 76, 83, 76, 80, + 90, 87, 255, 255, 255, 255, 255, 255, 255, 22, 21, 20, 22, 52, 90, 111, + 106, 105, 120, 131, 128, 136, 137, 135, 135, 135, 133, 133, 131, 136, 140, 146, + 150, 153, 155, 158, 161, 168, 167, 165, 166, 168, 170, 170, 169, 169, 168, 167, + 167, 168, 169, 171, 170, 174, 171, 173, 176, 175, 171, 170, 172, 171, 170, 169, + 168, 167, 167, 167, 167, 168, 167, 167, 167, 167, 168, 169, 170, 168, 166, 164, + 163, 163, 164, 163, 162, 163, 162, 162, 161, 160, 160, 159, 159, 161, 161, 160, + 161, 161, 162, 160, 160, 149, 150, 150, 147, 140, 133, 126, 124, 120, 109, 111, + 121, 134, 138, 120, 91, 89, 77, 72, 79, 85, 79, 72, 69, 66, 62, 65, + 65, 57, 61, 70, 71, 80, 92, 94, 80, 60, 61, 89, 119, 116, 102, 93, + 122, 129, 93, 83, 97, 120, 105, 93, 87, 90, 86, 85, 83, 78, 92, 93, + 255, 255, 255, 255, 255, 255, 255, 23, 19, 19, 21, 73, 95, 108, 105, 105, + 119, 131, 132, 138, 137, 137, 137, 137, 137, 139, 140, 142, 146, 152, 156, 158, + 159, 161, 162, 169, 168, 167, 168, 168, 169, 168, 168, 171, 168, 167, 168, 172, + 175, 176, 174, 173, 170, 171, 174, 173, 170, 169, 172, 172, 170, 168, 165, 165, + 165, 167, 167, 167, 166, 167, 167, 168, 168, 169, 169, 170, 167, 163, 163, 165, + 166, 164, 161, 162, 162, 161, 161, 160, 160, 159, 159, 160, 160, 160, 160, 160, + 161, 159, 159, 150, 152, 152, 150, 143, 135, 128, 125, 129, 109, 112, 122, 131, + 141, 133, 101, 84, 71, 66, 73, 83, 82, 76, 70, 69, 61, 63, 66, 59, + 60, 64, 63, 69, 84, 91, 80, 61, 60, 82, 107, 110, 106, 85, 114, 124, + 92, 89, 88, 113, 110, 95, 98, 84, 92, 84, 89, 86, 96, 96, 255, 255, + 255, 255, 255, 255, 255, 21, 18, 22, 28, 95, 95, 99, 106, 112, 118, 128, + 138, 133, 133, 133, 133, 135, 137, 139, 142, 147, 151, 156, 159, 159, 159, 160, + 161, 163, 164, 165, 165, 165, 165, 165, 165, 167, 164, 161, 163, 167, 169, 170, + 168, 170, 167, 167, 170, 171, 169, 169, 173, 172, 169, 167, 163, 164, 164, 166, + 167, 161, 160, 162, 162, 163, 162, 163, 162, 166, 163, 159, 159, 161, 162, 160, + 157, 156, 156, 156, 155, 155, 155, 155, 154, 155, 155, 154, 154, 153, 153, 151, + 151, 154, 155, 155, 151, 144, 136, 127, 124, 130, 109, 109, 115, 122, 137, 138, + 114, 91, 77, 66, 68, 76, 78, 75, 69, 72, 62, 64, 68, 61, 58, 59, + 56, 57, 72, 77, 67, 59, 65, 75, 81, 97, 110, 91, 101, 106, 88, 94, + 87, 101, 110, 100, 108, 85, 95, 85, 93, 95, 99, 93, 255, 255, 255, 255, + 255, 255, 255, 24, 22, 31, 48, 106, 96, 97, 110, 119, 122, 129, 141, 136, + 136, 136, 137, 141, 143, 145, 147, 151, 154, 157, 159, 158, 158, 159, 160, 159, + 161, 163, 163, 162, 162, 162, 163, 166, 165, 163, 164, 165, 166, 168, 168, 169, + 166, 165, 168, 170, 168, 169, 173, 170, 168, 166, 164, 163, 163, 165, 166, 161, + 162, 163, 164, 164, 164, 164, 163, 167, 164, 162, 161, 161, 162, 161, 160, 157, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 155, 154, 154, 153, 151, 151, 155, + 156, 155, 151, 143, 135, 128, 125, 123, 111, 107, 106, 113, 126, 132, 123, 111, + 95, 79, 71, 72, 73, 72, 68, 73, 63, 66, 72, 64, 57, 57, 55, 61, + 71, 71, 64, 64, 72, 74, 70, 91, 107, 98, 92, 94, 91, 94, 92, 92, + 106, 103, 111, 91, 100, 90, 95, 103, 105, 99, 142, 255, 255, 255, 255, 255, + 181, 29, 29, 47, 73, 103, 105, 110, 118, 127, 131, 136, 142, 145, 145, 146, + 147, 150, 151, 152, 153, 152, 156, 158, 159, 160, 161, 163, 165, 163, 166, 168, + 168, 165, 163, 164, 165, 167, 168, 171, 170, 169, 169, 172, 174, 171, 167, 167, + 169, 168, 166, 167, 170, 172, 170, 169, 167, 166, 166, 167, 167, 168, 169, 170, + 171, 172, 171, 171, 168, 167, 167, 166, 164, 162, 162, 163, 164, 160, 160, 160, + 160, 160, 161, 161, 161, 159, 160, 159, 159, 159, 160, 158, 158, 157, 158, 156, + 152, 145, 139, 133, 131, 126, 129, 122, 113, 121, 128, 132, 139, 127, 113, 93, + 78, 73, 72, 72, 69, 71, 62, 68, 77, 67, 58, 59, 59, 69, 68, 67, + 68, 68, 67, 73, 81, 98, 98, 98, 91, 98, 101, 90, 98, 87, 96, 96, + 101, 95, 103, 95, 92, 103, 110, 110, 98, 255, 255, 255, 255, 255, 37, 34, + 38, 61, 93, 97, 113, 124, 125, 130, 139, 143, 140, 148, 147, 149, 150, 152, + 151, 152, 153, 153, 155, 157, 159, 159, 162, 165, 168, 167, 170, 172, 171, 168, + 165, 165, 166, 163, 166, 170, 169, 167, 167, 171, 175, 172, 167, 166, 167, 166, + 162, 163, 166, 172, 171, 170, 169, 168, 167, 167, 168, 167, 168, 170, 171, 172, + 171, 170, 167, 162, 163, 164, 162, 158, 157, 159, 162, 159, 159, 159, 159, 159, + 159, 159, 159, 157, 157, 157, 158, 160, 161, 160, 160, 160, 160, 158, 154, 148, + 144, 139, 139, 115, 129, 121, 107, 115, 116, 118, 134, 132, 119, 101, 83, 76, + 74, 74, 72, 68, 61, 69, 79, 69, 59, 61, 64, 66, 57, 57, 68, 64, + 54, 66, 92, 108, 89, 95, 93, 107, 110, 86, 103, 85, 88, 88, 90, 96, + 103, 97, 86, 94, 107, 114, 103, 255, 255, 255, 255, 255, 42, 23, 34, 92, + 97, 104, 111, 117, 125, 130, 133, 137, 137, 144, 146, 150, 151, 151, 150, 152, + 154, 154, 155, 156, 157, 157, 160, 165, 168, 170, 170, 170, 170, 170, 170, 170, + 170, 166, 166, 167, 167, 168, 169, 169, 169, 168, 167, 167, 166, 168, 169, 170, + 170, 169, 170, 170, 168, 165, 164, 164, 165, 173, 172, 172, 172, 173, 172, 169, + 164, 168, 165, 163, 163, 165, 166, 167, 167, 161, 161, 160, 160, 159, 159, 160, + 161, 156, 156, 156, 157, 159, 160, 159, 160, 158, 157, 158, 158, 150, 141, 139, + 146, 122, 121, 120, 117, 118, 121, 127, 132, 116, 128, 105, 74, 78, 83, 77, + 75, 65, 62, 70, 74, 66, 64, 66, 62, 65, 73, 61, 56, 65, 59, 55, + 74, 98, 112, 84, 98, 107, 89, 103, 95, 85, 74, 92, 92, 105, 89, 94, + 79, 94, 105, 112, 102, 255, 255, 255, 255, 255, 36, 25, 46, 102, 105, 114, + 120, 125, 132, 136, 139, 142, 143, 142, 144, 146, 148, 149, 150, 150, 152, 151, + 154, 157, 160, 161, 162, 165, 167, 168, 168, 168, 168, 168, 168, 168, 168, 169, + 169, 169, 170, 171, 171, 172, 172, 170, 169, 169, 169, 171, 172, 173, 173, 172, + 173, 174, 173, 171, 170, 171, 173, 175, 173, 172, 171, 171, 169, 166, 162, 167, + 164, 162, 162, 165, 167, 167, 167, 165, 165, 164, 162, 159, 158, 158, 159, 155, + 155, 155, 157, 158, 159, 158, 159, 158, 157, 157, 157, 150, 141, 139, 145, 130, + 127, 124, 117, 116, 116, 121, 126, 133, 119, 102, 95, 93, 82, 86, 103, 68, + 60, 65, 72, 64, 60, 63, 62, 62, 69, 59, 56, 63, 56, 51, 67, 90, + 108, 89, 90, 106, 100, 102, 102, 88, 76, 91, 92, 102, 90, 95, 81, 93, + 105, 113, 104, 255, 255, 255, 255, 177, 28, 30, 65, 113, 108, 119, 125, 130, + 138, 142, 145, 146, 146, 145, 147, 150, 151, 151, 152, 155, 157, 156, 160, 165, + 168, 169, 169, 170, 171, 172, 172, 172, 172, 172, 172, 172, 172, 169, 169, 169, + 170, 170, 170, 172, 172, 170, 170, 172, 172, 172, 173, 175, 175, 175, 174, 175, + 175, 174, 174, 176, 178, 181, 178, 175, 172, 171, 170, 168, 166, 166, 163, 161, + 161, 164, 166, 167, 167, 168, 168, 167, 164, 159, 156, 155, 156, 160, 160, 160, + 161, 162, 163, 162, 162, 156, 156, 156, 155, 150, 143, 140, 144, 132, 128, 123, + 115, 112, 112, 117, 122, 128, 104, 99, 105, 98, 90, 107, 127, 76, 61, 63, + 71, 64, 58, 61, 64, 65, 69, 63, 62, 66, 59, 53, 63, 81, 104, 101, + 82, 100, 110, 94, 108, 93, 80, 89, 92, 99, 92, 95, 84, 92, 103, 112, + 106, 255, 255, 255, 255, 24, 24, 36, 80, 116, 109, 120, 126, 132, 137, 141, + 144, 145, 145, 147, 149, 151, 151, 152, 153, 156, 158, 160, 163, 166, 167, 167, + 167, 168, 169, 170, 170, 170, 170, 170, 170, 170, 170, 163, 163, 163, 164, 164, + 165, 166, 166, 167, 167, 169, 169, 171, 172, 174, 174, 174, 173, 175, 173, 172, + 172, 175, 177, 182, 178, 175, 171, 171, 170, 169, 167, 162, 160, 159, 159, 162, + 165, 166, 166, 166, 168, 168, 164, 159, 154, 154, 155, 160, 160, 160, 161, 162, + 163, 161, 162, 155, 156, 155, 154, 149, 145, 142, 144, 133, 129, 124, 117, 115, + 116, 122, 127, 114, 102, 106, 104, 89, 96, 116, 117, 87, 66, 63, 73, 67, + 60, 64, 69, 65, 66, 65, 67, 67, 59, 53, 56, 71, 100, 117, 79, 91, + 110, 83, 110, 99, 85, 88, 93, 96, 95, 96, 87, 91, 100, 109, 107, 255, + 255, 255, 255, 26, 22, 44, 93, 114, 109, 121, 127, 132, 137, 140, 142, 143, + 143, 144, 145, 147, 147, 147, 148, 151, 154, 159, 159, 159, 158, 156, 156, 158, + 161, 162, 162, 162, 162, 162, 162, 162, 162, 160, 160, 160, 161, 162, 162, 163, + 163, 165, 166, 166, 167, 169, 171, 173, 173, 172, 171, 171, 168, 167, 167, 170, + 172, 174, 170, 168, 165, 166, 165, 165, 163, 161, 159, 158, 158, 161, 163, 164, + 164, 161, 164, 166, 163, 157, 153, 153, 155, 154, 154, 154, 154, 155, 156, 154, + 154, 155, 156, 156, 153, 150, 149, 145, 144, 135, 132, 127, 120, 119, 120, 125, + 130, 120, 109, 116, 114, 94, 92, 104, 99, 93, 70, 64, 71, 68, 65, 68, + 70, 62, 59, 61, 66, 62, 55, 50, 47, 57, 90, 125, 84, 84, 107, 82, + 113, 105, 91, 87, 97, 95, 100, 98, 90, 93, 97, 105, 108, 255, 255, 255, + 255, 24, 21, 53, 102, 110, 112, 126, 130, 135, 139, 143, 144, 145, 145, 147, + 148, 149, 148, 148, 150, 153, 156, 161, 160, 159, 156, 154, 155, 158, 160, 161, + 161, 161, 161, 161, 161, 161, 161, 163, 163, 163, 163, 165, 165, 166, 166, 166, + 167, 167, 169, 171, 174, 176, 176, 174, 173, 171, 169, 167, 167, 170, 173, 174, + 172, 169, 168, 168, 167, 166, 164, 164, 162, 159, 159, 161, 163, 164, 163, 157, + 162, 166, 163, 157, 152, 153, 155, 154, 154, 154, 154, 155, 155, 154, 154, 155, + 158, 156, 153, 152, 152, 149, 145, 133, 130, 126, 118, 114, 112, 115, 118, 124, + 108, 114, 126, 115, 95, 97, 106, 92, 73, 65, 68, 66, 70, 73, 68, 66, + 58, 63, 71, 64, 59, 55, 47, 49, 76, 121, 93, 84, 106, 92, 112, 111, + 97, 88, 102, 95, 105, 99, 93, 97, 96, 101, 110, 152, 255, 255, 255, 27, + 27, 63, 109, 110, 119, 129, 133, 137, 141, 145, 147, 146, 146, 151, 152, 154, + 153, 153, 154, 158, 161, 162, 164, 165, 164, 163, 163, 165, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 168, 168, 169, 170, 172, 172, 172, 173, 175, + 176, 179, 181, 183, 184, 178, 176, 175, 172, 171, 173, 176, 180, 179, 177, 175, + 174, 173, 171, 168, 165, 168, 166, 163, 162, 164, 165, 165, 164, 158, 163, 168, + 165, 157, 152, 153, 155, 159, 159, 158, 159, 159, 159, 157, 158, 156, 159, 157, + 153, 153, 156, 152, 146, 135, 132, 129, 120, 115, 111, 111, 113, 118, 115, 115, + 121, 123, 106, 98, 107, 92, 78, 70, 66, 67, 78, 80, 67, 72, 61, 68, + 77, 68, 65, 64, 52, 53, 67, 112, 104, 90, 108, 104, 104, 115, 101, 89, + 106, 97, 110, 101, 95, 104, 97, 100, 114, 110, 255, 255, 255, 36, 36, 72, + 113, 109, 123, 129, 133, 138, 142, 145, 147, 147, 146, 151, 151, 153, 152, 151, + 153, 157, 160, 157, 161, 165, 167, 167, 166, 167, 168, 166, 166, 166, 166, 166, + 166, 168, 166, 170, 170, 171, 171, 172, 172, 174, 174, 178, 179, 180, 182, 184, + 187, 189, 189, 182, 180, 180, 178, 178, 181, 185, 189, 181, 179, 177, 176, 174, + 170, 166, 164, 172, 170, 167, 166, 167, 167, 168, 166, 160, 166, 170, 167, 158, + 152, 152, 155, 158, 158, 157, 158, 158, 158, 156, 156, 156, 159, 158, 154, 154, + 156, 153, 146, 142, 139, 136, 129, 124, 121, 120, 122, 115, 136, 125, 105, 111, + 109, 92, 83, 92, 83, 75, 66, 69, 84, 87, 68, 72, 58, 67, 77, 67, + 65, 65, 51, 62, 65, 106, 112, 95, 109, 111, 93, 117, 104, 90, 109, 98, + 113, 101, 96, 109, 98, 100, 116, 117, 255, 255, 30, 29, 42, 87, 113, 114, + 121, 131, 136, 140, 140, 141, 142, 144, 146, 149, 150, 151, 152, 154, 155, 156, + 156, 164, 164, 165, 165, 166, 166, 167, 167, 167, 167, 167, 168, 169, 170, 173, + 173, 174, 173, 173, 172, 172, 173, 172, 172, 177, 175, 174, 177, 183, 188, 188, + 188, 187, 183, 181, 183, 188, 189, 185, 180, 173, 174, 174, 172, 171, 171, 174, + 176, 169, 168, 168, 169, 170, 170, 169, 167, 166, 165, 162, 160, 159, 158, 157, + 157, 156, 156, 157, 158, 158, 158, 157, 157, 153, 153, 154, 153, 152, 150, 148, + 143, 130, 129, 138, 119, 134, 126, 127, 107, 120, 129, 138, 136, 122, 103, 88, + 80, 86, 84, 75, 63, 69, 78, 76, 65, 70, 58, 64, 55, 71, 53, 56, + 47, 54, 69, 97, 121, 103, 93, 116, 111, 107, 97, 94, 106, 108, 100, 90, + 90, 110, 103, 91, 99, 116, 255, 255, 27, 28, 49, 94, 116, 116, 125, 132, + 137, 141, 143, 144, 145, 147, 149, 154, 155, 156, 157, 158, 159, 160, 161, 163, + 164, 164, 164, 165, 165, 166, 167, 168, 168, 168, 168, 169, 170, 172, 172, 174, + 174, 173, 173, 173, 174, 175, 174, 176, 175, 176, 179, 183, 186, 185, 182, 180, + 181, 181, 181, 182, 182, 183, 183, 180, 179, 176, 175, 174, 174, 174, 175, 169, + 169, 167, 169, 169, 170, 168, 165, 165, 164, 162, 160, 159, 159, 159, 159, 158, + 158, 158, 159, 158, 158, 156, 157, 151, 150, 151, 152, 153, 154, 153, 150, 138, + 128, 136, 128, 140, 124, 126, 119, 114, 123, 135, 141, 136, 121, 102, 89, 88, + 85, 78, 72, 76, 82, 77, 67, 80, 68, 72, 63, 74, 58, 60, 51, 56, + 67, 88, 112, 101, 93, 111, 103, 111, 100, 102, 105, 111, 97, 95, 93, 110, + 112, 97, 96, 115, 255, 255, 22, 27, 58, 100, 116, 116, 127, 132, 137, 142, + 144, 146, 148, 151, 153, 157, 157, 158, 159, 160, 161, 162, 162, 164, 164, 164, + 164, 165, 165, 166, 167, 173, 173, 172, 172, 173, 174, 174, 175, 176, 176, 176, + 177, 178, 178, 180, 181, 179, 178, 179, 182, 185, 184, 182, 179, 178, 182, 186, + 185, 182, 182, 186, 190, 180, 177, 174, 174, 176, 177, 176, 174, 175, 173, 170, + 172, 174, 175, 172, 168, 164, 163, 161, 160, 159, 159, 159, 160, 160, 159, 159, + 159, 158, 157, 155, 155, 161, 158, 157, 154, 152, 150, 150, 146, 144, 132, 139, + 140, 145, 126, 130, 135, 123, 126, 131, 137, 136, 124, 106, 92, 91, 85, 79, + 79, 83, 85, 79, 72, 82, 73, 75, 71, 78, 64, 63, 57, 62, 70, 83, + 106, 104, 97, 110, 102, 114, 99, 107, 97, 113, 91, 98, 92, 105, 120, 101, + 88, 110, 255, 255, 17, 28, 67, 103, 112, 113, 123, 130, 135, 140, 143, 145, + 148, 151, 153, 154, 154, 155, 156, 157, 158, 158, 159, 163, 163, 163, 164, 164, + 165, 166, 166, 172, 172, 171, 170, 171, 171, 172, 172, 171, 172, 172, 173, 175, + 177, 179, 179, 180, 181, 181, 180, 181, 181, 180, 178, 176, 181, 185, 186, 184, + 183, 184, 187, 173, 169, 166, 169, 175, 178, 176, 174, 178, 175, 170, 172, 175, + 177, 173, 169, 161, 160, 159, 158, 158, 158, 159, 159, 160, 160, 159, 157, 156, + 153, 153, 151, 162, 161, 156, 153, 150, 149, 149, 146, 141, 136, 141, 142, 140, + 131, 135, 143, 132, 129, 127, 126, 124, 118, 109, 101, 93, 85, 79, 80, 85, + 86, 81, 77, 74, 70, 73, 76, 78, 69, 63, 58, 63, 71, 78, 99, 103, + 97, 108, 104, 114, 95, 105, 86, 112, 86, 97, 86, 93, 118, 99, 78, 98, + 255, 178, 15, 34, 76, 103, 107, 109, 117, 126, 132, 137, 140, 143, 145, 149, + 151, 152, 152, 152, 153, 154, 155, 155, 155, 159, 159, 159, 160, 160, 161, 162, + 162, 164, 163, 163, 162, 163, 163, 163, 164, 166, 166, 167, 169, 171, 171, 173, + 174, 179, 177, 176, 175, 175, 177, 180, 181, 173, 174, 177, 180, 180, 179, 176, + 174, 171, 167, 165, 168, 174, 177, 175, 172, 173, 170, 166, 167, 168, 170, 168, + 164, 159, 159, 157, 156, 156, 156, 157, 157, 159, 159, 157, 156, 155, 152, 151, + 149, 151, 151, 150, 150, 151, 153, 155, 154, 132, 140, 142, 137, 130, 136, 139, + 140, 124, 125, 126, 125, 123, 120, 117, 115, 103, 94, 85, 82, 86, 89, 86, + 81, 70, 71, 73, 82, 77, 70, 59, 55, 57, 69, 71, 88, 95, 88, 101, + 104, 113, 94, 103, 82, 109, 86, 96, 83, 83, 110, 97, 74, 88, 255, 21, + 17, 45, 86, 103, 106, 111, 116, 126, 131, 136, 139, 142, 144, 147, 150, 153, + 154, 154, 154, 155, 155, 156, 156, 155, 155, 156, 156, 156, 157, 158, 158, 163, + 162, 162, 161, 163, 163, 164, 164, 170, 171, 170, 171, 173, 175, 177, 177, 174, + 174, 172, 171, 172, 176, 182, 185, 179, 177, 177, 177, 177, 176, 174, 172, 176, + 174, 172, 173, 176, 176, 172, 170, 172, 171, 168, 167, 166, 167, 167, 166, 160, + 159, 157, 156, 156, 156, 156, 156, 159, 158, 157, 156, 153, 152, 150, 150, 151, + 150, 150, 149, 150, 151, 152, 150, 130, 143, 140, 136, 124, 138, 136, 133, 117, + 122, 128, 130, 126, 118, 109, 104, 111, 107, 96, 87, 91, 99, 97, 87, 79, + 81, 78, 88, 75, 71, 56, 54, 61, 74, 69, 81, 93, 86, 95, 103, 109, + 99, 106, 90, 105, 88, 97, 89, 82, 100, 98, 81, 80, 255, 18, 21, 58, + 96, 105, 111, 122, 121, 129, 134, 138, 141, 143, 146, 148, 151, 156, 156, 156, + 156, 157, 157, 157, 158, 157, 157, 158, 158, 158, 159, 160, 160, 167, 167, 167, + 167, 169, 170, 171, 172, 176, 177, 177, 178, 179, 180, 182, 183, 173, 175, 177, + 179, 180, 184, 191, 195, 187, 186, 183, 177, 171, 170, 174, 179, 177, 177, 177, + 177, 176, 175, 173, 172, 172, 175, 174, 171, 166, 166, 168, 171, 163, 162, 160, + 158, 157, 156, 156, 156, 159, 159, 158, 158, 155, 154, 153, 153, 157, 155, 154, + 152, 150, 146, 144, 142, 140, 147, 139, 145, 128, 137, 128, 131, 122, 123, 127, + 131, 130, 121, 108, 98, 103, 109, 102, 91, 98, 116, 114, 98, 87, 89, 79, + 88, 70, 71, 57, 61, 73, 81, 66, 76, 94, 87, 91, 97, 99, 105, 113, + 102, 96, 87, 95, 99, 85, 90, 99, 90, 73, 255, 15, 25, 67, 103, 108, + 116, 130, 126, 132, 137, 141, 144, 146, 148, 150, 153, 156, 156, 157, 157, 157, + 157, 157, 158, 162, 162, 163, 163, 163, 164, 165, 165, 167, 167, 167, 168, 170, + 171, 173, 173, 175, 175, 175, 175, 177, 177, 179, 180, 175, 179, 185, 189, 191, + 195, 201, 204, 189, 188, 183, 172, 161, 160, 171, 182, 172, 174, 177, 177, 176, + 175, 174, 176, 168, 172, 173, 169, 162, 161, 165, 170, 166, 165, 162, 160, 159, + 158, 157, 157, 160, 160, 160, 157, 157, 156, 155, 153, 151, 152, 152, 153, 151, + 149, 148, 146, 151, 148, 137, 153, 134, 132, 119, 130, 126, 122, 121, 127, 134, + 134, 124, 113, 89, 102, 102, 92, 104, 129, 128, 108, 90, 90, 76, 85, 66, + 72, 61, 69, 78, 82, 59, 68, 91, 85, 83, 85, 88, 107, 118, 110, 88, + 83, 92, 106, 87, 83, 99, 95, 68, 255, 18, 32, 66, 103, 116, 111, 113, + 126, 132, 137, 141, 144, 145, 146, 147, 149, 156, 156, 157, 157, 157, 158, 158, + 158, 159, 161, 162, 164, 164, 163, 163, 163, 168, 168, 167, 167, 168, 169, 170, + 170, 168, 175, 181, 183, 180, 178, 180, 181, 175, 176, 178, 183, 189, 194, 196, + 197, 193, 187, 180, 176, 173, 172, 174, 178, 174, 170, 186, 172, 169, 180, 169, + 179, 173, 176, 177, 173, 167, 165, 166, 169, 162, 161, 159, 158, 156, 157, 160, + 162, 157, 163, 163, 159, 156, 156, 157, 154, 157, 154, 151, 151, 150, 150, 146, + 141, 147, 143, 144, 146, 137, 122, 117, 121, 122, 124, 122, 121, 123, 126, 122, + 116, 106, 96, 110, 121, 112, 115, 125, 119, 87, 88, 66, 76, 66, 70, 55, + 68, 74, 75, 77, 76, 76, 78, 76, 73, 79, 103, 118, 97, 105, 78, 86, + 103, 87, 97, 106, 91, 66, 188, 81, 87, 95, 104, 112, 118, 125, 131, 134, + 140, 144, 147, 148, 149, 151, 153, 157, 157, 157, 157, 158, 158, 158, 159, 160, + 161, 163, 164, 165, 164, 164, 163, 169, 168, 168, 168, 170, 171, 172, 173, 171, + 175, 179, 179, 176, 175, 179, 184, 185, 180, 178, 180, 191, 195, 196, 193, 189, + 186, 182, 179, 177, 175, 176, 177, 176, 173, 186, 175, 175, 186, 175, 183, 179, + 181, 179, 176, 170, 168, 168, 169, 164, 164, 163, 162, 160, 159, 159, 159, 157, + 163, 163, 159, 155, 156, 155, 152, 157, 153, 150, 147, 149, 150, 148, 144, 143, + 137, 138, 140, 134, 121, 116, 120, 123, 121, 115, 109, 110, 115, 116, 113, 115, + 104, 113, 122, 115, 119, 131, 127, 104, 106, 87, 93, 85, 88, 76, 89, 80, + 76, 75, 77, 78, 76, 73, 71, 74, 100, 120, 104, 108, 80, 83, 97, 90, + 100, 105, 90, 67, 121, 131, 128, 115, 103, 109, 124, 134, 134, 137, 143, 147, + 149, 151, 152, 155, 157, 156, 156, 157, 157, 158, 158, 158, 158, 160, 161, 163, + 164, 165, 164, 164, 163, 169, 169, 169, 169, 171, 173, 174, 175, 178, 179, 179, + 177, 176, 177, 184, 190, 190, 182, 178, 182, 194, 200, 199, 195, 186, 185, 183, + 181, 179, 178, 178, 177, 177, 175, 183, 176, 179, 188, 180, 182, 182, 182, 178, + 175, 172, 170, 168, 166, 166, 166, 164, 163, 162, 160, 158, 156, 160, 165, 166, + 163, 160, 161, 160, 156, 156, 153, 149, 146, 147, 147, 147, 144, 141, 134, 132, + 136, 134, 125, 120, 122, 123, 121, 115, 108, 108, 112, 112, 108, 118, 108, 111, + 117, 114, 120, 131, 132, 119, 121, 104, 102, 92, 90, 80, 91, 90, 78, 75, + 80, 82, 75, 69, 68, 69, 97, 123, 116, 113, 87, 85, 95, 91, 100, 101, + 86, 68, 128, 134, 121, 108, 102, 112, 126, 131, 131, 139, 143, 147, 149, 151, + 152, 155, 158, 155, 155, 155, 156, 156, 156, 157, 157, 159, 160, 162, 163, 163, + 163, 163, 162, 168, 168, 168, 169, 171, 173, 175, 176, 179, 178, 178, 175, 174, + 175, 183, 186, 177, 175, 175, 181, 191, 196, 196, 193, 184, 184, 182, 178, 176, + 179, 179, 178, 177, 176, 178, 175, 178, 184, 178, 175, 178, 176, 172, 171, 170, + 170, 167, 164, 166, 164, 160, 158, 158, 158, 157, 157, 160, 164, 165, 160, 160, + 159, 158, 155, 153, 152, 148, 147, 145, 143, 142, 138, 141, 132, 129, 135, 136, + 129, 124, 126, 114, 117, 117, 113, 110, 109, 104, 97, 109, 100, 100, 106, 110, + 115, 123, 127, 115, 118, 106, 98, 92, 87, 80, 88, 91, 76, 70, 77, 79, + 69, 60, 59, 62, 89, 115, 117, 108, 89, 87, 93, 87, 96, 91, 77, 67, + 120, 125, 104, 95, 105, 119, 123, 126, 134, 139, 144, 146, 148, 149, 150, 154, + 156, 153, 153, 153, 154, 154, 155, 155, 155, 157, 159, 160, 162, 162, 161, 161, + 161, 167, 167, 167, 168, 170, 172, 174, 175, 169, 167, 170, 168, 168, 168, 172, + 173, 163, 167, 174, 178, 182, 181, 183, 183, 183, 184, 179, 172, 171, 177, 180, + 179, 178, 180, 176, 176, 178, 178, 177, 168, 172, 171, 167, 168, 168, 169, 168, + 165, 165, 160, 153, 150, 152, 155, 158, 159, 153, 156, 155, 152, 152, 153, 150, + 146, 149, 151, 149, 148, 144, 139, 133, 131, 138, 129, 127, 133, 135, 129, 125, + 127, 109, 113, 114, 109, 104, 102, 96, 89, 94, 90, 89, 96, 106, 109, 111, + 117, 109, 113, 108, 98, 103, 97, 94, 98, 86, 72, 65, 70, 71, 62, 53, + 50, 57, 77, 100, 110, 96, 89, 88, 92, 82, 90, 80, 68, 67, 129, 126, + 104, 98, 110, 123, 123, 128, 142, 142, 146, 148, 148, 148, 150, 153, 155, 153, + 153, 153, 154, 154, 154, 155, 155, 158, 159, 160, 162, 162, 162, 162, 161, 167, + 167, 167, 168, 170, 172, 173, 173, 166, 166, 169, 169, 170, 170, 170, 169, 168, + 173, 181, 183, 180, 177, 177, 178, 183, 185, 179, 169, 168, 176, 180, 177, 179, + 187, 179, 181, 181, 176, 179, 168, 170, 170, 169, 169, 169, 170, 170, 169, 166, + 159, 150, 146, 150, 155, 159, 161, 154, 156, 155, 152, 151, 154, 151, 146, 148, + 150, 150, 148, 142, 137, 131, 130, 134, 127, 127, 133, 133, 125, 122, 125, 117, + 118, 115, 106, 100, 100, 100, 98, 87, 87, 83, 90, 104, 104, 100, 108, 114, + 117, 115, 102, 113, 103, 100, 95, 89, 82, 76, 75, 74, 70, 62, 55, 65, + 76, 92, 108, 91, 96, 96, 96, 82, 90, 75, 63, 70, 117, 115, 107, 107, + 114, 123, 127, 134, 144, 148, 151, 152, 151, 150, 151, 154, 157, 154, 154, 155, + 155, 156, 156, 156, 156, 160, 161, 162, 164, 164, 163, 163, 163, 170, 170, 170, + 170, 171, 172, 173, 173, 173, 172, 173, 173, 175, 176, 175, 173, 180, 183, 185, + 185, 183, 181, 181, 181, 180, 186, 182, 171, 170, 178, 180, 175, 176, 189, 180, + 185, 182, 173, 182, 171, 169, 172, 172, 171, 168, 168, 169, 171, 170, 162, 153, + 150, 153, 158, 160, 160, 161, 161, 160, 158, 158, 161, 158, 152, 149, 150, 148, + 145, 140, 138, 136, 137, 133, 130, 132, 137, 134, 124, 121, 125, 121, 124, 121, + 113, 106, 105, 106, 103, 88, 90, 82, 85, 102, 99, 92, 102, 113, 114, 115, + 99, 118, 106, 100, 88, 94, 96, 93, 83, 80, 82, 76, 65, 76, 79, 88, + 109, 89, 102, 100, 96, 89, 96, 76, 64, 76, 125, 96, 105, 112, 114, 122, + 132, 138, 137, 153, 156, 156, 154, 153, 154, 156, 159, 156, 156, 157, 157, 157, + 158, 158, 158, 162, 163, 164, 166, 166, 165, 165, 165, 172, 172, 171, 171, 171, + 172, 174, 173, 176, 175, 174, 174, 176, 177, 177, 177, 185, 181, 178, 179, 182, + 183, 183, 182, 179, 187, 185, 175, 173, 180, 180, 172, 171, 188, 179, 185, 182, + 171, 185, 173, 168, 170, 171, 169, 165, 163, 166, 168, 174, 167, 158, 155, 158, + 161, 160, 156, 162, 163, 161, 157, 160, 162, 159, 153, 151, 151, 147, 142, 138, + 139, 143, 146, 135, 133, 137, 142, 137, 125, 122, 127, 113, 120, 123, 118, 111, + 107, 102, 97, 92, 93, 83, 81, 98, 95, 86, 97, 97, 99, 106, 95, 123, + 115, 112, 97, 89, 100, 98, 84, 80, 86, 81, 68, 76, 75, 81, 104, 83, + 99, 97, 87, 96, 102, 79, 67, 81, 119, 102, 101, 108, 123, 132, 132, 134, + 140, 157, 155, 153, 152, 153, 155, 157, 157, 159, 159, 159, 158, 158, 157, 157, + 157, 164, 166, 167, 167, 165, 165, 166, 167, 169, 169, 169, 170, 171, 172, 175, + 174, 178, 181, 183, 181, 177, 177, 184, 190, 185, 189, 193, 192, 187, 183, 186, + 190, 178, 181, 184, 183, 181, 177, 174, 174, 183, 183, 183, 182, 180, 177, 175, + 172, 171, 168, 166, 165, 166, 166, 167, 166, 159, 162, 162, 159, 155, 155, 161, + 165, 159, 157, 157, 157, 157, 155, 154, 153, 145, 149, 151, 150, 145, 140, 138, + 137, 146, 140, 132, 127, 125, 123, 120, 117, 116, 118, 120, 120, 117, 115, 113, + 111, 96, 88, 85, 86, 86, 84, 87, 94, 98, 107, 104, 100, 109, 111, 104, + 101, 100, 96, 99, 94, 78, 75, 83, 81, 79, 79, 81, 86, 91, 93, 94, + 91, 90, 87, 87, 77, 62, 110, 96, 97, 103, 111, 119, 125, 135, 149, 154, + 155, 154, 153, 154, 156, 157, 158, 161, 160, 159, 159, 158, 159, 159, 160, 163, + 165, 167, 168, 167, 167, 169, 171, 169, 169, 169, 170, 171, 173, 175, 176, 177, + 179, 181, 178, 176, 175, 177, 179, 189, 187, 186, 188, 191, 194, 193, 190, 191, + 188, 183, 181, 182, 180, 176, 173, 184, 183, 182, 181, 180, 178, 176, 173, 171, + 168, 165, 164, 165, 167, 167, 166, 160, 161, 161, 157, 153, 153, 157, 161, 160, + 158, 159, 159, 157, 156, 154, 152, 153, 154, 152, 149, 144, 140, 137, 136, 139, + 136, 133, 133, 134, 133, 130, 127, 117, 115, 113, 112, 112, 111, 109, 105, 98, + 92, 89, 89, 85, 80, 82, 88, 96, 105, 101, 98, 106, 107, 99, 98, 101, + 103, 110, 103, 81, 74, 84, 86, 76, 76, 76, 77, 80, 83, 88, 90, 87, + 87, 90, 87, 71, 96, 77, 85, 101, 115, 124, 127, 135, 146, 152, 154, 154, + 154, 155, 156, 158, 159, 161, 160, 160, 159, 159, 160, 162, 164, 162, 164, 166, + 167, 167, 168, 171, 173, 167, 168, 168, 170, 172, 174, 176, 177, 175, 177, 179, + 180, 181, 180, 179, 177, 191, 191, 191, 188, 189, 191, 193, 194, 196, 188, 179, + 177, 179, 180, 179, 174, 184, 183, 181, 178, 177, 176, 175, 174, 171, 167, 164, + 164, 165, 166, 166, 165, 165, 166, 165, 161, 157, 156, 159, 161, 161, 159, 159, + 158, 156, 155, 153, 152, 149, 147, 146, 146, 145, 145, 145, 144, 132, 132, 131, + 130, 128, 124, 118, 113, 122, 118, 114, 113, 114, 114, 111, 106, 100, 97, 96, + 93, 86, 79, 78, 82, 94, 102, 97, 94, 101, 100, 93, 93, 99, 106, 118, + 110, 83, 72, 82, 86, 81, 79, 76, 73, 74, 78, 86, 91, 80, 85, 91, + 97, 82, 79, 65, 74, 87, 101, 112, 121, 129, 137, 149, 153, 155, 155, 157, + 157, 159, 160, 162, 160, 159, 158, 158, 160, 163, 165, 162, 164, 166, 167, 167, + 167, 169, 171, 167, 168, 169, 170, 172, 175, 177, 179, 174, 175, 177, 181, 186, + 187, 187, 183, 190, 193, 196, 190, 182, 178, 185, 194, 186, 181, 174, 173, 175, + 177, 178, 176, 182, 180, 178, 175, 174, 173, 173, 172, 168, 165, 162, 162, 163, + 164, 164, 163, 165, 166, 165, 162, 159, 158, 161, 162, 161, 158, 155, 153, 150, + 149, 149, 149, 147, 143, 139, 139, 140, 144, 144, 143, 138, 137, 136, 134, 129, + 123, 116, 112, 117, 117, 116, 115, 114, 113, 111, 110, 101, 101, 101, 96, 88, + 81, 78, 80, 86, 93, 90, 89, 95, 94, 88, 91, 96, 101, 113, 106, 81, + 70, 77, 78, 86, 80, 74, 72, 75, 81, 85, 87, 75, 82, 87, 101, 86, + 68, 68, 61, 55, 59, 78, 106, 127, 138, 144, 148, 152, 154, 157, 157, 159, + 161, 162, 160, 159, 157, 157, 159, 162, 164, 163, 165, 166, 166, 165, 164, 166, + 167, 167, 168, 169, 170, 172, 175, 177, 179, 175, 174, 175, 177, 183, 185, 186, + 185, 190, 190, 189, 183, 182, 179, 183, 186, 178, 177, 176, 174, 172, 172, 175, + 176, 178, 176, 175, 172, 170, 169, 169, 169, 166, 163, 160, 160, 161, 162, 162, + 161, 158, 158, 158, 157, 156, 156, 158, 158, 160, 155, 150, 146, 144, 143, 144, + 145, 153, 147, 138, 134, 133, 133, 130, 128, 128, 128, 128, 126, 122, 119, 116, + 114, 102, 107, 111, 111, 107, 103, 103, 104, 98, 100, 100, 95, 87, 82, 80, + 79, 78, 85, 83, 84, 91, 89, 84, 89, 91, 93, 102, 101, 84, 76, 76, + 71, 84, 76, 70, 72, 79, 83, 80, 75, 71, 79, 79, 100, 84, 64, 60, + 53, 47, 50, 74, 103, 123, 130, 136, 143, 150, 154, 157, 158, 160, 163, 163, + 161, 161, 159, 158, 159, 161, 162, 164, 165, 166, 166, 164, 163, 164, 166, 167, + 168, 168, 170, 172, 174, 176, 176, 178, 179, 179, 180, 181, 182, 184, 185, 200, + 187, 178, 182, 195, 200, 194, 185, 178, 181, 180, 176, 171, 169, 172, 175, 176, + 175, 174, 171, 169, 168, 167, 166, 165, 162, 160, 159, 160, 161, 161, 161, 158, + 158, 157, 157, 158, 159, 160, 158, 158, 154, 150, 145, 142, 141, 140, 140, 146, + 141, 133, 128, 126, 126, 124, 124, 127, 128, 128, 125, 119, 114, 111, 110, 101, + 104, 107, 106, 103, 100, 99, 100, 95, 96, 94, 89, 84, 83, 80, 75, 73, + 80, 80, 81, 87, 82, 78, 87, 86, 84, 92, 95, 87, 84, 82, 73, 83, + 77, 75, 79, 86, 88, 81, 74, 69, 78, 72, 100, 83, 69, 57, 58, 59, + 64, 83, 104, 115, 115, 130, 138, 147, 153, 155, 156, 162, 165, 164, 163, 164, + 162, 161, 160, 161, 162, 162, 164, 165, 165, 164, 164, 166, 168, 167, 167, 167, + 168, 169, 171, 173, 174, 175, 178, 182, 183, 182, 179, 180, 182, 194, 185, 180, + 184, 195, 199, 194, 187, 183, 181, 175, 170, 169, 170, 172, 173, 175, 175, 174, + 172, 171, 169, 167, 166, 166, 164, 161, 160, 161, 163, 163, 162, 163, 162, 161, + 161, 162, 162, 162, 159, 155, 156, 156, 154, 149, 144, 139, 136, 134, 133, 130, + 126, 122, 123, 126, 127, 138, 141, 144, 141, 134, 127, 121, 119, 117, 111, 105, + 104, 106, 107, 103, 99, 99, 98, 92, 87, 87, 89, 83, 74, 74, 78, 79, + 81, 84, 76, 72, 82, 80, 78, 87, 93, 88, 88, 89, 80, 79, 80, 81, + 84, 86, 85, 81, 78, 70, 80, 71, 103, 85, 73, 68, 69, 66, 62, 73, + 92, 107, 111, 127, 134, 146, 152, 154, 156, 160, 166, 166, 166, 166, 165, 163, + 162, 162, 161, 161, 163, 165, 166, 166, 167, 169, 171, 167, 167, 167, 168, 169, + 170, 171, 170, 161, 169, 177, 178, 176, 174, 175, 177, 174, 181, 185, 183, 177, + 175, 179, 184, 184, 177, 166, 163, 167, 173, 176, 176, 175, 176, 176, 175, 174, + 171, 168, 166, 168, 165, 163, 162, 163, 164, 164, 164, 164, 162, 160, 160, 160, + 159, 158, 156, 155, 157, 161, 162, 156, 148, 139, 133, 136, 136, 133, 127, 119, + 116, 119, 122, 117, 122, 130, 134, 130, 124, 120, 118, 130, 116, 101, 99, 106, + 110, 104, 96, 105, 102, 95, 88, 90, 94, 86, 76, 76, 80, 79, 81, 84, + 72, 67, 78, 73, 73, 84, 91, 87, 88, 92, 86, 71, 78, 83, 84, 80, + 76, 77, 80, 70, 82, 72, 107, 89, 74, 88, 88, 96, 104, 105, 96, 97, + 105, 119, 133, 142, 138, 145, 163, 167, 156, 162, 162, 164, 163, 164, 165, 166, + 166, 165, 167, 168, 167, 165, 163, 163, 164, 159, 169, 167, 156, 155, 164, 160, + 144, 153, 154, 156, 158, 164, 168, 167, 162, 166, 167, 169, 169, 166, 164, 164, + 166, 172, 175, 176, 172, 168, 166, 170, 175, 179, 179, 180, 178, 174, 170, 167, + 164, 168, 167, 166, 165, 164, 164, 164, 164, 164, 163, 162, 161, 159, 158, 157, + 157, 153, 153, 153, 154, 154, 155, 154, 154, 147, 147, 143, 134, 124, 119, 121, + 123, 123, 121, 116, 122, 134, 128, 116, 116, 126, 126, 118, 105, 97, 99, 105, + 108, 108, 102, 98, 95, 89, 84, 85, 90, 70, 75, 81, 83, 80, 72, 63, + 57, 67, 66, 87, 85, 95, 90, 96, 78, 72, 81, 88, 87, 82, 78, 76, + 74, 75, 69, 88, 94, 90, 74, 92, 98, 111, 121, 122, 113, 105, 101, 106, + 116, 129, 138, 148, 154, 156, 155, 164, 163, 165, 165, 166, 166, 166, 167, 165, + 169, 174, 176, 172, 164, 158, 154, 153, 159, 157, 148, 145, 145, 137, 123, 118, + 124, 127, 122, 118, 122, 132, 138, 135, 139, 144, 147, 148, 153, 160, 167, 162, + 168, 174, 176, 176, 172, 171, 171, 174, 174, 175, 174, 171, 167, 164, 162, 167, + 166, 165, 164, 163, 163, 163, 163, 162, 162, 161, 160, 158, 157, 156, 156, 154, + 154, 154, 155, 156, 156, 157, 155, 151, 152, 149, 144, 135, 128, 123, 121, 125, + 134, 130, 123, 131, 133, 124, 119, 112, 115, 113, 107, 105, 110, 115, 117, 108, + 104, 100, 98, 91, 85, 84, 87, 82, 80, 75, 68, 62, 60, 62, 65, 59, + 58, 80, 81, 92, 89, 97, 81, 79, 80, 82, 84, 82, 78, 73, 72, 82, + 75, 91, 96, 90, 73, 95, 109, 124, 131, 133, 127, 117, 106, 103, 105, 118, + 138, 149, 150, 153, 160, 164, 163, 165, 164, 164, 164, 165, 165, 166, 168, 173, + 174, 169, 162, 155, 151, 141, 143, 145, 147, 145, 138, 128, 121, 107, 109, 106, + 96, 92, 99, 109, 115, 131, 134, 136, 135, 133, 135, 142, 148, 156, 161, 166, + 171, 174, 174, 175, 174, 172, 172, 173, 172, 170, 167, 167, 165, 165, 164, 163, + 162, 161, 161, 161, 161, 162, 162, 161, 160, 159, 158, 157, 156, 155, 155, 156, + 156, 157, 157, 157, 158, 155, 156, 156, 155, 149, 140, 128, 120, 123, 142, 139, + 124, 126, 132, 127, 121, 113, 116, 115, 111, 109, 110, 110, 107, 108, 105, 102, + 102, 97, 89, 83, 84, 82, 82, 80, 74, 66, 60, 57, 57, 62, 59, 78, + 76, 84, 80, 88, 71, 82, 75, 74, 80, 82, 75, 71, 73, 84, 76, 91, + 94, 145, 78, 94, 112, 125, 126, 126, 130, 128, 119, 112, 105, 110, 124, 139, + 146, 152, 157, 159, 160, 162, 160, 161, 161, 162, 161, 167, 166, 167, 165, 161, + 158, 157, 157, 139, 137, 141, 151, 150, 138, 127, 125, 119, 110, 99, 96, 104, + 111, 110, 102, 104, 111, 119, 121, 123, 127, 136, 145, 152, 152, 152, 155, 162, + 168, 175, 177, 168, 169, 171, 171, 170, 168, 168, 166, 163, 163, 161, 160, 159, + 159, 159, 159, 163, 162, 162, 161, 160, 159, 158, 158, 155, 155, 155, 156, 156, + 157, 156, 156, 156, 156, 156, 159, 157, 149, 136, 124, 117, 134, 136, 126, 124, + 123, 119, 122, 119, 120, 116, 109, 105, 104, 99, 94, 105, 102, 101, 103, 101, + 93, 85, 84, 79, 82, 83, 79, 71, 61, 53, 50, 61, 58, 75, 70, 80, + 74, 83, 67, 75, 68, 68, 77, 77, 72, 73, 82, 79, 74, 88, 91, 255, + 89, 85, 108, 125, 125, 121, 127, 132, 131, 123, 114, 105, 105, 120, 139, 149, + 147, 158, 159, 161, 160, 160, 160, 162, 161, 164, 163, 164, 162, 159, 156, 155, + 155, 143, 137, 140, 148, 146, 130, 120, 119, 119, 115, 111, 112, 121, 128, 122, + 109, 105, 110, 117, 118, 116, 115, 117, 120, 139, 138, 137, 141, 149, 156, 162, + 164, 159, 160, 162, 163, 163, 163, 161, 160, 162, 161, 160, 159, 158, 158, 158, + 158, 160, 160, 159, 158, 158, 157, 157, 156, 155, 155, 154, 154, 154, 155, 154, + 154, 156, 154, 152, 156, 159, 155, 144, 134, 115, 122, 127, 131, 130, 116, 112, + 126, 115, 116, 112, 105, 101, 102, 101, 99, 102, 98, 99, 103, 102, 97, 91, + 89, 87, 85, 79, 73, 66, 62, 60, 60, 54, 49, 67, 63, 76, 74, 87, + 73, 60, 61, 67, 74, 71, 69, 76, 92, 79, 76, 91, 92, 255, 205, 86, + 104, 122, 126, 126, 126, 131, 135, 135, 129, 117, 106, 114, 133, 143, 141, 159, + 160, 161, 162, 163, 164, 166, 165, 161, 164, 168, 169, 164, 157, 150, 146, 143, + 138, 138, 145, 145, 137, 131, 132, 122, 133, 143, 144, 143, 143, 144, 143, 146, + 145, 144, 138, 130, 120, 112, 108, 125, 128, 133, 138, 143, 145, 146, 147, 154, + 155, 158, 160, 162, 162, 161, 161, 162, 161, 160, 158, 158, 157, 157, 157, 156, + 156, 155, 155, 154, 154, 153, 153, 155, 155, 153, 153, 153, 153, 152, 152, 154, + 152, 150, 154, 159, 158, 152, 144, 123, 121, 123, 134, 138, 120, 114, 130, 119, + 121, 118, 109, 102, 102, 104, 105, 101, 96, 95, 99, 101, 97, 94, 93, 88, + 86, 86, 86, 85, 81, 72, 65, 58, 53, 66, 61, 70, 69, 80, 66, 53, + 60, 68, 68, 65, 68, 78, 92, 81, 82, 98, 95, 255, 255, 103, 108, 116, + 121, 123, 123, 127, 133, 137, 136, 133, 130, 126, 124, 131, 139, 158, 159, 160, + 163, 164, 165, 168, 167, 164, 166, 171, 173, 169, 161, 155, 151, 148, 145, 144, + 147, 151, 153, 155, 156, 149, 161, 169, 165, 160, 159, 162, 163, 158, 155, 154, + 154, 154, 151, 146, 142, 127, 132, 137, 139, 140, 140, 142, 145, 151, 153, 155, + 158, 161, 162, 162, 162, 162, 161, 160, 158, 158, 157, 157, 158, 156, 156, 155, + 155, 155, 154, 154, 154, 156, 156, 156, 156, 154, 154, 154, 154, 153, 153, 153, + 157, 161, 160, 156, 151, 136, 132, 127, 131, 139, 131, 123, 131, 128, 134, 133, + 121, 109, 106, 109, 111, 104, 97, 92, 95, 98, 97, 94, 93, 85, 85, 89, + 98, 104, 99, 83, 69, 67, 59, 69, 58, 64, 59, 68, 53, 53, 64, 70, + 63, 61, 68, 77, 80, 75, 80, 99, 94, 255, 255, 123, 111, 103, 110, 116, + 117, 125, 135, 130, 131, 141, 148, 133, 109, 112, 131, 153, 154, 157, 159, 162, + 164, 166, 167, 169, 169, 172, 169, 167, 165, 165, 166, 161, 159, 154, 150, 152, + 157, 162, 162, 169, 169, 166, 161, 161, 163, 160, 154, 168, 161, 156, 154, 154, + 152, 147, 141, 141, 143, 143, 140, 137, 139, 147, 155, 145, 146, 150, 153, 156, + 158, 158, 158, 160, 159, 158, 157, 156, 156, 156, 158, 159, 159, 158, 158, 158, + 158, 159, 157, 157, 157, 157, 157, 155, 155, 155, 155, 154, 156, 157, 161, 164, + 163, 159, 154, 143, 143, 131, 125, 135, 139, 131, 129, 128, 138, 141, 131, 119, + 115, 120, 124, 107, 97, 90, 92, 95, 95, 93, 94, 94, 84, 80, 84, 95, + 99, 92, 82, 67, 59, 68, 56, 63, 59, 69, 54, 57, 69, 71, 60, 59, + 70, 74, 68, 64, 73, 94, 89, 255, 255, 137, 123, 107, 95, 96, 107, 120, + 128, 133, 128, 130, 141, 143, 132, 122, 120, 146, 149, 153, 156, 161, 164, 169, + 171, 171, 170, 172, 171, 171, 170, 167, 166, 164, 163, 162, 162, 162, 161, 164, + 165, 165, 162, 159, 159, 161, 160, 156, 152, 161, 159, 159, 158, 156, 154, 152, + 150, 148, 146, 148, 154, 161, 161, 156, 148, 151, 155, 151, 139, 139, 147, 149, + 141, 156, 157, 158, 157, 156, 154, 156, 159, 158, 158, 159, 159, 159, 158, 157, + 156, 159, 159, 159, 159, 157, 157, 157, 157, 159, 160, 161, 162, 161, 162, 163, + 162, 147, 144, 137, 130, 130, 137, 137, 131, 138, 140, 144, 144, 135, 123, 119, + 122, 129, 117, 99, 88, 91, 98, 99, 94, 96, 87, 84, 87, 91, 89, 88, + 91, 72, 76, 72, 65, 61, 64, 64, 62, 56, 65, 67, 64, 65, 72, 71, + 68, 67, 67, 101, 86, 255, 255, 128, 130, 121, 105, 107, 124, 134, 132, 142, + 143, 142, 138, 138, 140, 138, 134, 129, 136, 148, 160, 167, 171, 173, 172, 173, + 173, 173, 174, 172, 171, 169, 168, 165, 165, 163, 163, 161, 162, 163, 164, 164, + 161, 157, 156, 158, 159, 157, 156, 147, 148, 150, 153, 155, 156, 158, 158, 150, + 146, 144, 147, 153, 157, 158, 155, 170, 174, 170, 160, 160, 167, 169, 162, 154, + 154, 155, 153, 151, 149, 152, 153, 158, 158, 159, 160, 160, 160, 159, 157, 158, + 157, 157, 157, 155, 155, 155, 155, 158, 158, 159, 160, 160, 161, 162, 161, 148, + 144, 137, 129, 128, 131, 130, 124, 119, 120, 125, 131, 129, 119, 110, 107, 130, + 123, 116, 105, 101, 101, 101, 96, 95, 86, 80, 84, 89, 88, 89, 91, 92, + 93, 86, 74, 63, 60, 58, 56, 50, 61, 67, 63, 59, 63, 67, 70, 73, + 73, 104, 90, 255, 255, 255, 138, 132, 107, 98, 110, 114, 102, 119, 132, 139, + 135, 139, 151, 156, 151, 125, 135, 150, 163, 171, 173, 175, 176, 175, 175, 175, + 176, 174, 173, 170, 169, 167, 167, 165, 164, 162, 162, 163, 163, 162, 159, 155, + 154, 154, 157, 158, 159, 158, 158, 157, 156, 156, 156, 156, 157, 158, 154, 149, + 149, 151, 153, 154, 152, 159, 162, 161, 154, 153, 160, 164, 158, 156, 155, 155, + 153, 151, 149, 151, 152, 156, 157, 159, 159, 161, 160, 160, 159, 158, 157, 157, + 157, 157, 157, 155, 155, 157, 157, 157, 158, 157, 159, 160, 159, 152, 147, 140, + 131, 127, 126, 124, 119, 128, 125, 127, 135, 139, 133, 125, 119, 121, 122, 124, + 114, 105, 99, 95, 91, 86, 82, 79, 83, 88, 89, 91, 93, 104, 109, 106, + 95, 81, 69, 59, 52, 48, 61, 69, 65, 57, 57, 62, 71, 74, 77, 104, + 255, 255, 255, 255, 127, 120, 95, 80, 81, 82, 77, 68, 75, 86, 95, 111, + 136, 159, 173, 132, 140, 151, 159, 165, 170, 174, 177, 177, 176, 176, 176, 176, + 173, 172, 169, 168, 166, 165, 162, 161, 160, 160, 160, 158, 157, 155, 154, 154, + 156, 158, 159, 169, 167, 164, 162, 159, 157, 155, 155, 155, 155, 155, 155, 156, + 156, 157, 155, 160, 163, 163, 159, 160, 165, 168, 163, 156, 156, 155, 155, 154, + 153, 155, 155, 154, 155, 157, 158, 160, 160, 160, 159, 159, 158, 158, 158, 158, + 158, 156, 156, 155, 155, 155, 156, 155, 156, 157, 157, 155, 149, 143, 136, 130, + 126, 122, 119, 127, 122, 121, 126, 130, 129, 126, 125, 112, 118, 120, 112, 104, + 96, 90, 84, 75, 84, 95, 101, 101, 99, 99, 103, 109, 116, 122, 121, 114, + 99, 78, 58, 53, 59, 67, 68, 63, 58, 59, 66, 66, 73, 99, 255, 255, + 255, 255, 206, 101, 90, 79, 75, 85, 97, 83, 62, 50, 51, 56, 67, 93, + 123, 120, 132, 147, 157, 164, 168, 173, 176, 178, 178, 178, 176, 175, 173, 172, + 169, 168, 166, 164, 160, 158, 156, 156, 156, 156, 157, 159, 160, 159, 159, 159, + 160, 159, 159, 158, 156, 157, 158, 160, 163, 151, 151, 152, 152, 154, 158, 163, + 167, 153, 154, 154, 150, 149, 150, 149, 145, 150, 149, 149, 150, 152, 153, 155, + 155, 153, 153, 156, 157, 158, 158, 158, 158, 157, 157, 157, 157, 156, 156, 156, + 156, 153, 153, 153, 154, 156, 157, 158, 155, 152, 148, 144, 139, 133, 126, 123, + 122, 115, 114, 118, 125, 128, 127, 128, 129, 117, 118, 116, 109, 102, 94, 87, + 81, 76, 99, 125, 134, 129, 122, 122, 125, 120, 124, 129, 133, 137, 127, 104, + 80, 54, 51, 56, 66, 67, 60, 54, 58, 58, 69, 93, 255, 255, 255, 255, + 255, 203, 96, 90, 86, 100, 120, 108, 76, 54, 53, 49, 37, 42, 62, 94, + 114, 140, 160, 171, 174, 178, 180, 181, 179, 179, 178, 176, 174, 172, 169, 169, + 166, 162, 159, 156, 155, 154, 153, 157, 160, 163, 164, 162, 161, 161, 160, 158, + 156, 156, 157, 159, 161, 164, 166, 166, 164, 158, 150, 147, 149, 158, 165, 174, + 173, 173, 169, 166, 162, 159, 155, 143, 141, 141, 143, 147, 149, 151, 150, 154, + 154, 156, 157, 158, 158, 158, 157, 155, 155, 155, 155, 154, 154, 154, 154, 152, + 153, 153, 154, 155, 156, 157, 155, 146, 143, 141, 138, 132, 123, 119, 121, 107, + 111, 120, 131, 135, 133, 133, 133, 122, 122, 116, 105, 97, 90, 86, 79, 94, + 124, 153, 163, 155, 146, 145, 147, 141, 139, 134, 135, 141, 139, 124, 107, 64, + 50, 47, 61, 68, 62, 53, 52, 57, 70, 144, 255, 255, 255, 255, 255, 255, + 107, 100, 99, 108, 116, 103, 76, 59, 66, 74, 72, 72, 78, 90, 112, 140, + 163, 175, 179, 183, 185, 183, 183, 183, 180, 178, 176, 173, 170, 170, 168, 163, + 160, 157, 154, 152, 153, 156, 158, 160, 159, 156, 155, 156, 159, 162, 159, 158, + 157, 157, 159, 161, 163, 177, 177, 173, 163, 152, 147, 151, 155, 160, 159, 161, + 161, 158, 154, 152, 150, 147, 144, 143, 145, 150, 152, 153, 151, 157, 157, 159, + 159, 160, 159, 158, 158, 156, 156, 156, 156, 156, 156, 155, 155, 154, 152, 153, + 154, 155, 156, 157, 155, 145, 141, 140, 140, 132, 121, 118, 121, 109, 105, 107, + 116, 123, 124, 123, 122, 122, 126, 126, 112, 101, 94, 95, 94, 117, 143, 166, + 170, 163, 158, 157, 158, 157, 155, 148, 143, 143, 145, 139, 130, 93, 71, 60, + 68, 73, 61, 52, 54, 62, 73, 255, 255, 255, 255, 255, 255, 255, 115, 109, + 113, 115, 109, 143, 108, 73, 60, 68, 84, 92, 91, 105, 124, 147, 165, 173, + 179, 186, 191, 186, 185, 184, 184, 180, 178, 175, 172, 172, 170, 165, 161, 157, + 154, 153, 152, 154, 154, 154, 151, 147, 148, 151, 155, 151, 149, 149, 150, 152, + 154, 158, 162, 166, 175, 181, 179, 169, 160, 157, 157, 156, 156, 161, 165, 166, + 164, 163, 163, 156, 153, 151, 153, 157, 158, 159, 156, 160, 160, 161, 161, 162, + 161, 159, 159, 160, 160, 160, 160, 160, 160, 159, 159, 154, 154, 153, 154, 156, + 156, 157, 155, 149, 143, 143, 143, 135, 122, 118, 122, 132, 117, 105, 106, 115, + 121, 124, 125, 123, 133, 139, 127, 114, 107, 112, 119, 134, 151, 165, 164, 162, + 161, 160, 158, 158, 164, 164, 158, 151, 150, 148, 142, 126, 96, 78, 80, 78, + 61, 54, 56, 66, 75, 255, 255, 255, 255, 255, 255, 255, 116, 113, 119, 123, + 120, 117, 100, 89, 85, 77, 77, 95, 118, 116, 131, 150, 165, 173, 178, 184, + 187, 192, 189, 185, 181, 176, 173, 172, 170, 170, 166, 165, 165, 158, 149, 146, + 153, 162, 153, 148, 147, 141, 146, 150, 144, 150, 149, 148, 145, 147, 149, 152, + 154, 162, 169, 171, 169, 171, 169, 158, 144, 153, 156, 160, 163, 164, 161, 156, + 152, 157, 153, 150, 152, 156, 157, 155, 151, 156, 160, 165, 165, 163, 160, 160, + 160, 161, 162, 162, 162, 161, 160, 159, 158, 158, 158, 157, 154, 153, 153, 154, + 151, 144, 144, 137, 130, 136, 144, 134, 115, 128, 119, 112, 114, 116, 117, 120, + 124, 121, 131, 142, 134, 122, 127, 135, 128, 138, 161, 153, 158, 149, 166, 159, + 170, 170, 171, 165, 164, 172, 164, 153, 152, 151, 120, 74, 75, 68, 63, 41, + 49, 58, 74, 255, 255, 255, 255, 255, 255, 255, 113, 108, 115, 121, 117, 112, + 110, 113, 113, 119, 129, 136, 139, 129, 143, 159, 170, 176, 180, 185, 189, 188, + 187, 185, 181, 179, 176, 174, 171, 175, 166, 161, 160, 160, 158, 163, 172, 150, + 146, 148, 154, 152, 157, 160, 151, 152, 156, 155, 153, 159, 169, 170, 165, 153, + 164, 169, 165, 161, 160, 158, 154, 154, 155, 158, 160, 164, 164, 164, 162, 160, + 154, 148, 148, 154, 160, 165, 165, 158, 160, 163, 162, 160, 159, 160, 162, 163, + 163, 162, 162, 160, 160, 160, 160, 159, 158, 158, 157, 154, 152, 152, 150, 143, + 143, 137, 130, 137, 147, 140, 123, 118, 112, 107, 108, 115, 123, 126, 127, 128, + 128, 136, 139, 132, 136, 151, 156, 151, 157, 148, 156, 172, 183, 173, 174, 172, + 173, 169, 170, 178, 174, 164, 162, 157, 130, 80, 72, 64, 64, 47, 54, 62, + 136, 255, 255, 255, 255, 255, 255, 255, 110, 103, 116, 125, 120, 116, 121, 126, + 126, 136, 149, 145, 130, 138, 149, 160, 168, 171, 173, 177, 180, 183, 181, 181, + 180, 180, 177, 175, 171, 178, 168, 163, 166, 171, 172, 175, 178, 178, 167, 158, + 144, 124, 114, 108, 95, 107, 99, 106, 129, 145, 149, 164, 185, 179, 171, 160, + 151, 153, 160, 164, 161, 155, 154, 154, 155, 156, 159, 163, 165, 162, 157, 152, + 152, 157, 163, 168, 169, 163, 163, 164, 162, 161, 161, 163, 165, 166, 165, 161, + 160, 160, 160, 160, 161, 160, 160, 159, 157, 155, 152, 148, 145, 140, 140, 135, + 128, 135, 148, 145, 131, 127, 124, 116, 109, 115, 125, 125, 117, 138, 129, 137, + 149, 142, 135, 145, 154, 160, 156, 155, 161, 189, 183, 173, 168, 165, 166, 165, + 168, 176, 177, 171, 164, 164, 146, 92, 71, 59, 71, 58, 59, 70, 255, 255, + 255, 255, 255, 255, 255, 255, 107, 101, 119, 132, 129, 126, 128, 128, 126, 131, + 136, 130, 121, 144, 150, 158, 164, 166, 167, 171, 173, 175, 176, 178, 178, 178, + 176, 174, 170, 176, 171, 172, 178, 184, 182, 175, 169, 155, 140, 126, 110, 94, + 94, 101, 97, 100, 101, 104, 101, 93, 92, 109, 131, 169, 166, 160, 155, 155, + 157, 158, 157, 162, 160, 159, 156, 156, 157, 159, 161, 158, 158, 158, 160, 164, + 164, 163, 160, 166, 166, 166, 165, 165, 164, 165, 165, 165, 164, 159, 157, 157, + 158, 159, 160, 158, 159, 158, 157, 154, 149, 143, 140, 137, 137, 132, 123, 128, + 141, 141, 131, 138, 137, 127, 114, 118, 130, 127, 115, 136, 133, 146, 157, 149, + 140, 139, 137, 147, 149, 168, 176, 203, 180, 171, 170, 161, 157, 158, 163, 168, + 176, 175, 162, 167, 159, 108, 75, 58, 77, 65, 62, 132, 255, 255, 255, 255, + 255, 255, 255, 255, 103, 100, 118, 131, 130, 136, 132, 134, 140, 139, 132, 132, + 137, 151, 155, 160, 166, 168, 170, 172, 173, 170, 171, 173, 174, 174, 173, 172, + 168, 174, 171, 173, 180, 186, 184, 173, 162, 123, 114, 108, 104, 103, 119, 141, + 146, 126, 159, 161, 116, 77, 73, 80, 77, 96, 113, 133, 146, 148, 144, 144, + 146, 166, 165, 164, 162, 162, 161, 160, 160, 158, 158, 160, 162, 164, 163, 162, + 160, 165, 165, 167, 168, 168, 166, 163, 161, 164, 162, 160, 158, 155, 156, 158, + 159, 157, 157, 157, 156, 152, 148, 144, 138, 135, 138, 132, 120, 121, 133, 135, + 126, 128, 131, 124, 115, 122, 137, 137, 125, 128, 137, 150, 155, 151, 154, 154, + 139, 130, 138, 167, 185, 218, 194, 181, 176, 160, 152, 157, 161, 164, 177, 179, + 162, 163, 164, 117, 78, 57, 80, 68, 57, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 101, 100, 112, 124, 127, 136, 134, 142, 151, 144, 130, 130, 143, 152, + 157, 161, 166, 169, 171, 171, 171, 169, 170, 171, 171, 172, 170, 170, 167, 173, + 170, 168, 168, 176, 180, 173, 167, 149, 143, 140, 134, 127, 132, 145, 143, 146, + 158, 172, 159, 116, 77, 70, 84, 66, 63, 70, 96, 128, 146, 148, 144, 159, + 159, 160, 161, 162, 161, 161, 160, 163, 161, 159, 159, 161, 164, 169, 171, 163, + 163, 165, 167, 168, 166, 161, 157, 162, 161, 160, 158, 156, 157, 157, 158, 156, + 156, 156, 155, 152, 149, 146, 142, 138, 142, 136, 121, 118, 127, 129, 121, 120, + 122, 119, 114, 119, 130, 132, 127, 134, 140, 148, 146, 144, 156, 157, 141, 137, + 141, 157, 178, 213, 201, 177, 159, 155, 145, 149, 154, 154, 176, 184, 162, 155, + 161, 119, 80, 57, 76, 63, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 104, 106, 113, 122, 129, 134, 138, 145, 143, 137, 131, 135, 141, 158, 161, 166, + 170, 173, 174, 170, 171, 172, 172, 171, 170, 171, 169, 169, 167, 172, 169, 164, + 160, 166, 173, 171, 168, 164, 160, 159, 153, 140, 137, 142, 136, 157, 146, 157, + 172, 146, 96, 79, 97, 106, 84, 69, 86, 121, 147, 156, 154, 157, 157, 159, + 160, 162, 163, 164, 165, 168, 167, 166, 165, 165, 167, 172, 174, 168, 166, 166, + 166, 168, 167, 163, 160, 163, 162, 162, 161, 161, 161, 159, 158, 158, 157, 156, + 156, 153, 152, 151, 149, 144, 149, 143, 127, 121, 128, 129, 122, 126, 125, 123, + 121, 121, 122, 125, 127, 147, 144, 148, 150, 146, 150, 149, 136, 150, 159, 157, + 173, 189, 192, 162, 149, 153, 139, 143, 149, 149, 175, 190, 166, 153, 160, 121, + 82, 57, 74, 62, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 109, 115, + 120, 129, 138, 135, 144, 144, 134, 134, 145, 156, 156, 167, 169, 174, 178, 182, + 181, 177, 176, 175, 175, 174, 172, 170, 171, 170, 170, 169, 171, 166, 162, 164, + 170, 168, 162, 165, 160, 160, 152, 138, 136, 142, 138, 131, 150, 157, 147, 148, + 156, 142, 117, 136, 138, 140, 140, 134, 134, 148, 165, 165, 166, 165, 165, 167, + 169, 172, 173, 171, 173, 176, 177, 175, 171, 169, 169, 175, 172, 168, 168, 170, + 170, 170, 168, 163, 164, 164, 162, 164, 161, 160, 158, 159, 158, 157, 156, 155, + 155, 156, 153, 147, 152, 147, 130, 123, 129, 130, 126, 130, 128, 128, 130, 127, + 125, 129, 138, 150, 140, 149, 165, 163, 154, 147, 140, 150, 171, 165, 174, 171, + 185, 168, 169, 157, 141, 146, 153, 153, 185, 203, 177, 156, 164, 125, 86, 59, + 74, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 111, 124, 132, + 133, 148, 142, 133, 128, 130, 138, 148, 156, 162, 167, 173, 176, 176, 174, 173, + 174, 174, 174, 174, 173, 174, 173, 173, 171, 176, 169, 164, 161, 162, 163, 159, + 156, 152, 154, 154, 152, 149, 146, 143, 139, 136, 142, 148, 146, 142, 140, 144, + 150, 168, 169, 169, 162, 153, 150, 150, 152, 170, 173, 174, 169, 168, 173, 187, + 200, 187, 181, 177, 175, 179, 179, 175, 171, 170, 172, 174, 176, 175, 172, 170, + 167, 170, 167, 165, 162, 162, 161, 162, 162, 158, 160, 160, 155, 151, 150, 152, + 151, 152, 143, 145, 116, 120, 119, 136, 121, 124, 129, 127, 143, 122, 127, 127, + 152, 168, 153, 148, 156, 157, 156, 148, 135, 172, 168, 165, 167, 172, 174, 172, + 170, 159, 153, 142, 132, 164, 168, 224, 174, 159, 162, 129, 74, 77, 67, 136, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 119, 130, 135, 136, 140, + 135, 130, 130, 137, 147, 158, 164, 165, 169, 175, 177, 177, 174, 173, 174, 171, + 174, 175, 176, 176, 175, 172, 170, 173, 172, 169, 166, 163, 159, 158, 157, 150, + 151, 152, 153, 153, 153, 153, 152, 154, 159, 163, 161, 157, 157, 163, 167, 165, + 166, 167, 165, 161, 160, 163, 167, 170, 177, 183, 182, 177, 175, 179, 187, 187, + 182, 178, 176, 180, 180, 177, 173, 172, 172, 173, 174, 173, 171, 169, 167, 166, + 163, 160, 159, 158, 158, 157, 158, 160, 160, 156, 153, 150, 150, 154, 155, 155, + 149, 140, 120, 123, 123, 130, 125, 120, 124, 124, 144, 129, 131, 126, 143, 161, + 163, 164, 168, 164, 152, 140, 137, 154, 165, 176, 184, 200, 208, 193, 170, 164, + 157, 141, 137, 163, 173, 223, 180, 170, 170, 128, 69, 65, 57, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 117, 125, 133, 136, 136, 134, 131, 130, + 135, 146, 157, 166, 169, 170, 173, 178, 178, 177, 174, 173, 175, 170, 172, 175, + 176, 177, 174, 169, 167, 171, 173, 175, 169, 161, 154, 154, 156, 149, 150, 150, + 151, 153, 155, 156, 157, 163, 165, 167, 165, 162, 164, 169, 174, 162, 163, 165, + 164, 163, 165, 173, 178, 175, 182, 189, 188, 183, 178, 180, 182, 185, 181, 178, + 177, 180, 180, 178, 175, 175, 174, 173, 171, 171, 170, 170, 169, 168, 165, 162, + 161, 160, 160, 159, 159, 162, 161, 156, 152, 150, 151, 155, 156, 152, 155, 134, + 126, 128, 129, 121, 134, 117, 123, 127, 146, 139, 137, 127, 132, 161, 175, 171, + 163, 160, 151, 153, 176, 173, 187, 193, 183, 191, 205, 201, 183, 172, 164, 143, + 142, 153, 170, 208, 172, 172, 170, 126, 72, 61, 124, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 119, 127, 130, 130, 129, 130, 129, 130, 139, 150, + 159, 164, 164, 170, 173, 177, 176, 175, 174, 173, 176, 171, 174, 176, 175, 175, + 173, 171, 168, 174, 174, 175, 171, 164, 158, 155, 154, 155, 155, 153, 152, 152, + 153, 155, 155, 159, 162, 166, 164, 162, 163, 167, 171, 167, 166, 167, 165, 164, + 166, 172, 176, 182, 183, 184, 181, 178, 177, 183, 186, 182, 179, 177, 176, 179, + 179, 178, 178, 178, 176, 174, 171, 171, 170, 172, 171, 166, 165, 163, 162, 161, + 161, 160, 159, 162, 160, 156, 153, 151, 150, 151, 149, 142, 155, 129, 129, 128, + 129, 115, 146, 122, 127, 135, 148, 146, 139, 130, 130, 156, 177, 169, 156, 158, + 147, 153, 191, 201, 213, 211, 192, 184, 194, 207, 209, 182, 173, 149, 147, 139, + 160, 186, 158, 165, 160, 114, 75, 68, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 117, 125, 126, 124, 124, 126, 127, 132, 142, 152, 158, 162, + 162, 170, 172, 174, 174, 173, 172, 174, 177, 177, 176, 174, 171, 171, 171, 171, + 170, 177, 174, 172, 171, 170, 165, 159, 154, 163, 161, 160, 156, 155, 156, 157, + 157, 158, 162, 167, 170, 169, 169, 170, 170, 175, 174, 175, 173, 172, 173, 176, + 178, 185, 183, 181, 178, 176, 177, 180, 182, 179, 178, 178, 176, 176, 175, 175, + 176, 178, 175, 172, 168, 168, 168, 169, 170, 161, 160, 159, 159, 158, 157, 155, + 154, 156, 155, 153, 151, 149, 145, 141, 135, 129, 147, 128, 129, 124, 125, 117, + 153, 126, 132, 144, 148, 146, 136, 134, 136, 144, 172, 170, 162, 163, 144, 135, + 164, 158, 158, 162, 165, 165, 163, 169, 176, 188, 178, 162, 153, 136, 150, 169, + 150, 165, 150, 94, 70, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 116, 125, 122, 121, 125, 121, 127, 136, 145, 155, 161, 164, 165, 169, + 170, 172, 171, 170, 171, 173, 177, 179, 178, 174, 172, 171, 171, 173, 174, 180, + 176, 173, 172, 174, 172, 168, 161, 159, 157, 157, 157, 157, 155, 156, 156, 158, + 162, 169, 172, 173, 172, 172, 171, 173, 171, 173, 174, 175, 176, 178, 179, 182, + 181, 182, 182, 181, 178, 173, 170, 179, 178, 178, 176, 174, 174, 175, 175, 174, + 172, 169, 166, 165, 165, 165, 165, 161, 161, 160, 160, 159, 158, 155, 154, 150, + 150, 148, 148, 147, 142, 135, 127, 124, 138, 132, 127, 123, 126, 128, 154, 131, + 136, 150, 144, 147, 136, 142, 143, 149, 166, 166, 161, 159, 148, 146, 168, 171, + 151, 145, 159, 176, 174, 171, 171, 184, 175, 180, 160, 143, 147, 166, 152, 181, + 152, 82, 66, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 115, 125, 125, 127, 133, 123, 133, 145, 154, 159, 163, 167, 171, 173, 173, 172, + 170, 169, 169, 173, 177, 179, 178, 177, 174, 174, 172, 172, 172, 180, 178, 176, + 174, 175, 174, 174, 172, 161, 159, 160, 161, 161, 160, 160, 159, 160, 162, 166, + 169, 171, 171, 172, 171, 168, 168, 172, 175, 178, 180, 182, 182, 182, 182, 184, + 186, 187, 183, 175, 169, 180, 181, 180, 177, 175, 173, 174, 175, 175, 173, 170, + 167, 165, 164, 163, 163, 162, 163, 162, 162, 161, 160, 157, 156, 152, 151, 148, + 149, 149, 147, 141, 133, 131, 135, 139, 123, 126, 130, 143, 146, 137, 138, 152, + 144, 156, 147, 155, 151, 156, 161, 163, 159, 151, 151, 168, 190, 189, 168, 151, + 148, 158, 164, 165, 165, 177, 168, 193, 162, 150, 141, 164, 154, 182, 150, 73, + 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 117, 127, + 129, 133, 142, 130, 141, 154, 160, 163, 162, 167, 173, 176, 176, 174, 171, 168, + 168, 172, 175, 177, 178, 178, 177, 176, 174, 172, 171, 178, 181, 181, 179, 176, + 174, 178, 182, 173, 172, 173, 172, 173, 169, 168, 165, 164, 165, 167, 168, 172, + 172, 174, 174, 172, 173, 176, 181, 185, 186, 187, 186, 183, 182, 181, 183, 187, + 188, 183, 179, 184, 183, 181, 178, 175, 173, 174, 175, 177, 176, 174, 171, 169, + 167, 166, 165, 158, 159, 159, 159, 158, 156, 153, 152, 157, 155, 151, 152, 154, + 154, 150, 144, 141, 135, 143, 122, 131, 136, 155, 139, 145, 142, 155, 147, 167, + 159, 170, 161, 149, 154, 168, 169, 152, 147, 163, 175, 189, 190, 181, 165, 156, + 163, 169, 168, 172, 163, 200, 162, 153, 132, 159, 149, 162, 133, 64, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 120, 129, 141, 139, + 125, 140, 152, 161, 161, 161, 165, 170, 170, 175, 174, 173, 172, 171, 171, 171, + 172, 176, 178, 178, 178, 178, 177, 177, 178, 177, 180, 183, 185, 185, 182, 178, + 173, 176, 175, 174, 172, 172, 170, 170, 167, 166, 170, 177, 177, 175, 173, 175, + 176, 180, 180, 181, 182, 184, 185, 188, 189, 196, 200, 197, 188, 184, 186, 183, + 177, 178, 178, 179, 178, 179, 177, 175, 173, 173, 175, 177, 174, 169, 166, 166, + 168, 165, 163, 161, 160, 159, 160, 160, 161, 157, 155, 151, 149, 149, 149, 150, + 148, 143, 125, 130, 134, 141, 147, 136, 142, 146, 148, 150, 152, 160, 168, 172, + 168, 154, 150, 151, 156, 155, 154, 161, 174, 180, 199, 186, 163, 163, 162, 156, + 161, 168, 170, 176, 189, 159, 128, 146, 160, 160, 116, 126, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 124, 130, 137, 136, 129, 149, + 156, 162, 161, 165, 171, 173, 170, 175, 174, 173, 172, 171, 171, 171, 172, 177, + 177, 179, 177, 178, 179, 180, 180, 183, 181, 184, 187, 188, 187, 183, 180, 184, + 182, 181, 178, 176, 173, 171, 169, 169, 174, 179, 177, 175, 174, 177, 180, 181, + 182, 184, 187, 189, 190, 189, 189, 190, 193, 192, 187, 188, 190, 189, 184, 179, + 179, 179, 179, 180, 178, 176, 174, 172, 174, 175, 172, 168, 165, 165, 166, 169, + 168, 164, 161, 160, 159, 157, 157, 155, 156, 155, 154, 152, 151, 150, 148, 139, + 127, 137, 135, 138, 139, 130, 140, 151, 153, 154, 157, 165, 174, 176, 174, 163, + 154, 150, 150, 151, 149, 157, 168, 178, 194, 192, 173, 168, 167, 166, 168, 166, + 167, 172, 185, 160, 133, 150, 159, 149, 100, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 114, 130, 133, 131, 133, 135, 158, 160, 162, + 162, 168, 174, 175, 170, 178, 177, 176, 175, 173, 173, 173, 173, 176, 176, 178, + 177, 179, 180, 182, 183, 186, 182, 181, 184, 189, 191, 187, 182, 189, 186, 186, + 182, 181, 177, 176, 174, 174, 177, 180, 179, 177, 178, 182, 184, 178, 180, 185, + 189, 190, 191, 188, 187, 187, 190, 191, 189, 190, 192, 191, 188, 181, 181, 181, + 180, 179, 178, 176, 175, 173, 174, 173, 171, 167, 165, 164, 166, 169, 168, 165, + 162, 160, 159, 157, 157, 153, 157, 159, 159, 155, 151, 150, 149, 134, 129, 141, + 135, 130, 131, 126, 141, 154, 156, 159, 161, 170, 179, 181, 179, 181, 164, 151, + 148, 150, 151, 159, 169, 178, 188, 198, 188, 172, 168, 172, 168, 162, 168, 171, + 181, 158, 137, 153, 155, 134, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 114, 132, 131, 124, 131, 140, 162, 163, 163, 164, 167, + 168, 170, 170, 179, 177, 176, 175, 173, 173, 174, 174, 174, 175, 175, 177, 178, + 179, 183, 182, 184, 178, 175, 179, 186, 190, 186, 181, 183, 182, 182, 181, 181, + 180, 180, 178, 177, 177, 178, 177, 177, 178, 182, 184, 172, 174, 178, 181, 184, + 184, 183, 182, 187, 189, 189, 188, 188, 187, 185, 183, 180, 180, 179, 178, 177, + 176, 175, 174, 174, 174, 173, 171, 168, 166, 165, 165, 163, 163, 161, 160, 160, + 159, 158, 158, 153, 157, 159, 158, 154, 150, 149, 149, 136, 130, 139, 130, 126, + 131, 129, 143, 154, 156, 160, 163, 172, 182, 185, 182, 191, 169, 149, 147, 150, + 154, 161, 170, 176, 181, 202, 201, 175, 166, 169, 161, 159, 171, 174, 174, 152, + 139, 154, 149, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 114, 132, 129, 123, 135, 146, 160, 163, 165, 165, 163, 161, 165, + 168, 173, 172, 171, 170, 169, 170, 171, 171, 174, 172, 173, 174, 176, 177, 180, + 180, 183, 177, 174, 175, 183, 187, 184, 181, 179, 179, 178, 178, 178, 176, 176, + 176, 176, 174, 173, 173, 173, 175, 179, 182, 173, 172, 174, 176, 178, 180, 183, + 184, 187, 187, 187, 188, 188, 184, 182, 181, 179, 178, 177, 176, 175, 174, 172, + 172, 172, 171, 169, 168, 166, 164, 160, 161, 160, 161, 159, 159, 158, 156, 154, + 154, 154, 156, 155, 154, 150, 147, 147, 149, 140, 131, 134, 124, 125, 137, 137, + 148, 152, 154, 157, 161, 170, 180, 184, 181, 185, 162, 142, 142, 149, 155, 161, + 168, 167, 172, 197, 203, 177, 161, 161, 154, 153, 171, 174, 168, 147, 139, 155, + 144, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 113, 128, 127, 128, 143, 152, 160, 165, 167, 167, 162, 157, 160, 167, 165, + 165, 164, 164, 164, 166, 167, 168, 173, 172, 172, 173, 175, 177, 179, 180, 184, + 178, 176, 179, 184, 187, 185, 183, 181, 182, 179, 177, 176, 174, 173, 171, 172, + 172, 169, 169, 171, 173, 176, 177, 176, 174, 175, 177, 179, 182, 187, 188, 183, + 182, 183, 187, 189, 184, 182, 183, 178, 177, 175, 174, 173, 172, 171, 171, 169, + 167, 165, 163, 163, 161, 157, 157, 162, 163, 160, 158, 156, 152, 149, 147, 155, + 154, 151, 150, 148, 147, 146, 145, 142, 132, 133, 121, 127, 145, 145, 150, 151, + 154, 157, 161, 171, 180, 182, 180, 178, 159, 144, 149, 158, 164, 167, 172, 161, + 166, 187, 194, 178, 159, 155, 156, 153, 171, 170, 159, 145, 146, 156, 130, 128, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 116, + 126, 129, 139, 154, 160, 165, 166, 169, 172, 166, 160, 159, 164, 162, 162, 162, + 164, 166, 168, 169, 169, 175, 173, 173, 173, 174, 176, 177, 178, 182, 180, 180, + 182, 184, 185, 183, 182, 183, 185, 183, 182, 181, 177, 176, 175, 176, 175, 174, + 175, 175, 178, 180, 180, 178, 177, 180, 183, 188, 189, 190, 191, 183, 180, 185, + 191, 191, 185, 183, 185, 179, 177, 175, 173, 172, 172, 171, 171, 170, 167, 164, + 163, 161, 160, 157, 156, 162, 163, 161, 159, 156, 153, 148, 146, 155, 153, 149, + 150, 152, 150, 144, 141, 139, 132, 135, 123, 129, 146, 145, 151, 152, 155, 158, + 162, 171, 180, 181, 178, 170, 158, 150, 160, 170, 173, 174, 177, 166, 171, 178, + 181, 176, 155, 148, 161, 165, 176, 164, 150, 144, 152, 150, 108, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 119, 125, 130, + 145, 162, 163, 171, 168, 168, 171, 172, 165, 160, 159, 164, 163, 165, 166, 168, + 171, 172, 174, 175, 175, 175, 175, 176, 177, 178, 178, 179, 180, 181, 183, 184, + 182, 182, 181, 183, 185, 185, 185, 185, 183, 183, 182, 182, 181, 181, 180, 183, + 185, 186, 185, 178, 178, 185, 190, 192, 193, 191, 190, 186, 183, 187, 193, 192, + 185, 182, 184, 179, 177, 176, 173, 173, 171, 172, 172, 173, 170, 167, 166, 164, + 163, 160, 159, 159, 160, 160, 159, 158, 155, 152, 151, 154, 151, 148, 152, 156, + 154, 144, 137, 134, 131, 138, 127, 129, 144, 142, 148, 154, 158, 161, 166, 175, + 183, 183, 181, 164, 154, 152, 164, 175, 175, 175, 175, 178, 182, 174, 174, 174, + 152, 142, 164, 180, 183, 160, 144, 143, 154, 142, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 116, 127, 143, 157, 164, + 166, 175, 175, 171, 170, 169, 167, 165, 161, 164, 164, 162, 160, 160, 165, 170, + 170, 178, 176, 176, 177, 179, 179, 179, 178, 180, 188, 186, 184, 189, 181, 177, + 182, 176, 180, 185, 186, 184, 179, 178, 178, 179, 181, 185, 184, 180, 177, 177, + 179, 189, 194, 197, 191, 190, 193, 194, 191, 179, 182, 185, 186, 186, 183, 179, + 176, 175, 175, 176, 173, 173, 170, 169, 169, 169, 166, 162, 159, 159, 159, 158, + 159, 158, 159, 159, 159, 158, 157, 156, 155, 150, 154, 155, 153, 152, 154, 150, + 142, 131, 145, 148, 135, 126, 135, 149, 155, 166, 158, 158, 170, 181, 181, 175, + 172, 161, 151, 160, 177, 177, 173, 176, 174, 176, 177, 174, 164, 153, 150, 158, + 169, 170, 178, 148, 149, 159, 152, 129, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 117, 123, 135, 151, 162, 167, 168, 173, + 172, 168, 166, 164, 165, 163, 164, 166, 166, 163, 161, 162, 166, 170, 171, 171, + 172, 175, 179, 183, 185, 186, 185, 189, 196, 194, 190, 192, 186, 180, 185, 178, + 180, 182, 181, 177, 176, 177, 179, 184, 184, 184, 186, 188, 188, 187, 185, 188, + 192, 195, 191, 188, 189, 187, 183, 184, 185, 187, 188, 187, 184, 181, 179, 177, + 177, 176, 175, 174, 173, 173, 172, 169, 167, 163, 162, 161, 161, 159, 159, 158, + 160, 160, 160, 158, 158, 157, 156, 148, 152, 154, 153, 153, 155, 152, 145, 136, + 147, 149, 138, 132, 141, 155, 159, 160, 155, 164, 184, 193, 182, 167, 162, 155, + 159, 174, 180, 159, 145, 151, 160, 154, 155, 159, 162, 167, 172, 176, 180, 169, + 163, 158, 154, 156, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 120, 129, 142, 157, 168, 170, 170, 171, 169, 166, + 164, 163, 165, 165, 167, 164, 162, 161, 159, 160, 163, 166, 168, 168, 169, 174, + 179, 183, 186, 187, 188, 195, 201, 196, 191, 191, 185, 179, 186, 186, 186, 184, + 181, 178, 179, 182, 185, 185, 182, 179, 182, 188, 191, 190, 187, 186, 190, 195, + 194, 192, 191, 188, 184, 188, 188, 188, 187, 186, 184, 182, 181, 179, 178, 178, + 177, 177, 176, 176, 175, 169, 167, 165, 164, 163, 162, 158, 158, 158, 159, 160, + 160, 159, 158, 157, 156, 151, 153, 152, 151, 152, 153, 150, 144, 142, 149, 148, + 141, 139, 149, 159, 160, 162, 158, 171, 192, 192, 169, 151, 149, 162, 164, 177, + 177, 152, 137, 145, 155, 159, 156, 160, 170, 184, 189, 182, 175, 167, 149, 168, + 162, 155, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 121, 133, 144, 159, 167, 168, 168, 166, 166, 168, 165, 166, + 164, 166, 168, 163, 159, 158, 160, 161, 162, 163, 165, 166, 167, 169, 172, 174, + 176, 180, 183, 192, 198, 193, 188, 189, 182, 177, 183, 187, 187, 184, 182, 180, + 181, 183, 186, 184, 181, 178, 179, 183, 187, 188, 187, 184, 186, 190, 190, 189, + 188, 188, 187, 189, 188, 186, 184, 182, 181, 180, 180, 177, 177, 177, 176, 176, + 175, 175, 175, 167, 166, 164, 164, 163, 160, 156, 155, 156, 157, 158, 158, 157, + 156, 156, 155, 156, 155, 152, 151, 150, 148, 143, 139, 143, 145, 143, 139, 141, + 150, 156, 155, 164, 162, 175, 190, 181, 155, 147, 157, 164, 155, 159, 165, 159, + 158, 161, 161, 169, 165, 164, 174, 184, 183, 171, 157, 164, 150, 169, 172, 151, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 119, 132, 145, 156, 163, 164, 163, 160, 164, 169, 168, 167, 165, 164, + 164, 166, 159, 157, 161, 163, 161, 162, 163, 161, 160, 160, 160, 161, 165, 173, + 179, 183, 191, 187, 183, 186, 181, 177, 183, 179, 180, 179, 179, 179, 179, 179, + 179, 186, 186, 185, 183, 181, 182, 186, 189, 184, 182, 182, 181, 179, 177, 178, + 181, 186, 185, 182, 180, 178, 177, 177, 177, 174, 174, 173, 173, 172, 171, 171, + 171, 165, 163, 162, 161, 160, 157, 153, 151, 153, 153, 154, 154, 155, 154, 153, + 152, 156, 154, 150, 149, 148, 145, 139, 137, 143, 142, 139, 138, 142, 149, 152, + 150, 154, 159, 175, 184, 168, 144, 145, 162, 144, 136, 146, 163, 172, 176, 174, + 163, 159, 158, 159, 166, 172, 170, 162, 153, 161, 164, 159, 170, 179, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 123, 134, 145, 155, 160, 161, 160, 160, 166, 171, 173, 169, 164, 162, 162, 163, + 154, 153, 159, 162, 158, 156, 159, 155, 156, 157, 155, 156, 159, 167, 174, 175, + 184, 183, 182, 186, 183, 178, 184, 177, 178, 179, 182, 183, 183, 181, 179, 184, + 186, 186, 182, 178, 177, 182, 186, 191, 185, 182, 180, 176, 172, 173, 177, 183, + 182, 180, 178, 177, 176, 176, 175, 173, 173, 172, 171, 169, 168, 167, 167, 163, + 161, 159, 157, 156, 154, 150, 147, 150, 151, 152, 153, 153, 153, 151, 151, 153, + 147, 146, 148, 149, 146, 142, 142, 147, 144, 141, 142, 145, 149, 150, 149, 148, + 160, 176, 177, 156, 131, 128, 138, 133, 139, 162, 180, 182, 180, 176, 164, 155, + 157, 161, 162, 163, 162, 160, 157, 161, 169, 152, 187, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 129, 140, + 150, 157, 162, 162, 162, 169, 174, 179, 180, 173, 168, 166, 168, 165, 156, 153, + 161, 165, 159, 156, 159, 157, 158, 161, 159, 157, 158, 161, 166, 168, 178, 179, + 180, 185, 180, 174, 181, 180, 180, 181, 184, 187, 189, 187, 185, 185, 185, 183, + 182, 180, 180, 182, 182, 191, 186, 184, 185, 181, 175, 175, 180, 182, 182, 181, + 180, 179, 178, 178, 177, 175, 175, 173, 171, 169, 167, 166, 165, 164, 161, 157, + 155, 153, 152, 149, 147, 150, 151, 152, 153, 152, 152, 152, 152, 153, 148, 146, + 149, 150, 146, 144, 146, 149, 146, 145, 146, 148, 148, 149, 149, 156, 168, 178, + 175, 159, 144, 138, 136, 155, 160, 179, 189, 185, 181, 177, 165, 162, 164, 165, + 165, 163, 162, 161, 161, 161, 161, 148, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 135, 145, 154, 160, + 165, 165, 163, 181, 185, 187, 185, 177, 174, 173, 176, 175, 165, 162, 170, 175, + 169, 165, 167, 163, 166, 168, 166, 160, 157, 158, 158, 164, 173, 176, 178, 183, + 177, 170, 177, 179, 178, 177, 180, 184, 187, 187, 186, 193, 189, 185, 186, 189, + 191, 189, 185, 181, 177, 179, 184, 183, 177, 177, 182, 183, 183, 183, 183, 183, + 181, 180, 180, 178, 177, 175, 173, 171, 168, 167, 166, 165, 162, 157, 154, 152, + 151, 149, 148, 150, 151, 152, 153, 153, 153, 153, 151, 158, 152, 148, 152, 151, + 146, 143, 145, 150, 147, 146, 147, 148, 146, 147, 148, 164, 173, 180, 178, 177, + 179, 178, 172, 186, 177, 178, 180, 179, 181, 178, 163, 157, 159, 161, 160, 161, + 162, 163, 164, 160, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 135, 150, 155, 156, 161, 164, + 164, 202, 206, 194, 181, 180, 177, 169, 168, 162, 166, 170, 170, 170, 169, 171, + 172, 163, 162, 163, 163, 164, 164, 160, 156, 161, 170, 179, 181, 179, 180, 177, + 176, 179, 176, 175, 179, 181, 182, 187, 193, 186, 188, 186, 184, 187, 192, 193, + 188, 188, 184, 181, 181, 182, 184, 184, 183, 181, 181, 182, 182, 181, 180, 178, + 177, 177, 172, 167, 167, 170, 172, 170, 167, 161, 160, 158, 155, 153, 150, 148, + 147, 143, 150, 157, 159, 156, 154, 153, 155, 152, 152, 152, 148, 142, 139, 140, + 145, 150, 149, 149, 150, 146, 141, 145, 151, 162, 168, 175, 176, 175, 176, 182, + 187, 177, 180, 183, 182, 182, 180, 173, 164, 157, 151, 160, 168, 165, 165, 166, + 162, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 113, 133, 149, 157, 161, 169, 175, 176, 211, + 210, 192, 176, 176, 176, 171, 173, 169, 169, 170, 172, 176, 177, 177, 175, 167, + 168, 169, 164, 159, 157, 158, 160, 162, 170, 176, 177, 179, 179, 177, 174, 182, + 179, 178, 180, 181, 181, 185, 190, 188, 191, 190, 186, 186, 189, 190, 187, 190, + 185, 183, 182, 183, 184, 183, 183, 184, 183, 182, 180, 179, 179, 179, 180, 176, + 172, 168, 168, 171, 172, 170, 166, 163, 161, 159, 156, 153, 151, 150, 150, 150, + 156, 161, 161, 157, 151, 151, 152, 152, 153, 153, 150, 144, 142, 143, 145, 151, + 149, 150, 150, 146, 142, 146, 153, 164, 167, 170, 169, 167, 167, 172, 175, 174, + 177, 180, 177, 180, 180, 177, 170, 168, 152, 151, 159, 162, 162, 160, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 116, 132, 146, 155, 163, 171, 178, 179, 192, 192, 177, + 168, 174, 177, 174, 175, 174, 171, 168, 173, 182, 184, 181, 175, 172, 173, 172, + 166, 157, 155, 159, 165, 160, 166, 172, 175, 179, 182, 179, 173, 184, 180, 179, + 181, 180, 179, 182, 187, 189, 194, 194, 189, 185, 186, 187, 186, 191, 186, 184, + 183, 183, 183, 182, 181, 185, 183, 181, 178, 178, 178, 180, 181, 173, 171, 168, + 169, 171, 171, 168, 164, 164, 162, 159, 155, 153, 152, 152, 153, 156, 159, 161, + 160, 156, 152, 152, 152, 152, 153, 151, 149, 146, 145, 146, 148, 151, 150, 150, + 150, 146, 142, 147, 154, 168, 167, 168, 168, 168, 169, 172, 173, 179, 180, 182, + 178, 181, 182, 180, 175, 173, 153, 149, 159, 164, 161, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 120, 131, 140, 147, 154, 163, 168, 171, 170, 172, 167, 166, 177, + 176, 167, 168, 172, 169, 170, 173, 179, 181, 179, 176, 173, 173, 173, 166, 160, + 158, 160, 164, 157, 162, 168, 172, 180, 186, 183, 176, 181, 177, 176, 179, 179, + 178, 180, 184, 187, 194, 196, 190, 185, 185, 187, 186, 189, 185, 183, 182, 182, + 181, 180, 178, 181, 181, 179, 178, 177, 177, 177, 177, 170, 168, 168, 168, 169, + 168, 164, 161, 164, 161, 157, 153, 151, 152, 153, 154, 155, 158, 159, 158, 156, + 154, 154, 155, 151, 151, 149, 148, 147, 147, 148, 148, 149, 148, 148, 148, 145, + 141, 147, 154, 165, 165, 168, 172, 177, 179, 179, 178, 182, 185, 184, 180, 181, + 180, 176, 168, 163, 148, 149, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 123, 128, 133, 139, 147, 153, 158, 161, 172, 173, 165, 163, 172, 167, 157, + 158, 166, 169, 172, 173, 174, 174, 176, 177, 172, 170, 167, 163, 160, 157, 154, + 152, 154, 159, 164, 168, 177, 184, 182, 175, 174, 171, 171, 175, 176, 176, 179, + 183, 183, 191, 194, 190, 185, 185, 188, 187, 186, 182, 181, 180, 180, 179, 177, + 175, 175, 176, 178, 178, 178, 175, 173, 171, 167, 167, 166, 166, 166, 164, 161, + 159, 161, 159, 155, 152, 150, 151, 153, 154, 154, 155, 156, 155, 154, 153, 152, + 153, 148, 147, 146, 145, 145, 145, 145, 146, 147, 146, 145, 145, 142, 139, 145, + 153, 160, 163, 169, 176, 181, 182, 180, 177, 179, 181, 182, 179, 179, 176, 168, + 159, 154, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, + 125, 126, 134, 142, 149, 154, 159, 166, 165, 154, 150, 157, 155, 153, 164, 164, + 168, 171, 170, 168, 169, 170, 173, 169, 167, 162, 158, 156, 153, 148, 143, 153, + 159, 165, 169, 175, 180, 179, 172, 169, 166, 168, 173, 175, 175, 178, 183, 180, + 187, 190, 188, 185, 187, 188, 186, 183, 180, 179, 179, 179, 178, 176, 173, 171, + 173, 176, 178, 177, 174, 170, 167, 167, 167, 166, 165, 163, 162, 160, 159, 159, + 157, 154, 152, 151, 151, 153, 154, 159, 157, 155, 153, 151, 150, 149, 149, 147, + 145, 143, 143, 143, 144, 144, 144, 145, 144, 144, 143, 140, 138, 145, 153, 165, + 169, 176, 181, 182, 180, 178, 175, 177, 180, 182, 182, 181, 177, 169, 191, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 124, 122, + 129, 139, 144, 149, 154, 153, 153, 145, 143, 149, 147, 151, 169, 162, 163, 163, + 163, 164, 164, 163, 162, 165, 163, 160, 155, 152, 150, 153, 154, 162, 169, 175, + 176, 177, 179, 179, 175, 168, 166, 167, 173, 175, 175, 177, 182, 181, 185, 187, + 185, 185, 188, 186, 181, 181, 179, 178, 179, 180, 179, 177, 174, 173, 174, 175, + 176, 175, 173, 170, 168, 169, 169, 167, 165, 163, 161, 161, 162, 157, 157, 155, + 154, 153, 153, 154, 154, 159, 157, 154, 152, 150, 150, 150, 150, 148, 146, 143, + 143, 143, 144, 143, 142, 146, 144, 144, 143, 140, 138, 146, 154, 168, 172, 178, + 178, 176, 173, 174, 176, 178, 180, 180, 177, 175, 172, 194, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 122, 117, 123, 133, + 139, 144, 149, 152, 155, 152, 153, 153, 146, 146, 161, 161, 157, 153, 155, 160, + 161, 156, 151, 157, 161, 160, 156, 151, 153, 163, 171, 170, 178, 185, 183, 180, + 180, 179, 177, 169, 167, 169, 174, 176, 175, 177, 179, 182, 184, 185, 184, 185, + 186, 184, 177, 179, 178, 178, 180, 181, 181, 178, 176, 176, 176, 175, 175, 174, + 173, 172, 172, 171, 171, 169, 166, 163, 164, 165, 166, 159, 159, 159, 156, 156, + 155, 155, 155, 156, 154, 151, 151, 151, 153, 155, 155, 152, 147, 145, 143, 145, + 146, 144, 141, 147, 145, 144, 144, 141, 139, 145, 153, 162, 166, 169, 167, 163, + 162, 167, 172, 175, 174, 171, 163, 191, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 120, 109, 125, 135, 138, + 151, 152, 151, 148, 144, 143, 147, 155, 163, 155, 156, 158, 161, 163, 164, 164, + 163, 154, 146, 143, 150, 161, 168, 174, 178, 176, 178, 180, 181, 182, 181, 180, + 179, 173, 170, 168, 170, 174, 179, 179, 179, 180, 181, 184, 187, 189, 187, 188, + 185, 179, 179, 178, 177, 177, 178, 178, 179, 180, 175, 172, 172, 176, 176, 173, + 168, 170, 169, 169, 169, 168, 167, 164, 161, 163, 161, 158, 155, 155, 155, 155, + 156, 156, 153, 150, 151, 155, 157, 153, 149, 147, 143, 145, 150, 151, 147, 144, + 144, 147, 145, 142, 137, 134, 135, 140, 144, 154, 157, 156, 152, 152, 157, 161, + 162, 160, 157, 155, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 129, 116, 106, 124, 135, 137, 140, 142, + 143, 147, 150, 149, 148, 151, 154, 155, 160, 165, 166, 165, 164, 164, 166, 167, + 164, 166, 174, 180, 179, 178, 178, 179, 178, 177, 176, 178, 178, 178, 178, 179, + 174, 169, 169, 171, 177, 178, 180, 178, 180, 182, 185, 184, 184, 184, 183, 181, + 180, 179, 178, 177, 177, 178, 178, 180, 176, 173, 173, 176, 177, 174, 170, 170, + 170, 172, 172, 173, 170, 166, 163, 164, 161, 159, 158, 157, 158, 157, 158, 159, + 155, 151, 151, 155, 157, 155, 152, 148, 144, 144, 148, 149, 145, 143, 143, 145, + 143, 140, 136, 135, 136, 138, 140, 118, 129, 137, 139, 138, 138, 136, 132, 135, + 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 212, 116, 109, 124, 136, 135, 131, 124, 128, 134, + 139, 140, 139, 141, 140, 152, 159, 167, 168, 165, 161, 164, 169, 172, 171, 175, + 181, 183, 179, 177, 178, 181, 180, 177, 174, 175, 175, 176, 177, 181, 176, 169, + 167, 169, 174, 177, 180, 178, 180, 181, 183, 184, 184, 181, 180, 182, 181, 179, + 178, 177, 176, 176, 176, 179, 176, 173, 174, 176, 177, 174, 171, 169, 171, 175, + 176, 176, 171, 164, 158, 157, 158, 158, 159, 159, 160, 158, 157, 161, 156, 152, + 152, 155, 156, 155, 153, 151, 146, 144, 147, 147, 144, 142, 143, 143, 140, 137, + 135, 134, 134, 133, 132, 123, 137, 150, 153, 151, 149, 146, 142, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 118, 113, 121, 131, 134, 127, 116, 113, 115, 117, 122, + 129, 138, 143, 148, 153, 160, 161, 161, 162, 164, 167, 167, 165, 167, 170, 171, + 170, 175, 181, 178, 177, 175, 174, 175, 175, 175, 176, 177, 173, 169, 167, 168, + 170, 175, 177, 179, 180, 181, 182, 182, 182, 180, 179, 181, 180, 178, 176, 174, + 173, 173, 172, 176, 174, 172, 173, 174, 174, 173, 170, 169, 170, 173, 176, 174, + 166, 157, 150, 151, 153, 155, 158, 158, 157, 155, 154, 158, 156, 154, 154, 156, + 156, 153, 151, 154, 148, 145, 146, 146, 143, 141, 142, 141, 138, 133, 131, 130, + 128, 125, 122, 135, 145, 152, 151, 147, 148, 186, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 122, 116, 112, 121, 130, 124, 114, 109, 110, 113, 122, 133, 147, + 153, 147, 147, 149, 154, 162, 165, 165, 163, 162, 162, 164, 168, 169, 168, 173, + 179, 172, 173, 174, 175, 177, 176, 175, 174, 168, 168, 168, 167, 168, 170, 173, + 174, 180, 181, 180, 181, 182, 182, 180, 180, 180, 178, 176, 174, 172, 171, 170, + 170, 172, 171, 170, 170, 171, 171, 170, 169, 169, 169, 170, 171, 168, 160, 150, + 143, 146, 148, 151, 155, 156, 154, 152, 152, 153, 154, 155, 156, 156, 154, 150, + 147, 151, 145, 142, 143, 143, 139, 138, 139, 139, 135, 130, 126, 123, 121, 119, + 118, 138, 145, 147, 143, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 211, 112, 103, 113, 125, 118, 108, 105, 108, 117, 128, 141, 149, 154, 154, + 150, 147, 151, 161, 167, 165, 164, 160, 162, 165, 171, 173, 168, 167, 167, 169, + 170, 173, 174, 177, 176, 174, 173, 165, 165, 168, 169, 169, 170, 171, 173, 179, + 179, 179, 180, 181, 182, 181, 181, 179, 177, 175, 173, 171, 170, 170, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 168, 167, 164, 162, 156, 149, 143, 146, + 147, 151, 153, 154, 154, 153, 152, 153, 154, 156, 157, 155, 152, 149, 147, 145, + 140, 138, 140, 140, 136, 133, 134, 136, 133, 128, 121, 116, 116, 120, 123, 141, + 147, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 106, 95, 111, 129, 121, 106, 103, 108, 118, 129, 142, 148, 150, 158, 154, 151, + 152, 157, 160, 163, 164, 163, 161, 161, 167, 170, 167, 164, 164, 171, 172, 172, + 172, 174, 173, 173, 172, 168, 168, 169, 169, 167, 168, 172, 175, 175, 176, 176, + 177, 179, 181, 182, 183, 179, 178, 176, 174, 173, 172, 172, 172, 168, 169, 170, + 169, 169, 169, 169, 170, 170, 167, 164, 161, 160, 156, 153, 149, 150, 152, 154, + 156, 156, 157, 156, 154, 156, 156, 155, 154, 152, 150, 150, 150, 142, 138, 137, + 140, 140, 136, 132, 132, 131, 130, 126, 119, 113, 116, 126, 136, 138, 179, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 93, + 115, 137, 125, 114, 109, 109, 116, 128, 142, 151, 154, 160, 158, 155, 152, 152, + 153, 158, 164, 172, 164, 158, 160, 166, 169, 171, 173, 176, 174, 172, 169, 170, + 170, 171, 170, 173, 172, 172, 169, 166, 167, 172, 177, 173, 173, 174, 175, 177, + 179, 181, 182, 180, 179, 177, 176, 175, 174, 174, 174, 169, 170, 171, 170, 169, + 169, 170, 170, 170, 164, 162, 160, 161, 159, 159, 157, 155, 156, 157, 157, 159, + 159, 158, 158, 161, 159, 155, 151, 149, 149, 152, 155, 143, 140, 140, 144, 144, + 139, 135, 135, 128, 129, 126, 117, 112, 117, 133, 147, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 90, 117, 132, + 126, 115, 99, 110, 126, 125, 139, 158, 159, 163, 158, 154, 155, 160, 164, 162, + 162, 166, 169, 170, 171, 169, 166, 163, 160, 170, 169, 168, 168, 171, 173, 175, + 174, 174, 171, 173, 172, 172, 172, 172, 173, 179, 179, 179, 179, 179, 179, 179, + 179, 176, 176, 176, 175, 174, 173, 171, 170, 169, 168, 167, 169, 171, 173, 173, + 170, 167, 166, 167, 164, 160, 158, 157, 157, 159, 159, 159, 158, 158, 158, 157, + 157, 153, 154, 155, 156, 155, 154, 152, 151, 147, 145, 142, 141, 139, 137, 133, + 130, 130, 128, 121, 115, 121, 135, 143, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 115, 128, 121, 122, + 109, 109, 119, 129, 143, 161, 167, 163, 158, 155, 154, 159, 163, 163, 162, 160, + 164, 166, 166, 165, 163, 161, 159, 170, 170, 169, 169, 171, 172, 174, 172, 170, + 168, 168, 167, 167, 170, 171, 171, 177, 178, 179, 180, 181, 181, 180, 180, 177, + 177, 177, 176, 175, 174, 172, 171, 167, 166, 165, 167, 169, 170, 170, 168, 167, + 167, 168, 165, 161, 158, 159, 160, 161, 160, 159, 159, 159, 157, 158, 158, 158, + 158, 159, 159, 158, 156, 154, 153, 147, 145, 142, 140, 139, 136, 132, 129, 127, + 124, 117, 114, 122, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 118, 130, 126, 128, 122, 110, + 115, 137, 149, 156, 166, 167, 162, 159, 159, 164, 167, 169, 170, 165, 167, 168, + 169, 169, 167, 166, 164, 171, 170, 169, 168, 170, 170, 170, 169, 169, 167, 167, + 167, 168, 170, 171, 172, 173, 175, 178, 180, 183, 182, 181, 179, 178, 178, 178, + 177, 176, 174, 172, 171, 167, 166, 165, 166, 169, 170, 169, 167, 169, 168, 167, + 165, 161, 159, 162, 163, 162, 162, 160, 161, 160, 158, 158, 157, 157, 158, 158, + 158, 156, 154, 151, 149, 145, 143, 140, 138, 136, 133, 129, 125, 125, 120, 115, + 116, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 84, 108, 128, 136, 131, 131, 115, 117, 144, + 153, 149, 160, 164, 160, 159, 159, 165, 170, 175, 177, 172, 173, 174, 174, 173, + 172, 170, 169, 170, 169, 168, 167, 168, 167, 166, 164, 165, 164, 164, 164, 165, + 167, 169, 170, 168, 171, 175, 178, 181, 181, 179, 177, 178, 176, 176, 176, 174, + 173, 171, 170, 169, 168, 167, 168, 170, 171, 171, 169, 169, 167, 166, 162, 160, + 160, 163, 165, 163, 163, 161, 160, 157, 157, 156, 156, 155, 155, 155, 154, 152, + 149, 146, 144, 145, 142, 139, 136, 134, 131, 126, 123, 123, 117, 114, 120, 174, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 68, 89, 119, 142, 134, 137, 119, 114, 137, 147, 149, + 161, 156, 154, 156, 157, 163, 169, 175, 177, 175, 175, 175, 175, 173, 171, 170, + 169, 169, 168, 167, 166, 166, 165, 163, 160, 155, 152, 152, 153, 156, 157, 159, + 160, 162, 164, 171, 174, 177, 177, 176, 174, 176, 174, 174, 173, 172, 170, 169, + 168, 169, 168, 167, 168, 170, 171, 170, 167, 168, 166, 165, 161, 159, 160, 164, + 166, 163, 163, 160, 159, 156, 156, 154, 154, 153, 153, 153, 151, 149, 146, 143, + 141, 143, 141, 137, 134, 131, 127, 123, 119, 117, 113, 113, 166, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 80, 114, 145, 142, 142, 124, 113, 121, 136, 150, 163, 156, + 156, 158, 161, 166, 170, 175, 178, 177, 177, 177, 176, 176, 174, 174, 173, 169, + 169, 168, 167, 167, 165, 163, 159, 154, 151, 151, 151, 154, 155, 156, 157, 160, + 162, 168, 171, 173, 174, 173, 172, 175, 173, 173, 172, 171, 169, 168, 167, 167, + 166, 165, 165, 167, 168, 167, 164, 166, 165, 165, 162, 161, 160, 162, 166, 164, + 162, 160, 159, 156, 155, 153, 153, 153, 153, 153, 152, 150, 147, 144, 142, 141, + 139, 135, 131, 128, 124, 119, 115, 111, 110, 161, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 81, 111, 143, 150, 148, 140, 124, 111, 122, 141, 148, 155, 157, 160, + 162, 164, 168, 171, 171, 174, 174, 174, 175, 176, 176, 177, 178, 170, 171, 171, + 170, 170, 168, 166, 162, 158, 155, 154, 154, 155, 156, 159, 159, 162, 163, 167, + 169, 171, 172, 172, 171, 175, 173, 173, 172, 171, 170, 168, 167, 167, 166, 165, + 165, 167, 167, 166, 164, 164, 165, 166, 165, 164, 163, 164, 165, 164, 164, 162, + 160, 157, 156, 154, 152, 151, 152, 152, 151, 149, 146, 144, 142, 138, 136, 131, + 128, 124, 120, 114, 111, 110, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 76, 100, 129, 152, 154, 157, 141, 113, 114, 130, 127, 150, 153, 155, 157, 156, + 156, 158, 157, 164, 165, 166, 168, 170, 172, 173, 174, 170, 170, 172, 172, 170, + 168, 167, 163, 158, 156, 155, 154, 154, 156, 157, 158, 164, 164, 167, 168, 170, + 171, 172, 173, 176, 174, 174, 173, 172, 171, 169, 168, 170, 168, 167, 166, 169, + 168, 167, 166, 164, 166, 168, 167, 167, 165, 165, 165, 166, 164, 163, 162, 158, + 157, 155, 154, 149, 150, 150, 149, 148, 145, 143, 141, 137, 134, 130, 126, 123, + 118, 112, 108, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, 78, + 110, 151, 162, 157, 142, 123, 114, 121, 131, 131, 136, 141, 143, 143, 142, 143, + 143, 145, 154, 154, 155, 163, 158, 151, 155, 160, 157, 159, 160, 163, 162, 160, + 156, 164, 156, 154, 159, 156, 149, 152, 164, 160, 161, 164, 167, 170, 172, 174, + 173, 176, 174, 175, 175, 174, 173, 170, 168, 164, 164, 164, 162, 165, 164, 165, + 165, 169, 166, 163, 160, 159, 160, 162, 164, 167, 163, 160, 158, 158, 158, 156, + 155, 157, 154, 150, 147, 145, 144, 143, 141, 141, 139, 131, 123, 122, 125, 121, + 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 68, 98, 142, + 151, 148, 134, 119, 111, 114, 122, 151, 149, 145, 139, 135, 136, 140, 145, 142, + 147, 141, 136, 138, 133, 127, 130, 143, 145, 147, 145, 140, 137, 137, 139, 153, + 146, 146, 152, 152, 148, 155, 166, 159, 162, 165, 164, 162, 165, 172, 179, 176, + 175, 175, 176, 175, 173, 170, 169, 165, 165, 163, 163, 163, 164, 164, 165, 169, + 167, 165, 163, 162, 163, 164, 164, 165, 162, 159, 157, 157, 156, 155, 153, 155, + 152, 148, 146, 144, 143, 142, 140, 137, 136, 130, 121, 118, 119, 115, 158, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 85, 139, 147, 146, + 133, 122, 113, 113, 117, 136, 140, 145, 146, 147, 145, 145, 143, 143, 144, 134, + 128, 133, 134, 135, 143, 120, 128, 135, 132, 123, 122, 128, 136, 110, 104, 105, + 111, 113, 113, 120, 131, 153, 159, 164, 162, 157, 158, 167, 175, 173, 174, 175, + 175, 174, 172, 169, 168, 166, 166, 163, 163, 163, 164, 164, 165, 168, 168, 167, + 166, 166, 165, 165, 165, 164, 161, 158, 156, 155, 154, 152, 150, 153, 150, 147, + 146, 145, 145, 143, 141, 134, 134, 130, 121, 114, 160, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 71, 130, 143, 146, 138, 123, + 112, 114, 121, 118, 124, 133, 140, 143, 142, 140, 135, 133, 141, 146, 149, 157, + 152, 142, 143, 157, 160, 160, 148, 132, 122, 122, 125, 128, 121, 122, 125, 129, + 130, 137, 147, 148, 154, 161, 162, 158, 155, 159, 163, 171, 172, 173, 173, 172, + 170, 168, 166, 165, 164, 162, 161, 162, 162, 162, 162, 166, 167, 167, 168, 167, + 166, 164, 163, 162, 160, 156, 154, 153, 152, 150, 148, 153, 151, 148, 147, 147, + 146, 144, 142, 131, 132, 130, 121, 112, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 57, 65, 106, 128, 142, 136, 116, 102, 108, + 120, 130, 127, 121, 117, 116, 120, 125, 124, 112, 127, 143, 153, 157, 141, 114, + 105, 102, 107, 113, 118, 124, 132, 140, 141, 135, 129, 130, 133, 137, 140, 148, + 156, 156, 155, 153, 152, 152, 153, 156, 159, 169, 170, 171, 171, 170, 168, 165, + 164, 163, 162, 160, 159, 159, 159, 159, 159, 163, 164, 166, 166, 166, 165, 163, + 161, 161, 158, 155, 153, 152, 151, 149, 147, 151, 149, 147, 146, 145, 144, 141, + 139, 127, 127, 125, 118, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 58, 63, 85, 115, 135, 134, 114, 101, 109, 125, 132, + 130, 127, 125, 125, 125, 123, 120, 113, 117, 116, 116, 121, 114, 102, 105, 135, + 135, 133, 137, 141, 146, 146, 142, 147, 144, 148, 150, 154, 160, 166, 171, 170, + 161, 151, 144, 145, 149, 157, 163, 168, 169, 170, 170, 169, 168, 165, 163, 162, + 161, 158, 157, 157, 157, 157, 157, 161, 162, 163, 164, 164, 163, 162, 161, 159, + 156, 153, 152, 152, 152, 150, 148, 148, 146, 144, 143, 142, 140, 136, 133, 123, + 120, 117, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 58, 62, 74, 104, 129, 132, 118, 107, 114, 129, 126, 133, 141, + 147, 150, 146, 135, 125, 128, 125, 112, 106, 114, 118, 124, 136, 137, 136, 139, + 145, 154, 159, 162, 158, 151, 152, 156, 158, 161, 164, 167, 170, 174, 168, 161, + 152, 146, 149, 157, 166, 169, 171, 171, 172, 171, 169, 166, 165, 162, 161, 158, + 158, 157, 157, 156, 157, 162, 162, 163, 163, 163, 163, 162, 162, 157, 155, 152, + 152, 152, 153, 151, 150, 150, 147, 145, 143, 141, 138, 134, 130, 124, 117, 112, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 190, 62, 65, 93, 118, 126, 116, 109, 114, 126, 137, 140, 143, 146, 148, + 146, 141, 135, 134, 141, 140, 140, 147, 144, 139, 142, 159, 160, 162, 163, 165, + 164, 163, 162, 168, 171, 173, 173, 173, 174, 176, 174, 168, 171, 172, 165, 156, + 151, 155, 162, 171, 172, 173, 173, 172, 171, 168, 166, 163, 162, 159, 158, 158, + 158, 157, 157, 163, 163, 163, 163, 163, 163, 163, 163, 156, 154, 152, 152, 153, + 153, 153, 151, 153, 151, 149, 147, 145, 141, 136, 132, 128, 119, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 64, 75, 78, 94, 115, 126, 120, 116, 122, 136, 141, 148, 154, 156, 156, 152, + 149, 150, 147, 146, 146, 147, 149, 155, 161, 166, 158, 154, 153, 158, 165, 169, + 172, 165, 170, 171, 173, 173, 172, 174, 175, 172, 173, 175, 170, 160, 149, 151, + 160, 165, 169, 172, 172, 171, 169, 167, 167, 162, 164, 163, 161, 158, 156, 156, + 158, 164, 163, 161, 159, 158, 158, 159, 160, 159, 152, 146, 146, 149, 152, 154, + 155, 148, 150, 148, 140, 136, 136, 135, 129, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 65, 66, + 68, 80, 102, 115, 114, 115, 119, 134, 140, 145, 150, 153, 152, 149, 150, 159, + 159, 159, 159, 157, 155, 157, 160, 163, 160, 159, 158, 159, 159, 162, 167, 168, + 170, 171, 170, 171, 171, 175, 178, 173, 173, 176, 174, 164, 154, 154, 161, 166, + 170, 173, 173, 171, 169, 166, 166, 157, 159, 159, 159, 157, 157, 158, 160, 160, + 160, 160, 160, 160, 161, 161, 162, 152, 150, 151, 155, 158, 157, 153, 150, 150, + 149, 146, 139, 135, 134, 132, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 66, 60, 58, 67, + 88, 105, 110, 115, 121, 130, 135, 140, 143, 145, 145, 144, 146, 157, 157, 159, + 161, 159, 155, 154, 155, 158, 161, 165, 163, 160, 156, 158, 164, 169, 171, 171, + 168, 168, 172, 176, 180, 176, 173, 175, 175, 170, 161, 158, 161, 167, 171, 173, + 173, 170, 167, 164, 164, 156, 158, 158, 158, 157, 158, 158, 160, 160, 160, 161, + 162, 161, 160, 158, 157, 153, 154, 156, 158, 159, 157, 151, 145, 148, 146, 142, + 137, 136, 134, 130, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 59, 53, 60, 77, 95, + 106, 114, 122, 125, 130, 135, 139, 138, 138, 139, 143, 148, 150, 152, 156, 154, + 152, 152, 156, 156, 160, 162, 163, 160, 159, 160, 163, 169, 171, 172, 171, 171, + 172, 176, 179, 179, 176, 173, 175, 173, 165, 160, 159, 168, 170, 172, 171, 168, + 164, 161, 160, 159, 159, 157, 157, 156, 156, 155, 156, 161, 162, 163, 162, 160, + 156, 151, 149, 159, 160, 158, 153, 151, 151, 149, 145, 144, 141, 138, 137, 137, + 132, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 57, 56, 50, 54, 66, 84, 97, 109, + 117, 123, 130, 136, 139, 137, 137, 139, 142, 147, 147, 148, 150, 151, 150, 153, + 158, 159, 157, 158, 159, 164, 167, 169, 167, 168, 171, 174, 175, 175, 174, 174, + 175, 181, 176, 174, 175, 173, 164, 158, 156, 165, 167, 169, 168, 164, 160, 157, + 156, 155, 154, 152, 153, 153, 154, 153, 152, 159, 160, 161, 161, 158, 153, 148, + 145, 153, 157, 156, 151, 148, 150, 149, 143, 140, 135, 132, 131, 129, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 49, 47, 51, 60, 73, 87, 100, 111, 123, + 131, 140, 142, 142, 141, 143, 146, 147, 145, 145, 147, 145, 143, 148, 154, 161, + 158, 157, 161, 169, 174, 175, 171, 169, 172, 176, 178, 177, 175, 174, 174, 180, + 175, 172, 173, 170, 164, 160, 160, 162, 164, 166, 165, 162, 158, 155, 154, 148, + 147, 146, 148, 152, 155, 154, 154, 155, 156, 158, 159, 158, 155, 152, 149, 138, + 148, 155, 153, 151, 153, 149, 140, 137, 130, 126, 122, 116, 156, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 44, 45, 51, 58, 67, 81, 96, 108, 121, 131, 141, + 145, 144, 143, 143, 146, 142, 139, 141, 145, 144, 142, 146, 151, 161, 162, 164, + 169, 175, 178, 180, 178, 173, 172, 175, 176, 175, 173, 175, 176, 177, 173, 172, + 172, 169, 164, 164, 168, 162, 163, 165, 164, 161, 158, 155, 154, 151, 150, 148, + 151, 156, 159, 158, 157, 156, 157, 158, 159, 158, 156, 154, 152, 137, 149, 155, + 151, 148, 151, 148, 139, 133, 124, 119, 114, 157, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 42, 47, 55, 59, 67, 80, 95, 108, 117, 128, 140, 146, 144, + 142, 141, 144, 140, 141, 147, 152, 154, 153, 155, 159, 158, 165, 172, 175, 176, + 176, 179, 180, 177, 174, 177, 174, 175, 175, 176, 178, 175, 173, 171, 171, 168, + 166, 169, 174, 162, 163, 165, 165, 162, 159, 156, 156, 160, 158, 155, 157, 161, + 164, 161, 159, 161, 162, 161, 161, 159, 156, 153, 152, 149, 157, 156, 144, 140, + 144, 147, 140, 130, 122, 115, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 49, 48, 53, 61, 68, 75, 92, 110, 119, 129, 139, 147, 150, 147, 141, + 137, 139, 144, 149, 154, 159, 159, 159, 159, 161, 165, 169, 172, 175, 176, 180, + 180, 173, 174, 178, 178, 178, 176, 175, 175, 176, 176, 176, 175, 174, 175, 174, + 172, 170, 167, 165, 164, 162, 160, 156, 153, 155, 154, 153, 156, 160, 162, 160, + 157, 161, 160, 158, 159, 161, 161, 159, 157, 150, 157, 158, 151, 148, 145, 140, + 131, 133, 121, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 48, 51, 56, 62, 71, 89, 109, 115, 125, 136, 145, 148, 145, 139, 138, 139, + 144, 149, 151, 155, 157, 157, 156, 161, 164, 169, 170, 173, 173, 178, 178, 175, + 176, 179, 180, 178, 176, 175, 175, 177, 177, 176, 175, 176, 175, 175, 172, 173, + 169, 166, 164, 161, 159, 157, 154, 158, 157, 156, 158, 162, 162, 160, 157, 161, + 160, 157, 157, 158, 157, 154, 152, 155, 154, 147, 141, 141, 143, 139, 131, 116, + 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 49, + 52, 58, 67, 86, 106, 115, 126, 136, 145, 146, 144, 138, 138, 141, 144, 147, + 148, 152, 154, 155, 156, 161, 163, 168, 170, 172, 172, 177, 177, 176, 177, 179, + 179, 177, 175, 174, 174, 177, 176, 176, 175, 174, 174, 173, 173, 174, 170, 163, + 160, 159, 159, 157, 156, 161, 161, 159, 161, 163, 164, 162, 159, 164, 163, 161, + 160, 160, 158, 154, 152, 154, 150, 142, 138, 137, 138, 130, 121, 104, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 47, 52, 56, + 63, 82, 101, 120, 130, 140, 147, 146, 143, 139, 141, 146, 148, 147, 149, 152, + 154, 158, 158, 159, 162, 167, 169, 170, 171, 175, 176, 176, 177, 178, 177, 175, + 172, 172, 172, 175, 175, 174, 174, 173, 173, 172, 171, 171, 167, 159, 157, 157, + 158, 159, 159, 161, 162, 162, 164, 165, 166, 165, 164, 164, 163, 161, 160, 160, + 158, 154, 151, 147, 145, 144, 142, 136, 129, 117, 157, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 54, 58, 63, 79, + 94, 116, 127, 138, 144, 145, 144, 143, 146, 148, 151, 149, 150, 151, 154, 158, + 160, 160, 163, 167, 168, 169, 170, 173, 175, 175, 175, 176, 175, 172, 170, 170, + 171, 172, 172, 172, 171, 171, 171, 171, 170, 167, 161, 156, 154, 156, 159, 161, + 162, 157, 159, 162, 165, 165, 165, 166, 166, 157, 155, 154, 154, 153, 152, 149, + 146, 141, 142, 141, 134, 124, 113, 107, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 55, 58, 63, 76, 92, 106, + 119, 132, 140, 143, 144, 146, 152, 149, 150, 150, 151, 151, 154, 156, 157, 159, + 162, 166, 167, 168, 169, 172, 172, 173, 174, 175, 174, 172, 170, 171, 172, 172, + 171, 171, 171, 171, 171, 171, 170, 163, 160, 155, 154, 156, 159, 161, 163, 156, + 159, 163, 165, 164, 164, 165, 166, 157, 155, 154, 153, 152, 151, 148, 146, 140, + 136, 129, 120, 108, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 51, 55, 58, 63, 77, 92, 106, 119, 131, + 138, 139, 142, 145, 152, 152, 153, 153, 153, 155, 156, 158, 159, 159, 162, 165, + 166, 166, 167, 169, 171, 174, 175, 176, 175, 173, 173, 174, 176, 172, 172, 172, + 172, 172, 172, 172, 170, 166, 163, 158, 157, 158, 160, 161, 159, 158, 161, 163, + 163, 161, 160, 160, 162, 161, 159, 157, 155, 155, 152, 148, 145, 137, 129, 119, + 114, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 54, 57, 62, 78, 95, 114, 127, 137, 141, 140, + 140, 145, 150, 155, 157, 157, 158, 159, 160, 161, 161, 159, 161, 164, 166, 166, + 166, 169, 170, 175, 176, 177, 176, 175, 175, 177, 178, 174, 174, 174, 174, 174, + 172, 173, 173, 170, 167, 162, 160, 160, 161, 158, 158, 160, 163, 164, 163, 160, + 157, 156, 157, 161, 159, 156, 154, 152, 147, 143, 140, 133, 122, 116, 118, 166, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 53, 57, 66, 75, 85, 112, 121, 130, 134, 136, 138, 143, + 148, 156, 159, 162, 161, 159, 158, 162, 165, 163, 163, 162, 162, 162, 164, 165, + 165, 171, 174, 176, 178, 181, 181, 175, 168, 170, 171, 172, 169, 170, 172, 173, + 170, 168, 165, 162, 160, 158, 159, 162, 164, 161, 159, 158, 160, 162, 162, 159, + 155, 161, 156, 152, 151, 150, 147, 137, 127, 116, 113, 111, 161, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 59, 64, 73, 83, 108, 119, 129, 134, 136, 140, 144, 149, 155, + 159, 161, 161, 160, 159, 162, 164, 161, 162, 163, 163, 165, 167, 169, 170, 176, + 169, 165, 170, 176, 178, 173, 169, 171, 174, 174, 170, 170, 173, 173, 170, 167, + 165, 163, 161, 159, 160, 162, 163, 159, 159, 160, 161, 162, 162, 160, 158, 155, + 153, 150, 146, 140, 133, 125, 120, 117, 117, 164, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 190, 64, 70, 78, 105, 116, 126, 134, 138, 143, 148, 151, 155, 157, 161, + 162, 162, 160, 162, 163, 162, 161, 163, 166, 168, 171, 172, 175, 172, 157, 150, + 160, 173, 177, 177, 179, 173, 176, 175, 172, 171, 171, 170, 166, 163, 162, 161, + 160, 160, 160, 159, 160, 154, 157, 158, 159, 159, 158, 156, 156, 152, 151, 146, + 138, 128, 121, 117, 117, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 62, 67, 73, 102, 112, 124, 131, 139, 146, 150, 153, 156, 159, 162, 162, 162, + 159, 160, 159, 162, 163, 164, 167, 169, 171, 173, 174, 173, 158, 152, 162, 171, + 173, 175, 182, 174, 176, 176, 170, 168, 168, 166, 162, 159, 159, 159, 158, 158, + 157, 156, 156, 149, 153, 156, 156, 153, 151, 150, 152, 152, 146, 137, 127, 120, + 116, 117, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, 62, + 68, 95, 105, 117, 128, 138, 145, 149, 151, 159, 159, 160, 161, 161, 158, 158, + 157, 164, 165, 165, 168, 169, 170, 170, 170, 179, 174, 169, 172, 171, 167, 168, + 175, 172, 174, 174, 168, 166, 165, 162, 157, 155, 155, 155, 154, 153, 153, 152, + 152, 148, 151, 154, 153, 147, 144, 144, 146, 144, 133, 119, 112, 111, 116, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 68, 91, + 100, 112, 125, 136, 144, 147, 148, 160, 158, 158, 157, 159, 159, 160, 158, 166, + 167, 169, 169, 170, 169, 167, 169, 171, 176, 176, 176, 173, 173, 174, 174, 168, + 172, 170, 166, 163, 162, 158, 153, 152, 153, 151, 151, 149, 149, 150, 150, 151, + 152, 153, 150, 144, 140, 138, 137, 128, 117, 106, 103, 157, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 70, 92, 102, 114, + 127, 139, 148, 150, 150, 157, 155, 154, 154, 158, 161, 164, 163, 167, 168, 171, + 171, 172, 172, 169, 168, 166, 176, 176, 172, 173, 181, 180, 172, 166, 170, 169, + 165, 163, 162, 158, 152, 153, 152, 150, 148, 147, 148, 149, 150, 152, 150, 145, + 142, 139, 134, 128, 125, 114, 111, 108, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 70, 94, 103, 115, 129, 143, + 153, 156, 155, 155, 152, 148, 151, 157, 163, 165, 167, 166, 167, 170, 172, 174, + 172, 172, 171, 176, 184, 180, 167, 169, 178, 172, 156, 165, 170, 169, 165, 164, + 162, 158, 153, 153, 151, 149, 146, 145, 147, 147, 149, 147, 143, 137, 134, 131, + 126, 119, 113, 110, 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 89, 108, 125, 139, 148, 158, + 163, 157, 152, 149, 149, 153, 158, 161, 163, 170, 170, 171, 172, 171, 172, 173, + 173, 176, 174, 171, 171, 174, 172, 170, 167, 168, 166, 163, 163, 163, 160, 157, + 153, 145, 138, 136, 135, 141, 145, 144, 141, 147, 141, 131, 122, 115, 112, 112, + 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 76, 94, 114, 130, 142, 152, 156, 154, + 151, 149, 148, 150, 154, 157, 159, 162, 163, 165, 166, 168, 169, 169, 171, 175, + 172, 169, 169, 171, 173, 170, 166, 169, 165, 163, 159, 157, 151, 144, 136, 135, + 141, 145, 140, 131, 130, 138, 148, 138, 131, 121, 112, 110, 114, 165, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 195, 90, 110, 128, 141, 151, 153, 155, 151, 152, + 151, 151, 153, 156, 157, 159, 161, 167, 170, 172, 172, 171, 171, 170, 166, 163, + 165, 168, 168, 166, 162, 160, 158, 156, 155, 154, 149, 143, 137, 136, 135, 134, + 136, 137, 138, 136, 133, 121, 117, 113, 111, 114, 166, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 98, 118, 135, 144, 148, 147, 147, 147, 146, 146, + 147, 149, 153, 154, 158, 162, 168, 171, 171, 171, 169, 162, 159, 157, 158, 162, + 161, 159, 155, 152, 149, 147, 144, 144, 143, 141, 138, 139, 133, 129, 131, 135, + 131, 119, 107, 108, 111, 116, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 97, 113, 124, 131, 133, 135, 138, 137, 137, 137, 139, + 143, 144, 149, 154, 158, 163, 163, 163, 161, 158, 153, 151, 153, 156, 156, 154, + 150, 152, 145, 139, 133, 131, 130, 129, 126, 131, 134, 134, 124, 109, 100, 100, + 104, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 105, 114, 123, 130, 133, 134, 131, 132, 135, 140, 141, + 144, 150, 153, 156, 156, 158, 155, 155, 151, 148, 148, 151, 152, 147, 144, 146, + 141, 132, 128, 126, 126, 126, 126, 122, 118, 111, 104, 101, 105, 113, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 203, 114, 122, 127, 129, 128, 127, 130, 135, 139, 141, 145, + 147, 150, 152, 153, 150, 150, 143, 140, 140, 142, 142, 137, 134, 133, 130, 126, + 124, 124, 122, 120, 119, 117, 108, 101, 106, 120, 131, 174, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 107, 115, 116, 115, 113, 118, 124, 132, 133, 136, 138, 141, + 142, 143, 143, 140, 134, 131, 130, 133, 132, 128, 125, 125, 123, 119, 115, 113, + 104, 97, 92, 111, 121, 132, 136, 174, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 207, 114, 119, 121, 119, 121, 125, 132, 133, 131, 133, + 134, 126, 128, 129, 126, 124, 121, 118, 116, 117, 101, 109, 97, 102, 117, 105, + 117, 129, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 114, 116, 117, 119, + 119, 120, 117, 112, 110, 106, 103, 92, 96, 102, 105, 164, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 66, 78, 113, 136, + 142, 148, 145, 136, 134, 137, 144, 145, 137, 129, 127, 128, 128, 127, 127, 126, + 122, 118, 118, 121, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 185, 50, 74, 99, 113, 142, 153, 147, 145, + 144, 137, 135, 127, 138, 147, 146, 142, 140, 137, 134, 139, 140, 139, 134, 127, + 122, 122, 124, 121, 129, 137, 145, 158, 165, 186, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 188, 84, 118, 127, 111, 91, 130, 151, 151, 134, 128, 123, 113, + 108, 83, 92, 101, 108, 116, 130, 142, 148, 139, 140, 138, 130, 120, 114, 114, + 116, 121, 131, 142, 153, 165, 167, 149, 125, 125, 217, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 58, 57, + 54, 66, 98, 129, 141, 131, 120, 133, 155, 154, 135, 126, 119, 105, 94, 116, + 112, 102, 94, 96, 113, 131, 141, 124, 125, 121, 112, 101, 95, 95, 98, 117, + 127, 139, 149, 158, 156, 132, 105, 86, 81, 78, 80, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 66, 65, 70, 64, 65, 84, + 121, 149, 154, 149, 145, 134, 144, 145, 131, 113, 103, 102, 105, 94, 92, 92, + 93, 99, 108, 117, 124, 117, 109, 110, 118, 120, 111, 105, 107, 118, 125, 131, + 133, 132, 123, 101, 78, 68, 69, 70, 72, 73, 74, 73, 132, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 68, 61, 57, 57, 69, 80, 101, 126, 142, + 143, 139, 136, 135, 125, 108, 90, 84, 87, 88, 85, 104, 105, 108, 110, 108, + 104, 100, 98, 120, 118, 118, 120, 118, 108, 99, 94, 92, 96, 94, 83, 76, + 77, 82, 83, 64, 63, 62, 61, 62, 63, 63, 64, 55, 97, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 191, 68, 72, 73, 73, 74, 76, 97, 119, 128, 129, 127, 124, + 120, 108, 104, 98, 94, 96, 97, 91, 82, 83, 87, 91, 94, 93, 87, 79, + 75, 84, 88, 91, 91, 90, 88, 80, 71, 72, 76, 74, 65, 59, 63, 72, + 79, 66, 62, 58, 57, 59, 62, 63, 63, 58, 51, 44, 115, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 70, + 70, 71, 72, 71, 71, 73, 76, 76, 100, 118, 118, 111, 108, 103, 96, 86, + 97, 108, 109, 104, 100, 93, 88, 76, 76, 78, 80, 81, 80, 78, 78, 66, + 76, 79, 76, 76, 81, 77, 67, 77, 76, 73, 71, 71, 73, 73, 71, 62, + 59, 56, 58, 62, 64, 64, 63, 59, 51, 44, 45, 93, 208, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 77, 67, 74, 80, + 78, 72, 72, 81, 88, 92, 108, 120, 118, 114, 112, 105, 95, 88, 90, 88, + 78, 70, 70, 73, 74, 73, 72, 72, 71, 69, 68, 68, 68, 75, 81, 79, + 70, 66, 69, 67, 59, 79, 78, 76, 73, 68, 65, 66, 69, 49, 48, 50, + 55, 62, 64, 61, 58, 58, 51, 46, 46, 41, 34, 30, 107, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 192, 72, 76, 75, 68, 77, 83, 79, 74, + 78, 89, 97, 71, 77, 84, 87, 88, 87, 80, 72, 83, 75, 62, 53, 55, + 61, 61, 56, 62, 65, 69, 71, 70, 67, 64, 61, 73, 74, 72, 64, 60, + 60, 60, 59, 63, 76, 91, 93, 79, 63, 60, 64, 46, 44, 48, 55, 65, + 67, 63, 57, 59, 51, 48, 50, 45, 35, 33, 40, 43, 116, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 193, 71, 69, 70, 73, 73, 70, 93, 95, 89, 76, 68, 69, 71, + 72, 82, 79, 83, 92, 97, 95, 91, 89, 74, 75, 71, 67, 67, 69, 65, + 57, 71, 75, 80, 85, 86, 84, 80, 77, 70, 69, 71, 72, 71, 68, 70, + 76, 56, 65, 82, 97, 95, 79, 64, 57, 53, 50, 51, 58, 67, 70, 68, + 62, 67, 56, 52, 58, 58, 50, 48, 54, 55, 52, 94, 209, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 78, + 79, 73, 64, 64, 72, 76, 77, 85, 84, 75, 67, 66, 74, 75, 71, 66, + 60, 63, 75, 81, 79, 77, 82, 81, 90, 92, 79, 63, 58, 63, 68, 79, + 81, 81, 81, 80, 78, 76, 75, 67, 64, 67, 75, 71, 65, 65, 74, 71, + 55, 49, 68, 88, 90, 73, 58, 58, 52, 51, 56, 65, 69, 68, 63, 77, + 62, 57, 66, 72, 68, 65, 67, 61, 56, 46, 40, 37, 110, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 216, 132, 123, 115, 78, 75, 85, 78, 73, + 75, 72, 70, 72, 80, 84, 78, 73, 77, 86, 92, 88, 83, 72, 72, 74, + 75, 76, 74, 70, 65, 66, 64, 68, 73, 72, 65, 62, 66, 70, 79, 83, + 80, 75, 74, 74, 73, 74, 82, 81, 71, 64, 66, 60, 51, 61, 56, 53, + 63, 76, 82, 73, 63, 53, 48, 46, 53, 63, 69, 66, 60, 65, 74, 79, + 72, 64, 61, 58, 54, 53, 38, 29, 36, 40, 39, 117, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 212, 111, 77, 109, 128, 81, 81, 86, 84, 95, 84, 76, 77, 79, + 79, 81, 86, 82, 86, 93, 101, 106, 102, 92, 83, 70, 68, 66, 63, 62, + 59, 55, 52, 60, 60, 64, 68, 67, 61, 61, 66, 62, 68, 73, 71, 69, + 71, 71, 69, 66, 74, 74, 63, 58, 64, 68, 66, 59, 59, 63, 72, 82, + 83, 75, 65, 72, 60, 48, 45, 52, 62, 69, 70, 76, 82, 79, 68, 60, + 59, 60, 60, 46, 41, 46, 61, 69, 63, 56, 121, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 100, + 59, 67, 96, 102, 83, 78, 86, 88, 85, 80, 68, 58, 58, 63, 65, 66, + 68, 71, 81, 93, 101, 99, 90, 78, 71, 71, 68, 63, 58, 55, 52, 49, + 47, 51, 54, 59, 63, 62, 60, 65, 73, 60, 65, 68, 70, 76, 81, 81, + 76, 62, 68, 67, 56, 51, 56, 61, 62, 62, 66, 71, 76, 78, 76, 72, + 68, 68, 61, 54, 53, 59, 65, 66, 65, 78, 80, 77, 69, 61, 59, 60, + 60, 45, 57, 73, 82, 79, 68, 56, 49, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 184, 112, 63, 55, 62, 82, + 110, 103, 81, 85, 90, 82, 79, 67, 60, 54, 52, 54, 57, 58, 59, 65, + 68, 69, 70, 68, 63, 58, 55, 66, 63, 60, 58, 57, 55, 52, 49, 46, + 52, 59, 63, 66, 70, 80, 89, 94, 92, 86, 79, 75, 68, 54, 41, 57, + 60, 59, 54, 52, 54, 54, 51, 70, 74, 76, 73, 69, 66, 69, 73, 62, + 59, 56, 58, 62, 65, 66, 66, 65, 71, 74, 73, 68, 63, 59, 57, 60, + 78, 88, 76, 55, 43, 44, 48, 43, 89, 209, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 247, 214, 151, 102, 83, 65, 59, 53, 63, 98, 106, 92, + 82, 96, 93, 76, 73, 57, 59, 59, 55, 51, 50, 53, 55, 67, 62, 53, + 50, 50, 50, 49, 47, 48, 49, 51, 54, 56, 57, 53, 50, 48, 57, 65, + 70, 76, 86, 98, 106, 80, 84, 89, 95, 103, 107, 101, 90, 63, 59, 53, + 49, 51, 55, 54, 50, 67, 72, 77, 75, 70, 67, 71, 75, 75, 68, 59, + 54, 56, 63, 73, 80, 62, 66, 72, 77, 76, 72, 68, 66, 81, 84, 76, + 55, 36, 31, 37, 42, 44, 53, 56, 118, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 124, 104, 78, 78, 70, 60, 65, 66, 77, 93, 87, 79, 84, 96, + 89, 73, 69, 60, 66, 67, 59, 52, 51, 55, 58, 68, 62, 53, 49, 50, + 50, 47, 44, 40, 41, 45, 51, 55, 56, 52, 50, 54, 62, 68, 73, 81, + 93, 103, 106, 107, 109, 111, 112, 115, 116, 109, 97, 90, 80, 65, 54, 51, + 51, 51, 49, 58, 64, 72, 76, 76, 74, 74, 74, 77, 75, 73, 69, 67, + 68, 73, 77, 72, 72, 76, 82, 84, 82, 81, 82, 89, 71, 51, 41, 43, + 45, 43, 39, 44, 60, 66, 59, 57, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 72, + 71, 64, 52, 64, 62, 59, 75, 79, 88, 84, 82, 90, 98, 93, 89, 84, + 76, 80, 82, 78, 67, 61, 64, 69, 70, 67, 64, 60, 55, 51, 48, 47, + 47, 43, 43, 44, 47, 50, 50, 48, 47, 54, 59, 61, 63, 71, 81, 84, + 81, 79, 82, 84, 88, 98, 107, 110, 106, 101, 95, 86, 75, 63, 54, 51, + 52, 59, 59, 60, 63, 67, 70, 70, 70, 67, 75, 82, 85, 82, 76, 72, + 70, 83, 82, 87, 95, 97, 91, 87, 86, 76, 54, 39, 44, 55, 57, 54, + 53, 53, 54, 54, 55, 59, 61, 123, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 74, 69, 63, 63, + 55, 67, 61, 60, 77, 79, 80, 86, 95, 117, 119, 98, 97, 103, 90, 78, + 76, 66, 53, 50, 57, 61, 60, 71, 70, 66, 58, 48, 46, 51, 57, 47, + 44, 42, 41, 41, 41, 39, 38, 51, 53, 52, 51, 56, 65, 64, 56, 85, + 86, 84, 83, 90, 100, 106, 105, 84, 92, 99, 96, 82, 68, 64, 67, 70, + 60, 48, 45, 51, 60, 65, 67, 69, 74, 77, 76, 75, 74, 78, 82, 84, + 86, 96, 108, 109, 96, 83, 78, 59, 46, 44, 53, 56, 53, 60, 75, 100, + 79, 63, 67, 71, 65, 58, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 189, 63, 79, 56, 52, 51, 65, 54, + 70, 72, 78, 67, 91, 104, 109, 106, 97, 99, 106, 98, 81, 96, 72, 50, + 50, 62, 72, 77, 80, 100, 84, 65, 56, 64, 72, 62, 47, 45, 42, 42, + 46, 46, 44, 43, 47, 52, 51, 51, 55, 59, 63, 65, 65, 63, 61, 66, + 80, 91, 93, 90, 88, 105, 110, 111, 100, 83, 72, 72, 77, 62, 60, 56, + 51, 49, 53, 60, 66, 89, 90, 88, 84, 86, 89, 82, 71, 65, 71, 84, + 100, 106, 94, 72, 54, 49, 49, 54, 60, 62, 60, 61, 65, 52, 60, 67, + 69, 68, 66, 68, 71, 56, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 215, 117, 65, 73, 78, 54, 58, 57, 68, 69, 82, 82, + 85, 84, 100, 92, 97, 98, 97, 98, 94, 77, 57, 54, 56, 61, 65, 65, + 68, 83, 100, 91, 82, 66, 52, 48, 54, 54, 51, 54, 49, 46, 46, 45, + 43, 44, 50, 47, 47, 48, 51, 54, 57, 59, 61, 61, 61, 67, 76, 81, + 80, 79, 81, 88, 89, 88, 85, 80, 78, 80, 83, 67, 62, 56, 54, 58, + 66, 74, 78, 74, 80, 80, 78, 78, 87, 92, 92, 97, 90, 85, 86, 84, + 76, 70, 70, 62, 55, 55, 65, 76, 76, 70, 65, 61, 64, 65, 64, 61, + 59, 60, 62, 54, 72, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 211, 107, 70, 75, 70, 79, 72, 50, 63, 59, 60, 77, 84, 85, 81, 91, + 91, 83, 88, 91, 84, 71, 63, 63, 66, 76, 64, 60, 75, 95, 105, 101, + 95, 86, 78, 65, 54, 53, 59, 62, 61, 58, 52, 48, 48, 48, 48, 52, + 58, 64, 64, 64, 63, 63, 65, 68, 71, 68, 70, 74, 79, 79, 76, 77, + 82, 80, 74, 69, 68, 70, 72, 71, 68, 69, 60, 50, 46, 50, 56, 60, + 61, 75, 80, 79, 71, 63, 68, 79, 87, 95, 89, 87, 90, 80, 63, 58, + 65, 68, 64, 65, 73, 78, 74, 67, 63, 57, 55, 52, 49, 48, 47, 47, + 48, 59, 58, 58, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 54, 54, + 66, 68, 72, 87, 75, 53, 65, 63, 52, 76, 76, 81, 72, 86, 70, 78, + 74, 70, 68, 62, 58, 63, 72, 74, 76, 81, 87, 91, 95, 101, 105, 83, + 72, 62, 66, 79, 85, 76, 63, 53, 50, 50, 54, 57, 58, 63, 68, 62, + 61, 58, 54, 51, 53, 59, 64, 67, 65, 66, 70, 70, 67, 68, 71, 64, + 61, 60, 66, 75, 82, 83, 81, 76, 70, 63, 57, 55, 55, 56, 57, 75, + 78, 76, 66, 54, 51, 57, 64, 67, 67, 77, 87, 77, 55, 48, 57, 61, + 69, 78, 77, 64, 51, 51, 58, 46, 44, 41, 41, 43, 44, 44, 43, 31, + 39, 47, 49, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 48, 57, 60, 69, 67, + 78, 93, 82, 67, 65, 70, 54, 72, 70, 78, 72, 80, 57, 67, 56, 52, + 64, 76, 76, 64, 55, 57, 62, 70, 78, 87, 92, 93, 91, 81, 77, 78, + 88, 96, 91, 74, 59, 51, 52, 58, 67, 70, 69, 68, 71, 73, 71, 67, + 64, 66, 71, 78, 83, 82, 74, 72, 75, 77, 74, 71, 71, 74, 73, 74, + 76, 78, 79, 77, 76, 65, 68, 70, 66, 59, 55, 56, 59, 60, 61, 62, + 62, 57, 54, 54, 55, 58, 54, 58, 65, 59, 48, 53, 68, 57, 65, 75, + 73, 59, 44, 44, 52, 44, 44, 44, 46, 50, 52, 51, 49, 40, 41, 41, + 40, 41, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 188, 57, 57, 58, 65, 71, 70, 82, 87, + 84, 82, 63, 74, 65, 68, 66, 71, 71, 69, 52, 52, 57, 61, 63, 62, + 63, 67, 71, 75, 73, 76, 91, 110, 116, 98, 76, 90, 98, 109, 110, 97, + 77, 65, 61, 58, 62, 72, 83, 83, 76, 68, 67, 53, 51, 51, 54, 63, + 71, 76, 79, 95, 86, 82, 85, 87, 84, 78, 75, 73, 73, 72, 69, 64, + 60, 58, 57, 60, 67, 72, 68, 57, 48, 47, 50, 52, 50, 52, 58, 60, + 57, 54, 55, 54, 53, 55, 58, 57, 54, 58, 65, 60, 58, 60, 65, 64, + 57, 51, 50, 48, 49, 51, 54, 56, 57, 57, 57, 67, 51, 39, 45, 59, + 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 183, 48, 53, 52, 48, 62, 68, 73, 86, 76, 84, 104, + 70, 81, 87, 74, 69, 63, 65, 52, 51, 48, 62, 68, 58, 52, 61, 78, + 89, 80, 105, 126, 124, 110, 101, 101, 103, 104, 110, 116, 110, 88, 68, 63, + 70, 69, 74, 86, 96, 95, 83, 71, 66, 60, 60, 65, 75, 88, 94, 93, + 89, 80, 75, 74, 79, 81, 78, 76, 76, 65, 63, 61, 61, 62, 66, 69, + 71, 70, 75, 78, 73, 64, 55, 52, 52, 56, 51, 49, 52, 52, 48, 48, + 52, 51, 57, 61, 63, 67, 68, 62, 53, 55, 53, 53, 59, 62, 58, 53, + 52, 54, 57, 59, 60, 60, 62, 67, 71, 60, 63, 67, 65, 55, 46, 119, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 180, 34, 45, 56, 59, 56, 59, 70, 82, 93, 74, 91, 127, 86, 95, + 112, 87, 77, 60, 62, 41, 53, 54, 54, 52, 57, 79, 98, 90, 67, 89, + 102, 112, 109, 103, 102, 101, 99, 109, 102, 95, 89, 78, 67, 66, 72, 75, + 81, 92, 103, 101, 88, 75, 69, 62, 64, 70, 85, 98, 101, 92, 82, 78, + 80, 85, 91, 93, 91, 93, 98, 115, 104, 90, 79, 74, 71, 68, 66, 55, + 56, 58, 57, 55, 53, 51, 50, 56, 50, 45, 45, 43, 41, 46, 56, 58, + 62, 60, 55, 63, 74, 69, 56, 45, 51, 56, 59, 52, 44, 46, 54, 60, + 65, 67, 68, 67, 72, 80, 89, 81, 66, 55, 56, 58, 52, 44, 112, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 37, + 54, 61, 53, 50, 52, 57, 56, 76, 94, 95, 107, 119, 110, 102, 136, 66, + 86, 43, 63, 51, 43, 49, 53, 57, 59, 60, 66, 77, 86, 89, 107, 119, + 114, 107, 108, 109, 108, 107, 102, 97, 89, 73, 61, 67, 82, 74, 91, 100, + 94, 90, 89, 78, 61, 77, 67, 70, 91, 100, 91, 82, 83, 79, 83, 96, + 115, 127, 124, 114, 109, 107, 104, 94, 84, 82, 82, 77, 70, 60, 57, 52, + 49, 51, 54, 59, 61, 53, 46, 43, 49, 51, 47, 46, 48, 51, 58, 61, + 58, 53, 53, 57, 63, 48, 41, 42, 53, 53, 41, 37, 44, 47, 60, 59, + 52, 53, 53, 52, 61, 63, 77, 73, 56, 55, 69, 63, 39, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 30, 38, 49, 47, + 40, 41, 50, 67, 72, 84, 92, 96, 108, 113, 106, 106, 135, 73, 82, 46, + 57, 50, 44, 45, 50, 53, 53, 54, 60, 69, 77, 79, 88, 95, 94, 91, + 97, 106, 112, 102, 96, 87, 79, 70, 67, 75, 86, 95, 95, 109, 126, 116, + 88, 74, 80, 59, 84, 101, 96, 86, 84, 83, 79, 92, 102, 115, 120, 109, + 94, 88, 90, 97, 102, 105, 107, 106, 100, 83, 68, 59, 58, 57, 54, 51, + 51, 53, 54, 49, 44, 44, 47, 46, 42, 45, 51, 63, 63, 61, 61, 60, + 61, 60, 60, 61, 54, 44, 42, 47, 51, 49, 43, 42, 51, 55, 60, 71, + 70, 58, 50, 63, 56, 57, 69, 73, 65, 55, 52, 43, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 182, 32, 36, 43, 47, 39, 34, 45, + 62, 67, 84, 88, 85, 95, 106, 103, 100, 102, 124, 78, 72, 49, 48, 50, + 45, 47, 49, 52, 52, 53, 57, 65, 71, 90, 87, 86, 84, 81, 84, 97, + 111, 94, 94, 89, 81, 78, 82, 85, 85, 90, 88, 100, 116, 103, 72, 62, + 73, 61, 81, 95, 92, 87, 88, 84, 74, 85, 89, 92, 90, 83, 82, 97, + 114, 100, 100, 99, 96, 94, 93, 85, 76, 65, 67, 68, 65, 59, 55, 55, + 56, 47, 48, 50, 53, 51, 50, 55, 64, 70, 64, 58, 59, 63, 64, 59, + 55, 70, 73, 65, 50, 49, 58, 58, 47, 52, 54, 53, 54, 62, 71, 73, + 71, 66, 54, 54, 68, 75, 65, 58, 59, 46, 114, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 39, 33, 37, 43, 44, 39, 40, 56, 76, 59, + 84, 85, 78, 94, 103, 93, 92, 88, 104, 76, 60, 50, 41, 50, 47, 46, + 49, 50, 51, 53, 57, 63, 68, 82, 73, 66, 62, 54, 48, 56, 70, 85, + 95, 99, 91, 85, 86, 81, 73, 86, 102, 105, 92, 84, 85, 81, 70, 74, + 74, 81, 88, 84, 73, 70, 76, 75, 67, 61, 61, 64, 69, 79, 88, 92, + 91, 86, 76, 69, 70, 72, 71, 71, 74, 75, 72, 65, 61, 61, 63, 55, + 58, 62, 68, 71, 73, 77, 81, 65, 57, 53, 56, 58, 59, 55, 55, 61, + 75, 80, 69, 60, 63, 67, 66, 65, 69, 71, 61, 46, 50, 63, 69, 67, + 76, 70, 53, 54, 70, 71, 59, 57, 48, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 40, 42, 37, 39, 40, 43, 43, 49, 64, 78, 59, 84, 86, + 81, 94, 97, 85, 84, 79, 90, 74, 53, 50, 39, 47, 46, 42, 43, 44, + 46, 48, 52, 57, 61, 78, 73, 71, 70, 62, 53, 58, 70, 83, 96, 102, + 90, 77, 72, 69, 63, 83, 102, 101, 81, 80, 96, 90, 65, 72, 82, 92, + 85, 63, 48, 60, 80, 67, 70, 78, 88, 90, 82, 72, 68, 69, 80, 88, + 85, 77, 69, 63, 58, 69, 70, 71, 69, 65, 63, 65, 68, 70, 71, 75, + 83, 91, 97, 94, 88, 63, 59, 57, 58, 57, 54, 57, 64, 60, 64, 70, + 73, 72, 70, 74, 79, 70, 77, 94, 92, 67, 54, 49, 34, 56, 78, 76, + 48, 44, 69, 78, 64, 63, 52, 113, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 209, 45, 46, 48, 49, 51, 54, 56, 63, 70, 77, 72, 84, 88, 87, 91, + 87, 77, 74, 76, 82, 71, 54, 51, 44, 42, 44, 44, 44, 44, 45, 48, + 51, 54, 56, 39, 46, 54, 58, 55, 54, 63, 76, 97, 103, 101, 86, 69, + 64, 67, 72, 80, 84, 85, 87, 88, 86, 73, 60, 65, 86, 90, 71, 61, + 73, 81, 77, 78, 87, 99, 104, 96, 83, 79, 82, 72, 83, 92, 94, 91, + 85, 77, 69, 70, 70, 70, 70, 71, 72, 72, 74, 80, 81, 83, 89, 100, + 106, 99, 88, 76, 73, 70, 69, 60, 55, 62, 76, 84, 71, 61, 65, 71, + 71, 67, 64, 76, 73, 92, 105, 96, 93, 80, 48, 49, 58, 63, 60, 58, + 63, 71, 74, 65, 53, 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 49, + 53, 52, 59, 64, 68, 69, 71, 75, 77, 80, 73, 79, 84, 76, 69, 66, + 62, 67, 71, 62, 54, 49, 51, 38, 43, 48, 47, 46, 46, 47, 48, 49, + 49, 39, 55, 68, 69, 68, 77, 94, 107, 106, 102, 95, 86, 74, 68, 73, + 83, 96, 88, 90, 101, 98, 80, 68, 69, 70, 83, 83, 76, 85, 104, 99, + 77, 94, 89, 84, 79, 71, 66, 70, 77, 93, 89, 83, 82, 88, 93, 88, + 78, 71, 70, 70, 74, 79, 80, 76, 72, 79, 81, 83, 86, 95, 105, 103, + 96, 95, 87, 80, 75, 62, 54, 60, 76, 85, 84, 77, 68, 67, 69, 65, + 55, 74, 60, 75, 92, 93, 110, 116, 90, 65, 55, 56, 67, 68, 60, 63, + 75, 74, 61, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 49, 52, 58, 47, + 58, 69, 73, 71, 72, 75, 76, 77, 58, 65, 75, 60, 52, 57, 53, 56, + 61, 52, 52, 47, 56, 36, 44, 47, 44, 42, 41, 41, 40, 39, 38, 43, + 62, 74, 68, 64, 77, 98, 112, 100, 91, 86, 86, 81, 72, 73, 82, 100, + 95, 93, 94, 84, 70, 64, 68, 82, 90, 101, 106, 103, 95, 89, 87, 81, + 69, 64, 76, 94, 106, 110, 110, 98, 86, 72, 74, 87, 95, 82, 65, 67, + 65, 66, 73, 80, 80, 72, 65, 72, 77, 80, 82, 91, 103, 108, 107, 108, + 95, 83, 74, 61, 50, 55, 68, 55, 83, 96, 80, 68, 74, 78, 70, 58, + 48, 68, 82, 75, 93, 113, 96, 89, 72, 60, 63, 65, 62, 62, 68, 85, + 72, 56, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 59, 65, 61, 54, 62, 62, 67, + 75, 78, 76, 71, 70, 67, 67, 65, 58, 50, 50, 60, 70, 68, 62, 58, + 58, 57, 51, 40, 34, 41, 39, 36, 45, 58, 50, 39, 43, 71, 73, 75, + 79, 86, 93, 96, 96, 84, 94, 96, 83, 72, 72, 78, 83, 86, 89, 96, + 97, 81, 64, 67, 82, 84, 85, 87, 88, 87, 88, 94, 102, 84, 77, 72, + 77, 84, 85, 80, 75, 85, 84, 85, 86, 81, 72, 68, 69, 65, 79, 73, + 66, 73, 65, 57, 70, 71, 70, 77, 89, 95, 96, 106, 119, 110, 110, 97, + 74, 58, 56, 58, 59, 70, 73, 92, 105, 96, 84, 74, 60, 63, 53, 48, + 55, 66, 77, 91, 103, 88, 82, 78, 79, 82, 77, 64, 52, 67, 67, 65, + 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 180, 38, 49, 58, 61, 61, 66, 65, 70, 80, 84, + 81, 75, 74, 56, 63, 71, 70, 61, 53, 49, 49, 70, 69, 64, 52, 39, + 36, 43, 54, 52, 50, 40, 35, 39, 42, 60, 91, 90, 83, 80, 88, 102, + 107, 97, 84, 101, 99, 90, 75, 69, 76, 84, 88, 91, 93, 92, 85, 81, + 84, 90, 94, 96, 86, 80, 87, 100, 107, 104, 98, 71, 83, 99, 108, 105, + 96, 89, 86, 78, 77, 80, 82, 80, 73, 72, 74, 72, 70, 52, 50, 70, + 71, 59, 62, 72, 71, 73, 79, 87, 96, 109, 120, 114, 113, 101, 79, 61, + 54, 52, 51, 51, 51, 66, 82, 86, 87, 87, 82, 69, 57, 48, 47, 52, + 58, 70, 81, 90, 84, 78, 76, 79, 79, 74, 69, 66, 66, 68, 63, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 26, 31, 40, 53, 66, 74, 65, 65, 70, 79, 81, 76, 71, + 69, 65, 61, 54, 47, 45, 52, 66, 75, 46, 58, 69, 67, 55, 45, 42, + 44, 35, 45, 49, 54, 59, 57, 69, 96, 98, 91, 88, 95, 102, 100, 85, + 71, 109, 99, 82, 71, 72, 81, 87, 88, 93, 94, 86, 76, 82, 96, 98, + 87, 87, 93, 101, 105, 105, 103, 100, 98, 87, 94, 99, 96, 87, 80, 78, + 78, 73, 71, 73, 76, 74, 69, 70, 74, 62, 67, 63, 61, 70, 70, 69, + 77, 71, 73, 74, 77, 87, 101, 110, 113, 94, 93, 85, 69, 55, 49, 47, + 45, 49, 44, 47, 58, 68, 74, 80, 83, 77, 66, 54, 46, 42, 43, 51, + 59, 83, 78, 73, 71, 74, 78, 81, 83, 66, 66, 69, 66, 122, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 27, 30, 37, 52, 71, 85, 71, 70, 73, 79, 79, 71, 64, 61, 60, + 60, 61, 63, 67, 72, 75, 78, 64, 60, 54, 48, 47, 50, 49, 46, 51, + 49, 43, 50, 64, 70, 81, 102, 93, 94, 94, 92, 83, 73, 68, 69, 103, + 93, 80, 74, 77, 83, 84, 83, 88, 87, 81, 78, 83, 89, 83, 71, 87, + 104, 121, 123, 112, 100, 91, 87, 109, 101, 89, 79, 76, 76, 72, 65, 73, + 70, 70, 70, 67, 62, 62, 67, 56, 66, 74, 75, 75, 73, 76, 83, 65, + 74, 79, 81, 92, 104, 104, 96, 75, 74, 66, 56, 46, 42, 42, 42, 52, + 48, 43, 47, 54, 55, 61, 74, 84, 78, 69, 59, 50, 45, 48, 53, 62, + 64, 66, 68, 71, 75, 79, 81, 70, 68, 68, 65, 53, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, 31, + 33, 36, 47, 65, 79, 86, 83, 83, 85, 83, 74, 66, 64, 59, 59, 61, + 65, 66, 63, 54, 47, 61, 58, 49, 43, 45, 51, 48, 41, 58, 59, 55, + 62, 75, 77, 83, 102, 99, 95, 91, 84, 73, 64, 67, 75, 97, 89, 80, + 74, 73, 75, 79, 82, 84, 77, 76, 83, 84, 79, 77, 79, 105, 109, 111, + 111, 112, 107, 91, 74, 94, 99, 101, 99, 99, 95, 83, 69, 71, 67, 65, + 64, 61, 57, 59, 64, 71, 61, 58, 63, 70, 75, 70, 60, 61, 68, 72, + 74, 82, 92, 89, 80, 80, 73, 62, 52, 43, 39, 39, 42, 40, 44, 41, + 46, 55, 50, 53, 74, 84, 87, 85, 77, 65, 56, 52, 52, 43, 51, 61, + 68, 71, 71, 72, 72, 79, 75, 70, 64, 53, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 35, 35, 33, + 39, 50, 61, 87, 83, 81, 84, 83, 75, 68, 67, 72, 68, 65, 68, 70, + 67, 55, 45, 28, 42, 54, 57, 58, 62, 60, 53, 55, 69, 79, 86, 88, + 79, 82, 102, 109, 93, 81, 79, 80, 77, 79, 85, 96, 87, 77, 71, 68, + 70, 79, 89, 81, 74, 76, 86, 86, 82, 90, 106, 99, 103, 100, 90, 85, + 88, 89, 84, 77, 96, 109, 104, 91, 83, 77, 70, 66, 61, 60, 61, 59, + 59, 64, 71, 80, 66, 63, 60, 53, 57, 61, 54, 61, 62, 60, 59, 63, + 72, 75, 74, 76, 68, 58, 51, 45, 41, 43, 48, 34, 43, 43, 52, 66, + 54, 47, 69, 73, 85, 92, 87, 75, 64, 56, 52, 42, 48, 58, 66, 70, + 70, 70, 70, 87, 81, 75, 68, 58, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 34, 37, 36, 34, 37, 44, + 53, 76, 72, 70, 75, 75, 72, 70, 71, 74, 77, 86, 99, 107, 97, 73, + 54, 50, 53, 50, 46, 56, 76, 87, 87, 79, 82, 77, 76, 80, 80, 93, + 120, 94, 82, 76, 80, 83, 81, 84, 92, 85, 77, 72, 73, 76, 80, 89, + 98, 75, 79, 85, 88, 88, 90, 99, 108, 88, 101, 102, 84, 69, 74, 89, + 98, 90, 104, 107, 90, 73, 68, 67, 65, 65, 60, 58, 59, 61, 63, 71, + 79, 75, 70, 79, 75, 53, 51, 63, 59, 61, 58, 57, 61, 62, 64, 70, + 77, 70, 61, 53, 52, 47, 42, 43, 48, 41, 48, 44, 57, 79, 61, 40, + 55, 54, 72, 87, 86, 78, 70, 65, 60, 54, 53, 53, 55, 60, 65, 72, + 75, 86, 81, 76, 72, 63, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 29, 34, 37, 37, 36, 41, 47, 55, 67, + 63, 64, 68, 74, 73, 75, 78, 81, 70, 59, 60, 69, 73, 67, 59, 73, + 70, 63, 66, 84, 98, 86, 64, 71, 73, 73, 89, 105, 101, 89, 95, 67, + 69, 76, 83, 76, 69, 78, 96, 68, 63, 67, 80, 91, 95, 99, 104, 70, + 85, 95, 92, 90, 95, 95, 89, 103, 106, 100, 89, 87, 97, 98, 93, 111, + 117, 111, 99, 90, 89, 79, 66, 66, 61, 59, 60, 61, 64, 71, 82, 75, + 62, 71, 81, 74, 74, 69, 46, 61, 60, 64, 73, 74, 69, 72, 82, 80, + 70, 61, 58, 51, 41, 36, 37, 43, 47, 40, 58, 89, 70, 40, 50, 36, + 59, 79, 83, 78, 75, 74, 71, 67, 58, 48, 43, 48, 60, 73, 81, 80, + 77, 75, 73, 65, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 23, 37, 36, 29, 36, 47, 56, 64, 65, 71, 79, + 82, 75, 71, 73, 78, 81, 71, 61, 57, 59, 63, 65, 66, 68, 76, 91, + 103, 106, 96, 77, 62, 50, 64, 73, 82, 100, 114, 96, 67, 66, 82, 91, + 91, 88, 88, 80, 70, 57, 74, 67, 88, 101, 121, 89, 70, 98, 100, 98, + 90, 82, 84, 98, 111, 105, 106, 104, 102, 100, 105, 114, 123, 118, 105, 92, + 90, 85, 77, 69, 67, 68, 65, 64, 66, 67, 67, 63, 61, 52, 60, 66, + 67, 69, 74, 71, 65, 60, 58, 60, 62, 61, 57, 59, 62, 58, 56, 51, + 49, 46, 43, 39, 37, 44, 34, 44, 71, 78, 60, 47, 49, 49, 47, 68, + 76, 76, 89, 84, 67, 65, 61, 60, 59, 54, 51, 60, 72, 78, 74, 73, + 75, 70, 60, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 39, 49, 43, 33, 41, 54, 62, 72, 61, 68, 75, 79, 77, + 78, 85, 92, 70, 72, 71, 62, 54, 57, 71, 86, 86, 88, 90, 89, 84, + 73, 59, 50, 73, 67, 75, 97, 106, 92, 76, 70, 73, 78, 84, 90, 96, + 95, 84, 71, 78, 87, 95, 118, 120, 106, 84, 90, 75, 78, 84, 89, 96, + 105, 115, 122, 111, 104, 98, 96, 98, 103, 108, 110, 102, 92, 85, 87, 89, + 86, 84, 84, 79, 75, 74, 76, 80, 81, 76, 72, 57, 61, 63, 62, 63, + 66, 62, 55, 54, 54, 54, 56, 55, 51, 52, 57, 61, 58, 52, 48, 44, + 42, 41, 41, 43, 37, 45, 64, 71, 60, 52, 53, 48, 72, 57, 62, 74, + 68, 78, 75, 83, 68, 57, 60, 66, 65, 60, 57, 67, 73, 81, 82, 72, + 57, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 41, 48, 37, 27, 37, 53, 62, 71, 73, 77, 81, 79, 75, 76, 81, + 87, 73, 65, 57, 53, 58, 68, 80, 86, 94, 101, 112, 117, 114, 104, 93, + 85, 82, 69, 71, 88, 88, 71, 63, 72, 78, 83, 93, 103, 101, 89, 77, + 71, 85, 99, 117, 118, 111, 78, 73, 87, 85, 87, 94, 106, 120, 128, 130, + 127, 111, 100, 90, 89, 96, 103, 104, 101, 100, 94, 90, 94, 98, 99, 98, + 99, 86, 81, 78, 78, 81, 81, 76, 73, 64, 62, 60, 58, 60, 62, 57, + 50, 61, 60, 60, 61, 59, 55, 56, 61, 64, 60, 54, 48, 43, 40, 40, + 41, 42, 41, 47, 57, 63, 61, 59, 58, 54, 67, 74, 47, 68, 77, 47, + 87, 81, 78, 75, 72, 65, 57, 55, 57, 59, 63, 71, 77, 75, 64, 56, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 45, + 51, 43, 35, 49, 65, 72, 78, 81, 85, 85, 79, 72, 72, 73, 75, 69, + 57, 46, 47, 59, 71, 75, 75, 74, 84, 97, 106, 107, 103, 100, 99, 81, + 74, 67, 64, 65, 68, 71, 74, 81, 94, 112, 116, 96, 72, 68, 78, 90, + 111, 123, 88, 83, 62, 70, 71, 91, 90, 91, 95, 101, 102, 99, 94, 105, + 96, 88, 88, 95, 101, 103, 101, 110, 106, 103, 102, 102, 100, 97, 95, 90, + 86, 81, 75, 70, 68, 68, 70, 69, 63, 57, 56, 61, 63, 59, 52, 53, + 51, 50, 50, 47, 42, 43, 48, 60, 59, 55, 49, 44, 40, 40, 41, 41, + 46, 51, 54, 59, 63, 63, 59, 45, 82, 55, 68, 84, 61, 74, 72, 75, + 80, 83, 78, 65, 55, 54, 59, 62, 50, 47, 59, 73, 74, 64, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 34, 39, 48, 44, + 40, 53, 64, 67, 69, 70, 77, 80, 75, 73, 75, 76, 73, 53, 57, 59, + 57, 54, 56, 64, 72, 69, 69, 65, 62, 61, 69, 80, 89, 92, 82, 71, + 67, 70, 74, 76, 78, 91, 98, 107, 106, 88, 72, 79, 97, 112, 115, 109, + 69, 72, 62, 74, 75, 82, 81, 80, 78, 78, 79, 82, 84, 102, 99, 96, + 94, 94, 97, 101, 103, 112, 110, 107, 103, 99, 96, 92, 88, 95, 94, 89, + 80, 69, 66, 73, 81, 75, 66, 59, 59, 62, 63, 59, 55, 53, 51, 49, + 47, 43, 39, 40, 44, 52, 53, 55, 53, 50, 48, 49, 51, 44, 50, 54, + 56, 60, 65, 63, 55, 65, 46, 79, 73, 74, 93, 69, 79, 83, 77, 72, + 72, 76, 74, 64, 53, 68, 53, 43, 50, 63, 68, 65, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 41, 54, 55, 51, 60, + 65, 62, 61, 67, 75, 77, 72, 72, 76, 75, 71, 62, 61, 60, 61, 62, + 62, 60, 60, 62, 62, 62, 64, 70, 81, 93, 102, 102, 81, 74, 86, 86, + 72, 68, 79, 103, 95, 87, 85, 87, 93, 105, 115, 116, 97, 77, 65, 73, + 62, 68, 84, 74, 77, 81, 83, 85, 92, 104, 114, 106, 109, 110, 106, 100, + 97, 100, 104, 110, 113, 113, 109, 107, 106, 103, 99, 98, 98, 97, 88, 78, + 76, 86, 95, 83, 73, 66, 66, 66, 63, 59, 59, 64, 60, 57, 55, 50, + 45, 45, 50, 45, 49, 54, 55, 56, 58, 62, 67, 55, 55, 56, 59, 64, + 66, 60, 50, 70, 68, 56, 83, 79, 72, 102, 78, 80, 81, 80, 76, 76, + 76, 71, 66, 70, 66, 63, 59, 54, 53, 62, 75, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 43, 56, 74, 78, 74, 79, 81, 75, + 75, 76, 83, 81, 72, 70, 76, 75, 69, 76, 65, 56, 60, 71, 74, 62, + 49, 49, 54, 62, 72, 83, 92, 96, 99, 92, 82, 79, 84, 83, 74, 76, + 87, 101, 96, 89, 87, 96, 109, 116, 114, 92, 83, 64, 73, 75, 74, 68, + 84, 78, 84, 88, 93, 95, 102, 109, 117, 112, 116, 119, 116, 109, 105, 105, + 107, 113, 119, 121, 119, 118, 119, 117, 113, 102, 102, 100, 96, 92, 90, 93, + 95, 90, 82, 76, 77, 76, 71, 69, 72, 58, 54, 50, 47, 41, 36, 36, + 41, 48, 51, 53, 52, 52, 56, 64, 73, 69, 61, 56, 61, 67, 65, 56, + 48, 78, 65, 75, 69, 75, 84, 74, 92, 77, 87, 90, 80, 68, 66, 71, + 75, 67, 71, 74, 70, 58, 52, 62, 77, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 184, 39, 47, 67, 73, 69, 73, 75, 71, 72, 77, + 83, 80, 70, 68, 79, 81, 76, 70, 69, 69, 68, 65, 61, 59, 59, 72, + 67, 62, 63, 67, 73, 77, 78, 75, 89, 87, 70, 67, 86, 101, 102, 90, + 102, 109, 106, 105, 110, 110, 103, 70, 90, 80, 85, 81, 99, 85, 85, 108, + 110, 112, 113, 111, 108, 107, 106, 113, 117, 121, 121, 118, 114, 112, 112, 115, + 122, 125, 121, 120, 121, 119, 113, 110, 107, 104, 104, 105, 102, 96, 90, 93, + 87, 83, 86, 85, 81, 81, 87, 63, 59, 54, 51, 45, 39, 40, 45, 55, + 54, 52, 47, 44, 48, 58, 68, 80, 64, 55, 61, 68, 63, 54, 48, 66, + 87, 71, 69, 87, 70, 64, 88, 89, 86, 78, 70, 71, 75, 71, 61, 65, + 66, 69, 72, 68, 63, 65, 71, 131, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 24, 28, 42, 56, 77, 81, 67, 66, 72, 68, 74, 79, 81, + 76, 71, 71, 71, 69, 69, 64, 66, 76, 79, 67, 50, 41, 56, 62, 67, + 73, 77, 76, 74, 72, 70, 68, 65, 67, 80, 95, 100, 97, 96, 94, 96, + 103, 106, 100, 94, 91, 85, 84, 89, 98, 101, 98, 100, 106, 117, 115, 112, + 111, 112, 115, 118, 122, 122, 123, 124, 125, 125, 123, 118, 114, 116, 119, 123, + 124, 123, 121, 121, 121, 113, 116, 117, 115, 111, 109, 111, 113, 104, 98, 95, + 94, 92, 89, 90, 94, 71, 63, 58, 62, 61, 52, 44, 43, 47, 59, 60, + 46, 42, 54, 62, 59, 63, 61, 59, 59, 59, 56, 51, 47, 54, 77, 91, + 81, 71, 75, 80, 79, 87, 81, 82, 88, 83, 69, 65, 70, 62, 68, 64, + 60, 61, 59, 66, 86, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 28, 33, 47, 56, 75, 83, 73, 70, 74, 72, 75, 81, 83, 77, 72, + 72, 73, 71, 84, 73, 65, 67, 76, 90, 110, 126, 78, 69, 58, 59, 66, + 69, 62, 55, 64, 71, 79, 88, 97, 102, 96, 87, 87, 84, 84, 89, 91, + 90, 92, 95, 110, 108, 112, 118, 118, 113, 113, 118, 120, 120, 120, 121, 123, + 125, 127, 129, 125, 125, 125, 125, 126, 124, 120, 117, 119, 121, 124, 124, 123, + 122, 122, 122, 118, 117, 117, 114, 112, 110, 109, 110, 111, 104, 98, 96, 94, + 92, 96, 102, 97, 84, 69, 61, 58, 53, 46, 42, 43, 53, 52, 40, 39, + 52, 58, 53, 59, 57, 55, 54, 53, 50, 46, 41, 42, 62, 82, 87, 86, + 87, 84, 77, 84, 72, 74, 88, 87, 69, 59, 64, 60, 60, 52, 50, 56, + 56, 60, 75, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, + 33, 50, 51, 70, 86, 80, 73, 75, 76, 76, 82, 84, 79, 74, 74, 75, + 74, 81, 75, 68, 62, 58, 62, 78, 94, 98, 85, 70, 63, 61, 62, 61, + 58, 58, 71, 85, 94, 97, 95, 85, 75, 82, 80, 80, 83, 85, 89, 99, + 110, 112, 111, 114, 117, 115, 112, 111, 115, 123, 125, 127, 130, 132, 133, 133, + 134, 129, 127, 125, 124, 125, 124, 122, 120, 121, 122, 123, 123, 121, 122, 123, + 125, 127, 124, 122, 120, 120, 118, 115, 113, 113, 105, 97, 93, 90, 89, 93, + 100, 112, 102, 84, 69, 63, 59, 51, 42, 45, 52, 50, 40, 41, 53, 57, + 53, 58, 57, 55, 54, 53, 50, 46, 43, 43, 54, 73, 90, 100, 102, 97, + 91, 85, 69, 67, 83, 90, 76, 63, 62, 71, 65, 51, 48, 57, 58, 57, + 68, 93, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 23, 27, 47, + 43, 62, 84, 82, 73, 74, 75, 76, 82, 84, 79, 74, 75, 76, 75, 64, + 70, 76, 75, 68, 61, 60, 63, 90, 93, 91, 80, 66, 61, 67, 75, 60, + 70, 79, 80, 78, 77, 73, 68, 76, 79, 84, 89, 91, 94, 107, 120, 116, + 118, 122, 124, 124, 124, 125, 128, 126, 128, 129, 131, 132, 133, 132, 133, 131, + 128, 125, 124, 124, 124, 123, 122, 122, 123, 122, 121, 120, 121, 124, 127, 130, + 126, 123, 122, 125, 124, 121, 117, 111, 106, 101, 99, 94, 88, 86, 89, 103, + 104, 97, 84, 74, 68, 59, 48, 45, 53, 52, 42, 39, 48, 53, 53, 54, + 53, 52, 52, 51, 50, 49, 48, 51, 52, 62, 80, 95, 101, 104, 106, 97, + 81, 67, 70, 84, 89, 80, 67, 80, 73, 58, 52, 58, 56, 55, 65, 81, + 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 22, 24, 39, 35, 55, + 78, 79, 71, 72, 73, 76, 82, 83, 80, 75, 77, 77, 76, 78, 79, 79, + 77, 75, 75, 75, 75, 76, 85, 93, 88, 76, 68, 70, 75, 74, 80, 82, + 78, 73, 73, 74, 74, 70, 77, 89, 98, 99, 99, 107, 118, 122, 126, 129, + 130, 131, 133, 135, 137, 133, 132, 131, 130, 130, 130, 131, 131, 131, 128, 124, + 123, 123, 124, 123, 123, 122, 122, 121, 119, 118, 120, 123, 127, 125, 121, 119, + 119, 122, 122, 120, 117, 113, 111, 112, 112, 106, 94, 83, 80, 92, 99, 101, + 92, 81, 72, 66, 62, 42, 51, 51, 41, 33, 38, 45, 49, 45, 45, 45, + 44, 45, 47, 51, 53, 51, 48, 52, 66, 80, 89, 97, 104, 114, 103, 77, + 58, 69, 93, 91, 70, 73, 72, 61, 53, 53, 48, 51, 66, 58, 85, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 22, 24, 25, 31, 32, 54, 75, 76, + 73, 74, 73, 79, 85, 87, 82, 79, 80, 82, 81, 87, 84, 76, 71, 72, + 77, 77, 74, 84, 85, 88, 92, 94, 90, 82, 74, 94, 101, 102, 99, 94, + 93, 91, 89, 79, 89, 101, 112, 111, 109, 112, 120, 123, 128, 129, 127, 126, + 129, 130, 129, 137, 136, 134, 132, 131, 130, 131, 131, 131, 129, 125, 124, 124, + 125, 124, 123, 122, 122, 121, 120, 118, 120, 123, 126, 123, 122, 121, 121, 122, + 123, 122, 121, 112, 112, 115, 117, 110, 94, 80, 75, 92, 95, 98, 96, 85, + 74, 71, 75, 46, 52, 52, 43, 36, 39, 46, 50, 46, 45, 44, 42, 44, + 49, 57, 63, 50, 48, 51, 61, 77, 89, 95, 94, 118, 118, 95, 63, 60, + 82, 88, 75, 67, 72, 66, 59, 55, 49, 54, 73, 55, 84, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 22, 23, 24, 27, 36, 60, 77, 77, 80, 83, + 77, 85, 91, 93, 89, 86, 86, 88, 88, 78, 82, 85, 86, 93, 101, 102, + 98, 103, 100, 97, 100, 107, 110, 107, 102, 113, 118, 119, 117, 113, 113, 108, + 104, 101, 107, 115, 123, 122, 119, 121, 128, 133, 139, 140, 134, 133, 136, 137, + 135, 134, 135, 135, 135, 134, 133, 132, 131, 132, 130, 128, 127, 127, 127, 125, + 124, 122, 123, 123, 122, 121, 121, 124, 126, 125, 126, 126, 125, 123, 122, 123, + 124, 116, 114, 114, 114, 107, 93, 83, 80, 92, 87, 92, 104, 101, 84, 75, + 79, 53, 52, 48, 43, 45, 50, 52, 52, 51, 50, 46, 43, 44, 51, 63, + 71, 55, 52, 49, 55, 76, 98, 101, 91, 103, 116, 113, 89, 67, 68, 81, + 91, 74, 79, 75, 67, 63, 55, 57, 75, 70, 78, 255, 255, 255, 255, 255, + 255, 255, 255, 177, 21, 20, 20, 27, 41, 65, 79, 79, 85, 89, 81, 89, + 95, 97, 94, 90, 92, 94, 93, 97, 101, 101, 97, 97, 103, 106, 102, 109, + 111, 111, 109, 107, 113, 125, 135, 125, 127, 125, 121, 119, 120, 117, 113, 117, + 117, 120, 124, 124, 122, 125, 133, 129, 136, 136, 131, 129, 134, 135, 133, 128, + 131, 133, 136, 135, 134, 130, 129, 133, 131, 129, 129, 128, 129, 126, 125, 122, + 124, 124, 124, 122, 123, 124, 127, 122, 124, 125, 123, 118, 116, 118, 121, 125, + 120, 117, 115, 108, 98, 93, 94, 86, 77, 88, 115, 119, 96, 77, 76, 53, + 46, 38, 38, 47, 55, 53, 48, 52, 49, 44, 40, 40, 47, 60, 70, 59, + 51, 38, 41, 69, 101, 105, 90, 86, 106, 125, 115, 81, 60, 78, 109, 82, + 85, 78, 70, 65, 55, 53, 67, 81, 67, 133, 255, 255, 255, 255, 255, 255, + 255, 16, 19, 20, 20, 34, 51, 71, 84, 86, 84, 84, 86, 83, 85, 90, + 94, 97, 98, 97, 96, 98, 100, 103, 104, 106, 109, 113, 117, 118, 116, 116, + 120, 126, 133, 134, 134, 137, 136, 135, 130, 122, 118, 118, 120, 121, 119, 121, + 126, 127, 124, 124, 128, 132, 133, 134, 135, 134, 132, 129, 127, 132, 131, 130, + 130, 130, 131, 133, 134, 131, 133, 134, 131, 127, 126, 128, 131, 129, 128, 128, + 127, 126, 125, 124, 123, 127, 126, 126, 125, 124, 122, 122, 121, 127, 127, 125, + 118, 110, 103, 98, 97, 78, 88, 84, 90, 115, 113, 88, 79, 72, 57, 47, + 49, 48, 42, 41, 47, 47, 49, 56, 51, 37, 43, 59, 64, 57, 69, 59, + 38, 46, 85, 106, 99, 87, 93, 120, 107, 87, 72, 64, 109, 94, 73, 84, + 60, 85, 54, 68, 58, 79, 85, 78, 255, 255, 255, 255, 255, 255, 255, 19, + 21, 21, 21, 36, 62, 84, 85, 81, 87, 89, 86, 84, 86, 90, 93, 96, + 97, 96, 97, 99, 102, 106, 110, 112, 115, 119, 122, 127, 125, 124, 126, 131, + 135, 136, 136, 134, 134, 133, 130, 125, 123, 123, 124, 131, 128, 129, 133, 133, + 130, 129, 131, 133, 134, 135, 135, 134, 132, 131, 130, 130, 129, 129, 128, 129, + 130, 131, 132, 128, 129, 129, 127, 125, 124, 125, 127, 126, 125, 125, 124, 123, + 122, 122, 121, 122, 121, 122, 122, 122, 121, 122, 122, 121, 121, 119, 115, 107, + 100, 97, 95, 92, 95, 93, 103, 123, 124, 102, 83, 77, 63, 54, 58, 59, + 51, 45, 47, 46, 45, 52, 49, 38, 43, 58, 61, 63, 73, 71, 52, 45, + 65, 91, 104, 97, 91, 102, 111, 104, 77, 67, 99, 104, 83, 83, 66, 84, + 65, 72, 65, 69, 79, 79, 255, 255, 255, 255, 255, 255, 255, 23, 22, 21, + 19, 44, 76, 93, 84, 78, 89, 96, 89, 94, 95, 96, 98, 100, 102, 102, + 103, 103, 107, 113, 117, 120, 122, 125, 128, 135, 134, 132, 133, 135, 137, 137, + 136, 137, 136, 133, 133, 134, 135, 135, 134, 138, 135, 135, 138, 137, 133, 132, + 134, 135, 134, 133, 132, 131, 131, 131, 131, 132, 131, 131, 131, 131, 132, 133, + 134, 132, 131, 129, 128, 128, 129, 128, 127, 128, 127, 127, 126, 125, 125, 124, + 124, 123, 123, 124, 125, 125, 126, 127, 127, 116, 117, 118, 115, 108, 101, 97, + 95, 93, 83, 85, 100, 113, 120, 103, 74, 74, 62, 55, 62, 67, 61, 51, + 48, 47, 42, 47, 47, 39, 43, 54, 55, 65, 77, 82, 68, 48, 49, 79, + 109, 105, 91, 82, 111, 118, 82, 72, 86, 109, 94, 82, 76, 79, 75, 74, + 72, 67, 81, 85, 255, 255, 255, 255, 255, 255, 255, 22, 20, 18, 19, 62, + 81, 90, 83, 78, 88, 96, 95, 99, 98, 98, 100, 102, 104, 108, 109, 109, + 113, 119, 123, 125, 126, 128, 129, 136, 135, 134, 135, 135, 136, 135, 135, 139, + 136, 133, 134, 138, 141, 140, 138, 137, 134, 133, 136, 135, 132, 131, 134, 134, + 134, 130, 129, 127, 129, 129, 131, 129, 130, 129, 131, 130, 132, 131, 133, 134, + 132, 128, 128, 130, 131, 129, 126, 127, 127, 126, 126, 125, 125, 124, 124, 122, + 122, 124, 124, 124, 125, 126, 126, 117, 119, 120, 118, 111, 103, 99, 96, 102, + 83, 86, 101, 110, 123, 116, 84, 69, 56, 49, 56, 65, 64, 55, 49, 50, + 41, 45, 48, 41, 42, 48, 47, 54, 69, 79, 68, 49, 48, 72, 96, 99, + 95, 74, 103, 113, 81, 78, 77, 102, 99, 84, 87, 73, 81, 73, 78, 75, + 85, 88, 255, 255, 255, 255, 255, 255, 255, 21, 18, 19, 24, 82, 79, 79, + 81, 84, 85, 93, 101, 94, 94, 94, 96, 100, 104, 108, 111, 114, 118, 123, + 126, 126, 126, 127, 128, 130, 131, 132, 132, 132, 132, 132, 132, 134, 131, 128, + 130, 134, 136, 134, 132, 132, 129, 129, 132, 131, 129, 129, 133, 132, 131, 127, + 125, 124, 126, 126, 129, 121, 122, 122, 124, 123, 124, 123, 125, 130, 128, 124, + 124, 126, 127, 125, 122, 121, 121, 121, 120, 120, 120, 120, 119, 117, 117, 118, + 118, 117, 117, 118, 118, 121, 122, 123, 119, 112, 104, 98, 95, 103, 83, 83, + 94, 101, 119, 121, 97, 76, 62, 49, 51, 58, 60, 54, 48, 53, 43, 46, + 50, 43, 40, 43, 40, 42, 57, 64, 54, 47, 53, 64, 70, 86, 99, 80, + 90, 95, 77, 83, 76, 90, 99, 89, 97, 74, 84, 74, 82, 84, 88, 85, + 255, 255, 255, 255, 255, 255, 255, 21, 19, 28, 40, 91, 78, 75, 85, 91, + 89, 94, 104, 97, 97, 99, 102, 106, 110, 114, 116, 118, 121, 124, 126, 125, + 125, 126, 127, 126, 128, 130, 130, 129, 129, 129, 130, 133, 132, 130, 131, 132, + 133, 132, 132, 131, 128, 127, 130, 130, 128, 129, 133, 130, 128, 126, 124, 123, + 123, 125, 126, 121, 122, 123, 124, 124, 124, 124, 124, 130, 129, 127, 126, 126, + 127, 126, 125, 122, 121, 121, 121, 121, 121, 121, 121, 118, 118, 119, 118, 118, + 117, 118, 118, 122, 123, 123, 119, 111, 103, 99, 96, 96, 85, 81, 85, 92, + 108, 115, 106, 96, 80, 62, 54, 54, 55, 51, 47, 54, 44, 48, 54, 46, + 39, 41, 39, 46, 56, 58, 51, 52, 60, 63, 59, 80, 96, 87, 81, 83, + 80, 83, 81, 81, 95, 92, 100, 80, 89, 79, 84, 92, 94, 91, 137, 255, + 255, 255, 255, 255, 180, 25, 25, 43, 63, 86, 83, 85, 91, 96, 98, 101, + 105, 106, 106, 109, 112, 115, 118, 121, 122, 119, 120, 122, 123, 124, 125, 127, + 129, 127, 130, 132, 132, 129, 127, 128, 129, 134, 135, 135, 134, 133, 133, 134, + 136, 133, 129, 127, 129, 128, 126, 127, 130, 130, 128, 127, 125, 124, 124, 125, + 125, 126, 127, 128, 129, 130, 129, 129, 129, 130, 132, 131, 129, 127, 127, 128, + 129, 125, 125, 125, 125, 125, 126, 126, 126, 121, 122, 123, 123, 123, 124, 125, + 125, 124, 125, 124, 120, 113, 107, 104, 102, 99, 103, 96, 92, 100, 110, 115, + 122, 112, 98, 76, 61, 55, 54, 51, 48, 52, 43, 51, 60, 50, 41, 43, + 43, 53, 52, 54, 55, 55, 54, 62, 70, 87, 87, 87, 80, 87, 90, 79, + 87, 76, 85, 85, 90, 84, 92, 84, 81, 92, 99, 102, 91, 255, 255, 255, + 255, 255, 33, 30, 32, 55, 81, 76, 88, 97, 97, 99, 106, 108, 103, 109, + 110, 112, 115, 117, 118, 119, 120, 117, 119, 121, 123, 123, 126, 129, 132, 131, + 134, 136, 135, 132, 129, 129, 130, 130, 133, 134, 133, 131, 131, 133, 137, 134, + 129, 126, 127, 126, 122, 123, 126, 130, 129, 128, 127, 126, 125, 125, 126, 125, + 126, 128, 129, 130, 129, 128, 128, 125, 128, 129, 127, 123, 122, 124, 127, 124, + 124, 124, 124, 124, 124, 124, 124, 119, 119, 121, 122, 124, 125, 127, 127, 127, + 127, 126, 122, 116, 112, 110, 110, 88, 103, 95, 86, 94, 98, 101, 117, 117, + 104, 84, 66, 58, 56, 53, 51, 49, 42, 52, 62, 52, 42, 45, 48, 50, + 41, 44, 55, 51, 41, 55, 81, 97, 78, 84, 82, 96, 99, 75, 92, 74, + 77, 77, 79, 85, 92, 86, 75, 83, 96, 106, 96, 255, 255, 255, 255, 255, + 38, 17, 26, 82, 84, 81, 83, 89, 94, 97, 100, 102, 102, 107, 109, 113, + 116, 116, 117, 119, 121, 118, 119, 120, 121, 121, 124, 129, 132, 134, 134, 134, + 134, 134, 134, 134, 134, 130, 130, 131, 131, 131, 132, 132, 132, 129, 128, 128, + 127, 126, 127, 128, 128, 127, 128, 128, 126, 123, 122, 122, 123, 131, 130, 130, + 130, 131, 130, 127, 125, 131, 130, 128, 128, 130, 131, 132, 132, 126, 126, 125, + 125, 124, 124, 125, 126, 118, 118, 120, 121, 123, 124, 126, 127, 125, 124, 126, + 126, 118, 109, 110, 117, 95, 95, 94, 96, 97, 103, 110, 115, 101, 113, 88, + 57, 60, 65, 56, 54, 46, 43, 53, 57, 49, 47, 50, 46, 49, 57, 48, + 43, 52, 46, 44, 63, 87, 101, 73, 87, 96, 78, 92, 84, 74, 63, 81, + 81, 94, 78, 83, 68, 83, 94, 104, 95, 255, 255, 255, 255, 255, 29, 17, + 37, 90, 88, 87, 89, 94, 99, 103, 106, 107, 108, 105, 107, 111, 113, 114, + 115, 117, 119, 115, 118, 121, 124, 125, 126, 129, 131, 132, 132, 132, 132, 132, + 132, 132, 132, 133, 133, 133, 134, 134, 134, 135, 135, 131, 130, 130, 130, 129, + 130, 131, 131, 130, 131, 132, 131, 129, 128, 129, 131, 133, 131, 130, 129, 129, + 127, 124, 123, 130, 129, 127, 127, 130, 132, 132, 132, 130, 130, 129, 127, 124, + 123, 123, 124, 117, 117, 119, 121, 122, 123, 125, 126, 125, 124, 125, 125, 118, + 109, 110, 116, 103, 101, 98, 96, 95, 98, 104, 109, 118, 104, 85, 78, 75, + 64, 65, 82, 49, 41, 48, 55, 47, 43, 47, 46, 46, 53, 46, 43, 50, + 43, 40, 56, 79, 97, 78, 79, 95, 89, 91, 91, 77, 65, 80, 81, 91, + 79, 84, 70, 82, 94, 105, 97, 255, 255, 255, 255, 176, 22, 20, 53, 97, + 89, 90, 92, 97, 103, 107, 110, 111, 111, 110, 112, 115, 116, 116, 117, 120, + 122, 118, 122, 127, 130, 131, 131, 132, 133, 134, 134, 134, 134, 134, 134, 134, + 134, 132, 132, 132, 133, 133, 133, 133, 133, 131, 131, 130, 130, 130, 131, 131, + 133, 133, 134, 135, 135, 134, 134, 136, 138, 141, 138, 135, 132, 131, 130, 128, + 127, 129, 128, 126, 126, 129, 131, 132, 132, 133, 133, 132, 129, 124, 121, 120, + 121, 122, 122, 124, 125, 126, 127, 129, 129, 123, 123, 124, 123, 118, 111, 111, + 115, 105, 102, 97, 94, 91, 94, 100, 105, 113, 89, 82, 88, 80, 72, 86, + 106, 58, 43, 46, 54, 47, 41, 46, 49, 49, 53, 50, 49, 53, 46, 41, + 52, 70, 93, 90, 71, 89, 99, 83, 97, 82, 69, 78, 81, 88, 81, 84, + 73, 81, 92, 104, 99, 255, 255, 255, 255, 21, 18, 27, 67, 99, 86, 89, + 91, 97, 102, 106, 109, 110, 110, 112, 114, 116, 116, 117, 118, 121, 123, 122, + 125, 128, 129, 129, 129, 130, 131, 132, 132, 132, 132, 132, 132, 132, 132, 126, + 126, 126, 127, 127, 128, 127, 127, 128, 128, 127, 127, 129, 130, 130, 132, 134, + 135, 135, 135, 132, 134, 135, 139, 142, 140, 135, 133, 131, 132, 129, 130, 126, + 125, 124, 124, 127, 130, 131, 131, 131, 133, 133, 129, 124, 119, 119, 120, 122, + 122, 124, 125, 126, 127, 128, 129, 122, 123, 123, 122, 117, 113, 113, 115, 106, + 103, 98, 96, 94, 98, 105, 110, 99, 87, 89, 87, 71, 78, 95, 96, 69, + 48, 46, 56, 50, 43, 49, 54, 49, 50, 52, 54, 54, 46, 41, 44, 60, + 89, 106, 68, 80, 99, 72, 99, 88, 74, 77, 82, 85, 84, 85, 76, 80, + 89, 101, 100, 255, 255, 255, 255, 22, 14, 32, 77, 96, 84, 88, 90, 95, + 100, 105, 107, 108, 108, 109, 110, 112, 112, 112, 113, 116, 119, 121, 121, 121, + 120, 118, 118, 120, 123, 124, 124, 124, 124, 124, 124, 124, 124, 123, 123, 123, + 124, 123, 123, 124, 124, 123, 124, 124, 125, 126, 128, 130, 131, 134, 135, 133, + 132, 129, 131, 132, 136, 136, 134, 130, 129, 128, 129, 127, 127, 125, 124, 123, + 123, 126, 128, 129, 129, 126, 129, 131, 128, 122, 118, 118, 120, 116, 116, 118, + 118, 119, 120, 121, 121, 122, 123, 124, 121, 118, 117, 116, 115, 108, 106, 101, + 99, 98, 102, 108, 113, 105, 94, 99, 97, 76, 74, 83, 78, 75, 52, 47, + 54, 51, 48, 53, 55, 46, 43, 48, 53, 48, 41, 38, 35, 46, 79, 114, + 73, 73, 96, 71, 102, 94, 80, 76, 86, 84, 89, 87, 79, 82, 86, 97, + 101, 255, 255, 255, 255, 20, 13, 40, 85, 92, 87, 91, 91, 96, 102, 106, + 109, 110, 110, 112, 113, 114, 113, 113, 115, 118, 121, 123, 122, 121, 118, 116, + 117, 120, 122, 123, 123, 123, 123, 123, 123, 123, 124, 126, 126, 126, 126, 126, + 126, 127, 127, 124, 125, 125, 127, 128, 131, 133, 134, 136, 137, 135, 133, 131, + 131, 134, 137, 138, 136, 133, 132, 132, 131, 130, 128, 128, 127, 124, 124, 126, + 128, 129, 128, 122, 127, 131, 128, 122, 117, 118, 120, 116, 116, 118, 118, 119, + 119, 121, 121, 122, 125, 124, 121, 120, 120, 120, 116, 106, 104, 100, 97, 93, + 94, 98, 101, 109, 93, 97, 109, 97, 77, 76, 85, 74, 55, 48, 51, 49, + 53, 58, 53, 50, 42, 50, 58, 50, 45, 43, 35, 38, 65, 110, 82, 73, + 95, 81, 101, 100, 86, 77, 91, 84, 94, 88, 82, 86, 85, 93, 103, 148, + 255, 255, 255, 23, 19, 50, 92, 89, 92, 92, 94, 98, 104, 108, 110, 111, + 111, 118, 119, 119, 118, 118, 119, 123, 126, 124, 124, 125, 124, 123, 123, 125, + 127, 127, 127, 127, 127, 127, 127, 127, 128, 130, 130, 131, 131, 130, 131, 130, + 130, 130, 131, 132, 133, 136, 138, 140, 142, 142, 143, 142, 139, 138, 140, 143, + 147, 146, 144, 142, 141, 140, 138, 135, 132, 132, 131, 128, 127, 129, 130, 130, + 129, 123, 128, 133, 130, 122, 117, 118, 120, 121, 121, 122, 123, 123, 123, 124, + 125, 123, 126, 125, 121, 121, 124, 123, 117, 108, 106, 103, 99, 94, 93, 94, + 96, 103, 100, 98, 104, 105, 88, 77, 86, 74, 60, 53, 49, 50, 61, 65, + 52, 56, 45, 55, 64, 54, 51, 52, 40, 42, 56, 101, 93, 79, 97, 93, + 93, 104, 90, 78, 95, 86, 99, 90, 84, 93, 86, 92, 107, 104, 255, 255, + 255, 29, 26, 59, 96, 89, 96, 94, 94, 99, 105, 108, 110, 111, 111, 118, + 118, 117, 117, 115, 118, 121, 124, 119, 121, 125, 127, 127, 126, 127, 128, 126, + 126, 126, 126, 126, 126, 126, 126, 131, 131, 132, 132, 133, 133, 132, 132, 136, + 137, 138, 140, 142, 145, 147, 150, 146, 147, 146, 145, 144, 148, 152, 156, 148, + 146, 144, 143, 141, 137, 133, 128, 137, 133, 130, 129, 130, 132, 131, 131, 125, + 131, 135, 132, 123, 117, 117, 120, 121, 121, 121, 122, 122, 122, 123, 123, 123, + 127, 126, 122, 122, 127, 124, 119, 116, 116, 115, 111, 107, 104, 105, 107, 100, + 121, 110, 90, 94, 92, 74, 65, 75, 66, 58, 51, 52, 69, 72, 52, 56, + 42, 54, 64, 53, 51, 53, 39, 51, 54, 95, 101, 84, 98, 100, 82, 106, + 93, 79, 98, 87, 102, 90, 85, 98, 87, 92, 109, 112, 255, 255, 27, 20, + 30, 72, 95, 92, 95, 98, 99, 102, 104, 105, 106, 108, 110, 113, 114, 115, + 116, 118, 119, 120, 120, 126, 126, 127, 127, 128, 128, 127, 127, 125, 125, 125, + 126, 127, 128, 129, 131, 132, 131, 131, 130, 130, 131, 132, 132, 137, 135, 134, + 137, 143, 148, 150, 150, 151, 147, 144, 147, 151, 153, 149, 144, 137, 138, 138, + 136, 135, 135, 138, 140, 130, 130, 130, 131, 132, 133, 131, 130, 129, 128, 127, + 125, 124, 123, 122, 122, 119, 119, 120, 121, 122, 122, 124, 124, 121, 121, 122, + 124, 123, 122, 120, 120, 113, 114, 123, 106, 121, 113, 114, 94, 107, 116, 125, + 123, 109, 90, 75, 67, 71, 69, 60, 50, 53, 65, 63, 52, 57, 44, 50, + 41, 57, 39, 42, 35, 42, 61, 89, 113, 95, 85, 108, 103, 99, 89, 86, + 98, 100, 92, 82, 82, 102, 95, 83, 91, 109, 255, 255, 22, 20, 37, 77, + 96, 95, 99, 99, 101, 105, 107, 108, 109, 111, 113, 118, 119, 120, 121, 122, + 123, 124, 125, 125, 126, 126, 126, 127, 127, 126, 127, 126, 126, 126, 126, 125, + 126, 128, 128, 130, 130, 131, 131, 131, 132, 133, 134, 136, 135, 136, 141, 145, + 148, 147, 145, 143, 144, 144, 144, 145, 145, 147, 147, 144, 143, 140, 139, 138, + 138, 138, 138, 130, 128, 126, 128, 131, 132, 130, 127, 128, 127, 127, 125, 124, + 124, 124, 124, 121, 121, 121, 122, 122, 122, 123, 124, 119, 121, 122, 125, 125, + 126, 127, 129, 123, 117, 125, 117, 129, 113, 115, 108, 103, 112, 124, 130, 125, + 110, 91, 78, 75, 72, 65, 59, 63, 69, 64, 54, 66, 54, 58, 49, 60, + 44, 46, 39, 44, 59, 80, 104, 93, 85, 103, 95, 103, 92, 94, 97, 103, + 89, 87, 85, 102, 104, 89, 88, 108, 255, 255, 18, 19, 46, 83, 96, 94, + 101, 99, 101, 106, 108, 110, 112, 115, 117, 121, 121, 122, 123, 124, 125, 126, + 126, 126, 126, 126, 126, 127, 127, 126, 127, 131, 131, 130, 130, 129, 130, 130, + 131, 132, 132, 132, 133, 134, 136, 138, 139, 136, 138, 139, 142, 145, 146, 144, + 141, 141, 145, 149, 148, 145, 145, 150, 154, 144, 141, 138, 138, 140, 141, 140, + 137, 136, 132, 129, 131, 136, 137, 134, 130, 127, 126, 126, 125, 124, 124, 124, + 125, 123, 122, 122, 122, 122, 121, 122, 122, 129, 129, 128, 127, 124, 124, 124, + 125, 129, 119, 126, 127, 132, 113, 117, 122, 110, 113, 118, 124, 123, 111, 93, + 79, 78, 72, 66, 66, 70, 72, 66, 59, 69, 60, 61, 57, 64, 50, 49, + 45, 50, 62, 75, 98, 96, 89, 102, 94, 106, 91, 99, 89, 105, 83, 90, + 84, 97, 112, 93, 80, 103, 255, 255, 13, 20, 55, 86, 92, 91, 97, 97, + 99, 104, 107, 109, 112, 115, 117, 118, 118, 119, 120, 121, 122, 122, 123, 125, + 125, 125, 126, 126, 127, 126, 126, 130, 130, 129, 128, 127, 127, 128, 128, 127, + 128, 128, 129, 131, 133, 135, 137, 137, 138, 138, 140, 141, 141, 140, 140, 139, + 144, 148, 149, 147, 146, 148, 151, 137, 133, 130, 133, 139, 142, 140, 137, 139, + 134, 129, 131, 137, 139, 135, 131, 124, 123, 124, 123, 123, 123, 124, 124, 123, + 123, 122, 122, 120, 120, 120, 120, 133, 132, 129, 126, 124, 123, 123, 125, 124, + 123, 128, 129, 127, 118, 122, 130, 119, 116, 114, 113, 111, 105, 96, 88, 80, + 72, 66, 67, 72, 73, 68, 64, 61, 57, 59, 62, 64, 55, 49, 46, 51, + 63, 70, 91, 95, 89, 100, 96, 106, 87, 97, 78, 104, 78, 89, 78, 85, + 110, 91, 70, 91, 255, 177, 11, 26, 64, 86, 87, 87, 91, 93, 96, 101, + 104, 107, 109, 113, 115, 116, 116, 116, 117, 118, 119, 119, 119, 121, 121, 121, + 122, 122, 123, 122, 122, 122, 121, 121, 120, 119, 119, 119, 120, 120, 120, 121, + 123, 124, 127, 129, 130, 135, 134, 133, 132, 132, 134, 137, 141, 135, 137, 140, + 143, 143, 142, 140, 138, 135, 131, 129, 132, 138, 141, 139, 135, 134, 129, 125, + 126, 130, 132, 130, 126, 122, 122, 122, 121, 121, 121, 122, 122, 122, 122, 122, + 121, 119, 119, 118, 118, 122, 122, 123, 123, 125, 127, 129, 133, 115, 128, 130, + 125, 118, 124, 127, 128, 112, 113, 114, 113, 111, 108, 105, 103, 90, 81, 72, + 69, 73, 76, 73, 68, 57, 58, 59, 68, 63, 56, 45, 43, 45, 61, 63, + 80, 87, 80, 93, 96, 105, 86, 95, 74, 101, 78, 88, 75, 75, 102, 89, + 66, 81, 255, 21, 13, 37, 74, 86, 86, 89, 90, 93, 95, 100, 103, 106, + 108, 111, 114, 117, 118, 118, 118, 119, 119, 120, 120, 117, 117, 118, 118, 118, + 119, 118, 118, 121, 120, 120, 119, 119, 119, 120, 120, 122, 123, 124, 125, 126, + 128, 130, 133, 130, 130, 129, 128, 129, 133, 139, 145, 141, 140, 140, 140, 140, + 139, 138, 136, 140, 138, 136, 137, 140, 140, 136, 133, 133, 130, 127, 126, 128, + 129, 129, 128, 123, 122, 122, 121, 121, 121, 121, 121, 122, 121, 122, 121, 120, + 119, 119, 119, 122, 123, 123, 123, 124, 125, 126, 129, 113, 131, 128, 124, 112, + 126, 124, 121, 105, 110, 116, 118, 114, 106, 97, 92, 98, 94, 83, 74, 78, + 86, 84, 74, 66, 68, 64, 74, 61, 57, 42, 42, 49, 66, 61, 73, 85, + 78, 87, 95, 101, 91, 98, 82, 97, 80, 89, 81, 74, 92, 90, 73, 73, + 255, 18, 19, 50, 84, 88, 90, 97, 93, 96, 98, 102, 105, 107, 110, 112, + 115, 120, 120, 120, 120, 121, 121, 121, 122, 119, 119, 120, 120, 120, 121, 120, + 120, 125, 125, 125, 125, 125, 126, 127, 128, 128, 129, 129, 130, 131, 133, 135, + 136, 129, 131, 132, 134, 137, 141, 148, 155, 149, 149, 146, 140, 134, 133, 138, + 143, 141, 141, 141, 141, 140, 139, 137, 135, 133, 134, 133, 130, 128, 128, 130, + 133, 126, 125, 125, 123, 122, 121, 121, 121, 124, 124, 123, 123, 122, 121, 122, + 122, 128, 128, 127, 126, 124, 123, 121, 121, 123, 132, 124, 130, 113, 122, 113, + 116, 107, 108, 112, 116, 115, 106, 93, 83, 90, 96, 89, 78, 85, 103, 101, + 85, 74, 76, 66, 75, 57, 58, 43, 49, 61, 73, 58, 68, 86, 79, 83, + 89, 91, 97, 105, 94, 88, 79, 87, 91, 77, 82, 91, 82, 66, 255, 17, + 23, 59, 91, 91, 95, 105, 98, 99, 101, 105, 108, 110, 112, 114, 117, 120, + 120, 121, 121, 121, 121, 121, 122, 124, 124, 125, 125, 125, 126, 125, 125, 125, + 125, 125, 126, 126, 127, 129, 129, 127, 127, 127, 127, 129, 130, 132, 133, 131, + 135, 140, 144, 148, 152, 158, 164, 151, 151, 146, 135, 124, 123, 135, 146, 136, + 138, 141, 141, 140, 139, 138, 139, 129, 131, 132, 128, 124, 123, 127, 132, 129, + 128, 127, 125, 124, 123, 122, 122, 125, 125, 125, 124, 124, 125, 124, 124, 124, + 125, 126, 127, 128, 126, 125, 125, 134, 133, 122, 138, 119, 117, 104, 115, 111, + 107, 106, 112, 119, 119, 109, 98, 76, 89, 89, 79, 91, 116, 115, 95, 77, + 77, 63, 72, 53, 59, 47, 57, 67, 74, 51, 60, 83, 77, 75, 77, 80, + 99, 110, 102, 80, 75, 84, 98, 79, 75, 91, 87, 61, 255, 20, 30, 59, + 92, 99, 88, 88, 97, 99, 101, 105, 108, 109, 110, 111, 113, 120, 120, 121, + 121, 121, 122, 122, 122, 121, 123, 124, 126, 126, 125, 123, 123, 126, 126, 125, + 125, 124, 125, 126, 126, 120, 127, 135, 137, 133, 131, 133, 137, 131, 132, 135, + 140, 146, 151, 156, 157, 155, 150, 143, 139, 136, 135, 138, 142, 138, 134, 150, + 136, 133, 144, 133, 142, 134, 135, 136, 132, 129, 127, 128, 131, 125, 124, 124, + 123, 121, 122, 125, 127, 122, 128, 130, 126, 123, 125, 126, 125, 130, 127, 125, + 125, 127, 127, 125, 122, 130, 128, 129, 131, 122, 107, 102, 106, 107, 109, 107, + 106, 108, 111, 107, 101, 94, 84, 98, 109, 99, 102, 112, 106, 74, 75, 53, + 63, 53, 57, 42, 56, 63, 67, 69, 68, 68, 70, 68, 65, 71, 95, 110, + 89, 97, 70, 78, 95, 79, 89, 98, 83, 59, 190, 83, 85, 88, 93, 93, + 95, 99, 102, 101, 104, 108, 111, 112, 113, 115, 117, 121, 121, 121, 121, 122, + 122, 122, 123, 122, 123, 125, 126, 127, 126, 124, 123, 127, 126, 126, 126, 126, + 127, 128, 129, 125, 129, 133, 133, 129, 131, 135, 140, 141, 137, 135, 140, 148, + 155, 156, 155, 152, 149, 145, 142, 140, 138, 140, 141, 140, 137, 150, 139, 139, + 150, 139, 146, 140, 140, 138, 135, 132, 130, 130, 131, 127, 127, 128, 127, 125, + 124, 124, 124, 122, 128, 130, 126, 124, 125, 126, 125, 130, 127, 124, 124, 126, + 127, 127, 126, 126, 122, 123, 125, 119, 106, 101, 105, 108, 106, 100, 94, 95, + 100, 101, 98, 103, 92, 101, 110, 102, 106, 118, 114, 91, 93, 74, 80, 72, + 75, 63, 77, 69, 68, 67, 69, 70, 68, 65, 63, 66, 92, 112, 96, 100, + 72, 75, 89, 82, 92, 97, 82, 60, 127, 135, 126, 108, 92, 90, 101, 107, + 102, 104, 107, 111, 113, 115, 116, 119, 121, 120, 120, 121, 121, 122, 122, 122, + 122, 122, 123, 125, 126, 127, 126, 124, 123, 127, 127, 127, 127, 127, 129, 130, + 131, 134, 135, 135, 133, 132, 135, 142, 148, 147, 142, 138, 144, 154, 162, 161, + 157, 149, 148, 146, 144, 142, 141, 142, 141, 141, 139, 147, 140, 143, 152, 144, + 145, 143, 141, 137, 134, 134, 132, 130, 128, 129, 129, 129, 128, 127, 125, 123, + 121, 127, 132, 133, 130, 129, 130, 131, 129, 129, 127, 123, 123, 124, 126, 126, + 126, 124, 118, 116, 120, 118, 109, 104, 106, 107, 105, 99, 92, 92, 96, 96, + 93, 106, 96, 99, 105, 102, 108, 118, 119, 106, 108, 91, 89, 79, 77, 67, + 80, 79, 70, 67, 72, 74, 67, 61, 60, 61, 89, 115, 108, 105, 79, 77, + 87, 83, 92, 93, 78, 61, 134, 138, 122, 101, 91, 93, 103, 104, 99, 106, + 107, 111, 113, 115, 116, 119, 122, 119, 119, 119, 120, 120, 120, 121, 121, 121, + 122, 124, 125, 125, 125, 123, 122, 126, 126, 126, 127, 127, 129, 131, 132, 135, + 136, 134, 133, 132, 135, 141, 146, 137, 137, 137, 144, 153, 159, 158, 156, 147, + 147, 145, 141, 139, 142, 143, 142, 141, 140, 142, 139, 142, 148, 142, 138, 139, + 135, 131, 130, 132, 132, 129, 126, 129, 127, 125, 123, 123, 123, 122, 122, 127, + 131, 132, 129, 129, 130, 131, 128, 127, 126, 125, 124, 124, 122, 121, 120, 125, + 116, 113, 119, 120, 113, 108, 110, 98, 101, 101, 97, 94, 93, 88, 82, 94, + 88, 88, 94, 98, 103, 110, 114, 102, 105, 93, 85, 79, 74, 67, 77, 80, + 68, 62, 69, 71, 61, 52, 51, 54, 81, 107, 109, 100, 81, 79, 85, 79, + 88, 83, 69, 60, 129, 129, 105, 88, 94, 100, 100, 98, 102, 106, 108, 110, + 112, 113, 114, 118, 120, 117, 117, 117, 118, 118, 119, 119, 119, 119, 121, 122, + 124, 124, 123, 121, 121, 125, 125, 125, 126, 126, 128, 130, 131, 127, 128, 128, + 129, 128, 130, 132, 135, 125, 131, 137, 144, 145, 147, 146, 146, 146, 147, 142, + 135, 134, 140, 144, 143, 142, 144, 140, 140, 142, 142, 141, 131, 133, 130, 126, + 127, 130, 131, 130, 127, 128, 123, 118, 115, 117, 120, 123, 124, 120, 123, 124, + 121, 121, 124, 123, 119, 123, 125, 126, 125, 123, 118, 114, 113, 122, 113, 111, + 117, 119, 113, 109, 111, 93, 97, 98, 93, 88, 86, 80, 75, 79, 78, 77, + 84, 94, 97, 99, 105, 96, 100, 95, 85, 90, 84, 81, 87, 75, 64, 57, + 62, 63, 54, 45, 42, 49, 69, 92, 102, 88, 81, 80, 84, 74, 82, 72, + 60, 60, 138, 130, 106, 91, 99, 104, 100, 100, 110, 109, 110, 112, 112, 112, + 114, 117, 119, 117, 117, 117, 118, 118, 118, 119, 119, 120, 121, 122, 124, 124, + 124, 122, 121, 125, 125, 125, 126, 126, 128, 129, 131, 127, 129, 130, 132, 132, + 132, 132, 133, 132, 139, 147, 149, 146, 143, 143, 144, 146, 148, 142, 132, 131, + 139, 144, 141, 143, 151, 143, 145, 145, 140, 143, 131, 131, 129, 128, 128, 131, + 132, 132, 131, 129, 122, 115, 111, 115, 120, 124, 126, 121, 123, 124, 121, 122, + 125, 124, 119, 122, 124, 127, 125, 121, 116, 112, 112, 118, 111, 111, 117, 117, + 109, 106, 109, 101, 102, 99, 90, 84, 84, 84, 82, 72, 75, 71, 78, 92, + 92, 88, 96, 101, 104, 102, 89, 100, 90, 87, 84, 78, 74, 68, 67, 66, + 62, 54, 47, 57, 68, 84, 100, 83, 88, 88, 88, 74, 82, 67, 55, 63, + 126, 119, 109, 100, 103, 104, 104, 106, 112, 115, 115, 116, 115, 114, 115, 118, + 121, 118, 118, 119, 119, 120, 120, 120, 120, 122, 123, 124, 126, 126, 125, 123, + 123, 128, 128, 128, 128, 127, 128, 129, 131, 136, 136, 136, 137, 139, 140, 139, + 140, 146, 149, 151, 153, 151, 149, 149, 149, 146, 149, 145, 134, 133, 141, 144, + 139, 140, 153, 144, 149, 146, 137, 146, 134, 130, 131, 131, 130, 130, 130, 131, + 133, 133, 125, 118, 115, 118, 123, 125, 125, 128, 130, 129, 127, 129, 132, 131, + 125, 123, 124, 125, 124, 119, 117, 117, 119, 115, 112, 114, 119, 116, 106, 103, + 107, 103, 106, 103, 95, 88, 87, 88, 87, 73, 78, 70, 73, 90, 87, 80, + 90, 101, 102, 102, 86, 105, 93, 87, 77, 83, 88, 85, 75, 72, 74, 68, + 57, 68, 71, 80, 101, 81, 94, 92, 88, 81, 88, 68, 56, 69, 129, 97, + 102, 103, 101, 103, 110, 112, 108, 119, 120, 120, 118, 117, 118, 120, 123, 120, + 120, 121, 121, 121, 122, 122, 122, 124, 125, 126, 128, 128, 127, 125, 125, 130, + 130, 129, 129, 129, 130, 130, 131, 138, 138, 136, 136, 138, 141, 141, 141, 149, + 147, 144, 145, 148, 151, 150, 150, 145, 150, 148, 138, 136, 143, 144, 136, 135, + 152, 143, 149, 146, 135, 148, 136, 129, 132, 133, 131, 127, 126, 128, 131, 137, + 130, 123, 120, 123, 126, 125, 124, 131, 132, 130, 128, 131, 135, 132, 126, 125, + 125, 124, 121, 117, 118, 122, 128, 117, 115, 119, 124, 119, 107, 104, 109, 95, + 102, 105, 100, 93, 89, 84, 79, 77, 81, 68, 69, 86, 83, 74, 85, 85, + 87, 93, 82, 110, 102, 99, 86, 81, 92, 90, 76, 72, 78, 73, 60, 68, + 67, 73, 96, 75, 91, 86, 79, 88, 94, 71, 59, 74, 117, 96, 92, 94, + 105, 113, 113, 112, 113, 124, 121, 119, 118, 119, 121, 123, 123, 123, 123, 123, + 122, 122, 121, 121, 121, 126, 126, 127, 127, 125, 125, 126, 127, 129, 129, 129, + 130, 131, 132, 132, 134, 138, 141, 143, 141, 137, 139, 146, 152, 147, 152, 156, + 155, 150, 149, 151, 156, 144, 147, 150, 149, 144, 140, 138, 138, 145, 145, 145, + 144, 143, 140, 136, 135, 134, 131, 129, 128, 129, 131, 130, 131, 124, 127, 127, + 124, 120, 120, 126, 132, 128, 128, 128, 128, 128, 128, 127, 127, 119, 123, 128, + 127, 122, 117, 115, 116, 125, 120, 112, 107, 105, 103, 100, 97, 96, 98, 100, + 100, 97, 95, 93, 93, 80, 74, 69, 72, 71, 69, 72, 79, 86, 95, 92, + 88, 98, 100, 93, 90, 92, 87, 90, 85, 69, 66, 71, 69, 67, 67, 69, + 74, 79, 81, 81, 80, 82, 79, 79, 69, 55, 106, 86, 83, 85, 93, 99, + 105, 115, 125, 124, 121, 120, 119, 120, 122, 123, 124, 125, 124, 123, 123, 122, + 123, 123, 124, 125, 125, 127, 128, 127, 127, 129, 131, 129, 129, 129, 130, 131, + 133, 135, 136, 134, 136, 138, 138, 136, 135, 137, 141, 150, 148, 147, 151, 154, + 157, 156, 155, 157, 154, 149, 147, 145, 143, 140, 137, 146, 145, 144, 143, 141, + 139, 137, 136, 134, 133, 130, 129, 130, 132, 132, 131, 125, 126, 126, 122, 118, + 118, 122, 128, 129, 129, 130, 130, 130, 129, 128, 126, 127, 128, 129, 126, 121, + 117, 114, 114, 118, 116, 113, 113, 114, 113, 110, 107, 97, 95, 93, 92, 92, + 91, 89, 87, 80, 76, 73, 73, 70, 65, 67, 73, 84, 93, 89, 86, 95, + 96, 88, 87, 92, 94, 101, 94, 72, 65, 72, 74, 64, 64, 64, 65, 67, + 70, 75, 79, 79, 80, 82, 79, 64, 90, 65, 71, 83, 96, 102, 105, 113, + 119, 122, 121, 121, 121, 121, 122, 124, 125, 127, 126, 124, 123, 123, 124, 126, + 128, 124, 126, 128, 129, 129, 130, 133, 135, 129, 130, 130, 132, 134, 136, 138, + 139, 135, 137, 139, 142, 143, 142, 140, 140, 154, 154, 154, 153, 154, 156, 158, + 159, 162, 154, 145, 143, 145, 146, 143, 138, 146, 145, 143, 140, 138, 137, 136, + 137, 134, 132, 129, 129, 130, 131, 131, 130, 130, 131, 130, 126, 122, 121, 124, + 128, 130, 130, 130, 129, 129, 128, 126, 125, 123, 121, 120, 120, 122, 122, 122, + 122, 111, 112, 111, 110, 108, 104, 98, 93, 102, 98, 94, 93, 94, 94, 91, + 88, 82, 81, 80, 77, 70, 63, 63, 67, 79, 87, 85, 82, 90, 89, 82, + 82, 90, 97, 109, 101, 74, 63, 70, 74, 69, 67, 64, 61, 62, 66, 74, + 80, 72, 78, 83, 89, 75, 71, 53, 58, 68, 79, 90, 98, 105, 110, 119, + 120, 122, 122, 123, 123, 125, 126, 128, 126, 123, 122, 122, 124, 127, 129, 124, + 126, 128, 129, 129, 129, 131, 133, 129, 130, 131, 132, 134, 137, 139, 141, 136, + 137, 139, 144, 148, 150, 150, 149, 153, 158, 161, 157, 147, 145, 152, 161, 153, + 147, 140, 139, 141, 143, 142, 140, 144, 142, 140, 137, 135, 134, 134, 135, 133, + 130, 127, 127, 128, 129, 129, 128, 130, 131, 130, 127, 124, 123, 126, 129, 130, + 129, 126, 124, 123, 122, 122, 122, 121, 117, 113, 113, 117, 121, 121, 121, 117, + 117, 116, 114, 109, 103, 96, 92, 97, 97, 96, 95, 94, 93, 91, 90, 83, + 85, 85, 80, 72, 65, 63, 65, 71, 78, 78, 77, 84, 83, 77, 80, 84, + 92, 104, 97, 72, 61, 65, 66, 74, 68, 62, 60, 63, 69, 73, 76, 67, + 75, 79, 93, 79, 58, 55, 45, 36, 38, 55, 80, 101, 112, 114, 118, 122, + 124, 124, 124, 127, 129, 128, 126, 123, 121, 121, 123, 126, 128, 125, 127, 128, + 128, 127, 126, 128, 129, 129, 130, 131, 132, 134, 137, 139, 141, 138, 137, 138, + 143, 146, 150, 151, 152, 155, 157, 156, 152, 148, 148, 152, 155, 145, 145, 142, + 140, 138, 138, 139, 140, 142, 140, 137, 134, 133, 132, 132, 132, 131, 128, 125, + 125, 126, 127, 127, 126, 123, 123, 123, 122, 121, 121, 123, 125, 129, 126, 121, + 117, 115, 114, 117, 118, 126, 120, 112, 108, 107, 107, 107, 106, 107, 108, 108, + 106, 102, 99, 96, 94, 82, 87, 91, 91, 87, 83, 83, 84, 80, 82, 82, + 77, 71, 66, 64, 63, 63, 70, 71, 72, 78, 76, 71, 78, 79, 81, 90, + 89, 72, 64, 64, 59, 72, 64, 58, 60, 67, 71, 68, 64, 63, 72, 71, + 92, 77, 55, 47, 36, 26, 27, 48, 77, 97, 102, 108, 113, 120, 124, 124, + 125, 128, 131, 129, 127, 125, 123, 122, 123, 125, 126, 126, 127, 128, 128, 126, + 125, 126, 128, 129, 130, 130, 132, 134, 136, 138, 139, 144, 145, 145, 146, 146, + 149, 151, 152, 167, 156, 147, 153, 164, 171, 165, 156, 148, 149, 146, 142, 137, + 135, 136, 139, 140, 139, 136, 133, 132, 131, 130, 129, 130, 127, 125, 124, 125, + 126, 126, 126, 123, 123, 122, 122, 123, 124, 125, 125, 126, 125, 121, 116, 113, + 112, 113, 113, 119, 114, 107, 102, 100, 100, 101, 102, 106, 108, 108, 105, 99, + 94, 91, 90, 81, 84, 87, 86, 83, 80, 79, 80, 77, 78, 76, 71, 68, + 67, 64, 59, 58, 65, 65, 69, 74, 69, 65, 74, 74, 72, 80, 83, 75, + 72, 70, 61, 71, 65, 63, 67, 74, 76, 69, 63, 61, 71, 64, 92, 76, + 57, 41, 39, 38, 41, 57, 77, 88, 87, 102, 110, 119, 125, 125, 126, 130, + 133, 130, 129, 128, 126, 125, 124, 123, 124, 126, 128, 129, 129, 128, 128, 130, + 132, 131, 131, 131, 132, 133, 135, 137, 137, 141, 145, 149, 150, 149, 149, 149, + 151, 163, 156, 151, 156, 166, 171, 166, 158, 153, 149, 143, 138, 137, 138, 138, + 139, 139, 139, 138, 136, 134, 132, 130, 129, 131, 129, 126, 125, 126, 128, 128, + 127, 128, 127, 126, 126, 127, 127, 127, 126, 123, 124, 124, 122, 120, 115, 110, + 107, 107, 106, 103, 99, 96, 97, 100, 105, 117, 121, 124, 121, 114, 107, 101, + 99, 97, 91, 85, 84, 86, 87, 83, 79, 81, 80, 74, 69, 69, 71, 67, + 58, 57, 63, 64, 66, 71, 63, 59, 69, 67, 65, 74, 80, 76, 76, 77, + 68, 67, 68, 72, 75, 77, 76, 72, 70, 62, 73, 63, 95, 78, 61, 51, + 50, 43, 39, 46, 65, 80, 83, 99, 107, 118, 124, 126, 126, 130, 134, 132, + 132, 130, 129, 127, 126, 124, 123, 125, 127, 129, 130, 130, 131, 133, 135, 131, + 131, 131, 132, 133, 134, 135, 136, 128, 136, 144, 148, 146, 144, 144, 148, 145, + 152, 157, 155, 149, 147, 151, 156, 154, 145, 134, 131, 135, 141, 142, 142, 139, + 140, 140, 139, 137, 134, 131, 129, 133, 130, 128, 127, 128, 129, 129, 129, 129, + 127, 125, 125, 125, 124, 123, 120, 122, 125, 129, 130, 127, 119, 110, 104, 109, + 109, 106, 100, 93, 90, 93, 97, 95, 102, 110, 114, 110, 104, 100, 98, 110, + 96, 81, 79, 86, 90, 84, 76, 87, 84, 77, 70, 72, 76, 70, 60, 59, + 63, 64, 66, 69, 59, 54, 65, 60, 60, 71, 78, 74, 76, 80, 74, 59, + 66, 74, 75, 71, 67, 68, 72, 62, 75, 64, 99, 82, 62, 71, 69, 73, + 81, 78, 69, 70, 77, 93, 109, 115, 111, 118, 135, 137, 126, 130, 128, 128, + 127, 126, 127, 128, 128, 129, 131, 132, 131, 129, 127, 127, 128, 123, 133, 131, + 120, 119, 128, 124, 110, 120, 124, 126, 128, 134, 139, 138, 133, 137, 140, 142, + 142, 141, 139, 139, 139, 142, 145, 146, 142, 136, 134, 138, 143, 146, 146, 144, + 142, 138, 134, 131, 128, 132, 131, 130, 129, 128, 128, 128, 128, 128, 127, 126, + 125, 123, 122, 121, 121, 120, 120, 121, 122, 122, 123, 125, 125, 118, 118, 116, + 107, 97, 92, 94, 98, 101, 101, 96, 102, 114, 108, 96, 96, 106, 106, 98, + 85, 77, 79, 85, 88, 88, 82, 78, 75, 71, 66, 67, 72, 53, 58, 64, + 68, 65, 57, 48, 42, 51, 50, 71, 72, 82, 77, 84, 66, 63, 72, 79, + 78, 75, 71, 69, 67, 67, 62, 80, 86, 83, 62, 76, 79, 90, 98, 96, + 86, 78, 75, 83, 92, 105, 114, 121, 127, 128, 125, 132, 131, 129, 129, 128, + 128, 128, 129, 129, 133, 138, 140, 136, 128, 122, 118, 117, 123, 121, 112, 109, + 109, 101, 89, 86, 94, 97, 92, 88, 93, 103, 109, 108, 112, 117, 120, 123, + 128, 135, 140, 134, 138, 144, 146, 144, 140, 139, 139, 141, 141, 139, 138, 135, + 131, 128, 126, 131, 130, 129, 128, 127, 127, 127, 127, 126, 126, 125, 124, 122, + 121, 120, 120, 121, 121, 122, 123, 124, 124, 125, 126, 122, 123, 122, 117, 108, + 101, 96, 96, 103, 114, 110, 103, 111, 113, 104, 99, 92, 95, 93, 87, 85, + 90, 95, 97, 88, 84, 80, 78, 73, 67, 66, 69, 65, 63, 58, 51, 47, + 45, 47, 50, 43, 42, 64, 65, 79, 76, 85, 69, 70, 71, 73, 77, 75, + 71, 66, 65, 74, 68, 83, 88, 83, 64, 82, 92, 103, 108, 107, 101, 91, + 80, 81, 83, 96, 116, 125, 123, 125, 130, 132, 131, 129, 128, 126, 126, 125, + 127, 130, 134, 139, 140, 135, 128, 121, 117, 107, 109, 111, 113, 111, 104, 94, + 87, 75, 77, 74, 66, 62, 69, 81, 87, 103, 105, 109, 108, 106, 108, 115, + 121, 128, 131, 136, 141, 144, 144, 143, 142, 140, 140, 140, 139, 137, 134, 131, + 129, 129, 128, 127, 126, 125, 125, 125, 125, 126, 126, 125, 124, 123, 122, 121, + 120, 122, 122, 123, 123, 124, 125, 125, 126, 126, 127, 127, 126, 122, 113, 101, + 95, 101, 122, 119, 104, 106, 112, 107, 101, 93, 96, 95, 91, 89, 90, 90, + 87, 86, 83, 82, 82, 76, 68, 65, 66, 64, 64, 63, 57, 49, 43, 42, + 42, 44, 41, 62, 60, 71, 67, 76, 59, 73, 66, 67, 73, 75, 70, 66, + 66, 76, 69, 83, 86, 140, 68, 81, 96, 106, 105, 103, 104, 102, 96, 90, + 86, 88, 102, 115, 122, 126, 129, 130, 128, 126, 124, 123, 123, 122, 123, 131, + 132, 133, 131, 127, 124, 123, 123, 105, 103, 107, 117, 116, 104, 93, 91, 87, + 78, 67, 64, 72, 81, 80, 74, 76, 83, 91, 94, 96, 100, 109, 117, 124, + 122, 122, 125, 132, 138, 143, 145, 136, 137, 138, 138, 137, 135, 132, 130, 127, + 127, 125, 124, 123, 123, 123, 123, 127, 126, 126, 125, 124, 123, 122, 122, 122, + 122, 122, 123, 123, 124, 124, 124, 127, 127, 127, 130, 130, 122, 109, 99, 95, + 114, 116, 106, 104, 103, 99, 102, 99, 100, 96, 89, 85, 84, 79, 74, 83, + 80, 81, 83, 80, 72, 67, 66, 61, 64, 66, 62, 54, 44, 38, 35, 43, + 40, 57, 54, 64, 61, 70, 55, 66, 59, 61, 70, 72, 67, 68, 77, 73, + 67, 80, 83, 255, 81, 73, 92, 106, 103, 99, 104, 108, 109, 104, 96, 86, + 83, 96, 115, 123, 119, 129, 127, 125, 124, 122, 122, 122, 123, 128, 129, 130, + 128, 125, 122, 121, 121, 109, 103, 106, 114, 112, 96, 86, 85, 86, 82, 78, + 80, 89, 96, 90, 80, 76, 82, 89, 90, 88, 87, 89, 92, 111, 110, 109, + 113, 119, 126, 133, 135, 127, 128, 129, 130, 130, 130, 128, 127, 126, 125, 124, + 123, 122, 122, 122, 122, 124, 124, 123, 122, 122, 121, 121, 120, 119, 119, 121, + 121, 121, 122, 122, 122, 124, 122, 123, 127, 130, 126, 115, 107, 93, 102, 107, + 111, 110, 96, 92, 106, 95, 96, 92, 85, 81, 82, 81, 79, 80, 76, 77, + 81, 81, 76, 70, 68, 69, 67, 61, 55, 49, 45, 43, 43, 35, 31, 49, + 47, 60, 61, 74, 61, 51, 52, 60, 67, 66, 64, 73, 87, 73, 69, 83, + 84, 255, 203, 74, 90, 104, 107, 104, 104, 109, 113, 116, 111, 98, 87, 92, + 109, 117, 113, 130, 128, 127, 126, 125, 126, 126, 127, 125, 130, 134, 135, 130, + 123, 116, 112, 109, 104, 104, 111, 111, 103, 97, 99, 89, 100, 110, 111, 110, + 111, 112, 111, 114, 116, 115, 110, 102, 92, 84, 80, 97, 100, 105, 110, 113, + 115, 117, 118, 122, 123, 125, 127, 129, 129, 128, 128, 126, 125, 124, 122, 122, + 121, 121, 121, 120, 120, 119, 119, 118, 118, 117, 117, 119, 119, 120, 120, 120, + 120, 120, 120, 122, 120, 121, 125, 130, 129, 123, 117, 101, 101, 103, 114, 118, + 100, 94, 110, 99, 101, 98, 89, 82, 82, 84, 85, 79, 74, 73, 77, 80, + 76, 73, 72, 70, 68, 68, 68, 68, 64, 55, 48, 39, 34, 48, 43, 54, + 53, 67, 54, 41, 51, 61, 63, 60, 63, 75, 87, 75, 75, 90, 87, 255, + 255, 93, 94, 98, 103, 103, 103, 107, 113, 119, 118, 115, 111, 104, 100, 105, + 111, 129, 127, 126, 127, 126, 127, 128, 129, 128, 132, 137, 139, 135, 127, 121, + 117, 114, 111, 110, 113, 117, 119, 121, 123, 113, 126, 134, 132, 127, 126, 129, + 132, 126, 126, 125, 125, 125, 122, 117, 113, 99, 104, 109, 111, 110, 110, 113, + 116, 119, 121, 123, 126, 128, 129, 129, 129, 126, 125, 124, 122, 122, 121, 121, + 122, 120, 120, 119, 119, 119, 118, 118, 118, 120, 120, 120, 120, 121, 121, 121, + 121, 121, 121, 124, 128, 132, 131, 127, 124, 114, 112, 107, 111, 119, 111, 103, + 111, 108, 114, 113, 101, 89, 86, 89, 91, 82, 75, 70, 73, 76, 75, 73, + 72, 67, 67, 71, 80, 87, 82, 66, 52, 48, 40, 51, 40, 48, 43, 55, + 41, 41, 55, 63, 58, 56, 65, 74, 75, 69, 73, 91, 86, 255, 255, 116, + 101, 91, 93, 98, 99, 106, 116, 112, 113, 123, 130, 113, 89, 90, 107, 126, + 126, 125, 125, 126, 126, 128, 129, 133, 136, 136, 136, 133, 131, 131, 132, 127, + 125, 120, 116, 118, 125, 128, 128, 136, 136, 133, 128, 130, 132, 129, 122, 136, + 132, 127, 125, 125, 123, 118, 112, 113, 115, 115, 112, 107, 109, 118, 126, 113, + 114, 118, 121, 123, 125, 125, 125, 127, 126, 124, 124, 122, 123, 123, 122, 123, + 123, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, + 124, 128, 132, 135, 134, 130, 127, 121, 122, 110, 104, 114, 119, 110, 109, 108, + 118, 121, 111, 99, 95, 100, 104, 87, 77, 70, 72, 73, 73, 71, 72, 71, + 63, 57, 63, 74, 78, 71, 61, 44, 36, 46, 37, 44, 42, 53, 41, 45, + 60, 64, 55, 54, 67, 71, 63, 58, 66, 86, 81, 255, 255, 140, 123, 100, + 85, 82, 91, 101, 109, 115, 110, 114, 124, 126, 115, 105, 102, 126, 127, 126, + 128, 129, 131, 132, 134, 134, 134, 134, 135, 135, 134, 134, 133, 131, 130, 130, + 130, 130, 131, 132, 133, 133, 130, 130, 130, 132, 131, 127, 123, 132, 131, 132, + 131, 129, 127, 125, 122, 118, 116, 118, 124, 131, 131, 124, 116, 117, 121, 118, + 106, 103, 111, 113, 108, 124, 128, 128, 128, 124, 122, 124, 125, 122, 122, 121, + 121, 122, 121, 118, 119, 123, 123, 123, 123, 124, 124, 124, 124, 127, 128, 129, + 130, 132, 133, 134, 135, 126, 126, 119, 112, 112, 119, 119, 113, 120, 122, 126, + 126, 117, 105, 101, 104, 113, 101, 83, 70, 70, 76, 74, 67, 69, 60, 55, + 60, 64, 62, 61, 64, 43, 44, 43, 38, 38, 43, 45, 45, 43, 53, 60, + 58, 59, 66, 68, 63, 61, 60, 94, 78, 255, 255, 135, 133, 118, 99, 95, + 108, 115, 113, 124, 127, 125, 124, 123, 125, 123, 119, 110, 116, 126, 134, 138, + 138, 136, 135, 136, 136, 136, 137, 136, 135, 136, 135, 132, 132, 131, 131, 131, + 132, 133, 134, 134, 131, 129, 128, 130, 131, 129, 128, 119, 120, 122, 126, 128, + 129, 131, 130, 120, 116, 114, 117, 123, 127, 126, 123, 136, 140, 137, 127, 124, + 131, 133, 129, 124, 126, 127, 125, 121, 119, 120, 121, 122, 122, 121, 122, 121, + 121, 120, 120, 120, 121, 121, 121, 122, 122, 122, 122, 126, 126, 127, 128, 131, + 132, 133, 134, 127, 125, 118, 110, 110, 113, 112, 106, 101, 102, 107, 113, 111, + 101, 92, 91, 115, 111, 100, 87, 80, 79, 74, 67, 64, 53, 47, 51, 56, + 57, 58, 60, 56, 57, 53, 43, 34, 34, 37, 37, 34, 48, 58, 56, 53, + 57, 64, 65, 67, 66, 97, 82, 255, 255, 255, 141, 129, 101, 86, 94, 95, + 83, 103, 118, 125, 122, 126, 138, 141, 136, 106, 115, 126, 135, 139, 140, 138, + 137, 138, 138, 138, 139, 138, 137, 137, 136, 133, 133, 133, 132, 132, 132, 133, + 133, 132, 129, 125, 124, 126, 129, 130, 131, 130, 130, 131, 130, 130, 130, 130, + 129, 128, 124, 119, 119, 121, 123, 122, 120, 127, 130, 127, 120, 120, 127, 128, + 125, 126, 127, 127, 125, 121, 119, 119, 120, 120, 121, 121, 121, 122, 121, 121, + 122, 120, 121, 121, 121, 121, 121, 122, 122, 124, 124, 125, 126, 128, 130, 131, + 132, 131, 128, 121, 112, 109, 108, 106, 101, 110, 107, 109, 117, 121, 115, 107, + 103, 106, 110, 108, 96, 84, 77, 68, 62, 53, 46, 43, 47, 52, 53, 55, + 57, 65, 70, 69, 59, 49, 42, 36, 31, 31, 45, 57, 58, 51, 51, 59, + 66, 68, 70, 97, 255, 255, 255, 255, 130, 117, 89, 68, 65, 63, 58, 54, + 65, 76, 85, 101, 123, 144, 155, 113, 120, 126, 131, 133, 134, 134, 138, 138, + 139, 139, 139, 138, 137, 136, 136, 134, 134, 133, 133, 131, 130, 130, 130, 128, + 127, 125, 124, 126, 128, 130, 131, 141, 141, 137, 136, 133, 131, 129, 129, 127, + 125, 125, 125, 126, 126, 125, 123, 128, 131, 129, 125, 127, 132, 132, 130, 126, + 128, 127, 127, 124, 123, 123, 123, 118, 119, 119, 120, 121, 121, 121, 120, 121, + 122, 122, 122, 122, 122, 123, 123, 122, 122, 123, 124, 126, 127, 128, 130, 132, + 130, 124, 117, 112, 108, 104, 101, 109, 104, 103, 108, 112, 111, 108, 109, 97, + 103, 104, 94, 82, 71, 61, 53, 39, 47, 56, 62, 62, 60, 62, 64, 65, + 72, 80, 82, 78, 67, 50, 35, 31, 42, 53, 59, 56, 52, 56, 61, 60, + 66, 91, 255, 255, 255, 255, 207, 98, 84, 67, 59, 66, 80, 71, 53, 41, + 42, 47, 56, 80, 105, 101, 109, 120, 127, 130, 132, 133, 136, 139, 139, 138, + 138, 137, 137, 136, 135, 134, 134, 132, 130, 128, 128, 128, 128, 126, 127, 129, + 130, 130, 131, 130, 132, 132, 132, 131, 132, 133, 134, 136, 136, 122, 122, 124, + 124, 124, 128, 133, 137, 121, 122, 120, 116, 115, 116, 116, 113, 120, 121, 121, + 122, 122, 123, 123, 123, 117, 117, 118, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 120, 120, 120, 120, 120, 120, 121, 122, 124, 125, 126, 128, 129, 127, 123, + 118, 112, 105, 102, 101, 94, 93, 97, 104, 108, 107, 108, 111, 101, 103, 99, + 88, 76, 67, 55, 45, 36, 59, 83, 92, 85, 78, 78, 81, 72, 76, 83, + 89, 95, 89, 70, 51, 31, 32, 40, 54, 60, 54, 51, 53, 52, 62, 85, + 255, 255, 255, 255, 255, 202, 90, 78, 70, 81, 102, 98, 69, 47, 46, 40, + 26, 29, 45, 73, 89, 111, 127, 134, 136, 135, 137, 139, 140, 139, 138, 138, + 136, 136, 135, 135, 134, 132, 129, 128, 127, 126, 125, 127, 130, 133, 134, 133, + 132, 132, 133, 131, 132, 132, 133, 135, 137, 139, 142, 139, 135, 130, 122, 117, + 119, 128, 135, 142, 141, 139, 135, 132, 128, 126, 123, 113, 113, 113, 115, 117, + 119, 119, 118, 118, 118, 118, 119, 119, 119, 119, 118, 117, 117, 117, 117, 118, + 118, 118, 118, 119, 120, 120, 122, 123, 124, 125, 126, 123, 122, 120, 117, 111, + 102, 98, 100, 86, 90, 99, 110, 115, 113, 113, 115, 105, 105, 98, 84, 70, + 61, 50, 41, 52, 80, 109, 116, 107, 98, 97, 99, 89, 87, 84, 87, 94, + 97, 86, 73, 36, 27, 29, 47, 59, 55, 47, 46, 51, 62, 139, 255, 255, + 255, 255, 255, 255, 101, 88, 83, 89, 98, 94, 71, 54, 59, 65, 61, 57, + 59, 66, 84, 109, 128, 136, 138, 140, 142, 141, 141, 141, 140, 140, 138, 137, + 136, 136, 136, 133, 130, 129, 127, 125, 125, 126, 128, 130, 129, 127, 126, 129, + 132, 135, 134, 133, 134, 134, 136, 138, 140, 150, 148, 144, 134, 124, 119, 121, + 125, 130, 129, 129, 129, 126, 122, 118, 118, 117, 116, 115, 117, 120, 122, 121, + 119, 121, 121, 121, 121, 121, 120, 119, 119, 118, 118, 118, 118, 118, 118, 119, + 119, 118, 119, 120, 121, 123, 124, 125, 126, 122, 120, 119, 119, 111, 100, 97, + 100, 88, 84, 86, 95, 103, 104, 103, 104, 105, 109, 105, 89, 72, 62, 57, + 54, 73, 96, 118, 122, 113, 108, 107, 105, 100, 98, 94, 91, 93, 98, 96, + 92, 61, 43, 38, 52, 61, 54, 46, 48, 55, 67, 255, 255, 255, 255, 255, + 255, 255, 109, 97, 97, 96, 93, 134, 105, 68, 53, 59, 71, 75, 71, 80, + 95, 114, 128, 132, 136, 141, 146, 142, 143, 142, 142, 140, 140, 139, 138, 138, + 138, 135, 133, 130, 127, 126, 125, 124, 124, 124, 121, 118, 119, 124, 128, 126, + 126, 126, 127, 129, 134, 138, 139, 139, 146, 152, 150, 140, 132, 127, 127, 126, + 126, 129, 133, 134, 132, 129, 131, 126, 125, 123, 125, 127, 128, 127, 124, 124, + 124, 123, 123, 123, 122, 120, 120, 122, 122, 122, 122, 122, 122, 123, 123, 118, + 118, 120, 121, 123, 124, 125, 126, 123, 122, 122, 122, 114, 101, 97, 101, 111, + 96, 84, 85, 95, 101, 104, 104, 105, 115, 116, 101, 82, 74, 74, 77, 87, + 103, 115, 114, 109, 108, 107, 103, 101, 105, 105, 101, 98, 100, 101, 102, 89, + 66, 54, 62, 64, 54, 48, 53, 59, 68, 255, 255, 255, 255, 255, 255, 255, + 110, 101, 103, 104, 104, 108, 97, 84, 76, 66, 62, 76, 95, 89, 101, 115, + 126, 132, 135, 139, 142, 148, 145, 142, 138, 136, 135, 135, 136, 136, 134, 135, + 137, 131, 122, 122, 126, 132, 120, 118, 117, 112, 117, 123, 117, 125, 126, 125, + 125, 126, 130, 133, 134, 137, 142, 144, 142, 142, 140, 130, 116, 123, 126, 130, + 133, 132, 129, 124, 120, 127, 125, 122, 124, 126, 127, 123, 119, 120, 124, 127, + 127, 124, 121, 121, 121, 121, 122, 122, 122, 123, 122, 121, 120, 122, 122, 121, + 121, 120, 120, 121, 122, 118, 121, 114, 107, 113, 121, 111, 92, 106, 97, 90, + 92, 94, 95, 98, 102, 100, 108, 116, 106, 88, 91, 95, 85, 91, 112, 103, + 105, 96, 113, 106, 115, 111, 112, 106, 107, 115, 111, 104, 108, 111, 86, 47, + 55, 54, 54, 35, 46, 51, 67, 255, 255, 255, 255, 255, 255, 255, 107, 96, + 99, 102, 99, 103, 105, 104, 102, 104, 110, 113, 112, 99, 109, 120, 129, 133, + 135, 137, 142, 144, 143, 141, 138, 136, 136, 136, 137, 141, 136, 133, 133, 133, + 134, 139, 145, 120, 114, 118, 124, 124, 128, 133, 127, 127, 133, 135, 134, 140, + 150, 151, 145, 128, 137, 142, 138, 132, 131, 129, 126, 124, 125, 128, 130, 132, + 132, 132, 132, 132, 126, 120, 120, 124, 130, 133, 133, 122, 124, 125, 124, 121, + 120, 121, 123, 123, 123, 122, 122, 122, 122, 122, 122, 123, 122, 122, 121, 121, + 119, 119, 118, 117, 120, 114, 107, 114, 124, 117, 100, 96, 90, 85, 86, 93, + 101, 104, 105, 105, 102, 108, 110, 98, 98, 108, 112, 104, 108, 98, 106, 119, + 133, 123, 121, 115, 114, 110, 111, 121, 119, 114, 115, 114, 93, 51, 50, 48, + 55, 39, 48, 57, 131, 255, 255, 255, 255, 255, 255, 255, 104, 91, 100, 106, + 102, 103, 112, 113, 111, 117, 126, 118, 100, 104, 111, 120, 125, 128, 128, 130, + 133, 136, 137, 137, 137, 137, 137, 137, 137, 144, 138, 134, 139, 144, 148, 151, + 154, 148, 135, 126, 114, 96, 86, 81, 71, 83, 77, 86, 111, 126, 132, 147, + 166, 156, 146, 133, 124, 126, 133, 135, 132, 127, 126, 124, 125, 126, 129, 133, + 135, 134, 129, 124, 124, 127, 133, 136, 137, 127, 127, 126, 124, 122, 122, 124, + 126, 124, 123, 121, 120, 120, 120, 122, 123, 122, 122, 123, 121, 119, 116, 115, + 113, 114, 117, 112, 105, 112, 125, 122, 108, 105, 102, 94, 87, 93, 103, 103, + 95, 112, 101, 107, 117, 105, 97, 102, 109, 113, 107, 106, 112, 138, 134, 124, + 118, 110, 109, 108, 111, 119, 122, 118, 115, 119, 108, 62, 47, 41, 59, 48, + 53, 64, 255, 255, 255, 255, 255, 255, 255, 255, 101, 89, 103, 113, 110, 111, + 113, 111, 107, 108, 109, 100, 87, 106, 110, 115, 120, 122, 122, 124, 126, 128, + 129, 131, 134, 135, 136, 136, 136, 142, 141, 143, 151, 160, 160, 153, 145, 126, + 108, 94, 81, 65, 66, 75, 73, 78, 81, 86, 84, 76, 78, 94, 114, 146, + 141, 133, 128, 128, 130, 129, 128, 134, 132, 129, 126, 126, 127, 129, 131, 130, + 130, 130, 132, 134, 134, 131, 128, 130, 130, 128, 127, 126, 125, 126, 126, 123, + 122, 119, 117, 117, 118, 121, 122, 120, 121, 122, 121, 118, 113, 110, 108, 109, + 114, 109, 100, 105, 118, 118, 108, 116, 115, 105, 92, 96, 108, 105, 90, 108, + 103, 114, 123, 111, 100, 96, 92, 100, 102, 121, 129, 156, 133, 126, 123, 108, + 103, 104, 109, 113, 121, 122, 113, 122, 121, 75, 48, 38, 63, 55, 54, 128, + 255, 255, 255, 255, 255, 255, 255, 255, 97, 88, 102, 112, 111, 117, 113, 113, + 115, 110, 99, 96, 99, 109, 111, 116, 119, 121, 123, 125, 126, 121, 124, 126, + 129, 131, 133, 133, 134, 140, 141, 144, 153, 162, 162, 150, 138, 94, 81, 77, + 75, 74, 91, 115, 123, 104, 140, 143, 100, 60, 59, 66, 60, 73, 88, 108, + 121, 121, 117, 117, 119, 137, 136, 136, 134, 132, 131, 130, 130, 130, 130, 132, + 134, 134, 133, 130, 128, 129, 129, 129, 130, 129, 127, 124, 122, 122, 120, 118, + 116, 115, 116, 118, 119, 119, 119, 119, 118, 116, 112, 108, 106, 107, 112, 106, + 94, 95, 107, 109, 100, 103, 106, 99, 90, 97, 112, 112, 98, 99, 103, 116, + 118, 113, 114, 111, 94, 85, 93, 122, 140, 175, 151, 141, 133, 112, 102, 105, + 109, 111, 124, 129, 113, 116, 124, 82, 51, 37, 64, 56, 49, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 95, 88, 96, 105, 105, 116, 113, 117, 122, 111, + 93, 90, 101, 108, 111, 115, 120, 123, 124, 124, 124, 120, 121, 124, 126, 127, + 130, 131, 133, 139, 140, 139, 144, 152, 158, 153, 143, 120, 110, 109, 105, 98, + 106, 119, 122, 124, 140, 154, 143, 102, 65, 57, 70, 46, 38, 45, 71, 101, + 119, 121, 117, 130, 130, 132, 133, 132, 131, 131, 130, 135, 133, 131, 131, 131, + 134, 137, 139, 127, 127, 127, 129, 129, 127, 122, 118, 120, 119, 118, 116, 116, + 117, 117, 118, 118, 118, 118, 117, 116, 113, 110, 109, 110, 116, 110, 95, 92, + 101, 103, 95, 95, 97, 94, 89, 94, 105, 107, 100, 102, 106, 111, 108, 104, + 113, 114, 96, 92, 98, 114, 138, 173, 163, 139, 119, 111, 97, 101, 104, 104, + 123, 134, 113, 108, 121, 84, 51, 35, 60, 51, 43, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 98, 94, 97, 103, 107, 111, 113, 116, 113, 103, 93, 93, + 98, 112, 114, 118, 122, 127, 128, 126, 124, 123, 123, 124, 125, 126, 129, 130, + 133, 137, 139, 135, 136, 141, 150, 151, 144, 135, 128, 128, 125, 111, 112, 116, + 115, 135, 129, 139, 156, 132, 84, 67, 83, 86, 59, 44, 61, 96, 122, 129, + 127, 130, 130, 130, 131, 132, 133, 134, 135, 140, 139, 138, 137, 135, 137, 140, + 142, 132, 130, 128, 128, 129, 128, 124, 121, 121, 120, 120, 119, 119, 119, 119, + 118, 120, 119, 118, 118, 117, 116, 115, 116, 116, 123, 117, 101, 95, 102, 103, + 96, 101, 100, 98, 96, 96, 97, 100, 100, 113, 107, 110, 112, 106, 107, 106, + 93, 107, 116, 114, 133, 151, 155, 128, 113, 111, 93, 97, 101, 99, 125, 140, + 117, 106, 120, 86, 53, 35, 56, 48, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 101, 101, 102, 108, 115, 108, 115, 114, 101, 97, 107, 114, 112, 121, + 123, 128, 132, 136, 134, 133, 129, 126, 126, 125, 125, 126, 128, 132, 133, 135, + 138, 138, 135, 140, 146, 146, 138, 136, 129, 129, 123, 111, 110, 116, 115, 109, + 131, 139, 131, 131, 142, 128, 100, 116, 115, 117, 117, 111, 109, 123, 140, 141, + 139, 138, 138, 139, 141, 144, 145, 143, 145, 148, 149, 145, 141, 137, 135, 139, + 134, 130, 128, 131, 131, 128, 126, 121, 122, 122, 122, 122, 121, 120, 120, 121, + 120, 119, 120, 119, 119, 120, 121, 121, 129, 124, 107, 100, 106, 107, 100, 104, + 103, 103, 105, 102, 100, 104, 111, 116, 104, 111, 127, 123, 114, 107, 100, 110, + 131, 125, 136, 133, 148, 131, 131, 115, 95, 100, 105, 103, 132, 150, 127, 107, + 121, 88, 56, 37, 56, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 92, 93, 101, 105, 104, 116, 110, 101, 94, 94, 100, 110, 116, 120, 125, 129, + 132, 132, 130, 129, 127, 126, 126, 126, 126, 127, 129, 130, 131, 139, 135, 132, + 131, 134, 135, 132, 129, 124, 124, 124, 124, 121, 119, 116, 115, 111, 119, 125, + 126, 122, 120, 124, 129, 147, 148, 149, 142, 133, 127, 127, 129, 147, 148, 150, + 145, 141, 146, 160, 173, 159, 153, 147, 145, 147, 147, 141, 137, 134, 134, 134, + 134, 133, 130, 126, 125, 128, 127, 125, 124, 122, 123, 124, 126, 122, 124, 124, + 121, 117, 116, 118, 122, 129, 124, 126, 97, 98, 98, 115, 98, 101, 106, 102, + 118, 95, 100, 100, 123, 132, 115, 112, 120, 121, 120, 112, 99, 135, 131, 126, + 128, 131, 133, 131, 127, 115, 107, 92, 80, 109, 111, 166, 119, 108, 117, 90, + 44, 55, 51, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 97, + 104, 106, 105, 106, 101, 96, 96, 101, 111, 120, 126, 125, 129, 132, 134, 133, + 130, 129, 127, 123, 124, 125, 128, 128, 128, 128, 128, 135, 136, 135, 134, 131, + 129, 128, 129, 121, 122, 123, 124, 126, 126, 126, 125, 129, 134, 138, 138, 133, + 133, 139, 146, 144, 147, 148, 146, 141, 140, 143, 147, 147, 154, 161, 160, 153, + 151, 155, 160, 159, 154, 148, 146, 148, 148, 143, 139, 134, 134, 133, 132, 129, + 127, 125, 125, 123, 123, 122, 121, 120, 120, 121, 122, 124, 124, 122, 119, 116, + 116, 120, 126, 133, 131, 122, 102, 104, 104, 109, 104, 97, 101, 99, 117, 102, + 104, 98, 112, 125, 125, 128, 132, 130, 118, 106, 103, 120, 131, 137, 145, 157, + 165, 148, 125, 118, 109, 91, 83, 106, 114, 164, 122, 117, 123, 89, 39, 43, + 43, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 103, 105, 104, + 103, 98, 95, 94, 99, 108, 119, 126, 129, 130, 133, 135, 135, 133, 130, 129, + 128, 120, 122, 125, 128, 129, 127, 125, 125, 131, 135, 138, 135, 129, 124, 124, + 126, 119, 120, 121, 122, 124, 126, 129, 130, 135, 140, 142, 140, 137, 139, 145, + 153, 141, 144, 145, 144, 143, 145, 150, 155, 152, 159, 165, 164, 159, 154, 153, + 155, 157, 153, 148, 147, 148, 148, 144, 141, 137, 136, 133, 131, 129, 128, 126, + 127, 125, 125, 124, 123, 122, 122, 123, 123, 126, 125, 122, 118, 116, 117, 121, + 127, 133, 139, 116, 108, 109, 110, 100, 113, 94, 97, 100, 119, 110, 108, 96, + 101, 125, 137, 133, 127, 126, 117, 119, 142, 139, 153, 154, 144, 148, 162, 156, + 136, 126, 116, 93, 88, 96, 113, 150, 117, 121, 125, 87, 42, 41, 114, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 104, 103, 99, 96, 94, + 93, 94, 101, 112, 121, 124, 124, 130, 133, 134, 133, 131, 130, 129, 129, 121, + 122, 124, 125, 125, 125, 124, 124, 131, 134, 137, 134, 130, 126, 123, 122, 125, + 125, 123, 123, 123, 124, 126, 128, 131, 134, 138, 139, 137, 138, 142, 147, 146, + 147, 147, 145, 144, 146, 149, 153, 159, 160, 160, 157, 154, 153, 156, 159, 154, + 151, 147, 146, 147, 147, 144, 142, 140, 138, 134, 131, 129, 128, 128, 129, 126, + 125, 125, 124, 123, 123, 124, 123, 126, 124, 122, 119, 117, 116, 117, 120, 123, + 139, 111, 112, 109, 110, 94, 123, 96, 100, 108, 119, 115, 106, 97, 97, 118, + 139, 131, 118, 122, 113, 119, 157, 167, 176, 172, 151, 141, 149, 159, 162, 136, + 125, 99, 95, 84, 103, 128, 103, 114, 115, 77, 47, 48, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 101, 102, 97, 91, 88, 88, 89, 94, + 102, 112, 118, 119, 119, 127, 129, 130, 130, 129, 128, 130, 130, 124, 124, 122, + 121, 121, 123, 124, 126, 134, 134, 132, 133, 133, 131, 125, 120, 130, 128, 127, + 126, 125, 126, 126, 128, 129, 135, 139, 142, 141, 141, 142, 145, 154, 153, 152, + 150, 149, 150, 151, 153, 160, 158, 154, 151, 149, 150, 153, 155, 151, 148, 146, + 144, 144, 143, 141, 140, 140, 137, 132, 128, 126, 126, 127, 128, 121, 120, 121, + 121, 120, 119, 119, 118, 120, 119, 119, 117, 115, 111, 107, 106, 110, 134, 112, + 112, 105, 106, 96, 130, 100, 105, 115, 116, 113, 100, 98, 99, 106, 132, 132, + 124, 127, 108, 101, 130, 121, 121, 123, 124, 122, 118, 121, 129, 140, 130, 112, + 101, 81, 95, 114, 97, 116, 107, 59, 43, 49, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 98, 99, 93, 88, 88, 83, 87, 96, 105, 112, + 118, 121, 122, 126, 127, 128, 127, 126, 127, 129, 130, 126, 124, 122, 120, 118, + 121, 125, 127, 136, 133, 130, 132, 136, 135, 130, 124, 125, 124, 124, 124, 124, + 125, 125, 125, 127, 133, 140, 144, 144, 144, 143, 143, 149, 150, 150, 151, 152, + 153, 153, 154, 157, 156, 155, 155, 154, 151, 146, 142, 149, 148, 146, 144, 142, + 140, 139, 139, 136, 134, 129, 126, 123, 123, 123, 123, 121, 121, 122, 122, 121, + 120, 119, 118, 114, 114, 114, 114, 113, 108, 101, 98, 105, 125, 116, 110, 104, + 105, 105, 128, 104, 107, 118, 111, 111, 99, 105, 104, 109, 126, 128, 123, 123, + 112, 112, 134, 134, 114, 104, 118, 131, 129, 123, 124, 136, 125, 128, 108, 88, + 92, 113, 101, 133, 111, 49, 39, 118, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 97, 99, 93, 91, 94, 83, 90, 102, 111, 115, 119, 123, + 127, 129, 129, 128, 126, 125, 125, 126, 129, 126, 124, 123, 122, 121, 122, 124, + 125, 133, 134, 133, 134, 135, 136, 134, 134, 124, 125, 126, 127, 127, 127, 127, + 126, 127, 131, 135, 140, 140, 142, 141, 142, 143, 144, 147, 150, 153, 155, 155, + 155, 155, 155, 155, 157, 158, 154, 146, 139, 150, 149, 148, 145, 141, 139, 138, + 139, 137, 135, 132, 129, 126, 125, 124, 124, 122, 123, 124, 124, 123, 122, 121, + 120, 116, 115, 114, 115, 115, 113, 107, 104, 112, 120, 122, 106, 107, 109, 120, + 120, 109, 109, 119, 108, 118, 107, 115, 111, 116, 121, 123, 121, 115, 115, 132, + 154, 152, 131, 110, 107, 113, 119, 117, 116, 127, 118, 140, 109, 97, 88, 113, + 105, 137, 111, 43, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 98, 99, 96, 96, 100, 88, 97, 110, 116, 116, 118, 123, 129, 132, + 132, 130, 127, 124, 124, 125, 127, 124, 124, 124, 125, 123, 124, 124, 123, 131, + 134, 136, 136, 133, 134, 138, 142, 134, 135, 136, 138, 136, 135, 133, 132, 129, + 132, 134, 137, 138, 141, 143, 145, 147, 148, 151, 156, 160, 161, 160, 159, 156, + 153, 152, 154, 158, 158, 153, 149, 151, 151, 149, 146, 141, 139, 138, 139, 139, + 138, 136, 133, 130, 128, 127, 126, 118, 119, 121, 121, 120, 118, 117, 116, 121, + 119, 117, 118, 120, 120, 116, 115, 120, 118, 126, 103, 112, 115, 129, 111, 116, + 110, 119, 109, 127, 119, 128, 119, 109, 114, 128, 129, 114, 111, 127, 139, 152, + 152, 140, 122, 111, 115, 120, 119, 122, 113, 147, 109, 100, 82, 110, 104, 121, + 99, 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, + 98, 100, 105, 100, 83, 93, 105, 114, 114, 112, 118, 123, 123, 128, 127, 126, + 125, 124, 124, 124, 124, 126, 126, 126, 126, 125, 127, 129, 130, 130, 133, 138, + 142, 142, 139, 135, 133, 138, 137, 136, 135, 133, 133, 133, 133, 129, 135, 142, + 144, 140, 140, 142, 145, 152, 152, 153, 154, 156, 157, 159, 160, 167, 169, 167, + 158, 154, 153, 150, 144, 144, 144, 145, 144, 142, 140, 139, 137, 137, 139, 139, + 136, 132, 129, 129, 131, 125, 123, 123, 122, 121, 122, 124, 125, 121, 119, 117, + 115, 115, 115, 116, 119, 122, 107, 112, 113, 120, 124, 110, 114, 117, 116, 114, + 114, 120, 128, 129, 125, 112, 108, 111, 116, 117, 116, 125, 138, 142, 161, 145, + 120, 118, 114, 107, 112, 118, 117, 123, 136, 109, 78, 99, 117, 121, 83, 108, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 102, 101, + 101, 97, 86, 101, 107, 112, 112, 116, 122, 124, 123, 128, 127, 126, 125, 124, + 124, 124, 124, 127, 127, 127, 127, 128, 131, 132, 133, 136, 137, 139, 142, 145, + 144, 140, 137, 144, 144, 141, 140, 135, 134, 132, 132, 132, 137, 141, 142, 140, + 139, 142, 147, 151, 154, 156, 159, 161, 161, 160, 160, 159, 162, 162, 157, 155, + 157, 156, 151, 145, 145, 145, 145, 143, 141, 140, 138, 136, 138, 137, 134, 131, + 128, 128, 129, 129, 128, 126, 123, 122, 121, 121, 121, 119, 120, 121, 120, 118, + 117, 116, 119, 113, 106, 114, 112, 112, 113, 102, 111, 119, 119, 118, 119, 125, + 134, 136, 131, 121, 112, 108, 110, 111, 111, 119, 132, 140, 154, 149, 130, 120, + 119, 117, 117, 113, 114, 119, 132, 110, 84, 105, 118, 112, 70, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 107, 101, 94, 91, + 89, 108, 110, 109, 112, 118, 124, 125, 121, 129, 128, 127, 126, 126, 126, 126, + 126, 128, 128, 128, 129, 131, 133, 135, 136, 139, 138, 136, 141, 146, 148, 144, + 139, 146, 146, 143, 142, 138, 137, 135, 135, 135, 138, 141, 142, 140, 141, 144, + 149, 147, 150, 156, 160, 161, 160, 157, 156, 154, 157, 158, 156, 155, 157, 156, + 154, 144, 144, 144, 143, 142, 141, 140, 139, 137, 138, 137, 135, 131, 129, 128, + 129, 129, 128, 127, 124, 122, 121, 121, 121, 117, 121, 125, 125, 121, 117, 116, + 117, 107, 104, 116, 110, 103, 102, 97, 109, 122, 122, 123, 125, 132, 141, 143, + 139, 139, 122, 109, 108, 110, 113, 121, 131, 138, 148, 155, 145, 124, 120, 123, + 117, 109, 113, 118, 128, 107, 90, 110, 116, 99, 121, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 109, 99, 87, 88, 92, 109, + 110, 110, 111, 114, 118, 120, 120, 129, 128, 127, 126, 126, 126, 127, 127, 127, + 129, 129, 131, 131, 135, 136, 138, 140, 135, 132, 136, 143, 147, 143, 138, 140, + 139, 139, 138, 138, 137, 137, 137, 136, 138, 139, 138, 138, 141, 144, 149, 141, + 144, 149, 152, 153, 153, 152, 151, 154, 156, 156, 155, 153, 152, 150, 149, 143, + 143, 142, 141, 140, 139, 139, 138, 138, 138, 137, 135, 132, 130, 129, 129, 125, + 123, 123, 122, 122, 121, 122, 122, 117, 121, 125, 124, 120, 116, 115, 117, 105, + 101, 110, 101, 94, 99, 97, 111, 120, 122, 124, 127, 135, 145, 147, 144, 148, + 125, 107, 105, 110, 114, 123, 132, 136, 141, 159, 156, 127, 117, 118, 108, 104, + 116, 121, 124, 103, 92, 111, 112, 83, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 96, 106, 96, 84, 89, 97, 105, 108, 110, + 110, 108, 108, 112, 118, 123, 122, 122, 121, 122, 123, 124, 124, 127, 128, 129, + 130, 132, 135, 136, 138, 140, 134, 131, 135, 143, 147, 144, 138, 135, 135, 134, + 134, 133, 133, 133, 133, 133, 133, 132, 132, 132, 136, 140, 144, 139, 141, 143, + 145, 147, 149, 150, 151, 152, 152, 152, 153, 151, 147, 145, 144, 140, 140, 139, + 138, 137, 136, 136, 136, 136, 135, 133, 132, 130, 128, 127, 125, 122, 121, 121, + 121, 120, 118, 118, 118, 118, 120, 121, 120, 116, 113, 113, 116, 107, 98, 101, + 91, 92, 104, 104, 115, 118, 120, 123, 127, 136, 146, 147, 143, 142, 118, 100, + 100, 109, 115, 123, 130, 127, 132, 154, 158, 129, 112, 110, 101, 98, 116, 121, + 117, 98, 94, 114, 107, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 95, 102, 94, 89, 97, 103, 105, 107, 112, 112, 107, + 102, 107, 114, 115, 115, 115, 115, 117, 119, 120, 121, 129, 130, 130, 131, 133, + 135, 137, 138, 141, 138, 136, 139, 144, 147, 145, 140, 137, 135, 135, 133, 131, + 129, 128, 128, 129, 129, 128, 128, 130, 132, 137, 139, 142, 143, 144, 146, 148, + 151, 154, 155, 148, 147, 148, 152, 152, 147, 145, 146, 139, 139, 137, 136, 135, + 134, 135, 135, 133, 131, 129, 127, 127, 125, 124, 121, 124, 123, 122, 120, 118, + 114, 113, 111, 119, 118, 117, 116, 114, 113, 112, 112, 106, 97, 96, 85, 91, + 109, 109, 117, 117, 120, 123, 127, 137, 146, 148, 143, 135, 115, 102, 107, 118, + 124, 129, 134, 121, 126, 142, 149, 129, 110, 104, 103, 98, 116, 115, 108, 96, + 101, 115, 95, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 203, 97, 98, 93, 97, 107, 108, 110, 108, 111, 114, 111, 105, 106, + 111, 112, 112, 113, 115, 117, 119, 122, 125, 133, 134, 134, 134, 134, 136, 137, + 138, 142, 142, 142, 144, 146, 147, 145, 142, 139, 138, 136, 135, 134, 132, 131, + 130, 133, 132, 131, 132, 134, 137, 139, 140, 144, 146, 149, 152, 154, 155, 157, + 158, 148, 145, 148, 154, 154, 148, 146, 148, 140, 139, 137, 135, 134, 134, 135, + 135, 134, 131, 128, 127, 128, 127, 124, 120, 124, 123, 123, 121, 118, 115, 112, + 110, 119, 117, 115, 116, 118, 116, 110, 105, 102, 95, 96, 86, 92, 110, 109, + 115, 118, 121, 126, 130, 138, 147, 148, 144, 130, 114, 108, 118, 130, 133, 134, + 137, 126, 131, 133, 136, 127, 106, 97, 108, 110, 121, 109, 99, 95, 107, 111, + 73, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 101, 97, 96, 93, 103, 115, 114, 116, 111, 110, 116, 117, 112, 107, 109, 114, + 115, 116, 119, 121, 124, 128, 130, 135, 136, 135, 135, 136, 137, 138, 138, 141, + 142, 143, 145, 144, 144, 142, 141, 139, 138, 138, 138, 138, 138, 138, 139, 139, + 138, 138, 139, 142, 144, 145, 146, 143, 147, 151, 156, 158, 160, 158, 157, 151, + 148, 150, 156, 155, 148, 145, 147, 142, 140, 138, 136, 135, 134, 136, 136, 137, + 134, 131, 130, 131, 130, 127, 123, 121, 120, 122, 121, 120, 117, 116, 115, 118, + 115, 114, 118, 122, 120, 110, 101, 96, 94, 101, 90, 91, 108, 106, 112, 120, + 124, 127, 132, 141, 149, 150, 144, 121, 110, 108, 122, 132, 135, 132, 135, 135, + 139, 129, 127, 125, 103, 91, 111, 125, 128, 107, 93, 95, 111, 105, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 90, + 93, 104, 114, 118, 117, 121, 118, 116, 116, 114, 115, 112, 111, 116, 118, 118, + 116, 118, 123, 128, 130, 138, 138, 138, 139, 141, 141, 139, 138, 140, 148, 146, + 144, 146, 141, 134, 139, 132, 136, 141, 142, 140, 136, 135, 135, 136, 141, 144, + 145, 141, 138, 138, 140, 154, 161, 162, 156, 155, 158, 159, 156, 144, 148, 151, + 152, 152, 149, 145, 142, 141, 141, 140, 139, 137, 136, 135, 135, 135, 132, 128, + 125, 125, 126, 124, 123, 120, 119, 119, 119, 120, 119, 118, 117, 114, 118, 119, + 117, 118, 120, 116, 108, 95, 109, 112, 99, 90, 99, 113, 118, 129, 121, 121, + 133, 144, 144, 137, 132, 117, 107, 116, 133, 133, 131, 132, 132, 132, 133, 130, + 117, 104, 101, 109, 119, 115, 123, 95, 100, 116, 113, 96, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 93, 99, 109, + 118, 121, 120, 121, 118, 114, 112, 112, 113, 113, 114, 118, 120, 119, 119, 120, + 124, 128, 132, 131, 134, 137, 141, 145, 147, 146, 145, 149, 156, 151, 147, 149, + 143, 137, 142, 134, 136, 138, 137, 134, 133, 134, 136, 144, 144, 145, 147, 149, + 149, 148, 148, 150, 157, 160, 156, 153, 154, 152, 148, 150, 151, 153, 154, 153, + 150, 147, 145, 143, 143, 142, 141, 140, 139, 139, 138, 135, 133, 129, 128, 127, + 127, 125, 123, 120, 120, 120, 120, 120, 120, 119, 118, 112, 116, 118, 117, 119, + 121, 118, 111, 102, 113, 115, 104, 98, 107, 118, 122, 123, 118, 126, 146, 155, + 144, 127, 119, 111, 112, 130, 136, 115, 101, 107, 116, 110, 111, 112, 115, 119, + 124, 128, 130, 114, 108, 107, 107, 115, 114, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 99, 104, 113, 122, 124, + 122, 119, 117, 114, 112, 111, 113, 115, 117, 116, 116, 115, 115, 116, 119, 122, + 124, 125, 129, 134, 139, 143, 146, 147, 148, 155, 161, 156, 151, 151, 145, 139, + 143, 142, 142, 140, 137, 135, 136, 139, 142, 145, 142, 140, 143, 149, 152, 151, + 150, 148, 155, 160, 159, 157, 156, 154, 150, 154, 154, 154, 153, 152, 150, 148, + 147, 145, 144, 144, 143, 143, 142, 142, 141, 135, 133, 131, 130, 129, 128, 124, + 122, 120, 119, 120, 120, 121, 120, 119, 118, 115, 117, 118, 117, 118, 119, 116, + 110, 108, 115, 114, 107, 105, 115, 122, 123, 125, 121, 133, 154, 154, 131, 111, + 106, 118, 120, 133, 133, 108, 93, 101, 111, 112, 109, 112, 122, 134, 139, 132, + 122, 112, 96, 119, 117, 114, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 101, 100, 106, 115, 121, 122, 120, 116, + 116, 116, 115, 114, 114, 116, 118, 115, 111, 110, 112, 113, 114, 115, 118, 122, + 124, 126, 129, 131, 136, 140, 143, 152, 158, 153, 148, 149, 144, 137, 143, 145, + 143, 140, 138, 137, 138, 140, 143, 144, 141, 139, 140, 144, 148, 149, 150, 147, + 151, 155, 155, 154, 153, 154, 153, 155, 154, 152, 150, 148, 147, 146, 146, 143, + 143, 143, 142, 142, 141, 141, 141, 133, 132, 130, 130, 129, 126, 122, 119, 118, + 117, 118, 118, 119, 118, 118, 117, 120, 119, 118, 117, 116, 114, 109, 105, 109, + 111, 109, 105, 107, 116, 119, 118, 127, 125, 137, 152, 143, 117, 107, 117, 121, + 111, 115, 121, 115, 114, 117, 114, 122, 117, 116, 124, 134, 133, 118, 104, 111, + 99, 122, 129, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 99, 99, 105, 112, 117, 116, 115, 112, 116, 119, + 120, 117, 115, 114, 114, 116, 109, 107, 111, 113, 111, 109, 113, 114, 116, 116, + 116, 117, 122, 130, 136, 143, 151, 149, 145, 148, 145, 139, 145, 137, 136, 135, + 135, 136, 136, 136, 136, 146, 146, 146, 144, 142, 143, 147, 152, 147, 147, 147, + 146, 144, 142, 144, 147, 152, 151, 148, 146, 144, 143, 143, 143, 140, 140, 139, + 139, 138, 137, 137, 137, 131, 129, 128, 127, 126, 123, 119, 115, 115, 115, 116, + 116, 117, 116, 117, 116, 120, 118, 116, 115, 114, 111, 107, 105, 109, 108, 105, + 104, 108, 115, 115, 113, 117, 122, 137, 146, 130, 106, 105, 122, 101, 93, 102, + 119, 125, 129, 127, 114, 110, 108, 109, 113, 119, 117, 109, 100, 110, 115, 114, + 129, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 101, 101, 105, 111, 113, 113, 112, 113, 119, 124, 125, 121, + 116, 112, 112, 113, 104, 100, 106, 107, 103, 101, 104, 105, 107, 108, 108, 109, + 115, 123, 131, 135, 144, 145, 144, 150, 147, 142, 146, 135, 134, 135, 138, 140, + 140, 138, 136, 144, 146, 147, 143, 139, 138, 143, 149, 154, 150, 147, 145, 141, + 138, 139, 143, 149, 148, 146, 144, 143, 142, 142, 141, 139, 139, 138, 137, 135, + 134, 133, 133, 129, 127, 125, 123, 122, 120, 116, 113, 112, 113, 114, 115, 115, + 115, 115, 115, 117, 113, 112, 114, 115, 112, 110, 110, 113, 110, 107, 108, 111, + 115, 113, 112, 111, 123, 138, 139, 118, 93, 88, 98, 90, 96, 118, 136, 135, + 133, 127, 115, 105, 107, 108, 109, 110, 109, 107, 107, 112, 124, 109, 161, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 206, 106, 107, 110, 113, 115, 116, 116, 125, 130, 135, 133, 126, 121, 118, + 118, 115, 103, 98, 106, 108, 102, 99, 102, 104, 108, 111, 110, 108, 111, 117, + 123, 128, 138, 141, 142, 149, 146, 140, 145, 138, 136, 137, 140, 144, 146, 144, + 142, 145, 145, 144, 143, 141, 141, 143, 145, 154, 151, 150, 151, 147, 141, 141, + 146, 148, 148, 147, 146, 145, 144, 144, 143, 141, 141, 139, 137, 135, 133, 132, + 131, 130, 127, 123, 121, 119, 118, 115, 113, 112, 113, 114, 115, 116, 116, 116, + 116, 119, 114, 112, 117, 118, 114, 112, 114, 115, 112, 111, 112, 114, 114, 112, + 112, 119, 131, 140, 137, 121, 106, 98, 96, 115, 120, 136, 145, 138, 134, 128, + 115, 109, 111, 112, 112, 110, 109, 111, 112, 116, 120, 109, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, + 112, 112, 114, 116, 118, 118, 119, 139, 143, 145, 141, 133, 127, 126, 128, 125, + 112, 107, 115, 118, 110, 106, 110, 108, 113, 118, 116, 111, 108, 111, 114, 121, + 133, 138, 140, 147, 143, 136, 141, 137, 134, 133, 136, 141, 144, 144, 143, 153, + 149, 146, 147, 150, 152, 150, 148, 144, 142, 145, 150, 149, 143, 143, 148, 149, + 149, 149, 149, 149, 147, 146, 146, 144, 143, 141, 139, 137, 134, 133, 132, 131, + 128, 123, 120, 118, 117, 115, 114, 114, 113, 114, 115, 117, 117, 117, 117, 124, + 118, 116, 120, 119, 114, 111, 113, 116, 113, 112, 113, 114, 112, 110, 111, 127, + 136, 142, 140, 139, 141, 138, 132, 146, 137, 135, 136, 132, 132, 128, 113, 104, + 106, 108, 110, 111, 112, 114, 117, 119, 160, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 112, 120, + 117, 113, 117, 120, 120, 162, 166, 154, 138, 137, 133, 122, 119, 112, 113, 115, + 115, 112, 111, 112, 114, 108, 109, 110, 113, 115, 115, 113, 112, 118, 130, 141, + 143, 143, 144, 143, 140, 137, 132, 131, 135, 138, 139, 144, 150, 146, 148, 147, + 145, 148, 153, 154, 151, 151, 150, 147, 147, 148, 150, 150, 149, 147, 147, 148, + 148, 148, 147, 145, 144, 143, 138, 133, 133, 136, 138, 136, 133, 127, 126, 124, + 121, 119, 116, 114, 113, 107, 114, 121, 123, 120, 118, 119, 121, 118, 120, 120, + 116, 113, 110, 111, 113, 116, 115, 115, 116, 112, 107, 108, 114, 125, 131, 137, + 138, 137, 138, 142, 147, 137, 140, 140, 137, 135, 131, 122, 113, 106, 100, 109, + 119, 118, 118, 121, 119, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 113, 120, 120, 121, + 126, 133, 134, 173, 172, 154, 136, 136, 133, 127, 126, 120, 119, 117, 119, 121, + 122, 119, 117, 114, 115, 116, 114, 110, 108, 111, 113, 118, 127, 136, 139, 141, + 143, 141, 136, 140, 135, 134, 136, 138, 138, 142, 147, 148, 151, 151, 147, 147, + 150, 151, 150, 153, 151, 149, 148, 149, 150, 149, 149, 150, 149, 148, 146, 146, + 146, 146, 147, 142, 138, 134, 134, 137, 138, 136, 132, 129, 127, 125, 122, 119, + 117, 116, 116, 114, 120, 125, 125, 121, 117, 117, 118, 120, 121, 121, 118, 115, + 113, 114, 116, 117, 115, 116, 116, 112, 108, 109, 116, 127, 130, 132, 131, 129, + 129, 132, 135, 134, 137, 135, 132, 131, 131, 126, 119, 117, 103, 104, 114, 119, + 122, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 113, 119, 121, 125, 131, 138, + 141, 156, 155, 140, 130, 136, 137, 131, 130, 127, 122, 119, 122, 129, 131, 126, + 122, 119, 123, 122, 116, 108, 106, 112, 118, 116, 123, 129, 135, 139, 144, 141, + 133, 142, 136, 135, 137, 137, 136, 139, 144, 149, 154, 155, 150, 146, 147, 148, + 149, 154, 152, 150, 149, 149, 149, 148, 147, 151, 149, 148, 145, 145, 145, 147, + 148, 139, 137, 134, 135, 137, 137, 134, 130, 130, 128, 125, 121, 119, 118, 118, + 119, 120, 123, 127, 126, 122, 118, 118, 120, 120, 121, 122, 120, 117, 116, 117, + 119, 117, 116, 116, 116, 112, 108, 110, 117, 131, 130, 130, 130, 130, 131, 132, + 133, 138, 139, 137, 133, 132, 133, 129, 124, 124, 105, 104, 118, 127, 127, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 113, 114, 115, 117, 120, 126, 132, 135, 136, + 138, 130, 129, 139, 138, 127, 125, 127, 124, 123, 126, 130, 132, 128, 125, 123, + 124, 123, 117, 111, 109, 113, 117, 113, 118, 124, 129, 137, 143, 140, 133, 137, + 133, 132, 135, 136, 135, 137, 141, 147, 154, 157, 151, 146, 146, 148, 149, 152, + 151, 149, 148, 148, 147, 146, 144, 147, 147, 146, 145, 144, 144, 144, 144, 136, + 134, 134, 134, 135, 134, 130, 127, 130, 127, 123, 119, 117, 118, 119, 120, 119, + 122, 125, 124, 122, 120, 122, 123, 119, 119, 120, 119, 118, 118, 119, 119, 117, + 114, 114, 114, 111, 107, 110, 117, 128, 128, 130, 134, 139, 141, 139, 138, 141, + 142, 139, 135, 132, 131, 125, 119, 114, 103, 108, 166, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 119, 114, 110, 111, 114, 119, 124, 127, 138, 139, 131, + 129, 135, 129, 119, 118, 126, 126, 127, 128, 129, 129, 129, 130, 125, 123, 118, + 116, 113, 110, 107, 105, 107, 112, 117, 124, 133, 140, 138, 131, 130, 127, 127, + 131, 133, 133, 136, 140, 143, 151, 155, 151, 146, 146, 149, 150, 149, 148, 147, + 146, 146, 145, 143, 141, 142, 143, 145, 145, 145, 142, 140, 138, 133, 133, 132, + 132, 132, 130, 127, 125, 127, 125, 121, 118, 116, 117, 119, 120, 120, 121, 122, + 121, 120, 119, 120, 121, 119, 118, 117, 116, 117, 117, 117, 117, 115, 112, 111, + 111, 108, 105, 108, 116, 123, 126, 131, 138, 143, 144, 140, 137, 136, 138, 137, + 134, 130, 127, 119, 110, 109, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 123, 112, 106, 107, 112, 117, 122, 127, 134, 131, 120, 116, 120, + 118, 116, 126, 126, 128, 131, 130, 128, 126, 127, 128, 125, 120, 115, 111, 109, + 106, 101, 96, 106, 112, 118, 122, 128, 133, 132, 128, 125, 122, 124, 129, 132, + 132, 135, 140, 140, 147, 151, 149, 146, 148, 149, 149, 146, 146, 145, 145, 145, + 144, 142, 139, 138, 140, 143, 145, 144, 141, 137, 134, 133, 133, 132, 131, 129, + 128, 126, 125, 125, 123, 120, 118, 117, 117, 119, 120, 125, 123, 121, 119, 117, + 116, 117, 117, 118, 116, 114, 114, 115, 116, 116, 115, 113, 110, 110, 109, 106, + 104, 108, 116, 128, 132, 138, 143, 144, 142, 138, 135, 134, 137, 137, 134, 132, + 128, 120, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 129, 114, 104, 105, 111, 114, 120, 125, 121, 121, 113, 111, 115, 113, 117, + 132, 125, 125, 125, 125, 126, 124, 123, 122, 121, 119, 116, 111, 108, 106, 106, + 107, 115, 122, 126, 127, 128, 130, 130, 128, 124, 122, 123, 129, 132, 132, 134, + 139, 141, 145, 148, 146, 146, 149, 147, 144, 144, 145, 144, 145, 146, 145, 144, + 141, 140, 141, 142, 143, 142, 140, 137, 135, 135, 135, 133, 131, 129, 127, 127, + 128, 123, 123, 121, 120, 119, 119, 120, 120, 125, 123, 120, 118, 118, 118, 118, + 118, 119, 117, 114, 114, 115, 116, 115, 113, 114, 110, 110, 109, 106, 104, 109, + 117, 131, 135, 140, 140, 138, 135, 134, 136, 135, 137, 135, 129, 126, 123, 162, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, + 117, 104, 104, 109, 111, 115, 120, 122, 125, 122, 120, 120, 112, 112, 127, 124, + 120, 116, 118, 122, 123, 118, 113, 117, 118, 117, 113, 108, 110, 118, 127, 125, + 134, 138, 136, 133, 133, 132, 130, 125, 123, 125, 130, 134, 132, 134, 139, 142, + 146, 146, 145, 146, 149, 145, 140, 145, 144, 144, 146, 148, 148, 145, 143, 143, + 143, 142, 142, 141, 140, 139, 139, 138, 137, 135, 132, 129, 128, 129, 130, 123, + 123, 123, 122, 122, 121, 121, 121, 122, 120, 117, 117, 119, 121, 123, 123, 120, + 118, 113, 114, 116, 117, 115, 112, 115, 111, 110, 110, 107, 105, 111, 119, 125, + 129, 132, 130, 126, 125, 129, 134, 134, 133, 128, 120, 161, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 138, 119, + 100, 108, 111, 109, 119, 125, 124, 121, 115, 113, 114, 121, 126, 117, 118, 120, + 123, 127, 128, 128, 127, 116, 108, 104, 112, 122, 130, 133, 138, 133, 135, 137, + 138, 137, 136, 135, 135, 129, 127, 124, 126, 132, 137, 139, 139, 140, 143, 146, + 150, 152, 153, 151, 151, 146, 146, 145, 144, 144, 145, 145, 146, 147, 142, 139, + 139, 143, 143, 140, 135, 137, 136, 133, 133, 132, 129, 124, 121, 123, 121, 120, + 119, 119, 119, 122, 123, 123, 120, 117, 118, 122, 124, 120, 116, 114, 111, 112, + 118, 119, 115, 112, 112, 115, 113, 110, 105, 102, 103, 108, 112, 120, 123, 122, + 118, 118, 123, 127, 128, 126, 123, 118, 160, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 139, 120, 102, 111, + 113, 105, 108, 115, 120, 122, 123, 120, 118, 117, 117, 117, 122, 127, 130, 129, + 128, 131, 132, 130, 127, 129, 137, 143, 142, 139, 139, 138, 137, 136, 135, 135, + 135, 135, 135, 135, 131, 126, 126, 129, 135, 138, 140, 140, 142, 145, 148, 150, + 150, 150, 149, 148, 147, 146, 145, 144, 144, 145, 145, 147, 143, 140, 140, 143, + 144, 141, 137, 137, 137, 136, 136, 135, 132, 126, 121, 122, 121, 121, 120, 121, + 122, 124, 125, 126, 122, 118, 118, 122, 124, 122, 119, 115, 111, 111, 115, 116, + 112, 110, 110, 113, 111, 108, 104, 103, 104, 106, 108, 86, 97, 105, 107, 106, + 106, 104, 100, 103, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 120, 106, 111, 114, 104, + 100, 100, 105, 109, 112, 111, 109, 107, 106, 115, 122, 130, 131, 129, 127, 130, + 135, 135, 134, 138, 144, 146, 142, 138, 139, 140, 139, 136, 133, 132, 132, 133, + 134, 137, 133, 127, 125, 127, 132, 137, 140, 140, 142, 144, 146, 147, 147, 147, + 146, 149, 148, 146, 145, 144, 143, 143, 143, 146, 143, 140, 141, 143, 144, 141, + 138, 137, 138, 139, 140, 138, 133, 124, 118, 117, 118, 120, 121, 123, 124, 125, + 125, 128, 123, 119, 119, 122, 123, 122, 120, 118, 113, 111, 114, 114, 111, 109, + 110, 111, 108, 105, 103, 102, 102, 101, 100, 91, 105, 118, 121, 119, 117, 114, + 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 110, 108, 109, 103, 96, 92, + 93, 92, 92, 95, 100, 105, 109, 111, 116, 123, 127, 127, 128, 130, 133, 130, + 128, 130, 133, 134, 133, 136, 142, 137, 136, 134, 133, 132, 132, 132, 133, 133, + 131, 127, 125, 126, 131, 135, 137, 141, 142, 144, 145, 145, 145, 146, 145, 148, + 147, 145, 143, 141, 140, 140, 139, 143, 141, 139, 140, 141, 141, 140, 137, 137, + 138, 140, 140, 136, 128, 117, 110, 111, 113, 117, 120, 122, 124, 123, 122, 125, + 123, 121, 121, 123, 123, 120, 118, 121, 115, 112, 113, 113, 110, 108, 109, 109, + 106, 101, 99, 98, 96, 93, 90, 103, 113, 120, 119, 115, 116, 164, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 127, 113, 100, 100, 99, 93, 92, 89, 88, + 89, 95, 104, 114, 120, 113, 113, 115, 120, 128, 133, 133, 131, 128, 125, 127, + 131, 132, 131, 134, 140, 131, 132, 133, 134, 134, 133, 132, 131, 126, 126, 126, + 128, 128, 130, 133, 136, 142, 143, 144, 145, 145, 145, 146, 146, 147, 145, 143, + 141, 139, 138, 137, 137, 139, 138, 137, 137, 138, 138, 137, 136, 137, 137, 137, + 135, 130, 122, 110, 103, 106, 108, 113, 117, 120, 121, 120, 120, 120, 121, 122, + 123, 123, 121, 117, 114, 118, 112, 109, 110, 110, 106, 105, 106, 107, 103, 98, + 94, 91, 89, 87, 86, 106, 113, 115, 111, 107, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 213, 112, 91, 92, 97, 90, 86, 87, 88, 95, 104, + 112, 119, 121, 120, 116, 113, 119, 129, 135, 136, 132, 126, 125, 128, 134, 136, + 131, 128, 128, 128, 129, 132, 133, 134, 133, 131, 130, 123, 126, 129, 130, 129, + 130, 133, 135, 141, 141, 143, 144, 144, 145, 147, 147, 146, 144, 142, 140, 138, + 137, 137, 136, 136, 136, 136, 136, 136, 136, 136, 136, 137, 136, 134, 131, 126, + 118, 109, 103, 106, 109, 113, 117, 121, 121, 121, 120, 120, 121, 123, 124, 122, + 119, 116, 114, 112, 107, 105, 107, 107, 103, 100, 101, 104, 101, 96, 89, 84, + 84, 88, 91, 109, 115, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 105, 85, 92, 103, 93, 85, 85, 89, 96, 105, 114, 118, + 120, 125, 121, 118, 119, 125, 130, 133, 132, 129, 124, 124, 130, 133, 130, 125, + 125, 130, 131, 131, 131, 131, 130, 130, 129, 128, 130, 131, 131, 129, 130, 134, + 137, 139, 140, 140, 141, 143, 145, 146, 147, 146, 145, 143, 141, 140, 139, 139, + 139, 135, 136, 137, 136, 136, 136, 136, 137, 138, 135, 131, 128, 124, 120, 115, + 111, 112, 114, 116, 120, 123, 124, 124, 125, 124, 124, 123, 122, 120, 118, 118, + 118, 110, 106, 105, 108, 108, 104, 100, 100, 99, 98, 94, 87, 81, 84, 94, + 104, 106, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 99, 85, 99, 112, 99, 93, 91, 90, 94, 104, 114, 121, 124, 127, + 125, 122, 119, 120, 123, 128, 132, 138, 127, 121, 123, 129, 132, 132, 134, 135, + 133, 131, 128, 127, 127, 128, 130, 135, 136, 134, 131, 128, 129, 134, 139, 137, + 137, 138, 139, 141, 143, 145, 146, 147, 146, 144, 143, 142, 141, 141, 141, 136, + 137, 138, 137, 136, 136, 137, 139, 138, 135, 130, 127, 125, 123, 121, 119, 117, + 118, 121, 124, 126, 127, 129, 129, 129, 127, 123, 119, 117, 117, 120, 123, 111, + 108, 108, 112, 112, 107, 103, 103, 96, 97, 94, 85, 80, 85, 101, 115, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 82, 86, 104, 110, 101, 96, 82, 91, 104, 101, 111, 128, 126, 129, 124, 120, + 122, 127, 131, 132, 129, 132, 132, 133, 134, 132, 129, 124, 121, 129, 128, 127, + 127, 128, 130, 132, 134, 138, 137, 137, 136, 136, 136, 136, 137, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 142, 141, 140, 138, 137, 136, 135, 134, + 136, 138, 140, 140, 139, 135, 137, 135, 132, 127, 122, 119, 119, 121, 121, 123, + 125, 125, 126, 128, 128, 121, 122, 123, 124, 123, 122, 120, 119, 115, 113, 110, + 109, 107, 105, 101, 98, 98, 96, 89, 83, 89, 103, 111, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 87, + 105, 109, 100, 103, 90, 87, 96, 102, 115, 128, 133, 129, 124, 118, 120, 125, + 130, 130, 129, 126, 127, 129, 129, 128, 126, 122, 120, 129, 129, 128, 128, 128, + 129, 131, 131, 133, 134, 134, 133, 133, 134, 135, 135, 141, 142, 143, 144, 145, + 145, 144, 144, 144, 144, 144, 143, 142, 141, 139, 138, 134, 133, 132, 134, 136, + 137, 137, 137, 138, 138, 136, 133, 128, 125, 123, 122, 123, 124, 126, 126, 127, + 128, 129, 129, 126, 126, 127, 127, 126, 124, 122, 121, 115, 113, 110, 108, 107, + 104, 100, 97, 95, 92, 85, 82, 90, 104, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 109, 114, + 107, 109, 101, 88, 92, 109, 119, 123, 132, 130, 125, 120, 122, 127, 132, 134, + 135, 128, 130, 131, 132, 132, 130, 127, 125, 130, 129, 128, 127, 127, 127, 127, + 128, 135, 135, 135, 135, 136, 136, 137, 138, 137, 139, 142, 144, 146, 145, 144, + 143, 145, 145, 145, 144, 143, 141, 139, 138, 134, 133, 132, 133, 136, 137, 136, + 136, 140, 141, 138, 133, 128, 126, 126, 127, 126, 126, 127, 128, 128, 129, 129, + 130, 128, 129, 129, 129, 127, 125, 122, 120, 116, 114, 111, 109, 107, 104, 100, + 96, 93, 88, 83, 84, 95, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 103, 115, 118, 109, + 108, 92, 91, 114, 121, 115, 123, 125, 121, 118, 120, 126, 133, 138, 140, 135, + 136, 137, 137, 136, 135, 131, 130, 129, 128, 127, 126, 125, 124, 123, 123, 131, + 132, 132, 132, 133, 135, 135, 136, 132, 135, 139, 142, 144, 144, 142, 141, 143, + 143, 143, 143, 141, 140, 138, 137, 136, 135, 134, 135, 137, 138, 138, 138, 140, + 140, 137, 133, 128, 127, 127, 129, 127, 127, 128, 128, 128, 128, 129, 129, 126, + 126, 126, 125, 123, 120, 117, 115, 116, 113, 110, 107, 105, 102, 97, 94, 91, + 85, 82, 88, 152, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 88, 108, 125, 112, 111, 91, + 85, 105, 113, 112, 123, 115, 113, 112, 116, 122, 129, 135, 140, 138, 138, 138, + 138, 136, 134, 131, 130, 128, 127, 126, 125, 123, 122, 120, 119, 121, 122, 122, + 123, 124, 125, 127, 128, 129, 131, 135, 138, 140, 140, 139, 139, 141, 141, 141, + 140, 139, 137, 136, 135, 136, 135, 134, 135, 137, 138, 137, 136, 139, 139, 136, + 132, 127, 127, 128, 130, 127, 127, 127, 127, 127, 127, 127, 127, 124, 124, 124, + 122, 120, 117, 114, 112, 114, 112, 108, 105, 102, 98, 94, 90, 86, 82, 82, + 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 79, 106, 131, 120, 114, 95, 81, 87, + 99, 112, 123, 113, 113, 114, 117, 122, 129, 134, 138, 140, 140, 140, 139, 139, + 137, 135, 134, 128, 128, 127, 126, 124, 122, 120, 120, 121, 121, 121, 121, 122, + 123, 124, 125, 127, 129, 132, 135, 136, 137, 136, 137, 140, 140, 140, 139, 138, + 136, 135, 134, 134, 133, 132, 132, 134, 135, 134, 133, 137, 138, 136, 133, 129, + 128, 129, 130, 128, 129, 128, 127, 127, 126, 126, 126, 124, 124, 124, 123, 121, + 118, 115, 113, 112, 110, 106, 102, 99, 95, 90, 86, 80, 79, 140, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 81, 105, 128, 128, 121, 111, 92, 77, 86, 101, + 105, 112, 112, 115, 118, 120, 124, 127, 130, 135, 137, 137, 138, 139, 139, 138, + 139, 129, 130, 130, 129, 127, 125, 123, 123, 125, 127, 126, 126, 125, 126, 127, + 127, 129, 130, 131, 133, 134, 135, 135, 136, 140, 140, 140, 139, 138, 137, 135, + 134, 134, 133, 132, 132, 134, 134, 133, 133, 137, 138, 137, 136, 132, 131, 131, + 132, 131, 131, 130, 128, 128, 127, 127, 126, 124, 125, 125, 124, 122, 119, 117, + 115, 111, 109, 104, 101, 97, 93, 87, 82, 79, 138, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 83, 101, 122, 133, 127, 128, 109, 77, 74, 87, 79, 102, + 105, 107, 109, 110, 112, 114, 116, 125, 126, 129, 131, 133, 135, 136, 137, 133, + 133, 133, 133, 131, 129, 126, 126, 125, 126, 125, 124, 124, 124, 125, 124, 131, + 131, 131, 132, 133, 134, 135, 136, 141, 141, 141, 140, 139, 138, 136, 135, 137, + 135, 134, 135, 136, 137, 136, 135, 137, 139, 139, 138, 135, 133, 133, 133, 133, + 132, 131, 130, 129, 128, 128, 127, 121, 122, 122, 121, 120, 117, 115, 114, 110, + 107, 103, 99, 96, 91, 85, 81, 138, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 74, 93, 116, 138, 137, 130, 110, 85, 71, 71, 80, 76, 81, 89, + 93, 95, 96, 99, 102, 103, 112, 114, 117, 125, 123, 117, 121, 126, 126, 125, + 126, 129, 128, 125, 123, 131, 123, 121, 126, 124, 115, 118, 128, 124, 125, 127, + 130, 133, 135, 135, 136, 141, 141, 142, 142, 141, 140, 139, 137, 133, 133, 133, + 134, 134, 136, 137, 136, 140, 137, 134, 131, 130, 131, 133, 135, 135, 134, 131, + 129, 129, 129, 127, 126, 127, 124, 120, 117, 117, 116, 115, 113, 115, 113, 105, + 97, 96, 99, 95, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 76, 91, 110, 133, 130, 121, 102, 81, 66, 63, 66, 92, 90, 88, 84, 83, + 88, 94, 101, 100, 105, 101, 97, 102, 99, 93, 99, 112, 114, 116, 111, 106, + 101, 101, 104, 118, 111, 112, 118, 118, 114, 119, 130, 123, 126, 128, 127, 125, + 128, 135, 142, 141, 142, 142, 143, 142, 140, 139, 138, 134, 134, 135, 135, 135, + 136, 137, 138, 140, 138, 136, 134, 133, 134, 135, 135, 136, 133, 130, 128, 128, + 127, 126, 124, 125, 122, 118, 116, 116, 115, 114, 112, 111, 110, 104, 95, 92, + 93, 89, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, + 97, 131, 129, 120, 104, 84, 68, 62, 61, 75, 79, 84, 90, 92, 94, 95, + 97, 103, 106, 99, 93, 99, 100, 101, 109, 86, 93, 97, 92, 81, 78, 84, + 92, 70, 67, 68, 74, 76, 76, 84, 95, 117, 123, 128, 126, 122, 123, 132, + 140, 140, 141, 142, 142, 141, 139, 138, 137, 135, 135, 135, 135, 135, 136, 137, + 138, 139, 139, 138, 137, 137, 136, 136, 136, 135, 132, 129, 127, 126, 125, 123, + 121, 125, 122, 119, 118, 117, 117, 115, 113, 108, 108, 104, 95, 88, 142, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, 85, 124, + 126, 125, 110, 86, 69, 63, 62, 58, 62, 71, 80, 84, 86, 86, 87, 93, + 106, 111, 115, 123, 117, 107, 108, 119, 120, 116, 102, 83, 72, 70, 75, 84, + 82, 83, 88, 91, 93, 101, 111, 112, 118, 125, 126, 123, 122, 126, 130, 138, + 139, 140, 140, 139, 137, 137, 135, 134, 133, 134, 133, 134, 134, 135, 135, 137, + 138, 138, 139, 138, 137, 135, 134, 133, 131, 127, 125, 124, 123, 121, 119, 125, + 123, 120, 119, 119, 118, 116, 114, 105, 106, 104, 95, 86, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 79, 103, 115, 123, + 109, 82, 61, 59, 64, 68, 63, 57, 53, 54, 60, 67, 73, 71, 92, 108, + 118, 122, 103, 76, 65, 60, 63, 64, 66, 69, 73, 79, 85, 87, 88, 89, + 94, 97, 102, 110, 118, 120, 119, 120, 119, 119, 122, 125, 128, 136, 137, 138, + 138, 137, 135, 134, 133, 132, 131, 132, 131, 131, 131, 132, 132, 134, 135, 137, + 137, 137, 136, 134, 132, 132, 129, 126, 124, 123, 122, 120, 118, 123, 121, 119, + 118, 117, 116, 113, 111, 99, 99, 97, 90, 140, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 78, 86, 105, 121, 112, 84, + 62, 62, 70, 71, 66, 61, 59, 59, 61, 61, 61, 65, 75, 76, 76, 81, + 72, 60, 61, 89, 86, 83, 82, 84, 85, 83, 83, 97, 100, 105, 109, 114, + 120, 128, 133, 134, 128, 118, 113, 114, 121, 129, 135, 137, 136, 137, 137, 136, + 135, 134, 132, 131, 130, 130, 129, 129, 129, 130, 130, 132, 133, 134, 135, 135, + 134, 133, 132, 130, 127, 124, 123, 123, 123, 121, 119, 120, 118, 116, 115, 114, + 112, 108, 105, 95, 92, 89, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 82, 79, 79, 100, 119, 115, 91, 73, 69, + 76, 67, 68, 73, 79, 82, 78, 69, 63, 72, 75, 64, 58, 66, 72, 78, + 90, 89, 88, 89, 93, 99, 103, 103, 102, 101, 107, 111, 115, 118, 124, 129, + 132, 138, 135, 128, 121, 118, 122, 130, 138, 138, 138, 138, 139, 138, 136, 135, + 134, 131, 130, 130, 130, 129, 129, 129, 130, 133, 133, 134, 134, 134, 134, 133, + 133, 128, 126, 123, 123, 123, 124, 122, 121, 122, 120, 118, 116, 114, 111, 108, + 104, 96, 89, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 197, 81, 75, 94, 113, 113, 96, 79, 74, 76, 80, + 77, 75, 76, 78, 78, 72, 69, 72, 80, 81, 84, 92, 92, 89, 94, 111, + 112, 112, 113, 115, 114, 111, 110, 118, 123, 128, 128, 130, 134, 136, 138, 132, + 138, 141, 136, 128, 124, 128, 134, 140, 139, 140, 140, 139, 138, 137, 135, 132, + 131, 131, 130, 130, 130, 130, 130, 134, 134, 134, 134, 134, 134, 134, 134, 127, + 125, 123, 123, 124, 124, 124, 123, 126, 124, 122, 120, 118, 114, 110, 106, 100, + 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 84, 89, 87, 96, 110, 108, 93, 79, 75, 81, 81, 83, + 86, 88, 88, 83, 80, 79, 76, 76, 81, 85, 90, 100, 111, 118, 112, 108, + 109, 117, 124, 128, 128, 120, 122, 126, 128, 130, 132, 134, 139, 136, 140, 144, + 141, 132, 122, 124, 132, 134, 136, 139, 139, 138, 136, 136, 136, 131, 133, 135, + 133, 130, 128, 129, 131, 135, 134, 132, 130, 129, 129, 130, 131, 130, 123, 117, + 117, 120, 123, 125, 127, 121, 126, 124, 116, 112, 112, 109, 103, 94, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 87, 84, 81, 88, 102, 104, 94, 82, 79, 84, 83, 84, 86, 87, + 86, 84, 80, 83, 82, 83, 88, 92, 94, 101, 110, 115, 116, 118, 120, 121, + 124, 127, 129, 124, 125, 126, 127, 128, 131, 137, 140, 137, 140, 143, 143, 136, + 127, 127, 133, 135, 137, 140, 140, 138, 136, 135, 135, 126, 128, 131, 131, 129, + 129, 131, 133, 131, 131, 131, 131, 131, 132, 132, 133, 123, 121, 122, 126, 129, + 128, 124, 122, 123, 125, 122, 115, 111, 110, 106, 99, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 89, 83, 78, 80, 93, 100, 95, 88, 87, 86, 85, 85, 85, 85, 85, 83, + 81, 81, 80, 84, 90, 94, 95, 100, 107, 113, 120, 128, 130, 127, 126, 128, + 129, 128, 127, 128, 127, 128, 132, 138, 142, 140, 140, 142, 144, 139, 133, 130, + 133, 136, 138, 140, 140, 137, 134, 133, 133, 125, 127, 130, 130, 129, 130, 131, + 133, 131, 131, 132, 133, 132, 131, 129, 128, 124, 125, 127, 129, 130, 128, 122, + 117, 124, 124, 120, 115, 112, 110, 104, 149, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 86, + 79, 78, 88, 95, 97, 94, 94, 87, 86, 87, 86, 84, 84, 82, 82, 78, + 77, 83, 90, 94, 96, 102, 111, 115, 121, 127, 130, 130, 129, 130, 130, 130, + 130, 131, 132, 131, 134, 138, 141, 143, 140, 140, 142, 140, 134, 129, 128, 135, + 137, 139, 138, 135, 131, 130, 129, 128, 128, 129, 129, 128, 128, 128, 129, 132, + 133, 134, 133, 131, 127, 122, 120, 130, 131, 129, 124, 122, 122, 120, 117, 120, + 119, 116, 115, 113, 108, 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 87, 81, 77, + 83, 89, 93, 95, 95, 91, 92, 93, 92, 89, 89, 88, 89, 88, 87, 88, + 94, 97, 100, 108, 117, 120, 120, 121, 124, 129, 132, 132, 130, 129, 132, 135, + 138, 137, 137, 138, 139, 145, 140, 138, 139, 138, 131, 125, 123, 132, 134, 136, + 135, 131, 127, 126, 125, 124, 123, 124, 125, 125, 126, 126, 125, 130, 131, 132, + 132, 129, 124, 119, 116, 124, 128, 127, 122, 119, 121, 120, 115, 118, 116, 113, + 112, 107, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 82, 78, 80, 84, + 87, 91, 93, 97, 99, 102, 102, 98, 97, 98, 99, 99, 95, 95, 99, 100, + 102, 107, 115, 124, 121, 118, 122, 128, 133, 131, 130, 130, 135, 139, 141, 140, + 138, 138, 138, 144, 139, 136, 137, 135, 129, 125, 125, 129, 131, 133, 132, 129, + 125, 124, 123, 117, 116, 118, 120, 124, 127, 127, 127, 126, 127, 129, 130, 129, + 126, 123, 120, 109, 119, 126, 124, 122, 124, 120, 112, 115, 111, 107, 103, 94, + 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 82, 82, 81, 82, 85, 92, + 94, 98, 102, 107, 108, 104, 103, 104, 107, 102, 102, 104, 108, 109, 107, 111, + 116, 124, 123, 123, 125, 127, 128, 129, 130, 134, 137, 141, 142, 141, 139, 139, + 140, 141, 137, 135, 135, 132, 127, 127, 131, 127, 130, 132, 131, 128, 125, 124, + 123, 120, 119, 120, 123, 128, 131, 131, 130, 127, 128, 129, 130, 129, 127, 125, + 123, 108, 120, 126, 122, 119, 122, 119, 111, 111, 106, 100, 95, 142, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 78, 84, 87, 85, 84, 88, 94, 98, 95, + 100, 108, 109, 107, 103, 105, 108, 105, 106, 112, 119, 121, 120, 122, 126, 123, + 128, 131, 131, 128, 126, 128, 130, 136, 140, 140, 140, 138, 139, 140, 142, 139, + 135, 134, 134, 131, 127, 130, 137, 127, 130, 132, 132, 129, 126, 125, 125, 129, + 127, 127, 129, 133, 136, 134, 132, 132, 133, 132, 132, 130, 127, 124, 123, 120, + 128, 127, 116, 110, 116, 117, 114, 108, 103, 96, 145, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 84, 83, 86, 89, 88, 89, 94, 101, 100, 102, 106, + 111, 113, 112, 106, 103, 99, 103, 110, 117, 122, 125, 126, 126, 128, 131, 132, + 133, 132, 131, 132, 135, 133, 138, 140, 142, 140, 138, 137, 137, 138, 136, 136, + 135, 134, 133, 132, 133, 133, 132, 130, 129, 130, 128, 123, 120, 124, 123, 124, + 127, 131, 133, 131, 129, 130, 129, 130, 131, 132, 132, 132, 130, 122, 129, 130, + 124, 120, 118, 112, 104, 109, 99, 142, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 83, 82, 85, 84, 86, 93, 102, 95, 98, 103, 108, 111, + 110, 107, 104, 98, 101, 106, 112, 116, 120, 123, 123, 128, 130, 132, 133, 132, + 132, 133, 135, 135, 138, 141, 142, 140, 138, 137, 137, 137, 137, 136, 135, 134, + 133, 133, 133, 136, 134, 131, 129, 129, 127, 124, 121, 127, 126, 127, 129, 133, + 133, 131, 129, 130, 130, 129, 129, 130, 129, 127, 125, 127, 126, 120, 114, 114, + 116, 112, 104, 92, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 82, 80, 81, 80, 82, 92, 102, 97, 99, 103, 108, 109, 109, 106, + 104, 100, 101, 104, 109, 113, 117, 121, 122, 127, 129, 131, 133, 131, 131, 132, + 134, 136, 139, 141, 141, 139, 137, 136, 136, 137, 136, 136, 135, 134, 134, 133, + 134, 137, 135, 131, 128, 127, 127, 126, 125, 130, 130, 130, 132, 134, 135, 133, + 130, 136, 135, 133, 132, 132, 130, 127, 125, 126, 122, 115, 111, 113, 114, 106, + 97, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 196, 80, 81, 79, 80, 88, 96, 102, 104, 107, 110, 109, 108, 108, 107, 105, + 105, 106, 108, 113, 117, 121, 124, 125, 128, 130, 130, 129, 130, 132, 133, 136, + 139, 140, 139, 137, 134, 134, 134, 135, 135, 134, 134, 133, 133, 132, 134, 136, + 132, 127, 125, 125, 126, 128, 128, 130, 131, 133, 135, 136, 137, 136, 135, 136, + 135, 133, 132, 132, 129, 127, 124, 119, 119, 117, 115, 112, 105, 93, 141, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, + 83, 81, 80, 84, 91, 100, 101, 105, 108, 108, 109, 112, 112, 109, 108, 108, + 109, 112, 117, 121, 123, 123, 126, 128, 129, 128, 129, 130, 132, 135, 137, 138, + 137, 134, 132, 132, 133, 134, 134, 134, 133, 133, 133, 133, 133, 132, 129, 124, + 122, 123, 126, 130, 131, 128, 130, 133, 136, 138, 138, 139, 139, 129, 127, 126, + 126, 126, 125, 122, 119, 115, 116, 114, 110, 100, 89, 83, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 82, 86, 84, + 81, 84, 88, 92, 96, 100, 104, 106, 109, 115, 118, 110, 109, 109, 110, 112, + 115, 119, 120, 122, 125, 127, 128, 127, 128, 129, 132, 135, 136, 137, 136, 134, + 132, 133, 134, 134, 133, 133, 133, 133, 133, 133, 134, 130, 128, 123, 122, 123, + 128, 130, 132, 127, 130, 134, 136, 137, 137, 138, 139, 128, 127, 126, 124, 125, + 124, 121, 119, 114, 110, 105, 96, 84, 137, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 86, 84, 81, 84, + 91, 93, 97, 102, 105, 105, 108, 114, 118, 113, 113, 113, 115, 117, 118, 120, + 121, 121, 124, 127, 128, 128, 129, 129, 131, 136, 137, 138, 137, 135, 135, 136, + 138, 136, 136, 136, 136, 136, 136, 136, 137, 133, 130, 127, 126, 127, 129, 130, + 130, 129, 132, 136, 136, 133, 132, 132, 135, 134, 132, 130, 128, 128, 125, 122, + 119, 111, 103, 95, 90, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 83, 81, 87, 93, 101, + 105, 108, 108, 106, 107, 112, 117, 116, 117, 119, 120, 121, 122, 123, 123, 121, + 123, 126, 128, 128, 128, 129, 130, 137, 138, 139, 138, 137, 137, 139, 142, 138, + 138, 138, 138, 138, 139, 140, 140, 137, 134, 131, 129, 129, 130, 129, 129, 131, + 134, 137, 136, 132, 129, 128, 129, 134, 132, 129, 127, 125, 121, 117, 114, 107, + 99, 92, 94, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 84, 84, 85, 85, 85, 101, 101, 102, + 102, 102, 106, 110, 115, 119, 121, 124, 123, 121, 120, 122, 125, 123, 123, 124, + 124, 124, 126, 127, 127, 131, 134, 136, 138, 143, 143, 139, 132, 134, 138, 139, + 136, 137, 140, 141, 139, 137, 134, 131, 129, 129, 130, 133, 135, 134, 132, 130, + 132, 136, 136, 133, 129, 133, 128, 124, 123, 124, 121, 111, 104, 93, 90, 87, + 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 86, 86, 86, 84, 99, 99, 101, 102, 102, + 106, 111, 116, 118, 121, 123, 123, 122, 121, 122, 124, 121, 122, 123, 125, 127, + 129, 131, 132, 136, 129, 125, 130, 138, 140, 137, 133, 138, 141, 141, 138, 138, + 141, 141, 138, 136, 134, 132, 130, 130, 131, 133, 134, 132, 132, 132, 133, 136, + 136, 134, 132, 127, 125, 122, 118, 114, 107, 102, 97, 94, 94, 149, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 199, 85, 84, 81, 97, 98, 100, 102, 104, 109, 115, + 118, 118, 121, 123, 124, 122, 120, 119, 120, 119, 121, 123, 126, 130, 133, 136, + 137, 132, 117, 110, 120, 135, 139, 141, 143, 140, 143, 143, 140, 139, 142, 141, + 137, 134, 133, 132, 131, 131, 131, 132, 133, 126, 129, 132, 133, 133, 132, 133, + 133, 126, 125, 119, 112, 101, 94, 93, 93, 97, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 85, 81, 78, 94, 95, 98, 102, 107, 112, 117, 120, 122, + 123, 124, 124, 122, 119, 117, 116, 119, 120, 124, 127, 131, 135, 137, 138, 133, + 118, 112, 122, 133, 135, 139, 146, 141, 144, 144, 141, 139, 141, 139, 135, 130, + 130, 130, 129, 129, 128, 129, 129, 121, 125, 130, 130, 127, 125, 127, 129, 125, + 119, 110, 100, 93, 92, 93, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 83, 78, 75, 90, 91, 93, 99, 106, 111, 116, 119, 125, 126, 124, + 123, 121, 118, 116, 113, 120, 123, 125, 128, 131, 134, 134, 134, 139, 132, 129, + 132, 133, 129, 132, 139, 139, 142, 142, 139, 137, 138, 135, 130, 126, 126, 126, + 125, 126, 126, 124, 124, 122, 125, 128, 127, 124, 121, 121, 123, 117, 106, 92, + 85, 87, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 78, 75, 86, 86, 88, 96, 104, 110, 115, 116, 126, 125, 122, 121, 119, + 119, 116, 114, 122, 125, 127, 131, 132, 133, 134, 133, 131, 134, 136, 136, 135, + 135, 138, 141, 136, 140, 141, 139, 136, 136, 132, 127, 125, 124, 122, 122, 122, + 122, 122, 122, 125, 126, 127, 124, 121, 117, 115, 113, 101, 90, 79, 76, 141, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 79, 88, 87, 90, 98, 107, 114, 118, 118, 125, 122, 118, 118, 118, 121, 120, + 119, 123, 126, 129, 133, 134, 136, 136, 135, 126, 134, 136, 132, 135, 143, 144, + 139, 134, 138, 140, 138, 136, 136, 132, 126, 126, 123, 121, 119, 120, 121, 123, + 124, 126, 124, 122, 119, 116, 111, 104, 101, 90, 87, 84, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 95, + 94, 97, 106, 114, 121, 123, 122, 122, 119, 115, 115, 119, 123, 125, 125, 124, + 127, 130, 134, 138, 138, 138, 137, 138, 144, 140, 129, 131, 142, 138, 123, 133, + 138, 140, 138, 136, 136, 132, 127, 127, 125, 121, 120, 119, 121, 124, 126, 124, + 120, 115, 112, 109, 104, 97, 91, 88, 146, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 90, 100, + 108, 112, 116, 121, 126, 121, 119, 115, 115, 117, 122, 125, 127, 134, 133, 134, + 135, 137, 138, 139, 139, 139, 136, 133, 135, 137, 138, 136, 133, 136, 134, 133, + 134, 133, 132, 129, 127, 123, 119, 114, 116, 122, 126, 125, 122, 128, 122, 112, + 103, 96, 93, 93, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 94, 103, 110, + 114, 117, 119, 121, 119, 115, 114, 116, 120, 123, 125, 128, 129, 131, 132, 134, + 135, 135, 134, 138, 135, 132, 135, 137, 139, 136, 134, 137, 135, 133, 131, 127, + 123, 116, 113, 116, 123, 127, 122, 113, 112, 120, 130, 120, 113, 103, 94, 92, + 96, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 91, 102, 111, 117, 119, + 120, 123, 121, 120, 119, 119, 121, 124, 125, 125, 127, 130, 134, 135, 136, 134, + 135, 134, 132, 129, 131, 134, 136, 134, 132, 130, 130, 128, 129, 126, 123, 116, + 113, 117, 117, 116, 118, 119, 120, 118, 115, 103, 99, 95, 93, 96, 154, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 107, 116, 120, 120, 119, + 119, 119, 118, 116, 117, 119, 121, 122, 124, 128, 132, 135, 135, 133, 133, 128, + 127, 125, 126, 130, 132, 129, 127, 124, 123, 121, 121, 121, 120, 117, 116, 120, + 115, 111, 113, 117, 113, 101, 89, 90, 93, 98, 154, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 103, 109, 112, 110, 113, 114, + 113, 110, 110, 111, 113, 114, 117, 120, 124, 127, 127, 125, 125, 126, 124, 122, + 124, 127, 128, 126, 124, 126, 122, 116, 111, 109, 108, 107, 107, 113, 116, 116, + 106, 91, 82, 82, 86, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 103, 108, 111, 114, 114, 111, + 109, 111, 113, 113, 116, 118, 121, 122, 123, 122, 121, 126, 123, 122, 122, 125, + 126, 124, 121, 124, 119, 113, 109, 107, 108, 108, 108, 104, 100, 93, 86, 83, + 87, 95, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 202, 104, 108, 114, 114, 111, 108, 110, + 112, 115, 117, 117, 119, 121, 120, 119, 121, 124, 121, 118, 118, 120, 120, 118, + 115, 115, 112, 108, 106, 106, 106, 104, 103, 99, 90, 83, 88, 102, 113, 162, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 102, 107, 108, 104, 102, 103, 107, 113, + 113, 113, 114, 114, 116, 115, 116, 120, 118, 115, 114, 115, 116, 112, 109, 111, + 110, 106, 102, 97, 91, 84, 79, 93, 103, 114, 118, 162, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 110, 111, 111, 108, 108, 110, + 115, 114, 111, 110, 116, 113, 118, 119, 116, 111, 108, 106, 104, 105, 89, 97, + 85, 89, 104, 92, 104, 111, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, + 103, 102, 106, 114, 115, 115, 112, 107, 103, 99, 94, 84, 86, 93, 93, 156, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 10, 11, 41, 64, 70, 78, 75, 69, 69, 73, 80, 84, 76, 70, 70, 71, + 71, 70, 70, 71, 65, 63, 61, 66, 130, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 4, 24, 43, 48, + 72, 83, 77, 78, 77, 72, 71, 68, 79, 90, 91, 89, 87, 84, 83, 87, + 87, 86, 81, 74, 69, 69, 71, 68, 76, 84, 92, 105, 112, 151, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 178, 47, 74, 77, 56, 33, 65, 84, 84, + 67, 63, 59, 52, 49, 28, 37, 48, 57, 68, 83, 95, 100, 91, 90, 88, + 80, 70, 64, 64, 66, 71, 81, 92, 103, 115, 117, 99, 81, 101, 212, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 182, 31, 32, 27, 33, 59, 83, 86, 73, 57, 68, 90, 90, 71, 65, + 60, 48, 41, 65, 64, 55, 49, 54, 71, 91, 99, 79, 79, 75, 66, 55, + 49, 49, 52, 71, 81, 93, 103, 112, 110, 86, 66, 57, 58, 58, 59, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 43, + 48, 39, 36, 48, 79, 97, 96, 82, 78, 71, 83, 87, 73, 57, 48, 50, + 57, 48, 48, 50, 54, 62, 71, 81, 86, 76, 66, 67, 75, 77, 68, 62, + 64, 75, 82, 88, 90, 89, 80, 58, 41, 42, 47, 48, 50, 51, 53, 52, + 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, 39, 37, 37, 44, + 51, 64, 80, 87, 80, 70, 69, 77, 70, 53, 38, 34, 39, 42, 41, 62, + 66, 71, 74, 75, 71, 69, 65, 84, 80, 80, 82, 80, 70, 61, 56, 54, + 58, 56, 45, 38, 39, 44, 48, 38, 41, 40, 39, 40, 41, 41, 43, 35, + 83, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 183, 46, 52, 55, 55, 54, 51, 66, 80, + 82, 74, 66, 57, 57, 54, 57, 51, 48, 50, 54, 50, 43, 47, 52, 59, + 62, 63, 57, 51, 44, 50, 52, 55, 55, 54, 52, 44, 35, 36, 40, 38, + 29, 23, 27, 36, 47, 40, 41, 35, 34, 36, 38, 39, 41, 36, 31, 25, + 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 43, 52, 53, 54, 53, 53, 53, 54, 49, 67, 79, 72, 61, + 53, 45, 40, 39, 54, 67, 68, 65, 61, 57, 52, 41, 44, 48, 50, 53, + 52, 52, 50, 35, 42, 47, 42, 44, 47, 45, 33, 45, 42, 41, 37, 39, + 39, 41, 42, 39, 38, 34, 35, 39, 41, 41, 39, 35, 29, 25, 26, 82, + 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, + 42, 45, 58, 64, 60, 52, 50, 56, 61, 61, 75, 83, 79, 72, 68, 59, + 51, 49, 54, 53, 43, 35, 35, 41, 42, 43, 42, 44, 43, 43, 42, 42, + 42, 46, 50, 50, 39, 37, 38, 38, 28, 50, 47, 47, 42, 39, 34, 37, + 42, 27, 28, 28, 33, 37, 39, 36, 32, 32, 27, 27, 28, 28, 23, 21, + 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 36, 40, 43, 48, + 61, 67, 59, 52, 51, 60, 66, 38, 44, 48, 51, 55, 54, 47, 39, 51, + 43, 32, 23, 25, 31, 31, 28, 34, 37, 41, 43, 44, 41, 38, 35, 44, + 45, 43, 35, 31, 31, 31, 30, 34, 47, 62, 64, 50, 34, 31, 37, 24, + 25, 26, 31, 40, 40, 36, 30, 33, 28, 27, 32, 29, 22, 24, 29, 27, + 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 182, 39, 37, 38, 41, 41, 40, 71, 77, 69, + 54, 41, 38, 38, 36, 46, 46, 52, 63, 72, 73, 71, 69, 48, 47, 43, + 39, 39, 41, 37, 31, 45, 49, 54, 59, 60, 58, 54, 51, 44, 43, 45, + 46, 45, 42, 44, 50, 30, 39, 56, 71, 69, 53, 38, 33, 31, 31, 29, + 34, 43, 44, 41, 35, 42, 33, 31, 39, 43, 38, 39, 43, 36, 32, 79, + 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 185, 47, 48, 45, 34, 36, 42, 47, 49, 63, 63, 52, 41, 38, + 42, 41, 37, 32, 28, 34, 50, 61, 61, 61, 64, 57, 64, 66, 53, 37, + 32, 37, 42, 53, 54, 56, 56, 55, 53, 51, 50, 42, 39, 43, 50, 47, + 40, 41, 49, 47, 30, 25, 43, 64, 65, 49, 34, 36, 33, 29, 32, 41, + 45, 41, 36, 52, 40, 36, 47, 55, 53, 52, 54, 43, 36, 27, 20, 18, + 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 108, 99, 91, 49, + 46, 56, 49, 46, 46, 45, 41, 44, 53, 60, 53, 48, 52, 59, 65, 59, + 54, 43, 46, 48, 52, 53, 53, 49, 43, 42, 38, 42, 47, 47, 40, 37, + 41, 45, 53, 60, 57, 52, 51, 51, 50, 51, 59, 59, 48, 42, 43, 38, + 28, 39, 33, 31, 40, 54, 59, 51, 41, 34, 29, 27, 31, 41, 47, 44, + 38, 43, 54, 58, 51, 45, 42, 39, 35, 34, 16, 10, 17, 21, 20, 105, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 206, 89, 50, 85, 107, 54, 54, 59, 57, 68, + 57, 49, 50, 52, 52, 54, 58, 57, 61, 68, 76, 81, 77, 67, 58, 46, + 44, 42, 40, 39, 36, 32, 27, 36, 34, 38, 42, 42, 36, 36, 41, 39, + 45, 49, 47, 47, 49, 49, 47, 45, 53, 53, 42, 37, 43, 47, 45, 38, + 38, 42, 51, 61, 62, 54, 45, 53, 41, 29, 26, 33, 43, 49, 50, 56, + 61, 58, 47, 39, 38, 39, 39, 25, 20, 27, 42, 50, 44, 38, 109, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 205, 73, 29, 38, 69, 75, 56, 51, 59, 61, 58, 53, 41, 31, + 31, 36, 38, 39, 40, 47, 56, 68, 76, 74, 66, 54, 47, 48, 45, 40, + 36, 33, 30, 27, 22, 27, 28, 33, 37, 37, 35, 40, 48, 37, 42, 45, + 47, 54, 59, 59, 54, 41, 48, 47, 36, 31, 36, 41, 42, 42, 46, 51, + 56, 58, 56, 52, 48, 49, 42, 35, 34, 39, 45, 46, 45, 57, 59, 56, + 47, 39, 37, 38, 38, 24, 36, 54, 63, 60, 49, 38, 31, 110, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 161, 79, + 27, 23, 34, 55, 83, 76, 54, 58, 63, 55, 52, 40, 33, 27, 25, 27, + 30, 31, 33, 41, 43, 45, 46, 44, 40, 35, 32, 43, 41, 38, 36, 35, + 33, 30, 25, 22, 26, 33, 37, 41, 45, 55, 64, 71, 69, 63, 56, 53, + 46, 32, 19, 37, 40, 39, 34, 32, 34, 34, 31, 50, 54, 56, 53, 49, + 46, 49, 53, 43, 40, 37, 38, 42, 45, 46, 45, 44, 49, 52, 51, 46, + 41, 37, 35, 39, 57, 69, 57, 36, 24, 26, 30, 24, 74, 205, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 239, 185, 102, 47, 36, 24, 24, 24, + 37, 71, 81, 67, 57, 71, 68, 51, 48, 32, 34, 34, 30, 26, 25, 28, + 30, 44, 38, 30, 27, 27, 28, 27, 25, 26, 27, 29, 32, 35, 35, 32, + 27, 25, 31, 39, 44, 52, 62, 73, 81, 58, 62, 66, 72, 82, 86, 79, + 68, 43, 39, 33, 29, 31, 35, 34, 30, 47, 52, 57, 55, 50, 47, 51, + 55, 55, 48, 39, 33, 35, 42, 52, 58, 40, 44, 50, 55, 54, 50, 46, + 44, 60, 63, 57, 36, 17, 12, 19, 24, 25, 34, 40, 107, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 186, 60, 43, 22, 29, 27, 24, 33, 40, 53, 69, + 62, 54, 59, 71, 64, 48, 44, 35, 41, 42, 34, 27, 26, 30, 33, 46, + 39, 31, 27, 28, 28, 25, 22, 18, 20, 24, 30, 34, 35, 32, 27, 31, + 36, 42, 47, 57, 69, 78, 81, 85, 87, 88, 89, 94, 95, 87, 76, 70, + 60, 45, 34, 31, 31, 31, 29, 38, 44, 52, 56, 56, 54, 54, 54, 57, + 55, 52, 48, 46, 47, 51, 55, 50, 50, 54, 60, 62, 60, 59, 60, 67, + 50, 32, 22, 24, 26, 25, 21, 25, 41, 50, 43, 40, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 176, 14, 13, 9, 0, 18, 21, 25, 46, 56, 64, 60, 57, 65, + 73, 68, 64, 59, 51, 55, 57, 53, 42, 36, 39, 44, 45, 45, 42, 38, + 33, 29, 27, 26, 26, 22, 23, 24, 27, 30, 30, 28, 24, 31, 33, 35, + 37, 47, 57, 60, 57, 57, 60, 62, 66, 77, 86, 89, 85, 81, 76, 67, + 56, 44, 35, 32, 33, 40, 40, 41, 44, 48, 51, 51, 50, 47, 54, 61, + 64, 60, 54, 50, 48, 61, 60, 65, 73, 74, 68, 64, 64, 54, 33, 20, + 25, 36, 38, 36, 35, 34, 35, 38, 39, 42, 44, 112, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, + 19, 14, 11, 14, 8, 26, 25, 28, 50, 56, 59, 62, 70, 92, 94, 73, + 72, 78, 65, 53, 51, 41, 28, 25, 32, 36, 35, 49, 48, 44, 36, 27, + 25, 30, 36, 27, 24, 22, 21, 21, 21, 19, 16, 28, 27, 26, 25, 33, + 41, 40, 32, 63, 64, 62, 61, 69, 79, 85, 85, 65, 73, 80, 77, 63, + 49, 45, 48, 51, 41, 29, 26, 32, 41, 46, 48, 49, 53, 56, 55, 53, + 52, 56, 60, 62, 64, 74, 86, 86, 73, 60, 56, 37, 25, 25, 34, 37, + 34, 42, 57, 81, 60, 47, 51, 54, 48, 41, 41, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 17, 31, 9, + 5, 5, 24, 16, 36, 43, 53, 44, 70, 82, 87, 84, 75, 77, 84, 76, + 59, 74, 50, 28, 28, 40, 50, 55, 58, 78, 63, 44, 35, 43, 51, 42, + 27, 25, 22, 22, 26, 26, 24, 24, 25, 29, 26, 26, 29, 36, 40, 41, + 41, 41, 39, 44, 58, 71, 73, 70, 68, 86, 91, 92, 81, 64, 53, 53, + 58, 43, 41, 37, 32, 30, 34, 41, 47, 69, 70, 67, 63, 65, 68, 60, + 49, 43, 49, 62, 78, 84, 72, 50, 32, 27, 28, 35, 41, 43, 41, 43, + 47, 33, 41, 51, 53, 51, 49, 51, 54, 40, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 207, 87, 26, 31, 36, 11, 15, 16, + 29, 35, 50, 56, 60, 61, 79, 70, 75, 76, 75, 76, 72, 55, 35, 32, + 34, 39, 43, 43, 46, 61, 78, 69, 61, 45, 31, 27, 33, 34, 31, 34, + 29, 26, 26, 25, 23, 25, 28, 24, 22, 23, 26, 31, 34, 36, 37, 39, + 39, 45, 54, 61, 60, 59, 61, 69, 70, 69, 66, 61, 59, 61, 64, 48, + 43, 37, 35, 39, 47, 55, 59, 55, 60, 60, 57, 58, 66, 71, 70, 76, + 68, 63, 64, 62, 54, 48, 48, 41, 34, 36, 46, 57, 57, 52, 47, 42, + 45, 49, 48, 44, 42, 43, 45, 38, 56, 130, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 205, 85, 37, 39, 34, 43, 36, 11, 24, 24, 26, 46, + 55, 59, 56, 68, 68, 61, 66, 69, 62, 49, 41, 41, 44, 54, 42, 38, + 53, 73, 83, 79, 73, 64, 56, 43, 32, 32, 38, 41, 40, 38, 32, 28, + 28, 28, 28, 32, 36, 41, 39, 39, 38, 40, 42, 45, 48, 46, 48, 52, + 57, 59, 56, 57, 62, 61, 55, 50, 49, 51, 53, 52, 49, 50, 41, 31, + 27, 31, 37, 41, 42, 56, 61, 60, 51, 44, 48, 59, 66, 75, 68, 66, + 68, 58, 41, 36, 43, 47, 43, 46, 54, 59, 55, 49, 45, 38, 36, 36, + 33, 31, 30, 30, 31, 43, 42, 42, 116, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 177, 33, 27, 35, 37, 39, 55, 40, 18, 30, 29, 20, 47, 47, 55, + 47, 63, 47, 56, 52, 48, 46, 40, 36, 41, 50, 52, 54, 59, 65, 69, + 73, 79, 83, 61, 50, 40, 44, 57, 64, 55, 42, 33, 30, 30, 34, 37, + 38, 43, 46, 39, 36, 33, 29, 28, 30, 36, 41, 45, 43, 44, 48, 50, + 47, 48, 52, 45, 42, 41, 47, 56, 63, 64, 62, 57, 51, 44, 38, 36, + 36, 37, 38, 56, 59, 57, 47, 35, 32, 38, 44, 48, 47, 57, 66, 56, + 34, 27, 36, 40, 48, 59, 58, 45, 32, 33, 40, 27, 25, 25, 25, 26, + 27, 27, 26, 15, 23, 31, 33, 106, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 29, + 36, 35, 41, 39, 48, 63, 50, 35, 33, 38, 22, 43, 41, 52, 46, 56, + 34, 45, 36, 32, 44, 56, 56, 44, 35, 37, 42, 50, 58, 67, 72, 73, + 71, 59, 55, 56, 66, 74, 69, 52, 37, 30, 31, 37, 46, 50, 49, 48, + 48, 51, 47, 43, 40, 43, 48, 55, 60, 61, 53, 50, 53, 58, 55, 52, + 52, 55, 54, 55, 57, 59, 60, 58, 57, 46, 49, 51, 47, 40, 36, 37, + 40, 41, 42, 44, 43, 39, 35, 35, 36, 39, 35, 39, 45, 39, 28, 33, + 47, 36, 44, 56, 54, 40, 25, 26, 34, 25, 25, 28, 30, 33, 35, 34, + 32, 24, 25, 25, 24, 24, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 38, 38, 35, 40, + 45, 42, 54, 59, 54, 53, 31, 42, 33, 39, 37, 45, 45, 45, 29, 30, + 37, 41, 43, 42, 43, 47, 51, 55, 53, 56, 71, 90, 96, 78, 56, 68, + 76, 87, 88, 75, 55, 43, 39, 37, 41, 51, 62, 63, 56, 48, 44, 31, + 27, 27, 30, 40, 48, 53, 56, 74, 65, 60, 63, 68, 65, 59, 56, 54, + 54, 53, 50, 45, 41, 39, 38, 41, 48, 53, 49, 38, 29, 28, 31, 34, + 32, 35, 40, 42, 39, 36, 36, 35, 34, 36, 39, 38, 35, 39, 45, 39, + 37, 41, 46, 45, 38, 33, 32, 29, 30, 35, 38, 39, 40, 40, 40, 51, + 35, 23, 29, 42, 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 177, 26, 29, 28, 22, 35, 42, 47, + 58, 49, 55, 75, 41, 52, 58, 45, 40, 37, 39, 26, 26, 26, 42, 48, + 38, 32, 41, 58, 69, 60, 85, 106, 104, 90, 81, 81, 83, 81, 87, 93, + 87, 66, 46, 41, 48, 47, 52, 64, 74, 74, 62, 50, 43, 38, 36, 41, + 51, 65, 71, 70, 66, 59, 54, 53, 58, 62, 59, 57, 57, 46, 44, 42, + 42, 43, 47, 50, 52, 51, 56, 59, 54, 45, 36, 33, 34, 39, 34, 32, + 35, 35, 31, 31, 34, 33, 38, 42, 44, 48, 49, 43, 34, 35, 32, 34, + 40, 43, 39, 35, 34, 35, 38, 43, 44, 43, 45, 50, 54, 44, 47, 51, + 49, 38, 29, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 174, 14, 23, 32, 33, 28, 33, 42, 54, 65, 47, + 62, 98, 57, 66, 83, 61, 51, 34, 37, 17, 30, 32, 34, 32, 37, 59, + 78, 70, 47, 69, 82, 92, 89, 83, 82, 81, 79, 86, 79, 72, 66, 56, + 45, 44, 50, 53, 59, 70, 81, 80, 67, 54, 48, 39, 39, 48, 62, 75, + 78, 69, 59, 57, 59, 64, 70, 74, 72, 74, 79, 96, 85, 71, 60, 55, + 52, 49, 45, 34, 35, 37, 37, 35, 33, 31, 30, 37, 31, 27, 26, 24, + 21, 27, 36, 41, 44, 42, 37, 45, 55, 51, 37, 25, 30, 38, 40, 33, + 25, 29, 36, 42, 46, 49, 49, 51, 53, 64, 73, 65, 50, 39, 40, 41, + 35, 29, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 173, 19, 35, 40, 30, 24, 24, 27, 24, 44, 62, 63, 78, 90, + 81, 75, 109, 40, 60, 17, 40, 28, 22, 29, 32, 36, 38, 39, 45, 56, + 65, 68, 86, 98, 93, 86, 87, 88, 87, 84, 79, 74, 66, 51, 39, 45, + 60, 52, 69, 78, 72, 69, 68, 57, 40, 56, 44, 50, 70, 79, 70, 61, + 62, 58, 62, 75, 94, 106, 103, 93, 87, 88, 84, 75, 65, 60, 60, 56, + 47, 37, 34, 27, 25, 25, 28, 33, 37, 30, 25, 23, 28, 30, 26, 25, + 27, 32, 38, 41, 38, 33, 33, 40, 45, 31, 23, 25, 35, 35, 23, 19, + 25, 28, 41, 40, 33, 35, 33, 34, 42, 44, 58, 54, 37, 39, 53, 46, + 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, + 10, 19, 27, 24, 14, 15, 23, 35, 38, 50, 58, 64, 76, 84, 77, 79, + 109, 50, 59, 23, 34, 29, 22, 25, 29, 32, 32, 33, 39, 48, 56, 58, + 67, 74, 73, 70, 76, 85, 91, 79, 73, 64, 56, 48, 45, 53, 64, 73, + 73, 87, 104, 95, 67, 53, 59, 38, 63, 80, 75, 65, 63, 62, 58, 71, + 81, 94, 99, 88, 73, 67, 69, 78, 82, 85, 87, 84, 78, 60, 45, 34, + 33, 31, 28, 24, 24, 26, 27, 26, 22, 22, 24, 23, 19, 24, 30, 42, + 42, 42, 41, 40, 41, 43, 42, 45, 37, 27, 25, 30, 34, 31, 25, 23, + 32, 36, 41, 52, 51, 39, 31, 44, 37, 38, 50, 57, 49, 38, 35, 28, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 13, 16, 21, + 23, 16, 8, 19, 33, 35, 50, 54, 51, 63, 74, 74, 71, 75, 98, 55, + 49, 28, 27, 29, 23, 27, 29, 32, 32, 33, 37, 45, 51, 70, 67, 66, + 64, 61, 64, 77, 91, 71, 71, 66, 58, 56, 60, 63, 63, 68, 66, 79, + 95, 82, 51, 41, 52, 40, 60, 74, 71, 66, 67, 63, 53, 64, 68, 71, + 69, 62, 61, 76, 93, 81, 81, 77, 74, 73, 72, 62, 53, 40, 42, 42, + 39, 32, 28, 28, 29, 24, 25, 27, 29, 27, 26, 34, 42, 50, 44, 38, + 39, 45, 46, 41, 37, 54, 56, 48, 33, 32, 41, 40, 29, 33, 35, 34, + 35, 43, 52, 54, 52, 48, 36, 36, 50, 56, 46, 41, 42, 29, 102, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 13, 15, 19, 18, 13, + 12, 28, 47, 27, 50, 51, 44, 62, 71, 64, 65, 62, 78, 53, 37, 29, + 20, 29, 25, 27, 29, 30, 31, 33, 37, 43, 48, 62, 53, 46, 42, 34, + 28, 36, 50, 62, 72, 76, 68, 63, 64, 59, 51, 64, 80, 84, 71, 63, + 64, 60, 49, 53, 53, 60, 67, 63, 52, 49, 55, 54, 46, 40, 40, 43, + 48, 58, 67, 73, 72, 64, 54, 48, 49, 49, 48, 46, 49, 49, 46, 40, + 34, 34, 38, 31, 34, 38, 44, 47, 49, 55, 58, 45, 37, 33, 35, 40, + 40, 37, 36, 44, 58, 63, 52, 43, 46, 49, 48, 46, 50, 52, 42, 27, + 31, 44, 50, 49, 58, 52, 35, 35, 51, 55, 42, 40, 31, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 21, 21, 15, 14, 14, 14, 15, 20, 35, + 47, 27, 50, 54, 49, 65, 68, 58, 57, 53, 64, 51, 30, 29, 18, 28, + 27, 20, 21, 22, 24, 26, 30, 35, 39, 56, 51, 49, 48, 40, 31, 36, + 48, 61, 74, 80, 68, 55, 50, 47, 41, 61, 80, 80, 60, 59, 75, 70, + 45, 51, 61, 71, 64, 42, 27, 39, 59, 46, 49, 57, 67, 69, 61, 51, + 47, 48, 59, 67, 64, 54, 46, 40, 35, 45, 46, 47, 43, 40, 38, 40, + 43, 46, 47, 51, 58, 69, 74, 71, 65, 43, 38, 38, 39, 38, 35, 38, + 45, 43, 47, 53, 56, 55, 53, 56, 61, 51, 58, 75, 73, 48, 35, 30, + 15, 37, 59, 57, 29, 26, 50, 59, 45, 46, 35, 103, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 204, 24, 23, 23, 22, 22, 24, 27, 31, 39, 44, 40, + 50, 56, 55, 62, 58, 50, 47, 50, 56, 48, 31, 30, 23, 23, 25, 22, + 22, 22, 23, 26, 29, 32, 34, 17, 24, 32, 36, 33, 32, 41, 54, 75, + 81, 79, 64, 47, 42, 45, 50, 58, 62, 64, 66, 67, 65, 53, 40, 44, + 65, 69, 50, 40, 52, 60, 56, 57, 66, 78, 83, 75, 62, 58, 61, 51, + 62, 71, 73, 68, 62, 54, 46, 46, 46, 46, 46, 46, 47, 47, 48, 56, + 56, 58, 64, 77, 83, 76, 65, 55, 51, 51, 49, 41, 35, 43, 57, 67, + 54, 44, 48, 54, 54, 49, 46, 57, 54, 73, 86, 77, 74, 61, 29, 30, + 39, 44, 41, 40, 45, 52, 55, 48, 36, 27, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 78, 26, 28, 26, 30, 35, 36, 38, 38, 42, 44, 48, 41, 47, + 52, 47, 40, 39, 35, 41, 48, 41, 33, 30, 32, 19, 24, 26, 25, 24, + 24, 25, 26, 27, 27, 17, 33, 46, 47, 46, 55, 72, 85, 84, 80, 73, + 64, 52, 46, 51, 61, 75, 67, 70, 81, 78, 60, 48, 49, 50, 63, 63, + 56, 65, 84, 79, 57, 74, 69, 64, 59, 51, 46, 50, 57, 70, 66, 60, + 59, 66, 71, 64, 54, 47, 46, 46, 50, 55, 56, 52, 48, 56, 58, 60, + 63, 72, 81, 81, 74, 76, 67, 60, 54, 44, 35, 42, 58, 68, 67, 60, + 51, 50, 52, 47, 37, 55, 41, 56, 73, 74, 91, 97, 71, 46, 36, 37, + 48, 49, 41, 44, 56, 55, 42, 31, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, + 26, 27, 31, 18, 28, 37, 41, 38, 39, 39, 41, 45, 26, 33, 43, 31, + 23, 30, 27, 33, 38, 31, 31, 28, 37, 17, 25, 25, 22, 20, 19, 19, + 18, 17, 16, 21, 40, 52, 46, 42, 55, 76, 90, 78, 69, 64, 64, 59, + 50, 51, 60, 79, 74, 73, 74, 64, 50, 44, 48, 62, 70, 81, 86, 83, + 75, 69, 67, 61, 49, 44, 56, 74, 86, 90, 90, 75, 63, 50, 52, 65, + 73, 58, 41, 43, 41, 42, 49, 56, 56, 48, 40, 49, 54, 57, 59, 67, + 79, 86, 85, 88, 75, 62, 53, 42, 31, 36, 49, 37, 66, 79, 63, 51, + 57, 60, 52, 39, 29, 49, 63, 56, 74, 94, 77, 70, 53, 41, 44, 46, + 43, 44, 49, 66, 53, 40, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 38, 42, 36, + 27, 33, 32, 35, 44, 45, 40, 36, 35, 35, 38, 36, 29, 23, 23, 34, + 44, 45, 39, 37, 37, 38, 32, 24, 15, 19, 15, 12, 21, 34, 26, 15, + 19, 47, 49, 51, 55, 62, 69, 72, 72, 62, 72, 74, 61, 50, 50, 57, + 62, 66, 69, 76, 77, 61, 44, 47, 62, 64, 65, 67, 68, 67, 68, 74, + 82, 64, 57, 52, 57, 64, 65, 60, 55, 63, 60, 61, 62, 57, 48, 44, + 45, 41, 55, 51, 44, 51, 43, 35, 47, 48, 46, 55, 67, 73, 74, 86, + 99, 90, 89, 78, 55, 39, 37, 39, 40, 52, 56, 75, 88, 79, 67, 56, + 42, 44, 34, 29, 36, 47, 58, 72, 84, 67, 61, 57, 58, 63, 58, 45, + 33, 49, 48, 46, 39, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 17, 28, 35, 36, 34, 37, + 36, 39, 49, 51, 45, 40, 39, 27, 34, 42, 41, 34, 26, 23, 23, 47, + 46, 43, 31, 20, 17, 27, 35, 30, 26, 16, 11, 15, 18, 36, 67, 66, + 59, 56, 64, 78, 83, 73, 60, 79, 77, 68, 53, 47, 54, 63, 67, 71, + 73, 72, 65, 61, 64, 70, 74, 76, 66, 60, 67, 80, 87, 84, 78, 51, + 63, 79, 88, 85, 76, 69, 64, 54, 53, 56, 58, 56, 49, 48, 50, 48, + 46, 30, 28, 48, 49, 37, 39, 49, 47, 51, 57, 65, 74, 89, 100, 94, + 92, 82, 60, 42, 35, 33, 32, 33, 34, 49, 65, 69, 70, 69, 64, 50, + 38, 29, 28, 33, 39, 51, 62, 69, 63, 57, 55, 60, 60, 55, 50, 48, + 48, 49, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 7, 10, 20, 31, 42, 48, 37, 36, 39, + 48, 49, 44, 36, 34, 36, 32, 27, 20, 18, 25, 40, 52, 25, 37, 50, + 48, 39, 29, 26, 25, 14, 22, 26, 31, 36, 34, 46, 73, 75, 68, 65, + 72, 79, 77, 62, 48, 87, 77, 61, 50, 51, 60, 67, 68, 73, 74, 66, + 56, 62, 76, 78, 67, 67, 73, 81, 85, 85, 83, 80, 78, 67, 74, 79, + 76, 67, 60, 58, 56, 50, 47, 49, 52, 51, 46, 46, 50, 41, 46, 41, + 39, 50, 50, 49, 57, 50, 52, 53, 56, 68, 82, 91, 93, 76, 75, 66, + 50, 38, 32, 30, 28, 31, 27, 30, 41, 51, 57, 62, 65, 58, 47, 35, + 27, 23, 24, 32, 40, 62, 56, 53, 51, 53, 57, 62, 64, 47, 47, 50, + 47, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 10, 11, 18, 32, 49, 61, 45, 42, 44, 48, 49, + 39, 32, 29, 31, 31, 34, 36, 40, 46, 52, 55, 43, 39, 35, 29, 31, + 34, 33, 27, 30, 26, 20, 27, 41, 47, 58, 79, 70, 71, 71, 69, 60, + 50, 45, 46, 81, 71, 59, 53, 56, 62, 64, 63, 68, 67, 61, 58, 63, + 69, 63, 51, 67, 84, 101, 103, 92, 80, 71, 67, 89, 81, 69, 59, 56, + 56, 52, 44, 50, 46, 46, 46, 44, 39, 39, 43, 35, 45, 52, 53, 55, + 53, 56, 63, 45, 53, 58, 60, 73, 85, 85, 77, 58, 56, 48, 37, 29, + 25, 25, 26, 35, 31, 26, 30, 37, 38, 43, 56, 65, 59, 50, 40, 31, + 26, 29, 31, 42, 42, 46, 48, 50, 54, 60, 62, 51, 49, 50, 46, 34, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 10, 14, 14, 17, 27, 43, 55, 60, 55, 54, 55, 53, 42, 34, + 32, 30, 32, 34, 38, 40, 37, 31, 24, 40, 37, 30, 24, 29, 35, 33, + 25, 35, 33, 29, 36, 49, 51, 57, 76, 73, 69, 65, 58, 47, 38, 41, + 52, 76, 68, 59, 53, 52, 54, 59, 62, 64, 57, 56, 63, 65, 60, 58, + 60, 85, 89, 91, 91, 92, 87, 71, 54, 74, 79, 81, 79, 79, 75, 63, + 48, 47, 41, 39, 38, 37, 33, 36, 41, 50, 40, 38, 43, 50, 55, 52, + 42, 41, 48, 54, 55, 63, 73, 73, 63, 63, 56, 46, 36, 27, 23, 23, + 26, 23, 27, 24, 29, 38, 33, 35, 56, 65, 68, 66, 58, 46, 37, 33, + 30, 23, 29, 39, 46, 51, 51, 51, 51, 60, 56, 51, 45, 34, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 16, 20, 18, 17, 20, 31, 39, 64, 58, 55, 56, 55, 45, 39, 38, 45, + 41, 38, 41, 44, 41, 32, 22, 7, 21, 35, 38, 42, 46, 45, 37, 32, + 43, 53, 60, 62, 53, 56, 76, 83, 67, 55, 53, 54, 51, 53, 59, 75, + 66, 56, 50, 47, 49, 59, 69, 61, 54, 56, 66, 67, 63, 71, 87, 79, + 83, 80, 70, 65, 68, 69, 64, 57, 76, 89, 84, 71, 63, 57, 49, 42, + 36, 34, 35, 35, 35, 41, 48, 59, 45, 43, 40, 33, 37, 43, 36, 41, + 42, 42, 41, 45, 53, 59, 58, 60, 51, 42, 35, 29, 25, 27, 32, 17, + 26, 26, 35, 49, 37, 29, 51, 54, 66, 73, 68, 56, 45, 37, 31, 22, + 26, 36, 44, 50, 50, 49, 49, 68, 62, 56, 49, 39, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, 22, + 19, 18, 18, 25, 31, 53, 47, 44, 47, 48, 43, 41, 42, 47, 50, 59, + 72, 81, 71, 50, 31, 29, 34, 34, 30, 41, 61, 72, 71, 56, 56, 51, + 50, 54, 54, 67, 94, 68, 56, 50, 54, 57, 55, 58, 66, 64, 56, 51, + 52, 56, 60, 69, 78, 55, 59, 65, 68, 69, 71, 80, 89, 69, 82, 83, + 65, 50, 55, 70, 79, 71, 85, 88, 71, 54, 49, 48, 44, 41, 35, 33, + 34, 37, 39, 48, 56, 54, 49, 59, 55, 36, 34, 45, 41, 44, 41, 40, + 43, 44, 46, 54, 61, 54, 45, 38, 36, 34, 29, 30, 32, 24, 31, 27, + 40, 62, 44, 22, 37, 35, 53, 68, 67, 59, 51, 46, 39, 34, 31, 31, + 33, 38, 43, 51, 54, 67, 62, 57, 53, 45, 108, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 19, 22, 20, 20, + 22, 28, 33, 44, 38, 37, 42, 46, 46, 48, 51, 55, 44, 33, 34, 44, + 48, 44, 36, 53, 51, 45, 50, 68, 82, 70, 45, 48, 47, 50, 63, 82, + 75, 66, 69, 44, 43, 53, 57, 53, 43, 55, 73, 47, 42, 46, 59, 71, + 75, 79, 84, 50, 65, 75, 72, 70, 75, 76, 70, 84, 85, 82, 68, 69, + 76, 80, 72, 93, 96, 93, 78, 72, 68, 61, 45, 44, 37, 35, 36, 39, + 41, 50, 60, 54, 41, 52, 62, 57, 57, 52, 29, 44, 40, 47, 56, 56, + 51, 54, 66, 64, 54, 47, 43, 36, 26, 23, 22, 26, 30, 23, 41, 72, + 53, 23, 32, 18, 40, 60, 64, 59, 56, 55, 52, 47, 36, 28, 21, 28, + 40, 52, 60, 61, 58, 56, 54, 48, 37, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 23, 20, 10, 16, 25, 31, + 38, 36, 43, 50, 53, 49, 45, 47, 52, 55, 46, 36, 32, 35, 39, 43, + 44, 46, 56, 71, 85, 88, 78, 59, 42, 30, 41, 53, 59, 80, 91, 76, + 44, 46, 59, 71, 68, 68, 65, 60, 50, 37, 54, 47, 68, 81, 101, 69, + 50, 78, 80, 78, 70, 62, 64, 78, 91, 84, 83, 84, 79, 80, 82, 94, + 100, 98, 82, 72, 67, 65, 54, 49, 46, 47, 43, 42, 43, 46, 46, 43, + 40, 33, 41, 49, 49, 53, 57, 54, 48, 40, 36, 40, 42, 41, 37, 39, + 45, 41, 38, 36, 33, 30, 27, 25, 21, 28, 18, 28, 55, 62, 43, 30, + 32, 32, 29, 50, 58, 58, 70, 65, 48, 47, 41, 42, 39, 36, 33, 42, + 54, 60, 56, 55, 56, 52, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 27, 33, 27, 13, 21, 29, 35, 43, 31, + 38, 46, 50, 51, 52, 61, 66, 46, 48, 47, 38, 30, 33, 50, 65, 64, + 66, 70, 69, 64, 53, 39, 30, 53, 47, 55, 77, 86, 72, 56, 50, 53, + 58, 64, 70, 76, 75, 64, 51, 58, 67, 75, 98, 100, 86, 64, 70, 55, + 58, 64, 69, 76, 85, 95, 100, 90, 82, 76, 74, 76, 81, 86, 88, 80, + 70, 63, 65, 67, 64, 62, 62, 59, 54, 52, 54, 60, 61, 57, 52, 39, + 43, 46, 45, 48, 50, 46, 36, 35, 32, 32, 34, 35, 31, 32, 37, 44, + 41, 37, 33, 29, 27, 26, 25, 27, 21, 29, 48, 55, 44, 35, 36, 31, + 55, 39, 44, 56, 50, 59, 56, 65, 50, 39, 42, 48, 47, 42, 39, 49, + 55, 63, 64, 54, 39, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 29, 32, 21, 7, 18, 29, 36, 42, 44, 48, 52, + 50, 49, 50, 58, 62, 50, 41, 33, 29, 35, 45, 56, 62, 73, 80, 90, + 95, 94, 84, 73, 65, 62, 49, 51, 68, 68, 51, 43, 52, 58, 63, 73, + 83, 81, 69, 57, 51, 65, 79, 97, 98, 91, 58, 53, 67, 65, 67, 74, + 86, 100, 108, 110, 106, 90, 78, 68, 67, 74, 81, 82, 79, 78, 72, 68, + 72, 76, 77, 76, 77, 66, 60, 56, 56, 61, 61, 57, 53, 46, 44, 43, + 41, 43, 45, 41, 31, 42, 38, 38, 39, 39, 35, 36, 41, 47, 43, 39, + 33, 28, 25, 25, 25, 26, 25, 31, 41, 47, 45, 42, 41, 37, 50, 56, + 29, 50, 59, 28, 68, 63, 60, 57, 54, 47, 39, 37, 39, 41, 45, 53, + 59, 57, 46, 38, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 175, 30, 35, 24, 15, 27, 41, 46, 50, 52, 56, 56, 51, 46, + 46, 50, 50, 45, 33, 22, 23, 36, 48, 52, 51, 53, 63, 76, 84, 87, + 83, 80, 79, 61, 54, 47, 44, 45, 48, 51, 54, 61, 74, 92, 96, 76, + 52, 48, 58, 70, 92, 104, 69, 64, 43, 51, 52, 72, 71, 72, 76, 82, + 83, 80, 73, 85, 74, 66, 66, 73, 79, 81, 79, 88, 84, 81, 80, 80, + 78, 75, 74, 70, 64, 59, 53, 50, 48, 49, 50, 51, 45, 40, 39, 44, + 46, 43, 34, 32, 29, 28, 28, 27, 22, 23, 28, 43, 42, 40, 34, 29, + 25, 25, 25, 25, 30, 35, 38, 43, 47, 46, 42, 28, 65, 37, 50, 66, + 43, 55, 53, 57, 62, 65, 60, 47, 37, 36, 41, 44, 32, 29, 41, 55, + 56, 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 21, 24, 32, 26, 21, 32, 41, 41, 42, 41, 49, 52, 48, 46, 49, 51, + 49, 29, 33, 35, 33, 30, 32, 41, 49, 46, 45, 44, 41, 40, 47, 60, + 69, 72, 62, 51, 47, 50, 54, 56, 58, 71, 78, 87, 86, 68, 52, 59, + 77, 93, 97, 91, 51, 54, 44, 56, 57, 64, 63, 62, 60, 60, 61, 64, + 64, 82, 78, 75, 73, 73, 76, 80, 82, 91, 89, 86, 82, 78, 75, 71, + 67, 75, 75, 70, 60, 50, 47, 54, 61, 57, 48, 40, 40, 45, 46, 42, + 37, 32, 29, 27, 25, 23, 19, 20, 24, 35, 36, 40, 38, 35, 33, 34, + 35, 28, 34, 38, 40, 44, 49, 46, 38, 48, 29, 61, 55, 56, 75, 50, + 60, 65, 59, 54, 54, 58, 56, 46, 35, 50, 35, 25, 32, 45, 50, 47, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 29, 26, + 38, 37, 32, 39, 40, 35, 33, 40, 48, 51, 46, 46, 50, 51, 47, 38, + 37, 36, 37, 38, 38, 38, 37, 39, 39, 41, 43, 49, 60, 74, 82, 82, + 61, 54, 66, 66, 52, 48, 59, 83, 75, 67, 65, 67, 73, 85, 95, 98, + 80, 60, 48, 56, 45, 51, 67, 57, 60, 64, 66, 68, 75, 87, 95, 87, + 88, 89, 85, 79, 76, 79, 83, 89, 92, 92, 88, 86, 85, 82, 78, 78, + 79, 77, 68, 59, 57, 66, 75, 65, 55, 47, 47, 49, 46, 42, 41, 43, + 38, 35, 33, 30, 25, 25, 30, 28, 32, 39, 40, 41, 43, 47, 51, 39, + 39, 40, 43, 48, 50, 43, 33, 53, 51, 38, 65, 61, 54, 83, 59, 62, + 63, 62, 58, 58, 58, 53, 48, 52, 48, 45, 41, 36, 35, 44, 56, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 41, 58, 60, + 55, 58, 56, 49, 48, 50, 54, 53, 44, 44, 50, 51, 45, 53, 40, 31, + 35, 48, 50, 38, 25, 27, 31, 39, 49, 62, 71, 75, 77, 72, 62, 59, + 64, 63, 54, 56, 67, 81, 76, 69, 67, 76, 89, 96, 95, 75, 66, 48, + 56, 59, 57, 52, 67, 62, 67, 72, 76, 79, 85, 93, 98, 93, 95, 98, + 95, 88, 84, 84, 86, 92, 98, 100, 98, 97, 98, 96, 92, 83, 83, 81, + 77, 73, 71, 73, 75, 69, 61, 58, 58, 57, 52, 50, 52, 37, 32, 28, + 25, 21, 16, 16, 21, 31, 34, 38, 37, 37, 41, 49, 57, 53, 45, 40, + 45, 51, 49, 39, 31, 61, 48, 57, 51, 57, 66, 55, 73, 59, 69, 72, + 62, 50, 48, 53, 57, 49, 53, 56, 52, 40, 34, 44, 58, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 26, 32, 48, 54, 48, 51, + 51, 46, 46, 50, 56, 53, 43, 44, 54, 58, 52, 45, 45, 45, 43, 42, + 38, 36, 35, 50, 45, 40, 40, 46, 52, 56, 57, 56, 69, 67, 50, 47, + 66, 81, 82, 70, 82, 89, 86, 85, 90, 90, 84, 53, 74, 64, 69, 65, + 83, 69, 69, 92, 94, 96, 97, 95, 92, 91, 88, 95, 96, 100, 100, 97, + 93, 91, 91, 94, 101, 104, 100, 99, 100, 98, 92, 91, 88, 85, 85, 86, + 83, 76, 70, 72, 66, 65, 68, 66, 62, 62, 67, 42, 37, 32, 29, 25, + 19, 20, 25, 38, 37, 37, 32, 29, 33, 43, 52, 64, 48, 39, 45, 52, + 47, 37, 31, 49, 70, 53, 51, 69, 52, 45, 69, 71, 68, 60, 52, 53, + 57, 53, 43, 47, 48, 51, 54, 50, 45, 47, 52, 118, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 12, 15, 25, 37, 58, 60, 45, 43, 48, + 44, 48, 51, 53, 48, 45, 44, 47, 45, 45, 38, 42, 52, 55, 43, 28, + 18, 33, 38, 45, 51, 55, 54, 52, 51, 51, 49, 46, 48, 61, 76, 81, + 78, 77, 75, 77, 84, 87, 81, 75, 73, 69, 69, 74, 83, 86, 83, 85, + 91, 102, 100, 97, 96, 97, 100, 103, 104, 104, 102, 103, 104, 104, 102, 97, + 93, 95, 98, 102, 103, 102, 100, 100, 100, 96, 99, 100, 98, 94, 91, 91, + 93, 84, 78, 74, 73, 71, 68, 69, 73, 50, 41, 36, 40, 41, 32, 24, + 23, 30, 42, 45, 31, 27, 39, 47, 43, 47, 45, 43, 43, 43, 40, 34, + 30, 37, 60, 73, 63, 53, 57, 61, 60, 69, 63, 64, 70, 65, 51, 47, + 52, 44, 50, 46, 42, 43, 41, 48, 67, 53, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 16, 19, 30, 37, 56, 63, 52, 45, 50, 46, 48, + 54, 56, 50, 47, 47, 49, 46, 58, 47, 41, 43, 52, 66, 88, 104, 56, + 46, 37, 37, 44, 47, 40, 33, 46, 53, 61, 70, 79, 84, 78, 69, 69, + 66, 66, 71, 73, 72, 74, 78, 94, 93, 97, 103, 103, 98, 98, 103, 105, + 105, 105, 106, 108, 110, 112, 111, 107, 104, 104, 104, 105, 103, 99, 96, 98, + 100, 103, 103, 102, 101, 101, 102, 100, 100, 100, 97, 94, 92, 89, 90, 91, + 84, 77, 75, 73, 71, 75, 81, 76, 62, 47, 39, 38, 33, 26, 22, 26, + 36, 37, 25, 24, 37, 43, 37, 43, 41, 39, 38, 37, 34, 29, 24, 25, + 45, 64, 69, 68, 69, 65, 58, 66, 54, 56, 70, 69, 51, 41, 46, 42, + 42, 34, 32, 38, 38, 42, 56, 64, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 16, 19, 33, 32, 51, 64, 57, 49, 51, 51, 50, 56, 58, + 53, 50, 50, 50, 49, 55, 50, 43, 36, 32, 36, 54, 70, 76, 63, 48, + 40, 40, 41, 40, 37, 41, 54, 68, 77, 80, 78, 68, 58, 65, 63, 63, + 66, 68, 72, 82, 93, 96, 96, 99, 102, 100, 97, 96, 100, 108, 110, 112, + 115, 117, 118, 118, 116, 111, 107, 105, 104, 105, 104, 102, 100, 101, 102, 103, + 103, 101, 102, 103, 105, 109, 109, 107, 105, 102, 100, 97, 95, 93, 85, 77, + 73, 69, 68, 72, 79, 91, 80, 62, 47, 43, 39, 31, 22, 28, 35, 35, + 25, 26, 38, 42, 37, 42, 41, 39, 38, 37, 34, 29, 26, 26, 37, 55, + 72, 82, 84, 78, 72, 67, 51, 49, 65, 72, 58, 45, 44, 53, 47, 33, + 30, 39, 40, 39, 49, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 173, 11, 13, 30, 23, 40, 62, 59, 48, 50, 51, 51, 57, 59, 54, 51, + 51, 52, 51, 39, 45, 51, 50, 43, 35, 36, 39, 69, 71, 69, 58, 45, + 40, 46, 54, 42, 54, 63, 64, 62, 61, 57, 52, 60, 63, 68, 73, 75, + 78, 91, 104, 101, 103, 107, 109, 109, 109, 110, 113, 111, 113, 114, 116, 117, + 118, 117, 115, 113, 108, 105, 104, 104, 104, 103, 102, 102, 103, 102, 101, 100, + 101, 104, 109, 115, 111, 108, 107, 107, 106, 103, 99, 91, 86, 81, 78, 73, + 67, 65, 67, 80, 82, 75, 62, 54, 48, 39, 28, 28, 36, 37, 27, 24, + 33, 38, 37, 38, 37, 36, 36, 35, 34, 32, 31, 34, 35, 44, 62, 77, + 83, 85, 87, 79, 63, 49, 52, 66, 71, 62, 49, 62, 55, 40, 34, 40, + 38, 37, 46, 62, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 10, + 10, 20, 15, 33, 56, 56, 47, 49, 49, 51, 55, 57, 53, 50, 51, 53, + 52, 53, 52, 54, 52, 50, 50, 52, 51, 52, 61, 71, 66, 54, 46, 48, + 54, 56, 65, 67, 63, 58, 58, 59, 59, 55, 62, 74, 83, 84, 84, 92, + 103, 107, 110, 113, 114, 115, 117, 119, 121, 117, 116, 115, 114, 114, 114, 115, + 113, 113, 108, 104, 103, 103, 104, 103, 103, 102, 102, 101, 99, 98, 100, 103, + 109, 109, 107, 103, 103, 106, 106, 102, 99, 93, 91, 91, 91, 85, 70, 60, + 58, 69, 77, 79, 70, 61, 52, 46, 42, 25, 34, 36, 26, 18, 23, 30, + 33, 29, 29, 29, 28, 29, 31, 34, 36, 34, 31, 34, 48, 62, 71, 78, + 85, 96, 85, 59, 40, 51, 75, 73, 52, 55, 54, 43, 35, 35, 30, 33, + 47, 39, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 10, 12, 11, 12, + 12, 32, 53, 54, 49, 50, 48, 53, 59, 61, 56, 54, 55, 58, 55, 62, + 57, 51, 46, 47, 52, 54, 51, 60, 61, 66, 70, 72, 68, 60, 54, 77, + 86, 88, 84, 80, 78, 77, 74, 65, 74, 87, 97, 97, 94, 98, 105, 108, + 112, 113, 111, 110, 113, 114, 113, 121, 120, 118, 116, 115, 114, 115, 113, 113, + 109, 105, 104, 104, 105, 104, 103, 102, 102, 101, 100, 98, 100, 103, 108, 107, + 108, 105, 105, 106, 107, 104, 103, 92, 92, 94, 96, 86, 70, 57, 53, 69, + 73, 76, 74, 65, 54, 51, 55, 29, 35, 37, 28, 21, 24, 31, 34, 30, + 29, 28, 26, 28, 33, 40, 46, 33, 31, 33, 43, 59, 71, 76, 75, 100, + 100, 77, 45, 42, 64, 70, 57, 49, 54, 48, 41, 37, 31, 36, 54, 36, + 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 10, 11, 10, 8, 16, 39, + 55, 55, 56, 59, 52, 59, 65, 67, 63, 61, 61, 64, 62, 53, 55, 58, + 59, 68, 76, 77, 73, 79, 76, 76, 79, 85, 88, 85, 82, 97, 104, 106, + 103, 100, 99, 95, 90, 88, 93, 102, 109, 109, 105, 108, 114, 118, 123, 124, + 118, 117, 120, 121, 119, 118, 119, 119, 119, 118, 117, 116, 113, 114, 110, 108, + 107, 107, 107, 105, 104, 102, 103, 103, 102, 101, 101, 104, 108, 109, 112, 112, + 111, 107, 106, 105, 106, 96, 94, 93, 93, 84, 70, 60, 58, 69, 65, 70, + 82, 81, 64, 55, 59, 36, 35, 33, 28, 30, 35, 37, 36, 35, 34, 30, + 27, 28, 35, 46, 54, 38, 35, 31, 37, 58, 80, 82, 72, 85, 98, 95, + 71, 49, 50, 63, 73, 56, 61, 57, 49, 45, 37, 39, 56, 51, 59, 255, + 255, 255, 255, 255, 255, 255, 255, 173, 10, 10, 6, 8, 19, 43, 56, 55, + 62, 66, 59, 66, 72, 74, 70, 68, 69, 70, 69, 74, 76, 79, 75, 75, + 81, 83, 79, 88, 90, 91, 89, 87, 92, 105, 115, 111, 113, 111, 107, 105, + 106, 104, 100, 104, 104, 107, 111, 111, 109, 112, 119, 114, 120, 121, 115, 114, + 118, 120, 117, 113, 115, 118, 120, 120, 118, 115, 111, 115, 111, 110, 109, 109, + 109, 107, 105, 103, 104, 105, 104, 103, 103, 105, 109, 107, 111, 112, 110, 103, + 101, 100, 103, 107, 100, 97, 95, 87, 77, 72, 73, 65, 56, 67, 93, 99, + 76, 57, 56, 36, 29, 21, 21, 32, 38, 38, 33, 36, 33, 29, 24, 24, + 31, 44, 53, 42, 34, 21, 21, 51, 81, 85, 69, 68, 88, 107, 97, 63, + 42, 60, 91, 64, 67, 60, 52, 47, 37, 35, 49, 62, 48, 120, 255, 255, + 255, 255, 255, 255, 255, 10, 12, 15, 10, 14, 26, 48, 60, 64, 63, 64, + 67, 64, 67, 71, 75, 77, 77, 76, 76, 79, 81, 86, 87, 89, 92, 96, + 100, 101, 99, 99, 103, 109, 115, 117, 119, 122, 124, 123, 118, 110, 106, 106, + 108, 109, 107, 110, 115, 116, 113, 113, 116, 117, 118, 119, 120, 119, 117, 114, + 112, 117, 116, 115, 115, 115, 116, 118, 117, 114, 114, 115, 112, 108, 107, 109, + 112, 110, 109, 109, 108, 107, 106, 105, 107, 113, 112, 111, 110, 109, 107, 107, + 106, 112, 110, 107, 100, 92, 85, 80, 79, 61, 71, 66, 71, 95, 93, 68, + 59, 52, 37, 27, 29, 31, 22, 24, 30, 33, 35, 44, 37, 23, 28, 43, + 48, 38, 50, 40, 16, 27, 63, 84, 77, 67, 73, 100, 87, 67, 52, 44, + 89, 74, 53, 64, 40, 65, 34, 48, 38, 59, 64, 59, 255, 255, 255, 255, + 255, 255, 255, 14, 16, 18, 11, 14, 36, 59, 61, 60, 67, 71, 69, 68, + 70, 73, 75, 77, 77, 76, 76, 84, 87, 91, 95, 97, 100, 104, 107, 112, + 110, 109, 111, 116, 120, 121, 121, 121, 121, 120, 117, 113, 111, 111, 112, 119, + 116, 118, 122, 122, 119, 118, 120, 119, 119, 120, 120, 119, 117, 116, 115, 115, + 114, 114, 113, 114, 115, 116, 115, 112, 110, 110, 108, 106, 105, 106, 108, 107, + 106, 106, 105, 104, 103, 103, 102, 109, 108, 108, 108, 108, 107, 107, 107, 106, + 106, 104, 100, 92, 85, 81, 79, 75, 78, 76, 84, 104, 104, 82, 63, 56, + 42, 34, 38, 39, 31, 26, 30, 32, 34, 40, 37, 24, 29, 42, 45, 44, + 54, 49, 30, 23, 43, 66, 79, 77, 71, 82, 91, 84, 57, 47, 79, 84, + 63, 63, 46, 64, 45, 52, 45, 47, 57, 60, 255, 255, 255, 255, 255, 255, + 255, 18, 17, 16, 10, 23, 50, 69, 61, 57, 69, 77, 72, 78, 79, 79, + 80, 81, 82, 82, 82, 88, 92, 98, 102, 105, 107, 110, 113, 120, 119, 117, + 118, 120, 122, 122, 121, 124, 123, 121, 121, 122, 123, 123, 122, 126, 123, 124, + 127, 126, 122, 121, 123, 121, 120, 119, 118, 117, 117, 117, 117, 118, 117, 117, + 117, 117, 118, 119, 118, 116, 112, 110, 109, 109, 110, 109, 108, 109, 108, 108, + 107, 106, 106, 105, 105, 110, 110, 110, 111, 111, 112, 112, 112, 101, 102, 103, + 100, 93, 86, 81, 79, 76, 66, 68, 81, 94, 100, 83, 54, 53, 41, 35, + 42, 47, 41, 32, 31, 33, 31, 35, 35, 25, 29, 38, 39, 46, 58, 60, + 46, 26, 27, 54, 84, 85, 71, 62, 91, 98, 62, 52, 66, 89, 74, 62, + 56, 59, 55, 54, 52, 45, 59, 66, 255, 255, 255, 255, 255, 255, 255, 17, + 14, 14, 7, 42, 55, 66, 60, 57, 68, 77, 77, 82, 81, 81, 82, 83, + 85, 88, 89, 94, 98, 104, 108, 110, 111, 113, 114, 121, 120, 119, 120, 120, + 121, 120, 120, 126, 123, 121, 122, 126, 129, 128, 126, 125, 122, 122, 125, 124, + 121, 120, 123, 121, 120, 117, 115, 114, 115, 116, 117, 116, 116, 116, 117, 117, + 118, 118, 117, 118, 113, 109, 109, 111, 112, 110, 107, 108, 108, 107, 107, 106, + 106, 105, 105, 109, 109, 110, 110, 110, 111, 111, 111, 102, 104, 105, 103, 96, + 88, 83, 80, 85, 66, 69, 82, 91, 103, 96, 64, 48, 35, 29, 36, 45, + 44, 36, 32, 36, 30, 33, 36, 27, 28, 32, 31, 35, 50, 57, 46, 27, + 26, 47, 74, 79, 75, 54, 83, 93, 61, 58, 57, 82, 79, 64, 67, 53, + 61, 53, 58, 53, 63, 69, 255, 255, 255, 255, 255, 255, 255, 13, 10, 14, + 13, 63, 54, 55, 59, 63, 66, 74, 83, 77, 77, 77, 78, 81, 85, 88, + 91, 99, 103, 108, 111, 111, 111, 112, 113, 115, 116, 117, 117, 117, 117, 117, + 117, 119, 116, 113, 115, 119, 121, 120, 118, 119, 116, 116, 119, 119, 117, 117, + 121, 120, 118, 115, 112, 112, 113, 114, 116, 109, 109, 110, 111, 111, 111, 111, + 109, 114, 109, 105, 105, 107, 108, 106, 103, 102, 102, 102, 101, 101, 101, 101, + 100, 104, 104, 104, 104, 103, 103, 103, 103, 106, 107, 108, 104, 97, 89, 82, + 79, 86, 66, 66, 75, 82, 99, 101, 77, 55, 41, 29, 31, 38, 40, 35, + 31, 38, 29, 32, 36, 29, 26, 27, 24, 23, 38, 45, 35, 25, 31, 42, + 48, 66, 79, 60, 70, 75, 57, 63, 56, 70, 79, 69, 77, 54, 64, 54, + 62, 62, 66, 66, 255, 255, 255, 255, 255, 255, 255, 14, 10, 19, 29, 72, + 54, 52, 63, 70, 70, 75, 86, 80, 80, 81, 83, 87, 91, 94, 96, 103, + 106, 109, 111, 110, 110, 111, 112, 111, 113, 115, 115, 114, 114, 114, 115, 118, + 117, 115, 116, 117, 118, 118, 118, 118, 115, 114, 117, 118, 116, 117, 121, 118, + 116, 114, 112, 111, 111, 113, 114, 109, 110, 111, 112, 112, 112, 112, 109, 114, + 110, 108, 107, 107, 108, 107, 106, 103, 102, 102, 102, 102, 102, 102, 102, 105, + 105, 105, 104, 104, 103, 103, 103, 107, 108, 108, 104, 96, 88, 83, 80, 79, + 68, 64, 66, 73, 88, 95, 86, 75, 59, 42, 34, 34, 35, 32, 30, 39, + 30, 34, 40, 32, 25, 25, 23, 27, 37, 39, 32, 30, 38, 41, 37, 60, + 76, 67, 61, 63, 60, 63, 61, 61, 75, 72, 80, 60, 69, 59, 64, 70, + 72, 72, 124, 255, 255, 255, 255, 255, 177, 16, 14, 32, 51, 66, 60, 63, + 70, 76, 79, 82, 87, 89, 89, 91, 93, 96, 99, 101, 102, 104, 106, 108, + 109, 110, 111, 113, 115, 113, 116, 118, 118, 115, 113, 114, 115, 119, 120, 121, + 120, 119, 119, 121, 123, 120, 116, 115, 117, 116, 114, 115, 118, 118, 116, 115, + 113, 112, 112, 113, 113, 114, 115, 116, 117, 118, 117, 117, 114, 114, 113, 112, + 110, 108, 108, 109, 110, 106, 106, 106, 106, 106, 107, 107, 107, 108, 109, 109, + 109, 109, 110, 110, 110, 109, 110, 109, 105, 98, 92, 88, 86, 82, 86, 79, + 73, 81, 90, 95, 102, 91, 77, 56, 41, 35, 34, 32, 31, 37, 28, 35, + 44, 34, 25, 27, 27, 37, 36, 35, 36, 36, 35, 42, 50, 67, 67, 67, + 60, 67, 70, 59, 67, 56, 65, 65, 70, 64, 72, 64, 61, 70, 77, 83, + 72, 255, 255, 255, 255, 255, 24, 19, 20, 43, 67, 57, 66, 76, 76, 79, + 87, 89, 85, 92, 92, 94, 96, 98, 99, 100, 101, 103, 105, 107, 109, 109, + 112, 115, 118, 117, 120, 122, 121, 118, 115, 115, 116, 115, 118, 120, 119, 117, + 117, 120, 124, 121, 116, 114, 115, 114, 110, 111, 114, 118, 117, 116, 115, 114, + 113, 113, 114, 113, 114, 116, 117, 118, 117, 116, 113, 109, 109, 110, 108, 104, + 103, 105, 108, 105, 105, 105, 105, 105, 105, 105, 105, 106, 106, 107, 108, 110, + 111, 112, 112, 112, 112, 111, 107, 101, 97, 94, 94, 71, 86, 78, 67, 75, + 78, 81, 97, 96, 83, 64, 46, 38, 36, 34, 32, 32, 27, 36, 46, 36, + 26, 29, 32, 34, 25, 25, 36, 32, 22, 35, 61, 77, 58, 64, 62, 76, + 79, 55, 72, 54, 57, 57, 59, 65, 72, 66, 55, 61, 74, 87, 77, 255, + 255, 255, 255, 255, 29, 5, 13, 70, 68, 63, 62, 68, 74, 78, 81, 83, + 83, 89, 91, 95, 97, 97, 98, 100, 102, 104, 105, 106, 107, 107, 110, 115, + 118, 120, 120, 120, 120, 120, 120, 120, 120, 114, 114, 115, 115, 115, 116, 116, + 116, 114, 113, 113, 112, 112, 113, 114, 114, 115, 116, 116, 114, 111, 110, 110, + 111, 119, 118, 118, 118, 119, 118, 115, 110, 115, 111, 109, 109, 111, 112, 113, + 113, 107, 107, 106, 106, 105, 105, 106, 107, 105, 105, 106, 107, 109, 110, 111, + 112, 110, 109, 111, 111, 103, 94, 94, 101, 78, 78, 77, 77, 78, 83, 90, + 95, 80, 92, 68, 37, 40, 45, 37, 35, 29, 26, 35, 39, 31, 29, 34, + 30, 33, 41, 31, 26, 35, 29, 26, 45, 67, 81, 53, 67, 76, 58, 72, + 64, 54, 43, 61, 61, 74, 58, 63, 48, 61, 72, 85, 76, 255, 255, 255, + 255, 255, 19, 6, 22, 76, 72, 68, 69, 74, 80, 84, 87, 88, 89, 87, + 89, 92, 94, 95, 96, 98, 100, 101, 104, 107, 110, 111, 112, 115, 117, 118, + 118, 118, 118, 118, 118, 118, 118, 117, 117, 117, 118, 118, 118, 119, 119, 116, + 115, 115, 115, 115, 116, 117, 117, 118, 119, 120, 119, 117, 116, 117, 119, 121, + 119, 118, 117, 117, 115, 112, 108, 114, 110, 108, 108, 111, 113, 113, 113, 111, + 111, 110, 108, 105, 104, 104, 105, 104, 104, 105, 107, 108, 109, 110, 111, 110, + 109, 110, 110, 103, 94, 94, 100, 86, 84, 81, 77, 76, 78, 84, 89, 97, + 83, 65, 58, 55, 44, 46, 63, 32, 24, 30, 37, 29, 25, 31, 30, 30, + 37, 29, 26, 33, 26, 22, 38, 59, 77, 58, 59, 75, 69, 71, 71, 57, + 45, 60, 61, 71, 59, 64, 50, 60, 72, 86, 78, 255, 255, 255, 255, 173, + 10, 8, 39, 81, 72, 72, 73, 78, 84, 88, 91, 92, 92, 91, 93, 96, + 97, 97, 98, 101, 103, 105, 109, 114, 117, 118, 118, 119, 120, 121, 121, 121, + 121, 121, 121, 121, 121, 116, 116, 116, 117, 117, 117, 118, 118, 116, 116, 116, + 116, 116, 117, 118, 119, 121, 122, 123, 123, 122, 122, 124, 126, 129, 126, 123, + 120, 119, 118, 116, 112, 113, 109, 107, 107, 110, 112, 113, 113, 114, 114, 113, + 110, 105, 102, 101, 102, 109, 109, 110, 111, 112, 113, 114, 114, 108, 108, 109, + 108, 103, 96, 95, 99, 88, 85, 80, 75, 72, 74, 80, 85, 92, 68, 62, + 68, 60, 52, 67, 87, 38, 23, 26, 34, 29, 23, 27, 30, 33, 37, 34, + 33, 37, 30, 25, 34, 50, 73, 70, 51, 69, 79, 63, 77, 62, 49, 58, + 61, 68, 61, 64, 53, 59, 70, 85, 80, 255, 255, 255, 255, 12, 6, 12, + 51, 81, 68, 71, 72, 78, 83, 87, 90, 91, 91, 93, 95, 97, 97, 98, + 99, 102, 104, 109, 112, 115, 116, 116, 116, 117, 118, 119, 119, 119, 119, 119, + 119, 119, 119, 110, 110, 110, 111, 111, 112, 112, 112, 113, 113, 113, 113, 115, + 116, 117, 118, 122, 122, 123, 122, 120, 121, 123, 126, 130, 127, 123, 120, 119, + 119, 117, 114, 110, 106, 105, 105, 108, 111, 112, 112, 112, 114, 114, 110, 105, + 100, 100, 101, 109, 109, 110, 111, 112, 113, 113, 114, 107, 108, 108, 107, 102, + 98, 97, 99, 89, 86, 81, 77, 75, 78, 85, 90, 78, 66, 69, 67, 51, + 58, 76, 77, 49, 28, 26, 36, 32, 25, 30, 35, 33, 34, 36, 38, 38, + 30, 25, 28, 42, 69, 86, 48, 60, 79, 52, 79, 68, 54, 57, 62, 65, + 64, 65, 56, 58, 67, 82, 81, 255, 255, 255, 255, 13, 3, 18, 61, 76, + 64, 69, 72, 77, 82, 86, 88, 89, 89, 90, 91, 93, 93, 93, 94, 97, + 100, 108, 108, 108, 107, 105, 105, 107, 110, 111, 111, 111, 111, 111, 111, 111, + 111, 107, 105, 105, 106, 106, 106, 107, 107, 107, 108, 108, 109, 110, 112, 114, + 117, 121, 121, 120, 118, 116, 117, 119, 122, 123, 120, 117, 115, 115, 115, 114, + 111, 109, 105, 104, 104, 107, 109, 110, 110, 107, 110, 112, 109, 103, 99, 99, + 101, 103, 103, 104, 104, 105, 106, 106, 106, 107, 108, 109, 106, 103, 102, 100, + 99, 91, 89, 84, 80, 79, 82, 88, 93, 84, 73, 79, 77, 56, 54, 64, + 59, 53, 30, 27, 34, 31, 28, 34, 36, 30, 27, 32, 37, 35, 28, 24, + 19, 28, 59, 94, 53, 53, 76, 51, 82, 74, 60, 56, 66, 64, 69, 67, + 59, 60, 64, 78, 82, 255, 255, 255, 255, 11, 2, 24, 67, 72, 67, 72, + 74, 79, 84, 88, 90, 91, 91, 93, 94, 95, 94, 94, 96, 99, 102, 110, + 109, 108, 105, 103, 104, 107, 109, 110, 110, 110, 110, 110, 110, 110, 108, 110, + 108, 108, 108, 109, 109, 110, 110, 108, 109, 109, 111, 112, 115, 117, 118, 123, + 123, 121, 119, 117, 117, 120, 123, 124, 122, 119, 118, 118, 117, 116, 112, 112, + 108, 105, 105, 107, 109, 110, 109, 103, 108, 112, 109, 103, 98, 99, 101, 103, + 103, 104, 104, 105, 105, 106, 106, 107, 110, 109, 106, 105, 105, 104, 100, 89, + 87, 83, 78, 74, 74, 78, 81, 88, 72, 77, 89, 77, 57, 57, 66, 52, + 33, 28, 31, 29, 33, 39, 34, 34, 26, 34, 42, 37, 32, 29, 19, 20, + 45, 90, 62, 53, 75, 61, 81, 80, 66, 57, 71, 64, 74, 68, 62, 64, + 63, 74, 84, 138, 255, 255, 255, 14, 8, 34, 72, 68, 71, 74, 77, 81, + 86, 90, 92, 92, 92, 99, 100, 100, 99, 99, 100, 104, 107, 111, 112, 113, + 112, 111, 111, 113, 115, 115, 115, 115, 115, 115, 115, 115, 113, 114, 112, 113, + 113, 113, 114, 114, 114, 114, 115, 116, 117, 120, 122, 124, 126, 128, 128, 127, + 124, 123, 125, 128, 132, 131, 129, 127, 126, 125, 123, 120, 115, 116, 112, 109, + 108, 110, 111, 111, 110, 104, 109, 114, 111, 103, 98, 99, 101, 108, 108, 108, + 109, 109, 109, 109, 110, 108, 111, 110, 106, 106, 109, 107, 101, 91, 89, 86, + 80, 75, 73, 74, 76, 82, 79, 78, 84, 85, 68, 58, 67, 52, 38, 33, + 29, 30, 41, 46, 33, 40, 29, 39, 48, 41, 38, 38, 24, 24, 36, 81, + 73, 59, 77, 73, 73, 84, 70, 58, 75, 66, 79, 70, 64, 71, 64, 73, + 88, 88, 255, 255, 255, 21, 14, 42, 76, 65, 75, 75, 77, 84, 87, 92, + 92, 95, 92, 101, 99, 101, 98, 99, 99, 105, 108, 106, 109, 113, 115, 115, + 114, 115, 116, 114, 114, 114, 114, 114, 114, 114, 114, 116, 114, 115, 115, 116, + 116, 118, 118, 122, 123, 124, 126, 128, 131, 133, 135, 132, 132, 134, 130, 132, + 133, 137, 141, 133, 131, 129, 128, 126, 122, 118, 112, 118, 115, 112, 111, 112, + 113, 113, 112, 106, 112, 116, 113, 104, 98, 98, 101, 105, 105, 107, 108, 108, + 108, 108, 108, 108, 112, 111, 107, 107, 111, 108, 102, 99, 98, 96, 91, 87, + 84, 84, 86, 79, 100, 89, 69, 74, 72, 54, 45, 55, 46, 38, 30, 34, + 50, 53, 36, 40, 27, 38, 48, 40, 38, 39, 23, 33, 34, 75, 81, 64, + 78, 80, 62, 86, 73, 59, 78, 67, 82, 70, 65, 78, 67, 71, 90, 93, + 255, 255, 20, 11, 16, 53, 73, 68, 72, 81, 83, 89, 88, 91, 90, 94, + 94, 99, 98, 101, 100, 104, 103, 106, 106, 113, 113, 114, 114, 115, 115, 115, + 115, 113, 113, 113, 114, 115, 116, 118, 119, 118, 117, 117, 116, 116, 117, 120, + 120, 125, 123, 124, 127, 133, 138, 139, 139, 139, 135, 135, 135, 142, 141, 137, + 132, 123, 124, 124, 122, 119, 119, 122, 124, 113, 111, 111, 112, 113, 114, 112, + 111, 110, 109, 107, 105, 104, 103, 102, 103, 101, 101, 104, 105, 106, 106, 107, + 107, 106, 106, 107, 108, 109, 108, 106, 104, 95, 95, 104, 87, 102, 94, 95, + 75, 88, 97, 106, 104, 90, 71, 56, 48, 52, 50, 41, 31, 37, 48, 46, + 36, 41, 31, 37, 28, 46, 28, 31, 21, 26, 42, 70, 94, 76, 66, 89, + 84, 80, 70, 67, 79, 81, 73, 63, 61, 81, 74, 62, 72, 90, 255, 255, + 16, 9, 21, 59, 72, 68, 74, 82, 87, 91, 93, 94, 95, 97, 99, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 113, 113, 114, 114, 114, 115, 114, + 114, 114, 114, 114, 115, 117, 117, 117, 117, 117, 117, 119, 120, 121, 122, 126, + 125, 128, 132, 136, 139, 138, 136, 134, 135, 135, 135, 136, 136, 135, 135, 130, + 129, 126, 125, 122, 122, 122, 120, 113, 110, 108, 110, 112, 113, 111, 108, 109, + 108, 107, 105, 104, 104, 104, 104, 103, 103, 103, 104, 106, 106, 106, 107, 104, + 105, 106, 108, 111, 112, 112, 112, 104, 97, 105, 97, 109, 93, 95, 88, 83, + 92, 104, 110, 105, 90, 71, 58, 58, 55, 48, 42, 46, 52, 48, 38, 53, + 41, 45, 36, 49, 33, 35, 25, 28, 40, 61, 85, 74, 66, 84, 76, 84, + 73, 75, 78, 84, 70, 68, 66, 81, 83, 68, 67, 89, 255, 255, 9, 8, + 30, 65, 72, 70, 78, 82, 87, 92, 94, 96, 98, 101, 103, 107, 107, 108, + 109, 110, 111, 112, 112, 113, 113, 113, 113, 114, 114, 114, 115, 119, 119, 118, + 118, 118, 119, 119, 120, 119, 119, 119, 120, 123, 124, 126, 127, 127, 128, 131, + 134, 137, 137, 135, 132, 132, 136, 140, 139, 136, 136, 138, 142, 130, 127, 124, + 124, 124, 125, 124, 119, 119, 114, 111, 113, 117, 118, 115, 111, 108, 107, 106, + 105, 104, 104, 104, 105, 105, 104, 104, 104, 106, 105, 105, 105, 114, 113, 112, + 110, 110, 109, 109, 108, 110, 100, 107, 108, 113, 94, 98, 103, 91, 94, 99, + 105, 104, 92, 74, 60, 61, 55, 49, 49, 53, 55, 50, 43, 53, 44, 48, + 44, 51, 37, 38, 31, 34, 43, 56, 79, 77, 70, 83, 75, 87, 72, 80, + 70, 86, 64, 71, 65, 76, 91, 72, 59, 84, 255, 255, 4, 9, 39, 66, + 68, 67, 74, 80, 85, 90, 93, 95, 98, 101, 103, 104, 104, 105, 106, 107, + 108, 108, 109, 112, 112, 112, 113, 113, 114, 114, 114, 118, 118, 117, 116, 116, + 116, 117, 117, 114, 115, 115, 116, 120, 122, 124, 125, 128, 129, 131, 132, 133, + 133, 132, 131, 130, 135, 139, 140, 138, 137, 136, 139, 123, 119, 116, 119, 123, + 126, 124, 119, 122, 116, 111, 113, 118, 120, 116, 112, 105, 104, 104, 103, 103, + 103, 104, 104, 105, 105, 104, 103, 104, 103, 103, 102, 117, 116, 112, 109, 109, + 108, 108, 108, 106, 104, 109, 110, 108, 99, 103, 111, 100, 97, 95, 94, 92, + 86, 77, 69, 63, 55, 49, 50, 55, 56, 52, 48, 45, 41, 46, 49, 51, + 42, 38, 32, 35, 44, 51, 72, 76, 70, 81, 77, 87, 68, 78, 59, 85, + 59, 70, 59, 64, 89, 70, 49, 72, 255, 176, 2, 13, 48, 66, 63, 63, + 68, 76, 82, 87, 90, 93, 95, 99, 101, 102, 102, 102, 103, 104, 105, 105, + 105, 108, 108, 108, 109, 109, 110, 110, 110, 110, 109, 109, 108, 108, 108, 108, + 109, 107, 107, 108, 110, 114, 116, 118, 119, 126, 125, 126, 125, 125, 127, 130, + 133, 126, 128, 131, 134, 134, 133, 128, 126, 121, 117, 115, 118, 122, 125, 123, + 117, 117, 111, 107, 108, 111, 113, 111, 107, 103, 103, 102, 101, 101, 101, 102, + 102, 104, 104, 103, 102, 103, 102, 101, 100, 106, 106, 106, 106, 110, 112, 114, + 116, 95, 106, 108, 103, 96, 102, 105, 106, 90, 91, 92, 91, 89, 86, 83, + 81, 71, 62, 53, 50, 56, 59, 56, 51, 41, 42, 46, 55, 50, 43, 32, + 29, 29, 42, 44, 61, 68, 61, 74, 77, 86, 67, 76, 55, 82, 59, 69, + 56, 54, 81, 68, 45, 62, 255, 13, 4, 24, 58, 66, 62, 65, 67, 76, + 81, 86, 89, 92, 94, 97, 100, 103, 104, 104, 104, 105, 105, 106, 106, 104, + 104, 105, 105, 105, 106, 106, 106, 109, 108, 108, 107, 108, 108, 109, 109, 110, + 111, 111, 112, 116, 118, 120, 122, 121, 121, 122, 121, 122, 126, 132, 137, 132, + 131, 131, 131, 131, 130, 126, 124, 126, 124, 122, 123, 124, 124, 120, 115, 116, + 112, 109, 108, 109, 110, 110, 109, 104, 103, 102, 101, 101, 101, 101, 101, 104, + 103, 103, 102, 103, 102, 101, 101, 106, 106, 106, 106, 109, 110, 111, 112, 93, + 109, 106, 102, 90, 104, 102, 99, 83, 88, 94, 96, 92, 84, 75, 70, 79, + 75, 64, 55, 61, 69, 67, 57, 50, 52, 51, 61, 48, 44, 29, 26, 33, + 47, 42, 54, 66, 59, 68, 76, 82, 72, 79, 63, 78, 61, 70, 62, 53, + 71, 69, 52, 54, 255, 10, 7, 37, 68, 70, 69, 75, 72, 79, 84, 88, + 91, 93, 96, 98, 101, 106, 106, 106, 106, 107, 107, 107, 108, 106, 106, 107, + 107, 107, 108, 108, 108, 113, 113, 113, 113, 114, 115, 116, 117, 116, 117, 117, + 118, 121, 123, 125, 126, 120, 122, 126, 128, 130, 134, 141, 147, 140, 140, 137, + 131, 125, 124, 126, 131, 127, 127, 127, 127, 124, 123, 121, 117, 116, 116, 115, + 112, 109, 109, 111, 114, 107, 106, 105, 103, 102, 101, 101, 101, 105, 105, 104, + 104, 105, 104, 104, 104, 112, 111, 110, 109, 109, 107, 105, 104, 103, 111, 103, + 109, 92, 101, 92, 95, 86, 87, 91, 95, 94, 85, 72, 62, 71, 77, 70, + 59, 66, 84, 84, 68, 57, 59, 50, 59, 41, 42, 30, 33, 45, 54, 39, + 49, 67, 60, 64, 70, 72, 78, 86, 75, 69, 60, 68, 72, 56, 61, 70, + 61, 47, 255, 6, 11, 46, 75, 73, 74, 83, 77, 82, 87, 91, 94, 96, + 98, 100, 103, 106, 106, 107, 107, 107, 107, 107, 108, 111, 111, 112, 112, 112, + 113, 113, 113, 113, 113, 113, 114, 115, 116, 118, 118, 115, 115, 115, 115, 119, + 120, 122, 123, 122, 126, 134, 138, 141, 145, 151, 156, 142, 142, 137, 126, 115, + 114, 123, 134, 122, 124, 127, 127, 124, 123, 122, 121, 112, 113, 114, 110, 105, + 104, 108, 113, 110, 109, 107, 105, 104, 103, 102, 102, 106, 106, 106, 105, 107, + 107, 106, 106, 107, 108, 109, 110, 112, 110, 109, 108, 114, 112, 101, 117, 98, + 96, 83, 94, 90, 86, 85, 91, 98, 98, 88, 77, 57, 70, 70, 60, 72, + 97, 98, 78, 60, 60, 47, 56, 37, 43, 34, 41, 49, 55, 32, 41, 64, + 58, 56, 58, 61, 80, 91, 83, 61, 56, 65, 79, 58, 54, 70, 66, 42, + 255, 7, 17, 43, 74, 81, 70, 68, 79, 84, 87, 91, 94, 95, 96, 97, + 99, 106, 106, 107, 107, 107, 108, 108, 108, 108, 110, 111, 113, 113, 112, 111, + 111, 114, 114, 113, 113, 113, 114, 115, 115, 108, 115, 122, 124, 123, 121, 123, + 126, 122, 123, 128, 133, 139, 144, 148, 149, 146, 141, 134, 130, 127, 126, 126, + 130, 124, 120, 136, 122, 117, 128, 117, 124, 117, 117, 118, 114, 110, 108, 109, + 112, 106, 105, 104, 103, 101, 102, 105, 107, 103, 109, 111, 107, 106, 107, 108, + 107, 113, 110, 108, 108, 111, 111, 108, 105, 110, 105, 106, 108, 99, 84, 79, + 83, 84, 86, 84, 83, 85, 88, 84, 78, 72, 62, 76, 87, 80, 83, 93, + 87, 57, 58, 36, 46, 37, 41, 26, 40, 45, 48, 50, 49, 49, 51, 49, + 46, 52, 76, 91, 70, 78, 51, 59, 76, 58, 68, 77, 62, 40, 186, 70, + 70, 72, 75, 76, 77, 82, 84, 86, 90, 94, 97, 98, 99, 101, 103, 107, + 107, 107, 107, 108, 108, 108, 109, 109, 110, 112, 113, 114, 113, 112, 111, 115, + 114, 114, 114, 115, 116, 117, 118, 112, 116, 120, 120, 119, 120, 124, 129, 132, + 128, 128, 132, 141, 147, 148, 146, 143, 140, 136, 133, 131, 129, 128, 129, 126, + 123, 136, 125, 123, 134, 123, 128, 123, 122, 120, 117, 113, 111, 111, 112, 108, + 108, 108, 107, 105, 104, 104, 104, 103, 109, 111, 107, 106, 107, 108, 106, 113, + 110, 107, 106, 110, 111, 110, 106, 106, 99, 100, 102, 96, 83, 78, 82, 85, + 83, 77, 71, 72, 77, 78, 75, 81, 70, 79, 88, 83, 87, 99, 95, 74, + 76, 57, 63, 56, 59, 47, 61, 51, 49, 48, 50, 51, 49, 46, 44, 47, + 73, 93, 77, 81, 53, 56, 70, 61, 71, 76, 61, 41, 113, 120, 111, 92, + 74, 73, 83, 90, 87, 89, 93, 97, 99, 101, 102, 105, 107, 106, 106, 107, + 107, 108, 108, 108, 108, 109, 110, 112, 113, 114, 113, 112, 111, 115, 115, 115, + 115, 116, 118, 119, 120, 121, 122, 122, 120, 121, 123, 130, 136, 138, 132, 130, + 135, 146, 153, 152, 148, 140, 139, 137, 135, 133, 132, 130, 129, 127, 125, 133, + 126, 127, 136, 128, 127, 126, 123, 119, 116, 115, 113, 111, 109, 110, 110, 109, + 108, 107, 105, 103, 101, 108, 113, 114, 111, 111, 112, 113, 110, 112, 110, 106, + 105, 108, 109, 109, 106, 104, 95, 93, 97, 95, 86, 81, 83, 84, 82, 76, + 69, 69, 73, 73, 70, 82, 72, 77, 83, 80, 86, 99, 100, 87, 89, 74, + 72, 62, 60, 50, 62, 61, 51, 48, 53, 55, 48, 42, 41, 42, 70, 96, + 89, 86, 60, 58, 68, 62, 71, 72, 57, 42, 120, 123, 104, 83, 73, 76, + 87, 87, 84, 91, 93, 97, 99, 101, 102, 105, 108, 105, 105, 105, 106, 106, + 106, 107, 107, 108, 109, 111, 112, 112, 112, 111, 110, 114, 114, 114, 115, 116, + 118, 120, 121, 122, 122, 121, 119, 120, 123, 129, 134, 127, 126, 128, 135, 144, + 150, 149, 147, 138, 138, 136, 132, 130, 133, 131, 130, 127, 126, 128, 125, 126, + 132, 126, 120, 122, 117, 113, 112, 113, 113, 110, 107, 110, 108, 105, 103, 103, + 103, 102, 102, 108, 112, 113, 109, 111, 112, 112, 109, 110, 109, 107, 106, 107, + 105, 104, 100, 102, 93, 90, 96, 97, 90, 85, 87, 75, 78, 78, 74, 71, + 70, 65, 59, 71, 64, 66, 72, 76, 81, 91, 95, 83, 86, 76, 68, 62, + 57, 50, 59, 62, 49, 43, 50, 52, 42, 33, 32, 35, 62, 88, 90, 81, + 62, 60, 66, 58, 67, 62, 48, 41, 112, 112, 87, 70, 76, 83, 84, 84, + 89, 91, 94, 96, 98, 99, 100, 104, 106, 103, 103, 103, 104, 104, 105, 105, + 105, 106, 108, 109, 111, 111, 110, 109, 109, 113, 113, 113, 114, 115, 117, 119, + 120, 113, 113, 114, 114, 116, 117, 120, 122, 114, 119, 128, 134, 136, 137, 137, + 137, 137, 138, 133, 126, 125, 131, 132, 131, 128, 130, 126, 126, 126, 126, 125, + 113, 116, 112, 108, 109, 111, 112, 111, 108, 109, 104, 98, 95, 97, 100, 103, + 104, 101, 104, 104, 101, 103, 106, 104, 100, 106, 108, 108, 107, 106, 101, 97, + 93, 99, 88, 86, 92, 94, 88, 84, 86, 68, 72, 73, 68, 63, 61, 55, + 49, 56, 54, 53, 60, 72, 75, 77, 83, 77, 81, 76, 66, 73, 67, 64, + 69, 57, 45, 38, 43, 44, 35, 26, 23, 30, 50, 73, 83, 69, 62, 61, + 65, 53, 61, 51, 39, 41, 121, 113, 85, 73, 81, 87, 84, 86, 97, 94, + 96, 98, 98, 98, 100, 103, 105, 103, 103, 103, 104, 104, 104, 105, 105, 107, + 108, 109, 111, 111, 111, 110, 109, 113, 113, 113, 114, 115, 117, 118, 119, 112, + 113, 115, 116, 119, 119, 119, 119, 120, 127, 137, 139, 136, 133, 133, 134, 137, + 139, 133, 123, 122, 130, 132, 129, 129, 137, 129, 131, 129, 124, 127, 113, 114, + 111, 110, 110, 112, 113, 113, 112, 110, 103, 95, 91, 95, 100, 104, 106, 102, + 104, 104, 101, 104, 107, 105, 100, 105, 107, 109, 107, 104, 99, 95, 92, 95, + 86, 86, 92, 92, 84, 81, 84, 76, 77, 74, 65, 59, 59, 59, 57, 49, + 51, 47, 54, 70, 70, 66, 74, 82, 85, 83, 70, 83, 73, 70, 66, 60, + 55, 49, 48, 47, 43, 35, 28, 38, 49, 65, 81, 64, 69, 69, 69, 53, + 61, 46, 34, 44, 109, 102, 88, 82, 85, 87, 88, 92, 99, 100, 101, 102, + 101, 100, 101, 104, 107, 104, 104, 105, 105, 106, 106, 106, 106, 109, 110, 111, + 113, 113, 112, 111, 111, 116, 116, 116, 116, 116, 117, 118, 119, 120, 120, 120, + 121, 125, 126, 125, 125, 134, 137, 141, 142, 140, 138, 138, 138, 136, 140, 136, + 125, 124, 132, 132, 127, 126, 139, 130, 135, 130, 121, 130, 116, 113, 113, 113, + 112, 111, 111, 112, 114, 114, 106, 98, 95, 98, 103, 105, 105, 109, 110, 109, + 107, 111, 114, 112, 106, 106, 107, 107, 105, 102, 100, 100, 99, 93, 88, 90, + 95, 92, 82, 79, 83, 79, 82, 79, 71, 64, 63, 64, 62, 50, 54, 46, + 49, 66, 63, 58, 68, 79, 80, 83, 67, 88, 76, 70, 59, 65, 69, 66, + 56, 53, 55, 49, 38, 49, 52, 61, 82, 62, 75, 73, 69, 60, 67, 47, + 35, 50, 114, 81, 85, 86, 84, 88, 96, 99, 94, 107, 108, 108, 106, 105, + 106, 108, 109, 106, 106, 107, 107, 107, 108, 108, 108, 111, 112, 113, 115, 115, + 114, 113, 113, 118, 118, 117, 117, 117, 118, 119, 119, 125, 122, 123, 123, 125, + 127, 129, 129, 137, 137, 134, 135, 138, 140, 141, 139, 135, 141, 139, 129, 127, + 134, 132, 124, 121, 138, 129, 135, 130, 119, 132, 118, 112, 113, 114, 112, 108, + 107, 109, 112, 118, 111, 103, 100, 103, 106, 105, 103, 111, 112, 112, 110, 113, + 116, 113, 107, 108, 108, 106, 102, 100, 101, 105, 108, 95, 91, 95, 100, 95, + 83, 80, 85, 71, 78, 81, 76, 69, 65, 60, 55, 54, 57, 45, 45, 62, + 59, 52, 63, 63, 65, 74, 63, 93, 85, 82, 68, 62, 73, 71, 57, 53, + 59, 54, 41, 49, 48, 54, 77, 56, 72, 68, 60, 67, 73, 50, 38, 55, + 105, 84, 77, 81, 91, 99, 99, 99, 102, 115, 111, 109, 108, 109, 111, 113, + 111, 111, 111, 111, 110, 108, 107, 107, 107, 115, 116, 117, 117, 115, 115, 116, + 117, 119, 119, 119, 120, 121, 122, 123, 124, 128, 129, 133, 131, 127, 128, 137, + 143, 138, 144, 148, 147, 142, 140, 145, 147, 134, 137, 140, 139, 135, 131, 126, + 126, 132, 132, 132, 131, 127, 124, 121, 117, 116, 112, 110, 109, 110, 111, 111, + 111, 104, 107, 107, 104, 100, 100, 106, 113, 110, 110, 112, 112, 112, 111, 110, + 110, 102, 106, 110, 109, 104, 99, 97, 97, 104, 96, 88, 83, 81, 79, 76, + 73, 72, 74, 76, 76, 73, 71, 69, 69, 55, 48, 44, 46, 48, 46, 49, + 56, 64, 73, 70, 66, 78, 80, 73, 72, 73, 70, 73, 68, 52, 49, 55, + 53, 51, 51, 53, 58, 63, 65, 65, 62, 59, 56, 58, 48, 36, 95, 74, + 70, 73, 81, 88, 94, 104, 115, 114, 112, 111, 110, 111, 113, 113, 114, 113, + 112, 111, 111, 108, 109, 109, 110, 114, 115, 117, 118, 117, 117, 119, 121, 119, + 119, 119, 120, 121, 123, 125, 126, 125, 127, 129, 128, 128, 127, 129, 132, 143, + 141, 140, 143, 148, 151, 150, 149, 148, 144, 139, 137, 136, 134, 128, 125, 133, + 132, 131, 130, 126, 124, 122, 118, 116, 113, 110, 109, 110, 112, 112, 111, 105, + 106, 106, 102, 98, 98, 102, 109, 111, 113, 114, 114, 113, 112, 111, 109, 110, + 111, 111, 108, 103, 99, 96, 93, 97, 92, 89, 89, 90, 89, 86, 83, 73, + 71, 69, 68, 68, 67, 65, 63, 56, 51, 48, 48, 47, 42, 44, 50, 62, + 71, 67, 64, 75, 76, 68, 67, 75, 77, 84, 77, 55, 48, 56, 58, 48, + 48, 48, 49, 51, 54, 59, 61, 56, 54, 61, 58, 46, 78, 53, 58, 71, + 82, 89, 92, 100, 108, 112, 112, 112, 112, 112, 113, 114, 115, 115, 114, 112, + 111, 109, 110, 112, 114, 113, 115, 117, 118, 118, 119, 122, 124, 118, 119, 119, + 121, 123, 125, 127, 128, 127, 129, 131, 133, 134, 133, 133, 132, 148, 148, 148, + 147, 150, 152, 154, 153, 153, 144, 135, 133, 135, 136, 131, 126, 133, 132, 130, + 127, 123, 122, 121, 119, 116, 112, 109, 109, 110, 111, 111, 110, 110, 111, 110, + 106, 102, 101, 104, 109, 112, 114, 114, 113, 112, 111, 109, 108, 106, 104, 103, + 103, 104, 104, 104, 101, 90, 88, 87, 86, 84, 80, 74, 69, 78, 74, 70, + 69, 70, 70, 67, 64, 58, 56, 55, 52, 47, 40, 40, 44, 58, 66, 63, + 60, 70, 69, 62, 62, 73, 80, 92, 84, 57, 46, 54, 58, 53, 51, 48, + 45, 46, 50, 58, 62, 49, 52, 62, 68, 57, 58, 39, 43, 54, 65, 77, + 84, 93, 99, 109, 111, 113, 113, 114, 114, 115, 116, 116, 114, 111, 110, 108, + 110, 113, 115, 113, 115, 117, 118, 118, 118, 120, 122, 118, 119, 120, 121, 123, + 126, 128, 130, 127, 128, 130, 135, 139, 142, 142, 140, 147, 152, 155, 150, 143, + 140, 147, 154, 144, 137, 130, 129, 131, 133, 130, 128, 131, 129, 127, 124, 120, + 119, 119, 119, 114, 110, 107, 107, 108, 109, 109, 108, 110, 111, 110, 107, 104, + 103, 106, 110, 112, 113, 110, 108, 106, 105, 105, 105, 104, 100, 96, 96, 99, + 103, 103, 100, 96, 93, 92, 90, 85, 79, 72, 68, 73, 73, 72, 71, 70, + 69, 67, 66, 59, 60, 60, 55, 49, 42, 40, 42, 50, 57, 56, 55, 64, + 63, 57, 60, 68, 75, 87, 80, 55, 44, 49, 50, 58, 52, 46, 44, 47, + 53, 57, 58, 44, 49, 58, 72, 61, 46, 39, 29, 21, 21, 41, 65, 88, + 99, 104, 108, 112, 114, 115, 115, 116, 118, 116, 114, 111, 109, 107, 109, 112, + 114, 114, 116, 117, 117, 116, 115, 117, 118, 118, 119, 120, 121, 123, 126, 128, + 130, 129, 129, 130, 134, 138, 144, 145, 145, 151, 152, 151, 147, 146, 145, 149, + 150, 136, 134, 132, 130, 128, 128, 127, 128, 128, 126, 124, 121, 117, 116, 116, + 116, 112, 109, 106, 106, 107, 108, 108, 107, 104, 104, 104, 103, 102, 102, 104, + 106, 111, 110, 105, 101, 99, 98, 100, 101, 109, 103, 95, 91, 90, 90, 89, + 85, 86, 84, 84, 82, 78, 75, 72, 70, 58, 63, 67, 67, 63, 59, 59, + 60, 56, 58, 58, 53, 48, 43, 41, 40, 42, 49, 49, 50, 59, 57, 52, + 58, 63, 65, 74, 73, 56, 48, 48, 43, 56, 48, 42, 44, 51, 55, 52, + 46, 40, 46, 50, 71, 59, 40, 31, 18, 9, 11, 33, 62, 82, 88, 96, + 103, 110, 114, 115, 116, 117, 120, 117, 115, 113, 111, 108, 109, 111, 112, 115, + 116, 117, 117, 115, 114, 115, 117, 118, 119, 119, 121, 123, 125, 127, 130, 135, + 136, 136, 137, 140, 142, 144, 145, 162, 151, 142, 147, 161, 167, 161, 150, 138, + 138, 136, 132, 127, 125, 124, 127, 126, 125, 123, 120, 116, 115, 114, 113, 111, + 108, 106, 105, 106, 107, 107, 107, 104, 104, 103, 103, 104, 105, 106, 106, 111, + 109, 105, 100, 97, 96, 96, 96, 102, 97, 90, 85, 83, 83, 83, 81, 85, + 84, 84, 81, 75, 70, 67, 66, 57, 60, 63, 62, 59, 56, 55, 56, 53, + 54, 52, 47, 45, 44, 41, 36, 37, 44, 44, 47, 55, 50, 46, 55, 58, + 56, 64, 67, 59, 56, 54, 45, 55, 49, 47, 51, 58, 60, 53, 45, 38, + 45, 43, 71, 58, 41, 25, 22, 21, 23, 40, 60, 71, 73, 90, 99, 108, + 114, 115, 116, 119, 122, 118, 117, 116, 114, 111, 110, 110, 111, 114, 116, 117, + 117, 116, 116, 118, 120, 119, 119, 119, 120, 121, 123, 125, 128, 132, 138, 142, + 143, 142, 141, 144, 146, 158, 150, 147, 152, 162, 167, 163, 154, 143, 138, 132, + 127, 126, 127, 126, 127, 125, 125, 124, 122, 118, 116, 114, 113, 112, 110, 107, + 106, 107, 109, 109, 108, 109, 108, 107, 107, 108, 108, 108, 107, 108, 109, 109, + 107, 104, 99, 94, 91, 90, 89, 86, 82, 79, 80, 83, 84, 96, 97, 100, + 97, 90, 83, 77, 75, 73, 67, 61, 60, 62, 63, 59, 55, 57, 56, 50, + 45, 47, 49, 44, 35, 37, 42, 43, 45, 52, 44, 40, 50, 51, 49, 58, + 64, 60, 60, 61, 52, 51, 52, 55, 58, 60, 59, 55, 51, 39, 47, 42, + 74, 60, 45, 35, 33, 25, 21, 29, 48, 63, 69, 87, 96, 107, 113, 115, + 116, 119, 123, 120, 120, 118, 117, 113, 112, 111, 110, 113, 115, 117, 118, 118, + 119, 121, 123, 119, 119, 119, 120, 121, 122, 123, 126, 119, 129, 137, 140, 138, + 136, 139, 142, 139, 146, 153, 151, 145, 143, 148, 152, 144, 134, 123, 120, 124, + 130, 130, 130, 125, 126, 126, 125, 121, 118, 115, 113, 114, 111, 109, 108, 109, + 110, 110, 110, 110, 108, 106, 106, 106, 105, 104, 104, 107, 110, 114, 115, 111, + 103, 94, 88, 92, 92, 89, 83, 76, 73, 76, 77, 74, 78, 86, 90, 86, + 80, 76, 74, 86, 72, 57, 55, 62, 66, 60, 52, 63, 60, 53, 46, 50, + 54, 47, 37, 39, 43, 43, 45, 50, 40, 35, 46, 44, 44, 55, 62, 58, + 60, 64, 58, 43, 50, 57, 58, 54, 50, 51, 53, 39, 49, 43, 78, 64, + 46, 55, 52, 55, 63, 61, 52, 53, 63, 80, 97, 104, 100, 107, 124, 126, + 115, 117, 116, 116, 115, 113, 114, 115, 115, 117, 119, 120, 119, 117, 115, 115, + 116, 111, 121, 119, 108, 107, 116, 112, 100, 111, 114, 116, 118, 126, 131, 130, + 125, 131, 133, 135, 135, 136, 134, 134, 132, 132, 134, 135, 131, 125, 123, 125, + 130, 131, 131, 130, 128, 122, 118, 115, 112, 116, 115, 114, 113, 112, 112, 112, + 112, 112, 111, 110, 109, 107, 106, 105, 105, 105, 105, 106, 107, 107, 108, 109, + 109, 102, 102, 99, 90, 80, 75, 77, 78, 80, 77, 72, 78, 90, 84, 72, + 72, 82, 82, 74, 61, 53, 55, 61, 64, 64, 58, 54, 51, 49, 44, 45, + 50, 33, 38, 44, 47, 46, 38, 29, 23, 36, 35, 56, 56, 66, 61, 68, + 50, 46, 55, 62, 61, 57, 53, 51, 48, 44, 36, 59, 65, 65, 46, 60, + 62, 73, 80, 79, 69, 61, 60, 69, 80, 93, 102, 110, 116, 116, 114, 119, + 118, 117, 117, 115, 115, 115, 116, 117, 121, 126, 128, 124, 116, 110, 106, 105, + 111, 109, 100, 97, 97, 89, 77, 75, 83, 87, 82, 78, 85, 95, 101, 99, + 105, 110, 113, 116, 121, 130, 133, 123, 127, 133, 135, 133, 129, 126, 126, 126, + 126, 125, 124, 119, 115, 112, 110, 115, 114, 113, 112, 111, 111, 111, 111, 110, + 110, 109, 108, 106, 105, 104, 104, 106, 106, 107, 108, 109, 109, 110, 110, 106, + 107, 105, 100, 91, 84, 79, 76, 82, 90, 86, 79, 87, 89, 80, 75, 68, + 71, 69, 63, 61, 66, 71, 73, 64, 60, 56, 54, 51, 45, 44, 47, 45, + 43, 38, 31, 28, 26, 28, 31, 28, 27, 49, 50, 63, 60, 69, 53, 53, + 54, 56, 59, 57, 53, 48, 46, 51, 42, 62, 67, 65, 49, 66, 74, 86, + 92, 92, 86, 76, 65, 67, 70, 83, 103, 113, 112, 113, 119, 119, 118, 117, + 116, 113, 113, 113, 114, 118, 122, 127, 128, 123, 116, 109, 105, 95, 97, 99, + 101, 99, 92, 82, 75, 62, 64, 63, 55, 51, 59, 70, 76, 92, 97, 100, + 99, 97, 99, 108, 112, 117, 120, 125, 130, 133, 133, 130, 129, 125, 125, 125, + 124, 120, 117, 115, 113, 113, 112, 111, 110, 109, 109, 109, 109, 110, 110, 109, + 108, 107, 106, 105, 104, 107, 107, 108, 108, 109, 110, 110, 111, 110, 111, 111, + 110, 105, 96, 84, 75, 80, 98, 95, 80, 82, 88, 83, 77, 69, 72, 71, + 67, 65, 66, 66, 63, 63, 60, 58, 58, 55, 47, 43, 44, 44, 44, 43, + 37, 31, 25, 23, 23, 30, 27, 47, 45, 55, 51, 60, 43, 56, 49, 49, + 55, 57, 51, 47, 47, 53, 43, 62, 65, 128, 56, 65, 80, 91, 88, 89, + 89, 89, 82, 77, 72, 75, 89, 103, 110, 113, 117, 116, 115, 114, 112, 110, + 110, 110, 110, 119, 120, 121, 119, 115, 112, 111, 111, 93, 91, 95, 105, 104, + 92, 81, 79, 74, 63, 54, 51, 59, 70, 69, 62, 64, 72, 80, 83, 87, + 89, 100, 106, 112, 111, 111, 114, 121, 127, 130, 132, 121, 122, 123, 123, 120, + 118, 116, 114, 111, 111, 109, 108, 107, 107, 107, 107, 111, 110, 110, 109, 108, + 107, 106, 106, 107, 107, 107, 108, 108, 109, 109, 109, 111, 111, 111, 114, 113, + 105, 92, 79, 74, 90, 92, 82, 80, 79, 75, 78, 75, 76, 72, 65, 61, + 60, 55, 50, 60, 57, 57, 59, 59, 51, 45, 44, 41, 44, 46, 42, 36, + 26, 19, 16, 29, 26, 43, 39, 49, 45, 54, 39, 49, 42, 43, 52, 53, + 48, 49, 57, 49, 41, 59, 62, 255, 68, 59, 77, 92, 89, 86, 90, 96, + 96, 90, 82, 72, 70, 84, 103, 110, 107, 115, 114, 113, 112, 109, 109, 110, + 110, 116, 117, 118, 116, 113, 110, 109, 109, 97, 91, 94, 102, 100, 84, 74, + 73, 71, 65, 63, 65, 74, 83, 77, 66, 62, 70, 77, 78, 77, 75, 78, + 80, 99, 98, 97, 101, 108, 115, 119, 121, 112, 113, 114, 115, 113, 113, 111, + 110, 112, 111, 110, 109, 108, 108, 108, 108, 110, 110, 109, 108, 108, 107, 107, + 106, 105, 105, 106, 106, 106, 107, 107, 107, 109, 107, 107, 111, 114, 110, 99, + 88, 72, 78, 83, 87, 86, 72, 68, 82, 71, 72, 68, 61, 57, 58, 57, + 55, 57, 53, 54, 58, 60, 55, 49, 47, 49, 47, 41, 35, 31, 27, 25, + 25, 21, 17, 35, 32, 45, 45, 58, 45, 34, 35, 42, 49, 47, 45, 54, + 67, 49, 43, 62, 63, 255, 199, 62, 77, 92, 93, 91, 91, 96, 100, 102, + 97, 84, 73, 79, 97, 104, 101, 116, 115, 115, 114, 112, 113, 114, 114, 113, + 118, 122, 123, 118, 111, 104, 100, 97, 92, 92, 99, 99, 91, 85, 84, 72, + 83, 93, 94, 93, 96, 97, 96, 101, 102, 101, 98, 90, 80, 72, 68, 85, + 88, 93, 98, 102, 104, 103, 104, 107, 108, 110, 112, 112, 112, 111, 111, 112, + 111, 110, 108, 108, 107, 107, 107, 106, 106, 105, 105, 104, 104, 103, 103, 105, + 105, 105, 105, 105, 105, 105, 105, 107, 105, 105, 109, 114, 113, 107, 98, 80, + 77, 79, 90, 94, 76, 70, 86, 75, 77, 74, 65, 58, 58, 60, 61, 56, + 51, 50, 54, 59, 55, 52, 51, 50, 48, 48, 48, 50, 46, 37, 30, 25, + 20, 34, 29, 39, 38, 51, 38, 25, 34, 43, 44, 41, 44, 56, 67, 51, + 49, 69, 66, 255, 255, 81, 81, 86, 91, 92, 92, 96, 102, 105, 104, 101, + 97, 91, 88, 92, 99, 115, 114, 114, 115, 113, 114, 116, 116, 116, 120, 125, + 127, 123, 115, 109, 105, 102, 99, 98, 101, 105, 107, 109, 108, 97, 107, 115, + 113, 108, 109, 112, 114, 111, 110, 109, 111, 111, 108, 103, 99, 87, 92, 97, + 99, 99, 99, 99, 102, 104, 106, 108, 111, 111, 112, 112, 112, 112, 111, 110, + 108, 108, 107, 107, 108, 106, 106, 105, 105, 105, 104, 104, 104, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 108, 112, 116, 115, 111, 105, 93, 88, 83, + 87, 95, 87, 79, 87, 84, 90, 89, 77, 65, 62, 65, 67, 59, 52, 47, + 50, 55, 54, 52, 51, 47, 47, 51, 60, 69, 64, 48, 34, 34, 26, 37, + 26, 33, 28, 39, 25, 25, 38, 45, 39, 37, 46, 55, 55, 45, 47, 70, + 65, 255, 255, 106, 91, 79, 83, 86, 87, 92, 102, 98, 99, 109, 118, 102, + 78, 77, 95, 115, 114, 114, 113, 112, 113, 115, 116, 119, 121, 124, 121, 121, + 119, 119, 120, 115, 113, 108, 104, 106, 112, 116, 116, 121, 119, 116, 111, 112, + 114, 111, 107, 121, 116, 111, 109, 111, 109, 104, 98, 101, 103, 103, 100, 96, + 98, 104, 112, 100, 99, 103, 106, 106, 108, 108, 110, 112, 111, 112, 109, 110, + 108, 108, 108, 109, 109, 108, 108, 108, 108, 108, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 109, 112, 116, 119, 118, 114, 110, 100, 101, 89, 83, 93, + 95, 89, 85, 84, 94, 97, 87, 75, 71, 76, 80, 63, 53, 46, 48, 52, + 52, 50, 51, 53, 44, 39, 44, 55, 59, 54, 44, 30, 22, 32, 22, 29, + 26, 37, 25, 29, 43, 46, 36, 35, 48, 52, 43, 34, 40, 63, 60, 255, + 255, 133, 113, 90, 75, 71, 76, 86, 94, 101, 98, 101, 114, 118, 107, 97, + 92, 117, 116, 115, 116, 116, 116, 116, 118, 118, 118, 121, 119, 121, 120, 119, + 118, 116, 115, 117, 117, 119, 120, 121, 122, 120, 117, 116, 116, 118, 117, 113, + 109, 118, 117, 115, 114, 112, 110, 108, 108, 107, 106, 108, 114, 120, 120, 113, + 103, 105, 109, 103, 91, 89, 97, 99, 93, 111, 114, 117, 114, 113, 109, 111, + 113, 108, 108, 108, 108, 106, 105, 103, 103, 109, 109, 109, 109, 109, 109, 109, + 109, 112, 113, 114, 115, 116, 117, 118, 118, 107, 106, 99, 92, 92, 97, 99, + 91, 98, 100, 104, 104, 93, 81, 77, 80, 90, 78, 60, 48, 49, 55, 54, + 48, 50, 41, 37, 41, 45, 43, 44, 47, 27, 29, 27, 21, 22, 26, 28, + 29, 26, 37, 42, 42, 43, 50, 51, 44, 35, 32, 68, 55, 255, 255, 128, + 124, 109, 87, 83, 93, 100, 98, 110, 114, 115, 115, 116, 118, 116, 112, 103, + 107, 115, 121, 124, 123, 120, 117, 120, 120, 120, 121, 120, 119, 121, 120, 117, + 117, 118, 118, 120, 121, 122, 123, 123, 120, 117, 116, 118, 119, 115, 114, 105, + 106, 108, 109, 111, 112, 114, 116, 109, 106, 104, 107, 112, 116, 115, 112, 124, + 128, 122, 112, 110, 117, 119, 114, 113, 114, 115, 113, 110, 108, 107, 108, 108, + 108, 108, 109, 106, 106, 105, 104, 107, 107, 107, 107, 107, 107, 107, 107, 111, + 111, 112, 113, 115, 116, 117, 117, 110, 108, 101, 93, 90, 93, 92, 86, 79, + 80, 85, 91, 87, 77, 68, 66, 92, 87, 77, 65, 59, 58, 55, 49, 46, + 36, 30, 34, 39, 39, 40, 42, 40, 41, 36, 25, 18, 17, 20, 20, 18, + 31, 43, 40, 37, 41, 49, 46, 41, 38, 71, 59, 255, 255, 255, 132, 120, + 89, 74, 79, 80, 68, 90, 107, 116, 113, 118, 130, 136, 129, 99, 106, 116, + 124, 128, 125, 122, 122, 122, 122, 122, 123, 124, 123, 122, 121, 121, 121, 120, + 119, 121, 121, 122, 122, 122, 119, 115, 114, 114, 117, 118, 119, 118, 118, 118, + 115, 115, 115, 115, 115, 117, 114, 109, 109, 110, 112, 111, 109, 114, 117, 115, + 108, 105, 112, 114, 110, 115, 115, 115, 113, 110, 108, 106, 107, 106, 107, 108, + 108, 107, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107, 107, 109, 109, 110, + 111, 112, 114, 115, 115, 114, 111, 104, 95, 89, 88, 86, 81, 88, 85, 87, + 95, 97, 91, 83, 78, 83, 86, 85, 74, 63, 56, 49, 44, 36, 30, 27, + 31, 36, 37, 39, 41, 50, 55, 53, 43, 34, 25, 20, 14, 15, 29, 43, + 42, 35, 35, 44, 47, 44, 42, 71, 255, 255, 255, 255, 121, 108, 77, 56, + 50, 48, 43, 41, 55, 66, 76, 92, 115, 139, 151, 107, 113, 119, 120, 122, + 122, 122, 123, 123, 123, 123, 123, 125, 123, 122, 121, 122, 121, 120, 119, 120, + 119, 119, 119, 118, 117, 115, 114, 115, 116, 119, 119, 130, 128, 126, 123, 120, + 118, 116, 116, 116, 115, 115, 115, 115, 115, 114, 112, 115, 118, 117, 113, 112, + 117, 118, 115, 115, 116, 115, 115, 113, 112, 110, 110, 104, 105, 106, 107, 106, + 106, 106, 105, 108, 108, 108, 108, 108, 108, 108, 108, 107, 107, 108, 109, 110, + 111, 112, 113, 116, 113, 107, 100, 92, 88, 84, 81, 87, 82, 81, 86, 88, + 87, 84, 84, 74, 80, 81, 72, 61, 51, 43, 35, 23, 31, 41, 47, 47, + 45, 46, 49, 52, 59, 66, 67, 64, 52, 36, 19, 17, 26, 40, 44, 40, + 36, 41, 42, 36, 40, 68, 255, 255, 255, 255, 204, 89, 72, 55, 44, 51, + 64, 59, 44, 32, 35, 40, 50, 74, 101, 95, 103, 113, 119, 121, 120, 123, + 124, 124, 124, 126, 125, 124, 123, 124, 123, 122, 121, 121, 119, 117, 116, 116, + 116, 116, 119, 121, 122, 122, 120, 122, 121, 123, 121, 122, 120, 121, 122, 124, + 125, 114, 114, 113, 113, 114, 118, 122, 126, 110, 111, 108, 104, 103, 104, 101, + 98, 109, 109, 109, 110, 111, 112, 110, 110, 103, 103, 105, 106, 104, 104, 104, + 104, 106, 106, 106, 106, 106, 106, 106, 106, 105, 105, 106, 107, 109, 110, 111, + 111, 113, 110, 106, 101, 93, 86, 83, 82, 73, 72, 76, 83, 84, 83, 84, + 87, 78, 82, 79, 69, 59, 50, 40, 31, 24, 47, 71, 80, 74, 67, 67, + 70, 60, 64, 70, 76, 83, 76, 58, 37, 17, 17, 27, 40, 44, 38, 36, + 34, 28, 36, 62, 255, 255, 255, 255, 255, 199, 78, 66, 55, 66, 88, 88, + 61, 39, 38, 33, 20, 23, 38, 68, 84, 105, 120, 126, 127, 128, 128, 127, + 125, 127, 126, 125, 123, 124, 123, 123, 121, 121, 118, 116, 115, 114, 114, 119, + 122, 125, 126, 125, 124, 124, 124, 122, 122, 122, 123, 125, 127, 132, 132, 130, + 127, 119, 111, 107, 109, 117, 124, 131, 130, 127, 123, 120, 116, 111, 110, 102, + 101, 101, 103, 106, 108, 106, 105, 104, 104, 105, 106, 104, 104, 104, 103, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, 107, 108, 109, 110, 110, 107, + 105, 103, 100, 92, 83, 79, 81, 65, 69, 78, 89, 91, 89, 89, 91, 85, + 85, 78, 65, 53, 45, 36, 28, 40, 69, 98, 106, 97, 88, 87, 89, 78, + 76, 73, 75, 84, 85, 75, 61, 24, 13, 17, 34, 44, 39, 33, 30, 29, + 39, 125, 255, 255, 255, 255, 255, 255, 89, 76, 68, 74, 84, 85, 65, 48, + 53, 58, 55, 50, 53, 62, 80, 104, 122, 129, 132, 134, 135, 129, 129, 129, + 128, 129, 127, 125, 124, 126, 125, 122, 119, 118, 116, 114, 114, 118, 120, 122, + 121, 119, 118, 122, 125, 128, 127, 126, 126, 126, 128, 132, 132, 141, 140, 136, + 126, 113, 108, 111, 115, 119, 118, 118, 118, 113, 109, 106, 105, 106, 104, 103, + 105, 109, 111, 108, 106, 107, 107, 108, 108, 106, 105, 104, 104, 105, 105, 105, + 105, 105, 105, 105, 105, 104, 104, 105, 106, 108, 109, 110, 110, 106, 103, 102, + 102, 92, 81, 78, 81, 67, 63, 65, 74, 79, 80, 79, 80, 85, 89, 86, + 71, 56, 47, 44, 42, 62, 86, 108, 112, 104, 99, 98, 97, 91, 89, 84, + 80, 84, 88, 87, 81, 50, 31, 27, 39, 47, 38, 32, 32, 36, 45, 255, + 255, 255, 255, 255, 255, 255, 97, 85, 82, 81, 78, 125, 98, 62, 47, 52, + 63, 68, 64, 75, 89, 109, 122, 126, 130, 136, 140, 133, 131, 130, 130, 130, + 129, 127, 126, 128, 127, 124, 121, 119, 116, 115, 114, 116, 116, 116, 113, 110, + 111, 117, 121, 119, 118, 118, 119, 123, 127, 131, 133, 132, 138, 144, 142, 132, + 121, 117, 117, 115, 115, 118, 122, 121, 119, 117, 118, 115, 113, 111, 113, 116, + 117, 114, 111, 110, 110, 110, 110, 108, 107, 105, 105, 109, 109, 109, 109, 109, + 109, 109, 109, 104, 104, 105, 106, 108, 109, 110, 110, 108, 105, 105, 105, 95, + 82, 78, 82, 90, 75, 63, 64, 71, 77, 80, 83, 85, 95, 98, 84, 67, + 59, 61, 65, 77, 93, 106, 105, 101, 100, 99, 96, 92, 97, 97, 92, 90, + 91, 93, 92, 80, 55, 44, 50, 51, 38, 34, 36, 40, 49, 255, 255, 255, + 255, 255, 255, 255, 98, 89, 88, 89, 89, 99, 90, 78, 71, 60, 55, 70, + 89, 82, 93, 109, 121, 126, 129, 134, 136, 139, 136, 133, 129, 126, 124, 126, + 126, 126, 123, 125, 126, 120, 111, 112, 117, 122, 111, 108, 107, 104, 109, 114, + 108, 118, 118, 119, 118, 121, 124, 127, 127, 130, 135, 137, 133, 134, 132, 119, + 105, 113, 116, 119, 122, 121, 118, 113, 109, 116, 113, 110, 112, 115, 116, 110, + 106, 106, 110, 114, 114, 109, 106, 106, 106, 109, 110, 110, 110, 110, 109, 108, + 107, 108, 108, 107, 106, 105, 105, 106, 106, 103, 105, 98, 91, 95, 103, 93, + 74, 85, 76, 69, 71, 71, 72, 75, 81, 81, 92, 101, 92, 76, 79, 85, + 76, 83, 105, 96, 99, 90, 107, 100, 108, 103, 104, 98, 98, 108, 103, 97, + 99, 103, 76, 38, 44, 41, 39, 21, 29, 33, 48, 255, 255, 255, 255, 255, + 255, 255, 95, 84, 84, 87, 85, 94, 99, 99, 96, 97, 103, 107, 105, 91, + 100, 113, 123, 127, 130, 133, 136, 135, 134, 132, 129, 127, 126, 127, 127, 131, + 125, 122, 122, 122, 122, 129, 136, 110, 103, 108, 114, 113, 120, 124, 117, 120, + 125, 128, 127, 134, 144, 145, 138, 123, 130, 135, 131, 124, 123, 121, 115, 114, + 115, 117, 119, 121, 121, 121, 121, 120, 114, 108, 108, 113, 119, 120, 120, 108, + 110, 112, 111, 106, 105, 106, 108, 111, 111, 110, 110, 109, 109, 109, 109, 109, + 108, 108, 107, 106, 104, 104, 103, 102, 104, 98, 91, 96, 106, 99, 82, 75, + 69, 64, 65, 70, 78, 81, 84, 87, 87, 94, 96, 86, 87, 99, 103, 96, + 101, 91, 99, 113, 126, 116, 115, 108, 106, 102, 103, 114, 112, 107, 107, 107, + 84, 43, 39, 35, 40, 26, 32, 38, 119, 255, 255, 255, 255, 255, 255, 255, + 92, 79, 85, 91, 88, 95, 107, 107, 104, 110, 118, 109, 90, 95, 102, 112, + 118, 121, 122, 124, 127, 128, 128, 128, 128, 130, 129, 128, 127, 135, 128, 126, + 130, 135, 138, 141, 142, 137, 122, 115, 103, 84, 75, 70, 59, 73, 66, 77, + 101, 119, 124, 140, 159, 150, 139, 126, 117, 119, 124, 127, 124, 116, 115, 114, + 115, 115, 118, 122, 124, 122, 117, 112, 112, 116, 122, 123, 124, 113, 113, 113, + 111, 107, 107, 109, 111, 112, 111, 109, 108, 108, 108, 109, 110, 109, 109, 109, + 107, 105, 102, 100, 98, 99, 101, 96, 89, 94, 107, 104, 90, 84, 81, 73, + 66, 70, 80, 80, 74, 97, 89, 96, 106, 96, 88, 95, 103, 107, 102, 101, + 107, 134, 129, 119, 111, 103, 100, 99, 102, 112, 115, 112, 108, 113, 99, 54, + 37, 29, 45, 36, 39, 48, 255, 255, 255, 255, 255, 255, 255, 255, 89, 77, + 88, 98, 96, 104, 108, 104, 100, 100, 100, 90, 77, 97, 100, 106, 111, 113, + 116, 118, 120, 120, 121, 123, 125, 128, 128, 127, 126, 133, 131, 135, 142, 150, + 149, 142, 133, 112, 93, 79, 67, 51, 54, 62, 61, 65, 70, 76, 74, 68, + 69, 87, 106, 140, 134, 126, 121, 121, 123, 121, 120, 123, 121, 119, 116, 115, + 116, 118, 120, 118, 118, 118, 120, 123, 123, 118, 115, 116, 116, 115, 114, 111, + 110, 111, 111, 111, 110, 107, 105, 105, 106, 108, 109, 107, 108, 108, 107, 104, + 99, 95, 93, 95, 98, 93, 84, 87, 100, 100, 90, 95, 94, 84, 71, 73, + 85, 82, 70, 94, 92, 103, 113, 102, 92, 89, 86, 94, 96, 115, 123, 150, + 127, 120, 115, 100, 93, 94, 99, 106, 114, 116, 106, 116, 112, 68, 39, 27, + 50, 43, 41, 118, 255, 255, 255, 255, 255, 255, 255, 255, 85, 76, 87, 97, + 97, 110, 107, 108, 110, 102, 90, 84, 86, 97, 100, 105, 109, 111, 115, 117, + 118, 116, 118, 120, 123, 124, 125, 126, 125, 131, 131, 136, 144, 152, 151, 142, + 126, 78, 64, 59, 59, 58, 77, 100, 109, 91, 126, 131, 87, 50, 48, 57, + 52, 67, 83, 103, 116, 114, 110, 108, 110, 129, 128, 125, 123, 122, 121, 120, + 120, 118, 118, 120, 122, 123, 122, 117, 115, 115, 115, 116, 117, 114, 112, 109, + 107, 110, 108, 106, 104, 103, 104, 106, 107, 106, 106, 106, 105, 102, 98, 94, + 91, 93, 97, 91, 79, 78, 90, 92, 83, 83, 86, 79, 70, 75, 90, 90, + 79, 85, 93, 106, 109, 104, 106, 104, 88, 79, 87, 116, 134, 168, 144, 133, + 124, 102, 91, 94, 98, 103, 116, 122, 106, 110, 116, 76, 42, 26, 51, 44, + 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 76, 81, 90, 91, 109, + 108, 112, 116, 102, 84, 78, 87, 95, 96, 102, 107, 110, 114, 116, 116, 115, + 116, 118, 120, 121, 122, 124, 124, 130, 130, 131, 134, 142, 147, 144, 131, 104, + 91, 89, 87, 80, 89, 104, 105, 110, 126, 142, 130, 91, 53, 48, 61, 39, + 33, 40, 66, 94, 112, 112, 108, 122, 122, 121, 122, 122, 121, 121, 120, 123, + 121, 119, 119, 120, 123, 124, 126, 113, 113, 114, 116, 114, 112, 107, 103, 108, + 107, 106, 104, 104, 105, 105, 106, 105, 105, 105, 104, 102, 99, 96, 94, 96, + 101, 95, 80, 75, 84, 86, 78, 75, 77, 74, 69, 72, 83, 85, 81, 89, + 96, 102, 99, 96, 106, 107, 90, 86, 91, 107, 130, 165, 154, 130, 109, 100, + 85, 89, 93, 95, 115, 127, 106, 102, 113, 78, 43, 24, 47, 39, 31, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 86, 82, 82, 88, 93, 105, 108, 110, + 105, 93, 82, 79, 82, 97, 98, 104, 108, 114, 115, 115, 116, 118, 118, 118, + 119, 120, 121, 123, 124, 131, 131, 127, 126, 134, 142, 142, 132, 117, 107, 107, + 104, 93, 92, 99, 98, 121, 113, 125, 141, 119, 70, 55, 72, 79, 54, 39, + 56, 89, 115, 122, 120, 121, 121, 122, 123, 122, 123, 124, 125, 128, 127, 126, + 125, 124, 126, 127, 129, 118, 116, 115, 115, 114, 113, 109, 106, 109, 108, 108, + 107, 107, 107, 107, 106, 107, 106, 105, 105, 103, 102, 101, 101, 102, 108, 102, + 86, 78, 85, 86, 79, 81, 80, 78, 76, 74, 75, 78, 81, 101, 98, 101, + 103, 98, 100, 99, 86, 100, 109, 107, 125, 142, 146, 118, 101, 99, 80, 84, + 89, 90, 116, 133, 110, 100, 112, 80, 45, 24, 44, 37, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 90, 88, 88, 91, 101, 99, 109, 106, 92, 88, + 94, 100, 99, 106, 108, 113, 117, 123, 124, 122, 119, 119, 119, 118, 117, 117, + 121, 123, 124, 126, 129, 127, 126, 130, 136, 135, 126, 120, 111, 111, 105, 94, + 95, 101, 101, 96, 117, 127, 118, 121, 131, 117, 92, 109, 109, 111, 111, 103, + 102, 116, 133, 131, 130, 129, 129, 128, 130, 133, 134, 131, 133, 136, 137, 134, + 130, 124, 123, 125, 121, 117, 116, 116, 116, 114, 112, 109, 110, 110, 110, 110, + 109, 108, 107, 108, 107, 106, 106, 105, 105, 106, 108, 106, 113, 110, 91, 84, + 88, 89, 83, 87, 83, 83, 85, 80, 78, 82, 92, 104, 92, 102, 118, 115, + 106, 99, 92, 102, 123, 117, 127, 124, 139, 122, 120, 103, 82, 87, 93, 94, + 124, 144, 120, 102, 114, 80, 48, 26, 44, 39, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 80, 79, 87, 88, 88, 105, 99, 90, 84, 82, 89, 97, + 104, 108, 113, 118, 121, 121, 121, 120, 117, 116, 116, 116, 116, 117, 120, 121, + 121, 130, 125, 121, 121, 123, 124, 121, 118, 112, 113, 113, 113, 110, 110, 107, + 105, 104, 111, 117, 117, 115, 113, 117, 124, 142, 143, 142, 135, 126, 121, 119, + 121, 139, 141, 140, 135, 132, 137, 151, 162, 147, 141, 136, 134, 136, 136, 129, + 125, 120, 121, 122, 122, 119, 116, 113, 111, 116, 117, 115, 113, 112, 112, 113, + 114, 110, 112, 112, 109, 105, 104, 106, 108, 115, 109, 112, 82, 84, 81, 98, + 80, 83, 88, 82, 98, 74, 79, 79, 105, 118, 102, 100, 108, 109, 108, 100, + 87, 126, 122, 119, 121, 125, 127, 125, 120, 102, 92, 81, 69, 102, 104, 162, + 114, 104, 111, 83, 34, 44, 38, 120, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 82, 84, 89, 90, 87, 94, 89, 84, 84, 89, 99, 109, 115, 115, + 119, 123, 125, 124, 121, 120, 117, 113, 113, 114, 116, 118, 118, 117, 116, 124, + 124, 125, 123, 120, 118, 117, 117, 113, 114, 115, 116, 119, 119, 119, 118, 124, + 129, 133, 132, 129, 129, 135, 141, 139, 141, 141, 139, 134, 133, 134, 138, 139, + 146, 150, 149, 143, 141, 145, 149, 148, 142, 137, 135, 137, 137, 131, 127, 121, + 121, 121, 120, 116, 114, 112, 111, 114, 113, 111, 110, 109, 109, 109, 110, 112, + 112, 110, 107, 104, 104, 108, 112, 120, 117, 108, 88, 89, 89, 92, 87, 79, + 83, 79, 98, 81, 83, 77, 92, 111, 112, 114, 118, 118, 106, 94, 91, 110, + 121, 130, 138, 151, 159, 143, 119, 105, 95, 80, 73, 99, 108, 160, 118, 113, + 117, 82, 29, 32, 30, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 88, 89, 91, 89, 86, 86, 83, 82, 87, 97, 108, 116, 119, 120, 123, 126, + 126, 124, 121, 120, 118, 111, 111, 114, 116, 119, 117, 114, 113, 121, 124, 129, + 125, 118, 113, 113, 115, 111, 112, 113, 114, 116, 118, 122, 123, 131, 135, 137, + 135, 133, 135, 141, 148, 136, 138, 138, 137, 136, 138, 142, 147, 144, 151, 155, + 154, 149, 144, 144, 144, 146, 141, 137, 136, 137, 137, 132, 129, 124, 123, 121, + 119, 115, 114, 113, 113, 116, 115, 113, 112, 111, 111, 111, 111, 114, 113, 110, + 106, 104, 105, 109, 113, 119, 124, 102, 94, 94, 95, 83, 96, 76, 80, 81, + 100, 92, 90, 76, 81, 111, 124, 120, 113, 114, 105, 107, 130, 129, 143, 147, + 137, 142, 156, 151, 130, 113, 102, 82, 78, 89, 106, 146, 112, 117, 119, 80, + 32, 30, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 90, + 86, 81, 79, 80, 81, 82, 90, 101, 110, 114, 114, 120, 123, 125, 124, 122, + 121, 120, 119, 112, 111, 113, 114, 116, 115, 114, 113, 122, 124, 128, 125, 120, + 115, 112, 111, 115, 117, 115, 115, 115, 116, 120, 121, 127, 130, 134, 134, 133, + 134, 138, 143, 141, 141, 140, 138, 137, 139, 141, 145, 151, 152, 150, 147, 144, + 143, 147, 148, 143, 139, 136, 135, 136, 136, 132, 130, 127, 125, 122, 119, 115, + 114, 115, 115, 116, 115, 114, 113, 112, 112, 112, 111, 114, 112, 110, 107, 105, + 104, 105, 106, 108, 124, 97, 96, 94, 95, 77, 107, 79, 83, 89, 101, 97, + 89, 78, 80, 105, 126, 118, 105, 110, 101, 107, 145, 157, 167, 165, 145, 135, + 144, 155, 156, 123, 111, 88, 84, 77, 96, 124, 98, 110, 109, 69, 36, 37, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 88, 81, 74, + 72, 75, 78, 83, 92, 102, 108, 110, 110, 118, 120, 121, 121, 120, 119, 121, + 120, 116, 113, 111, 110, 112, 113, 114, 115, 125, 124, 124, 124, 124, 121, 115, + 110, 121, 119, 120, 118, 117, 118, 121, 122, 123, 128, 135, 138, 137, 137, 138, + 140, 149, 148, 146, 144, 143, 144, 144, 146, 153, 151, 145, 142, 140, 141, 144, + 144, 140, 137, 135, 133, 133, 132, 129, 128, 127, 124, 120, 116, 112, 112, 113, + 114, 111, 110, 110, 110, 109, 108, 107, 106, 108, 107, 107, 105, 103, 99, 95, + 92, 95, 117, 96, 96, 90, 89, 79, 114, 83, 88, 99, 101, 96, 84, 82, + 83, 93, 120, 119, 111, 115, 96, 89, 118, 112, 112, 116, 118, 116, 113, 117, + 123, 130, 118, 101, 90, 74, 88, 109, 91, 111, 101, 53, 34, 39, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, 86, 77, 71, 72, 70, + 77, 86, 95, 103, 109, 112, 113, 117, 118, 119, 118, 117, 118, 120, 120, 118, + 114, 111, 109, 110, 112, 115, 117, 127, 124, 123, 124, 127, 126, 121, 115, 116, + 115, 117, 117, 117, 117, 120, 120, 122, 127, 136, 140, 140, 140, 139, 139, 145, + 145, 144, 145, 146, 147, 146, 147, 150, 149, 146, 146, 145, 142, 137, 131, 139, + 137, 135, 133, 131, 130, 127, 127, 123, 121, 117, 114, 109, 109, 109, 109, 111, + 111, 111, 111, 110, 109, 107, 106, 102, 102, 102, 102, 101, 96, 89, 84, 90, + 108, 100, 94, 87, 88, 89, 113, 87, 91, 103, 96, 95, 83, 89, 89, 97, + 114, 115, 110, 111, 100, 100, 122, 125, 105, 98, 112, 126, 124, 119, 118, 126, + 114, 117, 97, 81, 85, 107, 97, 129, 105, 42, 30, 111, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 83, 84, 78, 75, 79, 71, 81, 93, + 102, 106, 110, 114, 118, 120, 120, 119, 117, 116, 116, 118, 119, 118, 114, 113, + 111, 113, 113, 114, 115, 125, 125, 126, 126, 127, 127, 126, 125, 116, 116, 117, + 118, 118, 118, 120, 119, 122, 126, 130, 134, 137, 138, 138, 138, 139, 140, 142, + 145, 148, 150, 148, 148, 148, 148, 147, 149, 150, 146, 138, 129, 140, 138, 137, + 134, 131, 129, 126, 127, 124, 122, 119, 116, 111, 110, 109, 109, 112, 113, 113, + 113, 112, 111, 109, 108, 104, 103, 102, 103, 103, 101, 95, 90, 95, 101, 104, + 88, 90, 92, 104, 105, 95, 95, 104, 94, 105, 95, 103, 99, 104, 109, 111, + 108, 103, 103, 120, 142, 143, 122, 104, 101, 108, 114, 113, 111, 118, 107, 132, + 101, 91, 82, 109, 100, 132, 104, 35, 106, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 84, 85, 79, 78, 86, 76, 88, 101, 107, 108, + 109, 114, 120, 123, 123, 121, 118, 115, 115, 117, 117, 116, 114, 114, 114, 115, + 115, 114, 113, 123, 126, 130, 129, 126, 126, 130, 134, 127, 127, 128, 129, 128, + 126, 127, 125, 125, 127, 129, 132, 136, 138, 140, 141, 143, 144, 146, 151, 155, + 156, 153, 152, 149, 147, 144, 146, 150, 150, 145, 139, 142, 140, 138, 135, 131, + 129, 126, 127, 126, 125, 123, 120, 115, 113, 112, 111, 108, 109, 110, 110, 109, + 107, 105, 104, 109, 107, 105, 106, 108, 108, 104, 101, 103, 100, 108, 86, 95, + 98, 114, 97, 102, 97, 105, 96, 115, 107, 116, 107, 97, 102, 116, 117, 103, + 99, 115, 127, 143, 143, 134, 116, 106, 111, 116, 114, 113, 102, 139, 101, 94, + 75, 105, 98, 115, 90, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 83, 84, 86, 89, 83, 67, 83, 97, 106, 106, 105, 110, 115, + 115, 120, 119, 118, 117, 116, 116, 116, 114, 117, 115, 115, 115, 117, 118, 119, + 120, 122, 125, 132, 135, 135, 132, 128, 125, 129, 128, 127, 126, 126, 125, 125, + 124, 123, 129, 138, 139, 136, 135, 137, 142, 149, 149, 149, 150, 152, 153, 153, + 154, 161, 164, 159, 150, 146, 146, 143, 135, 135, 134, 135, 134, 133, 131, 127, + 125, 123, 125, 126, 123, 116, 113, 113, 115, 115, 113, 112, 111, 110, 111, 112, + 113, 109, 107, 105, 103, 103, 103, 104, 105, 103, 87, 92, 94, 101, 106, 95, + 100, 103, 103, 102, 103, 110, 118, 120, 116, 100, 96, 99, 104, 106, 105, 113, + 126, 133, 152, 139, 114, 113, 110, 103, 107, 111, 109, 117, 130, 102, 71, 93, + 111, 116, 76, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 85, 88, 87, 85, 80, 70, 91, 100, 105, 105, 109, 115, 117, 115, 120, + 119, 118, 117, 116, 116, 116, 114, 118, 116, 116, 116, 119, 121, 122, 123, 128, + 128, 133, 136, 138, 137, 133, 130, 136, 135, 133, 131, 129, 127, 125, 124, 126, + 131, 138, 138, 136, 135, 138, 142, 149, 151, 152, 155, 157, 157, 154, 154, 154, + 157, 154, 149, 148, 150, 149, 142, 136, 135, 135, 135, 134, 132, 128, 126, 122, + 124, 124, 121, 115, 112, 112, 113, 119, 118, 115, 112, 111, 110, 109, 109, 107, + 108, 109, 108, 106, 105, 104, 105, 96, 87, 96, 94, 95, 96, 88, 97, 106, + 107, 106, 108, 115, 124, 126, 122, 109, 100, 96, 98, 101, 100, 108, 120, 131, + 146, 143, 124, 116, 115, 113, 113, 107, 106, 113, 126, 103, 79, 100, 112, 106, + 62, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, + 93, 86, 78, 75, 74, 99, 103, 103, 105, 111, 117, 118, 114, 122, 121, 120, + 119, 118, 118, 118, 116, 118, 116, 117, 117, 121, 123, 125, 126, 131, 129, 130, + 134, 139, 141, 137, 132, 139, 138, 136, 134, 131, 129, 129, 128, 128, 131, 136, + 136, 134, 135, 141, 145, 145, 148, 152, 156, 157, 157, 152, 151, 149, 152, 151, + 149, 149, 151, 150, 145, 136, 135, 135, 134, 133, 132, 128, 127, 123, 124, 123, + 121, 115, 113, 112, 113, 119, 118, 116, 113, 111, 110, 109, 109, 105, 109, 113, + 113, 109, 105, 104, 104, 90, 84, 96, 90, 86, 86, 81, 94, 109, 110, 111, + 113, 123, 132, 134, 129, 127, 110, 97, 96, 100, 102, 110, 120, 130, 140, 149, + 139, 120, 116, 119, 113, 103, 108, 112, 122, 103, 84, 104, 109, 93, 116, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 95, 84, + 69, 71, 78, 101, 104, 104, 105, 108, 111, 113, 113, 122, 121, 120, 119, 118, + 118, 119, 117, 117, 116, 116, 118, 121, 124, 126, 127, 131, 126, 125, 129, 136, + 140, 136, 131, 133, 132, 132, 131, 131, 130, 131, 131, 130, 131, 134, 133, 133, + 135, 141, 145, 138, 142, 145, 148, 150, 150, 147, 146, 149, 151, 149, 148, 147, + 146, 144, 140, 135, 134, 133, 132, 131, 130, 127, 126, 124, 124, 123, 121, 116, + 114, 113, 113, 114, 113, 112, 111, 111, 110, 110, 110, 105, 109, 113, 112, 108, + 104, 103, 102, 87, 83, 92, 83, 79, 84, 82, 96, 108, 110, 112, 115, 126, + 136, 138, 135, 139, 114, 95, 93, 100, 104, 112, 121, 128, 133, 153, 151, 123, + 113, 115, 104, 101, 111, 115, 117, 98, 86, 105, 104, 76, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 82, 91, 81, 67, 73, + 82, 98, 103, 105, 105, 103, 102, 106, 111, 116, 115, 115, 114, 114, 115, 116, + 114, 117, 115, 116, 117, 121, 123, 125, 126, 131, 125, 124, 127, 135, 139, 136, + 131, 126, 126, 125, 125, 127, 126, 126, 126, 127, 127, 128, 128, 128, 131, 135, + 141, 137, 139, 140, 142, 144, 146, 145, 146, 148, 148, 146, 147, 145, 141, 139, + 136, 133, 131, 130, 129, 128, 127, 124, 124, 122, 121, 119, 118, 114, 112, 110, + 109, 111, 111, 110, 110, 109, 107, 106, 106, 106, 108, 109, 108, 104, 101, 101, + 101, 90, 79, 84, 74, 75, 87, 89, 100, 106, 108, 113, 117, 127, 137, 139, + 134, 133, 107, 88, 88, 99, 105, 112, 119, 119, 124, 148, 153, 125, 108, 107, + 97, 95, 111, 117, 113, 93, 88, 108, 101, 52, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, 87, 79, 72, 81, 88, 98, + 103, 107, 107, 102, 97, 101, 108, 108, 108, 108, 108, 109, 111, 112, 111, 118, + 116, 116, 117, 121, 123, 125, 126, 132, 128, 128, 131, 136, 139, 137, 133, 128, + 127, 126, 124, 125, 123, 122, 121, 123, 123, 124, 124, 126, 128, 132, 136, 140, + 141, 141, 143, 145, 148, 149, 150, 144, 143, 142, 146, 146, 141, 139, 138, 132, + 130, 128, 127, 126, 125, 123, 123, 119, 117, 115, 113, 111, 109, 107, 105, 113, + 113, 111, 109, 107, 103, 101, 99, 107, 106, 105, 104, 102, 101, 100, 97, 90, + 78, 80, 69, 75, 93, 95, 102, 105, 108, 113, 117, 128, 137, 139, 134, 126, + 104, 90, 95, 108, 114, 118, 123, 113, 118, 137, 144, 125, 106, 101, 99, 95, + 111, 112, 104, 91, 96, 111, 89, 104, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 199, 83, 84, 77, 81, 91, 94, 103, 104, 107, + 110, 106, 100, 100, 105, 105, 105, 106, 108, 110, 112, 114, 114, 121, 119, 119, + 119, 122, 124, 125, 126, 132, 131, 133, 135, 137, 138, 136, 134, 130, 130, 128, + 127, 128, 126, 125, 124, 127, 126, 125, 126, 130, 133, 135, 138, 142, 144, 146, + 149, 152, 153, 152, 153, 144, 141, 142, 148, 148, 142, 140, 140, 133, 130, 128, + 126, 125, 125, 123, 123, 120, 117, 114, 113, 111, 110, 107, 104, 113, 113, 112, + 110, 107, 104, 100, 98, 107, 105, 103, 104, 106, 104, 98, 91, 86, 77, 79, + 68, 76, 94, 95, 101, 106, 109, 115, 119, 129, 138, 139, 134, 120, 103, 96, + 106, 120, 123, 124, 127, 118, 123, 128, 131, 123, 102, 94, 104, 107, 116, 106, + 95, 91, 102, 106, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 89, 84, 82, 77, 87, 99, 99, 109, 104, 106, 109, 112, + 104, 101, 100, 107, 105, 109, 109, 113, 114, 119, 119, 123, 121, 123, 123, 124, + 125, 126, 126, 130, 131, 134, 136, 136, 135, 134, 131, 130, 130, 130, 130, 132, + 132, 132, 132, 133, 132, 132, 133, 138, 140, 141, 141, 141, 144, 149, 154, 156, + 155, 153, 152, 147, 142, 144, 148, 149, 140, 139, 139, 133, 131, 129, 127, 126, + 125, 124, 124, 123, 120, 117, 116, 116, 113, 112, 109, 110, 110, 111, 110, 109, + 106, 104, 103, 106, 103, 102, 106, 110, 108, 98, 87, 83, 78, 85, 74, 78, + 94, 92, 100, 108, 112, 117, 122, 132, 140, 141, 135, 112, 99, 97, 110, 123, + 125, 123, 125, 126, 132, 123, 121, 120, 98, 87, 107, 122, 123, 103, 89, 91, + 105, 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 84, 77, 81, 89, 98, 103, 103, 111, 109, 109, 106, 107, 104, 104, + 100, 106, 105, 107, 103, 106, 109, 116, 118, 126, 125, 127, 128, 130, 130, 129, + 128, 130, 138, 136, 134, 137, 131, 125, 130, 123, 125, 130, 131, 131, 127, 126, + 126, 129, 133, 138, 138, 134, 131, 131, 135, 150, 156, 158, 152, 151, 152, 153, + 150, 138, 139, 142, 142, 143, 139, 136, 132, 131, 129, 128, 127, 125, 124, 123, + 123, 123, 120, 116, 113, 113, 111, 112, 111, 109, 109, 109, 109, 109, 108, 107, + 106, 102, 106, 107, 105, 106, 108, 104, 96, 83, 97, 100, 87, 78, 87, 101, + 109, 120, 112, 112, 124, 135, 135, 128, 124, 108, 96, 105, 122, 122, 119, 121, + 120, 121, 124, 121, 109, 97, 94, 102, 112, 112, 120, 91, 95, 110, 106, 89, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 85, 82, 87, 97, 105, 106, 106, 110, 108, 104, 102, 101, 102, 102, 103, 106, + 107, 106, 105, 106, 110, 114, 117, 121, 123, 126, 130, 134, 136, 136, 135, 139, + 146, 142, 138, 140, 134, 128, 133, 123, 125, 127, 126, 125, 124, 125, 127, 136, + 136, 138, 140, 142, 142, 141, 140, 147, 153, 156, 152, 147, 148, 146, 142, 141, + 142, 143, 144, 143, 140, 137, 135, 131, 131, 130, 129, 128, 127, 127, 126, 123, + 121, 117, 116, 115, 115, 113, 111, 109, 110, 110, 110, 109, 109, 108, 107, 100, + 104, 106, 105, 107, 109, 106, 99, 92, 103, 105, 94, 88, 97, 109, 113, 114, + 109, 117, 137, 146, 135, 119, 110, 102, 102, 119, 125, 104, 90, 96, 105, 99, + 100, 102, 105, 109, 114, 118, 121, 111, 105, 103, 101, 109, 105, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 89, + 93, 102, 109, 109, 108, 108, 106, 103, 101, 100, 102, 104, 106, 104, 103, 102, + 102, 103, 106, 109, 111, 116, 119, 124, 129, 133, 136, 137, 138, 145, 151, 146, + 141, 141, 135, 129, 134, 131, 131, 129, 126, 126, 127, 130, 133, 137, 134, 133, + 136, 142, 145, 144, 142, 145, 151, 154, 153, 151, 150, 145, 141, 145, 145, 144, + 143, 142, 140, 138, 137, 133, 132, 132, 131, 131, 130, 130, 129, 123, 121, 119, + 118, 117, 116, 112, 110, 109, 109, 110, 110, 110, 109, 108, 107, 103, 105, 106, + 105, 106, 107, 104, 98, 98, 105, 104, 97, 95, 105, 113, 114, 116, 112, 124, + 145, 145, 122, 103, 97, 109, 109, 122, 122, 97, 82, 90, 100, 102, 99, 102, + 112, 125, 130, 123, 114, 109, 92, 114, 111, 108, 148, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 91, 95, 104, + 108, 109, 106, 105, 105, 105, 104, 103, 103, 105, 107, 103, 99, 98, 100, 101, + 102, 103, 108, 113, 115, 117, 120, 122, 126, 130, 133, 142, 148, 143, 138, 139, + 133, 127, 133, 133, 132, 129, 127, 128, 129, 131, 134, 136, 133, 132, 133, 137, + 141, 142, 142, 141, 147, 149, 149, 148, 147, 145, 144, 146, 145, 142, 140, 138, + 137, 136, 136, 131, 131, 131, 130, 130, 129, 129, 129, 121, 120, 118, 118, 117, + 114, 110, 107, 107, 107, 108, 108, 108, 107, 107, 106, 108, 107, 106, 105, 104, + 102, 97, 93, 99, 101, 99, 95, 97, 106, 110, 109, 118, 116, 128, 143, 134, + 108, 99, 109, 112, 100, 104, 110, 104, 103, 106, 104, 112, 107, 106, 115, 125, + 124, 110, 98, 107, 95, 116, 122, 105, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 90, 95, 101, 104, 104, + 103, 102, 106, 110, 110, 108, 106, 105, 105, 107, 100, 98, 102, 104, 102, 101, + 104, 106, 107, 107, 107, 108, 113, 121, 127, 133, 141, 138, 134, 137, 133, 128, + 134, 125, 125, 124, 124, 127, 127, 127, 127, 138, 138, 139, 137, 135, 136, 140, + 144, 141, 141, 141, 140, 138, 136, 135, 138, 142, 141, 138, 136, 132, 131, 131, + 131, 128, 128, 127, 127, 126, 125, 125, 125, 119, 117, 116, 115, 114, 111, 107, + 103, 104, 104, 105, 105, 106, 105, 105, 104, 108, 106, 104, 103, 102, 99, 94, + 92, 99, 98, 95, 94, 98, 105, 106, 104, 108, 113, 128, 137, 121, 97, 97, + 114, 92, 84, 93, 110, 117, 121, 119, 107, 103, 101, 102, 107, 113, 111, 103, + 94, 106, 110, 109, 123, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 90, 92, 97, 102, 103, 101, 100, 103, + 109, 114, 115, 111, 106, 103, 103, 104, 95, 92, 98, 100, 96, 94, 97, 98, + 100, 101, 100, 101, 106, 114, 122, 125, 134, 134, 133, 138, 135, 130, 135, 123, + 123, 124, 127, 131, 131, 129, 127, 136, 138, 140, 136, 132, 131, 136, 141, 148, + 144, 141, 139, 135, 129, 130, 134, 139, 138, 136, 134, 131, 130, 130, 129, 127, + 127, 126, 125, 123, 122, 121, 121, 117, 115, 113, 111, 110, 108, 104, 101, 101, + 102, 103, 104, 104, 104, 103, 103, 105, 101, 100, 102, 103, 100, 97, 97, 103, + 100, 97, 98, 101, 105, 104, 103, 102, 114, 129, 130, 109, 84, 80, 90, 81, + 87, 109, 127, 127, 125, 120, 108, 98, 100, 102, 103, 104, 103, 101, 100, 107, + 118, 103, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 203, 98, 100, 102, 104, 105, 103, 103, 114, 119, 124, + 123, 116, 111, 108, 109, 106, 95, 91, 99, 101, 95, 92, 95, 98, 101, 104, + 103, 101, 103, 108, 114, 118, 128, 130, 131, 137, 134, 128, 133, 126, 125, 126, + 129, 135, 137, 135, 133, 137, 137, 137, 136, 134, 134, 136, 137, 148, 145, 141, + 142, 138, 132, 132, 136, 138, 138, 135, 134, 133, 132, 132, 131, 129, 129, 127, + 125, 123, 121, 120, 119, 118, 115, 111, 109, 107, 106, 103, 101, 101, 102, 103, + 104, 104, 104, 104, 104, 107, 102, 100, 104, 105, 101, 99, 101, 105, 102, 101, + 102, 104, 104, 103, 103, 110, 122, 131, 128, 112, 97, 90, 88, 105, 110, 127, + 136, 130, 126, 121, 108, 103, 105, 106, 106, 104, 103, 104, 105, 110, 114, 102, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 105, 104, 105, 106, 107, 108, 108, 106, 127, 131, 133, 130, 122, + 117, 116, 118, 116, 104, 100, 108, 111, 104, 100, 103, 103, 107, 111, 109, 104, + 101, 103, 105, 112, 123, 127, 129, 135, 131, 124, 129, 125, 123, 122, 125, 132, + 135, 135, 134, 145, 141, 139, 140, 143, 145, 143, 140, 138, 136, 136, 141, 140, + 134, 133, 138, 139, 139, 137, 137, 137, 135, 134, 134, 132, 131, 129, 127, 125, + 122, 121, 120, 119, 116, 111, 108, 106, 105, 103, 102, 102, 102, 103, 104, 105, + 105, 105, 105, 112, 106, 103, 107, 106, 101, 98, 100, 106, 103, 102, 103, 104, + 102, 101, 102, 118, 127, 133, 131, 130, 132, 130, 124, 136, 127, 126, 127, 124, + 125, 121, 106, 98, 100, 102, 103, 104, 105, 107, 111, 113, 155, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 94, 104, 112, 108, 104, 106, 109, 109, 152, 156, 144, 129, 128, 124, 114, + 112, 105, 107, 110, 110, 108, 107, 108, 110, 103, 103, 104, 106, 108, 108, 105, + 103, 109, 120, 130, 132, 131, 132, 131, 128, 125, 121, 120, 124, 129, 130, 135, + 141, 138, 140, 140, 138, 141, 146, 147, 143, 143, 141, 138, 138, 138, 140, 140, + 139, 135, 135, 136, 136, 133, 132, 130, 129, 131, 126, 121, 121, 124, 126, 124, + 121, 115, 114, 112, 109, 107, 104, 102, 101, 95, 102, 109, 111, 108, 106, 107, + 109, 106, 107, 107, 103, 99, 96, 97, 100, 106, 105, 105, 106, 102, 97, 99, + 105, 116, 122, 128, 129, 128, 129, 134, 139, 129, 132, 133, 131, 129, 126, 118, + 109, 102, 96, 105, 114, 112, 112, 115, 112, 120, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, + 104, 112, 112, 113, 117, 121, 122, 162, 161, 143, 126, 126, 124, 118, 118, 113, + 112, 111, 113, 116, 117, 115, 113, 108, 109, 110, 107, 103, 101, 103, 105, 109, + 118, 126, 128, 130, 131, 129, 125, 128, 124, 123, 125, 129, 129, 133, 138, 140, + 143, 144, 140, 140, 143, 144, 142, 145, 142, 140, 139, 139, 140, 139, 139, 138, + 137, 136, 134, 131, 131, 131, 132, 130, 126, 122, 122, 125, 126, 124, 120, 117, + 115, 113, 110, 107, 105, 104, 104, 102, 108, 113, 113, 109, 105, 105, 106, 107, + 108, 108, 105, 101, 99, 100, 102, 107, 105, 106, 106, 102, 98, 100, 107, 118, + 121, 123, 122, 120, 120, 124, 127, 126, 129, 129, 126, 126, 126, 122, 115, 113, + 98, 98, 108, 112, 114, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 106, 112, + 112, 116, 121, 126, 128, 144, 146, 131, 121, 127, 129, 124, 124, 121, 117, 114, + 118, 125, 127, 123, 118, 113, 116, 115, 109, 101, 99, 104, 110, 107, 114, 120, + 125, 129, 133, 130, 123, 130, 125, 124, 126, 128, 127, 130, 135, 141, 146, 148, + 143, 139, 140, 141, 141, 145, 142, 140, 139, 139, 139, 136, 135, 139, 137, 133, + 130, 130, 130, 130, 133, 127, 125, 122, 123, 125, 125, 122, 118, 118, 116, 113, + 109, 107, 106, 106, 107, 108, 111, 115, 114, 110, 106, 106, 107, 107, 108, 108, + 106, 103, 102, 103, 105, 107, 106, 106, 106, 102, 98, 101, 108, 122, 121, 121, + 121, 121, 122, 124, 125, 132, 133, 132, 128, 128, 129, 126, 121, 120, 101, 99, + 112, 119, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 105, 106, 108, 107, 111, + 117, 120, 123, 126, 128, 121, 120, 130, 129, 119, 118, 121, 118, 117, 120, 125, + 127, 124, 121, 116, 117, 116, 110, 104, 102, 105, 109, 104, 109, 115, 120, 128, + 134, 131, 124, 126, 122, 121, 124, 127, 126, 128, 132, 139, 146, 150, 144, 139, + 139, 141, 141, 143, 141, 139, 138, 138, 137, 134, 132, 135, 135, 131, 130, 129, + 129, 127, 127, 124, 122, 122, 122, 123, 122, 118, 115, 118, 115, 111, 107, 105, + 106, 107, 108, 107, 110, 113, 112, 110, 108, 109, 110, 106, 106, 106, 105, 104, + 104, 105, 105, 106, 104, 104, 104, 101, 97, 101, 108, 119, 119, 121, 125, 130, + 132, 131, 130, 135, 136, 134, 130, 128, 127, 122, 115, 110, 98, 102, 161, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 105, 102, 100, 105, 109, 112, + 115, 128, 129, 121, 119, 126, 120, 110, 110, 118, 119, 121, 122, 123, 123, 123, + 124, 117, 115, 111, 108, 105, 102, 99, 97, 99, 104, 109, 115, 124, 131, 129, + 122, 119, 116, 116, 120, 124, 124, 127, 131, 135, 143, 148, 144, 139, 139, 142, + 142, 140, 138, 137, 136, 134, 133, 131, 129, 127, 128, 130, 130, 128, 125, 123, + 121, 121, 121, 120, 120, 120, 118, 115, 113, 115, 113, 109, 106, 104, 105, 107, + 108, 108, 109, 110, 109, 108, 107, 107, 108, 105, 104, 103, 102, 103, 103, 103, + 103, 104, 102, 101, 101, 98, 95, 99, 107, 114, 117, 122, 129, 134, 135, 132, + 129, 130, 132, 132, 129, 126, 123, 115, 106, 104, 150, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 114, 103, 97, 98, 102, 106, 109, 114, 123, + 121, 110, 106, 111, 109, 107, 117, 117, 120, 123, 122, 120, 119, 120, 122, 116, + 112, 107, 103, 101, 98, 93, 88, 98, 104, 110, 114, 120, 125, 124, 119, 114, + 111, 113, 118, 123, 123, 126, 131, 132, 139, 144, 142, 139, 141, 142, 141, 137, + 136, 135, 135, 133, 132, 130, 127, 123, 125, 128, 130, 127, 124, 120, 117, 121, + 121, 120, 119, 117, 116, 114, 113, 113, 111, 108, 106, 105, 105, 107, 108, 113, + 111, 109, 107, 105, 104, 104, 104, 104, 102, 100, 100, 101, 102, 102, 101, 102, + 100, 100, 99, 96, 94, 99, 107, 119, 123, 129, 134, 135, 133, 130, 127, 128, + 131, 132, 130, 128, 124, 116, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 119, 104, 94, 95, 100, 103, 106, 111, 110, 110, 102, + 100, 105, 103, 107, 123, 116, 116, 116, 116, 117, 116, 115, 114, 112, 110, 107, + 102, 99, 97, 98, 99, 107, 114, 119, 120, 121, 123, 123, 120, 113, 111, 112, + 118, 123, 123, 125, 130, 133, 137, 141, 139, 139, 142, 140, 136, 135, 135, 134, + 135, 134, 133, 129, 126, 125, 126, 125, 126, 125, 123, 120, 118, 123, 123, 121, + 119, 117, 115, 115, 116, 111, 111, 109, 108, 107, 107, 108, 108, 113, 111, 108, + 106, 105, 105, 105, 105, 105, 103, 100, 100, 101, 102, 101, 99, 103, 100, 100, + 99, 96, 94, 100, 108, 122, 126, 131, 131, 129, 126, 126, 128, 129, 131, 130, + 125, 122, 119, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 212, 111, 98, 97, 99, 99, 101, 106, 111, 115, 112, 111, 111, + 102, 102, 117, 115, 111, 107, 109, 113, 114, 109, 102, 109, 109, 110, 104, 101, + 101, 112, 118, 119, 125, 132, 128, 127, 125, 126, 122, 114, 110, 114, 119, 122, + 123, 125, 129, 134, 137, 139, 138, 139, 141, 138, 131, 135, 132, 132, 134, 133, + 133, 130, 126, 128, 126, 125, 125, 124, 123, 122, 122, 123, 125, 123, 120, 117, + 116, 117, 118, 111, 111, 111, 110, 110, 109, 109, 109, 110, 108, 105, 105, 106, + 108, 110, 110, 107, 104, 100, 100, 102, 103, 101, 98, 104, 101, 100, 100, 97, + 95, 101, 109, 116, 120, 123, 121, 117, 116, 120, 125, 128, 127, 122, 114, 158, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 136, 117, 95, 100, 99, 93, 104, 114, 117, 112, 107, 105, 105, 112, + 118, 108, 109, 109, 112, 115, 116, 116, 115, 107, 99, 97, 103, 115, 121, 127, + 130, 127, 128, 131, 131, 132, 130, 130, 126, 118, 111, 111, 113, 118, 125, 127, + 127, 130, 132, 137, 141, 144, 144, 143, 141, 131, 129, 128, 127, 127, 128, 128, + 127, 130, 123, 120, 120, 124, 124, 121, 118, 122, 121, 119, 119, 118, 116, 112, + 109, 111, 109, 107, 105, 105, 105, 107, 108, 108, 105, 102, 103, 107, 109, 105, + 101, 99, 96, 97, 103, 104, 100, 97, 99, 104, 102, 99, 94, 91, 92, 97, + 101, 110, 113, 112, 108, 108, 113, 117, 118, 116, 113, 109, 154, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 140, 121, 99, 103, 100, 90, 93, 106, 114, 115, 116, 112, 110, 108, 109, 108, + 113, 116, 118, 117, 116, 116, 120, 121, 119, 121, 129, 135, 134, 132, 132, 132, + 131, 130, 129, 129, 129, 129, 128, 122, 115, 110, 110, 115, 121, 126, 128, 129, + 131, 136, 139, 141, 141, 141, 139, 131, 128, 127, 126, 125, 125, 126, 126, 128, + 124, 121, 121, 124, 125, 122, 118, 122, 122, 122, 122, 122, 119, 114, 109, 110, + 109, 108, 107, 107, 108, 109, 110, 111, 107, 103, 103, 107, 109, 107, 104, 100, + 96, 96, 100, 101, 97, 95, 95, 102, 100, 97, 93, 92, 93, 95, 97, 75, + 86, 94, 96, 95, 95, 93, 89, 92, 146, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 119, + 101, 102, 100, 86, 82, 88, 97, 102, 105, 103, 101, 98, 97, 106, 113, 121, + 122, 117, 115, 118, 123, 126, 126, 130, 136, 138, 134, 131, 132, 134, 133, 130, + 127, 126, 126, 127, 127, 124, 117, 113, 111, 113, 118, 125, 128, 129, 131, 135, + 137, 139, 139, 138, 136, 132, 129, 127, 126, 125, 124, 124, 124, 127, 124, 121, + 122, 124, 125, 122, 119, 122, 123, 125, 126, 125, 120, 112, 106, 105, 106, 107, + 108, 109, 110, 110, 110, 113, 108, 104, 104, 107, 108, 107, 105, 103, 98, 96, + 99, 99, 96, 94, 95, 100, 97, 94, 92, 91, 91, 90, 89, 80, 94, 107, + 110, 108, 106, 103, 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 105, 99, + 95, 83, 78, 80, 84, 84, 85, 86, 92, 96, 100, 102, 107, 114, 117, 115, + 116, 118, 121, 122, 120, 122, 125, 126, 125, 129, 135, 131, 130, 128, 127, 126, + 126, 126, 126, 120, 115, 113, 111, 112, 116, 123, 125, 130, 131, 135, 136, 137, + 137, 137, 135, 131, 128, 126, 124, 122, 121, 121, 120, 124, 122, 120, 121, 122, + 122, 121, 118, 122, 123, 125, 126, 123, 115, 105, 98, 99, 101, 104, 107, 108, + 109, 108, 107, 110, 108, 106, 106, 108, 108, 105, 103, 106, 100, 97, 98, 98, + 95, 93, 94, 98, 95, 90, 88, 87, 85, 82, 79, 92, 102, 109, 108, 104, + 105, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 106, 88, 83, 78, + 73, 78, 78, 77, 79, 86, 96, 105, 111, 104, 104, 105, 110, 118, 122, 120, + 118, 119, 117, 119, 123, 124, 123, 127, 133, 125, 126, 127, 128, 128, 127, 126, + 124, 114, 112, 112, 113, 116, 118, 121, 123, 131, 132, 132, 133, 136, 136, 136, + 134, 130, 126, 124, 122, 120, 119, 118, 118, 120, 119, 118, 118, 119, 119, 118, + 117, 122, 122, 122, 121, 117, 109, 98, 91, 94, 96, 100, 104, 106, 106, 105, + 105, 105, 106, 107, 108, 108, 106, 102, 99, 103, 97, 94, 95, 95, 91, 90, + 91, 96, 92, 87, 83, 80, 78, 76, 75, 95, 102, 104, 100, 96, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 104, 79, 75, 75, 68, 72, + 75, 77, 84, 94, 104, 109, 112, 111, 107, 103, 108, 118, 124, 122, 121, 117, + 117, 120, 126, 128, 123, 121, 121, 122, 123, 126, 127, 128, 127, 125, 123, 111, + 111, 114, 115, 117, 118, 120, 122, 130, 130, 131, 132, 135, 136, 137, 135, 129, + 125, 123, 121, 119, 118, 118, 117, 117, 117, 117, 117, 117, 117, 117, 117, 122, + 121, 119, 116, 112, 105, 97, 91, 94, 96, 100, 103, 106, 106, 106, 105, 105, + 106, 108, 109, 107, 104, 101, 99, 97, 92, 90, 92, 92, 88, 85, 86, 91, + 90, 85, 78, 73, 73, 77, 80, 98, 104, 108, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 100, 73, 75, 80, 71, 68, 71, 75, + 83, 93, 103, 108, 110, 116, 112, 109, 110, 114, 119, 122, 121, 120, 116, 116, + 122, 125, 122, 118, 118, 124, 125, 125, 125, 125, 124, 124, 122, 118, 117, 118, + 118, 116, 117, 123, 126, 127, 128, 128, 129, 131, 133, 134, 133, 129, 126, 124, + 122, 121, 120, 120, 120, 116, 117, 118, 117, 117, 117, 117, 118, 123, 120, 116, + 113, 110, 106, 102, 98, 99, 101, 103, 106, 108, 109, 109, 109, 109, 109, 108, + 107, 105, 103, 103, 103, 95, 91, 90, 93, 93, 89, 85, 85, 86, 85, 81, + 74, 68, 71, 81, 91, 93, 149, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 94, 74, 83, 90, 76, 76, 77, 76, 81, 92, + 103, 111, 114, 118, 116, 113, 110, 109, 112, 117, 121, 129, 119, 113, 115, 121, + 124, 125, 127, 129, 127, 125, 122, 121, 121, 122, 122, 124, 122, 121, 118, 115, + 116, 123, 128, 125, 125, 126, 127, 129, 131, 133, 132, 130, 127, 125, 124, 123, + 122, 122, 122, 117, 118, 119, 118, 117, 117, 118, 119, 123, 119, 115, 112, 111, + 109, 108, 106, 104, 105, 107, 109, 111, 112, 113, 113, 114, 112, 108, 104, 102, + 102, 105, 108, 96, 93, 93, 97, 97, 92, 88, 88, 83, 84, 81, 72, 67, + 72, 88, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 81, 77, 88, 89, 79, 79, 66, 76, 90, 89, 100, 118, + 117, 120, 115, 111, 113, 118, 122, 122, 120, 123, 124, 125, 126, 124, 121, 117, + 114, 123, 122, 121, 121, 122, 124, 126, 126, 126, 125, 125, 124, 124, 124, 124, + 125, 131, 131, 129, 129, 129, 129, 129, 129, 126, 124, 124, 123, 122, 121, 119, + 118, 117, 116, 115, 117, 119, 121, 121, 119, 120, 121, 120, 117, 112, 108, 106, + 106, 108, 108, 109, 110, 110, 111, 112, 112, 106, 107, 108, 109, 108, 107, 105, + 104, 100, 98, 95, 94, 92, 90, 86, 83, 83, 81, 74, 68, 74, 88, 96, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 82, 93, 92, 79, 86, 75, 73, 82, 91, 104, 119, 124, 120, + 115, 110, 111, 116, 121, 121, 120, 117, 119, 121, 121, 120, 118, 115, 113, 123, + 123, 122, 122, 122, 123, 125, 125, 124, 122, 122, 121, 121, 122, 123, 123, 129, + 130, 129, 130, 131, 131, 130, 128, 125, 125, 125, 124, 123, 122, 120, 119, 115, + 114, 113, 115, 117, 118, 118, 117, 122, 122, 121, 118, 113, 110, 109, 109, 110, + 110, 111, 111, 112, 112, 113, 113, 111, 111, 112, 112, 111, 109, 107, 106, 100, + 98, 95, 93, 92, 89, 85, 82, 80, 77, 70, 67, 75, 89, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 88, 100, 99, 90, 92, 84, 74, 78, 97, 108, 114, 123, 122, 117, 115, + 116, 121, 126, 128, 129, 120, 122, 123, 124, 124, 122, 120, 118, 124, 123, 122, + 121, 121, 121, 121, 122, 125, 124, 124, 124, 123, 124, 125, 126, 123, 125, 128, + 130, 130, 129, 128, 127, 126, 126, 126, 125, 124, 122, 120, 119, 115, 114, 113, + 114, 117, 118, 117, 116, 124, 124, 122, 118, 113, 111, 112, 113, 112, 112, 112, + 113, 113, 113, 113, 113, 112, 113, 113, 113, 111, 109, 106, 104, 100, 98, 95, + 93, 91, 88, 84, 80, 78, 73, 68, 69, 80, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, + 99, 106, 104, 95, 92, 78, 78, 103, 110, 106, 115, 118, 114, 114, 115, 121, + 127, 132, 134, 127, 128, 129, 129, 128, 127, 124, 123, 123, 122, 121, 120, 119, + 118, 117, 117, 121, 121, 121, 121, 122, 122, 123, 124, 118, 121, 125, 128, 128, + 128, 126, 125, 124, 124, 124, 124, 122, 121, 119, 118, 117, 116, 115, 116, 118, + 119, 119, 118, 124, 123, 121, 117, 113, 112, 113, 115, 113, 113, 113, 113, 112, + 112, 112, 112, 110, 110, 110, 109, 107, 104, 101, 99, 100, 97, 94, 91, 89, + 86, 81, 78, 76, 70, 67, 73, 142, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, 86, 102, + 115, 98, 96, 77, 71, 94, 103, 103, 114, 109, 107, 109, 112, 120, 127, 133, + 134, 130, 130, 130, 130, 128, 126, 124, 123, 122, 121, 120, 119, 117, 116, 114, + 113, 112, 112, 112, 112, 113, 114, 114, 115, 114, 116, 119, 122, 124, 124, 121, + 120, 122, 122, 122, 121, 120, 118, 117, 116, 117, 116, 115, 116, 118, 119, 118, + 116, 123, 122, 120, 116, 112, 112, 114, 116, 113, 113, 112, 112, 111, 111, 110, + 110, 108, 108, 108, 106, 104, 101, 98, 96, 98, 96, 92, 89, 86, 82, 78, + 74, 68, 64, 64, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 103, 122, 107, + 100, 81, 68, 77, 90, 103, 115, 107, 107, 111, 114, 121, 127, 132, 136, 134, + 132, 132, 131, 131, 129, 128, 127, 122, 122, 121, 120, 118, 116, 114, 113, 112, + 111, 111, 111, 111, 112, 111, 112, 112, 114, 116, 119, 120, 121, 118, 118, 121, + 121, 121, 120, 119, 117, 116, 115, 115, 114, 113, 113, 115, 116, 115, 113, 121, + 121, 120, 117, 114, 113, 114, 116, 114, 114, 113, 112, 111, 110, 109, 109, 108, + 108, 108, 107, 105, 102, 99, 97, 96, 94, 90, 86, 83, 79, 74, 70, 62, + 61, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 105, 121, 115, 104, 97, + 79, 65, 74, 93, 98, 106, 107, 112, 115, 119, 123, 128, 128, 130, 129, 129, + 130, 131, 131, 131, 132, 123, 124, 124, 123, 121, 119, 117, 116, 116, 116, 115, + 115, 114, 115, 114, 114, 114, 115, 115, 117, 116, 117, 117, 117, 121, 121, 121, + 120, 119, 118, 116, 115, 115, 114, 113, 113, 115, 115, 114, 113, 120, 121, 121, + 120, 117, 116, 116, 117, 116, 116, 115, 113, 112, 111, 110, 109, 107, 108, 108, + 107, 105, 102, 100, 98, 94, 92, 87, 84, 80, 76, 70, 66, 61, 126, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 91, 105, 116, 119, 110, 112, 96, 65, + 66, 80, 75, 100, 103, 105, 109, 110, 111, 115, 114, 120, 121, 123, 125, 127, + 129, 130, 131, 127, 127, 128, 128, 126, 124, 122, 120, 116, 116, 115, 114, 113, + 113, 112, 112, 116, 116, 115, 116, 115, 116, 117, 118, 122, 122, 122, 121, 120, + 119, 117, 116, 118, 116, 115, 115, 117, 117, 116, 117, 120, 122, 123, 122, 120, + 118, 118, 118, 118, 117, 116, 115, 113, 112, 111, 110, 107, 108, 108, 107, 106, + 103, 101, 97, 93, 90, 86, 82, 79, 74, 68, 64, 128, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 82, 100, 114, 122, 117, 113, 97, 76, 65, 70, + 79, 79, 84, 91, 94, 95, 96, 98, 100, 104, 113, 114, 116, 124, 121, 115, + 119, 124, 123, 123, 124, 127, 126, 123, 118, 124, 116, 112, 117, 113, 105, 106, + 116, 110, 111, 111, 114, 115, 117, 118, 118, 122, 122, 123, 123, 122, 121, 119, + 117, 113, 113, 113, 113, 114, 115, 116, 118, 124, 123, 120, 117, 116, 117, 119, + 121, 122, 120, 117, 115, 115, 115, 113, 112, 116, 113, 109, 106, 105, 104, 103, + 99, 100, 98, 90, 82, 79, 82, 78, 69, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 87, 99, 110, 118, 109, 104, 89, 72, 61, 62, 69, 98, + 96, 94, 87, 85, 88, 94, 100, 101, 107, 102, 98, 102, 98, 92, 97, 110, + 112, 114, 110, 105, 101, 101, 102, 114, 105, 103, 109, 108, 104, 107, 118, 109, + 112, 112, 111, 107, 110, 117, 124, 122, 123, 123, 124, 123, 121, 119, 118, 114, + 114, 114, 114, 114, 115, 116, 119, 124, 124, 122, 120, 119, 120, 121, 121, 122, + 119, 116, 114, 114, 113, 112, 110, 115, 112, 108, 106, 105, 104, 102, 100, 96, + 95, 89, 80, 75, 76, 72, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 94, 97, 118, 109, 103, 90, 75, 63, 61, 62, 80, 84, 89, + 93, 95, 93, 94, 97, 103, 105, 97, 91, 97, 98, 99, 107, 84, 91, 96, + 92, 82, 79, 85, 93, 68, 61, 60, 66, 67, 67, 72, 83, 103, 109, 112, + 110, 103, 104, 113, 121, 121, 122, 123, 123, 122, 120, 118, 117, 115, 115, 114, + 114, 114, 115, 116, 119, 123, 125, 124, 123, 123, 122, 122, 122, 121, 118, 115, + 113, 112, 111, 109, 107, 114, 111, 108, 107, 106, 106, 103, 101, 93, 93, 89, + 80, 71, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 92, 86, 112, 108, 108, 98, 77, 63, 60, 64, 60, 65, 74, 82, 86, + 87, 86, 85, 91, 104, 109, 113, 121, 115, 105, 106, 118, 120, 117, 104, 86, + 75, 74, 76, 83, 77, 76, 80, 82, 84, 89, 99, 98, 104, 109, 110, 104, + 103, 107, 111, 119, 120, 121, 121, 120, 118, 117, 115, 114, 113, 113, 112, 113, + 113, 114, 116, 121, 124, 124, 125, 124, 123, 121, 120, 119, 117, 113, 111, 110, + 109, 107, 105, 114, 112, 109, 108, 108, 107, 104, 102, 90, 91, 89, 80, 69, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, + 82, 94, 99, 109, 98, 73, 55, 55, 63, 69, 64, 58, 54, 55, 60, 66, + 72, 69, 90, 106, 116, 120, 102, 75, 65, 61, 64, 67, 70, 74, 79, 86, + 88, 87, 84, 83, 87, 89, 93, 99, 107, 106, 105, 103, 102, 100, 102, 105, + 108, 117, 118, 119, 119, 118, 116, 114, 113, 112, 111, 111, 110, 110, 110, 111, + 113, 118, 121, 123, 123, 123, 122, 120, 118, 118, 115, 112, 110, 109, 108, 106, + 104, 112, 110, 108, 107, 106, 105, 101, 99, 85, 85, 83, 76, 128, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 83, 80, + 93, 108, 101, 74, 55, 56, 67, 70, 64, 62, 60, 60, 62, 62, 63, 65, + 76, 76, 76, 81, 73, 61, 62, 91, 89, 86, 87, 90, 92, 91, 87, 96, + 97, 99, 103, 106, 112, 117, 122, 120, 113, 101, 95, 94, 100, 108, 114, 117, + 117, 118, 118, 117, 116, 114, 112, 111, 110, 109, 108, 108, 108, 109, 111, 116, + 119, 120, 121, 121, 120, 119, 118, 116, 113, 110, 109, 109, 109, 107, 105, 109, + 107, 105, 104, 103, 101, 96, 93, 81, 78, 75, 132, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 86, 75, 89, 109, + 105, 82, 64, 63, 70, 63, 64, 72, 78, 83, 79, 71, 66, 75, 76, 64, + 58, 66, 72, 78, 90, 89, 88, 90, 95, 102, 106, 107, 105, 100, 104, 106, + 109, 111, 116, 118, 121, 124, 120, 111, 103, 97, 101, 109, 117, 118, 119, 119, + 120, 119, 117, 115, 114, 111, 110, 109, 109, 108, 108, 108, 111, 117, 119, 120, + 120, 120, 120, 119, 119, 114, 112, 109, 109, 109, 110, 108, 107, 111, 109, 107, + 105, 103, 100, 95, 91, 82, 75, 70, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 88, 74, 88, 107, 107, 89, + 71, 66, 69, 73, 72, 72, 74, 80, 79, 75, 73, 77, 85, 85, 87, 95, + 94, 90, 94, 111, 112, 113, 114, 116, 115, 113, 112, 117, 121, 123, 123, 123, + 126, 126, 126, 118, 123, 123, 118, 107, 103, 107, 113, 120, 120, 121, 121, 120, + 119, 117, 115, 112, 111, 110, 109, 109, 109, 109, 111, 118, 120, 120, 120, 120, + 120, 120, 120, 113, 111, 109, 109, 110, 110, 110, 109, 115, 113, 111, 109, 107, + 103, 97, 93, 86, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 95, 92, 86, 93, 106, 104, 86, 70, + 67, 74, 73, 79, 83, 89, 89, 86, 85, 87, 84, 84, 87, 90, 94, 103, + 112, 118, 112, 108, 108, 115, 122, 126, 127, 117, 120, 121, 123, 123, 124, 124, + 127, 122, 125, 126, 123, 111, 101, 103, 111, 114, 117, 120, 120, 119, 117, 116, + 116, 111, 113, 114, 112, 109, 107, 108, 112, 119, 120, 118, 116, 115, 115, 116, + 117, 116, 109, 103, 103, 106, 109, 111, 113, 110, 114, 112, 104, 100, 100, 96, + 90, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 101, 94, 87, 91, 102, 100, 87, 73, 69, 75, + 74, 79, 84, 88, 88, 88, 88, 93, 92, 93, 96, 98, 99, 104, 111, 115, + 115, 116, 117, 118, 120, 123, 126, 121, 122, 121, 121, 121, 123, 126, 129, 123, + 125, 126, 125, 115, 106, 106, 112, 115, 118, 121, 121, 119, 117, 115, 115, 106, + 108, 110, 110, 108, 108, 110, 114, 115, 117, 117, 117, 117, 118, 118, 119, 109, + 107, 108, 112, 115, 114, 110, 108, 112, 113, 110, 103, 99, 98, 93, 86, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 105, 97, 89, 88, 96, 97, 90, 79, 77, 75, 74, 78, + 81, 84, 85, 88, 87, 91, 88, 91, 96, 98, 97, 100, 105, 110, 116, 122, + 123, 120, 118, 120, 123, 124, 124, 122, 121, 120, 124, 127, 131, 126, 125, 125, + 126, 119, 112, 109, 112, 116, 119, 121, 121, 118, 115, 113, 113, 105, 107, 109, + 109, 108, 109, 110, 114, 115, 117, 118, 119, 118, 117, 115, 114, 110, 111, 113, + 115, 116, 114, 108, 103, 112, 111, 107, 102, 100, 98, 91, 140, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 105, 105, 94, 90, 94, 95, 92, 85, 82, 74, 73, 77, 80, 82, + 84, 88, 89, 86, 84, 88, 94, 96, 97, 101, 108, 111, 116, 121, 123, 122, + 121, 122, 123, 125, 126, 125, 125, 123, 125, 127, 130, 129, 126, 123, 125, 121, + 114, 109, 108, 116, 118, 120, 119, 116, 112, 110, 109, 108, 108, 108, 108, 107, + 107, 107, 110, 116, 119, 120, 119, 117, 113, 108, 106, 116, 117, 115, 110, 108, + 108, 106, 103, 108, 106, 103, 102, 101, 96, 86, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 105, 108, 101, 91, 91, 92, 90, 86, 82, 78, 79, 84, 86, 87, 89, 93, + 95, 92, 89, 90, 95, 97, 99, 105, 113, 115, 114, 115, 118, 123, 126, 126, + 124, 124, 127, 128, 130, 128, 128, 126, 127, 131, 126, 122, 123, 119, 112, 106, + 104, 113, 115, 117, 116, 112, 108, 106, 105, 104, 103, 103, 104, 104, 105, 105, + 106, 114, 117, 118, 118, 115, 110, 105, 102, 110, 114, 113, 108, 105, 107, 106, + 101, 105, 102, 99, 98, 94, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 108, + 104, 97, 91, 88, 85, 82, 79, 82, 84, 91, 94, 95, 98, 103, 105, 99, + 94, 94, 97, 97, 98, 103, 110, 118, 115, 113, 117, 124, 129, 128, 126, 125, + 129, 131, 133, 131, 129, 126, 126, 130, 125, 120, 121, 116, 110, 106, 106, 110, + 112, 114, 113, 110, 106, 104, 103, 97, 96, 97, 99, 103, 106, 106, 108, 110, + 113, 115, 116, 115, 112, 109, 106, 95, 105, 112, 110, 108, 110, 106, 98, 102, + 97, 93, 89, 81, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 108, 103, + 95, 87, 84, 83, 81, 84, 88, 97, 100, 102, 104, 109, 110, 100, 96, 98, + 102, 103, 101, 105, 110, 118, 118, 119, 122, 125, 127, 128, 128, 129, 131, 132, + 133, 131, 129, 127, 128, 127, 123, 119, 119, 114, 109, 109, 113, 108, 111, 113, + 112, 109, 106, 104, 103, 100, 99, 99, 102, 107, 110, 110, 111, 111, 114, 115, + 116, 115, 113, 111, 109, 94, 106, 112, 108, 105, 108, 105, 97, 98, 92, 86, + 81, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 110, 108, 100, 92, + 90, 89, 88, 82, 86, 95, 100, 101, 104, 109, 110, 101, 100, 106, 112, 114, + 113, 115, 119, 117, 122, 127, 128, 126, 125, 127, 129, 130, 131, 131, 130, 129, + 127, 128, 130, 125, 122, 118, 118, 115, 110, 115, 119, 108, 111, 113, 113, 110, + 107, 105, 105, 109, 107, 106, 108, 112, 115, 113, 113, 114, 117, 116, 116, 114, + 111, 108, 109, 106, 114, 113, 104, 99, 104, 106, 101, 95, 89, 82, 136, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 105, 105, 103, 99, 92, 91, + 94, 86, 85, 91, 97, 105, 110, 110, 104, 97, 97, 103, 109, 114, 116, 117, + 117, 119, 122, 124, 126, 126, 126, 128, 130, 125, 126, 129, 130, 129, 125, 124, + 124, 125, 124, 124, 123, 122, 119, 120, 118, 114, 112, 110, 109, 109, 107, 104, + 101, 104, 103, 106, 109, 113, 115, 113, 108, 110, 108, 109, 110, 114, 114, 113, + 113, 108, 115, 118, 113, 109, 107, 101, 93, 97, 85, 133, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 103, 102, 101, 97, 93, 94, 94, 84, + 81, 86, 92, 102, 106, 108, 105, 96, 95, 100, 105, 109, 112, 114, 114, 119, + 121, 124, 125, 126, 126, 128, 128, 125, 125, 128, 129, 127, 125, 124, 124, 125, + 125, 124, 123, 122, 121, 121, 118, 117, 112, 111, 109, 108, 106, 105, 102, 107, + 106, 109, 111, 115, 115, 113, 108, 109, 106, 107, 107, 109, 108, 108, 108, 113, + 112, 109, 103, 105, 107, 103, 93, 80, 74, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 102, 100, 97, 93, 89, 92, 93, 85, 82, 86, + 92, 100, 105, 107, 105, 98, 95, 98, 102, 106, 109, 112, 113, 118, 120, 123, + 125, 125, 125, 127, 127, 126, 126, 128, 128, 126, 124, 123, 123, 125, 124, 124, + 123, 122, 122, 121, 119, 119, 115, 110, 107, 106, 106, 106, 105, 110, 110, 112, + 114, 118, 119, 117, 112, 115, 113, 111, 110, 111, 109, 108, 108, 112, 108, 104, + 100, 103, 104, 96, 85, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 203, 99, 99, 93, 88, 88, 90, 90, 87, 90, 94, 100, + 102, 106, 106, 101, 99, 100, 102, 106, 109, 113, 115, 116, 119, 122, 123, 123, + 124, 126, 126, 126, 126, 127, 126, 124, 121, 121, 121, 123, 123, 122, 122, 121, + 121, 120, 118, 117, 112, 106, 104, 104, 105, 108, 108, 110, 111, 115, 117, 120, + 121, 120, 117, 115, 113, 111, 110, 111, 111, 110, 107, 105, 104, 106, 104, 102, + 95, 83, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 100, 101, 95, 88, 87, 86, 87, 86, 90, 94, 99, 103, 110, + 111, 104, 102, 102, 103, 105, 109, 113, 115, 115, 118, 121, 122, 122, 123, 124, + 125, 125, 124, 125, 124, 121, 119, 119, 120, 121, 121, 121, 120, 120, 120, 120, + 117, 113, 108, 103, 101, 104, 107, 110, 111, 110, 112, 117, 120, 121, 121, 122, + 120, 108, 106, 105, 105, 107, 106, 105, 102, 100, 101, 103, 98, 88, 77, 73, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 103, 104, 99, 91, 87, 85, 81, 82, 85, 90, 97, 103, 113, 116, 105, + 103, 103, 104, 105, 108, 111, 112, 114, 117, 120, 121, 121, 122, 123, 124, 124, + 123, 124, 123, 121, 119, 120, 121, 121, 120, 120, 120, 120, 120, 120, 118, 111, + 107, 102, 101, 104, 108, 110, 112, 109, 112, 118, 120, 120, 120, 121, 122, 110, + 106, 105, 106, 106, 105, 104, 102, 99, 97, 93, 84, 72, 129, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, + 106, 101, 93, 90, 89, 84, 83, 86, 90, 93, 99, 111, 116, 108, 105, 105, + 106, 108, 109, 111, 112, 112, 115, 118, 119, 119, 120, 121, 123, 125, 124, 125, + 124, 122, 122, 123, 125, 122, 122, 122, 122, 122, 122, 122, 120, 114, 111, 107, + 106, 107, 109, 112, 112, 111, 114, 119, 119, 119, 118, 118, 118, 115, 113, 111, + 111, 111, 108, 107, 104, 98, 90, 83, 78, 73, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 105, 100, + 95, 94, 94, 93, 92, 94, 93, 94, 98, 107, 112, 109, 109, 110, 111, 112, + 113, 114, 114, 112, 114, 117, 119, 119, 119, 121, 120, 124, 125, 126, 125, 124, + 124, 126, 128, 124, 124, 124, 124, 124, 124, 125, 123, 120, 115, 111, 109, 109, + 110, 111, 111, 113, 116, 120, 119, 118, 115, 114, 115, 117, 115, 112, 110, 108, + 104, 102, 99, 94, 85, 80, 82, 142, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 105, 103, 99, 94, + 87, 95, 90, 88, 87, 90, 95, 103, 108, 110, 110, 113, 112, 110, 109, 112, + 115, 113, 113, 113, 113, 113, 115, 116, 116, 119, 122, 124, 126, 130, 130, 125, + 118, 120, 123, 124, 121, 122, 125, 126, 121, 119, 114, 111, 109, 111, 112, 117, + 119, 117, 115, 116, 118, 121, 121, 118, 114, 119, 114, 110, 109, 109, 106, 98, + 90, 79, 76, 75, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 105, 100, 95, 88, 94, + 90, 89, 87, 90, 96, 104, 109, 109, 110, 112, 112, 111, 110, 112, 114, 111, + 112, 113, 114, 116, 118, 120, 121, 124, 117, 113, 118, 125, 127, 123, 119, 123, + 126, 126, 123, 123, 126, 126, 123, 118, 114, 112, 110, 112, 113, 117, 118, 115, + 115, 118, 119, 121, 121, 119, 117, 113, 111, 110, 104, 101, 94, 88, 83, 80, + 80, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 102, 95, 86, 94, 88, 87, + 87, 92, 99, 106, 109, 109, 109, 112, 113, 112, 110, 110, 111, 110, 111, 113, + 116, 119, 122, 124, 126, 120, 105, 98, 108, 122, 126, 127, 129, 125, 128, 128, + 125, 124, 126, 125, 121, 116, 115, 114, 113, 113, 113, 115, 116, 112, 115, 117, + 118, 120, 119, 119, 119, 113, 112, 108, 99, 90, 83, 81, 81, 84, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 103, 94, 82, 91, 85, 85, 86, 94, + 100, 108, 111, 112, 111, 113, 113, 112, 109, 108, 107, 110, 111, 114, 117, 120, + 123, 125, 126, 121, 106, 100, 110, 120, 122, 125, 132, 126, 129, 129, 125, 123, + 124, 122, 118, 112, 112, 112, 111, 111, 110, 112, 112, 107, 111, 115, 115, 114, + 112, 113, 115, 114, 108, 99, 89, 82, 80, 81, 140, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 100, 91, 81, 87, 82, 81, 85, 91, 99, 107, + 108, 113, 111, 110, 110, 109, 106, 104, 102, 109, 111, 113, 116, 118, 120, 120, + 120, 127, 120, 117, 120, 120, 116, 118, 125, 124, 127, 127, 123, 121, 121, 118, + 113, 108, 108, 108, 107, 109, 109, 110, 110, 107, 110, 115, 114, 110, 107, 107, + 109, 106, 97, 83, 76, 75, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 93, 81, 83, 77, 76, 82, 89, 98, 104, 105, 114, + 110, 108, 107, 107, 107, 105, 103, 111, 113, 115, 118, 119, 119, 119, 119, 119, + 122, 124, 124, 122, 122, 124, 126, 121, 125, 125, 122, 119, 119, 115, 110, 106, + 106, 104, 104, 105, 105, 108, 108, 110, 111, 114, 111, 107, 103, 101, 101, 92, + 81, 70, 67, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 86, 87, 80, 78, 84, 92, 102, 107, 107, 112, 107, 104, + 104, 106, 109, 109, 108, 112, 114, 117, 120, 121, 122, 121, 120, 114, 122, 124, + 120, 122, 130, 130, 124, 119, 123, 124, 121, 119, 119, 115, 109, 109, 107, 105, + 103, 103, 104, 108, 109, 111, 109, 108, 105, 102, 97, 92, 89, 80, 77, 74, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 91, 97, 89, 87, 92, 100, 106, 108, 107, 107, 104, 100, 101, 106, + 111, 113, 113, 112, 117, 120, 123, 126, 126, 126, 125, 127, 132, 130, 116, 120, + 128, 126, 108, 120, 123, 126, 121, 122, 119, 117, 112, 112, 110, 107, 105, 104, + 106, 108, 110, 110, 106, 101, 98, 95, 90, 84, 78, 77, 139, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 91, 92, 97, 100, 101, 101, 103, 108, 105, 104, 103, 103, 105, 110, 113, + 115, 122, 124, 125, 126, 127, 128, 129, 129, 130, 125, 124, 123, 128, 126, 126, + 121, 125, 121, 122, 120, 122, 118, 117, 114, 109, 104, 100, 101, 107, 111, 110, + 107, 114, 108, 98, 89, 82, 79, 79, 80, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 90, 94, 99, 99, 100, 98, 100, 106, 106, 103, 102, 104, 108, 111, 113, 118, + 119, 121, 122, 125, 125, 126, 125, 129, 126, 123, 125, 127, 129, 126, 123, 126, + 124, 122, 119, 116, 111, 104, 99, 102, 109, 113, 108, 99, 98, 106, 116, 106, + 99, 89, 80, 78, 82, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 93, + 99, 103, 105, 106, 105, 110, 110, 109, 108, 108, 110, 113, 114, 115, 117, 121, + 122, 126, 124, 125, 123, 122, 120, 117, 119, 122, 123, 123, 121, 119, 118, 116, + 116, 114, 110, 105, 101, 103, 103, 102, 104, 105, 106, 104, 101, 89, 85, 81, + 79, 82, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 103, + 109, 110, 109, 108, 108, 108, 107, 106, 106, 108, 110, 111, 114, 116, 120, 123, + 123, 122, 121, 116, 114, 112, 113, 117, 118, 118, 115, 112, 110, 108, 107, 107, + 106, 105, 103, 106, 101, 97, 99, 103, 99, 87, 75, 76, 79, 84, 145, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 101, 104, + 105, 102, 102, 104, 103, 101, 99, 100, 103, 103, 106, 108, 112, 113, 113, 112, + 111, 113, 110, 108, 110, 113, 114, 114, 111, 113, 108, 102, 97, 96, 95, 94, + 93, 99, 102, 102, 92, 77, 68, 68, 72, 139, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 101, 103, + 104, 107, 107, 102, 101, 101, 102, 102, 104, 107, 108, 110, 108, 108, 109, 112, + 109, 109, 107, 112, 113, 110, 107, 110, 105, 98, 94, 93, 94, 94, 94, 90, + 86, 79, 72, 69, 73, 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 103, 105, 108, + 109, 104, 102, 103, 104, 105, 105, 106, 107, 107, 107, 107, 107, 111, 107, 105, + 104, 107, 107, 104, 101, 101, 98, 94, 92, 92, 91, 89, 88, 85, 76, 69, + 74, 88, 99, 152, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 105, 105, 102, + 98, 98, 100, 106, 104, 105, 104, 103, 103, 103, 105, 109, 105, 102, 101, 103, + 103, 99, 96, 98, 94, 90, 86, 82, 75, 68, 63, 79, 89, 100, 104, 153, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 107, 109, + 109, 104, 102, 103, 107, 107, 102, 102, 106, 105, 109, 110, 107, 102, 99, 94, + 92, 93, 75, 83, 71, 73, 88, 75, 87, 97, 150, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 205, 99, 99, 102, 110, 112, 111, 108, 101, 95, 91, 85, 73, + 74, 78, 79, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy11' of size 131x168x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy11[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 134, 132, 132, 129, 123, + 119, 121, 126, 116, 105, 102, 105, 110, 111, 112, 144, 222, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 147, 145, 146, 143, 141, 136, 122, 116, 119, + 124, 122, 111, 107, 108, 107, 109, 106, 92, 83, 92, 123, 149, 134, 125, 121, + 132, 147, 152, 149, 146, 133, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 220, 143, 144, 139, 140, 136, 130, 109, 85, 64, + 53, 53, 51, 42, 44, 54, 61, 60, 66, 61, 52, 34, 29, 51, 97, 136, + 143, 120, 101, 72, 97, 130, 159, 139, 142, 144, 151, 157, 155, 149, 183, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 244, 208, 170, 145, 145, 138, 128, 131, 124, 115, 107, 95, + 77, 54, 36, 41, 41, 37, 30, 28, 35, 40, 39, 45, 46, 42, 31, 25, + 39, 69, 96, 147, 125, 126, 77, 79, 73, 132, 148, 155, 148, 144, 144, 145, + 143, 145, 145, 150, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 244, 204, 160, 137, 217, 140, 134, 116, 85, 58, 45, 40, + 36, 35, 37, 36, 31, 25, 29, 29, 25, 21, 21, 25, 26, 25, 24, 28, + 28, 25, 22, 25, 35, 46, 115, 103, 135, 93, 86, 37, 94, 121, 122, 123, + 132, 148, 159, 158, 152, 148, 147, 143, 142, 147, 150, 186, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 88, 75, 60, 51, 44, 32, + 21, 26, 21, 16, 15, 19, 22, 22, 20, 21, 20, 21, 19, 21, 22, 24, + 21, 17, 18, 22, 23, 22, 20, 19, 20, 42, 36, 72, 59, 57, 15, 41, + 50, 52, 62, 84, 110, 126, 129, 126, 124, 136, 132, 135, 147, 159, 159, 155, + 150, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 94, 46, 44, 34, 22, + 16, 19, 24, 26, 36, 32, 27, 24, 25, 25, 23, 19, 17, 16, 17, 17, + 19, 16, 16, 16, 19, 17, 17, 18, 21, 20, 17, 16, 31, 26, 32, 35, + 32, 32, 39, 37, 38, 41, 48, 58, 66, 76, 92, 108, 124, 118, 120, 132, + 150, 153, 152, 147, 165, 148, 130, 140, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 83, 39, 37, 20, + 29, 36, 35, 30, 29, 27, 25, 16, 15, 15, 17, 19, 21, 20, 19, 22, + 18, 17, 19, 18, 12, 11, 12, 20, 15, 12, 12, 16, 17, 20, 19, 16, + 21, 17, 24, 11, 31, 29, 21, 49, 48, 50, 50, 50, 58, 78, 98, 93, + 90, 90, 101, 117, 133, 147, 157, 134, 153, 142, 125, 70, 93, 150, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 23, 23, + 26, 23, 28, 25, 18, 8, 6, 12, 20, 23, 25, 24, 22, 21, 19, 16, + 13, 11, 23, 18, 17, 19, 18, 11, 9, 12, 17, 11, 7, 7, 10, 14, + 17, 18, 22, 28, 40, 46, 41, 46, 43, 30, 32, 36, 44, 49, 49, 48, + 54, 62, 57, 59, 64, 68, 72, 85, 112, 136, 116, 155, 152, 124, 63, 120, + 112, 55, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, + 19, 26, 29, 23, 22, 17, 17, 18, 17, 19, 22, 20, 14, 16, 16, 17, + 18, 20, 20, 20, 20, 16, 11, 10, 15, 13, 8, 8, 13, 15, 12, 9, + 9, 10, 14, 16, 18, 24, 14, 32, 34, 49, 40, 47, 32, 35, 36, 41, + 47, 49, 44, 42, 43, 45, 54, 63, 56, 41, 41, 66, 95, 141, 128, 114, + 117, 55, 90, 78, 34, 84, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 184, 19, 16, 19, 19, 16, 14, 15, 16, 17, 13, 15, 21, 22, 17, + 24, 18, 17, 22, 30, 33, 27, 18, 20, 16, 11, 8, 8, 8, 9, 8, + 9, 13, 14, 13, 14, 18, 24, 26, 25, 35, 41, 39, 46, 54, 53, 43, + 29, 31, 34, 35, 36, 35, 35, 35, 37, 46, 51, 49, 50, 53, 54, 50, + 86, 114, 134, 92, 50, 86, 102, 43, 39, 99, 140, 134, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 184, 28, 18, 16, 16, 15, 13, 15, 13, 15, 13, 11, 16, + 21, 20, 14, 24, 19, 17, 19, 25, 28, 26, 21, 22, 17, 16, 14, 15, + 16, 17, 16, 15, 15, 15, 16, 19, 23, 25, 24, 24, 26, 33, 42, 46, + 43, 38, 36, 34, 31, 29, 31, 35, 36, 35, 32, 32, 39, 43, 40, 38, + 41, 41, 37, 62, 64, 88, 91, 71, 80, 93, 76, 45, 67, 99, 145, 183, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 22, 19, 20, 20, 16, 12, 13, 17, 18, 17, + 15, 14, 20, 24, 21, 14, 23, 20, 17, 17, 19, 22, 23, 23, 18, 16, + 14, 15, 18, 19, 19, 18, 23, 18, 15, 17, 24, 26, 25, 22, 29, 24, + 32, 48, 51, 38, 30, 33, 36, 29, 22, 23, 29, 33, 32, 29, 27, 33, + 37, 37, 37, 42, 43, 43, 57, 52, 70, 94, 93, 79, 83, 97, 61, 61, + 70, 137, 170, 152, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 184, 22, 18, 19, 21, 21, 15, 11, 11, + 14, 20, 17, 16, 18, 24, 26, 21, 15, 21, 21, 20, 19, 19, 19, 21, + 23, 16, 14, 13, 15, 17, 18, 18, 18, 23, 18, 16, 20, 22, 22, 24, + 27, 35, 33, 37, 47, 48, 38, 31, 30, 31, 25, 19, 17, 20, 24, 26, + 28, 28, 32, 33, 34, 34, 36, 40, 42, 34, 48, 54, 62, 68, 58, 55, + 71, 65, 70, 62, 110, 114, 105, 102, 125, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 35, 17, 20, 18, 16, 15, + 14, 14, 13, 11, 18, 15, 17, 22, 27, 26, 20, 16, 19, 22, 24, 24, + 21, 19, 19, 20, 21, 19, 17, 18, 20, 22, 22, 23, 22, 20, 21, 23, + 20, 19, 26, 37, 34, 37, 36, 31, 30, 32, 28, 19, 19, 19, 17, 13, + 11, 13, 19, 27, 37, 36, 32, 28, 22, 19, 20, 21, 12, 39, 39, 34, + 44, 42, 40, 61, 56, 60, 52, 95, 90, 71, 72, 102, 170, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 69, 20, 29, 15, 14, + 13, 10, 9, 12, 18, 18, 15, 15, 15, 19, 26, 29, 26, 22, 21, 20, + 22, 25, 25, 22, 20, 18, 17, 22, 20, 19, 19, 21, 24, 26, 26, 23, + 23, 30, 33, 28, 22, 30, 45, 38, 41, 37, 24, 23, 30, 27, 16, 14, + 18, 20, 17, 12, 12, 20, 29, 45, 41, 36, 31, 27, 23, 24, 30, 28, + 37, 36, 36, 44, 36, 38, 64, 58, 44, 40, 94, 102, 58, 45, 69, 109, + 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 18, 24, 13, + 27, 17, 11, 14, 12, 10, 14, 21, 23, 21, 19, 21, 29, 37, 37, 30, + 29, 33, 23, 22, 21, 21, 20, 19, 17, 17, 24, 22, 20, 19, 22, 27, + 33, 35, 31, 31, 39, 47, 43, 33, 34, 43, 46, 42, 36, 30, 28, 28, + 25, 22, 16, 19, 22, 22, 21, 21, 25, 30, 48, 44, 40, 39, 38, 37, + 42, 50, 37, 33, 27, 30, 35, 29, 28, 42, 54, 38, 36, 73, 96, 52, + 42, 47, 71, 53, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 20, + 21, 10, 18, 8, 18, 13, 19, 20, 16, 17, 23, 25, 24, 24, 29, 37, + 46, 45, 38, 37, 43, 26, 22, 18, 16, 17, 17, 18, 18, 32, 31, 28, + 28, 32, 39, 45, 48, 39, 38, 47, 60, 59, 46, 39, 40, 51, 38, 33, + 37, 34, 24, 21, 26, 22, 23, 26, 29, 32, 33, 32, 32, 49, 43, 39, + 38, 35, 32, 37, 46, 38, 38, 31, 23, 32, 43, 40, 28, 36, 37, 35, + 36, 66, 49, 58, 48, 52, 87, 121, 105, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 187, 29, 11, 9, 14, 13, 12, 13, 14, 11, 17, 18, 11, 15, 26, 27, + 26, 28, 39, 40, 28, 29, 43, 46, 37, 27, 16, 14, 19, 23, 21, 19, + 27, 40, 38, 23, 45, 63, 48, 54, 70, 56, 66, 66, 74, 48, 53, 57, + 40, 28, 43, 34, 33, 39, 21, 28, 31, 29, 27, 30, 40, 46, 40, 31, + 45, 50, 46, 35, 29, 34, 39, 40, 57, 42, 27, 23, 32, 37, 35, 29, + 39, 28, 29, 44, 54, 55, 60, 71, 73, 83, 104, 98, 155, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 211, 76, 33, 17, 8, 7, 11, 11, 9, 9, 9, 7, 14, 18, 13, + 19, 29, 29, 18, 21, 33, 33, 28, 37, 50, 49, 45, 27, 17, 24, 27, + 20, 18, 27, 43, 54, 52, 36, 54, 72, 59, 64, 99, 73, 71, 69, 77, + 50, 57, 66, 60, 44, 50, 37, 37, 43, 29, 34, 24, 41, 59, 59, 51, + 42, 39, 36, 40, 43, 38, 29, 26, 29, 32, 31, 44, 33, 22, 21, 28, + 32, 31, 26, 34, 33, 34, 40, 50, 59, 62, 60, 83, 66, 71, 67, 109, + 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 210, 94, 66, 15, 8, 6, 9, 12, 10, 7, 7, 7, 5, + 13, 18, 15, 20, 29, 26, 12, 16, 24, 24, 27, 48, 61, 50, 49, 28, + 19, 29, 28, 15, 17, 35, 55, 66, 71, 61, 78, 100, 93, 98, 101, 84, + 79, 67, 80, 70, 76, 69, 73, 57, 56, 41, 40, 43, 36, 38, 37, 60, + 83, 80, 65, 49, 46, 45, 39, 40, 35, 29, 24, 26, 26, 24, 31, 26, + 22, 22, 27, 30, 30, 28, 35, 40, 38, 34, 44, 59, 59, 45, 80, 52, + 65, 77, 98, 107, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 210, 139, 138, 87, 28, 10, 9, 10, 12, 13, 12, 11, + 11, 11, 6, 13, 18, 15, 19, 23, 18, 11, 14, 18, 18, 27, 54, 65, + 46, 39, 26, 18, 23, 22, 19, 28, 47, 52, 64, 79, 75, 89, 112, 108, + 109, 95, 97, 98, 74, 92, 96, 94, 64, 77, 70, 68, 58, 52, 51, 49, + 53, 67, 76, 82, 81, 75, 69, 60, 52, 45, 43, 39, 34, 31, 28, 26, + 22, 26, 25, 25, 26, 27, 31, 35, 40, 42, 42, 36, 32, 40, 53, 51, + 40, 53, 35, 60, 81, 86, 102, 86, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 92, 52, 30, 20, 16, 11, 11, 11, 10, + 10, 12, 15, 15, 13, 6, 11, 16, 14, 19, 22, 13, 9, 10, 14, 14, + 22, 47, 53, 34, 25, 25, 21, 14, 18, 32, 48, 61, 73, 85, 107, 104, + 108, 127, 122, 117, 128, 120, 121, 105, 115, 102, 97, 74, 82, 91, 94, 92, + 83, 75, 80, 83, 88, 89, 89, 87, 88, 87, 79, 67, 58, 54, 51, 46, + 39, 33, 28, 27, 29, 28, 30, 29, 29, 34, 43, 49, 48, 39, 29, 31, + 38, 43, 45, 45, 51, 41, 59, 69, 64, 93, 71, 120, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 197, 37, 23, 24, 21, 20, 20, 13, + 12, 10, 6, 8, 13, 18, 17, 16, 7, 9, 15, 16, 22, 25, 15, 7, + 7, 13, 11, 15, 31, 34, 19, 19, 26, 23, 15, 24, 49, 66, 72, 89, + 101, 129, 127, 125, 144, 142, 133, 157, 125, 123, 126, 131, 95, 98, 110, 91, + 105, 107, 112, 104, 94, 104, 104, 92, 100, 106, 104, 99, 97, 93, 87, 75, + 71, 68, 60, 48, 36, 31, 34, 32, 31, 30, 29, 29, 34, 43, 50, 49, + 40, 32, 35, 39, 42, 45, 50, 50, 51, 59, 63, 57, 79, 56, 83, 110, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 47, 26, 28, 19, 14, + 20, 18, 12, 10, 9, 5, 9, 18, 21, 18, 24, 12, 12, 16, 18, 24, + 27, 16, 8, 6, 15, 17, 12, 17, 19, 11, 18, 21, 22, 25, 36, 55, + 68, 77, 88, 97, 127, 125, 118, 138, 141, 133, 152, 126, 130, 131, 135, 106, + 120, 139, 106, 115, 106, 114, 111, 102, 117, 112, 105, 113, 117, 114, 111, 110, + 108, 103, 93, 89, 85, 74, 57, 42, 38, 44, 32, 33, 33, 32, 32, 35, + 42, 45, 51, 53, 50, 41, 39, 44, 44, 40, 34, 39, 41, 55, 57, 55, + 35, 43, 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 117, 57, 26, 18, + 17, 6, 19, 27, 3, 12, 12, 9, 7, 13, 24, 26, 21, 34, 20, 16, + 19, 19, 24, 26, 14, 14, 11, 21, 25, 15, 11, 13, 10, 21, 15, 20, + 34, 47, 54, 62, 78, 113, 116, 144, 136, 123, 142, 147, 138, 142, 145, 153, + 133, 135, 127, 143, 143, 121, 125, 106, 113, 115, 108, 124, 115, 127, 122, 115, + 112, 118, 124, 122, 113, 108, 105, 100, 88, 67, 48, 47, 55, 36, 35, 36, + 37, 37, 38, 40, 40, 57, 72, 70, 47, 38, 45, 41, 25, 46, 44, 35, + 54, 65, 50, 44, 49, 60, 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, + 14, 16, 17, 16, 14, 14, 15, 16, 9, 14, 17, 14, 12, 15, 22, 26, + 31, 30, 26, 22, 21, 20, 17, 13, 7, 43, 45, 51, 41, 16, 26, 29, + 25, 17, 41, 64, 70, 89, 60, 104, 115, 117, 151, 134, 130, 147, 134, 156, + 153, 148, 147, 149, 150, 146, 149, 154, 145, 142, 143, 143, 139, 131, 131, 135, + 138, 135, 132, 131, 131, 130, 126, 122, 119, 126, 118, 93, 73, 67, 70, 70, + 55, 53, 48, 45, 46, 49, 50, 49, 56, 54, 54, 55, 46, 34, 27, 26, + 22, 28, 36, 40, 44, 51, 58, 64, 52, 87, 95, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 202, 22, 14, 15, 15, 15, 13, 12, 13, 14, 13, 15, 15, 11, 11, + 15, 17, 18, 19, 20, 20, 19, 17, 16, 12, 10, 39, 58, 38, 37, 40, + 30, 30, 18, 37, 21, 59, 67, 76, 74, 74, 137, 127, 126, 155, 139, 136, + 152, 137, 155, 151, 148, 148, 150, 151, 148, 150, 156, 144, 142, 143, 143, 140, + 135, 136, 140, 137, 130, 128, 131, 139, 142, 138, 132, 121, 126, 122, 103, 82, + 72, 72, 73, 63, 58, 54, 51, 51, 52, 52, 51, 61, 56, 53, 53, 48, + 38, 32, 31, 33, 32, 31, 30, 35, 48, 60, 69, 42, 92, 67, 170, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 55, 14, 14, 15, 15, 14, 12, 11, 12, 13, 19, 20, + 16, 11, 11, 15, 14, 10, 14, 14, 14, 14, 13, 13, 15, 18, 43, 61, + 48, 39, 36, 25, 26, 19, 13, 32, 97, 89, 99, 80, 89, 130, 137, 134, + 155, 141, 141, 154, 139, 150, 149, 148, 149, 152, 153, 150, 152, 156, 145, 142, + 142, 144, 144, 140, 143, 147, 144, 136, 131, 133, 142, 145, 137, 128, 132, 133, + 131, 119, 101, 84, 81, 87, 68, 64, 59, 58, 61, 62, 64, 63, 69, 62, + 56, 55, 51, 45, 38, 36, 29, 29, 32, 39, 49, 58, 63, 66, 58, 60, + 92, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 40, 27, 15, 14, 15, 15, 14, 12, 11, 11, + 13, 21, 25, 23, 15, 12, 15, 15, 10, 17, 15, 13, 13, 13, 15, 22, + 31, 35, 46, 44, 46, 43, 26, 16, 20, 23, 66, 105, 69, 73, 95, 117, + 138, 139, 136, 148, 139, 141, 152, 140, 144, 147, 149, 151, 153, 154, 153, 155, + 157, 150, 147, 146, 147, 147, 146, 150, 153, 151, 145, 142, 143, 148, 147, 140, + 133, 145, 142, 142, 137, 121, 103, 101, 110, 93, 83, 75, 71, 69, 69, 70, + 73, 76, 70, 63, 59, 58, 53, 45, 37, 29, 27, 31, 44, 57, 64, 70, + 72, 75, 58, 70, 48, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 40, 27, 16, 8, 13, 14, 14, 14, + 12, 12, 13, 14, 17, 26, 26, 17, 12, 17, 19, 14, 15, 12, 12, 17, + 19, 18, 23, 31, 46, 26, 20, 38, 54, 35, 12, 19, 42, 82, 89, 71, + 69, 116, 127, 137, 141, 138, 143, 138, 143, 152, 144, 143, 147, 151, 153, 153, + 155, 156, 157, 157, 159, 154, 152, 152, 153, 152, 153, 157, 150, 149, 152, 154, + 155, 153, 151, 150, 149, 145, 145, 143, 133, 119, 119, 129, 127, 112, 98, 89, + 80, 75, 74, 79, 80, 77, 71, 69, 70, 66, 57, 49, 50, 36, 28, 32, + 42, 55, 70, 82, 70, 64, 41, 74, 70, 154, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, 20, 15, 8, 12, + 14, 14, 15, 14, 14, 16, 17, 12, 22, 24, 16, 16, 26, 27, 20, 13, + 8, 10, 19, 23, 19, 18, 23, 48, 26, 23, 33, 40, 28, 16, 43, 56, + 78, 77, 99, 104, 130, 123, 137, 145, 145, 145, 143, 148, 154, 152, 147, 150, + 154, 155, 153, 154, 157, 158, 157, 163, 157, 155, 157, 158, 155, 155, 157, 149, + 152, 157, 156, 153, 149, 148, 148, 145, 144, 145, 140, 133, 126, 128, 135, 137, + 122, 108, 104, 98, 93, 93, 100, 87, 87, 83, 78, 80, 80, 74, 68, 57, + 44, 37, 38, 42, 45, 56, 67, 62, 46, 58, 55, 79, 81, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 15, 11, + 15, 12, 11, 13, 14, 15, 15, 16, 19, 21, 15, 21, 20, 17, 28, 45, + 43, 28, 32, 17, 9, 14, 21, 21, 24, 30, 39, 36, 45, 30, 27, 30, + 32, 67, 84, 87, 80, 100, 121, 133, 146, 164, 150, 154, 149, 149, 153, 155, + 157, 151, 153, 157, 157, 152, 153, 157, 159, 158, 162, 157, 155, 158, 160, 158, + 157, 158, 154, 153, 157, 155, 153, 148, 144, 140, 141, 148, 151, 144, 138, 136, + 135, 134, 133, 121, 114, 118, 118, 112, 110, 117, 105, 105, 97, 88, 86, 88, + 89, 85, 58, 50, 50, 55, 52, 44, 43, 51, 55, 53, 58, 64, 66, 86, + 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 17, 21, 12, 13, 8, 11, 13, 14, 16, 16, 18, 21, 23, 21, 22, 18, + 19, 40, 61, 55, 35, 58, 31, 8, 7, 14, 22, 35, 50, 41, 41, 45, + 24, 34, 58, 50, 67, 68, 89, 110, 117, 153, 150, 162, 152, 156, 159, 152, + 152, 154, 154, 159, 152, 155, 159, 158, 151, 151, 157, 160, 158, 159, 154, 154, + 159, 161, 159, 157, 157, 153, 152, 154, 159, 164, 164, 159, 154, 142, 154, 159, + 151, 146, 145, 142, 135, 138, 127, 125, 130, 129, 118, 111, 115, 124, 123, 111, + 96, 88, 91, 95, 93, 72, 60, 54, 55, 49, 41, 48, 58, 64, 57, 66, + 66, 77, 92, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 176, 34, 14, 14, 18, 12, 9, 14, 26, 12, 8, 19, 13, 16, + 38, 17, 20, 14, 18, 69, 44, 38, 26, 42, 4, 24, 26, 26, 32, 48, + 65, 80, 58, 57, 57, 65, 60, 80, 97, 129, 156, 158, 153, 156, 160, 159, + 162, 159, 158, 157, 159, 159, 159, 160, 159, 155, 151, 150, 154, 157, 160, 161, + 162, 160, 156, 155, 155, 156, 157, 156, 157, 158, 158, 158, 158, 158, 158, 159, + 154, 156, 158, 157, 154, 151, 150, 149, 138, 133, 130, 127, 129, 128, 124, 121, + 121, 120, 118, 117, 115, 112, 106, 100, 100, 99, 50, 54, 57, 31, 53, 47, + 33, 37, 38, 37, 44, 55, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 18, 28, 13, 13, 13, 11, 14, 15, 27, 16, 10, + 17, 13, 22, 24, 22, 19, 17, 10, 39, 37, 60, 17, 35, 30, 20, 21, + 17, 33, 41, 49, 65, 78, 88, 92, 106, 109, 132, 138, 153, 164, 159, 155, + 163, 167, 166, 161, 160, 159, 158, 160, 160, 160, 160, 159, 156, 152, 150, 154, + 158, 160, 161, 161, 159, 157, 156, 157, 157, 157, 156, 157, 158, 159, 159, 159, + 158, 157, 157, 160, 161, 161, 159, 154, 150, 148, 147, 154, 151, 146, 136, 128, + 122, 125, 127, 124, 123, 122, 121, 121, 119, 113, 108, 106, 103, 71, 69, 62, + 39, 48, 43, 43, 42, 38, 33, 33, 36, 36, 33, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 177, 17, 18, 14, 16, 9, 15, 18, 15, + 27, 20, 13, 15, 14, 31, 25, 41, 16, 22, 14, 17, 31, 66, 23, 25, + 48, 17, 22, 25, 38, 27, 34, 42, 92, 106, 111, 123, 126, 149, 161, 166, + 163, 156, 157, 164, 166, 161, 162, 161, 160, 159, 161, 161, 161, 162, 162, 158, + 155, 154, 158, 161, 163, 163, 157, 156, 155, 156, 158, 158, 158, 156, 157, 158, + 160, 161, 160, 158, 157, 155, 161, 162, 162, 160, 156, 152, 150, 149, 160, 161, + 156, 140, 123, 116, 123, 131, 128, 127, 127, 127, 126, 125, 123, 118, 115, 110, + 96, 88, 74, 54, 42, 35, 41, 35, 33, 32, 31, 30, 33, 40, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 17, 11, 16, 21, 9, + 20, 19, 13, 25, 22, 15, 16, 18, 41, 41, 65, 13, 23, 26, 17, 27, + 41, 37, 15, 39, 20, 24, 42, 36, 22, 48, 46, 110, 129, 132, 141, 141, + 156, 155, 159, 160, 158, 160, 164, 162, 156, 163, 162, 161, 160, 162, 162, 162, + 163, 165, 162, 159, 158, 162, 165, 166, 167, 156, 155, 156, 158, 160, 160, 159, + 157, 157, 159, 162, 163, 162, 159, 156, 154, 157, 159, 160, 160, 159, 158, 158, + 159, 158, 160, 157, 145, 128, 123, 129, 138, 134, 133, 132, 132, 132, 130, 128, + 125, 123, 111, 113, 102, 89, 75, 45, 26, 31, 25, 27, 32, 32, 28, 34, + 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 21, 10, + 17, 23, 8, 19, 17, 10, 21, 20, 17, 20, 23, 47, 40, 77, 19, 27, + 33, 24, 26, 14, 39, 13, 25, 32, 20, 44, 27, 30, 55, 54, 104, 132, + 138, 156, 155, 162, 151, 157, 161, 161, 160, 161, 161, 159, 163, 163, 162, 161, + 162, 162, 163, 163, 165, 162, 160, 159, 163, 166, 166, 164, 157, 154, 157, 158, + 160, 160, 159, 156, 157, 159, 163, 164, 164, 161, 157, 155, 156, 158, 159, 160, + 160, 161, 163, 166, 161, 162, 159, 152, 145, 141, 143, 146, 141, 139, 137, 136, + 136, 135, 133, 128, 128, 111, 117, 112, 102, 97, 62, 26, 27, 23, 26, 32, + 28, 22, 25, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, + 20, 25, 13, 17, 23, 7, 13, 14, 9, 19, 16, 17, 25, 27, 45, 26, + 66, 26, 32, 28, 26, 28, 11, 25, 23, 27, 43, 18, 30, 20, 41, 54, + 71, 82, 121, 127, 153, 154, 155, 159, 161, 160, 156, 150, 150, 155, 161, 162, + 162, 161, 160, 162, 162, 163, 163, 162, 160, 158, 158, 162, 164, 164, 162, 158, + 157, 156, 157, 160, 160, 159, 158, 159, 160, 164, 165, 165, 163, 160, 159, 161, + 162, 162, 162, 161, 161, 163, 166, 163, 162, 159, 155, 151, 147, 145, 143, 145, + 142, 139, 137, 137, 137, 135, 133, 131, 116, 116, 118, 113, 110, 87, 34, 27, + 25, 27, 32, 30, 26, 28, 30, 30, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 24, 18, 24, 15, 15, 24, 11, 11, 13, 10, 19, 12, 15, 29, + 27, 36, 27, 44, 20, 35, 28, 32, 34, 21, 18, 40, 38, 41, 34, 26, + 28, 37, 71, 114, 86, 132, 130, 161, 162, 159, 166, 163, 157, 152, 147, 145, + 148, 154, 161, 162, 161, 160, 161, 161, 162, 162, 163, 161, 159, 160, 164, 165, + 165, 163, 161, 158, 156, 156, 157, 158, 159, 157, 161, 162, 165, 165, 165, 164, + 164, 164, 164, 165, 165, 163, 161, 161, 163, 165, 161, 161, 159, 155, 150, 146, + 144, 143, 144, 140, 138, 137, 140, 138, 138, 136, 133, 127, 115, 124, 118, 115, + 110, 48, 30, 30, 29, 29, 32, 37, 39, 35, 19, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 25, 11, 17, 13, 12, 24, 17, 14, 13, 12, 20, + 9, 14, 31, 26, 28, 43, 29, 6, 33, 32, 42, 38, 26, 23, 53, 44, + 32, 55, 33, 41, 23, 70, 134, 81, 134, 126, 161, 166, 162, 167, 164, 160, + 158, 155, 151, 149, 152, 161, 161, 160, 159, 161, 161, 161, 162, 165, 163, 163, + 163, 165, 167, 167, 165, 164, 160, 158, 156, 157, 159, 159, 159, 163, 163, 165, + 165, 165, 166, 167, 167, 164, 165, 165, 163, 162, 162, 165, 167, 164, 165, 164, + 159, 152, 148, 149, 152, 142, 140, 137, 139, 140, 142, 142, 139, 136, 135, 115, + 131, 119, 114, 127, 59, 32, 33, 27, 21, 24, 34, 35, 27, 33, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 203, 22, 13, 10, 14, 18, 16, 13, 12, + 12, 13, 16, 19, 24, 27, 30, 32, 38, 42, 37, 17, 59, 23, 26, 28, + 33, 32, 26, 42, 41, 24, 27, 28, 86, 114, 125, 112, 132, 156, 150, 164, + 166, 166, 163, 158, 153, 152, 157, 162, 167, 167, 163, 158, 159, 164, 165, 162, + 157, 158, 162, 164, 165, 166, 166, 166, 169, 164, 159, 160, 164, 168, 166, 165, + 156, 159, 163, 166, 167, 166, 165, 162, 165, 163, 164, 166, 165, 161, 162, 167, + 162, 162, 161, 160, 157, 154, 151, 149, 145, 143, 140, 141, 143, 144, 145, 142, + 142, 132, 125, 125, 124, 121, 119, 115, 31, 21, 27, 27, 21, 38, 47, 24, + 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 20, 11, 9, 13, 19, + 17, 14, 13, 12, 12, 11, 12, 16, 21, 25, 30, 40, 46, 29, 25, 43, + 36, 24, 19, 25, 26, 20, 34, 32, 17, 23, 26, 79, 108, 121, 104, 119, + 147, 148, 161, 162, 163, 163, 159, 155, 155, 158, 163, 165, 165, 162, 158, 160, + 166, 167, 165, 167, 166, 166, 166, 165, 165, 164, 164, 167, 164, 161, 162, 166, + 168, 168, 165, 158, 160, 164, 166, 166, 165, 164, 161, 164, 163, 164, 166, 165, + 161, 162, 167, 162, 162, 161, 160, 157, 154, 151, 150, 150, 147, 144, 143, 144, + 145, 144, 141, 147, 136, 129, 127, 126, 120, 118, 112, 105, 26, 12, 12, 25, + 22, 29, 43, 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 21, 18, 11, + 10, 15, 21, 18, 16, 15, 15, 13, 12, 12, 14, 19, 25, 31, 39, 45, + 24, 31, 25, 52, 28, 15, 23, 26, 19, 29, 26, 13, 23, 29, 73, 105, + 122, 103, 114, 147, 153, 165, 159, 161, 163, 161, 158, 157, 159, 163, 163, 163, + 161, 159, 162, 168, 170, 168, 172, 171, 169, 167, 166, 166, 167, 167, 168, 166, + 164, 166, 170, 171, 170, 167, 161, 162, 165, 166, 166, 164, 162, 160, 165, 163, + 164, 167, 165, 162, 163, 167, 163, 163, 162, 160, 157, 155, 152, 151, 153, 150, + 147, 145, 145, 146, 144, 141, 149, 138, 131, 128, 128, 121, 118, 112, 119, 22, + 5, 13, 32, 16, 16, 43, 35, 255, 255, 255, 255, 255, 255, 255, 255, 183, + 20, 18, 11, 11, 16, 19, 16, 13, 13, 18, 17, 17, 17, 20, 25, 30, + 35, 31, 39, 35, 31, 21, 58, 41, 21, 24, 29, 21, 27, 21, 10, 24, + 30, 58, 91, 116, 105, 115, 148, 155, 162, 159, 162, 164, 163, 160, 158, 158, + 161, 163, 164, 163, 160, 163, 170, 171, 168, 171, 170, 168, 166, 166, 168, 170, + 172, 170, 169, 169, 171, 174, 174, 173, 170, 165, 166, 167, 167, 166, 164, 161, + 160, 165, 164, 165, 167, 165, 162, 163, 167, 165, 164, 162, 160, 158, 155, 153, + 152, 153, 150, 147, 146, 146, 147, 146, 143, 146, 136, 131, 130, 130, 126, 122, + 118, 90, 47, 13, 25, 23, 18, 24, 31, 35, 255, 255, 255, 255, 255, 255, + 255, 255, 22, 15, 17, 13, 13, 16, 16, 12, 10, 11, 15, 15, 17, 20, + 25, 29, 32, 34, 25, 31, 55, 21, 24, 46, 46, 26, 24, 29, 20, 22, + 16, 7, 22, 27, 42, 68, 102, 104, 115, 148, 153, 153, 161, 164, 166, 165, + 160, 157, 157, 159, 165, 166, 165, 163, 165, 170, 171, 168, 173, 172, 170, 169, + 169, 170, 173, 174, 171, 171, 171, 173, 174, 173, 172, 170, 169, 169, 169, 168, + 167, 165, 163, 161, 166, 164, 165, 168, 166, 162, 163, 168, 166, 165, 163, 160, + 158, 156, 154, 153, 150, 147, 145, 145, 147, 149, 148, 146, 148, 138, 133, 134, + 133, 127, 123, 119, 104, 100, 20, 33, 11, 22, 36, 27, 34, 255, 255, 255, + 255, 255, 255, 255, 255, 22, 17, 17, 12, 12, 14, 13, 10, 10, 13, 10, + 11, 14, 16, 21, 24, 26, 27, 23, 30, 72, 11, 31, 32, 40, 30, 29, + 34, 22, 23, 19, 14, 27, 30, 42, 51, 87, 101, 118, 148, 155, 152, 162, + 165, 167, 165, 160, 157, 157, 159, 166, 167, 166, 164, 167, 172, 172, 168, 179, + 178, 176, 174, 173, 173, 174, 174, 171, 171, 171, 172, 172, 172, 172, 171, 172, + 172, 171, 170, 169, 167, 165, 164, 166, 164, 165, 168, 166, 163, 164, 168, 167, + 166, 163, 161, 158, 156, 155, 155, 151, 149, 147, 147, 150, 152, 151, 151, 153, + 145, 138, 137, 135, 129, 122, 116, 117, 113, 31, 43, 30, 35, 37, 22, 30, + 255, 255, 255, 255, 255, 255, 255, 196, 25, 22, 15, 11, 10, 12, 13, 12, + 15, 20, 16, 16, 17, 17, 18, 21, 24, 25, 21, 33, 76, 8, 37, 31, + 34, 40, 31, 35, 23, 25, 26, 24, 37, 36, 56, 45, 73, 96, 117, 148, + 157, 156, 161, 164, 166, 164, 160, 158, 159, 162, 163, 166, 166, 165, 169, 174, + 175, 171, 177, 177, 177, 176, 176, 175, 175, 175, 172, 172, 172, 172, 173, 173, + 175, 176, 172, 172, 173, 172, 170, 169, 167, 167, 166, 165, 166, 168, 167, 163, + 164, 169, 168, 167, 164, 161, 158, 157, 156, 156, 154, 152, 151, 150, 152, 153, + 153, 153, 154, 146, 140, 139, 136, 130, 122, 119, 107, 102, 76, 42, 48, 49, + 31, 19, 29, 255, 255, 255, 255, 255, 255, 255, 47, 20, 19, 14, 10, 9, + 12, 14, 14, 20, 27, 27, 24, 22, 20, 20, 22, 26, 29, 22, 38, 74, + 13, 44, 42, 34, 52, 26, 30, 18, 22, 25, 25, 40, 35, 66, 38, 57, + 84, 108, 140, 152, 154, 159, 162, 165, 163, 159, 159, 162, 165, 161, 164, 165, + 165, 170, 176, 178, 174, 170, 171, 172, 174, 176, 176, 177, 177, 177, 177, 177, + 175, 176, 177, 180, 182, 174, 173, 174, 173, 172, 170, 169, 169, 166, 165, 166, + 168, 167, 163, 164, 169, 169, 167, 164, 161, 158, 157, 156, 156, 159, 156, 155, + 154, 154, 154, 154, 153, 151, 144, 138, 139, 138, 132, 128, 124, 108, 108, 133, + 28, 43, 50, 29, 26, 28, 255, 255, 255, 255, 255, 255, 255, 28, 30, 22, + 19, 14, 12, 15, 18, 17, 17, 19, 28, 30, 34, 40, 21, 14, 32, 16, + 39, 43, 32, 38, 31, 37, 69, 48, 35, 38, 28, 35, 27, 42, 36, 36, + 41, 43, 44, 67, 109, 148, 126, 153, 158, 161, 164, 163, 159, 158, 160, 162, + 164, 165, 166, 167, 168, 172, 177, 181, 176, 177, 175, 174, 176, 180, 177, 171, + 179, 180, 180, 179, 177, 175, 178, 179, 176, 174, 173, 172, 173, 171, 167, 164, + 168, 168, 167, 165, 163, 163, 165, 168, 168, 170, 170, 164, 157, 153, 155, 159, + 159, 155, 153, 152, 155, 155, 155, 154, 151, 147, 141, 139, 139, 134, 129, 123, + 117, 116, 117, 39, 47, 47, 21, 32, 26, 255, 255, 255, 255, 255, 255, 255, + 29, 32, 23, 22, 17, 15, 19, 21, 19, 19, 21, 25, 36, 26, 46, 16, + 31, 35, 24, 36, 39, 58, 58, 39, 37, 52, 74, 27, 38, 35, 46, 37, + 47, 33, 29, 36, 46, 60, 65, 74, 133, 140, 149, 158, 161, 164, 163, 159, + 158, 160, 162, 164, 165, 166, 167, 168, 172, 177, 181, 179, 180, 179, 177, 180, + 183, 181, 175, 180, 181, 182, 180, 177, 175, 177, 178, 180, 178, 177, 176, 177, + 174, 170, 167, 167, 168, 167, 165, 164, 164, 166, 169, 166, 168, 170, 167, 162, + 158, 158, 157, 158, 156, 153, 152, 155, 156, 155, 154, 153, 148, 145, 141, 140, + 136, 131, 125, 118, 118, 120, 57, 44, 50, 26, 35, 21, 255, 255, 255, 255, + 255, 255, 255, 30, 34, 26, 24, 18, 18, 22, 23, 20, 21, 23, 25, 39, + 29, 41, 24, 39, 46, 28, 41, 39, 70, 64, 51, 46, 41, 91, 48, 54, + 45, 53, 47, 64, 59, 61, 36, 52, 75, 63, 42, 114, 150, 148, 158, 161, + 164, 163, 161, 160, 162, 164, 164, 165, 166, 167, 168, 171, 176, 180, 180, 182, + 182, 180, 181, 185, 183, 178, 181, 182, 182, 180, 178, 176, 176, 177, 183, 181, + 180, 179, 177, 174, 169, 166, 167, 167, 167, 166, 164, 165, 168, 170, 166, 167, + 169, 169, 167, 164, 160, 157, 158, 154, 153, 152, 154, 154, 156, 155, 156, 151, + 147, 143, 141, 137, 131, 126, 121, 118, 120, 83, 39, 53, 31, 35, 41, 255, + 255, 255, 255, 255, 255, 73, 31, 35, 28, 24, 18, 18, 22, 23, 19, 19, + 20, 27, 37, 36, 29, 38, 40, 56, 34, 46, 45, 53, 53, 60, 55, 44, + 80, 54, 55, 40, 46, 43, 62, 58, 58, 41, 55, 65, 62, 44, 99, 138, + 154, 158, 161, 164, 163, 161, 160, 162, 164, 164, 165, 166, 166, 167, 171, 176, + 179, 179, 182, 182, 180, 181, 184, 183, 179, 180, 181, 182, 181, 179, 178, 179, + 180, 182, 181, 180, 179, 177, 174, 169, 165, 167, 168, 168, 167, 165, 166, 169, + 171, 171, 169, 167, 166, 166, 164, 161, 156, 159, 154, 153, 152, 154, 156, 157, + 157, 159, 155, 150, 146, 144, 140, 134, 127, 124, 119, 121, 106, 36, 51, 32, + 33, 40, 255, 255, 255, 255, 255, 255, 53, 33, 33, 30, 28, 22, 21, 24, + 27, 23, 20, 20, 23, 39, 26, 32, 40, 54, 59, 48, 34, 52, 39, 50, + 66, 53, 52, 56, 55, 58, 51, 63, 61, 74, 58, 48, 50, 56, 41, 60, + 68, 89, 111, 158, 156, 161, 164, 163, 161, 160, 162, 164, 164, 165, 166, 166, + 167, 170, 175, 178, 179, 183, 184, 182, 182, 185, 185, 182, 179, 180, 182, 181, + 180, 180, 182, 184, 181, 180, 181, 180, 180, 176, 171, 166, 169, 169, 169, 168, + 166, 166, 169, 171, 176, 172, 167, 163, 161, 161, 160, 157, 157, 153, 152, 153, + 155, 157, 159, 158, 160, 156, 151, 147, 145, 141, 136, 131, 127, 123, 120, 122, + 38, 48, 31, 31, 47, 255, 255, 255, 255, 255, 255, 41, 35, 28, 30, 32, + 26, 25, 29, 31, 26, 22, 22, 16, 41, 11, 44, 38, 67, 59, 68, 20, + 50, 45, 65, 70, 51, 58, 45, 60, 69, 66, 83, 83, 104, 97, 95, 61, + 59, 28, 59, 78, 81, 99, 155, 156, 160, 164, 163, 161, 160, 162, 164, 164, + 165, 166, 166, 166, 169, 174, 177, 181, 186, 188, 186, 185, 188, 188, 187, 180, + 181, 183, 182, 181, 181, 183, 185, 182, 181, 183, 184, 184, 180, 175, 170, 171, + 171, 171, 169, 167, 166, 169, 171, 177, 174, 168, 163, 159, 158, 160, 159, 157, + 154, 152, 152, 155, 158, 160, 159, 160, 156, 151, 147, 147, 143, 137, 132, 129, + 126, 118, 125, 46, 43, 30, 33, 33, 255, 255, 255, 255, 255, 255, 35, 37, + 23, 31, 34, 28, 27, 30, 32, 27, 23, 22, 23, 36, 25, 37, 58, 55, + 66, 77, 41, 41, 54, 76, 75, 60, 60, 58, 47, 64, 67, 83, 78, 103, + 111, 122, 76, 74, 44, 62, 62, 79, 116, 150, 156, 160, 164, 163, 161, 160, + 162, 164, 164, 165, 166, 165, 166, 169, 173, 177, 180, 186, 189, 186, 185, 187, + 189, 188, 184, 184, 185, 184, 181, 180, 181, 183, 180, 180, 183, 184, 184, 181, + 175, 172, 173, 173, 172, 169, 167, 166, 168, 170, 174, 174, 172, 167, 161, 159, + 161, 163, 157, 154, 153, 152, 156, 158, 159, 158, 158, 155, 150, 147, 147, 144, + 138, 134, 128, 127, 118, 123, 57, 41, 33, 38, 47, 255, 255, 255, 255, 255, + 255, 33, 38, 21, 33, 33, 28, 28, 31, 31, 25, 21, 20, 37, 27, 51, + 17, 88, 30, 76, 75, 75, 33, 55, 75, 77, 78, 64, 73, 40, 69, 87, + 100, 84, 94, 98, 109, 89, 91, 68, 71, 42, 82, 141, 146, 156, 160, 163, + 162, 159, 158, 160, 164, 166, 167, 168, 167, 168, 170, 175, 176, 179, 183, 187, + 184, 182, 185, 187, 185, 187, 187, 188, 185, 181, 179, 179, 180, 176, 177, 180, + 182, 182, 179, 174, 170, 175, 175, 173, 170, 167, 166, 167, 169, 169, 173, 175, + 171, 165, 161, 164, 165, 160, 157, 155, 155, 157, 159, 159, 159, 157, 154, 150, + 149, 147, 145, 139, 135, 127, 127, 116, 120, 69, 42, 37, 44, 49, 255, 255, + 255, 255, 255, 144, 65, 29, 38, 42, 41, 32, 23, 21, 30, 36, 31, 21, + 28, 38, 38, 35, 59, 64, 52, 84, 52, 64, 44, 84, 71, 55, 64, 72, + 81, 47, 92, 78, 76, 96, 118, 106, 81, 92, 129, 86, 64, 88, 145, 146, + 157, 157, 157, 160, 158, 155, 158, 166, 172, 171, 170, 170, 171, 172, 174, 174, + 181, 180, 182, 184, 186, 188, 188, 188, 186, 182, 180, 179, 180, 181, 181, 180, + 172, 174, 178, 181, 181, 179, 177, 175, 175, 174, 175, 177, 173, 167, 166, 169, + 170, 172, 169, 164, 162, 164, 164, 162, 161, 159, 158, 158, 159, 160, 159, 158, + 160, 157, 155, 154, 151, 146, 140, 134, 123, 123, 121, 111, 90, 37, 43, 46, + 40, 255, 255, 255, 255, 255, 138, 88, 34, 35, 40, 38, 36, 33, 28, 29, + 31, 29, 24, 35, 41, 40, 33, 53, 58, 53, 86, 58, 72, 56, 70, 82, + 61, 76, 67, 82, 52, 86, 83, 81, 95, 121, 101, 95, 101, 116, 76, 71, + 99, 147, 151, 157, 156, 158, 159, 158, 155, 159, 167, 171, 172, 172, 172, 173, + 175, 175, 176, 179, 180, 181, 184, 186, 187, 186, 187, 182, 180, 180, 180, 181, + 180, 178, 175, 173, 174, 178, 179, 178, 177, 175, 174, 172, 171, 172, 175, 173, + 168, 167, 171, 173, 174, 172, 166, 164, 166, 166, 163, 164, 163, 159, 159, 159, + 160, 158, 157, 158, 157, 153, 151, 150, 146, 141, 137, 130, 124, 121, 110, 92, + 41, 51, 54, 46, 255, 255, 255, 255, 255, 128, 116, 35, 28, 36, 33, 38, + 41, 35, 28, 26, 26, 25, 35, 39, 40, 32, 46, 54, 55, 91, 57, 79, + 65, 58, 92, 70, 85, 64, 80, 60, 80, 94, 87, 91, 124, 98, 106, 110, + 97, 67, 87, 116, 150, 157, 157, 157, 159, 160, 159, 156, 160, 167, 169, 171, + 171, 171, 173, 175, 175, 177, 176, 178, 181, 184, 184, 185, 185, 184, 184, 184, + 186, 187, 187, 184, 182, 178, 177, 177, 178, 177, 176, 174, 173, 172, 172, 171, + 172, 174, 171, 166, 165, 169, 173, 174, 172, 166, 164, 165, 165, 162, 164, 162, + 159, 159, 159, 159, 157, 155, 156, 154, 150, 149, 147, 144, 141, 138, 131, 122, + 113, 103, 90, 43, 53, 53, 51, 255, 255, 255, 255, 255, 120, 129, 33, 24, + 34, 31, 40, 44, 38, 30, 27, 27, 26, 25, 30, 41, 36, 45, 54, 58, + 88, 50, 79, 63, 65, 96, 78, 86, 69, 76, 66, 80, 107, 90, 85, 124, + 100, 101, 114, 88, 78, 114, 134, 152, 161, 158, 158, 161, 162, 161, 157, 160, + 168, 168, 170, 170, 171, 173, 175, 176, 178, 177, 178, 181, 184, 184, 184, 184, + 183, 187, 187, 186, 187, 187, 185, 182, 179, 179, 178, 177, 175, 173, 171, 170, + 171, 178, 175, 174, 174, 170, 163, 162, 165, 171, 172, 169, 163, 161, 163, 163, + 160, 163, 160, 158, 158, 159, 159, 158, 156, 155, 151, 149, 148, 147, 145, 142, + 140, 130, 119, 111, 103, 92, 47, 53, 51, 54, 255, 255, 255, 255, 255, 119, + 115, 28, 23, 32, 34, 39, 41, 36, 34, 31, 29, 26, 17, 22, 43, 43, + 47, 53, 53, 76, 45, 75, 57, 85, 94, 85, 87, 81, 73, 68, 84, 118, + 90, 84, 121, 107, 88, 116, 92, 105, 142, 148, 153, 164, 159, 160, 164, 166, + 164, 159, 161, 168, 168, 169, 169, 170, 170, 173, 175, 177, 178, 179, 180, 182, + 183, 184, 184, 184, 185, 184, 182, 181, 181, 181, 180, 179, 180, 179, 179, 177, + 174, 172, 170, 169, 179, 176, 174, 174, 169, 163, 162, 166, 169, 170, 168, 162, + 161, 163, 163, 161, 160, 158, 157, 157, 158, 159, 159, 158, 153, 151, 150, 149, + 148, 147, 144, 141, 130, 120, 115, 110, 101, 55, 57, 51, 54, 255, 255, 255, + 255, 255, 130, 81, 23, 24, 28, 37, 39, 37, 32, 33, 37, 36, 32, 20, + 21, 45, 49, 48, 53, 49, 62, 45, 68, 55, 94, 86, 89, 96, 85, 76, + 64, 87, 123, 90, 90, 116, 113, 85, 120, 100, 131, 157, 154, 155, 162, 160, + 160, 165, 168, 166, 161, 162, 169, 168, 170, 170, 170, 170, 172, 174, 175, 179, + 179, 178, 179, 180, 182, 183, 183, 187, 184, 181, 180, 181, 182, 183, 182, 179, + 178, 179, 178, 175, 172, 170, 169, 173, 171, 170, 171, 168, 164, 165, 170, 169, + 171, 169, 164, 163, 166, 167, 165, 160, 159, 157, 157, 157, 158, 158, 157, 152, + 151, 150, 150, 150, 147, 143, 139, 125, 119, 116, 113, 104, 54, 55, 49, 48, + 255, 255, 255, 255, 255, 147, 40, 17, 23, 22, 37, 39, 35, 31, 32, 37, + 41, 41, 29, 22, 44, 48, 45, 53, 52, 60, 49, 59, 56, 79, 74, 85, + 111, 73, 83, 57, 86, 122, 91, 103, 111, 117, 96, 128, 104, 145, 158, 150, + 156, 160, 160, 161, 166, 169, 167, 162, 164, 169, 169, 169, 168, 168, 169, 171, + 172, 173, 178, 175, 175, 174, 175, 177, 179, 182, 187, 186, 185, 185, 188, 188, + 187, 185, 179, 180, 181, 180, 178, 174, 171, 168, 169, 167, 166, 167, 165, 162, + 164, 169, 166, 168, 167, 163, 163, 167, 168, 166, 163, 160, 157, 156, 156, 156, + 153, 151, 150, 150, 150, 151, 148, 144, 138, 133, 122, 117, 117, 112, 101, 49, + 51, 47, 40, 255, 255, 255, 255, 143, 161, 15, 15, 26, 17, 36, 39, 38, + 30, 29, 35, 45, 49, 34, 23, 41, 44, 43, 55, 58, 66, 52, 51, 58, + 57, 64, 79, 122, 58, 90, 52, 84, 120, 92, 114, 108, 117, 110, 133, 104, + 148, 153, 146, 157, 159, 161, 162, 167, 170, 168, 163, 164, 169, 170, 169, 168, + 168, 169, 169, 171, 172, 175, 174, 172, 171, 171, 174, 177, 180, 179, 182, 183, + 186, 189, 188, 185, 182, 178, 179, 182, 181, 179, 175, 171, 168, 170, 167, 165, + 165, 162, 158, 159, 164, 163, 165, 164, 160, 161, 165, 167, 165, 166, 163, 159, + 157, 156, 152, 150, 148, 148, 148, 150, 151, 148, 143, 135, 130, 126, 122, 121, + 115, 102, 50, 54, 52, 108, 255, 255, 255, 255, 146, 145, 18, 25, 23, 23, + 32, 47, 39, 30, 44, 46, 44, 51, 33, 52, 54, 45, 50, 58, 61, 66, + 37, 62, 35, 70, 53, 90, 99, 83, 78, 70, 74, 114, 98, 87, 128, 102, + 112, 132, 85, 169, 150, 156, 157, 160, 167, 166, 166, 166, 167, 167, 166, 164, + 169, 169, 169, 170, 171, 171, 171, 169, 170, 169, 168, 167, 169, 173, 179, 182, + 188, 178, 180, 183, 180, 183, 184, 174, 175, 175, 179, 180, 181, 178, 173, 169, + 163, 164, 166, 167, 166, 164, 162, 160, 160, 164, 164, 162, 163, 166, 165, 162, + 167, 163, 158, 157, 155, 153, 149, 144, 148, 148, 147, 144, 147, 147, 139, 128, + 118, 122, 118, 114, 110, 19, 41, 38, 255, 255, 255, 255, 219, 140, 140, 24, + 32, 29, 29, 41, 49, 49, 46, 47, 45, 43, 50, 44, 53, 46, 42, 59, + 68, 62, 55, 47, 61, 32, 75, 68, 80, 100, 84, 75, 72, 74, 114, 108, + 94, 127, 113, 107, 125, 99, 162, 150, 159, 157, 161, 169, 168, 168, 168, 169, + 168, 167, 168, 166, 168, 169, 170, 171, 171, 169, 168, 169, 166, 164, 167, 173, + 178, 178, 177, 187, 178, 180, 183, 182, 184, 185, 176, 170, 171, 173, 177, 179, + 177, 173, 170, 166, 167, 167, 168, 166, 164, 162, 160, 159, 163, 163, 161, 161, + 164, 164, 161, 166, 162, 158, 157, 155, 154, 149, 145, 146, 147, 144, 142, 144, + 145, 138, 128, 122, 122, 118, 114, 93, 19, 36, 27, 255, 255, 255, 255, 147, + 142, 141, 35, 41, 37, 36, 46, 38, 43, 48, 42, 41, 53, 63, 37, 55, + 57, 49, 54, 57, 60, 67, 52, 56, 28, 72, 78, 59, 95, 76, 68, 70, + 67, 104, 111, 91, 110, 113, 100, 116, 122, 153, 152, 164, 157, 162, 170, 170, + 170, 170, 171, 171, 170, 170, 166, 167, 169, 170, 168, 167, 166, 165, 163, 161, + 161, 168, 176, 180, 177, 172, 182, 175, 178, 183, 181, 183, 184, 177, 178, 177, + 177, 178, 177, 174, 169, 167, 170, 170, 170, 169, 166, 163, 160, 158, 159, 161, + 161, 158, 159, 162, 163, 161, 162, 158, 155, 154, 156, 156, 151, 148, 144, 146, + 145, 142, 141, 141, 136, 129, 126, 122, 117, 114, 73, 20, 33, 13, 255, 255, + 255, 217, 150, 146, 140, 47, 44, 38, 40, 64, 41, 46, 57, 40, 30, 38, + 42, 33, 54, 60, 51, 49, 52, 64, 82, 48, 55, 35, 68, 80, 45, 97, + 73, 67, 72, 64, 92, 110, 89, 95, 111, 96, 110, 144, 146, 152, 167, 157, + 163, 169, 171, 172, 170, 170, 169, 169, 169, 168, 168, 169, 169, 166, 164, 162, + 161, 159, 160, 164, 170, 175, 176, 173, 169, 174, 168, 175, 180, 179, 183, 185, + 179, 181, 179, 180, 180, 179, 176, 172, 168, 173, 172, 171, 169, 166, 162, 159, + 157, 159, 161, 160, 156, 156, 161, 163, 161, 161, 157, 154, 155, 157, 157, 154, + 151, 147, 149, 148, 144, 142, 142, 137, 130, 127, 120, 117, 115, 62, 28, 36, + 13, 255, 255, 255, 143, 152, 151, 141, 61, 52, 45, 46, 57, 31, 36, 52, + 42, 34, 40, 42, 47, 51, 43, 40, 55, 65, 72, 81, 41, 55, 49, 66, + 79, 49, 105, 83, 69, 78, 71, 90, 114, 100, 98, 119, 98, 113, 160, 147, + 153, 167, 158, 166, 168, 169, 171, 169, 167, 165, 166, 167, 171, 170, 167, 165, + 162, 160, 157, 156, 163, 167, 169, 169, 164, 160, 159, 159, 166, 160, 170, 175, + 176, 181, 186, 181, 176, 177, 179, 181, 183, 183, 181, 178, 175, 175, 173, 170, + 166, 162, 159, 157, 160, 162, 160, 155, 156, 161, 164, 163, 161, 158, 155, 156, + 158, 159, 156, 151, 147, 149, 148, 145, 146, 147, 142, 133, 126, 118, 120, 115, + 66, 43, 47, 27, 255, 255, 255, 150, 157, 155, 147, 88, 85, 79, 78, 79, + 51, 35, 34, 28, 27, 46, 62, 51, 54, 48, 43, 53, 60, 69, 84, 39, + 45, 51, 59, 70, 54, 97, 87, 62, 74, 76, 90, 115, 114, 108, 121, 107, + 124, 162, 152, 152, 164, 158, 165, 166, 168, 170, 167, 165, 162, 163, 165, 171, + 169, 164, 161, 159, 158, 157, 157, 171, 173, 170, 161, 149, 142, 142, 144, 156, + 152, 159, 166, 164, 171, 180, 176, 183, 185, 187, 189, 190, 188, 183, 179, 179, + 179, 176, 172, 168, 164, 162, 160, 163, 164, 161, 156, 156, 162, 166, 165, 163, + 160, 158, 158, 160, 161, 157, 154, 146, 147, 145, 145, 148, 150, 142, 128, 117, + 108, 119, 109, 79, 52, 54, 44, 255, 255, 218, 157, 153, 146, 147, 119, 130, + 127, 122, 144, 127, 96, 68, 46, 28, 29, 50, 55, 65, 63, 55, 51, 48, + 57, 78, 57, 37, 46, 56, 62, 53, 70, 79, 51, 66, 82, 92, 113, 123, + 111, 110, 117, 137, 158, 159, 150, 159, 157, 165, 165, 168, 170, 167, 164, 161, + 163, 165, 168, 163, 160, 157, 156, 158, 160, 162, 172, 169, 159, 147, 134, 129, + 132, 135, 144, 139, 145, 149, 145, 151, 161, 159, 172, 176, 180, 185, 186, 183, + 178, 174, 184, 184, 181, 177, 172, 169, 166, 165, 166, 167, 163, 157, 157, 164, + 168, 169, 166, 162, 159, 160, 162, 163, 158, 155, 152, 149, 143, 143, 146, 144, + 129, 110, 100, 88, 107, 91, 85, 47, 49, 49, 255, 255, 145, 153, 145, 135, + 141, 138, 160, 161, 154, 152, 167, 161, 141, 114, 73, 46, 56, 77, 72, 60, + 55, 63, 61, 54, 56, 85, 39, 48, 62, 62, 55, 48, 71, 48, 65, 88, + 98, 113, 128, 113, 100, 125, 148, 155, 165, 151, 158, 157, 165, 165, 168, 171, + 168, 164, 160, 162, 165, 165, 160, 156, 154, 154, 158, 162, 166, 167, 157, 144, + 133, 127, 128, 131, 133, 132, 127, 131, 134, 129, 135, 144, 143, 138, 143, 155, + 166, 174, 177, 174, 172, 186, 185, 184, 178, 176, 173, 170, 169, 168, 168, 164, + 158, 158, 165, 170, 170, 167, 163, 161, 161, 164, 164, 161, 156, 160, 154, 145, + 141, 142, 135, 114, 90, 84, 73, 96, 73, 84, 37, 38, 47, 255, 255, 153, + 156, 145, 142, 156, 162, 157, 158, 167, 164, 166, 167, 162, 152, 132, 100, 70, + 65, 68, 69, 70, 68, 52, 51, 65, 77, 50, 61, 58, 79, 80, 49, 85, + 73, 60, 81, 112, 104, 137, 114, 116, 143, 151, 157, 160, 159, 158, 158, 160, + 166, 169, 170, 166, 160, 158, 161, 167, 163, 161, 154, 151, 155, 159, 157, 149, + 152, 142, 130, 123, 121, 123, 122, 118, 123, 122, 112, 99, 100, 113, 120, 119, + 111, 115, 117, 124, 145, 170, 181, 177, 183, 178, 184, 165, 177, 168, 176, 168, + 169, 171, 168, 161, 160, 166, 174, 177, 172, 169, 168, 167, 167, 164, 165, 167, + 158, 145, 141, 143, 136, 122, 99, 68, 56, 65, 65, 78, 84, 42, 18, 46, + 255, 255, 153, 141, 148, 158, 170, 177, 175, 168, 160, 162, 169, 173, 169, 168, + 165, 148, 128, 93, 80, 102, 76, 88, 47, 69, 66, 66, 48, 57, 37, 65, + 79, 58, 78, 73, 59, 78, 100, 111, 138, 124, 131, 149, 155, 159, 161, 160, + 159, 160, 161, 164, 166, 167, 164, 159, 156, 159, 163, 161, 164, 161, 156, 153, + 148, 141, 133, 150, 138, 124, 116, 114, 118, 120, 120, 106, 108, 101, 91, 90, + 99, 103, 97, 93, 98, 103, 105, 111, 125, 141, 150, 169, 175, 180, 168, 166, + 162, 170, 170, 165, 168, 164, 158, 159, 166, 172, 173, 169, 166, 164, 165, 167, + 168, 167, 167, 162, 149, 140, 130, 108, 93, 78, 59, 45, 53, 53, 66, 76, + 41, 12, 255, 255, 220, 149, 137, 157, 172, 177, 179, 178, 168, 152, 160, 172, + 175, 168, 169, 182, 181, 169, 139, 111, 95, 109, 93, 93, 74, 54, 46, 47, + 67, 30, 52, 67, 64, 72, 69, 57, 70, 76, 117, 129, 128, 138, 154, 158, + 160, 161, 160, 159, 159, 160, 161, 163, 164, 162, 158, 156, 157, 160, 140, 151, + 158, 156, 151, 148, 144, 140, 127, 122, 118, 118, 126, 134, 139, 140, 133, 135, + 133, 126, 125, 128, 126, 117, 112, 106, 98, 93, 91, 89, 93, 100, 139, 157, + 168, 172, 160, 163, 166, 172, 169, 169, 164, 159, 163, 171, 175, 175, 169, 165, + 161, 162, 166, 168, 166, 162, 151, 141, 133, 115, 85, 71, 67, 59, 34, 44, + 43, 54, 68, 47, 16, 255, 255, 147, 141, 153, 169, 179, 180, 174, 167, 160, + 153, 167, 182, 183, 166, 162, 178, 182, 174, 168, 140, 109, 145, 100, 121, 80, + 49, 33, 49, 83, 48, 53, 53, 63, 70, 67, 58, 68, 64, 123, 121, 131, + 137, 157, 160, 160, 159, 158, 158, 158, 158, 160, 162, 163, 162, 158, 156, 156, + 157, 150, 160, 164, 154, 140, 132, 129, 129, 122, 125, 132, 145, 156, 164, 166, + 165, 156, 159, 158, 154, 153, 154, 149, 139, 153, 127, 110, 107, 105, 94, 81, + 75, 103, 131, 148, 171, 159, 172, 165, 173, 172, 169, 163, 160, 164, 172, 177, + 172, 173, 168, 163, 161, 165, 168, 163, 153, 137, 127, 120, 101, 74, 66, 70, + 69, 58, 66, 60, 56, 62, 50, 24, 255, 255, 145, 133, 164, 171, 182, 186, + 172, 153, 152, 161, 172, 187, 190, 174, 167, 174, 175, 168, 162, 146, 162, 154, + 121, 92, 88, 58, 43, 44, 70, 58, 57, 51, 61, 67, 66, 61, 71, 66, + 132, 119, 140, 141, 159, 159, 158, 157, 157, 157, 156, 155, 160, 162, 163, 162, + 160, 157, 154, 153, 150, 155, 154, 140, 128, 127, 132, 138, 155, 159, 164, 169, + 174, 174, 171, 168, 164, 164, 163, 160, 160, 161, 158, 152, 159, 139, 128, 130, + 131, 119, 106, 100, 93, 114, 125, 149, 146, 167, 163, 169, 164, 162, 157, 155, + 159, 166, 170, 167, 170, 168, 162, 159, 162, 166, 158, 146, 130, 114, 101, 85, + 70, 74, 88, 92, 107, 108, 95, 75, 61, 50, 31, 255, 255, 144, 132, 158, + 165, 180, 189, 173, 148, 147, 166, 167, 183, 191, 186, 178, 176, 170, 164, 158, + 154, 166, 160, 125, 101, 87, 64, 64, 39, 37, 52, 54, 62, 63, 60, 59, + 56, 68, 73, 128, 116, 146, 140, 158, 158, 157, 157, 158, 157, 155, 152, 161, + 162, 163, 163, 160, 156, 151, 147, 134, 135, 133, 127, 128, 140, 156, 164, 178, + 176, 171, 169, 166, 166, 165, 165, 174, 172, 169, 167, 167, 165, 164, 161, 146, + 147, 150, 149, 141, 130, 127, 130, 114, 118, 115, 123, 129, 150, 158, 164, 161, + 161, 157, 153, 157, 164, 167, 165, 162, 163, 158, 152, 153, 155, 148, 136, 113, + 92, 80, 75, 77, 98, 122, 130, 131, 130, 117, 93, 71, 60, 51, 255, 255, + 148, 138, 148, 165, 181, 181, 163, 147, 152, 168, 176, 187, 199, 202, 192, 176, + 164, 158, 165, 165, 151, 160, 131, 127, 89, 70, 70, 46, 25, 55, 44, 66, + 60, 49, 60, 56, 66, 81, 115, 110, 147, 136, 158, 158, 158, 159, 161, 160, + 156, 152, 160, 161, 162, 161, 159, 153, 147, 142, 146, 143, 137, 132, 136, 148, + 158, 162, 173, 173, 169, 166, 164, 167, 170, 173, 173, 169, 165, 164, 163, 160, + 158, 155, 147, 156, 162, 155, 145, 140, 142, 142, 140, 131, 126, 114, 127, 137, + 154, 157, 158, 160, 158, 154, 154, 160, 164, 167, 157, 162, 156, 145, 139, 139, + 131, 118, 94, 81, 81, 91, 102, 125, 145, 147, 135, 129, 122, 105, 82, 70, + 126, 255, 255, 151, 145, 147, 170, 182, 169, 148, 146, 158, 169, 198, 203, 214, + 219, 204, 177, 157, 151, 165, 165, 179, 144, 157, 112, 109, 89, 61, 56, 38, + 70, 35, 62, 52, 42, 68, 64, 72, 92, 111, 109, 151, 136, 159, 158, 159, + 161, 163, 162, 157, 152, 160, 160, 160, 160, 157, 151, 144, 137, 140, 136, 136, + 139, 152, 168, 177, 178, 173, 175, 177, 178, 179, 179, 180, 181, 179, 177, 173, + 173, 169, 165, 160, 159, 153, 159, 157, 152, 153, 159, 158, 149, 152, 143, 144, + 123, 137, 135, 153, 153, 151, 155, 155, 150, 148, 153, 158, 163, 157, 164, 156, + 139, 126, 122, 113, 98, 94, 91, 103, 118, 127, 137, 142, 135, 140, 130, 124, + 111, 87, 69, 255, 255, 255, 123, 148, 139, 180, 180, 173, 150, 141, 170, 169, + 194, 184, 176, 174, 170, 163, 161, 165, 163, 172, 166, 154, 151, 139, 116, 98, + 72, 54, 57, 52, 46, 68, 29, 57, 58, 45, 74, 111, 94, 123, 127, 136, + 148, 157, 163, 162, 160, 160, 159, 157, 161, 159, 157, 158, 159, 155, 145, 136, + 143, 149, 155, 152, 157, 168, 176, 175, 167, 181, 166, 172, 176, 170, 173, 174, + 170, 167, 169, 171, 163, 154, 157, 168, 159, 152, 150, 153, 157, 155, 157, 157, + 153, 157, 159, 149, 138, 134, 144, 156, 155, 154, 149, 143, 143, 149, 154, 156, + 147, 152, 141, 130, 127, 97, 81, 95, 120, 111, 116, 133, 140, 133, 134, 146, + 137, 139, 132, 103, 109, 69, 255, 255, 255, 131, 143, 146, 175, 176, 164, 150, + 151, 169, 170, 161, 187, 191, 172, 170, 185, 182, 154, 159, 171, 166, 155, 154, + 148, 134, 123, 71, 56, 75, 61, 66, 66, 33, 47, 43, 47, 80, 107, 92, + 126, 133, 135, 147, 153, 158, 158, 158, 160, 159, 156, 162, 160, 159, 158, 157, + 152, 145, 139, 143, 150, 156, 154, 156, 167, 171, 169, 185, 187, 167, 168, 171, + 162, 163, 155, 147, 144, 141, 142, 150, 160, 159, 154, 154, 155, 157, 155, 148, + 145, 155, 167, 153, 154, 155, 152, 149, 149, 154, 159, 158, 158, 154, 147, 146, + 150, 152, 152, 143, 153, 133, 126, 109, 107, 98, 117, 125, 131, 132, 129, 134, + 138, 131, 120, 129, 133, 133, 114, 117, 73, 255, 255, 255, 141, 136, 156, 166, + 173, 153, 148, 164, 168, 174, 179, 174, 180, 193, 193, 177, 171, 173, 160, 174, + 169, 156, 155, 154, 149, 148, 95, 70, 80, 45, 60, 49, 37, 49, 31, 44, + 81, 98, 92, 130, 140, 138, 152, 155, 156, 156, 158, 161, 159, 154, 161, 161, + 161, 158, 154, 150, 148, 146, 155, 163, 168, 165, 167, 174, 174, 170, 172, 163, + 136, 136, 150, 151, 166, 157, 162, 163, 155, 144, 144, 152, 144, 128, 134, 141, + 151, 156, 150, 144, 147, 153, 156, 154, 155, 158, 163, 164, 163, 161, 160, 162, + 159, 153, 151, 151, 149, 145, 162, 152, 128, 109, 102, 105, 107, 113, 105, 109, + 108, 102, 105, 115, 124, 126, 133, 132, 132, 119, 112, 68, 255, 255, 255, 151, + 133, 157, 159, 172, 147, 145, 171, 171, 182, 186, 195, 190, 174, 180, 199, 194, + 174, 161, 177, 172, 157, 153, 152, 152, 156, 124, 92, 76, 41, 49, 46, 37, + 50, 33, 39, 73, 89, 98, 131, 142, 145, 159, 160, 159, 157, 159, 163, 160, + 153, 158, 160, 162, 158, 153, 151, 154, 157, 165, 175, 179, 177, 175, 179, 176, + 171, 160, 148, 136, 138, 156, 155, 176, 162, 137, 139, 137, 130, 129, 137, 145, + 151, 132, 128, 131, 141, 150, 151, 147, 142, 156, 154, 157, 162, 167, 168, 164, + 160, 161, 164, 162, 158, 154, 151, 147, 141, 158, 117, 109, 103, 123, 115, 129, + 120, 136, 125, 123, 125, 113, 98, 110, 135, 134, 130, 125, 115, 99, 127, 255, + 255, 255, 153, 136, 151, 155, 169, 145, 144, 173, 175, 192, 191, 189, 178, 171, + 187, 209, 205, 184, 160, 174, 169, 155, 152, 150, 149, 153, 139, 115, 77, 63, + 57, 64, 42, 51, 44, 33, 59, 79, 107, 131, 141, 152, 157, 159, 158, 157, + 160, 165, 162, 156, 155, 159, 161, 159, 155, 155, 161, 166, 166, 176, 181, 176, + 174, 176, 171, 163, 155, 145, 148, 143, 144, 118, 130, 101, 84, 77, 81, 99, + 110, 113, 120, 133, 138, 128, 123, 131, 141, 148, 151, 152, 153, 153, 158, 163, + 165, 165, 165, 166, 169, 172, 170, 165, 160, 156, 152, 145, 160, 109, 102, 139, + 117, 102, 97, 101, 128, 112, 113, 128, 126, 111, 116, 133, 127, 124, 121, 116, + 91, 255, 255, 255, 255, 148, 144, 141, 153, 163, 147, 148, 171, 185, 198, 204, + 174, 166, 192, 208, 192, 180, 183, 159, 169, 161, 150, 152, 156, 153, 154, 151, + 129, 79, 71, 60, 72, 52, 61, 53, 32, 52, 71, 113, 131, 139, 155, 148, + 153, 155, 156, 160, 164, 164, 159, 156, 160, 162, 161, 158, 160, 166, 173, 167, + 177, 181, 176, 174, 174, 168, 159, 158, 137, 135, 110, 97, 62, 85, 55, 62, + 50, 67, 114, 139, 119, 86, 68, 105, 114, 128, 140, 143, 139, 141, 145, 150, + 151, 156, 158, 160, 163, 170, 174, 180, 182, 179, 171, 166, 163, 157, 151, 155, + 117, 101, 176, 80, 70, 38, 62, 83, 70, 60, 65, 85, 108, 125, 130, 127, + 132, 130, 123, 82, 255, 255, 255, 255, 140, 153, 133, 153, 153, 151, 155, 172, + 196, 197, 190, 191, 190, 189, 196, 197, 179, 154, 164, 168, 156, 147, 156, 164, + 161, 160, 158, 140, 98, 80, 73, 67, 60, 65, 51, 39, 61, 66, 113, 131, + 140, 151, 147, 154, 159, 159, 160, 162, 161, 158, 161, 163, 164, 163, 162, 164, + 168, 173, 171, 180, 183, 179, 176, 178, 172, 163, 170, 139, 134, 104, 97, 76, + 117, 95, 72, 65, 82, 128, 158, 144, 102, 72, 76, 91, 115, 138, 146, 144, + 142, 140, 158, 156, 156, 156, 158, 164, 173, 179, 190, 191, 185, 174, 166, 162, + 157, 152, 125, 86, 88, 164, 73, 65, 49, 66, 129, 112, 90, 72, 66, 76, + 99, 115, 129, 137, 132, 119, 67, 255, 255, 255, 255, 134, 159, 127, 151, 142, + 149, 158, 171, 202, 194, 196, 175, 179, 208, 211, 181, 166, 175, 172, 169, 154, + 145, 159, 171, 167, 163, 152, 145, 130, 107, 109, 71, 64, 54, 47, 50, 74, + 66, 113, 135, 144, 147, 153, 164, 169, 165, 163, 160, 160, 155, 165, 166, 166, + 165, 165, 166, 168, 170, 170, 179, 184, 178, 174, 174, 172, 161, 156, 130, 143, + 129, 136, 119, 163, 133, 124, 109, 98, 106, 123, 130, 120, 105, 84, 82, 90, + 113, 139, 154, 160, 161, 170, 163, 156, 154, 157, 165, 173, 177, 194, 192, 185, + 171, 161, 157, 152, 147, 131, 70, 96, 136, 100, 72, 83, 68, 179, 166, 157, + 140, 94, 53, 65, 104, 118, 128, 120, 101, 48, 255, 255, 255, 255, 146, 146, + 143, 142, 133, 159, 136, 192, 199, 181, 186, 177, 197, 230, 186, 177, 176, 179, + 172, 162, 164, 177, 184, 180, 173, 172, 153, 151, 134, 118, 117, 122, 107, 83, + 58, 55, 57, 70, 100, 132, 149, 154, 156, 158, 159, 159, 162, 162, 164, 164, + 169, 170, 170, 169, 169, 170, 172, 176, 175, 177, 177, 175, 177, 180, 180, 174, + 167, 162, 157, 155, 159, 161, 157, 154, 162, 157, 147, 136, 129, 129, 135, 139, + 127, 128, 134, 139, 138, 135, 150, 169, 172, 156, 151, 159, 162, 157, 163, 177, + 184, 190, 190, 177, 162, 153, 149, 146, 90, 84, 77, 77, 81, 74, 81, 102, + 173, 164, 149, 126, 99, 78, 74, 80, 99, 114, 131, 69, 122, 255, 255, 255, + 255, 147, 145, 147, 134, 140, 149, 145, 190, 198, 182, 182, 175, 192, 228, 198, + 194, 180, 169, 173, 164, 166, 182, 193, 187, 176, 170, 158, 152, 142, 131, 134, + 137, 129, 112, 87, 80, 71, 74, 95, 121, 139, 145, 156, 160, 160, 162, 163, + 164, 164, 164, 167, 168, 168, 167, 167, 168, 170, 173, 177, 178, 178, 175, 177, + 180, 178, 174, 167, 163, 160, 159, 162, 163, 162, 160, 166, 162, 156, 149, 144, + 142, 144, 145, 140, 141, 148, 156, 153, 148, 155, 170, 169, 156, 153, 161, 163, + 157, 162, 174, 179, 185, 186, 176, 163, 153, 144, 136, 89, 91, 88, 88, 91, + 88, 91, 106, 139, 113, 91, 95, 108, 109, 91, 74, 95, 111, 122, 58, 255, + 255, 255, 255, 255, 147, 146, 153, 130, 150, 142, 156, 193, 196, 182, 183, 188, + 207, 223, 189, 188, 190, 188, 173, 166, 171, 190, 202, 196, 179, 171, 160, 150, + 142, 138, 140, 139, 137, 132, 130, 125, 117, 114, 125, 141, 154, 159, 156, 159, + 162, 164, 165, 165, 164, 163, 167, 168, 168, 168, 167, 169, 172, 175, 179, 180, + 179, 176, 176, 179, 178, 173, 169, 168, 167, 166, 166, 166, 167, 167, 166, 165, + 162, 159, 156, 154, 153, 152, 148, 146, 150, 156, 155, 151, 155, 166, 168, 158, + 156, 163, 164, 157, 160, 170, 173, 179, 180, 175, 166, 155, 140, 127, 114, 127, + 128, 125, 130, 130, 127, 132, 131, 117, 109, 117, 128, 128, 117, 108, 98, 114, + 111, 51, 255, 255, 255, 255, 255, 147, 148, 156, 134, 149, 144, 154, 195, 186, + 181, 174, 182, 202, 209, 191, 188, 190, 182, 169, 169, 178, 199, 208, 198, 182, + 175, 163, 149, 141, 139, 139, 132, 133, 137, 129, 133, 136, 137, 144, 150, 154, + 154, 157, 160, 164, 166, 167, 165, 163, 161, 169, 170, 171, 171, 171, 172, 175, + 177, 181, 181, 179, 176, 176, 179, 178, 173, 173, 174, 174, 173, 171, 171, 172, + 173, 167, 165, 162, 161, 159, 158, 156, 155, 152, 145, 141, 142, 143, 145, 154, + 163, 167, 160, 160, 166, 164, 157, 158, 166, 171, 175, 176, 172, 166, 157, 141, + 126, 122, 141, 144, 137, 142, 146, 141, 139, 132, 133, 137, 136, 126, 116, 117, + 124, 112, 120, 98, 116, 255, 255, 255, 255, 255, 147, 149, 157, 148, 142, 152, + 147, 194, 175, 179, 177, 177, 196, 218, 242, 240, 214, 174, 166, 171, 184, 204, + 208, 197, 186, 184, 168, 152, 143, 142, 140, 131, 134, 141, 117, 126, 134, 139, + 146, 149, 149, 146, 156, 160, 163, 165, 166, 164, 161, 159, 170, 171, 173, 173, + 173, 174, 176, 178, 183, 183, 180, 176, 177, 180, 179, 175, 176, 177, 178, 177, + 174, 173, 173, 174, 170, 165, 160, 158, 158, 158, 158, 156, 155, 149, 145, 146, + 149, 153, 160, 165, 168, 165, 166, 169, 166, 159, 159, 165, 173, 175, 174, 170, + 167, 160, 146, 131, 121, 142, 144, 134, 137, 145, 142, 138, 138, 132, 129, 129, + 129, 126, 123, 123, 120, 118, 77, 255, 255, 255, 255, 255, 255, 148, 149, 154, + 161, 134, 157, 146, 184, 174, 179, 175, 175, 192, 209, 240, 239, 226, 202, 168, + 171, 182, 200, 206, 196, 188, 188, 167, 153, 143, 140, 139, 133, 136, 141, 131, + 136, 141, 143, 150, 156, 158, 157, 158, 161, 163, 164, 164, 162, 160, 159, 167, + 169, 171, 172, 171, 172, 174, 176, 183, 183, 180, 176, 177, 181, 181, 177, 177, + 177, 176, 175, 174, 172, 170, 168, 168, 163, 156, 154, 155, 158, 158, 157, 150, + 152, 155, 158, 161, 162, 164, 165, 172, 169, 171, 171, 166, 159, 159, 164, 171, + 174, 173, 169, 167, 162, 150, 139, 127, 143, 143, 134, 138, 144, 143, 143, 146, + 137, 132, 135, 140, 137, 135, 134, 119, 107, 58, 255, 255, 255, 255, 255, 255, + 148, 150, 151, 168, 130, 153, 154, 168, 184, 182, 161, 164, 175, 166, 180, 172, + 190, 203, 175, 169, 175, 192, 203, 200, 192, 188, 167, 155, 144, 138, 138, 136, + 137, 135, 134, 136, 137, 138, 146, 154, 157, 156, 158, 159, 162, 162, 161, 160, + 159, 158, 167, 169, 172, 172, 172, 172, 176, 178, 182, 182, 179, 176, 177, 182, + 182, 179, 182, 179, 176, 176, 176, 174, 170, 165, 166, 161, 156, 156, 160, 164, + 164, 162, 152, 158, 163, 165, 165, 166, 167, 166, 175, 175, 177, 175, 168, 162, + 162, 167, 168, 173, 175, 173, 170, 165, 155, 143, 121, 135, 135, 130, 135, 135, + 134, 137, 139, 138, 138, 137, 132, 127, 129, 132, 118, 105, 50, 255, 255, 255, + 255, 255, 255, 148, 149, 147, 168, 131, 146, 163, 154, 195, 184, 179, 172, 173, + 154, 168, 151, 165, 179, 181, 168, 167, 186, 202, 203, 193, 186, 174, 163, 151, + 141, 141, 141, 139, 132, 134, 136, 139, 142, 152, 158, 158, 154, 159, 159, 161, + 160, 159, 159, 158, 158, 169, 171, 174, 175, 175, 175, 178, 180, 184, 182, 179, + 175, 177, 182, 183, 180, 188, 183, 179, 179, 181, 179, 172, 167, 164, 160, 158, + 160, 166, 169, 169, 166, 163, 166, 169, 165, 165, 167, 173, 176, 178, 178, 179, + 176, 168, 162, 163, 168, 163, 170, 176, 175, 171, 165, 155, 146, 128, 138, 139, + 138, 142, 141, 139, 144, 145, 138, 135, 139, 140, 135, 131, 126, 123, 110, 53, + 255, 255, 255, 255, 255, 255, 143, 148, 147, 162, 148, 139, 150, 175, 146, 182, + 183, 180, 174, 169, 172, 173, 159, 141, 156, 152, 138, 174, 204, 202, 203, 178, + 167, 161, 150, 137, 137, 141, 144, 138, 135, 136, 138, 140, 146, 150, 154, 158, + 157, 160, 163, 162, 158, 156, 159, 160, 168, 169, 173, 173, 174, 176, 181, 183, + 185, 184, 183, 181, 181, 181, 183, 183, 179, 186, 189, 185, 183, 183, 179, 172, + 165, 157, 155, 156, 163, 162, 166, 167, 166, 166, 171, 172, 176, 175, 178, 176, + 177, 176, 176, 175, 168, 161, 163, 170, 166, 164, 167, 175, 174, 164, 155, 152, + 135, 123, 139, 141, 138, 148, 148, 153, 151, 147, 145, 144, 144, 139, 131, 121, + 112, 103, 57, 255, 255, 255, 255, 255, 255, 142, 146, 150, 152, 157, 156, 148, + 178, 162, 160, 171, 173, 170, 167, 174, 185, 185, 176, 150, 148, 137, 168, 195, + 197, 203, 188, 169, 161, 150, 137, 137, 140, 142, 137, 135, 136, 138, 140, 146, + 149, 153, 155, 153, 157, 161, 161, 159, 158, 160, 162, 167, 169, 172, 173, 174, + 176, 180, 183, 186, 184, 184, 183, 184, 184, 185, 185, 183, 189, 191, 187, 185, + 185, 181, 177, 175, 167, 161, 161, 163, 163, 163, 165, 167, 170, 174, 178, 181, + 181, 181, 181, 184, 180, 179, 174, 168, 162, 166, 172, 169, 166, 170, 175, 176, + 166, 159, 156, 143, 129, 142, 140, 137, 147, 148, 153, 153, 151, 149, 147, 147, + 142, 134, 123, 115, 105, 122, 255, 255, 255, 255, 255, 255, 255, 145, 154, 142, + 162, 165, 138, 171, 176, 152, 172, 176, 175, 172, 178, 192, 198, 195, 171, 169, + 161, 177, 189, 189, 196, 188, 171, 161, 150, 139, 138, 139, 140, 136, 134, 136, + 138, 141, 146, 149, 152, 153, 148, 152, 157, 159, 160, 160, 162, 162, 167, 168, + 172, 173, 174, 176, 180, 182, 185, 185, 187, 188, 188, 189, 189, 189, 191, 194, + 193, 190, 188, 187, 184, 180, 180, 172, 166, 166, 167, 165, 164, 165, 170, 173, + 179, 184, 187, 188, 186, 184, 190, 184, 181, 175, 170, 163, 169, 175, 171, 168, + 173, 176, 178, 169, 164, 160, 150, 132, 143, 142, 139, 146, 147, 154, 155, 152, + 152, 152, 152, 147, 138, 127, 115, 103, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 153, 141, 156, 157, 128, 137, 161, 169, 173, 178, 176, 171, 177, 189, 193, + 188, 189, 189, 185, 187, 186, 182, 184, 182, 172, 161, 150, 140, 139, 138, 139, + 135, 134, 135, 138, 141, 145, 147, 150, 151, 147, 150, 155, 158, 160, 160, 161, + 161, 166, 168, 172, 173, 174, 176, 179, 182, 184, 186, 188, 190, 191, 192, 191, + 191, 192, 191, 188, 185, 183, 181, 177, 174, 177, 171, 166, 167, 170, 169, 168, + 170, 169, 174, 180, 187, 190, 190, 189, 187, 187, 183, 180, 177, 172, 167, 169, + 175, 169, 169, 171, 175, 176, 172, 167, 163, 151, 132, 144, 146, 143, 151, 149, + 155, 155, 154, 153, 153, 153, 147, 138, 127, 110, 95, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 148, 150, 149, 128, 91, 114, 170, 172, 175, 168, 162, + 169, 183, 190, 185, 181, 183, 189, 186, 182, 182, 179, 180, 172, 160, 149, 142, + 141, 138, 137, 135, 134, 135, 138, 141, 145, 146, 148, 148, 148, 149, 152, 155, + 158, 159, 160, 159, 167, 169, 173, 175, 176, 177, 179, 181, 184, 185, 188, 190, + 192, 192, 192, 192, 190, 186, 182, 181, 179, 175, 171, 169, 178, 173, 169, 172, + 175, 174, 173, 175, 171, 176, 182, 188, 192, 192, 191, 187, 180, 178, 177, 177, + 174, 168, 167, 170, 165, 167, 169, 170, 172, 171, 167, 163, 148, 129, 144, 151, + 151, 155, 151, 158, 157, 153, 152, 153, 152, 147, 137, 126, 111, 91, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 148, 138, 55, 59, 133, 168, + 176, 172, 165, 169, 182, 191, 190, 180, 181, 193, 185, 181, 186, 176, 178, 171, + 158, 148, 143, 142, 137, 137, 137, 134, 135, 138, 141, 144, 145, 146, 146, 148, + 148, 149, 151, 155, 157, 160, 159, 168, 170, 176, 177, 178, 178, 179, 181, 184, + 185, 187, 189, 190, 191, 191, 191, 196, 190, 188, 190, 191, 186, 180, 179, 185, + 179, 175, 176, 178, 175, 173, 173, 173, 176, 182, 187, 190, 191, 190, 188, 179, + 175, 175, 177, 174, 168, 164, 166, 162, 165, 166, 166, 168, 171, 168, 163, 147, + 128, 143, 155, 156, 160, 154, 160, 157, 155, 151, 150, 150, 146, 137, 127, 113, + 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 151, 141, 41, + 30, 80, 127, 152, 169, 173, 174, 182, 188, 188, 190, 186, 198, 186, 185, 194, + 178, 179, 170, 156, 147, 144, 144, 138, 137, 138, 133, 135, 138, 141, 144, 144, + 145, 144, 145, 143, 145, 147, 154, 158, 163, 162, 169, 172, 178, 179, 179, 179, + 182, 181, 185, 185, 185, 186, 187, 188, 189, 190, 198, 192, 192, 199, 203, 199, + 193, 192, 191, 186, 181, 182, 182, 178, 175, 174, 175, 178, 182, 186, 188, 189, + 189, 189, 184, 179, 176, 176, 173, 166, 163, 164, 162, 165, 166, 165, 167, 172, + 170, 164, 151, 129, 143, 155, 157, 161, 156, 164, 160, 156, 152, 151, 148, 145, + 139, 130, 112, 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 148, 137, 40, 25, 41, 54, 100, 146, 167, 174, 178, 183, 184, 189, 182, 194, + 181, 184, 199, 183, 184, 168, 155, 145, 144, 142, 138, 136, 139, 133, 135, 138, + 141, 144, 144, 144, 143, 143, 141, 142, 145, 153, 159, 163, 166, 170, 172, 178, + 180, 180, 180, 181, 182, 186, 185, 184, 184, 184, 186, 188, 189, 189, 184, 186, + 196, 203, 199, 196, 194, 193, 186, 181, 183, 184, 180, 179, 179, 178, 179, 182, + 185, 188, 189, 189, 189, 190, 183, 177, 174, 170, 164, 161, 162, 162, 166, 166, + 164, 167, 172, 172, 165, 158, 131, 143, 153, 155, 159, 155, 165, 162, 158, 153, + 151, 150, 145, 141, 132, 106, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 217, 119, 23, 28, 33, 39, 62, 90, 142, 160, 181, 179, 187, + 193, 196, 195, 192, 191, 191, 185, 177, 164, 150, 142, 143, 141, 136, 135, 140, + 135, 135, 136, 138, 142, 143, 143, 142, 141, 143, 142, 144, 149, 156, 163, 167, + 171, 175, 180, 179, 177, 179, 183, 187, 180, 183, 184, 182, 183, 187, 187, 185, + 197, 189, 186, 193, 207, 215, 214, 207, 198, 184, 183, 188, 186, 184, 183, 173, + 173, 173, 177, 186, 196, 197, 191, 185, 188, 186, 182, 176, 167, 164, 163, 164, + 162, 163, 162, 162, 167, 171, 172, 167, 159, 138, 129, 148, 160, 155, 154, 160, + 168, 154, 154, 158, 151, 146, 140, 126, 108, 47, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 105, 37, 18, 29, 28, 47, 63, 104, 118, + 144, 151, 165, 173, 176, 176, 174, 176, 178, 176, 170, 160, 151, 143, 141, 142, + 137, 136, 136, 133, 133, 134, 137, 141, 142, 142, 140, 143, 144, 143, 144, 148, + 153, 160, 163, 170, 173, 177, 179, 177, 176, 180, 183, 183, 186, 187, 185, 185, + 189, 190, 187, 197, 190, 184, 186, 198, 210, 217, 219, 202, 185, 181, 183, 181, + 181, 182, 175, 178, 175, 173, 175, 182, 187, 188, 188, 185, 183, 179, 172, 164, + 160, 160, 161, 159, 162, 163, 163, 165, 171, 172, 170, 161, 141, 132, 147, 160, + 158, 156, 160, 172, 159, 159, 163, 155, 147, 141, 125, 106, 44, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 46, 19, 20, 32, 48, + 60, 92, 98, 122, 133, 153, 145, 147, 145, 142, 142, 143, 141, 135, 150, 151, + 147, 141, 141, 140, 138, 132, 132, 132, 134, 136, 140, 141, 142, 140, 144, 143, + 143, 144, 147, 151, 156, 159, 168, 172, 177, 177, 177, 175, 178, 180, 183, 186, + 188, 185, 186, 190, 190, 188, 191, 188, 185, 185, 190, 198, 207, 213, 197, 183, + 182, 185, 180, 179, 179, 172, 172, 171, 172, 172, 174, 178, 182, 184, 180, 178, + 174, 168, 161, 157, 157, 158, 156, 161, 163, 162, 164, 170, 173, 175, 164, 145, + 134, 147, 161, 162, 160, 163, 174, 161, 162, 162, 154, 146, 138, 122, 96, 31, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 39, 26, + 12, 37, 60, 78, 107, 109, 129, 134, 151, 170, 172, 173, 171, 169, 170, 164, + 157, 135, 146, 150, 141, 137, 138, 139, 133, 133, 133, 134, 137, 141, 142, 143, + 141, 142, 141, 143, 143, 146, 150, 155, 157, 165, 170, 176, 178, 178, 177, 179, + 181, 181, 185, 186, 183, 184, 187, 188, 185, 184, 184, 186, 189, 192, 192, 191, + 189, 186, 175, 178, 184, 178, 174, 172, 163, 162, 166, 174, 177, 176, 174, 172, + 171, 172, 171, 168, 164, 158, 156, 157, 158, 156, 163, 166, 164, 164, 169, 173, + 174, 169, 150, 135, 141, 154, 162, 164, 165, 169, 159, 161, 161, 153, 145, 136, + 116, 93, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 33, 28, 20, 35, 63, 83, 113, 112, 132, 136, 149, 153, 161, 168, 171, + 175, 175, 170, 161, 121, 138, 147, 139, 132, 133, 138, 138, 134, 134, 136, 139, + 143, 144, 145, 144, 140, 140, 140, 141, 146, 151, 155, 158, 164, 169, 176, 178, + 180, 179, 181, 183, 182, 185, 185, 182, 182, 186, 186, 183, 183, 182, 183, 188, + 194, 191, 183, 175, 184, 173, 172, 174, 167, 163, 163, 157, 167, 171, 177, 178, + 175, 169, 163, 159, 161, 159, 158, 155, 154, 154, 156, 159, 158, 164, 168, 165, + 163, 167, 171, 172, 173, 155, 136, 133, 143, 155, 163, 166, 164, 158, 161, 160, + 152, 147, 137, 115, 96, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 34, 24, 35, 40, 63, 78, 101, 103, 127, 135, 151, 156, + 164, 175, 179, 182, 181, 173, 164, 121, 131, 139, 135, 132, 131, 137, 139, 134, + 135, 136, 140, 144, 146, 147, 145, 140, 140, 140, 142, 147, 150, 154, 157, 165, + 170, 176, 178, 179, 179, 181, 184, 183, 186, 186, 183, 184, 187, 187, 184, 188, + 184, 180, 183, 188, 188, 185, 179, 186, 172, 165, 162, 154, 154, 162, 161, 180, + 178, 174, 170, 167, 163, 159, 156, 154, 154, 153, 152, 151, 152, 155, 158, 161, + 165, 168, 166, 165, 169, 171, 171, 174, 161, 140, 129, 133, 147, 158, 163, 163, + 158, 161, 161, 152, 147, 136, 113, 73, 36, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 200, 34, 28, 41, 50, 68, 77, 96, 95, 124, + 136, 151, 157, 165, 173, 175, 177, 175, 166, 157, 132, 128, 127, 131, 135, 133, + 135, 136, 133, 134, 135, 139, 144, 145, 146, 145, 141, 141, 143, 144, 147, 150, + 153, 154, 166, 169, 175, 174, 173, 173, 178, 181, 182, 185, 185, 182, 182, 185, + 183, 180, 186, 183, 180, 178, 179, 178, 178, 177, 172, 160, 158, 160, 157, 160, + 169, 169, 178, 172, 166, 162, 162, 163, 162, 160, 159, 159, 158, 156, 154, 155, + 158, 159, 161, 164, 164, 163, 167, 173, 173, 171, 172, 163, 146, 130, 129, 141, + 153, 158, 162, 159, 161, 159, 149, 144, 130, 105, 38, 106, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 32, 39, 36, 56, 74, 80, + 97, 96, 125, 134, 145, 152, 160, 168, 173, 177, 180, 175, 167, 144, 128, 119, + 128, 139, 137, 133, 132, 132, 132, 134, 138, 143, 144, 145, 144, 144, 144, 145, + 145, 148, 149, 151, 151, 169, 171, 175, 173, 170, 170, 175, 178, 180, 183, 182, + 179, 179, 180, 180, 177, 181, 182, 184, 180, 173, 166, 166, 166, 152, 146, 156, + 167, 167, 170, 178, 175, 165, 161, 157, 159, 166, 167, 168, 162, 167, 167, 166, + 162, 160, 160, 161, 164, 161, 162, 161, 162, 169, 176, 176, 171, 168, 166, 152, + 133, 128, 138, 151, 154, 160, 158, 160, 155, 144, 138, 124, 96, 24, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 38, 44, 29, + 52, 74, 89, 90, 115, 106, 134, 142, 151, 159, 165, 171, 178, 182, 177, 168, + 149, 120, 115, 132, 138, 131, 134, 136, 128, 131, 136, 139, 142, 143, 146, 148, + 142, 144, 145, 144, 145, 145, 149, 153, 170, 170, 173, 174, 175, 175, 174, 174, + 180, 178, 176, 178, 180, 182, 181, 177, 183, 177, 177, 174, 166, 152, 144, 142, + 180, 178, 177, 177, 177, 177, 176, 174, 186, 168, 153, 156, 168, 173, 174, 173, + 174, 173, 170, 167, 164, 162, 164, 166, 167, 159, 162, 165, 165, 174, 180, 173, + 173, 157, 149, 143, 127, 123, 140, 150, 158, 146, 152, 153, 141, 120, 127, 52, + 26, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, + 68, 40, 35, 55, 86, 78, 96, 93, 111, 123, 139, 152, 157, 164, 167, 172, + 177, 176, 171, 147, 118, 113, 129, 135, 129, 132, 133, 128, 131, 134, 137, 139, + 140, 143, 143, 144, 145, 147, 147, 147, 148, 152, 154, 168, 171, 175, 175, 174, + 173, 173, 175, 180, 180, 179, 177, 178, 179, 181, 181, 184, 175, 166, 160, 157, + 154, 159, 165, 171, 171, 172, 176, 179, 182, 182, 182, 176, 179, 169, 152, 155, + 173, 177, 165, 170, 174, 176, 170, 161, 163, 174, 185, 168, 157, 164, 178, 175, + 173, 179, 183, 176, 161, 156, 138, 131, 129, 145, 142, 155, 150, 153, 146, 134, + 127, 116, 53, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 144, 89, 37, 35, 69, 104, 90, 100, 90, 112, 128, 142, 152, 157, + 163, 163, 166, 172, 176, 175, 147, 119, 113, 128, 133, 129, 132, 132, 130, 131, + 134, 137, 139, 140, 142, 142, 142, 144, 148, 149, 150, 151, 155, 157, 163, 168, + 174, 174, 172, 171, 175, 180, 181, 182, 179, 178, 178, 178, 181, 182, 175, 164, + 155, 151, 153, 157, 170, 181, 175, 176, 175, 177, 179, 180, 179, 179, 177, 186, + 181, 163, 158, 169, 173, 166, 179, 186, 186, 183, 174, 168, 165, 167, 166, 160, + 162, 169, 174, 184, 181, 165, 179, 162, 163, 137, 137, 129, 146, 134, 155, 156, + 154, 141, 127, 130, 89, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 153, 80, 42, 36, 76, 109, 118, 96, 106, 99, 137, + 143, 150, 158, 164, 163, 165, 170, 174, 175, 149, 123, 116, 128, 134, 131, 135, + 133, 131, 132, 134, 138, 143, 144, 146, 145, 142, 144, 149, 150, 151, 152, 155, + 157, 157, 165, 173, 173, 172, 171, 177, 183, 183, 182, 179, 179, 179, 178, 174, + 172, 156, 152, 152, 154, 159, 162, 168, 174, 178, 176, 175, 175, 176, 176, 177, + 175, 179, 173, 173, 176, 167, 154, 152, 163, 165, 165, 163, 167, 174, 177, 173, + 169, 172, 182, 182, 177, 204, 252, 249, 202, 180, 160, 166, 142, 139, 120, 137, + 135, 158, 155, 150, 144, 127, 119, 58, 123, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 157, 60, 64, 49, 67, 106, 124, 104, + 109, 94, 129, 139, 150, 159, 167, 167, 169, 172, 174, 173, 149, 124, 117, 126, + 131, 131, 135, 132, 128, 128, 131, 137, 144, 147, 149, 148, 141, 144, 147, 148, + 150, 150, 152, 155, 159, 166, 173, 173, 170, 169, 174, 180, 184, 181, 177, 179, + 180, 177, 166, 158, 152, 151, 157, 163, 167, 165, 165, 167, 168, 170, 171, 173, + 177, 179, 181, 180, 172, 164, 167, 175, 170, 151, 142, 146, 162, 158, 152, 147, + 146, 150, 157, 161, 152, 165, 165, 153, 168, 213, 216, 175, 178, 160, 165, 152, + 137, 112, 131, 146, 154, 147, 143, 148, 127, 99, 36, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 51, 85, 75, 65, + 112, 117, 130, 106, 105, 115, 135, 149, 158, 166, 168, 171, 173, 174, 170, 148, + 123, 115, 122, 127, 129, 133, 128, 124, 124, 127, 134, 142, 147, 149, 147, 141, + 144, 147, 148, 149, 148, 149, 150, 163, 168, 173, 171, 168, 165, 167, 171, 182, + 180, 177, 178, 177, 172, 161, 152, 161, 160, 161, 166, 169, 165, 166, 169, 173, + 172, 171, 172, 176, 177, 176, 175, 166, 172, 174, 169, 168, 165, 153, 140, 158, + 170, 176, 165, 143, 128, 129, 135, 158, 159, 165, 164, 154, 161, 172, 170, 173, + 162, 160, 155, 126, 116, 131, 153, 146, 139, 138, 143, 120, 72, 33, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, + 89, 93, 79, 114, 117, 140, 122, 115, 115, 132, 150, 156, 162, 165, 172, 175, + 174, 167, 148, 124, 115, 121, 126, 129, 133, 128, 126, 125, 127, 133, 143, 147, + 148, 146, 143, 145, 148, 149, 150, 148, 148, 148, 163, 165, 167, 167, 166, 164, + 166, 168, 178, 180, 179, 177, 170, 165, 161, 160, 166, 164, 163, 167, 170, 168, + 170, 174, 182, 179, 176, 175, 175, 173, 170, 168, 171, 176, 177, 173, 171, 169, + 161, 153, 139, 155, 170, 172, 160, 148, 144, 145, 135, 131, 143, 159, 156, 156, + 172, 184, 161, 167, 151, 146, 105, 127, 135, 149, 142, 145, 142, 131, 104, 46, + 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 73, 82, 101, 94, 109, 124, 131, 146, 110, 120, 122, 152, 155, 158, + 160, 167, 172, 170, 163, 149, 125, 118, 123, 126, 131, 135, 129, 130, 129, 130, + 136, 144, 149, 147, 144, 144, 147, 150, 150, 150, 148, 148, 148, 158, 159, 162, + 164, 165, 167, 168, 170, 172, 179, 182, 175, 164, 157, 162, 171, 162, 161, 163, + 169, 173, 169, 170, 173, 178, 176, 175, 176, 177, 177, 176, 174, 175, 163, 164, + 175, 171, 153, 150, 164, 160, 154, 146, 145, 148, 152, 150, 145, 138, 133, 139, + 147, 151, 160, 162, 152, 146, 166, 142, 133, 88, 136, 137, 140, 141, 155, 146, + 118, 85, 29, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 76, 91, 114, 108, 96, 119, 148, 141, 129, 131, 130, + 138, 144, 151, 157, 161, 165, 164, 161, 140, 122, 119, 125, 126, 129, 135, 134, + 130, 132, 134, 139, 144, 147, 146, 145, 146, 146, 149, 148, 147, 148, 152, 154, + 157, 159, 162, 161, 159, 161, 166, 172, 179, 175, 180, 169, 151, 160, 167, 149, + 154, 170, 164, 165, 167, 169, 182, 174, 179, 183, 177, 191, 173, 177, 162, 167, + 175, 165, 162, 168, 170, 165, 160, 162, 154, 160, 158, 147, 134, 130, 135, 140, + 150, 125, 107, 118, 141, 155, 157, 153, 153, 131, 110, 106, 120, 135, 144, 145, + 155, 142, 137, 102, 48, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 204, 91, 109, 118, 102, 114, 144, 148, + 137, 136, 143, 129, 136, 146, 157, 161, 162, 161, 162, 143, 123, 117, 122, 122, + 127, 136, 136, 131, 132, 133, 138, 143, 146, 146, 145, 147, 148, 150, 149, 148, + 148, 151, 154, 156, 158, 162, 161, 159, 159, 164, 169, 176, 174, 178, 167, 150, + 160, 167, 150, 149, 158, 154, 164, 169, 167, 172, 163, 177, 174, 181, 174, 190, + 173, 186, 176, 161, 158, 157, 165, 166, 160, 154, 153, 154, 157, 154, 143, 128, + 121, 123, 125, 127, 118, 119, 133, 149, 150, 144, 136, 109, 109, 111, 111, 120, + 133, 139, 135, 166, 150, 116, 72, 41, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 109, 125, 113, + 110, 131, 150, 140, 135, 149, 128, 131, 141, 157, 162, 159, 160, 165, 148, 124, + 115, 121, 121, 126, 135, 137, 132, 132, 134, 137, 141, 145, 146, 146, 149, 150, + 152, 150, 149, 148, 151, 153, 154, 157, 162, 161, 158, 158, 162, 165, 171, 173, + 175, 164, 151, 160, 166, 152, 163, 155, 141, 156, 163, 162, 178, 181, 167, 191, + 188, 195, 183, 170, 184, 179, 182, 179, 178, 178, 173, 164, 157, 155, 154, 152, + 148, 141, 131, 123, 121, 119, 112, 113, 120, 129, 130, 123, 116, 111, 105, 107, + 109, 108, 120, 138, 146, 143, 166, 140, 82, 42, 110, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, + 111, 126, 131, 123, 124, 144, 146, 138, 148, 140, 132, 137, 151, 161, 157, 157, + 162, 150, 124, 115, 123, 123, 126, 133, 135, 133, 132, 133, 136, 140, 144, 146, + 146, 150, 151, 153, 152, 150, 149, 151, 152, 152, 156, 161, 161, 158, 156, 159, + 161, 167, 173, 172, 160, 152, 161, 164, 155, 153, 139, 121, 136, 140, 127, 145, + 161, 187, 178, 165, 158, 197, 177, 209, 178, 184, 184, 183, 180, 175, 170, 167, + 168, 154, 150, 146, 146, 142, 135, 131, 131, 130, 130, 131, 128, 123, 122, 125, + 128, 126, 115, 111, 121, 136, 149, 152, 149, 159, 111, 56, 106, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 97, 102, 115, 143, 141, 125, 136, 150, 146, 147, 152, 136, 130, 140, + 155, 160, 161, 163, 152, 125, 116, 127, 130, 129, 130, 131, 134, 133, 132, 135, + 140, 145, 145, 146, 149, 151, 154, 153, 150, 149, 150, 151, 153, 156, 161, 160, + 157, 155, 157, 159, 164, 174, 171, 157, 154, 162, 162, 157, 139, 133, 129, 150, + 144, 116, 124, 137, 115, 134, 131, 163, 163, 166, 173, 169, 190, 193, 194, 190, + 185, 178, 171, 167, 158, 153, 151, 154, 154, 148, 145, 145, 144, 145, 143, 138, + 132, 132, 137, 138, 123, 113, 124, 149, 159, 151, 147, 154, 140, 75, 43, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 207, 94, 102, 137, 146, 125, 125, 143, 151, 146, 156, + 141, 129, 131, 147, 160, 166, 165, 155, 125, 116, 129, 132, 129, 128, 129, 132, + 132, 132, 136, 141, 145, 145, 145, 147, 149, 153, 152, 150, 149, 150, 151, 155, + 157, 161, 159, 155, 154, 156, 159, 162, 177, 170, 155, 157, 163, 160, 159, 151, + 147, 144, 166, 162, 140, 160, 179, 138, 132, 140, 137, 135, 128, 146, 170, 163, + 170, 180, 183, 184, 183, 177, 169, 165, 158, 157, 161, 160, 152, 150, 153, 152, + 156, 157, 148, 136, 129, 124, 119, 124, 126, 143, 161, 159, 144, 149, 165, 96, + 39, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 107, 126, 142, 134, 123, 134, + 149, 146, 153, 148, 136, 127, 136, 156, 166, 164, 159, 127, 116, 129, 131, 127, + 130, 132, 130, 131, 134, 138, 142, 145, 145, 144, 144, 147, 151, 152, 150, 149, + 150, 151, 157, 159, 161, 158, 154, 153, 157, 160, 162, 180, 171, 154, 159, 163, + 158, 161, 160, 150, 136, 152, 155, 150, 183, 207, 179, 117, 205, 160, 255, 165, + 154, 107, 126, 130, 134, 139, 151, 164, 171, 167, 165, 158, 156, 161, 159, 150, + 149, 156, 160, 166, 160, 144, 127, 122, 123, 124, 145, 151, 157, 157, 151, 146, + 142, 140, 53, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 138, 129, 126, 144, + 148, 131, 134, 151, 153, 153, 155, 146, 128, 129, 148, 160, 158, 165, 128, 115, + 127, 130, 126, 130, 134, 129, 131, 134, 139, 143, 145, 144, 143, 142, 145, 150, + 151, 150, 149, 150, 151, 159, 160, 161, 158, 153, 153, 157, 161, 161, 182, 171, + 154, 160, 164, 157, 161, 170, 159, 142, 155, 158, 153, 177, 193, 174, 142, 173, + 186, 170, 175, 140, 189, 189, 176, 152, 130, 126, 133, 136, 133, 158, 152, 152, + 158, 155, 148, 150, 160, 139, 142, 131, 108, 93, 104, 127, 143, 157, 164, 164, + 156, 158, 155, 121, 77, 38, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, + 133, 125, 133, 148, 145, 127, 132, 153, 163, 166, 156, 135, 132, 148, 162, 163, + 163, 148, 125, 118, 130, 133, 129, 136, 120, 131, 138, 141, 145, 147, 143, 135, + 150, 151, 154, 152, 150, 147, 148, 148, 159, 160, 162, 160, 158, 158, 160, 162, + 170, 173, 170, 160, 152, 156, 168, 174, 172, 167, 157, 148, 146, 157, 177, 189, + 162, 156, 167, 177, 193, 185, 164, 183, 187, 197, 148, 161, 173, 118, 109, 123, + 124, 133, 136, 132, 143, 139, 117, 127, 114, 116, 91, 106, 102, 132, 147, 147, + 150, 166, 159, 154, 158, 138, 80, 47, 116, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 140, 137, 126, 128, 145, 147, 124, 124, 152, 160, 165, 162, 144, 135, + 141, 156, 164, 162, 153, 132, 122, 130, 135, 133, 135, 122, 131, 137, 140, 143, + 146, 143, 136, 145, 146, 150, 150, 148, 147, 148, 149, 156, 157, 159, 158, 157, + 157, 160, 162, 169, 173, 171, 161, 154, 157, 168, 173, 173, 169, 160, 150, 144, + 147, 158, 165, 133, 123, 168, 199, 188, 174, 174, 194, 184, 223, 186, 171, 179, + 170, 177, 161, 123, 112, 103, 117, 125, 120, 139, 174, 169, 97, 98, 125, 119, + 132, 134, 146, 159, 154, 157, 159, 131, 122, 36, 46, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 140, 135, 129, 139, 149, 127, 120, 148, 154, 161, + 166, 156, 141, 137, 149, 162, 162, 161, 141, 124, 131, 137, 136, 136, 126, 132, + 138, 140, 141, 143, 142, 138, 139, 142, 146, 147, 147, 147, 149, 150, 153, 154, + 157, 157, 156, 156, 160, 162, 169, 172, 171, 162, 156, 159, 168, 171, 173, 172, + 166, 157, 147, 143, 146, 146, 142, 99, 144, 193, 186, 181, 180, 178, 178, 189, + 183, 209, 208, 177, 184, 182, 176, 227, 224, 193, 158, 159, 180, 151, 162, 66, + 107, 131, 121, 127, 130, 149, 162, 159, 157, 136, 146, 41, 55, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 139, 145, 134, 133, 148, 138, 128, + 144, 153, 158, 164, 163, 149, 140, 146, 157, 163, 167, 149, 125, 127, 137, 138, + 138, 131, 133, 137, 139, 139, 140, 140, 139, 138, 141, 145, 146, 146, 146, 148, + 149, 151, 152, 156, 156, 156, 157, 161, 163, 169, 172, 171, 163, 158, 161, 168, + 170, 173, 172, 170, 164, 158, 151, 148, 145, 139, 123, 163, 181, 151, 143, 159, + 181, 167, 187, 197, 211, 204, 199, 203, 167, 158, 190, 184, 190, 168, 157, 190, + 157, 105, 71, 123, 122, 117, 120, 139, 153, 155, 178, 136, 134, 94, 32, 117, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 150, 141, 125, + 137, 145, 140, 135, 152, 154, 159, 163, 158, 148, 147, 150, 162, 171, 156, 130, + 126, 134, 137, 141, 135, 135, 136, 139, 140, 140, 140, 141, 141, 143, 146, 146, + 145, 144, 146, 147, 151, 153, 156, 156, 156, 158, 162, 164, 169, 171, 170, 163, + 159, 162, 168, 170, 174, 174, 175, 170, 166, 160, 156, 153, 164, 144, 136, 133, + 151, 159, 139, 139, 176, 166, 173, 194, 190, 193, 204, 182, 186, 194, 173, 187, + 180, 166, 166, 101, 93, 115, 132, 113, 122, 113, 140, 155, 161, 150, 151, 92, + 33, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, + 145, 143, 126, 124, 144, 146, 129, 150, 153, 157, 159, 161, 159, 153, 149, 159, + 170, 161, 141, 132, 132, 134, 143, 137, 135, 135, 139, 140, 137, 137, 140, 141, + 143, 146, 146, 144, 142, 143, 144, 151, 153, 156, 156, 156, 157, 161, 164, 171, + 172, 169, 162, 159, 163, 169, 170, 177, 176, 176, 173, 169, 164, 159, 157, 139, + 155, 158, 136, 138, 140, 125, 142, 163, 122, 133, 180, 187, 169, 172, 181, 157, + 195, 189, 174, 157, 151, 138, 74, 116, 137, 116, 105, 127, 118, 140, 163, 165, + 134, 132, 54, 28, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 138, 142, 137, 120, 135, 146, 128, 145, 153, 158, 158, 161, 166, + 161, 150, 153, 166, 167, 156, 145, 133, 132, 145, 138, 135, 136, 141, 140, 136, + 135, 138, 139, 141, 144, 144, 142, 140, 141, 142, 150, 152, 155, 155, 154, 155, + 159, 161, 173, 173, 168, 160, 158, 163, 170, 171, 177, 177, 179, 177, 174, 168, + 162, 159, 160, 147, 152, 151, 155, 159, 140, 130, 133, 139, 154, 152, 159, 174, + 163, 136, 172, 162, 152, 145, 122, 87, 91, 119, 122, 123, 111, 104, 113, 136, + 141, 164, 152, 128, 48, 61, 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 132, 145, 150, 123, 127, 147, 131, 142, 154, 161, + 157, 161, 170, 168, 154, 149, 164, 171, 168, 156, 135, 130, 144, 141, 135, 137, + 142, 142, 135, 134, 137, 136, 138, 141, 141, 140, 139, 140, 141, 150, 153, 154, + 153, 154, 154, 157, 160, 176, 174, 168, 159, 159, 165, 171, 173, 176, 177, 180, + 181, 179, 173, 165, 162, 168, 144, 171, 179, 149, 149, 151, 145, 149, 138, 140, + 138, 137, 133, 124, 124, 121, 123, 120, 111, 126, 125, 107, 118, 115, 111, 132, + 112, 93, 149, 141, 150, 145, 57, 29, 15, 109, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 143, 147, 122, 113, 151, 145, + 139, 146, 154, 157, 161, 167, 171, 169, 152, 158, 168, 169, 161, 148, 138, 133, + 145, 142, 141, 138, 138, 136, 133, 130, 135, 136, 139, 140, 140, 138, 138, 136, + 151, 152, 152, 153, 155, 158, 161, 165, 171, 171, 167, 159, 158, 164, 170, 174, + 173, 175, 178, 180, 180, 176, 168, 163, 152, 152, 156, 160, 163, 161, 156, 150, + 146, 148, 149, 151, 151, 148, 142, 137, 145, 143, 143, 141, 131, 122, 121, 124, + 116, 133, 114, 94, 126, 125, 144, 144, 112, 31, 6, 25, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 148, 130, + 118, 139, 146, 140, 146, 153, 155, 160, 168, 173, 172, 155, 155, 160, 166, 167, + 160, 146, 135, 136, 139, 140, 140, 135, 132, 132, 133, 133, 134, 140, 143, 144, + 142, 143, 142, 150, 151, 154, 154, 154, 156, 162, 166, 174, 176, 172, 165, 163, + 168, 174, 176, 173, 173, 174, 177, 178, 178, 175, 172, 161, 156, 151, 151, 154, + 157, 159, 158, 149, 151, 154, 157, 156, 154, 148, 144, 150, 151, 152, 150, 143, + 131, 128, 128, 128, 116, 105, 107, 131, 127, 141, 111, 45, 13, 13, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 222, 148, 138, 125, 121, 145, 140, 146, 152, 155, 159, 168, 173, 173, 163, 156, + 152, 161, 172, 172, 157, 142, 132, 137, 141, 141, 137, 134, 135, 136, 127, 133, + 141, 145, 144, 141, 141, 141, 147, 151, 154, 153, 152, 153, 159, 167, 174, 177, + 177, 171, 168, 171, 174, 174, 176, 175, 173, 174, 177, 179, 180, 179, 172, 164, + 157, 156, 157, 158, 158, 157, 148, 149, 151, 154, 154, 150, 144, 142, 150, 152, + 154, 155, 148, 137, 132, 131, 129, 106, 107, 113, 130, 135, 136, 65, 25, 31, + 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 148, 148, 135, 113, 145, 144, 149, 152, 154, 157, 166, 172, + 172, 170, 159, 150, 156, 170, 175, 166, 155, 140, 142, 143, 144, 143, 140, 138, + 136, 124, 130, 138, 141, 139, 135, 134, 134, 144, 149, 154, 153, 150, 151, 158, + 166, 170, 174, 176, 171, 168, 170, 170, 169, 178, 175, 173, 173, 175, 177, 178, + 178, 174, 172, 170, 169, 169, 163, 154, 148, 144, 146, 147, 148, 149, 145, 139, + 135, 147, 146, 149, 150, 143, 132, 128, 126, 117, 118, 118, 109, 125, 127, 112, + 31, 34, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 220, 154, 143, 116, 143, 147, 152, 154, 154, + 156, 163, 167, 168, 175, 165, 156, 157, 162, 169, 171, 168, 153, 147, 143, 144, + 148, 147, 139, 130, 121, 127, 134, 137, 136, 133, 133, 133, 141, 147, 152, 152, + 148, 149, 158, 165, 167, 172, 175, 171, 168, 169, 170, 168, 173, 172, 172, 174, + 177, 178, 177, 175, 174, 173, 174, 177, 175, 169, 158, 150, 146, 146, 147, 147, + 146, 143, 137, 135, 144, 141, 139, 138, 131, 122, 119, 119, 113, 129, 122, 107, + 122, 88, 65, 30, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 146, 128, 134, 150, + 154, 157, 155, 156, 162, 165, 163, 174, 168, 162, 158, 157, 163, 170, 176, 162, + 152, 142, 143, 149, 149, 139, 128, 124, 124, 128, 132, 136, 138, 141, 140, 140, + 145, 149, 149, 148, 150, 157, 163, 167, 173, 176, 173, 171, 172, 174, 171, 166, + 167, 170, 174, 178, 180, 181, 178, 176, 170, 170, 170, 172, 171, 168, 164, 152, + 152, 152, 150, 150, 146, 142, 137, 146, 141, 139, 138, 134, 126, 123, 123, 121, + 124, 117, 117, 116, 40, 23, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, + 143, 122, 147, 152, 157, 156, 157, 163, 165, 162, 169, 168, 164, 161, 159, 163, + 169, 176, 169, 158, 148, 146, 151, 151, 144, 134, 129, 127, 125, 129, 137, 143, + 144, 144, 141, 143, 145, 146, 148, 151, 156, 161, 167, 172, 174, 171, 172, 175, + 177, 175, 170, 169, 173, 176, 180, 182, 183, 179, 176, 169, 164, 163, 167, 169, + 167, 167, 158, 157, 155, 155, 154, 150, 146, 142, 147, 144, 143, 144, 143, 136, + 132, 129, 122, 116, 119, 118, 93, 16, 15, 106, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 153, 113, 144, 150, 157, 156, 160, 163, 166, 163, 164, 165, 164, + 163, 162, 165, 171, 173, 171, 164, 154, 151, 153, 153, 149, 144, 136, 129, 123, + 126, 134, 141, 142, 140, 142, 142, 143, 145, 149, 153, 156, 158, 163, 170, 172, + 170, 169, 174, 176, 176, 176, 175, 175, 176, 178, 180, 181, 177, 175, 169, 165, + 165, 167, 165, 161, 157, 160, 159, 158, 156, 155, 151, 146, 142, 139, 137, 139, + 144, 145, 136, 131, 127, 117, 112, 128, 110, 64, 16, 104, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 136, 149, 161, 158, 157, 160, 165, 165, + 164, 171, 168, 167, 174, 170, 165, 169, 169, 166, 162, 159, 156, 154, 151, 149, + 144, 139, 128, 117, 115, 126, 137, 142, 142, 136, 135, 141, 147, 150, 152, 155, + 159, 164, 167, 168, 166, 169, 175, 184, 181, 177, 174, 171, 174, 175, 176, 174, + 177, 164, 157, 160, 165, 163, 159, 155, 156, 154, 152, 150, 150, 147, 144, 141, + 137, 143, 150, 149, 143, 134, 126, 117, 116, 112, 122, 102, 7, 23, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 134, 146, 158, 157, 157, + 159, 164, 164, 163, 170, 167, 166, 173, 172, 168, 173, 173, 168, 165, 163, 160, + 157, 153, 150, 148, 145, 136, 125, 120, 124, 127, 127, 143, 139, 136, 137, 138, + 141, 149, 159, 155, 159, 165, 166, 167, 170, 174, 178, 180, 178, 174, 174, 174, + 177, 176, 173, 177, 165, 162, 164, 165, 162, 158, 156, 151, 149, 148, 148, 148, + 147, 143, 141, 142, 146, 149, 147, 141, 132, 124, 118, 124, 111, 119, 58, 22, + 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, + 155, 156, 158, 160, 164, 163, 166, 171, 168, 166, 172, 173, 171, 177, 173, 172, + 168, 167, 166, 162, 157, 153, 154, 154, 147, 136, 128, 124, 118, 112, 134, 134, + 134, 135, 132, 132, 142, 154, 151, 153, 160, 164, 168, 169, 171, 173, 177, 176, + 176, 176, 176, 177, 175, 172, 176, 169, 167, 168, 166, 161, 160, 160, 149, 147, + 146, 146, 148, 147, 144, 142, 149, 150, 148, 145, 139, 130, 125, 120, 125, 115, + 90, 16, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 220, 156, 160, 162, 164, 164, 169, 174, 168, 166, 171, 172, 172, + 180, 173, 173, 170, 171, 169, 165, 158, 153, 158, 160, 155, 145, 136, 129, 119, + 110, 118, 122, 129, 135, 134, 132, 136, 143, 148, 147, 152, 157, 163, 168, 170, + 170, 174, 175, 175, 178, 178, 178, 175, 173, 178, 172, 172, 171, 170, 163, 161, + 162, 152, 150, 149, 149, 150, 149, 146, 144, 152, 150, 145, 141, 135, 130, 127, + 122, 116, 123, 43, 7, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 222, 162, 164, 165, 167, 173, 177, 170, 166, + 173, 174, 171, 179, 172, 172, 173, 173, 170, 166, 159, 154, 159, 161, 159, 152, + 143, 138, 130, 122, 113, 114, 118, 125, 128, 129, 132, 138, 143, 142, 143, 147, + 154, 162, 166, 169, 171, 172, 174, 177, 180, 179, 176, 174, 180, 175, 175, 175, + 173, 167, 163, 165, 160, 158, 156, 156, 155, 153, 150, 147, 150, 147, 143, 137, + 134, 130, 127, 124, 114, 116, 20, 10, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 165, 168, 174, + 178, 172, 168, 174, 174, 171, 178, 172, 172, 173, 173, 170, 166, 160, 155, 157, + 160, 160, 155, 149, 146, 140, 133, 124, 118, 112, 113, 115, 120, 130, 138, 136, + 137, 139, 142, 148, 155, 163, 167, 168, 169, 171, 175, 178, 181, 179, 177, 181, + 176, 174, 177, 176, 171, 166, 166, 164, 163, 161, 160, 159, 157, 154, 151, 149, + 146, 141, 137, 136, 132, 127, 124, 117, 87, 27, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 226, 172, 177, 172, 169, 176, 176, 173, 180, 175, 174, 173, 173, 172, 169, + 162, 157, 157, 161, 161, 158, 155, 152, 144, 137, 135, 129, 119, 113, 107, 109, + 119, 133, 126, 130, 136, 142, 144, 150, 157, 164, 166, 167, 169, 173, 177, 179, + 179, 180, 182, 176, 174, 178, 181, 176, 170, 167, 163, 162, 162, 162, 162, 161, + 158, 156, 151, 148, 144, 141, 139, 134, 128, 121, 110, 47, 104, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 227, 173, 169, 170, 178, 178, 176, 184, 179, 176, 175, + 175, 174, 170, 165, 162, 156, 161, 162, 160, 157, 153, 145, 137, 138, 137, 133, + 122, 108, 102, 112, 125, 121, 127, 136, 141, 144, 147, 153, 160, 162, 163, 166, + 169, 174, 177, 179, 180, 181, 174, 171, 177, 182, 179, 172, 167, 160, 158, 160, + 161, 162, 160, 158, 155, 153, 150, 147, 144, 139, 134, 124, 115, 95, 16, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 172, 177, 179, 180, 181, + 179, 178, 177, 176, 175, 171, 168, 163, 163, 162, 162, 157, 155, 156, 151, 144, + 149, 147, 141, 134, 126, 117, 111, 107, 114, 122, 129, 129, 132, 140, 149, 154, + 153, 156, 162, 165, 169, 169, 169, 169, 179, 171, 168, 173, 179, 177, 171, 167, + 161, 159, 157, 156, 158, 157, 157, 156, 152, 151, 148, 141, 131, 119, 111, 106, + 30, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 177, + 179, 181, 181, 180, 179, 177, 177, 176, 174, 168, 164, 164, 163, 163, 158, 158, + 157, 154, 148, 148, 145, 142, 134, 129, 123, 117, 113, 100, 112, 124, 130, 133, + 139, 142, 142, 150, 151, 153, 156, 159, 161, 164, 164, 169, 162, 160, 165, 170, + 168, 163, 160, 157, 155, 152, 151, 153, 155, 157, 157, 157, 148, 143, 140, 130, + 115, 108, 108, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 231, 182, 181, 180, 179, 178, 177, 175, 170, 166, 165, 164, + 164, 160, 159, 159, 156, 149, 147, 144, 142, 136, 132, 128, 123, 121, 96, 106, + 117, 121, 126, 132, 137, 137, 150, 149, 149, 150, 153, 156, 161, 165, 166, 159, + 157, 163, 167, 166, 161, 158, 152, 150, 147, 147, 151, 154, 156, 157, 151, 152, + 143, 127, 119, 114, 102, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 231, 181, 180, 179, 180, 179, 176, 171, + 167, 164, 163, 164, 159, 159, 159, 156, 150, 148, 146, 143, 138, 135, 132, 128, + 127, 113, 113, 110, 105, 107, 118, 131, 137, 143, 143, 144, 145, 149, 152, 156, + 159, 163, 157, 155, 160, 164, 161, 158, 157, 148, 147, 147, 148, 151, 152, 152, + 151, 141, 153, 143, 117, 108, 113, 141, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 179, 180, + 179, 177, 171, 168, 163, 162, 162, 158, 158, 158, 156, 149, 151, 149, 146, 140, + 137, 134, 131, 130, 128, 122, 110, 97, 95, 106, 120, 126, 131, 132, 135, 138, + 141, 144, 146, 147, 153, 150, 148, 152, 154, 152, 149, 150, 145, 146, 148, 149, + 151, 149, 146, 140, 140, 141, 134, 122, 114, 150, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 230, 178, 176, 173, 168, 162, 161, 162, 158, 158, 158, 156, 150, 153, + 150, 147, 141, 138, 136, 133, 132, 131, 126, 116, 104, 100, 103, 109, 107, 120, + 123, 126, 131, 134, 138, 140, 141, 144, 142, 142, 147, 148, 144, 143, 143, 141, + 142, 143, 146, 145, 142, 137, 133, 143, 121, 115, 128, 114, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 229, 173, 168, 163, 162, 163, 159, 159, 160, + 158, 151, 152, 150, 146, 141, 139, 137, 136, 135, 131, 129, 128, 120, 115, 113, + 108, 101, 110, 109, 112, 115, 119, 123, 129, 132, 136, 134, 134, 139, 139, 136, + 134, 135, 135, 134, 133, 133, 133, 133, 130, 126, 132, 113, 106, 104, 138, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 164, 164, 164, + 161, 161, 161, 159, 153, 151, 148, 145, 140, 139, 139, 138, 139, 134, 134, 135, + 129, 126, 122, 114, 106, 95, 93, 92, 94, 99, 106, 114, 119, 123, 121, 123, + 127, 126, 123, 121, 124, 130, 127, 124, 121, 122, 124, 124, 122, 113, 116, 106, + 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 223, 162, 161, 159, 156, 155, 153, 148, 149, 150, 145, 142, 137, 134, 134, + 135, 136, 135, 128, 124, 121, 115, 107, 104, 109, 85, 71, 93, 74, 98, 101, + 102, 104, 109, 112, 114, 114, 113, 112, 109, 108, 109, 114, 118, 117, 110, 102, + 107, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 161, 160, 157, 156, 154, 149, 149, 150, 145, 141, + 137, 134, 134, 138, 140, 138, 133, 128, 126, 123, 116, 115, 117, 97, 88, 85, + 57, 61, 51, 62, 63, 67, 69, 71, 73, 73, 75, 83, 82, 83, 85, 88, + 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 156, 154, 150, 150, + 150, 144, 141, 137, 135, 135, 138, 139, 138, 131, 128, 127, 126, 121, 116, 113, + 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 220, 150, 149, 143, 140, 137, 136, 137, 138, 139, 138, 132, 130, 131, 130, + 126, 122, 107, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 142, 140, 138, 138, 141, 146, 147, 145, 138, + 137, 141, 141, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 145, 146, + 147, 146, 142, 142, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 216, 135, 132, 133, 129, 124, 121, 123, 130, 120, 109, 106, 111, 117, + 117, 116, 146, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, + 137, 137, 136, 132, 128, 118, 114, 115, 122, 120, 109, 105, 109, 108, 111, 107, + 94, 85, 96, 125, 151, 132, 121, 117, 128, 143, 148, 147, 144, 133, 175, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 134, + 132, 130, 128, 126, 118, 99, 73, 54, 47, 49, 45, 38, 40, 50, 57, 58, + 64, 62, 50, 35, 30, 53, 98, 134, 137, 112, 93, 64, 91, 124, 153, 133, + 138, 141, 148, 154, 152, 146, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 203, 160, 133, + 133, 126, 116, 119, 112, 103, 95, 82, 64, 41, 26, 33, 35, 30, 24, 24, + 31, 36, 35, 43, 44, 40, 29, 25, 40, 69, 94, 139, 115, 116, 67, 71, + 65, 124, 140, 149, 142, 138, 138, 139, 137, 139, 144, 154, 186, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 200, 153, 128, + 213, 130, 124, 106, 75, 48, 35, 30, 26, 25, 27, 26, 21, 15, 20, 22, + 21, 17, 17, 21, 23, 23, 21, 26, 28, 25, 22, 25, 37, 46, 108, 95, + 126, 85, 78, 29, 86, 113, 114, 115, 125, 141, 152, 151, 145, 142, 141, 137, + 136, 141, 144, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 199, 80, 67, 52, 43, 36, 24, 12, 17, 12, 7, 6, 10, 13, 13, + 11, 14, 15, 16, 16, 16, 19, 21, 21, 14, 18, 22, 24, 22, 21, 20, + 20, 38, 29, 63, 52, 48, 8, 32, 42, 44, 54, 76, 103, 119, 122, 119, + 117, 124, 120, 121, 135, 145, 147, 141, 138, 172, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 89, 40, 38, 28, 15, 9, 12, 17, 19, 29, 25, 20, 17, + 17, 17, 15, 14, 12, 13, 14, 16, 16, 15, 15, 17, 18, 18, 18, 21, + 22, 23, 20, 17, 28, 21, 25, 31, 25, 28, 32, 30, 31, 35, 42, 52, + 60, 70, 86, 100, 112, 104, 104, 118, 134, 139, 136, 133, 149, 134, 114, 126, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 211, 80, 32, 31, 16, 27, 34, 32, 27, 26, 24, 22, 13, + 12, 12, 13, 15, 17, 16, 15, 18, 17, 16, 18, 17, 12, 11, 12, 20, + 17, 14, 14, 18, 22, 22, 21, 12, 18, 12, 21, 6, 28, 24, 17, 45, + 44, 43, 44, 44, 52, 72, 92, 84, 78, 78, 89, 105, 121, 135, 145, 122, + 141, 130, 113, 58, 81, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 180, 18, 18, 21, 20, 26, 25, 18, 8, 6, 12, + 20, 22, 24, 23, 21, 20, 18, 15, 11, 9, 21, 18, 17, 19, 18, 13, + 11, 14, 19, 15, 11, 11, 14, 20, 21, 22, 21, 27, 36, 45, 38, 46, + 40, 27, 29, 34, 40, 45, 45, 44, 50, 59, 54, 58, 63, 67, 71, 84, + 111, 135, 115, 154, 151, 123, 62, 119, 111, 52, 158, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 183, 18, 23, 26, 20, 20, 19, 20, 19, + 18, 20, 23, 21, 15, 17, 17, 18, 18, 20, 20, 20, 20, 16, 11, 10, + 15, 15, 10, 10, 15, 17, 14, 11, 11, 14, 18, 20, 20, 23, 13, 29, + 33, 46, 40, 44, 29, 32, 33, 39, 45, 45, 40, 38, 39, 43, 55, 64, + 57, 42, 42, 67, 96, 142, 129, 115, 118, 54, 89, 77, 31, 80, 124, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 20, 17, 21, 21, 18, 17, + 18, 21, 19, 15, 17, 23, 24, 19, 25, 19, 16, 21, 29, 32, 26, 19, + 22, 18, 13, 10, 10, 10, 10, 9, 10, 14, 15, 14, 14, 18, 23, 25, + 22, 32, 37, 36, 42, 51, 49, 39, 25, 27, 30, 31, 32, 31, 31, 31, + 30, 39, 44, 45, 46, 51, 52, 48, 84, 111, 131, 86, 43, 79, 93, 37, + 38, 99, 137, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 28, 18, 17, 19, + 18, 18, 20, 18, 20, 18, 16, 18, 23, 22, 16, 25, 20, 16, 18, 25, + 28, 26, 22, 24, 22, 18, 16, 18, 19, 18, 17, 16, 16, 14, 15, 18, + 22, 21, 20, 19, 22, 29, 38, 42, 39, 34, 32, 30, 27, 25, 27, 31, + 32, 31, 28, 23, 30, 34, 33, 34, 37, 37, 33, 58, 61, 82, 84, 62, + 68, 81, 68, 45, 69, 98, 142, 172, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 20, 19, + 20, 21, 19, 14, 15, 19, 20, 19, 17, 16, 20, 24, 22, 15, 24, 21, + 18, 18, 20, 23, 24, 24, 20, 18, 16, 17, 19, 20, 20, 19, 23, 18, + 14, 16, 20, 22, 21, 18, 26, 21, 29, 45, 48, 35, 27, 30, 33, 26, + 19, 20, 26, 30, 29, 25, 18, 24, 28, 30, 33, 38, 41, 41, 55, 49, + 64, 86, 85, 70, 71, 89, 60, 61, 68, 133, 158, 137, 166, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, + 18, 16, 19, 22, 22, 17, 13, 13, 16, 22, 19, 16, 18, 24, 26, 22, + 16, 22, 22, 21, 20, 20, 20, 22, 24, 18, 16, 15, 16, 18, 19, 19, + 18, 23, 18, 15, 17, 18, 18, 20, 23, 32, 30, 34, 44, 45, 35, 28, + 27, 28, 22, 16, 14, 17, 21, 23, 24, 21, 23, 26, 27, 30, 33, 37, + 40, 32, 46, 50, 56, 62, 50, 45, 64, 63, 69, 57, 102, 102, 91, 85, + 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 31, 13, 17, 17, 17, 16, 16, 16, 15, 13, 18, 15, 16, 21, + 26, 25, 21, 17, 20, 23, 25, 25, 24, 22, 22, 23, 21, 19, 17, 17, + 19, 21, 22, 20, 19, 17, 18, 18, 15, 13, 20, 31, 31, 37, 36, 31, + 30, 32, 28, 19, 19, 19, 17, 13, 11, 13, 19, 24, 29, 27, 25, 21, + 17, 16, 17, 21, 12, 37, 37, 30, 37, 34, 32, 53, 53, 58, 46, 86, + 77, 57, 55, 84, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 204, 64, 16, 25, 12, 13, 12, 11, 9, 14, 20, 20, 15, 14, + 14, 18, 25, 28, 25, 21, 22, 21, 23, 26, 26, 25, 23, 21, 20, 22, + 19, 15, 16, 18, 21, 21, 22, 18, 18, 23, 25, 20, 14, 21, 36, 35, + 41, 37, 24, 23, 30, 27, 16, 14, 18, 20, 17, 12, 12, 20, 26, 37, + 31, 29, 26, 22, 20, 24, 30, 28, 37, 33, 34, 40, 29, 31, 57, 52, + 38, 33, 86, 90, 44, 30, 53, 91, 83, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 174, 14, 20, 8, 22, 14, 10, 13, 12, 10, 14, 21, + 24, 21, 15, 17, 25, 33, 33, 29, 28, 32, 24, 23, 22, 22, 23, 22, + 20, 18, 23, 18, 15, 14, 17, 22, 26, 28, 24, 24, 30, 38, 33, 23, + 24, 35, 43, 42, 36, 30, 28, 28, 25, 22, 16, 19, 22, 22, 21, 21, + 25, 27, 40, 34, 32, 34, 33, 34, 42, 51, 38, 34, 27, 27, 32, 25, + 23, 35, 47, 32, 28, 64, 84, 39, 27, 33, 57, 39, 67, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 174, 16, 16, 5, 15, 5, 14, 12, 18, 20, + 16, 17, 23, 26, 24, 20, 23, 33, 42, 41, 34, 36, 42, 25, 23, 19, + 17, 18, 20, 19, 18, 27, 23, 18, 19, 23, 30, 35, 38, 29, 28, 34, + 46, 45, 32, 25, 29, 46, 35, 30, 34, 31, 21, 18, 23, 19, 20, 23, + 26, 29, 30, 29, 27, 39, 33, 29, 30, 30, 29, 37, 47, 39, 39, 31, + 23, 29, 40, 35, 23, 29, 30, 26, 27, 56, 37, 46, 36, 41, 76, 112, + 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 26, 8, 6, 11, 12, 11, 12, + 13, 9, 17, 18, 11, 15, 25, 27, 22, 24, 35, 36, 24, 25, 39, 45, + 36, 26, 15, 13, 19, 24, 21, 16, 18, 26, 24, 10, 32, 50, 34, 40, + 53, 39, 49, 49, 55, 28, 33, 42, 31, 24, 39, 30, 29, 35, 17, 24, + 27, 25, 23, 26, 36, 42, 36, 24, 34, 39, 37, 28, 24, 31, 39, 40, + 58, 43, 26, 22, 29, 34, 30, 24, 31, 20, 19, 35, 45, 45, 50, 61, + 63, 75, 98, 94, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 72, 30, 16, 5, 6, 10, + 10, 8, 8, 7, 5, 14, 18, 13, 19, 28, 29, 16, 20, 29, 29, 24, + 33, 46, 45, 44, 26, 16, 21, 24, 17, 15, 20, 30, 36, 35, 19, 37, + 55, 41, 46, 79, 53, 51, 49, 53, 26, 33, 45, 47, 35, 40, 28, 27, + 34, 19, 25, 14, 32, 49, 50, 41, 33, 29, 25, 27, 30, 27, 20, 19, + 24, 29, 31, 44, 33, 21, 20, 25, 29, 26, 21, 26, 25, 24, 30, 40, + 50, 53, 51, 74, 59, 66, 62, 106, 157, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 87, 62, 14, 9, + 5, 10, 13, 11, 7, 7, 7, 5, 13, 18, 15, 20, 29, 26, 12, 16, + 23, 23, 26, 47, 57, 46, 46, 25, 16, 24, 23, 10, 12, 26, 36, 43, + 48, 38, 56, 78, 69, 74, 74, 57, 52, 40, 51, 41, 47, 44, 54, 43, + 39, 27, 23, 29, 19, 24, 20, 46, 66, 66, 48, 35, 29, 28, 22, 23, + 20, 16, 15, 19, 22, 21, 28, 23, 19, 19, 22, 25, 25, 23, 27, 32, + 30, 26, 36, 51, 51, 38, 72, 47, 60, 72, 95, 104, 160, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 135, 134, 80, + 23, 9, 10, 11, 13, 14, 13, 11, 11, 11, 6, 13, 18, 15, 19, 23, + 18, 11, 16, 20, 18, 27, 53, 61, 42, 36, 21, 13, 15, 15, 10, 19, + 34, 29, 37, 52, 48, 63, 86, 80, 81, 66, 68, 68, 44, 59, 63, 61, + 34, 53, 50, 48, 38, 32, 31, 29, 33, 47, 56, 62, 61, 55, 49, 40, + 32, 25, 24, 22, 20, 18, 19, 19, 18, 22, 22, 20, 21, 22, 26, 30, + 32, 34, 34, 28, 24, 32, 45, 43, 32, 48, 30, 55, 76, 81, 97, 81, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, + 45, 23, 13, 11, 12, 13, 13, 12, 12, 14, 16, 16, 13, 6, 11, 16, + 14, 19, 20, 13, 11, 15, 19, 16, 22, 47, 52, 30, 22, 20, 13, 4, + 7, 21, 37, 44, 46, 53, 75, 72, 76, 95, 89, 84, 95, 87, 85, 69, + 79, 65, 58, 40, 54, 64, 67, 65, 56, 48, 53, 56, 61, 62, 62, 60, + 61, 60, 52, 43, 36, 34, 31, 29, 25, 20, 20, 20, 22, 24, 23, 22, + 22, 27, 36, 42, 41, 32, 24, 26, 33, 38, 40, 40, 46, 36, 52, 62, + 57, 86, 64, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 196, 34, 20, 17, 14, 13, 15, 14, 14, 12, 8, 10, 15, 19, 18, 16, + 7, 9, 15, 16, 22, 24, 15, 12, 13, 18, 16, 17, 31, 33, 15, 14, + 18, 13, 4, 10, 34, 51, 53, 59, 65, 93, 91, 89, 109, 105, 96, 120, + 88, 84, 87, 91, 55, 58, 72, 59, 75, 77, 82, 74, 64, 74, 74, 62, + 70, 76, 74, 69, 67, 63, 59, 51, 49, 46, 40, 31, 22, 21, 26, 23, + 24, 23, 22, 22, 27, 34, 41, 42, 33, 27, 30, 34, 37, 40, 45, 45, + 47, 52, 56, 50, 71, 48, 75, 104, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 201, 44, 20, 22, 12, 7, 13, 13, 13, 15, 12, 8, 11, 20, + 23, 20, 25, 13, 13, 17, 19, 25, 26, 17, 14, 15, 21, 22, 14, 17, + 18, 7, 13, 13, 11, 11, 21, 37, 50, 53, 55, 59, 89, 88, 81, 101, + 103, 95, 114, 88, 89, 89, 93, 64, 78, 99, 70, 83, 74, 82, 79, 70, + 85, 80, 73, 81, 85, 82, 79, 78, 76, 73, 66, 65, 63, 54, 39, 26, + 26, 34, 24, 25, 24, 23, 23, 26, 31, 36, 44, 49, 46, 37, 35, 40, + 40, 36, 30, 35, 35, 47, 49, 46, 26, 31, 6, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 115, 55, 22, 14, 13, 2, 15, 22, 0, 13, 15, 11, + 9, 15, 26, 28, 23, 35, 21, 17, 20, 20, 25, 25, 15, 16, 16, 26, + 27, 15, 11, 12, 6, 13, 5, 6, 19, 28, 33, 41, 51, 79, 79, 105, + 97, 85, 104, 106, 97, 101, 104, 110, 90, 92, 83, 99, 101, 84, 89, 70, + 77, 79, 75, 91, 82, 94, 89, 82, 79, 85, 91, 89, 81, 78, 77, 74, + 64, 45, 28, 31, 41, 24, 25, 26, 27, 26, 27, 29, 31, 48, 65, 63, + 43, 33, 40, 36, 22, 43, 40, 28, 46, 57, 41, 35, 37, 43, 81, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 46, 14, 16, 16, 15, 13, 13, 14, 15, + 10, 15, 17, 14, 12, 15, 22, 26, 31, 30, 26, 22, 21, 20, 17, 12, + 3, 39, 41, 47, 37, 12, 22, 23, 17, 6, 26, 45, 47, 64, 33, 74, + 79, 78, 112, 96, 89, 106, 93, 115, 110, 105, 104, 106, 104, 100, 103, 111, + 104, 104, 106, 107, 102, 96, 96, 100, 106, 103, 101, 101, 100, 100, 95, 91, + 87, 94, 89, 65, 47, 43, 48, 50, 37, 36, 34, 31, 33, 39, 39, 38, + 46, 44, 45, 48, 41, 29, 23, 25, 21, 27, 33, 36, 37, 43, 48, 52, + 35, 68, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 22, 13, 14, 15, 15, 13, + 12, 13, 14, 13, 15, 15, 11, 11, 15, 17, 18, 19, 20, 20, 19, 17, + 16, 12, 9, 34, 50, 33, 32, 34, 24, 24, 9, 27, 10, 41, 47, 51, + 46, 44, 104, 90, 88, 117, 101, 95, 111, 96, 114, 108, 105, 105, 107, 105, + 102, 104, 111, 102, 101, 102, 105, 102, 99, 100, 106, 103, 98, 96, 101, 109, + 112, 108, 102, 88, 93, 89, 71, 53, 44, 46, 49, 41, 38, 36, 34, 37, + 39, 39, 38, 46, 43, 42, 44, 40, 33, 28, 30, 32, 31, 28, 27, 31, + 41, 52, 59, 27, 77, 49, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 14, 13, 14, + 15, 14, 12, 11, 12, 13, 19, 20, 16, 11, 11, 15, 14, 10, 14, 14, + 14, 14, 13, 13, 15, 17, 39, 56, 43, 34, 30, 19, 17, 11, 1, 18, + 78, 66, 72, 52, 57, 97, 100, 96, 117, 103, 100, 113, 98, 109, 106, 105, + 106, 109, 108, 105, 107, 111, 103, 101, 101, 103, 103, 102, 105, 111, 108, 102, + 97, 101, 110, 113, 105, 96, 97, 97, 95, 86, 69, 55, 53, 61, 44, 42, + 39, 40, 43, 45, 47, 49, 52, 45, 42, 42, 42, 37, 33, 32, 25, 25, + 29, 36, 45, 51, 56, 57, 47, 46, 77, 36, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 38, 27, + 14, 13, 14, 15, 14, 12, 11, 11, 13, 21, 25, 23, 15, 12, 15, 15, + 10, 17, 15, 13, 13, 13, 15, 22, 30, 31, 41, 39, 41, 38, 18, 8, + 10, 9, 48, 84, 44, 44, 65, 83, 102, 102, 98, 110, 101, 100, 111, 99, + 103, 104, 106, 108, 110, 109, 108, 110, 112, 108, 105, 104, 106, 106, 105, 109, + 115, 113, 109, 106, 109, 114, 113, 106, 98, 108, 105, 105, 102, 88, 72, 72, + 82, 67, 60, 51, 49, 49, 49, 52, 55, 56, 51, 45, 45, 45, 42, 38, + 32, 24, 24, 28, 41, 52, 60, 63, 65, 66, 49, 59, 37, 137, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 38, 25, 16, 7, 12, 13, 14, 14, 12, 12, 14, 15, 17, 26, 26, 17, + 12, 17, 19, 14, 15, 12, 12, 17, 19, 18, 23, 30, 42, 21, 15, 33, + 46, 27, 1, 5, 24, 63, 66, 44, 39, 82, 89, 100, 103, 100, 105, 100, + 102, 111, 103, 102, 104, 108, 110, 110, 110, 111, 112, 112, 114, 109, 107, 110, + 111, 110, 111, 116, 109, 111, 114, 116, 117, 117, 115, 112, 111, 107, 107, 106, + 96, 84, 86, 98, 98, 84, 70, 63, 56, 51, 52, 57, 57, 54, 49, 49, + 52, 52, 47, 40, 43, 31, 23, 27, 39, 52, 65, 77, 65, 59, 34, 67, + 61, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 26, 17, 14, 7, 11, 13, 14, 15, 14, 14, 17, 18, 12, + 22, 24, 16, 16, 26, 27, 20, 13, 8, 10, 19, 23, 19, 18, 22, 45, + 21, 18, 25, 32, 19, 2, 25, 37, 55, 50, 69, 70, 94, 83, 98, 107, + 107, 107, 105, 107, 113, 111, 106, 107, 111, 112, 110, 109, 112, 113, 112, 118, + 112, 110, 112, 113, 113, 113, 115, 107, 111, 115, 115, 112, 108, 107, 107, 103, + 103, 104, 102, 95, 89, 93, 100, 104, 91, 79, 75, 70, 65, 67, 74, 60, + 60, 57, 55, 58, 62, 60, 55, 48, 37, 30, 33, 37, 42, 51, 64, 59, + 46, 55, 52, 74, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 176, 13, 8, 14, 11, 10, 12, 14, 15, 15, 16, + 20, 22, 14, 20, 19, 16, 27, 44, 42, 27, 31, 16, 8, 13, 20, 20, + 23, 29, 36, 31, 38, 23, 16, 17, 15, 48, 61, 60, 50, 66, 84, 93, + 104, 122, 112, 116, 111, 111, 112, 114, 116, 110, 111, 115, 115, 110, 108, 112, + 114, 113, 115, 110, 108, 113, 115, 113, 112, 113, 109, 111, 112, 113, 111, 106, + 102, 98, 96, 103, 106, 102, 96, 95, 97, 96, 96, 86, 81, 85, 87, 81, + 81, 89, 74, 74, 68, 61, 60, 66, 70, 68, 45, 40, 41, 48, 47, 39, + 40, 48, 56, 54, 59, 65, 66, 86, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 15, 18, 9, 12, 7, 10, 12, 14, + 16, 16, 18, 22, 24, 20, 21, 17, 18, 39, 60, 54, 34, 57, 30, 7, + 6, 13, 21, 34, 47, 36, 34, 36, 15, 21, 41, 31, 44, 41, 59, 76, + 80, 113, 108, 118, 110, 115, 121, 114, 114, 113, 113, 118, 111, 113, 117, 116, + 109, 106, 112, 115, 113, 112, 107, 107, 112, 116, 114, 112, 112, 108, 107, 109, + 114, 119, 119, 114, 109, 96, 108, 113, 106, 101, 103, 100, 94, 100, 91, 88, + 95, 94, 83, 79, 83, 89, 88, 79, 65, 59, 65, 72, 74, 56, 47, 44, + 46, 42, 36, 43, 57, 65, 60, 69, 69, 78, 93, 81, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 32, 11, 11, 17, 11, + 8, 13, 26, 12, 9, 20, 14, 17, 37, 16, 19, 13, 17, 68, 43, 37, + 25, 41, 3, 23, 25, 25, 31, 45, 58, 71, 47, 44, 40, 47, 38, 53, + 69, 97, 120, 120, 113, 114, 116, 117, 121, 121, 120, 119, 118, 118, 118, 119, + 117, 113, 109, 108, 109, 112, 115, 116, 117, 115, 111, 110, 110, 111, 110, 109, + 110, 111, 111, 111, 111, 111, 111, 112, 106, 108, 110, 111, 108, 106, 105, 107, + 96, 92, 89, 89, 91, 92, 88, 85, 83, 82, 82, 82, 83, 81, 79, 77, + 81, 83, 36, 44, 48, 26, 48, 44, 34, 40, 41, 40, 47, 58, 58, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 25, 10, + 10, 12, 10, 13, 14, 27, 16, 11, 18, 14, 23, 23, 21, 18, 16, 9, + 38, 36, 59, 16, 34, 29, 19, 20, 16, 32, 36, 40, 52, 63, 71, 74, + 84, 82, 102, 106, 119, 126, 120, 116, 121, 125, 124, 123, 122, 121, 120, 119, + 119, 119, 119, 117, 114, 110, 108, 109, 113, 115, 116, 116, 114, 112, 111, 112, + 112, 110, 109, 110, 111, 112, 112, 112, 111, 110, 110, 112, 113, 113, 111, 108, + 104, 102, 102, 109, 109, 104, 95, 87, 84, 84, 86, 84, 83, 81, 83, 85, + 84, 82, 81, 83, 84, 53, 55, 51, 32, 41, 38, 43, 43, 39, 36, 36, + 39, 39, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, + 15, 15, 11, 13, 8, 14, 16, 13, 27, 20, 14, 16, 15, 32, 24, 38, + 13, 19, 11, 14, 28, 63, 20, 22, 45, 14, 19, 22, 35, 22, 20, 24, + 73, 86, 89, 96, 96, 115, 125, 129, 126, 117, 118, 125, 127, 123, 124, 124, + 123, 122, 121, 121, 121, 122, 120, 116, 113, 112, 113, 116, 118, 118, 115, 114, + 113, 114, 116, 116, 113, 111, 112, 113, 113, 114, 113, 111, 109, 107, 113, 114, + 114, 112, 108, 106, 104, 104, 115, 116, 111, 98, 81, 76, 81, 89, 86, 85, + 85, 87, 88, 89, 88, 87, 86, 84, 77, 72, 61, 44, 33, 28, 38, 35, + 33, 33, 34, 33, 39, 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 11, 14, 8, 13, 17, 8, 19, 17, 11, 25, 22, 16, 17, 19, + 42, 38, 62, 10, 20, 23, 14, 24, 38, 34, 12, 36, 17, 21, 39, 33, + 15, 33, 25, 87, 104, 105, 111, 107, 120, 118, 120, 121, 119, 121, 125, 123, + 118, 125, 125, 124, 123, 122, 122, 122, 123, 123, 120, 117, 116, 117, 120, 121, + 122, 114, 114, 114, 116, 118, 118, 114, 112, 112, 114, 115, 116, 115, 112, 108, + 106, 109, 111, 112, 112, 111, 110, 112, 113, 113, 115, 112, 100, 86, 81, 87, + 96, 92, 91, 90, 90, 92, 93, 92, 90, 90, 82, 90, 83, 72, 62, 35, + 17, 24, 20, 24, 32, 33, 31, 40, 53, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 12, 18, 7, 14, 19, 7, 17, 15, 8, 21, 20, + 18, 21, 24, 48, 37, 74, 16, 24, 30, 21, 23, 11, 36, 10, 22, 29, + 17, 41, 24, 21, 36, 29, 76, 103, 108, 122, 119, 123, 112, 119, 123, 123, + 123, 124, 124, 122, 125, 126, 125, 124, 122, 122, 123, 123, 123, 120, 118, 117, + 118, 121, 121, 122, 116, 116, 116, 117, 119, 119, 117, 114, 115, 117, 118, 119, + 117, 114, 110, 108, 108, 110, 112, 113, 114, 115, 117, 120, 115, 116, 114, 107, + 100, 96, 99, 102, 99, 97, 95, 94, 94, 95, 93, 92, 93, 80, 90, 89, + 83, 81, 48, 13, 16, 14, 19, 27, 28, 23, 28, 39, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 174, 16, 22, 10, 13, 19, 5, 11, 12, + 7, 19, 16, 18, 26, 28, 44, 23, 63, 23, 29, 25, 23, 25, 8, 22, + 20, 24, 40, 15, 27, 17, 32, 33, 42, 53, 91, 93, 117, 115, 114, 118, + 120, 122, 118, 113, 115, 120, 126, 126, 125, 124, 123, 122, 122, 123, 123, 120, + 118, 116, 116, 117, 119, 119, 120, 120, 119, 118, 119, 119, 119, 117, 116, 117, + 118, 119, 120, 118, 116, 113, 112, 113, 114, 115, 115, 115, 115, 117, 120, 117, + 116, 114, 110, 106, 102, 101, 99, 103, 100, 97, 95, 95, 95, 93, 93, 95, + 84, 85, 92, 90, 91, 70, 20, 14, 14, 18, 25, 27, 27, 31, 36, 38, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 13, 21, 12, 11, 20, + 9, 9, 11, 8, 19, 12, 16, 30, 28, 35, 24, 39, 15, 30, 23, 27, + 29, 16, 13, 35, 33, 36, 29, 21, 23, 26, 47, 83, 53, 98, 92, 121, + 120, 116, 123, 122, 119, 114, 110, 110, 115, 122, 125, 125, 124, 123, 121, 121, + 122, 122, 121, 119, 117, 118, 120, 121, 121, 121, 123, 122, 120, 120, 119, 120, + 118, 116, 119, 120, 120, 120, 120, 119, 117, 117, 117, 118, 118, 116, 114, 114, + 116, 118, 116, 116, 114, 110, 105, 101, 100, 99, 102, 99, 96, 95, 96, 96, + 96, 96, 95, 92, 82, 97, 92, 93, 92, 31, 12, 15, 18, 20, 27, 37, + 40, 41, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 22, 8, 16, + 12, 11, 23, 16, 13, 11, 11, 20, 9, 15, 32, 27, 27, 38, 24, 1, + 28, 27, 37, 33, 21, 18, 48, 39, 27, 50, 28, 36, 12, 47, 103, 48, + 100, 90, 121, 124, 121, 126, 123, 122, 120, 118, 116, 116, 117, 125, 124, 123, + 122, 121, 121, 121, 122, 125, 123, 121, 121, 123, 125, 125, 125, 126, 124, 120, + 118, 119, 118, 118, 117, 121, 121, 120, 120, 120, 121, 120, 120, 117, 118, 118, + 116, 115, 115, 118, 120, 119, 120, 119, 114, 108, 104, 105, 108, 100, 98, 95, + 95, 96, 98, 98, 97, 95, 99, 83, 100, 92, 91, 105, 41, 17, 19, 18, + 14, 21, 34, 38, 33, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, + 23, 15, 12, 16, 19, 17, 14, 13, 12, 14, 17, 20, 23, 26, 29, 31, + 33, 35, 30, 10, 52, 16, 19, 21, 28, 27, 21, 37, 38, 21, 24, 19, + 66, 88, 97, 83, 100, 120, 113, 125, 127, 127, 125, 120, 115, 115, 120, 125, + 129, 130, 125, 121, 121, 126, 127, 124, 119, 120, 121, 123, 124, 125, 125, 125, + 128, 123, 118, 119, 123, 126, 124, 120, 111, 114, 117, 120, 121, 120, 117, 116, + 119, 118, 119, 121, 120, 116, 117, 122, 117, 117, 116, 116, 113, 110, 108, 106, + 101, 99, 96, 95, 97, 100, 100, 100, 101, 94, 90, 92, 95, 94, 93, 96, + 21, 16, 23, 24, 23, 41, 50, 30, 43, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 68, 21, 16, 14, 18, 21, 19, 16, 15, 13, 13, 12, 13, 15, + 20, 24, 26, 35, 39, 22, 18, 36, 29, 17, 12, 20, 21, 15, 29, 29, + 14, 20, 17, 61, 85, 95, 76, 90, 114, 112, 124, 123, 124, 124, 120, 117, + 117, 121, 127, 127, 127, 124, 120, 122, 128, 129, 127, 129, 128, 128, 128, 127, + 127, 125, 126, 126, 121, 118, 119, 124, 126, 123, 120, 113, 115, 118, 120, 120, + 119, 116, 115, 119, 118, 119, 121, 120, 116, 117, 122, 117, 117, 116, 116, 113, + 111, 108, 107, 105, 102, 99, 97, 98, 99, 99, 99, 104, 98, 92, 95, 95, + 93, 91, 93, 97, 23, 9, 12, 27, 25, 35, 49, 43, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 19, 19, 16, 15, 20, 23, 20, 17, 16, 16, 14, + 11, 11, 13, 18, 24, 27, 34, 40, 19, 26, 20, 47, 23, 10, 18, 21, + 16, 26, 23, 10, 20, 20, 55, 82, 96, 75, 85, 114, 117, 127, 120, 122, + 124, 122, 120, 119, 122, 127, 125, 125, 123, 121, 124, 130, 132, 130, 134, 133, + 131, 129, 128, 128, 128, 129, 127, 125, 123, 125, 127, 128, 125, 122, 116, 117, + 119, 120, 120, 118, 116, 114, 120, 118, 119, 122, 120, 117, 118, 122, 118, 118, + 117, 116, 113, 112, 109, 108, 108, 105, 101, 99, 99, 100, 99, 99, 106, 100, + 94, 96, 97, 94, 91, 93, 109, 19, 2, 13, 34, 19, 22, 49, 42, 255, + 255, 255, 255, 255, 255, 255, 255, 181, 16, 19, 16, 16, 21, 21, 18, 14, + 14, 19, 18, 16, 16, 19, 24, 29, 31, 28, 34, 30, 26, 16, 53, 36, + 16, 19, 24, 18, 24, 18, 7, 21, 23, 42, 69, 93, 79, 86, 116, 122, + 126, 120, 123, 125, 124, 122, 120, 121, 125, 125, 126, 125, 122, 125, 132, 133, + 130, 133, 132, 130, 128, 128, 130, 131, 133, 129, 128, 128, 130, 131, 131, 128, + 125, 120, 121, 121, 121, 120, 118, 115, 114, 120, 119, 120, 122, 120, 117, 118, + 122, 120, 119, 117, 116, 114, 111, 110, 109, 108, 105, 101, 100, 100, 101, 101, + 101, 103, 98, 94, 98, 99, 98, 95, 97, 80, 43, 9, 22, 23, 20, 27, + 37, 42, 255, 255, 255, 255, 255, 255, 255, 255, 16, 11, 18, 15, 15, 18, + 18, 14, 11, 12, 14, 14, 16, 19, 21, 25, 28, 30, 21, 27, 51, 17, + 20, 42, 42, 22, 20, 25, 16, 18, 12, 3, 18, 20, 25, 46, 79, 78, + 85, 116, 120, 117, 122, 125, 127, 126, 122, 119, 119, 121, 127, 128, 127, 125, + 127, 132, 133, 130, 135, 134, 132, 131, 131, 132, 134, 135, 130, 130, 130, 132, + 133, 132, 129, 127, 124, 124, 124, 123, 121, 119, 117, 115, 121, 119, 120, 123, + 121, 117, 118, 123, 121, 120, 118, 116, 114, 112, 110, 109, 106, 103, 101, 101, + 101, 103, 103, 104, 105, 100, 96, 99, 100, 99, 96, 98, 90, 91, 13, 29, + 11, 24, 39, 33, 41, 255, 255, 255, 255, 255, 255, 255, 255, 16, 13, 18, + 14, 14, 16, 15, 12, 11, 14, 9, 10, 13, 15, 17, 20, 22, 23, 19, + 26, 68, 7, 27, 28, 36, 26, 25, 30, 18, 19, 15, 10, 23, 23, 25, + 32, 65, 78, 90, 118, 121, 116, 125, 126, 128, 126, 122, 119, 119, 121, 128, + 129, 128, 126, 129, 134, 134, 130, 141, 140, 138, 136, 135, 135, 135, 135, 130, + 130, 130, 131, 131, 131, 129, 128, 127, 127, 126, 125, 123, 121, 119, 118, 121, + 119, 120, 123, 121, 118, 119, 123, 122, 121, 118, 116, 114, 112, 111, 111, 107, + 105, 103, 103, 104, 106, 106, 106, 111, 104, 100, 102, 102, 98, 94, 93, 101, + 103, 23, 36, 27, 37, 40, 29, 40, 255, 255, 255, 255, 255, 255, 255, 194, + 19, 18, 16, 13, 12, 14, 14, 13, 14, 19, 15, 15, 13, 13, 14, 17, + 20, 21, 20, 32, 75, 7, 36, 30, 30, 36, 27, 31, 19, 21, 20, 18, + 31, 26, 42, 25, 51, 72, 89, 118, 123, 120, 124, 127, 127, 125, 122, 120, + 121, 124, 125, 128, 128, 127, 131, 136, 137, 133, 139, 139, 139, 138, 138, 137, + 136, 136, 134, 134, 134, 134, 132, 132, 132, 133, 129, 130, 128, 127, 125, 124, + 122, 122, 122, 121, 121, 123, 122, 118, 118, 123, 122, 122, 119, 116, 114, 113, + 112, 112, 112, 110, 107, 106, 107, 108, 108, 108, 112, 105, 102, 104, 104, 99, + 94, 94, 88, 88, 63, 33, 44, 49, 34, 26, 39, 255, 255, 255, 255, 255, + 255, 255, 41, 14, 15, 15, 12, 11, 14, 15, 15, 19, 26, 26, 23, 18, + 16, 16, 18, 22, 25, 21, 37, 73, 12, 43, 41, 30, 48, 22, 26, 12, + 16, 19, 19, 31, 25, 52, 20, 37, 62, 81, 112, 120, 120, 123, 125, 126, + 124, 121, 121, 124, 127, 123, 126, 127, 127, 132, 138, 140, 136, 132, 133, 134, + 136, 138, 138, 138, 138, 139, 139, 139, 137, 135, 136, 137, 139, 131, 130, 129, + 128, 127, 125, 124, 124, 122, 121, 121, 123, 122, 118, 118, 123, 123, 121, 119, + 116, 113, 113, 112, 112, 117, 114, 111, 110, 109, 109, 109, 108, 109, 103, 100, + 104, 106, 101, 97, 97, 86, 90, 116, 18, 36, 50, 32, 33, 37, 255, 255, + 255, 255, 255, 255, 255, 22, 24, 18, 18, 15, 13, 16, 17, 16, 16, 18, + 24, 26, 30, 36, 16, 9, 27, 12, 38, 42, 31, 37, 27, 33, 64, 43, + 30, 33, 20, 27, 19, 34, 26, 26, 26, 26, 26, 47, 85, 120, 94, 119, + 122, 124, 125, 124, 121, 120, 122, 124, 126, 127, 128, 129, 130, 134, 139, 143, + 138, 139, 137, 136, 138, 142, 138, 132, 140, 141, 141, 140, 139, 137, 137, 138, + 135, 133, 130, 130, 128, 126, 122, 119, 124, 124, 122, 120, 118, 118, 119, 122, + 122, 124, 125, 119, 112, 108, 110, 114, 117, 115, 111, 110, 110, 110, 110, 109, + 109, 106, 103, 103, 104, 104, 99, 95, 91, 94, 99, 25, 40, 44, 24, 39, + 37, 255, 255, 255, 255, 255, 255, 255, 23, 26, 19, 21, 18, 16, 20, 20, + 18, 18, 20, 21, 32, 22, 42, 11, 26, 30, 19, 32, 38, 57, 54, 35, + 32, 47, 66, 19, 28, 25, 36, 25, 35, 21, 18, 23, 32, 43, 45, 49, + 106, 110, 115, 122, 124, 125, 124, 121, 120, 122, 124, 126, 127, 128, 129, 130, + 134, 139, 143, 141, 142, 141, 139, 142, 145, 142, 136, 141, 142, 143, 141, 139, + 137, 136, 137, 139, 137, 134, 133, 132, 129, 125, 122, 123, 124, 122, 120, 119, + 119, 120, 123, 120, 122, 124, 122, 117, 113, 113, 115, 118, 116, 111, 110, 110, + 111, 110, 109, 111, 107, 104, 105, 105, 104, 99, 94, 91, 92, 98, 40, 35, + 47, 29, 41, 32, 255, 255, 255, 255, 255, 255, 255, 24, 28, 22, 23, 19, + 17, 21, 22, 19, 17, 19, 21, 35, 24, 36, 19, 34, 38, 23, 38, 36, + 67, 59, 46, 38, 33, 81, 38, 43, 34, 42, 33, 50, 43, 45, 23, 39, + 58, 44, 19, 90, 122, 116, 122, 124, 125, 124, 120, 119, 121, 123, 126, 127, + 128, 129, 130, 133, 138, 142, 142, 144, 144, 142, 143, 147, 144, 139, 144, 145, + 145, 143, 139, 137, 138, 139, 142, 140, 137, 136, 134, 131, 127, 124, 123, 123, + 122, 121, 119, 120, 122, 124, 120, 121, 123, 123, 122, 119, 115, 115, 117, 116, + 112, 111, 112, 112, 111, 110, 114, 110, 106, 107, 107, 105, 99, 95, 90, 90, + 96, 65, 29, 48, 33, 44, 53, 255, 255, 255, 255, 255, 255, 67, 25, 29, + 24, 23, 19, 17, 21, 22, 18, 15, 16, 23, 33, 31, 24, 33, 35, 48, + 26, 41, 40, 48, 46, 52, 46, 34, 69, 43, 41, 24, 31, 25, 44, 38, + 40, 27, 44, 50, 43, 24, 74, 109, 122, 122, 123, 125, 125, 120, 119, 121, + 123, 126, 127, 128, 128, 129, 133, 138, 141, 141, 144, 144, 142, 143, 146, 144, + 140, 143, 144, 145, 144, 140, 139, 141, 142, 141, 140, 137, 136, 134, 131, 127, + 123, 123, 124, 123, 122, 120, 121, 123, 125, 125, 123, 121, 120, 120, 119, 116, + 114, 118, 116, 112, 111, 112, 114, 112, 112, 117, 113, 109, 108, 108, 106, 100, + 95, 91, 90, 95, 86, 23, 46, 34, 42, 52, 255, 255, 255, 255, 255, 255, + 47, 27, 27, 26, 25, 21, 20, 23, 23, 19, 16, 16, 18, 34, 21, 27, + 32, 46, 51, 40, 27, 45, 32, 41, 57, 42, 41, 43, 40, 43, 33, 45, + 41, 55, 37, 28, 36, 45, 26, 43, 48, 64, 82, 126, 122, 123, 125, 125, + 120, 119, 121, 123, 126, 127, 128, 128, 129, 132, 137, 140, 141, 145, 146, 144, + 144, 147, 146, 143, 142, 143, 145, 144, 143, 143, 143, 145, 143, 142, 140, 139, + 137, 133, 128, 124, 125, 125, 124, 123, 121, 121, 123, 125, 130, 126, 121, 117, + 115, 115, 114, 114, 119, 117, 114, 112, 113, 115, 114, 113, 118, 114, 110, 109, + 109, 107, 102, 97, 92, 90, 92, 100, 23, 41, 33, 40, 62, 255, 255, 255, + 255, 255, 255, 35, 29, 22, 26, 29, 25, 24, 28, 27, 22, 18, 18, 11, + 36, 6, 39, 30, 59, 51, 60, 13, 43, 36, 56, 59, 38, 45, 30, 42, + 50, 47, 62, 62, 80, 73, 74, 47, 50, 15, 42, 57, 56, 70, 122, 122, + 124, 125, 125, 120, 119, 121, 123, 126, 127, 128, 128, 128, 131, 136, 139, 143, + 148, 150, 148, 147, 150, 149, 148, 143, 144, 146, 145, 144, 144, 144, 146, 144, + 143, 142, 143, 141, 137, 132, 128, 127, 127, 126, 124, 122, 121, 123, 125, 131, + 128, 122, 117, 113, 112, 114, 116, 119, 118, 114, 114, 114, 116, 115, 114, 118, + 114, 110, 109, 110, 107, 103, 98, 92, 90, 89, 103, 32, 36, 32, 42, 47, + 255, 255, 255, 255, 255, 255, 29, 31, 17, 27, 31, 27, 26, 29, 28, 23, + 19, 18, 18, 31, 17, 29, 50, 47, 58, 69, 32, 33, 44, 66, 62, 47, + 45, 41, 30, 45, 46, 60, 54, 78, 86, 101, 62, 65, 31, 47, 43, 56, + 87, 117, 122, 124, 125, 125, 120, 119, 121, 123, 126, 127, 128, 127, 128, 131, + 135, 139, 142, 148, 151, 148, 147, 149, 150, 149, 147, 148, 148, 147, 144, 143, + 142, 144, 142, 142, 142, 143, 143, 140, 134, 130, 129, 129, 127, 124, 122, 121, + 122, 124, 128, 128, 126, 121, 115, 113, 115, 120, 119, 118, 115, 114, 115, 117, + 117, 116, 116, 113, 110, 110, 110, 108, 104, 98, 90, 90, 86, 99, 43, 34, + 35, 47, 61, 255, 255, 255, 255, 255, 255, 27, 30, 13, 27, 28, 24, 24, + 27, 27, 21, 17, 16, 32, 22, 43, 9, 80, 22, 68, 65, 66, 23, 45, + 65, 64, 63, 47, 56, 21, 49, 64, 77, 59, 69, 70, 86, 74, 78, 53, + 52, 22, 57, 112, 113, 122, 124, 126, 125, 121, 120, 122, 123, 125, 126, 127, + 126, 127, 129, 134, 138, 138, 145, 149, 146, 143, 146, 148, 148, 150, 151, 151, + 148, 144, 142, 140, 142, 138, 139, 139, 141, 141, 138, 133, 128, 130, 130, 128, + 125, 122, 120, 121, 123, 123, 127, 129, 125, 119, 115, 118, 122, 119, 116, 114, + 114, 114, 116, 117, 117, 115, 112, 108, 109, 110, 108, 103, 99, 89, 90, 84, + 96, 52, 35, 37, 53, 61, 255, 255, 255, 255, 255, 136, 55, 19, 26, 29, + 30, 22, 13, 13, 22, 31, 26, 16, 25, 35, 33, 27, 51, 54, 42, 73, + 41, 50, 30, 70, 56, 40, 46, 53, 61, 27, 69, 55, 51, 72, 93, 81, + 61, 72, 107, 62, 37, 61, 115, 117, 125, 124, 124, 125, 121, 118, 121, 128, + 129, 128, 127, 127, 128, 129, 131, 133, 138, 138, 140, 142, 144, 146, 149, 151, + 149, 147, 143, 142, 143, 144, 143, 142, 134, 136, 137, 140, 140, 138, 135, 132, + 130, 128, 129, 131, 127, 121, 120, 123, 124, 126, 123, 118, 116, 118, 118, 116, + 116, 114, 113, 113, 114, 115, 114, 113, 115, 115, 113, 112, 110, 105, 99, 96, + 86, 87, 91, 87, 73, 28, 42, 50, 48, 255, 255, 255, 255, 255, 130, 78, + 22, 23, 28, 24, 25, 22, 18, 21, 26, 24, 19, 32, 38, 35, 25, 43, + 48, 42, 75, 44, 58, 42, 56, 67, 46, 57, 48, 62, 32, 63, 61, 57, + 71, 97, 77, 71, 77, 89, 50, 43, 71, 118, 122, 126, 125, 125, 126, 123, + 120, 122, 129, 128, 126, 126, 126, 127, 129, 132, 133, 136, 137, 139, 142, 144, + 145, 147, 148, 145, 145, 143, 143, 144, 143, 140, 137, 135, 136, 137, 138, 137, + 136, 133, 132, 126, 125, 126, 129, 127, 122, 121, 125, 127, 128, 126, 120, 118, + 120, 120, 117, 117, 115, 112, 112, 112, 113, 113, 112, 113, 112, 111, 109, 108, + 104, 99, 96, 93, 90, 91, 86, 75, 32, 48, 56, 52, 255, 255, 255, 255, + 255, 120, 108, 25, 19, 26, 22, 28, 31, 27, 23, 23, 23, 22, 32, 36, + 35, 24, 36, 44, 44, 77, 43, 65, 51, 44, 77, 55, 66, 45, 60, 40, + 57, 72, 63, 67, 100, 74, 79, 83, 71, 41, 59, 88, 121, 128, 126, 126, + 126, 127, 124, 121, 123, 129, 126, 126, 126, 126, 128, 130, 132, 134, 135, 137, + 139, 142, 145, 146, 146, 145, 147, 147, 148, 149, 149, 146, 141, 137, 136, 136, + 136, 135, 134, 132, 131, 130, 126, 125, 126, 128, 125, 120, 119, 123, 127, 128, + 126, 120, 118, 119, 119, 116, 117, 115, 112, 112, 112, 112, 112, 110, 111, 109, + 108, 107, 106, 103, 100, 97, 94, 86, 84, 80, 72, 33, 49, 56, 58, 255, + 255, 255, 255, 255, 114, 123, 27, 18, 28, 24, 32, 36, 33, 27, 24, 24, + 23, 22, 27, 33, 28, 35, 43, 44, 74, 36, 66, 49, 52, 81, 63, 67, + 50, 56, 46, 58, 85, 66, 61, 100, 76, 74, 87, 62, 52, 86, 106, 123, + 132, 127, 127, 128, 129, 126, 122, 123, 130, 126, 125, 125, 126, 128, 130, 133, + 135, 136, 137, 140, 142, 145, 145, 145, 145, 149, 149, 148, 149, 149, 147, 141, + 138, 138, 137, 135, 133, 131, 129, 128, 126, 133, 130, 128, 129, 124, 118, 116, + 120, 125, 127, 123, 118, 115, 118, 117, 115, 116, 113, 111, 111, 112, 112, 113, + 111, 110, 109, 107, 106, 106, 104, 101, 99, 91, 83, 79, 77, 74, 35, 49, + 53, 60, 255, 255, 255, 255, 255, 115, 112, 25, 20, 29, 30, 34, 36, 33, + 31, 31, 29, 26, 14, 19, 36, 36, 38, 42, 39, 61, 32, 62, 44, 72, + 79, 71, 68, 63, 53, 48, 62, 96, 66, 61, 98, 84, 62, 90, 66, 79, + 114, 120, 124, 132, 126, 127, 129, 131, 127, 122, 125, 130, 126, 124, 124, 125, + 128, 131, 133, 134, 137, 138, 142, 144, 145, 146, 146, 146, 147, 143, 141, 140, + 140, 140, 138, 137, 138, 137, 134, 132, 129, 128, 126, 124, 134, 131, 129, 129, + 124, 118, 117, 121, 124, 125, 123, 117, 116, 118, 118, 116, 113, 111, 110, 110, + 113, 114, 114, 113, 111, 109, 108, 108, 107, 106, 103, 100, 92, 85, 84, 84, + 82, 42, 51, 52, 58, 255, 255, 255, 255, 255, 128, 79, 21, 23, 26, 34, + 36, 34, 32, 33, 37, 36, 32, 17, 18, 38, 40, 37, 39, 34, 47, 32, + 55, 42, 81, 72, 75, 78, 67, 56, 45, 65, 101, 67, 67, 93, 90, 59, + 94, 74, 105, 129, 125, 123, 131, 127, 127, 130, 133, 129, 124, 126, 131, 126, + 125, 125, 125, 128, 130, 132, 134, 138, 138, 140, 141, 142, 144, 145, 145, 146, + 143, 140, 139, 140, 141, 141, 140, 137, 136, 134, 133, 131, 128, 124, 123, 128, + 126, 125, 126, 123, 119, 120, 125, 124, 126, 124, 119, 118, 121, 122, 120, 113, + 112, 110, 110, 112, 113, 113, 112, 110, 109, 109, 109, 109, 106, 102, 98, 87, + 82, 85, 86, 83, 41, 48, 48, 51, 255, 255, 255, 255, 255, 148, 41, 18, + 24, 20, 34, 36, 35, 31, 32, 38, 42, 41, 26, 19, 37, 39, 34, 39, + 37, 45, 36, 46, 43, 66, 60, 71, 93, 55, 63, 38, 64, 101, 68, 80, + 88, 94, 70, 100, 76, 117, 129, 121, 124, 129, 127, 128, 131, 134, 131, 126, + 126, 131, 127, 127, 126, 126, 127, 129, 132, 133, 138, 137, 137, 136, 139, 141, + 143, 144, 146, 145, 144, 144, 145, 145, 145, 143, 134, 135, 135, 134, 132, 128, + 125, 122, 124, 122, 121, 122, 120, 117, 119, 124, 121, 123, 122, 118, 118, 122, + 123, 121, 118, 115, 112, 111, 111, 111, 110, 108, 107, 107, 109, 110, 110, 106, + 100, 95, 84, 80, 85, 85, 80, 37, 45, 47, 44, 255, 255, 255, 255, 143, + 162, 16, 16, 25, 15, 33, 36, 35, 30, 29, 36, 45, 49, 31, 18, 34, + 35, 32, 41, 43, 51, 39, 38, 45, 44, 50, 65, 104, 40, 71, 33, 62, + 99, 69, 91, 85, 94, 82, 105, 76, 120, 124, 117, 126, 128, 128, 130, 132, + 135, 132, 127, 126, 131, 128, 127, 126, 126, 127, 129, 131, 132, 138, 137, 134, + 133, 135, 138, 141, 144, 141, 141, 142, 145, 146, 145, 142, 140, 133, 134, 136, + 135, 133, 129, 125, 122, 125, 122, 120, 120, 117, 113, 114, 119, 118, 120, 119, + 115, 116, 120, 122, 120, 121, 118, 114, 112, 111, 109, 107, 105, 105, 107, 109, + 110, 110, 105, 97, 92, 88, 86, 89, 89, 81, 38, 48, 50, 111, 255, 255, + 255, 255, 144, 143, 16, 23, 20, 20, 28, 43, 35, 27, 41, 46, 41, 48, + 30, 48, 47, 36, 39, 45, 46, 51, 24, 49, 22, 57, 39, 76, 81, 65, + 59, 51, 52, 93, 75, 64, 105, 79, 84, 104, 56, 140, 118, 124, 124, 127, + 132, 131, 129, 130, 129, 129, 128, 126, 127, 127, 129, 130, 131, 131, 131, 132, + 133, 132, 132, 131, 133, 137, 143, 146, 150, 140, 139, 142, 139, 142, 141, 131, + 132, 133, 134, 135, 136, 133, 127, 123, 118, 119, 121, 122, 121, 119, 117, 115, + 115, 119, 119, 117, 118, 121, 120, 117, 122, 118, 113, 112, 112, 110, 106, 103, + 107, 107, 106, 106, 109, 109, 101, 90, 82, 87, 87, 88, 89, 7, 35, 38, + 255, 255, 255, 255, 218, 138, 136, 18, 26, 23, 23, 32, 40, 40, 39, 43, + 41, 39, 46, 40, 46, 37, 31, 46, 55, 47, 40, 34, 48, 19, 62, 54, + 66, 82, 66, 55, 53, 52, 93, 85, 71, 104, 87, 79, 97, 70, 133, 118, + 128, 124, 128, 134, 133, 132, 132, 131, 130, 129, 128, 126, 126, 129, 130, 131, + 131, 132, 131, 132, 128, 128, 131, 137, 142, 142, 140, 149, 139, 141, 144, 140, + 143, 144, 133, 127, 128, 130, 132, 134, 132, 128, 125, 121, 122, 122, 123, 121, + 119, 117, 115, 114, 118, 118, 116, 116, 119, 119, 116, 121, 117, 113, 112, 112, + 111, 108, 104, 105, 106, 106, 104, 106, 107, 100, 92, 86, 90, 87, 89, 75, + 7, 32, 27, 255, 255, 255, 255, 143, 135, 133, 25, 31, 28, 26, 33, 25, + 30, 37, 33, 32, 46, 56, 30, 46, 48, 38, 41, 44, 45, 52, 39, 43, + 15, 59, 64, 45, 77, 58, 48, 51, 45, 82, 88, 68, 87, 87, 72, 87, + 93, 124, 120, 133, 124, 129, 135, 135, 134, 132, 130, 130, 130, 130, 126, 127, + 129, 130, 131, 130, 128, 127, 127, 125, 125, 132, 141, 145, 142, 137, 145, 138, + 141, 146, 142, 144, 145, 135, 136, 136, 136, 135, 134, 131, 126, 122, 125, 125, + 125, 124, 121, 118, 115, 113, 114, 116, 116, 113, 114, 117, 118, 116, 119, 115, + 112, 111, 113, 113, 110, 107, 106, 108, 107, 104, 104, 104, 99, 92, 91, 91, + 88, 91, 56, 9, 28, 15, 255, 255, 255, 216, 143, 137, 130, 33, 30, 24, + 23, 45, 22, 27, 39, 25, 17, 27, 31, 24, 45, 49, 40, 36, 39, 49, + 67, 35, 42, 22, 55, 65, 31, 78, 55, 47, 52, 42, 70, 86, 66, 72, + 85, 68, 81, 115, 117, 121, 136, 124, 130, 134, 135, 134, 132, 129, 128, 129, + 129, 128, 128, 129, 129, 128, 126, 124, 123, 123, 124, 128, 133, 140, 141, 138, + 134, 138, 132, 137, 144, 141, 145, 147, 140, 142, 140, 138, 138, 137, 135, 129, + 125, 128, 127, 126, 124, 121, 117, 114, 112, 114, 116, 115, 111, 111, 116, 118, + 116, 118, 114, 111, 112, 114, 116, 113, 110, 109, 111, 110, 106, 105, 105, 100, + 95, 94, 91, 91, 94, 46, 20, 33, 14, 255, 255, 255, 134, 142, 138, 127, + 43, 34, 25, 23, 32, 6, 12, 31, 23, 17, 25, 29, 37, 41, 33, 30, + 42, 52, 57, 66, 28, 42, 35, 53, 64, 34, 86, 64, 49, 58, 49, 68, + 90, 76, 74, 93, 70, 84, 128, 115, 120, 134, 123, 131, 131, 133, 133, 131, + 126, 125, 126, 127, 130, 129, 129, 127, 124, 122, 121, 119, 126, 130, 134, 134, + 129, 125, 124, 123, 130, 126, 133, 141, 140, 145, 150, 143, 138, 140, 140, 142, + 144, 144, 139, 136, 132, 130, 127, 125, 120, 117, 113, 112, 114, 117, 114, 110, + 110, 116, 118, 117, 118, 115, 112, 113, 117, 118, 115, 113, 109, 111, 111, 108, + 109, 110, 105, 98, 95, 90, 97, 96, 52, 36, 45, 29, 255, 255, 255, 139, + 144, 138, 128, 68, 62, 55, 51, 50, 21, 7, 9, 4, 8, 29, 47, 38, + 44, 38, 33, 40, 47, 54, 69, 25, 31, 37, 45, 55, 39, 78, 68, 42, + 54, 53, 68, 91, 90, 84, 95, 79, 95, 130, 120, 119, 131, 123, 130, 130, + 132, 132, 129, 125, 122, 123, 125, 130, 128, 126, 123, 121, 120, 120, 120, 134, + 136, 135, 126, 114, 107, 107, 111, 122, 118, 125, 132, 130, 137, 143, 140, 147, + 147, 149, 151, 152, 151, 143, 140, 136, 133, 130, 126, 122, 118, 116, 114, 117, + 118, 115, 110, 110, 116, 120, 119, 120, 117, 115, 115, 119, 120, 119, 116, 108, + 109, 108, 108, 111, 113, 105, 95, 88, 82, 97, 91, 67, 46, 54, 47, 255, + 255, 215, 144, 138, 127, 124, 94, 103, 98, 91, 110, 93, 65, 40, 21, 4, + 10, 33, 40, 52, 50, 42, 38, 35, 44, 65, 43, 23, 32, 42, 47, 38, + 51, 60, 31, 46, 59, 70, 89, 99, 87, 83, 89, 108, 127, 128, 117, 126, + 122, 130, 129, 132, 132, 129, 124, 121, 121, 124, 127, 125, 122, 119, 118, 120, + 123, 125, 135, 132, 123, 111, 101, 96, 99, 102, 111, 106, 112, 116, 112, 118, + 127, 125, 138, 140, 144, 149, 150, 147, 140, 134, 141, 138, 135, 131, 126, 123, + 120, 119, 120, 121, 117, 111, 111, 118, 122, 123, 123, 120, 117, 118, 120, 121, + 119, 116, 113, 110, 106, 106, 109, 107, 94, 77, 71, 64, 87, 74, 75, 43, + 49, 55, 255, 255, 136, 139, 125, 108, 111, 105, 126, 124, 115, 112, 129, 123, + 106, 83, 44, 21, 33, 57, 54, 41, 38, 46, 44, 37, 41, 70, 25, 32, + 47, 47, 37, 30, 52, 29, 45, 68, 76, 91, 104, 89, 74, 96, 117, 122, + 132, 116, 123, 122, 128, 129, 132, 133, 130, 123, 120, 121, 124, 124, 122, 118, + 116, 117, 121, 127, 131, 132, 124, 111, 100, 94, 95, 98, 101, 102, 97, 101, + 101, 96, 102, 111, 109, 104, 109, 119, 130, 138, 141, 138, 134, 144, 142, 138, + 135, 130, 127, 124, 123, 122, 122, 118, 112, 112, 119, 124, 124, 124, 121, 119, + 119, 122, 122, 119, 117, 121, 115, 108, 104, 105, 99, 78, 58, 56, 48, 76, + 58, 75, 34, 39, 52, 255, 255, 144, 138, 117, 106, 112, 113, 107, 108, 117, + 117, 121, 122, 119, 112, 94, 64, 36, 35, 40, 42, 46, 43, 29, 27, 44, + 59, 35, 43, 40, 61, 62, 31, 68, 56, 42, 63, 93, 85, 115, 93, 90, + 110, 114, 120, 123, 122, 121, 122, 122, 128, 131, 132, 128, 122, 120, 123, 126, + 123, 121, 117, 115, 120, 127, 126, 121, 123, 113, 101, 94, 92, 91, 88, 86, + 93, 93, 84, 69, 70, 83, 90, 87, 79, 83, 83, 90, 112, 137, 145, 140, + 142, 137, 141, 124, 134, 125, 133, 125, 123, 126, 122, 116, 113, 119, 127, 131, + 128, 125, 124, 124, 124, 123, 124, 126, 120, 106, 104, 107, 100, 88, 65, 38, + 28, 41, 46, 63, 74, 39, 19, 52, 255, 255, 142, 118, 115, 114, 118, 120, + 116, 109, 105, 112, 121, 125, 122, 124, 123, 109, 91, 57, 47, 70, 46, 59, + 20, 41, 41, 47, 30, 39, 19, 47, 61, 43, 63, 56, 42, 60, 81, 92, + 117, 103, 104, 114, 117, 121, 123, 122, 121, 122, 123, 126, 128, 129, 126, 121, + 118, 121, 125, 121, 124, 124, 120, 118, 117, 113, 106, 123, 112, 96, 87, 85, + 86, 86, 86, 76, 78, 71, 61, 60, 69, 71, 65, 61, 66, 69, 71, 78, + 92, 105, 113, 131, 134, 139, 127, 125, 121, 127, 127, 122, 123, 118, 113, 112, + 119, 125, 127, 125, 122, 120, 121, 124, 125, 126, 126, 124, 112, 104, 94, 74, + 59, 45, 28, 17, 29, 33, 50, 66, 37, 12, 255, 255, 218, 133, 109, 119, + 126, 125, 122, 121, 111, 99, 112, 125, 128, 122, 125, 140, 142, 132, 103, 78, + 63, 79, 63, 64, 45, 26, 25, 29, 52, 15, 37, 52, 49, 57, 52, 40, + 52, 57, 95, 106, 105, 111, 119, 120, 122, 123, 122, 121, 121, 122, 123, 125, + 126, 124, 120, 118, 119, 122, 99, 110, 120, 121, 119, 117, 116, 113, 100, 95, + 89, 89, 94, 100, 105, 106, 99, 103, 101, 94, 93, 96, 92, 83, 78, 73, + 65, 60, 55, 53, 57, 63, 100, 119, 129, 134, 121, 125, 124, 131, 127, 126, + 121, 116, 117, 125, 129, 129, 125, 121, 117, 118, 124, 127, 125, 121, 113, 104, + 97, 79, 51, 37, 34, 28, 6, 18, 22, 36, 57, 42, 16, 255, 255, 135, + 119, 119, 125, 129, 126, 117, 110, 105, 103, 119, 136, 137, 123, 120, 136, 143, + 135, 131, 104, 76, 113, 68, 88, 47, 20, 12, 31, 68, 33, 38, 38, 48, + 55, 50, 39, 48, 42, 100, 95, 105, 108, 122, 122, 122, 121, 120, 120, 120, + 120, 122, 124, 125, 124, 120, 118, 118, 119, 112, 122, 127, 119, 107, 101, 100, + 100, 93, 96, 103, 113, 122, 128, 130, 129, 120, 123, 122, 118, 117, 118, 113, + 106, 117, 94, 74, 71, 69, 58, 45, 39, 66, 94, 109, 132, 120, 133, 126, + 131, 130, 127, 121, 117, 121, 129, 131, 128, 129, 124, 119, 117, 123, 126, 122, + 115, 100, 92, 84, 68, 40, 32, 37, 39, 27, 38, 35, 37, 48, 42, 23, + 255, 255, 127, 105, 124, 121, 125, 127, 115, 98, 99, 113, 126, 143, 146, 132, + 125, 133, 137, 130, 125, 109, 127, 118, 85, 58, 54, 28, 23, 29, 55, 43, + 44, 38, 48, 52, 49, 42, 51, 44, 106, 91, 111, 110, 122, 121, 120, 119, + 119, 119, 118, 117, 122, 124, 125, 124, 122, 119, 116, 115, 113, 119, 118, 107, + 97, 95, 103, 109, 126, 127, 132, 136, 138, 136, 133, 130, 127, 127, 126, 123, + 123, 124, 121, 116, 122, 103, 91, 94, 95, 83, 70, 64, 57, 78, 88, 112, + 109, 130, 126, 130, 125, 123, 118, 113, 117, 124, 126, 123, 126, 124, 118, 115, + 120, 124, 119, 109, 93, 79, 65, 52, 36, 42, 55, 59, 74, 78, 68, 52, + 46, 41, 30, 255, 255, 121, 98, 111, 110, 119, 128, 114, 93, 99, 119, 123, + 140, 149, 145, 137, 135, 132, 126, 120, 117, 128, 123, 87, 63, 49, 32, 44, + 25, 23, 37, 41, 49, 50, 47, 41, 37, 48, 49, 100, 87, 114, 107, 121, + 120, 119, 119, 120, 119, 117, 114, 123, 124, 125, 125, 122, 118, 113, 110, 98, + 101, 99, 94, 96, 108, 124, 132, 146, 143, 138, 133, 128, 126, 125, 125, 132, + 131, 128, 126, 126, 127, 125, 124, 107, 110, 113, 112, 104, 94, 91, 94, 78, + 82, 79, 87, 92, 113, 121, 127, 122, 122, 118, 114, 115, 122, 125, 123, 118, + 119, 114, 108, 111, 116, 111, 101, 78, 59, 47, 42, 45, 66, 89, 96, 97, + 96, 87, 68, 54, 49, 48, 255, 255, 119, 97, 97, 106, 118, 118, 104, 94, + 105, 124, 134, 145, 157, 161, 151, 135, 123, 117, 124, 127, 110, 122, 92, 88, + 49, 36, 48, 29, 11, 40, 31, 53, 46, 36, 42, 37, 46, 57, 87, 78, + 113, 100, 121, 120, 120, 121, 123, 122, 118, 114, 122, 123, 124, 123, 121, 115, + 109, 105, 112, 111, 105, 100, 104, 116, 126, 129, 140, 137, 133, 129, 124, 125, + 127, 131, 130, 127, 122, 121, 120, 119, 117, 117, 106, 117, 123, 118, 108, 103, + 105, 106, 104, 98, 93, 81, 91, 101, 118, 121, 120, 122, 120, 116, 114, 120, + 124, 125, 113, 116, 112, 102, 97, 100, 94, 82, 61, 50, 49, 59, 70, 93, + 111, 113, 97, 93, 90, 78, 63, 57, 123, 255, 255, 120, 101, 93, 109, 117, + 104, 89, 93, 111, 127, 156, 161, 173, 178, 163, 136, 116, 110, 124, 124, 138, + 103, 116, 70, 67, 53, 38, 40, 21, 56, 22, 49, 38, 28, 53, 45, 52, + 68, 81, 75, 115, 99, 121, 120, 121, 123, 125, 124, 119, 114, 122, 122, 122, + 122, 119, 113, 106, 100, 108, 106, 104, 107, 120, 136, 144, 142, 137, 138, 140, + 139, 137, 137, 137, 139, 136, 132, 128, 128, 126, 122, 119, 118, 112, 118, 118, + 113, 114, 122, 119, 112, 116, 110, 111, 90, 101, 99, 117, 117, 113, 117, 117, + 112, 108, 113, 118, 121, 113, 118, 113, 97, 87, 85, 77, 65, 63, 60, 71, + 86, 95, 105, 108, 99, 102, 92, 90, 85, 67, 56, 255, 255, 255, 92, 104, + 85, 119, 115, 108, 91, 88, 123, 127, 150, 141, 133, 131, 127, 120, 119, 123, + 121, 130, 124, 111, 108, 96, 73, 61, 46, 35, 39, 35, 31, 55, 18, 43, + 43, 27, 53, 86, 64, 89, 91, 99, 110, 119, 125, 124, 122, 122, 121, 119, + 123, 121, 119, 120, 121, 117, 107, 99, 111, 119, 123, 120, 123, 135, 140, 140, + 130, 142, 127, 133, 134, 128, 130, 132, 127, 125, 127, 129, 120, 111, 114, 125, + 118, 111, 109, 112, 116, 117, 116, 118, 117, 124, 126, 116, 102, 98, 108, 120, + 117, 116, 111, 105, 103, 109, 114, 114, 104, 106, 98, 88, 88, 60, 48, 63, + 88, 82, 87, 104, 108, 101, 100, 110, 98, 102, 99, 75, 87, 55, 255, 255, + 255, 102, 102, 95, 115, 112, 100, 91, 98, 122, 126, 114, 141, 145, 126, 124, + 142, 137, 112, 117, 129, 124, 113, 111, 105, 91, 86, 43, 34, 56, 43, 51, + 53, 22, 36, 29, 29, 59, 82, 62, 94, 97, 98, 109, 115, 120, 120, 120, + 122, 121, 118, 124, 122, 121, 120, 119, 114, 107, 102, 111, 120, 124, 120, 123, + 131, 136, 132, 147, 149, 129, 129, 132, 122, 120, 113, 106, 103, 100, 101, 109, + 117, 116, 111, 113, 114, 116, 114, 107, 104, 114, 129, 117, 121, 122, 119, 113, + 113, 118, 123, 120, 120, 116, 109, 106, 110, 112, 110, 97, 107, 90, 84, 70, + 71, 66, 88, 96, 102, 103, 100, 102, 106, 98, 84, 90, 94, 100, 86, 95, + 59, 255, 255, 255, 118, 101, 108, 111, 112, 92, 88, 109, 119, 127, 131, 126, + 132, 145, 146, 132, 124, 128, 115, 129, 127, 114, 112, 111, 108, 111, 63, 44, + 56, 25, 43, 34, 23, 37, 17, 28, 62, 75, 63, 98, 104, 101, 114, 117, + 118, 118, 120, 123, 121, 116, 123, 123, 123, 120, 116, 112, 110, 109, 121, 131, + 134, 132, 132, 137, 138, 132, 134, 122, 98, 97, 111, 113, 126, 117, 123, 124, + 117, 106, 106, 111, 103, 87, 93, 100, 108, 113, 107, 102, 104, 112, 119, 118, + 119, 122, 126, 127, 126, 124, 121, 123, 120, 114, 109, 109, 107, 103, 116, 107, + 85, 70, 65, 72, 78, 85, 77, 81, 80, 73, 73, 83, 91, 90, 94, 95, + 99, 91, 90, 54, 255, 255, 255, 132, 104, 116, 108, 114, 87, 87, 116, 118, + 131, 133, 142, 137, 124, 131, 150, 147, 127, 116, 132, 130, 115, 110, 111, 111, + 117, 91, 63, 48, 17, 29, 28, 23, 38, 19, 23, 54, 66, 71, 101, 109, + 110, 122, 122, 121, 119, 121, 125, 122, 115, 120, 122, 124, 120, 115, 113, 116, + 120, 132, 142, 146, 142, 138, 141, 138, 131, 120, 107, 98, 99, 119, 119, 139, + 125, 101, 103, 101, 94, 92, 98, 106, 110, 91, 87, 88, 99, 108, 106, 102, + 99, 117, 118, 120, 125, 130, 131, 127, 121, 122, 125, 123, 116, 112, 109, 103, + 98, 112, 72, 66, 64, 86, 82, 100, 94, 110, 99, 95, 97, 84, 66, 74, + 99, 97, 93, 91, 87, 77, 118, 255, 255, 255, 140, 113, 116, 110, 118, 90, + 86, 115, 120, 139, 136, 134, 123, 116, 133, 157, 156, 137, 115, 129, 126, 112, + 111, 112, 110, 114, 102, 79, 45, 35, 34, 45, 26, 37, 32, 19, 41, 58, + 83, 103, 109, 119, 120, 121, 120, 119, 122, 127, 124, 118, 117, 121, 123, 121, + 117, 117, 123, 129, 131, 141, 146, 140, 136, 136, 131, 122, 113, 105, 110, 106, + 108, 84, 96, 67, 52, 45, 49, 67, 77, 77, 83, 94, 97, 87, 80, 86, + 96, 102, 105, 107, 112, 116, 119, 124, 126, 126, 126, 124, 127, 130, 128, 122, + 117, 113, 106, 99, 113, 64, 59, 100, 81, 70, 69, 75, 102, 89, 87, 100, + 97, 79, 80, 97, 90, 88, 89, 88, 69, 255, 255, 255, 255, 139, 127, 112, + 114, 116, 94, 90, 113, 127, 140, 146, 114, 106, 135, 151, 138, 128, 134, 112, + 124, 118, 109, 114, 118, 114, 115, 109, 90, 43, 41, 35, 53, 36, 47, 41, + 20, 37, 52, 91, 105, 110, 122, 111, 115, 117, 118, 122, 126, 126, 121, 118, + 122, 124, 123, 120, 122, 128, 135, 130, 140, 145, 139, 134, 133, 127, 118, 117, + 97, 97, 73, 61, 30, 52, 25, 32, 22, 39, 84, 107, 85, 50, 31, 66, + 73, 85, 95, 97, 93, 93, 99, 107, 113, 117, 120, 121, 125, 128, 133, 138, + 139, 136, 128, 120, 117, 111, 105, 108, 72, 58, 137, 44, 38, 10, 39, 60, + 47, 34, 37, 56, 76, 89, 94, 91, 96, 98, 96, 62, 255, 255, 255, 255, + 136, 141, 109, 119, 108, 98, 97, 112, 136, 137, 128, 130, 129, 130, 139, 143, + 127, 105, 117, 123, 113, 106, 118, 127, 124, 121, 115, 98, 60, 47, 48, 46, + 44, 50, 39, 27, 45, 49, 93, 108, 113, 120, 110, 116, 121, 121, 122, 124, + 123, 120, 123, 125, 126, 125, 124, 126, 130, 135, 133, 142, 146, 139, 135, 135, + 129, 120, 129, 100, 97, 69, 64, 44, 87, 66, 45, 38, 55, 99, 128, 112, + 69, 36, 37, 50, 72, 93, 100, 96, 92, 94, 116, 115, 115, 115, 117, 123, + 130, 136, 147, 146, 139, 129, 119, 115, 110, 105, 77, 39, 45, 125, 40, 36, + 23, 43, 105, 89, 64, 44, 37, 44, 63, 79, 93, 103, 102, 92, 47, 255, + 255, 255, 255, 132, 149, 107, 123, 102, 102, 105, 113, 142, 134, 135, 114, 118, + 149, 154, 127, 114, 126, 125, 126, 111, 104, 121, 134, 130, 124, 109, 103, 92, + 73, 80, 47, 44, 36, 31, 35, 56, 46, 91, 109, 115, 114, 116, 123, 128, + 127, 122, 122, 119, 117, 127, 128, 128, 127, 127, 128, 130, 132, 132, 142, 144, + 139, 133, 133, 129, 120, 115, 90, 106, 93, 100, 86, 131, 103, 94, 79, 68, + 73, 91, 96, 84, 68, 45, 41, 47, 68, 93, 108, 112, 115, 128, 122, 115, + 113, 116, 124, 130, 134, 151, 149, 140, 126, 116, 112, 107, 102, 86, 24, 54, + 99, 64, 40, 55, 42, 152, 139, 131, 112, 65, 21, 32, 71, 84, 96, 92, + 79, 34, 255, 255, 255, 255, 142, 136, 126, 118, 100, 119, 89, 139, 141, 123, + 127, 119, 139, 175, 131, 124, 123, 129, 124, 118, 121, 135, 145, 141, 134, 133, + 111, 109, 96, 82, 84, 92, 80, 56, 33, 30, 30, 43, 72, 103, 118, 119, + 115, 116, 117, 118, 120, 121, 122, 123, 128, 129, 129, 128, 128, 129, 134, 138, + 135, 137, 137, 135, 137, 140, 138, 134, 127, 122, 116, 117, 121, 123, 120, 117, + 125, 118, 108, 97, 90, 90, 93, 97, 86, 85, 91, 96, 93, 90, 105, 126, + 130, 115, 110, 118, 121, 116, 122, 136, 143, 149, 147, 134, 119, 110, 106, 104, + 48, 45, 37, 39, 45, 40, 47, 70, 141, 134, 119, 96, 67, 46, 42, 48, + 66, 84, 108, 55, 117, 255, 255, 255, 255, 143, 137, 130, 112, 112, 112, 101, + 140, 143, 125, 124, 117, 137, 173, 145, 141, 130, 121, 125, 117, 122, 140, 151, + 148, 137, 131, 116, 113, 102, 95, 97, 105, 96, 82, 57, 50, 41, 45, 63, + 89, 106, 110, 115, 115, 118, 120, 121, 122, 122, 122, 126, 127, 127, 126, 126, + 127, 132, 136, 137, 138, 138, 135, 137, 140, 138, 134, 126, 122, 119, 118, 121, + 122, 121, 119, 123, 119, 113, 106, 101, 99, 101, 102, 97, 98, 105, 113, 110, + 105, 112, 127, 128, 115, 112, 120, 122, 116, 121, 133, 138, 144, 145, 135, 122, + 112, 102, 97, 50, 53, 50, 50, 55, 52, 55, 69, 105, 79, 59, 62, 75, + 76, 58, 41, 62, 82, 102, 48, 255, 255, 255, 255, 255, 143, 138, 136, 108, + 120, 104, 109, 140, 139, 123, 125, 130, 152, 168, 136, 135, 140, 140, 125, 120, + 127, 148, 160, 154, 140, 132, 118, 111, 102, 102, 103, 107, 104, 102, 100, 95, + 87, 85, 93, 109, 121, 124, 115, 117, 120, 122, 123, 123, 122, 121, 126, 127, + 127, 127, 126, 128, 131, 135, 139, 140, 139, 136, 136, 139, 137, 132, 128, 127, + 126, 125, 125, 125, 126, 126, 123, 122, 119, 116, 113, 111, 110, 109, 105, 103, + 107, 113, 112, 108, 112, 123, 127, 117, 115, 122, 123, 116, 119, 129, 132, 138, + 139, 134, 125, 114, 98, 88, 75, 90, 91, 87, 92, 92, 91, 96, 97, 83, + 75, 83, 96, 96, 85, 75, 68, 87, 92, 41, 255, 255, 255, 255, 255, 143, + 138, 139, 112, 119, 106, 107, 142, 127, 120, 116, 127, 147, 156, 138, 138, 140, + 134, 123, 123, 134, 155, 166, 156, 143, 136, 121, 110, 101, 103, 103, 100, 100, + 107, 99, 103, 106, 108, 112, 118, 121, 119, 116, 118, 122, 124, 125, 123, 121, + 119, 128, 129, 130, 130, 130, 131, 134, 136, 141, 141, 139, 136, 136, 139, 137, + 132, 132, 133, 133, 132, 130, 130, 131, 132, 124, 122, 119, 118, 116, 115, 113, + 112, 109, 102, 98, 99, 100, 102, 111, 120, 125, 119, 119, 125, 123, 116, 117, + 125, 130, 134, 135, 131, 125, 116, 99, 84, 83, 104, 107, 100, 105, 109, 105, + 103, 96, 100, 103, 102, 92, 84, 85, 92, 82, 95, 81, 110, 255, 255, 255, + 255, 255, 143, 139, 140, 124, 109, 112, 98, 139, 114, 118, 119, 122, 141, 165, + 189, 190, 164, 126, 120, 125, 141, 161, 166, 155, 144, 142, 126, 113, 103, 106, + 104, 99, 102, 111, 87, 96, 104, 110, 114, 117, 116, 111, 118, 119, 122, 124, + 125, 123, 120, 118, 128, 129, 131, 131, 131, 132, 134, 136, 141, 141, 138, 134, + 135, 138, 137, 133, 133, 134, 135, 134, 131, 130, 130, 131, 125, 120, 115, 113, + 113, 113, 113, 111, 110, 104, 100, 101, 104, 108, 115, 122, 126, 123, 124, 127, + 124, 117, 116, 122, 130, 132, 131, 127, 124, 117, 103, 89, 82, 104, 105, 95, + 100, 108, 105, 102, 102, 96, 93, 96, 96, 93, 89, 91, 91, 95, 63, 255, + 255, 255, 255, 255, 255, 143, 139, 137, 136, 101, 116, 97, 129, 113, 118, 117, + 120, 139, 156, 190, 189, 178, 154, 122, 125, 139, 157, 163, 154, 146, 146, 125, + 114, 104, 104, 103, 101, 104, 111, 101, 106, 112, 114, 118, 125, 125, 122, 120, + 120, 122, 123, 123, 121, 119, 118, 125, 127, 129, 130, 129, 130, 132, 134, 141, + 141, 138, 134, 135, 139, 139, 135, 134, 134, 133, 132, 131, 129, 127, 125, 123, + 118, 111, 109, 110, 113, 113, 112, 105, 107, 110, 113, 116, 117, 119, 120, 127, + 127, 129, 129, 124, 117, 116, 121, 128, 131, 130, 126, 124, 119, 107, 96, 86, + 105, 105, 96, 100, 107, 106, 106, 109, 101, 96, 99, 104, 104, 102, 102, 92, + 89, 45, 255, 255, 255, 255, 255, 255, 143, 140, 134, 145, 100, 114, 107, 115, + 125, 123, 106, 111, 122, 113, 130, 122, 142, 155, 129, 123, 129, 149, 160, 157, + 149, 145, 125, 116, 105, 102, 102, 104, 105, 105, 104, 106, 108, 109, 114, 123, + 124, 121, 122, 121, 121, 121, 120, 119, 118, 117, 125, 127, 130, 130, 130, 130, + 131, 133, 140, 140, 137, 134, 135, 140, 139, 136, 139, 136, 133, 133, 133, 131, + 127, 122, 121, 114, 109, 109, 113, 117, 117, 115, 105, 111, 116, 118, 118, 119, + 120, 121, 130, 130, 132, 130, 123, 117, 117, 122, 123, 128, 129, 127, 124, 119, + 109, 100, 80, 94, 94, 89, 94, 97, 96, 100, 102, 101, 101, 102, 97, 92, + 93, 100, 94, 88, 40, 255, 255, 255, 255, 255, 255, 143, 140, 132, 148, 102, + 109, 118, 103, 137, 126, 124, 119, 120, 104, 118, 101, 117, 131, 135, 122, 121, + 140, 159, 160, 150, 143, 132, 124, 112, 105, 105, 109, 107, 102, 104, 107, 110, + 113, 121, 127, 125, 119, 123, 121, 120, 119, 118, 118, 117, 117, 127, 129, 132, + 133, 133, 133, 133, 135, 139, 140, 137, 133, 135, 140, 140, 137, 145, 140, 136, + 136, 138, 136, 129, 121, 117, 113, 110, 113, 118, 122, 121, 119, 115, 119, 121, + 118, 117, 120, 125, 129, 131, 133, 134, 131, 123, 117, 118, 123, 118, 125, 130, + 129, 125, 119, 109, 100, 85, 97, 98, 97, 101, 100, 98, 106, 107, 101, 98, + 102, 103, 100, 96, 94, 99, 93, 45, 255, 255, 255, 255, 255, 255, 140, 141, + 134, 144, 121, 105, 107, 126, 93, 127, 130, 130, 124, 119, 122, 125, 111, 93, + 108, 104, 92, 128, 158, 156, 157, 135, 126, 123, 111, 101, 101, 109, 112, 109, + 106, 107, 109, 111, 115, 119, 121, 123, 121, 124, 125, 124, 120, 118, 118, 119, + 126, 127, 128, 128, 129, 131, 134, 138, 140, 139, 138, 136, 136, 136, 138, 138, + 133, 140, 143, 139, 137, 137, 133, 126, 116, 109, 104, 108, 112, 114, 115, 119, + 115, 118, 120, 124, 125, 127, 127, 128, 130, 129, 129, 128, 121, 114, 116, 123, + 119, 117, 120, 128, 127, 117, 107, 106, 90, 81, 97, 99, 96, 107, 107, 112, + 110, 109, 107, 106, 106, 102, 94, 89, 88, 89, 49, 255, 255, 255, 255, 255, + 255, 141, 142, 140, 135, 134, 126, 109, 135, 113, 110, 121, 123, 120, 117, 126, + 137, 137, 128, 102, 100, 91, 122, 149, 151, 157, 142, 126, 123, 111, 102, 101, + 108, 110, 108, 106, 107, 109, 111, 115, 118, 121, 123, 118, 121, 123, 123, 121, + 120, 119, 121, 125, 127, 127, 128, 129, 131, 133, 136, 139, 139, 139, 138, 139, + 139, 140, 140, 137, 143, 145, 141, 139, 139, 135, 130, 124, 116, 110, 110, 112, + 112, 112, 114, 116, 119, 123, 127, 130, 130, 130, 130, 136, 133, 131, 127, 120, + 115, 117, 125, 120, 119, 121, 128, 127, 119, 110, 109, 96, 84, 97, 98, 95, + 105, 105, 112, 112, 110, 108, 109, 109, 104, 95, 90, 91, 91, 117, 255, 255, + 255, 255, 255, 255, 255, 142, 147, 129, 144, 141, 105, 134, 133, 108, 124, 128, + 127, 124, 130, 144, 150, 147, 124, 122, 114, 130, 142, 142, 149, 143, 128, 123, + 111, 104, 102, 107, 108, 107, 105, 107, 109, 112, 115, 118, 120, 121, 113, 118, + 121, 123, 122, 122, 121, 121, 125, 126, 127, 128, 127, 129, 132, 135, 138, 138, + 140, 141, 141, 142, 142, 142, 144, 147, 145, 142, 140, 139, 136, 132, 129, 120, + 114, 114, 115, 113, 112, 113, 118, 121, 127, 132, 135, 136, 134, 133, 139, 136, + 130, 127, 119, 115, 118, 126, 120, 119, 121, 127, 126, 120, 112, 111, 103, 87, + 98, 97, 94, 103, 104, 111, 112, 111, 110, 110, 110, 105, 96, 91, 91, 89, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 133, 143, 139, 101, 107, 127, + 129, 129, 130, 128, 123, 129, 141, 145, 140, 142, 142, 138, 140, 139, 135, 137, + 137, 129, 123, 111, 105, 103, 107, 107, 106, 105, 106, 109, 112, 114, 116, 118, + 119, 113, 116, 119, 122, 122, 122, 120, 120, 124, 126, 127, 128, 127, 129, 131, + 134, 137, 139, 141, 143, 144, 145, 144, 144, 145, 144, 140, 137, 135, 133, 129, + 125, 126, 119, 114, 115, 118, 117, 116, 118, 117, 122, 128, 135, 138, 138, 137, + 135, 136, 132, 129, 126, 121, 116, 118, 124, 118, 118, 119, 123, 124, 120, 115, + 111, 102, 85, 97, 101, 98, 106, 104, 112, 112, 111, 110, 111, 111, 105, 96, + 91, 86, 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 144, 142, 135, + 110, 67, 86, 136, 130, 129, 122, 116, 123, 137, 143, 138, 134, 136, 142, 139, + 135, 135, 132, 135, 129, 122, 111, 107, 105, 107, 105, 106, 105, 106, 109, 112, + 114, 115, 116, 116, 114, 115, 118, 121, 122, 121, 119, 118, 125, 127, 128, 128, + 128, 129, 131, 133, 137, 138, 141, 143, 145, 145, 145, 145, 142, 138, 134, 133, + 131, 127, 123, 120, 125, 118, 114, 117, 120, 119, 118, 120, 116, 121, 127, 133, + 137, 137, 136, 135, 129, 127, 126, 126, 123, 117, 116, 119, 114, 116, 117, 118, + 120, 119, 115, 111, 99, 82, 97, 104, 104, 109, 105, 112, 111, 110, 108, 109, + 108, 103, 95, 90, 84, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 144, 140, 124, 37, 37, 104, 128, 130, 126, 119, 123, 136, 144, 143, 133, + 134, 146, 138, 134, 139, 129, 133, 128, 120, 110, 108, 106, 106, 105, 108, 105, + 106, 109, 113, 113, 114, 114, 114, 114, 114, 115, 117, 119, 121, 119, 118, 126, + 128, 129, 130, 130, 130, 131, 133, 137, 138, 140, 142, 143, 144, 144, 144, 148, + 142, 140, 142, 143, 138, 132, 130, 132, 124, 120, 121, 123, 120, 118, 118, 118, + 121, 127, 132, 135, 136, 135, 133, 126, 124, 124, 126, 123, 117, 113, 115, 111, + 114, 114, 114, 116, 119, 116, 111, 98, 79, 96, 108, 109, 113, 108, 114, 111, + 109, 107, 106, 106, 102, 95, 91, 86, 70, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 218, 145, 132, 28, 14, 54, 88, 106, 123, 127, 128, 136, + 141, 141, 143, 139, 151, 139, 137, 146, 130, 132, 127, 118, 109, 109, 108, 107, + 105, 109, 104, 106, 109, 113, 113, 113, 113, 112, 113, 111, 111, 113, 118, 122, + 122, 121, 127, 130, 131, 132, 131, 131, 131, 133, 138, 138, 138, 139, 140, 141, + 142, 143, 150, 144, 144, 151, 155, 151, 145, 143, 138, 131, 126, 127, 127, 123, + 120, 119, 120, 123, 127, 131, 133, 134, 134, 134, 131, 126, 123, 123, 120, 113, + 110, 111, 109, 112, 113, 112, 114, 119, 116, 112, 102, 80, 94, 106, 109, 113, + 108, 116, 114, 110, 105, 104, 104, 101, 95, 92, 83, 63, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 145, 131, 31, 13, 23, 22, 62, 106, + 127, 132, 135, 137, 137, 142, 135, 147, 134, 137, 152, 136, 138, 127, 117, 108, + 109, 109, 107, 107, 110, 104, 106, 109, 112, 113, 113, 112, 111, 111, 109, 108, + 111, 117, 123, 125, 125, 128, 130, 133, 133, 133, 132, 133, 134, 139, 138, 137, + 137, 137, 139, 141, 142, 141, 136, 138, 148, 155, 151, 146, 145, 140, 134, 129, + 131, 132, 128, 124, 124, 123, 124, 127, 130, 133, 134, 134, 134, 138, 130, 124, + 121, 117, 111, 108, 109, 109, 113, 113, 111, 114, 120, 119, 113, 106, 82, 94, + 106, 109, 113, 109, 119, 116, 110, 105, 103, 104, 101, 97, 94, 79, 55, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 116, 20, 22, 24, + 20, 37, 63, 112, 126, 144, 136, 141, 146, 147, 146, 145, 143, 145, 141, 135, + 126, 114, 105, 108, 108, 105, 106, 113, 108, 108, 109, 111, 114, 115, 113, 110, + 109, 108, 107, 109, 113, 120, 125, 129, 131, 133, 135, 134, 132, 133, 137, 141, + 134, 136, 137, 135, 136, 140, 140, 138, 148, 140, 136, 143, 157, 165, 161, 155, + 146, 133, 132, 137, 135, 133, 130, 120, 120, 121, 125, 134, 141, 142, 136, 130, + 133, 131, 127, 121, 115, 112, 110, 111, 111, 112, 111, 111, 116, 122, 121, 116, + 106, 87, 82, 103, 119, 117, 112, 117, 120, 105, 102, 109, 104, 100, 99, 93, + 86, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, + 35, 17, 23, 17, 29, 42, 79, 88, 108, 109, 122, 126, 127, 127, 126, 130, + 134, 133, 130, 123, 115, 108, 108, 109, 108, 107, 109, 106, 106, 107, 110, 113, + 114, 111, 110, 111, 109, 108, 109, 112, 117, 122, 125, 130, 133, 135, 134, 133, + 132, 134, 137, 137, 140, 140, 138, 138, 142, 143, 140, 148, 141, 134, 136, 145, + 157, 164, 167, 153, 136, 132, 134, 130, 130, 131, 124, 125, 122, 121, 123, 127, + 132, 133, 133, 130, 128, 124, 117, 112, 108, 107, 108, 108, 111, 112, 112, 116, + 122, 123, 119, 108, 88, 85, 104, 122, 121, 117, 118, 124, 110, 107, 111, 106, + 102, 100, 94, 87, 32, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 111, 43, 16, 14, 22, 33, 41, 68, 68, 89, 94, 110, 98, 100, + 98, 94, 96, 99, 98, 95, 113, 115, 112, 108, 108, 111, 109, 105, 105, 105, + 107, 109, 112, 113, 111, 110, 112, 111, 108, 109, 111, 115, 118, 121, 127, 131, + 135, 135, 133, 131, 132, 134, 138, 141, 141, 138, 139, 143, 143, 141, 143, 140, + 135, 135, 140, 148, 157, 163, 148, 134, 130, 133, 128, 127, 126, 119, 119, 118, + 116, 116, 119, 123, 127, 129, 125, 122, 118, 112, 108, 104, 106, 107, 105, 109, + 114, 113, 115, 121, 124, 123, 111, 92, 87, 104, 123, 125, 121, 121, 126, 112, + 110, 113, 107, 103, 100, 91, 76, 21, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 36, 23, 6, 27, 45, 59, 85, 81, 96, 97, + 110, 125, 127, 127, 125, 125, 128, 124, 117, 98, 110, 115, 108, 104, 109, 110, + 106, 106, 106, 107, 110, 113, 114, 112, 111, 110, 109, 108, 108, 110, 114, 117, + 119, 124, 129, 134, 136, 134, 133, 133, 135, 136, 140, 139, 136, 137, 140, 141, + 138, 136, 136, 138, 141, 142, 144, 141, 139, 137, 126, 126, 132, 126, 122, 119, + 110, 109, 113, 118, 121, 120, 119, 117, 115, 116, 115, 112, 108, 105, 103, 106, + 106, 104, 111, 117, 115, 115, 120, 123, 125, 115, 97, 88, 98, 116, 125, 125, + 123, 121, 110, 109, 112, 106, 102, 98, 87, 75, 18, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, 22, 12, 25, 48, 66, 91, + 86, 100, 101, 111, 112, 118, 125, 129, 133, 135, 130, 123, 84, 102, 112, 106, + 99, 104, 109, 111, 107, 107, 109, 112, 115, 116, 114, 114, 108, 108, 108, 109, + 111, 115, 117, 120, 123, 128, 134, 136, 135, 134, 136, 138, 137, 140, 140, 137, + 137, 141, 140, 137, 137, 136, 137, 142, 146, 144, 135, 127, 135, 121, 120, 122, + 115, 111, 110, 104, 111, 115, 121, 122, 118, 112, 106, 103, 105, 106, 105, 102, + 101, 101, 104, 107, 109, 115, 118, 115, 115, 119, 123, 122, 119, 103, 88, 90, + 105, 118, 125, 125, 118, 109, 109, 111, 106, 105, 100, 88, 79, 27, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 26, 17, 25, 27, + 49, 60, 81, 77, 98, 102, 114, 118, 126, 134, 141, 143, 144, 135, 127, 84, + 95, 104, 102, 99, 102, 108, 112, 107, 108, 109, 113, 116, 118, 116, 115, 108, + 108, 108, 110, 112, 115, 118, 119, 124, 129, 134, 136, 134, 134, 136, 139, 138, + 141, 141, 138, 139, 142, 141, 138, 142, 138, 134, 137, 141, 144, 138, 132, 136, + 120, 113, 110, 102, 102, 109, 108, 124, 122, 118, 114, 109, 106, 102, 100, 101, + 101, 100, 99, 97, 100, 103, 106, 111, 115, 118, 116, 117, 121, 123, 121, 122, + 109, 92, 86, 95, 110, 120, 122, 117, 111, 112, 114, 109, 108, 103, 87, 58, + 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 24, + 19, 29, 38, 54, 59, 74, 72, 97, 105, 116, 120, 128, 135, 138, 140, 139, + 130, 121, 95, 92, 92, 98, 102, 104, 106, 109, 106, 107, 108, 112, 116, 117, + 115, 115, 110, 110, 111, 112, 112, 115, 117, 118, 128, 131, 134, 133, 131, 131, + 133, 136, 137, 140, 140, 137, 137, 140, 140, 137, 143, 140, 136, 134, 135, 136, + 134, 133, 124, 110, 108, 110, 105, 108, 117, 117, 125, 119, 110, 106, 106, 107, + 106, 104, 106, 105, 104, 102, 102, 103, 106, 109, 111, 114, 116, 114, 118, 124, + 124, 121, 120, 113, 100, 88, 91, 104, 115, 115, 116, 112, 114, 113, 107, 108, + 101, 83, 27, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 102, 20, 27, 22, 42, 58, 60, 75, 73, 98, 103, 112, 117, 123, 131, + 136, 142, 145, 140, 132, 107, 92, 84, 95, 106, 108, 104, 105, 105, 105, 107, + 111, 115, 116, 114, 114, 113, 113, 113, 113, 113, 114, 115, 115, 131, 133, 134, + 132, 128, 128, 130, 133, 135, 138, 137, 134, 134, 138, 137, 134, 138, 140, 140, + 138, 131, 126, 124, 124, 104, 98, 106, 117, 117, 120, 126, 123, 113, 108, 104, + 106, 110, 114, 112, 109, 113, 113, 112, 110, 108, 108, 111, 114, 111, 112, 112, + 113, 120, 127, 127, 122, 118, 116, 106, 91, 89, 101, 110, 111, 114, 111, 113, + 112, 105, 105, 97, 78, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 137, 24, 28, 13, 36, 56, 70, 68, 92, 79, 105, 109, + 119, 124, 130, 136, 143, 147, 142, 133, 113, 84, 80, 99, 105, 102, 105, 109, + 101, 104, 109, 112, 114, 115, 115, 118, 111, 113, 114, 113, 113, 113, 114, 116, + 132, 132, 132, 133, 133, 133, 132, 132, 135, 133, 131, 133, 138, 140, 138, 136, + 141, 138, 135, 135, 126, 114, 104, 102, 133, 131, 129, 129, 129, 129, 126, 124, + 136, 116, 101, 104, 114, 121, 121, 121, 122, 121, 118, 115, 111, 112, 114, 116, + 118, 110, 113, 116, 118, 127, 133, 124, 124, 109, 105, 101, 88, 86, 99, 107, + 113, 99, 106, 110, 105, 91, 104, 36, 18, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 133, 51, 22, 15, 35, 67, 56, 73, 67, + 84, 94, 108, 119, 125, 129, 132, 137, 142, 141, 136, 111, 82, 78, 96, 102, + 100, 103, 106, 101, 104, 107, 110, 111, 112, 112, 112, 113, 114, 116, 116, 115, + 116, 117, 119, 132, 133, 134, 134, 132, 131, 131, 133, 135, 135, 134, 135, 136, + 138, 140, 143, 145, 136, 127, 123, 119, 118, 121, 127, 128, 127, 128, 129, 132, + 135, 135, 134, 128, 131, 119, 103, 106, 124, 128, 116, 118, 122, 124, 118, 111, + 113, 124, 135, 119, 108, 115, 129, 128, 126, 132, 136, 127, 114, 112, 98, 94, + 92, 104, 99, 110, 103, 107, 104, 101, 99, 95, 41, 106, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 71, 15, 13, 45, 81, + 67, 74, 63, 83, 97, 111, 119, 124, 128, 128, 130, 136, 140, 139, 111, 83, + 78, 95, 100, 100, 103, 105, 103, 104, 107, 110, 111, 112, 111, 111, 114, 115, + 117, 118, 117, 118, 120, 122, 126, 131, 136, 136, 131, 130, 134, 138, 136, 137, + 137, 136, 136, 137, 140, 144, 136, 127, 118, 115, 117, 124, 134, 145, 135, 133, + 132, 133, 135, 136, 135, 132, 130, 140, 133, 115, 110, 121, 125, 118, 129, 134, + 136, 133, 124, 118, 117, 119, 118, 112, 115, 122, 127, 137, 136, 120, 132, 117, + 120, 97, 100, 92, 105, 91, 110, 109, 108, 102, 95, 104, 72, 45, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 60, 18, + 9, 50, 81, 90, 68, 77, 70, 106, 112, 117, 125, 129, 128, 129, 134, 138, + 139, 113, 87, 81, 95, 101, 102, 106, 106, 104, 105, 107, 111, 115, 116, 115, + 114, 114, 115, 118, 119, 118, 119, 120, 122, 120, 128, 135, 135, 131, 130, 136, + 142, 138, 137, 137, 137, 138, 137, 136, 134, 119, 117, 116, 121, 126, 129, 135, + 140, 140, 138, 135, 135, 136, 136, 134, 133, 137, 131, 129, 132, 123, 110, 108, + 117, 115, 113, 113, 117, 124, 127, 125, 121, 124, 134, 135, 130, 157, 205, 205, + 157, 132, 115, 123, 102, 102, 83, 99, 92, 113, 110, 107, 105, 95, 96, 42, + 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 139, 37, 37, 21, 37, 77, 95, 75, 77, 62, 96, 106, 115, 124, 130, 130, + 131, 134, 136, 135, 113, 88, 82, 93, 98, 102, 106, 105, 101, 101, 104, 110, + 116, 119, 118, 117, 113, 115, 118, 119, 119, 119, 119, 120, 122, 129, 135, 135, + 129, 128, 133, 139, 139, 136, 135, 137, 139, 136, 128, 120, 115, 116, 121, 130, + 134, 133, 133, 135, 134, 133, 133, 135, 139, 141, 141, 140, 132, 124, 125, 133, + 128, 109, 100, 102, 114, 109, 103, 98, 98, 102, 109, 113, 106, 119, 118, 106, + 124, 169, 172, 131, 133, 115, 122, 112, 100, 75, 93, 104, 109, 102, 100, 111, + 98, 77, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 209, 28, 58, 45, 33, 80, 83, 98, 74, 73, 82, 102, 114, + 123, 129, 132, 133, 135, 133, 129, 110, 87, 80, 89, 94, 100, 104, 101, 97, + 97, 100, 107, 114, 119, 118, 116, 113, 115, 118, 119, 118, 117, 116, 117, 128, + 131, 135, 133, 127, 124, 126, 130, 137, 135, 135, 136, 136, 131, 123, 115, 126, + 125, 128, 135, 137, 136, 137, 140, 141, 138, 137, 138, 139, 140, 140, 139, 128, + 134, 136, 131, 128, 125, 114, 96, 111, 121, 127, 116, 95, 80, 81, 87, 112, + 113, 118, 117, 110, 117, 128, 126, 128, 118, 119, 117, 90, 79, 93, 112, 101, + 96, 97, 107, 92, 53, 21, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 35, 60, 63, 45, 81, 81, 107, 89, 82, + 79, 96, 115, 121, 125, 127, 131, 134, 132, 126, 110, 88, 80, 88, 93, 100, + 104, 101, 99, 98, 100, 106, 115, 119, 117, 115, 115, 116, 119, 120, 119, 117, + 115, 115, 128, 130, 130, 130, 128, 126, 125, 127, 133, 135, 137, 135, 129, 124, + 123, 123, 131, 129, 130, 136, 138, 139, 141, 145, 150, 146, 143, 142, 141, 139, + 136, 134, 135, 140, 141, 137, 133, 131, 123, 111, 92, 106, 121, 123, 113, 101, + 96, 97, 89, 85, 99, 115, 112, 112, 128, 140, 116, 123, 110, 108, 69, 90, + 97, 108, 97, 102, 101, 95, 76, 28, 106, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 49, 67, 58, 72, 87, + 95, 110, 74, 84, 86, 117, 120, 121, 123, 129, 134, 132, 125, 113, 90, 83, + 90, 95, 102, 106, 102, 103, 102, 103, 109, 117, 121, 119, 116, 116, 118, 121, + 121, 119, 117, 115, 115, 123, 124, 125, 127, 129, 129, 130, 129, 130, 137, 140, + 134, 123, 119, 125, 134, 127, 126, 130, 138, 141, 140, 141, 144, 145, 143, 142, + 143, 144, 145, 144, 142, 141, 129, 130, 141, 138, 120, 117, 127, 117, 108, 100, + 99, 105, 109, 107, 103, 96, 91, 97, 105, 109, 118, 120, 109, 105, 125, 103, + 97, 52, 99, 99, 99, 98, 114, 109, 86, 62, 13, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 53, 74, + 69, 57, 80, 109, 102, 92, 94, 93, 103, 109, 116, 122, 129, 133, 132, 129, + 108, 90, 87, 94, 95, 100, 106, 105, 102, 105, 108, 114, 119, 120, 119, 118, + 117, 117, 118, 117, 116, 117, 119, 121, 125, 127, 127, 126, 124, 125, 130, 134, + 138, 134, 139, 128, 110, 122, 130, 112, 118, 134, 131, 132, 133, 137, 150, 142, + 146, 148, 142, 156, 140, 144, 129, 137, 143, 135, 133, 139, 143, 138, 133, 130, + 117, 121, 119, 110, 98, 97, 102, 109, 119, 92, 74, 82, 104, 118, 118, 115, + 119, 98, 76, 72, 84, 98, 105, 106, 116, 106, 108, 78, 32, 110, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 192, 49, 67, 77, 61, 73, 103, 110, 99, 99, 106, 94, 101, 114, 125, 130, + 131, 133, 134, 113, 93, 87, 92, 94, 99, 107, 107, 103, 104, 107, 112, 118, + 121, 121, 120, 118, 119, 119, 118, 117, 117, 118, 121, 124, 126, 127, 126, 124, + 124, 128, 133, 135, 133, 137, 126, 112, 122, 130, 113, 112, 122, 118, 131, 135, + 133, 140, 129, 142, 139, 143, 139, 155, 139, 153, 144, 129, 126, 128, 136, 139, + 133, 127, 124, 118, 120, 117, 107, 97, 92, 94, 98, 98, 89, 88, 100, 113, + 113, 105, 98, 77, 79, 79, 77, 84, 95, 100, 98, 130, 118, 89, 52, 28, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 46, 66, 82, 70, 69, 90, 109, 102, 99, 113, 93, 96, + 109, 125, 132, 129, 130, 135, 118, 94, 85, 91, 93, 98, 106, 108, 104, 104, + 107, 110, 116, 120, 121, 121, 120, 121, 121, 119, 118, 117, 118, 120, 122, 125, + 127, 126, 123, 123, 126, 129, 130, 132, 134, 123, 113, 122, 127, 115, 126, 119, + 105, 120, 129, 128, 144, 147, 130, 154, 149, 158, 146, 133, 147, 142, 148, 145, + 144, 144, 140, 131, 124, 122, 117, 115, 111, 105, 98, 92, 90, 90, 81, 82, + 87, 93, 93, 84, 74, 72, 73, 78, 77, 75, 84, 101, 109, 106, 133, 111, + 58, 24, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 46, 66, 81, 88, 80, 83, 103, 105, 100, + 112, 104, 97, 102, 119, 129, 127, 127, 132, 120, 94, 85, 93, 95, 98, 104, + 106, 105, 104, 106, 109, 115, 119, 121, 121, 121, 122, 122, 121, 119, 118, 118, + 119, 120, 124, 126, 126, 123, 121, 123, 125, 126, 132, 131, 119, 114, 123, 125, + 116, 116, 102, 85, 100, 104, 93, 111, 125, 149, 140, 127, 120, 159, 139, 171, + 140, 146, 146, 145, 142, 137, 132, 129, 130, 114, 111, 109, 109, 106, 102, 98, + 98, 97, 97, 95, 91, 84, 80, 81, 86, 93, 84, 78, 85, 101, 112, 116, + 116, 127, 85, 34, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 51, 54, 70, 100, 98, 82, + 95, 109, 108, 111, 116, 101, 95, 108, 123, 128, 129, 131, 120, 93, 86, 97, + 99, 98, 101, 102, 105, 104, 105, 108, 113, 118, 120, 121, 120, 122, 123, 122, + 119, 118, 117, 118, 121, 124, 126, 125, 122, 120, 121, 123, 123, 133, 130, 116, + 116, 124, 123, 118, 102, 96, 91, 114, 108, 80, 88, 101, 77, 96, 91, 123, + 123, 126, 133, 129, 150, 153, 154, 150, 142, 135, 128, 125, 118, 113, 111, 116, + 116, 112, 109, 109, 108, 107, 103, 96, 90, 88, 90, 94, 86, 81, 89, 114, + 124, 116, 114, 123, 113, 53, 25, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 44, 55, + 92, 101, 82, 82, 102, 110, 108, 118, 105, 93, 96, 112, 128, 134, 133, 123, + 93, 86, 99, 101, 98, 99, 100, 103, 103, 105, 109, 114, 118, 120, 118, 118, + 120, 122, 121, 119, 118, 117, 118, 123, 125, 126, 124, 120, 119, 120, 123, 121, + 136, 129, 114, 119, 125, 121, 120, 114, 110, 106, 128, 124, 104, 122, 143, 102, + 97, 103, 100, 98, 91, 109, 130, 123, 130, 137, 140, 141, 140, 133, 126, 125, + 118, 117, 121, 122, 114, 112, 115, 112, 116, 115, 104, 92, 82, 76, 73, 86, + 92, 109, 127, 124, 112, 118, 138, 73, 22, 98, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 58, 59, 79, 95, 89, 78, 92, 108, 108, 115, 112, 100, 93, 102, 122, + 132, 130, 127, 95, 84, 97, 100, 96, 98, 100, 101, 102, 105, 109, 115, 118, + 118, 117, 115, 118, 120, 121, 119, 118, 117, 118, 125, 127, 126, 123, 119, 118, + 121, 124, 121, 139, 130, 113, 121, 125, 119, 122, 121, 111, 96, 112, 115, 112, + 143, 169, 146, 85, 170, 125, 225, 130, 119, 70, 89, 93, 94, 99, 111, 124, + 128, 127, 125, 118, 116, 121, 119, 110, 109, 116, 118, 122, 116, 97, 80, 74, + 75, 78, 107, 116, 123, 123, 119, 116, 115, 117, 36, 15, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 84, 78, 79, 97, 101, 84, 89, 109, 112, 112, 117, 108, + 92, 93, 114, 126, 124, 131, 96, 83, 95, 97, 95, 98, 102, 100, 102, 105, + 110, 116, 118, 117, 116, 113, 116, 119, 120, 119, 118, 117, 118, 127, 128, 126, + 123, 118, 118, 121, 125, 123, 141, 130, 113, 122, 126, 118, 122, 131, 120, 102, + 115, 118, 113, 137, 155, 142, 114, 143, 156, 139, 144, 107, 156, 153, 140, 116, + 94, 88, 95, 98, 95, 120, 112, 112, 118, 115, 106, 108, 116, 95, 95, 84, + 60, 45, 54, 77, 95, 117, 129, 130, 125, 128, 129, 99, 60, 25, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 75, 82, 77, 85, 101, 98, 82, 87, 111, + 121, 125, 118, 99, 96, 112, 126, 129, 129, 114, 90, 86, 97, 100, 97, 104, + 88, 99, 109, 112, 116, 118, 115, 107, 121, 122, 123, 121, 119, 116, 115, 115, + 127, 128, 127, 125, 123, 123, 124, 126, 132, 135, 132, 122, 114, 118, 126, 132, + 130, 125, 115, 106, 103, 114, 134, 151, 131, 130, 141, 151, 165, 157, 136, 155, + 158, 168, 116, 129, 141, 86, 77, 89, 88, 95, 98, 92, 103, 96, 73, 80, + 67, 67, 42, 56, 52, 79, 94, 99, 110, 131, 125, 124, 132, 116, 63, 34, + 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 85, 78, 80, 97, 99, + 77, 77, 107, 115, 123, 121, 106, 97, 105, 120, 128, 128, 119, 97, 87, 97, + 102, 100, 103, 90, 99, 108, 111, 114, 117, 115, 108, 116, 117, 119, 119, 117, + 116, 115, 116, 124, 125, 124, 123, 122, 122, 124, 126, 131, 135, 133, 123, 116, + 119, 126, 131, 131, 127, 118, 108, 101, 104, 114, 125, 102, 97, 142, 173, 162, + 147, 147, 167, 157, 196, 159, 144, 151, 142, 149, 131, 89, 76, 67, 79, 85, + 77, 95, 127, 120, 48, 48, 75, 66, 79, 81, 98, 122, 121, 126, 132, 109, + 104, 23, 37, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 84, + 78, 91, 101, 81, 74, 103, 109, 119, 124, 116, 101, 100, 112, 126, 128, 127, + 106, 89, 96, 104, 103, 103, 94, 100, 106, 108, 112, 114, 114, 110, 110, 113, + 115, 116, 116, 116, 116, 117, 121, 122, 122, 122, 121, 121, 124, 126, 131, 134, + 133, 124, 118, 121, 126, 129, 129, 128, 122, 113, 103, 99, 99, 104, 109, 71, + 116, 165, 158, 152, 153, 151, 151, 162, 155, 183, 182, 151, 158, 154, 144, 193, + 190, 156, 118, 116, 135, 104, 113, 15, 56, 80, 70, 76, 79, 103, 126, 128, + 130, 112, 128, 26, 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 87, 94, 83, 82, 97, 90, 80, 98, 107, 113, 122, 121, 109, 100, 106, + 120, 127, 133, 114, 90, 92, 102, 105, 105, 99, 101, 105, 107, 110, 111, 112, + 111, 109, 112, 114, 115, 115, 115, 115, 116, 119, 120, 121, 121, 121, 122, 125, + 127, 131, 134, 133, 125, 120, 123, 126, 128, 129, 128, 126, 120, 111, 104, 101, + 101, 101, 87, 127, 145, 118, 111, 127, 152, 138, 158, 169, 183, 178, 173, 177, + 141, 128, 158, 152, 156, 130, 117, 145, 110, 56, 20, 72, 71, 66, 69, 88, + 106, 119, 148, 110, 112, 77, 24, 113, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 82, 98, 89, 74, 86, 97, 92, 89, 106, 109, 117, 121, + 116, 108, 107, 113, 126, 135, 120, 94, 91, 99, 104, 108, 101, 101, 104, 107, + 109, 109, 109, 110, 112, 114, 115, 115, 114, 113, 113, 114, 119, 121, 121, 121, + 121, 123, 126, 128, 133, 135, 132, 125, 121, 124, 126, 128, 130, 130, 128, 123, + 117, 111, 107, 106, 119, 99, 92, 89, 108, 119, 101, 103, 142, 132, 141, 162, + 161, 166, 177, 154, 158, 166, 143, 155, 143, 126, 121, 54, 44, 66, 81, 62, + 73, 64, 91, 111, 126, 122, 127, 74, 20, 60, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 197, 93, 91, 74, 73, 93, 98, 81, 104, + 107, 112, 117, 119, 117, 113, 109, 121, 134, 125, 105, 97, 97, 101, 110, 103, + 101, 103, 107, 109, 106, 106, 109, 112, 114, 115, 115, 113, 111, 110, 111, 119, + 121, 121, 121, 121, 122, 125, 128, 135, 136, 131, 124, 121, 125, 127, 128, 133, + 132, 129, 126, 120, 115, 110, 106, 85, 101, 104, 85, 89, 93, 80, 99, 123, + 84, 97, 146, 154, 137, 143, 154, 131, 169, 161, 142, 120, 111, 95, 29, 67, + 88, 65, 54, 78, 69, 91, 120, 132, 110, 111, 37, 19, 116, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 90, 85, 70, 85, + 98, 80, 99, 107, 114, 114, 119, 124, 119, 110, 115, 130, 131, 120, 110, 98, + 96, 109, 104, 101, 103, 108, 109, 105, 104, 107, 110, 112, 113, 113, 111, 109, + 108, 109, 118, 120, 120, 120, 119, 120, 123, 125, 137, 137, 130, 122, 120, 125, + 128, 129, 133, 133, 132, 130, 125, 119, 112, 106, 100, 85, 91, 91, 96, 103, + 86, 79, 86, 94, 111, 114, 121, 138, 130, 104, 146, 139, 124, 115, 88, 49, + 48, 74, 73, 74, 62, 55, 64, 87, 94, 121, 121, 106, 29, 48, 13, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 90, + 98, 71, 77, 97, 83, 94, 108, 115, 113, 117, 126, 124, 112, 112, 128, 135, + 132, 119, 100, 95, 108, 105, 102, 104, 109, 109, 104, 103, 106, 107, 109, 110, + 110, 109, 108, 107, 109, 118, 118, 119, 118, 118, 118, 121, 122, 138, 136, 130, + 121, 118, 124, 130, 130, 133, 134, 134, 134, 130, 124, 116, 108, 109, 81, 110, + 118, 90, 90, 95, 89, 95, 87, 91, 91, 90, 89, 79, 81, 84, 86, 81, + 70, 81, 77, 58, 67, 64, 60, 83, 65, 46, 105, 99, 114, 122, 41, 17, + 7, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 202, 88, 95, 70, 62, 100, 97, 91, 100, 108, 111, 115, 121, 125, 125, + 112, 121, 131, 131, 123, 112, 102, 97, 109, 107, 106, 106, 106, 104, 101, 99, + 106, 107, 108, 109, 107, 105, 103, 101, 116, 116, 116, 117, 117, 121, 124, 125, + 130, 130, 126, 119, 116, 122, 128, 129, 128, 130, 132, 134, 133, 129, 120, 113, + 100, 100, 101, 105, 108, 106, 100, 94, 87, 87, 88, 90, 90, 86, 80, 75, + 84, 82, 80, 76, 66, 57, 56, 62, 56, 78, 64, 51, 88, 90, 114, 122, + 103, 29, 4, 25, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 93, 93, 75, 66, 87, 95, 89, 98, 105, 109, 114, + 122, 126, 126, 115, 118, 123, 129, 130, 123, 110, 99, 100, 103, 105, 105, 103, + 100, 100, 101, 102, 105, 109, 112, 111, 109, 108, 107, 114, 115, 116, 116, 117, + 119, 122, 126, 132, 134, 130, 123, 121, 126, 130, 132, 128, 128, 128, 131, 131, + 131, 127, 124, 113, 108, 102, 101, 104, 105, 104, 102, 88, 89, 89, 90, 89, + 84, 78, 72, 78, 77, 78, 76, 67, 58, 57, 62, 67, 59, 57, 65, 96, + 100, 118, 95, 42, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 202, 92, 84, 73, 69, 95, 90, 98, + 104, 107, 113, 122, 127, 129, 121, 116, 115, 124, 135, 135, 121, 106, 96, 101, + 106, 106, 102, 99, 100, 104, 96, 102, 110, 114, 112, 109, 106, 106, 111, 115, + 118, 117, 115, 116, 122, 127, 132, 135, 132, 127, 124, 127, 130, 130, 130, 128, + 126, 126, 129, 130, 131, 131, 124, 119, 111, 108, 107, 107, 103, 101, 89, 89, + 89, 89, 87, 84, 77, 72, 80, 80, 82, 83, 75, 66, 63, 67, 69, 53, + 61, 74, 99, 109, 115, 50, 23, 34, 113, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 92, 81, 59, + 93, 92, 99, 104, 106, 111, 120, 126, 128, 128, 119, 113, 119, 133, 138, 130, + 119, 104, 106, 108, 109, 108, 105, 103, 101, 91, 99, 107, 110, 107, 103, 99, + 99, 108, 113, 118, 117, 113, 114, 121, 129, 128, 132, 132, 127, 124, 126, 126, + 125, 132, 129, 126, 126, 127, 129, 129, 129, 129, 127, 125, 124, 121, 114, 103, + 94, 88, 88, 87, 86, 85, 81, 75, 69, 80, 79, 79, 80, 74, 66, 62, + 65, 62, 69, 76, 73, 96, 105, 94, 20, 32, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, + 97, 87, 60, 89, 96, 102, 107, 107, 110, 117, 122, 123, 133, 125, 116, 117, + 125, 132, 133, 130, 117, 111, 107, 108, 113, 112, 104, 95, 88, 94, 102, 105, + 104, 101, 98, 98, 106, 112, 116, 116, 112, 113, 120, 128, 125, 130, 131, 127, + 124, 125, 124, 122, 127, 126, 124, 125, 128, 128, 127, 127, 130, 130, 131, 132, + 130, 122, 109, 99, 93, 91, 89, 87, 86, 82, 76, 71, 80, 77, 73, 72, + 67, 61, 58, 61, 63, 85, 84, 78, 99, 71, 52, 23, 109, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 202, 89, 73, 78, 96, 103, 107, 108, 110, 116, 120, 121, 132, + 128, 122, 118, 120, 126, 132, 138, 126, 116, 106, 107, 114, 114, 104, 93, 89, + 91, 96, 100, 104, 106, 106, 105, 105, 110, 113, 113, 112, 114, 119, 125, 127, + 131, 132, 129, 127, 128, 128, 125, 120, 121, 122, 125, 129, 131, 129, 128, 132, + 130, 128, 128, 128, 127, 121, 116, 102, 99, 97, 95, 93, 89, 83, 78, 87, + 82, 78, 77, 73, 67, 65, 70, 74, 84, 83, 90, 97, 27, 14, 37, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 199, 86, 67, 93, 101, 107, 109, 111, 117, + 120, 120, 127, 126, 124, 121, 119, 123, 131, 138, 131, 120, 112, 110, 115, 115, + 107, 99, 94, 92, 90, 94, 102, 108, 109, 109, 106, 108, 110, 111, 112, 115, + 120, 123, 127, 133, 133, 130, 128, 131, 131, 129, 122, 121, 122, 125, 129, 130, + 130, 130, 133, 130, 125, 124, 125, 125, 123, 121, 110, 107, 105, 103, 100, 96, + 89, 85, 90, 87, 84, 87, 86, 81, 79, 81, 79, 79, 89, 96, 76, 6, + 11, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 58, 91, 99, 106, + 109, 112, 118, 121, 121, 122, 123, 124, 123, 122, 125, 130, 135, 133, 126, 118, + 115, 117, 117, 112, 107, 101, 94, 88, 91, 99, 106, 107, 105, 107, 107, 108, + 110, 113, 117, 120, 122, 126, 131, 133, 129, 128, 130, 132, 130, 130, 127, 124, + 125, 127, 129, 128, 128, 132, 130, 126, 126, 125, 123, 118, 114, 114, 111, 109, + 107, 103, 99, 94, 90, 85, 83, 85, 90, 91, 87, 83, 83, 77, 80, 101, + 92, 51, 9, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, + 83, 98, 110, 111, 109, 115, 120, 123, 122, 129, 126, 125, 132, 130, 124, 128, + 131, 128, 124, 121, 120, 118, 114, 112, 108, 103, 92, 81, 80, 91, 102, 107, + 107, 101, 100, 106, 112, 115, 117, 119, 123, 127, 130, 128, 126, 127, 133, 139, + 134, 130, 126, 123, 123, 124, 125, 125, 134, 126, 119, 122, 124, 122, 116, 112, + 110, 108, 105, 103, 101, 98, 95, 92, 85, 91, 98, 100, 94, 87, 80, 78, + 80, 82, 100, 88, 0, 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 197, 81, 95, 107, 110, 109, 114, 119, 122, 121, 128, 125, 124, 131, + 130, 127, 132, 132, 130, 127, 125, 124, 121, 116, 113, 112, 109, 100, 89, 85, + 89, 92, 92, 108, 104, 101, 102, 103, 106, 114, 124, 121, 125, 130, 130, 130, + 129, 133, 135, 135, 131, 127, 126, 126, 126, 125, 126, 134, 127, 121, 123, 124, + 121, 115, 113, 105, 103, 101, 101, 99, 98, 94, 92, 93, 97, 100, 100, 94, + 87, 81, 81, 91, 85, 99, 45, 18, 86, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 92, 104, 109, 110, 115, 119, 121, 121, 127, + 123, 121, 130, 131, 129, 136, 132, 131, 130, 129, 128, 124, 119, 115, 116, 116, + 111, 100, 92, 88, 83, 77, 99, 99, 102, 103, 100, 100, 109, 122, 119, 122, + 126, 130, 132, 133, 133, 132, 136, 133, 130, 129, 129, 128, 127, 125, 133, 128, + 124, 125, 123, 118, 115, 115, 102, 100, 99, 99, 99, 98, 95, 93, 100, 101, + 101, 98, 92, 87, 84, 83, 94, 92, 72, 6, 24, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 109, 112, 116, 119, + 122, 124, 130, 123, 121, 129, 130, 130, 138, 132, 132, 132, 133, 131, 127, 120, + 115, 120, 122, 119, 109, 100, 93, 84, 75, 83, 87, 97, 103, 102, 100, 103, + 112, 118, 120, 122, 127, 131, 133, 133, 131, 135, 133, 132, 132, 132, 131, 128, + 126, 133, 129, 127, 128, 125, 118, 116, 117, 105, 103, 102, 102, 101, 100, 97, + 95, 103, 101, 98, 94, 90, 88, 86, 87, 87, 100, 27, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, + 114, 118, 120, 122, 128, 133, 125, 121, 128, 129, 129, 137, 131, 131, 132, 132, + 132, 128, 121, 116, 121, 124, 122, 115, 107, 102, 94, 86, 78, 79, 86, 93, + 97, 98, 101, 107, 117, 116, 117, 120, 125, 131, 133, 133, 133, 132, 132, 134, + 134, 134, 131, 129, 133, 130, 128, 130, 126, 120, 116, 118, 111, 109, 107, 107, + 106, 104, 101, 98, 101, 98, 94, 90, 89, 88, 89, 89, 86, 95, 6, 4, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 209, 120, 123, 129, 134, 127, 123, 129, 129, 129, 136, 131, + 131, 132, 132, 132, 128, 122, 117, 119, 123, 123, 118, 113, 110, 104, 97, 89, + 83, 80, 81, 84, 89, 99, 110, 112, 113, 114, 117, 121, 126, 131, 133, 132, + 131, 131, 133, 135, 135, 134, 132, 134, 129, 127, 130, 129, 124, 119, 119, 115, + 114, 112, 111, 110, 108, 105, 102, 100, 97, 92, 90, 89, 90, 89, 89, 89, + 66, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 127, 133, 127, 124, 131, 131, + 131, 138, 133, 132, 132, 132, 131, 128, 124, 119, 117, 121, 124, 121, 117, 114, + 108, 101, 100, 94, 86, 80, 76, 78, 90, 106, 104, 108, 114, 117, 118, 122, + 127, 132, 129, 129, 129, 131, 135, 136, 136, 135, 135, 127, 125, 129, 132, 127, + 121, 118, 114, 113, 110, 110, 110, 109, 106, 104, 102, 99, 95, 94, 92, 92, + 87, 86, 82, 26, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 131, 127, + 125, 133, 133, 131, 139, 134, 134, 132, 132, 131, 129, 124, 121, 115, 121, 125, + 122, 119, 115, 107, 99, 101, 100, 98, 90, 75, 71, 81, 97, 96, 105, 114, + 119, 118, 121, 125, 130, 130, 129, 128, 131, 135, 138, 137, 137, 135, 126, 123, + 129, 134, 130, 123, 118, 111, 109, 108, 109, 110, 111, 109, 106, 104, 101, 98, + 97, 96, 93, 87, 84, 70, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 213, 129, 132, 134, 135, 134, 132, 131, 130, 130, 129, 128, 125, 121, + 122, 124, 121, 116, 114, 113, 108, 101, 108, 106, 103, 98, 91, 85, 79, 76, + 88, 98, 105, 104, 107, 115, 123, 127, 124, 127, 128, 131, 133, 133, 131, 129, + 136, 128, 124, 129, 132, 128, 121, 117, 111, 109, 107, 106, 108, 109, 109, 108, + 103, 103, 101, 98, 92, 86, 82, 83, 12, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 213, 132, 134, 134, 134, 132, 131, 130, 130, 130, + 128, 124, 122, 123, 125, 122, 117, 115, 114, 109, 103, 105, 104, 101, 98, 93, + 88, 85, 83, 72, 86, 100, 106, 108, 114, 117, 117, 123, 124, 124, 124, 125, + 127, 127, 127, 130, 122, 117, 122, 125, 121, 114, 110, 107, 105, 102, 103, 105, + 108, 111, 111, 108, 101, 98, 99, 94, 86, 85, 90, 95, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 134, 133, 132, + 131, 131, 131, 129, 126, 124, 124, 126, 123, 119, 116, 116, 111, 104, 104, 103, + 101, 100, 96, 93, 91, 91, 68, 80, 91, 95, 99, 105, 110, 110, 123, 122, + 120, 121, 121, 124, 127, 128, 128, 121, 117, 120, 123, 119, 112, 110, 102, 100, + 99, 99, 103, 108, 110, 111, 105, 106, 100, 90, 86, 86, 80, 132, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 215, 133, 132, 131, 132, 132, 130, 128, 125, 123, 125, 123, 118, 116, 116, 111, + 105, 105, 105, 102, 102, 99, 97, 96, 97, 85, 87, 84, 79, 80, 91, 104, + 110, 116, 116, 115, 116, 117, 120, 123, 125, 126, 119, 117, 120, 121, 117, 111, + 109, 100, 99, 99, 102, 105, 108, 108, 108, 98, 111, 104, 81, 79, 87, 128, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 214, 131, 132, 132, 131, 128, 127, 122, 124, 121, 117, + 115, 115, 111, 104, 108, 108, 105, 104, 101, 99, 99, 100, 100, 94, 82, 69, + 67, 78, 91, 97, 102, 103, 106, 109, 111, 114, 116, 117, 119, 114, 112, 114, + 114, 110, 105, 104, 99, 100, 102, 106, 108, 107, 104, 101, 101, 103, 98, 90, + 87, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 131, 131, 127, 125, 121, + 123, 121, 117, 115, 115, 111, 105, 110, 109, 106, 105, 102, 101, 101, 102, 101, + 98, 88, 76, 72, 75, 78, 78, 91, 94, 97, 102, 106, 110, 112, 113, 115, + 110, 109, 111, 110, 104, 101, 101, 97, 99, 101, 104, 106, 103, 100, 96, 109, + 89, 85, 100, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, + 128, 125, 122, 124, 122, 118, 116, 117, 113, 106, 109, 109, 105, 105, 103, 102, + 104, 105, 101, 101, 97, 89, 84, 82, 75, 70, 78, 80, 83, 87, 93, 100, + 105, 109, 110, 107, 105, 107, 106, 100, 97, 96, 96, 95, 94, 96, 98, 98, + 95, 93, 102, 85, 79, 81, 126, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 211, 123, 126, 123, 120, 118, 118, 114, 108, 108, 107, 104, + 104, 103, 104, 106, 107, 104, 106, 104, 98, 93, 89, 81, 73, 63, 64, 64, + 68, 76, 84, 92, 97, 102, 98, 97, 100, 97, 92, 88, 88, 95, 92, 89, + 89, 91, 93, 93, 93, 87, 94, 83, 120, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 121, 120, 116, 113, 110, 108, + 105, 108, 109, 109, 106, 102, 102, 102, 105, 106, 103, 96, 89, 86, 79, 74, + 72, 80, 57, 45, 71, 55, 80, 84, 85, 85, 88, 89, 88, 87, 84, 83, + 80, 80, 81, 86, 91, 92, 86, 80, 85, 72, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 117, + 114, 111, 109, 106, 108, 109, 109, 105, 102, 102, 102, 108, 110, 106, 98, 93, + 91, 86, 80, 82, 88, 69, 65, 66, 40, 45, 38, 49, 50, 52, 52, 52, + 52, 50, 50, 58, 57, 58, 63, 68, 130, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 208, 111, 109, 107, 109, 109, 108, 105, 102, 103, 103, 106, 107, + 103, 96, 91, 90, 87, 84, 83, 81, 70, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 109, 108, 107, 104, 102, 104, + 105, 106, 107, 103, 95, 91, 92, 91, 89, 86, 75, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, + 104, 103, 106, 109, 111, 112, 108, 101, 98, 99, 99, 97, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 206, 113, 111, 112, 109, 104, 100, 152, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 121, 120, 119, 117, 110, + 108, 109, 116, 105, 95, 91, 97, 101, 103, 102, 135, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 125, 124, 122, 120, 117, 115, 106, 101, 103, + 109, 107, 96, 92, 95, 94, 97, 93, 80, 71, 81, 111, 137, 119, 109, 105, + 116, 131, 136, 134, 131, 121, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 212, 119, 118, 115, 116, 114, 106, 87, 61, 42, + 35, 37, 33, 26, 28, 38, 45, 45, 51, 48, 37, 21, 16, 39, 84, 121, + 123, 99, 80, 51, 77, 110, 139, 119, 126, 126, 133, 139, 137, 131, 171, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 241, 197, 149, 119, 119, 112, 102, 107, 100, 91, 83, 73, + 55, 32, 16, 22, 23, 20, 12, 13, 19, 25, 23, 31, 31, 28, 16, 13, + 26, 57, 81, 128, 103, 106, 55, 58, 52, 111, 127, 135, 128, 122, 122, 123, + 121, 123, 126, 137, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 242, 195, 142, 113, 209, 118, 112, 94, 63, 36, 25, 20, + 16, 15, 18, 17, 12, 6, 11, 12, 12, 6, 8, 10, 14, 11, 12, 14, + 18, 13, 12, 13, 26, 34, 98, 84, 117, 74, 67, 18, 75, 102, 101, 102, + 109, 125, 136, 135, 129, 126, 125, 121, 122, 125, 130, 171, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 67, 54, 41, 32, 25, 13, + 3, 8, 3, 0, 0, 3, 6, 8, 6, 8, 9, 10, 9, 10, 12, 14, + 13, 7, 10, 14, 16, 14, 13, 12, 10, 29, 21, 56, 42, 39, 0, 23, + 31, 33, 41, 63, 87, 103, 106, 103, 101, 110, 106, 108, 121, 132, 133, 128, + 124, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 76, 28, 26, 16, 5, + 0, 2, 7, 11, 21, 17, 14, 11, 14, 14, 12, 10, 8, 8, 9, 11, + 11, 10, 10, 11, 13, 12, 12, 14, 16, 16, 13, 11, 23, 15, 19, 22, + 17, 19, 24, 20, 21, 23, 30, 38, 46, 56, 72, 87, 98, 91, 91, 105, + 121, 126, 123, 120, 136, 121, 101, 113, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 64, 14, 15, 4, + 15, 22, 23, 18, 17, 15, 15, 6, 7, 7, 10, 12, 14, 15, 14, 17, + 15, 14, 16, 15, 10, 9, 10, 18, 14, 11, 11, 15, 18, 19, 16, 9, + 13, 8, 14, 0, 21, 18, 8, 36, 33, 33, 32, 32, 38, 58, 78, 69, + 64, 64, 75, 91, 107, 121, 131, 108, 127, 116, 99, 44, 67, 133, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 0, 0, + 1, 3, 13, 15, 8, 0, 0, 4, 12, 17, 19, 19, 17, 18, 16, 13, + 12, 10, 22, 18, 17, 19, 18, 12, 10, 13, 18, 14, 10, 10, 13, 18, + 20, 21, 19, 23, 33, 40, 33, 38, 33, 18, 20, 22, 29, 34, 34, 32, + 38, 44, 37, 40, 45, 49, 53, 66, 93, 117, 97, 136, 133, 105, 44, 101, + 93, 33, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, + 0, 4, 7, 3, 5, 8, 11, 13, 12, 14, 17, 15, 9, 12, 12, 13, + 16, 18, 18, 18, 18, 16, 11, 10, 15, 14, 9, 9, 14, 16, 13, 10, + 10, 13, 17, 19, 19, 19, 9, 24, 28, 39, 32, 37, 20, 23, 24, 27, + 33, 34, 29, 26, 27, 28, 39, 48, 41, 26, 26, 51, 78, 124, 111, 97, + 100, 36, 71, 59, 12, 55, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 179, 6, 3, 8, 8, 7, 8, 11, 15, 14, 10, 12, 18, 19, 14, + 19, 13, 11, 16, 24, 27, 21, 14, 19, 15, 10, 7, 5, 5, 4, 3, + 4, 8, 10, 9, 12, 16, 21, 21, 15, 23, 28, 27, 33, 42, 40, 28, + 14, 16, 19, 20, 21, 20, 20, 20, 20, 29, 34, 34, 34, 38, 39, 33, + 69, 96, 114, 70, 25, 61, 76, 15, 7, 61, 96, 85, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 179, 16, 8, 9, 10, 11, 11, 14, 14, 16, 14, 12, 15, + 20, 17, 11, 19, 14, 11, 13, 17, 20, 18, 16, 19, 18, 15, 11, 11, + 12, 10, 9, 8, 8, 9, 10, 14, 18, 20, 17, 13, 11, 18, 27, 31, + 28, 23, 21, 19, 16, 14, 16, 20, 21, 20, 17, 16, 23, 27, 25, 23, + 26, 26, 21, 46, 46, 68, 68, 47, 52, 65, 47, 11, 29, 52, 91, 116, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 175, 7, 7, 10, 13, 12, 9, 10, 16, 17, 16, + 14, 13, 18, 22, 17, 10, 18, 15, 12, 12, 12, 15, 16, 18, 17, 15, + 13, 12, 13, 14, 12, 11, 15, 10, 9, 11, 17, 21, 22, 15, 19, 12, + 20, 36, 39, 26, 18, 21, 24, 17, 10, 11, 17, 21, 20, 16, 13, 19, + 21, 22, 24, 27, 29, 28, 42, 34, 50, 73, 72, 55, 57, 70, 30, 25, + 29, 88, 108, 82, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 178, 6, 4, 9, 14, 16, 12, 10, 10, + 13, 19, 16, 14, 16, 22, 24, 17, 11, 16, 16, 15, 14, 12, 12, 14, + 18, 15, 15, 12, 11, 12, 13, 11, 10, 15, 10, 10, 12, 15, 17, 21, + 22, 25, 21, 25, 35, 36, 26, 19, 18, 19, 13, 7, 5, 8, 12, 14, + 15, 15, 18, 20, 19, 21, 24, 28, 28, 20, 33, 38, 42, 50, 37, 33, + 46, 38, 39, 25, 65, 60, 44, 33, 47, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 20, 4, 10, 12, 11, 11, + 13, 15, 14, 12, 16, 13, 14, 19, 24, 23, 16, 12, 14, 17, 19, 19, + 15, 13, 13, 16, 19, 19, 15, 13, 14, 16, 14, 13, 12, 10, 13, 14, + 12, 13, 22, 31, 26, 29, 28, 23, 22, 24, 20, 11, 11, 11, 9, 5, + 3, 5, 11, 17, 26, 22, 19, 15, 11, 7, 8, 11, 2, 25, 25, 18, + 27, 23, 21, 40, 34, 35, 20, 57, 43, 18, 12, 38, 124, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 57, 5, 16, 5, 8, + 8, 6, 7, 13, 19, 19, 15, 12, 12, 16, 23, 26, 23, 17, 17, 15, + 17, 20, 20, 16, 14, 12, 13, 20, 17, 12, 11, 13, 14, 15, 13, 12, + 12, 17, 22, 18, 12, 22, 37, 30, 33, 29, 16, 15, 22, 19, 8, 6, + 10, 12, 9, 4, 4, 12, 19, 34, 29, 23, 20, 16, 13, 16, 20, 18, + 27, 24, 22, 31, 19, 23, 47, 38, 22, 14, 65, 64, 15, 0, 17, 53, + 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 3, 11, 2, + 16, 9, 6, 11, 10, 10, 14, 23, 26, 23, 16, 16, 24, 32, 32, 27, + 24, 28, 18, 17, 16, 16, 14, 13, 11, 12, 19, 15, 12, 10, 13, 16, + 18, 18, 16, 16, 25, 33, 31, 22, 23, 33, 38, 34, 28, 22, 20, 20, + 17, 14, 8, 11, 14, 14, 13, 13, 17, 20, 37, 32, 29, 30, 29, 27, + 34, 43, 30, 26, 19, 18, 25, 16, 17, 27, 37, 20, 17, 49, 68, 20, + 4, 7, 30, 12, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 7, + 10, 0, 10, 0, 11, 10, 16, 20, 16, 19, 25, 30, 26, 21, 23, 32, + 41, 40, 33, 32, 38, 20, 17, 13, 11, 10, 11, 11, 10, 23, 20, 16, + 14, 18, 23, 26, 28, 20, 19, 28, 43, 42, 31, 24, 27, 40, 28, 23, + 27, 24, 14, 11, 16, 12, 13, 16, 19, 22, 23, 22, 21, 37, 31, 27, + 27, 26, 24, 29, 39, 31, 31, 23, 15, 22, 33, 29, 17, 23, 22, 19, + 18, 46, 25, 30, 20, 23, 58, 95, 80, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 183, 19, 1, 1, 6, 8, 7, 10, 11, 10, 19, 20, 13, 17, 30, 29, + 23, 23, 34, 35, 23, 24, 36, 41, 31, 21, 10, 8, 11, 16, 13, 9, + 13, 23, 21, 4, 24, 41, 25, 29, 45, 31, 41, 42, 51, 27, 32, 39, + 26, 15, 30, 21, 20, 26, 8, 15, 18, 16, 14, 17, 27, 33, 27, 16, + 30, 35, 32, 22, 18, 24, 31, 32, 50, 35, 21, 17, 24, 29, 26, 20, + 28, 17, 17, 30, 38, 36, 41, 51, 53, 64, 86, 82, 140, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 206, 63, 25, 11, 0, 1, 6, 6, 6, 6, 8, 6, 16, 20, 15, + 21, 33, 31, 17, 18, 28, 28, 23, 32, 43, 42, 39, 21, 11, 16, 17, + 10, 8, 14, 24, 32, 28, 12, 29, 45, 31, 34, 68, 42, 42, 42, 49, + 22, 31, 42, 39, 26, 31, 19, 18, 25, 10, 16, 5, 23, 40, 41, 32, + 24, 20, 19, 21, 24, 23, 13, 13, 18, 22, 23, 36, 25, 16, 15, 20, + 24, 22, 17, 24, 23, 22, 28, 38, 45, 48, 44, 69, 51, 60, 56, 99, + 152, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 205, 79, 53, 9, 4, 1, 5, 8, 6, 5, 5, 7, 5, + 13, 18, 17, 22, 31, 28, 12, 14, 21, 21, 24, 45, 54, 43, 41, 20, + 11, 20, 17, 4, 6, 19, 30, 37, 40, 30, 45, 65, 57, 62, 63, 46, + 43, 31, 45, 35, 43, 39, 47, 34, 31, 18, 15, 20, 11, 15, 12, 37, + 58, 57, 40, 26, 21, 20, 15, 16, 15, 8, 8, 11, 13, 12, 19, 14, + 12, 12, 16, 19, 21, 19, 25, 30, 28, 24, 34, 48, 48, 32, 69, 41, + 56, 68, 90, 99, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 205, 124, 123, 72, 17, 4, 5, 6, 8, 9, 8, 9, + 9, 11, 6, 13, 18, 15, 19, 25, 18, 9, 13, 17, 16, 25, 51, 58, + 39, 31, 17, 9, 12, 9, 5, 14, 28, 21, 28, 43, 37, 50, 73, 66, + 67, 52, 54, 57, 33, 50, 54, 54, 26, 43, 39, 39, 27, 23, 20, 20, + 22, 38, 45, 53, 50, 46, 38, 31, 23, 18, 17, 14, 11, 10, 10, 9, + 9, 13, 13, 14, 15, 16, 20, 26, 29, 31, 31, 26, 21, 30, 42, 40, + 29, 44, 26, 51, 70, 75, 91, 75, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 76, 35, 13, 5, 5, 6, 8, 8, 7, + 7, 9, 11, 11, 11, 4, 9, 14, 12, 17, 21, 11, 8, 11, 15, 13, + 20, 45, 48, 27, 17, 16, 10, 2, 3, 17, 33, 37, 37, 42, 64, 59, + 61, 80, 72, 67, 78, 70, 71, 55, 67, 56, 51, 31, 43, 53, 58, 54, + 47, 37, 44, 45, 52, 51, 53, 49, 52, 49, 43, 33, 25, 25, 22, 19, + 16, 11, 9, 10, 12, 13, 15, 14, 14, 19, 30, 36, 35, 26, 20, 20, + 29, 32, 34, 34, 40, 30, 46, 54, 49, 78, 54, 105, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 190, 19, 5, 7, 4, 5, 9, 8, + 9, 7, 3, 5, 10, 14, 13, 14, 5, 7, 13, 14, 20, 22, 13, 8, + 9, 14, 12, 14, 29, 29, 12, 10, 15, 11, 2, 7, 31, 48, 47, 49, + 53, 81, 77, 73, 90, 87, 77, 102, 70, 67, 72, 79, 45, 48, 63, 48, + 64, 67, 71, 64, 53, 64, 63, 52, 59, 66, 63, 59, 56, 53, 48, 39, + 38, 35, 31, 21, 11, 11, 15, 14, 14, 15, 14, 14, 19, 29, 36, 36, + 27, 21, 24, 28, 31, 34, 39, 39, 38, 44, 46, 40, 60, 37, 64, 98, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 27, 6, 8, 2, 0, + 5, 7, 7, 8, 5, 1, 6, 15, 18, 15, 20, 8, 8, 12, 14, 20, + 22, 12, 10, 10, 17, 18, 11, 15, 14, 4, 9, 10, 9, 10, 18, 35, + 48, 49, 46, 46, 76, 72, 63, 82, 84, 74, 95, 69, 71, 73, 79, 52, + 66, 89, 58, 70, 63, 69, 68, 57, 74, 67, 62, 68, 74, 69, 68, 65, + 65, 62, 55, 53, 50, 43, 27, 13, 14, 22, 13, 14, 15, 14, 16, 19, + 25, 29, 36, 40, 37, 28, 26, 31, 31, 27, 21, 24, 23, 34, 36, 31, + 11, 17, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 42, 10, 3, + 2, 0, 6, 16, 0, 7, 8, 6, 4, 10, 21, 23, 18, 30, 16, 12, + 15, 15, 20, 21, 10, 11, 12, 22, 24, 13, 9, 10, 3, 11, 3, 5, + 16, 24, 30, 36, 44, 67, 63, 90, 80, 66, 85, 86, 77, 81, 84, 93, + 73, 76, 70, 86, 87, 68, 73, 56, 61, 65, 58, 76, 65, 79, 72, 67, + 62, 70, 74, 74, 66, 67, 65, 61, 52, 32, 17, 18, 30, 12, 15, 17, + 18, 20, 21, 23, 24, 39, 55, 55, 34, 27, 34, 30, 15, 34, 31, 18, + 35, 44, 26, 20, 23, 33, 71, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 36, + 6, 8, 11, 10, 9, 9, 10, 11, 5, 10, 15, 12, 10, 13, 20, 24, + 29, 28, 24, 20, 19, 18, 15, 8, 0, 36, 38, 46, 36, 13, 23, 23, + 15, 4, 23, 39, 41, 57, 24, 63, 63, 61, 95, 77, 71, 88, 75, 97, + 93, 88, 87, 89, 88, 85, 88, 94, 86, 83, 87, 85, 83, 74, 76, 78, + 85, 80, 80, 77, 79, 76, 74, 71, 72, 81, 75, 51, 34, 31, 35, 39, + 27, 26, 25, 22, 25, 30, 33, 32, 37, 35, 38, 42, 37, 25, 20, 21, + 17, 22, 26, 27, 27, 32, 36, 40, 28, 64, 72, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 199, 14, 9, 10, 13, 13, 11, 10, 11, 12, 11, 13, 13, 9, 9, + 13, 15, 16, 17, 18, 18, 17, 15, 14, 10, 5, 31, 47, 30, 29, 34, + 26, 26, 10, 26, 8, 37, 40, 44, 35, 33, 89, 72, 69, 98, 82, 77, + 93, 78, 96, 91, 88, 88, 90, 89, 86, 88, 92, 80, 79, 80, 82, 79, + 75, 76, 81, 78, 73, 71, 75, 83, 86, 82, 78, 69, 78, 74, 56, 39, + 32, 33, 37, 30, 29, 26, 26, 28, 31, 31, 30, 39, 35, 36, 39, 37, + 30, 25, 28, 30, 27, 23, 20, 22, 31, 41, 49, 22, 74, 47, 157, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 45, 6, 9, 10, 13, 12, 10, 9, 10, 11, 17, 18, + 14, 9, 9, 13, 12, 8, 12, 12, 12, 12, 11, 11, 13, 13, 36, 52, + 40, 31, 30, 19, 18, 9, 1, 15, 72, 58, 63, 41, 46, 82, 81, 75, + 96, 82, 80, 93, 78, 89, 87, 86, 87, 90, 89, 86, 88, 92, 81, 79, + 79, 81, 81, 79, 82, 87, 84, 77, 72, 76, 85, 88, 80, 73, 78, 81, + 79, 71, 54, 41, 39, 48, 32, 31, 28, 30, 33, 37, 39, 40, 42, 35, + 33, 34, 37, 34, 29, 29, 22, 22, 24, 29, 36, 41, 46, 48, 41, 43, + 74, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 26, 19, 9, 9, 10, 13, 12, 10, 9, 9, + 11, 19, 23, 21, 13, 10, 13, 13, 8, 15, 13, 11, 11, 11, 13, 20, + 26, 28, 37, 36, 38, 35, 16, 6, 8, 8, 44, 79, 37, 36, 54, 71, + 88, 83, 77, 89, 80, 80, 91, 79, 83, 85, 87, 89, 91, 90, 89, 91, + 93, 86, 83, 82, 84, 84, 83, 87, 92, 90, 85, 82, 84, 89, 88, 81, + 76, 89, 87, 87, 83, 71, 54, 56, 68, 54, 46, 39, 36, 38, 38, 42, + 43, 45, 37, 35, 36, 37, 36, 32, 28, 20, 19, 23, 36, 46, 51, 55, + 57, 61, 44, 55, 33, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 25, 13, 8, 2, 8, 11, 12, 12, + 10, 10, 9, 10, 15, 24, 24, 15, 10, 15, 17, 12, 13, 10, 10, 15, + 17, 16, 21, 26, 39, 17, 11, 29, 43, 24, 0, 2, 20, 57, 60, 35, + 29, 72, 78, 84, 84, 79, 84, 79, 82, 91, 83, 82, 85, 89, 91, 91, + 91, 92, 93, 93, 93, 88, 86, 88, 89, 88, 89, 94, 87, 88, 91, 93, + 94, 93, 91, 89, 90, 88, 88, 87, 78, 65, 69, 80, 82, 70, 58, 50, + 44, 39, 39, 43, 43, 38, 36, 38, 42, 43, 38, 33, 37, 27, 19, 23, + 32, 45, 59, 71, 59, 53, 28, 61, 56, 144, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 8, 9, 3, 9, + 11, 12, 13, 12, 12, 12, 13, 10, 20, 22, 14, 14, 24, 25, 18, 11, + 6, 8, 17, 21, 17, 16, 18, 40, 17, 14, 22, 29, 14, 0, 21, 31, + 49, 43, 61, 60, 82, 71, 83, 88, 86, 86, 84, 87, 93, 91, 86, 88, + 92, 93, 91, 90, 93, 94, 93, 97, 91, 89, 91, 92, 91, 91, 93, 85, + 89, 93, 93, 90, 86, 85, 85, 81, 81, 84, 81, 74, 70, 73, 81, 87, + 73, 63, 59, 56, 51, 52, 57, 43, 41, 42, 41, 45, 50, 49, 47, 41, + 31, 24, 27, 31, 35, 45, 57, 52, 38, 48, 45, 68, 70, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 1, 0, + 9, 7, 8, 10, 12, 13, 13, 14, 15, 17, 10, 16, 15, 12, 23, 40, + 38, 23, 27, 12, 4, 9, 16, 16, 19, 25, 31, 25, 32, 17, 12, 11, + 8, 41, 55, 53, 42, 57, 75, 83, 92, 108, 91, 93, 88, 88, 90, 92, + 94, 88, 89, 93, 93, 88, 87, 91, 93, 92, 95, 90, 88, 92, 94, 92, + 91, 92, 88, 89, 91, 91, 89, 84, 80, 76, 75, 80, 85, 80, 74, 75, + 76, 77, 77, 67, 62, 66, 69, 63, 63, 68, 54, 53, 50, 44, 45, 52, + 56, 58, 36, 31, 34, 42, 41, 35, 35, 43, 48, 46, 51, 57, 58, 78, + 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 2, 9, 2, 7, 3, 8, 10, 12, 14, 14, 16, 17, 19, 16, 17, 13, + 14, 35, 56, 50, 30, 53, 26, 3, 2, 9, 17, 30, 42, 30, 28, 31, + 8, 15, 34, 24, 36, 34, 51, 67, 71, 103, 96, 107, 96, 95, 98, 91, + 91, 91, 91, 96, 89, 91, 95, 94, 87, 85, 91, 94, 92, 92, 87, 87, + 92, 95, 93, 91, 91, 87, 86, 88, 93, 98, 98, 93, 88, 73, 85, 90, + 83, 80, 81, 78, 74, 79, 69, 69, 75, 74, 63, 58, 62, 67, 66, 58, + 45, 41, 48, 56, 60, 43, 38, 35, 39, 36, 32, 40, 52, 57, 51, 60, + 60, 70, 85, 73, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 171, 20, 2, 4, 12, 7, 6, 11, 24, 10, 4, 15, 9, 12, + 32, 11, 14, 8, 12, 63, 38, 32, 20, 36, 0, 18, 20, 20, 26, 40, + 52, 64, 41, 36, 32, 37, 27, 42, 58, 86, 108, 107, 101, 100, 103, 101, + 101, 98, 97, 96, 96, 96, 96, 97, 95, 91, 87, 86, 88, 91, 94, 95, + 96, 94, 90, 89, 89, 90, 90, 89, 90, 91, 91, 91, 91, 91, 91, 92, + 84, 85, 87, 87, 85, 83, 82, 85, 74, 70, 69, 68, 70, 70, 66, 61, + 60, 59, 58, 60, 62, 61, 60, 61, 67, 70, 27, 35, 43, 20, 44, 39, + 26, 31, 32, 31, 38, 49, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 4, 16, 3, 5, 8, 6, 11, 12, 25, 14, 6, + 13, 9, 18, 18, 16, 13, 11, 4, 33, 31, 54, 11, 29, 24, 14, 15, + 11, 27, 30, 35, 46, 56, 63, 64, 73, 71, 91, 95, 107, 113, 105, 101, + 107, 111, 108, 102, 99, 98, 97, 97, 97, 97, 97, 95, 92, 88, 86, 88, + 92, 94, 95, 95, 93, 91, 90, 91, 91, 90, 89, 90, 91, 92, 92, 92, + 91, 90, 90, 90, 90, 90, 88, 85, 81, 79, 79, 88, 87, 82, 73, 65, + 61, 62, 64, 59, 58, 59, 60, 63, 64, 62, 62, 67, 70, 41, 46, 45, + 26, 35, 32, 35, 35, 31, 27, 27, 30, 30, 27, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 172, 3, 6, 4, 8, 4, 12, 17, 14, + 25, 18, 9, 11, 9, 26, 19, 33, 8, 14, 6, 9, 23, 58, 15, 17, + 40, 9, 14, 17, 30, 16, 17, 20, 67, 79, 78, 85, 85, 103, 111, 113, + 110, 100, 101, 108, 110, 104, 101, 98, 97, 96, 96, 96, 96, 97, 96, 92, + 89, 88, 90, 93, 95, 95, 93, 92, 91, 92, 94, 94, 92, 90, 91, 92, + 93, 94, 93, 91, 89, 87, 91, 92, 92, 90, 86, 83, 81, 81, 92, 93, + 88, 74, 57, 51, 57, 65, 62, 61, 61, 62, 65, 65, 66, 67, 68, 69, + 63, 59, 52, 35, 26, 22, 31, 27, 25, 25, 25, 24, 29, 36, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 5, 1, 8, 14, 6, + 17, 18, 12, 23, 20, 11, 12, 13, 36, 33, 57, 5, 15, 18, 9, 19, + 33, 29, 7, 31, 12, 16, 34, 28, 9, 28, 20, 81, 97, 96, 100, 95, + 106, 102, 103, 104, 102, 104, 108, 106, 99, 102, 99, 98, 97, 97, 97, 97, + 98, 99, 96, 93, 92, 94, 97, 98, 99, 92, 92, 92, 94, 96, 96, 93, + 91, 91, 93, 95, 96, 95, 92, 88, 86, 87, 89, 90, 90, 89, 88, 89, + 90, 90, 92, 89, 77, 62, 57, 63, 72, 68, 67, 66, 66, 67, 67, 68, + 68, 71, 64, 74, 69, 62, 53, 26, 10, 18, 14, 17, 24, 25, 22, 30, + 43, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 11, 0, + 9, 16, 5, 18, 16, 9, 19, 18, 13, 16, 18, 42, 30, 67, 9, 17, + 23, 14, 16, 4, 29, 3, 15, 22, 10, 34, 17, 16, 32, 25, 72, 95, + 98, 110, 105, 106, 95, 100, 104, 104, 104, 105, 106, 103, 102, 100, 99, 98, + 97, 97, 98, 98, 99, 96, 94, 93, 95, 98, 98, 98, 94, 93, 94, 95, + 97, 97, 95, 92, 93, 95, 97, 98, 97, 94, 90, 88, 88, 90, 92, 93, + 91, 92, 94, 97, 92, 93, 91, 84, 77, 73, 74, 77, 75, 73, 71, 70, + 69, 70, 68, 68, 71, 60, 73, 73, 69, 68, 39, 5, 10, 9, 13, 21, + 20, 15, 19, 29, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, + 7, 15, 5, 10, 18, 6, 12, 13, 8, 17, 14, 13, 21, 22, 39, 16, + 56, 16, 22, 18, 16, 18, 1, 15, 13, 17, 33, 8, 20, 10, 25, 30, + 38, 47, 83, 84, 105, 100, 96, 100, 100, 101, 97, 94, 95, 101, 106, 102, + 99, 98, 97, 97, 97, 98, 98, 96, 94, 92, 92, 94, 96, 96, 96, 97, + 96, 95, 96, 97, 97, 95, 94, 95, 96, 98, 99, 98, 96, 93, 92, 93, + 94, 95, 95, 92, 92, 94, 97, 94, 93, 91, 87, 83, 79, 76, 74, 79, + 76, 73, 71, 70, 70, 69, 68, 71, 63, 67, 75, 76, 77, 60, 11, 8, + 10, 13, 19, 20, 19, 22, 26, 27, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 11, 7, 16, 7, 8, 19, 10, 10, 12, 9, 17, 10, 11, 25, + 22, 30, 17, 33, 9, 24, 17, 21, 23, 10, 7, 29, 27, 30, 23, 15, + 17, 20, 45, 80, 48, 89, 83, 109, 104, 99, 104, 100, 96, 93, 91, 90, + 96, 101, 99, 98, 97, 96, 95, 95, 96, 96, 96, 94, 92, 93, 95, 96, + 96, 97, 100, 98, 96, 96, 96, 97, 96, 94, 97, 98, 99, 99, 99, 98, + 97, 97, 99, 100, 98, 96, 94, 94, 96, 98, 93, 93, 91, 87, 82, 78, + 75, 74, 78, 77, 72, 71, 71, 71, 71, 71, 72, 70, 63, 78, 77, 80, + 80, 23, 8, 12, 14, 15, 21, 29, 32, 31, 16, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 13, 3, 11, 8, 7, 21, 14, 11, 12, 9, 18, + 7, 10, 27, 21, 22, 32, 18, 0, 22, 21, 31, 27, 15, 12, 42, 33, + 21, 44, 22, 30, 6, 41, 98, 41, 91, 78, 109, 108, 103, 106, 103, 101, + 99, 99, 96, 97, 97, 101, 97, 97, 95, 96, 96, 96, 97, 100, 98, 97, + 97, 99, 101, 101, 100, 103, 100, 97, 95, 96, 96, 96, 95, 99, 99, 99, + 99, 99, 98, 100, 100, 97, 98, 98, 96, 95, 95, 98, 100, 98, 97, 96, + 91, 83, 79, 78, 81, 76, 74, 70, 70, 71, 73, 73, 73, 73, 77, 62, + 82, 75, 77, 91, 29, 10, 16, 13, 8, 14, 26, 29, 23, 30, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 199, 15, 10, 7, 11, 14, 12, 9, 8, + 10, 9, 12, 15, 19, 22, 25, 26, 27, 29, 24, 4, 46, 10, 13, 15, + 22, 21, 15, 31, 31, 14, 17, 10, 55, 75, 85, 69, 87, 106, 97, 108, + 110, 110, 106, 101, 96, 96, 101, 106, 106, 104, 102, 95, 98, 103, 104, 101, + 96, 97, 101, 103, 104, 105, 107, 105, 108, 103, 98, 99, 101, 104, 102, 99, + 88, 91, 94, 97, 98, 96, 95, 93, 96, 97, 98, 100, 101, 97, 98, 101, + 96, 94, 93, 91, 86, 81, 76, 74, 74, 72, 69, 69, 73, 75, 77, 76, + 79, 73, 70, 73, 77, 77, 76, 81, 12, 10, 14, 15, 12, 30, 39, 18, + 32, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 15, 10, 8, 12, 16, + 14, 11, 10, 8, 8, 7, 8, 11, 16, 20, 23, 31, 33, 16, 12, 30, + 23, 11, 6, 14, 15, 9, 23, 22, 7, 13, 8, 47, 69, 80, 62, 74, + 99, 98, 108, 108, 109, 107, 103, 98, 98, 102, 105, 106, 104, 101, 97, 99, + 105, 108, 106, 108, 107, 109, 109, 108, 108, 108, 107, 108, 102, 99, 100, 102, + 104, 102, 99, 90, 92, 95, 97, 96, 95, 93, 91, 96, 95, 98, 100, 101, + 97, 98, 103, 96, 94, 93, 89, 84, 79, 74, 73, 76, 73, 70, 71, 74, + 75, 76, 75, 85, 77, 73, 74, 75, 74, 72, 76, 86, 16, 0, 2, 16, + 14, 23, 37, 32, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 13, 10, + 9, 14, 18, 15, 12, 11, 11, 9, 7, 7, 9, 14, 20, 24, 30, 36, + 15, 22, 16, 43, 19, 6, 14, 17, 11, 21, 18, 5, 15, 13, 43, 68, + 81, 61, 71, 99, 103, 114, 105, 107, 107, 105, 101, 100, 103, 105, 104, 102, + 100, 98, 101, 107, 111, 109, 113, 112, 112, 110, 109, 109, 111, 110, 109, 105, + 103, 105, 108, 109, 104, 101, 95, 96, 96, 97, 96, 94, 92, 90, 97, 95, + 98, 101, 101, 98, 99, 103, 97, 95, 94, 89, 84, 80, 75, 74, 79, 76, + 75, 73, 75, 76, 76, 75, 87, 79, 75, 75, 77, 73, 72, 76, 99, 10, + 0, 3, 23, 8, 12, 39, 34, 255, 255, 255, 255, 255, 255, 255, 255, 177, + 4, 13, 10, 10, 15, 16, 13, 9, 9, 14, 13, 12, 12, 15, 20, 25, + 28, 23, 30, 26, 22, 12, 49, 32, 12, 15, 20, 13, 19, 13, 2, 16, + 15, 29, 55, 79, 64, 72, 103, 107, 112, 105, 108, 108, 107, 103, 101, 102, + 103, 104, 103, 102, 99, 102, 109, 112, 109, 112, 111, 111, 109, 109, 111, 114, + 116, 111, 108, 108, 110, 112, 112, 107, 104, 99, 100, 98, 98, 96, 94, 91, + 90, 97, 96, 99, 101, 101, 98, 99, 103, 99, 98, 94, 91, 87, 82, 78, + 77, 79, 76, 75, 74, 76, 77, 78, 77, 84, 77, 75, 77, 79, 77, 76, + 80, 68, 34, 0, 13, 13, 9, 18, 27, 34, 255, 255, 255, 255, 255, 255, + 255, 255, 2, 0, 12, 10, 10, 13, 13, 9, 6, 7, 10, 10, 12, 15, + 18, 22, 25, 27, 18, 24, 48, 14, 17, 39, 39, 19, 17, 22, 13, 15, + 9, 0, 15, 14, 15, 32, 65, 65, 74, 103, 105, 103, 107, 110, 110, 109, + 103, 100, 100, 100, 106, 105, 104, 102, 104, 109, 112, 109, 114, 113, 113, 112, + 112, 113, 117, 118, 112, 112, 112, 114, 113, 112, 110, 108, 103, 103, 101, 100, + 98, 96, 94, 92, 98, 96, 99, 102, 102, 98, 99, 104, 102, 99, 95, 91, + 87, 83, 81, 80, 77, 76, 74, 74, 77, 79, 80, 80, 86, 79, 77, 79, + 81, 78, 75, 79, 77, 82, 3, 18, 1, 13, 30, 23, 33, 255, 255, 255, + 255, 255, 255, 255, 255, 2, 1, 12, 9, 9, 11, 10, 7, 6, 9, 5, + 6, 9, 11, 14, 17, 19, 20, 16, 23, 65, 4, 24, 25, 33, 23, 22, + 27, 15, 16, 12, 7, 20, 17, 15, 18, 52, 64, 78, 107, 109, 102, 109, + 111, 111, 109, 103, 100, 100, 100, 105, 106, 105, 103, 106, 111, 113, 109, 120, + 119, 119, 117, 116, 116, 118, 118, 112, 112, 112, 113, 111, 111, 110, 109, 106, + 106, 105, 102, 100, 98, 96, 95, 98, 96, 99, 102, 102, 99, 100, 104, 103, + 102, 97, 93, 89, 85, 84, 82, 80, 78, 76, 76, 80, 82, 83, 85, 89, + 84, 81, 82, 83, 78, 73, 75, 88, 93, 12, 26, 18, 26, 31, 21, 32, + 255, 255, 255, 255, 255, 255, 255, 190, 5, 6, 10, 8, 7, 9, 9, 8, + 10, 15, 11, 11, 10, 10, 11, 14, 17, 18, 18, 30, 73, 5, 34, 28, + 29, 35, 26, 30, 18, 20, 20, 18, 31, 24, 33, 14, 40, 60, 78, 107, + 111, 106, 108, 111, 110, 108, 103, 101, 100, 103, 102, 105, 105, 104, 108, 113, + 116, 112, 118, 118, 120, 119, 119, 118, 119, 119, 115, 115, 115, 115, 114, 114, + 113, 114, 110, 108, 107, 106, 102, 101, 99, 99, 97, 96, 98, 102, 103, 99, + 102, 107, 106, 103, 98, 93, 89, 86, 85, 85, 87, 85, 82, 81, 84, 85, + 87, 87, 90, 83, 81, 82, 83, 78, 72, 74, 74, 77, 54, 24, 35, 39, + 25, 18, 31, 255, 255, 255, 255, 255, 255, 255, 29, 0, 3, 9, 7, 6, + 9, 10, 10, 15, 22, 22, 19, 15, 13, 13, 15, 19, 22, 19, 35, 71, + 10, 41, 39, 29, 47, 21, 25, 12, 16, 19, 19, 32, 23, 43, 8, 26, + 51, 72, 101, 109, 108, 109, 109, 109, 107, 102, 102, 103, 106, 100, 103, 104, + 104, 109, 115, 119, 115, 111, 112, 115, 117, 119, 119, 121, 121, 120, 120, 120, + 118, 117, 118, 118, 120, 112, 111, 108, 107, 106, 102, 101, 101, 97, 96, 98, + 100, 103, 99, 102, 107, 107, 105, 100, 95, 90, 88, 87, 87, 92, 89, 86, + 85, 86, 86, 88, 87, 87, 81, 79, 82, 85, 80, 76, 76, 72, 78, 106, + 8, 26, 42, 25, 26, 32, 255, 255, 255, 255, 255, 255, 255, 10, 10, 6, + 13, 10, 8, 11, 13, 12, 12, 14, 21, 23, 27, 33, 13, 6, 24, 9, + 34, 38, 27, 33, 24, 30, 61, 40, 27, 30, 18, 25, 17, 32, 25, 24, + 19, 16, 16, 36, 75, 109, 83, 107, 108, 108, 108, 107, 102, 101, 101, 103, + 103, 104, 105, 106, 107, 111, 118, 122, 117, 118, 118, 117, 119, 123, 121, 115, + 123, 124, 124, 123, 120, 118, 119, 120, 115, 113, 111, 108, 107, 105, 101, 96, + 99, 99, 99, 97, 99, 99, 103, 106, 106, 108, 106, 98, 91, 85, 87, 91, + 93, 90, 87, 86, 87, 87, 89, 88, 87, 84, 82, 81, 82, 80, 75, 74, + 76, 81, 87, 14, 30, 37, 17, 32, 31, 255, 255, 255, 255, 255, 255, 255, + 11, 12, 7, 16, 13, 11, 15, 16, 14, 14, 16, 18, 29, 19, 39, 8, + 23, 27, 16, 29, 34, 53, 51, 32, 29, 44, 64, 17, 27, 24, 35, 25, + 35, 21, 16, 17, 23, 35, 36, 42, 97, 100, 105, 110, 108, 110, 107, 102, + 99, 101, 103, 103, 104, 105, 106, 107, 111, 118, 122, 120, 121, 122, 120, 123, + 126, 125, 119, 124, 125, 126, 124, 120, 118, 118, 119, 119, 117, 115, 114, 111, + 108, 104, 99, 98, 99, 99, 97, 100, 100, 104, 107, 104, 106, 108, 103, 98, + 92, 92, 91, 93, 91, 87, 86, 87, 88, 89, 88, 89, 85, 84, 83, 83, + 81, 76, 73, 74, 79, 85, 30, 26, 40, 22, 37, 28, 255, 255, 255, 255, + 255, 255, 255, 12, 14, 10, 18, 14, 13, 17, 18, 15, 14, 16, 18, 32, + 21, 33, 16, 31, 36, 20, 33, 31, 62, 55, 42, 35, 30, 79, 36, 41, + 32, 40, 32, 49, 43, 45, 17, 31, 51, 37, 11, 80, 111, 105, 110, 108, + 110, 107, 102, 99, 101, 101, 103, 104, 105, 106, 107, 110, 117, 121, 121, 123, + 125, 123, 124, 128, 127, 122, 128, 129, 127, 125, 122, 120, 119, 120, 124, 122, + 118, 117, 115, 112, 105, 100, 98, 98, 99, 98, 100, 101, 106, 109, 105, 106, + 108, 107, 103, 98, 94, 93, 95, 93, 90, 89, 90, 90, 90, 89, 92, 88, + 84, 83, 82, 80, 74, 74, 72, 76, 84, 53, 20, 42, 28, 39, 49, 255, + 255, 255, 255, 255, 255, 55, 13, 15, 12, 18, 14, 13, 17, 18, 14, 12, + 13, 20, 30, 28, 21, 30, 32, 46, 24, 37, 34, 44, 40, 49, 41, 32, + 65, 41, 38, 24, 28, 25, 42, 39, 38, 24, 38, 45, 37, 17, 67, 101, + 111, 110, 110, 110, 106, 102, 99, 99, 101, 103, 104, 105, 105, 106, 110, 117, + 120, 120, 123, 125, 123, 124, 127, 127, 123, 127, 128, 127, 126, 123, 122, 122, + 123, 123, 122, 118, 117, 115, 112, 105, 99, 98, 97, 100, 99, 101, 102, 108, + 110, 110, 108, 106, 105, 104, 100, 97, 92, 96, 93, 90, 89, 90, 92, 91, + 91, 95, 91, 87, 85, 84, 81, 75, 72, 72, 74, 82, 75, 15, 40, 29, + 39, 50, 255, 255, 255, 255, 255, 255, 35, 15, 13, 14, 20, 17, 16, 19, + 20, 16, 13, 13, 15, 31, 18, 24, 30, 44, 49, 37, 21, 37, 26, 34, + 52, 36, 37, 37, 37, 38, 31, 41, 40, 51, 36, 27, 33, 39, 21, 36, + 41, 57, 74, 115, 110, 110, 110, 106, 102, 99, 99, 101, 103, 104, 105, 105, + 106, 109, 116, 119, 120, 124, 127, 125, 125, 128, 129, 126, 126, 127, 129, 128, + 125, 125, 126, 128, 124, 123, 122, 121, 118, 114, 109, 102, 100, 98, 101, 100, + 102, 102, 108, 110, 117, 113, 106, 102, 99, 99, 98, 95, 98, 95, 93, 92, + 91, 93, 93, 92, 96, 92, 88, 86, 83, 80, 75, 72, 72, 73, 78, 89, + 16, 35, 30, 37, 59, 255, 255, 255, 255, 255, 255, 23, 17, 8, 14, 24, + 21, 20, 24, 24, 19, 15, 15, 8, 33, 3, 36, 28, 57, 49, 57, 5, + 33, 29, 47, 53, 30, 39, 23, 38, 44, 43, 57, 59, 76, 71, 71, 44, + 45, 9, 35, 52, 49, 62, 113, 112, 110, 110, 106, 102, 99, 99, 101, 103, + 104, 105, 105, 105, 108, 115, 118, 122, 127, 131, 129, 128, 131, 132, 131, 127, + 128, 130, 129, 126, 126, 127, 129, 125, 124, 124, 125, 122, 118, 113, 106, 102, + 100, 103, 101, 103, 102, 108, 110, 118, 115, 107, 102, 98, 96, 98, 99, 98, + 96, 93, 93, 92, 94, 94, 93, 96, 92, 88, 86, 84, 81, 76, 73, 73, + 74, 75, 90, 23, 30, 29, 41, 47, 255, 255, 255, 255, 255, 255, 17, 19, + 3, 15, 26, 23, 22, 25, 25, 20, 16, 15, 15, 28, 15, 27, 48, 45, + 56, 66, 25, 22, 35, 56, 54, 38, 38, 33, 23, 38, 41, 54, 50, 73, + 82, 96, 59, 60, 25, 40, 37, 48, 79, 108, 112, 110, 110, 106, 102, 99, + 99, 101, 103, 104, 105, 104, 105, 108, 114, 118, 121, 127, 132, 129, 128, 130, + 133, 132, 131, 132, 132, 131, 128, 127, 125, 127, 123, 123, 124, 125, 123, 120, + 114, 108, 104, 102, 104, 101, 103, 102, 107, 109, 115, 115, 113, 106, 100, 98, + 99, 103, 98, 96, 94, 93, 95, 97, 95, 94, 94, 91, 85, 84, 84, 82, + 77, 74, 69, 72, 71, 87, 34, 28, 32, 46, 61, 255, 255, 255, 255, 255, + 255, 15, 17, 0, 15, 22, 21, 21, 24, 24, 18, 14, 13, 29, 19, 41, + 7, 78, 20, 66, 63, 59, 14, 36, 56, 56, 56, 40, 48, 14, 42, 58, + 71, 54, 62, 66, 80, 69, 72, 46, 45, 13, 50, 104, 104, 110, 110, 110, + 107, 102, 99, 101, 101, 105, 104, 107, 104, 107, 109, 114, 117, 120, 126, 130, + 127, 126, 129, 131, 132, 134, 135, 135, 130, 128, 124, 123, 123, 119, 120, 121, + 121, 121, 118, 113, 106, 107, 107, 107, 104, 103, 104, 106, 108, 110, 114, 116, + 112, 104, 100, 102, 105, 99, 96, 94, 94, 95, 97, 95, 95, 93, 90, 84, + 84, 84, 82, 77, 75, 70, 74, 71, 84, 44, 29, 35, 50, 61, 255, 255, + 255, 255, 255, 125, 45, 7, 14, 20, 26, 20, 11, 10, 19, 27, 22, 12, + 20, 30, 29, 24, 48, 52, 40, 71, 37, 47, 27, 67, 51, 35, 42, 47, + 54, 20, 61, 47, 44, 62, 86, 74, 52, 63, 96, 52, 26, 50, 104, 103, + 110, 107, 105, 106, 102, 99, 102, 107, 112, 109, 110, 108, 111, 112, 114, 115, + 122, 122, 124, 126, 130, 132, 134, 135, 133, 128, 125, 123, 125, 125, 124, 121, + 113, 115, 117, 118, 118, 116, 113, 113, 111, 112, 113, 115, 111, 106, 105, 108, + 109, 111, 108, 103, 101, 103, 103, 100, 97, 93, 92, 92, 93, 94, 93, 92, + 94, 93, 91, 90, 88, 83, 77, 75, 70, 75, 80, 77, 65, 21, 38, 49, + 50, 255, 255, 255, 255, 255, 119, 66, 10, 9, 16, 21, 23, 20, 16, 18, + 22, 20, 15, 27, 33, 31, 22, 41, 46, 40, 73, 43, 57, 41, 53, 64, + 41, 53, 42, 55, 23, 55, 50, 47, 61, 87, 67, 59, 65, 78, 37, 31, + 57, 104, 106, 108, 107, 106, 107, 103, 100, 103, 110, 111, 110, 110, 110, 111, + 113, 116, 117, 120, 121, 125, 128, 130, 131, 132, 133, 127, 126, 124, 124, 125, + 124, 119, 116, 114, 115, 115, 116, 115, 114, 111, 110, 110, 110, 111, 114, 112, + 107, 106, 110, 112, 113, 111, 105, 103, 105, 105, 101, 99, 95, 92, 92, 92, + 93, 92, 91, 92, 91, 89, 87, 86, 82, 77, 76, 77, 78, 80, 74, 67, + 25, 43, 53, 50, 255, 255, 255, 255, 255, 109, 95, 13, 4, 14, 18, 26, + 29, 24, 19, 18, 18, 17, 27, 31, 31, 21, 34, 42, 42, 76, 40, 62, + 48, 41, 74, 50, 62, 39, 53, 31, 49, 61, 53, 55, 88, 62, 68, 72, + 58, 28, 47, 74, 107, 112, 108, 108, 107, 108, 104, 101, 104, 110, 107, 107, + 107, 107, 109, 111, 115, 117, 117, 119, 123, 126, 128, 129, 129, 128, 129, 128, + 129, 130, 128, 125, 121, 117, 114, 114, 114, 113, 110, 108, 107, 108, 110, 109, + 110, 112, 109, 104, 103, 107, 111, 112, 110, 104, 102, 103, 103, 100, 99, 95, + 92, 92, 92, 92, 91, 89, 90, 88, 86, 85, 84, 81, 78, 77, 76, 72, + 70, 66, 62, 23, 40, 49, 51, 255, 255, 255, 255, 255, 102, 109, 13, 2, + 14, 16, 29, 33, 29, 22, 19, 19, 18, 17, 22, 30, 25, 33, 41, 43, + 71, 33, 60, 46, 46, 76, 56, 61, 43, 47, 35, 47, 72, 54, 49, 88, + 64, 63, 76, 49, 39, 72, 92, 107, 116, 109, 109, 109, 110, 106, 102, 104, + 109, 104, 104, 104, 105, 109, 111, 114, 118, 118, 119, 122, 126, 128, 128, 128, + 126, 130, 130, 129, 130, 128, 126, 121, 116, 116, 115, 113, 109, 107, 105, 104, + 103, 114, 111, 112, 110, 108, 99, 100, 101, 109, 108, 107, 99, 99, 99, 101, + 96, 96, 93, 91, 91, 92, 92, 92, 90, 89, 87, 85, 84, 84, 82, 79, + 79, 74, 67, 64, 62, 60, 23, 37, 42, 50, 255, 255, 255, 255, 255, 103, + 97, 10, 3, 14, 21, 28, 30, 26, 24, 23, 21, 18, 7, 12, 30, 30, + 33, 38, 36, 58, 26, 54, 38, 64, 72, 62, 61, 53, 44, 37, 51, 83, + 54, 47, 84, 70, 49, 77, 53, 66, 100, 106, 108, 117, 109, 110, 110, 111, + 108, 103, 103, 109, 104, 101, 101, 102, 106, 109, 111, 115, 117, 118, 121, 125, + 126, 127, 127, 127, 128, 123, 121, 120, 120, 120, 116, 115, 116, 113, 111, 109, + 106, 103, 101, 101, 113, 110, 110, 108, 105, 97, 98, 100, 105, 104, 104, 96, + 97, 97, 99, 95, 93, 91, 90, 90, 92, 93, 93, 92, 89, 87, 86, 86, + 85, 84, 81, 80, 73, 66, 66, 67, 65, 26, 35, 36, 43, 255, 255, 255, + 255, 255, 115, 64, 6, 5, 11, 25, 29, 27, 24, 25, 29, 28, 24, 10, + 11, 32, 35, 33, 36, 31, 42, 24, 47, 34, 72, 63, 64, 68, 55, 45, + 31, 52, 87, 53, 51, 77, 74, 46, 81, 61, 90, 115, 109, 108, 113, 110, + 108, 110, 113, 110, 105, 104, 108, 102, 102, 102, 102, 104, 106, 110, 112, 116, + 118, 119, 120, 121, 125, 126, 126, 126, 123, 120, 119, 120, 121, 119, 118, 113, + 112, 111, 110, 106, 103, 100, 99, 105, 105, 104, 105, 102, 98, 99, 104, 103, + 105, 103, 98, 97, 100, 101, 99, 93, 92, 90, 90, 91, 92, 92, 91, 88, + 87, 87, 87, 87, 84, 80, 78, 66, 63, 65, 67, 64, 22, 29, 28, 32, + 255, 255, 255, 255, 255, 134, 25, 2, 6, 5, 25, 29, 27, 23, 24, 30, + 34, 33, 19, 12, 31, 34, 30, 36, 34, 40, 28, 37, 34, 57, 51, 60, + 83, 43, 52, 24, 50, 84, 52, 64, 72, 78, 57, 88, 62, 103, 115, 105, + 109, 111, 110, 109, 111, 114, 109, 104, 105, 108, 103, 102, 101, 101, 102, 104, + 107, 108, 113, 114, 114, 113, 115, 119, 121, 123, 126, 125, 124, 124, 126, 126, + 123, 121, 111, 112, 112, 111, 108, 104, 101, 98, 101, 99, 98, 99, 97, 94, + 96, 101, 98, 100, 99, 95, 95, 99, 100, 100, 97, 96, 93, 92, 92, 92, + 91, 89, 88, 88, 89, 90, 89, 85, 79, 74, 63, 61, 64, 64, 59, 15, + 23, 23, 21, 255, 255, 255, 255, 131, 148, 0, 0, 7, 0, 24, 29, 28, + 22, 21, 28, 37, 41, 24, 12, 28, 30, 28, 38, 40, 46, 31, 29, 36, + 35, 39, 54, 92, 28, 57, 18, 48, 82, 53, 75, 67, 76, 68, 93, 62, + 106, 108, 101, 108, 110, 109, 109, 112, 113, 110, 105, 105, 108, 104, 102, 101, + 101, 102, 103, 106, 107, 112, 111, 111, 110, 111, 114, 119, 122, 120, 121, 122, + 125, 127, 126, 123, 118, 112, 111, 113, 112, 110, 105, 101, 98, 102, 99, 97, + 97, 94, 90, 91, 96, 95, 97, 96, 92, 93, 97, 99, 97, 102, 99, 95, + 93, 92, 90, 88, 86, 86, 87, 89, 90, 89, 84, 76, 71, 67, 64, 68, + 66, 60, 14, 24, 25, 94, 255, 255, 255, 255, 132, 130, 1, 8, 3, 5, + 17, 34, 26, 18, 32, 36, 32, 39, 21, 39, 39, 29, 33, 39, 41, 46, + 16, 40, 13, 48, 28, 65, 69, 53, 45, 36, 38, 76, 59, 48, 87, 61, + 70, 90, 42, 126, 103, 109, 107, 110, 113, 111, 110, 108, 108, 106, 105, 103, + 103, 102, 103, 104, 105, 105, 106, 106, 107, 106, 108, 107, 109, 113, 121, 124, + 131, 121, 121, 124, 121, 122, 122, 112, 113, 111, 113, 114, 115, 110, 104, 100, + 95, 96, 98, 99, 98, 96, 94, 92, 92, 96, 96, 94, 95, 98, 97, 94, + 103, 99, 94, 93, 93, 91, 87, 83, 87, 87, 86, 85, 88, 88, 80, 69, + 60, 65, 66, 65, 68, 0, 11, 12, 255, 255, 255, 255, 214, 126, 124, 4, + 12, 7, 9, 23, 33, 33, 31, 34, 32, 30, 37, 31, 38, 30, 25, 40, + 49, 42, 35, 26, 39, 10, 53, 45, 55, 72, 54, 44, 39, 38, 76, 69, + 55, 88, 70, 65, 83, 56, 117, 103, 110, 107, 109, 114, 113, 110, 110, 108, + 107, 106, 103, 101, 101, 103, 104, 105, 105, 106, 105, 106, 105, 104, 107, 113, + 120, 120, 121, 130, 122, 124, 127, 124, 125, 126, 116, 110, 109, 111, 111, 115, + 111, 107, 104, 98, 99, 99, 100, 98, 96, 94, 92, 91, 95, 95, 93, 93, + 96, 96, 95, 102, 98, 94, 93, 93, 92, 88, 84, 85, 86, 85, 83, 85, + 86, 79, 70, 64, 69, 66, 67, 53, 0, 7, 3, 255, 255, 255, 255, 132, + 125, 122, 13, 19, 13, 14, 25, 19, 24, 31, 26, 25, 38, 48, 22, 39, + 41, 32, 35, 38, 40, 47, 31, 35, 7, 50, 55, 34, 67, 46, 37, 37, + 32, 68, 74, 52, 71, 72, 58, 73, 77, 108, 105, 115, 107, 110, 115, 115, + 112, 111, 108, 108, 105, 105, 101, 102, 104, 105, 105, 104, 105, 104, 103, 103, + 103, 110, 119, 125, 122, 117, 129, 122, 125, 130, 127, 127, 128, 119, 120, 118, + 118, 116, 117, 112, 107, 103, 104, 104, 104, 103, 100, 97, 94, 92, 93, 95, + 95, 92, 93, 96, 97, 95, 100, 98, 95, 94, 96, 96, 92, 89, 87, 89, + 88, 85, 85, 85, 80, 73, 71, 71, 70, 73, 36, 0, 8, 0, 255, 255, + 255, 213, 133, 128, 120, 22, 19, 11, 13, 39, 18, 23, 35, 20, 11, 21, + 25, 17, 38, 43, 34, 30, 33, 44, 62, 29, 34, 16, 47, 58, 22, 71, + 45, 38, 41, 31, 57, 74, 52, 58, 70, 54, 67, 99, 101, 103, 118, 105, + 111, 114, 113, 113, 109, 107, 106, 104, 104, 103, 103, 104, 104, 105, 103, 101, + 102, 101, 102, 106, 114, 120, 121, 118, 115, 124, 118, 126, 130, 128, 132, 134, + 125, 127, 123, 122, 122, 121, 117, 113, 108, 109, 106, 107, 103, 102, 96, 95, + 91, 95, 95, 96, 90, 92, 95, 99, 97, 101, 97, 94, 95, 97, 98, 95, + 92, 90, 92, 91, 87, 86, 86, 81, 75, 75, 73, 74, 77, 30, 1, 16, + 0, 255, 255, 255, 127, 133, 130, 118, 33, 24, 14, 15, 27, 2, 8, 26, + 17, 10, 18, 21, 28, 32, 24, 21, 34, 44, 50, 61, 22, 36, 32, 47, + 59, 27, 80, 57, 40, 47, 38, 55, 78, 64, 62, 80, 56, 68, 113, 100, + 103, 117, 104, 112, 112, 111, 112, 108, 104, 100, 101, 102, 108, 107, 106, 104, + 103, 101, 99, 100, 107, 111, 114, 115, 110, 106, 105, 107, 118, 114, 124, 129, + 128, 133, 138, 130, 125, 124, 125, 127, 129, 127, 125, 120, 115, 111, 111, 106, + 104, 98, 97, 93, 98, 98, 98, 91, 94, 97, 102, 101, 101, 98, 95, 96, + 99, 100, 97, 94, 90, 92, 92, 89, 90, 91, 86, 79, 77, 76, 83, 82, + 39, 20, 32, 15, 255, 255, 255, 133, 136, 131, 121, 59, 54, 45, 44, 46, + 19, 4, 5, 0, 2, 22, 40, 30, 35, 29, 24, 32, 39, 47, 64, 22, + 28, 34, 42, 52, 34, 74, 62, 35, 45, 45, 57, 81, 78, 72, 82, 65, + 79, 115, 105, 102, 114, 104, 110, 108, 110, 109, 106, 100, 97, 98, 100, 108, + 108, 105, 102, 100, 99, 101, 101, 115, 117, 116, 107, 95, 88, 88, 94, 112, + 108, 116, 122, 120, 127, 134, 128, 135, 134, 136, 138, 139, 135, 131, 125, 120, + 117, 114, 110, 106, 102, 100, 98, 101, 102, 99, 94, 94, 100, 104, 103, 103, + 100, 98, 98, 101, 102, 100, 97, 89, 90, 89, 89, 92, 94, 86, 76, 72, + 69, 84, 79, 55, 34, 42, 36, 255, 255, 214, 138, 131, 121, 118, 87, 96, + 90, 86, 108, 92, 63, 37, 17, 0, 4, 26, 33, 44, 42, 34, 30, 27, + 36, 59, 40, 22, 31, 39, 44, 33, 47, 54, 24, 37, 51, 59, 79, 89, + 77, 72, 75, 92, 109, 110, 100, 109, 103, 110, 107, 110, 109, 106, 99, 96, + 97, 102, 107, 106, 103, 100, 99, 101, 105, 107, 117, 114, 107, 95, 84, 79, + 82, 87, 102, 97, 105, 107, 103, 109, 118, 115, 128, 128, 132, 137, 138, 133, + 129, 122, 125, 123, 120, 116, 111, 108, 105, 104, 105, 106, 102, 96, 96, 103, + 107, 108, 107, 104, 101, 102, 104, 105, 102, 99, 96, 93, 88, 88, 91, 89, + 75, 60, 57, 52, 76, 64, 65, 32, 41, 45, 255, 255, 127, 130, 118, 101, + 103, 98, 117, 116, 108, 110, 126, 120, 102, 78, 38, 14, 25, 48, 44, 34, + 30, 38, 37, 30, 36, 67, 22, 32, 44, 44, 33, 26, 46, 22, 36, 59, + 65, 80, 92, 77, 61, 80, 99, 103, 113, 97, 104, 102, 109, 107, 110, 110, + 107, 101, 95, 99, 102, 102, 101, 97, 95, 98, 102, 108, 112, 113, 107, 94, + 83, 79, 80, 83, 88, 92, 89, 93, 94, 87, 93, 102, 100, 94, 99, 107, + 118, 126, 129, 126, 121, 128, 125, 123, 118, 115, 111, 109, 107, 107, 106, 103, + 96, 97, 103, 109, 109, 108, 107, 103, 103, 106, 106, 103, 100, 104, 98, 90, + 86, 89, 83, 62, 45, 45, 41, 69, 51, 68, 27, 33, 46, 255, 255, 129, + 124, 105, 94, 103, 106, 98, 99, 110, 111, 115, 116, 112, 104, 85, 52, 24, + 24, 28, 31, 36, 36, 23, 23, 39, 55, 30, 41, 36, 57, 58, 27, 61, + 48, 32, 51, 79, 70, 101, 76, 73, 91, 95, 101, 104, 103, 102, 100, 101, + 107, 110, 111, 107, 101, 97, 102, 104, 98, 96, 91, 91, 98, 106, 106, 100, + 105, 97, 85, 78, 78, 78, 76, 75, 83, 85, 73, 59, 60, 73, 79, 76, + 68, 72, 71, 78, 97, 122, 131, 124, 124, 117, 124, 104, 117, 106, 116, 106, + 107, 107, 106, 97, 97, 101, 111, 115, 115, 114, 111, 108, 108, 105, 106, 108, + 101, 89, 86, 91, 86, 76, 55, 30, 24, 39, 42, 60, 72, 34, 14, 48, + 255, 255, 124, 102, 100, 101, 107, 111, 108, 101, 98, 103, 111, 115, 112, 113, + 109, 94, 75, 43, 32, 59, 36, 51, 13, 37, 37, 43, 26, 35, 15, 43, + 57, 36, 56, 48, 32, 48, 67, 77, 100, 84, 85, 94, 96, 100, 102, 101, + 100, 101, 102, 105, 107, 108, 105, 100, 97, 100, 102, 96, 98, 98, 96, 96, + 96, 92, 87, 106, 95, 82, 73, 71, 73, 74, 76, 66, 68, 61, 50, 50, + 58, 60, 54, 50, 53, 57, 59, 63, 77, 91, 97, 112, 114, 121, 107, 107, + 101, 110, 108, 105, 104, 102, 94, 96, 101, 109, 112, 114, 111, 107, 108, 108, + 108, 108, 106, 105, 93, 88, 80, 62, 49, 38, 23, 14, 29, 32, 50, 64, + 34, 10, 255, 255, 212, 117, 95, 106, 113, 114, 113, 112, 104, 91, 102, 115, + 118, 109, 112, 124, 125, 114, 87, 63, 50, 68, 53, 56, 39, 22, 20, 25, + 47, 10, 32, 47, 42, 50, 44, 30, 40, 43, 81, 90, 87, 92, 99, 99, + 101, 102, 101, 100, 100, 101, 102, 104, 105, 103, 99, 97, 98, 101, 77, 88, + 97, 99, 98, 97, 95, 94, 83, 78, 75, 75, 81, 88, 93, 94, 89, 92, + 90, 81, 82, 83, 80, 71, 66, 58, 50, 45, 41, 39, 43, 47, 83, 100, + 112, 115, 104, 106, 108, 113, 111, 109, 105, 99, 102, 109, 114, 114, 114, 110, + 104, 105, 108, 109, 107, 103, 94, 85, 81, 65, 39, 27, 27, 23, 3, 17, + 19, 34, 55, 39, 14, 255, 255, 121, 106, 109, 116, 120, 116, 108, 101, 98, + 94, 109, 123, 124, 107, 104, 120, 126, 118, 113, 88, 61, 100, 57, 79, 40, + 14, 7, 27, 63, 28, 33, 33, 41, 48, 43, 32, 39, 29, 86, 80, 88, + 90, 102, 101, 101, 100, 99, 99, 99, 99, 101, 103, 104, 103, 99, 97, 97, + 98, 93, 103, 108, 99, 88, 83, 82, 82, 77, 80, 89, 100, 110, 116, 118, + 117, 106, 109, 108, 104, 103, 104, 99, 91, 103, 79, 60, 57, 55, 44, 31, + 25, 50, 76, 92, 115, 103, 116, 109, 115, 114, 111, 105, 101, 105, 113, 116, + 115, 118, 113, 106, 104, 107, 110, 104, 96, 81, 73, 68, 53, 28, 22, 28, + 31, 22, 34, 31, 33, 45, 39, 19, 255, 255, 117, 94, 116, 114, 118, 121, + 108, 91, 91, 103, 113, 130, 133, 116, 109, 115, 118, 111, 106, 91, 108, 102, + 73, 48, 44, 20, 16, 22, 48, 36, 38, 32, 42, 45, 42, 35, 42, 31, + 93, 77, 95, 92, 103, 100, 99, 98, 98, 98, 97, 96, 101, 103, 104, 103, + 101, 98, 95, 96, 95, 103, 102, 90, 79, 80, 87, 93, 110, 112, 117, 121, + 124, 123, 122, 117, 111, 109, 108, 105, 107, 108, 105, 100, 106, 87, 75, 78, + 79, 67, 56, 50, 41, 62, 72, 96, 93, 114, 110, 115, 110, 108, 103, 99, + 103, 110, 113, 110, 115, 113, 105, 102, 104, 108, 102, 91, 75, 60, 49, 37, + 24, 31, 46, 50, 67, 70, 61, 46, 41, 36, 25, 255, 255, 113, 89, 105, + 105, 114, 123, 108, 86, 89, 109, 110, 124, 133, 127, 119, 115, 111, 105, 99, + 98, 109, 105, 74, 50, 38, 21, 33, 16, 14, 30, 35, 43, 44, 41, 37, + 30, 39, 39, 89, 73, 101, 90, 102, 99, 98, 98, 99, 98, 96, 93, 102, + 103, 104, 104, 101, 97, 92, 91, 84, 89, 87, 79, 81, 93, 109, 117, 131, + 128, 123, 119, 115, 114, 115, 113, 116, 111, 110, 108, 108, 108, 108, 106, 90, + 94, 97, 96, 88, 78, 77, 80, 62, 66, 63, 71, 76, 97, 105, 111, 107, + 107, 103, 99, 101, 108, 111, 109, 107, 106, 101, 95, 95, 99, 93, 82, 59, + 42, 32, 27, 32, 55, 80, 87, 87, 87, 79, 61, 47, 43, 41, 255, 255, + 113, 91, 93, 102, 113, 113, 98, 86, 97, 113, 120, 129, 141, 143, 133, 115, + 103, 95, 102, 106, 90, 103, 75, 73, 37, 24, 35, 19, 2, 33, 25, 47, + 43, 30, 38, 31, 39, 47, 76, 65, 101, 84, 102, 99, 99, 100, 102, 101, + 97, 93, 101, 102, 103, 102, 100, 94, 88, 87, 100, 100, 94, 87, 91, 103, + 111, 114, 123, 121, 117, 113, 112, 113, 118, 119, 113, 105, 103, 102, 101, 99, + 99, 98, 88, 100, 106, 100, 90, 85, 89, 90, 90, 83, 78, 66, 77, 87, + 104, 107, 107, 109, 107, 103, 102, 108, 112, 113, 100, 103, 99, 86, 81, 83, + 78, 66, 44, 32, 34, 44, 57, 80, 101, 103, 86, 81, 79, 69, 56, 49, + 119, 255, 255, 115, 98, 91, 108, 115, 100, 83, 85, 103, 115, 142, 145, 155, + 160, 143, 116, 94, 88, 102, 102, 118, 83, 98, 54, 51, 39, 24, 27, 11, + 47, 14, 43, 35, 25, 50, 39, 45, 58, 71, 63, 103, 83, 102, 99, 100, + 102, 104, 103, 98, 93, 101, 101, 101, 101, 98, 92, 85, 82, 95, 96, 93, + 96, 107, 121, 129, 126, 121, 122, 124, 124, 125, 125, 128, 125, 119, 111, 107, + 107, 107, 103, 99, 98, 94, 100, 101, 96, 97, 104, 102, 96, 102, 95, 96, + 75, 87, 85, 103, 103, 100, 104, 104, 99, 96, 101, 106, 109, 100, 103, 97, + 81, 70, 67, 61, 48, 45, 42, 56, 71, 82, 92, 96, 87, 89, 79, 78, + 72, 58, 47, 255, 255, 255, 89, 101, 83, 118, 113, 106, 87, 82, 115, 115, + 137, 125, 116, 114, 108, 101, 97, 99, 97, 106, 102, 92, 89, 79, 57, 45, + 31, 21, 27, 25, 24, 49, 14, 40, 40, 23, 48, 79, 54, 77, 79, 83, + 91, 98, 104, 103, 101, 101, 100, 98, 102, 100, 98, 99, 100, 96, 86, 81, + 100, 109, 112, 109, 111, 120, 124, 121, 112, 125, 110, 118, 122, 116, 121, 118, + 110, 103, 105, 107, 101, 92, 95, 106, 98, 91, 91, 94, 98, 98, 98, 101, + 101, 109, 111, 101, 88, 84, 94, 106, 104, 103, 98, 92, 91, 97, 102, 100, + 88, 91, 82, 72, 73, 44, 33, 48, 73, 66, 73, 90, 95, 88, 88, 96, + 83, 86, 84, 61, 76, 46, 255, 255, 255, 98, 98, 92, 114, 112, 98, 87, + 92, 114, 117, 104, 128, 130, 110, 108, 123, 116, 88, 93, 105, 102, 91, 92, + 86, 74, 70, 29, 20, 42, 33, 44, 47, 20, 34, 28, 27, 54, 75, 52, + 83, 83, 82, 90, 94, 99, 99, 99, 101, 100, 97, 103, 101, 100, 99, 98, + 93, 86, 84, 100, 110, 113, 108, 108, 115, 117, 113, 128, 130, 110, 112, 117, + 110, 111, 101, 88, 83, 80, 81, 89, 98, 97, 92, 93, 94, 98, 96, 89, + 84, 96, 110, 101, 106, 107, 104, 99, 99, 104, 109, 107, 107, 103, 96, 94, + 98, 100, 96, 82, 91, 74, 68, 55, 55, 51, 72, 80, 86, 89, 86, 89, + 91, 83, 68, 73, 79, 85, 72, 82, 48, 255, 255, 255, 112, 95, 104, 108, + 111, 91, 87, 106, 114, 119, 121, 114, 120, 131, 130, 113, 104, 107, 92, 106, + 105, 92, 93, 92, 90, 93, 48, 29, 44, 14, 35, 29, 22, 37, 17, 28, + 58, 69, 55, 87, 90, 83, 95, 96, 97, 97, 99, 102, 100, 95, 102, 102, + 102, 99, 95, 91, 89, 91, 109, 120, 122, 117, 113, 118, 116, 111, 113, 102, + 79, 80, 96, 100, 116, 107, 108, 107, 98, 87, 87, 93, 85, 69, 73, 80, + 89, 94, 88, 80, 85, 92, 101, 102, 103, 106, 110, 111, 110, 108, 106, 108, + 105, 99, 95, 95, 93, 87, 100, 88, 68, 53, 49, 55, 62, 71, 63, 67, + 66, 59, 58, 68, 76, 74, 77, 79, 84, 79, 77, 43, 255, 255, 255, 125, + 98, 112, 105, 112, 86, 85, 113, 114, 127, 127, 134, 129, 113, 117, 135, 129, + 107, 95, 109, 108, 93, 91, 91, 93, 100, 74, 47, 36, 7, 22, 24, 22, + 38, 19, 23, 50, 60, 62, 90, 94, 91, 103, 101, 100, 98, 100, 104, 101, + 94, 99, 101, 103, 99, 94, 92, 95, 101, 117, 127, 131, 123, 119, 118, 115, + 106, 95, 85, 77, 82, 103, 107, 130, 116, 89, 89, 85, 78, 76, 81, 89, + 92, 73, 67, 69, 77, 86, 85, 81, 80, 100, 102, 104, 109, 114, 115, 111, + 106, 107, 110, 108, 102, 98, 95, 90, 82, 96, 53, 49, 47, 70, 67, 86, + 79, 95, 84, 81, 83, 68, 51, 58, 83, 81, 77, 79, 75, 66, 110, 255, + 255, 255, 132, 105, 110, 105, 114, 87, 84, 113, 117, 135, 133, 129, 118, 109, + 121, 143, 139, 117, 94, 108, 107, 93, 93, 93, 93, 97, 84, 63, 32, 24, + 28, 41, 26, 37, 34, 19, 39, 53, 73, 91, 94, 100, 101, 100, 99, 98, + 101, 106, 103, 97, 96, 100, 102, 100, 96, 96, 102, 110, 112, 122, 127, 118, + 113, 110, 105, 94, 88, 80, 87, 87, 92, 72, 86, 58, 41, 34, 36, 54, + 62, 63, 67, 77, 79, 67, 61, 65, 75, 79, 82, 86, 94, 98, 102, 107, + 109, 109, 109, 108, 111, 114, 112, 106, 101, 97, 91, 83, 95, 45, 42, 83, + 65, 55, 55, 62, 89, 75, 72, 86, 81, 64, 64, 81, 74, 74, 76, 76, + 58, 255, 255, 255, 255, 130, 117, 104, 107, 110, 90, 88, 111, 125, 138, 144, + 113, 105, 128, 142, 126, 114, 117, 94, 103, 99, 89, 95, 99, 97, 98, 93, + 75, 31, 31, 30, 49, 36, 47, 43, 20, 34, 46, 80, 92, 94, 103, 92, + 94, 96, 97, 101, 105, 105, 100, 97, 101, 103, 102, 99, 101, 107, 114, 111, + 121, 123, 113, 108, 105, 97, 88, 87, 71, 74, 54, 45, 17, 43, 15, 24, + 11, 28, 73, 96, 73, 36, 15, 49, 53, 66, 74, 74, 69, 70, 76, 88, + 94, 100, 101, 104, 106, 112, 115, 122, 122, 120, 111, 105, 101, 96, 89, 90, + 51, 41, 120, 28, 23, 0, 25, 46, 33, 21, 23, 40, 61, 73, 78, 77, + 84, 87, 85, 51, 255, 255, 255, 255, 125, 129, 99, 110, 102, 94, 95, 111, + 135, 136, 129, 129, 128, 126, 132, 131, 113, 88, 99, 104, 94, 86, 99, 108, + 106, 104, 98, 82, 47, 38, 43, 43, 45, 53, 41, 27, 45, 42, 82, 94, + 96, 100, 91, 95, 100, 100, 101, 103, 102, 99, 102, 104, 105, 104, 103, 105, + 109, 114, 112, 119, 120, 113, 107, 103, 97, 88, 99, 71, 71, 49, 47, 31, + 77, 58, 38, 31, 48, 91, 118, 101, 54, 20, 20, 30, 53, 72, 77, 73, + 69, 70, 94, 95, 97, 95, 99, 103, 113, 117, 130, 127, 123, 110, 103, 97, + 94, 87, 57, 19, 28, 108, 23, 20, 10, 29, 93, 75, 51, 30, 21, 29, + 47, 63, 79, 91, 91, 81, 36, 255, 255, 255, 255, 120, 139, 96, 112, 94, + 96, 101, 111, 141, 133, 134, 113, 117, 145, 147, 117, 101, 112, 109, 109, 94, + 86, 102, 116, 112, 107, 93, 87, 79, 63, 74, 43, 43, 36, 31, 32, 52, + 39, 80, 94, 99, 95, 97, 103, 108, 106, 102, 101, 99, 96, 106, 107, 107, + 106, 106, 107, 109, 109, 109, 116, 118, 110, 105, 103, 97, 90, 87, 64, 80, + 71, 84, 71, 118, 92, 84, 71, 58, 64, 80, 84, 70, 52, 28, 23, 28, + 47, 70, 85, 89, 92, 106, 102, 95, 93, 96, 104, 111, 115, 132, 130, 121, + 107, 97, 93, 88, 83, 67, 8, 38, 83, 50, 27, 43, 29, 141, 128, 118, + 100, 51, 6, 17, 56, 72, 85, 81, 68, 23, 255, 255, 255, 255, 131, 126, + 116, 108, 91, 111, 81, 133, 137, 119, 123, 115, 135, 170, 126, 116, 115, 118, + 112, 105, 105, 119, 128, 124, 117, 116, 95, 95, 83, 70, 75, 84, 73, 49, + 26, 23, 21, 32, 60, 87, 100, 100, 95, 94, 95, 96, 98, 99, 100, 101, + 106, 107, 107, 106, 106, 107, 111, 115, 110, 111, 111, 109, 111, 114, 113, 108, + 102, 97, 94, 96, 102, 104, 102, 99, 109, 103, 93, 82, 75, 73, 77, 81, + 68, 68, 74, 77, 74, 71, 86, 107, 108, 93, 88, 96, 99, 94, 102, 116, + 123, 129, 130, 117, 102, 93, 89, 88, 32, 30, 25, 26, 33, 28, 37, 59, + 130, 123, 109, 86, 56, 35, 31, 37, 57, 76, 100, 46, 110, 255, 255, 255, + 255, 134, 126, 122, 101, 101, 103, 92, 133, 136, 118, 120, 113, 132, 168, 139, + 135, 121, 111, 115, 107, 109, 126, 137, 133, 120, 114, 102, 98, 90, 81, 88, + 94, 87, 72, 47, 40, 30, 31, 50, 74, 89, 91, 95, 94, 96, 98, 99, + 100, 100, 100, 104, 105, 105, 104, 104, 105, 109, 110, 112, 112, 112, 109, 112, + 115, 113, 109, 104, 100, 97, 96, 101, 102, 101, 99, 106, 102, 96, 89, 84, + 82, 84, 85, 80, 81, 88, 96, 93, 88, 95, 108, 106, 93, 90, 98, 100, + 94, 101, 113, 118, 124, 127, 117, 104, 94, 86, 80, 35, 40, 37, 39, 43, + 40, 43, 60, 95, 69, 48, 53, 66, 67, 49, 32, 55, 76, 95, 39, 255, + 255, 255, 255, 255, 134, 127, 128, 97, 110, 95, 101, 134, 132, 117, 121, 126, + 147, 163, 130, 129, 131, 130, 113, 107, 114, 134, 144, 138, 123, 115, 104, 96, + 90, 88, 94, 96, 95, 92, 90, 85, 76, 71, 80, 94, 104, 105, 95, 95, + 98, 100, 101, 101, 100, 99, 104, 105, 105, 105, 104, 106, 109, 110, 114, 114, + 113, 110, 111, 114, 115, 110, 106, 105, 106, 105, 105, 105, 106, 106, 104, 103, + 100, 97, 94, 92, 91, 90, 86, 84, 88, 94, 93, 89, 93, 104, 105, 95, + 93, 100, 101, 94, 99, 109, 112, 118, 121, 116, 107, 96, 82, 71, 60, 74, + 75, 74, 79, 79, 77, 84, 85, 71, 63, 73, 85, 85, 74, 66, 60, 80, + 85, 32, 255, 255, 255, 255, 255, 134, 129, 131, 101, 111, 97, 101, 136, 121, + 115, 112, 122, 142, 150, 132, 131, 131, 124, 110, 110, 121, 142, 150, 140, 126, + 119, 107, 95, 89, 89, 91, 89, 91, 97, 89, 92, 95, 94, 97, 103, 104, + 100, 96, 96, 100, 102, 103, 101, 99, 97, 106, 107, 108, 108, 108, 109, 112, + 114, 116, 115, 113, 110, 111, 114, 115, 110, 110, 111, 113, 112, 110, 110, 111, + 112, 105, 103, 100, 99, 97, 96, 94, 93, 90, 83, 79, 80, 81, 83, 92, + 101, 103, 97, 97, 103, 101, 94, 97, 105, 110, 114, 117, 113, 107, 98, 83, + 68, 66, 86, 91, 84, 89, 93, 91, 89, 82, 85, 91, 90, 80, 71, 74, + 81, 74, 88, 73, 104, 255, 255, 255, 255, 255, 134, 130, 132, 114, 102, 104, + 93, 134, 109, 113, 115, 117, 136, 159, 181, 181, 155, 116, 107, 112, 125, 145, + 150, 139, 128, 126, 110, 98, 91, 92, 92, 86, 91, 100, 76, 85, 93, 96, + 99, 102, 99, 91, 97, 97, 100, 102, 103, 101, 98, 96, 106, 107, 109, 109, + 109, 110, 112, 114, 117, 117, 114, 110, 111, 114, 115, 111, 114, 115, 116, 115, + 114, 113, 113, 114, 106, 101, 96, 94, 94, 94, 94, 92, 91, 85, 81, 82, + 85, 89, 96, 103, 104, 101, 102, 105, 102, 95, 97, 103, 111, 113, 114, 110, + 107, 100, 87, 73, 65, 85, 88, 78, 82, 90, 89, 86, 86, 80, 79, 81, + 81, 78, 77, 80, 83, 87, 54, 255, 255, 255, 255, 255, 255, 137, 130, 129, + 129, 94, 110, 92, 124, 110, 113, 113, 115, 133, 150, 181, 180, 168, 142, 109, + 112, 123, 141, 147, 138, 130, 130, 109, 97, 89, 90, 91, 88, 93, 100, 90, + 95, 98, 100, 103, 107, 106, 102, 99, 98, 100, 101, 101, 99, 97, 96, 103, + 105, 107, 108, 107, 108, 110, 112, 117, 117, 114, 110, 111, 115, 117, 113, 115, + 115, 114, 113, 114, 112, 110, 108, 104, 99, 92, 90, 91, 94, 94, 93, 86, + 88, 91, 94, 97, 98, 100, 101, 106, 105, 107, 107, 102, 95, 97, 102, 109, + 112, 113, 109, 107, 102, 91, 80, 68, 84, 86, 77, 81, 88, 88, 88, 91, + 85, 80, 83, 88, 87, 87, 89, 83, 79, 36, 255, 255, 255, 255, 255, 255, + 137, 131, 126, 137, 92, 107, 101, 109, 121, 119, 99, 103, 114, 105, 121, 113, + 130, 143, 116, 108, 114, 133, 143, 140, 132, 128, 109, 99, 90, 88, 90, 91, + 94, 94, 93, 95, 94, 95, 99, 105, 105, 101, 100, 98, 99, 99, 98, 97, + 96, 95, 103, 105, 108, 108, 108, 108, 110, 112, 116, 116, 113, 110, 113, 118, + 120, 117, 120, 117, 116, 116, 116, 114, 110, 105, 102, 94, 89, 89, 93, 97, + 97, 95, 85, 91, 96, 98, 98, 99, 100, 100, 109, 109, 111, 109, 102, 96, + 98, 103, 104, 109, 113, 111, 108, 103, 94, 83, 60, 72, 74, 69, 74, 76, + 77, 81, 83, 83, 83, 83, 78, 73, 77, 85, 82, 78, 30, 255, 255, 255, + 255, 255, 255, 137, 133, 125, 139, 96, 101, 113, 99, 133, 122, 117, 111, 112, + 95, 109, 90, 105, 119, 120, 107, 106, 125, 142, 143, 133, 126, 116, 107, 97, + 89, 91, 96, 96, 91, 93, 93, 96, 97, 103, 107, 106, 99, 101, 98, 98, + 97, 96, 96, 95, 95, 105, 107, 110, 111, 111, 111, 112, 114, 116, 116, 113, + 109, 113, 118, 121, 118, 126, 121, 119, 119, 121, 119, 112, 105, 99, 93, 90, + 93, 98, 102, 101, 99, 95, 99, 101, 98, 97, 100, 105, 109, 111, 112, 113, + 110, 102, 96, 99, 104, 99, 106, 114, 113, 109, 103, 94, 84, 66, 75, 76, + 75, 81, 80, 78, 85, 88, 82, 80, 84, 85, 81, 77, 79, 87, 83, 34, + 255, 255, 255, 255, 255, 255, 133, 133, 126, 134, 114, 96, 101, 121, 87, 122, + 122, 121, 113, 108, 111, 113, 99, 79, 94, 90, 76, 112, 142, 140, 141, 118, + 108, 104, 94, 85, 87, 94, 99, 95, 92, 93, 95, 95, 97, 99, 102, 103, + 99, 100, 102, 101, 97, 95, 96, 97, 104, 105, 107, 107, 108, 110, 114, 117, + 119, 118, 117, 115, 117, 117, 119, 119, 117, 124, 127, 123, 122, 122, 118, 110, + 99, 89, 85, 88, 93, 94, 96, 99, 96, 98, 101, 104, 106, 107, 108, 108, + 110, 109, 109, 108, 101, 94, 98, 105, 101, 99, 104, 112, 111, 101, 93, 90, + 71, 59, 75, 77, 74, 85, 87, 92, 90, 88, 88, 87, 87, 83, 76, 74, + 76, 78, 38, 255, 255, 255, 255, 255, 255, 136, 133, 131, 127, 126, 118, 102, + 128, 108, 103, 112, 114, 109, 106, 114, 125, 123, 114, 88, 86, 75, 106, 133, + 135, 141, 126, 109, 104, 94, 83, 85, 93, 97, 94, 92, 93, 93, 93, 95, + 98, 100, 100, 96, 97, 100, 100, 98, 97, 97, 99, 103, 105, 106, 107, 108, + 110, 113, 116, 119, 118, 118, 117, 120, 120, 121, 121, 121, 127, 129, 125, 124, + 124, 120, 114, 107, 97, 91, 91, 93, 93, 93, 95, 97, 100, 104, 108, 111, + 111, 111, 111, 116, 113, 111, 107, 100, 95, 100, 107, 103, 101, 106, 112, 112, + 103, 96, 93, 78, 63, 76, 76, 73, 83, 86, 92, 92, 90, 90, 90, 90, + 85, 78, 75, 79, 80, 110, 255, 255, 255, 255, 255, 255, 255, 133, 137, 120, + 134, 131, 96, 125, 126, 99, 114, 116, 115, 112, 116, 130, 136, 133, 108, 106, + 98, 114, 124, 124, 131, 124, 111, 104, 94, 85, 86, 92, 95, 93, 91, 93, + 93, 94, 95, 98, 99, 98, 91, 93, 97, 99, 99, 99, 99, 99, 103, 104, + 106, 107, 107, 109, 112, 115, 118, 118, 122, 123, 123, 124, 126, 126, 128, 131, + 131, 128, 126, 125, 124, 118, 110, 99, 93, 93, 94, 92, 91, 92, 97, 100, + 106, 111, 114, 115, 113, 112, 120, 116, 111, 107, 100, 95, 101, 109, 103, 102, + 107, 112, 112, 105, 99, 96, 85, 66, 77, 76, 75, 84, 85, 92, 95, 93, + 94, 94, 94, 89, 80, 77, 79, 78, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 141, 122, 134, 127, 92, 97, 117, 119, 118, 118, 116, 111, 115, 127, 131, + 126, 126, 126, 122, 124, 121, 117, 119, 118, 112, 104, 94, 86, 87, 89, 92, + 92, 91, 90, 91, 94, 94, 95, 97, 96, 88, 91, 95, 98, 99, 99, 98, + 98, 102, 104, 106, 107, 107, 109, 111, 114, 117, 119, 123, 125, 126, 127, 128, + 128, 129, 128, 126, 123, 121, 119, 117, 111, 107, 98, 93, 94, 97, 96, 95, + 97, 96, 101, 107, 114, 117, 117, 116, 114, 117, 113, 110, 107, 102, 97, 101, + 107, 101, 101, 105, 109, 110, 106, 102, 97, 85, 65, 77, 82, 79, 87, 85, + 95, 95, 94, 94, 95, 95, 89, 80, 77, 74, 70, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 132, 131, 122, 98, 55, 74, 124, 118, 116, 107, 101, + 108, 122, 127, 122, 118, 120, 124, 121, 117, 117, 114, 116, 110, 101, 92, 88, + 89, 89, 90, 90, 89, 90, 91, 94, 94, 94, 95, 93, 89, 90, 93, 96, + 98, 98, 97, 96, 103, 105, 107, 108, 108, 109, 111, 113, 119, 120, 123, 125, + 129, 129, 129, 129, 128, 124, 120, 119, 119, 115, 111, 106, 107, 98, 94, 97, + 100, 99, 98, 100, 96, 101, 107, 113, 117, 117, 116, 114, 110, 108, 107, 107, + 104, 98, 99, 102, 97, 99, 103, 104, 106, 105, 102, 97, 82, 64, 79, 88, + 88, 93, 89, 97, 96, 94, 95, 96, 95, 90, 81, 76, 73, 64, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 127, 111, 23, 24, 90, 116, + 117, 111, 104, 108, 121, 128, 127, 117, 118, 128, 120, 116, 121, 111, 114, 109, + 99, 91, 88, 90, 88, 90, 92, 89, 90, 91, 92, 93, 93, 91, 91, 89, + 89, 90, 92, 95, 97, 97, 96, 104, 106, 109, 110, 110, 110, 111, 113, 119, + 120, 122, 124, 127, 128, 128, 128, 134, 128, 126, 128, 131, 126, 120, 116, 114, + 104, 100, 101, 103, 100, 98, 98, 98, 101, 107, 112, 115, 116, 115, 113, 108, + 105, 105, 107, 104, 98, 96, 98, 94, 97, 100, 100, 102, 105, 103, 98, 83, + 62, 80, 92, 93, 97, 93, 99, 96, 94, 94, 93, 93, 89, 81, 79, 77, + 60, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 131, 117, 12, + 0, 41, 73, 91, 108, 112, 113, 121, 125, 125, 127, 123, 133, 121, 117, 126, + 110, 112, 108, 97, 90, 89, 92, 89, 90, 93, 88, 90, 91, 92, 93, 92, + 90, 89, 88, 86, 86, 88, 94, 98, 100, 99, 105, 108, 111, 112, 111, 111, + 112, 113, 120, 120, 120, 121, 124, 125, 126, 127, 136, 130, 132, 139, 143, 139, + 133, 129, 120, 110, 105, 106, 106, 102, 99, 98, 99, 102, 106, 110, 112, 113, + 113, 114, 113, 108, 105, 105, 102, 95, 94, 95, 93, 96, 99, 98, 100, 105, + 104, 99, 87, 65, 79, 91, 95, 99, 94, 102, 101, 97, 95, 94, 93, 90, + 84, 81, 75, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 130, 117, 16, 0, 9, 9, 51, 94, 115, 118, 119, 121, 121, 126, 119, 129, + 116, 119, 134, 120, 122, 107, 96, 89, 90, 92, 89, 91, 94, 88, 90, 91, + 94, 93, 92, 89, 88, 86, 84, 83, 86, 93, 99, 102, 103, 106, 108, 112, + 113, 113, 110, 113, 114, 119, 120, 119, 119, 119, 123, 125, 126, 127, 122, 126, + 136, 143, 139, 135, 131, 122, 113, 108, 110, 111, 107, 104, 104, 103, 103, 106, + 109, 112, 113, 113, 114, 117, 112, 106, 103, 99, 93, 92, 93, 93, 97, 99, + 97, 100, 106, 105, 99, 92, 67, 79, 90, 94, 98, 94, 104, 103, 98, 93, + 91, 91, 88, 84, 81, 70, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 211, 101, 3, 6, 9, 13, 32, 56, 102, 114, 128, 120, 125, + 128, 130, 131, 129, 129, 132, 130, 123, 107, 92, 86, 89, 91, 87, 90, 96, + 91, 91, 90, 92, 93, 93, 89, 87, 86, 86, 85, 87, 89, 96, 102, 106, + 106, 109, 112, 111, 109, 109, 114, 118, 111, 116, 117, 115, 116, 122, 124, 122, + 134, 126, 125, 132, 148, 156, 153, 144, 132, 116, 115, 120, 116, 114, 112, 102, + 102, 100, 104, 113, 121, 122, 116, 110, 113, 111, 107, 101, 94, 91, 92, 93, + 92, 93, 94, 94, 99, 105, 104, 99, 90, 70, 64, 84, 101, 98, 96, 101, + 106, 91, 89, 95, 88, 84, 81, 76, 73, 22, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 88, 20, 0, 9, 11, 25, 37, 72, 77, + 94, 93, 105, 108, 110, 112, 112, 117, 125, 126, 120, 105, 93, 89, 89, 92, + 90, 91, 92, 89, 89, 88, 91, 92, 92, 90, 86, 88, 87, 86, 87, 88, + 93, 99, 102, 105, 108, 111, 111, 108, 107, 110, 113, 114, 117, 120, 118, 118, + 122, 127, 124, 134, 127, 123, 125, 137, 149, 156, 156, 139, 121, 117, 119, 113, + 113, 114, 107, 107, 104, 100, 102, 107, 112, 113, 113, 110, 108, 104, 97, 91, + 87, 89, 90, 89, 94, 95, 95, 99, 105, 108, 102, 92, 72, 67, 85, 103, + 102, 100, 102, 110, 96, 93, 97, 89, 83, 80, 74, 73, 20, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 28, 0, 0, 13, 26, + 34, 58, 57, 74, 77, 93, 80, 82, 82, 80, 83, 90, 91, 85, 95, 93, + 93, 89, 91, 93, 93, 88, 88, 88, 88, 90, 91, 91, 90, 86, 89, 88, + 86, 87, 89, 93, 95, 98, 105, 109, 111, 111, 108, 106, 108, 110, 115, 118, + 121, 118, 119, 123, 127, 125, 129, 126, 124, 124, 131, 139, 148, 152, 134, 119, + 116, 119, 114, 113, 110, 103, 101, 100, 99, 99, 99, 103, 107, 109, 105, 105, + 101, 95, 90, 86, 89, 90, 88, 95, 99, 98, 100, 106, 110, 109, 97, 78, + 71, 87, 104, 106, 104, 105, 112, 98, 96, 98, 91, 86, 81, 73, 65, 11, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 21, 6, + 0, 18, 38, 52, 74, 69, 81, 79, 92, 106, 108, 111, 110, 112, 116, 114, + 105, 79, 88, 96, 89, 87, 91, 94, 89, 89, 89, 88, 91, 92, 92, 91, + 87, 87, 86, 86, 86, 88, 92, 94, 96, 102, 107, 110, 112, 109, 108, 109, + 111, 113, 117, 119, 116, 117, 120, 125, 122, 122, 122, 126, 129, 133, 134, 132, + 128, 123, 111, 112, 118, 112, 108, 103, 94, 93, 95, 101, 104, 103, 99, 97, + 98, 99, 98, 97, 91, 89, 87, 89, 92, 90, 97, 103, 101, 101, 106, 112, + 111, 103, 83, 72, 81, 97, 106, 108, 107, 107, 96, 95, 97, 90, 85, 79, + 71, 63, 9, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 13, 6, 0, 15, 41, 58, 80, 73, 85, 82, 92, 92, 99, 108, 113, + 119, 123, 120, 110, 65, 80, 93, 87, 82, 86, 93, 94, 90, 90, 90, 93, + 94, 94, 93, 90, 87, 87, 87, 88, 89, 93, 96, 99, 101, 106, 110, 112, + 112, 111, 113, 115, 114, 117, 119, 116, 116, 120, 124, 121, 122, 121, 124, 129, + 136, 134, 125, 115, 121, 108, 107, 109, 101, 97, 96, 88, 96, 100, 106, 105, + 101, 95, 89, 86, 90, 90, 91, 86, 87, 87, 90, 94, 95, 101, 107, 104, + 103, 107, 113, 111, 107, 90, 74, 74, 86, 99, 106, 107, 102, 94, 95, 96, + 91, 89, 82, 71, 71, 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 13, 1, 13, 18, 40, 50, 70, 64, 82, 83, 95, 99, + 105, 116, 122, 126, 128, 122, 111, 65, 73, 85, 83, 82, 84, 92, 95, 90, + 91, 90, 94, 95, 96, 95, 91, 87, 87, 87, 89, 90, 93, 96, 98, 102, + 107, 112, 112, 111, 111, 113, 116, 115, 118, 120, 117, 118, 121, 125, 122, 127, + 123, 121, 124, 131, 133, 128, 122, 125, 107, 100, 97, 89, 88, 95, 94, 111, + 107, 103, 99, 95, 89, 85, 85, 87, 87, 86, 85, 85, 87, 90, 95, 100, + 104, 107, 107, 107, 111, 113, 112, 111, 96, 78, 70, 76, 91, 101, 104, 101, + 95, 97, 98, 93, 91, 84, 72, 51, 25, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 193, 12, 4, 15, 26, 43, 49, 61, 58, 80, + 87, 96, 101, 109, 116, 119, 122, 123, 114, 105, 76, 70, 73, 79, 85, 86, + 90, 92, 89, 90, 89, 93, 95, 95, 94, 91, 89, 89, 90, 91, 92, 95, + 95, 96, 107, 108, 112, 111, 107, 107, 110, 113, 114, 117, 119, 116, 116, 119, + 123, 120, 127, 124, 123, 121, 124, 124, 123, 122, 112, 99, 97, 99, 94, 95, + 104, 103, 111, 105, 97, 91, 91, 92, 91, 89, 92, 93, 92, 90, 91, 92, + 95, 100, 102, 105, 106, 107, 111, 117, 117, 114, 109, 102, 87, 72, 72, 85, + 96, 98, 100, 96, 98, 97, 91, 92, 83, 69, 21, 101, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 8, 13, 9, 31, 45, 49, + 62, 57, 81, 85, 93, 97, 104, 112, 117, 123, 126, 121, 113, 88, 70, 65, + 76, 89, 90, 88, 88, 88, 88, 88, 92, 94, 94, 93, 90, 92, 92, 92, + 92, 93, 94, 93, 93, 110, 112, 112, 110, 106, 104, 107, 110, 112, 115, 116, + 113, 113, 116, 120, 117, 122, 124, 127, 124, 119, 114, 112, 112, 94, 86, 95, + 106, 106, 109, 115, 110, 100, 94, 90, 92, 97, 98, 97, 95, 101, 101, 102, + 99, 97, 97, 102, 105, 102, 103, 105, 106, 113, 120, 122, 115, 109, 105, 93, + 77, 72, 82, 92, 94, 98, 95, 97, 96, 90, 88, 78, 64, 10, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 13, 15, 0, + 23, 44, 56, 54, 76, 62, 87, 90, 98, 104, 110, 116, 123, 127, 122, 113, + 91, 62, 61, 80, 88, 84, 89, 92, 84, 87, 90, 93, 93, 93, 94, 94, + 90, 93, 94, 93, 92, 92, 94, 97, 111, 111, 112, 111, 111, 111, 110, 110, + 112, 110, 110, 112, 116, 118, 121, 118, 125, 121, 121, 120, 114, 101, 92, 90, + 123, 121, 119, 119, 119, 117, 115, 113, 125, 103, 88, 91, 102, 107, 107, 107, + 109, 110, 107, 104, 103, 103, 105, 107, 111, 103, 108, 111, 112, 121, 127, 119, + 117, 99, 94, 87, 71, 67, 81, 88, 94, 83, 90, 94, 89, 75, 86, 23, + 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, + 41, 10, 4, 24, 53, 42, 57, 50, 67, 76, 88, 100, 104, 109, 112, 117, + 122, 121, 116, 89, 60, 59, 77, 85, 82, 87, 89, 84, 87, 88, 91, 90, + 90, 91, 91, 93, 94, 96, 96, 94, 95, 97, 99, 110, 112, 114, 114, 110, + 109, 109, 111, 112, 112, 113, 113, 114, 116, 122, 124, 128, 119, 112, 107, 106, + 104, 108, 114, 119, 118, 119, 119, 122, 125, 125, 122, 116, 119, 108, 89, 92, + 110, 114, 102, 107, 111, 113, 107, 102, 104, 115, 126, 112, 101, 110, 124, 122, + 120, 126, 130, 122, 106, 103, 86, 78, 73, 86, 80, 91, 85, 92, 90, 86, + 85, 78, 29, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 119, 61, 4, 2, 33, 67, 53, 59, 46, 67, 79, 91, 100, 105, + 108, 108, 108, 114, 118, 117, 89, 61, 59, 76, 83, 82, 87, 88, 86, 87, + 88, 91, 90, 90, 90, 90, 93, 97, 97, 98, 98, 99, 100, 102, 107, 112, + 115, 115, 111, 110, 112, 116, 113, 114, 115, 114, 114, 115, 122, 125, 119, 109, + 102, 99, 103, 109, 120, 131, 125, 124, 123, 124, 126, 125, 124, 122, 120, 127, + 121, 103, 98, 109, 113, 106, 118, 123, 125, 122, 113, 107, 107, 109, 108, 102, + 107, 114, 119, 129, 130, 114, 126, 111, 111, 85, 84, 73, 87, 72, 91, 91, + 93, 87, 80, 89, 56, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 126, 51, 8, 0, 37, 69, 76, 54, 61, 54, 88, + 94, 98, 106, 109, 108, 107, 112, 116, 117, 91, 65, 62, 76, 84, 84, 90, + 89, 87, 88, 88, 92, 94, 94, 94, 93, 93, 97, 98, 99, 99, 100, 100, + 102, 101, 109, 114, 114, 111, 110, 114, 120, 115, 114, 115, 115, 116, 115, 117, + 115, 101, 98, 100, 104, 111, 114, 120, 128, 131, 129, 127, 125, 126, 126, 125, + 121, 125, 119, 118, 119, 110, 97, 95, 104, 104, 102, 102, 106, 113, 116, 115, + 111, 114, 124, 127, 122, 149, 197, 196, 151, 128, 110, 116, 90, 86, 64, 78, + 73, 94, 91, 90, 90, 80, 82, 27, 110, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 129, 29, 28, 10, 26, 63, 81, 61, + 62, 47, 79, 89, 96, 105, 111, 111, 110, 111, 113, 112, 91, 66, 63, 74, + 81, 84, 90, 88, 84, 84, 85, 91, 95, 97, 97, 96, 92, 97, 100, 101, + 99, 99, 100, 101, 103, 110, 116, 116, 109, 108, 113, 117, 116, 113, 113, 115, + 117, 114, 109, 101, 97, 97, 105, 113, 119, 118, 118, 122, 124, 124, 124, 126, + 130, 130, 131, 130, 122, 112, 113, 121, 116, 97, 86, 89, 100, 95, 89, 84, + 84, 88, 97, 101, 93, 106, 108, 96, 113, 158, 161, 122, 128, 110, 115, 102, + 84, 56, 72, 82, 88, 83, 83, 95, 84, 63, 7, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 20, 49, 35, 22, + 67, 71, 85, 59, 58, 65, 85, 95, 104, 110, 110, 112, 112, 111, 107, 89, + 65, 61, 70, 77, 82, 88, 84, 80, 80, 81, 88, 93, 97, 97, 95, 92, + 97, 100, 101, 98, 97, 97, 98, 108, 112, 116, 114, 107, 104, 106, 108, 116, + 112, 113, 114, 114, 109, 104, 96, 107, 106, 111, 117, 122, 120, 121, 126, 130, + 129, 127, 128, 130, 131, 128, 127, 117, 123, 123, 118, 116, 113, 99, 83, 95, + 106, 113, 102, 81, 66, 69, 75, 99, 100, 108, 107, 99, 106, 117, 117, 123, + 115, 113, 106, 74, 60, 72, 90, 80, 77, 79, 91, 78, 39, 7, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, + 52, 53, 33, 66, 67, 92, 74, 67, 65, 80, 96, 102, 106, 106, 111, 112, + 108, 104, 89, 66, 61, 69, 76, 82, 88, 84, 82, 81, 81, 87, 94, 97, + 96, 94, 94, 98, 101, 102, 101, 99, 96, 96, 108, 110, 111, 111, 107, 105, + 105, 105, 112, 112, 115, 113, 107, 102, 104, 104, 112, 110, 113, 118, 123, 123, + 125, 131, 139, 137, 134, 133, 131, 129, 126, 124, 123, 128, 129, 125, 120, 118, + 110, 97, 76, 89, 106, 108, 97, 85, 82, 83, 74, 70, 86, 102, 99, 99, + 117, 131, 113, 120, 104, 97, 53, 71, 76, 86, 76, 83, 83, 79, 62, 14, + 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 35, 40, 57, 44, 56, 71, 79, 94, 58, 68, 70, 98, 101, 102, + 104, 108, 111, 109, 102, 91, 68, 63, 71, 75, 84, 90, 85, 86, 85, 86, + 90, 98, 100, 97, 94, 95, 100, 103, 103, 101, 99, 96, 96, 103, 104, 106, + 108, 107, 108, 109, 109, 108, 113, 118, 112, 101, 98, 106, 115, 108, 107, 113, + 120, 126, 124, 125, 130, 136, 136, 135, 134, 135, 134, 133, 131, 131, 117, 118, + 129, 123, 105, 102, 111, 101, 92, 84, 83, 89, 93, 91, 87, 80, 75, 83, + 91, 95, 104, 108, 100, 101, 121, 96, 85, 36, 81, 80, 79, 79, 96, 93, + 71, 48, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 29, 40, 62, 52, 40, 63, 92, 85, 74, 76, 75, + 83, 89, 96, 102, 108, 110, 109, 106, 85, 67, 64, 73, 75, 82, 90, 89, + 88, 88, 91, 94, 99, 99, 98, 97, 99, 99, 100, 99, 96, 97, 100, 102, + 104, 106, 105, 104, 102, 103, 108, 113, 116, 112, 119, 108, 90, 103, 111, 94, + 102, 118, 116, 117, 121, 124, 137, 131, 139, 144, 138, 150, 133, 135, 120, 126, + 132, 124, 119, 125, 126, 121, 116, 115, 101, 104, 102, 92, 82, 80, 85, 91, + 101, 75, 57, 66, 88, 102, 103, 102, 110, 91, 67, 60, 70, 82, 88, 89, + 101, 90, 94, 66, 19, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 186, 35, 51, 59, 43, 55, 85, 91, + 80, 80, 87, 74, 81, 93, 104, 109, 110, 111, 110, 87, 67, 63, 68, 73, + 78, 91, 91, 89, 90, 90, 95, 98, 101, 99, 98, 100, 101, 101, 100, 97, + 97, 99, 102, 103, 105, 105, 104, 102, 102, 106, 111, 113, 111, 117, 106, 93, + 103, 112, 95, 96, 106, 104, 116, 123, 121, 127, 119, 136, 135, 140, 133, 149, + 130, 144, 133, 118, 115, 114, 122, 122, 116, 110, 108, 102, 104, 101, 91, 79, + 74, 76, 79, 80, 71, 70, 83, 97, 97, 90, 85, 66, 69, 68, 65, 70, + 82, 85, 82, 116, 105, 78, 41, 19, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 49, 65, 51, + 49, 70, 89, 81, 77, 91, 71, 74, 86, 102, 108, 105, 106, 111, 92, 68, + 61, 67, 72, 77, 90, 92, 90, 90, 90, 93, 96, 100, 99, 99, 102, 103, + 103, 101, 98, 97, 99, 101, 101, 104, 105, 104, 101, 101, 104, 107, 108, 110, + 114, 103, 94, 103, 110, 97, 110, 103, 91, 106, 117, 116, 132, 137, 122, 146, + 142, 150, 138, 124, 138, 133, 138, 133, 132, 132, 125, 116, 109, 107, 101, 99, + 95, 89, 81, 74, 72, 72, 63, 64, 70, 77, 77, 69, 60, 57, 60, 64, + 64, 60, 70, 85, 93, 90, 118, 97, 46, 12, 96, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, + 47, 62, 69, 61, 63, 83, 85, 79, 90, 82, 75, 80, 96, 106, 103, 103, + 108, 94, 68, 61, 69, 74, 77, 88, 90, 91, 90, 89, 92, 95, 99, 99, + 99, 103, 104, 104, 103, 99, 98, 99, 100, 99, 103, 104, 104, 101, 99, 101, + 103, 104, 110, 111, 99, 95, 104, 108, 99, 100, 86, 71, 86, 92, 81, 99, + 113, 140, 131, 116, 109, 148, 128, 160, 129, 135, 135, 134, 131, 124, 119, 116, + 117, 102, 96, 93, 93, 90, 85, 81, 81, 80, 80, 79, 75, 69, 66, 68, + 72, 76, 66, 61, 69, 82, 94, 100, 99, 112, 72, 21, 89, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 28, 32, 51, 81, 79, 63, 75, 89, 87, 89, 94, 79, 73, 85, + 100, 105, 106, 108, 95, 68, 62, 73, 79, 78, 85, 86, 91, 90, 88, 91, + 94, 99, 98, 99, 102, 104, 105, 104, 99, 98, 98, 99, 100, 103, 104, 103, + 100, 98, 99, 101, 101, 111, 110, 96, 97, 105, 106, 101, 86, 80, 78, 100, + 96, 68, 76, 89, 64, 83, 79, 111, 111, 114, 121, 117, 138, 141, 144, 140, + 133, 126, 119, 113, 106, 101, 99, 103, 103, 98, 95, 95, 94, 94, 91, 84, + 78, 77, 80, 81, 68, 60, 69, 94, 104, 96, 95, 105, 96, 39, 13, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 21, 35, 73, 82, 63, 63, 82, 90, 87, 97, + 83, 71, 74, 90, 105, 111, 110, 98, 68, 62, 75, 81, 78, 83, 84, 89, + 89, 88, 92, 95, 99, 98, 97, 100, 102, 104, 103, 99, 98, 98, 99, 102, + 104, 104, 102, 98, 97, 98, 101, 99, 114, 109, 94, 100, 106, 104, 103, 98, + 94, 93, 115, 113, 92, 111, 129, 86, 78, 85, 82, 80, 75, 93, 118, 111, + 118, 128, 131, 132, 131, 124, 117, 113, 106, 105, 109, 109, 101, 99, 102, 100, + 104, 103, 93, 81, 72, 66, 60, 65, 67, 84, 102, 102, 89, 98, 119, 57, + 6, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 34, 37, 59, 75, 68, 57, 70, + 86, 85, 92, 88, 76, 68, 77, 97, 107, 105, 102, 70, 61, 74, 80, 76, + 83, 85, 87, 88, 89, 93, 96, 99, 97, 96, 97, 100, 102, 103, 99, 98, + 98, 99, 104, 106, 104, 101, 97, 96, 99, 102, 99, 117, 110, 93, 102, 106, + 102, 105, 106, 96, 84, 100, 105, 101, 133, 156, 127, 64, 150, 105, 205, 111, + 100, 54, 73, 77, 82, 87, 101, 114, 121, 117, 113, 106, 104, 109, 107, 98, + 97, 104, 106, 111, 105, 87, 70, 64, 65, 63, 84, 88, 96, 96, 94, 92, + 94, 99, 20, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 57, 59, 77, + 81, 64, 68, 87, 90, 90, 94, 85, 68, 69, 89, 101, 99, 106, 71, 60, + 72, 78, 75, 83, 87, 86, 88, 89, 94, 97, 99, 96, 95, 95, 98, 101, + 102, 99, 98, 98, 99, 106, 107, 104, 101, 96, 96, 99, 103, 100, 119, 110, + 93, 103, 107, 101, 105, 116, 105, 90, 103, 108, 103, 127, 142, 121, 90, 119, + 132, 118, 123, 88, 137, 137, 124, 102, 80, 77, 84, 89, 86, 109, 100, 100, + 106, 103, 94, 96, 105, 84, 85, 74, 50, 35, 45, 68, 81, 92, 99, 102, + 97, 102, 104, 78, 40, 9, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, + 61, 57, 65, 81, 78, 61, 66, 89, 99, 103, 95, 75, 72, 88, 102, 104, + 104, 89, 68, 63, 78, 81, 82, 89, 75, 86, 93, 96, 98, 100, 94, 86, + 103, 104, 105, 103, 99, 96, 96, 96, 106, 107, 105, 103, 101, 101, 102, 104, + 109, 112, 111, 101, 95, 99, 110, 116, 116, 111, 103, 94, 94, 105, 125, 138, + 110, 105, 116, 126, 143, 135, 115, 134, 140, 150, 101, 114, 128, 73, 66, 79, + 76, 84, 87, 82, 93, 87, 64, 72, 59, 60, 35, 49, 45, 73, 88, 85, + 85, 101, 97, 96, 107, 92, 43, 15, 100, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 59, 63, 58, 60, 77, 79, 57, 57, 86, 94, 101, 99, 83, 74, + 81, 96, 104, 103, 94, 75, 65, 78, 83, 85, 88, 77, 86, 92, 95, 96, + 99, 94, 87, 98, 99, 101, 101, 97, 96, 96, 97, 103, 104, 102, 101, 100, + 100, 102, 104, 108, 112, 112, 102, 97, 100, 110, 115, 117, 113, 106, 96, 92, + 95, 105, 113, 82, 74, 119, 150, 139, 126, 126, 148, 138, 177, 142, 127, 137, + 128, 137, 120, 77, 64, 55, 68, 75, 68, 86, 119, 113, 41, 41, 68, 60, + 73, 75, 86, 96, 90, 97, 105, 85, 82, 4, 20, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 66, 63, 57, 69, 79, 58, 51, 80, 86, 95, + 100, 91, 76, 74, 86, 100, 103, 102, 84, 67, 77, 85, 88, 88, 81, 87, + 91, 93, 94, 96, 93, 89, 92, 95, 97, 98, 96, 96, 97, 98, 100, 101, + 100, 100, 99, 99, 102, 104, 108, 111, 112, 103, 99, 102, 110, 113, 116, 115, + 111, 102, 94, 90, 91, 92, 92, 50, 95, 144, 137, 134, 134, 134, 134, 145, + 141, 168, 167, 136, 143, 140, 133, 183, 180, 147, 110, 109, 129, 98, 108, 11, + 52, 76, 66, 72, 75, 90, 102, 99, 101, 86, 104, 5, 29, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 65, 73, 62, 61, 76, 68, 58, + 75, 84, 90, 98, 97, 84, 75, 81, 94, 103, 108, 92, 68, 73, 83, 90, + 90, 86, 88, 90, 92, 92, 93, 91, 90, 91, 94, 96, 97, 95, 95, 96, + 97, 98, 99, 99, 99, 99, 100, 103, 105, 108, 111, 112, 104, 101, 104, 110, + 112, 116, 115, 115, 109, 103, 96, 93, 92, 88, 73, 113, 131, 103, 96, 112, + 136, 122, 142, 155, 169, 163, 158, 162, 126, 117, 147, 141, 146, 121, 109, 139, + 104, 51, 16, 68, 67, 62, 65, 84, 96, 97, 120, 83, 88, 57, 5, 104, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 77, 68, 53, + 65, 75, 70, 66, 83, 86, 93, 97, 92, 83, 82, 87, 102, 111, 98, 72, + 72, 80, 89, 93, 89, 89, 89, 92, 91, 91, 89, 90, 94, 96, 97, 97, + 94, 93, 94, 95, 98, 100, 99, 99, 99, 101, 104, 106, 109, 111, 111, 104, + 102, 105, 110, 112, 117, 117, 118, 113, 110, 104, 100, 98, 113, 93, 83, 80, + 99, 109, 90, 91, 130, 120, 128, 149, 145, 149, 160, 140, 146, 154, 132, 144, + 134, 118, 115, 48, 39, 61, 77, 58, 68, 59, 86, 100, 106, 98, 103, 52, + 1, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, + 72, 70, 53, 52, 72, 76, 59, 81, 84, 89, 93, 95, 93, 88, 84, 98, + 110, 103, 83, 78, 78, 86, 95, 91, 89, 88, 92, 91, 88, 86, 89, 94, + 96, 97, 97, 93, 91, 91, 92, 98, 100, 99, 99, 99, 100, 103, 106, 111, + 112, 110, 103, 102, 106, 111, 112, 120, 119, 119, 116, 113, 108, 103, 102, 83, + 99, 102, 82, 85, 87, 74, 92, 115, 73, 85, 134, 139, 122, 127, 137, 118, + 156, 149, 131, 111, 103, 88, 23, 62, 83, 61, 50, 73, 64, 86, 111, 113, + 86, 90, 19, 2, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 62, 68, 63, 47, 62, 75, 57, 75, 83, 89, 89, 94, 99, + 94, 85, 92, 106, 109, 98, 91, 79, 82, 95, 92, 89, 88, 93, 91, 87, + 84, 87, 92, 94, 95, 95, 91, 89, 89, 90, 97, 99, 98, 98, 97, 98, + 101, 103, 113, 113, 109, 101, 101, 106, 112, 113, 120, 120, 122, 120, 118, 112, + 105, 102, 102, 90, 96, 93, 98, 102, 84, 75, 80, 88, 102, 103, 108, 124, + 115, 89, 133, 125, 112, 104, 78, 40, 41, 68, 68, 69, 57, 50, 59, 82, + 88, 112, 103, 85, 12, 31, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 56, 69, 76, 49, 54, 74, 60, 71, 84, 91, + 88, 92, 101, 99, 87, 86, 104, 111, 110, 100, 80, 76, 92, 89, 85, 87, + 92, 90, 84, 83, 86, 89, 91, 92, 92, 89, 88, 88, 88, 97, 96, 97, + 96, 96, 94, 97, 99, 115, 113, 107, 100, 98, 104, 112, 113, 117, 118, 121, + 124, 123, 117, 111, 106, 113, 89, 115, 123, 94, 92, 96, 90, 93, 84, 86, + 85, 84, 80, 73, 74, 76, 80, 76, 64, 76, 73, 54, 63, 60, 56, 76, + 57, 36, 94, 87, 100, 106, 25, 1, 0, 98, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 67, 73, 49, 41, 79, 75, + 69, 77, 84, 87, 89, 95, 99, 100, 86, 95, 105, 108, 100, 88, 80, 75, + 87, 87, 86, 85, 85, 83, 80, 79, 88, 89, 88, 89, 88, 86, 83, 81, + 96, 94, 94, 93, 94, 95, 98, 100, 108, 108, 104, 94, 92, 98, 104, 106, + 107, 111, 117, 121, 123, 123, 116, 112, 102, 104, 106, 110, 113, 109, 103, 97, + 91, 92, 93, 95, 95, 89, 85, 80, 92, 90, 89, 84, 74, 63, 60, 63, + 55, 73, 55, 35, 69, 68, 90, 99, 88, 17, 0, 15, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 70, 72, 54, + 45, 66, 74, 68, 76, 82, 85, 88, 96, 100, 100, 89, 91, 97, 103, 104, + 97, 86, 75, 76, 79, 83, 83, 80, 77, 79, 80, 82, 87, 89, 92, 92, + 90, 88, 87, 92, 93, 93, 93, 91, 93, 96, 101, 108, 110, 106, 98, 96, + 101, 105, 107, 105, 107, 112, 116, 121, 123, 123, 122, 113, 108, 105, 102, 107, + 107, 109, 105, 95, 94, 97, 97, 98, 92, 88, 83, 92, 92, 93, 89, 80, + 69, 63, 64, 66, 52, 45, 49, 74, 73, 87, 70, 27, 7, 7, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 194, 69, 60, 51, 47, 72, 67, 75, 81, 84, 89, 98, 103, 104, 96, 90, + 89, 98, 109, 109, 97, 82, 72, 77, 84, 84, 80, 77, 80, 83, 76, 82, + 90, 94, 91, 88, 86, 86, 89, 93, 94, 93, 89, 90, 96, 102, 108, 111, + 109, 102, 99, 100, 103, 105, 107, 108, 108, 112, 119, 123, 126, 127, 122, 116, + 111, 106, 108, 106, 106, 102, 93, 91, 94, 93, 94, 88, 84, 80, 90, 92, + 94, 94, 86, 74, 68, 68, 68, 45, 48, 57, 78, 84, 88, 27, 10, 27, + 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 66, 67, 55, 35, 69, 68, 76, 81, 83, 87, 96, 102, + 103, 103, 93, 87, 93, 107, 112, 106, 95, 80, 82, 86, 87, 86, 83, 83, + 81, 72, 79, 87, 90, 86, 82, 79, 79, 86, 91, 94, 93, 87, 88, 95, + 103, 104, 108, 107, 102, 97, 99, 99, 98, 108, 106, 108, 110, 115, 119, 122, + 124, 124, 122, 120, 119, 117, 110, 100, 92, 87, 87, 87, 87, 86, 82, 76, + 73, 87, 86, 87, 88, 79, 70, 64, 64, 57, 62, 64, 57, 78, 82, 70, + 0, 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 192, 70, 60, 35, 63, 69, 77, 81, 81, + 86, 93, 99, 100, 108, 99, 91, 92, 99, 106, 110, 107, 93, 87, 85, 86, + 91, 90, 84, 75, 69, 75, 81, 84, 83, 80, 76, 76, 84, 90, 92, 92, + 88, 89, 97, 102, 101, 105, 106, 102, 97, 98, 98, 96, 103, 103, 104, 108, + 114, 117, 116, 117, 121, 123, 124, 126, 124, 116, 104, 95, 89, 88, 87, 86, + 85, 81, 75, 71, 81, 78, 75, 74, 68, 60, 57, 57, 56, 76, 73, 64, + 83, 53, 33, 5, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 60, 43, 51, 68, + 76, 82, 82, 86, 92, 97, 97, 107, 102, 97, 93, 94, 100, 109, 115, 102, + 92, 84, 85, 92, 92, 84, 73, 70, 72, 75, 79, 83, 85, 84, 83, 83, + 88, 89, 89, 88, 90, 96, 102, 101, 106, 107, 104, 100, 101, 102, 99, 96, + 98, 102, 108, 114, 117, 116, 117, 121, 118, 116, 116, 117, 116, 111, 106, 93, + 91, 90, 88, 86, 82, 77, 72, 83, 78, 75, 74, 70, 63, 61, 64, 66, + 74, 73, 79, 83, 11, 0, 25, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, + 56, 37, 65, 74, 82, 83, 87, 94, 99, 96, 102, 101, 99, 96, 94, 98, + 108, 115, 108, 97, 90, 88, 93, 93, 88, 79, 74, 72, 70, 74, 80, 86, + 87, 87, 84, 86, 88, 89, 90, 93, 98, 100, 101, 104, 105, 102, 101, 104, + 107, 105, 100, 99, 103, 106, 112, 116, 116, 115, 117, 115, 110, 109, 111, 112, + 110, 108, 98, 96, 94, 92, 90, 86, 80, 76, 83, 80, 78, 80, 79, 74, + 71, 71, 70, 70, 79, 85, 66, 0, 0, 99, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 66, 27, 60, 70, 79, 83, 89, 95, 100, 99, 98, 98, 99, + 98, 97, 100, 108, 112, 110, 103, 96, 93, 95, 95, 93, 88, 81, 74, 68, + 71, 77, 84, 85, 83, 85, 85, 86, 88, 91, 95, 98, 98, 99, 102, 104, + 101, 100, 105, 107, 107, 107, 105, 105, 106, 110, 112, 112, 111, 115, 113, 109, + 109, 109, 107, 102, 98, 99, 97, 95, 93, 90, 86, 81, 77, 73, 71, 73, + 78, 79, 73, 71, 70, 65, 69, 90, 82, 42, 0, 97, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 44, 52, 69, 83, 85, 86, 92, 99, 101, + 98, 104, 102, 101, 108, 105, 102, 106, 108, 105, 103, 100, 98, 96, 95, 93, + 86, 81, 70, 59, 58, 69, 80, 85, 85, 79, 78, 84, 92, 95, 97, 97, + 97, 100, 103, 102, 100, 103, 109, 118, 114, 110, 106, 103, 104, 105, 106, 108, + 117, 107, 100, 103, 106, 104, 99, 95, 94, 92, 89, 87, 86, 83, 80, 77, + 71, 77, 84, 85, 79, 71, 65, 63, 66, 71, 89, 79, 0, 13, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 50, 64, 80, 84, 86, + 91, 100, 100, 97, 103, 101, 100, 107, 106, 105, 110, 110, 107, 106, 104, 102, + 99, 97, 94, 90, 87, 78, 67, 63, 67, 70, 70, 86, 82, 79, 80, 83, + 86, 94, 102, 94, 97, 102, 104, 104, 107, 113, 116, 116, 113, 109, 106, 106, + 107, 106, 106, 115, 108, 103, 105, 106, 103, 98, 96, 89, 87, 85, 85, 84, + 83, 79, 77, 78, 82, 83, 82, 76, 68, 64, 63, 76, 72, 88, 36, 9, + 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, + 77, 83, 87, 92, 100, 99, 98, 102, 100, 98, 106, 107, 107, 114, 110, 109, + 109, 108, 107, 103, 100, 96, 95, 93, 87, 76, 68, 64, 61, 55, 77, 77, + 81, 82, 79, 79, 90, 101, 94, 94, 99, 105, 110, 111, 114, 114, 118, 116, + 114, 111, 111, 111, 107, 105, 114, 108, 105, 106, 104, 99, 96, 96, 84, 82, + 81, 81, 82, 81, 78, 76, 85, 86, 83, 80, 72, 68, 64, 64, 76, 76, + 60, 0, 17, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 195, 83, 89, 93, 100, 100, 101, 105, 100, 98, 105, 106, 108, + 116, 110, 110, 111, 112, 110, 106, 101, 94, 97, 99, 95, 85, 76, 69, 62, + 53, 61, 65, 76, 82, 81, 79, 84, 91, 92, 93, 96, 103, 110, 114, 117, + 116, 120, 117, 116, 116, 116, 113, 108, 106, 114, 110, 108, 109, 106, 99, 97, + 98, 87, 85, 84, 84, 84, 83, 80, 78, 88, 86, 80, 76, 69, 66, 66, + 67, 69, 84, 14, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 197, 91, 95, 101, 101, 105, 108, 102, 98, + 105, 106, 107, 115, 109, 109, 112, 112, 111, 107, 102, 95, 98, 98, 96, 89, + 83, 78, 72, 64, 58, 59, 65, 72, 77, 78, 81, 86, 92, 91, 94, 99, + 107, 113, 118, 119, 120, 120, 118, 118, 118, 115, 110, 108, 115, 111, 110, 111, + 108, 102, 98, 100, 94, 92, 90, 90, 89, 87, 84, 81, 86, 83, 77, 72, + 68, 66, 68, 69, 65, 78, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 101, 102, 106, + 109, 104, 100, 106, 106, 107, 114, 109, 109, 112, 112, 111, 107, 103, 96, 96, + 97, 97, 92, 89, 86, 82, 75, 69, 63, 59, 60, 64, 69, 79, 89, 88, + 89, 92, 97, 104, 112, 118, 121, 120, 120, 119, 119, 119, 119, 115, 111, 116, + 111, 109, 112, 111, 106, 101, 101, 98, 97, 95, 94, 93, 91, 88, 87, 86, + 83, 77, 72, 69, 68, 68, 67, 68, 47, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 204, 104, 108, 104, 101, 108, 108, 109, 116, 111, 110, 112, 112, 111, 108, + 105, 98, 92, 95, 98, 95, 94, 91, 86, 79, 80, 74, 67, 61, 56, 58, + 72, 85, 81, 85, 91, 97, 101, 108, 116, 121, 120, 118, 117, 117, 119, 119, + 117, 116, 119, 112, 110, 114, 117, 112, 106, 103, 99, 98, 96, 96, 96, 95, + 92, 90, 88, 85, 80, 76, 72, 70, 65, 64, 61, 7, 86, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 204, 109, 105, 104, 112, 112, 110, 118, 113, 112, 113, + 113, 112, 111, 106, 103, 93, 96, 99, 99, 96, 92, 86, 78, 82, 81, 78, + 69, 56, 51, 61, 76, 74, 82, 91, 98, 101, 106, 113, 119, 119, 117, 117, + 118, 120, 123, 121, 121, 120, 112, 109, 115, 120, 116, 109, 104, 97, 95, 95, + 96, 97, 97, 95, 92, 90, 86, 83, 81, 77, 73, 68, 64, 50, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 112, 113, 113, 114, 114, + 112, 111, 112, 114, 113, 112, 109, 105, 102, 101, 99, 96, 94, 94, 89, 82, + 88, 86, 82, 76, 71, 64, 58, 55, 65, 74, 81, 82, 85, 95, 106, 110, + 108, 113, 116, 119, 121, 121, 120, 119, 127, 119, 115, 120, 124, 121, 112, 108, + 102, 100, 96, 95, 97, 97, 97, 94, 86, 83, 83, 81, 75, 69, 66, 67, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 113, + 113, 114, 114, 112, 111, 112, 114, 114, 113, 111, 106, 105, 104, 102, 97, 96, + 95, 90, 84, 86, 84, 81, 76, 71, 66, 62, 59, 48, 61, 76, 82, 86, + 92, 97, 97, 106, 107, 110, 111, 115, 117, 119, 119, 123, 114, 110, 115, 119, + 113, 107, 103, 100, 96, 93, 93, 95, 98, 98, 96, 91, 81, 79, 81, 78, + 70, 71, 76, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 208, 112, 111, 112, 111, 113, 115, 114, 113, 108, 106, 105, + 103, 99, 97, 97, 92, 85, 85, 83, 81, 78, 74, 71, 68, 67, 44, 55, + 68, 72, 78, 84, 91, 91, 106, 105, 106, 107, 110, 113, 118, 120, 119, 112, + 109, 111, 114, 111, 105, 100, 93, 91, 89, 87, 91, 95, 97, 96, 89, 90, + 83, 72, 71, 72, 67, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 207, 111, 110, 111, 112, 114, 114, 112, + 109, 105, 104, 103, 98, 97, 97, 92, 86, 86, 85, 82, 80, 77, 75, 73, + 73, 61, 62, 61, 56, 59, 70, 85, 91, 99, 99, 101, 102, 106, 109, 114, + 116, 117, 108, 106, 110, 112, 106, 101, 99, 90, 87, 87, 89, 92, 95, 95, + 92, 82, 95, 89, 67, 65, 74, 120, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 109, 112, + 114, 115, 111, 109, 102, 103, 101, 97, 96, 96, 92, 85, 89, 88, 85, 82, + 79, 77, 76, 76, 76, 70, 60, 47, 46, 57, 73, 79, 86, 87, 92, 95, + 100, 103, 106, 106, 107, 100, 98, 101, 102, 98, 94, 91, 86, 87, 89, 90, + 92, 91, 88, 84, 86, 90, 86, 79, 76, 128, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 206, 111, 112, 111, 108, 101, 102, 101, 97, 96, 96, 92, 86, 91, + 89, 86, 83, 80, 79, 78, 78, 77, 74, 66, 54, 51, 54, 60, 60, 75, + 78, 83, 88, 94, 98, 101, 101, 101, 95, 94, 97, 97, 92, 87, 87, 84, + 83, 85, 88, 89, 86, 81, 78, 97, 78, 75, 89, 81, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 207, 109, 106, 102, 103, 102, 98, 97, 98, + 94, 87, 90, 89, 85, 83, 81, 80, 81, 81, 77, 77, 76, 68, 64, 62, + 58, 52, 63, 64, 69, 73, 80, 86, 93, 95, 95, 90, 89, 92, 89, 84, + 81, 81, 79, 78, 77, 77, 78, 78, 75, 76, 91, 74, 70, 73, 119, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 103, 105, 103, + 100, 99, 99, 95, 89, 89, 87, 84, 82, 81, 82, 83, 84, 80, 82, 83, + 77, 74, 70, 64, 56, 48, 48, 50, 53, 62, 70, 79, 83, 85, 80, 80, + 83, 79, 74, 71, 72, 76, 73, 70, 68, 70, 72, 72, 75, 74, 83, 75, + 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 204, 101, 100, 97, 94, 91, 89, 86, 88, 89, 87, 84, 80, 79, 79, + 81, 82, 82, 75, 70, 67, 63, 57, 57, 64, 43, 30, 57, 40, 66, 68, + 67, 68, 69, 71, 71, 70, 66, 65, 62, 59, 60, 65, 70, 70, 62, 59, + 72, 62, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 100, 98, 95, 92, 90, 87, 88, 89, 87, 83, + 80, 79, 79, 84, 86, 85, 78, 74, 72, 70, 64, 67, 72, 55, 49, 51, + 24, 30, 22, 32, 31, 33, 32, 35, 33, 32, 30, 38, 37, 38, 40, 44, + 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 92, 90, 88, 89, + 89, 86, 83, 80, 80, 80, 83, 84, 83, 76, 73, 72, 72, 68, 68, 66, + 56, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 200, 89, 88, 85, 82, 80, 81, 82, 83, 84, 83, 76, 74, 75, 76, + 73, 72, 60, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 84, 82, 81, 83, 86, 89, 90, 89, 82, + 81, 83, 85, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 90, 89, + 90, 90, 85, 84, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy12' of size 114x138x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy12[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 190, 74, 93, 97, 72, 107, 211, 255, 255, 255, 255, + 255, 255, 255, 219, 119, 54, 68, 102, 122, 127, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, + 94, 87, 82, 86, 84, 68, 68, 65, 63, 67, 70, 59, 46, 50, 63, 61, + 53, 58, 59, 58, 59, 64, 61, 64, 75, 96, 110, 109, 98, 64, 49, 31, + 20, 21, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 43, 48, 43, 35, 27, 36, + 49, 76, 90, 81, 75, 76, 72, 78, 77, 71, 63, 61, 61, 50, 39, 53, + 59, 54, 50, 61, 60, 57, 61, 42, 44, 52, 69, 94, 107, 97, 81, 70, + 57, 43, 33, 32, 33, 29, 24, 78, 204, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 27, 31, 39, 43, 41, 41, + 41, 52, 54, 72, 77, 65, 61, 62, 61, 67, 68, 64, 57, 56, 56, 54, + 50, 60, 55, 47, 50, 61, 55, 49, 56, 47, 49, 51, 54, 66, 77, 81, + 78, 73, 63, 52, 48, 46, 43, 33, 25, 29, 25, 22, 101, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 30, 31, 34, 42, 49, + 53, 64, 70, 74, 67, 70, 65, 52, 49, 53, 53, 48, 50, 52, 49, 50, + 54, 58, 61, 63, 55, 49, 57, 62, 45, 38, 51, 54, 61, 63, 54, 46, + 52, 68, 81, 71, 66, 61, 59, 59, 53, 41, 31, 29, 26, 25, 24, 26, + 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 25, 29, 35, 39, 50, + 63, 70, 74, 84, 88, 84, 71, 68, 63, 49, 46, 48, 44, 46, 48, 49, + 48, 47, 47, 49, 55, 61, 60, 60, 69, 67, 44, 37, 56, 53, 63, 70, + 66, 61, 60, 67, 70, 66, 62, 60, 61, 65, 61, 49, 38, 31, 28, 26, + 25, 26, 28, 26, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 21, 29, 39, 42, + 50, 64, 82, 89, 90, 88, 85, 78, 67, 68, 66, 56, 53, 49, 38, 47, + 48, 51, 53, 53, 49, 48, 53, 60, 65, 67, 75, 73, 52, 48, 67, 80, + 73, 64, 60, 67, 72, 66, 57, 56, 54, 51, 54, 59, 57, 48, 39, 38, + 35, 30, 26, 28, 31, 29, 22, 21, 91, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 26, 26, 26, 27, 36, + 48, 57, 58, 66, 80, 88, 88, 85, 82, 79, 64, 64, 67, 63, 65, 62, + 51, 52, 51, 56, 63, 64, 59, 56, 58, 62, 68, 68, 72, 73, 58, 55, + 71, 96, 83, 67, 59, 63, 71, 67, 59, 59, 54, 50, 52, 59, 60, 54, + 45, 48, 44, 36, 28, 29, 32, 30, 20, 20, 7, 12, 96, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 35, 39, 46, 50, + 47, 52, 59, 72, 64, 59, 65, 73, 78, 82, 83, 84, 66, 60, 63, 64, + 73, 79, 73, 63, 61, 64, 71, 69, 61, 54, 54, 66, 68, 62, 61, 65, + 58, 54, 65, 71, 78, 81, 78, 75, 72, 71, 67, 73, 67, 61, 62, 69, + 71, 67, 61, 58, 53, 43, 32, 31, 35, 31, 21, 18, 6, 8, 13, 92, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 48, 53, 62, + 73, 79, 77, 70, 64, 76, 75, 80, 84, 83, 75, 74, 77, 71, 73, 64, + 54, 59, 74, 72, 59, 61, 60, 61, 79, 94, 83, 66, 70, 73, 73, 73, + 73, 72, 66, 59, 53, 61, 71, 79, 78, 69, 63, 66, 70, 81, 79, 75, + 71, 68, 66, 69, 74, 77, 69, 58, 51, 40, 32, 35, 41, 31, 25, 21, + 17, 14, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 58, 71, + 72, 74, 74, 74, 76, 80, 83, 75, 71, 70, 74, 73, 68, 66, 66, 64, + 64, 57, 46, 51, 64, 62, 49, 58, 65, 64, 65, 75, 74, 66, 66, 66, + 62, 58, 56, 58, 57, 53, 50, 54, 59, 65, 70, 71, 69, 65, 63, 80, + 74, 70, 74, 84, 88, 80, 70, 62, 60, 63, 65, 60, 44, 33, 26, 25, + 21, 18, 13, 10, 8, 9, 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 67, 70, + 69, 74, 73, 68, 62, 58, 62, 72, 81, 73, 65, 59, 62, 65, 63, 58, + 52, 54, 52, 45, 35, 38, 48, 47, 35, 38, 54, 50, 38, 45, 55, 54, + 53, 61, 53, 43, 39, 42, 44, 43, 41, 49, 53, 58, 58, 56, 55, 56, + 58, 56, 68, 76, 75, 76, 80, 81, 76, 82, 75, 69, 70, 68, 54, 39, + 26, 26, 23, 20, 16, 12, 11, 9, 10, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, + 66, 69, 71, 74, 68, 63, 58, 57, 62, 70, 76, 73, 63, 55, 57, 62, + 60, 50, 39, 41, 39, 35, 25, 29, 36, 38, 27, 44, 53, 49, 38, 50, + 60, 63, 65, 63, 53, 41, 35, 38, 41, 40, 38, 44, 51, 53, 43, 31, + 28, 39, 51, 45, 58, 67, 63, 62, 73, 81, 81, 97, 86, 75, 72, 71, + 66, 52, 39, 34, 29, 21, 15, 12, 10, 12, 12, 10, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 194, 67, 61, 61, 62, 61, 51, 42, 40, 47, 55, 61, 63, 71, 64, 57, + 57, 61, 59, 46, 31, 31, 29, 26, 19, 24, 31, 34, 27, 28, 25, 18, + 19, 35, 39, 37, 43, 59, 53, 44, 41, 44, 46, 46, 44, 39, 42, 42, + 37, 31, 30, 37, 43, 52, 43, 36, 38, 60, 82, 86, 78, 86, 81, 76, + 78, 81, 77, 62, 45, 43, 36, 24, 15, 9, 9, 10, 12, 19, 18, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 193, 76, 76, 68, 59, 58, 62, 55, 40, 29, 26, 37, 47, 54, 53, 62, + 57, 54, 50, 53, 50, 42, 29, 23, 23, 21, 18, 21, 29, 32, 30, 37, + 32, 22, 27, 43, 43, 38, 44, 46, 44, 41, 40, 43, 45, 46, 46, 44, + 39, 38, 45, 56, 60, 53, 43, 37, 30, 27, 34, 49, 66, 75, 78, 94, + 89, 82, 77, 75, 76, 68, 59, 57, 48, 35, 22, 15, 13, 13, 14, 26, + 13, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 190, 67, 76, 80, 71, 61, 62, 68, 60, 50, 45, 44, 50, 54, 56, + 53, 44, 45, 44, 36, 36, 37, 37, 31, 19, 18, 17, 15, 18, 25, 28, + 28, 25, 31, 24, 19, 31, 40, 37, 38, 44, 45, 45, 42, 42, 41, 44, + 47, 50, 46, 45, 49, 58, 60, 56, 49, 21, 27, 39, 48, 42, 37, 48, + 69, 91, 90, 83, 73, 70, 74, 77, 75, 70, 63, 50, 37, 26, 21, 18, + 17, 19, 10, 10, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 197, 73, 77, 86, 88, 77, 64, 63, 68, 40, 42, 46, 49, 48, + 43, 36, 31, 31, 36, 34, 25, 22, 27, 33, 32, 18, 17, 15, 14, 16, + 22, 25, 26, 29, 49, 44, 28, 38, 57, 60, 56, 57, 59, 58, 52, 47, + 44, 47, 52, 47, 51, 51, 41, 30, 29, 39, 49, 34, 31, 45, 61, 57, + 38, 34, 43, 48, 64, 77, 80, 80, 82, 81, 76, 71, 66, 56, 43, 31, + 22, 16, 12, 3, 13, 24, 24, 90, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 192, 64, 65, 62, 64, 69, 61, 49, 52, 61, 58, 45, 33, + 30, 34, 35, 29, 22, 28, 28, 28, 28, 27, 24, 22, 21, 15, 15, 16, + 15, 14, 17, 24, 29, 27, 31, 34, 32, 29, 29, 33, 38, 46, 49, 48, + 41, 36, 33, 39, 45, 55, 53, 50, 48, 49, 47, 45, 42, 29, 28, 32, + 35, 37, 40, 42, 44, 47, 54, 62, 69, 74, 76, 80, 81, 77, 79, 69, + 58, 52, 38, 26, 30, 32, 23, 10, 10, 24, 100, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 200, 90, 91, 74, 70, 71, 73, 69, 56, 47, 43, 42, + 34, 29, 28, 32, 33, 32, 29, 21, 22, 22, 21, 20, 18, 16, 15, 18, + 17, 15, 13, 11, 12, 14, 17, 14, 20, 26, 30, 30, 31, 33, 37, 40, + 46, 50, 50, 46, 38, 32, 30, 37, 35, 33, 34, 36, 35, 31, 25, 26, + 25, 27, 30, 33, 35, 37, 37, 49, 49, 49, 49, 51, 54, 61, 64, 73, + 76, 73, 68, 67, 55, 42, 40, 32, 27, 16, 13, 23, 19, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 84, 80, 77, 74, 70, 65, 60, 61, 59, 49, + 37, 28, 27, 28, 28, 27, 28, 29, 30, 22, 22, 21, 20, 19, 18, 17, + 16, 20, 17, 15, 13, 13, 13, 12, 11, 12, 18, 26, 32, 35, 35, 35, + 36, 27, 33, 40, 48, 52, 48, 40, 34, 37, 35, 35, 38, 43, 43, 37, + 30, 33, 32, 34, 35, 37, 37, 38, 38, 42, 41, 41, 42, 46, 51, 59, + 63, 60, 66, 66, 68, 72, 63, 47, 42, 35, 33, 25, 23, 31, 32, 33, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 195, 71, 59, 48, 65, 66, 56, 45, 49, + 60, 61, 49, 28, 30, 33, 31, 24, 20, 21, 23, 23, 22, 20, 19, 18, + 18, 18, 18, 19, 16, 15, 16, 21, 21, 21, 17, 19, 20, 26, 29, 32, + 31, 30, 28, 26, 26, 28, 36, 48, 52, 49, 44, 49, 45, 44, 48, 55, + 57, 52, 46, 45, 43, 43, 42, 42, 39, 37, 37, 34, 35, 40, 47, 53, + 58, 62, 62, 71, 79, 78, 80, 88, 84, 67, 60, 40, 39, 32, 34, 49, + 52, 56, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 82, 69, 55, 61, 67, 62, + 46, 43, 56, 62, 57, 33, 37, 39, 35, 27, 20, 19, 21, 20, 18, 16, + 14, 13, 14, 15, 16, 20, 16, 18, 19, 26, 27, 28, 24, 24, 19, 19, + 18, 23, 23, 23, 21, 36, 30, 27, 32, 43, 48, 44, 38, 45, 41, 38, + 40, 47, 51, 51, 49, 47, 47, 44, 42, 38, 34, 29, 28, 33, 34, 37, + 44, 50, 54, 56, 54, 74, 82, 78, 77, 87, 89, 79, 74, 56, 51, 40, + 44, 60, 62, 61, 66, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, 88, 84, 74, 62, 56, + 68, 68, 52, 42, 43, 45, 41, 37, 37, 37, 35, 31, 27, 24, 23, 20, + 18, 15, 12, 12, 14, 16, 18, 21, 20, 19, 21, 24, 27, 28, 28, 28, + 22, 16, 16, 21, 26, 26, 24, 29, 26, 26, 34, 46, 49, 41, 33, 37, + 35, 33, 34, 39, 43, 47, 49, 49, 47, 45, 42, 38, 32, 28, 25, 30, + 28, 29, 33, 45, 54, 59, 62, 63, 71, 65, 59, 68, 76, 74, 75, 80, + 72, 60, 59, 70, 66, 55, 53, 90, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 87, 76, 68, 65, + 63, 58, 65, 63, 51, 39, 34, 33, 33, 37, 35, 32, 32, 35, 34, 30, + 25, 27, 24, 20, 17, 17, 19, 22, 25, 22, 22, 23, 23, 23, 26, 30, + 33, 36, 28, 20, 20, 27, 31, 30, 27, 26, 24, 26, 34, 45, 48, 41, + 33, 31, 33, 35, 35, 37, 39, 44, 50, 49, 49, 47, 43, 39, 35, 32, + 31, 25, 24, 28, 36, 51, 61, 66, 66, 65, 74, 65, 54, 61, 71, 75, + 78, 87, 84, 73, 71, 77, 65, 51, 48, 37, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 87, 70, + 60, 64, 73, 66, 65, 57, 47, 39, 36, 40, 45, 43, 36, 29, 30, 36, + 38, 32, 24, 29, 26, 22, 20, 19, 22, 28, 30, 23, 25, 26, 26, 26, + 30, 37, 43, 39, 30, 22, 20, 26, 29, 25, 20, 38, 33, 30, 33, 39, + 40, 35, 29, 21, 27, 32, 33, 31, 32, 37, 43, 44, 44, 43, 41, 40, + 38, 36, 33, 27, 29, 35, 45, 54, 59, 55, 49, 59, 69, 59, 43, 47, + 55, 60, 63, 73, 76, 71, 70, 71, 58, 46, 45, 35, 108, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 83, + 75, 70, 70, 71, 69, 50, 60, 58, 42, 40, 50, 51, 43, 38, 41, 31, + 20, 25, 28, 25, 30, 24, 25, 27, 27, 24, 22, 27, 33, 25, 25, 34, + 35, 27, 28, 37, 37, 30, 24, 24, 31, 31, 21, 16, 19, 14, 21, 26, + 28, 34, 40, 40, 34, 26, 25, 26, 32, 38, 38, 33, 26, 33, 26, 27, + 36, 41, 39, 35, 35, 27, 35, 43, 49, 53, 55, 51, 46, 68, 65, 58, + 49, 44, 42, 46, 48, 44, 64, 61, 64, 60, 51, 50, 30, 30, 34, 112, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 73, 65, 64, 73, 78, 70, 55, 57, 54, 39, 28, 38, 58, 55, 42, 41, + 44, 33, 22, 26, 26, 21, 22, 21, 24, 28, 29, 29, 29, 33, 36, 37, + 32, 33, 29, 23, 30, 44, 43, 44, 39, 36, 38, 34, 27, 21, 19, 21, + 26, 29, 29, 34, 40, 42, 36, 29, 25, 23, 26, 32, 37, 38, 35, 26, + 23, 28, 36, 39, 34, 31, 30, 40, 49, 53, 51, 46, 46, 47, 48, 58, + 59, 54, 46, 39, 36, 40, 43, 38, 60, 62, 63, 54, 45, 50, 34, 18, + 18, 21, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 191, 67, 70, 69, 68, 69, 67, 60, 51, 46, 35, 27, 35, 50, 50, + 37, 40, 45, 37, 30, 34, 34, 27, 26, 24, 28, 30, 31, 33, 35, 36, + 37, 45, 39, 38, 32, 27, 38, 50, 46, 48, 46, 42, 36, 34, 33, 28, + 22, 32, 36, 37, 35, 36, 41, 43, 41, 38, 29, 22, 21, 26, 33, 40, + 43, 37, 34, 37, 40, 38, 34, 33, 34, 51, 57, 59, 50, 41, 39, 43, + 48, 49, 52, 51, 44, 37, 34, 36, 39, 49, 63, 58, 57, 55, 49, 51, + 31, 18, 16, 16, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 61, 67, 73, 73, 71, 68, 63, 60, 33, 45, 50, 42, 31, + 31, 35, 38, 30, 42, 41, 36, 40, 40, 35, 38, 35, 35, 33, 32, 36, + 41, 44, 44, 49, 51, 56, 51, 47, 57, 62, 50, 46, 49, 45, 34, 34, + 39, 39, 28, 39, 41, 44, 45, 46, 48, 48, 45, 46, 36, 27, 24, 28, + 36, 45, 49, 56, 55, 52, 47, 42, 39, 40, 43, 51, 55, 55, 46, 36, + 35, 37, 41, 40, 46, 49, 45, 40, 36, 39, 43, 55, 57, 43, 48, 60, + 61, 59, 32, 26, 24, 24, 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 68, 77, 66, 58, 67, 83, 81, 62, 43, 32, 45, 53, + 46, 31, 25, 32, 42, 25, 42, 45, 39, 36, 32, 31, 39, 43, 43, 37, + 33, 40, 52, 61, 60, 65, 73, 80, 70, 63, 74, 80, 67, 58, 59, 52, + 40, 41, 47, 49, 41, 41, 41, 48, 55, 59, 56, 50, 46, 50, 44, 37, + 36, 41, 48, 56, 60, 68, 72, 76, 71, 63, 55, 49, 45, 52, 54, 53, + 45, 41, 39, 33, 29, 33, 39, 44, 43, 41, 39, 41, 44, 41, 49, 39, + 46, 57, 63, 69, 50, 30, 31, 30, 22, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 65, 74, 67, 67, 72, 77, 71, 58, 48, 48, + 42, 36, 34, 33, 35, 39, 46, 37, 55, 56, 45, 39, 33, 31, 39, 51, + 50, 41, 36, 48, 69, 81, 80, 84, 96, 100, 79, 63, 80, 98, 92, 79, + 73, 62, 52, 48, 51, 52, 47, 44, 43, 52, 63, 73, 67, 55, 45, 49, + 48, 47, 50, 55, 62, 68, 72, 78, 90, 104, 106, 99, 84, 66, 49, 55, + 57, 58, 53, 49, 43, 34, 25, 30, 33, 36, 38, 39, 39, 39, 40, 40, + 61, 60, 59, 54, 53, 71, 64, 35, 34, 32, 24, 95, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 62, 60, 63, 73, 85, 84, 70, 55, 56, + 66, 58, 41, 28, 30, 38, 41, 40, 42, 50, 61, 57, 47, 47, 45, 44, + 49, 62, 59, 51, 46, 59, 80, 90, 88, 93, 111, 116, 85, 63, 83, 111, + 111, 101, 88, 74, 66, 60, 56, 56, 59, 59, 53, 59, 76, 86, 81, 63, + 51, 50, 49, 52, 56, 59, 63, 68, 71, 83, 99, 114, 121, 118, 104, 79, + 58, 54, 59, 63, 60, 54, 48, 41, 34, 34, 33, 33, 34, 38, 38, 36, + 34, 43, 62, 59, 56, 49, 47, 63, 55, 38, 32, 27, 22, 21, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 64, 70, 76, 83, 86, 77, + 65, 62, 68, 56, 42, 34, 39, 41, 37, 34, 36, 45, 54, 47, 42, 53, + 58, 56, 61, 74, 72, 63, 55, 67, 86, 94, 87, 92, 117, 125, 92, 64, + 83, 113, 117, 121, 103, 89, 82, 76, 69, 69, 76, 75, 66, 70, 85, 98, + 93, 73, 59, 53, 52, 53, 54, 56, 56, 60, 63, 83, 97, 109, 114, 114, + 105, 84, 61, 46, 59, 68, 64, 57, 50, 49, 46, 40, 36, 33, 34, 38, + 39, 35, 30, 31, 39, 29, 35, 45, 51, 58, 40, 35, 24, 15, 15, 21, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 62, 69, 78, 76, 69, + 67, 73, 78, 67, 52, 49, 44, 41, 39, 34, 27, 24, 27, 38, 43, 44, + 48, 58, 66, 68, 66, 75, 79, 88, 97, 102, 102, 106, 112, 122, 119, 124, + 128, 110, 80, 93, 140, 142, 131, 118, 106, 97, 86, 79, 75, 71, 74, 82, + 94, 114, 121, 102, 77, 64, 61, 63, 61, 61, 49, 41, 61, 79, 107, 111, + 99, 102, 105, 86, 64, 47, 47, 66, 61, 36, 48, 61, 37, 35, 34, 33, + 33, 35, 35, 31, 29, 24, 24, 28, 32, 33, 34, 43, 52, 47, 43, 35, + 23, 17, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 64, 65, 72, + 85, 96, 91, 78, 64, 47, 34, 49, 39, 30, 30, 33, 29, 25, 24, 37, + 48, 54, 57, 60, 70, 80, 86, 80, 87, 99, 110, 116, 117, 122, 129, 139, + 139, 143, 151, 135, 105, 113, 153, 150, 147, 144, 136, 112, 85, 74, 75, 82, + 78, 80, 94, 121, 133, 115, 85, 71, 70, 69, 69, 79, 74, 63, 70, 85, + 94, 101, 98, 101, 106, 91, 64, 62, 46, 54, 56, 35, 24, 33, 33, 31, + 29, 29, 28, 27, 26, 26, 26, 40, 37, 36, 37, 36, 35, 44, 53, 48, + 45, 41, 39, 42, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, 70, 61, + 55, 60, 71, 76, 67, 54, 46, 42, 41, 52, 37, 27, 31, 42, 44, 39, + 35, 54, 60, 64, 66, 73, 80, 83, 84, 97, 102, 115, 128, 135, 137, 141, + 147, 151, 155, 160, 168, 156, 125, 124, 156, 161, 160, 164, 159, 137, 103, 78, + 70, 75, 78, 86, 101, 125, 136, 121, 94, 75, 78, 74, 75, 83, 75, 62, + 57, 65, 69, 97, 122, 124, 120, 101, 65, 60, 57, 62, 67, 54, 33, 29, + 37, 29, 27, 26, 25, 25, 27, 29, 32, 30, 29, 32, 38, 41, 41, 49, + 54, 52, 51, 51, 57, 67, 68, 255, 255, 255, 255, 255, 255, 255, 255, 75, + 67, 56, 50, 53, 51, 45, 41, 44, 49, 53, 55, 47, 35, 29, 37, 50, + 54, 52, 51, 55, 71, 82, 82, 80, 87, 97, 106, 124, 122, 128, 141, 152, + 155, 156, 157, 161, 164, 170, 178, 169, 137, 127, 147, 164, 166, 163, 157, 148, + 129, 95, 62, 56, 70, 88, 104, 122, 131, 121, 103, 76, 80, 77, 90, 98, + 79, 63, 56, 54, 54, 98, 137, 129, 118, 104, 72, 61, 75, 73, 57, 48, + 40, 33, 31, 33, 28, 25, 26, 32, 38, 40, 41, 16, 17, 25, 35, 41, + 40, 40, 42, 42, 44, 50, 61, 73, 73, 255, 255, 255, 255, 255, 255, 255, + 255, 79, 68, 55, 45, 44, 46, 51, 56, 58, 54, 49, 46, 35, 31, 31, + 38, 46, 47, 47, 51, 38, 64, 85, 84, 79, 95, 128, 157, 142, 133, 132, + 144, 158, 165, 164, 162, 173, 176, 181, 187, 181, 151, 131, 136, 158, 173, 169, + 149, 144, 145, 117, 76, 59, 63, 73, 90, 119, 142, 138, 121, 93, 80, 65, + 105, 136, 114, 95, 78, 62, 56, 92, 122, 106, 98, 103, 92, 96, 100, 86, + 61, 47, 38, 36, 40, 41, 31, 22, 25, 34, 42, 41, 38, 31, 27, 25, + 31, 34, 29, 25, 23, 25, 33, 43, 55, 66, 68, 255, 255, 255, 255, 255, + 255, 255, 199, 77, 60, 47, 40, 31, 42, 55, 57, 47, 34, 34, 40, 33, + 31, 33, 37, 38, 36, 38, 46, 50, 52, 53, 61, 85, 118, 143, 156, 141, + 135, 135, 148, 164, 169, 170, 171, 180, 182, 184, 188, 186, 159, 133, 130, 158, + 186, 191, 162, 149, 153, 142, 113, 93, 75, 60, 76, 125, 165, 165, 143, 122, + 91, 48, 93, 146, 136, 116, 80, 53, 52, 82, 112, 110, 109, 117, 116, 102, + 89, 88, 91, 71, 38, 31, 41, 40, 30, 20, 21, 29, 34, 32, 28, 49, + 38, 27, 27, 29, 28, 28, 28, 29, 37, 46, 52, 57, 58, 255, 255, 255, + 255, 255, 255, 255, 82, 65, 49, 45, 46, 33, 33, 37, 34, 24, 16, 24, + 36, 33, 29, 30, 32, 33, 33, 40, 49, 64, 52, 45, 64, 107, 137, 138, + 124, 136, 141, 151, 162, 170, 172, 177, 181, 183, 184, 183, 187, 189, 165, 136, + 128, 156, 178, 187, 171, 160, 158, 153, 139, 125, 101, 77, 87, 133, 173, 176, + 155, 145, 121, 59, 75, 119, 123, 119, 79, 49, 49, 69, 102, 127, 136, 134, + 129, 84, 67, 82, 97, 68, 34, 27, 24, 31, 28, 23, 22, 25, 28, 29, + 30, 44, 34, 25, 29, 35, 37, 34, 36, 37, 43, 49, 53, 57, 59, 255, + 255, 255, 255, 255, 255, 255, 81, 58, 46, 51, 62, 51, 38, 30, 31, 31, + 25, 22, 22, 30, 25, 20, 23, 28, 33, 44, 55, 50, 65, 84, 104, 125, + 137, 134, 128, 133, 147, 167, 177, 176, 173, 178, 189, 189, 190, 186, 190, 195, + 174, 144, 133, 148, 152, 159, 164, 166, 162, 149, 140, 137, 124, 107, 109, 136, + 165, 169, 158, 153, 153, 87, 73, 95, 111, 134, 103, 77, 65, 59, 81, 123, + 143, 138, 132, 115, 100, 104, 94, 56, 48, 55, 37, 25, 29, 31, 30, 28, + 28, 36, 42, 35, 28, 28, 35, 43, 41, 33, 27, 29, 34, 40, 50, 62, + 69, 128, 255, 255, 255, 255, 255, 198, 77, 50, 40, 55, 37, 31, 40, 34, + 36, 52, 43, 26, 29, 32, 33, 32, 30, 31, 34, 39, 43, 57, 90, 120, + 130, 130, 132, 145, 158, 154, 156, 163, 168, 175, 181, 185, 187, 185, 190, 193, + 196, 195, 183, 158, 135, 150, 155, 161, 165, 165, 162, 160, 158, 156, 145, 133, + 128, 132, 142, 152, 157, 171, 154, 122, 92, 83, 97, 116, 128, 124, 119, 119, + 127, 129, 126, 134, 148, 164, 141, 114, 101, 95, 83, 57, 36, 40, 34, 31, + 33, 38, 41, 37, 34, 26, 29, 33, 37, 39, 38, 33, 27, 28, 29, 29, + 32, 49, 68, 69, 255, 255, 255, 255, 255, 86, 81, 57, 41, 56, 51, 36, + 41, 39, 42, 47, 42, 33, 33, 45, 42, 37, 35, 37, 39, 41, 44, 84, + 109, 131, 138, 138, 143, 154, 162, 167, 169, 173, 177, 183, 186, 188, 190, 186, + 190, 191, 193, 195, 188, 168, 149, 154, 157, 162, 165, 164, 161, 157, 155, 159, + 154, 146, 140, 139, 145, 155, 162, 173, 161, 139, 111, 90, 89, 106, 123, 154, + 158, 157, 151, 147, 149, 149, 149, 146, 137, 124, 116, 109, 94, 71, 52, 53, + 44, 41, 42, 44, 41, 36, 31, 30, 31, 33, 35, 37, 37, 36, 30, 34, + 33, 27, 27, 46, 66, 58, 255, 255, 255, 255, 255, 91, 82, 62, 35, 42, + 49, 37, 36, 45, 49, 41, 40, 42, 36, 42, 38, 34, 34, 40, 47, 54, + 61, 105, 121, 135, 141, 147, 156, 167, 171, 175, 177, 180, 182, 185, 184, 183, + 183, 187, 189, 189, 190, 194, 193, 181, 168, 164, 166, 167, 168, 167, 163, 159, + 156, 163, 163, 162, 157, 154, 156, 163, 170, 175, 170, 159, 139, 110, 94, 105, + 128, 171, 182, 180, 165, 158, 161, 157, 146, 136, 139, 140, 138, 128, 109, 90, + 75, 68, 58, 53, 56, 56, 46, 39, 35, 34, 32, 32, 34, 36, 35, 33, + 30, 33, 33, 26, 25, 50, 76, 64, 255, 255, 255, 255, 205, 89, 76, 63, + 32, 31, 41, 32, 32, 49, 53, 37, 39, 47, 36, 34, 32, 34, 35, 41, + 49, 64, 82, 108, 120, 129, 139, 152, 165, 174, 174, 177, 178, 181, 183, 184, + 182, 179, 178, 186, 189, 188, 189, 194, 196, 189, 179, 174, 174, 173, 174, 173, + 170, 165, 162, 165, 167, 171, 169, 170, 169, 174, 177, 177, 173, 171, 162, 138, + 119, 127, 153, 177, 184, 184, 176, 169, 167, 161, 151, 151, 153, 156, 153, 142, + 128, 113, 102, 91, 80, 74, 77, 76, 63, 50, 43, 39, 34, 34, 38, 39, + 35, 30, 28, 28, 33, 28, 25, 48, 75, 64, 255, 255, 255, 255, 99, 81, + 67, 61, 39, 38, 43, 28, 30, 46, 50, 36, 40, 48, 35, 36, 37, 41, + 41, 41, 46, 69, 94, 113, 122, 132, 145, 160, 173, 179, 176, 180, 182, 187, + 189, 189, 187, 184, 183, 185, 189, 189, 190, 194, 196, 190, 181, 181, 179, 178, + 179, 180, 179, 175, 171, 170, 171, 174, 177, 183, 184, 183, 180, 183, 176, 175, + 176, 164, 151, 157, 177, 186, 182, 183, 188, 186, 175, 169, 169, 170, 167, 160, + 156, 151, 144, 139, 135, 123, 115, 106, 106, 101, 87, 67, 52, 41, 37, 39, + 44, 44, 35, 27, 25, 27, 35, 33, 26, 37, 57, 50, 255, 255, 255, 255, + 103, 82, 63, 49, 39, 45, 37, 29, 32, 39, 39, 36, 44, 47, 38, 36, + 37, 43, 47, 48, 55, 80, 108, 124, 134, 146, 155, 166, 177, 181, 178, 180, + 182, 186, 188, 189, 188, 187, 186, 185, 189, 189, 189, 192, 194, 189, 182, 186, + 183, 180, 181, 183, 183, 180, 176, 177, 176, 178, 184, 191, 193, 189, 184, 189, + 181, 177, 179, 178, 174, 176, 186, 192, 186, 183, 193, 192, 181, 175, 179, 179, + 171, 163, 159, 158, 159, 159, 159, 154, 152, 143, 131, 124, 113, 88, 62, 46, + 41, 43, 51, 48, 36, 26, 23, 22, 30, 32, 28, 35, 48, 47, 255, 255, + 255, 200, 106, 89, 61, 32, 33, 50, 30, 35, 39, 29, 23, 37, 49, 47, + 44, 38, 33, 37, 46, 53, 63, 85, 112, 131, 144, 154, 160, 167, 175, 181, + 182, 178, 179, 181, 183, 184, 184, 184, 186, 187, 189, 187, 185, 187, 191, 189, + 184, 193, 189, 185, 185, 188, 188, 186, 182, 186, 187, 190, 194, 196, 196, 193, + 191, 191, 186, 182, 182, 184, 186, 186, 187, 189, 185, 183, 186, 187, 185, 181, + 180, 177, 175, 173, 171, 172, 171, 171, 171, 171, 176, 169, 153, 146, 141, 112, + 77, 54, 45, 46, 53, 51, 36, 26, 26, 20, 23, 25, 29, 38, 47, 48, + 255, 255, 255, 77, 95, 88, 55, 20, 31, 58, 33, 41, 45, 23, 12, 37, + 52, 48, 50, 49, 40, 35, 45, 56, 63, 79, 97, 130, 144, 154, 157, 161, + 170, 179, 184, 181, 181, 182, 182, 184, 185, 186, 187, 188, 189, 185, 182, 184, + 189, 190, 188, 199, 196, 191, 190, 192, 192, 189, 185, 191, 195, 200, 200, 197, + 195, 194, 196, 190, 190, 187, 183, 187, 193, 192, 187, 181, 188, 185, 178, 182, + 191, 191, 181, 174, 180, 185, 187, 182, 178, 175, 174, 175, 188, 183, 163, 159, + 160, 132, 91, 61, 51, 47, 52, 50, 34, 28, 29, 26, 21, 19, 26, 33, + 37, 36, 255, 255, 255, 57, 81, 78, 41, 25, 47, 62, 56, 39, 27, 21, + 27, 35, 39, 44, 51, 46, 39, 40, 51, 62, 70, 85, 104, 132, 147, 159, + 166, 171, 178, 182, 182, 178, 177, 182, 182, 184, 181, 182, 181, 181, 189, 193, + 192, 192, 196, 196, 193, 195, 196, 193, 191, 193, 195, 194, 188, 187, 196, 198, + 194, 197, 205, 204, 198, 186, 187, 189, 187, 187, 186, 186, 189, 188, 192, 193, + 190, 186, 184, 187, 189, 184, 182, 181, 184, 187, 189, 188, 185, 189, 182, 178, + 171, 157, 149, 135, 114, 87, 39, 36, 58, 43, 30, 35, 27, 22, 24, 26, + 30, 35, 41, 38, 255, 255, 184, 60, 77, 73, 45, 32, 49, 64, 62, 37, + 24, 14, 17, 26, 32, 41, 48, 49, 43, 39, 40, 49, 66, 89, 109, 134, + 146, 154, 159, 166, 174, 183, 183, 182, 180, 179, 178, 178, 178, 179, 181, 185, + 187, 190, 192, 191, 188, 187, 187, 191, 195, 195, 192, 193, 196, 194, 193, 194, + 198, 200, 199, 201, 202, 202, 198, 197, 193, 189, 184, 183, 185, 189, 193, 190, + 191, 191, 191, 190, 190, 190, 189, 185, 183, 181, 183, 190, 192, 196, 196, 189, + 182, 177, 169, 154, 147, 137, 117, 93, 47, 42, 56, 40, 28, 33, 28, 26, + 25, 23, 24, 31, 42, 45, 255, 255, 39, 54, 61, 57, 41, 34, 43, 54, + 54, 41, 28, 19, 21, 29, 34, 37, 37, 42, 45, 42, 38, 47, 69, 96, + 116, 134, 144, 152, 157, 164, 171, 177, 177, 181, 180, 180, 180, 179, 179, 178, + 178, 180, 177, 181, 189, 192, 185, 185, 189, 185, 190, 194, 191, 192, 195, 195, + 194, 201, 201, 202, 204, 204, 201, 198, 198, 200, 196, 191, 185, 184, 186, 188, + 191, 189, 187, 185, 188, 192, 193, 190, 186, 197, 193, 189, 187, 190, 192, 195, + 196, 190, 184, 179, 168, 151, 146, 140, 123, 95, 55, 48, 56, 39, 26, 31, + 29, 23, 23, 20, 20, 28, 38, 39, 255, 255, 25, 42, 43, 42, 37, 35, + 36, 39, 39, 38, 31, 27, 31, 38, 36, 29, 21, 30, 42, 47, 45, 55, + 82, 109, 123, 137, 146, 157, 162, 167, 171, 171, 167, 175, 176, 178, 179, 178, + 175, 171, 168, 177, 169, 171, 183, 187, 176, 174, 182, 179, 183, 185, 184, 187, + 194, 194, 193, 203, 198, 199, 207, 207, 199, 195, 199, 194, 192, 192, 190, 189, + 185, 181, 178, 188, 186, 185, 187, 188, 188, 184, 181, 191, 189, 187, 185, 185, + 187, 189, 193, 190, 185, 182, 169, 150, 146, 143, 130, 91, 61, 54, 56, 42, + 27, 29, 28, 19, 23, 24, 26, 30, 34, 29, 255, 255, 21, 38, 36, 39, + 41, 41, 36, 32, 30, 27, 24, 22, 25, 31, 30, 23, 13, 29, 42, 49, + 50, 62, 89, 118, 133, 144, 150, 157, 160, 166, 172, 174, 171, 178, 176, 172, + 166, 161, 158, 156, 155, 169, 158, 158, 168, 169, 157, 155, 161, 173, 172, 170, + 173, 182, 192, 192, 190, 197, 194, 197, 205, 206, 197, 196, 200, 193, 190, 188, + 187, 186, 181, 175, 170, 182, 184, 184, 182, 177, 173, 174, 175, 173, 174, 178, + 181, 184, 186, 189, 190, 187, 183, 180, 167, 150, 145, 143, 131, 88, 65, 56, + 53, 44, 32, 29, 28, 23, 28, 31, 31, 32, 35, 33, 255, 255, 28, 31, + 31, 33, 38, 38, 32, 28, 24, 24, 21, 16, 15, 20, 27, 28, 24, 33, + 40, 44, 50, 66, 95, 124, 144, 156, 156, 154, 152, 160, 173, 181, 181, 183, + 173, 157, 140, 131, 128, 133, 135, 134, 126, 125, 135, 139, 139, 138, 143, 154, + 154, 153, 156, 166, 182, 187, 189, 189, 191, 195, 199, 201, 197, 196, 196, 196, + 189, 180, 173, 171, 169, 166, 162, 163, 166, 166, 163, 159, 156, 159, 164, 169, + 173, 176, 179, 179, 182, 183, 185, 184, 177, 175, 166, 151, 147, 142, 127, 88, + 72, 55, 49, 43, 34, 27, 25, 24, 26, 25, 23, 24, 31, 35, 255, 28, + 21, 22, 25, 27, 28, 28, 27, 26, 23, 24, 24, 22, 17, 18, 26, 32, + 31, 28, 31, 42, 59, 81, 106, 133, 155, 161, 160, 157, 155, 162, 173, 179, + 177, 170, 157, 138, 119, 108, 103, 107, 109, 95, 92, 91, 96, 106, 114, 117, + 120, 120, 127, 131, 134, 143, 160, 175, 186, 185, 193, 197, 196, 198, 199, 196, + 190, 191, 182, 169, 161, 157, 151, 145, 138, 129, 126, 127, 127, 128, 131, 137, + 140, 154, 157, 160, 163, 163, 166, 170, 174, 184, 177, 176, 169, 157, 153, 145, + 125, 94, 78, 53, 40, 39, 33, 24, 23, 20, 23, 22, 19, 20, 26, 29, + 255, 10, 0, 20, 25, 27, 23, 23, 27, 29, 26, 21, 26, 26, 21, 19, + 24, 26, 23, 18, 22, 41, 72, 99, 122, 145, 163, 164, 165, 166, 167, 171, + 173, 170, 161, 147, 139, 125, 112, 99, 93, 90, 90, 80, 78, 73, 71, 79, + 89, 91, 88, 92, 103, 113, 115, 121, 140, 164, 181, 183, 193, 197, 193, 194, + 199, 195, 185, 177, 170, 162, 155, 149, 137, 123, 112, 95, 91, 89, 92, 100, + 108, 114, 115, 114, 120, 125, 131, 139, 149, 162, 170, 185, 178, 177, 173, 163, + 159, 148, 127, 101, 84, 51, 33, 35, 32, 22, 22, 20, 25, 29, 26, 25, + 26, 22, 255, 24, 17, 19, 26, 36, 33, 22, 26, 29, 18, 18, 8, 15, + 22, 19, 19, 26, 26, 27, 29, 38, 62, 100, 136, 156, 159, 167, 170, 162, + 166, 175, 153, 131, 136, 132, 115, 98, 94, 93, 91, 89, 89, 84, 89, 83, + 76, 68, 54, 49, 58, 82, 91, 101, 102, 103, 115, 143, 168, 173, 169, 179, + 194, 193, 189, 184, 175, 166, 160, 157, 153, 136, 115, 106, 106, 91, 84, 78, + 79, 85, 89, 90, 91, 90, 77, 93, 115, 122, 138, 158, 158, 170, 177, 179, + 169, 159, 152, 144, 134, 108, 76, 44, 31, 30, 26, 18, 12, 17, 23, 29, + 29, 28, 24, 22, 255, 28, 28, 25, 25, 32, 33, 29, 36, 37, 24, 13, + 9, 16, 21, 15, 19, 28, 26, 35, 36, 43, 67, 107, 143, 160, 158, 167, + 166, 161, 157, 149, 125, 113, 121, 119, 121, 124, 128, 128, 131, 134, 137, 122, + 114, 95, 82, 87, 83, 68, 56, 61, 68, 81, 92, 98, 107, 127, 150, 148, + 161, 175, 181, 179, 174, 172, 171, 159, 149, 138, 134, 132, 123, 103, 86, 82, + 73, 63, 59, 62, 67, 73, 77, 72, 65, 70, 81, 86, 100, 121, 131, 146, + 153, 158, 155, 153, 151, 146, 137, 117, 82, 44, 25, 23, 24, 21, 18, 27, + 30, 29, 28, 25, 23, 103, 255, 25, 30, 38, 29, 27, 28, 27, 31, 30, + 11, 14, 16, 24, 20, 9, 16, 25, 19, 18, 25, 40, 70, 110, 142, 152, + 146, 161, 150, 153, 159, 154, 144, 139, 135, 138, 140, 144, 146, 142, 138, 137, + 139, 133, 123, 101, 81, 84, 99, 108, 106, 116, 107, 104, 109, 111, 109, 120, + 136, 133, 158, 168, 162, 163, 166, 169, 178, 162, 158, 144, 125, 112, 108, 104, + 100, 92, 83, 75, 70, 74, 85, 94, 100, 109, 110, 104, 100, 99, 95, 99, + 111, 121, 127, 135, 141, 149, 153, 150, 144, 125, 89, 48, 25, 20, 19, 16, + 16, 32, 31, 27, 23, 19, 21, 255, 255, 39, 44, 52, 36, 31, 34, 32, + 33, 28, 12, 16, 22, 29, 17, 6, 17, 27, 21, 27, 49, 80, 111, 140, + 161, 168, 165, 171, 155, 158, 158, 142, 142, 157, 154, 155, 142, 135, 138, 129, + 114, 111, 120, 115, 108, 112, 122, 124, 121, 106, 88, 115, 101, 100, 114, 125, + 124, 129, 142, 139, 167, 174, 166, 170, 171, 165, 165, 162, 155, 147, 133, 115, + 102, 102, 107, 97, 98, 97, 93, 95, 101, 107, 108, 130, 143, 138, 130, 132, + 112, 91, 94, 109, 112, 121, 132, 146, 155, 154, 151, 134, 98, 56, 31, 22, + 17, 14, 12, 27, 26, 23, 17, 15, 18, 255, 190, 60, 61, 52, 36, 35, + 44, 43, 41, 40, 29, 14, 19, 27, 19, 11, 28, 46, 44, 77, 108, 142, + 162, 172, 181, 194, 201, 183, 171, 172, 160, 130, 127, 145, 147, 135, 125, 125, + 133, 118, 98, 106, 131, 112, 87, 94, 130, 149, 146, 119, 86, 89, 83, 93, + 116, 133, 132, 130, 134, 155, 175, 183, 178, 181, 180, 167, 151, 181, 158, 148, + 153, 148, 124, 104, 98, 106, 115, 121, 118, 115, 113, 109, 104, 116, 131, 133, + 137, 152, 139, 113, 109, 106, 107, 113, 127, 140, 148, 150, 149, 143, 104, 58, + 29, 18, 15, 18, 21, 22, 24, 24, 21, 21, 24, 255, 67, 61, 54, 46, + 27, 30, 46, 48, 43, 38, 29, 16, 16, 22, 22, 21, 41, 65, 68, 91, + 116, 139, 145, 145, 153, 170, 183, 163, 150, 154, 177, 195, 198, 173, 142, 120, + 125, 134, 131, 109, 90, 103, 130, 111, 95, 108, 126, 121, 120, 124, 114, 111, + 103, 97, 102, 111, 118, 127, 133, 170, 167, 172, 172, 167, 182, 193, 183, 195, + 171, 152, 140, 125, 103, 91, 93, 106, 121, 132, 129, 125, 121, 117, 109, 107, + 116, 118, 128, 148, 153, 143, 136, 109, 109, 112, 122, 132, 137, 143, 148, 144, + 102, 50, 17, 7, 9, 17, 26, 23, 27, 30, 31, 31, 35, 255, 67, 62, + 57, 50, 28, 31, 57, 66, 61, 52, 37, 33, 22, 22, 25, 24, 40, 62, + 69, 66, 81, 96, 105, 116, 129, 143, 148, 141, 127, 130, 179, 245, 255, 204, + 148, 128, 136, 129, 105, 95, 104, 110, 106, 84, 125, 181, 175, 116, 92, 101, + 93, 108, 103, 92, 87, 96, 119, 143, 154, 161, 153, 178, 185, 162, 177, 208, + 204, 171, 165, 145, 113, 91, 90, 98, 105, 101, 112, 116, 106, 98, 98, 99, + 97, 98, 95, 99, 107, 116, 132, 139, 133, 121, 119, 121, 128, 133, 137, 146, + 154, 145, 106, 56, 24, 11, 11, 16, 25, 23, 29, 31, 32, 32, 36, 255, + 82, 84, 85, 61, 38, 43, 79, 101, 101, 90, 72, 55, 36, 28, 26, 21, + 29, 46, 54, 60, 69, 84, 106, 133, 153, 159, 153, 150, 143, 132, 156, 207, + 214, 177, 150, 136, 135, 105, 70, 89, 136, 136, 98, 60, 127, 200, 185, 120, + 113, 134, 123, 108, 119, 121, 116, 122, 141, 155, 157, 139, 147, 205, 230, 185, + 172, 190, 173, 156, 166, 155, 136, 140, 164, 163, 141, 121, 127, 119, 95, 79, + 79, 84, 82, 93, 87, 97, 102, 101, 120, 140, 130, 133, 130, 131, 137, 140, + 143, 156, 167, 154, 120, 77, 47, 32, 25, 20, 22, 23, 26, 29, 27, 27, + 31, 255, 79, 81, 80, 71, 39, 55, 115, 152, 147, 125, 103, 95, 76, 44, + 41, 41, 40, 55, 57, 61, 62, 80, 113, 143, 156, 160, 160, 167, 159, 154, + 154, 154, 151, 153, 156, 133, 115, 93, 91, 118, 144, 137, 112, 89, 85, 105, + 121, 125, 149, 169, 162, 145, 130, 132, 135, 128, 143, 166, 164, 130, 158, 192, + 211, 205, 188, 171, 163, 158, 157, 135, 136, 121, 143, 144, 154, 149, 185, 200, + 166, 124, 102, 89, 77, 92, 114, 123, 115, 109, 108, 116, 132, 143, 154, 160, + 151, 141, 139, 145, 148, 147, 159, 140, 76, 59, 28, 21, 22, 19, 21, 26, + 29, 32, 36, 255, 85, 89, 88, 69, 41, 56, 116, 159, 164, 148, 127, 129, + 118, 89, 77, 63, 51, 59, 55, 72, 75, 90, 119, 147, 160, 161, 159, 163, + 161, 164, 168, 166, 155, 145, 140, 129, 121, 111, 114, 132, 150, 145, 130, 121, + 96, 93, 107, 128, 159, 168, 151, 126, 125, 134, 136, 133, 134, 140, 140, 146, + 157, 177, 196, 207, 200, 182, 166, 159, 154, 130, 129, 120, 139, 136, 138, 162, + 198, 202, 156, 116, 107, 104, 90, 112, 135, 142, 129, 119, 111, 117, 132, 153, + 159, 157, 142, 130, 125, 128, 128, 139, 152, 117, 64, 47, 25, 20, 19, 35, + 37, 33, 29, 33, 43, 255, 96, 101, 103, 69, 44, 56, 111, 155, 166, 153, + 131, 155, 153, 130, 112, 89, 67, 67, 59, 81, 85, 100, 126, 153, 165, 166, + 163, 166, 165, 170, 174, 170, 154, 138, 130, 128, 127, 129, 135, 143, 148, 146, + 140, 142, 120, 110, 112, 124, 147, 153, 140, 125, 138, 143, 142, 141, 132, 125, + 131, 161, 165, 176, 189, 200, 199, 188, 178, 175, 164, 141, 137, 134, 149, 144, + 141, 158, 191, 190, 141, 108, 114, 117, 103, 133, 152, 154, 139, 127, 117, 120, + 133, 147, 149, 144, 133, 127, 126, 130, 131, 125, 143, 88, 54, 36, 26, 29, + 25, 33, 41, 38, 31, 34, 119, 255, 100, 106, 106, 71, 52, 69, 119, 161, + 174, 161, 139, 157, 161, 143, 127, 107, 85, 81, 64, 81, 90, 108, 135, 158, + 171, 173, 170, 175, 170, 170, 170, 165, 155, 146, 144, 147, 145, 146, 151, 150, + 146, 146, 147, 145, 148, 149, 138, 127, 127, 137, 141, 143, 155, 145, 138, 144, + 139, 131, 143, 165, 178, 192, 194, 187, 181, 186, 192, 167, 160, 142, 134, 130, + 138, 137, 132, 141, 167, 171, 141, 120, 123, 127, 119, 141, 154, 150, 137, 132, + 126, 127, 135, 138, 140, 138, 135, 135, 141, 144, 143, 126, 150, 85, 58, 30, + 27, 33, 33, 32, 51, 57, 52, 52, 255, 255, 90, 94, 92, 76, 63, 88, + 144, 185, 194, 183, 166, 159, 165, 147, 133, 118, 104, 93, 67, 81, 94, 117, + 142, 161, 172, 175, 172, 182, 174, 169, 168, 166, 162, 161, 163, 171, 163, 158, + 157, 155, 153, 156, 159, 148, 157, 157, 146, 138, 135, 138, 144, 147, 153, 138, + 133, 146, 148, 144, 157, 166, 183, 200, 198, 187, 179, 184, 194, 172, 167, 159, + 140, 131, 128, 132, 132, 140, 148, 155, 149, 138, 133, 137, 142, 142, 146, 138, + 131, 138, 142, 141, 145, 148, 151, 149, 146, 144, 146, 143, 138, 144, 167, 109, + 74, 36, 32, 37, 47, 71, 93, 102, 91, 81, 255, 255, 80, 78, 77, 79, + 67, 99, 162, 195, 190, 179, 169, 177, 183, 163, 147, 134, 118, 99, 62, 76, + 99, 128, 150, 162, 170, 173, 174, 181, 175, 174, 176, 177, 174, 173, 175, 179, + 170, 161, 156, 157, 160, 163, 162, 149, 146, 133, 131, 149, 154, 145, 141, 146, + 149, 146, 146, 155, 158, 159, 166, 168, 177, 188, 195, 196, 193, 190, 189, 192, + 193, 191, 164, 151, 135, 142, 144, 151, 147, 149, 151, 146, 136, 140, 152, 143, + 148, 142, 137, 151, 156, 153, 155, 158, 161, 160, 155, 151, 149, 146, 139, 148, + 164, 131, 77, 48, 53, 60, 88, 127, 140, 141, 123, 105, 255, 255, 70, 66, + 62, 75, 64, 100, 166, 191, 175, 164, 166, 190, 200, 182, 163, 147, 127, 101, + 58, 67, 98, 135, 156, 163, 169, 175, 178, 179, 175, 175, 178, 179, 177, 175, + 176, 173, 171, 165, 155, 156, 163, 164, 157, 144, 157, 153, 149, 160, 157, 146, + 148, 162, 163, 171, 171, 161, 162, 171, 173, 167, 171, 181, 192, 201, 201, 195, + 189, 190, 192, 194, 163, 152, 131, 141, 142, 159, 155, 155, 155, 152, 145, 145, + 150, 149, 159, 158, 154, 163, 162, 156, 158, 160, 165, 165, 160, 155, 156, 156, + 153, 147, 148, 140, 71, 60, 76, 85, 126, 156, 159, 154, 141, 255, 255, 255, + 255, 52, 47, 68, 56, 97, 171, 196, 178, 172, 182, 189, 205, 191, 172, 154, + 133, 105, 57, 59, 96, 138, 159, 167, 172, 179, 184, 179, 173, 169, 171, 172, + 171, 171, 175, 170, 178, 174, 162, 162, 169, 167, 154, 143, 187, 208, 194, 175, + 149, 145, 169, 182, 182, 192, 186, 158, 155, 172, 173, 163, 173, 185, 195, 199, + 197, 194, 192, 187, 187, 194, 163, 157, 138, 149, 148, 164, 170, 171, 170, 168, + 164, 157, 150, 156, 172, 175, 171, 169, 162, 154, 156, 169, 172, 171, 164, 157, + 159, 160, 162, 160, 147, 151, 66, 65, 86, 91, 138, 157, 154, 152, 151, 255, + 255, 255, 255, 49, 56, 58, 47, 94, 162, 198, 186, 165, 182, 178, 189, 186, + 190, 169, 130, 102, 72, 69, 104, 143, 164, 171, 172, 175, 179, 171, 176, 175, + 169, 169, 177, 180, 180, 182, 182, 176, 171, 173, 176, 173, 163, 166, 203, 228, + 211, 178, 162, 167, 175, 185, 189, 188, 176, 161, 158, 168, 182, 178, 189, 196, + 196, 197, 198, 199, 197, 187, 187, 183, 174, 164, 159, 162, 165, 161, 161, 168, + 173, 170, 163, 165, 172, 164, 172, 174, 168, 161, 159, 161, 161, 172, 175, 172, + 166, 159, 155, 157, 163, 162, 164, 153, 73, 92, 99, 121, 126, 148, 161, 173, + 161, 255, 255, 255, 255, 48, 61, 49, 40, 84, 147, 189, 187, 166, 173, 177, + 185, 178, 178, 158, 123, 100, 74, 84, 107, 136, 154, 166, 171, 172, 171, 174, + 179, 179, 174, 175, 180, 186, 185, 185, 185, 184, 180, 182, 185, 182, 173, 178, + 186, 186, 177, 174, 182, 187, 185, 181, 185, 185, 178, 169, 168, 177, 188, 174, + 182, 189, 190, 191, 193, 194, 191, 184, 186, 187, 183, 176, 170, 167, 166, 157, + 153, 154, 158, 160, 162, 172, 183, 165, 171, 172, 167, 162, 164, 168, 172, 190, + 188, 181, 173, 166, 161, 159, 160, 164, 161, 157, 92, 113, 118, 140, 149, 161, + 185, 197, 255, 255, 255, 255, 255, 44, 61, 53, 43, 75, 126, 174, 194, 178, + 176, 180, 185, 174, 172, 157, 130, 117, 95, 108, 118, 132, 145, 161, 170, 170, + 164, 176, 180, 181, 178, 179, 183, 189, 189, 187, 187, 189, 188, 191, 193, 191, + 183, 179, 177, 172, 173, 187, 201, 197, 184, 175, 177, 178, 176, 173, 174, 178, + 182, 171, 180, 186, 187, 190, 193, 192, 189, 185, 185, 184, 182, 180, 176, 173, + 170, 174, 167, 163, 164, 165, 167, 173, 180, 169, 173, 174, 169, 168, 173, 180, + 184, 197, 191, 181, 173, 170, 167, 163, 159, 174, 161, 157, 112, 131, 131, 146, + 156, 175, 190, 212, 255, 255, 255, 255, 255, 42, 56, 59, 45, 61, 95, 152, + 193, 186, 179, 185, 188, 174, 175, 167, 152, 149, 135, 130, 132, 138, 148, 159, + 170, 169, 164, 174, 176, 178, 178, 179, 182, 188, 190, 188, 188, 192, 193, 195, + 195, 192, 188, 185, 187, 189, 185, 189, 191, 192, 185, 178, 176, 178, 175, 177, + 174, 175, 174, 179, 185, 192, 192, 193, 195, 193, 189, 190, 185, 178, 175, 175, + 177, 182, 181, 184, 181, 183, 183, 185, 180, 178, 174, 179, 181, 184, 179, 180, + 183, 190, 192, 194, 191, 184, 179, 175, 171, 169, 167, 176, 149, 149, 126, 145, + 143, 148, 153, 184, 174, 255, 255, 255, 255, 255, 255, 186, 56, 51, 37, 46, + 69, 127, 182, 180, 171, 186, 189, 172, 175, 175, 168, 171, 161, 141, 145, 148, + 151, 158, 166, 167, 165, 170, 174, 177, 179, 181, 183, 188, 192, 192, 192, 195, + 197, 197, 194, 192, 190, 199, 200, 197, 184, 177, 178, 188, 194, 184, 181, 180, + 180, 182, 180, 178, 174, 189, 194, 197, 197, 197, 198, 194, 189, 193, 188, 181, + 179, 180, 183, 187, 188, 175, 178, 184, 188, 192, 192, 189, 183, 188, 191, 194, + 190, 190, 192, 193, 192, 197, 197, 194, 187, 179, 175, 176, 180, 170, 137, 142, + 142, 161, 162, 160, 162, 189, 158, 255, 255, 255, 255, 255, 255, 255, 49, 43, + 34, 43, 61, 118, 175, 174, 164, 185, 186, 169, 172, 175, 172, 177, 167, 148, + 150, 150, 150, 154, 162, 166, 167, 174, 176, 180, 185, 188, 188, 193, 198, 200, + 198, 201, 203, 202, 197, 196, 197, 199, 198, 197, 192, 192, 190, 192, 190, 183, + 178, 178, 177, 182, 181, 181, 178, 192, 196, 198, 198, 199, 199, 195, 188, 190, + 191, 191, 190, 189, 188, 188, 188, 180, 183, 185, 183, 187, 191, 194, 193, 193, + 196, 198, 195, 195, 196, 195, 191, 200, 202, 197, 189, 177, 169, 172, 175, 173, + 145, 158, 166, 172, 171, 167, 165, 180, 255, 255, 255, 255, 255, 255, 255, 255, + 183, 49, 37, 40, 52, 105, 162, 171, 169, 186, 188, 171, 175, 179, 177, 183, + 173, 156, 153, 148, 145, 151, 163, 167, 169, 178, 179, 183, 191, 194, 193, 198, + 205, 206, 202, 205, 208, 206, 200, 201, 205, 197, 196, 199, 202, 204, 199, 192, + 185, 181, 177, 175, 174, 177, 178, 181, 181, 191, 196, 198, 198, 201, 203, 200, + 193, 191, 194, 194, 191, 189, 186, 188, 188, 195, 197, 197, 187, 186, 188, 195, + 194, 198, 198, 200, 196, 200, 202, 204, 201, 203, 201, 193, 184, 174, 168, 166, + 166, 172, 156, 179, 188, 172, 169, 166, 167, 167, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 56, 37, 33, 37, 85, 148, 165, 175, 189, 192, 178, 183, 189, + 187, 193, 184, 166, 157, 146, 141, 151, 164, 171, 173, 179, 180, 185, 193, 197, + 195, 200, 208, 207, 203, 205, 209, 207, 202, 204, 210, 204, 200, 195, 190, 184, + 182, 186, 192, 187, 183, 179, 177, 177, 180, 182, 184, 191, 195, 197, 199, 203, + 206, 204, 196, 195, 194, 190, 182, 177, 178, 186, 193, 192, 199, 201, 193, 188, + 191, 196, 196, 201, 202, 200, 198, 202, 209, 213, 212, 209, 202, 192, 184, 178, + 174, 169, 165, 156, 152, 185, 194, 169, 166, 167, 174, 163, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 184, 30, 32, 44, 61, 95, 143, 179, 190, 181, 183, + 192, 188, 185, 187, 185, 168, 158, 148, 144, 150, 158, 168, 173, 178, 183, 187, + 190, 194, 198, 205, 209, 209, 210, 214, 213, 209, 206, 205, 205, 196, 193, 188, + 184, 185, 188, 187, 185, 177, 175, 176, 181, 188, 190, 187, 183, 188, 199, 207, + 205, 201, 200, 202, 200, 195, 195, 187, 174, 171, 180, 191, 197, 193, 191, 189, + 190, 192, 195, 195, 195, 202, 201, 201, 202, 205, 210, 215, 218, 213, 206, 196, + 189, 185, 180, 171, 165, 159, 162, 177, 185, 176, 170, 171, 163, 178, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 42, 43, 41, 53, 85, 122, 152, 188, + 183, 184, 192, 191, 186, 185, 182, 175, 163, 153, 147, 152, 158, 163, 167, 176, + 181, 186, 190, 195, 199, 206, 209, 206, 208, 212, 210, 206, 202, 201, 200, 200, + 195, 189, 184, 183, 183, 182, 180, 167, 165, 166, 172, 180, 185, 185, 183, 197, + 195, 196, 203, 211, 212, 207, 199, 200, 198, 188, 177, 175, 178, 180, 176, 177, + 179, 183, 187, 190, 192, 192, 193, 195, 196, 199, 202, 205, 208, 209, 210, 208, + 204, 197, 189, 180, 171, 165, 161, 159, 161, 173, 179, 177, 177, 174, 156, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 39, 37, 51, 65, 100, + 154, 178, 178, 181, 188, 191, 189, 183, 177, 180, 167, 155, 149, 154, 158, 159, + 159, 170, 176, 183, 188, 193, 197, 203, 206, 205, 207, 210, 208, 203, 198, 196, + 195, 194, 191, 187, 184, 181, 177, 172, 169, 164, 164, 167, 174, 180, 182, 179, + 176, 178, 172, 176, 192, 205, 203, 197, 194, 194, 188, 175, 165, 165, 170, 171, + 167, 164, 170, 179, 184, 185, 184, 184, 185, 187, 190, 195, 199, 202, 202, 201, + 201, 199, 199, 194, 185, 174, 164, 161, 161, 159, 163, 173, 176, 178, 186, 174, + 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 36, 53, 66, + 43, 68, 147, 167, 178, 181, 187, 197, 196, 185, 182, 177, 164, 152, 149, 154, + 157, 157, 154, 166, 172, 179, 184, 189, 191, 196, 197, 205, 206, 209, 206, 200, + 194, 192, 190, 184, 184, 186, 189, 186, 178, 171, 168, 164, 165, 168, 172, 172, + 168, 160, 154, 146, 147, 163, 184, 190, 181, 181, 192, 185, 174, 157, 147, 145, + 151, 160, 163, 167, 174, 182, 184, 180, 177, 178, 180, 184, 186, 190, 194, 196, + 197, 196, 193, 192, 189, 187, 180, 171, 166, 161, 161, 154, 165, 178, 179, 178, + 184, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, + 64, 71, 36, 42, 105, 161, 182, 185, 188, 201, 202, 189, 185, 169, 160, 149, + 148, 152, 156, 156, 157, 166, 172, 178, 182, 185, 186, 189, 191, 200, 201, 202, + 198, 192, 187, 185, 184, 184, 181, 182, 185, 184, 180, 179, 183, 169, 166, 162, + 157, 153, 149, 145, 142, 141, 140, 158, 179, 185, 175, 172, 181, 171, 163, 151, + 141, 135, 138, 149, 157, 174, 179, 183, 181, 176, 174, 176, 180, 182, 182, 183, + 184, 186, 188, 190, 191, 193, 185, 178, 174, 170, 166, 159, 154, 146, 165, 183, + 180, 173, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 38, 44, 46, 56, 85, 146, 179, 184, 181, 197, 196, 182, 182, 168, + 161, 153, 149, 151, 155, 157, 160, 167, 172, 177, 179, 181, 182, 186, 188, 193, + 192, 192, 186, 180, 176, 176, 176, 182, 174, 170, 173, 173, 172, 180, 192, 188, + 180, 168, 157, 152, 153, 157, 159, 155, 146, 148, 165, 181, 177, 166, 159, 147, + 147, 149, 150, 149, 149, 155, 164, 177, 179, 180, 178, 176, 176, 180, 184, 181, + 179, 178, 177, 178, 182, 185, 187, 192, 182, 174, 167, 163, 158, 150, 142, 142, + 163, 182, 180, 168, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 180, 58, 75, 80, 127, 169, 177, 173, 190, 192, 181, + 186, 175, 170, 162, 155, 151, 153, 156, 162, 162, 167, 170, 173, 175, 177, 182, + 185, 188, 186, 184, 177, 171, 169, 170, 172, 171, 165, 165, 171, 170, 165, 170, + 181, 189, 184, 176, 168, 163, 162, 166, 169, 159, 149, 142, 149, 162, 167, 160, + 150, 141, 141, 146, 155, 161, 161, 164, 170, 175, 174, 174, 173, 174, 176, 178, + 179, 175, 174, 172, 171, 172, 175, 179, 180, 182, 175, 169, 161, 154, 146, 139, + 135, 149, 163, 180, 181, 171, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 190, 65, 57, 115, 167, 178, 172, 193, + 199, 190, 200, 183, 179, 171, 161, 153, 152, 156, 163, 155, 158, 161, 165, 167, + 172, 176, 182, 188, 185, 182, 174, 168, 167, 170, 173, 167, 168, 177, 189, 186, + 171, 166, 170, 169, 171, 172, 171, 166, 159, 154, 150, 150, 149, 146, 143, 146, + 155, 161, 163, 162, 154, 150, 155, 160, 159, 159, 162, 172, 171, 170, 171, 172, + 173, 173, 171, 171, 170, 169, 169, 170, 172, 174, 175, 170, 168, 165, 158, 149, + 142, 137, 136, 156, 163, 176, 183, 175, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 82, 146, 190, + 187, 171, 180, 191, 194, 190, 190, 174, 159, 159, 154, 148, 154, 149, 156, 160, + 160, 159, 165, 174, 182, 180, 176, 168, 159, 162, 168, 168, 161, 168, 168, 172, + 180, 178, 169, 170, 178, 162, 166, 169, 170, 166, 163, 162, 160, 162, 154, 155, + 166, 170, 161, 154, 153, 149, 150, 153, 154, 156, 156, 157, 158, 170, 168, 167, + 165, 165, 166, 167, 167, 169, 168, 168, 167, 166, 165, 164, 162, 161, 157, 156, + 153, 145, 137, 139, 143, 157, 202, 177, 194, 199, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, + 120, 166, 187, 186, 184, 191, 197, 189, 188, 169, 149, 147, 147, 144, 148, 147, + 154, 160, 161, 160, 163, 172, 177, 175, 167, 155, 147, 150, 158, 160, 155, 163, + 164, 167, 169, 167, 163, 166, 170, 171, 171, 170, 168, 167, 169, 172, 176, 164, + 159, 158, 165, 169, 167, 163, 160, 156, 155, 155, 155, 156, 157, 159, 161, 161, + 165, 167, 165, 162, 158, 158, 160, 164, 163, 164, 163, 162, 161, 161, 160, 154, + 152, 151, 147, 137, 131, 136, 145, 174, 197, 180, 177, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 138, 173, 183, 178, 183, 198, 200, 198, 174, 143, 141, 146, 146, + 147, 146, 153, 160, 162, 161, 161, 170, 175, 174, 164, 150, 144, 149, 158, 161, + 161, 169, 174, 176, 173, 172, 175, 180, 180, 170, 169, 170, 170, 169, 172, 178, + 182, 170, 170, 166, 165, 169, 175, 175, 171, 171, 168, 167, 166, 167, 168, 170, + 172, 161, 170, 175, 173, 165, 158, 157, 159, 161, 160, 160, 159, 159, 158, 159, + 158, 148, 148, 148, 142, 129, 126, 138, 152, 184, 175, 173, 185, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 149, 154, 171, 193, 198, 195, 164, 135, 135, + 147, 148, 147, 150, 154, 158, 159, 158, 158, 167, 177, 173, 162, 150, 146, 155, + 165, 168, 166, 160, 170, 173, 167, 167, 173, 179, 176, 166, 169, 174, 176, 178, + 179, 179, 178, 180, 182, 177, 168, 171, 181, 187, 182, 180, 180, 179, 177, 176, + 177, 176, 177, 170, 173, 177, 175, 170, 165, 162, 162, 161, 160, 159, 158, 157, + 157, 157, 157, 148, 149, 150, 142, 131, 130, 145, 163, 194, 156, 165, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 158, 150, 145, 120, + 103, 120, 143, 147, 147, 157, 156, 154, 155, 153, 153, 166, 180, 174, 162, 152, + 151, 160, 165, 163, 159, 154, 165, 169, 164, 165, 172, 177, 173, 170, 172, 175, + 178, 180, 180, 178, 177, 187, 192, 186, 176, 177, 188, 193, 188, 183, 182, 181, + 179, 178, 177, 176, 175, 176, 172, 169, 169, 170, 169, 166, 163, 159, 157, 155, + 153, 152, 152, 153, 152, 151, 150, 150, 145, 136, 135, 148, 165, 195, 146, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 195, 60, 70, 110, 140, 147, 151, 160, 157, 152, 151, 149, 149, 164, 180, 181, + 167, 157, 159, 166, 164, 157, 151, 156, 160, 162, 157, 158, 161, 167, 169, 170, + 167, 162, 161, 163, 166, 167, 169, 178, 183, 182, 179, 180, 183, 186, 184, 183, + 182, 178, 176, 174, 172, 172, 171, 177, 169, 162, 161, 165, 167, 165, 160, 152, + 151, 149, 148, 148, 150, 152, 152, 154, 150, 147, 144, 138, 136, 141, 149, 158, + 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 56, 111, 143, 147, 151, 161, 154, 152, 152, 149, 148, 161, + 178, 187, 171, 159, 163, 170, 167, 158, 151, 143, 137, 133, 129, 127, 126, 133, + 143, 154, 150, 146, 145, 147, 149, 150, 150, 154, 158, 164, 170, 172, 168, 165, + 166, 175, 171, 165, 159, 156, 157, 160, 162, 162, 157, 151, 149, 150, 150, 147, + 145, 145, 145, 144, 145, 146, 150, 154, 157, 159, 150, 144, 143, 139, 132, 126, + 123, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 188, 115, 143, 142, 145, 158, 153, 153, 154, 151, + 146, 157, 176, 180, 165, 154, 158, 166, 166, 159, 154, 144, 133, 123, 120, 114, + 110, 120, 135, 141, 140, 141, 143, 146, 145, 140, 136, 131, 132, 142, 157, 160, + 150, 145, 148, 161, 154, 144, 136, 132, 135, 141, 146, 139, 139, 136, 132, 128, + 125, 123, 123, 142, 142, 143, 143, 148, 154, 160, 163, 162, 150, 142, 141, 139, + 129, 116, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 117, 135, 143, 155, 157, 155, 159, + 167, 156, 137, 140, 161, 173, 164, 161, 167, 170, 164, 163, 168, 163, 142, 128, + 127, 122, 113, 120, 136, 143, 161, 164, 148, 145, 157, 158, 144, 146, 166, 174, + 159, 147, 149, 152, 146, 168, 155, 139, 129, 128, 132, 135, 137, 127, 126, 125, + 118, 100, 89, 104, 127, 144, 142, 144, 155, 160, 156, 154, 157, 161, 151, 143, + 143, 139, 128, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 139, 145, 153, 150, + 151, 156, 162, 152, 135, 139, 156, 171, 162, 162, 169, 172, 168, 171, 176, 167, + 153, 141, 139, 137, 135, 144, 156, 163, 179, 181, 167, 166, 179, 180, 169, 180, + 208, 218, 191, 160, 156, 173, 186, 191, 179, 163, 155, 151, 150, 149, 150, 135, + 130, 125, 119, 108, 102, 118, 141, 153, 150, 150, 158, 160, 158, 157, 158, 156, + 145, 139, 138, 134, 116, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 146, 148, + 152, 144, 145, 151, 157, 151, 138, 139, 150, 170, 165, 167, 173, 174, 170, 173, + 181, 168, 162, 154, 148, 147, 152, 159, 164, 171, 184, 187, 178, 182, 196, 200, + 191, 195, 225, 237, 211, 178, 175, 197, 214, 210, 200, 187, 177, 172, 168, 165, + 163, 151, 145, 136, 130, 127, 129, 145, 164, 165, 162, 159, 163, 164, 161, 158, + 157, 147, 140, 135, 135, 129, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 139, + 152, 149, 148, 149, 148, 152, 158, 159, 151, 148, 151, 166, 166, 172, 175, 173, + 169, 170, 176, 169, 172, 167, 157, 154, 160, 160, 155, 164, 175, 178, 176, 181, + 195, 201, 197, 195, 212, 220, 207, 192, 192, 201, 205, 211, 202, 190, 182, 176, + 173, 170, 171, 163, 155, 146, 146, 146, 152, 163, 176, 172, 168, 168, 167, 167, + 161, 157, 153, 141, 137, 134, 135, 126, 155, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 147, 155, 147, 143, 158, 154, 153, 160, 167, 166, 159, 153, 156, 161, 171, + 175, 174, 168, 168, 170, 174, 181, 180, 171, 166, 169, 163, 152, 164, 169, 170, + 171, 176, 186, 190, 188, 199, 206, 206, 197, 190, 192, 194, 192, 207, 198, 187, + 175, 170, 169, 170, 172, 165, 158, 152, 155, 158, 163, 167, 171, 173, 172, 172, + 170, 168, 161, 154, 145, 142, 138, 135, 129, 115, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 157, 158, 148, 142, 151, 151, 150, 151, 157, 161, 156, 148, 148, + 154, 165, 172, 175, 173, 171, 170, 171, 178, 180, 175, 174, 174, 167, 158, 168, + 167, 167, 167, 170, 172, 172, 171, 187, 195, 195, 186, 179, 182, 193, 199, 200, + 193, 183, 174, 167, 166, 169, 171, 167, 164, 162, 167, 173, 174, 171, 166, 173, + 173, 171, 167, 162, 159, 150, 141, 142, 139, 136, 124, 153, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 164, 161, 149, 143, 141, 147, 152, 147, 146, 150, 152, + 148, 152, 155, 163, 168, 174, 176, 175, 172, 171, 173, 177, 176, 175, 174, 173, + 170, 174, 170, 168, 169, 171, 168, 164, 164, 174, 180, 182, 177, 173, 178, 188, + 195, 188, 184, 179, 171, 169, 168, 170, 171, 172, 171, 173, 176, 182, 182, 176, + 168, 175, 174, 168, 161, 156, 156, 151, 143, 134, 137, 136, 120, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 169, 162, 148, 143, 138, 154, 164, 154, 145, + 147, 155, 159, 159, 161, 162, 166, 173, 177, 175, 172, 178, 177, 177, 179, 179, + 178, 178, 183, 179, 175, 173, 177, 179, 175, 172, 172, 177, 176, 176, 178, 182, + 183, 176, 168, 172, 171, 172, 170, 169, 169, 170, 171, 170, 170, 173, 177, 182, + 182, 176, 168, 175, 174, 166, 154, 151, 153, 152, 144, 126, 132, 134, 120, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 170, 160, 144, 143, 149, 155, + 152, 146, 145, 155, 165, 155, 156, 160, 167, 176, 178, 174, 169, 179, 180, 179, + 180, 180, 181, 182, 184, 177, 182, 185, 182, 178, 174, 175, 177, 180, 183, 185, + 186, 183, 177, 171, 167, 160, 163, 167, 171, 173, 173, 171, 169, 172, 172, 174, + 177, 182, 181, 175, 169, 175, 166, 157, 154, 155, 151, 143, 134, 135, 126, 115, + 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 164, 165, 154, 145, 138, + 142, 148, 150, 150, 149, 149, 148, 152, 152, 157, 163, 171, 173, 173, 172, 169, + 172, 173, 175, 178, 179, 180, 180, 175, 178, 179, 176, 173, 171, 173, 176, 182, + 182, 182, 182, 181, 179, 177, 175, 172, 172, 173, 173, 174, 174, 174, 174, 176, + 174, 175, 177, 179, 175, 165, 158, 161, 159, 159, 159, 157, 150, 143, 134, 130, + 128, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 161, 157, 153, + 155, 144, 140, 140, 143, 149, 149, 145, 138, 149, 151, 156, 158, 162, 165, 170, + 174, 170, 172, 176, 178, 179, 180, 182, 182, 181, 183, 185, 182, 178, 177, 179, + 182, 184, 182, 180, 179, 179, 180, 182, 183, 183, 180, 177, 175, 174, 176, 178, + 179, 182, 181, 180, 180, 181, 176, 166, 158, 154, 155, 156, 151, 144, 134, 129, + 126, 126, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 166, 172, + 159, 150, 150, 154, 145, 137, 135, 142, 146, 146, 144, 150, 153, 158, 157, 156, + 159, 167, 175, 179, 180, 179, 180, 180, 181, 182, 184, 189, 191, 192, 191, 188, + 185, 184, 185, 182, 180, 177, 175, 175, 176, 178, 180, 181, 180, 177, 174, 174, + 176, 178, 179, 182, 178, 175, 174, 176, 173, 169, 164, 160, 158, 153, 146, 138, + 132, 130, 129, 121, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, + 180, 190, 171, 150, 137, 150, 144, 138, 136, 141, 146, 150, 151, 152, 156, 161, + 158, 155, 156, 163, 172, 177, 177, 174, 173, 173, 175, 178, 183, 183, 186, 188, + 189, 186, 181, 177, 175, 176, 176, 174, 172, 171, 170, 169, 169, 174, 174, 174, + 175, 175, 176, 177, 177, 178, 171, 165, 160, 162, 165, 165, 163, 165, 161, 156, + 150, 148, 145, 141, 138, 108, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 84, 137, 172, 181, 175, 162, 150, 139, 139, 140, 141, 145, 147, 150, 151, 152, + 156, 161, 160, 158, 157, 162, 168, 174, 172, 172, 171, 173, 178, 182, 185, 178, + 182, 184, 184, 182, 178, 174, 171, 175, 175, 174, 172, 170, 167, 164, 163, 170, + 172, 174, 177, 179, 179, 179, 178, 184, 173, 164, 160, 161, 162, 163, 160, 160, + 156, 152, 148, 143, 137, 129, 122, 96, 144, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 107, 153, 167, 169, 174, 177, 171, 150, 147, 144, 143, 146, 147, 148, + 148, 147, 151, 156, 159, 160, 160, 161, 164, 174, 174, 176, 177, 178, 182, 184, + 185, 183, 183, 183, 183, 183, 182, 183, 181, 182, 183, 181, 179, 176, 174, 172, + 171, 176, 178, 180, 182, 184, 185, 185, 183, 187, 178, 170, 166, 166, 165, 164, + 162, 155, 151, 144, 136, 129, 127, 127, 127, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 122, 176, 188, 182, 181, 178, 168, 175, 162, 148, 141, 143, + 146, 148, 147, 142, 146, 153, 158, 162, 162, 162, 162, 173, 176, 178, 180, 180, + 180, 177, 175, 187, 185, 182, 181, 184, 186, 189, 190, 194, 192, 191, 186, 186, + 183, 185, 183, 186, 184, 186, 185, 189, 188, 191, 189, 180, 172, 170, 167, 168, + 166, 164, 160, 154, 150, 142, 132, 128, 137, 155, 170, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 131, 179, 187, 184, 177, 174, 177, 177, 171, 161, + 149, 141, 137, 138, 140, 137, 142, 146, 145, 150, 159, 163, 162, 164, 170, 176, + 180, 181, 182, 182, 182, 194, 192, 188, 185, 186, 185, 189, 190, 192, 188, 184, + 183, 187, 188, 188, 186, 186, 187, 187, 185, 189, 194, 196, 191, 186, 180, 173, + 162, 159, 161, 162, 157, 145, 157, 144, 126, 128, 129, 131, 144, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 134, 176, 181, 180, 179, 176, 177, 179, + 174, 167, 155, 145, 139, 138, 139, 139, 143, 146, 146, 152, 161, 166, 165, 166, + 171, 175, 177, 180, 181, 182, 184, 193, 191, 188, 187, 186, 187, 188, 191, 190, + 190, 187, 186, 186, 187, 188, 187, 187, 189, 187, 185, 187, 192, 192, 186, 180, + 177, 171, 161, 158, 159, 155, 150, 140, 146, 134, 114, 109, 112, 120, 172, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 183, 180, 182, 190, 188, + 180, 178, 179, 175, 165, 152, 142, 139, 140, 145, 146, 145, 143, 145, 151, 155, + 156, 166, 169, 172, 174, 176, 178, 180, 184, 188, 187, 186, 186, 185, 185, 185, + 187, 188, 189, 189, 187, 185, 184, 185, 186, 188, 189, 187, 183, 184, 187, 186, + 181, 172, 173, 169, 164, 162, 159, 152, 143, 128, 129, 131, 121, 111, 117, 133, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 169, 191, 181, 184, + 196, 192, 182, 177, 180, 180, 173, 160, 150, 146, 146, 146, 145, 142, 139, 140, + 143, 147, 149, 155, 161, 167, 171, 173, 174, 177, 179, 180, 182, 181, 181, 181, + 181, 182, 181, 183, 185, 187, 185, 181, 178, 179, 182, 184, 185, 182, 178, 179, + 181, 180, 176, 164, 168, 170, 166, 164, 159, 147, 136, 116, 112, 125, 128, 115, + 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 193, + 180, 181, 192, 187, 178, 175, 180, 182, 178, 169, 160, 155, 154, 143, 140, 138, + 137, 138, 141, 146, 149, 140, 147, 155, 162, 166, 167, 170, 171, 174, 175, 175, + 175, 176, 176, 178, 178, 179, 183, 186, 185, 181, 178, 178, 180, 179, 179, 177, + 173, 173, 176, 175, 170, 160, 165, 167, 163, 157, 148, 132, 118, 105, 94, 103, + 105, 90, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 185, 194, 184, 187, 193, 187, 182, 177, 179, 180, 178, 174, 169, 163, 162, 151, + 145, 140, 137, 133, 129, 129, 132, 131, 137, 146, 153, 157, 159, 163, 164, 170, + 170, 170, 170, 171, 172, 173, 174, 177, 179, 182, 183, 181, 179, 177, 177, 173, + 173, 170, 166, 166, 168, 166, 162, 158, 159, 156, 147, 138, 130, 116, 105, 96, + 82, 77, 73, 70, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 180, 191, 189, 193, 193, 189, 191, 182, 180, 177, 177, 176, 174, 169, + 165, 163, 155, 148, 143, 134, 124, 120, 121, 130, 134, 138, 142, 145, 148, 154, + 157, 161, 160, 161, 161, 163, 165, 167, 169, 169, 170, 172, 175, 177, 175, 172, + 169, 168, 168, 164, 158, 157, 158, 156, 152, 155, 150, 141, 127, 121, 119, 114, + 108, 108, 96, 79, 74, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 185, 190, 188, 185, 194, 186, 181, 176, 175, 177, + 176, 172, 167, 166, 159, 155, 155, 149, 140, 137, 140, 134, 134, 135, 135, 137, + 142, 149, 154, 153, 152, 151, 150, 151, 154, 158, 160, 162, 161, 163, 167, 171, + 171, 166, 161, 166, 166, 161, 154, 151, 152, 148, 143, 148, 141, 127, 113, 110, + 115, 120, 118, 127, 121, 100, 94, 156, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 181, 184, 184, 184, 183, 178, 183, 183, 181, + 179, 176, 173, 170, 168, 164, 160, 156, 156, 157, 154, 147, 140, 131, 128, 122, + 120, 125, 136, 150, 159, 157, 149, 138, 134, 139, 148, 153, 153, 153, 159, 160, + 155, 155, 160, 162, 159, 162, 168, 160, 138, 128, 134, 138, 133, 126, 113, 96, + 100, 118, 122, 114, 113, 117, 108, 103, 107, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 186, 182, 180, 175, 173, 187, + 186, 185, 183, 180, 177, 175, 173, 168, 164, 160, 159, 160, 158, 153, 146, 137, + 133, 126, 121, 120, 125, 130, 136, 142, 138, 131, 129, 132, 137, 137, 137, 136, + 146, 150, 146, 143, 146, 152, 153, 158, 157, 147, 132, 126, 129, 129, 123, 105, + 101, 91, 88, 105, 112, 111, 113, 104, 97, 95, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 183, 181, 179, + 175, 188, 188, 187, 185, 183, 181, 178, 177, 169, 165, 160, 159, 160, 160, 157, + 152, 147, 143, 138, 132, 126, 122, 119, 119, 122, 120, 119, 124, 129, 130, 126, + 126, 130, 142, 147, 142, 136, 138, 145, 150, 151, 142, 130, 121, 117, 114, 109, + 105, 108, 117, 113, 102, 106, 109, 104, 102, 92, 89, 147, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 232, 187, 187, 187, 187, 187, 184, 182, 180, 178, 177, 170, 166, 162, 161, 161, + 160, 160, 159, 155, 153, 151, 147, 142, 135, 127, 123, 117, 112, 113, 116, 117, + 113, 109, 107, 117, 124, 126, 123, 119, 118, 122, 126, 124, 115, 108, 107, 106, + 102, 101, 103, 120, 137, 136, 121, 120, 114, 101, 88, 81, 139, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 233, 189, 185, 186, 186, 185, 184, 183, 180, 179, 174, 171, 166, + 164, 164, 164, 165, 166, 160, 159, 158, 157, 154, 148, 140, 133, 130, 123, 119, + 116, 110, 101, 95, 95, 99, 97, 95, 96, 97, 98, 97, 98, 94, 92, 93, + 98, 101, 103, 112, 123, 119, 135, 131, 117, 120, 120, 105, 91, 81, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 181, 187, 188, 188, 189, 187, 187, 184, 183, 179, + 177, 173, 171, 169, 170, 171, 172, 163, 161, 159, 159, 157, 153, 146, 139, 141, + 132, 128, 129, 126, 116, 117, 122, 111, 104, 101, 105, 109, 109, 107, 107, 99, + 101, 101, 99, 100, 108, 120, 130, 131, 134, 121, 110, 114, 116, 106, 99, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 190, 190, 190, 189, 189, 187, + 186, 179, 178, 175, 173, 170, 170, 170, 172, 167, 163, 159, 158, 160, 159, 154, + 150, 144, 136, 136, 142, 142, 137, 141, 150, 140, 133, 130, 132, 132, 127, 125, + 128, 121, 121, 114, 102, 103, 117, 128, 129, 139, 138, 124, 116, 116, 110, 100, + 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 189, 190, 189, + 189, 187, 186, 176, 176, 173, 172, 168, 167, 167, 169, 171, 166, 160, 160, 164, + 166, 164, 161, 146, 139, 139, 143, 143, 135, 137, 146, 147, 142, 139, 137, 129, + 120, 118, 123, 125, 125, 113, 100, 107, 129, 140, 136, 127, 128, 125, 124, 124, + 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 233, 184, 183, 184, 188, 180, 177, 171, 169, 168, 168, 167, 166, 163, 165, 170, + 172, 173, 172, 171, 170, 156, 162, 162, 152, 150, 151, 152, 149, 141, 147, 152, + 148, 138, 130, 128, 129, 127, 126, 122, 120, 127, 139, 141, 135, 127, 124, 122, + 123, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 230, 176, 181, 187, 184, 181, 178, 174, 174, 174, 172, 171, 167, + 168, 172, 173, 172, 171, 169, 167, 163, 169, 168, 159, 154, 156, 160, 161, 158, + 155, 151, 144, 139, 138, 144, 150, 142, 136, 124, 116, 121, 133, 139, 136, 136, + 127, 118, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 229, 184, 184, 182, 180, 178, 178, 177, 175, + 173, 173, 174, 174, 174, 172, 170, 168, 166, 167, 170, 169, 161, 157, 159, 165, + 168, 163, 156, 148, 142, 139, 142, 148, 152, 140, 133, 123, 118, 125, 138, 145, + 144, 139, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 177, 175, 174, 175, + 176, 173, 169, 174, 174, 174, 173, 172, 170, 169, 167, 169, 167, 167, 164, 163, + 166, 167, 166, 162, 156, 151, 149, 148, 146, 143, 139, 133, 129, 125, 127, 135, + 143, 145, 143, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 227, 172, 172, 171, 168, 173, 172, 172, 172, 172, 171, 173, 172, 174, 168, 166, + 170, 175, 177, 172, 166, 167, 163, 161, 161, 161, 157, 149, 142, 142, 136, 131, + 134, 139, 141, 140, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 228, 172, 171, 170, 170, 170, 170, 171, 171, 173, 173, 171, + 164, 162, 170, 178, 177, 171, 164, 169, 165, 161, 160, 160, 159, 154, 150, 142, + 133, 126, 129, 136, 140, 142, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 169, 168, 168, 169, 169, 172, + 172, 167, 162, 164, 170, 175, 172, 170, 170, 167, 164, 161, 159, 157, 154, 150, + 147, 133, 125, 122, 130, 139, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 168, + 168, 170, 170, 169, 167, 171, 174, 172, 170, 175, 181, 166, 167, 168, 167, 161, + 153, 144, 137, 129, 124, 126, 137, 180, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 225, 167, 168, 167, 166, 169, 171, 172, 167, 168, 166, + 155, 145, 140, 134, 127, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 68, 88, 92, 69, 106, 209, + 255, 255, 255, 255, 255, 255, 255, 218, 117, 51, 67, 99, 120, 124, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 196, 100, 96, 95, 99, 95, 72, 68, 59, 55, 59, 62, 56, + 42, 41, 54, 52, 44, 49, 52, 51, 55, 57, 57, 60, 72, 92, 107, 104, + 95, 62, 47, 27, 17, 15, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 26, 29, + 20, 9, 5, 23, 41, 74, 94, 88, 84, 84, 79, 78, 73, 63, 53, 52, + 52, 46, 35, 44, 48, 43, 41, 50, 51, 48, 54, 35, 37, 45, 65, 90, + 103, 93, 77, 66, 53, 36, 27, 24, 23, 19, 14, 70, 202, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 16, 18, + 22, 22, 18, 15, 17, 36, 46, 69, 79, 71, 68, 69, 64, 63, 60, 52, + 45, 44, 47, 47, 43, 49, 42, 34, 39, 48, 44, 38, 47, 38, 40, 42, + 47, 59, 70, 74, 71, 66, 56, 43, 37, 35, 31, 21, 13, 18, 15, 15, + 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 24, + 20, 21, 25, 28, 30, 36, 46, 58, 57, 64, 65, 56, 55, 59, 54, 43, + 41, 38, 36, 37, 43, 49, 52, 50, 42, 36, 44, 49, 32, 25, 40, 43, + 52, 54, 45, 37, 45, 59, 72, 62, 54, 48, 46, 45, 39, 27, 18, 16, + 15, 15, 17, 20, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 23, + 25, 29, 28, 35, 43, 48, 50, 56, 64, 66, 61, 62, 61, 51, 50, 50, + 41, 39, 36, 34, 33, 32, 34, 40, 47, 48, 45, 45, 54, 52, 31, 24, + 43, 40, 52, 59, 55, 50, 52, 56, 59, 53, 49, 45, 47, 48, 45, 33, + 22, 15, 15, 15, 15, 19, 23, 23, 99, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, + 21, 27, 35, 36, 39, 49, 62, 67, 64, 60, 61, 60, 55, 60, 65, 59, + 55, 48, 34, 38, 35, 33, 36, 36, 36, 40, 45, 45, 48, 52, 60, 58, + 37, 33, 54, 67, 60, 51, 49, 56, 61, 55, 44, 41, 36, 33, 37, 40, + 39, 30, 21, 21, 19, 17, 15, 18, 24, 23, 20, 25, 96, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, + 28, 26, 27, 35, 44, 51, 47, 51, 60, 64, 62, 57, 55, 59, 52, 56, + 64, 63, 65, 62, 47, 41, 36, 37, 44, 47, 45, 45, 47, 47, 51, 51, + 55, 56, 43, 40, 56, 82, 70, 54, 46, 52, 60, 56, 46, 41, 34, 31, + 33, 38, 39, 33, 27, 31, 28, 23, 17, 19, 25, 24, 18, 24, 14, 15, + 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, + 34, 38, 45, 46, 43, 46, 53, 63, 51, 43, 45, 51, 54, 55, 59, 66, + 54, 52, 57, 61, 71, 75, 66, 52, 46, 46, 54, 54, 48, 43, 43, 53, + 53, 47, 46, 50, 43, 39, 50, 57, 64, 68, 65, 63, 61, 59, 54, 55, + 47, 42, 43, 48, 50, 46, 40, 38, 35, 27, 19, 19, 25, 23, 18, 20, + 10, 11, 16, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 183, 35, 40, 49, 60, 66, 64, 57, 51, 60, 59, 62, 66, 63, 55, 54, + 59, 59, 63, 56, 46, 53, 67, 65, 50, 52, 48, 49, 67, 82, 72, 57, + 61, 62, 62, 62, 62, 59, 53, 46, 40, 48, 58, 66, 65, 56, 50, 52, + 55, 66, 61, 56, 52, 46, 42, 46, 51, 54, 46, 40, 35, 26, 20, 25, + 35, 29, 27, 23, 20, 18, 19, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 46, 42, 53, 54, 56, 56, 56, 58, 62, 65, 57, 53, 52, 56, 55, + 50, 48, 53, 54, 56, 49, 38, 42, 55, 53, 40, 49, 56, 55, 56, 66, + 65, 57, 57, 58, 54, 50, 48, 47, 46, 42, 39, 41, 46, 52, 57, 57, + 55, 51, 48, 65, 59, 52, 55, 62, 64, 56, 47, 37, 37, 42, 48, 44, + 32, 21, 18, 21, 20, 18, 15, 14, 15, 16, 97, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 51, 52, 51, 58, 57, 52, 46, 42, 46, 56, 65, 57, 49, 43, + 46, 49, 47, 42, 39, 44, 46, 39, 29, 31, 41, 39, 27, 30, 46, 42, + 30, 38, 48, 47, 46, 53, 45, 35, 31, 31, 33, 32, 30, 36, 40, 45, + 45, 42, 41, 42, 43, 43, 55, 63, 60, 59, 61, 59, 55, 59, 54, 51, + 53, 52, 42, 27, 18, 22, 21, 18, 16, 15, 15, 16, 17, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 186, 50, 51, 53, 58, 55, 50, 45, 44, 49, 57, 63, 60, + 50, 42, 44, 49, 47, 37, 27, 34, 36, 29, 22, 23, 32, 31, 22, 36, + 48, 41, 34, 43, 56, 56, 59, 55, 45, 33, 27, 27, 30, 29, 27, 31, + 38, 40, 30, 17, 14, 25, 38, 34, 49, 55, 50, 47, 56, 62, 62, 79, + 68, 57, 55, 57, 52, 40, 28, 26, 22, 17, 13, 12, 13, 17, 19, 18, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 189, 49, 43, 43, 46, 47, 39, 30, 28, 35, 43, 49, + 51, 59, 52, 45, 45, 49, 47, 34, 21, 26, 28, 23, 17, 20, 29, 30, + 24, 23, 22, 14, 16, 31, 37, 33, 39, 53, 45, 36, 33, 33, 35, 35, + 33, 27, 30, 30, 25, 17, 16, 23, 30, 45, 39, 29, 29, 49, 69, 72, + 61, 69, 64, 59, 61, 67, 63, 48, 33, 32, 25, 16, 9, 6, 7, 13, + 17, 24, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 188, 60, 60, 50, 41, 40, 46, 43, 33, 19, 19, 27, + 40, 44, 46, 52, 50, 44, 43, 43, 43, 32, 22, 20, 22, 20, 17, 19, + 27, 29, 27, 34, 29, 19, 24, 41, 41, 36, 40, 40, 36, 33, 32, 32, + 34, 35, 35, 32, 27, 26, 33, 42, 46, 39, 32, 33, 28, 23, 28, 41, + 55, 62, 65, 80, 75, 65, 60, 61, 62, 54, 45, 43, 35, 24, 14, 9, + 10, 13, 17, 29, 18, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 185, 50, 59, 62, 53, 43, 44, 52, 50, 45, 38, + 39, 43, 49, 49, 48, 37, 40, 37, 31, 29, 32, 30, 26, 18, 19, 17, + 15, 18, 25, 27, 27, 24, 30, 23, 18, 30, 40, 37, 36, 38, 37, 37, + 34, 31, 30, 33, 36, 38, 34, 33, 37, 44, 46, 42, 38, 19, 27, 39, + 46, 39, 31, 40, 58, 79, 78, 69, 59, 56, 60, 61, 59, 53, 46, 36, + 25, 18, 15, 15, 16, 20, 14, 11, 96, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 190, 53, 60, 68, 70, 59, 46, 45, 54, 33, + 37, 41, 44, 43, 38, 31, 26, 26, 31, 29, 20, 17, 22, 28, 29, 17, + 18, 16, 14, 16, 22, 24, 25, 28, 48, 43, 27, 38, 57, 60, 54, 51, + 51, 50, 44, 36, 33, 36, 41, 35, 39, 39, 29, 16, 15, 25, 38, 32, + 34, 45, 61, 55, 35, 28, 35, 40, 53, 65, 66, 66, 68, 65, 59, 53, + 47, 39, 29, 21, 14, 11, 9, 2, 13, 24, 24, 89, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 184, 44, 45, 42, 46, 51, 45, 33, 36, + 49, 51, 42, 30, 27, 31, 32, 26, 19, 25, 25, 25, 25, 24, 21, 19, + 18, 14, 16, 17, 15, 14, 17, 23, 28, 26, 30, 33, 31, 29, 29, 33, + 36, 40, 41, 40, 33, 26, 23, 29, 35, 43, 41, 38, 36, 35, 33, 31, + 32, 28, 31, 32, 35, 37, 39, 39, 38, 39, 44, 50, 57, 60, 62, 63, + 64, 59, 61, 52, 44, 40, 28, 19, 25, 27, 21, 8, 8, 20, 97, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 192, 68, 71, 54, 52, 53, 57, 53, + 42, 33, 33, 37, 31, 26, 25, 29, 30, 29, 26, 18, 19, 19, 18, 17, + 15, 13, 12, 17, 18, 16, 14, 11, 12, 14, 16, 13, 19, 25, 30, 30, + 31, 33, 35, 34, 38, 42, 42, 36, 28, 22, 20, 25, 23, 21, 22, 22, + 21, 17, 15, 23, 26, 27, 30, 32, 34, 34, 34, 43, 41, 39, 37, 37, + 40, 44, 47, 52, 58, 55, 52, 53, 43, 32, 33, 26, 21, 10, 7, 14, + 10, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 57, 56, 53, 52, 48, + 46, 47, 47, 37, 27, 23, 24, 25, 25, 24, 25, 26, 27, 19, 19, 18, + 17, 16, 15, 14, 13, 19, 16, 14, 12, 11, 11, 10, 9, 10, 16, 24, + 30, 33, 33, 33, 33, 21, 25, 32, 40, 42, 38, 30, 24, 25, 23, 23, + 26, 29, 29, 23, 18, 28, 30, 31, 34, 34, 34, 35, 35, 36, 33, 31, + 30, 32, 37, 42, 46, 39, 48, 48, 52, 58, 51, 35, 32, 26, 24, 14, + 12, 19, 17, 17, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 48, 38, 30, 47, + 49, 42, 33, 37, 50, 51, 42, 23, 27, 30, 28, 21, 17, 18, 20, 20, + 19, 17, 16, 15, 15, 15, 16, 17, 16, 13, 15, 18, 19, 17, 15, 15, + 18, 22, 27, 29, 29, 27, 25, 20, 18, 20, 28, 38, 42, 39, 34, 37, + 33, 32, 36, 41, 43, 38, 34, 35, 36, 38, 37, 37, 36, 34, 34, 28, + 29, 32, 37, 41, 44, 45, 45, 53, 61, 62, 64, 75, 71, 56, 49, 29, + 27, 17, 19, 30, 33, 36, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 59, 48, + 36, 44, 53, 50, 35, 35, 50, 57, 52, 28, 32, 34, 30, 22, 15, 14, + 16, 15, 13, 11, 9, 8, 9, 10, 11, 15, 14, 13, 16, 20, 24, 22, + 20, 17, 15, 13, 14, 17, 20, 17, 15, 29, 23, 20, 25, 33, 38, 34, + 28, 33, 29, 26, 28, 34, 38, 38, 36, 36, 36, 35, 33, 31, 29, 26, + 25, 27, 28, 29, 34, 38, 40, 39, 37, 58, 66, 62, 61, 74, 76, 66, + 61, 43, 36, 23, 25, 37, 40, 36, 41, 207, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 64, + 61, 53, 45, 42, 55, 57, 44, 36, 40, 42, 38, 32, 32, 32, 30, 26, + 22, 19, 18, 15, 13, 10, 7, 7, 9, 11, 13, 16, 15, 14, 16, 18, + 21, 22, 22, 21, 15, 10, 10, 15, 20, 20, 18, 22, 19, 19, 27, 36, + 39, 31, 23, 25, 23, 21, 22, 26, 30, 34, 36, 34, 34, 32, 31, 28, + 25, 23, 22, 24, 22, 21, 25, 33, 42, 45, 45, 47, 55, 49, 43, 55, + 63, 61, 60, 65, 55, 39, 36, 45, 39, 26, 26, 74, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 61, 52, 45, 44, 46, 43, 52, 55, 45, 33, 31, 32, 32, 34, 30, 27, + 27, 30, 29, 25, 20, 22, 19, 15, 12, 12, 14, 17, 20, 15, 16, 16, + 16, 15, 18, 22, 25, 28, 20, 12, 12, 19, 23, 22, 19, 19, 17, 19, + 27, 35, 38, 31, 23, 19, 21, 23, 23, 24, 26, 31, 34, 32, 32, 32, + 30, 30, 29, 27, 26, 20, 19, 20, 28, 39, 49, 52, 52, 51, 60, 52, + 41, 48, 58, 59, 63, 70, 65, 50, 46, 48, 34, 18, 19, 16, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 73, 64, 48, 39, 46, 56, 52, 52, 49, 41, 33, 33, 39, 42, 37, + 29, 22, 25, 31, 33, 27, 19, 24, 21, 17, 13, 12, 15, 18, 20, 13, + 16, 16, 16, 16, 20, 26, 32, 28, 19, 11, 12, 18, 21, 19, 14, 32, + 28, 23, 23, 27, 28, 23, 17, 9, 15, 20, 21, 19, 19, 24, 27, 27, + 27, 28, 28, 27, 27, 27, 27, 20, 22, 28, 37, 46, 48, 44, 38, 47, + 55, 46, 30, 34, 42, 45, 48, 56, 57, 48, 45, 44, 29, 15, 18, 19, + 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 191, 64, 55, 50, 53, 53, 53, 36, 48, 45, 31, 29, 42, 45, + 35, 27, 31, 21, 13, 20, 23, 23, 28, 19, 20, 21, 17, 12, 9, 11, + 17, 12, 12, 21, 22, 11, 12, 21, 21, 16, 10, 12, 20, 23, 15, 13, + 16, 13, 18, 18, 16, 18, 22, 22, 18, 12, 13, 16, 22, 26, 24, 17, + 10, 16, 11, 12, 21, 26, 24, 23, 25, 16, 26, 37, 44, 50, 54, 50, + 43, 58, 53, 46, 37, 31, 29, 31, 33, 27, 45, 42, 43, 40, 29, 28, + 11, 21, 30, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 54, 48, 47, 56, 63, 54, 42, 43, 40, 26, 15, 27, + 47, 46, 31, 28, 32, 21, 12, 19, 21, 16, 17, 17, 18, 19, 18, 13, + 11, 12, 16, 20, 15, 15, 11, 3, 10, 23, 25, 26, 23, 22, 26, 26, + 21, 17, 17, 20, 23, 21, 15, 13, 17, 19, 18, 15, 13, 13, 16, 20, + 23, 20, 17, 9, 8, 11, 19, 23, 18, 15, 16, 28, 39, 47, 46, 45, + 47, 47, 47, 51, 47, 42, 34, 26, 23, 24, 28, 21, 43, 43, 44, 35, + 26, 30, 20, 14, 18, 21, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 185, 50, 53, 52, 53, 54, 51, 47, 37, 34, 22, + 14, 24, 39, 39, 26, 27, 33, 25, 20, 27, 28, 21, 20, 18, 19, 19, + 18, 16, 15, 16, 17, 25, 19, 18, 12, 5, 16, 28, 24, 28, 28, 26, + 22, 22, 23, 20, 16, 29, 31, 27, 19, 16, 17, 19, 21, 22, 17, 12, + 11, 14, 20, 22, 23, 17, 17, 18, 21, 19, 15, 14, 18, 36, 45, 50, + 44, 36, 36, 42, 45, 39, 40, 39, 32, 24, 21, 23, 26, 34, 48, 41, + 40, 36, 30, 32, 16, 14, 16, 16, 94, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 46, 50, 56, 58, 56, 52, 50, 47, 21, + 33, 38, 29, 20, 20, 24, 25, 16, 28, 28, 25, 30, 31, 26, 29, 24, + 24, 21, 17, 16, 19, 20, 20, 28, 30, 33, 28, 21, 31, 36, 23, 22, + 27, 25, 18, 18, 27, 27, 20, 34, 34, 31, 28, 22, 22, 21, 23, 28, + 23, 15, 13, 15, 20, 25, 27, 34, 34, 31, 26, 19, 16, 19, 24, 32, + 40, 42, 37, 29, 30, 34, 35, 30, 34, 37, 33, 27, 23, 26, 30, 39, + 42, 26, 31, 40, 42, 40, 17, 22, 24, 24, 18, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 60, 64, 51, 43, 52, 67, 68, 49, + 30, 20, 33, 41, 34, 20, 14, 21, 29, 11, 28, 32, 26, 25, 21, 20, + 29, 31, 28, 21, 14, 17, 29, 35, 34, 37, 46, 53, 43, 33, 44, 50, + 36, 30, 33, 28, 20, 21, 31, 33, 29, 31, 32, 32, 35, 33, 28, 22, + 20, 28, 27, 24, 23, 25, 31, 34, 36, 44, 49, 50, 45, 37, 29, 24, + 22, 29, 35, 36, 32, 29, 29, 25, 21, 22, 27, 32, 31, 27, 26, 28, + 31, 25, 33, 23, 31, 40, 46, 52, 37, 26, 31, 30, 22, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 63, 55, 52, 59, 64, + 58, 45, 35, 36, 30, 24, 22, 22, 24, 28, 34, 23, 39, 40, 29, 24, + 18, 16, 25, 35, 31, 21, 14, 23, 42, 51, 50, 52, 65, 69, 48, 30, + 47, 65, 58, 47, 43, 34, 26, 24, 29, 32, 31, 31, 31, 32, 40, 43, + 35, 23, 18, 26, 29, 30, 35, 38, 43, 45, 46, 50, 62, 74, 76, 69, + 54, 36, 22, 29, 34, 37, 36, 33, 31, 24, 14, 18, 21, 24, 26, 25, + 25, 25, 27, 24, 45, 44, 43, 38, 37, 53, 51, 30, 34, 32, 24, 95, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 58, 53, 62, 72, + 73, 59, 44, 44, 54, 46, 29, 16, 18, 27, 30, 29, 30, 34, 43, 39, + 30, 30, 29, 25, 31, 42, 37, 26, 20, 30, 51, 59, 55, 58, 76, 79, + 48, 23, 43, 71, 73, 65, 55, 42, 36, 32, 30, 33, 38, 42, 37, 36, + 46, 53, 45, 30, 20, 23, 28, 33, 37, 40, 42, 42, 44, 53, 67, 82, + 89, 85, 71, 48, 27, 24, 33, 40, 40, 36, 32, 27, 22, 22, 21, 21, + 22, 24, 24, 22, 20, 29, 48, 45, 43, 35, 34, 47, 43, 33, 30, 25, + 20, 19, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 63, 63, + 65, 72, 75, 66, 54, 50, 56, 44, 30, 22, 27, 30, 26, 23, 24, 29, + 34, 27, 22, 32, 38, 34, 37, 48, 44, 33, 25, 35, 54, 59, 52, 52, + 77, 84, 51, 21, 40, 70, 75, 81, 65, 51, 49, 45, 39, 42, 50, 54, + 44, 40, 52, 60, 53, 35, 24, 23, 27, 30, 34, 33, 34, 33, 33, 50, + 61, 73, 78, 78, 70, 49, 28, 15, 29, 41, 41, 35, 32, 33, 32, 26, + 24, 21, 22, 24, 25, 21, 16, 17, 25, 15, 21, 31, 37, 44, 28, 30, + 22, 13, 13, 19, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 67, + 71, 72, 66, 59, 57, 63, 68, 57, 42, 39, 34, 31, 29, 22, 15, 12, + 13, 20, 21, 22, 25, 33, 41, 42, 37, 45, 48, 54, 61, 63, 63, 67, + 73, 79, 76, 79, 83, 65, 34, 47, 94, 99, 89, 76, 69, 62, 53, 48, + 46, 44, 48, 49, 57, 71, 78, 60, 37, 31, 32, 38, 39, 36, 23, 10, + 28, 43, 69, 73, 62, 65, 68, 49, 29, 12, 16, 36, 35, 13, 26, 41, + 19, 21, 20, 19, 19, 21, 21, 19, 17, 12, 12, 16, 20, 21, 22, 31, + 42, 42, 41, 33, 21, 15, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 76, 69, 67, 66, 78, 86, 81, 68, 54, 37, 24, 39, 29, 20, 20, 21, + 17, 13, 11, 17, 24, 31, 31, 33, 41, 50, 52, 44, 49, 59, 70, 74, + 75, 80, 87, 94, 93, 96, 102, 86, 56, 64, 106, 103, 102, 101, 95, 75, + 50, 39, 43, 51, 48, 44, 53, 74, 86, 68, 42, 35, 38, 40, 43, 50, + 45, 31, 35, 48, 57, 61, 58, 61, 67, 52, 28, 26, 14, 23, 29, 9, + 1, 12, 16, 15, 16, 15, 15, 13, 12, 14, 14, 28, 25, 24, 25, 24, + 24, 32, 43, 43, 43, 39, 37, 40, 43, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 75, 64, 57, 57, 66, 69, 60, 47, 39, 35, 34, 42, 27, 17, + 21, 30, 32, 27, 22, 34, 36, 38, 39, 42, 48, 49, 45, 57, 61, 71, + 84, 91, 93, 97, 101, 105, 106, 111, 117, 105, 74, 73, 105, 112, 113, 119, + 116, 96, 64, 41, 35, 41, 42, 44, 54, 74, 85, 70, 47, 34, 44, 44, + 47, 53, 43, 28, 21, 29, 30, 56, 81, 83, 79, 60, 26, 24, 23, 30, + 38, 27, 10, 8, 18, 13, 14, 13, 12, 12, 14, 17, 20, 20, 19, 22, + 28, 31, 33, 38, 46, 47, 46, 46, 52, 62, 63, 255, 255, 255, 255, 255, + 255, 255, 255, 80, 70, 57, 49, 50, 46, 40, 36, 37, 42, 46, 48, 37, + 25, 19, 27, 38, 42, 40, 35, 33, 45, 55, 52, 47, 51, 58, 64, 80, + 76, 80, 93, 104, 107, 108, 109, 113, 116, 120, 128, 117, 85, 75, 94, 113, + 117, 116, 112, 106, 88, 56, 26, 17, 30, 42, 54, 67, 76, 68, 54, 34, + 45, 43, 59, 67, 45, 27, 17, 15, 15, 57, 97, 89, 78, 64, 34, 23, + 41, 41, 28, 22, 18, 11, 12, 18, 15, 12, 13, 19, 25, 29, 29, 6, + 7, 15, 27, 33, 32, 32, 34, 37, 39, 45, 56, 68, 68, 255, 255, 255, + 255, 255, 255, 255, 255, 80, 67, 52, 43, 41, 43, 48, 53, 52, 48, 41, + 38, 25, 21, 21, 28, 34, 35, 35, 35, 16, 38, 55, 53, 44, 56, 86, + 111, 94, 85, 82, 95, 108, 116, 114, 112, 123, 126, 129, 135, 126, 96, 76, + 84, 108, 124, 123, 104, 102, 105, 78, 37, 19, 22, 24, 38, 62, 83, 81, + 69, 49, 42, 30, 72, 102, 79, 57, 38, 22, 16, 52, 82, 66, 58, 63, + 54, 58, 67, 55, 33, 21, 17, 14, 22, 25, 16, 10, 13, 21, 29, 30, + 27, 21, 17, 18, 24, 27, 24, 19, 17, 20, 28, 38, 50, 61, 63, 255, + 255, 255, 255, 255, 255, 255, 200, 76, 57, 43, 36, 28, 39, 52, 54, 41, + 28, 26, 32, 23, 21, 23, 27, 26, 24, 26, 30, 27, 25, 23, 28, 48, + 77, 98, 108, 91, 84, 84, 97, 110, 118, 119, 120, 130, 132, 133, 137, 131, + 104, 78, 75, 106, 136, 142, 118, 104, 113, 102, 73, 52, 29, 10, 21, 66, + 104, 106, 88, 76, 51, 13, 60, 111, 98, 76, 40, 13, 12, 42, 73, 71, + 70, 78, 79, 65, 56, 57, 63, 46, 17, 10, 23, 24, 15, 8, 9, 17, + 22, 21, 17, 39, 28, 20, 20, 24, 23, 22, 23, 24, 32, 41, 47, 52, + 53, 255, 255, 255, 255, 255, 255, 255, 83, 62, 45, 38, 40, 30, 32, 34, + 31, 21, 13, 18, 30, 26, 22, 20, 22, 22, 22, 27, 33, 41, 25, 15, + 31, 67, 95, 92, 76, 85, 87, 97, 109, 115, 119, 124, 130, 134, 135, 132, + 136, 135, 111, 82, 74, 104, 128, 139, 127, 116, 118, 113, 99, 81, 53, 25, + 31, 72, 112, 117, 100, 97, 80, 21, 40, 81, 85, 79, 39, 9, 12, 30, + 63, 88, 98, 95, 92, 47, 34, 52, 70, 43, 13, 6, 6, 15, 14, 11, + 10, 13, 16, 18, 19, 35, 25, 18, 22, 30, 32, 31, 31, 32, 36, 42, + 46, 50, 52, 255, 255, 255, 255, 255, 255, 255, 80, 54, 39, 42, 54, 45, + 35, 27, 28, 28, 22, 16, 17, 23, 15, 10, 12, 15, 20, 28, 35, 23, + 34, 51, 69, 86, 95, 90, 80, 83, 96, 113, 124, 123, 120, 127, 138, 138, + 139, 135, 139, 141, 120, 89, 78, 96, 102, 111, 118, 122, 118, 107, 99, 91, + 76, 56, 53, 77, 106, 113, 104, 103, 108, 46, 34, 54, 70, 90, 60, 34, + 22, 14, 36, 80, 100, 95, 92, 77, 63, 71, 64, 29, 23, 31, 16, 5, + 11, 15, 16, 14, 16, 24, 32, 26, 19, 18, 28, 36, 33, 25, 20, 22, + 27, 33, 43, 55, 62, 123, 255, 255, 255, 255, 255, 198, 74, 43, 31, 44, + 26, 23, 33, 27, 31, 47, 38, 19, 22, 22, 24, 21, 17, 16, 17, 19, + 18, 24, 54, 84, 94, 89, 92, 103, 114, 108, 111, 115, 120, 126, 132, 136, + 137, 133, 135, 138, 141, 140, 128, 103, 80, 98, 103, 111, 115, 117, 114, 112, + 110, 108, 97, 84, 77, 81, 91, 101, 106, 122, 105, 75, 45, 36, 48, 67, + 78, 69, 62, 64, 72, 76, 76, 85, 101, 119, 98, 75, 64, 60, 50, 26, + 7, 12, 10, 10, 13, 20, 26, 26, 24, 18, 20, 24, 25, 27, 26, 20, + 15, 21, 24, 24, 27, 44, 63, 63, 255, 255, 255, 255, 255, 85, 77, 50, + 32, 43, 38, 26, 31, 32, 35, 42, 37, 26, 26, 36, 31, 24, 20, 18, + 18, 18, 17, 49, 70, 92, 99, 98, 103, 112, 120, 123, 125, 128, 132, 135, + 138, 140, 140, 134, 135, 136, 138, 140, 133, 113, 94, 102, 105, 110, 114, 114, + 111, 107, 105, 110, 105, 97, 91, 90, 96, 106, 113, 123, 111, 89, 61, 40, + 39, 54, 69, 94, 95, 94, 91, 88, 92, 96, 99, 97, 90, 81, 75, 70, + 57, 34, 17, 19, 14, 13, 18, 23, 23, 21, 20, 20, 21, 22, 24, 23, + 23, 19, 16, 27, 28, 22, 22, 41, 61, 55, 255, 255, 255, 255, 255, 90, + 78, 55, 26, 29, 36, 27, 29, 38, 42, 36, 35, 35, 29, 33, 27, 22, + 19, 21, 26, 31, 34, 69, 80, 94, 100, 105, 114, 123, 127, 129, 131, 134, + 137, 137, 136, 135, 133, 135, 134, 134, 135, 139, 138, 126, 113, 109, 111, 115, + 116, 115, 111, 108, 105, 112, 112, 111, 106, 103, 105, 112, 119, 122, 117, 106, + 86, 57, 41, 52, 73, 111, 119, 117, 105, 99, 104, 102, 93, 86, 90, 95, + 95, 85, 68, 49, 38, 33, 24, 22, 28, 32, 27, 22, 20, 23, 22, 21, + 23, 23, 21, 19, 18, 26, 28, 21, 20, 45, 71, 61, 255, 255, 255, 255, + 206, 88, 74, 56, 23, 20, 30, 24, 25, 42, 46, 32, 34, 40, 29, 25, + 21, 19, 18, 20, 26, 41, 52, 72, 79, 88, 97, 110, 123, 129, 130, 131, + 132, 135, 137, 136, 134, 131, 128, 133, 134, 133, 134, 139, 141, 134, 124, 119, + 119, 121, 122, 121, 118, 114, 111, 114, 116, 117, 118, 116, 118, 121, 124, 124, + 120, 118, 109, 85, 66, 74, 96, 114, 119, 119, 113, 108, 108, 104, 96, 98, + 103, 107, 106, 97, 83, 70, 61, 51, 42, 39, 46, 48, 40, 30, 26, 24, + 23, 22, 26, 26, 21, 16, 16, 21, 28, 23, 20, 43, 70, 61, 255, 255, + 255, 255, 103, 80, 65, 55, 31, 27, 32, 21, 23, 39, 43, 31, 35, 42, + 29, 27, 26, 26, 24, 20, 23, 44, 63, 74, 80, 90, 100, 115, 128, 133, + 130, 134, 136, 138, 141, 141, 139, 136, 133, 132, 133, 133, 134, 138, 141, 135, + 126, 126, 124, 123, 124, 125, 124, 120, 117, 116, 117, 118, 123, 127, 130, 127, + 125, 128, 121, 120, 121, 109, 96, 102, 120, 123, 117, 118, 125, 123, 114, 110, + 112, 115, 114, 110, 106, 102, 97, 92, 87, 78, 71, 66, 69, 68, 58, 42, + 32, 23, 22, 25, 32, 31, 22, 15, 13, 20, 28, 26, 19, 32, 52, 45, + 255, 255, 255, 255, 107, 84, 61, 45, 33, 34, 26, 22, 25, 32, 32, 31, + 39, 41, 29, 25, 25, 26, 28, 25, 29, 53, 77, 85, 92, 101, 110, 121, + 132, 135, 132, 134, 136, 137, 139, 140, 140, 138, 137, 132, 133, 133, 133, 136, + 138, 133, 127, 131, 128, 125, 126, 128, 128, 125, 121, 121, 120, 122, 128, 135, + 137, 133, 128, 133, 126, 122, 124, 123, 119, 121, 128, 129, 119, 118, 128, 129, + 118, 114, 120, 121, 116, 108, 106, 107, 108, 108, 108, 105, 104, 98, 90, 87, + 80, 59, 37, 25, 23, 27, 36, 35, 23, 14, 13, 15, 23, 25, 21, 30, + 43, 42, 255, 255, 255, 202, 110, 91, 59, 29, 27, 39, 20, 28, 32, 24, + 18, 32, 44, 41, 35, 27, 21, 20, 27, 30, 38, 58, 79, 90, 99, 109, + 115, 120, 128, 134, 135, 131, 133, 134, 137, 138, 138, 138, 137, 136, 136, 134, + 132, 134, 138, 136, 131, 137, 134, 130, 130, 133, 133, 129, 126, 127, 128, 131, + 135, 137, 137, 137, 135, 135, 131, 127, 127, 131, 133, 133, 129, 125, 120, 118, + 121, 123, 121, 120, 121, 118, 117, 115, 116, 117, 118, 118, 118, 117, 125, 120, + 106, 103, 102, 79, 48, 29, 24, 28, 37, 36, 23, 15, 16, 13, 17, 19, + 23, 31, 40, 43, 255, 255, 255, 86, 102, 91, 55, 17, 25, 50, 25, 34, + 38, 18, 7, 32, 47, 42, 41, 38, 25, 19, 24, 31, 36, 49, 64, 89, + 99, 109, 112, 114, 123, 132, 137, 134, 136, 135, 137, 137, 140, 139, 140, 138, + 138, 134, 131, 133, 138, 139, 135, 146, 140, 135, 135, 137, 137, 132, 128, 132, + 136, 141, 141, 138, 136, 138, 140, 134, 134, 131, 130, 134, 140, 139, 132, 120, + 124, 121, 114, 118, 130, 130, 122, 114, 121, 127, 129, 127, 123, 120, 119, 119, + 132, 130, 112, 112, 117, 95, 58, 32, 26, 27, 36, 35, 23, 17, 20, 20, + 15, 13, 20, 26, 30, 31, 255, 255, 255, 66, 88, 81, 41, 22, 41, 54, + 49, 32, 22, 16, 22, 30, 34, 38, 42, 35, 24, 21, 28, 35, 41, 54, + 69, 91, 102, 114, 121, 126, 133, 137, 137, 133, 134, 137, 139, 139, 138, 137, + 135, 134, 139, 143, 142, 142, 146, 146, 142, 144, 143, 140, 138, 140, 142, 138, + 131, 128, 135, 139, 135, 138, 146, 148, 142, 132, 133, 135, 136, 136, 135, 135, + 135, 130, 131, 131, 130, 126, 124, 127, 131, 126, 124, 123, 126, 129, 131, 130, + 127, 131, 124, 123, 118, 108, 104, 94, 77, 56, 11, 15, 40, 28, 19, 24, + 18, 13, 15, 17, 21, 29, 35, 31, 255, 255, 189, 69, 84, 78, 45, 31, + 46, 59, 55, 32, 19, 9, 12, 21, 28, 32, 37, 37, 28, 20, 17, 22, + 35, 56, 72, 93, 101, 109, 114, 121, 131, 138, 140, 139, 139, 138, 137, 137, + 137, 137, 138, 139, 141, 144, 146, 145, 142, 140, 140, 141, 144, 144, 141, 140, + 143, 141, 137, 134, 139, 141, 140, 142, 145, 145, 143, 142, 142, 138, 134, 133, + 136, 140, 144, 134, 132, 132, 132, 134, 134, 134, 133, 129, 127, 125, 127, 131, + 136, 138, 138, 131, 124, 122, 116, 103, 100, 94, 78, 58, 17, 18, 38, 25, + 16, 22, 19, 17, 16, 14, 15, 25, 36, 38, 255, 255, 53, 63, 68, 62, + 42, 33, 40, 49, 49, 36, 23, 15, 17, 25, 30, 28, 27, 30, 29, 22, + 13, 18, 38, 63, 79, 93, 101, 109, 114, 121, 130, 134, 136, 140, 140, 140, + 140, 139, 139, 138, 138, 138, 135, 139, 147, 149, 142, 139, 143, 138, 143, 144, + 141, 141, 144, 144, 141, 144, 141, 142, 147, 147, 144, 143, 146, 148, 146, 141, + 137, 136, 138, 140, 143, 139, 135, 133, 136, 140, 141, 138, 134, 142, 138, 134, + 133, 134, 138, 139, 140, 132, 126, 124, 115, 100, 97, 95, 84, 60, 25, 22, + 36, 23, 14, 20, 20, 12, 12, 11, 11, 19, 29, 33, 255, 255, 39, 53, + 53, 47, 40, 34, 34, 34, 34, 33, 26, 23, 27, 34, 32, 20, 11, 18, + 26, 27, 20, 26, 49, 74, 86, 96, 105, 114, 121, 126, 132, 131, 127, 135, + 139, 141, 144, 142, 139, 135, 132, 139, 131, 133, 145, 147, 136, 132, 139, 136, + 137, 138, 137, 140, 144, 144, 140, 146, 141, 142, 150, 150, 144, 142, 149, 144, + 144, 144, 144, 143, 141, 137, 134, 142, 139, 138, 138, 139, 139, 135, 132, 140, + 139, 135, 133, 133, 135, 137, 139, 134, 129, 126, 116, 99, 97, 98, 89, 56, + 30, 25, 34, 23, 14, 18, 18, 8, 12, 15, 17, 21, 25, 23, 255, 255, + 35, 49, 46, 44, 45, 40, 34, 27, 25, 22, 20, 18, 21, 27, 26, 14, + 3, 15, 23, 27, 23, 31, 57, 81, 93, 105, 111, 116, 121, 126, 135, 137, + 136, 142, 140, 136, 133, 128, 125, 123, 122, 136, 125, 122, 132, 131, 119, 115, + 121, 131, 129, 127, 127, 136, 145, 145, 139, 141, 137, 140, 149, 150, 144, 143, + 150, 144, 144, 142, 143, 142, 140, 134, 128, 141, 143, 143, 139, 134, 130, 129, + 130, 126, 128, 129, 132, 133, 136, 139, 140, 136, 129, 126, 116, 99, 97, 98, + 90, 50, 33, 27, 31, 25, 17, 16, 17, 12, 18, 20, 20, 23, 26, 24, + 255, 255, 44, 42, 41, 41, 42, 39, 31, 23, 19, 20, 17, 12, 11, 16, + 21, 19, 14, 19, 21, 22, 23, 35, 60, 87, 104, 117, 117, 115, 116, 123, + 138, 146, 148, 150, 140, 124, 109, 99, 98, 101, 105, 102, 94, 94, 102, 106, + 103, 102, 106, 114, 112, 112, 113, 123, 136, 141, 139, 136, 135, 139, 146, 148, + 146, 145, 147, 150, 145, 136, 131, 130, 129, 126, 123, 126, 129, 128, 126, 119, + 116, 118, 121, 126, 128, 131, 132, 132, 133, 134, 136, 134, 127, 125, 116, 101, + 99, 96, 85, 49, 38, 26, 24, 23, 18, 14, 14, 13, 16, 14, 12, 15, + 22, 26, 255, 44, 37, 34, 35, 35, 32, 29, 27, 21, 18, 22, 22, 18, + 13, 14, 20, 23, 19, 14, 12, 17, 30, 49, 71, 96, 115, 125, 124, 121, + 120, 127, 138, 144, 144, 137, 126, 106, 89, 78, 75, 77, 81, 65, 62, 61, + 66, 74, 81, 84, 84, 83, 87, 91, 92, 100, 117, 132, 139, 132, 137, 141, + 143, 145, 148, 147, 144, 145, 137, 127, 121, 117, 113, 107, 102, 94, 93, 91, + 91, 90, 94, 97, 100, 113, 114, 117, 118, 118, 119, 123, 128, 135, 129, 128, + 121, 109, 105, 99, 83, 55, 43, 24, 15, 19, 17, 11, 11, 9, 13, 12, + 9, 9, 15, 20, 255, 24, 12, 32, 35, 33, 27, 24, 27, 27, 24, 21, + 26, 26, 19, 17, 18, 17, 11, 2, 2, 16, 43, 67, 85, 105, 123, 124, + 129, 130, 131, 134, 138, 135, 128, 114, 108, 95, 82, 72, 66, 63, 63, 54, + 52, 47, 44, 49, 59, 60, 55, 57, 68, 76, 78, 81, 99, 123, 138, 133, + 142, 146, 143, 145, 150, 149, 140, 132, 128, 122, 117, 111, 101, 87, 78, 62, + 60, 56, 59, 67, 75, 79, 80, 77, 80, 85, 90, 96, 106, 117, 125, 140, + 134, 131, 127, 117, 113, 104, 85, 62, 49, 22, 8, 15, 16, 10, 11, 9, + 15, 19, 17, 16, 17, 16, 255, 36, 27, 28, 32, 40, 35, 24, 28, 30, + 20, 23, 16, 20, 26, 19, 15, 16, 12, 9, 7, 12, 31, 65, 99, 116, + 119, 126, 129, 121, 126, 135, 116, 96, 104, 100, 84, 69, 65, 66, 64, 64, + 64, 61, 66, 59, 50, 42, 27, 19, 28, 51, 60, 69, 70, 68, 81, 109, + 132, 132, 126, 136, 148, 148, 144, 139, 130, 121, 118, 117, 114, 100, 81, 72, + 74, 59, 52, 47, 48, 54, 58, 59, 60, 59, 45, 58, 78, 82, 98, 117, + 117, 129, 136, 137, 127, 114, 107, 99, 92, 67, 41, 15, 6, 10, 13, 8, + 2, 8, 15, 20, 23, 22, 19, 20, 255, 36, 34, 31, 29, 34, 33, 30, + 37, 38, 26, 21, 18, 24, 25, 15, 15, 18, 12, 15, 12, 14, 35, 72, + 106, 120, 118, 125, 125, 120, 117, 109, 88, 78, 86, 87, 90, 95, 99, 102, + 105, 109, 112, 99, 92, 71, 59, 61, 57, 41, 29, 32, 39, 51, 62, 66, + 75, 96, 116, 111, 121, 133, 140, 136, 132, 127, 126, 117, 107, 98, 95, 96, + 89, 71, 54, 50, 41, 31, 29, 32, 38, 44, 48, 43, 34, 37, 46, 49, + 60, 79, 89, 106, 114, 117, 113, 108, 106, 101, 95, 76, 47, 15, 2, 6, + 11, 11, 11, 18, 22, 23, 22, 20, 21, 101, 255, 33, 36, 42, 31, 27, + 27, 26, 30, 26, 11, 19, 23, 29, 21, 7, 10, 15, 5, 0, 1, 11, + 38, 75, 105, 112, 106, 119, 109, 112, 119, 114, 107, 104, 100, 106, 109, 115, + 117, 116, 112, 112, 114, 110, 99, 78, 58, 58, 73, 81, 79, 87, 76, 72, + 77, 77, 75, 86, 102, 96, 118, 126, 121, 120, 121, 124, 133, 120, 116, 104, + 86, 76, 74, 72, 68, 57, 51, 43, 40, 44, 55, 65, 71, 78, 79, 72, + 65, 62, 55, 57, 69, 81, 88, 94, 99, 104, 108, 108, 104, 86, 54, 19, + 2, 3, 8, 9, 10, 23, 23, 21, 17, 14, 19, 255, 255, 44, 48, 53, + 36, 29, 30, 26, 25, 20, 6, 17, 25, 30, 17, 2, 9, 15, 5, 7, + 25, 51, 79, 105, 124, 128, 125, 130, 115, 118, 121, 105, 107, 122, 122, 124, + 111, 106, 109, 103, 88, 86, 95, 89, 85, 89, 96, 98, 94, 79, 59, 84, + 70, 68, 82, 91, 90, 95, 106, 99, 127, 132, 123, 125, 126, 120, 120, 118, + 113, 105, 93, 76, 66, 67, 75, 62, 63, 62, 61, 63, 71, 76, 79, 99, + 111, 103, 95, 92, 72, 50, 53, 68, 71, 79, 90, 101, 110, 112, 111, 98, + 66, 30, 11, 7, 8, 8, 7, 18, 18, 14, 11, 10, 16, 255, 193, 63, + 62, 50, 31, 29, 35, 33, 29, 26, 17, 9, 18, 25, 14, 5, 18, 32, + 26, 55, 82, 113, 130, 137, 144, 154, 161, 143, 132, 133, 124, 94, 92, 110, + 115, 105, 95, 96, 104, 92, 72, 80, 106, 86, 61, 68, 103, 122, 116, 89, + 55, 58, 51, 58, 81, 97, 96, 94, 98, 115, 133, 140, 135, 136, 135, 121, + 106, 137, 116, 106, 113, 109, 88, 69, 63, 70, 80, 86, 86, 83, 83, 79, + 74, 84, 99, 98, 102, 113, 100, 72, 66, 63, 65, 71, 82, 95, 103, 108, + 110, 109, 74, 33, 10, 6, 9, 13, 17, 13, 16, 15, 15, 16, 22, 255, + 71, 61, 53, 41, 21, 19, 31, 32, 24, 18, 10, 5, 10, 16, 13, 11, + 29, 49, 50, 69, 90, 110, 113, 110, 116, 130, 143, 123, 111, 118, 141, 160, + 163, 141, 110, 88, 95, 104, 102, 80, 64, 77, 104, 84, 68, 81, 99, 91, + 91, 93, 81, 79, 68, 62, 66, 75, 82, 88, 94, 128, 125, 129, 127, 122, + 135, 147, 137, 149, 127, 107, 98, 84, 64, 55, 58, 70, 85, 96, 94, 90, + 89, 85, 79, 75, 81, 83, 92, 109, 112, 100, 94, 67, 64, 67, 77, 87, + 95, 103, 109, 110, 73, 28, 1, 0, 3, 15, 24, 14, 17, 20, 22, 25, + 30, 255, 71, 62, 54, 43, 17, 16, 38, 43, 36, 23, 12, 17, 10, 10, + 10, 9, 24, 43, 49, 44, 55, 67, 72, 81, 92, 103, 108, 101, 91, 94, + 143, 210, 221, 169, 116, 96, 106, 99, 76, 66, 75, 81, 77, 54, 95, 151, + 145, 85, 61, 68, 61, 73, 66, 56, 48, 57, 80, 102, 113, 120, 110, 132, + 140, 115, 128, 159, 155, 122, 119, 101, 71, 51, 51, 62, 69, 62, 75, 79, + 71, 63, 66, 67, 65, 63, 60, 63, 68, 75, 90, 97, 88, 76, 73, 75, + 82, 88, 95, 105, 118, 113, 77, 34, 8, 1, 5, 14, 21, 13, 15, 19, + 22, 23, 30, 255, 84, 84, 82, 54, 25, 26, 56, 74, 70, 55, 41, 33, + 17, 9, 7, 2, 10, 26, 32, 35, 43, 55, 73, 98, 116, 117, 112, 111, + 107, 96, 120, 171, 179, 142, 115, 101, 103, 73, 40, 59, 106, 106, 68, 29, + 98, 169, 154, 89, 80, 102, 88, 71, 79, 82, 75, 81, 100, 113, 114, 96, + 101, 159, 183, 136, 123, 141, 124, 108, 118, 109, 92, 98, 124, 124, 102, 82, + 87, 79, 58, 43, 44, 49, 50, 58, 51, 58, 61, 59, 78, 95, 85, 87, + 84, 85, 91, 95, 101, 115, 131, 122, 91, 55, 31, 20, 16, 16, 16, 9, + 10, 13, 15, 16, 21, 255, 83, 81, 77, 61, 26, 34, 88, 121, 110, 84, + 66, 66, 51, 19, 16, 19, 18, 33, 32, 36, 35, 51, 80, 108, 119, 119, + 119, 128, 120, 115, 115, 115, 115, 117, 120, 97, 81, 59, 57, 84, 112, 105, + 80, 57, 54, 72, 89, 93, 114, 134, 125, 106, 89, 91, 92, 86, 101, 121, + 119, 84, 110, 145, 161, 156, 137, 121, 113, 108, 109, 89, 92, 79, 103, 104, + 113, 108, 145, 160, 129, 88, 67, 54, 42, 56, 78, 84, 75, 67, 64, 70, + 86, 95, 106, 112, 105, 96, 97, 104, 112, 115, 130, 118, 58, 45, 18, 13, + 12, 1, 1, 5, 13, 17, 25, 255, 89, 89, 85, 59, 26, 33, 87, 124, + 123, 103, 85, 95, 88, 59, 48, 37, 25, 34, 30, 45, 46, 59, 86, 110, + 120, 120, 118, 122, 122, 123, 129, 125, 116, 106, 101, 90, 82, 72, 75, 96, + 114, 109, 94, 86, 64, 58, 72, 93, 122, 131, 111, 85, 84, 91, 93, 88, + 89, 95, 93, 99, 110, 127, 147, 156, 150, 132, 116, 109, 104, 82, 83, 76, + 97, 94, 97, 121, 157, 161, 116, 77, 71, 68, 54, 76, 96, 102, 87, 75, + 67, 71, 86, 105, 111, 109, 96, 84, 83, 87, 92, 107, 123, 92, 44, 31, + 11, 8, 5, 13, 11, 8, 8, 14, 27, 255, 103, 104, 101, 60, 29, 34, + 80, 116, 121, 104, 85, 115, 117, 96, 80, 58, 38, 40, 32, 54, 55, 69, + 93, 116, 125, 125, 120, 123, 124, 128, 133, 128, 113, 97, 89, 87, 86, 88, + 94, 102, 107, 105, 101, 106, 85, 74, 76, 88, 108, 114, 99, 84, 95, 98, + 97, 94, 85, 78, 81, 111, 115, 125, 138, 147, 147, 136, 126, 124, 114, 93, + 91, 90, 107, 102, 99, 115, 149, 149, 101, 69, 75, 78, 64, 94, 113, 114, + 97, 83, 71, 72, 85, 97, 100, 96, 87, 81, 84, 89, 92, 90, 111, 59, + 29, 14, 8, 11, 5, 7, 10, 9, 4, 11, 106, 255, 109, 109, 105, 65, + 38, 44, 87, 121, 125, 109, 89, 111, 119, 103, 91, 72, 54, 52, 37, 54, + 60, 77, 100, 121, 131, 130, 127, 133, 128, 125, 125, 120, 110, 101, 99, 102, + 100, 101, 106, 105, 101, 101, 105, 106, 112, 113, 102, 88, 88, 96, 98, 100, + 110, 100, 91, 97, 89, 81, 93, 115, 128, 141, 143, 134, 129, 131, 137, 116, + 109, 92, 86, 84, 94, 92, 90, 98, 124, 128, 100, 79, 84, 88, 80, 102, + 114, 108, 93, 86, 80, 79, 87, 89, 91, 90, 87, 89, 96, 102, 102, 89, + 115, 53, 29, 4, 3, 9, 7, 0, 16, 24, 21, 25, 255, 255, 101, 99, + 93, 70, 49, 64, 113, 143, 144, 128, 111, 109, 119, 103, 93, 82, 69, 62, + 38, 51, 64, 86, 107, 124, 132, 132, 129, 137, 129, 123, 122, 120, 116, 115, + 117, 125, 117, 112, 111, 109, 107, 107, 113, 107, 118, 118, 107, 97, 94, 96, + 102, 102, 106, 91, 83, 96, 97, 93, 106, 114, 131, 147, 145, 132, 124, 129, + 140, 118, 116, 109, 92, 85, 84, 88, 87, 94, 105, 112, 108, 97, 92, 96, + 101, 102, 106, 96, 87, 92, 94, 91, 96, 99, 102, 101, 98, 98, 101, 101, + 97, 104, 130, 74, 39, 4, 2, 7, 15, 32, 53, 65, 55, 49, 255, 255, + 91, 87, 79, 74, 53, 75, 128, 151, 140, 123, 113, 123, 133, 114, 102, 93, + 81, 66, 31, 46, 69, 95, 115, 125, 130, 130, 129, 134, 129, 125, 127, 128, + 125, 124, 126, 128, 121, 110, 105, 106, 109, 112, 113, 107, 107, 94, 92, 108, + 113, 103, 96, 99, 102, 96, 96, 104, 107, 108, 115, 116, 126, 135, 142, 141, + 138, 135, 135, 138, 139, 140, 114, 103, 89, 98, 99, 105, 101, 103, 108, 103, + 95, 99, 112, 103, 106, 98, 93, 103, 108, 104, 106, 109, 112, 112, 107, 105, + 104, 101, 96, 107, 124, 91, 40, 12, 17, 24, 49, 84, 97, 99, 85, 69, + 255, 255, 84, 77, 67, 72, 51, 76, 132, 147, 126, 108, 108, 134, 148, 132, + 117, 105, 90, 68, 27, 37, 68, 102, 121, 126, 129, 132, 133, 130, 126, 124, + 127, 128, 126, 124, 125, 120, 120, 112, 102, 103, 110, 111, 106, 102, 117, 113, + 109, 118, 115, 101, 103, 115, 116, 121, 121, 110, 111, 118, 120, 116, 120, 128, + 139, 146, 146, 139, 133, 136, 138, 143, 113, 104, 85, 97, 97, 112, 109, 109, + 112, 109, 102, 104, 110, 107, 117, 114, 110, 115, 114, 107, 107, 111, 116, 117, + 112, 109, 111, 111, 110, 104, 107, 99, 30, 19, 35, 44, 84, 111, 112, 111, + 101, 255, 255, 255, 255, 67, 58, 69, 49, 78, 140, 155, 129, 117, 124, 133, + 153, 141, 126, 112, 93, 70, 26, 28, 65, 105, 124, 127, 131, 136, 139, 130, + 124, 120, 122, 123, 120, 120, 122, 117, 125, 121, 110, 107, 114, 112, 102, 97, + 145, 166, 152, 130, 104, 98, 122, 135, 133, 142, 136, 107, 104, 119, 120, 110, + 120, 132, 142, 144, 142, 138, 136, 131, 132, 139, 111, 107, 88, 100, 99, 114, + 120, 124, 123, 121, 119, 112, 105, 112, 126, 129, 123, 121, 113, 103, 105, 116, + 122, 122, 116, 112, 115, 118, 120, 115, 102, 106, 21, 18, 39, 46, 93, 110, + 109, 109, 111, 255, 255, 255, 255, 75, 78, 70, 49, 84, 140, 161, 138, 109, + 123, 126, 140, 140, 145, 128, 91, 67, 39, 36, 69, 108, 128, 132, 131, 133, + 134, 125, 130, 129, 123, 123, 128, 131, 129, 131, 129, 124, 116, 119, 122, 117, + 109, 116, 155, 179, 162, 129, 113, 118, 126, 136, 138, 137, 124, 109, 106, 116, + 128, 125, 133, 140, 140, 140, 141, 142, 140, 130, 130, 126, 117, 107, 102, 105, + 110, 105, 108, 115, 120, 117, 113, 115, 122, 114, 121, 123, 117, 110, 108, 108, + 106, 113, 116, 119, 117, 114, 114, 116, 119, 116, 113, 100, 17, 39, 46, 70, + 80, 104, 121, 134, 127, 255, 255, 255, 255, 79, 88, 68, 49, 81, 129, 156, + 144, 112, 117, 125, 136, 131, 133, 117, 84, 63, 39, 49, 72, 100, 118, 125, + 130, 130, 127, 130, 135, 135, 130, 129, 134, 137, 136, 134, 135, 129, 126, 128, + 131, 127, 119, 127, 136, 136, 127, 124, 132, 136, 134, 130, 134, 134, 126, 117, + 116, 125, 134, 118, 126, 133, 134, 133, 135, 137, 134, 124, 126, 127, 123, 115, + 109, 106, 107, 100, 98, 99, 103, 105, 107, 117, 128, 111, 117, 118, 113, 109, + 111, 115, 114, 127, 125, 124, 123, 122, 121, 118, 117, 116, 109, 100, 32, 56, + 62, 87, 100, 120, 148, 163, 255, 255, 255, 255, 255, 76, 90, 74, 55, 73, + 110, 146, 153, 127, 122, 128, 134, 125, 125, 114, 89, 77, 58, 71, 81, 96, + 109, 120, 129, 128, 122, 132, 136, 137, 134, 133, 137, 140, 140, 136, 137, 134, + 134, 137, 139, 136, 129, 128, 126, 120, 121, 135, 149, 144, 131, 122, 124, 125, + 123, 119, 120, 124, 128, 115, 122, 128, 129, 130, 133, 132, 129, 124, 124, 123, + 121, 117, 113, 110, 109, 115, 111, 106, 108, 109, 111, 117, 124, 113, 117, 118, + 113, 112, 117, 124, 126, 133, 127, 123, 122, 125, 124, 120, 114, 124, 106, 100, + 53, 74, 76, 93, 107, 134, 155, 191, 255, 255, 255, 255, 255, 74, 87, 82, + 58, 62, 83, 125, 156, 141, 128, 133, 135, 123, 126, 122, 109, 108, 95, 90, + 95, 102, 109, 120, 129, 129, 122, 130, 132, 134, 134, 133, 136, 139, 141, 137, + 138, 137, 139, 141, 141, 137, 133, 131, 136, 134, 133, 134, 139, 137, 132, 122, + 123, 122, 122, 121, 120, 118, 118, 121, 127, 132, 132, 133, 135, 133, 127, 129, + 124, 117, 112, 112, 114, 117, 118, 125, 125, 124, 127, 126, 124, 119, 118, 120, + 125, 126, 123, 122, 127, 131, 132, 130, 127, 124, 126, 127, 128, 126, 122, 125, + 94, 90, 67, 88, 88, 96, 107, 144, 140, 255, 255, 255, 255, 255, 255, 197, + 88, 76, 55, 51, 62, 108, 152, 142, 123, 134, 134, 119, 124, 125, 121, 128, + 120, 101, 105, 109, 112, 119, 127, 128, 125, 128, 130, 133, 135, 135, 137, 139, + 143, 141, 142, 140, 143, 143, 140, 137, 135, 143, 146, 141, 130, 121, 123, 131, + 139, 127, 125, 122, 124, 124, 124, 120, 116, 129, 134, 135, 135, 135, 136, 133, + 126, 130, 125, 118, 114, 115, 118, 120, 123, 115, 120, 124, 130, 132, 133, 129, + 124, 128, 132, 134, 131, 130, 133, 132, 130, 131, 133, 134, 133, 131, 130, 131, + 132, 116, 81, 83, 83, 105, 107, 110, 118, 150, 126, 255, 255, 255, 255, 255, + 255, 255, 82, 71, 53, 51, 58, 102, 149, 140, 121, 133, 129, 113, 119, 124, + 122, 131, 124, 107, 110, 111, 111, 115, 123, 127, 127, 132, 132, 136, 141, 142, + 142, 144, 149, 149, 148, 146, 149, 148, 143, 141, 142, 143, 142, 138, 136, 133, + 134, 133, 133, 123, 121, 118, 119, 121, 123, 120, 117, 130, 134, 136, 136, 137, + 137, 132, 125, 127, 125, 126, 125, 122, 121, 121, 121, 118, 123, 124, 123, 125, + 131, 132, 133, 131, 136, 136, 135, 133, 135, 133, 129, 133, 136, 137, 133, 127, + 124, 124, 125, 119, 86, 98, 107, 116, 120, 117, 124, 146, 255, 255, 255, 255, + 255, 255, 255, 255, 194, 79, 59, 52, 54, 94, 143, 143, 132, 136, 131, 115, + 122, 128, 127, 136, 127, 113, 112, 109, 106, 112, 124, 131, 131, 136, 135, 139, + 147, 148, 147, 149, 156, 155, 152, 150, 154, 152, 146, 146, 150, 139, 138, 139, + 143, 143, 140, 131, 126, 120, 117, 113, 114, 115, 118, 119, 119, 129, 133, 135, + 135, 138, 140, 134, 127, 126, 127, 127, 124, 119, 116, 118, 122, 131, 136, 133, + 126, 122, 127, 131, 132, 133, 136, 135, 134, 135, 139, 139, 136, 136, 134, 132, + 128, 124, 120, 116, 115, 116, 97, 119, 130, 118, 120, 118, 127, 137, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 86, 61, 47, 41, 78, 132, 144, 143, 140, + 137, 122, 130, 138, 137, 146, 137, 120, 114, 105, 102, 112, 128, 135, 135, 137, + 136, 141, 149, 151, 149, 151, 159, 156, 153, 150, 155, 153, 148, 149, 155, 144, + 140, 135, 130, 123, 121, 125, 131, 126, 122, 117, 115, 115, 118, 120, 122, 128, + 132, 134, 136, 140, 143, 138, 130, 128, 127, 123, 115, 107, 108, 116, 124, 127, + 136, 137, 129, 124, 127, 132, 132, 136, 137, 135, 133, 137, 144, 148, 145, 142, + 137, 131, 128, 128, 126, 119, 114, 100, 93, 127, 138, 115, 118, 124, 139, 135, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 54, 48, 52, 59, 84, 126, + 151, 146, 128, 130, 141, 137, 135, 140, 138, 122, 115, 107, 105, 111, 122, 132, + 138, 136, 139, 143, 146, 148, 152, 156, 160, 158, 160, 159, 159, 155, 152, 150, + 150, 136, 133, 128, 124, 125, 128, 126, 124, 116, 114, 114, 119, 126, 128, 125, + 121, 125, 136, 144, 142, 138, 137, 137, 135, 128, 128, 120, 107, 101, 110, 122, + 128, 128, 126, 124, 125, 127, 130, 129, 129, 136, 135, 135, 136, 138, 143, 148, + 151, 146, 141, 135, 134, 135, 132, 121, 114, 105, 106, 121, 131, 125, 125, 132, + 132, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 67, 61, 51, 55, + 79, 111, 130, 148, 134, 135, 143, 141, 139, 138, 135, 129, 120, 110, 108, 113, + 122, 129, 132, 134, 137, 142, 146, 149, 153, 157, 160, 155, 158, 157, 156, 152, + 148, 146, 145, 140, 135, 129, 124, 123, 123, 121, 119, 106, 104, 104, 110, 118, + 123, 123, 121, 134, 132, 133, 140, 148, 149, 142, 134, 135, 131, 121, 110, 105, + 108, 111, 110, 112, 114, 118, 122, 125, 127, 126, 127, 129, 130, 133, 136, 139, + 141, 142, 143, 143, 142, 138, 134, 130, 123, 115, 111, 105, 105, 117, 128, 129, + 136, 137, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 57, + 50, 55, 63, 94, 137, 143, 136, 136, 143, 146, 144, 137, 131, 134, 124, 112, + 110, 115, 122, 125, 124, 128, 132, 139, 144, 147, 151, 154, 157, 154, 157, 155, + 154, 149, 144, 141, 140, 134, 131, 127, 124, 121, 117, 111, 108, 103, 103, 106, + 113, 118, 120, 117, 114, 117, 111, 115, 131, 144, 142, 134, 131, 132, 123, 110, + 100, 99, 104, 105, 101, 98, 106, 115, 120, 121, 120, 120, 121, 123, 126, 131, + 135, 138, 137, 136, 136, 137, 139, 138, 134, 126, 119, 113, 111, 105, 109, 119, + 126, 134, 149, 141, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 55, 66, 72, 46, 64, 134, 138, 139, 142, 146, 154, 153, 142, 136, 131, + 121, 111, 108, 115, 121, 121, 119, 124, 128, 135, 140, 143, 145, 147, 148, 154, + 156, 154, 152, 146, 140, 137, 135, 126, 124, 126, 129, 126, 118, 110, 107, 103, + 104, 107, 111, 110, 106, 98, 92, 85, 87, 102, 123, 129, 120, 120, 129, 123, + 112, 95, 82, 80, 86, 94, 99, 103, 110, 118, 120, 116, 113, 114, 116, 120, + 122, 126, 130, 132, 133, 132, 132, 132, 133, 133, 131, 126, 121, 116, 113, 103, + 114, 127, 131, 137, 149, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 192, 79, 80, 40, 40, 97, 136, 151, 153, 154, 165, 163, 148, + 142, 126, 117, 108, 107, 113, 120, 120, 119, 124, 128, 134, 138, 139, 140, 140, + 142, 149, 151, 147, 144, 138, 133, 130, 129, 126, 123, 124, 127, 126, 122, 120, + 124, 110, 107, 102, 97, 93, 89, 85, 82, 81, 83, 99, 120, 126, 116, 113, + 120, 110, 102, 91, 79, 73, 76, 85, 95, 112, 118, 121, 120, 115, 113, 115, + 119, 121, 121, 122, 123, 125, 127, 129, 130, 135, 132, 127, 127, 127, 123, 116, + 109, 96, 115, 135, 136, 135, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 53, 53, 50, 56, 78, 128, 154, 156, 151, 162, + 160, 142, 141, 125, 118, 112, 108, 112, 116, 121, 122, 125, 128, 133, 135, 135, + 136, 137, 139, 142, 142, 137, 132, 126, 122, 121, 121, 124, 116, 112, 115, 115, + 114, 121, 133, 129, 121, 108, 97, 92, 93, 97, 102, 98, 89, 91, 108, 122, + 118, 107, 100, 86, 86, 89, 90, 87, 87, 93, 102, 115, 117, 118, 116, 114, + 115, 119, 123, 120, 118, 117, 116, 117, 121, 124, 128, 137, 132, 125, 122, 123, + 118, 107, 99, 94, 115, 136, 138, 133, 131, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 62, 78, 75, 110, 148, 153, + 145, 158, 157, 141, 146, 134, 129, 121, 114, 112, 114, 120, 124, 120, 123, 126, + 129, 129, 131, 133, 136, 137, 136, 129, 123, 117, 115, 115, 117, 116, 110, 110, + 116, 114, 109, 114, 125, 133, 128, 119, 111, 106, 105, 109, 112, 102, 94, 87, + 94, 105, 110, 104, 94, 82, 82, 87, 96, 101, 101, 104, 110, 115, 114, 114, + 113, 114, 116, 118, 119, 116, 115, 113, 112, 113, 116, 120, 123, 130, 127, 122, + 118, 114, 108, 98, 92, 101, 115, 134, 141, 137, 174, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 71, 57, 102, + 146, 154, 146, 163, 164, 153, 160, 142, 138, 130, 120, 112, 113, 120, 125, 115, + 117, 119, 121, 123, 126, 130, 133, 138, 135, 128, 120, 114, 114, 115, 118, 109, + 110, 119, 131, 128, 115, 110, 114, 113, 114, 115, 114, 109, 102, 97, 95, 95, + 97, 94, 88, 90, 99, 105, 104, 103, 96, 91, 97, 102, 101, 101, 104, 114, + 113, 110, 111, 112, 113, 113, 111, 111, 111, 110, 110, 111, 113, 116, 118, 118, + 120, 118, 114, 106, 99, 94, 93, 110, 117, 134, 144, 145, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 190, 72, 125, 166, 158, 140, 145, 154, 154, 148, 147, 131, 118, 118, 115, 112, + 119, 111, 116, 120, 119, 118, 121, 129, 134, 131, 127, 115, 106, 107, 113, 111, + 104, 109, 107, 112, 120, 118, 110, 111, 119, 105, 109, 114, 115, 111, 108, 107, + 108, 112, 105, 106, 115, 116, 105, 96, 93, 89, 92, 95, 99, 103, 105, 106, + 107, 115, 113, 109, 107, 107, 107, 108, 108, 110, 110, 108, 108, 107, 106, 106, + 105, 109, 107, 108, 105, 96, 90, 91, 98, 113, 161, 138, 163, 182, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 63, 101, 145, 161, 157, 151, 156, 160, 147, 147, 128, 108, 106, + 108, 108, 113, 109, 116, 120, 121, 119, 122, 127, 132, 126, 118, 105, 94, 95, + 103, 103, 98, 102, 103, 105, 109, 106, 104, 106, 113, 114, 114, 115, 113, 112, + 114, 120, 125, 115, 110, 107, 112, 114, 109, 103, 100, 95, 95, 97, 100, 103, + 106, 110, 110, 108, 110, 112, 110, 103, 99, 99, 101, 105, 105, 104, 104, 103, + 102, 103, 103, 102, 102, 101, 97, 87, 82, 88, 100, 133, 159, 146, 149, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 120, 152, 159, 149, 152, 166, 163, 161, 135, + 107, 105, 112, 112, 113, 111, 115, 120, 122, 120, 120, 125, 130, 125, 115, 100, + 91, 94, 103, 106, 104, 110, 114, 116, 113, 111, 116, 120, 123, 113, 114, 115, + 115, 117, 120, 126, 131, 119, 116, 110, 107, 109, 113, 113, 109, 107, 106, 105, + 106, 109, 112, 116, 119, 106, 112, 117, 115, 106, 99, 98, 100, 102, 102, 100, + 100, 100, 99, 101, 101, 96, 98, 98, 92, 80, 77, 90, 109, 144, 140, 143, + 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 133, 145, 164, 167, + 163, 132, 100, 103, 115, 118, 116, 115, 116, 118, 119, 117, 117, 123, 132, 125, + 113, 100, 96, 102, 110, 113, 111, 102, 112, 115, 109, 108, 117, 122, 121, 111, + 114, 119, 123, 126, 127, 127, 127, 126, 126, 119, 108, 109, 119, 123, 118, 116, + 116, 115, 115, 116, 119, 120, 121, 112, 115, 119, 117, 112, 106, 103, 103, 102, + 102, 99, 99, 98, 98, 98, 100, 95, 99, 100, 94, 82, 83, 100, 122, 156, + 125, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, + 137, 126, 119, 91, 74, 92, 115, 119, 117, 122, 118, 116, 115, 112, 112, 122, + 135, 126, 113, 102, 101, 107, 112, 108, 104, 99, 110, 113, 108, 109, 117, 122, + 120, 117, 119, 122, 127, 130, 130, 128, 126, 131, 132, 126, 114, 115, 124, 127, + 122, 117, 118, 117, 117, 116, 117, 116, 117, 118, 114, 111, 111, 112, 111, 107, + 104, 100, 99, 97, 95, 95, 95, 96, 98, 98, 100, 101, 96, 89, 90, 107, + 126, 162, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 189, 39, 46, 86, 116, 123, 123, 126, 119, 114, 113, 109, + 108, 120, 136, 133, 119, 108, 109, 113, 111, 102, 96, 101, 107, 108, 106, 103, + 109, 114, 116, 117, 114, 111, 110, 113, 116, 117, 117, 122, 123, 122, 119, 118, + 121, 122, 120, 119, 118, 116, 114, 112, 112, 112, 113, 119, 111, 104, 103, 107, + 109, 106, 102, 94, 93, 91, 90, 91, 93, 95, 97, 101, 100, 98, 97, 93, + 93, 102, 114, 129, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 36, 92, 122, 126, 126, 127, 118, 114, + 114, 109, 107, 117, 134, 139, 123, 110, 113, 117, 114, 105, 98, 90, 86, 82, + 80, 75, 76, 82, 92, 103, 99, 95, 94, 97, 99, 100, 98, 98, 99, 105, + 111, 112, 108, 105, 106, 115, 111, 105, 100, 97, 98, 101, 104, 104, 97, 91, + 89, 90, 90, 89, 87, 87, 87, 86, 87, 91, 95, 99, 102, 106, 99, 95, + 95, 96, 93, 91, 93, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 97, 124, 121, 119, 127, + 117, 115, 116, 111, 106, 116, 132, 135, 117, 105, 109, 115, 113, 106, 101, 93, + 82, 74, 71, 64, 60, 69, 84, 90, 89, 90, 92, 96, 95, 90, 84, 77, + 78, 88, 103, 104, 94, 89, 94, 105, 98, 88, 80, 78, 81, 87, 90, 81, + 79, 76, 72, 68, 65, 65, 65, 84, 84, 85, 88, 93, 99, 105, 110, 111, + 101, 94, 96, 98, 92, 83, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 116, 122, + 129, 126, 119, 123, 129, 116, 97, 99, 117, 128, 116, 112, 118, 119, 113, 110, + 115, 112, 93, 79, 78, 72, 63, 69, 85, 92, 110, 113, 97, 95, 107, 106, + 92, 96, 116, 124, 109, 97, 99, 102, 98, 118, 105, 89, 79, 78, 82, 85, + 86, 68, 64, 63, 56, 40, 29, 44, 68, 86, 84, 89, 100, 105, 103, 101, + 104, 111, 103, 97, 99, 99, 93, 83, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, + 120, 124, 127, 119, 115, 120, 126, 113, 95, 98, 115, 126, 117, 114, 120, 121, + 117, 118, 126, 118, 104, 92, 90, 87, 85, 93, 105, 112, 128, 130, 116, 114, + 127, 128, 117, 130, 160, 170, 143, 112, 111, 128, 142, 146, 134, 118, 107, 103, + 102, 101, 99, 75, 68, 63, 57, 47, 42, 59, 82, 95, 92, 95, 103, 107, + 105, 104, 107, 106, 99, 95, 98, 96, 85, 131, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 112, 125, 123, 124, 112, 111, 115, 121, 112, 98, 98, 109, 125, 120, 119, + 124, 123, 119, 122, 130, 119, 113, 105, 99, 97, 102, 106, 111, 118, 131, 134, + 125, 127, 141, 145, 136, 145, 175, 189, 163, 132, 131, 153, 173, 166, 156, 143, + 131, 124, 120, 115, 111, 90, 80, 71, 68, 66, 68, 86, 105, 108, 105, 104, + 108, 111, 108, 107, 108, 99, 94, 93, 97, 94, 80, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 120, 128, 121, 118, 117, 114, 116, 122, 120, 112, 108, 110, 122, + 121, 124, 127, 124, 118, 119, 125, 120, 123, 118, 108, 104, 108, 107, 102, 111, + 120, 123, 119, 124, 138, 145, 141, 140, 160, 168, 157, 144, 146, 155, 161, 167, + 158, 144, 134, 126, 121, 118, 115, 101, 90, 81, 82, 84, 91, 104, 117, 115, + 113, 113, 114, 114, 111, 106, 104, 95, 92, 94, 96, 92, 136, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 126, 129, 117, 112, 124, 120, 119, 124, 128, 127, 119, + 112, 112, 116, 123, 127, 125, 119, 117, 119, 123, 130, 129, 120, 114, 114, 108, + 97, 109, 112, 113, 111, 117, 127, 131, 129, 138, 147, 150, 142, 138, 142, 144, + 142, 157, 148, 135, 123, 115, 113, 111, 111, 100, 91, 87, 91, 96, 102, 108, + 112, 116, 118, 117, 117, 115, 111, 103, 97, 97, 96, 94, 93, 84, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 133, 130, 114, 108, 117, 117, 116, 117, 121, + 122, 116, 108, 104, 110, 117, 124, 126, 124, 120, 119, 120, 127, 129, 124, 119, + 119, 112, 103, 111, 110, 107, 107, 109, 111, 111, 109, 122, 130, 133, 125, 120, + 126, 137, 144, 145, 138, 127, 115, 106, 104, 104, 104, 100, 97, 97, 103, 109, + 113, 112, 109, 116, 119, 118, 114, 112, 108, 101, 93, 97, 98, 97, 88, 132, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 138, 131, 113, 107, 107, 115, 118, + 113, 110, 111, 112, 108, 108, 111, 115, 120, 125, 127, 124, 121, 120, 122, 123, + 122, 120, 119, 116, 113, 114, 110, 107, 108, 108, 105, 102, 99, 102, 108, 112, + 110, 110, 117, 127, 134, 127, 123, 116, 108, 102, 98, 98, 99, 102, 104, 106, + 112, 118, 121, 117, 111, 118, 120, 115, 108, 106, 105, 102, 95, 92, 96, 97, + 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 132, 114, 109, 106, + 122, 130, 120, 109, 111, 117, 119, 118, 117, 117, 118, 124, 128, 126, 121, 127, + 123, 123, 123, 123, 122, 121, 124, 120, 114, 112, 116, 117, 113, 107, 106, 105, + 104, 104, 108, 115, 118, 113, 105, 109, 109, 107, 103, 99, 98, 99, 100, 100, + 104, 107, 113, 118, 121, 117, 111, 121, 122, 113, 104, 100, 104, 103, 99, 84, + 93, 98, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 140, 129, + 113, 111, 117, 120, 118, 110, 109, 117, 125, 114, 112, 115, 122, 128, 131, 127, + 120, 125, 124, 123, 121, 121, 122, 123, 123, 117, 120, 123, 120, 114, 110, 111, + 113, 113, 116, 118, 119, 118, 112, 106, 102, 95, 98, 102, 106, 107, 107, 105, + 103, 106, 108, 110, 116, 121, 122, 118, 114, 122, 116, 108, 107, 108, 106, 98, + 90, 95, 88, 80, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 137, + 135, 124, 114, 106, 110, 113, 116, 114, 113, 111, 110, 111, 111, 114, 118, 124, + 126, 126, 123, 113, 113, 114, 116, 117, 118, 120, 120, 113, 116, 118, 115, 109, + 107, 109, 112, 117, 117, 117, 117, 116, 114, 112, 110, 107, 107, 108, 109, 110, + 110, 110, 110, 113, 114, 114, 118, 120, 118, 110, 105, 108, 108, 110, 112, 110, + 105, 98, 93, 91, 91, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 129, 133, 125, 121, 124, 112, 108, 106, 109, 113, 113, 107, 100, 108, 110, 113, + 115, 117, 120, 123, 125, 115, 115, 117, 119, 120, 121, 122, 122, 121, 123, 123, + 121, 117, 116, 118, 120, 119, 117, 115, 114, 114, 115, 117, 118, 118, 116, 113, + 111, 110, 112, 114, 115, 121, 120, 119, 121, 122, 118, 111, 105, 101, 105, 107, + 104, 97, 90, 84, 83, 85, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 113, 139, 141, 127, 117, 117, 122, 113, 103, 101, 106, 110, 108, 104, 109, + 112, 115, 114, 111, 114, 120, 126, 124, 123, 122, 121, 121, 122, 123, 124, 129, + 131, 132, 129, 127, 124, 123, 123, 117, 115, 112, 110, 110, 111, 113, 116, 117, + 116, 113, 110, 110, 112, 114, 115, 121, 119, 116, 116, 118, 118, 114, 111, 110, + 108, 104, 97, 89, 85, 83, 84, 80, 85, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 114, 151, 158, 138, 115, 102, 115, 110, 102, 100, 102, 107, 110, + 111, 111, 115, 118, 115, 110, 111, 118, 124, 125, 122, 119, 116, 117, 119, 122, + 124, 124, 127, 130, 129, 126, 121, 117, 113, 111, 110, 108, 106, 105, 104, 103, + 103, 108, 108, 108, 110, 110, 111, 112, 113, 119, 113, 107, 105, 107, 110, 110, + 110, 115, 111, 106, 102, 100, 97, 93, 91, 65, 64, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 71, 114, 141, 147, 139, 125, 115, 105, 105, 104, 105, 106, + 108, 110, 111, 111, 115, 117, 117, 113, 112, 117, 120, 122, 120, 117, 116, 118, + 122, 126, 129, 122, 123, 125, 126, 124, 120, 114, 111, 110, 109, 108, 106, 104, + 101, 98, 97, 104, 106, 109, 112, 114, 114, 114, 114, 124, 118, 109, 105, 106, + 109, 110, 110, 110, 106, 102, 98, 95, 89, 81, 75, 53, 117, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 92, 126, 135, 133, 137, 138, 135, 114, 111, 108, + 107, 107, 109, 108, 108, 106, 110, 115, 118, 117, 117, 118, 119, 124, 124, 124, + 125, 126, 127, 129, 130, 128, 127, 127, 127, 127, 126, 124, 122, 120, 119, 117, + 115, 112, 110, 108, 107, 112, 114, 116, 118, 121, 122, 122, 122, 129, 124, 116, + 113, 113, 114, 114, 112, 105, 102, 96, 88, 81, 79, 81, 83, 82, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 105, 147, 152, 142, 141, 137, 129, 136, + 126, 112, 105, 105, 108, 108, 107, 101, 105, 112, 117, 118, 119, 119, 118, 125, + 126, 128, 130, 130, 128, 125, 123, 132, 130, 127, 126, 128, 132, 133, 134, 132, + 130, 127, 124, 122, 121, 121, 122, 122, 123, 122, 124, 126, 127, 128, 130, 124, + 121, 116, 116, 117, 117, 113, 111, 105, 103, 95, 85, 81, 90, 111, 128, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 109, 146, 149, 142, 136, 132, + 137, 138, 133, 123, 111, 101, 97, 98, 100, 97, 102, 105, 104, 109, 118, 122, + 118, 118, 122, 128, 132, 133, 132, 132, 132, 142, 140, 136, 133, 131, 133, 134, + 135, 132, 128, 122, 123, 125, 128, 126, 126, 125, 127, 126, 126, 128, 135, 135, + 133, 132, 130, 122, 113, 110, 113, 113, 110, 97, 112, 99, 82, 85, 86, 88, + 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 109, 142, 140, 137, + 136, 134, 135, 139, 136, 129, 117, 105, 99, 98, 99, 99, 103, 105, 105, 111, + 120, 125, 124, 122, 125, 129, 131, 132, 133, 134, 134, 143, 141, 138, 135, 134, + 135, 136, 136, 134, 131, 128, 127, 127, 129, 130, 129, 129, 131, 129, 127, 129, + 134, 134, 131, 129, 127, 121, 113, 110, 111, 110, 105, 96, 102, 93, 75, 70, + 73, 81, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 144, + 136, 136, 145, 143, 138, 138, 139, 135, 125, 112, 102, 99, 100, 105, 106, 105, + 103, 105, 111, 115, 115, 122, 125, 128, 130, 130, 132, 134, 135, 139, 138, 137, + 135, 134, 134, 134, 134, 133, 133, 133, 131, 129, 128, 129, 130, 132, 133, 131, + 128, 128, 132, 130, 127, 121, 123, 121, 116, 114, 114, 108, 102, 88, 89, 93, + 86, 76, 83, 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 138, 150, 135, 137, 149, 147, 138, 136, 140, 140, 133, 120, 110, 106, 106, 106, + 105, 102, 99, 100, 103, 107, 109, 114, 117, 123, 127, 129, 130, 131, 133, 134, + 133, 132, 132, 132, 132, 131, 130, 130, 133, 135, 133, 129, 126, 127, 131, 132, + 134, 131, 127, 128, 130, 129, 125, 114, 118, 122, 121, 118, 115, 105, 96, 77, + 78, 93, 98, 85, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 146, 150, 132, 134, 145, 142, 134, 134, 139, 141, 137, 128, 119, 115, + 114, 103, 100, 98, 97, 98, 101, 106, 109, 101, 106, 114, 121, 125, 126, 126, + 127, 129, 129, 128, 128, 129, 129, 128, 129, 130, 132, 135, 135, 130, 128, 128, + 130, 129, 129, 127, 123, 123, 126, 125, 120, 110, 115, 119, 117, 113, 106, 93, + 82, 70, 64, 74, 78, 68, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 148, 150, 136, 137, 144, 141, 138, 136, 138, 139, 137, 133, + 128, 123, 122, 111, 105, 100, 97, 93, 89, 89, 92, 91, 98, 105, 112, 116, + 118, 119, 120, 125, 125, 123, 123, 124, 125, 126, 127, 128, 130, 133, 134, 132, + 130, 128, 128, 124, 124, 121, 118, 118, 120, 118, 114, 108, 111, 108, 103, 96, + 90, 80, 70, 65, 55, 52, 52, 50, 125, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 141, 144, 139, 142, 144, 143, 147, 141, 139, 136, + 136, 135, 133, 129, 125, 123, 115, 108, 103, 96, 86, 82, 83, 90, 95, 99, + 103, 105, 108, 112, 115, 119, 118, 116, 116, 116, 118, 120, 122, 122, 123, 125, + 128, 130, 128, 125, 123, 122, 122, 118, 112, 111, 112, 110, 104, 105, 102, 93, + 83, 79, 80, 80, 76, 79, 71, 58, 57, 67, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 135, 141, 139, 140, 150, 145, + 140, 135, 134, 136, 135, 130, 125, 124, 117, 113, 113, 109, 100, 97, 100, 95, + 95, 96, 96, 97, 102, 109, 114, 113, 112, 109, 108, 108, 111, 115, 117, 117, + 116, 118, 122, 126, 126, 121, 116, 121, 121, 116, 109, 106, 107, 103, 99, 102, + 95, 83, 71, 71, 81, 88, 91, 104, 101, 84, 82, 148, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 137, 137, 139, 138, + 136, 139, 140, 138, 135, 132, 129, 125, 123, 119, 115, 111, 112, 113, 110, 103, + 96, 90, 87, 82, 80, 85, 96, 110, 120, 118, 110, 102, 98, 103, 112, 116, + 116, 113, 118, 119, 114, 114, 119, 121, 118, 121, 127, 119, 97, 87, 93, 97, + 92, 86, 73, 57, 64, 86, 93, 87, 92, 101, 96, 97, 105, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 141, 137, + 135, 133, 129, 144, 143, 142, 139, 136, 133, 130, 128, 121, 117, 114, 113, 114, + 113, 108, 102, 96, 92, 86, 81, 80, 85, 92, 97, 106, 102, 97, 94, 100, + 105, 105, 102, 99, 106, 110, 106, 103, 106, 112, 113, 118, 117, 107, 92, 86, + 89, 89, 84, 66, 65, 55, 56, 75, 85, 88, 96, 92, 91, 94, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 217, 138, 136, 134, 131, 143, 143, 142, 140, 137, 135, 132, 131, 124, 120, 115, + 115, 116, 116, 113, 111, 106, 102, 97, 91, 86, 82, 81, 81, 87, 84, 85, + 90, 95, 96, 94, 91, 94, 103, 108, 103, 97, 99, 106, 111, 112, 103, 91, + 82, 78, 75, 70, 66, 69, 82, 77, 70, 77, 84, 83, 86, 80, 83, 146, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 217, 142, 141, 139, 140, 139, 139, 137, 134, 132, 131, 125, + 122, 118, 117, 117, 119, 119, 118, 114, 112, 110, 106, 103, 95, 89, 85, 79, + 77, 78, 82, 83, 79, 75, 73, 81, 85, 87, 84, 80, 79, 83, 87, 85, + 76, 69, 68, 67, 63, 62, 64, 82, 102, 102, 89, 91, 92, 82, 75, 70, + 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 218, 143, 137, 137, 137, 137, 136, 135, 134, + 133, 130, 127, 125, 123, 123, 125, 126, 128, 119, 118, 117, 116, 115, 109, 101, + 96, 92, 85, 81, 81, 75, 66, 59, 59, 60, 58, 56, 57, 58, 59, 58, + 59, 55, 53, 54, 59, 62, 64, 73, 85, 84, 100, 97, 87, 94, 97, 88, + 79, 73, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 139, 139, 139, 140, 139, + 139, 138, 137, 135, 133, 132, 130, 130, 132, 133, 134, 122, 120, 118, 118, 118, + 114, 107, 100, 102, 95, 90, 91, 88, 81, 79, 84, 73, 66, 63, 67, 71, + 71, 69, 69, 61, 63, 63, 61, 62, 70, 82, 92, 96, 101, 90, 80, 89, + 95, 90, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 139, 141, + 141, 141, 141, 142, 141, 135, 135, 134, 133, 132, 132, 133, 134, 126, 122, 118, + 117, 119, 118, 113, 109, 103, 97, 97, 103, 103, 100, 101, 111, 100, 94, 90, + 93, 92, 88, 85, 89, 81, 82, 74, 63, 63, 78, 88, 92, 104, 105, 93, + 88, 94, 93, 88, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 216, 139, 140, 141, 141, 142, 141, 133, 133, 133, 132, 130, 129, 131, 131, 130, + 125, 119, 119, 123, 125, 123, 120, 105, 98, 98, 104, 102, 94, 96, 105, 108, + 103, 100, 98, 90, 81, 79, 84, 86, 86, 74, 61, 68, 90, 101, 99, 92, + 97, 95, 98, 103, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 216, 136, 135, 139, 143, 137, 134, 131, 129, 130, 130, 129, + 128, 122, 124, 126, 128, 130, 129, 128, 127, 113, 119, 119, 111, 107, 108, 109, + 106, 100, 106, 111, 107, 97, 89, 87, 88, 86, 85, 81, 79, 86, 98, 100, + 96, 92, 93, 94, 98, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 214, 131, 136, 142, 141, 138, 135, 134, 134, + 134, 132, 130, 126, 127, 128, 129, 128, 128, 125, 124, 120, 126, 125, 116, 109, + 111, 115, 116, 115, 114, 110, 103, 98, 97, 103, 109, 101, 95, 83, 75, 80, + 92, 98, 97, 101, 96, 89, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 141, 139, 137, 135, + 135, 135, 134, 132, 129, 129, 130, 130, 130, 128, 126, 122, 121, 122, 125, 124, + 116, 109, 111, 117, 120, 120, 115, 107, 101, 98, 101, 107, 111, 99, 92, 82, + 77, 84, 97, 104, 105, 105, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, + 132, 130, 129, 130, 128, 125, 123, 130, 130, 129, 129, 128, 126, 123, 121, 123, + 122, 119, 116, 115, 117, 118, 118, 119, 115, 110, 108, 107, 105, 102, 98, 92, + 88, 84, 86, 94, 102, 104, 104, 150, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 211, 124, 122, 121, 119, 127, 127, 127, 127, 126, 125, 124, + 124, 126, 120, 116, 120, 125, 126, 121, 116, 122, 120, 118, 118, 118, 114, 106, + 99, 99, 93, 88, 91, 96, 98, 97, 95, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 210, 120, 120, 123, 125, 125, 125, 124, + 125, 124, 124, 122, 116, 112, 120, 126, 126, 120, 114, 124, 122, 118, 117, 117, + 116, 111, 107, 99, 90, 83, 86, 93, 97, 99, 152, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 124, 123, + 123, 122, 122, 123, 123, 116, 112, 112, 118, 120, 117, 116, 119, 122, 120, 117, + 115, 113, 110, 106, 103, 89, 81, 78, 86, 95, 98, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 211, 121, 121, 121, 121, 118, 117, 119, 122, 120, 116, 121, 131, 120, + 123, 124, 123, 117, 110, 101, 96, 88, 83, 85, 96, 152, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 119, 118, 117, 116, 118, 120, + 122, 121, 126, 125, 114, 104, 100, 94, 89, 143, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 96, 111, + 114, 86, 117, 213, 255, 255, 255, 255, 255, 255, 255, 223, 132, 70, 85, 118, + 141, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 200, 112, 113, 112, 118, 117, 99, 94, 85, + 79, 82, 83, 73, 57, 58, 71, 69, 61, 66, 68, 67, 70, 75, 74, 77, + 89, 109, 126, 124, 114, 76, 60, 41, 28, 25, 102, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 178, 32, 35, 28, 20, 17, 33, 52, 85, 106, 104, 101, 103, 98, 102, + 98, 87, 77, 73, 71, 61, 50, 61, 65, 60, 58, 67, 68, 65, 70, 53, + 55, 63, 82, 107, 120, 110, 94, 83, 68, 52, 41, 37, 34, 28, 23, 76, + 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 177, 20, 25, 30, 31, 28, 28, 30, 47, 57, 80, 91, 85, 84, 85, + 83, 86, 83, 76, 67, 66, 66, 63, 59, 66, 60, 52, 56, 66, 61, 55, + 64, 55, 57, 59, 63, 75, 86, 90, 89, 84, 72, 60, 53, 49, 43, 31, + 23, 26, 23, 23, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 175, 26, 24, 28, 33, 37, 40, 50, 59, 69, 68, 76, 75, 68, + 69, 73, 72, 63, 62, 61, 56, 57, 60, 66, 69, 68, 60, 54, 62, 67, + 50, 43, 57, 60, 69, 71, 62, 54, 61, 76, 89, 81, 74, 66, 63, 62, + 52, 40, 28, 25, 23, 24, 25, 30, 106, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 177, 24, 26, 31, 32, 42, 52, 60, 63, 70, 77, 78, 70, 72, + 72, 63, 62, 63, 58, 57, 56, 55, 54, 53, 52, 57, 62, 66, 64, 64, + 73, 71, 49, 42, 61, 57, 68, 75, 71, 66, 67, 72, 76, 73, 69, 64, + 64, 66, 58, 46, 33, 25, 24, 23, 23, 27, 30, 32, 106, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 18, 19, 28, 36, 38, 43, 56, 71, 79, 77, 74, 74, 72, + 65, 71, 73, 68, 67, 62, 49, 57, 55, 55, 55, 55, 54, 55, 60, 64, + 67, 71, 79, 77, 56, 52, 72, 84, 77, 68, 65, 72, 77, 71, 62, 62, + 60, 55, 56, 59, 53, 44, 33, 31, 29, 26, 23, 27, 32, 33, 31, 36, + 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 23, 23, 24, 25, 33, 45, 53, 53, 58, 69, 77, 75, 72, + 70, 71, 62, 67, 73, 73, 75, 74, 61, 58, 55, 57, 64, 66, 62, 61, + 63, 66, 70, 70, 74, 75, 62, 59, 75, 99, 87, 71, 63, 66, 74, 70, + 63, 63, 59, 53, 53, 57, 54, 48, 39, 41, 38, 32, 25, 28, 33, 34, + 29, 35, 24, 24, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 181, 32, 36, 43, 47, 44, 48, 55, 68, 58, 53, 56, 63, + 67, 70, 73, 78, 64, 63, 69, 72, 84, 89, 82, 69, 65, 68, 73, 73, + 65, 59, 59, 71, 72, 66, 65, 69, 62, 58, 69, 74, 81, 85, 82, 77, + 75, 73, 71, 77, 72, 64, 63, 67, 67, 61, 55, 50, 47, 38, 29, 29, + 34, 34, 27, 32, 21, 20, 23, 97, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 186, 44, 49, 58, 69, 75, 73, 66, 60, 70, 69, 74, + 78, 75, 67, 66, 71, 71, 74, 69, 59, 67, 83, 83, 69, 71, 68, 71, + 87, 102, 89, 74, 78, 78, 78, 78, 78, 76, 70, 63, 57, 65, 75, 83, + 82, 73, 67, 69, 74, 87, 85, 78, 74, 67, 64, 66, 71, 72, 64, 54, + 48, 39, 32, 34, 45, 42, 39, 35, 29, 27, 25, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 62, 55, 67, 66, 68, 68, 68, 70, 74, 77, 69, + 65, 64, 68, 67, 62, 60, 63, 65, 67, 62, 51, 59, 72, 74, 61, 70, + 77, 76, 77, 85, 84, 74, 74, 73, 69, 65, 63, 63, 62, 58, 55, 58, + 63, 69, 74, 74, 72, 68, 67, 86, 82, 74, 77, 85, 86, 78, 67, 58, + 57, 59, 64, 57, 44, 31, 29, 35, 34, 30, 27, 25, 23, 22, 100, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 62, 68, 65, 71, 68, 63, 57, 53, 57, 67, + 76, 68, 60, 54, 57, 60, 58, 53, 49, 53, 56, 51, 41, 47, 57, 60, + 48, 51, 67, 63, 51, 56, 64, 63, 62, 68, 60, 50, 46, 47, 49, 48, + 46, 53, 57, 62, 62, 59, 58, 59, 62, 63, 75, 83, 81, 78, 81, 80, + 74, 79, 71, 67, 69, 65, 54, 39, 31, 36, 35, 31, 28, 24, 24, 22, + 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 189, 61, 67, 67, 71, 65, 60, 55, 54, + 59, 67, 73, 70, 60, 52, 54, 59, 57, 47, 37, 42, 43, 39, 33, 37, + 47, 49, 42, 57, 68, 62, 51, 59, 71, 72, 73, 70, 60, 48, 42, 43, + 46, 45, 43, 48, 55, 57, 47, 34, 31, 42, 55, 51, 68, 75, 68, 66, + 75, 81, 81, 95, 84, 73, 71, 70, 65, 52, 42, 41, 38, 31, 26, 22, + 22, 23, 25, 21, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 192, 61, 55, 59, 59, 60, 49, 40, + 38, 45, 53, 59, 61, 69, 62, 55, 55, 59, 57, 44, 30, 33, 34, 32, + 28, 34, 43, 47, 41, 43, 41, 31, 33, 46, 51, 47, 53, 67, 58, 49, + 46, 47, 49, 49, 47, 41, 44, 44, 39, 32, 31, 38, 47, 61, 54, 45, + 46, 66, 86, 89, 79, 85, 80, 75, 77, 80, 76, 61, 47, 48, 41, 31, + 23, 17, 18, 20, 23, 28, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 191, 70, 70, 62, 53, 54, 59, 53, + 41, 28, 27, 36, 48, 53, 54, 61, 58, 53, 51, 52, 51, 41, 30, 27, + 28, 28, 25, 32, 40, 46, 44, 53, 48, 36, 41, 55, 55, 49, 54, 52, + 49, 46, 45, 46, 48, 49, 49, 46, 41, 40, 47, 57, 61, 54, 46, 47, + 41, 38, 42, 56, 71, 79, 82, 95, 90, 81, 76, 74, 75, 67, 58, 60, + 52, 40, 27, 21, 19, 21, 22, 34, 21, 92, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 60, 69, 74, 65, 55, 58, + 65, 59, 52, 46, 46, 51, 56, 57, 55, 45, 47, 45, 38, 37, 39, 38, + 33, 23, 24, 25, 23, 30, 37, 43, 43, 40, 46, 39, 34, 44, 52, 49, + 49, 50, 50, 50, 47, 45, 44, 47, 50, 52, 48, 47, 51, 59, 61, 57, + 52, 30, 37, 51, 57, 50, 43, 53, 72, 93, 92, 84, 74, 69, 73, 74, + 72, 71, 64, 51, 39, 31, 25, 24, 22, 25, 17, 13, 98, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 64, 70, 80, 82, 71, + 58, 59, 67, 41, 44, 48, 51, 50, 45, 38, 33, 33, 38, 36, 27, 24, + 29, 35, 36, 22, 22, 21, 22, 26, 34, 38, 41, 44, 64, 59, 41, 50, + 69, 72, 65, 63, 64, 63, 57, 50, 47, 50, 55, 49, 53, 53, 43, 31, + 30, 40, 52, 43, 43, 55, 71, 66, 46, 40, 48, 53, 67, 79, 81, 79, + 81, 78, 75, 69, 66, 55, 44, 32, 25, 18, 16, 7, 15, 26, 24, 90, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 56, 57, 54, 60, + 65, 58, 46, 49, 61, 59, 49, 37, 34, 38, 39, 33, 26, 32, 32, 32, + 32, 31, 28, 26, 25, 19, 20, 22, 23, 24, 29, 37, 42, 42, 46, 47, + 45, 41, 41, 43, 47, 52, 52, 51, 44, 37, 34, 40, 46, 55, 53, 50, + 48, 48, 46, 44, 43, 36, 38, 40, 43, 45, 47, 48, 48, 50, 55, 62, + 69, 75, 77, 79, 80, 75, 77, 68, 59, 52, 39, 27, 32, 33, 24, 11, + 9, 21, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 81, 83, 66, + 66, 67, 70, 66, 55, 46, 44, 44, 38, 33, 32, 36, 37, 36, 33, 25, + 26, 26, 25, 24, 22, 20, 19, 22, 22, 21, 19, 21, 22, 26, 30, 29, + 33, 39, 42, 42, 41, 43, 46, 44, 49, 53, 53, 47, 39, 33, 31, 37, + 35, 33, 34, 35, 34, 30, 26, 32, 31, 35, 38, 40, 42, 43, 43, 53, + 52, 50, 49, 52, 55, 60, 63, 69, 74, 71, 65, 66, 53, 41, 40, 30, + 25, 12, 9, 15, 11, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 73, + 71, 68, 68, 64, 61, 60, 59, 47, 36, 30, 31, 32, 32, 31, 32, 33, + 34, 26, 26, 25, 24, 23, 22, 21, 20, 24, 21, 20, 18, 22, 22, 23, + 22, 24, 30, 38, 43, 46, 44, 44, 42, 31, 36, 43, 51, 53, 49, 41, + 35, 37, 35, 35, 38, 42, 42, 36, 30, 35, 35, 38, 40, 41, 41, 42, + 42, 46, 44, 42, 42, 47, 52, 58, 62, 54, 62, 62, 65, 71, 61, 45, + 40, 31, 29, 18, 16, 21, 20, 18, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, + 64, 53, 46, 63, 65, 57, 47, 49, 61, 60, 50, 30, 34, 37, 35, 28, + 24, 25, 27, 27, 26, 24, 23, 22, 22, 22, 21, 22, 18, 18, 21, 27, + 30, 31, 28, 30, 32, 36, 40, 40, 40, 36, 34, 30, 29, 31, 39, 49, + 53, 50, 45, 49, 45, 44, 48, 54, 56, 51, 44, 43, 43, 44, 43, 44, + 43, 41, 41, 38, 39, 43, 48, 55, 59, 61, 61, 67, 75, 75, 77, 85, + 81, 64, 57, 35, 31, 22, 22, 34, 37, 38, 118, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 75, 75, 65, 55, 62, 70, 64, 49, 46, 60, 64, 59, 35, 39, 41, + 37, 29, 22, 21, 23, 22, 20, 18, 16, 15, 16, 17, 17, 21, 17, 19, + 23, 30, 35, 36, 34, 33, 30, 27, 28, 29, 31, 27, 25, 37, 31, 28, + 33, 42, 47, 43, 37, 43, 39, 36, 38, 44, 48, 48, 46, 44, 42, 40, + 38, 38, 35, 33, 32, 37, 38, 40, 45, 52, 55, 55, 53, 71, 79, 75, + 74, 84, 86, 75, 70, 50, 41, 29, 29, 43, 43, 40, 45, 208, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 73, 78, 77, 72, 63, 59, 72, 73, 57, 46, 49, 49, 45, 39, + 39, 39, 37, 33, 29, 26, 25, 22, 20, 17, 14, 14, 16, 18, 19, 22, + 19, 20, 22, 28, 31, 36, 36, 37, 31, 24, 24, 27, 32, 30, 28, 30, + 27, 27, 35, 45, 48, 40, 32, 35, 33, 31, 32, 36, 40, 44, 45, 41, + 41, 39, 37, 36, 32, 30, 29, 34, 32, 32, 36, 47, 56, 60, 61, 60, + 68, 62, 54, 65, 72, 70, 67, 70, 61, 44, 42, 49, 44, 31, 31, 80, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 74, 66, 61, 63, 64, 62, 69, 70, 57, 43, 40, 38, + 37, 41, 37, 34, 34, 37, 36, 32, 27, 29, 26, 22, 19, 19, 21, 24, + 26, 22, 20, 23, 23, 26, 29, 37, 40, 43, 35, 27, 27, 32, 36, 33, + 30, 27, 25, 27, 35, 44, 47, 40, 32, 29, 31, 33, 33, 34, 36, 41, + 44, 40, 38, 39, 37, 35, 33, 33, 32, 27, 26, 31, 39, 53, 63, 69, + 67, 64, 73, 62, 51, 58, 67, 69, 70, 76, 71, 56, 52, 53, 40, 25, + 24, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 81, 74, 61, 54, 62, 72, 69, 69, 64, 55, 45, + 42, 47, 49, 47, 37, 30, 32, 38, 40, 34, 25, 30, 27, 23, 21, 20, + 23, 27, 29, 21, 21, 24, 25, 25, 31, 40, 46, 44, 35, 27, 27, 31, + 34, 31, 24, 42, 35, 31, 32, 37, 38, 33, 27, 19, 25, 30, 31, 29, + 29, 34, 37, 35, 33, 35, 35, 34, 33, 32, 31, 27, 29, 36, 48, 57, + 62, 58, 52, 59, 68, 56, 40, 43, 51, 52, 55, 62, 63, 54, 51, 49, + 34, 21, 23, 22, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 193, 70, 64, 59, 63, 65, 66, 51, 62, 62, + 47, 45, 57, 59, 50, 41, 42, 32, 21, 27, 29, 28, 31, 23, 24, 25, + 25, 22, 19, 24, 28, 21, 21, 31, 32, 22, 25, 34, 34, 31, 25, 26, + 34, 36, 27, 24, 27, 21, 27, 29, 28, 31, 36, 36, 31, 25, 25, 27, + 33, 38, 37, 30, 21, 26, 18, 17, 26, 31, 27, 25, 26, 20, 29, 41, + 50, 57, 62, 58, 52, 69, 63, 56, 47, 40, 38, 38, 40, 33, 51, 46, + 48, 42, 32, 31, 13, 22, 29, 108, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 58, 54, 53, 64, 70, 65, 52, 56, + 53, 43, 32, 44, 64, 65, 48, 45, 46, 33, 21, 26, 25, 20, 21, 18, + 20, 24, 24, 23, 23, 27, 28, 30, 25, 27, 23, 15, 22, 38, 39, 40, + 36, 37, 40, 39, 33, 31, 28, 28, 32, 32, 28, 28, 33, 35, 32, 28, + 25, 24, 27, 32, 36, 34, 29, 19, 15, 17, 25, 26, 21, 16, 16, 30, + 40, 51, 50, 51, 52, 55, 55, 59, 57, 52, 44, 35, 32, 34, 35, 29, + 49, 49, 48, 39, 28, 32, 20, 13, 16, 19, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 56, 59, 58, 60, 61, 62, + 57, 50, 46, 39, 31, 41, 56, 56, 43, 44, 47, 37, 29, 34, 32, 25, + 22, 20, 22, 23, 25, 26, 26, 28, 29, 36, 28, 29, 23, 17, 28, 41, + 37, 40, 40, 39, 35, 34, 34, 33, 28, 38, 38, 36, 30, 28, 31, 33, + 33, 33, 27, 21, 20, 24, 30, 34, 35, 28, 25, 24, 27, 23, 19, 18, + 21, 39, 47, 55, 48, 43, 43, 50, 54, 50, 52, 49, 42, 34, 30, 32, + 33, 41, 53, 47, 46, 42, 34, 36, 19, 13, 14, 16, 94, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 53, 56, 62, 63, 63, + 62, 60, 57, 33, 45, 52, 46, 37, 37, 41, 42, 31, 41, 38, 33, 38, + 36, 29, 32, 28, 28, 25, 22, 25, 31, 33, 33, 37, 39, 43, 38, 34, + 44, 49, 38, 36, 40, 37, 31, 31, 39, 39, 31, 41, 41, 41, 38, 36, + 35, 36, 35, 40, 32, 25, 21, 25, 30, 37, 39, 46, 43, 40, 33, 27, + 22, 24, 28, 36, 45, 49, 42, 37, 37, 43, 45, 41, 46, 49, 43, 37, + 33, 36, 39, 49, 49, 34, 37, 49, 48, 46, 22, 21, 22, 24, 18, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 71, 56, 50, + 59, 77, 77, 59, 40, 32, 45, 55, 48, 36, 30, 37, 46, 26, 41, 42, + 35, 33, 27, 24, 30, 33, 31, 24, 20, 25, 39, 46, 45, 49, 55, 62, + 52, 45, 56, 62, 51, 44, 46, 41, 32, 33, 42, 44, 39, 39, 37, 42, + 44, 46, 40, 36, 31, 40, 35, 33, 30, 35, 39, 46, 49, 57, 59, 61, + 54, 46, 38, 30, 28, 37, 41, 44, 39, 39, 38, 36, 34, 36, 39, 44, + 43, 40, 36, 38, 41, 36, 43, 33, 38, 50, 54, 60, 44, 27, 31, 30, + 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 71, + 59, 59, 66, 73, 67, 55, 45, 48, 42, 38, 36, 38, 40, 44, 48, 36, + 50, 51, 39, 31, 23, 19, 25, 36, 33, 23, 17, 29, 49, 61, 60, 63, + 73, 77, 56, 41, 58, 76, 72, 60, 55, 46, 39, 37, 41, 43, 41, 38, + 35, 41, 48, 55, 46, 36, 27, 36, 35, 38, 40, 46, 49, 55, 57, 62, + 74, 86, 86, 79, 62, 44, 29, 38, 42, 46, 44, 44, 41, 35, 28, 32, + 35, 36, 38, 38, 38, 38, 37, 35, 56, 55, 53, 49, 47, 65, 60, 34, + 34, 32, 24, 95, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, + 71, 62, 68, 81, 81, 67, 52, 54, 64, 58, 41, 30, 32, 41, 44, 43, + 44, 47, 55, 51, 40, 36, 32, 27, 31, 43, 39, 29, 23, 35, 56, 67, + 62, 65, 83, 87, 56, 34, 54, 82, 86, 77, 66, 53, 48, 44, 41, 43, + 47, 48, 40, 44, 54, 64, 55, 41, 28, 32, 33, 39, 41, 46, 47, 51, + 53, 65, 80, 95, 100, 96, 80, 56, 33, 32, 42, 50, 49, 48, 43, 40, + 34, 36, 35, 35, 36, 39, 37, 35, 33, 42, 61, 58, 53, 48, 44, 60, + 53, 37, 31, 28, 23, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 100, 77, 71, 71, 80, 83, 74, 62, 60, 66, 56, 42, 36, 41, 44, + 40, 37, 36, 40, 45, 38, 31, 39, 40, 36, 37, 49, 43, 35, 27, 38, + 59, 65, 58, 60, 85, 92, 59, 30, 50, 80, 85, 90, 76, 62, 58, 53, + 49, 51, 59, 59, 47, 48, 59, 71, 62, 46, 31, 31, 31, 36, 36, 39, + 37, 40, 41, 61, 73, 85, 88, 88, 77, 56, 35, 21, 37, 50, 51, 47, + 44, 44, 45, 39, 38, 35, 36, 39, 40, 34, 29, 30, 38, 28, 34, 44, + 50, 57, 38, 34, 23, 16, 16, 22, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 199, 86, 86, 82, 74, 67, 65, 72, 77, 66, 51, 50, 45, 42, + 40, 34, 27, 24, 26, 32, 33, 34, 33, 39, 45, 45, 39, 45, 46, 55, + 63, 66, 68, 72, 78, 86, 83, 86, 90, 72, 44, 57, 104, 108, 99, 86, + 77, 69, 62, 56, 51, 49, 51, 56, 64, 81, 87, 70, 45, 38, 36, 42, + 41, 40, 26, 16, 35, 53, 80, 84, 70, 73, 75, 56, 35, 18, 22, 44, + 44, 23, 38, 52, 31, 34, 33, 32, 32, 34, 34, 31, 29, 24, 24, 30, + 34, 35, 36, 45, 53, 48, 44, 36, 24, 20, 100, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 94, 88, 82, 76, 85, 94, 89, 77, 63, 46, 33, 50, + 40, 31, 31, 33, 29, 25, 21, 28, 37, 41, 40, 40, 45, 52, 53, 44, + 48, 60, 71, 76, 77, 82, 89, 97, 96, 102, 108, 92, 62, 70, 114, 111, + 109, 110, 103, 82, 56, 46, 48, 56, 50, 48, 59, 82, 94, 76, 49, 39, + 41, 42, 44, 52, 47, 34, 41, 56, 65, 70, 66, 69, 72, 57, 32, 30, + 19, 29, 36, 18, 9, 21, 26, 26, 26, 28, 25, 26, 25, 26, 26, 40, + 37, 38, 39, 38, 38, 46, 54, 49, 46, 42, 40, 45, 48, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 94, 81, 72, 66, 73, 77, 68, 55, 47, 43, + 42, 51, 36, 26, 30, 40, 42, 37, 32, 45, 49, 49, 46, 48, 53, 50, + 46, 57, 59, 72, 85, 92, 94, 98, 103, 107, 109, 115, 122, 110, 79, 78, + 112, 118, 119, 126, 123, 102, 69, 48, 39, 42, 44, 48, 60, 81, 92, 77, + 53, 38, 45, 44, 46, 53, 44, 29, 23, 33, 35, 62, 85, 87, 83, 64, + 29, 26, 24, 33, 42, 32, 16, 15, 24, 23, 23, 23, 21, 22, 24, 27, + 30, 29, 28, 33, 39, 42, 44, 52, 57, 54, 52, 52, 58, 68, 69, 255, + 255, 255, 255, 255, 255, 255, 255, 99, 87, 75, 63, 61, 53, 47, 43, 45, + 50, 54, 56, 46, 34, 28, 36, 48, 52, 50, 46, 45, 56, 64, 60, 54, + 55, 61, 65, 79, 76, 80, 91, 104, 105, 108, 109, 113, 116, 123, 131, 121, + 89, 79, 100, 118, 121, 122, 117, 110, 92, 61, 28, 18, 30, 45, 57, 73, + 81, 74, 57, 36, 43, 42, 56, 65, 43, 27, 18, 18, 18, 61, 98, 90, + 78, 64, 33, 22, 40, 42, 30, 25, 20, 14, 16, 25, 22, 19, 20, 28, + 34, 37, 39, 15, 16, 26, 38, 44, 43, 45, 45, 44, 45, 51, 62, 74, + 74, 255, 255, 255, 255, 255, 255, 255, 255, 100, 85, 71, 57, 52, 52, 57, + 62, 62, 58, 52, 49, 34, 30, 30, 37, 44, 45, 45, 46, 28, 49, 65, + 59, 50, 59, 88, 113, 94, 83, 81, 91, 107, 112, 113, 111, 122, 125, 131, + 137, 129, 99, 79, 88, 111, 127, 126, 107, 104, 106, 81, 38, 19, 20, 27, + 40, 68, 87, 87, 71, 50, 39, 28, 67, 100, 75, 56, 38, 22, 16, 52, + 80, 64, 56, 61, 51, 55, 62, 52, 30, 20, 16, 16, 22, 28, 21, 14, + 17, 28, 36, 36, 35, 29, 25, 26, 32, 35, 31, 29, 27, 27, 34, 44, + 56, 68, 70, 255, 255, 255, 255, 255, 255, 255, 206, 94, 74, 60, 51, 39, + 48, 61, 63, 51, 38, 37, 43, 32, 30, 32, 36, 36, 34, 36, 40, 37, + 34, 33, 35, 55, 81, 101, 108, 90, 81, 81, 94, 108, 115, 116, 117, 129, + 131, 132, 136, 134, 107, 81, 78, 110, 139, 145, 119, 107, 114, 103, 73, 50, + 29, 11, 24, 70, 109, 110, 91, 76, 49, 9, 55, 107, 95, 74, 38, 11, + 10, 40, 68, 66, 63, 73, 71, 59, 49, 52, 59, 42, 14, 7, 21, 25, + 18, 10, 13, 21, 26, 27, 23, 47, 36, 28, 28, 31, 30, 32, 30, 30, + 38, 47, 53, 59, 60, 255, 255, 255, 255, 255, 255, 255, 103, 81, 62, 56, + 54, 41, 40, 43, 40, 30, 22, 28, 40, 34, 30, 29, 31, 30, 30, 36, + 43, 51, 34, 25, 38, 75, 99, 94, 76, 84, 85, 95, 105, 112, 115, 120, + 126, 130, 131, 129, 133, 135, 111, 82, 74, 106, 129, 139, 126, 117, 118, 113, + 99, 80, 53, 27, 34, 77, 117, 121, 103, 97, 78, 18, 36, 78, 82, 77, + 37, 7, 6, 25, 58, 81, 89, 88, 83, 39, 25, 44, 63, 38, 8, 3, + 4, 16, 14, 11, 12, 15, 18, 22, 23, 40, 30, 25, 29, 37, 39, 38, + 38, 38, 43, 49, 53, 58, 60, 255, 255, 255, 255, 255, 255, 255, 98, 71, + 57, 59, 69, 57, 44, 36, 37, 37, 29, 26, 24, 31, 23, 19, 20, 24, + 27, 38, 44, 32, 42, 58, 75, 91, 99, 91, 80, 82, 93, 111, 120, 119, + 116, 123, 135, 137, 138, 134, 138, 141, 120, 92, 81, 98, 103, 111, 118, 121, + 117, 108, 97, 91, 74, 55, 54, 79, 108, 114, 104, 102, 105, 42, 29, 50, + 66, 87, 54, 28, 16, 9, 30, 73, 93, 88, 84, 68, 54, 62, 56, 22, + 18, 27, 13, 4, 11, 15, 15, 14, 16, 26, 33, 29, 24, 26, 35, 44, + 44, 36, 28, 30, 34, 40, 50, 63, 70, 130, 255, 255, 255, 255, 255, 204, + 91, 61, 48, 61, 42, 34, 41, 35, 38, 54, 44, 27, 29, 30, 29, 29, + 24, 23, 23, 28, 24, 31, 58, 88, 98, 93, 93, 104, 113, 108, 108, 113, + 116, 122, 128, 132, 136, 135, 140, 143, 146, 145, 131, 108, 83, 100, 105, 110, + 114, 115, 112, 112, 108, 104, 93, 80, 74, 78, 88, 97, 102, 117, 100, 67, + 37, 28, 41, 60, 69, 62, 55, 57, 65, 68, 69, 78, 93, 113, 91, 68, + 58, 54, 45, 21, 3, 11, 10, 9, 12, 18, 23, 24, 22, 16, 23, 29, + 35, 39, 40, 37, 29, 29, 30, 30, 33, 51, 70, 73, 255, 255, 255, 255, + 255, 101, 94, 66, 49, 61, 55, 37, 40, 40, 43, 48, 43, 33, 33, 41, + 37, 31, 27, 24, 25, 26, 24, 53, 73, 95, 102, 99, 104, 113, 121, 122, + 124, 125, 129, 133, 134, 136, 139, 138, 141, 142, 144, 145, 138, 118, 99, 104, + 107, 112, 113, 113, 110, 106, 104, 106, 100, 92, 86, 85, 91, 99, 106, 116, + 104, 80, 52, 31, 30, 43, 59, 86, 88, 87, 83, 82, 85, 90, 92, 92, + 84, 75, 69, 65, 51, 28, 13, 18, 12, 12, 14, 20, 19, 16, 16, 18, + 22, 28, 32, 36, 38, 37, 33, 35, 34, 28, 28, 48, 68, 64, 255, 255, + 255, 255, 255, 104, 93, 71, 43, 47, 53, 38, 37, 46, 50, 42, 41, 42, + 36, 38, 33, 26, 24, 27, 33, 39, 41, 73, 84, 98, 104, 107, 116, 124, + 128, 129, 131, 134, 134, 135, 134, 133, 134, 139, 140, 140, 141, 145, 144, 131, + 118, 114, 114, 117, 118, 117, 113, 107, 104, 109, 109, 108, 103, 99, 101, 108, + 115, 116, 111, 98, 78, 49, 33, 44, 66, 103, 112, 110, 97, 93, 97, 95, + 85, 79, 83, 89, 88, 79, 62, 43, 32, 31, 22, 20, 24, 28, 21, 15, + 15, 21, 21, 25, 29, 33, 36, 36, 32, 34, 34, 27, 26, 52, 78, 68, + 255, 255, 255, 255, 211, 102, 88, 72, 40, 37, 46, 35, 33, 50, 54, 38, + 40, 47, 36, 30, 27, 24, 24, 27, 34, 49, 60, 76, 83, 92, 101, 112, + 125, 132, 131, 133, 132, 135, 137, 136, 132, 129, 129, 139, 140, 139, 140, 145, + 147, 140, 129, 124, 124, 123, 124, 123, 120, 113, 110, 113, 113, 115, 115, 114, + 114, 117, 120, 120, 114, 112, 101, 77, 58, 66, 89, 107, 113, 113, 106, 103, + 102, 97, 89, 92, 96, 102, 100, 92, 78, 64, 55, 49, 39, 37, 41, 44, + 34, 23, 19, 21, 21, 24, 30, 36, 34, 31, 30, 29, 34, 29, 26, 50, + 77, 68, 255, 255, 255, 255, 115, 94, 79, 69, 46, 43, 46, 29, 30, 46, + 50, 37, 41, 46, 33, 32, 32, 31, 30, 27, 31, 50, 69, 79, 84, 94, + 105, 120, 131, 136, 132, 136, 138, 141, 141, 141, 139, 136, 134, 138, 142, 142, + 143, 147, 147, 141, 132, 131, 129, 128, 129, 128, 127, 123, 117, 116, 117, 119, + 121, 126, 128, 126, 122, 125, 116, 115, 116, 104, 91, 97, 113, 116, 111, 112, + 118, 118, 109, 104, 105, 110, 108, 103, 99, 97, 91, 86, 83, 75, 68, 64, + 63, 63, 52, 35, 25, 19, 19, 25, 34, 40, 32, 27, 25, 28, 35, 33, + 26, 38, 58, 52, 255, 255, 255, 255, 119, 97, 74, 59, 47, 50, 40, 30, + 32, 39, 39, 37, 45, 45, 34, 31, 29, 32, 34, 33, 38, 60, 83, 90, + 96, 106, 115, 126, 137, 138, 135, 137, 138, 141, 142, 143, 140, 141, 140, 140, + 142, 142, 142, 145, 147, 142, 133, 137, 133, 130, 131, 133, 131, 128, 124, 124, + 121, 123, 129, 136, 136, 132, 127, 132, 123, 119, 119, 118, 114, 116, 124, 124, + 113, 114, 124, 124, 113, 109, 114, 117, 111, 103, 100, 103, 104, 104, 104, 101, + 102, 95, 84, 81, 73, 51, 30, 20, 19, 27, 39, 42, 32, 24, 22, 22, + 30, 32, 28, 36, 49, 49, 255, 255, 255, 206, 121, 103, 70, 40, 39, 53, + 31, 36, 39, 30, 24, 36, 48, 45, 40, 31, 25, 26, 31, 36, 44, 65, + 86, 96, 104, 114, 120, 126, 134, 140, 141, 137, 136, 140, 140, 141, 140, 141, + 141, 143, 146, 144, 142, 144, 146, 144, 139, 146, 140, 136, 136, 139, 138, 135, + 129, 131, 132, 135, 137, 139, 139, 138, 134, 134, 128, 124, 124, 127, 129, 129, + 125, 123, 116, 116, 119, 121, 119, 117, 117, 114, 113, 111, 111, 114, 114, 114, + 114, 115, 122, 116, 100, 97, 95, 72, 42, 24, 19, 26, 38, 41, 30, 23, + 24, 20, 21, 23, 27, 38, 47, 49, 255, 255, 255, 95, 110, 100, 65, 28, + 37, 63, 36, 41, 45, 24, 13, 36, 51, 46, 44, 42, 30, 22, 29, 37, + 43, 57, 71, 95, 104, 114, 117, 120, 129, 138, 143, 140, 141, 141, 142, 143, + 145, 145, 146, 147, 147, 143, 140, 142, 147, 148, 143, 154, 149, 144, 141, 143, + 143, 139, 134, 138, 140, 145, 145, 142, 138, 139, 141, 135, 133, 130, 126, 130, + 136, 135, 129, 119, 122, 121, 112, 118, 127, 129, 118, 113, 117, 125, 127, 124, + 120, 117, 116, 118, 131, 126, 108, 106, 110, 87, 51, 26, 22, 26, 36, 38, + 27, 23, 25, 24, 19, 17, 24, 33, 37, 37, 255, 255, 255, 73, 96, 90, + 49, 31, 51, 65, 57, 39, 26, 20, 26, 34, 38, 40, 45, 39, 27, 25, + 34, 40, 46, 60, 76, 97, 109, 121, 128, 133, 140, 144, 144, 140, 141, 144, + 146, 146, 145, 144, 145, 144, 150, 154, 153, 153, 155, 155, 151, 153, 151, 148, + 146, 148, 150, 147, 138, 134, 142, 145, 141, 144, 150, 151, 143, 132, 133, 135, + 133, 133, 132, 132, 133, 129, 130, 132, 129, 126, 123, 127, 129, 125, 122, 122, + 125, 128, 130, 128, 125, 129, 122, 120, 114, 103, 98, 88, 71, 51, 8, 12, + 40, 31, 23, 30, 23, 18, 18, 22, 26, 33, 39, 38, 255, 255, 191, 76, + 90, 84, 53, 39, 53, 66, 62, 36, 23, 13, 16, 25, 29, 35, 41, 39, + 31, 24, 23, 27, 41, 63, 79, 101, 108, 116, 121, 128, 138, 145, 147, 146, + 145, 146, 145, 145, 145, 147, 148, 150, 152, 155, 156, 155, 152, 150, 148, 150, + 153, 153, 148, 148, 151, 149, 146, 142, 145, 147, 146, 148, 151, 151, 146, 145, + 141, 137, 133, 132, 132, 136, 140, 135, 134, 134, 134, 135, 135, 135, 134, 130, + 128, 126, 126, 133, 135, 137, 136, 129, 122, 119, 112, 99, 94, 88, 73, 54, + 15, 16, 38, 28, 20, 28, 24, 20, 19, 19, 20, 29, 40, 45, 255, 255, + 56, 68, 74, 68, 47, 39, 47, 56, 55, 40, 27, 16, 18, 26, 31, 31, + 28, 32, 32, 24, 17, 23, 44, 70, 86, 101, 108, 116, 121, 128, 136, 143, + 144, 148, 148, 149, 149, 148, 148, 149, 149, 150, 147, 151, 157, 159, 152, 150, + 153, 148, 151, 153, 150, 150, 153, 153, 149, 151, 149, 150, 154, 154, 150, 148, + 148, 150, 147, 142, 135, 134, 136, 138, 141, 140, 139, 137, 140, 144, 145, 140, + 136, 145, 141, 137, 133, 137, 138, 140, 139, 131, 125, 121, 111, 96, 92, 90, + 79, 56, 23, 23, 37, 26, 18, 26, 25, 16, 16, 14, 14, 22, 32, 37, + 255, 255, 42, 57, 55, 51, 45, 40, 39, 40, 38, 37, 30, 24, 28, 35, + 33, 21, 12, 20, 29, 29, 24, 31, 56, 81, 93, 102, 111, 121, 127, 132, + 137, 139, 135, 144, 147, 149, 151, 152, 149, 145, 142, 150, 142, 144, 156, 156, + 145, 142, 149, 145, 147, 148, 145, 148, 153, 153, 150, 155, 148, 149, 157, 157, + 150, 148, 152, 147, 144, 144, 144, 143, 138, 134, 133, 145, 145, 144, 144, 145, + 143, 139, 136, 145, 142, 139, 137, 137, 137, 139, 139, 135, 128, 125, 112, 96, + 93, 95, 87, 54, 28, 27, 37, 29, 21, 26, 26, 12, 16, 18, 20, 24, + 28, 27, 255, 255, 36, 51, 48, 48, 48, 45, 39, 33, 29, 26, 21, 19, + 22, 28, 27, 15, 4, 15, 25, 30, 28, 36, 62, 88, 101, 110, 116, 122, + 126, 134, 142, 145, 143, 152, 150, 146, 142, 139, 136, 134, 133, 147, 136, 132, + 142, 142, 130, 124, 130, 141, 138, 136, 137, 146, 155, 155, 148, 150, 146, 149, + 158, 159, 150, 149, 153, 147, 146, 144, 142, 141, 138, 132, 129, 147, 151, 151, + 148, 141, 137, 136, 135, 132, 131, 133, 136, 138, 139, 142, 143, 135, 129, 126, + 113, 98, 95, 95, 88, 49, 34, 31, 34, 31, 24, 25, 25, 16, 19, 24, + 24, 26, 29, 29, 255, 255, 44, 44, 43, 43, 45, 43, 36, 27, 23, 21, + 18, 13, 12, 17, 23, 20, 15, 19, 23, 25, 28, 40, 66, 94, 112, 122, + 122, 120, 120, 130, 144, 153, 155, 159, 149, 133, 117, 110, 108, 112, 115, 113, + 105, 102, 111, 115, 113, 112, 114, 123, 122, 120, 122, 132, 146, 151, 150, 146, + 144, 148, 154, 156, 153, 150, 151, 152, 146, 137, 132, 128, 127, 124, 124, 133, + 137, 139, 134, 128, 124, 126, 128, 133, 133, 136, 138, 138, 137, 138, 139, 135, + 126, 124, 115, 100, 97, 96, 86, 50, 39, 30, 30, 32, 28, 24, 22, 17, + 17, 18, 16, 18, 25, 31, 255, 44, 37, 34, 36, 37, 35, 31, 29, 25, + 22, 23, 23, 19, 14, 13, 20, 24, 21, 14, 14, 21, 35, 54, 77, 103, + 123, 129, 128, 125, 124, 133, 144, 151, 151, 146, 134, 117, 99, 90, 87, 89, + 93, 75, 72, 71, 76, 85, 90, 93, 94, 91, 96, 100, 102, 109, 126, 141, + 149, 142, 148, 150, 151, 153, 155, 151, 147, 148, 140, 128, 121, 117, 112, 106, + 102, 101, 102, 103, 101, 101, 102, 106, 108, 121, 121, 124, 123, 123, 125, 129, + 131, 138, 129, 126, 119, 109, 105, 101, 84, 56, 47, 29, 21, 28, 27, 21, + 21, 13, 14, 13, 10, 13, 19, 23, 255, 25, 12, 32, 34, 33, 28, 26, + 27, 28, 25, 23, 28, 28, 20, 18, 18, 18, 11, 3, 4, 20, 48, 72, + 92, 114, 131, 132, 133, 134, 135, 141, 144, 142, 135, 121, 116, 103, 90, 81, + 75, 72, 72, 63, 61, 58, 53, 59, 69, 68, 64, 64, 75, 84, 85, 89, + 105, 129, 145, 144, 151, 155, 152, 151, 156, 152, 143, 135, 130, 122, 116, 110, + 101, 87, 79, 69, 68, 65, 68, 74, 82, 86, 87, 84, 88, 93, 96, 103, + 113, 124, 130, 143, 135, 133, 127, 117, 115, 105, 87, 65, 53, 27, 14, 24, + 26, 20, 19, 13, 16, 20, 18, 19, 20, 20, 255, 36, 26, 27, 30, 39, + 32, 21, 25, 25, 17, 26, 19, 24, 29, 19, 14, 15, 11, 9, 9, 15, + 36, 72, 107, 127, 130, 134, 137, 129, 134, 143, 123, 102, 109, 105, 90, 74, + 70, 71, 69, 68, 70, 71, 76, 72, 61, 53, 36, 27, 36, 57, 65, 74, + 73, 72, 82, 110, 136, 140, 136, 146, 158, 155, 149, 142, 133, 124, 120, 118, + 115, 100, 82, 73, 77, 64, 57, 52, 53, 59, 63, 64, 65, 64, 50, 64, + 85, 90, 106, 125, 125, 135, 140, 141, 129, 117, 110, 102, 94, 71, 45, 19, + 12, 19, 22, 17, 10, 11, 13, 21, 23, 24, 23, 25, 255, 38, 34, 31, + 28, 31, 31, 25, 32, 32, 23, 24, 23, 27, 28, 17, 14, 17, 11, 14, + 12, 18, 40, 79, 114, 131, 129, 135, 133, 128, 125, 117, 95, 84, 92, 92, + 95, 99, 103, 105, 108, 112, 116, 109, 104, 84, 69, 72, 66, 48, 34, 37, + 43, 53, 64, 67, 76, 94, 117, 119, 132, 143, 148, 145, 136, 132, 129, 119, + 109, 99, 96, 98, 90, 74, 57, 53, 44, 34, 31, 34, 40, 48, 52, 47, + 39, 44, 53, 57, 69, 89, 99, 114, 119, 123, 117, 111, 109, 104, 97, 80, + 51, 19, 8, 12, 18, 19, 18, 19, 20, 23, 22, 24, 24, 106, 255, 35, + 36, 43, 30, 25, 25, 22, 26, 23, 9, 23, 29, 33, 23, 8, 10, 14, + 4, 0, 1, 15, 43, 82, 113, 123, 117, 129, 117, 120, 127, 122, 114, 110, + 106, 111, 114, 119, 121, 119, 115, 115, 118, 120, 112, 88, 68, 69, 82, 88, + 84, 92, 81, 75, 80, 78, 76, 85, 103, 104, 129, 136, 129, 129, 126, 129, + 136, 121, 117, 105, 87, 78, 75, 75, 71, 61, 54, 46, 42, 46, 57, 69, + 75, 83, 84, 77, 71, 69, 63, 67, 79, 89, 93, 100, 103, 107, 111, 110, + 105, 89, 58, 23, 8, 9, 14, 16, 14, 24, 21, 21, 17, 18, 22, 255, + 255, 48, 51, 57, 38, 30, 29, 26, 23, 18, 6, 21, 30, 34, 19, 3, + 7, 15, 5, 6, 25, 55, 84, 112, 132, 139, 134, 138, 123, 126, 128, 112, + 113, 128, 127, 129, 116, 110, 113, 106, 91, 89, 99, 100, 95, 99, 105, 107, + 101, 86, 64, 89, 75, 71, 85, 92, 91, 94, 108, 108, 138, 142, 132, 132, + 131, 123, 123, 119, 114, 107, 94, 79, 68, 71, 78, 66, 67, 66, 64, 66, + 73, 81, 83, 104, 116, 109, 101, 100, 80, 58, 61, 74, 75, 83, 94, 104, + 113, 114, 112, 100, 69, 33, 13, 10, 11, 12, 11, 19, 16, 15, 11, 14, + 19, 255, 195, 70, 67, 55, 35, 31, 36, 34, 31, 26, 19, 13, 23, 30, + 18, 7, 17, 32, 26, 57, 85, 117, 135, 144, 152, 165, 170, 151, 137, 138, + 128, 98, 96, 114, 118, 107, 97, 98, 106, 93, 73, 81, 109, 95, 72, 79, + 112, 131, 124, 97, 61, 63, 56, 62, 85, 99, 98, 94, 100, 124, 145, 150, + 144, 143, 140, 124, 109, 138, 117, 108, 114, 112, 90, 73, 67, 74, 84, 90, + 89, 86, 85, 81, 76, 87, 102, 102, 106, 118, 105, 78, 73, 70, 69, 75, + 85, 98, 106, 110, 111, 110, 76, 36, 12, 8, 11, 17, 18, 14, 14, 16, + 15, 20, 25, 255, 80, 71, 61, 48, 25, 25, 36, 35, 28, 20, 14, 9, + 14, 20, 16, 12, 29, 50, 50, 71, 93, 114, 118, 117, 124, 141, 152, 131, + 116, 122, 145, 164, 167, 144, 113, 91, 97, 106, 104, 82, 65, 78, 107, 91, + 77, 90, 106, 99, 96, 99, 88, 84, 74, 66, 70, 77, 84, 89, 97, 138, + 135, 138, 134, 129, 141, 150, 139, 151, 128, 110, 100, 88, 67, 59, 62, 74, + 89, 100, 98, 94, 92, 88, 81, 78, 85, 87, 96, 114, 118, 107, 98, 71, + 67, 70, 80, 90, 97, 104, 110, 111, 75, 30, 2, 0, 5, 18, 25, 15, + 16, 21, 23, 29, 34, 255, 82, 72, 63, 51, 23, 23, 44, 49, 42, 28, + 16, 20, 14, 14, 13, 12, 25, 45, 51, 46, 58, 72, 79, 88, 100, 112, + 117, 109, 95, 98, 147, 214, 225, 173, 119, 99, 108, 101, 78, 68, 77, 83, + 81, 62, 103, 159, 153, 93, 67, 75, 66, 79, 73, 60, 53, 60, 83, 106, + 119, 128, 120, 142, 147, 123, 134, 163, 158, 125, 119, 102, 72, 52, 52, 64, + 73, 67, 82, 86, 77, 67, 69, 70, 68, 67, 64, 65, 71, 79, 94, 101, + 93, 79, 75, 77, 84, 91, 97, 109, 120, 116, 79, 36, 9, 2, 5, 15, + 20, 12, 15, 21, 23, 28, 34, 255, 96, 94, 91, 62, 32, 32, 62, 81, + 76, 62, 47, 36, 19, 11, 9, 4, 12, 28, 35, 38, 46, 60, 80, 105, + 124, 127, 120, 116, 111, 100, 124, 175, 183, 146, 119, 105, 106, 76, 42, 61, + 108, 108, 70, 35, 103, 177, 160, 95, 87, 107, 94, 78, 87, 87, 81, 85, + 104, 117, 121, 105, 112, 169, 191, 142, 127, 144, 127, 108, 118, 111, 93, 100, + 125, 127, 105, 87, 95, 87, 65, 47, 48, 53, 53, 62, 53, 61, 65, 63, + 80, 100, 88, 89, 86, 87, 93, 98, 103, 119, 133, 125, 93, 57, 31, 20, + 17, 15, 16, 9, 10, 16, 17, 22, 29, 255, 94, 91, 84, 69, 33, 41, + 95, 127, 117, 92, 73, 70, 54, 22, 19, 21, 20, 36, 36, 40, 40, 56, + 87, 115, 127, 127, 127, 133, 123, 118, 118, 118, 117, 119, 122, 99, 82, 60, + 58, 85, 113, 106, 83, 62, 59, 79, 94, 98, 120, 140, 132, 111, 95, 97, + 99, 90, 105, 126, 126, 94, 122, 155, 170, 162, 142, 124, 114, 109, 109, 89, + 93, 81, 104, 105, 117, 114, 153, 168, 136, 92, 71, 58, 46, 58, 80, 87, + 76, 69, 65, 73, 88, 95, 106, 112, 107, 99, 99, 108, 114, 118, 132, 120, + 58, 45, 17, 11, 11, 1, 2, 10, 16, 24, 33, 255, 100, 97, 92, 67, + 31, 39, 92, 130, 129, 110, 89, 96, 90, 61, 52, 40, 28, 38, 34, 50, + 51, 65, 93, 118, 129, 128, 124, 128, 125, 127, 132, 129, 119, 109, 104, 93, + 85, 75, 78, 98, 116, 111, 96, 90, 69, 64, 78, 99, 129, 138, 119, 91, + 90, 98, 100, 93, 94, 100, 101, 109, 120, 136, 153, 163, 153, 135, 117, 110, + 105, 82, 83, 77, 99, 96, 101, 127, 165, 169, 124, 82, 75, 72, 56, 78, + 97, 103, 88, 76, 68, 73, 86, 103, 109, 109, 96, 86, 85, 91, 94, 110, + 125, 95, 45, 32, 11, 8, 4, 15, 14, 12, 13, 20, 37, 255, 111, 111, + 106, 65, 34, 37, 85, 119, 124, 108, 88, 116, 119, 97, 83, 63, 42, 45, + 37, 61, 63, 75, 100, 123, 133, 133, 127, 130, 128, 132, 137, 132, 117, 101, + 93, 91, 90, 92, 98, 106, 111, 109, 104, 110, 89, 78, 80, 92, 113, 119, + 105, 90, 102, 105, 104, 102, 93, 86, 90, 122, 126, 134, 145, 155, 151, 140, + 128, 123, 113, 93, 91, 91, 108, 104, 103, 124, 159, 157, 109, 74, 80, 81, + 67, 97, 114, 115, 98, 84, 71, 72, 85, 96, 96, 94, 87, 83, 86, 93, + 97, 96, 116, 63, 32, 16, 8, 11, 6, 10, 15, 14, 11, 19, 113, 255, + 114, 114, 110, 67, 38, 47, 90, 122, 128, 113, 92, 113, 121, 104, 93, 76, + 59, 57, 42, 61, 68, 83, 107, 128, 139, 139, 134, 137, 132, 130, 130, 125, + 115, 106, 104, 107, 105, 106, 111, 110, 106, 106, 109, 111, 116, 117, 106, 93, + 93, 102, 105, 107, 117, 107, 99, 105, 98, 90, 102, 126, 139, 150, 150, 140, + 133, 134, 140, 115, 108, 93, 86, 86, 95, 95, 94, 107, 134, 137, 108, 85, + 89, 91, 83, 103, 114, 109, 92, 86, 80, 79, 85, 85, 87, 88, 87, 91, + 99, 106, 108, 96, 121, 58, 33, 7, 3, 9, 8, 5, 22, 31, 29, 34, + 255, 255, 105, 102, 95, 70, 48, 64, 111, 144, 145, 131, 114, 110, 121, 104, + 94, 86, 75, 68, 43, 59, 72, 94, 114, 131, 140, 139, 136, 142, 132, 126, + 125, 123, 119, 118, 120, 128, 120, 115, 114, 112, 110, 111, 116, 111, 121, 121, + 110, 101, 98, 100, 106, 107, 112, 99, 92, 105, 106, 102, 115, 126, 143, 157, + 153, 138, 129, 132, 140, 118, 115, 108, 92, 87, 85, 89, 90, 104, 115, 121, + 116, 103, 98, 100, 105, 103, 106, 97, 86, 92, 92, 90, 92, 95, 98, 99, + 98, 100, 104, 105, 103, 112, 137, 80, 45, 7, 4, 9, 16, 37, 61, 73, + 65, 60, 255, 255, 93, 86, 78, 71, 50, 73, 126, 150, 139, 124, 114, 123, + 134, 117, 105, 97, 88, 73, 37, 54, 77, 104, 122, 133, 138, 137, 134, 140, + 132, 129, 131, 132, 129, 128, 130, 133, 125, 115, 110, 111, 114, 117, 117, 111, + 110, 97, 95, 112, 117, 107, 101, 105, 108, 105, 105, 113, 116, 117, 124, 128, + 135, 143, 148, 147, 141, 138, 135, 138, 139, 139, 113, 103, 91, 99, 102, 115, + 112, 113, 117, 110, 101, 103, 113, 104, 107, 97, 92, 101, 106, 100, 102, 104, + 107, 108, 105, 105, 107, 106, 103, 115, 132, 99, 47, 16, 19, 26, 52, 91, + 104, 109, 96, 81, 255, 255, 84, 73, 63, 67, 45, 72, 130, 144, 122, 107, + 107, 135, 150, 135, 120, 109, 97, 75, 35, 47, 78, 111, 128, 134, 137, 139, + 138, 136, 130, 129, 132, 133, 131, 129, 130, 126, 125, 118, 108, 109, 116, 117, + 111, 104, 118, 114, 110, 120, 117, 106, 108, 121, 122, 130, 130, 119, 120, 128, + 130, 125, 129, 136, 145, 152, 149, 142, 134, 136, 138, 142, 112, 104, 85, 98, + 100, 122, 120, 120, 121, 116, 109, 108, 111, 109, 118, 113, 109, 113, 110, 103, + 104, 106, 111, 113, 110, 109, 114, 116, 117, 113, 115, 107, 38, 25, 39, 48, + 88, 118, 120, 121, 112, 255, 255, 255, 255, 62, 50, 61, 41, 71, 135, 151, + 125, 114, 123, 134, 155, 144, 129, 116, 101, 77, 34, 36, 73, 114, 131, 135, + 137, 143, 144, 134, 128, 124, 126, 127, 125, 125, 128, 123, 131, 127, 114, 112, + 119, 117, 106, 99, 146, 168, 154, 133, 107, 104, 128, 141, 139, 151, 145, 116, + 113, 129, 130, 120, 130, 140, 150, 150, 147, 141, 139, 134, 135, 142, 113, 108, + 89, 103, 103, 123, 131, 134, 133, 129, 124, 117, 108, 113, 126, 129, 121, 117, + 109, 100, 101, 110, 115, 117, 112, 109, 114, 120, 124, 120, 109, 113, 28, 24, + 45, 51, 96, 116, 114, 116, 120, 255, 255, 255, 255, 64, 65, 56, 35, 72, + 129, 153, 134, 108, 125, 128, 144, 143, 150, 134, 96, 73, 46, 43, 75, 114, + 132, 137, 135, 137, 137, 127, 132, 131, 125, 126, 132, 135, 134, 136, 135, 128, + 119, 119, 122, 116, 109, 117, 155, 182, 165, 132, 116, 122, 130, 142, 145, 146, + 136, 121, 118, 128, 141, 135, 144, 151, 151, 149, 150, 149, 147, 137, 137, 132, + 123, 113, 108, 111, 115, 114, 116, 123, 128, 123, 116, 118, 123, 115, 120, 122, + 114, 107, 104, 104, 101, 107, 110, 111, 110, 108, 108, 112, 118, 118, 118, 106, + 26, 47, 54, 77, 83, 105, 119, 135, 128, 255, 255, 255, 255, 64, 71, 49, + 30, 66, 117, 147, 138, 110, 118, 129, 140, 137, 138, 123, 89, 70, 45, 55, + 78, 104, 122, 129, 134, 132, 128, 131, 134, 136, 131, 132, 137, 141, 140, 139, + 138, 134, 126, 128, 129, 124, 117, 126, 137, 137, 128, 127, 135, 141, 139, 137, + 141, 143, 138, 129, 128, 138, 147, 131, 137, 144, 145, 145, 147, 146, 143, 134, + 136, 135, 131, 122, 116, 113, 113, 106, 103, 105, 108, 110, 110, 120, 131, 111, + 117, 116, 111, 105, 107, 111, 110, 122, 120, 117, 116, 113, 113, 112, 111, 116, + 111, 106, 40, 63, 71, 95, 104, 118, 142, 161, 255, 255, 255, 255, 255, 61, + 72, 55, 35, 58, 97, 135, 147, 123, 120, 132, 139, 131, 131, 121, 95, 85, + 65, 78, 88, 100, 113, 124, 133, 130, 123, 133, 135, 138, 135, 136, 140, 144, + 144, 141, 140, 139, 134, 137, 137, 133, 127, 127, 125, 122, 123, 139, 153, 150, + 137, 130, 132, 135, 133, 132, 133, 138, 141, 128, 134, 140, 141, 140, 143, 142, + 139, 132, 132, 131, 129, 125, 121, 118, 116, 121, 114, 112, 111, 112, 114, 120, + 125, 114, 118, 117, 112, 111, 116, 123, 124, 131, 125, 119, 118, 119, 117, 114, + 109, 125, 109, 106, 59, 80, 82, 99, 111, 132, 151, 190, 255, 255, 255, 255, + 255, 59, 69, 62, 38, 44, 67, 114, 148, 135, 125, 137, 141, 130, 132, 129, + 116, 116, 103, 98, 102, 106, 114, 123, 133, 130, 123, 131, 131, 135, 135, 136, + 139, 143, 145, 142, 141, 142, 139, 141, 139, 134, 130, 131, 135, 137, 135, 139, + 143, 143, 138, 131, 131, 133, 132, 134, 133, 133, 131, 133, 139, 144, 144, 143, + 145, 143, 138, 137, 132, 125, 121, 120, 122, 125, 126, 129, 126, 128, 128, 130, + 125, 121, 119, 122, 126, 125, 122, 121, 126, 133, 132, 130, 127, 123, 122, 123, + 122, 120, 119, 124, 97, 94, 71, 94, 93, 100, 109, 144, 138, 255, 255, 255, + 255, 255, 255, 191, 67, 55, 33, 31, 44, 94, 141, 133, 119, 138, 140, 127, + 131, 134, 129, 137, 128, 109, 113, 114, 117, 122, 130, 129, 125, 129, 129, 134, + 136, 138, 140, 143, 147, 146, 145, 145, 143, 143, 138, 134, 132, 144, 146, 142, + 130, 124, 128, 138, 145, 136, 134, 134, 135, 138, 137, 134, 130, 141, 146, 146, + 146, 146, 147, 141, 135, 139, 134, 126, 122, 123, 126, 129, 129, 117, 119, 126, + 129, 134, 135, 131, 126, 130, 134, 136, 133, 132, 135, 137, 133, 135, 134, 134, + 131, 129, 127, 128, 130, 116, 82, 85, 85, 108, 110, 111, 117, 151, 127, 255, + 255, 255, 255, 255, 255, 255, 61, 49, 31, 30, 39, 86, 136, 130, 115, 137, + 136, 122, 127, 133, 131, 141, 133, 115, 118, 116, 116, 118, 126, 128, 127, 133, + 131, 137, 142, 145, 145, 148, 153, 154, 151, 151, 149, 148, 141, 138, 139, 142, + 143, 140, 137, 137, 137, 139, 140, 133, 130, 130, 131, 136, 137, 135, 132, 143, + 147, 147, 147, 148, 148, 141, 134, 136, 135, 134, 133, 131, 130, 130, 128, 119, + 122, 123, 123, 126, 131, 135, 135, 134, 138, 139, 137, 138, 140, 138, 134, 140, + 140, 139, 134, 126, 121, 122, 124, 119, 88, 100, 109, 117, 119, 116, 122, 145, + 255, 255, 255, 255, 255, 255, 255, 255, 187, 55, 36, 30, 33, 76, 128, 129, + 124, 139, 138, 124, 130, 137, 136, 146, 137, 122, 120, 114, 111, 115, 127, 131, + 130, 137, 134, 140, 148, 151, 150, 153, 160, 160, 155, 155, 154, 152, 144, 143, + 147, 138, 137, 141, 145, 148, 144, 138, 132, 128, 125, 124, 124, 128, 130, 134, + 134, 142, 144, 146, 146, 147, 149, 144, 137, 134, 136, 136, 133, 127, 124, 126, + 126, 131, 133, 131, 125, 122, 126, 132, 133, 137, 139, 141, 139, 143, 147, 147, + 142, 143, 141, 137, 131, 125, 120, 115, 114, 117, 99, 119, 129, 116, 116, 114, + 125, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 35, 22, 18, 59, + 116, 127, 132, 143, 143, 131, 138, 147, 146, 156, 147, 130, 123, 111, 107, 115, + 130, 135, 134, 138, 135, 142, 150, 154, 152, 155, 163, 161, 156, 155, 155, 153, + 146, 146, 152, 144, 140, 137, 132, 128, 126, 132, 138, 134, 130, 128, 126, 128, + 131, 135, 135, 139, 143, 145, 147, 149, 152, 148, 140, 137, 136, 132, 124, 115, + 116, 124, 129, 125, 131, 135, 127, 124, 127, 133, 133, 140, 141, 141, 139, 145, + 152, 156, 154, 149, 143, 136, 131, 129, 126, 118, 113, 101, 95, 126, 137, 113, + 114, 118, 135, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 28, 22, + 28, 38, 64, 108, 139, 147, 134, 138, 148, 146, 144, 150, 148, 132, 124, 113, + 110, 114, 124, 132, 136, 137, 138, 144, 147, 151, 155, 160, 164, 163, 163, 164, + 159, 155, 150, 147, 147, 136, 133, 128, 124, 127, 130, 131, 131, 124, 122, 125, + 130, 139, 141, 138, 134, 136, 145, 153, 151, 147, 146, 145, 143, 137, 137, 127, + 114, 109, 118, 127, 131, 126, 122, 120, 121, 125, 128, 130, 130, 138, 137, 139, + 140, 145, 150, 157, 160, 153, 147, 140, 137, 136, 132, 120, 113, 105, 107, 120, + 129, 122, 120, 125, 127, 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 38, 35, 26, 31, 57, 91, 116, 146, 138, 141, 149, 150, 147, 148, 145, 139, + 129, 117, 113, 116, 124, 128, 130, 135, 136, 143, 147, 152, 156, 161, 164, 160, + 161, 162, 156, 152, 146, 143, 142, 140, 135, 129, 124, 125, 125, 126, 124, 113, + 112, 115, 121, 131, 136, 136, 132, 143, 141, 142, 149, 157, 158, 150, 142, 143, + 138, 128, 117, 113, 116, 116, 112, 110, 110, 114, 118, 123, 125, 127, 128, 131, + 132, 137, 140, 143, 148, 149, 150, 149, 147, 142, 137, 131, 123, 114, 110, 105, + 106, 116, 125, 125, 130, 129, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 183, 31, 24, 30, 38, 70, 121, 139, 138, 141, 148, 153, 151, 147, + 141, 144, 133, 119, 115, 118, 124, 124, 122, 129, 131, 140, 145, 150, 154, 158, + 161, 159, 160, 160, 154, 149, 142, 138, 137, 133, 130, 127, 124, 123, 119, 116, + 113, 110, 110, 114, 121, 129, 131, 128, 125, 125, 119, 123, 139, 151, 149, 142, + 139, 137, 129, 116, 104, 103, 108, 109, 103, 99, 104, 113, 118, 119, 118, 120, + 121, 123, 126, 132, 136, 139, 141, 140, 140, 140, 141, 139, 133, 124, 116, 111, + 110, 105, 109, 119, 125, 131, 143, 134, 157, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 27, 38, 44, 19, 39, 117, 132, 140, 145, 150, 161, + 160, 151, 146, 141, 130, 117, 114, 118, 123, 121, 117, 125, 127, 136, 141, 146, + 148, 151, 152, 159, 159, 159, 152, 146, 138, 134, 132, 124, 123, 126, 129, 128, + 120, 115, 112, 110, 111, 115, 119, 121, 117, 109, 103, 93, 95, 110, 131, 136, + 127, 127, 137, 128, 117, 98, 86, 84, 90, 98, 100, 103, 108, 118, 118, 114, + 111, 114, 116, 120, 122, 126, 130, 133, 133, 132, 131, 132, 132, 131, 127, 123, + 118, 113, 111, 102, 113, 126, 129, 135, 145, 128, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 183, 50, 51, 13, 15, 78, 129, 149, 154, + 155, 169, 168, 156, 151, 135, 126, 114, 113, 116, 122, 120, 118, 125, 127, 135, + 139, 142, 143, 144, 146, 154, 154, 152, 144, 138, 131, 127, 126, 124, 121, 122, + 125, 125, 121, 122, 128, 116, 113, 110, 105, 103, 99, 95, 92, 89, 89, 105, + 126, 132, 122, 117, 125, 115, 107, 93, 82, 76, 79, 86, 96, 113, 117, 122, + 119, 114, 112, 114, 118, 118, 118, 119, 120, 124, 124, 126, 127, 133, 128, 123, + 121, 121, 117, 110, 106, 95, 116, 135, 135, 134, 137, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, 24, 23, 30, 59, 118, + 150, 155, 151, 166, 164, 150, 149, 134, 127, 118, 114, 115, 119, 121, 121, 126, + 127, 134, 136, 138, 139, 141, 143, 147, 145, 142, 132, 126, 120, 118, 118, 122, + 114, 110, 113, 114, 113, 123, 135, 133, 127, 116, 105, 102, 103, 107, 109, 105, + 95, 97, 114, 128, 124, 111, 104, 91, 91, 91, 92, 90, 90, 94, 103, 116, + 118, 119, 117, 115, 114, 118, 122, 117, 115, 114, 113, 114, 116, 119, 122, 130, + 125, 118, 116, 115, 110, 101, 93, 94, 115, 138, 139, 131, 128, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 35, 51, + 55, 100, 143, 151, 144, 161, 161, 149, 154, 142, 137, 127, 120, 115, 117, 120, + 123, 121, 122, 127, 130, 132, 134, 137, 140, 142, 139, 134, 123, 117, 113, 112, + 114, 113, 107, 107, 113, 113, 108, 115, 126, 136, 131, 125, 117, 113, 112, 118, + 119, 109, 99, 92, 99, 111, 116, 107, 97, 84, 84, 89, 98, 101, 101, 104, + 110, 117, 116, 116, 113, 114, 116, 117, 118, 112, 111, 107, 106, 107, 108, 112, + 114, 119, 117, 112, 109, 104, 99, 92, 86, 101, 115, 136, 142, 136, 173, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 184, 43, 33, 93, 143, 152, 147, 165, 170, 160, 168, 150, 146, 136, 126, 116, + 114, 120, 124, 115, 115, 120, 122, 124, 128, 132, 136, 141, 136, 128, 120, 112, + 110, 112, 113, 107, 108, 117, 130, 127, 116, 111, 117, 116, 120, 121, 120, 116, + 109, 104, 101, 100, 99, 96, 91, 93, 102, 106, 106, 105, 95, 93, 96, 101, + 100, 100, 103, 113, 112, 110, 111, 112, 113, 113, 110, 110, 107, 106, 104, 103, + 105, 105, 107, 107, 108, 108, 103, 97, 90, 88, 87, 110, 117, 136, 145, 145, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 182, 62, 124, 166, 162, 145, 152, 162, 163, 158, 156, 138, + 124, 122, 116, 112, 117, 110, 116, 118, 117, 116, 120, 126, 132, 127, 123, 111, + 102, 102, 106, 104, 97, 105, 106, 112, 120, 120, 114, 117, 125, 111, 116, 120, + 121, 116, 113, 112, 110, 111, 101, 102, 112, 114, 104, 95, 93, 89, 90, 94, + 96, 99, 101, 102, 103, 110, 108, 107, 106, 106, 109, 110, 110, 112, 109, 107, + 104, 101, 98, 95, 94, 98, 96, 98, 95, 89, 82, 87, 93, 112, 159, 139, + 161, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 52, 97, 144, 164, 161, 158, 163, 168, 157, + 155, 134, 114, 110, 109, 108, 111, 108, 115, 118, 119, 115, 118, 122, 127, 121, + 113, 98, 88, 88, 96, 94, 91, 99, 102, 106, 109, 111, 108, 114, 120, 121, + 121, 121, 119, 117, 119, 122, 124, 111, 105, 103, 108, 111, 107, 102, 99, 94, + 94, 95, 97, 99, 102, 105, 106, 102, 105, 109, 107, 105, 101, 103, 105, 107, + 104, 104, 100, 97, 94, 92, 92, 91, 91, 92, 88, 80, 75, 84, 95, 131, + 156, 145, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 116, 149, 159, 153, 157, + 171, 170, 168, 140, 111, 107, 111, 111, 112, 109, 114, 118, 120, 116, 116, 120, + 125, 120, 110, 93, 85, 87, 96, 99, 97, 106, 113, 116, 113, 116, 120, 128, + 130, 120, 120, 121, 121, 121, 124, 128, 130, 116, 114, 109, 106, 109, 114, 114, + 110, 108, 107, 106, 106, 108, 111, 114, 115, 101, 108, 115, 113, 108, 101, 102, + 104, 104, 101, 100, 96, 94, 91, 90, 90, 85, 89, 89, 83, 73, 70, 86, + 103, 142, 136, 141, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, + 132, 146, 168, 172, 168, 135, 104, 104, 116, 116, 114, 113, 115, 116, 117, 115, + 113, 120, 127, 121, 108, 93, 89, 94, 103, 106, 104, 100, 110, 114, 108, 112, + 120, 129, 127, 117, 120, 125, 129, 130, 131, 129, 126, 126, 125, 118, 108, 110, + 120, 124, 119, 117, 117, 116, 116, 116, 118, 119, 120, 110, 111, 117, 115, 111, + 108, 107, 105, 104, 101, 98, 95, 92, 90, 90, 91, 87, 90, 91, 84, 75, + 77, 95, 116, 153, 120, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 210, 136, 126, 120, 93, 76, 91, 114, 116, 115, 120, 117, 115, + 113, 110, 108, 119, 130, 122, 108, 95, 94, 99, 104, 101, 97, 96, 107, 112, + 107, 112, 120, 128, 126, 123, 125, 128, 132, 133, 133, 129, 125, 132, 132, 126, + 115, 116, 125, 129, 124, 119, 119, 118, 118, 117, 117, 116, 116, 116, 112, 109, + 109, 111, 110, 109, 106, 102, 98, 95, 91, 88, 86, 87, 88, 90, 93, 94, + 89, 83, 84, 101, 119, 157, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 188, 38, 46, 84, 114, 119, 120, 125, + 118, 113, 112, 107, 106, 117, 133, 129, 115, 103, 102, 107, 103, 95, 91, 98, + 103, 106, 103, 106, 111, 120, 122, 123, 120, 116, 115, 116, 119, 118, 119, 123, + 123, 122, 119, 119, 122, 123, 121, 120, 119, 117, 115, 113, 112, 112, 112, 118, + 109, 102, 101, 106, 108, 108, 101, 93, 91, 89, 86, 84, 86, 86, 90, 95, + 93, 93, 91, 87, 86, 95, 108, 121, 146, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 88, 119, 123, + 122, 126, 118, 113, 113, 107, 105, 114, 131, 135, 119, 105, 106, 111, 108, 99, + 92, 86, 82, 79, 76, 77, 77, 87, 97, 108, 104, 100, 99, 100, 102, 101, + 100, 99, 101, 107, 113, 114, 110, 107, 108, 117, 113, 107, 102, 99, 100, 103, + 103, 103, 97, 91, 89, 90, 90, 88, 86, 86, 85, 84, 83, 84, 88, 92, + 95, 102, 95, 91, 91, 90, 86, 85, 85, 140, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 93, + 120, 118, 118, 125, 117, 114, 115, 111, 104, 114, 129, 132, 113, 101, 104, 111, + 107, 100, 95, 89, 78, 70, 67, 65, 61, 74, 89, 95, 94, 95, 97, 99, + 98, 91, 86, 77, 78, 88, 103, 105, 95, 90, 94, 106, 99, 89, 81, 78, + 81, 87, 91, 80, 79, 76, 72, 68, 65, 64, 63, 82, 82, 81, 83, 86, + 92, 98, 104, 108, 97, 92, 91, 94, 86, 76, 131, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 95, 112, 119, 128, 124, 119, 123, 128, 116, 95, 97, 114, 125, 112, 108, + 113, 115, 109, 104, 109, 108, 88, 75, 74, 73, 64, 74, 90, 97, 115, 118, + 102, 98, 110, 108, 94, 95, 115, 123, 108, 96, 98, 101, 96, 117, 104, 88, + 78, 77, 81, 84, 85, 70, 67, 64, 57, 39, 28, 43, 64, 82, 80, 84, + 95, 100, 97, 95, 100, 110, 101, 97, 96, 97, 87, 75, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 100, 116, 121, 126, 117, 115, 120, 126, 114, 95, 96, 113, 123, + 114, 110, 116, 117, 113, 112, 119, 113, 99, 88, 86, 88, 86, 98, 110, 117, + 133, 135, 121, 118, 131, 130, 119, 129, 158, 168, 141, 110, 108, 125, 139, 143, + 131, 115, 105, 101, 100, 99, 98, 77, 71, 66, 58, 46, 41, 55, 78, 91, + 88, 90, 98, 101, 99, 98, 103, 105, 99, 96, 96, 93, 80, 127, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 108, 122, 119, 121, 113, 112, 117, 121, 113, 98, 96, + 107, 122, 117, 115, 120, 119, 115, 118, 126, 114, 108, 101, 95, 98, 103, 112, + 117, 124, 137, 140, 131, 132, 146, 148, 139, 146, 176, 189, 163, 132, 130, 152, + 171, 165, 155, 142, 131, 124, 120, 116, 113, 95, 84, 75, 69, 65, 67, 82, + 99, 101, 98, 97, 101, 105, 102, 103, 104, 99, 96, 95, 96, 92, 74, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 116, 126, 118, 116, 118, 115, 118, 124, 121, + 113, 108, 108, 121, 118, 122, 123, 120, 114, 115, 121, 115, 118, 114, 104, 105, + 110, 113, 108, 117, 126, 129, 126, 130, 144, 148, 144, 143, 162, 170, 158, 144, + 146, 155, 160, 166, 157, 144, 134, 127, 123, 120, 118, 106, 96, 85, 83, 85, + 88, 100, 111, 108, 106, 106, 106, 108, 104, 102, 100, 97, 95, 95, 97, 91, + 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 128, 115, 110, 125, 121, 120, + 126, 129, 128, 119, 110, 111, 113, 121, 123, 121, 115, 113, 115, 119, 126, 126, + 117, 116, 117, 114, 103, 115, 119, 120, 119, 123, 133, 135, 133, 143, 151, 153, + 145, 140, 143, 145, 143, 158, 149, 137, 125, 118, 116, 115, 116, 108, 98, 91, + 92, 97, 99, 104, 106, 107, 108, 110, 109, 109, 104, 99, 95, 100, 100, 98, + 93, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 127, 113, 107, 118, + 118, 117, 118, 121, 123, 116, 108, 103, 109, 115, 122, 122, 120, 116, 115, 116, + 123, 126, 121, 122, 122, 118, 109, 118, 117, 115, 115, 116, 118, 116, 114, 128, + 136, 138, 130, 124, 129, 140, 147, 148, 141, 130, 119, 111, 109, 110, 111, 109, + 104, 103, 104, 109, 110, 106, 100, 107, 109, 110, 106, 105, 104, 97, 91, 100, + 102, 100, 90, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 129, 113, + 107, 108, 118, 119, 114, 110, 112, 112, 108, 107, 110, 113, 118, 121, 123, 120, + 117, 116, 118, 121, 120, 123, 122, 123, 120, 122, 118, 115, 116, 116, 113, 107, + 105, 113, 119, 122, 119, 118, 124, 134, 141, 134, 130, 124, 116, 111, 108, 109, + 110, 112, 111, 113, 113, 118, 118, 111, 102, 109, 110, 107, 100, 99, 101, 98, + 93, 94, 102, 100, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, + 134, 115, 110, 109, 125, 131, 121, 111, 111, 116, 119, 116, 114, 114, 114, 120, + 123, 121, 117, 124, 121, 123, 124, 126, 125, 127, 130, 126, 121, 119, 121, 122, + 118, 111, 110, 116, 115, 115, 118, 124, 126, 121, 113, 117, 114, 115, 110, 107, + 106, 107, 108, 108, 108, 109, 113, 116, 116, 111, 102, 111, 111, 105, 97, 96, + 99, 99, 96, 86, 96, 98, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 145, 150, 137, 119, 116, 120, 124, 119, 112, 109, 116, 125, 112, 109, 112, + 117, 124, 125, 121, 115, 125, 127, 126, 125, 125, 126, 127, 128, 119, 123, 124, + 121, 115, 110, 111, 114, 120, 125, 127, 128, 124, 118, 112, 108, 101, 102, 108, + 110, 111, 111, 109, 105, 107, 106, 108, 113, 116, 116, 111, 109, 116, 109, 101, + 101, 102, 101, 93, 87, 93, 85, 74, 133, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 144, 152, 147, 134, 122, 111, 113, 117, 117, 116, 113, 110, 107, 109, + 107, 108, 113, 118, 120, 118, 118, 116, 119, 120, 122, 122, 123, 122, 122, 114, + 117, 117, 114, 109, 105, 107, 112, 123, 125, 125, 123, 122, 120, 118, 114, 111, + 111, 112, 110, 111, 111, 111, 110, 108, 106, 109, 112, 114, 111, 105, 99, 104, + 104, 105, 106, 104, 99, 93, 87, 86, 85, 72, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 148, 148, 138, 132, 130, 117, 111, 107, 110, 115, 113, 106, + 97, 106, 106, 107, 109, 111, 114, 115, 120, 118, 121, 123, 125, 124, 125, 124, + 124, 121, 123, 124, 120, 116, 115, 117, 121, 123, 123, 121, 120, 120, 119, 121, + 122, 122, 117, 114, 112, 111, 112, 114, 115, 116, 115, 114, 115, 118, 114, 106, + 99, 95, 98, 100, 96, 89, 81, 78, 76, 81, 86, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 133, 158, 157, 140, 126, 124, 125, 116, 104, 102, 106, + 110, 107, 104, 107, 108, 109, 108, 105, 108, 114, 121, 127, 129, 128, 127, 125, + 126, 125, 126, 131, 131, 132, 130, 126, 123, 122, 124, 121, 121, 118, 114, 114, + 115, 117, 117, 118, 117, 114, 110, 110, 112, 114, 113, 118, 113, 112, 112, 114, + 113, 109, 105, 103, 101, 97, 90, 82, 77, 75, 78, 76, 80, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 133, 169, 173, 149, 122, 108, 119, 111, 104, + 102, 103, 108, 110, 111, 109, 111, 112, 109, 105, 105, 112, 120, 127, 127, 124, + 122, 120, 122, 125, 126, 126, 129, 129, 129, 126, 121, 117, 114, 115, 114, 112, + 110, 109, 106, 105, 105, 110, 109, 109, 108, 108, 109, 110, 111, 115, 109, 105, + 100, 102, 105, 105, 104, 106, 102, 97, 92, 90, 87, 83, 83, 59, 59, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 91, 134, 157, 161, 149, 132, 119, 106, + 106, 106, 105, 107, 109, 110, 111, 109, 113, 114, 111, 108, 107, 111, 116, 124, + 124, 122, 121, 121, 125, 129, 132, 123, 125, 127, 125, 123, 119, 114, 111, 114, + 113, 112, 110, 106, 103, 100, 98, 105, 107, 107, 110, 112, 112, 112, 112, 123, + 115, 106, 102, 103, 103, 104, 103, 101, 97, 93, 89, 85, 79, 69, 65, 46, + 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 145, 150, 145, 145, 143, + 137, 116, 111, 108, 107, 108, 108, 108, 108, 104, 108, 111, 114, 111, 111, 112, + 114, 125, 125, 126, 127, 128, 130, 132, 133, 131, 130, 130, 128, 128, 127, 126, + 124, 121, 120, 118, 116, 113, 111, 108, 107, 112, 112, 114, 116, 116, 117, 117, + 119, 127, 122, 114, 109, 109, 110, 107, 105, 98, 95, 86, 78, 69, 67, 68, + 72, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 124, 165, 166, 153, + 149, 143, 130, 137, 126, 112, 105, 104, 107, 108, 107, 99, 103, 108, 113, 115, + 113, 113, 115, 125, 127, 129, 131, 131, 130, 127, 125, 135, 133, 130, 129, 131, + 132, 136, 135, 135, 131, 128, 125, 123, 122, 121, 121, 122, 120, 120, 121, 121, + 122, 123, 126, 123, 118, 114, 113, 114, 112, 109, 104, 100, 95, 87, 75, 71, + 80, 100, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 165, + 164, 154, 142, 136, 138, 139, 132, 122, 110, 101, 97, 96, 98, 95, 100, 103, + 100, 105, 114, 118, 115, 118, 122, 128, 132, 133, 133, 133, 133, 146, 144, 140, + 137, 136, 135, 139, 138, 134, 130, 125, 125, 126, 128, 127, 125, 124, 126, 123, + 122, 125, 131, 132, 129, 130, 129, 121, 109, 106, 109, 109, 104, 93, 106, 93, + 73, 76, 77, 79, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 130, 159, 154, 147, 143, 138, 136, 139, 135, 128, 116, 105, 99, 96, 97, 97, + 101, 103, 103, 107, 116, 121, 120, 121, 125, 129, 131, 132, 133, 134, 135, 146, + 144, 141, 139, 138, 139, 140, 141, 137, 133, 130, 129, 129, 128, 129, 128, 128, + 129, 127, 123, 127, 130, 132, 128, 126, 126, 120, 111, 108, 107, 107, 102, 93, + 99, 87, 68, 63, 66, 74, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 141, 162, 149, 146, 150, 146, 139, 138, 137, 133, 123, 110, 100, 97, + 98, 103, 104, 103, 101, 103, 109, 113, 113, 119, 122, 127, 129, 130, 132, 136, + 138, 142, 141, 141, 140, 139, 139, 139, 140, 138, 136, 136, 134, 132, 129, 130, + 131, 133, 132, 130, 125, 127, 129, 129, 125, 120, 122, 119, 114, 112, 111, 107, + 100, 86, 87, 92, 84, 74, 81, 97, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 156, 166, 148, 147, 155, 150, 139, 134, 138, 138, 131, 118, + 108, 104, 104, 104, 103, 100, 97, 98, 101, 105, 107, 110, 114, 122, 126, 128, + 129, 133, 135, 136, 136, 136, 136, 136, 136, 138, 137, 136, 137, 139, 135, 133, + 128, 129, 130, 134, 133, 130, 124, 127, 127, 128, 124, 113, 117, 120, 118, 118, + 114, 106, 96, 78, 77, 94, 98, 85, 96, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 163, 167, 144, 142, 151, 145, 135, 132, 135, 139, + 135, 126, 117, 113, 112, 101, 98, 98, 97, 98, 101, 106, 107, 96, 102, 112, + 119, 123, 124, 127, 128, 132, 132, 134, 134, 135, 135, 137, 135, 136, 137, 140, + 138, 135, 131, 131, 131, 132, 130, 128, 122, 124, 125, 126, 119, 109, 114, 119, + 117, 114, 107, 94, 84, 74, 66, 78, 83, 71, 81, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 165, 165, 148, 146, 148, 144, 137, 134, + 134, 137, 135, 131, 126, 121, 120, 109, 103, 100, 97, 93, 89, 89, 90, 89, + 93, 103, 110, 114, 116, 120, 121, 128, 128, 129, 129, 130, 131, 134, 135, 134, + 136, 139, 138, 136, 134, 132, 131, 127, 127, 124, 118, 118, 120, 118, 114, 107, + 109, 108, 102, 97, 91, 82, 74, 70, 60, 58, 59, 59, 130, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 160, 150, 151, 148, 146, + 146, 139, 135, 132, 132, 133, 131, 127, 123, 121, 113, 108, 103, 95, 85, 81, + 80, 88, 90, 94, 98, 103, 106, 113, 116, 121, 120, 121, 121, 124, 126, 128, + 130, 130, 131, 133, 134, 136, 134, 131, 126, 125, 125, 121, 114, 113, 114, 112, + 104, 104, 100, 93, 82, 80, 81, 81, 79, 84, 77, 67, 67, 78, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 146, 147, + 143, 143, 151, 141, 136, 131, 130, 134, 133, 131, 126, 125, 118, 114, 114, 109, + 100, 97, 98, 90, 90, 91, 91, 95, 100, 109, 114, 114, 113, 113, 112, 115, + 118, 122, 124, 124, 123, 125, 129, 133, 131, 128, 121, 126, 126, 121, 114, 109, + 110, 106, 100, 102, 95, 84, 72, 72, 82, 91, 96, 110, 110, 95, 94, 158, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, + 145, 143, 142, 141, 137, 136, 134, 132, 132, 131, 130, 128, 126, 124, 120, 114, + 113, 114, 109, 102, 93, 86, 83, 80, 78, 85, 96, 111, 121, 121, 113, 106, + 102, 107, 116, 123, 123, 121, 126, 127, 122, 122, 125, 129, 124, 127, 133, 125, + 103, 93, 99, 103, 96, 87, 73, 58, 66, 89, 97, 92, 99, 111, 108, 111, + 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 220, 146, 142, 138, 135, 130, 138, 136, 136, 136, 135, 134, 133, 133, 127, + 123, 117, 115, 114, 110, 105, 99, 92, 88, 84, 79, 80, 85, 91, 98, 106, + 104, 98, 98, 103, 108, 108, 108, 106, 114, 118, 114, 111, 114, 120, 121, 126, + 125, 115, 100, 94, 97, 97, 89, 69, 65, 57, 57, 77, 90, 94, 104, 102, + 103, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 218, 143, 139, 137, 132, 138, 137, 137, 137, 137, 137, 135, + 134, 127, 123, 118, 116, 115, 113, 110, 105, 102, 98, 93, 87, 84, 80, 78, + 80, 85, 84, 84, 91, 96, 97, 95, 95, 98, 108, 113, 108, 102, 104, 111, + 116, 117, 108, 96, 87, 83, 80, 75, 69, 70, 80, 77, 71, 79, 88, 90, + 96, 92, 97, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 218, 145, 143, 135, 134, 135, 134, 134, + 134, 134, 133, 128, 123, 119, 116, 114, 113, 113, 112, 110, 108, 106, 102, 98, + 93, 86, 82, 78, 75, 76, 81, 82, 78, 76, 74, 83, 88, 90, 87, 83, + 82, 86, 90, 88, 79, 72, 71, 70, 66, 65, 67, 81, 100, 101, 90, 93, + 95, 88, 85, 84, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 145, 133, 132, 133, + 133, 134, 135, 134, 133, 131, 126, 123, 119, 119, 118, 119, 119, 113, 112, 111, + 110, 108, 104, 96, 90, 89, 82, 78, 79, 73, 64, 59, 59, 61, 59, 57, + 58, 59, 60, 59, 60, 56, 54, 55, 60, 63, 65, 74, 84, 80, 96, 95, + 87, 97, 103, 96, 91, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 137, + 134, 135, 136, 137, 137, 138, 137, 134, 130, 128, 124, 123, 123, 124, 125, 116, + 114, 112, 112, 111, 107, 102, 95, 97, 89, 87, 88, 85, 77, 78, 81, 72, + 63, 62, 64, 70, 68, 68, 66, 60, 60, 62, 58, 61, 67, 81, 89, 90, + 96, 87, 80, 92, 102, 100, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 216, 136, 137, 137, 139, 139, 139, 138, 132, 129, 128, 125, 123, 123, 124, + 125, 120, 116, 112, 111, 113, 112, 107, 103, 97, 90, 92, 98, 98, 94, 99, + 106, 98, 89, 88, 88, 90, 83, 83, 84, 79, 77, 72, 58, 61, 73, 86, + 86, 98, 100, 90, 87, 97, 101, 100, 157, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 216, 138, 139, 139, 139, 139, 136, 127, 127, 125, 124, 121, + 120, 119, 122, 124, 119, 113, 113, 117, 119, 117, 114, 99, 92, 92, 97, 98, + 90, 92, 101, 103, 98, 95, 93, 85, 76, 74, 79, 81, 81, 69, 56, 63, + 85, 96, 93, 86, 92, 93, 99, 108, 154, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 216, 134, 133, 134, 138, 131, 127, 123, + 121, 121, 121, 120, 119, 116, 120, 123, 125, 124, 123, 122, 121, 107, 113, 113, + 105, 101, 102, 103, 100, 94, 100, 105, 101, 91, 83, 81, 82, 80, 79, 75, + 73, 80, 92, 94, 91, 86, 90, 93, 101, 157, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 128, 133, 137, 135, + 131, 128, 126, 126, 126, 124, 124, 122, 123, 127, 126, 125, 122, 122, 118, 114, + 120, 119, 110, 104, 106, 110, 111, 109, 108, 104, 97, 92, 91, 97, 103, 95, + 89, 77, 69, 74, 86, 92, 92, 97, 94, 91, 146, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, + 135, 134, 132, 130, 129, 129, 128, 126, 126, 128, 129, 131, 129, 127, 123, 122, + 118, 119, 122, 119, 111, 105, 107, 113, 116, 114, 109, 101, 95, 92, 95, 101, + 105, 93, 86, 76, 71, 78, 91, 98, 100, 103, 98, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 213, 127, 125, 124, 125, 126, 123, 123, 131, 131, 132, 130, 129, + 125, 123, 121, 123, 119, 117, 112, 111, 113, 114, 114, 113, 109, 104, 102, 101, + 99, 96, 92, 86, 82, 78, 80, 88, 96, 98, 99, 150, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 210, 122, 123, 122, 122, 130, 130, 132, + 130, 129, 127, 127, 124, 126, 120, 117, 119, 124, 125, 120, 115, 117, 114, 112, + 112, 112, 108, 100, 93, 93, 87, 82, 85, 90, 92, 91, 93, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 124, 125, 129, + 130, 130, 130, 130, 128, 128, 127, 125, 116, 113, 121, 128, 125, 119, 113, 119, + 116, 112, 111, 111, 110, 105, 101, 93, 84, 77, 80, 87, 91, 93, 152, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 214, 131, 130, 130, 130, 128, 129, 127, 121, 115, 116, 120, 123, 120, 116, + 118, 119, 117, 114, 112, 110, 107, 103, 100, 86, 78, 75, 83, 92, 95, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 213, 129, 127, 127, 125, 123, 120, 123, 124, 122, + 116, 121, 130, 120, 122, 121, 120, 114, 104, 95, 90, 82, 77, 81, 92, 151, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 119, 119, + 116, 115, 115, 117, 121, 123, 127, 123, 110, 98, 92, 84, 76, 136, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy13' of size 144x144x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy13[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 154, 181, 158, 190, + 187, 178, 114, 146, 197, 219, 224, 134, 108, 213, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 187, 140, 138, 154, 132, 145, 171, 185, 145, 133, 136, 147, 167, 150, 175, + 178, 155, 81, 73, 124, 171, 175, 92, 56, 55, 64, 111, 112, 158, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 121, 144, 148, 115, 131, 157, + 168, 187, 150, 155, 173, 139, 142, 167, 192, 153, 143, 134, 142, 147, 150, 178, + 208, 168, 88, 93, 120, 172, 192, 159, 185, 199, 205, 246, 252, 251, 246, 248, + 255, 255, 247, 246, 177, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 226, 179, 154, 179, 141, 147, 133, 110, 130, 158, + 173, 175, 127, 151, 157, 138, 141, 172, 202, 137, 137, 142, 130, 158, 152, 162, + 218, 224, 206, 224, 223, 241, 252, 254, 233, 249, 233, 245, 252, 255, 230, 255, + 246, 253, 207, 218, 216, 249, 196, 119, 240, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 230, 165, 159, 175, 143, 174, 186, 177, 146, 149, 118, 95, 120, 129, + 121, 113, 67, 85, 94, 76, 87, 128, 190, 203, 184, 126, 150, 168, 192, 213, + 221, 225, 222, 221, 251, 247, 248, 254, 247, 246, 252, 245, 225, 226, 255, 243, + 253, 240, 244, 228, 96, 80, 165, 216, 238, 210, 199, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 225, 172, 170, 165, 176, 183, 124, 136, 119, 132, 116, 104, 79, 100, 165, 193, + 209, 241, 237, 209, 242, 252, 246, 244, 233, 226, 138, 125, 179, 163, 148, 123, + 73, 77, 89, 105, 233, 251, 235, 237, 254, 242, 246, 220, 205, 255, 240, 233, + 235, 251, 225, 232, 222, 177, 72, 115, 100, 177, 193, 226, 214, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 128, + 121, 150, 165, 141, 124, 152, 124, 170, 159, 159, 164, 137, 131, 177, 229, 222, + 221, 247, 251, 255, 254, 243, 216, 247, 241, 236, 160, 131, 159, 126, 80, 48, + 28, 39, 48, 51, 175, 226, 222, 238, 253, 253, 240, 219, 221, 164, 236, 248, + 234, 234, 248, 243, 244, 212, 0, 77, 72, 109, 152, 158, 182, 193, 216, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 186, 185, 179, 120, + 129, 152, 152, 115, 102, 178, 175, 227, 241, 225, 242, 226, 215, 228, 217, 167, + 139, 128, 115, 105, 75, 76, 80, 206, 243, 229, 200, 128, 87, 73, 54, 54, + 77, 64, 45, 23, 20, 47, 62, 132, 179, 248, 230, 227, 246, 47, 136, 247, + 219, 227, 237, 231, 213, 236, 58, 90, 81, 59, 44, 33, 94, 161, 156, 170, + 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 160, 172, 161, 161, 175, 154, + 210, 228, 205, 221, 237, 201, 222, 235, 207, 230, 150, 191, 148, 99, 35, 3, + 13, 25, 36, 60, 44, 65, 56, 138, 116, 59, 47, 78, 43, 80, 100, 97, + 107, 74, 52, 80, 103, 196, 216, 252, 241, 214, 55, 54, 0, 76, 25, 17, + 96, 163, 218, 229, 241, 207, 62, 103, 148, 171, 151, 106, 67, 120, 111, 207, + 155, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 171, 165, 160, 147, 174, 206, 233, 237, + 222, 184, 155, 169, 161, 60, 147, 190, 186, 221, 79, 24, 45, 77, 86, 108, + 115, 90, 92, 57, 49, 58, 41, 71, 54, 64, 83, 67, 139, 220, 244, 238, + 241, 234, 223, 226, 240, 251, 229, 235, 251, 233, 65, 23, 104, 58, 84, 87, + 29, 22, 102, 122, 206, 222, 193, 218, 181, 184, 207, 195, 77, 2, 37, 123, + 159, 133, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 164, 175, 169, 170, 201, 238, 245, 214, 177, + 78, 68, 130, 192, 140, 154, 200, 181, 199, 156, 105, 68, 90, 106, 93, 102, + 99, 78, 112, 57, 49, 50, 62, 75, 63, 98, 83, 29, 187, 254, 244, 236, + 244, 249, 227, 246, 229, 237, 238, 246, 237, 185, 42, 41, 158, 237, 194, 181, + 74, 14, 26, 67, 97, 176, 200, 200, 191, 196, 186, 198, 111, 41, 17, 124, + 187, 161, 176, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 231, 168, 171, 176, 155, 240, 102, 70, 48, 33, + 156, 181, 192, 140, 162, 197, 180, 128, 123, 44, 67, 72, 108, 81, 96, 126, + 81, 82, 46, 74, 182, 187, 186, 237, 251, 246, 238, 216, 240, 243, 249, 239, + 242, 251, 225, 238, 246, 225, 247, 249, 234, 245, 210, 225, 251, 248, 249, 242, + 239, 205, 108, 1, 20, 10, 99, 182, 199, 168, 133, 166, 178, 132, 29, 161, + 190, 194, 191, 116, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 227, 183, 199, 174, 117, 83, 177, 46, 11, 197, 195, + 217, 186, 216, 203, 155, 83, 55, 34, 4, 23, 65, 69, 40, 65, 97, 110, + 63, 30, 181, 233, 224, 198, 237, 239, 252, 236, 237, 249, 238, 214, 221, 222, + 234, 232, 239, 232, 249, 232, 186, 167, 210, 238, 255, 255, 254, 232, 238, 240, + 241, 249, 235, 206, 17, 1, 7, 63, 102, 192, 168, 75, 79, 176, 119, 116, + 180, 196, 228, 205, 129, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 223, 165, 172, 146, 152, 195, 217, 231, 197, 192, 220, 220, + 136, 149, 101, 61, 47, 15, 6, 49, 65, 136, 167, 195, 212, 75, 66, 150, + 171, 210, 220, 137, 82, 186, 228, 251, 239, 234, 255, 249, 247, 244, 255, 255, + 247, 228, 255, 252, 207, 75, 65, 75, 72, 77, 77, 235, 255, 255, 255, 254, + 250, 250, 234, 232, 231, 192, 25, 72, 31, 28, 131, 177, 164, 144, 134, 134, + 182, 138, 100, 213, 225, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 231, 154, 189, 199, 171, 173, 215, 243, 244, 244, 210, 239, 207, + 48, 84, 70, 83, 23, 35, 45, 72, 98, 134, 219, 228, 205, 174, 30, 96, + 201, 180, 193, 106, 0, 207, 248, 233, 242, 247, 217, 253, 249, 248, 249, 243, + 230, 241, 226, 247, 179, 73, 79, 116, 119, 73, 100, 210, 249, 255, 246, 251, + 251, 243, 234, 248, 246, 204, 135, 104, 99, 29, 75, 150, 198, 129, 128, 155, + 182, 99, 45, 216, 221, 212, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 173, 191, 166, 169, 230, 218, 186, 232, 248, 219, 244, 110, 65, + 94, 89, 184, 229, 212, 199, 126, 60, 151, 155, 184, 175, 199, 199, 109, 32, + 31, 53, 30, 65, 85, 138, 233, 235, 251, 230, 252, 231, 227, 242, 246, 254, + 240, 244, 121, 72, 247, 229, 255, 255, 218, 253, 219, 228, 230, 238, 250, 255, + 247, 237, 255, 250, 242, 249, 223, 0, 87, 124, 28, 74, 140, 174, 159, 167, + 190, 70, 45, 179, 241, 219, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 175, 173, 159, 191, 204, 95, 21, 78, 181, 118, 57, 127, 234, + 234, 235, 217, 187, 212, 233, 210, 63, 127, 152, 196, 181, 180, 211, 199, 83, + 90, 115, 87, 79, 123, 60, 179, 242, 227, 248, 233, 249, 244, 243, 221, 237, + 250, 255, 131, 79, 249, 255, 236, 219, 216, 247, 240, 217, 220, 241, 245, 254, + 255, 243, 251, 244, 241, 234, 252, 52, 50, 102, 89, 18, 63, 46, 70, 153, + 203, 99, 38, 144, 223, 238, 230, 214, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 183, 149, 159, 181, 130, 48, 34, 68, 87, 65, 21, 167, 229, + 239, 195, 193, 82, 151, 237, 194, 13, 140, 162, 178, 184, 98, 162, 195, 114, + 56, 101, 117, 102, 114, 37, 86, 233, 227, 251, 234, 230, 234, 249, 242, 246, + 255, 175, 97, 136, 247, 255, 244, 255, 237, 255, 226, 204, 216, 241, 214, 210, + 251, 255, 255, 247, 255, 255, 246, 77, 40, 99, 94, 75, 115, 32, 50, 110, + 212, 177, 46, 157, 233, 201, 223, 204, 164, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 225, 171, 188, 153, 91, 86, 119, 110, 66, 84, 66, 120, 57, 78, + 48, 58, 94, 56, 59, 213, 177, 26, 185, 146, 165, 164, 84, 167, 193, 188, + 57, 131, 81, 115, 81, 103, 61, 27, 121, 210, 240, 247, 235, 242, 237, 245, + 255, 83, 50, 19, 116, 230, 200, 229, 212, 201, 204, 232, 226, 255, 243, 210, + 218, 227, 242, 248, 226, 231, 233, 94, 48, 91, 87, 90, 87, 108, 87, 21, + 223, 218, 16, 60, 215, 236, 132, 35, 222, 54, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 181, 190, 224, 106, 87, 89, 87, 75, 83, 82, 115, 114, 56, 55, + 79, 113, 113, 91, 107, 151, 86, 89, 204, 121, 165, 165, 84, 122, 176, 210, + 45, 47, 109, 106, 105, 118, 109, 94, 51, 42, 84, 161, 244, 236, 248, 237, + 247, 255, 232, 205, 54, 64, 89, 84, 104, 167, 221, 249, 252, 249, 255, 237, + 248, 255, 167, 145, 156, 125, 130, 53, 89, 81, 76, 77, 101, 74, 89, 34, + 218, 235, 29, 14, 147, 212, 55, 21, 190, 99, 139, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 136, 102, 112, 85, 73, 77, 55, 75, 67, 72, 66, 74, 61, 80, + 103, 129, 111, 113, 111, 102, 111, 51, 59, 144, 184, 178, 176, 186, 188, 188, + 111, 19, 11, 27, 21, 23, 113, 98, 90, 71, 65, 148, 253, 234, 245, 255, + 251, 249, 249, 249, 231, 209, 228, 245, 230, 253, 254, 242, 236, 248, 252, 255, + 241, 248, 74, 59, 80, 83, 67, 93, 105, 71, 91, 74, 60, 75, 68, 52, + 222, 232, 22, 57, 88, 241, 31, 16, 80, 178, 48, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 136, 61, 71, 74, 71, 71, 77, 77, 66, 54, 42, 67, 69, 70, + 73, 113, 120, 101, 89, 86, 74, 55, 53, 123, 191, 184, 176, 189, 224, 198, + 108, 10, 68, 83, 97, 46, 69, 107, 86, 92, 84, 131, 255, 249, 248, 254, + 250, 255, 255, 239, 255, 250, 245, 253, 251, 255, 255, 252, 219, 235, 250, 225, + 193, 248, 77, 78, 69, 87, 69, 110, 109, 60, 84, 75, 71, 64, 97, 55, + 199, 221, 38, 72, 48, 207, 40, 38, 27, 242, 117, 145, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 108, 95, 71, 73, 64, 94, 101, 81, 83, 97, 78, 78, 77, 97, + 81, 81, 73, 73, 64, 108, 95, 100, 103, 48, 80, 140, 182, 191, 187, 188, + 200, 212, 235, 235, 237, 142, 88, 84, 98, 100, 67, 136, 241, 242, 254, 248, + 246, 255, 245, 214, 226, 252, 250, 240, 253, 236, 239, 235, 255, 179, 255, 255, + 108, 62, 248, 246, 81, 54, 107, 69, 79, 90, 99, 59, 54, 67, 62, 76, + 63, 209, 55, 56, 82, 119, 90, 74, 66, 185, 223, 68, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 219, 6, 102, 46, 82, 67, 90, 94, 102, 84, 73, 79, 57, 31, 72, + 65, 55, 60, 118, 96, 67, 99, 53, 60, 76, 63, 46, 36, 51, 217, 241, + 221, 237, 246, 234, 251, 251, 232, 8, 70, 92, 86, 109, 238, 238, 250, 255, + 250, 241, 232, 241, 231, 209, 208, 251, 255, 239, 245, 246, 255, 196, 218, 228, + 237, 107, 81, 148, 175, 62, 18, 57, 69, 51, 84, 75, 65, 76, 72, 82, + 22, 173, 134, 48, 122, 73, 121, 96, 106, 63, 218, 88, 144, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 155, 127, 229, 219, 229, 203, 65, 118, 95, 39, 63, 108, 114, 81, 104, + 85, 59, 47, 112, 145, 76, 88, 66, 92, 98, 71, 85, 63, 7, 207, 234, + 234, 249, 245, 252, 230, 243, 247, 43, 83, 96, 92, 26, 251, 254, 237, 251, + 255, 245, 237, 254, 249, 92, 78, 235, 245, 248, 255, 240, 245, 238, 195, 196, + 249, 134, 31, 32, 217, 216, 91, 39, 36, 88, 82, 77, 67, 52, 83, 37, + 49, 66, 181, 61, 99, 87, 114, 104, 112, 23, 151, 141, 106, 217, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 215, 251, 234, 251, 240, 250, 82, 108, 77, 112, 184, 204, 226, 219, 235, + 207, 135, 41, 102, 146, 90, 35, 68, 115, 64, 79, 86, 108, 40, 189, 237, + 254, 252, 249, 255, 246, 254, 222, 83, 45, 95, 118, 13, 175, 221, 240, 238, + 251, 255, 239, 240, 219, 48, 41, 255, 255, 254, 250, 253, 228, 218, 165, 190, + 239, 163, 51, 37, 139, 183, 165, 86, 16, 45, 99, 80, 76, 84, 74, 73, + 62, 29, 209, 110, 65, 103, 108, 101, 105, 57, 126, 165, 112, 117, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 250, 239, 252, 227, 204, 226, 185, 33, 40, 225, 249, 230, 246, 229, 222, + 239, 241, 167, 25, 42, 59, 54, 76, 72, 39, 56, 11, 54, 8, 104, 224, + 249, 243, 248, 241, 247, 255, 251, 71, 34, 96, 80, 88, 37, 89, 252, 250, + 224, 255, 227, 247, 163, 57, 52, 253, 255, 240, 246, 234, 212, 236, 188, 143, + 251, 234, 15, 73, 46, 83, 217, 193, 184, 86, 20, 32, 86, 65, 85, 75, + 68, 11, 218, 173, 68, 100, 115, 84, 91, 72, 130, 151, 100, 76, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 232, 254, 252, 255, 194, 217, 200, 20, 110, 243, 239, 238, 245, 247, 241, + 248, 227, 247, 83, 37, 127, 77, 111, 74, 75, 213, 232, 207, 171, 27, 178, + 249, 249, 231, 242, 251, 253, 240, 51, 36, 69, 81, 103, 67, 55, 84, 143, + 246, 239, 83, 133, 32, 77, 32, 231, 244, 248, 247, 228, 253, 237, 253, 255, + 234, 250, 34, 78, 35, 54, 32, 154, 171, 209, 164, 128, 42, 56, 81, 89, + 51, 48, 206, 208, 47, 97, 108, 96, 161, 36, 99, 78, 103, 81, 134, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 240, 235, 240, 255, 251, 227, 217, 216, 118, 174, 238, 248, 252, 242, 229, 225, + 233, 228, 233, 107, 103, 108, 140, 45, 71, 141, 241, 230, 252, 230, 78, 138, + 231, 251, 247, 255, 255, 239, 249, 45, 90, 41, 79, 84, 91, 97, 47, 84, + 164, 117, 60, 44, 60, 83, 91, 138, 248, 252, 234, 238, 247, 253, 253, 249, + 254, 213, 18, 61, 72, 74, 18, 73, 140, 213, 206, 175, 118, 54, 73, 73, + 85, 50, 188, 184, 41, 90, 51, 100, 176, 24, 86, 116, 92, 82, 96, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 212, 233, 238, 255, 255, 255, 230, 236, 255, 254, 233, 252, 223, 235, 248, 232, + 221, 249, 252, 104, 149, 128, 108, 114, 187, 227, 196, 229, 229, 241, 251, 249, + 251, 229, 255, 253, 236, 192, 130, 37, 78, 78, 87, 101, 84, 96, 68, 51, + 29, 4, 72, 87, 80, 79, 72, 45, 135, 229, 250, 255, 220, 234, 254, 238, + 203, 127, 57, 96, 60, 52, 66, 42, 15, 59, 142, 194, 228, 136, 93, 96, + 109, 61, 157, 160, 43, 68, 61, 84, 124, 194, 99, 92, 69, 98, 108, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 183, 220, 230, 234, 242, 252, 255, 222, 248, 228, 254, 245, 252, 252, 224, 238, + 247, 218, 155, 31, 156, 127, 64, 243, 248, 251, 213, 233, 218, 199, 221, 214, + 241, 238, 251, 207, 127, 57, 35, 112, 62, 103, 64, 64, 70, 66, 73, 79, + 90, 87, 44, 61, 40, 95, 72, 36, 30, 154, 221, 230, 240, 251, 248, 181, + 34, 14, 91, 76, 75, 53, 47, 56, 83, 53, 12, 42, 98, 192, 193, 139, + 72, 85, 73, 59, 91, 59, 55, 75, 6, 228, 164, 98, 87, 117, 106, 157, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 147, 222, 211, 215, 234, 236, 246, 250, 255, 251, 255, 246, 243, 246, 236, 230, + 145, 35, 72, 188, 245, 75, 21, 238, 242, 230, 242, 233, 254, 248, 232, 220, + 255, 255, 249, 40, 72, 71, 99, 148, 99, 87, 60, 41, 60, 66, 60, 37, + 34, 70, 87, 95, 58, 66, 68, 69, 78, 48, 40, 133, 217, 225, 199, 210, + 55, 53, 98, 51, 57, 79, 91, 85, 63, 69, 86, 66, 33, 36, 53, 138, + 64, 69, 78, 84, 64, 34, 93, 132, 74, 152, 147, 67, 73, 95, 79, 97, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 107, 235, 220, 206, 223, 250, 238, 255, 236, 248, 211, 146, 144, 208, 255, 226, + 202, 163, 185, 200, 231, 171, 25, 135, 255, 246, 255, 254, 241, 236, 241, 245, + 249, 232, 255, 41, 53, 95, 127, 178, 163, 62, 62, 96, 120, 119, 48, 45, + 63, 41, 95, 66, 58, 68, 63, 78, 95, 61, 74, 46, 171, 242, 219, 225, + 56, 47, 80, 71, 73, 82, 65, 80, 72, 77, 61, 85, 65, 46, 38, 66, + 44, 65, 85, 75, 90, 74, 202, 231, 188, 114, 220, 112, 86, 77, 73, 95, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, + 51, 201, 213, 215, 199, 252, 236, 192, 96, 158, 196, 195, 103, 94, 246, 241, + 241, 238, 226, 248, 230, 226, 39, 27, 194, 255, 230, 239, 240, 239, 247, 255, + 246, 152, 180, 203, 140, 199, 226, 234, 145, 96, 235, 250, 238, 252, 237, 194, + 105, 16, 65, 82, 68, 79, 78, 110, 90, 88, 74, 33, 44, 191, 208, 225, + 110, 40, 70, 64, 82, 97, 81, 79, 76, 81, 70, 50, 95, 67, 38, 69, + 81, 55, 80, 87, 70, 73, 212, 217, 240, 209, 223, 237, 168, 126, 121, 120, + 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, + 1, 126, 165, 236, 232, 240, 165, 78, 138, 223, 221, 231, 235, 108, 203, 248, + 254, 245, 248, 223, 248, 237, 250, 80, 60, 247, 251, 250, 248, 241, 255, 243, + 183, 34, 93, 225, 227, 241, 231, 178, 120, 123, 255, 253, 243, 243, 252, 246, + 222, 149, 32, 57, 85, 83, 98, 88, 87, 112, 73, 98, 7, 196, 213, 206, + 163, 51, 88, 77, 72, 73, 89, 96, 93, 83, 79, 72, 47, 76, 88, 77, + 75, 71, 67, 67, 100, 93, 88, 164, 221, 217, 242, 185, 175, 188, 154, 70, + 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, + 61, 12, 69, 234, 234, 183, 48, 87, 207, 209, 246, 240, 213, 196, 230, 250, + 238, 253, 242, 246, 220, 176, 161, 150, 4, 93, 241, 229, 232, 236, 252, 255, + 233, 155, 54, 201, 219, 255, 234, 119, 66, 207, 255, 251, 255, 251, 241, 242, + 238, 236, 114, 30, 100, 106, 86, 94, 112, 103, 91, 83, 9, 230, 199, 207, + 188, 55, 75, 74, 81, 78, 81, 107, 79, 112, 89, 87, 76, 76, 85, 84, + 72, 67, 70, 62, 47, 71, 29, 34, 245, 214, 227, 224, 166, 138, 182, 158, + 144, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, + 64, 36, 91, 230, 228, 205, 58, 92, 218, 230, 214, 251, 217, 188, 231, 250, + 255, 247, 230, 239, 244, 62, 88, 121, 48, 0, 241, 229, 250, 251, 233, 225, + 255, 223, 99, 175, 210, 236, 221, 143, 132, 238, 255, 250, 241, 240, 249, 246, + 244, 252, 203, 98, 85, 100, 96, 96, 81, 76, 87, 61, 46, 191, 211, 204, + 185, 76, 62, 91, 107, 104, 85, 92, 84, 76, 104, 88, 83, 84, 88, 86, + 80, 77, 79, 52, 83, 72, 36, 29, 225, 248, 219, 228, 173, 103, 161, 144, + 137, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 65, + 43, 59, 219, 202, 207, 213, 98, 46, 174, 228, 246, 230, 225, 212, 255, 255, + 247, 244, 254, 224, 239, 81, 100, 78, 62, 109, 220, 226, 208, 185, 197, 235, + 254, 246, 240, 224, 236, 223, 215, 181, 189, 245, 242, 255, 249, 246, 255, 244, + 247, 247, 241, 207, 75, 83, 82, 88, 66, 68, 81, 59, 83, 60, 215, 197, + 194, 51, 101, 96, 108, 67, 89, 105, 67, 116, 82, 84, 88, 91, 86, 82, + 82, 83, 82, 84, 80, 63, 81, 65, 100, 243, 234, 250, 214, 99, 124, 90, + 103, 91, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 195, + 76, 34, 179, 166, 198, 252, 221, 31, 88, 123, 205, 233, 227, 195, 252, 255, + 238, 253, 255, 248, 233, 251, 221, 213, 235, 202, 170, 103, 9, 75, 217, 234, + 189, 193, 230, 255, 255, 237, 231, 226, 211, 252, 255, 248, 250, 249, 254, 243, + 255, 244, 240, 249, 51, 74, 67, 76, 67, 80, 82, 97, 92, 20, 108, 198, + 143, 0, 67, 47, 42, 60, 61, 86, 66, 81, 82, 78, 88, 90, 78, 71, + 78, 80, 76, 91, 87, 103, 101, 85, 21, 242, 250, 251, 253, 213, 241, 129, + 67, 75, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 219, + 74, 36, 182, 191, 194, 238, 237, 40, 50, 71, 163, 117, 198, 221, 255, 253, + 198, 244, 246, 255, 240, 216, 223, 167, 167, 117, 64, 21, 22, 114, 234, 248, + 197, 162, 236, 255, 255, 255, 241, 247, 212, 243, 254, 253, 255, 253, 255, 239, + 255, 238, 240, 236, 25, 74, 73, 76, 58, 76, 80, 53, 69, 48, 50, 134, + 169, 25, 29, 0, 33, 34, 99, 78, 98, 70, 104, 79, 92, 91, 76, 68, + 76, 79, 72, 107, 73, 79, 89, 99, 44, 230, 255, 251, 255, 255, 245, 154, + 157, 212, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 254, + 141, 49, 198, 245, 225, 247, 237, 167, 148, 113, 105, 200, 255, 255, 255, 252, + 223, 205, 172, 131, 186, 38, 92, 69, 36, 73, 38, 73, 93, 205, 240, 187, + 181, 212, 248, 255, 252, 255, 255, 255, 255, 253, 233, 254, 246, 245, 255, 242, + 240, 249, 251, 249, 34, 63, 66, 79, 56, 65, 65, 73, 64, 42, 30, 5, + 199, 151, 170, 199, 0, 81, 0, 13, 87, 82, 91, 86, 96, 96, 81, 76, + 80, 81, 75, 80, 78, 81, 83, 44, 18, 132, 225, 255, 241, 250, 241, 214, + 255, 254, 240, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 213, + 147, 81, 230, 247, 226, 205, 158, 216, 255, 254, 222, 211, 231, 255, 253, 233, + 255, 189, 235, 232, 255, 96, 14, 60, 85, 45, 95, 75, 152, 242, 221, 184, + 200, 216, 255, 255, 255, 255, 255, 233, 233, 222, 236, 228, 219, 222, 246, 253, + 248, 254, 215, 217, 49, 68, 60, 73, 64, 70, 59, 82, 63, 91, 77, 68, + 158, 182, 189, 206, 168, 214, 230, 16, 35, 64, 96, 89, 93, 92, 84, 82, + 84, 82, 77, 68, 77, 62, 62, 158, 233, 254, 255, 207, 146, 178, 255, 255, + 200, 69, 84, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 254, 221, + 200, 147, 140, 241, 241, 171, 95, 153, 226, 211, 199, 125, 97, 170, 249, 239, + 255, 60, 123, 255, 255, 197, 160, 49, 99, 74, 69, 45, 130, 234, 200, 163, + 225, 244, 239, 249, 255, 248, 245, 97, 67, 79, 177, 237, 237, 231, 240, 255, + 244, 229, 98, 101, 39, 97, 74, 63, 63, 79, 68, 80, 106, 74, 87, 86, + 120, 143, 171, 155, 204, 179, 209, 172, 70, 86, 77, 87, 89, 86, 85, 86, + 86, 82, 80, 102, 91, 103, 102, 247, 243, 238, 250, 254, 150, 75, 126, 215, + 255, 75, 66, 75, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 237, 231, + 230, 209, 35, 242, 247, 139, 76, 134, 207, 224, 203, 132, 29, 138, 246, 234, + 252, 63, 49, 198, 204, 225, 226, 42, 40, 101, 67, 62, 99, 231, 243, 207, + 244, 241, 236, 249, 233, 238, 178, 49, 2, 52, 90, 193, 214, 215, 214, 188, + 201, 173, 5, 36, 77, 91, 63, 89, 76, 70, 83, 90, 93, 96, 87, 96, + 112, 120, 147, 123, 194, 178, 195, 216, 120, 59, 91, 98, 72, 97, 112, 71, + 98, 106, 79, 118, 94, 123, 110, 245, 249, 242, 242, 255, 229, 88, 133, 162, + 255, 89, 91, 92, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 251, 239, 248, + 254, 232, 86, 183, 224, 151, 129, 55, 196, 226, 253, 251, 114, 110, 255, 240, + 143, 248, 121, 0, 6, 189, 228, 153, 73, 80, 70, 54, 37, 113, 215, 241, + 237, 241, 243, 231, 220, 98, 10, 71, 121, 80, 47, 37, 71, 113, 125, 58, + 9, 31, 38, 62, 84, 91, 68, 84, 81, 63, 91, 85, 80, 88, 87, 88, + 94, 113, 164, 135, 172, 192, 132, 214, 212, 31, 61, 100, 133, 77, 86, 112, + 82, 115, 105, 108, 122, 112, 38, 117, 214, 236, 254, 245, 239, 218, 245, 102, + 224, 181, 63, 85, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 237, 255, + 237, 223, 194, 64, 136, 152, 193, 45, 231, 243, 254, 252, 191, 170, 250, 252, + 37, 214, 197, 64, 39, 132, 177, 175, 159, 55, 66, 69, 53, 49, 140, 192, + 181, 187, 150, 49, 39, 39, 74, 101, 76, 58, 83, 72, 89, 65, 72, 99, + 64, 55, 108, 110, 46, 76, 98, 94, 103, 82, 95, 84, 72, 82, 84, 78, + 72, 99, 167, 170, 169, 157, 99, 175, 208, 66, 40, 87, 52, 85, 104, 111, + 76, 61, 62, 104, 99, 77, 34, 92, 249, 250, 255, 231, 255, 201, 238, 191, + 209, 245, 28, 80, 100, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 114, 156, 254, + 246, 252, 218, 19, 51, 90, 125, 27, 237, 249, 234, 247, 224, 175, 241, 245, + 17, 185, 226, 52, 15, 91, 154, 148, 132, 74, 63, 66, 81, 41, 56, 82, + 83, 91, 45, 77, 21, 48, 92, 64, 57, 83, 78, 69, 93, 59, 40, 28, + 36, 138, 231, 243, 62, 85, 113, 85, 88, 87, 78, 91, 77, 83, 82, 75, + 66, 80, 136, 126, 179, 147, 41, 134, 180, 29, 19, 40, 36, 59, 72, 73, + 59, 41, 55, 71, 49, 73, 45, 31, 225, 252, 235, 255, 222, 255, 204, 223, + 214, 255, 54, 72, 104, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 148, 163, 130, 249, + 231, 206, 59, 68, 69, 78, 80, 38, 252, 254, 244, 255, 243, 225, 225, 246, + 42, 101, 189, 170, 112, 73, 206, 50, 45, 49, 56, 62, 71, 56, 54, 61, + 59, 66, 75, 55, 85, 101, 93, 83, 81, 81, 79, 113, 56, 52, 166, 209, + 218, 244, 211, 216, 60, 81, 81, 73, 63, 53, 37, 35, 28, 30, 22, 22, + 20, 15, 36, 29, 33, 33, 157, 235, 222, 241, 232, 132, 36, 64, 65, 84, + 240, 214, 205, 206, 219, 211, 233, 255, 208, 55, 107, 105, 92, 177, 133, 208, + 198, 249, 86, 61, 92, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 199, 255, 186, 255, + 251, 62, 13, 58, 80, 72, 76, 38, 241, 234, 233, 244, 237, 254, 221, 249, + 40, 17, 79, 212, 211, 158, 199, 182, 79, 80, 56, 74, 76, 91, 85, 90, + 96, 87, 110, 93, 101, 77, 68, 98, 100, 87, 102, 93, 172, 203, 241, 217, + 121, 75, 44, 42, 18, 37, 12, 47, 63, 50, 66, 70, 71, 75, 63, 72, + 80, 60, 58, 60, 59, 77, 88, 162, 231, 231, 245, 245, 207, 15, 22, 69, + 125, 164, 232, 245, 255, 251, 245, 242, 250, 130, 50, 59, 52, 89, 119, 85, + 45, 190, 148, 60, 86, 91, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 182, 130, 242, + 255, 34, 37, 77, 95, 75, 71, 38, 229, 250, 255, 255, 230, 224, 244, 229, + 17, 100, 12, 109, 215, 171, 168, 204, 136, 60, 88, 74, 80, 93, 81, 82, + 95, 80, 73, 79, 83, 74, 46, 30, 42, 44, 21, 103, 212, 181, 97, 145, + 182, 161, 197, 188, 196, 161, 103, 54, 66, 47, 65, 54, 62, 71, 62, 71, + 79, 62, 60, 98, 58, 58, 75, 34, 97, 243, 240, 242, 242, 200, 220, 142, + 85, 107, 222, 227, 223, 211, 255, 239, 255, 243, 227, 120, 62, 72, 111, 210, + 174, 62, 190, 70, 84, 98, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 255, 255, 254, 207, 145, 255, + 239, 135, 6, 84, 79, 72, 58, 50, 212, 255, 230, 236, 254, 252, 243, 213, + 15, 46, 45, 65, 106, 149, 156, 195, 142, 54, 68, 75, 65, 67, 79, 79, + 75, 72, 65, 78, 60, 58, 68, 70, 73, 86, 93, 171, 181, 153, 35, 77, + 215, 207, 196, 183, 178, 171, 180, 60, 73, 49, 31, 45, 57, 69, 64, 69, + 73, 62, 73, 85, 71, 92, 104, 0, 15, 201, 242, 242, 248, 252, 254, 184, + 139, 155, 212, 208, 155, 126, 251, 245, 250, 230, 249, 227, 107, 72, 71, 230, + 222, 45, 172, 75, 83, 101, 76, 135, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 250, 255, 250, 218, 227, 255, + 251, 224, 68, 63, 30, 62, 81, 49, 100, 246, 215, 223, 233, 240, 190, 91, + 60, 29, 46, 37, 12, 33, 47, 59, 72, 14, 34, 39, 61, 38, 76, 62, + 75, 69, 90, 112, 71, 54, 71, 215, 244, 242, 247, 218, 223, 156, 86, 64, + 198, 181, 181, 160, 167, 136, 180, 129, 115, 61, 58, 46, 70, 58, 76, 84, + 94, 71, 76, 68, 85, 79, 82, 29, 139, 253, 244, 243, 236, 228, 244, 254, + 255, 255, 235, 104, 81, 114, 248, 249, 255, 246, 219, 251, 194, 52, 61, 125, + 126, 89, 102, 117, 52, 93, 88, 68, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 223, 242, 185, 221, 213, 212, 233, 177, + 182, 247, 95, 63, 96, 28, 48, 36, 82, 92, 43, 27, 29, 32, 28, 29, + 89, 83, 73, 36, 25, 34, 16, 15, 46, 34, 62, 48, 33, 18, 126, 193, + 209, 150, 114, 110, 52, 58, 120, 170, 191, 209, 195, 86, 10, 5, 95, 74, + 81, 148, 180, 169, 130, 124, 130, 143, 113, 116, 88, 70, 63, 60, 63, 53, + 65, 48, 83, 74, 82, 51, 92, 59, 226, 255, 255, 244, 244, 231, 240, 253, + 255, 255, 248, 255, 255, 232, 255, 244, 150, 190, 224, 200, 179, 65, 63, 107, + 118, 110, 137, 126, 97, 78, 75, 60, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 92, 159, 111, 49, 53, 52, 26, 66, + 76, 212, 85, 153, 136, 69, 78, 47, 216, 234, 25, 35, 35, 49, 74, 105, + 152, 118, 73, 67, 72, 86, 62, 67, 89, 80, 73, 43, 93, 132, 221, 246, + 254, 244, 254, 176, 128, 43, 75, 74, 57, 35, 39, 73, 127, 101, 75, 78, + 31, 85, 171, 178, 103, 79, 130, 145, 132, 125, 100, 89, 79, 79, 109, 94, + 76, 67, 77, 93, 82, 62, 110, 11, 230, 254, 237, 243, 249, 237, 242, 255, + 255, 255, 255, 255, 255, 255, 242, 255, 250, 70, 8, 22, 93, 112, 111, 106, + 100, 98, 111, 109, 109, 80, 76, 71, 126, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 210, 232, 231, 76, 54, 70, 56, 50, 172, + 193, 219, 79, 116, 90, 59, 68, 149, 235, 198, 56, 79, 67, 75, 92, 95, + 99, 84, 73, 55, 58, 75, 70, 91, 98, 67, 40, 61, 158, 215, 255, 243, + 243, 238, 240, 226, 216, 71, 61, 88, 87, 70, 95, 80, 77, 90, 92, 114, + 51, 41, 137, 196, 189, 118, 138, 154, 154, 110, 119, 131, 104, 50, 79, 69, + 48, 82, 65, 69, 87, 38, 68, 39, 234, 249, 247, 238, 251, 243, 245, 254, + 248, 250, 249, 251, 255, 246, 255, 219, 251, 177, 37, 49, 40, 102, 81, 95, + 124, 131, 112, 106, 126, 96, 187, 192, 174, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 64, 89, 77, 76, 58, 71, 46, 130, 162, + 211, 86, 0, 9, 78, 71, 15, 174, 194, 80, 36, 71, 67, 75, 88, 85, + 79, 93, 97, 99, 90, 92, 84, 101, 117, 122, 170, 218, 255, 247, 243, 238, + 255, 255, 251, 255, 251, 105, 34, 51, 59, 60, 41, 70, 100, 100, 90, 100, + 109, 66, 48, 33, 151, 186, 173, 181, 173, 161, 165, 161, 118, 83, 75, 66, + 66, 91, 85, 48, 59, 88, 116, 37, 123, 237, 252, 239, 250, 241, 242, 244, + 239, 242, 234, 118, 239, 252, 240, 252, 230, 251, 224, 102, 13, 125, 120, 121, + 108, 111, 104, 99, 118, 76, 231, 234, 240, 250, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 82, 80, 106, 70, 91, 101, 159, 154, 217, 207, + 193, 40, 63, 83, 58, 51, 92, 217, 174, 60, 102, 73, 80, 90, 95, 98, + 81, 74, 34, 39, 37, 37, 22, 17, 42, 73, 224, 226, 251, 250, 255, 255, + 243, 244, 248, 240, 239, 108, 39, 143, 188, 188, 176, 52, 64, 26, 106, 107, + 91, 92, 72, 58, 81, 161, 179, 20, 60, 183, 196, 55, 27, 84, 67, 67, + 77, 50, 75, 91, 84, 65, 72, 63, 31, 105, 168, 241, 242, 239, 248, 241, + 239, 245, 222, 71, 55, 136, 238, 236, 248, 255, 246, 216, 28, 44, 73, 110, + 88, 84, 95, 107, 98, 97, 110, 106, 249, 246, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 229, 48, 89, 104, 68, 74, 90, 208, 230, 204, 201, + 120, 27, 92, 77, 94, 43, 101, 240, 159, 27, 75, 94, 89, 80, 73, 77, + 58, 68, 35, 69, 82, 97, 96, 81, 87, 48, 221, 232, 239, 226, 235, 248, + 243, 255, 255, 255, 255, 166, 120, 227, 254, 228, 239, 137, 70, 26, 128, 106, + 98, 123, 55, 84, 32, 94, 169, 0, 37, 146, 134, 13, 1, 52, 52, 67, + 55, 49, 87, 87, 66, 75, 84, 48, 15, 55, 98, 214, 210, 227, 249, 243, + 238, 238, 190, 66, 34, 29, 234, 252, 233, 236, 229, 235, 133, 41, 65, 74, + 46, 60, 111, 118, 102, 136, 43, 49, 204, 232, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 212, 56, 88, 36, 37, 95, 72, 180, 187, 130, 64, + 58, 57, 80, 68, 83, 33, 115, 232, 88, 13, 79, 87, 76, 74, 79, 76, + 42, 82, 89, 212, 224, 244, 252, 251, 233, 100, 236, 220, 250, 250, 245, 250, + 245, 249, 236, 247, 240, 253, 255, 250, 248, 243, 246, 242, 234, 127, 72, 77, + 79, 62, 95, 68, 77, 73, 62, 92, 66, 51, 7, 56, 63, 45, 76, 95, + 26, 59, 67, 74, 89, 91, 107, 115, 122, 51, 56, 33, 29, 69, 116, 105, + 97, 87, 16, 29, 53, 47, 16, 116, 246, 252, 236, 230, 236, 49, 59, 55, + 45, 42, 75, 68, 83, 81, 79, 98, 72, 197, 237, 243, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 206, 85, 65, 71, 100, 159, 219, 150, 70, 32, 59, 103, + 90, 102, 92, 92, 76, 86, 228, 157, 35, 30, 96, 99, 51, 56, 72, 88, + 94, 248, 231, 235, 223, 234, 250, 232, 238, 254, 206, 247, 210, 199, 235, 232, + 255, 247, 249, 252, 255, 253, 230, 255, 248, 253, 254, 239, 250, 252, 52, 75, + 101, 100, 96, 109, 107, 90, 86, 99, 96, 80, 64, 86, 95, 35, 180, 234, + 89, 64, 71, 56, 88, 82, 83, 89, 96, 129, 103, 105, 124, 85, 30, 53, + 30, 57, 74, 129, 99, 95, 46, 45, 199, 231, 227, 213, 200, 57, 29, 76, + 106, 38, 74, 57, 85, 76, 101, 127, 79, 58, 234, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 155, 125, 41, 75, 77, 186, 210, 113, 46, 61, 57, 80, 83, + 90, 109, 91, 65, 61, 167, 230, 20, 106, 70, 22, 58, 90, 69, 197, 219, + 240, 218, 204, 95, 161, 231, 244, 255, 236, 255, 238, 166, 64, 47, 41, 40, + 135, 224, 236, 248, 231, 253, 255, 255, 241, 252, 255, 249, 254, 251, 21, 116, + 104, 98, 93, 106, 99, 78, 78, 89, 90, 94, 93, 117, 80, 62, 139, 203, + 230, 221, 72, 103, 70, 71, 83, 65, 61, 76, 71, 78, 56, 91, 86, 108, + 135, 109, 170, 144, 213, 161, 182, 177, 228, 67, 55, 46, 77, 77, 60, 237, + 247, 241, 220, 247, 222, 222, 183, 165, 207, 184, 81, 248, 241, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 199, 104, 88, 30, 57, 95, 234, 208, 69, 36, 97, 92, 107, 72, + 87, 122, 111, 62, 80, 202, 237, 28, 108, 78, 38, 39, 211, 221, 235, 247, + 174, 61, 88, 48, 144, 255, 250, 254, 255, 248, 121, 71, 55, 54, 46, 61, + 81, 211, 253, 255, 241, 241, 247, 243, 252, 254, 243, 253, 239, 236, 41, 121, + 103, 92, 76, 93, 96, 82, 86, 85, 82, 101, 106, 110, 89, 100, 114, 181, + 209, 213, 165, 136, 41, 17, 38, 32, 36, 36, 40, 38, 3, 71, 63, 130, + 164, 172, 155, 134, 168, 241, 236, 223, 230, 68, 59, 30, 15, 36, 95, 237, + 237, 235, 242, 245, 230, 249, 246, 233, 226, 237, 166, 254, 232, 234, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 201, 131, 56, 61, 117, 170, 174, 212, 158, 48, 67, 95, 69, 86, 59, + 52, 92, 85, 49, 29, 230, 215, 2, 66, 31, 171, 189, 238, 209, 86, 115, + 73, 64, 89, 61, 153, 226, 221, 242, 255, 213, 61, 220, 255, 234, 207, 189, + 91, 219, 251, 243, 254, 253, 229, 237, 238, 238, 231, 252, 245, 246, 108, 68, + 92, 96, 78, 69, 85, 80, 87, 73, 57, 68, 51, 65, 104, 99, 42, 98, + 99, 144, 223, 228, 203, 173, 195, 204, 214, 214, 218, 213, 255, 44, 84, 194, + 195, 181, 121, 117, 71, 59, 234, 231, 223, 230, 224, 206, 125, 126, 226, 249, + 238, 237, 251, 243, 251, 232, 229, 252, 245, 243, 231, 242, 221, 170, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, + 100, 107, 95, 101, 141, 192, 201, 218, 129, 50, 63, 103, 99, 84, 100, 108, + 83, 112, 90, 56, 115, 201, 45, 101, 75, 106, 204, 166, 73, 73, 60, 64, + 79, 101, 63, 104, 212, 205, 215, 255, 243, 176, 182, 255, 250, 250, 221, 203, + 160, 255, 251, 255, 227, 252, 245, 233, 208, 240, 233, 232, 92, 58, 99, 104, + 92, 68, 120, 188, 168, 116, 113, 117, 138, 182, 163, 113, 96, 87, 64, 79, + 37, 68, 77, 80, 229, 228, 238, 243, 237, 243, 247, 247, 231, 242, 219, 255, + 241, 214, 216, 143, 113, 82, 172, 255, 241, 254, 225, 244, 164, 226, 252, 248, + 219, 252, 198, 199, 190, 152, 188, 221, 242, 254, 252, 250, 252, 180, 191, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 99, + 107, 73, 68, 223, 208, 231, 156, 75, 44, 78, 68, 89, 84, 90, 84, 101, + 90, 105, 76, 95, 206, 20, 40, 56, 138, 159, 34, 86, 47, 78, 82, 91, + 94, 107, 80, 155, 255, 237, 253, 255, 245, 197, 245, 255, 233, 254, 197, 223, + 255, 255, 249, 255, 169, 205, 240, 229, 229, 218, 102, 131, 177, 183, 89, 80, + 88, 69, 82, 96, 97, 101, 177, 216, 210, 213, 150, 92, 71, 74, 110, 129, + 85, 94, 39, 12, 247, 249, 250, 255, 252, 251, 246, 249, 255, 241, 254, 232, + 252, 224, 233, 196, 95, 78, 217, 234, 188, 28, 122, 87, 32, 97, 85, 65, + 50, 100, 29, 68, 55, 53, 105, 81, 68, 108, 185, 212, 237, 192, 178, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 89, 79, + 87, 50, 127, 218, 220, 173, 96, 42, 53, 81, 84, 91, 85, 99, 84, 80, + 87, 74, 57, 161, 228, 35, 61, 72, 115, 69, 33, 34, 57, 86, 55, 112, + 87, 87, 49, 184, 239, 243, 255, 247, 255, 236, 216, 234, 231, 212, 179, 229, + 255, 251, 255, 249, 217, 225, 248, 216, 226, 159, 37, 132, 220, 236, 94, 94, + 99, 87, 65, 71, 69, 98, 203, 221, 173, 178, 137, 83, 127, 104, 77, 97, + 107, 110, 71, 43, 244, 239, 237, 243, 245, 227, 224, 244, 236, 255, 220, 162, + 185, 198, 159, 154, 79, 55, 150, 179, 121, 55, 45, 50, 26, 34, 43, 18, + 29, 49, 46, 19, 44, 49, 45, 54, 57, 70, 130, 188, 205, 222, 206, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 86, 74, 83, 109, + 98, 96, 151, 178, 114, 32, 69, 64, 64, 57, 85, 95, 82, 103, 109, 84, + 88, 37, 33, 218, 197, 42, 63, 84, 12, 35, 85, 67, 41, 71, 92, 86, + 79, 104, 48, 243, 255, 244, 249, 255, 248, 225, 217, 236, 210, 157, 219, 236, + 252, 255, 225, 227, 252, 195, 152, 43, 29, 19, 102, 241, 227, 214, 124, 111, + 114, 117, 102, 115, 90, 88, 156, 115, 30, 68, 82, 84, 81, 72, 95, 111, + 91, 75, 88, 59, 216, 232, 238, 222, 216, 184, 197, 219, 195, 129, 91, 61, + 76, 46, 62, 49, 50, 52, 42, 40, 44, 48, 56, 40, 60, 53, 48, 56, + 53, 44, 56, 53, 37, 52, 25, 44, 42, 38, 55, 75, 97, 203, 227, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 76, 102, 70, 108, + 170, 180, 187, 51, 69, 80, 53, 22, 62, 49, 39, 62, 78, 79, 103, 107, + 51, 96, 83, 117, 75, 93, 81, 49, 63, 172, 231, 229, 0, 62, 58, 63, + 245, 60, 40, 215, 199, 224, 212, 245, 216, 218, 69, 94, 102, 90, 248, 218, + 233, 189, 245, 206, 182, 42, 24, 66, 116, 58, 157, 190, 185, 131, 89, 100, + 93, 72, 83, 75, 64, 50, 41, 42, 49, 54, 55, 55, 52, 51, 49, 52, + 55, 58, 60, 49, 39, 33, 38, 46, 50, 53, 56, 51, 52, 53, 54, 56, + 59, 60, 62, 52, 54, 60, 63, 58, 50, 53, 63, 62, 62, 61, 59, 57, + 56, 58, 57, 51, 49, 50, 50, 56, 62, 65, 62, 52, 79, 138, 183, 188, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 70, 91, 45, 61, 170, + 203, 230, 236, 191, 178, 183, 79, 44, 45, 52, 57, 68, 64, 71, 54, 88, + 83, 73, 61, 75, 73, 90, 71, 138, 182, 242, 236, 241, 42, 62, 88, 155, + 227, 24, 44, 104, 91, 179, 217, 232, 238, 117, 110, 125, 127, 100, 110, 94, + 89, 90, 91, 110, 83, 68, 80, 73, 88, 61, 76, 73, 81, 63, 49, 61, + 54, 36, 40, 44, 37, 30, 27, 32, 38, 42, 41, 51, 47, 46, 46, 49, + 53, 57, 58, 52, 44, 39, 45, 55, 59, 61, 63, 61, 58, 56, 55, 57, + 60, 64, 65, 60, 58, 60, 66, 65, 61, 61, 64, 64, 64, 64, 62, 60, + 58, 58, 57, 52, 54, 53, 53, 52, 55, 58, 58, 52, 65, 111, 111, 95, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 74, 84, 67, 128, 233, + 226, 231, 230, 238, 239, 222, 65, 74, 84, 93, 69, 61, 51, 40, 24, 51, + 80, 80, 92, 49, 60, 83, 88, 217, 228, 225, 191, 199, 37, 67, 104, 102, + 90, 32, 55, 209, 200, 239, 236, 228, 237, 60, 121, 110, 126, 113, 61, 60, + 56, 76, 43, 54, 27, 76, 79, 63, 51, 57, 25, 23, 28, 28, 28, 30, + 32, 29, 27, 39, 37, 36, 38, 46, 52, 53, 51, 55, 51, 49, 52, 56, + 60, 63, 64, 61, 55, 52, 57, 65, 68, 69, 69, 67, 64, 60, 57, 58, + 59, 64, 66, 67, 61, 60, 67, 74, 74, 70, 69, 70, 70, 69, 66, 64, + 61, 58, 56, 54, 56, 55, 53, 49, 48, 50, 51, 47, 63, 107, 180, 215, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 87, 47, 173, 235, 246, + 251, 247, 251, 244, 248, 151, 32, 85, 86, 72, 67, 60, 107, 125, 186, 126, + 100, 99, 96, 84, 84, 80, 63, 124, 89, 51, 22, 76, 63, 91, 97, 106, + 63, 132, 193, 231, 225, 184, 189, 214, 159, 64, 86, 75, 94, 82, 79, 65, + 65, 60, 42, 46, 39, 52, 32, 57, 44, 50, 39, 45, 34, 38, 40, 33, + 38, 46, 37, 36, 37, 38, 44, 49, 54, 57, 54, 63, 61, 59, 60, 63, + 67, 69, 69, 71, 68, 66, 67, 72, 74, 72, 70, 72, 69, 66, 62, 61, + 61, 64, 66, 66, 63, 62, 70, 78, 82, 79, 74, 77, 76, 75, 75, 71, + 67, 60, 57, 57, 54, 51, 50, 49, 46, 46, 45, 33, 45, 54, 185, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 79, 66, 251, 251, 175, + 202, 225, 239, 252, 246, 71, 59, 105, 69, 62, 163, 192, 216, 209, 238, 77, + 73, 99, 122, 108, 118, 108, 84, 83, 101, 101, 86, 111, 113, 105, 86, 83, + 68, 205, 221, 168, 130, 45, 99, 136, 41, 54, 60, 56, 57, 33, 60, 43, + 44, 34, 36, 32, 50, 38, 25, 61, 57, 55, 61, 47, 29, 38, 49, 41, + 44, 51, 33, 38, 39, 43, 49, 55, 59, 64, 63, 69, 65, 63, 63, 65, + 68, 67, 67, 73, 71, 69, 68, 71, 74, 73, 70, 74, 74, 74, 71, 70, + 67, 67, 66, 63, 66, 71, 76, 82, 87, 89, 88, 85, 82, 81, 80, 77, + 72, 64, 59, 58, 50, 44, 46, 50, 46, 46, 47, 52, 57, 42, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 52, 130, 246, 194, 124, + 141, 186, 187, 180, 206, 57, 84, 84, 51, 62, 195, 236, 230, 244, 221, 56, + 98, 90, 112, 113, 105, 103, 113, 83, 101, 112, 114, 131, 86, 86, 97, 68, + 81, 213, 173, 121, 93, 25, 62, 56, 15, 52, 49, 49, 48, 32, 40, 47, + 40, 47, 40, 30, 43, 43, 51, 44, 44, 60, 55, 59, 37, 35, 41, 35, + 41, 48, 40, 44, 48, 54, 60, 68, 73, 78, 79, 73, 70, 69, 69, 70, + 70, 70, 68, 67, 68, 65, 64, 66, 70, 71, 68, 71, 72, 73, 71, 70, + 66, 64, 63, 64, 74, 81, 85, 87, 94, 99, 98, 91, 85, 83, 82, 80, + 76, 68, 62, 57, 46, 40, 44, 47, 46, 48, 55, 46, 43, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 161, 88, 47, + 26, 43, 18, 6, 48, 22, 39, 44, 64, 91, 156, 120, 110, 143, 107, 36, + 70, 53, 63, 68, 52, 64, 90, 76, 61, 59, 66, 51, 73, 59, 68, 75, + 48, 48, 53, 30, 53, 47, 57, 46, 53, 65, 40, 53, 61, 53, 48, 50, + 37, 43, 26, 44, 43, 45, 54, 38, 27, 57, 46, 70, 53, 47, 47, 41, + 42, 52, 53, 42, 46, 55, 62, 67, 71, 74, 74, 76, 75, 74, 75, 75, + 76, 74, 73, 68, 69, 66, 62, 63, 68, 69, 68, 73, 74, 73, 70, 69, + 67, 66, 66, 71, 80, 88, 90, 94, 99, 105, 100, 92, 86, 82, 82, 80, + 78, 70, 64, 55, 47, 45, 46, 44, 40, 50, 66, 70, 130, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 32, 44, + 44, 57, 42, 47, 20, 53, 34, 30, 36, 36, 32, 27, 28, 37, 31, 47, + 26, 40, 42, 44, 61, 73, 53, 67, 65, 64, 48, 54, 56, 51, 58, 46, + 61, 54, 62, 64, 70, 65, 53, 60, 41, 66, 51, 49, 61, 45, 56, 41, + 41, 43, 42, 38, 42, 34, 35, 60, 32, 50, 44, 43, 46, 55, 63, 59, + 50, 44, 47, 52, 58, 68, 73, 75, 75, 74, 73, 72, 69, 71, 71, 74, + 74, 74, 72, 74, 76, 73, 65, 65, 70, 72, 69, 84, 84, 81, 78, 78, + 77, 79, 80, 78, 85, 90, 89, 95, 101, 102, 95, 93, 87, 81, 81, 81, + 77, 71, 64, 52, 48, 50, 49, 40, 35, 51, 74, 80, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 49, + 47, 49, 51, 45, 49, 49, 45, 44, 46, 44, 41, 39, 38, 39, 38, 39, + 42, 47, 53, 67, 80, 72, 73, 88, 62, 71, 58, 54, 53, 55, 56, 56, + 56, 55, 55, 62, 63, 64, 65, 65, 65, 63, 62, 59, 57, 52, 47, 43, + 41, 40, 39, 36, 39, 43, 42, 40, 38, 42, 44, 41, 44, 43, 43, 52, + 63, 59, 49, 61, 62, 65, 67, 70, 71, 71, 69, 71, 69, 70, 70, 71, + 70, 69, 67, 69, 74, 81, 82, 80, 75, 74, 74, 84, 85, 85, 85, 84, + 82, 80, 79, 85, 88, 91, 92, 94, 95, 98, 99, 95, 86, 93, 95, 83, + 85, 81, 57, 47, 52, 60, 57, 45, 40, 56, 76, 165, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 52, + 51, 52, 54, 43, 46, 46, 43, 42, 44, 44, 39, 45, 45, 45, 43, 44, + 45, 48, 53, 69, 85, 83, 79, 91, 69, 76, 57, 52, 52, 54, 54, 55, + 54, 54, 54, 60, 61, 62, 64, 64, 65, 65, 64, 61, 58, 52, 47, 43, + 40, 39, 40, 38, 38, 39, 40, 41, 41, 41, 39, 36, 39, 42, 46, 52, + 61, 64, 64, 63, 67, 71, 70, 69, 68, 70, 73, 75, 72, 71, 72, 74, + 73, 72, 71, 75, 78, 82, 83, 82, 83, 83, 83, 87, 85, 88, 89, 89, + 88, 88, 87, 84, 87, 91, 95, 97, 100, 105, 106, 105, 97, 101, 99, 87, + 85, 81, 57, 54, 51, 49, 43, 46, 55, 70, 84, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 50, + 48, 48, 48, 41, 44, 43, 40, 40, 42, 42, 39, 44, 45, 46, 45, 46, + 45, 49, 51, 63, 81, 89, 80, 90, 76, 83, 60, 58, 57, 60, 60, 57, + 56, 55, 55, 58, 59, 60, 62, 63, 66, 67, 67, 64, 60, 53, 47, 42, + 40, 40, 40, 42, 38, 37, 38, 43, 44, 41, 37, 41, 41, 46, 53, 56, + 60, 68, 77, 58, 71, 84, 91, 87, 81, 78, 78, 84, 80, 78, 77, 78, + 79, 78, 77, 83, 81, 82, 83, 86, 89, 90, 89, 90, 88, 88, 89, 90, + 91, 94, 95, 92, 95, 98, 100, 101, 102, 105, 107, 110, 104, 104, 102, 92, + 88, 82, 63, 55, 61, 63, 52, 49, 54, 59, 63, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, + 42, 40, 38, 42, 45, 44, 41, 41, 44, 44, 41, 38, 38, 44, 46, 47, + 48, 52, 56, 56, 75, 97, 85, 92, 88, 97, 69, 67, 66, 68, 65, 60, + 56, 56, 56, 64, 64, 66, 67, 69, 71, 75, 74, 67, 62, 56, 48, 44, + 41, 41, 41, 44, 39, 39, 39, 42, 43, 42, 42, 48, 45, 50, 62, 64, + 62, 68, 78, 87, 86, 84, 80, 78, 83, 90, 96, 86, 83, 83, 82, 83, + 82, 82, 80, 87, 86, 85, 88, 94, 97, 97, 93, 96, 93, 92, 91, 92, + 93, 97, 98, 95, 98, 101, 104, 105, 106, 109, 111, 109, 104, 103, 101, 97, + 93, 86, 74, 67, 87, 96, 73, 51, 46, 48, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, + 42, 39, 37, 42, 45, 44, 40, 40, 44, 45, 42, 36, 37, 43, 46, 48, + 51, 54, 58, 54, 69, 105, 94, 96, 95, 102, 76, 69, 68, 69, 64, 57, + 55, 57, 59, 74, 72, 72, 71, 74, 77, 80, 81, 71, 64, 57, 48, 43, + 41, 41, 42, 41, 42, 44, 42, 41, 41, 46, 48, 53, 50, 55, 68, 75, + 73, 73, 77, 90, 89, 89, 92, 94, 93, 87, 82, 82, 81, 82, 84, 87, + 87, 87, 86, 91, 89, 90, 94, 100, 101, 100, 94, 99, 95, 93, 91, 90, + 91, 91, 92, 81, 85, 91, 97, 103, 110, 117, 122, 110, 107, 102, 101, 103, + 95, 85, 82, 82, 98, 102, 76, 53, 48, 50, 50, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, + 46, 45, 44, 41, 43, 42, 38, 38, 43, 44, 42, 41, 43, 46, 47, 50, + 52, 56, 61, 60, 67, 115, 105, 99, 99, 102, 79, 74, 73, 72, 66, 59, + 58, 63, 69, 83, 81, 79, 77, 78, 80, 85, 84, 76, 67, 59, 50, 43, + 42, 43, 44, 40, 42, 45, 43, 41, 41, 48, 54, 57, 57, 63, 74, 83, + 84, 83, 83, 83, 84, 91, 102, 114, 114, 106, 98, 90, 86, 84, 84, 87, + 88, 89, 88, 88, 89, 91, 96, 98, 97, 97, 92, 94, 91, 89, 87, 85, + 82, 82, 81, 77, 79, 83, 87, 93, 100, 110, 115, 114, 113, 103, 99, 101, + 91, 78, 79, 69, 73, 75, 65, 60, 55, 41, 27, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, + 47, 47, 47, 42, 44, 42, 38, 39, 44, 46, 44, 44, 45, 48, 49, 53, + 58, 65, 71, 68, 67, 124, 119, 109, 106, 107, 91, 92, 89, 85, 75, 64, + 63, 71, 77, 94, 90, 86, 82, 83, 84, 87, 86, 79, 69, 59, 50, 43, + 42, 43, 45, 41, 41, 42, 42, 45, 47, 52, 55, 64, 72, 80, 83, 86, + 90, 91, 91, 109, 98, 86, 83, 92, 110, 127, 137, 116, 107, 95, 85, 82, + 82, 84, 85, 80, 81, 83, 84, 83, 83, 85, 87, 82, 81, 80, 78, 76, + 73, 71, 69, 75, 74, 75, 75, 79, 83, 94, 100, 110, 110, 95, 88, 94, + 81, 65, 71, 55, 50, 51, 54, 63, 66, 61, 57, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 44, + 43, 43, 43, 45, 47, 45, 41, 42, 47, 49, 48, 44, 46, 49, 53, 58, + 64, 75, 82, 74, 68, 129, 130, 119, 115, 117, 105, 107, 102, 94, 80, 66, + 62, 69, 76, 103, 99, 93, 89, 87, 89, 92, 91, 82, 71, 61, 50, 45, + 43, 45, 46, 45, 41, 38, 40, 48, 52, 54, 55, 72, 88, 94, 88, 84, + 89, 96, 96, 97, 100, 103, 104, 104, 103, 102, 101, 142, 128, 107, 88, 79, + 74, 75, 77, 71, 72, 72, 71, 68, 68, 74, 76, 74, 73, 73, 71, 70, + 67, 64, 60, 64, 62, 62, 63, 68, 77, 88, 97, 99, 100, 84, 77, 86, + 70, 54, 64, 63, 53, 42, 45, 58, 84, 121, 148, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 45, + 46, 45, 44, 47, 42, 42, 47, 48, 45, 46, 51, 40, 50, 57, 58, 57, + 62, 81, 96, 72, 62, 109, 141, 116, 115, 127, 97, 109, 102, 98, 91, 74, + 58, 64, 78, 96, 86, 89, 95, 87, 86, 93, 91, 94, 72, 57, 55, 51, + 42, 42, 49, 40, 43, 45, 45, 47, 50, 58, 63, 70, 85, 92, 89, 89, + 100, 107, 105, 102, 103, 104, 106, 108, 108, 103, 100, 111, 139, 139, 98, 67, + 68, 77, 75, 69, 76, 72, 67, 74, 67, 64, 77, 71, 55, 57, 71, 65, + 61, 68, 50, 55, 44, 63, 67, 52, 65, 88, 82, 89, 83, 75, 92, 68, + 45, 67, 53, 64, 46, 51, 43, 46, 83, 99, 98, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 43, 46, + 45, 46, 43, 48, 42, 43, 45, 48, 44, 48, 53, 49, 58, 70, 71, 72, + 76, 89, 100, 90, 80, 113, 142, 128, 128, 135, 109, 113, 107, 104, 101, 87, + 75, 79, 93, 109, 98, 102, 106, 100, 99, 105, 101, 86, 68, 56, 54, 53, + 47, 46, 51, 50, 52, 53, 55, 55, 61, 68, 74, 80, 93, 99, 97, 99, + 110, 115, 114, 113, 112, 111, 112, 111, 110, 106, 103, 97, 83, 104, 151, 152, + 102, 69, 74, 74, 44, 54, 68, 60, 64, 90, 61, 55, 80, 79, 59, 54, + 50, 75, 51, 55, 70, 64, 62, 61, 51, 69, 98, 78, 64, 63, 48, 33, + 44, 48, 35, 64, 35, 34, 46, 50, 38, 34, 70, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 47, 48, + 47, 48, 45, 48, 44, 44, 46, 48, 48, 52, 57, 59, 70, 83, 87, 89, + 91, 97, 105, 103, 94, 106, 126, 131, 133, 129, 112, 114, 108, 106, 106, 100, + 92, 95, 105, 116, 104, 105, 109, 106, 105, 108, 100, 84, 67, 58, 57, 56, + 51, 51, 53, 54, 55, 56, 57, 60, 66, 72, 78, 85, 95, 100, 99, 104, + 112, 116, 115, 118, 117, 114, 110, 108, 107, 102, 100, 96, 104, 94, 85, 112, + 153, 154, 123, 75, 119, 97, 63, 86, 63, 71, 68, 53, 55, 43, 50, 77, + 52, 58, 53, 34, 63, 54, 48, 42, 48, 81, 79, 101, 94, 130, 124, 111, + 115, 94, 96, 68, 130, 131, 79, 93, 124, 98, 85, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 55, 55, 54, + 53, 51, 50, 51, 50, 49, 51, 54, 57, 61, 66, 72, 82, 93, 98, 99, + 100, 105, 109, 107, 101, 97, 108, 130, 133, 120, 108, 110, 106, 104, 106, 106, + 100, 102, 107, 114, 103, 104, 108, 106, 107, 106, 93, 88, 76, 66, 65, 62, + 57, 54, 56, 56, 56, 57, 60, 64, 69, 76, 79, 89, 95, 98, 100, 107, + 115, 117, 116, 124, 120, 114, 108, 106, 103, 99, 97, 101, 97, 86, 81, 99, + 131, 149, 151, 139, 89, 61, 71, 88, 56, 83, 59, 61, 64, 54, 49, 73, + 76, 46, 71, 66, 37, 41, 70, 40, 59, 124, 89, 103, 97, 129, 137, 111, + 83, 80, 120, 123, 176, 171, 134, 144, 128, 87, 114, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 58, 60, 60, 58, + 55, 53, 51, 55, 57, 58, 60, 64, 70, 75, 78, 92, 97, 103, 105, 108, + 110, 112, 116, 113, 111, 102, 108, 134, 137, 121, 114, 110, 107, 104, 104, 105, + 101, 102, 104, 112, 104, 108, 112, 110, 111, 109, 93, 88, 78, 69, 67, 65, + 61, 58, 58, 65, 64, 65, 68, 73, 79, 83, 85, 93, 95, 99, 103, 112, + 120, 122, 119, 129, 125, 118, 111, 109, 106, 102, 100, 97, 87, 91, 110, 108, + 88, 85, 98, 130, 117, 93, 63, 49, 43, 74, 48, 44, 31, 46, 60, 51, + 63, 43, 184, 139, 82, 106, 165, 122, 81, 107, 86, 73, 62, 44, 56, 51, + 40, 92, 145, 170, 164, 141, 131, 125, 56, 26, 160, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 59, 63, 65, 63, + 60, 58, 57, 61, 66, 70, 73, 79, 87, 92, 95, 109, 113, 114, 116, 117, + 120, 121, 123, 116, 117, 112, 114, 131, 136, 126, 121, 115, 113, 109, 105, 102, + 101, 102, 104, 109, 105, 113, 115, 112, 113, 111, 95, 83, 76, 69, 66, 66, + 65, 64, 61, 65, 65, 67, 73, 79, 83, 85, 85, 94, 92, 95, 102, 114, + 121, 123, 120, 127, 122, 116, 110, 108, 105, 102, 100, 98, 109, 102, 80, 77, + 89, 81, 58, 65, 147, 155, 101, 70, 52, 33, 49, 76, 52, 59, 56, 46, + 80, 76, 226, 255, 239, 211, 183, 133, 71, 42, 51, 93, 95, 58, 77, 111, + 126, 155, 152, 94, 90, 69, 43, 38, 26, 42, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 65, 52, 61, 69, 74, 74, + 72, 70, 70, 69, 76, 83, 87, 95, 105, 109, 109, 122, 122, 122, 125, 126, + 127, 125, 122, 115, 117, 117, 114, 117, 125, 128, 127, 119, 119, 114, 108, 102, + 101, 104, 104, 105, 107, 115, 119, 113, 115, 113, 98, 86, 80, 72, 66, 66, + 67, 66, 64, 60, 61, 66, 72, 79, 83, 84, 80, 94, 90, 91, 101, 115, + 123, 124, 121, 121, 118, 114, 110, 109, 107, 104, 102, 103, 97, 93, 92, 94, + 91, 80, 71, 71, 28, 76, 146, 126, 121, 61, 42, 35, 59, 66, 45, 126, + 229, 246, 255, 211, 140, 81, 26, 25, 42, 52, 110, 164, 155, 130, 148, 193, + 188, 129, 75, 66, 40, 43, 47, 50, 72, 132, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 73, 57, 68, 78, 85, 86, + 85, 85, 85, 76, 85, 93, 98, 106, 118, 122, 120, 127, 128, 128, 130, 131, + 129, 124, 120, 115, 117, 122, 116, 109, 119, 132, 133, 122, 123, 119, 109, 102, + 101, 106, 109, 109, 114, 124, 125, 118, 120, 118, 104, 94, 87, 77, 71, 68, + 70, 67, 63, 60, 62, 67, 77, 84, 87, 85, 82, 103, 97, 99, 108, 124, + 130, 129, 128, 122, 120, 118, 115, 115, 113, 111, 109, 101, 100, 97, 93, 89, + 89, 88, 85, 59, 57, 61, 92, 139, 211, 98, 48, 72, 43, 48, 102, 232, + 245, 255, 242, 201, 45, 19, 42, 49, 51, 53, 121, 211, 169, 154, 167, 214, + 196, 98, 52, 56, 42, 59, 55, 52, 102, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 85, 83, 146, 138, 142, 117, 99, 116, + 127, 114, 103, 95, 99, 111, 116, 114, 124, 131, 126, 142, 132, 135, 145, 138, + 129, 130, 128, 127, 126, 125, 122, 121, 118, 116, 116, 132, 134, 124, 109, 103, + 108, 116, 116, 124, 124, 125, 124, 121, 117, 113, 109, 95, 95, 94, 88, 78, + 72, 72, 73, 57, 63, 72, 78, 81, 88, 96, 103, 107, 117, 123, 123, 124, + 128, 126, 122, 123, 124, 124, 124, 122, 118, 111, 108, 109, 112, 113, 109, 104, + 102, 97, 89, 104, 55, 83, 69, 67, 80, 188, 221, 46, 73, 201, 255, 255, + 252, 232, 117, 59, 22, 48, 49, 30, 56, 88, 114, 151, 86, 112, 132, 90, + 64, 50, 45, 47, 50, 56, 61, 78, 196, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 206, 117, 134, 190, 215, 209, 194, 163, 133, + 137, 143, 127, 123, 116, 125, 136, 134, 134, 141, 143, 142, 133, 136, 145, 140, + 135, 134, 134, 132, 131, 129, 126, 125, 122, 121, 121, 121, 127, 127, 121, 118, + 122, 124, 123, 127, 127, 127, 124, 119, 115, 112, 110, 98, 95, 91, 89, 85, + 83, 79, 78, 72, 76, 84, 86, 90, 93, 100, 106, 111, 117, 119, 116, 118, + 125, 129, 129, 124, 126, 129, 128, 125, 121, 117, 114, 112, 115, 115, 110, 107, + 106, 100, 95, 83, 93, 94, 55, 81, 68, 128, 198, 173, 211, 255, 236, 125, + 84, 79, 16, 61, 39, 42, 36, 50, 68, 77, 112, 122, 52, 57, 72, 62, + 57, 43, 35, 55, 35, 50, 105, 173, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 110, 150, 175, 190, 222, 229, 220, 227, 201, 148, + 151, 175, 159, 139, 123, 128, 146, 142, 133, 139, 148, 145, 137, 140, 148, 143, + 139, 139, 137, 132, 130, 129, 126, 124, 121, 120, 120, 111, 117, 121, 121, 120, + 124, 126, 124, 130, 129, 128, 123, 117, 113, 112, 111, 102, 96, 91, 91, 92, + 93, 90, 86, 86, 88, 94, 93, 95, 96, 102, 106, 111, 115, 117, 117, 119, + 125, 130, 131, 126, 130, 134, 133, 129, 124, 123, 121, 119, 120, 118, 112, 106, + 105, 99, 94, 95, 79, 84, 62, 71, 49, 90, 125, 121, 183, 223, 162, 46, + 30, 51, 41, 42, 47, 39, 44, 86, 85, 57, 81, 79, 57, 59, 52, 47, + 57, 52, 45, 38, 47, 98, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 142, 144, 184, 207, 208, 218, 232, 231, 238, 215, 169, + 159, 163, 141, 146, 131, 135, 144, 138, 133, 137, 140, 152, 143, 145, 151, 146, + 142, 141, 137, 132, 131, 130, 127, 125, 122, 121, 120, 116, 119, 119, 117, 118, + 122, 125, 124, 131, 131, 127, 122, 115, 111, 112, 112, 103, 99, 96, 94, 96, + 95, 94, 93, 93, 96, 97, 98, 99, 101, 106, 109, 111, 117, 124, 127, 128, + 128, 127, 125, 127, 131, 136, 135, 130, 126, 126, 128, 126, 126, 121, 113, 106, + 104, 97, 92, 83, 63, 81, 66, 60, 73, 114, 97, 116, 153, 151, 112, 44, + 46, 45, 44, 35, 46, 46, 61, 101, 95, 60, 58, 50, 74, 81, 59, 52, + 60, 54, 45, 37, 106, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 142, 149, 176, 214, 229, 226, 227, 247, 253, 241, 222, 211, + 194, 170, 156, 157, 148, 148, 147, 139, 143, 144, 138, 150, 145, 146, 151, 146, + 144, 143, 136, 137, 136, 134, 131, 130, 127, 127, 127, 124, 123, 124, 125, 127, + 127, 128, 128, 131, 131, 127, 122, 113, 110, 111, 112, 104, 102, 101, 98, 95, + 94, 95, 98, 98, 98, 99, 100, 103, 108, 115, 118, 118, 121, 126, 129, 129, + 124, 122, 121, 126, 129, 133, 133, 130, 128, 128, 129, 125, 126, 122, 115, 109, + 108, 102, 98, 81, 87, 86, 64, 77, 94, 109, 94, 71, 72, 45, 38, 27, + 44, 40, 50, 58, 50, 56, 73, 86, 95, 94, 73, 48, 53, 45, 45, 49, + 43, 44, 59, 93, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 149, 169, 174, 224, 250, 254, 243, 240, 246, 251, 233, 224, 239, + 234, 212, 205, 168, 163, 160, 151, 145, 150, 150, 138, 143, 140, 143, 148, 143, + 144, 145, 138, 136, 135, 134, 132, 131, 129, 129, 129, 121, 121, 127, 134, 138, + 132, 126, 123, 128, 128, 128, 122, 113, 110, 111, 113, 104, 104, 104, 100, 94, + 93, 95, 100, 102, 101, 101, 102, 107, 112, 119, 122, 125, 122, 122, 122, 121, + 118, 120, 125, 128, 128, 130, 131, 132, 131, 131, 130, 121, 124, 123, 119, 117, + 116, 114, 108, 107, 47, 42, 85, 104, 91, 85, 78, 66, 64, 47, 47, 47, + 48, 47, 65, 61, 47, 66, 89, 78, 97, 124, 83, 77, 59, 46, 68, 68, + 49, 94, 156, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 221, 143, 168, 194, 198, 245, 252, 251, 243, 235, 253, 249, 244, 238, 232, + 231, 227, 217, 180, 164, 160, 158, 150, 150, 150, 142, 145, 142, 145, 148, 144, + 146, 148, 140, 131, 131, 132, 131, 131, 129, 131, 130, 124, 123, 127, 135, 138, + 132, 126, 124, 125, 127, 128, 122, 114, 110, 112, 114, 107, 104, 101, 99, 96, + 98, 101, 103, 106, 103, 101, 101, 105, 110, 115, 117, 121, 118, 119, 122, 123, + 120, 123, 130, 132, 129, 129, 132, 136, 138, 135, 132, 124, 128, 129, 125, 124, + 123, 120, 113, 102, 63, 69, 116, 129, 113, 90, 70, 47, 53, 58, 52, 56, + 46, 47, 54, 54, 52, 69, 94, 84, 104, 137, 98, 50, 51, 44, 60, 53, + 55, 131, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 180, 171, 213, 239, 225, 252, 240, 246, 255, 253, 243, 233, 255, 255, 224, + 225, 243, 228, 189, 165, 159, 167, 159, 148, 149, 151, 151, 147, 150, 151, 147, + 148, 149, 137, 134, 134, 135, 135, 135, 134, 136, 134, 139, 131, 130, 134, 137, + 132, 130, 130, 121, 126, 127, 123, 115, 111, 112, 115, 109, 103, 98, 97, 101, + 104, 104, 103, 107, 105, 101, 100, 102, 104, 108, 109, 113, 113, 121, 130, 133, + 128, 127, 132, 136, 131, 130, 133, 140, 143, 139, 134, 131, 135, 136, 132, 128, + 126, 120, 114, 98, 234, 220, 132, 140, 137, 70, 46, 56, 53, 57, 41, 59, + 58, 67, 55, 67, 70, 68, 83, 86, 110, 152, 128, 79, 100, 93, 94, 103, + 146, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 202, 208, 216, 241, 242, 242, 243, 247, 249, 247, 245, 246, 241, 245, 248, 236, + 219, 229, 250, 222, 165, 171, 147, 184, 166, 166, 142, 154, 158, 148, 141, 151, + 153, 148, 148, 146, 133, 131, 140, 144, 136, 137, 146, 141, 130, 131, 138, 142, + 131, 127, 129, 119, 120, 120, 118, 119, 120, 116, 107, 110, 106, 102, 99, 102, + 107, 106, 104, 109, 108, 106, 104, 105, 111, 115, 116, 114, 118, 120, 118, 121, + 127, 131, 132, 135, 133, 130, 127, 134, 144, 142, 134, 123, 119, 115, 121, 134, + 137, 121, 103, 112, 222, 148, 70, 93, 122, 37, 69, 65, 61, 58, 58, 59, + 64, 68, 69, 75, 65, 90, 91, 93, 114, 119, 134, 104, 101, 137, 166, 216, + 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 216, 228, 242, 246, 246, 245, 248, 249, 251, 249, 248, 255, 255, 255, 250, 237, + 226, 222, 225, 238, 207, 181, 169, 155, 174, 161, 164, 152, 158, 151, 146, 153, + 154, 146, 145, 147, 138, 135, 139, 141, 136, 136, 140, 133, 126, 130, 139, 142, + 132, 128, 131, 127, 126, 123, 121, 123, 124, 117, 106, 111, 106, 104, 105, 106, + 106, 104, 103, 108, 108, 110, 109, 112, 113, 115, 115, 113, 118, 120, 118, 120, + 126, 130, 130, 132, 130, 127, 125, 132, 140, 139, 132, 121, 114, 114, 127, 135, + 130, 121, 117, 123, 129, 164, 170, 77, 82, 80, 83, 68, 64, 63, 63, 66, + 70, 72, 73, 84, 75, 96, 96, 95, 112, 118, 128, 141, 165, 216, 218, 227, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 235, 243, 246, 246, 247, 248, 249, 249, 249, 248, 238, 246, 247, 244, 248, + 253, 249, 238, 232, 216, 181, 166, 143, 179, 162, 167, 154, 159, 155, 151, 158, + 157, 146, 142, 148, 144, 139, 136, 137, 136, 136, 134, 129, 127, 133, 141, 140, + 129, 125, 128, 123, 122, 118, 118, 121, 122, 114, 102, 105, 99, 101, 107, 109, + 105, 104, 107, 108, 108, 111, 112, 115, 114, 115, 115, 112, 117, 119, 117, 118, + 123, 127, 126, 128, 126, 124, 124, 130, 136, 135, 130, 121, 113, 119, 135, 135, + 123, 121, 131, 124, 86, 132, 178, 92, 77, 75, 84, 66, 63, 65, 67, 71, + 74, 76, 76, 87, 80, 99, 100, 97, 112, 117, 121, 137, 186, 255, 244, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 239, 241, 245, 247, 246, 246, 247, 247, 246, 247, 247, 250, 250, 249, 251, + 254, 248, 238, 238, 223, 205, 175, 182, 199, 178, 163, 158, 162, 157, 151, 160, + 157, 148, 145, 147, 146, 140, 132, 131, 136, 136, 130, 133, 132, 136, 140, 134, + 125, 122, 125, 113, 115, 116, 115, 117, 118, 114, 106, 101, 95, 96, 107, 109, + 103, 104, 112, 109, 108, 110, 113, 115, 114, 115, 116, 112, 116, 118, 116, 117, + 121, 123, 122, 126, 124, 123, 124, 129, 133, 132, 129, 123, 121, 126, 134, 133, + 126, 125, 132, 116, 98, 92, 108, 86, 83, 54, 69, 67, 67, 69, 73, 79, + 83, 84, 85, 90, 90, 103, 106, 106, 118, 125, 122, 113, 164, 242, 238, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 255, 247, 250, 250, 248, 246, 245, 245, 246, 255, 254, 253, 253, 250, + 243, 240, 243, 240, 238, 226, 201, 206, 205, 171, 157, 166, 167, 159, 151, 159, + 158, 151, 150, 143, 142, 137, 130, 129, 133, 135, 129, 133, 131, 133, 132, 127, + 121, 121, 125, 109, 115, 118, 115, 115, 115, 115, 113, 108, 102, 101, 107, 106, + 103, 106, 114, 112, 107, 106, 109, 111, 110, 114, 118, 112, 116, 118, 115, 116, + 119, 120, 119, 125, 122, 123, 126, 130, 131, 131, 130, 128, 133, 133, 128, 130, + 133, 129, 120, 110, 86, 93, 86, 45, 68, 75, 66, 75, 76, 78, 81, 88, + 90, 90, 90, 95, 101, 108, 113, 112, 121, 133, 122, 113, 153, 234, 242, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 255, 253, 251, 248, 245, 245, 247, 244, 242, 244, 251, 250, + 245, 252, 255, 228, 243, 231, 230, 205, 200, 157, 175, 172, 172, 161, 151, 159, + 159, 154, 154, 143, 138, 132, 129, 129, 129, 132, 130, 127, 126, 127, 126, 124, + 124, 125, 127, 113, 117, 117, 112, 110, 111, 111, 110, 118, 116, 113, 109, 104, + 104, 106, 109, 114, 106, 105, 108, 111, 108, 113, 120, 113, 117, 119, 116, 115, + 118, 118, 116, 125, 121, 123, 127, 130, 129, 129, 130, 131, 139, 135, 124, 126, + 136, 127, 108, 108, 77, 92, 91, 56, 74, 87, 79, 80, 80, 80, 83, 86, + 87, 88, 87, 95, 103, 102, 109, 108, 114, 130, 113, 121, 144, 225, 245, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 255, 255, 252, 245, 242, 241, 245, 249, 253, 251, 246, 245, + 246, 247, 246, 242, 248, 248, 250, 236, 204, 163, 194, 176, 175, 163, 154, 161, + 160, 155, 155, 145, 134, 128, 129, 129, 123, 126, 130, 123, 122, 122, 122, 124, + 125, 124, 121, 118, 116, 110, 105, 109, 114, 112, 107, 114, 121, 119, 109, 103, + 107, 109, 104, 113, 105, 106, 112, 115, 109, 112, 119, 113, 118, 120, 117, 116, + 117, 117, 115, 123, 119, 122, 128, 130, 127, 127, 130, 131, 134, 133, 127, 125, + 127, 117, 105, 107, 88, 87, 87, 93, 91, 74, 81, 79, 78, 78, 83, 86, + 89, 90, 90, 95, 105, 99, 108, 106, 113, 132, 114, 131, 123, 198, 239, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 250, 251, 251, 248, 242, 238, 237, 241, 240, 252, 252, 240, 242, + 254, 252, 240, 255, 237, 255, 238, 255, 186, 154, 169, 178, 177, 167, 159, 165, + 165, 157, 155, 149, 134, 126, 130, 129, 119, 121, 129, 124, 123, 122, 123, 125, + 125, 120, 113, 124, 116, 106, 105, 115, 124, 120, 111, 102, 116, 118, 106, 101, + 110, 111, 101, 112, 107, 108, 116, 118, 111, 111, 118, 114, 118, 121, 118, 116, + 117, 117, 114, 122, 118, 121, 127, 129, 125, 125, 129, 130, 127, 128, 130, 126, + 116, 110, 107, 107, 89, 103, 98, 89, 85, 74, 70, 81, 82, 83, 88, 95, + 100, 103, 104, 101, 113, 106, 117, 118, 127, 151, 131, 152, 117, 179, 234, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 247, 247, 246, 246, 246, 247, 248, 248, 242, 244, 251, 247, + 238, 242, 255, 253, 246, 240, 242, 248, 242, 217, 189, 170, 185, 179, 166, 138, + 180, 178, 144, 152, 139, 130, 129, 125, 115, 114, 116, 127, 122, 118, 115, 115, + 118, 118, 116, 116, 110, 106, 105, 107, 108, 107, 105, 107, 104, 105, 108, 111, + 110, 107, 103, 110, 114, 111, 105, 107, 113, 115, 113, 118, 118, 118, 117, 115, + 116, 119, 122, 111, 116, 120, 121, 119, 119, 122, 127, 127, 129, 126, 119, 114, + 111, 112, 112, 92, 90, 90, 88, 86, 82, 81, 83, 94, 96, 91, 98, 111, + 113, 111, 122, 121, 117, 104, 133, 121, 119, 165, 141, 140, 132, 126, 219, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 248, 247, 246, 247, 247, 249, 249, 251, 247, 249, 252, 252, + 245, 248, 255, 251, 246, 241, 243, 248, 244, 223, 199, 190, 177, 170, 186, 163, + 169, 163, 157, 149, 137, 127, 127, 123, 115, 115, 116, 116, 115, 116, 116, 117, + 119, 120, 120, 105, 105, 105, 104, 102, 102, 102, 103, 104, 103, 104, 106, 108, + 108, 106, 102, 108, 111, 111, 107, 109, 113, 113, 109, 115, 116, 118, 118, 116, + 115, 116, 117, 118, 118, 119, 120, 122, 123, 122, 123, 123, 125, 123, 120, 113, + 110, 110, 111, 108, 101, 94, 92, 85, 77, 74, 80, 86, 93, 96, 100, 111, + 109, 112, 125, 130, 129, 124, 144, 137, 135, 164, 150, 153, 141, 129, 204, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 253, 250, 248, 248, 249, 249, 249, 252, 251, 251, 251, 254, + 253, 251, 250, 247, 245, 243, 243, 247, 244, 230, 212, 202, 175, 166, 190, 173, + 159, 151, 156, 146, 133, 125, 125, 122, 115, 113, 117, 109, 111, 117, 119, 118, + 116, 117, 119, 107, 112, 116, 116, 112, 109, 111, 113, 102, 102, 102, 104, 106, + 105, 104, 102, 104, 108, 110, 109, 111, 113, 111, 107, 112, 114, 118, 118, 117, + 114, 113, 113, 121, 118, 116, 117, 121, 122, 119, 116, 118, 121, 118, 116, 111, + 108, 105, 105, 102, 92, 86, 91, 89, 81, 82, 93, 94, 105, 113, 116, 124, + 119, 121, 136, 142, 143, 144, 151, 150, 148, 156, 158, 153, 136, 114, 159, 236, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 252, 251, 252, 250, 249, 248, 250, 250, 250, 247, 252, + 255, 251, 241, 245, 246, 244, 242, 243, 243, 233, 223, 210, 198, 183, 176, 165, + 163, 157, 150, 146, 134, 125, 125, 122, 114, 113, 116, 109, 112, 119, 122, 117, + 110, 108, 111, 102, 105, 107, 106, 103, 101, 102, 104, 103, 102, 102, 103, 104, + 103, 105, 104, 104, 106, 108, 108, 111, 111, 109, 107, 113, 115, 117, 117, 115, + 114, 113, 114, 115, 113, 112, 114, 116, 117, 114, 114, 115, 119, 117, 114, 109, + 104, 100, 100, 89, 78, 77, 91, 95, 88, 89, 100, 97, 105, 107, 111, 118, + 115, 116, 129, 132, 134, 143, 142, 149, 151, 147, 162, 167, 149, 120, 135, 232, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 252, 252, 251, 250, 248, 249, 249, 248, 246, 252, + 253, 248, 237, 246, 247, 244, 241, 239, 239, 233, 226, 227, 221, 199, 168, 164, + 166, 163, 151, 148, 136, 126, 126, 122, 114, 112, 115, 108, 110, 117, 122, 116, + 105, 103, 107, 110, 106, 102, 100, 101, 102, 101, 100, 103, 104, 104, 103, 102, + 103, 105, 106, 106, 105, 105, 107, 109, 109, 109, 111, 117, 117, 117, 115, 113, + 113, 114, 117, 107, 110, 113, 113, 112, 111, 113, 117, 115, 116, 115, 111, 105, + 100, 95, 94, 90, 81, 82, 93, 94, 83, 78, 82, 98, 100, 97, 101, 112, + 113, 113, 124, 117, 119, 128, 129, 138, 142, 139, 154, 157, 146, 132, 136, 237, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 253, 251, 249, 248, 253, 249, 248, 250, 253, + 252, 246, 239, 245, 246, 243, 239, 239, 238, 234, 227, 236, 226, 203, 170, 171, + 155, 154, 156, 148, 136, 126, 126, 122, 113, 111, 114, 105, 103, 110, 117, 115, + 106, 104, 110, 120, 114, 107, 105, 107, 109, 108, 106, 104, 104, 104, 102, 100, + 101, 106, 108, 107, 104, 104, 107, 110, 108, 110, 113, 118, 118, 116, 114, 111, + 112, 114, 117, 105, 110, 114, 114, 111, 110, 113, 116, 111, 112, 110, 106, 100, + 94, 91, 91, 92, 88, 88, 93, 91, 83, 73, 69, 93, 93, 88, 93, 106, + 109, 110, 120, 121, 120, 120, 127, 130, 127, 131, 129, 140, 127, 123, 133, 232, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 249, 251, 251, 249, 250, 255, 249, 247, 252, 254, + 246, 242, 245, 244, 244, 243, 238, 240, 241, 237, 230, 232, 227, 212, 181, 184, + 156, 154, 158, 147, 132, 123, 124, 121, 113, 111, 115, 105, 99, 102, 112, 113, + 107, 106, 112, 104, 102, 100, 99, 98, 99, 98, 98, 102, 103, 102, 100, 98, + 98, 104, 108, 106, 103, 105, 111, 114, 110, 109, 112, 115, 116, 116, 114, 112, + 111, 111, 113, 108, 109, 111, 111, 110, 110, 110, 110, 105, 104, 102, 98, 93, + 90, 89, 88, 86, 88, 88, 87, 89, 90, 82, 70, 71, 75, 72, 74, 82, + 81, 81, 91, 103, 102, 97, 121, 119, 112, 131, 109, 133, 114, 119, 139, 227, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 253, 251, 250, 249, 250, 255, 246, 245, 254, 253, + 242, 240, 247, 242, 243, 241, 240, 242, 245, 240, 232, 225, 240, 234, 190, 197, + 175, 168, 159, 143, 129, 122, 122, 120, 113, 112, 116, 108, 98, 99, 109, 112, + 106, 105, 112, 99, 103, 106, 105, 102, 100, 101, 103, 101, 102, 101, 98, 95, + 96, 103, 107, 103, 102, 106, 114, 117, 111, 108, 110, 111, 113, 116, 115, 113, + 110, 109, 108, 111, 108, 105, 106, 109, 109, 105, 101, 98, 99, 96, 92, 89, + 88, 87, 88, 86, 91, 89, 83, 86, 93, 87, 72, 70, 75, 77, 76, 76, + 67, 65, 77, 53, 55, 57, 103, 106, 104, 141, 107, 80, 73, 106, 161, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 246, 249, 250, 247, 255, 253, 251, 251, 245, + 238, 240, 246, 243, 245, 243, 240, 238, 239, 235, 229, 226, 226, 225, 216, 199, + 176, 163, 158, 147, 135, 132, 119, 113, 115, 110, 113, 100, 100, 102, 104, 106, + 108, 108, 109, 99, 97, 98, 103, 105, 102, 100, 100, 106, 99, 95, 99, 101, + 100, 102, 103, 104, 107, 112, 116, 119, 117, 113, 110, 106, 108, 109, 111, 110, + 108, 106, 104, 117, 113, 109, 108, 109, 107, 100, 94, 94, 96, 97, 96, 92, + 91, 92, 94, 85, 91, 96, 95, 88, 84, 84, 85, 78, 66, 85, 65, 79, + 83, 82, 66, 96, 148, 123, 75, 67, 70, 76, 73, 87, 178, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 241, 240, 246, 248, 255, 252, 249, 247, 244, + 238, 240, 245, 243, 245, 244, 240, 240, 239, 235, 229, 229, 228, 225, 219, 202, + 181, 165, 157, 144, 133, 127, 116, 110, 109, 106, 106, 99, 99, 100, 103, 105, + 106, 107, 108, 102, 96, 94, 96, 98, 98, 99, 102, 95, 92, 92, 98, 102, + 103, 108, 112, 106, 107, 109, 111, 114, 114, 113, 112, 110, 111, 112, 112, 112, + 110, 109, 108, 111, 107, 104, 105, 107, 106, 101, 96, 94, 92, 91, 92, 93, + 94, 93, 91, 90, 93, 96, 95, 90, 87, 88, 87, 97, 75, 69, 79, 73, + 71, 76, 81, 188, 214, 176, 127, 104, 82, 140, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 251, 240, 244, 245, 255, 248, 244, 241, 241, + 239, 241, 244, 244, 244, 243, 239, 239, 238, 234, 228, 232, 228, 223, 222, 211, + 192, 176, 168, 140, 131, 121, 113, 107, 104, 103, 100, 98, 97, 98, 100, 102, + 104, 106, 106, 104, 95, 88, 88, 90, 92, 97, 103, 97, 95, 96, 100, 100, + 98, 103, 109, 108, 107, 106, 106, 108, 110, 113, 115, 112, 112, 111, 111, 111, + 110, 110, 110, 107, 104, 102, 102, 103, 102, 98, 94, 94, 89, 86, 88, 95, + 97, 93, 88, 84, 85, 86, 87, 88, 89, 88, 89, 83, 75, 77, 88, 83, + 85, 75, 189, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 245, 238, 249, 246, 241, 238, 239, + 241, 243, 243, 243, 245, 242, 239, 238, 239, 233, 229, 234, 228, 223, 222, 217, + 206, 194, 184, 138, 133, 117, 112, 108, 102, 105, 98, 96, 94, 95, 97, 99, + 101, 103, 104, 102, 93, 86, 85, 86, 89, 94, 101, 99, 98, 100, 101, 98, + 94, 98, 104, 108, 107, 105, 104, 107, 110, 112, 114, 110, 110, 109, 108, 107, + 107, 108, 108, 109, 106, 102, 101, 100, 98, 94, 91, 96, 93, 90, 92, 96, + 98, 94, 90, 96, 94, 92, 92, 94, 96, 94, 93, 94, 86, 104, 75, 94, + 86, 52, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 237, 245, 245, 241, 238, 238, + 241, 243, 243, 243, 245, 242, 239, 238, 239, 233, 229, 241, 231, 222, 219, 218, + 208, 199, 193, 142, 138, 115, 114, 111, 102, 111, 100, 94, 92, 92, 93, 95, + 98, 100, 102, 99, 92, 86, 87, 88, 89, 92, 96, 94, 94, 97, 100, 98, + 95, 100, 106, 105, 105, 105, 106, 109, 110, 111, 111, 110, 109, 108, 107, 106, + 107, 107, 107, 108, 105, 103, 100, 99, 97, 94, 92, 98, 98, 98, 97, 95, + 94, 94, 95, 98, 95, 92, 90, 88, 88, 86, 84, 100, 81, 97, 73, 86, + 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 239, 246, 247, 240, 239, + 241, 244, 243, 244, 246, 243, 240, 239, 240, 234, 230, 244, 234, 222, 216, 212, + 202, 191, 185, 149, 146, 114, 115, 111, 100, 114, 99, 91, 89, 89, 90, 92, + 95, 98, 100, 98, 92, 89, 91, 92, 91, 91, 94, 98, 97, 98, 100, 98, + 93, 95, 98, 102, 103, 104, 105, 108, 108, 108, 108, 109, 109, 109, 109, 108, + 108, 107, 107, 103, 102, 100, 99, 98, 98, 98, 98, 95, 98, 99, 98, 94, + 93, 94, 96, 89, 90, 92, 93, 93, 94, 96, 97, 90, 87, 98, 107, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 248, 253, 245, 240, + 240, 244, 246, 245, 247, 246, 241, 240, 241, 237, 232, 242, 234, 224, 220, 210, + 196, 184, 178, 157, 154, 114, 114, 109, 94, 111, 92, 90, 87, 87, 88, 90, + 93, 96, 98, 100, 94, 92, 94, 95, 93, 93, 95, 104, 99, 98, 100, 99, + 93, 91, 91, 99, 100, 100, 101, 104, 104, 105, 106, 106, 107, 108, 109, 108, + 107, 105, 104, 101, 101, 99, 98, 96, 96, 97, 98, 91, 90, 90, 92, 92, + 94, 93, 92, 97, 101, 103, 105, 104, 104, 106, 109, 99, 105, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 246, 254, 247, 238, + 240, 244, 247, 245, 247, 246, 241, 240, 239, 236, 230, 235, 232, 227, 222, 213, + 197, 183, 176, 162, 158, 113, 112, 106, 87, 107, 86, 89, 86, 86, 86, 88, + 92, 95, 97, 102, 97, 93, 95, 96, 95, 95, 97, 96, 91, 91, 97, 101, + 99, 98, 98, 99, 98, 97, 98, 99, 101, 103, 106, 102, 103, 107, 106, 106, + 104, 102, 100, 103, 103, 100, 97, 94, 92, 93, 94, 87, 83, 81, 85, 92, + 96, 95, 90, 94, 98, 99, 91, 80, 72, 67, 68, 84, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 241, 247, 243, 235, + 234, 243, 253, 246, 248, 232, 238, 236, 231, 197, 237, 231, 228, 238, 212, 200, + 207, 182, 181, 152, 139, 121, 109, 104, 101, 97, 94, 93, 94, 93, 91, 88, + 90, 94, 99, 97, 94, 92, 93, 96, 98, 97, 95, 91, 93, 95, 94, 95, + 96, 96, 94, 94, 99, 104, 103, 98, 98, 104, 112, 104, 106, 109, 109, 109, + 107, 105, 103, 102, 100, 97, 94, 91, 90, 89, 89, 86, 84, 78, 71, 79, + 92, 95, 90, 96, 104, 109, 104, 76, 95, 65, 50, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 241, 240, 243, + 243, 238, 235, 238, 239, 247, 247, 249, 208, 176, 213, 227, 237, 214, 217, 191, + 192, 176, 170, 146, 135, 120, 110, 106, 102, 97, 91, 89, 88, 87, 83, 81, + 82, 87, 92, 93, 91, 90, 93, 97, 99, 99, 98, 92, 92, 94, 93, 93, + 96, 95, 94, 92, 97, 100, 100, 98, 97, 101, 106, 104, 106, 107, 107, 106, + 105, 103, 102, 98, 97, 95, 93, 92, 92, 92, 92, 92, 85, 74, 70, 81, + 98, 101, 91, 99, 99, 109, 93, 152, 182, 206, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 239, 243, + 242, 240, 235, 255, 241, 251, 232, 236, 189, 187, 232, 222, 240, 198, 226, 194, + 190, 187, 181, 141, 131, 119, 110, 108, 103, 97, 91, 92, 91, 87, 83, 81, + 82, 87, 91, 90, 89, 90, 92, 96, 98, 99, 98, 94, 91, 93, 93, 93, + 94, 94, 95, 95, 96, 97, 98, 99, 99, 99, 100, 103, 103, 103, 102, 102, + 101, 99, 99, 93, 93, 93, 92, 93, 94, 94, 95, 93, 90, 81, 72, 75, + 86, 93, 89, 100, 86, 96, 71, 219, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 233, + 232, 239, 252, 244, 237, 255, 245, 249, 217, 205, 230, 224, 225, 200, 217, 199, + 188, 185, 183, 144, 133, 119, 110, 107, 102, 96, 92, 94, 91, 86, 81, 79, + 81, 85, 88, 86, 86, 87, 88, 91, 92, 93, 94, 95, 92, 91, 92, 92, + 91, 92, 95, 98, 97, 97, 99, 102, 102, 99, 96, 100, 99, 100, 97, 98, + 96, 96, 96, 91, 91, 92, 92, 93, 94, 94, 95, 89, 96, 94, 78, 68, + 71, 80, 82, 93, 75, 78, 62, 240, 252, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, + 228, 233, 241, 244, 244, 242, 241, 237, 247, 221, 224, 230, 205, 215, 192, 195, + 174, 163, 164, 148, 134, 119, 107, 103, 100, 96, 92, 92, 88, 83, 79, 78, + 79, 81, 83, 83, 84, 85, 87, 89, 92, 95, 98, 98, 93, 92, 95, 95, + 92, 93, 98, 97, 95, 93, 96, 99, 99, 95, 91, 97, 96, 96, 93, 93, + 92, 92, 92, 91, 91, 91, 92, 92, 92, 92, 92, 91, 97, 95, 83, 77, + 78, 79, 75, 82, 71, 61, 73, 227, 250, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 241, 226, 217, 250, 247, 229, 222, 211, 248, 224, 218, 228, 198, 224, 185, 201, + 180, 167, 164, 149, 134, 118, 105, 101, 98, 94, 91, 92, 89, 84, 81, 81, + 83, 83, 83, 82, 83, 84, 85, 87, 92, 99, 105, 101, 95, 94, 99, 99, + 93, 94, 100, 95, 93, 91, 91, 94, 93, 90, 87, 94, 93, 94, 93, 92, + 90, 89, 89, 90, 91, 92, 92, 92, 92, 91, 91, 99, 94, 86, 83, 93, + 102, 91, 73, 76, 77, 58, 81, 182, 242, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 236, 224, 220, 222, 238, 235, 230, 239, 218, 199, 214, 203, 212, 189, 199, + 183, 179, 163, 142, 129, 115, 104, 100, 97, 92, 88, 92, 89, 86, 85, 86, + 87, 85, 84, 85, 85, 83, 80, 80, 85, 93, 101, 102, 96, 97, 103, 103, + 96, 94, 101, 95, 92, 90, 87, 90, 87, 87, 86, 90, 90, 93, 92, 91, + 89, 87, 85, 87, 88, 91, 92, 93, 92, 92, 91, 100, 96, 89, 86, 97, + 106, 98, 80, 82, 94, 75, 79, 129, 227, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 215, 208, 237, 223, 228, 222, 226, 222, 197, 207, 188, 187, 182, + 168, 170, 140, 135, 123, 112, 104, 102, 99, 91, 85, 86, 83, 82, 81, 84, + 83, 82, 78, 90, 86, 82, 75, 72, 74, 82, 88, 102, 96, 98, 106, 106, + 96, 95, 99, 96, 93, 91, 88, 88, 86, 87, 88, 88, 89, 91, 91, 90, + 87, 86, 84, 85, 87, 90, 92, 93, 93, 93, 92, 93, 100, 101, 92, 88, + 93, 95, 91, 91, 113, 99, 81, 104, 221, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 232, 216, 229, 230, 220, 220, 200, 190, 200, 201, 182, 165, + 159, 157, 150, 138, 127, 105, 107, 94, 98, 83, 85, 89, 85, 80, 94, 82, + 80, 75, 85, 74, 81, 87, 83, 81, 89, 80, 56, 102, 157, 141, 59, 92, + 92, 72, 114, 82, 83, 88, 85, 98, 73, 91, 84, 87, 87, 89, 88, 86, + 84, 82, 81, 84, 82, 83, 85, 90, 92, 91, 89, 98, 97, 96, 95, 92, + 90, 94, 98, 93, 98, 93, 67, 174, 220, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 234, 201, 212, 211, 209, 181, 196, 182, 177, 181, 176, + 159, 146, 141, 125, 119, 105, 110, 96, 101, 92, 98, 90, 89, 78, 86, 81, + 95, 87, 85, 100, 91, 85, 82, 255, 255, 255, 255, 212, 233, 218, 109, 70, + 84, 93, 90, 96, 92, 86, 82, 91, 71, 89, 84, 87, 87, 88, 87, 86, + 85, 83, 81, 89, 86, 86, 86, 89, 89, 87, 84, 84, 85, 91, 99, 97, + 84, 86, 99, 91, 94, 89, 86, 231, 226, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 232, 196, 206, 179, 183, 183, 179, 171, 164, + 156, 148, 138, 126, 123, 112, 115, 96, 97, 87, 95, 79, 93, 86, 84, 71, + 89, 86, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 128, + 76, 79, 93, 86, 84, 77, 80, 89, 73, 87, 82, 86, 86, 86, 85, 84, + 83, 81, 80, 88, 86, 84, 84, 86, 85, 84, 82, 94, 96, 95, 100, 95, + 73, 65, 77, 72, 62, 77, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 184, 185, 177, 167, 161, 157, + 151, 144, 141, 128, 124, 112, 115, 97, 97, 83, 88, 81, 88, 83, 86, 77, + 90, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, + 113, 54, 64, 88, 89, 82, 84, 84, 72, 84, 81, 83, 85, 84, 83, 82, + 81, 81, 80, 83, 82, 82, 82, 84, 83, 84, 83, 88, 93, 83, 81, 88, + 76, 62, 65, 77, 81, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 159, 147, 161, 164, + 146, 133, 135, 117, 111, 100, 109, 101, 106, 92, 93, 94, 83, 71, 89, 144, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 138, 65, 86, 92, 84, 89, 79, 70, 81, 84, 84, 84, 83, 82, 83, + 82, 83, 83, 82, 82, 83, 82, 83, 82, 82, 83, 72, 86, 75, 84, 131, + 156, 147, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 153, 138, + 138, 135, 120, 115, 108, 95, 107, 101, 108, 94, 94, 86, 85, 140, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 142, 42, 62, 65, 93, 87, 82, 84, 82, 88, 87, 86, 85, 86, + 86, 87, 87, 85, 87, 88, 85, 84, 81, 82, 82, 70, 86, 79, 110, 194, + 244, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 136, 137, 116, 121, 115, 103, 109, 97, 101, 90, 91, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 197, 87, 69, 90, 83, 85, 83, 82, 85, 84, 85, 83, 83, + 85, 87, 88, 88, 91, 93, 90, 88, 85, 87, 88, 76, 81, 75, 125, 220, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 211, 117, 115, 104, 111, 93, 97, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 205, 85, 59, 70, 80, 89, 81, 80, 79, 80, 80, + 82, 85, 88, 89, 92, 94, 95, 92, 91, 93, 94, 95, 87, 80, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 194, 55, 58, 71, 76, 89, 92, 85, 83, + 92, 99, 99, 96, 93, 92, 91, 89, 88, 94, 98, 81, 85, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 124, 89, 66, 60, 60, 72, 84, + 84, 76, 66, 90, 94, 97, 98, 95, 92, 84, 78, 58, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 65, 47, 43, 62, 83, + 88, 89, 91, 77, 86, 92, 91, 92, 92, 85, 74, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 81, 48, + 35, 43, 59, 67, 74, 70, 55, 46, 49, 49, 112, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 138, 122, 115, 127, 135, 134, 140, 191, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 151, 178, 157, 191, + 191, 182, 118, 150, 202, 221, 226, 135, 107, 212, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 223, 185, 138, 136, 154, 132, 146, 171, 187, 147, 134, 133, 143, 164, 148, 175, + 181, 158, 86, 79, 130, 175, 177, 93, 57, 54, 61, 106, 107, 156, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 120, 139, 143, 107, 126, 152, + 162, 181, 145, 150, 168, 137, 140, 165, 191, 153, 143, 131, 138, 145, 150, 180, + 211, 173, 93, 98, 126, 176, 196, 161, 186, 198, 204, 242, 248, 247, 243, 244, + 254, 254, 248, 249, 180, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 226, 177, 152, 175, 137, 140, 126, 101, 123, 151, + 165, 166, 121, 145, 151, 132, 135, 168, 199, 134, 133, 138, 126, 155, 151, 164, + 220, 228, 211, 229, 228, 245, 255, 255, 233, 247, 232, 244, 251, 255, 229, 255, + 247, 255, 212, 225, 223, 255, 206, 131, 248, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 231, 168, 161, 176, 144, 173, 185, 176, 143, 145, 112, 89, 113, 122, + 113, 104, 61, 76, 85, 67, 78, 123, 185, 198, 178, 123, 147, 167, 191, 215, + 225, 229, 226, 226, 255, 251, 252, 255, 249, 246, 250, 243, 223, 224, 255, 243, + 255, 245, 251, 238, 108, 93, 179, 232, 255, 228, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 225, 175, 176, 171, 181, 188, 129, 139, 122, 133, 117, 105, 80, 101, 165, 190, + 205, 237, 232, 203, 236, 246, 240, 235, 225, 218, 132, 122, 177, 162, 147, 125, + 77, 81, 96, 112, 241, 255, 239, 238, 255, 241, 245, 218, 203, 254, 240, 234, + 239, 255, 234, 245, 238, 194, 90, 135, 122, 199, 213, 241, 225, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 131, + 127, 158, 175, 153, 136, 164, 136, 181, 170, 167, 172, 146, 140, 185, 235, 227, + 223, 248, 250, 254, 251, 240, 211, 242, 235, 230, 156, 128, 157, 125, 82, 52, + 32, 46, 55, 58, 182, 231, 227, 241, 254, 252, 239, 216, 220, 163, 237, 251, + 239, 243, 255, 255, 255, 232, 22, 101, 99, 135, 178, 179, 199, 208, 224, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 187, 187, 184, 130, + 141, 168, 170, 136, 123, 199, 196, 249, 255, 244, 255, 245, 233, 246, 232, 182, + 150, 137, 122, 111, 79, 78, 80, 206, 242, 228, 199, 126, 85, 73, 57, 58, + 82, 71, 52, 30, 27, 52, 67, 135, 180, 247, 229, 225, 244, 45, 136, 250, + 224, 237, 249, 247, 232, 255, 84, 118, 112, 89, 74, 60, 120, 184, 176, 187, + 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 166, 174, 166, 168, 185, 167, + 228, 251, 230, 249, 255, 231, 252, 255, 237, 255, 178, 220, 176, 125, 60, 24, + 34, 41, 49, 72, 53, 72, 62, 144, 120, 62, 50, 78, 43, 83, 103, 102, + 112, 81, 59, 87, 110, 201, 221, 255, 244, 214, 53, 52, 0, 75, 27, 21, + 103, 172, 232, 247, 255, 232, 89, 133, 180, 203, 183, 138, 99, 148, 137, 229, + 173, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 176, 172, 166, 153, 183, 217, 249, 255, + 246, 213, 187, 205, 197, 99, 187, 230, 226, 255, 116, 61, 83, 112, 118, 137, + 144, 113, 113, 75, 65, 70, 52, 79, 63, 72, 90, 70, 140, 223, 247, 243, + 246, 241, 232, 235, 247, 255, 233, 238, 254, 233, 65, 22, 103, 57, 86, 91, + 38, 33, 117, 142, 228, 249, 223, 250, 214, 217, 243, 231, 113, 34, 68, 149, + 181, 151, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 166, 178, 174, 176, 207, 248, 255, 234, 201, + 110, 104, 171, 235, 185, 199, 245, 226, 243, 197, 145, 104, 125, 140, 124, 131, + 127, 104, 135, 75, 66, 62, 73, 84, 70, 106, 87, 30, 187, 253, 245, 240, + 249, 255, 237, 255, 238, 244, 243, 251, 240, 185, 42, 40, 157, 237, 197, 185, + 81, 25, 41, 87, 124, 206, 233, 239, 233, 239, 232, 247, 160, 87, 60, 162, + 220, 188, 199, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 230, 166, 173, 179, 162, 245, 111, 85, 70, 65, + 195, 227, 242, 192, 216, 251, 231, 174, 168, 87, 102, 99, 132, 105, 117, 146, + 101, 100, 63, 88, 195, 197, 195, 244, 255, 249, 237, 211, 234, 238, 247, 239, + 246, 255, 233, 248, 255, 235, 255, 254, 239, 249, 211, 224, 248, 247, 249, 246, + 244, 214, 123, 23, 50, 46, 142, 231, 253, 226, 197, 238, 253, 202, 94, 218, + 242, 238, 229, 144, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 224, 177, 197, 176, 123, 89, 181, 55, 25, 219, 227, + 255, 232, 255, 255, 211, 137, 108, 83, 50, 68, 103, 96, 61, 86, 116, 129, + 82, 47, 196, 246, 235, 207, 245, 244, 255, 238, 235, 243, 232, 208, 217, 220, + 235, 236, 244, 237, 254, 236, 187, 166, 208, 233, 254, 255, 250, 229, 237, 242, + 245, 255, 249, 226, 44, 37, 51, 114, 158, 253, 237, 155, 162, 253, 191, 183, + 238, 247, 255, 239, 155, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 158, 168, 146, 155, 202, 226, 238, 206, 206, 240, 248, + 171, 189, 145, 108, 96, 66, 57, 98, 115, 183, 210, 228, 241, 103, 91, 175, + 194, 230, 239, 152, 95, 195, 236, 255, 244, 237, 255, 248, 246, 243, 255, 255, + 247, 228, 255, 250, 202, 66, 53, 58, 53, 56, 58, 224, 255, 254, 252, 253, + 252, 254, 242, 247, 252, 220, 59, 114, 77, 77, 189, 248, 240, 216, 201, 196, + 237, 184, 139, 245, 251, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 228, 146, 185, 199, 174, 180, 224, 253, 251, 253, 222, 255, 228, + 76, 116, 106, 123, 66, 79, 91, 122, 148, 187, 255, 255, 243, 209, 65, 127, + 230, 205, 213, 125, 13, 218, 255, 239, 247, 253, 220, 255, 251, 250, 251, 243, + 229, 237, 220, 236, 164, 52, 52, 84, 83, 35, 69, 194, 242, 251, 241, 247, + 250, 243, 238, 255, 255, 223, 161, 134, 133, 65, 121, 211, 255, 193, 189, 210, + 232, 142, 83, 247, 244, 228, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 166, 187, 166, 171, 239, 230, 200, 245, 255, 228, 253, 122, 80, + 112, 111, 208, 255, 245, 238, 170, 110, 204, 212, 240, 226, 248, 246, 152, 71, + 65, 82, 54, 85, 102, 151, 245, 244, 255, 236, 255, 238, 237, 249, 251, 255, + 239, 235, 109, 53, 222, 196, 234, 225, 168, 199, 176, 208, 220, 228, 242, 253, + 242, 234, 255, 250, 246, 255, 235, 5, 107, 145, 61, 122, 197, 230, 213, 213, + 233, 108, 78, 207, 255, 235, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 171, 173, 161, 197, 216, 110, 38, 95, 191, 126, 66, 136, 244, + 244, 247, 231, 205, 237, 255, 252, 110, 183, 212, 255, 242, 238, 255, 251, 129, + 131, 149, 116, 101, 141, 74, 193, 253, 237, 255, 241, 255, 255, 253, 228, 239, + 247, 247, 115, 54, 218, 242, 190, 167, 158, 184, 190, 192, 210, 231, 235, 243, + 247, 234, 244, 239, 237, 233, 255, 56, 57, 110, 107, 55, 110, 91, 113, 195, + 241, 132, 67, 168, 244, 254, 241, 223, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 180, 150, 165, 191, 143, 65, 52, 86, 98, 72, 28, 173, 232, + 241, 198, 199, 91, 168, 255, 230, 59, 195, 225, 246, 254, 167, 225, 255, 166, + 102, 140, 147, 125, 133, 53, 99, 242, 236, 255, 241, 239, 245, 255, 247, 247, + 253, 166, 82, 112, 215, 225, 199, 217, 181, 200, 176, 179, 204, 229, 203, 197, + 238, 250, 250, 236, 252, 251, 240, 72, 36, 95, 101, 102, 154, 69, 85, 143, + 242, 205, 70, 179, 252, 217, 234, 213, 170, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 225, 172, 192, 161, 102, 100, 137, 129, 84, 96, 74, 125, 59, 76, + 44, 54, 91, 57, 70, 233, 209, 69, 239, 208, 233, 237, 157, 235, 255, 243, + 104, 170, 112, 138, 100, 118, 73, 37, 130, 217, 248, 255, 244, 249, 242, 246, + 253, 74, 35, 0, 88, 196, 161, 187, 165, 151, 163, 209, 214, 248, 229, 197, + 205, 213, 227, 234, 211, 218, 220, 84, 38, 80, 87, 108, 117, 137, 115, 47, + 248, 241, 37, 79, 231, 250, 143, 45, 229, 59, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 182, 192, 230, 115, 100, 105, 104, 93, 101, 93, 122, 118, 55, 50, + 72, 105, 106, 89, 111, 166, 113, 129, 253, 179, 230, 237, 159, 192, 239, 255, + 91, 84, 138, 129, 122, 130, 119, 102, 58, 49, 90, 166, 249, 241, 251, 236, + 243, 253, 222, 188, 35, 41, 64, 54, 72, 135, 195, 232, 241, 237, 244, 224, + 233, 243, 152, 130, 141, 111, 117, 39, 77, 68, 71, 91, 124, 96, 111, 54, + 239, 255, 48, 33, 163, 226, 65, 31, 199, 105, 142, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 139, 107, 120, 94, 85, 93, 72, 93, 83, 83, 72, 77, 60, 74, + 95, 120, 102, 107, 113, 115, 134, 86, 103, 197, 243, 246, 248, 252, 248, 240, + 154, 53, 37, 46, 36, 33, 120, 105, 97, 78, 72, 151, 255, 236, 246, 255, + 247, 242, 241, 239, 218, 195, 214, 227, 212, 235, 238, 230, 225, 238, 241, 252, + 228, 235, 61, 45, 68, 71, 55, 82, 94, 60, 89, 85, 78, 93, 87, 70, + 241, 249, 40, 72, 102, 254, 41, 25, 88, 184, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 139, 65, 79, 83, 83, 84, 92, 91, 80, 63, 48, 70, 70, 66, + 67, 106, 113, 98, 92, 96, 94, 85, 92, 167, 242, 245, 238, 246, 255, 241, + 143, 38, 88, 97, 108, 53, 76, 113, 92, 98, 90, 133, 254, 249, 247, 251, + 247, 251, 253, 233, 255, 244, 241, 249, 247, 255, 252, 243, 210, 226, 240, 216, + 182, 237, 68, 68, 60, 79, 62, 106, 105, 58, 86, 86, 87, 80, 114, 70, + 215, 235, 52, 85, 61, 219, 52, 47, 36, 250, 124, 150, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 113, 101, 79, 82, 74, 105, 111, 92, 94, 104, 85, 84, 81, 98, + 80, 77, 71, 72, 69, 118, 115, 126, 136, 84, 124, 190, 234, 239, 229, 222, + 228, 233, 250, 246, 244, 148, 94, 91, 104, 109, 74, 138, 240, 242, 253, 244, + 243, 253, 241, 211, 223, 250, 250, 242, 254, 239, 240, 231, 253, 170, 247, 253, + 100, 54, 243, 242, 79, 54, 109, 74, 85, 97, 108, 73, 70, 83, 78, 91, + 78, 222, 68, 68, 94, 131, 102, 83, 75, 194, 231, 75, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 220, 11, 108, 51, 89, 75, 97, 102, 109, 91, 81, 87, 64, 38, 78, + 70, 60, 64, 123, 105, 80, 116, 75, 86, 105, 96, 83, 75, 85, 246, 255, + 238, 251, 255, 239, 255, 254, 237, 14, 77, 102, 94, 112, 238, 237, 248, 254, + 247, 237, 228, 238, 228, 207, 208, 253, 255, 242, 247, 244, 253, 190, 214, 224, + 233, 106, 81, 152, 180, 71, 31, 74, 87, 70, 103, 92, 81, 92, 88, 97, + 37, 188, 149, 60, 134, 84, 132, 104, 115, 72, 226, 95, 147, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 161, 132, 235, 225, 234, 209, 70, 123, 99, 45, 70, 118, 122, 90, 115, + 95, 69, 56, 123, 157, 90, 105, 86, 113, 122, 97, 112, 91, 30, 226, 248, + 245, 255, 247, 254, 231, 246, 251, 50, 91, 107, 103, 32, 254, 255, 237, 250, + 255, 241, 231, 248, 243, 88, 74, 232, 244, 249, 255, 238, 240, 234, 193, 194, + 249, 135, 37, 40, 228, 231, 112, 64, 64, 117, 111, 99, 84, 69, 99, 51, + 63, 80, 195, 72, 111, 97, 125, 112, 121, 33, 160, 148, 111, 218, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 221, 255, 239, 255, 245, 254, 85, 110, 79, 114, 192, 213, 237, 231, 250, + 222, 151, 56, 118, 161, 106, 51, 86, 134, 83, 97, 104, 124, 52, 200, 244, + 255, 253, 248, 255, 245, 255, 225, 90, 55, 107, 130, 21, 182, 224, 241, 236, + 247, 254, 231, 232, 211, 40, 32, 250, 251, 249, 246, 249, 226, 216, 165, 190, + 240, 168, 59, 51, 157, 204, 194, 118, 52, 84, 135, 104, 95, 103, 92, 89, + 77, 42, 222, 121, 76, 113, 119, 109, 114, 67, 135, 173, 117, 121, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 241, 251, 225, 201, 223, 183, 32, 41, 228, 255, 238, 255, 241, 237, + 254, 255, 181, 38, 54, 70, 67, 92, 89, 58, 74, 24, 63, 16, 110, 228, + 251, 244, 247, 237, 246, 255, 254, 80, 47, 112, 96, 97, 44, 92, 254, 251, + 224, 253, 222, 240, 156, 50, 45, 248, 251, 234, 242, 230, 210, 234, 188, 143, + 255, 240, 25, 87, 66, 108, 248, 228, 224, 128, 60, 60, 108, 84, 104, 92, + 84, 25, 231, 184, 79, 111, 127, 97, 105, 86, 145, 162, 110, 86, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 234, 250, 240, 242, 174, 200, 189, 18, 114, 251, 245, 244, 254, 255, 251, + 255, 235, 252, 86, 37, 129, 83, 123, 92, 98, 233, 243, 212, 180, 36, 187, + 255, 254, 233, 240, 249, 251, 244, 60, 53, 90, 101, 115, 72, 61, 89, 148, + 250, 242, 86, 134, 33, 77, 32, 231, 244, 248, 245, 222, 247, 231, 249, 255, + 236, 255, 45, 93, 54, 76, 62, 188, 210, 252, 203, 159, 67, 80, 101, 107, + 69, 64, 221, 222, 61, 112, 126, 117, 183, 61, 125, 100, 124, 100, 144, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 244, 239, 236, 245, 230, 204, 196, 204, 114, 179, 245, 253, 255, 248, 238, 235, + 243, 233, 234, 104, 100, 105, 140, 54, 86, 162, 255, 238, 255, 236, 87, 149, + 241, 255, 249, 254, 253, 235, 248, 51, 105, 61, 99, 95, 97, 102, 52, 90, + 171, 123, 67, 48, 65, 86, 95, 142, 252, 253, 233, 233, 242, 249, 252, 250, + 255, 220, 29, 75, 90, 96, 45, 103, 175, 252, 244, 206, 144, 78, 97, 92, + 104, 66, 203, 198, 57, 107, 71, 123, 203, 54, 117, 146, 118, 105, 115, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 229, 244, 242, 249, 244, 245, 215, 226, 254, 255, 238, 254, 225, 241, 255, 244, + 233, 255, 255, 103, 146, 125, 107, 117, 194, 240, 209, 234, 233, 247, 255, 255, + 255, 231, 255, 244, 225, 182, 121, 35, 83, 88, 99, 108, 89, 101, 74, 56, + 34, 10, 78, 91, 85, 84, 77, 48, 138, 232, 250, 254, 219, 234, 255, 243, + 210, 136, 67, 110, 77, 71, 90, 68, 44, 91, 174, 222, 253, 160, 117, 115, + 127, 77, 172, 174, 59, 85, 81, 107, 151, 224, 130, 122, 95, 121, 127, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 204, 239, 242, 238, 237, 243, 251, 211, 242, 227, 255, 244, 251, 255, 233, 251, + 255, 228, 163, 32, 153, 122, 58, 240, 248, 255, 218, 236, 219, 203, 227, 219, + 243, 237, 243, 192, 110, 37, 18, 101, 57, 104, 68, 68, 76, 70, 78, 84, + 95, 93, 50, 65, 44, 99, 76, 38, 32, 156, 225, 235, 245, 255, 255, 190, + 45, 26, 105, 90, 91, 70, 66, 78, 106, 78, 37, 67, 122, 215, 216, 157, + 90, 101, 88, 73, 105, 75, 73, 97, 31, 255, 193, 125, 113, 140, 125, 167, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 175, 248, 232, 227, 240, 234, 240, 241, 248, 242, 247, 236, 235, 245, 241, 241, + 158, 48, 83, 192, 244, 70, 14, 233, 239, 227, 241, 234, 255, 252, 236, 222, + 255, 253, 235, 18, 45, 41, 71, 125, 80, 74, 52, 41, 65, 68, 62, 40, + 37, 73, 90, 99, 62, 69, 71, 72, 81, 51, 46, 144, 229, 237, 214, 225, + 70, 69, 113, 67, 72, 93, 107, 101, 79, 86, 105, 87, 55, 58, 75, 156, + 82, 84, 93, 98, 78, 50, 111, 151, 98, 177, 174, 93, 99, 118, 99, 114, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 137, 255, 247, 225, 235, 251, 233, 251, 221, 233, 195, 126, 126, 197, 255, 231, + 213, 176, 198, 209, 235, 169, 20, 130, 253, 241, 253, 253, 242, 240, 243, 245, + 245, 221, 244, 12, 18, 57, 89, 144, 135, 38, 48, 91, 123, 122, 51, 48, + 66, 44, 98, 69, 61, 71, 68, 80, 100, 66, 83, 61, 192, 255, 240, 245, + 77, 67, 99, 89, 88, 96, 78, 90, 82, 88, 75, 103, 86, 67, 57, 83, + 61, 80, 100, 89, 104, 90, 219, 249, 209, 137, 243, 135, 109, 98, 93, 112, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, + 78, 231, 240, 237, 213, 255, 231, 177, 75, 133, 167, 160, 71, 70, 232, 240, + 248, 249, 239, 255, 236, 228, 39, 25, 194, 254, 229, 240, 241, 240, 249, 255, + 238, 136, 155, 168, 99, 153, 180, 192, 107, 63, 213, 242, 240, 254, 239, 196, + 107, 20, 68, 88, 74, 84, 84, 114, 95, 93, 85, 54, 71, 217, 236, 252, + 137, 66, 94, 84, 99, 111, 91, 87, 81, 86, 78, 65, 112, 85, 56, 86, + 98, 70, 94, 101, 84, 87, 227, 234, 255, 230, 244, 255, 187, 146, 138, 135, + 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, + 24, 153, 192, 255, 246, 244, 159, 58, 111, 187, 179, 184, 190, 73, 182, 238, + 255, 252, 255, 234, 255, 243, 254, 84, 64, 253, 255, 253, 249, 242, 255, 241, + 175, 15, 64, 186, 182, 191, 179, 131, 77, 83, 232, 243, 243, 243, 255, 249, + 224, 153, 36, 63, 90, 89, 104, 93, 93, 118, 85, 122, 39, 229, 246, 240, + 196, 82, 115, 100, 91, 87, 99, 101, 96, 84, 84, 85, 64, 93, 106, 93, + 91, 85, 81, 81, 114, 107, 101, 178, 237, 234, 255, 202, 192, 203, 169, 85, + 107, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, + 76, 31, 89, 252, 246, 187, 39, 64, 174, 165, 193, 180, 156, 151, 198, 232, + 233, 255, 252, 255, 233, 187, 172, 162, 19, 109, 255, 234, 236, 240, 254, 254, + 225, 136, 25, 162, 172, 207, 181, 69, 21, 166, 234, 240, 254, 250, 242, 242, + 241, 240, 118, 36, 105, 112, 93, 100, 120, 111, 107, 112, 43, 255, 235, 243, + 224, 89, 107, 100, 103, 94, 92, 112, 82, 114, 92, 96, 91, 91, 100, 100, + 88, 81, 84, 76, 61, 83, 40, 47, 255, 229, 243, 237, 179, 151, 195, 171, + 155, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, + 73, 48, 105, 244, 238, 206, 48, 69, 182, 182, 157, 185, 154, 137, 192, 229, + 249, 248, 237, 249, 255, 75, 103, 138, 69, 11, 255, 239, 255, 255, 237, 225, + 253, 207, 73, 139, 165, 185, 170, 94, 87, 197, 233, 238, 239, 238, 249, 245, + 245, 255, 207, 104, 92, 108, 106, 105, 91, 85, 103, 91, 83, 229, 250, 243, + 224, 115, 97, 121, 132, 123, 99, 101, 88, 78, 108, 97, 97, 99, 103, 102, + 96, 91, 93, 65, 94, 82, 44, 39, 235, 255, 230, 237, 182, 112, 170, 153, + 148, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 61, + 43, 63, 227, 212, 215, 214, 88, 23, 138, 180, 187, 166, 162, 161, 224, 233, + 233, 240, 255, 230, 248, 92, 115, 99, 87, 139, 247, 240, 216, 194, 203, 237, + 250, 232, 218, 192, 195, 178, 170, 139, 150, 211, 218, 250, 245, 242, 254, 244, + 248, 250, 245, 213, 82, 91, 92, 99, 79, 80, 98, 87, 116, 97, 253, 238, + 235, 92, 141, 130, 137, 90, 106, 117, 76, 121, 88, 93, 100, 104, 99, 97, + 97, 98, 96, 97, 91, 72, 89, 73, 107, 249, 241, 255, 219, 105, 130, 96, + 112, 100, 149, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 186, + 71, 33, 182, 174, 206, 253, 214, 11, 56, 79, 152, 175, 171, 150, 217, 245, + 224, 248, 255, 250, 238, 255, 233, 232, 255, 233, 197, 119, 21, 87, 227, 240, + 189, 184, 211, 243, 223, 198, 192, 190, 181, 227, 247, 239, 245, 244, 250, 242, + 255, 245, 245, 255, 60, 85, 79, 90, 80, 92, 99, 124, 124, 53, 146, 239, + 184, 44, 110, 84, 75, 88, 83, 103, 78, 91, 91, 87, 100, 103, 91, 86, + 93, 95, 91, 101, 96, 110, 107, 91, 26, 246, 252, 251, 253, 215, 243, 134, + 73, 81, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 208, + 65, 33, 185, 198, 203, 243, 236, 27, 24, 35, 121, 74, 159, 189, 231, 234, + 186, 235, 242, 254, 238, 216, 227, 179, 186, 142, 89, 40, 37, 129, 249, 255, + 203, 161, 224, 243, 226, 225, 211, 221, 191, 226, 244, 244, 250, 248, 253, 238, + 255, 239, 245, 243, 35, 85, 85, 90, 73, 90, 97, 75, 96, 78, 83, 172, + 209, 68, 72, 36, 69, 66, 126, 100, 115, 85, 116, 88, 101, 104, 89, 83, + 91, 94, 87, 117, 81, 85, 95, 102, 47, 231, 255, 247, 254, 255, 244, 154, + 159, 217, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 243, + 132, 46, 201, 254, 236, 255, 242, 160, 131, 85, 73, 171, 241, 249, 243, 240, + 215, 196, 163, 120, 175, 32, 90, 73, 48, 91, 60, 92, 109, 221, 255, 202, + 192, 214, 242, 243, 232, 237, 233, 249, 243, 244, 229, 247, 239, 238, 253, 239, + 241, 251, 255, 255, 44, 75, 81, 95, 73, 81, 84, 93, 86, 69, 60, 41, + 241, 195, 214, 242, 37, 116, 31, 37, 109, 99, 106, 96, 105, 106, 94, 89, + 95, 96, 90, 90, 86, 87, 87, 47, 18, 131, 223, 251, 233, 245, 237, 213, + 255, 255, 245, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 204, + 138, 78, 233, 255, 241, 221, 168, 217, 251, 234, 201, 197, 221, 248, 248, 229, + 254, 183, 224, 217, 250, 80, 4, 57, 90, 56, 111, 91, 171, 255, 240, 200, + 212, 222, 255, 248, 240, 238, 250, 219, 226, 222, 236, 221, 212, 215, 241, 250, + 249, 255, 221, 224, 59, 80, 75, 89, 81, 86, 78, 98, 79, 113, 106, 103, + 199, 226, 234, 251, 210, 250, 255, 43, 59, 86, 112, 99, 102, 102, 97, 95, + 98, 97, 92, 78, 85, 68, 66, 159, 232, 253, 251, 198, 136, 170, 254, 255, + 200, 71, 89, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 254, 217, + 196, 145, 144, 251, 252, 185, 105, 156, 224, 200, 187, 119, 93, 169, 249, 239, + 255, 58, 119, 248, 250, 188, 155, 48, 104, 83, 82, 61, 146, 253, 216, 179, + 237, 252, 240, 244, 250, 239, 236, 92, 66, 84, 180, 232, 228, 222, 236, 252, + 245, 231, 104, 108, 49, 110, 89, 81, 83, 99, 87, 95, 122, 94, 113, 120, + 161, 188, 221, 205, 253, 223, 249, 204, 98, 109, 94, 96, 94, 94, 94, 95, + 95, 93, 89, 108, 96, 107, 104, 246, 241, 237, 246, 244, 138, 63, 116, 207, + 252, 71, 65, 74, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 242, 233, + 231, 211, 37, 246, 250, 143, 80, 137, 208, 223, 201, 128, 25, 136, 245, 235, + 255, 68, 58, 207, 213, 234, 236, 53, 53, 113, 79, 72, 110, 242, 254, 218, + 253, 250, 243, 254, 236, 241, 182, 53, 7, 60, 94, 187, 204, 206, 207, 184, + 201, 175, 10, 44, 88, 105, 79, 110, 99, 97, 106, 109, 109, 115, 113, 129, + 154, 170, 205, 186, 255, 239, 249, 255, 152, 80, 105, 104, 76, 99, 115, 74, + 101, 107, 80, 118, 95, 121, 109, 243, 248, 241, 240, 251, 213, 72, 117, 147, + 246, 75, 77, 83, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 244, 253, + 255, 234, 88, 184, 224, 151, 131, 58, 199, 231, 255, 249, 110, 108, 254, 241, + 148, 255, 136, 14, 26, 209, 248, 172, 91, 96, 84, 64, 45, 121, 223, 249, + 245, 249, 252, 239, 229, 107, 19, 80, 130, 89, 51, 31, 61, 104, 120, 58, + 10, 36, 43, 69, 94, 104, 83, 101, 101, 86, 114, 104, 99, 109, 112, 121, + 135, 165, 224, 203, 241, 255, 189, 255, 245, 52, 74, 105, 136, 77, 85, 109, + 79, 111, 101, 103, 118, 108, 35, 116, 213, 237, 252, 235, 223, 202, 227, 84, + 206, 161, 45, 71, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 238, 255, + 239, 225, 198, 67, 138, 154, 195, 47, 234, 247, 255, 251, 187, 169, 252, 255, + 46, 227, 213, 82, 60, 153, 200, 196, 180, 74, 80, 78, 60, 56, 147, 199, + 188, 194, 157, 56, 46, 46, 81, 108, 84, 65, 89, 71, 86, 63, 73, 101, + 68, 60, 114, 116, 54, 85, 109, 107, 117, 98, 114, 103, 93, 103, 111, 111, + 113, 147, 223, 235, 235, 219, 151, 215, 236, 82, 50, 93, 56, 86, 101, 107, + 70, 53, 53, 92, 90, 69, 28, 89, 248, 251, 255, 222, 251, 187, 222, 175, + 194, 227, 13, 66, 90, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 106, 151, 253, + 246, 255, 222, 25, 56, 95, 128, 29, 240, 253, 236, 246, 224, 176, 243, 250, + 26, 198, 244, 74, 39, 115, 179, 173, 156, 97, 81, 75, 87, 47, 62, 88, + 89, 97, 51, 83, 27, 54, 98, 70, 64, 89, 83, 71, 95, 65, 47, 36, + 46, 147, 241, 254, 71, 94, 124, 96, 101, 101, 94, 112, 101, 107, 109, 107, + 104, 127, 189, 185, 239, 203, 88, 169, 204, 41, 26, 47, 41, 61, 70, 65, + 47, 28, 40, 54, 35, 61, 38, 29, 225, 255, 235, 253, 212, 246, 192, 209, + 200, 244, 40, 60, 94, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 128, 145, 119, 244, + 231, 209, 65, 75, 77, 84, 85, 41, 255, 255, 244, 255, 243, 226, 230, 253, + 53, 117, 208, 194, 138, 102, 235, 78, 73, 76, 76, 70, 75, 60, 58, 65, + 63, 70, 79, 59, 89, 105, 97, 87, 85, 85, 85, 120, 67, 64, 181, 225, + 235, 255, 229, 233, 75, 97, 96, 88, 79, 70, 57, 62, 57, 59, 51, 54, + 57, 56, 86, 82, 87, 82, 200, 255, 242, 250, 237, 140, 44, 66, 63, 75, + 226, 195, 184, 183, 199, 194, 222, 253, 208, 59, 109, 101, 83, 166, 123, 196, + 186, 238, 75, 52, 86, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 169, 234, 168, 252, + 249, 66, 20, 69, 92, 82, 84, 41, 243, 233, 232, 244, 237, 255, 226, 255, + 51, 33, 100, 236, 240, 189, 230, 213, 109, 109, 79, 83, 80, 94, 88, 93, + 99, 90, 113, 96, 104, 80, 71, 101, 103, 90, 107, 105, 190, 222, 255, 241, + 145, 102, 71, 68, 45, 65, 40, 74, 92, 79, 96, 103, 105, 107, 94, 103, + 113, 98, 102, 107, 107, 120, 125, 186, 247, 236, 249, 254, 216, 18, 19, 57, + 107, 140, 205, 217, 229, 230, 230, 233, 248, 134, 54, 57, 48, 83, 113, 76, + 36, 183, 141, 55, 81, 89, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 225, 198, 152, 109, 230, + 254, 38, 48, 91, 110, 89, 81, 43, 231, 249, 254, 255, 231, 226, 250, 239, + 29, 117, 35, 135, 244, 202, 202, 237, 169, 92, 111, 83, 81, 94, 82, 83, + 96, 81, 74, 80, 84, 75, 47, 31, 43, 45, 27, 119, 233, 206, 124, 175, + 216, 198, 236, 229, 238, 205, 148, 101, 115, 96, 113, 97, 100, 105, 94, 102, + 111, 94, 97, 139, 98, 95, 107, 54, 108, 243, 240, 252, 252, 204, 215, 129, + 64, 79, 190, 195, 193, 188, 239, 230, 255, 248, 233, 120, 60, 70, 108, 207, + 171, 59, 187, 67, 83, 97, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 249, 230, 214, 175, 121, 245, + 238, 141, 19, 100, 96, 87, 70, 57, 216, 254, 230, 236, 255, 255, 248, 222, + 29, 62, 66, 90, 134, 179, 189, 225, 174, 83, 91, 83, 67, 69, 81, 81, + 77, 74, 67, 80, 61, 59, 69, 71, 74, 87, 99, 187, 205, 178, 63, 112, + 253, 251, 246, 235, 234, 232, 245, 126, 141, 119, 94, 97, 99, 106, 98, 99, + 103, 92, 105, 121, 105, 123, 130, 14, 21, 200, 241, 251, 255, 255, 250, 169, + 118, 125, 181, 175, 125, 101, 235, 236, 249, 235, 255, 231, 108, 73, 71, 230, + 222, 44, 171, 74, 83, 101, 79, 138, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 229, 224, 211, 188, 206, 250, + 250, 232, 84, 81, 47, 77, 93, 57, 106, 246, 216, 224, 236, 244, 196, 100, + 74, 46, 66, 60, 39, 60, 76, 86, 101, 40, 55, 48, 63, 39, 77, 63, + 76, 70, 91, 113, 72, 55, 72, 215, 244, 242, 252, 231, 242, 177, 113, 98, + 238, 229, 237, 224, 239, 211, 255, 215, 203, 150, 139, 105, 116, 98, 112, 114, + 121, 97, 106, 99, 117, 108, 103, 43, 145, 251, 243, 253, 247, 233, 240, 242, + 239, 234, 206, 73, 54, 92, 232, 241, 255, 251, 225, 255, 199, 56, 65, 131, + 132, 94, 107, 120, 55, 97, 92, 73, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 220, 231, 168, 192, 181, 188, 218, 171, + 186, 255, 111, 81, 116, 45, 63, 47, 90, 97, 46, 29, 32, 37, 34, 40, + 101, 99, 91, 57, 48, 57, 40, 38, 69, 57, 78, 55, 36, 18, 129, 193, + 211, 150, 116, 109, 54, 57, 121, 169, 192, 207, 197, 97, 25, 23, 119, 104, + 119, 196, 239, 236, 207, 209, 221, 239, 213, 217, 178, 134, 113, 105, 100, 83, + 92, 74, 109, 101, 111, 78, 112, 73, 231, 254, 255, 254, 254, 236, 239, 243, + 241, 242, 223, 245, 238, 213, 245, 239, 149, 192, 230, 208, 188, 74, 71, 116, + 126, 118, 145, 132, 104, 84, 82, 65, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 85, 152, 100, 28, 33, 36, 18, 67, + 85, 226, 104, 172, 157, 87, 95, 60, 226, 243, 32, 41, 40, 55, 81, 114, + 163, 132, 90, 85, 91, 106, 82, 86, 107, 95, 84, 47, 94, 131, 222, 245, + 255, 243, 254, 175, 128, 41, 75, 72, 57, 33, 40, 78, 136, 115, 93, 101, + 62, 127, 225, 242, 178, 161, 219, 240, 232, 228, 192, 157, 132, 126, 148, 125, + 103, 91, 101, 119, 109, 88, 130, 24, 237, 255, 238, 249, 255, 242, 243, 250, + 245, 247, 240, 241, 242, 244, 232, 254, 249, 72, 14, 33, 106, 125, 123, 119, + 112, 110, 123, 119, 120, 88, 84, 78, 129, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 209, 229, 228, 71, 45, 61, 50, 51, 179, + 206, 236, 99, 136, 112, 78, 85, 165, 249, 211, 66, 86, 73, 82, 101, 106, + 109, 98, 87, 71, 75, 90, 85, 104, 109, 77, 47, 62, 158, 215, 255, 243, + 243, 238, 239, 225, 215, 70, 60, 86, 85, 68, 96, 83, 85, 99, 106, 133, + 78, 76, 183, 252, 254, 191, 219, 241, 245, 202, 204, 198, 159, 100, 120, 102, + 75, 105, 88, 95, 114, 64, 90, 53, 243, 252, 248, 244, 255, 248, 247, 253, + 244, 244, 241, 243, 249, 238, 254, 218, 252, 178, 43, 63, 57, 119, 97, 112, + 140, 146, 125, 120, 138, 107, 196, 199, 179, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 65, 89, 77, 76, 58, 74, 52, 140, 175, + 229, 106, 7, 31, 99, 91, 35, 192, 211, 97, 50, 83, 75, 85, 97, 95, + 89, 104, 108, 111, 102, 102, 94, 110, 123, 125, 172, 219, 255, 247, 243, 238, + 255, 255, 251, 254, 250, 104, 33, 49, 57, 58, 43, 74, 106, 108, 102, 115, + 129, 92, 82, 76, 203, 243, 236, 250, 245, 234, 236, 226, 176, 133, 116, 99, + 94, 114, 108, 74, 86, 114, 138, 54, 133, 243, 255, 242, 255, 245, 246, 248, + 241, 244, 236, 120, 239, 252, 240, 253, 231, 252, 228, 117, 32, 145, 139, 139, + 125, 127, 120, 114, 132, 86, 240, 241, 245, 252, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 87, 85, 111, 74, 98, 111, 174, 170, 234, 228, + 214, 63, 85, 106, 80, 72, 112, 237, 194, 80, 121, 87, 91, 100, 104, 108, + 91, 85, 45, 50, 45, 45, 28, 21, 44, 72, 222, 226, 252, 251, 255, 255, + 243, 244, 247, 239, 238, 107, 38, 141, 186, 186, 175, 59, 75, 35, 116, 119, + 106, 113, 99, 89, 118, 204, 227, 70, 113, 236, 252, 115, 86, 135, 108, 100, + 105, 74, 99, 118, 111, 91, 96, 81, 45, 112, 172, 244, 245, 244, 253, 249, + 248, 255, 233, 82, 64, 142, 243, 238, 249, 255, 250, 231, 51, 66, 94, 130, + 109, 102, 113, 123, 113, 109, 118, 114, 255, 250, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 230, 56, 96, 111, 75, 84, 108, 231, 255, 230, 225, + 145, 51, 115, 99, 115, 63, 122, 255, 182, 50, 95, 111, 102, 92, 84, 88, + 68, 79, 46, 80, 90, 103, 100, 80, 85, 43, 217, 230, 238, 225, 234, 246, + 241, 253, 254, 253, 253, 163, 117, 223, 250, 224, 239, 147, 84, 38, 140, 117, + 111, 138, 73, 106, 58, 124, 202, 26, 71, 180, 177, 68, 60, 103, 93, 101, + 83, 73, 111, 114, 94, 103, 111, 68, 31, 64, 104, 216, 213, 232, 255, 253, + 252, 254, 206, 82, 49, 40, 243, 255, 233, 235, 233, 250, 156, 63, 88, 95, + 69, 80, 131, 136, 118, 150, 54, 57, 212, 236, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 224, 70, 102, 49, 50, 112, 94, 207, 212, 156, 90, + 82, 79, 102, 89, 104, 53, 134, 252, 108, 36, 99, 104, 90, 87, 89, 85, + 51, 92, 100, 221, 232, 248, 255, 251, 231, 96, 233, 218, 249, 249, 244, 248, + 243, 247, 234, 244, 237, 250, 250, 244, 242, 237, 245, 249, 245, 138, 81, 87, + 88, 73, 109, 83, 95, 92, 83, 112, 88, 72, 36, 99, 113, 87, 114, 128, + 56, 87, 95, 103, 118, 120, 134, 135, 138, 62, 62, 38, 35, 77, 124, 113, + 107, 97, 29, 40, 64, 57, 26, 124, 252, 255, 244, 248, 255, 69, 78, 76, + 65, 62, 94, 85, 99, 93, 91, 107, 80, 203, 242, 243, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 226, 106, 87, 93, 124, 183, 242, 172, 91, 54, 79, 123, + 109, 121, 111, 109, 93, 103, 245, 174, 52, 47, 113, 114, 64, 68, 81, 96, + 102, 255, 239, 242, 228, 240, 255, 234, 239, 253, 205, 245, 209, 199, 235, 232, + 255, 246, 248, 251, 254, 248, 224, 250, 239, 243, 249, 238, 252, 255, 56, 80, + 106, 106, 104, 119, 120, 104, 102, 113, 111, 95, 81, 109, 121, 62, 207, 255, + 121, 97, 104, 89, 121, 111, 108, 107, 111, 138, 112, 116, 138, 96, 37, 57, + 30, 55, 70, 127, 100, 98, 54, 58, 214, 249, 246, 231, 215, 72, 44, 90, + 120, 52, 88, 69, 98, 86, 112, 136, 87, 67, 238, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 175, 148, 67, 102, 106, 215, 238, 138, 67, 79, 75, 99, 100, + 107, 126, 109, 81, 77, 183, 247, 34, 120, 84, 36, 71, 100, 77, 204, 224, + 246, 221, 208, 99, 166, 234, 247, 255, 236, 255, 236, 157, 56, 38, 35, 34, + 130, 222, 236, 246, 229, 249, 254, 254, 234, 245, 254, 246, 253, 250, 24, 119, + 108, 104, 101, 115, 111, 90, 90, 102, 103, 108, 107, 131, 96, 81, 162, 232, + 255, 255, 110, 137, 102, 98, 104, 81, 72, 83, 77, 89, 69, 100, 89, 104, + 125, 95, 157, 131, 205, 158, 185, 190, 245, 88, 76, 61, 88, 88, 71, 246, + 255, 251, 230, 255, 232, 232, 193, 173, 215, 192, 87, 248, 240, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 205, 126, 111, 56, 84, 124, 255, 236, 94, 57, 115, 110, 125, 88, + 104, 137, 127, 78, 96, 215, 251, 41, 122, 92, 50, 49, 219, 227, 240, 249, + 177, 62, 88, 47, 144, 255, 250, 251, 252, 242, 110, 51, 30, 32, 26, 45, + 69, 200, 247, 251, 240, 240, 246, 243, 252, 254, 245, 254, 241, 240, 45, 127, + 111, 101, 87, 106, 110, 96, 101, 100, 98, 117, 122, 126, 106, 119, 139, 209, + 240, 246, 199, 168, 71, 42, 57, 44, 43, 38, 41, 42, 7, 71, 59, 120, + 150, 154, 137, 117, 155, 233, 235, 228, 241, 84, 75, 41, 25, 46, 105, 245, + 247, 243, 250, 253, 238, 255, 254, 238, 231, 242, 170, 255, 232, 234, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 205, 147, 78, 87, 143, 197, 203, 241, 186, 73, 88, 112, 86, 104, 75, + 68, 107, 100, 64, 45, 243, 228, 15, 79, 44, 183, 197, 244, 212, 88, 115, + 71, 63, 87, 59, 149, 221, 216, 232, 252, 202, 44, 188, 221, 199, 176, 162, + 68, 203, 241, 238, 253, 254, 232, 243, 244, 247, 239, 255, 251, 254, 117, 78, + 105, 108, 92, 84, 102, 97, 104, 91, 74, 85, 68, 82, 123, 121, 66, 126, + 129, 175, 254, 255, 228, 193, 208, 212, 215, 211, 213, 208, 252, 35, 71, 177, + 174, 158, 98, 95, 53, 46, 228, 231, 227, 241, 235, 214, 130, 131, 231, 254, + 243, 242, 255, 248, 255, 237, 234, 255, 250, 247, 235, 244, 223, 170, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, + 110, 120, 112, 122, 167, 218, 228, 247, 158, 80, 90, 121, 114, 99, 115, 123, + 99, 126, 104, 68, 127, 213, 58, 112, 87, 118, 213, 171, 75, 73, 60, 61, + 77, 98, 59, 97, 203, 195, 206, 247, 229, 161, 159, 224, 200, 204, 180, 168, + 131, 248, 237, 253, 226, 255, 253, 244, 221, 255, 247, 244, 103, 70, 112, 118, + 110, 85, 138, 208, 188, 137, 134, 139, 157, 202, 183, 132, 118, 109, 88, 106, + 65, 96, 103, 101, 247, 241, 245, 243, 233, 234, 236, 233, 215, 225, 197, 241, + 213, 184, 186, 116, 90, 63, 158, 253, 240, 255, 230, 248, 168, 230, 255, 252, + 223, 255, 202, 203, 194, 156, 192, 222, 246, 255, 255, 252, 255, 182, 194, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 104, + 117, 86, 85, 244, 231, 255, 183, 104, 73, 108, 95, 106, 99, 105, 99, 116, + 105, 119, 90, 107, 218, 32, 52, 67, 149, 170, 42, 93, 52, 79, 83, 90, + 91, 103, 76, 148, 246, 227, 242, 248, 231, 182, 220, 211, 179, 204, 154, 183, + 226, 246, 234, 246, 168, 210, 250, 243, 246, 237, 120, 147, 192, 197, 104, 99, + 108, 91, 105, 119, 120, 124, 201, 239, 234, 234, 171, 114, 93, 98, 134, 154, + 110, 117, 59, 29, 255, 255, 250, 251, 242, 238, 230, 230, 248, 216, 227, 203, + 221, 192, 202, 165, 69, 56, 199, 223, 181, 25, 121, 87, 32, 96, 85, 64, + 50, 99, 28, 67, 54, 52, 104, 80, 69, 107, 186, 216, 242, 197, 183, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 91, 86, + 98, 63, 144, 238, 243, 198, 123, 71, 82, 111, 111, 108, 100, 114, 99, 93, + 100, 85, 68, 172, 239, 45, 71, 83, 126, 80, 44, 42, 65, 91, 60, 115, + 88, 88, 48, 181, 235, 238, 252, 238, 247, 224, 193, 192, 183, 165, 138, 193, + 245, 231, 248, 244, 219, 231, 255, 232, 244, 177, 57, 149, 239, 255, 114, 115, + 122, 109, 89, 95, 96, 123, 228, 245, 198, 200, 159, 107, 150, 127, 100, 119, + 127, 128, 85, 53, 251, 239, 232, 233, 232, 210, 204, 220, 210, 238, 192, 132, + 153, 166, 129, 124, 53, 31, 130, 165, 112, 48, 40, 46, 22, 29, 39, 13, + 25, 47, 44, 17, 42, 47, 43, 52, 56, 68, 130, 192, 211, 228, 212, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 88, 76, 88, 115, + 109, 109, 167, 198, 135, 55, 94, 90, 92, 85, 109, 113, 97, 118, 124, 97, + 101, 47, 43, 229, 208, 51, 73, 94, 23, 46, 96, 80, 53, 81, 101, 93, + 85, 109, 51, 244, 255, 243, 246, 254, 243, 217, 201, 204, 171, 120, 186, 209, + 232, 249, 218, 226, 255, 203, 162, 55, 44, 36, 119, 255, 246, 233, 144, 132, + 138, 140, 127, 140, 115, 112, 180, 137, 53, 89, 103, 105, 102, 92, 113, 129, + 107, 87, 97, 62, 215, 226, 228, 207, 200, 164, 176, 193, 167, 101, 63, 31, + 46, 16, 33, 23, 26, 31, 24, 24, 33, 38, 48, 31, 51, 44, 39, 47, + 47, 38, 52, 47, 32, 47, 20, 39, 40, 36, 55, 79, 103, 209, 233, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 80, 106, 76, 117, + 181, 193, 202, 68, 88, 101, 75, 46, 88, 74, 61, 78, 92, 93, 116, 118, + 62, 106, 93, 126, 84, 102, 91, 56, 71, 180, 242, 246, 9, 78, 72, 75, + 255, 68, 48, 223, 205, 229, 215, 248, 217, 217, 63, 76, 79, 69, 231, 205, + 225, 185, 245, 208, 186, 49, 31, 76, 126, 68, 169, 205, 204, 150, 109, 121, + 114, 93, 107, 99, 85, 70, 62, 61, 66, 70, 72, 74, 70, 66, 64, 65, + 65, 64, 63, 46, 33, 23, 25, 30, 30, 29, 32, 27, 26, 27, 28, 30, + 33, 36, 37, 30, 34, 42, 47, 44, 38, 43, 55, 52, 52, 51, 49, 47, + 47, 49, 51, 42, 43, 44, 45, 51, 57, 60, 62, 56, 88, 144, 189, 194, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 74, 97, 51, 67, 179, + 212, 241, 249, 206, 194, 202, 99, 65, 69, 75, 77, 85, 79, 85, 68, 99, + 94, 84, 72, 84, 82, 99, 81, 145, 190, 250, 247, 255, 63, 80, 106, 171, + 242, 37, 57, 115, 104, 191, 228, 240, 246, 122, 112, 119, 119, 93, 106, 91, + 91, 91, 94, 116, 89, 74, 84, 77, 93, 66, 84, 85, 96, 79, 65, 79, + 74, 56, 60, 64, 55, 46, 42, 45, 50, 53, 53, 62, 58, 55, 55, 56, + 57, 57, 56, 46, 34, 26, 30, 36, 38, 37, 39, 37, 37, 35, 34, 35, + 40, 44, 46, 44, 42, 46, 51, 53, 49, 51, 54, 53, 53, 53, 51, 48, + 48, 48, 48, 43, 45, 47, 47, 47, 50, 53, 56, 56, 74, 117, 117, 101, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 80, 93, 73, 134, 239, + 232, 240, 239, 249, 251, 236, 81, 92, 103, 112, 87, 77, 67, 53, 36, 63, + 92, 89, 101, 58, 69, 90, 95, 224, 236, 231, 202, 217, 59, 88, 122, 120, + 107, 50, 72, 225, 217, 255, 253, 242, 251, 72, 130, 114, 130, 116, 67, 67, + 63, 83, 50, 61, 33, 79, 81, 63, 51, 56, 26, 32, 39, 40, 40, 44, + 46, 43, 41, 53, 49, 47, 47, 51, 55, 55, 54, 57, 55, 53, 53, 55, + 57, 58, 57, 51, 42, 37, 41, 47, 48, 48, 48, 45, 44, 40, 39, 39, + 43, 48, 51, 55, 49, 48, 55, 62, 62, 58, 54, 56, 56, 55, 55, 53, + 51, 48, 46, 45, 47, 49, 47, 44, 43, 45, 49, 51, 69, 113, 186, 220, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 93, 56, 179, 241, 252, + 255, 252, 255, 253, 255, 161, 46, 100, 103, 89, 84, 77, 124, 139, 200, 139, + 112, 109, 105, 93, 93, 87, 70, 131, 97, 58, 31, 92, 83, 110, 116, 123, + 80, 149, 211, 250, 243, 202, 208, 231, 175, 77, 98, 84, 103, 90, 89, 75, + 74, 69, 49, 53, 45, 54, 32, 55, 41, 44, 37, 46, 40, 44, 49, 42, + 48, 54, 46, 45, 43, 43, 45, 48, 51, 50, 49, 58, 57, 55, 56, 57, + 58, 58, 57, 59, 53, 50, 51, 54, 54, 52, 50, 52, 50, 47, 46, 47, + 49, 52, 54, 56, 51, 50, 55, 63, 66, 63, 58, 62, 61, 62, 61, 60, + 56, 50, 47, 48, 45, 45, 46, 44, 41, 41, 45, 37, 51, 60, 190, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 85, 75, 255, 255, 179, + 206, 227, 243, 255, 252, 76, 68, 116, 82, 76, 178, 208, 232, 224, 253, 89, + 84, 110, 132, 115, 125, 115, 91, 89, 107, 108, 95, 124, 128, 119, 100, 96, + 82, 219, 236, 185, 146, 62, 116, 153, 57, 70, 73, 64, 64, 40, 69, 52, + 53, 42, 42, 36, 52, 38, 24, 55, 50, 45, 55, 45, 31, 40, 51, 43, + 48, 52, 35, 38, 37, 39, 41, 45, 48, 49, 49, 55, 53, 51, 51, 53, + 54, 53, 52, 58, 56, 54, 53, 55, 56, 55, 52, 55, 55, 55, 55, 56, + 56, 56, 56, 51, 54, 57, 60, 63, 67, 67, 66, 67, 67, 66, 67, 66, + 61, 54, 49, 50, 41, 38, 42, 45, 44, 44, 47, 56, 62, 47, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 139, 252, 198, 126, + 143, 188, 189, 180, 207, 60, 89, 93, 61, 74, 210, 253, 247, 255, 237, 69, + 110, 101, 123, 120, 112, 110, 120, 89, 107, 119, 121, 140, 95, 95, 107, 78, + 91, 223, 184, 134, 106, 39, 77, 70, 31, 65, 60, 53, 49, 35, 43, 50, + 45, 51, 43, 33, 44, 42, 49, 39, 38, 51, 46, 53, 33, 33, 39, 33, + 39, 46, 36, 38, 39, 42, 46, 49, 53, 56, 57, 53, 51, 51, 51, 52, + 53, 51, 49, 50, 51, 50, 49, 51, 56, 57, 52, 52, 54, 54, 55, 56, + 55, 53, 52, 53, 60, 66, 65, 66, 68, 70, 72, 72, 70, 68, 69, 69, + 65, 59, 52, 49, 41, 36, 42, 45, 44, 48, 55, 48, 48, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 167, 92, 49, + 26, 43, 18, 4, 47, 23, 42, 51, 73, 101, 169, 137, 128, 160, 123, 50, + 83, 65, 74, 76, 59, 70, 96, 82, 67, 66, 72, 54, 76, 62, 72, 79, + 52, 52, 58, 39, 63, 60, 70, 58, 67, 76, 46, 52, 55, 49, 44, 48, + 37, 42, 25, 43, 41, 43, 50, 32, 22, 49, 38, 62, 48, 41, 41, 35, + 36, 43, 44, 32, 34, 39, 43, 45, 46, 48, 48, 51, 50, 50, 51, 55, + 56, 54, 54, 50, 53, 52, 47, 49, 56, 57, 53, 55, 54, 55, 55, 55, + 56, 55, 55, 58, 65, 69, 66, 66, 69, 71, 71, 73, 72, 69, 69, 70, + 67, 61, 54, 47, 42, 41, 45, 42, 40, 50, 66, 72, 131, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 68, 33, 44, + 44, 55, 40, 45, 18, 52, 34, 33, 40, 43, 41, 40, 42, 50, 44, 57, + 35, 47, 48, 47, 62, 71, 52, 66, 62, 62, 46, 49, 52, 46, 55, 45, + 60, 53, 64, 66, 76, 71, 59, 66, 47, 71, 53, 44, 53, 37, 50, 37, + 39, 41, 42, 38, 42, 32, 34, 56, 29, 45, 39, 38, 40, 49, 57, 53, + 41, 35, 37, 40, 44, 49, 53, 53, 50, 48, 47, 47, 48, 47, 50, 54, + 56, 55, 54, 56, 60, 56, 50, 50, 56, 58, 53, 64, 63, 61, 60, 60, + 62, 64, 65, 61, 66, 67, 64, 66, 70, 69, 64, 73, 70, 67, 67, 68, + 67, 60, 55, 44, 44, 46, 47, 40, 35, 51, 74, 80, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 47, + 45, 47, 49, 43, 47, 47, 44, 43, 45, 45, 42, 44, 45, 44, 43, 41, + 42, 45, 47, 58, 69, 59, 58, 71, 42, 52, 39, 40, 42, 43, 46, 47, + 48, 50, 52, 59, 60, 61, 62, 62, 60, 58, 57, 51, 49, 47, 43, 42, + 41, 40, 40, 37, 40, 43, 42, 38, 37, 38, 40, 36, 39, 38, 39, 48, + 58, 54, 41, 52, 51, 52, 52, 52, 52, 50, 48, 53, 54, 53, 56, 57, + 58, 55, 53, 55, 60, 64, 65, 61, 56, 53, 53, 63, 64, 64, 64, 63, + 61, 59, 58, 64, 65, 66, 67, 67, 68, 69, 72, 72, 66, 75, 77, 66, + 70, 70, 48, 39, 48, 56, 55, 45, 41, 57, 77, 164, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 50, + 49, 50, 52, 41, 44, 44, 41, 40, 42, 42, 39, 47, 47, 46, 44, 40, + 40, 40, 41, 53, 67, 61, 54, 65, 40, 47, 31, 31, 34, 36, 39, 41, + 43, 45, 47, 53, 54, 55, 55, 55, 54, 54, 53, 52, 51, 47, 44, 42, + 40, 40, 41, 42, 42, 40, 41, 41, 41, 40, 37, 34, 37, 40, 42, 48, + 56, 59, 57, 54, 57, 58, 55, 52, 49, 51, 54, 61, 59, 58, 59, 61, + 63, 62, 61, 62, 64, 65, 64, 62, 60, 58, 58, 63, 64, 64, 65, 65, + 64, 64, 63, 59, 62, 66, 70, 72, 75, 78, 81, 83, 75, 81, 81, 68, + 70, 68, 48, 46, 47, 45, 43, 46, 56, 74, 85, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 50, + 48, 48, 48, 41, 44, 43, 40, 40, 42, 42, 39, 46, 47, 46, 45, 42, + 40, 39, 40, 47, 63, 68, 56, 61, 46, 53, 31, 34, 37, 40, 42, 42, + 42, 44, 46, 49, 50, 51, 51, 52, 52, 53, 53, 55, 53, 48, 44, 41, + 40, 41, 41, 46, 42, 38, 39, 43, 44, 40, 35, 36, 36, 42, 47, 51, + 52, 61, 68, 48, 58, 70, 74, 68, 61, 57, 57, 67, 66, 64, 64, 65, + 66, 65, 64, 69, 67, 65, 64, 66, 66, 65, 64, 66, 67, 67, 68, 69, + 70, 70, 71, 68, 71, 74, 77, 78, 79, 80, 82, 88, 82, 84, 84, 73, + 73, 69, 54, 47, 57, 59, 52, 49, 55, 63, 64, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, + 42, 40, 38, 42, 45, 44, 41, 41, 44, 44, 43, 40, 43, 44, 45, 43, + 43, 42, 42, 38, 55, 73, 59, 62, 57, 63, 39, 41, 45, 47, 45, 42, + 41, 42, 45, 53, 53, 52, 53, 54, 56, 57, 59, 58, 55, 48, 43, 40, + 40, 41, 42, 45, 43, 40, 41, 42, 43, 41, 38, 44, 39, 44, 54, 56, + 53, 58, 68, 73, 72, 67, 62, 58, 60, 67, 73, 67, 66, 66, 68, 69, + 69, 68, 66, 73, 69, 66, 68, 71, 72, 69, 68, 72, 72, 70, 70, 71, + 72, 73, 74, 71, 74, 77, 80, 81, 83, 85, 88, 86, 84, 83, 82, 80, + 78, 72, 65, 59, 83, 92, 73, 51, 47, 52, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, + 42, 39, 37, 42, 45, 44, 40, 40, 44, 45, 44, 38, 41, 43, 45, 44, + 43, 44, 44, 36, 48, 79, 64, 62, 61, 67, 42, 39, 42, 43, 40, 36, + 36, 39, 44, 59, 59, 57, 56, 56, 59, 61, 63, 60, 57, 50, 43, 39, + 40, 41, 44, 42, 43, 44, 42, 39, 40, 42, 44, 47, 42, 47, 58, 64, + 60, 59, 63, 72, 71, 69, 70, 71, 68, 62, 57, 62, 62, 63, 67, 70, + 73, 70, 69, 74, 72, 71, 74, 77, 76, 72, 69, 75, 73, 71, 69, 68, + 69, 69, 71, 60, 64, 70, 76, 82, 89, 96, 101, 90, 89, 83, 82, 86, + 82, 74, 73, 74, 94, 98, 76, 53, 49, 54, 54, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, + 46, 45, 44, 41, 43, 42, 38, 38, 43, 44, 42, 43, 45, 46, 45, 44, + 44, 45, 46, 41, 43, 85, 74, 64, 62, 65, 44, 43, 45, 44, 40, 35, + 37, 44, 51, 65, 63, 60, 58, 57, 59, 61, 65, 63, 58, 50, 42, 38, + 38, 41, 44, 40, 43, 45, 43, 40, 40, 44, 49, 49, 47, 53, 63, 70, + 70, 66, 65, 61, 62, 67, 78, 87, 87, 79, 71, 67, 66, 64, 65, 68, + 71, 72, 71, 71, 70, 71, 73, 73, 72, 69, 67, 69, 69, 67, 65, 63, + 62, 60, 61, 55, 59, 63, 68, 74, 82, 91, 96, 95, 95, 84, 82, 86, + 78, 67, 72, 61, 69, 71, 65, 60, 56, 45, 31, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, + 47, 47, 47, 42, 44, 42, 38, 39, 45, 46, 44, 46, 46, 48, 47, 47, + 48, 51, 53, 47, 42, 93, 86, 72, 67, 66, 52, 56, 57, 53, 45, 38, + 39, 47, 56, 73, 71, 65, 61, 59, 60, 61, 65, 64, 60, 50, 42, 38, + 38, 41, 45, 41, 41, 40, 40, 41, 43, 47, 50, 54, 61, 67, 68, 69, + 72, 71, 69, 82, 71, 58, 55, 63, 81, 98, 108, 88, 82, 72, 65, 62, + 63, 65, 66, 61, 62, 63, 61, 58, 58, 57, 59, 60, 60, 59, 58, 56, + 54, 51, 51, 55, 56, 57, 57, 61, 68, 76, 82, 93, 93, 78, 73, 79, + 68, 54, 64, 47, 46, 47, 54, 63, 68, 65, 61, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 44, + 43, 43, 43, 45, 47, 45, 42, 43, 48, 50, 49, 44, 46, 47, 49, 50, + 54, 60, 63, 50, 40, 98, 95, 80, 75, 74, 64, 69, 68, 60, 48, 38, + 36, 43, 52, 79, 75, 69, 63, 61, 61, 64, 67, 64, 60, 50, 41, 37, + 38, 41, 44, 43, 39, 36, 39, 44, 48, 49, 47, 61, 75, 79, 71, 66, + 69, 72, 69, 69, 70, 73, 74, 74, 73, 72, 70, 113, 100, 82, 65, 56, + 54, 56, 58, 52, 53, 52, 48, 43, 43, 46, 51, 52, 52, 52, 52, 51, + 48, 45, 44, 46, 46, 46, 49, 54, 63, 74, 82, 84, 86, 69, 64, 73, + 59, 45, 57, 58, 50, 41, 44, 58, 86, 123, 152, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 43, + 44, 44, 43, 46, 41, 41, 46, 47, 44, 45, 50, 39, 46, 51, 49, 47, + 51, 63, 75, 47, 33, 76, 107, 77, 75, 84, 56, 71, 66, 64, 60, 44, + 30, 36, 53, 71, 61, 64, 67, 59, 56, 63, 66, 75, 59, 46, 46, 43, + 37, 38, 45, 36, 39, 41, 41, 41, 45, 50, 55, 59, 72, 77, 70, 69, + 76, 79, 75, 70, 71, 71, 73, 75, 75, 72, 69, 82, 111, 114, 75, 44, + 48, 58, 56, 50, 57, 52, 47, 51, 42, 36, 52, 49, 36, 38, 52, 46, + 45, 52, 36, 39, 30, 49, 56, 41, 54, 77, 71, 76, 70, 62, 79, 57, + 36, 58, 46, 59, 43, 50, 42, 46, 85, 101, 100, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 41, 42, + 43, 42, 42, 44, 41, 40, 44, 45, 44, 45, 50, 44, 52, 60, 61, 58, + 61, 70, 79, 65, 51, 80, 105, 90, 88, 92, 69, 73, 68, 68, 67, 56, + 45, 51, 65, 84, 73, 74, 78, 70, 69, 74, 73, 67, 53, 43, 43, 43, + 39, 40, 47, 46, 48, 49, 49, 50, 53, 60, 65, 69, 80, 85, 79, 77, + 83, 85, 82, 79, 78, 77, 78, 78, 77, 75, 72, 68, 55, 79, 126, 129, + 82, 50, 55, 55, 25, 35, 48, 40, 41, 65, 37, 35, 61, 60, 43, 38, + 36, 61, 37, 41, 59, 53, 53, 52, 44, 62, 89, 67, 51, 50, 38, 24, + 37, 41, 30, 61, 32, 33, 45, 50, 38, 36, 72, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 42, 42, + 43, 42, 41, 43, 41, 39, 43, 43, 45, 48, 52, 51, 60, 69, 73, 71, + 72, 76, 82, 75, 63, 73, 89, 93, 95, 89, 72, 74, 69, 70, 72, 69, + 62, 67, 77, 88, 76, 77, 81, 76, 75, 77, 72, 64, 52, 45, 46, 46, + 43, 42, 47, 48, 49, 50, 51, 52, 56, 62, 67, 74, 82, 86, 81, 80, + 85, 86, 82, 84, 80, 77, 75, 75, 74, 71, 69, 67, 76, 69, 60, 89, + 133, 135, 106, 58, 102, 80, 44, 67, 43, 51, 47, 35, 39, 27, 34, 61, + 38, 44, 42, 23, 54, 47, 41, 35, 44, 77, 72, 92, 83, 119, 115, 102, + 108, 87, 91, 65, 127, 130, 78, 94, 125, 100, 87, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 46, 46, 45, + 44, 42, 42, 43, 42, 42, 44, 47, 50, 54, 57, 61, 67, 75, 80, 80, + 79, 82, 84, 78, 71, 64, 74, 93, 95, 80, 69, 72, 67, 68, 72, 72, + 70, 72, 79, 86, 75, 76, 80, 76, 77, 75, 65, 68, 59, 51, 52, 51, + 47, 46, 47, 50, 50, 51, 52, 54, 59, 65, 68, 78, 82, 84, 82, 82, + 86, 87, 82, 87, 83, 77, 73, 71, 69, 68, 68, 73, 69, 61, 58, 79, + 112, 132, 134, 122, 75, 44, 54, 71, 37, 64, 40, 43, 48, 38, 35, 59, + 65, 35, 62, 57, 30, 37, 66, 36, 57, 121, 86, 94, 88, 120, 130, 104, + 76, 75, 115, 120, 173, 170, 133, 145, 129, 89, 116, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 47, 49, 49, 47, + 44, 43, 41, 45, 47, 49, 51, 55, 61, 66, 68, 74, 78, 82, 84, 84, + 85, 87, 89, 84, 81, 69, 74, 97, 100, 82, 75, 72, 69, 69, 70, 71, + 72, 73, 76, 87, 79, 80, 84, 81, 82, 78, 65, 68, 61, 54, 54, 54, + 51, 50, 50, 56, 55, 57, 60, 63, 68, 72, 74, 84, 85, 85, 85, 87, + 91, 89, 84, 92, 86, 80, 76, 74, 72, 71, 70, 69, 59, 66, 87, 88, + 69, 68, 84, 116, 104, 79, 49, 35, 26, 57, 31, 29, 16, 32, 46, 37, + 52, 32, 175, 132, 78, 102, 163, 120, 82, 107, 86, 66, 55, 37, 49, 44, + 35, 87, 140, 167, 161, 140, 130, 126, 57, 27, 161, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 46, 50, 52, 51, + 48, 46, 45, 50, 55, 59, 62, 69, 77, 82, 80, 90, 90, 91, 91, 92, + 93, 94, 94, 86, 87, 79, 79, 94, 99, 89, 84, 77, 75, 74, 71, 71, + 72, 74, 76, 84, 80, 85, 87, 83, 84, 80, 67, 63, 57, 52, 51, 52, + 54, 54, 53, 56, 56, 59, 63, 68, 72, 74, 74, 85, 82, 80, 83, 89, + 92, 90, 85, 88, 83, 78, 75, 74, 73, 72, 72, 70, 84, 79, 60, 58, + 72, 67, 45, 52, 134, 142, 88, 56, 38, 19, 34, 61, 37, 45, 42, 35, + 69, 67, 219, 255, 237, 209, 184, 134, 73, 44, 51, 89, 88, 51, 70, 106, + 121, 150, 149, 91, 87, 68, 42, 39, 27, 43, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 61, 41, 45, 54, 59, 59, + 57, 55, 56, 55, 62, 70, 74, 82, 92, 96, 95, 99, 97, 97, 98, 99, + 98, 96, 93, 85, 87, 84, 81, 82, 90, 93, 90, 81, 81, 79, 74, 71, + 72, 76, 79, 80, 82, 90, 91, 84, 86, 84, 70, 66, 61, 55, 51, 52, + 56, 56, 54, 52, 53, 56, 62, 68, 72, 70, 69, 85, 81, 78, 84, 92, + 96, 91, 86, 81, 78, 76, 75, 75, 75, 74, 73, 75, 72, 70, 72, 75, + 74, 66, 58, 58, 18, 66, 136, 113, 108, 48, 29, 22, 46, 53, 32, 115, + 219, 237, 252, 207, 138, 79, 27, 26, 45, 55, 112, 160, 148, 123, 141, 188, + 183, 126, 72, 63, 39, 42, 46, 51, 73, 133, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, 65, 41, 48, 58, 65, 66, + 65, 65, 66, 57, 66, 74, 81, 89, 101, 105, 102, 100, 98, 98, 100, 101, + 99, 94, 90, 85, 87, 89, 83, 74, 85, 97, 96, 82, 83, 81, 74, 69, + 70, 77, 80, 82, 87, 97, 98, 89, 91, 89, 76, 74, 68, 60, 53, 53, + 56, 56, 53, 50, 52, 55, 63, 70, 71, 70, 67, 90, 84, 82, 89, 99, + 103, 98, 93, 84, 82, 80, 80, 81, 81, 81, 81, 73, 75, 74, 70, 68, + 70, 71, 70, 44, 44, 48, 79, 127, 199, 84, 34, 57, 28, 33, 89, 221, + 236, 255, 239, 201, 47, 21, 44, 51, 53, 55, 121, 206, 162, 146, 162, 209, + 193, 95, 51, 55, 41, 58, 54, 51, 101, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 75, 73, 130, 111, 111, 86, 68, 83, + 94, 81, 70, 65, 69, 82, 89, 90, 102, 109, 100, 108, 92, 97, 107, 102, + 95, 96, 96, 95, 94, 91, 88, 84, 81, 79, 77, 91, 90, 83, 70, 65, + 71, 79, 82, 92, 94, 95, 95, 92, 88, 84, 81, 74, 76, 76, 70, 63, + 58, 58, 59, 43, 49, 56, 60, 61, 66, 74, 82, 83, 94, 100, 98, 96, + 99, 97, 91, 89, 90, 90, 90, 88, 84, 80, 77, 80, 84, 85, 81, 78, + 78, 73, 68, 85, 36, 66, 52, 51, 67, 172, 205, 27, 53, 183, 250, 249, + 247, 232, 120, 65, 30, 56, 55, 33, 57, 89, 114, 146, 78, 107, 127, 86, + 63, 49, 46, 48, 51, 55, 60, 77, 194, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 202, 101, 117, 167, 183, 171, 156, 125, 93, + 97, 103, 89, 85, 79, 91, 106, 106, 108, 115, 114, 102, 89, 94, 106, 102, + 99, 101, 101, 100, 99, 95, 92, 88, 85, 83, 81, 78, 82, 84, 78, 78, + 82, 86, 87, 93, 95, 94, 94, 90, 86, 83, 82, 77, 76, 73, 71, 70, + 68, 65, 64, 57, 61, 64, 66, 65, 68, 74, 80, 83, 89, 91, 88, 89, + 96, 100, 100, 93, 95, 95, 94, 91, 87, 83, 83, 81, 86, 85, 80, 78, + 77, 74, 69, 59, 72, 75, 37, 65, 52, 112, 180, 152, 189, 250, 222, 117, + 81, 82, 21, 68, 49, 49, 43, 53, 69, 76, 109, 114, 44, 49, 67, 58, + 56, 44, 36, 56, 36, 49, 104, 170, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 96, 132, 156, 169, 195, 193, 181, 188, 162, 106, + 109, 133, 117, 99, 85, 94, 114, 113, 107, 113, 119, 105, 93, 98, 109, 105, + 103, 106, 104, 100, 98, 95, 92, 87, 84, 82, 80, 68, 74, 78, 78, 80, + 84, 88, 88, 96, 97, 95, 93, 88, 84, 83, 83, 81, 77, 74, 74, 77, + 78, 75, 71, 71, 73, 74, 73, 70, 71, 76, 80, 83, 87, 89, 89, 90, + 96, 101, 102, 95, 99, 100, 99, 95, 90, 89, 90, 88, 91, 88, 82, 77, + 76, 73, 68, 71, 58, 65, 44, 53, 31, 74, 107, 100, 163, 207, 151, 38, + 27, 52, 46, 49, 54, 44, 47, 87, 84, 52, 73, 71, 49, 51, 47, 43, + 56, 53, 46, 39, 48, 97, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 125, 125, 161, 182, 180, 186, 194, 188, 195, 172, 123, + 113, 117, 97, 104, 91, 97, 110, 109, 105, 109, 111, 112, 101, 106, 114, 108, + 106, 108, 104, 100, 99, 96, 93, 88, 85, 83, 82, 75, 76, 76, 77, 78, + 84, 89, 90, 97, 99, 97, 92, 86, 82, 83, 84, 82, 80, 77, 77, 78, + 80, 79, 78, 78, 78, 77, 76, 74, 76, 80, 83, 83, 89, 96, 99, 99, + 99, 98, 96, 96, 100, 102, 101, 96, 92, 92, 94, 95, 97, 91, 83, 78, + 75, 71, 66, 59, 39, 60, 48, 42, 55, 98, 81, 97, 135, 135, 101, 36, + 43, 46, 47, 40, 51, 47, 60, 98, 90, 52, 48, 40, 64, 71, 51, 47, + 56, 53, 46, 38, 107, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 124, 127, 150, 183, 197, 190, 189, 202, 205, 193, 174, 163, + 145, 123, 109, 111, 106, 109, 111, 107, 114, 116, 106, 112, 103, 107, 114, 108, + 108, 110, 104, 105, 104, 102, 99, 96, 93, 90, 89, 83, 82, 84, 87, 89, + 91, 92, 94, 97, 99, 97, 92, 84, 81, 83, 87, 80, 83, 82, 81, 78, + 77, 80, 83, 80, 80, 79, 79, 78, 82, 86, 89, 90, 93, 98, 101, 100, + 95, 93, 92, 95, 98, 99, 99, 96, 94, 94, 95, 94, 95, 92, 85, 81, + 80, 76, 72, 57, 63, 65, 44, 59, 76, 91, 77, 53, 56, 31, 28, 19, + 41, 39, 51, 59, 51, 53, 68, 78, 85, 83, 59, 36, 43, 35, 37, 44, + 39, 43, 58, 94, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 130, 143, 145, 191, 214, 214, 201, 194, 196, 199, 181, 172, 187, + 182, 161, 156, 121, 117, 117, 112, 109, 118, 121, 106, 106, 98, 104, 111, 107, + 111, 113, 106, 104, 103, 102, 100, 97, 95, 92, 92, 82, 82, 89, 97, 102, + 98, 92, 91, 96, 99, 98, 92, 84, 81, 83, 88, 80, 83, 85, 81, 77, + 76, 80, 85, 84, 83, 81, 81, 82, 86, 90, 93, 97, 94, 94, 94, 92, + 89, 91, 96, 97, 97, 96, 97, 98, 97, 97, 96, 90, 93, 93, 89, 87, + 88, 86, 82, 81, 23, 22, 65, 86, 73, 67, 61, 51, 50, 36, 37, 39, + 43, 44, 62, 58, 44, 58, 79, 67, 83, 106, 67, 63, 47, 34, 58, 60, + 44, 90, 155, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 215, 122, 142, 163, 163, 207, 210, 205, 193, 184, 199, 194, 188, 182, 176, + 175, 172, 165, 129, 117, 114, 116, 113, 114, 117, 109, 106, 100, 106, 111, 108, + 113, 116, 108, 102, 102, 100, 99, 97, 95, 94, 93, 87, 86, 90, 101, 104, + 98, 92, 92, 93, 98, 98, 94, 85, 81, 84, 89, 84, 84, 82, 80, 79, + 81, 84, 86, 88, 85, 81, 80, 81, 84, 86, 89, 93, 90, 91, 94, 94, + 91, 94, 101, 101, 98, 95, 98, 102, 104, 101, 98, 93, 97, 98, 96, 94, + 95, 92, 88, 77, 39, 49, 96, 109, 93, 72, 53, 32, 39, 47, 42, 48, + 38, 42, 49, 46, 44, 58, 80, 68, 86, 115, 78, 34, 37, 32, 50, 45, + 50, 127, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 157, 144, 182, 203, 184, 207, 193, 196, 201, 198, 186, 176, 196, 198, 164, + 167, 185, 171, 137, 114, 110, 121, 117, 111, 112, 114, 112, 108, 113, 115, 111, + 115, 117, 108, 105, 105, 103, 103, 101, 100, 99, 100, 105, 98, 96, 102, 103, + 100, 98, 101, 92, 97, 99, 95, 86, 82, 84, 90, 86, 83, 78, 78, 82, + 87, 87, 86, 89, 86, 80, 76, 76, 78, 79, 81, 85, 85, 93, 102, 104, + 99, 98, 103, 105, 100, 96, 99, 106, 109, 105, 100, 100, 104, 105, 101, 98, + 96, 92, 86, 73, 209, 197, 112, 120, 117, 51, 29, 41, 39, 46, 30, 49, + 48, 57, 45, 56, 59, 54, 65, 66, 88, 127, 106, 60, 84, 79, 82, 93, + 138, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 179, 179, 184, 205, 200, 196, 196, 196, 195, 191, 188, 187, 182, 184, 189, 175, + 159, 169, 192, 165, 113, 120, 100, 138, 124, 124, 103, 115, 119, 111, 105, 115, + 120, 116, 119, 117, 105, 101, 110, 112, 104, 103, 112, 108, 100, 99, 108, 110, + 102, 98, 101, 91, 92, 92, 90, 92, 93, 88, 82, 87, 86, 82, 80, 83, + 88, 89, 87, 90, 89, 85, 80, 79, 83, 85, 86, 86, 90, 92, 90, 92, + 98, 102, 103, 104, 102, 96, 93, 100, 110, 108, 100, 89, 85, 84, 90, 103, + 108, 93, 75, 87, 197, 125, 47, 72, 101, 16, 50, 50, 47, 44, 44, 48, + 53, 57, 58, 61, 49, 72, 69, 68, 88, 93, 109, 84, 85, 121, 152, 206, + 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 196, 206, 204, 200, 198, 197, 198, 197, 193, 191, 202, 200, 196, 189, 176, + 165, 162, 165, 180, 150, 128, 118, 108, 128, 118, 122, 113, 119, 114, 110, 120, + 122, 117, 116, 119, 110, 105, 109, 109, 104, 102, 108, 103, 98, 100, 111, 113, + 104, 100, 103, 99, 98, 95, 93, 96, 97, 89, 78, 86, 83, 81, 85, 87, + 87, 87, 86, 89, 89, 86, 85, 84, 85, 85, 85, 85, 90, 92, 90, 91, + 97, 101, 101, 101, 99, 93, 91, 98, 106, 105, 98, 87, 80, 83, 96, 104, + 99, 92, 89, 95, 104, 139, 147, 53, 61, 59, 64, 53, 50, 47, 47, 50, + 54, 56, 57, 66, 55, 74, 71, 69, 86, 89, 102, 119, 146, 197, 204, 215, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 197, 201, 202, 199, 197, 197, 198, 198, 195, 194, 181, 187, 188, 185, 187, + 192, 187, 178, 171, 158, 126, 113, 92, 130, 115, 124, 112, 120, 118, 115, 125, + 125, 117, 115, 120, 116, 111, 106, 105, 104, 102, 102, 101, 100, 105, 115, 112, + 103, 99, 102, 97, 96, 91, 91, 94, 95, 86, 74, 80, 76, 78, 87, 90, + 86, 85, 88, 89, 89, 87, 88, 87, 86, 85, 85, 84, 89, 91, 89, 89, + 94, 98, 97, 97, 95, 90, 90, 96, 102, 101, 96, 87, 79, 85, 101, 104, + 92, 92, 104, 97, 61, 107, 155, 68, 53, 54, 64, 48, 47, 47, 49, 53, + 56, 56, 56, 65, 58, 74, 74, 71, 83, 88, 95, 115, 166, 236, 228, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 197, 197, 198, 197, 196, 196, 197, 197, 196, 196, 194, 195, 193, 189, 191, + 192, 186, 176, 177, 165, 148, 120, 130, 148, 130, 116, 116, 125, 121, 118, 127, + 128, 119, 118, 119, 118, 112, 104, 101, 104, 102, 98, 105, 105, 110, 114, 108, + 99, 96, 99, 87, 89, 89, 88, 90, 91, 86, 78, 76, 70, 73, 84, 89, + 84, 85, 93, 90, 87, 86, 88, 87, 84, 83, 86, 82, 88, 90, 88, 88, + 92, 94, 93, 95, 93, 89, 90, 95, 99, 98, 95, 89, 87, 92, 101, 102, + 96, 96, 103, 89, 71, 67, 83, 62, 59, 33, 47, 47, 47, 49, 53, 57, + 61, 62, 60, 65, 64, 77, 80, 77, 89, 96, 96, 88, 142, 222, 222, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 239, 212, 200, 200, 200, 201, 200, 199, 200, 200, 207, 201, 198, 197, 193, + 183, 180, 183, 179, 177, 168, 144, 149, 150, 119, 108, 124, 130, 123, 118, 126, + 129, 122, 123, 117, 116, 109, 102, 99, 103, 103, 99, 106, 107, 110, 109, 104, + 98, 98, 102, 86, 92, 94, 91, 88, 88, 87, 85, 83, 77, 78, 84, 86, + 83, 87, 95, 92, 87, 82, 84, 83, 80, 82, 88, 82, 88, 90, 87, 87, + 90, 91, 90, 94, 91, 89, 92, 96, 97, 97, 96, 93, 98, 100, 95, 97, + 103, 100, 92, 83, 59, 68, 61, 21, 44, 50, 41, 53, 54, 56, 59, 63, + 65, 65, 64, 69, 72, 79, 84, 83, 92, 104, 96, 88, 131, 214, 223, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 208, 203, 205, 206, 205, 203, 203, 204, 205, 197, 191, 193, 197, 194, + 187, 192, 202, 167, 182, 170, 172, 147, 143, 100, 124, 130, 135, 125, 118, 126, + 130, 125, 127, 117, 112, 104, 101, 99, 99, 100, 100, 103, 104, 104, 103, 101, + 101, 102, 104, 90, 94, 93, 88, 83, 84, 83, 82, 93, 91, 90, 86, 84, + 84, 87, 90, 94, 86, 80, 83, 81, 78, 81, 90, 84, 89, 91, 88, 86, + 89, 89, 87, 94, 90, 89, 93, 96, 95, 95, 96, 96, 104, 102, 91, 93, + 103, 97, 80, 81, 50, 67, 66, 32, 49, 62, 54, 55, 55, 55, 57, 60, + 61, 59, 58, 66, 74, 73, 80, 79, 85, 101, 87, 94, 119, 203, 226, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 204, 206, 208, 206, 203, 201, 203, 204, 203, 203, 201, 194, 189, + 188, 186, 185, 180, 187, 187, 192, 178, 146, 105, 142, 133, 138, 127, 121, 128, + 131, 126, 128, 119, 108, 100, 101, 99, 93, 94, 100, 99, 100, 100, 100, 103, + 104, 103, 100, 95, 93, 86, 81, 82, 87, 84, 79, 89, 97, 97, 87, 83, + 87, 89, 84, 93, 85, 81, 87, 85, 79, 81, 89, 84, 90, 92, 89, 87, + 88, 88, 86, 92, 88, 88, 94, 96, 93, 93, 96, 95, 99, 98, 92, 92, + 94, 87, 77, 80, 61, 62, 62, 69, 66, 49, 56, 53, 52, 52, 54, 57, + 60, 59, 59, 64, 74, 70, 79, 80, 87, 106, 88, 104, 98, 176, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 203, 206, 205, 204, 200, 197, 199, 200, 196, 205, 202, 188, 188, + 198, 194, 179, 196, 176, 194, 180, 207, 130, 98, 117, 133, 138, 128, 122, 129, + 132, 125, 126, 121, 106, 98, 102, 99, 89, 88, 99, 100, 101, 100, 101, 103, + 103, 98, 91, 102, 94, 82, 81, 91, 99, 95, 86, 77, 94, 96, 84, 81, + 90, 91, 81, 92, 84, 83, 91, 90, 82, 81, 89, 85, 90, 92, 89, 87, + 88, 88, 85, 91, 87, 87, 93, 95, 91, 91, 95, 94, 92, 93, 95, 91, + 83, 77, 77, 78, 61, 75, 70, 63, 59, 47, 43, 52, 51, 52, 56, 63, + 68, 71, 72, 69, 81, 75, 86, 89, 98, 122, 102, 125, 90, 154, 214, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 239, 206, 206, 205, 204, 204, 205, 206, 202, 195, 194, 199, 193, + 182, 186, 200, 195, 188, 182, 184, 192, 188, 163, 137, 122, 138, 134, 123, 100, + 143, 142, 111, 120, 110, 100, 99, 95, 85, 81, 85, 103, 102, 98, 96, 96, + 99, 99, 97, 97, 91, 84, 83, 85, 86, 85, 82, 84, 84, 85, 88, 91, + 90, 84, 80, 87, 89, 86, 80, 79, 86, 87, 84, 89, 89, 87, 86, 84, + 85, 88, 91, 80, 85, 89, 90, 88, 88, 91, 94, 92, 91, 88, 84, 79, + 76, 77, 78, 58, 59, 58, 58, 56, 52, 50, 51, 59, 59, 54, 58, 71, + 73, 74, 85, 86, 82, 69, 98, 89, 87, 133, 110, 111, 105, 101, 197, 211, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 209, 208, 207, 205, 205, 204, 205, 205, 200, 199, 202, 198, + 191, 192, 200, 193, 188, 183, 185, 192, 190, 169, 147, 138, 126, 122, 141, 120, + 131, 126, 124, 116, 105, 97, 97, 92, 84, 81, 87, 93, 95, 96, 96, 97, + 99, 100, 100, 85, 85, 85, 84, 82, 82, 82, 83, 84, 83, 84, 86, 88, + 88, 83, 79, 83, 86, 86, 82, 82, 86, 86, 82, 84, 85, 87, 87, 85, + 84, 85, 86, 87, 87, 88, 89, 91, 92, 91, 90, 88, 87, 85, 82, 78, + 75, 74, 75, 74, 67, 62, 60, 53, 45, 42, 45, 46, 53, 55, 60, 70, + 69, 72, 85, 93, 92, 87, 107, 102, 100, 129, 118, 122, 114, 104, 182, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 241, 211, 209, 206, 205, 203, 203, 205, 204, 201, 201, 200, + 199, 195, 192, 189, 187, 185, 185, 191, 190, 176, 160, 150, 125, 118, 143, 130, + 121, 114, 123, 113, 101, 95, 95, 91, 84, 82, 88, 86, 91, 97, 99, 98, + 96, 97, 99, 87, 92, 96, 96, 92, 89, 91, 93, 82, 82, 82, 84, 86, + 85, 81, 79, 79, 83, 85, 84, 84, 86, 84, 80, 81, 83, 87, 87, 86, + 83, 82, 82, 90, 87, 85, 86, 90, 91, 88, 83, 83, 83, 83, 81, 76, + 73, 71, 71, 68, 58, 54, 59, 57, 49, 50, 58, 57, 68, 73, 79, 84, + 82, 84, 99, 105, 106, 109, 116, 115, 113, 121, 126, 122, 109, 89, 139, 217, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 213, 210, 208, 206, 203, 202, 203, 203, 200, 197, 198, + 201, 193, 183, 187, 188, 186, 184, 187, 187, 179, 169, 158, 146, 132, 130, 122, + 125, 120, 114, 113, 102, 95, 95, 91, 83, 82, 87, 87, 92, 99, 102, 97, + 90, 88, 91, 82, 85, 87, 86, 83, 81, 82, 84, 83, 82, 82, 83, 84, + 83, 82, 81, 79, 81, 83, 83, 84, 84, 82, 80, 82, 84, 86, 86, 84, + 83, 82, 83, 84, 82, 81, 83, 85, 86, 83, 81, 80, 81, 82, 79, 74, + 69, 66, 66, 55, 44, 45, 59, 63, 56, 57, 68, 62, 70, 72, 76, 83, + 80, 81, 94, 95, 99, 108, 107, 114, 116, 112, 130, 138, 122, 98, 115, 213, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 241, 211, 208, 205, 202, 200, 202, 202, 198, 196, 198, + 199, 190, 179, 186, 187, 186, 183, 183, 183, 179, 172, 172, 169, 148, 120, 119, + 125, 124, 115, 115, 104, 96, 96, 91, 83, 81, 86, 86, 90, 97, 102, 96, + 85, 83, 87, 90, 86, 82, 80, 81, 82, 81, 80, 83, 84, 84, 83, 82, + 83, 82, 83, 81, 80, 80, 82, 82, 82, 82, 84, 86, 86, 86, 84, 82, + 82, 83, 86, 76, 79, 82, 82, 81, 80, 82, 84, 80, 81, 80, 76, 70, + 65, 61, 60, 58, 49, 50, 61, 64, 53, 48, 52, 66, 68, 65, 69, 80, + 81, 81, 92, 82, 84, 93, 94, 103, 107, 104, 122, 128, 121, 110, 117, 221, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 213, 209, 205, 201, 201, 206, 202, 198, 199, 199, + 196, 188, 181, 185, 186, 185, 181, 181, 182, 178, 173, 182, 171, 151, 122, 126, + 114, 116, 121, 115, 104, 96, 96, 92, 82, 80, 85, 83, 83, 90, 97, 95, + 86, 84, 90, 100, 94, 87, 85, 87, 89, 88, 86, 84, 84, 84, 82, 80, + 81, 83, 85, 82, 79, 79, 82, 83, 81, 83, 86, 87, 87, 85, 83, 80, + 81, 83, 86, 74, 79, 83, 83, 80, 79, 82, 85, 76, 77, 75, 71, 65, + 60, 57, 57, 60, 56, 56, 61, 61, 53, 43, 39, 64, 64, 59, 64, 77, + 78, 79, 89, 90, 88, 88, 95, 95, 92, 96, 98, 113, 105, 103, 114, 216, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 212, 209, 205, 201, 200, 207, 199, 196, 201, 200, + 190, 184, 185, 184, 184, 183, 180, 182, 185, 181, 174, 176, 173, 160, 130, 137, + 113, 113, 121, 111, 100, 93, 94, 91, 83, 80, 86, 83, 79, 82, 92, 93, + 87, 86, 92, 84, 82, 80, 79, 78, 79, 78, 78, 82, 83, 82, 80, 78, + 78, 81, 85, 81, 78, 80, 86, 87, 83, 82, 85, 84, 85, 85, 83, 81, + 80, 80, 82, 77, 78, 80, 80, 79, 79, 79, 79, 70, 69, 68, 64, 59, + 56, 55, 57, 54, 56, 58, 57, 59, 60, 52, 41, 45, 49, 46, 48, 56, + 52, 52, 62, 74, 71, 66, 90, 87, 80, 99, 78, 106, 92, 99, 123, 213, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 241, 209, 206, 201, 200, 208, 196, 194, 200, 197, + 184, 180, 187, 182, 183, 181, 180, 184, 187, 184, 176, 169, 184, 179, 140, 149, + 130, 127, 122, 107, 97, 90, 92, 90, 83, 81, 87, 86, 78, 79, 89, 92, + 86, 85, 92, 79, 83, 86, 85, 82, 80, 81, 83, 81, 82, 81, 78, 75, + 76, 80, 84, 78, 77, 81, 89, 90, 84, 81, 83, 80, 82, 85, 84, 82, + 79, 78, 77, 80, 77, 74, 75, 78, 78, 74, 70, 64, 64, 62, 58, 55, + 54, 56, 57, 54, 59, 59, 53, 56, 63, 57, 43, 45, 53, 52, 51, 51, + 42, 39, 51, 27, 29, 28, 74, 77, 75, 110, 78, 55, 53, 87, 145, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 206, 207, 204, 200, 209, 204, 200, 197, 189, + 181, 180, 186, 181, 183, 183, 180, 181, 182, 179, 173, 168, 168, 168, 164, 148, + 131, 122, 121, 111, 103, 100, 89, 85, 87, 81, 86, 78, 80, 82, 84, 86, + 88, 88, 89, 79, 77, 78, 83, 85, 82, 80, 80, 86, 79, 75, 79, 81, + 80, 79, 80, 79, 82, 87, 91, 92, 90, 86, 83, 75, 77, 78, 80, 79, + 77, 75, 73, 86, 82, 78, 77, 78, 76, 69, 63, 60, 62, 63, 62, 61, + 60, 61, 63, 55, 61, 66, 65, 59, 55, 55, 59, 56, 46, 63, 43, 57, + 61, 57, 41, 71, 123, 97, 49, 41, 44, 50, 48, 67, 165, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 214, 200, 202, 202, 208, 201, 195, 193, 187, + 181, 180, 185, 181, 183, 182, 180, 180, 182, 178, 172, 169, 167, 167, 164, 151, + 134, 122, 120, 109, 101, 95, 86, 82, 81, 77, 79, 77, 79, 80, 83, 85, + 86, 87, 88, 82, 76, 74, 76, 78, 78, 79, 82, 75, 72, 72, 78, 82, + 83, 85, 89, 81, 82, 84, 86, 87, 87, 86, 85, 79, 80, 81, 81, 81, + 79, 78, 77, 80, 76, 73, 74, 76, 75, 70, 65, 60, 58, 57, 58, 62, + 63, 62, 60, 60, 63, 66, 65, 61, 58, 59, 61, 75, 55, 49, 59, 51, + 49, 54, 61, 168, 194, 154, 105, 82, 60, 125, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 244, 205, 204, 201, 205, 197, 190, 187, 184, + 182, 181, 182, 180, 182, 181, 179, 179, 181, 177, 171, 170, 166, 165, 165, 159, + 145, 133, 130, 105, 99, 89, 83, 79, 76, 74, 73, 76, 77, 78, 80, 82, + 84, 86, 86, 84, 75, 68, 68, 70, 72, 77, 83, 77, 75, 76, 80, 80, + 78, 80, 86, 83, 82, 81, 81, 81, 83, 86, 88, 81, 81, 80, 80, 80, + 79, 79, 79, 76, 73, 71, 71, 72, 71, 67, 63, 63, 58, 55, 57, 64, + 66, 63, 58, 54, 55, 58, 59, 59, 60, 62, 63, 61, 53, 57, 68, 63, + 65, 55, 171, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 242, 210, 197, 202, 195, 187, 182, 182, + 181, 181, 181, 179, 181, 180, 177, 178, 179, 176, 169, 172, 166, 162, 166, 165, + 158, 149, 146, 103, 100, 85, 83, 80, 74, 76, 71, 74, 74, 75, 77, 79, + 81, 83, 84, 82, 73, 66, 65, 66, 69, 74, 81, 79, 78, 80, 81, 78, + 74, 75, 81, 83, 82, 80, 79, 80, 83, 85, 87, 79, 79, 78, 77, 76, + 76, 77, 77, 78, 75, 71, 70, 69, 67, 63, 60, 65, 62, 59, 61, 65, + 67, 64, 60, 66, 64, 64, 64, 65, 67, 68, 67, 69, 64, 82, 55, 74, + 66, 34, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 201, 198, 194, 188, 183, 181, + 181, 182, 182, 179, 181, 181, 178, 178, 179, 176, 169, 176, 166, 160, 161, 163, + 160, 154, 152, 105, 105, 83, 85, 83, 74, 83, 73, 72, 72, 72, 73, 75, + 78, 80, 82, 79, 72, 66, 67, 68, 69, 72, 76, 74, 74, 77, 80, 78, + 75, 77, 83, 80, 80, 80, 81, 82, 83, 84, 84, 79, 78, 77, 76, 75, + 76, 76, 76, 77, 74, 72, 69, 68, 66, 63, 61, 67, 67, 67, 66, 66, + 65, 64, 65, 70, 67, 64, 62, 62, 62, 60, 58, 75, 59, 75, 51, 66, + 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 194, 195, 192, 185, 179, + 181, 183, 182, 180, 182, 182, 179, 179, 180, 177, 170, 179, 169, 160, 158, 157, + 151, 146, 144, 112, 113, 82, 86, 83, 72, 86, 72, 69, 69, 69, 70, 72, + 75, 78, 80, 78, 72, 69, 71, 72, 71, 71, 74, 78, 77, 78, 80, 78, + 73, 72, 75, 77, 78, 79, 80, 81, 81, 81, 81, 78, 78, 78, 78, 77, + 77, 76, 76, 72, 71, 69, 68, 67, 67, 67, 67, 64, 67, 68, 67, 65, + 64, 64, 66, 61, 62, 64, 65, 67, 68, 70, 71, 65, 62, 73, 85, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 197, 198, 190, 180, + 180, 183, 182, 181, 183, 182, 180, 180, 181, 177, 171, 177, 169, 162, 159, 155, + 145, 139, 137, 120, 121, 82, 85, 81, 66, 84, 68, 68, 67, 67, 68, 70, + 73, 76, 78, 80, 74, 72, 74, 75, 73, 73, 75, 84, 79, 78, 80, 79, + 73, 68, 68, 74, 75, 75, 76, 77, 77, 78, 79, 75, 76, 77, 78, 77, + 76, 74, 73, 70, 70, 68, 67, 65, 65, 66, 67, 60, 59, 59, 61, 63, + 65, 65, 64, 69, 73, 77, 79, 78, 78, 80, 83, 73, 80, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 200, 203, 194, 183, + 180, 183, 183, 181, 183, 182, 180, 180, 182, 179, 173, 173, 167, 165, 164, 158, + 146, 138, 135, 125, 125, 81, 83, 78, 60, 80, 62, 66, 66, 66, 66, 68, + 72, 75, 77, 82, 77, 73, 75, 76, 76, 75, 77, 76, 71, 71, 77, 81, + 79, 75, 75, 74, 73, 72, 71, 72, 74, 76, 77, 71, 72, 74, 75, 75, + 73, 71, 69, 72, 72, 69, 66, 63, 61, 62, 63, 56, 52, 50, 54, 61, + 65, 64, 60, 64, 68, 71, 65, 56, 48, 46, 47, 62, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 203, 204, 196, 184, + 178, 183, 191, 184, 186, 170, 178, 181, 178, 147, 184, 174, 168, 178, 154, 146, + 156, 135, 138, 113, 103, 89, 81, 77, 76, 74, 71, 73, 74, 73, 71, 68, + 70, 74, 79, 77, 74, 73, 74, 77, 79, 78, 76, 73, 75, 77, 76, 75, + 76, 73, 71, 69, 74, 77, 74, 69, 69, 75, 81, 71, 73, 74, 76, 76, + 74, 72, 70, 71, 69, 66, 63, 60, 59, 58, 58, 57, 55, 47, 40, 44, + 57, 59, 54, 62, 73, 79, 78, 57, 77, 50, 36, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 205, 199, 196, + 192, 182, 175, 178, 177, 187, 190, 194, 155, 127, 163, 170, 177, 157, 161, 137, + 141, 129, 127, 107, 99, 88, 82, 79, 77, 73, 70, 68, 67, 66, 62, 61, + 62, 67, 72, 73, 71, 71, 74, 78, 80, 80, 79, 72, 74, 74, 73, 73, + 73, 72, 71, 67, 70, 73, 71, 69, 68, 72, 75, 71, 71, 72, 72, 73, + 72, 70, 69, 67, 66, 64, 62, 61, 61, 61, 63, 65, 58, 43, 36, 46, + 60, 61, 52, 63, 65, 79, 69, 134, 169, 199, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 203, 199, + 195, 186, 179, 197, 181, 191, 175, 181, 136, 134, 179, 165, 180, 140, 172, 142, + 142, 140, 138, 102, 95, 87, 82, 81, 78, 73, 67, 68, 67, 63, 59, 58, + 59, 64, 68, 68, 67, 68, 70, 74, 76, 77, 76, 72, 71, 70, 70, 70, + 69, 69, 70, 68, 69, 70, 71, 72, 72, 72, 71, 70, 70, 70, 69, 69, + 68, 68, 68, 62, 62, 62, 61, 62, 63, 65, 66, 65, 62, 50, 38, 40, + 51, 54, 50, 64, 55, 68, 47, 201, 231, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 197, + 188, 192, 198, 188, 180, 195, 188, 192, 162, 150, 175, 167, 168, 144, 163, 147, + 140, 138, 140, 105, 97, 87, 82, 80, 77, 73, 68, 70, 67, 62, 57, 56, + 58, 62, 65, 63, 64, 65, 66, 69, 70, 71, 72, 70, 67, 66, 67, 67, + 66, 67, 70, 71, 70, 70, 72, 75, 75, 72, 69, 69, 68, 67, 66, 65, + 65, 65, 65, 60, 60, 61, 61, 62, 63, 65, 66, 61, 68, 65, 47, 34, + 36, 41, 46, 59, 44, 50, 38, 222, 238, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, + 191, 189, 194, 190, 188, 185, 184, 180, 190, 164, 168, 172, 149, 159, 140, 145, + 128, 118, 122, 111, 100, 87, 79, 76, 75, 73, 69, 67, 63, 58, 54, 53, + 54, 56, 58, 58, 59, 60, 63, 65, 68, 71, 74, 71, 66, 65, 68, 68, + 65, 66, 71, 72, 70, 68, 71, 74, 74, 70, 66, 68, 67, 65, 64, 62, + 63, 63, 63, 62, 62, 62, 63, 63, 63, 63, 63, 63, 69, 66, 52, 43, + 44, 43, 39, 48, 41, 35, 52, 209, 236, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, + 210, 190, 173, 201, 193, 173, 165, 154, 188, 167, 161, 172, 144, 170, 133, 150, + 133, 121, 122, 111, 100, 86, 77, 74, 73, 71, 68, 67, 64, 59, 56, 56, + 58, 58, 58, 57, 58, 59, 60, 62, 68, 75, 78, 72, 66, 65, 70, 70, + 66, 67, 73, 70, 68, 66, 68, 69, 70, 67, 64, 67, 66, 65, 64, 63, + 61, 60, 60, 61, 62, 63, 63, 63, 63, 62, 62, 71, 66, 57, 54, 62, + 68, 57, 39, 44, 49, 34, 60, 164, 228, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 206, 185, 175, 173, 184, 179, 173, 182, 158, 141, 158, 149, 157, 139, 151, + 138, 136, 124, 104, 95, 83, 76, 73, 72, 69, 65, 67, 64, 61, 60, 61, + 62, 60, 59, 60, 60, 58, 55, 55, 60, 68, 74, 73, 65, 66, 74, 74, + 67, 66, 73, 70, 69, 67, 67, 67, 67, 67, 66, 65, 65, 65, 64, 63, + 61, 59, 57, 59, 60, 62, 63, 64, 63, 63, 62, 72, 68, 59, 56, 66, + 75, 66, 50, 54, 68, 54, 59, 113, 213, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 243, 176, 163, 188, 172, 174, 166, 168, 164, 143, 155, 136, 136, 135, + 123, 127, 101, 97, 89, 79, 76, 73, 72, 66, 62, 63, 60, 57, 58, 59, + 60, 57, 55, 65, 63, 57, 52, 47, 51, 57, 63, 73, 67, 67, 77, 77, + 68, 67, 74, 73, 73, 71, 69, 68, 67, 68, 69, 65, 66, 66, 66, 65, + 62, 58, 56, 57, 59, 61, 63, 64, 64, 64, 63, 65, 72, 71, 62, 58, + 63, 65, 63, 65, 89, 79, 63, 88, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 242, 193, 173, 182, 180, 169, 166, 146, 138, 149, 150, 134, 118, + 116, 115, 113, 102, 93, 72, 79, 65, 71, 58, 62, 66, 65, 57, 74, 59, + 60, 52, 65, 50, 60, 63, 62, 57, 69, 56, 32, 74, 129, 111, 31, 64, + 67, 47, 90, 58, 62, 69, 68, 79, 56, 74, 67, 66, 66, 65, 64, 62, + 60, 57, 56, 59, 57, 55, 57, 60, 62, 61, 59, 70, 69, 68, 67, 64, + 62, 65, 72, 69, 77, 73, 51, 160, 209, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 222, 160, 167, 164, 159, 131, 145, 134, 129, 134, 130, + 116, 104, 104, 89, 87, 72, 82, 67, 74, 67, 75, 70, 70, 58, 67, 61, + 76, 67, 66, 79, 72, 64, 63, 255, 255, 255, 255, 188, 208, 193, 84, 46, + 60, 72, 69, 75, 73, 69, 65, 74, 56, 74, 69, 68, 68, 67, 66, 65, + 61, 59, 57, 64, 61, 58, 58, 59, 59, 57, 54, 56, 57, 63, 71, 69, + 58, 60, 75, 70, 74, 71, 70, 220, 215, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 219, 155, 164, 134, 135, 134, 130, 124, 118, + 113, 106, 101, 90, 91, 79, 87, 67, 70, 62, 72, 60, 76, 67, 67, 52, + 72, 67, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 109, + 57, 60, 76, 69, 67, 62, 65, 74, 60, 74, 67, 69, 69, 67, 66, 65, + 62, 60, 59, 64, 62, 59, 59, 58, 57, 54, 52, 66, 68, 69, 74, 69, + 49, 41, 56, 52, 44, 61, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 143, 140, 130, 120, 115, 114, + 109, 105, 103, 92, 92, 79, 87, 68, 70, 58, 65, 62, 74, 66, 72, 60, + 76, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, + 98, 39, 49, 73, 76, 67, 71, 71, 59, 71, 68, 68, 68, 67, 66, 63, + 62, 60, 59, 59, 58, 57, 57, 56, 55, 54, 53, 60, 65, 57, 55, 64, + 55, 41, 45, 59, 65, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 113, 101, 115, 121, + 104, 93, 97, 81, 79, 67, 81, 72, 79, 67, 70, 77, 71, 57, 76, 135, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 127, 54, 75, 81, 71, 78, 68, 59, 68, 71, 71, 69, 68, 67, 65, + 64, 64, 62, 58, 58, 57, 56, 55, 54, 52, 53, 44, 58, 49, 58, 107, + 135, 127, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 110, 96, + 99, 95, 84, 78, 76, 62, 79, 72, 81, 69, 71, 72, 75, 131, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 133, 33, 51, 54, 82, 76, 71, 71, 69, 75, 74, 71, 70, 68, + 68, 68, 68, 64, 63, 62, 59, 56, 53, 52, 52, 42, 58, 53, 86, 173, + 224, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 97, 97, 80, 84, 83, 70, 81, 68, 74, 63, 68, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 194, 78, 60, 81, 72, 74, 72, 71, 74, 73, 72, 70, 68, + 67, 68, 69, 67, 67, 67, 64, 60, 57, 57, 58, 47, 52, 49, 101, 199, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 200, 85, 85, 76, 84, 69, 73, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 202, 78, 50, 61, 71, 80, 72, 71, 68, 67, 65, + 64, 64, 64, 65, 66, 68, 67, 64, 63, 65, 68, 71, 66, 60, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 193, 51, 54, 67, 72, 82, 83, 72, 66, + 71, 74, 71, 66, 63, 62, 61, 61, 63, 70, 79, 66, 71, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 86, 64, 56, 51, 59, 67, + 63, 48, 36, 59, 63, 66, 68, 70, 68, 65, 60, 44, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 65, 45, 36, 52, 68, + 69, 64, 63, 49, 58, 64, 66, 68, 71, 66, 56, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 72, 35, + 18, 22, 35, 42, 49, 45, 31, 25, 30, 32, 102, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 120, 103, 94, 106, 114, 115, 122, 181, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 158, 185, 163, 195, + 194, 183, 117, 149, 198, 218, 221, 130, 104, 211, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 188, 141, 139, 156, 134, 148, 171, 186, 146, 136, 142, 157, 175, 159, 183, + 188, 163, 89, 79, 128, 174, 174, 88, 52, 50, 56, 102, 103, 153, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 118, 135, 137, 104, 122, 149, + 162, 183, 149, 154, 172, 140, 141, 166, 189, 151, 145, 142, 153, 159, 162, 192, + 220, 179, 97, 101, 126, 177, 195, 158, 181, 196, 200, 239, 245, 244, 238, 241, + 249, 249, 240, 240, 171, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 225, 178, 153, 176, 134, 132, 116, 94, 115, 145, + 162, 167, 123, 147, 153, 134, 135, 165, 194, 129, 134, 152, 143, 172, 165, 177, + 232, 237, 217, 233, 231, 246, 255, 255, 231, 248, 230, 242, 249, 253, 225, 253, + 242, 250, 205, 217, 215, 248, 195, 119, 240, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 228, 161, 156, 171, 139, 171, 183, 174, 138, 134, 98, 77, 105, 116, + 110, 105, 63, 79, 88, 70, 79, 120, 181, 194, 178, 134, 164, 183, 205, 228, + 236, 238, 235, 232, 255, 254, 253, 255, 248, 248, 253, 246, 224, 225, 255, 243, + 252, 241, 244, 230, 98, 83, 166, 219, 242, 214, 202, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 222, 166, 166, 161, 174, 181, 122, 132, 115, 127, 109, 91, 64, 87, 155, 183, + 202, 238, 236, 207, 240, 250, 242, 236, 223, 215, 132, 133, 191, 176, 161, 138, + 88, 90, 104, 118, 244, 255, 242, 242, 255, 246, 250, 223, 208, 255, 242, 236, + 240, 255, 229, 238, 228, 184, 78, 123, 109, 186, 201, 234, 221, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 124, + 117, 147, 164, 141, 122, 150, 122, 167, 156, 154, 157, 129, 123, 172, 225, 221, + 222, 252, 255, 255, 255, 247, 217, 246, 237, 230, 157, 139, 170, 139, 94, 63, + 41, 54, 63, 64, 188, 235, 231, 246, 255, 255, 245, 223, 228, 169, 242, 255, + 242, 242, 255, 253, 253, 223, 10, 88, 84, 122, 165, 170, 193, 201, 218, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 183, 182, 177, 121, + 129, 155, 154, 119, 104, 180, 177, 228, 242, 222, 241, 226, 217, 234, 225, 179, + 152, 144, 132, 123, 91, 91, 92, 214, 248, 233, 204, 137, 96, 85, 66, 67, + 88, 77, 58, 36, 33, 58, 73, 142, 185, 255, 237, 236, 255, 56, 146, 255, + 230, 239, 249, 246, 228, 251, 73, 106, 97, 77, 62, 51, 111, 174, 165, 177, + 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 162, 169, 160, 161, 177, 157, + 214, 235, 211, 227, 243, 207, 226, 239, 209, 231, 153, 202, 162, 116, 56, 25, + 39, 54, 65, 88, 70, 90, 78, 158, 131, 71, 57, 86, 51, 90, 110, 108, + 118, 87, 65, 93, 116, 207, 227, 255, 251, 222, 64, 65, 11, 89, 39, 32, + 111, 177, 233, 247, 255, 226, 80, 123, 167, 190, 170, 127, 88, 136, 124, 217, + 161, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 169, 165, 162, 149, 178, 209, 239, 245, + 230, 195, 164, 179, 169, 68, 153, 196, 191, 224, 85, 43, 72, 106, 117, 141, + 152, 129, 132, 97, 88, 94, 72, 98, 80, 85, 100, 77, 145, 228, 252, 247, + 250, 247, 237, 240, 253, 255, 242, 247, 255, 243, 75, 36, 117, 73, 99, 102, + 45, 39, 120, 141, 225, 244, 215, 239, 203, 206, 231, 219, 101, 21, 53, 136, + 168, 137, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 153, 169, 167, 172, 207, 247, 253, 223, 185, + 89, 78, 141, 205, 152, 166, 212, 193, 208, 163, 118, 90, 119, 139, 126, 137, + 138, 117, 151, 95, 86, 84, 93, 101, 86, 119, 98, 35, 189, 255, 249, 243, + 253, 255, 239, 255, 243, 250, 249, 255, 247, 193, 50, 48, 165, 247, 206, 194, + 89, 31, 44, 86, 119, 198, 222, 221, 213, 219, 206, 218, 130, 58, 33, 137, + 199, 169, 183, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 223, 151, 160, 168, 155, 251, 118, 82, 58, 42, + 164, 190, 204, 153, 180, 217, 200, 145, 139, 59, 82, 94, 134, 109, 122, 153, + 108, 110, 73, 99, 204, 207, 204, 252, 255, 255, 243, 215, 236, 242, 250, 241, + 249, 255, 235, 250, 255, 237, 255, 255, 243, 252, 213, 220, 243, 243, 249, 247, + 248, 219, 126, 21, 42, 32, 122, 202, 219, 186, 147, 175, 188, 142, 40, 173, + 204, 211, 208, 130, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 219, 161, 182, 163, 111, 85, 190, 64, 25, 207, 203, + 223, 193, 226, 218, 174, 105, 78, 54, 22, 39, 80, 91, 64, 91, 122, 135, + 88, 54, 203, 254, 241, 212, 248, 247, 255, 237, 236, 243, 232, 210, 218, 223, + 237, 237, 247, 240, 255, 239, 189, 171, 211, 237, 253, 246, 239, 220, 232, 239, + 246, 255, 250, 224, 37, 23, 28, 83, 119, 211, 182, 84, 84, 183, 128, 130, + 197, 216, 248, 225, 146, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 213, 142, 156, 134, 146, 194, 223, 246, 215, 206, 229, 226, + 141, 155, 110, 74, 64, 35, 26, 66, 80, 147, 180, 217, 239, 104, 95, 179, + 200, 237, 246, 159, 101, 200, 238, 255, 238, 230, 250, 244, 244, 241, 253, 255, + 247, 228, 255, 253, 206, 71, 57, 66, 59, 63, 62, 220, 246, 248, 247, 251, + 251, 255, 244, 244, 247, 208, 42, 92, 49, 47, 148, 188, 175, 153, 147, 149, + 198, 155, 118, 230, 242, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 225, 133, 173, 189, 167, 173, 221, 254, 255, 255, 222, 248, 213, + 54, 92, 80, 97, 39, 52, 62, 87, 110, 143, 231, 250, 232, 203, 61, 129, + 234, 212, 222, 132, 20, 222, 255, 235, 240, 241, 209, 250, 248, 247, 248, 241, + 227, 238, 222, 240, 169, 59, 59, 95, 93, 48, 75, 194, 236, 245, 237, 244, + 248, 241, 237, 254, 254, 217, 150, 122, 117, 51, 95, 167, 212, 143, 145, 170, + 197, 115, 62, 232, 236, 225, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 158, 176, 158, 166, 236, 228, 201, 251, 255, 237, 255, 120, 73, + 100, 98, 194, 243, 228, 217, 143, 73, 160, 161, 191, 195, 226, 228, 142, 66, + 66, 88, 64, 94, 110, 157, 245, 239, 248, 222, 244, 230, 229, 242, 245, 251, + 235, 236, 111, 57, 228, 205, 243, 238, 180, 215, 186, 209, 218, 226, 239, 250, + 238, 229, 251, 248, 245, 255, 235, 5, 108, 148, 54, 96, 162, 195, 179, 184, + 205, 83, 59, 192, 253, 232, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 160, 165, 156, 195, 216, 113, 45, 103, 203, 139, 75, 141, 246, + 245, 247, 231, 205, 233, 252, 230, 76, 138, 158, 204, 198, 200, 236, 229, 116, + 127, 151, 124, 114, 153, 83, 196, 249, 229, 243, 228, 250, 247, 245, 221, 234, + 242, 245, 115, 57, 223, 250, 200, 179, 172, 201, 202, 196, 209, 229, 233, 239, + 240, 227, 238, 236, 238, 238, 255, 68, 73, 129, 117, 47, 90, 71, 93, 173, + 220, 113, 49, 155, 235, 251, 243, 230, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 173, 145, 165, 193, 149, 73, 64, 100, 116, 90, 44, 187, 247, + 254, 213, 213, 106, 176, 255, 218, 31, 155, 172, 187, 194, 112, 178, 219, 143, + 91, 139, 155, 139, 148, 66, 108, 247, 235, 253, 234, 234, 239, 251, 241, 241, + 246, 161, 79, 110, 216, 230, 206, 226, 192, 215, 187, 185, 206, 229, 199, 191, + 230, 242, 244, 234, 253, 255, 254, 94, 63, 128, 127, 109, 151, 62, 78, 132, + 230, 191, 57, 167, 246, 216, 238, 222, 184, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 222, 167, 191, 163, 108, 111, 151, 146, 104, 118, 97, 147, 82, 100, + 69, 81, 120, 85, 92, 244, 206, 50, 205, 161, 174, 168, 86, 174, 208, 211, + 86, 165, 117, 152, 117, 137, 89, 49, 139, 223, 250, 253, 239, 242, 235, 240, + 247, 67, 28, 0, 85, 195, 164, 191, 173, 160, 171, 215, 216, 248, 226, 191, + 197, 204, 220, 231, 214, 228, 240, 111, 73, 122, 123, 128, 127, 143, 118, 46, + 244, 233, 28, 73, 228, 251, 149, 55, 245, 79, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 174, 189, 230, 120, 109, 120, 122, 115, 125, 121, 150, 147, 86, 82, + 106, 144, 147, 128, 146, 189, 122, 121, 231, 141, 176, 163, 77, 120, 182, 225, + 65, 76, 142, 143, 142, 154, 144, 123, 77, 67, 102, 169, 245, 235, 244, 231, + 234, 244, 212, 180, 28, 35, 60, 54, 73, 138, 198, 238, 245, 239, 243, 218, + 226, 234, 145, 127, 144, 124, 137, 72, 117, 114, 112, 118, 142, 110, 122, 61, + 242, 254, 46, 29, 162, 229, 74, 43, 216, 127, 156, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 132, 103, 122, 101, 97, 109, 92, 117, 109, 113, 104, 108, 92, 110, + 134, 163, 147, 153, 154, 147, 152, 88, 90, 171, 197, 171, 164, 178, 188, 194, + 126, 39, 38, 60, 57, 60, 149, 133, 125, 104, 90, 158, 254, 233, 241, 250, + 238, 232, 230, 229, 209, 186, 205, 223, 208, 233, 238, 234, 229, 239, 239, 246, + 220, 227, 55, 44, 72, 83, 77, 114, 134, 103, 129, 117, 102, 115, 104, 82, + 248, 255, 42, 75, 105, 255, 51, 40, 107, 206, 73, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 132, 64, 81, 90, 95, 101, 115, 118, 109, 94, 80, 101, 101, 99, + 103, 147, 157, 143, 135, 132, 119, 96, 91, 154, 209, 178, 161, 177, 218, 198, + 113, 23, 87, 108, 126, 79, 105, 145, 124, 130, 114, 145, 255, 249, 245, 246, + 238, 240, 241, 219, 241, 232, 229, 240, 238, 248, 249, 246, 213, 227, 239, 211, + 176, 231, 63, 67, 63, 90, 80, 133, 138, 95, 124, 116, 113, 105, 134, 89, + 230, 248, 63, 94, 70, 231, 64, 64, 53, 255, 140, 155, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 106, 99, 81, 89, 86, 123, 136, 120, 122, 133, 113, 110, 108, 126, + 111, 112, 110, 112, 109, 154, 142, 143, 143, 82, 101, 139, 170, 181, 181, 185, + 203, 218, 247, 252, 255, 170, 120, 120, 136, 140, 100, 151, 246, 244, 251, 241, + 236, 242, 229, 196, 208, 237, 238, 231, 246, 232, 235, 232, 255, 173, 248, 251, + 97, 51, 240, 241, 82, 62, 122, 94, 109, 125, 137, 100, 96, 108, 101, 112, + 97, 241, 85, 84, 110, 147, 118, 100, 92, 211, 244, 83, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 217, 4, 104, 54, 97, 88, 116, 125, 137, 119, 104, 108, 83, 56, 94, + 89, 82, 91, 155, 138, 112, 144, 96, 99, 111, 87, 50, 31, 48, 215, 239, + 219, 238, 250, 242, 255, 255, 255, 36, 103, 129, 117, 127, 246, 242, 249, 253, + 242, 228, 216, 223, 213, 194, 196, 242, 248, 235, 244, 245, 255, 192, 215, 223, + 232, 104, 81, 153, 183, 76, 39, 84, 101, 85, 120, 112, 104, 115, 111, 120, + 60, 211, 172, 84, 156, 104, 150, 123, 132, 87, 237, 101, 150, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 151, 125, 231, 225, 240, 221, 89, 145, 126, 69, 89, 130, 133, 99, 121, + 104, 81, 73, 145, 183, 117, 131, 110, 130, 134, 98, 97, 68, 10, 207, 231, + 231, 245, 242, 253, 235, 253, 255, 66, 110, 127, 121, 46, 255, 255, 239, 248, + 250, 232, 219, 236, 229, 76, 63, 225, 239, 244, 253, 239, 244, 235, 194, 195, + 251, 137, 37, 42, 230, 234, 115, 68, 68, 121, 119, 113, 102, 89, 122, 77, + 90, 109, 224, 100, 137, 122, 147, 131, 136, 45, 169, 154, 114, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 211, 249, 233, 255, 251, 255, 102, 131, 104, 137, 205, 220, 241, 231, 247, + 219, 151, 63, 131, 180, 129, 76, 108, 151, 97, 107, 106, 121, 48, 194, 237, + 250, 247, 243, 251, 243, 255, 230, 98, 65, 119, 142, 32, 192, 231, 245, 237, + 244, 246, 220, 221, 198, 29, 23, 244, 247, 246, 245, 250, 227, 219, 167, 192, + 244, 171, 62, 52, 159, 205, 192, 115, 48, 79, 135, 114, 110, 120, 114, 115, + 106, 74, 255, 153, 106, 140, 141, 128, 129, 77, 142, 176, 120, 123, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 246, 236, 249, 228, 208, 234, 196, 48, 59, 243, 255, 240, 255, 237, 232, + 249, 253, 184, 46, 68, 88, 86, 108, 105, 72, 84, 32, 68, 19, 110, 227, + 246, 239, 243, 234, 244, 255, 255, 87, 56, 125, 111, 114, 60, 107, 255, 255, + 226, 252, 218, 234, 148, 44, 39, 245, 248, 234, 243, 231, 211, 235, 188, 143, + 255, 240, 26, 88, 65, 105, 243, 221, 213, 114, 51, 63, 119, 98, 121, 112, + 109, 54, 255, 216, 111, 139, 151, 114, 118, 95, 150, 164, 109, 85, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 231, 249, 244, 250, 183, 208, 197, 23, 117, 253, 245, 244, 253, 255, 250, + 255, 237, 255, 95, 49, 142, 95, 135, 102, 106, 240, 247, 215, 179, 33, 182, + 251, 248, 230, 241, 254, 255, 255, 77, 71, 111, 125, 141, 101, 87, 111, 167, + 255, 251, 91, 138, 35, 77, 32, 231, 244, 248, 248, 226, 251, 231, 246, 251, + 231, 251, 41, 90, 52, 73, 54, 172, 189, 225, 182, 154, 71, 84, 108, 117, + 81, 80, 244, 249, 90, 141, 150, 134, 194, 66, 124, 97, 117, 94, 140, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 242, 238, 237, 252, 239, 212, 203, 206, 113, 173, 238, 249, 255, 246, 237, 234, + 244, 236, 239, 113, 109, 116, 150, 63, 93, 167, 255, 241, 255, 236, 82, 143, + 233, 253, 246, 255, 255, 249, 255, 73, 128, 86, 126, 125, 129, 132, 81, 114, + 190, 137, 77, 57, 71, 91, 98, 145, 255, 255, 238, 239, 246, 248, 248, 244, + 250, 213, 25, 75, 90, 94, 40, 91, 155, 225, 221, 200, 145, 80, 99, 96, + 111, 79, 222, 224, 83, 135, 95, 139, 212, 56, 112, 138, 109, 97, 109, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 221, 240, 241, 253, 251, 251, 220, 227, 253, 251, 232, 251, 222, 237, 255, 240, + 231, 255, 255, 109, 153, 134, 115, 126, 202, 246, 215, 238, 234, 247, 253, 253, + 251, 226, 253, 247, 233, 193, 138, 56, 105, 113, 125, 137, 119, 130, 100, 78, + 53, 26, 90, 102, 91, 90, 83, 55, 145, 239, 255, 255, 224, 234, 253, 237, + 203, 133, 68, 113, 84, 78, 94, 67, 39, 78, 163, 223, 255, 164, 121, 121, + 137, 92, 191, 200, 85, 111, 105, 123, 160, 224, 125, 114, 86, 113, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 195, 233, 238, 239, 241, 246, 255, 215, 242, 225, 250, 240, 247, 253, 228, 244, + 255, 227, 165, 36, 160, 129, 68, 249, 255, 255, 224, 241, 223, 204, 225, 215, + 238, 233, 241, 195, 118, 49, 34, 118, 77, 125, 93, 95, 102, 97, 100, 104, + 114, 109, 62, 76, 55, 108, 85, 50, 44, 168, 236, 241, 248, 255, 254, 185, + 39, 24, 106, 99, 104, 86, 81, 91, 114, 82, 41, 74, 132, 223, 222, 167, + 102, 117, 109, 99, 132, 101, 95, 111, 36, 255, 188, 118, 104, 132, 119, 162, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 163, 239, 227, 225, 240, 237, 242, 244, 249, 243, 245, 235, 232, 241, 235, 233, + 151, 41, 79, 193, 249, 76, 22, 240, 246, 236, 247, 239, 255, 253, 235, 219, + 251, 250, 235, 21, 52, 53, 85, 141, 99, 92, 73, 65, 87, 91, 83, 59, + 54, 88, 105, 111, 74, 84, 86, 89, 98, 68, 60, 150, 229, 235, 209, 218, + 65, 68, 118, 80, 91, 119, 133, 126, 102, 106, 122, 104, 69, 71, 88, 168, + 96, 103, 114, 124, 105, 75, 131, 165, 102, 174, 167, 84, 90, 108, 90, 106, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 127, 255, 240, 221, 233, 253, 237, 255, 226, 236, 196, 127, 126, 195, 250, 225, + 205, 169, 191, 206, 236, 172, 26, 136, 255, 248, 255, 255, 246, 243, 242, 243, + 242, 219, 245, 16, 25, 68, 102, 160, 150, 54, 65, 111, 142, 139, 68, 63, + 81, 59, 113, 84, 78, 88, 87, 101, 122, 88, 100, 66, 187, 255, 231, 234, + 68, 65, 103, 103, 109, 125, 112, 125, 117, 120, 104, 127, 107, 86, 74, 99, + 77, 101, 123, 116, 131, 115, 239, 255, 212, 131, 235, 127, 101, 89, 84, 104, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, + 69, 223, 233, 234, 213, 255, 235, 182, 82, 139, 172, 164, 74, 70, 229, 235, + 240, 241, 232, 253, 234, 227, 41, 28, 196, 255, 234, 245, 245, 244, 248, 253, + 236, 136, 158, 174, 107, 163, 191, 204, 120, 74, 226, 255, 255, 255, 252, 209, + 120, 32, 83, 102, 90, 104, 106, 141, 124, 123, 105, 57, 62, 204, 221, 235, + 122, 57, 94, 95, 119, 140, 127, 126, 123, 126, 115, 96, 138, 109, 78, 106, + 118, 93, 120, 128, 111, 113, 246, 244, 255, 223, 235, 251, 181, 137, 130, 128, + 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, + 16, 146, 185, 254, 246, 247, 163, 67, 120, 199, 189, 192, 195, 77, 181, 236, + 249, 245, 251, 228, 253, 241, 253, 85, 65, 253, 255, 255, 253, 246, 255, 242, + 173, 17, 68, 191, 189, 200, 191, 141, 86, 92, 241, 254, 255, 253, 255, 255, + 236, 164, 48, 79, 109, 111, 130, 123, 125, 152, 109, 122, 24, 210, 225, 216, + 175, 66, 108, 106, 108, 114, 135, 141, 139, 128, 126, 120, 94, 121, 130, 116, + 114, 111, 108, 110, 141, 133, 120, 187, 237, 228, 249, 194, 186, 196, 162, 78, + 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 66, + 71, 27, 87, 252, 246, 190, 44, 74, 185, 180, 209, 192, 165, 156, 199, 230, + 227, 249, 243, 249, 224, 181, 166, 158, 14, 106, 253, 238, 239, 243, 253, 255, + 223, 138, 29, 167, 178, 214, 191, 78, 28, 172, 240, 246, 255, 255, 247, 250, + 248, 251, 130, 52, 125, 136, 121, 132, 156, 148, 132, 110, 26, 243, 209, 215, + 196, 65, 92, 99, 114, 117, 122, 150, 123, 155, 133, 135, 124, 122, 129, 125, + 113, 107, 111, 105, 90, 109, 60, 56, 255, 222, 233, 230, 172, 144, 188, 164, + 149, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, + 72, 48, 105, 245, 240, 210, 56, 79, 196, 198, 174, 199, 165, 144, 195, 228, + 244, 242, 229, 241, 247, 68, 96, 132, 62, 5, 255, 240, 255, 255, 238, 225, + 253, 208, 76, 143, 170, 192, 177, 100, 92, 201, 235, 240, 242, 241, 251, 250, + 250, 255, 218, 118, 111, 131, 133, 138, 127, 124, 129, 91, 66, 206, 223, 212, + 193, 86, 77, 113, 136, 138, 125, 132, 125, 116, 146, 136, 134, 132, 134, 128, + 122, 118, 122, 97, 124, 109, 65, 51, 237, 253, 222, 232, 177, 107, 165, 148, + 142, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 62, + 45, 66, 230, 214, 218, 219, 96, 33, 152, 196, 205, 180, 173, 170, 229, 236, + 232, 237, 251, 226, 243, 88, 110, 94, 81, 131, 240, 240, 218, 193, 203, 236, + 249, 232, 220, 195, 201, 183, 175, 141, 151, 210, 216, 250, 244, 243, 255, 246, + 250, 255, 254, 225, 100, 114, 119, 131, 114, 118, 126, 91, 105, 79, 228, 206, + 201, 60, 114, 114, 133, 98, 124, 141, 105, 153, 124, 132, 140, 139, 131, 126, + 126, 127, 125, 129, 123, 101, 110, 86, 113, 247, 234, 251, 215, 101, 126, 92, + 107, 95, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 191, + 75, 39, 187, 177, 209, 255, 222, 22, 69, 96, 168, 189, 180, 157, 221, 248, + 223, 245, 251, 247, 234, 255, 229, 228, 254, 225, 192, 118, 21, 85, 226, 238, + 189, 185, 213, 247, 227, 203, 195, 192, 179, 223, 241, 234, 241, 241, 249, 240, + 255, 249, 251, 255, 75, 105, 105, 119, 114, 130, 129, 135, 121, 42, 125, 209, + 150, 11, 82, 66, 66, 91, 94, 121, 102, 118, 122, 126, 140, 138, 123, 117, + 122, 124, 122, 136, 129, 139, 131, 107, 32, 247, 249, 249, 251, 212, 240, 130, + 69, 77, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 214, + 70, 40, 190, 204, 208, 247, 242, 36, 35, 49, 133, 83, 164, 194, 234, 236, + 186, 236, 241, 255, 239, 218, 228, 179, 184, 138, 85, 38, 34, 126, 246, 255, + 201, 159, 224, 245, 230, 230, 213, 220, 186, 219, 235, 237, 244, 244, 248, 234, + 253, 241, 249, 251, 47, 103, 109, 117, 104, 125, 127, 96, 105, 78, 72, 151, + 182, 38, 44, 16, 57, 65, 133, 114, 133, 106, 142, 127, 142, 139, 121, 114, + 120, 125, 118, 152, 117, 117, 121, 121, 56, 235, 253, 246, 251, 251, 240, 152, + 156, 213, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 249, + 137, 53, 206, 255, 240, 255, 246, 167, 141, 97, 84, 175, 241, 250, 243, 240, + 213, 197, 164, 124, 179, 36, 93, 76, 48, 91, 58, 88, 106, 218, 253, 197, + 188, 213, 242, 246, 234, 241, 235, 248, 237, 237, 220, 239, 231, 232, 247, 234, + 236, 250, 255, 255, 54, 91, 102, 121, 101, 114, 116, 120, 107, 78, 58, 27, + 219, 168, 187, 222, 23, 112, 34, 49, 123, 117, 129, 132, 146, 142, 126, 121, + 124, 127, 121, 126, 122, 119, 114, 66, 30, 136, 224, 251, 231, 242, 234, 211, + 253, 253, 241, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 209, + 143, 85, 238, 255, 244, 221, 170, 221, 255, 243, 208, 197, 219, 246, 245, 228, + 253, 185, 228, 224, 255, 90, 12, 64, 94, 60, 111, 88, 165, 255, 234, 197, + 208, 220, 253, 249, 241, 240, 250, 216, 220, 214, 226, 213, 202, 207, 235, 245, + 244, 255, 221, 230, 69, 96, 94, 114, 109, 119, 111, 134, 112, 134, 112, 96, + 181, 203, 211, 231, 198, 246, 255, 52, 71, 100, 135, 135, 141, 138, 129, 127, + 127, 128, 123, 114, 121, 102, 95, 180, 246, 255, 252, 199, 135, 168, 251, 253, + 198, 68, 85, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 252, 218, + 197, 148, 147, 253, 255, 188, 107, 161, 229, 206, 191, 119, 90, 167, 249, 239, + 255, 61, 120, 251, 253, 193, 161, 54, 110, 90, 88, 61, 143, 251, 215, 178, + 237, 254, 242, 248, 253, 242, 237, 89, 62, 78, 173, 226, 223, 215, 227, 245, + 239, 228, 104, 116, 61, 127, 110, 105, 107, 124, 117, 134, 158, 119, 126, 119, + 147, 167, 194, 178, 231, 206, 240, 203, 102, 117, 112, 129, 134, 130, 127, 126, + 126, 123, 120, 140, 126, 136, 129, 255, 254, 243, 247, 245, 138, 63, 115, 205, + 249, 68, 61, 72, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 238, 228, + 226, 208, 36, 249, 255, 152, 89, 144, 213, 228, 204, 129, 26, 139, 250, 240, + 255, 71, 57, 202, 208, 231, 235, 57, 61, 127, 93, 81, 114, 248, 255, 224, + 255, 255, 249, 255, 241, 246, 185, 56, 10, 62, 95, 189, 203, 201, 199, 173, + 191, 170, 13, 57, 108, 131, 105, 131, 117, 108, 124, 141, 145, 145, 130, 134, + 144, 145, 167, 141, 212, 195, 213, 236, 141, 81, 118, 136, 114, 137, 150, 107, + 132, 137, 108, 142, 116, 142, 125, 255, 255, 246, 243, 253, 214, 72, 117, 144, + 243, 72, 74, 78, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 255, 240, 246, + 250, 229, 87, 189, 234, 163, 143, 67, 206, 234, 254, 250, 111, 111, 255, 246, + 152, 255, 131, 4, 14, 197, 239, 170, 95, 109, 97, 76, 56, 134, 234, 255, + 255, 255, 255, 250, 238, 116, 28, 89, 137, 98, 60, 41, 69, 105, 116, 48, + 2, 32, 49, 88, 121, 138, 116, 129, 125, 100, 132, 134, 132, 138, 132, 128, + 127, 142, 186, 152, 186, 205, 144, 228, 228, 47, 83, 134, 171, 111, 117, 140, + 108, 138, 124, 123, 135, 122, 46, 122, 218, 241, 255, 236, 224, 202, 227, 82, + 202, 160, 41, 68, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 233, 250, + 234, 224, 201, 76, 151, 169, 210, 59, 241, 250, 255, 247, 184, 167, 251, 255, + 43, 220, 202, 66, 41, 134, 184, 187, 175, 78, 89, 93, 78, 75, 165, 217, + 206, 212, 173, 74, 62, 62, 97, 124, 97, 81, 105, 89, 103, 74, 77, 100, + 69, 66, 128, 142, 90, 128, 154, 149, 154, 131, 144, 135, 122, 130, 130, 120, + 109, 131, 194, 193, 187, 172, 112, 188, 221, 79, 59, 115, 85, 116, 130, 134, + 96, 77, 74, 112, 107, 82, 38, 96, 253, 255, 255, 223, 251, 187, 222, 175, + 191, 227, 10, 65, 88, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 104, 147, 249, + 244, 255, 231, 39, 75, 115, 147, 42, 249, 255, 233, 241, 216, 171, 240, 246, + 21, 188, 228, 53, 15, 91, 157, 154, 143, 89, 85, 92, 111, 71, 86, 110, + 111, 119, 73, 105, 49, 76, 120, 92, 83, 111, 105, 94, 116, 79, 55, 38, + 47, 152, 253, 255, 104, 135, 169, 141, 143, 138, 127, 139, 125, 131, 128, 120, + 107, 119, 169, 153, 201, 164, 54, 145, 190, 37, 32, 65, 63, 84, 92, 89, + 71, 48, 59, 72, 50, 73, 46, 34, 227, 255, 235, 253, 211, 248, 192, 209, + 200, 244, 40, 60, 93, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 129, 145, 117, 241, + 231, 216, 77, 94, 100, 108, 105, 56, 255, 255, 242, 247, 233, 220, 224, 246, + 45, 104, 189, 168, 109, 71, 205, 53, 51, 59, 74, 89, 104, 89, 87, 94, + 92, 99, 108, 88, 118, 134, 126, 116, 112, 114, 111, 146, 87, 76, 184, 222, + 229, 255, 231, 243, 94, 122, 127, 121, 112, 100, 84, 81, 73, 77, 69, 69, + 66, 58, 77, 64, 61, 53, 173, 248, 230, 247, 241, 151, 57, 81, 77, 92, + 243, 214, 201, 199, 211, 204, 228, 255, 208, 58, 108, 102, 84, 170, 124, 198, + 188, 242, 79, 55, 88, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 169, 234, 168, 251, + 252, 77, 38, 91, 118, 109, 107, 58, 255, 238, 230, 236, 229, 250, 220, 253, + 43, 20, 81, 210, 209, 155, 196, 182, 83, 87, 71, 100, 109, 125, 119, 124, + 130, 121, 144, 127, 135, 111, 102, 132, 134, 121, 136, 127, 204, 228, 255, 228, + 129, 83, 54, 57, 38, 66, 44, 81, 100, 87, 104, 110, 114, 120, 112, 123, + 130, 109, 105, 101, 93, 101, 107, 172, 237, 232, 250, 255, 223, 27, 28, 69, + 119, 154, 220, 231, 242, 239, 235, 236, 249, 133, 53, 58, 49, 87, 117, 81, + 41, 190, 148, 61, 87, 92, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 226, 198, 152, 108, 232, + 255, 50, 66, 117, 139, 116, 106, 62, 244, 255, 255, 251, 226, 223, 248, 238, + 27, 107, 17, 110, 214, 168, 167, 206, 140, 68, 101, 98, 109, 124, 112, 113, + 126, 111, 104, 110, 114, 106, 78, 62, 74, 76, 53, 134, 238, 202, 109, 151, + 183, 157, 192, 187, 198, 169, 115, 69, 85, 67, 91, 88, 101, 114, 109, 123, + 134, 115, 113, 145, 97, 88, 96, 45, 102, 241, 240, 251, 253, 207, 219, 136, + 73, 91, 201, 206, 203, 196, 242, 231, 253, 244, 231, 120, 63, 75, 115, 214, + 180, 70, 198, 76, 91, 103, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 251, 232, 215, 176, 121, 247, + 243, 153, 38, 126, 126, 116, 96, 76, 228, 255, 232, 236, 255, 255, 254, 229, + 32, 61, 57, 71, 109, 151, 158, 197, 150, 63, 83, 96, 90, 92, 104, 106, + 102, 99, 92, 105, 89, 87, 97, 101, 104, 117, 123, 200, 207, 172, 48, 82, + 212, 200, 187, 171, 169, 165, 179, 64, 80, 59, 49, 75, 95, 112, 110, 123, + 131, 120, 128, 135, 114, 125, 127, 11, 19, 198, 239, 246, 253, 253, 249, 172, + 123, 133, 187, 184, 133, 107, 238, 237, 247, 231, 251, 232, 112, 78, 79, 240, + 234, 58, 185, 88, 95, 111, 84, 140, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 234, 225, 212, 188, 205, 251, + 255, 243, 100, 105, 75, 106, 119, 78, 120, 254, 220, 229, 245, 255, 210, 115, + 87, 54, 67, 52, 24, 41, 54, 67, 83, 27, 50, 57, 78, 57, 95, 81, + 94, 90, 111, 133, 93, 76, 93, 239, 255, 255, 255, 247, 249, 178, 104, 74, + 203, 179, 174, 150, 157, 126, 175, 126, 116, 66, 72, 73, 106, 98, 124, 138, + 151, 130, 134, 120, 132, 116, 106, 44, 145, 252, 241, 245, 239, 227, 237, 242, + 241, 239, 210, 79, 59, 95, 233, 239, 251, 245, 221, 255, 203, 65, 76, 143, + 148, 113, 126, 139, 72, 109, 101, 77, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 222, 237, 174, 196, 182, 186, 215, 171, + 187, 255, 124, 101, 140, 71, 86, 65, 103, 103, 53, 41, 47, 56, 56, 62, + 123, 115, 101, 58, 42, 47, 27, 28, 59, 51, 77, 61, 45, 28, 138, 203, + 223, 162, 129, 123, 69, 73, 139, 187, 210, 228, 218, 117, 44, 35, 123, 96, + 96, 158, 183, 167, 125, 118, 126, 142, 117, 125, 104, 97, 101, 102, 109, 107, + 122, 107, 142, 128, 129, 89, 119, 76, 234, 255, 255, 246, 245, 229, 234, 241, + 241, 244, 226, 248, 240, 215, 245, 236, 145, 187, 226, 210, 193, 83, 84, 131, + 145, 141, 168, 156, 123, 100, 92, 71, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 92, 159, 106, 33, 34, 36, 15, 62, + 82, 227, 110, 186, 174, 107, 115, 76, 238, 250, 40, 55, 60, 79, 109, 143, + 191, 158, 108, 95, 95, 105, 80, 84, 107, 98, 88, 50, 98, 136, 226, 250, + 255, 249, 255, 183, 138, 52, 87, 85, 69, 47, 60, 108, 169, 144, 117, 115, + 64, 113, 193, 192, 113, 85, 137, 156, 146, 145, 125, 118, 114, 120, 155, 146, + 132, 125, 135, 146, 130, 101, 139, 32, 243, 255, 242, 245, 251, 236, 238, 247, + 244, 247, 241, 243, 243, 244, 231, 251, 245, 67, 12, 35, 112, 134, 137, 138, + 134, 136, 149, 146, 142, 107, 97, 84, 131, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 211, 236, 235, 78, 50, 64, 50, 46, 171, + 197, 230, 98, 143, 123, 93, 101, 178, 255, 219, 75, 102, 95, 108, 130, 138, + 144, 127, 113, 87, 85, 97, 90, 110, 115, 86, 55, 64, 156, 215, 255, 243, + 245, 240, 244, 231, 221, 78, 68, 97, 96, 81, 114, 116, 122, 138, 141, 163, + 99, 82, 172, 223, 211, 135, 153, 172, 176, 135, 147, 163, 138, 91, 124, 121, + 102, 137, 120, 122, 135, 79, 101, 62, 252, 255, 253, 244, 253, 244, 244, 251, + 243, 244, 239, 241, 247, 236, 251, 214, 247, 173, 41, 64, 64, 129, 113, 132, + 166, 175, 157, 149, 164, 127, 211, 207, 182, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 70, 97, 85, 84, 66, 79, 52, 132, 165, + 215, 94, 0, 29, 104, 100, 44, 202, 221, 104, 59, 99, 96, 112, 128, 130, + 124, 136, 136, 133, 118, 112, 103, 119, 135, 140, 184, 221, 251, 245, 241, 236, + 255, 255, 253, 255, 255, 112, 41, 60, 68, 69, 58, 101, 140, 145, 140, 154, + 162, 115, 91, 67, 180, 208, 193, 203, 199, 189, 196, 196, 154, 124, 120, 116, + 118, 145, 139, 99, 105, 127, 149, 64, 143, 255, 255, 247, 255, 246, 247, 247, + 240, 243, 233, 117, 237, 250, 238, 248, 226, 247, 227, 120, 39, 156, 156, 163, + 153, 160, 154, 147, 161, 111, 255, 251, 248, 252, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 91, 91, 117, 83, 108, 121, 179, 169, 226, 213, + 197, 45, 72, 98, 78, 75, 119, 244, 201, 87, 128, 100, 111, 125, 135, 143, + 126, 117, 73, 72, 64, 58, 40, 33, 57, 90, 235, 228, 247, 246, 251, 253, + 243, 246, 252, 244, 244, 115, 46, 152, 197, 197, 189, 75, 95, 64, 151, 159, + 145, 144, 118, 94, 110, 184, 201, 41, 83, 210, 227, 89, 64, 126, 110, 115, + 127, 102, 125, 139, 128, 104, 106, 93, 56, 128, 184, 251, 250, 248, 255, 251, + 247, 254, 229, 78, 59, 138, 239, 235, 244, 251, 249, 234, 57, 79, 113, 155, + 138, 138, 149, 157, 144, 135, 137, 125, 255, 249, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 231, 59, 102, 119, 85, 94, 118, 237, 252, 219, 209, + 123, 29, 95, 86, 108, 62, 125, 255, 188, 56, 102, 121, 118, 114, 112, 120, + 103, 111, 74, 102, 109, 117, 112, 94, 99, 63, 231, 233, 236, 223, 232, 247, + 242, 255, 255, 255, 255, 172, 128, 237, 255, 238, 249, 148, 85, 50, 162, 147, + 145, 169, 95, 117, 57, 112, 185, 7, 54, 166, 160, 45, 40, 94, 95, 113, + 104, 97, 135, 133, 108, 114, 120, 79, 44, 81, 120, 228, 220, 238, 255, 255, + 252, 253, 203, 79, 44, 36, 238, 253, 231, 231, 232, 255, 164, 77, 106, 122, + 100, 117, 168, 172, 151, 176, 72, 68, 215, 235, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 224, 71, 105, 55, 56, 120, 107, 216, 216, 153, 79, + 68, 66, 89, 80, 99, 54, 140, 255, 115, 42, 106, 112, 101, 104, 114, 114, + 80, 119, 122, 238, 245, 255, 255, 255, 242, 111, 244, 221, 247, 247, 242, 249, + 246, 252, 239, 251, 244, 255, 255, 254, 252, 247, 250, 242, 237, 140, 96, 112, + 119, 103, 136, 104, 107, 98, 84, 111, 86, 73, 34, 90, 104, 85, 117, 137, + 67, 99, 106, 111, 124, 126, 141, 146, 154, 82, 84, 57, 51, 90, 137, 124, + 116, 106, 35, 44, 66, 59, 27, 126, 252, 255, 246, 252, 255, 80, 93, 97, + 90, 89, 124, 113, 124, 115, 105, 116, 83, 201, 238, 243, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 217, 101, 84, 91, 124, 185, 248, 186, 108, 67, 90, 130, + 115, 127, 117, 116, 100, 111, 253, 184, 62, 57, 123, 121, 72, 80, 98, 117, + 121, 255, 250, 248, 231, 238, 251, 233, 241, 255, 211, 246, 207, 199, 235, 234, + 255, 251, 253, 255, 255, 252, 226, 253, 240, 244, 246, 234, 249, 255, 67, 100, + 135, 138, 140, 154, 152, 133, 128, 139, 134, 116, 101, 125, 134, 73, 214, 255, + 116, 88, 93, 78, 112, 107, 112, 121, 132, 167, 143, 146, 167, 124, 66, 86, + 58, 79, 93, 148, 118, 113, 65, 66, 219, 253, 250, 235, 220, 79, 51, 99, + 131, 63, 99, 81, 107, 95, 118, 141, 89, 66, 239, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 164, 138, 58, 95, 102, 211, 239, 143, 84, 99, 95, 116, 118, + 123, 142, 123, 96, 90, 196, 255, 47, 133, 97, 47, 79, 109, 90, 220, 243, + 255, 236, 217, 102, 162, 227, 238, 250, 234, 255, 239, 158, 54, 39, 37, 36, + 134, 225, 238, 249, 230, 248, 251, 250, 228, 239, 248, 241, 251, 255, 33, 136, + 133, 136, 137, 154, 151, 130, 128, 137, 135, 137, 134, 158, 119, 96, 170, 230, + 251, 239, 89, 120, 89, 93, 107, 94, 94, 112, 111, 121, 101, 133, 122, 137, + 159, 128, 185, 157, 228, 177, 200, 199, 252, 93, 79, 64, 92, 92, 75, 251, + 255, 253, 232, 255, 234, 234, 195, 175, 217, 194, 87, 248, 238, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 201, 114, 101, 47, 77, 120, 255, 237, 101, 76, 139, 134, 147, 111, + 124, 156, 143, 94, 111, 231, 255, 57, 135, 105, 62, 59, 230, 243, 255, 255, + 196, 80, 100, 52, 142, 250, 242, 246, 249, 244, 114, 53, 33, 35, 28, 48, + 73, 204, 247, 250, 236, 236, 241, 235, 242, 242, 234, 248, 238, 243, 54, 143, + 132, 130, 119, 141, 147, 131, 134, 129, 124, 142, 145, 149, 126, 134, 146, 210, + 234, 235, 185, 155, 61, 39, 61, 56, 62, 63, 69, 69, 32, 97, 84, 147, + 176, 180, 159, 136, 172, 246, 243, 234, 243, 84, 75, 43, 27, 48, 107, 248, + 249, 246, 253, 255, 241, 255, 255, 241, 234, 245, 171, 255, 230, 232, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 202, 136, 66, 76, 134, 192, 199, 239, 187, 80, 109, 138, 112, 128, 100, + 91, 128, 121, 83, 61, 255, 245, 31, 95, 60, 197, 210, 255, 231, 109, 139, + 93, 81, 100, 64, 148, 217, 210, 230, 251, 206, 50, 193, 225, 205, 181, 167, + 74, 206, 242, 235, 249, 248, 223, 231, 230, 230, 224, 250, 247, 255, 124, 90, + 122, 132, 121, 115, 132, 127, 130, 113, 94, 103, 86, 102, 140, 135, 76, 129, + 127, 169, 246, 248, 224, 194, 214, 223, 233, 232, 235, 228, 255, 54, 89, 196, + 193, 176, 114, 108, 65, 55, 232, 233, 226, 237, 231, 216, 134, 135, 235, 255, + 247, 246, 255, 252, 255, 240, 237, 255, 253, 250, 236, 243, 220, 168, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, + 102, 111, 102, 113, 156, 209, 223, 243, 156, 80, 97, 145, 145, 130, 144, 152, + 125, 152, 130, 92, 149, 235, 77, 130, 103, 134, 230, 190, 96, 97, 86, 88, + 101, 119, 74, 105, 206, 193, 201, 246, 229, 164, 165, 233, 209, 214, 188, 175, + 136, 251, 237, 251, 222, 248, 242, 230, 204, 236, 230, 234, 99, 70, 118, 129, + 124, 105, 160, 232, 212, 158, 153, 153, 171, 211, 194, 147, 132, 122, 98, 113, + 68, 97, 102, 102, 249, 247, 253, 255, 247, 251, 252, 246, 225, 235, 209, 254, + 225, 196, 196, 123, 96, 67, 158, 251, 235, 250, 224, 249, 171, 233, 255, 255, + 226, 255, 205, 206, 197, 159, 195, 226, 249, 255, 255, 251, 253, 179, 192, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 98, + 109, 77, 75, 235, 223, 250, 178, 100, 71, 108, 104, 132, 132, 136, 130, 147, + 134, 148, 117, 133, 242, 56, 74, 87, 167, 188, 61, 112, 74, 107, 111, 121, + 118, 126, 91, 156, 249, 225, 238, 247, 230, 185, 226, 222, 192, 216, 164, 194, + 234, 252, 237, 247, 164, 204, 239, 230, 230, 218, 104, 137, 187, 197, 107, 106, + 119, 105, 121, 137, 136, 138, 213, 247, 238, 237, 176, 125, 106, 108, 144, 161, + 117, 123, 66, 36, 255, 255, 255, 255, 253, 248, 240, 236, 251, 220, 232, 208, + 227, 197, 207, 170, 70, 58, 197, 219, 175, 18, 116, 87, 34, 101, 87, 69, + 52, 104, 33, 72, 59, 57, 109, 85, 73, 112, 188, 215, 238, 193, 179, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 88, 79, + 90, 54, 134, 229, 235, 192, 118, 67, 80, 111, 120, 134, 133, 147, 132, 127, + 132, 117, 100, 202, 255, 72, 96, 105, 146, 98, 62, 63, 88, 120, 89, 146, + 116, 109, 64, 188, 236, 234, 244, 233, 245, 224, 199, 204, 197, 181, 152, 207, + 255, 240, 254, 248, 218, 229, 251, 222, 232, 163, 45, 141, 235, 253, 115, 120, + 130, 120, 101, 107, 107, 130, 233, 247, 195, 197, 157, 111, 158, 135, 108, 130, + 138, 140, 98, 65, 255, 249, 239, 241, 239, 216, 206, 220, 209, 237, 191, 132, + 154, 169, 131, 126, 52, 31, 129, 162, 107, 42, 36, 45, 23, 33, 40, 17, + 26, 50, 47, 20, 45, 50, 46, 57, 61, 73, 132, 191, 207, 224, 208, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 87, 73, 84, 111, + 101, 100, 157, 189, 128, 49, 91, 89, 93, 88, 119, 137, 128, 149, 157, 131, + 135, 82, 78, 255, 238, 80, 100, 119, 45, 66, 116, 99, 75, 108, 130, 122, + 111, 129, 66, 249, 253, 238, 237, 248, 237, 214, 204, 217, 189, 137, 203, 224, + 244, 255, 226, 234, 255, 205, 161, 51, 37, 28, 111, 252, 242, 231, 143, 135, + 142, 146, 134, 147, 120, 116, 180, 134, 45, 80, 96, 106, 107, 99, 123, 139, + 120, 101, 112, 77, 229, 238, 236, 212, 201, 165, 175, 192, 164, 98, 60, 31, + 46, 16, 35, 24, 26, 30, 22, 24, 31, 36, 45, 32, 52, 45, 40, 50, + 49, 40, 53, 51, 36, 51, 24, 45, 45, 41, 57, 78, 99, 205, 229, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 79, 105, 72, 112, + 175, 186, 195, 62, 82, 96, 73, 46, 89, 78, 72, 101, 119, 122, 148, 150, + 94, 141, 128, 159, 115, 131, 118, 82, 94, 201, 255, 255, 29, 103, 98, 101, + 255, 87, 61, 226, 201, 222, 204, 237, 209, 212, 65, 88, 97, 86, 249, 222, + 240, 200, 255, 221, 197, 57, 37, 78, 127, 69, 167, 200, 200, 148, 108, 122, + 117, 98, 111, 101, 86, 69, 57, 55, 56, 59, 62, 72, 72, 71, 71, 74, + 77, 78, 78, 63, 47, 34, 32, 33, 31, 29, 30, 25, 25, 26, 27, 31, + 34, 36, 40, 32, 35, 42, 47, 44, 38, 42, 53, 51, 51, 50, 48, 48, + 48, 50, 51, 45, 45, 48, 49, 55, 61, 64, 64, 55, 83, 140, 185, 190, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 73, 95, 49, 65, 174, + 207, 235, 242, 201, 191, 200, 98, 66, 71, 81, 88, 103, 102, 111, 95, 129, + 124, 116, 104, 117, 113, 128, 108, 171, 213, 255, 255, 255, 80, 102, 128, 194, + 255, 54, 66, 117, 97, 179, 214, 227, 235, 115, 111, 129, 134, 109, 123, 108, + 106, 109, 109, 132, 103, 86, 95, 86, 99, 72, 86, 83, 91, 76, 64, 79, + 75, 57, 61, 65, 55, 43, 37, 36, 40, 39, 43, 58, 60, 60, 60, 64, + 68, 69, 69, 60, 45, 35, 35, 38, 37, 35, 37, 35, 36, 34, 33, 37, + 41, 45, 48, 45, 43, 46, 54, 55, 51, 52, 55, 51, 51, 51, 49, 48, + 47, 47, 49, 46, 48, 51, 51, 51, 54, 57, 57, 55, 69, 113, 113, 97, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 78, 92, 71, 132, 235, + 228, 235, 234, 245, 249, 236, 81, 94, 107, 119, 97, 90, 82, 70, 58, 87, + 118, 118, 132, 89, 100, 119, 123, 250, 255, 253, 220, 231, 72, 105, 142, 140, + 125, 62, 79, 224, 207, 242, 235, 227, 238, 62, 127, 123, 142, 131, 81, 83, + 79, 101, 66, 79, 49, 94, 94, 75, 61, 64, 31, 31, 35, 38, 40, 44, + 47, 44, 41, 53, 47, 43, 42, 44, 46, 44, 45, 54, 56, 56, 57, 61, + 64, 65, 65, 60, 51, 42, 44, 47, 47, 45, 45, 47, 45, 41, 39, 41, + 44, 49, 54, 57, 51, 50, 59, 66, 66, 62, 57, 55, 53, 52, 51, 51, + 49, 47, 45, 46, 48, 51, 49, 48, 47, 49, 50, 50, 65, 109, 182, 216, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 91, 55, 177, 239, 250, + 253, 248, 255, 252, 255, 163, 49, 105, 110, 97, 92, 84, 131, 150, 213, 156, + 134, 136, 134, 122, 122, 116, 98, 157, 118, 77, 48, 105, 94, 124, 131, 141, + 96, 159, 215, 246, 231, 186, 189, 215, 162, 67, 94, 89, 112, 101, 99, 87, + 89, 84, 65, 69, 59, 67, 44, 68, 50, 54, 42, 48, 38, 44, 48, 41, + 47, 56, 45, 44, 41, 39, 40, 43, 44, 42, 43, 55, 58, 56, 57, 59, + 61, 62, 61, 61, 56, 51, 52, 54, 53, 51, 49, 53, 52, 49, 47, 47, + 49, 52, 54, 57, 53, 52, 58, 66, 69, 66, 59, 59, 56, 56, 58, 56, + 52, 48, 46, 49, 46, 47, 47, 48, 45, 45, 45, 36, 47, 56, 186, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 83, 74, 255, 255, 178, + 205, 226, 242, 255, 252, 80, 73, 122, 90, 85, 185, 208, 231, 227, 255, 101, + 102, 132, 157, 143, 153, 143, 117, 113, 129, 127, 112, 133, 135, 130, 113, 112, + 95, 228, 239, 179, 135, 46, 98, 137, 44, 59, 66, 67, 70, 48, 76, 61, + 62, 53, 54, 47, 64, 48, 32, 65, 57, 53, 59, 46, 28, 39, 50, 42, + 47, 54, 34, 38, 38, 38, 39, 43, 44, 46, 46, 55, 53, 51, 51, 53, + 53, 50, 49, 55, 53, 51, 50, 55, 56, 55, 52, 57, 57, 57, 56, 55, + 54, 54, 54, 51, 54, 57, 61, 65, 69, 70, 68, 63, 60, 59, 61, 60, + 57, 52, 47, 48, 42, 40, 43, 49, 47, 47, 47, 55, 58, 43, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 138, 252, 199, 125, + 142, 187, 188, 182, 211, 65, 95, 100, 70, 86, 215, 247, 239, 255, 237, 77, + 122, 119, 145, 146, 140, 138, 146, 113, 129, 138, 137, 147, 100, 104, 119, 90, + 101, 232, 186, 127, 96, 22, 58, 55, 18, 55, 54, 54, 53, 40, 48, 57, + 51, 60, 50, 40, 49, 48, 54, 43, 40, 52, 47, 53, 32, 34, 40, 34, + 40, 47, 37, 40, 40, 44, 46, 51, 54, 58, 59, 55, 53, 51, 49, 48, + 46, 44, 42, 42, 43, 43, 44, 48, 55, 57, 53, 54, 54, 56, 55, 55, + 51, 51, 48, 49, 57, 63, 64, 65, 69, 72, 71, 66, 63, 61, 61, 63, + 59, 54, 50, 47, 38, 35, 43, 48, 47, 50, 55, 47, 44, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 167, 93, 48, + 26, 43, 18, 7, 52, 28, 49, 59, 82, 113, 175, 127, 114, 150, 120, 53, + 91, 79, 92, 99, 85, 96, 122, 106, 89, 85, 86, 61, 81, 71, 83, 91, + 63, 61, 61, 34, 52, 43, 52, 44, 54, 68, 42, 50, 55, 50, 45, 51, + 39, 47, 30, 48, 44, 46, 51, 32, 19, 46, 35, 60, 45, 41, 41, 37, + 38, 46, 47, 33, 36, 42, 45, 48, 49, 51, 51, 55, 53, 50, 49, 48, + 47, 43, 40, 36, 40, 43, 40, 46, 56, 59, 56, 55, 53, 55, 52, 52, + 50, 51, 49, 52, 60, 63, 62, 63, 67, 69, 67, 66, 63, 60, 60, 61, + 61, 56, 52, 45, 39, 40, 43, 43, 40, 52, 66, 71, 129, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 35, 44, + 44, 56, 41, 48, 23, 58, 42, 40, 49, 53, 46, 31, 29, 40, 37, 56, + 40, 57, 60, 64, 80, 92, 70, 84, 79, 76, 57, 55, 53, 52, 62, 53, + 66, 58, 63, 61, 66, 59, 45, 54, 37, 65, 48, 41, 51, 35, 50, 36, + 40, 44, 44, 40, 42, 33, 32, 53, 24, 39, 35, 35, 40, 49, 57, 55, + 42, 36, 38, 40, 44, 51, 55, 55, 53, 51, 50, 50, 47, 45, 45, 45, + 44, 41, 40, 42, 47, 46, 43, 45, 55, 58, 54, 63, 62, 60, 56, 56, + 57, 59, 58, 54, 60, 61, 59, 62, 67, 64, 59, 64, 62, 58, 58, 60, + 58, 54, 50, 41, 41, 45, 48, 40, 37, 53, 76, 80, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 48, + 46, 48, 50, 46, 50, 52, 49, 48, 51, 50, 46, 40, 37, 38, 37, 38, + 42, 48, 51, 63, 75, 66, 65, 79, 51, 58, 43, 40, 40, 43, 45, 48, + 46, 47, 47, 54, 53, 54, 53, 55, 54, 54, 53, 48, 46, 43, 40, 40, + 41, 42, 42, 39, 42, 45, 42, 39, 35, 35, 39, 40, 43, 42, 40, 47, + 55, 50, 38, 47, 45, 46, 47, 48, 48, 47, 45, 49, 47, 46, 47, 48, + 46, 44, 42, 44, 49, 56, 57, 55, 50, 50, 50, 60, 61, 61, 61, 60, + 56, 54, 53, 59, 59, 61, 62, 60, 61, 63, 65, 64, 57, 65, 67, 58, + 63, 64, 43, 36, 45, 55, 56, 47, 45, 61, 79, 164, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 51, + 50, 51, 53, 44, 47, 47, 44, 43, 45, 47, 41, 44, 42, 41, 39, 37, + 37, 38, 41, 53, 67, 63, 57, 68, 42, 51, 32, 30, 32, 34, 36, 38, + 39, 40, 41, 47, 48, 49, 50, 50, 50, 50, 49, 47, 45, 43, 39, 40, + 38, 42, 43, 45, 45, 42, 43, 41, 41, 38, 38, 39, 42, 43, 43, 45, + 52, 53, 49, 45, 48, 50, 48, 45, 43, 47, 48, 52, 50, 49, 50, 52, + 53, 52, 51, 53, 55, 57, 57, 55, 54, 53, 54, 61, 61, 62, 63, 63, + 60, 60, 59, 55, 57, 61, 65, 67, 68, 71, 74, 72, 64, 72, 71, 61, + 63, 62, 43, 43, 44, 46, 43, 48, 60, 77, 89, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 50, + 48, 48, 48, 41, 44, 45, 42, 42, 44, 44, 41, 43, 44, 44, 43, 39, + 37, 37, 38, 47, 63, 67, 56, 63, 46, 55, 33, 34, 36, 39, 40, 39, + 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 50, 50, 47, 44, 39, 39, + 38, 43, 43, 47, 43, 40, 41, 43, 44, 38, 36, 40, 40, 43, 47, 48, + 49, 53, 59, 39, 49, 61, 66, 61, 54, 52, 52, 59, 57, 55, 55, 56, + 57, 56, 55, 60, 58, 57, 57, 59, 60, 60, 60, 64, 66, 66, 67, 68, + 67, 68, 67, 64, 67, 70, 71, 72, 73, 75, 75, 77, 71, 75, 74, 66, + 66, 63, 49, 44, 54, 60, 52, 51, 57, 66, 68, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, + 42, 40, 38, 42, 45, 46, 43, 43, 46, 46, 42, 39, 39, 42, 43, 42, + 40, 40, 41, 38, 54, 73, 58, 62, 55, 62, 39, 40, 44, 46, 44, 40, + 38, 39, 41, 49, 49, 49, 50, 51, 53, 55, 56, 53, 49, 45, 39, 37, + 38, 41, 44, 47, 44, 42, 40, 42, 41, 39, 37, 45, 41, 44, 52, 53, + 48, 49, 58, 64, 61, 57, 52, 51, 54, 61, 67, 60, 58, 58, 59, 60, + 60, 59, 57, 64, 61, 59, 61, 65, 67, 65, 64, 72, 71, 72, 69, 70, + 71, 73, 72, 69, 70, 73, 76, 77, 77, 81, 82, 78, 73, 74, 75, 73, + 71, 69, 60, 57, 80, 91, 73, 53, 49, 55, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, + 42, 39, 37, 42, 45, 44, 40, 40, 44, 45, 43, 37, 40, 43, 43, 43, + 41, 42, 43, 34, 45, 78, 62, 60, 59, 65, 40, 39, 41, 42, 38, 33, + 32, 35, 39, 54, 53, 52, 51, 52, 55, 57, 59, 54, 49, 44, 39, 36, + 38, 41, 43, 44, 45, 44, 42, 40, 38, 41, 41, 47, 40, 45, 56, 58, + 52, 50, 52, 62, 59, 58, 59, 63, 61, 55, 52, 55, 55, 56, 59, 62, + 64, 62, 61, 66, 64, 64, 67, 71, 71, 68, 65, 75, 75, 74, 71, 70, + 71, 71, 70, 59, 61, 67, 73, 79, 84, 93, 96, 81, 79, 76, 75, 79, + 74, 70, 68, 72, 91, 97, 76, 55, 51, 55, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, + 46, 45, 44, 41, 43, 42, 38, 38, 41, 44, 42, 42, 44, 46, 46, 44, + 42, 43, 43, 37, 39, 83, 71, 60, 56, 59, 40, 41, 44, 43, 39, 33, + 34, 40, 47, 61, 59, 56, 54, 54, 56, 59, 61, 57, 51, 45, 39, 35, + 37, 42, 44, 42, 45, 45, 43, 38, 38, 41, 46, 47, 45, 51, 59, 62, + 61, 56, 53, 50, 51, 57, 68, 80, 80, 72, 64, 61, 59, 57, 58, 61, + 63, 64, 63, 63, 63, 64, 67, 68, 67, 65, 63, 72, 72, 70, 68, 66, + 63, 62, 62, 57, 58, 62, 64, 70, 78, 87, 90, 88, 85, 77, 74, 79, + 72, 63, 66, 58, 66, 70, 63, 60, 58, 46, 32, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, + 47, 45, 45, 40, 42, 40, 36, 37, 40, 44, 42, 45, 48, 48, 48, 47, + 47, 50, 51, 44, 38, 90, 81, 66, 60, 60, 47, 56, 58, 54, 45, 37, + 37, 45, 53, 70, 67, 62, 58, 57, 58, 60, 62, 59, 53, 45, 39, 35, + 37, 42, 45, 41, 41, 41, 41, 40, 42, 44, 47, 52, 57, 61, 61, 61, + 62, 60, 56, 71, 60, 47, 44, 55, 73, 90, 102, 84, 77, 66, 58, 55, + 56, 58, 59, 54, 55, 56, 55, 53, 53, 53, 56, 62, 65, 64, 60, 58, + 56, 53, 51, 56, 56, 57, 55, 59, 65, 74, 78, 86, 85, 71, 66, 74, + 62, 50, 58, 44, 43, 46, 52, 63, 67, 64, 62, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 44, + 43, 41, 41, 43, 45, 43, 37, 38, 43, 45, 44, 44, 46, 48, 48, 48, + 52, 57, 59, 46, 36, 93, 89, 73, 67, 67, 58, 68, 69, 61, 49, 37, + 35, 42, 50, 77, 73, 67, 62, 60, 60, 63, 65, 60, 54, 46, 36, 34, + 35, 40, 45, 44, 40, 37, 37, 43, 45, 46, 44, 57, 69, 72, 63, 56, + 58, 60, 58, 57, 59, 63, 64, 66, 65, 64, 65, 109, 96, 77, 59, 50, + 47, 49, 51, 45, 46, 45, 42, 38, 38, 42, 47, 55, 57, 57, 56, 53, + 50, 47, 45, 46, 46, 46, 48, 51, 60, 71, 77, 77, 77, 62, 56, 67, + 53, 40, 51, 54, 45, 37, 42, 58, 85, 122, 151, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 44, + 45, 42, 41, 42, 37, 37, 41, 42, 39, 40, 45, 37, 47, 53, 50, 46, + 49, 61, 72, 43, 29, 69, 98, 70, 67, 77, 50, 70, 66, 63, 58, 42, + 27, 33, 49, 67, 57, 60, 64, 56, 54, 61, 62, 69, 51, 40, 41, 40, + 34, 37, 44, 37, 40, 40, 40, 41, 42, 48, 52, 53, 64, 70, 63, 60, + 66, 68, 64, 59, 60, 62, 64, 68, 68, 67, 64, 78, 107, 109, 69, 38, + 41, 51, 49, 43, 50, 45, 40, 45, 37, 32, 48, 52, 40, 42, 56, 48, + 46, 53, 36, 39, 29, 48, 54, 37, 50, 73, 65, 68, 62, 54, 71, 51, + 29, 53, 40, 55, 38, 46, 38, 44, 82, 98, 99, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 42, 43, + 44, 41, 40, 41, 36, 35, 39, 40, 36, 38, 45, 41, 52, 61, 60, 57, + 58, 66, 74, 60, 45, 73, 97, 81, 80, 83, 61, 73, 69, 68, 66, 54, + 43, 48, 62, 80, 69, 71, 75, 68, 67, 72, 70, 61, 46, 37, 37, 41, + 36, 40, 46, 47, 49, 48, 49, 47, 50, 57, 60, 63, 72, 76, 69, 66, + 74, 75, 71, 69, 68, 68, 69, 71, 70, 70, 67, 64, 51, 74, 121, 123, + 75, 43, 48, 48, 18, 28, 41, 33, 35, 60, 33, 36, 65, 64, 44, 39, + 36, 61, 36, 40, 57, 51, 48, 47, 38, 56, 82, 61, 43, 42, 29, 17, + 29, 35, 24, 56, 27, 29, 41, 48, 36, 33, 69, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 46, 44, + 44, 42, 40, 40, 36, 35, 36, 37, 36, 39, 46, 48, 58, 68, 70, 69, + 68, 71, 76, 71, 58, 66, 81, 84, 86, 79, 64, 74, 70, 70, 71, 67, + 60, 64, 74, 85, 73, 74, 78, 74, 73, 75, 69, 57, 45, 39, 40, 44, + 40, 43, 47, 48, 49, 50, 51, 50, 54, 60, 63, 68, 74, 77, 71, 70, + 76, 76, 73, 75, 72, 71, 69, 70, 69, 68, 66, 63, 72, 64, 55, 83, + 126, 128, 98, 50, 94, 72, 37, 60, 36, 44, 42, 35, 40, 28, 35, 62, + 37, 43, 40, 21, 49, 41, 33, 27, 35, 68, 64, 85, 77, 113, 108, 97, + 102, 81, 85, 60, 122, 126, 74, 89, 120, 95, 84, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 52, 51, 51, 48, + 47, 43, 40, 40, 39, 36, 36, 39, 42, 46, 50, 57, 64, 73, 76, 76, + 74, 76, 77, 72, 63, 57, 65, 85, 86, 72, 62, 69, 68, 68, 71, 71, + 68, 70, 76, 83, 72, 73, 77, 74, 75, 73, 62, 61, 51, 44, 46, 47, + 45, 44, 48, 50, 50, 51, 50, 52, 57, 61, 62, 72, 74, 75, 72, 75, + 78, 79, 73, 79, 75, 71, 69, 67, 67, 65, 64, 69, 65, 56, 52, 72, + 105, 124, 126, 114, 66, 36, 46, 63, 30, 57, 34, 41, 48, 39, 34, 58, + 63, 33, 57, 52, 22, 28, 57, 27, 45, 112, 77, 87, 81, 113, 122, 98, + 70, 69, 109, 115, 168, 166, 129, 140, 124, 84, 111, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 53, 55, 55, 51, + 48, 44, 40, 43, 45, 44, 44, 48, 52, 57, 59, 70, 72, 77, 79, 80, + 80, 82, 82, 78, 73, 62, 65, 89, 92, 75, 68, 69, 68, 67, 68, 69, + 68, 69, 72, 82, 74, 76, 80, 77, 78, 75, 61, 61, 53, 47, 48, 50, + 49, 48, 48, 57, 56, 55, 58, 61, 66, 68, 68, 77, 76, 76, 75, 80, + 83, 82, 78, 86, 81, 77, 72, 72, 71, 69, 68, 65, 55, 61, 81, 81, + 62, 60, 75, 107, 95, 70, 40, 26, 18, 49, 24, 26, 13, 31, 43, 34, + 48, 28, 168, 124, 67, 91, 151, 108, 68, 95, 74, 58, 49, 31, 43, 38, + 29, 81, 134, 162, 156, 135, 125, 120, 51, 21, 158, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 53, 57, 59, 55, + 50, 48, 45, 48, 51, 53, 56, 60, 68, 73, 73, 83, 84, 85, 84, 87, + 86, 87, 88, 78, 79, 72, 73, 86, 91, 81, 78, 74, 74, 72, 69, 68, + 68, 70, 72, 79, 75, 81, 83, 79, 80, 77, 63, 56, 50, 45, 44, 49, + 50, 53, 51, 57, 57, 57, 62, 66, 70, 70, 70, 78, 73, 73, 76, 82, + 86, 83, 79, 83, 78, 75, 73, 73, 74, 72, 71, 67, 79, 73, 53, 51, + 64, 58, 36, 43, 125, 133, 79, 47, 29, 10, 27, 56, 34, 42, 39, 31, + 63, 60, 209, 244, 225, 197, 170, 120, 59, 30, 39, 80, 82, 45, 64, 100, + 115, 144, 142, 86, 82, 63, 37, 33, 21, 37, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 62, 47, 55, 61, 66, 64, + 60, 58, 56, 54, 59, 64, 68, 74, 84, 87, 86, 91, 90, 90, 89, 92, + 90, 88, 85, 77, 79, 77, 74, 76, 84, 87, 84, 78, 80, 77, 72, 68, + 68, 72, 74, 75, 77, 85, 87, 80, 82, 80, 66, 59, 54, 48, 44, 49, + 52, 55, 53, 50, 51, 55, 61, 66, 70, 67, 65, 78, 72, 70, 76, 84, + 89, 84, 80, 79, 76, 75, 73, 74, 76, 76, 75, 72, 67, 64, 65, 68, + 66, 57, 49, 49, 8, 56, 126, 104, 99, 39, 21, 16, 40, 47, 26, 109, + 210, 228, 242, 196, 125, 66, 13, 12, 28, 38, 98, 151, 142, 117, 135, 182, + 177, 121, 67, 58, 34, 37, 41, 45, 67, 127, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, 62, 42, 50, 60, 67, 67, + 66, 64, 62, 53, 60, 68, 73, 81, 93, 95, 90, 89, 88, 88, 90, 91, + 89, 84, 80, 75, 77, 80, 74, 68, 76, 91, 90, 80, 81, 78, 70, 64, + 65, 71, 74, 75, 80, 90, 91, 85, 87, 85, 72, 67, 61, 53, 49, 48, + 53, 54, 51, 49, 51, 55, 63, 69, 71, 67, 64, 84, 76, 75, 82, 94, + 96, 93, 89, 81, 79, 79, 78, 80, 82, 83, 80, 70, 70, 68, 64, 63, + 64, 64, 63, 37, 36, 39, 70, 115, 187, 73, 25, 52, 23, 30, 83, 215, + 229, 246, 230, 189, 34, 8, 31, 37, 39, 41, 109, 200, 156, 143, 156, 205, + 188, 90, 46, 50, 36, 53, 49, 46, 96, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 65, 61, 117, 104, 106, 81, 63, 78, + 89, 74, 63, 57, 61, 74, 78, 78, 89, 96, 87, 96, 80, 84, 94, 90, + 83, 84, 83, 84, 83, 81, 78, 76, 72, 71, 70, 85, 87, 77, 63, 56, + 62, 70, 72, 81, 84, 85, 87, 86, 82, 80, 77, 69, 70, 72, 66, 58, + 55, 55, 56, 42, 48, 56, 60, 62, 68, 76, 81, 79, 88, 94, 93, 92, + 95, 93, 88, 87, 88, 88, 88, 86, 83, 78, 75, 76, 80, 82, 78, 77, + 76, 73, 67, 81, 32, 59, 42, 38, 51, 157, 192, 23, 52, 183, 247, 244, + 241, 224, 111, 55, 19, 45, 45, 24, 49, 81, 106, 142, 75, 104, 123, 83, + 59, 45, 41, 43, 46, 51, 56, 73, 192, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 197, 86, 101, 151, 170, 158, 145, 114, 83, + 87, 93, 78, 74, 70, 81, 95, 94, 95, 102, 100, 90, 76, 80, 91, 89, + 85, 86, 86, 87, 86, 85, 82, 79, 76, 74, 73, 72, 77, 77, 71, 68, + 72, 75, 75, 81, 82, 85, 84, 84, 80, 79, 78, 72, 70, 69, 67, 65, + 63, 62, 61, 54, 58, 65, 67, 68, 71, 77, 81, 80, 85, 87, 84, 85, + 92, 96, 96, 90, 92, 93, 92, 89, 85, 81, 80, 78, 82, 83, 78, 80, + 79, 77, 70, 59, 69, 69, 27, 52, 37, 96, 166, 149, 191, 250, 221, 114, + 76, 75, 14, 60, 40, 41, 35, 46, 63, 71, 104, 112, 42, 47, 64, 55, + 52, 39, 31, 51, 31, 45, 100, 168, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 85, 118, 139, 150, 176, 177, 166, 173, 147, 94, + 97, 121, 105, 87, 74, 82, 101, 99, 92, 100, 105, 93, 80, 84, 94, 92, + 89, 91, 89, 87, 85, 85, 82, 78, 75, 73, 72, 62, 68, 71, 71, 70, + 74, 77, 76, 84, 84, 86, 83, 82, 78, 79, 79, 76, 71, 67, 67, 72, + 73, 70, 66, 68, 70, 75, 74, 73, 74, 79, 81, 80, 83, 85, 85, 86, + 92, 97, 98, 92, 96, 98, 97, 93, 88, 87, 87, 85, 87, 86, 80, 79, + 78, 74, 69, 71, 55, 59, 34, 41, 17, 58, 95, 97, 164, 207, 149, 35, + 22, 46, 39, 41, 46, 37, 40, 81, 79, 48, 70, 69, 47, 49, 44, 40, + 52, 48, 41, 34, 43, 93, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 115, 111, 145, 162, 159, 165, 175, 171, 178, 155, 108, + 98, 102, 84, 90, 79, 84, 98, 95, 91, 97, 97, 100, 87, 91, 98, 95, + 92, 93, 89, 87, 86, 86, 83, 79, 76, 74, 73, 69, 70, 69, 69, 68, + 73, 77, 78, 85, 86, 87, 82, 80, 76, 79, 80, 77, 74, 71, 70, 74, + 75, 74, 73, 75, 76, 78, 78, 77, 79, 83, 84, 80, 85, 92, 95, 95, + 95, 94, 92, 93, 97, 100, 99, 94, 90, 90, 92, 92, 93, 89, 81, 77, + 77, 72, 67, 57, 35, 55, 38, 30, 41, 83, 68, 93, 135, 135, 99, 33, + 38, 40, 40, 33, 44, 41, 55, 93, 86, 49, 46, 39, 63, 70, 49, 44, + 53, 49, 41, 33, 102, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 110, 113, 133, 163, 176, 168, 166, 181, 183, 171, 152, 143, + 128, 105, 93, 96, 92, 94, 97, 94, 100, 102, 93, 99, 89, 92, 98, 95, + 94, 95, 89, 92, 91, 91, 88, 86, 83, 81, 80, 77, 76, 76, 78, 78, + 79, 80, 82, 85, 86, 87, 82, 78, 75, 79, 82, 76, 77, 76, 74, 71, + 70, 75, 78, 78, 78, 78, 78, 81, 85, 90, 91, 87, 89, 94, 97, 96, + 91, 89, 88, 92, 95, 97, 97, 94, 92, 92, 93, 91, 92, 90, 83, 80, + 79, 75, 71, 55, 59, 60, 35, 47, 62, 77, 67, 49, 56, 30, 26, 16, + 36, 34, 45, 53, 45, 48, 64, 75, 83, 81, 58, 36, 42, 34, 35, 41, + 36, 39, 54, 89, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 116, 128, 129, 172, 192, 189, 177, 170, 171, 175, 157, 148, 165, + 161, 142, 139, 105, 102, 101, 97, 95, 105, 107, 91, 90, 84, 89, 95, 93, + 96, 98, 91, 91, 90, 91, 89, 87, 85, 83, 83, 75, 75, 80, 88, 90, + 86, 80, 78, 83, 85, 88, 82, 78, 75, 79, 83, 76, 78, 79, 75, 70, + 69, 75, 80, 82, 81, 80, 80, 85, 89, 94, 95, 94, 90, 90, 90, 88, + 85, 87, 92, 94, 94, 94, 95, 96, 95, 95, 94, 87, 90, 91, 87, 87, + 87, 85, 81, 80, 19, 15, 58, 76, 61, 55, 51, 46, 49, 34, 35, 36, + 39, 39, 57, 53, 39, 55, 77, 65, 82, 106, 67, 63, 47, 34, 57, 58, + 41, 87, 151, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 211, 105, 125, 143, 143, 184, 186, 179, 168, 157, 171, 164, 161, 155, 151, + 152, 151, 144, 110, 99, 98, 100, 97, 100, 102, 94, 91, 86, 91, 95, 94, + 98, 101, 93, 88, 88, 89, 88, 87, 85, 85, 84, 79, 78, 81, 91, 92, + 86, 80, 79, 80, 84, 88, 83, 79, 75, 80, 84, 78, 77, 75, 73, 72, + 74, 77, 79, 84, 81, 80, 79, 81, 85, 88, 88, 90, 86, 87, 90, 90, + 87, 90, 97, 98, 95, 93, 96, 100, 102, 99, 96, 90, 94, 95, 92, 92, + 92, 89, 84, 73, 35, 42, 89, 102, 84, 62, 45, 29, 38, 45, 40, 45, + 35, 38, 45, 43, 41, 56, 79, 68, 86, 117, 79, 35, 37, 32, 49, 43, + 47, 124, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 141, 125, 162, 181, 162, 184, 167, 169, 173, 168, 156, 146, 166, 169, 138, + 143, 163, 151, 116, 95, 93, 105, 101, 95, 96, 98, 97, 93, 97, 99, 97, + 100, 102, 92, 91, 91, 92, 92, 91, 90, 90, 90, 96, 89, 86, 91, 91, + 87, 85, 87, 78, 83, 88, 84, 80, 76, 80, 85, 80, 76, 71, 71, 76, + 80, 80, 79, 85, 82, 79, 76, 77, 79, 81, 80, 82, 81, 89, 98, 100, + 95, 94, 99, 102, 97, 94, 97, 104, 107, 103, 98, 97, 101, 102, 98, 96, + 94, 89, 83, 69, 205, 191, 105, 113, 110, 44, 22, 38, 38, 44, 28, 47, + 46, 55, 43, 54, 57, 53, 65, 67, 90, 130, 108, 62, 85, 79, 82, 92, + 136, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 161, 161, 163, 183, 176, 172, 170, 169, 167, 164, 159, 155, 150, 153, 159, 147, + 133, 145, 170, 145, 92, 103, 84, 122, 108, 108, 88, 100, 104, 95, 89, 101, + 105, 101, 103, 103, 91, 90, 99, 101, 93, 93, 102, 99, 90, 88, 97, 97, + 88, 84, 87, 77, 78, 81, 79, 85, 86, 84, 77, 81, 79, 75, 73, 76, + 81, 82, 80, 84, 83, 82, 78, 78, 82, 87, 86, 83, 86, 88, 86, 88, + 94, 98, 99, 101, 99, 94, 91, 98, 108, 106, 98, 87, 83, 81, 87, 100, + 104, 89, 71, 82, 192, 119, 41, 67, 96, 11, 44, 47, 46, 43, 43, 46, + 51, 55, 56, 60, 49, 72, 71, 71, 91, 96, 112, 86, 86, 122, 152, 205, + 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 167, 175, 182, 180, 176, 172, 170, 171, 169, 166, 162, 170, 166, 165, 160, 148, + 137, 138, 141, 158, 130, 110, 101, 90, 112, 101, 106, 98, 104, 98, 94, 105, + 107, 101, 100, 105, 96, 94, 98, 98, 93, 92, 97, 93, 87, 89, 99, 99, + 90, 86, 89, 85, 84, 84, 82, 89, 90, 85, 74, 81, 77, 75, 78, 80, + 80, 80, 79, 83, 83, 84, 83, 83, 84, 87, 85, 82, 86, 88, 86, 87, + 93, 97, 97, 98, 96, 91, 89, 96, 104, 103, 96, 85, 78, 80, 93, 101, + 96, 88, 85, 91, 99, 134, 141, 49, 56, 54, 60, 50, 49, 47, 47, 50, + 54, 56, 57, 66, 56, 76, 74, 72, 89, 93, 105, 122, 148, 199, 204, 215, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 174, 177, 177, 173, 172, 170, 171, 171, 169, 166, 151, 155, 158, 155, 159, + 164, 164, 154, 150, 138, 106, 95, 73, 113, 97, 107, 96, 105, 102, 99, 110, + 110, 101, 98, 106, 102, 99, 95, 94, 93, 92, 91, 90, 89, 93, 102, 98, + 88, 84, 87, 82, 81, 80, 80, 87, 88, 82, 70, 73, 68, 70, 78, 83, + 79, 78, 81, 83, 83, 83, 84, 86, 85, 85, 85, 81, 85, 87, 85, 85, + 90, 94, 93, 94, 92, 88, 88, 94, 100, 99, 94, 85, 77, 83, 99, 99, + 87, 86, 97, 90, 54, 102, 149, 64, 51, 51, 63, 48, 47, 47, 49, 53, + 56, 57, 57, 67, 60, 77, 77, 74, 87, 92, 98, 118, 168, 238, 229, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 172, 170, 172, 172, 169, 169, 172, 172, 173, 169, 163, 164, 163, 161, 163, + 167, 163, 153, 156, 143, 128, 100, 109, 129, 110, 98, 100, 109, 105, 101, 112, + 112, 103, 101, 105, 104, 100, 92, 90, 93, 92, 87, 94, 94, 97, 101, 93, + 84, 81, 84, 72, 74, 78, 77, 83, 84, 82, 74, 69, 63, 65, 76, 82, + 77, 78, 86, 84, 82, 82, 84, 86, 84, 84, 84, 80, 84, 86, 84, 84, + 88, 90, 89, 92, 90, 87, 88, 93, 97, 96, 93, 87, 85, 90, 96, 97, + 88, 88, 95, 82, 64, 62, 79, 60, 59, 32, 49, 48, 48, 50, 54, 59, + 63, 64, 63, 68, 67, 80, 83, 81, 93, 100, 99, 92, 145, 224, 223, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 230, 184, 172, 173, 175, 175, 176, 175, 177, 176, 180, 170, 168, 170, 166, + 159, 156, 159, 158, 156, 148, 124, 129, 130, 98, 91, 108, 114, 107, 101, 111, + 113, 106, 106, 102, 101, 97, 90, 88, 92, 92, 88, 95, 95, 96, 95, 88, + 82, 82, 86, 70, 76, 82, 79, 81, 81, 83, 81, 76, 70, 70, 76, 77, + 74, 80, 88, 85, 80, 78, 80, 80, 78, 83, 86, 80, 84, 86, 83, 83, + 86, 87, 86, 91, 88, 87, 90, 94, 95, 95, 94, 91, 96, 95, 90, 92, + 95, 92, 81, 74, 52, 63, 57, 19, 44, 53, 44, 55, 56, 58, 61, 66, + 68, 68, 67, 72, 76, 83, 88, 87, 96, 108, 99, 92, 134, 216, 225, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 181, 176, 178, 180, 181, 180, 181, 182, 181, 171, 162, 166, 171, 169, + 163, 168, 178, 146, 161, 151, 152, 127, 123, 80, 105, 114, 119, 109, 101, 111, + 114, 109, 110, 102, 97, 92, 89, 88, 88, 89, 89, 91, 91, 90, 89, 85, + 85, 86, 88, 74, 78, 81, 76, 76, 77, 79, 78, 86, 84, 82, 78, 75, + 75, 80, 83, 87, 79, 76, 79, 79, 76, 82, 88, 80, 85, 87, 84, 82, + 85, 85, 83, 91, 87, 87, 91, 94, 93, 93, 94, 94, 102, 97, 86, 86, + 96, 87, 69, 72, 43, 62, 62, 32, 52, 66, 58, 58, 58, 58, 60, 63, + 64, 63, 62, 70, 78, 77, 84, 83, 89, 105, 90, 99, 123, 206, 228, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 177, 179, 182, 182, 181, 181, 184, 184, 179, 176, 176, 170, 166, + 166, 165, 164, 159, 166, 166, 170, 156, 124, 83, 121, 116, 122, 111, 104, 113, + 115, 110, 111, 104, 93, 88, 89, 88, 82, 83, 89, 87, 87, 86, 86, 86, + 87, 86, 83, 79, 77, 74, 69, 75, 80, 80, 75, 82, 87, 86, 76, 74, + 78, 82, 77, 86, 78, 77, 83, 83, 77, 79, 87, 80, 86, 88, 85, 83, + 84, 84, 82, 89, 85, 86, 92, 94, 91, 91, 94, 95, 97, 94, 88, 85, + 87, 77, 66, 71, 54, 57, 58, 69, 69, 53, 60, 56, 55, 55, 58, 61, + 64, 64, 64, 69, 79, 74, 83, 83, 90, 109, 91, 109, 102, 179, 221, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 175, 177, 179, 179, 178, 177, 180, 180, 171, 179, 177, 164, 164, + 175, 172, 158, 175, 155, 173, 158, 185, 107, 75, 95, 114, 121, 111, 104, 113, + 115, 110, 110, 107, 92, 86, 90, 89, 79, 79, 89, 88, 88, 87, 87, 89, + 89, 84, 77, 88, 80, 70, 71, 81, 92, 88, 79, 70, 83, 85, 73, 72, + 81, 84, 74, 85, 78, 78, 86, 87, 78, 79, 85, 81, 86, 88, 85, 83, + 84, 84, 81, 88, 84, 85, 91, 93, 89, 89, 93, 94, 90, 91, 91, 87, + 76, 70, 69, 72, 57, 72, 69, 64, 62, 52, 48, 56, 56, 57, 61, 68, + 73, 76, 77, 74, 86, 80, 91, 93, 102, 126, 106, 130, 95, 158, 216, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 228, 176, 176, 177, 179, 180, 183, 182, 178, 169, 169, 175, 169, + 159, 163, 178, 173, 166, 160, 162, 169, 164, 139, 115, 100, 118, 115, 104, 81, + 125, 126, 96, 107, 96, 89, 89, 87, 77, 76, 80, 93, 91, 87, 82, 82, + 85, 85, 83, 83, 77, 73, 72, 74, 75, 74, 74, 76, 75, 76, 79, 82, + 81, 76, 72, 79, 82, 79, 73, 75, 79, 83, 78, 83, 83, 82, 81, 79, + 80, 83, 86, 75, 80, 84, 85, 83, 83, 86, 89, 90, 90, 87, 82, 77, + 74, 75, 76, 57, 57, 59, 58, 58, 54, 55, 56, 65, 66, 61, 66, 79, + 81, 81, 92, 92, 88, 75, 104, 94, 92, 138, 115, 116, 110, 105, 200, 213, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 176, 177, 176, 180, 180, 181, 180, 179, 174, 174, 177, 174, + 167, 169, 177, 171, 166, 161, 163, 169, 166, 145, 123, 116, 105, 102, 120, 101, + 112, 108, 107, 101, 92, 87, 87, 87, 79, 79, 81, 85, 84, 85, 85, 86, + 88, 89, 89, 74, 74, 74, 73, 71, 71, 71, 72, 75, 74, 75, 77, 79, + 79, 75, 71, 76, 79, 79, 75, 75, 79, 79, 75, 79, 80, 82, 82, 80, + 79, 80, 81, 82, 82, 83, 84, 86, 87, 86, 85, 86, 86, 84, 81, 76, + 73, 74, 75, 75, 68, 63, 61, 56, 48, 45, 49, 54, 61, 63, 68, 78, + 77, 80, 93, 100, 99, 94, 114, 108, 106, 135, 123, 128, 119, 108, 185, 221, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 230, 180, 178, 181, 180, 179, 179, 179, 178, 176, 176, 176, + 175, 172, 170, 167, 165, 163, 163, 168, 166, 152, 136, 128, 102, 96, 123, 111, + 102, 96, 106, 98, 88, 85, 85, 86, 79, 79, 82, 78, 80, 86, 88, 87, + 85, 86, 88, 76, 81, 85, 85, 81, 78, 80, 82, 73, 73, 73, 75, 77, + 76, 73, 71, 72, 76, 78, 77, 77, 79, 77, 73, 76, 78, 82, 82, 81, + 78, 77, 77, 85, 82, 80, 81, 85, 86, 83, 78, 81, 82, 81, 79, 74, + 71, 70, 70, 69, 59, 55, 60, 60, 52, 53, 62, 64, 75, 81, 86, 92, + 89, 91, 106, 112, 113, 115, 122, 121, 119, 127, 131, 128, 114, 93, 141, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 182, 183, 181, 179, 178, 177, 177, 175, 172, 174, + 177, 171, 161, 165, 166, 164, 162, 164, 164, 155, 145, 136, 124, 111, 107, 103, + 104, 102, 98, 98, 89, 84, 85, 86, 78, 79, 81, 76, 81, 88, 91, 86, + 79, 77, 80, 71, 74, 76, 75, 72, 70, 71, 73, 74, 73, 73, 74, 75, + 74, 74, 73, 72, 74, 76, 76, 77, 77, 75, 73, 77, 79, 81, 81, 79, + 78, 77, 78, 79, 77, 76, 78, 80, 81, 78, 76, 78, 80, 80, 77, 72, + 67, 65, 65, 56, 45, 46, 60, 66, 59, 60, 71, 68, 76, 78, 82, 89, + 86, 87, 100, 102, 105, 114, 113, 120, 122, 118, 135, 143, 127, 101, 117, 215, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 232, 183, 183, 181, 179, 177, 176, 174, 171, 169, 172, + 173, 166, 155, 162, 163, 162, 159, 158, 158, 153, 148, 151, 147, 127, 98, 100, + 105, 107, 99, 100, 91, 85, 86, 86, 78, 76, 80, 75, 79, 86, 91, 85, + 74, 72, 76, 79, 75, 71, 69, 70, 71, 70, 69, 74, 75, 75, 74, 73, + 74, 74, 75, 74, 73, 73, 75, 75, 75, 75, 77, 81, 81, 81, 79, 77, + 77, 78, 81, 71, 74, 77, 77, 76, 75, 77, 79, 78, 79, 78, 74, 68, + 63, 60, 59, 59, 50, 51, 62, 66, 55, 50, 54, 71, 73, 70, 74, 85, + 86, 86, 97, 88, 90, 99, 100, 109, 113, 110, 127, 133, 125, 113, 119, 222, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 184, 184, 181, 178, 175, 180, 174, 171, 172, 173, + 171, 164, 157, 161, 162, 161, 157, 157, 157, 153, 147, 158, 150, 130, 100, 105, + 94, 97, 102, 98, 91, 85, 86, 84, 77, 75, 79, 72, 72, 79, 86, 84, + 75, 73, 79, 89, 83, 76, 74, 76, 78, 77, 75, 75, 75, 75, 73, 71, + 72, 75, 77, 75, 72, 72, 75, 76, 74, 76, 79, 82, 82, 80, 78, 75, + 76, 78, 81, 69, 74, 78, 78, 75, 74, 77, 80, 74, 75, 73, 69, 63, + 58, 56, 56, 61, 57, 57, 62, 63, 55, 45, 41, 68, 68, 63, 68, 81, + 83, 84, 94, 95, 93, 93, 100, 101, 98, 102, 103, 118, 108, 105, 116, 217, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 185, 184, 181, 178, 175, 182, 172, 169, 174, 174, + 165, 160, 161, 160, 160, 159, 156, 158, 160, 156, 149, 153, 149, 138, 109, 117, + 94, 95, 103, 95, 87, 82, 84, 83, 75, 75, 80, 72, 68, 71, 81, 82, + 76, 75, 81, 73, 71, 69, 68, 67, 68, 67, 67, 73, 74, 73, 71, 69, + 69, 73, 77, 74, 71, 73, 79, 80, 76, 75, 78, 79, 80, 80, 78, 76, + 75, 75, 77, 72, 73, 75, 75, 74, 74, 74, 74, 68, 67, 66, 62, 57, + 54, 54, 55, 55, 57, 58, 57, 61, 62, 54, 43, 48, 52, 49, 51, 59, + 56, 56, 66, 78, 76, 71, 95, 92, 85, 104, 83, 111, 95, 101, 124, 213, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 232, 184, 181, 178, 175, 181, 169, 167, 174, 172, + 160, 156, 163, 158, 159, 157, 156, 160, 163, 159, 151, 146, 161, 158, 117, 129, + 109, 109, 104, 91, 82, 77, 81, 80, 75, 76, 81, 75, 67, 68, 78, 81, + 75, 74, 81, 68, 72, 75, 74, 71, 69, 70, 72, 72, 73, 72, 69, 66, + 67, 72, 76, 71, 70, 74, 82, 83, 77, 74, 76, 75, 77, 80, 79, 77, + 74, 73, 72, 75, 72, 69, 70, 73, 73, 69, 65, 62, 62, 60, 56, 53, + 52, 54, 55, 55, 60, 59, 53, 58, 65, 59, 45, 48, 55, 55, 54, 54, + 45, 42, 54, 30, 32, 32, 78, 81, 79, 115, 82, 59, 55, 89, 146, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 180, 182, 180, 174, 182, 174, 171, 169, 162, + 154, 154, 160, 156, 158, 157, 154, 154, 155, 152, 148, 146, 146, 148, 142, 129, + 110, 104, 103, 95, 88, 87, 78, 74, 76, 73, 77, 67, 69, 71, 73, 75, + 77, 77, 78, 68, 66, 67, 72, 74, 71, 69, 69, 77, 70, 66, 70, 72, + 71, 71, 72, 72, 75, 80, 84, 85, 83, 79, 76, 70, 72, 73, 75, 74, + 72, 70, 68, 81, 77, 73, 72, 73, 71, 64, 58, 58, 60, 61, 60, 58, + 57, 59, 61, 55, 61, 66, 65, 61, 57, 57, 60, 58, 47, 65, 45, 59, + 63, 60, 44, 74, 126, 100, 52, 44, 47, 53, 51, 69, 166, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 192, 174, 177, 176, 181, 172, 167, 165, 160, + 154, 154, 159, 156, 158, 157, 154, 154, 155, 151, 145, 145, 146, 147, 143, 130, + 114, 103, 101, 90, 86, 82, 75, 71, 70, 69, 70, 66, 68, 69, 72, 74, + 75, 76, 77, 71, 65, 63, 65, 67, 67, 68, 71, 66, 63, 63, 69, 73, + 74, 77, 81, 74, 75, 77, 79, 80, 80, 79, 78, 74, 75, 76, 76, 76, + 74, 73, 72, 75, 71, 68, 69, 71, 70, 65, 60, 58, 56, 55, 56, 59, + 60, 60, 58, 60, 63, 66, 65, 63, 60, 61, 62, 77, 56, 50, 60, 53, + 51, 56, 62, 169, 195, 156, 107, 84, 62, 126, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 238, 177, 178, 174, 178, 168, 162, 159, 157, + 155, 155, 157, 155, 157, 156, 153, 153, 154, 150, 144, 147, 143, 143, 145, 138, + 125, 114, 111, 86, 84, 76, 72, 68, 65, 66, 64, 65, 66, 67, 69, 71, + 73, 75, 75, 73, 64, 57, 57, 59, 61, 66, 72, 68, 66, 67, 71, 71, + 69, 72, 78, 76, 75, 74, 74, 74, 76, 79, 81, 76, 76, 75, 75, 75, + 74, 74, 74, 71, 68, 66, 66, 67, 66, 62, 58, 60, 55, 52, 54, 61, + 63, 61, 56, 54, 55, 57, 58, 61, 62, 63, 64, 63, 55, 58, 69, 64, + 66, 56, 171, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 233, 182, 169, 174, 166, 159, 155, 155, + 155, 156, 156, 154, 156, 155, 152, 152, 153, 149, 143, 149, 143, 141, 143, 144, + 136, 130, 127, 84, 83, 70, 69, 68, 63, 68, 62, 63, 63, 64, 66, 68, + 70, 72, 73, 71, 62, 55, 54, 55, 58, 63, 70, 70, 69, 71, 72, 69, + 65, 67, 73, 76, 75, 73, 72, 73, 76, 78, 80, 74, 74, 73, 72, 71, + 71, 72, 72, 73, 70, 66, 65, 64, 62, 58, 55, 62, 59, 56, 58, 62, + 64, 62, 58, 66, 64, 63, 63, 67, 69, 69, 68, 72, 66, 84, 56, 75, + 67, 34, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 169, 168, 163, 157, 153, 152, + 153, 154, 154, 152, 154, 153, 150, 150, 151, 147, 143, 154, 144, 139, 139, 143, + 138, 135, 134, 87, 88, 68, 71, 71, 62, 72, 62, 61, 61, 61, 62, 64, + 67, 69, 71, 68, 61, 55, 56, 57, 58, 61, 65, 65, 65, 68, 71, 69, + 66, 69, 75, 73, 73, 73, 74, 75, 76, 77, 77, 74, 73, 72, 71, 70, + 71, 71, 71, 72, 69, 67, 64, 63, 61, 58, 56, 64, 64, 64, 63, 62, + 61, 62, 63, 69, 66, 63, 61, 63, 63, 61, 59, 78, 61, 77, 53, 67, + 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 163, 164, 162, 155, 151, + 153, 155, 154, 153, 155, 154, 151, 151, 152, 148, 142, 157, 147, 139, 136, 136, + 130, 125, 124, 94, 96, 67, 72, 71, 60, 75, 61, 58, 58, 58, 59, 61, + 64, 67, 69, 67, 61, 58, 60, 61, 60, 60, 63, 69, 68, 69, 71, 69, + 64, 64, 67, 70, 71, 72, 73, 74, 74, 74, 74, 73, 73, 73, 73, 72, + 72, 71, 71, 67, 66, 64, 63, 62, 62, 62, 62, 61, 64, 65, 64, 61, + 60, 62, 64, 60, 61, 63, 64, 68, 69, 71, 72, 68, 65, 76, 87, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 166, 168, 160, 152, + 152, 155, 155, 154, 156, 155, 152, 152, 153, 149, 143, 155, 147, 141, 138, 134, + 124, 118, 117, 102, 104, 67, 71, 69, 54, 73, 56, 57, 56, 56, 57, 59, + 62, 65, 67, 69, 63, 61, 63, 64, 62, 62, 64, 75, 70, 69, 71, 70, + 64, 60, 60, 67, 68, 68, 69, 70, 70, 71, 72, 70, 71, 72, 73, 72, + 71, 69, 68, 65, 65, 63, 62, 60, 60, 61, 62, 57, 56, 56, 58, 59, + 61, 62, 61, 68, 72, 76, 78, 79, 79, 81, 84, 76, 83, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 167, 172, 163, 153, + 152, 155, 156, 156, 156, 155, 152, 152, 153, 150, 144, 148, 145, 142, 142, 137, + 125, 117, 117, 107, 108, 66, 69, 66, 49, 71, 52, 58, 57, 57, 57, 59, + 61, 64, 66, 71, 66, 62, 64, 65, 62, 64, 66, 67, 62, 62, 68, 72, + 70, 67, 67, 67, 66, 65, 64, 65, 67, 69, 71, 66, 67, 69, 70, 70, + 68, 66, 64, 67, 67, 64, 61, 58, 56, 57, 58, 53, 49, 47, 51, 58, + 62, 62, 58, 64, 68, 70, 64, 56, 48, 45, 46, 64, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 167, 172, 166, 155, + 151, 157, 166, 161, 161, 145, 152, 151, 147, 114, 153, 145, 142, 152, 130, 122, + 135, 115, 121, 98, 89, 78, 70, 68, 69, 68, 65, 66, 67, 66, 64, 61, + 61, 65, 70, 66, 63, 59, 60, 63, 64, 64, 62, 61, 65, 67, 66, 66, + 67, 65, 63, 62, 67, 70, 68, 63, 63, 69, 76, 66, 68, 70, 71, 71, + 69, 67, 65, 66, 64, 61, 58, 55, 54, 53, 53, 51, 49, 44, 37, 42, + 55, 59, 54, 61, 71, 79, 77, 53, 73, 45, 33, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 171, 167, 166, + 163, 157, 151, 154, 154, 161, 163, 164, 124, 94, 130, 141, 149, 130, 136, 113, + 120, 109, 110, 92, 87, 77, 71, 72, 70, 69, 65, 63, 62, 61, 57, 54, + 55, 58, 63, 62, 60, 57, 60, 64, 65, 65, 65, 61, 64, 65, 64, 64, + 65, 64, 63, 60, 63, 66, 65, 63, 62, 66, 70, 66, 67, 68, 68, 68, + 67, 65, 64, 62, 61, 59, 57, 56, 56, 56, 57, 58, 51, 40, 34, 44, + 59, 62, 53, 63, 64, 79, 67, 130, 163, 195, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 171, 170, + 167, 160, 154, 171, 155, 165, 148, 151, 105, 103, 148, 138, 154, 116, 146, 118, + 120, 120, 121, 87, 83, 76, 71, 74, 71, 69, 63, 64, 63, 59, 55, 52, + 53, 56, 60, 57, 56, 57, 57, 61, 63, 64, 63, 61, 62, 62, 62, 62, + 62, 62, 63, 61, 62, 63, 64, 65, 65, 65, 65, 65, 65, 65, 64, 64, + 63, 63, 63, 57, 57, 57, 56, 57, 58, 59, 60, 61, 58, 47, 36, 38, + 49, 55, 51, 64, 53, 67, 45, 199, 228, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 165, + 159, 164, 172, 161, 153, 169, 161, 163, 132, 120, 145, 140, 141, 119, 139, 125, + 118, 120, 123, 90, 85, 76, 71, 73, 70, 67, 64, 66, 63, 58, 53, 50, + 52, 54, 57, 55, 53, 54, 55, 58, 57, 58, 61, 63, 60, 59, 60, 60, + 59, 60, 63, 64, 63, 63, 65, 68, 68, 65, 62, 64, 63, 62, 61, 60, + 60, 60, 60, 55, 55, 56, 56, 57, 58, 59, 60, 57, 64, 61, 44, 32, + 34, 42, 46, 58, 42, 49, 36, 220, 235, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, + 162, 160, 166, 162, 161, 158, 157, 153, 163, 137, 141, 148, 124, 136, 116, 122, + 105, 99, 106, 95, 88, 76, 68, 69, 68, 67, 63, 63, 59, 54, 50, 48, + 49, 51, 51, 51, 52, 53, 53, 55, 58, 61, 64, 64, 59, 58, 61, 61, + 58, 59, 64, 65, 63, 61, 64, 67, 67, 63, 59, 62, 61, 60, 58, 57, + 57, 57, 57, 56, 56, 56, 57, 57, 57, 57, 57, 59, 65, 62, 49, 42, + 43, 43, 39, 49, 41, 36, 51, 207, 233, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, + 179, 158, 144, 171, 165, 146, 138, 127, 162, 140, 134, 147, 118, 146, 111, 129, + 113, 105, 106, 98, 88, 75, 66, 67, 66, 65, 62, 63, 60, 55, 52, 51, + 53, 53, 53, 50, 51, 52, 53, 55, 58, 65, 69, 66, 60, 59, 64, 64, + 59, 60, 66, 63, 61, 59, 60, 62, 62, 59, 56, 60, 59, 59, 58, 57, + 55, 54, 54, 55, 56, 57, 57, 57, 57, 56, 56, 67, 62, 53, 50, 60, + 67, 56, 38, 45, 48, 34, 59, 162, 225, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 172, 154, 144, 143, 156, 152, 146, 155, 134, 117, 135, 125, 136, 116, 129, + 117, 119, 107, 91, 83, 72, 65, 66, 65, 63, 59, 62, 59, 56, 55, 56, + 57, 55, 54, 55, 55, 53, 48, 48, 53, 61, 67, 69, 62, 63, 70, 70, + 63, 62, 69, 65, 63, 61, 60, 61, 60, 60, 59, 60, 60, 61, 60, 59, + 57, 55, 53, 55, 56, 58, 59, 60, 59, 59, 58, 69, 65, 57, 54, 64, + 73, 67, 50, 53, 67, 53, 58, 113, 212, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 232, 143, 132, 158, 143, 146, 139, 144, 142, 119, 133, 114, 115, 115, + 104, 111, 86, 84, 77, 70, 65, 67, 65, 61, 56, 57, 54, 52, 52, 54, + 54, 52, 49, 60, 57, 52, 46, 42, 43, 52, 58, 69, 63, 64, 73, 73, + 64, 63, 69, 67, 66, 64, 62, 61, 60, 61, 62, 59, 60, 61, 61, 60, + 57, 54, 52, 53, 55, 57, 59, 60, 60, 60, 59, 62, 69, 69, 60, 56, + 61, 65, 62, 64, 87, 78, 61, 88, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 230, 160, 141, 152, 153, 142, 142, 122, 116, 128, 129, 114, 100, + 99, 99, 97, 88, 81, 63, 68, 59, 64, 53, 56, 60, 58, 51, 67, 53, + 53, 46, 58, 46, 55, 59, 57, 53, 62, 52, 28, 71, 126, 109, 28, 61, + 63, 43, 86, 54, 57, 63, 61, 73, 49, 67, 60, 61, 61, 61, 60, 58, + 56, 53, 52, 55, 53, 52, 54, 58, 60, 59, 57, 67, 66, 65, 64, 63, + 61, 67, 73, 69, 76, 74, 51, 159, 207, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 211, 128, 138, 138, 134, 108, 124, 114, 109, 116, 114, + 100, 90, 88, 77, 74, 63, 71, 59, 67, 62, 69, 63, 63, 51, 60, 54, + 69, 60, 59, 74, 66, 59, 57, 255, 255, 255, 255, 184, 204, 189, 80, 42, + 56, 67, 64, 70, 67, 62, 58, 67, 49, 67, 62, 62, 62, 62, 61, 60, + 57, 55, 53, 60, 57, 55, 55, 57, 57, 55, 52, 53, 54, 60, 68, 68, + 57, 61, 75, 69, 73, 71, 70, 218, 213, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 209, 127, 139, 111, 115, 117, 113, 106, 102, + 97, 92, 85, 78, 78, 70, 76, 59, 61, 55, 64, 53, 68, 60, 59, 45, + 64, 61, 61, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 169, 103, + 51, 54, 69, 62, 60, 55, 58, 67, 52, 66, 60, 62, 62, 61, 60, 59, + 57, 55, 54, 60, 58, 55, 55, 55, 54, 52, 50, 65, 67, 68, 73, 68, + 47, 41, 55, 53, 44, 61, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 121, 121, 112, 102, 99, 98, + 93, 90, 90, 80, 81, 70, 76, 60, 61, 51, 57, 55, 65, 58, 63, 52, + 67, 61, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, + 91, 32, 42, 66, 68, 60, 63, 63, 51, 63, 60, 61, 61, 60, 59, 57, + 56, 55, 54, 55, 54, 53, 53, 53, 52, 52, 51, 59, 64, 56, 54, 62, + 52, 40, 44, 59, 65, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 97, 85, 99, 105, + 90, 81, 84, 69, 68, 58, 70, 64, 70, 60, 62, 67, 59, 48, 67, 129, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 121, 48, 69, 75, 65, 72, 62, 53, 62, 65, 65, 64, 63, 62, 61, + 60, 60, 59, 56, 56, 56, 55, 54, 53, 52, 53, 43, 57, 48, 57, 107, + 134, 128, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 94, 82, + 84, 83, 70, 69, 65, 53, 68, 64, 72, 62, 63, 61, 63, 125, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 126, 26, 45, 48, 76, 70, 65, 65, 63, 69, 68, 66, 65, 64, + 64, 64, 64, 61, 61, 61, 58, 55, 52, 52, 52, 41, 57, 52, 84, 172, + 223, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 82, 85, 66, 75, 72, 61, 70, 60, 65, 56, 60, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 192, 71, 53, 74, 66, 68, 66, 65, 68, 67, 66, 64, 63, + 63, 64, 65, 64, 65, 66, 63, 59, 56, 57, 58, 49, 54, 50, 101, 198, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 195, 72, 74, 65, 73, 59, 63, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 200, 70, 43, 54, 64, 73, 65, 64, 62, 61, 60, + 60, 61, 62, 63, 65, 67, 66, 63, 62, 64, 67, 71, 65, 59, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 190, 42, 45, 58, 61, 72, 74, 64, 59, + 66, 70, 68, 64, 61, 60, 59, 58, 59, 66, 75, 63, 68, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 77, 52, 45, 42, 51, 60, + 58, 45, 34, 57, 61, 64, 66, 66, 64, 59, 56, 41, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 53, 33, 26, 43, 61, + 63, 60, 60, 46, 55, 61, 62, 64, 66, 60, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 63, 27, + 11, 17, 31, 38, 45, 41, 27, 20, 24, 25, 99, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 116, 99, 91, 103, 111, 111, 118, 178, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy14' of size 132x153x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy14[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 178, 23, 21, 21, 20, 21, 20, 21, 19, 19, 17, 19, 21, + 24, 25, 20, 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 23, 15, 16, 23, 25, 19, 28, 28, 25, 30, 33, 11, 30, 18, + 29, 13, 20, 30, 20, 19, 14, 23, 18, 25, 19, 8, 99, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 16, 27, 25, 25, 24, 19, 20, 25, 27, 26, 21, 36, 30, 0, 30, 36, + 44, 36, 39, 22, 25, 22, 19, 125, 28, 19, 26, 34, 23, 24, 19, 14, + 21, 12, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 180, 16, 26, 32, 39, 29, 22, 28, 28, 22, 28, 39, 38, 28, 29, 29, + 54, 30, 53, 51, 69, 36, 26, 63, 29, 76, 26, 63, 37, 43, 28, 32, + 19, 23, 27, 25, 32, 18, 22, 22, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 35, + 13, 23, 36, 34, 34, 12, 39, 50, 52, 19, 27, 33, 38, 46, 54, 57, + 50, 39, 44, 38, 36, 76, 133, 58, 30, 100, 83, 59, 69, 66, 56, 69, + 35, 53, 40, 36, 24, 39, 43, 29, 32, 26, 25, 23, 22, 98, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, + 31, 21, 38, 50, 25, 38, 62, 37, 38, 42, 69, 52, 52, 46, 59, 51, + 55, 74, 80, 71, 64, 65, 38, 67, 70, 68, 64, 108, 107, 85, 100, 81, + 95, 61, 88, 105, 86, 63, 76, 59, 48, 68, 62, 27, 23, 26, 28, 26, + 25, 22, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 179, 35, 24, 41, 46, 34, 36, 36, 44, 84, 63, 63, 69, 66, 72, 64, + 69, 72, 87, 67, 63, 77, 80, 68, 68, 82, 64, 103, 69, 77, 88, 108, + 79, 112, 75, 106, 91, 110, 99, 79, 106, 92, 102, 83, 69, 88, 80, 40, + 32, 35, 27, 23, 22, 22, 25, 25, 25, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 174, 14, 30, 23, 25, 60, 22, 61, 61, 51, 43, 24, 47, 95, 54, 77, + 74, 63, 55, 75, 79, 74, 87, 75, 67, 69, 69, 64, 72, 85, 90, 101, + 102, 108, 82, 109, 103, 85, 105, 76, 94, 108, 99, 104, 73, 107, 107, 93, + 75, 88, 84, 63, 56, 45, 32, 28, 23, 22, 24, 25, 24, 21, 99, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 175, 16, 27, 14, 17, 41, 27, 31, 84, 50, 78, 52, 59, 73, 46, + 47, 60, 89, 80, 63, 85, 78, 87, 85, 99, 78, 76, 75, 70, 70, 73, + 79, 84, 96, 95, 97, 103, 101, 101, 102, 105, 99, 112, 98, 101, 103, 92, + 118, 106, 109, 102, 80, 80, 84, 79, 73, 47, 51, 44, 36, 33, 31, 28, + 25, 20, 22, 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 178, 13, 19, 14, 52, 69, 48, 36, 78, 61, 62, 79, 81, + 81, 100, 78, 83, 74, 76, 92, 81, 90, 86, 82, 96, 100, 105, 104, 110, + 105, 103, 97, 95, 139, 88, 106, 124, 104, 88, 106, 106, 94, 102, 94, 101, + 110, 108, 104, 115, 120, 102, 114, 74, 85, 91, 105, 100, 106, 72, 83, 58, + 40, 36, 33, 24, 25, 31, 19, 28, 29, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 178, 26, 13, 23, 22, 23, 21, 57, 51, 42, 60, + 65, 58, 93, 87, 93, 94, 88, 83, 90, 88, 104, 93, 103, 93, 86, 96, + 99, 105, 75, 106, 88, 90, 118, 88, 104, 97, 99, 118, 107, 93, 105, 102, + 96, 112, 108, 110, 114, 106, 98, 105, 106, 87, 81, 108, 80, 84, 74, 99, + 91, 129, 70, 80, 78, 61, 43, 36, 31, 21, 41, 27, 22, 22, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 37, 23, 29, 40, 13, 33, 68, 30, + 78, 92, 93, 88, 110, 100, 102, 89, 99, 85, 93, 80, 101, 97, 106, 93, + 103, 94, 85, 94, 96, 102, 111, 104, 111, 127, 123, 87, 116, 102, 97, 112, + 108, 103, 107, 100, 99, 124, 109, 105, 107, 101, 95, 102, 104, 91, 73, 99, + 99, 89, 120, 126, 116, 116, 91, 95, 94, 85, 78, 72, 53, 26, 40, 24, + 31, 35, 17, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 14, 28, 0, 19, 40, 28, + 43, 26, 64, 35, 61, 88, 97, 85, 94, 94, 103, 90, 98, 94, 95, 89, + 105, 103, 99, 84, 94, 89, 87, 99, 97, 100, 146, 116, 129, 144, 124, 100, + 133, 109, 99, 107, 107, 108, 112, 101, 104, 126, 108, 99, 98, 99, 98, 105, + 110, 99, 116, 91, 105, 96, 129, 147, 159, 101, 114, 99, 94, 102, 101, 85, + 71, 62, 38, 22, 35, 39, 14, 11, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 15, 22, 9, + 28, 17, 35, 61, 39, 69, 72, 84, 71, 93, 108, 102, 83, 95, 96, 95, + 96, 109, 94, 100, 102, 102, 101, 82, 91, 92, 97, 111, 105, 102, 112, 119, + 110, 103, 131, 110, 111, 111, 105, 102, 101, 106, 110, 102, 103, 116, 122, 106, + 100, 102, 101, 102, 105, 98, 102, 105, 106, 133, 114, 149, 131, 93, 101, 103, + 108, 106, 89, 71, 78, 91, 58, 32, 28, 32, 25, 27, 28, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, + 12, 12, 14, 46, 30, 40, 40, 28, 63, 76, 60, 101, 71, 90, 106, 106, + 78, 93, 93, 95, 93, 114, 95, 104, 98, 99, 109, 91, 102, 104, 108, 120, + 111, 103, 100, 99, 108, 101, 119, 117, 117, 93, 106, 100, 99, 102, 106, 105, + 104, 103, 131, 107, 101, 107, 105, 106, 106, 100, 82, 112, 114, 128, 145, 129, + 91, 89, 97, 111, 113, 99, 87, 89, 92, 82, 70, 61, 48, 33, 30, 28, + 24, 22, 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 14, 11, 11, 11, 13, 22, 43, 29, 30, 40, 42, 79, 67, 103, + 88, 98, 112, 103, 98, 96, 95, 90, 95, 103, 95, 95, 99, 98, 109, 97, + 112, 112, 111, 116, 106, 100, 117, 89, 120, 118, 107, 112, 129, 90, 107, 103, + 104, 104, 104, 110, 110, 101, 133, 106, 100, 109, 110, 110, 109, 104, 124, 111, + 109, 95, 141, 104, 106, 122, 117, 113, 104, 96, 102, 111, 103, 78, 71, 87, + 68, 35, 30, 26, 20, 33, 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 19, 17, 14, 11, 11, 11, 17, 33, 33, 47, 67, 76, + 91, 104, 83, 96, 102, 101, 105, 78, 96, 74, 98, 84, 96, 90, 96, 85, + 103, 99, 103, 98, 118, 116, 106, 109, 99, 98, 106, 101, 108, 93, 112, 105, + 104, 111, 108, 109, 114, 111, 107, 116, 120, 106, 140, 112, 103, 112, 114, 108, + 105, 100, 129, 101, 107, 144, 111, 106, 114, 133, 122, 108, 102, 105, 106, 98, + 100, 103, 81, 97, 60, 24, 42, 43, 24, 27, 21, 20, 100, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 24, 20, 14, 7, 7, 13, 19, 14, 30, + 16, 46, 88, 48, 82, 93, 79, 94, 91, 107, 92, 89, 75, 95, 78, 87, + 89, 85, 88, 98, 102, 97, 87, 97, 106, 107, 102, 99, 103, 109, 98, 105, + 113, 112, 107, 105, 108, 112, 114, 105, 105, 113, 119, 113, 106, 102, 130, 118, + 105, 100, 105, 110, 112, 110, 120, 103, 133, 123, 107, 135, 141, 139, 113, 98, + 108, 110, 131, 104, 87, 61, 124, 77, 84, 102, 64, 31, 35, 37, 31, 26, + 21, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 21, 21, 19, 18, 18, 15, + 12, 12, 38, 46, 69, 23, 64, 75, 51, 104, 107, 99, 84, 76, 88, 89, + 93, 103, 76, 81, 89, 97, 100, 98, 97, 101, 94, 103, 113, 113, 109, 107, + 114, 119, 123, 128, 135, 143, 148, 153, 157, 159, 162, 152, 144, 143, 139, 129, + 121, 117, 122, 116, 108, 107, 110, 119, 126, 128, 101, 141, 128, 105, 123, 138, + 125, 109, 116, 116, 126, 120, 109, 93, 116, 141, 63, 118, 111, 54, 39, 46, + 38, 29, 31, 26, 23, 21, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 20, 17, + 16, 19, 23, 24, 20, 18, 33, 53, 74, 86, 94, 81, 90, 69, 83, 100, + 118, 94, 97, 72, 84, 91, 101, 97, 102, 108, 103, 90, 92, 106, 119, 132, + 151, 165, 176, 192, 208, 221, 201, 202, 203, 210, 216, 221, 222, 221, 237, 234, + 232, 234, 236, 236, 240, 244, 203, 197, 183, 165, 146, 128, 116, 108, 109, 139, + 109, 114, 126, 106, 119, 127, 118, 120, 112, 106, 95, 104, 108, 114, 145, 125, + 106, 91, 67, 42, 38, 50, 33, 32, 29, 25, 23, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 176, 19, 22, 18, 15, 15, 23, 29, 34, 39, 52, 48, 49, 41, 87, 87, + 52, 104, 94, 95, 92, 80, 104, 108, 110, 103, 113, 105, 99, 99, 107, 127, + 162, 195, 209, 214, 218, 215, 210, 209, 214, 220, 239, 239, 239, 238, 239, 236, + 235, 233, 244, 244, 244, 243, 241, 242, 247, 253, 247, 245, 239, 228, 211, 187, + 166, 151, 131, 111, 117, 147, 130, 110, 128, 118, 93, 131, 133, 119, 96, 119, + 120, 113, 81, 108, 86, 79, 112, 96, 58, 67, 38, 34, 32, 27, 23, 99, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 17, 16, 17, 17, 19, 18, 21, 28, 40, 50, 77, 59, + 79, 108, 95, 94, 100, 91, 93, 108, 96, 90, 82, 94, 86, 94, 82, 116, + 155, 180, 194, 201, 200, 195, 205, 210, 217, 219, 220, 225, 233, 238, 230, 232, + 235, 233, 231, 228, 231, 235, 239, 242, 243, 239, 236, 233, 235, 237, 236, 236, + 239, 246, 250, 245, 235, 224, 200, 164, 156, 130, 111, 133, 131, 111, 151, 138, + 106, 111, 120, 149, 124, 97, 99, 92, 115, 106, 68, 88, 101, 49, 41, 37, + 30, 27, 22, 21, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 176, 16, 13, 12, 16, 22, 23, 26, 31, + 41, 51, 43, 112, 61, 83, 86, 66, 108, 102, 115, 156, 160, 152, 105, 100, + 102, 138, 165, 184, 191, 188, 191, 205, 212, 210, 221, 224, 229, 229, 228, 228, + 234, 238, 233, 239, 242, 239, 235, 233, 238, 244, 226, 234, 238, 236, 237, 238, + 240, 240, 249, 241, 236, 237, 245, 247, 243, 238, 250, 240, 215, 154, 135, 125, + 101, 138, 138, 127, 126, 138, 123, 110, 111, 135, 141, 118, 113, 126, 124, 106, + 101, 112, 56, 47, 37, 30, 28, 27, 27, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 17, 17, 14, 13, 15, + 18, 23, 30, 42, 53, 63, 52, 59, 109, 114, 86, 123, 101, 97, 127, 124, + 110, 112, 124, 138, 150, 171, 191, 196, 204, 206, 211, 220, 228, 231, 233, 235, + 238, 239, 238, 240, 243, 244, 245, 245, 244, 242, 238, 235, 237, 240, 245, 250, + 249, 243, 240, 239, 237, 234, 248, 242, 236, 233, 237, 239, 239, 240, 232, 252, + 253, 238, 213, 157, 119, 142, 122, 106, 115, 135, 154, 145, 147, 155, 157, 148, + 154, 147, 121, 111, 90, 46, 70, 55, 40, 32, 32, 32, 32, 29, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 16, + 18, 17, 24, 17, 14, 20, 36, 57, 75, 85, 94, 78, 66, 84, 81, 104, + 98, 115, 134, 130, 140, 147, 181, 172, 179, 183, 198, 199, 208, 227, 234, 230, + 233, 238, 248, 249, 250, 249, 248, 246, 247, 246, 252, 248, 246, 245, 245, 246, + 246, 243, 241, 245, 243, 237, 237, 240, 240, 237, 239, 240, 240, 238, 235, 231, + 227, 231, 240, 243, 234, 239, 225, 219, 219, 154, 129, 132, 138, 116, 126, 127, + 139, 130, 128, 165, 141, 93, 86, 87, 87, 105, 76, 59, 40, 30, 31, 30, + 27, 23, 25, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 174, 15, 12, 11, 16, 10, 18, 22, 47, 42, 100, 74, 91, 90, 84, + 158, 131, 146, 151, 106, 70, 119, 138, 175, 192, 173, 174, 200, 215, 224, 227, + 228, 229, 227, 228, 235, 238, 240, 229, 220, 222, 231, 239, 241, 238, 240, 245, + 248, 247, 243, 238, 236, 235, 234, 234, 234, 236, 237, 238, 240, 241, 241, 242, + 241, 238, 235, 232, 228, 232, 240, 243, 242, 239, 240, 235, 232, 226, 174, 136, + 126, 132, 139, 133, 146, 152, 215, 89, 104, 120, 65, 91, 130, 65, 74, 77, + 70, 49, 34, 30, 25, 16, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 173, 17, 26, 23, 17, 17, 41, 29, 43, 30, 71, 84, + 90, 77, 95, 121, 89, 116, 130, 121, 157, 155, 165, 158, 168, 186, 191, 206, + 228, 232, 239, 240, 240, 238, 235, 234, 235, 238, 230, 227, 226, 228, 234, 238, + 240, 240, 241, 243, 244, 245, 243, 241, 240, 237, 237, 235, 235, 235, 236, 237, + 238, 240, 244, 244, 245, 244, 242, 240, 237, 240, 246, 248, 246, 244, 243, 236, + 230, 225, 218, 185, 138, 130, 117, 142, 126, 109, 99, 123, 106, 88, 100, 121, + 92, 109, 93, 94, 82, 59, 40, 35, 32, 27, 26, 24, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 18, 17, 14, 14, 23, 39, 58, 71, + 94, 66, 91, 67, 104, 94, 105, 78, 97, 90, 101, 92, 168, 154, 177, 164, + 168, 187, 206, 228, 240, 237, 247, 247, 249, 247, 245, 243, 242, 243, 238, 240, + 244, 248, 249, 248, 249, 249, 251, 250, 249, 250, 251, 252, 249, 247, 246, 245, + 242, 242, 242, 242, 244, 244, 247, 249, 249, 251, 251, 249, 248, 248, 248, 249, + 247, 245, 242, 235, 228, 223, 230, 202, 189, 132, 123, 103, 128, 113, 129, 123, + 126, 133, 150, 101, 57, 88, 88, 89, 81, 58, 38, 31, 27, 21, 29, 25, + 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 19, 19, 19, 24, + 37, 53, 40, 57, 41, 63, 79, 88, 94, 71, 103, 133, 123, 120, 120, 165, + 143, 172, 158, 170, 192, 214, 225, 233, 239, 238, 246, 248, 248, 250, 249, 248, + 246, 246, 246, 248, 253, 255, 255, 252, 251, 248, 253, 250, 248, 250, 254, 255, + 254, 251, 249, 250, 248, 247, 246, 247, 249, 248, 246, 247, 249, 250, 252, 251, + 248, 247, 242, 243, 244, 245, 244, 241, 234, 229, 220, 218, 196, 195, 123, 117, + 112, 139, 117, 94, 137, 118, 100, 97, 127, 120, 94, 100, 98, 82, 64, 51, + 41, 31, 27, 25, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, + 15, 15, 18, 16, 10, 9, 60, 107, 92, 115, 80, 92, 108, 120, 106, 90, + 112, 110, 124, 134, 191, 147, 172, 199, 224, 237, 241, 240, 241, 247, 245, 244, + 246, 248, 251, 250, 249, 248, 252, 248, 248, 247, 248, 246, 243, 239, 245, 241, + 239, 241, 245, 245, 244, 244, 248, 251, 249, 249, 248, 249, 249, 247, 246, 245, + 246, 249, 248, 248, 246, 245, 239, 239, 242, 244, 248, 246, 242, 239, 243, 214, + 223, 195, 193, 144, 141, 115, 138, 140, 121, 143, 106, 133, 84, 87, 79, 85, + 85, 76, 62, 50, 37, 25, 25, 22, 24, 101, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 172, 18, 27, 28, 33, 49, 73, 96, 99, 105, 88, 90, 100, 115, + 128, 119, 130, 131, 113, 139, 137, 177, 147, 192, 215, 231, 234, 235, 243, 245, + 243, 250, 246, 244, 244, 245, 250, 250, 249, 248, 252, 247, 242, 239, 241, 241, + 239, 235, 237, 236, 236, 237, 237, 238, 237, 238, 241, 244, 244, 244, 244, 242, + 239, 238, 241, 240, 242, 242, 243, 245, 246, 242, 242, 241, 242, 246, 249, 249, + 248, 246, 239, 242, 221, 228, 196, 208, 162, 118, 133, 93, 136, 125, 183, 108, + 94, 88, 100, 99, 93, 88, 79, 72, 60, 48, 24, 22, 25, 25, 100, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 23, 33, 34, 22, 14, 25, 48, 71, 70, 82, + 103, 84, 96, 109, 134, 149, 165, 125, 172, 164, 150, 173, 175, 200, 235, 248, + 241, 234, 248, 248, 240, 243, 244, 241, 238, 239, 242, 243, 241, 239, 241, 239, + 237, 234, 232, 232, 234, 235, 230, 233, 235, 236, 235, 231, 230, 233, 233, 235, + 235, 234, 231, 227, 223, 220, 227, 226, 227, 229, 232, 236, 239, 237, 240, 238, + 239, 243, 248, 251, 251, 250, 238, 241, 253, 224, 220, 203, 199, 158, 109, 127, + 124, 131, 65, 111, 97, 115, 96, 91, 87, 84, 83, 74, 59, 43, 29, 25, + 27, 26, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 23, 17, 19, 37, 70, 91, + 80, 65, 103, 101, 111, 91, 86, 103, 87, 94, 135, 182, 151, 178, 152, 169, + 221, 228, 227, 251, 252, 247, 255, 252, 237, 239, 241, 235, 231, 230, 231, 232, + 232, 227, 223, 225, 227, 223, 218, 217, 222, 225, 219, 224, 229, 229, 225, 222, + 221, 223, 222, 224, 224, 223, 220, 214, 209, 206, 210, 210, 212, 216, 222, 227, + 233, 233, 237, 234, 236, 240, 246, 251, 253, 253, 255, 246, 240, 239, 216, 208, + 200, 193, 160, 115, 114, 113, 151, 130, 106, 103, 100, 96, 96, 101, 102, 90, + 68, 46, 35, 31, 28, 26, 21, 98, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 19, 27, + 21, 34, 85, 46, 79, 79, 93, 98, 107, 91, 85, 93, 88, 96, 148, 147, + 160, 156, 190, 203, 234, 238, 246, 253, 255, 252, 246, 239, 237, 238, 232, 235, + 223, 231, 217, 230, 224, 226, 220, 222, 219, 233, 217, 222, 219, 231, 238, 238, + 238, 239, 238, 236, 234, 231, 227, 231, 242, 229, 225, 234, 230, 231, 226, 227, + 225, 224, 224, 226, 230, 231, 232, 230, 239, 250, 251, 247, 251, 255, 255, 255, + 250, 241, 235, 227, 208, 185, 187, 137, 100, 122, 94, 86, 128, 96, 113, 105, + 104, 84, 101, 90, 80, 44, 36, 29, 26, 26, 25, 24, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 18, 21, 21, 22, 28, 61, 56, 68, 99, 102, 94, 95, 93, 111, 139, + 138, 143, 124, 142, 160, 182, 200, 224, 236, 242, 250, 252, 252, 250, 245, 239, + 234, 228, 229, 226, 218, 224, 227, 240, 240, 241, 247, 247, 242, 252, 238, 243, + 240, 252, 251, 251, 253, 252, 255, 255, 254, 252, 246, 247, 242, 240, 239, 243, + 252, 253, 255, 251, 240, 238, 241, 244, 243, 240, 235, 235, 227, 220, 231, 254, + 255, 246, 251, 255, 252, 243, 232, 227, 219, 210, 196, 165, 144, 112, 110, 117, + 97, 112, 90, 92, 91, 96, 91, 90, 86, 82, 68, 54, 42, 35, 33, 30, + 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 175, 18, 21, 22, 46, 65, 95, 108, 73, 102, 103, 96, + 99, 96, 107, 118, 100, 96, 121, 149, 167, 204, 208, 238, 239, 245, 246, 245, + 246, 246, 245, 242, 236, 229, 229, 232, 244, 244, 249, 243, 246, 240, 249, 250, + 244, 254, 240, 249, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 251, + 233, 246, 248, 240, 255, 254, 240, 241, 241, 240, 236, 226, 213, 203, 207, 200, + 214, 238, 243, 232, 240, 255, 253, 255, 255, 255, 246, 234, 218, 204, 201, 185, + 171, 124, 117, 123, 96, 111, 114, 112, 102, 115, 90, 86, 73, 84, 65, 48, + 34, 25, 24, 26, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 16, 18, 30, 14, 25, 41, 93, 111, + 81, 94, 97, 98, 111, 106, 108, 123, 127, 145, 146, 169, 186, 209, 214, 236, + 242, 247, 242, 238, 236, 233, 232, 229, 226, 222, 252, 243, 241, 208, 198, 178, + 192, 193, 232, 236, 234, 244, 233, 245, 244, 255, 250, 249, 248, 247, 247, 246, + 245, 244, 234, 241, 220, 247, 251, 226, 246, 234, 206, 208, 205, 192, 178, 168, + 166, 167, 180, 217, 231, 212, 208, 231, 243, 235, 237, 234, 234, 239, 246, 243, + 229, 213, 213, 194, 176, 163, 121, 108, 127, 100, 104, 97, 88, 98, 92, 93, + 81, 81, 74, 62, 53, 43, 41, 39, 38, 108, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 16, 18, 22, 16, + 27, 35, 98, 86, 84, 79, 99, 107, 131, 132, 128, 128, 125, 141, 170, 185, + 208, 211, 227, 231, 246, 245, 219, 219, 223, 225, 230, 236, 246, 252, 188, 198, + 229, 238, 255, 243, 240, 221, 228, 234, 236, 247, 235, 247, 242, 250, 244, 244, + 243, 241, 241, 241, 240, 239, 233, 241, 219, 243, 246, 222, 241, 228, 215, 223, + 231, 232, 224, 205, 183, 171, 134, 120, 130, 168, 199, 208, 222, 242, 252, 244, + 237, 238, 242, 244, 241, 237, 230, 205, 191, 183, 142, 115, 121, 110, 103, 102, + 108, 95, 106, 102, 101, 86, 74, 69, 62, 51, 35, 26, 22, 19, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, + 16, 18, 17, 37, 75, 73, 118, 83, 92, 91, 108, 105, 124, 133, 140, 146, + 134, 141, 178, 190, 221, 218, 241, 232, 245, 232, 230, 226, 222, 212, 203, 198, + 201, 206, 218, 197, 186, 191, 221, 238, 246, 235, 230, 242, 241, 249, 235, 244, + 237, 241, 239, 239, 238, 236, 239, 240, 242, 243, 242, 245, 227, 236, 238, 225, + 244, 239, 222, 223, 228, 243, 250, 236, 201, 170, 211, 201, 161, 119, 128, 181, + 214, 213, 219, 227, 240, 248, 248, 239, 238, 242, 240, 218, 213, 167, 163, 142, + 77, 126, 121, 129, 142, 108, 108, 91, 97, 81, 89, 89, 85, 73, 56, 40, + 34, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 175, 15, 16, 18, 30, 46, 88, 67, 88, 86, 93, 131, 182, 154, + 142, 133, 137, 151, 149, 165, 187, 204, 223, 231, 237, 233, 226, 209, 157, 156, + 163, 173, 183, 195, 207, 213, 207, 198, 187, 204, 220, 242, 242, 239, 233, 244, + 242, 247, 230, 240, 233, 236, 235, 234, 233, 231, 234, 236, 237, 239, 241, 245, + 238, 235, 234, 238, 245, 248, 255, 249, 231, 228, 237, 242, 239, 232, 199, 193, + 193, 195, 191, 174, 159, 150, 141, 155, 181, 214, 237, 243, 243, 244, 244, 225, + 221, 165, 168, 156, 80, 123, 102, 106, 111, 99, 94, 87, 90, 90, 82, 82, + 78, 68, 53, 40, 33, 28, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 18, 18, 19, 22, 21, 36, 95, 83, 93, 116, + 82, 133, 91, 88, 118, 142, 161, 173, 167, 177, 205, 222, 221, 235, 218, 222, + 197, 183, 167, 163, 170, 182, 195, 205, 210, 211, 218, 231, 230, 241, 224, 234, + 234, 246, 239, 250, 246, 249, 233, 246, 240, 242, 237, 236, 234, 233, 233, 235, + 239, 241, 235, 240, 250, 238, 237, 247, 244, 246, 237, 244, 250, 249, 244, 238, + 236, 235, 255, 249, 231, 219, 226, 229, 196, 155, 159, 147, 149, 182, 223, 245, + 246, 243, 248, 231, 217, 191, 168, 158, 134, 113, 117, 104, 86, 105, 99, 107, + 94, 102, 104, 98, 91, 80, 68, 58, 46, 39, 30, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, 18, 26, 35, 56, 86, + 95, 84, 90, 100, 106, 108, 87, 113, 116, 122, 171, 166, 186, 190, 205, 219, + 224, 214, 202, 197, 188, 175, 205, 210, 219, 225, 227, 230, 234, 239, 246, 246, + 246, 245, 247, 247, 248, 246, 248, 248, 247, 247, 247, 242, 238, 235, 232, 232, + 231, 234, 240, 246, 249, 250, 245, 242, 244, 243, 244, 243, 243, 242, 247, 248, + 248, 247, 246, 247, 247, 247, 244, 247, 248, 244, 244, 246, 242, 234, 179, 179, + 165, 147, 160, 197, 229, 240, 242, 233, 239, 216, 178, 175, 129, 122, 109, 89, + 101, 97, 117, 127, 122, 96, 99, 85, 96, 98, 120, 92, 71, 40, 38, 105, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 31, 25, + 27, 34, 62, 83, 87, 86, 102, 110, 96, 80, 105, 130, 113, 165, 169, 154, + 212, 214, 236, 225, 221, 216, 193, 179, 212, 255, 245, 248, 254, 254, 251, 248, + 251, 252, 245, 244, 246, 247, 248, 250, 251, 252, 249, 248, 249, 248, 245, 242, + 239, 236, 233, 233, 233, 236, 242, 247, 252, 249, 244, 240, 242, 242, 241, 241, + 241, 241, 241, 242, 241, 241, 240, 240, 241, 241, 242, 245, 246, 244, 248, 252, + 250, 246, 255, 242, 214, 172, 133, 131, 173, 223, 255, 240, 239, 220, 205, 166, + 191, 122, 135, 94, 100, 85, 102, 89, 119, 123, 132, 101, 80, 109, 91, 73, + 49, 65, 41, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 18, 18, 21, 36, 52, 40, 70, 86, 88, 97, 102, 96, 93, 121, 133, + 133, 176, 142, 153, 199, 204, 199, 204, 192, 166, 174, 216, 247, 248, 245, 246, + 248, 246, 241, 238, 237, 236, 236, 235, 237, 237, 238, 240, 241, 244, 248, 249, + 245, 242, 240, 237, 236, 236, 235, 237, 237, 238, 240, 240, 243, 243, 242, 241, + 241, 241, 240, 241, 242, 242, 240, 241, 241, 241, 241, 241, 243, 241, 240, 241, + 242, 242, 246, 251, 252, 251, 252, 255, 255, 248, 212, 169, 145, 145, 194, 251, + 217, 228, 203, 204, 180, 159, 101, 192, 133, 75, 73, 123, 89, 95, 92, 107, + 98, 102, 93, 107, 62, 18, 42, 34, 105, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 177, 18, 19, 30, 53, 76, 43, 71, 84, 84, 89, 95, + 102, 115, 136, 137, 182, 166, 147, 195, 179, 192, 198, 184, 189, 219, 254, 255, + 255, 254, 241, 239, 241, 240, 235, 232, 232, 233, 230, 230, 230, 229, 231, 231, + 232, 235, 245, 245, 240, 237, 234, 233, 235, 238, 241, 242, 243, 241, 239, 239, + 237, 237, 243, 243, 241, 240, 239, 240, 241, 242, 240, 240, 241, 241, 242, 242, + 245, 243, 239, 237, 238, 237, 238, 240, 242, 244, 238, 250, 255, 254, 254, 241, + 196, 155, 141, 190, 239, 211, 218, 205, 172, 178, 137, 118, 136, 125, 98, 87, + 121, 89, 100, 98, 112, 97, 99, 75, 81, 75, 47, 38, 31, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 24, 28, 28, 30, 45, 61, 80, 85, + 81, 84, 99, 105, 103, 109, 134, 135, 184, 150, 176, 200, 158, 172, 168, 182, + 215, 248, 255, 250, 243, 241, 246, 245, 245, 244, 242, 241, 240, 241, 238, 238, + 237, 237, 238, 238, 239, 240, 244, 242, 238, 234, 231, 232, 237, 242, 248, 250, + 250, 246, 242, 238, 236, 236, 243, 245, 242, 240, 239, 239, 237, 237, 238, 238, + 240, 241, 242, 242, 245, 243, 244, 239, 239, 238, 237, 236, 239, 242, 245, 250, + 246, 234, 237, 247, 239, 226, 188, 133, 201, 231, 210, 198, 197, 176, 185, 124, + 87, 166, 96, 85, 90, 113, 112, 90, 84, 70, 94, 86, 89, 72, 55, 43, + 32, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 20, 27, 36, + 53, 70, 84, 94, 97, 101, 111, 113, 116, 128, 139, 149, 154, 152, 186, 146, + 141, 155, 200, 238, 255, 252, 244, 254, 255, 247, 250, 247, 246, 246, 244, 242, + 242, 241, 245, 243, 245, 245, 245, 245, 245, 245, 245, 242, 238, 235, 233, 235, + 241, 248, 251, 254, 253, 248, 242, 237, 234, 237, 242, 245, 244, 241, 240, 239, + 236, 235, 238, 238, 240, 241, 241, 243, 244, 243, 242, 237, 238, 240, 239, 237, + 239, 245, 240, 237, 239, 248, 248, 240, 235, 244, 244, 167, 116, 212, 212, 210, + 207, 197, 175, 195, 130, 93, 144, 104, 95, 105, 104, 119, 103, 110, 121, 156, + 117, 67, 58, 46, 35, 30, 255, 255, 255, 255, 255, 255, 255, 255, 255, 22, + 19, 26, 41, 61, 84, 103, 75, 93, 106, 115, 122, 123, 139, 168, 166, 172, + 165, 175, 161, 127, 153, 184, 255, 242, 244, 255, 252, 234, 237, 255, 255, 255, + 253, 253, 254, 252, 252, 251, 249, 247, 249, 249, 249, 249, 250, 248, 246, 242, + 239, 235, 233, 234, 240, 249, 249, 253, 250, 245, 237, 234, 233, 233, 241, 241, + 244, 244, 242, 241, 239, 236, 238, 238, 239, 241, 242, 245, 245, 244, 238, 234, + 237, 241, 238, 234, 236, 242, 245, 234, 231, 238, 243, 240, 240, 246, 249, 221, + 147, 135, 231, 205, 212, 214, 178, 173, 130, 140, 125, 123, 134, 107, 94, 97, + 96, 119, 91, 81, 80, 110, 60, 49, 40, 35, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 14, 19, 33, 49, 62, 73, 84, 92, 94, 95, 109, 133, 145, + 157, 180, 162, 158, 183, 171, 108, 134, 164, 216, 241, 253, 255, 244, 235, 238, + 241, 241, 245, 245, 244, 245, 248, 250, 249, 249, 248, 249, 249, 248, 249, 249, + 251, 250, 244, 241, 238, 236, 235, 235, 241, 250, 246, 251, 248, 242, 236, 235, + 235, 233, 242, 242, 245, 247, 246, 244, 241, 239, 240, 240, 240, 242, 244, 245, + 247, 246, 242, 239, 242, 245, 242, 234, 235, 241, 232, 245, 248, 235, 231, 242, + 248, 247, 235, 255, 217, 142, 164, 232, 202, 205, 202, 194, 157, 124, 119, 92, + 124, 82, 136, 120, 110, 85, 102, 97, 99, 78, 58, 49, 43, 41, 109, 255, + 255, 255, 255, 255, 255, 255, 255, 28, 20, 32, 54, 81, 82, 101, 91, 101, + 140, 103, 117, 151, 165, 157, 147, 187, 153, 170, 106, 166, 216, 243, 241, 249, + 251, 240, 236, 242, 240, 232, 235, 240, 239, 237, 249, 245, 243, 246, 244, 240, + 237, 238, 242, 246, 247, 247, 246, 240, 233, 234, 240, 243, 242, 243, 240, 246, + 246, 244, 240, 237, 228, 218, 231, 238, 248, 250, 242, 238, 238, 244, 245, 240, + 238, 240, 244, 249, 245, 242, 253, 234, 255, 248, 239, 247, 236, 243, 241, 236, + 235, 238, 239, 239, 241, 248, 239, 252, 242, 203, 143, 185, 216, 212, 210, 192, + 175, 121, 138, 126, 106, 126, 94, 93, 106, 102, 118, 118, 95, 114, 87, 73, + 53, 39, 32, 255, 255, 255, 255, 255, 255, 255, 32, 27, 28, 10, 84, 99, + 110, 91, 93, 96, 107, 110, 145, 163, 179, 151, 162, 164, 194, 126, 161, 180, + 254, 252, 255, 242, 238, 246, 247, 238, 233, 238, 248, 247, 239, 240, 255, 255, + 254, 253, 245, 240, 236, 234, 237, 242, 244, 244, 242, 239, 237, 244, 252, 251, + 241, 233, 235, 247, 254, 253, 245, 241, 242, 237, 227, 232, 246, 249, 242, 235, + 237, 240, 237, 244, 251, 244, 235, 233, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 246, 236, 235, 231, 231, 241, 251, 251, 243, 248, 255, 246, 227, 184, 160, + 207, 214, 197, 214, 169, 129, 176, 160, 164, 81, 128, 98, 112, 71, 133, 128, + 127, 100, 131, 78, 37, 34, 33, 255, 255, 255, 255, 255, 255, 255, 7, 27, + 11, 51, 86, 146, 113, 89, 100, 110, 104, 126, 153, 149, 175, 155, 167, 165, + 181, 119, 172, 223, 253, 254, 255, 245, 243, 247, 243, 234, 240, 255, 248, 251, + 240, 234, 233, 234, 232, 243, 241, 239, 236, 238, 242, 248, 252, 253, 247, 240, + 238, 244, 255, 253, 240, 227, 236, 244, 252, 251, 247, 247, 252, 249, 233, 236, + 249, 252, 245, 239, 238, 241, 249, 246, 242, 237, 236, 237, 242, 246, 251, 255, + 248, 255, 255, 255, 255, 252, 255, 254, 245, 231, 233, 248, 255, 254, 245, 249, + 244, 253, 234, 149, 196, 225, 214, 215, 187, 172, 120, 149, 147, 169, 87, 91, + 116, 110, 107, 116, 124, 131, 117, 96, 65, 44, 40, 112, 255, 255, 255, 255, + 255, 176, 25, 22, 25, 23, 71, 104, 129, 123, 104, 120, 115, 125, 142, 143, + 160, 158, 180, 181, 143, 147, 175, 255, 239, 248, 253, 251, 241, 229, 234, 251, + 255, 251, 230, 235, 219, 219, 215, 222, 216, 227, 222, 222, 228, 234, 243, 250, + 255, 255, 255, 246, 236, 238, 247, 247, 235, 223, 227, 226, 226, 230, 241, 251, + 255, 251, 242, 243, 252, 252, 244, 240, 241, 245, 255, 245, 232, 230, 235, 238, + 231, 225, 236, 237, 218, 228, 233, 223, 238, 244, 253, 255, 255, 247, 235, 236, + 252, 255, 242, 239, 242, 255, 255, 168, 176, 223, 197, 215, 210, 183, 105, 185, + 149, 139, 141, 103, 91, 131, 117, 125, 107, 109, 123, 116, 83, 33, 16, 35, + 255, 255, 255, 255, 255, 20, 14, 17, 47, 64, 89, 84, 96, 95, 102, 110, + 117, 116, 146, 176, 157, 159, 197, 180, 136, 165, 224, 252, 255, 252, 255, 246, + 228, 223, 242, 255, 248, 224, 212, 220, 211, 232, 235, 250, 230, 229, 210, 213, + 220, 229, 237, 244, 249, 251, 255, 249, 240, 234, 236, 234, 224, 215, 207, 206, + 206, 210, 221, 232, 247, 250, 243, 242, 247, 245, 240, 238, 245, 250, 247, 243, + 237, 231, 226, 221, 218, 215, 208, 209, 211, 195, 201, 214, 208, 229, 223, 228, + 243, 253, 248, 239, 246, 254, 248, 241, 247, 255, 252, 206, 154, 200, 192, 210, + 205, 173, 153, 147, 181, 103, 193, 122, 102, 107, 139, 129, 143, 124, 114, 98, + 82, 68, 48, 29, 255, 255, 255, 255, 255, 20, 35, 29, 26, 76, 65, 92, + 90, 110, 101, 124, 142, 136, 155, 188, 158, 176, 191, 159, 125, 182, 245, 244, + 255, 255, 249, 237, 234, 237, 236, 225, 220, 225, 227, 254, 251, 255, 224, 217, + 188, 199, 224, 225, 228, 231, 233, 236, 240, 242, 252, 248, 243, 235, 229, 225, + 220, 216, 220, 223, 227, 221, 215, 215, 231, 242, 241, 240, 243, 241, 239, 241, + 250, 255, 244, 236, 229, 226, 227, 227, 219, 211, 194, 211, 223, 190, 206, 240, + 225, 240, 228, 222, 222, 230, 236, 238, 248, 251, 242, 237, 252, 252, 248, 244, + 163, 184, 209, 197, 210, 180, 137, 109, 158, 165, 139, 140, 125, 123, 114, 126, + 156, 160, 144, 110, 67, 36, 24, 28, 255, 255, 255, 255, 255, 18, 21, 9, + 56, 73, 110, 94, 113, 96, 113, 146, 147, 156, 161, 172, 161, 195, 182, 142, + 130, 203, 235, 249, 245, 255, 238, 233, 231, 228, 218, 213, 229, 249, 174, 207, + 211, 232, 203, 221, 219, 252, 251, 247, 241, 235, 229, 228, 232, 239, 241, 245, + 243, 233, 226, 228, 237, 243, 249, 245, 245, 240, 233, 226, 229, 233, 239, 242, + 243, 240, 238, 240, 245, 252, 248, 234, 224, 227, 241, 245, 239, 227, 231, 235, + 217, 202, 224, 236, 232, 249, 232, 239, 231, 215, 210, 227, 247, 244, 230, 231, + 250, 242, 255, 255, 190, 171, 195, 198, 224, 187, 133, 164, 139, 143, 141, 161, + 110, 132, 104, 137, 125, 124, 118, 111, 88, 58, 43, 44, 106, 255, 255, 255, + 255, 16, 30, 33, 51, 81, 78, 107, 118, 115, 130, 148, 107, 142, 164, 165, + 170, 197, 197, 137, 168, 205, 245, 249, 247, 255, 254, 239, 211, 193, 211, 243, + 255, 250, 244, 236, 194, 205, 189, 215, 196, 208, 255, 255, 248, 236, 229, 229, + 236, 247, 241, 245, 240, 225, 216, 227, 254, 255, 254, 239, 235, 242, 254, 253, + 238, 224, 230, 235, 238, 237, 236, 235, 238, 242, 240, 242, 242, 238, 234, 236, + 247, 255, 255, 255, 198, 211, 230, 192, 198, 228, 191, 232, 249, 220, 201, 219, + 243, 235, 233, 243, 253, 237, 255, 239, 201, 149, 197, 199, 211, 216, 184, 119, + 139, 139, 163, 155, 108, 109, 127, 121, 131, 136, 123, 105, 95, 89, 64, 31, + 23, 255, 255, 255, 176, 20, 18, 17, 30, 50, 112, 108, 115, 139, 124, 114, + 115, 136, 167, 167, 164, 200, 177, 151, 138, 216, 231, 240, 251, 251, 255, 250, + 220, 202, 221, 162, 242, 255, 255, 192, 125, 124, 94, 118, 116, 176, 174, 255, + 250, 248, 255, 230, 223, 223, 252, 220, 194, 213, 253, 255, 255, 255, 252, 243, + 237, 239, 246, 254, 255, 255, 234, 228, 220, 255, 242, 246, 255, 251, 255, 245, + 233, 229, 241, 255, 255, 255, 241, 203, 199, 155, 148, 189, 201, 228, 255, 197, + 183, 237, 220, 202, 219, 251, 238, 247, 255, 253, 250, 239, 202, 160, 170, 219, + 205, 220, 188, 147, 175, 140, 167, 151, 114, 79, 132, 118, 155, 172, 206, 173, + 135, 75, 56, 32, 35, 255, 255, 255, 19, 19, 32, 38, 68, 89, 109, 117, + 140, 153, 132, 123, 150, 127, 183, 171, 193, 185, 170, 148, 143, 215, 228, 237, + 250, 252, 255, 248, 199, 227, 174, 229, 255, 255, 245, 151, 139, 111, 134, 234, + 147, 164, 146, 249, 255, 246, 247, 234, 246, 240, 218, 210, 204, 224, 255, 255, + 255, 255, 244, 239, 237, 237, 242, 246, 250, 254, 247, 227, 224, 241, 242, 241, + 255, 255, 229, 235, 240, 239, 238, 246, 254, 255, 218, 180, 141, 132, 131, 141, + 170, 178, 255, 255, 236, 183, 232, 218, 228, 231, 250, 251, 253, 247, 244, 233, + 199, 162, 160, 213, 208, 226, 196, 150, 164, 129, 162, 125, 95, 94, 99, 115, + 146, 124, 110, 107, 92, 73, 50, 45, 36, 255, 255, 255, 18, 18, 23, 6, + 30, 83, 106, 147, 159, 139, 128, 132, 144, 153, 169, 187, 196, 184, 161, 148, + 161, 224, 235, 241, 251, 255, 255, 245, 206, 198, 214, 255, 255, 255, 231, 138, + 134, 95, 131, 248, 143, 139, 161, 223, 229, 229, 233, 230, 238, 217, 193, 213, + 230, 242, 255, 254, 246, 247, 242, 241, 240, 241, 244, 244, 244, 246, 255, 233, + 234, 216, 235, 231, 243, 246, 238, 233, 226, 226, 235, 246, 252, 251, 186, 186, + 162, 211, 207, 155, 172, 147, 246, 255, 255, 254, 190, 216, 231, 236, 245, 245, + 250, 246, 249, 245, 219, 189, 159, 205, 209, 231, 209, 168, 171, 142, 151, 167, + 115, 115, 106, 130, 135, 150, 144, 146, 122, 108, 63, 55, 25, 255, 255, 255, + 17, 17, 19, 22, 47, 103, 107, 132, 138, 144, 137, 138, 138, 179, 161, 177, + 183, 183, 156, 152, 183, 234, 242, 245, 254, 255, 236, 211, 176, 191, 210, 242, + 202, 222, 194, 163, 152, 166, 195, 255, 242, 250, 232, 230, 222, 241, 242, 227, + 231, 213, 197, 230, 249, 249, 250, 244, 233, 233, 240, 241, 244, 245, 246, 243, + 238, 240, 255, 243, 245, 211, 225, 238, 223, 223, 248, 234, 223, 223, 232, 238, + 238, 232, 156, 154, 123, 158, 149, 116, 171, 175, 240, 255, 255, 248, 245, 187, + 192, 243, 233, 240, 251, 252, 253, 252, 235, 215, 169, 206, 213, 231, 225, 194, + 186, 174, 123, 158, 97, 85, 86, 114, 118, 154, 155, 194, 208, 178, 98, 52, + 29, 255, 255, 255, 18, 18, 23, 39, 54, 110, 130, 134, 122, 154, 151, 149, + 165, 167, 172, 153, 186, 164, 155, 159, 204, 240, 246, 246, 251, 248, 255, 171, + 226, 205, 243, 211, 231, 207, 230, 242, 231, 255, 255, 248, 255, 255, 255, 246, + 237, 244, 231, 219, 226, 218, 214, 242, 252, 241, 236, 237, 234, 235, 240, 243, + 247, 248, 246, 242, 234, 234, 240, 252, 248, 216, 213, 250, 225, 222, 216, 227, + 240, 247, 241, 236, 239, 237, 250, 250, 245, 251, 221, 184, 186, 171, 164, 196, + 198, 187, 228, 216, 215, 234, 228, 241, 255, 255, 251, 245, 231, 220, 177, 201, + 212, 227, 232, 208, 188, 185, 158, 137, 101, 96, 99, 137, 171, 155, 190, 159, + 122, 75, 64, 47, 39, 255, 255, 255, 19, 19, 24, 37, 44, 93, 142, 144, + 125, 151, 130, 166, 158, 158, 155, 171, 189, 153, 159, 165, 220, 241, 245, 243, + 244, 238, 220, 201, 209, 234, 215, 247, 224, 233, 230, 240, 250, 255, 255, 255, + 255, 250, 246, 237, 223, 211, 214, 229, 229, 202, 240, 255, 252, 234, 229, 233, + 233, 236, 241, 244, 247, 248, 247, 243, 235, 233, 236, 254, 246, 231, 211, 250, + 243, 244, 216, 220, 230, 239, 246, 251, 255, 255, 255, 243, 253, 255, 252, 255, + 244, 227, 234, 234, 224, 244, 205, 237, 232, 220, 224, 241, 255, 255, 254, 247, + 238, 231, 180, 192, 210, 220, 232, 211, 171, 179, 143, 131, 103, 86, 109, 121, + 157, 155, 140, 146, 156, 111, 83, 38, 34, 255, 255, 255, 20, 21, 29, 57, + 91, 102, 114, 111, 128, 147, 119, 176, 133, 166, 153, 198, 184, 150, 166, 173, + 235, 243, 247, 243, 239, 228, 224, 238, 240, 237, 255, 255, 253, 255, 255, 255, + 255, 255, 255, 255, 255, 249, 234, 228, 220, 212, 231, 255, 242, 214, 255, 255, + 255, 239, 232, 232, 230, 233, 242, 243, 245, 247, 246, 245, 240, 238, 243, 247, + 246, 248, 225, 227, 253, 255, 246, 232, 220, 225, 238, 250, 255, 255, 254, 240, + 248, 255, 255, 255, 255, 238, 235, 245, 249, 221, 255, 218, 222, 247, 226, 241, + 255, 255, 255, 254, 246, 239, 192, 191, 206, 210, 229, 213, 168, 184, 132, 151, + 113, 83, 110, 98, 122, 161, 136, 138, 134, 107, 79, 53, 40, 255, 255, 255, + 21, 23, 25, 32, 73, 75, 92, 115, 149, 124, 144, 175, 143, 161, 193, 187, + 181, 144, 174, 181, 245, 247, 251, 247, 241, 227, 239, 223, 238, 255, 255, 255, + 255, 253, 255, 255, 255, 255, 255, 229, 233, 221, 213, 219, 229, 233, 242, 241, + 231, 239, 254, 255, 255, 247, 245, 243, 240, 243, 244, 243, 242, 245, 248, 248, + 249, 247, 254, 240, 253, 255, 242, 202, 250, 251, 252, 249, 245, 237, 226, 220, + 231, 240, 245, 242, 244, 255, 248, 234, 242, 229, 234, 227, 235, 252, 234, 248, + 242, 218, 235, 246, 253, 255, 254, 250, 240, 228, 208, 199, 206, 204, 227, 221, + 178, 205, 165, 138, 104, 96, 85, 92, 127, 137, 173, 179, 158, 140, 94, 76, + 45, 255, 255, 255, 177, 22, 26, 34, 21, 101, 137, 147, 122, 179, 137, 173, + 128, 177, 181, 221, 147, 178, 154, 218, 255, 249, 237, 233, 228, 227, 221, 232, + 247, 255, 255, 255, 255, 255, 255, 255, 245, 229, 218, 218, 224, 228, 222, 234, + 244, 250, 255, 210, 204, 255, 255, 250, 255, 255, 223, 236, 237, 244, 255, 232, + 249, 239, 251, 251, 255, 236, 252, 255, 255, 255, 255, 231, 218, 240, 255, 255, + 251, 242, 231, 222, 233, 213, 209, 218, 234, 246, 249, 248, 244, 241, 240, 241, + 242, 244, 245, 245, 244, 245, 230, 235, 235, 236, 246, 255, 247, 230, 210, 202, + 198, 211, 233, 238, 174, 210, 214, 152, 113, 94, 80, 112, 110, 134, 147, 126, + 130, 122, 94, 90, 29, 255, 255, 255, 255, 22, 6, 56, 86, 103, 121, 128, + 150, 196, 145, 169, 158, 174, 185, 189, 157, 187, 160, 216, 246, 232, 220, 217, + 219, 224, 233, 244, 255, 255, 255, 253, 246, 248, 232, 233, 227, 221, 216, 218, + 224, 228, 241, 243, 255, 255, 240, 211, 227, 253, 252, 255, 255, 243, 194, 170, + 187, 255, 245, 230, 239, 232, 252, 255, 193, 199, 198, 242, 255, 255, 255, 242, + 217, 206, 248, 255, 255, 255, 241, 226, 232, 218, 214, 220, 224, 228, 233, 239, + 247, 252, 249, 250, 250, 250, 249, 246, 242, 242, 239, 238, 230, 227, 239, 251, + 247, 233, 226, 225, 210, 196, 219, 244, 190, 204, 209, 157, 125, 91, 82, 110, + 117, 131, 173, 173, 138, 135, 100, 64, 61, 255, 255, 255, 255, 22, 33, 22, + 57, 84, 137, 120, 142, 153, 140, 136, 183, 163, 226, 172, 197, 194, 181, 225, + 241, 223, 212, 214, 222, 231, 244, 250, 254, 250, 241, 229, 216, 216, 212, 219, + 223, 226, 227, 231, 234, 237, 255, 254, 255, 255, 206, 218, 250, 250, 255, 236, + 192, 193, 196, 160, 139, 234, 243, 239, 238, 232, 255, 247, 127, 150, 184, 192, + 206, 239, 255, 255, 230, 221, 229, 255, 255, 255, 252, 237, 235, 229, 237, 238, + 230, 224, 221, 225, 232, 239, 248, 249, 251, 253, 253, 250, 248, 246, 249, 241, + 227, 218, 227, 242, 244, 238, 212, 214, 210, 202, 221, 234, 178, 170, 212, 173, + 140, 99, 83, 107, 118, 126, 133, 129, 133, 112, 82, 44, 28, 255, 255, 255, + 255, 22, 18, 45, 100, 94, 125, 136, 163, 129, 165, 159, 141, 186, 177, 184, + 169, 169, 202, 231, 236, 222, 219, 226, 234, 243, 249, 248, 243, 233, 220, 207, + 200, 198, 220, 228, 235, 241, 243, 244, 245, 247, 255, 255, 255, 251, 197, 225, + 250, 249, 246, 238, 196, 186, 185, 162, 151, 245, 248, 246, 239, 236, 253, 221, + 117, 123, 177, 162, 176, 226, 255, 255, 247, 250, 211, 235, 255, 255, 255, 247, + 242, 242, 248, 253, 243, 235, 227, 221, 220, 221, 231, 235, 237, 242, 245, 248, + 250, 252, 251, 244, 230, 218, 220, 231, 241, 241, 247, 219, 205, 199, 207, 215, + 194, 204, 189, 160, 124, 118, 91, 122, 135, 157, 129, 153, 131, 135, 117, 44, + 61, 255, 255, 255, 255, 22, 42, 9, 47, 113, 135, 120, 132, 138, 197, 166, + 157, 161, 186, 167, 196, 179, 206, 223, 223, 219, 229, 239, 242, 244, 247, 242, + 233, 222, 215, 210, 213, 215, 235, 241, 243, 245, 244, 244, 247, 249, 253, 255, + 243, 239, 216, 234, 236, 251, 226, 225, 194, 161, 140, 159, 178, 241, 250, 244, + 242, 242, 245, 198, 166, 139, 146, 175, 211, 235, 242, 250, 251, 245, 211, 224, + 244, 252, 253, 254, 244, 248, 246, 252, 248, 244, 240, 235, 230, 229, 230, 231, + 231, 233, 237, 240, 244, 247, 245, 244, 240, 228, 222, 226, 236, 245, 226, 214, + 226, 228, 223, 211, 192, 179, 190, 159, 109, 137, 93, 120, 124, 160, 172, 131, + 157, 106, 91, 72, 25, 255, 255, 255, 255, 177, 18, 44, 86, 121, 106, 130, + 159, 180, 159, 169, 156, 188, 181, 183, 203, 197, 204, 216, 219, 224, 241, 249, + 245, 245, 239, 236, 230, 223, 222, 228, 237, 242, 248, 248, 246, 246, 242, 241, + 245, 251, 246, 255, 238, 231, 237, 240, 231, 253, 255, 248, 215, 192, 190, 238, + 236, 236, 254, 246, 253, 252, 243, 207, 234, 197, 172, 182, 213, 242, 243, 240, + 246, 247, 219, 224, 245, 248, 250, 255, 243, 249, 251, 251, 247, 245, 243, 243, + 242, 244, 244, 244, 241, 237, 233, 234, 236, 237, 240, 246, 249, 242, 232, 229, + 237, 246, 239, 231, 234, 199, 183, 193, 207, 175, 199, 161, 104, 140, 99, 108, + 112, 143, 179, 160, 144, 123, 101, 65, 48, 255, 255, 255, 255, 255, 41, 17, + 32, 99, 122, 132, 143, 170, 135, 157, 176, 167, 196, 151, 192, 167, 205, 219, + 227, 236, 253, 254, 248, 249, 236, 237, 237, 238, 240, 244, 252, 253, 253, 251, + 247, 243, 238, 237, 240, 246, 244, 255, 247, 227, 240, 240, 241, 250, 255, 255, + 244, 233, 225, 250, 235, 243, 255, 255, 255, 255, 238, 235, 255, 243, 233, 199, + 207, 247, 252, 240, 244, 251, 219, 224, 251, 252, 250, 253, 238, 245, 247, 242, + 237, 236, 237, 241, 242, 246, 251, 252, 250, 245, 238, 234, 232, 232, 240, 246, + 252, 250, 245, 241, 243, 246, 236, 235, 251, 225, 204, 201, 210, 154, 185, 146, + 101, 123, 115, 110, 132, 144, 150, 136, 148, 130, 94, 74, 28, 255, 255, 255, + 255, 255, 24, 35, 66, 99, 121, 134, 154, 171, 143, 179, 159, 177, 184, 187, + 212, 204, 204, 223, 233, 243, 253, 249, 244, 247, 238, 242, 246, 250, 250, 250, + 250, 249, 252, 251, 246, 240, 232, 229, 231, 235, 239, 246, 255, 224, 232, 242, + 255, 255, 255, 255, 242, 236, 241, 250, 224, 255, 244, 255, 255, 246, 222, 252, + 243, 255, 245, 235, 246, 255, 250, 250, 252, 239, 214, 222, 255, 255, 249, 250, + 235, 245, 234, 230, 229, 233, 238, 241, 243, 244, 243, 247, 247, 247, 243, 240, + 236, 236, 244, 246, 247, 250, 249, 244, 240, 240, 246, 219, 231, 218, 199, 183, + 201, 155, 205, 160, 123, 113, 124, 99, 129, 115, 133, 159, 132, 145, 94, 51, + 44, 255, 255, 255, 255, 255, 178, 28, 66, 143, 91, 186, 173, 157, 146, 176, + 148, 190, 161, 206, 202, 214, 207, 232, 250, 248, 244, 244, 242, 236, 239, 239, + 241, 244, 246, 247, 247, 249, 251, 250, 247, 242, 236, 233, 231, 231, 235, 244, + 243, 232, 228, 241, 255, 255, 255, 255, 245, 242, 242, 240, 237, 238, 245, 247, + 246, 241, 240, 243, 243, 243, 241, 242, 248, 252, 255, 254, 252, 248, 205, 231, + 252, 254, 248, 249, 247, 240, 240, 240, 240, 239, 240, 240, 243, 245, 241, 239, + 239, 238, 238, 240, 237, 238, 243, 243, 243, 247, 250, 244, 232, 224, 231, 240, + 216, 230, 219, 195, 195, 149, 224, 142, 133, 121, 121, 112, 122, 118, 136, 146, + 132, 165, 92, 96, 48, 255, 255, 255, 255, 255, 255, 15, 95, 58, 147, 152, + 141, 150, 150, 159, 167, 190, 186, 206, 224, 203, 212, 234, 248, 246, 241, 241, + 238, 231, 239, 237, 239, 241, 241, 241, 240, 243, 250, 250, 246, 241, 236, 232, + 229, 229, 230, 242, 248, 238, 229, 231, 239, 246, 244, 234, 232, 238, 240, 239, + 239, 241, 243, 244, 245, 243, 243, 246, 246, 242, 229, 228, 233, 241, 249, 250, + 244, 236, 226, 244, 255, 252, 246, 245, 242, 236, 242, 243, 242, 242, 240, 240, + 241, 240, 238, 236, 236, 237, 240, 240, 239, 239, 240, 240, 239, 243, 245, 243, + 237, 230, 227, 245, 230, 234, 213, 186, 189, 150, 211, 126, 148, 110, 115, 133, + 117, 151, 143, 152, 126, 124, 51, 49, 25, 255, 255, 255, 255, 255, 255, 175, + 74, 106, 98, 150, 164, 165, 148, 146, 176, 185, 210, 206, 233, 193, 222, 237, + 247, 244, 238, 240, 239, 234, 243, 243, 243, 244, 244, 243, 241, 242, 248, 248, + 244, 240, 236, 233, 232, 234, 234, 246, 250, 240, 226, 218, 219, 219, 225, 225, + 233, 242, 246, 245, 246, 248, 244, 244, 243, 242, 247, 250, 248, 242, 235, 230, + 227, 227, 232, 230, 218, 206, 241, 249, 255, 248, 243, 241, 238, 232, 242, 243, + 242, 242, 241, 241, 241, 242, 244, 242, 241, 240, 243, 244, 242, 241, 241, 239, + 238, 243, 246, 247, 243, 241, 228, 249, 239, 231, 202, 179, 188, 159, 168, 150, + 137, 130, 136, 116, 126, 137, 143, 144, 117, 109, 79, 71, 42, 255, 255, 255, + 255, 255, 255, 255, 51, 89, 130, 133, 193, 167, 141, 158, 163, 180, 212, 209, + 208, 188, 233, 242, 244, 238, 235, 238, 241, 239, 247, 246, 247, 246, 246, 242, + 238, 239, 245, 245, 243, 240, 238, 239, 241, 243, 245, 246, 243, 236, 228, 224, + 225, 224, 223, 227, 238, 247, 247, 245, 245, 247, 244, 243, 242, 242, 247, 250, + 246, 239, 241, 237, 230, 226, 223, 221, 214, 208, 239, 244, 246, 243, 242, 242, + 237, 233, 241, 243, 242, 242, 242, 242, 242, 242, 245, 244, 244, 244, 246, 244, + 243, 243, 246, 244, 242, 241, 245, 246, 244, 243, 229, 244, 234, 222, 198, 183, + 188, 161, 138, 164, 125, 134, 142, 105, 125, 123, 133, 134, 114, 98, 101, 81, + 46, 255, 255, 255, 255, 255, 255, 255, 46, 81, 150, 143, 200, 105, 144, 187, + 146, 185, 201, 213, 175, 202, 244, 244, 240, 234, 231, 238, 243, 246, 249, 247, + 247, 244, 243, 239, 236, 235, 240, 241, 242, 242, 242, 246, 250, 254, 255, 249, + 241, 235, 233, 234, 234, 231, 223, 229, 239, 244, 243, 244, 245, 246, 245, 244, + 242, 242, 246, 249, 243, 237, 240, 242, 238, 234, 232, 234, 237, 240, 234, 238, + 241, 241, 242, 242, 238, 236, 241, 242, 242, 242, 241, 241, 241, 242, 244, 243, + 243, 243, 245, 244, 244, 242, 248, 246, 243, 240, 242, 243, 243, 246, 233, 233, + 225, 221, 208, 196, 182, 148, 140, 144, 135, 105, 117, 130, 111, 147, 152, 159, + 138, 98, 82, 52, 34, 255, 255, 255, 255, 255, 255, 255, 255, 139, 113, 189, + 175, 96, 158, 202, 145, 191, 191, 201, 162, 224, 246, 243, 237, 232, 233, 240, + 246, 248, 249, 246, 244, 243, 240, 237, 233, 233, 236, 238, 240, 243, 248, 250, + 255, 255, 255, 250, 241, 240, 240, 235, 230, 224, 224, 231, 241, 244, 245, 250, + 254, 254, 246, 246, 244, 243, 245, 247, 245, 241, 244, 247, 246, 240, 234, 236, + 243, 248, 239, 239, 242, 243, 241, 239, 236, 236, 240, 241, 241, 241, 241, 241, + 241, 241, 243, 242, 241, 243, 246, 244, 242, 241, 245, 244, 240, 239, 240, 243, + 245, 249, 239, 224, 220, 225, 220, 203, 174, 140, 133, 150, 133, 110, 114, 133, + 119, 141, 159, 161, 142, 105, 80, 57, 115, 255, 255, 255, 255, 255, 255, 255, + 255, 99, 153, 172, 132, 154, 170, 181, 155, 190, 182, 168, 177, 234, 243, 238, + 236, 236, 240, 244, 247, 246, 250, 246, 242, 239, 237, 235, 235, 234, 233, 235, + 241, 245, 249, 252, 255, 255, 250, 246, 240, 239, 235, 229, 230, 229, 233, 238, + 245, 248, 249, 254, 255, 252, 241, 244, 243, 241, 241, 245, 245, 245, 251, 253, + 249, 242, 236, 234, 235, 236, 242, 241, 241, 241, 238, 236, 236, 239, 240, 241, + 240, 240, 240, 240, 239, 239, 241, 241, 240, 242, 245, 245, 244, 242, 243, 243, + 241, 240, 241, 243, 248, 253, 251, 221, 216, 220, 214, 197, 178, 162, 116, 156, + 131, 125, 117, 129, 131, 131, 127, 128, 118, 101, 70, 61, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 78, 141, 130, 141, 153, 176, 150, 164, 181, 175, 137, + 193, 232, 238, 235, 234, 239, 244, 245, 245, 241, 249, 244, 239, 236, 236, 235, + 236, 236, 232, 235, 242, 246, 250, 254, 255, 255, 244, 240, 236, 232, 226, 223, + 233, 241, 238, 243, 247, 245, 245, 247, 245, 239, 236, 239, 240, 237, 237, 242, + 245, 247, 251, 250, 248, 245, 244, 242, 237, 233, 241, 240, 239, 237, 233, 234, + 238, 244, 242, 240, 240, 240, 240, 240, 240, 238, 241, 240, 241, 242, 244, 245, + 243, 243, 243, 244, 241, 239, 240, 242, 246, 251, 255, 223, 211, 211, 199, 189, + 187, 195, 118, 123, 147, 106, 92, 154, 124, 163, 122, 132, 130, 107, 44, 40, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 151, 148, 169, 188, 195, 144, + 145, 170, 155, 154, 200, 237, 242, 229, 244, 246, 240, 245, 243, 245, 247, 243, + 241, 238, 236, 235, 233, 232, 231, 240, 245, 246, 250, 255, 248, 239, 239, 237, + 231, 226, 229, 238, 248, 252, 241, 235, 235, 236, 236, 236, 231, 227, 226, 218, + 218, 224, 224, 221, 229, 241, 243, 242, 246, 252, 255, 251, 240, 231, 235, 240, + 243, 243, 238, 238, 239, 238, 236, 240, 247, 245, 239, 235, 240, 245, 238, 238, + 240, 241, 241, 242, 242, 244, 246, 244, 242, 241, 242, 243, 247, 251, 255, 227, + 213, 205, 217, 197, 190, 175, 132, 100, 150, 120, 97, 114, 172, 153, 118, 126, + 110, 85, 75, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 124, 148, + 174, 179, 216, 157, 146, 162, 149, 156, 207, 241, 240, 229, 246, 248, 241, 245, + 241, 243, 244, 242, 239, 238, 238, 235, 234, 233, 233, 239, 245, 247, 247, 245, + 239, 233, 228, 231, 232, 235, 238, 245, 253, 254, 243, 240, 240, 240, 240, 241, + 243, 241, 235, 234, 234, 234, 228, 223, 227, 234, 234, 231, 234, 241, 248, 252, + 249, 244, 238, 237, 235, 234, 235, 239, 242, 238, 237, 233, 237, 239, 240, 241, + 242, 242, 240, 238, 240, 240, 241, 241, 242, 242, 244, 241, 240, 239, 240, 242, + 245, 251, 250, 228, 212, 194, 206, 194, 183, 158, 148, 111, 142, 105, 96, 111, + 162, 152, 126, 109, 105, 92, 57, 38, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 107, 137, 118, 128, 204, 200, 142, 131, 150, 145, 163, 216, 247, 238, 227, + 246, 250, 245, 247, 242, 241, 242, 241, 239, 239, 239, 238, 237, 238, 240, 239, + 242, 243, 238, 230, 226, 227, 223, 229, 237, 245, 248, 251, 252, 249, 248, 246, + 247, 247, 246, 247, 249, 250, 239, 248, 251, 245, 236, 234, 236, 234, 229, 226, + 228, 233, 241, 250, 255, 255, 246, 239, 230, 226, 231, 239, 244, 241, 237, 228, + 228, 234, 241, 245, 243, 238, 240, 240, 240, 240, 241, 241, 241, 242, 242, 241, + 239, 238, 239, 241, 245, 249, 247, 234, 218, 192, 205, 200, 186, 148, 142, 118, + 138, 100, 106, 105, 130, 124, 155, 98, 85, 85, 51, 40, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 93, 123, 160, 128, 191, 167, 120, 119, 144, 148, 175, + 222, 242, 240, 227, 246, 247, 243, 248, 242, 244, 241, 241, 239, 239, 241, 241, + 241, 242, 246, 239, 237, 237, 230, 219, 219, 230, 233, 238, 243, 248, 249, 248, + 246, 243, 246, 244, 243, 245, 247, 247, 246, 241, 233, 248, 254, 248, 241, 242, + 243, 235, 236, 231, 230, 232, 239, 244, 250, 252, 253, 246, 237, 231, 233, 240, + 247, 245, 237, 228, 227, 233, 242, 246, 243, 238, 241, 240, 240, 240, 241, 241, + 241, 241, 241, 240, 236, 237, 238, 240, 244, 249, 248, 233, 218, 196, 211, 203, + 188, 151, 147, 132, 141, 99, 119, 105, 114, 123, 165, 109, 79, 70, 50, 46, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 137, 196, 121, 194, 157, 121, + 125, 149, 153, 180, 223, 233, 244, 229, 245, 245, 241, 246, 243, 246, 240, 239, + 241, 241, 242, 244, 244, 246, 248, 240, 234, 232, 226, 219, 226, 237, 247, 245, + 245, 245, 243, 241, 242, 241, 241, 237, 236, 242, 249, 251, 244, 235, 232, 246, + 253, 248, 240, 241, 239, 233, 241, 238, 238, 238, 239, 242, 242, 242, 250, 249, + 246, 239, 236, 237, 243, 246, 238, 236, 237, 238, 241, 244, 243, 242, 241, 241, + 241, 241, 241, 241, 242, 241, 242, 240, 236, 237, 238, 240, 244, 250, 249, 227, + 213, 199, 213, 195, 179, 150, 166, 149, 141, 91, 120, 109, 125, 156, 138, 127, + 94, 61, 45, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 92, 129, 217, + 130, 154, 145, 119, 128, 147, 148, 178, 225, 236, 246, 229, 243, 244, 238, 245, + 244, 247, 240, 239, 241, 242, 245, 245, 247, 249, 248, 242, 235, 232, 229, 231, + 238, 248, 251, 247, 242, 239, 237, 237, 239, 241, 243, 240, 241, 247, 255, 255, + 254, 246, 245, 251, 255, 252, 246, 243, 242, 236, 241, 241, 243, 243, 241, 239, + 236, 235, 239, 243, 245, 243, 238, 236, 241, 244, 242, 244, 247, 245, 242, 241, + 243, 246, 242, 241, 241, 241, 241, 241, 242, 241, 242, 239, 237, 235, 238, 241, + 244, 249, 252, 231, 217, 202, 212, 189, 174, 150, 157, 139, 130, 86, 121, 108, + 123, 159, 129, 125, 86, 49, 47, 42, 255, 255, 255, 255, 255, 255, 255, 255, + 192, 132, 158, 167, 110, 156, 124, 110, 128, 146, 144, 176, 228, 238, 245, 229, + 245, 245, 239, 243, 240, 243, 240, 239, 241, 243, 246, 248, 250, 252, 247, 247, + 242, 236, 238, 245, 252, 252, 245, 244, 241, 238, 237, 236, 236, 239, 243, 246, + 246, 247, 250, 250, 251, 250, 242, 241, 243, 249, 250, 246, 247, 248, 243, 245, + 245, 244, 240, 236, 234, 230, 231, 233, 236, 240, 240, 242, 242, 243, 246, 248, + 250, 249, 245, 244, 247, 247, 242, 242, 241, 241, 242, 242, 242, 241, 243, 238, + 237, 236, 238, 240, 245, 249, 250, 238, 228, 203, 209, 194, 184, 154, 156, 130, + 124, 88, 125, 108, 113, 140, 150, 113, 72, 52, 48, 47, 255, 255, 255, 255, + 255, 255, 255, 255, 75, 130, 148, 163, 145, 143, 115, 111, 137, 155, 148, 176, + 224, 233, 244, 231, 246, 248, 240, 242, 236, 238, 238, 239, 241, 243, 246, 247, + 248, 250, 243, 248, 245, 239, 242, 253, 254, 247, 238, 238, 240, 241, 242, 241, + 239, 242, 247, 252, 250, 243, 233, 230, 235, 240, 225, 219, 223, 237, 246, 248, + 251, 255, 254, 255, 255, 251, 247, 241, 237, 233, 232, 230, 230, 235, 243, 244, + 242, 240, 245, 245, 245, 245, 245, 246, 246, 246, 242, 242, 241, 241, 242, 242, + 242, 241, 243, 240, 237, 236, 239, 242, 245, 250, 240, 241, 233, 199, 205, 202, + 194, 158, 190, 148, 130, 90, 126, 113, 121, 146, 163, 106, 82, 72, 34, 27, + 255, 255, 255, 255, 255, 255, 255, 255, 86, 136, 151, 169, 153, 148, 95, 109, + 147, 144, 147, 167, 223, 231, 241, 242, 244, 243, 238, 236, 238, 239, 238, 238, + 240, 242, 246, 244, 240, 240, 244, 249, 242, 236, 237, 247, 244, 233, 231, 238, + 240, 238, 241, 250, 255, 255, 249, 240, 227, 221, 215, 206, 202, 204, 220, 211, + 204, 205, 215, 222, 223, 222, 245, 254, 255, 255, 255, 250, 251, 252, 244, 238, + 235, 235, 236, 237, 237, 239, 246, 246, 244, 241, 239, 238, 242, 243, 242, 242, + 242, 242, 242, 242, 242, 242, 238, 242, 242, 239, 237, 242, 245, 249, 246, 243, + 219, 209, 202, 202, 197, 154, 174, 162, 108, 115, 126, 121, 116, 146, 140, 156, + 76, 90, 48, 34, 255, 255, 255, 255, 255, 255, 255, 189, 116, 138, 154, 137, + 151, 137, 98, 107, 144, 147, 156, 174, 222, 229, 242, 243, 245, 244, 238, 234, + 236, 238, 238, 238, 241, 242, 243, 242, 236, 237, 238, 242, 245, 247, 244, 238, + 231, 231, 225, 231, 237, 248, 255, 255, 251, 238, 223, 228, 238, 254, 255, 255, + 255, 255, 255, 255, 250, 247, 251, 251, 245, 242, 216, 207, 204, 221, 251, 255, + 255, 254, 244, 242, 242, 242, 243, 240, 236, 233, 241, 242, 240, 238, 236, 237, + 241, 244, 242, 242, 242, 242, 242, 242, 242, 242, 238, 242, 242, 239, 238, 241, + 245, 248, 243, 240, 219, 208, 203, 201, 196, 153, 159, 166, 112, 84, 97, 118, + 136, 149, 160, 135, 60, 61, 49, 30, 104, 255, 255, 255, 255, 255, 255, 48, + 149, 192, 168, 115, 163, 104, 111, 105, 133, 141, 153, 168, 217, 226, 241, 242, + 244, 243, 238, 235, 237, 238, 238, 238, 241, 243, 243, 241, 236, 236, 236, 237, + 242, 255, 251, 239, 237, 245, 240, 244, 251, 255, 255, 254, 231, 214, 225, 237, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 234, 217, 218, 234, 249, 255, 255, 250, 244, 240, 241, 242, 244, 243, 242, 240, + 240, 239, 238, 238, 241, 244, 242, 242, 242, 242, 242, 242, 242, 242, 238, 241, + 242, 238, 239, 241, 243, 246, 241, 239, 219, 210, 202, 200, 195, 154, 142, 157, + 121, 86, 93, 104, 124, 125, 179, 144, 98, 53, 55, 36, 34, 255, 255, 255, + 255, 255, 255, 86, 142, 175, 180, 117, 140, 146, 146, 124, 142, 147, 158, 170, + 222, 240, 239, 241, 244, 243, 239, 234, 236, 237, 238, 240, 242, 243, 243, 241, + 236, 233, 236, 235, 241, 249, 251, 248, 251, 255, 255, 255, 255, 249, 236, 225, + 219, 217, 218, 221, 224, 223, 216, 209, 208, 210, 206, 204, 205, 209, 215, 217, + 210, 208, 208, 221, 227, 219, 208, 208, 225, 242, 251, 244, 241, 240, 244, 251, + 255, 255, 243, 241, 242, 240, 238, 238, 239, 241, 242, 242, 242, 242, 242, 242, + 242, 242, 239, 241, 241, 239, 239, 241, 242, 243, 241, 239, 220, 214, 206, 201, + 196, 159, 156, 151, 123, 110, 110, 90, 106, 121, 154, 155, 158, 65, 60, 43, + 41, 255, 255, 255, 255, 255, 203, 70, 152, 194, 149, 134, 146, 136, 160, 127, + 139, 149, 159, 164, 215, 238, 238, 240, 243, 243, 239, 236, 235, 237, 240, 240, + 241, 244, 244, 240, 235, 232, 231, 236, 238, 242, 249, 255, 255, 252, 245, 244, + 236, 224, 214, 213, 223, 232, 243, 241, 240, 234, 226, 224, 227, 230, 236, 233, + 232, 234, 238, 240, 236, 236, 239, 242, 240, 236, 232, 225, 217, 213, 219, 221, + 227, 236, 248, 255, 255, 255, 246, 242, 243, 242, 239, 237, 237, 238, 242, 242, + 242, 242, 242, 242, 242, 242, 239, 241, 240, 238, 239, 242, 242, 240, 239, 236, + 220, 215, 205, 197, 192, 158, 191, 167, 124, 114, 106, 95, 121, 148, 128, 141, + 171, 83, 70, 48, 42, 36, 255, 255, 255, 255, 46, 97, 165, 180, 176, 168, + 123, 134, 170, 125, 133, 150, 164, 162, 205, 227, 237, 239, 245, 244, 240, 236, + 234, 237, 240, 241, 243, 244, 244, 242, 236, 231, 225, 234, 241, 242, 249, 255, + 246, 230, 223, 213, 206, 208, 218, 228, 236, 240, 237, 239, 238, 234, 232, 234, + 235, 235, 225, 223, 221, 222, 227, 229, 229, 228, 243, 235, 224, 223, 231, 238, + 238, 234, 219, 214, 209, 210, 218, 230, 243, 243, 245, 241, 243, 243, 241, 238, + 237, 237, 242, 242, 242, 242, 242, 242, 242, 242, 240, 241, 239, 238, 241, 242, + 240, 237, 235, 232, 217, 214, 202, 192, 184, 152, 203, 199, 149, 127, 95, 115, + 135, 142, 156, 143, 153, 113, 97, 65, 41, 54, 255, 255, 255, 183, 67, 100, + 157, 171, 179, 186, 193, 178, 216, 150, 142, 159, 181, 176, 216, 234, 236, 238, + 244, 244, 240, 237, 237, 237, 241, 242, 244, 244, 245, 242, 236, 230, 227, 232, + 242, 247, 250, 245, 236, 228, 227, 222, 219, 226, 236, 240, 243, 246, 241, 242, + 241, 236, 236, 238, 235, 229, 234, 233, 234, 236, 241, 243, 241, 241, 234, 240, + 248, 252, 252, 245, 239, 233, 239, 229, 216, 208, 209, 218, 231, 232, 241, 238, + 242, 243, 242, 241, 240, 240, 242, 242, 242, 242, 242, 242, 242, 242, 240, 240, + 239, 237, 241, 243, 240, 236, 234, 231, 216, 214, 202, 186, 178, 148, 203, 230, + 186, 166, 108, 143, 144, 133, 181, 161, 138, 141, 115, 86, 48, 61, 255, 255, + 255, 30, 73, 115, 142, 169, 240, 213, 233, 225, 245, 160, 132, 144, 170, 168, + 208, 228, 236, 240, 244, 244, 241, 239, 238, 239, 244, 243, 245, 246, 245, 242, + 236, 230, 236, 234, 241, 252, 250, 235, 234, 241, 249, 252, 254, 254, 245, 236, + 238, 247, 246, 247, 243, 241, 245, 252, 251, 246, 248, 249, 249, 250, 251, 248, + 244, 241, 245, 239, 236, 237, 241, 244, 241, 239, 232, 234, 237, 242, 243, 242, + 236, 227, 236, 235, 240, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242, 242, + 242, 242, 240, 240, 240, 239, 241, 243, 239, 236, 236, 233, 218, 216, 202, 185, + 177, 147, 212, 246, 204, 198, 127, 166, 164, 162, 161, 161, 127, 147, 113, 101, + 56, 58, 112, 255, 255, 38, 95, 131, 169, 193, 210, 243, 247, 232, 255, 177, + 131, 141, 165, 169, 205, 227, 233, 238, 240, 245, 248, 236, 231, 242, 245, 244, + 244, 244, 243, 241, 237, 233, 233, 238, 247, 248, 238, 226, 229, 238, 248, 253, + 255, 255, 249, 245, 241, 240, 246, 246, 246, 246, 246, 248, 251, 254, 251, 252, + 254, 254, 252, 249, 247, 244, 232, 232, 235, 237, 240, 242, 246, 246, 251, 251, + 252, 251, 249, 243, 239, 233, 233, 236, 243, 245, 242, 240, 241, 243, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 239, 239, 239, 244, 249, 247, 245, 239, 242, + 221, 210, 207, 189, 169, 149, 222, 247, 229, 226, 191, 157, 199, 213, 243, 204, + 212, 195, 141, 90, 90, 50, 55, 255, 255, 37, 87, 196, 211, 169, 217, 242, + 250, 255, 255, 184, 123, 143, 161, 172, 200, 227, 232, 238, 240, 245, 247, 237, + 232, 242, 245, 243, 243, 242, 243, 241, 238, 235, 238, 242, 247, 246, 236, 228, + 234, 243, 253, 255, 255, 255, 251, 245, 243, 242, 242, 243, 242, 240, 239, 241, + 242, 244, 245, 248, 249, 248, 246, 243, 241, 238, 233, 233, 237, 241, 247, 251, + 255, 255, 255, 255, 255, 255, 250, 245, 240, 237, 233, 237, 243, 244, 242, 240, + 241, 243, 241, 241, 241, 241, 241, 241, 241, 241, 240, 241, 240, 238, 241, 246, + 248, 247, 235, 239, 220, 208, 204, 188, 170, 157, 239, 255, 244, 247, 225, 196, + 226, 231, 255, 255, 228, 210, 214, 134, 83, 72, 50, 255, 255, 36, 102, 246, + 242, 224, 183, 240, 243, 255, 255, 197, 113, 144, 156, 175, 193, 230, 232, 239, + 241, 243, 246, 239, 234, 243, 244, 242, 242, 240, 241, 241, 241, 239, 243, 245, + 245, 244, 237, 233, 238, 247, 250, 252, 253, 250, 245, 241, 238, 240, 243, 245, + 242, 238, 236, 235, 236, 238, 243, 244, 245, 244, 243, 240, 236, 233, 231, 231, + 235, 240, 245, 250, 254, 255, 250, 251, 252, 249, 247, 242, 237, 235, 233, 237, + 243, 244, 242, 240, 241, 243, 241, 241, 241, 241, 241, 240, 240, 240, 239, 242, + 241, 239, 240, 244, 248, 251, 233, 234, 220, 205, 198, 185, 171, 169, 249, 255, + 250, 255, 252, 231, 246, 241, 243, 255, 230, 214, 248, 184, 115, 71, 45, 255, + 255, 36, 105, 238, 255, 245, 221, 200, 234, 251, 255, 216, 105, 141, 149, 178, + 190, 235, 231, 239, 241, 243, 246, 240, 236, 244, 244, 241, 239, 238, 240, 241, + 242, 241, 245, 245, 244, 244, 238, 234, 239, 246, 244, 245, 246, 243, 240, 237, + 235, 238, 244, 245, 242, 238, 235, 234, 234, 237, 242, 243, 245, 243, 240, 238, + 235, 232, 232, 232, 234, 235, 238, 240, 242, 243, 243, 244, 245, 243, 241, 237, + 235, 233, 235, 238, 242, 243, 242, 241, 242, 243, 241, 241, 241, 240, 240, 240, + 240, 239, 238, 242, 242, 238, 237, 241, 247, 252, 233, 230, 221, 203, 193, 182, + 170, 183, 247, 254, 250, 255, 255, 244, 250, 242, 242, 251, 253, 242, 244, 238, + 201, 70, 49, 116, 255, 34, 61, 255, 229, 255, 234, 221, 193, 255, 255, 234, + 105, 135, 143, 181, 191, 239, 230, 239, 240, 241, 244, 240, 238, 244, 243, 241, + 239, 239, 241, 243, 242, 243, 245, 244, 244, 245, 241, 235, 234, 238, 243, 243, + 244, 243, 240, 239, 239, 241, 244, 245, 242, 240, 236, 236, 236, 239, 242, 244, + 245, 244, 241, 238, 235, 234, 238, 240, 239, 238, 238, 237, 239, 238, 239, 240, + 241, 243, 242, 241, 240, 239, 237, 239, 242, 243, 242, 242, 242, 242, 241, 241, + 241, 240, 240, 239, 239, 238, 238, 242, 242, 237, 237, 241, 248, 252, 239, 228, + 224, 203, 188, 180, 169, 192, 246, 250, 251, 255, 253, 245, 250, 246, 255, 249, + 255, 255, 240, 252, 245, 74, 52, 52, 255, 34, 58, 240, 249, 236, 248, 204, + 232, 239, 252, 247, 110, 127, 144, 181, 192, 237, 228, 240, 240, 238, 243, 240, + 238, 243, 242, 241, 240, 241, 242, 244, 242, 243, 245, 243, 244, 246, 244, 236, + 232, 233, 240, 240, 241, 240, 239, 239, 240, 243, 244, 244, 241, 238, 238, 238, + 238, 241, 243, 246, 246, 245, 243, 239, 236, 236, 241, 242, 241, 239, 240, 240, + 239, 239, 236, 237, 240, 241, 243, 244, 245, 245, 242, 240, 241, 242, 243, 243, + 242, 242, 241, 241, 240, 240, 239, 238, 238, 238, 238, 241, 240, 237, 238, 242, + 246, 248, 243, 225, 225, 203, 187, 180, 168, 201, 244, 245, 251, 249, 243, 241, + 243, 246, 247, 243, 243, 254, 250, 242, 235, 97, 56, 53, 255, 36, 64, 239, + 245, 255, 216, 209, 255, 233, 235, 254, 118, 121, 148, 179, 192, 228, 228, 241, + 242, 237, 241, 242, 240, 244, 244, 243, 243, 244, 244, 245, 242, 241, 245, 242, + 241, 244, 244, 239, 234, 234, 236, 237, 239, 237, 238, 238, 240, 242, 245, 245, + 242, 240, 238, 237, 238, 242, 245, 248, 248, 246, 245, 241, 238, 239, 242, 245, + 244, 241, 240, 240, 238, 237, 235, 236, 239, 241, 243, 245, 246, 246, 243, 241, + 241, 242, 243, 243, 243, 242, 241, 241, 240, 240, 239, 238, 237, 237, 238, 239, + 238, 236, 240, 244, 245, 244, 245, 222, 225, 203, 189, 184, 170, 207, 239, 239, + 247, 239, 235, 239, 238, 242, 245, 246, 238, 255, 255, 250, 243, 116, 61, 55, + 255, 37, 49, 242, 250, 241, 251, 203, 255, 255, 226, 255, 127, 118, 151, 176, + 191, 217, 226, 240, 242, 237, 241, 243, 240, 243, 244, 242, 243, 244, 246, 245, + 243, 240, 245, 241, 238, 242, 244, 242, 238, 238, 239, 239, 240, 241, 239, 239, + 242, 246, 246, 245, 242, 241, 240, 237, 239, 240, 245, 246, 248, 246, 245, 242, + 239, 241, 246, 249, 247, 244, 241, 239, 237, 236, 241, 240, 242, 243, 245, 247, + 248, 246, 244, 241, 241, 241, 243, 243, 243, 242, 243, 241, 240, 239, 238, 238, + 237, 235, 240, 239, 237, 236, 241, 246, 243, 240, 244, 218, 223, 201, 191, 187, + 171, 211, 242, 239, 248, 240, 238, 244, 241, 242, 242, 239, 240, 254, 245, 249, + 255, 95, 67, 58, 255, 40, 36, 240, 246, 246, 240, 217, 255, 255, 237, 224, + 150, 120, 145, 159, 192, 214, 225, 237, 241, 239, 245, 246, 239, 242, 241, 239, + 241, 243, 246, 247, 246, 243, 242, 240, 240, 241, 240, 240, 239, 237, 238, 238, + 240, 240, 240, 240, 241, 241, 242, 242, 242, 242, 241, 241, 241, 242, 243, 245, + 244, 243, 241, 242, 242, 242, 242, 244, 242, 242, 241, 241, 240, 240, 240, 240, + 241, 241, 242, 242, 244, 242, 241, 241, 240, 239, 240, 240, 243, 243, 246, 241, + 236, 237, 236, 234, 235, 239, 241, 243, 241, 239, 238, 239, 244, 250, 238, 230, + 228, 183, 188, 180, 184, 218, 242, 253, 250, 246, 251, 243, 237, 253, 242, 239, + 229, 246, 255, 254, 249, 103, 66, 57, 255, 39, 51, 238, 255, 255, 245, 205, + 243, 243, 247, 213, 145, 123, 137, 173, 194, 220, 226, 238, 241, 238, 246, 245, + 241, 242, 240, 237, 238, 241, 243, 244, 244, 242, 239, 239, 240, 241, 240, 240, + 239, 239, 240, 240, 240, 240, 240, 240, 240, 240, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 241, 241, 241, 241, 242, 242, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 241, 243, + 244, 245, 246, 242, 239, 238, 237, 234, 235, 240, 241, 242, 243, 240, 239, 238, + 243, 249, 241, 228, 225, 188, 193, 182, 188, 218, 233, 237, 242, 242, 245, 243, + 242, 251, 239, 232, 232, 251, 253, 252, 255, 108, 65, 56, 255, 41, 58, 226, + 250, 255, 236, 200, 242, 242, 255, 198, 149, 126, 126, 176, 188, 215, 228, 239, + 239, 238, 244, 244, 240, 241, 237, 237, 238, 240, 241, 241, 240, 238, 239, 238, + 239, 240, 241, 241, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 243, 243, + 243, 243, 243, 243, 243, 243, 243, 242, 242, 241, 241, 242, 242, 243, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, + 241, 241, 242, 244, 245, 245, 246, 242, 239, 239, 238, 235, 236, 240, 242, 242, + 242, 239, 239, 241, 244, 249, 238, 221, 215, 188, 192, 178, 188, 217, 229, 225, + 235, 241, 238, 241, 247, 243, 235, 223, 236, 255, 247, 252, 255, 110, 65, 56, + 255, 40, 60, 231, 241, 253, 206, 211, 250, 255, 255, 175, 164, 125, 122, 169, + 183, 210, 230, 240, 240, 236, 244, 243, 238, 241, 238, 239, 240, 241, 240, 239, + 239, 237, 238, 237, 240, 240, 240, 241, 240, 240, 242, 241, 241, 241, 241, 241, + 241, 241, 243, 243, 243, 243, 243, 243, 243, 243, 243, 242, 241, 241, 241, 241, + 242, 243, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 240, 240, 241, 243, 245, 245, 245, 245, 245, 242, 240, 242, 240, 236, + 236, 241, 242, 242, 241, 239, 241, 242, 245, 249, 237, 217, 210, 188, 186, 168, + 196, 226, 236, 225, 237, 246, 236, 240, 248, 237, 235, 211, 236, 255, 245, 255, + 255, 105, 65, 56, 255, 40, 61, 249, 246, 255, 183, 225, 249, 255, 245, 161, + 186, 127, 128, 161, 193, 220, 230, 239, 240, 237, 244, 243, 237, 238, 238, 240, + 242, 240, 240, 238, 238, 237, 239, 237, 241, 240, 241, 241, 241, 240, 242, 242, + 242, 242, 241, 241, 241, 241, 242, 242, 242, 242, 242, 242, 242, 242, 239, 239, + 238, 237, 237, 238, 239, 239, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 240, 242, 243, 245, 244, 244, 243, 244, 240, + 239, 242, 240, 236, 236, 240, 244, 242, 239, 238, 241, 244, 246, 248, 238, 220, + 212, 190, 180, 168, 214, 242, 240, 227, 240, 249, 238, 240, 247, 235, 236, 206, + 235, 253, 244, 255, 254, 95, 66, 255, 255, 39, 52, 251, 249, 255, 193, 246, + 247, 253, 243, 182, 211, 144, 131, 156, 192, 220, 229, 238, 240, 239, 246, 245, + 238, 237, 236, 239, 242, 240, 239, 237, 238, 240, 239, 239, 241, 242, 243, 241, + 242, 241, 242, 241, 241, 241, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 236, 235, 234, 234, 234, 234, 235, 236, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 242, 243, 243, 244, 242, + 241, 239, 241, 239, 239, 241, 240, 237, 236, 239, 244, 243, 239, 240, 243, 245, + 247, 249, 236, 221, 209, 186, 175, 169, 229, 247, 233, 229, 239, 245, 239, 240, + 243, 239, 231, 204, 234, 249, 247, 255, 237, 84, 64, 255, 255, 40, 48, 236, + 244, 241, 219, 253, 248, 249, 247, 220, 221, 166, 123, 158, 182, 215, 226, 237, + 242, 241, 248, 246, 238, 239, 235, 237, 241, 241, 237, 236, 238, 240, 240, 239, + 243, 242, 244, 243, 244, 242, 241, 241, 240, 240, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 238, 237, 237, 236, 236, 237, 237, 238, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242, 242, + 243, 243, 243, 241, 239, 237, 241, 237, 238, 240, 239, 236, 235, 239, 245, 243, + 239, 240, 246, 247, 248, 249, 233, 219, 202, 180, 173, 176, 239, 242, 224, 231, + 238, 241, 243, 239, 237, 244, 224, 207, 239, 246, 248, 255, 220, 78, 62, 255, + 255, 40, 60, 227, 240, 225, 238, 247, 243, 245, 243, 237, 215, 177, 113, 167, + 180, 220, 224, 236, 242, 244, 250, 248, 240, 238, 234, 236, 240, 239, 237, 235, + 237, 241, 241, 242, 243, 244, 245, 244, 245, 244, 242, 240, 240, 239, 239, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 243, 243, 242, 241, 241, 242, + 243, 243, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 242, 242, 244, 245, 243, 239, 237, 235, 240, 238, 237, 241, 240, 235, + 235, 238, 245, 243, 241, 242, 247, 250, 250, 251, 236, 223, 202, 181, 178, 188, + 249, 239, 222, 237, 241, 238, 245, 238, 231, 245, 218, 211, 241, 245, 248, 250, + 210, 76, 124, 255, 255, 40, 70, 218, 220, 198, 239, 251, 250, 246, 250, 240, + 218, 206, 113, 152, 169, 221, 225, 234, 244, 247, 248, 247, 243, 236, 241, 238, + 239, 242, 241, 236, 236, 239, 237, 239, 243, 245, 248, 247, 247, 244, 241, 239, + 239, 237, 237, 236, 235, 235, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 240, 240, 240, 241, 241, 242, 242, 242, 241, 241, + 240, 239, 238, 238, 238, 238, 239, 241, 242, 240, 242, 244, 244, 240, 238, 239, + 239, 241, 241, 239, 239, 240, 247, 247, 243, 241, 245, 250, 249, 245, 241, 220, + 203, 162, 186, 212, 239, 248, 243, 240, 242, 242, 242, 241, 240, 240, 225, 223, + 237, 249, 255, 250, 128, 67, 255, 255, 255, 183, 59, 203, 220, 179, 243, 252, + 247, 250, 250, 255, 179, 235, 109, 134, 181, 199, 226, 234, 242, 244, 245, 246, + 244, 240, 240, 237, 239, 243, 241, 236, 235, 238, 240, 241, 244, 246, 248, 247, + 247, 246, 240, 240, 238, 239, 238, 237, 236, 235, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 240, 240, 240, 241, 241, 242, + 242, 242, 240, 240, 239, 238, 238, 238, 239, 239, 240, 242, 243, 241, 243, 246, + 244, 239, 237, 239, 241, 242, 242, 242, 239, 240, 246, 247, 241, 239, 244, 248, + 249, 244, 236, 209, 204, 177, 168, 223, 245, 244, 244, 242, 241, 242, 242, 241, + 240, 241, 220, 225, 246, 255, 254, 250, 110, 63, 255, 255, 255, 255, 47, 171, + 229, 168, 248, 255, 250, 254, 252, 209, 226, 221, 157, 113, 176, 191, 226, 235, + 242, 243, 243, 246, 245, 242, 239, 237, 240, 241, 239, 233, 232, 235, 241, 241, + 244, 246, 248, 246, 245, 244, 237, 237, 238, 240, 240, 239, 237, 236, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 240, 240, + 241, 241, 241, 241, 242, 242, 239, 239, 238, 238, 238, 239, 240, 240, 241, 243, + 245, 243, 244, 246, 243, 237, 234, 237, 241, 243, 244, 243, 239, 240, 247, 246, + 242, 238, 243, 249, 249, 245, 233, 200, 202, 180, 150, 235, 249, 245, 247, 244, + 242, 242, 241, 241, 241, 241, 219, 232, 251, 255, 247, 227, 93, 255, 255, 255, + 255, 255, 40, 130, 240, 187, 251, 255, 255, 248, 224, 179, 255, 214, 223, 107, + 159, 186, 221, 234, 244, 244, 243, 245, 246, 243, 241, 237, 240, 243, 241, 235, + 233, 236, 240, 242, 244, 244, 246, 246, 244, 243, 236, 236, 239, 241, 241, 241, + 238, 238, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 238, 238, 238, 238, 239, 240, + 241, 241, 241, 244, 246, 244, 246, 246, 242, 235, 233, 237, 241, 246, 246, 244, + 241, 240, 249, 249, 244, 241, 245, 251, 251, 248, 234, 199, 195, 161, 159, 243, + 244, 244, 248, 246, 244, 242, 242, 241, 241, 242, 229, 241, 247, 250, 245, 173, + 87, 255, 255, 255, 255, 255, 43, 88, 232, 217, 246, 255, 255, 240, 198, 224, + 223, 250, 254, 144, 141, 176, 212, 230, 243, 247, 246, 247, 247, 243, 243, 240, + 243, 244, 242, 236, 235, 238, 241, 240, 242, 242, 243, 243, 242, 241, 234, 235, + 238, 240, 241, 241, 240, 239, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 238, 238, + 238, 238, 239, 240, 241, 241, 241, 245, 245, 243, 244, 245, 242, 236, 235, 237, + 242, 246, 246, 244, 241, 239, 247, 246, 242, 239, 244, 249, 249, 245, 228, 203, + 190, 154, 205, 249, 232, 236, 245, 245, 244, 242, 242, 242, 241, 241, 234, 245, + 246, 248, 245, 118, 91, 255, 255, 255, 255, 255, 255, 60, 190, 228, 231, 246, + 253, 235, 229, 247, 221, 255, 255, 222, 115, 176, 202, 224, 241, 245, 244, 245, + 245, 243, 243, 240, 243, 246, 244, 239, 239, 241, 241, 240, 241, 241, 243, 242, + 242, 240, 236, 235, 239, 239, 241, 241, 241, 240, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 241, 241, 241, 241, + 240, 240, 239, 239, 238, 238, 238, 239, 240, 240, 242, 243, 243, 239, 241, 244, + 243, 237, 237, 240, 243, 245, 245, 243, 240, 239, 242, 243, 238, 237, 242, 246, + 245, 239, 220, 205, 186, 177, 255, 255, 226, 226, 242, 243, 244, 245, 245, 242, + 240, 241, 232, 239, 250, 243, 218, 88, 255, 255, 255, 255, 255, 255, 255, 51, + 122, 203, 212, 232, 224, 240, 255, 231, 255, 245, 255, 255, 101, 171, 195, 218, + 234, 238, 238, 241, 243, 243, 241, 239, 241, 245, 245, 240, 242, 243, 240, 239, + 240, 239, 241, 240, 240, 239, 238, 236, 239, 238, 240, 240, 241, 241, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 241, 241, 240, 240, 240, 240, 240, 239, 238, 238, 238, 239, 239, 241, 242, + 240, 236, 238, 243, 243, 239, 240, 242, 243, 244, 243, 242, 239, 239, 238, 240, + 238, 237, 242, 245, 241, 235, 220, 200, 173, 215, 255, 255, 233, 224, 237, 240, + 243, 245, 246, 244, 242, 240, 227, 229, 253, 220, 155, 83, 255, 255, 255, 255, + 255, 255, 255, 255, 64, 171, 197, 223, 200, 249, 235, 239, 243, 255, 248, 249, + 113, 153, 192, 215, 228, 232, 232, 237, 244, 246, 241, 238, 241, 244, 244, 240, + 240, 242, 242, 242, 240, 240, 241, 242, 242, 240, 241, 240, 238, 239, 239, 239, + 241, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 243, 242, 242, 241, 241, 240, 240, 240, 241, 241, 240, 239, 239, 239, + 239, 241, 241, 241, 240, 235, 237, 242, 242, 239, 242, 242, 244, 245, 245, 243, + 241, 242, 238, 241, 241, 242, 247, 249, 244, 235, 225, 191, 155, 234, 255, 247, + 240, 227, 231, 237, 242, 246, 250, 248, 248, 247, 233, 227, 250, 193, 90, 138, + 255, 255, 255, 255, 255, 255, 255, 255, 64, 84, 167, 223, 204, 236, 209, 255, + 253, 255, 255, 254, 91, 151, 174, 219, 228, 233, 238, 237, 247, 242, 236, 236, + 240, 241, 242, 237, 233, 231, 244, 243, 242, 240, 240, 240, 239, 239, 239, 241, + 244, 244, 242, 238, 238, 239, 242, 242, 242, 242, 242, 242, 242, 242, 241, 241, + 241, 241, 241, 241, 241, 242, 242, 242, 242, 241, 241, 240, 240, 240, 243, 243, + 242, 241, 241, 240, 239, 240, 246, 246, 242, 240, 239, 238, 239, 238, 242, 241, + 240, 241, 245, 244, 242, 241, 241, 244, 244, 245, 248, 251, 240, 225, 210, 180, + 147, 223, 255, 238, 249, 213, 223, 223, 224, 255, 230, 253, 255, 232, 230, 255, + 205, 100, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 52, 119, 177, + 167, 245, 255, 255, 255, 255, 255, 232, 103, 145, 172, 213, 220, 222, 227, 229, + 243, 242, 242, 241, 241, 241, 239, 238, 235, 235, 243, 244, 243, 241, 241, 240, + 241, 239, 239, 241, 244, 245, 242, 238, 239, 239, 242, 242, 242, 242, 242, 242, + 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 244, 244, 242, 241, 241, 240, + 240, 240, 241, 240, 241, 240, 241, 239, 241, 240, 248, 247, 243, 241, 239, 238, + 238, 238, 240, 240, 241, 243, 245, 246, 243, 241, 239, 242, 243, 243, 246, 245, + 234, 217, 207, 175, 176, 239, 245, 255, 232, 218, 218, 237, 227, 213, 254, 254, + 253, 222, 255, 226, 135, 69, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 68, 122, 185, 153, 246, 242, 246, 255, 255, 238, 155, 79, 107, 156, 199, + 208, 213, 221, 224, 238, 238, 246, 244, 242, 241, 240, 239, 238, 239, 242, 244, + 243, 242, 241, 240, 241, 240, 238, 239, 241, 243, 241, 238, 239, 239, 242, 242, + 242, 242, 242, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 244, 244, + 242, 241, 241, 240, 240, 240, 240, 239, 240, 239, 240, 239, 240, 240, 247, 246, + 242, 241, 239, 238, 238, 238, 240, 240, 240, 243, 244, 244, 240, 238, 241, 243, + 244, 245, 245, 243, 230, 216, 205, 172, 159, 238, 241, 254, 238, 249, 218, 249, + 213, 253, 227, 242, 227, 255, 221, 145, 74, 58, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 78, 163, 136, 242, 255, 255, 255, 248, 167, 95, + 134, 255, 132, 180, 197, 207, 218, 222, 236, 234, 244, 243, 243, 242, 241, 240, + 237, 237, 243, 243, 242, 242, 242, 243, 243, 241, 237, 237, 238, 240, 240, 239, + 239, 239, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 244, 244, 242, 241, 241, 240, 240, 240, 240, 239, 240, 239, 241, 239, + 241, 242, 245, 245, 244, 241, 240, 238, 238, 237, 240, 239, 241, 242, 244, 242, + 238, 237, 239, 241, 242, 242, 243, 238, 226, 216, 199, 177, 110, 211, 255, 238, + 248, 255, 250, 235, 247, 255, 240, 223, 252, 248, 123, 81, 61, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 122, 113, 238, 233, 249, + 228, 202, 112, 90, 255, 255, 116, 166, 184, 198, 210, 215, 232, 234, 243, 245, + 247, 247, 245, 242, 237, 235, 242, 243, 242, 242, 242, 244, 244, 245, 239, 238, + 238, 239, 240, 239, 239, 238, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 244, 244, 242, 241, 241, 240, 240, 240, 241, 240, + 241, 240, 242, 241, 243, 244, 243, 243, 243, 240, 240, 239, 238, 237, 241, 241, + 242, 242, 243, 242, 238, 236, 237, 237, 236, 236, 235, 226, 215, 207, 196, 171, + 99, 151, 255, 250, 245, 248, 255, 248, 238, 249, 238, 242, 222, 143, 85, 64, + 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, + 71, 194, 202, 230, 204, 158, 73, 255, 255, 255, 99, 150, 169, 182, 194, 204, + 227, 234, 243, 245, 248, 250, 248, 244, 237, 235, 240, 241, 241, 241, 243, 244, + 244, 245, 240, 238, 236, 237, 238, 238, 237, 235, 240, 240, 240, 240, 240, 240, + 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 244, 244, 242, 241, 241, 240, + 240, 240, 241, 240, 242, 241, 243, 242, 244, 245, 241, 243, 242, 242, 241, 238, + 237, 239, 241, 241, 240, 239, 241, 240, 240, 238, 242, 237, 236, 235, 229, 218, + 209, 203, 201, 144, 115, 80, 205, 255, 243, 255, 255, 255, 207, 251, 238, 224, + 126, 76, 83, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 43, 76, 149, 197, 203, 173, 99, 116, 255, 255, 255, 69, 123, + 153, 174, 191, 202, 223, 229, 242, 244, 245, 246, 244, 240, 235, 235, 237, 239, + 239, 238, 240, 242, 242, 243, 241, 238, 235, 235, 237, 237, 235, 234, 240, 240, + 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 244, 244, + 242, 241, 241, 240, 240, 240, 239, 239, 240, 240, 242, 241, 244, 244, 240, 241, + 242, 242, 241, 240, 239, 239, 242, 240, 240, 239, 240, 241, 242, 242, 240, 237, + 233, 234, 229, 218, 210, 208, 196, 110, 121, 68, 128, 222, 227, 255, 255, 243, + 220, 240, 243, 140, 90, 80, 68, 47, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 185, 51, 30, 50, 51, 64, 109, 255, 255, + 255, 255, 33, 97, 139, 172, 194, 203, 219, 220, 240, 242, 241, 239, 238, 236, + 234, 233, 235, 236, 236, 237, 238, 241, 243, 241, 242, 238, 235, 235, 236, 238, + 235, 232, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, + 241, 241, 244, 244, 242, 241, 241, 240, 240, 240, 238, 237, 239, 238, 241, 240, + 243, 243, 239, 241, 242, 243, 242, 241, 240, 241, 242, 242, 239, 239, 240, 244, + 246, 247, 233, 228, 225, 227, 224, 216, 211, 213, 179, 91, 115, 115, 96, 154, + 194, 221, 230, 193, 172, 216, 142, 94, 69, 59, 56, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, 40, 47, 47, + 116, 255, 255, 255, 255, 255, 51, 56, 116, 164, 193, 193, 215, 212, 235, 227, + 230, 241, 245, 237, 232, 234, 239, 239, 239, 240, 241, 241, 241, 240, 239, 239, + 239, 238, 237, 235, 235, 237, 237, 238, 238, 239, 239, 240, 240, 240, 241, 241, + 241, 241, 241, 241, 241, 241, 244, 244, 242, 241, 241, 240, 240, 240, 240, 239, + 240, 237, 238, 235, 236, 236, 243, 242, 241, 241, 241, 242, 239, 237, 247, 234, + 234, 247, 250, 239, 236, 246, 243, 223, 242, 233, 224, 215, 233, 208, 149, 152, + 112, 102, 106, 85, 160, 173, 192, 178, 148, 112, 85, 69, 60, 56, 118, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 46, 97, 139, 175, 180, + 205, 204, 224, 228, 233, 236, 240, 240, 238, 233, 237, 235, 236, 237, 238, 240, + 241, 239, 239, 239, 239, 239, 238, 237, 239, 239, 238, 239, 239, 239, 240, 240, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 244, 244, 242, 241, 241, 240, + 240, 240, 240, 239, 240, 238, 240, 238, 240, 241, 243, 242, 240, 240, 242, 242, + 240, 240, 243, 242, 243, 246, 247, 245, 243, 242, 238, 220, 236, 226, 221, 212, + 216, 181, 125, 124, 125, 96, 88, 71, 100, 118, 122, 116, 97, 78, 61, 53, + 47, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 43, + 79, 117, 161, 173, 200, 202, 210, 226, 232, 229, 233, 242, 243, 233, 236, 236, + 237, 239, 239, 241, 241, 241, 239, 239, 239, 239, 239, 239, 241, 241, 240, 240, + 240, 241, 241, 241, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 244, 244, + 242, 241, 241, 240, 240, 240, 239, 239, 240, 240, 242, 241, 244, 245, 245, 244, + 241, 240, 241, 242, 242, 243, 241, 247, 248, 243, 244, 247, 243, 236, 240, 227, + 236, 227, 224, 216, 202, 152, 111, 105, 140, 90, 68, 66, 52, 73, 65, 64, + 58, 53, 48, 44, 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 42, 66, 97, 152, 172, 197, 203, 203, 217, 226, 227, 230, 238, + 243, 240, 243, 240, 242, 243, 243, 244, 243, 243, 240, 239, 239, 239, 240, 240, + 243, 244, 242, 242, 242, 242, 242, 242, 242, 242, 241, 241, 241, 241, 241, 241, + 241, 241, 244, 244, 242, 241, 241, 240, 240, 240, 239, 239, 240, 239, 242, 241, + 243, 244, 245, 244, 240, 238, 240, 242, 245, 245, 243, 248, 249, 247, 246, 243, + 238, 235, 244, 237, 237, 232, 229, 220, 185, 128, 111, 104, 127, 78, 53, 63, + 43, 59, 48, 49, 49, 49, 45, 113, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 35, 51, 78, 139, 162, 188, 198, 205, 208, + 218, 228, 234, 233, 241, 246, 246, 243, 245, 246, 246, 244, 243, 241, 241, 240, + 241, 240, 239, 239, 243, 244, 243, 243, 243, 242, 242, 242, 242, 242, 241, 241, + 241, 241, 241, 241, 241, 241, 244, 244, 242, 241, 241, 240, 240, 240, 239, 239, + 240, 238, 239, 238, 240, 240, 244, 243, 239, 238, 240, 242, 246, 247, 248, 242, + 243, 250, 248, 236, 233, 240, 242, 239, 233, 231, 222, 208, 161, 107, 105, 104, + 92, 64, 44, 51, 48, 48, 43, 44, 43, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 46, 65, 128, 152, + 180, 197, 206, 204, 211, 226, 234, 231, 239, 247, 244, 240, 242, 244, 245, 243, + 242, 239, 242, 241, 241, 239, 238, 238, 243, 243, 244, 243, 243, 242, 242, 242, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 244, 244, 242, 241, 241, 240, + 240, 240, 238, 237, 238, 237, 238, 236, 238, 238, 242, 242, 239, 239, 241, 244, + 245, 247, 247, 238, 240, 250, 247, 233, 231, 245, 239, 242, 231, 234, 217, 196, + 142, 103, 99, 100, 66, 60, 45, 46, 47, 35, 109, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, + 47, 60, 119, 142, 174, 198, 202, 205, 210, 219, 229, 236, 241, 240, 240, 236, + 238, 242, 244, 243, 243, 240, 243, 241, 240, 238, 236, 236, 241, 242, 244, 242, + 242, 242, 241, 241, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 244, 244, + 242, 241, 241, 240, 240, 240, 236, 235, 237, 236, 238, 237, 239, 240, 240, 241, + 240, 240, 243, 245, 245, 246, 241, 239, 241, 243, 241, 234, 236, 245, 239, 246, + 234, 239, 213, 183, 129, 107, 96, 92, 58, 63, 46, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 41, 46, 52, 108, 131, 166, 195, 199, 209, 213, 213, 223, 238, + 243, 230, 238, 235, 240, 243, 245, 245, 245, 244, 242, 240, 240, 237, 235, 237, + 239, 242, 243, 242, 242, 241, 241, 240, 240, 239, 241, 241, 241, 241, 241, 241, + 241, 241, 242, 242, 242, 241, 241, 240, 241, 241, 235, 236, 238, 238, 239, 241, + 242, 243, 238, 238, 239, 240, 243, 245, 244, 246, 235, 243, 243, 237, 234, 239, + 243, 244, 236, 244, 233, 243, 209, 171, 114, 103, 89, 75, 51, 57, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 33, 40, 50, 99, 121, 162, 191, 211, 210, + 225, 229, 220, 231, 244, 233, 237, 238, 241, 244, 245, 245, 247, 248, 240, 239, + 239, 240, 240, 241, 243, 241, 239, 239, 240, 242, 242, 241, 240, 239, 241, 241, + 241, 241, 241, 241, 241, 241, 239, 239, 240, 242, 242, 240, 240, 241, 237, 237, + 238, 237, 239, 241, 242, 243, 242, 243, 244, 244, 243, 241, 242, 241, 238, 246, + 251, 247, 238, 233, 239, 248, 234, 249, 241, 243, 203, 163, 96, 74, 56, 50, + 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 35, 42, 91, 115, + 158, 189, 215, 221, 231, 231, 227, 234, 244, 239, 238, 239, 244, 247, 245, 245, + 246, 245, 240, 238, 239, 239, 241, 243, 243, 243, 238, 238, 240, 241, 242, 241, + 241, 240, 241, 241, 241, 241, 241, 241, 241, 241, 238, 237, 240, 240, 241, 239, + 241, 240, 238, 239, 239, 238, 239, 240, 244, 242, 246, 243, 242, 241, 241, 241, + 244, 246, 244, 245, 244, 241, 239, 238, 241, 243, 235, 245, 236, 234, 196, 150, + 89, 74, 47, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 29, + 33, 37, 86, 110, 156, 187, 211, 227, 231, 227, 231, 233, 234, 238, 236, 238, + 243, 246, 246, 245, 242, 241, 241, 239, 239, 239, 241, 242, 243, 243, 237, 237, + 239, 241, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, 238, 238, + 238, 239, 239, 238, 240, 240, 238, 239, 240, 239, 240, 240, 241, 241, 244, 240, + 236, 233, 233, 235, 242, 245, 248, 241, 236, 234, 239, 242, 240, 239, 244, 245, + 235, 229, 190, 139, 88, 84, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 29, 34, 36, 83, 108, 153, 183, 206, 231, 234, 229, 236, 231, + 224, 232, 230, 233, 240, 245, 246, 245, 243, 241, 241, 239, 239, 238, 239, 241, + 242, 242, 236, 236, 239, 241, 242, 243, 242, 242, 241, 241, 241, 241, 241, 241, + 241, 241, 238, 238, 238, 237, 238, 237, 238, 239, 238, 238, 240, 240, 241, 241, + 241, 240, 240, 237, 235, 232, 233, 234, 240, 243, 246, 240, 234, 235, 242, 244, + 240, 237, 245, 243, 236, 225, 185, 125, 80, 80, 113, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 30, 37, 37, 83, 108, 152, 180, 206, 235, + 242, 239, 244, 235, 224, 229, 224, 228, 237, 242, 245, 246, 244, 243, 240, 238, + 238, 238, 238, 240, 241, 240, 236, 236, 239, 241, 242, 243, 242, 242, 241, 241, + 241, 241, 241, 241, 241, 241, 238, 238, 237, 237, 237, 237, 238, 240, 239, 239, + 241, 241, 242, 241, 240, 240, 241, 240, 241, 240, 239, 240, 242, 244, 239, 239, + 239, 242, 246, 244, 240, 237, 238, 235, 234, 218, 180, 108, 64, 62, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, 39, 36, 80, 107, + 152, 180, 204, 229, 244, 245, 243, 236, 228, 227, 224, 228, 235, 242, 245, 246, + 246, 246, 241, 238, 237, 237, 239, 240, 241, 240, 237, 237, 239, 241, 242, 242, + 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, 239, 239, 238, 237, 237, 238, + 239, 239, 240, 241, 244, 244, 243, 243, 241, 241, 238, 239, 241, 243, 242, 241, + 240, 242, 236, 240, 243, 246, 247, 243, 241, 240, 237, 236, 238, 212, 178, 104, + 60, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, + 37, 30, 73, 103, 152, 182, 203, 221, 243, 248, 239, 237, 240, 232, 231, 233, + 238, 243, 245, 247, 248, 247, 243, 241, 239, 240, 241, 241, 242, 240, 238, 238, + 240, 241, 242, 241, 241, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, + 240, 238, 238, 238, 240, 241, 242, 242, 244, 244, 243, 243, 242, 241, 235, 236, + 239, 240, 239, 239, 238, 239, 238, 241, 243, 247, 247, 246, 242, 241, 242, 242, + 239, 204, 175, 105, 67, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 35, 25, 67, 100, 153, 184, 208, 219, 246, 254, 239, 243, + 255, 244, 237, 238, 242, 245, 246, 247, 248, 248, 245, 243, 242, 242, 242, 243, + 244, 242, 239, 239, 240, 242, 242, 241, 240, 239, 241, 241, 241, 241, 241, 241, + 241, 241, 242, 241, 240, 239, 238, 239, 241, 242, 243, 244, 244, 245, 244, 243, + 240, 241, 239, 239, 240, 241, 241, 240, 240, 241, 243, 242, 241, 242, 248, 248, + 244, 243, 242, 241, 235, 191, 165, 102, 69, 48, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 33, 42, 57, 96, 161, 184, 223, 225, + 241, 254, 247, 242, 243, 239, 244, 245, 243, 238, 235, 241, 245, 244, 242, 243, + 244, 246, 247, 248, 248, 246, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242, 242, 241, 242, + 242, 244, 244, 243, 242, 242, 242, 241, 241, 241, 240, 239, 240, 241, 236, 236, + 240, 243, 247, 245, 239, 237, 243, 238, 230, 207, 170, 94, 72, 55, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 39, 52, 91, + 160, 187, 217, 221, 238, 251, 245, 239, 240, 232, 242, 242, 245, 243, 240, 244, + 244, 241, 242, 241, 243, 244, 247, 247, 248, 245, 242, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 242, 242, 241, 242, 242, 242, 242, 241, 242, 241, 238, 239, 240, 240, 241, 241, + 243, 244, 236, 237, 239, 243, 245, 244, 237, 235, 241, 235, 225, 199, 163, 87, + 67, 50, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 34, 39, 47, 83, 155, 188, 218, 223, 240, 252, 246, 242, 243, 234, 240, 243, + 248, 246, 245, 246, 242, 238, 242, 241, 242, 244, 246, 245, 245, 244, 242, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 241, 241, 241, 241, 240, 240, 239, 239, 241, + 241, 241, 242, 242, 245, 245, 240, 239, 240, 242, 244, 242, 236, 235, 241, 234, + 222, 194, 157, 82, 64, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 40, 45, 48, 79, 150, 186, 221, 226, 241, 250, 244, 243, + 246, 236, 239, 244, 249, 247, 245, 246, 242, 238, 241, 240, 242, 244, 244, 245, + 245, 244, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 241, 241, 241, 241, 240, + 239, 239, 243, 244, 243, 241, 241, 240, 240, 240, 242, 242, 241, 244, 245, 242, + 235, 234, 246, 238, 223, 194, 155, 82, 65, 50, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 42, 50, 53, 80, 151, 188, 221, 226, + 238, 242, 236, 238, 244, 235, 242, 245, 247, 243, 240, 242, 242, 239, 240, 240, + 242, 243, 243, 244, 245, 243, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 242, 242, 241, 241, 241, 241, 241, 241, 240, 241, + 240, 240, 240, 239, 238, 239, 242, 244, 242, 240, 240, 239, 239, 239, 244, 244, + 242, 243, 245, 243, 236, 236, 246, 239, 224, 195, 156, 82, 65, 119, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, + 221, 233, 245, 247, 251, 251, 245, 245, 249, 242, 246, 247, 247, 239, 236, 239, + 240, 239, 240, 238, 241, 243, 243, 244, 244, 243, 242, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242, 242, 241, 241, 241, 241, + 241, 241, 240, 241, 240, 240, 240, 239, 238, 238, 238, 240, 240, 239, 241, 240, + 240, 242, 244, 243, 243, 243, 244, 243, 237, 239, 243, 238, 224, 195, 158, 83, + 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 250, 251, 251, 251, 251, 251, 249, 246, + 246, 246, 246, 246, 246, 244, 241, 241, 241, 241, 241, 241, 241, 241, 242, 242, + 241, 241, 241, 241, 241, 241, 239, 240, 240, 240, 240, 239, 236, 238, 239, 242, + 241, 240, 242, 241, 242, 243, 244, 241, 240, 242, 243, 242, 237, 239, 240, 237, + 226, 198, 162, 85, 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 252, 250, 251, 251, 250, 250, 250, 247, 246, 246, 244, 245, 245, 245, 240, 239, + 236, 238, 244, 246, 245, 242, 243, 241, 240, 239, 243, 241, 240, 240, 243, 242, + 238, 240, 240, 238, 229, 202, 166, 144, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 182, 35, 35, 33, 34, 33, 34, 33, 33, + 31, 31, 31, 35, 36, 39, 38, 38, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 35, 27, 28, 35, 37, 31, 37, 40, 34, 42, + 42, 24, 39, 30, 38, 25, 29, 42, 29, 32, 28, 38, 34, 41, 35, 23, + 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 30, 41, 37, 38, 34, 29, 28, 33, 35, 34, 27, 42, + 36, 2, 36, 42, 50, 42, 45, 28, 31, 28, 25, 131, 34, 25, 35, 43, + 34, 35, 32, 27, 35, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 183, 26, 34, 40, 45, 35, 27, 33, 31, 25, 29, 40, + 39, 29, 28, 28, 53, 29, 52, 51, 69, 36, 26, 63, 29, 75, 25, 62, + 36, 42, 28, 33, 23, 28, 33, 34, 42, 31, 34, 36, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 180, 39, 17, 27, 39, 37, 35, 13, 38, 50, 49, 16, 23, 28, + 33, 38, 46, 49, 40, 29, 34, 25, 23, 64, 121, 46, 18, 89, 71, 47, + 57, 54, 44, 56, 22, 43, 30, 28, 19, 37, 43, 32, 38, 34, 35, 35, + 34, 107, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 180, 32, 22, 38, 48, 23, 34, 54, 27, 29, 33, 57, 40, + 39, 31, 42, 34, 37, 53, 59, 51, 42, 43, 13, 42, 46, 44, 40, 85, + 84, 62, 77, 58, 72, 37, 64, 81, 61, 40, 57, 44, 35, 59, 57, 24, + 24, 31, 36, 36, 34, 34, 34, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 180, 38, 25, 41, 46, 32, 32, 31, 36, 75, 46, 42, + 48, 46, 50, 42, 45, 46, 60, 40, 33, 46, 47, 36, 36, 50, 28, 65, + 32, 40, 52, 72, 43, 76, 39, 70, 55, 74, 62, 42, 68, 59, 75, 60, + 51, 73, 68, 32, 29, 36, 31, 31, 30, 31, 34, 37, 37, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 179, 27, 38, 29, 30, 64, 22, 58, 57, 46, 35, 16, + 38, 81, 30, 47, 44, 34, 24, 43, 44, 40, 51, 36, 27, 29, 28, 23, + 28, 41, 44, 55, 56, 63, 37, 64, 59, 41, 61, 32, 49, 63, 54, 58, + 27, 64, 74, 65, 51, 67, 69, 51, 50, 44, 35, 32, 31, 31, 33, 34, + 33, 33, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 30, 40, 24, 26, 46, 31, 31, 80, 42, 66, + 39, 45, 56, 30, 29, 39, 58, 44, 27, 46, 38, 47, 41, 55, 33, 31, + 27, 23, 21, 24, 30, 35, 45, 44, 47, 53, 51, 51, 52, 56, 50, 62, + 48, 51, 53, 43, 67, 60, 72, 71, 50, 54, 61, 62, 60, 39, 47, 43, + 39, 37, 36, 36, 32, 29, 34, 108, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 183, 29, 35, 27, 63, 76, 52, 34, 73, + 50, 46, 57, 55, 54, 71, 47, 52, 42, 42, 55, 41, 50, 43, 37, 49, + 49, 55, 51, 57, 52, 50, 47, 45, 89, 38, 53, 72, 54, 38, 56, 56, + 44, 52, 46, 53, 62, 60, 55, 68, 71, 57, 75, 39, 50, 59, 74, 73, + 82, 51, 66, 46, 32, 33, 34, 28, 31, 39, 28, 37, 41, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 38, 27, 37, 35, 32, 27, + 59, 48, 33, 46, 45, 33, 62, 53, 57, 56, 48, 43, 50, 47, 64, 51, + 59, 49, 38, 46, 46, 50, 18, 49, 33, 35, 63, 35, 51, 47, 47, 66, + 55, 44, 55, 52, 46, 64, 60, 62, 66, 59, 51, 58, 59, 44, 41, 69, + 41, 48, 38, 65, 59, 100, 44, 60, 64, 49, 37, 36, 32, 25, 46, 34, + 31, 34, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 31, 38, 50, + 23, 39, 68, 27, 71, 81, 77, 68, 85, 70, 68, 51, 59, 46, 52, 39, + 60, 57, 66, 53, 61, 50, 37, 44, 43, 47, 54, 47, 54, 72, 68, 34, + 63, 49, 43, 60, 56, 51, 57, 50, 51, 76, 60, 58, 60, 57, 50, 57, + 59, 48, 32, 60, 60, 50, 80, 88, 80, 82, 60, 69, 72, 67, 65, 62, + 45, 23, 43, 32, 39, 45, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 26, 40, + 6, 27, 46, 34, 48, 27, 57, 23, 45, 68, 74, 58, 64, 60, 65, 51, + 58, 51, 52, 46, 61, 60, 59, 44, 52, 45, 40, 51, 47, 47, 89, 59, + 72, 87, 69, 45, 78, 56, 45, 53, 53, 56, 60, 51, 54, 78, 61, 52, + 54, 55, 53, 62, 67, 59, 76, 51, 65, 56, 88, 108, 120, 63, 80, 67, + 64, 76, 79, 67, 54, 52, 37, 28, 41, 47, 27, 25, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 34, 33, 38, 23, 41, 26, 40, 62, 38, 61, 56, 61, 46, 67, 78, 68, + 45, 56, 56, 52, 52, 65, 50, 56, 56, 58, 61, 42, 48, 48, 50, 62, + 55, 49, 54, 61, 52, 45, 73, 55, 56, 56, 48, 48, 46, 53, 57, 52, + 53, 67, 75, 59, 55, 59, 58, 62, 64, 58, 62, 63, 64, 91, 72, 106, + 88, 52, 62, 65, 72, 74, 59, 44, 52, 73, 54, 36, 33, 38, 35, 39, + 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 34, 35, 35, 34, 62, 44, 47, 41, 24, 54, 61, 34, 71, + 39, 56, 71, 68, 39, 53, 50, 51, 49, 71, 49, 61, 52, 55, 69, 51, + 59, 60, 61, 71, 58, 48, 42, 41, 50, 43, 61, 59, 59, 38, 49, 43, + 42, 47, 51, 52, 54, 54, 82, 63, 56, 64, 65, 66, 67, 62, 42, 70, + 72, 86, 101, 87, 48, 46, 57, 70, 73, 60, 51, 54, 57, 56, 61, 62, + 50, 38, 36, 37, 36, 35, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 34, 35, 36, 36, 34, 39, 55, 35, 26, 30, + 26, 56, 36, 67, 53, 63, 74, 64, 57, 56, 52, 48, 53, 61, 51, 53, + 55, 56, 69, 57, 70, 68, 63, 66, 53, 45, 60, 30, 61, 59, 48, 55, + 72, 33, 48, 46, 47, 49, 49, 57, 60, 52, 84, 62, 55, 66, 70, 70, + 70, 66, 84, 72, 70, 56, 99, 62, 63, 79, 74, 72, 63, 56, 62, 72, + 64, 49, 58, 83, 67, 35, 33, 31, 28, 43, 33, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 31, 33, 34, 36, 36, 37, 38, 49, + 44, 48, 59, 61, 69, 76, 48, 58, 64, 63, 67, 39, 57, 35, 58, 44, + 56, 48, 54, 43, 61, 57, 61, 54, 71, 68, 56, 57, 44, 41, 47, 42, + 47, 34, 53, 46, 47, 54, 49, 50, 55, 54, 50, 61, 67, 56, 91, 65, + 58, 69, 71, 68, 65, 60, 89, 61, 67, 104, 71, 66, 74, 93, 81, 67, + 61, 65, 64, 58, 60, 71, 64, 87, 54, 19, 39, 45, 28, 35, 31, 33, + 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 34, 33, 30, 27, 30, + 37, 43, 34, 45, 21, 43, 75, 27, 55, 61, 44, 58, 55, 72, 57, 51, + 37, 57, 39, 48, 51, 45, 48, 58, 59, 53, 41, 49, 56, 55, 48, 42, + 44, 49, 38, 45, 50, 52, 48, 47, 49, 54, 54, 47, 47, 56, 62, 59, + 52, 49, 80, 70, 56, 53, 58, 66, 68, 67, 80, 65, 95, 85, 69, 97, + 102, 100, 74, 58, 68, 72, 91, 64, 47, 27, 102, 62, 70, 91, 55, 27, + 34, 39, 39, 36, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 31, + 32, 34, 34, 34, 32, 30, 53, 54, 68, 15, 46, 49, 19, 71, 72, 63, + 48, 40, 52, 54, 57, 68, 38, 41, 50, 56, 57, 53, 53, 53, 42, 50, + 57, 57, 51, 47, 52, 57, 59, 64, 73, 81, 88, 95, 99, 101, 102, 92, + 86, 85, 81, 72, 64, 63, 70, 63, 58, 57, 62, 71, 77, 81, 58, 101, + 88, 65, 84, 99, 88, 71, 78, 78, 88, 82, 71, 55, 78, 107, 37, 98, + 91, 37, 25, 37, 32, 28, 35, 34, 34, 34, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 182, 32, 29, 30, 33, 38, 39, 34, 28, 39, 52, 67, 72, 70, 51, + 55, 32, 49, 66, 84, 60, 63, 38, 48, 55, 62, 57, 58, 63, 55, 41, + 42, 51, 61, 73, 89, 101, 112, 126, 142, 155, 135, 136, 139, 148, 157, 163, + 164, 163, 178, 175, 172, 174, 176, 178, 182, 187, 146, 140, 129, 111, 92, 74, + 61, 55, 61, 92, 65, 69, 83, 65, 79, 89, 80, 84, 76, 70, 59, 68, + 72, 78, 113, 96, 79, 67, 48, 28, 29, 46, 35, 37, 38, 37, 37, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 181, 35, 36, 32, 29, 30, 34, 38, 41, 41, 48, 39, + 35, 21, 60, 55, 16, 65, 58, 61, 58, 46, 70, 72, 71, 63, 71, 61, + 51, 48, 52, 70, 103, 132, 143, 147, 149, 146, 141, 140, 145, 151, 170, 172, + 173, 175, 178, 179, 178, 178, 185, 185, 185, 184, 182, 183, 188, 193, 187, 185, + 181, 170, 153, 129, 106, 93, 74, 57, 65, 97, 81, 65, 84, 76, 53, 92, + 94, 83, 57, 84, 82, 78, 42, 72, 54, 49, 88, 77, 44, 58, 34, 37, + 37, 36, 35, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 33, 32, 35, 35, 33, 31, 30, 33, + 40, 44, 65, 42, 57, 82, 64, 60, 61, 53, 58, 73, 61, 54, 46, 55, + 46, 50, 34, 65, 99, 121, 131, 134, 130, 122, 131, 137, 141, 143, 144, 149, + 157, 165, 158, 163, 170, 170, 170, 171, 174, 180, 180, 183, 184, 180, 174, 171, + 173, 175, 174, 174, 175, 182, 186, 181, 168, 158, 134, 98, 94, 70, 54, 80, + 82, 66, 107, 96, 66, 73, 80, 111, 84, 57, 57, 50, 76, 71, 38, 64, + 84, 37, 35, 37, 35, 33, 30, 30, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 32, 31, 32, 36, + 38, 36, 32, 32, 34, 38, 24, 87, 33, 52, 51, 30, 70, 63, 78, 119, + 122, 114, 65, 58, 58, 90, 114, 126, 130, 121, 118, 128, 134, 131, 142, 145, + 147, 147, 146, 149, 155, 161, 160, 168, 175, 177, 174, 177, 184, 190, 169, 176, + 180, 178, 176, 177, 177, 177, 183, 175, 168, 169, 175, 177, 173, 166, 174, 164, + 143, 86, 71, 66, 46, 87, 90, 83, 82, 97, 82, 69, 70, 94, 95, 72, + 68, 87, 92, 79, 81, 98, 49, 45, 38, 34, 33, 34, 35, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 33, + 33, 32, 36, 35, 34, 34, 34, 38, 42, 44, 26, 27, 75, 79, 50, 85, + 62, 58, 88, 85, 71, 71, 80, 93, 102, 120, 133, 135, 135, 132, 131, 136, + 140, 143, 147, 149, 152, 153, 155, 157, 162, 165, 170, 172, 176, 177, 178, 179, + 183, 186, 189, 192, 191, 185, 179, 178, 174, 168, 181, 175, 167, 163, 165, 167, + 165, 162, 149, 166, 171, 162, 141, 90, 59, 87, 71, 58, 67, 90, 111, 102, + 104, 110, 107, 98, 108, 105, 85, 82, 69, 30, 59, 50, 40, 35, 37, 39, + 38, 37, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 32, 32, 34, 36, 43, 36, 27, 26, 35, 46, 56, 61, 62, 44, + 30, 47, 45, 69, 63, 78, 93, 86, 95, 99, 132, 119, 121, 124, 135, 132, + 138, 153, 158, 153, 152, 160, 171, 173, 174, 173, 171, 171, 172, 173, 181, 180, + 180, 183, 187, 190, 192, 192, 187, 191, 189, 183, 181, 184, 182, 176, 176, 174, + 174, 171, 165, 161, 157, 155, 154, 156, 148, 157, 147, 146, 151, 91, 70, 77, + 88, 67, 81, 84, 99, 87, 79, 114, 95, 51, 50, 57, 61, 84, 59, 46, + 32, 27, 30, 34, 33, 31, 38, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 34, 31, 30, 32, 23, 27, 26, 44, 32, 82, + 49, 60, 57, 49, 123, 97, 115, 122, 78, 39, 77, 87, 123, 136, 112, 107, + 130, 143, 152, 156, 160, 163, 165, 170, 177, 184, 190, 179, 168, 167, 174, 181, + 180, 177, 178, 183, 188, 190, 187, 184, 185, 186, 189, 191, 191, 191, 190, 191, + 190, 190, 189, 187, 184, 181, 176, 173, 169, 164, 160, 156, 155, 155, 156, 155, + 153, 151, 103, 71, 69, 82, 94, 94, 109, 114, 173, 44, 64, 82, 30, 60, + 99, 35, 44, 50, 48, 34, 27, 31, 31, 26, 34, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 180, 37, 45, 42, 36, 32, 48, 30, + 41, 22, 56, 61, 62, 46, 60, 85, 53, 82, 99, 91, 129, 124, 118, 103, + 112, 124, 123, 136, 154, 156, 164, 168, 172, 176, 179, 184, 189, 194, 190, 187, + 181, 182, 184, 186, 184, 182, 181, 183, 187, 188, 187, 185, 187, 187, 191, 191, + 191, 191, 190, 191, 191, 191, 194, 194, 193, 192, 190, 188, 185, 181, 174, 170, + 166, 164, 161, 156, 150, 147, 144, 117, 75, 75, 68, 99, 89, 71, 57, 82, + 67, 53, 67, 88, 58, 75, 58, 60, 52, 35, 28, 34, 38, 38, 38, 36, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 36, 30, 31, + 40, 50, 62, 69, 89, 57, 74, 45, 76, 63, 70, 42, 61, 55, 66, 57, + 134, 114, 127, 108, 110, 126, 142, 160, 171, 166, 176, 180, 185, 187, 189, 192, + 194, 197, 192, 194, 196, 198, 194, 192, 188, 187, 186, 186, 187, 188, 191, 192, + 192, 190, 187, 186, 185, 185, 185, 187, 189, 190, 193, 195, 197, 199, 199, 199, + 198, 196, 187, 184, 180, 176, 170, 163, 155, 149, 158, 134, 125, 73, 68, 54, + 81, 69, 84, 81, 86, 98, 117, 71, 24, 54, 51, 55, 49, 33, 24, 26, + 30, 30, 41, 39, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, + 35, 35, 34, 39, 51, 60, 36, 48, 30, 50, 61, 66, 69, 42, 71, 97, + 85, 80, 78, 124, 99, 124, 102, 111, 131, 151, 161, 167, 173, 172, 180, 182, + 187, 190, 191, 194, 194, 194, 194, 196, 196, 197, 194, 190, 185, 182, 185, 182, + 180, 184, 188, 191, 190, 187, 179, 179, 178, 177, 179, 182, 185, 187, 186, 189, + 195, 199, 200, 201, 201, 200, 192, 191, 190, 187, 183, 176, 167, 161, 151, 151, + 130, 133, 63, 60, 57, 88, 68, 52, 97, 83, 67, 67, 94, 86, 58, 64, + 65, 56, 48, 44, 41, 39, 39, 39, 37, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 34, 30, 28, 29, 28, 20, 11, 48, 90, 76, 97, 60, 71, + 83, 92, 75, 55, 72, 66, 74, 83, 136, 89, 107, 132, 157, 171, 176, 175, + 177, 183, 181, 183, 185, 188, 191, 192, 191, 190, 191, 187, 183, 182, 181, 178, + 172, 166, 170, 169, 167, 171, 175, 178, 177, 172, 168, 166, 167, 169, 170, 173, + 177, 180, 180, 183, 189, 193, 197, 198, 199, 200, 198, 198, 197, 197, 194, 189, + 180, 175, 175, 146, 154, 127, 127, 77, 77, 56, 88, 95, 81, 108, 73, 100, + 51, 54, 43, 48, 51, 47, 43, 37, 32, 28, 34, 37, 39, 111, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 177, 33, 40, 39, 40, 55, 78, 93, 82, 81, + 67, 69, 80, 93, 104, 94, 99, 93, 69, 90, 81, 115, 81, 122, 142, 157, + 162, 164, 175, 179, 179, 186, 183, 183, 183, 183, 185, 185, 184, 183, 185, 179, + 171, 168, 168, 168, 164, 160, 160, 159, 161, 162, 165, 166, 165, 162, 156, 156, + 155, 157, 159, 161, 163, 163, 171, 174, 178, 182, 186, 189, 192, 195, 201, 202, + 201, 201, 198, 194, 187, 182, 171, 171, 148, 155, 124, 136, 90, 54, 79, 47, + 95, 88, 149, 75, 61, 53, 62, 60, 58, 56, 56, 55, 51, 48, 32, 37, + 40, 40, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 39, 46, 45, 29, 18, 27, + 49, 62, 47, 53, 76, 59, 72, 85, 111, 124, 135, 86, 124, 109, 86, 103, + 96, 119, 151, 165, 160, 157, 173, 178, 173, 178, 179, 176, 172, 171, 171, 170, + 168, 166, 168, 166, 161, 158, 156, 156, 157, 158, 153, 156, 160, 161, 160, 159, + 157, 156, 147, 148, 148, 149, 148, 146, 145, 143, 152, 154, 157, 162, 166, 172, + 178, 182, 193, 195, 194, 194, 193, 192, 187, 183, 166, 167, 176, 147, 143, 127, + 123, 90, 51, 79, 80, 92, 28, 77, 63, 80, 58, 52, 48, 51, 55, 54, + 45, 38, 35, 39, 40, 39, 37, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 37, 30, + 26, 41, 71, 88, 76, 51, 73, 66, 79, 63, 61, 78, 62, 67, 102, 142, + 100, 117, 82, 91, 135, 138, 135, 160, 165, 165, 179, 176, 166, 169, 171, 168, + 160, 157, 155, 154, 150, 147, 147, 149, 151, 147, 142, 141, 146, 152, 146, 151, + 156, 158, 154, 151, 150, 150, 145, 145, 145, 144, 141, 137, 132, 129, 135, 135, + 137, 141, 147, 155, 161, 167, 180, 180, 180, 183, 185, 186, 184, 182, 182, 170, + 162, 161, 138, 130, 123, 121, 99, 64, 66, 70, 113, 96, 72, 66, 61, 56, + 56, 65, 71, 65, 49, 35, 38, 40, 40, 38, 34, 108, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 33, 33, 38, 26, 34, 82, 40, 69, 62, 61, 62, 73, 60, 56, 66, + 61, 66, 111, 103, 105, 91, 112, 117, 140, 140, 148, 156, 163, 164, 160, 157, + 159, 164, 157, 160, 146, 154, 138, 148, 137, 143, 143, 150, 147, 161, 148, 153, + 150, 164, 171, 172, 172, 173, 172, 170, 168, 168, 164, 168, 176, 162, 158, 165, + 159, 158, 150, 150, 146, 143, 141, 143, 147, 153, 161, 164, 171, 180, 179, 173, + 175, 184, 180, 177, 170, 161, 157, 149, 130, 112, 122, 79, 49, 75, 54, 50, + 94, 59, 74, 64, 62, 45, 67, 61, 55, 28, 33, 35, 34, 34, 34, 36, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 33, 35, 30, 26, 26, 54, 44, 52, 76, 68, 56, + 60, 60, 80, 109, 108, 109, 84, 94, 100, 111, 119, 135, 138, 140, 149, 152, + 157, 157, 157, 154, 152, 150, 150, 147, 139, 145, 145, 155, 155, 161, 174, 181, + 176, 188, 174, 181, 181, 194, 193, 195, 197, 199, 199, 199, 197, 199, 197, 200, + 193, 187, 183, 184, 189, 187, 186, 175, 161, 155, 155, 156, 154, 152, 156, 158, + 150, 142, 153, 174, 178, 166, 169, 173, 172, 163, 154, 149, 141, 134, 126, 102, + 87, 62, 67, 79, 60, 75, 51, 51, 50, 56, 56, 59, 58, 63, 60, 55, + 45, 39, 38, 39, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 181, 33, 34, 29, 48, 60, 84, 92, + 54, 76, 69, 58, 64, 63, 74, 85, 66, 58, 74, 94, 103, 129, 123, 145, + 137, 142, 148, 149, 150, 153, 156, 155, 150, 146, 147, 153, 164, 164, 169, 162, + 165, 165, 185, 192, 187, 200, 188, 199, 200, 215, 211, 213, 214, 215, 216, 216, + 215, 216, 216, 219, 200, 208, 206, 192, 206, 196, 176, 171, 165, 158, 149, 138, + 123, 113, 120, 116, 130, 155, 160, 149, 158, 181, 171, 176, 180, 176, 168, 156, + 142, 129, 127, 116, 108, 69, 70, 83, 58, 74, 75, 71, 58, 74, 52, 53, + 44, 62, 52, 42, 29, 24, 27, 31, 31, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 33, 43, 21, + 25, 34, 80, 92, 56, 66, 63, 63, 76, 71, 73, 86, 88, 100, 93, 109, + 116, 130, 127, 142, 141, 146, 149, 149, 147, 145, 144, 143, 139, 138, 169, 163, + 162, 131, 123, 105, 121, 128, 177, 189, 187, 201, 193, 207, 210, 223, 220, 221, + 220, 220, 218, 217, 216, 217, 214, 223, 198, 220, 219, 190, 203, 186, 149, 145, + 135, 118, 98, 83, 79, 80, 95, 132, 148, 130, 126, 150, 162, 154, 156, 154, + 153, 161, 168, 165, 151, 136, 133, 119, 109, 104, 71, 64, 86, 61, 63, 56, + 44, 57, 52, 58, 51, 55, 56, 48, 40, 37, 37, 42, 43, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, + 33, 33, 32, 21, 25, 24, 81, 64, 56, 48, 70, 76, 100, 99, 90, 89, + 80, 90, 111, 118, 133, 128, 139, 137, 148, 149, 136, 142, 145, 146, 148, 154, + 163, 172, 109, 121, 156, 169, 196, 183, 181, 168, 185, 199, 201, 217, 208, 222, + 222, 232, 230, 230, 229, 228, 226, 226, 225, 226, 223, 231, 204, 226, 223, 193, + 207, 188, 168, 170, 172, 168, 154, 132, 109, 94, 59, 45, 55, 94, 122, 132, + 146, 167, 175, 168, 160, 160, 164, 163, 160, 155, 146, 125, 118, 120, 88, 68, + 78, 69, 62, 61, 64, 54, 67, 65, 68, 56, 48, 48, 44, 37, 29, 25, + 24, 26, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 34, 33, 33, 27, 42, 71, 60, 98, 57, 61, 60, 80, 77, + 95, 99, 102, 102, 84, 85, 114, 119, 142, 134, 151, 139, 148, 141, 157, 159, + 152, 140, 126, 119, 122, 128, 140, 123, 119, 128, 166, 188, 199, 195, 200, 214, + 216, 229, 218, 231, 228, 234, 236, 236, 235, 236, 236, 237, 239, 240, 237, 240, + 217, 225, 220, 204, 216, 206, 183, 178, 179, 188, 191, 173, 137, 106, 146, 136, + 96, 52, 62, 113, 147, 145, 148, 155, 165, 171, 167, 158, 155, 156, 152, 131, + 136, 100, 106, 93, 34, 85, 80, 88, 98, 67, 67, 54, 63, 50, 59, 62, + 62, 55, 43, 35, 34, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 181, 34, 33, 33, 40, 50, 83, 54, 67, 57, + 59, 98, 157, 129, 114, 99, 98, 105, 97, 105, 122, 130, 143, 144, 148, 140, + 131, 122, 92, 99, 104, 109, 115, 122, 132, 139, 133, 130, 126, 149, 173, 202, + 208, 211, 210, 225, 225, 234, 221, 236, 233, 239, 240, 241, 240, 241, 240, 242, + 243, 244, 239, 239, 232, 225, 220, 220, 224, 220, 232, 212, 190, 183, 188, 192, + 186, 177, 146, 140, 138, 141, 135, 116, 98, 87, 74, 84, 108, 137, 156, 160, + 157, 156, 152, 135, 141, 97, 109, 107, 37, 82, 60, 64, 67, 58, 53, 50, + 56, 57, 50, 50, 51, 47, 39, 33, 32, 33, 36, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 33, 33, 32, 26, 33, + 86, 67, 68, 86, 47, 100, 63, 63, 87, 104, 117, 122, 107, 112, 134, 144, + 141, 153, 136, 139, 114, 107, 111, 115, 120, 127, 138, 146, 151, 151, 160, 178, + 181, 198, 187, 204, 207, 224, 220, 235, 232, 240, 228, 245, 245, 252, 248, 247, + 245, 244, 242, 241, 241, 241, 233, 238, 246, 232, 227, 236, 228, 228, 216, 219, + 221, 218, 211, 204, 199, 198, 222, 212, 192, 181, 186, 185, 149, 104, 103, 86, + 84, 110, 147, 166, 164, 157, 156, 141, 135, 117, 105, 103, 86, 69, 75, 64, + 46, 65, 59, 68, 57, 64, 68, 65, 61, 56, 50, 45, 40, 39, 35, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 28, + 30, 36, 52, 77, 78, 63, 61, 69, 71, 73, 57, 83, 78, 76, 115, 102, + 115, 113, 126, 139, 145, 139, 133, 132, 127, 120, 157, 166, 178, 184, 187, 192, + 199, 206, 215, 217, 218, 220, 222, 224, 225, 227, 233, 234, 236, 237, 239, 241, + 243, 244, 243, 243, 242, 240, 238, 237, 236, 238, 241, 243, 243, 242, 240, 239, + 238, 237, 239, 238, 237, 236, 235, 234, 234, 232, 229, 232, 230, 225, 224, 224, + 214, 202, 142, 136, 113, 89, 94, 128, 155, 161, 154, 144, 152, 136, 105, 110, + 74, 74, 69, 55, 67, 63, 79, 86, 77, 52, 59, 49, 63, 70, 97, 74, + 58, 32, 36, 107, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 186, 41, 31, 28, 30, 53, 69, 67, 61, 72, 76, 61, 45, 73, 96, + 73, 115, 110, 87, 137, 136, 156, 146, 146, 149, 134, 128, 166, 218, 211, 218, + 226, 230, 232, 233, 238, 241, 236, 237, 237, 238, 239, 239, 240, 241, 238, 238, + 239, 239, 241, 242, 244, 245, 244, 244, 242, 240, 238, 236, 235, 237, 241, 243, + 243, 243, 242, 242, 241, 241, 241, 241, 240, 240, 239, 239, 238, 238, 238, 241, + 241, 239, 241, 241, 236, 226, 228, 210, 174, 126, 80, 72, 109, 154, 179, 154, + 156, 138, 128, 97, 130, 71, 94, 61, 69, 54, 65, 48, 71, 75, 90, 65, + 45, 77, 64, 51, 33, 54, 35, 32, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 30, 26, 26, 35, 48, 31, 56, 66, 63, 67, 68, + 61, 58, 87, 97, 91, 128, 84, 88, 129, 131, 124, 134, 125, 107, 123, 172, + 209, 218, 230, 236, 240, 243, 240, 241, 242, 246, 246, 247, 247, 247, 248, 247, + 248, 246, 242, 240, 241, 240, 242, 243, 245, 245, 244, 243, 242, 240, 239, 239, + 239, 239, 243, 242, 242, 242, 242, 243, 244, 244, 242, 241, 241, 242, 240, 240, + 240, 240, 239, 241, 242, 241, 242, 246, 243, 238, 233, 233, 230, 211, 169, 122, + 95, 87, 122, 174, 138, 150, 126, 133, 116, 103, 56, 152, 100, 42, 36, 84, + 44, 50, 52, 71, 63, 71, 66, 86, 46, 7, 36, 33, 107, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 181, 30, 27, 33, 53, 71, 32, 55, + 63, 57, 59, 61, 67, 77, 100, 98, 141, 118, 92, 134, 115, 125, 131, 121, + 130, 168, 210, 231, 232, 233, 233, 238, 241, 242, 241, 242, 243, 246, 245, 246, + 245, 245, 244, 244, 243, 241, 240, 239, 239, 241, 243, 243, 244, 244, 243, 241, + 239, 237, 238, 240, 242, 242, 244, 243, 242, 241, 241, 242, 243, 244, 242, 242, + 241, 242, 241, 241, 242, 242, 241, 241, 239, 239, 238, 239, 238, 237, 227, 235, + 236, 229, 225, 208, 162, 111, 82, 121, 167, 137, 143, 131, 104, 118, 86, 74, + 98, 90, 61, 50, 80, 48, 61, 63, 78, 66, 71, 52, 63, 62, 40, 36, + 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 38, 38, 34, 34, + 43, 53, 67, 68, 58, 55, 67, 71, 68, 71, 94, 93, 138, 100, 123, 142, + 99, 113, 111, 129, 168, 207, 228, 225, 222, 226, 236, 239, 241, 243, 242, 243, + 244, 246, 244, 244, 243, 243, 242, 243, 241, 240, 239, 240, 241, 244, 246, 247, + 246, 244, 240, 236, 232, 231, 233, 238, 244, 247, 245, 242, 241, 241, 241, 241, + 241, 241, 242, 242, 242, 242, 241, 241, 242, 242, 246, 244, 243, 242, 241, 240, + 241, 243, 242, 245, 237, 223, 222, 230, 220, 198, 141, 76, 138, 161, 137, 124, + 125, 110, 127, 74, 43, 127, 59, 50, 53, 76, 75, 55, 50, 38, 64, 62, + 70, 58, 46, 39, 34, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 28, 30, 32, 37, 49, 61, 70, 74, 72, 72, 79, 77, 78, 88, 97, 105, + 106, 104, 135, 95, 88, 105, 153, 195, 225, 222, 221, 237, 244, 236, 236, 235, + 236, 236, 235, 236, 236, 237, 241, 242, 241, 241, 241, 241, 239, 239, 239, 241, + 243, 247, 248, 248, 243, 238, 230, 223, 218, 215, 220, 228, 237, 242, 238, 238, + 239, 240, 241, 241, 241, 240, 242, 243, 242, 242, 240, 240, 239, 240, 242, 241, + 242, 244, 243, 241, 244, 247, 242, 238, 238, 245, 243, 233, 226, 226, 208, 120, + 60, 148, 141, 134, 131, 125, 109, 137, 82, 52, 107, 69, 62, 70, 67, 82, + 68, 78, 92, 130, 96, 52, 48, 40, 35, 33, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 37, 32, 35, 45, 59, 76, 91, 58, 70, 79, 85, 88, 87, + 100, 126, 120, 124, 117, 127, 113, 79, 108, 141, 219, 209, 215, 235, 235, 221, + 228, 250, 238, 235, 234, 234, 235, 236, 236, 237, 235, 235, 235, 235, 235, 235, + 234, 236, 237, 240, 244, 246, 246, 241, 233, 225, 208, 199, 190, 187, 193, 205, + 218, 225, 229, 230, 235, 239, 241, 242, 241, 241, 243, 243, 241, 240, 239, 238, + 236, 237, 234, 233, 236, 240, 239, 235, 237, 244, 248, 237, 232, 239, 243, 240, + 237, 236, 226, 185, 99, 76, 161, 129, 134, 135, 106, 109, 76, 95, 86, 90, + 103, 74, 57, 60, 61, 85, 61, 54, 56, 91, 46, 40, 36, 37, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 28, 29, 39, 50, 59, 64, 71, 73, 69, + 65, 77, 97, 106, 117, 136, 114, 108, 135, 123, 63, 90, 125, 181, 211, 226, + 235, 227, 222, 228, 232, 231, 227, 226, 225, 226, 229, 231, 231, 231, 233, 234, + 234, 235, 236, 236, 236, 236, 235, 238, 241, 242, 239, 231, 221, 211, 187, 177, + 167, 163, 170, 182, 197, 207, 220, 225, 230, 236, 241, 243, 242, 242, 242, 243, + 241, 239, 237, 234, 234, 233, 231, 230, 233, 238, 235, 230, 230, 238, 229, 245, + 248, 235, 231, 242, 248, 241, 219, 237, 179, 92, 99, 156, 122, 125, 126, 126, + 99, 75, 78, 57, 93, 51, 99, 81, 72, 50, 70, 68, 73, 57, 43, 39, + 38, 41, 112, 255, 255, 255, 255, 255, 255, 255, 255, 42, 30, 39, 54, 77, + 70, 84, 69, 75, 108, 67, 78, 111, 124, 112, 97, 136, 103, 125, 62, 126, + 181, 214, 216, 229, 232, 226, 223, 229, 230, 222, 223, 228, 227, 225, 237, 233, + 231, 234, 234, 230, 229, 232, 236, 240, 241, 241, 240, 234, 230, 231, 233, 224, + 206, 186, 162, 152, 144, 142, 150, 158, 163, 167, 194, 210, 228, 233, 231, 231, + 238, 245, 246, 241, 235, 233, 234, 232, 226, 222, 233, 215, 236, 229, 220, 230, + 219, 229, 228, 226, 227, 230, 233, 233, 238, 242, 230, 234, 212, 158, 82, 111, + 135, 131, 132, 121, 114, 70, 95, 89, 73, 93, 55, 54, 66, 64, 82, 86, + 65, 90, 69, 59, 47, 38, 37, 255, 255, 255, 255, 255, 255, 255, 46, 39, + 37, 16, 82, 93, 97, 72, 69, 66, 73, 71, 105, 123, 137, 105, 111, 113, + 144, 81, 121, 145, 225, 227, 234, 223, 221, 229, 231, 220, 215, 220, 231, 230, + 222, 223, 240, 243, 237, 237, 229, 227, 225, 226, 230, 235, 237, 237, 234, 228, + 226, 229, 230, 216, 189, 165, 146, 145, 145, 141, 141, 145, 156, 168, 178, 197, + 215, 224, 225, 225, 230, 237, 234, 241, 244, 234, 218, 210, 218, 228, 227, 234, + 233, 233, 229, 234, 236, 219, 212, 213, 212, 215, 225, 238, 239, 234, 242, 246, + 224, 188, 126, 90, 127, 133, 117, 140, 106, 76, 131, 120, 129, 46, 88, 57, + 72, 31, 95, 94, 96, 74, 111, 63, 29, 31, 37, 255, 255, 255, 255, 255, + 255, 255, 21, 40, 20, 55, 83, 138, 98, 67, 72, 79, 69, 86, 113, 107, + 132, 108, 116, 111, 133, 75, 134, 192, 228, 230, 234, 226, 223, 225, 216, 206, + 211, 225, 215, 218, 207, 201, 200, 201, 200, 211, 212, 212, 213, 217, 224, 231, + 235, 238, 231, 222, 216, 216, 217, 202, 174, 149, 146, 145, 145, 142, 140, 143, + 151, 162, 172, 191, 210, 219, 220, 222, 228, 235, 243, 238, 230, 220, 212, 209, + 208, 209, 213, 227, 208, 219, 222, 216, 235, 214, 219, 220, 213, 203, 205, 222, + 234, 238, 241, 245, 225, 218, 181, 84, 121, 146, 136, 142, 122, 117, 72, 108, + 107, 131, 45, 50, 75, 70, 67, 81, 92, 102, 94, 80, 56, 40, 43, 117, + 255, 255, 255, 255, 255, 181, 39, 35, 31, 25, 67, 94, 110, 99, 75, 87, + 78, 85, 100, 101, 117, 111, 129, 130, 95, 106, 140, 228, 215, 227, 232, 231, + 217, 201, 200, 212, 214, 205, 182, 185, 169, 169, 165, 174, 168, 181, 178, 183, + 190, 201, 211, 223, 229, 234, 236, 222, 204, 195, 191, 181, 161, 143, 142, 137, + 133, 135, 142, 149, 152, 158, 173, 188, 203, 212, 214, 218, 225, 233, 247, 233, + 216, 208, 205, 201, 191, 181, 189, 190, 171, 179, 184, 175, 190, 196, 205, 212, + 217, 207, 197, 200, 219, 238, 238, 239, 227, 233, 207, 107, 102, 146, 122, 145, + 145, 125, 54, 139, 105, 97, 99, 61, 49, 90, 76, 87, 73, 79, 98, 99, + 70, 28, 17, 41, 255, 255, 255, 255, 255, 34, 26, 27, 52, 64, 82, 73, + 76, 70, 72, 76, 78, 75, 102, 131, 111, 112, 146, 129, 88, 124, 190, 224, + 232, 231, 237, 221, 198, 187, 196, 208, 191, 162, 147, 155, 143, 164, 170, 185, + 165, 168, 151, 158, 170, 182, 194, 204, 213, 218, 235, 219, 195, 176, 166, 157, + 145, 138, 134, 137, 139, 139, 141, 146, 151, 158, 168, 179, 190, 197, 202, 210, + 223, 234, 231, 226, 215, 203, 190, 179, 170, 165, 158, 158, 158, 140, 146, 156, + 150, 171, 166, 173, 190, 203, 200, 193, 202, 224, 243, 242, 236, 234, 207, 148, + 85, 127, 119, 142, 142, 114, 100, 97, 132, 57, 148, 77, 57, 65, 98, 89, + 108, 93, 88, 79, 68, 60, 48, 35, 255, 255, 255, 255, 255, 34, 47, 39, + 31, 77, 59, 79, 70, 83, 68, 87, 101, 95, 111, 143, 112, 129, 140, 110, + 80, 142, 211, 216, 238, 235, 226, 210, 197, 193, 183, 162, 152, 153, 158, 186, + 181, 190, 156, 149, 122, 135, 164, 170, 179, 186, 193, 199, 206, 210, 224, 212, + 190, 167, 148, 140, 139, 142, 161, 174, 184, 176, 157, 144, 145, 155, 163, 171, + 180, 187, 195, 207, 224, 237, 225, 215, 201, 193, 188, 179, 165, 154, 139, 155, + 164, 130, 146, 178, 161, 175, 164, 158, 161, 171, 179, 184, 196, 214, 237, 239, + 241, 227, 207, 189, 99, 116, 141, 131, 147, 121, 82, 55, 106, 114, 92, 95, + 80, 78, 70, 86, 118, 126, 116, 90, 54, 29, 24, 33, 255, 255, 255, 255, + 255, 32, 33, 19, 61, 74, 102, 79, 92, 69, 81, 110, 107, 113, 115, 125, + 115, 148, 132, 93, 85, 165, 204, 224, 224, 235, 213, 203, 191, 179, 156, 142, + 151, 173, 111, 151, 155, 176, 147, 165, 165, 202, 206, 206, 206, 205, 205, 208, + 216, 220, 213, 204, 183, 158, 137, 138, 157, 177, 206, 218, 227, 220, 197, 175, + 158, 153, 161, 167, 175, 182, 190, 202, 218, 229, 225, 211, 195, 191, 195, 193, + 181, 167, 172, 178, 158, 141, 162, 171, 163, 180, 163, 171, 165, 151, 149, 168, + 190, 205, 222, 235, 240, 218, 217, 203, 130, 105, 129, 132, 161, 128, 75, 108, + 82, 90, 91, 115, 63, 87, 60, 96, 86, 91, 90, 89, 72, 50, 44, 50, + 113, 255, 255, 255, 255, 30, 42, 43, 56, 79, 66, 88, 93, 85, 96, 110, + 66, 98, 118, 119, 123, 148, 146, 88, 127, 171, 220, 228, 226, 234, 221, 196, + 158, 133, 143, 171, 184, 182, 193, 191, 148, 156, 138, 166, 149, 166, 232, 231, + 223, 216, 211, 213, 220, 226, 206, 196, 177, 149, 134, 146, 185, 221, 227, 229, + 233, 238, 236, 218, 186, 161, 160, 164, 171, 174, 179, 187, 199, 209, 211, 215, + 215, 206, 197, 192, 199, 206, 233, 203, 138, 148, 164, 124, 130, 163, 129, 173, + 191, 162, 142, 159, 180, 188, 218, 239, 242, 217, 228, 195, 147, 87, 130, 131, + 142, 148, 123, 61, 84, 89, 114, 108, 63, 67, 87, 83, 96, 103, 92, 79, + 74, 75, 59, 32, 32, 255, 255, 255, 181, 33, 31, 26, 31, 42, 94, 81, + 84, 102, 85, 73, 74, 92, 121, 119, 114, 146, 121, 100, 100, 191, 216, 227, + 233, 221, 212, 187, 147, 127, 150, 97, 187, 220, 231, 157, 84, 78, 43, 70, + 72, 138, 145, 238, 233, 231, 240, 204, 191, 182, 202, 163, 131, 147, 187, 206, + 214, 231, 242, 246, 246, 246, 242, 236, 229, 223, 184, 171, 157, 197, 173, 179, + 206, 201, 217, 216, 212, 212, 223, 237, 237, 229, 200, 155, 140, 90, 76, 117, + 136, 171, 224, 158, 150, 200, 174, 146, 153, 193, 208, 231, 241, 237, 231, 211, + 160, 105, 99, 139, 120, 140, 118, 89, 130, 99, 119, 103, 73, 44, 101, 89, + 126, 141, 171, 139, 102, 48, 41, 27, 39, 255, 255, 255, 32, 32, 45, 46, + 67, 80, 87, 86, 105, 114, 91, 82, 109, 83, 138, 121, 142, 129, 112, 97, + 108, 195, 218, 229, 232, 218, 206, 178, 118, 146, 100, 168, 226, 225, 216, 122, + 102, 69, 87, 187, 103, 128, 119, 227, 240, 226, 219, 198, 200, 187, 157, 149, + 145, 169, 208, 224, 231, 246, 244, 246, 246, 246, 244, 241, 235, 229, 213, 182, + 169, 177, 171, 167, 197, 201, 182, 202, 218, 223, 224, 229, 235, 234, 183, 134, + 84, 67, 58, 68, 106, 125, 215, 228, 209, 151, 186, 156, 152, 161, 206, 225, + 234, 232, 229, 212, 163, 109, 88, 128, 119, 141, 124, 92, 121, 91, 115, 78, + 56, 64, 71, 92, 118, 95, 72, 68, 52, 40, 30, 36, 38, 255, 255, 255, + 31, 31, 36, 14, 29, 71, 84, 116, 124, 100, 87, 91, 103, 109, 123, 137, + 145, 128, 103, 97, 124, 201, 222, 229, 232, 219, 203, 175, 125, 117, 140, 203, + 229, 227, 205, 114, 102, 55, 87, 201, 99, 99, 130, 194, 201, 199, 195, 182, + 182, 155, 130, 154, 177, 200, 225, 234, 235, 242, 243, 242, 242, 243, 244, 243, + 239, 235, 237, 200, 191, 163, 174, 166, 180, 189, 191, 195, 196, 199, 208, 217, + 218, 215, 145, 138, 103, 146, 135, 83, 107, 90, 200, 221, 217, 209, 130, 139, + 138, 151, 193, 213, 224, 228, 231, 222, 183, 139, 89, 125, 123, 146, 138, 109, + 124, 100, 102, 120, 76, 85, 78, 107, 107, 121, 106, 107, 82, 75, 43, 46, + 27, 255, 255, 255, 30, 30, 32, 30, 46, 91, 85, 101, 103, 105, 96, 97, + 97, 135, 115, 129, 132, 127, 98, 102, 146, 210, 228, 231, 230, 217, 179, 141, + 96, 112, 139, 183, 157, 187, 169, 139, 122, 130, 152, 210, 196, 209, 195, 196, + 187, 200, 193, 170, 164, 145, 131, 171, 204, 219, 233, 239, 236, 237, 242, 240, + 239, 240, 242, 243, 241, 240, 242, 221, 212, 168, 174, 180, 165, 170, 201, 194, + 186, 186, 193, 197, 192, 186, 115, 111, 71, 100, 85, 51, 113, 123, 197, 229, + 230, 197, 176, 102, 90, 149, 173, 200, 219, 226, 230, 225, 197, 165, 104, 128, + 128, 149, 151, 131, 136, 127, 74, 111, 58, 54, 58, 89, 90, 123, 117, 153, + 168, 145, 78, 43, 31, 255, 255, 255, 32, 32, 35, 47, 53, 98, 108, 103, + 87, 115, 110, 108, 124, 123, 126, 105, 135, 110, 97, 106, 165, 213, 228, 228, + 225, 208, 197, 101, 148, 127, 172, 152, 186, 172, 203, 217, 200, 225, 213, 203, + 215, 216, 222, 204, 192, 193, 172, 152, 153, 145, 147, 189, 214, 221, 234, 247, + 248, 246, 241, 239, 237, 238, 242, 243, 244, 243, 237, 240, 225, 186, 172, 203, + 174, 172, 169, 183, 195, 200, 192, 182, 180, 185, 212, 216, 204, 204, 171, 134, + 140, 130, 130, 162, 159, 136, 159, 128, 111, 136, 159, 191, 217, 225, 222, 214, + 194, 172, 114, 127, 132, 147, 158, 143, 131, 135, 108, 90, 62, 65, 71, 112, + 143, 124, 152, 118, 82, 43, 42, 36, 41, 255, 255, 255, 33, 33, 36, 42, + 41, 81, 120, 113, 90, 112, 89, 125, 116, 116, 111, 125, 139, 99, 101, 112, + 180, 211, 223, 221, 215, 196, 162, 132, 133, 157, 147, 190, 179, 196, 200, 210, + 215, 220, 220, 226, 215, 204, 200, 189, 172, 156, 151, 160, 154, 129, 180, 210, + 221, 219, 231, 245, 247, 247, 242, 240, 237, 238, 241, 243, 243, 242, 236, 246, + 229, 206, 178, 209, 198, 197, 169, 173, 181, 188, 190, 191, 196, 206, 223, 218, + 224, 222, 216, 221, 214, 201, 213, 211, 194, 201, 145, 158, 137, 126, 151, 182, + 211, 220, 218, 211, 199, 183, 120, 123, 132, 142, 158, 142, 111, 122, 90, 83, + 64, 53, 81, 96, 129, 124, 100, 106, 116, 79, 61, 27, 37, 255, 255, 255, + 34, 35, 41, 63, 88, 89, 90, 81, 93, 108, 78, 135, 93, 124, 109, 152, + 134, 99, 111, 120, 192, 209, 219, 215, 206, 185, 165, 171, 166, 163, 200, 212, + 208, 228, 223, 219, 222, 212, 218, 229, 213, 201, 186, 178, 166, 154, 170, 189, + 172, 147, 207, 227, 229, 222, 229, 237, 239, 242, 243, 241, 239, 239, 241, 241, + 240, 237, 238, 237, 231, 228, 196, 192, 213, 212, 201, 184, 171, 171, 180, 189, + 197, 207, 226, 224, 230, 236, 239, 246, 243, 230, 229, 238, 233, 193, 215, 155, + 144, 166, 153, 177, 200, 212, 216, 215, 204, 191, 134, 127, 133, 135, 156, 142, + 101, 124, 77, 102, 72, 50, 82, 73, 94, 130, 96, 98, 94, 73, 57, 42, + 40, 255, 255, 255, 35, 35, 34, 36, 68, 62, 69, 85, 111, 85, 103, 134, + 103, 121, 149, 141, 132, 93, 119, 128, 201, 209, 217, 213, 201, 179, 180, 156, + 166, 197, 194, 209, 222, 210, 212, 218, 209, 214, 205, 179, 183, 173, 165, 169, + 178, 180, 185, 182, 171, 182, 212, 231, 232, 224, 228, 232, 235, 242, 244, 243, + 241, 242, 241, 239, 236, 232, 239, 222, 234, 241, 214, 171, 215, 213, 211, 205, + 197, 188, 172, 165, 173, 191, 217, 225, 226, 239, 232, 222, 234, 226, 233, 224, + 224, 231, 198, 198, 179, 149, 164, 177, 193, 201, 206, 207, 194, 179, 151, 135, + 135, 131, 154, 148, 107, 140, 107, 88, 63, 61, 55, 64, 98, 103, 133, 137, + 117, 106, 70, 66, 45, 255, 255, 255, 181, 34, 35, 38, 17, 86, 114, 117, + 84, 140, 96, 132, 88, 137, 136, 175, 98, 128, 99, 165, 210, 206, 198, 193, + 184, 175, 159, 165, 175, 188, 199, 208, 215, 218, 211, 200, 187, 173, 167, 168, + 176, 183, 177, 189, 199, 203, 224, 163, 157, 216, 237, 223, 229, 228, 186, 203, + 212, 229, 252, 235, 255, 241, 243, 233, 225, 201, 221, 230, 228, 229, 229, 201, + 187, 206, 223, 233, 210, 199, 188, 177, 188, 173, 175, 188, 206, 219, 227, 230, + 232, 234, 235, 234, 229, 223, 213, 201, 192, 185, 161, 166, 171, 178, 194, 207, + 198, 178, 152, 139, 129, 138, 160, 163, 101, 143, 154, 102, 69, 59, 50, 84, + 81, 100, 107, 84, 89, 88, 70, 77, 28, 255, 255, 255, 255, 34, 15, 59, + 80, 88, 95, 96, 112, 157, 104, 129, 118, 134, 143, 144, 111, 137, 105, 163, + 197, 187, 175, 172, 169, 167, 171, 177, 186, 194, 199, 201, 201, 200, 172, 169, + 167, 165, 166, 173, 180, 187, 200, 204, 219, 216, 203, 177, 194, 225, 231, 234, + 223, 199, 141, 119, 146, 248, 238, 236, 250, 236, 243, 229, 149, 149, 154, 201, + 226, 225, 227, 214, 189, 178, 217, 236, 226, 220, 206, 193, 199, 184, 173, 177, + 183, 189, 199, 211, 223, 233, 231, 231, 228, 222, 213, 202, 192, 185, 172, 169, + 166, 167, 182, 197, 193, 176, 166, 161, 141, 125, 146, 169, 115, 134, 149, 107, + 81, 55, 50, 80, 86, 96, 131, 131, 95, 99, 77, 51, 60, 255, 255, 255, + 255, 34, 41, 25, 51, 70, 111, 88, 104, 112, 100, 96, 143, 123, 184, 127, + 151, 146, 128, 172, 190, 174, 162, 163, 167, 172, 180, 183, 187, 187, 183, 177, + 171, 166, 150, 154, 164, 175, 183, 191, 199, 204, 225, 221, 235, 227, 178, 195, + 231, 234, 241, 214, 154, 140, 132, 95, 86, 199, 230, 243, 249, 236, 243, 215, + 74, 87, 128, 141, 164, 203, 238, 231, 206, 197, 203, 229, 236, 238, 227, 215, + 217, 202, 187, 180, 174, 170, 171, 180, 191, 200, 210, 211, 211, 209, 204, 200, + 193, 189, 186, 178, 164, 158, 167, 182, 184, 175, 147, 147, 141, 131, 147, 160, + 103, 100, 152, 121, 96, 63, 51, 77, 87, 91, 91, 87, 90, 76, 57, 30, + 27, 255, 255, 255, 255, 35, 26, 45, 91, 77, 99, 104, 123, 88, 125, 119, + 102, 147, 136, 142, 124, 121, 149, 176, 182, 168, 165, 170, 174, 180, 182, 180, + 177, 171, 163, 157, 152, 150, 161, 169, 183, 197, 208, 215, 220, 222, 234, 231, + 231, 226, 178, 210, 241, 239, 230, 211, 153, 128, 117, 93, 94, 204, 231, 243, + 245, 236, 237, 185, 59, 56, 115, 107, 130, 190, 237, 240, 229, 232, 191, 214, + 231, 240, 238, 233, 232, 222, 202, 194, 187, 179, 173, 170, 169, 170, 180, 182, + 184, 187, 190, 193, 195, 197, 194, 187, 171, 158, 157, 166, 174, 174, 178, 150, + 136, 128, 136, 141, 120, 134, 129, 108, 79, 79, 59, 92, 104, 122, 87, 108, + 88, 99, 92, 30, 60, 255, 255, 255, 255, 35, 47, 9, 38, 96, 110, 88, + 92, 97, 157, 126, 118, 122, 145, 125, 151, 130, 152, 168, 167, 160, 170, 178, + 178, 179, 180, 176, 169, 163, 158, 160, 165, 169, 185, 192, 205, 216, 224, 229, + 232, 234, 232, 236, 219, 217, 200, 222, 231, 242, 203, 191, 146, 103, 73, 95, + 123, 200, 229, 234, 238, 235, 225, 162, 115, 79, 85, 119, 167, 201, 221, 235, + 240, 234, 195, 206, 224, 232, 238, 244, 240, 235, 212, 207, 204, 200, 194, 187, + 180, 175, 172, 171, 172, 174, 179, 187, 194, 199, 197, 196, 185, 169, 157, 156, + 165, 171, 152, 140, 155, 157, 152, 140, 121, 111, 130, 107, 63, 98, 61, 90, + 93, 125, 130, 87, 114, 68, 66, 58, 22, 255, 255, 255, 255, 182, 24, 45, + 78, 104, 79, 96, 119, 139, 119, 129, 117, 149, 140, 140, 158, 148, 150, 161, + 160, 163, 178, 184, 179, 177, 170, 169, 166, 165, 168, 177, 189, 198, 206, 212, + 220, 229, 235, 238, 241, 242, 231, 238, 216, 208, 221, 229, 226, 243, 234, 207, + 166, 138, 130, 179, 187, 196, 228, 230, 238, 236, 218, 173, 188, 144, 114, 128, + 172, 213, 226, 231, 238, 239, 207, 208, 225, 230, 236, 246, 239, 242, 233, 227, + 221, 217, 212, 208, 201, 196, 190, 186, 182, 179, 183, 187, 194, 197, 202, 204, + 199, 185, 167, 158, 161, 168, 161, 155, 160, 128, 112, 122, 136, 107, 138, 109, + 57, 101, 64, 78, 78, 108, 135, 116, 99, 85, 76, 51, 45, 255, 255, 255, + 255, 255, 47, 18, 24, 82, 95, 98, 103, 129, 95, 117, 137, 128, 155, 108, + 147, 118, 151, 163, 168, 175, 188, 187, 179, 179, 167, 170, 175, 180, 185, 195, + 204, 211, 221, 227, 233, 239, 241, 245, 246, 245, 233, 236, 224, 204, 220, 227, + 236, 238, 218, 211, 195, 183, 175, 203, 194, 207, 225, 230, 238, 231, 210, 205, + 222, 200, 180, 148, 169, 222, 242, 235, 241, 247, 209, 208, 231, 232, 234, 244, + 234, 245, 250, 245, 238, 233, 228, 224, 217, 212, 208, 205, 201, 198, 198, 200, + 203, 205, 211, 210, 205, 195, 180, 167, 163, 164, 156, 156, 177, 153, 134, 131, + 140, 86, 124, 91, 54, 84, 80, 80, 98, 109, 106, 92, 103, 92, 69, 60, + 25, 255, 255, 255, 255, 255, 32, 38, 58, 82, 94, 100, 114, 130, 102, 139, + 120, 138, 144, 146, 169, 157, 152, 167, 177, 184, 192, 187, 179, 183, 177, 183, + 193, 201, 207, 210, 214, 217, 227, 233, 238, 241, 242, 242, 242, 242, 238, 236, + 236, 203, 209, 221, 245, 228, 226, 217, 193, 191, 201, 213, 193, 228, 218, 231, + 235, 223, 197, 224, 215, 222, 205, 196, 215, 238, 237, 241, 245, 230, 200, 204, + 235, 235, 235, 240, 230, 247, 244, 243, 241, 241, 239, 237, 230, 224, 214, 212, + 212, 213, 213, 214, 214, 214, 218, 214, 209, 203, 191, 179, 168, 164, 167, 143, + 157, 146, 127, 113, 133, 91, 146, 108, 78, 74, 90, 67, 95, 80, 92, 115, + 91, 109, 69, 37, 39, 255, 255, 255, 255, 255, 182, 34, 62, 129, 63, 150, + 131, 113, 102, 131, 107, 150, 121, 164, 160, 168, 158, 181, 198, 197, 190, 190, + 191, 187, 194, 198, 206, 215, 222, 229, 232, 234, 232, 233, 236, 240, 245, 248, + 247, 248, 246, 246, 235, 214, 200, 206, 220, 228, 217, 205, 198, 202, 209, 212, + 218, 224, 233, 236, 235, 229, 224, 224, 223, 220, 218, 222, 228, 234, 237, 234, + 229, 225, 182, 207, 231, 235, 236, 240, 242, 239, 242, 242, 242, 241, 241, 239, + 238, 235, 227, 224, 220, 217, 217, 217, 217, 215, 218, 214, 213, 212, 209, 197, + 177, 160, 161, 166, 140, 154, 147, 125, 129, 89, 173, 96, 91, 82, 87, 78, + 88, 83, 96, 106, 96, 133, 69, 82, 41, 255, 255, 255, 255, 255, 255, 24, + 92, 45, 121, 116, 99, 104, 104, 114, 124, 148, 145, 165, 182, 160, 163, 184, + 198, 196, 192, 193, 193, 190, 201, 206, 213, 223, 229, 235, 238, 238, 234, 234, + 236, 239, 241, 244, 245, 246, 243, 247, 241, 218, 194, 184, 184, 187, 188, 185, + 188, 200, 211, 218, 225, 233, 237, 240, 239, 235, 231, 232, 228, 224, 214, 213, + 214, 218, 222, 220, 211, 203, 196, 216, 234, 236, 235, 240, 241, 237, 242, 242, + 241, 241, 240, 240, 239, 238, 234, 231, 226, 223, 222, 221, 220, 219, 215, 212, + 211, 214, 215, 206, 190, 175, 162, 173, 154, 158, 138, 116, 125, 92, 161, 82, + 106, 72, 79, 99, 81, 116, 105, 114, 91, 94, 30, 35, 18, 255, 255, 255, + 255, 255, 255, 177, 71, 93, 72, 115, 122, 119, 102, 101, 133, 143, 168, 164, + 189, 147, 173, 187, 197, 194, 190, 192, 195, 195, 210, 215, 222, 230, 236, 239, + 241, 240, 239, 237, 238, 238, 240, 242, 243, 243, 236, 241, 235, 213, 186, 168, + 160, 159, 169, 176, 189, 205, 217, 224, 232, 240, 238, 240, 239, 237, 237, 239, + 233, 224, 214, 206, 199, 198, 197, 191, 178, 168, 204, 218, 230, 233, 235, 241, + 242, 238, 242, 242, 242, 242, 241, 241, 241, 240, 240, 237, 231, 229, 228, 226, + 225, 222, 217, 214, 213, 216, 216, 210, 198, 186, 163, 178, 163, 155, 127, 109, + 122, 99, 118, 106, 95, 92, 100, 82, 90, 102, 105, 109, 82, 79, 58, 57, + 35, 255, 255, 255, 255, 255, 255, 255, 48, 76, 104, 98, 151, 121, 95, 113, + 120, 138, 170, 165, 164, 142, 184, 192, 194, 190, 187, 194, 200, 204, 218, 222, + 229, 236, 241, 242, 242, 240, 240, 239, 239, 238, 240, 241, 241, 242, 238, 231, + 218, 199, 180, 167, 162, 162, 167, 179, 196, 210, 218, 224, 231, 237, 238, 239, + 238, 237, 239, 240, 232, 221, 217, 207, 196, 189, 182, 176, 167, 161, 196, 207, + 219, 226, 235, 243, 246, 242, 243, 242, 242, 242, 242, 242, 242, 242, 244, 240, + 236, 234, 232, 231, 228, 226, 225, 220, 217, 216, 215, 209, 199, 190, 166, 173, + 158, 146, 123, 113, 122, 101, 88, 120, 83, 96, 106, 71, 89, 88, 95, 98, + 79, 70, 79, 67, 39, 255, 255, 255, 255, 255, 255, 255, 43, 68, 124, 108, + 160, 61, 98, 142, 103, 142, 158, 167, 129, 155, 194, 194, 190, 186, 187, 197, + 208, 215, 224, 228, 233, 239, 242, 244, 242, 241, 242, 241, 241, 241, 241, 241, + 240, 239, 235, 220, 203, 188, 179, 172, 166, 165, 166, 181, 196, 207, 212, 220, + 230, 236, 239, 240, 238, 238, 241, 241, 234, 222, 214, 208, 200, 190, 183, 181, + 182, 185, 185, 195, 208, 221, 234, 244, 248, 246, 244, 243, 243, 243, 243, 243, + 243, 242, 244, 242, 239, 238, 236, 233, 231, 227, 229, 225, 220, 217, 213, 209, + 200, 193, 170, 162, 149, 145, 134, 124, 116, 88, 90, 100, 93, 67, 81, 96, + 75, 112, 114, 123, 106, 70, 60, 39, 28, 255, 255, 255, 255, 255, 255, 255, + 255, 126, 87, 154, 135, 52, 112, 157, 100, 148, 145, 154, 115, 175, 196, 193, + 189, 187, 192, 202, 215, 223, 230, 233, 236, 239, 242, 243, 244, 244, 242, 243, + 242, 242, 240, 239, 236, 232, 223, 207, 193, 183, 178, 169, 161, 158, 170, 184, + 198, 207, 214, 226, 236, 243, 238, 240, 240, 239, 240, 242, 238, 228, 220, 216, + 208, 195, 183, 178, 182, 187, 182, 191, 204, 217, 229, 237, 243, 244, 243, 242, + 242, 242, 243, 243, 243, 243, 243, 242, 240, 240, 238, 237, 233, 231, 227, 225, + 221, 219, 215, 210, 204, 199, 175, 153, 144, 149, 144, 131, 108, 80, 82, 106, + 92, 72, 78, 99, 83, 106, 121, 125, 109, 79, 61, 46, 111, 255, 255, 255, + 255, 255, 255, 255, 255, 86, 127, 137, 92, 110, 125, 136, 110, 144, 135, 121, + 126, 183, 191, 188, 188, 192, 200, 211, 219, 225, 235, 237, 239, 240, 242, 244, + 246, 246, 244, 245, 244, 242, 238, 233, 227, 222, 205, 193, 181, 175, 169, 162, + 158, 163, 181, 193, 204, 211, 218, 228, 236, 238, 231, 236, 238, 236, 238, 240, + 240, 234, 232, 225, 215, 201, 187, 176, 171, 171, 182, 186, 197, 207, 216, 225, + 233, 240, 240, 241, 241, 241, 242, 242, 243, 243, 243, 241, 241, 241, 242, 240, + 237, 233, 228, 225, 224, 221, 218, 213, 207, 203, 187, 151, 140, 144, 138, 126, + 110, 102, 65, 111, 90, 87, 81, 95, 97, 97, 91, 94, 87, 75, 52, 52, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 65, 115, 98, 100, 109, 131, 105, + 119, 136, 128, 88, 140, 180, 186, 185, 189, 198, 209, 216, 221, 226, 238, 239, + 240, 241, 242, 244, 247, 249, 245, 245, 245, 242, 235, 226, 219, 212, 191, 181, + 172, 166, 158, 156, 164, 179, 188, 200, 208, 210, 214, 221, 224, 221, 222, 229, + 232, 232, 232, 237, 240, 238, 238, 231, 220, 210, 199, 189, 176, 170, 178, 181, + 189, 197, 204, 213, 225, 237, 238, 240, 239, 241, 241, 242, 242, 242, 243, 242, + 241, 243, 243, 242, 240, 236, 232, 230, 228, 225, 220, 213, 207, 202, 199, 153, + 135, 133, 123, 118, 119, 134, 67, 78, 106, 68, 56, 120, 90, 129, 86, 97, + 99, 83, 29, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 128, 116, + 128, 146, 150, 99, 100, 123, 106, 103, 145, 182, 191, 181, 200, 206, 206, 220, + 224, 234, 240, 242, 243, 244, 245, 244, 244, 243, 243, 248, 247, 237, 232, 225, + 207, 188, 182, 174, 164, 159, 163, 172, 185, 194, 194, 195, 197, 201, 205, 208, + 207, 207, 207, 204, 206, 214, 216, 213, 221, 234, 236, 233, 229, 225, 218, 203, + 185, 172, 174, 181, 190, 196, 200, 206, 213, 220, 227, 237, 244, 244, 240, 237, + 242, 247, 242, 242, 242, 242, 242, 242, 242, 241, 238, 235, 231, 228, 223, 219, + 210, 204, 198, 157, 138, 127, 142, 123, 120, 114, 81, 55, 109, 82, 61, 80, + 138, 119, 84, 94, 80, 62, 59, 50, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 67, 100, 115, 135, 137, 171, 112, 101, 115, 98, 101, 148, 185, 189, 181, + 202, 210, 212, 224, 226, 234, 241, 243, 244, 244, 244, 244, 243, 243, 243, 245, + 243, 234, 224, 212, 196, 183, 171, 168, 168, 171, 178, 187, 195, 202, 200, 202, + 205, 206, 208, 211, 214, 216, 213, 215, 218, 220, 217, 213, 217, 226, 231, 228, + 224, 222, 219, 213, 201, 193, 183, 182, 182, 185, 192, 201, 208, 214, 224, 229, + 232, 236, 239, 242, 242, 244, 242, 242, 242, 242, 242, 242, 241, 242, 239, 236, + 233, 229, 226, 220, 211, 204, 191, 160, 138, 116, 131, 120, 113, 95, 95, 66, + 101, 67, 60, 77, 128, 118, 92, 78, 78, 71, 43, 32, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 93, 113, 85, 89, 162, 155, 97, 84, 101, 93, 107, + 156, 189, 187, 182, 205, 215, 217, 228, 228, 236, 241, 243, 244, 243, 243, 242, + 242, 240, 243, 239, 235, 229, 213, 196, 183, 178, 168, 172, 178, 188, 195, 201, + 205, 206, 210, 212, 213, 213, 214, 215, 219, 221, 213, 223, 229, 227, 220, 220, + 222, 224, 229, 226, 221, 220, 220, 221, 217, 214, 201, 191, 182, 181, 188, 199, + 206, 211, 220, 219, 219, 227, 237, 244, 243, 240, 242, 242, 242, 242, 242, 242, + 242, 241, 241, 238, 234, 231, 226, 221, 212, 205, 189, 166, 144, 114, 130, 127, + 115, 85, 89, 70, 94, 60, 70, 71, 96, 90, 123, 67, 58, 64, 38, 36, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 99, 129, 92, 150, 125, 75, + 72, 95, 96, 116, 161, 182, 189, 184, 206, 216, 218, 230, 232, 240, 241, 243, + 243, 243, 243, 241, 240, 238, 242, 232, 224, 219, 203, 184, 178, 183, 184, 188, + 194, 201, 206, 209, 209, 210, 215, 212, 211, 213, 215, 215, 211, 209, 201, 217, + 228, 223, 219, 222, 224, 223, 231, 228, 223, 221, 221, 223, 222, 221, 218, 208, + 197, 191, 193, 201, 208, 214, 218, 218, 216, 224, 234, 242, 242, 238, 241, 242, + 242, 242, 241, 242, 242, 242, 242, 239, 235, 233, 228, 222, 214, 206, 190, 165, + 144, 118, 136, 130, 117, 88, 92, 84, 97, 59, 83, 71, 80, 89, 133, 78, + 53, 52, 40, 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 113, 165, + 85, 153, 115, 76, 78, 98, 98, 120, 159, 174, 193, 186, 207, 216, 217, 231, + 235, 245, 242, 243, 243, 243, 242, 240, 238, 236, 237, 225, 215, 209, 197, 184, + 187, 196, 204, 204, 206, 208, 210, 212, 214, 216, 213, 208, 206, 210, 217, 216, + 208, 199, 196, 211, 221, 217, 213, 216, 217, 214, 227, 227, 224, 224, 224, 224, + 222, 221, 226, 223, 218, 211, 206, 206, 212, 218, 219, 221, 222, 227, 231, 236, + 239, 241, 241, 241, 241, 241, 241, 242, 241, 242, 242, 241, 237, 234, 229, 223, + 216, 207, 191, 159, 139, 121, 135, 120, 108, 87, 111, 101, 97, 51, 84, 75, + 93, 124, 106, 96, 68, 42, 35, 35, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 79, 105, 186, 94, 113, 103, 74, 81, 96, 92, 118, 161, 175, 197, 188, + 208, 215, 217, 231, 236, 246, 242, 243, 243, 242, 241, 239, 237, 235, 230, 221, + 212, 205, 198, 198, 204, 211, 214, 212, 211, 211, 213, 217, 221, 223, 218, 214, + 212, 217, 223, 224, 215, 205, 204, 212, 218, 217, 213, 214, 213, 211, 219, 221, + 223, 225, 225, 225, 224, 223, 227, 229, 229, 225, 218, 215, 217, 220, 223, 227, + 229, 230, 231, 233, 237, 242, 240, 241, 241, 241, 241, 241, 241, 242, 244, 241, + 238, 235, 231, 224, 216, 209, 197, 164, 144, 124, 134, 114, 103, 85, 102, 91, + 86, 46, 85, 74, 91, 127, 97, 94, 60, 30, 37, 40, 255, 255, 255, 255, + 255, 255, 255, 255, 190, 119, 134, 136, 73, 115, 82, 65, 81, 95, 88, 116, + 163, 177, 196, 188, 210, 217, 220, 232, 235, 243, 242, 243, 242, 241, 240, 237, + 235, 233, 223, 219, 213, 207, 207, 215, 219, 219, 215, 215, 216, 217, 219, 222, + 224, 224, 223, 220, 217, 216, 215, 214, 210, 207, 199, 198, 202, 209, 213, 213, + 214, 217, 212, 214, 218, 222, 224, 224, 225, 226, 227, 229, 232, 232, 230, 228, + 226, 225, 227, 229, 231, 231, 231, 234, 238, 243, 240, 240, 241, 241, 241, 241, + 241, 242, 245, 243, 239, 236, 231, 226, 217, 209, 195, 173, 155, 125, 132, 119, + 111, 89, 101, 82, 80, 48, 89, 74, 81, 108, 118, 82, 46, 33, 37, 45, + 255, 255, 255, 255, 255, 255, 255, 255, 67, 116, 125, 132, 109, 103, 73, 67, + 91, 105, 92, 116, 159, 170, 193, 188, 211, 220, 222, 233, 232, 240, 242, 243, + 242, 241, 240, 238, 236, 234, 219, 220, 217, 211, 217, 228, 231, 224, 215, 218, + 219, 222, 222, 221, 220, 217, 212, 211, 209, 202, 192, 188, 190, 195, 178, 172, + 176, 192, 203, 207, 211, 219, 208, 211, 214, 216, 218, 219, 221, 223, 226, 226, + 229, 234, 239, 240, 236, 232, 231, 230, 230, 231, 234, 238, 240, 242, 240, 240, + 241, 241, 241, 241, 241, 241, 245, 242, 239, 236, 232, 225, 217, 210, 186, 177, + 160, 120, 126, 125, 119, 91, 135, 101, 86, 50, 90, 79, 90, 114, 131, 77, + 58, 55, 27, 29, 255, 255, 255, 255, 255, 255, 255, 255, 76, 118, 126, 137, + 118, 109, 54, 66, 102, 96, 93, 109, 160, 170, 183, 192, 204, 215, 223, 231, + 239, 244, 244, 243, 242, 242, 242, 240, 236, 230, 222, 223, 220, 216, 223, 236, + 235, 224, 221, 224, 221, 213, 210, 215, 217, 212, 182, 169, 160, 160, 160, 156, + 154, 156, 170, 159, 149, 150, 160, 169, 172, 169, 183, 191, 201, 205, 205, 207, + 214, 223, 221, 223, 226, 231, 236, 241, 243, 241, 242, 241, 239, 236, 234, 234, + 238, 242, 241, 241, 241, 241, 241, 241, 241, 241, 238, 242, 242, 236, 228, 224, + 215, 207, 189, 177, 145, 129, 122, 123, 120, 85, 120, 115, 65, 76, 91, 87, + 85, 115, 110, 130, 56, 77, 45, 42, 255, 255, 255, 255, 255, 255, 255, 187, + 102, 118, 125, 103, 114, 97, 58, 64, 99, 99, 103, 116, 161, 168, 182, 192, + 204, 215, 223, 231, 239, 245, 245, 243, 241, 242, 242, 241, 237, 232, 222, 222, + 226, 233, 234, 231, 227, 224, 215, 214, 212, 215, 217, 213, 193, 169, 137, 141, + 159, 183, 200, 206, 210, 213, 210, 201, 189, 186, 190, 192, 188, 181, 146, 134, + 132, 153, 188, 211, 214, 209, 207, 213, 222, 230, 239, 242, 240, 237, 241, 241, + 239, 237, 235, 236, 240, 243, 241, 241, 241, 241, 241, 241, 241, 240, 238, 242, + 241, 236, 228, 223, 216, 206, 187, 174, 142, 128, 120, 121, 117, 85, 102, 118, + 68, 44, 60, 85, 103, 118, 130, 109, 39, 48, 46, 38, 114, 255, 255, 255, + 255, 255, 255, 38, 134, 170, 138, 80, 125, 62, 68, 62, 88, 92, 100, 110, + 153, 162, 181, 191, 203, 214, 223, 231, 238, 243, 243, 243, 242, 242, 242, 240, + 237, 233, 226, 223, 231, 244, 241, 228, 224, 230, 216, 215, 211, 210, 204, 190, + 160, 135, 135, 147, 172, 197, 213, 217, 217, 219, 223, 217, 209, 210, 214, 215, + 209, 201, 207, 185, 158, 144, 146, 164, 186, 200, 207, 208, 210, 214, 223, 231, + 236, 240, 238, 239, 239, 238, 237, 237, 240, 243, 241, 241, 241, 241, 241, 241, + 241, 240, 238, 241, 241, 235, 229, 223, 214, 204, 185, 171, 142, 130, 122, 121, + 118, 86, 84, 107, 74, 43, 54, 67, 87, 90, 145, 114, 72, 36, 49, 39, + 42, 255, 255, 255, 255, 255, 255, 72, 121, 148, 146, 78, 97, 102, 102, 79, + 94, 98, 104, 112, 158, 176, 179, 190, 203, 214, 222, 230, 237, 242, 243, 242, + 241, 242, 242, 240, 237, 232, 233, 230, 233, 240, 240, 233, 232, 235, 221, 218, + 207, 189, 165, 148, 136, 130, 128, 133, 144, 151, 153, 152, 153, 155, 149, 144, + 142, 146, 152, 155, 153, 147, 137, 146, 150, 142, 131, 133, 152, 173, 186, 188, + 193, 202, 215, 228, 237, 244, 238, 240, 241, 239, 237, 237, 238, 240, 241, 241, + 241, 241, 241, 241, 241, 241, 239, 241, 240, 234, 229, 223, 213, 199, 183, 171, + 143, 134, 126, 122, 119, 89, 96, 97, 73, 63, 67, 49, 67, 82, 116, 119, + 129, 43, 46, 38, 43, 255, 255, 255, 255, 255, 199, 51, 125, 163, 111, 91, + 102, 89, 113, 80, 91, 98, 103, 104, 150, 173, 178, 189, 202, 214, 222, 229, + 235, 240, 242, 241, 240, 240, 241, 239, 236, 233, 234, 237, 238, 235, 235, 238, + 229, 213, 199, 188, 170, 149, 133, 126, 131, 140, 152, 157, 162, 164, 165, 169, + 174, 177, 179, 173, 168, 170, 176, 180, 180, 176, 172, 170, 165, 159, 153, 144, + 136, 132, 143, 151, 166, 185, 205, 222, 231, 237, 238, 241, 242, 241, 238, 236, + 236, 237, 241, 241, 241, 241, 241, 241, 241, 241, 239, 241, 239, 233, 229, 222, + 210, 197, 181, 168, 143, 135, 126, 120, 117, 88, 127, 109, 70, 64, 59, 50, + 78, 105, 85, 101, 135, 53, 49, 35, 36, 38, 255, 255, 255, 255, 32, 72, + 135, 145, 135, 124, 75, 86, 123, 78, 84, 99, 108, 102, 139, 162, 177, 188, + 201, 213, 221, 227, 234, 238, 241, 240, 239, 240, 241, 239, 236, 234, 233, 242, + 242, 238, 236, 232, 212, 186, 168, 151, 133, 128, 132, 138, 144, 150, 153, 161, + 167, 170, 176, 183, 185, 185, 171, 167, 163, 164, 169, 175, 177, 177, 186, 173, + 158, 152, 154, 157, 155, 152, 138, 138, 141, 151, 169, 190, 207, 219, 236, 240, + 242, 242, 240, 237, 236, 236, 241, 241, 241, 241, 241, 241, 241, 241, 240, 241, + 238, 234, 228, 223, 208, 194, 177, 164, 140, 134, 123, 115, 111, 83, 139, 139, + 92, 74, 46, 68, 88, 95, 109, 98, 111, 78, 69, 42, 27, 48, 255, 255, + 255, 183, 49, 72, 124, 132, 136, 139, 145, 130, 169, 103, 93, 108, 122, 114, + 148, 169, 176, 187, 200, 213, 221, 226, 232, 237, 240, 239, 239, 239, 240, 239, + 236, 233, 238, 243, 245, 243, 235, 220, 197, 179, 171, 157, 148, 151, 156, 159, + 162, 166, 167, 174, 181, 182, 189, 195, 194, 187, 188, 185, 183, 185, 190, 197, + 199, 199, 192, 194, 196, 193, 185, 172, 159, 152, 160, 154, 148, 149, 161, 178, + 195, 208, 232, 237, 241, 242, 241, 240, 239, 239, 241, 241, 241, 241, 241, 241, + 241, 241, 240, 241, 238, 233, 228, 221, 207, 190, 174, 161, 139, 134, 123, 111, + 107, 81, 139, 170, 129, 113, 58, 94, 95, 84, 132, 112, 92, 100, 82, 59, + 25, 47, 255, 255, 255, 29, 56, 85, 107, 131, 197, 166, 185, 177, 198, 113, + 82, 93, 111, 106, 140, 160, 175, 186, 200, 213, 221, 226, 231, 234, 239, 238, + 237, 238, 240, 239, 236, 233, 247, 242, 243, 245, 233, 210, 195, 195, 194, 193, + 191, 189, 178, 170, 173, 184, 186, 191, 195, 199, 210, 219, 220, 213, 212, 208, + 207, 208, 210, 212, 212, 211, 216, 209, 200, 192, 188, 183, 174, 168, 162, 168, + 177, 189, 200, 206, 207, 207, 229, 234, 239, 242, 242, 242, 242, 242, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 241, 237, 232, 229, 221, 206, 188, 176, 163, + 141, 137, 124, 112, 108, 82, 150, 188, 150, 148, 78, 119, 117, 113, 113, 112, + 79, 103, 73, 69, 28, 39, 108, 255, 255, 37, 76, 101, 134, 155, 167, 196, + 201, 185, 210, 132, 83, 89, 106, 107, 137, 159, 172, 184, 196, 212, 225, 223, + 222, 235, 237, 236, 234, 236, 238, 238, 237, 236, 239, 244, 247, 239, 220, 201, + 195, 198, 203, 204, 206, 206, 203, 201, 199, 198, 203, 206, 210, 216, 223, 229, + 232, 233, 225, 224, 224, 224, 224, 226, 227, 229, 221, 220, 216, 210, 205, 199, + 194, 193, 195, 198, 206, 211, 216, 219, 219, 221, 228, 235, 242, 244, 241, 239, + 240, 242, 240, 240, 240, 240, 240, 240, 240, 240, 241, 240, 236, 232, 230, 226, + 211, 196, 177, 172, 144, 131, 132, 118, 101, 86, 164, 193, 179, 179, 146, 114, + 154, 169, 195, 155, 165, 149, 100, 54, 59, 27, 45, 255, 255, 36, 70, 169, + 179, 134, 177, 200, 206, 218, 213, 140, 77, 93, 105, 110, 132, 159, 171, 185, + 197, 210, 224, 223, 221, 233, 236, 233, 232, 233, 236, 238, 238, 237, 241, 244, + 244, 237, 221, 207, 206, 212, 219, 220, 223, 224, 221, 220, 219, 218, 215, 216, + 219, 224, 228, 232, 233, 233, 230, 228, 227, 228, 229, 230, 231, 233, 234, 234, + 232, 230, 226, 224, 222, 221, 215, 219, 223, 227, 229, 231, 230, 230, 230, 236, + 242, 243, 241, 239, 240, 242, 240, 240, 240, 240, 240, 240, 240, 240, 241, 240, + 237, 231, 227, 223, 210, 198, 172, 166, 143, 129, 129, 119, 105, 98, 186, 212, + 199, 206, 185, 159, 187, 191, 216, 212, 183, 166, 173, 99, 52, 50, 39, 255, + 255, 37, 87, 223, 213, 193, 146, 202, 203, 225, 220, 156, 69, 95, 100, 113, + 125, 162, 171, 186, 196, 208, 221, 222, 221, 232, 233, 231, 228, 229, 234, 237, + 238, 239, 243, 242, 240, 235, 223, 215, 218, 226, 229, 231, 233, 235, 234, 234, + 234, 233, 228, 228, 230, 232, 234, 235, 234, 233, 233, 233, 232, 233, 233, 235, + 237, 238, 240, 240, 240, 239, 238, 237, 237, 238, 229, 231, 233, 235, 236, 235, + 234, 232, 232, 236, 242, 243, 241, 239, 240, 242, 240, 240, 240, 240, 240, 239, + 239, 239, 240, 242, 238, 231, 224, 218, 208, 199, 169, 161, 143, 128, 124, 116, + 108, 114, 202, 221, 215, 230, 222, 202, 215, 208, 206, 223, 190, 175, 212, 152, + 85, 50, 34, 255, 255, 37, 94, 218, 244, 217, 188, 166, 197, 214, 228, 178, + 65, 95, 94, 118, 122, 167, 170, 186, 196, 206, 219, 221, 221, 231, 230, 227, + 225, 227, 231, 237, 239, 241, 242, 240, 239, 236, 228, 223, 225, 232, 233, 235, + 238, 240, 239, 240, 240, 240, 238, 236, 238, 238, 239, 238, 238, 237, 237, 236, + 235, 236, 237, 239, 240, 242, 243, 243, 241, 240, 239, 238, 237, 237, 234, 235, + 237, 238, 238, 236, 234, 233, 234, 237, 241, 242, 241, 240, 241, 242, 240, 240, + 240, 239, 239, 239, 239, 238, 239, 242, 239, 230, 221, 215, 207, 200, 169, 157, + 144, 125, 119, 114, 109, 130, 206, 223, 222, 237, 238, 224, 229, 217, 212, 218, + 219, 207, 213, 208, 176, 49, 35, 111, 255, 37, 54, 244, 210, 240, 206, 192, + 163, 229, 231, 200, 66, 90, 91, 121, 123, 171, 169, 186, 195, 204, 217, 220, + 221, 229, 228, 226, 224, 225, 230, 236, 240, 240, 240, 239, 239, 240, 236, 230, + 229, 233, 239, 242, 245, 245, 245, 244, 245, 246, 240, 239, 240, 242, 242, 242, + 242, 240, 240, 239, 238, 239, 240, 242, 243, 244, 246, 245, 244, 243, 242, 241, + 240, 240, 239, 240, 242, 242, 241, 240, 239, 238, 237, 239, 242, 243, 242, 242, + 242, 242, 241, 241, 241, 240, 240, 239, 239, 238, 239, 242, 239, 229, 219, 213, + 206, 198, 172, 153, 146, 125, 117, 112, 108, 143, 212, 229, 233, 242, 241, 233, + 236, 228, 232, 222, 236, 231, 212, 228, 224, 58, 39, 42, 255, 39, 53, 230, + 234, 218, 224, 179, 205, 212, 224, 217, 76, 85, 94, 121, 127, 169, 167, 187, + 195, 201, 214, 220, 221, 228, 227, 226, 225, 227, 231, 237, 240, 240, 240, 238, + 238, 242, 240, 235, 232, 233, 242, 245, 245, 244, 243, 243, 244, 245, 240, 240, + 241, 242, 244, 244, 244, 242, 241, 240, 239, 240, 241, 243, 244, 244, 242, 242, + 242, 243, 244, 244, 245, 245, 241, 242, 242, 242, 242, 241, 240, 240, 239, 240, + 241, 242, 243, 243, 242, 242, 241, 241, 240, 240, 239, 238, 238, 238, 239, 241, + 237, 229, 220, 214, 204, 194, 176, 150, 147, 125, 116, 115, 108, 153, 216, 231, + 239, 240, 239, 237, 237, 237, 232, 223, 221, 229, 226, 222, 219, 83, 43, 43, + 255, 41, 63, 233, 234, 246, 197, 189, 233, 210, 210, 226, 86, 81, 98, 121, + 127, 160, 167, 186, 195, 200, 212, 219, 221, 227, 226, 225, 225, 229, 233, 238, + 240, 238, 240, 236, 237, 242, 244, 241, 238, 238, 242, 243, 243, 241, 239, 238, + 239, 240, 239, 239, 241, 242, 242, 243, 242, 242, 240, 239, 239, 240, 240, 242, + 243, 243, 238, 236, 238, 240, 240, 242, 243, 244, 242, 241, 242, 241, 240, 238, + 237, 237, 240, 241, 241, 242, 243, 243, 243, 242, 241, 241, 240, 240, 239, 238, + 237, 237, 239, 239, 236, 228, 222, 216, 203, 190, 178, 147, 147, 125, 118, 119, + 110, 162, 218, 231, 241, 237, 236, 240, 238, 238, 234, 232, 220, 236, 244, 232, + 228, 104, 48, 43, 255, 42, 50, 239, 239, 227, 230, 179, 232, 234, 198, 228, + 93, 78, 103, 120, 128, 154, 167, 187, 195, 198, 210, 218, 221, 226, 226, 227, + 228, 231, 235, 238, 239, 237, 241, 237, 237, 242, 246, 244, 243, 244, 245, 245, + 244, 242, 240, 239, 240, 241, 240, 241, 241, 241, 242, 241, 241, 240, 241, 240, + 239, 240, 240, 242, 243, 243, 240, 239, 239, 240, 240, 241, 242, 241, 246, 245, + 245, 242, 242, 239, 238, 238, 241, 240, 240, 240, 242, 243, 243, 242, 240, 241, + 240, 239, 238, 237, 236, 236, 240, 239, 233, 228, 225, 218, 204, 188, 180, 145, + 148, 126, 120, 122, 113, 167, 221, 231, 242, 238, 237, 245, 241, 241, 234, 228, + 225, 237, 228, 231, 239, 82, 52, 46, 255, 43, 34, 234, 233, 226, 211, 183, + 221, 225, 198, 184, 109, 78, 97, 108, 134, 157, 170, 186, 193, 198, 212, 218, + 218, 224, 226, 228, 230, 234, 237, 240, 239, 239, 239, 239, 241, 242, 242, 242, + 241, 242, 243, 243, 242, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 242, 241, 240, 239, 239, 240, 242, 242, 241, 240, 241, 241, 241, 241, + 242, 242, 242, 242, 242, 242, 241, 241, 240, 241, 241, 241, 240, 239, 239, 239, + 240, 240, 241, 238, 236, 237, 237, 235, 236, 240, 240, 240, 237, 231, 222, 213, + 207, 201, 179, 162, 155, 112, 120, 119, 128, 174, 218, 239, 238, 236, 242, 237, + 232, 247, 233, 229, 215, 231, 239, 233, 228, 82, 50, 45, 255, 42, 49, 230, + 239, 232, 215, 170, 203, 202, 205, 171, 103, 81, 91, 124, 139, 165, 173, 187, + 193, 197, 211, 217, 217, 224, 226, 228, 231, 234, 236, 237, 235, 235, 239, 240, + 241, 242, 243, 243, 241, 241, 242, 242, 242, 242, 242, 242, 242, 242, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 240, 240, 240, 239, 239, 240, 241, 237, 236, 238, 238, 235, 237, 241, 240, 239, + 236, 231, 223, 216, 208, 202, 184, 162, 155, 119, 128, 122, 134, 176, 207, 221, + 228, 230, 234, 234, 236, 245, 230, 223, 220, 236, 234, 231, 231, 86, 49, 44, + 255, 41, 55, 218, 234, 235, 207, 169, 207, 207, 225, 159, 110, 84, 80, 125, + 130, 157, 175, 190, 194, 197, 209, 216, 216, 223, 226, 228, 231, 233, 234, 234, + 233, 234, 239, 239, 240, 241, 242, 242, 241, 241, 243, 243, 243, 243, 243, 243, + 243, 243, 242, 242, 242, 242, 242, 242, 242, 242, 242, 241, 241, 240, 240, 241, + 241, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 241, 237, 236, 239, 239, 236, + 238, 241, 241, 239, 235, 230, 223, 216, 207, 202, 181, 155, 147, 119, 127, 118, + 137, 177, 205, 209, 221, 229, 229, 235, 241, 238, 229, 214, 224, 242, 229, 231, + 236, 87, 49, 44, 255, 40, 55, 220, 228, 234, 182, 183, 221, 229, 231, 144, + 130, 85, 76, 115, 123, 151, 175, 191, 195, 197, 209, 215, 217, 223, 227, 230, + 233, 234, 233, 232, 232, 233, 238, 238, 239, 241, 241, 242, 241, 241, 243, 243, + 243, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242, 242, 242, 242, 242, 241, + 240, 240, 240, 240, 241, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 242, 241, 242, 240, 240, 240, 237, + 237, 239, 239, 237, 238, 242, 241, 237, 234, 230, 224, 217, 208, 202, 178, 151, + 141, 121, 122, 112, 146, 188, 215, 211, 225, 236, 230, 236, 243, 233, 231, 205, + 226, 244, 227, 236, 237, 84, 51, 46, 255, 40, 56, 238, 233, 240, 163, 204, + 226, 236, 221, 135, 156, 91, 82, 105, 129, 156, 175, 190, 195, 198, 209, 215, + 216, 223, 227, 231, 235, 235, 233, 231, 231, 233, 236, 237, 238, 240, 240, 240, + 240, 241, 243, 243, 243, 243, 243, 243, 243, 243, 241, 241, 241, 241, 241, 241, + 241, 241, 238, 238, 237, 236, 236, 237, 238, 238, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242, 242, 241, 241, + 239, 238, 240, 236, 236, 239, 239, 237, 238, 241, 241, 238, 232, 229, 224, 217, + 209, 201, 179, 156, 145, 125, 120, 114, 166, 206, 220, 215, 230, 240, 234, 238, + 245, 233, 232, 200, 225, 242, 229, 241, 230, 74, 52, 255, 255, 39, 44, 238, + 236, 241, 175, 229, 230, 236, 225, 163, 185, 110, 85, 100, 126, 155, 171, 189, + 195, 198, 211, 218, 218, 222, 225, 230, 235, 236, 232, 230, 231, 233, 235, 236, + 236, 239, 240, 240, 241, 240, 241, 242, 242, 242, 242, 242, 242, 242, 239, 239, + 239, 239, 239, 239, 239, 239, 235, 234, 233, 233, 233, 233, 234, 235, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242, 242, + 241, 242, 240, 239, 236, 234, 237, 235, 234, 238, 239, 236, 237, 240, 241, 236, + 230, 228, 224, 218, 209, 200, 177, 157, 142, 123, 117, 119, 185, 215, 215, 219, + 230, 239, 237, 240, 243, 239, 230, 200, 226, 237, 231, 240, 216, 64, 51, 255, + 255, 39, 38, 222, 228, 226, 203, 240, 235, 239, 236, 205, 200, 134, 78, 102, + 116, 150, 168, 187, 195, 200, 213, 219, 218, 222, 222, 228, 234, 234, 230, 229, + 229, 233, 233, 235, 236, 237, 239, 240, 241, 241, 240, 240, 241, 241, 241, 241, + 241, 241, 238, 238, 238, 238, 238, 238, 238, 238, 237, 236, 236, 235, 235, 236, + 236, 237, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 242, 242, 241, 242, 239, 236, 232, 230, 234, 233, 234, 237, 239, 236, + 236, 238, 240, 236, 229, 226, 225, 218, 209, 200, 173, 155, 137, 119, 119, 130, + 200, 213, 210, 225, 232, 237, 242, 239, 237, 244, 223, 203, 230, 236, 232, 235, + 198, 58, 49, 255, 255, 39, 50, 212, 224, 210, 224, 234, 233, 236, 234, 226, + 195, 147, 71, 112, 114, 155, 166, 186, 195, 201, 216, 219, 217, 221, 219, 225, + 231, 232, 228, 226, 228, 232, 232, 233, 234, 237, 238, 239, 240, 241, 239, 239, + 239, 240, 240, 240, 240, 240, 237, 237, 237, 237, 237, 237, 237, 237, 242, 242, + 241, 240, 240, 241, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 242, 242, 243, 241, 238, 234, 230, 228, 233, 231, + 233, 237, 237, 235, 234, 237, 240, 234, 228, 226, 224, 219, 208, 199, 176, 159, + 137, 122, 127, 146, 215, 215, 210, 233, 237, 237, 245, 238, 233, 247, 217, 207, + 235, 235, 232, 230, 185, 56, 117, 255, 255, 39, 57, 201, 202, 181, 223, 238, + 240, 237, 243, 229, 200, 177, 73, 100, 105, 156, 167, 181, 195, 204, 211, 216, + 218, 217, 224, 225, 229, 233, 231, 226, 226, 229, 226, 228, 232, 236, 239, 240, + 240, 239, 238, 238, 238, 238, 238, 237, 237, 237, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 241, 241, 242, + 242, 242, 241, 241, 240, 239, 238, 238, 238, 238, 237, 239, 238, 236, 237, 239, + 237, 231, 229, 232, 235, 237, 238, 239, 238, 237, 240, 236, 230, 225, 222, 219, + 206, 193, 181, 156, 140, 104, 138, 173, 209, 228, 233, 236, 238, 241, 242, 243, + 242, 242, 224, 219, 228, 237, 239, 229, 103, 47, 255, 255, 255, 183, 46, 184, + 202, 159, 224, 237, 234, 239, 241, 245, 161, 209, 70, 84, 121, 138, 167, 179, + 192, 199, 206, 213, 217, 217, 221, 222, 226, 230, 228, 223, 222, 225, 225, 228, + 231, 235, 237, 238, 238, 239, 235, 237, 237, 238, 239, 238, 238, 237, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, + 240, 241, 241, 242, 242, 242, 240, 240, 239, 238, 238, 238, 239, 239, 238, 241, + 239, 238, 238, 239, 235, 230, 228, 230, 234, 238, 239, 239, 238, 237, 237, 234, + 227, 221, 218, 215, 203, 191, 176, 146, 143, 122, 122, 189, 219, 228, 235, 238, + 240, 241, 242, 243, 242, 241, 219, 221, 237, 241, 235, 227, 82, 40, 255, 255, + 255, 255, 32, 152, 206, 147, 226, 237, 232, 239, 238, 195, 208, 197, 121, 69, + 122, 133, 167, 178, 189, 194, 200, 209, 214, 217, 218, 220, 223, 226, 225, 219, + 218, 221, 224, 226, 229, 233, 235, 235, 236, 237, 232, 234, 237, 239, 241, 240, + 240, 238, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 240, 240, 241, 241, 241, 241, 242, 242, 239, 239, 238, 238, 238, 239, + 240, 240, 240, 242, 241, 240, 239, 239, 234, 228, 225, 229, 234, 239, 241, 240, + 239, 237, 238, 233, 225, 218, 215, 213, 203, 191, 173, 137, 143, 126, 108, 205, + 227, 231, 238, 240, 241, 241, 242, 242, 242, 242, 218, 226, 241, 238, 226, 201, + 62, 255, 255, 255, 255, 255, 25, 108, 215, 161, 224, 233, 236, 227, 206, 161, + 247, 190, 191, 67, 114, 133, 162, 174, 187, 194, 198, 206, 213, 215, 217, 218, + 221, 224, 222, 216, 215, 218, 223, 225, 227, 229, 231, 233, 233, 234, 229, 231, + 236, 240, 242, 242, 241, 239, 241, 241, 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 238, 238, + 238, 238, 239, 240, 241, 241, 240, 243, 242, 239, 239, 239, 233, 226, 225, 229, + 234, 239, 242, 241, 238, 235, 238, 234, 225, 219, 216, 214, 203, 191, 171, 136, + 136, 110, 121, 215, 226, 234, 239, 240, 240, 241, 241, 242, 242, 241, 225, 233, + 235, 230, 221, 145, 54, 255, 255, 255, 255, 255, 28, 66, 207, 189, 215, 224, + 236, 212, 174, 202, 201, 225, 224, 110, 102, 129, 153, 167, 184, 192, 197, 203, + 209, 212, 215, 217, 220, 224, 222, 216, 215, 218, 222, 223, 225, 227, 228, 230, + 231, 232, 227, 230, 235, 240, 242, 242, 241, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, + 241, 241, 238, 238, 238, 238, 239, 240, 241, 241, 240, 241, 240, 238, 237, 238, + 233, 226, 225, 229, 235, 239, 242, 241, 238, 234, 236, 231, 223, 217, 215, 212, + 201, 188, 165, 140, 132, 104, 169, 225, 218, 227, 239, 239, 240, 241, 241, 241, + 240, 240, 229, 235, 231, 227, 219, 87, 56, 255, 255, 255, 255, 255, 255, 38, + 163, 196, 195, 210, 217, 201, 198, 221, 196, 232, 238, 193, 82, 133, 143, 159, + 178, 187, 193, 200, 205, 210, 214, 215, 218, 223, 221, 216, 214, 218, 220, 221, + 222, 224, 226, 227, 229, 229, 227, 230, 234, 239, 240, 242, 242, 241, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 242, 242, + 241, 241, 241, 241, 240, 240, 239, 239, 238, 238, 238, 239, 240, 240, 238, 239, + 238, 234, 234, 235, 233, 227, 227, 230, 234, 238, 241, 239, 237, 234, 229, 226, + 219, 213, 210, 206, 195, 182, 157, 142, 128, 129, 221, 234, 216, 220, 236, 237, + 238, 241, 241, 241, 239, 238, 224, 229, 233, 222, 190, 55, 255, 255, 255, 255, + 255, 255, 255, 27, 93, 169, 172, 191, 183, 201, 220, 200, 228, 220, 239, 238, + 72, 133, 136, 151, 169, 179, 185, 193, 202, 208, 210, 211, 216, 220, 220, 215, + 215, 218, 219, 220, 221, 222, 224, 225, 227, 228, 229, 232, 234, 238, 240, 241, + 242, 242, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 242, 242, 242, 241, 241, 240, 240, 240, 240, 240, 239, 238, 238, 238, + 239, 239, 237, 238, 235, 231, 231, 234, 233, 229, 230, 232, 235, 237, 239, 238, + 236, 235, 225, 223, 218, 213, 210, 205, 191, 178, 157, 137, 115, 167, 238, 235, + 224, 220, 231, 234, 237, 241, 242, 240, 239, 237, 219, 217, 234, 197, 124, 48, + 255, 255, 255, 255, 255, 255, 255, 255, 40, 138, 156, 177, 155, 204, 194, 205, + 213, 237, 222, 221, 84, 112, 131, 146, 163, 171, 177, 188, 201, 209, 208, 209, + 214, 219, 219, 215, 215, 219, 219, 219, 220, 219, 222, 223, 224, 227, 230, 231, + 233, 236, 238, 240, 242, 242, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 241, 242, 242, 241, 241, 240, 240, 240, 241, 241, + 240, 239, 238, 238, 238, 237, 236, 236, 232, 228, 228, 233, 233, 231, 232, 234, + 236, 237, 236, 236, 234, 233, 224, 223, 219, 214, 211, 205, 192, 177, 162, 132, + 101, 192, 230, 231, 234, 227, 229, 233, 237, 241, 241, 239, 235, 232, 215, 207, + 229, 169, 62, 120, 255, 255, 255, 255, 255, 255, 255, 255, 51, 58, 127, 175, + 152, 185, 163, 221, 220, 224, 231, 220, 53, 103, 113, 151, 163, 172, 184, 189, + 203, 204, 202, 206, 213, 219, 219, 216, 214, 210, 219, 218, 217, 215, 215, 216, + 218, 220, 221, 227, 234, 239, 238, 238, 238, 241, 242, 242, 242, 242, 242, 242, + 242, 242, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 241, 241, 242, + 242, 242, 245, 243, 243, 240, 237, 235, 234, 232, 236, 235, 233, 231, 230, 229, + 230, 231, 233, 232, 232, 231, 232, 231, 229, 227, 223, 222, 216, 209, 204, 199, + 182, 165, 149, 125, 102, 189, 238, 228, 249, 219, 230, 226, 221, 253, 213, 230, + 227, 198, 194, 230, 174, 76, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 31, 80, 129, 115, 192, 218, 233, 228, 236, 241, 196, 62, 96, 112, 149, + 156, 163, 173, 180, 197, 200, 204, 209, 213, 217, 219, 219, 217, 216, 218, 217, + 216, 214, 213, 215, 215, 218, 219, 225, 232, 236, 238, 238, 239, 240, 242, 242, + 242, 242, 242, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, + 240, 241, 241, 242, 242, 242, 243, 242, 240, 239, 236, 234, 231, 230, 234, 233, + 232, 230, 230, 229, 231, 231, 233, 232, 231, 230, 231, 229, 226, 223, 220, 219, + 212, 204, 198, 188, 171, 154, 146, 120, 132, 208, 227, 248, 233, 222, 219, 234, + 217, 195, 227, 219, 212, 178, 227, 186, 104, 46, 113, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 49, 88, 141, 105, 199, 200, 207, 228, 240, 206, 120, + 42, 62, 101, 139, 148, 155, 164, 170, 188, 192, 204, 206, 210, 212, 215, 218, + 219, 220, 217, 215, 214, 213, 213, 215, 215, 219, 218, 223, 229, 234, 237, 238, + 239, 241, 242, 242, 242, 242, 242, 242, 242, 242, 241, 241, 241, 241, 241, 241, + 241, 241, 240, 240, 240, 241, 241, 242, 242, 242, 242, 241, 239, 238, 235, 234, + 230, 230, 233, 232, 231, 230, 230, 229, 229, 229, 231, 232, 230, 231, 230, 227, + 222, 219, 218, 216, 211, 203, 196, 185, 167, 151, 142, 117, 114, 204, 219, 242, + 236, 245, 203, 224, 184, 219, 187, 198, 178, 208, 178, 106, 45, 39, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 47, 125, 93, 200, 221, 229, + 233, 219, 137, 65, 111, 255, 83, 126, 141, 152, 160, 165, 179, 182, 196, 199, + 205, 209, 214, 217, 218, 218, 216, 214, 213, 213, 214, 215, 218, 220, 217, 221, + 226, 232, 236, 237, 239, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 240, 240, 241, 241, 242, 242, 242, 242, 241, + 239, 238, 236, 234, 231, 231, 231, 231, 230, 230, 229, 229, 229, 229, 230, 229, + 229, 228, 227, 224, 218, 213, 213, 209, 205, 198, 191, 178, 162, 149, 136, 119, + 62, 173, 238, 222, 242, 245, 216, 189, 198, 224, 187, 170, 200, 200, 80, 46, + 37, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 34, 89, + 75, 201, 199, 219, 202, 178, 88, 63, 255, 255, 73, 117, 134, 144, 152, 156, + 171, 174, 186, 192, 200, 209, 215, 217, 218, 216, 215, 214, 213, 213, 214, 216, + 219, 221, 218, 220, 224, 229, 234, 238, 239, 240, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 241, 241, 242, + 242, 242, 243, 242, 240, 239, 237, 236, 233, 233, 229, 229, 230, 229, 229, 228, + 228, 227, 228, 227, 225, 224, 223, 220, 214, 210, 205, 201, 194, 188, 178, 164, + 148, 138, 131, 112, 48, 111, 239, 230, 233, 226, 211, 182, 171, 183, 174, 181, + 167, 95, 45, 34, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 33, 41, 164, 173, 205, 181, 136, 50, 255, 255, 255, 66, 109, + 124, 132, 138, 143, 162, 167, 178, 185, 195, 205, 213, 217, 217, 215, 213, 212, + 212, 212, 214, 216, 219, 221, 219, 220, 222, 227, 232, 237, 237, 237, 240, 240, + 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, + 240, 241, 241, 242, 242, 242, 243, 242, 241, 240, 238, 237, 234, 234, 227, 228, + 229, 229, 228, 228, 227, 227, 227, 225, 222, 220, 219, 217, 212, 208, 206, 198, + 190, 183, 171, 154, 140, 134, 133, 83, 64, 35, 173, 240, 226, 235, 205, 193, + 131, 179, 171, 165, 73, 33, 49, 31, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 28, 55, 126, 174, 183, 155, 83, 104, 255, + 255, 255, 42, 92, 113, 127, 135, 138, 153, 155, 171, 177, 186, 196, 203, 210, + 212, 212, 210, 209, 209, 209, 211, 214, 217, 219, 220, 220, 221, 225, 231, 236, + 235, 234, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, + 241, 241, 240, 240, 240, 241, 241, 242, 242, 242, 241, 241, 239, 239, 237, 236, + 234, 233, 226, 226, 227, 229, 228, 227, 226, 225, 225, 222, 218, 216, 214, 213, + 210, 209, 200, 191, 183, 177, 167, 151, 141, 139, 128, 49, 66, 23, 93, 195, + 207, 230, 209, 163, 144, 169, 179, 85, 45, 44, 42, 31, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 37, 15, 35, 36, + 50, 100, 255, 255, 255, 255, 16, 73, 107, 131, 141, 141, 147, 144, 165, 169, + 176, 184, 193, 202, 207, 208, 207, 206, 206, 207, 209, 212, 215, 217, 221, 220, + 221, 225, 231, 234, 234, 232, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 240, 240, 241, 241, 242, 242, 242, 240, 239, + 238, 237, 236, 235, 233, 232, 225, 226, 227, 228, 227, 227, 226, 225, 224, 220, + 216, 211, 211, 211, 210, 208, 187, 179, 171, 169, 160, 149, 142, 144, 114, 31, + 63, 70, 60, 126, 172, 189, 170, 121, 104, 154, 89, 51, 35, 34, 39, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 37, 33, 37, 37, 110, 255, 255, 255, 255, 255, 39, 38, 89, 126, 143, 132, + 145, 136, 157, 152, 161, 182, 196, 197, 199, 205, 209, 209, 209, 210, 211, 212, + 213, 215, 215, 219, 223, 227, 229, 231, 234, 236, 237, 238, 238, 239, 239, 240, + 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 241, 241, 242, + 242, 242, 242, 241, 239, 236, 233, 230, 226, 225, 229, 227, 226, 226, 226, 225, + 222, 219, 225, 211, 206, 215, 214, 202, 197, 203, 191, 166, 184, 171, 160, 148, + 166, 140, 85, 93, 61, 61, 72, 58, 139, 145, 144, 124, 97, 69, 49, 40, + 39, 43, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 33, + 74, 107, 129, 123, 136, 130, 146, 153, 162, 173, 185, 196, 199, 200, 205, 205, + 206, 207, 208, 210, 212, 214, 215, 220, 224, 228, 230, 232, 235, 238, 238, 239, + 239, 239, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, + 240, 241, 241, 242, 242, 242, 242, 241, 239, 237, 235, 233, 230, 230, 229, 227, + 225, 225, 225, 224, 222, 221, 220, 214, 211, 210, 208, 203, 197, 193, 181, 160, + 174, 162, 154, 145, 151, 117, 65, 72, 78, 58, 57, 48, 81, 94, 90, 80, + 64, 50, 41, 38, 39, 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 49, 35, 61, 88, 121, 122, 138, 132, 137, 151, 162, 165, 174, 192, + 198, 195, 202, 204, 204, 206, 209, 211, 212, 213, 215, 220, 224, 228, 229, 234, + 237, 240, 240, 240, 240, 241, 241, 241, 242, 242, 241, 241, 241, 241, 241, 241, + 241, 241, 240, 240, 240, 241, 241, 242, 242, 242, 241, 241, 239, 239, 237, 236, + 234, 234, 230, 226, 223, 223, 222, 224, 222, 221, 215, 218, 215, 206, 201, 201, + 194, 183, 180, 163, 170, 160, 157, 152, 139, 92, 56, 58, 98, 57, 43, 46, + 36, 59, 48, 47, 44, 43, 41, 43, 42, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 36, 52, 74, 116, 125, 141, 138, 134, 147, + 158, 163, 170, 183, 193, 195, 206, 208, 209, 210, 213, 214, 214, 215, 216, 220, + 224, 228, 230, 235, 239, 243, 242, 242, 242, 242, 242, 242, 242, 242, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 240, 240, 241, 241, 242, 242, 242, 241, 241, + 239, 238, 237, 236, 233, 233, 230, 226, 223, 221, 221, 222, 223, 222, 214, 215, + 212, 205, 199, 194, 187, 179, 180, 169, 169, 164, 162, 155, 124, 72, 61, 61, + 93, 50, 33, 48, 31, 52, 42, 45, 46, 48, 48, 116, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, 41, 59, 108, 121, + 138, 140, 141, 142, 152, 164, 171, 174, 183, 197, 208, 211, 213, 214, 213, 214, + 214, 213, 216, 219, 223, 226, 229, 234, 239, 243, 243, 243, 243, 242, 242, 242, + 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 241, 241, 242, + 242, 242, 241, 241, 239, 237, 234, 233, 230, 229, 229, 225, 222, 221, 221, 222, + 222, 221, 216, 206, 204, 207, 199, 183, 177, 181, 174, 169, 163, 163, 158, 148, + 103, 56, 60, 66, 63, 41, 29, 44, 43, 46, 43, 44, 46, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, + 37, 50, 101, 117, 134, 144, 148, 142, 147, 162, 170, 168, 176, 192, 204, 208, + 210, 212, 212, 213, 211, 212, 217, 220, 223, 225, 228, 233, 238, 242, 243, 243, + 243, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, + 240, 241, 241, 242, 242, 242, 240, 239, 237, 236, 233, 231, 228, 227, 227, 224, + 222, 220, 221, 222, 221, 219, 215, 202, 198, 205, 196, 177, 174, 184, 170, 170, + 161, 166, 153, 136, 87, 55, 58, 68, 41, 44, 35, 41, 48, 38, 111, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 38, 40, 46, 96, 111, 132, 149, 148, 146, 148, 155, 162, 169, + 173, 181, 197, 202, 206, 210, 211, 213, 212, 213, 218, 220, 222, 224, 226, 231, + 236, 241, 243, 242, 242, 242, 241, 241, 240, 240, 241, 241, 241, 241, 241, 241, + 241, 241, 240, 240, 240, 241, 241, 242, 242, 242, 238, 237, 236, 235, 233, 232, + 229, 229, 225, 223, 221, 221, 223, 223, 221, 218, 208, 202, 198, 196, 188, 178, + 177, 182, 167, 172, 162, 171, 149, 124, 76, 61, 59, 64, 36, 50, 40, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 40, 42, 42, 90, 104, 127, 150, 145, 150, + 149, 147, 154, 171, 175, 171, 194, 199, 203, 209, 212, 215, 216, 217, 218, 221, + 222, 223, 225, 229, 234, 238, 242, 242, 242, 241, 241, 240, 240, 239, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 241, 240, 241, 241, 242, 241, 242, 236, 235, + 234, 235, 234, 233, 232, 232, 224, 223, 221, 223, 224, 223, 220, 217, 202, 204, + 200, 188, 181, 182, 182, 179, 164, 171, 159, 170, 142, 113, 68, 68, 63, 56, + 36, 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 38, 43, 48, 88, 100, + 128, 146, 154, 146, 154, 158, 151, 166, 183, 178, 190, 195, 201, 206, 211, 215, + 220, 223, 219, 222, 224, 226, 229, 231, 233, 236, 238, 239, 240, 242, 242, 241, + 240, 239, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242, 243, 243, 241, + 239, 238, 234, 232, 231, 230, 230, 230, 231, 232, 231, 232, 231, 229, 226, 221, + 215, 212, 202, 204, 206, 196, 183, 175, 178, 183, 166, 176, 161, 164, 131, 106, + 63, 58, 53, 50, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 38, + 41, 44, 82, 98, 126, 145, 156, 154, 158, 158, 158, 171, 185, 186, 189, 194, + 201, 207, 210, 215, 219, 222, 221, 223, 225, 228, 230, 232, 233, 235, 236, 238, + 240, 241, 242, 241, 241, 240, 241, 241, 241, 241, 241, 241, 241, 241, 240, 242, + 242, 242, 242, 240, 238, 237, 233, 232, 230, 229, 228, 229, 231, 231, 237, 236, + 231, 228, 224, 221, 217, 217, 208, 204, 197, 190, 184, 180, 180, 181, 169, 172, + 153, 153, 121, 94, 61, 67, 53, 119, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 36, 39, 39, 77, 93, 124, 143, 152, 160, 158, 154, 162, 170, + 175, 185, 187, 193, 200, 208, 211, 215, 217, 221, 222, 224, 225, 228, 230, 232, + 233, 235, 235, 237, 239, 241, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 240, 240, 240, 241, 240, 239, 237, 237, 233, 232, 231, 230, 229, 229, + 230, 230, 235, 233, 225, 220, 216, 215, 215, 216, 212, 202, 190, 186, 187, 185, + 182, 177, 178, 172, 152, 148, 115, 83, 60, 77, 51, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 36, 40, 38, 74, 91, 121, 139, 147, 164, + 161, 156, 167, 168, 165, 179, 181, 188, 197, 207, 211, 215, 218, 221, 222, 224, + 225, 227, 229, 231, 232, 234, 234, 236, 239, 241, 242, 243, 242, 242, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 240, 240, 239, 239, 238, 237, 236, 233, 233, + 233, 231, 230, 230, 230, 231, 233, 230, 224, 219, 216, 214, 213, 214, 210, 201, + 191, 188, 190, 189, 183, 176, 181, 170, 154, 144, 112, 69, 52, 72, 117, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 43, 38, 74, 91, + 120, 136, 147, 168, 169, 166, 175, 172, 165, 176, 177, 183, 194, 204, 210, 216, + 219, 223, 223, 223, 224, 227, 228, 230, 231, 232, 234, 236, 239, 241, 242, 243, + 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 239, 239, 238, 238, + 237, 237, 234, 234, 234, 234, 233, 232, 231, 231, 234, 233, 230, 227, 225, 222, + 218, 216, 206, 202, 198, 197, 195, 192, 185, 179, 174, 164, 152, 137, 107, 54, + 37, 54, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 39, + 45, 37, 71, 90, 120, 136, 145, 162, 171, 172, 174, 173, 169, 174, 177, 185, + 195, 204, 210, 217, 221, 226, 224, 225, 226, 228, 229, 230, 231, 232, 235, 237, + 239, 241, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 240, 239, 238, 239, 238, 238, 237, 236, 237, 237, 236, 234, 232, 232, 231, 232, + 231, 230, 228, 223, 218, 214, 204, 204, 205, 203, 200, 195, 189, 184, 175, 165, + 156, 131, 105, 50, 33, 43, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 184, 42, 31, 64, 85, 120, 138, 144, 154, 170, 175, 171, 174, + 181, 179, 184, 190, 198, 206, 212, 218, 223, 229, 226, 228, 228, 231, 231, 233, + 234, 235, 236, 238, 240, 241, 242, 241, 241, 240, 241, 241, 241, 241, 241, 241, + 241, 241, 243, 242, 240, 238, 239, 239, 239, 240, 239, 239, 239, 239, 238, 236, + 235, 234, 228, 229, 229, 227, 225, 221, 216, 213, 209, 208, 206, 206, 204, 201, + 194, 189, 180, 171, 159, 122, 102, 51, 40, 43, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 40, 26, 58, 82, 121, 140, 149, 152, + 173, 181, 171, 181, 197, 191, 190, 195, 202, 208, 213, 218, 225, 230, 228, 230, + 231, 233, 234, 235, 236, 237, 237, 239, 240, 242, 242, 241, 240, 239, 241, 241, + 241, 241, 241, 241, 241, 241, 244, 243, 240, 239, 239, 240, 240, 241, 240, 241, + 241, 240, 239, 238, 235, 234, 232, 232, 230, 228, 227, 224, 220, 218, 215, 210, + 205, 205, 207, 205, 199, 192, 182, 170, 155, 111, 93, 47, 41, 42, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 38, 43, 48, 78, + 129, 140, 164, 158, 168, 181, 179, 180, 185, 187, 197, 202, 203, 201, 205, 214, + 222, 226, 227, 230, 233, 237, 239, 240, 240, 241, 240, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 240, 241, 241, 241, 241, 240, 239, 237, 235, 234, 231, 228, 226, 223, + 220, 219, 210, 209, 209, 210, 210, 207, 198, 191, 186, 170, 152, 127, 98, 41, + 47, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 36, 40, 43, 73, 128, 143, 158, 154, 165, 178, 177, 177, 182, 182, 195, 202, + 207, 206, 210, 217, 221, 223, 227, 231, 234, 237, 239, 239, 240, 240, 240, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 241, 241, 241, 241, 240, 239, 238, 234, 232, + 231, 230, 228, 227, 225, 225, 213, 211, 210, 212, 212, 209, 200, 193, 185, 167, + 147, 121, 91, 34, 41, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 39, 40, 37, 65, 123, 144, 159, 156, 167, 180, 178, 180, + 185, 185, 193, 203, 210, 212, 215, 219, 222, 221, 227, 231, 233, 237, 238, 240, + 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242, 242, 242, 242, 241, + 239, 239, 235, 234, 232, 231, 229, 228, 227, 226, 218, 216, 214, 215, 215, 211, + 203, 194, 187, 168, 144, 116, 85, 29, 38, 43, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 45, 46, 38, 61, 118, 142, 162, 159, + 168, 178, 176, 181, 188, 187, 195, 204, 211, 213, 215, 219, 222, 221, 226, 230, + 233, 237, 239, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242, + 242, 242, 242, 241, 240, 239, 239, 237, 234, 233, 229, 226, 224, 222, 223, 220, + 218, 218, 218, 213, 206, 198, 192, 172, 145, 115, 84, 28, 39, 45, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 50, 43, 62, + 119, 144, 162, 159, 165, 170, 168, 176, 186, 186, 198, 205, 209, 209, 211, 218, + 222, 222, 227, 230, 233, 236, 238, 239, 240, 239, 240, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 241, 241, 241, 241, + 241, 241, 240, 241, 242, 242, 242, 241, 240, 238, 238, 235, 234, 232, 228, 225, + 223, 221, 225, 222, 221, 220, 219, 216, 209, 201, 195, 173, 147, 116, 85, 30, + 40, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 213, 210, 219, 226, 225, 226, 227, 207, 204, 210, 209, 217, 222, + 222, 205, 207, 215, 220, 222, 227, 229, 232, 236, 238, 239, 239, 239, 240, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, + 241, 241, 241, 241, 241, 241, 240, 241, 242, 242, 242, 241, 240, 239, 234, 231, + 232, 231, 229, 228, 226, 226, 226, 224, 222, 222, 221, 217, 212, 204, 192, 172, + 147, 119, 87, 31, 39, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 249, 249, 250, + 250, 250, 248, 246, 246, 246, 246, 246, 246, 244, 241, 241, 241, 241, 241, 241, + 241, 241, 240, 240, 241, 241, 241, 241, 241, 241, 241, 242, 242, 242, 242, 241, + 241, 239, 235, 233, 233, 232, 230, 229, 228, 227, 226, 224, 221, 221, 222, 219, + 214, 207, 189, 171, 149, 122, 91, 33, 39, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 252, 250, 250, 250, 250, 250, 250, 247, 246, 246, 246, 246, + 246, 246, 242, 241, 241, 239, 240, 237, 237, 234, 231, 229, 226, 225, 225, 224, + 221, 221, 222, 221, 215, 208, 189, 172, 152, 126, 95, 110, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 75, 74, 73, 73, + 73, 71, 73, 72, 71, 70, 71, 74, 74, 76, 74, 73, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 65, 66, 73, 75, 69, + 76, 78, 73, 80, 81, 59, 78, 68, 77, 63, 68, 80, 68, 67, 63, 71, + 68, 75, 71, 62, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 69, 78, 75, 73, 70, 64, 64, 69, + 71, 70, 63, 78, 72, 38, 72, 76, 84, 76, 79, 62, 67, 64, 61, 167, + 70, 61, 66, 74, 64, 67, 66, 62, 72, 66, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 195, 61, 71, 76, 79, 67, 59, 63, + 62, 56, 59, 70, 69, 59, 60, 60, 85, 60, 83, 79, 97, 62, 52, 89, + 57, 106, 56, 94, 68, 74, 56, 61, 50, 57, 65, 67, 77, 66, 72, 75, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 191, 68, 46, 56, 70, 68, 65, 43, 69, 78, + 76, 43, 48, 51, 56, 61, 69, 72, 64, 53, 59, 51, 49, 88, 143, 66, + 38, 106, 91, 67, 77, 76, 68, 82, 48, 68, 55, 52, 42, 61, 71, 63, + 70, 70, 71, 73, 72, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 189, 60, 50, 64, 72, 47, 59, 78, 51, + 50, 54, 77, 60, 57, 50, 60, 50, 53, 68, 74, 63, 55, 56, 32, 61, + 62, 58, 53, 95, 94, 70, 87, 68, 82, 50, 78, 97, 80, 60, 76, 63, + 55, 80, 80, 51, 55, 63, 72, 72, 73, 72, 74, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 191, 69, 55, 69, 72, 56, 55, 53, + 59, 96, 64, 57, 63, 58, 63, 54, 58, 57, 69, 47, 41, 52, 54, 41, + 41, 55, 38, 76, 40, 47, 56, 74, 43, 76, 39, 70, 57, 78, 69, 50, + 79, 70, 90, 76, 67, 92, 90, 56, 58, 67, 66, 67, 67, 70, 75, 77, + 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 190, 62, 74, 63, 60, 93, 50, 85, + 80, 68, 56, 37, 57, 98, 43, 55, 52, 39, 30, 48, 48, 41, 53, 37, + 27, 27, 26, 19, 25, 38, 46, 57, 56, 60, 32, 58, 50, 32, 52, 23, + 43, 58, 51, 58, 29, 71, 83, 79, 65, 84, 90, 75, 78, 75, 68, 69, + 68, 70, 74, 75, 76, 75, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 65, 75, 59, 59, 76, 60, + 57, 103, 65, 86, 57, 62, 72, 43, 43, 48, 63, 44, 27, 47, 38, 47, + 40, 52, 30, 26, 23, 17, 16, 17, 23, 28, 41, 40, 40, 46, 42, 40, + 41, 42, 36, 51, 39, 42, 46, 38, 64, 60, 79, 79, 60, 67, 77, 80, + 80, 63, 74, 74, 72, 74, 74, 75, 74, 70, 74, 134, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 65, 69, 61, 93, + 105, 79, 58, 93, 67, 59, 69, 64, 61, 76, 52, 57, 47, 43, 49, 33, + 42, 36, 31, 43, 45, 48, 45, 51, 46, 44, 40, 36, 80, 29, 45, 61, + 43, 27, 45, 45, 33, 41, 34, 43, 52, 50, 48, 60, 66, 54, 76, 43, + 56, 64, 82, 82, 95, 66, 84, 66, 56, 60, 65, 63, 67, 78, 71, 80, + 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 78, 64, + 74, 69, 61, 53, 84, 69, 52, 61, 56, 39, 67, 54, 57, 55, 46, 41, + 48, 43, 54, 39, 48, 38, 28, 37, 38, 43, 11, 42, 26, 28, 56, 27, + 43, 38, 36, 53, 42, 30, 44, 41, 35, 52, 50, 52, 56, 49, 43, 50, + 51, 38, 39, 70, 42, 48, 40, 66, 64, 105, 55, 72, 81, 71, 63, 64, + 63, 60, 86, 76, 72, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 86, 70, 77, 86, 58, 71, 92, 46, 89, 97, 90, 77, 91, 72, 67, 50, + 57, 41, 46, 33, 54, 49, 56, 41, 49, 39, 27, 35, 35, 40, 47, 40, + 47, 65, 61, 26, 55, 41, 33, 49, 45, 40, 46, 39, 41, 66, 53, 50, + 52, 48, 44, 51, 53, 41, 28, 55, 55, 45, 78, 87, 80, 83, 66, 78, + 84, 83, 85, 86, 69, 52, 78, 69, 76, 81, 66, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 194, 66, 80, 45, 64, 82, 68, 80, 55, 75, 37, 56, 79, 82, 63, + 64, 58, 62, 44, 50, 44, 43, 37, 52, 51, 47, 32, 40, 34, 30, 41, + 38, 39, 82, 52, 65, 80, 62, 38, 71, 48, 35, 43, 43, 45, 49, 40, + 45, 68, 53, 44, 45, 46, 47, 55, 60, 51, 68, 43, 57, 48, 82, 101, + 115, 62, 79, 70, 72, 87, 92, 83, 73, 76, 68, 62, 75, 83, 62, 60, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 71, 71, 74, 58, 75, 59, 72, 93, 69, 85, 69, 69, + 52, 70, 80, 67, 42, 49, 48, 43, 41, 52, 37, 43, 43, 45, 49, 32, + 39, 39, 42, 55, 48, 43, 50, 57, 48, 41, 69, 50, 51, 49, 39, 38, + 39, 45, 49, 43, 46, 60, 67, 51, 49, 52, 51, 54, 58, 50, 52, 51, + 52, 79, 60, 97, 81, 46, 57, 64, 74, 79, 67, 53, 63, 89, 77, 63, + 63, 70, 70, 77, 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 71, 69, 69, 67, 95, 73, 76, 71, 51, + 83, 84, 45, 73, 40, 55, 69, 65, 32, 43, 41, 40, 36, 55, 34, 45, + 37, 42, 57, 41, 50, 51, 53, 64, 52, 43, 38, 37, 46, 39, 57, 55, + 55, 31, 40, 34, 35, 40, 44, 44, 47, 47, 75, 54, 50, 57, 57, 58, + 60, 53, 30, 56, 58, 72, 88, 75, 39, 37, 49, 66, 71, 61, 53, 58, + 63, 67, 78, 83, 75, 67, 70, 76, 78, 80, 140, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 69, 69, 67, 66, 63, 67, + 81, 59, 51, 55, 52, 76, 42, 67, 51, 61, 71, 59, 51, 46, 43, 36, + 39, 47, 38, 39, 42, 42, 57, 45, 58, 57, 53, 57, 45, 38, 53, 24, + 55, 53, 42, 48, 65, 26, 40, 37, 40, 42, 42, 49, 53, 45, 77, 53, + 49, 59, 62, 62, 63, 57, 72, 57, 55, 41, 87, 50, 54, 70, 67, 66, + 59, 54, 62, 73, 65, 53, 68, 98, 85, 59, 66, 69, 74, 92, 85, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 69, 69, 67, + 66, 64, 65, 74, 66, 69, 80, 82, 90, 91, 54, 57, 63, 60, 64, 34, + 50, 28, 50, 34, 44, 36, 42, 31, 49, 43, 49, 41, 61, 56, 47, 46, + 37, 32, 41, 34, 42, 26, 47, 38, 40, 45, 41, 42, 47, 47, 43, 54, + 59, 49, 84, 57, 52, 62, 64, 60, 57, 52, 77, 49, 55, 92, 61, 56, + 66, 85, 75, 61, 57, 63, 65, 58, 60, 72, 70, 98, 68, 41, 70, 83, + 73, 84, 82, 85, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 70, + 68, 64, 60, 61, 65, 69, 58, 66, 41, 62, 93, 44, 72, 74, 48, 58, + 55, 70, 55, 48, 34, 54, 34, 41, 42, 37, 38, 48, 50, 42, 28, 35, + 45, 42, 38, 31, 36, 39, 30, 35, 43, 42, 40, 36, 41, 43, 44, 36, + 36, 47, 53, 49, 42, 41, 71, 60, 49, 45, 50, 57, 59, 58, 70, 54, + 84, 74, 60, 88, 95, 93, 69, 56, 66, 71, 91, 64, 47, 26, 104, 67, + 83, 108, 82, 60, 76, 87, 88, 87, 81, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 67, 67, 67, 68, 67, 64, 59, 54, 74, 73, 86, 30, 60, 62, + 32, 80, 76, 63, 48, 40, 52, 52, 57, 66, 37, 39, 45, 50, 50, 47, + 44, 43, 29, 36, 44, 44, 39, 36, 41, 46, 49, 54, 62, 70, 77, 83, + 87, 89, 91, 81, 75, 74, 70, 61, 55, 53, 59, 55, 49, 48, 52, 61, + 70, 73, 49, 91, 80, 57, 77, 94, 82, 68, 75, 77, 87, 81, 70, 54, + 77, 106, 38, 100, 100, 53, 48, 66, 70, 70, 80, 80, 80, 78, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 194, 70, 67, 65, 68, 71, 70, 61, 53, 61, 70, + 83, 85, 83, 61, 62, 39, 50, 67, 85, 61, 64, 37, 50, 55, 63, 57, + 57, 60, 51, 36, 35, 44, 49, 59, 76, 89, 100, 114, 130, 143, 123, 124, + 127, 135, 143, 149, 150, 149, 164, 161, 161, 163, 165, 166, 171, 176, 135, 131, + 119, 101, 82, 64, 54, 47, 51, 82, 56, 63, 77, 61, 77, 88, 79, 84, + 76, 70, 59, 68, 72, 78, 114, 98, 86, 80, 67, 53, 60, 81, 74, 77, + 79, 79, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 193, 71, 73, 69, 64, 63, 66, 69, + 69, 66, 71, 58, 50, 32, 67, 60, 20, 68, 58, 60, 57, 47, 71, 74, + 74, 64, 73, 62, 51, 45, 49, 63, 97, 123, 131, 131, 134, 131, 126, 125, + 130, 136, 155, 156, 157, 158, 160, 160, 159, 158, 169, 169, 169, 170, 168, 169, + 174, 182, 176, 174, 169, 159, 142, 118, 96, 82, 63, 47, 54, 90, 76, 62, + 83, 77, 53, 93, 95, 83, 58, 82, 81, 76, 43, 74, 59, 59, 102, 96, + 69, 87, 67, 72, 75, 75, 75, 134, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 68, 71, 71, + 68, 65, 63, 63, 68, 70, 87, 60, 70, 91, 69, 61, 62, 52, 56, 71, + 59, 54, 46, 56, 47, 51, 34, 64, 98, 117, 124, 126, 122, 113, 118, 122, + 127, 129, 130, 135, 143, 150, 143, 147, 152, 152, 151, 151, 154, 159, 162, 165, + 166, 164, 159, 156, 158, 162, 161, 161, 163, 172, 176, 171, 159, 146, 122, 86, + 83, 60, 47, 76, 78, 63, 106, 97, 66, 72, 80, 108, 82, 55, 58, 52, + 79, 77, 48, 77, 102, 59, 61, 65, 67, 69, 69, 73, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, + 68, 67, 67, 69, 72, 68, 66, 63, 65, 64, 46, 106, 47, 60, 55, 30, + 67, 58, 72, 113, 119, 111, 65, 59, 59, 90, 113, 124, 127, 115, 111, 118, + 122, 118, 127, 130, 133, 133, 132, 134, 140, 145, 143, 150, 156, 156, 153, 154, + 160, 166, 149, 156, 160, 158, 158, 159, 160, 162, 169, 161, 155, 158, 165, 167, + 163, 154, 160, 150, 129, 75, 62, 60, 41, 84, 88, 80, 79, 93, 78, 65, + 66, 90, 95, 74, 71, 90, 97, 86, 92, 113, 67, 67, 68, 69, 73, 78, + 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 193, 69, 69, 68, 70, 68, 68, 66, 69, 71, 72, 72, 51, 48, + 89, 86, 52, 84, 57, 51, 81, 78, 66, 67, 79, 90, 100, 117, 131, 132, + 128, 123, 120, 125, 126, 129, 132, 134, 137, 138, 139, 141, 145, 148, 151, 153, + 155, 155, 154, 154, 157, 160, 166, 170, 169, 163, 160, 159, 156, 152, 165, 159, + 152, 151, 153, 155, 154, 150, 133, 149, 157, 148, 129, 81, 51, 82, 67, 54, + 63, 85, 105, 95, 97, 105, 108, 101, 110, 107, 87, 86, 74, 40, 73, 70, + 66, 68, 75, 83, 86, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 68, 68, 70, 69, 76, 68, 59, 58, 66, 76, + 84, 85, 83, 60, 40, 54, 45, 65, 57, 70, 89, 83, 92, 95, 128, 115, + 117, 118, 128, 123, 126, 140, 142, 135, 133, 140, 153, 157, 158, 157, 155, 152, + 153, 154, 161, 159, 158, 160, 163, 165, 166, 165, 161, 165, 163, 157, 156, 159, + 160, 157, 158, 158, 158, 155, 153, 149, 145, 142, 139, 139, 133, 145, 135, 137, + 142, 84, 64, 72, 81, 62, 75, 77, 91, 81, 82, 119, 97, 52, 50, 57, + 64, 89, 69, 63, 56, 58, 70, 79, 83, 80, 82, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 67, 64, 63, 65, 55, 56, + 55, 71, 57, 104, 68, 76, 68, 56, 129, 98, 113, 118, 74, 36, 79, 92, + 125, 135, 109, 101, 122, 131, 137, 138, 141, 141, 142, 146, 155, 160, 167, 156, + 146, 146, 154, 159, 159, 156, 155, 160, 162, 163, 160, 156, 156, 154, 156, 156, + 157, 158, 160, 161, 163, 163, 165, 166, 164, 161, 158, 155, 153, 151, 149, 146, + 146, 145, 146, 146, 146, 145, 97, 65, 62, 75, 89, 89, 103, 111, 175, 49, + 65, 81, 28, 57, 97, 37, 52, 65, 71, 67, 68, 77, 81, 75, 76, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 70, 78, 74, + 68, 63, 77, 58, 65, 45, 75, 79, 76, 54, 67, 89, 55, 81, 97, 89, + 126, 122, 124, 109, 115, 125, 120, 128, 141, 140, 143, 146, 149, 151, 154, 157, + 165, 169, 165, 162, 158, 158, 161, 162, 161, 158, 157, 159, 160, 161, 160, 158, + 156, 154, 157, 154, 156, 156, 157, 158, 161, 161, 167, 169, 171, 170, 168, 167, + 164, 163, 162, 158, 157, 153, 150, 145, 139, 137, 135, 108, 68, 68, 63, 93, + 83, 68, 61, 86, 68, 51, 62, 83, 56, 74, 64, 74, 76, 67, 66, 76, + 86, 84, 80, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 70, 69, 63, 61, 70, 78, 89, 91, 111, 76, 92, 58, 88, 69, 76, 44, + 61, 53, 64, 55, 132, 114, 130, 109, 109, 123, 133, 147, 155, 146, 154, 154, + 158, 161, 164, 165, 171, 173, 168, 170, 173, 175, 173, 169, 167, 164, 164, 161, + 162, 163, 163, 164, 163, 160, 157, 154, 155, 155, 155, 156, 159, 162, 167, 169, + 173, 175, 175, 176, 175, 174, 169, 166, 164, 160, 155, 148, 140, 136, 146, 123, + 115, 65, 61, 47, 75, 66, 87, 85, 87, 96, 112, 63, 19, 53, 58, 69, + 70, 62, 59, 66, 73, 73, 81, 78, 135, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 192, 69, 68, 65, 68, 78, 86, 59, 69, 47, 67, 75, 78, + 75, 46, 72, 97, 84, 78, 79, 122, 100, 124, 101, 107, 126, 142, 149, 151, + 151, 148, 154, 156, 159, 162, 167, 168, 172, 172, 172, 174, 176, 175, 173, 169, + 163, 160, 162, 159, 157, 160, 162, 164, 163, 160, 153, 151, 152, 151, 152, 154, + 158, 159, 160, 165, 169, 172, 176, 176, 175, 174, 167, 167, 166, 165, 162, 154, + 148, 142, 136, 135, 118, 122, 53, 51, 50, 84, 71, 54, 97, 79, 60, 59, + 89, 84, 62, 74, 82, 81, 77, 77, 77, 76, 79, 78, 76, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 68, 63, 60, 57, 54, 45, 34, 68, 106, + 89, 109, 69, 76, 86, 91, 73, 53, 70, 63, 75, 82, 139, 88, 103, 124, + 148, 157, 158, 153, 152, 155, 153, 154, 157, 160, 167, 168, 171, 170, 170, 166, + 163, 162, 162, 157, 152, 147, 149, 147, 143, 146, 150, 152, 151, 148, 145, 145, + 145, 146, 147, 149, 153, 154, 154, 158, 162, 166, 170, 171, 171, 171, 168, 168, + 168, 167, 166, 162, 155, 150, 156, 127, 139, 114, 115, 68, 68, 50, 89, 98, + 81, 104, 66, 91, 44, 49, 45, 55, 65, 65, 65, 63, 62, 61, 73, 78, + 80, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 66, 72, 67, 68, 79, + 100, 112, 98, 94, 76, 76, 82, 95, 102, 90, 96, 90, 66, 86, 80, 116, + 83, 122, 135, 146, 147, 146, 154, 155, 151, 158, 152, 154, 155, 158, 163, 165, + 166, 165, 166, 160, 153, 150, 149, 149, 145, 141, 142, 139, 140, 139, 143, 142, + 143, 139, 136, 136, 137, 137, 139, 140, 140, 140, 146, 148, 153, 156, 159, 162, + 164, 165, 171, 169, 169, 168, 167, 164, 159, 155, 148, 149, 131, 138, 110, 122, + 78, 45, 79, 49, 93, 82, 140, 66, 54, 49, 61, 65, 65, 69, 72, 74, + 72, 76, 69, 78, 81, 81, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 80, + 75, 57, 43, 48, 69, 79, 57, 58, 81, 62, 72, 83, 105, 117, 127, 79, + 120, 106, 86, 105, 99, 118, 141, 149, 143, 137, 150, 152, 146, 148, 151, 148, + 146, 148, 151, 153, 153, 151, 151, 149, 145, 142, 140, 140, 141, 140, 135, 138, + 141, 140, 141, 137, 138, 136, 130, 129, 131, 129, 130, 127, 125, 123, 129, 130, + 132, 136, 140, 145, 150, 152, 163, 163, 163, 162, 163, 162, 159, 156, 141, 142, + 156, 127, 127, 111, 109, 79, 49, 77, 77, 85, 20, 67, 54, 74, 55, 53, + 53, 58, 67, 66, 60, 60, 69, 78, 82, 81, 80, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 193, 72, 62, 55, 66, 92, 107, 91, 64, 81, 70, 80, 62, 57, 73, + 55, 58, 93, 134, 96, 114, 80, 91, 136, 137, 124, 142, 146, 143, 156, 152, + 138, 143, 145, 142, 138, 138, 139, 141, 139, 136, 133, 135, 137, 133, 128, 127, + 132, 137, 129, 134, 139, 140, 136, 133, 132, 133, 129, 128, 128, 127, 124, 119, + 114, 109, 114, 114, 116, 118, 124, 131, 137, 143, 153, 152, 153, 154, 156, 158, + 155, 154, 155, 144, 139, 139, 118, 110, 105, 107, 94, 61, 62, 63, 104, 86, + 63, 58, 56, 56, 57, 69, 77, 71, 55, 51, 69, 79, 80, 78, 76, 137, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 72, 68, 70, 55, 58, 101, 54, 80, 70, 64, 62, + 72, 57, 52, 59, 52, 56, 102, 94, 98, 85, 108, 116, 140, 137, 137, 139, + 145, 142, 137, 133, 136, 139, 134, 139, 128, 138, 125, 137, 130, 135, 133, 136, + 133, 147, 133, 138, 135, 148, 155, 156, 156, 157, 158, 156, 154, 151, 147, 151, + 160, 146, 141, 149, 141, 141, 134, 132, 129, 124, 123, 125, 129, 133, 141, 142, + 148, 155, 154, 148, 149, 158, 153, 152, 145, 138, 134, 127, 110, 97, 116, 77, + 45, 67, 44, 38, 84, 51, 69, 62, 63, 46, 68, 63, 58, 38, 60, 71, + 71, 73, 75, 78, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 70, 61, 53, 47, 70, 56, + 62, 82, 69, 55, 58, 55, 75, 101, 98, 99, 74, 84, 92, 105, 115, 131, + 135, 135, 137, 136, 139, 139, 137, 133, 131, 128, 133, 130, 124, 132, 134, 148, + 150, 154, 165, 169, 164, 176, 162, 168, 167, 180, 181, 182, 184, 185, 186, 186, + 186, 185, 182, 184, 178, 171, 168, 168, 174, 171, 172, 161, 146, 141, 140, 142, + 140, 138, 141, 142, 132, 122, 131, 151, 155, 141, 145, 149, 147, 138, 131, 126, + 119, 118, 118, 97, 80, 55, 58, 68, 51, 67, 46, 47, 48, 56, 54, 57, + 55, 67, 83, 86, 78, 74, 76, 80, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 72, 68, 58, + 73, 80, 98, 102, 58, 79, 68, 55, 60, 58, 69, 78, 57, 49, 66, 87, + 94, 123, 116, 138, 132, 135, 135, 133, 134, 136, 140, 138, 135, 130, 135, 140, + 153, 155, 162, 158, 161, 160, 176, 181, 178, 190, 177, 188, 188, 202, 200, 201, + 202, 203, 204, 204, 206, 204, 201, 204, 185, 195, 192, 178, 193, 184, 164, 159, + 152, 147, 139, 128, 112, 104, 111, 106, 119, 141, 144, 131, 137, 159, 149, 154, + 157, 153, 146, 134, 119, 110, 118, 109, 101, 62, 62, 73, 49, 66, 70, 67, + 57, 72, 49, 48, 38, 64, 70, 68, 59, 56, 62, 69, 72, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 76, 72, 77, 50, 49, 52, 90, 98, 59, 65, 61, 59, 72, 67, 69, 80, + 83, 94, 87, 101, 108, 123, 118, 134, 133, 136, 134, 133, 133, 131, 132, 130, + 129, 128, 161, 154, 155, 123, 117, 99, 115, 122, 170, 181, 179, 192, 183, 198, + 200, 212, 209, 210, 209, 211, 210, 209, 208, 208, 203, 211, 187, 209, 208, 178, + 194, 176, 140, 136, 127, 109, 89, 76, 70, 71, 90, 127, 140, 119, 114, 133, + 143, 133, 135, 131, 132, 139, 146, 143, 129, 118, 124, 113, 101, 96, 62, 55, + 80, 54, 59, 52, 43, 55, 50, 52, 43, 54, 70, 71, 66, 65, 70, 77, + 83, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 195, 76, 72, 67, 51, 47, 41, 91, 67, 55, 46, 66, 73, + 97, 94, 87, 84, 77, 87, 107, 112, 127, 120, 129, 125, 135, 135, 120, 126, + 132, 133, 137, 143, 155, 165, 104, 115, 150, 162, 187, 175, 173, 160, 179, 193, + 195, 209, 199, 215, 213, 222, 219, 221, 220, 220, 219, 219, 218, 218, 214, 222, + 197, 218, 217, 187, 198, 180, 160, 162, 164, 159, 146, 125, 100, 86, 54, 40, + 49, 85, 112, 118, 130, 148, 155, 145, 140, 140, 144, 144, 141, 141, 136, 116, + 109, 111, 78, 60, 72, 65, 60, 59, 63, 52, 62, 59, 61, 54, 59, 67, + 66, 62, 57, 57, 62, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 77, 76, 72, 62, 71, 94, 77, 107, 60, + 59, 57, 76, 73, 91, 97, 101, 101, 83, 84, 112, 115, 135, 124, 140, 124, + 131, 123, 140, 143, 140, 128, 118, 112, 117, 124, 138, 120, 113, 121, 159, 179, + 189, 187, 192, 210, 211, 222, 211, 223, 219, 224, 227, 227, 228, 228, 231, 232, + 234, 235, 233, 236, 215, 221, 216, 199, 212, 199, 176, 172, 172, 181, 183, 164, + 128, 97, 140, 130, 90, 44, 50, 100, 130, 126, 128, 133, 144, 151, 148, 139, + 139, 143, 142, 122, 126, 91, 97, 86, 28, 81, 78, 86, 97, 65, 65, 48, + 54, 47, 67, 77, 80, 77, 69, 67, 70, 76, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 77, 76, 72, 75, 79, + 106, 71, 76, 61, 57, 93, 152, 125, 111, 98, 99, 107, 99, 105, 120, 127, + 136, 134, 134, 123, 111, 103, 74, 82, 90, 97, 106, 116, 129, 136, 132, 127, + 121, 142, 165, 192, 196, 199, 204, 219, 218, 226, 214, 227, 225, 230, 233, 233, + 233, 233, 236, 238, 239, 240, 240, 239, 232, 224, 219, 218, 221, 216, 227, 206, + 184, 177, 181, 183, 178, 170, 140, 134, 131, 131, 122, 102, 80, 69, 55, 64, + 89, 119, 139, 144, 144, 144, 141, 126, 132, 86, 101, 100, 31, 80, 61, 65, + 68, 56, 51, 44, 47, 52, 55, 61, 66, 66, 64, 64, 66, 71, 79, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 76, + 72, 68, 56, 60, 105, 80, 74, 86, 45, 95, 60, 59, 85, 103, 118, 121, + 107, 110, 132, 140, 134, 142, 124, 125, 98, 93, 98, 103, 109, 120, 131, 142, + 147, 150, 158, 174, 177, 191, 179, 193, 196, 213, 214, 232, 229, 235, 222, 240, + 238, 244, 240, 241, 239, 238, 239, 239, 240, 241, 234, 239, 245, 232, 226, 234, + 228, 224, 211, 214, 215, 213, 204, 195, 191, 190, 216, 206, 185, 172, 174, 172, + 133, 87, 86, 68, 66, 95, 131, 151, 150, 144, 145, 130, 124, 108, 96, 98, + 82, 66, 76, 64, 46, 65, 57, 63, 49, 61, 70, 72, 73, 72, 72, 73, + 74, 77, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 69, 64, 65, 66, 77, 96, 94, 72, 65, 67, 67, 69, 55, 83, + 77, 76, 114, 100, 109, 107, 121, 132, 138, 133, 126, 126, 122, 115, 153, 163, + 174, 182, 185, 189, 195, 201, 210, 211, 214, 213, 217, 216, 219, 220, 230, 233, + 234, 235, 236, 237, 237, 239, 237, 239, 238, 238, 241, 242, 243, 242, 238, 237, + 239, 238, 237, 236, 235, 234, 236, 236, 233, 232, 229, 226, 226, 225, 224, 227, + 226, 219, 217, 213, 202, 189, 126, 120, 99, 75, 80, 113, 142, 148, 140, 130, + 142, 127, 98, 106, 71, 72, 67, 53, 65, 61, 76, 82, 72, 49, 60, 53, + 70, 82, 115, 98, 88, 69, 76, 136, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 199, 77, 63, 58, 55, 74, 86, 78, 67, 74, 74, + 57, 41, 74, 97, 73, 114, 106, 81, 131, 126, 149, 139, 140, 143, 130, 125, + 166, 218, 210, 218, 225, 228, 228, 228, 232, 235, 229, 229, 230, 231, 232, 233, + 234, 237, 236, 237, 240, 240, 240, 240, 240, 240, 240, 240, 239, 239, 239, 240, + 243, 239, 236, 234, 237, 237, 237, 237, 239, 239, 239, 239, 238, 236, 234, 234, + 231, 233, 235, 238, 238, 235, 235, 235, 227, 215, 217, 199, 162, 113, 66, 58, + 97, 139, 162, 137, 142, 127, 122, 92, 129, 68, 90, 56, 66, 49, 59, 44, + 67, 73, 91, 67, 51, 88, 81, 72, 62, 88, 73, 72, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 68, 62, 58, 66, 73, 50, 71, + 77, 69, 69, 66, 57, 54, 86, 97, 92, 126, 80, 82, 121, 122, 118, 126, + 119, 101, 119, 169, 208, 216, 227, 234, 237, 238, 235, 234, 235, 237, 237, 237, + 238, 238, 239, 239, 240, 241, 242, 243, 242, 241, 241, 241, 242, 242, 241, 241, + 238, 237, 237, 237, 240, 238, 237, 234, 236, 236, 237, 240, 243, 243, 241, 239, + 239, 237, 235, 235, 233, 235, 237, 241, 242, 239, 239, 242, 238, 230, 226, 223, + 220, 202, 160, 112, 86, 75, 107, 156, 125, 140, 120, 129, 114, 102, 53, 150, + 95, 37, 30, 79, 39, 47, 50, 71, 67, 79, 81, 105, 73, 39, 72, 73, + 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 68, 63, 64, + 81, 93, 49, 68, 72, 62, 59, 59, 63, 74, 100, 99, 139, 116, 89, 129, + 106, 117, 123, 114, 124, 164, 207, 227, 230, 230, 230, 234, 239, 237, 237, 234, + 237, 237, 238, 236, 238, 235, 237, 235, 237, 237, 244, 243, 244, 242, 242, 242, + 241, 242, 240, 239, 236, 234, 234, 234, 235, 235, 236, 235, 236, 235, 236, 239, + 242, 243, 241, 241, 239, 237, 236, 236, 235, 237, 240, 242, 241, 238, 238, 237, + 235, 231, 221, 228, 229, 222, 217, 199, 153, 100, 66, 105, 153, 126, 137, 128, + 103, 117, 85, 73, 95, 86, 55, 44, 74, 44, 56, 61, 79, 72, 83, 70, + 87, 92, 74, 75, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 77, 74, 68, 63, 67, 74, 84, 78, 66, 59, 68, 69, 64, 68, 94, 94, + 138, 99, 119, 138, 93, 105, 104, 123, 162, 201, 223, 220, 217, 223, 235, 239, + 242, 241, 242, 240, 243, 242, 242, 240, 241, 239, 241, 239, 240, 240, 245, 245, + 246, 245, 243, 244, 243, 241, 238, 235, 230, 228, 226, 226, 229, 231, 234, 235, + 236, 235, 236, 238, 240, 240, 241, 241, 239, 237, 236, 236, 235, 237, 245, 247, + 246, 243, 242, 239, 238, 238, 237, 239, 232, 217, 217, 223, 214, 187, 125, 57, + 123, 151, 131, 121, 126, 111, 126, 73, 40, 122, 53, 44, 47, 70, 69, 51, + 49, 41, 72, 76, 90, 84, 77, 74, 73, 136, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 66, 65, 64, 65, 72, 78, 83, 83, 78, 76, 80, 77, + 77, 86, 98, 104, 104, 102, 132, 91, 82, 98, 147, 188, 217, 214, 215, 230, + 238, 232, 236, 237, 237, 237, 236, 236, 236, 236, 240, 240, 240, 240, 240, 240, + 239, 241, 243, 246, 246, 245, 243, 241, 238, 236, 229, 221, 216, 210, 209, 211, + 216, 222, 227, 232, 233, 235, 236, 236, 237, 236, 241, 239, 237, 236, 235, 233, + 233, 235, 242, 242, 243, 245, 242, 240, 240, 244, 237, 233, 233, 240, 237, 227, + 219, 216, 192, 102, 47, 139, 137, 134, 131, 126, 110, 136, 78, 48, 101, 63, + 55, 64, 61, 76, 66, 79, 97, 141, 113, 75, 75, 74, 73, 74, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 76, 67, 68, 74, 83, 97, 105, 68, 78, + 84, 87, 89, 87, 101, 127, 120, 122, 115, 125, 109, 75, 102, 134, 212, 202, + 207, 227, 227, 213, 221, 246, 238, 237, 236, 236, 237, 237, 237, 237, 235, 235, + 235, 235, 235, 235, 235, 236, 238, 241, 240, 240, 237, 233, 225, 221, 206, 197, + 189, 183, 182, 187, 195, 204, 217, 224, 230, 233, 236, 237, 236, 235, 239, 237, + 236, 235, 234, 232, 229, 231, 231, 231, 234, 238, 234, 230, 232, 239, 241, 230, + 226, 233, 235, 232, 230, 226, 210, 169, 87, 68, 159, 129, 134, 138, 107, 109, + 74, 90, 81, 83, 98, 67, 51, 54, 57, 84, 63, 61, 70, 110, 71, 71, + 71, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 67, 65, 71, 78, 80, + 81, 81, 79, 73, 67, 78, 97, 107, 118, 137, 114, 107, 133, 121, 60, 87, + 120, 175, 203, 219, 226, 219, 213, 219, 223, 222, 223, 222, 221, 222, 225, 227, + 227, 227, 228, 229, 229, 229, 230, 230, 231, 233, 230, 231, 232, 230, 225, 219, + 212, 204, 183, 174, 164, 158, 158, 164, 174, 184, 207, 218, 225, 232, 235, 238, + 236, 235, 237, 236, 235, 232, 231, 228, 226, 225, 227, 225, 228, 232, 229, 221, + 224, 229, 222, 235, 240, 225, 221, 232, 238, 229, 204, 222, 168, 85, 95, 156, + 123, 126, 126, 125, 97, 71, 74, 51, 88, 46, 93, 76, 69, 48, 71, 73, + 84, 72, 64, 66, 70, 79, 140, 255, 255, 255, 255, 255, 255, 255, 255, 79, + 65, 68, 78, 94, 82, 92, 72, 76, 109, 67, 79, 112, 128, 115, 96, 133, + 102, 122, 59, 124, 177, 208, 209, 222, 225, 217, 214, 220, 220, 210, 211, 216, + 215, 213, 225, 221, 219, 222, 222, 218, 216, 218, 222, 226, 227, 227, 226, 220, + 215, 214, 215, 209, 194, 177, 158, 150, 142, 137, 139, 141, 141, 146, 185, 206, + 221, 226, 225, 225, 230, 237, 240, 233, 228, 225, 225, 224, 219, 215, 226, 208, + 229, 222, 213, 220, 211, 218, 219, 214, 216, 217, 219, 219, 223, 228, 215, 220, + 202, 152, 79, 110, 134, 130, 130, 119, 111, 66, 89, 83, 68, 88, 50, 49, + 64, 63, 82, 89, 73, 103, 85, 82, 75, 72, 77, 255, 255, 255, 255, 255, + 255, 255, 85, 77, 70, 42, 103, 107, 106, 76, 69, 66, 72, 72, 106, 124, + 141, 108, 110, 110, 143, 78, 119, 141, 221, 222, 228, 216, 213, 219, 218, 208, + 203, 206, 215, 214, 206, 207, 224, 227, 221, 221, 213, 210, 207, 207, 211, 216, + 218, 218, 213, 208, 206, 208, 209, 197, 175, 154, 140, 141, 142, 137, 132, 131, + 139, 152, 171, 191, 210, 219, 218, 216, 222, 228, 225, 232, 234, 225, 210, 202, + 211, 220, 216, 223, 223, 222, 218, 223, 225, 208, 200, 200, 198, 200, 210, 222, + 223, 219, 228, 234, 213, 181, 122, 88, 126, 132, 116, 137, 101, 72, 126, 118, + 127, 44, 86, 55, 70, 29, 94, 95, 101, 83, 123, 82, 53, 62, 74, 255, + 255, 255, 255, 255, 255, 255, 60, 75, 51, 80, 102, 151, 103, 69, 69, 76, + 67, 86, 114, 111, 139, 114, 115, 109, 131, 72, 131, 189, 224, 226, 229, 219, + 214, 214, 205, 194, 197, 210, 200, 203, 192, 186, 185, 186, 185, 196, 196, 195, + 195, 198, 204, 211, 215, 215, 206, 198, 193, 194, 198, 185, 160, 139, 138, 139, + 139, 137, 134, 134, 141, 153, 167, 186, 205, 212, 213, 212, 218, 223, 231, 227, + 218, 210, 202, 198, 199, 200, 202, 216, 198, 209, 212, 206, 224, 203, 207, 208, + 200, 189, 191, 207, 218, 223, 229, 234, 218, 212, 177, 80, 118, 142, 132, 136, + 118, 112, 68, 106, 107, 130, 46, 48, 73, 68, 65, 79, 93, 107, 104, 93, + 77, 67, 76, 142, 255, 255, 255, 255, 255, 193, 78, 70, 63, 48, 84, 103, + 114, 97, 71, 80, 72, 83, 101, 105, 124, 117, 128, 126, 93, 104, 138, 224, + 211, 222, 227, 224, 207, 189, 188, 197, 198, 190, 170, 174, 160, 158, 156, 162, + 158, 168, 167, 168, 177, 184, 196, 204, 212, 214, 212, 196, 181, 176, 174, 167, + 150, 134, 135, 129, 126, 129, 137, 145, 149, 153, 168, 183, 198, 204, 204, 205, + 212, 219, 233, 219, 203, 195, 194, 192, 181, 172, 181, 182, 163, 172, 177, 165, + 180, 186, 195, 202, 205, 195, 184, 186, 204, 224, 227, 231, 220, 228, 203, 102, + 99, 140, 116, 137, 139, 121, 51, 139, 106, 99, 101, 62, 50, 88, 74, 86, + 72, 81, 104, 109, 88, 51, 47, 77, 255, 255, 255, 255, 255, 71, 64, 62, + 82, 88, 98, 81, 77, 65, 64, 67, 71, 71, 103, 136, 121, 120, 145, 125, + 86, 122, 188, 221, 230, 226, 232, 214, 188, 175, 181, 191, 174, 147, 141, 151, + 142, 161, 168, 181, 163, 163, 147, 151, 163, 172, 185, 192, 201, 201, 212, 193, + 176, 162, 156, 149, 140, 132, 127, 130, 131, 133, 140, 147, 155, 161, 165, 172, + 183, 187, 191, 198, 210, 219, 216, 210, 201, 189, 176, 167, 158, 156, 151, 154, + 154, 137, 143, 152, 146, 167, 159, 166, 182, 194, 188, 180, 189, 213, 237, 237, + 232, 230, 202, 144, 78, 120, 112, 133, 135, 108, 96, 96, 135, 60, 153, 82, + 60, 66, 96, 87, 106, 91, 91, 85, 81, 81, 74, 67, 255, 255, 255, 255, + 255, 71, 85, 74, 61, 98, 73, 86, 69, 76, 59, 78, 95, 91, 112, 148, + 122, 137, 139, 106, 77, 140, 209, 213, 235, 230, 220, 201, 188, 180, 167, 145, + 133, 139, 153, 187, 183, 192, 157, 150, 123, 135, 163, 167, 174, 180, 185, 190, + 196, 195, 202, 190, 174, 158, 144, 137, 138, 139, 155, 167, 177, 170, 156, 148, + 154, 163, 161, 164, 171, 177, 184, 195, 209, 220, 210, 198, 187, 178, 173, 165, + 153, 145, 136, 156, 166, 132, 146, 179, 161, 173, 162, 156, 158, 165, 172, 174, + 185, 206, 233, 236, 239, 223, 203, 184, 90, 105, 130, 119, 138, 115, 79, 55, + 110, 121, 100, 102, 85, 81, 71, 84, 115, 124, 115, 92, 64, 45, 48, 63, + 255, 255, 255, 255, 255, 69, 71, 54, 91, 95, 115, 84, 89, 60, 70, 98, + 99, 107, 117, 131, 125, 156, 131, 89, 82, 162, 201, 220, 221, 230, 208, 195, + 181, 165, 141, 124, 131, 159, 106, 152, 156, 177, 148, 166, 165, 201, 203, 202, + 200, 197, 195, 197, 203, 205, 192, 186, 172, 153, 139, 140, 160, 178, 200, 209, + 217, 213, 197, 182, 172, 164, 161, 161, 166, 171, 178, 189, 201, 211, 209, 193, + 179, 175, 180, 179, 169, 159, 174, 184, 162, 146, 167, 177, 168, 183, 166, 172, + 166, 149, 146, 162, 183, 198, 220, 234, 239, 216, 212, 197, 120, 93, 117, 120, + 152, 120, 73, 109, 88, 98, 102, 125, 69, 90, 61, 94, 81, 86, 87, 91, + 82, 65, 64, 76, 133, 255, 255, 255, 255, 69, 82, 79, 86, 101, 78, 92, + 89, 77, 87, 101, 60, 95, 118, 122, 129, 152, 145, 84, 125, 169, 216, 223, + 221, 229, 214, 189, 150, 122, 130, 157, 170, 171, 190, 194, 151, 160, 143, 170, + 155, 168, 232, 227, 218, 207, 199, 200, 205, 209, 186, 179, 168, 149, 140, 153, + 190, 222, 220, 219, 220, 227, 234, 224, 199, 172, 160, 158, 163, 165, 170, 175, + 184, 194, 195, 198, 198, 191, 181, 179, 187, 199, 237, 212, 148, 159, 176, 137, + 141, 171, 134, 175, 190, 160, 138, 151, 173, 180, 213, 236, 238, 210, 219, 186, + 135, 76, 121, 122, 135, 145, 122, 60, 87, 92, 120, 114, 66, 69, 87, 80, + 92, 98, 90, 80, 81, 90, 81, 60, 63, 255, 255, 255, 195, 75, 73, 65, + 62, 65, 106, 86, 81, 96, 80, 67, 70, 89, 121, 119, 115, 146, 120, 97, + 97, 186, 209, 218, 223, 211, 205, 180, 141, 122, 144, 93, 182, 217, 233, 163, + 92, 89, 58, 84, 87, 149, 150, 237, 226, 221, 227, 189, 176, 164, 179, 143, + 122, 148, 197, 218, 223, 233, 233, 229, 227, 228, 231, 236, 237, 231, 183, 164, + 152, 194, 168, 173, 198, 190, 205, 200, 195, 196, 209, 226, 230, 227, 208, 169, + 158, 110, 100, 139, 156, 186, 231, 159, 145, 191, 161, 133, 139, 181, 197, 218, + 228, 222, 216, 197, 148, 98, 97, 140, 123, 143, 118, 87, 124, 93, 115, 101, + 71, 40, 98, 85, 122, 138, 169, 140, 111, 65, 64, 57, 76, 255, 255, 255, + 74, 74, 89, 85, 99, 101, 99, 91, 103, 109, 87, 78, 107, 82, 135, 120, + 139, 128, 111, 94, 104, 188, 208, 218, 220, 206, 197, 170, 114, 143, 99, 167, + 226, 224, 218, 127, 110, 81, 105, 205, 120, 142, 126, 229, 236, 217, 207, 184, + 185, 169, 136, 130, 137, 172, 218, 237, 242, 248, 236, 230, 227, 227, 233, 237, + 240, 235, 211, 176, 166, 175, 169, 164, 191, 193, 172, 187, 204, 208, 213, 221, + 229, 235, 190, 147, 103, 91, 85, 95, 130, 143, 224, 228, 202, 140, 173, 143, + 139, 149, 193, 210, 217, 213, 210, 195, 151, 103, 89, 133, 125, 146, 125, 88, + 112, 80, 107, 72, 49, 56, 67, 86, 114, 91, 71, 71, 61, 57, 55, 67, + 76, 255, 255, 255, 73, 73, 78, 51, 60, 93, 96, 121, 122, 95, 83, 87, + 101, 108, 123, 136, 142, 127, 101, 93, 118, 193, 213, 217, 218, 207, 194, 167, + 121, 113, 137, 202, 226, 225, 204, 114, 107, 64, 100, 217, 114, 110, 136, 196, + 198, 191, 186, 170, 169, 142, 113, 140, 171, 202, 233, 243, 243, 246, 238, 234, + 231, 232, 236, 241, 245, 239, 233, 191, 184, 157, 171, 162, 175, 182, 181, 182, + 185, 188, 199, 213, 216, 217, 153, 150, 121, 166, 159, 107, 129, 107, 210, 224, + 214, 203, 122, 131, 131, 144, 182, 198, 207, 208, 211, 204, 169, 130, 87, 126, + 126, 149, 136, 103, 114, 88, 95, 114, 69, 77, 74, 101, 103, 117, 105, 110, + 91, 92, 68, 77, 65, 255, 255, 255, 72, 72, 74, 67, 77, 113, 97, 106, + 101, 100, 92, 93, 95, 134, 115, 129, 131, 126, 94, 95, 138, 200, 217, 220, + 218, 204, 168, 131, 89, 105, 135, 179, 152, 183, 165, 137, 124, 134, 162, 221, + 207, 217, 202, 197, 185, 194, 186, 161, 155, 134, 119, 163, 199, 219, 239, 246, + 241, 240, 241, 236, 235, 236, 239, 243, 246, 242, 236, 210, 203, 161, 170, 176, + 161, 162, 191, 184, 177, 178, 188, 195, 192, 188, 119, 118, 83, 114, 102, 71, + 128, 136, 204, 230, 226, 193, 171, 97, 88, 147, 163, 188, 204, 209, 212, 208, + 184, 156, 100, 128, 131, 151, 150, 126, 127, 117, 67, 105, 53, 49, 54, 84, + 86, 120, 116, 157, 177, 162, 103, 74, 69, 255, 255, 255, 71, 71, 77, 84, + 84, 120, 120, 108, 85, 110, 106, 104, 122, 124, 126, 105, 134, 108, 93, 100, + 158, 204, 216, 216, 212, 196, 185, 89, 138, 117, 166, 146, 181, 168, 196, 212, + 198, 225, 220, 210, 222, 221, 226, 205, 189, 189, 166, 144, 146, 138, 139, 183, + 211, 220, 237, 249, 251, 248, 243, 240, 238, 239, 243, 245, 246, 242, 228, 228, + 217, 178, 166, 197, 170, 165, 161, 174, 189, 194, 188, 182, 182, 187, 211, 215, + 208, 210, 180, 143, 150, 136, 131, 160, 154, 132, 154, 126, 112, 135, 152, 180, + 203, 208, 204, 196, 178, 160, 107, 124, 131, 146, 155, 137, 122, 126, 101, 84, + 57, 60, 67, 108, 139, 121, 151, 122, 91, 58, 65, 68, 79, 255, 255, 255, + 72, 72, 78, 80, 72, 101, 132, 118, 88, 107, 85, 121, 117, 117, 110, 125, + 140, 97, 97, 104, 172, 201, 212, 208, 201, 182, 148, 117, 120, 147, 138, 181, + 173, 190, 192, 202, 211, 220, 223, 229, 218, 207, 202, 189, 169, 153, 144, 153, + 148, 122, 172, 204, 216, 216, 230, 245, 248, 249, 246, 241, 238, 239, 243, 245, + 245, 239, 228, 235, 221, 199, 171, 203, 193, 191, 163, 167, 176, 184, 189, 191, + 197, 207, 216, 211, 220, 220, 216, 220, 214, 200, 208, 203, 186, 194, 137, 154, + 135, 124, 145, 174, 200, 206, 202, 195, 184, 171, 112, 118, 130, 140, 155, 137, + 103, 115, 84, 79, 59, 48, 78, 92, 125, 121, 100, 107, 125, 94, 84, 57, + 72, 255, 255, 255, 73, 74, 81, 99, 117, 109, 103, 83, 91, 103, 74, 131, + 93, 125, 110, 152, 135, 96, 106, 112, 185, 199, 208, 203, 191, 169, 151, 155, + 153, 150, 188, 203, 202, 221, 216, 212, 219, 209, 218, 232, 216, 201, 186, 177, + 164, 150, 165, 181, 164, 139, 196, 217, 221, 215, 224, 233, 238, 241, 245, 242, + 239, 237, 238, 238, 238, 233, 232, 228, 224, 221, 192, 188, 211, 209, 196, 180, + 167, 169, 178, 188, 197, 205, 215, 209, 218, 225, 230, 239, 234, 219, 215, 222, + 218, 179, 205, 146, 140, 162, 147, 168, 189, 198, 200, 198, 188, 177, 123, 118, + 127, 130, 150, 136, 93, 116, 74, 98, 68, 45, 79, 69, 90, 127, 96, 99, + 103, 89, 78, 72, 76, 255, 255, 255, 74, 75, 75, 73, 98, 80, 79, 87, + 110, 80, 99, 132, 103, 121, 150, 143, 135, 92, 114, 120, 192, 200, 208, 203, + 189, 165, 164, 140, 151, 183, 182, 197, 216, 204, 206, 213, 205, 210, 204, 180, + 184, 173, 163, 168, 175, 176, 178, 174, 161, 171, 198, 216, 221, 216, 221, 228, + 231, 238, 242, 241, 237, 237, 235, 232, 230, 227, 234, 218, 228, 237, 211, 168, + 213, 210, 207, 202, 193, 184, 170, 162, 171, 186, 205, 209, 212, 225, 219, 208, + 221, 209, 215, 205, 206, 214, 184, 187, 172, 142, 158, 170, 183, 189, 192, 191, + 179, 165, 140, 126, 129, 125, 148, 142, 101, 134, 105, 87, 61, 59, 53, 61, + 94, 101, 133, 139, 125, 120, 92, 93, 79, 255, 255, 255, 194, 72, 74, 73, + 44, 105, 124, 119, 83, 135, 92, 130, 88, 138, 139, 177, 101, 127, 94, 157, + 202, 199, 191, 185, 173, 162, 144, 149, 160, 173, 186, 196, 209, 213, 208, 199, + 186, 172, 166, 167, 174, 180, 174, 186, 194, 197, 218, 155, 147, 204, 219, 204, + 214, 216, 178, 198, 208, 224, 245, 228, 245, 230, 232, 223, 217, 195, 219, 230, + 227, 228, 228, 199, 185, 204, 222, 231, 206, 193, 182, 172, 182, 165, 165, 177, + 194, 208, 214, 216, 218, 216, 216, 216, 212, 206, 198, 188, 181, 177, 154, 159, + 162, 167, 181, 193, 184, 165, 141, 130, 122, 132, 154, 158, 95, 137, 153, 101, + 68, 57, 48, 81, 77, 98, 107, 86, 97, 102, 92, 105, 62, 255, 255, 255, + 255, 72, 54, 94, 108, 107, 104, 97, 111, 152, 100, 127, 118, 135, 145, 147, + 114, 136, 100, 155, 192, 181, 170, 166, 160, 156, 158, 161, 171, 178, 185, 190, + 195, 196, 172, 170, 167, 164, 165, 170, 177, 183, 198, 199, 214, 211, 195, 168, + 185, 211, 210, 211, 204, 186, 133, 115, 142, 243, 230, 224, 236, 222, 228, 216, + 138, 142, 153, 205, 228, 226, 226, 213, 188, 175, 215, 234, 222, 214, 200, 184, + 190, 174, 167, 170, 177, 182, 190, 200, 211, 219, 217, 216, 214, 208, 201, 191, + 183, 176, 166, 162, 157, 157, 171, 185, 181, 165, 156, 152, 134, 119, 140, 164, + 110, 132, 149, 108, 82, 55, 51, 78, 84, 94, 132, 133, 104, 113, 97, 77, + 92, 255, 255, 255, 255, 72, 78, 58, 77, 87, 120, 89, 103, 108, 98, 94, + 143, 124, 188, 130, 154, 146, 124, 164, 186, 170, 161, 160, 162, 164, 168, 167, + 171, 172, 171, 166, 165, 165, 153, 158, 166, 174, 182, 189, 195, 199, 223, 216, + 230, 222, 174, 189, 224, 221, 220, 191, 135, 126, 123, 89, 80, 193, 221, 229, + 233, 221, 227, 200, 60, 78, 129, 146, 166, 203, 237, 229, 204, 195, 202, 226, + 233, 234, 220, 204, 205, 191, 186, 179, 175, 170, 170, 177, 185, 193, 201, 202, + 203, 200, 197, 191, 186, 180, 179, 171, 157, 150, 159, 174, 176, 168, 141, 141, + 136, 127, 144, 157, 100, 98, 152, 123, 97, 63, 52, 75, 85, 89, 92, 89, + 99, 90, 78, 56, 59, 255, 255, 255, 255, 70, 63, 79, 118, 95, 108, 105, + 121, 84, 123, 119, 103, 148, 140, 146, 129, 121, 145, 171, 180, 168, 165, 171, + 173, 175, 173, 167, 163, 156, 152, 148, 148, 148, 165, 173, 185, 196, 204, 211, + 215, 218, 231, 228, 228, 222, 174, 205, 234, 229, 214, 192, 137, 116, 108, 86, + 87, 198, 223, 234, 233, 224, 222, 171, 45, 47, 116, 112, 132, 190, 236, 236, + 227, 230, 190, 211, 229, 235, 231, 222, 220, 213, 202, 198, 190, 182, 173, 169, + 168, 167, 176, 178, 178, 182, 185, 188, 188, 190, 185, 178, 163, 150, 150, 160, + 168, 168, 173, 145, 131, 124, 132, 138, 117, 134, 131, 112, 82, 80, 60, 92, + 102, 120, 88, 111, 97, 111, 111, 55, 91, 255, 255, 255, 255, 70, 85, 43, + 65, 114, 116, 89, 90, 93, 155, 126, 119, 125, 151, 129, 156, 133, 150, 163, + 166, 162, 174, 183, 179, 175, 172, 164, 157, 149, 149, 153, 161, 169, 188, 195, + 204, 212, 217, 222, 225, 229, 229, 236, 219, 219, 201, 222, 228, 237, 195, 181, + 134, 92, 64, 86, 118, 196, 226, 232, 235, 229, 216, 148, 98, 68, 84, 122, + 168, 200, 218, 230, 236, 232, 195, 206, 225, 231, 233, 235, 229, 226, 211, 210, + 205, 201, 194, 185, 179, 173, 170, 170, 168, 170, 175, 181, 185, 189, 187, 186, + 178, 163, 153, 154, 163, 170, 151, 139, 153, 155, 150, 138, 119, 110, 132, 111, + 66, 101, 64, 90, 91, 123, 131, 88, 121, 81, 85, 83, 53, 255, 255, 255, + 255, 193, 60, 76, 102, 122, 86, 95, 117, 133, 117, 129, 118, 152, 146, 147, + 163, 151, 148, 158, 162, 168, 186, 190, 181, 176, 165, 160, 156, 153, 158, 173, + 187, 199, 208, 212, 219, 222, 227, 229, 232, 237, 228, 239, 219, 214, 224, 233, + 230, 244, 232, 203, 159, 128, 120, 171, 182, 196, 231, 233, 243, 237, 213, 163, + 172, 130, 110, 128, 170, 209, 219, 226, 235, 236, 207, 209, 227, 230, 233, 239, + 230, 234, 229, 225, 220, 214, 209, 204, 197, 192, 188, 184, 178, 175, 176, 179, + 182, 185, 189, 192, 190, 178, 163, 156, 161, 168, 161, 155, 159, 126, 110, 120, + 134, 108, 143, 113, 63, 104, 68, 78, 79, 106, 136, 117, 106, 98, 95, 76, + 76, 255, 255, 255, 255, 255, 83, 49, 48, 98, 102, 97, 101, 123, 93, 117, + 138, 131, 161, 115, 152, 122, 151, 162, 172, 182, 196, 196, 184, 179, 162, 161, + 164, 169, 178, 190, 204, 213, 222, 225, 230, 230, 232, 234, 236, 240, 231, 238, + 230, 212, 229, 234, 242, 242, 225, 214, 191, 176, 166, 195, 190, 207, 233, 241, + 251, 240, 209, 195, 204, 183, 174, 145, 166, 217, 233, 229, 236, 244, 210, 209, + 233, 233, 234, 239, 225, 235, 241, 236, 230, 224, 219, 216, 210, 203, 202, 199, + 194, 190, 188, 188, 187, 188, 197, 198, 197, 190, 178, 168, 166, 168, 159, 159, + 178, 154, 134, 131, 140, 87, 129, 96, 60, 87, 84, 80, 99, 107, 107, 93, + 110, 105, 88, 85, 56, 255, 255, 255, 255, 255, 69, 71, 82, 98, 103, 101, + 112, 126, 100, 139, 123, 143, 152, 154, 176, 163, 154, 168, 180, 190, 199, 192, + 183, 183, 174, 177, 185, 194, 201, 208, 216, 220, 230, 233, 236, 236, 234, 233, + 234, 235, 234, 235, 240, 208, 215, 226, 249, 233, 229, 219, 189, 185, 193, 205, + 190, 230, 227, 244, 248, 231, 200, 220, 201, 207, 197, 191, 210, 231, 228, 232, + 237, 225, 199, 204, 237, 237, 235, 239, 227, 242, 235, 233, 231, 230, 231, 228, + 222, 217, 208, 206, 206, 204, 203, 201, 200, 200, 205, 203, 200, 197, 189, 177, + 169, 166, 170, 145, 158, 147, 128, 113, 132, 91, 150, 112, 81, 77, 91, 68, + 94, 78, 90, 116, 97, 121, 88, 62, 71, 255, 255, 255, 255, 255, 195, 68, + 87, 146, 75, 154, 132, 112, 103, 134, 113, 159, 132, 176, 172, 178, 161, 180, + 200, 196, 190, 190, 188, 183, 189, 194, 202, 211, 220, 229, 235, 239, 238, 239, + 242, 243, 244, 245, 244, 242, 240, 241, 232, 210, 197, 204, 218, 224, 210, 196, + 188, 194, 202, 208, 214, 224, 237, 240, 239, 231, 224, 220, 216, 212, 212, 215, + 221, 224, 227, 223, 221, 217, 176, 205, 230, 237, 240, 245, 249, 244, 239, 237, + 237, 236, 236, 235, 235, 233, 226, 221, 216, 212, 212, 211, 208, 207, 211, 208, + 205, 206, 203, 191, 172, 158, 161, 167, 142, 156, 150, 127, 130, 89, 172, 96, + 92, 83, 88, 79, 87, 81, 94, 106, 100, 144, 87, 107, 74, 255, 255, 255, + 255, 255, 255, 57, 119, 63, 132, 120, 101, 104, 107, 119, 133, 158, 159, 179, + 196, 170, 167, 185, 197, 195, 188, 189, 188, 186, 198, 203, 212, 221, 229, 237, + 241, 244, 244, 244, 244, 244, 244, 244, 244, 240, 236, 240, 233, 211, 188, 178, + 179, 179, 175, 170, 175, 191, 205, 213, 224, 231, 239, 241, 239, 233, 231, 229, + 226, 220, 209, 206, 207, 210, 213, 210, 202, 194, 188, 212, 232, 236, 239, 246, + 249, 242, 242, 238, 239, 239, 240, 240, 240, 239, 233, 228, 225, 220, 220, 217, + 214, 212, 211, 209, 207, 208, 207, 197, 184, 170, 160, 174, 156, 160, 142, 118, + 126, 91, 160, 79, 107, 71, 81, 98, 81, 114, 102, 113, 95, 104, 49, 61, + 52, 255, 255, 255, 255, 255, 255, 188, 98, 111, 83, 119, 124, 119, 105, 106, + 142, 153, 182, 178, 202, 157, 177, 188, 196, 193, 188, 190, 192, 190, 205, 211, + 219, 229, 234, 240, 243, 243, 244, 243, 242, 241, 241, 241, 239, 238, 231, 235, + 228, 204, 178, 159, 152, 149, 156, 162, 178, 196, 211, 219, 231, 238, 240, 241, + 238, 234, 236, 235, 230, 220, 211, 202, 195, 192, 191, 184, 170, 159, 196, 213, + 226, 230, 233, 241, 243, 238, 240, 238, 240, 240, 241, 241, 241, 241, 239, 234, + 230, 225, 225, 222, 218, 216, 213, 210, 208, 209, 208, 201, 192, 181, 159, 176, + 165, 157, 131, 111, 123, 99, 117, 103, 96, 91, 102, 81, 90, 100, 102, 107, + 86, 89, 77, 83, 69, 255, 255, 255, 255, 255, 255, 255, 75, 94, 115, 104, + 153, 123, 98, 118, 129, 148, 182, 178, 177, 152, 188, 193, 193, 188, 185, 191, + 196, 200, 214, 218, 227, 234, 238, 240, 243, 242, 244, 241, 240, 239, 239, 238, + 239, 237, 232, 224, 211, 191, 170, 156, 153, 151, 154, 165, 184, 201, 212, 219, + 230, 236, 238, 240, 237, 234, 237, 238, 229, 217, 215, 205, 194, 183, 176, 170, + 159, 153, 189, 199, 212, 219, 229, 237, 241, 237, 238, 238, 240, 240, 242, 242, + 242, 242, 242, 239, 234, 232, 229, 225, 221, 219, 220, 216, 212, 209, 207, 201, + 193, 184, 161, 171, 160, 148, 127, 115, 123, 100, 87, 117, 84, 95, 108, 70, + 89, 86, 92, 98, 85, 82, 100, 93, 73, 255, 255, 255, 255, 255, 255, 255, + 70, 86, 135, 114, 161, 62, 101, 147, 110, 152, 168, 178, 140, 163, 197, 195, + 189, 184, 184, 193, 204, 210, 219, 222, 230, 235, 238, 240, 242, 241, 241, 239, + 239, 239, 237, 237, 238, 234, 228, 212, 194, 178, 167, 159, 155, 153, 155, 169, + 187, 199, 209, 218, 227, 235, 239, 239, 237, 235, 238, 238, 229, 217, 213, 207, + 199, 187, 179, 177, 177, 178, 178, 186, 199, 210, 223, 231, 237, 237, 237, 237, + 238, 238, 240, 240, 242, 242, 242, 240, 236, 234, 231, 227, 223, 220, 225, 220, + 214, 209, 205, 200, 193, 187, 165, 160, 149, 145, 135, 125, 117, 87, 89, 97, + 94, 66, 83, 95, 75, 110, 113, 123, 111, 82, 81, 67, 64, 255, 255, 255, + 255, 255, 255, 255, 255, 144, 98, 160, 136, 53, 115, 162, 107, 157, 155, 164, + 125, 181, 199, 194, 187, 184, 188, 199, 210, 218, 224, 227, 233, 236, 239, 239, + 240, 240, 238, 237, 237, 237, 237, 235, 232, 228, 217, 200, 183, 172, 165, 155, + 146, 144, 158, 174, 191, 201, 211, 224, 234, 241, 236, 240, 239, 236, 236, 238, + 232, 222, 218, 213, 207, 192, 180, 174, 179, 182, 175, 181, 193, 204, 213, 222, + 227, 229, 234, 236, 237, 237, 240, 240, 242, 242, 241, 240, 236, 235, 235, 231, + 226, 222, 223, 221, 215, 212, 208, 201, 198, 192, 173, 151, 144, 149, 146, 132, + 109, 79, 79, 103, 90, 71, 80, 100, 83, 104, 120, 127, 116, 92, 83, 76, + 135, 255, 255, 255, 255, 255, 255, 255, 255, 104, 138, 143, 93, 111, 128, 141, + 117, 154, 145, 129, 133, 188, 193, 187, 186, 189, 198, 206, 215, 220, 230, 232, + 234, 235, 238, 239, 242, 242, 236, 236, 237, 235, 232, 227, 223, 216, 199, 185, + 173, 165, 155, 146, 143, 149, 170, 187, 198, 205, 215, 227, 235, 237, 230, 234, + 235, 233, 233, 236, 234, 228, 228, 221, 213, 197, 183, 172, 169, 167, 174, 179, + 186, 195, 202, 207, 214, 224, 230, 233, 235, 236, 239, 239, 242, 242, 242, 239, + 236, 236, 237, 234, 229, 226, 225, 221, 217, 214, 210, 203, 201, 196, 185, 149, + 140, 144, 138, 124, 109, 101, 62, 108, 88, 86, 83, 96, 96, 96, 91, 95, + 93, 88, 74, 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 126, 103, + 104, 110, 134, 110, 126, 143, 136, 94, 146, 184, 188, 184, 186, 194, 205, 212, + 217, 221, 234, 235, 235, 235, 238, 239, 243, 242, 235, 234, 236, 233, 228, 222, + 213, 207, 185, 173, 163, 154, 145, 140, 148, 164, 179, 194, 203, 206, 212, 220, + 223, 221, 222, 228, 230, 229, 228, 233, 234, 233, 232, 225, 216, 206, 194, 185, + 173, 165, 173, 175, 180, 185, 190, 196, 208, 219, 227, 232, 234, 235, 236, 239, + 241, 241, 242, 241, 239, 238, 238, 235, 233, 228, 228, 227, 222, 216, 211, 205, + 200, 195, 196, 151, 135, 133, 123, 116, 118, 131, 63, 75, 104, 67, 58, 121, + 89, 128, 86, 101, 107, 97, 52, 62, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 102, 138, 121, 132, 148, 155, 104, 107, 131, 112, 108, 150, 185, 190, 179, + 199, 204, 204, 215, 218, 228, 234, 237, 238, 240, 242, 241, 240, 237, 233, 235, + 236, 228, 222, 217, 201, 184, 175, 167, 156, 150, 151, 158, 170, 182, 188, 193, + 194, 199, 203, 207, 207, 208, 209, 204, 206, 213, 213, 210, 218, 228, 228, 224, + 221, 218, 212, 199, 182, 168, 171, 175, 182, 186, 187, 191, 198, 206, 218, 228, + 237, 239, 235, 234, 241, 246, 241, 241, 239, 237, 236, 234, 234, 234, 235, 230, + 225, 220, 216, 209, 202, 196, 194, 155, 135, 125, 139, 120, 118, 111, 77, 52, + 107, 81, 63, 81, 137, 118, 85, 97, 88, 78, 85, 83, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 84, 113, 122, 138, 139, 176, 117, 108, 121, 103, 106, + 152, 186, 188, 179, 201, 207, 208, 219, 221, 229, 236, 238, 240, 240, 242, 241, + 240, 235, 232, 231, 231, 225, 216, 203, 190, 176, 164, 161, 159, 162, 167, 175, + 183, 191, 194, 201, 203, 205, 209, 213, 216, 219, 216, 217, 219, 220, 215, 211, + 215, 223, 224, 219, 215, 215, 213, 208, 197, 190, 180, 179, 176, 178, 183, 190, + 196, 202, 215, 220, 226, 229, 235, 237, 240, 243, 241, 241, 239, 239, 237, 236, + 236, 234, 235, 232, 227, 220, 217, 209, 202, 196, 187, 157, 135, 114, 128, 117, + 111, 90, 91, 61, 99, 66, 60, 78, 127, 117, 93, 83, 87, 86, 68, 66, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 110, 126, 92, 94, 166, 160, 102, + 90, 107, 97, 110, 156, 188, 184, 179, 203, 211, 213, 222, 225, 232, 237, 240, + 240, 242, 242, 241, 238, 235, 234, 227, 225, 220, 206, 187, 177, 171, 161, 165, + 170, 179, 187, 192, 195, 197, 207, 211, 212, 214, 215, 218, 221, 223, 216, 226, + 231, 227, 221, 220, 222, 222, 221, 216, 213, 212, 215, 217, 214, 212, 198, 189, + 178, 176, 181, 191, 197, 203, 212, 212, 214, 221, 234, 240, 241, 237, 241, 241, + 239, 239, 237, 236, 236, 236, 237, 233, 228, 223, 218, 212, 203, 196, 185, 163, + 141, 112, 125, 121, 111, 80, 85, 66, 93, 60, 70, 72, 97, 91, 124, 72, + 67, 81, 64, 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 112, 135, + 96, 154, 129, 80, 78, 99, 100, 118, 160, 181, 186, 178, 204, 213, 214, 226, + 230, 237, 239, 240, 242, 242, 242, 241, 238, 235, 233, 222, 215, 209, 196, 178, + 172, 177, 177, 181, 187, 195, 199, 202, 201, 203, 212, 213, 212, 214, 218, 218, + 215, 212, 206, 222, 231, 226, 222, 224, 226, 223, 227, 221, 217, 215, 217, 220, + 219, 219, 216, 207, 197, 189, 191, 196, 203, 209, 211, 209, 210, 219, 231, 239, + 240, 236, 241, 241, 239, 239, 239, 237, 237, 236, 237, 235, 230, 224, 219, 212, + 204, 197, 186, 162, 141, 116, 131, 124, 113, 83, 87, 80, 94, 59, 83, 72, + 81, 90, 134, 83, 64, 68, 65, 77, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 102, 126, 173, 89, 157, 119, 81, 84, 103, 101, 120, 157, 170, 189, 180, + 204, 212, 213, 226, 232, 241, 239, 242, 242, 242, 242, 241, 238, 235, 231, 218, + 208, 201, 191, 178, 180, 190, 197, 198, 199, 202, 205, 208, 211, 212, 212, 210, + 208, 213, 220, 220, 212, 203, 200, 215, 226, 222, 218, 220, 220, 216, 226, 225, + 223, 221, 221, 222, 221, 220, 226, 222, 217, 208, 204, 204, 210, 215, 213, 214, + 217, 223, 229, 234, 238, 239, 241, 241, 241, 239, 239, 237, 237, 237, 240, 236, + 231, 227, 220, 213, 205, 198, 187, 156, 136, 117, 131, 115, 102, 80, 106, 97, + 94, 51, 84, 76, 94, 125, 109, 101, 79, 61, 62, 69, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 97, 118, 194, 98, 117, 107, 79, 87, 101, 95, 118, + 159, 170, 192, 182, 202, 211, 212, 228, 234, 244, 241, 242, 242, 242, 242, 241, + 238, 235, 226, 216, 206, 198, 193, 191, 195, 203, 206, 206, 206, 207, 211, 216, + 221, 223, 221, 215, 214, 219, 227, 228, 220, 211, 210, 217, 225, 223, 220, 219, + 218, 215, 221, 222, 224, 225, 225, 225, 224, 223, 227, 228, 229, 225, 217, 214, + 217, 218, 217, 220, 225, 225, 229, 230, 237, 241, 241, 241, 241, 241, 239, 239, + 237, 237, 241, 236, 233, 227, 221, 214, 205, 199, 190, 158, 138, 120, 130, 109, + 97, 79, 97, 87, 83, 46, 85, 75, 92, 128, 100, 100, 71, 49, 64, 77, + 255, 255, 255, 255, 255, 255, 255, 255, 198, 137, 147, 144, 80, 121, 86, 70, + 87, 100, 89, 115, 159, 172, 191, 182, 204, 213, 216, 228, 232, 241, 241, 244, + 244, 244, 242, 241, 238, 235, 221, 216, 209, 201, 202, 207, 212, 212, 207, 209, + 212, 214, 219, 222, 226, 227, 225, 223, 221, 221, 219, 218, 216, 214, 206, 205, + 210, 217, 221, 220, 223, 223, 217, 219, 223, 225, 225, 226, 226, 225, 226, 228, + 231, 230, 229, 228, 226, 223, 221, 223, 227, 227, 230, 232, 239, 242, 241, 241, + 241, 241, 239, 239, 237, 237, 242, 237, 234, 228, 221, 215, 206, 199, 188, 167, + 149, 121, 126, 113, 105, 83, 96, 78, 77, 48, 89, 75, 82, 109, 121, 88, + 59, 53, 67, 82, 255, 255, 255, 255, 255, 255, 255, 255, 91, 133, 135, 138, + 111, 104, 74, 68, 94, 108, 93, 115, 155, 165, 189, 182, 205, 216, 218, 228, + 229, 237, 241, 242, 244, 242, 242, 239, 238, 235, 219, 219, 216, 208, 212, 221, + 223, 216, 207, 211, 214, 218, 221, 222, 222, 221, 218, 217, 213, 206, 196, 192, + 195, 200, 184, 178, 184, 199, 210, 215, 219, 227, 218, 218, 222, 222, 223, 222, + 224, 224, 228, 227, 227, 232, 238, 239, 236, 230, 228, 225, 227, 228, 232, 236, + 240, 241, 241, 241, 241, 241, 239, 239, 237, 239, 242, 239, 234, 228, 222, 215, + 206, 200, 176, 168, 154, 115, 121, 119, 114, 85, 128, 95, 83, 48, 90, 78, + 88, 115, 132, 82, 71, 74, 58, 67, 255, 255, 255, 255, 255, 255, 255, 255, + 100, 134, 132, 138, 114, 102, 48, 60, 99, 94, 91, 107, 155, 167, 182, 191, + 202, 211, 216, 225, 233, 238, 240, 239, 241, 240, 241, 237, 233, 229, 225, 226, + 222, 215, 220, 230, 226, 215, 212, 215, 214, 208, 207, 213, 217, 215, 189, 177, + 167, 165, 163, 157, 154, 156, 171, 161, 154, 155, 165, 175, 177, 177, 194, 202, + 211, 214, 214, 216, 222, 228, 227, 226, 229, 232, 236, 242, 243, 240, 239, 238, + 236, 233, 231, 233, 237, 240, 239, 239, 239, 239, 239, 239, 239, 239, 240, 242, + 240, 229, 219, 212, 204, 195, 178, 165, 136, 122, 115, 116, 114, 78, 110, 105, + 58, 69, 87, 85, 82, 113, 110, 133, 67, 97, 76, 81, 255, 255, 255, 255, + 255, 255, 255, 197, 125, 130, 129, 101, 105, 87, 48, 55, 94, 95, 99, 112, + 158, 165, 182, 191, 202, 211, 216, 222, 232, 237, 238, 239, 239, 240, 238, 237, + 231, 228, 223, 224, 228, 232, 232, 225, 218, 214, 206, 206, 205, 208, 214, 212, + 192, 172, 146, 150, 165, 187, 203, 207, 209, 212, 213, 204, 194, 191, 197, 198, + 194, 188, 156, 145, 143, 164, 199, 221, 224, 216, 214, 218, 224, 232, 238, 239, + 239, 236, 239, 239, 237, 235, 233, 234, 238, 241, 239, 239, 239, 239, 239, 239, + 239, 241, 240, 244, 239, 229, 219, 211, 202, 192, 174, 162, 132, 119, 114, 114, + 112, 76, 91, 106, 59, 36, 54, 80, 98, 115, 128, 112, 48, 66, 75, 75, + 145, 255, 255, 255, 255, 255, 255, 65, 153, 182, 140, 76, 116, 50, 59, 53, + 83, 88, 96, 106, 151, 160, 181, 190, 201, 210, 216, 222, 232, 236, 237, 237, + 237, 238, 238, 236, 231, 228, 224, 222, 229, 242, 239, 224, 218, 223, 212, 211, + 209, 208, 206, 191, 164, 141, 147, 159, 181, 203, 218, 220, 220, 222, 229, 223, + 217, 218, 223, 223, 216, 209, 215, 195, 168, 153, 157, 174, 194, 207, 212, 212, + 211, 215, 221, 227, 233, 235, 235, 237, 237, 236, 235, 235, 238, 241, 239, 239, + 239, 239, 239, 239, 239, 241, 240, 241, 239, 228, 220, 211, 200, 190, 172, 160, + 132, 121, 115, 114, 112, 77, 73, 96, 66, 36, 47, 61, 81, 86, 143, 116, + 81, 52, 75, 74, 88, 255, 255, 255, 255, 255, 255, 97, 138, 157, 147, 73, + 88, 91, 93, 73, 90, 94, 102, 110, 156, 174, 179, 189, 201, 210, 215, 221, + 229, 235, 237, 237, 237, 238, 238, 235, 231, 227, 228, 226, 230, 235, 236, 228, + 226, 231, 219, 216, 206, 191, 169, 154, 144, 139, 140, 147, 157, 162, 161, 158, + 159, 161, 156, 152, 153, 157, 163, 166, 162, 155, 145, 153, 158, 150, 139, 140, + 159, 178, 192, 191, 193, 199, 211, 222, 230, 236, 235, 238, 239, 237, 235, 235, + 236, 238, 239, 239, 239, 239, 239, 239, 239, 239, 239, 241, 238, 228, 219, 211, + 199, 186, 171, 160, 133, 125, 119, 115, 113, 81, 85, 85, 64, 55, 60, 43, + 60, 77, 113, 119, 134, 56, 69, 70, 84, 255, 255, 255, 255, 255, 208, 71, + 140, 169, 110, 85, 91, 79, 105, 74, 87, 95, 102, 103, 148, 171, 178, 188, + 200, 210, 215, 221, 227, 233, 237, 236, 236, 237, 236, 234, 230, 225, 225, 229, + 230, 229, 232, 234, 226, 214, 201, 191, 174, 156, 140, 135, 142, 153, 167, 172, + 176, 175, 173, 175, 182, 185, 188, 183, 182, 184, 189, 192, 191, 186, 179, 174, + 170, 165, 159, 151, 143, 139, 147, 153, 165, 181, 199, 212, 220, 226, 235, 239, + 240, 239, 236, 234, 234, 235, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 235, 227, 219, 211, 197, 181, 169, 157, 135, 128, 121, 114, 112, 80, 117, 97, + 60, 55, 53, 44, 71, 99, 79, 99, 139, 63, 68, 63, 72, 77, 255, 255, + 255, 255, 57, 91, 145, 149, 133, 115, 65, 74, 113, 72, 80, 98, 107, 102, + 140, 160, 177, 185, 198, 208, 214, 220, 226, 232, 236, 236, 236, 237, 236, 234, + 228, 225, 222, 231, 234, 229, 230, 228, 211, 187, 171, 156, 140, 137, 143, 148, + 155, 162, 169, 177, 181, 184, 187, 192, 194, 196, 184, 180, 178, 179, 184, 189, + 190, 186, 192, 176, 162, 158, 160, 164, 163, 158, 144, 140, 140, 147, 162, 180, + 193, 207, 231, 238, 240, 240, 238, 235, 234, 234, 239, 239, 239, 239, 239, 239, + 239, 239, 240, 239, 234, 225, 219, 209, 193, 178, 165, 153, 132, 127, 118, 109, + 105, 76, 129, 128, 81, 66, 39, 62, 82, 89, 103, 95, 113, 85, 84, 68, + 60, 84, 255, 255, 255, 194, 71, 86, 133, 133, 130, 129, 133, 118, 159, 97, + 89, 107, 124, 115, 149, 167, 176, 184, 197, 208, 214, 220, 226, 229, 235, 234, + 235, 235, 236, 234, 228, 224, 224, 229, 234, 234, 230, 216, 198, 182, 174, 163, + 156, 158, 165, 168, 171, 177, 182, 189, 193, 195, 199, 204, 202, 197, 199, 197, + 198, 200, 205, 210, 211, 209, 196, 197, 200, 199, 192, 181, 168, 159, 166, 158, + 147, 145, 151, 166, 181, 196, 225, 233, 237, 238, 237, 236, 235, 235, 237, 237, + 237, 237, 237, 237, 237, 237, 238, 236, 233, 224, 219, 208, 192, 175, 163, 151, + 131, 127, 118, 106, 103, 73, 129, 159, 118, 105, 51, 89, 88, 77, 125, 107, + 92, 104, 93, 78, 53, 80, 255, 255, 255, 61, 75, 97, 113, 130, 190, 156, + 173, 165, 190, 107, 81, 92, 113, 107, 141, 159, 174, 184, 197, 208, 214, 218, + 223, 228, 235, 234, 234, 235, 236, 232, 228, 224, 233, 229, 232, 237, 226, 206, + 196, 197, 199, 197, 199, 195, 185, 174, 179, 192, 198, 204, 207, 209, 217, 226, + 228, 222, 222, 222, 221, 222, 226, 224, 225, 221, 221, 211, 204, 197, 196, 191, + 183, 176, 170, 172, 177, 185, 193, 194, 193, 196, 221, 230, 235, 238, 238, 238, + 238, 238, 237, 237, 237, 237, 237, 237, 237, 237, 238, 236, 232, 222, 217, 208, + 191, 174, 165, 153, 133, 132, 120, 106, 103, 76, 139, 176, 140, 139, 73, 113, + 111, 106, 103, 105, 75, 104, 82, 84, 50, 67, 133, 255, 255, 69, 95, 111, + 138, 154, 160, 186, 188, 175, 204, 127, 81, 91, 108, 108, 138, 158, 171, 182, + 193, 207, 219, 215, 215, 229, 234, 233, 232, 233, 232, 231, 229, 225, 227, 232, + 237, 232, 216, 197, 194, 199, 206, 207, 210, 209, 205, 200, 200, 200, 212, 215, + 220, 224, 229, 233, 238, 240, 234, 236, 236, 236, 238, 236, 238, 236, 227, 224, + 222, 217, 212, 208, 206, 203, 204, 204, 208, 209, 209, 209, 208, 209, 222, 230, + 237, 239, 236, 234, 235, 237, 235, 235, 235, 235, 235, 235, 235, 235, 236, 234, + 229, 222, 219, 212, 197, 182, 166, 164, 138, 126, 127, 114, 98, 79, 153, 181, + 170, 173, 141, 108, 148, 160, 185, 148, 159, 149, 106, 66, 77, 53, 80, 255, + 255, 68, 88, 178, 182, 132, 169, 188, 195, 209, 207, 137, 77, 94, 106, 111, + 133, 158, 170, 181, 191, 204, 216, 214, 215, 226, 231, 231, 230, 228, 230, 231, + 228, 226, 230, 233, 237, 230, 216, 204, 205, 210, 220, 220, 224, 222, 219, 216, + 215, 216, 220, 223, 225, 227, 232, 235, 236, 237, 237, 237, 239, 239, 239, 239, + 239, 239, 239, 238, 238, 236, 233, 233, 231, 229, 223, 223, 226, 226, 224, 222, + 220, 220, 223, 231, 237, 238, 236, 234, 235, 237, 235, 235, 235, 235, 235, 235, + 235, 235, 236, 235, 230, 221, 214, 209, 197, 184, 163, 159, 137, 124, 126, 114, + 101, 92, 178, 202, 193, 200, 183, 153, 182, 183, 207, 203, 177, 163, 177, 106, + 67, 71, 73, 255, 255, 68, 106, 231, 217, 191, 138, 191, 193, 217, 215, 154, + 70, 98, 103, 114, 126, 161, 168, 182, 191, 202, 214, 214, 215, 226, 229, 227, + 225, 225, 228, 228, 229, 229, 235, 235, 236, 230, 220, 213, 217, 223, 228, 228, + 232, 230, 228, 226, 225, 227, 231, 234, 234, 234, 235, 235, 237, 237, 241, 241, + 241, 241, 242, 242, 242, 242, 245, 245, 246, 245, 245, 246, 245, 244, 234, 233, + 235, 234, 232, 229, 225, 223, 227, 231, 237, 238, 236, 234, 235, 237, 235, 235, + 235, 235, 235, 234, 234, 234, 234, 234, 229, 220, 211, 205, 196, 186, 160, 154, + 137, 122, 121, 111, 103, 109, 196, 215, 209, 225, 220, 198, 212, 201, 197, 215, + 182, 170, 212, 157, 95, 69, 66, 255, 255, 68, 111, 227, 248, 216, 181, 157, + 189, 206, 224, 177, 66, 97, 97, 118, 123, 166, 167, 180, 191, 200, 212, 214, + 214, 225, 227, 224, 222, 223, 224, 228, 230, 231, 237, 236, 235, 233, 226, 221, + 224, 231, 231, 233, 235, 235, 234, 233, 233, 235, 238, 239, 239, 238, 238, 237, + 239, 239, 243, 243, 243, 243, 244, 244, 244, 244, 247, 247, 247, 244, 244, 243, + 241, 239, 237, 236, 235, 235, 233, 231, 229, 225, 229, 232, 236, 237, 236, 235, + 236, 237, 235, 235, 235, 234, 234, 234, 234, 233, 233, 234, 230, 219, 208, 202, + 195, 187, 160, 150, 138, 121, 116, 111, 106, 126, 202, 218, 219, 235, 237, 223, + 226, 212, 204, 209, 209, 201, 211, 210, 182, 66, 68, 137, 255, 70, 72, 253, + 214, 239, 202, 184, 155, 221, 228, 199, 67, 93, 93, 121, 122, 168, 166, 180, + 190, 198, 210, 213, 214, 224, 225, 223, 221, 222, 224, 228, 228, 231, 236, 236, + 236, 237, 233, 227, 226, 230, 236, 238, 240, 240, 241, 240, 241, 242, 239, 239, + 241, 241, 240, 240, 242, 242, 243, 243, 245, 245, 245, 245, 245, 245, 249, 249, + 248, 246, 245, 242, 242, 239, 239, 238, 237, 238, 237, 235, 234, 233, 229, 231, + 234, 235, 234, 234, 234, 234, 233, 233, 233, 232, 232, 231, 231, 230, 233, 234, + 230, 218, 205, 199, 194, 186, 164, 147, 142, 121, 113, 109, 105, 139, 210, 224, + 231, 241, 241, 233, 235, 224, 224, 213, 225, 223, 209, 228, 229, 71, 69, 79, + 255, 71, 73, 239, 239, 218, 220, 172, 198, 205, 221, 215, 77, 87, 95, 121, + 125, 166, 164, 181, 189, 193, 206, 211, 214, 221, 222, 223, 222, 224, 225, 229, + 228, 231, 236, 235, 238, 241, 239, 233, 230, 231, 239, 241, 244, 243, 242, 242, + 245, 244, 239, 239, 241, 241, 242, 242, 244, 244, 244, 244, 246, 246, 246, 246, + 246, 246, 244, 244, 244, 244, 243, 243, 243, 241, 237, 236, 237, 236, 238, 236, + 236, 236, 232, 232, 233, 234, 235, 235, 234, 234, 233, 233, 232, 232, 231, 230, + 230, 230, 233, 233, 228, 218, 206, 200, 192, 182, 168, 144, 143, 121, 114, 111, + 107, 151, 213, 228, 239, 241, 240, 238, 237, 232, 225, 214, 210, 222, 222, 221, + 222, 96, 73, 80, 255, 73, 81, 243, 240, 246, 193, 182, 227, 204, 206, 225, + 87, 82, 99, 120, 123, 157, 164, 181, 189, 192, 204, 211, 215, 220, 222, 221, + 221, 224, 227, 230, 228, 229, 237, 236, 238, 243, 244, 240, 237, 237, 240, 241, + 244, 242, 241, 240, 244, 243, 241, 239, 239, 239, 241, 241, 241, 242, 244, 244, + 244, 244, 246, 246, 246, 244, 239, 237, 238, 238, 238, 237, 237, 237, 235, 234, + 235, 233, 235, 232, 232, 232, 233, 233, 233, 234, 235, 235, 235, 234, 233, 233, + 232, 232, 231, 230, 229, 229, 231, 229, 224, 215, 208, 202, 191, 178, 170, 141, + 143, 121, 116, 115, 109, 159, 215, 229, 243, 240, 240, 242, 238, 235, 228, 223, + 210, 227, 238, 230, 231, 116, 76, 81, 255, 74, 70, 250, 247, 227, 229, 175, + 227, 230, 195, 228, 94, 79, 103, 119, 123, 149, 163, 181, 189, 191, 205, 213, + 215, 219, 222, 222, 223, 225, 229, 230, 230, 228, 238, 236, 235, 240, 243, 241, + 239, 242, 243, 243, 243, 244, 242, 241, 245, 245, 242, 240, 239, 239, 241, 240, + 240, 240, 242, 242, 244, 244, 244, 244, 244, 242, 240, 238, 237, 237, 236, 236, + 236, 234, 240, 238, 238, 237, 237, 236, 236, 235, 236, 235, 235, 235, 237, 235, + 235, 234, 233, 233, 232, 231, 230, 232, 231, 230, 232, 229, 222, 215, 210, 204, + 189, 175, 170, 138, 142, 121, 118, 120, 111, 166, 220, 229, 244, 241, 242, 249, + 243, 239, 231, 222, 218, 230, 221, 229, 239, 91, 81, 82, 255, 76, 55, 246, + 242, 228, 213, 182, 219, 224, 199, 185, 113, 80, 97, 105, 130, 150, 165, 182, + 189, 192, 207, 214, 213, 220, 223, 224, 226, 229, 232, 232, 231, 230, 234, 235, + 236, 237, 237, 237, 236, 238, 239, 239, 239, 241, 241, 241, 243, 241, 239, 239, + 239, 239, 239, 239, 239, 239, 240, 240, 241, 240, 240, 241, 242, 240, 239, 239, + 239, 239, 239, 239, 239, 237, 239, 237, 237, 237, 237, 237, 237, 239, 241, 241, + 238, 237, 235, 234, 235, 235, 235, 231, 228, 229, 231, 230, 231, 235, 235, 233, + 226, 218, 206, 196, 189, 184, 165, 151, 148, 106, 117, 118, 129, 175, 218, 239, + 238, 237, 245, 241, 236, 249, 234, 228, 212, 226, 235, 228, 223, 87, 77, 81, + 255, 75, 70, 243, 249, 238, 217, 168, 203, 200, 207, 173, 107, 83, 91, 120, + 134, 160, 167, 183, 189, 193, 207, 213, 213, 220, 223, 223, 225, 228, 230, 231, + 228, 227, 231, 234, 235, 236, 236, 236, 236, 236, 237, 237, 239, 239, 241, 241, + 241, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238, 238, 238, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 241, 243, 243, 240, 238, 238, 236, 235, 236, 235, 231, 229, 230, 232, 230, + 234, 236, 235, 232, 226, 216, 207, 195, 188, 184, 167, 150, 147, 112, 126, 122, + 134, 177, 208, 221, 228, 230, 238, 237, 240, 249, 233, 224, 220, 233, 230, 226, + 226, 89, 75, 80, 255, 75, 76, 231, 244, 240, 209, 166, 205, 203, 225, 160, + 113, 86, 82, 124, 128, 153, 169, 185, 189, 193, 205, 212, 212, 219, 222, 223, + 225, 227, 226, 226, 225, 225, 231, 231, 234, 235, 236, 236, 236, 236, 238, 238, + 240, 240, 240, 240, 240, 240, 240, 238, 238, 238, 238, 238, 238, 238, 238, 237, + 237, 236, 236, 237, 237, 238, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 241, 243, 243, 241, 239, 239, 237, 236, 234, 235, 231, + 229, 231, 233, 230, 233, 236, 236, 232, 225, 215, 207, 196, 188, 184, 164, 143, + 138, 114, 125, 118, 136, 177, 205, 209, 221, 229, 232, 237, 245, 242, 231, 215, + 224, 239, 225, 226, 231, 93, 75, 80, 255, 74, 77, 234, 238, 238, 182, 180, + 217, 225, 229, 142, 131, 86, 78, 115, 122, 147, 170, 184, 190, 190, 205, 211, + 212, 219, 223, 225, 227, 228, 225, 224, 224, 224, 230, 230, 234, 235, 235, 236, + 236, 236, 238, 238, 240, 240, 240, 240, 240, 240, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 237, 236, 236, 236, 236, 237, 238, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 243, 243, 241, 240, 240, 237, + 236, 234, 234, 231, 230, 232, 234, 231, 233, 237, 236, 231, 224, 215, 208, 197, + 189, 184, 162, 139, 134, 115, 120, 111, 147, 187, 214, 210, 225, 237, 232, 237, + 247, 234, 232, 205, 225, 243, 225, 232, 233, 89, 76, 81, 255, 74, 78, 252, + 243, 243, 162, 199, 220, 230, 217, 134, 158, 93, 84, 106, 129, 154, 170, 183, + 190, 191, 205, 211, 211, 218, 223, 226, 229, 229, 225, 223, 221, 224, 229, 229, + 231, 232, 235, 235, 235, 235, 238, 238, 238, 238, 240, 240, 240, 240, 237, 236, + 236, 236, 236, 236, 236, 236, 233, 233, 232, 231, 231, 232, 233, 234, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 243, 243, + 242, 240, 240, 236, 235, 232, 231, 227, 229, 232, 234, 231, 233, 236, 236, 229, + 222, 214, 208, 198, 190, 183, 165, 144, 137, 121, 119, 112, 166, 206, 221, 215, + 231, 241, 235, 239, 246, 234, 233, 200, 224, 240, 226, 237, 228, 81, 78, 255, + 255, 73, 67, 255, 246, 244, 173, 222, 222, 228, 221, 159, 186, 111, 87, 101, + 127, 153, 167, 182, 189, 192, 205, 211, 211, 215, 219, 225, 229, 227, 224, 222, + 221, 223, 226, 229, 230, 232, 235, 235, 236, 235, 237, 237, 237, 237, 239, 239, + 239, 237, 234, 234, 234, 234, 234, 234, 234, 234, 230, 229, 228, 228, 228, 228, + 229, 230, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 241, 242, 242, 240, 237, 234, 230, 228, 228, 226, 228, 231, 234, 231, + 232, 234, 234, 228, 221, 214, 207, 199, 190, 183, 163, 147, 136, 118, 115, 118, + 186, 216, 215, 218, 231, 239, 238, 240, 243, 239, 228, 199, 224, 237, 231, 239, + 215, 73, 77, 255, 255, 73, 63, 239, 239, 231, 203, 232, 226, 229, 230, 200, + 199, 135, 81, 105, 118, 148, 164, 180, 189, 194, 207, 212, 211, 215, 216, 221, + 226, 226, 222, 219, 220, 223, 225, 226, 230, 231, 233, 233, 236, 236, 235, 235, + 236, 236, 236, 236, 236, 236, 233, 233, 233, 233, 233, 233, 233, 233, 232, 231, + 231, 230, 230, 231, 231, 232, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 242, 242, 242, 240, 236, 232, 226, 222, 226, 224, + 225, 228, 231, 228, 230, 233, 234, 228, 219, 213, 208, 200, 192, 185, 162, 145, + 131, 116, 117, 130, 201, 215, 210, 225, 232, 236, 240, 237, 235, 242, 221, 202, + 231, 235, 233, 236, 200, 67, 75, 255, 255, 73, 75, 231, 237, 215, 223, 228, + 224, 227, 227, 220, 194, 147, 73, 115, 116, 153, 162, 177, 187, 194, 207, 213, + 211, 214, 214, 219, 224, 224, 219, 217, 219, 223, 225, 226, 229, 231, 232, 233, + 236, 236, 234, 234, 235, 235, 235, 235, 235, 235, 232, 232, 232, 232, 232, 232, + 232, 232, 237, 237, 236, 235, 235, 236, 237, 237, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 242, 242, 241, 238, 234, 228, + 222, 220, 225, 223, 224, 228, 230, 227, 229, 232, 234, 227, 219, 213, 208, 201, + 192, 185, 165, 150, 131, 118, 126, 147, 216, 215, 210, 232, 236, 235, 243, 236, + 230, 244, 215, 206, 235, 236, 235, 232, 189, 67, 134, 255, 255, 73, 85, 220, + 216, 187, 223, 232, 231, 228, 235, 225, 200, 179, 74, 102, 106, 154, 163, 173, + 188, 197, 203, 211, 213, 210, 217, 217, 220, 224, 222, 217, 216, 220, 220, 222, + 226, 229, 232, 232, 234, 233, 233, 233, 233, 232, 233, 232, 232, 232, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 238, 238, + 238, 239, 239, 240, 240, 240, 239, 239, 238, 237, 236, 236, 236, 236, 238, 240, + 237, 233, 233, 233, 229, 224, 220, 222, 226, 228, 231, 231, 233, 232, 234, 230, + 221, 212, 206, 201, 190, 179, 170, 147, 135, 102, 138, 174, 211, 229, 232, 235, + 237, 239, 240, 240, 239, 239, 222, 218, 229, 239, 243, 234, 109, 59, 255, 255, + 255, 194, 74, 204, 216, 168, 226, 232, 228, 233, 236, 241, 161, 210, 71, 85, + 121, 137, 161, 172, 185, 193, 199, 206, 210, 211, 215, 215, 218, 222, 220, 214, + 213, 216, 218, 222, 225, 229, 231, 231, 233, 233, 231, 232, 232, 233, 234, 233, + 233, 232, 237, 236, 237, 236, 237, 236, 237, 236, 237, 236, 237, 236, 237, 236, + 237, 237, 238, 238, 238, 239, 239, 240, 240, 240, 238, 238, 237, 236, 236, 236, + 237, 237, 239, 239, 236, 233, 234, 233, 228, 221, 219, 221, 226, 229, 232, 232, + 233, 230, 232, 228, 218, 209, 203, 198, 188, 177, 165, 137, 138, 119, 122, 188, + 220, 229, 236, 237, 238, 239, 240, 240, 239, 239, 217, 220, 238, 246, 241, 237, + 94, 58, 255, 255, 255, 255, 61, 172, 222, 156, 229, 233, 228, 234, 235, 194, + 208, 197, 123, 70, 122, 131, 161, 171, 183, 189, 194, 203, 209, 212, 213, 213, + 216, 219, 216, 210, 209, 212, 217, 219, 222, 225, 229, 229, 229, 229, 226, 227, + 232, 234, 235, 234, 233, 233, 237, 237, 239, 237, 239, 237, 239, 237, 239, 237, + 239, 237, 239, 237, 239, 239, 238, 238, 239, 239, 239, 239, 240, 240, 237, 237, + 236, 236, 236, 237, 238, 238, 238, 240, 238, 235, 235, 233, 227, 219, 216, 218, + 224, 228, 232, 231, 231, 230, 233, 225, 217, 207, 201, 197, 188, 179, 163, 130, + 139, 124, 109, 205, 229, 231, 239, 241, 239, 239, 237, 237, 237, 237, 214, 226, + 242, 244, 235, 214, 77, 255, 255, 255, 255, 255, 54, 131, 234, 172, 229, 234, + 234, 224, 204, 161, 248, 190, 192, 67, 111, 129, 156, 166, 180, 187, 192, 201, + 208, 211, 213, 212, 215, 218, 215, 209, 205, 208, 216, 218, 220, 222, 226, 227, + 227, 227, 223, 225, 231, 235, 236, 236, 234, 234, 239, 239, 241, 239, 241, 239, + 241, 239, 241, 239, 241, 239, 241, 239, 241, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 236, 236, 236, 236, 237, 238, 239, 239, 238, 241, 239, 235, 233, 231, + 224, 217, 214, 218, 224, 229, 233, 232, 231, 229, 232, 227, 218, 208, 202, 198, + 191, 180, 162, 129, 132, 109, 120, 214, 226, 235, 242, 242, 239, 239, 237, 237, + 237, 237, 222, 231, 239, 239, 234, 160, 71, 255, 255, 255, 255, 255, 57, 89, + 226, 201, 221, 227, 236, 211, 174, 204, 204, 228, 224, 108, 97, 123, 147, 160, + 178, 187, 192, 200, 206, 207, 211, 211, 214, 217, 215, 209, 206, 209, 216, 216, + 218, 220, 221, 222, 225, 225, 221, 224, 228, 232, 236, 236, 235, 235, 241, 241, + 243, 241, 243, 241, 243, 241, 243, 241, 243, 241, 243, 241, 243, 241, 239, 239, + 239, 239, 239, 239, 239, 239, 236, 236, 236, 236, 237, 238, 239, 239, 238, 240, + 237, 234, 231, 230, 224, 217, 215, 218, 225, 229, 233, 232, 231, 228, 230, 224, + 216, 206, 201, 196, 189, 177, 158, 135, 130, 103, 169, 225, 218, 228, 241, 241, + 239, 239, 237, 237, 235, 235, 226, 234, 236, 236, 232, 103, 76, 255, 255, 255, + 255, 255, 255, 61, 182, 209, 205, 214, 221, 202, 203, 224, 200, 235, 237, 189, + 75, 126, 137, 153, 173, 183, 189, 195, 203, 205, 210, 210, 213, 217, 215, 210, + 207, 210, 215, 215, 216, 217, 219, 220, 223, 223, 222, 224, 228, 231, 235, 236, + 236, 236, 241, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, + 243, 243, 242, 240, 239, 239, 239, 239, 238, 238, 237, 237, 236, 236, 236, 237, + 238, 238, 237, 236, 235, 228, 228, 228, 224, 218, 217, 220, 225, 228, 232, 230, + 230, 228, 223, 219, 212, 203, 197, 194, 184, 171, 150, 137, 126, 129, 222, 236, + 215, 220, 238, 239, 238, 240, 238, 237, 234, 233, 222, 230, 239, 231, 205, 74, + 255, 255, 255, 255, 255, 255, 255, 51, 113, 183, 183, 197, 189, 204, 226, 205, + 233, 223, 240, 234, 64, 124, 128, 145, 165, 175, 181, 189, 200, 204, 207, 207, + 211, 215, 213, 208, 208, 211, 214, 214, 215, 215, 217, 218, 221, 222, 222, 223, + 228, 230, 232, 233, 236, 237, 243, 245, 245, 245, 245, 245, 245, 245, 245, 245, + 245, 245, 245, 245, 245, 243, 242, 240, 240, 239, 239, 238, 238, 238, 238, 238, + 237, 236, 236, 236, 237, 237, 236, 235, 232, 225, 225, 227, 224, 219, 220, 222, + 224, 227, 230, 229, 227, 226, 219, 216, 211, 203, 199, 193, 180, 167, 150, 132, + 114, 167, 239, 236, 225, 221, 235, 236, 237, 240, 239, 237, 234, 232, 217, 219, + 240, 207, 140, 68, 255, 255, 255, 255, 255, 255, 255, 255, 62, 157, 172, 188, + 162, 209, 198, 206, 215, 238, 221, 217, 78, 106, 126, 141, 159, 166, 172, 183, + 195, 203, 201, 203, 207, 212, 212, 210, 210, 213, 213, 213, 213, 214, 216, 217, + 220, 221, 224, 226, 227, 231, 233, 234, 237, 240, 243, 243, 245, 243, 245, 243, + 245, 243, 245, 243, 245, 243, 245, 243, 245, 243, 242, 240, 240, 239, 239, 238, + 238, 238, 239, 239, 238, 237, 236, 236, 236, 234, 233, 233, 229, 222, 221, 226, + 224, 220, 222, 223, 225, 226, 227, 226, 224, 224, 215, 213, 208, 203, 199, 194, + 181, 166, 155, 128, 99, 193, 230, 232, 236, 227, 230, 232, 234, 237, 236, 234, + 229, 229, 215, 209, 238, 183, 84, 136, 255, 255, 255, 255, 255, 255, 255, 255, + 81, 85, 151, 191, 164, 190, 165, 219, 215, 219, 228, 218, 52, 103, 112, 148, + 159, 167, 174, 177, 192, 191, 190, 195, 202, 208, 213, 211, 210, 205, 214, 211, + 210, 210, 210, 212, 215, 216, 219, 226, 233, 236, 237, 236, 238, 240, 242, 242, + 244, 242, 244, 242, 244, 242, 243, 241, 243, 241, 243, 241, 243, 241, 241, 241, + 241, 241, 241, 241, 239, 239, 242, 241, 238, 236, 234, 232, 231, 229, 234, 233, + 228, 226, 223, 222, 223, 221, 224, 223, 221, 221, 223, 222, 220, 216, 209, 208, + 202, 195, 191, 188, 171, 157, 144, 122, 99, 188, 240, 229, 251, 217, 223, 219, + 212, 244, 205, 222, 222, 196, 196, 237, 190, 98, 78, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 62, 107, 151, 128, 200, 218, 229, 222, 231, 239, 196, + 66, 100, 112, 147, 154, 157, 163, 166, 182, 186, 191, 196, 201, 207, 212, 213, + 213, 212, 211, 208, 209, 207, 209, 210, 214, 215, 220, 225, 232, 237, 239, 238, + 241, 242, 242, 242, 242, 242, 242, 242, 242, 242, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 239, 239, 240, 239, 236, 235, 233, 231, + 229, 228, 231, 230, 228, 226, 223, 222, 223, 221, 223, 221, 221, 221, 220, 219, + 216, 211, 203, 201, 194, 189, 184, 177, 162, 147, 141, 117, 131, 206, 227, 249, + 235, 221, 213, 225, 208, 185, 218, 213, 208, 179, 232, 197, 122, 72, 136, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, 115, 164, 121, 209, 204, 208, + 227, 238, 209, 126, 50, 69, 104, 138, 147, 151, 157, 160, 177, 179, 192, 195, + 199, 204, 208, 213, 215, 216, 210, 207, 208, 207, 209, 210, 214, 216, 219, 223, + 229, 235, 238, 238, 239, 240, 242, 242, 242, 242, 242, 242, 242, 242, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 239, 239, 239, 238, + 235, 234, 232, 231, 228, 228, 230, 229, 227, 226, 223, 222, 220, 220, 222, 221, + 220, 219, 219, 217, 210, 205, 202, 199, 194, 189, 182, 174, 158, 145, 137, 114, + 111, 203, 221, 244, 239, 244, 200, 220, 180, 217, 185, 199, 181, 214, 188, 124, + 67, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 78, 150, + 113, 214, 230, 235, 238, 224, 147, 77, 122, 255, 87, 126, 140, 149, 156, 158, + 170, 171, 186, 188, 196, 200, 207, 211, 214, 212, 209, 206, 207, 207, 210, 211, + 214, 217, 216, 221, 226, 230, 235, 238, 239, 240, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 239, 239, 239, 238, 235, 234, 233, 231, 229, 229, 228, 228, 227, 226, 223, 222, + 220, 218, 220, 217, 217, 217, 217, 212, 207, 201, 198, 194, 189, 185, 178, 168, + 153, 143, 131, 117, 60, 172, 239, 223, 244, 248, 215, 189, 201, 227, 193, 178, + 212, 214, 99, 68, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 66, 118, 100, 219, 215, 231, 215, 191, 104, 82, 255, 255, 82, 120, + 135, 144, 150, 152, 166, 166, 177, 184, 192, 200, 207, 212, 212, 210, 208, 206, + 205, 207, 210, 212, 215, 219, 217, 220, 224, 228, 234, 236, 239, 239, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 239, 239, 240, 239, 236, 235, 234, 233, 231, 231, 226, 226, + 224, 223, 223, 222, 219, 217, 219, 216, 215, 212, 212, 207, 202, 197, 192, 187, + 180, 176, 167, 153, 140, 133, 127, 108, 47, 111, 241, 232, 237, 229, 215, 186, + 178, 193, 188, 197, 188, 117, 71, 62, 74, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 63, 69, 188, 195, 224, 201, 157, 76, 255, + 255, 255, 77, 115, 127, 133, 139, 142, 158, 161, 172, 177, 187, 199, 207, 210, + 210, 208, 206, 204, 204, 204, 208, 212, 215, 217, 218, 218, 221, 226, 232, 235, + 237, 236, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 239, 239, 240, 239, 237, 236, 235, 234, + 232, 232, 224, 225, 223, 223, 222, 219, 217, 215, 216, 212, 210, 206, 206, 203, + 200, 197, 192, 183, 177, 170, 159, 144, 133, 129, 130, 80, 63, 38, 176, 244, + 232, 240, 213, 202, 143, 193, 189, 187, 101, 63, 82, 65, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 86, 154, 200, 208, + 181, 110, 126, 255, 255, 255, 59, 100, 121, 133, 138, 139, 153, 152, 167, 171, + 180, 189, 197, 202, 206, 204, 201, 199, 201, 201, 205, 210, 213, 215, 219, 218, + 220, 224, 231, 234, 233, 232, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 239, 239, 238, 238, + 235, 235, 234, 233, 232, 231, 223, 223, 222, 223, 220, 219, 217, 214, 215, 210, + 205, 202, 201, 199, 197, 194, 188, 178, 172, 166, 156, 142, 134, 134, 125, 48, + 69, 26, 99, 202, 216, 239, 217, 174, 157, 187, 203, 114, 78, 80, 81, 70, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, + 70, 46, 66, 67, 83, 123, 255, 255, 255, 255, 35, 86, 118, 139, 147, 144, + 150, 144, 162, 163, 170, 177, 187, 193, 200, 201, 196, 196, 198, 199, 203, 206, + 211, 213, 218, 218, 220, 223, 228, 233, 232, 230, 240, 240, 240, 240, 240, 240, + 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 239, 239, 237, 236, 234, 233, 233, 232, 231, 230, 222, 223, 222, 223, 220, 218, + 215, 212, 212, 207, 202, 197, 197, 196, 196, 193, 174, 165, 159, 158, 150, 140, + 135, 139, 112, 31, 67, 75, 70, 138, 184, 202, 180, 133, 119, 175, 115, 81, + 72, 74, 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 72, 67, 72, 72, 134, 255, 255, 255, 255, 255, 63, 54, + 104, 139, 152, 139, 147, 136, 155, 147, 154, 174, 189, 189, 192, 197, 199, 198, + 199, 200, 203, 206, 209, 211, 213, 218, 223, 225, 227, 228, 232, 234, 237, 238, + 238, 239, 239, 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 239, 239, 239, 238, 235, 232, 230, 227, 224, 223, 226, 224, + 221, 221, 219, 217, 212, 207, 212, 197, 192, 200, 200, 186, 182, 187, 178, 155, + 173, 160, 150, 139, 158, 137, 85, 97, 68, 69, 86, 73, 156, 160, 156, 137, + 114, 89, 75, 71, 78, 86, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 68, 53, 92, 122, 140, 130, 139, 129, 144, 148, 156, 164, 178, 187, + 192, 191, 194, 194, 196, 197, 200, 202, 208, 209, 211, 216, 221, 226, 228, 229, + 234, 236, 238, 239, 239, 239, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 239, 239, 239, 238, 235, 233, 232, 230, + 228, 228, 226, 222, 220, 218, 217, 214, 210, 207, 206, 200, 196, 194, 193, 187, + 182, 178, 170, 149, 163, 152, 145, 137, 145, 115, 65, 76, 88, 71, 73, 68, + 103, 116, 105, 94, 83, 73, 69, 71, 78, 82, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 80, 59, 83, 106, 132, 129, 141, 132, 131, 145, + 154, 156, 168, 185, 192, 186, 192, 193, 195, 197, 201, 203, 208, 209, 211, 216, + 221, 224, 227, 230, 234, 238, 240, 240, 240, 241, 241, 241, 242, 242, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 239, 239, 238, 238, + 235, 235, 234, 233, 232, 232, 227, 222, 219, 216, 215, 214, 211, 208, 202, 204, + 200, 190, 185, 185, 179, 167, 169, 151, 158, 151, 148, 143, 134, 91, 59, 64, + 110, 74, 64, 71, 65, 85, 67, 65, 67, 68, 72, 77, 80, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 77, 94, 130, 133, + 142, 136, 127, 139, 149, 153, 162, 176, 186, 189, 197, 197, 200, 201, 205, 206, + 208, 211, 212, 214, 221, 224, 228, 231, 236, 239, 242, 242, 242, 242, 242, 242, + 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 239, 239, 238, 238, 235, 234, 234, 233, 231, 229, 227, 222, 216, 214, 214, 213, + 212, 208, 200, 200, 196, 189, 183, 177, 170, 164, 168, 158, 158, 153, 153, 149, + 121, 71, 64, 70, 107, 72, 60, 79, 67, 85, 68, 70, 73, 79, 81, 140, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, + 68, 79, 123, 129, 139, 136, 132, 130, 140, 154, 162, 166, 179, 190, 197, 198, + 202, 203, 204, 206, 208, 209, 212, 214, 221, 223, 227, 230, 236, 239, 243, 243, + 243, 242, 242, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 239, 239, 238, 238, 235, 233, 231, 230, 228, 225, 226, 221, + 215, 214, 214, 213, 212, 208, 203, 192, 187, 190, 182, 165, 160, 165, 161, 157, + 151, 152, 148, 140, 99, 55, 65, 77, 81, 67, 60, 78, 83, 85, 79, 78, + 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 66, 66, 73, 116, 123, 134, 138, 137, 129, 135, 150, 160, 161, + 171, 187, 194, 195, 199, 201, 203, 203, 206, 205, 213, 215, 219, 222, 226, 229, + 235, 238, 241, 243, 243, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 239, 239, 237, 236, 233, 232, 230, 228, + 226, 223, 224, 220, 215, 213, 214, 211, 209, 207, 202, 186, 182, 186, 179, 160, + 155, 166, 155, 158, 149, 155, 143, 128, 84, 55, 66, 81, 62, 71, 70, 81, + 92, 83, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 75, 71, 71, 112, 117, 133, 142, 136, 132, + 133, 143, 153, 163, 170, 175, 188, 190, 195, 199, 202, 203, 207, 206, 214, 215, + 218, 221, 224, 227, 232, 237, 241, 242, 242, 242, 241, 241, 240, 240, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 239, 239, 235, 234, + 232, 231, 230, 229, 227, 225, 222, 219, 215, 214, 216, 212, 209, 204, 193, 186, + 182, 178, 172, 161, 159, 165, 153, 159, 150, 160, 139, 116, 72, 63, 67, 79, + 59, 80, 78, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 75, 67, 106, 111, + 128, 144, 135, 136, 137, 135, 147, 165, 172, 165, 185, 187, 194, 199, 203, 207, + 210, 210, 214, 215, 218, 220, 223, 226, 230, 235, 240, 242, 242, 241, 241, 240, + 240, 239, 241, 241, 241, 241, 241, 241, 241, 241, 241, 239, 241, 239, 239, 239, + 239, 237, 231, 231, 231, 230, 230, 230, 230, 228, 221, 218, 217, 216, 217, 212, + 208, 203, 187, 187, 183, 171, 163, 163, 164, 161, 149, 156, 148, 161, 136, 111, + 70, 74, 76, 76, 65, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, + 76, 72, 104, 107, 129, 141, 147, 137, 148, 152, 144, 160, 178, 173, 184, 188, + 193, 197, 202, 207, 213, 216, 214, 215, 219, 223, 227, 229, 232, 233, 236, 239, + 240, 242, 242, 241, 240, 239, 241, 241, 241, 241, 241, 241, 241, 241, 238, 236, + 239, 238, 238, 235, 234, 233, 229, 226, 225, 224, 225, 226, 227, 228, 227, 226, + 225, 222, 218, 210, 204, 198, 186, 188, 187, 177, 163, 155, 157, 161, 145, 159, + 152, 160, 135, 113, 72, 71, 72, 76, 136, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 77, 75, 69, 99, 106, 129, 142, 152, 148, 152, 152, 153, 164, + 181, 180, 184, 188, 194, 199, 204, 207, 212, 214, 215, 216, 222, 224, 228, 230, + 232, 233, 237, 238, 240, 241, 242, 241, 241, 240, 241, 241, 241, 241, 241, 241, + 241, 239, 237, 236, 237, 237, 236, 234, 231, 230, 227, 226, 223, 222, 222, 223, + 225, 225, 232, 230, 225, 220, 216, 210, 206, 203, 192, 186, 179, 171, 164, 160, + 159, 158, 145, 153, 145, 152, 128, 107, 75, 85, 77, 138, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 78, 73, 64, 96, 103, 127, 140, 148, 154, + 152, 148, 157, 163, 171, 179, 182, 187, 193, 199, 205, 207, 210, 212, 216, 217, + 222, 224, 228, 230, 232, 233, 236, 237, 239, 241, 242, 242, 242, 241, 241, 241, + 241, 241, 241, 241, 241, 239, 237, 235, 235, 236, 234, 233, 232, 232, 227, 226, + 226, 225, 223, 223, 224, 224, 230, 227, 219, 212, 208, 204, 204, 202, 198, 185, + 174, 166, 166, 165, 160, 154, 154, 153, 144, 147, 122, 96, 75, 95, 75, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 74, 63, 93, 101, + 124, 136, 143, 156, 155, 149, 160, 161, 159, 173, 176, 182, 190, 198, 205, 207, + 211, 212, 216, 217, 222, 223, 227, 229, 231, 232, 235, 236, 239, 241, 242, 243, + 242, 242, 241, 241, 241, 241, 241, 241, 241, 239, 237, 235, 235, 234, 233, 232, + 232, 231, 227, 227, 227, 226, 224, 224, 224, 224, 227, 224, 218, 211, 208, 203, + 202, 200, 196, 184, 174, 168, 169, 168, 163, 155, 156, 151, 143, 143, 119, 82, + 67, 93, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, + 79, 66, 93, 101, 125, 135, 143, 160, 163, 159, 168, 165, 159, 170, 171, 177, + 187, 195, 204, 208, 212, 214, 216, 216, 221, 223, 226, 228, 230, 230, 235, 236, + 239, 241, 242, 243, 242, 242, 241, 241, 241, 241, 241, 241, 241, 239, 237, 235, + 234, 234, 233, 233, 232, 232, 230, 230, 228, 228, 228, 227, 224, 224, 228, 227, + 224, 219, 216, 210, 206, 202, 191, 184, 180, 176, 174, 170, 164, 157, 149, 144, + 141, 136, 116, 68, 54, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 81, 81, 65, 90, 100, 125, 135, 141, 154, 164, 165, 167, 164, + 161, 166, 169, 178, 187, 195, 204, 209, 214, 217, 217, 217, 222, 223, 227, 228, + 230, 230, 236, 237, 239, 241, 242, 242, 242, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 238, 236, 235, 234, 233, 234, 233, 233, 232, 232, 231, 231, 230, 229, + 225, 225, 225, 224, 222, 221, 219, 211, 205, 200, 189, 188, 186, 184, 180, 173, + 168, 161, 150, 145, 145, 130, 114, 64, 50, 65, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 198, 80, 61, 85, 97, 125, 137, 140, 146, + 163, 166, 162, 165, 173, 171, 176, 183, 190, 197, 205, 210, 216, 219, 219, 220, + 224, 226, 229, 230, 232, 232, 237, 238, 240, 241, 242, 241, 241, 240, 241, 241, + 241, 241, 241, 241, 241, 241, 240, 239, 238, 236, 234, 234, 235, 236, 234, 234, + 235, 235, 232, 230, 229, 228, 220, 221, 220, 218, 216, 209, 203, 200, 195, 191, + 188, 188, 185, 180, 174, 167, 155, 151, 150, 124, 113, 67, 59, 66, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 56, 79, 94, + 126, 139, 145, 144, 166, 172, 162, 170, 186, 183, 182, 188, 194, 199, 206, 210, + 217, 220, 221, 222, 227, 228, 231, 232, 234, 234, 238, 239, 240, 242, 242, 241, + 240, 239, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 238, 237, 234, 235, + 236, 237, 235, 236, 236, 236, 233, 232, 229, 228, 224, 224, 221, 219, 218, 211, + 209, 204, 201, 195, 189, 187, 189, 186, 180, 171, 156, 150, 146, 112, 104, 66, + 63, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 78, 74, 69, 90, 134, 139, 160, 150, 161, 172, 168, 169, 174, 176, 189, 195, + 195, 192, 197, 205, 214, 216, 220, 222, 229, 232, 236, 237, 238, 238, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 239, 239, 239, 239, 237, 237, 236, 237, 236, 236, 236, 235, 234, 231, 227, 226, + 222, 219, 217, 210, 209, 205, 195, 192, 191, 191, 191, 186, 178, 168, 159, 147, + 142, 128, 110, 59, 69, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 76, 71, 64, 85, 133, 142, 154, 146, 158, 169, 166, 164, + 170, 171, 187, 194, 198, 197, 202, 208, 213, 213, 220, 222, 229, 231, 236, 236, + 238, 237, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 239, 239, 239, 239, 239, 237, 236, 237, 236, 236, 236, 235, + 234, 231, 225, 224, 222, 220, 219, 216, 213, 211, 199, 196, 194, 194, 193, 189, + 181, 169, 158, 144, 137, 121, 103, 54, 66, 75, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 79, 71, 61, 79, 128, 143, 155, 148, + 158, 168, 167, 167, 173, 171, 185, 195, 201, 202, 207, 210, 213, 211, 220, 222, + 228, 231, 235, 236, 237, 237, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 239, 239, 239, 236, 237, + 237, 237, 236, 235, 234, 231, 226, 224, 223, 221, 220, 217, 215, 212, 204, 200, + 197, 196, 197, 191, 184, 172, 159, 144, 134, 116, 97, 49, 63, 73, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 77, 62, 75, + 123, 141, 158, 151, 159, 166, 165, 168, 176, 173, 186, 196, 202, 203, 207, 210, + 213, 211, 219, 221, 228, 231, 235, 236, 237, 237, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 239, 239, 236, 237, 237, 237, 236, 235, 234, 231, 230, 227, 225, 222, 217, 215, + 211, 208, 209, 206, 202, 201, 201, 195, 188, 176, 164, 148, 135, 118, 98, 51, + 66, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 89, 84, 67, 76, 124, 143, 156, 150, 156, 158, 155, 161, 172, 172, 189, 197, + 200, 199, 203, 208, 213, 212, 219, 221, 228, 230, 234, 235, 237, 236, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 243, + 241, 241, 241, 241, 239, 239, 238, 239, 237, 237, 237, 236, 235, 233, 229, 226, + 223, 221, 216, 214, 210, 207, 211, 208, 204, 202, 202, 197, 190, 179, 166, 149, + 137, 119, 99, 52, 69, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 216, 212, 218, 224, 222, 223, 223, 200, 194, + 201, 199, 211, 216, 216, 195, 199, 205, 211, 212, 219, 220, 227, 230, 234, 235, + 236, 236, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 243, 243, 241, 241, 241, 241, 239, 239, 238, 239, 237, 237, 237, 236, + 235, 233, 225, 222, 221, 220, 217, 216, 213, 213, 212, 209, 205, 205, 203, 200, + 192, 182, 163, 146, 137, 121, 101, 54, 68, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 246, 247, 248, 248, 249, 249, 249, 246, 246, 246, 246, 246, 246, 244, 241, 241, + 241, 241, 241, 241, 241, 241, 243, 243, 243, 243, 241, 241, 241, 241, 238, 239, + 237, 237, 237, 236, 235, 233, 226, 224, 222, 221, 218, 217, 215, 214, 212, 208, + 204, 204, 203, 201, 196, 186, 160, 145, 139, 124, 107, 56, 68, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 252, 250, 251, 251, 251, 251, 250, 247, + 246, 246, 244, 244, 243, 243, 237, 236, 235, 233, 231, 228, 226, 223, 219, 217, + 213, 212, 211, 208, 206, 204, 203, 202, 197, 187, 160, 146, 142, 128, 111, 125, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy15' of size 152x151x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy15[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 26, 33, 24, 32, 33, 29, 15, 15, 20, 28, 31, 27, 25, 25, 28, 26, + 24, 24, 23, 21, 15, 13, 16, 11, 9, 7, 9, 10, 11, 11, 11, 102, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 187, 33, 42, 29, 32, 29, 33, 35, 46, 39, 40, 47, + 55, 56, 58, 60, 63, 62, 78, 75, 72, 69, 68, 63, 57, 52, 38, 35, + 32, 29, 29, 26, 24, 21, 17, 28, 26, 26, 28, 19, 21, 81, 204, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 61, 54, 37, 44, 34, + 51, 50, 71, 71, 87, 76, 82, 95, 101, 96, 97, 103, 107, 105, 99, 99, + 99, 102, 105, 104, 101, 96, 84, 81, 78, 71, 63, 49, 36, 25, 26, 24, + 15, 22, 27, 16, 31, 57, 127, 90, 58, 46, 35, 14, 63, 202, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 191, 70, 66, 61, 60, 65, 87, 93, 99, 103, 106, 107, 110, 111, 110, 112, + 115, 117, 120, 122, 124, 125, 122, 123, 124, 123, 121, 120, 120, 121, 117, 113, + 109, 104, 100, 94, 91, 86, 66, 68, 65, 52, 38, 37, 51, 64, 90, 60, + 50, 61, 49, 16, 6, 13, 10, 68, 201, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 50, 68, 81, 88, 93, 102, 111, 106, 112, + 117, 119, 120, 121, 123, 125, 130, 131, 133, 137, 139, 141, 142, 144, 144, 146, + 146, 143, 139, 138, 137, 137, 134, 131, 128, 125, 122, 118, 116, 112, 110, 107, + 101, 87, 70, 56, 49, 46, 74, 59, 47, 45, 38, 25, 17, 20, 11, 17, + 15, 14, 21, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 67, 84, 88, + 95, 100, 103, 104, 109, 114, 127, 131, 134, 135, 135, 135, 138, 140, 142, 142, + 145, 147, 148, 149, 150, 152, 158, 159, 159, 155, 153, 151, 150, 149, 149, 148, + 147, 146, 146, 143, 143, 140, 125, 120, 118, 115, 110, 104, 93, 85, 62, 59, + 45, 29, 23, 28, 24, 15, 13, 19, 21, 20, 22, 25, 26, 24, 94, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 183, 53, 73, 86, 101, 104, 109, 114, 121, 125, 128, 131, 139, 144, + 145, 145, 145, 146, 149, 152, 149, 149, 152, 153, 153, 154, 155, 155, 159, 162, + 163, 163, 162, 161, 161, 163, 158, 158, 158, 158, 158, 159, 157, 156, 152, 144, + 136, 131, 127, 123, 117, 111, 80, 75, 59, 38, 30, 32, 25, 13, 19, 18, + 25, 24, 25, 32, 32, 18, 15, 20, 18, 95, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 211, 100, 58, 71, 88, 103, 109, 112, 116, + 122, 132, 142, 147, 150, 151, 151, 154, 156, 156, 155, 157, 160, 163, 163, 163, + 163, 163, 162, 162, 162, 164, 166, 169, 171, 171, 170, 169, 169, 169, 164, 162, + 162, 161, 161, 161, 161, 160, 162, 156, 149, 141, 134, 131, 128, 126, 115, 102, + 87, 75, 62, 49, 38, 29, 25, 16, 21, 25, 30, 44, 42, 16, 21, 23, + 19, 16, 9, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, + 78, 89, 105, 121, 128, 128, 134, 136, 142, 147, 149, 152, 149, 148, 161, 164, + 166, 166, 167, 168, 170, 171, 173, 170, 170, 169, 169, 167, 167, 168, 170, 172, + 174, 173, 170, 167, 166, 166, 166, 166, 165, 164, 163, 162, 162, 161, 145, 148, + 151, 150, 146, 144, 144, 145, 135, 120, 108, 104, 93, 72, 58, 53, 37, 20, + 24, 27, 33, 56, 59, 27, 36, 28, 26, 17, 14, 29, 14, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 194, 87, 100, 109, 119, 129, 131, 129, 137, 142, + 149, 154, 159, 164, 166, 167, 168, 171, 173, 174, 173, 172, 172, 171, 171, 170, + 169, 166, 165, 164, 164, 163, 163, 165, 168, 168, 165, 162, 161, 161, 163, 162, + 164, 163, 162, 161, 160, 161, 159, 162, 162, 158, 152, 147, 143, 141, 139, 129, + 121, 119, 111, 97, 84, 75, 60, 38, 37, 35, 33, 62, 74, 43, 50, 32, + 36, 23, 28, 26, 21, 26, 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 109, 128, + 139, 144, 145, 149, 151, 152, 161, 164, 167, 168, 167, 168, 170, 172, 173, 174, + 176, 177, 175, 172, 171, 171, 171, 171, 169, 168, 167, 163, 164, 164, 159, 162, + 167, 168, 167, 165, 164, 164, 162, 162, 162, 162, 161, 160, 160, 160, 164, 161, + 157, 155, 154, 155, 155, 153, 140, 140, 135, 129, 126, 120, 110, 97, 88, 63, + 55, 46, 35, 62, 81, 55, 61, 34, 44, 28, 39, 26, 29, 40, 21, 28, + 107, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 80, 92, 104, 137, 147, 152, 156, 158, 161, 166, 168, 168, 168, + 170, 170, 171, 171, 172, 172, 172, 172, 174, 175, 175, 174, 174, 174, 174, 174, + 173, 172, 171, 169, 169, 168, 166, 163, 160, 161, 163, 163, 162, 159, 160, 158, + 157, 155, 153, 152, 151, 150, 147, 145, 147, 148, 147, 147, 147, 147, 147, 146, + 146, 145, 142, 139, 135, 130, 108, 107, 83, 73, 79, 56, 38, 57, 45, 32, + 70, 33, 24, 34, 39, 57, 40, 19, 31, 114, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 80, 92, 117, 142, 151, 158, + 162, 164, 165, 167, 169, 171, 172, 172, 173, 173, 173, 174, 174, 174, 174, 174, + 175, 175, 175, 175, 175, 175, 173, 173, 172, 171, 170, 168, 168, 167, 163, 160, + 160, 161, 164, 165, 164, 162, 164, 162, 160, 158, 156, 154, 155, 151, 147, 145, + 147, 145, 148, 148, 148, 148, 148, 149, 150, 150, 149, 147, 145, 141, 130, 131, + 110, 96, 94, 71, 54, 74, 71, 51, 79, 41, 33, 41, 43, 55, 87, 46, + 30, 37, 55, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 90, 95, 114, 138, 151, 157, 162, 166, 168, 169, 169, 169, 170, 171, 173, 173, + 174, 174, 174, 175, 175, 175, 177, 177, 177, 177, 177, 176, 176, 176, 175, 174, + 173, 172, 171, 170, 169, 169, 167, 164, 165, 165, 167, 168, 167, 166, 166, 165, + 163, 160, 158, 157, 158, 155, 148, 144, 144, 142, 143, 142, 142, 143, 148, 149, + 149, 150, 150, 150, 149, 147, 141, 144, 130, 117, 111, 88, 74, 91, 79, 55, + 74, 42, 38, 45, 48, 53, 87, 48, 33, 41, 72, 85, 116, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 194, 83, 98, 124, 155, 174, 171, 159, 169, 171, + 173, 174, 172, 172, 173, 174, 174, 174, 174, 175, 175, 176, 176, 176, 178, 177, + 176, 175, 175, 174, 174, 174, 176, 175, 175, 174, 173, 172, 171, 171, 177, 176, + 175, 174, 175, 173, 172, 171, 171, 169, 167, 165, 164, 162, 163, 160, 151, 147, + 147, 143, 142, 142, 142, 141, 145, 146, 147, 148, 149, 147, 150, 147, 139, 141, + 133, 127, 126, 108, 95, 102, 69, 48, 62, 36, 37, 41, 51, 58, 60, 44, + 45, 45, 65, 81, 55, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 66, 102, + 143, 164, 170, 173, 175, 175, 171, 171, 174, 174, 173, 173, 174, 175, 173, 173, + 173, 173, 174, 174, 174, 175, 177, 177, 176, 174, 174, 174, 174, 175, 176, 176, + 175, 175, 175, 175, 174, 174, 183, 184, 184, 182, 181, 179, 179, 179, 176, 175, + 174, 172, 171, 170, 171, 169, 164, 161, 160, 157, 154, 151, 150, 149, 145, 145, + 143, 143, 143, 143, 145, 144, 135, 134, 132, 132, 134, 121, 108, 103, 68, 50, + 61, 37, 35, 32, 49, 55, 43, 35, 33, 16, 20, 40, 32, 29, 20, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 180, 47, 60, 86, 122, 146, 169, 176, 174, 173, 177, 177, 169, 170, + 172, 173, 172, 172, 173, 174, 171, 171, 171, 172, 172, 172, 173, 175, 178, 177, + 177, 174, 175, 174, 177, 176, 176, 175, 177, 176, 179, 177, 180, 180, 183, 187, + 189, 187, 188, 186, 190, 190, 184, 184, 183, 182, 182, 183, 183, 183, 176, 172, + 171, 169, 166, 162, 157, 155, 150, 148, 146, 143, 142, 141, 142, 141, 140, 136, + 136, 137, 136, 129, 117, 103, 82, 63, 66, 43, 35, 20, 38, 39, 53, 47, + 48, 33, 36, 53, 41, 37, 18, 18, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, 39, 71, 95, 132, 167, 168, + 169, 168, 175, 180, 176, 167, 170, 170, 172, 172, 170, 170, 170, 171, 170, 170, + 170, 171, 171, 171, 172, 174, 181, 180, 179, 177, 178, 179, 182, 182, 180, 180, + 182, 183, 185, 186, 188, 189, 189, 192, 195, 195, 195, 194, 198, 200, 195, 194, + 194, 195, 196, 197, 196, 196, 186, 183, 183, 180, 176, 170, 163, 160, 162, 158, + 154, 150, 146, 142, 143, 143, 146, 140, 140, 138, 134, 131, 125, 113, 103, 80, + 73, 54, 45, 27, 41, 33, 23, 20, 31, 24, 27, 37, 21, 16, 19, 18, + 20, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 55, 65, 91, 126, 135, 155, 156, 164, 170, 169, 168, 172, 172, 168, 171, 171, + 172, 172, 169, 168, 168, 169, 170, 170, 170, 171, 171, 171, 172, 174, 182, 182, + 180, 179, 180, 182, 185, 186, 185, 186, 187, 190, 192, 194, 196, 198, 198, 202, + 203, 202, 200, 199, 201, 203, 200, 201, 201, 202, 203, 203, 205, 205, 196, 194, + 194, 192, 188, 181, 173, 168, 169, 165, 161, 155, 149, 145, 144, 143, 146, 141, + 142, 139, 128, 129, 133, 123, 119, 95, 81, 66, 63, 44, 58, 44, 42, 37, + 43, 29, 23, 31, 27, 37, 19, 18, 18, 19, 95, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 73, 97, 115, 133, 145, 152, 152, 165, 167, + 169, 168, 165, 161, 161, 161, 165, 168, 169, 170, 171, 171, 171, 171, 173, 173, + 173, 173, 174, 176, 177, 179, 181, 183, 185, 188, 191, 192, 193, 194, 189, 190, + 193, 196, 198, 199, 199, 201, 201, 209, 206, 204, 210, 209, 202, 204, 208, 202, + 203, 209, 209, 202, 199, 202, 200, 193, 192, 194, 195, 189, 182, 176, 173, 166, + 158, 151, 148, 143, 141, 138, 146, 142, 137, 134, 134, 130, 127, 123, 113, 103, + 92, 82, 68, 58, 63, 72, 65, 67, 78, 42, 23, 32, 18, 22, 19, 13, + 10, 14, 16, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 91, 113, + 129, 143, 153, 161, 162, 160, 167, 169, 169, 166, 164, 161, 160, 163, 165, 168, + 171, 172, 174, 174, 175, 174, 176, 175, 176, 176, 178, 179, 181, 182, 183, 185, + 189, 189, 194, 193, 196, 194, 200, 198, 200, 199, 202, 202, 206, 207, 209, 214, + 211, 206, 212, 209, 202, 202, 216, 212, 209, 205, 197, 189, 185, 184, 186, 186, + 181, 170, 155, 150, 154, 163, 163, 157, 154, 154, 154, 153, 148, 143, 126, 127, + 130, 133, 134, 130, 122, 115, 130, 109, 89, 84, 82, 71, 57, 46, 56, 47, + 68, 64, 44, 25, 8, 31, 33, 22, 12, 11, 12, 12, 94, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 181, 65, 123, 142, 153, 160, 163, 166, 163, 159, 163, 163, + 162, 160, 156, 154, 156, 161, 167, 171, 175, 175, 179, 179, 181, 180, 183, 181, + 183, 182, 185, 185, 188, 189, 191, 192, 195, 196, 199, 200, 201, 201, 211, 209, + 208, 207, 209, 210, 214, 215, 217, 219, 213, 208, 213, 207, 199, 202, 209, 208, + 199, 184, 170, 164, 161, 157, 149, 127, 109, 111, 126, 132, 118, 99, 109, 99, + 91, 89, 98, 107, 111, 111, 131, 123, 113, 107, 109, 115, 122, 124, 119, 109, + 100, 94, 80, 64, 46, 36, 47, 56, 70, 48, 27, 27, 21, 30, 18, 12, + 10, 15, 15, 12, 7, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 44, 73, 109, 133, 148, + 157, 161, 162, 165, 163, 159, 158, 158, 157, 156, 153, 154, 157, 163, 171, 176, + 179, 181, 184, 186, 187, 188, 188, 189, 189, 190, 191, 193, 195, 197, 200, 202, + 203, 205, 207, 208, 208, 208, 213, 213, 214, 215, 217, 219, 221, 222, 219, 217, + 209, 206, 210, 204, 196, 202, 195, 194, 183, 164, 149, 147, 148, 143, 112, 116, + 122, 126, 125, 123, 113, 104, 105, 91, 77, 71, 75, 80, 80, 76, 89, 90, + 94, 96, 97, 92, 85, 79, 103, 102, 103, 98, 87, 70, 58, 50, 33, 56, + 66, 44, 26, 26, 14, 8, 12, 12, 16, 19, 16, 9, 6, 8, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 178, 36, 71, 110, 132, 138, 150, 157, 160, 162, 164, 165, 162, 161, 162, + 161, 161, 162, 164, 169, 174, 178, 182, 185, 188, 190, 193, 194, 194, 195, 196, + 196, 197, 199, 201, 203, 206, 207, 210, 212, 213, 214, 215, 215, 215, 213, 215, + 220, 224, 227, 229, 229, 227, 218, 215, 206, 204, 207, 200, 194, 202, 193, 189, + 177, 162, 149, 149, 151, 151, 140, 144, 147, 142, 136, 133, 127, 119, 95, 91, + 87, 88, 93, 95, 90, 82, 79, 77, 80, 83, 86, 86, 82, 78, 70, 59, + 53, 58, 69, 69, 54, 36, 44, 33, 27, 34, 32, 22, 26, 35, 21, 20, + 20, 18, 11, 6, 11, 20, 10, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 184, 47, 63, 89, 121, 123, 140, 150, + 155, 156, 157, 161, 162, 161, 161, 164, 166, 169, 171, 174, 179, 184, 188, 192, + 194, 197, 200, 202, 203, 204, 205, 205, 206, 207, 209, 212, 214, 216, 215, 216, + 217, 218, 218, 218, 218, 218, 215, 219, 225, 231, 235, 237, 236, 233, 223, 215, + 206, 206, 210, 201, 197, 207, 203, 191, 176, 167, 161, 156, 160, 164, 176, 159, + 137, 126, 134, 145, 140, 125, 136, 129, 121, 117, 119, 122, 125, 123, 81, 72, + 61, 56, 61, 75, 89, 95, 91, 88, 85, 84, 91, 97, 93, 84, 65, 60, + 38, 32, 28, 20, 22, 13, 7, 7, 10, 16, 14, 9, 8, 11, 11, 92, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, + 30, 67, 98, 113, 139, 138, 138, 144, 148, 149, 150, 155, 158, 157, 163, 168, + 174, 178, 181, 185, 190, 194, 200, 202, 204, 207, 209, 211, 212, 212, 214, 214, + 215, 217, 219, 221, 223, 225, 223, 224, 225, 226, 226, 226, 225, 225, 226, 229, + 233, 238, 242, 244, 244, 241, 233, 224, 213, 211, 216, 207, 203, 215, 211, 189, + 173, 173, 173, 167, 170, 177, 174, 175, 167, 148, 139, 144, 152, 154, 142, 135, + 124, 113, 106, 103, 103, 101, 109, 108, 112, 116, 120, 118, 113, 109, 94, 99, + 99, 87, 77, 78, 83, 87, 99, 128, 121, 113, 103, 89, 71, 26, 30, 19, + 12, 15, 18, 15, 7, 6, 12, 12, 93, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 35, 35, 88, 123, 118, 138, 143, 140, 144, + 148, 147, 151, 156, 160, 159, 168, 173, 181, 186, 191, 195, 199, 203, 206, 208, + 211, 213, 215, 216, 217, 217, 219, 220, 221, 222, 224, 227, 229, 233, 231, 232, + 233, 234, 234, 235, 235, 234, 236, 237, 240, 242, 244, 246, 246, 244, 240, 228, + 217, 217, 221, 212, 208, 221, 219, 192, 175, 183, 185, 176, 179, 190, 186, 176, + 164, 158, 169, 173, 154, 127, 94, 108, 127, 142, 146, 142, 136, 130, 124, 121, + 118, 116, 112, 107, 99, 93, 95, 87, 74, 62, 58, 60, 55, 45, 32, 39, + 35, 65, 87, 95, 125, 132, 115, 76, 34, 13, 14, 18, 18, 16, 12, 11, + 11, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 33, + 66, 103, 126, 136, 145, 154, 155, 148, 146, 151, 154, 155, 159, 168, 176, 181, + 186, 186, 189, 194, 200, 204, 211, 208, 209, 215, 218, 216, 216, 221, 214, 218, + 223, 228, 231, 230, 228, 229, 238, 238, 237, 236, 239, 239, 237, 235, 246, 242, + 243, 245, 244, 243, 245, 245, 236, 230, 226, 223, 223, 223, 226, 227, 221, 194, + 193, 202, 191, 188, 197, 191, 182, 180, 173, 156, 139, 132, 140, 150, 166, 159, + 152, 150, 153, 155, 153, 150, 151, 154, 155, 156, 155, 149, 140, 133, 121, 118, + 104, 83, 66, 58, 54, 45, 36, 26, 24, 25, 24, 25, 46, 69, 85, 110, + 124, 94, 46, 14, 8, 9, 14, 4, 8, 16, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 44, 62, 94, 124, 140, 144, 149, 156, 160, 155, + 153, 156, 158, 158, 164, 171, 185, 189, 193, 195, 199, 202, 204, 206, 207, 208, + 205, 200, 204, 212, 212, 205, 213, 215, 219, 224, 228, 231, 233, 233, 244, 242, + 239, 239, 239, 240, 239, 238, 247, 243, 241, 245, 243, 241, 242, 242, 243, 238, + 235, 234, 232, 233, 235, 235, 221, 208, 204, 198, 193, 207, 210, 184, 187, 165, + 147, 148, 168, 183, 185, 179, 174, 174, 176, 182, 189, 194, 195, 196, 205, 204, + 201, 196, 188, 176, 164, 154, 139, 136, 123, 105, 85, 70, 57, 42, 40, 28, + 24, 23, 19, 17, 30, 49, 39, 44, 73, 104, 107, 73, 33, 9, 22, 8, + 4, 4, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 77, + 110, 136, 147, 151, 154, 160, 157, 155, 155, 161, 165, 170, 177, 183, 188, 189, + 191, 195, 196, 196, 194, 193, 202, 208, 203, 191, 196, 213, 216, 203, 209, 210, + 213, 220, 226, 232, 239, 241, 243, 239, 236, 236, 239, 240, 241, 242, 243, 241, + 240, 243, 242, 241, 241, 245, 251, 250, 247, 246, 244, 242, 241, 239, 228, 221, + 218, 212, 208, 216, 208, 181, 172, 170, 175, 184, 195, 200, 200, 196, 193, 197, + 204, 211, 214, 215, 214, 214, 216, 216, 213, 209, 203, 195, 185, 177, 168, 164, + 153, 138, 120, 102, 81, 58, 44, 34, 29, 29, 25, 16, 18, 26, 8, 19, + 32, 53, 90, 108, 77, 25, 13, 10, 8, 9, 10, 94, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 59, 87, 120, 141, 149, 152, 156, 158, 155, 155, + 158, 163, 168, 174, 180, 185, 199, 192, 189, 191, 190, 186, 182, 180, 176, 183, + 182, 176, 182, 196, 204, 200, 204, 206, 211, 218, 225, 235, 242, 243, 240, 236, + 235, 235, 239, 244, 247, 248, 243, 239, 239, 242, 241, 240, 241, 245, 254, 253, + 252, 250, 247, 245, 242, 237, 232, 222, 223, 228, 216, 195, 182, 182, 172, 189, + 206, 207, 197, 191, 195, 202, 210, 214, 219, 222, 220, 215, 211, 209, 214, 213, + 212, 213, 212, 209, 207, 201, 188, 185, 177, 166, 156, 141, 116, 93, 58, 44, + 37, 36, 36, 27, 18, 14, 15, 23, 17, 11, 37, 80, 93, 77, 25, 27, + 18, 5, 7, 8, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 22, 77, 108, + 138, 148, 153, 156, 157, 155, 159, 161, 164, 167, 172, 177, 179, 179, 187, 176, + 168, 168, 167, 162, 158, 159, 160, 163, 169, 176, 181, 184, 194, 204, 199, 204, + 210, 219, 227, 235, 241, 243, 244, 238, 236, 236, 240, 243, 246, 249, 242, 239, + 238, 241, 242, 239, 240, 246, 254, 255, 255, 255, 251, 245, 241, 236, 227, 224, + 221, 215, 198, 175, 172, 187, 198, 192, 186, 187, 193, 203, 211, 215, 217, 220, + 226, 226, 225, 223, 222, 221, 215, 212, 211, 209, 207, 204, 201, 197, 193, 189, + 183, 176, 173, 163, 144, 123, 94, 71, 48, 39, 36, 31, 22, 15, 21, 7, + 10, 30, 36, 37, 66, 105, 91, 89, 56, 15, 9, 15, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 44, 83, 115, 141, 149, 154, 162, 163, 156, 157, 164, + 170, 175, 180, 184, 185, 181, 159, 148, 143, 145, 147, 144, 145, 151, 157, 155, + 163, 175, 178, 178, 186, 200, 203, 206, 213, 220, 228, 234, 239, 242, 250, 246, + 242, 239, 240, 240, 241, 239, 239, 236, 235, 237, 238, 235, 235, 241, 248, 252, + 254, 253, 251, 245, 238, 232, 222, 228, 213, 184, 179, 183, 188, 198, 196, 187, + 180, 186, 200, 216, 220, 220, 224, 224, 227, 228, 228, 228, 227, 225, 214, 208, + 204, 200, 197, 194, 190, 187, 191, 188, 182, 178, 176, 173, 159, 145, 134, 108, + 73, 47, 32, 27, 24, 22, 16, 8, 14, 30, 29, 23, 38, 65, 87, 101, + 69, 19, 12, 15, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 85, 115, + 139, 145, 153, 166, 168, 157, 157, 164, 170, 170, 169, 168, 162, 154, 133, 128, + 130, 143, 149, 151, 159, 170, 148, 148, 150, 153, 163, 172, 179, 181, 208, 211, + 214, 217, 223, 229, 237, 242, 255, 255, 250, 246, 245, 242, 238, 235, 237, 233, + 231, 232, 232, 229, 229, 232, 234, 237, 240, 242, 242, 236, 229, 223, 214, 213, + 185, 166, 183, 196, 193, 195, 181, 188, 195, 201, 206, 212, 215, 219, 230, 228, + 227, 227, 228, 223, 217, 210, 211, 205, 201, 196, 195, 193, 194, 190, 183, 182, + 180, 177, 178, 179, 170, 161, 153, 138, 113, 76, 45, 28, 25, 26, 16, 20, + 18, 8, 11, 25, 31, 25, 70, 106, 91, 49, 44, 45, 32, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 181, 30, 102, 129, 146, 147, 153, 166, 164, 149, 161, 166, + 165, 155, 141, 129, 112, 97, 95, 95, 106, 125, 137, 141, 154, 169, 160, 163, + 158, 154, 171, 195, 200, 189, 214, 214, 213, 214, 218, 224, 234, 242, 253, 254, + 250, 246, 243, 239, 237, 231, 228, 224, 221, 221, 221, 217, 217, 221, 215, 219, + 223, 227, 225, 221, 213, 209, 205, 182, 150, 161, 196, 196, 176, 180, 188, 189, + 190, 194, 202, 211, 218, 224, 228, 226, 225, 225, 227, 222, 213, 202, 193, 187, + 181, 177, 174, 173, 171, 170, 171, 173, 173, 172, 176, 178, 173, 168, 153, 157, + 145, 109, 66, 37, 26, 27, 22, 12, 10, 17, 24, 24, 29, 35, 38, 79, + 64, 19, 17, 20, 10, 11, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, 48, 111, 127, + 144, 152, 153, 155, 159, 160, 154, 143, 135, 143, 148, 118, 79, 64, 104, 132, + 146, 136, 134, 147, 155, 150, 155, 158, 161, 168, 178, 189, 200, 206, 203, 221, + 227, 218, 216, 225, 235, 237, 241, 250, 247, 253, 222, 224, 217, 222, 201, 203, + 204, 201, 202, 203, 198, 190, 200, 194, 191, 198, 205, 207, 204, 201, 184, 123, + 155, 195, 189, 183, 176, 182, 188, 186, 189, 202, 209, 207, 209, 217, 218, 219, + 222, 218, 207, 197, 193, 189, 185, 174, 161, 159, 164, 156, 149, 157, 142, 157, + 165, 159, 161, 170, 173, 170, 178, 169, 158, 136, 98, 54, 32, 31, 31, 26, + 21, 16, 19, 23, 24, 21, 29, 62, 107, 39, 9, 10, 15, 19, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 28, 77, 102, 137, 161, 158, 150, 152, 157, 154, 131, 144, + 137, 111, 84, 62, 59, 71, 73, 89, 97, 91, 91, 101, 103, 99, 129, 135, + 141, 148, 159, 176, 197, 210, 232, 215, 209, 217, 226, 225, 229, 240, 237, 238, + 236, 214, 236, 220, 208, 191, 212, 204, 189, 170, 163, 159, 145, 129, 131, 145, + 156, 162, 162, 164, 168, 172, 105, 122, 183, 189, 163, 169, 173, 178, 182, 190, + 200, 209, 208, 205, 207, 211, 223, 210, 205, 204, 198, 196, 190, 178, 157, 167, + 166, 153, 151, 152, 150, 149, 139, 137, 132, 132, 143, 158, 168, 169, 181, 177, + 169, 153, 124, 83, 49, 30, 32, 29, 26, 23, 22, 21, 22, 23, 29, 56, + 110, 70, 32, 36, 42, 54, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 43, 73, 122, 131, + 139, 145, 153, 152, 138, 122, 121, 100, 65, 53, 89, 124, 128, 118, 140, 144, + 149, 148, 151, 155, 156, 155, 147, 150, 152, 149, 145, 147, 158, 168, 177, 191, + 215, 235, 232, 219, 224, 238, 222, 221, 217, 197, 212, 182, 176, 186, 190, 204, + 211, 200, 187, 166, 129, 97, 125, 132, 121, 92, 66, 56, 58, 63, 85, 127, + 172, 165, 158, 177, 177, 173, 182, 199, 213, 214, 208, 204, 205, 206, 209, 189, + 188, 188, 177, 182, 186, 169, 166, 172, 167, 152, 144, 143, 140, 133, 133, 128, + 127, 131, 135, 141, 151, 161, 182, 181, 173, 160, 141, 111, 68, 34, 30, 30, + 31, 29, 24, 19, 21, 25, 25, 37, 94, 86, 26, 22, 23, 47, 23, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 31, 54, 85, 114, 132, 150, 153, 127, 99, 101, 118, 93, 119, + 127, 114, 102, 98, 104, 119, 116, 115, 121, 128, 132, 135, 140, 147, 160, 167, + 171, 173, 170, 166, 166, 167, 146, 152, 160, 174, 200, 224, 223, 202, 224, 206, + 187, 198, 160, 141, 140, 173, 255, 255, 255, 255, 255, 239, 157, 84, 133, 112, + 87, 98, 145, 183, 177, 149, 122, 135, 139, 142, 164, 178, 177, 190, 194, 209, + 218, 212, 205, 204, 203, 197, 190, 179, 187, 184, 164, 168, 178, 165, 169, 153, + 147, 153, 155, 156, 156, 155, 149, 141, 134, 126, 113, 112, 139, 175, 181, 183, + 175, 159, 147, 129, 93, 52, 32, 31, 34, 32, 26, 19, 20, 29, 36, 37, + 94, 106, 26, 13, 6, 34, 26, 96, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 54, 88, 127, 119, + 103, 97, 107, 127, 140, 144, 150, 123, 84, 71, 85, 93, 99, 109, 127, 130, + 141, 151, 156, 160, 171, 187, 190, 191, 194, 198, 202, 201, 196, 191, 183, 173, + 151, 135, 146, 178, 201, 205, 189, 182, 170, 152, 101, 137, 144, 111, 191, 234, + 255, 234, 187, 151, 128, 118, 133, 149, 150, 133, 115, 104, 98, 94, 129, 142, + 132, 138, 158, 158, 172, 204, 207, 212, 210, 201, 198, 199, 195, 184, 185, 178, + 179, 170, 150, 149, 147, 132, 103, 94, 100, 105, 104, 113, 123, 115, 124, 127, + 135, 140, 128, 111, 121, 146, 171, 182, 182, 169, 160, 148, 117, 83, 42, 37, + 34, 33, 27, 19, 21, 30, 31, 32, 92, 105, 27, 15, 9, 36, 23, 13, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 32, 54, 97, 69, 119, 144, 127, 117, 132, 129, 110, 73, 75, + 78, 97, 117, 118, 121, 138, 137, 144, 155, 165, 169, 175, 186, 199, 220, 215, + 207, 206, 206, 206, 201, 195, 198, 198, 197, 181, 147, 124, 139, 165, 144, 86, + 114, 140, 124, 87, 120, 135, 155, 165, 168, 164, 162, 163, 157, 150, 151, 145, + 138, 137, 139, 137, 128, 120, 132, 153, 139, 138, 159, 168, 184, 199, 212, 207, + 200, 193, 194, 194, 184, 172, 178, 173, 154, 133, 122, 112, 96, 83, 73, 80, + 99, 97, 87, 107, 132, 125, 112, 108, 115, 132, 136, 123, 113, 113, 148, 167, + 179, 175, 167, 156, 131, 106, 64, 48, 35, 32, 28, 22, 20, 29, 23, 35, + 90, 82, 23, 16, 10, 28, 19, 10, 90, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 79, 128, 146, 139, + 105, 73, 78, 104, 97, 69, 93, 112, 119, 122, 129, 132, 145, 166, 173, 180, + 186, 190, 194, 200, 206, 209, 208, 206, 201, 201, 204, 206, 205, 201, 194, 181, + 182, 192, 184, 145, 101, 75, 64, 109, 137, 95, 111, 139, 164, 142, 159, 166, + 173, 176, 178, 176, 180, 180, 164, 154, 148, 141, 129, 123, 134, 154, 174, 176, + 138, 137, 161, 183, 206, 201, 204, 199, 194, 199, 201, 191, 176, 165, 167, 179, + 150, 111, 101, 87, 75, 86, 82, 54, 63, 87, 88, 107, 146, 163, 163, 140, + 114, 105, 109, 112, 116, 121, 129, 146, 161, 164, 162, 153, 137, 121, 92, 63, + 38, 31, 29, 23, 20, 25, 33, 58, 106, 64, 25, 23, 18, 23, 15, 11, + 10, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 187, 106, 125, 107, 90, 69, 57, 71, 89, 92, 81, 76, 97, 130, + 147, 147, 156, 168, 179, 188, 204, 209, 209, 208, 212, 218, 217, 211, 209, 211, + 212, 211, 207, 200, 195, 192, 201, 199, 192, 188, 189, 176, 135, 91, 108, 134, + 107, 122, 158, 177, 154, 185, 185, 180, 183, 191, 195, 191, 193, 194, 183, 164, + 155, 151, 136, 118, 119, 134, 215, 190, 137, 133, 148, 166, 208, 221, 197, 193, + 197, 209, 208, 191, 173, 163, 164, 200, 175, 123, 104, 88, 95, 139, 168, 71, + 46, 94, 97, 88, 123, 164, 181, 172, 156, 142, 127, 113, 102, 98, 129, 138, + 147, 153, 153, 149, 142, 135, 111, 74, 41, 31, 32, 26, 21, 23, 26, 62, + 105, 41, 16, 19, 17, 12, 11, 9, 10, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 118, 88, 61, 46, 38, + 45, 68, 77, 70, 73, 86, 115, 130, 147, 163, 177, 192, 199, 201, 216, 217, + 217, 216, 215, 213, 212, 213, 218, 213, 205, 196, 192, 191, 194, 196, 186, 190, + 188, 182, 180, 175, 155, 134, 103, 137, 119, 133, 170, 177, 190, 188, 190, 192, + 193, 195, 195, 194, 194, 190, 183, 174, 163, 148, 132, 118, 104, 94, 192, 222, + 138, 120, 116, 175, 187, 178, 187, 202, 205, 201, 193, 180, 188, 215, 229, 232, + 187, 125, 106, 108, 106, 108, 117, 74, 58, 88, 114, 116, 135, 168, 177, 168, + 160, 153, 145, 128, 112, 102, 102, 112, 126, 141, 149, 150, 145, 138, 130, 94, + 58, 40, 31, 26, 26, 34, 37, 102, 85, 22, 15, 21, 10, 9, 9, 12, + 12, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 134, 98, 56, 29, 44, 41, 50, 68, 79, 84, 100, 117, 131, 147, + 166, 182, 196, 208, 216, 217, 213, 214, 216, 217, 217, 216, 215, 214, 209, 210, + 210, 207, 200, 197, 192, 191, 199, 194, 184, 172, 167, 166, 161, 154, 102, 109, + 141, 163, 175, 187, 196, 204, 200, 201, 199, 197, 197, 196, 195, 194, 190, 181, + 171, 160, 146, 130, 115, 103, 134, 240, 178, 117, 116, 111, 144, 168, 184, 193, + 185, 182, 188, 196, 211, 233, 236, 239, 205, 156, 125, 116, 107, 101, 68, 77, + 100, 120, 119, 118, 143, 179, 178, 169, 160, 152, 143, 128, 115, 110, 113, 119, + 127, 137, 142, 144, 142, 140, 133, 120, 87, 44, 27, 33, 34, 24, 84, 92, + 52, 12, 19, 22, 9, 2, 3, 7, 9, 7, 90, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 34, 30, 35, 42, 44, + 52, 64, 80, 99, 127, 148, 161, 176, 192, 201, 207, 211, 215, 215, 211, 212, + 215, 217, 219, 218, 215, 216, 211, 212, 214, 213, 207, 203, 198, 197, 192, 189, + 187, 182, 171, 162, 160, 160, 120, 92, 146, 176, 176, 195, 197, 209, 206, 206, + 204, 202, 202, 201, 200, 199, 191, 185, 178, 168, 155, 139, 122, 111, 80, 220, + 216, 126, 145, 106, 124, 162, 168, 181, 180, 183, 199, 211, 215, 220, 233, 232, + 227, 196, 159, 140, 131, 120, 121, 132, 137, 131, 131, 147, 169, 185, 168, 160, + 153, 146, 138, 128, 124, 125, 143, 142, 141, 140, 138, 137, 135, 134, 146, 126, + 102, 77, 49, 32, 44, 66, 104, 66, 25, 13, 22, 18, 9, 3, 1, 5, + 9, 8, 11, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 183, 26, 27, 33, 40, 43, 44, 47, 58, 82, 114, 147, 166, 181, 193, + 203, 204, 205, 205, 208, 209, 213, 215, 217, 219, 219, 215, 213, 211, 211, 209, + 205, 200, 198, 199, 203, 206, 205, 202, 202, 196, 178, 156, 150, 153, 148, 111, + 132, 160, 178, 197, 197, 204, 209, 210, 208, 208, 206, 205, 204, 202, 190, 185, + 180, 172, 160, 145, 128, 115, 120, 86, 236, 198, 147, 135, 111, 138, 153, 177, + 185, 186, 197, 204, 199, 195, 209, 211, 226, 222, 188, 173, 171, 160, 172, 172, + 168, 165, 174, 182, 171, 154, 155, 151, 149, 147, 142, 138, 141, 144, 165, 160, + 155, 148, 144, 140, 138, 136, 128, 126, 130, 117, 71, 38, 67, 124, 76, 36, + 21, 27, 18, 10, 11, 8, 5, 8, 9, 8, 12, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 36, 40, 40, 33, 29, 52, 46, + 47, 63, 98, 137, 167, 178, 183, 192, 199, 199, 199, 204, 209, 211, 213, 213, + 212, 211, 209, 205, 202, 200, 195, 193, 187, 183, 183, 187, 196, 201, 230, 223, + 214, 202, 180, 159, 154, 160, 157, 150, 127, 149, 186, 190, 197, 200, 208, 210, + 209, 209, 209, 206, 205, 201, 190, 185, 180, 174, 165, 153, 139, 128, 120, 113, + 135, 227, 221, 121, 120, 120, 147, 173, 181, 174, 177, 183, 188, 197, 193, 201, + 228, 236, 211, 199, 201, 198, 188, 187, 184, 180, 176, 175, 174, 172, 165, 165, + 164, 165, 161, 156, 157, 160, 159, 158, 157, 153, 151, 149, 148, 146, 144, 139, + 124, 111, 110, 110, 100, 81, 54, 27, 27, 32, 14, 10, 18, 11, 9, 8, + 7, 5, 10, 17, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 25, 22, 24, 35, 50, 63, 52, 53, 83, 126, 163, 183, 189, 195, 197, + 197, 194, 195, 198, 202, 201, 202, 200, 198, 196, 193, 189, 186, 185, 177, 179, + 177, 177, 177, 180, 185, 190, 208, 211, 212, 210, 198, 182, 172, 166, 153, 167, + 133, 153, 190, 180, 192, 204, 208, 211, 213, 217, 215, 212, 208, 204, 190, 184, + 177, 172, 164, 156, 145, 136, 121, 118, 121, 144, 224, 244, 140, 158, 139, 165, + 176, 174, 177, 178, 186, 201, 207, 224, 249, 254, 233, 218, 212, 210, 211, 202, + 188, 179, 176, 178, 190, 204, 193, 190, 187, 187, 182, 172, 167, 167, 158, 156, + 155, 155, 151, 148, 145, 143, 160, 143, 125, 122, 129, 122, 91, 56, 69, 46, + 36, 29, 17, 22, 27, 9, 10, 9, 7, 5, 11, 19, 98, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 23, 22, 26, 50, 78, 64, 52, + 60, 101, 150, 178, 191, 195, 200, 199, 194, 190, 188, 191, 188, 182, 184, 184, + 181, 178, 176, 176, 176, 178, 170, 171, 170, 171, 172, 174, 176, 180, 181, 191, + 202, 208, 205, 194, 174, 153, 161, 139, 129, 154, 181, 180, 191, 210, 216, 222, + 227, 231, 230, 227, 222, 216, 205, 195, 183, 173, 162, 153, 144, 137, 140, 95, + 124, 130, 131, 237, 248, 183, 167, 174, 173, 174, 180, 177, 181, 196, 222, 252, + 255, 255, 249, 224, 200, 195, 199, 200, 197, 200, 204, 204, 196, 188, 204, 197, + 192, 192, 189, 179, 172, 169, 166, 164, 162, 157, 152, 146, 144, 139, 133, 145, + 152, 139, 100, 73, 86, 115, 96, 71, 51, 34, 24, 28, 26, 12, 13, 13, + 11, 12, 19, 23, 19, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 24, 23, 27, 48, 75, 60, 47, 61, 112, 159, 182, 190, 196, 191, 187, + 185, 182, 186, 188, 183, 175, 173, 172, 169, 167, 167, 169, 172, 175, 167, 165, + 159, 157, 158, 162, 167, 173, 190, 196, 194, 185, 183, 178, 160, 134, 180, 102, + 113, 147, 169, 189, 193, 212, 226, 233, 240, 244, 245, 240, 234, 228, 226, 214, + 198, 182, 168, 156, 146, 140, 137, 130, 122, 120, 95, 116, 203, 248, 218, 200, + 170, 160, 167, 170, 176, 196, 219, 255, 255, 255, 248, 217, 179, 171, 185, 195, + 192, 184, 185, 197, 203, 199, 196, 187, 181, 183, 184, 181, 175, 173, 167, 166, + 163, 161, 159, 155, 153, 152, 144, 142, 116, 84, 88, 121, 132, 115, 106, 88, + 66, 46, 32, 24, 21, 19, 18, 19, 20, 22, 28, 30, 22, 92, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 178, 23, 23, 30, 43, 55, 37, 47, + 97, 134, 158, 185, 191, 196, 184, 187, 185, 175, 168, 168, 167, 165, 170, 158, + 159, 175, 187, 184, 174, 167, 152, 151, 146, 142, 140, 143, 154, 163, 174, 178, + 195, 192, 174, 183, 183, 145, 175, 108, 116, 149, 176, 198, 200, 215, 236, 240, + 245, 248, 250, 247, 244, 240, 237, 229, 219, 209, 195, 178, 161, 146, 134, 129, + 125, 122, 117, 119, 132, 144, 211, 239, 220, 186, 193, 197, 192, 203, 231, 255, + 255, 252, 214, 181, 166, 168, 177, 179, 175, 174, 176, 179, 180, 182, 182, 179, + 176, 178, 179, 178, 170, 164, 162, 164, 165, 163, 155, 146, 140, 135, 90, 97, + 112, 127, 134, 133, 125, 117, 110, 101, 91, 77, 62, 49, 37, 29, 32, 22, + 19, 29, 38, 35, 24, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 27, 26, 25, 28, 34, 41, 48, 61, 114, 148, 169, 189, 196, 199, 193, 180, + 170, 166, 163, 158, 154, 153, 158, 166, 181, 175, 154, 138, 131, 120, 87, 85, + 90, 110, 141, 166, 172, 169, 170, 179, 180, 180, 182, 182, 175, 172, 186, 128, + 130, 146, 164, 191, 207, 232, 240, 244, 249, 253, 254, 253, 251, 247, 240, 234, + 225, 215, 204, 189, 172, 157, 137, 130, 128, 129, 128, 127, 131, 137, 104, 164, + 206, 218, 224, 212, 216, 250, 253, 240, 219, 201, 193, 186, 174, 162, 169, 171, + 169, 168, 170, 173, 175, 174, 192, 185, 175, 170, 169, 168, 163, 159, 166, 164, + 156, 143, 125, 107, 93, 86, 118, 121, 127, 133, 136, 137, 132, 128, 128, 125, + 123, 115, 100, 82, 63, 50, 34, 29, 31, 41, 48, 40, 22, 9, 93, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 28, 30, 29, 29, 28, 30, 46, 63, + 123, 160, 176, 190, 194, 199, 195, 176, 163, 160, 157, 151, 156, 165, 169, 164, + 161, 135, 95, 84, 78, 55, 94, 98, 112, 143, 188, 220, 222, 211, 202, 224, + 216, 204, 198, 167, 151, 176, 148, 125, 141, 158, 174, 199, 216, 235, 244, 248, + 252, 255, 255, 255, 255, 254, 245, 241, 234, 228, 219, 206, 189, 173, 154, 140, + 132, 129, 131, 132, 135, 136, 119, 112, 116, 162, 226, 244, 242, 255, 255, 255, + 240, 214, 192, 179, 174, 173, 193, 191, 187, 182, 178, 176, 172, 169, 173, 174, + 178, 181, 184, 182, 175, 169, 155, 135, 105, 82, 80, 99, 129, 151, 153, 151, + 147, 145, 146, 147, 147, 145, 150, 149, 150, 144, 132, 114, 91, 76, 49, 42, + 41, 48, 48, 36, 19, 6, 10, 89, 255, 255, 255, 255, 255, 255, 255, 255, + 28, 30, 31, 32, 30, 30, 35, 57, 125, 169, 186, 195, 194, 199, 180, 170, + 160, 152, 150, 154, 167, 178, 161, 137, 122, 98, 69, 78, 102, 101, 80, 85, + 94, 113, 153, 197, 220, 222, 220, 216, 193, 177, 178, 176, 179, 201, 122, 126, + 150, 170, 191, 211, 225, 235, 249, 251, 253, 255, 255, 255, 255, 255, 250, 247, + 243, 239, 232, 220, 205, 194, 180, 161, 142, 131, 128, 131, 140, 147, 132, 135, + 137, 144, 155, 165, 204, 255, 255, 234, 205, 185, 185, 187, 182, 172, 185, 185, + 183, 182, 182, 184, 183, 180, 183, 181, 178, 170, 157, 138, 118, 105, 89, 103, + 124, 144, 157, 165, 168, 169, 170, 166, 162, 159, 159, 161, 162, 160, 157, 151, + 145, 138, 129, 115, 99, 88, 73, 60, 48, 41, 34, 24, 14, 8, 7, 6, + 255, 255, 255, 255, 255, 255, 255, 255, 25, 26, 26, 28, 29, 31, 34, 56, + 127, 178, 198, 204, 197, 200, 165, 157, 148, 144, 152, 161, 158, 150, 123, 107, + 107, 103, 82, 98, 153, 193, 132, 127, 112, 109, 143, 196, 231, 238, 234, 201, + 177, 165, 160, 167, 157, 124, 151, 159, 162, 173, 194, 217, 238, 248, 252, 252, + 253, 252, 252, 251, 251, 253, 253, 251, 248, 246, 242, 233, 219, 210, 200, 182, + 160, 143, 132, 130, 139, 149, 161, 151, 142, 148, 167, 175, 171, 170, 124, 162, + 199, 205, 184, 160, 148, 144, 146, 144, 142, 142, 142, 143, 140, 140, 143, 128, + 110, 99, 105, 125, 150, 167, 192, 192, 187, 181, 173, 168, 167, 167, 179, 175, + 176, 173, 173, 171, 167, 163, 152, 143, 134, 124, 119, 109, 98, 88, 81, 66, + 49, 38, 26, 15, 10, 9, 10, 12, 96, 255, 255, 255, 255, 255, 255, 255, + 25, 21, 20, 22, 26, 32, 38, 52, 118, 171, 195, 201, 190, 189, 164, 149, + 139, 145, 160, 160, 138, 114, 131, 111, 100, 99, 92, 86, 108, 144, 139, 138, + 130, 136, 176, 226, 242, 231, 206, 187, 186, 180, 159, 165, 162, 129, 163, 176, + 165, 177, 207, 227, 246, 254, 255, 255, 254, 252, 251, 250, 251, 253, 255, 254, + 251, 250, 248, 242, 232, 224, 212, 200, 185, 169, 153, 139, 136, 140, 149, 159, + 166, 165, 168, 176, 177, 170, 182, 170, 156, 155, 166, 172, 161, 144, 161, 157, + 155, 155, 155, 157, 156, 156, 149, 160, 176, 190, 197, 192, 183, 177, 185, 189, + 193, 197, 198, 200, 204, 205, 186, 184, 186, 183, 183, 176, 171, 162, 155, 145, + 139, 135, 129, 120, 108, 96, 81, 68, 55, 43, 30, 16, 11, 9, 9, 13, + 18, 17, 255, 255, 255, 255, 255, 255, 26, 22, 19, 22, 31, 40, 39, 42, + 98, 151, 181, 190, 179, 177, 166, 143, 136, 150, 152, 132, 122, 125, 168, 147, + 105, 87, 94, 75, 59, 75, 100, 118, 136, 156, 202, 251, 255, 248, 249, 228, + 202, 173, 146, 136, 143, 151, 143, 167, 159, 188, 225, 234, 249, 255, 255, 255, + 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 252, 246, 240, 229, 218, + 206, 194, 178, 159, 145, 140, 151, 161, 172, 171, 166, 179, 196, 201, 206, 209, + 207, 196, 187, 182, 180, 175, 151, 149, 151, 156, 166, 176, 181, 184, 185, 184, + 180, 177, 179, 181, 188, 194, 205, 209, 207, 205, 200, 196, 196, 196, 197, 194, + 193, 190, 188, 183, 178, 170, 162, 152, 146, 142, 138, 131, 119, 106, 88, 77, + 65, 52, 35, 19, 13, 11, 10, 11, 12, 12, 92, 255, 255, 255, 255, 255, + 27, 25, 23, 28, 39, 50, 38, 35, 84, 135, 170, 185, 176, 174, 157, 134, + 135, 149, 129, 96, 115, 163, 178, 180, 136, 103, 114, 108, 99, 125, 134, 157, + 168, 165, 186, 230, 254, 254, 213, 197, 167, 171, 193, 169, 131, 136, 147, 173, + 162, 190, 227, 232, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 251, 248, 234, 218, 208, 197, 177, 159, 148, 144, 152, + 175, 189, 184, 184, 189, 188, 197, 206, 211, 212, 212, 214, 212, 207, 206, 200, + 194, 190, 190, 192, 192, 193, 197, 201, 204, 206, 207, 207, 208, 210, 211, 216, + 217, 218, 214, 209, 204, 202, 203, 198, 193, 190, 189, 186, 184, 180, 163, 150, + 140, 134, 132, 128, 121, 111, 106, 94, 76, 57, 36, 19, 14, 16, 19, 16, + 13, 14, 17, 255, 255, 255, 255, 255, 31, 19, 15, 24, 35, 40, 38, 26, + 56, 116, 152, 163, 170, 175, 154, 140, 121, 106, 102, 115, 142, 167, 180, 188, + 179, 157, 143, 148, 160, 164, 196, 193, 193, 185, 182, 199, 216, 215, 189, 175, + 158, 155, 159, 157, 147, 139, 165, 167, 175, 198, 226, 244, 254, 255, 255, 255, + 255, 255, 255, 252, 248, 248, 247, 255, 255, 255, 255, 255, 255, 254, 248, 247, + 238, 223, 210, 197, 178, 160, 142, 143, 156, 176, 189, 190, 189, 189, 203, 212, + 218, 216, 219, 226, 227, 223, 225, 224, 224, 223, 222, 220, 219, 217, 220, 222, + 223, 222, 219, 216, 217, 221, 227, 227, 225, 224, 220, 213, 208, 204, 206, 202, + 195, 193, 191, 189, 187, 183, 171, 162, 153, 144, 138, 131, 125, 119, 108, 93, + 72, 52, 38, 28, 19, 12, 13, 23, 35, 34, 19, 97, 255, 255, 255, 255, + 24, 20, 23, 26, 27, 25, 38, 33, 49, 91, 132, 148, 160, 170, 146, 126, + 106, 97, 103, 121, 144, 162, 169, 176, 176, 162, 157, 169, 182, 187, 192, 175, + 178, 189, 185, 182, 197, 210, 143, 168, 189, 177, 148, 133, 150, 176, 179, 179, + 185, 206, 230, 244, 252, 255, 255, 255, 255, 255, 253, 248, 246, 244, 240, 249, + 253, 255, 255, 255, 255, 251, 254, 252, 245, 231, 218, 207, 193, 176, 160, 150, + 149, 157, 167, 176, 186, 196, 203, 211, 219, 222, 229, 237, 239, 234, 236, 235, + 237, 235, 236, 231, 231, 228, 227, 227, 231, 229, 229, 226, 230, 231, 231, 230, + 231, 230, 229, 226, 221, 219, 212, 206, 201, 195, 192, 190, 187, 180, 173, 165, + 157, 149, 142, 136, 129, 123, 113, 99, 79, 58, 40, 29, 21, 17, 18, 25, + 33, 37, 34, 25, 97, 255, 255, 255, 23, 23, 25, 24, 25, 30, 48, 53, + 52, 72, 117, 140, 149, 166, 142, 120, 100, 98, 110, 127, 143, 152, 145, 153, + 157, 153, 156, 170, 181, 183, 196, 199, 197, 178, 167, 180, 176, 149, 255, 217, + 161, 138, 151, 169, 172, 169, 187, 185, 191, 210, 233, 245, 251, 253, 255, 255, + 255, 254, 249, 246, 245, 246, 244, 252, 255, 255, 255, 255, 255, 253, 255, 253, + 245, 232, 220, 213, 203, 192, 178, 164, 153, 150, 155, 167, 181, 195, 209, 216, + 223, 226, 233, 238, 241, 238, 239, 239, 240, 239, 239, 237, 236, 233, 231, 232, + 234, 234, 234, 233, 236, 236, 230, 229, 229, 227, 226, 224, 223, 221, 215, 210, + 204, 198, 195, 191, 188, 182, 178, 171, 164, 157, 150, 141, 132, 124, 119, 109, + 92, 69, 48, 33, 27, 28, 22, 29, 30, 45, 58, 36, 15, 255, 255, 255, + 20, 23, 25, 21, 26, 39, 48, 66, 57, 60, 107, 135, 140, 157, 143, 131, + 120, 119, 126, 133, 143, 151, 156, 161, 166, 168, 174, 184, 189, 187, 194, 180, + 191, 194, 157, 128, 155, 199, 123, 138, 154, 161, 162, 163, 173, 186, 188, 188, + 193, 213, 233, 246, 250, 250, 255, 255, 253, 250, 247, 246, 249, 250, 252, 255, + 255, 255, 255, 255, 255, 254, 250, 246, 236, 223, 213, 208, 204, 199, 185, 176, + 170, 167, 168, 171, 177, 183, 209, 218, 226, 230, 231, 235, 238, 241, 240, 240, + 241, 239, 239, 236, 234, 232, 233, 233, 235, 234, 235, 234, 236, 235, 232, 231, + 229, 225, 221, 219, 217, 215, 216, 212, 206, 202, 197, 194, 190, 184, 180, 175, + 170, 164, 157, 148, 137, 129, 124, 115, 100, 79, 53, 33, 30, 36, 31, 39, + 40, 65, 94, 61, 20, 255, 255, 255, 16, 20, 26, 25, 24, 28, 30, 57, + 51, 51, 96, 130, 133, 143, 139, 143, 146, 146, 141, 137, 146, 157, 167, 173, + 177, 183, 188, 193, 194, 191, 181, 176, 163, 135, 125, 153, 175, 167, 163, 158, + 152, 154, 165, 180, 190, 197, 191, 190, 195, 214, 235, 247, 251, 250, 255, 253, + 252, 252, 250, 248, 252, 253, 252, 255, 255, 255, 255, 255, 255, 251, 247, 241, + 229, 216, 205, 200, 201, 201, 188, 187, 189, 188, 185, 182, 177, 174, 188, 203, + 221, 234, 237, 236, 238, 243, 243, 243, 245, 242, 242, 237, 236, 232, 232, 230, + 232, 232, 236, 235, 238, 236, 238, 236, 233, 229, 224, 221, 217, 216, 214, 211, + 205, 202, 201, 197, 193, 189, 183, 179, 175, 170, 164, 155, 143, 134, 122, 113, + 99, 79, 51, 28, 24, 33, 38, 47, 53, 87, 125, 93, 37, 102, 255, 255, + 32, 17, 20, 26, 25, 22, 20, 43, 46, 52, 93, 129, 137, 141, 135, 147, + 158, 160, 152, 144, 153, 165, 165, 169, 176, 182, 184, 184, 182, 178, 182, 131, + 118, 152, 168, 158, 146, 142, 149, 152, 160, 169, 182, 190, 198, 202, 192, 190, + 198, 215, 237, 250, 254, 253, 254, 255, 255, 255, 255, 253, 252, 252, 253, 255, + 255, 255, 255, 255, 255, 253, 248, 240, 226, 212, 199, 192, 195, 200, 191, 197, + 202, 200, 197, 193, 188, 184, 169, 183, 207, 230, 243, 245, 245, 248, 251, 251, + 252, 250, 249, 245, 243, 240, 232, 230, 232, 234, 239, 241, 243, 241, 238, 236, + 235, 232, 229, 226, 223, 220, 216, 212, 208, 204, 204, 200, 197, 191, 184, 180, + 176, 172, 166, 159, 148, 139, 127, 116, 103, 84, 54, 29, 24, 36, 35, 47, + 55, 86, 129, 115, 58, 20, 255, 255, 71, 50, 37, 32, 32, 30, 28, 43, + 51, 59, 90, 128, 144, 143, 142, 147, 155, 158, 156, 152, 157, 165, 171, 174, + 177, 179, 173, 164, 158, 155, 108, 134, 168, 175, 161, 160, 168, 169, 176, 173, + 175, 186, 201, 209, 204, 198, 194, 190, 196, 214, 235, 246, 251, 249, 252, 254, + 255, 255, 255, 252, 247, 244, 249, 251, 250, 251, 255, 255, 255, 253, 247, 236, + 221, 205, 189, 180, 183, 190, 193, 203, 210, 210, 210, 211, 209, 206, 185, 181, + 188, 209, 232, 244, 248, 251, 255, 255, 255, 255, 255, 254, 254, 251, 244, 240, + 241, 241, 246, 245, 246, 243, 235, 234, 234, 233, 232, 229, 224, 221, 219, 215, + 212, 209, 206, 202, 197, 191, 185, 180, 176, 172, 167, 160, 153, 145, 134, 122, + 107, 90, 60, 35, 29, 40, 37, 46, 54, 79, 122, 133, 86, 24, 255, 255, + 101, 101, 73, 50, 39, 38, 41, 45, 55, 63, 84, 122, 144, 140, 154, 151, + 148, 154, 158, 160, 160, 162, 163, 165, 165, 159, 145, 126, 115, 112, 161, 152, + 160, 174, 165, 156, 169, 182, 183, 188, 195, 202, 208, 210, 207, 204, 193, 187, + 192, 209, 229, 241, 246, 246, 249, 253, 255, 255, 255, 252, 244, 240, 239, 241, + 240, 241, 246, 253, 251, 246, 243, 230, 212, 194, 177, 166, 169, 178, 191, 206, + 218, 223, 224, 226, 225, 220, 219, 193, 176, 188, 215, 236, 247, 252, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 250, 249, 250, 249, 245, 240, 240, 240, + 239, 239, 236, 232, 227, 222, 224, 219, 216, 212, 210, 203, 197, 191, 186, 180, + 175, 171, 167, 162, 155, 148, 135, 121, 108, 89, 61, 34, 27, 39, 50, 55, + 61, 79, 120, 153, 116, 41, 100, 255, 183, 31, 65, 87, 94, 95, 93, 97, + 90, 97, 123, 144, 153, 162, 149, 150, 153, 156, 155, 153, 147, 143, 124, 121, + 117, 119, 126, 138, 152, 162, 185, 183, 179, 176, 177, 182, 188, 194, 199, 193, + 201, 209, 208, 213, 216, 209, 196, 189, 193, 206, 217, 222, 231, 241, 247, 249, + 251, 253, 255, 255, 254, 251, 244, 243, 242, 247, 255, 255, 254, 251, 243, 226, + 210, 179, 138, 115, 122, 132, 160, 189, 219, 233, 241, 246, 241, 232, 224, 221, + 198, 179, 175, 215, 255, 245, 252, 255, 255, 255, 255, 253, 254, 255, 255, 255, + 254, 253, 251, 250, 247, 242, 243, 241, 238, 237, 235, 233, 231, 227, 226, 220, + 215, 211, 210, 205, 199, 193, 188, 184, 179, 174, 170, 164, 158, 151, 139, 125, + 109, 89, 64, 39, 27, 31, 50, 52, 59, 92, 121, 141, 129, 63, 29, 255, + 255, 24, 18, 38, 44, 52, 90, 103, 109, 119, 142, 151, 151, 153, 160, 155, + 148, 140, 131, 122, 111, 106, 120, 126, 135, 147, 158, 167, 172, 177, 183, 186, + 187, 190, 191, 194, 196, 200, 203, 202, 213, 221, 214, 214, 218, 210, 192, 187, + 192, 201, 209, 212, 220, 230, 231, 239, 250, 255, 255, 255, 255, 254, 255, 255, + 255, 255, 255, 255, 255, 254, 244, 229, 191, 136, 91, 72, 77, 90, 118, 152, + 192, 217, 232, 242, 244, 238, 235, 230, 209, 187, 174, 204, 250, 244, 255, 255, + 255, 255, 255, 252, 253, 254, 255, 255, 252, 251, 251, 250, 247, 243, 242, 240, + 239, 237, 236, 234, 230, 227, 225, 219, 212, 208, 206, 204, 202, 196, 188, 184, + 179, 174, 170, 164, 158, 151, 141, 128, 111, 90, 64, 40, 27, 31, 45, 53, + 61, 91, 119, 143, 136, 75, 30, 255, 255, 42, 14, 19, 24, 30, 37, 62, + 80, 92, 105, 108, 104, 104, 97, 97, 100, 108, 119, 129, 137, 140, 150, 157, + 168, 178, 184, 185, 183, 184, 191, 196, 200, 202, 205, 206, 204, 205, 209, 213, + 226, 230, 220, 217, 221, 211, 189, 187, 193, 197, 200, 200, 207, 214, 224, 229, + 237, 246, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 227, + 170, 104, 76, 74, 86, 112, 126, 156, 194, 220, 238, 251, 255, 250, 242, 236, + 219, 198, 171, 188, 239, 250, 255, 255, 255, 255, 255, 252, 252, 253, 253, 251, + 250, 250, 251, 251, 249, 245, 243, 241, 240, 237, 235, 232, 230, 227, 224, 218, + 210, 205, 204, 203, 203, 199, 187, 180, 177, 173, 167, 163, 157, 151, 143, 130, + 113, 89, 63, 39, 27, 30, 37, 51, 61, 87, 115, 144, 147, 90, 32, 255, + 255, 52, 31, 23, 40, 39, 59, 92, 115, 125, 133, 136, 137, 142, 159, 156, + 155, 158, 164, 172, 175, 177, 190, 190, 190, 189, 188, 187, 187, 188, 205, 208, + 209, 210, 210, 210, 211, 211, 220, 222, 230, 232, 223, 223, 223, 211, 187, 191, + 199, 200, 198, 198, 200, 200, 217, 218, 224, 239, 251, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 253, 236, 215, 148, 90, 84, 83, 93, 129, 156, 171, + 190, 210, 230, 248, 252, 249, 246, 238, 224, 206, 171, 174, 231, 255, 255, 255, + 255, 255, 255, 254, 253, 253, 251, 250, 249, 250, 252, 253, 252, 249, 244, 241, + 240, 237, 234, 231, 228, 227, 221, 217, 210, 206, 203, 200, 198, 196, 183, 178, + 173, 169, 166, 161, 155, 148, 142, 131, 113, 87, 61, 39, 27, 26, 33, 46, + 57, 83, 111, 147, 154, 100, 36, 255, 255, 29, 28, 14, 50, 45, 67, 109, + 137, 146, 154, 160, 164, 171, 155, 157, 164, 174, 185, 196, 202, 205, 202, 200, + 197, 194, 194, 198, 203, 206, 217, 217, 213, 211, 212, 214, 220, 223, 231, 228, + 230, 229, 224, 229, 227, 208, 191, 200, 209, 209, 206, 205, 200, 194, 185, 179, + 184, 207, 232, 244, 249, 250, 255, 252, 249, 252, 255, 255, 253, 246, 225, 190, + 130, 105, 121, 118, 123, 164, 188, 184, 185, 198, 225, 250, 255, 255, 248, 239, + 225, 209, 169, 168, 224, 252, 255, 255, 255, 255, 255, 255, 253, 253, 251, 249, + 249, 250, 252, 253, 252, 250, 244, 242, 241, 238, 235, 232, 229, 227, 219, 217, + 214, 210, 203, 197, 193, 188, 179, 175, 171, 167, 163, 160, 154, 148, 141, 129, + 110, 83, 56, 36, 25, 24, 32, 41, 52, 81, 112, 146, 156, 106, 39, 101, + 255, 30, 38, 22, 48, 41, 70, 120, 156, 169, 177, 181, 184, 189, 189, 190, + 192, 198, 201, 202, 200, 198, 201, 202, 204, 204, 208, 211, 214, 217, 218, 215, + 213, 213, 215, 223, 231, 236, 240, 233, 232, 228, 227, 233, 229, 208, 195, 210, + 221, 219, 217, 217, 204, 187, 145, 127, 118, 135, 167, 197, 223, 240, 250, 249, + 246, 249, 253, 252, 244, 237, 215, 175, 138, 144, 167, 162, 162, 192, 211, 199, + 195, 206, 234, 255, 255, 255, 253, 241, 225, 208, 171, 168, 220, 244, 255, 255, + 255, 255, 255, 255, 255, 254, 253, 251, 250, 251, 253, 253, 252, 250, 244, 242, + 241, 237, 234, 230, 228, 225, 216, 216, 215, 210, 203, 194, 189, 185, 180, 175, + 171, 167, 164, 160, 153, 147, 138, 129, 110, 81, 54, 37, 26, 24, 33, 39, + 52, 89, 115, 140, 152, 113, 42, 26, 255, 41, 42, 42, 41, 42, 72, 123, + 163, 175, 182, 186, 188, 194, 191, 192, 194, 197, 202, 204, 204, 203, 207, 210, + 212, 214, 217, 219, 219, 219, 216, 215, 218, 219, 224, 231, 236, 239, 238, 236, + 238, 234, 229, 234, 231, 210, 202, 219, 230, 229, 229, 226, 205, 177, 124, 107, + 102, 117, 141, 164, 189, 211, 232, 237, 240, 243, 240, 236, 233, 231, 218, 186, + 166, 175, 181, 168, 159, 163, 195, 189, 195, 212, 235, 250, 254, 252, 253, 240, + 221, 207, 177, 179, 226, 241, 255, 254, 251, 250, 252, 254, 254, 253, 253, 252, + 250, 250, 250, 250, 249, 245, 244, 241, 240, 237, 235, 231, 226, 224, 216, 215, + 214, 208, 201, 194, 191, 187, 181, 177, 173, 169, 166, 163, 156, 150, 137, 128, + 110, 79, 53, 38, 28, 24, 33, 39, 61, 102, 117, 128, 145, 121, 44, 26, + 255, 31, 15, 40, 29, 48, 73, 120, 156, 162, 170, 177, 181, 188, 191, 192, + 192, 195, 199, 202, 204, 204, 213, 213, 215, 215, 219, 222, 225, 226, 218, 220, + 225, 229, 233, 235, 235, 234, 234, 238, 244, 241, 234, 237, 234, 215, 208, 223, + 234, 233, 233, 231, 204, 170, 118, 125, 147, 173, 184, 179, 176, 182, 212, 226, + 236, 238, 230, 226, 227, 231, 212, 192, 189, 199, 198, 189, 181, 171, 173, 180, + 199, 226, 249, 255, 255, 255, 250, 236, 218, 205, 181, 190, 234, 243, 252, 251, + 247, 248, 251, 254, 254, 253, 254, 252, 250, 249, 249, 248, 246, 242, 246, 242, + 240, 237, 235, 231, 226, 225, 215, 214, 212, 206, 198, 193, 193, 192, 184, 179, + 175, 172, 167, 163, 158, 153, 137, 132, 114, 82, 55, 41, 30, 26, 32, 40, + 70, 114, 121, 124, 144, 131, 48, 30, 255, 24, 35, 43, 47, 49, 65, 105, + 139, 152, 165, 169, 168, 175, 181, 187, 192, 197, 201, 207, 215, 221, 219, 219, + 218, 218, 220, 225, 227, 228, 230, 235, 237, 236, 234, 233, 236, 239, 243, 244, + 245, 246, 244, 241, 238, 233, 205, 216, 229, 236, 240, 234, 212, 186, 143, 161, + 179, 188, 204, 214, 201, 180, 191, 205, 217, 226, 231, 233, 228, 219, 214, 211, + 210, 205, 201, 198, 196, 194, 174, 174, 187, 218, 251, 255, 255, 255, 244, 245, + 223, 187, 182, 215, 239, 243, 255, 253, 245, 245, 251, 255, 255, 255, 255, 253, + 253, 253, 252, 251, 248, 245, 243, 242, 241, 239, 235, 232, 227, 224, 212, 212, + 211, 206, 199, 193, 192, 191, 188, 183, 176, 169, 163, 157, 152, 148, 138, 132, + 117, 93, 67, 44, 30, 27, 31, 42, 63, 117, 153, 112, 143, 139, 62, 29, + 255, 22, 31, 40, 44, 48, 58, 101, 135, 149, 160, 165, 166, 175, 185, 190, + 197, 200, 202, 208, 216, 220, 223, 221, 222, 222, 224, 227, 229, 232, 234, 236, + 237, 236, 235, 236, 238, 240, 245, 245, 246, 246, 246, 245, 244, 241, 214, 218, + 227, 235, 241, 239, 227, 212, 177, 187, 196, 203, 210, 213, 201, 185, 188, 200, + 212, 218, 223, 228, 226, 222, 224, 221, 217, 212, 208, 207, 208, 207, 198, 199, + 210, 227, 246, 255, 255, 254, 242, 238, 214, 190, 193, 218, 235, 237, 252, 251, + 246, 246, 251, 255, 255, 255, 255, 255, 253, 251, 251, 250, 248, 244, 243, 242, + 241, 238, 234, 231, 227, 223, 218, 216, 215, 208, 200, 195, 191, 189, 188, 181, + 174, 166, 159, 153, 149, 146, 134, 128, 115, 93, 68, 46, 31, 27, 28, 42, + 72, 132, 158, 110, 138, 144, 66, 33, 255, 18, 26, 35, 40, 43, 48, 94, + 130, 143, 154, 160, 166, 177, 189, 193, 199, 202, 204, 210, 216, 219, 223, 223, + 225, 226, 227, 230, 233, 236, 237, 236, 234, 234, 237, 240, 242, 242, 247, 247, + 247, 247, 248, 248, 249, 248, 222, 218, 226, 240, 249, 249, 243, 238, 212, 208, + 202, 200, 199, 195, 189, 184, 195, 203, 210, 214, 220, 229, 232, 229, 232, 228, + 224, 219, 216, 217, 220, 222, 220, 222, 228, 230, 234, 238, 242, 243, 235, 225, + 207, 195, 204, 221, 228, 227, 241, 243, 243, 244, 246, 250, 254, 255, 255, 255, + 253, 251, 251, 248, 246, 244, 243, 241, 239, 237, 232, 229, 226, 222, 220, 217, + 216, 210, 203, 197, 193, 189, 184, 178, 170, 163, 156, 150, 145, 141, 130, 124, + 113, 93, 70, 50, 36, 30, 33, 41, 67, 132, 159, 118, 134, 138, 73, 35, + 255, 16, 22, 27, 31, 34, 42, 89, 127, 140, 150, 157, 166, 181, 192, 194, + 200, 204, 207, 212, 217, 220, 223, 224, 228, 229, 230, 233, 236, 239, 241, 238, + 234, 235, 240, 244, 246, 246, 251, 250, 248, 247, 247, 248, 250, 250, 231, 218, + 222, 239, 254, 253, 249, 248, 238, 222, 207, 197, 188, 180, 180, 187, 206, 210, + 213, 213, 219, 228, 235, 235, 236, 234, 231, 228, 226, 227, 229, 230, 227, 230, + 230, 226, 225, 226, 229, 229, 225, 215, 205, 205, 213, 221, 222, 220, 228, 234, + 238, 237, 240, 241, 246, 249, 255, 254, 254, 253, 253, 251, 247, 242, 241, 239, + 237, 233, 229, 225, 223, 220, 215, 213, 212, 209, 205, 200, 194, 192, 183, 177, + 169, 160, 154, 148, 143, 139, 130, 124, 114, 97, 76, 56, 42, 36, 42, 39, + 50, 110, 150, 138, 140, 127, 85, 42, 255, 15, 18, 20, 24, 27, 39, 86, + 123, 138, 149, 157, 169, 185, 190, 192, 198, 203, 209, 214, 219, 220, 223, 226, + 230, 231, 232, 233, 237, 241, 243, 240, 237, 238, 243, 248, 250, 250, 254, 252, + 249, 247, 246, 247, 248, 248, 247, 226, 218, 228, 243, 248, 248, 250, 255, 242, + 230, 223, 211, 197, 194, 202, 217, 219, 218, 215, 219, 228, 235, 236, 242, 241, + 242, 241, 241, 240, 239, 240, 233, 233, 230, 223, 222, 224, 222, 215, 216, 213, + 211, 214, 216, 216, 217, 218, 219, 225, 229, 230, 231, 231, 237, 240, 246, 248, + 252, 255, 255, 253, 247, 241, 240, 238, 235, 230, 227, 223, 221, 218, 212, 210, + 209, 207, 204, 199, 193, 189, 183, 177, 167, 159, 153, 146, 141, 136, 129, 124, + 115, 99, 82, 62, 46, 37, 39, 41, 45, 91, 129, 143, 142, 127, 100, 49, + 255, 16, 15, 17, 18, 22, 40, 86, 121, 136, 150, 159, 172, 186, 189, 190, + 196, 202, 208, 214, 218, 218, 223, 226, 232, 232, 231, 232, 235, 240, 243, 242, + 240, 241, 244, 248, 250, 251, 255, 253, 250, 247, 246, 246, 247, 246, 255, 239, + 221, 216, 222, 234, 244, 250, 255, 253, 254, 253, 243, 226, 218, 218, 229, 231, + 231, 229, 232, 237, 242, 242, 248, 249, 251, 252, 251, 250, 250, 249, 243, 243, + 235, 226, 224, 227, 219, 209, 213, 217, 220, 219, 215, 215, 215, 217, 215, 220, + 223, 222, 224, 223, 228, 231, 237, 240, 245, 250, 253, 252, 246, 239, 239, 235, + 232, 227, 223, 220, 217, 216, 212, 210, 207, 205, 202, 197, 189, 183, 182, 176, + 166, 157, 150, 144, 138, 135, 126, 121, 113, 99, 84, 67, 49, 40, 32, 43, + 56, 95, 115, 133, 130, 131, 106, 50, 255, 16, 15, 15, 18, 22, 43, 85, + 118, 134, 150, 161, 172, 184, 189, 189, 195, 201, 207, 212, 214, 213, 222, 226, + 232, 232, 230, 229, 233, 238, 240, 242, 243, 243, 243, 245, 248, 250, 253, 252, + 250, 249, 248, 248, 249, 248, 255, 252, 237, 218, 213, 222, 235, 244, 245, 251, + 255, 255, 248, 236, 231, 229, 239, 243, 244, 244, 246, 251, 254, 252, 253, 253, + 254, 253, 255, 254, 254, 255, 252, 253, 244, 232, 227, 231, 225, 216, 217, 224, + 226, 220, 214, 217, 218, 215, 216, 218, 218, 217, 218, 220, 223, 224, 229, 231, + 236, 239, 244, 246, 244, 241, 237, 234, 230, 224, 220, 216, 215, 214, 211, 209, + 206, 205, 203, 198, 189, 182, 179, 172, 162, 155, 146, 140, 133, 131, 123, 119, + 113, 103, 89, 74, 55, 45, 36, 42, 65, 117, 124, 128, 109, 121, 102, 44, + 255, 17, 16, 17, 20, 24, 46, 85, 116, 132, 148, 161, 171, 183, 190, 190, + 194, 200, 205, 210, 210, 208, 221, 226, 232, 232, 229, 228, 231, 236, 237, 241, + 244, 244, 242, 242, 245, 248, 251, 251, 250, 250, 250, 251, 252, 251, 250, 255, + 253, 232, 214, 216, 229, 237, 241, 248, 250, 244, 238, 235, 237, 238, 240, 244, + 248, 248, 251, 255, 255, 253, 253, 252, 252, 250, 250, 251, 252, 254, 253, 255, + 249, 232, 227, 230, 230, 223, 220, 228, 228, 217, 214, 221, 220, 212, 218, 217, + 216, 214, 216, 218, 220, 220, 224, 223, 226, 231, 237, 239, 243, 241, 234, 231, + 227, 222, 217, 214, 213, 212, 207, 204, 203, 205, 204, 201, 192, 186, 177, 170, + 160, 152, 143, 136, 130, 126, 122, 119, 115, 107, 96, 81, 64, 53, 48, 37, + 62, 133, 144, 130, 91, 102, 95, 39, 255, 20, 25, 13, 18, 25, 42, 77, + 117, 139, 148, 162, 173, 180, 188, 191, 197, 200, 202, 206, 212, 214, 226, 223, + 224, 226, 231, 235, 236, 236, 239, 241, 242, 244, 246, 247, 249, 249, 249, 250, + 251, 251, 250, 250, 252, 253, 255, 255, 255, 247, 235, 223, 214, 210, 227, 233, + 239, 238, 234, 232, 237, 240, 247, 244, 243, 245, 251, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 254, 255, 254, 254, 247, 240, 236, 238, 236, 234, 230, 224, + 218, 217, 221, 222, 220, 218, 218, 216, 214, 212, 214, 217, 219, 218, 220, 218, + 219, 222, 227, 229, 232, 230, 232, 232, 231, 227, 222, 216, 211, 206, 205, 203, + 200, 199, 196, 194, 192, 191, 178, 169, 158, 147, 138, 131, 126, 121, 121, 122, + 120, 109, 98, 86, 70, 56, 43, 36, 59, 108, 139, 131, 109, 98, 76, 37, + 255, 19, 22, 17, 28, 33, 37, 73, 112, 137, 147, 158, 171, 179, 184, 189, + 196, 200, 203, 208, 214, 217, 225, 224, 225, 228, 234, 238, 240, 241, 240, 241, + 243, 245, 247, 248, 250, 250, 250, 251, 251, 250, 249, 250, 253, 255, 255, 255, + 253, 247, 238, 227, 221, 218, 205, 210, 218, 221, 225, 230, 240, 244, 237, 239, + 244, 248, 253, 255, 255, 255, 254, 254, 255, 255, 255, 255, 255, 255, 254, 254, + 251, 244, 242, 243, 242, 238, 232, 227, 222, 220, 222, 220, 218, 215, 216, 215, + 214, 214, 216, 215, 215, 214, 214, 212, 213, 214, 220, 221, 222, 221, 226, 226, + 227, 226, 223, 218, 215, 212, 205, 203, 201, 199, 197, 195, 189, 185, 182, 170, + 155, 141, 130, 123, 118, 116, 122, 125, 122, 114, 102, 91, 75, 61, 48, 32, + 41, 83, 123, 131, 117, 102, 65, 30, 255, 19, 21, 27, 46, 45, 41, 74, + 115, 137, 147, 156, 166, 175, 182, 187, 195, 199, 203, 209, 216, 220, 223, 222, + 225, 229, 234, 238, 241, 242, 240, 242, 243, 245, 248, 250, 251, 252, 250, 251, + 250, 249, 249, 250, 254, 255, 255, 255, 252, 247, 239, 233, 229, 228, 211, 212, + 214, 217, 222, 231, 240, 243, 232, 238, 247, 252, 253, 254, 254, 253, 254, 254, + 255, 255, 255, 255, 255, 255, 254, 255, 253, 248, 247, 249, 245, 239, 237, 234, + 230, 227, 226, 222, 217, 212, 215, 215, 216, 217, 219, 218, 216, 214, 212, 209, + 209, 210, 214, 215, 215, 214, 218, 218, 221, 221, 222, 219, 218, 216, 207, 203, + 201, 199, 198, 193, 187, 181, 180, 165, 148, 131, 120, 115, 114, 114, 122, 126, + 125, 118, 108, 97, 83, 68, 55, 34, 33, 66, 113, 133, 121, 98, 46, 20, + 255, 177, 26, 44, 69, 59, 56, 84, 120, 141, 149, 156, 164, 174, 182, 187, + 194, 198, 202, 208, 215, 220, 221, 221, 225, 228, 231, 235, 237, 239, 241, 243, + 244, 246, 248, 250, 252, 252, 250, 250, 250, 249, 249, 251, 255, 255, 255, 255, + 251, 245, 239, 235, 234, 234, 228, 223, 220, 221, 226, 234, 241, 243, 237, 243, + 252, 255, 252, 249, 250, 251, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, + 255, 251, 250, 250, 246, 238, 244, 241, 240, 236, 233, 225, 219, 214, 217, 216, + 216, 218, 221, 220, 219, 218, 213, 211, 210, 210, 213, 213, 212, 211, 209, 210, + 212, 212, 213, 212, 212, 210, 207, 203, 197, 195, 193, 192, 187, 180, 170, 159, + 141, 125, 116, 112, 113, 116, 122, 127, 126, 120, 111, 102, 88, 73, 53, 38, + 35, 57, 95, 115, 98, 70, 29, 12, 255, 255, 33, 62, 95, 78, 77, 96, + 121, 140, 151, 155, 163, 172, 183, 188, 194, 197, 199, 205, 213, 217, 222, 224, + 228, 230, 231, 232, 234, 236, 242, 244, 245, 246, 248, 249, 251, 251, 249, 249, + 250, 250, 250, 253, 255, 255, 255, 255, 250, 242, 237, 234, 233, 233, 225, 219, + 213, 217, 226, 236, 242, 245, 241, 247, 253, 254, 250, 249, 251, 253, 254, 254, + 254, 254, 254, 255, 255, 255, 255, 255, 255, 252, 253, 251, 246, 236, 246, 245, + 243, 240, 235, 226, 220, 215, 217, 214, 213, 213, 216, 219, 221, 221, 215, 212, + 211, 210, 213, 212, 210, 209, 205, 206, 206, 206, 206, 204, 204, 203, 205, 200, + 193, 190, 188, 188, 187, 183, 166, 155, 141, 126, 115, 108, 110, 112, 121, 126, + 126, 121, 114, 105, 93, 78, 51, 37, 31, 38, 58, 70, 55, 29, 16, 5, + 255, 255, 34, 71, 115, 103, 103, 107, 119, 135, 147, 154, 160, 170, 181, 187, + 192, 194, 197, 203, 211, 216, 225, 227, 232, 233, 233, 233, 234, 237, 243, 245, + 245, 246, 247, 248, 248, 249, 246, 248, 250, 252, 252, 254, 255, 255, 255, 255, + 247, 239, 234, 231, 230, 228, 222, 218, 216, 217, 225, 233, 237, 239, 239, 244, + 248, 250, 249, 250, 254, 255, 247, 246, 247, 250, 253, 255, 255, 255, 255, 255, + 255, 252, 255, 255, 248, 240, 243, 245, 244, 240, 234, 228, 222, 218, 219, 217, + 213, 212, 214, 217, 219, 219, 215, 211, 210, 210, 211, 211, 210, 208, 209, 208, + 207, 205, 202, 201, 200, 199, 200, 197, 193, 189, 184, 184, 185, 183, 167, 157, + 144, 128, 114, 105, 105, 106, 120, 125, 126, 122, 117, 109, 97, 81, 61, 44, + 30, 22, 26, 30, 23, 10, 10, 1, 255, 255, 180, 71, 131, 132, 136, 128, + 125, 133, 145, 152, 157, 165, 178, 183, 189, 191, 195, 202, 211, 216, 222, 226, + 232, 234, 233, 233, 235, 238, 245, 246, 246, 246, 246, 246, 246, 246, 244, 247, + 251, 254, 255, 255, 255, 255, 255, 254, 244, 236, 232, 230, 227, 224, 226, 223, + 223, 223, 227, 228, 229, 232, 239, 242, 244, 247, 249, 251, 253, 251, 242, 242, + 243, 246, 249, 252, 254, 255, 255, 254, 251, 249, 254, 255, 251, 242, 244, 244, + 245, 242, 237, 231, 228, 226, 227, 224, 221, 220, 220, 219, 218, 217, 217, 213, + 212, 211, 212, 212, 211, 209, 210, 209, 207, 203, 201, 199, 197, 196, 194, 196, + 196, 190, 183, 178, 179, 178, 166, 157, 142, 125, 110, 103, 104, 107, 119, 125, + 127, 123, 119, 113, 101, 84, 70, 48, 31, 21, 18, 15, 14, 11, 8, 0, + 255, 255, 255, 60, 135, 150, 165, 151, 137, 140, 148, 151, 150, 157, 169, 177, + 181, 186, 192, 200, 209, 216, 215, 221, 226, 229, 229, 230, 232, 237, 244, 245, + 245, 244, 244, 244, 244, 244, 242, 245, 250, 254, 255, 255, 255, 255, 255, 248, + 238, 231, 228, 227, 224, 220, 219, 219, 221, 225, 227, 229, 230, 234, 240, 242, + 243, 247, 249, 249, 247, 244, 247, 246, 247, 247, 251, 252, 254, 255, 254, 251, + 246, 245, 251, 255, 252, 243, 247, 248, 249, 246, 242, 238, 236, 235, 235, 234, + 232, 231, 228, 225, 221, 217, 220, 218, 215, 215, 215, 216, 212, 211, 210, 206, + 204, 201, 199, 196, 195, 193, 189, 193, 197, 192, 182, 174, 172, 172, 163, 153, + 140, 123, 111, 105, 108, 113, 120, 126, 128, 125, 122, 117, 105, 90, 73, 48, + 34, 26, 20, 14, 11, 10, 8, 1, 255, 255, 255, 183, 105, 164, 170, 192, + 158, 156, 135, 143, 151, 145, 162, 167, 173, 177, 185, 191, 199, 205, 213, 214, + 219, 224, 227, 231, 233, 237, 232, 237, 242, 243, 241, 240, 241, 243, 243, 244, + 249, 250, 252, 251, 248, 245, 246, 237, 228, 220, 217, 217, 219, 220, 221, 229, + 227, 223, 224, 223, 225, 237, 245, 250, 255, 255, 255, 253, 252, 254, 253, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 252, 249, 235, 238, + 241, 244, 248, 247, 245, 240, 237, 238, 236, 232, 232, 233, 229, 223, 228, 228, + 227, 225, 220, 214, 213, 213, 211, 210, 208, 206, 205, 200, 195, 189, 185, 186, + 192, 196, 186, 171, 164, 165, 156, 149, 140, 127, 109, 99, 104, 114, 119, 125, + 130, 129, 124, 119, 110, 99, 85, 60, 35, 24, 17, 9, 6, 8, 7, 7, + 255, 255, 255, 255, 92, 165, 178, 200, 181, 169, 137, 141, 142, 149, 161, 167, + 172, 177, 183, 191, 197, 204, 209, 211, 216, 221, 225, 227, 231, 233, 233, 237, + 241, 240, 239, 237, 238, 240, 242, 245, 247, 250, 250, 249, 245, 243, 238, 231, + 223, 216, 214, 215, 219, 220, 223, 228, 225, 221, 225, 224, 225, 236, 246, 249, + 252, 255, 255, 255, 253, 251, 250, 249, 250, 251, 252, 253, 255, 255, 253, 255, + 255, 253, 252, 252, 250, 247, 241, 241, 243, 243, 246, 244, 241, 238, 237, 238, + 236, 233, 232, 234, 231, 225, 230, 230, 230, 227, 223, 218, 217, 217, 221, 219, + 216, 214, 209, 202, 192, 186, 184, 184, 190, 195, 187, 172, 160, 156, 148, 145, + 140, 131, 117, 109, 113, 125, 121, 127, 133, 130, 128, 123, 115, 105, 90, 66, + 39, 23, 15, 8, 3, 5, 7, 7, 255, 255, 255, 255, 75, 159, 182, 198, + 195, 174, 133, 138, 130, 150, 161, 167, 173, 178, 183, 190, 195, 201, 208, 212, + 216, 220, 223, 225, 228, 230, 234, 238, 239, 238, 237, 235, 234, 235, 242, 245, + 248, 251, 251, 250, 246, 244, 232, 226, 219, 214, 214, 216, 220, 221, 224, 227, + 223, 220, 227, 227, 226, 234, 249, 248, 248, 253, 255, 255, 253, 248, 246, 245, + 245, 243, 244, 247, 251, 249, 245, 249, 253, 252, 253, 255, 254, 250, 251, 249, + 248, 247, 246, 244, 240, 237, 232, 234, 234, 234, 235, 239, 237, 232, 229, 228, + 229, 226, 223, 220, 220, 220, 225, 224, 222, 219, 214, 206, 195, 187, 185, 185, + 189, 195, 190, 176, 159, 151, 141, 140, 139, 132, 118, 110, 116, 128, 118, 125, + 130, 128, 126, 121, 114, 103, 91, 68, 42, 24, 14, 8, 4, 5, 7, 90, + 255, 255, 255, 255, 188, 134, 181, 189, 195, 170, 132, 142, 121, 143, 156, 164, + 171, 176, 180, 183, 191, 197, 208, 212, 216, 217, 221, 226, 227, 227, 233, 235, + 235, 234, 234, 234, 234, 234, 242, 243, 247, 250, 251, 248, 244, 241, 228, 223, + 218, 214, 214, 216, 219, 220, 220, 225, 221, 222, 232, 234, 229, 233, 248, 246, + 248, 252, 254, 254, 253, 250, 245, 243, 240, 239, 240, 243, 246, 247, 244, 249, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 249, 244, 245, + 243, 241, 240, 243, 240, 234, 229, 229, 228, 226, 223, 220, 219, 220, 220, 220, + 221, 221, 218, 211, 200, 192, 188, 185, 187, 190, 190, 178, 164, 152, 139, 139, + 135, 126, 112, 102, 109, 122, 117, 123, 128, 129, 127, 122, 115, 105, 92, 72, + 46, 25, 14, 8, 4, 4, 7, 255, 255, 255, 255, 255, 255, 94, 178, 187, + 193, 171, 139, 153, 125, 136, 151, 160, 169, 174, 177, 180, 188, 193, 206, 212, + 216, 215, 218, 226, 227, 225, 227, 228, 228, 230, 231, 233, 233, 233, 239, 242, + 247, 249, 249, 245, 241, 237, 226, 220, 217, 214, 215, 215, 218, 217, 213, 222, + 222, 227, 238, 239, 231, 233, 241, 245, 249, 250, 250, 249, 253, 255, 246, 243, + 240, 240, 241, 244, 247, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 244, 242, 235, 227, 230, 231, + 232, 228, 224, 220, 219, 219, 218, 221, 221, 223, 220, 214, 204, 197, 188, 184, + 181, 180, 182, 177, 167, 156, 141, 137, 130, 120, 107, 100, 107, 119, 122, 128, + 133, 134, 133, 129, 122, 111, 93, 76, 50, 27, 13, 8, 5, 4, 7, 255, + 255, 255, 255, 255, 255, 190, 160, 188, 192, 175, 147, 163, 145, 141, 147, 155, + 167, 172, 174, 178, 185, 191, 200, 209, 213, 211, 215, 224, 225, 223, 222, 223, + 222, 225, 228, 232, 233, 233, 237, 239, 244, 246, 244, 240, 234, 229, 222, 218, + 216, 214, 215, 216, 218, 217, 211, 223, 225, 232, 242, 240, 235, 236, 239, 242, + 246, 248, 248, 249, 254, 255, 254, 254, 253, 253, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 248, 247, 248, 247, 251, 253, 254, 253, 253, 255, 255, + 253, 247, 246, 245, 240, 232, 232, 231, 232, 229, 224, 221, 220, 221, 226, 226, + 226, 224, 221, 214, 206, 198, 188, 182, 177, 172, 171, 171, 165, 155, 140, 132, + 125, 117, 109, 106, 111, 120, 120, 127, 132, 131, 131, 129, 122, 112, 94, 79, + 54, 28, 13, 8, 5, 3, 7, 255, 255, 255, 255, 255, 255, 255, 115, 175, + 185, 175, 146, 163, 169, 159, 140, 150, 162, 169, 171, 175, 179, 186, 193, 203, + 207, 205, 209, 219, 223, 219, 220, 219, 217, 221, 226, 230, 230, 230, 235, 238, + 241, 242, 240, 235, 227, 222, 217, 215, 213, 215, 217, 219, 221, 220, 216, 228, + 230, 233, 239, 237, 236, 241, 238, 239, 241, 245, 248, 252, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 246, 238, 238, 237, + 238, 240, 243, 242, 240, 239, 237, 240, 240, 238, 240, 243, 240, 235, 228, 227, + 228, 226, 222, 220, 219, 220, 227, 226, 224, 221, 217, 211, 204, 196, 190, 187, + 181, 172, 168, 168, 164, 154, 137, 128, 122, 119, 115, 112, 111, 112, 113, 122, + 128, 127, 127, 124, 118, 109, 95, 82, 56, 29, 12, 9, 5, 3, 7, 255, + 255, 255, 255, 255, 255, 255, 193, 155, 172, 169, 138, 157, 186, 178, 134, 144, + 157, 164, 167, 168, 174, 181, 187, 198, 202, 199, 206, 217, 220, 216, 220, 219, + 217, 218, 224, 228, 229, 227, 234, 236, 238, 240, 237, 230, 223, 218, 214, 212, + 212, 213, 217, 220, 224, 223, 222, 233, 233, 232, 237, 235, 236, 244, 241, 237, + 238, 242, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 252, 246, 246, 248, 243, 234, 234, 234, 234, 237, 238, 235, 230, 226, 235, 236, + 235, 231, 232, 232, 229, 223, 221, 221, 222, 221, 220, 216, 217, 218, 223, 222, + 220, 218, 214, 209, 202, 195, 195, 193, 187, 175, 169, 167, 162, 154, 134, 126, + 119, 120, 118, 112, 105, 103, 115, 121, 128, 129, 129, 126, 120, 109, 96, 83, + 58, 29, 12, 9, 6, 3, 7, 255, 255, 255, 255, 255, 255, 255, 255, 106, + 169, 173, 147, 158, 187, 194, 175, 144, 134, 154, 168, 165, 168, 182, 182, 190, + 198, 200, 200, 199, 203, 208, 217, 217, 214, 216, 221, 224, 226, 223, 230, 236, + 240, 238, 232, 226, 219, 210, 211, 210, 213, 217, 223, 225, 225, 222, 220, 226, + 233, 235, 235, 236, 241, 245, 232, 238, 250, 255, 255, 255, 255, 255, 255, 254, + 252, 255, 255, 255, 249, 242, 241, 247, 251, 248, 240, 234, 232, 235, 239, 241, + 242, 239, 235, 231, 231, 230, 232, 233, 235, 234, 233, 228, 218, 210, 206, 205, + 201, 196, 204, 221, 229, 227, 221, 224, 221, 211, 202, 198, 195, 189, 188, 185, + 183, 180, 175, 166, 157, 150, 135, 130, 122, 119, 118, 117, 113, 110, 119, 121, + 123, 124, 128, 130, 126, 114, 98, 80, 55, 31, 16, 9, 5, 6, 8, 255, + 255, 255, 255, 255, 255, 255, 255, 190, 132, 168, 145, 148, 184, 195, 189, 157, + 134, 140, 155, 162, 165, 171, 178, 184, 191, 193, 193, 195, 200, 206, 212, 213, + 212, 215, 219, 224, 224, 224, 225, 230, 233, 228, 223, 219, 214, 209, 208, 207, + 208, 212, 218, 222, 223, 224, 231, 235, 238, 239, 237, 236, 241, 244, 246, 249, + 252, 255, 253, 253, 251, 252, 241, 240, 239, 240, 243, 244, 239, 238, 241, 245, + 244, 239, 232, 227, 227, 229, 245, 244, 241, 234, 229, 225, 226, 227, 226, 221, + 221, 223, 217, 207, 202, 202, 188, 186, 190, 198, 211, 223, 233, 238, 244, 238, + 225, 209, 201, 196, 189, 179, 189, 186, 185, 181, 175, 164, 154, 147, 135, 129, + 123, 118, 117, 114, 111, 108, 114, 117, 121, 123, 127, 131, 125, 113, 101, 84, + 58, 34, 17, 9, 5, 5, 8, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 90, 156, 152, 145, 176, 196, 201, 175, 143, 129, 137, 154, 161, 160, 172, 176, + 182, 185, 187, 190, 195, 202, 206, 208, 209, 214, 217, 221, 222, 221, 226, 230, + 229, 223, 218, 217, 215, 212, 206, 206, 207, 211, 217, 223, 226, 229, 233, 236, + 237, 234, 233, 233, 239, 244, 255, 255, 255, 252, 250, 247, 242, 240, 246, 245, + 243, 241, 239, 237, 235, 237, 239, 241, 240, 236, 232, 229, 227, 224, 229, 229, + 229, 225, 223, 220, 221, 222, 220, 214, 213, 214, 205, 195, 193, 198, 191, 184, + 185, 194, 206, 214, 227, 237, 255, 248, 226, 208, 203, 201, 192, 178, 187, 186, + 187, 182, 176, 164, 153, 146, 132, 128, 123, 119, 118, 115, 112, 107, 111, 115, + 119, 123, 128, 130, 125, 114, 104, 87, 61, 36, 19, 10, 4, 4, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 188, 124, 158, 151, 160, 186, 203, 192, + 164, 130, 122, 139, 154, 155, 162, 167, 176, 181, 186, 189, 193, 198, 203, 206, + 208, 210, 215, 216, 217, 217, 223, 226, 226, 220, 215, 214, 213, 209, 206, 207, + 211, 216, 221, 227, 232, 232, 232, 233, 233, 233, 234, 239, 245, 250, 255, 255, + 249, 248, 248, 247, 242, 239, 241, 241, 239, 235, 233, 231, 232, 236, 246, 246, + 244, 241, 236, 231, 224, 220, 218, 222, 226, 231, 232, 232, 230, 228, 226, 226, + 224, 217, 213, 211, 208, 204, 216, 208, 196, 187, 189, 200, 212, 217, 250, 237, + 218, 202, 201, 200, 195, 183, 184, 185, 188, 184, 175, 163, 152, 146, 129, 125, + 119, 118, 120, 118, 114, 111, 116, 118, 119, 119, 126, 128, 126, 116, 104, 87, + 61, 37, 20, 11, 5, 4, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 74, 149, 156, 146, 175, 190, 193, 178, 140, 117, 123, 138, 148, 151, 157, + 168, 178, 186, 188, 191, 193, 202, 204, 207, 207, 209, 210, 211, 212, 214, 219, + 221, 215, 211, 208, 206, 199, 205, 210, 216, 224, 228, 231, 233, 233, 237, 237, + 237, 239, 241, 246, 253, 255, 255, 250, 246, 246, 251, 254, 251, 247, 242, 242, + 243, 241, 240, 241, 245, 248, 249, 245, 239, 233, 230, 229, 228, 227, 248, 249, + 248, 248, 247, 246, 245, 244, 238, 247, 242, 229, 229, 239, 234, 217, 222, 225, + 211, 189, 184, 196, 204, 198, 216, 212, 202, 190, 188, 189, 190, 185, 186, 188, + 189, 185, 173, 160, 148, 142, 126, 123, 118, 118, 121, 121, 119, 117, 121, 120, + 116, 113, 118, 122, 122, 115, 100, 84, 60, 36, 20, 11, 5, 5, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 159, 152, 171, 174, 179, + 175, 149, 122, 112, 123, 137, 142, 147, 159, 171, 179, 184, 186, 189, 199, 202, + 204, 204, 205, 206, 210, 213, 215, 219, 219, 214, 209, 205, 202, 198, 204, 210, + 219, 226, 229, 230, 230, 231, 239, 239, 240, 241, 242, 245, 247, 250, 247, 245, + 244, 246, 251, 253, 251, 247, 246, 244, 244, 241, 241, 241, 242, 243, 231, 228, + 221, 220, 224, 233, 245, 253, 255, 255, 255, 253, 247, 246, 247, 249, 247, 255, + 254, 240, 240, 251, 245, 228, 210, 217, 215, 203, 200, 204, 203, 193, 196, 198, + 195, 187, 182, 184, 189, 188, 194, 195, 193, 184, 170, 155, 142, 137, 128, 124, + 118, 118, 120, 123, 123, 122, 121, 118, 112, 106, 110, 116, 118, 112, 100, 84, + 60, 37, 21, 12, 6, 5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 88, 145, 166, 167, 169, 162, 160, 155, 134, 113, 113, 125, 135, 139, + 147, 157, 168, 177, 182, 186, 195, 197, 198, 198, 200, 204, 211, 217, 220, 224, + 221, 213, 208, 205, 204, 201, 208, 213, 221, 226, 227, 228, 229, 231, 236, 237, + 239, 241, 242, 242, 239, 239, 240, 241, 241, 242, 244, 241, 236, 231, 231, 228, + 227, 226, 229, 230, 229, 225, 226, 228, 232, 234, 237, 243, 251, 255, 255, 255, + 251, 246, 243, 244, 244, 246, 253, 255, 254, 247, 239, 235, 237, 241, 210, 207, + 212, 217, 214, 203, 198, 201, 193, 196, 193, 186, 183, 187, 194, 194, 194, 195, + 194, 183, 169, 153, 143, 137, 134, 128, 120, 118, 119, 123, 124, 124, 119, 117, + 112, 107, 111, 117, 119, 113, 103, 87, 63, 40, 23, 13, 5, 88, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 118, 164, 151, 170, 149, + 145, 155, 148, 124, 112, 121, 132, 134, 139, 146, 157, 168, 175, 182, 189, 193, + 194, 194, 195, 202, 211, 218, 219, 220, 216, 206, 199, 198, 199, 198, 212, 218, + 222, 223, 223, 224, 227, 232, 233, 237, 240, 244, 248, 247, 243, 241, 238, 241, + 241, 239, 234, 225, 217, 210, 220, 218, 219, 227, 238, 245, 248, 244, 250, 255, + 255, 255, 255, 252, 244, 243, 239, 239, 243, 247, 253, 255, 251, 251, 255, 248, + 247, 249, 233, 214, 224, 248, 225, 207, 208, 223, 217, 190, 186, 202, 190, 188, + 184, 178, 178, 187, 193, 195, 189, 189, 190, 181, 168, 154, 146, 144, 137, 130, + 121, 116, 119, 122, 123, 123, 118, 117, 114, 111, 116, 121, 121, 115, 107, 89, + 66, 42, 24, 13, 7, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 73, 123, 159, 155, 155, 153, 168, 172, 134, 110, 128, 125, 135, + 137, 133, 142, 161, 168, 165, 175, 185, 195, 196, 192, 193, 200, 208, 218, 215, + 211, 206, 201, 196, 197, 201, 210, 215, 219, 222, 222, 223, 224, 224, 227, 231, + 234, 234, 236, 238, 239, 241, 237, 234, 228, 229, 227, 224, 227, 233, 240, 255, + 255, 254, 238, 244, 254, 254, 255, 255, 255, 255, 252, 249, 248, 248, 242, 251, + 251, 245, 250, 255, 255, 244, 242, 239, 242, 244, 234, 223, 225, 234, 214, 212, + 212, 213, 207, 198, 194, 193, 180, 177, 175, 174, 179, 183, 187, 188, 186, 185, + 179, 170, 157, 146, 142, 141, 133, 127, 124, 121, 122, 123, 124, 124, 117, 115, + 110, 107, 113, 118, 115, 107, 96, 86, 68, 44, 23, 15, 12, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 85, 128, 145, 143, + 147, 168, 181, 157, 122, 109, 121, 130, 134, 133, 136, 149, 157, 160, 168, 178, + 185, 188, 187, 190, 201, 210, 215, 212, 208, 204, 198, 198, 201, 205, 210, 215, + 221, 223, 222, 222, 223, 226, 233, 229, 221, 213, 214, 219, 226, 233, 233, 231, + 231, 235, 238, 237, 241, 247, 255, 255, 255, 255, 249, 244, 243, 238, 242, 244, + 242, 241, 240, 240, 242, 246, 249, 251, 248, 248, 249, 249, 250, 246, 247, 242, + 243, 240, 228, 213, 214, 221, 209, 203, 200, 202, 202, 197, 189, 185, 173, 170, + 168, 170, 175, 180, 184, 183, 185, 183, 181, 175, 167, 155, 147, 142, 131, 127, + 123, 122, 123, 124, 125, 124, 121, 117, 111, 108, 113, 118, 116, 107, 86, 79, + 61, 38, 18, 10, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 186, 91, 119, 121, 132, 148, 159, 161, 148, 122, 118, 124, + 129, 131, 132, 136, 144, 153, 162, 171, 177, 181, 182, 187, 197, 205, 210, 209, + 206, 201, 199, 201, 206, 210, 209, 216, 223, 224, 222, 220, 224, 228, 227, 218, + 207, 199, 201, 209, 221, 231, 229, 229, 230, 234, 237, 237, 240, 244, 240, 246, + 252, 250, 249, 250, 250, 245, 241, 240, 239, 238, 236, 238, 242, 246, 249, 245, + 243, 246, 245, 240, 246, 255, 254, 246, 243, 238, 225, 209, 205, 211, 204, 195, + 191, 195, 199, 194, 186, 181, 170, 169, 168, 172, 177, 181, 184, 183, 183, 182, + 182, 179, 173, 161, 148, 138, 131, 127, 124, 123, 124, 125, 125, 125, 124, 120, + 113, 108, 110, 115, 115, 107, 86, 78, 62, 40, 20, 12, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 52, 105, 122, + 149, 150, 137, 149, 151, 128, 116, 119, 124, 133, 133, 131, 135, 143, 156, 163, + 170, 174, 179, 183, 190, 195, 209, 209, 206, 198, 196, 201, 207, 211, 209, 215, + 223, 223, 219, 217, 221, 226, 217, 208, 200, 200, 206, 213, 220, 227, 228, 230, + 232, 234, 236, 236, 236, 237, 248, 246, 246, 249, 250, 250, 251, 252, 251, 248, + 248, 245, 242, 240, 243, 245, 242, 245, 244, 242, 239, 243, 255, 255, 255, 247, + 238, 231, 218, 206, 206, 212, 204, 197, 195, 199, 199, 190, 183, 178, 172, 171, + 174, 177, 183, 186, 187, 185, 184, 181, 180, 178, 172, 159, 144, 132, 132, 128, + 126, 125, 126, 126, 126, 125, 126, 121, 113, 107, 109, 113, 113, 103, 86, 78, + 62, 39, 24, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 76, 54, 91, 135, 145, 134, 144, 149, 128, 109, 113, + 121, 132, 137, 134, 133, 136, 146, 152, 162, 170, 177, 181, 186, 187, 206, 207, + 203, 196, 193, 201, 207, 210, 213, 217, 223, 223, 219, 218, 222, 227, 219, 206, + 198, 202, 209, 211, 214, 220, 229, 235, 239, 243, 246, 250, 253, 255, 255, 255, + 250, 250, 251, 251, 255, 255, 251, 249, 248, 246, 242, 239, 235, 233, 237, 253, + 253, 236, 232, 250, 255, 255, 252, 242, 227, 220, 211, 202, 206, 212, 203, 200, + 201, 201, 196, 183, 175, 173, 173, 173, 176, 179, 185, 188, 188, 185, 188, 183, + 179, 175, 167, 156, 140, 129, 132, 130, 128, 128, 129, 129, 127, 126, 125, 120, + 112, 106, 107, 111, 108, 100, 80, 70, 54, 33, 19, 10, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 18, 34, + 63, 79, 87, 101, 104, 93, 86, 99, 115, 128, 133, 135, 135, 134, 134, 139, + 147, 159, 170, 178, 183, 184, 201, 205, 201, 192, 192, 200, 207, 206, 216, 218, + 221, 223, 223, 225, 227, 231, 215, 199, 189, 196, 207, 212, 218, 227, 238, 245, + 246, 247, 250, 255, 255, 255, 238, 232, 230, 235, 244, 250, 255, 255, 255, 252, + 248, 248, 249, 248, 244, 237, 250, 255, 255, 244, 237, 255, 255, 255, 246, 234, + 218, 213, 206, 200, 203, 207, 201, 198, 199, 198, 189, 177, 170, 171, 174, 175, + 176, 181, 184, 187, 187, 186, 192, 188, 182, 175, 165, 153, 139, 131, 135, 131, + 130, 129, 130, 130, 128, 126, 122, 119, 112, 107, 108, 110, 106, 96, 77, 67, + 48, 27, 13, 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 177, 23, 20, 21, 30, 28, 26, 32, 50, 80, + 110, 122, 124, 132, 136, 136, 128, 131, 136, 147, 160, 171, 177, 179, 190, 197, + 198, 190, 191, 201, 208, 206, 214, 214, 215, 219, 226, 231, 234, 234, 215, 196, + 188, 199, 213, 220, 226, 236, 246, 252, 249, 243, 244, 251, 254, 251, 237, 232, + 230, 234, 245, 249, 243, 238, 255, 255, 253, 252, 255, 255, 255, 249, 255, 255, + 255, 252, 245, 253, 255, 252, 238, 226, 215, 213, 210, 204, 203, 205, 199, 192, + 186, 185, 181, 176, 174, 176, 179, 179, 179, 182, 185, 187, 189, 187, 187, 187, + 184, 177, 165, 152, 141, 133, 135, 134, 133, 133, 132, 131, 129, 127, 121, 118, + 112, 108, 110, 111, 105, 95, 79, 66, 45, 25, 12, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, + 18, 23, 32, 16, 15, 33, 22, 65, 104, 114, 116, 125, 136, 139, 131, 129, + 129, 136, 150, 162, 171, 174, 183, 193, 195, 188, 191, 202, 209, 206, 209, 207, + 208, 216, 227, 235, 237, 236, 225, 208, 200, 212, 225, 226, 222, 229, 242, 248, + 244, 238, 239, 249, 254, 250, 221, 220, 222, 234, 252, 255, 246, 230, 255, 255, + 249, 246, 253, 255, 255, 250, 255, 255, 255, 252, 244, 244, 244, 245, 233, 221, + 214, 217, 218, 211, 207, 208, 200, 187, 175, 174, 179, 180, 181, 183, 184, 184, + 184, 185, 190, 191, 191, 191, 181, 183, 186, 179, 165, 150, 140, 134, 137, 134, + 133, 134, 134, 132, 129, 127, 120, 118, 113, 110, 112, 113, 106, 94, 78, 65, + 42, 21, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 174, 15, 17, 18, 20, 22, 22, 29, 38, + 79, 113, 115, 122, 138, 136, 138, 135, 127, 120, 129, 144, 157, 162, 173, 186, + 193, 187, 188, 201, 210, 209, 206, 210, 211, 208, 217, 232, 234, 225, 215, 216, + 209, 201, 205, 217, 218, 215, 255, 245, 234, 233, 238, 242, 244, 242, 222, 220, + 243, 253, 250, 255, 255, 228, 255, 255, 249, 242, 246, 253, 255, 254, 255, 255, + 255, 255, 250, 245, 248, 250, 236, 228, 220, 215, 213, 212, 206, 201, 178, 173, + 171, 174, 179, 182, 181, 180, 192, 190, 189, 189, 192, 193, 193, 192, 190, 188, + 185, 178, 169, 159, 149, 143, 139, 137, 135, 134, 136, 137, 135, 134, 124, 121, + 119, 117, 111, 104, 99, 95, 82, 61, 38, 22, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 174, 15, 16, 17, 19, 20, 20, 32, 63, 95, 111, 123, 134, 138, 135, 134, + 129, 122, 126, 138, 149, 156, 163, 177, 185, 184, 188, 201, 208, 208, 200, 205, + 203, 202, 210, 225, 227, 221, 210, 213, 207, 199, 206, 217, 218, 214, 238, 234, + 227, 227, 230, 236, 245, 255, 228, 218, 241, 255, 249, 255, 255, 239, 255, 253, + 246, 242, 245, 250, 253, 255, 254, 255, 252, 248, 246, 249, 255, 255, 240, 227, + 220, 218, 217, 207, 190, 174, 166, 166, 171, 178, 183, 185, 184, 183, 191, 192, + 188, 190, 191, 193, 192, 190, 184, 183, 181, 177, 171, 161, 153, 147, 146, 141, + 138, 135, 134, 132, 128, 126, 122, 120, 118, 115, 110, 104, 97, 91, 74, 54, + 31, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, 13, 14, 17, 19, 18, 28, + 42, 70, 103, 120, 126, 136, 132, 135, 133, 125, 124, 131, 139, 143, 152, 168, + 179, 182, 187, 197, 204, 203, 196, 199, 197, 195, 201, 214, 216, 211, 205, 206, + 204, 199, 203, 212, 212, 207, 217, 219, 219, 221, 222, 229, 247, 255, 246, 229, + 246, 255, 255, 247, 255, 255, 241, 239, 242, 243, 243, 246, 251, 254, 255, 255, + 255, 255, 252, 249, 247, 241, 228, 224, 226, 223, 211, 192, 170, 153, 159, 167, + 178, 189, 193, 194, 192, 191, 194, 195, 194, 193, 194, 195, 192, 190, 182, 181, + 181, 177, 172, 162, 154, 147, 148, 145, 138, 135, 133, 130, 125, 123, 120, 119, + 117, 114, 110, 102, 93, 84, 66, 47, 26, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 174, 12, 14, 16, 18, 21, 30, 31, 50, 93, 115, 119, 130, 135, 140, + 141, 133, 125, 126, 129, 131, 146, 157, 169, 176, 184, 194, 199, 200, 197, 199, + 196, 191, 196, 203, 206, 203, 203, 204, 202, 198, 202, 205, 205, 201, 203, 205, + 208, 212, 212, 218, 232, 246, 255, 241, 250, 255, 251, 244, 255, 255, 237, 235, + 238, 243, 244, 246, 249, 250, 248, 248, 249, 251, 250, 246, 240, 232, 228, 226, + 218, 198, 174, 160, 160, 165, 173, 182, 194, 204, 206, 205, 203, 204, 202, 201, + 200, 200, 199, 198, 195, 192, 188, 186, 186, 182, 172, 162, 151, 144, 145, 142, + 139, 135, 135, 134, 131, 128, 119, 120, 117, 113, 108, 102, 92, 79, 61, 41, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 13, 15, 19, 25, 31, + 26, 38, 81, 106, 115, 131, 137, 146, 146, 137, 128, 124, 124, 121, 135, 144, + 158, 169, 179, 190, 198, 200, 203, 205, 201, 196, 196, 199, 200, 197, 199, 201, + 201, 200, 204, 207, 207, 205, 200, 199, 200, 205, 207, 209, 214, 221, 246, 241, + 245, 246, 245, 249, 255, 255, 244, 237, 237, 240, 245, 249, 246, 245, 239, 237, + 237, 237, 239, 242, 243, 241, 221, 207, 184, 158, 146, 153, 175, 194, 196, 201, + 210, 214, 213, 212, 212, 214, 207, 206, 202, 202, 200, 199, 195, 192, 192, 190, + 189, 183, 174, 163, 152, 146, 147, 143, 140, 139, 137, 137, 134, 131, 120, 121, + 117, 111, 106, 103, 91, 75, 53, 35, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 13, 16, 19, 22, 29, 27, 34, 63, 93, 116, 133, 139, 146, + 147, 139, 131, 126, 122, 119, 122, 130, 142, 155, 172, 185, 196, 203, 207, 207, + 205, 201, 200, 197, 198, 197, 198, 199, 200, 203, 206, 208, 211, 212, 211, 206, + 204, 210, 213, 213, 212, 214, 226, 233, 233, 229, 237, 249, 252, 246, 246, 240, + 236, 238, 242, 244, 241, 238, 246, 247, 247, 243, 234, 223, 211, 202, 175, 164, + 157, 163, 179, 198, 208, 209, 212, 214, 216, 217, 217, 215, 216, 217, 210, 207, + 202, 199, 197, 195, 194, 190, 190, 189, 186, 182, 174, 167, 158, 154, 151, 148, + 143, 141, 137, 136, 132, 128, 121, 121, 115, 105, 103, 102, 89, 71, 47, 105, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 20, 22, 27, + 33, 34, 43, 73, 111, 129, 136, 141, 142, 138, 133, 131, 125, 119, 119, 121, + 131, 143, 161, 175, 189, 197, 204, 205, 207, 205, 204, 199, 199, 199, 198, 198, + 197, 199, 200, 202, 205, 209, 215, 210, 208, 211, 214, 214, 215, 217, 214, 224, + 223, 220, 227, 231, 230, 233, 238, 240, 239, 239, 237, 236, 234, 233, 243, 241, + 236, 222, 202, 182, 167, 161, 159, 167, 183, 202, 221, 229, 225, 217, 221, 218, + 217, 219, 220, 221, 219, 217, 214, 209, 202, 198, 195, 194, 194, 190, 188, 186, + 183, 179, 173, 168, 163, 160, 153, 150, 144, 141, 136, 133, 129, 125, 119, 119, + 111, 99, 98, 97, 86, 67, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 21, 25, 25, 36, 33, 25, 54, 98, 115, 130, 135, + 138, 135, 136, 137, 132, 125, 125, 123, 127, 137, 151, 164, 176, 186, 198, 199, + 203, 206, 203, 200, 197, 199, 199, 197, 194, 194, 192, 191, 194, 198, 202, 198, + 196, 198, 201, 204, 208, 215, 213, 223, 225, 223, 227, 220, 216, 229, 227, 235, + 239, 236, 230, 225, 225, 227, 218, 206, 185, 162, 146, 145, 155, 169, 202, 215, + 227, 229, 224, 221, 226, 233, 226, 223, 221, 223, 226, 226, 222, 219, 218, 213, + 205, 199, 197, 196, 196, 194, 189, 186, 184, 178, 173, 166, 162, 160, 150, 145, + 142, 137, 137, 133, 130, 128, 120, 118, 108, 95, 93, 93, 82, 61, 114, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 25, 25, + 30, 29, 22, 28, 60, 102, 124, 131, 135, 139, 139, 136, 134, 135, 132, 129, + 125, 124, 131, 145, 157, 169, 179, 186, 194, 200, 204, 204, 201, 200, 202, 199, + 196, 192, 193, 194, 194, 194, 195, 195, 193, 191, 187, 185, 182, 179, 191, 191, + 194, 197, 202, 203, 203, 203, 208, 205, 198, 191, 183, 178, 174, 173, 157, 157, + 160, 174, 194, 212, 226, 233, 244, 245, 244, 243, 242, 240, 239, 238, 231, 232, + 232, 228, 222, 218, 219, 222, 215, 212, 206, 201, 198, 196, 196, 196, 191, 187, + 179, 172, 175, 180, 175, 162, 149, 140, 135, 132, 131, 129, 128, 129, 128, 117, + 105, 99, 98, 88, 71, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 178, 25, 28, 27, 20, 19, 40, 72, 109, 124, + 134, 137, 139, 140, 141, 143, 138, 134, 130, 127, 130, 137, 147, 155, 168, 175, + 185, 194, 200, 204, 205, 205, 203, 201, 198, 197, 197, 199, 197, 197, 194, 193, + 191, 189, 185, 182, 179, 178, 163, 165, 168, 171, 176, 175, 174, 173, 161, 160, + 163, 164, 171, 176, 185, 187, 216, 218, 227, 235, 247, 250, 253, 251, 250, 251, + 250, 250, 250, 249, 249, 248, 237, 233, 229, 226, 226, 225, 222, 222, 218, 214, + 207, 201, 196, 193, 193, 193, 181, 179, 174, 169, 172, 174, 167, 154, 143, 136, + 131, 126, 125, 124, 124, 123, 124, 113, 103, 96, 92, 82, 126, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 24, 26, 20, 14, 24, 45, 84, 109, 127, 129, 130, 135, 137, 136, 136, 137, + 136, 131, 130, 131, 135, 142, 158, 165, 175, 187, 196, 203, 207, 208, 204, 203, + 200, 200, 201, 202, 202, 200, 198, 197, 195, 193, 190, 188, 187, 186, 184, 188, + 194, 201, 208, 211, 210, 208, 205, 205, 210, 215, 224, 234, 244, 248, 246, 250, + 255, 255, 255, 251, 246, 243, 253, 253, 253, 252, 252, 251, 249, 249, 236, 230, + 222, 220, 224, 225, 223, 219, 218, 214, 207, 200, 193, 189, 188, 187, 180, 178, + 176, 173, 176, 175, 168, 155, 147, 139, 133, 126, 124, 124, 124, 123, 116, 107, + 99, 92, 86, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 176, 25, 23, 18, 21, 31, 61, 93, + 119, 124, 125, 130, 132, 128, 132, 135, 138, 135, 130, 129, 131, 135, 149, 157, + 167, 177, 188, 196, 202, 204, 203, 202, 199, 201, 203, 204, 204, 203, 202, 202, + 202, 202, 202, 200, 200, 200, 211, 216, 223, 232, 238, 241, 241, 238, 234, 235, + 237, 239, 243, 247, 250, 251, 255, 255, 255, 255, 249, 244, 245, 247, 250, 250, + 250, 249, 248, 247, 245, 244, 236, 230, 224, 218, 217, 217, 217, 214, 214, 210, + 204, 198, 192, 187, 184, 182, 184, 181, 178, 176, 177, 176, 170, 160, 150, 145, + 137, 129, 125, 126, 124, 120, 107, 101, 93, 87, 76, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 178, 24, 22, 22, 28, 44, 75, 104, 119, 126, 133, 132, 128, 125, 129, + 133, 135, 133, 133, 133, 135, 140, 146, 155, 166, 178, 188, 195, 200, 201, 201, + 200, 202, 204, 205, 206, 205, 204, 203, 206, 208, 212, 212, 214, 215, 224, 226, + 231, 236, 238, 238, 235, 232, 242, 244, 248, 252, 254, 255, 255, 254, 255, 255, + 255, 253, 246, 245, 250, 255, 250, 248, 248, 247, 246, 244, 243, 242, 240, 237, + 231, 222, 214, 209, 210, 211, 205, 203, 201, 198, 194, 188, 185, 181, 183, 178, + 172, 170, 169, 167, 162, 159, 147, 145, 136, 127, 122, 122, 119, 111, 100, 96, + 87, 80, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 23, 23, 26, 31, 51, + 78, 102, 119, 127, 129, 128, 121, 124, 128, 132, 134, 136, 136, 136, 128, 132, + 143, 155, 168, 180, 190, 197, 199, 201, 202, 204, 206, 208, 209, 208, 203, 205, + 207, 211, 216, 219, 221, 223, 229, 233, 237, 241, 245, 246, 244, 241, 233, 236, + 243, 245, 249, 248, 249, 246, 249, 251, 255, 252, 249, 245, 249, 251, 253, 250, + 250, 248, 246, 244, 243, 241, 244, 242, 238, 228, 218, 209, 209, 208, 198, 196, + 198, 198, 195, 191, 186, 181, 181, 174, 167, 166, 163, 159, 155, 155, 148, 149, + 142, 129, 124, 122, 117, 105, 96, 90, 81, 130, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 178, 24, 26, 31, 34, 51, 81, 105, 113, 117, 121, 123, 122, + 121, 126, 132, 136, 136, 133, 124, 126, 136, 147, 159, 171, 181, 188, 196, 197, + 200, 203, 206, 208, 209, 207, 207, 209, 211, 215, 220, 222, 225, 227, 227, 229, + 235, 240, 247, 250, 252, 251, 251, 251, 253, 253, 254, 254, 255, 254, 254, 255, + 255, 255, 253, 250, 252, 251, 250, 246, 245, 242, 240, 237, 238, 235, 240, 238, + 234, 226, 219, 214, 209, 205, 192, 193, 197, 200, 198, 193, 186, 179, 179, 172, + 166, 167, 163, 153, 149, 151, 149, 151, 145, 132, 124, 124, 114, 101, 91, 84, + 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 26, 45, 34, + 40, 70, 98, 105, 109, 117, 124, 121, 118, 122, 130, 135, 133, 128, 125, 127, + 133, 143, 152, 162, 171, 178, 190, 192, 194, 198, 203, 204, 204, 204, 212, 214, + 216, 219, 223, 226, 228, 231, 236, 237, 240, 244, 250, 251, 251, 250, 249, 249, + 246, 245, 246, 248, 251, 253, 251, 249, 246, 242, 240, 242, 246, 246, 241, 239, + 238, 236, 233, 229, 228, 226, 236, 230, 225, 221, 219, 216, 210, 202, 190, 192, + 198, 202, 199, 193, 183, 176, 172, 167, 164, 165, 158, 148, 142, 142, 143, 146, + 141, 127, 120, 119, 107, 90, 87, 79, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 31, 32, 31, 34, 44, 65, 86, 105, 115, 122, 125, + 126, 119, 119, 125, 129, 127, 127, 127, 130, 134, 139, 149, 161, 170, 181, 185, + 190, 194, 199, 200, 201, 202, 211, 214, 218, 223, 227, 230, 232, 233, 235, 238, + 239, 240, 246, 251, 253, 249, 248, 243, 241, 243, 242, 241, 246, 255, 252, 252, + 248, 241, 239, 243, 246, 242, 241, 231, 225, 228, 230, 226, 228, 229, 238, 229, + 221, 214, 216, 220, 216, 205, 189, 190, 193, 193, 193, 194, 190, 184, 178, 174, + 173, 173, 165, 153, 145, 146, 149, 146, 137, 119, 107, 102, 100, 96, 79, 130, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 29, 30, + 30, 36, 47, 69, 94, 111, 111, 120, 127, 126, 127, 131, 133, 130, 128, 127, + 128, 132, 137, 145, 155, 163, 177, 182, 188, 193, 198, 200, 201, 202, 207, 211, + 215, 220, 224, 227, 230, 231, 235, 236, 237, 236, 240, 247, 248, 247, 244, 242, + 244, 248, 247, 243, 244, 250, 246, 246, 242, 235, 233, 237, 239, 237, 231, 225, + 225, 230, 231, 229, 228, 231, 227, 226, 222, 217, 216, 214, 206, 194, 180, 186, + 192, 189, 187, 186, 186, 183, 187, 176, 171, 172, 172, 162, 151, 145, 143, 138, + 128, 110, 95, 87, 81, 74, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 181, 34, 32, 29, 29, 46, 74, 96, 104, 114, + 125, 126, 125, 128, 132, 133, 126, 127, 129, 130, 133, 140, 148, 156, 169, 174, + 182, 189, 195, 197, 200, 199, 203, 206, 210, 214, 220, 224, 227, 228, 234, 234, + 234, 231, 234, 239, 240, 239, 237, 240, 247, 253, 251, 245, 241, 241, 243, 243, + 239, 233, 231, 234, 236, 233, 227, 228, 231, 235, 234, 229, 227, 230, 208, 213, + 218, 217, 216, 212, 204, 191, 180, 190, 196, 193, 185, 181, 182, 183, 189, 175, + 166, 167, 172, 165, 151, 140, 126, 123, 115, 102, 92, 87, 80, 73, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, + 41, 33, 28, 34, 55, 73, 100, 108, 116, 117, 117, 120, 127, 130, 127, 128, + 129, 130, 131, 137, 144, 151, 158, 165, 174, 184, 190, 194, 196, 197, 201, 203, + 206, 211, 215, 221, 225, 226, 233, 234, 232, 229, 230, 232, 232, 227, 228, 234, + 242, 247, 245, 239, 233, 231, 234, 235, 232, 226, 225, 228, 229, 227, 228, 231, + 232, 230, 225, 219, 219, 221, 206, 208, 211, 211, 212, 210, 199, 184, 185, 198, + 205, 199, 187, 180, 181, 182, 183, 172, 164, 163, 166, 162, 148, 135, 116, 113, + 107, 98, 93, 90, 84, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 186, 48, 45, 43, 44, 50, 56, 88, 94, + 106, 113, 113, 115, 121, 126, 130, 131, 132, 132, 133, 137, 142, 148, 154, 160, + 169, 179, 188, 193, 196, 196, 199, 200, 203, 208, 213, 219, 223, 225, 231, 234, + 234, 232, 230, 228, 222, 214, 221, 230, 236, 239, 238, 235, 230, 227, 225, 227, + 225, 220, 219, 223, 224, 222, 227, 229, 226, 219, 211, 209, 209, 211, 217, 212, + 204, 200, 204, 204, 193, 178, 181, 193, 202, 198, 187, 181, 181, 182, 179, 175, + 170, 165, 162, 158, 149, 140, 123, 117, 107, 95, 90, 83, 132, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 60, 63, 61, 61, 59, 71, 78, 94, 110, 117, 118, 119, 122, 130, 132, + 134, 133, 133, 136, 141, 144, 153, 159, 168, 178, 187, 191, 195, 196, 195, 196, + 200, 204, 209, 214, 220, 223, 227, 231, 233, 230, 229, 226, 217, 207, 216, 223, + 229, 230, 229, 229, 227, 223, 221, 223, 222, 219, 219, 223, 225, 224, 228, 228, + 223, 213, 209, 213, 215, 215, 212, 207, 201, 197, 201, 204, 198, 187, 175, 183, + 192, 191, 185, 183, 182, 179, 171, 173, 169, 162, 154, 150, 145, 139, 129, 119, + 105, 94, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 74, 73, 73, 73, 69, 70, + 79, 96, 107, 113, 116, 121, 129, 133, 134, 133, 133, 135, 139, 142, 151, 156, + 163, 172, 181, 187, 193, 194, 192, 192, 195, 200, 205, 211, 217, 220, 223, 226, + 228, 225, 224, 222, 215, 206, 206, 215, 221, 221, 221, 223, 221, 216, 216, 219, + 219, 217, 218, 223, 225, 225, 229, 228, 222, 213, 211, 217, 219, 217, 200, 202, + 206, 204, 204, 204, 202, 196, 180, 185, 188, 190, 191, 190, 185, 176, 167, 170, + 166, 157, 150, 146, 142, 135, 122, 111, 97, 142, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 76, 77, 80, 83, 77, 68, 64, 76, 90, 99, 110, 121, 126, 131, + 131, 132, 132, 134, 138, 143, 147, 152, 158, 164, 173, 180, 185, 187, 187, 189, + 191, 195, 201, 207, 212, 217, 218, 220, 222, 220, 220, 220, 216, 208, 196, 206, + 213, 214, 214, 216, 214, 209, 206, 209, 210, 208, 210, 215, 217, 217, 221, 220, + 214, 205, 207, 213, 214, 208, 203, 212, 219, 214, 203, 195, 189, 186, 193, 194, + 193, 194, 199, 198, 186, 172, 172, 173, 167, 158, 152, 152, 144, 136, 116, 103, + 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 77, 75, 67, 66, + 66, 67, 70, 80, 98, 119, 121, 128, 122, 139, 128, 139, 131, 137, 141, 142, + 147, 156, 163, 165, 172, 179, 190, 187, 185, 190, 197, 204, 208, 209, 208, 214, + 218, 215, 212, 209, 212, 214, 206, 201, 198, 203, 214, 222, 223, 224, 211, 210, + 207, 204, 207, 214, 217, 214, 214, 211, 210, 208, 208, 205, 202, 199, 201, 213, + 218, 205, 188, 186, 194, 199, 186, 189, 191, 190, 190, 187, 178, 166, 170, 169, + 165, 158, 148, 137, 129, 124, 110, 100, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 197, 78, 66, 65, 63, 61, 58, 60, 76, 97, 111, 121, + 115, 128, 115, 128, 127, 139, 135, 136, 143, 153, 160, 164, 169, 175, 187, 186, + 185, 190, 195, 201, 202, 202, 210, 214, 216, 216, 212, 209, 208, 207, 217, 213, + 211, 210, 213, 215, 218, 219, 212, 212, 210, 206, 210, 216, 219, 216, 216, 211, + 207, 202, 201, 200, 199, 197, 199, 207, 210, 203, 193, 191, 191, 188, 181, 181, + 182, 184, 190, 192, 185, 173, 169, 164, 158, 150, 138, 126, 112, 103, 151, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 67, 66, + 63, 57, 48, 45, 55, 71, 96, 111, 114, 123, 115, 124, 129, 139, 130, 130, + 137, 147, 154, 158, 162, 169, 181, 184, 187, 191, 195, 198, 195, 194, 207, 209, + 211, 213, 211, 209, 206, 204, 210, 210, 211, 211, 213, 216, 222, 227, 213, 214, + 211, 208, 211, 217, 218, 215, 221, 215, 207, 203, 202, 202, 202, 201, 199, 201, + 200, 200, 200, 198, 190, 179, 183, 183, 183, 183, 188, 190, 183, 173, 172, 164, + 152, 143, 133, 120, 104, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 66, 63, 61, 53, 43, 44, 52, 75, 92, + 107, 119, 119, 125, 127, 131, 133, 131, 132, 138, 145, 146, 152, 161, 175, 180, + 186, 192, 193, 192, 188, 188, 200, 201, 202, 204, 207, 210, 209, 207, 201, 202, + 204, 206, 212, 217, 224, 228, 212, 215, 213, 211, 213, 219, 219, 215, 215, 209, + 204, 201, 202, 202, 203, 201, 199, 196, 196, 197, 201, 199, 189, 179, 180, 184, + 189, 189, 189, 187, 183, 174, 173, 159, 144, 132, 125, 113, 151, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 190, 62, 61, 52, 45, 42, 62, 74, 90, 97, 111, 117, 124, 120, 134, 129, + 126, 128, 133, 137, 145, 155, 165, 174, 182, 187, 186, 185, 184, 185, 201, 200, + 198, 201, 205, 209, 211, 212, 215, 210, 206, 207, 211, 215, 217, 215, 214, 217, + 216, 213, 215, 221, 221, 214, 207, 203, 201, 199, 200, 199, 197, 194, 197, 196, + 197, 196, 195, 191, 187, 184, 171, 183, 193, 193, 187, 181, 179, 176, 164, 148, + 127, 112, 104, 149, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 58, 51, 49, 72, 75, + 83, 78, 94, 105, 121, 118, 127, 123, 119, 121, 124, 128, 138, 149, 152, 161, + 172, 176, 177, 177, 181, 183, 203, 202, 203, 203, 206, 208, 211, 214, 223, 216, + 210, 210, 215, 218, 215, 211, 216, 218, 218, 216, 217, 221, 220, 214, 207, 204, + 202, 200, 199, 195, 192, 188, 193, 193, 195, 194, 188, 181, 183, 189, 179, 189, + 196, 189, 176, 166, 160, 155, 154, 136, 113, 132, 218, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 191, 66, 84, 85, 89, 69, 83, 88, 111, 110, 121, 116, + 113, 115, 118, 120, 126, 135, 138, 150, 160, 164, 164, 167, 175, 182, 194, 198, + 202, 204, 205, 205, 208, 211, 214, 210, 208, 207, 209, 212, 212, 211, 209, 212, + 212, 211, 212, 215, 212, 205, 204, 201, 197, 193, 192, 190, 188, 185, 187, 188, + 192, 192, 183, 173, 175, 182, 188, 190, 186, 174, 162, 150, 141, 131, 136, 121, + 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 86, + 95, 67, 75, 72, 94, 94, 119, 115, 113, 115, 114, 112, 114, 119, 128, 139, + 150, 155, 157, 160, 170, 180, 178, 187, 199, 203, 203, 202, 205, 210, 206, 206, + 206, 202, 198, 197, 199, 202, 200, 203, 204, 203, 204, 206, 203, 197, 191, 186, + 181, 179, 178, 180, 180, 180, 182, 184, 187, 189, 180, 169, 168, 174, 179, 176, + 165, 157, 152, 148, 141, 130, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 206, 104, 67, 70, 90, 81, 104, 110, + 113, 114, 115, 119, 119, 117, 125, 126, 132, 142, 153, 158, 164, 170, 178, 180, + 187, 192, 195, 194, 191, 188, 202, 202, 204, 201, 197, 191, 185, 182, 192, 192, + 196, 200, 198, 191, 188, 190, 184, 180, 178, 180, 178, 173, 170, 173, 177, 179, + 177, 172, 162, 156, 155, 155, 160, 150, 137, 130, 132, 132, 118, 150, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 91, 86, 91, 95, 99, 105, 109, 110, 104, 120, 122, + 127, 131, 139, 147, 156, 158, 162, 169, 178, 184, 187, 185, 183, 181, 187, 190, + 192, 191, 187, 184, 184, 184, 179, 178, 182, 189, 191, 188, 188, 189, 179, 174, + 170, 171, 169, 168, 168, 172, 165, 167, 169, 163, 155, 148, 145, 144, 146, 141, + 132, 122, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 229, 179, 182, 187, 188, 185, 178, 176, 180, 184, 178, 174, + 173, 178, 182, 178, 178, 176, 170, 167, 167, 170, 169, 165, 164, 167, 168, 169, + 168, 160, 150, 140, 135, 133, 131, 129, 168, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 226, 165, 169, 176, 175, 168, 164, 167, 171, 170, 167, 166, 168, 167, + 171, 175, 171, 163, 155, 152, 165, 164, 161, 154, 143, 176, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 14, 22, 10, 18, 19, 15, 1, 1, + 4, 12, 15, 11, 6, 7, 8, 6, 4, 4, 3, 3, 0, 0, 2, 0, + 0, 0, 0, 3, 3, 3, 1, 94, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 17, 24, 11, + 14, 11, 13, 15, 24, 18, 15, 23, 29, 30, 32, 34, 34, 33, 48, 45, + 42, 41, 39, 37, 33, 28, 17, 16, 12, 11, 11, 11, 9, 7, 1, 12, + 10, 10, 9, 0, 2, 66, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 184, 41, 34, 16, 20, 8, 23, 22, 41, 41, 55, 44, 48, 61, + 65, 60, 58, 64, 68, 66, 58, 57, 59, 62, 66, 68, 67, 65, 53, 51, + 50, 46, 38, 25, 12, 4, 4, 2, 0, 0, 5, 0, 8, 34, 106, 71, + 41, 34, 24, 8, 59, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 183, 46, 42, 35, 34, 35, 51, 54, + 60, 64, 66, 67, 68, 69, 65, 66, 66, 68, 71, 73, 73, 75, 70, 71, + 72, 71, 71, 71, 74, 77, 73, 71, 69, 66, 62, 59, 56, 55, 36, 39, + 36, 23, 9, 8, 22, 37, 65, 37, 29, 45, 37, 6, 0, 7, 4, 63, + 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 22, + 38, 51, 57, 62, 68, 73, 60, 64, 67, 69, 70, 71, 71, 73, 75, 76, + 76, 78, 80, 82, 83, 83, 83, 84, 84, 83, 80, 79, 81, 83, 79, 80, + 78, 77, 74, 73, 70, 71, 71, 71, 65, 51, 34, 20, 14, 14, 43, 30, + 22, 25, 22, 11, 5, 10, 0, 8, 6, 5, 12, 94, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 36, 48, 53, 57, 60, 62, 63, 65, 66, 71, 72, + 73, 75, 74, 75, 76, 78, 80, 80, 80, 82, 83, 84, 85, 86, 89, 90, + 90, 89, 87, 85, 85, 87, 87, 88, 88, 88, 87, 87, 87, 89, 77, 74, + 72, 69, 65, 59, 51, 44, 26, 25, 15, 3, 2, 8, 9, 1, 1, 8, + 10, 9, 11, 16, 17, 15, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 14, 33, 44, 57, 58, + 61, 66, 72, 76, 77, 75, 77, 78, 79, 79, 79, 80, 83, 86, 83, 83, + 83, 84, 84, 85, 86, 86, 88, 90, 92, 93, 91, 91, 92, 95, 92, 94, + 94, 94, 94, 95, 95, 96, 96, 90, 81, 76, 75, 73, 68, 65, 36, 35, + 23, 7, 2, 7, 4, 0, 3, 6, 10, 12, 13, 20, 20, 7, 4, 11, + 9, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, + 68, 16, 25, 42, 55, 59, 61, 62, 66, 74, 83, 88, 89, 87, 83, 84, + 85, 86, 86, 89, 91, 95, 94, 95, 94, 95, 96, 96, 96, 96, 96, 99, + 101, 101, 100, 99, 99, 101, 96, 97, 96, 96, 95, 96, 95, 96, 98, 94, + 87, 79, 74, 72, 72, 75, 65, 56, 46, 37, 28, 20, 10, 5, 6, 1, + 4, 10, 15, 29, 27, 4, 9, 11, 7, 5, 0, 102, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 177, 29, 39, 53, 66, 72, 70, 74, 75, + 78, 82, 84, 85, 81, 78, 89, 92, 94, 96, 97, 98, 100, 103, 105, 104, + 104, 103, 103, 103, 103, 103, 102, 104, 106, 105, 102, 99, 98, 98, 98, 98, + 97, 96, 95, 94, 94, 93, 77, 80, 83, 82, 80, 80, 82, 87, 79, 69, + 63, 63, 56, 39, 27, 25, 17, 3, 5, 10, 16, 39, 42, 12, 21, 13, + 11, 5, 2, 17, 2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 35, + 45, 54, 63, 70, 71, 67, 73, 77, 81, 85, 88, 91, 92, 93, 96, 99, + 103, 104, 103, 104, 104, 106, 106, 106, 105, 105, 104, 103, 103, 102, 99, 102, + 103, 103, 100, 97, 96, 96, 98, 97, 96, 95, 94, 93, 92, 91, 88, 88, + 88, 86, 82, 79, 77, 77, 79, 74, 72, 74, 70, 60, 49, 46, 38, 19, + 16, 16, 14, 43, 55, 26, 33, 15, 19, 8, 13, 11, 6, 14, 11, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 186, 57, 68, 79, 82, 83, 85, 85, 84, 93, 94, + 96, 94, 93, 93, 95, 97, 99, 102, 106, 107, 105, 104, 103, 103, 106, 106, + 105, 104, 103, 102, 100, 100, 96, 99, 102, 103, 102, 100, 99, 99, 94, 94, + 92, 92, 91, 90, 90, 90, 93, 90, 86, 84, 84, 87, 87, 88, 79, 81, + 80, 78, 77, 75, 67, 58, 56, 34, 29, 19, 10, 40, 59, 34, 42, 18, + 28, 13, 24, 14, 17, 28, 10, 19, 101, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 49, 55, 76, 77, + 82, 86, 88, 91, 94, 96, 97, 97, 96, 96, 97, 97, 98, 98, 100, 100, + 102, 103, 103, 104, 104, 104, 104, 104, 103, 102, 101, 101, 99, 100, 98, 95, + 92, 93, 95, 95, 92, 89, 90, 88, 86, 84, 82, 81, 80, 80, 79, 80, + 82, 83, 84, 84, 84, 84, 84, 85, 85, 84, 83, 80, 77, 77, 63, 66, + 43, 35, 45, 25, 10, 31, 23, 14, 54, 18, 12, 23, 28, 46, 28, 7, + 19, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 182, 30, 42, 67, 84, 83, 84, 88, 90, 91, 93, 95, 97, 98, 98, + 99, 99, 99, 100, 100, 100, 102, 102, 103, 103, 103, 103, 103, 103, 101, 101, + 100, 99, 98, 96, 96, 95, 92, 90, 89, 90, 93, 94, 93, 91, 90, 88, + 86, 84, 82, 80, 79, 80, 82, 84, 84, 84, 85, 85, 85, 85, 85, 86, + 85, 85, 84, 82, 80, 80, 77, 82, 62, 51, 53, 33, 20, 44, 45, 30, + 61, 27, 21, 30, 32, 44, 75, 31, 15, 22, 40, 113, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 35, 37, 55, 77, 90, 92, 92, 95, + 97, 98, 98, 98, 99, 100, 102, 102, 103, 103, 103, 104, 104, 104, 103, 103, + 103, 103, 103, 102, 102, 102, 101, 100, 99, 98, 97, 96, 95, 95, 93, 93, + 91, 91, 93, 94, 93, 92, 91, 90, 88, 85, 83, 82, 80, 81, 80, 81, + 79, 79, 78, 79, 79, 80, 85, 86, 86, 87, 87, 87, 86, 86, 86, 93, + 81, 69, 67, 48, 39, 60, 51, 31, 54, 23, 22, 30, 33, 41, 72, 33, + 18, 26, 57, 70, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 25, + 37, 59, 87, 104, 99, 87, 98, 100, 102, 103, 101, 101, 102, 103, 103, 103, + 103, 104, 104, 105, 105, 105, 104, 103, 102, 101, 101, 100, 100, 100, 102, 101, + 101, 100, 99, 98, 97, 97, 102, 101, 100, 99, 97, 95, 94, 93, 93, 91, + 89, 87, 86, 84, 83, 85, 81, 82, 79, 78, 77, 77, 77, 78, 82, 83, + 84, 85, 86, 86, 87, 88, 81, 88, 82, 78, 78, 64, 55, 67, 38, 20, + 38, 14, 17, 22, 35, 42, 45, 29, 30, 30, 50, 66, 43, 102, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 172, 11, 41, 75, 93, 94, 95, 95, 96, 97, 100, + 103, 103, 102, 102, 103, 104, 102, 102, 102, 102, 103, 103, 103, 104, 103, 101, + 100, 98, 98, 98, 98, 99, 100, 100, 99, 99, 99, 99, 98, 98, 105, 105, + 105, 103, 102, 100, 100, 100, 97, 96, 95, 93, 92, 91, 90, 91, 93, 93, + 90, 89, 86, 86, 85, 84, 81, 81, 82, 82, 82, 84, 84, 85, 77, 79, + 77, 81, 85, 76, 64, 63, 33, 19, 31, 11, 11, 10, 29, 36, 27, 20, + 18, 1, 5, 25, 20, 17, 9, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 8, 15, 33, 63, 81, + 98, 100, 94, 91, 92, 97, 95, 99, 101, 102, 101, 101, 102, 103, 100, 100, + 100, 101, 101, 101, 102, 101, 102, 101, 99, 98, 97, 98, 99, 100, 98, 99, + 99, 100, 101, 101, 102, 102, 102, 103, 105, 106, 104, 105, 106, 109, 103, 103, + 102, 101, 101, 102, 102, 103, 102, 102, 101, 99, 96, 94, 92, 90, 86, 87, + 85, 84, 83, 83, 83, 83, 82, 78, 78, 82, 85, 80, 69, 59, 42, 28, + 32, 13, 7, 0, 17, 19, 37, 32, 33, 18, 21, 38, 29, 25, 7, 7, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 26, 44, 74, 103, 100, 95, 92, 95, 100, 94, 87, 96, 99, + 101, 101, 99, 99, 99, 100, 99, 99, 99, 100, 100, 100, 101, 100, 103, 102, + 99, 99, 98, 101, 102, 104, 100, 102, 102, 105, 105, 108, 108, 109, 105, 107, + 110, 112, 110, 111, 113, 117, 112, 111, 111, 112, 113, 114, 115, 117, 110, 111, + 111, 110, 106, 102, 97, 94, 98, 97, 93, 90, 88, 87, 85, 85, 88, 82, + 82, 83, 79, 77, 74, 65, 59, 40, 35, 20, 15, 0, 15, 11, 7, 5, + 16, 9, 12, 22, 9, 4, 8, 7, 9, 93, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 15, 21, 43, 75, 77, 94, 91, 94, + 96, 93, 92, 94, 93, 92, 97, 100, 101, 101, 98, 97, 97, 98, 99, 99, + 99, 100, 100, 100, 101, 100, 104, 102, 100, 99, 100, 102, 105, 106, 105, 106, + 107, 110, 112, 114, 116, 117, 112, 114, 118, 117, 115, 114, 116, 120, 117, 118, + 118, 119, 120, 122, 124, 125, 120, 122, 122, 122, 117, 113, 107, 104, 107, 105, + 101, 97, 93, 92, 88, 88, 88, 83, 84, 81, 73, 73, 79, 73, 73, 51, + 41, 31, 32, 14, 30, 20, 23, 22, 28, 14, 8, 16, 15, 25, 8, 7, + 7, 8, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 21, + 42, 59, 75, 85, 88, 87, 97, 98, 98, 97, 94, 91, 91, 91, 94, 94, + 95, 96, 97, 97, 97, 97, 99, 99, 99, 99, 100, 102, 103, 103, 101, 102, + 104, 107, 110, 111, 112, 113, 108, 109, 112, 115, 117, 118, 118, 117, 115, 121, + 118, 116, 124, 123, 118, 120, 124, 121, 122, 128, 128, 123, 120, 124, 125, 122, + 121, 125, 126, 123, 117, 114, 113, 108, 99, 95, 94, 92, 87, 84, 91, 87, + 82, 79, 76, 74, 73, 72, 65, 57, 50, 44, 34, 29, 35, 48, 46, 52, + 63, 27, 8, 17, 6, 10, 8, 2, 0, 3, 7, 88, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 178, 39, 51, 67, 79, 87, 93, 94, 91, 98, 100, + 100, 99, 96, 96, 97, 98, 94, 94, 95, 98, 98, 100, 99, 100, 100, 101, + 100, 102, 102, 105, 105, 106, 102, 104, 105, 108, 110, 112, 112, 113, 116, 117, + 116, 118, 118, 121, 122, 123, 123, 128, 122, 120, 126, 125, 118, 121, 135, 133, + 129, 126, 119, 111, 107, 108, 115, 117, 115, 104, 90, 85, 92, 103, 104, 101, + 98, 100, 103, 102, 97, 92, 72, 74, 76, 77, 78, 74, 68, 64, 80, 63, + 47, 46, 48, 42, 29, 22, 37, 32, 53, 49, 29, 10, 0, 19, 22, 11, + 1, 0, 3, 3, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 27, 64, 73, + 84, 90, 93, 95, 92, 88, 92, 94, 93, 93, 93, 94, 97, 98, 96, 95, + 97, 99, 101, 103, 103, 104, 105, 105, 105, 106, 107, 109, 110, 111, 107, 108, + 109, 112, 113, 116, 115, 117, 125, 125, 122, 123, 123, 126, 128, 131, 131, 135, + 127, 124, 128, 126, 117, 122, 131, 130, 123, 109, 96, 90, 87, 85, 83, 65, + 47, 49, 65, 71, 59, 43, 53, 44, 36, 37, 46, 57, 61, 61, 81, 74, + 62, 56, 55, 60, 67, 72, 69, 63, 58, 56, 49, 34, 21, 15, 31, 41, + 55, 33, 12, 12, 9, 18, 7, 1, 0, 4, 6, 3, 0, 85, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 170, 13, 40, 65, 71, 77, 87, 89, 91, 91, 90, 86, 87, 87, + 88, 89, 88, 91, 96, 98, 97, 96, 99, 101, 104, 106, 107, 108, 108, 109, + 109, 110, 111, 113, 115, 115, 116, 116, 117, 119, 121, 122, 122, 122, 127, 127, + 128, 129, 131, 133, 135, 136, 134, 135, 127, 124, 130, 124, 117, 124, 119, 120, + 111, 93, 79, 77, 78, 77, 52, 57, 63, 67, 69, 67, 58, 49, 50, 39, + 25, 21, 25, 30, 30, 28, 43, 45, 46, 46, 45, 40, 33, 27, 54, 58, + 61, 62, 56, 45, 34, 30, 17, 41, 51, 29, 11, 11, 2, 0, 1, 1, + 5, 8, 7, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 5, 33, 70, 84, 78, 84, + 91, 92, 92, 93, 92, 89, 88, 89, 90, 90, 93, 97, 101, 104, 100, 100, + 103, 106, 108, 111, 112, 112, 113, 114, 114, 115, 117, 119, 121, 121, 121, 122, + 124, 125, 126, 127, 127, 127, 125, 127, 132, 136, 139, 141, 141, 141, 136, 135, + 125, 125, 131, 124, 119, 128, 121, 119, 109, 94, 83, 84, 87, 89, 84, 92, + 95, 90, 84, 81, 75, 69, 45, 41, 37, 39, 44, 46, 41, 36, 35, 36, + 36, 37, 37, 36, 31, 29, 24, 17, 13, 24, 41, 45, 33, 18, 28, 18, + 12, 19, 17, 7, 14, 23, 10, 9, 9, 7, 2, 0, 2, 11, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 176, 17, 28, 48, 76, 74, 85, 91, 94, 93, 92, 92, 92, 88, 88, 89, + 91, 94, 96, 100, 105, 108, 106, 107, 109, 112, 115, 117, 118, 119, 120, 120, + 121, 122, 124, 127, 129, 130, 126, 128, 129, 130, 130, 130, 130, 130, 127, 131, + 137, 143, 147, 149, 148, 147, 143, 139, 130, 130, 135, 129, 125, 137, 133, 123, + 110, 103, 97, 95, 99, 106, 124, 110, 88, 77, 85, 96, 91, 76, 87, 80, + 72, 68, 70, 73, 76, 77, 41, 32, 19, 11, 15, 26, 40, 49, 46, 46, + 46, 52, 65, 76, 75, 69, 50, 45, 23, 17, 13, 5, 10, 1, 0, 0, + 0, 5, 5, 0, 0, 2, 1, 86, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 172, 1, 33, 58, 67, 88, 87, 87, 94, + 95, 92, 90, 91, 90, 87, 88, 91, 95, 99, 101, 105, 110, 112, 115, 116, + 118, 121, 123, 125, 126, 126, 128, 128, 129, 131, 133, 135, 137, 139, 134, 134, + 135, 136, 136, 136, 135, 135, 136, 139, 143, 148, 152, 154, 154, 155, 154, 149, + 138, 139, 144, 136, 132, 146, 145, 125, 111, 113, 113, 107, 110, 121, 126, 131, + 123, 104, 93, 98, 106, 108, 96, 89, 78, 67, 57, 54, 54, 57, 70, 72, + 73, 75, 75, 71, 66, 62, 49, 58, 63, 57, 53, 58, 68, 73, 84, 113, + 106, 98, 88, 74, 59, 14, 19, 8, 1, 4, 9, 6, 0, 0, 2, 2, + 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, + 1, 48, 75, 67, 83, 85, 87, 94, 95, 92, 91, 93, 93, 90, 95, 98, + 103, 108, 111, 115, 119, 121, 121, 122, 125, 127, 129, 130, 131, 131, 133, 134, + 135, 136, 138, 141, 143, 144, 141, 140, 141, 142, 142, 140, 140, 139, 144, 145, + 148, 152, 156, 158, 160, 163, 165, 159, 148, 148, 152, 143, 139, 152, 153, 128, + 113, 123, 127, 120, 123, 139, 141, 135, 122, 116, 124, 128, 108, 81, 45, 59, + 78, 93, 97, 93, 87, 84, 82, 79, 76, 72, 66, 58, 50, 44, 49, 45, + 35, 28, 30, 36, 34, 27, 18, 27, 23, 53, 72, 80, 112, 119, 102, 65, + 21, 2, 3, 7, 8, 6, 3, 3, 2, 87, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 170, 1, 24, 53, 71, 77, 82, 91, 94, 89, + 87, 90, 91, 90, 94, 101, 107, 112, 115, 115, 115, 120, 126, 129, 130, 122, + 123, 129, 132, 130, 130, 135, 128, 132, 137, 142, 145, 144, 142, 140, 145, 142, + 140, 139, 139, 137, 136, 134, 146, 146, 149, 155, 160, 162, 166, 171, 172, 170, + 166, 161, 159, 157, 158, 159, 155, 130, 132, 144, 135, 137, 146, 143, 141, 140, + 131, 112, 93, 85, 90, 100, 115, 108, 102, 100, 103, 105, 103, 100, 100, 100, + 101, 102, 99, 93, 84, 79, 69, 68, 58, 41, 27, 22, 20, 19, 21, 17, + 15, 15, 12, 12, 30, 53, 69, 97, 108, 81, 34, 2, 0, 0, 5, 0, + 2, 10, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 26, + 45, 68, 79, 79, 82, 89, 95, 90, 88, 91, 93, 93, 96, 103, 117, 121, + 125, 127, 129, 132, 134, 135, 127, 127, 121, 116, 120, 128, 128, 121, 129, 131, + 134, 138, 142, 145, 147, 147, 155, 151, 146, 144, 142, 140, 138, 137, 148, 147, + 149, 157, 162, 164, 167, 173, 179, 178, 173, 170, 166, 165, 165, 165, 153, 144, + 142, 139, 139, 157, 162, 139, 145, 124, 105, 104, 122, 135, 133, 126, 118, 119, + 121, 127, 137, 143, 144, 142, 147, 145, 141, 136, 128, 116, 104, 96, 83, 82, + 73, 57, 41, 28, 17, 11, 23, 18, 15, 13, 7, 4, 17, 35, 22, 30, + 57, 88, 92, 59, 19, 0, 13, 4, 0, 0, 85, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 25, 38, 60, 78, 83, 84, 87, 91, 89, 87, + 87, 93, 97, 102, 107, 113, 118, 119, 121, 125, 128, 128, 126, 123, 128, 132, + 125, 113, 118, 135, 136, 123, 127, 128, 131, 135, 141, 147, 153, 156, 163, 161, + 155, 152, 150, 150, 149, 148, 151, 150, 152, 158, 163, 164, 167, 172, 180, 179, + 176, 172, 170, 168, 166, 167, 157, 155, 157, 155, 155, 167, 163, 138, 129, 126, + 129, 136, 145, 149, 144, 139, 133, 138, 145, 152, 158, 159, 158, 156, 157, 155, + 152, 148, 142, 134, 123, 117, 109, 108, 101, 88, 74, 58, 37, 23, 21, 17, + 14, 15, 10, 3, 5, 14, 0, 7, 19, 40, 75, 94, 61, 13, 4, 4, + 4, 5, 8, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 29, 47, + 68, 81, 84, 85, 87, 89, 85, 85, 88, 93, 98, 104, 110, 114, 128, 123, + 120, 122, 124, 120, 116, 114, 107, 113, 112, 106, 110, 124, 129, 124, 125, 128, + 131, 136, 143, 150, 157, 162, 165, 163, 158, 156, 156, 156, 158, 157, 152, 150, + 151, 157, 161, 161, 164, 168, 174, 173, 171, 169, 168, 165, 163, 162, 161, 155, + 162, 172, 164, 147, 138, 138, 126, 142, 156, 156, 144, 135, 135, 141, 147, 152, + 157, 160, 158, 155, 151, 149, 153, 152, 151, 152, 151, 148, 143, 139, 128, 126, + 121, 114, 106, 93, 70, 53, 27, 19, 13, 16, 17, 12, 5, 2, 5, 13, + 7, 0, 25, 65, 77, 63, 15, 21, 12, 1, 3, 6, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 2, 45, 64, 82, 87, 85, 87, 86, 84, 88, 89, + 94, 97, 102, 106, 110, 110, 118, 110, 103, 103, 102, 97, 95, 97, 99, 102, + 109, 114, 116, 118, 125, 133, 127, 130, 134, 140, 147, 153, 159, 163, 167, 164, + 159, 156, 155, 156, 155, 156, 148, 145, 147, 152, 154, 154, 157, 161, 165, 166, + 167, 167, 166, 164, 161, 159, 156, 156, 159, 158, 147, 128, 127, 143, 148, 141, + 133, 132, 136, 144, 149, 150, 151, 154, 157, 160, 159, 158, 157, 157, 154, 151, + 147, 145, 143, 140, 135, 133, 129, 127, 123, 120, 119, 112, 94, 77, 54, 36, + 17, 11, 14, 15, 9, 5, 14, 0, 3, 21, 24, 22, 50, 91, 81, 83, + 50, 11, 5, 11, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 47, 66, + 82, 85, 86, 93, 92, 87, 87, 94, 102, 107, 111, 118, 119, 116, 94, 85, + 82, 85, 87, 84, 88, 95, 104, 104, 111, 120, 121, 119, 124, 135, 134, 136, + 138, 144, 149, 154, 159, 161, 170, 166, 159, 154, 151, 149, 146, 144, 144, 141, + 141, 146, 148, 147, 149, 153, 159, 162, 165, 168, 168, 165, 162, 159, 152, 164, + 152, 130, 128, 136, 143, 151, 143, 132, 124, 127, 140, 151, 154, 151, 153, 154, + 155, 158, 158, 158, 157, 157, 150, 147, 140, 136, 131, 128, 124, 121, 125, 124, + 120, 118, 120, 119, 108, 95, 86, 64, 33, 13, 6, 8, 12, 13, 11, 3, + 9, 21, 18, 8, 22, 49, 75, 92, 60, 13, 6, 11, 89, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 12, 45, 65, 79, 79, 85, 96, 99, 90, 92, 100, + 106, 106, 107, 108, 101, 95, 76, 73, 77, 90, 98, 100, 109, 123, 103, 103, + 103, 106, 112, 119, 122, 122, 146, 145, 143, 145, 148, 153, 158, 161, 167, 162, + 156, 151, 147, 142, 137, 134, 136, 134, 134, 140, 141, 140, 142, 148, 149, 154, + 159, 163, 164, 161, 158, 156, 151, 153, 128, 112, 132, 148, 145, 145, 124, 130, + 135, 139, 142, 144, 145, 147, 155, 154, 153, 153, 154, 152, 146, 142, 147, 144, + 137, 132, 129, 127, 126, 124, 117, 118, 116, 115, 118, 121, 114, 105, 97, 86, + 64, 36, 15, 6, 10, 17, 11, 18, 13, 2, 0, 10, 15, 9, 58, 95, + 80, 40, 38, 41, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 0, 58, 75, + 84, 81, 85, 98, 96, 84, 101, 108, 107, 97, 85, 74, 60, 44, 44, 46, + 59, 79, 91, 98, 111, 127, 118, 122, 117, 111, 124, 146, 147, 134, 155, 152, + 147, 145, 146, 152, 158, 162, 163, 158, 154, 150, 146, 142, 137, 134, 135, 133, + 134, 138, 140, 140, 142, 146, 141, 145, 152, 157, 159, 156, 152, 149, 148, 126, + 96, 107, 144, 144, 124, 125, 129, 128, 126, 128, 134, 141, 146, 150, 154, 150, + 149, 151, 153, 151, 141, 134, 132, 127, 119, 113, 110, 107, 105, 104, 105, 107, + 109, 110, 114, 118, 115, 108, 91, 97, 90, 65, 30, 11, 10, 17, 18, 10, + 5, 11, 13, 12, 13, 19, 23, 67, 52, 8, 8, 14, 4, 7, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 8, 17, 65, 73, 82, 86, 87, 90, 95, 100, 101, 92, + 85, 93, 100, 72, 35, 19, 62, 91, 107, 99, 97, 111, 119, 115, 118, 118, + 121, 127, 135, 144, 151, 154, 146, 160, 165, 154, 147, 157, 163, 161, 154, 159, + 156, 163, 132, 137, 131, 141, 124, 130, 134, 136, 141, 146, 143, 135, 141, 135, + 135, 143, 152, 156, 155, 151, 134, 73, 104, 142, 134, 128, 120, 124, 127, 121, + 124, 134, 139, 135, 137, 143, 144, 145, 147, 146, 137, 129, 125, 125, 127, 118, + 102, 99, 102, 92, 84, 92, 77, 92, 101, 97, 99, 110, 115, 110, 112, 105, + 99, 88, 58, 24, 12, 17, 23, 20, 15, 10, 8, 11, 9, 6, 14, 50, + 95, 28, 0, 4, 9, 13, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 2, 43, 56, 81, + 99, 94, 86, 90, 99, 100, 83, 99, 93, 67, 40, 20, 19, 32, 34, 53, + 62, 59, 58, 68, 72, 66, 92, 95, 100, 107, 116, 131, 148, 159, 177, 158, + 148, 155, 161, 161, 163, 169, 160, 161, 159, 138, 163, 148, 140, 128, 152, 151, + 139, 125, 122, 122, 110, 93, 86, 96, 109, 117, 119, 123, 126, 131, 62, 77, + 134, 137, 107, 111, 113, 114, 117, 122, 132, 139, 138, 133, 135, 139, 151, 138, + 134, 135, 132, 132, 128, 118, 102, 115, 111, 97, 92, 91, 88, 87, 77, 75, + 70, 70, 83, 100, 109, 109, 115, 111, 109, 102, 80, 49, 23, 12, 18, 19, + 17, 14, 11, 10, 10, 8, 14, 41, 95, 58, 21, 27, 33, 48, 92, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 175, 14, 37, 76, 76, 78, 85, 93, 96, 86, 74, 77, 59, + 24, 13, 49, 86, 89, 82, 104, 110, 114, 116, 119, 124, 125, 123, 107, 109, + 109, 104, 100, 100, 109, 117, 125, 136, 159, 176, 172, 159, 162, 177, 162, 164, + 160, 141, 161, 132, 131, 145, 153, 173, 185, 178, 167, 150, 115, 77, 90, 91, + 81, 55, 30, 23, 25, 27, 48, 86, 126, 113, 102, 118, 114, 108, 114, 129, + 143, 144, 138, 134, 135, 135, 140, 123, 123, 126, 118, 126, 131, 117, 117, 123, + 118, 102, 89, 86, 81, 74, 72, 67, 66, 71, 76, 82, 92, 101, 116, 115, + 112, 104, 93, 71, 37, 8, 10, 14, 19, 19, 13, 10, 10, 12, 8, 20, + 79, 74, 15, 13, 14, 38, 17, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 25, 46, 68, 77, + 93, 94, 72, 49, 55, 76, 51, 78, 85, 72, 62, 58, 65, 80, 77, 79, + 85, 93, 97, 100, 105, 111, 117, 120, 124, 124, 121, 117, 115, 114, 94, 100, + 105, 118, 144, 168, 164, 147, 177, 163, 146, 157, 120, 106, 105, 142, 235, 242, + 248, 250, 250, 225, 145, 64, 98, 71, 47, 61, 109, 150, 145, 118, 87, 95, + 94, 92, 108, 117, 112, 122, 124, 139, 148, 142, 135, 135, 134, 131, 125, 117, + 128, 129, 111, 119, 132, 120, 127, 110, 105, 108, 106, 105, 103, 100, 92, 84, + 77, 70, 56, 56, 83, 116, 117, 119, 114, 104, 98, 85, 53, 21, 4, 10, + 18, 20, 15, 10, 14, 18, 19, 18, 77, 91, 14, 2, 0, 25, 20, 92, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 11, 23, 49, 81, 66, 48, 42, 56, 82, 101, 105, 108, 79, + 39, 26, 40, 48, 54, 67, 85, 88, 99, 110, 115, 119, 130, 142, 139, 138, + 141, 145, 149, 149, 144, 139, 131, 121, 99, 83, 94, 126, 149, 156, 150, 147, + 135, 117, 69, 105, 112, 79, 161, 204, 230, 205, 157, 122, 99, 84, 88, 100, + 103, 90, 75, 68, 65, 61, 93, 102, 89, 89, 101, 98, 108, 138, 139, 144, + 142, 132, 129, 133, 130, 121, 125, 123, 128, 123, 107, 108, 110, 97, 66, 57, + 60, 64, 59, 66, 73, 64, 71, 72, 80, 85, 73, 59, 69, 91, 111, 121, + 123, 114, 106, 98, 71, 43, 6, 8, 12, 17, 16, 13, 16, 24, 14, 13, + 73, 88, 15, 4, 0, 27, 17, 7, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 10, 23, 58, 22, 68, + 91, 76, 72, 93, 97, 75, 28, 26, 29, 48, 68, 69, 72, 89, 88, 95, + 106, 116, 120, 126, 137, 149, 163, 156, 148, 147, 149, 149, 144, 140, 143, 146, + 145, 131, 97, 75, 90, 120, 105, 51, 79, 105, 88, 48, 79, 94, 113, 120, + 122, 115, 111, 110, 104, 95, 92, 86, 83, 86, 94, 95, 90, 84, 96, 115, + 95, 91, 103, 108, 121, 132, 143, 138, 131, 127, 128, 129, 121, 112, 122, 122, + 109, 92, 85, 79, 66, 53, 42, 47, 64, 60, 45, 64, 85, 75, 61, 57, + 64, 81, 83, 72, 62, 61, 93, 109, 121, 120, 112, 102, 80, 58, 22, 14, + 9, 13, 16, 16, 20, 24, 6, 14, 71, 65, 8, 4, 0, 19, 10, 4, + 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 12, 48, 89, 101, 88, 54, 23, 35, 69, 68, 37, 46, 59, + 66, 69, 76, 79, 90, 111, 118, 125, 131, 135, 139, 145, 149, 150, 146, 141, + 139, 139, 143, 145, 146, 145, 139, 129, 130, 142, 135, 99, 55, 30, 21, 66, + 92, 50, 62, 86, 109, 82, 96, 99, 102, 100, 97, 93, 94, 99, 88, 84, + 82, 81, 76, 76, 92, 113, 135, 135, 95, 89, 108, 125, 144, 135, 137, 130, + 128, 132, 136, 128, 116, 108, 116, 132, 108, 75, 69, 60, 52, 63, 55, 24, + 32, 54, 50, 67, 103, 117, 116, 90, 64, 56, 58, 63, 67, 72, 78, 93, + 106, 109, 104, 95, 81, 69, 46, 24, 7, 11, 17, 19, 21, 23, 16, 37, + 87, 47, 10, 11, 8, 14, 6, 2, 2, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 83, 96, 75, 51, 26, + 12, 26, 48, 56, 49, 40, 50, 77, 92, 92, 101, 111, 120, 129, 145, 149, + 149, 148, 152, 158, 155, 147, 143, 145, 146, 147, 143, 138, 133, 132, 141, 140, + 136, 133, 139, 130, 90, 49, 66, 89, 58, 69, 97, 110, 83, 108, 104, 98, + 96, 100, 99, 94, 93, 99, 99, 89, 83, 87, 79, 69, 76, 93, 178, 153, + 98, 90, 101, 115, 153, 160, 132, 127, 131, 144, 145, 131, 116, 110, 117, 157, + 137, 91, 76, 64, 73, 117, 144, 45, 18, 62, 63, 50, 81, 120, 133, 122, + 106, 91, 76, 62, 53, 48, 79, 86, 92, 95, 95, 91, 86, 84, 62, 34, + 9, 9, 17, 20, 21, 21, 9, 41, 86, 24, 4, 8, 8, 6, 5, 5, + 4, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 100, 96, 66, 36, 20, 8, 10, 29, 37, 28, 28, 40, 66, 79, + 95, 108, 121, 134, 139, 140, 153, 152, 152, 151, 150, 148, 147, 145, 148, 143, + 137, 130, 127, 126, 126, 128, 116, 120, 122, 120, 124, 126, 113, 95, 67, 97, + 70, 74, 99, 97, 101, 94, 96, 98, 99, 101, 100, 99, 97, 98, 97, 94, + 88, 82, 75, 69, 62, 58, 160, 191, 107, 88, 79, 134, 144, 128, 126, 136, + 140, 139, 134, 123, 135, 165, 183, 191, 151, 93, 77, 84, 83, 85, 95, 50, + 33, 60, 81, 79, 94, 124, 129, 118, 107, 100, 90, 73, 58, 48, 50, 58, + 72, 84, 92, 92, 89, 87, 81, 54, 26, 16, 15, 16, 22, 28, 20, 83, + 68, 10, 6, 16, 8, 11, 10, 14, 12, 89, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 78, 37, 10, 22, 17, + 20, 32, 37, 38, 48, 65, 81, 97, 114, 128, 138, 149, 152, 152, 146, 147, + 149, 150, 150, 149, 148, 146, 139, 140, 140, 139, 135, 129, 122, 117, 123, 120, + 112, 106, 108, 116, 119, 118, 71, 74, 93, 103, 99, 98, 98, 101, 98, 99, + 101, 102, 101, 100, 99, 99, 101, 99, 95, 91, 87, 81, 74, 70, 104, 214, + 151, 90, 85, 79, 110, 124, 127, 129, 123, 122, 131, 141, 160, 186, 192, 198, + 171, 123, 96, 89, 82, 77, 44, 53, 74, 90, 86, 79, 100, 132, 128, 116, + 105, 96, 84, 70, 57, 52, 56, 62, 70, 78, 83, 86, 87, 86, 85, 78, + 51, 16, 5, 19, 24, 14, 65, 73, 37, 1, 10, 20, 9, 6, 7, 11, + 10, 7, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 36, 15, 11, 16, 20, 20, 22, 28, 35, 50, 72, 93, 109, 124, + 140, 147, 149, 152, 151, 150, 144, 145, 148, 150, 151, 150, 150, 148, 141, 142, + 144, 145, 142, 135, 128, 123, 116, 113, 112, 113, 110, 110, 115, 124, 90, 58, + 100, 117, 101, 106, 98, 106, 102, 104, 104, 104, 104, 102, 99, 100, 99, 99, + 98, 96, 93, 86, 79, 76, 50, 194, 190, 100, 117, 75, 91, 122, 113, 121, + 120, 124, 144, 158, 166, 174, 191, 194, 191, 164, 128, 111, 104, 93, 92, 101, + 104, 97, 92, 103, 121, 133, 112, 103, 94, 88, 78, 69, 65, 66, 84, 83, + 82, 79, 77, 76, 75, 75, 91, 77, 60, 43, 21, 11, 26, 50, 83, 45, + 8, 1, 11, 14, 7, 5, 5, 9, 10, 8, 6, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 7, 8, 14, 21, 21, 18, + 15, 19, 36, 62, 91, 110, 126, 138, 148, 148, 145, 144, 144, 144, 145, 148, + 150, 151, 151, 150, 148, 146, 141, 139, 137, 134, 132, 134, 133, 135, 129, 126, + 127, 127, 117, 104, 105, 117, 120, 81, 90, 104, 106, 111, 101, 101, 105, 106, + 106, 106, 103, 102, 99, 99, 94, 95, 95, 96, 94, 89, 81, 78, 89, 58, + 210, 174, 120, 108, 83, 102, 102, 121, 129, 131, 147, 155, 152, 152, 169, 173, + 193, 190, 157, 142, 143, 132, 138, 136, 127, 123, 128, 132, 118, 98, 96, 90, + 87, 86, 81, 77, 78, 83, 104, 101, 94, 87, 80, 76, 74, 74, 69, 74, + 84, 77, 37, 8, 43, 103, 51, 13, 0, 10, 6, 1, 7, 8, 6, 9, + 9, 6, 7, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 18, 24, 24, 17, 10, 30, 20, 12, 23, 49, 82, 107, 118, 127, 135, + 140, 139, 137, 140, 144, 146, 145, 145, 147, 146, 144, 141, 138, 136, 126, 122, + 118, 117, 119, 123, 128, 131, 155, 147, 139, 133, 118, 104, 108, 121, 131, 124, + 87, 94, 115, 105, 101, 97, 104, 105, 105, 105, 103, 100, 96, 95, 90, 91, + 92, 94, 95, 93, 88, 87, 85, 83, 109, 203, 197, 97, 93, 88, 102, 124, + 132, 128, 132, 140, 147, 157, 156, 165, 195, 204, 181, 168, 173, 166, 148, 144, + 137, 130, 125, 119, 114, 111, 103, 101, 100, 101, 97, 93, 92, 97, 98, 97, + 93, 89, 85, 83, 82, 82, 82, 80, 72, 65, 68, 75, 66, 51, 25, 2, + 4, 13, 0, 0, 12, 7, 7, 8, 5, 3, 5, 11, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 9, 8, 10, 21, 31, 41, 23, + 17, 38, 74, 104, 119, 125, 134, 138, 137, 132, 131, 134, 137, 136, 134, 135, + 133, 132, 129, 127, 124, 123, 111, 110, 111, 113, 115, 119, 121, 122, 136, 136, + 140, 141, 136, 127, 123, 127, 128, 142, 97, 101, 119, 95, 98, 101, 104, 106, + 108, 109, 107, 102, 98, 96, 86, 86, 86, 86, 88, 90, 90, 90, 82, 85, + 94, 121, 200, 222, 118, 130, 102, 124, 135, 134, 137, 141, 149, 165, 174, 192, + 219, 224, 205, 190, 184, 178, 168, 153, 137, 126, 119, 119, 129, 142, 128, 124, + 121, 122, 117, 109, 104, 104, 97, 96, 93, 91, 87, 84, 79, 79, 98, 83, + 69, 72, 84, 81, 51, 21, 37, 17, 9, 7, 0, 7, 17, 3, 4, 5, + 3, 1, 5, 10, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 11, 10, 14, 36, 59, 42, 22, 21, 55, 95, 116, 122, 126, 138, 137, + 132, 126, 124, 125, 123, 117, 119, 118, 117, 116, 116, 117, 117, 117, 105, 106, + 108, 111, 113, 116, 116, 116, 110, 119, 131, 139, 143, 139, 125, 114, 139, 117, + 92, 103, 112, 98, 97, 107, 110, 114, 119, 122, 121, 115, 108, 104, 97, 93, + 88, 83, 82, 83, 84, 85, 95, 58, 93, 103, 107, 215, 226, 159, 137, 142, + 141, 142, 148, 147, 151, 165, 194, 224, 243, 238, 223, 198, 173, 163, 156, 149, + 144, 145, 147, 145, 135, 126, 139, 133, 128, 128, 125, 118, 111, 109, 108, 106, + 102, 97, 90, 84, 80, 77, 71, 85, 96, 85, 51, 28, 43, 74, 60, 39, + 20, 8, 2, 9, 12, 2, 3, 4, 5, 6, 10, 14, 10, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 13, 17, 36, 59, 35, 17, + 22, 63, 103, 118, 120, 126, 125, 125, 120, 118, 120, 122, 118, 110, 109, 108, + 107, 108, 111, 114, 117, 118, 106, 104, 102, 102, 103, 107, 111, 113, 125, 127, + 124, 120, 122, 123, 111, 95, 157, 79, 76, 96, 99, 107, 98, 109, 120, 125, + 131, 135, 133, 128, 118, 114, 117, 111, 99, 88, 82, 80, 80, 81, 87, 88, + 85, 89, 68, 90, 179, 226, 194, 173, 143, 133, 140, 143, 152, 172, 195, 235, + 246, 237, 224, 193, 155, 141, 142, 144, 139, 129, 128, 138, 142, 138, 134, 125, + 119, 121, 124, 121, 117, 115, 111, 110, 107, 102, 99, 95, 93, 92, 84, 84, + 60, 31, 37, 72, 85, 72, 66, 52, 32, 16, 6, 2, 3, 3, 4, 7, + 9, 13, 19, 21, 13, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 175, 14, 14, 20, 31, 39, 12, 17, 57, 84, 99, 119, 119, 124, 118, 122, + 120, 111, 102, 102, 103, 101, 108, 98, 100, 120, 134, 133, 123, 116, 96, 95, + 95, 93, 94, 97, 104, 108, 115, 116, 132, 131, 117, 132, 136, 108, 150, 83, + 79, 96, 105, 113, 104, 111, 128, 130, 136, 139, 138, 135, 128, 126, 128, 124, + 117, 111, 105, 97, 87, 80, 78, 80, 83, 85, 84, 89, 104, 120, 188, 218, + 199, 165, 170, 174, 169, 180, 208, 232, 246, 229, 191, 158, 143, 137, 134, 128, + 124, 121, 120, 122, 123, 122, 121, 118, 117, 119, 122, 121, 115, 109, 108, 110, + 111, 107, 99, 90, 82, 77, 32, 42, 57, 74, 84, 84, 78, 72, 66, 61, + 52, 41, 30, 20, 13, 9, 13, 8, 7, 19, 27, 24, 15, 8, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 18, 17, 16, 18, 22, 25, 23, 31, + 72, 98, 109, 123, 122, 127, 124, 115, 106, 102, 99, 94, 90, 91, 98, 110, + 126, 125, 105, 93, 86, 74, 39, 37, 44, 69, 102, 125, 130, 123, 117, 124, + 123, 123, 129, 132, 132, 135, 159, 101, 89, 91, 91, 104, 111, 128, 132, 134, + 140, 144, 145, 141, 137, 135, 130, 126, 121, 115, 110, 101, 91, 83, 73, 74, + 78, 84, 88, 92, 98, 106, 79, 143, 183, 195, 201, 189, 193, 227, 229, 215, + 194, 176, 168, 161, 146, 129, 125, 121, 118, 117, 117, 117, 117, 117, 132, 125, + 118, 113, 114, 113, 110, 107, 111, 110, 102, 89, 69, 51, 37, 30, 63, 66, + 72, 80, 86, 87, 83, 81, 80, 81, 79, 75, 64, 50, 35, 26, 12, 10, + 16, 29, 37, 29, 13, 3, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 19, 21, 20, 19, 16, 14, 21, 33, 81, 110, 116, 124, 120, 127, 126, 112, + 99, 96, 93, 90, 94, 105, 113, 109, 110, 88, 52, 43, 38, 15, 51, 57, + 74, 110, 157, 189, 187, 172, 157, 174, 165, 152, 150, 124, 111, 140, 118, 93, + 96, 99, 99, 110, 117, 131, 136, 140, 144, 149, 150, 149, 146, 144, 137, 133, + 130, 126, 121, 112, 101, 93, 80, 74, 72, 77, 84, 89, 93, 100, 88, 85, + 87, 133, 197, 215, 213, 229, 229, 223, 208, 182, 160, 147, 141, 136, 149, 144, + 137, 130, 124, 120, 114, 111, 113, 114, 118, 124, 129, 127, 120, 114, 99, 79, + 49, 26, 22, 41, 71, 93, 95, 93, 89, 90, 91, 94, 94, 94, 99, 101, + 102, 100, 90, 75, 59, 47, 24, 22, 25, 33, 36, 25, 10, 0, 4, 86, + 255, 255, 255, 255, 255, 255, 255, 255, 17, 21, 22, 21, 18, 14, 10, 27, + 85, 119, 126, 130, 122, 127, 114, 106, 96, 90, 89, 94, 107, 122, 106, 87, + 75, 55, 29, 43, 69, 67, 46, 52, 63, 87, 130, 174, 193, 191, 183, 174, + 147, 131, 136, 135, 143, 168, 89, 90, 99, 108, 112, 120, 124, 129, 141, 143, + 148, 151, 153, 152, 150, 149, 144, 141, 139, 137, 132, 125, 114, 106, 99, 87, + 74, 69, 71, 78, 91, 101, 91, 99, 100, 107, 118, 128, 167, 223, 216, 195, + 166, 146, 143, 145, 140, 129, 137, 135, 131, 131, 129, 126, 123, 120, 122, 120, + 117, 109, 98, 79, 59, 46, 27, 42, 62, 83, 95, 104, 107, 108, 109, 106, + 101, 100, 100, 102, 103, 102, 103, 100, 95, 90, 83, 73, 63, 56, 44, 35, + 28, 25, 22, 13, 5, 2, 1, 2, 255, 255, 255, 255, 255, 255, 255, 255, + 14, 15, 17, 17, 17, 15, 9, 26, 87, 128, 138, 139, 125, 128, 99, 95, + 87, 83, 91, 101, 102, 96, 73, 61, 65, 63, 49, 66, 123, 165, 103, 99, + 89, 91, 127, 181, 211, 215, 204, 165, 136, 124, 122, 133, 125, 92, 116, 117, + 105, 104, 112, 122, 135, 139, 144, 146, 149, 152, 152, 153, 151, 150, 148, 147, + 144, 142, 140, 133, 124, 116, 112, 101, 84, 73, 66, 68, 80, 93, 110, 101, + 92, 98, 117, 125, 121, 120, 74, 112, 146, 152, 131, 107, 95, 91, 94, 93, + 89, 86, 85, 82, 77, 75, 76, 61, 44, 33, 41, 61, 86, 101, 122, 120, + 117, 111, 105, 100, 99, 99, 111, 109, 108, 107, 107, 105, 101, 99, 94, 89, + 80, 74, 71, 65, 58, 52, 51, 40, 27, 19, 11, 4, 1, 3, 4, 8, + 93, 255, 255, 255, 255, 255, 255, 255, 12, 10, 9, 11, 14, 16, 13, 22, + 78, 123, 137, 136, 119, 119, 100, 87, 78, 85, 100, 102, 82, 63, 82, 69, + 61, 64, 61, 58, 82, 120, 116, 116, 113, 123, 166, 216, 229, 214, 182, 157, + 152, 143, 125, 134, 134, 99, 123, 127, 104, 104, 120, 127, 141, 145, 148, 149, + 152, 154, 155, 156, 155, 154, 153, 149, 146, 146, 144, 140, 132, 126, 118, 110, + 101, 91, 78, 70, 71, 78, 88, 98, 105, 104, 107, 115, 116, 109, 121, 109, + 94, 93, 102, 110, 99, 84, 104, 102, 98, 95, 94, 92, 90, 87, 78, 90, + 106, 120, 126, 123, 113, 106, 107, 109, 114, 118, 122, 124, 128, 131, 111, 112, + 111, 111, 108, 104, 96, 94, 93, 89, 83, 81, 79, 74, 64, 57, 47, 39, + 30, 24, 15, 5, 0, 3, 3, 9, 14, 13, 255, 255, 255, 255, 255, 255, + 13, 11, 8, 11, 19, 24, 14, 12, 58, 103, 123, 126, 109, 107, 102, 82, + 76, 90, 92, 77, 68, 75, 122, 107, 69, 56, 67, 52, 37, 54, 81, 103, + 124, 147, 196, 245, 251, 235, 229, 202, 171, 140, 115, 107, 116, 120, 102, 115, + 97, 111, 134, 133, 143, 146, 153, 155, 157, 160, 162, 163, 164, 164, 161, 157, + 153, 151, 151, 148, 142, 138, 131, 124, 116, 110, 99, 84, 74, 69, 79, 90, + 101, 100, 94, 107, 126, 130, 135, 138, 136, 125, 114, 110, 108, 108, 90, 90, + 90, 94, 101, 107, 111, 112, 111, 108, 105, 102, 102, 107, 113, 117, 121, 120, + 121, 119, 115, 114, 114, 116, 116, 115, 112, 111, 107, 104, 97, 95, 98, 94, + 88, 86, 87, 83, 73, 66, 54, 48, 40, 32, 20, 8, 2, 5, 4, 7, + 8, 8, 90, 255, 255, 255, 255, 255, 16, 16, 14, 19, 28, 35, 18, 6, + 45, 89, 114, 124, 108, 106, 93, 74, 75, 89, 71, 40, 61, 111, 129, 135, + 95, 66, 81, 76, 69, 97, 107, 134, 149, 151, 174, 218, 242, 238, 193, 170, + 136, 139, 159, 135, 99, 98, 98, 113, 93, 111, 136, 131, 145, 153, 157, 159, + 162, 165, 168, 172, 174, 176, 171, 166, 162, 160, 158, 157, 152, 148, 148, 136, + 124, 120, 113, 99, 83, 74, 69, 77, 100, 114, 108, 108, 115, 114, 121, 127, + 132, 131, 131, 131, 129, 128, 134, 129, 123, 118, 115, 113, 112, 111, 116, 117, + 120, 123, 122, 124, 125, 125, 119, 121, 125, 126, 123, 120, 117, 117, 118, 116, + 111, 108, 107, 105, 103, 104, 97, 90, 80, 76, 76, 77, 71, 67, 67, 59, + 47, 35, 20, 7, 3, 7, 10, 7, 4, 5, 9, 255, 255, 255, 255, 255, + 24, 14, 10, 19, 29, 29, 22, 4, 24, 74, 100, 103, 104, 109, 94, 82, + 63, 47, 43, 56, 86, 111, 125, 133, 126, 106, 92, 98, 110, 116, 150, 149, + 152, 151, 151, 172, 192, 191, 162, 144, 124, 114, 113, 110, 97, 84, 101, 96, + 100, 117, 136, 148, 154, 156, 159, 164, 171, 174, 175, 176, 176, 176, 175, 179, + 180, 176, 170, 165, 159, 153, 147, 149, 142, 132, 122, 114, 99, 85, 71, 73, + 86, 106, 119, 120, 117, 117, 127, 131, 133, 129, 128, 130, 130, 128, 132, 133, + 133, 132, 130, 128, 124, 122, 125, 127, 128, 128, 123, 122, 123, 125, 128, 128, + 129, 128, 125, 121, 117, 115, 120, 117, 113, 111, 111, 110, 108, 108, 105, 100, + 91, 84, 78, 72, 69, 67, 62, 53, 37, 23, 16, 12, 7, 0, 0, 6, + 19, 16, 2, 86, 255, 255, 255, 255, 19, 17, 20, 24, 22, 16, 23, 13, + 19, 52, 83, 92, 95, 106, 86, 68, 46, 37, 42, 60, 83, 101, 108, 116, + 115, 102, 97, 109, 122, 127, 136, 122, 128, 143, 144, 148, 166, 179, 112, 136, + 151, 134, 96, 76, 89, 110, 105, 100, 105, 121, 141, 153, 158, 160, 166, 171, + 177, 180, 183, 184, 185, 187, 183, 188, 189, 184, 178, 172, 164, 156, 158, 156, + 149, 137, 129, 122, 110, 99, 88, 81, 80, 88, 98, 106, 116, 124, 124, 129, + 132, 131, 132, 136, 133, 128, 132, 134, 133, 134, 132, 130, 127, 127, 123, 126, + 127, 128, 125, 125, 126, 130, 128, 129, 130, 131, 130, 130, 129, 128, 123, 120, + 116, 113, 112, 111, 108, 108, 107, 103, 95, 87, 80, 74, 69, 67, 61, 55, + 40, 26, 15, 10, 6, 2, 0, 4, 11, 13, 9, 3, 85, 255, 255, 255, + 16, 18, 20, 19, 20, 21, 33, 33, 22, 33, 68, 84, 87, 102, 80, 58, + 38, 36, 48, 65, 81, 90, 82, 92, 94, 92, 95, 109, 119, 123, 140, 148, + 147, 132, 126, 144, 144, 117, 231, 181, 119, 91, 95, 109, 110, 100, 109, 104, + 108, 125, 143, 155, 161, 164, 174, 179, 183, 189, 192, 196, 202, 204, 202, 206, + 207, 202, 194, 186, 177, 166, 164, 161, 151, 138, 130, 125, 118, 111, 104, 94, + 83, 80, 85, 95, 109, 121, 129, 131, 134, 134, 133, 137, 136, 133, 134, 135, + 135, 135, 134, 133, 131, 129, 126, 128, 129, 130, 129, 129, 131, 132, 125, 126, + 126, 126, 127, 128, 128, 129, 126, 124, 119, 116, 115, 112, 109, 107, 109, 106, + 100, 93, 86, 79, 72, 68, 67, 63, 51, 37, 22, 13, 10, 11, 1, 4, + 4, 17, 29, 9, 0, 255, 255, 255, 10, 16, 18, 14, 20, 28, 33, 46, + 27, 21, 58, 81, 80, 93, 79, 65, 54, 53, 60, 68, 78, 86, 91, 98, + 103, 105, 113, 123, 128, 127, 139, 129, 141, 148, 115, 90, 119, 163, 85, 96, + 108, 110, 102, 100, 107, 114, 108, 103, 107, 125, 145, 158, 164, 168, 180, 184, + 191, 198, 205, 211, 218, 223, 222, 226, 224, 218, 210, 200, 187, 175, 165, 157, + 144, 132, 123, 118, 116, 115, 109, 104, 98, 95, 94, 97, 101, 105, 127, 132, + 135, 135, 132, 132, 133, 134, 133, 135, 134, 134, 132, 131, 127, 127, 126, 128, + 128, 129, 128, 129, 129, 130, 127, 126, 124, 122, 120, 120, 121, 120, 125, 123, + 119, 117, 115, 114, 110, 108, 111, 109, 104, 98, 91, 84, 75, 70, 69, 66, + 60, 44, 24, 11, 11, 17, 5, 9, 8, 34, 61, 31, 0, 255, 255, 255, + 3, 9, 16, 15, 15, 16, 14, 35, 21, 12, 50, 76, 75, 82, 73, 74, + 77, 77, 72, 71, 80, 92, 102, 108, 114, 120, 127, 132, 133, 132, 126, 126, + 114, 88, 82, 112, 135, 127, 120, 111, 101, 97, 102, 111, 118, 121, 106, 102, + 106, 125, 146, 161, 169, 174, 185, 191, 200, 210, 218, 226, 233, 238, 236, 237, + 234, 226, 217, 207, 192, 179, 168, 157, 140, 126, 115, 110, 111, 115, 110, 113, + 115, 114, 109, 104, 97, 93, 104, 115, 129, 138, 136, 133, 133, 136, 136, 136, + 136, 135, 133, 130, 127, 125, 123, 123, 123, 125, 127, 128, 129, 129, 131, 131, + 128, 126, 123, 122, 121, 121, 122, 120, 119, 117, 116, 115, 111, 110, 112, 110, + 106, 101, 95, 86, 79, 74, 66, 63, 57, 43, 20, 3, 3, 12, 8, 14, + 17, 48, 85, 58, 8, 86, 255, 255, 16, 4, 9, 15, 12, 7, 1, 21, + 16, 13, 47, 78, 81, 80, 69, 78, 89, 91, 83, 78, 87, 100, 100, 107, + 115, 121, 125, 125, 123, 122, 127, 79, 68, 103, 121, 113, 101, 96, 99, 99, + 100, 107, 113, 118, 122, 122, 107, 104, 109, 129, 151, 166, 174, 179, 188, 196, + 209, 219, 227, 233, 238, 240, 241, 240, 235, 226, 220, 212, 198, 185, 172, 158, + 140, 123, 110, 103, 106, 114, 111, 119, 124, 122, 117, 113, 107, 100, 81, 92, + 111, 132, 140, 141, 139, 139, 142, 142, 141, 141, 138, 136, 132, 131, 121, 121, + 121, 125, 128, 132, 132, 132, 129, 129, 128, 127, 126, 125, 124, 124, 121, 120, + 119, 118, 117, 115, 112, 111, 112, 109, 105, 101, 95, 88, 82, 77, 68, 64, + 58, 45, 22, 2, 1, 10, 2, 7, 12, 44, 85, 74, 23, 0, 255, 255, + 54, 35, 22, 19, 17, 13, 7, 18, 19, 21, 44, 79, 90, 83, 78, 81, + 89, 94, 92, 90, 95, 105, 111, 115, 121, 123, 118, 110, 103, 101, 54, 80, + 114, 123, 111, 110, 117, 116, 119, 114, 110, 115, 126, 130, 122, 113, 109, 105, + 110, 129, 150, 164, 172, 177, 186, 195, 209, 220, 226, 227, 228, 228, 229, 226, + 221, 215, 211, 207, 196, 185, 171, 156, 136, 119, 102, 93, 96, 105, 113, 124, + 130, 131, 129, 127, 123, 118, 94, 87, 90, 109, 129, 140, 142, 142, 144, 144, + 144, 146, 144, 143, 140, 140, 130, 129, 127, 130, 132, 134, 132, 132, 126, 128, + 128, 128, 127, 126, 125, 125, 124, 123, 121, 120, 120, 117, 112, 111, 110, 108, + 104, 100, 95, 90, 84, 81, 74, 67, 61, 49, 28, 6, 4, 13, 0, 3, + 7, 30, 72, 88, 46, 0, 255, 255, 84, 84, 56, 33, 22, 19, 19, 19, + 21, 23, 38, 73, 91, 82, 92, 87, 86, 92, 98, 100, 102, 104, 107, 109, + 111, 108, 94, 77, 65, 61, 106, 94, 104, 118, 109, 100, 110, 121, 121, 122, + 123, 126, 128, 125, 121, 118, 108, 105, 110, 127, 147, 161, 167, 172, 181, 191, + 204, 215, 218, 217, 213, 211, 207, 205, 199, 195, 194, 192, 185, 174, 167, 150, + 130, 112, 95, 84, 87, 96, 111, 125, 137, 139, 140, 141, 137, 130, 125, 98, + 76, 85, 111, 132, 141, 143, 143, 143, 145, 147, 148, 147, 146, 146, 143, 140, + 136, 135, 136, 135, 131, 129, 129, 131, 133, 133, 131, 129, 126, 126, 128, 127, + 124, 123, 121, 117, 112, 109, 110, 108, 103, 99, 95, 90, 84, 82, 73, 66, + 59, 48, 26, 5, 2, 9, 8, 7, 10, 27, 69, 104, 72, 6, 85, 255, + 176, 14, 48, 70, 75, 74, 68, 67, 56, 57, 78, 93, 100, 107, 91, 92, + 95, 98, 99, 97, 94, 90, 73, 70, 68, 70, 77, 91, 104, 113, 127, 123, + 118, 114, 115, 118, 122, 125, 128, 118, 122, 127, 123, 124, 126, 120, 114, 110, + 113, 126, 135, 140, 151, 162, 171, 177, 184, 190, 198, 204, 204, 201, 191, 188, + 185, 186, 188, 186, 179, 172, 163, 146, 128, 99, 57, 36, 43, 53, 80, 108, + 136, 148, 153, 156, 150, 138, 129, 123, 98, 77, 71, 111, 154, 136, 141, 144, + 146, 145, 142, 140, 141, 143, 147, 144, 141, 140, 138, 137, 134, 131, 132, 132, + 132, 131, 130, 130, 130, 131, 130, 128, 123, 122, 121, 119, 114, 111, 112, 109, + 104, 99, 96, 92, 88, 85, 77, 69, 59, 47, 28, 8, 0, 0, 6, 2, + 6, 37, 65, 87, 81, 23, 0, 255, 255, 4, 1, 19, 23, 29, 61, 71, + 73, 77, 94, 100, 96, 98, 104, 99, 92, 84, 77, 69, 60, 55, 69, 75, + 86, 98, 109, 118, 125, 127, 124, 122, 121, 122, 123, 124, 124, 124, 124, 120, + 128, 132, 125, 124, 126, 121, 112, 111, 113, 123, 127, 130, 138, 148, 149, 160, + 173, 184, 190, 191, 190, 188, 188, 185, 184, 182, 181, 178, 173, 169, 159, 147, + 109, 56, 12, 0, 2, 14, 38, 71, 107, 129, 142, 151, 150, 143, 137, 130, + 107, 85, 70, 100, 146, 138, 145, 146, 147, 145, 142, 139, 140, 141, 144, 142, + 139, 138, 138, 137, 134, 132, 133, 134, 133, 132, 131, 131, 131, 131, 131, 127, + 122, 119, 120, 120, 117, 116, 112, 109, 104, 99, 96, 92, 88, 85, 79, 72, + 61, 48, 28, 9, 0, 0, 1, 3, 8, 36, 60, 87, 86, 34, 0, 255, + 255, 25, 0, 0, 1, 5, 6, 28, 40, 46, 55, 55, 46, 46, 41, 43, + 47, 55, 66, 76, 84, 87, 97, 104, 115, 125, 131, 132, 130, 126, 126, 126, + 128, 130, 129, 127, 124, 120, 122, 124, 135, 138, 128, 125, 127, 122, 109, 111, + 115, 119, 118, 119, 123, 128, 138, 144, 154, 165, 170, 175, 177, 177, 179, 178, + 177, 176, 173, 171, 168, 167, 148, 141, 88, 24, 0, 0, 14, 37, 46, 75, + 108, 132, 148, 160, 161, 154, 144, 136, 116, 95, 69, 86, 137, 144, 149, 148, + 148, 146, 142, 139, 139, 140, 140, 138, 137, 137, 138, 138, 136, 135, 134, 135, + 134, 133, 132, 132, 132, 131, 130, 126, 122, 119, 118, 119, 119, 119, 111, 108, + 103, 99, 95, 91, 87, 85, 81, 76, 64, 49, 28, 10, 2, 1, 0, 1, + 8, 32, 57, 88, 96, 46, 0, 255, 255, 35, 12, 2, 17, 12, 27, 56, + 73, 77, 82, 81, 78, 83, 101, 100, 100, 103, 109, 114, 117, 119, 131, 131, + 131, 130, 129, 128, 126, 125, 135, 134, 133, 131, 128, 125, 122, 120, 128, 127, + 135, 136, 129, 129, 129, 121, 107, 115, 121, 120, 117, 114, 114, 114, 128, 129, + 137, 152, 165, 171, 172, 172, 170, 166, 164, 165, 167, 168, 166, 163, 147, 129, + 63, 10, 5, 8, 21, 54, 76, 90, 106, 122, 140, 154, 156, 151, 146, 138, + 121, 103, 68, 74, 131, 152, 153, 151, 150, 147, 144, 141, 140, 140, 138, 137, + 136, 137, 139, 140, 139, 139, 135, 137, 136, 134, 134, 133, 132, 133, 129, 127, + 124, 122, 119, 119, 117, 118, 109, 106, 101, 97, 94, 91, 87, 84, 82, 77, + 65, 47, 27, 10, 2, 0, 0, 0, 6, 28, 55, 92, 103, 56, 2, 255, + 255, 14, 11, 0, 25, 16, 32, 68, 92, 96, 100, 102, 103, 110, 95, 97, + 103, 113, 124, 132, 138, 140, 134, 132, 127, 125, 125, 129, 132, 135, 141, 136, + 131, 126, 123, 123, 125, 127, 135, 129, 131, 130, 128, 133, 132, 118, 107, 120, + 128, 125, 122, 120, 114, 106, 97, 90, 98, 120, 147, 161, 166, 167, 166, 161, + 157, 160, 166, 167, 163, 156, 137, 104, 45, 23, 40, 39, 46, 85, 108, 103, + 101, 112, 135, 156, 161, 156, 147, 139, 125, 109, 69, 70, 126, 152, 156, 153, + 150, 148, 146, 145, 143, 143, 141, 139, 139, 140, 142, 143, 142, 141, 138, 138, + 137, 135, 135, 134, 133, 133, 129, 129, 128, 126, 122, 118, 113, 112, 107, 105, + 101, 97, 93, 90, 86, 84, 81, 78, 64, 44, 24, 10, 3, 0, 0, 0, + 3, 29, 56, 93, 105, 62, 5, 85, 255, 15, 21, 1, 23, 10, 33, 78, + 110, 117, 121, 122, 120, 126, 125, 126, 126, 130, 133, 132, 130, 127, 127, 127, + 126, 126, 129, 132, 135, 136, 136, 133, 126, 122, 123, 126, 132, 135, 136, 129, + 129, 127, 128, 137, 134, 116, 109, 126, 135, 134, 132, 129, 116, 99, 59, 41, + 34, 53, 87, 118, 144, 159, 165, 160, 157, 159, 163, 162, 156, 149, 127, 89, + 52, 59, 85, 80, 81, 111, 131, 119, 111, 120, 144, 163, 168, 163, 152, 140, + 125, 110, 73, 72, 125, 146, 155, 151, 147, 145, 145, 146, 145, 144, 143, 141, + 140, 141, 143, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 134, 128, 131, + 131, 129, 124, 116, 111, 110, 109, 105, 101, 97, 94, 92, 88, 86, 80, 78, + 64, 43, 22, 11, 4, 0, 0, 0, 6, 39, 61, 87, 101, 69, 6, 0, + 255, 29, 26, 21, 14, 11, 35, 81, 114, 121, 124, 125, 123, 126, 123, 122, + 122, 125, 128, 128, 126, 123, 125, 126, 126, 128, 129, 129, 129, 129, 129, 128, + 127, 126, 127, 130, 132, 135, 133, 131, 133, 131, 130, 138, 136, 118, 112, 129, + 140, 139, 139, 138, 117, 92, 41, 28, 24, 41, 67, 92, 119, 139, 154, 156, + 159, 160, 157, 153, 148, 146, 133, 100, 80, 89, 96, 83, 74, 81, 113, 109, + 110, 126, 146, 158, 158, 153, 152, 139, 122, 108, 79, 83, 130, 143, 150, 145, + 142, 141, 143, 145, 145, 144, 144, 143, 141, 141, 141, 141, 140, 139, 142, 141, + 140, 139, 137, 136, 135, 134, 128, 130, 130, 127, 122, 116, 113, 113, 111, 109, + 105, 101, 98, 95, 91, 89, 79, 78, 66, 44, 23, 14, 8, 2, 1, 0, + 16, 54, 66, 77, 96, 77, 8, 0, 255, 20, 0, 19, 2, 17, 34, 78, + 106, 107, 110, 113, 116, 120, 119, 117, 117, 119, 120, 122, 119, 118, 124, 123, + 123, 123, 125, 126, 129, 130, 126, 127, 130, 132, 132, 131, 130, 129, 127, 131, + 139, 136, 131, 136, 135, 119, 114, 131, 142, 142, 143, 141, 116, 85, 37, 46, + 69, 99, 113, 109, 108, 112, 137, 147, 157, 157, 149, 143, 142, 146, 124, 104, + 101, 110, 109, 100, 92, 82, 88, 95, 113, 137, 158, 166, 165, 162, 149, 135, + 117, 107, 85, 94, 140, 145, 146, 140, 136, 138, 140, 144, 144, 144, 145, 143, + 141, 140, 140, 140, 138, 136, 142, 142, 140, 139, 137, 136, 135, 135, 127, 129, + 128, 125, 119, 115, 115, 118, 114, 111, 107, 104, 102, 98, 94, 92, 79, 78, + 66, 42, 24, 15, 10, 4, 1, 4, 25, 64, 67, 69, 90, 83, 8, 0, + 255, 15, 20, 24, 22, 18, 26, 63, 89, 97, 104, 104, 102, 106, 109, 113, + 116, 118, 119, 122, 126, 130, 127, 124, 122, 122, 124, 126, 128, 129, 129, 132, + 134, 133, 129, 128, 129, 133, 137, 138, 139, 140, 139, 136, 133, 132, 111, 124, + 137, 144, 148, 144, 122, 98, 57, 80, 99, 113, 130, 144, 133, 110, 113, 124, + 136, 142, 145, 144, 138, 129, 122, 119, 116, 111, 106, 103, 101, 102, 84, 84, + 95, 123, 155, 169, 165, 157, 141, 145, 123, 89, 87, 120, 145, 145, 150, 139, + 131, 132, 137, 145, 146, 144, 145, 143, 143, 143, 144, 143, 140, 137, 137, 138, + 137, 137, 135, 134, 133, 133, 124, 127, 127, 125, 120, 115, 114, 116, 117, 113, + 108, 104, 99, 93, 88, 83, 76, 71, 62, 47, 28, 16, 9, 6, 2, 6, + 18, 65, 93, 50, 83, 83, 16, 0, 255, 13, 19, 24, 22, 18, 22, 59, + 86, 94, 99, 100, 100, 106, 113, 116, 118, 120, 120, 122, 125, 128, 127, 125, + 123, 123, 125, 128, 130, 131, 129, 130, 131, 130, 129, 130, 132, 134, 139, 139, + 140, 140, 140, 139, 138, 138, 118, 126, 135, 143, 149, 147, 135, 122, 88, 101, + 115, 123, 135, 142, 132, 114, 110, 118, 127, 133, 137, 139, 136, 130, 129, 126, + 121, 116, 112, 111, 112, 113, 106, 107, 114, 131, 147, 155, 154, 151, 139, 135, + 114, 90, 95, 123, 140, 137, 143, 135, 130, 130, 135, 141, 145, 145, 147, 145, + 143, 143, 143, 142, 140, 139, 137, 138, 137, 136, 134, 133, 131, 132, 128, 131, + 131, 127, 121, 116, 113, 114, 114, 111, 106, 102, 98, 92, 85, 81, 69, 66, + 56, 42, 27, 16, 10, 6, 0, 6, 25, 77, 96, 44, 74, 84, 16, 0, + 255, 9, 16, 21, 20, 17, 16, 55, 84, 91, 95, 95, 97, 106, 117, 119, + 120, 122, 122, 124, 125, 127, 127, 127, 126, 127, 128, 131, 134, 135, 132, 130, + 128, 128, 131, 134, 136, 136, 141, 141, 141, 141, 142, 142, 143, 145, 126, 126, + 131, 145, 154, 154, 148, 146, 122, 119, 118, 119, 121, 120, 115, 110, 115, 121, + 125, 129, 134, 140, 142, 139, 140, 136, 129, 124, 121, 122, 125, 127, 128, 130, + 132, 134, 135, 137, 139, 140, 132, 122, 104, 95, 106, 126, 133, 127, 132, 129, + 129, 130, 133, 137, 141, 144, 148, 146, 145, 143, 143, 143, 141, 139, 137, 137, + 135, 134, 132, 131, 130, 131, 130, 132, 132, 129, 124, 118, 115, 115, 113, 110, + 105, 99, 95, 90, 83, 79, 65, 62, 54, 43, 30, 19, 12, 9, 2, 2, + 20, 77, 98, 53, 70, 78, 23, 0, 255, 7, 12, 15, 15, 13, 14, 53, + 83, 90, 91, 92, 97, 109, 117, 120, 121, 124, 125, 126, 126, 128, 127, 128, + 129, 130, 131, 134, 137, 138, 136, 132, 128, 129, 134, 138, 140, 140, 145, 144, + 142, 141, 141, 142, 144, 147, 135, 126, 127, 144, 159, 158, 154, 153, 146, 132, + 118, 113, 107, 100, 102, 109, 124, 128, 128, 128, 133, 142, 146, 146, 146, 144, + 139, 136, 134, 135, 137, 138, 135, 138, 135, 130, 126, 125, 126, 126, 122, 112, + 102, 102, 113, 123, 124, 120, 119, 120, 124, 126, 127, 130, 135, 140, 146, 145, + 146, 147, 148, 146, 142, 138, 137, 136, 134, 133, 131, 130, 129, 129, 125, 128, + 128, 128, 126, 122, 119, 118, 112, 109, 104, 99, 94, 88, 81, 77, 65, 62, + 55, 45, 34, 25, 16, 12, 10, 0, 3, 55, 89, 73, 75, 68, 37, 4, + 255, 6, 8, 10, 10, 9, 15, 55, 83, 88, 90, 92, 98, 110, 115, 118, + 119, 123, 127, 128, 128, 128, 127, 130, 131, 132, 133, 134, 138, 140, 138, 134, + 131, 132, 137, 142, 144, 144, 148, 146, 143, 141, 140, 141, 142, 145, 151, 134, + 124, 134, 147, 152, 152, 154, 160, 148, 138, 135, 125, 113, 113, 121, 132, 134, + 133, 130, 134, 143, 149, 150, 153, 152, 151, 150, 150, 149, 148, 148, 141, 141, + 135, 127, 123, 123, 119, 112, 111, 108, 108, 111, 116, 118, 119, 118, 110, 114, + 118, 121, 120, 122, 128, 134, 140, 142, 146, 151, 152, 149, 143, 139, 137, 135, + 132, 130, 129, 127, 127, 128, 124, 124, 125, 126, 124, 121, 118, 115, 112, 109, + 103, 98, 93, 88, 81, 76, 67, 64, 56, 47, 38, 28, 18, 11, 7, 0, + 0, 36, 68, 81, 80, 71, 52, 11, 255, 6, 7, 7, 7, 7, 19, 56, + 83, 88, 91, 94, 99, 111, 114, 116, 117, 122, 126, 128, 127, 126, 127, 130, + 133, 133, 132, 133, 136, 139, 138, 136, 134, 135, 138, 142, 144, 145, 149, 147, + 144, 141, 140, 140, 141, 143, 165, 147, 127, 120, 126, 135, 145, 151, 157, 157, + 160, 161, 153, 138, 130, 132, 145, 146, 146, 144, 147, 155, 160, 160, 163, 164, + 165, 166, 165, 164, 161, 160, 153, 151, 143, 131, 128, 128, 118, 106, 108, 112, + 117, 116, 115, 115, 117, 117, 109, 111, 114, 116, 115, 117, 122, 127, 133, 136, + 141, 148, 151, 150, 144, 139, 136, 135, 132, 129, 127, 126, 126, 126, 126, 126, + 126, 126, 124, 119, 114, 109, 110, 108, 102, 98, 92, 86, 80, 75, 64, 61, + 54, 47, 40, 29, 20, 12, 0, 2, 9, 42, 56, 72, 71, 76, 62, 14, + 255, 6, 7, 7, 9, 9, 24, 57, 80, 86, 91, 96, 100, 109, 114, 115, + 116, 121, 125, 126, 123, 121, 126, 130, 133, 133, 131, 130, 134, 137, 135, 136, + 137, 137, 137, 139, 142, 144, 147, 146, 144, 143, 142, 142, 143, 145, 163, 158, + 141, 122, 114, 121, 134, 143, 144, 150, 159, 161, 154, 144, 139, 141, 153, 157, + 160, 160, 164, 171, 174, 172, 173, 173, 172, 171, 170, 169, 169, 169, 163, 163, + 152, 137, 131, 132, 124, 113, 112, 119, 123, 117, 114, 117, 118, 115, 111, 112, + 112, 112, 112, 116, 119, 121, 126, 128, 133, 139, 144, 146, 144, 143, 137, 136, + 132, 128, 126, 125, 125, 126, 125, 125, 125, 125, 125, 120, 113, 108, 109, 107, + 101, 96, 91, 85, 77, 73, 63, 59, 54, 49, 43, 34, 24, 16, 2, 1, + 18, 64, 67, 69, 52, 71, 62, 13, 255, 5, 6, 7, 9, 11, 25, 57, + 78, 84, 92, 97, 100, 108, 116, 116, 115, 120, 123, 124, 119, 116, 125, 130, + 133, 133, 130, 129, 132, 135, 132, 135, 138, 138, 136, 136, 139, 142, 145, 145, + 144, 144, 144, 145, 146, 146, 151, 162, 157, 133, 113, 115, 126, 134, 138, 145, + 149, 145, 139, 139, 143, 146, 151, 158, 164, 167, 171, 178, 179, 177, 177, 176, + 173, 171, 170, 171, 171, 172, 167, 168, 159, 140, 133, 134, 131, 122, 117, 125, + 125, 117, 114, 121, 120, 112, 115, 114, 111, 111, 113, 115, 117, 120, 124, 125, + 128, 133, 139, 144, 145, 146, 138, 135, 131, 128, 126, 124, 125, 126, 123, 123, + 123, 125, 126, 123, 116, 112, 107, 105, 99, 94, 90, 83, 76, 70, 62, 59, + 55, 51, 48, 40, 31, 22, 14, 0, 17, 84, 89, 75, 38, 56, 59, 11, + 255, 6, 14, 0, 3, 7, 17, 46, 77, 91, 92, 98, 104, 108, 114, 117, + 118, 120, 120, 120, 121, 122, 130, 127, 125, 127, 132, 136, 137, 135, 134, 135, + 136, 138, 140, 141, 143, 143, 143, 144, 145, 145, 144, 144, 146, 148, 158, 159, + 157, 149, 135, 120, 109, 105, 122, 130, 136, 138, 136, 136, 141, 148, 158, 158, + 159, 164, 171, 178, 184, 186, 186, 186, 183, 181, 180, 178, 175, 174, 169, 168, + 161, 151, 144, 144, 140, 135, 130, 124, 118, 117, 121, 124, 122, 118, 118, 116, + 111, 112, 114, 117, 119, 120, 122, 123, 124, 127, 131, 135, 136, 136, 138, 138, + 137, 136, 132, 128, 123, 120, 121, 122, 120, 119, 118, 116, 116, 117, 110, 105, + 98, 92, 87, 80, 73, 66, 61, 62, 60, 53, 49, 42, 33, 23, 9, 0, + 17, 61, 88, 80, 62, 57, 44, 13, 255, 5, 6, 0, 9, 9, 8, 38, + 71, 87, 91, 96, 105, 109, 112, 115, 117, 120, 121, 122, 123, 125, 129, 128, + 126, 129, 135, 139, 141, 140, 135, 135, 137, 139, 141, 142, 144, 144, 144, 145, + 145, 144, 143, 144, 147, 150, 156, 157, 155, 147, 135, 124, 116, 113, 100, 107, + 115, 121, 127, 134, 144, 153, 149, 153, 160, 168, 175, 180, 185, 188, 186, 186, + 185, 185, 184, 183, 182, 182, 174, 173, 167, 158, 154, 151, 148, 142, 134, 129, + 124, 122, 124, 125, 120, 117, 118, 117, 116, 116, 118, 120, 120, 119, 119, 118, + 119, 123, 126, 130, 131, 130, 135, 136, 136, 136, 135, 132, 129, 128, 124, 123, + 121, 121, 119, 117, 113, 111, 114, 106, 95, 86, 79, 74, 67, 63, 64, 65, + 62, 56, 51, 46, 36, 26, 14, 0, 2, 41, 76, 84, 75, 67, 36, 10, + 255, 3, 1, 3, 18, 14, 3, 33, 67, 86, 91, 96, 105, 109, 110, 113, + 116, 119, 121, 123, 125, 128, 127, 126, 126, 130, 135, 139, 142, 141, 135, 136, + 137, 139, 142, 144, 145, 146, 144, 145, 144, 143, 143, 144, 148, 152, 156, 155, + 152, 144, 136, 129, 125, 124, 108, 109, 111, 117, 127, 137, 146, 152, 144, 152, + 163, 172, 177, 180, 184, 188, 190, 190, 189, 189, 188, 188, 187, 186, 178, 178, + 173, 167, 163, 161, 155, 147, 143, 138, 135, 132, 131, 128, 122, 117, 120, 120, + 121, 122, 124, 125, 122, 120, 118, 118, 118, 120, 123, 125, 125, 124, 128, 130, + 131, 133, 134, 133, 132, 132, 125, 123, 121, 121, 119, 117, 111, 107, 112, 104, + 90, 78, 71, 66, 65, 63, 67, 68, 65, 60, 55, 50, 40, 31, 21, 2, + 0, 27, 70, 92, 85, 69, 24, 6, 255, 171, 2, 14, 33, 17, 10, 34, + 66, 85, 93, 98, 104, 110, 112, 113, 115, 118, 120, 122, 124, 128, 125, 125, + 126, 129, 132, 136, 138, 138, 136, 137, 138, 140, 142, 144, 146, 146, 144, 144, + 144, 143, 143, 145, 150, 153, 157, 155, 148, 142, 135, 131, 130, 130, 125, 123, + 120, 123, 132, 143, 150, 154, 147, 157, 168, 175, 176, 178, 182, 187, 196, 195, + 194, 193, 191, 190, 187, 187, 182, 182, 178, 171, 169, 166, 158, 148, 153, 150, + 146, 142, 139, 134, 125, 120, 124, 123, 123, 125, 128, 129, 128, 127, 122, 122, + 120, 122, 123, 125, 124, 123, 121, 122, 124, 126, 127, 128, 128, 129, 127, 123, + 119, 117, 117, 116, 111, 108, 104, 98, 86, 74, 67, 65, 64, 65, 67, 69, + 66, 62, 58, 53, 43, 34, 22, 8, 1, 21, 59, 80, 67, 45, 13, 2, + 255, 255, 4, 26, 48, 25, 20, 37, 61, 82, 93, 100, 108, 113, 113, 114, + 115, 117, 117, 119, 122, 125, 126, 128, 129, 131, 132, 133, 135, 135, 137, 138, + 139, 140, 142, 143, 145, 145, 143, 143, 144, 144, 144, 147, 151, 154, 160, 154, + 146, 138, 133, 130, 129, 129, 122, 119, 118, 123, 135, 147, 154, 157, 151, 159, + 169, 174, 176, 179, 186, 192, 196, 196, 194, 194, 192, 191, 189, 189, 188, 188, + 182, 177, 175, 172, 162, 150, 158, 155, 152, 149, 144, 137, 129, 124, 126, 124, + 123, 123, 125, 130, 132, 132, 125, 124, 123, 125, 125, 126, 124, 123, 119, 120, + 120, 122, 122, 123, 123, 122, 125, 120, 114, 111, 112, 112, 111, 111, 100, 95, + 86, 75, 68, 63, 63, 63, 66, 68, 67, 62, 59, 55, 46, 37, 22, 12, + 1, 6, 26, 40, 29, 10, 4, 0, 255, 255, 2, 29, 62, 44, 38, 42, + 54, 73, 89, 101, 110, 115, 113, 113, 113, 114, 115, 117, 120, 124, 129, 131, + 133, 134, 134, 134, 135, 136, 138, 139, 139, 140, 141, 142, 142, 143, 140, 142, + 144, 146, 146, 148, 151, 154, 159, 153, 143, 135, 130, 127, 126, 125, 122, 120, + 121, 126, 136, 145, 152, 154, 151, 156, 164, 170, 175, 182, 190, 197, 189, 190, + 191, 191, 192, 193, 193, 194, 194, 192, 186, 181, 180, 177, 167, 156, 158, 157, + 155, 151, 145, 139, 133, 129, 130, 127, 123, 123, 125, 128, 130, 131, 127, 126, + 125, 125, 125, 125, 124, 122, 123, 124, 123, 121, 121, 120, 119, 119, 120, 119, + 114, 110, 108, 108, 109, 111, 101, 97, 89, 77, 67, 60, 58, 57, 65, 67, + 67, 63, 59, 56, 48, 41, 32, 20, 2, 0, 0, 4, 1, 0, 1, 0, + 255, 255, 170, 22, 71, 67, 64, 57, 56, 69, 87, 99, 108, 112, 110, 109, + 110, 111, 113, 116, 120, 124, 126, 130, 133, 135, 134, 134, 136, 137, 140, 140, + 140, 140, 140, 140, 140, 140, 138, 141, 145, 148, 149, 150, 152, 153, 155, 148, + 138, 130, 126, 124, 123, 121, 126, 128, 129, 134, 139, 145, 149, 149, 151, 154, + 160, 167, 175, 183, 189, 193, 186, 188, 189, 190, 190, 191, 191, 192, 192, 189, + 184, 180, 181, 181, 172, 161, 159, 159, 157, 154, 149, 143, 140, 139, 138, 136, + 132, 131, 131, 132, 130, 129, 129, 128, 126, 127, 128, 128, 127, 125, 126, 125, + 123, 122, 120, 118, 117, 116, 114, 118, 117, 114, 107, 102, 103, 106, 100, 97, + 89, 76, 65, 58, 57, 58, 66, 67, 68, 64, 62, 58, 51, 44, 43, 27, + 5, 0, 0, 0, 0, 0, 2, 0, 255, 255, 255, 15, 78, 83, 89, 71, + 60, 68, 84, 98, 105, 108, 108, 107, 109, 112, 113, 118, 123, 127, 123, 126, + 131, 133, 133, 134, 136, 138, 141, 140, 140, 139, 139, 138, 138, 138, 136, 140, + 145, 149, 150, 151, 153, 154, 153, 145, 135, 128, 125, 124, 121, 120, 121, 124, + 130, 135, 142, 146, 149, 150, 152, 153, 159, 167, 175, 181, 184, 183, 188, 188, + 187, 187, 186, 186, 185, 187, 184, 182, 177, 174, 178, 179, 173, 162, 164, 163, + 161, 157, 153, 149, 147, 146, 147, 144, 142, 141, 139, 136, 132, 128, 131, 130, + 130, 130, 131, 132, 131, 130, 126, 125, 123, 120, 118, 116, 115, 115, 111, 117, + 121, 118, 108, 100, 98, 100, 97, 93, 85, 72, 62, 58, 59, 62, 67, 68, + 69, 66, 63, 60, 52, 45, 40, 23, 6, 0, 0, 0, 0, 1, 4, 1, + 255, 255, 255, 173, 57, 99, 89, 102, 67, 71, 63, 85, 110, 104, 109, 107, + 109, 112, 115, 119, 123, 125, 128, 128, 129, 132, 135, 136, 138, 141, 134, 137, + 139, 140, 138, 135, 136, 138, 138, 141, 146, 150, 152, 153, 152, 151, 152, 146, + 134, 126, 122, 122, 124, 125, 126, 135, 136, 133, 138, 138, 140, 152, 156, 164, + 173, 180, 182, 182, 185, 187, 188, 187, 186, 184, 181, 179, 177, 177, 176, 181, + 182, 177, 174, 174, 171, 168, 152, 150, 152, 154, 155, 153, 148, 146, 144, 145, + 143, 139, 137, 138, 134, 128, 135, 137, 138, 137, 135, 133, 134, 134, 130, 129, + 127, 127, 125, 122, 117, 114, 111, 115, 121, 125, 116, 101, 94, 97, 90, 88, + 80, 69, 54, 46, 51, 61, 64, 70, 72, 69, 64, 60, 50, 43, 39, 21, + 3, 0, 0, 0, 0, 4, 2, 2, 255, 255, 255, 255, 51, 105, 97, 107, + 84, 78, 60, 81, 101, 110, 112, 112, 114, 116, 119, 123, 126, 128, 129, 129, + 130, 132, 135, 135, 136, 139, 137, 139, 141, 140, 136, 134, 133, 135, 139, 142, + 147, 152, 154, 155, 154, 153, 150, 143, 134, 127, 123, 124, 126, 127, 129, 137, + 134, 131, 136, 137, 140, 151, 160, 163, 170, 177, 183, 185, 184, 182, 181, 180, + 177, 174, 171, 170, 168, 168, 170, 176, 176, 174, 173, 173, 171, 166, 157, 156, + 156, 154, 153, 150, 145, 142, 144, 145, 143, 138, 137, 137, 133, 127, 135, 137, + 139, 139, 138, 138, 138, 140, 140, 138, 137, 135, 131, 124, 117, 112, 110, 113, + 120, 125, 119, 104, 92, 91, 84, 84, 80, 71, 59, 51, 58, 70, 66, 72, + 75, 72, 68, 63, 54, 45, 38, 21, 5, 0, 0, 0, 1, 5, 2, 2, + 255, 255, 255, 255, 35, 100, 103, 106, 99, 84, 56, 76, 85, 109, 110, 112, + 115, 117, 119, 122, 125, 127, 130, 130, 130, 131, 133, 135, 136, 136, 138, 140, + 141, 138, 134, 132, 131, 132, 139, 142, 148, 153, 155, 156, 155, 154, 144, 138, + 129, 125, 123, 125, 127, 128, 130, 136, 132, 130, 138, 141, 141, 149, 164, 163, + 166, 175, 183, 187, 184, 181, 179, 176, 172, 168, 165, 164, 163, 164, 165, 170, + 174, 175, 175, 178, 176, 172, 172, 168, 165, 162, 159, 155, 150, 147, 141, 143, + 143, 141, 142, 144, 142, 137, 134, 137, 139, 141, 140, 139, 141, 143, 144, 143, + 141, 140, 136, 128, 120, 113, 111, 114, 119, 125, 122, 108, 94, 86, 77, 79, + 79, 72, 60, 52, 61, 75, 65, 70, 72, 70, 66, 61, 53, 45, 39, 23, + 8, 0, 0, 0, 2, 5, 2, 86, 255, 255, 255, 255, 176, 78, 106, 102, + 103, 83, 55, 78, 71, 98, 103, 106, 111, 115, 116, 118, 121, 123, 130, 132, + 131, 131, 132, 136, 137, 135, 137, 137, 137, 136, 134, 131, 131, 131, 139, 143, + 149, 154, 157, 157, 154, 153, 140, 135, 128, 124, 123, 125, 125, 127, 126, 131, + 130, 132, 144, 145, 143, 148, 163, 164, 168, 174, 180, 185, 184, 183, 178, 174, + 170, 164, 161, 160, 161, 162, 165, 172, 177, 180, 184, 189, 188, 183, 185, 181, + 177, 174, 172, 169, 165, 162, 155, 155, 153, 150, 149, 149, 146, 140, 135, 138, + 140, 141, 140, 139, 140, 141, 139, 139, 140, 140, 138, 133, 125, 118, 114, 114, + 117, 122, 122, 113, 99, 88, 78, 78, 75, 66, 54, 47, 56, 69, 64, 70, + 73, 71, 67, 62, 54, 47, 40, 27, 12, 1, 0, 0, 2, 4, 2, 255, + 255, 255, 255, 255, 255, 44, 109, 106, 106, 85, 62, 87, 71, 85, 96, 102, + 109, 113, 113, 114, 118, 121, 130, 133, 134, 130, 132, 137, 138, 135, 133, 132, + 132, 131, 132, 132, 132, 132, 138, 143, 148, 153, 155, 153, 151, 149, 137, 134, + 128, 124, 124, 124, 124, 123, 120, 129, 131, 137, 150, 151, 145, 149, 159, 165, + 171, 174, 176, 180, 184, 188, 177, 174, 170, 165, 162, 161, 162, 164, 177, 181, + 184, 185, 190, 195, 191, 185, 185, 183, 181, 179, 180, 179, 176, 174, 175, 174, + 169, 160, 154, 150, 143, 137, 140, 143, 144, 142, 141, 139, 140, 140, 137, 137, + 140, 142, 140, 136, 129, 123, 114, 113, 111, 112, 114, 112, 102, 92, 80, 76, + 70, 60, 49, 45, 54, 66, 69, 75, 78, 76, 73, 69, 61, 53, 41, 31, + 16, 3, 0, 0, 3, 4, 2, 255, 255, 255, 255, 255, 255, 174, 98, 113, + 111, 94, 72, 94, 85, 85, 89, 97, 107, 112, 113, 114, 117, 121, 128, 133, + 135, 129, 130, 138, 139, 134, 130, 129, 128, 129, 132, 133, 134, 134, 138, 143, + 148, 152, 152, 150, 146, 143, 136, 132, 127, 125, 125, 125, 124, 123, 118, 130, + 134, 141, 152, 152, 147, 152, 158, 164, 170, 172, 174, 178, 185, 190, 185, 183, + 180, 176, 174, 174, 174, 175, 185, 187, 184, 182, 183, 186, 181, 174, 173, 172, + 171, 173, 173, 175, 172, 169, 167, 168, 164, 158, 155, 155, 150, 143, 143, 145, + 146, 145, 143, 140, 141, 140, 142, 142, 142, 143, 141, 136, 128, 124, 114, 112, + 107, 104, 106, 107, 101, 94, 79, 72, 65, 59, 54, 51, 58, 67, 67, 74, + 77, 76, 73, 69, 61, 54, 42, 34, 20, 4, 0, 0, 3, 3, 2, 255, + 255, 255, 255, 255, 255, 255, 60, 108, 110, 98, 71, 92, 105, 99, 80, 90, + 102, 109, 110, 111, 115, 120, 125, 131, 133, 126, 129, 137, 138, 133, 130, 127, + 125, 127, 130, 134, 134, 134, 139, 142, 147, 150, 150, 147, 141, 138, 132, 130, + 126, 126, 127, 128, 127, 126, 123, 135, 139, 142, 150, 149, 148, 156, 158, 161, + 165, 169, 174, 181, 186, 189, 190, 189, 187, 185, 183, 183, 183, 182, 180, 178, + 171, 167, 168, 171, 166, 158, 158, 157, 157, 158, 158, 157, 154, 150, 148, 149, + 149, 147, 149, 152, 151, 146, 139, 141, 142, 142, 141, 139, 140, 139, 143, 142, + 140, 140, 137, 133, 126, 122, 116, 117, 111, 104, 103, 104, 100, 93, 76, 68, + 62, 61, 60, 57, 58, 61, 62, 69, 73, 72, 69, 66, 58, 51, 43, 37, + 22, 5, 0, 1, 3, 3, 2, 255, 255, 255, 255, 255, 255, 255, 177, 96, + 105, 98, 66, 86, 117, 112, 72, 84, 97, 104, 106, 107, 113, 117, 122, 130, + 130, 125, 128, 137, 138, 131, 131, 127, 125, 126, 130, 134, 133, 133, 138, 142, + 146, 150, 149, 144, 139, 134, 129, 127, 125, 127, 128, 130, 130, 129, 129, 140, + 142, 141, 146, 146, 147, 159, 160, 159, 160, 166, 176, 184, 187, 187, 184, 183, + 183, 182, 181, 180, 179, 179, 167, 163, 157, 152, 154, 158, 154, 147, 147, 147, + 147, 147, 147, 144, 138, 134, 142, 143, 142, 138, 139, 141, 138, 134, 132, 135, + 136, 137, 136, 135, 136, 137, 137, 136, 134, 134, 133, 129, 124, 121, 121, 123, + 119, 110, 105, 106, 101, 93, 74, 66, 61, 62, 63, 59, 54, 52, 64, 70, + 75, 74, 71, 68, 60, 53, 44, 38, 24, 5, 0, 1, 4, 3, 2, 255, + 255, 255, 255, 255, 255, 255, 255, 56, 110, 107, 78, 87, 115, 123, 109, 82, + 72, 92, 108, 105, 108, 121, 121, 126, 130, 130, 126, 123, 124, 126, 131, 127, + 124, 124, 129, 132, 131, 131, 135, 144, 150, 149, 146, 142, 135, 128, 129, 128, + 128, 131, 134, 135, 131, 128, 127, 133, 140, 144, 144, 147, 152, 157, 148, 158, + 170, 178, 179, 179, 180, 182, 177, 173, 169, 167, 167, 164, 155, 147, 139, 143, + 147, 145, 139, 135, 135, 138, 142, 144, 145, 142, 135, 129, 127, 129, 130, 133, + 135, 137, 136, 133, 125, 119, 117, 119, 115, 111, 119, 137, 144, 143, 135, 138, + 135, 127, 121, 118, 117, 115, 114, 115, 115, 115, 111, 105, 96, 91, 75, 70, + 64, 61, 63, 64, 62, 59, 68, 70, 70, 69, 70, 72, 66, 58, 46, 35, + 21, 7, 0, 1, 3, 6, 3, 255, 255, 255, 255, 255, 255, 255, 255, 177, + 82, 107, 79, 77, 109, 123, 120, 92, 72, 78, 95, 102, 107, 113, 118, 123, + 126, 125, 121, 121, 124, 126, 127, 124, 123, 125, 129, 132, 132, 132, 133, 140, + 144, 142, 139, 138, 133, 127, 126, 125, 123, 126, 130, 132, 132, 130, 138, 142, + 145, 146, 143, 145, 150, 156, 160, 164, 170, 173, 172, 169, 167, 166, 155, 152, + 149, 149, 147, 146, 141, 135, 131, 132, 131, 129, 123, 120, 121, 123, 139, 138, + 135, 128, 119, 115, 114, 115, 116, 113, 115, 119, 115, 107, 105, 109, 97, 97, + 101, 112, 125, 138, 146, 152, 155, 150, 137, 123, 117, 116, 111, 104, 115, 116, + 117, 118, 111, 103, 95, 88, 75, 71, 65, 63, 64, 63, 60, 57, 63, 66, + 68, 70, 72, 73, 65, 57, 51, 39, 24, 10, 1, 1, 3, 5, 3, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 48, 104, 90, 74, 100, 120, 132, 110, + 81, 67, 77, 96, 105, 104, 114, 118, 121, 121, 119, 120, 123, 126, 124, 122, + 123, 125, 128, 131, 132, 131, 136, 141, 143, 139, 137, 137, 135, 132, 126, 124, + 122, 125, 129, 133, 135, 135, 140, 141, 142, 140, 139, 142, 148, 154, 171, 170, + 166, 163, 161, 157, 152, 148, 152, 149, 145, 141, 136, 132, 130, 128, 123, 122, + 121, 119, 116, 115, 112, 112, 117, 117, 114, 110, 105, 103, 101, 102, 102, 98, + 99, 103, 98, 89, 92, 101, 96, 92, 94, 105, 117, 127, 137, 148, 173, 160, + 138, 122, 119, 120, 112, 103, 113, 116, 119, 119, 112, 103, 94, 88, 74, 70, + 65, 64, 65, 64, 61, 58, 62, 66, 68, 70, 73, 75, 67, 58, 54, 42, + 27, 12, 3, 2, 2, 4, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 176, 78, 99, 82, 83, 109, 132, 126, 99, 70, 63, 83, 100, 101, 109, 112, + 116, 120, 121, 121, 123, 124, 123, 122, 122, 124, 126, 127, 128, 128, 134, 140, + 142, 139, 135, 136, 135, 131, 126, 127, 130, 132, 136, 139, 141, 141, 137, 138, + 138, 137, 140, 145, 153, 158, 170, 164, 157, 153, 153, 151, 146, 140, 140, 138, + 134, 129, 124, 120, 121, 121, 127, 125, 123, 121, 119, 114, 108, 104, 102, 104, + 108, 111, 110, 108, 105, 103, 100, 100, 100, 97, 97, 100, 103, 103, 116, 113, + 103, 96, 98, 110, 121, 126, 160, 147, 130, 116, 115, 119, 115, 108, 110, 115, + 120, 121, 114, 104, 94, 88, 71, 67, 64, 65, 67, 67, 65, 62, 67, 69, + 68, 68, 71, 73, 68, 60, 54, 42, 27, 13, 4, 3, 3, 4, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 34, 94, 90, 69, 96, 117, 126, + 113, 80, 58, 67, 87, 97, 100, 106, 113, 118, 122, 122, 123, 121, 122, 122, + 122, 122, 123, 124, 125, 126, 128, 133, 136, 133, 131, 130, 128, 124, 127, 131, + 135, 141, 143, 143, 142, 142, 142, 142, 141, 143, 147, 151, 158, 163, 159, 153, + 146, 146, 150, 150, 146, 140, 133, 131, 130, 126, 125, 124, 128, 131, 128, 124, + 118, 113, 113, 112, 110, 109, 130, 129, 126, 124, 122, 119, 116, 113, 102, 111, + 110, 102, 108, 122, 123, 110, 121, 125, 116, 96, 91, 104, 111, 105, 124, 122, + 114, 104, 102, 108, 110, 110, 115, 120, 124, 122, 112, 101, 90, 84, 68, 65, + 63, 65, 68, 70, 70, 68, 72, 71, 65, 62, 63, 67, 64, 59, 50, 39, + 26, 12, 4, 3, 3, 5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 73, 95, 76, 92, 101, 112, 110, 89, 63, 58, 72, 88, 93, 98, + 106, 113, 118, 120, 120, 119, 120, 120, 119, 119, 119, 120, 124, 127, 129, 134, + 137, 134, 131, 129, 126, 123, 126, 133, 138, 143, 144, 142, 141, 140, 144, 144, + 144, 145, 147, 150, 152, 153, 147, 144, 140, 142, 146, 146, 141, 136, 130, 128, + 124, 121, 120, 120, 121, 122, 112, 109, 104, 103, 107, 117, 129, 136, 163, 153, + 140, 128, 120, 117, 116, 114, 106, 116, 114, 106, 110, 127, 130, 119, 105, 116, + 118, 107, 104, 111, 109, 100, 104, 106, 105, 99, 96, 103, 109, 113, 123, 127, + 128, 123, 109, 96, 84, 79, 70, 66, 63, 65, 69, 72, 74, 73, 72, 69, + 61, 55, 57, 61, 60, 56, 50, 39, 26, 13, 5, 4, 4, 5, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 81, 90, 88, 96, 92, + 93, 93, 78, 62, 63, 77, 87, 90, 94, 102, 108, 113, 116, 116, 116, 117, + 116, 116, 115, 119, 125, 131, 135, 139, 139, 133, 130, 129, 128, 126, 131, 136, + 141, 143, 142, 141, 140, 140, 141, 142, 143, 145, 145, 145, 144, 142, 139, 137, + 135, 135, 134, 130, 122, 115, 111, 108, 103, 102, 103, 104, 103, 101, 109, 113, + 117, 121, 123, 129, 137, 143, 150, 141, 130, 121, 117, 116, 114, 112, 108, 108, + 108, 108, 105, 108, 117, 127, 100, 103, 112, 120, 118, 107, 101, 105, 101, 104, + 103, 98, 97, 106, 114, 119, 123, 127, 129, 122, 108, 94, 85, 82, 76, 70, + 65, 65, 68, 72, 75, 75, 70, 68, 61, 56, 58, 62, 61, 57, 53, 42, + 29, 16, 7, 5, 3, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 172, 61, 97, 80, 100, 82, 80, 94, 92, 70, 61, 72, 83, 83, + 86, 91, 99, 108, 113, 116, 115, 114, 114, 114, 115, 120, 129, 136, 137, 140, + 136, 128, 123, 124, 125, 124, 137, 141, 143, 144, 143, 141, 142, 143, 142, 143, + 146, 148, 148, 147, 143, 139, 131, 129, 129, 128, 123, 114, 103, 96, 104, 103, + 102, 108, 117, 124, 124, 123, 131, 140, 150, 151, 143, 131, 123, 119, 114, 112, + 113, 116, 120, 120, 116, 112, 110, 101, 103, 109, 99, 87, 103, 132, 114, 102, + 106, 126, 121, 97, 92, 111, 101, 102, 98, 94, 97, 107, 118, 121, 119, 124, + 127, 120, 109, 96, 91, 89, 82, 75, 68, 65, 68, 71, 74, 74, 69, 68, + 63, 60, 63, 68, 66, 61, 57, 47, 32, 18, 8, 4, 3, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 73, 105, 94, 93, + 93, 108, 113, 78, 54, 72, 69, 80, 82, 78, 86, 105, 112, 105, 106, 113, + 120, 121, 117, 117, 124, 132, 142, 139, 135, 132, 127, 125, 126, 130, 137, 140, + 144, 147, 147, 145, 145, 143, 141, 142, 142, 137, 134, 134, 131, 129, 119, 112, + 110, 113, 116, 115, 120, 128, 137, 164, 171, 148, 130, 134, 142, 138, 136, 133, + 130, 124, 117, 112, 109, 107, 98, 105, 105, 99, 102, 112, 110, 99, 100, 102, + 106, 110, 104, 97, 104, 118, 103, 105, 111, 116, 115, 107, 105, 108, 101, 100, + 98, 99, 106, 112, 118, 121, 121, 122, 119, 111, 100, 91, 87, 88, 80, 76, + 73, 72, 73, 74, 73, 73, 66, 64, 60, 57, 60, 65, 62, 56, 47, 45, + 36, 19, 7, 5, 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 174, 47, 84, 92, 86, 91, 112, 124, 101, 66, 53, 65, 75, + 79, 77, 82, 95, 102, 101, 102, 107, 114, 116, 115, 118, 126, 135, 141, 138, + 134, 130, 127, 127, 130, 134, 136, 142, 148, 150, 148, 147, 148, 148, 151, 143, + 129, 116, 110, 111, 116, 117, 111, 106, 109, 118, 124, 128, 135, 142, 165, 179, + 178, 155, 135, 128, 123, 114, 109, 108, 106, 102, 97, 95, 96, 99, 101, 101, + 100, 100, 101, 102, 103, 104, 111, 110, 111, 113, 102, 92, 94, 105, 100, 98, + 101, 107, 112, 108, 104, 105, 98, 97, 98, 100, 107, 113, 117, 119, 122, 123, + 122, 118, 110, 100, 92, 89, 80, 78, 74, 73, 74, 75, 74, 73, 70, 66, + 61, 58, 60, 65, 63, 56, 40, 38, 29, 13, 2, 0, 85, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 51, 73, 71, + 80, 97, 106, 109, 93, 68, 64, 70, 75, 77, 78, 82, 89, 94, 97, 102, + 108, 110, 111, 116, 125, 133, 138, 137, 132, 127, 125, 127, 132, 136, 135, 141, + 148, 149, 147, 145, 146, 148, 142, 129, 112, 99, 97, 101, 111, 116, 108, 107, + 110, 117, 120, 121, 124, 129, 120, 125, 125, 118, 111, 108, 104, 101, 102, 104, + 102, 99, 97, 97, 101, 106, 109, 105, 105, 110, 111, 108, 116, 127, 124, 119, + 115, 112, 101, 89, 89, 100, 99, 94, 94, 103, 110, 109, 104, 101, 95, 96, + 98, 102, 109, 114, 117, 119, 120, 122, 123, 122, 116, 106, 93, 85, 80, 78, + 75, 74, 75, 76, 74, 74, 73, 69, 63, 58, 60, 65, 62, 56, 40, 39, + 30, 15, 5, 3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 19, 63, 79, 103, 105, 90, 100, 103, 78, 66, 68, + 73, 79, 79, 77, 80, 87, 94, 99, 104, 108, 110, 114, 120, 125, 137, 137, + 132, 124, 122, 127, 133, 136, 134, 140, 145, 145, 141, 139, 141, 145, 131, 117, + 105, 100, 102, 105, 110, 112, 108, 108, 110, 114, 116, 116, 116, 115, 122, 115, + 109, 108, 103, 97, 95, 99, 109, 113, 112, 109, 105, 104, 107, 111, 110, 115, + 118, 118, 119, 126, 139, 150, 133, 123, 114, 109, 101, 92, 95, 107, 103, 101, + 103, 110, 114, 110, 103, 100, 97, 98, 101, 107, 113, 118, 120, 121, 121, 121, + 120, 119, 115, 104, 89, 79, 81, 79, 77, 76, 77, 77, 75, 74, 75, 70, + 63, 57, 59, 63, 60, 54, 42, 39, 30, 17, 9, 7, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, 21, 54, + 98, 109, 95, 104, 107, 84, 64, 65, 71, 81, 82, 79, 77, 80, 86, 90, + 98, 106, 111, 115, 118, 119, 136, 137, 131, 122, 119, 125, 131, 132, 135, 139, + 144, 144, 139, 137, 138, 141, 128, 114, 101, 101, 103, 103, 104, 104, 107, 109, + 113, 119, 124, 130, 133, 133, 137, 127, 117, 113, 108, 103, 105, 113, 113, 114, + 113, 111, 110, 107, 107, 107, 115, 133, 137, 125, 125, 145, 161, 160, 136, 122, + 109, 104, 100, 95, 100, 112, 108, 109, 114, 119, 116, 107, 99, 99, 98, 100, + 103, 109, 115, 120, 121, 121, 125, 123, 119, 116, 110, 99, 85, 76, 81, 79, + 77, 77, 78, 78, 76, 75, 74, 69, 61, 55, 56, 60, 57, 51, 36, 34, + 23, 11, 4, 4, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 199, 0, 4, 34, 48, 55, 67, 68, 55, 46, 55, + 69, 78, 81, 80, 79, 78, 75, 79, 87, 99, 108, 116, 119, 118, 133, 135, + 131, 120, 118, 124, 129, 128, 136, 139, 142, 142, 142, 141, 141, 142, 123, 104, + 89, 92, 101, 104, 108, 111, 112, 114, 118, 121, 128, 138, 145, 146, 122, 115, + 112, 114, 119, 123, 127, 132, 126, 124, 120, 120, 121, 122, 119, 116, 132, 154, + 157, 138, 135, 157, 169, 159, 136, 120, 107, 103, 101, 99, 103, 115, 112, 113, + 117, 119, 113, 103, 98, 99, 101, 100, 103, 108, 114, 119, 118, 119, 127, 125, + 122, 116, 108, 96, 84, 76, 82, 80, 79, 78, 79, 79, 77, 75, 71, 68, + 61, 56, 57, 59, 55, 48, 35, 31, 19, 7, 1, 87, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 2, + 0, 0, 6, 2, 0, 1, 16, 42, 66, 74, 74, 77, 80, 80, 72, 73, + 78, 89, 102, 113, 117, 118, 126, 132, 128, 118, 117, 125, 130, 126, 133, 133, + 134, 138, 142, 145, 145, 144, 120, 99, 87, 95, 107, 112, 116, 120, 115, 117, + 116, 115, 122, 135, 144, 147, 137, 135, 134, 141, 152, 157, 151, 138, 153, 141, + 130, 129, 134, 139, 135, 131, 145, 161, 161, 146, 140, 153, 159, 152, 131, 116, + 108, 109, 110, 109, 111, 119, 117, 113, 110, 110, 109, 106, 104, 106, 106, 104, + 106, 109, 115, 119, 120, 120, 122, 124, 124, 118, 108, 95, 84, 78, 82, 81, + 80, 80, 82, 81, 78, 76, 70, 67, 63, 59, 61, 62, 56, 47, 37, 32, + 19, 7, 2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 4, 2, 7, 14, 0, 0, 7, 0, 31, + 64, 70, 67, 73, 81, 83, 75, 73, 73, 82, 94, 106, 113, 114, 122, 129, + 127, 118, 117, 126, 131, 126, 128, 126, 127, 132, 141, 146, 147, 144, 128, 108, + 99, 108, 119, 118, 114, 113, 111, 113, 111, 110, 119, 134, 148, 153, 130, 133, + 139, 155, 177, 188, 173, 149, 168, 150, 134, 129, 136, 141, 137, 131, 144, 148, + 148, 141, 136, 138, 139, 139, 126, 116, 110, 118, 123, 120, 121, 126, 121, 111, + 103, 104, 109, 112, 113, 113, 111, 109, 109, 112, 117, 121, 122, 124, 116, 120, + 123, 119, 106, 93, 83, 77, 82, 81, 80, 81, 81, 82, 78, 76, 69, 67, + 64, 61, 63, 64, 57, 49, 38, 31, 16, 3, 85, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, + 5, 5, 6, 6, 4, 2, 3, 8, 43, 71, 69, 72, 83, 82, 84, 81, + 73, 69, 75, 90, 104, 107, 115, 125, 128, 119, 117, 125, 132, 129, 125, 129, + 127, 124, 131, 143, 144, 133, 118, 116, 108, 97, 99, 111, 112, 100, 129, 112, + 103, 108, 120, 130, 138, 145, 131, 135, 162, 176, 177, 200, 198, 151, 179, 159, + 141, 131, 133, 137, 138, 135, 137, 141, 142, 138, 131, 128, 131, 135, 129, 125, + 119, 119, 121, 123, 124, 123, 102, 102, 101, 106, 111, 114, 113, 110, 117, 115, + 114, 116, 119, 123, 124, 125, 125, 125, 122, 118, 110, 100, 92, 86, 84, 82, + 80, 81, 83, 84, 85, 84, 75, 72, 70, 68, 63, 56, 51, 49, 43, 29, + 13, 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 171, 6, 7, 7, 5, 4, 0, 3, + 28, 54, 66, 74, 82, 84, 81, 80, 75, 71, 75, 87, 98, 103, 108, 119, + 124, 119, 118, 127, 132, 130, 120, 124, 122, 118, 124, 135, 135, 126, 113, 113, + 106, 98, 102, 113, 114, 104, 116, 108, 102, 107, 114, 124, 137, 151, 131, 125, + 149, 170, 163, 170, 175, 151, 161, 151, 141, 135, 134, 134, 136, 135, 131, 129, + 126, 123, 120, 124, 132, 140, 130, 126, 121, 124, 127, 123, 110, 98, 92, 96, + 103, 110, 115, 117, 116, 112, 116, 115, 113, 115, 118, 120, 121, 121, 117, 118, + 118, 117, 110, 102, 94, 90, 89, 86, 83, 80, 81, 79, 78, 76, 73, 71, + 69, 67, 62, 56, 49, 47, 38, 24, 9, 87, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 6, 7, 8, 7, 4, 0, 3, 12, 34, 61, 74, 76, 82, 78, 81, + 79, 74, 73, 82, 90, 94, 102, 113, 120, 118, 119, 127, 130, 128, 118, 120, + 116, 111, 115, 124, 124, 116, 108, 109, 104, 99, 101, 110, 110, 103, 105, 103, + 103, 105, 107, 114, 132, 148, 134, 117, 134, 154, 140, 131, 141, 145, 139, 142, + 140, 138, 135, 134, 132, 133, 130, 128, 126, 124, 120, 118, 114, 116, 119, 124, + 128, 129, 123, 108, 91, 79, 88, 98, 111, 121, 125, 124, 122, 120, 119, 118, + 117, 118, 121, 122, 121, 121, 115, 116, 118, 117, 111, 103, 95, 90, 91, 88, + 84, 81, 78, 77, 75, 73, 71, 70, 69, 66, 62, 57, 47, 42, 32, 19, + 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 8, 8, 7, 6, 5, 8, + 2, 15, 52, 69, 69, 78, 79, 84, 85, 79, 74, 77, 82, 84, 97, 107, + 114, 117, 121, 126, 128, 126, 122, 121, 117, 110, 110, 114, 114, 108, 106, 107, + 105, 101, 102, 108, 108, 101, 99, 98, 101, 102, 100, 103, 115, 128, 135, 118, + 125, 136, 122, 112, 123, 136, 131, 135, 136, 137, 136, 134, 131, 129, 123, 121, + 120, 120, 119, 115, 109, 108, 117, 123, 120, 104, 84, 77, 83, 92, 102, 113, + 127, 135, 137, 134, 132, 130, 124, 124, 123, 123, 124, 125, 124, 123, 119, 121, + 121, 119, 111, 101, 92, 85, 88, 85, 82, 81, 80, 79, 78, 78, 70, 71, + 69, 65, 63, 57, 46, 37, 27, 15, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 172, 8, 9, 8, 10, 12, 0, 6, 40, 61, 66, 79, 81, 88, + 90, 83, 77, 75, 77, 76, 88, 95, 105, 111, 118, 127, 130, 129, 129, 127, + 122, 115, 110, 110, 108, 105, 104, 106, 106, 105, 107, 112, 112, 110, 103, 99, + 98, 101, 101, 99, 99, 105, 125, 119, 118, 117, 114, 116, 124, 129, 134, 133, + 131, 133, 135, 134, 130, 125, 119, 115, 113, 113, 115, 118, 119, 122, 111, 103, + 84, 65, 57, 70, 98, 121, 126, 133, 141, 145, 142, 139, 137, 136, 130, 127, + 125, 125, 125, 126, 124, 123, 123, 125, 124, 120, 113, 102, 93, 87, 88, 86, + 83, 82, 82, 82, 81, 81, 71, 72, 69, 63, 60, 57, 47, 35, 22, 11, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 10, 10, 9, 10, + 2, 4, 24, 48, 67, 81, 80, 86, 89, 85, 80, 78, 77, 74, 78, 83, + 92, 102, 113, 124, 131, 136, 133, 132, 127, 122, 116, 111, 108, 105, 103, 104, + 105, 108, 111, 115, 118, 119, 116, 109, 107, 110, 111, 109, 105, 104, 114, 119, + 117, 112, 117, 129, 132, 130, 136, 133, 129, 128, 131, 130, 125, 121, 129, 130, + 130, 126, 119, 108, 98, 92, 67, 60, 57, 68, 90, 113, 129, 136, 142, 146, + 148, 147, 144, 140, 138, 138, 131, 128, 125, 122, 122, 122, 121, 121, 121, 122, + 121, 119, 113, 106, 99, 95, 92, 90, 86, 84, 82, 81, 79, 78, 70, 72, + 67, 60, 57, 56, 45, 31, 15, 89, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 9, 11, 9, 8, 8, 3, 4, 31, 62, 74, 76, 79, + 84, 82, 82, 83, 80, 76, 76, 77, 82, 93, 104, 116, 126, 132, 133, 132, + 129, 126, 120, 113, 109, 107, 103, 103, 105, 107, 107, 111, 114, 118, 119, 113, + 111, 114, 117, 117, 118, 120, 118, 128, 129, 126, 133, 140, 139, 137, 131, 129, + 128, 125, 123, 120, 118, 118, 130, 131, 126, 114, 96, 78, 65, 59, 54, 62, + 81, 107, 132, 145, 147, 143, 149, 148, 147, 146, 146, 144, 140, 138, 135, 130, + 125, 121, 120, 121, 121, 121, 119, 119, 118, 116, 112, 107, 102, 100, 94, 92, + 87, 84, 82, 78, 76, 75, 68, 70, 63, 54, 52, 53, 42, 27, 13, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 10, 12, 8, + 14, 7, 0, 18, 58, 69, 71, 75, 78, 79, 82, 86, 83, 78, 78, 76, + 78, 87, 98, 109, 118, 125, 131, 130, 129, 128, 123, 116, 111, 110, 107, 105, + 104, 104, 102, 102, 105, 109, 111, 107, 105, 109, 112, 115, 122, 131, 129, 139, + 141, 142, 146, 139, 135, 139, 124, 126, 130, 127, 119, 114, 114, 118, 109, 100, + 81, 60, 46, 48, 60, 72, 98, 110, 125, 132, 131, 132, 141, 150, 148, 146, + 144, 146, 147, 147, 143, 140, 139, 134, 126, 122, 120, 121, 123, 123, 120, 119, + 117, 113, 110, 106, 101, 100, 93, 91, 85, 83, 80, 78, 75, 73, 66, 67, + 60, 49, 49, 51, 40, 25, 95, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 174, 10, 9, 11, 9, 1, 4, 34, 68, 74, 72, + 76, 80, 80, 77, 78, 79, 78, 76, 71, 73, 80, 95, 108, 116, 118, 121, + 124, 129, 128, 124, 120, 116, 114, 111, 108, 107, 108, 111, 111, 111, 114, 114, + 113, 113, 112, 110, 108, 108, 118, 116, 115, 116, 116, 115, 111, 109, 110, 105, + 98, 91, 83, 78, 74, 73, 57, 57, 62, 76, 96, 117, 131, 135, 142, 141, + 140, 141, 139, 140, 139, 140, 137, 141, 144, 143, 139, 138, 140, 143, 136, 134, + 127, 124, 121, 122, 123, 126, 121, 118, 112, 108, 112, 117, 112, 104, 97, 91, + 83, 78, 74, 70, 69, 69, 70, 61, 53, 53, 54, 48, 32, 100, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 9, + 12, 11, 2, 1, 22, 46, 65, 69, 78, 81, 80, 81, 82, 84, 80, 78, + 76, 76, 79, 88, 100, 106, 110, 114, 120, 126, 129, 128, 125, 124, 119, 116, + 113, 112, 114, 116, 117, 117, 115, 115, 116, 116, 114, 113, 112, 111, 94, 92, + 90, 90, 88, 83, 78, 75, 63, 65, 65, 69, 73, 81, 87, 92, 118, 123, + 129, 140, 149, 155, 155, 153, 147, 147, 146, 146, 144, 143, 143, 144, 134, 135, + 135, 137, 138, 142, 143, 143, 138, 134, 129, 123, 119, 119, 118, 120, 111, 111, + 107, 105, 108, 111, 104, 96, 94, 88, 79, 72, 68, 65, 63, 63, 64, 57, + 51, 50, 50, 43, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 8, 10, 5, 0, 9, 21, 42, 59, + 75, 77, 75, 79, 81, 80, 80, 81, 82, 80, 79, 82, 88, 93, 103, 107, + 114, 122, 126, 129, 129, 128, 123, 120, 117, 117, 118, 119, 119, 120, 119, 120, + 120, 120, 120, 120, 119, 118, 114, 113, 115, 118, 118, 117, 112, 108, 105, 107, + 110, 117, 124, 136, 144, 150, 146, 152, 157, 161, 157, 153, 146, 143, 150, 150, + 149, 148, 146, 145, 145, 145, 133, 130, 127, 129, 135, 140, 140, 139, 138, 134, + 128, 121, 116, 115, 113, 114, 110, 110, 109, 109, 112, 112, 105, 96, 95, 89, + 80, 71, 66, 65, 64, 63, 57, 52, 49, 48, 46, 109, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 172, 9, 8, 3, 6, 10, 23, 47, 71, 76, 75, 78, 78, 74, 78, 81, + 84, 84, 81, 80, 84, 86, 98, 102, 109, 116, 123, 126, 128, 129, 124, 121, + 118, 118, 120, 121, 121, 120, 122, 123, 125, 128, 129, 130, 130, 130, 138, 139, + 142, 147, 148, 147, 143, 138, 131, 132, 134, 136, 140, 144, 147, 148, 153, 156, + 157, 153, 146, 141, 142, 144, 147, 147, 146, 145, 142, 141, 141, 140, 133, 130, + 126, 124, 126, 129, 129, 131, 134, 130, 125, 119, 115, 113, 111, 112, 114, 113, + 111, 112, 114, 113, 107, 101, 96, 93, 82, 72, 67, 66, 64, 61, 51, 49, + 47, 45, 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 10, 8, 8, 9, 10, 35, + 62, 75, 80, 85, 82, 76, 74, 78, 82, 84, 84, 84, 85, 88, 91, 95, + 102, 111, 119, 125, 128, 129, 126, 123, 121, 121, 124, 125, 123, 122, 121, 123, + 127, 131, 135, 138, 140, 141, 147, 148, 148, 149, 147, 143, 135, 129, 138, 140, + 144, 148, 150, 151, 151, 150, 152, 154, 154, 149, 142, 141, 146, 152, 147, 148, + 145, 144, 142, 140, 139, 138, 137, 137, 133, 127, 120, 118, 119, 123, 125, 124, + 122, 119, 117, 113, 112, 111, 112, 109, 105, 106, 106, 104, 102, 100, 92, 90, + 81, 69, 64, 64, 61, 55, 48, 48, 45, 41, 108, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 173, 9, 9, 7, 1, 16, 40, 62, 78, 81, 81, 78, 71, 73, + 77, 81, 85, 87, 88, 88, 83, 87, 94, 105, 113, 121, 127, 130, 128, 126, + 125, 125, 127, 128, 126, 125, 120, 122, 127, 133, 138, 142, 144, 146, 151, 150, + 150, 152, 152, 148, 142, 137, 127, 130, 134, 139, 140, 142, 140, 140, 140, 145, + 147, 146, 140, 139, 140, 145, 150, 150, 147, 145, 143, 141, 139, 138, 141, 142, + 138, 130, 120, 114, 115, 119, 115, 117, 119, 121, 120, 116, 113, 111, 112, 107, + 103, 102, 100, 96, 95, 96, 91, 92, 84, 71, 66, 66, 61, 53, 48, 46, + 42, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 9, 7, 6, 3, + 17, 46, 67, 71, 73, 75, 75, 72, 71, 76, 83, 87, 87, 85, 81, 86, + 91, 100, 109, 116, 122, 125, 129, 126, 125, 126, 127, 127, 126, 124, 124, 127, + 131, 135, 140, 144, 147, 147, 145, 145, 146, 150, 152, 153, 150, 147, 142, 142, + 143, 144, 144, 145, 145, 145, 144, 146, 148, 147, 143, 141, 142, 145, 147, 148, + 145, 142, 140, 137, 135, 135, 140, 138, 134, 128, 121, 116, 113, 114, 109, 114, + 120, 123, 123, 118, 113, 108, 110, 105, 101, 102, 100, 93, 88, 90, 90, 93, + 87, 74, 68, 68, 63, 51, 45, 44, 40, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 173, 8, 21, 6, 11, 39, 63, 67, 68, 73, 78, 73, + 68, 72, 80, 86, 84, 80, 84, 89, 93, 98, 105, 112, 116, 119, 127, 125, + 123, 123, 126, 125, 124, 121, 129, 132, 136, 139, 143, 146, 148, 149, 152, 150, + 150, 151, 153, 152, 149, 146, 140, 139, 136, 135, 136, 138, 141, 143, 141, 139, + 136, 132, 130, 132, 136, 140, 141, 141, 138, 136, 133, 131, 128, 128, 136, 132, + 125, 123, 121, 118, 112, 108, 107, 113, 121, 125, 124, 120, 112, 107, 105, 100, + 99, 102, 98, 88, 81, 83, 84, 88, 83, 72, 64, 65, 57, 44, 45, 43, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 11, 7, + 6, 14, 31, 51, 65, 71, 76, 79, 78, 71, 69, 75, 79, 79, 86, 88, + 90, 91, 94, 100, 108, 113, 121, 120, 121, 121, 122, 121, 120, 122, 128, 132, + 136, 141, 145, 148, 150, 149, 148, 149, 149, 147, 149, 152, 151, 145, 139, 134, + 132, 134, 133, 132, 137, 146, 143, 143, 139, 132, 130, 134, 137, 136, 141, 132, + 126, 129, 131, 130, 129, 133, 139, 133, 122, 115, 117, 121, 117, 111, 106, 113, + 116, 116, 118, 121, 119, 115, 111, 107, 108, 110, 104, 92, 86, 87, 90, 88, + 79, 63, 53, 51, 52, 52, 40, 109, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 174, 8, 6, 5, 6, 16, 34, 54, 69, 65, 74, + 79, 78, 77, 81, 83, 82, 85, 86, 88, 89, 92, 98, 105, 108, 118, 119, + 121, 122, 123, 123, 122, 122, 127, 129, 133, 138, 142, 145, 146, 147, 146, 147, + 144, 141, 143, 148, 149, 145, 138, 136, 138, 142, 141, 137, 138, 144, 140, 140, + 136, 129, 127, 131, 133, 133, 130, 126, 126, 131, 135, 133, 134, 137, 133, 132, + 128, 123, 120, 118, 110, 102, 99, 109, 115, 114, 114, 115, 115, 114, 120, 111, + 108, 111, 111, 103, 92, 87, 85, 83, 72, 56, 44, 39, 37, 34, 110, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 10, + 7, 0, 0, 10, 34, 54, 58, 68, 77, 78, 77, 80, 84, 85, 83, 84, + 86, 87, 88, 93, 99, 103, 112, 114, 117, 120, 122, 122, 121, 120, 125, 126, + 130, 134, 137, 141, 142, 143, 145, 145, 141, 136, 136, 141, 142, 139, 134, 136, + 143, 149, 147, 141, 137, 137, 139, 139, 135, 129, 127, 130, 132, 130, 126, 127, + 132, 136, 138, 135, 135, 138, 118, 123, 126, 125, 124, 120, 110, 101, 99, 112, + 121, 118, 112, 110, 111, 114, 121, 110, 103, 106, 111, 106, 92, 82, 71, 69, + 61, 51, 44, 41, 40, 37, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 16, 13, 3, 0, 0, 15, 29, 54, 62, + 68, 69, 69, 72, 79, 85, 82, 83, 84, 85, 86, 90, 95, 98, 103, 106, + 111, 117, 119, 121, 119, 118, 122, 125, 127, 131, 135, 138, 140, 141, 144, 145, + 141, 136, 135, 137, 134, 129, 128, 134, 142, 147, 145, 139, 133, 131, 134, 135, + 132, 126, 125, 128, 129, 127, 127, 130, 133, 134, 131, 127, 129, 133, 120, 122, + 123, 123, 124, 122, 109, 98, 106, 120, 130, 124, 114, 109, 112, 115, 118, 109, + 101, 102, 107, 103, 90, 80, 62, 62, 56, 50, 47, 48, 45, 112, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, + 18, 13, 7, 5, 8, 11, 42, 48, 57, 64, 67, 69, 75, 81, 82, 83, + 84, 84, 85, 88, 92, 95, 99, 103, 109, 114, 119, 120, 118, 119, 122, 123, + 126, 129, 132, 136, 138, 140, 141, 145, 143, 138, 136, 134, 126, 119, 126, 132, + 138, 141, 140, 137, 132, 129, 127, 129, 127, 122, 121, 125, 126, 124, 126, 128, + 127, 123, 119, 119, 123, 127, 136, 131, 123, 119, 120, 120, 107, 94, 103, 118, + 127, 123, 113, 110, 112, 115, 114, 112, 106, 104, 103, 99, 91, 85, 72, 67, + 59, 49, 46, 45, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 26, 24, 21, 16, 14, 25, 32, + 45, 61, 71, 72, 73, 76, 80, 81, 83, 84, 84, 87, 90, 94, 98, 102, + 108, 113, 118, 120, 120, 121, 120, 121, 123, 127, 130, 133, 137, 138, 139, 141, + 142, 139, 135, 132, 123, 113, 122, 129, 135, 136, 135, 135, 133, 129, 127, 129, + 128, 125, 125, 129, 131, 128, 127, 127, 124, 118, 117, 124, 131, 134, 132, 129, + 121, 117, 121, 124, 117, 107, 97, 108, 117, 118, 114, 114, 113, 112, 106, 110, + 108, 101, 95, 91, 87, 84, 78, 71, 59, 50, 47, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 182, 33, 31, 28, 27, 20, 21, 30, 47, 61, 67, 72, 75, 78, 79, + 80, 82, 82, 84, 88, 92, 96, 99, 104, 109, 114, 116, 118, 119, 117, 119, + 120, 122, 126, 130, 133, 134, 135, 138, 138, 135, 132, 130, 123, 115, 115, 124, + 130, 130, 130, 132, 130, 125, 125, 128, 128, 126, 127, 132, 134, 131, 128, 127, + 123, 117, 121, 131, 138, 137, 122, 127, 128, 126, 126, 126, 122, 118, 105, 110, + 114, 116, 120, 121, 115, 108, 102, 107, 105, 96, 91, 88, 84, 80, 72, 65, + 53, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 34, 32, 34, 37, 28, 19, + 18, 30, 46, 58, 68, 77, 76, 76, 79, 81, 81, 83, 87, 90, 92, 95, + 99, 104, 108, 113, 116, 116, 116, 116, 118, 120, 123, 128, 131, 133, 132, 134, + 134, 130, 130, 130, 124, 118, 108, 118, 125, 126, 126, 128, 126, 119, 116, 119, + 120, 118, 120, 125, 127, 126, 125, 124, 118, 113, 118, 129, 133, 130, 125, 136, + 143, 138, 127, 119, 113, 110, 119, 120, 122, 123, 128, 128, 118, 107, 107, 109, + 106, 98, 94, 94, 89, 82, 68, 59, 45, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 180, 28, 26, 21, 20, 21, 25, 30, 42, 62, 80, 75, 79, + 72, 89, 77, 88, 78, 82, 86, 85, 88, 97, 102, 104, 109, 114, 121, 116, + 114, 116, 123, 129, 130, 129, 127, 130, 132, 129, 123, 120, 122, 125, 120, 117, + 114, 119, 128, 136, 137, 136, 123, 122, 117, 114, 115, 122, 125, 124, 124, 122, + 121, 122, 123, 123, 122, 121, 122, 137, 144, 131, 114, 112, 120, 127, 116, 121, + 123, 122, 122, 119, 109, 100, 104, 104, 103, 98, 89, 81, 74, 73, 62, 57, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 32, 20, 21, + 21, 21, 19, 26, 45, 61, 69, 75, 69, 80, 65, 77, 74, 84, 78, 79, + 84, 94, 101, 105, 110, 114, 119, 117, 116, 119, 124, 127, 127, 124, 130, 133, + 135, 132, 126, 120, 119, 121, 133, 132, 130, 129, 129, 131, 132, 133, 123, 123, + 120, 116, 118, 124, 127, 126, 130, 127, 122, 120, 119, 120, 119, 118, 123, 131, + 135, 128, 121, 119, 119, 118, 112, 115, 116, 118, 121, 123, 116, 107, 104, 102, + 97, 91, 81, 71, 60, 55, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 21, 22, 21, 18, 12, 11, 23, 37, 55, 66, + 69, 77, 67, 75, 76, 86, 75, 75, 80, 90, 96, 100, 104, 110, 116, 117, + 120, 122, 124, 124, 121, 119, 129, 129, 130, 129, 127, 123, 120, 118, 126, 129, + 130, 130, 129, 132, 136, 141, 124, 125, 122, 119, 121, 127, 128, 126, 135, 130, + 125, 121, 120, 122, 122, 122, 123, 125, 125, 125, 128, 126, 118, 108, 114, 117, + 117, 117, 122, 124, 117, 108, 110, 103, 95, 88, 81, 70, 55, 115, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, + 23, 22, 17, 12, 12, 18, 36, 51, 65, 75, 73, 77, 76, 78, 80, 76, + 77, 83, 87, 91, 97, 103, 112, 115, 121, 125, 124, 121, 117, 114, 125, 123, + 122, 123, 126, 126, 125, 123, 120, 121, 123, 125, 128, 133, 138, 142, 126, 126, + 124, 122, 124, 129, 129, 126, 129, 127, 122, 121, 122, 124, 124, 125, 123, 121, + 121, 125, 129, 127, 117, 108, 111, 118, 123, 123, 123, 122, 118, 112, 112, 103, + 89, 82, 76, 69, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 177, 26, 27, 20, 15, 12, 28, 38, + 51, 57, 67, 72, 75, 70, 81, 76, 73, 75, 78, 84, 92, 100, 104, 111, + 119, 122, 121, 117, 114, 114, 127, 124, 122, 123, 125, 127, 129, 130, 133, 128, + 124, 125, 129, 133, 132, 130, 129, 131, 130, 127, 129, 132, 132, 128, 122, 121, + 119, 119, 120, 120, 118, 118, 120, 121, 122, 124, 122, 120, 116, 115, 105, 118, + 128, 128, 122, 119, 117, 115, 107, 93, 77, 66, 62, 122, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 30, 28, 23, 21, 42, 43, 49, 40, 54, 61, 73, 69, 77, 70, + 66, 68, 71, 78, 87, 96, 94, 102, 111, 115, 114, 112, 113, 115, 132, 131, + 129, 127, 128, 130, 133, 134, 143, 136, 128, 128, 133, 136, 133, 129, 131, 133, + 133, 131, 132, 136, 134, 129, 125, 124, 122, 121, 120, 119, 116, 113, 118, 121, + 123, 123, 117, 112, 114, 120, 114, 127, 134, 127, 114, 105, 101, 99, 99, 86, + 67, 100, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 40, 58, 57, + 59, 35, 45, 47, 66, 63, 71, 66, 63, 65, 67, 71, 77, 84, 83, 92, + 102, 106, 105, 106, 111, 118, 126, 130, 132, 132, 131, 131, 132, 135, 135, 131, + 128, 127, 129, 132, 132, 131, 127, 130, 130, 129, 130, 133, 130, 125, 125, 122, + 118, 117, 116, 115, 113, 113, 114, 117, 121, 123, 113, 106, 108, 117, 126, 129, + 125, 115, 103, 93, 86, 79, 85, 75, 126, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 190, 62, 67, 37, 40, 33, 51, 47, 70, 65, + 63, 65, 65, 65, 66, 71, 77, 86, 97, 100, 99, 102, 111, 119, 114, 123, + 131, 135, 133, 132, 133, 136, 130, 130, 127, 123, 119, 118, 120, 123, 121, 124, + 125, 124, 125, 127, 124, 118, 115, 111, 106, 104, 106, 108, 109, 109, 113, 115, + 121, 122, 115, 104, 106, 113, 120, 117, 109, 100, 97, 96, 89, 81, 131, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 198, 76, 33, 33, 47, 34, 55, 59, 62, 63, 66, 72, 74, 72, 78, 77, + 81, 91, 100, 105, 109, 112, 118, 120, 123, 128, 129, 128, 123, 118, 127, 127, + 128, 126, 122, 116, 110, 107, 117, 117, 121, 125, 123, 116, 113, 115, 112, 108, + 107, 109, 109, 104, 104, 107, 112, 114, 115, 109, 101, 95, 96, 98, 105, 98, + 85, 77, 81, 83, 69, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 35, 40, + 44, 48, 56, 64, 65, 61, 75, 77, 79, 84, 90, 98, 102, 105, 106, 111, + 118, 124, 125, 124, 119, 115, 116, 118, 120, 119, 116, 114, 113, 114, 108, 108, + 111, 119, 120, 120, 117, 120, 110, 105, 104, 105, 104, 103, 106, 110, 104, 108, + 110, 106, 98, 91, 90, 92, 96, 92, 83, 76, 134, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 115, 116, 118, + 119, 116, 112, 110, 114, 118, 113, 110, 108, 114, 117, 116, 113, 114, 108, 105, + 105, 108, 108, 104, 105, 108, 111, 114, 113, 107, 97, 89, 84, 84, 86, 87, + 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 103, 107, 114, 115, 108, + 104, 108, 112, 111, 108, 107, 109, 108, 112, 116, 115, 107, 100, 100, 115, 114, + 112, 105, 97, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 14, 20, 10, 17, 19, 14, 1, 0, 5, 12, 16, 11, 8, 7, 9, 5, + 5, 3, 4, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 95, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 182, 17, 24, 9, 14, 9, 14, 14, 26, 17, 18, 23, + 32, 31, 35, 35, 38, 35, 50, 45, 44, 40, 41, 36, 33, 26, 16, 12, + 11, 7, 9, 6, 6, 4, 2, 13, 11, 13, 13, 4, 8, 71, 201, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 42, 35, 15, 20, 7, + 22, 21, 41, 41, 56, 45, 49, 62, 67, 62, 61, 67, 71, 69, 62, 59, + 60, 63, 67, 68, 66, 63, 51, 49, 47, 42, 34, 21, 8, 1, 6, 4, + 0, 3, 8, 0, 14, 40, 111, 77, 47, 38, 28, 10, 62, 202, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 183, 46, 42, 34, 33, 33, 51, 55, 61, 65, 67, 68, 70, 71, 68, 69, + 70, 72, 75, 77, 78, 78, 74, 75, 76, 75, 74, 74, 76, 78, 74, 72, + 69, 65, 61, 57, 54, 53, 38, 41, 40, 27, 13, 12, 27, 42, 69, 43, + 34, 48, 39, 7, 0, 9, 6, 65, 200, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 21, 38, 49, 55, 60, 66, 72, 62, 64, + 70, 70, 73, 72, 75, 75, 80, 79, 82, 82, 86, 86, 89, 88, 88, 87, + 89, 85, 84, 81, 84, 83, 82, 79, 79, 75, 74, 70, 70, 69, 72, 73, + 67, 53, 36, 22, 18, 17, 48, 34, 25, 26, 23, 11, 5, 9, 4, 11, + 9, 8, 15, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 34, 48, 51, + 56, 60, 60, 61, 64, 66, 74, 74, 78, 77, 79, 77, 81, 81, 85, 83, + 86, 86, 89, 88, 91, 90, 94, 93, 95, 91, 91, 87, 89, 88, 90, 88, + 90, 87, 89, 86, 88, 88, 77, 76, 75, 72, 68, 62, 55, 48, 28, 26, + 17, 4, 1, 7, 6, 0, 3, 12, 14, 13, 15, 19, 20, 18, 90, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 171, 15, 34, 45, 58, 58, 61, 64, 68, 72, 74, 74, 78, 80, + 83, 81, 83, 82, 87, 88, 87, 85, 88, 87, 89, 88, 91, 89, 92, 93, + 96, 95, 95, 93, 95, 96, 94, 94, 95, 94, 95, 95, 96, 96, 97, 90, + 84, 79, 77, 74, 71, 67, 37, 35, 23, 5, 0, 3, 0, 0, 6, 10, + 15, 16, 17, 24, 24, 11, 8, 14, 12, 91, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 203, 71, 18, 28, 44, 55, 58, 60, 60, + 65, 72, 79, 84, 86, 85, 84, 86, 89, 88, 89, 90, 94, 96, 97, 96, + 97, 96, 98, 97, 98, 97, 98, 99, 103, 101, 102, 99, 101, 100, 97, 95, + 97, 94, 96, 94, 96, 96, 98, 95, 88, 80, 76, 74, 73, 74, 66, 56, + 44, 34, 26, 16, 6, 3, 8, 6, 10, 15, 20, 34, 32, 8, 13, 15, + 11, 9, 2, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, + 33, 42, 57, 69, 73, 69, 74, 74, 78, 80, 80, 79, 78, 76, 90, 95, + 97, 98, 99, 100, 102, 104, 106, 105, 105, 104, 104, 103, 103, 101, 101, 103, + 105, 104, 101, 98, 97, 97, 97, 97, 96, 95, 94, 93, 93, 92, 76, 79, + 84, 83, 81, 80, 83, 86, 78, 66, 60, 59, 50, 32, 22, 22, 19, 9, + 11, 16, 22, 45, 48, 17, 26, 18, 16, 9, 6, 21, 6, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 180, 39, 50, 57, 66, 72, 73, 68, 73, 75, + 78, 80, 84, 85, 89, 90, 97, 100, 103, 104, 103, 103, 103, 104, 104, 104, + 103, 102, 101, 100, 100, 99, 97, 97, 99, 99, 96, 93, 92, 92, 94, 93, + 93, 92, 91, 90, 89, 89, 86, 87, 89, 87, 82, 78, 78, 77, 78, 71, + 68, 69, 64, 52, 43, 42, 41, 25, 23, 22, 20, 49, 61, 32, 39, 21, + 25, 13, 18, 16, 11, 18, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 59, 70, + 81, 85, 84, 86, 86, 85, 92, 92, 94, 91, 90, 88, 92, 94, 98, 103, + 106, 107, 105, 103, 102, 102, 104, 104, 103, 102, 101, 99, 98, 98, 91, 94, + 98, 99, 98, 96, 95, 95, 91, 91, 90, 90, 89, 88, 88, 88, 91, 88, + 84, 82, 84, 86, 86, 86, 76, 77, 77, 74, 72, 69, 60, 53, 57, 38, + 32, 24, 14, 43, 62, 39, 46, 21, 31, 18, 29, 18, 21, 32, 14, 22, + 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 31, 43, 51, 75, 77, 82, 86, 88, 91, 95, 97, 95, 95, + 95, 95, 96, 94, 97, 97, 101, 101, 103, 104, 104, 104, 104, 104, 104, 104, + 103, 102, 101, 100, 99, 99, 95, 92, 89, 90, 92, 92, 90, 87, 88, 86, + 84, 82, 80, 79, 78, 78, 76, 76, 78, 79, 79, 79, 79, 79, 79, 80, + 82, 81, 79, 76, 73, 73, 60, 64, 41, 34, 44, 23, 9, 32, 25, 14, + 55, 21, 16, 27, 34, 52, 32, 11, 23, 109, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 23, 35, 60, 80, 80, 83, + 87, 89, 90, 92, 94, 96, 97, 97, 98, 98, 98, 99, 99, 99, 103, 103, + 104, 104, 104, 104, 104, 104, 102, 102, 101, 100, 99, 97, 97, 96, 90, 88, + 87, 88, 91, 92, 91, 89, 89, 87, 85, 83, 81, 79, 79, 78, 78, 79, + 79, 79, 80, 80, 80, 80, 80, 81, 81, 81, 80, 78, 76, 75, 73, 77, + 58, 46, 49, 30, 18, 42, 44, 29, 61, 27, 23, 34, 36, 48, 79, 36, + 20, 27, 45, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 30, 33, 51, 74, 87, 90, 90, 93, 95, 96, 96, 96, 97, 98, 100, 100, + 101, 101, 101, 102, 102, 102, 104, 104, 104, 104, 104, 103, 103, 103, 102, 101, + 100, 99, 98, 97, 96, 96, 92, 89, 88, 88, 90, 91, 90, 89, 88, 87, + 85, 82, 80, 79, 78, 78, 77, 76, 75, 74, 74, 74, 74, 75, 80, 81, + 81, 82, 82, 82, 81, 81, 83, 89, 77, 65, 64, 46, 37, 58, 50, 31, + 55, 25, 25, 33, 36, 45, 77, 38, 23, 31, 62, 75, 111, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 176, 21, 34, 57, 86, 104, 100, 88, 96, 98, + 100, 101, 99, 99, 100, 101, 101, 101, 101, 102, 102, 103, 103, 103, 105, 104, + 103, 102, 102, 101, 101, 101, 103, 102, 102, 101, 100, 99, 98, 96, 99, 98, + 97, 96, 95, 93, 92, 91, 91, 89, 87, 85, 84, 82, 82, 82, 79, 78, + 76, 74, 73, 73, 73, 73, 77, 78, 79, 80, 81, 81, 82, 84, 77, 84, + 79, 74, 76, 61, 53, 65, 36, 19, 38, 16, 19, 24, 36, 45, 50, 34, + 35, 35, 55, 71, 47, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 6, 38, + 72, 91, 94, 95, 98, 99, 96, 98, 101, 101, 100, 100, 101, 102, 100, 100, + 100, 100, 101, 101, 101, 102, 102, 101, 100, 98, 98, 98, 98, 99, 100, 100, + 99, 99, 99, 99, 98, 98, 103, 101, 101, 99, 98, 96, 96, 96, 93, 92, + 91, 89, 88, 87, 87, 89, 91, 92, 90, 88, 85, 84, 83, 82, 79, 79, + 79, 79, 79, 80, 81, 81, 73, 74, 74, 77, 81, 73, 63, 63, 31, 17, + 31, 12, 11, 12, 30, 38, 30, 25, 23, 6, 10, 30, 24, 21, 13, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 170, 3, 10, 27, 59, 79, 96, 100, 95, 93, 97, 100, 94, 97, + 99, 100, 99, 99, 100, 101, 98, 98, 98, 99, 99, 99, 100, 100, 102, 101, + 99, 98, 97, 98, 99, 100, 98, 99, 99, 100, 101, 101, 102, 100, 99, 101, + 103, 103, 102, 102, 104, 106, 100, 100, 99, 98, 98, 99, 99, 102, 101, 102, + 101, 99, 96, 93, 90, 88, 84, 84, 82, 80, 79, 79, 79, 79, 78, 74, + 76, 79, 82, 76, 67, 58, 42, 26, 31, 13, 6, 0, 16, 20, 40, 37, + 38, 23, 26, 43, 33, 29, 11, 11, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 21, 40, 70, 101, 97, + 94, 92, 96, 101, 98, 90, 95, 97, 99, 99, 97, 97, 97, 98, 97, 97, + 97, 98, 98, 98, 99, 99, 103, 102, 100, 99, 99, 101, 103, 104, 101, 102, + 103, 105, 106, 108, 109, 108, 103, 104, 107, 108, 107, 107, 110, 113, 108, 107, + 107, 108, 109, 110, 111, 113, 112, 114, 114, 112, 108, 103, 98, 95, 98, 96, + 92, 89, 86, 84, 83, 83, 84, 78, 78, 78, 76, 75, 73, 63, 58, 40, + 34, 19, 13, 0, 14, 13, 10, 10, 21, 14, 17, 27, 13, 8, 12, 11, + 13, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 15, 20, 41, 72, 73, 89, 87, 92, 95, 93, 92, 94, 96, 94, 96, 98, + 99, 99, 96, 95, 95, 96, 97, 97, 97, 98, 98, 98, 99, 99, 104, 103, + 101, 100, 101, 103, 106, 107, 106, 107, 108, 111, 113, 115, 117, 116, 111, 112, + 115, 114, 112, 111, 113, 116, 113, 114, 114, 115, 116, 118, 120, 124, 122, 125, + 126, 124, 121, 114, 109, 104, 108, 104, 101, 95, 92, 88, 87, 85, 86, 79, + 80, 77, 70, 72, 79, 72, 73, 50, 41, 29, 30, 12, 29, 20, 27, 27, + 33, 19, 13, 21, 19, 29, 12, 11, 11, 12, 91, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 25, 45, 60, 74, 84, 86, 83, 94, 93, + 94, 93, 92, 89, 89, 89, 92, 93, 94, 95, 96, 96, 96, 96, 98, 98, + 98, 98, 99, 101, 102, 103, 100, 101, 103, 106, 109, 110, 111, 112, 107, 108, + 111, 114, 116, 117, 117, 117, 114, 120, 117, 115, 123, 122, 116, 118, 122, 118, + 119, 125, 125, 119, 116, 122, 129, 126, 127, 128, 131, 125, 121, 115, 115, 107, + 101, 94, 94, 89, 87, 82, 88, 84, 79, 76, 75, 73, 73, 71, 65, 57, + 51, 43, 32, 25, 32, 48, 50, 57, 68, 32, 13, 22, 10, 14, 12, 6, + 3, 7, 10, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 43, 56, + 70, 80, 88, 92, 91, 86, 93, 95, 95, 93, 93, 92, 92, 94, 92, 93, + 95, 97, 98, 99, 99, 99, 100, 100, 100, 101, 102, 104, 105, 106, 101, 103, + 105, 107, 110, 111, 112, 112, 116, 116, 116, 117, 118, 120, 122, 123, 124, 127, + 124, 119, 127, 123, 118, 118, 134, 129, 128, 122, 117, 107, 105, 108, 119, 122, + 119, 108, 94, 89, 95, 105, 106, 102, 99, 100, 102, 101, 96, 91, 70, 70, + 74, 76, 77, 75, 68, 63, 81, 63, 48, 45, 46, 38, 26, 20, 41, 37, + 58, 54, 34, 15, 0, 23, 26, 15, 5, 4, 6, 6, 90, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 24, 68, 78, 87, 92, 93, 93, 88, 82, 86, 87, + 86, 85, 86, 86, 91, 93, 94, 95, 97, 99, 101, 103, 103, 104, 105, 105, + 105, 106, 107, 109, 110, 111, 107, 108, 110, 112, 114, 116, 116, 117, 126, 125, + 123, 123, 124, 126, 129, 131, 132, 135, 130, 124, 131, 125, 119, 121, 131, 128, + 123, 106, 95, 87, 86, 86, 85, 70, 52, 54, 70, 76, 63, 46, 56, 47, + 39, 39, 48, 58, 62, 60, 80, 70, 61, 55, 55, 63, 70, 74, 72, 65, + 59, 55, 47, 32, 17, 12, 34, 46, 60, 38, 17, 17, 13, 22, 11, 5, + 3, 8, 9, 6, 1, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 8, 35, 62, 74, 81, + 89, 90, 89, 88, 84, 80, 81, 81, 81, 81, 82, 84, 91, 94, 96, 97, + 100, 102, 105, 107, 108, 109, 109, 110, 110, 111, 112, 114, 116, 117, 116, 117, + 118, 120, 122, 123, 123, 123, 128, 128, 129, 130, 132, 134, 136, 137, 137, 137, + 131, 126, 133, 125, 120, 124, 121, 119, 112, 91, 79, 75, 78, 78, 54, 61, + 67, 71, 72, 70, 61, 52, 53, 41, 27, 22, 26, 31, 31, 28, 43, 42, + 46, 47, 47, 42, 37, 31, 57, 59, 62, 62, 54, 41, 30, 29, 20, 46, + 56, 34, 16, 16, 6, 0, 5, 5, 9, 12, 10, 3, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 170, 2, 30, 68, 82, 78, 85, 92, 91, 90, 89, 86, 82, 81, 82, + 84, 84, 88, 91, 98, 102, 100, 102, 105, 108, 110, 113, 114, 114, 115, 116, + 116, 117, 119, 121, 123, 124, 122, 121, 123, 124, 125, 126, 126, 126, 124, 126, + 131, 135, 138, 140, 140, 142, 140, 138, 131, 128, 135, 126, 123, 129, 124, 119, + 110, 93, 84, 82, 87, 90, 87, 96, 99, 94, 88, 85, 79, 72, 48, 44, + 40, 42, 47, 49, 44, 38, 36, 34, 37, 39, 40, 39, 36, 33, 27, 19, + 14, 25, 40, 43, 30, 16, 31, 23, 17, 24, 22, 12, 18, 27, 14, 13, + 13, 11, 5, 0, 5, 12, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 176, 15, 26, 46, 73, 70, 82, 87, + 91, 88, 86, 85, 84, 81, 81, 83, 86, 89, 93, 97, 104, 108, 108, 110, + 112, 115, 118, 120, 121, 122, 123, 123, 124, 125, 127, 130, 132, 131, 128, 127, + 128, 129, 129, 129, 129, 129, 126, 130, 136, 142, 146, 148, 147, 148, 146, 143, + 134, 134, 139, 132, 128, 139, 135, 124, 111, 103, 97, 94, 98, 105, 126, 113, + 91, 80, 88, 99, 94, 79, 90, 83, 75, 71, 73, 76, 79, 79, 41, 32, + 21, 14, 18, 30, 44, 52, 49, 48, 49, 53, 64, 73, 71, 66, 53, 50, + 28, 22, 18, 10, 14, 5, 0, 0, 3, 9, 8, 3, 2, 3, 2, 85, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, + 3, 32, 58, 67, 87, 84, 83, 87, 89, 85, 82, 82, 81, 79, 82, 85, + 91, 95, 100, 104, 111, 114, 118, 119, 121, 124, 126, 128, 129, 129, 131, 131, + 132, 134, 136, 138, 140, 140, 136, 134, 135, 136, 136, 136, 135, 135, 136, 139, + 143, 148, 152, 154, 154, 156, 159, 154, 143, 143, 148, 140, 136, 149, 147, 126, + 112, 113, 113, 107, 110, 122, 126, 132, 124, 105, 95, 100, 108, 110, 98, 91, + 80, 69, 60, 57, 57, 58, 71, 72, 76, 79, 80, 77, 72, 68, 54, 62, + 65, 57, 53, 57, 65, 72, 87, 118, 111, 103, 93, 79, 63, 18, 23, 12, + 5, 8, 12, 9, 1, 0, 3, 1, 86, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 11, 2, 48, 75, 64, 80, 81, 81, 87, + 87, 85, 83, 84, 85, 83, 89, 93, 99, 104, 110, 114, 120, 123, 124, 123, + 128, 128, 132, 133, 134, 134, 136, 137, 138, 139, 141, 144, 146, 148, 143, 143, + 144, 145, 145, 144, 144, 143, 147, 146, 149, 152, 155, 157, 159, 162, 169, 162, + 151, 151, 155, 146, 142, 155, 155, 129, 114, 123, 126, 119, 122, 138, 144, 139, + 126, 120, 129, 131, 111, 84, 49, 62, 81, 96, 100, 96, 90, 86, 83, 80, + 77, 73, 69, 62, 54, 48, 52, 47, 36, 27, 29, 34, 31, 25, 18, 27, + 25, 55, 77, 85, 119, 126, 109, 71, 28, 6, 7, 11, 9, 7, 4, 1, + 3, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 4, + 26, 54, 68, 73, 75, 84, 89, 85, 83, 87, 86, 86, 90, 95, 102, 107, + 111, 111, 112, 117, 123, 126, 129, 121, 124, 128, 133, 131, 131, 136, 129, 133, + 140, 145, 148, 147, 145, 144, 153, 153, 151, 150, 149, 148, 144, 142, 154, 150, + 150, 155, 158, 159, 161, 168, 173, 172, 168, 164, 160, 159, 159, 160, 156, 130, + 131, 142, 134, 134, 143, 143, 149, 151, 143, 125, 104, 95, 99, 109, 122, 113, + 105, 103, 104, 106, 104, 99, 97, 98, 99, 100, 100, 94, 85, 79, 71, 69, + 60, 42, 28, 22, 19, 18, 16, 10, 10, 14, 16, 19, 40, 64, 82, 107, + 119, 88, 38, 4, 0, 0, 6, 0, 4, 10, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 22, 28, 48, 69, 76, 73, 74, 81, 91, 88, + 86, 89, 91, 91, 95, 100, 116, 118, 122, 124, 127, 130, 132, 131, 126, 126, + 121, 116, 120, 128, 128, 121, 129, 131, 137, 141, 145, 148, 150, 150, 161, 160, + 156, 152, 151, 150, 146, 145, 153, 151, 150, 155, 159, 158, 161, 166, 177, 178, + 174, 170, 167, 166, 167, 167, 154, 145, 143, 141, 139, 158, 162, 142, 155, 138, + 119, 119, 135, 147, 145, 136, 127, 125, 126, 130, 139, 142, 143, 140, 145, 141, + 140, 135, 127, 115, 104, 95, 84, 82, 74, 57, 42, 29, 18, 8, 15, 8, + 8, 11, 11, 11, 27, 48, 38, 43, 68, 98, 97, 59, 19, 0, 14, 5, + 1, 1, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 29, 41, + 63, 77, 81, 78, 79, 84, 86, 86, 86, 92, 96, 101, 107, 113, 120, 119, + 121, 125, 127, 127, 125, 123, 129, 132, 125, 113, 118, 135, 137, 124, 129, 130, + 133, 138, 144, 150, 156, 159, 162, 159, 154, 152, 152, 150, 150, 149, 152, 149, + 150, 153, 158, 156, 158, 165, 174, 175, 172, 171, 169, 167, 170, 170, 161, 159, + 162, 161, 163, 173, 170, 147, 139, 139, 142, 148, 156, 158, 155, 148, 141, 144, + 149, 154, 159, 158, 157, 154, 153, 152, 149, 145, 141, 133, 124, 117, 111, 109, + 103, 89, 74, 57, 38, 21, 15, 9, 9, 12, 13, 10, 15, 24, 7, 19, + 29, 47, 80, 94, 62, 13, 5, 6, 5, 6, 9, 93, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 31, 48, 70, 81, 82, 79, 80, 82, 83, 85, + 88, 93, 98, 106, 112, 118, 132, 126, 123, 125, 126, 122, 118, 116, 110, 115, + 114, 108, 113, 127, 133, 126, 128, 128, 132, 138, 145, 153, 160, 161, 160, 156, + 152, 151, 150, 152, 154, 154, 151, 146, 147, 152, 154, 154, 156, 160, 167, 166, + 167, 165, 164, 164, 166, 167, 167, 164, 170, 183, 177, 161, 151, 151, 136, 152, + 167, 165, 152, 144, 143, 149, 155, 157, 160, 161, 159, 154, 150, 148, 150, 149, + 148, 149, 150, 147, 144, 140, 130, 128, 122, 116, 107, 93, 70, 51, 22, 14, + 9, 15, 19, 17, 14, 12, 14, 22, 15, 6, 29, 68, 78, 63, 16, 23, + 14, 2, 4, 7, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 46, 65, + 83, 86, 84, 82, 80, 78, 86, 90, 96, 99, 104, 110, 113, 115, 123, 114, + 109, 109, 110, 105, 103, 102, 104, 107, 111, 117, 120, 122, 128, 137, 130, 131, + 136, 143, 150, 157, 161, 162, 159, 153, 149, 147, 148, 149, 150, 151, 146, 143, + 144, 148, 150, 149, 151, 154, 157, 158, 161, 163, 163, 163, 164, 165, 164, 167, + 174, 173, 164, 146, 147, 158, 157, 146, 139, 138, 142, 150, 154, 156, 155, 156, + 160, 161, 160, 156, 155, 155, 151, 148, 145, 143, 143, 140, 136, 133, 130, 128, + 123, 121, 119, 111, 93, 77, 52, 34, 15, 10, 16, 18, 16, 13, 22, 8, + 10, 26, 28, 25, 51, 91, 82, 85, 52, 12, 6, 12, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 20, 47, 69, 84, 85, 85, 88, 86, 80, 85, 94, + 103, 108, 114, 122, 123, 122, 100, 93, 89, 93, 97, 94, 97, 104, 110, 109, + 115, 125, 127, 123, 129, 139, 137, 138, 142, 146, 152, 157, 162, 160, 163, 157, + 151, 147, 145, 144, 144, 142, 142, 139, 141, 145, 147, 145, 148, 149, 151, 153, + 159, 163, 164, 164, 166, 166, 162, 178, 168, 146, 147, 156, 163, 167, 151, 135, + 127, 131, 142, 155, 158, 154, 157, 156, 158, 158, 158, 158, 157, 156, 148, 144, + 138, 134, 132, 129, 125, 122, 127, 125, 121, 118, 121, 119, 107, 94, 86, 63, + 33, 14, 9, 10, 16, 18, 17, 9, 15, 26, 22, 13, 25, 52, 79, 95, + 63, 15, 8, 12, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 45, 66, + 81, 80, 84, 94, 94, 84, 90, 100, 107, 107, 110, 110, 106, 101, 82, 79, + 85, 98, 107, 109, 120, 133, 110, 110, 109, 112, 117, 125, 128, 126, 149, 147, + 147, 148, 152, 155, 161, 160, 166, 160, 154, 149, 148, 144, 141, 138, 142, 139, + 141, 145, 146, 144, 148, 148, 144, 146, 155, 159, 164, 165, 162, 163, 160, 165, + 143, 128, 147, 164, 161, 157, 130, 129, 135, 140, 143, 145, 147, 150, 159, 155, + 154, 154, 155, 150, 144, 141, 145, 143, 137, 132, 130, 128, 127, 125, 119, 119, + 117, 116, 118, 120, 113, 104, 98, 88, 67, 37, 17, 8, 13, 20, 15, 21, + 17, 6, 4, 15, 18, 12, 62, 99, 84, 43, 40, 42, 27, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 173, 0, 59, 75, 87, 82, 84, 95, 93, 80, 100, 106, + 106, 96, 86, 77, 64, 50, 49, 52, 67, 89, 101, 108, 121, 137, 128, 130, + 125, 118, 132, 152, 153, 139, 159, 155, 151, 148, 150, 155, 162, 163, 165, 160, + 158, 154, 153, 149, 147, 143, 145, 142, 143, 146, 149, 148, 149, 150, 140, 142, + 150, 157, 161, 160, 159, 157, 157, 137, 109, 120, 156, 156, 136, 131, 131, 125, + 126, 129, 135, 143, 147, 151, 155, 152, 151, 152, 154, 149, 142, 133, 131, 126, + 120, 113, 111, 108, 107, 106, 107, 109, 110, 111, 115, 118, 114, 108, 92, 99, + 93, 66, 32, 12, 11, 18, 19, 11, 9, 15, 17, 16, 16, 22, 28, 71, + 56, 12, 11, 16, 4, 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 15, 67, 73, + 85, 88, 88, 88, 93, 99, 97, 89, 84, 92, 100, 72, 36, 22, 66, 97, + 112, 106, 105, 121, 129, 122, 126, 126, 129, 133, 142, 149, 155, 158, 152, 165, + 168, 155, 150, 158, 166, 165, 162, 168, 165, 172, 142, 146, 142, 150, 134, 139, + 144, 144, 149, 153, 149, 140, 143, 137, 136, 146, 158, 163, 161, 160, 143, 82, + 111, 148, 140, 133, 123, 123, 126, 117, 122, 133, 139, 136, 138, 144, 145, 146, + 151, 149, 139, 128, 126, 125, 126, 117, 104, 99, 105, 93, 88, 96, 81, 96, + 102, 98, 100, 110, 114, 110, 114, 106, 101, 88, 59, 24, 11, 16, 21, 20, + 17, 12, 12, 15, 14, 11, 19, 54, 99, 32, 3, 6, 9, 13, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 1, 42, 58, 84, 102, 95, 87, 91, 98, 98, 79, 96, + 90, 64, 39, 21, 20, 33, 37, 57, 68, 64, 65, 75, 80, 73, 100, 103, + 108, 113, 123, 136, 152, 164, 182, 164, 153, 158, 165, 162, 165, 173, 170, 171, + 169, 150, 174, 159, 151, 137, 162, 159, 148, 132, 130, 129, 116, 97, 91, 100, + 115, 124, 128, 131, 136, 139, 71, 84, 138, 141, 108, 110, 112, 112, 113, 119, + 129, 137, 138, 134, 136, 142, 154, 141, 138, 138, 134, 133, 129, 118, 105, 117, + 114, 100, 96, 96, 93, 90, 82, 78, 73, 71, 85, 99, 111, 109, 116, 112, + 109, 101, 81, 48, 22, 10, 17, 18, 18, 17, 15, 14, 14, 13, 19, 46, + 100, 62, 25, 30, 34, 48, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 16, 37, 78, 79, + 83, 87, 95, 97, 88, 74, 76, 57, 22, 11, 49, 85, 90, 82, 106, 111, + 118, 121, 124, 129, 131, 128, 115, 115, 116, 111, 107, 106, 113, 122, 129, 141, + 162, 178, 174, 161, 165, 182, 170, 173, 169, 152, 170, 141, 138, 151, 160, 178, + 188, 180, 169, 151, 115, 79, 96, 99, 90, 63, 40, 32, 34, 37, 55, 92, + 129, 115, 101, 114, 109, 102, 111, 129, 143, 144, 140, 136, 137, 139, 143, 125, + 127, 129, 122, 129, 134, 119, 121, 127, 121, 105, 94, 92, 87, 78, 79, 72, + 71, 73, 80, 84, 96, 103, 117, 116, 111, 103, 91, 69, 35, 7, 9, 14, + 19, 20, 17, 13, 16, 19, 14, 26, 84, 78, 19, 16, 15, 39, 17, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 12, 27, 49, 71, 82, 99, 100, 77, 52, 58, 77, 52, 76, + 86, 73, 62, 58, 66, 81, 80, 81, 87, 97, 101, 104, 109, 115, 124, 126, + 130, 130, 127, 121, 120, 120, 98, 104, 108, 121, 147, 169, 166, 150, 183, 170, + 154, 165, 128, 112, 111, 147, 238, 245, 249, 250, 251, 225, 145, 66, 104, 79, + 56, 69, 119, 161, 156, 126, 94, 103, 99, 95, 107, 116, 108, 119, 124, 139, + 148, 144, 137, 138, 137, 135, 131, 122, 134, 134, 117, 123, 135, 125, 131, 117, + 109, 113, 112, 110, 109, 106, 99, 90, 83, 73, 62, 59, 86, 118, 117, 117, + 113, 101, 94, 82, 53, 19, 3, 9, 18, 20, 19, 13, 18, 24, 25, 24, + 83, 96, 18, 6, 0, 26, 20, 92, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 28, 52, 84, 72, + 54, 48, 61, 85, 104, 108, 110, 80, 42, 29, 43, 51, 57, 69, 87, 90, + 101, 114, 119, 123, 134, 145, 144, 144, 147, 151, 155, 153, 148, 143, 135, 125, + 103, 87, 98, 128, 151, 159, 155, 153, 141, 123, 74, 110, 115, 82, 163, 206, + 232, 207, 159, 124, 101, 85, 91, 104, 109, 99, 84, 78, 76, 72, 103, 111, + 98, 95, 107, 100, 109, 139, 140, 145, 143, 135, 132, 137, 136, 129, 133, 129, + 135, 129, 114, 116, 117, 103, 73, 64, 68, 72, 66, 74, 82, 71, 79, 78, + 86, 90, 79, 63, 73, 94, 110, 118, 119, 111, 104, 97, 71, 43, 8, 10, + 14, 18, 20, 15, 20, 28, 20, 19, 79, 94, 19, 8, 1, 28, 17, 7, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 13, 28, 63, 28, 73, 97, 83, 77, 98, 100, 79, 33, 30, + 33, 52, 72, 73, 76, 93, 92, 99, 110, 119, 124, 129, 141, 152, 169, 160, + 154, 151, 155, 155, 150, 145, 148, 150, 149, 134, 100, 78, 93, 123, 110, 57, + 85, 109, 92, 53, 85, 98, 117, 125, 125, 119, 116, 116, 110, 100, 94, 88, + 86, 91, 101, 105, 101, 96, 110, 128, 108, 101, 114, 116, 129, 139, 146, 141, + 134, 131, 132, 135, 129, 120, 131, 131, 116, 100, 93, 88, 74, 61, 50, 54, + 71, 68, 55, 73, 95, 84, 70, 64, 71, 86, 89, 77, 67, 63, 90, 105, + 117, 115, 109, 100, 79, 58, 24, 15, 12, 15, 18, 18, 22, 28, 12, 21, + 77, 71, 13, 8, 1, 20, 11, 4, 85, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 54, 94, 106, 95, + 61, 32, 42, 75, 72, 42, 52, 67, 72, 75, 82, 85, 96, 117, 123, 130, + 136, 138, 144, 148, 155, 154, 151, 145, 144, 142, 148, 150, 150, 148, 142, 131, + 134, 145, 138, 101, 57, 33, 28, 73, 99, 55, 68, 92, 115, 90, 104, 108, + 110, 110, 106, 103, 105, 106, 88, 82, 83, 83, 82, 84, 104, 129, 153, 153, + 112, 105, 124, 140, 159, 147, 144, 135, 132, 139, 142, 136, 124, 117, 125, 142, + 118, 85, 80, 69, 60, 71, 64, 32, 40, 63, 61, 76, 113, 127, 126, 99, + 73, 62, 65, 69, 73, 75, 74, 85, 101, 104, 102, 94, 82, 71, 49, 27, + 12, 13, 19, 20, 23, 26, 22, 44, 93, 53, 15, 15, 9, 15, 7, 3, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 182, 89, 101, 80, 56, 33, 19, 33, 54, 60, 52, 44, 56, 83, + 98, 97, 106, 117, 124, 133, 147, 151, 149, 148, 152, 158, 158, 148, 147, 147, + 148, 148, 144, 139, 136, 134, 143, 142, 139, 136, 142, 132, 93, 51, 70, 94, + 62, 75, 104, 117, 89, 114, 111, 104, 104, 109, 110, 105, 105, 107, 99, 86, + 84, 88, 85, 75, 86, 107, 195, 171, 116, 109, 119, 132, 172, 175, 140, 131, + 135, 150, 153, 139, 125, 120, 127, 167, 148, 102, 90, 77, 85, 129, 158, 58, + 32, 75, 77, 63, 93, 133, 145, 133, 115, 98, 81, 67, 57, 49, 72, 75, + 85, 91, 91, 89, 85, 83, 65, 35, 12, 11, 20, 22, 23, 24, 15, 48, + 92, 30, 8, 12, 11, 6, 7, 4, 4, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 99, 69, 39, 23, 10, + 14, 32, 38, 30, 31, 43, 70, 84, 99, 111, 122, 133, 138, 137, 148, 148, + 148, 147, 146, 144, 145, 144, 150, 145, 138, 131, 125, 124, 125, 127, 118, 122, + 124, 123, 127, 129, 115, 96, 67, 98, 73, 76, 103, 100, 103, 95, 97, 99, + 100, 102, 104, 105, 104, 103, 100, 95, 92, 86, 81, 75, 72, 70, 175, 206, + 123, 103, 96, 150, 161, 140, 131, 138, 144, 144, 140, 130, 143, 176, 194, 205, + 165, 108, 95, 100, 101, 105, 116, 72, 55, 82, 102, 97, 112, 139, 143, 129, + 115, 106, 95, 76, 58, 46, 39, 46, 62, 75, 85, 88, 88, 86, 84, 55, + 27, 16, 16, 17, 21, 30, 26, 89, 74, 14, 11, 20, 11, 10, 12, 13, + 12, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 114, 79, 39, 12, 24, 17, 22, 32, 39, 40, 50, 67, 84, 100, + 116, 128, 137, 145, 150, 148, 140, 139, 141, 142, 144, 143, 142, 143, 139, 142, + 140, 138, 133, 126, 120, 116, 125, 121, 116, 110, 112, 119, 121, 118, 69, 72, + 93, 103, 101, 100, 99, 102, 96, 97, 100, 100, 102, 102, 103, 103, 105, 101, + 99, 94, 93, 87, 82, 79, 116, 227, 166, 105, 100, 94, 126, 137, 133, 130, + 126, 124, 137, 147, 167, 196, 205, 212, 187, 140, 114, 108, 103, 99, 68, 77, + 99, 114, 107, 100, 119, 148, 140, 126, 111, 99, 86, 69, 56, 48, 47, 51, + 59, 70, 77, 82, 84, 86, 85, 79, 51, 15, 7, 18, 23, 15, 71, 79, + 42, 5, 15, 23, 11, 7, 8, 12, 12, 9, 90, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 38, 17, 13, 18, 22, 20, + 24, 28, 38, 53, 75, 96, 113, 128, 142, 147, 148, 148, 149, 146, 138, 139, + 142, 144, 148, 147, 146, 145, 141, 144, 146, 144, 140, 134, 126, 122, 118, 115, + 117, 118, 115, 114, 118, 124, 90, 57, 102, 119, 105, 110, 101, 107, 101, 102, + 102, 103, 105, 105, 103, 103, 102, 100, 101, 99, 98, 92, 86, 83, 60, 205, + 203, 113, 132, 91, 108, 133, 118, 121, 122, 126, 149, 164, 172, 184, 201, 205, + 205, 179, 144, 129, 121, 112, 112, 119, 123, 114, 110, 120, 135, 145, 121, 109, + 98, 87, 77, 65, 61, 60, 76, 75, 74, 74, 72, 73, 74, 77, 94, 80, + 62, 44, 20, 10, 26, 51, 88, 52, 14, 5, 15, 15, 8, 4, 6, 10, + 12, 10, 10, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 9, 10, 16, 23, 23, 19, 18, 20, 38, 64, 92, 111, 129, 143, + 151, 149, 145, 143, 142, 140, 142, 142, 144, 148, 148, 148, 146, 144, 143, 141, + 138, 135, 133, 132, 133, 133, 131, 130, 132, 130, 122, 106, 108, 117, 119, 81, + 91, 105, 109, 114, 103, 102, 104, 105, 104, 104, 104, 105, 103, 102, 95, 95, + 98, 98, 96, 92, 87, 85, 97, 70, 221, 187, 135, 123, 98, 114, 107, 122, + 132, 134, 150, 159, 160, 161, 178, 184, 204, 203, 172, 158, 158, 147, 154, 150, + 143, 137, 141, 144, 128, 107, 102, 95, 88, 85, 78, 72, 73, 78, 99, 95, + 89, 84, 78, 76, 75, 75, 71, 76, 86, 78, 36, 6, 41, 102, 55, 19, + 7, 16, 10, 4, 8, 8, 8, 11, 11, 9, 11, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 25, 25, 18, 12, 32, 21, + 16, 24, 52, 85, 109, 120, 130, 141, 144, 141, 138, 140, 142, 142, 142, 142, + 143, 144, 142, 141, 138, 137, 129, 126, 121, 118, 119, 121, 127, 131, 159, 151, + 144, 136, 123, 107, 111, 124, 132, 125, 88, 97, 119, 110, 103, 98, 103, 102, + 102, 104, 103, 102, 99, 97, 90, 89, 91, 95, 97, 95, 93, 93, 92, 91, + 120, 216, 211, 111, 108, 101, 109, 128, 136, 131, 137, 147, 153, 165, 164, 175, + 206, 217, 193, 183, 187, 179, 159, 153, 147, 139, 134, 128, 122, 118, 106, 102, + 100, 99, 95, 88, 88, 92, 95, 94, 91, 89, 86, 85, 84, 83, 85, 84, + 74, 67, 69, 73, 65, 51, 29, 6, 10, 17, 2, 1, 12, 6, 8, 8, + 6, 4, 9, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 9, 8, 10, 21, 33, 43, 25, 19, 41, 78, 106, 120, 126, 139, 142, + 139, 133, 132, 134, 135, 134, 133, 133, 131, 132, 129, 128, 127, 126, 115, 115, + 115, 114, 116, 118, 121, 123, 139, 140, 144, 146, 141, 132, 127, 130, 131, 145, + 101, 105, 125, 100, 99, 102, 103, 103, 105, 107, 105, 103, 99, 96, 85, 83, + 85, 85, 88, 91, 93, 93, 87, 92, 103, 131, 213, 235, 131, 142, 110, 132, + 143, 142, 145, 149, 157, 175, 185, 203, 231, 236, 217, 202, 198, 189, 177, 159, + 144, 132, 126, 125, 134, 147, 132, 126, 122, 120, 115, 104, 99, 99, 96, 95, + 94, 92, 88, 85, 81, 80, 101, 85, 70, 71, 81, 77, 49, 19, 40, 21, + 14, 10, 0, 10, 18, 3, 6, 6, 4, 2, 9, 15, 95, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 12, 16, 36, 61, 44, 24, + 24, 57, 98, 119, 125, 129, 143, 142, 135, 127, 125, 126, 121, 115, 117, 119, + 117, 117, 118, 119, 121, 122, 111, 112, 113, 113, 115, 115, 116, 117, 114, 123, + 137, 144, 148, 144, 129, 117, 142, 120, 99, 108, 117, 102, 98, 108, 110, 112, + 116, 119, 118, 114, 108, 103, 95, 89, 84, 82, 81, 83, 86, 89, 100, 65, + 101, 112, 120, 227, 239, 172, 149, 153, 152, 153, 159, 159, 163, 180, 208, 238, + 255, 251, 236, 211, 188, 174, 165, 154, 150, 150, 153, 151, 140, 131, 143, 134, + 129, 128, 125, 117, 110, 108, 107, 105, 104, 99, 93, 87, 81, 78, 72, 85, + 95, 83, 47, 23, 37, 72, 62, 42, 25, 11, 4, 11, 12, 1, 4, 5, + 7, 8, 15, 19, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 13, 14, 18, 36, 60, 38, 19, 25, 66, 106, 119, 122, 128, 129, 128, + 124, 119, 121, 123, 116, 108, 109, 109, 108, 110, 114, 119, 123, 125, 114, 112, + 108, 107, 106, 110, 112, 115, 129, 132, 132, 126, 129, 129, 115, 100, 163, 85, + 83, 101, 107, 111, 102, 110, 120, 123, 128, 132, 131, 126, 119, 114, 114, 106, + 94, 86, 81, 80, 81, 83, 90, 92, 92, 97, 77, 103, 192, 239, 208, 188, + 158, 148, 155, 158, 168, 188, 211, 251, 255, 253, 240, 209, 171, 153, 151, 149, + 145, 135, 135, 144, 149, 145, 139, 130, 122, 124, 126, 123, 116, 114, 112, 111, + 108, 104, 101, 97, 93, 92, 84, 83, 59, 27, 33, 67, 79, 66, 67, 54, + 33, 18, 7, 4, 3, 4, 4, 9, 13, 16, 24, 26, 18, 90, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 175, 15, 15, 21, 31, 40, 15, 17, + 58, 85, 101, 121, 122, 127, 122, 126, 124, 112, 103, 103, 103, 101, 109, 98, + 102, 123, 140, 138, 130, 125, 107, 106, 102, 99, 97, 100, 107, 111, 119, 121, + 140, 139, 124, 139, 144, 115, 156, 89, 86, 102, 113, 118, 108, 112, 128, 129, + 133, 136, 136, 133, 129, 126, 125, 120, 113, 108, 104, 94, 86, 81, 79, 83, + 87, 92, 93, 99, 116, 134, 206, 237, 218, 184, 190, 194, 189, 200, 228, 252, + 255, 249, 211, 178, 161, 153, 144, 135, 131, 129, 129, 131, 132, 130, 129, 126, + 123, 125, 128, 127, 120, 112, 108, 110, 111, 108, 100, 91, 81, 76, 30, 39, + 54, 68, 77, 77, 70, 67, 65, 62, 53, 43, 31, 22, 13, 10, 15, 8, + 9, 20, 31, 28, 20, 12, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 19, 18, 17, 19, 24, 26, 26, 31, 74, 99, 111, 124, 123, 128, 127, 119, + 107, 103, 99, 94, 90, 92, 98, 111, 129, 128, 111, 100, 93, 84, 53, 51, + 55, 77, 107, 129, 134, 126, 123, 130, 132, 132, 139, 141, 141, 143, 166, 106, + 97, 97, 98, 110, 113, 129, 132, 133, 137, 141, 142, 140, 137, 134, 129, 124, + 118, 113, 108, 99, 90, 82, 73, 75, 81, 89, 96, 99, 109, 121, 98, 162, + 203, 215, 221, 209, 213, 247, 251, 236, 216, 197, 190, 182, 168, 146, 138, 130, + 127, 126, 127, 128, 129, 126, 142, 135, 125, 120, 120, 119, 116, 111, 114, 110, + 102, 89, 70, 50, 36, 29, 60, 63, 67, 74, 79, 80, 76, 75, 78, 82, + 80, 76, 64, 51, 34, 26, 14, 12, 19, 31, 41, 33, 18, 7, 90, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 22, 24, 23, 20, 18, 15, 24, 33, + 83, 111, 116, 125, 121, 128, 129, 113, 100, 97, 93, 89, 95, 105, 114, 112, + 115, 94, 59, 51, 47, 26, 68, 73, 87, 119, 163, 194, 193, 177, 164, 183, + 174, 164, 162, 134, 122, 150, 126, 98, 103, 105, 106, 116, 120, 132, 136, 138, + 142, 147, 148, 149, 147, 145, 137, 133, 129, 124, 120, 112, 99, 92, 79, 75, + 74, 81, 90, 96, 103, 112, 104, 104, 107, 153, 217, 235, 233, 249, 251, 244, + 231, 203, 183, 168, 162, 154, 162, 154, 148, 142, 137, 131, 126, 123, 123, 124, + 128, 133, 135, 133, 126, 119, 100, 78, 48, 25, 21, 40, 70, 91, 93, 91, + 85, 85, 86, 88, 88, 90, 98, 101, 102, 101, 91, 76, 60, 49, 27, 24, + 28, 36, 40, 29, 15, 4, 6, 87, 255, 255, 255, 255, 255, 255, 255, 255, + 21, 24, 25, 25, 20, 15, 13, 27, 86, 120, 126, 128, 123, 128, 115, 107, + 97, 91, 88, 93, 107, 123, 109, 90, 81, 62, 37, 50, 78, 81, 63, 71, + 79, 100, 140, 180, 200, 197, 191, 184, 158, 142, 148, 149, 157, 179, 96, 94, + 104, 113, 118, 127, 128, 131, 141, 141, 145, 150, 152, 153, 152, 151, 146, 141, + 138, 135, 132, 123, 111, 104, 98, 86, 75, 72, 77, 84, 97, 111, 105, 113, + 117, 124, 135, 145, 185, 241, 235, 214, 185, 165, 163, 165, 160, 148, 151, 146, + 143, 140, 139, 138, 133, 130, 130, 128, 125, 116, 104, 83, 65, 50, 28, 41, + 63, 82, 96, 103, 106, 107, 108, 105, 98, 96, 96, 98, 99, 100, 101, 99, + 96, 90, 85, 74, 63, 57, 46, 38, 30, 28, 26, 17, 10, 6, 3, 3, + 255, 255, 255, 255, 255, 255, 255, 255, 20, 21, 20, 21, 19, 16, 12, 26, + 87, 127, 138, 137, 126, 129, 100, 96, 86, 82, 90, 100, 101, 96, 74, 63, + 69, 71, 56, 77, 135, 179, 123, 121, 107, 105, 138, 188, 220, 223, 214, 177, + 150, 138, 137, 147, 140, 105, 122, 121, 111, 109, 118, 128, 139, 142, 144, 146, + 148, 150, 152, 154, 153, 153, 152, 148, 145, 143, 138, 131, 120, 114, 110, 100, + 84, 75, 68, 73, 86, 102, 119, 110, 103, 109, 128, 136, 133, 132, 86, 124, + 162, 168, 149, 125, 113, 107, 106, 102, 99, 95, 94, 90, 85, 83, 83, 68, + 48, 35, 42, 61, 87, 102, 124, 121, 119, 111, 106, 99, 98, 98, 112, 110, + 109, 108, 108, 106, 102, 99, 93, 87, 80, 73, 71, 66, 59, 54, 53, 43, + 30, 23, 16, 8, 4, 5, 6, 9, 94, 255, 255, 255, 255, 255, 255, 255, + 19, 16, 13, 15, 16, 17, 16, 22, 78, 121, 136, 134, 117, 117, 100, 88, + 77, 84, 99, 100, 81, 62, 85, 71, 66, 70, 69, 70, 95, 136, 136, 137, + 132, 140, 177, 225, 238, 224, 195, 169, 168, 160, 141, 150, 149, 111, 131, 131, + 111, 111, 128, 135, 146, 148, 148, 149, 150, 153, 156, 157, 157, 157, 157, 153, + 150, 147, 143, 138, 130, 123, 116, 109, 101, 91, 82, 73, 77, 83, 93, 103, + 110, 109, 114, 122, 124, 117, 129, 117, 105, 104, 116, 123, 112, 96, 113, 108, + 105, 103, 101, 98, 94, 92, 82, 92, 106, 118, 124, 118, 111, 104, 107, 112, + 117, 121, 124, 126, 130, 132, 115, 115, 115, 114, 112, 107, 100, 95, 94, 88, + 84, 81, 80, 74, 65, 58, 48, 41, 34, 26, 20, 9, 4, 5, 5, 10, + 15, 14, 255, 255, 255, 255, 255, 255, 20, 17, 12, 15, 21, 25, 17, 12, + 58, 101, 121, 124, 107, 105, 102, 81, 75, 89, 91, 74, 66, 74, 124, 108, + 73, 62, 76, 62, 49, 69, 103, 126, 144, 164, 210, 255, 255, 245, 241, 215, + 187, 157, 131, 125, 133, 135, 110, 119, 102, 117, 141, 139, 147, 149, 153, 154, + 157, 158, 161, 164, 167, 168, 164, 160, 156, 152, 150, 147, 139, 136, 128, 122, + 116, 110, 102, 88, 78, 73, 80, 88, 99, 98, 95, 108, 128, 134, 139, 144, + 144, 133, 125, 121, 119, 117, 97, 96, 95, 99, 105, 110, 113, 115, 112, 108, + 102, 97, 96, 98, 107, 111, 121, 124, 124, 122, 118, 116, 118, 119, 122, 120, + 118, 116, 114, 110, 104, 100, 98, 92, 87, 85, 86, 83, 75, 67, 55, 50, + 44, 34, 25, 12, 6, 7, 6, 8, 9, 9, 90, 255, 255, 255, 255, 255, + 22, 21, 19, 22, 32, 38, 19, 8, 46, 89, 113, 121, 107, 105, 93, 73, + 74, 89, 70, 39, 61, 113, 132, 140, 101, 73, 90, 87, 81, 112, 126, 154, + 168, 166, 188, 232, 254, 251, 205, 185, 152, 154, 175, 151, 114, 109, 102, 115, + 96, 114, 141, 135, 149, 155, 161, 161, 164, 168, 172, 177, 181, 183, 180, 174, + 168, 164, 162, 160, 153, 149, 148, 135, 124, 119, 113, 99, 85, 73, 66, 74, + 97, 111, 108, 108, 114, 115, 125, 132, 137, 138, 138, 139, 137, 134, 138, 133, + 127, 121, 119, 116, 115, 113, 115, 117, 118, 119, 117, 118, 119, 122, 120, 125, + 130, 131, 128, 124, 123, 122, 123, 122, 117, 114, 113, 111, 110, 108, 99, 90, + 80, 75, 77, 76, 72, 68, 70, 63, 51, 38, 23, 11, 7, 10, 13, 10, + 5, 6, 7, 255, 255, 255, 255, 255, 31, 20, 16, 25, 33, 33, 25, 6, + 25, 75, 102, 103, 106, 110, 94, 81, 62, 49, 45, 58, 89, 114, 130, 139, + 134, 113, 101, 109, 121, 128, 163, 164, 166, 165, 166, 187, 208, 207, 179, 160, + 140, 128, 126, 120, 108, 89, 99, 92, 95, 114, 135, 149, 156, 160, 165, 171, + 180, 183, 187, 188, 190, 190, 189, 195, 195, 189, 180, 176, 167, 159, 151, 150, + 143, 129, 120, 110, 94, 80, 69, 75, 88, 108, 121, 122, 120, 120, 131, 137, + 140, 137, 137, 141, 139, 136, 140, 138, 138, 137, 135, 133, 130, 126, 129, 131, + 132, 129, 125, 123, 124, 127, 131, 131, 133, 132, 129, 124, 122, 119, 123, 122, + 117, 115, 114, 113, 113, 112, 107, 103, 94, 86, 78, 74, 70, 69, 64, 54, + 41, 27, 19, 15, 11, 4, 5, 12, 20, 14, 0, 85, 255, 255, 255, 255, + 26, 24, 27, 29, 26, 19, 28, 15, 21, 53, 86, 93, 99, 107, 86, 67, + 48, 39, 47, 65, 88, 106, 115, 124, 123, 110, 107, 119, 134, 139, 147, 132, + 139, 156, 160, 164, 182, 195, 128, 151, 164, 144, 108, 85, 96, 112, 102, 93, + 98, 116, 137, 152, 159, 164, 174, 180, 187, 193, 194, 198, 200, 202, 200, 204, + 205, 198, 191, 183, 173, 162, 162, 158, 150, 135, 125, 115, 104, 93, 89, 84, + 83, 91, 101, 108, 118, 127, 129, 133, 138, 138, 141, 144, 143, 138, 139, 140, + 140, 140, 139, 136, 134, 133, 130, 132, 134, 134, 132, 131, 133, 136, 132, 133, + 136, 136, 135, 134, 134, 133, 127, 123, 121, 117, 115, 114, 111, 111, 109, 106, + 98, 90, 81, 75, 71, 68, 63, 56, 43, 29, 18, 12, 11, 7, 7, 9, + 13, 11, 2, 0, 85, 255, 255, 255, 23, 24, 26, 25, 24, 24, 38, 35, + 24, 34, 71, 85, 90, 103, 81, 59, 41, 39, 51, 68, 86, 95, 90, 99, + 103, 100, 103, 117, 130, 133, 149, 155, 158, 143, 140, 158, 159, 132, 247, 195, + 131, 101, 106, 117, 115, 103, 107, 100, 104, 122, 142, 155, 161, 166, 179, 185, + 190, 197, 201, 205, 211, 214, 214, 217, 218, 211, 204, 196, 184, 172, 169, 162, + 151, 138, 129, 121, 115, 108, 105, 96, 85, 82, 87, 96, 110, 122, 132, 134, + 138, 139, 141, 143, 143, 140, 141, 142, 142, 142, 141, 140, 138, 136, 133, 135, + 136, 137, 136, 136, 138, 139, 130, 130, 130, 130, 132, 132, 132, 132, 130, 127, + 124, 120, 118, 115, 112, 111, 112, 110, 101, 94, 87, 80, 74, 69, 69, 65, + 55, 40, 25, 15, 16, 17, 8, 10, 7, 14, 23, 0, 0, 255, 255, 255, + 18, 23, 25, 21, 24, 32, 36, 48, 29, 22, 61, 81, 80, 94, 80, 67, + 58, 57, 64, 72, 84, 92, 99, 106, 112, 114, 121, 131, 136, 135, 145, 134, + 150, 158, 125, 101, 133, 177, 98, 108, 119, 119, 110, 108, 111, 117, 107, 100, + 106, 124, 144, 157, 165, 170, 184, 188, 196, 202, 209, 217, 224, 228, 230, 232, + 231, 223, 216, 206, 191, 178, 168, 159, 145, 131, 123, 117, 115, 113, 111, 105, + 101, 96, 95, 96, 103, 105, 129, 133, 140, 139, 137, 136, 140, 142, 141, 142, + 142, 141, 140, 138, 135, 134, 134, 135, 136, 136, 136, 136, 137, 137, 132, 131, + 129, 126, 126, 125, 125, 124, 130, 127, 125, 122, 119, 117, 113, 112, 114, 113, + 106, 100, 93, 85, 78, 72, 72, 69, 61, 48, 28, 14, 17, 23, 14, 17, + 11, 32, 56, 23, 0, 255, 255, 255, 12, 17, 24, 23, 20, 20, 17, 37, + 23, 13, 50, 76, 74, 81, 75, 77, 80, 80, 77, 75, 84, 96, 108, 114, + 122, 128, 134, 139, 140, 138, 131, 129, 118, 94, 89, 120, 146, 138, 130, 121, + 110, 104, 110, 116, 122, 123, 109, 101, 108, 127, 148, 162, 171, 174, 187, 192, + 202, 212, 221, 228, 235, 241, 239, 239, 237, 227, 220, 210, 196, 182, 171, 157, + 142, 126, 117, 110, 113, 116, 110, 112, 116, 113, 109, 102, 98, 92, 104, 114, + 132, 140, 140, 136, 138, 142, 142, 142, 142, 141, 139, 136, 133, 131, 129, 129, + 129, 131, 133, 134, 135, 135, 137, 136, 133, 130, 127, 125, 125, 125, 127, 125, + 122, 120, 121, 119, 115, 115, 116, 113, 109, 104, 98, 89, 80, 76, 69, 66, + 59, 47, 25, 7, 10, 19, 18, 23, 21, 49, 83, 52, 4, 85, 255, 255, + 26, 13, 17, 21, 19, 12, 5, 23, 18, 14, 47, 75, 80, 79, 71, 81, + 92, 94, 88, 82, 91, 104, 106, 112, 120, 126, 131, 129, 129, 125, 130, 81, + 71, 107, 127, 118, 108, 106, 108, 107, 108, 112, 118, 122, 126, 125, 110, 105, + 111, 130, 152, 166, 175, 180, 189, 198, 209, 220, 229, 234, 238, 242, 243, 241, + 235, 227, 221, 213, 200, 186, 174, 160, 143, 125, 114, 107, 110, 117, 112, 117, + 124, 120, 116, 112, 106, 98, 80, 91, 113, 133, 143, 142, 143, 144, 148, 148, + 148, 147, 145, 142, 139, 137, 128, 127, 128, 131, 135, 138, 139, 138, 135, 135, + 134, 132, 130, 129, 129, 128, 127, 125, 123, 121, 123, 120, 117, 114, 115, 113, + 109, 105, 99, 92, 84, 78, 70, 66, 61, 48, 27, 7, 7, 19, 13, 16, + 19, 46, 84, 70, 19, 0, 255, 255, 62, 42, 29, 26, 24, 19, 12, 21, + 20, 20, 44, 75, 88, 82, 79, 83, 91, 95, 93, 91, 96, 105, 113, 117, + 122, 124, 121, 110, 106, 101, 52, 78, 114, 125, 114, 113, 122, 122, 126, 120, + 116, 119, 130, 133, 124, 116, 112, 108, 113, 132, 153, 166, 175, 178, 187, 197, + 210, 221, 227, 230, 230, 229, 231, 229, 223, 217, 214, 209, 199, 186, 173, 159, + 141, 122, 108, 99, 102, 110, 112, 120, 129, 127, 126, 125, 122, 116, 93, 85, + 91, 109, 130, 139, 144, 145, 150, 151, 152, 153, 152, 150, 148, 147, 138, 136, + 135, 137, 140, 141, 140, 139, 131, 132, 132, 132, 132, 130, 128, 127, 128, 126, + 126, 124, 123, 120, 115, 114, 114, 112, 107, 103, 98, 92, 87, 82, 76, 70, + 64, 53, 33, 11, 10, 20, 10, 13, 15, 33, 71, 85, 44, 0, 255, 255, + 92, 92, 64, 41, 28, 23, 22, 22, 22, 23, 38, 69, 87, 80, 93, 88, + 87, 93, 98, 100, 101, 103, 106, 108, 111, 105, 93, 73, 64, 58, 103, 92, + 103, 119, 110, 101, 114, 126, 126, 126, 127, 130, 131, 128, 122, 119, 111, 109, + 112, 129, 149, 162, 170, 173, 182, 192, 207, 218, 222, 221, 218, 215, 212, 209, + 203, 198, 198, 197, 187, 177, 169, 153, 134, 116, 99, 88, 93, 100, 110, 122, + 134, 137, 138, 138, 135, 129, 123, 96, 76, 86, 110, 131, 141, 146, 149, 151, + 153, 155, 156, 155, 154, 154, 151, 148, 144, 143, 144, 143, 139, 136, 135, 136, + 137, 137, 136, 133, 130, 128, 132, 130, 129, 127, 125, 120, 115, 113, 114, 112, + 106, 102, 98, 93, 88, 84, 76, 69, 62, 52, 30, 9, 6, 17, 20, 19, + 17, 31, 68, 100, 69, 4, 85, 255, 179, 22, 56, 78, 81, 79, 72, 69, + 57, 57, 75, 90, 96, 104, 90, 91, 94, 97, 98, 96, 90, 86, 69, 66, + 64, 65, 73, 85, 100, 108, 125, 122, 117, 115, 116, 119, 126, 130, 132, 123, + 127, 131, 126, 126, 128, 122, 116, 113, 116, 129, 137, 142, 154, 165, 175, 181, + 191, 198, 207, 213, 215, 212, 199, 194, 192, 193, 195, 192, 184, 177, 166, 149, + 132, 102, 63, 41, 49, 58, 79, 105, 132, 145, 151, 155, 149, 136, 127, 122, + 96, 75, 70, 110, 154, 139, 147, 150, 152, 151, 148, 146, 147, 149, 153, 150, + 147, 146, 144, 143, 140, 137, 138, 137, 136, 135, 134, 133, 134, 133, 132, 129, + 126, 124, 123, 120, 117, 115, 116, 113, 108, 103, 97, 93, 90, 87, 80, 72, + 62, 51, 32, 13, 5, 6, 19, 14, 14, 42, 66, 85, 79, 23, 1, 255, + 255, 13, 9, 25, 30, 35, 66, 74, 75, 78, 92, 96, 93, 93, 103, 98, + 91, 83, 75, 65, 56, 51, 65, 71, 81, 91, 104, 111, 119, 120, 120, 120, + 122, 123, 124, 126, 127, 128, 129, 124, 133, 136, 127, 126, 127, 123, 113, 113, + 116, 123, 129, 132, 140, 152, 153, 165, 181, 193, 201, 204, 204, 200, 199, 196, + 195, 192, 190, 185, 179, 174, 164, 151, 113, 59, 17, 0, 7, 18, 37, 68, + 104, 127, 141, 150, 150, 141, 136, 130, 105, 83, 69, 99, 145, 138, 148, 152, + 153, 151, 148, 145, 146, 147, 150, 148, 145, 144, 144, 143, 140, 138, 138, 138, + 137, 136, 135, 134, 134, 133, 132, 128, 124, 121, 121, 120, 120, 117, 114, 113, + 108, 103, 97, 93, 90, 86, 80, 73, 64, 50, 32, 14, 5, 6, 14, 14, + 16, 41, 62, 86, 85, 32, 1, 255, 255, 31, 1, 6, 9, 9, 11, 29, + 41, 46, 54, 51, 44, 42, 40, 41, 43, 51, 62, 72, 80, 81, 91, 98, + 109, 117, 125, 124, 124, 122, 124, 126, 129, 131, 131, 130, 127, 125, 128, 128, + 140, 141, 131, 126, 128, 124, 110, 111, 115, 119, 120, 118, 123, 131, 141, 149, + 162, 174, 182, 188, 191, 192, 194, 189, 188, 185, 182, 177, 174, 171, 152, 144, + 92, 27, 4, 3, 18, 41, 45, 72, 107, 131, 148, 159, 161, 155, 143, 136, + 117, 96, 67, 84, 135, 144, 152, 152, 152, 150, 146, 143, 143, 144, 144, 142, + 141, 141, 142, 142, 140, 138, 137, 137, 136, 134, 135, 134, 133, 132, 131, 127, + 121, 118, 119, 119, 119, 120, 113, 111, 104, 100, 96, 92, 87, 86, 82, 76, + 67, 50, 32, 14, 6, 6, 5, 12, 16, 35, 56, 87, 95, 45, 3, 255, + 255, 41, 18, 9, 23, 17, 32, 58, 75, 77, 81, 78, 74, 79, 99, 99, + 97, 100, 106, 112, 113, 115, 127, 125, 125, 124, 123, 120, 121, 120, 135, 135, + 135, 134, 132, 128, 126, 125, 133, 131, 139, 140, 130, 130, 130, 123, 106, 115, + 121, 119, 116, 112, 115, 115, 130, 133, 145, 161, 176, 184, 187, 185, 182, 177, + 174, 175, 175, 173, 171, 165, 149, 132, 66, 13, 10, 12, 25, 58, 77, 87, + 104, 121, 140, 155, 158, 152, 148, 138, 122, 104, 69, 72, 129, 151, 156, 155, + 154, 151, 148, 145, 144, 144, 142, 141, 140, 141, 143, 144, 143, 142, 138, 138, + 137, 135, 136, 134, 133, 133, 130, 127, 123, 120, 119, 118, 116, 118, 110, 109, + 102, 98, 95, 91, 86, 82, 82, 77, 65, 48, 28, 12, 5, 4, 2, 9, + 11, 31, 54, 89, 100, 55, 3, 255, 255, 19, 17, 0, 31, 21, 38, 72, + 95, 97, 98, 100, 100, 107, 94, 96, 102, 112, 121, 130, 136, 138, 131, 129, + 125, 120, 120, 122, 128, 131, 143, 142, 135, 131, 127, 128, 131, 131, 139, 134, + 136, 133, 130, 135, 136, 120, 107, 119, 127, 123, 120, 117, 113, 105, 96, 92, + 101, 126, 154, 169, 176, 177, 175, 168, 162, 165, 169, 168, 163, 156, 136, 105, + 48, 27, 46, 44, 52, 90, 109, 102, 101, 113, 137, 157, 163, 159, 151, 141, + 127, 111, 71, 69, 125, 152, 159, 156, 153, 151, 149, 148, 146, 146, 144, 142, + 142, 143, 145, 146, 145, 144, 140, 139, 138, 136, 135, 133, 134, 133, 128, 127, + 127, 124, 119, 114, 112, 112, 108, 105, 101, 97, 91, 88, 85, 82, 81, 77, + 64, 45, 25, 11, 5, 1, 3, 5, 7, 31, 55, 89, 102, 61, 6, 86, + 255, 20, 27, 6, 29, 16, 40, 82, 113, 119, 120, 118, 118, 121, 125, 126, + 127, 131, 132, 132, 130, 125, 126, 124, 124, 124, 125, 128, 131, 135, 140, 139, + 132, 129, 128, 133, 137, 141, 143, 136, 133, 131, 131, 139, 138, 119, 110, 124, + 134, 131, 129, 127, 114, 97, 58, 40, 34, 55, 90, 123, 150, 165, 170, 162, + 159, 159, 163, 161, 154, 147, 126, 88, 53, 62, 89, 86, 88, 117, 132, 118, + 111, 121, 146, 166, 172, 166, 156, 144, 127, 111, 74, 73, 123, 145, 157, 154, + 150, 148, 148, 149, 148, 147, 146, 144, 143, 144, 146, 146, 145, 144, 141, 140, + 139, 137, 135, 133, 134, 133, 126, 128, 129, 126, 120, 112, 109, 107, 107, 105, + 101, 97, 92, 89, 86, 83, 79, 77, 64, 42, 23, 12, 6, 2, 5, 3, + 9, 40, 59, 83, 98, 66, 8, 3, 255, 33, 29, 26, 21, 17, 42, 85, + 117, 121, 123, 122, 121, 123, 124, 124, 125, 128, 129, 130, 126, 124, 127, 126, + 127, 127, 128, 129, 128, 129, 135, 136, 134, 134, 134, 138, 139, 142, 138, 136, + 138, 135, 135, 142, 140, 121, 112, 129, 140, 138, 138, 134, 113, 87, 37, 24, + 22, 41, 68, 95, 121, 140, 154, 153, 156, 156, 153, 147, 143, 141, 130, 99, + 81, 92, 101, 88, 81, 87, 115, 110, 113, 129, 150, 161, 162, 158, 156, 143, + 125, 111, 80, 84, 131, 144, 152, 148, 145, 144, 146, 148, 148, 147, 147, 146, + 144, 144, 144, 144, 143, 141, 140, 139, 138, 136, 136, 134, 134, 133, 126, 127, + 128, 124, 118, 112, 109, 110, 109, 108, 102, 98, 95, 92, 89, 86, 78, 77, + 65, 42, 23, 14, 9, 4, 6, 5, 19, 52, 62, 73, 92, 74, 10, 3, + 255, 24, 2, 24, 7, 22, 39, 82, 109, 110, 110, 113, 114, 119, 122, 121, + 121, 121, 123, 125, 122, 121, 126, 125, 124, 124, 126, 128, 130, 132, 131, 135, + 136, 139, 138, 138, 137, 134, 133, 137, 144, 141, 135, 140, 140, 121, 115, 132, + 143, 141, 142, 140, 114, 82, 33, 42, 67, 96, 111, 109, 107, 112, 134, 143, + 153, 154, 145, 139, 139, 143, 122, 103, 100, 112, 113, 104, 98, 88, 91, 98, + 116, 141, 163, 170, 169, 165, 153, 139, 121, 108, 86, 95, 140, 146, 150, 146, + 142, 141, 146, 147, 147, 147, 148, 146, 144, 143, 143, 140, 138, 136, 141, 140, + 138, 136, 136, 134, 134, 134, 125, 126, 126, 122, 115, 111, 111, 115, 112, 110, + 104, 101, 98, 96, 92, 91, 78, 78, 66, 42, 22, 14, 9, 6, 6, 8, + 28, 65, 65, 66, 88, 81, 9, 2, 255, 18, 23, 28, 26, 23, 31, 67, + 92, 100, 109, 108, 104, 109, 112, 114, 118, 121, 123, 125, 130, 135, 130, 128, + 126, 126, 126, 129, 131, 132, 133, 136, 138, 137, 134, 133, 135, 137, 141, 142, + 143, 144, 143, 140, 138, 136, 112, 127, 140, 145, 149, 144, 122, 97, 56, 79, + 98, 110, 127, 142, 130, 108, 113, 123, 135, 142, 146, 146, 138, 129, 123, 120, + 117, 112, 110, 107, 105, 105, 86, 86, 98, 127, 159, 172, 169, 161, 145, 147, + 125, 88, 85, 118, 143, 146, 156, 147, 139, 138, 145, 151, 152, 150, 148, 146, + 144, 144, 144, 141, 138, 135, 137, 137, 136, 135, 135, 133, 133, 132, 122, 124, + 125, 122, 116, 111, 110, 113, 115, 111, 107, 102, 97, 93, 89, 87, 79, 76, + 67, 50, 31, 15, 8, 5, 6, 10, 21, 69, 95, 51, 83, 84, 16, 0, + 255, 16, 21, 25, 24, 20, 26, 61, 90, 99, 104, 106, 104, 109, 116, 117, + 121, 123, 122, 125, 130, 133, 131, 129, 128, 128, 128, 131, 133, 135, 133, 134, + 135, 134, 133, 134, 136, 138, 143, 143, 144, 144, 144, 143, 142, 141, 122, 129, + 138, 146, 152, 150, 138, 124, 90, 102, 114, 122, 132, 138, 127, 110, 110, 120, + 130, 136, 140, 143, 138, 133, 133, 130, 123, 118, 114, 113, 114, 114, 109, 110, + 118, 135, 150, 159, 158, 155, 142, 138, 114, 90, 94, 121, 138, 139, 149, 146, + 139, 139, 144, 149, 151, 151, 150, 148, 144, 143, 141, 140, 137, 136, 137, 137, + 136, 134, 134, 132, 132, 131, 127, 128, 129, 124, 117, 112, 109, 111, 113, 109, + 105, 100, 97, 91, 86, 85, 75, 71, 62, 47, 31, 16, 9, 5, 2, 10, + 31, 82, 101, 48, 75, 84, 15, 0, 255, 12, 17, 21, 21, 18, 19, 56, + 87, 95, 99, 101, 102, 110, 120, 120, 123, 125, 124, 127, 130, 132, 131, 131, + 131, 132, 131, 134, 137, 139, 136, 134, 132, 132, 135, 138, 140, 140, 145, 145, + 145, 145, 146, 146, 147, 148, 130, 129, 135, 149, 158, 158, 152, 149, 124, 121, + 118, 118, 119, 117, 112, 107, 116, 123, 128, 132, 137, 144, 144, 141, 143, 139, + 133, 128, 125, 126, 129, 131, 131, 133, 136, 138, 138, 141, 143, 144, 135, 125, + 105, 95, 105, 124, 131, 129, 138, 137, 137, 138, 139, 143, 147, 150, 151, 149, + 145, 143, 141, 140, 138, 136, 137, 138, 136, 135, 132, 130, 131, 130, 129, 129, + 130, 126, 120, 114, 113, 112, 111, 107, 103, 97, 94, 89, 84, 82, 71, 67, + 60, 46, 31, 17, 10, 8, 7, 7, 26, 83, 105, 57, 71, 78, 22, 0, + 255, 8, 11, 15, 15, 12, 13, 53, 84, 93, 95, 98, 102, 113, 121, 121, + 124, 127, 127, 129, 131, 133, 131, 132, 134, 135, 134, 137, 140, 142, 140, 136, + 132, 133, 138, 142, 144, 144, 149, 148, 146, 145, 145, 146, 148, 150, 137, 129, + 131, 148, 163, 162, 158, 157, 149, 134, 120, 113, 106, 99, 100, 107, 126, 130, + 131, 131, 136, 145, 148, 148, 148, 146, 142, 139, 137, 138, 140, 141, 138, 141, + 139, 134, 129, 129, 130, 130, 125, 115, 103, 103, 113, 122, 123, 120, 125, 128, + 132, 133, 133, 136, 141, 145, 149, 148, 146, 147, 145, 143, 139, 137, 138, 137, + 135, 133, 130, 128, 129, 128, 124, 125, 126, 125, 122, 118, 116, 115, 110, 106, + 102, 96, 93, 87, 82, 78, 69, 67, 61, 49, 36, 23, 15, 10, 13, 5, + 9, 61, 96, 79, 79, 70, 35, 1, 255, 7, 7, 9, 9, 7, 13, 53, + 83, 91, 94, 96, 104, 115, 119, 119, 122, 126, 129, 131, 133, 133, 131, 134, + 136, 137, 136, 137, 141, 144, 142, 138, 135, 136, 141, 146, 148, 148, 152, 150, + 147, 145, 144, 145, 146, 148, 153, 135, 125, 135, 149, 154, 154, 156, 162, 149, + 139, 134, 124, 111, 110, 120, 135, 137, 136, 133, 137, 146, 152, 153, 157, 156, + 156, 155, 155, 154, 153, 153, 144, 144, 139, 131, 126, 127, 123, 116, 115, 112, + 109, 112, 116, 117, 118, 118, 116, 121, 124, 126, 126, 127, 131, 136, 142, 144, + 146, 150, 151, 148, 142, 137, 138, 136, 133, 130, 130, 128, 127, 127, 123, 123, + 123, 123, 123, 119, 115, 112, 110, 108, 101, 95, 92, 86, 81, 76, 70, 66, + 60, 49, 39, 26, 15, 10, 10, 6, 4, 42, 75, 86, 83, 72, 52, 10, + 255, 7, 5, 5, 3, 2, 16, 54, 82, 88, 93, 98, 106, 116, 118, 117, + 120, 125, 128, 131, 132, 131, 131, 134, 138, 138, 135, 136, 139, 143, 142, 140, + 138, 139, 142, 146, 148, 149, 153, 151, 148, 145, 144, 144, 145, 146, 167, 148, + 128, 122, 128, 138, 148, 154, 160, 159, 161, 162, 153, 137, 129, 131, 145, 149, + 149, 147, 150, 157, 162, 162, 166, 167, 168, 169, 168, 167, 165, 164, 155, 154, + 146, 135, 130, 131, 122, 110, 112, 116, 118, 117, 115, 115, 116, 117, 113, 117, + 119, 120, 120, 121, 124, 128, 134, 137, 140, 146, 149, 148, 142, 137, 137, 135, + 132, 128, 128, 126, 125, 125, 125, 124, 123, 122, 122, 117, 111, 108, 111, 107, + 100, 94, 90, 84, 79, 75, 67, 63, 58, 49, 41, 28, 16, 9, 0, 8, + 15, 48, 62, 77, 75, 79, 63, 14, 255, 7, 5, 4, 4, 3, 20, 54, + 79, 86, 93, 100, 104, 114, 118, 116, 119, 124, 127, 129, 128, 126, 130, 134, + 138, 138, 134, 133, 137, 141, 139, 140, 141, 141, 141, 143, 146, 148, 151, 150, + 148, 147, 146, 146, 147, 148, 165, 159, 143, 124, 117, 125, 138, 147, 148, 154, + 162, 163, 155, 145, 140, 140, 154, 158, 160, 160, 166, 172, 175, 173, 176, 176, + 176, 175, 175, 174, 174, 172, 165, 165, 155, 141, 133, 135, 128, 117, 116, 123, + 124, 118, 114, 117, 118, 115, 115, 116, 116, 116, 114, 117, 120, 122, 127, 129, + 134, 139, 144, 146, 144, 142, 139, 137, 133, 129, 126, 124, 125, 125, 124, 123, + 124, 124, 123, 118, 113, 107, 109, 105, 98, 92, 88, 82, 76, 72, 65, 61, + 56, 49, 43, 32, 19, 12, 3, 7, 24, 70, 73, 75, 58, 74, 62, 11, + 255, 5, 4, 5, 5, 5, 20, 53, 75, 82, 93, 98, 104, 112, 117, 117, + 118, 123, 125, 127, 124, 121, 129, 134, 138, 138, 133, 132, 135, 139, 136, 139, + 142, 142, 140, 140, 143, 146, 149, 149, 148, 148, 148, 149, 150, 150, 154, 163, + 159, 136, 117, 119, 130, 138, 142, 149, 153, 148, 142, 141, 144, 147, 153, 159, + 164, 166, 172, 178, 179, 177, 179, 178, 176, 174, 173, 174, 177, 176, 170, 170, + 161, 143, 134, 136, 134, 126, 120, 128, 126, 117, 114, 121, 120, 112, 118, 117, + 115, 114, 114, 116, 118, 120, 124, 124, 127, 132, 138, 142, 144, 144, 139, 136, + 132, 128, 125, 123, 124, 125, 121, 120, 122, 124, 124, 121, 116, 111, 107, 103, + 96, 90, 86, 79, 74, 69, 64, 61, 57, 52, 46, 38, 26, 19, 15, 3, + 22, 90, 95, 80, 44, 59, 59, 10, 255, 6, 12, 0, 0, 3, 13, 43, + 75, 89, 93, 99, 107, 111, 115, 118, 121, 123, 122, 123, 126, 127, 134, 131, + 130, 132, 135, 139, 140, 139, 138, 139, 140, 142, 144, 145, 147, 147, 147, 148, + 149, 149, 148, 148, 150, 152, 159, 160, 158, 150, 137, 123, 113, 109, 126, 133, + 139, 140, 137, 137, 142, 149, 160, 159, 159, 163, 172, 178, 185, 187, 187, 187, + 187, 185, 184, 182, 181, 180, 172, 169, 162, 153, 145, 145, 142, 138, 132, 126, + 118, 117, 121, 123, 121, 118, 118, 116, 112, 112, 114, 117, 119, 119, 121, 121, + 122, 125, 132, 135, 137, 136, 138, 138, 137, 135, 132, 127, 122, 119, 121, 121, + 121, 120, 118, 116, 116, 116, 109, 105, 97, 89, 83, 76, 69, 63, 61, 62, + 60, 52, 45, 39, 27, 18, 8, 2, 21, 67, 95, 85, 68, 61, 45, 13, + 255, 4, 6, 0, 5, 5, 4, 34, 69, 86, 90, 97, 106, 111, 113, 116, + 120, 123, 123, 125, 128, 130, 133, 132, 131, 134, 138, 142, 144, 144, 139, 139, + 141, 143, 145, 146, 148, 148, 148, 149, 149, 148, 147, 148, 151, 154, 158, 158, + 156, 149, 138, 127, 120, 117, 104, 110, 118, 123, 128, 135, 145, 152, 148, 154, + 160, 167, 175, 180, 186, 188, 185, 185, 187, 187, 188, 187, 187, 186, 175, 172, + 167, 159, 153, 152, 149, 144, 135, 130, 123, 121, 123, 123, 119, 116, 117, 116, + 115, 115, 117, 118, 118, 117, 117, 116, 117, 120, 126, 129, 130, 129, 134, 135, + 135, 135, 134, 131, 128, 126, 123, 122, 122, 121, 119, 117, 113, 112, 115, 106, + 94, 83, 75, 69, 63, 59, 63, 65, 62, 55, 48, 41, 29, 22, 13, 0, + 5, 45, 82, 90, 79, 71, 38, 11, 255, 3, 2, 3, 17, 12, 2, 31, + 67, 85, 90, 96, 104, 110, 111, 114, 119, 122, 123, 126, 130, 133, 131, 130, + 131, 135, 138, 142, 145, 145, 139, 140, 141, 143, 146, 148, 149, 150, 148, 149, + 148, 147, 147, 148, 152, 156, 156, 155, 152, 145, 137, 130, 126, 125, 109, 110, + 112, 117, 125, 135, 144, 151, 143, 151, 163, 171, 177, 179, 184, 186, 190, 190, + 191, 191, 193, 193, 193, 191, 178, 176, 172, 166, 161, 160, 155, 148, 143, 139, + 133, 130, 129, 126, 120, 115, 116, 116, 117, 118, 120, 120, 120, 118, 116, 115, + 117, 119, 122, 124, 125, 124, 128, 129, 131, 132, 133, 132, 133, 132, 127, 124, + 122, 121, 122, 119, 113, 108, 113, 103, 88, 74, 66, 61, 60, 59, 64, 66, + 64, 58, 51, 44, 33, 25, 20, 3, 0, 30, 77, 98, 89, 73, 26, 6, + 255, 171, 2, 14, 35, 19, 12, 35, 66, 84, 92, 96, 103, 110, 112, 114, + 118, 121, 122, 125, 129, 133, 129, 129, 131, 134, 135, 139, 141, 142, 140, 141, + 142, 144, 146, 148, 150, 150, 148, 148, 148, 147, 147, 149, 154, 157, 158, 155, + 149, 143, 136, 132, 131, 131, 126, 123, 120, 122, 130, 140, 147, 150, 147, 156, + 168, 174, 176, 176, 181, 185, 195, 194, 195, 194, 195, 194, 195, 193, 183, 179, + 176, 170, 166, 164, 157, 148, 152, 149, 144, 140, 137, 131, 123, 118, 119, 118, + 118, 120, 123, 124, 125, 124, 119, 118, 119, 120, 122, 123, 123, 122, 120, 121, + 123, 125, 126, 126, 128, 128, 128, 124, 119, 117, 119, 118, 113, 109, 105, 97, + 83, 70, 62, 59, 59, 61, 64, 67, 65, 60, 54, 48, 37, 27, 19, 8, + 2, 23, 63, 84, 72, 48, 14, 1, 255, 255, 6, 28, 54, 31, 26, 41, + 63, 81, 92, 97, 105, 109, 113, 115, 118, 120, 119, 122, 127, 130, 130, 132, + 134, 136, 135, 136, 138, 139, 141, 142, 143, 144, 146, 147, 149, 149, 147, 147, + 148, 148, 148, 151, 155, 158, 161, 155, 147, 139, 134, 131, 130, 130, 123, 119, + 116, 121, 132, 143, 150, 153, 151, 158, 169, 173, 175, 177, 184, 189, 194, 195, + 196, 196, 197, 197, 198, 194, 188, 183, 179, 174, 171, 168, 160, 149, 156, 154, + 149, 146, 141, 133, 126, 121, 121, 116, 115, 115, 120, 124, 128, 128, 124, 122, + 121, 122, 124, 125, 123, 122, 118, 119, 119, 120, 122, 122, 122, 121, 126, 121, + 117, 114, 114, 114, 113, 112, 101, 94, 83, 71, 62, 57, 57, 58, 61, 64, + 63, 58, 54, 48, 38, 31, 18, 8, 1, 7, 29, 42, 32, 12, 6, 0, + 255, 255, 5, 33, 68, 50, 46, 46, 58, 74, 87, 97, 103, 110, 112, 114, + 116, 117, 117, 120, 125, 129, 133, 135, 138, 139, 137, 137, 138, 140, 142, 143, + 143, 144, 145, 146, 146, 147, 144, 146, 148, 150, 150, 152, 155, 158, 160, 154, + 144, 136, 131, 128, 127, 126, 122, 119, 119, 123, 132, 141, 147, 149, 150, 155, + 164, 169, 174, 179, 188, 193, 188, 189, 192, 193, 197, 198, 201, 198, 192, 186, + 181, 177, 175, 173, 164, 154, 155, 155, 151, 147, 141, 135, 129, 123, 122, 119, + 115, 115, 119, 122, 126, 127, 125, 123, 122, 122, 124, 124, 123, 121, 122, 122, + 121, 119, 120, 119, 118, 118, 121, 119, 117, 113, 110, 110, 111, 112, 102, 96, + 86, 73, 61, 54, 52, 52, 60, 63, 63, 59, 55, 50, 41, 33, 26, 16, + 1, 0, 0, 7, 4, 0, 2, 0, 255, 255, 170, 28, 79, 75, 75, 63, + 61, 70, 85, 95, 101, 106, 109, 110, 113, 114, 115, 119, 125, 129, 130, 134, + 138, 140, 137, 137, 139, 141, 144, 144, 144, 144, 144, 144, 144, 144, 142, 145, + 149, 152, 153, 154, 156, 157, 157, 150, 140, 132, 128, 126, 124, 122, 126, 126, + 127, 130, 135, 139, 142, 143, 150, 153, 160, 166, 174, 180, 187, 189, 185, 186, + 189, 193, 196, 198, 199, 196, 190, 183, 178, 175, 175, 176, 168, 158, 156, 156, + 153, 150, 145, 139, 136, 132, 130, 126, 124, 123, 125, 125, 126, 125, 127, 125, + 125, 125, 126, 126, 127, 125, 124, 123, 123, 121, 119, 117, 118, 117, 115, 118, + 120, 116, 109, 104, 105, 107, 101, 96, 85, 71, 59, 52, 51, 53, 60, 63, + 64, 60, 55, 51, 42, 36, 36, 22, 4, 0, 0, 0, 0, 1, 4, 0, + 255, 255, 255, 18, 85, 92, 99, 80, 66, 72, 84, 94, 99, 103, 105, 107, + 110, 113, 116, 120, 126, 131, 126, 130, 135, 137, 135, 136, 138, 141, 144, 144, + 144, 143, 143, 142, 142, 142, 140, 144, 149, 153, 154, 155, 156, 157, 154, 146, + 136, 129, 126, 125, 122, 120, 120, 122, 127, 134, 139, 142, 145, 148, 151, 155, + 159, 166, 174, 178, 179, 180, 184, 186, 187, 187, 190, 190, 190, 188, 182, 175, + 170, 168, 172, 175, 169, 159, 160, 160, 157, 151, 147, 143, 141, 138, 137, 135, + 134, 133, 133, 130, 126, 124, 127, 128, 127, 127, 129, 130, 128, 127, 124, 122, + 122, 119, 117, 115, 116, 115, 111, 117, 123, 119, 109, 101, 99, 101, 98, 92, + 82, 68, 57, 52, 54, 58, 61, 64, 65, 62, 59, 53, 46, 39, 35, 19, + 5, 1, 0, 0, 0, 2, 5, 1, 255, 255, 255, 172, 57, 103, 96, 112, + 76, 78, 67, 84, 104, 98, 105, 106, 109, 110, 115, 120, 123, 126, 131, 131, + 131, 135, 138, 140, 142, 143, 135, 139, 142, 143, 141, 139, 140, 142, 142, 144, + 149, 152, 154, 154, 153, 151, 150, 143, 132, 124, 118, 118, 120, 121, 124, 133, + 135, 133, 139, 141, 143, 155, 160, 167, 176, 181, 179, 178, 179, 181, 182, 181, + 181, 180, 178, 177, 176, 176, 171, 175, 176, 173, 170, 170, 168, 165, 148, 146, + 146, 146, 147, 145, 139, 136, 136, 137, 135, 131, 131, 132, 128, 124, 130, 134, + 134, 133, 132, 129, 129, 130, 127, 126, 124, 123, 124, 120, 115, 111, 110, 113, + 119, 123, 116, 101, 94, 96, 91, 87, 79, 67, 51, 42, 47, 57, 61, 67, + 70, 68, 63, 56, 49, 42, 41, 22, 4, 0, 0, 0, 0, 5, 6, 6, + 255, 255, 255, 255, 49, 107, 104, 117, 95, 87, 66, 81, 97, 103, 108, 109, + 112, 115, 117, 122, 124, 128, 130, 131, 131, 134, 137, 138, 140, 140, 139, 140, + 143, 142, 139, 137, 137, 139, 142, 145, 149, 153, 155, 155, 153, 152, 148, 139, + 130, 123, 120, 119, 121, 122, 127, 134, 133, 131, 140, 143, 145, 156, 163, 166, + 172, 178, 180, 181, 179, 177, 174, 173, 170, 168, 167, 166, 166, 166, 164, 169, + 172, 169, 169, 169, 167, 163, 155, 153, 149, 146, 145, 140, 133, 130, 136, 138, + 136, 132, 131, 131, 130, 124, 131, 132, 136, 135, 133, 131, 133, 134, 137, 135, + 133, 131, 129, 122, 114, 109, 109, 111, 118, 123, 118, 103, 91, 89, 84, 83, + 79, 70, 57, 49, 55, 67, 63, 69, 73, 70, 67, 62, 53, 45, 42, 24, + 6, 0, 0, 0, 2, 5, 6, 6, 255, 255, 255, 255, 35, 102, 109, 117, + 110, 93, 62, 77, 82, 103, 107, 109, 113, 116, 117, 121, 125, 128, 130, 132, + 133, 135, 135, 137, 139, 137, 140, 141, 142, 140, 137, 135, 134, 135, 142, 145, + 150, 154, 156, 156, 154, 153, 142, 136, 128, 121, 120, 122, 122, 123, 128, 133, + 131, 130, 140, 144, 144, 152, 167, 166, 168, 175, 180, 183, 179, 175, 171, 169, + 165, 162, 160, 160, 161, 161, 158, 163, 169, 169, 171, 174, 174, 168, 168, 164, + 161, 157, 152, 147, 141, 138, 136, 138, 138, 136, 137, 140, 140, 135, 132, 134, + 138, 138, 136, 135, 136, 137, 141, 140, 138, 136, 134, 126, 117, 110, 110, 112, + 117, 123, 121, 107, 92, 84, 77, 78, 78, 71, 58, 50, 58, 71, 61, 67, + 70, 68, 65, 60, 52, 44, 43, 26, 9, 0, 0, 0, 3, 5, 6, 89, + 255, 255, 255, 255, 175, 81, 113, 111, 114, 91, 61, 79, 70, 93, 99, 104, + 110, 114, 114, 116, 121, 124, 130, 133, 134, 134, 134, 138, 139, 138, 139, 138, + 138, 137, 136, 134, 134, 134, 142, 145, 150, 155, 157, 156, 153, 152, 139, 134, + 128, 123, 122, 122, 123, 122, 124, 129, 129, 131, 143, 147, 144, 151, 166, 166, + 169, 174, 177, 180, 179, 177, 170, 167, 162, 158, 156, 156, 158, 159, 158, 164, + 171, 174, 179, 184, 185, 180, 182, 177, 173, 170, 166, 161, 156, 155, 151, 154, + 152, 149, 148, 149, 146, 140, 135, 137, 138, 138, 136, 135, 135, 136, 136, 136, + 137, 137, 137, 131, 122, 115, 113, 112, 115, 119, 121, 111, 97, 86, 77, 77, + 74, 65, 52, 44, 52, 65, 60, 66, 70, 69, 66, 61, 53, 46, 44, 30, + 13, 1, 0, 0, 3, 4, 6, 255, 255, 255, 255, 255, 255, 45, 114, 113, + 115, 94, 68, 89, 69, 82, 93, 100, 108, 112, 113, 115, 118, 122, 132, 136, + 136, 133, 135, 141, 140, 137, 134, 134, 134, 134, 135, 136, 136, 136, 142, 146, + 151, 155, 156, 154, 151, 148, 139, 135, 130, 124, 123, 121, 122, 121, 115, 124, + 128, 136, 148, 150, 144, 149, 161, 166, 171, 174, 173, 175, 179, 182, 170, 167, + 162, 159, 157, 157, 159, 160, 170, 171, 176, 179, 185, 189, 188, 184, 184, 180, + 178, 177, 176, 174, 170, 171, 174, 173, 168, 160, 154, 151, 144, 137, 140, 142, + 143, 141, 137, 135, 135, 135, 134, 135, 137, 139, 139, 134, 126, 120, 113, 111, + 109, 109, 113, 110, 100, 90, 79, 75, 69, 59, 47, 42, 50, 62, 65, 71, + 75, 74, 72, 68, 60, 52, 45, 34, 17, 3, 0, 0, 4, 4, 6, 255, + 255, 255, 255, 255, 255, 175, 103, 120, 120, 101, 77, 97, 85, 84, 87, 95, + 106, 111, 112, 114, 116, 121, 129, 135, 135, 131, 133, 141, 140, 136, 131, 130, + 129, 131, 134, 136, 137, 137, 141, 145, 150, 153, 153, 150, 145, 144, 139, 135, + 131, 127, 125, 124, 122, 121, 113, 125, 131, 138, 151, 150, 145, 150, 157, 164, + 170, 172, 171, 174, 180, 185, 178, 177, 173, 170, 169, 170, 171, 170, 177, 178, + 177, 175, 179, 183, 181, 173, 172, 172, 173, 173, 172, 171, 169, 167, 169, 172, + 168, 162, 160, 157, 152, 145, 145, 144, 145, 143, 140, 136, 136, 136, 140, 140, + 140, 140, 140, 134, 126, 121, 113, 110, 105, 101, 104, 105, 99, 91, 78, 71, + 64, 57, 51, 48, 54, 63, 63, 70, 74, 73, 71, 68, 60, 53, 46, 37, + 21, 4, 0, 0, 4, 3, 6, 255, 255, 255, 255, 255, 255, 255, 65, 115, + 117, 106, 76, 96, 106, 99, 80, 90, 102, 109, 109, 111, 115, 121, 124, 132, + 134, 129, 130, 139, 141, 134, 130, 128, 126, 128, 132, 136, 136, 136, 141, 144, + 148, 151, 150, 146, 140, 138, 137, 135, 132, 130, 127, 127, 125, 124, 118, 130, + 134, 137, 146, 145, 144, 153, 157, 161, 165, 169, 171, 177, 182, 185, 184, 183, + 181, 180, 179, 179, 180, 178, 173, 171, 167, 162, 166, 170, 167, 161, 161, 160, + 163, 162, 163, 160, 157, 154, 154, 156, 156, 154, 156, 157, 155, 150, 143, 142, + 143, 140, 138, 136, 136, 136, 141, 140, 138, 137, 136, 131, 124, 119, 115, 115, + 109, 101, 101, 102, 98, 90, 75, 67, 61, 59, 57, 54, 54, 57, 58, 65, + 70, 69, 67, 64, 57, 50, 47, 40, 23, 5, 0, 0, 4, 3, 6, 255, + 255, 255, 255, 255, 255, 255, 178, 102, 112, 104, 70, 90, 120, 114, 73, 84, + 97, 104, 105, 106, 112, 117, 120, 129, 131, 126, 128, 138, 140, 134, 133, 128, + 126, 127, 131, 135, 135, 134, 140, 143, 147, 150, 148, 143, 137, 134, 134, 134, + 131, 130, 130, 129, 130, 127, 124, 135, 137, 136, 143, 142, 143, 156, 159, 159, + 160, 166, 173, 181, 184, 184, 179, 179, 178, 178, 178, 178, 178, 176, 162, 157, + 155, 150, 155, 160, 158, 153, 155, 155, 155, 156, 154, 151, 143, 139, 152, 153, + 152, 148, 147, 148, 143, 138, 136, 138, 137, 137, 136, 132, 135, 134, 136, 135, + 133, 132, 132, 128, 122, 118, 120, 121, 116, 106, 103, 103, 98, 90, 73, 65, + 59, 60, 60, 55, 50, 48, 60, 66, 71, 71, 69, 66, 59, 52, 48, 41, + 25, 5, 0, 0, 5, 3, 6, 255, 255, 255, 255, 255, 255, 255, 255, 59, + 114, 111, 81, 91, 118, 127, 111, 85, 73, 93, 108, 105, 107, 120, 120, 126, + 129, 130, 127, 125, 127, 128, 132, 129, 126, 127, 132, 135, 135, 134, 139, 147, + 152, 151, 147, 142, 135, 130, 133, 134, 133, 134, 136, 134, 131, 126, 122, 128, + 135, 139, 141, 143, 148, 155, 148, 159, 171, 178, 177, 177, 179, 181, 174, 170, + 165, 165, 166, 163, 155, 145, 137, 140, 148, 146, 143, 140, 142, 147, 153, 155, + 156, 153, 145, 140, 136, 137, 143, 145, 145, 146, 145, 141, 133, 126, 121, 122, + 118, 114, 122, 137, 147, 143, 134, 137, 134, 125, 120, 117, 115, 112, 113, 113, + 112, 111, 109, 102, 93, 87, 74, 69, 62, 59, 60, 60, 58, 55, 64, 66, + 66, 66, 68, 70, 65, 57, 50, 38, 22, 7, 0, 0, 4, 6, 7, 255, + 255, 255, 255, 255, 255, 255, 255, 177, 85, 112, 83, 81, 113, 126, 125, 96, + 73, 79, 95, 102, 106, 111, 117, 122, 124, 124, 122, 122, 126, 127, 130, 126, + 125, 127, 131, 135, 135, 135, 136, 142, 146, 143, 139, 137, 132, 129, 130, 129, + 128, 129, 129, 131, 129, 128, 133, 137, 140, 141, 141, 142, 147, 154, 161, 167, + 172, 175, 171, 169, 167, 167, 154, 151, 148, 148, 148, 147, 142, 136, 132, 134, + 135, 132, 129, 128, 131, 135, 151, 150, 149, 140, 132, 126, 126, 127, 129, 126, + 127, 128, 126, 117, 114, 117, 102, 101, 105, 115, 128, 141, 152, 155, 157, 149, + 136, 122, 117, 115, 109, 101, 114, 114, 114, 113, 109, 100, 91, 84, 74, 69, + 63, 60, 60, 59, 56, 53, 59, 62, 64, 66, 69, 71, 64, 56, 54, 42, + 25, 10, 1, 0, 4, 5, 7, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 49, 106, 93, 78, 104, 124, 137, 114, 84, 70, 79, 95, 104, 103, 112, 116, + 120, 121, 118, 120, 124, 126, 126, 123, 124, 127, 130, 133, 134, 133, 138, 143, + 144, 139, 136, 136, 134, 131, 127, 126, 125, 126, 128, 132, 132, 133, 135, 137, + 140, 138, 139, 141, 147, 154, 173, 173, 170, 167, 163, 159, 154, 151, 153, 151, + 146, 143, 139, 136, 134, 131, 126, 126, 127, 125, 125, 125, 125, 124, 129, 129, + 129, 123, 117, 112, 111, 112, 114, 109, 109, 112, 108, 99, 100, 108, 102, 97, + 101, 111, 123, 133, 146, 154, 175, 159, 137, 121, 119, 119, 111, 100, 112, 114, + 116, 114, 110, 100, 90, 84, 72, 68, 63, 61, 61, 60, 57, 53, 57, 61, + 64, 66, 70, 72, 65, 57, 57, 45, 28, 12, 3, 0, 3, 4, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 176, 80, 103, 85, 89, 115, 138, 130, + 103, 72, 65, 84, 98, 99, 105, 109, 115, 119, 119, 120, 123, 125, 124, 122, + 123, 125, 128, 129, 130, 130, 136, 141, 142, 138, 134, 134, 133, 129, 125, 126, + 129, 130, 133, 135, 138, 138, 133, 134, 136, 138, 140, 146, 154, 161, 175, 169, + 162, 159, 157, 155, 150, 145, 144, 142, 138, 133, 129, 126, 127, 128, 133, 130, + 130, 130, 128, 123, 119, 117, 115, 116, 120, 123, 121, 118, 113, 111, 111, 111, + 111, 107, 106, 109, 110, 111, 124, 119, 111, 103, 107, 119, 130, 133, 162, 147, + 129, 115, 116, 118, 114, 105, 109, 113, 117, 116, 111, 100, 90, 84, 69, 65, + 61, 61, 63, 63, 60, 57, 62, 64, 64, 64, 68, 70, 66, 59, 57, 45, + 28, 13, 4, 1, 4, 4, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 34, 97, 92, 75, 102, 124, 133, 117, 82, 60, 68, 84, 94, 97, 103, + 110, 117, 122, 123, 124, 122, 123, 124, 125, 125, 126, 127, 128, 129, 131, 136, + 139, 135, 132, 130, 128, 121, 125, 127, 132, 137, 140, 139, 139, 137, 140, 140, + 142, 144, 148, 155, 162, 169, 166, 160, 154, 154, 156, 157, 153, 148, 139, 138, + 136, 133, 132, 132, 136, 139, 135, 131, 127, 122, 122, 121, 122, 121, 142, 139, + 137, 134, 130, 126, 121, 119, 112, 121, 121, 111, 117, 130, 130, 118, 129, 133, + 124, 106, 102, 115, 122, 115, 127, 122, 113, 103, 103, 107, 109, 107, 113, 117, + 120, 117, 109, 97, 86, 80, 66, 63, 60, 61, 64, 66, 65, 63, 67, 66, + 61, 58, 60, 64, 62, 58, 53, 42, 27, 12, 4, 1, 4, 5, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 96, 80, 98, 108, 119, + 114, 91, 65, 58, 69, 84, 89, 94, 102, 111, 117, 120, 121, 119, 123, 122, + 122, 122, 122, 123, 127, 130, 132, 137, 139, 135, 131, 129, 126, 120, 122, 127, + 134, 137, 139, 138, 135, 135, 142, 142, 145, 147, 151, 156, 158, 160, 155, 152, + 149, 151, 153, 154, 150, 145, 139, 137, 133, 130, 129, 129, 130, 131, 118, 115, + 112, 111, 116, 126, 140, 145, 172, 162, 149, 136, 127, 122, 121, 118, 114, 124, + 123, 115, 118, 135, 137, 125, 112, 124, 127, 118, 116, 122, 123, 111, 109, 107, + 105, 98, 97, 102, 108, 110, 121, 124, 124, 118, 106, 92, 80, 75, 68, 64, + 60, 61, 65, 68, 69, 68, 67, 64, 57, 51, 53, 58, 58, 55, 53, 42, + 27, 13, 5, 2, 5, 5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 40, 82, 94, 93, 103, 100, 100, 98, 79, 61, 62, 75, 83, 86, + 90, 99, 107, 113, 117, 116, 119, 118, 118, 118, 118, 122, 128, 134, 138, 142, + 141, 134, 130, 129, 128, 123, 125, 128, 134, 137, 137, 134, 134, 135, 139, 140, + 144, 147, 152, 154, 152, 151, 147, 146, 145, 145, 143, 139, 132, 126, 121, 118, + 113, 112, 114, 115, 114, 111, 115, 118, 124, 127, 131, 137, 145, 152, 159, 150, + 135, 125, 120, 117, 114, 113, 115, 116, 118, 115, 112, 115, 126, 135, 109, 112, + 122, 131, 130, 121, 118, 117, 106, 105, 103, 97, 98, 105, 113, 116, 121, 124, + 125, 117, 105, 90, 81, 77, 74, 68, 62, 61, 64, 68, 70, 70, 65, 63, + 57, 52, 54, 59, 59, 56, 56, 45, 30, 16, 7, 3, 4, 88, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 67, 104, 88, 110, 91, + 88, 101, 95, 70, 60, 68, 79, 80, 82, 88, 97, 108, 114, 117, 116, 117, + 117, 117, 118, 124, 133, 138, 139, 141, 137, 128, 123, 123, 124, 121, 131, 133, + 138, 137, 136, 135, 137, 139, 141, 143, 147, 152, 156, 157, 155, 150, 141, 141, + 141, 137, 132, 123, 113, 104, 113, 110, 110, 114, 124, 131, 132, 130, 135, 144, + 154, 157, 149, 138, 130, 127, 122, 119, 121, 122, 125, 124, 120, 117, 117, 109, + 112, 118, 106, 94, 112, 141, 121, 109, 117, 137, 132, 108, 106, 120, 103, 101, + 97, 92, 94, 106, 115, 118, 117, 120, 122, 115, 105, 92, 86, 84, 79, 72, + 64, 61, 64, 67, 69, 69, 64, 63, 59, 56, 59, 64, 63, 59, 60, 51, + 33, 18, 9, 5, 4, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 40, 84, 118, 109, 106, 103, 116, 119, 81, 55, 71, 68, 77, + 79, 75, 85, 106, 113, 107, 109, 116, 124, 125, 121, 121, 128, 134, 144, 141, + 137, 133, 126, 123, 124, 126, 131, 134, 139, 142, 142, 141, 141, 140, 142, 144, + 145, 144, 145, 145, 144, 143, 133, 125, 122, 122, 123, 121, 126, 132, 138, 162, + 170, 148, 128, 133, 141, 138, 136, 135, 132, 129, 123, 119, 116, 116, 108, 116, + 116, 110, 114, 124, 122, 112, 112, 112, 118, 121, 114, 108, 113, 127, 110, 113, + 117, 123, 120, 112, 111, 111, 97, 94, 92, 93, 99, 106, 111, 113, 115, 115, + 111, 103, 93, 84, 80, 82, 76, 73, 70, 68, 68, 69, 69, 69, 62, 60, + 53, 50, 54, 59, 56, 53, 50, 49, 39, 22, 8, 6, 8, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 60, 97, 108, 101, + 104, 121, 131, 104, 67, 52, 64, 72, 76, 76, 82, 95, 105, 103, 106, 111, + 118, 120, 119, 122, 130, 139, 142, 139, 135, 131, 125, 125, 128, 130, 133, 136, + 142, 144, 145, 144, 145, 146, 153, 146, 134, 123, 121, 124, 129, 130, 126, 120, + 120, 127, 132, 134, 139, 146, 166, 178, 178, 154, 135, 129, 125, 116, 112, 110, + 110, 107, 103, 102, 106, 109, 113, 113, 114, 114, 115, 118, 119, 118, 123, 121, + 124, 124, 113, 101, 104, 114, 106, 103, 106, 111, 114, 110, 107, 104, 93, 90, + 90, 92, 98, 104, 109, 110, 115, 115, 114, 109, 103, 93, 85, 83, 76, 74, + 70, 69, 69, 70, 70, 69, 66, 62, 54, 51, 54, 59, 57, 53, 42, 42, + 34, 16, 5, 1, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 179, 62, 86, 83, 92, 106, 114, 113, 96, 66, 62, 68, + 73, 75, 78, 82, 92, 96, 101, 105, 111, 114, 115, 120, 128, 136, 139, 138, + 133, 128, 124, 126, 131, 133, 132, 136, 143, 144, 144, 142, 144, 147, 145, 133, + 118, 107, 108, 114, 124, 129, 123, 120, 120, 126, 129, 130, 133, 136, 129, 132, + 134, 129, 124, 120, 117, 111, 109, 108, 109, 106, 104, 105, 110, 115, 120, 116, + 118, 122, 122, 121, 128, 139, 136, 130, 128, 124, 112, 99, 100, 109, 106, 100, + 101, 108, 114, 112, 106, 100, 90, 89, 90, 94, 100, 105, 109, 110, 113, 114, + 115, 113, 109, 99, 86, 79, 76, 73, 70, 69, 70, 71, 70, 70, 69, 65, + 56, 51, 53, 58, 56, 53, 42, 42, 35, 18, 8, 4, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 75, 89, + 113, 112, 96, 104, 103, 77, 65, 65, 70, 77, 79, 77, 83, 88, 97, 100, + 106, 110, 113, 117, 122, 127, 138, 138, 133, 125, 121, 126, 132, 133, 131, 135, + 141, 141, 139, 137, 140, 144, 134, 122, 111, 108, 113, 118, 123, 125, 120, 121, + 121, 124, 126, 126, 126, 126, 134, 129, 125, 125, 121, 117, 116, 117, 121, 120, + 122, 119, 115, 114, 119, 122, 123, 127, 130, 129, 129, 135, 150, 159, 144, 134, + 125, 120, 110, 100, 104, 114, 109, 105, 108, 114, 117, 111, 104, 100, 92, 91, + 94, 99, 105, 109, 112, 112, 114, 113, 112, 111, 108, 97, 82, 71, 77, 74, + 72, 71, 72, 72, 71, 70, 71, 66, 56, 50, 52, 56, 54, 50, 43, 42, + 35, 19, 12, 8, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 62, 30, 62, 105, 113, 98, 105, 108, 83, 61, 63, + 70, 80, 85, 82, 80, 81, 88, 91, 99, 107, 113, 117, 119, 120, 136, 137, + 132, 123, 118, 125, 131, 130, 133, 135, 140, 140, 138, 136, 138, 142, 133, 119, + 108, 109, 115, 116, 117, 117, 120, 121, 125, 130, 137, 142, 145, 146, 151, 142, + 134, 131, 128, 125, 130, 135, 129, 128, 127, 125, 123, 120, 120, 119, 126, 143, + 148, 134, 133, 152, 169, 170, 147, 134, 121, 115, 109, 103, 110, 120, 114, 114, + 120, 123, 119, 109, 101, 98, 93, 93, 96, 101, 107, 111, 113, 112, 118, 115, + 111, 108, 103, 92, 78, 68, 77, 75, 73, 73, 74, 74, 72, 71, 70, 65, + 57, 51, 52, 56, 53, 47, 37, 36, 28, 13, 7, 4, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 0, 12, + 39, 53, 58, 68, 68, 54, 44, 54, 69, 79, 83, 83, 82, 79, 77, 79, + 87, 99, 109, 117, 119, 119, 132, 135, 131, 121, 117, 124, 129, 126, 135, 135, + 138, 139, 141, 141, 142, 144, 128, 110, 97, 101, 113, 117, 121, 124, 126, 128, + 131, 133, 141, 150, 156, 159, 135, 131, 128, 131, 137, 142, 149, 152, 144, 139, + 135, 135, 136, 136, 135, 131, 146, 167, 168, 148, 146, 167, 177, 169, 147, 130, + 116, 112, 108, 105, 111, 120, 116, 116, 121, 122, 115, 104, 101, 100, 95, 94, + 96, 101, 106, 110, 111, 111, 121, 118, 114, 108, 101, 89, 77, 69, 76, 76, + 75, 74, 75, 75, 73, 71, 67, 64, 57, 52, 53, 55, 51, 46, 37, 33, + 23, 8, 3, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 172, 7, 1, 1, 6, 1, 0, 0, 15, 41, + 67, 74, 75, 80, 83, 81, 73, 72, 77, 88, 101, 112, 116, 117, 124, 130, + 128, 119, 116, 125, 130, 125, 132, 130, 131, 135, 142, 146, 147, 146, 126, 106, + 95, 104, 119, 125, 129, 133, 131, 132, 133, 130, 135, 146, 155, 158, 147, 146, + 145, 151, 163, 168, 162, 150, 168, 156, 148, 147, 152, 156, 152, 147, 161, 175, + 174, 158, 154, 165, 170, 162, 141, 125, 116, 116, 118, 115, 116, 122, 121, 116, + 114, 114, 112, 108, 106, 106, 100, 98, 99, 102, 107, 110, 113, 112, 116, 117, + 116, 110, 101, 88, 77, 71, 76, 75, 74, 74, 75, 74, 74, 72, 66, 63, + 58, 54, 57, 58, 52, 45, 39, 33, 22, 7, 3, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 7, + 3, 8, 14, 0, 0, 6, 0, 30, 65, 71, 70, 75, 84, 84, 76, 72, + 72, 80, 93, 105, 111, 113, 119, 127, 126, 118, 116, 126, 131, 125, 127, 123, + 124, 130, 142, 148, 149, 147, 135, 116, 107, 117, 131, 131, 127, 126, 127, 128, + 128, 125, 131, 147, 160, 162, 139, 141, 147, 161, 184, 195, 180, 158, 182, 167, + 151, 147, 154, 159, 156, 150, 162, 165, 164, 157, 151, 152, 153, 151, 136, 123, + 117, 123, 129, 125, 124, 128, 124, 113, 106, 106, 111, 113, 114, 113, 105, 103, + 103, 105, 110, 113, 115, 116, 110, 113, 116, 111, 100, 86, 76, 70, 77, 75, + 74, 75, 75, 75, 74, 72, 65, 63, 59, 56, 59, 60, 53, 46, 39, 32, + 19, 3, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 171, 6, 5, 6, 5, 4, 1, 4, 8, + 45, 73, 71, 75, 86, 82, 84, 79, 71, 66, 73, 88, 100, 104, 111, 122, + 126, 118, 115, 125, 132, 128, 124, 126, 125, 122, 132, 145, 146, 136, 125, 124, + 116, 106, 111, 123, 124, 113, 143, 129, 119, 122, 134, 142, 150, 154, 140, 142, + 169, 182, 184, 206, 206, 159, 191, 175, 157, 148, 151, 156, 157, 155, 156, 160, + 161, 157, 150, 146, 149, 150, 137, 129, 125, 123, 124, 125, 126, 123, 102, 100, + 101, 105, 110, 113, 114, 110, 112, 109, 108, 109, 112, 115, 117, 117, 119, 118, + 115, 110, 104, 94, 85, 79, 77, 75, 73, 73, 77, 78, 78, 77, 70, 67, + 66, 64, 61, 54, 49, 49, 44, 30, 16, 6, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 172, 7, 8, 6, 5, 4, 0, 5, 32, 58, 69, 77, 84, 84, 81, 78, + 73, 68, 72, 84, 94, 99, 103, 115, 121, 117, 116, 126, 132, 128, 119, 121, + 119, 116, 125, 137, 138, 130, 120, 121, 114, 106, 113, 124, 125, 117, 131, 122, + 116, 119, 127, 136, 150, 162, 142, 135, 160, 179, 172, 181, 185, 163, 173, 165, + 156, 151, 151, 153, 155, 154, 151, 150, 147, 141, 141, 142, 151, 155, 139, 130, + 124, 125, 129, 123, 109, 98, 91, 94, 100, 109, 114, 116, 115, 110, 111, 109, + 107, 109, 111, 113, 115, 114, 111, 112, 111, 109, 105, 96, 88, 83, 82, 79, + 76, 73, 75, 73, 71, 69, 68, 66, 65, 63, 60, 54, 47, 46, 38, 24, + 11, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 7, 8, 8, 7, 0, 6, + 14, 36, 63, 76, 77, 82, 78, 79, 77, 71, 70, 78, 85, 89, 95, 108, + 116, 116, 116, 125, 129, 125, 116, 116, 113, 109, 116, 126, 127, 120, 115, 116, + 112, 107, 112, 121, 121, 114, 117, 116, 116, 118, 120, 127, 147, 163, 148, 131, + 150, 170, 157, 150, 160, 162, 152, 153, 153, 152, 150, 150, 151, 150, 148, 147, + 146, 142, 141, 136, 133, 130, 125, 126, 129, 129, 122, 106, 87, 76, 84, 93, + 105, 118, 122, 122, 120, 118, 114, 112, 111, 112, 114, 115, 115, 114, 109, 110, + 111, 109, 106, 97, 89, 83, 82, 79, 74, 71, 71, 69, 68, 66, 66, 65, + 65, 62, 60, 54, 47, 43, 31, 18, 7, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 172, 9, 10, 10, 10, 8, 11, 6, 19, 56, 72, 72, 80, 80, 83, + 84, 77, 71, 73, 76, 78, 90, 100, 109, 113, 116, 123, 126, 123, 119, 117, + 113, 107, 111, 116, 117, 112, 113, 114, 112, 108, 112, 117, 117, 111, 108, 108, + 111, 113, 112, 116, 131, 144, 152, 136, 143, 155, 142, 133, 144, 154, 143, 145, + 149, 149, 149, 148, 147, 144, 139, 138, 138, 136, 135, 131, 123, 119, 123, 124, + 121, 102, 83, 73, 77, 86, 96, 106, 121, 130, 132, 130, 130, 127, 120, 118, + 117, 117, 118, 118, 118, 116, 114, 115, 115, 112, 106, 96, 86, 79, 79, 76, + 73, 71, 73, 72, 72, 71, 65, 66, 65, 61, 60, 54, 46, 38, 26, 14, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 12, 13, 12, 15, 16, + 3, 9, 44, 64, 69, 81, 82, 87, 89, 81, 74, 71, 71, 70, 80, 88, + 99, 107, 113, 122, 127, 125, 126, 123, 118, 112, 111, 112, 111, 108, 110, 112, + 112, 111, 116, 120, 120, 118, 112, 109, 109, 112, 113, 112, 112, 118, 140, 134, + 135, 135, 132, 135, 143, 146, 145, 142, 143, 143, 146, 147, 143, 137, 131, 126, + 124, 124, 125, 128, 129, 128, 114, 102, 84, 60, 53, 64, 90, 114, 118, 124, + 134, 138, 136, 133, 134, 132, 124, 122, 119, 119, 119, 119, 118, 116, 118, 119, + 118, 113, 108, 97, 87, 81, 80, 75, 74, 73, 75, 75, 75, 74, 66, 68, + 67, 61, 60, 57, 48, 35, 20, 9, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 12, 14, 15, 16, 14, 6, 6, 27, 51, 70, 83, 82, 86, + 88, 83, 77, 74, 71, 68, 69, 75, 85, 96, 107, 119, 127, 130, 130, 127, + 123, 118, 116, 112, 110, 108, 109, 110, 111, 114, 119, 123, 126, 127, 124, 118, + 116, 120, 122, 120, 115, 115, 126, 129, 128, 121, 129, 139, 142, 141, 145, 143, + 139, 137, 140, 140, 136, 130, 138, 138, 138, 132, 124, 111, 100, 93, 67, 59, + 55, 64, 84, 106, 122, 127, 132, 137, 139, 139, 137, 134, 134, 133, 126, 123, + 119, 116, 116, 115, 115, 114, 116, 116, 115, 112, 108, 101, 93, 87, 84, 79, + 77, 75, 75, 74, 73, 71, 67, 68, 65, 57, 57, 56, 46, 31, 16, 88, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 16, 16, 14, + 14, 8, 9, 33, 65, 77, 78, 80, 83, 81, 79, 79, 74, 69, 67, 68, + 75, 86, 97, 110, 121, 126, 129, 126, 125, 122, 120, 114, 111, 110, 109, 109, + 110, 112, 115, 118, 121, 125, 130, 124, 122, 125, 126, 126, 125, 127, 122, 132, + 130, 126, 134, 139, 138, 138, 139, 138, 137, 133, 131, 129, 127, 125, 136, 134, + 129, 114, 96, 75, 61, 55, 51, 59, 77, 101, 124, 135, 137, 132, 137, 138, + 137, 137, 137, 136, 135, 133, 130, 125, 119, 115, 114, 114, 115, 114, 114, 113, + 112, 109, 107, 102, 97, 92, 86, 81, 76, 73, 72, 71, 70, 68, 65, 66, + 61, 51, 52, 52, 43, 27, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 16, 19, 14, 17, 10, 0, 20, 59, 71, 73, 75, + 80, 78, 80, 83, 79, 72, 72, 68, 73, 80, 92, 102, 114, 120, 125, 125, + 126, 126, 122, 116, 112, 112, 110, 108, 106, 106, 104, 104, 109, 113, 118, 114, + 112, 115, 116, 119, 125, 131, 129, 137, 139, 138, 142, 135, 131, 138, 128, 132, + 136, 132, 126, 120, 120, 123, 112, 102, 80, 58, 44, 42, 54, 66, 95, 107, + 121, 126, 126, 126, 134, 142, 138, 136, 136, 138, 140, 140, 136, 133, 132, 127, + 121, 116, 114, 115, 117, 117, 113, 113, 111, 107, 103, 98, 96, 92, 82, 79, + 74, 71, 71, 71, 70, 70, 64, 66, 58, 49, 48, 52, 41, 25, 96, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 13, 10, + 13, 10, 0, 4, 33, 67, 75, 74, 80, 82, 82, 79, 79, 78, 76, 72, + 69, 69, 76, 88, 103, 110, 115, 117, 122, 127, 128, 125, 119, 116, 113, 110, + 106, 104, 105, 105, 107, 107, 111, 113, 112, 111, 109, 107, 105, 102, 112, 111, + 111, 113, 115, 114, 112, 109, 111, 107, 100, 91, 85, 78, 74, 73, 57, 57, + 61, 75, 95, 113, 127, 132, 140, 140, 139, 139, 140, 140, 139, 139, 135, 138, + 140, 138, 133, 131, 133, 136, 129, 124, 120, 116, 113, 113, 116, 118, 113, 111, + 104, 99, 103, 108, 105, 93, 84, 77, 72, 68, 67, 64, 65, 68, 69, 62, + 55, 55, 55, 49, 33, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 173, 10, 12, 11, 0, 0, 20, 45, 66, 72, + 81, 84, 82, 83, 84, 86, 79, 77, 74, 73, 75, 83, 94, 101, 106, 111, + 118, 125, 127, 128, 124, 123, 117, 113, 108, 107, 106, 108, 108, 110, 110, 111, + 111, 110, 108, 106, 104, 103, 87, 86, 86, 87, 87, 84, 80, 76, 62, 63, + 64, 67, 72, 79, 86, 90, 117, 121, 128, 138, 148, 153, 154, 152, 148, 148, + 147, 147, 146, 145, 145, 145, 135, 134, 133, 133, 134, 136, 136, 136, 129, 125, + 119, 113, 111, 110, 112, 113, 103, 102, 99, 96, 99, 102, 95, 85, 80, 74, + 68, 62, 61, 61, 62, 63, 66, 60, 55, 52, 52, 44, 104, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 8, 10, 2, 0, 6, 19, 43, 60, 77, 79, 78, 82, 82, 81, 81, 82, + 80, 77, 75, 77, 82, 88, 98, 103, 111, 120, 124, 128, 127, 127, 120, 116, + 111, 111, 112, 113, 111, 113, 114, 114, 114, 113, 112, 111, 110, 109, 106, 107, + 110, 114, 117, 117, 113, 110, 105, 106, 110, 116, 124, 135, 144, 149, 146, 151, + 157, 160, 157, 152, 146, 143, 151, 151, 150, 149, 148, 147, 146, 146, 134, 130, + 125, 126, 131, 135, 134, 132, 131, 127, 121, 114, 108, 106, 107, 107, 102, 101, + 101, 100, 103, 103, 98, 88, 84, 78, 72, 64, 62, 61, 63, 63, 59, 55, + 52, 49, 47, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 171, 9, 5, 0, 3, 7, 22, 47, + 71, 76, 76, 80, 78, 74, 78, 81, 82, 81, 76, 75, 78, 81, 94, 97, + 105, 113, 119, 124, 125, 126, 120, 118, 114, 112, 114, 115, 113, 114, 115, 116, + 119, 119, 122, 120, 122, 120, 131, 131, 138, 142, 147, 145, 144, 138, 132, 133, + 135, 137, 141, 145, 148, 149, 154, 157, 158, 154, 147, 142, 143, 145, 148, 148, + 147, 146, 144, 143, 142, 141, 134, 130, 125, 122, 123, 125, 125, 125, 127, 123, + 118, 112, 107, 104, 104, 104, 106, 104, 103, 103, 105, 104, 100, 93, 86, 82, + 75, 65, 63, 65, 64, 63, 54, 51, 49, 47, 42, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 173, 7, 5, 5, 5, 9, 35, 63, 76, 80, 85, 83, 78, 73, 77, + 79, 81, 80, 80, 81, 82, 86, 91, 96, 106, 113, 120, 122, 125, 121, 119, + 116, 117, 117, 118, 117, 116, 115, 114, 120, 121, 127, 127, 131, 130, 139, 138, + 142, 142, 144, 139, 135, 130, 139, 141, 145, 149, 151, 152, 152, 151, 153, 155, + 155, 150, 143, 142, 147, 153, 148, 148, 146, 145, 143, 141, 140, 139, 138, 137, + 132, 125, 118, 115, 116, 119, 118, 117, 115, 112, 111, 107, 105, 103, 106, 102, + 97, 97, 99, 97, 94, 92, 85, 83, 76, 65, 62, 62, 60, 56, 50, 48, + 46, 42, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 6, 6, 3, 0, 14, + 39, 62, 76, 81, 81, 79, 70, 72, 76, 78, 81, 83, 84, 84, 77, 81, + 87, 98, 108, 115, 122, 124, 124, 121, 119, 120, 120, 121, 120, 119, 112, 114, + 118, 123, 128, 132, 134, 136, 141, 142, 143, 146, 147, 145, 140, 136, 129, 132, + 137, 141, 143, 144, 143, 142, 143, 147, 150, 148, 143, 141, 143, 147, 151, 150, + 148, 146, 144, 142, 140, 139, 142, 142, 138, 129, 119, 112, 113, 115, 109, 110, + 112, 113, 114, 110, 106, 103, 105, 99, 94, 93, 93, 89, 87, 88, 84, 85, + 80, 67, 64, 65, 62, 55, 48, 47, 43, 110, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 172, 6, 3, 2, 0, 15, 44, 66, 72, 72, 75, 75, 71, + 70, 75, 79, 83, 83, 81, 74, 78, 85, 92, 102, 109, 116, 118, 123, 120, + 119, 120, 122, 123, 120, 118, 116, 116, 120, 124, 129, 132, 135, 136, 134, 135, + 138, 142, 146, 147, 146, 146, 145, 145, 146, 147, 147, 148, 148, 148, 147, 149, + 151, 150, 146, 144, 145, 147, 150, 149, 147, 144, 142, 139, 138, 137, 142, 140, + 136, 129, 122, 117, 114, 113, 105, 109, 114, 117, 117, 112, 107, 102, 103, 97, + 95, 96, 93, 85, 83, 85, 86, 89, 85, 72, 67, 67, 62, 52, 47, 45, + 39, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 4, 17, 2, + 7, 36, 61, 66, 66, 72, 78, 73, 67, 71, 79, 82, 80, 76, 78, 80, + 85, 92, 97, 105, 109, 113, 120, 119, 117, 117, 120, 120, 117, 115, 121, 121, + 125, 128, 132, 135, 137, 138, 142, 141, 142, 144, 147, 147, 145, 143, 143, 142, + 139, 138, 139, 141, 144, 146, 144, 142, 139, 135, 133, 135, 139, 142, 143, 142, + 140, 138, 135, 132, 130, 129, 138, 133, 127, 124, 122, 119, 113, 108, 103, 108, + 115, 119, 118, 113, 106, 100, 97, 92, 93, 95, 90, 80, 76, 77, 80, 84, + 81, 69, 63, 65, 58, 46, 47, 45, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 11, 8, 3, 3, 12, 29, 49, 65, 72, 76, 79, + 78, 69, 68, 74, 78, 75, 80, 81, 82, 84, 88, 93, 100, 106, 113, 114, + 114, 115, 116, 116, 116, 115, 120, 121, 125, 130, 134, 137, 139, 139, 139, 141, + 141, 140, 143, 147, 147, 142, 142, 137, 135, 137, 136, 135, 140, 149, 146, 146, + 142, 135, 133, 137, 140, 138, 143, 135, 129, 132, 134, 132, 132, 135, 142, 135, + 125, 118, 120, 124, 120, 112, 102, 107, 110, 110, 113, 115, 113, 108, 105, 101, + 104, 105, 99, 87, 80, 81, 86, 86, 78, 62, 53, 50, 52, 53, 41, 110, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 5, 2, + 1, 4, 13, 32, 54, 70, 65, 74, 79, 78, 76, 80, 82, 80, 79, 80, + 80, 82, 86, 92, 98, 101, 112, 112, 115, 116, 118, 117, 117, 115, 118, 118, + 122, 127, 131, 134, 136, 137, 138, 139, 137, 135, 137, 143, 144, 143, 140, 138, + 140, 144, 143, 139, 140, 146, 142, 142, 138, 131, 129, 133, 135, 134, 134, 129, + 129, 134, 137, 135, 135, 138, 134, 133, 129, 124, 122, 120, 112, 103, 95, 103, + 109, 108, 108, 109, 109, 107, 114, 105, 103, 106, 106, 97, 86, 83, 83, 80, + 71, 54, 43, 39, 38, 35, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 172, 8, 3, 0, 0, 10, 34, 55, 60, 70, + 77, 78, 77, 80, 82, 83, 77, 78, 80, 81, 82, 87, 92, 95, 105, 106, + 111, 113, 116, 117, 116, 113, 115, 117, 121, 125, 129, 133, 135, 136, 139, 139, + 136, 132, 133, 138, 139, 137, 135, 137, 144, 150, 148, 142, 138, 138, 140, 140, + 136, 130, 128, 131, 133, 131, 130, 131, 135, 139, 140, 136, 136, 139, 118, 123, + 127, 126, 125, 121, 111, 101, 96, 108, 116, 113, 106, 104, 107, 109, 118, 106, + 98, 101, 108, 102, 88, 78, 68, 67, 61, 50, 44, 41, 40, 37, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, + 10, 1, 0, 0, 15, 30, 56, 64, 68, 69, 69, 72, 77, 82, 79, 78, + 79, 80, 80, 84, 88, 92, 96, 100, 104, 111, 113, 115, 113, 113, 115, 115, + 120, 122, 128, 130, 135, 134, 140, 139, 138, 131, 133, 133, 133, 128, 128, 134, + 142, 147, 145, 139, 133, 131, 134, 135, 132, 126, 125, 128, 129, 129, 131, 134, + 136, 136, 132, 128, 129, 132, 119, 121, 122, 122, 123, 121, 109, 97, 102, 116, + 125, 119, 108, 103, 107, 109, 114, 104, 96, 97, 103, 99, 86, 77, 60, 59, + 55, 48, 47, 49, 46, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 176, 18, 14, 7, 6, 10, 14, 44, 50, + 60, 67, 67, 69, 75, 78, 80, 81, 80, 80, 81, 83, 85, 89, 92, 96, + 101, 108, 112, 114, 114, 113, 116, 115, 120, 122, 128, 130, 135, 135, 140, 141, + 142, 136, 136, 132, 127, 117, 124, 131, 137, 140, 139, 136, 131, 128, 126, 128, + 126, 121, 120, 124, 125, 125, 130, 134, 132, 127, 122, 121, 124, 127, 135, 130, + 122, 118, 120, 120, 108, 94, 99, 113, 122, 118, 110, 106, 107, 109, 110, 107, + 104, 101, 99, 95, 87, 82, 69, 66, 59, 49, 47, 44, 109, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 27, 25, 22, 19, 17, 27, 34, 48, 64, 71, 72, 73, 76, 79, 80, + 80, 80, 80, 83, 86, 87, 91, 95, 100, 107, 111, 114, 115, 116, 114, 115, + 117, 121, 125, 129, 133, 135, 137, 140, 141, 138, 135, 132, 123, 113, 120, 127, + 133, 134, 133, 133, 131, 127, 125, 127, 126, 123, 123, 127, 129, 129, 131, 133, + 129, 122, 120, 126, 131, 133, 131, 127, 120, 116, 120, 123, 116, 106, 93, 103, + 112, 112, 110, 109, 108, 106, 102, 105, 105, 98, 91, 87, 83, 81, 75, 69, + 59, 49, 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 37, 35, 31, 30, 23, 24, + 33, 50, 61, 67, 71, 75, 77, 79, 80, 81, 79, 81, 84, 85, 89, 92, + 96, 102, 106, 110, 113, 114, 112, 113, 115, 118, 122, 127, 131, 133, 134, 137, + 138, 135, 133, 131, 124, 114, 112, 121, 127, 127, 127, 129, 127, 122, 122, 125, + 125, 123, 124, 129, 131, 131, 132, 133, 128, 121, 123, 132, 137, 136, 120, 124, + 126, 124, 124, 124, 121, 116, 100, 105, 111, 113, 116, 116, 113, 105, 98, 102, + 102, 93, 87, 84, 80, 77, 71, 65, 52, 114, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 36, 35, 37, 40, 31, 22, 20, 32, 47, 56, 69, 76, 77, 79, + 81, 80, 78, 80, 83, 84, 85, 88, 91, 96, 102, 107, 111, 112, 110, 110, + 112, 115, 119, 124, 128, 131, 131, 133, 133, 130, 130, 130, 125, 118, 106, 116, + 123, 124, 124, 126, 124, 118, 115, 118, 119, 117, 119, 124, 126, 125, 127, 128, + 122, 116, 120, 129, 132, 128, 125, 136, 143, 138, 127, 119, 113, 110, 116, 117, + 120, 121, 126, 126, 117, 105, 105, 107, 105, 97, 92, 92, 86, 80, 66, 56, + 43, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 31, 29, 23, 22, + 24, 27, 31, 41, 62, 81, 78, 83, 75, 90, 76, 85, 74, 77, 79, 78, + 82, 91, 97, 99, 104, 110, 116, 112, 110, 113, 120, 126, 128, 128, 126, 130, + 133, 130, 125, 122, 124, 127, 119, 115, 112, 117, 127, 135, 136, 135, 122, 121, + 117, 114, 116, 123, 126, 124, 126, 124, 125, 125, 126, 125, 123, 121, 125, 139, + 145, 132, 115, 113, 121, 128, 118, 122, 124, 123, 123, 120, 112, 102, 108, 108, + 106, 100, 93, 84, 77, 72, 58, 51, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 182, 34, 22, 22, 23, 22, 20, 25, 43, 61, 73, 78, + 72, 80, 64, 74, 70, 79, 71, 72, 78, 88, 97, 101, 106, 111, 116, 112, + 111, 115, 120, 124, 124, 122, 129, 132, 134, 132, 127, 122, 121, 122, 133, 131, + 129, 128, 129, 131, 133, 134, 125, 125, 122, 118, 121, 127, 130, 128, 131, 127, + 125, 122, 121, 121, 122, 121, 125, 133, 139, 132, 124, 122, 122, 120, 115, 117, + 118, 120, 124, 126, 121, 111, 110, 107, 102, 95, 87, 76, 64, 55, 118, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 23, 23, + 23, 19, 12, 10, 24, 38, 59, 69, 72, 77, 65, 71, 72, 80, 68, 68, + 73, 83, 92, 96, 102, 106, 112, 111, 114, 117, 120, 121, 118, 116, 127, 128, + 129, 129, 127, 124, 121, 119, 126, 128, 129, 129, 129, 132, 137, 142, 126, 127, + 124, 121, 123, 129, 130, 128, 138, 133, 127, 123, 122, 123, 125, 125, 127, 129, + 129, 129, 132, 130, 122, 112, 117, 119, 119, 119, 126, 128, 121, 112, 115, 108, + 101, 93, 85, 73, 58, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 25, 24, 23, 17, 10, 13, 19, 39, 55, + 67, 76, 73, 73, 72, 72, 74, 69, 70, 76, 83, 86, 94, 99, 107, 109, + 115, 119, 119, 117, 113, 111, 122, 121, 121, 122, 125, 126, 125, 123, 119, 120, + 122, 124, 128, 133, 139, 143, 127, 128, 126, 124, 126, 131, 131, 128, 132, 129, + 124, 122, 123, 124, 127, 127, 127, 125, 125, 128, 133, 131, 121, 112, 114, 120, + 125, 125, 127, 126, 122, 115, 117, 106, 94, 85, 79, 70, 122, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 177, 26, 28, 21, 15, 12, 29, 40, 52, 57, 66, 67, 70, 63, 75, 70, + 67, 69, 73, 78, 88, 95, 99, 106, 114, 118, 117, 114, 112, 112, 126, 124, + 122, 123, 126, 129, 131, 132, 135, 130, 126, 127, 131, 135, 135, 133, 132, 134, + 133, 130, 132, 136, 136, 131, 127, 125, 123, 122, 123, 123, 123, 122, 126, 126, + 127, 128, 129, 126, 122, 120, 109, 122, 132, 132, 128, 124, 122, 120, 113, 98, + 80, 68, 64, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 28, 22, 20, 42, 44, + 48, 39, 52, 58, 69, 64, 70, 64, 60, 62, 65, 71, 83, 92, 90, 96, + 106, 110, 109, 108, 110, 112, 130, 129, 128, 127, 128, 130, 133, 135, 144, 137, + 130, 130, 135, 138, 135, 131, 134, 136, 136, 134, 135, 139, 137, 132, 129, 127, + 125, 124, 123, 121, 120, 117, 123, 125, 127, 127, 123, 117, 119, 125, 118, 130, + 137, 130, 119, 110, 105, 102, 104, 89, 69, 101, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 182, 41, 59, 56, 57, 33, 42, 43, 61, 57, 64, 59, + 56, 58, 63, 66, 73, 80, 78, 88, 98, 102, 101, 103, 109, 116, 125, 129, + 132, 133, 132, 132, 134, 137, 138, 134, 131, 130, 132, 135, 135, 134, 131, 134, + 134, 133, 134, 137, 134, 128, 130, 127, 123, 121, 120, 119, 118, 117, 121, 123, + 127, 128, 121, 113, 115, 123, 131, 134, 130, 119, 109, 99, 91, 83, 90, 78, + 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 62, + 66, 35, 38, 28, 45, 41, 65, 58, 56, 58, 60, 59, 62, 67, 73, 80, + 91, 95, 95, 98, 107, 116, 112, 121, 130, 134, 133, 132, 134, 137, 132, 132, + 130, 126, 122, 121, 123, 126, 124, 127, 128, 127, 128, 130, 127, 121, 119, 115, + 110, 108, 109, 112, 113, 113, 118, 120, 125, 129, 121, 110, 111, 118, 124, 121, + 112, 106, 102, 100, 93, 85, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 198, 73, 31, 27, 41, 28, 50, 55, + 58, 59, 61, 66, 69, 67, 72, 72, 77, 87, 96, 101, 106, 110, 117, 119, + 123, 128, 130, 129, 124, 120, 131, 131, 132, 130, 126, 120, 114, 111, 121, 121, + 125, 129, 127, 120, 117, 119, 116, 112, 111, 113, 112, 109, 108, 111, 118, 120, + 120, 117, 108, 102, 102, 104, 110, 102, 89, 83, 86, 87, 73, 123, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 39, 31, 36, 40, 44, 51, 58, 60, 55, 70, 71, + 75, 78, 86, 93, 100, 101, 105, 109, 118, 123, 126, 123, 120, 116, 120, 121, + 124, 122, 120, 116, 117, 116, 112, 110, 115, 121, 124, 121, 121, 123, 113, 108, + 106, 107, 108, 107, 109, 113, 109, 112, 116, 112, 104, 97, 95, 96, 99, 96, + 87, 79, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 210, 116, 120, 121, 124, 119, 116, 112, 118, 120, 117, 111, + 112, 115, 121, 117, 117, 117, 111, 108, 108, 111, 113, 109, 109, 112, 117, 119, + 119, 113, 103, 94, 89, 88, 89, 91, 143, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 206, 106, 110, 117, 117, 110, 106, 110, 114, 113, 110, 109, 111, 110, + 114, 118, 118, 110, 103, 102, 118, 117, 116, 109, 100, 147, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy16' of size 139x185x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy16[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 250, 248, 250, 253, + 255, 250, 250, 249, 249, 250, 252, 255, 255, 255, 255, 255, 255, 254, 251, 247, + 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, + 250, 248, 241, 236, 241, 241, 241, 239, 236, 236, 240, 243, 239, 237, 235, 235, + 237, 241, 246, 250, 246, 241, 239, 244, 248, 242, 227, 213, 206, 199, 186, 172, + 168, 179, 200, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 248, 230, 231, 234, 230, 221, 212, 206, + 206, 204, 198, 193, 190, 192, 195, 197, 195, 192, 191, 193, 199, 206, 210, 222, + 214, 211, 220, 230, 223, 198, 174, 148, 151, 152, 144, 135, 133, 140, 148, 152, + 158, 177, 201, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, + 199, 187, 189, 185, 178, 172, 165, 158, 152, 148, 135, 139, 144, 148, 153, 153, + 143, 131, 132, 141, 145, 139, 133, 131, 129, 124, 142, 137, 134, 135, 140, 140, + 134, 125, 107, 108, 112, 121, 127, 127, 120, 112, 112, 114, 116, 130, 159, 187, + 195, 187, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 251, 228, 208, 186, 170, 159, 163, 159, 154, + 149, 146, 141, 136, 132, 123, 126, 128, 129, 132, 134, 129, 121, 120, 125, 126, + 124, 124, 125, 121, 114, 113, 109, 106, 109, 113, 112, 107, 101, 97, 98, 103, + 113, 124, 126, 121, 116, 102, 101, 101, 106, 123, 142, 153, 155, 146, 151, 168, + 199, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 249, 228, 213, 196, 179, 165, 156, 152, 144, 141, 136, 133, 129, 123, 119, 116, + 113, 115, 114, 111, 111, 114, 114, 111, 109, 108, 107, 106, 109, 111, 106, 99, + 93, 90, 89, 90, 95, 95, 90, 83, 83, 85, 92, 103, 114, 121, 122, 121, + 102, 96, 93, 94, 95, 103, 116, 130, 137, 130, 132, 154, 185, 213, 234, 246, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 225, 203, 195, 183, 170, 160, + 156, 156, 156, 146, 141, 135, 129, 123, 118, 111, 107, 104, 107, 106, 101, 98, + 100, 101, 100, 102, 100, 97, 95, 95, 95, 92, 88, 90, 88, 88, 88, 90, + 90, 83, 78, 71, 75, 82, 92, 105, 114, 120, 121, 112, 103, 96, 96, 93, + 92, 105, 121, 128, 117, 111, 123, 145, 177, 207, 228, 255, 244, 215, 188, 207, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 206, 207, 207, 183, 177, 166, 155, 147, 144, 143, 144, 143, 139, + 132, 125, 118, 111, 104, 101, 95, 100, 101, 96, 93, 93, 92, 89, 93, 92, + 91, 88, 84, 82, 84, 87, 89, 88, 88, 87, 87, 84, 76, 70, 68, 69, + 74, 82, 94, 106, 113, 119, 121, 109, 100, 99, 97, 95, 101, 112, 113, 106, + 101, 104, 114, 135, 165, 188, 231, 242, 238, 212, 186, 172, 164, 160, 192, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 191, 190, + 186, 165, 161, 151, 142, 134, 128, 127, 125, 124, 120, 115, 109, 105, 100, 94, + 91, 90, 95, 98, 97, 97, 97, 93, 87, 83, 82, 82, 81, 77, 74, 80, + 88, 89, 87, 88, 87, 86, 80, 73, 68, 68, 68, 70, 76, 85, 97, 108, + 115, 126, 115, 104, 98, 98, 98, 98, 101, 99, 96, 94, 90, 89, 98, 118, + 140, 183, 191, 213, 231, 208, 163, 146, 159, 143, 185, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 178, 180, 177, 172, 166, 148, 145, 136, 128, + 122, 117, 114, 114, 109, 105, 100, 96, 92, 89, 85, 82, 87, 91, 95, 98, + 103, 106, 101, 93, 87, 81, 78, 79, 78, 76, 81, 88, 91, 91, 93, 91, + 90, 84, 78, 74, 69, 68, 69, 72, 79, 92, 105, 113, 120, 115, 104, 94, + 91, 95, 98, 98, 99, 94, 89, 83, 78, 79, 93, 107, 117, 151, 175, 179, + 186, 188, 163, 127, 139, 125, 138, 208, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 175, 175, 171, 163, 156, 145, 140, 131, 122, 113, 107, 105, 102, 104, + 101, 96, 92, 89, 85, 81, 76, 79, 82, 85, 91, 99, 105, 101, 93, 97, + 86, 77, 79, 81, 79, 81, 85, 90, 92, 94, 95, 93, 87, 81, 77, 70, + 68, 68, 70, 77, 90, 103, 113, 107, 109, 99, 83, 79, 89, 97, 96, 105, + 97, 89, 82, 78, 77, 86, 96, 104, 108, 130, 162, 178, 168, 151, 141, 127, + 120, 122, 144, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 192, 189, 178, 162, 147, + 138, 133, 124, 120, 113, 106, 100, 97, 96, 95, 93, 94, 94, 93, 91, 87, + 83, 80, 77, 76, 76, 79, 83, 86, 87, 87, 84, 83, 83, 81, 79, 76, + 73, 72, 85, 85, 83, 79, 76, 78, 83, 88, 69, 60, 60, 69, 75, 78, + 91, 107, 118, 113, 103, 93, 88, 86, 88, 90, 100, 104, 98, 85, 73, 72, + 72, 71, 89, 92, 97, 108, 129, 149, 154, 148, 132, 121, 112, 112, 128, 161, + 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 230, 187, 182, 175, 161, 147, 133, 122, 118, 108, 108, 106, + 101, 98, 92, 89, 88, 89, 89, 90, 90, 89, 89, 88, 87, 83, 81, 79, + 79, 81, 83, 84, 83, 83, 83, 81, 79, 78, 76, 74, 74, 72, 78, 83, + 85, 83, 79, 76, 74, 73, 65, 64, 70, 73, 74, 83, 96, 112, 113, 109, + 99, 88, 82, 85, 89, 98, 103, 99, 88, 77, 74, 71, 69, 74, 81, 87, + 93, 106, 123, 133, 136, 135, 125, 113, 107, 114, 136, 169, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 173, + 170, 163, 151, 138, 126, 116, 107, 102, 94, 96, 97, 97, 94, 90, 85, 81, + 82, 81, 81, 81, 82, 85, 88, 90, 89, 86, 83, 81, 81, 81, 80, 79, + 82, 82, 81, 80, 78, 77, 76, 76, 71, 77, 86, 90, 89, 83, 77, 73, + 74, 70, 67, 72, 73, 70, 77, 87, 104, 112, 115, 106, 90, 81, 81, 88, + 94, 99, 99, 92, 82, 77, 70, 66, 66, 74, 82, 83, 86, 99, 114, 123, + 123, 114, 106, 99, 102, 117, 141, 164, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 228, 166, 161, 147, 137, 124, 114, 107, + 103, 98, 95, 88, 88, 91, 93, 92, 88, 85, 82, 78, 76, 74, 72, 74, + 77, 81, 84, 90, 89, 89, 89, 88, 85, 81, 78, 80, 81, 82, 83, 83, + 81, 79, 78, 79, 82, 85, 87, 88, 87, 86, 86, 73, 71, 71, 74, 73, + 72, 75, 83, 93, 104, 113, 110, 98, 85, 82, 83, 90, 95, 98, 96, 88, + 80, 70, 65, 64, 71, 76, 77, 79, 87, 98, 107, 110, 105, 99, 96, 96, + 106, 127, 148, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 224, 153, 144, 139, 123, 115, 103, 95, 92, 90, 88, 85, 83, 84, + 84, 85, 85, 85, 84, 84, 78, 76, 72, 68, 68, 69, 72, 75, 84, 86, + 89, 93, 93, 90, 83, 77, 79, 81, 84, 86, 87, 85, 83, 81, 85, 85, + 86, 88, 91, 93, 95, 95, 79, 77, 77, 78, 75, 73, 74, 78, 86, 94, + 103, 109, 105, 95, 85, 79, 87, 91, 95, 98, 93, 83, 72, 67, 62, 62, + 65, 70, 74, 77, 83, 86, 109, 105, 100, 94, 89, 94, 111, 129, 151, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 138, 126, 116, + 111, 104, 99, 91, 83, 79, 77, 75, 74, 76, 75, 75, 75, 75, 76, 77, + 78, 79, 76, 73, 70, 68, 68, 68, 69, 77, 80, 86, 92, 94, 91, 84, + 79, 79, 81, 83, 85, 86, 86, 86, 86, 84, 86, 89, 93, 97, 97, 94, + 91, 85, 85, 83, 80, 75, 72, 72, 73, 82, 86, 93, 101, 105, 102, 89, + 79, 85, 87, 91, 98, 95, 86, 75, 72, 64, 60, 60, 67, 72, 75, 76, + 77, 97, 96, 95, 91, 86, 86, 100, 115, 137, 147, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 140, 129, 116, 106, 98, 95, 92, 92, 87, 81, + 75, 70, 70, 70, 70, 70, 69, 69, 69, 69, 69, 69, 71, 71, 71, 71, + 70, 68, 67, 66, 70, 72, 77, 82, 85, 85, 81, 77, 82, 80, 78, 77, + 79, 83, 89, 92, 92, 93, 95, 98, 100, 99, 94, 89, 87, 87, 84, 80, + 75, 74, 72, 73, 85, 84, 84, 92, 99, 98, 92, 86, 84, 84, 88, 96, + 96, 88, 79, 77, 68, 62, 61, 67, 72, 74, 76, 80, 81, 85, 90, 92, + 86, 84, 94, 108, 122, 134, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 217, 128, 116, 105, 97, 92, 91, 87, 88, 88, 83, 76, 72, 71, 73, 66, + 66, 66, 68, 67, 67, 65, 64, 61, 63, 65, 67, 68, 66, 65, 63, 67, + 68, 70, 73, 77, 79, 78, 76, 85, 80, 74, 70, 73, 80, 90, 96, 104, + 100, 97, 97, 98, 98, 95, 92, 82, 84, 82, 78, 74, 75, 77, 77, 88, + 83, 82, 85, 91, 94, 94, 92, 84, 82, 85, 95, 95, 88, 81, 81, 67, + 61, 60, 64, 66, 66, 74, 83, 79, 86, 95, 96, 87, 80, 84, 95, 118, + 130, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 133, 115, 99, 92, 90, + 90, 89, 86, 85, 82, 77, 72, 68, 64, 63, 60, 60, 60, 59, 59, 59, + 58, 58, 54, 54, 54, 55, 55, 56, 56, 56, 63, 64, 65, 66, 67, 68, + 69, 69, 72, 74, 74, 71, 68, 68, 74, 80, 107, 110, 110, 104, 95, 92, + 98, 104, 87, 86, 82, 80, 78, 77, 78, 78, 81, 81, 82, 83, 85, 86, + 85, 85, 81, 75, 73, 77, 88, 94, 89, 83, 73, 70, 67, 64, 64, 65, + 69, 72, 83, 83, 88, 89, 85, 83, 88, 96, 112, 121, 130, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 223, 147, 135, 115, 102, 94, 92, 92, 90, 84, 83, 78, + 74, 70, 65, 62, 60, 57, 57, 57, 56, 56, 55, 55, 54, 54, 55, 55, + 56, 57, 57, 58, 58, 61, 61, 62, 64, 65, 67, 68, 68, 71, 74, 75, + 73, 69, 69, 73, 78, 92, 103, 113, 116, 111, 102, 95, 91, 88, 87, 83, + 80, 78, 77, 77, 77, 78, 82, 85, 85, 81, 78, 78, 80, 81, 76, 73, + 75, 83, 88, 89, 86, 77, 72, 66, 60, 59, 59, 63, 66, 78, 79, 82, + 85, 83, 81, 85, 93, 108, 117, 125, 170, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, + 143, 131, 114, 101, 96, 93, 92, 91, 79, 78, 75, 72, 67, 64, 60, 59, + 58, 58, 57, 56, 55, 54, 53, 53, 53, 54, 54, 55, 56, 57, 57, 58, + 60, 60, 62, 63, 65, 67, 68, 69, 72, 75, 77, 75, 72, 71, 73, 76, + 85, 95, 110, 119, 119, 109, 97, 88, 87, 86, 81, 78, 75, 74, 74, 74, + 74, 81, 87, 86, 79, 73, 72, 74, 77, 76, 72, 73, 76, 82, 85, 88, + 83, 77, 69, 60, 57, 55, 58, 61, 69, 70, 74, 79, 80, 78, 84, 91, + 104, 113, 121, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 222, 151, 147, 134, 124, 109, 98, 93, + 90, 89, 87, 76, 75, 73, 70, 67, 65, 63, 61, 63, 63, 62, 61, 60, + 59, 58, 58, 55, 55, 56, 57, 58, 58, 59, 59, 62, 63, 64, 66, 68, + 70, 71, 72, 73, 76, 78, 78, 76, 74, 74, 75, 87, 91, 97, 107, 110, + 108, 100, 93, 86, 84, 79, 76, 72, 70, 70, 70, 69, 74, 80, 81, 77, + 73, 70, 70, 70, 70, 71, 70, 71, 74, 79, 82, 85, 80, 73, 66, 61, + 58, 58, 58, 59, 60, 66, 73, 77, 77, 82, 88, 102, 111, 118, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 151, 142, 136, 121, 111, 100, 91, 87, 86, 83, 81, 76, 75, + 74, 72, 72, 70, 69, 68, 70, 70, 69, 68, 67, 66, 66, 65, 59, 59, + 59, 60, 60, 61, 61, 61, 61, 61, 63, 64, 66, 68, 69, 70, 74, 77, + 79, 80, 78, 77, 76, 75, 87, 86, 86, 92, 99, 102, 100, 97, 87, 85, + 80, 77, 73, 71, 71, 71, 67, 67, 69, 73, 77, 77, 73, 69, 61, 64, + 67, 69, 68, 69, 72, 74, 78, 76, 75, 71, 67, 62, 59, 57, 55, 55, + 60, 68, 75, 76, 81, 89, 104, 112, 118, 120, 166, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 140, 130, + 121, 106, 99, 89, 83, 82, 80, 77, 74, 76, 76, 76, 76, 77, 76, 78, + 77, 76, 75, 75, 75, 75, 74, 74, 74, 68, 68, 67, 67, 67, 66, 66, + 66, 61, 61, 62, 63, 64, 65, 66, 67, 73, 74, 76, 78, 78, 77, 77, + 76, 78, 78, 82, 87, 93, 96, 94, 90, 89, 87, 82, 80, 77, 75, 75, + 75, 69, 64, 61, 65, 72, 75, 71, 66, 59, 61, 63, 65, 66, 66, 68, + 69, 71, 71, 73, 72, 70, 64, 60, 57, 55, 54, 57, 66, 73, 77, 84, + 90, 104, 112, 117, 118, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 221, 148, 139, 129, 115, 108, 93, 86, 80, 76, + 75, 76, 72, 71, 75, 75, 77, 79, 81, 83, 84, 85, 79, 79, 80, 80, + 80, 80, 81, 81, 75, 74, 73, 72, 71, 70, 69, 68, 64, 64, 65, 65, + 65, 66, 66, 66, 70, 70, 71, 73, 75, 76, 76, 75, 74, 76, 79, 84, + 88, 89, 89, 87, 87, 86, 81, 79, 77, 75, 76, 76, 75, 70, 64, 63, + 65, 67, 67, 66, 60, 59, 60, 61, 63, 66, 67, 68, 71, 71, 73, 73, + 71, 67, 64, 61, 57, 54, 57, 65, 73, 79, 87, 94, 106, 112, 117, 116, + 116, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 223, 151, 143, 132, 119, 107, 98, 85, 81, 75, 74, 74, 74, 72, 68, 74, + 76, 77, 80, 83, 85, 87, 87, 79, 79, 80, 80, 81, 82, 82, 83, 80, + 80, 78, 77, 75, 73, 72, 71, 70, 70, 70, 70, 70, 70, 70, 70, 68, + 67, 67, 69, 72, 74, 74, 74, 76, 77, 77, 80, 81, 84, 86, 89, 83, + 82, 78, 76, 74, 73, 73, 74, 80, 76, 70, 63, 59, 59, 63, 65, 64, + 61, 59, 58, 61, 65, 69, 70, 76, 75, 75, 74, 73, 69, 68, 67, 60, + 56, 56, 65, 73, 81, 89, 96, 105, 111, 115, 114, 114, 116, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 164, 153, 134, 123, 116, + 109, 102, 81, 77, 72, 70, 70, 71, 70, 71, 72, 74, 75, 76, 77, 80, + 84, 87, 86, 83, 81, 81, 86, 89, 89, 89, 85, 85, 84, 83, 83, 82, + 81, 81, 80, 79, 80, 81, 80, 79, 78, 76, 77, 75, 73, 70, 69, 68, + 68, 68, 70, 71, 73, 76, 78, 81, 82, 84, 78, 78, 79, 77, 75, 73, + 70, 69, 73, 71, 69, 67, 65, 65, 66, 66, 68, 68, 68, 68, 69, 70, + 72, 73, 78, 80, 83, 83, 81, 78, 76, 76, 69, 67, 65, 63, 68, 78, + 93, 105, 109, 112, 116, 117, 116, 112, 158, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 232, 172, 164, 148, 126, 113, 105, 97, 88, 78, 75, 71, + 70, 70, 70, 70, 70, 70, 71, 73, 74, 74, 76, 79, 83, 83, 81, 81, + 84, 88, 90, 90, 90, 87, 87, 87, 86, 86, 85, 85, 84, 82, 83, 84, + 85, 85, 82, 81, 80, 78, 77, 74, 71, 69, 68, 68, 68, 72, 73, 75, + 77, 80, 82, 84, 85, 83, 84, 82, 82, 79, 75, 73, 71, 74, 73, 72, + 70, 69, 69, 69, 69, 70, 69, 70, 71, 71, 74, 75, 75, 83, 86, 88, + 89, 87, 85, 84, 84, 79, 74, 68, 67, 73, 84, 95, 102, 110, 112, 114, + 116, 114, 111, 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 186, + 166, 152, 129, 107, 93, 86, 76, 67, 69, 67, 66, 66, 68, 67, 67, 64, + 65, 66, 69, 69, 70, 71, 73, 75, 79, 80, 83, 86, 90, 93, 92, 92, + 92, 92, 92, 91, 91, 91, 91, 91, 89, 90, 91, 89, 89, 88, 87, 86, + 84, 83, 81, 78, 76, 75, 74, 73, 77, 78, 80, 82, 84, 87, 88, 89, + 92, 92, 90, 89, 86, 84, 80, 78, 76, 76, 76, 75, 75, 74, 74, 74, + 76, 76, 78, 78, 79, 80, 83, 84, 91, 93, 96, 97, 96, 94, 94, 95, + 92, 82, 73, 72, 79, 92, 99, 105, 113, 114, 114, 114, 112, 112, 114, 162, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 184, 183, 178, 147, 131, 109, 92, 82, + 73, 63, 54, 60, 60, 60, 62, 62, 62, 60, 58, 60, 62, 64, 66, 66, + 67, 69, 71, 79, 82, 86, 93, 97, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 100, 100, 97, 98, 98, 98, 98, 97, 97, 97, 97, 96, 95, 93, 92, + 91, 91, 90, 92, 93, 94, 96, 99, 101, 102, 103, 106, 106, 106, 103, 100, + 97, 93, 91, 85, 86, 86, 86, 86, 86, 86, 86, 90, 90, 91, 91, 93, + 94, 96, 97, 105, 108, 110, 111, 111, 110, 111, 112, 106, 99, 88, 83, 84, + 93, 104, 110, 117, 117, 116, 114, 111, 111, 114, 117, 161, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 172, 174, 168, 161, 132, 118, 101, 90, 83, 73, 61, 53, 57, 57, + 59, 60, 61, 62, 58, 56, 59, 61, 65, 65, 66, 68, 72, 74, 85, 89, + 97, 104, 109, 111, 112, 112, 113, 113, 113, 114, 114, 115, 115, 116, 112, 112, + 112, 114, 114, 114, 115, 115, 115, 115, 116, 116, 116, 116, 115, 115, 117, 118, + 119, 121, 123, 125, 126, 127, 128, 128, 126, 124, 121, 118, 113, 111, 104, 104, + 105, 105, 106, 107, 107, 108, 110, 110, 109, 110, 112, 112, 114, 114, 124, 127, + 129, 130, 129, 129, 131, 133, 128, 124, 115, 104, 95, 95, 104, 113, 121, 121, + 121, 117, 113, 113, 113, 115, 114, 161, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 163, 158, 149, + 140, 121, 109, 99, 91, 84, 73, 61, 54, 62, 60, 61, 62, 65, 64, 62, + 60, 60, 61, 65, 67, 69, 73, 79, 83, 98, 104, 112, 120, 124, 129, 130, + 133, 130, 131, 132, 133, 134, 135, 135, 136, 135, 135, 135, 136, 138, 140, 143, + 144, 144, 144, 145, 146, 146, 146, 145, 145, 146, 147, 148, 149, 151, 153, 154, + 155, 152, 152, 152, 150, 148, 145, 142, 138, 132, 131, 131, 131, 132, 135, 137, + 139, 136, 136, 135, 136, 135, 136, 136, 136, 149, 151, 152, 153, 152, 153, 154, + 156, 159, 159, 151, 134, 115, 103, 103, 107, 121, 122, 124, 122, 118, 116, 115, + 115, 114, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 169, 161, 152, 144, 131, 120, 113, 104, 97, 92, + 87, 73, 66, 63, 65, 64, 64, 65, 65, 66, 64, 62, 63, 65, 67, 68, + 73, 80, 89, 94, 113, 120, 129, 135, 141, 146, 151, 154, 152, 153, 154, 155, + 157, 158, 159, 159, 161, 161, 162, 163, 167, 170, 173, 176, 179, 180, 180, 180, + 180, 178, 176, 175, 172, 173, 174, 175, 177, 179, 180, 180, 177, 178, 177, 177, + 174, 170, 168, 166, 163, 161, 160, 159, 161, 165, 169, 172, 168, 169, 167, 166, + 164, 165, 165, 164, 173, 174, 175, 175, 174, 174, 176, 178, 180, 182, 180, 166, + 144, 123, 112, 105, 117, 121, 126, 127, 125, 122, 118, 117, 115, 115, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 227, 167, 156, 147, 135, 121, 110, 111, 105, 99, 97, 92, 82, 77, 81, 67, + 65, 63, 64, 64, 65, 63, 62, 65, 67, 69, 71, 76, 85, 96, 102, 123, + 130, 138, 146, 151, 157, 163, 167, 166, 166, 168, 169, 171, 172, 173, 174, 180, + 179, 181, 182, 187, 190, 193, 197, 205, 206, 205, 204, 202, 200, 197, 195, 186, + 186, 187, 189, 190, 192, 193, 193, 193, 193, 193, 191, 190, 188, 185, 184, 183, + 181, 178, 177, 180, 184, 190, 194, 192, 192, 190, 189, 187, 187, 186, 186, 188, + 189, 189, 189, 187, 188, 190, 192, 191, 194, 193, 187, 169, 144, 120, 107, 114, + 118, 126, 130, 130, 126, 123, 121, 116, 116, 156, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 177, 169, 155, 138, 125, + 121, 119, 93, 95, 97, 97, 91, 83, 75, 70, 64, 66, 68, 68, 68, 67, + 69, 70, 70, 74, 77, 83, 92, 105, 121, 132, 148, 155, 168, 179, 187, 192, + 194, 196, 202, 201, 198, 197, 197, 199, 202, 203, 207, 208, 210, 214, 218, 223, + 227, 229, 239, 239, 237, 236, 234, 232, 231, 230, 225, 225, 225, 225, 225, 225, + 224, 224, 219, 220, 222, 222, 222, 220, 219, 217, 211, 210, 208, 208, 210, 214, + 218, 221, 227, 226, 226, 227, 226, 224, 223, 221, 215, 214, 212, 211, 213, 215, + 218, 219, 223, 217, 211, 207, 205, 192, 159, 128, 112, 117, 121, 127, 131, 132, + 133, 132, 122, 116, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 178, 175, 165, 153, 138, 125, 116, 113, 90, 90, 90, + 88, 84, 79, 74, 71, 65, 67, 67, 67, 66, 67, 71, 73, 77, 83, 87, + 96, 105, 121, 138, 149, 166, 173, 186, 195, 202, 207, 211, 213, 216, 213, 211, + 209, 209, 212, 215, 217, 218, 220, 221, 224, 229, 232, 236, 237, 245, 245, 245, + 246, 244, 243, 242, 241, 236, 236, 236, 236, 236, 236, 236, 236, 230, 232, 233, + 235, 234, 233, 230, 229, 226, 225, 224, 224, 225, 229, 233, 235, 239, 238, 239, + 238, 237, 237, 235, 234, 228, 227, 224, 223, 223, 223, 226, 227, 230, 224, 219, + 216, 216, 207, 181, 158, 115, 113, 115, 124, 137, 139, 133, 123, 122, 114, 106, + 149, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, + 179, 170, 158, 147, 136, 125, 113, 106, 86, 86, 84, 80, 77, 73, 71, 69, + 65, 66, 66, 66, 67, 69, 74, 77, 91, 96, 105, 113, 126, 142, 160, 174, + 190, 198, 210, 218, 224, 227, 229, 230, 231, 229, 225, 221, 222, 227, 231, 233, + 235, 235, 237, 238, 242, 244, 247, 248, 253, 252, 254, 253, 254, 254, 254, 253, + 249, 249, 249, 249, 249, 249, 249, 249, 244, 245, 246, 247, 246, 245, 243, 242, + 243, 242, 241, 241, 242, 245, 248, 250, 249, 249, 251, 250, 249, 249, 248, 247, + 245, 243, 240, 238, 235, 236, 236, 237, 239, 237, 231, 229, 227, 220, 204, 191, + 137, 121, 110, 116, 134, 144, 138, 126, 124, 116, 107, 99, 145, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 187, 180, 167, 149, 137, 130, + 122, 112, 102, 87, 85, 81, 78, 73, 70, 67, 66, 60, 63, 63, 64, 68, + 73, 79, 84, 104, 110, 119, 131, 144, 162, 182, 194, 210, 216, 226, 234, 239, + 241, 243, 244, 242, 238, 233, 231, 231, 235, 241, 246, 248, 248, 248, 249, 251, + 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 253, 253, 253, + 254, 254, 254, 252, 253, 253, 254, 253, 252, 251, 250, 251, 251, 250, 250, 251, + 253, 255, 255, 254, 254, 255, 255, 255, 253, 252, 251, 254, 253, 251, 249, 246, + 247, 246, 247, 249, 247, 244, 239, 235, 227, 217, 207, 175, 147, 117, 106, 120, + 139, 143, 144, 132, 121, 112, 103, 95, 217, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 183, 182, 179, 160, 140, 126, 122, 119, 109, 101, 89, 88, + 85, 81, 74, 68, 62, 59, 56, 57, 61, 66, 71, 80, 88, 94, 113, 119, + 130, 142, 156, 174, 192, 204, 221, 227, 237, 244, 248, 249, 249, 250, 246, 243, + 240, 236, 237, 243, 247, 250, 254, 254, 254, 252, 253, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 254, 252, 253, 253, 253, 254, 254, 255, 255, 255, 255, + 255, 255, 255, 254, 254, 253, 254, 254, 253, 253, 253, 255, 255, 255, 253, 255, + 255, 255, 255, 254, 253, 254, 255, 255, 254, 254, 252, 253, 253, 253, 253, 253, + 251, 250, 244, 233, 222, 218, 203, 174, 137, 112, 111, 123, 139, 150, 142, 131, + 117, 108, 98, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 176, + 177, 171, 153, 131, 117, 114, 111, 105, 96, 91, 88, 85, 79, 73, 67, 60, + 56, 53, 57, 62, 69, 75, 85, 94, 100, 114, 120, 133, 145, 161, 178, 196, + 210, 227, 233, 243, 249, 252, 253, 255, 255, 249, 246, 244, 242, 243, 247, 251, + 254, 253, 253, 253, 253, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 255, 255, 254, + 254, 254, 254, 254, 254, 255, 255, 255, 255, 253, 252, 253, 255, 250, 240, 231, + 228, 212, 195, 166, 134, 113, 112, 125, 139, 145, 136, 126, 117, 104, 92, 142, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, 171, 173, 158, 142, 124, 112, + 109, 106, 97, 89, 88, 86, 80, 73, 67, 62, 59, 58, 55, 59, 65, 72, + 80, 86, 95, 100, 110, 117, 131, 145, 160, 179, 200, 211, 228, 233, 242, 249, + 252, 254, 254, 254, 248, 245, 245, 244, 246, 248, 251, 255, 254, 252, 253, 253, + 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 252, 253, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, + 254, 255, 254, 254, 255, 251, 251, 255, 251, 243, 235, 235, 217, 212, 192, 158, + 126, 109, 115, 128, 141, 137, 133, 127, 114, 97, 89, 255, 255, 255, 255, 255, + 255, 255, 255, 233, 164, 169, 172, 148, 135, 120, 111, 107, 102, 91, 83, 87, + 82, 75, 66, 62, 59, 59, 60, 57, 61, 68, 76, 82, 89, 95, 98, 105, + 114, 128, 144, 160, 180, 200, 213, 225, 232, 239, 246, 250, 251, 251, 251, 245, + 244, 244, 242, 243, 248, 250, 252, 254, 252, 253, 253, 253, 254, 255, 254, 251, + 252, 252, 254, 254, 255, 255, 255, 251, 252, 252, 253, 254, 255, 255, 255, 255, + 255, 254, 254, 252, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 253, + 253, 253, 255, 255, 254, 255, 254, 254, 254, 255, 255, 255, 255, 254, 253, 255, + 252, 249, 252, 249, 241, 235, 234, 224, 223, 207, 173, 133, 112, 114, 125, 135, + 136, 139, 135, 120, 101, 92, 255, 255, 255, 255, 255, 255, 255, 255, 184, 175, + 176, 168, 137, 129, 117, 108, 100, 93, 88, 82, 75, 72, 68, 65, 60, 59, + 58, 58, 67, 70, 74, 77, 82, 90, 99, 106, 119, 128, 143, 157, 171, 187, + 202, 213, 229, 235, 242, 248, 250, 251, 253, 254, 245, 243, 240, 239, 240, 245, + 250, 252, 250, 253, 255, 255, 255, 255, 255, 255, 255, 254, 253, 251, 251, 252, + 252, 253, 250, 252, 254, 254, 254, 251, 249, 246, 255, 255, 255, 254, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 255, 254, 255, 255, + 255, 255, 253, 253, 253, 253, 253, 254, 254, 255, 255, 254, 252, 251, 249, 246, + 245, 244, 235, 224, 218, 209, 175, 132, 115, 121, 119, 122, 130, 136, 123, 102, + 93, 150, 255, 255, 255, 255, 255, 255, 255, 174, 179, 172, 158, 130, 122, 112, + 103, 95, 91, 84, 81, 74, 72, 68, 64, 62, 61, 60, 61, 72, 73, 76, + 79, 84, 91, 101, 107, 122, 131, 145, 160, 172, 187, 200, 209, 224, 229, 238, + 245, 249, 252, 254, 255, 248, 246, 243, 242, 243, 247, 252, 254, 250, 253, 255, + 255, 254, 254, 255, 255, 255, 255, 254, 254, 252, 253, 253, 253, 251, 253, 254, + 255, 255, 252, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 253, 253, 255, 254, 255, 255, 255, 255, 255, 255, 254, + 254, 252, 253, 252, 252, 255, 254, 251, 250, 248, 245, 244, 244, 233, 226, 222, + 213, 186, 148, 124, 119, 115, 119, 124, 129, 125, 111, 101, 97, 255, 255, 255, + 255, 255, 255, 230, 181, 178, 160, 140, 123, 117, 109, 101, 94, 89, 83, 79, + 71, 69, 68, 64, 64, 64, 65, 64, 75, 77, 78, 81, 86, 95, 106, 112, + 126, 135, 149, 160, 172, 184, 196, 203, 218, 224, 234, 242, 246, 250, 253, 255, + 249, 247, 244, 242, 243, 248, 252, 254, 251, 253, 255, 255, 254, 253, 253, 254, + 253, 254, 254, 255, 255, 255, 255, 254, 251, 253, 255, 255, 255, 255, 254, 253, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 253, 255, 254, 255, 255, 255, 255, 255, 255, 255, 254, 252, 252, 251, 251, + 255, 254, 251, 250, 248, 244, 243, 243, 231, 231, 227, 219, 198, 170, 139, 116, + 113, 118, 123, 124, 125, 119, 107, 96, 255, 255, 255, 255, 255, 255, 177, 175, + 166, 144, 123, 120, 116, 108, 100, 92, 85, 78, 75, 66, 64, 63, 63, 64, + 65, 67, 67, 76, 76, 78, 83, 88, 98, 110, 117, 132, 140, 152, 162, 171, + 181, 190, 198, 216, 223, 232, 241, 246, 249, 251, 252, 247, 245, 242, 240, 241, + 245, 249, 251, 252, 254, 255, 255, 254, 253, 253, 254, 252, 254, 255, 255, 255, + 255, 255, 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 255, 253, 253, 255, 254, 255, + 255, 255, 255, 255, 255, 254, 254, 252, 253, 251, 252, 254, 254, 251, 249, 247, + 243, 242, 242, 231, 235, 230, 218, 207, 190, 155, 123, 113, 122, 125, 121, 119, + 120, 109, 96, 255, 255, 255, 255, 255, 255, 165, 161, 154, 134, 113, 115, 111, + 106, 97, 86, 76, 70, 66, 59, 60, 61, 62, 63, 65, 66, 69, 72, 75, + 79, 84, 92, 103, 114, 123, 133, 141, 152, 160, 168, 177, 186, 192, 216, 223, + 233, 241, 246, 248, 248, 248, 247, 245, 241, 239, 240, 244, 248, 250, 253, 255, + 255, 255, 254, 253, 253, 254, 252, 253, 255, 255, 255, 255, 255, 255, 252, 253, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 254, 254, 255, 255, 255, 253, 253, 255, 254, 255, 255, 255, 255, 254, 254, + 253, 253, 253, 254, 253, 254, 254, 253, 250, 248, 246, 242, 241, 240, 234, 237, + 230, 215, 209, 201, 171, 136, 113, 123, 126, 121, 115, 115, 111, 101, 255, 255, + 255, 255, 255, 255, 151, 148, 145, 129, 110, 105, 104, 99, 91, 79, 67, 61, + 56, 55, 58, 59, 61, 63, 67, 68, 69, 72, 75, 81, 87, 96, 105, 116, + 123, 134, 139, 149, 155, 162, 171, 181, 190, 214, 222, 232, 241, 245, 247, 247, + 247, 248, 246, 242, 240, 241, 244, 248, 250, 251, 253, 255, 255, 254, 253, 253, + 254, 253, 254, 255, 255, 255, 254, 254, 254, 252, 253, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 254, 255, 255, 255, 254, 254, 254, 253, 254, 255, 255, + 255, 253, 253, 255, 254, 255, 255, 255, 255, 253, 253, 253, 253, 253, 254, 254, + 255, 254, 253, 250, 248, 245, 241, 240, 239, 235, 238, 229, 213, 208, 206, 182, + 153, 114, 121, 122, 117, 112, 113, 112, 110, 152, 255, 255, 255, 255, 255, 141, + 143, 142, 128, 109, 97, 96, 94, 86, 74, 63, 56, 53, 55, 56, 60, 63, + 64, 67, 69, 69, 75, 80, 86, 92, 100, 108, 117, 123, 132, 136, 145, 151, + 157, 168, 179, 187, 209, 216, 228, 238, 244, 247, 247, 247, 247, 245, 241, 238, + 239, 243, 247, 248, 247, 250, 252, 252, 251, 251, 252, 253, 255, 254, 253, 253, + 253, 253, 253, 253, 251, 251, 252, 252, 253, 253, 254, 254, 254, 254, 253, 253, + 253, 253, 254, 254, 254, 253, 253, 253, 254, 254, 255, 255, 253, 253, 255, 254, + 255, 255, 255, 255, 255, 254, 254, 254, 252, 253, 253, 253, 254, 253, 249, 247, + 244, 240, 239, 238, 235, 237, 230, 217, 211, 206, 190, 168, 126, 120, 114, 115, + 114, 111, 110, 112, 104, 255, 255, 255, 255, 135, 135, 140, 140, 126, 106, 92, + 94, 93, 86, 74, 64, 57, 55, 55, 57, 61, 63, 68, 68, 70, 71, 81, + 83, 90, 96, 103, 109, 116, 121, 130, 134, 142, 147, 154, 164, 177, 187, 203, + 212, 224, 235, 243, 245, 247, 248, 244, 242, 238, 235, 236, 239, 243, 245, 244, + 246, 249, 250, 249, 249, 250, 252, 255, 254, 254, 252, 251, 252, 252, 253, 252, + 250, 251, 250, 251, 251, 252, 253, 254, 253, 252, 252, 252, 252, 253, 254, 253, + 253, 253, 253, 253, 254, 255, 255, 253, 253, 255, 254, 255, 255, 255, 255, 255, + 255, 255, 254, 252, 252, 251, 251, 253, 253, 249, 247, 244, 240, 238, 237, 235, + 238, 232, 220, 214, 206, 193, 179, 138, 122, 112, 114, 116, 109, 105, 107, 103, + 148, 255, 255, 255, 123, 136, 142, 137, 121, 106, 85, 86, 85, 79, 72, 64, + 58, 56, 63, 64, 66, 68, 68, 71, 74, 77, 80, 91, 102, 109, 110, 110, + 115, 119, 134, 136, 140, 145, 153, 166, 177, 187, 199, 210, 221, 231, 239, 241, + 244, 244, 244, 242, 239, 238, 237, 236, 238, 238, 239, 242, 248, 248, 247, 245, + 247, 249, 252, 253, 254, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, + 254, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 255, + 255, 255, 254, 252, 250, 252, 254, 255, 255, 255, 255, 255, 255, 254, 253, 252, + 252, 252, 249, 249, 246, 245, 241, 240, 238, 237, 236, 236, 233, 226, 217, 206, + 195, 191, 158, 137, 114, 106, 102, 100, 99, 101, 103, 95, 255, 255, 255, 121, + 133, 140, 132, 115, 99, 84, 85, 84, 79, 72, 65, 60, 60, 64, 65, 66, + 67, 68, 71, 74, 77, 87, 97, 107, 112, 112, 112, 115, 121, 133, 136, 139, + 145, 152, 164, 178, 185, 197, 206, 219, 229, 237, 240, 241, 244, 241, 240, 239, + 240, 239, 238, 240, 239, 238, 241, 246, 246, 245, 244, 246, 247, 248, 249, 250, + 252, 253, 254, 253, 253, 254, 252, 253, 252, 253, 253, 253, 252, 253, 253, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 251, 251, + 251, 253, 254, 255, 254, 255, 255, 254, 252, 251, 250, 250, 250, 248, 248, 245, + 243, 240, 239, 239, 239, 236, 236, 232, 226, 217, 206, 197, 191, 161, 140, 116, + 105, 100, 98, 97, 99, 101, 95, 255, 255, 255, 119, 130, 135, 126, 106, 90, + 82, 83, 80, 77, 71, 67, 65, 64, 65, 66, 67, 66, 67, 71, 77, 82, + 96, 103, 109, 113, 112, 111, 114, 117, 130, 133, 138, 143, 151, 164, 175, 184, + 193, 203, 216, 227, 235, 238, 240, 242, 239, 240, 240, 242, 242, 241, 241, 240, + 236, 238, 242, 243, 243, 242, 243, 244, 245, 247, 248, 251, 252, 254, 253, 253, + 253, 251, 252, 252, 253, 252, 253, 251, 252, 252, 252, 252, 252, 253, 254, 254, + 255, 255, 255, 254, 255, 255, 255, 255, 252, 252, 250, 251, 252, 254, 254, 254, + 255, 255, 253, 251, 250, 249, 249, 249, 246, 245, 243, 239, 238, 238, 240, 240, + 234, 233, 231, 225, 216, 207, 197, 193, 169, 146, 121, 105, 98, 96, 95, 94, + 100, 96, 255, 255, 255, 119, 129, 131, 119, 99, 83, 78, 78, 78, 74, 69, + 67, 68, 68, 65, 65, 66, 66, 70, 76, 84, 89, 100, 104, 109, 109, 107, + 105, 108, 111, 128, 130, 135, 142, 152, 162, 174, 182, 191, 199, 211, 223, 230, + 236, 238, 241, 239, 241, 242, 245, 245, 242, 241, 238, 235, 236, 239, 240, 240, + 240, 242, 242, 246, 247, 249, 252, 253, 255, 255, 255, 253, 252, 252, 253, 254, + 254, 254, 253, 254, 253, 252, 251, 251, 253, 255, 255, 254, 254, 253, 253, 253, + 254, 254, 255, 254, 252, 250, 250, 253, 253, 253, 252, 255, 255, 253, 251, 250, + 249, 248, 248, 245, 243, 238, 236, 235, 236, 239, 241, 232, 232, 230, 224, 215, + 207, 199, 194, 176, 155, 126, 107, 98, 95, 93, 91, 99, 98, 255, 255, 255, + 119, 129, 128, 114, 94, 79, 75, 76, 76, 74, 70, 69, 69, 71, 65, 66, + 68, 70, 75, 82, 91, 98, 104, 105, 107, 105, 101, 102, 104, 107, 123, 127, + 134, 142, 152, 164, 174, 183, 189, 197, 208, 219, 228, 233, 237, 239, 241, 243, + 245, 247, 246, 243, 240, 238, 236, 235, 237, 238, 239, 240, 241, 241, 245, 247, + 248, 251, 253, 255, 254, 255, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, + 253, 253, 253, 255, 255, 255, 253, 253, 252, 251, 251, 251, 252, 252, 255, 253, + 250, 252, 252, 253, 253, 252, 254, 253, 251, 249, 247, 246, 245, 245, 241, 239, + 237, 234, 233, 235, 236, 239, 230, 229, 227, 222, 216, 208, 201, 197, 183, 161, + 131, 108, 98, 95, 91, 89, 99, 100, 255, 255, 255, 120, 127, 125, 112, 93, + 80, 73, 75, 76, 75, 73, 72, 72, 74, 66, 69, 71, 77, 82, 90, 98, + 103, 107, 107, 105, 103, 100, 101, 104, 106, 120, 124, 133, 142, 153, 165, 177, + 185, 189, 196, 207, 218, 225, 231, 234, 237, 242, 243, 245, 248, 247, 244, 243, + 240, 238, 236, 237, 237, 240, 241, 242, 242, 244, 246, 247, 249, 251, 252, 251, + 252, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 253, 252, 251, 251, 251, 251, 252, 255, 253, 253, 252, 253, 254, 253, + 252, 251, 250, 248, 246, 244, 242, 242, 241, 239, 237, 235, 233, 233, 233, 235, + 236, 229, 228, 225, 221, 215, 207, 202, 199, 186, 167, 138, 112, 101, 98, 93, + 86, 96, 101, 255, 255, 255, 120, 127, 122, 110, 92, 80, 76, 78, 80, 80, + 80, 78, 77, 78, 72, 74, 78, 83, 87, 94, 101, 106, 109, 108, 105, 100, + 99, 101, 105, 107, 118, 123, 130, 143, 154, 167, 180, 187, 189, 197, 207, 216, + 224, 228, 233, 236, 240, 241, 243, 247, 248, 247, 247, 246, 240, 237, 237, 237, + 241, 243, 244, 243, 246, 247, 248, 250, 251, 252, 251, 251, 254, 252, 254, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, + 252, 252, 253, 253, 255, 255, 254, 254, 254, 255, 255, 254, 253, 251, 249, 247, + 245, 243, 242, 242, 237, 236, 235, 233, 231, 232, 231, 232, 229, 227, 224, 220, + 215, 209, 203, 199, 187, 170, 141, 116, 104, 102, 96, 87, 92, 99, 255, 255, + 255, 119, 125, 121, 109, 91, 81, 77, 80, 84, 84, 84, 81, 80, 80, 76, + 78, 82, 87, 92, 96, 102, 105, 107, 105, 102, 97, 97, 100, 103, 107, 116, + 122, 130, 143, 155, 169, 181, 189, 190, 197, 207, 216, 222, 228, 233, 235, 237, + 239, 241, 246, 248, 249, 251, 251, 242, 239, 238, 238, 242, 245, 245, 244, 250, + 251, 252, 253, 254, 255, 253, 253, 252, 251, 252, 253, 255, 255, 255, 255, 253, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 255, + 255, 255, 254, 255, 255, 255, 254, 255, 255, 253, 250, 248, 247, 246, 245, 236, + 236, 235, 234, 232, 231, 230, 230, 227, 227, 224, 220, 214, 209, 204, 202, 188, + 171, 144, 117, 106, 105, 98, 88, 89, 97, 255, 255, 255, 117, 124, 121, 105, + 92, 87, 82, 85, 88, 87, 90, 93, 90, 84, 82, 90, 94, 93, 95, 101, + 103, 100, 108, 103, 96, 90, 91, 97, 104, 109, 119, 125, 136, 150, 162, 176, + 187, 195, 202, 205, 210, 216, 222, 228, 233, 236, 235, 238, 243, 248, 251, 253, + 252, 252, 249, 247, 245, 243, 242, 243, 245, 246, 247, 247, 248, 251, 252, 254, + 254, 255, 255, 255, 255, 255, 255, 255, 253, 254, 252, 252, 252, 253, 253, 254, + 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 253, 252, 242, 239, 239, 238, 239, 238, + 236, 232, 230, 227, 225, 220, 215, 210, 205, 202, 191, 177, 148, 122, 109, 103, + 99, 93, 85, 87, 255, 255, 255, 122, 124, 118, 101, 90, 87, 85, 89, 92, + 89, 89, 92, 91, 87, 90, 96, 98, 95, 95, 99, 99, 95, 105, 100, 95, + 90, 90, 96, 103, 107, 121, 129, 140, 152, 165, 176, 187, 193, 202, 205, 210, + 214, 222, 228, 232, 234, 236, 238, 242, 246, 250, 251, 252, 252, 249, 248, 245, + 244, 243, 243, 245, 246, 247, 248, 250, 251, 252, 254, 255, 255, 255, 254, 254, + 254, 254, 253, 253, 252, 252, 252, 252, 253, 253, 253, 254, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 253, 252, 244, 241, 239, 238, 239, 238, 236, 233, 231, 228, 225, + 219, 214, 209, 206, 204, 192, 179, 151, 122, 105, 98, 95, 90, 85, 87, 255, + 255, 255, 127, 123, 112, 97, 89, 89, 89, 94, 96, 91, 88, 90, 92, 91, + 97, 99, 100, 97, 96, 98, 97, 93, 100, 98, 92, 90, 90, 95, 101, 106, + 124, 131, 142, 154, 166, 176, 187, 192, 202, 205, 208, 214, 220, 226, 229, 233, + 235, 237, 241, 245, 247, 251, 251, 252, 250, 249, 247, 245, 244, 244, 245, 246, + 248, 248, 250, 251, 253, 255, 255, 255, 253, 253, 254, 253, 253, 252, 252, 253, + 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 252, 253, 253, 255, 255, 255, 254, 254, 255, 255, 255, 255, 254, 255, 253, 253, + 247, 243, 240, 237, 238, 238, 237, 234, 232, 228, 224, 218, 213, 209, 207, 206, + 192, 182, 154, 123, 102, 92, 90, 89, 86, 86, 255, 255, 255, 130, 121, 107, + 94, 91, 92, 91, 96, 99, 91, 86, 88, 92, 94, 98, 98, 98, 97, 98, + 99, 98, 95, 95, 94, 90, 89, 91, 96, 100, 105, 125, 131, 144, 155, 168, + 178, 187, 192, 203, 204, 207, 213, 218, 222, 227, 228, 233, 234, 239, 242, 246, + 247, 250, 250, 251, 250, 248, 247, 246, 246, 246, 246, 250, 251, 251, 253, 255, + 255, 255, 255, 253, 253, 252, 253, 254, 254, 253, 254, 253, 253, 254, 254, 254, + 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 251, 252, 253, 255, 254, + 255, 254, 253, 253, 253, 255, 255, 255, 254, 254, 253, 251, 245, 241, 238, 238, + 238, 238, 235, 233, 228, 224, 217, 212, 210, 208, 208, 192, 183, 157, 125, 100, + 89, 90, 92, 87, 86, 255, 255, 255, 129, 118, 104, 95, 93, 94, 91, 96, + 98, 91, 86, 89, 94, 96, 101, 98, 95, 96, 98, 97, 95, 94, 90, 89, + 87, 86, 90, 96, 102, 107, 124, 131, 144, 156, 169, 179, 188, 193, 201, 203, + 205, 210, 213, 218, 221, 223, 230, 233, 235, 239, 242, 245, 246, 247, 250, 250, + 249, 248, 248, 248, 248, 248, 251, 251, 252, 254, 254, 255, 255, 255, 253, 253, + 254, 254, 255, 255, 255, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 254, 254, 254, 255, 251, 252, 253, 255, 254, 255, 254, 253, 252, 254, + 254, 255, 255, 255, 254, 253, 253, 247, 243, 239, 239, 238, 238, 235, 233, 228, + 224, 218, 213, 210, 209, 209, 191, 184, 158, 126, 101, 91, 93, 96, 90, 87, + 255, 255, 255, 126, 114, 103, 96, 94, 91, 90, 94, 96, 91, 89, 93, 97, + 98, 104, 97, 93, 95, 96, 93, 90, 90, 87, 86, 85, 84, 89, 97, 105, + 111, 127, 134, 147, 159, 170, 181, 189, 195, 200, 201, 203, 207, 211, 213, 217, + 218, 228, 229, 231, 234, 239, 241, 244, 245, 249, 249, 249, 250, 250, 250, 251, + 251, 253, 253, 252, 253, 254, 253, 254, 253, 253, 253, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 254, + 254, 252, 253, 253, 255, 255, 255, 254, 254, 253, 253, 253, 254, 255, 255, 255, + 254, 254, 249, 245, 242, 241, 239, 238, 234, 231, 228, 224, 219, 214, 211, 210, + 209, 192, 183, 157, 125, 101, 92, 95, 98, 93, 89, 255, 255, 255, 123, 111, + 103, 98, 92, 85, 89, 92, 94, 92, 94, 100, 103, 101, 101, 93, 88, 92, + 94, 92, 89, 90, 86, 83, 82, 83, 89, 98, 108, 115, 134, 142, 153, 164, + 174, 181, 188, 193, 198, 199, 201, 205, 207, 210, 212, 213, 225, 227, 228, 231, + 234, 238, 241, 242, 247, 248, 249, 251, 252, 253, 253, 253, 253, 253, 253, 252, + 252, 250, 250, 251, 251, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 254, 253, 253, 254, 254, 253, 254, 254, 255, + 255, 255, 255, 255, 252, 253, 254, 255, 254, 255, 255, 254, 255, 250, 247, 244, + 243, 240, 237, 233, 230, 227, 225, 221, 216, 213, 210, 208, 193, 183, 155, 123, + 100, 92, 94, 96, 97, 90, 255, 255, 255, 121, 110, 103, 98, 90, 80, 89, + 92, 94, 93, 98, 105, 106, 103, 95, 86, 83, 89, 94, 93, 92, 93, 85, + 83, 81, 81, 88, 100, 112, 119, 140, 148, 158, 169, 176, 182, 189, 191, 197, + 198, 199, 203, 206, 208, 210, 211, 224, 225, 227, 229, 232, 237, 239, 241, 246, + 247, 249, 251, 253, 254, 255, 255, 254, 254, 252, 252, 250, 250, 247, 248, 250, + 251, 251, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 253, 253, 253, 253, 254, 253, 255, 255, 255, 255, 255, 255, 255, 252, + 252, 254, 254, 255, 255, 255, 255, 254, 250, 248, 246, 244, 241, 237, 232, 229, + 227, 226, 222, 217, 213, 209, 207, 195, 183, 153, 121, 99, 91, 92, 92, 99, + 91, 255, 255, 255, 116, 109, 100, 91, 86, 86, 84, 90, 94, 96, 98, 101, + 100, 96, 79, 81, 83, 87, 88, 88, 87, 86, 82, 81, 81, 85, 94, 107, + 119, 127, 151, 157, 165, 171, 175, 179, 183, 185, 190, 192, 197, 199, 200, 202, + 204, 206, 220, 212, 211, 220, 226, 228, 228, 233, 242, 239, 236, 238, 240, 240, + 237, 235, 243, 244, 247, 250, 254, 255, 255, 255, 247, 248, 251, 254, 254, 254, + 252, 251, 253, 252, 253, 254, 254, 255, 255, 254, 251, 252, 253, 253, 250, 251, + 254, 255, 255, 254, 252, 253, 254, 254, 253, 251, 254, 254, 253, 253, 254, 253, + 254, 253, 253, 254, 251, 250, 246, 241, 236, 233, 228, 228, 224, 223, 219, 214, + 211, 210, 195, 175, 152, 124, 94, 87, 94, 96, 91, 144, 255, 255, 255, 117, + 110, 100, 90, 85, 83, 84, 89, 94, 96, 97, 100, 98, 94, 79, 80, 83, + 86, 87, 87, 85, 84, 82, 81, 82, 88, 98, 111, 125, 133, 153, 157, 165, + 170, 174, 178, 182, 183, 188, 191, 194, 197, 198, 200, 202, 205, 210, 208, 212, + 219, 224, 224, 227, 236, 234, 232, 228, 225, 223, 221, 219, 215, 224, 230, 241, + 250, 255, 255, 255, 253, 251, 252, 255, 255, 255, 255, 253, 252, 251, 250, 251, + 253, 255, 255, 255, 255, 252, 254, 254, 253, 251, 251, 255, 255, 255, 254, 253, + 253, 254, 254, 253, 251, 253, 253, 254, 253, 252, 251, 251, 251, 253, 254, 254, + 251, 249, 244, 240, 236, 235, 233, 231, 227, 222, 218, 213, 211, 194, 176, 153, + 124, 94, 84, 92, 93, 91, 255, 255, 255, 255, 116, 111, 99, 89, 83, 80, + 84, 89, 92, 92, 95, 96, 95, 90, 80, 80, 81, 82, 84, 83, 83, 83, + 83, 83, 86, 93, 105, 120, 133, 142, 154, 159, 165, 169, 173, 176, 179, 182, + 185, 188, 190, 193, 195, 197, 200, 202, 203, 206, 215, 219, 219, 217, 222, 228, + 219, 218, 214, 207, 199, 192, 190, 189, 195, 204, 216, 231, 242, 249, 252, 252, + 251, 252, 254, 254, 254, 254, 251, 249, 244, 246, 248, 250, 252, 253, 254, 254, + 253, 254, 254, 255, 253, 253, 255, 255, 255, 254, 253, 253, 255, 254, 252, 250, + 254, 253, 252, 251, 250, 248, 247, 247, 251, 252, 252, 252, 248, 245, 242, 240, + 240, 237, 235, 229, 225, 219, 214, 212, 195, 175, 154, 125, 92, 83, 90, 91, + 90, 255, 255, 255, 255, 117, 110, 99, 88, 80, 76, 82, 86, 91, 91, 91, + 94, 91, 86, 79, 78, 80, 80, 79, 81, 81, 80, 83, 86, 91, 101, 115, + 130, 144, 150, 157, 162, 166, 169, 172, 174, 176, 179, 181, 183, 186, 189, 190, + 192, 196, 200, 206, 210, 214, 216, 215, 213, 212, 214, 203, 202, 196, 188, 175, + 168, 164, 165, 167, 171, 180, 191, 207, 223, 237, 245, 239, 240, 244, 246, 247, + 247, 245, 244, 240, 241, 242, 244, 247, 247, 250, 250, 254, 254, 254, 254, 253, + 255, 255, 255, 254, 253, 253, 254, 255, 254, 252, 249, 253, 252, 250, 249, 247, + 244, 243, 242, 245, 247, 248, 247, 246, 244, 240, 239, 242, 239, 236, 230, 223, + 216, 212, 209, 195, 176, 154, 125, 92, 82, 87, 87, 89, 255, 255, 255, 255, + 116, 110, 98, 85, 76, 73, 80, 85, 87, 88, 88, 89, 88, 83, 78, 77, + 76, 76, 75, 77, 79, 80, 85, 89, 98, 109, 122, 138, 152, 161, 162, 165, + 168, 169, 171, 171, 174, 177, 177, 180, 182, 184, 185, 190, 194, 197, 207, 208, + 209, 210, 212, 209, 204, 199, 187, 185, 179, 169, 158, 150, 148, 148, 147, 147, + 151, 159, 173, 192, 207, 218, 217, 219, 223, 230, 234, 236, 237, 237, 234, 235, + 237, 238, 241, 242, 243, 242, 250, 250, 249, 251, 251, 253, 253, 253, 250, 249, + 250, 251, 252, 251, 248, 246, 248, 248, 245, 242, 240, 239, 236, 235, 240, 242, + 244, 244, 242, 241, 238, 237, 239, 236, 233, 227, 221, 215, 209, 206, 195, 176, + 155, 124, 92, 82, 86, 86, 84, 255, 255, 255, 255, 113, 108, 97, 84, 74, + 70, 77, 82, 85, 84, 86, 88, 85, 80, 76, 74, 73, 71, 73, 75, 77, + 79, 88, 92, 102, 114, 130, 147, 161, 168, 166, 169, 170, 172, 170, 171, 172, + 176, 175, 176, 180, 181, 183, 187, 192, 195, 204, 204, 201, 201, 204, 205, 197, + 188, 172, 169, 162, 154, 145, 139, 137, 137, 133, 134, 135, 141, 150, 159, 169, + 173, 187, 191, 198, 206, 213, 218, 221, 221, 223, 224, 227, 230, 233, 235, 237, + 236, 239, 240, 240, 244, 246, 248, 247, 245, 242, 242, 243, 245, 246, 245, 241, + 238, 239, 238, 237, 234, 230, 229, 227, 227, 235, 236, 239, 239, 239, 237, 235, + 233, 233, 230, 228, 222, 216, 212, 206, 204, 193, 175, 154, 124, 92, 80, 85, + 85, 139, 255, 255, 255, 255, 111, 107, 96, 82, 72, 68, 74, 79, 82, 82, + 82, 86, 84, 79, 74, 72, 70, 69, 69, 73, 77, 80, 89, 93, 105, 119, + 136, 151, 165, 172, 170, 171, 174, 173, 171, 170, 173, 174, 173, 176, 177, 180, + 181, 186, 191, 195, 199, 202, 201, 194, 192, 191, 187, 178, 162, 156, 148, 140, + 136, 132, 128, 127, 121, 121, 123, 126, 129, 132, 137, 139, 156, 159, 168, 178, + 186, 193, 197, 198, 206, 208, 211, 216, 221, 223, 225, 228, 229, 229, 229, 233, + 238, 240, 240, 238, 234, 234, 235, 237, 238, 237, 233, 229, 228, 227, 225, 224, + 221, 219, 217, 216, 228, 228, 230, 230, 231, 229, 227, 224, 220, 219, 217, 213, + 208, 204, 199, 198, 192, 172, 154, 124, 92, 81, 86, 85, 255, 255, 255, 255, + 205, 110, 105, 95, 81, 71, 67, 72, 78, 81, 81, 82, 85, 83, 78, 72, + 71, 68, 68, 68, 73, 77, 79, 90, 96, 106, 121, 137, 153, 167, 174, 174, + 175, 175, 173, 171, 171, 172, 174, 174, 175, 176, 178, 181, 185, 191, 195, 197, + 204, 202, 192, 183, 178, 176, 171, 155, 148, 139, 132, 130, 128, 124, 120, 116, + 113, 110, 109, 113, 117, 123, 126, 133, 138, 146, 157, 166, 173, 177, 178, 190, + 193, 198, 203, 209, 213, 218, 219, 221, 220, 221, 227, 232, 235, 234, 232, 227, + 228, 229, 231, 232, 230, 226, 223, 219, 219, 219, 216, 213, 213, 212, 210, 219, + 220, 222, 222, 222, 220, 218, 217, 209, 207, 206, 203, 198, 196, 191, 190, 191, + 171, 151, 124, 92, 81, 85, 84, 255, 255, 255, 255, 110, 112, 105, 92, 79, + 71, 70, 69, 73, 80, 85, 89, 88, 85, 83, 73, 73, 72, 72, 72, 75, + 76, 76, 89, 99, 114, 132, 148, 160, 168, 170, 171, 174, 178, 179, 180, 179, + 175, 174, 174, 178, 181, 185, 189, 194, 196, 197, 200, 198, 193, 187, 176, 168, + 161, 157, 142, 138, 132, 128, 127, 126, 124, 124, 115, 113, 110, 108, 106, 106, + 108, 109, 113, 116, 123, 131, 139, 147, 153, 157, 168, 173, 180, 188, 193, 198, + 203, 207, 210, 214, 219, 226, 228, 229, 227, 227, 217, 219, 220, 221, 220, 216, + 213, 211, 201, 200, 197, 196, 197, 196, 196, 194, 197, 198, 201, 200, 198, 194, + 188, 185, 173, 172, 173, 176, 183, 187, 187, 186, 182, 168, 156, 131, 98, 87, + 87, 85, 255, 255, 255, 255, 112, 113, 106, 92, 78, 70, 65, 69, 74, 82, + 88, 92, 90, 87, 84, 74, 74, 73, 73, 76, 77, 78, 79, 90, 100, 116, + 134, 149, 160, 167, 169, 169, 172, 179, 184, 186, 184, 180, 178, 179, 182, 184, + 187, 190, 194, 196, 198, 193, 192, 187, 181, 171, 162, 155, 152, 140, 137, 133, + 129, 126, 122, 119, 116, 111, 109, 107, 104, 102, 101, 101, 101, 103, 106, 111, + 117, 123, 129, 133, 136, 149, 154, 163, 172, 179, 186, 191, 196, 200, 204, 210, + 214, 219, 220, 220, 218, 210, 210, 212, 212, 211, 206, 201, 198, 187, 185, 182, + 180, 180, 179, 178, 177, 176, 176, 178, 177, 176, 171, 168, 166, 161, 160, 160, + 162, 168, 171, 172, 171, 170, 158, 148, 125, 95, 83, 86, 85, 255, 255, 255, + 255, 113, 114, 108, 95, 80, 71, 65, 69, 74, 82, 89, 91, 88, 82, 78, + 74, 73, 73, 74, 77, 79, 82, 84, 91, 101, 118, 138, 154, 163, 168, 170, + 169, 174, 180, 185, 189, 188, 185, 183, 185, 185, 185, 186, 187, 190, 191, 194, + 186, 184, 178, 172, 165, 154, 148, 144, 136, 132, 128, 125, 121, 116, 108, 103, + 106, 106, 105, 104, 103, 102, 101, 101, 100, 100, 104, 107, 111, 115, 118, 119, + 130, 136, 146, 155, 165, 173, 181, 186, 188, 192, 196, 203, 207, 209, 209, 209, + 205, 204, 206, 204, 201, 196, 189, 186, 172, 170, 166, 163, 160, 160, 158, 157, + 153, 153, 154, 154, 152, 152, 149, 148, 146, 145, 144, 147, 152, 154, 155, 155, + 155, 146, 138, 118, 92, 80, 83, 139, 255, 255, 255, 207, 114, 115, 111, 100, + 88, 78, 73, 74, 79, 86, 90, 88, 83, 75, 70, 71, 71, 71, 73, 77, + 81, 86, 88, 96, 107, 124, 143, 159, 168, 171, 173, 175, 177, 182, 185, 187, + 188, 188, 188, 186, 186, 184, 183, 184, 184, 185, 185, 181, 177, 171, 166, 157, + 149, 141, 135, 127, 124, 119, 115, 111, 106, 100, 96, 96, 97, 98, 99, 99, + 99, 98, 98, 97, 99, 100, 101, 104, 107, 108, 109, 116, 121, 131, 140, 147, + 158, 167, 171, 180, 183, 186, 193, 195, 197, 198, 197, 196, 198, 197, 195, 190, + 185, 178, 174, 156, 153, 148, 144, 142, 142, 139, 137, 134, 134, 134, 134, 133, + 134, 135, 136, 132, 132, 134, 135, 139, 143, 145, 146, 147, 137, 130, 114, 86, + 76, 81, 255, 255, 255, 255, 111, 113, 116, 114, 107, 98, 91, 86, 84, 87, + 90, 90, 85, 78, 70, 64, 66, 65, 67, 70, 75, 80, 87, 90, 102, 112, + 130, 150, 165, 173, 177, 178, 183, 182, 183, 184, 185, 185, 187, 187, 188, 187, + 186, 184, 182, 181, 178, 178, 174, 170, 166, 158, 152, 145, 136, 129, 120, 115, + 109, 106, 103, 102, 100, 99, 92, 93, 93, 93, 93, 92, 91, 90, 90, 90, + 91, 94, 95, 97, 99, 99, 104, 108, 116, 124, 132, 140, 148, 154, 171, 173, + 177, 181, 186, 186, 185, 184, 184, 184, 183, 180, 175, 168, 162, 158, 139, 135, + 129, 125, 123, 122, 120, 118, 114, 114, 114, 114, 116, 118, 120, 121, 122, 123, + 124, 128, 132, 137, 143, 146, 146, 137, 130, 113, 85, 75, 77, 255, 255, 255, + 255, 110, 112, 115, 115, 113, 108, 104, 100, 97, 96, 93, 89, 82, 74, 68, + 62, 62, 61, 64, 66, 73, 82, 88, 92, 108, 118, 135, 153, 168, 179, 181, + 184, 191, 189, 188, 186, 185, 184, 184, 186, 191, 191, 189, 188, 183, 181, 177, + 176, 170, 164, 156, 151, 147, 138, 130, 123, 114, 110, 104, 101, 100, 102, 102, + 100, 100, 100, 98, 96, 94, 92, 91, 90, 86, 87, 88, 89, 93, 93, 95, + 96, 100, 104, 110, 117, 123, 131, 137, 143, 159, 164, 168, 175, 178, 178, 176, + 175, 179, 178, 176, 173, 166, 157, 150, 145, 130, 125, 119, 113, 111, 110, 109, + 108, 102, 102, 105, 106, 109, 111, 115, 116, 117, 118, 120, 123, 126, 133, 139, + 145, 148, 138, 131, 112, 85, 74, 78, 255, 255, 255, 255, 112, 112, 114, 116, + 117, 115, 112, 109, 101, 98, 92, 83, 75, 68, 63, 62, 58, 60, 61, 65, + 73, 82, 90, 96, 112, 121, 137, 154, 170, 179, 185, 187, 192, 193, 193, 192, + 190, 187, 184, 184, 190, 191, 190, 187, 184, 180, 174, 171, 162, 155, 149, 143, + 139, 132, 121, 114, 105, 102, 98, 97, 99, 98, 98, 95, 101, 100, 98, 96, + 94, 94, 94, 95, 87, 87, 89, 90, 91, 93, 94, 94, 96, 99, 105, 111, + 117, 125, 133, 138, 151, 155, 164, 172, 177, 177, 176, 173, 179, 177, 174, 168, + 159, 147, 139, 132, 122, 118, 111, 107, 103, 102, 102, 102, 98, 99, 102, 104, + 108, 112, 114, 115, 116, 119, 121, 123, 125, 131, 138, 145, 150, 139, 131, 112, + 84, 76, 82, 255, 255, 255, 255, 113, 112, 113, 115, 117, 117, 116, 114, 100, + 94, 86, 75, 68, 63, 61, 60, 58, 57, 60, 65, 74, 84, 92, 98, 115, + 123, 137, 153, 168, 179, 186, 188, 193, 194, 196, 198, 195, 190, 185, 180, 186, + 188, 188, 186, 183, 176, 169, 166, 156, 150, 142, 136, 133, 127, 116, 107, 97, + 95, 94, 95, 95, 94, 91, 89, 90, 89, 88, 88, 89, 92, 95, 97, 86, + 86, 86, 87, 87, 90, 90, 90, 89, 92, 97, 103, 109, 117, 124, 130, 148, + 153, 164, 174, 180, 181, 179, 176, 175, 173, 169, 160, 149, 137, 126, 120, 113, + 108, 102, 96, 95, 93, 94, 94, 93, 94, 99, 103, 106, 110, 112, 112, 120, + 122, 124, 125, 127, 131, 139, 145, 150, 141, 131, 112, 84, 76, 83, 255, 255, + 255, 255, 113, 115, 118, 120, 127, 130, 125, 114, 99, 89, 82, 78, 71, 63, + 63, 67, 59, 60, 61, 65, 71, 85, 98, 108, 116, 125, 139, 155, 169, 180, + 189, 195, 190, 195, 202, 202, 197, 193, 191, 190, 188, 189, 193, 192, 189, 177, + 164, 154, 151, 145, 139, 130, 120, 110, 100, 93, 94, 93, 92, 88, 84, 78, + 72, 69, 64, 69, 73, 73, 77, 87, 95, 98, 95, 95, 93, 90, 85, 85, + 89, 93, 91, 89, 91, 99, 106, 114, 126, 137, 146, 160, 175, 186, 194, 196, + 190, 182, 176, 171, 163, 151, 137, 123, 112, 105, 96, 94, 91, 87, 85, 84, + 85, 85, 98, 95, 92, 95, 101, 104, 106, 105, 119, 122, 127, 130, 132, 136, + 139, 141, 151, 145, 128, 106, 87, 81, 81, 255, 255, 255, 255, 111, 113, 113, + 116, 121, 123, 117, 106, 94, 86, 80, 77, 71, 65, 62, 66, 63, 64, 63, + 67, 73, 86, 99, 108, 119, 128, 141, 155, 168, 179, 189, 195, 198, 200, 202, + 203, 201, 197, 191, 186, 192, 194, 197, 194, 187, 175, 164, 157, 147, 141, 132, + 125, 117, 109, 101, 97, 99, 96, 90, 84, 77, 72, 68, 66, 57, 64, 70, + 76, 83, 93, 98, 97, 92, 92, 93, 92, 89, 89, 90, 91, 93, 91, 94, + 100, 109, 118, 130, 142, 152, 168, 186, 200, 208, 209, 200, 189, 175, 169, 158, + 144, 130, 116, 105, 99, 89, 87, 86, 84, 83, 86, 88, 90, 94, 94, 94, + 97, 100, 101, 101, 101, 109, 115, 123, 129, 131, 134, 139, 143, 147, 142, 126, + 103, 86, 79, 255, 255, 255, 255, 205, 108, 110, 109, 110, 114, 116, 109, 99, + 91, 86, 82, 79, 75, 69, 66, 68, 66, 67, 67, 70, 76, 87, 98, 107, + 122, 130, 141, 155, 167, 179, 189, 195, 202, 201, 203, 205, 208, 205, 197, 188, + 187, 191, 198, 196, 190, 178, 166, 159, 149, 143, 133, 125, 120, 114, 111, 109, + 108, 103, 97, 87, 81, 74, 69, 67, 58, 66, 75, 87, 97, 107, 106, 101, + 94, 93, 93, 93, 95, 93, 92, 89, 90, 89, 93, 102, 110, 120, 131, 144, + 162, 179, 203, 219, 227, 226, 215, 203, 177, 166, 148, 131, 117, 104, 97, 92, + 85, 83, 82, 82, 85, 90, 96, 99, 97, 99, 102, 103, 102, 101, 101, 102, + 100, 108, 118, 126, 128, 132, 139, 145, 141, 137, 122, 102, 84, 77, 255, 255, + 255, 255, 99, 104, 103, 103, 103, 107, 111, 104, 94, 90, 88, 87, 84, 80, + 77, 73, 73, 70, 69, 69, 71, 76, 86, 96, 105, 121, 129, 139, 152, 165, + 177, 189, 196, 197, 200, 202, 208, 211, 209, 205, 199, 183, 186, 194, 199, 199, + 190, 177, 167, 159, 153, 144, 135, 131, 129, 127, 126, 124, 121, 115, 108, 100, + 92, 87, 85, 77, 83, 91, 102, 117, 126, 123, 115, 105, 101, 96, 95, 96, + 96, 94, 91, 91, 90, 94, 104, 112, 123, 137, 148, 172, 191, 214, 232, 239, + 240, 230, 218, 183, 167, 142, 121, 105, 95, 90, 88, 82, 81, 81, 82, 87, + 93, 101, 106, 103, 107, 110, 109, 107, 105, 107, 110, 100, 103, 110, 117, 126, + 132, 140, 143, 136, 134, 120, 99, 83, 76, 255, 255, 255, 255, 94, 93, 93, + 94, 95, 101, 106, 101, 92, 90, 91, 89, 87, 84, 81, 79, 75, 71, 72, + 72, 71, 76, 84, 94, 99, 118, 125, 136, 150, 163, 176, 188, 195, 192, 199, + 205, 211, 210, 207, 207, 206, 194, 188, 187, 189, 195, 194, 185, 176, 166, 158, + 151, 145, 143, 142, 143, 143, 144, 142, 143, 140, 136, 129, 122, 117, 112, 112, + 115, 122, 135, 145, 141, 133, 126, 118, 109, 105, 102, 103, 100, 99, 101, 100, + 103, 112, 121, 130, 144, 155, 182, 198, 220, 236, 246, 247, 239, 230, 190, 170, + 140, 115, 99, 92, 89, 87, 80, 81, 80, 80, 84, 90, 96, 99, 102, 104, + 107, 105, 103, 104, 108, 111, 107, 104, 104, 109, 120, 131, 137, 141, 136, 133, + 119, 99, 82, 76, 255, 255, 255, 255, 89, 82, 85, 85, 89, 96, 103, 100, + 93, 88, 91, 89, 86, 83, 82, 80, 76, 75, 75, 74, 74, 77, 84, 92, + 97, 117, 124, 136, 150, 162, 174, 185, 192, 190, 199, 207, 211, 207, 205, 203, + 205, 202, 189, 177, 170, 174, 176, 175, 171, 164, 161, 156, 154, 155, 157, 155, + 155, 161, 164, 166, 168, 167, 162, 158, 154, 148, 146, 143, 145, 155, 162, 160, + 152, 149, 142, 133, 123, 117, 116, 115, 115, 111, 110, 114, 122, 130, 138, 151, + 162, 188, 204, 224, 239, 247, 251, 246, 237, 199, 175, 141, 114, 98, 92, 91, + 89, 80, 79, 77, 77, 77, 79, 82, 83, 86, 90, 92, 96, 97, 98, 102, + 103, 110, 104, 100, 103, 113, 126, 134, 137, 139, 136, 121, 100, 82, 76, 255, + 255, 255, 255, 85, 81, 81, 83, 88, 96, 104, 102, 95, 91, 95, 92, 86, + 84, 84, 83, 78, 78, 78, 78, 77, 78, 84, 90, 96, 119, 128, 139, 152, + 164, 173, 181, 187, 190, 194, 201, 205, 207, 206, 203, 202, 197, 190, 182, 172, + 167, 163, 162, 161, 162, 162, 163, 165, 170, 173, 175, 175, 175, 177, 180, 184, + 186, 183, 181, 180, 178, 176, 172, 171, 175, 180, 179, 173, 170, 167, 158, 148, + 139, 134, 134, 134, 129, 127, 129, 136, 142, 150, 162, 173, 192, 207, 228, 243, + 253, 254, 248, 241, 205, 179, 143, 113, 98, 93, 92, 91, 83, 82, 80, 75, + 73, 70, 68, 66, 72, 76, 82, 89, 96, 99, 97, 96, 102, 102, 102, 104, + 107, 117, 129, 138, 146, 140, 125, 101, 84, 77, 255, 255, 255, 255, 82, 85, + 85, 86, 91, 99, 107, 106, 99, 95, 98, 95, 87, 85, 87, 86, 81, 81, + 81, 80, 79, 80, 85, 91, 97, 123, 131, 142, 155, 165, 172, 179, 183, 186, + 188, 193, 200, 208, 211, 206, 202, 191, 195, 199, 193, 181, 168, 161, 160, 164, + 165, 171, 177, 184, 190, 191, 190, 181, 183, 186, 188, 190, 192, 193, 193, 196, + 195, 191, 188, 191, 195, 193, 187, 181, 180, 175, 166, 155, 148, 147, 147, 149, + 147, 148, 154, 160, 167, 178, 188, 193, 210, 232, 247, 255, 255, 250, 240, 207, + 180, 144, 113, 98, 94, 93, 93, 88, 87, 82, 77, 71, 64, 61, 58, 67, + 71, 80, 93, 103, 104, 99, 94, 92, 100, 105, 106, 104, 111, 125, 137, 149, + 143, 126, 104, 85, 79, 255, 255, 255, 255, 86, 86, 97, 94, 102, 106, 108, + 119, 112, 105, 105, 101, 91, 87, 91, 93, 91, 90, 90, 90, 87, 88, 93, + 98, 103, 121, 130, 145, 159, 169, 175, 179, 180, 191, 192, 191, 192, 193, 193, + 194, 194, 206, 207, 209, 208, 204, 199, 194, 189, 192, 192, 192, 194, 199, 205, + 210, 214, 205, 200, 197, 194, 194, 195, 193, 192, 194, 194, 193, 192, 190, 189, + 190, 192, 180, 181, 181, 182, 182, 182, 180, 180, 174, 174, 174, 177, 182, 189, + 197, 202, 209, 218, 232, 241, 251, 255, 250, 242, 222, 195, 157, 128, 119, 120, + 123, 123, 112, 114, 116, 115, 111, 101, 89, 79, 89, 88, 93, 106, 122, 125, + 117, 107, 93, 100, 108, 115, 113, 115, 125, 136, 142, 137, 124, 102, 84, 79, + 255, 255, 255, 255, 83, 81, 93, 89, 99, 105, 109, 122, 115, 105, 106, 100, + 92, 90, 95, 98, 96, 95, 93, 87, 84, 84, 89, 99, 105, 120, 131, 144, + 159, 169, 175, 179, 180, 191, 190, 191, 193, 195, 196, 198, 199, 207, 209, 212, + 212, 213, 212, 211, 208, 208, 206, 204, 203, 204, 207, 211, 214, 212, 207, 202, + 197, 194, 190, 185, 181, 181, 183, 185, 186, 186, 188, 190, 193, 190, 189, 190, + 191, 193, 196, 197, 198, 193, 192, 192, 191, 195, 201, 207, 210, 214, 222, 234, + 243, 250, 255, 251, 243, 228, 203, 169, 142, 134, 137, 143, 146, 140, 142, 147, + 147, 146, 137, 124, 115, 118, 116, 119, 128, 140, 143, 136, 126, 117, 115, 116, + 121, 125, 125, 131, 138, 143, 138, 124, 102, 84, 79, 255, 255, 255, 255, 81, + 75, 87, 86, 96, 104, 110, 124, 119, 111, 110, 104, 97, 96, 101, 104, 104, + 99, 95, 89, 82, 82, 89, 98, 105, 120, 131, 145, 159, 168, 174, 178, 179, + 190, 190, 191, 193, 196, 200, 204, 206, 213, 216, 219, 223, 224, 227, 227, 227, + 220, 216, 210, 204, 201, 200, 201, 202, 207, 202, 198, 194, 192, 188, 183, 179, + 173, 176, 180, 184, 187, 189, 192, 194, 199, 201, 202, 205, 208, 213, 217, 219, + 216, 215, 212, 210, 211, 214, 218, 219, 221, 228, 237, 244, 252, 255, 254, 246, + 235, 217, 186, 166, 158, 162, 171, 177, 172, 176, 181, 185, 185, 179, 169, 161, + 155, 152, 153, 158, 165, 166, 160, 152, 147, 138, 133, 135, 139, 140, 142, 144, + 143, 138, 124, 102, 84, 79, 255, 255, 255, 255, 80, 74, 85, 83, 95, 103, + 110, 125, 121, 121, 118, 109, 103, 101, 104, 109, 110, 102, 97, 93, 88, 87, + 91, 98, 106, 123, 131, 146, 159, 168, 173, 175, 179, 190, 190, 191, 193, 197, + 201, 206, 208, 222, 224, 229, 233, 233, 234, 233, 233, 228, 224, 217, 209, 204, + 201, 200, 200, 189, 186, 181, 181, 181, 183, 183, 183, 174, 177, 183, 186, 189, + 190, 193, 195, 206, 208, 214, 218, 224, 228, 232, 233, 234, 232, 227, 223, 222, + 221, 222, 224, 227, 235, 240, 246, 252, 255, 254, 249, 240, 226, 205, 190, 183, + 187, 192, 198, 194, 195, 200, 203, 204, 202, 196, 192, 183, 180, 177, 179, 183, + 185, 181, 176, 173, 163, 154, 153, 151, 149, 148, 150, 144, 139, 125, 103, 84, + 138, 255, 255, 255, 255, 82, 75, 88, 84, 95, 105, 110, 126, 121, 129, 121, + 111, 103, 100, 100, 104, 107, 103, 103, 101, 98, 96, 98, 103, 106, 126, 135, + 147, 160, 168, 173, 174, 175, 189, 189, 192, 193, 197, 201, 206, 208, 223, 227, + 232, 236, 240, 238, 234, 232, 230, 228, 224, 221, 219, 219, 220, 220, 193, 188, + 180, 177, 176, 176, 178, 177, 175, 179, 183, 188, 190, 193, 196, 199, 215, 220, + 226, 234, 238, 241, 241, 240, 242, 240, 236, 231, 227, 226, 225, 226, 232, 238, + 243, 247, 253, 255, 255, 250, 244, 232, 220, 208, 203, 203, 204, 206, 205, 201, + 199, 198, 199, 200, 200, 199, 193, 189, 187, 188, 191, 193, 193, 191, 192, 185, + 179, 170, 157, 147, 147, 150, 145, 140, 126, 103, 85, 255, 255, 255, 255, 255, + 197, 76, 88, 83, 94, 104, 109, 126, 122, 130, 119, 109, 99, 94, 91, 95, + 102, 109, 111, 113, 113, 112, 111, 112, 113, 131, 139, 152, 163, 170, 172, 173, + 174, 187, 188, 191, 195, 199, 204, 206, 208, 219, 223, 228, 234, 235, 234, 231, + 229, 225, 226, 228, 231, 235, 238, 241, 243, 229, 221, 210, 200, 194, 189, 186, + 184, 183, 185, 188, 192, 196, 200, 207, 210, 228, 233, 241, 247, 250, 247, 245, + 242, 241, 239, 235, 231, 228, 226, 226, 225, 232, 238, 244, 247, 254, 255, 254, + 249, 245, 236, 224, 218, 214, 212, 210, 209, 208, 202, 194, 188, 186, 189, 189, + 190, 188, 187, 187, 186, 188, 190, 193, 193, 200, 199, 194, 183, 161, 144, 141, + 146, 146, 141, 127, 104, 85, 255, 255, 255, 255, 255, 255, 72, 84, 81, 92, + 102, 109, 126, 122, 132, 119, 106, 97, 91, 87, 93, 99, 121, 123, 125, 126, + 125, 124, 125, 127, 135, 143, 154, 165, 171, 172, 172, 172, 182, 187, 192, 199, + 204, 209, 210, 213, 219, 222, 223, 225, 227, 227, 228, 227, 226, 229, 234, 239, + 244, 248, 250, 251, 255, 250, 241, 233, 224, 218, 211, 208, 204, 205, 207, 207, + 211, 216, 221, 226, 241, 244, 249, 251, 252, 248, 244, 240, 233, 232, 228, 225, + 224, 222, 222, 222, 229, 235, 241, 248, 252, 255, 254, 246, 249, 238, 225, 219, + 220, 219, 216, 212, 207, 199, 189, 180, 175, 174, 175, 174, 174, 176, 177, 176, + 176, 179, 183, 185, 194, 197, 197, 188, 168, 150, 144, 148, 147, 142, 127, 104, + 85, 255, 255, 255, 255, 255, 255, 69, 81, 79, 90, 100, 109, 126, 123, 133, + 120, 106, 99, 94, 90, 94, 102, 130, 131, 132, 133, 132, 132, 134, 137, 139, + 146, 158, 166, 171, 172, 172, 171, 180, 184, 192, 201, 208, 212, 214, 216, 225, + 223, 221, 219, 219, 221, 222, 224, 234, 237, 242, 247, 251, 252, 252, 251, 251, + 250, 248, 247, 243, 238, 233, 229, 229, 229, 228, 226, 225, 229, 234, 238, 248, + 249, 251, 250, 249, 245, 240, 237, 224, 222, 221, 218, 219, 218, 219, 218, 225, + 234, 241, 246, 252, 255, 252, 244, 253, 239, 223, 218, 220, 223, 221, 217, 207, + 198, 188, 177, 170, 166, 163, 162, 162, 165, 166, 167, 166, 167, 171, 175, 186, + 188, 191, 187, 175, 159, 152, 154, 147, 142, 127, 104, 85, 255, 255, 255, 255, + 255, 255, 77, 82, 82, 79, 91, 113, 125, 126, 129, 120, 110, 101, 95, 93, + 102, 111, 130, 144, 151, 140, 134, 140, 147, 147, 153, 158, 164, 167, 170, 171, + 175, 177, 179, 187, 197, 207, 214, 218, 220, 221, 212, 215, 220, 225, 231, 235, + 238, 241, 251, 250, 249, 248, 248, 249, 250, 251, 254, 255, 254, 254, 254, 252, + 251, 251, 251, 252, 254, 255, 255, 255, 254, 252, 249, 251, 254, 254, 252, 244, + 236, 231, 224, 222, 217, 214, 213, 213, 213, 215, 219, 226, 234, 244, 252, 253, + 249, 246, 249, 239, 228, 223, 222, 223, 228, 236, 224, 212, 193, 176, 167, 160, + 158, 155, 153, 150, 145, 140, 140, 144, 153, 161, 178, 180, 182, 182, 181, 178, + 175, 173, 167, 154, 129, 103, 83, 255, 255, 255, 255, 255, 255, 79, 84, 84, + 82, 93, 115, 127, 129, 128, 120, 109, 102, 97, 98, 106, 118, 143, 154, 156, + 146, 140, 146, 149, 148, 158, 160, 164, 167, 169, 173, 175, 178, 182, 189, 198, + 206, 211, 215, 216, 217, 214, 216, 222, 228, 235, 240, 243, 246, 252, 251, 249, + 249, 249, 249, 251, 252, 255, 255, 254, 255, 255, 252, 252, 252, 252, 252, 254, + 254, 255, 255, 254, 254, 251, 253, 253, 252, 248, 243, 239, 235, 223, 221, 217, + 212, 210, 210, 211, 213, 219, 223, 233, 244, 253, 254, 252, 248, 250, 240, 228, + 222, 221, 222, 228, 236, 234, 223, 207, 192, 179, 166, 157, 151, 146, 144, 141, + 137, 136, 139, 146, 150, 166, 170, 177, 182, 183, 182, 178, 175, 168, 155, 129, + 103, 83, 255, 255, 255, 255, 255, 255, 79, 83, 84, 82, 93, 113, 126, 131, + 133, 124, 112, 104, 99, 100, 111, 124, 157, 162, 162, 153, 152, 156, 158, 154, + 162, 164, 166, 169, 170, 173, 177, 179, 185, 192, 199, 206, 210, 212, 213, 215, + 217, 220, 227, 236, 242, 247, 252, 253, 252, 251, 250, 249, 249, 250, 251, 252, + 255, 255, 255, 255, 255, 253, 253, 253, 254, 254, 254, 253, 254, 254, 255, 255, + 254, 254, 252, 250, 247, 244, 241, 239, 226, 222, 214, 210, 205, 207, 208, 210, + 217, 223, 233, 244, 253, 255, 254, 252, 255, 241, 227, 220, 217, 219, 226, 233, + 242, 236, 228, 216, 202, 187, 172, 163, 148, 148, 145, 143, 140, 142, 146, 148, + 159, 165, 174, 185, 191, 195, 194, 193, 170, 156, 129, 102, 83, 255, 255, 255, + 255, 255, 255, 77, 80, 81, 81, 90, 109, 124, 132, 139, 130, 118, 108, 100, + 102, 115, 131, 163, 166, 163, 160, 160, 166, 167, 164, 167, 168, 169, 171, 171, + 176, 179, 183, 188, 194, 200, 206, 210, 213, 215, 217, 225, 228, 234, 242, 247, + 251, 255, 255, 253, 252, 250, 249, 249, 250, 252, 253, 255, 255, 255, 255, 255, + 254, 254, 253, 255, 254, 253, 251, 251, 254, 255, 255, 255, 255, 254, 252, 250, + 245, 242, 241, 227, 223, 215, 207, 203, 203, 207, 210, 215, 221, 230, 243, 253, + 255, 255, 255, 255, 242, 228, 219, 215, 216, 222, 230, 242, 242, 241, 237, 227, + 215, 204, 195, 174, 172, 169, 164, 161, 161, 165, 168, 163, 166, 173, 182, 191, + 199, 204, 207, 173, 157, 129, 102, 83, 255, 255, 255, 255, 255, 255, 196, 79, + 80, 82, 90, 108, 124, 134, 142, 133, 122, 111, 105, 108, 123, 139, 168, 167, + 163, 161, 163, 168, 169, 169, 170, 172, 175, 175, 177, 179, 183, 188, 189, 194, + 200, 206, 211, 216, 220, 223, 232, 235, 242, 247, 251, 255, 255, 255, 254, 253, + 252, 251, 251, 252, 253, 254, 255, 255, 255, 255, 255, 254, 254, 253, 255, 255, + 254, 251, 251, 253, 254, 255, 255, 255, 255, 255, 250, 244, 239, 236, 225, 219, + 213, 207, 204, 203, 207, 208, 214, 218, 229, 242, 252, 255, 255, 255, 255, 244, + 228, 218, 213, 214, 219, 226, 238, 242, 247, 249, 246, 237, 232, 226, 207, 205, + 201, 196, 192, 193, 196, 198, 182, 181, 178, 180, 184, 193, 202, 208, 176, 158, + 129, 101, 83, 255, 255, 255, 255, 255, 255, 255, 80, 82, 84, 92, 108, 125, + 139, 143, 136, 127, 117, 110, 113, 130, 147, 171, 168, 163, 162, 162, 165, 166, + 168, 173, 175, 178, 180, 182, 185, 189, 192, 190, 195, 200, 206, 212, 218, 223, + 228, 236, 239, 245, 250, 252, 255, 255, 254, 255, 255, 254, 253, 253, 254, 255, + 255, 255, 255, 255, 255, 255, 253, 253, 253, 255, 255, 254, 254, 253, 254, 254, + 254, 255, 255, 254, 251, 245, 238, 230, 224, 220, 216, 210, 206, 203, 205, 208, + 209, 212, 217, 227, 240, 251, 255, 255, 255, 255, 245, 229, 217, 213, 211, 214, + 221, 236, 241, 248, 253, 251, 247, 243, 240, 235, 233, 231, 227, 223, 221, 223, + 224, 216, 210, 202, 195, 192, 195, 199, 202, 179, 160, 129, 101, 83, 255, 255, + 255, 255, 255, 255, 255, 80, 82, 85, 92, 107, 125, 141, 149, 143, 133, 122, + 114, 114, 130, 146, 167, 164, 161, 161, 161, 162, 166, 169, 174, 178, 182, 186, + 187, 189, 193, 196, 190, 195, 199, 205, 210, 217, 223, 228, 236, 241, 246, 251, + 254, 254, 254, 252, 255, 255, 255, 254, 254, 255, 255, 255, 255, 255, 254, 255, + 255, 252, 252, 252, 254, 254, 255, 255, 254, 254, 252, 252, 253, 251, 246, 241, + 232, 225, 218, 214, 214, 211, 208, 205, 203, 205, 208, 209, 211, 216, 226, 239, + 250, 255, 255, 255, 255, 245, 230, 219, 212, 209, 210, 215, 236, 243, 252, 255, + 255, 250, 246, 245, 248, 250, 251, 251, 246, 242, 240, 238, 239, 235, 229, 220, + 213, 207, 202, 201, 181, 161, 129, 101, 83, 255, 255, 255, 255, 255, 255, 255, + 77, 79, 83, 90, 104, 123, 140, 158, 150, 140, 127, 114, 111, 124, 140, 160, + 159, 159, 159, 160, 163, 169, 175, 176, 179, 184, 189, 191, 192, 195, 198, 191, + 195, 199, 203, 209, 215, 221, 226, 235, 240, 245, 250, 254, 254, 254, 253, 255, + 255, 255, 254, 254, 255, 255, 255, 254, 255, 254, 254, 254, 252, 251, 251, 252, + 254, 255, 255, 255, 254, 252, 251, 250, 247, 240, 230, 221, 215, 210, 206, 208, + 207, 204, 203, 203, 205, 208, 208, 211, 215, 225, 238, 248, 255, 255, 255, 255, + 245, 231, 220, 213, 207, 209, 213, 236, 244, 255, 255, 255, 253, 248, 245, 252, + 255, 255, 255, 255, 253, 246, 243, 242, 242, 240, 234, 226, 214, 204, 199, 182, + 161, 129, 100, 83, 255, 255, 255, 255, 255, 255, 255, 255, 80, 81, 80, 94, + 126, 156, 164, 160, 153, 142, 130, 124, 124, 128, 146, 160, 165, 158, 155, 163, + 169, 167, 180, 182, 186, 189, 194, 195, 197, 197, 189, 189, 193, 197, 204, 211, + 219, 221, 234, 238, 243, 248, 250, 251, 249, 248, 252, 249, 247, 245, 248, 252, + 255, 255, 251, 252, 253, 254, 254, 254, 254, 253, 246, 249, 253, 255, 255, 255, + 246, 239, 228, 223, 217, 210, 204, 200, 200, 200, 206, 205, 203, 202, 203, 206, + 210, 213, 214, 223, 234, 242, 247, 251, 254, 255, 255, 249, 237, 223, 212, 205, + 206, 208, 223, 231, 245, 255, 255, 254, 249, 249, 251, 253, 254, 254, 251, 250, + 248, 249, 241, 242, 243, 240, 235, 227, 220, 216, 194, 176, 143, 103, 78, 255, + 255, 255, 255, 255, 255, 255, 255, 82, 83, 83, 97, 128, 157, 176, 177, 173, + 164, 154, 142, 134, 129, 142, 155, 162, 159, 157, 166, 170, 168, 179, 182, 187, + 191, 195, 196, 197, 196, 190, 191, 191, 195, 202, 208, 216, 221, 235, 238, 243, + 248, 250, 249, 249, 247, 244, 243, 240, 240, 240, 243, 247, 251, 250, 250, 251, + 253, 254, 255, 255, 255, 251, 253, 254, 255, 253, 245, 233, 224, 214, 212, 206, + 200, 197, 196, 197, 198, 202, 202, 201, 202, 205, 208, 210, 213, 215, 222, 234, + 243, 250, 255, 255, 255, 255, 250, 238, 224, 214, 208, 204, 203, 211, 222, 236, + 247, 252, 252, 252, 252, 251, 253, 255, 255, 255, 254, 255, 255, 248, 249, 247, + 245, 239, 232, 224, 219, 196, 178, 144, 104, 79, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 83, 83, 95, 127, 156, 184, 189, 192, 193, 186, 171, 153, 141, + 136, 147, 156, 155, 159, 166, 170, 167, 179, 182, 188, 193, 197, 197, 196, 195, + 192, 191, 189, 191, 196, 204, 213, 219, 234, 236, 240, 242, 243, 243, 242, 242, + 234, 233, 230, 230, 230, 233, 235, 237, 243, 243, 244, 246, 248, 250, 252, 254, + 255, 255, 255, 250, 244, 233, 221, 212, 199, 197, 194, 191, 191, 194, 198, 200, + 203, 202, 202, 203, 207, 209, 212, 214, 217, 224, 233, 244, 253, 255, 255, 255, + 255, 250, 238, 229, 220, 211, 201, 195, 198, 206, 220, 232, 242, 247, 249, 252, + 249, 252, 254, 255, 255, 255, 255, 255, 251, 251, 252, 249, 243, 236, 228, 223, + 199, 180, 145, 105, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 81, + 93, 124, 153, 187, 194, 204, 212, 212, 199, 177, 163, 138, 145, 149, 149, 154, + 164, 170, 171, 179, 183, 190, 194, 199, 198, 196, 194, 194, 191, 187, 187, 190, + 199, 209, 215, 229, 229, 231, 233, 233, 232, 232, 231, 223, 224, 221, 220, 220, + 222, 224, 226, 235, 235, 236, 238, 241, 245, 248, 249, 248, 246, 242, 236, 226, + 216, 206, 199, 188, 187, 185, 186, 189, 196, 203, 208, 209, 207, 204, 203, 206, + 210, 215, 218, 223, 225, 233, 243, 254, 255, 255, 255, 255, 251, 241, 232, 225, + 215, 199, 189, 184, 191, 200, 212, 224, 233, 241, 245, 245, 247, 248, 250, 251, + 251, 255, 255, 251, 252, 252, 249, 244, 235, 227, 224, 201, 181, 145, 105, 81, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 79, 92, 124, 153, 192, 199, + 211, 220, 223, 213, 196, 181, 152, 149, 146, 144, 150, 162, 173, 177, 181, 184, + 191, 195, 199, 198, 196, 194, 193, 190, 184, 182, 186, 194, 204, 210, 222, 221, + 221, 221, 220, 219, 220, 219, 214, 212, 212, 210, 211, 212, 216, 217, 228, 228, + 230, 232, 235, 238, 241, 242, 233, 230, 222, 211, 199, 190, 184, 179, 179, 178, + 178, 181, 188, 197, 206, 212, 219, 214, 209, 206, 206, 211, 218, 223, 228, 230, + 233, 242, 252, 255, 255, 255, 255, 254, 245, 236, 229, 217, 201, 190, 171, 173, + 178, 188, 202, 216, 229, 236, 240, 241, 245, 245, 246, 245, 248, 249, 249, 250, + 251, 248, 243, 235, 227, 224, 202, 181, 144, 104, 81, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 78, 94, 125, 155, 199, 206, 213, 218, 216, 207, 193, + 184, 163, 155, 143, 141, 148, 163, 176, 185, 183, 186, 191, 195, 199, 198, 197, + 196, 194, 189, 183, 180, 182, 189, 199, 206, 213, 212, 210, 208, 207, 206, 206, + 206, 201, 200, 200, 200, 202, 204, 206, 207, 218, 220, 222, 225, 227, 228, 229, + 229, 222, 215, 204, 190, 176, 167, 164, 164, 170, 169, 170, 173, 181, 193, 204, + 210, 224, 220, 212, 207, 208, 213, 220, 224, 231, 232, 236, 243, 250, 255, 255, + 255, 255, 255, 248, 240, 230, 218, 205, 196, 171, 167, 164, 167, 179, 196, 213, + 221, 232, 234, 239, 240, 241, 241, 242, 243, 245, 246, 248, 246, 242, 236, 228, + 224, 201, 179, 142, 103, 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 91, 125, 157, 200, 204, 208, 208, 201, 191, 180, 173, 165, 151, 137, 135, + 144, 162, 177, 185, 185, 187, 192, 195, 198, 198, 198, 197, 193, 188, 181, 178, + 180, 186, 195, 201, 202, 200, 195, 192, 190, 190, 189, 190, 188, 188, 189, 190, + 193, 194, 197, 198, 207, 209, 212, 215, 216, 215, 214, 212, 201, 195, 181, 165, + 152, 148, 150, 154, 164, 163, 164, 167, 176, 187, 199, 206, 220, 217, 214, 212, + 212, 215, 221, 224, 228, 233, 241, 247, 252, 252, 253, 253, 255, 255, 249, 241, + 230, 218, 210, 205, 184, 174, 160, 154, 159, 174, 190, 198, 219, 223, 230, 233, + 236, 235, 236, 236, 240, 241, 241, 241, 236, 231, 224, 221, 199, 177, 140, 101, + 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 124, 155, 193, + 197, 201, 198, 187, 175, 166, 161, 158, 144, 130, 129, 141, 157, 173, 181, 187, + 188, 192, 194, 197, 198, 199, 198, 192, 187, 181, 177, 179, 185, 192, 198, 191, + 189, 183, 180, 178, 177, 177, 178, 179, 179, 181, 184, 185, 188, 190, 191, 196, + 198, 202, 205, 205, 203, 200, 198, 178, 169, 157, 142, 131, 130, 138, 144, 162, + 162, 161, 165, 175, 186, 198, 204, 216, 214, 214, 214, 215, 218, 220, 223, 224, + 233, 246, 252, 253, 251, 249, 248, 255, 255, 251, 241, 230, 220, 213, 212, 200, + 186, 164, 150, 148, 158, 171, 178, 207, 213, 221, 226, 230, 231, 230, 230, 231, + 233, 235, 234, 232, 226, 221, 217, 198, 175, 138, 100, 81, 136, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 146, 128, 174, 179, 183, 184, 179, 173, + 167, 164, 158, 147, 136, 133, 146, 162, 173, 179, 188, 188, 189, 190, 191, 192, + 192, 193, 188, 185, 181, 177, 178, 178, 178, 178, 180, 175, 165, 159, 158, 160, + 163, 165, 168, 168, 169, 172, 175, 179, 183, 185, 186, 189, 188, 185, 184, 183, + 175, 164, 152, 141, 128, 118, 117, 125, 137, 147, 154, 155, 157, 161, 166, 177, + 191, 199, 206, 208, 209, 213, 214, 216, 215, 214, 223, 228, 238, 246, 253, 255, + 253, 250, 255, 255, 250, 239, 229, 221, 215, 212, 205, 194, 176, 152, 133, 129, + 140, 150, 173, 189, 206, 214, 220, 225, 225, 219, 226, 228, 228, 225, 221, 219, + 218, 217, 190, 166, 130, 100, 84, 77, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 223, 119, 163, 169, 177, 182, 180, 175, 167, 164, 159, 150, 140, + 137, 145, 159, 171, 179, 186, 187, 187, 188, 189, 190, 190, 191, 187, 183, 180, + 177, 178, 177, 175, 173, 169, 162, 153, 147, 147, 148, 152, 153, 158, 160, 161, + 162, 167, 172, 175, 177, 178, 180, 179, 173, 170, 168, 158, 148, 136, 130, 119, + 115, 117, 126, 138, 146, 150, 146, 143, 146, 154, 166, 177, 183, 196, 198, 202, + 205, 208, 212, 212, 214, 220, 226, 235, 243, 250, 252, 251, 250, 255, 254, 246, + 236, 227, 218, 214, 211, 203, 195, 178, 157, 139, 131, 133, 136, 154, 173, 191, + 203, 214, 221, 222, 219, 220, 221, 220, 218, 214, 211, 210, 211, 188, 165, 131, + 101, 84, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, + 146, 155, 168, 176, 179, 176, 169, 165, 161, 155, 146, 141, 145, 156, 169, 177, + 184, 184, 184, 185, 186, 186, 187, 187, 184, 182, 178, 177, 175, 173, 170, 166, + 155, 148, 138, 134, 132, 136, 138, 140, 147, 149, 151, 155, 159, 162, 167, 169, + 168, 169, 165, 157, 151, 145, 136, 127, 115, 113, 112, 113, 118, 129, 140, 146, + 148, 140, 131, 130, 139, 150, 159, 163, 180, 183, 187, 193, 197, 202, 205, 207, + 214, 219, 227, 234, 240, 244, 243, 244, 250, 246, 240, 231, 223, 216, 211, 207, + 201, 193, 178, 161, 143, 130, 121, 117, 134, 149, 169, 187, 200, 210, 213, 212, + 212, 211, 210, 206, 202, 200, 201, 202, 184, 163, 130, 101, 84, 77, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 131, 140, 154, 165, 170, + 170, 169, 169, 163, 159, 155, 149, 148, 155, 167, 176, 182, 182, 182, 183, 183, + 184, 184, 184, 179, 178, 177, 175, 173, 170, 163, 159, 145, 136, 127, 122, 121, + 125, 128, 131, 140, 141, 145, 148, 151, 156, 159, 160, 159, 157, 152, 144, 136, + 127, 120, 113, 100, 102, 107, 115, 123, 132, 140, 146, 149, 141, 130, 123, 125, + 132, 140, 147, 164, 167, 171, 176, 181, 186, 190, 191, 199, 204, 213, 220, 226, + 229, 232, 234, 237, 234, 229, 223, 216, 210, 205, 200, 197, 187, 173, 157, 142, + 126, 110, 101, 116, 128, 148, 168, 183, 194, 199, 199, 203, 203, 199, 194, 190, + 188, 191, 193, 179, 159, 128, 102, 84, 77, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 211, 129, 138, 149, 157, 163, 168, 171, 164, 163, + 159, 155, 151, 156, 167, 176, 179, 179, 179, 179, 180, 180, 180, 180, 176, 176, + 173, 172, 170, 164, 156, 152, 137, 128, 118, 111, 112, 115, 121, 125, 133, 134, + 138, 140, 143, 146, 147, 148, 144, 141, 137, 130, 123, 113, 106, 104, 100, 104, + 113, 123, 132, 140, 144, 147, 149, 145, 136, 122, 114, 114, 123, 133, 146, 148, + 152, 155, 159, 164, 167, 170, 180, 187, 196, 204, 209, 213, 216, 220, 222, 221, + 216, 211, 205, 198, 193, 190, 188, 176, 163, 149, 135, 120, 104, 93, 99, 110, + 126, 148, 167, 179, 185, 190, 193, 191, 189, 184, 181, 178, 179, 182, 169, 152, + 126, 101, 84, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 117, 125, 132, 141, 149, 158, 164, 162, 160, 159, 156, 154, 159, 167, + 172, 173, 173, 173, 174, 174, 174, 174, 174, 173, 172, 170, 168, 164, 159, 153, + 149, 130, 123, 111, 106, 105, 110, 115, 119, 127, 128, 129, 131, 132, 132, 133, + 132, 127, 123, 120, 117, 110, 102, 100, 102, 108, 115, 126, 137, 146, 151, 152, + 152, 153, 150, 141, 126, 109, 102, 109, 116, 127, 127, 128, 131, 135, 139, 142, + 143, 155, 165, 175, 185, 190, 195, 200, 204, 204, 202, 200, 196, 191, 184, 178, + 175, 174, 165, 153, 142, 130, 116, 104, 94, 86, 92, 106, 129, 151, 165, 176, + 183, 181, 179, 178, 173, 169, 166, 167, 169, 159, 145, 122, 98, 83, 77, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 113, 119, + 128, 136, 145, 152, 157, 156, 155, 154, 155, 159, 164, 169, 169, 169, 169, 169, + 169, 168, 168, 168, 170, 169, 166, 164, 160, 156, 150, 147, 128, 120, 109, 103, + 104, 108, 113, 117, 124, 125, 126, 124, 124, 123, 122, 120, 112, 109, 109, 109, + 106, 100, 101, 107, 119, 127, 141, 153, 160, 162, 162, 161, 162, 158, 148, 130, + 112, 101, 100, 102, 106, 106, 108, 109, 113, 116, 119, 122, 127, 138, 152, 164, + 169, 174, 179, 183, 186, 187, 184, 183, 177, 170, 162, 157, 158, 154, 149, 140, + 129, 116, 107, 99, 81, 82, 94, 115, 136, 150, 162, 170, 167, 167, 165, 162, + 158, 155, 155, 155, 151, 140, 118, 96, 82, 77, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 113, 120, 129, 136, 142, 154, + 153, 151, 151, 154, 159, 163, 166, 166, 166, 166, 166, 165, 165, 165, 165, 170, + 167, 163, 161, 158, 155, 150, 147, 129, 121, 111, 104, 105, 110, 115, 119, 124, + 125, 124, 124, 123, 119, 117, 115, 106, 103, 105, 107, 105, 100, 105, 112, 128, + 136, 148, 162, 169, 171, 169, 167, 172, 163, 150, 134, 118, 105, 98, 95, 93, + 93, 93, 96, 99, 104, 107, 109, 106, 119, 135, 147, 154, 158, 163, 166, 176, + 176, 176, 172, 167, 160, 153, 147, 148, 147, 145, 140, 131, 118, 109, 103, 84, + 82, 89, 108, 127, 140, 150, 161, 157, 159, 158, 155, 151, 148, 145, 145, 147, + 135, 115, 95, 82, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 207, 115, 115, 116, 120, 126, 131, 131, 138, 151, + 162, 166, 164, 162, 159, 157, 157, 157, 159, 160, 165, 166, 165, 162, 157, 154, + 151, 152, 132, 130, 119, 107, 105, 110, 114, 115, 117, 119, 120, 117, 112, 107, + 108, 110, 98, 94, 89, 90, 92, 96, 107, 116, 135, 146, 159, 174, 183, 190, + 193, 195, 187, 185, 172, 155, 136, 118, 99, 84, 80, 81, 80, 80, 82, 85, + 89, 92, 94, 100, 109, 120, 128, 134, 138, 138, 137, 142, 148, 147, 141, 134, + 130, 128, 139, 146, 149, 146, 141, 133, 120, 111, 97, 93, 92, 98, 106, 115, + 128, 140, 146, 146, 144, 140, 133, 129, 128, 130, 127, 121, 111, 96, 82, 77, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 207, 111, 110, 110, 114, 116, 121, 132, 148, 160, 164, 162, 160, 157, + 155, 154, 154, 156, 157, 163, 163, 164, 161, 157, 154, 152, 153, 141, 136, 125, + 111, 107, 111, 115, 116, 118, 118, 117, 115, 112, 107, 106, 105, 98, 93, 90, + 93, 95, 103, 115, 125, 141, 149, 163, 176, 184, 189, 193, 195, 193, 190, 180, + 163, 145, 128, 108, 93, 81, 80, 78, 76, 76, 78, 82, 85, 87, 92, 99, + 108, 114, 119, 122, 122, 121, 127, 131, 133, 130, 125, 124, 125, 139, 147, 153, + 151, 147, 138, 127, 115, 101, 95, 91, 93, 101, 110, 120, 131, 140, 141, 140, + 135, 129, 125, 124, 127, 124, 119, 109, 95, 82, 77, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, + 102, 103, 104, 111, 125, 145, 154, 157, 158, 156, 152, 150, 148, 148, 150, 150, + 158, 160, 160, 160, 156, 156, 156, 157, 149, 143, 133, 117, 111, 114, 117, 116, + 118, 117, 115, 113, 110, 107, 101, 98, 96, 93, 92, 96, 103, 112, 127, 140, + 153, 160, 169, 180, 185, 191, 196, 198, 199, 198, 189, 174, 157, 139, 119, 103, + 88, 84, 79, 75, 74, 74, 76, 77, 80, 82, 88, 93, 98, 100, 102, 102, + 102, 107, 112, 116, 116, 118, 121, 125, 142, 151, 158, 160, 155, 147, 134, 121, + 109, 97, 88, 88, 94, 103, 112, 120, 132, 132, 132, 127, 122, 119, 119, 121, + 121, 116, 108, 95, 82, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 134, 105, 121, + 140, 150, 150, 154, 152, 149, 146, 145, 145, 146, 146, 154, 156, 157, 155, 155, + 156, 158, 160, 154, 149, 137, 122, 115, 117, 122, 122, 120, 117, 113, 111, 109, + 105, 98, 91, 97, 92, 94, 102, 112, 123, 139, 153, 166, 172, 179, 186, 191, + 196, 198, 201, 200, 201, 196, 182, 167, 151, 130, 115, 97, 92, 84, 78, 76, + 76, 77, 79, 77, 78, 80, 83, 86, 87, 87, 87, 90, 94, 101, 106, 110, + 117, 126, 133, 147, 157, 167, 167, 163, 153, 138, 124, 113, 100, 88, 84, 88, + 95, 103, 111, 121, 125, 126, 123, 117, 113, 116, 119, 119, 115, 108, 96, 84, + 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 119, 137, 145, 144, 150, 148, + 145, 142, 141, 141, 142, 143, 150, 151, 153, 153, 153, 157, 160, 163, 155, 150, + 138, 126, 119, 122, 126, 127, 124, 120, 114, 110, 107, 103, 95, 89, 96, 95, + 99, 108, 119, 133, 149, 163, 176, 180, 187, 192, 194, 198, 200, 203, 202, 204, + 201, 192, 179, 164, 146, 129, 110, 101, 90, 83, 79, 80, 79, 79, 75, 76, + 77, 78, 79, 80, 81, 81, 84, 89, 96, 102, 109, 118, 130, 140, 155, 164, + 173, 174, 168, 157, 140, 126, 117, 102, 89, 83, 85, 90, 100, 107, 116, 121, + 124, 119, 113, 112, 115, 120, 121, 117, 110, 97, 85, 78, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 119, 135, 144, 144, 144, 142, 140, 137, 137, 137, 139, + 140, 148, 149, 151, 151, 154, 156, 161, 164, 156, 153, 141, 128, 124, 127, 130, + 131, 127, 124, 117, 112, 106, 99, 94, 90, 97, 97, 102, 115, 126, 139, 154, + 167, 179, 182, 189, 191, 194, 195, 198, 199, 202, 205, 204, 198, 190, 179, 162, + 148, 123, 113, 99, 88, 84, 82, 81, 79, 76, 76, 76, 76, 77, 79, 80, + 81, 85, 90, 96, 102, 109, 121, 134, 142, 161, 170, 178, 177, 172, 161, 144, + 132, 119, 108, 95, 87, 85, 86, 96, 105, 112, 117, 121, 118, 112, 111, 116, + 122, 124, 119, 110, 97, 83, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 123, 135, 142, 144, 137, 135, 133, 132, 132, 133, 135, 136, 145, 146, 149, 150, + 152, 156, 160, 166, 161, 156, 145, 131, 126, 129, 133, 133, 132, 128, 123, 113, + 104, 97, 94, 92, 97, 99, 107, 120, 133, 143, 156, 168, 174, 178, 184, 188, + 189, 189, 191, 192, 199, 203, 204, 199, 193, 186, 173, 161, 142, 130, 111, 98, + 91, 87, 84, 81, 78, 77, 77, 78, 80, 84, 87, 90, 91, 96, 101, 106, + 112, 123, 136, 144, 164, 174, 181, 181, 176, 165, 151, 138, 123, 115, 102, 93, + 86, 84, 93, 105, 108, 115, 119, 117, 110, 109, 117, 124, 125, 119, 109, 94, + 80, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 141, 142, 133, + 132, 130, 129, 129, 131, 133, 135, 145, 146, 149, 149, 152, 155, 162, 165, 165, + 160, 147, 133, 128, 131, 134, 133, 135, 133, 125, 114, 103, 94, 94, 95, 99, + 101, 109, 123, 135, 144, 157, 167, 170, 173, 179, 184, 185, 185, 185, 185, 195, + 199, 199, 196, 192, 187, 175, 164, 157, 142, 122, 107, 97, 93, 87, 83, 81, + 80, 80, 81, 86, 91, 95, 97, 97, 101, 107, 112, 116, 126, 137, 145, 165, + 174, 182, 183, 178, 170, 156, 144, 127, 120, 110, 97, 85, 82, 90, 103, 107, + 113, 118, 116, 110, 108, 117, 124, 126, 119, 108, 92, 78, 72, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 138, 134, 130, 132, 130, 129, 128, 128, 130, + 132, 134, 135, 137, 139, 142, 145, 150, 157, 161, 164, 159, 149, 137, 129, 128, + 133, 138, 142, 137, 131, 118, 108, 102, 104, 106, 110, 110, 116, 124, 134, 139, + 148, 157, 159, 160, 163, 164, 168, 169, 171, 171, 183, 181, 180, 180, 180, 178, + 176, 172, 159, 150, 136, 122, 112, 102, 95, 90, 88, 88, 88, 89, 90, 92, + 94, 95, 102, 109, 114, 119, 125, 133, 144, 154, 164, 171, 180, 185, 182, 169, + 155, 144, 135, 125, 112, 98, 85, 79, 84, 92, 105, 116, 124, 123, 118, 119, + 124, 128, 123, 110, 97, 87, 78, 133, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 135, 133, 131, 130, 128, 127, 126, 126, 128, 130, 132, 134, 135, 138, + 140, 144, 150, 156, 162, 165, 160, 150, 137, 128, 127, 133, 138, 144, 142, 136, + 126, 116, 110, 110, 113, 114, 113, 115, 122, 127, 131, 138, 146, 144, 146, 148, + 152, 155, 159, 161, 161, 169, 168, 169, 169, 168, 167, 163, 162, 155, 146, 134, + 122, 112, 104, 96, 92, 89, 90, 90, 92, 94, 96, 98, 99, 102, 108, 114, + 117, 124, 131, 144, 154, 163, 170, 179, 184, 182, 170, 157, 148, 134, 123, 111, + 99, 87, 80, 85, 93, 105, 117, 126, 124, 120, 124, 127, 130, 121, 109, 96, + 86, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 132, 130, + 126, 125, 124, 124, 124, 125, 127, 128, 131, 132, 134, 137, 142, 148, 156, 162, + 167, 162, 151, 138, 128, 126, 133, 139, 150, 148, 145, 137, 128, 121, 119, 122, + 113, 108, 105, 107, 108, 109, 115, 121, 121, 122, 125, 128, 134, 138, 141, 142, + 147, 147, 148, 147, 148, 147, 146, 146, 143, 137, 131, 121, 115, 108, 101, 97, + 93, 93, 94, 96, 98, 101, 103, 105, 102, 106, 111, 116, 122, 132, 144, 154, + 158, 164, 172, 176, 175, 165, 155, 147, 130, 120, 109, 99, 87, 83, 87, 97, + 107, 117, 126, 126, 125, 129, 132, 134, 118, 107, 95, 86, 76, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 128, 125, 125, 124, 124, 124, + 125, 126, 127, 126, 127, 131, 132, 138, 146, 154, 161, 168, 164, 154, 140, 128, + 125, 132, 138, 155, 156, 156, 149, 140, 132, 130, 128, 111, 103, 93, 91, 89, + 88, 92, 96, 96, 96, 98, 103, 108, 111, 115, 117, 123, 124, 125, 126, 124, + 124, 125, 126, 128, 124, 121, 117, 113, 109, 105, 101, 96, 97, 97, 98, 100, + 101, 103, 104, 99, 103, 107, 111, 118, 130, 140, 148, 148, 153, 159, 161, 159, + 154, 146, 140, 123, 116, 106, 96, 88, 86, 91, 100, 113, 121, 129, 131, 131, + 135, 138, 135, 115, 105, 95, 85, 75, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 127, 125, 124, 123, 123, 123, 124, 124, 125, 126, 121, 123, + 125, 128, 134, 142, 151, 158, 169, 166, 157, 143, 129, 125, 131, 137, 159, 163, + 165, 161, 152, 143, 137, 134, 112, 100, 86, 78, 74, 72, 73, 78, 74, 75, + 77, 81, 85, 90, 95, 96, 102, 104, 106, 106, 104, 104, 106, 109, 111, 110, + 107, 108, 107, 107, 103, 100, 102, 101, 101, 100, 100, 101, 102, 102, 96, 99, + 102, 107, 113, 121, 129, 134, 135, 136, 140, 142, 140, 137, 133, 131, 116, 109, + 103, 98, 93, 91, 99, 110, 122, 129, 135, 136, 137, 139, 139, 135, 112, 104, + 95, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 124, + 121, 122, 123, 123, 123, 124, 124, 124, 124, 118, 119, 121, 124, 128, 136, 147, + 154, 168, 168, 161, 146, 131, 125, 129, 135, 158, 165, 173, 172, 166, 156, 147, + 144, 115, 98, 80, 67, 62, 58, 59, 62, 62, 62, 65, 69, 74, 81, 85, + 89, 95, 97, 99, 98, 95, 95, 100, 103, 104, 104, 103, 103, 104, 102, 101, + 98, 102, 102, 101, 99, 99, 99, 99, 99, 96, 97, 98, 101, 103, 107, 109, + 111, 115, 115, 118, 119, 119, 120, 120, 120, 113, 108, 104, 102, 101, 103, 114, + 126, 133, 138, 139, 140, 142, 143, 138, 131, 109, 103, 96, 143, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 121, 118, 118, 119, 120, + 120, 120, 120, 120, 116, 116, 116, 119, 124, 133, 142, 150, 167, 168, 163, 150, + 134, 125, 127, 132, 157, 165, 176, 180, 177, 168, 160, 156, 127, 108, 84, 69, + 59, 55, 54, 57, 57, 58, 62, 67, 74, 83, 90, 94, 102, 106, 107, 106, + 102, 102, 105, 111, 114, 113, 109, 108, 106, 105, 104, 101, 102, 102, 101, 100, + 100, 100, 100, 101, 99, 99, 97, 96, 95, 91, 88, 85, 90, 90, 92, 95, + 98, 103, 107, 109, 114, 110, 110, 111, 113, 118, 130, 143, 143, 145, 146, 143, + 145, 144, 137, 127, 108, 103, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 120, 116, 117, 118, 118, 119, 119, 118, 118, 115, + 115, 115, 117, 121, 129, 139, 146, 166, 169, 165, 152, 135, 125, 127, 131, 154, + 165, 179, 186, 183, 175, 169, 164, 146, 123, 98, 80, 68, 62, 61, 63, 55, + 59, 63, 68, 78, 88, 97, 101, 116, 118, 120, 118, 114, 113, 116, 123, 128, + 125, 120, 116, 115, 113, 108, 107, 101, 100, 100, 100, 100, 101, 102, 103, 103, + 100, 99, 95, 89, 81, 74, 68, 68, 69, 71, 77, 83, 90, 97, 102, 116, + 114, 115, 119, 123, 129, 142, 155, 148, 150, 149, 147, 146, 145, 135, 124, 108, + 103, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 120, 112, 112, 111, 112, 116, 117, 116, 116, 112, 111, 111, 112, 115, 123, + 132, 137, 159, 164, 166, 157, 140, 127, 123, 124, 147, 160, 177, 189, 190, 186, + 183, 182, 162, 159, 147, 126, 107, 92, 79, 69, 71, 65, 64, 66, 77, 93, + 106, 114, 129, 138, 143, 136, 132, 135, 145, 152, 161, 155, 148, 143, 146, 145, + 136, 122, 116, 105, 106, 116, 114, 112, 114, 110, 104, 114, 113, 107, 101, 82, + 62, 59, 51, 55, 60, 67, 76, 87, 96, 103, 118, 129, 137, 139, 145, 155, + 160, 159, 162, 152, 148, 152, 150, 135, 118, 109, 97, 97, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 113, 112, 111, + 112, 113, 116, 116, 114, 108, 109, 109, 109, 112, 118, 126, 133, 155, 161, 165, + 158, 145, 130, 123, 122, 141, 155, 175, 189, 192, 190, 187, 186, 177, 177, 171, + 159, 145, 128, 105, 88, 73, 70, 68, 71, 82, 94, 106, 112, 132, 143, 152, + 150, 149, 158, 174, 183, 181, 171, 160, 161, 169, 173, 162, 145, 128, 113, 118, + 129, 129, 126, 124, 118, 114, 122, 122, 114, 107, 85, 62, 56, 48, 53, 60, + 70, 81, 95, 108, 117, 137, 142, 149, 150, 157, 166, 168, 167, 158, 154, 154, + 158, 154, 140, 123, 113, 108, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 117, 115, 113, 111, 111, 112, 113, 112, 111, + 105, 105, 106, 106, 107, 112, 119, 125, 149, 157, 163, 160, 149, 133, 123, 118, + 134, 149, 171, 187, 195, 195, 192, 193, 192, 192, 189, 184, 177, 165, 142, 123, + 98, 91, 81, 78, 83, 96, 107, 113, 135, 150, 162, 163, 164, 175, 196, 211, + 202, 188, 173, 176, 193, 201, 187, 166, 137, 122, 127, 142, 144, 140, 133, 124, + 123, 131, 128, 121, 114, 89, 61, 51, 51, 58, 68, 81, 94, 112, 126, 134, + 159, 161, 164, 167, 173, 179, 177, 172, 151, 150, 152, 155, 149, 134, 120, 111, + 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 209, 116, 114, 111, 109, 109, 110, 108, 107, 102, 103, 103, 103, 103, + 107, 113, 117, 141, 149, 161, 163, 154, 138, 124, 114, 127, 144, 166, 185, 197, + 198, 197, 195, 204, 205, 203, 198, 194, 190, 178, 168, 139, 125, 107, 92, 89, + 97, 109, 115, 136, 151, 162, 162, 164, 176, 197, 212, 209, 196, 181, 183, 199, + 208, 194, 175, 144, 125, 127, 145, 151, 146, 141, 133, 131, 138, 133, 125, 116, + 92, 62, 49, 66, 73, 85, 100, 117, 133, 148, 156, 175, 175, 178, 183, 187, + 186, 177, 168, 147, 147, 150, 151, 148, 140, 133, 129, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 115, + 111, 108, 107, 105, 104, 102, 100, 100, 100, 101, 102, 104, 109, 112, 131, 141, + 155, 164, 160, 145, 125, 113, 124, 138, 161, 181, 193, 198, 198, 195, 212, 219, + 222, 217, 208, 205, 200, 196, 175, 162, 142, 124, 114, 111, 112, 114, 130, 144, + 157, 159, 160, 173, 193, 207, 206, 198, 189, 189, 197, 203, 194, 178, 150, 129, + 129, 148, 153, 150, 147, 143, 141, 147, 139, 128, 117, 94, 66, 58, 81, 91, + 106, 124, 140, 157, 170, 178, 184, 185, 189, 195, 197, 188, 171, 159, 147, 150, + 154, 160, 167, 176, 183, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 117, 111, 107, 103, 102, 99, + 99, 98, 98, 98, 97, 99, 102, 107, 110, 122, 134, 150, 163, 163, 149, 129, + 114, 119, 132, 154, 176, 190, 197, 197, 196, 209, 222, 234, 232, 222, 211, 202, + 195, 189, 184, 173, 162, 151, 137, 126, 119, 129, 141, 152, 155, 159, 172, 188, + 198, 196, 193, 189, 188, 193, 197, 189, 179, 156, 133, 134, 151, 155, 149, 149, + 147, 150, 155, 146, 133, 121, 101, 83, 81, 100, 112, 130, 150, 166, 181, 190, + 196, 192, 192, 197, 203, 199, 182, 163, 151, 142, 149, 159, 174, 198, 222, 244, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 122, 118, 110, 105, 102, 99, 97, 96, 93, 93, 95, 95, + 97, 99, 104, 107, 116, 127, 146, 162, 166, 154, 132, 116, 114, 126, 146, 168, + 186, 195, 198, 197, 204, 217, 232, 234, 228, 216, 202, 192, 192, 190, 188, 183, + 175, 165, 154, 145, 142, 149, 155, 154, 156, 162, 169, 173, 172, 171, 170, 173, + 182, 186, 179, 168, 153, 132, 133, 152, 151, 141, 138, 139, 145, 153, 145, 132, + 124, 113, 107, 116, 130, 141, 159, 177, 189, 198, 203, 205, 195, 195, 198, 201, + 191, 171, 154, 147, 139, 150, 168, 190, 220, 250, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 124, + 118, 110, 104, 100, 98, 96, 95, 91, 91, 94, 94, 94, 97, 101, 106, 113, + 124, 142, 161, 166, 156, 134, 116, 109, 121, 141, 164, 183, 195, 200, 199, 204, + 215, 226, 231, 230, 223, 211, 197, 195, 190, 188, 185, 184, 180, 177, 174, 155, + 160, 159, 153, 148, 147, 148, 146, 148, 147, 150, 156, 168, 176, 168, 155, 146, + 127, 130, 148, 144, 128, 124, 126, 134, 143, 138, 129, 126, 123, 126, 141, 156, + 167, 183, 196, 204, 207, 206, 207, 195, 193, 196, 196, 183, 162, 146, 141, 146, + 160, 178, 203, 233, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 120, 116, 107, 100, 98, + 96, 92, 93, 91, 89, 88, 89, 93, 97, 100, 106, 117, 133, 147, 159, 156, + 140, 121, 110, 113, 127, 152, 177, 190, 196, 201, 205, 210, 218, 229, 232, 227, + 212, 198, 201, 193, 186, 183, 181, 180, 184, 190, 194, 191, 185, 180, 172, 162, + 150, 143, 130, 127, 128, 136, 147, 152, 150, 145, 124, 124, 127, 129, 130, 128, + 124, 120, 125, 129, 134, 139, 142, 150, 160, 167, 176, 189, 203, 210, 211, 209, + 201, 193, 201, 197, 192, 179, 161, 143, 135, 137, 144, 162, 181, 213, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 121, 118, 109, 102, 98, 93, 90, 92, 89, 88, + 87, 89, 92, 96, 100, 102, 113, 129, 142, 154, 153, 138, 121, 108, 110, 122, + 146, 171, 186, 194, 199, 202, 206, 213, 223, 229, 226, 214, 206, 199, 191, 183, + 180, 179, 178, 182, 189, 196, 196, 198, 199, 193, 180, 166, 153, 144, 138, 133, + 133, 138, 140, 134, 129, 116, 115, 116, 120, 123, 123, 122, 120, 124, 130, 139, + 146, 152, 158, 165, 172, 178, 190, 202, 206, 207, 204, 198, 190, 197, 191, 183, + 169, 151, 135, 131, 134, 148, 170, 196, 235, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 149, 119, 112, 104, 100, 94, 86, 89, 89, 86, 86, 87, 91, 94, 96, + 97, 108, 122, 135, 146, 147, 137, 123, 107, 106, 115, 138, 163, 180, 191, 197, + 200, 202, 209, 217, 223, 223, 217, 211, 199, 191, 182, 179, 178, 178, 182, 190, + 197, 199, 202, 206, 205, 197, 188, 180, 175, 167, 156, 149, 147, 142, 135, 128, + 117, 117, 118, 120, 125, 128, 128, 127, 132, 141, 151, 159, 162, 167, 170, 174, + 184, 194, 202, 204, 203, 201, 195, 189, 189, 182, 171, 156, 140, 129, 131, 138, + 159, 188, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 118, 114, 109, + 103, 95, 88, 89, 88, 85, 83, 86, 88, 92, 94, 93, 102, 114, 128, 139, + 143, 136, 126, 108, 104, 110, 130, 153, 173, 188, 197, 198, 199, 203, 211, 216, + 219, 216, 214, 201, 192, 184, 179, 176, 175, 181, 189, 196, 194, 194, 194, 198, + 200, 202, 204, 201, 194, 185, 175, 170, 162, 152, 144, 137, 135, 134, 137, 142, + 145, 147, 147, 152, 158, 165, 168, 169, 169, 172, 174, 189, 197, 202, 201, 198, + 196, 192, 187, 183, 172, 158, 142, 130, 127, 138, 152, 179, 225, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 115, 115, 112, 108, 101, 94, 89, 88, + 85, 83, 83, 86, 88, 91, 91, 100, 110, 119, 131, 139, 137, 131, 112, 106, + 107, 124, 146, 166, 184, 196, 199, 200, 203, 207, 212, 215, 215, 214, 202, 191, + 182, 176, 172, 170, 174, 181, 187, 186, 183, 183, 186, 192, 199, 205, 202, 198, + 193, 190, 183, 177, 167, 160, 156, 156, 154, 155, 158, 162, 164, 164, 170, 171, + 174, 173, 170, 170, 174, 178, 192, 198, 202, 199, 196, 194, 191, 187, 179, 166, + 146, 129, 121, 126, 146, 165, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 207, 114, 114, 112, 106, 99, 92, 89, 86, 83, 82, 84, 86, + 88, 90, 97, 106, 114, 124, 134, 137, 134, 119, 110, 105, 118, 137, 159, 180, + 193, 197, 199, 202, 206, 211, 213, 212, 212, 201, 192, 182, 174, 168, 163, 162, + 167, 175, 177, 179, 179, 179, 180, 182, 184, 187, 186, 187, 189, 186, 180, 173, + 166, 167, 164, 162, 163, 167, 169, 171, 171, 175, 174, 175, 173, 171, 173, 178, + 184, 190, 196, 199, 196, 193, 192, 189, 185, 174, 158, 137, 121, 117, 132, 161, + 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, + 114, 114, 109, 103, 94, 93, 87, 83, 81, 82, 83, 86, 90, 95, 101, 108, + 117, 130, 135, 135, 125, 112, 104, 111, 129, 152, 173, 188, 192, 197, 202, 208, + 210, 213, 212, 212, 206, 196, 186, 177, 168, 160, 156, 158, 161, 165, 172, 174, + 172, 169, 170, 170, 173, 174, 175, 178, 177, 174, 170, 166, 167, 165, 164, 166, + 171, 173, 174, 173, 173, 175, 174, 173, 171, 174, 179, 185, 189, 195, 198, 195, + 193, 192, 190, 186, 166, 150, 130, 118, 123, 149, 189, 232, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 114, 109, 104, 96, + 94, 88, 84, 82, 81, 82, 83, 89, 94, 99, 104, 115, 126, 133, 135, 127, + 113, 103, 108, 125, 147, 170, 185, 189, 195, 203, 208, 211, 214, 213, 213, 210, + 201, 191, 182, 171, 160, 155, 156, 152, 156, 162, 163, 163, 163, 166, 168, 164, + 164, 164, 164, 164, 163, 162, 160, 166, 165, 166, 169, 174, 176, 176, 175, 173, + 174, 176, 174, 172, 172, 177, 181, 186, 192, 196, 194, 192, 192, 190, 186, 157, + 142, 126, 119, 132, 165, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 208, 114, 109, 107, 104, 102, 94, 88, 83, 80, + 81, 80, 91, 95, 98, 104, 111, 120, 132, 139, 133, 122, 110, 107, 117, 138, + 158, 172, 185, 191, 197, 201, 204, 208, 210, 211, 201, 201, 198, 190, 177, 166, + 158, 156, 153, 154, 156, 157, 158, 159, 159, 159, 158, 155, 154, 152, 151, 149, + 149, 149, 146, 151, 155, 159, 159, 160, 163, 167, 163, 165, 164, 166, 169, 175, + 178, 181, 191, 194, 196, 196, 196, 195, 186, 175, 154, 136, 125, 138, 174, 211, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 112, 109, 108, 106, 102, 95, 89, 84, 82, 82, 81, 91, 93, 97, + 102, 110, 119, 131, 137, 135, 124, 111, 106, 114, 133, 155, 168, 180, 184, 191, + 196, 200, 202, 206, 208, 201, 200, 195, 187, 177, 168, 161, 157, 155, 155, 155, + 154, 154, 154, 154, 154, 153, 152, 151, 148, 147, 146, 146, 144, 141, 146, 150, + 154, 155, 158, 160, 163, 160, 161, 161, 165, 168, 173, 177, 181, 191, 194, 196, + 195, 196, 192, 181, 168, 131, 127, 137, 170, 211, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 108, 107, + 107, 104, 97, 90, 87, 84, 83, 85, 91, 93, 97, 101, 108, 116, 126, 134, + 137, 125, 112, 103, 108, 126, 147, 161, 171, 176, 183, 190, 194, 197, 203, 205, + 201, 198, 192, 187, 179, 172, 165, 160, 159, 158, 155, 153, 151, 151, 151, 151, + 150, 149, 148, 145, 143, 140, 140, 139, 140, 143, 146, 151, 152, 154, 157, 161, + 156, 156, 159, 162, 165, 172, 177, 180, 193, 195, 198, 196, 194, 187, 174, 160, + 137, 139, 154, 184, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 108, 111, 106, 100, 94, 89, + 87, 87, 86, 91, 92, 95, 99, 106, 113, 123, 129, 137, 127, 113, 102, 101, + 117, 137, 153, 163, 168, 176, 183, 189, 194, 200, 205, 202, 198, 192, 187, 184, + 180, 173, 166, 165, 163, 159, 156, 154, 154, 155, 156, 157, 155, 150, 147, 144, + 142, 138, 138, 143, 145, 148, 151, 154, 156, 158, 160, 155, 156, 157, 161, 166, + 172, 179, 182, 193, 198, 199, 196, 193, 183, 167, 152, 132, 152, 187, 236, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 205, 108, 112, 107, 102, 96, 91, 88, 88, 88, 91, 93, + 94, 98, 102, 110, 118, 124, 135, 127, 114, 102, 99, 108, 127, 143, 155, 161, + 169, 178, 185, 193, 201, 205, 204, 200, 195, 192, 191, 187, 181, 176, 172, 170, + 167, 165, 164, 164, 165, 167, 169, 167, 163, 159, 154, 151, 148, 147, 153, 153, + 154, 156, 157, 160, 161, 162, 157, 159, 160, 164, 169, 176, 181, 184, 194, 198, + 200, 196, 190, 178, 159, 142, 164, 185, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 206, 113, 108, 102, 96, 91, 89, 89, 90, 91, 92, 93, 95, 99, 107, 114, + 120, 129, 125, 117, 104, 97, 103, 118, 132, 149, 154, 163, 172, 180, 191, 198, + 204, 205, 205, 202, 202, 201, 197, 192, 189, 180, 179, 177, 176, 175, 176, 177, + 177, 184, 182, 180, 176, 171, 170, 167, 167, 168, 166, 163, 163, 165, 167, 166, + 165, 164, 164, 167, 169, 175, 180, 187, 190, 196, 200, 201, 196, 186, 169, 146, + 128, 168, 193, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 108, 104, 96, + 92, 89, 90, 90, 90, 92, 93, 94, 97, 103, 111, 116, 121, 123, 118, 107, + 98, 98, 110, 122, 141, 145, 154, 163, 175, 185, 194, 202, 206, 207, 211, 212, + 209, 204, 200, 198, 190, 190, 189, 188, 188, 187, 186, 186, 197, 195, 194, 193, + 193, 191, 192, 192, 186, 182, 179, 177, 177, 177, 174, 172, 171, 171, 174, 176, + 181, 187, 192, 195, 200, 202, 202, 193, 180, 159, 131, 110, 98, 173, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 114, 110, 104, 96, 92, 89, 90, 90, 90, + 90, 92, 92, 96, 102, 110, 115, 117, 121, 119, 110, 98, 97, 107, 117, 133, + 140, 148, 159, 170, 180, 191, 197, 206, 212, 218, 218, 214, 209, 206, 205, 202, + 202, 201, 201, 199, 197, 195, 194, 204, 204, 202, 204, 205, 207, 207, 208, 201, + 197, 192, 188, 188, 188, 184, 182, 176, 177, 177, 180, 184, 191, 195, 199, 202, + 203, 202, 192, 174, 150, 120, 97, 87, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 206, 109, 106, 105, 100, 96, 91, 90, 91, 89, 89, 88, 91, 94, + 99, 103, 110, 113, 117, 112, 103, 96, 96, 98, 115, 121, 129, 140, 152, 170, + 188, 200, 205, 210, 217, 222, 224, 222, 221, 221, 213, 213, 211, 211, 209, 209, + 207, 209, 208, 209, 211, 214, 218, 222, 225, 227, 218, 213, 208, 203, 197, 191, + 186, 182, 181, 180, 180, 184, 192, 199, 203, 205, 202, 201, 196, 181, 160, 134, + 103, 80, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 105, + 104, 100, 95, 92, 90, 90, 89, 87, 85, 87, 92, 96, 98, 104, 109, 112, + 109, 102, 96, 92, 93, 109, 115, 123, 134, 147, 164, 180, 192, 201, 206, 215, + 222, 227, 230, 231, 234, 227, 226, 223, 222, 221, 223, 225, 227, 232, 232, 232, + 232, 233, 234, 235, 236, 228, 224, 218, 213, 209, 204, 198, 195, 194, 193, 193, + 196, 201, 207, 210, 211, 197, 197, 188, 168, 144, 117, 86, 128, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 103, 101, 99, 95, 92, 90, + 88, 87, 84, 83, 84, 87, 92, 94, 99, 101, 104, 103, 100, 96, 91, 88, + 101, 106, 116, 124, 137, 153, 170, 181, 193, 199, 208, 216, 222, 229, 234, 239, + 237, 235, 232, 232, 232, 236, 240, 242, 250, 249, 248, 246, 245, 245, 245, 245, + 242, 239, 235, 230, 226, 223, 218, 215, 211, 210, 208, 208, 212, 213, 214, 212, + 199, 196, 183, 156, 126, 96, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 203, 99, 97, 95, 92, 91, 88, 87, 84, 82, 81, + 83, 86, 88, 95, 95, 96, 97, 98, 96, 88, 83, 94, 98, 106, 115, 127, + 139, 156, 169, 186, 190, 198, 204, 211, 217, 224, 229, 236, 235, 234, 233, 236, + 238, 241, 243, 247, 247, 247, 246, 247, 247, 248, 249, 252, 249, 245, 241, 240, + 238, 234, 231, 224, 220, 218, 217, 217, 215, 212, 211, 199, 193, 173, 139, 104, + 75, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 202, 96, 95, 93, 91, 90, 88, 84, 81, 80, 82, 84, 86, 91, 90, + 89, 93, 95, 93, 87, 82, 90, 94, 100, 107, 115, 129, 144, 153, 173, 176, + 184, 191, 197, 204, 210, 215, 228, 230, 231, 233, 233, 235, 234, 235, 238, 237, + 237, 238, 238, 240, 241, 242, 251, 248, 244, 244, 242, 242, 239, 236, 229, 227, + 225, 222, 218, 213, 208, 204, 189, 178, 152, 116, 82, 58, 113, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 95, 94, + 93, 91, 90, 85, 81, 80, 80, 81, 82, 87, 86, 84, 87, 89, 88, 85, + 81, 85, 89, 93, 99, 105, 116, 130, 140, 157, 162, 168, 177, 184, 192, 200, + 205, 219, 221, 223, 226, 227, 227, 225, 226, 233, 233, 232, 231, 230, 230, 231, + 231, 237, 235, 234, 234, 235, 235, 232, 231, 228, 226, 222, 219, 215, 208, 200, + 193, 177, 161, 132, 93, 65, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 94, 93, 91, 90, 85, 80, + 77, 77, 77, 79, 83, 82, 81, 82, 82, 81, 80, 79, 81, 84, 88, 92, + 97, 107, 118, 128, 142, 148, 156, 166, 173, 181, 188, 192, 202, 203, 206, 209, + 212, 213, 215, 215, 221, 220, 219, 218, 217, 216, 216, 217, 222, 219, 218, 219, + 222, 222, 221, 220, 220, 218, 214, 211, 204, 197, 188, 181, 163, 144, 111, 75, + 52, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 202, 94, 93, 93, 89, 84, 79, 76, 75, 76, 76, 80, + 80, 79, 78, 78, 76, 78, 77, 80, 82, 85, 87, 92, 100, 111, 120, 134, + 139, 148, 156, 164, 170, 176, 179, 187, 189, 190, 193, 196, 201, 204, 206, 207, + 207, 206, 206, 205, 206, 207, 207, 209, 208, 208, 209, 212, 213, 212, 211, 211, + 208, 205, 202, 196, 188, 177, 171, 148, 127, 91, 58, 41, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 201, 94, 85, 85, 82, 80, 79, 78, 77, 77, 76, 76, 76, 76, 76, 76, + 76, 76, 79, 80, 81, 83, 89, 96, 101, 104, 120, 125, 137, 146, 153, 156, + 156, 156, 169, 171, 172, 176, 180, 184, 188, 189, 186, 186, 189, 190, 192, 194, + 194, 194, 194, 193, 193, 193, 195, 194, 192, 190, 190, 188, 187, 186, 184, 175, + 162, 154, 124, 99, 66, 47, 39, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 83, 83, 83, + 81, 80, 78, 78, 75, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 80, + 83, 88, 94, 98, 100, 112, 119, 128, 138, 147, 149, 149, 149, 157, 157, 160, + 163, 168, 171, 176, 177, 175, 176, 178, 179, 180, 183, 183, 183, 185, 184, 183, + 183, 185, 186, 185, 183, 181, 180, 179, 178, 175, 165, 153, 144, 110, 85, 57, + 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 84, 84, 82, 81, 80, 79, 76, 76, + 74, 74, 74, 74, 74, 74, 74, 74, 73, 75, 76, 81, 85, 89, 91, 92, + 102, 108, 117, 127, 133, 135, 136, 136, 138, 140, 142, 145, 147, 152, 155, 158, + 160, 160, 161, 162, 164, 165, 165, 165, 169, 167, 166, 166, 168, 170, 171, 171, + 168, 167, 165, 163, 159, 150, 136, 126, 87, 67, 48, 111, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 83, 83, 81, 80, 77, 77, 75, 73, 73, 73, 73, 73, + 73, 73, 73, 68, 72, 74, 77, 81, 83, 84, 85, 93, 98, 105, 114, 120, + 122, 123, 121, 121, 121, 123, 125, 129, 132, 136, 137, 145, 145, 146, 146, 147, + 147, 149, 149, 154, 151, 149, 149, 152, 156, 157, 158, 153, 151, 151, 148, 144, + 133, 117, 107, 68, 54, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 81, 80, 78, 76, 75, 75, 71, 71, 71, 71, 71, 71, 71, 71, 67, 68, + 70, 72, 75, 76, 76, 78, 84, 89, 96, 102, 107, 109, 109, 107, 106, 107, + 109, 111, 114, 116, 118, 121, 129, 131, 131, 133, 133, 134, 134, 137, 137, 135, + 133, 133, 137, 140, 142, 143, 139, 138, 136, 134, 128, 114, 99, 86, 54, 46, + 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 75, 75, 72, + 72, 70, 70, 70, 70, 70, 70, 70, 70, 67, 68, 68, 69, 70, 71, 72, + 72, 80, 83, 88, 93, 96, 97, 96, 95, 94, 96, 97, 99, 100, 102, 105, + 107, 113, 114, 116, 117, 119, 121, 121, 122, 123, 121, 119, 120, 123, 126, 127, + 127, 124, 122, 120, 117, 110, 95, 78, 66, 46, 113, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 195, 71, 71, 71, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 67, 66, 66, 65, 66, 68, 69, 76, 78, 82, 84, + 87, 86, 86, 85, 85, 86, 86, 88, 90, 92, 94, 95, 97, 99, 100, 102, + 104, 107, 109, 109, 109, 108, 108, 109, 112, 113, 113, 112, 109, 108, 104, 100, + 92, 78, 60, 46, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 70, 70, 68, 68, 68, 68, 68, 68, 68, 68, 69, + 68, 64, 63, 64, 65, 67, 69, 73, 75, 79, 80, 81, 80, 79, 78, 79, + 80, 80, 81, 83, 85, 88, 88, 86, 87, 89, 91, 95, 98, 99, 100, 100, + 100, 100, 102, 104, 105, 104, 102, 99, 98, 94, 91, 82, 67, 116, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 195, 69, 69, 69, 69, 69, 69, 69, 69, 64, 64, 65, 65, 65, 64, + 63, 63, 69, 69, 69, 69, 69, 69, 69, 69, 76, 75, 75, 75, 74, 73, + 73, 73, 77, 77, 77, 77, 78, 79, 81, 82, 84, 85, 87, 89, 90, 91, + 90, 89, 92, 87, 78, 68, 52, 39, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 111, + 69, 69, 69, 69, 69, 63, 64, 65, 65, 65, 64, 64, 63, 68, 68, 68, + 68, 68, 68, 68, 68, 71, 71, 71, 70, 70, 70, 69, 69, 71, 70, 70, + 70, 71, 72, 73, 74, 78, 80, 82, 83, 83, 84, 86, 88, 88, 78, 65, + 55, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 69, 69, 69, + 63, 64, 65, 65, 65, 65, 64, 64, 68, 68, 68, 68, 68, 68, 68, 68, + 67, 66, 66, 66, 66, 65, 65, 65, 66, 65, 65, 65, 65, 65, 66, 67, + 71, 73, 75, 74, 74, 77, 83, 89, 87, 71, 53, 113, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 65, 66, 67, 67, 68, + 68, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 62, 62, 61, 61, 61, + 61, 61, 61, 63, 63, 62, 62, 62, 62, 63, 64, 67, 68, 69, 68, 68, + 73, 83, 92, 92, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 68, 68, 68, 68, 68, 67, 67, + 67, 67, 67, 67, 67, 67, 60, 60, 60, 60, 60, 61, 61, 61, 63, 62, + 62, 62, 62, 63, 64, 64, 65, 65, 65, 64, 130, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 68, 68, 68, 68, 68, + 68, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 126, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 182, + 160, 162, 164, 167, 161, 161, 160, 161, 162, 164, 168, 169, 173, 172, 172, 170, + 168, 164, 160, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 223, 160, 158, 149, 144, 150, 150, 149, 147, 144, 144, 147, 150, 146, + 144, 142, 143, 145, 150, 155, 159, 161, 156, 154, 158, 162, 156, 141, 127, 121, + 114, 101, 86, 82, 93, 114, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 138, 139, 141, 136, + 126, 117, 112, 112, 110, 103, 98, 95, 96, 99, 101, 99, 96, 96, 98, 104, + 112, 116, 136, 128, 125, 134, 144, 137, 112, 88, 67, 70, 71, 63, 54, 52, + 59, 67, 83, 86, 97, 114, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 212, 108, 99, 106, 102, 97, 93, 89, 84, 80, 76, 65, 69, 74, + 78, 83, 83, 73, 61, 61, 70, 75, 69, 62, 59, 56, 50, 70, 66, 63, + 65, 70, 71, 64, 57, 50, 49, 54, 58, 63, 61, 52, 44, 45, 47, 50, + 62, 86, 109, 110, 98, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 133, 117, 99, 84, 75, + 82, 80, 76, 74, 72, 69, 66, 63, 57, 60, 62, 63, 66, 68, 63, 55, + 53, 58, 59, 57, 57, 57, 52, 44, 45, 41, 40, 43, 49, 49, 43, 37, + 44, 45, 48, 56, 63, 63, 57, 52, 43, 45, 46, 50, 63, 78, 83, 81, + 73, 74, 86, 108, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 217, 133, 121, 106, 93, 83, 76, 73, 71, 68, 65, 63, 61, + 59, 55, 53, 56, 58, 57, 54, 54, 57, 57, 54, 51, 50, 50, 49, 51, + 52, 47, 39, 34, 31, 30, 34, 39, 40, 34, 28, 35, 37, 42, 51, 61, + 67, 65, 62, 51, 48, 47, 49, 50, 54, 65, 75, 75, 65, 62, 75, 98, + 119, 134, 143, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 124, 113, 108, + 97, 88, 81, 81, 82, 85, 80, 77, 73, 68, 64, 61, 56, 52, 56, 59, + 58, 53, 50, 52, 53, 52, 54, 52, 49, 47, 47, 46, 43, 39, 41, 39, + 39, 42, 45, 44, 38, 33, 30, 31, 37, 46, 57, 65, 68, 70, 59, 52, + 49, 52, 51, 48, 59, 73, 75, 63, 53, 58, 74, 95, 118, 133, 150, 136, + 111, 87, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 113, 113, 111, 103, 96, 88, 79, 76, 75, 77, + 79, 86, 82, 76, 72, 67, 63, 57, 54, 54, 59, 60, 55, 52, 52, 51, + 48, 51, 50, 49, 46, 42, 40, 42, 45, 46, 46, 46, 48, 49, 45, 39, + 33, 31, 32, 35, 41, 51, 61, 68, 72, 61, 51, 47, 50, 49, 46, 49, + 58, 65, 58, 52, 51, 54, 66, 87, 105, 135, 146, 142, 117, 90, 78, 73, + 69, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 205, 105, 100, 97, 90, 86, 81, 73, 69, 67, 67, 68, 71, 69, 65, 61, + 58, 56, 51, 48, 52, 57, 60, 59, 59, 59, 55, 49, 44, 43, 42, 41, + 37, 34, 41, 49, 47, 48, 50, 50, 49, 45, 37, 31, 32, 32, 33, 37, + 45, 55, 65, 71, 67, 57, 51, 49, 49, 46, 44, 45, 51, 50, 50, 46, + 42, 42, 55, 71, 103, 109, 129, 145, 122, 79, 65, 80, 69, 133, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 99, 96, 90, 84, 78, + 75, 70, 65, 62, 61, 60, 62, 56, 54, 51, 48, 47, 45, 42, 39, 45, + 49, 53, 56, 61, 64, 59, 51, 44, 37, 34, 34, 33, 32, 38, 45, 47, + 49, 51, 52, 50, 45, 39, 34, 34, 32, 32, 33, 39, 50, 62, 69, 71, + 68, 60, 51, 48, 51, 49, 47, 47, 46, 47, 45, 39, 34, 39, 48, 52, + 82, 104, 104, 109, 113, 92, 58, 73, 55, 60, 154, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 98, 98, 98, 94, 86, 79, 77, 74, 67, 61, 57, 55, + 54, 54, 51, 48, 45, 43, 42, 39, 37, 34, 35, 38, 41, 47, 55, 61, + 57, 49, 51, 39, 29, 31, 33, 32, 35, 39, 43, 45, 49, 50, 49, 45, + 39, 34, 34, 32, 31, 31, 38, 48, 60, 69, 69, 73, 66, 51, 46, 52, + 55, 52, 51, 48, 47, 47, 43, 38, 38, 42, 47, 48, 65, 94, 109, 100, + 86, 80, 66, 55, 48, 64, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 111, 110, + 103, 91, 81, 73, 71, 65, 63, 59, 55, 53, 52, 52, 53, 48, 49, 49, + 48, 46, 42, 38, 35, 36, 35, 35, 38, 43, 47, 48, 48, 43, 42, 42, + 40, 38, 34, 31, 30, 49, 49, 47, 43, 40, 42, 47, 52, 38, 29, 26, + 31, 33, 34, 46, 62, 72, 67, 58, 49, 44, 44, 46, 49, 59, 63, 60, + 46, 35, 33, 35, 33, 45, 47, 50, 56, 74, 90, 93, 87, 65, 58, 52, + 55, 68, 92, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 206, 108, 105, 100, 90, 77, 67, 60, 56, + 54, 54, 53, 52, 50, 48, 47, 46, 46, 46, 47, 47, 46, 46, 45, 44, + 42, 40, 38, 39, 41, 43, 44, 43, 42, 42, 40, 38, 37, 35, 33, 32, + 37, 43, 48, 50, 48, 44, 41, 39, 42, 34, 30, 32, 33, 30, 38, 52, + 69, 69, 64, 55, 44, 40, 43, 51, 56, 61, 61, 49, 39, 35, 34, 31, + 33, 38, 42, 44, 54, 68, 77, 77, 72, 65, 57, 54, 57, 71, 95, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 205, 101, 97, 90, 81, 70, 62, 54, 47, 44, 42, 44, 48, 49, 49, + 46, 43, 42, 41, 40, 40, 40, 41, 44, 47, 49, 51, 48, 45, 43, 42, + 42, 41, 40, 41, 41, 40, 39, 37, 36, 35, 35, 33, 39, 48, 52, 51, + 45, 39, 35, 44, 37, 33, 35, 33, 29, 34, 44, 60, 68, 72, 62, 48, + 39, 42, 49, 52, 57, 60, 53, 44, 38, 33, 28, 29, 38, 42, 41, 42, + 51, 64, 72, 67, 62, 55, 51, 50, 58, 76, 94, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 97, 92, 80, 71, + 60, 52, 49, 46, 44, 41, 40, 42, 45, 49, 50, 48, 45, 44, 39, 37, + 35, 33, 35, 38, 42, 45, 52, 51, 51, 50, 49, 46, 41, 38, 39, 40, + 41, 42, 42, 40, 38, 37, 41, 44, 47, 49, 50, 49, 48, 48, 43, 38, + 38, 39, 37, 33, 36, 42, 50, 61, 69, 68, 56, 46, 43, 46, 48, 53, + 59, 57, 50, 41, 33, 28, 32, 37, 41, 41, 40, 46, 56, 65, 61, 58, + 54, 51, 49, 54, 70, 87, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 202, 87, 78, 73, 62, 54, 45, 39, 39, 40, 40, + 38, 40, 41, 44, 45, 47, 47, 46, 46, 41, 39, 35, 31, 31, 32, 35, + 38, 49, 51, 53, 57, 57, 53, 46, 40, 38, 40, 43, 45, 46, 45, 43, + 41, 46, 46, 47, 49, 52, 54, 56, 56, 46, 44, 44, 44, 41, 37, 38, + 42, 42, 50, 61, 67, 66, 58, 48, 42, 44, 49, 56, 59, 55, 45, 36, + 30, 32, 32, 34, 37, 40, 42, 46, 49, 65, 63, 58, 52, 45, 46, 60, + 76, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, + 77, 68, 58, 53, 49, 45, 38, 34, 34, 33, 34, 33, 39, 38, 38, 39, + 39, 40, 41, 42, 44, 41, 38, 35, 33, 33, 33, 34, 41, 44, 50, 56, + 57, 54, 47, 42, 37, 40, 42, 44, 46, 46, 47, 47, 45, 47, 50, 54, + 58, 58, 55, 52, 52, 53, 51, 48, 43, 39, 39, 39, 39, 43, 51, 62, + 68, 65, 54, 44, 42, 44, 52, 59, 57, 48, 39, 35, 34, 30, 30, 36, + 42, 43, 43, 44, 58, 56, 55, 51, 43, 42, 54, 69, 79, 89, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 82, 71, 61, 53, 47, 44, 42, + 42, 41, 38, 34, 33, 34, 36, 36, 36, 35, 34, 34, 34, 35, 35, 37, + 37, 37, 37, 36, 34, 33, 32, 35, 37, 42, 47, 50, 50, 46, 42, 40, + 39, 37, 36, 39, 44, 50, 53, 50, 51, 53, 56, 58, 57, 52, 47, 53, + 53, 52, 49, 43, 42, 41, 42, 41, 41, 44, 53, 62, 64, 57, 51, 41, + 41, 49, 57, 59, 50, 43, 41, 38, 32, 30, 36, 42, 42, 44, 48, 43, + 47, 50, 49, 43, 41, 51, 65, 67, 79, 145, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 197, 72, 62, 53, 47, 44, 43, 38, 41, 43, 42, 39, 39, + 40, 44, 34, 34, 35, 34, 34, 32, 30, 30, 29, 31, 33, 35, 36, 34, + 33, 31, 31, 32, 34, 38, 42, 45, 44, 42, 43, 38, 33, 29, 33, 41, + 51, 57, 62, 58, 55, 55, 56, 56, 53, 50, 48, 50, 51, 47, 45, 45, + 46, 45, 44, 42, 42, 48, 54, 60, 59, 57, 41, 39, 46, 56, 58, 50, + 45, 45, 35, 30, 29, 33, 36, 36, 42, 51, 41, 47, 53, 54, 44, 37, + 43, 54, 65, 77, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 78, 62, + 50, 47, 48, 50, 51, 45, 44, 43, 40, 37, 34, 32, 31, 33, 33, 33, + 32, 32, 32, 31, 31, 27, 27, 27, 27, 27, 28, 28, 28, 31, 33, 34, + 35, 36, 37, 38, 39, 36, 38, 39, 36, 33, 34, 40, 46, 64, 67, 68, + 61, 52, 47, 50, 56, 50, 49, 47, 45, 44, 45, 46, 46, 45, 45, 46, + 47, 49, 50, 49, 49, 47, 41, 39, 44, 53, 56, 50, 44, 36, 35, 32, + 30, 30, 34, 37, 40, 42, 42, 45, 46, 43, 41, 46, 54, 60, 69, 78, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 201, 89, 77, 62, 50, 46, 48, 49, 50, + 45, 44, 41, 39, 36, 34, 31, 30, 29, 29, 29, 28, 28, 27, 27, 26, + 24, 25, 25, 25, 26, 26, 27, 27, 29, 29, 30, 33, 34, 36, 37, 37, + 35, 38, 40, 38, 34, 35, 39, 44, 52, 60, 71, 73, 68, 57, 50, 46, + 51, 49, 48, 45, 44, 45, 45, 45, 44, 48, 51, 51, 47, 44, 44, 46, + 47, 42, 39, 41, 48, 53, 50, 47, 40, 37, 31, 26, 25, 27, 31, 34, + 38, 40, 43, 46, 43, 41, 46, 54, 59, 68, 76, 138, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 89, 84, 73, 59, 49, 46, 47, 47, 48, 44, 43, 42, 39, 36, + 33, 30, 29, 28, 28, 27, 26, 25, 24, 23, 23, 23, 24, 23, 24, 25, + 26, 26, 27, 28, 28, 30, 31, 33, 35, 37, 38, 37, 40, 42, 40, 37, + 36, 39, 42, 44, 55, 68, 77, 76, 66, 52, 42, 49, 48, 46, 43, 41, + 41, 41, 41, 40, 47, 53, 52, 45, 39, 38, 40, 46, 42, 39, 39, 42, + 46, 49, 49, 46, 41, 33, 26, 22, 23, 26, 29, 35, 36, 40, 44, 44, + 42, 46, 53, 54, 64, 72, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 88, 84, 74, 66, + 53, 46, 43, 44, 44, 44, 46, 45, 43, 39, 36, 34, 32, 32, 28, 28, + 27, 26, 25, 24, 23, 23, 23, 23, 24, 25, 25, 25, 26, 26, 26, 28, + 29, 31, 33, 35, 36, 38, 38, 41, 43, 43, 41, 39, 39, 40, 48, 51, + 58, 65, 68, 65, 56, 49, 48, 46, 43, 40, 38, 37, 37, 37, 36, 41, + 47, 48, 44, 40, 37, 37, 39, 39, 38, 37, 37, 40, 43, 46, 47, 44, + 37, 31, 26, 26, 26, 25, 31, 32, 36, 42, 43, 42, 46, 52, 54, 63, + 70, 73, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 88, 80, 74, 63, 55, 46, 41, 41, 41, 42, + 40, 46, 45, 44, 42, 39, 37, 35, 34, 34, 34, 33, 32, 31, 30, 30, + 29, 27, 27, 27, 28, 28, 29, 28, 28, 25, 26, 28, 29, 31, 33, 34, + 36, 39, 42, 44, 45, 43, 42, 41, 40, 48, 47, 48, 53, 57, 60, 56, + 53, 48, 46, 44, 41, 38, 38, 38, 37, 34, 34, 36, 40, 44, 44, 40, + 36, 32, 35, 36, 35, 35, 34, 38, 40, 41, 40, 39, 37, 32, 30, 27, + 25, 31, 29, 32, 38, 41, 41, 45, 50, 56, 64, 70, 72, 134, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 86, 79, 68, 62, 52, 47, 39, 37, 39, 41, 41, 39, 44, 44, 43, 42, + 41, 39, 39, 38, 40, 39, 39, 39, 39, 38, 38, 38, 35, 34, 33, 33, + 33, 32, 32, 31, 24, 24, 25, 27, 28, 29, 30, 31, 39, 40, 41, 43, + 43, 42, 42, 41, 41, 42, 44, 50, 54, 54, 52, 47, 50, 48, 46, 43, + 42, 41, 41, 41, 38, 33, 30, 34, 41, 44, 40, 35, 30, 32, 33, 34, + 32, 33, 34, 35, 34, 36, 38, 38, 36, 32, 28, 25, 31, 28, 30, 35, + 39, 40, 45, 49, 58, 66, 71, 73, 74, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 85, 78, 68, 56, 49, 45, + 41, 36, 36, 39, 42, 42, 40, 41, 41, 41, 40, 40, 39, 40, 39, 41, + 41, 42, 42, 42, 42, 43, 43, 42, 41, 40, 39, 38, 37, 35, 34, 28, + 28, 29, 29, 29, 31, 31, 31, 36, 36, 37, 38, 40, 41, 40, 39, 37, + 40, 43, 46, 49, 50, 46, 44, 48, 47, 44, 42, 42, 41, 42, 42, 44, + 39, 33, 32, 34, 36, 36, 35, 34, 32, 30, 29, 31, 32, 34, 36, 35, + 37, 38, 40, 38, 36, 33, 30, 33, 28, 27, 31, 36, 38, 44, 49, 60, + 66, 71, 71, 71, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 201, 87, 81, 71, 60, 48, 40, 41, 37, 36, 36, 40, 44, + 43, 42, 38, 38, 39, 39, 40, 40, 40, 40, 42, 42, 43, 43, 44, 45, + 45, 46, 46, 46, 44, 43, 41, 38, 37, 36, 32, 33, 33, 33, 33, 33, + 33, 34, 34, 33, 33, 34, 37, 39, 38, 38, 39, 41, 41, 42, 44, 45, + 46, 46, 44, 43, 41, 39, 38, 39, 39, 40, 48, 44, 38, 31, 27, 27, + 31, 33, 38, 34, 29, 28, 29, 34, 36, 38, 40, 41, 41, 41, 40, 39, + 37, 36, 35, 29, 27, 30, 34, 38, 43, 50, 61, 67, 71, 70, 70, 72, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 93, 85, + 70, 62, 59, 54, 49, 45, 41, 37, 35, 37, 38, 40, 41, 38, 40, 40, + 39, 40, 44, 48, 52, 47, 45, 42, 42, 44, 46, 45, 43, 42, 42, 41, + 40, 40, 39, 38, 38, 30, 32, 35, 37, 39, 41, 40, 40, 38, 36, 34, + 31, 29, 28, 28, 28, 29, 30, 32, 35, 37, 41, 42, 44, 40, 40, 41, + 41, 41, 39, 37, 36, 39, 37, 35, 33, 31, 31, 32, 32, 35, 35, 33, + 33, 33, 34, 34, 35, 39, 41, 43, 43, 40, 37, 34, 34, 34, 35, 35, + 34, 35, 39, 46, 52, 65, 68, 72, 75, 74, 73, 132, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 205, 102, 96, 81, 65, 55, 53, 49, 42, + 41, 38, 36, 35, 36, 39, 39, 39, 37, 38, 39, 38, 38, 41, 45, 47, + 44, 42, 41, 42, 45, 45, 44, 42, 43, 43, 43, 42, 42, 41, 41, 39, + 35, 36, 39, 40, 42, 42, 43, 42, 37, 36, 33, 30, 28, 27, 26, 26, + 27, 28, 30, 32, 35, 37, 39, 41, 41, 42, 42, 42, 41, 39, 37, 35, + 39, 38, 37, 35, 34, 34, 34, 34, 37, 36, 35, 35, 35, 36, 37, 37, + 39, 42, 44, 45, 42, 40, 39, 39, 42, 39, 34, 34, 38, 43, 48, 51, + 64, 66, 70, 72, 72, 72, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 109, 105, 95, 84, 66, 49, 43, 41, 37, 30, 33, 31, 30, 32, 34, + 35, 35, 34, 36, 36, 37, 37, 36, 37, 38, 41, 39, 39, 40, 42, 45, + 45, 42, 39, 44, 44, 44, 43, 43, 43, 43, 43, 40, 41, 42, 43, 45, + 44, 45, 44, 40, 39, 37, 33, 31, 30, 29, 28, 26, 27, 29, 31, 34, + 37, 38, 39, 44, 44, 45, 43, 42, 40, 37, 35, 40, 40, 40, 39, 39, + 38, 38, 38, 40, 40, 40, 40, 39, 41, 41, 42, 43, 45, 48, 49, 48, + 46, 47, 48, 49, 42, 35, 34, 41, 49, 54, 56, 65, 66, 69, 69, 68, + 70, 72, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 103, 98, 79, 67, + 50, 40, 37, 36, 31, 26, 23, 23, 25, 27, 30, 31, 29, 27, 34, 34, + 36, 35, 34, 33, 34, 35, 35, 36, 40, 43, 45, 44, 41, 39, 44, 44, + 44, 44, 45, 45, 46, 46, 43, 44, 44, 44, 45, 46, 46, 46, 44, 43, + 42, 40, 39, 37, 37, 36, 32, 33, 34, 36, 39, 42, 43, 44, 49, 49, + 49, 48, 47, 44, 41, 39, 41, 42, 42, 42, 42, 42, 42, 42, 46, 46, + 46, 46, 46, 47, 47, 48, 47, 50, 53, 54, 55, 54, 56, 57, 55, 48, + 39, 35, 39, 47, 58, 64, 68, 68, 69, 67, 66, 68, 71, 74, 128, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 99, 98, 92, 85, 67, 56, 45, 41, 42, 39, 33, + 28, 22, 22, 24, 28, 30, 31, 30, 28, 33, 33, 34, 33, 31, 31, 33, + 36, 34, 38, 43, 46, 48, 47, 45, 43, 46, 46, 46, 48, 48, 49, 49, + 50, 48, 48, 48, 48, 48, 48, 49, 49, 48, 48, 49, 49, 49, 48, 47, + 47, 44, 45, 46, 48, 51, 53, 54, 55, 58, 58, 59, 57, 55, 52, 49, + 47, 48, 48, 49, 49, 50, 51, 51, 52, 54, 54, 53, 52, 52, 52, 53, + 53, 56, 59, 62, 63, 63, 64, 66, 68, 66, 62, 54, 44, 38, 42, 55, + 65, 70, 70, 70, 68, 66, 66, 68, 70, 64, 130, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, + 91, 88, 79, 70, 59, 51, 45, 45, 43, 37, 30, 26, 27, 28, 29, 31, + 34, 36, 34, 32, 32, 33, 33, 32, 31, 32, 36, 39, 39, 44, 51, 54, + 54, 54, 53, 53, 52, 54, 55, 56, 58, 59, 59, 60, 56, 56, 56, 56, + 56, 59, 59, 60, 60, 59, 60, 61, 61, 61, 60, 59, 61, 62, 63, 65, + 67, 69, 70, 71, 71, 71, 71, 71, 68, 67, 64, 62, 60, 59, 59, 59, + 60, 63, 65, 67, 66, 65, 64, 62, 61, 61, 61, 61, 69, 71, 72, 74, + 73, 75, 76, 78, 82, 82, 76, 62, 48, 43, 49, 59, 69, 70, 72, 71, + 69, 67, 67, 67, 64, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 90, 84, 78, 67, 56, 55, + 48, 44, 46, 43, 36, 32, 31, 33, 32, 32, 35, 37, 38, 38, 36, 33, + 33, 32, 30, 31, 35, 41, 45, 48, 53, 59, 63, 63, 62, 63, 64, 62, + 64, 65, 67, 69, 71, 72, 72, 70, 70, 69, 69, 70, 72, 75, 76, 78, + 79, 79, 79, 79, 76, 74, 73, 75, 76, 77, 78, 80, 83, 84, 84, 84, + 85, 85, 85, 84, 82, 80, 78, 76, 74, 73, 72, 74, 78, 82, 85, 84, + 83, 81, 78, 76, 75, 75, 74, 82, 83, 84, 85, 84, 85, 87, 89, 94, + 95, 92, 83, 68, 56, 52, 52, 64, 68, 73, 75, 74, 71, 69, 68, 65, + 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 202, 94, 88, 80, 72, 60, 49, 57, 51, 49, 51, 49, 41, + 40, 44, 35, 33, 33, 34, 37, 38, 37, 36, 33, 33, 31, 29, 30, 36, + 44, 49, 55, 60, 66, 68, 68, 69, 70, 72, 71, 72, 74, 75, 78, 80, + 81, 82, 80, 79, 80, 79, 81, 83, 86, 88, 95, 96, 95, 94, 92, 89, + 86, 84, 85, 85, 86, 88, 89, 91, 92, 93, 93, 95, 94, 95, 94, 93, + 90, 89, 87, 85, 82, 81, 84, 88, 94, 98, 99, 97, 95, 92, 90, 88, + 87, 87, 91, 92, 92, 92, 91, 92, 94, 96, 97, 100, 100, 96, 85, 72, + 59, 52, 59, 65, 73, 78, 78, 75, 71, 69, 66, 70, 130, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 100, 96, + 86, 73, 65, 63, 63, 47, 49, 53, 54, 52, 46, 40, 35, 35, 36, 38, + 38, 36, 35, 38, 39, 37, 40, 42, 41, 41, 45, 51, 56, 62, 65, 71, + 76, 77, 80, 82, 84, 81, 82, 83, 85, 85, 84, 83, 82, 89, 90, 90, + 93, 95, 98, 100, 102, 107, 107, 107, 106, 105, 105, 104, 103, 101, 101, 101, + 101, 102, 102, 101, 101, 101, 104, 105, 108, 107, 107, 106, 103, 102, 101, 99, + 99, 101, 105, 109, 112, 112, 111, 111, 110, 108, 107, 104, 102, 102, 101, 99, + 96, 95, 97, 98, 99, 110, 106, 101, 102, 107, 103, 79, 51, 52, 59, 69, + 77, 81, 81, 78, 75, 71, 69, 66, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 100, 98, 92, 84, 75, 66, 60, 59, + 44, 46, 47, 47, 45, 42, 39, 36, 36, 37, 37, 35, 34, 36, 37, 40, + 41, 45, 48, 49, 52, 55, 63, 68, 76, 80, 85, 88, 90, 91, 93, 95, + 91, 91, 92, 93, 93, 93, 93, 92, 97, 96, 97, 99, 102, 103, 106, 107, + 112, 111, 113, 114, 114, 113, 114, 112, 111, 111, 111, 112, 112, 112, 112, 112, + 111, 113, 116, 117, 118, 116, 116, 115, 114, 113, 112, 112, 112, 116, 120, 122, + 121, 120, 120, 120, 117, 115, 114, 113, 111, 110, 107, 104, 102, 102, 102, 103, + 113, 109, 106, 106, 113, 113, 96, 76, 52, 52, 59, 72, 86, 88, 78, 66, + 71, 67, 64, 126, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 207, 103, 96, 88, 80, 75, 67, 60, 54, 42, 42, 41, 39, 38, + 38, 36, 35, 36, 36, 36, 34, 33, 35, 39, 43, 49, 53, 58, 61, 65, + 70, 78, 85, 93, 96, 100, 102, 103, 104, 104, 105, 101, 101, 99, 100, 101, + 101, 103, 103, 106, 106, 106, 108, 109, 112, 113, 115, 116, 116, 118, 120, 121, + 122, 122, 121, 121, 121, 121, 121, 122, 122, 122, 122, 121, 122, 125, 126, 127, + 126, 126, 125, 127, 125, 124, 124, 124, 126, 129, 131, 128, 128, 128, 127, 125, + 123, 122, 121, 123, 121, 117, 114, 110, 109, 108, 108, 116, 114, 110, 111, 116, + 118, 109, 99, 67, 55, 48, 60, 81, 91, 83, 71, 73, 68, 64, 62, 122, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 113, 107, 95, + 81, 73, 71, 67, 60, 53, 43, 42, 40, 39, 36, 35, 33, 32, 33, 33, + 33, 32, 34, 38, 43, 48, 57, 61, 67, 71, 75, 81, 90, 96, 104, 107, + 110, 111, 110, 109, 109, 110, 104, 102, 102, 102, 102, 104, 105, 108, 110, 110, + 111, 112, 113, 115, 116, 118, 116, 117, 119, 121, 121, 123, 123, 122, 124, 125, + 125, 125, 125, 126, 126, 126, 125, 126, 128, 129, 131, 131, 130, 129, 131, 131, + 130, 129, 129, 130, 131, 133, 129, 129, 129, 128, 127, 125, 122, 122, 128, 125, + 123, 119, 116, 114, 113, 112, 119, 117, 116, 114, 115, 115, 111, 106, 96, 72, + 48, 45, 62, 83, 90, 89, 82, 73, 65, 61, 56, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 111, 108, 109, 92, 73, 65, 65, 66, 60, + 53, 46, 45, 44, 42, 39, 34, 30, 27, 29, 30, 31, 32, 35, 41, 48, + 55, 62, 67, 72, 77, 80, 87, 93, 100, 109, 111, 113, 114, 111, 109, 109, + 110, 105, 104, 102, 103, 104, 105, 108, 109, 110, 110, 111, 112, 113, 115, 117, + 117, 119, 120, 121, 121, 122, 122, 121, 121, 124, 125, 125, 125, 126, 126, 127, + 127, 128, 129, 129, 131, 131, 132, 132, 133, 133, 133, 131, 130, 129, 131, 131, + 132, 129, 128, 128, 128, 127, 124, 123, 122, 126, 124, 122, 120, 118, 116, 116, + 115, 116, 116, 117, 117, 116, 113, 110, 108, 114, 90, 61, 45, 49, 67, 86, + 97, 92, 81, 69, 61, 55, 95, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 204, 104, 103, 103, 86, 66, 58, 58, 61, 56, 50, 48, 47, 46, 42, + 38, 33, 28, 26, 27, 30, 32, 35, 38, 44, 52, 57, 61, 66, 73, 79, + 81, 87, 94, 99, 111, 112, 115, 114, 111, 108, 107, 107, 106, 105, 105, 105, + 106, 108, 110, 111, 107, 108, 108, 110, 111, 113, 116, 118, 122, 123, 124, 124, + 124, 124, 123, 122, 127, 127, 127, 128, 128, 129, 129, 130, 130, 130, 132, 132, + 133, 135, 135, 135, 134, 134, 132, 132, 131, 132, 132, 132, 130, 130, 130, 130, + 128, 127, 124, 124, 122, 122, 120, 120, 118, 117, 116, 116, 114, 113, 114, 118, + 119, 114, 112, 113, 114, 102, 82, 61, 49, 54, 72, 88, 94, 85, 74, 66, + 57, 48, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 99, 99, 91, + 77, 60, 54, 55, 55, 50, 44, 47, 45, 41, 36, 33, 30, 29, 28, 29, + 32, 35, 38, 41, 46, 51, 55, 57, 63, 71, 76, 80, 86, 93, 99, 108, + 110, 112, 111, 108, 106, 104, 103, 103, 104, 106, 107, 109, 109, 110, 110, 105, + 106, 107, 110, 112, 115, 116, 119, 122, 123, 125, 126, 127, 127, 127, 126, 129, + 129, 130, 131, 131, 131, 132, 132, 130, 131, 131, 132, 134, 135, 136, 136, 136, + 135, 134, 134, 134, 133, 133, 133, 134, 134, 133, 132, 131, 130, 127, 127, 122, + 121, 121, 120, 119, 117, 116, 114, 117, 112, 112, 116, 118, 115, 113, 116, 112, + 112, 102, 81, 58, 51, 62, 77, 91, 86, 80, 73, 63, 52, 52, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 94, 97, 98, 80, 69, 57, 52, 54, 53, + 45, 39, 46, 43, 36, 31, 28, 27, 29, 30, 31, 34, 38, 40, 43, 46, + 50, 54, 53, 60, 68, 75, 80, 85, 93, 99, 105, 106, 108, 107, 104, 102, + 100, 100, 101, 103, 105, 107, 108, 109, 109, 108, 105, 106, 107, 109, 112, 115, + 119, 120, 120, 121, 123, 125, 126, 129, 129, 129, 130, 131, 130, 131, 131, 132, + 133, 133, 129, 129, 130, 130, 131, 134, 135, 136, 134, 133, 133, 133, 132, 132, + 132, 132, 134, 134, 134, 134, 131, 130, 128, 127, 124, 124, 123, 122, 120, 117, + 116, 115, 120, 113, 108, 113, 114, 112, 111, 114, 115, 120, 115, 92, 65, 51, + 61, 74, 85, 84, 84, 79, 68, 56, 53, 255, 255, 255, 255, 255, 255, 255, + 255, 130, 104, 103, 97, 79, 72, 61, 55, 50, 47, 44, 41, 38, 37, 34, + 31, 31, 30, 31, 33, 32, 35, 39, 42, 43, 46, 50, 53, 62, 67, 74, + 78, 83, 90, 98, 105, 110, 110, 110, 107, 103, 102, 103, 104, 106, 105, 105, + 106, 105, 106, 106, 107, 108, 111, 114, 116, 116, 116, 119, 120, 122, 122, 122, + 123, 124, 127, 129, 130, 133, 135, 137, 139, 138, 138, 136, 134, 135, 135, 136, + 135, 136, 137, 136, 137, 137, 137, 136, 134, 134, 134, 133, 133, 134, 135, 134, + 133, 132, 130, 129, 129, 126, 125, 125, 123, 123, 121, 121, 120, 117, 116, 116, + 114, 114, 114, 113, 113, 117, 108, 106, 106, 85, 55, 49, 63, 79, 79, 83, + 85, 73, 54, 50, 124, 255, 255, 255, 255, 255, 255, 255, 105, 109, 101, 89, + 74, 68, 58, 52, 48, 45, 43, 40, 38, 36, 34, 33, 31, 31, 33, 34, + 35, 38, 41, 42, 45, 47, 52, 54, 65, 70, 76, 81, 84, 90, 97, 102, + 105, 106, 107, 106, 104, 103, 104, 105, 109, 108, 108, 109, 108, 108, 108, 109, + 108, 111, 114, 114, 114, 115, 116, 117, 120, 120, 121, 122, 125, 127, 130, 129, + 132, 134, 137, 139, 139, 139, 137, 136, 135, 136, 136, 136, 137, 137, 137, 137, + 137, 136, 135, 134, 134, 133, 133, 133, 134, 135, 134, 133, 132, 130, 129, 129, + 128, 127, 126, 124, 122, 120, 119, 117, 118, 116, 115, 114, 113, 113, 113, 113, + 113, 110, 110, 110, 93, 69, 57, 58, 74, 73, 77, 80, 75, 65, 58, 58, + 255, 255, 255, 255, 255, 255, 206, 110, 108, 93, 75, 69, 64, 57, 52, 47, + 45, 41, 39, 35, 35, 34, 33, 33, 34, 35, 37, 38, 40, 43, 44, 45, + 49, 54, 58, 69, 74, 80, 84, 87, 89, 95, 99, 101, 103, 104, 105, 104, + 104, 105, 107, 110, 109, 109, 109, 108, 109, 108, 109, 108, 111, 113, 114, 113, + 113, 113, 115, 117, 118, 120, 123, 125, 128, 128, 130, 132, 134, 136, 138, 140, + 140, 140, 139, 136, 136, 137, 137, 137, 138, 137, 138, 136, 136, 135, 134, 133, + 133, 133, 134, 134, 135, 134, 133, 132, 130, 129, 129, 129, 128, 127, 124, 122, + 119, 118, 116, 119, 117, 116, 114, 114, 113, 112, 113, 111, 112, 114, 112, 104, + 88, 68, 53, 67, 71, 73, 74, 75, 73, 64, 54, 255, 255, 255, 255, 255, + 255, 104, 104, 99, 82, 62, 67, 64, 58, 53, 48, 43, 41, 38, 32, 32, + 31, 31, 32, 33, 35, 37, 37, 39, 41, 44, 47, 52, 58, 63, 73, 78, + 83, 86, 86, 88, 91, 95, 100, 103, 105, 105, 105, 105, 105, 107, 108, 107, + 107, 107, 106, 106, 105, 106, 109, 112, 114, 114, 113, 112, 113, 114, 113, 115, + 119, 123, 126, 128, 129, 129, 130, 131, 135, 138, 139, 141, 141, 141, 137, 138, + 137, 138, 138, 137, 138, 137, 135, 135, 134, 132, 132, 133, 133, 134, 134, 135, + 134, 133, 132, 130, 129, 129, 127, 127, 125, 124, 122, 120, 118, 117, 118, 118, + 117, 114, 113, 112, 112, 112, 109, 114, 114, 110, 109, 104, 80, 53, 62, 71, + 74, 71, 71, 73, 66, 53, 255, 255, 255, 255, 255, 255, 93, 91, 88, 73, + 56, 64, 62, 57, 51, 44, 38, 34, 32, 29, 28, 29, 30, 31, 33, 34, + 35, 33, 36, 40, 45, 49, 55, 61, 66, 74, 79, 84, 84, 84, 85, 89, + 93, 102, 105, 107, 108, 107, 106, 107, 107, 108, 107, 106, 106, 105, 105, 104, + 105, 111, 113, 114, 114, 113, 112, 112, 113, 111, 114, 117, 121, 125, 126, 127, + 127, 129, 130, 132, 135, 136, 139, 141, 141, 137, 137, 137, 137, 137, 137, 137, + 137, 134, 134, 132, 132, 132, 133, 132, 133, 134, 135, 134, 133, 132, 130, 129, + 129, 125, 125, 124, 122, 122, 121, 120, 119, 118, 117, 116, 113, 112, 111, 111, + 110, 110, 115, 110, 103, 107, 111, 90, 61, 56, 68, 74, 71, 68, 71, 67, + 58, 255, 255, 255, 255, 255, 255, 83, 82, 83, 71, 56, 56, 56, 52, 47, + 38, 30, 26, 24, 27, 28, 29, 29, 31, 32, 33, 33, 31, 36, 42, 46, + 52, 57, 63, 66, 74, 77, 81, 81, 81, 84, 88, 93, 101, 106, 108, 110, + 108, 107, 108, 108, 109, 108, 107, 107, 106, 105, 104, 105, 109, 112, 114, 114, + 113, 112, 112, 114, 113, 114, 116, 118, 121, 123, 125, 125, 128, 129, 131, 132, + 135, 137, 139, 138, 137, 136, 137, 136, 136, 136, 135, 135, 133, 132, 132, 131, + 132, 132, 132, 133, 134, 135, 134, 133, 132, 130, 129, 129, 123, 123, 124, 122, + 122, 121, 121, 120, 118, 116, 115, 112, 111, 110, 109, 109, 111, 113, 108, 99, + 103, 110, 98, 74, 53, 61, 69, 69, 68, 69, 68, 66, 126, 255, 255, 255, + 255, 255, 78, 80, 82, 71, 54, 49, 50, 49, 44, 36, 28, 23, 22, 27, + 28, 30, 31, 32, 32, 33, 33, 34, 39, 45, 51, 56, 59, 63, 65, 72, + 75, 77, 77, 78, 80, 87, 94, 98, 102, 106, 108, 109, 109, 109, 110, 108, + 107, 106, 105, 104, 104, 103, 103, 106, 109, 111, 111, 111, 111, 112, 113, 113, + 114, 114, 116, 119, 120, 123, 124, 128, 128, 128, 130, 131, 134, 136, 136, 135, + 135, 135, 135, 134, 134, 134, 133, 132, 131, 131, 131, 131, 131, 132, 133, 134, + 135, 134, 133, 132, 130, 129, 129, 125, 124, 124, 123, 121, 120, 120, 119, 117, + 115, 113, 111, 109, 108, 108, 107, 109, 112, 107, 99, 102, 108, 102, 86, 61, + 58, 60, 67, 70, 68, 66, 66, 63, 255, 255, 255, 255, 77, 75, 80, 82, + 69, 51, 47, 48, 49, 44, 36, 29, 24, 24, 29, 29, 30, 32, 33, 33, + 33, 33, 38, 42, 49, 55, 59, 60, 62, 63, 70, 73, 74, 73, 75, 79, + 88, 94, 94, 98, 103, 108, 108, 109, 109, 111, 105, 104, 103, 102, 101, 100, + 99, 100, 104, 106, 109, 110, 109, 109, 110, 112, 115, 114, 114, 116, 117, 119, + 122, 123, 126, 127, 128, 129, 129, 132, 133, 134, 135, 134, 134, 134, 133, 133, + 133, 133, 131, 131, 131, 131, 130, 131, 133, 133, 134, 135, 134, 133, 132, 130, + 129, 129, 127, 126, 125, 123, 121, 119, 118, 117, 115, 115, 113, 110, 109, 108, + 106, 106, 109, 112, 109, 102, 103, 107, 103, 93, 71, 59, 56, 65, 71, 66, + 61, 61, 62, 123, 255, 255, 255, 69, 73, 78, 73, 60, 49, 40, 42, 42, + 39, 34, 29, 26, 25, 33, 34, 34, 33, 32, 31, 35, 36, 39, 48, 56, + 61, 57, 54, 57, 62, 64, 66, 71, 73, 77, 82, 88, 92, 96, 100, 106, + 110, 111, 110, 111, 111, 114, 111, 107, 103, 101, 100, 101, 102, 105, 108, 111, + 111, 108, 106, 107, 109, 112, 113, 116, 117, 120, 121, 121, 121, 123, 125, 126, + 127, 127, 128, 128, 129, 130, 132, 133, 134, 134, 133, 131, 130, 131, 130, 130, + 129, 130, 130, 131, 130, 133, 131, 131, 131, 131, 132, 129, 128, 125, 124, 123, + 121, 120, 119, 118, 118, 114, 113, 112, 111, 110, 110, 110, 110, 108, 108, 106, + 104, 103, 101, 100, 99, 82, 68, 56, 59, 63, 63, 62, 63, 65, 56, 255, + 255, 255, 68, 74, 77, 71, 58, 46, 41, 41, 40, 39, 34, 30, 28, 28, + 34, 35, 34, 32, 30, 31, 33, 36, 46, 54, 61, 64, 59, 58, 60, 64, + 63, 66, 70, 73, 76, 80, 86, 90, 94, 99, 104, 107, 109, 109, 110, 111, + 111, 110, 108, 106, 103, 102, 102, 102, 103, 106, 108, 108, 106, 105, 105, 106, + 108, 109, 112, 114, 117, 118, 119, 119, 122, 123, 124, 125, 126, 127, 126, 128, + 130, 130, 131, 132, 131, 131, 131, 131, 131, 131, 131, 130, 130, 130, 131, 132, + 132, 130, 129, 130, 130, 131, 128, 127, 123, 122, 121, 119, 118, 117, 116, 116, + 112, 112, 111, 109, 109, 110, 111, 111, 108, 108, 105, 104, 103, 102, 100, 99, + 85, 71, 58, 58, 61, 61, 60, 61, 62, 56, 255, 255, 255, 70, 76, 76, + 69, 55, 43, 40, 40, 39, 37, 33, 31, 30, 32, 36, 35, 33, 30, 29, + 31, 36, 39, 53, 58, 63, 63, 59, 57, 59, 63, 63, 66, 69, 73, 75, + 79, 83, 86, 91, 95, 101, 105, 107, 109, 109, 111, 110, 110, 109, 108, 106, + 105, 102, 101, 101, 103, 104, 105, 103, 102, 102, 103, 105, 107, 110, 113, 116, + 118, 119, 119, 121, 122, 123, 125, 126, 126, 126, 126, 129, 129, 129, 129, 129, + 130, 130, 130, 131, 131, 131, 130, 130, 130, 130, 131, 131, 129, 128, 127, 129, + 128, 127, 126, 123, 122, 120, 118, 117, 116, 115, 115, 112, 111, 108, 107, 106, + 108, 111, 113, 108, 107, 106, 103, 102, 100, 100, 100, 91, 76, 61, 57, 59, + 59, 58, 57, 61, 57, 255, 255, 255, 72, 76, 77, 68, 52, 40, 39, 38, + 37, 34, 31, 31, 32, 34, 34, 34, 32, 30, 29, 34, 40, 46, 55, 59, + 61, 59, 54, 53, 55, 59, 62, 64, 68, 72, 74, 77, 80, 83, 89, 93, + 98, 102, 104, 106, 108, 110, 110, 112, 112, 112, 109, 106, 102, 99, 99, 100, + 101, 102, 100, 100, 100, 100, 106, 107, 110, 113, 116, 118, 121, 121, 120, 122, + 123, 126, 126, 127, 127, 128, 131, 130, 129, 128, 128, 130, 132, 133, 130, 130, + 129, 129, 129, 129, 129, 130, 131, 129, 126, 126, 127, 127, 125, 124, 123, 122, + 120, 118, 117, 116, 114, 114, 111, 108, 105, 103, 104, 107, 111, 113, 108, 107, + 105, 102, 101, 100, 101, 100, 94, 80, 65, 56, 56, 58, 55, 53, 59, 58, + 255, 255, 255, 71, 76, 75, 65, 51, 40, 37, 37, 37, 34, 32, 31, 33, + 36, 32, 32, 32, 32, 35, 41, 48, 53, 57, 57, 57, 55, 51, 50, 53, + 56, 60, 64, 69, 72, 74, 76, 79, 81, 88, 90, 96, 100, 102, 104, 107, + 109, 111, 113, 115, 114, 110, 107, 100, 98, 100, 99, 99, 100, 99, 100, 99, + 99, 105, 107, 109, 112, 116, 118, 120, 121, 121, 123, 124, 126, 128, 129, 129, + 130, 132, 132, 130, 130, 130, 132, 133, 135, 129, 129, 128, 127, 127, 127, 128, + 128, 131, 129, 126, 125, 125, 125, 123, 123, 121, 120, 118, 116, 114, 113, 111, + 111, 109, 107, 104, 103, 103, 106, 110, 113, 108, 107, 104, 102, 100, 100, 100, + 100, 97, 85, 68, 58, 57, 57, 56, 51, 59, 59, 255, 255, 255, 70, 73, + 72, 63, 49, 41, 37, 39, 39, 38, 35, 35, 35, 37, 33, 34, 35, 37, + 40, 46, 53, 59, 58, 58, 55, 53, 50, 52, 55, 58, 59, 63, 68, 72, + 75, 77, 79, 81, 88, 92, 95, 99, 100, 102, 105, 108, 112, 113, 115, 115, + 112, 108, 104, 100, 103, 101, 99, 99, 100, 101, 101, 101, 103, 105, 108, 110, + 114, 115, 117, 118, 122, 122, 125, 127, 129, 130, 130, 131, 132, 132, 131, 131, + 132, 134, 135, 135, 130, 130, 129, 128, 128, 128, 127, 128, 132, 129, 126, 125, + 124, 124, 124, 123, 118, 117, 115, 113, 111, 109, 108, 107, 108, 107, 105, 104, + 103, 106, 109, 110, 108, 105, 104, 101, 99, 99, 100, 101, 97, 86, 71, 61, + 58, 60, 57, 50, 55, 60, 255, 255, 255, 65, 68, 66, 58, 48, 40, 40, + 42, 43, 42, 39, 38, 37, 39, 37, 39, 41, 43, 45, 50, 56, 60, 57, + 56, 52, 50, 49, 52, 56, 61, 58, 62, 68, 73, 76, 77, 80, 83, 90, + 92, 96, 99, 99, 101, 104, 107, 108, 110, 113, 114, 114, 112, 108, 107, 105, + 102, 99, 99, 102, 104, 103, 102, 105, 106, 109, 111, 114, 115, 117, 117, 120, + 121, 124, 125, 127, 129, 130, 130, 130, 130, 131, 132, 133, 133, 133, 133, 132, + 132, 131, 130, 129, 129, 130, 130, 133, 129, 127, 125, 125, 125, 123, 123, 120, + 118, 116, 114, 112, 110, 108, 108, 108, 107, 105, 104, 104, 106, 107, 108, 108, + 106, 103, 100, 99, 98, 101, 101, 96, 88, 74, 63, 62, 64, 60, 50, 51, + 58, 255, 255, 255, 62, 65, 62, 55, 45, 38, 43, 45, 47, 46, 43, 41, + 41, 41, 41, 43, 45, 47, 48, 51, 56, 59, 55, 53, 49, 47, 47, 51, + 56, 61, 56, 61, 68, 73, 77, 79, 81, 83, 91, 94, 96, 99, 99, 101, + 104, 106, 105, 107, 110, 113, 114, 115, 113, 112, 108, 105, 101, 101, 103, 106, + 105, 104, 109, 110, 113, 114, 116, 117, 118, 118, 118, 120, 121, 124, 126, 128, + 128, 130, 127, 129, 131, 133, 133, 133, 132, 131, 134, 134, 133, 132, 131, 131, + 131, 132, 134, 130, 126, 124, 124, 125, 124, 123, 124, 122, 120, 117, 115, 114, + 112, 111, 108, 107, 107, 105, 106, 105, 106, 106, 108, 106, 102, 100, 98, 98, + 100, 102, 95, 89, 75, 64, 64, 67, 62, 51, 47, 55, 255, 255, 255, 64, + 72, 69, 57, 48, 47, 42, 45, 45, 44, 45, 47, 44, 38, 36, 44, 48, + 47, 49, 55, 57, 54, 55, 51, 48, 45, 46, 48, 53, 55, 53, 58, 63, + 69, 76, 82, 90, 94, 90, 92, 93, 96, 99, 102, 103, 105, 101, 104, 109, + 112, 115, 115, 113, 112, 107, 105, 103, 102, 101, 102, 104, 105, 113, 113, 114, + 114, 115, 115, 115, 116, 118, 119, 123, 126, 129, 131, 132, 133, 131, 131, 131, + 133, 133, 135, 135, 135, 132, 131, 130, 129, 129, 130, 130, 131, 131, 131, 130, + 129, 129, 128, 127, 127, 124, 123, 121, 118, 118, 116, 116, 115, 110, 109, 108, + 107, 107, 108, 106, 105, 105, 105, 104, 103, 102, 100, 98, 96, 97, 90, 77, + 66, 63, 65, 62, 56, 51, 54, 255, 255, 255, 69, 72, 66, 53, 46, 47, + 45, 49, 49, 46, 44, 46, 45, 41, 44, 50, 52, 49, 49, 53, 53, 49, + 53, 50, 47, 44, 44, 47, 50, 53, 55, 59, 64, 71, 76, 82, 88, 92, + 91, 92, 94, 97, 99, 102, 104, 105, 102, 104, 107, 112, 114, 114, 113, 112, + 108, 107, 104, 103, 102, 102, 104, 105, 111, 111, 111, 112, 113, 115, 115, 115, + 117, 120, 122, 125, 128, 129, 130, 131, 131, 131, 131, 133, 133, 134, 135, 135, + 131, 130, 130, 129, 129, 129, 129, 130, 131, 130, 129, 128, 128, 127, 126, 127, + 124, 123, 121, 121, 118, 118, 115, 115, 112, 111, 108, 107, 107, 108, 106, 106, + 106, 105, 104, 102, 101, 99, 98, 98, 98, 92, 80, 66, 59, 60, 58, 53, + 51, 54, 255, 255, 255, 75, 71, 60, 49, 45, 49, 49, 54, 53, 48, 43, + 44, 46, 45, 51, 53, 54, 51, 50, 52, 51, 47, 50, 47, 46, 44, 44, + 45, 48, 49, 56, 59, 66, 71, 75, 80, 85, 89, 91, 92, 94, 97, 99, + 101, 103, 105, 101, 103, 108, 111, 113, 114, 113, 112, 110, 109, 107, 105, 104, + 104, 105, 106, 108, 108, 110, 111, 113, 115, 116, 117, 119, 119, 122, 124, 127, + 128, 129, 130, 131, 131, 131, 131, 132, 133, 133, 134, 130, 130, 129, 128, 128, + 129, 129, 129, 130, 129, 128, 128, 127, 126, 125, 126, 123, 123, 123, 121, 120, + 118, 117, 115, 115, 113, 109, 107, 107, 108, 107, 107, 106, 105, 102, 100, 99, + 98, 99, 99, 98, 95, 83, 67, 56, 54, 53, 52, 52, 53, 255, 255, 255, + 78, 69, 55, 46, 46, 51, 51, 56, 56, 48, 41, 42, 46, 48, 52, 52, + 52, 51, 52, 53, 52, 49, 46, 44, 43, 42, 42, 44, 45, 46, 52, 57, + 64, 70, 75, 80, 83, 87, 90, 92, 94, 96, 99, 100, 103, 104, 101, 102, + 105, 108, 111, 112, 112, 112, 111, 110, 108, 107, 106, 106, 106, 106, 105, 106, + 108, 110, 113, 116, 117, 118, 121, 121, 123, 125, 126, 127, 129, 129, 130, 130, + 131, 131, 132, 133, 133, 133, 129, 129, 128, 128, 127, 127, 128, 128, 129, 128, + 128, 127, 126, 126, 125, 125, 124, 124, 123, 123, 121, 120, 117, 116, 118, 114, + 110, 108, 108, 109, 109, 108, 107, 104, 102, 99, 98, 99, 99, 101, 98, 96, + 86, 69, 54, 51, 53, 55, 53, 53, 255, 255, 255, 77, 66, 52, 47, 48, + 53, 51, 56, 55, 48, 41, 43, 48, 50, 55, 52, 49, 50, 52, 51, 49, + 48, 43, 42, 41, 41, 41, 44, 44, 46, 50, 55, 62, 69, 74, 79, 83, + 85, 89, 89, 92, 95, 96, 99, 101, 101, 100, 101, 103, 105, 108, 109, 110, + 112, 111, 110, 109, 108, 108, 108, 107, 107, 106, 106, 109, 111, 114, 118, 120, + 121, 124, 124, 125, 126, 127, 128, 129, 130, 130, 130, 130, 131, 131, 131, 132, + 132, 129, 129, 128, 127, 127, 127, 127, 128, 129, 128, 128, 127, 126, 126, 125, + 125, 124, 125, 125, 124, 123, 121, 119, 118, 120, 116, 112, 110, 109, 109, 109, + 108, 107, 104, 102, 100, 99, 99, 100, 102, 97, 97, 87, 69, 55, 53, 56, + 58, 56, 54, 255, 255, 255, 74, 62, 51, 47, 49, 50, 50, 54, 53, 48, + 44, 47, 51, 52, 58, 51, 47, 49, 50, 47, 44, 44, 42, 41, 40, 39, + 40, 44, 46, 49, 51, 57, 65, 70, 75, 78, 82, 84, 86, 88, 90, 92, + 94, 97, 98, 100, 98, 99, 100, 102, 104, 107, 108, 110, 110, 109, 109, 110, + 109, 109, 110, 109, 107, 109, 111, 114, 117, 120, 122, 124, 126, 126, 126, 127, + 128, 129, 129, 130, 129, 130, 130, 130, 130, 130, 130, 130, 129, 129, 128, 127, + 126, 127, 128, 128, 130, 129, 128, 128, 127, 126, 125, 126, 125, 125, 125, 125, + 124, 122, 119, 118, 120, 118, 114, 113, 112, 111, 109, 108, 105, 105, 102, 101, + 100, 100, 102, 102, 98, 96, 86, 68, 55, 53, 57, 60, 59, 56, 255, 255, + 255, 71, 59, 51, 49, 47, 43, 49, 52, 51, 49, 49, 54, 57, 55, 55, + 47, 42, 46, 48, 46, 43, 44, 41, 40, 39, 38, 41, 45, 50, 54, 57, + 63, 69, 74, 77, 79, 80, 81, 85, 86, 88, 90, 92, 95, 96, 97, 97, + 96, 97, 98, 101, 103, 107, 109, 107, 108, 109, 110, 111, 111, 111, 111, 111, + 112, 114, 118, 120, 123, 125, 126, 126, 127, 125, 126, 126, 127, 128, 128, 129, + 129, 130, 130, 130, 130, 130, 130, 129, 128, 128, 128, 127, 127, 128, 128, 131, + 130, 129, 128, 128, 127, 126, 127, 126, 125, 127, 126, 124, 123, 121, 119, 121, + 119, 116, 115, 114, 112, 109, 107, 105, 104, 104, 104, 103, 103, 102, 102, 98, + 95, 83, 66, 53, 53, 56, 58, 63, 57, 255, 255, 255, 69, 58, 51, 49, + 44, 38, 49, 52, 51, 50, 53, 59, 60, 57, 49, 40, 37, 43, 48, 47, + 46, 47, 42, 40, 38, 37, 40, 46, 52, 56, 64, 68, 74, 77, 79, 79, + 79, 80, 84, 85, 86, 88, 91, 93, 95, 97, 96, 96, 96, 97, 99, 102, + 105, 108, 106, 107, 108, 110, 111, 112, 112, 112, 114, 114, 117, 119, 122, 124, + 126, 128, 126, 126, 125, 125, 124, 125, 126, 127, 130, 130, 129, 130, 130, 130, + 130, 130, 130, 129, 128, 127, 127, 128, 128, 129, 131, 131, 130, 129, 129, 128, + 127, 127, 126, 126, 127, 127, 125, 123, 121, 119, 119, 119, 117, 118, 116, 114, + 109, 106, 104, 105, 105, 105, 104, 103, 102, 101, 100, 95, 81, 64, 52, 52, + 54, 54, 65, 58, 255, 255, 255, 68, 61, 51, 46, 45, 47, 43, 49, 53, + 53, 55, 56, 55, 49, 38, 40, 42, 44, 45, 43, 42, 39, 40, 38, 37, + 37, 41, 46, 52, 56, 65, 68, 72, 76, 76, 76, 76, 76, 82, 84, 86, + 89, 89, 89, 92, 94, 99, 91, 88, 94, 99, 99, 100, 104, 112, 109, 107, + 109, 113, 116, 114, 112, 115, 116, 117, 121, 122, 122, 124, 124, 120, 121, 123, + 124, 124, 124, 123, 123, 121, 122, 123, 124, 125, 126, 126, 126, 127, 128, 130, + 128, 125, 124, 127, 129, 130, 129, 128, 129, 131, 130, 129, 127, 123, 123, 123, + 123, 122, 120, 119, 117, 118, 120, 120, 120, 118, 113, 109, 106, 101, 102, 102, + 103, 103, 102, 99, 100, 98, 87, 79, 65, 46, 44, 53, 55, 56, 120, 255, + 255, 255, 69, 62, 51, 45, 44, 47, 45, 50, 53, 53, 54, 55, 53, 49, + 40, 41, 42, 43, 44, 42, 40, 39, 39, 38, 38, 40, 43, 48, 55, 57, + 64, 68, 72, 74, 75, 75, 74, 76, 80, 83, 86, 87, 88, 89, 91, 93, + 91, 89, 90, 95, 98, 97, 101, 108, 109, 107, 104, 104, 104, 103, 101, 100, + 103, 109, 118, 125, 128, 127, 123, 121, 124, 124, 125, 126, 126, 124, 121, 121, + 118, 120, 121, 123, 124, 125, 126, 126, 125, 127, 128, 126, 122, 122, 124, 126, + 127, 127, 126, 127, 128, 128, 127, 124, 122, 123, 121, 121, 120, 118, 116, 116, + 118, 119, 120, 120, 119, 115, 111, 108, 106, 107, 107, 107, 106, 103, 102, 101, + 100, 88, 80, 65, 46, 43, 53, 54, 56, 255, 255, 255, 255, 70, 62, 53, + 46, 44, 43, 45, 50, 53, 51, 51, 52, 50, 45, 41, 41, 42, 41, 40, + 39, 38, 38, 38, 38, 40, 43, 47, 53, 59, 62, 65, 68, 72, 73, 73, + 72, 73, 74, 78, 81, 83, 85, 85, 87, 89, 91, 86, 89, 95, 99, 97, + 96, 100, 106, 103, 102, 99, 95, 88, 85, 83, 84, 88, 95, 106, 115, 122, + 125, 124, 123, 124, 125, 125, 125, 124, 121, 119, 117, 113, 115, 117, 119, 121, + 122, 122, 122, 124, 123, 124, 123, 121, 119, 121, 122, 124, 124, 123, 124, 126, + 125, 123, 120, 121, 120, 120, 119, 118, 116, 114, 114, 114, 115, 118, 118, 117, + 116, 112, 110, 111, 111, 111, 110, 107, 104, 101, 100, 100, 90, 81, 66, 46, + 42, 51, 52, 57, 255, 255, 255, 255, 71, 64, 52, 44, 41, 41, 46, 50, + 52, 50, 50, 50, 47, 42, 43, 42, 41, 39, 38, 37, 37, 36, 38, 39, + 42, 46, 53, 59, 63, 67, 66, 69, 71, 73, 72, 71, 72, 73, 76, 78, + 82, 82, 84, 84, 89, 90, 90, 94, 98, 100, 99, 96, 95, 97, 95, 96, + 93, 86, 77, 71, 72, 72, 76, 78, 82, 89, 100, 111, 121, 127, 118, 119, + 120, 121, 119, 118, 115, 114, 110, 111, 112, 114, 115, 115, 116, 116, 120, 120, + 121, 120, 119, 118, 117, 117, 121, 120, 121, 122, 123, 122, 120, 117, 117, 117, + 117, 117, 115, 114, 112, 111, 109, 112, 113, 116, 116, 114, 111, 110, 113, 113, + 112, 111, 108, 104, 101, 99, 102, 90, 83, 68, 46, 43, 51, 51, 56, 255, + 255, 255, 255, 72, 64, 53, 44, 39, 38, 43, 48, 50, 49, 49, 48, 44, + 39, 41, 40, 39, 37, 36, 36, 35, 36, 38, 40, 45, 50, 57, 64, 69, + 71, 69, 71, 72, 73, 71, 71, 72, 73, 75, 77, 79, 80, 81, 84, 88, + 91, 95, 96, 97, 98, 100, 99, 94, 88, 86, 86, 84, 77, 70, 66, 67, + 68, 68, 67, 67, 70, 78, 91, 103, 112, 106, 108, 111, 114, 116, 115, 113, + 113, 109, 110, 111, 112, 112, 111, 111, 110, 115, 115, 115, 116, 116, 115, 115, + 113, 116, 116, 117, 119, 120, 119, 115, 113, 114, 114, 114, 113, 113, 112, 111, + 109, 109, 111, 113, 115, 116, 115, 113, 111, 114, 114, 113, 112, 109, 106, 102, + 100, 102, 92, 84, 69, 47, 43, 49, 49, 53, 255, 255, 255, 255, 70, 63, + 53, 43, 37, 36, 42, 47, 48, 47, 46, 46, 43, 38, 41, 39, 36, 34, + 33, 33, 35, 37, 39, 41, 47, 54, 61, 67, 72, 73, 72, 74, 75, 74, + 72, 71, 72, 74, 76, 77, 78, 80, 81, 83, 89, 92, 93, 93, 93, 94, + 98, 99, 93, 83, 77, 75, 72, 68, 65, 62, 64, 66, 63, 63, 62, 64, + 68, 73, 79, 83, 90, 93, 98, 104, 107, 109, 109, 109, 106, 107, 108, 109, + 108, 108, 108, 107, 108, 108, 108, 110, 112, 112, 111, 108, 110, 111, 112, 115, + 116, 115, 110, 107, 108, 108, 109, 109, 109, 110, 109, 109, 109, 111, 114, 117, + 117, 116, 113, 112, 114, 113, 113, 112, 110, 107, 104, 104, 101, 91, 84, 69, + 47, 43, 50, 50, 118, 255, 255, 255, 255, 68, 62, 52, 43, 37, 34, 39, + 44, 47, 45, 45, 46, 42, 37, 39, 37, 35, 32, 32, 33, 35, 38, 39, + 43, 49, 57, 63, 70, 72, 74, 76, 77, 77, 76, 74, 73, 74, 75, 75, + 77, 78, 79, 80, 84, 89, 93, 90, 94, 95, 91, 90, 90, 85, 79, 70, + 66, 62, 60, 59, 61, 61, 61, 57, 57, 57, 56, 57, 59, 61, 62, 72, + 76, 82, 88, 93, 96, 97, 97, 96, 97, 98, 101, 102, 102, 103, 103, 99, + 99, 100, 103, 107, 108, 105, 103, 105, 105, 107, 109, 110, 109, 105, 101, 101, + 102, 103, 104, 106, 105, 105, 105, 106, 109, 111, 114, 115, 114, 111, 110, 107, + 108, 108, 108, 107, 104, 103, 101, 100, 90, 84, 71, 49, 44, 51, 50, 255, + 255, 255, 255, 192, 67, 62, 51, 41, 35, 33, 38, 43, 46, 44, 45, 45, + 43, 38, 38, 36, 33, 31, 31, 33, 37, 39, 40, 44, 51, 58, 65, 71, + 73, 75, 78, 79, 79, 76, 74, 74, 75, 77, 76, 77, 78, 79, 80, 84, + 89, 93, 90, 97, 99, 91, 83, 80, 77, 73, 65, 60, 55, 53, 55, 58, + 58, 56, 54, 51, 48, 45, 46, 50, 55, 58, 58, 62, 69, 75, 81, 84, + 84, 84, 84, 86, 88, 92, 94, 97, 97, 98, 93, 93, 95, 98, 104, 105, + 103, 99, 100, 101, 103, 105, 107, 104, 100, 97, 95, 96, 98, 100, 101, 103, + 103, 103, 102, 105, 107, 110, 110, 109, 106, 104, 99, 99, 100, 102, 101, 100, + 98, 97, 99, 89, 83, 71, 49, 44, 51, 50, 255, 255, 255, 255, 66, 68, + 62, 51, 39, 34, 33, 34, 38, 43, 48, 50, 49, 46, 44, 36, 36, 35, + 35, 35, 36, 37, 37, 43, 47, 53, 60, 67, 71, 75, 77, 79, 77, 77, + 74, 73, 72, 70, 69, 75, 77, 80, 82, 84, 87, 87, 88, 89, 89, 88, + 85, 80, 75, 71, 70, 62, 58, 55, 52, 53, 56, 56, 56, 54, 52, 49, + 46, 44, 44, 46, 47, 51, 53, 56, 60, 64, 69, 72, 73, 74, 78, 83, + 86, 87, 88, 91, 92, 94, 94, 96, 97, 97, 98, 98, 97, 97, 97, 97, + 98, 99, 99, 100, 99, 93, 92, 91, 93, 95, 99, 99, 99, 101, 103, 106, + 107, 106, 104, 101, 97, 91, 90, 89, 92, 97, 99, 100, 99, 97, 90, 87, + 73, 50, 44, 50, 50, 255, 255, 255, 255, 68, 69, 63, 51, 39, 30, 28, + 32, 37, 45, 51, 53, 51, 48, 45, 37, 37, 36, 36, 36, 38, 39, 40, + 42, 47, 53, 61, 67, 71, 74, 74, 75, 76, 77, 77, 77, 77, 76, 76, + 80, 81, 83, 84, 85, 87, 89, 89, 85, 85, 84, 82, 77, 72, 69, 67, + 63, 60, 57, 55, 54, 54, 51, 49, 52, 50, 48, 45, 43, 42, 41, 41, + 44, 45, 47, 49, 52, 54, 57, 57, 60, 64, 69, 75, 78, 80, 84, 86, + 88, 88, 90, 91, 92, 93, 94, 95, 93, 93, 93, 91, 92, 91, 91, 90, + 85, 83, 81, 82, 84, 87, 86, 87, 84, 86, 88, 89, 90, 87, 84, 84, + 82, 81, 80, 82, 85, 89, 88, 87, 89, 83, 82, 71, 49, 44, 51, 51, + 255, 255, 255, 255, 69, 70, 65, 52, 39, 30, 26, 32, 37, 45, 52, 54, + 51, 45, 41, 38, 37, 37, 37, 38, 40, 41, 43, 41, 46, 54, 62, 69, + 73, 74, 74, 73, 73, 76, 78, 80, 81, 81, 81, 84, 84, 84, 83, 84, + 85, 86, 87, 83, 82, 80, 77, 73, 68, 63, 62, 60, 59, 56, 55, 53, + 49, 44, 40, 49, 49, 48, 46, 45, 44, 43, 43, 44, 44, 45, 45, 47, + 47, 48, 47, 51, 55, 61, 67, 71, 76, 80, 84, 83, 83, 84, 85, 87, + 88, 91, 92, 92, 91, 91, 89, 89, 86, 86, 86, 79, 77, 75, 75, 76, + 78, 78, 77, 73, 73, 74, 75, 74, 74, 74, 73, 72, 71, 70, 72, 74, + 76, 76, 76, 80, 77, 77, 69, 49, 45, 51, 119, 255, 255, 255, 192, 70, + 71, 67, 57, 45, 35, 30, 35, 40, 47, 51, 51, 46, 40, 35, 37, 37, + 35, 36, 38, 40, 42, 45, 44, 50, 58, 66, 73, 75, 75, 75, 75, 75, + 75, 77, 79, 81, 84, 86, 85, 85, 83, 82, 81, 81, 82, 82, 81, 79, + 77, 74, 72, 67, 62, 59, 57, 54, 51, 48, 47, 45, 41, 37, 42, 43, + 43, 44, 44, 44, 42, 42, 46, 46, 46, 45, 44, 45, 45, 44, 46, 49, + 55, 61, 65, 69, 75, 79, 82, 81, 81, 82, 82, 84, 87, 88, 88, 88, + 87, 85, 84, 83, 82, 81, 75, 72, 69, 66, 67, 68, 68, 68, 64, 64, + 64, 64, 64, 65, 66, 67, 66, 66, 65, 66, 69, 71, 74, 75, 78, 74, + 76, 68, 49, 44, 51, 255, 255, 255, 255, 68, 69, 72, 70, 63, 54, 45, + 40, 43, 46, 49, 51, 48, 43, 35, 30, 34, 33, 33, 33, 36, 39, 44, + 45, 49, 53, 63, 71, 76, 79, 79, 79, 81, 78, 75, 73, 74, 78, 83, + 87, 88, 87, 85, 83, 81, 80, 79, 79, 80, 77, 75, 73, 71, 66, 61, + 56, 54, 51, 46, 45, 44, 44, 45, 44, 39, 40, 40, 40, 40, 38, 37, + 36, 41, 41, 40, 41, 41, 41, 40, 41, 41, 43, 49, 52, 56, 61, 66, + 70, 78, 78, 78, 78, 79, 78, 80, 80, 80, 80, 80, 78, 77, 75, 75, + 74, 67, 63, 59, 56, 57, 57, 58, 57, 52, 52, 52, 52, 54, 55, 57, + 58, 59, 60, 61, 63, 65, 70, 74, 77, 80, 76, 78, 69, 50, 43, 49, + 255, 255, 255, 255, 68, 70, 72, 72, 68, 63, 56, 52, 54, 53, 52, 50, + 45, 39, 34, 30, 31, 30, 30, 30, 34, 39, 43, 46, 54, 57, 65, 72, + 78, 81, 82, 82, 85, 81, 77, 74, 74, 78, 82, 86, 89, 89, 88, 87, + 84, 82, 79, 78, 78, 75, 71, 69, 68, 65, 59, 53, 53, 49, 45, 44, + 45, 48, 50, 50, 49, 49, 46, 44, 42, 40, 39, 38, 37, 38, 39, 39, + 40, 40, 41, 42, 42, 44, 48, 50, 53, 55, 60, 64, 70, 71, 73, 73, + 75, 75, 74, 73, 80, 79, 77, 76, 72, 71, 70, 68, 63, 58, 53, 51, + 51, 52, 53, 52, 48, 48, 48, 49, 51, 53, 54, 55, 55, 56, 58, 60, + 63, 67, 74, 78, 85, 80, 79, 69, 48, 42, 48, 255, 255, 255, 255, 70, + 70, 71, 71, 70, 68, 63, 60, 57, 54, 49, 44, 38, 34, 31, 30, 30, + 29, 29, 29, 34, 39, 44, 48, 55, 59, 66, 72, 78, 81, 83, 84, 84, + 82, 81, 80, 79, 81, 82, 84, 89, 89, 90, 89, 87, 83, 79, 76, 74, + 70, 65, 64, 63, 60, 53, 47, 46, 45, 43, 44, 47, 48, 50, 49, 52, + 51, 49, 47, 45, 44, 44, 45, 39, 39, 39, 40, 41, 41, 42, 42, 42, + 43, 46, 48, 49, 53, 57, 61, 62, 65, 69, 73, 76, 75, 74, 73, 83, + 81, 78, 74, 70, 66, 63, 62, 59, 54, 49, 46, 46, 47, 49, 48, 46, + 47, 49, 51, 54, 55, 56, 57, 55, 57, 59, 60, 62, 65, 72, 78, 87, + 81, 79, 68, 47, 42, 48, 255, 255, 255, 255, 71, 70, 70, 70, 70, 68, + 65, 63, 54, 50, 43, 36, 31, 29, 29, 30, 29, 29, 28, 29, 33, 39, + 46, 50, 56, 59, 64, 71, 76, 80, 83, 83, 83, 84, 84, 84, 85, 84, + 84, 83, 85, 86, 88, 88, 86, 81, 75, 72, 70, 66, 60, 59, 59, 56, + 49, 42, 40, 41, 41, 43, 45, 46, 45, 43, 43, 42, 41, 40, 41, 44, + 47, 49, 37, 37, 37, 38, 38, 38, 38, 38, 35, 36, 39, 40, 42, 45, + 51, 54, 59, 63, 69, 75, 79, 79, 77, 76, 80, 78, 74, 69, 64, 57, + 53, 51, 51, 46, 41, 37, 37, 39, 40, 41, 43, 45, 47, 50, 51, 53, + 53, 54, 58, 60, 62, 61, 61, 65, 72, 78, 87, 80, 78, 66, 45, 41, + 48, 255, 255, 255, 255, 69, 69, 70, 70, 75, 75, 68, 57, 46, 39, 33, + 33, 29, 26, 27, 32, 26, 27, 29, 31, 35, 41, 48, 54, 52, 58, 67, + 74, 79, 83, 86, 88, 77, 82, 86, 86, 84, 83, 85, 89, 85, 86, 86, + 88, 88, 83, 76, 70, 65, 63, 60, 57, 54, 49, 43, 39, 36, 37, 39, + 39, 39, 37, 35, 33, 29, 35, 36, 31, 32, 36, 42, 43, 46, 47, 45, + 42, 37, 37, 40, 44, 38, 36, 37, 41, 43, 43, 48, 55, 59, 67, 76, + 79, 84, 85, 83, 79, 78, 75, 71, 67, 62, 59, 56, 56, 48, 46, 42, + 40, 37, 35, 36, 36, 45, 42, 40, 44, 50, 56, 58, 57, 63, 64, 67, + 68, 69, 70, 72, 74, 83, 83, 73, 58, 47, 45, 47, 255, 255, 255, 255, + 68, 69, 67, 66, 69, 68, 59, 49, 41, 35, 31, 32, 29, 25, 26, 30, + 27, 29, 31, 33, 37, 42, 49, 54, 56, 61, 69, 74, 78, 82, 86, 88, + 87, 87, 86, 87, 88, 87, 85, 83, 89, 91, 90, 90, 86, 81, 76, 73, + 63, 59, 55, 52, 50, 47, 43, 40, 39, 38, 36, 34, 31, 28, 27, 26, + 23, 28, 33, 35, 38, 44, 45, 43, 43, 42, 43, 42, 41, 40, 41, 42, + 40, 38, 40, 45, 48, 47, 54, 60, 63, 74, 85, 92, 96, 97, 92, 85, + 80, 74, 67, 61, 56, 53, 51, 52, 45, 43, 39, 36, 35, 36, 38, 40, + 40, 40, 41, 44, 47, 50, 50, 50, 52, 59, 65, 68, 67, 68, 71, 75, + 81, 81, 73, 59, 48, 46, 255, 255, 255, 255, 192, 67, 67, 65, 62, 62, + 60, 51, 40, 36, 33, 31, 32, 31, 27, 29, 31, 29, 30, 33, 35, 37, + 43, 50, 55, 59, 63, 69, 74, 77, 82, 85, 87, 92, 89, 87, 89, 92, + 93, 90, 85, 84, 88, 92, 92, 89, 84, 78, 75, 67, 63, 56, 52, 50, + 51, 49, 48, 47, 44, 39, 33, 29, 25, 23, 22, 22, 27, 34, 43, 51, + 57, 54, 47, 38, 39, 39, 40, 42, 43, 42, 40, 36, 36, 39, 44, 48, + 50, 56, 63, 70, 82, 97, 106, 110, 111, 104, 95, 83, 75, 64, 53, 49, + 46, 46, 45, 43, 41, 38, 37, 37, 40, 43, 46, 41, 43, 46, 47, 47, + 46, 46, 47, 42, 50, 59, 64, 65, 67, 72, 76, 79, 79, 73, 60, 50, + 47, 255, 255, 255, 255, 63, 65, 64, 60, 57, 57, 55, 46, 34, 33, 33, + 33, 35, 35, 33, 33, 33, 29, 31, 33, 34, 37, 42, 48, 53, 58, 62, + 67, 71, 75, 80, 85, 88, 89, 88, 89, 92, 95, 98, 95, 94, 80, 83, + 88, 95, 98, 96, 89, 83, 77, 73, 65, 60, 59, 60, 60, 61, 58, 55, + 51, 47, 41, 37, 33, 31, 34, 38, 44, 53, 64, 72, 66, 56, 43, 39, + 36, 37, 40, 42, 40, 38, 36, 35, 38, 45, 49, 52, 58, 66, 75, 89, + 102, 113, 119, 120, 114, 105, 89, 77, 61, 49, 42, 41, 40, 40, 42, 41, + 38, 38, 39, 43, 49, 52, 49, 51, 54, 53, 49, 47, 49, 50, 44, 47, + 52, 57, 62, 67, 72, 75, 75, 77, 73, 59, 50, 47, 255, 255, 255, 255, + 59, 58, 56, 53, 50, 51, 50, 42, 32, 30, 31, 33, 33, 35, 36, 35, + 34, 29, 30, 32, 35, 38, 40, 46, 49, 55, 59, 65, 69, 73, 79, 84, + 87, 86, 89, 93, 95, 94, 94, 96, 99, 91, 85, 81, 86, 95, 100, 97, + 92, 82, 77, 70, 65, 65, 67, 67, 67, 70, 70, 71, 69, 66, 61, 55, + 53, 54, 54, 55, 60, 72, 79, 75, 66, 53, 47, 40, 38, 39, 41, 41, + 40, 41, 40, 44, 50, 54, 55, 62, 69, 79, 90, 103, 111, 118, 121, 117, + 111, 96, 81, 62, 47, 40, 39, 39, 39, 39, 38, 37, 35, 38, 41, 46, + 49, 49, 51, 52, 51, 47, 45, 48, 51, 53, 48, 45, 49, 57, 67, 71, + 73, 75, 76, 71, 59, 49, 47, 255, 255, 255, 255, 54, 51, 50, 46, 44, + 45, 46, 39, 30, 26, 29, 32, 30, 32, 35, 35, 33, 29, 31, 33, 35, + 37, 40, 44, 47, 55, 58, 65, 69, 72, 76, 80, 83, 86, 91, 95, 95, + 91, 90, 92, 96, 100, 87, 71, 67, 74, 82, 87, 88, 77, 74, 69, 67, + 68, 70, 71, 71, 79, 81, 86, 87, 87, 83, 79, 74, 74, 72, 69, 69, + 76, 83, 80, 72, 66, 61, 53, 47, 46, 46, 49, 49, 47, 47, 48, 53, + 55, 56, 61, 68, 79, 90, 101, 109, 116, 119, 117, 112, 101, 84, 63, 46, + 39, 39, 38, 36, 35, 34, 32, 32, 32, 34, 37, 38, 40, 41, 43, 43, + 43, 42, 43, 44, 56, 50, 44, 44, 53, 62, 68, 71, 76, 77, 72, 57, + 47, 45, 255, 255, 255, 255, 51, 51, 50, 46, 44, 47, 47, 41, 31, 27, + 31, 32, 29, 31, 35, 37, 34, 31, 33, 34, 36, 38, 40, 44, 46, 57, + 62, 68, 71, 74, 75, 76, 78, 86, 87, 90, 92, 91, 91, 91, 92, 95, + 88, 76, 69, 67, 70, 75, 78, 71, 71, 71, 73, 77, 80, 80, 80, 84, + 86, 90, 93, 95, 94, 91, 90, 90, 87, 83, 79, 83, 88, 85, 79, 77, + 74, 70, 64, 59, 58, 60, 63, 59, 57, 59, 62, 62, 62, 66, 73, 79, + 89, 101, 108, 114, 118, 116, 110, 103, 86, 63, 46, 40, 39, 38, 35, 33, + 31, 31, 30, 29, 29, 28, 29, 31, 33, 37, 43, 46, 46, 43, 40, 50, + 48, 46, 46, 47, 55, 65, 73, 79, 78, 71, 56, 45, 43, 255, 255, 255, + 255, 48, 55, 54, 51, 47, 49, 51, 45, 35, 29, 34, 33, 30, 32, 38, + 40, 37, 31, 34, 37, 39, 40, 41, 45, 47, 61, 65, 71, 74, 75, 74, + 74, 74, 84, 81, 82, 87, 92, 96, 94, 90, 89, 93, 93, 90, 81, 75, + 74, 77, 70, 71, 75, 82, 87, 91, 91, 90, 85, 87, 89, 93, 94, 95, + 96, 96, 98, 97, 93, 90, 90, 94, 92, 86, 82, 83, 82, 77, 70, 68, + 70, 72, 76, 74, 75, 77, 77, 75, 78, 84, 78, 89, 102, 110, 116, 119, + 114, 107, 104, 86, 63, 46, 40, 38, 37, 34, 34, 34, 33, 32, 30, 27, + 25, 23, 28, 32, 39, 48, 54, 54, 46, 39, 40, 46, 51, 48, 45, 49, + 62, 74, 80, 79, 70, 55, 44, 42, 255, 255, 255, 255, 51, 48, 56, 47, + 50, 49, 45, 54, 43, 36, 39, 38, 32, 33, 37, 38, 33, 34, 35, 36, + 35, 36, 39, 43, 47, 57, 63, 68, 73, 76, 76, 78, 79, 77, 78, 79, + 80, 81, 83, 85, 85, 94, 96, 100, 100, 99, 95, 89, 86, 84, 85, 85, + 87, 93, 99, 104, 108, 97, 94, 92, 91, 92, 94, 94, 95, 98, 98, 97, + 95, 90, 89, 89, 91, 84, 85, 86, 85, 85, 83, 81, 79, 82, 82, 82, + 82, 82, 83, 83, 84, 86, 94, 103, 109, 117, 120, 117, 110, 102, 85, 64, + 52, 50, 50, 47, 42, 44, 44, 44, 45, 45, 43, 38, 34, 37, 34, 37, + 51, 63, 66, 56, 44, 36, 41, 48, 53, 50, 49, 58, 69, 79, 79, 72, + 58, 47, 45, 255, 255, 255, 255, 48, 43, 52, 44, 47, 48, 46, 54, 46, + 36, 38, 37, 33, 34, 39, 40, 38, 39, 38, 36, 34, 34, 38, 44, 49, + 56, 61, 67, 73, 76, 76, 78, 79, 77, 78, 79, 81, 84, 87, 89, 90, + 91, 93, 98, 101, 104, 104, 102, 102, 99, 97, 95, 94, 95, 98, 102, 105, + 103, 100, 97, 94, 92, 89, 86, 83, 84, 86, 89, 88, 88, 88, 90, 91, + 90, 89, 89, 90, 91, 92, 93, 94, 93, 92, 92, 91, 90, 88, 86, 86, + 87, 94, 101, 107, 114, 118, 115, 109, 104, 89, 71, 60, 59, 62, 62, 61, + 65, 65, 68, 71, 71, 67, 62, 57, 55, 53, 55, 64, 74, 75, 66, 56, + 52, 50, 51, 57, 59, 59, 64, 71, 80, 80, 72, 58, 47, 45, 255, 255, + 255, 255, 46, 39, 49, 41, 46, 47, 45, 56, 48, 39, 40, 40, 36, 37, + 42, 46, 44, 43, 41, 36, 33, 33, 36, 44, 49, 54, 60, 66, 70, 75, + 75, 77, 78, 77, 78, 79, 81, 85, 89, 93, 96, 92, 96, 100, 106, 110, + 113, 114, 114, 109, 104, 98, 92, 89, 88, 89, 90, 97, 95, 92, 90, 89, + 87, 84, 81, 76, 79, 83, 86, 86, 88, 90, 92, 92, 91, 93, 94, 98, + 102, 106, 108, 106, 105, 103, 99, 95, 91, 88, 87, 88, 94, 100, 104, 110, + 115, 114, 108, 105, 95, 81, 72, 73, 77, 82, 84, 87, 89, 92, 96, 98, + 94, 87, 82, 78, 75, 74, 79, 84, 86, 78, 70, 69, 62, 57, 62, 69, + 73, 75, 79, 80, 80, 72, 58, 47, 45, 255, 255, 255, 255, 44, 40, 49, + 41, 45, 46, 45, 56, 48, 48, 46, 43, 40, 40, 43, 46, 47, 42, 42, + 40, 36, 35, 38, 43, 46, 53, 58, 65, 71, 73, 74, 76, 77, 79, 79, + 81, 81, 86, 91, 94, 96, 97, 100, 106, 110, 114, 115, 113, 113, 111, 107, + 99, 91, 86, 82, 81, 81, 77, 76, 73, 74, 77, 80, 81, 81, 75, 78, + 82, 85, 87, 88, 89, 91, 89, 91, 95, 100, 105, 109, 112, 113, 113, 110, + 107, 102, 96, 90, 84, 81, 88, 93, 97, 100, 106, 112, 113, 109, 105, 98, + 90, 85, 86, 91, 95, 97, 97, 98, 100, 103, 103, 101, 97, 93, 91, 88, + 85, 87, 91, 92, 88, 83, 83, 74, 70, 73, 76, 78, 81, 85, 81, 81, + 73, 59, 47, 115, 255, 255, 255, 255, 44, 43, 52, 42, 45, 45, 44, 54, + 46, 52, 47, 41, 38, 36, 36, 39, 42, 40, 42, 44, 44, 42, 41, 42, + 43, 52, 58, 65, 70, 73, 74, 75, 76, 81, 81, 82, 83, 86, 89, 92, + 94, 97, 102, 107, 112, 114, 112, 108, 105, 107, 105, 101, 97, 95, 94, 95, + 95, 77, 72, 67, 65, 65, 69, 71, 73, 73, 75, 79, 81, 84, 85, 88, + 91, 90, 95, 102, 108, 113, 114, 112, 112, 113, 110, 108, 102, 95, 89, 83, + 79, 88, 92, 96, 99, 105, 112, 112, 108, 103, 99, 96, 94, 95, 98, 98, + 98, 96, 95, 92, 92, 93, 94, 92, 91, 92, 91, 89, 90, 93, 95, 95, + 94, 93, 90, 87, 85, 79, 75, 78, 85, 82, 82, 74, 59, 48, 255, 255, + 255, 255, 255, 185, 46, 54, 42, 44, 44, 43, 52, 44, 51, 44, 36, 33, + 29, 26, 28, 32, 40, 44, 49, 51, 50, 47, 45, 44, 55, 59, 66, 70, + 72, 72, 73, 74, 80, 81, 83, 85, 89, 90, 93, 93, 95, 98, 104, 108, + 109, 106, 102, 100, 96, 97, 99, 102, 106, 108, 111, 113, 107, 100, 91, 84, + 79, 76, 75, 75, 73, 75, 78, 81, 84, 88, 92, 95, 100, 105, 111, 117, + 119, 116, 112, 109, 106, 106, 104, 101, 96, 89, 84, 81, 85, 91, 95, 99, + 106, 113, 114, 110, 105, 100, 96, 96, 98, 100, 98, 95, 94, 90, 84, 82, + 83, 83, 83, 82, 86, 87, 87, 88, 90, 93, 96, 99, 99, 101, 101, 96, + 82, 70, 71, 80, 83, 83, 75, 60, 48, 255, 255, 255, 255, 255, 255, 45, + 52, 40, 42, 42, 40, 52, 44, 51, 41, 32, 28, 24, 20, 23, 29, 44, + 49, 55, 59, 58, 54, 51, 50, 58, 62, 68, 71, 73, 72, 72, 74, 78, + 80, 84, 89, 92, 95, 95, 96, 98, 99, 101, 101, 100, 98, 97, 95, 92, + 95, 100, 106, 111, 115, 117, 118, 127, 122, 116, 109, 105, 100, 96, 93, 90, + 91, 91, 92, 93, 97, 102, 107, 112, 115, 118, 120, 118, 114, 108, 103, 96, + 97, 97, 96, 93, 89, 84, 81, 83, 90, 95, 100, 107, 115, 115, 111, 110, + 102, 94, 93, 98, 102, 100, 96, 91, 86, 81, 78, 77, 76, 74, 72, 76, + 78, 80, 82, 83, 87, 91, 96, 96, 100, 104, 101, 87, 75, 74, 80, 84, + 84, 75, 60, 48, 255, 255, 255, 255, 255, 255, 42, 49, 38, 40, 40, 40, + 50, 44, 52, 41, 32, 28, 24, 20, 24, 30, 49, 53, 59, 63, 62, 59, + 56, 56, 59, 63, 69, 72, 73, 72, 72, 73, 76, 80, 86, 92, 96, 98, + 99, 99, 105, 103, 99, 95, 92, 92, 92, 92, 98, 101, 106, 112, 116, 118, + 118, 117, 121, 120, 119, 120, 120, 118, 115, 111, 112, 112, 109, 105, 105, 106, + 111, 115, 120, 120, 120, 119, 115, 108, 103, 100, 88, 89, 91, 91, 89, 86, + 82, 80, 82, 89, 95, 101, 109, 117, 116, 112, 114, 104, 92, 91, 97, 104, + 102, 98, 87, 85, 81, 78, 75, 73, 69, 66, 68, 71, 73, 75, 77, 79, + 86, 90, 89, 94, 100, 102, 94, 84, 81, 85, 84, 84, 75, 60, 48, 255, + 255, 255, 255, 255, 255, 40, 47, 45, 37, 40, 49, 50, 42, 45, 38, 31, + 26, 23, 22, 30, 38, 54, 68, 72, 61, 53, 59, 65, 65, 65, 67, 71, + 72, 72, 71, 73, 73, 74, 80, 89, 95, 99, 99, 100, 99, 94, 95, 97, + 101, 104, 106, 108, 108, 112, 111, 110, 110, 110, 111, 112, 113, 118, 119, 121, + 121, 122, 123, 122, 122, 122, 123, 123, 122, 120, 117, 115, 113, 117, 119, 120, + 120, 114, 106, 98, 92, 83, 84, 85, 87, 87, 87, 85, 85, 82, 87, 93, + 103, 113, 119, 121, 120, 112, 103, 97, 96, 97, 97, 100, 105, 101, 92, 80, + 70, 66, 65, 63, 61, 63, 65, 65, 64, 66, 69, 74, 78, 88, 91, 93, + 95, 94, 91, 87, 85, 90, 84, 73, 58, 47, 255, 255, 255, 255, 255, 255, + 42, 49, 47, 40, 42, 51, 52, 45, 44, 37, 30, 26, 22, 24, 34, 45, + 64, 73, 75, 64, 58, 61, 64, 61, 67, 69, 71, 72, 71, 71, 73, 74, + 77, 82, 90, 94, 96, 96, 96, 96, 94, 96, 99, 104, 108, 112, 114, 114, + 116, 115, 113, 113, 113, 113, 115, 116, 119, 119, 120, 121, 123, 123, 123, 123, + 123, 123, 122, 121, 119, 117, 116, 114, 117, 117, 116, 115, 110, 105, 99, 95, + 86, 85, 86, 85, 84, 84, 83, 82, 82, 86, 93, 103, 113, 119, 122, 122, + 112, 104, 96, 95, 95, 96, 100, 105, 109, 101, 91, 81, 73, 64, 57, 51, + 53, 55, 56, 56, 56, 58, 61, 64, 78, 83, 90, 95, 96, 95, 90, 86, + 91, 85, 72, 58, 47, 255, 255, 255, 255, 255, 255, 42, 48, 47, 40, 42, + 49, 51, 47, 47, 39, 31, 26, 23, 25, 37, 50, 72, 77, 76, 67, 63, + 67, 67, 63, 71, 71, 73, 72, 71, 71, 74, 76, 81, 85, 91, 95, 95, + 93, 93, 94, 96, 100, 104, 110, 115, 118, 121, 122, 119, 118, 117, 116, 115, + 116, 117, 117, 119, 119, 121, 122, 122, 123, 123, 123, 122, 122, 120, 119, 117, + 117, 116, 116, 115, 115, 113, 111, 107, 104, 101, 98, 91, 90, 87, 84, 82, + 80, 79, 78, 80, 85, 92, 102, 113, 120, 123, 123, 113, 104, 94, 93, 93, + 95, 100, 107, 114, 110, 104, 95, 86, 74, 62, 54, 51, 52, 53, 52, 52, + 52, 55, 57, 72, 78, 88, 97, 103, 103, 102, 100, 93, 86, 72, 56, 46, + 255, 255, 255, 255, 255, 255, 40, 45, 44, 39, 39, 45, 49, 48, 51, 43, + 35, 28, 23, 26, 40, 54, 74, 75, 72, 67, 67, 71, 72, 69, 74, 75, + 74, 74, 72, 73, 76, 78, 84, 87, 92, 95, 95, 95, 96, 96, 102, 105, + 110, 116, 120, 123, 125, 126, 123, 121, 119, 117, 117, 117, 119, 119, 118, 119, + 121, 122, 123, 123, 123, 122, 120, 119, 118, 116, 116, 116, 117, 118, 115, 115, + 115, 112, 110, 106, 103, 102, 97, 95, 90, 86, 81, 79, 78, 78, 80, 84, + 91, 102, 112, 120, 124, 125, 115, 104, 94, 91, 92, 93, 100, 107, 111, 111, + 110, 107, 101, 92, 83, 78, 68, 68, 66, 63, 62, 62, 67, 70, 72, 75, + 83, 92, 99, 106, 110, 113, 97, 87, 72, 56, 46, 255, 255, 255, 255, 255, + 255, 183, 44, 43, 40, 39, 44, 49, 50, 50, 44, 38, 30, 25, 29, 44, + 61, 75, 74, 70, 67, 69, 72, 73, 70, 77, 77, 78, 76, 76, 76, 79, + 81, 85, 88, 92, 95, 96, 98, 101, 102, 109, 110, 115, 119, 122, 124, 124, + 124, 122, 121, 119, 118, 117, 117, 118, 118, 118, 119, 120, 121, 122, 123, 123, + 122, 118, 117, 116, 116, 116, 118, 119, 120, 115, 116, 117, 116, 114, 109, 104, + 101, 101, 98, 93, 88, 84, 80, 79, 79, 81, 83, 90, 101, 111, 119, 123, + 124, 116, 104, 94, 90, 91, 93, 98, 106, 107, 108, 109, 109, 108, 105, 103, + 101, 94, 92, 87, 82, 80, 81, 86, 91, 82, 81, 81, 83, 88, 96, 105, + 110, 100, 88, 72, 55, 46, 255, 255, 255, 255, 255, 255, 255, 45, 45, 42, + 41, 44, 50, 55, 49, 45, 39, 34, 29, 33, 49, 67, 79, 76, 71, 68, + 68, 69, 70, 70, 78, 80, 81, 81, 79, 81, 82, 86, 86, 89, 93, 95, + 98, 100, 104, 107, 111, 114, 118, 122, 123, 122, 120, 119, 119, 117, 116, 115, + 114, 115, 116, 117, 118, 118, 120, 121, 122, 122, 122, 122, 116, 116, 116, 116, + 118, 119, 121, 121, 117, 117, 118, 117, 113, 107, 101, 97, 100, 98, 94, 89, + 86, 83, 81, 80, 80, 84, 89, 99, 109, 118, 122, 124, 118, 107, 96, 91, + 91, 92, 98, 104, 105, 106, 108, 107, 108, 108, 110, 111, 110, 108, 103, 96, + 94, 97, 102, 107, 101, 98, 93, 89, 90, 95, 101, 105, 103, 91, 72, 54, + 45, 255, 255, 255, 255, 255, 255, 255, 45, 45, 43, 41, 43, 50, 57, 54, + 51, 45, 37, 31, 32, 47, 65, 78, 75, 72, 69, 67, 68, 71, 74, 79, + 80, 83, 85, 85, 85, 87, 88, 87, 89, 92, 94, 96, 99, 104, 107, 111, + 114, 117, 121, 121, 120, 118, 116, 115, 114, 112, 111, 111, 112, 114, 115, 117, + 117, 119, 120, 122, 122, 122, 122, 113, 115, 116, 118, 120, 121, 122, 122, 117, + 117, 114, 111, 106, 100, 95, 93, 95, 95, 93, 90, 88, 85, 82, 81, 82, + 83, 89, 98, 108, 116, 121, 122, 119, 108, 98, 94, 92, 91, 96, 101, 105, + 107, 109, 109, 107, 108, 110, 114, 113, 112, 109, 106, 104, 104, 107, 109, 111, + 109, 108, 106, 105, 105, 105, 105, 106, 92, 71, 54, 45, 255, 255, 255, 255, + 255, 255, 255, 42, 42, 41, 39, 40, 48, 56, 63, 58, 50, 40, 31, 29, + 42, 57, 73, 72, 70, 70, 68, 69, 75, 81, 78, 81, 85, 88, 89, 89, + 89, 90, 88, 89, 92, 92, 95, 97, 102, 105, 111, 113, 116, 120, 121, 119, + 116, 114, 112, 111, 110, 110, 110, 111, 112, 113, 117, 118, 120, 120, 121, 122, + 121, 121, 112, 114, 116, 119, 121, 122, 122, 121, 119, 116, 110, 104, 99, 94, + 91, 89, 91, 92, 92, 91, 88, 86, 82, 80, 82, 84, 88, 97, 106, 115, + 119, 121, 120, 109, 99, 95, 93, 92, 95, 99, 107, 109, 112, 110, 110, 110, + 112, 115, 111, 111, 112, 111, 108, 107, 106, 108, 104, 107, 113, 115, 115, 113, + 108, 104, 107, 92, 71, 53, 45, 255, 255, 255, 255, 255, 255, 255, 255, 37, + 38, 39, 42, 52, 65, 67, 63, 56, 46, 37, 35, 38, 43, 59, 71, 74, + 65, 61, 69, 74, 74, 74, 76, 80, 84, 87, 88, 89, 89, 84, 87, 90, + 94, 97, 99, 101, 101, 110, 113, 116, 118, 118, 114, 110, 107, 109, 106, 102, + 100, 100, 102, 104, 107, 111, 112, 113, 114, 114, 114, 114, 113, 110, 111, 113, + 117, 120, 120, 116, 112, 103, 102, 99, 95, 91, 87, 85, 83, 90, 89, 89, + 88, 86, 85, 83, 82, 80, 85, 92, 100, 104, 110, 119, 125, 115, 111, 105, + 97, 92, 92, 94, 97, 103, 108, 114, 116, 113, 110, 108, 108, 111, 113, 114, + 113, 110, 107, 105, 104, 112, 113, 114, 115, 115, 115, 114, 114, 101, 94, 78, + 56, 41, 255, 255, 255, 255, 255, 255, 255, 255, 39, 42, 41, 45, 54, 65, + 76, 74, 69, 63, 54, 47, 42, 39, 52, 66, 71, 66, 64, 71, 75, 73, + 73, 77, 81, 86, 88, 89, 89, 88, 85, 85, 88, 92, 95, 97, 100, 101, + 111, 113, 116, 118, 118, 115, 110, 108, 105, 102, 99, 96, 96, 97, 101, 102, + 109, 109, 110, 112, 113, 114, 114, 115, 116, 115, 115, 115, 115, 111, 104, 99, + 92, 92, 90, 87, 86, 83, 82, 81, 85, 86, 87, 88, 86, 85, 83, 82, + 80, 85, 93, 101, 109, 114, 120, 123, 116, 112, 105, 98, 94, 92, 92, 92, + 98, 102, 109, 112, 112, 111, 111, 111, 111, 113, 115, 114, 112, 111, 110, 110, + 115, 116, 116, 117, 117, 117, 117, 116, 103, 97, 79, 57, 43, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 41, 43, 45, 54, 64, 78, 81, 82, 83, 77, + 66, 53, 45, 46, 57, 65, 64, 66, 73, 75, 72, 73, 77, 82, 88, 90, + 90, 88, 87, 86, 85, 86, 88, 90, 95, 98, 101, 108, 111, 113, 114, 113, + 110, 107, 104, 101, 98, 94, 92, 91, 92, 94, 96, 104, 104, 105, 107, 109, + 111, 113, 115, 122, 121, 118, 116, 111, 103, 95, 89, 82, 81, 81, 81, 81, + 81, 83, 84, 83, 84, 86, 86, 86, 85, 84, 82, 84, 86, 93, 102, 111, + 118, 121, 123, 119, 112, 105, 99, 96, 93, 89, 84, 90, 94, 100, 105, 108, + 109, 110, 112, 110, 111, 113, 113, 112, 111, 112, 115, 116, 116, 117, 118, 117, + 117, 117, 115, 107, 99, 81, 59, 44, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 41, 41, 43, 51, 62, 77, 81, 87, 94, 95, 85, 71, 59, 47, 54, + 59, 59, 63, 70, 74, 72, 74, 79, 85, 90, 92, 91, 88, 85, 86, 85, + 83, 83, 87, 92, 97, 101, 105, 105, 106, 106, 106, 103, 101, 99, 97, 95, + 92, 90, 89, 90, 92, 94, 98, 98, 99, 101, 104, 108, 111, 112, 118, 116, + 113, 108, 101, 93, 86, 81, 75, 76, 76, 79, 81, 85, 88, 89, 87, 87, + 86, 85, 83, 83, 84, 84, 88, 88, 92, 100, 113, 121, 124, 126, 120, 113, + 105, 100, 99, 94, 87, 81, 82, 85, 88, 92, 97, 101, 106, 108, 106, 108, + 109, 109, 108, 108, 110, 113, 114, 115, 115, 116, 116, 115, 114, 114, 109, 101, + 81, 59, 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 41, 43, 52, + 62, 82, 86, 90, 96, 99, 95, 84, 75, 57, 58, 56, 56, 62, 71, 77, + 77, 77, 80, 86, 91, 93, 91, 87, 85, 85, 83, 80, 80, 82, 88, 95, + 100, 101, 101, 102, 100, 99, 97, 95, 94, 95, 93, 91, 89, 88, 89, 91, + 92, 95, 95, 97, 99, 102, 105, 108, 109, 108, 106, 102, 94, 86, 77, 72, + 70, 74, 75, 75, 78, 81, 87, 91, 93, 96, 92, 87, 83, 82, 83, 84, + 87, 92, 91, 92, 99, 111, 121, 127, 129, 123, 114, 104, 99, 98, 95, 89, + 82, 73, 72, 73, 77, 84, 93, 101, 105, 104, 106, 107, 107, 107, 106, 107, + 108, 111, 112, 113, 115, 115, 114, 114, 114, 110, 101, 80, 58, 46, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 42, 45, 56, 66, 94, 94, 95, 95, + 93, 89, 84, 80, 66, 61, 55, 55, 62, 71, 80, 82, 79, 83, 87, 91, + 93, 91, 88, 87, 83, 80, 78, 77, 80, 86, 92, 97, 98, 97, 95, 94, + 92, 91, 90, 90, 89, 88, 87, 87, 86, 88, 89, 90, 92, 94, 96, 99, + 101, 102, 103, 103, 101, 98, 92, 83, 74, 67, 66, 66, 72, 71, 72, 74, + 78, 82, 88, 90, 98, 94, 88, 83, 81, 82, 83, 86, 92, 91, 94, 100, + 109, 120, 126, 131, 123, 116, 106, 99, 96, 94, 91, 90, 70, 66, 62, 63, + 71, 82, 93, 98, 102, 104, 108, 109, 107, 107, 107, 108, 109, 110, 112, 115, + 116, 117, 116, 116, 109, 98, 78, 57, 45, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 44, 55, 67, 100, 98, 93, 86, 79, 75, 73, 74, 66, + 57, 49, 51, 60, 70, 78, 80, 82, 84, 88, 92, 92, 91, 89, 88, 81, + 79, 76, 77, 79, 84, 89, 94, 92, 90, 88, 85, 83, 82, 82, 82, 81, + 81, 81, 82, 83, 84, 85, 87, 86, 88, 91, 94, 95, 94, 93, 91, 87, + 84, 78, 69, 62, 59, 61, 65, 72, 71, 70, 71, 74, 78, 82, 84, 93, + 91, 88, 85, 84, 83, 83, 84, 87, 90, 98, 104, 111, 118, 125, 127, 123, + 117, 107, 98, 93, 94, 96, 99, 81, 72, 60, 55, 58, 68, 78, 84, 94, + 98, 104, 107, 107, 107, 106, 106, 106, 107, 109, 112, 114, 115, 116, 117, 106, + 96, 75, 54, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, + 54, 67, 98, 96, 89, 77, 67, 61, 63, 66, 59, 50, 42, 46, 57, 67, + 74, 77, 84, 85, 88, 91, 91, 91, 90, 89, 80, 78, 76, 76, 78, 83, + 89, 93, 84, 83, 80, 77, 75, 75, 74, 74, 76, 76, 77, 77, 79, 80, + 82, 84, 78, 80, 84, 87, 87, 85, 82, 80, 67, 64, 58, 53, 48, 49, + 56, 62, 74, 73, 71, 71, 72, 76, 80, 82, 86, 87, 88, 87, 87, 84, + 82, 81, 81, 90, 101, 109, 114, 117, 121, 124, 123, 118, 107, 97, 91, 93, + 99, 106, 95, 82, 65, 52, 50, 57, 65, 70, 86, 92, 99, 104, 105, 105, + 104, 104, 101, 103, 105, 108, 111, 113, 114, 114, 105, 93, 73, 53, 44, 114, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 59, 89, 86, 81, + 72, 64, 59, 58, 59, 50, 45, 41, 47, 60, 72, 78, 78, 83, 84, 86, + 87, 88, 89, 89, 89, 84, 81, 79, 79, 82, 84, 86, 86, 83, 79, 74, + 70, 70, 70, 70, 71, 75, 73, 73, 72, 73, 74, 76, 76, 77, 82, 84, + 83, 84, 84, 77, 65, 63, 58, 50, 44, 45, 52, 62, 68, 70, 71, 71, + 70, 69, 72, 78, 83, 85, 86, 87, 86, 86, 85, 82, 81, 87, 91, 97, + 105, 113, 118, 120, 120, 115, 112, 106, 100, 95, 93, 94, 94, 92, 89, 81, + 66, 51, 46, 50, 56, 72, 85, 94, 98, 98, 100, 98, 93, 96, 99, 103, + 105, 107, 108, 111, 112, 109, 92, 71, 54, 47, 45, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 209, 54, 78, 78, 77, 73, 67, 61, 58, 57, + 51, 49, 46, 50, 60, 70, 76, 79, 81, 82, 83, 85, 86, 87, 87, 87, + 83, 81, 79, 79, 81, 83, 82, 82, 75, 71, 66, 63, 63, 64, 63, 64, + 67, 67, 67, 66, 68, 70, 72, 72, 73, 77, 78, 75, 75, 74, 67, 57, + 54, 50, 45, 42, 44, 52, 60, 66, 68, 64, 61, 59, 63, 67, 71, 73, + 77, 79, 81, 82, 84, 84, 84, 83, 87, 89, 96, 102, 108, 114, 117, 118, + 112, 109, 104, 99, 95, 93, 92, 92, 90, 88, 82, 71, 57, 49, 46, 48, + 58, 71, 84, 90, 94, 100, 99, 96, 94, 96, 99, 101, 102, 104, 107, 109, + 109, 94, 72, 55, 47, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 47, 63, 65, 69, 71, 67, 64, 60, 58, 56, 54, 52, 54, 59, + 67, 75, 79, 81, 81, 82, 83, 85, 84, 85, 85, 82, 81, 80, 80, 81, + 80, 79, 78, 68, 64, 58, 55, 55, 56, 57, 58, 61, 60, 61, 62, 65, + 67, 69, 70, 68, 71, 70, 67, 65, 62, 56, 49, 42, 42, 41, 42, 45, + 52, 59, 62, 67, 59, 51, 48, 53, 60, 64, 64, 67, 69, 72, 76, 79, + 81, 83, 83, 84, 86, 90, 95, 100, 105, 109, 110, 106, 104, 100, 97, 94, + 92, 91, 92, 88, 86, 82, 75, 64, 52, 43, 37, 43, 55, 69, 79, 87, + 94, 97, 96, 93, 94, 94, 95, 95, 97, 101, 104, 108, 93, 73, 57, 49, + 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 53, 57, + 63, 66, 66, 64, 63, 62, 60, 60, 60, 58, 59, 65, 75, 81, 80, 80, + 81, 83, 83, 84, 83, 83, 81, 80, 80, 81, 80, 78, 74, 72, 65, 60, + 54, 50, 51, 53, 55, 55, 58, 59, 60, 62, 65, 67, 69, 70, 66, 66, + 65, 63, 58, 54, 49, 44, 37, 37, 39, 43, 48, 54, 58, 60, 67, 61, + 52, 46, 47, 52, 57, 60, 60, 62, 64, 68, 72, 75, 78, 79, 79, 81, + 83, 88, 90, 93, 99, 101, 99, 98, 97, 95, 93, 92, 90, 89, 86, 83, + 79, 73, 64, 53, 39, 30, 36, 45, 57, 68, 78, 86, 91, 91, 92, 92, + 92, 91, 91, 92, 97, 100, 104, 92, 74, 58, 49, 46, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 52, 56, 59, 60, 62, 64, + 65, 64, 64, 64, 62, 60, 66, 75, 83, 79, 80, 80, 81, 82, 82, 82, + 81, 80, 79, 79, 79, 78, 76, 71, 66, 61, 57, 50, 47, 48, 51, 53, + 55, 56, 57, 59, 61, 64, 65, 66, 68, 63, 61, 59, 56, 51, 45, 42, + 42, 38, 40, 44, 50, 54, 58, 61, 61, 68, 65, 60, 49, 41, 41, 49, + 57, 55, 56, 58, 60, 63, 66, 68, 68, 73, 76, 80, 82, 83, 86, 90, + 94, 92, 92, 93, 93, 92, 90, 88, 86, 84, 79, 73, 68, 62, 52, 39, + 29, 33, 37, 46, 59, 71, 80, 86, 89, 92, 92, 91, 88, 88, 89, 93, + 95, 98, 89, 73, 58, 49, 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 49, 52, 53, 55, 57, 60, 64, 63, 63, 62, 60, + 60, 66, 75, 83, 77, 78, 78, 80, 80, 80, 79, 79, 79, 78, 77, 76, + 76, 73, 69, 64, 58, 52, 47, 43, 44, 47, 51, 53, 54, 55, 56, 58, + 59, 59, 60, 59, 55, 52, 51, 49, 44, 38, 38, 40, 44, 47, 53, 60, + 64, 66, 68, 68, 69, 69, 65, 53, 40, 34, 40, 47, 50, 50, 49, 50, + 52, 53, 55, 56, 67, 71, 76, 77, 77, 78, 82, 86, 82, 85, 87, 88, + 88, 86, 83, 81, 79, 75, 70, 64, 59, 51, 41, 33, 32, 31, 37, 51, + 64, 74, 84, 90, 88, 89, 88, 87, 84, 83, 86, 88, 92, 83, 70, 57, + 49, 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 186, 49, 49, 50, 51, 54, 57, 60, 59, 57, 56, 59, 65, 74, 79, 75, + 75, 76, 76, 76, 75, 75, 75, 78, 76, 75, 75, 75, 72, 68, 64, 57, + 52, 44, 41, 43, 47, 51, 54, 54, 55, 56, 57, 57, 56, 55, 54, 49, + 46, 45, 44, 40, 34, 36, 43, 50, 54, 61, 68, 75, 78, 79, 78, 75, + 74, 69, 58, 45, 35, 34, 36, 41, 41, 40, 40, 42, 43, 44, 45, 54, + 61, 67, 69, 69, 68, 71, 75, 73, 75, 80, 82, 82, 80, 77, 74, 74, + 72, 69, 64, 59, 52, 45, 39, 37, 32, 34, 45, 57, 67, 76, 85, 82, + 82, 83, 81, 78, 78, 77, 79, 85, 78, 68, 57, 48, 45, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 48, 47, 47, + 49, 49, 58, 55, 53, 53, 58, 65, 72, 77, 71, 72, 73, 73, 72, 72, + 72, 71, 78, 76, 75, 74, 72, 70, 67, 64, 58, 52, 46, 42, 44, 49, + 53, 56, 57, 58, 58, 58, 57, 56, 54, 51, 48, 43, 42, 44, 40, 34, + 38, 46, 53, 58, 65, 74, 81, 85, 88, 88, 82, 79, 72, 62, 51, 41, + 33, 30, 35, 35, 33, 34, 35, 36, 37, 39, 44, 52, 59, 61, 60, 59, + 62, 66, 67, 70, 74, 77, 78, 76, 72, 69, 70, 71, 69, 67, 61, 54, + 48, 44, 45, 37, 33, 42, 52, 59, 68, 77, 76, 78, 78, 78, 74, 72, + 71, 71, 80, 76, 66, 55, 47, 45, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 49, 47, 44, 46, 49, 50, + 49, 53, 62, 69, 72, 76, 74, 71, 69, 69, 69, 71, 72, 73, 74, 75, + 74, 72, 70, 70, 71, 59, 59, 53, 45, 44, 49, 53, 53, 57, 58, 59, + 56, 51, 48, 49, 51, 46, 42, 38, 39, 37, 38, 44, 53, 59, 64, 73, + 80, 84, 87, 90, 92, 91, 88, 79, 67, 57, 50, 39, 30, 30, 32, 34, + 33, 33, 32, 33, 33, 37, 41, 46, 51, 53, 53, 52, 51, 56, 62, 69, + 72, 70, 67, 64, 64, 66, 69, 69, 64, 61, 59, 57, 51, 34, 30, 32, + 38, 44, 50, 60, 68, 72, 73, 73, 72, 69, 68, 69, 71, 74, 74, 69, + 60, 51, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 186, 47, 44, 39, 41, 42, 43, 51, 63, 71, 73, + 74, 72, 69, 67, 66, 66, 68, 69, 71, 73, 74, 73, 72, 70, 71, 72, + 66, 65, 57, 49, 46, 50, 53, 52, 56, 58, 56, 54, 51, 48, 47, 46, + 43, 39, 37, 37, 38, 41, 48, 58, 61, 66, 72, 78, 83, 84, 88, 90, + 96, 94, 86, 74, 65, 56, 45, 35, 31, 31, 31, 31, 29, 29, 29, 29, + 32, 35, 40, 44, 47, 46, 45, 44, 46, 52, 58, 62, 60, 58, 58, 59, + 67, 71, 71, 68, 65, 64, 61, 54, 41, 35, 32, 37, 43, 48, 56, 63, + 67, 68, 69, 68, 64, 64, 65, 68, 71, 72, 67, 59, 51, 48, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 185, 38, 38, 37, 38, 49, 63, 71, 72, 72, 70, 66, 64, 62, + 62, 64, 64, 68, 70, 72, 72, 71, 71, 72, 73, 73, 70, 63, 53, 49, + 52, 53, 52, 56, 55, 53, 52, 51, 48, 43, 40, 38, 34, 33, 37, 40, + 44, 54, 64, 68, 71, 75, 78, 81, 84, 88, 91, 100, 99, 93, 83, 73, + 64, 53, 42, 36, 34, 32, 30, 28, 27, 27, 26, 29, 32, 35, 39, 40, + 41, 40, 39, 38, 43, 48, 50, 50, 50, 54, 58, 69, 74, 77, 74, 73, + 70, 65, 58, 51, 41, 34, 35, 40, 45, 51, 58, 61, 64, 65, 63, 59, + 58, 60, 64, 68, 68, 65, 59, 51, 48, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, + 87, 40, 50, 64, 70, 69, 70, 68, 65, 62, 61, 61, 62, 62, 65, 67, + 68, 69, 70, 71, 73, 75, 76, 74, 66, 56, 51, 53, 56, 54, 57, 54, + 51, 50, 50, 47, 40, 35, 34, 32, 34, 39, 44, 50, 61, 72, 75, 78, + 80, 81, 83, 85, 90, 93, 100, 101, 97, 89, 80, 71, 59, 48, 42, 40, + 35, 33, 32, 30, 30, 29, 31, 32, 34, 37, 37, 38, 38, 39, 36, 40, + 43, 45, 46, 49, 56, 62, 72, 78, 82, 80, 77, 74, 66, 59, 57, 46, + 35, 34, 38, 43, 48, 54, 56, 60, 61, 60, 56, 54, 57, 62, 66, 67, + 65, 60, 53, 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 52, 65, 69, + 67, 68, 66, 63, 60, 59, 59, 60, 61, 64, 65, 67, 67, 67, 69, 72, + 75, 76, 74, 66, 56, 53, 56, 58, 57, 59, 54, 51, 49, 48, 45, 39, + 35, 33, 32, 37, 45, 51, 57, 68, 78, 83, 84, 85, 85, 86, 87, 92, + 95, 98, 100, 99, 93, 87, 79, 67, 56, 49, 43, 38, 34, 33, 34, 33, + 32, 32, 33, 34, 35, 36, 37, 38, 38, 38, 40, 44, 44, 46, 52, 60, + 67, 76, 82, 87, 84, 80, 76, 67, 58, 58, 48, 36, 34, 36, 40, 46, + 52, 54, 59, 62, 60, 54, 53, 58, 63, 68, 69, 67, 60, 54, 48, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 54, 65, 68, 67, 64, 62, 60, 57, + 57, 57, 59, 60, 63, 64, 64, 65, 65, 68, 71, 74, 76, 74, 67, 57, + 54, 57, 60, 59, 60, 57, 54, 50, 47, 44, 40, 37, 37, 37, 43, 52, + 59, 64, 72, 81, 85, 87, 87, 87, 87, 88, 91, 94, 96, 99, 100, 96, + 92, 87, 78, 69, 55, 49, 40, 35, 35, 35, 34, 32, 32, 32, 32, 32, + 33, 36, 37, 38, 38, 41, 43, 44, 46, 53, 62, 69, 80, 85, 88, 86, + 82, 77, 70, 61, 59, 49, 40, 36, 34, 35, 43, 51, 54, 59, 63, 60, + 55, 54, 59, 65, 70, 71, 67, 60, 52, 47, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 59, 65, 66, 65, 60, 58, 56, 55, 55, 56, 58, 59, 62, + 63, 64, 64, 63, 66, 70, 74, 79, 77, 69, 58, 56, 59, 61, 59, 63, + 61, 57, 51, 45, 42, 42, 42, 41, 44, 50, 60, 66, 68, 74, 82, 81, + 82, 85, 85, 84, 84, 88, 90, 90, 94, 95, 94, 93, 91, 85, 76, 67, + 59, 47, 40, 38, 36, 34, 31, 34, 33, 33, 33, 33, 35, 38, 40, 40, + 43, 45, 46, 49, 55, 64, 70, 81, 86, 89, 87, 84, 82, 75, 68, 58, + 52, 45, 39, 32, 30, 38, 49, 54, 59, 64, 62, 56, 55, 60, 67, 71, + 71, 66, 57, 48, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, + 64, 63, 55, 54, 52, 51, 51, 53, 55, 57, 62, 63, 64, 63, 63, 65, + 70, 73, 81, 80, 72, 61, 57, 59, 60, 59, 64, 64, 59, 52, 44, 40, + 41, 45, 45, 48, 55, 66, 70, 73, 75, 81, 77, 79, 81, 83, 82, 82, + 83, 86, 84, 88, 90, 89, 90, 90, 85, 78, 77, 67, 54, 45, 41, 40, + 36, 32, 37, 36, 34, 34, 35, 38, 41, 43, 44, 47, 49, 50, 51, 58, + 67, 73, 81, 86, 90, 87, 87, 85, 79, 73, 58, 55, 49, 41, 31, 26, + 35, 46, 53, 59, 64, 63, 55, 54, 60, 68, 72, 71, 65, 55, 46, 42, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 67, 60, 53, 58, 56, 56, + 55, 55, 57, 59, 61, 65, 65, 64, 63, 63, 66, 70, 74, 78, 75, 69, + 62, 58, 58, 61, 66, 67, 66, 62, 55, 47, 44, 46, 50, 47, 48, 54, + 61, 65, 64, 66, 70, 69, 71, 73, 76, 77, 77, 77, 76, 82, 83, 83, + 86, 87, 86, 83, 81, 76, 69, 58, 49, 43, 38, 35, 32, 31, 32, 32, + 34, 36, 39, 41, 42, 44, 48, 50, 51, 51, 55, 65, 73, 81, 85, 89, + 91, 90, 85, 78, 74, 62, 56, 48, 40, 33, 28, 34, 43, 51, 60, 65, + 60, 56, 59, 66, 72, 75, 66, 58, 53, 48, 113, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 64, 59, 54, 56, 54, 54, 53, 53, 55, 57, 59, + 64, 65, 63, 63, 63, 66, 71, 75, 79, 76, 70, 62, 57, 57, 61, 66, + 68, 68, 65, 59, 52, 49, 51, 55, 52, 52, 54, 60, 61, 59, 60, 64, + 62, 63, 66, 68, 70, 72, 71, 71, 74, 75, 76, 78, 80, 79, 77, 76, + 75, 68, 60, 53, 49, 44, 40, 37, 32, 34, 34, 37, 40, 43, 45, 46, + 48, 51, 52, 52, 52, 56, 65, 73, 82, 84, 88, 91, 90, 86, 81, 77, + 66, 59, 51, 43, 35, 30, 35, 44, 49, 59, 64, 62, 58, 62, 69, 74, + 73, 65, 57, 52, 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 190, 59, 56, 54, 53, 52, 53, 53, 54, 56, 57, 62, 63, 61, 61, 63, + 66, 72, 77, 80, 77, 71, 63, 57, 56, 61, 67, 72, 72, 70, 64, 58, + 55, 56, 59, 53, 48, 47, 49, 49, 46, 46, 49, 48, 50, 52, 54, 57, + 58, 60, 61, 61, 63, 65, 66, 67, 67, 65, 64, 70, 66, 61, 57, 54, + 50, 47, 45, 35, 35, 37, 39, 42, 46, 48, 51, 51, 53, 53, 52, 53, + 57, 66, 74, 80, 83, 86, 88, 87, 84, 79, 77, 67, 60, 52, 45, 37, + 32, 36, 44, 49, 58, 63, 62, 61, 67, 74, 78, 70, 63, 56, 52, 46, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 55, 53, 53, + 52, 52, 53, 54, 55, 56, 59, 60, 60, 59, 61, 65, 72, 77, 81, 79, + 74, 65, 57, 55, 60, 67, 75, 76, 76, 70, 63, 59, 60, 62, 51, 44, + 39, 38, 36, 33, 33, 35, 36, 37, 38, 39, 40, 42, 44, 44, 46, 47, + 49, 50, 50, 50, 50, 50, 58, 56, 54, 54, 54, 53, 51, 48, 39, 40, + 40, 42, 44, 46, 48, 49, 50, 51, 51, 51, 53, 59, 66, 72, 75, 76, + 78, 79, 78, 76, 71, 70, 64, 58, 52, 45, 37, 32, 36, 43, 52, 59, + 63, 63, 65, 71, 77, 78, 67, 61, 56, 51, 45, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 60, 54, 53, 52, 53, 53, 54, 54, 55, + 56, 58, 57, 57, 56, 58, 62, 70, 76, 81, 80, 76, 67, 57, 55, 59, + 66, 77, 79, 79, 76, 68, 63, 62, 63, 53, 42, 33, 28, 26, 24, 25, + 28, 28, 27, 27, 27, 28, 29, 31, 32, 33, 35, 35, 36, 34, 33, 34, + 37, 41, 40, 41, 43, 46, 47, 46, 44, 43, 42, 42, 41, 42, 43, 44, + 44, 47, 47, 48, 49, 51, 56, 62, 66, 67, 68, 69, 69, 67, 66, 64, + 61, 59, 55, 50, 46, 39, 35, 39, 47, 56, 62, 65, 66, 70, 75, 78, + 76, 64, 60, 56, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 60, 52, 51, 52, 52, 53, 54, 54, 54, 54, 56, 55, 54, 53, + 54, 60, 67, 73, 79, 82, 80, 70, 59, 55, 58, 64, 76, 79, 81, 79, + 73, 68, 67, 67, 53, 39, 26, 20, 17, 15, 17, 20, 26, 24, 22, 22, + 24, 25, 28, 30, 31, 33, 34, 33, 29, 28, 30, 32, 34, 33, 34, 36, + 39, 41, 39, 38, 43, 43, 42, 41, 41, 41, 41, 41, 42, 43, 44, 44, + 47, 48, 51, 54, 56, 56, 57, 56, 56, 56, 56, 56, 54, 51, 50, 48, + 44, 42, 47, 55, 64, 67, 68, 69, 72, 77, 77, 72, 61, 59, 57, 120, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 54, 50, + 50, 51, 52, 52, 53, 53, 53, 55, 54, 52, 50, 51, 56, 65, 70, 78, + 81, 82, 74, 62, 55, 56, 61, 72, 76, 81, 81, 79, 75, 75, 76, 62, + 46, 28, 19, 17, 14, 16, 20, 27, 26, 25, 26, 28, 32, 35, 38, 44, + 46, 48, 45, 39, 37, 40, 43, 43, 41, 40, 40, 41, 41, 40, 38, 42, + 42, 41, 40, 40, 40, 40, 41, 41, 40, 40, 40, 41, 40, 37, 36, 37, + 37, 39, 41, 42, 44, 47, 49, 52, 51, 52, 53, 52, 51, 57, 65, 71, + 73, 71, 71, 74, 78, 74, 68, 60, 59, 58, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 48, 49, 50, 50, 51, 51, + 51, 51, 54, 52, 50, 48, 50, 55, 63, 69, 77, 82, 83, 76, 63, 55, + 56, 60, 69, 74, 81, 83, 82, 81, 82, 83, 78, 60, 40, 31, 26, 24, + 25, 28, 30, 29, 28, 30, 33, 38, 44, 47, 60, 62, 63, 59, 53, 51, + 53, 57, 57, 54, 50, 48, 47, 47, 44, 43, 41, 40, 40, 40, 40, 41, + 42, 43, 41, 40, 39, 39, 37, 33, 28, 24, 21, 22, 24, 27, 32, 36, + 40, 43, 54, 53, 55, 58, 58, 59, 66, 74, 77, 76, 75, 72, 75, 77, + 72, 64, 60, 59, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 53, 48, 47, 46, 48, 49, 51, 50, 48, 50, 49, 48, + 48, 48, 53, 60, 66, 73, 80, 85, 80, 66, 54, 50, 51, 65, 75, 87, + 91, 87, 82, 79, 78, 74, 72, 63, 49, 38, 33, 29, 23, 26, 27, 28, + 33, 41, 48, 53, 53, 75, 82, 84, 76, 68, 69, 77, 82, 76, 73, 68, + 68, 72, 75, 67, 55, 49, 38, 41, 51, 51, 51, 53, 49, 41, 52, 53, + 50, 47, 31, 14, 12, 10, 12, 17, 21, 27, 35, 43, 49, 50, 58, 60, + 59, 63, 73, 80, 79, 78, 70, 67, 76, 81, 76, 68, 65, 58, 59, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 53, + 50, 47, 46, 47, 49, 49, 50, 48, 48, 47, 46, 44, 45, 50, 56, 61, + 71, 79, 84, 81, 69, 56, 50, 49, 61, 73, 85, 91, 91, 86, 83, 82, + 86, 86, 82, 75, 68, 59, 45, 31, 23, 24, 27, 35, 42, 49, 55, 56, + 77, 88, 93, 88, 85, 90, 103, 112, 97, 90, 81, 84, 96, 102, 92, 77, + 61, 49, 54, 67, 67, 65, 63, 57, 53, 63, 64, 61, 57, 39, 18, 13, + 8, 11, 17, 23, 31, 40, 50, 57, 64, 68, 69, 68, 73, 82, 86, 85, + 78, 73, 74, 82, 86, 79, 70, 66, 64, 130, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 53, 50, 48, 46, 46, 48, + 49, 48, 47, 47, 46, 44, 43, 43, 45, 51, 54, 68, 76, 84, 83, 73, + 59, 50, 47, 57, 69, 83, 92, 95, 92, 89, 87, 97, 96, 93, 90, 88, + 80, 65, 49, 36, 32, 30, 31, 38, 48, 56, 59, 80, 93, 101, 99, 96, + 104, 121, 134, 118, 106, 94, 98, 117, 127, 114, 96, 74, 59, 64, 80, 84, + 80, 76, 67, 65, 75, 75, 71, 68, 48, 23, 14, 13, 16, 23, 30, 39, + 50, 61, 68, 80, 79, 78, 79, 83, 90, 91, 87, 75, 74, 75, 79, 79, + 71, 62, 58, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 187, 51, 49, 46, 46, 46, 47, 47, 46, 47, 45, + 44, 41, 40, 42, 46, 50, 64, 72, 81, 83, 76, 64, 51, 45, 54, 65, + 81, 92, 97, 95, 91, 90, 103, 103, 98, 93, 91, 90, 84, 75, 63, 52, + 40, 33, 34, 42, 52, 59, 76, 90, 100, 96, 93, 102, 121, 134, 127, 114, + 103, 106, 122, 132, 120, 101, 81, 64, 66, 86, 92, 90, 85, 77, 74, 82, + 80, 77, 72, 51, 25, 15, 24, 29, 36, 45, 53, 62, 72, 78, 88, 86, + 85, 88, 93, 93, 88, 81, 75, 75, 75, 74, 73, 70, 67, 67, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 53, 50, 46, 45, 45, 46, 45, 45, 47, 47, 45, 42, 40, 40, 44, + 47, 59, 68, 78, 84, 80, 68, 54, 44, 53, 63, 77, 90, 95, 95, 93, + 90, 106, 110, 110, 103, 96, 94, 93, 90, 81, 72, 59, 48, 43, 43, 46, + 48, 63, 77, 88, 88, 87, 99, 117, 130, 129, 121, 112, 113, 122, 128, 118, + 104, 89, 68, 70, 89, 97, 94, 92, 88, 86, 91, 87, 79, 71, 48, 24, + 17, 30, 37, 47, 58, 67, 77, 86, 90, 90, 89, 91, 97, 100, 94, 82, + 72, 78, 78, 78, 80, 86, 97, 106, 110, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 50, 46, 44, + 44, 44, 44, 44, 46, 46, 45, 42, 39, 40, 43, 46, 55, 64, 74, 83, + 83, 73, 58, 46, 51, 59, 72, 84, 92, 94, 91, 89, 98, 110, 118, 113, + 103, 96, 89, 85, 83, 79, 74, 68, 61, 54, 46, 42, 52, 64, 76, 79, + 84, 98, 115, 125, 122, 120, 117, 116, 121, 124, 115, 104, 97, 74, 75, 95, + 99, 94, 94, 95, 93, 97, 90, 76, 66, 45, 28, 26, 35, 44, 58, 71, + 82, 89, 96, 100, 91, 92, 97, 102, 102, 90, 77, 69, 71, 74, 79, 89, + 106, 129, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 55, 51, 45, 43, 43, 44, 43, 42, 44, + 44, 43, 41, 39, 39, 41, 44, 53, 59, 70, 81, 85, 76, 61, 48, 47, + 54, 65, 78, 87, 91, 92, 89, 88, 101, 113, 115, 109, 101, 90, 82, 76, + 76, 75, 74, 72, 66, 59, 54, 53, 63, 71, 75, 79, 90, 100, 106, 104, + 103, 103, 106, 113, 116, 109, 97, 93, 72, 76, 95, 96, 86, 85, 86, 87, + 93, 84, 70, 60, 46, 38, 44, 50, 60, 74, 87, 95, 99, 101, 101, 92, + 93, 96, 100, 96, 81, 70, 67, 68, 73, 83, 98, 121, 182, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 55, 51, 45, 42, 42, 42, 42, 43, 42, 42, 42, 40, 38, 38, + 40, 43, 51, 57, 69, 80, 85, 78, 63, 51, 44, 50, 61, 73, 84, 90, + 92, 91, 88, 97, 106, 111, 113, 110, 100, 90, 72, 70, 68, 69, 71, 74, + 74, 74, 60, 67, 71, 70, 71, 77, 80, 80, 84, 83, 84, 90, 102, 107, + 99, 85, 86, 67, 73, 93, 89, 75, 71, 73, 74, 81, 74, 61, 53, 46, + 48, 60, 67, 76, 90, 101, 105, 104, 102, 100, 92, 90, 93, 95, 88, 74, + 65, 65, 73, 80, 92, 108, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 57, 51, + 42, 37, 38, 40, 39, 40, 41, 41, 40, 39, 39, 36, 37, 50, 56, 63, + 70, 78, 78, 67, 54, 52, 49, 54, 71, 84, 90, 91, 92, 91, 94, 101, + 110, 116, 112, 101, 91, 83, 77, 73, 73, 71, 68, 69, 73, 80, 78, 76, + 77, 77, 73, 65, 59, 59, 58, 60, 68, 79, 84, 81, 76, 66, 66, 66, + 67, 68, 64, 61, 57, 60, 62, 61, 58, 56, 56, 61, 67, 71, 85, 100, + 108, 110, 109, 101, 92, 94, 94, 94, 91, 79, 67, 63, 67, 72, 83, 96, + 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, 53, 44, 39, 38, 37, 35, + 39, 39, 40, 39, 39, 38, 37, 37, 46, 51, 59, 66, 74, 77, 67, 54, + 48, 47, 51, 66, 80, 88, 91, 92, 90, 92, 97, 106, 113, 111, 103, 96, + 86, 79, 73, 72, 69, 66, 67, 72, 78, 82, 87, 92, 91, 85, 74, 65, + 63, 59, 54, 57, 64, 66, 62, 56, 52, 51, 52, 54, 55, 55, 52, 50, + 51, 56, 61, 62, 62, 64, 68, 73, 76, 89, 102, 107, 109, 106, 100, 92, + 94, 92, 91, 85, 72, 60, 59, 64, 72, 88, 106, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 101, 56, 47, 41, 38, 35, 32, 36, 36, 38, 38, 39, + 38, 38, 37, 41, 46, 54, 62, 70, 74, 67, 56, 45, 43, 47, 60, 76, + 84, 89, 92, 89, 90, 93, 100, 107, 108, 106, 101, 92, 84, 77, 74, 70, + 66, 67, 71, 76, 81, 88, 95, 98, 96, 89, 82, 79, 73, 65, 63, 63, + 62, 56, 51, 44, 45, 44, 46, 49, 50, 50, 50, 48, 55, 63, 68, 70, + 71, 74, 77, 83, 93, 102, 105, 105, 103, 97, 91, 95, 90, 85, 77, 64, + 56, 58, 65, 75, 100, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, + 54, 49, 44, 41, 37, 32, 34, 35, 36, 37, 37, 38, 37, 37, 37, 42, + 50, 58, 67, 73, 69, 60, 46, 41, 43, 56, 72, 83, 89, 94, 92, 91, + 92, 96, 101, 104, 105, 104, 100, 92, 83, 78, 73, 68, 68, 72, 75, 76, + 77, 81, 86, 93, 97, 101, 93, 88, 81, 79, 77, 73, 68, 62, 55, 53, + 52, 54, 56, 59, 60, 60, 56, 62, 69, 72, 73, 73, 76, 78, 90, 98, + 104, 104, 101, 99, 95, 90, 94, 88, 79, 69, 60, 55, 62, 72, 88, 163, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 53, 50, 47, 44, 41, + 36, 34, 35, 36, 37, 37, 37, 37, 38, 35, 42, 48, 55, 65, 72, 71, + 65, 49, 43, 43, 53, 68, 80, 89, 94, 96, 94, 93, 95, 97, 100, 102, + 103, 102, 94, 86, 79, 73, 67, 66, 69, 72, 71, 70, 71, 74, 83, 91, + 97, 88, 87, 86, 88, 88, 84, 77, 71, 68, 66, 64, 63, 67, 68, 70, + 70, 66, 70, 73, 73, 73, 74, 80, 83, 93, 99, 104, 102, 99, 97, 94, + 90, 95, 86, 73, 61, 53, 53, 65, 81, 156, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 187, 51, 49, 49, 44, 39, 35, 36, 37, 37, + 37, 38, 37, 37, 34, 41, 46, 53, 62, 71, 72, 69, 55, 46, 42, 51, + 65, 76, 86, 94, 97, 96, 95, 95, 96, 98, 99, 101, 100, 92, 85, 79, + 73, 65, 63, 65, 70, 72, 74, 74, 74, 75, 77, 79, 77, 79, 83, 87, + 88, 86, 80, 76, 73, 70, 68, 68, 70, 73, 72, 72, 71, 73, 74, 74, + 74, 78, 84, 90, 94, 100, 104, 102, 99, 98, 94, 90, 92, 81, 67, 55, + 49, 55, 76, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 50, 49, 49, 45, 41, 37, 37, 38, 38, 38, 37, 36, 37, 34, + 39, 45, 51, 59, 68, 73, 70, 59, 48, 43, 48, 61, 72, 83, 91, 95, + 96, 97, 97, 98, 98, 99, 101, 99, 94, 87, 83, 75, 67, 63, 64, 66, + 70, 74, 76, 73, 70, 68, 68, 73, 74, 77, 81, 82, 80, 76, 73, 72, + 70, 69, 70, 72, 75, 74, 73, 74, 76, 77, 76, 76, 79, 86, 92, 93, + 100, 103, 101, 99, 98, 95, 91, 83, 72, 59, 51, 53, 69, 97, 166, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 49, + 46, 42, 39, 38, 39, 39, 39, 38, 37, 36, 33, 38, 43, 49, 57, 66, + 71, 70, 61, 49, 42, 47, 58, 70, 80, 87, 93, 95, 98, 99, 99, 99, + 100, 100, 101, 96, 92, 88, 80, 71, 66, 67, 62, 66, 69, 71, 69, 68, + 68, 70, 70, 70, 71, 71, 71, 70, 68, 66, 71, 70, 70, 73, 76, 78, + 76, 75, 76, 79, 81, 79, 77, 79, 84, 89, 92, 98, 103, 101, 100, 99, + 97, 92, 74, 64, 55, 52, 61, 84, 164, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 43, 45, 47, 40, 40, 38, + 38, 37, 36, 35, 33, 35, 36, 40, 42, 48, 56, 65, 73, 68, 59, 49, + 46, 53, 65, 76, 84, 87, 90, 95, 98, 98, 98, 99, 100, 91, 93, 94, + 89, 79, 72, 68, 67, 58, 59, 61, 62, 62, 63, 63, 63, 65, 65, 64, + 63, 62, 63, 63, 64, 66, 69, 73, 75, 73, 71, 73, 74, 77, 76, 75, + 75, 78, 81, 84, 87, 96, 98, 99, 98, 99, 99, 92, 83, 80, 59, 43, + 51, 80, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 43, 45, 46, 41, 40, 40, 39, 38, 36, 36, 35, + 35, 37, 39, 42, 47, 55, 64, 71, 70, 61, 50, 45, 50, 62, 74, 82, + 83, 85, 90, 94, 94, 95, 96, 97, 94, 94, 93, 89, 82, 76, 71, 69, + 62, 62, 61, 60, 60, 60, 60, 60, 64, 63, 62, 62, 61, 61, 61, 62, + 60, 64, 68, 69, 69, 69, 71, 72, 75, 74, 74, 76, 79, 83, 87, 88, + 97, 99, 99, 98, 99, 98, 90, 80, 59, 53, 60, 88, 124, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 185, 44, 45, 42, 42, 42, 41, 39, 38, 37, 36, 37, 37, 39, 41, 46, + 53, 62, 68, 71, 63, 51, 44, 45, 56, 70, 79, 78, 81, 86, 89, 90, + 91, 93, 95, 98, 95, 92, 89, 85, 81, 76, 73, 70, 69, 66, 64, 62, + 61, 61, 61, 64, 63, 62, 60, 58, 57, 57, 58, 57, 60, 63, 66, 67, + 67, 70, 71, 73, 73, 74, 76, 79, 84, 90, 93, 98, 100, 101, 99, 99, + 97, 87, 77, 65, 64, 75, 105, 176, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 44, 43, 42, + 42, 42, 41, 39, 38, 37, 37, 38, 39, 41, 44, 50, 59, 65, 71, 65, + 55, 45, 42, 51, 64, 74, 75, 78, 82, 86, 88, 91, 92, 95, 101, 97, + 92, 91, 90, 88, 82, 78, 80, 78, 74, 70, 68, 68, 69, 70, 68, 66, + 64, 61, 59, 57, 56, 55, 58, 60, 63, 63, 66, 68, 70, 72, 72, 73, + 75, 77, 81, 88, 93, 96, 99, 101, 102, 102, 101, 97, 86, 74, 51, 69, + 103, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 184, 44, 45, 44, 43, 43, 42, 40, 38, + 38, 38, 39, 38, 40, 43, 49, 56, 62, 69, 65, 57, 47, 42, 45, 57, + 67, 73, 77, 81, 84, 88, 91, 95, 97, 102, 99, 96, 95, 96, 94, 88, + 84, 84, 81, 78, 76, 75, 74, 75, 77, 75, 73, 71, 66, 64, 61, 59, + 58, 62, 62, 63, 65, 67, 70, 71, 72, 74, 74, 75, 79, 84, 89, 95, + 98, 98, 102, 103, 103, 102, 96, 83, 70, 75, 97, 129, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 184, 44, 43, 43, 43, 42, 39, 39, 37, 38, 39, 39, 40, + 42, 46, 53, 58, 63, 65, 60, 51, 42, 41, 52, 60, 69, 73, 79, 82, + 85, 90, 95, 98, 100, 100, 100, 100, 100, 98, 92, 89, 84, 83, 81, 79, + 78, 79, 80, 80, 82, 79, 77, 75, 72, 71, 70, 70, 70, 68, 68, 67, + 70, 72, 72, 71, 78, 78, 78, 81, 86, 92, 96, 99, 99, 102, 104, 102, + 99, 91, 75, 61, 86, 109, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, + 43, 42, 41, 40, 40, 38, 37, 40, 39, 39, 39, 40, 45, 50, 56, 58, + 62, 64, 55, 44, 40, 46, 54, 65, 68, 73, 77, 81, 86, 92, 96, 97, + 101, 105, 105, 102, 99, 95, 93, 87, 87, 86, 85, 85, 84, 82, 82, 84, + 84, 83, 83, 83, 83, 84, 84, 82, 80, 77, 76, 78, 79, 78, 76, 81, + 81, 82, 84, 88, 92, 97, 101, 100, 104, 104, 99, 94, 82, 63, 48, 32, + 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 43, 42, 41, 40, 40, + 38, 38, 40, 40, 40, 39, 39, 44, 49, 55, 54, 60, 65, 58, 46, 39, + 44, 51, 61, 64, 69, 73, 78, 83, 89, 94, 95, 101, 107, 109, 105, 100, + 97, 96, 93, 93, 92, 91, 89, 87, 85, 84, 85, 85, 86, 87, 90, 92, + 94, 95, 94, 90, 86, 84, 86, 87, 85, 83, 84, 84, 84, 85, 89, 93, + 97, 100, 102, 104, 104, 98, 90, 75, 54, 37, 36, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 184, 42, 43, 43, 42, 40, 38, 37, 38, 39, 40, + 42, 42, 44, 46, 46, 54, 59, 63, 60, 50, 45, 45, 47, 51, 56, 63, + 68, 73, 79, 88, 94, 96, 100, 105, 108, 107, 106, 104, 105, 103, 101, 99, + 97, 95, 93, 92, 91, 89, 90, 92, 95, 99, 103, 105, 107, 103, 100, 96, + 95, 95, 92, 88, 87, 86, 84, 83, 87, 93, 100, 105, 107, 108, 108, 104, + 96, 86, 71, 52, 36, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 41, 41, 42, 42, 39, 37, 37, 36, 36, 38, 39, 41, 42, 43, 43, + 50, 55, 58, 56, 51, 45, 43, 44, 47, 52, 59, 65, 69, 75, 83, 90, + 91, 96, 103, 108, 110, 113, 115, 116, 111, 110, 107, 104, 103, 104, 106, 106, + 109, 109, 108, 108, 109, 110, 111, 112, 106, 103, 102, 100, 99, 98, 94, 93, + 94, 92, 91, 94, 98, 104, 108, 109, 104, 104, 98, 87, 73, 58, 40, 103, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 41, 41, 40, + 39, 37, 37, 34, 34, 35, 36, 38, 39, 40, 41, 46, 48, 51, 52, 51, + 47, 43, 40, 41, 46, 53, 58, 61, 68, 76, 83, 86, 90, 97, 103, 109, + 114, 118, 121, 118, 114, 111, 108, 109, 111, 115, 117, 121, 120, 119, 117, 116, + 116, 116, 116, 111, 110, 107, 106, 106, 104, 103, 100, 101, 100, 99, 101, 104, + 107, 108, 109, 106, 105, 97, 80, 62, 46, 34, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 183, 41, 41, 39, 38, 36, 34, 34, + 35, 35, 36, 37, 38, 39, 43, 43, 44, 48, 50, 48, 43, 37, 37, 42, + 48, 52, 56, 61, 69, 75, 82, 86, 90, 96, 99, 105, 110, 114, 112, 111, + 109, 108, 109, 111, 112, 114, 113, 113, 113, 112, 113, 113, 115, 116, 116, 112, + 111, 111, 111, 110, 108, 107, 106, 105, 104, 105, 106, 108, 106, 105, 107, 106, + 94, 72, 51, 37, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 183, 40, 39, 39, 37, 34, 35, 35, 36, 36, 37, 38, + 38, 42, 40, 41, 45, 49, 49, 43, 38, 36, 41, 46, 49, 52, 56, 63, + 69, 76, 80, 84, 88, 91, 95, 100, 104, 107, 106, 107, 108, 108, 107, 107, + 106, 106, 105, 105, 106, 107, 109, 110, 111, 113, 112, 110, 110, 112, 111, 110, + 108, 108, 107, 107, 108, 109, 107, 105, 102, 102, 98, 82, 58, 38, 27, 100, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 183, 39, 38, 37, 35, 36, 36, 36, 36, 36, 38, 37, 39, 38, 38, 41, + 44, 45, 42, 38, 36, 40, 45, 47, 47, 51, 57, 61, 69, 72, 78, 82, + 86, 91, 94, 98, 100, 102, 104, 106, 107, 105, 103, 102, 103, 103, 102, 102, + 101, 102, 103, 103, 107, 105, 103, 105, 107, 107, 107, 106, 106, 105, 108, 109, + 110, 108, 103, 100, 98, 90, 70, 46, 30, 25, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 39, 38, 37, 35, + 36, 36, 36, 36, 36, 36, 36, 37, 36, 36, 37, 39, 40, 39, 38, 37, + 40, 42, 44, 44, 45, 50, 54, 64, 68, 74, 79, 82, 84, 87, 89, 90, + 91, 93, 96, 97, 98, 98, 98, 99, 98, 97, 97, 96, 96, 96, 97, 98, + 97, 96, 97, 100, 102, 100, 99, 100, 101, 103, 106, 107, 105, 101, 95, 92, + 80, 58, 34, 25, 25, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 183, 38, 37, 35, 35, 35, 35, 35, 36, + 35, 35, 35, 35, 34, 35, 34, 35, 37, 38, 36, 40, 41, 42, 40, 42, + 46, 50, 62, 66, 72, 75, 77, 77, 78, 79, 80, 81, 82, 83, 86, 89, + 92, 95, 90, 90, 90, 90, 90, 91, 93, 93, 93, 92, 92, 92, 95, 98, + 97, 96, 93, 95, 98, 101, 103, 101, 96, 90, 82, 68, 44, 23, 15, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 184, 40, 37, 37, 36, 36, 34, 35, 33, 33, 34, 35, 35, + 36, 36, 35, 35, 34, 38, 36, 36, 37, 39, 42, 46, 49, 59, 61, 66, + 70, 73, 75, 75, 75, 77, 78, 79, 79, 82, 84, 86, 87, 87, 87, 87, + 88, 88, 89, 90, 90, 90, 89, 89, 89, 91, 90, 88, 86, 92, 90, 91, + 95, 98, 96, 89, 84, 78, 55, 31, 21, 21, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, + 38, 38, 37, 37, 35, 34, 34, 34, 34, 35, 35, 36, 36, 35, 35, 34, + 36, 36, 37, 37, 40, 42, 44, 47, 53, 57, 61, 65, 68, 70, 70, 70, + 72, 72, 72, 74, 75, 76, 79, 80, 80, 81, 80, 81, 80, 81, 82, 82, + 84, 83, 82, 82, 84, 85, 84, 82, 86, 85, 87, 90, 92, 89, 83, 77, + 65, 45, 25, 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 38, 38, 38, 36, 37, + 35, 35, 34, 34, 34, 35, 35, 35, 35, 34, 34, 34, 34, 35, 36, 39, + 41, 41, 42, 47, 49, 53, 57, 60, 62, 63, 63, 63, 63, 63, 65, 65, + 68, 70, 70, 72, 71, 70, 71, 71, 70, 71, 72, 76, 74, 73, 73, 75, + 77, 78, 78, 79, 78, 80, 82, 83, 80, 73, 66, 45, 31, 17, 96, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 39, 38, 38, 36, 35, 35, 35, 33, 33, + 34, 34, 34, 34, 33, 33, 31, 33, 35, 36, 38, 38, 40, 39, 41, 43, + 46, 50, 54, 56, 57, 57, 57, 57, 57, 57, 57, 59, 60, 62, 66, 65, + 64, 64, 64, 64, 64, 65, 70, 67, 65, 65, 68, 72, 73, 74, 76, 74, + 74, 75, 76, 71, 63, 56, 32, 21, 15, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 38, 36, 36, 36, 34, 34, 33, 34, 34, 35, 35, 34, 34, + 33, 30, 31, 33, 36, 36, 37, 37, 37, 38, 39, 43, 45, 48, 50, 52, + 52, 52, 52, 51, 52, 53, 53, 54, 54, 61, 60, 60, 60, 60, 60, 61, + 61, 64, 62, 60, 60, 64, 67, 69, 70, 71, 70, 69, 69, 68, 63, 53, + 46, 25, 18, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, + 35, 34, 34, 34, 32, 33, 33, 33, 33, 33, 33, 32, 32, 33, 33, 34, + 35, 36, 37, 37, 37, 38, 40, 41, 42, 45, 46, 47, 48, 47, 47, 47, + 46, 47, 47, 48, 54, 55, 54, 55, 55, 56, 57, 58, 59, 57, 55, 56, + 59, 62, 63, 63, 65, 63, 62, 63, 61, 53, 43, 35, 22, 98, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 33, 33, 33, 32, + 32, 33, 33, 33, 33, 32, 32, 35, 33, 32, 32, 34, 35, 37, 38, 37, + 37, 37, 38, 39, 40, 41, 41, 41, 41, 41, 39, 40, 40, 40, 41, 45, + 45, 46, 45, 48, 49, 51, 52, 52, 51, 51, 52, 55, 56, 56, 55, 58, + 56, 54, 53, 50, 43, 32, 24, 98, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 32, 31, 32, 32, 32, 33, 33, 32, + 32, 32, 35, 34, 33, 32, 33, 35, 37, 39, 36, 36, 36, 35, 36, 37, + 38, 39, 38, 36, 36, 34, 34, 35, 36, 36, 38, 38, 38, 40, 42, 44, + 45, 47, 47, 47, 47, 49, 51, 52, 51, 49, 52, 50, 48, 47, 44, 36, + 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 180, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 34, + 34, 34, 33, 32, 32, 35, 35, 35, 35, 35, 35, 35, 35, 36, 35, 35, + 35, 34, 33, 33, 33, 37, 37, 37, 37, 38, 39, 41, 42, 39, 40, 41, + 43, 44, 46, 46, 45, 49, 48, 47, 44, 34, 23, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 206, 82, 32, 32, 32, 32, 32, 32, 33, 34, 34, 34, 33, 33, 32, + 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 34, 34, 34, 33, 33, + 35, 34, 34, 34, 35, 36, 37, 38, 37, 39, 40, 41, 41, 43, 45, 48, + 49, 43, 38, 33, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, + 32, 32, 32, 32, 33, 34, 34, 34, 34, 33, 33, 34, 34, 34, 34, 34, + 34, 34, 34, 36, 35, 35, 35, 35, 34, 34, 34, 35, 34, 34, 34, 34, + 34, 35, 36, 36, 37, 39, 38, 38, 41, 48, 55, 53, 41, 28, 100, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, 31, 32, + 33, 33, 34, 34, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 35, 35, + 34, 34, 34, 34, 34, 34, 36, 36, 35, 35, 35, 35, 36, 37, 37, 38, + 38, 37, 37, 43, 54, 63, 62, 115, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 34, 34, 34, 34, + 34, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, + 34, 36, 35, 35, 35, 35, 36, 37, 37, 39, 39, 38, 37, 112, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 34, 34, + 34, 34, 34, 34, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 108, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 86, 37, 39, 44, 47, 43, 43, 40, 38, 38, 38, 39, 38, 44, + 45, 47, 47, 49, 49, 47, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 184, 46, 48, 46, 45, 45, 45, 46, 46, 43, 45, + 51, 54, 51, 49, 46, 44, 44, 45, 50, 52, 55, 50, 48, 55, 61, 57, + 42, 28, 41, 34, 21, 9, 5, 16, 37, 121, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 37, + 40, 45, 46, 42, 37, 24, 25, 23, 19, 16, 15, 19, 23, 27, 23, 19, + 16, 16, 20, 25, 28, 49, 41, 38, 49, 59, 52, 27, 3, 1, 4, 5, + 0, 0, 0, 0, 4, 6, 4, 8, 19, 101, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 186, 35, 27, 26, 22, 18, 16, 13, 9, 6, 4, + 0, 0, 2, 6, 11, 11, 1, 0, 0, 4, 5, 0, 0, 0, 5, 3, + 11, 4, 1, 3, 10, 14, 13, 8, 5, 5, 8, 14, 17, 13, 5, 0, + 2, 2, 0, 1, 18, 35, 30, 18, 85, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 49, 38, + 22, 11, 3, 16, 13, 10, 9, 9, 10, 7, 4, 0, 2, 4, 5, 8, + 10, 5, 0, 1, 5, 4, 2, 4, 10, 11, 8, 0, 0, 0, 0, 3, + 6, 5, 2, 4, 3, 7, 13, 19, 19, 11, 6, 0, 0, 0, 0, 0, + 7, 11, 8, 4, 4, 12, 29, 111, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 188, 49, 38, 28, 18, 10, 7, 6, 18, 15, + 13, 12, 14, 13, 11, 9, 13, 15, 14, 11, 11, 14, 14, 11, 11, 10, + 7, 6, 11, 18, 17, 11, 2, 0, 0, 0, 6, 10, 11, 7, 0, 1, + 5, 12, 21, 23, 20, 18, 6, 0, 0, 0, 0, 0, 2, 11, 18, 7, + 2, 8, 21, 32, 38, 40, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, + 42, 35, 31, 22, 15, 12, 14, 19, 23, 30, 29, 26, 23, 20, 18, 15, + 11, 16, 19, 18, 13, 10, 12, 13, 12, 16, 14, 11, 9, 11, 13, 11, + 9, 11, 7, 6, 8, 14, 18, 15, 14, 0, 2, 4, 12, 19, 25, 28, + 27, 17, 9, 5, 5, 3, 0, 10, 25, 31, 17, 5, 4, 12, 22, 38, + 49, 49, 38, 16, 0, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 41, 37, 34, 30, 22, 17, + 14, 16, 19, 23, 33, 29, 25, 22, 20, 17, 13, 10, 10, 15, 16, 11, + 8, 8, 7, 4, 9, 8, 9, 8, 4, 2, 4, 7, 11, 8, 6, 7, + 10, 12, 10, 7, 5, 5, 6, 9, 16, 22, 26, 30, 24, 13, 7, 9, + 9, 6, 10, 20, 29, 20, 12, 7, 4, 9, 23, 37, 48, 60, 58, 35, + 13, 4, 2, 0, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 186, 44, 37, 31, 32, 28, 22, 16, 15, 13, 15, 15, 19, + 16, 14, 12, 12, 11, 8, 5, 3, 8, 11, 10, 10, 10, 6, 0, 1, + 2, 6, 6, 2, 0, 0, 6, 7, 5, 5, 5, 7, 7, 3, 2, 10, + 8, 6, 6, 9, 15, 22, 26, 27, 17, 11, 8, 9, 7, 6, 8, 15, + 14, 13, 7, 0, 0, 4, 16, 32, 36, 56, 72, 49, 9, 0, 14, 6, + 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 46, 40, + 32, 26, 26, 23, 18, 14, 12, 12, 13, 14, 14, 11, 10, 8, 8, 10, + 7, 5, 3, 7, 11, 14, 19, 22, 17, 9, 10, 8, 9, 11, 10, 5, + 6, 10, 12, 11, 11, 11, 14, 12, 10, 9, 12, 8, 5, 2, 3, 8, + 17, 22, 28, 24, 15, 6, 3, 6, 6, 4, 7, 6, 7, 6, 0, 0, + 0, 4, 0, 25, 42, 37, 41, 46, 26, 0, 15, 0, 0, 105, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 49, 46, 46, 40, 32, 23, 28, 26, 19, + 14, 10, 7, 7, 6, 19, 16, 14, 13, 14, 13, 12, 10, 0, 3, 6, + 12, 20, 26, 22, 14, 28, 21, 15, 19, 21, 14, 12, 13, 15, 15, 16, + 17, 20, 20, 17, 17, 12, 8, 4, 0, 0, 6, 15, 20, 20, 23, 15, + 0, 0, 0, 5, 3, 7, 5, 5, 7, 3, 0, 0, 4, 2, 0, 9, + 33, 44, 35, 22, 17, 12, 0, 0, 0, 103, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 55, 53, 46, 35, 23, 17, 14, 21, 18, 15, 12, 11, 11, 13, 13, + 15, 16, 16, 15, 13, 9, 5, 2, 8, 5, 5, 6, 7, 8, 7, 7, + 13, 12, 12, 12, 10, 9, 6, 5, 13, 13, 11, 7, 4, 6, 11, 16, + 7, 0, 1, 10, 9, 7, 13, 23, 20, 18, 16, 12, 9, 6, 4, 5, + 15, 19, 15, 3, 0, 2, 9, 12, 10, 8, 8, 9, 20, 32, 30, 22, + 10, 4, 0, 2, 8, 23, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 52, 49, 45, 36, 26, + 17, 11, 7, 10, 10, 11, 11, 10, 9, 7, 8, 12, 12, 13, 13, 12, + 12, 11, 10, 10, 8, 6, 4, 6, 7, 8, 7, 12, 12, 10, 10, 9, + 7, 5, 7, 0, 5, 10, 12, 10, 6, 3, 1, 11, 5, 3, 9, 8, + 3, 5, 15, 18, 22, 22, 18, 9, 2, 3, 6, 14, 19, 16, 6, 0, + 2, 8, 10, 1, 3, 3, 1, 4, 12, 18, 17, 19, 13, 8, 4, 2, + 7, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 185, 42, 42, 37, 30, 23, 18, 15, 10, 7, 2, 4, + 8, 9, 10, 7, 5, 3, 9, 8, 8, 8, 9, 12, 15, 17, 14, 12, + 9, 7, 9, 9, 10, 9, 11, 11, 10, 9, 7, 6, 5, 5, 0, 2, + 11, 15, 14, 8, 2, 0, 10, 6, 5, 8, 7, 0, 0, 9, 13, 23, + 30, 23, 10, 1, 1, 6, 12, 15, 17, 10, 5, 5, 6, 5, 0, 6, + 7, 1, 0, 2, 11, 17, 18, 15, 10, 5, 0, 2, 12, 25, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 40, + 35, 28, 21, 16, 11, 12, 16, 16, 15, 4, 6, 9, 12, 12, 12, 9, + 7, 8, 6, 4, 2, 4, 7, 11, 14, 13, 14, 15, 17, 18, 17, 15, + 12, 11, 12, 11, 12, 12, 8, 6, 5, 2, 5, 8, 10, 11, 10, 9, + 9, 9, 5, 5, 7, 5, 2, 3, 10, 8, 19, 30, 28, 16, 5, 2, + 4, 10, 13, 16, 16, 11, 8, 4, 2, 7, 10, 11, 5, 0, 2, 8, + 15, 18, 16, 13, 10, 5, 6, 17, 32, 113, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 186, 37, 26, 21, 17, 10, 5, 4, + 8, 15, 18, 18, 8, 9, 9, 10, 11, 11, 10, 10, 12, 10, 6, 2, + 2, 3, 6, 9, 11, 13, 17, 23, 25, 24, 19, 14, 10, 12, 13, 15, + 14, 10, 7, 5, 7, 7, 8, 10, 13, 15, 17, 17, 11, 9, 9, 9, + 6, 3, 6, 10, 5, 13, 21, 27, 25, 16, 6, 0, 9, 11, 15, 18, + 16, 9, 4, 3, 8, 6, 6, 4, 3, 2, 2, 5, 26, 25, 20, 14, + 6, 6, 17, 32, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 184, 33, 22, 12, 5, 10, 7, 4, 2, 5, 8, 12, 13, 10, + 9, 9, 7, 7, 6, 7, 6, 16, 13, 10, 7, 5, 5, 5, 6, 7, + 10, 18, 24, 28, 25, 18, 15, 12, 12, 12, 12, 11, 10, 8, 8, 4, + 6, 9, 13, 17, 17, 14, 11, 17, 15, 12, 9, 4, 4, 8, 11, 7, + 9, 13, 21, 24, 21, 12, 4, 8, 9, 13, 18, 18, 11, 5, 6, 10, + 4, 2, 5, 8, 5, 2, 3, 19, 20, 19, 15, 8, 7, 18, 33, 41, + 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 33, 22, 13, + 4, 1, 7, 9, 8, 6, 6, 6, 8, 9, 9, 9, 7, 6, 4, 2, + 0, 0, 10, 10, 10, 10, 9, 7, 6, 5, 7, 9, 14, 17, 20, 18, + 14, 10, 15, 11, 7, 4, 3, 5, 9, 10, 10, 11, 13, 16, 18, 17, + 12, 7, 16, 15, 11, 5, 2, 4, 10, 14, 14, 9, 8, 10, 17, 19, + 15, 13, 7, 6, 10, 16, 17, 13, 9, 9, 14, 6, 2, 5, 8, 4, + 5, 9, 6, 10, 14, 14, 8, 7, 19, 33, 28, 38, 118, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 186, 37, 26, 16, 10, 6, 3, 6, 11, 12, + 12, 10, 8, 11, 14, 11, 9, 7, 6, 3, 0, 0, 0, 4, 6, 8, + 10, 11, 9, 8, 6, 7, 8, 8, 10, 10, 10, 9, 5, 18, 13, 3, + 0, 0, 2, 8, 14, 22, 18, 15, 15, 16, 16, 13, 10, 11, 12, 7, + 1, 3, 7, 15, 20, 19, 12, 6, 4, 9, 15, 19, 19, 9, 5, 7, + 15, 16, 13, 9, 13, 10, 2, 0, 2, 2, 0, 3, 12, 4, 8, 15, + 16, 9, 5, 13, 26, 21, 33, 46, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 186, 37, 22, 10, 8, 10, 14, 15, 17, 16, 14, 13, 9, 7, 7, 6, + 6, 6, 6, 5, 5, 5, 4, 4, 0, 0, 0, 3, 3, 6, 6, 7, + 6, 5, 6, 6, 7, 6, 7, 5, 10, 12, 11, 6, 1, 0, 3, 9, + 30, 32, 28, 18, 7, 5, 10, 18, 8, 7, 5, 5, 6, 6, 8, 8, + 9, 9, 10, 11, 13, 14, 13, 13, 22, 13, 4, 3, 13, 19, 17, 13, + 7, 5, 4, 2, 3, 6, 12, 15, 12, 12, 13, 12, 5, 1, 4, 12, + 21, 30, 38, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 49, 37, 22, 11, 8, + 13, 14, 15, 14, 15, 12, 11, 8, 6, 3, 2, 5, 5, 5, 4, 4, + 3, 3, 2, 0, 1, 1, 4, 5, 6, 7, 7, 6, 6, 5, 5, 6, + 7, 8, 8, 9, 12, 12, 8, 2, 0, 4, 7, 17, 25, 31, 30, 25, + 15, 9, 7, 9, 10, 8, 7, 6, 7, 7, 7, 7, 11, 14, 14, 10, + 7, 7, 9, 20, 14, 4, 3, 10, 15, 17, 16, 13, 9, 3, 0, 0, + 2, 8, 11, 12, 11, 12, 13, 8, 5, 7, 13, 19, 28, 35, 110, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 47, 44, 35, 20, 12, 11, 13, 14, 14, 12, 11, + 11, 8, 7, 4, 2, 1, 4, 4, 3, 2, 1, 0, 0, 0, 0, 0, + 2, 3, 5, 6, 8, 9, 7, 7, 9, 8, 10, 10, 9, 10, 9, 12, + 12, 10, 5, 4, 4, 7, 12, 19, 28, 35, 33, 24, 13, 6, 10, 9, + 8, 5, 4, 6, 6, 6, 5, 12, 18, 17, 10, 4, 3, 5, 18, 14, + 6, 2, 5, 10, 15, 18, 20, 15, 9, 1, 0, 0, 5, 8, 10, 9, + 12, 14, 12, 8, 10, 16, 17, 24, 32, 34, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 45, + 41, 37, 28, 16, 9, 8, 11, 11, 12, 10, 11, 9, 8, 5, 5, 3, + 2, 6, 6, 5, 4, 3, 2, 1, 1, 0, 0, 3, 4, 6, 6, 9, + 9, 10, 9, 10, 11, 13, 13, 14, 13, 8, 11, 13, 13, 11, 7, 7, + 8, 15, 16, 19, 23, 26, 23, 17, 12, 11, 10, 7, 6, 3, 4, 4, + 4, 3, 8, 14, 15, 11, 7, 4, 4, 10, 10, 7, 4, 2, 5, 9, + 12, 24, 20, 13, 9, 4, 5, 5, 6, 7, 8, 10, 14, 15, 12, 14, + 18, 16, 25, 30, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 39, 33, 25, 18, 10, 6, + 7, 8, 10, 10, 10, 9, 8, 8, 8, 6, 7, 6, 8, 8, 7, 6, + 5, 4, 4, 3, 2, 2, 2, 5, 7, 8, 9, 9, 9, 7, 9, 9, + 11, 11, 12, 11, 7, 10, 12, 15, 13, 12, 11, 10, 17, 14, 11, 12, + 15, 20, 19, 18, 15, 13, 10, 9, 6, 7, 7, 9, 3, 3, 5, 9, + 13, 13, 9, 5, 2, 5, 7, 7, 4, 2, 3, 5, 15, 14, 15, 12, + 10, 7, 6, 4, 7, 6, 8, 12, 13, 11, 13, 19, 20, 28, 32, 32, + 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 43, 35, 27, 20, 14, 8, 2, 1, 5, 8, 9, 7, 6, + 6, 8, 7, 9, 10, 10, 9, 8, 7, 7, 7, 7, 6, 6, 6, 4, + 6, 5, 6, 6, 7, 7, 9, 5, 5, 6, 5, 6, 5, 4, 5, 4, + 5, 9, 11, 13, 12, 14, 13, 12, 8, 7, 8, 13, 14, 14, 12, 19, + 17, 14, 14, 14, 13, 14, 14, 9, 4, 1, 5, 12, 15, 11, 6, 0, + 2, 5, 6, 5, 2, 0, 0, 5, 6, 10, 11, 9, 7, 3, 0, 5, + 3, 3, 7, 11, 11, 14, 17, 22, 30, 35, 34, 33, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 41, 34, 24, + 14, 7, 5, 2, 0, 0, 3, 7, 8, 9, 4, 4, 5, 7, 10, 10, + 13, 13, 4, 4, 5, 5, 5, 5, 6, 6, 7, 6, 7, 6, 7, 6, + 7, 6, 6, 6, 5, 3, 3, 3, 3, 3, 0, 1, 2, 6, 10, 13, + 14, 13, 8, 8, 7, 7, 8, 11, 11, 10, 19, 18, 15, 15, 14, 14, + 15, 17, 16, 11, 5, 4, 6, 8, 8, 7, 1, 2, 4, 6, 6, 4, + 1, 0, 1, 2, 6, 7, 7, 7, 4, 1, 5, 1, 0, 3, 7, 6, + 10, 16, 26, 32, 35, 32, 32, 107, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 185, 39, 34, 26, 16, 6, 0, 2, 0, 0, + 0, 3, 8, 9, 9, 2, 2, 3, 7, 8, 11, 12, 14, 0, 0, 1, + 1, 2, 3, 3, 4, 8, 9, 7, 8, 6, 6, 5, 4, 9, 7, 7, + 6, 6, 4, 4, 2, 0, 0, 0, 2, 7, 11, 12, 12, 10, 9, 5, + 3, 2, 6, 10, 12, 15, 14, 14, 12, 12, 14, 14, 15, 23, 19, 13, + 6, 2, 2, 6, 8, 5, 4, 3, 4, 6, 6, 3, 0, 4, 4, 4, + 6, 7, 5, 6, 5, 5, 0, 0, 0, 3, 4, 10, 16, 26, 32, 34, + 33, 31, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 46, 47, 40, 26, 18, 16, 13, 9, 13, 9, 5, 3, 4, 5, 6, 7, + 1, 5, 10, 12, 13, 12, 14, 14, 16, 9, 3, 0, 2, 4, 6, 7, + 7, 7, 6, 5, 6, 5, 6, 6, 5, 6, 6, 8, 7, 5, 4, 4, + 7, 5, 3, 2, 3, 2, 3, 3, 1, 2, 2, 5, 5, 6, 7, 9, + 3, 3, 4, 5, 4, 4, 2, 3, 11, 9, 7, 5, 3, 3, 4, 4, + 4, 4, 1, 1, 0, 0, 0, 0, 0, 2, 7, 8, 10, 9, 9, 10, + 12, 10, 7, 4, 4, 8, 16, 21, 30, 33, 35, 37, 36, 32, 105, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 53, 49, 36, 21, 15, + 14, 13, 6, 14, 11, 8, 7, 8, 10, 10, 10, 4, 7, 11, 12, 12, + 11, 10, 11, 15, 11, 5, 2, 3, 6, 8, 6, 6, 6, 8, 7, 7, + 6, 6, 6, 7, 8, 10, 9, 10, 7, 7, 5, 5, 4, 3, 0, 0, + 0, 1, 1, 0, 0, 1, 1, 4, 4, 6, 6, 3, 4, 6, 7, 5, + 5, 3, 1, 9, 8, 7, 5, 4, 4, 4, 4, 4, 3, 3, 1, 1, + 0, 1, 0, 2, 5, 7, 10, 9, 9, 8, 8, 16, 11, 6, 3, 6, + 11, 18, 20, 28, 30, 33, 35, 32, 31, 31, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 58, 52, 49, 39, 23, 11, 8, 10, 8, 3, 9, 7, + 6, 7, 9, 10, 10, 8, 6, 8, 12, 14, 11, 9, 6, 6, 14, 11, + 6, 5, 6, 7, 7, 5, 6, 6, 6, 5, 5, 5, 5, 5, 10, 11, + 10, 10, 10, 7, 7, 6, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 2, 3, 4, 6, 6, 6, 7, 7, 5, 3, 1, 8, 8, + 8, 7, 7, 6, 6, 6, 6, 6, 4, 4, 3, 2, 3, 4, 7, 7, + 10, 11, 8, 6, 5, 6, 15, 7, 0, 0, 5, 15, 21, 24, 25, 26, + 30, 30, 29, 30, 32, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 50, + 45, 34, 23, 10, 3, 6, 9, 8, 4, 4, 4, 5, 7, 9, 10, 8, + 6, 7, 10, 14, 14, 11, 6, 4, 1, 10, 10, 7, 6, 5, 5, 4, + 3, 5, 3, 3, 3, 1, 1, 2, 2, 7, 8, 6, 6, 5, 3, 3, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, + 4, 6, 6, 6, 7, 7, 4, 2, 0, 4, 5, 5, 5, 5, 5, 5, + 5, 7, 7, 5, 5, 4, 3, 4, 5, 9, 12, 10, 9, 6, 3, 2, + 1, 10, 3, 0, 0, 0, 11, 24, 30, 25, 25, 27, 25, 25, 26, 29, + 32, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 48, 46, 40, 33, 25, 15, 8, 8, + 14, 14, 12, 8, 2, 2, 4, 7, 9, 10, 8, 6, 8, 11, 14, 12, + 9, 4, 2, 0, 7, 7, 7, 6, 4, 3, 2, 1, 3, 1, 1, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 1, 3, 3, 5, 4, 5, 6, 6, 6, 5, + 5, 2, 1, 0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 5, 2, 2, + 0, 0, 0, 0, 9, 12, 10, 8, 3, 0, 0, 0, 7, 5, 0, 0, + 0, 0, 15, 27, 23, 23, 25, 25, 24, 24, 27, 29, 27, 106, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 185, 41, 37, 28, 19, 20, 13, 9, 12, 15, 13, 9, 5, 7, + 7, 8, 10, 13, 14, 12, 10, 8, 11, 12, 10, 8, 4, 2, 2, 5, + 7, 7, 4, 2, 0, 0, 2, 3, 2, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 5, 6, 5, 7, 7, 8, 7, 5, 5, 6, 5, 5, 5, 2, 0, 1, + 0, 0, 0, 1, 4, 6, 8, 4, 3, 2, 0, 0, 0, 0, 0, 10, + 10, 9, 8, 4, 1, 1, 3, 10, 12, 11, 3, 0, 0, 3, 13, 19, + 20, 24, 24, 26, 26, 27, 27, 27, 32, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 44, 37, 30, + 19, 10, 18, 13, 10, 13, 14, 9, 7, 6, 10, 9, 9, 11, 13, 14, + 13, 11, 7, 10, 10, 7, 6, 4, 5, 5, 6, 8, 7, 4, 1, 0, + 0, 2, 9, 8, 7, 4, 5, 4, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 6, 7, 8, 7, 9, 9, + 8, 8, 6, 7, 8, 8, 8, 8, 6, 4, 5, 3, 2, 1, 3, 7, + 11, 14, 11, 10, 8, 4, 2, 0, 0, 0, 11, 12, 11, 9, 6, 5, + 5, 7, 9, 15, 18, 15, 8, 1, 0, 2, 10, 16, 23, 27, 29, 28, + 28, 28, 28, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 187, 49, 43, 35, 28, 15, 4, 23, 17, 16, + 18, 17, 13, 13, 17, 10, 8, 7, 8, 10, 11, 10, 9, 8, 8, 8, + 5, 4, 3, 5, 7, 8, 8, 8, 4, 0, 0, 1, 4, 13, 11, 12, + 11, 9, 7, 6, 5, 2, 1, 2, 0, 3, 3, 6, 6, 6, 7, 8, + 7, 7, 7, 4, 2, 7, 7, 8, 8, 9, 9, 10, 8, 7, 8, 9, + 9, 10, 11, 8, 7, 10, 8, 5, 4, 7, 11, 17, 21, 19, 17, 15, + 11, 9, 5, 4, 2, 12, 13, 11, 11, 7, 8, 10, 10, 7, 13, 20, + 25, 21, 14, 4, 0, 3, 11, 21, 30, 31, 32, 31, 30, 29, 34, 106, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 56, 53, 45, 33, 28, 26, 28, 11, 13, 18, 20, 21, 17, 12, 7, + 5, 8, 12, 14, 13, 10, 9, 8, 4, 5, 4, 0, 0, 0, 0, 6, + 3, 3, 3, 1, 0, 0, 0, 0, 2, 2, 2, 3, 3, 3, 3, 3, + 2, 2, 3, 2, 2, 5, 5, 7, 9, 9, 11, 10, 11, 10, 11, 10, + 15, 15, 13, 11, 9, 8, 5, 5, 1, 5, 9, 12, 14, 15, 14, 14, + 7, 6, 4, 4, 6, 10, 14, 17, 23, 20, 18, 15, 10, 4, 0, 0, + 6, 7, 5, 5, 5, 9, 11, 12, 16, 14, 12, 19, 32, 37, 20, 0, + 15, 19, 22, 26, 28, 26, 24, 22, 28, 27, 25, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 52, 52, 47, 42, 34, + 26, 23, 21, 8, 11, 13, 15, 14, 13, 11, 8, 6, 9, 11, 12, 11, + 8, 9, 7, 7, 8, 7, 5, 2, 3, 8, 13, 13, 13, 13, 8, 6, + 4, 5, 7, 9, 8, 8, 8, 8, 9, 10, 10, 8, 8, 7, 7, 9, + 9, 10, 9, 11, 12, 13, 16, 16, 17, 17, 18, 19, 19, 18, 16, 14, + 14, 12, 12, 7, 11, 13, 17, 19, 20, 20, 19, 12, 13, 12, 14, 16, + 20, 26, 28, 31, 30, 28, 24, 20, 14, 10, 9, 15, 14, 12, 10, 11, + 11, 14, 15, 18, 16, 14, 21, 36, 43, 32, 18, 9, 8, 12, 22, 33, + 33, 24, 13, 28, 25, 22, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 192, 53, 47, 39, 35, 31, 27, 20, 15, 7, 7, + 7, 7, 7, 10, 8, 8, 6, 8, 10, 11, 8, 8, 7, 8, 11, 11, + 14, 11, 11, 12, 18, 25, 22, 21, 21, 17, 14, 11, 11, 12, 15, 14, + 12, 11, 12, 14, 16, 17, 15, 15, 15, 14, 14, 14, 14, 14, 12, 14, + 16, 19, 20, 22, 22, 21, 22, 22, 20, 20, 19, 17, 17, 17, 15, 16, + 20, 21, 23, 22, 23, 22, 18, 19, 19, 21, 26, 32, 37, 41, 37, 37, + 35, 33, 29, 23, 22, 19, 24, 22, 21, 18, 17, 16, 17, 17, 20, 18, + 17, 23, 34, 43, 41, 34, 18, 5, 0, 9, 29, 39, 29, 17, 26, 22, + 21, 20, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, + 68, 56, 45, 32, 27, 27, 26, 20, 13, 8, 8, 8, 8, 7, 7, 6, + 5, 4, 5, 7, 9, 9, 8, 9, 12, 15, 18, 19, 17, 16, 18, 25, + 31, 26, 25, 23, 18, 16, 11, 12, 13, 16, 14, 12, 11, 11, 14, 17, + 20, 21, 19, 17, 16, 15, 16, 15, 14, 11, 12, 13, 17, 19, 20, 22, + 21, 17, 18, 18, 18, 16, 17, 17, 17, 18, 19, 20, 21, 22, 24, 23, + 22, 18, 18, 20, 24, 30, 36, 41, 45, 37, 36, 36, 33, 30, 26, 24, + 21, 26, 24, 24, 21, 20, 21, 20, 20, 21, 21, 19, 22, 28, 33, 37, + 34, 39, 15, 0, 0, 12, 32, 38, 35, 33, 25, 19, 19, 17, 202, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 61, 60, 43, 28, 20, + 22, 26, 20, 15, 12, 11, 12, 11, 11, 7, 5, 2, 0, 3, 5, 7, + 9, 10, 13, 16, 19, 20, 22, 21, 18, 20, 25, 29, 27, 26, 25, 20, + 15, 12, 12, 13, 15, 13, 11, 10, 11, 14, 17, 19, 21, 21, 19, 17, + 15, 14, 14, 14, 12, 13, 15, 15, 17, 17, 18, 18, 14, 15, 15, 16, + 17, 17, 18, 18, 23, 24, 24, 23, 23, 23, 23, 23, 18, 20, 22, 26, + 29, 35, 39, 42, 33, 33, 33, 31, 30, 26, 25, 24, 25, 24, 22, 23, + 21, 22, 22, 24, 20, 20, 20, 24, 25, 27, 28, 31, 48, 26, 3, 0, + 0, 16, 34, 45, 39, 30, 20, 17, 13, 65, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 189, 56, 54, 58, 43, 24, 18, 21, 24, 23, 16, 14, + 15, 15, 13, 10, 6, 3, 2, 0, 3, 6, 10, 11, 12, 14, 15, 19, + 20, 21, 21, 18, 17, 22, 27, 28, 29, 28, 24, 19, 15, 17, 17, 14, + 13, 12, 11, 12, 15, 18, 19, 21, 19, 17, 16, 15, 15, 15, 14, 16, + 16, 17, 19, 19, 20, 22, 21, 17, 17, 20, 21, 23, 24, 26, 27, 31, + 31, 30, 30, 29, 30, 28, 28, 23, 25, 26, 29, 31, 36, 39, 40, 30, + 30, 30, 30, 29, 28, 26, 26, 22, 22, 23, 23, 24, 26, 25, 25, 21, + 18, 19, 24, 28, 27, 28, 30, 39, 33, 20, 8, 1, 6, 20, 35, 37, + 30, 24, 19, 13, 9, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, + 49, 50, 49, 37, 22, 17, 21, 24, 20, 15, 15, 13, 10, 7, 6, 5, + 5, 4, 2, 5, 9, 11, 12, 11, 12, 13, 15, 17, 21, 19, 17, 17, + 21, 25, 30, 30, 28, 23, 21, 20, 19, 20, 12, 12, 13, 13, 15, 16, + 18, 19, 21, 20, 21, 18, 17, 17, 17, 19, 17, 18, 19, 22, 25, 25, + 26, 25, 23, 23, 26, 28, 31, 33, 34, 36, 39, 39, 38, 36, 35, 33, + 34, 32, 32, 31, 33, 33, 35, 37, 37, 39, 30, 30, 32, 32, 31, 30, + 30, 30, 24, 26, 26, 28, 27, 28, 27, 26, 26, 21, 19, 23, 25, 26, + 27, 32, 31, 37, 39, 27, 9, 3, 12, 24, 32, 29, 26, 26, 18, 10, + 10, 255, 255, 255, 255, 255, 255, 255, 255, 208, 45, 47, 49, 43, 34, 22, + 20, 23, 23, 19, 12, 14, 12, 5, 3, 1, 2, 5, 6, 4, 7, 12, + 14, 14, 12, 9, 9, 13, 16, 18, 18, 17, 17, 21, 26, 29, 29, 26, + 24, 21, 18, 19, 21, 12, 13, 14, 15, 16, 18, 19, 19, 23, 21, 21, + 20, 20, 20, 20, 21, 16, 17, 19, 23, 25, 27, 29, 29, 26, 27, 29, + 32, 35, 38, 40, 40, 44, 42, 42, 40, 38, 38, 37, 36, 35, 37, 37, + 37, 36, 36, 36, 36, 30, 30, 30, 30, 31, 30, 31, 30, 28, 28, 30, + 29, 30, 29, 28, 27, 32, 22, 16, 20, 22, 21, 25, 28, 32, 43, 50, + 37, 16, 4, 11, 21, 24, 26, 30, 30, 21, 14, 10, 255, 255, 255, 255, + 255, 255, 255, 255, 86, 52, 58, 55, 31, 27, 24, 23, 23, 21, 17, 13, + 11, 9, 6, 3, 1, 0, 1, 2, 4, 7, 11, 14, 12, 11, 10, 11, + 9, 13, 17, 19, 19, 22, 27, 33, 28, 28, 28, 27, 23, 18, 18, 19, + 15, 14, 13, 13, 13, 15, 17, 18, 24, 25, 26, 21, 18, 13, 12, 13, + 15, 14, 16, 16, 19, 21, 25, 26, 27, 29, 31, 33, 35, 34, 34, 32, + 44, 40, 36, 31, 30, 31, 32, 33, 30, 30, 31, 29, 30, 30, 32, 32, + 30, 29, 27, 26, 26, 28, 32, 36, 23, 24, 24, 25, 27, 28, 30, 30, + 26, 27, 30, 33, 33, 31, 28, 25, 29, 25, 30, 37, 23, 1, 0, 17, + 27, 26, 27, 30, 20, 6, 7, 96, 255, 255, 255, 255, 255, 255, 255, 50, + 57, 55, 47, 27, 24, 20, 21, 20, 19, 15, 12, 12, 10, 7, 5, 3, + 3, 4, 5, 6, 10, 13, 13, 14, 12, 12, 12, 10, 15, 19, 22, 20, + 22, 28, 32, 25, 26, 27, 25, 23, 19, 19, 20, 18, 17, 16, 16, 16, + 17, 19, 20, 26, 27, 26, 24, 17, 14, 13, 12, 15, 18, 18, 21, 22, + 25, 27, 29, 28, 30, 34, 36, 38, 37, 38, 37, 42, 41, 36, 32, 31, + 31, 33, 35, 30, 29, 30, 30, 30, 32, 32, 32, 30, 29, 27, 26, 26, + 28, 32, 36, 27, 26, 27, 28, 28, 27, 28, 27, 24, 25, 27, 30, 31, + 28, 25, 23, 26, 25, 34, 41, 32, 13, 5, 11, 22, 21, 23, 24, 24, + 16, 15, 17, 255, 255, 255, 255, 255, 255, 189, 56, 57, 48, 33, 23, 22, + 20, 20, 21, 20, 16, 13, 9, 8, 7, 5, 5, 6, 7, 8, 9, 11, + 15, 15, 13, 13, 14, 14, 14, 19, 21, 24, 22, 23, 25, 28, 22, 24, + 26, 25, 22, 19, 19, 19, 19, 18, 17, 16, 16, 18, 19, 20, 29, 29, + 29, 26, 21, 16, 15, 14, 18, 19, 21, 25, 27, 31, 31, 34, 32, 34, + 36, 40, 41, 44, 43, 43, 43, 39, 35, 31, 31, 32, 35, 38, 31, 31, + 30, 30, 32, 32, 34, 35, 30, 29, 27, 26, 26, 28, 32, 36, 30, 29, + 30, 28, 28, 26, 27, 26, 20, 23, 26, 26, 27, 23, 21, 19, 24, 28, + 36, 42, 42, 32, 16, 2, 15, 17, 20, 21, 24, 24, 21, 12, 255, 255, + 255, 255, 255, 255, 53, 52, 47, 35, 18, 23, 24, 23, 25, 23, 19, 15, + 12, 7, 7, 6, 6, 7, 8, 10, 11, 6, 10, 12, 13, 15, 16, 18, + 19, 17, 21, 24, 24, 22, 21, 23, 26, 23, 27, 28, 27, 25, 19, 19, + 18, 17, 16, 15, 14, 14, 15, 16, 17, 30, 30, 30, 28, 23, 20, 18, + 19, 18, 20, 25, 28, 32, 36, 36, 36, 34, 35, 38, 42, 45, 46, 48, + 48, 42, 38, 35, 32, 32, 33, 36, 40, 30, 30, 30, 31, 31, 34, 34, + 35, 30, 29, 27, 26, 26, 28, 32, 36, 33, 33, 31, 30, 28, 27, 27, + 27, 18, 19, 22, 24, 24, 21, 18, 16, 23, 31, 37, 38, 44, 45, 25, + 1, 9, 18, 21, 20, 22, 27, 21, 10, 255, 255, 255, 255, 255, 255, 43, + 39, 38, 28, 13, 21, 22, 24, 25, 20, 15, 12, 7, 3, 3, 4, 5, + 6, 8, 9, 10, 2, 5, 9, 14, 15, 17, 19, 21, 16, 20, 23, 22, + 20, 20, 21, 25, 29, 31, 31, 31, 26, 20, 19, 17, 17, 16, 14, 13, + 13, 14, 15, 16, 29, 29, 30, 28, 25, 22, 20, 21, 19, 21, 26, 29, + 34, 35, 36, 36, 33, 34, 36, 40, 43, 45, 48, 48, 40, 35, 33, 31, + 31, 35, 37, 42, 30, 30, 31, 31, 33, 34, 36, 37, 30, 29, 27, 26, + 26, 28, 32, 36, 33, 33, 32, 31, 31, 28, 27, 27, 18, 18, 21, 23, + 23, 20, 17, 14, 24, 30, 32, 31, 41, 49, 34, 6, 3, 14, 24, 22, + 22, 24, 22, 13, 255, 255, 255, 255, 255, 255, 34, 30, 34, 25, 12, 15, + 18, 22, 22, 16, 11, 6, 3, 3, 4, 5, 6, 8, 10, 11, 11, 0, + 5, 11, 14, 17, 19, 21, 21, 14, 16, 20, 18, 16, 17, 21, 25, 31, + 33, 34, 32, 27, 20, 17, 15, 18, 17, 15, 14, 14, 14, 15, 16, 23, + 24, 26, 24, 23, 20, 20, 19, 18, 19, 23, 27, 29, 32, 33, 33, 30, + 31, 32, 36, 38, 41, 43, 44, 37, 34, 31, 30, 30, 34, 38, 42, 29, + 31, 31, 32, 33, 36, 36, 39, 30, 29, 27, 26, 26, 28, 32, 36, 35, + 35, 33, 32, 31, 28, 28, 28, 19, 22, 25, 24, 24, 20, 18, 15, 25, + 29, 29, 26, 37, 49, 38, 15, 0, 9, 19, 21, 23, 24, 21, 19, 96, + 255, 255, 255, 255, 255, 27, 27, 32, 26, 13, 9, 14, 18, 20, 15, 9, + 4, 1, 3, 4, 6, 8, 9, 10, 11, 11, 2, 7, 13, 19, 21, 19, + 19, 19, 10, 12, 14, 14, 12, 16, 22, 27, 29, 32, 33, 32, 28, 21, + 18, 16, 17, 16, 14, 12, 12, 13, 14, 14, 14, 17, 19, 19, 16, 16, + 17, 18, 17, 17, 19, 20, 24, 27, 29, 30, 25, 25, 28, 29, 32, 34, + 38, 38, 33, 31, 29, 29, 30, 34, 39, 40, 31, 30, 32, 32, 35, 35, + 38, 39, 30, 29, 27, 26, 26, 28, 32, 36, 39, 38, 36, 33, 30, 27, + 27, 24, 23, 24, 25, 27, 27, 23, 20, 17, 22, 28, 29, 27, 35, 43, + 39, 26, 7, 7, 13, 21, 25, 23, 19, 17, 19, 255, 255, 255, 255, 31, + 23, 28, 32, 24, 10, 6, 14, 20, 20, 17, 10, 5, 4, 6, 7, 9, + 11, 13, 13, 14, 14, 4, 10, 17, 23, 24, 20, 18, 17, 8, 10, 11, + 10, 9, 14, 22, 27, 25, 28, 32, 31, 27, 23, 18, 17, 14, 13, 11, + 9, 9, 9, 10, 11, 9, 11, 14, 13, 12, 12, 13, 15, 17, 16, 17, + 17, 20, 24, 26, 27, 23, 23, 24, 25, 28, 30, 33, 34, 31, 30, 28, + 28, 29, 33, 38, 42, 30, 30, 32, 32, 34, 37, 39, 39, 30, 29, 27, + 26, 26, 28, 32, 36, 43, 40, 37, 33, 30, 26, 25, 22, 24, 26, 27, + 29, 28, 25, 21, 18, 22, 28, 31, 28, 34, 42, 40, 32, 16, 8, 9, + 22, 29, 21, 14, 12, 16, 93, 255, 255, 255, 25, 29, 32, 29, 16, 6, + 0, 5, 10, 14, 13, 9, 5, 4, 5, 8, 11, 13, 10, 6, 6, 6, + 0, 6, 20, 25, 23, 17, 17, 17, 13, 15, 16, 14, 15, 18, 22, 26, + 19, 21, 23, 21, 20, 19, 20, 20, 20, 20, 22, 21, 17, 12, 7, 3, + 8, 11, 15, 15, 13, 11, 12, 14, 15, 16, 18, 19, 21, 22, 22, 22, + 23, 23, 19, 20, 20, 25, 28, 33, 26, 28, 30, 34, 36, 37, 38, 37, + 31, 32, 34, 37, 40, 45, 47, 49, 44, 38, 31, 27, 27, 29, 32, 35, + 30, 29, 28, 28, 29, 28, 29, 29, 24, 25, 25, 24, 20, 16, 9, 7, + 19, 21, 25, 27, 30, 33, 32, 34, 20, 11, 8, 17, 24, 21, 17, 14, + 20, 13, 255, 255, 255, 24, 30, 33, 27, 15, 4, 0, 4, 11, 14, 13, + 10, 5, 5, 6, 9, 11, 10, 9, 6, 5, 6, 2, 12, 25, 28, 25, + 20, 19, 19, 12, 15, 15, 14, 14, 16, 21, 24, 19, 21, 21, 21, 18, + 18, 19, 20, 15, 16, 18, 21, 19, 16, 13, 8, 11, 14, 17, 17, 15, + 14, 15, 16, 11, 12, 14, 16, 18, 19, 20, 20, 22, 21, 20, 18, 21, + 25, 29, 32, 24, 26, 27, 29, 31, 33, 35, 35, 31, 33, 35, 37, 40, + 43, 46, 48, 41, 37, 30, 26, 26, 28, 31, 32, 28, 27, 26, 26, 27, + 26, 27, 27, 24, 26, 26, 24, 21, 18, 14, 10, 19, 21, 24, 27, 30, + 31, 32, 32, 23, 14, 8, 14, 20, 19, 16, 14, 19, 15, 255, 255, 255, + 27, 30, 32, 24, 12, 0, 0, 5, 9, 12, 12, 9, 8, 7, 6, 7, + 8, 8, 6, 6, 6, 7, 10, 17, 27, 28, 25, 19, 18, 17, 11, 14, + 14, 13, 13, 15, 18, 21, 17, 20, 20, 20, 18, 18, 19, 21, 9, 12, + 18, 21, 22, 21, 17, 16, 11, 13, 15, 16, 15, 14, 14, 15, 8, 10, + 12, 15, 17, 19, 20, 20, 23, 21, 21, 20, 23, 26, 31, 33, 23, 23, + 25, 25, 26, 27, 30, 30, 31, 31, 33, 34, 38, 40, 43, 44, 38, 35, + 29, 27, 26, 28, 30, 29, 28, 27, 25, 25, 26, 25, 26, 26, 25, 26, + 26, 25, 23, 22, 20, 18, 21, 22, 24, 26, 29, 30, 31, 31, 29, 17, + 9, 11, 18, 17, 16, 13, 20, 18, 255, 255, 255, 30, 34, 33, 25, 10, + 0, 0, 3, 7, 9, 8, 9, 8, 7, 5, 6, 7, 6, 7, 9, 11, + 14, 13, 18, 25, 24, 20, 14, 13, 12, 10, 12, 13, 12, 12, 13, 16, + 18, 17, 19, 18, 19, 17, 18, 20, 22, 8, 11, 16, 21, 23, 22, 21, + 18, 11, 12, 13, 14, 13, 13, 14, 14, 11, 12, 15, 18, 20, 22, 24, + 24, 25, 24, 22, 23, 25, 30, 34, 36, 25, 24, 25, 24, 24, 26, 28, + 29, 30, 30, 31, 31, 33, 36, 37, 38, 37, 35, 30, 28, 27, 27, 26, + 25, 28, 27, 25, 25, 26, 25, 25, 25, 26, 26, 26, 24, 24, 24, 24, + 24, 22, 23, 25, 25, 28, 28, 30, 30, 34, 23, 11, 9, 14, 16, 16, + 14, 23, 22, 255, 255, 255, 33, 36, 33, 24, 9, 0, 0, 4, 8, 9, + 9, 8, 7, 8, 1, 4, 6, 9, 10, 13, 16, 20, 15, 17, 22, 20, + 16, 11, 10, 9, 7, 11, 13, 12, 12, 13, 15, 17, 18, 18, 20, 18, + 18, 20, 21, 25, 13, 15, 19, 21, 22, 23, 21, 21, 12, 11, 11, 12, + 12, 13, 13, 13, 10, 12, 14, 17, 20, 22, 23, 24, 28, 27, 26, 27, + 29, 34, 38, 40, 29, 29, 27, 27, 26, 28, 29, 31, 29, 29, 28, 27, + 29, 29, 32, 32, 35, 33, 30, 30, 30, 28, 25, 22, 26, 25, 23, 23, + 23, 22, 22, 22, 24, 24, 25, 25, 25, 25, 26, 28, 23, 24, 24, 24, + 27, 28, 28, 29, 38, 27, 14, 9, 13, 18, 18, 15, 24, 27, 255, 255, + 255, 35, 35, 32, 23, 10, 2, 1, 7, 12, 12, 12, 9, 8, 8, 0, + 4, 9, 12, 16, 19, 22, 24, 17, 18, 20, 18, 15, 12, 12, 10, 5, + 9, 12, 12, 13, 14, 16, 18, 20, 21, 21, 19, 18, 19, 22, 25, 18, + 19, 19, 20, 20, 20, 23, 21, 13, 11, 10, 10, 12, 13, 13, 13, 11, + 13, 15, 17, 20, 21, 22, 23, 31, 31, 29, 30, 32, 37, 41, 46, 36, + 34, 33, 31, 32, 31, 32, 32, 27, 27, 26, 25, 25, 25, 27, 28, 34, + 33, 33, 32, 32, 28, 23, 21, 23, 22, 20, 20, 20, 18, 19, 18, 18, + 19, 21, 23, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 28, 28, 39, + 30, 16, 8, 13, 21, 21, 18, 25, 30, 255, 255, 255, 34, 34, 29, 21, + 11, 4, 6, 10, 16, 19, 17, 13, 11, 10, 5, 9, 14, 18, 20, 21, + 23, 26, 17, 17, 18, 15, 14, 12, 13, 12, 4, 8, 11, 13, 14, 15, + 18, 20, 23, 24, 24, 20, 19, 20, 21, 26, 23, 20, 19, 19, 19, 22, + 23, 24, 13, 10, 8, 8, 11, 13, 13, 12, 13, 14, 16, 18, 20, 21, + 22, 22, 31, 30, 30, 31, 33, 38, 43, 45, 40, 38, 39, 39, 37, 35, + 33, 33, 29, 29, 28, 27, 25, 25, 26, 26, 33, 34, 34, 34, 33, 29, + 23, 19, 25, 23, 21, 21, 21, 19, 19, 19, 14, 16, 19, 21, 23, 22, + 21, 22, 27, 25, 24, 24, 24, 26, 27, 28, 39, 32, 19, 11, 14, 25, + 26, 23, 23, 30, 255, 255, 255, 32, 31, 28, 19, 9, 3, 8, 15, 20, + 23, 21, 16, 12, 10, 9, 13, 18, 21, 23, 22, 23, 25, 15, 14, 15, + 12, 12, 11, 12, 12, 2, 7, 11, 13, 15, 17, 19, 21, 26, 25, 24, + 22, 19, 20, 23, 25, 23, 22, 19, 18, 17, 20, 25, 27, 11, 8, 5, + 5, 8, 11, 10, 9, 19, 20, 22, 23, 25, 26, 26, 26, 31, 30, 30, + 30, 34, 37, 44, 46, 40, 42, 41, 41, 40, 37, 34, 33, 31, 31, 30, + 28, 27, 27, 25, 26, 34, 33, 34, 36, 34, 31, 24, 19, 29, 27, 25, + 24, 24, 23, 23, 22, 11, 13, 18, 21, 22, 21, 20, 18, 26, 27, 25, + 24, 23, 26, 27, 27, 38, 33, 18, 10, 16, 28, 30, 24, 22, 30, 255, + 255, 255, 30, 33, 30, 19, 11, 11, 7, 10, 11, 10, 12, 14, 11, 5, + 2, 10, 14, 13, 15, 21, 23, 20, 15, 12, 10, 6, 7, 7, 6, 8, + 3, 6, 10, 13, 15, 18, 22, 24, 24, 24, 23, 20, 19, 17, 15, 15, + 16, 15, 14, 13, 15, 17, 20, 24, 21, 19, 17, 14, 13, 14, 14, 15, + 14, 14, 17, 18, 19, 22, 22, 23, 29, 28, 25, 24, 27, 33, 39, 44, + 40, 40, 38, 38, 36, 35, 35, 33, 32, 29, 28, 26, 26, 24, 24, 25, + 30, 35, 37, 38, 38, 36, 33, 28, 20, 22, 24, 27, 24, 18, 12, 9, + 10, 13, 20, 27, 32, 33, 30, 26, 23, 22, 23, 23, 22, 21, 20, 20, + 23, 19, 11, 7, 11, 16, 17, 12, 16, 19, 255, 255, 255, 35, 33, 27, + 15, 9, 11, 10, 14, 15, 12, 11, 13, 12, 8, 10, 16, 18, 15, 15, + 19, 19, 15, 16, 13, 11, 10, 8, 7, 6, 7, 7, 8, 12, 15, 16, + 18, 21, 24, 22, 22, 21, 20, 19, 17, 15, 14, 17, 15, 15, 15, 15, + 18, 22, 24, 20, 19, 14, 13, 12, 12, 12, 13, 12, 15, 16, 17, 18, + 22, 23, 23, 26, 25, 24, 24, 26, 31, 37, 40, 40, 38, 38, 38, 36, + 34, 35, 33, 34, 33, 30, 29, 27, 26, 26, 27, 30, 34, 36, 37, 37, + 35, 32, 28, 20, 22, 24, 26, 24, 19, 14, 11, 12, 15, 20, 25, 32, + 32, 30, 27, 26, 25, 25, 23, 23, 24, 23, 24, 24, 21, 14, 7, 7, + 11, 13, 9, 16, 19, 255, 255, 255, 38, 32, 21, 11, 10, 14, 14, 19, + 19, 14, 10, 11, 13, 12, 17, 19, 20, 17, 16, 18, 17, 13, 17, 16, + 13, 11, 10, 8, 6, 6, 9, 11, 16, 17, 18, 19, 21, 23, 22, 22, + 21, 20, 18, 17, 16, 16, 16, 16, 17, 16, 18, 20, 22, 24, 15, 14, + 12, 10, 9, 9, 10, 11, 13, 13, 15, 16, 18, 20, 21, 22, 24, 22, + 22, 23, 27, 30, 35, 37, 38, 37, 37, 35, 36, 34, 34, 35, 35, 35, + 34, 31, 31, 29, 29, 27, 29, 33, 35, 37, 36, 34, 31, 27, 22, 23, + 25, 26, 25, 22, 18, 16, 17, 19, 21, 23, 27, 30, 29, 28, 29, 28, + 27, 26, 26, 26, 27, 29, 26, 26, 19, 8, 4, 7, 9, 10, 17, 18, + 255, 255, 255, 41, 30, 16, 10, 13, 19, 16, 21, 22, 14, 8, 9, 13, + 15, 18, 18, 18, 17, 18, 19, 18, 15, 16, 17, 15, 14, 10, 7, 6, + 4, 7, 10, 15, 16, 18, 19, 20, 22, 20, 20, 18, 17, 17, 15, 17, + 16, 16, 17, 18, 19, 21, 22, 23, 23, 13, 12, 11, 10, 9, 11, 11, + 11, 14, 15, 16, 16, 19, 21, 20, 21, 21, 21, 22, 26, 27, 30, 33, + 36, 34, 34, 35, 35, 33, 34, 34, 34, 38, 36, 35, 33, 32, 30, 31, + 31, 28, 32, 35, 36, 35, 34, 31, 26, 22, 23, 23, 25, 26, 25, 21, + 20, 25, 23, 20, 22, 24, 26, 28, 27, 31, 30, 29, 27, 27, 28, 30, + 33, 26, 27, 22, 12, 4, 4, 9, 13, 18, 18, 255, 255, 255, 38, 27, + 15, 11, 17, 23, 16, 21, 21, 14, 8, 10, 15, 17, 21, 18, 15, 16, + 18, 17, 15, 14, 15, 16, 15, 12, 9, 7, 4, 2, 3, 6, 12, 15, + 16, 17, 18, 20, 17, 16, 16, 15, 16, 15, 15, 15, 14, 16, 18, 20, + 23, 23, 22, 22, 10, 12, 11, 11, 13, 13, 15, 15, 17, 17, 17, 19, + 19, 20, 20, 21, 22, 22, 24, 27, 30, 31, 32, 33, 30, 30, 32, 33, + 33, 33, 34, 34, 38, 36, 35, 32, 32, 30, 30, 31, 28, 32, 35, 36, + 35, 34, 31, 26, 23, 24, 24, 24, 25, 26, 27, 28, 29, 25, 22, 19, + 21, 25, 26, 27, 31, 30, 29, 28, 28, 28, 31, 34, 27, 30, 25, 14, + 6, 8, 14, 19, 21, 19, 255, 255, 255, 35, 23, 14, 14, 20, 22, 15, + 19, 19, 14, 11, 14, 18, 19, 24, 17, 13, 15, 16, 13, 10, 10, 13, + 12, 11, 8, 7, 4, 2, 2, 1, 5, 9, 12, 11, 12, 12, 13, 13, + 12, 12, 12, 14, 14, 14, 13, 12, 15, 18, 20, 23, 22, 20, 20, 9, + 11, 12, 15, 17, 19, 22, 23, 21, 22, 21, 21, 21, 19, 21, 20, 19, + 21, 25, 30, 31, 32, 30, 29, 27, 28, 30, 30, 33, 33, 35, 35, 34, + 34, 33, 30, 29, 27, 28, 26, 29, 33, 35, 37, 36, 34, 31, 27, 26, + 24, 24, 24, 26, 29, 31, 34, 33, 28, 23, 21, 21, 22, 25, 24, 28, + 28, 27, 27, 27, 28, 30, 32, 28, 29, 24, 13, 6, 10, 18, 21, 24, + 21, 255, 255, 255, 31, 19, 14, 16, 18, 18, 14, 17, 17, 15, 16, 21, + 24, 22, 21, 13, 8, 12, 14, 12, 9, 10, 10, 8, 7, 5, 3, 1, + 0, 0, 1, 6, 9, 11, 9, 7, 7, 7, 9, 8, 10, 10, 11, 12, + 11, 12, 10, 14, 17, 21, 22, 21, 20, 18, 9, 11, 14, 18, 23, 25, + 27, 29, 25, 24, 23, 23, 20, 20, 19, 18, 16, 19, 24, 29, 32, 30, + 27, 26, 26, 26, 28, 28, 30, 33, 35, 35, 32, 31, 28, 28, 25, 24, + 25, 25, 30, 34, 36, 37, 37, 35, 32, 28, 26, 24, 24, 24, 26, 32, + 36, 38, 36, 31, 25, 21, 20, 21, 22, 23, 25, 24, 25, 25, 25, 28, + 27, 28, 30, 31, 24, 13, 7, 10, 17, 21, 28, 22, 255, 255, 255, 29, + 18, 14, 17, 18, 13, 14, 17, 17, 16, 20, 26, 27, 24, 15, 6, 3, + 9, 14, 13, 12, 13, 8, 6, 4, 0, 0, 0, 0, 2, 6, 9, 10, + 10, 8, 4, 2, 1, 6, 7, 8, 8, 10, 10, 12, 11, 9, 13, 18, + 22, 22, 21, 18, 17, 9, 12, 16, 20, 25, 30, 33, 33, 27, 27, 27, + 24, 21, 21, 19, 18, 14, 18, 23, 28, 30, 29, 25, 23, 24, 24, 26, + 28, 30, 33, 35, 35, 30, 27, 26, 24, 24, 22, 22, 23, 30, 35, 37, + 38, 38, 36, 33, 28, 26, 24, 24, 24, 27, 32, 36, 41, 37, 31, 26, + 21, 19, 21, 22, 22, 22, 22, 24, 25, 24, 24, 24, 25, 32, 31, 22, + 11, 6, 9, 15, 17, 30, 23, 255, 255, 255, 30, 25, 18, 15, 13, 16, + 11, 17, 21, 21, 23, 25, 24, 19, 6, 8, 10, 12, 13, 12, 11, 9, + 2, 3, 0, 0, 0, 1, 0, 2, 4, 8, 11, 12, 9, 9, 8, 7, + 10, 12, 14, 12, 10, 9, 10, 12, 16, 10, 11, 18, 22, 18, 11, 12, + 18, 15, 13, 15, 18, 20, 20, 18, 16, 17, 19, 20, 22, 23, 25, 25, + 15, 18, 26, 30, 30, 26, 19, 16, 23, 24, 27, 30, 33, 35, 35, 37, + 31, 30, 27, 22, 19, 19, 24, 28, 40, 36, 30, 29, 28, 30, 31, 31, + 33, 32, 27, 25, 24, 25, 29, 29, 37, 35, 30, 26, 21, 16, 14, 13, + 20, 18, 17, 17, 18, 20, 23, 25, 29, 23, 26, 21, 10, 12, 21, 23, + 26, 102, 255, 255, 255, 31, 26, 19, 14, 14, 15, 12, 17, 21, 21, 22, + 24, 22, 18, 7, 8, 10, 11, 12, 11, 9, 8, 4, 4, 3, 4, 4, + 4, 6, 5, 6, 8, 11, 13, 10, 9, 9, 8, 8, 11, 13, 12, 11, + 10, 10, 11, 7, 9, 13, 21, 22, 16, 16, 19, 19, 17, 14, 13, 14, + 13, 11, 9, 10, 16, 24, 32, 34, 31, 28, 23, 21, 23, 29, 32, 32, + 26, 20, 15, 23, 24, 27, 29, 33, 35, 38, 38, 32, 32, 28, 23, 18, + 20, 24, 28, 36, 34, 29, 25, 25, 26, 27, 27, 31, 29, 26, 23, 22, + 23, 24, 26, 37, 37, 31, 29, 25, 21, 19, 17, 23, 23, 21, 20, 19, + 20, 23, 26, 30, 25, 27, 21, 10, 11, 20, 21, 26, 255, 255, 255, 255, + 34, 29, 20, 14, 13, 14, 14, 19, 22, 21, 22, 23, 21, 16, 10, 10, + 11, 11, 11, 10, 9, 9, 7, 7, 7, 10, 9, 10, 12, 11, 7, 11, + 13, 13, 13, 11, 11, 10, 8, 11, 11, 12, 10, 8, 10, 10, 6, 10, + 19, 23, 20, 17, 17, 21, 18, 19, 16, 13, 6, 3, 1, 3, 6, 12, + 21, 28, 35, 35, 33, 31, 27, 30, 33, 33, 30, 26, 19, 16, 22, 24, + 26, 29, 33, 34, 37, 37, 33, 32, 28, 23, 21, 20, 24, 27, 33, 30, + 25, 22, 24, 23, 22, 22, 30, 27, 22, 19, 18, 18, 21, 23, 36, 34, + 31, 29, 26, 25, 24, 24, 28, 26, 23, 20, 19, 21, 21, 24, 32, 26, + 28, 24, 10, 10, 20, 21, 26, 255, 255, 255, 255, 35, 30, 22, 15, 12, + 11, 14, 18, 21, 20, 20, 21, 18, 13, 11, 10, 10, 9, 8, 8, 8, + 7, 9, 11, 12, 15, 16, 17, 16, 15, 9, 12, 13, 13, 12, 12, 11, + 13, 8, 10, 11, 10, 10, 9, 11, 11, 13, 17, 21, 23, 22, 19, 16, + 18, 20, 20, 18, 12, 4, 0, 0, 2, 5, 8, 9, 14, 20, 29, 36, + 40, 29, 30, 32, 31, 28, 26, 19, 18, 22, 23, 26, 28, 30, 30, 31, + 31, 35, 33, 30, 25, 22, 24, 26, 29, 30, 27, 23, 21, 22, 21, 20, + 19, 29, 27, 22, 19, 17, 18, 21, 21, 33, 31, 31, 28, 28, 28, 27, + 29, 30, 28, 24, 21, 19, 20, 20, 22, 33, 29, 31, 25, 12, 12, 19, + 19, 25, 255, 255, 255, 255, 37, 31, 22, 14, 10, 10, 14, 19, 21, 20, + 20, 20, 17, 12, 12, 11, 10, 8, 7, 8, 8, 9, 10, 10, 14, 18, + 19, 19, 19, 18, 8, 10, 12, 12, 11, 11, 10, 12, 9, 10, 10, 9, + 8, 10, 12, 15, 21, 20, 21, 22, 24, 24, 19, 16, 16, 18, 16, 10, + 6, 2, 4, 7, 9, 6, 3, 4, 10, 19, 30, 38, 25, 27, 27, 27, + 28, 26, 23, 23, 25, 26, 27, 28, 29, 29, 28, 27, 34, 33, 28, 26, + 24, 26, 27, 28, 29, 25, 22, 19, 20, 19, 20, 18, 29, 25, 23, 19, + 18, 19, 19, 22, 31, 31, 31, 31, 31, 31, 33, 34, 32, 29, 26, 23, + 23, 23, 22, 24, 35, 30, 32, 28, 14, 12, 20, 20, 22, 255, 255, 255, + 255, 35, 32, 24, 15, 10, 8, 14, 19, 21, 20, 20, 21, 18, 13, 13, + 11, 9, 7, 7, 8, 10, 12, 7, 10, 16, 18, 19, 18, 16, 15, 8, + 10, 11, 11, 9, 9, 10, 12, 11, 10, 12, 10, 9, 10, 14, 17, 21, + 21, 18, 16, 22, 25, 22, 15, 11, 11, 9, 7, 6, 6, 9, 12, 11, + 9, 7, 8, 10, 12, 17, 20, 21, 20, 20, 22, 23, 24, 25, 25, 26, + 27, 26, 28, 26, 27, 25, 24, 30, 26, 23, 23, 23, 24, 27, 27, 27, + 23, 21, 21, 20, 21, 19, 17, 26, 24, 22, 19, 18, 20, 21, 22, 32, + 31, 32, 32, 34, 37, 38, 39, 34, 33, 30, 27, 26, 26, 29, 29, 34, + 31, 33, 30, 14, 14, 22, 20, 98, 255, 255, 255, 255, 34, 31, 23, 14, + 9, 7, 11, 16, 19, 18, 18, 20, 17, 12, 11, 9, 7, 5, 5, 7, + 10, 13, 6, 8, 12, 16, 18, 15, 11, 9, 6, 7, 8, 7, 6, 5, + 7, 8, 12, 12, 11, 11, 10, 12, 15, 19, 21, 22, 19, 14, 15, 18, + 19, 14, 7, 4, 1, 1, 3, 7, 9, 11, 9, 9, 7, 5, 7, 8, + 9, 10, 10, 10, 9, 10, 13, 15, 19, 19, 17, 18, 18, 20, 20, 21, + 20, 21, 23, 21, 17, 17, 19, 23, 23, 22, 24, 22, 20, 18, 19, 18, + 16, 14, 24, 22, 20, 17, 17, 19, 21, 23, 29, 29, 29, 31, 32, 34, + 38, 39, 31, 29, 26, 25, 27, 28, 29, 32, 35, 30, 33, 31, 17, 15, + 23, 22, 255, 255, 255, 255, 180, 33, 30, 24, 15, 9, 6, 10, 15, 18, + 17, 18, 19, 17, 12, 10, 8, 5, 4, 4, 7, 11, 13, 3, 7, 12, + 15, 15, 13, 9, 7, 4, 5, 5, 5, 3, 5, 6, 8, 13, 14, 13, + 12, 12, 12, 15, 19, 22, 25, 24, 13, 7, 9, 12, 12, 2, 0, 0, + 0, 0, 6, 8, 8, 7, 4, 1, 0, 1, 5, 10, 13, 1, 0, 0, + 0, 1, 4, 7, 10, 6, 8, 9, 11, 13, 14, 14, 15, 18, 14, 11, + 14, 17, 19, 21, 20, 23, 22, 19, 18, 17, 17, 15, 13, 21, 19, 17, + 15, 15, 18, 21, 23, 23, 24, 24, 26, 28, 30, 34, 34, 24, 24, 22, + 22, 22, 24, 28, 30, 34, 31, 34, 31, 17, 17, 23, 22, 255, 255, 255, + 255, 29, 33, 28, 21, 13, 8, 7, 6, 10, 14, 19, 19, 18, 15, 13, + 9, 9, 8, 8, 8, 7, 8, 8, 7, 7, 8, 10, 12, 15, 16, 18, + 6, 6, 7, 6, 5, 4, 2, 1, 7, 9, 12, 13, 16, 19, 18, 19, + 18, 20, 22, 21, 20, 18, 18, 17, 9, 5, 3, 2, 4, 7, 9, 11, + 10, 8, 5, 5, 3, 5, 9, 10, 2, 2, 4, 6, 6, 7, 9, 9, + 10, 12, 14, 14, 11, 9, 9, 9, 17, 16, 16, 14, 15, 16, 17, 19, + 21, 20, 19, 18, 18, 19, 22, 23, 21, 20, 17, 18, 20, 20, 20, 19, + 17, 21, 26, 29, 29, 28, 24, 23, 18, 17, 17, 19, 22, 25, 23, 22, + 30, 28, 32, 27, 12, 10, 21, 22, 255, 255, 255, 255, 31, 34, 29, 21, + 10, 4, 2, 3, 8, 16, 22, 22, 20, 17, 14, 11, 10, 9, 9, 10, + 9, 10, 11, 4, 7, 9, 10, 11, 13, 15, 16, 1, 2, 5, 7, 8, + 7, 5, 4, 12, 13, 15, 15, 17, 19, 21, 22, 13, 15, 15, 17, 15, + 12, 12, 12, 9, 8, 7, 6, 6, 7, 6, 6, 8, 6, 6, 3, 3, + 2, 4, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 5, 7, 6, + 6, 6, 7, 16, 13, 12, 11, 13, 14, 18, 18, 16, 14, 13, 10, 10, + 11, 14, 15, 13, 11, 9, 9, 10, 10, 9, 9, 7, 8, 12, 15, 17, + 14, 12, 11, 13, 12, 11, 11, 15, 16, 16, 14, 24, 25, 30, 27, 13, + 13, 23, 24, 255, 255, 255, 255, 30, 33, 30, 20, 9, 2, 0, 3, 8, + 16, 23, 25, 22, 16, 12, 12, 11, 11, 10, 9, 11, 11, 13, 4, 5, + 8, 10, 12, 13, 13, 14, 0, 1, 5, 8, 11, 11, 10, 9, 14, 14, + 14, 14, 15, 17, 18, 19, 8, 8, 9, 9, 10, 7, 6, 6, 10, 8, + 6, 6, 6, 4, 0, 0, 4, 6, 5, 6, 5, 6, 5, 5, 7, 7, + 5, 4, 3, 0, 0, 0, 0, 0, 4, 4, 7, 7, 10, 12, 15, 14, + 10, 11, 11, 15, 19, 22, 14, 13, 10, 8, 7, 7, 9, 11, 10, 8, + 5, 4, 4, 5, 5, 4, 4, 4, 5, 8, 8, 8, 9, 8, 9, 8, + 7, 7, 8, 10, 9, 9, 22, 22, 30, 29, 15, 17, 26, 103, 255, 255, + 255, 179, 31, 34, 30, 22, 11, 3, 0, 4, 9, 16, 20, 22, 17, 12, + 7, 12, 12, 9, 9, 9, 10, 13, 13, 4, 7, 10, 12, 14, 14, 14, + 14, 0, 1, 3, 5, 7, 9, 11, 12, 13, 13, 13, 12, 12, 14, 15, + 15, 6, 6, 7, 7, 7, 7, 3, 1, 6, 5, 4, 3, 3, 1, 0, + 0, 0, 0, 2, 3, 5, 5, 5, 5, 15, 14, 12, 10, 8, 6, 4, + 4, 0, 0, 5, 5, 7, 9, 12, 14, 17, 15, 13, 11, 12, 14, 18, + 21, 13, 11, 8, 6, 6, 8, 8, 11, 10, 7, 3, 2, 2, 3, 4, + 3, 4, 5, 5, 5, 5, 6, 7, 8, 8, 8, 8, 7, 9, 12, 12, + 13, 23, 23, 32, 32, 20, 19, 27, 255, 255, 255, 255, 26, 30, 33, 31, + 26, 17, 9, 6, 11, 14, 17, 20, 19, 15, 7, 3, 11, 10, 8, 6, + 7, 9, 12, 12, 7, 9, 11, 15, 16, 17, 16, 14, 7, 5, 3, 2, + 3, 6, 10, 12, 13, 12, 13, 13, 13, 12, 12, 12, 8, 7, 5, 8, + 8, 9, 4, 1, 6, 5, 2, 1, 2, 4, 6, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 11, 9, 9, 7, 6, 6, 4, 0, 1, 4, 4, + 4, 5, 8, 10, 17, 14, 11, 11, 11, 13, 15, 17, 7, 7, 5, 3, + 4, 5, 8, 10, 8, 4, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, + 3, 4, 4, 5, 6, 7, 8, 9, 12, 15, 19, 20, 28, 29, 38, 34, + 22, 18, 27, 255, 255, 255, 255, 26, 28, 30, 30, 27, 22, 16, 12, 20, + 19, 20, 19, 16, 11, 7, 5, 10, 9, 5, 4, 5, 7, 10, 12, 10, + 10, 13, 16, 16, 18, 17, 16, 11, 8, 5, 2, 2, 4, 7, 10, 14, + 15, 16, 17, 16, 15, 14, 13, 11, 9, 6, 9, 11, 10, 7, 2, 8, + 4, 1, 1, 6, 10, 13, 13, 6, 6, 6, 4, 3, 3, 2, 1, 5, + 6, 7, 6, 6, 6, 5, 6, 5, 7, 7, 7, 4, 5, 6, 8, 10, + 10, 9, 7, 8, 9, 10, 11, 13, 12, 9, 8, 8, 10, 11, 12, 8, + 5, 1, 0, 1, 4, 6, 5, 4, 4, 3, 4, 5, 7, 7, 8, 6, + 7, 7, 9, 10, 15, 20, 25, 34, 34, 39, 35, 19, 17, 24, 255, 255, + 255, 255, 28, 28, 29, 30, 28, 26, 22, 19, 22, 19, 15, 13, 9, 7, + 6, 5, 9, 8, 6, 3, 5, 7, 10, 12, 10, 12, 12, 14, 15, 16, + 17, 17, 11, 10, 9, 8, 7, 7, 7, 8, 11, 14, 15, 16, 18, 15, + 13, 12, 11, 6, 5, 8, 11, 10, 6, 2, 2, 2, 2, 4, 8, 11, + 14, 13, 11, 10, 8, 7, 5, 7, 7, 10, 3, 3, 4, 3, 4, 4, + 5, 3, 6, 6, 6, 5, 4, 3, 7, 9, 2, 3, 5, 6, 8, 9, + 10, 11, 23, 20, 17, 13, 12, 11, 13, 13, 8, 6, 2, 1, 3, 6, + 9, 10, 7, 7, 9, 9, 10, 10, 10, 11, 8, 10, 10, 9, 11, 13, + 20, 26, 36, 35, 39, 33, 18, 15, 21, 255, 255, 255, 255, 29, 28, 28, + 28, 28, 25, 22, 20, 18, 15, 9, 5, 2, 2, 4, 6, 11, 8, 5, + 3, 5, 6, 12, 14, 12, 11, 11, 11, 13, 13, 16, 17, 8, 9, 10, + 11, 10, 8, 6, 4, 7, 11, 13, 15, 17, 15, 11, 8, 9, 6, 4, + 5, 10, 10, 6, 0, 0, 0, 0, 3, 8, 10, 11, 9, 1, 0, 0, + 0, 3, 6, 11, 13, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 2, 0, 1, 3, 8, 11, 13, 13, 14, 24, 20, 16, + 12, 10, 8, 8, 9, 4, 0, 0, 0, 0, 1, 4, 7, 6, 5, 8, + 10, 10, 10, 9, 8, 11, 13, 13, 13, 11, 13, 20, 26, 36, 33, 36, + 30, 14, 13, 20, 255, 255, 255, 255, 34, 35, 34, 33, 36, 34, 25, 14, + 14, 6, 3, 4, 4, 0, 5, 10, 9, 8, 6, 4, 3, 6, 11, 16, + 14, 16, 19, 19, 16, 12, 11, 10, 0, 4, 9, 9, 8, 6, 9, 11, + 8, 11, 14, 17, 18, 13, 5, 0, 6, 5, 4, 4, 4, 2, 0, 0, + 0, 2, 5, 7, 8, 9, 8, 7, 7, 10, 10, 6, 3, 5, 10, 12, + 6, 7, 5, 4, 1, 1, 7, 11, 6, 2, 0, 1, 0, 0, 2, 8, + 5, 8, 9, 7, 9, 13, 13, 12, 13, 15, 20, 23, 22, 15, 7, 0, + 0, 0, 0, 0, 0, 2, 4, 6, 5, 2, 0, 1, 7, 10, 12, 9, + 14, 16, 17, 19, 18, 20, 20, 22, 34, 36, 32, 20, 12, 11, 12, 255, + 255, 255, 255, 34, 34, 31, 29, 30, 29, 19, 6, 9, 4, 1, 3, 4, + 0, 2, 8, 11, 10, 8, 5, 3, 7, 12, 16, 15, 18, 21, 19, 16, + 13, 11, 10, 8, 9, 9, 10, 12, 10, 7, 4, 12, 16, 18, 19, 16, + 11, 5, 1, 3, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 6, 5, 7, 11, 11, 9, 3, 5, 6, 7, 5, + 7, 8, 9, 9, 6, 4, 4, 3, 1, 5, 10, 5, 12, 15, 17, 20, + 21, 19, 14, 16, 16, 20, 21, 17, 12, 4, 0, 0, 0, 0, 0, 0, + 1, 5, 7, 2, 2, 1, 4, 5, 5, 5, 5, 7, 12, 19, 21, 21, + 20, 24, 28, 33, 36, 31, 22, 12, 11, 255, 255, 255, 255, 181, 35, 33, + 30, 26, 25, 23, 13, 0, 5, 2, 2, 4, 4, 2, 3, 5, 11, 11, + 8, 7, 4, 8, 12, 16, 18, 20, 19, 19, 15, 13, 12, 12, 15, 13, + 12, 14, 17, 17, 12, 6, 7, 11, 18, 19, 17, 14, 7, 3, 9, 4, + 0, 0, 0, 0, 0, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 8, 15, 20, 15, 9, 3, 3, 3, 6, 8, 10, 9, 8, 8, 5, + 3, 4, 1, 0, 1, 8, 7, 14, 23, 26, 30, 30, 25, 20, 21, 20, + 17, 14, 14, 8, 3, 0, 3, 1, 0, 0, 1, 5, 9, 12, 6, 8, + 9, 10, 8, 5, 5, 6, 2, 10, 19, 23, 22, 25, 29, 34, 30, 33, + 32, 22, 13, 13, 255, 255, 255, 255, 31, 34, 31, 26, 23, 22, 20, 9, + 0, 4, 3, 5, 5, 6, 6, 7, 7, 9, 8, 7, 5, 4, 7, 10, + 16, 15, 17, 17, 15, 13, 12, 12, 15, 14, 14, 13, 17, 18, 19, 16, + 13, 1, 6, 14, 22, 26, 24, 17, 10, 17, 14, 6, 2, 1, 3, 5, + 5, 6, 5, 3, 2, 0, 0, 0, 0, 0, 0, 2, 12, 22, 28, 21, + 12, 6, 2, 0, 0, 5, 6, 6, 4, 6, 4, 1, 1, 0, 0, 1, + 8, 7, 17, 26, 31, 33, 34, 31, 25, 28, 24, 14, 11, 7, 5, 3, + 0, 7, 6, 3, 3, 3, 8, 12, 16, 15, 18, 19, 18, 12, 9, 11, + 13, 9, 10, 15, 20, 26, 29, 35, 36, 28, 32, 31, 23, 15, 13, 255, + 255, 255, 255, 29, 28, 27, 23, 17, 18, 17, 8, 0, 2, 3, 6, 5, + 5, 7, 6, 4, 5, 6, 6, 3, 2, 5, 10, 12, 11, 11, 13, 13, + 11, 11, 13, 15, 12, 14, 19, 20, 17, 14, 15, 17, 12, 6, 5, 11, + 20, 26, 23, 19, 20, 14, 7, 2, 1, 2, 5, 5, 9, 11, 13, 15, + 15, 12, 10, 7, 4, 4, 5, 9, 21, 27, 23, 14, 10, 5, 0, 0, + 0, 0, 0, 0, 5, 3, 0, 1, 1, 0, 2, 8, 10, 17, 24, 27, + 31, 34, 32, 29, 35, 25, 14, 8, 6, 7, 4, 1, 7, 6, 5, 2, + 5, 8, 13, 14, 17, 19, 21, 17, 12, 11, 12, 15, 19, 15, 11, 15, + 22, 31, 36, 38, 28, 31, 31, 23, 16, 15, 255, 255, 255, 255, 24, 22, + 22, 17, 15, 14, 16, 8, 0, 1, 4, 5, 3, 3, 5, 4, 1, 5, + 4, 3, 2, 2, 5, 8, 10, 8, 8, 11, 13, 10, 11, 12, 14, 13, + 18, 21, 20, 14, 10, 10, 13, 18, 5, 0, 0, 0, 8, 13, 12, 10, + 7, 0, 0, 0, 0, 0, 0, 6, 11, 17, 22, 26, 24, 23, 21, 13, + 11, 8, 9, 17, 24, 21, 13, 14, 8, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 12, 19, 23, 25, 28, 34, 34, 30, 38, + 27, 14, 7, 5, 7, 4, 2, 4, 3, 1, 1, 1, 3, 6, 7, 7, + 9, 11, 11, 9, 9, 9, 10, 22, 16, 9, 10, 17, 26, 33, 36, 32, + 35, 32, 23, 15, 14, 255, 255, 255, 255, 23, 23, 22, 19, 17, 17, 18, + 12, 3, 2, 6, 6, 0, 0, 3, 4, 0, 5, 4, 5, 4, 3, 5, + 8, 11, 8, 10, 14, 15, 12, 10, 10, 9, 13, 15, 18, 16, 14, 10, + 7, 7, 13, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, + 0, 0, 3, 7, 12, 20, 25, 26, 28, 28, 19, 19, 15, 12, 16, 21, + 21, 15, 16, 13, 7, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 5, 13, 13, 19, 24, 26, 31, 34, 34, 32, 37, 25, 12, 3, 3, 5, + 4, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 1, 6, 10, 13, 14, + 9, 7, 13, 12, 9, 9, 10, 18, 27, 35, 36, 37, 35, 23, 16, 15, + 255, 255, 255, 255, 20, 27, 26, 23, 20, 22, 24, 17, 7, 5, 9, 8, + 1, 1, 5, 6, 2, 4, 6, 5, 4, 5, 6, 9, 12, 10, 13, 17, + 18, 13, 9, 8, 7, 12, 9, 10, 11, 15, 15, 10, 4, 5, 11, 15, + 13, 5, 0, 0, 1, 0, 0, 0, 2, 6, 8, 6, 4, 0, 1, 8, + 13, 18, 24, 27, 28, 23, 24, 20, 17, 20, 24, 22, 18, 15, 15, 15, + 9, 3, 0, 2, 4, 8, 6, 6, 9, 11, 12, 18, 23, 15, 20, 27, + 30, 34, 38, 36, 30, 37, 24, 10, 1, 2, 3, 2, 0, 0, 2, 1, + 1, 2, 1, 1, 1, 0, 0, 7, 15, 22, 21, 14, 8, 1, 8, 13, + 10, 5, 10, 21, 33, 38, 41, 35, 23, 16, 15, 255, 255, 255, 255, 29, + 25, 34, 27, 28, 22, 12, 14, 1, 0, 4, 3, 0, 0, 1, 0, 0, + 1, 5, 12, 13, 14, 15, 13, 14, 11, 11, 12, 12, 9, 8, 8, 9, + 6, 7, 5, 4, 5, 4, 3, 3, 8, 7, 9, 9, 8, 10, 8, 9, + 9, 7, 5, 5, 9, 13, 16, 20, 9, 8, 9, 12, 17, 22, 26, 27, + 22, 22, 21, 18, 14, 11, 11, 11, 7, 8, 6, 6, 4, 2, 0, 0, + 0, 0, 0, 2, 4, 7, 10, 12, 16, 20, 22, 24, 32, 38, 40, 36, + 39, 22, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 23, 24, 12, 1, 6, 9, 12, 12, 6, 0, 5, 14, + 28, 33, 32, 23, 18, 18, 255, 255, 255, 255, 26, 20, 30, 23, 25, 21, + 13, 15, 4, 0, 1, 2, 1, 1, 4, 3, 0, 6, 7, 7, 9, 9, + 9, 13, 16, 8, 10, 11, 12, 9, 8, 10, 9, 6, 6, 5, 5, 5, + 5, 7, 7, 6, 6, 9, 9, 11, 14, 17, 18, 17, 15, 13, 11, 12, + 13, 17, 20, 20, 18, 16, 17, 18, 19, 19, 18, 13, 15, 15, 15, 13, + 12, 14, 16, 12, 11, 9, 8, 7, 7, 8, 7, 5, 4, 6, 6, 7, + 10, 13, 14, 18, 19, 22, 23, 28, 37, 39, 36, 42, 27, 10, 0, 1, + 4, 6, 6, 10, 9, 11, 13, 14, 15, 13, 9, 12, 9, 11, 18, 26, + 26, 15, 5, 14, 10, 9, 13, 11, 7, 11, 18, 29, 34, 32, 23, 18, + 18, 255, 255, 255, 255, 24, 15, 26, 20, 23, 20, 13, 17, 6, 0, 4, + 5, 5, 5, 10, 9, 8, 6, 5, 4, 1, 1, 4, 8, 12, 6, 8, + 10, 10, 8, 8, 9, 10, 7, 6, 5, 5, 6, 8, 11, 11, 9, 9, + 8, 11, 13, 17, 20, 22, 20, 18, 12, 6, 5, 4, 7, 8, 18, 17, + 16, 17, 20, 19, 19, 16, 7, 10, 14, 15, 14, 16, 16, 18, 14, 12, + 11, 12, 11, 12, 14, 16, 9, 10, 10, 10, 10, 13, 13, 15, 19, 21, + 20, 19, 24, 33, 37, 35, 43, 32, 16, 8, 8, 10, 14, 15, 20, 20, + 24, 28, 31, 30, 29, 25, 22, 19, 18, 22, 28, 27, 20, 10, 20, 12, + 7, 11, 17, 20, 22, 25, 29, 34, 32, 23, 18, 18, 255, 255, 255, 255, + 22, 15, 25, 19, 22, 19, 13, 17, 7, 7, 8, 8, 7, 9, 12, 13, + 14, 5, 3, 0, 0, 0, 0, 4, 9, 4, 7, 9, 8, 9, 7, 9, + 11, 8, 7, 6, 5, 5, 6, 8, 10, 13, 14, 13, 14, 14, 15, 16, + 16, 18, 14, 9, 3, 0, 0, 0, 1, 1, 1, 0, 2, 6, 13, 15, + 15, 7, 10, 14, 15, 15, 16, 16, 18, 10, 11, 13, 13, 15, 15, 17, + 16, 9, 9, 10, 9, 11, 10, 11, 11, 19, 19, 18, 15, 20, 29, 34, + 34, 41, 33, 23, 17, 15, 15, 16, 17, 18, 19, 22, 27, 31, 31, 29, + 26, 24, 21, 18, 20, 24, 25, 21, 14, 23, 14, 10, 14, 19, 22, 26, + 29, 30, 35, 33, 24, 18, 97, 255, 255, 255, 255, 23, 18, 28, 20, 22, + 19, 12, 16, 6, 10, 8, 7, 6, 8, 8, 9, 12, 0, 0, 0, 0, + 0, 0, 0, 2, 3, 6, 7, 8, 9, 9, 10, 11, 9, 9, 7, 4, + 4, 3, 4, 5, 12, 12, 14, 14, 12, 12, 8, 8, 13, 11, 8, 7, + 9, 10, 11, 13, 0, 0, 0, 0, 0, 0, 0, 2, 1, 4, 6, 9, + 10, 10, 13, 16, 8, 11, 16, 21, 21, 21, 18, 15, 12, 12, 11, 11, + 10, 9, 9, 9, 18, 17, 16, 13, 17, 27, 33, 32, 34, 30, 26, 23, + 20, 17, 14, 10, 11, 11, 10, 14, 17, 20, 19, 18, 20, 18, 16, 17, + 20, 24, 24, 23, 25, 22, 22, 21, 17, 16, 21, 27, 31, 36, 34, 24, + 19, 255, 255, 255, 255, 255, 178, 20, 29, 20, 21, 18, 11, 15, 5, 8, + 4, 1, 1, 1, 0, 1, 6, 0, 0, 1, 0, 0, 0, 0, 2, 5, + 6, 9, 9, 9, 10, 11, 12, 10, 9, 8, 6, 4, 2, 1, 0, 5, + 6, 8, 8, 9, 9, 8, 8, 4, 5, 8, 11, 15, 20, 23, 25, 24, + 17, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 9, 12, 13, + 18, 23, 29, 29, 26, 21, 18, 14, 15, 14, 15, 13, 11, 10, 10, 15, + 14, 11, 9, 16, 26, 29, 29, 30, 26, 21, 21, 21, 18, 12, 7, 8, + 6, 5, 6, 8, 9, 9, 7, 12, 12, 12, 15, 19, 22, 27, 29, 27, + 30, 32, 29, 16, 7, 11, 20, 32, 37, 35, 25, 19, 255, 255, 255, 255, + 255, 255, 18, 27, 18, 19, 16, 9, 15, 5, 8, 2, 0, 0, 0, 0, + 0, 3, 0, 2, 3, 4, 3, 2, 4, 6, 6, 7, 9, 10, 10, 10, + 10, 13, 7, 8, 9, 10, 8, 6, 2, 1, 5, 5, 2, 3, 3, 6, + 9, 10, 3, 6, 11, 15, 20, 22, 24, 25, 38, 33, 26, 19, 15, 10, + 5, 2, 2, 3, 4, 3, 3, 7, 10, 15, 20, 23, 28, 30, 31, 29, + 24, 22, 16, 16, 15, 15, 15, 14, 11, 9, 10, 11, 9, 10, 14, 25, + 30, 29, 29, 24, 16, 17, 21, 22, 17, 9, 8, 6, 6, 6, 6, 5, + 2, 0, 3, 7, 9, 12, 14, 20, 24, 30, 25, 29, 35, 34, 22, 10, + 12, 17, 33, 38, 35, 25, 19, 255, 255, 255, 255, 255, 255, 15, 24, 16, + 17, 14, 9, 14, 5, 7, 0, 0, 0, 0, 0, 0, 6, 6, 5, 6, + 4, 3, 6, 8, 13, 8, 9, 11, 11, 10, 10, 12, 12, 5, 7, 10, + 10, 10, 9, 6, 4, 8, 6, 0, 0, 0, 1, 8, 10, 12, 15, 18, + 22, 24, 23, 21, 18, 27, 26, 25, 25, 24, 23, 19, 15, 19, 19, 15, + 12, 10, 12, 15, 19, 23, 26, 29, 29, 30, 28, 25, 22, 14, 14, 15, + 14, 14, 12, 10, 8, 6, 10, 9, 8, 15, 24, 28, 27, 31, 22, 12, + 14, 20, 24, 20, 14, 9, 9, 9, 10, 9, 4, 0, 0, 0, 1, 4, + 8, 11, 15, 22, 26, 20, 24, 30, 35, 28, 19, 17, 20, 33, 38, 35, + 25, 19, 255, 255, 255, 255, 255, 255, 11, 19, 19, 13, 13, 14, 10, 0, + 0, 0, 1, 3, 1, 0, 0, 0, 0, 10, 15, 4, 0, 3, 9, 9, + 0, 0, 2, 6, 7, 9, 11, 12, 6, 10, 16, 19, 19, 15, 14, 13, + 0, 0, 1, 5, 9, 12, 14, 15, 17, 16, 15, 12, 12, 12, 13, 14, + 18, 19, 20, 20, 21, 21, 20, 20, 18, 19, 19, 19, 18, 16, 14, 12, + 16, 19, 23, 25, 23, 17, 10, 7, 11, 11, 10, 10, 10, 10, 10, 10, + 1, 6, 13, 23, 32, 34, 34, 33, 34, 25, 17, 15, 15, 20, 25, 33, + 24, 14, 2, 0, 0, 1, 7, 10, 0, 1, 2, 4, 5, 4, 8, 12, + 25, 25, 25, 24, 23, 22, 23, 22, 38, 33, 26, 19, 15, 255, 255, 255, + 255, 255, 255, 13, 21, 21, 16, 15, 16, 12, 1, 0, 0, 0, 3, 0, + 0, 0, 2, 7, 17, 19, 8, 2, 6, 9, 7, 0, 0, 2, 6, 6, + 7, 9, 11, 9, 12, 17, 18, 15, 12, 9, 7, 0, 1, 3, 6, 11, + 13, 13, 14, 17, 16, 14, 14, 14, 14, 16, 17, 20, 20, 21, 22, 23, + 22, 22, 22, 21, 21, 21, 20, 19, 18, 17, 16, 18, 18, 20, 21, 21, + 17, 14, 10, 8, 9, 8, 8, 8, 8, 10, 10, 4, 8, 16, 24, 34, + 38, 38, 37, 40, 30, 21, 18, 18, 20, 25, 33, 27, 18, 8, 2, 0, + 0, 0, 0, 0, 0, 2, 3, 3, 3, 4, 5, 14, 16, 21, 24, 25, + 26, 26, 26, 37, 34, 27, 19, 15, 255, 255, 255, 255, 255, 255, 13, 20, + 21, 16, 15, 14, 11, 3, 0, 0, 1, 3, 0, 0, 0, 5, 15, 20, + 19, 10, 7, 11, 12, 8, 1, 2, 4, 4, 4, 5, 8, 10, 10, 15, + 18, 16, 14, 9, 6, 5, 3, 5, 8, 10, 12, 14, 15, 14, 14, 15, + 14, 15, 18, 21, 22, 25, 25, 25, 26, 27, 27, 27, 27, 27, 24, 24, + 23, 22, 21, 21, 21, 21, 20, 20, 20, 20, 19, 19, 16, 16, 9, 8, + 6, 7, 5, 9, 11, 13, 8, 13, 20, 30, 38, 42, 43, 42, 47, 36, + 25, 22, 21, 21, 24, 31, 27, 23, 18, 12, 9, 4, 0, 0, 0, 1, + 4, 5, 4, 2, 2, 2, 5, 9, 15, 25, 32, 36, 39, 41, 37, 35, + 27, 20, 17, 255, 255, 255, 255, 255, 255, 11, 17, 18, 15, 12, 10, 9, + 4, 3, 0, 3, 3, 0, 0, 0, 8, 16, 18, 15, 10, 10, 15, 16, + 13, 7, 8, 6, 6, 4, 6, 9, 12, 13, 15, 17, 16, 12, 8, 6, + 5, 9, 11, 14, 14, 15, 14, 13, 12, 13, 13, 13, 16, 19, 24, 28, + 30, 29, 30, 31, 32, 32, 32, 32, 31, 28, 27, 26, 24, 24, 25, 26, + 27, 23, 23, 24, 24, 25, 23, 22, 21, 9, 8, 6, 5, 6, 9, 13, + 14, 14, 16, 22, 31, 40, 45, 47, 45, 53, 41, 31, 26, 24, 23, 25, + 30, 21, 21, 20, 19, 17, 15, 12, 9, 6, 7, 8, 7, 5, 3, 4, + 5, 1, 2, 7, 16, 26, 37, 48, 52, 39, 35, 27, 22, 19, 255, 255, + 255, 255, 255, 255, 174, 16, 17, 16, 12, 9, 9, 6, 0, 0, 2, 1, + 0, 0, 3, 12, 14, 13, 9, 6, 8, 12, 13, 11, 10, 11, 10, 8, + 8, 7, 8, 11, 12, 14, 17, 14, 13, 11, 11, 11, 16, 17, 20, 18, + 18, 16, 13, 10, 13, 13, 14, 17, 20, 25, 28, 30, 30, 31, 32, 33, + 33, 33, 33, 32, 27, 26, 25, 24, 24, 26, 27, 28, 25, 28, 29, 31, + 30, 27, 23, 20, 11, 9, 7, 6, 8, 10, 14, 14, 16, 19, 25, 32, + 40, 44, 45, 45, 50, 42, 31, 29, 26, 24, 25, 30, 19, 19, 20, 21, + 20, 20, 20, 21, 14, 14, 14, 11, 8, 7, 7, 9, 6, 3, 2, 4, + 11, 25, 37, 47, 40, 36, 29, 22, 20, 255, 255, 255, 255, 255, 255, 255, + 17, 19, 18, 14, 9, 10, 11, 0, 0, 3, 4, 0, 0, 4, 16, 16, + 13, 8, 6, 6, 8, 9, 9, 14, 14, 13, 13, 10, 10, 10, 12, 13, + 15, 15, 14, 12, 12, 12, 14, 19, 21, 23, 23, 21, 19, 15, 12, 15, + 16, 15, 16, 19, 22, 23, 26, 29, 29, 30, 31, 31, 31, 31, 31, 25, + 25, 25, 25, 26, 27, 28, 28, 28, 29, 32, 32, 30, 25, 20, 18, 13, + 11, 9, 9, 7, 10, 12, 14, 16, 19, 24, 30, 37, 41, 42, 42, 44, + 35, 31, 30, 28, 26, 25, 27, 25, 24, 23, 21, 16, 15, 17, 19, 18, + 18, 16, 14, 11, 9, 11, 12, 20, 14, 8, 5, 6, 17, 28, 36, 41, + 36, 29, 24, 22, 255, 255, 255, 255, 255, 255, 255, 17, 19, 19, 14, 8, + 10, 13, 0, 4, 7, 6, 1, 0, 3, 12, 12, 9, 6, 4, 3, 4, + 7, 10, 15, 15, 16, 17, 13, 12, 13, 13, 12, 13, 14, 12, 10, 11, + 12, 14, 18, 21, 23, 25, 26, 23, 19, 17, 19, 18, 16, 15, 15, 16, + 18, 19, 26, 26, 27, 28, 29, 28, 28, 28, 21, 22, 23, 24, 25, 26, + 26, 26, 29, 30, 29, 27, 22, 18, 15, 12, 11, 12, 10, 9, 8, 7, + 8, 8, 16, 16, 21, 27, 34, 37, 37, 36, 34, 28, 26, 30, 31, 27, + 26, 28, 35, 33, 30, 23, 15, 10, 8, 10, 21, 23, 23, 23, 20, 16, + 16, 15, 24, 22, 19, 17, 17, 21, 26, 29, 41, 37, 31, 26, 24, 255, + 255, 255, 255, 255, 255, 255, 14, 16, 17, 12, 5, 8, 12, 9, 9, 13, + 10, 0, 0, 0, 5, 6, 5, 4, 4, 3, 5, 11, 17, 15, 16, 18, + 20, 17, 14, 13, 15, 13, 13, 12, 10, 9, 7, 10, 12, 15, 18, 22, + 26, 28, 27, 25, 23, 19, 18, 17, 14, 14, 14, 15, 16, 23, 24, 25, + 25, 26, 26, 25, 25, 17, 19, 21, 23, 24, 24, 24, 23, 31, 28, 24, + 19, 14, 13, 9, 9, 11, 11, 10, 9, 7, 6, 6, 5, 16, 16, 18, + 25, 30, 35, 34, 33, 27, 23, 24, 29, 32, 27, 25, 26, 42, 41, 36, + 27, 16, 8, 4, 3, 23, 26, 31, 33, 30, 24, 19, 18, 15, 17, 20, + 21, 23, 25, 24, 24, 42, 37, 31, 27, 24, 255, 255, 255, 255, 255, 255, + 255, 255, 21, 21, 11, 3, 3, 12, 12, 8, 3, 0, 0, 0, 3, 12, + 5, 15, 17, 6, 0, 8, 16, 15, 26, 24, 20, 18, 17, 16, 17, 17, + 3, 5, 11, 15, 17, 17, 14, 14, 24, 23, 23, 22, 20, 18, 17, 15, + 13, 10, 9, 9, 12, 17, 21, 24, 26, 27, 28, 29, 29, 29, 29, 28, + 24, 22, 18, 19, 22, 21, 20, 19, 11, 11, 12, 14, 11, 9, 5, 4, + 13, 14, 18, 18, 17, 16, 12, 10, 17, 22, 26, 28, 26, 28, 29, 32, + 39, 36, 30, 21, 16, 16, 20, 25, 25, 28, 32, 33, 27, 23, 20, 20, + 24, 26, 26, 25, 20, 15, 13, 13, 21, 22, 23, 25, 29, 33, 38, 40, + 42, 44, 38, 28, 22, 255, 255, 255, 255, 255, 255, 255, 255, 23, 24, 16, + 6, 7, 14, 17, 16, 14, 9, 4, 1, 1, 2, 0, 10, 16, 9, 5, + 13, 17, 15, 23, 22, 21, 20, 18, 17, 17, 16, 4, 7, 11, 15, 15, + 15, 15, 14, 23, 23, 23, 22, 20, 18, 17, 17, 10, 10, 7, 7, 9, + 12, 16, 20, 21, 21, 22, 24, 25, 26, 26, 27, 26, 24, 20, 18, 17, + 16, 13, 9, 6, 6, 7, 7, 7, 3, 1, 1, 8, 11, 16, 18, 18, + 17, 12, 10, 12, 17, 22, 27, 30, 32, 34, 34, 40, 37, 30, 22, 18, + 17, 18, 20, 20, 24, 30, 30, 27, 23, 21, 19, 23, 25, 27, 24, 20, + 19, 17, 17, 24, 25, 25, 26, 31, 34, 39, 41, 42, 42, 37, 27, 19, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 25, 17, 8, 9, 15, 16, 19, + 19, 20, 18, 11, 3, 0, 0, 4, 10, 9, 9, 16, 17, 14, 21, 20, + 20, 20, 18, 18, 16, 15, 8, 9, 11, 13, 12, 13, 15, 14, 21, 21, + 20, 17, 17, 15, 15, 15, 10, 8, 6, 4, 6, 10, 12, 14, 11, 11, + 12, 14, 16, 18, 20, 22, 27, 24, 22, 21, 20, 15, 11, 9, 3, 4, + 5, 6, 4, 1, 0, 0, 7, 10, 13, 16, 17, 15, 13, 10, 9, 11, + 18, 26, 35, 39, 40, 40, 42, 37, 30, 24, 22, 19, 15, 12, 15, 18, + 22, 24, 23, 20, 17, 17, 19, 21, 23, 21, 20, 18, 19, 19, 24, 24, + 25, 27, 30, 33, 36, 40, 42, 43, 37, 25, 18, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 24, 16, 8, 8, 15, 14, 15, 18, 24, 26, 22, 13, + 4, 0, 1, 6, 7, 10, 16, 16, 13, 17, 18, 20, 19, 20, 19, 16, + 16, 11, 11, 10, 10, 10, 12, 15, 15, 19, 17, 14, 13, 11, 11, 13, + 14, 12, 11, 8, 6, 7, 8, 10, 12, 4, 4, 5, 7, 10, 14, 17, + 18, 20, 20, 21, 19, 17, 15, 10, 9, 5, 5, 7, 7, 8, 6, 5, + 5, 10, 11, 14, 15, 15, 14, 12, 11, 6, 8, 13, 22, 34, 44, 46, + 46, 43, 38, 31, 26, 25, 21, 13, 8, 8, 11, 14, 16, 18, 16, 14, + 12, 15, 17, 18, 17, 16, 14, 17, 17, 20, 21, 21, 25, 27, 29, 34, + 37, 42, 42, 35, 23, 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, + 18, 10, 12, 18, 19, 20, 19, 22, 25, 25, 20, 13, 3, 5, 4, 6, + 12, 18, 19, 17, 16, 17, 20, 18, 19, 19, 18, 16, 13, 11, 9, 8, + 9, 10, 13, 15, 18, 15, 12, 11, 10, 11, 13, 14, 15, 13, 12, 10, + 10, 9, 11, 12, 4, 4, 6, 8, 11, 14, 17, 18, 15, 16, 16, 14, + 10, 7, 6, 3, 8, 9, 9, 11, 11, 12, 11, 11, 18, 17, 14, 13, + 12, 12, 13, 13, 8, 8, 12, 20, 32, 43, 48, 51, 45, 39, 32, 27, + 26, 22, 15, 9, 0, 2, 5, 6, 12, 15, 14, 15, 16, 16, 18, 16, + 16, 13, 15, 16, 20, 21, 22, 24, 28, 31, 34, 39, 43, 42, 34, 22, + 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 13, 17, 26, 36, + 31, 25, 18, 16, 15, 17, 17, 11, 9, 7, 8, 13, 20, 22, 23, 16, + 17, 16, 18, 19, 19, 19, 20, 14, 11, 10, 8, 8, 11, 12, 14, 18, + 16, 12, 8, 9, 11, 15, 17, 15, 14, 11, 11, 9, 11, 10, 11, 7, + 9, 11, 14, 16, 17, 18, 18, 18, 18, 16, 13, 8, 5, 3, 3, 7, + 6, 9, 9, 12, 13, 15, 14, 21, 18, 16, 13, 12, 12, 11, 13, 9, + 9, 12, 21, 29, 39, 44, 47, 45, 41, 34, 28, 25, 22, 18, 16, 0, + 0, 0, 2, 7, 12, 17, 18, 16, 18, 20, 21, 18, 18, 17, 18, 21, + 22, 24, 27, 31, 37, 40, 43, 44, 42, 34, 23, 19, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 14, 19, 30, 48, 40, 26, 11, 2, 2, + 5, 9, 11, 5, 1, 5, 14, 21, 21, 22, 16, 15, 17, 17, 18, 19, + 20, 21, 15, 12, 10, 9, 9, 9, 11, 12, 17, 13, 8, 5, 5, 9, + 12, 17, 11, 11, 9, 9, 8, 7, 9, 8, 7, 9, 12, 15, 16, 15, + 14, 12, 14, 13, 12, 8, 2, 1, 3, 5, 5, 6, 6, 10, 12, 13, + 15, 17, 14, 15, 14, 14, 13, 11, 11, 9, 7, 11, 19, 25, 31, 33, + 38, 40, 45, 42, 35, 28, 23, 22, 23, 25, 12, 8, 1, 0, 4, 10, + 14, 14, 12, 14, 20, 22, 23, 20, 20, 18, 21, 22, 24, 28, 31, 38, + 43, 46, 45, 41, 33, 24, 21, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 13, 20, 29, 50, 40, 25, 4, 0, 0, 0, 2, 2, 0, 0, + 2, 11, 17, 17, 16, 17, 16, 15, 16, 17, 19, 21, 22, 14, 13, 10, + 8, 8, 9, 10, 12, 12, 9, 3, 0, 0, 3, 8, 11, 9, 7, 6, + 5, 5, 5, 7, 6, 4, 6, 10, 13, 13, 11, 8, 6, 0, 0, 0, + 0, 0, 0, 0, 2, 3, 5, 8, 9, 13, 15, 18, 19, 8, 10, 14, + 16, 16, 13, 9, 7, 3, 12, 22, 30, 31, 30, 32, 34, 45, 43, 36, + 27, 22, 22, 26, 32, 27, 19, 8, 3, 1, 3, 7, 6, 5, 11, 16, + 21, 21, 21, 19, 19, 17, 19, 21, 24, 32, 37, 44, 47, 46, 43, 33, + 25, 25, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 20, + 35, 29, 17, 6, 0, 0, 0, 4, 3, 0, 0, 0, 9, 19, 22, 22, + 17, 13, 11, 8, 9, 10, 14, 16, 13, 10, 7, 6, 8, 12, 13, 13, + 6, 3, 3, 4, 7, 8, 9, 9, 16, 15, 12, 10, 7, 8, 6, 7, + 12, 14, 11, 8, 9, 16, 14, 8, 7, 4, 1, 0, 0, 1, 7, 12, + 6, 9, 12, 13, 14, 15, 20, 22, 12, 13, 14, 15, 15, 15, 13, 12, + 11, 13, 18, 23, 26, 27, 25, 22, 33, 34, 35, 35, 32, 28, 25, 22, + 34, 32, 27, 15, 1, 0, 0, 4, 2, 12, 18, 15, 15, 18, 21, 17, + 10, 15, 21, 27, 34, 37, 43, 47, 54, 43, 29, 21, 21, 22, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 16, 24, 21, 15, 6, 0, + 0, 0, 1, 2, 0, 0, 0, 6, 14, 18, 19, 15, 14, 10, 8, 7, + 10, 12, 14, 12, 9, 7, 8, 10, 11, 12, 11, 1, 0, 0, 0, 3, + 4, 5, 4, 10, 8, 6, 5, 3, 4, 5, 4, 8, 10, 8, 4, 7, + 12, 10, 4, 4, 1, 0, 0, 0, 5, 11, 13, 8, 6, 5, 5, 8, + 10, 13, 12, 9, 11, 12, 12, 14, 13, 11, 11, 8, 11, 15, 20, 22, + 23, 22, 20, 26, 28, 30, 31, 30, 27, 25, 24, 32, 32, 31, 22, 10, + 2, 1, 2, 0, 7, 14, 14, 16, 21, 22, 19, 10, 14, 20, 24, 30, + 36, 41, 45, 52, 42, 30, 21, 20, 20, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 11, 11, 12, 10, 6, 3, 1, 1, 2, 1, 0, + 0, 0, 2, 7, 13, 16, 15, 14, 10, 8, 7, 9, 11, 13, 10, 9, + 9, 9, 11, 11, 9, 7, 1, 0, 0, 0, 1, 3, 2, 2, 4, 2, + 1, 1, 3, 3, 4, 5, 6, 8, 6, 5, 6, 8, 7, 3, 0, 0, + 0, 0, 2, 8, 12, 15, 12, 6, 0, 0, 2, 7, 8, 5, 7, 7, + 9, 9, 9, 10, 10, 9, 6, 7, 10, 12, 13, 14, 14, 13, 17, 18, + 21, 26, 28, 28, 30, 29, 32, 32, 31, 28, 21, 13, 5, 0, 0, 3, + 10, 15, 17, 21, 22, 19, 13, 15, 19, 23, 27, 31, 39, 43, 50, 41, + 28, 20, 19, 17, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 173, 4, 5, 8, 7, 5, 4, 5, 6, 2, 3, 4, 1, 1, 3, 10, + 15, 16, 14, 11, 8, 7, 9, 11, 13, 8, 9, 9, 11, 11, 11, 8, + 5, 6, 2, 1, 0, 0, 3, 4, 3, 2, 3, 3, 3, 6, 7, 7, + 8, 9, 9, 11, 10, 9, 9, 7, 5, 0, 0, 0, 3, 6, 8, 11, + 13, 17, 12, 4, 0, 0, 3, 5, 6, 7, 7, 8, 6, 7, 6, 6, + 5, 1, 3, 5, 6, 6, 7, 8, 10, 8, 10, 15, 20, 26, 30, 33, + 33, 31, 30, 28, 27, 25, 18, 7, 0, 0, 5, 12, 16, 20, 21, 19, + 16, 20, 20, 22, 24, 26, 31, 36, 41, 46, 39, 28, 21, 17, 15, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 6, 8, 7, + 7, 8, 11, 13, 5, 7, 8, 5, 3, 4, 10, 16, 17, 15, 12, 8, + 9, 9, 11, 13, 6, 8, 9, 10, 13, 12, 7, 5, 9, 5, 1, 1, + 2, 5, 4, 4, 2, 1, 3, 5, 7, 9, 10, 9, 10, 10, 11, 11, + 11, 6, 4, 5, 1, 2, 3, 7, 6, 10, 9, 10, 15, 14, 11, 4, + 0, 0, 2, 8, 10, 9, 7, 6, 5, 3, 3, 2, 1, 4, 7, 7, + 6, 7, 6, 10, 6, 8, 13, 19, 24, 28, 33, 35, 33, 28, 23, 21, + 21, 15, 7, 1, 1, 4, 9, 17, 21, 21, 18, 17, 24, 25, 26, 27, + 27, 31, 36, 41, 42, 36, 29, 23, 17, 15, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 10, 11, 10, 8, 8, 11, 14, 6, + 8, 9, 9, 6, 7, 12, 17, 17, 14, 10, 8, 8, 8, 11, 11, 7, + 6, 8, 9, 12, 12, 9, 7, 10, 6, 3, 0, 0, 3, 3, 3, 1, + 2, 3, 5, 6, 6, 7, 6, 7, 8, 10, 12, 9, 2, 0, 1, 8, + 8, 8, 8, 8, 9, 8, 8, 9, 13, 13, 8, 0, 0, 1, 8, 8, + 8, 6, 3, 2, 2, 1, 2, 3, 7, 11, 12, 9, 8, 10, 12, 5, + 8, 11, 15, 21, 25, 29, 30, 31, 25, 20, 15, 13, 11, 6, 4, 0, + 0, 4, 13, 19, 21, 21, 21, 27, 27, 28, 28, 29, 29, 33, 35, 39, + 36, 30, 25, 21, 17, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 175, 14, 13, 11, 10, 9, 11, 7, 6, 8, 7, 9, 11, + 14, 16, 14, 13, 9, 6, 6, 5, 6, 8, 5, 6, 5, 9, 11, 12, + 12, 10, 11, 7, 2, 0, 0, 2, 2, 3, 2, 3, 4, 4, 5, 4, + 3, 2, 6, 5, 9, 12, 8, 0, 0, 0, 11, 11, 12, 11, 10, 8, + 9, 8, 6, 10, 12, 10, 3, 0, 0, 4, 3, 1, 1, 0, 0, 2, + 2, 3, 0, 5, 10, 13, 10, 8, 9, 11, 7, 9, 9, 12, 16, 20, + 23, 24, 27, 22, 18, 12, 8, 8, 6, 3, 0, 0, 0, 9, 16, 17, + 17, 20, 25, 27, 27, 26, 25, 26, 28, 29, 37, 37, 33, 28, 23, 20, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, + 16, 12, 9, 6, 6, 7, 6, 6, 6, 10, 13, 15, 17, 13, 11, 6, + 4, 2, 3, 5, 7, 5, 5, 4, 7, 11, 13, 13, 10, 14, 10, 4, + 1, 0, 4, 4, 3, 4, 6, 6, 6, 7, 5, 3, 3, 8, 7, 9, + 13, 8, 0, 0, 0, 14, 12, 11, 11, 10, 10, 9, 11, 6, 9, 10, + 12, 9, 6, 3, 2, 0, 0, 0, 0, 0, 1, 3, 5, 0, 0, 9, + 10, 8, 4, 6, 7, 8, 8, 8, 9, 12, 16, 19, 20, 24, 21, 17, + 12, 9, 6, 4, 4, 4, 0, 0, 7, 13, 12, 12, 15, 21, 23, 25, + 26, 22, 22, 22, 22, 37, 36, 33, 29, 25, 22, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 14, 10, 6, + 1, 3, 3, 0, 0, 6, 10, 11, 12, 10, 7, 5, 5, 5, 7, 8, + 8, 11, 12, 10, 8, 6, 5, 8, 6, 7, 5, 0, 0, 4, 6, 4, + 7, 11, 12, 11, 7, 6, 7, 9, 6, 5, 7, 12, 7, 1, 0, 2, + 10, 14, 16, 19, 19, 20, 23, 25, 17, 17, 10, 4, 1, 5, 2, 0, + 0, 0, 1, 3, 3, 1, 0, 0, 8, 11, 11, 12, 11, 6, 1, 0, + 0, 0, 10, 15, 16, 14, 14, 16, 21, 23, 20, 14, 10, 10, 6, 1, + 0, 0, 0, 4, 7, 8, 13, 20, 25, 28, 27, 27, 25, 24, 27, 31, + 30, 32, 31, 26, 20, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 175, 11, 9, 0, 0, 0, 0, 0, + 8, 15, 16, 10, 8, 5, 3, 2, 2, 4, 5, 8, 10, 11, 10, 8, + 6, 6, 7, 11, 13, 8, 2, 1, 5, 6, 4, 7, 8, 9, 9, 7, + 6, 5, 6, 4, 3, 5, 10, 8, 4, 3, 6, 12, 12, 15, 15, 15, + 16, 20, 22, 19, 18, 14, 8, 6, 6, 4, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 2, 5, 6, 8, 5, 3, 0, 0, 0, 0, 3, 8, 8, + 6, 8, 9, 17, 21, 21, 18, 15, 15, 13, 9, 5, 1, 0, 2, 6, + 7, 10, 16, 22, 23, 25, 25, 22, 20, 23, 26, 29, 30, 29, 25, 20, + 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 174, 2, 0, 0, 0, 0, 13, 17, 17, 11, 9, + 5, 3, 1, 1, 3, 3, 6, 8, 9, 9, 7, 7, 8, 9, 15, 15, + 12, 5, 2, 5, 5, 4, 5, 6, 6, 7, 7, 6, 3, 2, 0, 0, + 1, 7, 7, 5, 9, 14, 14, 15, 13, 12, 10, 12, 16, 19, 19, 18, + 16, 12, 9, 7, 5, 0, 0, 0, 2, 1, 2, 0, 0, 0, 0, 0, + 1, 3, 3, 1, 0, 0, 0, 0, 0, 2, 0, 1, 2, 6, 14, 20, + 22, 23, 25, 24, 23, 17, 14, 6, 0, 1, 4, 5, 7, 11, 17, 19, + 22, 19, 16, 14, 18, 21, 26, 28, 30, 27, 22, 18, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 201, 59, 0, 6, 15, 19, 16, 10, 8, 5, 2, 1, 1, 2, + 2, 7, 9, 8, 8, 6, 7, 9, 11, 14, 16, 12, 6, 3, 7, 8, + 7, 4, 3, 2, 5, 6, 7, 2, 0, 0, 0, 0, 4, 7, 7, 12, + 19, 18, 17, 15, 13, 11, 13, 17, 21, 14, 16, 14, 12, 9, 8, 3, + 0, 3, 3, 2, 4, 5, 6, 4, 2, 0, 0, 1, 3, 4, 5, 5, + 3, 0, 2, 3, 1, 0, 0, 5, 10, 14, 21, 27, 27, 28, 31, 26, + 21, 20, 10, 1, 1, 3, 4, 7, 9, 14, 18, 19, 17, 12, 10, 15, + 19, 26, 27, 30, 28, 24, 19, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, + 10, 17, 19, 15, 12, 10, 7, 4, 3, 3, 4, 5, 7, 8, 8, 8, + 6, 6, 9, 11, 10, 12, 8, 4, 3, 8, 11, 8, 5, 2, 0, 2, + 4, 5, 2, 0, 0, 0, 0, 4, 6, 8, 15, 23, 22, 23, 19, 15, + 13, 15, 20, 23, 11, 13, 15, 12, 12, 12, 8, 1, 5, 3, 1, 2, + 7, 10, 9, 6, 0, 1, 2, 3, 4, 5, 6, 6, 5, 7, 7, 6, + 3, 4, 9, 16, 17, 24, 30, 31, 32, 31, 26, 19, 24, 14, 4, 2, + 3, 5, 8, 13, 13, 18, 21, 18, 12, 11, 13, 18, 28, 31, 33, 31, + 26, 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, 16, 18, 13, 11, + 9, 7, 4, 4, 4, 6, 7, 9, 9, 10, 6, 5, 5, 8, 11, 7, + 8, 6, 3, 3, 8, 11, 11, 5, 4, 3, 3, 5, 5, 4, 3, 1, + 0, 1, 8, 7, 9, 16, 24, 24, 23, 21, 16, 15, 16, 21, 26, 10, + 13, 15, 14, 17, 20, 16, 12, 6, 3, 0, 1, 5, 7, 8, 6, 3, + 3, 3, 3, 4, 4, 5, 6, 8, 9, 9, 6, 3, 8, 14, 18, 25, + 30, 35, 33, 32, 31, 25, 19, 25, 17, 10, 7, 5, 4, 9, 15, 16, + 21, 23, 20, 12, 11, 14, 20, 32, 35, 35, 31, 24, 21, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 15, 16, 14, 9, 8, 6, 4, 3, 3, 4, + 6, 7, 10, 11, 9, 7, 5, 4, 7, 9, 6, 8, 7, 3, 4, 10, + 13, 12, 6, 6, 5, 4, 3, 3, 5, 7, 4, 5, 5, 10, 11, 10, + 14, 21, 20, 21, 20, 18, 16, 16, 21, 24, 5, 9, 12, 13, 18, 23, + 22, 19, 12, 7, 1, 2, 4, 7, 7, 4, 7, 6, 4, 4, 3, 3, + 6, 7, 9, 11, 10, 9, 6, 10, 16, 21, 29, 36, 38, 35, 33, 32, + 26, 19, 26, 21, 16, 11, 6, 2, 7, 16, 16, 22, 25, 21, 12, 11, + 15, 22, 33, 35, 34, 30, 23, 18, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 13, 10, 7, 6, 5, 3, 2, 2, 4, 6, 8, 12, 11, 10, + 6, 5, 3, 7, 8, 8, 11, 7, 3, 5, 11, 13, 12, 8, 9, 7, + 5, 2, 2, 7, 12, 9, 8, 8, 11, 12, 11, 15, 20, 18, 17, 16, + 15, 15, 15, 17, 21, 2, 6, 8, 11, 16, 22, 23, 19, 18, 12, 5, + 4, 6, 8, 7, 3, 12, 11, 8, 6, 4, 6, 7, 7, 10, 13, 12, + 11, 9, 13, 18, 25, 34, 38, 39, 36, 34, 31, 27, 21, 27, 25, 21, + 16, 5, 1, 5, 16, 17, 21, 26, 23, 14, 10, 15, 21, 34, 35, 33, + 28, 21, 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 25, 15, 7, + 9, 7, 5, 4, 2, 2, 4, 6, 3, 6, 7, 7, 5, 4, 3, 5, + 5, 5, 6, 4, 4, 7, 11, 16, 2, 4, 5, 4, 2, 4, 8, 13, + 4, 1, 3, 7, 8, 7, 10, 16, 17, 15, 10, 5, 4, 4, 7, 8, + 14, 12, 12, 14, 18, 23, 26, 26, 32, 26, 19, 14, 12, 10, 9, 10, + 11, 9, 7, 4, 0, 0, 0, 0, 0, 4, 12, 14, 16, 17, 24, 30, + 39, 38, 34, 30, 27, 25, 22, 22, 27, 25, 23, 20, 11, 0, 0, 0, + 17, 23, 25, 16, 9, 9, 18, 23, 37, 31, 27, 26, 24, 97, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 22, 14, 8, 7, 5, 3, 2, 0, + 2, 2, 4, 4, 5, 6, 7, 7, 6, 6, 8, 6, 6, 7, 5, 5, + 6, 11, 16, 6, 7, 9, 7, 6, 5, 11, 17, 11, 8, 9, 11, 11, + 9, 11, 16, 15, 13, 10, 6, 5, 5, 8, 9, 6, 5, 6, 7, 9, + 15, 18, 19, 24, 19, 13, 11, 8, 8, 7, 6, 12, 11, 7, 6, 4, + 3, 3, 2, 2, 8, 13, 14, 14, 16, 22, 26, 37, 35, 33, 30, 27, + 24, 23, 23, 29, 24, 23, 20, 13, 3, 0, 4, 14, 21, 23, 15, 9, + 13, 21, 27, 35, 30, 26, 25, 23, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 176, 16, 11, 6, 3, 2, 1, 1, 0, 2, 1, 3, 6, + 8, 9, 7, 8, 10, 12, 9, 12, 10, 6, 5, 5, 11, 17, 10, 12, + 12, 9, 7, 7, 12, 16, 16, 11, 9, 11, 9, 5, 7, 9, 13, 10, + 7, 5, 5, 5, 7, 8, 0, 0, 0, 0, 2, 8, 10, 14, 15, 12, + 10, 9, 10, 10, 9, 6, 13, 11, 10, 9, 7, 7, 7, 7, 8, 11, + 15, 14, 12, 15, 18, 23, 31, 30, 27, 25, 23, 21, 19, 18, 26, 23, + 22, 19, 12, 5, 5, 10, 9, 16, 19, 14, 13, 18, 28, 31, 32, 28, + 25, 25, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, + 10, 5, 5, 2, 2, 1, 2, 1, 2, 4, 7, 8, 8, 9, 10, 12, + 15, 14, 15, 15, 10, 5, 4, 10, 15, 16, 17, 17, 11, 7, 6, 11, + 14, 15, 10, 5, 7, 5, 3, 3, 6, 8, 7, 4, 3, 1, 1, 2, + 3, 0, 1, 0, 0, 1, 5, 10, 14, 9, 9, 9, 11, 14, 16, 17, + 14, 12, 11, 10, 9, 9, 7, 7, 8, 9, 11, 14, 14, 13, 15, 17, + 20, 24, 24, 22, 19, 15, 14, 13, 11, 20, 18, 16, 14, 8, 4, 6, + 13, 7, 12, 15, 14, 15, 23, 32, 33, 29, 26, 25, 24, 21, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 10, 7, 6, 4, 2, + 3, 2, 3, 4, 5, 5, 8, 8, 9, 11, 14, 16, 18, 19, 20, 15, + 7, 4, 9, 14, 21, 19, 18, 12, 6, 4, 7, 11, 13, 5, 1, 3, + 3, 2, 2, 3, 4, 4, 2, 1, 0, 0, 0, 0, 4, 4, 3, 2, + 0, 3, 9, 13, 5, 4, 7, 11, 17, 19, 19, 19, 13, 12, 10, 7, + 5, 5, 4, 4, 7, 8, 12, 12, 14, 14, 17, 17, 20, 19, 17, 16, + 12, 10, 9, 9, 14, 11, 10, 7, 3, 0, 5, 14, 6, 10, 13, 14, + 18, 27, 34, 34, 26, 25, 25, 25, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 16, 10, 5, 6, 6, 4, 3, 3, 2, 2, 5, + 7, 9, 9, 9, 10, 14, 17, 19, 25, 25, 20, 9, 4, 6, 12, 20, + 20, 18, 12, 6, 4, 6, 11, 6, 0, 0, 0, 0, 0, 0, 0, 2, + 1, 3, 2, 1, 0, 0, 0, 6, 6, 4, 1, 0, 0, 5, 10, 0, + 1, 3, 7, 11, 13, 14, 14, 11, 9, 8, 4, 4, 3, 3, 3, 4, + 7, 10, 14, 14, 14, 13, 11, 16, 14, 13, 13, 12, 12, 10, 10, 10, + 6, 4, 2, 0, 0, 5, 13, 9, 11, 12, 13, 20, 29, 33, 32, 23, + 24, 26, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 16, 11, 5, 5, 4, 3, 3, 1, 1, 1, 8, 7, 8, 8, 8, 10, + 13, 17, 20, 27, 29, 24, 12, 4, 4, 7, 18, 18, 17, 13, 8, 6, + 11, 15, 6, 0, 0, 0, 0, 0, 0, 0, 1, 3, 6, 6, 5, 5, + 4, 3, 7, 9, 6, 0, 0, 0, 0, 6, 1, 1, 0, 1, 3, 5, + 5, 3, 8, 6, 5, 4, 4, 3, 3, 4, 4, 6, 10, 13, 15, 11, + 6, 3, 5, 5, 7, 7, 9, 10, 11, 12, 11, 7, 4, 3, 0, 0, + 6, 16, 12, 14, 13, 13, 22, 30, 31, 28, 22, 24, 27, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, 3, 4, 3, + 3, 2, 2, 0, 0, 7, 8, 8, 7, 8, 8, 13, 15, 21, 29, 33, + 27, 13, 4, 4, 6, 15, 17, 16, 14, 10, 11, 15, 20, 17, 7, 0, + 1, 2, 1, 1, 0, 0, 5, 8, 11, 12, 11, 12, 9, 11, 11, 8, + 1, 0, 0, 0, 7, 5, 2, 0, 0, 0, 0, 0, 0, 5, 4, 4, + 4, 3, 4, 5, 6, 4, 6, 11, 16, 15, 11, 4, 0, 0, 0, 0, + 2, 5, 8, 11, 13, 13, 9, 5, 4, 0, 0, 8, 18, 15, 15, 14, + 15, 21, 30, 31, 27, 22, 24, 103, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 8, 10, 7, 4, 4, 4, 3, 2, 0, + 13, 10, 7, 4, 3, 4, 10, 14, 12, 20, 29, 28, 17, 9, 7, 8, + 15, 21, 27, 26, 20, 11, 8, 7, 3, 3, 1, 0, 0, 1, 6, 7, + 5, 8, 12, 16, 17, 17, 11, 6, 15, 23, 24, 16, 7, 8, 16, 22, + 19, 15, 5, 3, 7, 13, 8, 0, 7, 0, 0, 9, 8, 7, 9, 5, + 0, 11, 17, 20, 23, 14, 2, 2, 4, 3, 1, 0, 0, 0, 1, 5, + 11, 16, 14, 6, 5, 13, 19, 18, 18, 12, 14, 27, 39, 36, 31, 28, + 17, 20, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 8, 9, 7, 4, 5, 5, 4, 2, 0, 11, 8, 5, 2, 0, + 3, 7, 11, 11, 21, 29, 29, 20, 11, 7, 6, 8, 17, 23, 26, 21, + 13, 10, 9, 13, 15, 14, 13, 16, 17, 11, 2, 0, 0, 5, 13, 16, + 16, 12, 9, 20, 31, 35, 27, 23, 27, 39, 46, 35, 25, 14, 14, 27, + 36, 30, 16, 16, 3, 8, 20, 20, 18, 16, 10, 6, 19, 26, 29, 34, + 23, 7, 6, 0, 0, 0, 0, 0, 0, 4, 7, 19, 19, 16, 12, 13, + 20, 26, 25, 17, 17, 21, 32, 39, 35, 28, 24, 29, 107, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 9, 10, 8, + 4, 4, 4, 5, 2, 1, 9, 6, 5, 0, 0, 0, 4, 8, 12, 20, + 28, 31, 24, 14, 7, 5, 3, 10, 20, 24, 20, 17, 12, 11, 17, 19, + 17, 18, 22, 23, 13, 0, 0, 0, 0, 1, 5, 12, 13, 13, 26, 38, + 44, 38, 33, 38, 53, 64, 48, 33, 19, 23, 41, 54, 45, 27, 23, 8, + 13, 29, 32, 28, 23, 14, 15, 28, 35, 38, 44, 30, 12, 5, 0, 0, + 0, 0, 0, 1, 7, 8, 23, 21, 17, 16, 21, 30, 32, 30, 15, 16, + 19, 27, 28, 20, 12, 8, 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 173, 11, 9, 4, 3, 3, 4, 3, + 2, 8, 7, 4, 0, 0, 0, 3, 7, 10, 18, 28, 30, 27, 17, 8, + 4, 0, 8, 17, 22, 22, 18, 13, 9, 21, 19, 15, 12, 14, 15, 14, + 8, 14, 7, 0, 0, 0, 1, 7, 12, 24, 36, 43, 35, 27, 31, 46, + 59, 51, 38, 21, 24, 40, 54, 45, 30, 27, 9, 11, 30, 36, 33, 28, + 20, 21, 33, 38, 41, 45, 31, 9, 3, 2, 4, 4, 6, 5, 6, 10, + 12, 19, 18, 16, 20, 29, 32, 32, 27, 16, 16, 17, 18, 16, 11, 7, + 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 11, 8, 6, 4, 4, 4, 3, 2, 7, 7, 6, 2, + 1, 2, 4, 7, 9, 17, 26, 31, 29, 22, 10, 3, 1, 6, 15, 20, + 20, 18, 12, 9, 22, 27, 24, 17, 12, 12, 13, 14, 27, 19, 9, 0, + 0, 0, 0, 0, 11, 24, 31, 26, 19, 26, 41, 52, 51, 41, 30, 29, + 39, 47, 43, 31, 34, 13, 14, 33, 40, 37, 35, 31, 32, 40, 40, 39, + 38, 22, 2, 0, 0, 3, 7, 10, 12, 14, 16, 18, 16, 15, 18, 26, + 32, 32, 24, 18, 19, 20, 20, 19, 23, 31, 38, 40, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, + 8, 6, 3, 4, 4, 5, 5, 6, 6, 5, 3, 2, 3, 7, 10, 10, + 15, 22, 30, 30, 24, 16, 7, 4, 8, 14, 19, 21, 19, 13, 11, 17, + 28, 35, 29, 19, 13, 9, 6, 25, 21, 17, 14, 8, 2, 0, 0, 0, + 8, 18, 17, 16, 25, 38, 46, 47, 43, 35, 34, 39, 47, 42, 36, 41, + 18, 19, 38, 42, 37, 37, 37, 40, 47, 43, 33, 27, 12, 0, 0, 0, + 0, 8, 15, 20, 22, 24, 24, 19, 17, 22, 30, 34, 27, 18, 13, 15, + 17, 20, 25, 39, 59, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 9, 5, 2, 3, 5, + 5, 4, 4, 4, 4, 3, 2, 5, 8, 11, 10, 12, 20, 28, 32, 28, + 19, 11, 4, 6, 12, 16, 19, 18, 18, 14, 13, 24, 33, 33, 29, 21, + 14, 7, 15, 16, 15, 15, 13, 9, 3, 0, 0, 4, 9, 9, 11, 18, + 25, 28, 31, 28, 25, 28, 36, 44, 40, 31, 41, 20, 23, 42, 42, 32, + 31, 32, 37, 43, 37, 23, 16, 4, 0, 6, 0, 7, 17, 27, 31, 31, + 29, 28, 23, 21, 24, 30, 28, 18, 10, 8, 14, 19, 26, 35, 53, 132, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 13, 9, 5, 3, 4, 5, 4, 6, 2, 2, 3, + 4, 3, 4, 9, 12, 10, 12, 18, 25, 32, 30, 21, 13, 4, 6, 10, + 16, 19, 22, 20, 18, 15, 23, 30, 33, 36, 34, 28, 18, 13, 10, 7, + 8, 11, 14, 15, 15, 2, 6, 8, 4, 3, 5, 7, 4, 13, 11, 10, + 16, 28, 38, 34, 23, 34, 15, 20, 39, 35, 21, 17, 19, 24, 32, 26, + 14, 8, 2, 2, 15, 9, 19, 29, 37, 38, 35, 31, 28, 25, 23, 24, + 25, 20, 10, 2, 5, 22, 27, 33, 44, 58, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 176, 16, 9, 0, 0, 1, 7, 7, 6, 6, 5, 4, 4, 5, 5, 6, + 13, 12, 14, 16, 23, 29, 22, 12, 15, 11, 9, 18, 27, 28, 25, 25, + 20, 21, 24, 30, 33, 31, 20, 11, 21, 16, 13, 14, 12, 5, 4, 6, + 10, 8, 7, 10, 11, 7, 0, 0, 3, 0, 0, 3, 14, 21, 22, 19, + 20, 20, 21, 20, 19, 16, 10, 6, 20, 20, 18, 11, 5, 2, 4, 8, + 23, 32, 41, 42, 38, 34, 26, 20, 26, 27, 29, 28, 19, 7, 4, 7, + 14, 26, 32, 50, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, 13, 2, 0, + 1, 2, 4, 5, 4, 4, 3, 4, 4, 5, 6, 9, 10, 10, 14, 21, + 27, 21, 11, 11, 6, 7, 15, 23, 27, 25, 24, 18, 19, 20, 26, 30, + 30, 22, 17, 20, 15, 10, 10, 8, 2, 0, 3, 8, 12, 18, 24, 25, + 19, 9, 1, 10, 2, 0, 0, 1, 5, 3, 1, 6, 5, 6, 6, 6, + 6, 1, 0, 8, 11, 15, 15, 12, 12, 15, 18, 27, 35, 42, 40, 36, + 33, 27, 19, 25, 25, 28, 23, 15, 3, 1, 5, 12, 28, 43, 124, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 71, 15, 5, 0, 1, 1, 0, 2, 2, + 2, 2, 3, 4, 5, 5, 4, 7, 9, 11, 18, 23, 18, 11, 6, 2, + 2, 11, 22, 24, 23, 26, 17, 16, 16, 20, 24, 27, 25, 22, 20, 14, + 9, 9, 6, 2, 0, 3, 7, 11, 18, 26, 30, 28, 22, 17, 29, 21, + 8, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 8, + 15, 21, 21, 21, 24, 26, 31, 37, 40, 37, 34, 30, 24, 20, 25, 23, + 24, 20, 12, 3, 5, 12, 11, 36, 122, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 203, 16, 9, 4, 2, 0, 0, 3, 3, 3, 3, 4, 5, 6, + 7, 2, 5, 6, 9, 17, 22, 17, 10, 5, 0, 0, 9, 19, 23, 24, + 27, 18, 16, 13, 15, 18, 23, 24, 25, 22, 16, 11, 10, 6, 0, 0, + 3, 6, 6, 8, 13, 20, 25, 31, 34, 46, 36, 26, 19, 16, 13, 8, + 6, 7, 5, 4, 4, 5, 8, 7, 7, 5, 11, 19, 22, 23, 23, 28, + 30, 35, 39, 41, 35, 30, 28, 24, 21, 26, 24, 22, 16, 9, 5, 10, + 19, 18, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 10, + 7, 6, 4, 0, 4, 4, 4, 4, 4, 5, 6, 7, 0, 5, 7, 9, + 15, 20, 19, 13, 5, 0, 0, 7, 19, 23, 25, 28, 21, 18, 14, 13, + 14, 19, 22, 24, 24, 17, 12, 10, 6, 1, 1, 3, 5, 4, 2, 5, + 8, 16, 26, 32, 38, 34, 30, 26, 24, 23, 17, 13, 18, 16, 12, 12, + 14, 14, 16, 16, 13, 16, 21, 21, 22, 24, 29, 35, 36, 40, 39, 33, + 28, 26, 25, 22, 31, 25, 20, 12, 4, 2, 10, 21, 105, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 10, 7, 8, 5, 2, 6, + 5, 5, 4, 4, 5, 5, 6, 1, 4, 9, 9, 15, 18, 18, 13, 9, + 2, 0, 8, 17, 22, 24, 27, 21, 19, 15, 13, 13, 17, 19, 22, 22, + 17, 16, 13, 9, 2, 0, 1, 4, 6, 8, 8, 8, 9, 11, 13, 24, + 23, 22, 23, 23, 22, 19, 16, 21, 16, 14, 12, 15, 15, 15, 13, 16, + 19, 20, 19, 21, 24, 32, 38, 34, 39, 38, 32, 27, 28, 26, 24, 34, + 25, 16, 7, 0, 0, 12, 25, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 9, 7, 9, 7, 2, 10, 10, 8, 7, 6, 6, + 6, 7, 1, 4, 8, 8, 13, 17, 16, 12, 11, 2, 0, 5, 14, 19, + 21, 23, 18, 18, 16, 15, 14, 17, 19, 22, 27, 22, 20, 21, 14, 6, + 2, 2, 2, 6, 11, 13, 8, 5, 4, 4, 14, 14, 14, 13, 14, 16, + 14, 12, 16, 14, 11, 12, 13, 14, 14, 13, 19, 21, 22, 21, 20, 21, + 27, 33, 32, 36, 35, 31, 27, 28, 29, 27, 29, 23, 13, 6, 2, 8, + 24, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 7, 7, 5, 3, 12, 11, 9, 8, 7, 6, 6, 6, 0, 5, 6, + 8, 11, 14, 14, 12, 11, 3, 0, 3, 13, 16, 18, 22, 16, 17, 17, + 16, 15, 18, 20, 22, 32, 30, 27, 27, 23, 13, 8, 7, 0, 4, 8, + 8, 7, 4, 5, 7, 9, 8, 4, 2, 2, 3, 6, 5, 13, 12, 10, + 13, 15, 15, 14, 13, 23, 25, 25, 23, 19, 18, 23, 26, 30, 34, 34, + 31, 27, 29, 30, 28, 24, 16, 11, 7, 9, 19, 113, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 1, 0, 0, + 2, 3, 1, 1, 1, 1, 2, 3, 2, 4, 3, 5, 7, 12, 20, 25, + 14, 8, 2, 1, 5, 12, 18, 21, 16, 20, 23, 23, 22, 21, 20, 19, + 16, 20, 21, 19, 14, 10, 6, 7, 2, 3, 7, 8, 11, 12, 13, 13, + 4, 3, 4, 3, 4, 4, 6, 7, 7, 11, 13, 15, 14, 11, 13, 15, + 20, 20, 19, 20, 23, 27, 30, 33, 40, 38, 31, 27, 30, 38, 40, 36, + 33, 13, 0, 0, 16, 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 1, 0, 0, 3, 3, 1, 2, 2, + 2, 3, 2, 2, 4, 2, 5, 6, 11, 19, 23, 16, 10, 3, 0, 4, + 10, 18, 21, 14, 17, 20, 20, 20, 17, 17, 16, 16, 18, 19, 18, 14, + 11, 8, 6, 5, 5, 7, 6, 8, 8, 9, 9, 4, 3, 4, 3, 4, + 6, 6, 6, 4, 8, 12, 12, 12, 13, 15, 17, 20, 20, 20, 20, 21, + 23, 27, 29, 36, 35, 30, 27, 30, 36, 37, 32, 9, 4, 8, 30, 57, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 170, 0, 0, 4, 3, 3, 1, 1, 4, 3, 4, 3, 4, + 2, 4, 5, 9, 16, 20, 19, 12, 6, 0, 1, 5, 14, 19, 11, 15, + 17, 19, 17, 15, 16, 16, 19, 18, 16, 16, 13, 11, 8, 6, 10, 11, + 8, 8, 6, 8, 8, 8, 5, 4, 5, 3, 3, 3, 3, 3, 3, 6, + 9, 12, 13, 14, 17, 19, 21, 19, 19, 19, 18, 20, 23, 24, 32, 32, + 30, 28, 31, 35, 33, 27, 7, 7, 16, 39, 126, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 4, 4, 2, 3, 3, 3, 5, 4, 3, 4, 2, 3, 3, 6, 13, + 17, 19, 16, 9, 2, 0, 3, 11, 17, 12, 15, 18, 18, 16, 16, 17, + 18, 19, 17, 14, 14, 16, 15, 11, 6, 16, 14, 10, 9, 7, 9, 10, + 13, 10, 8, 5, 4, 2, 2, 0, 1, 4, 6, 9, 13, 16, 18, 22, + 24, 22, 21, 19, 17, 16, 18, 20, 21, 27, 30, 31, 32, 34, 36, 31, + 25, 0, 1, 31, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 0, 3, 3, 3, 3, + 2, 2, 3, 5, 4, 5, 1, 2, 1, 4, 9, 13, 17, 16, 12, 6, + 0, 1, 6, 15, 15, 17, 18, 20, 19, 17, 21, 22, 18, 17, 13, 14, + 16, 16, 11, 9, 13, 13, 10, 10, 9, 11, 12, 15, 11, 11, 8, 5, + 2, 1, 0, 0, 5, 5, 8, 12, 14, 18, 21, 22, 20, 19, 18, 15, + 17, 18, 20, 21, 22, 28, 32, 36, 39, 40, 33, 22, 7, 25, 51, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 170, 3, 1, 1, 1, 2, 2, 4, 3, 4, + 5, 1, 1, 0, 1, 6, 9, 11, 15, 17, 11, 3, 0, 4, 10, 16, + 18, 19, 20, 17, 20, 20, 22, 17, 17, 16, 18, 20, 17, 14, 11, 8, + 9, 7, 8, 7, 10, 11, 12, 10, 10, 8, 7, 4, 4, 2, 2, 5, + 3, 4, 6, 12, 16, 18, 17, 19, 19, 18, 17, 18, 21, 23, 26, 22, + 29, 36, 41, 45, 42, 29, 18, 30, 47, 134, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 1, 1, 1, 0, 0, 0, 1, 3, 5, 5, 1, 0, 0, 0, + 3, 6, 5, 15, 20, 16, 6, 0, 2, 7, 15, 16, 17, 16, 17, 18, + 18, 22, 14, 17, 21, 23, 20, 16, 14, 12, 8, 8, 7, 8, 8, 9, + 9, 9, 6, 5, 4, 6, 8, 8, 11, 11, 9, 6, 5, 8, 11, 16, + 17, 15, 18, 18, 17, 19, 21, 24, 29, 31, 25, 33, 41, 45, 45, 40, + 24, 9, 0, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 1, 1, + 0, 0, 0, 1, 1, 5, 5, 1, 0, 0, 0, 2, 5, 1, 13, 21, + 19, 7, 0, 1, 3, 11, 14, 13, 14, 13, 14, 17, 19, 13, 19, 25, + 26, 22, 17, 15, 14, 10, 11, 10, 12, 10, 10, 8, 7, 1, 3, 3, + 7, 9, 12, 14, 15, 14, 12, 10, 11, 14, 19, 18, 18, 17, 17, 17, + 19, 23, 28, 32, 35, 27, 36, 43, 46, 46, 36, 19, 1, 19, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 170, 0, 2, 6, 5, 7, 6, 6, + 4, 6, 8, 9, 9, 7, 6, 3, 7, 12, 16, 13, 6, 0, 2, 4, + 13, 14, 13, 10, 7, 8, 12, 16, 14, 21, 31, 38, 38, 33, 25, 22, + 18, 17, 15, 11, 9, 6, 3, 3, 0, 0, 0, 5, 9, 13, 18, 20, + 22, 20, 20, 22, 23, 24, 23, 23, 4, 7, 12, 19, 28, 33, 34, 34, + 34, 38, 41, 41, 41, 36, 23, 11, 92, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 3, 5, 5, 6, 6, 6, 2, 4, 6, 6, 7, + 5, 3, 2, 3, 9, 12, 12, 6, 2, 0, 3, 10, 11, 13, 10, 7, + 9, 12, 18, 14, 21, 31, 38, 40, 36, 32, 29, 26, 23, 20, 16, 15, + 14, 16, 15, 16, 16, 18, 18, 19, 20, 23, 24, 21, 20, 19, 20, 22, + 24, 23, 21, 8, 10, 16, 22, 29, 35, 34, 34, 27, 34, 35, 34, 31, + 26, 16, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, + 2, 5, 6, 6, 6, 5, 0, 2, 3, 6, 5, 3, 1, 1, 2, 4, + 7, 9, 10, 6, 3, 0, 7, 10, 12, 10, 9, 11, 15, 20, 16, 21, + 28, 33, 33, 33, 31, 31, 28, 25, 20, 18, 16, 19, 22, 24, 30, 29, + 28, 26, 25, 25, 25, 25, 20, 18, 18, 18, 20, 22, 22, 20, 12, 15, + 17, 23, 29, 33, 32, 32, 29, 35, 36, 31, 26, 19, 12, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 4, 6, 6, 4, + 5, 0, 2, 3, 5, 5, 3, 2, 0, 3, 3, 4, 8, 10, 10, 4, + 1, 7, 9, 11, 9, 10, 12, 16, 23, 21, 23, 25, 24, 23, 21, 21, + 23, 22, 21, 17, 16, 16, 18, 18, 20, 26, 26, 26, 23, 24, 24, 24, + 25, 17, 16, 16, 17, 19, 21, 21, 19, 16, 16, 18, 23, 25, 28, 28, + 27, 34, 39, 38, 29, 19, 14, 11, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 172, 7, 6, 5, 3, 0, 1, 3, 5, + 7, 6, 4, 2, 2, 3, 3, 9, 13, 14, 8, 3, 8, 9, 12, 11, + 9, 13, 18, 23, 23, 22, 22, 19, 15, 13, 13, 15, 18, 18, 19, 18, + 16, 16, 14, 14, 24, 22, 22, 21, 19, 19, 20, 20, 15, 13, 13, 15, + 18, 20, 19, 17, 19, 20, 20, 22, 26, 29, 28, 28, 35, 37, 33, 21, + 13, 9, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 172, 6, 5, 4, 0, 2, 4, 7, 7, 7, 6, 4, 3, + 2, 4, 7, 11, 13, 10, 6, 4, 8, 9, 8, 9, 11, 16, 22, 19, + 19, 16, 14, 11, 13, 16, 20, 18, 18, 20, 20, 21, 19, 17, 16, 27, + 25, 24, 19, 17, 15, 14, 14, 13, 11, 12, 13, 16, 18, 17, 16, 23, + 22, 22, 24, 29, 32, 32, 31, 39, 36, 29, 16, 10, 9, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, + 5, 4, 0, 2, 4, 7, 8, 8, 6, 4, 3, 3, 3, 6, 7, 10, + 9, 10, 2, 5, 6, 6, 4, 6, 11, 17, 16, 15, 14, 12, 11, 13, + 17, 20, 14, 15, 15, 18, 17, 17, 18, 18, 26, 25, 22, 18, 15, 10, + 9, 10, 12, 11, 10, 12, 15, 16, 17, 16, 22, 22, 21, 25, 28, 32, + 34, 34, 40, 34, 24, 12, 8, 10, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 5, 2, 0, 1, 3, + 6, 7, 7, 5, 3, 2, 2, 3, 3, 5, 7, 9, 9, 1, 2, 4, + 3, 1, 4, 8, 14, 14, 15, 12, 10, 8, 10, 13, 17, 8, 8, 9, + 8, 11, 13, 16, 16, 20, 20, 15, 13, 9, 8, 5, 5, 10, 9, 9, + 12, 15, 17, 16, 15, 19, 19, 18, 21, 26, 32, 33, 34, 34, 26, 14, + 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 172, 4, 0, 0, 0, 1, 1, 3, 4, 6, + 9, 7, 3, 1, 1, 3, 7, 9, 10, 7, 5, 3, 4, 4, 7, 8, + 14, 13, 14, 12, 12, 12, 12, 12, 10, 11, 10, 10, 9, 9, 11, 12, + 19, 20, 23, 26, 25, 23, 19, 17, 17, 16, 16, 16, 18, 17, 15, 13, + 21, 17, 14, 16, 23, 30, 34, 35, 45, 28, 9, 4, 7, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 4, 0, 0, 1, 2, 4, 5, 7, 6, 9, 7, 5, 1, 1, + 5, 7, 9, 8, 6, 5, 4, 4, 5, 6, 7, 9, 10, 9, 10, 11, + 11, 11, 11, 8, 8, 8, 8, 8, 8, 10, 9, 14, 17, 19, 20, 20, + 17, 14, 12, 14, 13, 12, 12, 14, 15, 14, 12, 20, 17, 14, 18, 24, + 29, 32, 34, 36, 19, 4, 3, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 2, 2, + 3, 3, 5, 8, 7, 9, 9, 8, 4, 2, 2, 4, 8, 9, 5, 4, + 3, 3, 5, 5, 4, 5, 6, 5, 5, 5, 5, 7, 8, 10, 8, 7, + 7, 6, 5, 6, 6, 7, 9, 11, 13, 16, 14, 12, 9, 5, 9, 7, + 6, 6, 8, 10, 11, 11, 21, 18, 16, 19, 25, 29, 30, 30, 20, 7, + 0, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 5, 6, 9, 10, 11, + 10, 8, 7, 5, 1, 1, 5, 7, 8, 2, 4, 4, 4, 4, 5, 5, + 5, 2, 4, 2, 2, 4, 6, 7, 9, 11, 11, 9, 8, 7, 6, 8, + 7, 10, 12, 14, 16, 14, 10, 7, 5, 10, 7, 5, 5, 8, 12, 13, + 14, 24, 22, 22, 24, 31, 32, 29, 27, 10, 2, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 6, 9, 11, 11, 12, 12, 10, 8, 5, 3, + 3, 5, 8, 10, 1, 2, 4, 4, 5, 6, 4, 5, 4, 2, 3, 2, + 4, 6, 9, 11, 14, 13, 13, 10, 9, 9, 8, 9, 12, 14, 16, 17, + 17, 13, 10, 9, 11, 9, 7, 7, 11, 14, 16, 17, 26, 25, 26, 29, + 32, 32, 27, 21, 7, 4, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 173, 10, 12, 13, 15, 11, 7, 6, 4, 4, 6, 7, 11, 2, + 3, 3, 4, 5, 6, 7, 7, 5, 5, 4, 2, 4, 6, 9, 11, 15, + 14, 14, 10, 8, 8, 7, 8, 10, 13, 17, 18, 17, 16, 13, 10, 11, + 9, 7, 8, 11, 14, 15, 15, 23, 23, 25, 29, 31, 28, 21, 14, 10, + 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 12, + 14, 14, 10, 8, 5, 3, 3, 5, 8, 10, 4, 5, 4, 4, 5, 7, + 9, 10, 8, 7, 4, 4, 3, 6, 10, 12, 12, 12, 10, 7, 5, 3, + 2, 3, 6, 9, 12, 15, 15, 12, 11, 9, 9, 8, 8, 9, 12, 13, + 13, 12, 15, 17, 19, 23, 26, 21, 11, 3, 92, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 14, 10, 8, 6, + 3, 3, 6, 8, 10, 7, 6, 4, 3, 5, 7, 11, 13, 9, 7, 4, + 2, 3, 5, 8, 10, 10, 9, 7, 4, 1, 0, 0, 0, 2, 5, 7, + 9, 11, 10, 7, 7, 7, 7, 7, 9, 11, 12, 11, 9, 10, 10, 14, + 20, 21, 15, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 172, 6, 6, 6, 6, 6, 6, 6, 6, + 5, 5, 6, 6, 6, 5, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, + 10, 9, 9, 9, 8, 7, 7, 7, 12, 12, 12, 12, 13, 14, 16, 17, + 8, 11, 15, 19, 18, 15, 11, 8, 15, 17, 19, 20, 10, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 200, 62, 6, 6, 6, 6, 6, 4, 5, 6, 6, 6, + 5, 5, 4, 7, 7, 7, 7, 7, 7, 7, 7, 9, 9, 9, 8, 8, + 8, 7, 7, 9, 8, 8, 8, 9, 10, 11, 12, 7, 11, 15, 17, 16, + 15, 13, 12, 18, 13, 11, 10, 89, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 6, 6, 6, 6, 4, 5, 6, 6, 6, 6, 5, 5, 7, 7, + 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 6, 6, 6, 7, 6, + 6, 6, 6, 6, 7, 8, 8, 11, 17, 16, 14, 15, 18, 20, 25, 15, + 6, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 6, 4, 5, 6, 6, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 7, + 8, 11, 14, 17, 17, 16, 17, 24, 31, 36, 100, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 7, + 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 7, 7, 7, 7, 6, 6, 6, 6, 7, 8, 8, 14, 16, 17, 16, + 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 172, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, + 5, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy2' of size 116x155x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy2[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 248, 248, 248, 248, 250, 250, 250, 251, 252, 252, 252, 252, 254, 254, 254, + 251, 250, 249, 249, 250, 249, 251, 251, 244, 248, 255, 243, 253, 242, 249, 250, + 252, 237, 241, 249, 247, 255, 254, 243, 248, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 253, 253, 253, 251, 250, 250, 250, 250, 250, 250, 251, 251, 251, 251, 253, 253, + 253, 254, 254, 254, 252, 250, 252, 252, 251, 252, 253, 252, 255, 252, 255, 255, + 254, 255, 255, 233, 255, 255, 255, 255, 253, 255, 255, 250, 253, 252, 253, 251, + 251, 251, 249, 250, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 251, 250, 251, 251, 251, 251, 251, 253, 253, 254, 254, 254, 254, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 251, 251, 212, 246, 242, 208, 217, 248, 255, 255, 255, 247, 247, 255, + 255, 255, 255, 255, 254, 254, 253, 253, 254, 254, 255, 254, 254, 253, 253, 253, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 251, 251, 250, 250, 250, 251, 251, 253, 253, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 252, 239, 225, 143, 193, 205, 182, 137, 202, 250, 255, + 249, 232, 232, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 254, 254, 253, 253, 251, 251, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 251, 249, 250, 243, 252, 239, 254, 242, 248, 244, + 247, 255, 255, 255, 255, 255, 255, 255, 255, 247, 252, 255, 232, 239, 255, 255, + 255, 255, 255, 255, 251, 250, 254, 219, 232, 189, 193, 171, 181, 215, 189, 206, + 164, 194, 217, 198, 169, 174, 160, 192, 213, 230, 213, 235, 255, 255, 255, 255, + 255, 255, 250, 255, 251, 249, 243, 255, 252, 246, 247, 253, 254, 248, 250, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 250, 249, 248, 251, 243, 248, 238, + 254, 249, 253, 241, 242, 237, 229, 221, 222, 232, 242, 240, 222, 204, 190, 196, + 201, 197, 191, 179, 148, 168, 209, 216, 189, 177, 180, 176, 156, 157, 177, 174, + 155, 203, 203, 226, 202, 192, 165, 155, 142, 159, 139, 178, 158, 175, 164, 166, + 162, 196, 213, 255, 239, 239, 208, 164, 165, 237, 255, 252, 255, 255, 255, 255, + 254, 247, 244, 245, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 249, 248, 247, + 249, 243, 251, 243, 255, 255, 255, 230, 250, 231, 207, 198, 197, 213, 214, 204, + 211, 203, 191, 203, 230, 213, 178, 173, 127, 167, 227, 217, 198, 204, 194, 206, + 172, 194, 198, 195, 138, 179, 197, 202, 210, 186, 122, 124, 119, 149, 128, 180, + 168, 190, 190, 173, 123, 152, 131, 177, 157, 202, 182, 130, 103, 149, 255, 253, + 251, 255, 255, 253, 252, 252, 254, 252, 252, 253, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 254, + 253, 251, 248, 248, 245, 246, 254, 249, 248, 255, 255, 227, 249, 226, 204, 202, + 191, 212, 211, 197, 187, 184, 200, 217, 223, 201, 170, 167, 125, 161, 208, 174, + 173, 205, 182, 186, 191, 191, 175, 174, 129, 154, 194, 174, 184, 184, 123, 131, + 113, 144, 122, 176, 156, 187, 199, 192, 143, 141, 101, 106, 113, 187, 185, 191, + 127, 70, 230, 255, 255, 255, 255, 251, 252, 255, 255, 252, 245, 248, 253, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, + 255, 255, 255, 254, 254, 252, 249, 249, 246, 246, 253, 246, 229, 250, 255, 239, + 235, 215, 197, 205, 185, 218, 225, 217, 214, 190, 224, 235, 213, 204, 189, 179, + 155, 163, 191, 161, 160, 180, 153, 167, 185, 161, 148, 144, 131, 128, 184, 155, + 167, 190, 139, 146, 115, 140, 115, 146, 174, 200, 201, 198, 170, 148, 150, 135, + 135, 169, 176, 195, 151, 87, 191, 231, 255, 255, 255, 255, 255, 255, 255, 246, + 248, 250, 252, 252, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 254, 254, 255, 255, 255, 255, 255, 254, 252, 249, 251, 252, 246, 250, 242, + 208, 231, 252, 244, 233, 215, 197, 210, 179, 222, 240, 237, 231, 191, 219, 219, + 196, 210, 201, 184, 163, 147, 171, 168, 147, 132, 128, 168, 194, 164, 157, 135, + 130, 103, 153, 130, 175, 186, 139, 151, 126, 150, 133, 131, 184, 197, 186, 179, + 150, 124, 160, 154, 149, 162, 192, 169, 159, 152, 147, 163, 208, 215, 233, 249, + 255, 255, 255, 255, 255, 255, 255, 253, 250, 251, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 254, 254, 254, 255, 255, 255, 254, 253, 253, 251, 248, 249, + 255, 248, 252, 254, 202, 214, 225, 215, 213, 196, 185, 206, 170, 218, 237, 234, + 228, 204, 225, 210, 201, 217, 195, 186, 145, 134, 156, 165, 135, 123, 154, 193, + 186, 167, 152, 118, 112, 103, 134, 125, 185, 170, 131, 153, 137, 154, 158, 142, + 187, 182, 181, 190, 159, 159, 177, 191, 157, 196, 215, 201, 189, 172, 126, 131, + 140, 150, 176, 202, 208, 208, 228, 251, 246, 247, 252, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 253, 251, 251, 252, 251, + 251, 250, 249, 249, 255, 252, 255, 255, 211, 207, 200, 177, 164, 152, 154, 190, + 158, 212, 228, 222, 201, 209, 230, 199, 194, 195, 150, 156, 118, 126, 142, 143, + 120, 142, 203, 217, 213, 199, 162, 118, 109, 128, 138, 133, 187, 155, 127, 155, + 136, 140, 160, 147, 183, 155, 158, 182, 148, 178, 160, 185, 161, 218, 181, 227, + 207, 126, 106, 115, 119, 125, 143, 156, 145, 140, 171, 214, 216, 227, 244, 255, + 255, 255, 248, 243, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 250, 249, 247, + 244, 249, 251, 251, 250, 250, 252, 252, 255, 252, 255, 255, 238, 217, 202, 178, + 149, 126, 155, 183, 138, 206, 208, 184, 206, 220, 211, 171, 172, 143, 132, 113, + 115, 119, 105, 140, 161, 197, 207, 210, 203, 194, 146, 112, 115, 140, 127, 184, + 222, 149, 167, 152, 115, 138, 131, 114, 168, 179, 161, 176, 166, 180, 193, 202, + 165, 187, 178, 209, 177, 138, 110, 93, 106, 94, 115, 148, 142, 155, 152, 176, + 164, 164, 197, 240, 255, 249, 255, 253, 251, 250, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, + 253, 250, 249, 247, 249, 249, 251, 248, 246, 246, 248, 250, 255, 252, 254, 244, + 224, 217, 197, 152, 118, 123, 113, 137, 137, 166, 150, 204, 209, 182, 150, 119, + 102, 95, 103, 79, 110, 106, 138, 202, 222, 208, 192, 209, 191, 202, 180, 146, + 163, 192, 190, 231, 178, 169, 189, 140, 85, 78, 77, 105, 161, 177, 175, 189, + 183, 177, 178, 172, 166, 195, 184, 191, 150, 122, 103, 88, 97, 83, 89, 113, + 122, 165, 178, 200, 189, 168, 162, 179, 208, 251, 255, 238, 249, 247, 252, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 254, 254, 253, 253, 252, 251, 250, 252, 250, 249, 249, 251, 253, 255, 255, + 245, 244, 241, 223, 209, 218, 195, 135, 96, 110, 91, 112, 128, 139, 128, 207, + 191, 158, 124, 116, 88, 99, 110, 70, 115, 99, 151, 189, 200, 167, 143, 173, + 169, 202, 209, 177, 197, 210, 208, 224, 169, 177, 165, 100, 70, 63, 60, 115, + 179, 192, 197, 198, 196, 173, 178, 167, 181, 201, 184, 174, 141, 123, 104, 83, + 89, 88, 98, 111, 115, 164, 183, 205, 183, 159, 152, 150, 160, 255, 255, 244, + 248, 249, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 253, 254, 254, 254, 253, 252, 251, 251, 255, 254, 252, 254, + 255, 255, 255, 255, 229, 231, 232, 214, 198, 205, 189, 139, 98, 87, 93, 121, + 108, 139, 155, 172, 140, 153, 118, 111, 85, 101, 105, 71, 128, 111, 154, 130, + 137, 132, 117, 135, 139, 180, 207, 186, 204, 188, 182, 182, 184, 156, 111, 59, + 59, 76, 98, 158, 209, 213, 212, 193, 190, 167, 194, 194, 205, 198, 177, 164, + 154, 144, 121, 97, 94, 100, 121, 127, 108, 141, 169, 209, 193, 148, 156, 143, + 147, 239, 255, 255, 250, 252, 253, 252, 253, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 254, 254, 254, 253, 252, 254, + 255, 255, 250, 250, 250, 244, 237, 238, 220, 218, 223, 208, 177, 169, 162, 136, + 108, 68, 80, 120, 101, 132, 161, 143, 111, 177, 125, 88, 71, 85, 93, 80, + 110, 100, 134, 95, 105, 116, 100, 105, 116, 150, 181, 182, 197, 171, 173, 175, + 161, 108, 73, 52, 49, 84, 148, 210, 211, 216, 213, 190, 185, 168, 206, 216, + 219, 191, 171, 159, 161, 152, 141, 134, 122, 114, 125, 130, 103, 126, 157, 211, + 229, 152, 161, 135, 134, 182, 229, 255, 255, 255, 252, 248, 251, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 254, 254, + 254, 254, 253, 255, 255, 245, 234, 234, 232, 224, 216, 215, 216, 203, 205, 190, + 149, 126, 124, 111, 107, 69, 57, 103, 117, 116, 132, 143, 96, 181, 127, 81, + 80, 84, 98, 95, 104, 86, 100, 82, 88, 93, 81, 86, 109, 134, 151, 166, + 178, 157, 167, 170, 109, 58, 51, 71, 80, 124, 194, 226, 190, 202, 203, 197, + 192, 183, 212, 221, 220, 191, 185, 163, 157, 145, 150, 167, 158, 137, 143, 156, + 133, 142, 150, 188, 219, 170, 194, 167, 137, 131, 195, 255, 255, 255, 254, 248, + 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, + 253, 254, 255, 255, 255, 255, 255, 255, 250, 232, 216, 215, 215, 209, 204, 205, + 208, 189, 181, 165, 128, 109, 104, 89, 86, 76, 61, 98, 125, 110, 121, 134, + 82, 143, 100, 73, 88, 81, 107, 87, 119, 102, 88, 89, 84, 88, 83, 90, + 105, 134, 133, 150, 144, 135, 134, 121, 72, 49, 58, 97, 132, 173, 205, 194, + 170, 182, 175, 189, 188, 195, 213, 219, 220, 202, 211, 176, 170, 155, 153, 162, + 160, 150, 160, 172, 149, 157, 148, 167, 199, 194, 212, 199, 153, 129, 167, 215, + 243, 254, 255, 253, 247, 251, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 238, 215, 210, + 207, 200, 195, 197, 200, 177, 164, 147, 121, 112, 106, 81, 60, 72, 82, 106, + 113, 111, 131, 112, 107, 122, 77, 66, 88, 78, 123, 86, 100, 105, 81, 88, + 76, 88, 85, 79, 95, 134, 125, 139, 121, 117, 100, 67, 56, 74, 91, 120, + 155, 180, 182, 153, 161, 165, 144, 165, 168, 193, 209, 217, 222, 213, 231, 193, + 192, 179, 154, 138, 134, 138, 150, 149, 122, 144, 151, 174, 217, 212, 180, 183, + 159, 152, 144, 140, 225, 247, 255, 255, 247, 249, 252, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 253, 251, 246, 252, 255, 255, 254, 254, 255, 255, + 255, 252, 226, 201, 193, 201, 208, 209, 202, 169, 168, 169, 130, 101, 95, 84, + 65, 72, 88, 103, 114, 117, 113, 105, 101, 99, 86, 84, 98, 73, 96, 83, + 99, 89, 74, 67, 74, 89, 91, 85, 95, 114, 105, 119, 112, 95, 53, 56, + 75, 89, 112, 136, 151, 151, 143, 135, 148, 147, 152, 153, 162, 189, 208, 204, + 222, 213, 213, 221, 213, 182, 150, 132, 144, 134, 134, 144, 144, 136, 138, 153, + 193, 199, 182, 157, 142, 174, 142, 116, 161, 252, 255, 255, 245, 246, 251, 252, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 251, 250, 253, 255, 255, + 255, 255, 255, 255, 255, 240, 212, 206, 213, 216, 215, 213, 195, 194, 182, 161, + 144, 127, 108, 97, 64, 73, 87, 98, 103, 103, 101, 98, 105, 100, 93, 94, + 101, 90, 101, 96, 92, 87, 80, 78, 85, 94, 92, 83, 112, 115, 106, 103, + 90, 79, 64, 70, 98, 108, 122, 131, 131, 125, 120, 116, 126, 128, 139, 151, + 167, 194, 206, 195, 221, 225, 229, 227, 208, 178, 154, 142, 144, 144, 144, 148, + 152, 153, 155, 157, 148, 154, 149, 124, 116, 143, 130, 122, 151, 177, 255, 251, + 252, 255, 246, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, 251, + 254, 253, 253, 255, 255, 255, 255, 253, 248, 213, 190, 206, 228, 226, 212, 202, + 159, 188, 162, 122, 125, 126, 102, 91, 79, 85, 94, 101, 100, 97, 95, 96, + 109, 103, 105, 111, 109, 117, 108, 116, 95, 92, 88, 87, 92, 98, 95, 89, + 95, 83, 89, 82, 78, 76, 95, 102, 104, 108, 111, 105, 96, 89, 90, 92, + 135, 140, 158, 179, 199, 222, 228, 213, 221, 219, 210, 196, 188, 182, 176, 170, + 161, 161, 152, 142, 143, 149, 151, 145, 129, 130, 142, 117, 113, 122, 123, 122, + 139, 132, 239, 252, 255, 255, 248, 252, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 251, 251, 251, 254, 253, 254, 252, 255, 255, 245, 240, 215, 193, 183, 206, + 232, 231, 210, 193, 161, 184, 164, 124, 123, 131, 118, 101, 94, 95, 101, 106, + 108, 105, 102, 104, 110, 106, 119, 131, 124, 144, 119, 136, 113, 105, 97, 92, + 94, 97, 98, 98, 94, 77, 94, 86, 84, 75, 98, 94, 114, 113, 109, 102, + 98, 99, 109, 116, 148, 152, 169, 183, 193, 206, 209, 196, 211, 203, 187, 179, + 191, 210, 205, 185, 170, 157, 139, 125, 123, 129, 133, 131, 111, 103, 125, 104, + 112, 102, 99, 95, 131, 149, 166, 254, 255, 248, 255, 246, 254, 254, 255, 255, + 255, 255, 255, 255, 255, 251, 251, 251, 252, 251, 255, 252, 255, 255, 226, 221, + 199, 196, 195, 204, 223, 231, 222, 204, 188, 186, 186, 167, 141, 137, 131, 102, + 93, 88, 94, 107, 117, 118, 119, 121, 114, 117, 137, 154, 148, 166, 139, 155, + 135, 125, 112, 103, 100, 98, 98, 99, 93, 76, 96, 94, 98, 88, 105, 91, + 93, 89, 84, 84, 92, 104, 118, 126, 174, 177, 188, 192, 187, 192, 199, 194, + 204, 207, 208, 210, 221, 228, 207, 176, 151, 130, 116, 116, 119, 116, 120, 129, + 108, 89, 104, 92, 111, 103, 92, 82, 115, 150, 118, 219, 255, 245, 255, 245, + 254, 254, 255, 255, 255, 255, 255, 255, 255, 251, 250, 250, 249, 250, 255, 250, + 255, 255, 208, 207, 198, 202, 200, 199, 209, 222, 225, 217, 199, 185, 199, 195, + 152, 124, 114, 86, 86, 86, 97, 119, 134, 138, 143, 150, 131, 139, 158, 176, + 178, 184, 171, 179, 157, 144, 129, 119, 114, 107, 99, 95, 83, 73, 84, 90, + 98, 97, 107, 103, 103, 100, 98, 102, 113, 125, 137, 142, 148, 151, 165, 170, + 166, 176, 193, 198, 214, 226, 233, 226, 217, 208, 188, 166, 134, 117, 110, 120, + 120, 109, 108, 116, 124, 101, 103, 95, 109, 111, 98, 91, 98, 108, 115, 158, + 249, 254, 253, 247, 254, 254, 255, 255, 255, 255, 255, 255, 255, 251, 250, 250, + 247, 250, 255, 246, 255, 255, 199, 204, 198, 194, 194, 201, 211, 214, 213, 209, + 204, 199, 204, 194, 158, 117, 99, 92, 88, 94, 114, 139, 149, 150, 160, 173, + 156, 167, 180, 194, 206, 197, 208, 205, 183, 162, 139, 129, 123, 114, 105, 101, + 97, 98, 90, 93, 91, 93, 89, 100, 98, 100, 102, 104, 107, 110, 115, 118, + 134, 136, 153, 166, 171, 186, 207, 214, 211, 217, 217, 207, 195, 184, 172, 161, + 134, 125, 118, 116, 110, 102, 99, 100, 108, 99, 98, 97, 96, 111, 97, 98, + 93, 80, 113, 121, 199, 255, 255, 248, 254, 254, 254, 255, 255, 255, 255, 255, + 255, 253, 251, 250, 245, 249, 255, 243, 255, 255, 198, 208, 201, 189, 192, 214, + 227, 217, 201, 196, 195, 207, 191, 169, 149, 108, 85, 105, 94, 106, 131, 152, + 154, 151, 161, 180, 174, 186, 192, 204, 223, 201, 229, 220, 201, 173, 142, 126, + 121, 117, 113, 114, 91, 107, 94, 105, 102, 109, 99, 124, 107, 112, 118, 116, + 110, 104, 103, 106, 116, 115, 129, 145, 150, 162, 177, 178, 186, 184, 187, 194, + 195, 187, 166, 148, 129, 127, 115, 99, 91, 96, 99, 96, 84, 93, 103, 113, + 104, 127, 114, 124, 99, 89, 100, 119, 149, 252, 255, 248, 255, 254, 254, 255, + 255, 255, 255, 255, 255, 254, 251, 246, 246, 247, 254, 255, 249, 255, 183, 194, + 197, 205, 210, 212, 212, 208, 200, 191, 192, 195, 181, 160, 145, 130, 118, 119, + 104, 122, 154, 178, 178, 165, 166, 177, 179, 183, 203, 227, 235, 225, 218, 217, + 209, 194, 172, 154, 142, 134, 127, 123, 111, 110, 115, 113, 108, 117, 124, 116, + 113, 108, 104, 103, 104, 103, 99, 96, 107, 108, 111, 119, 132, 146, 156, 161, + 161, 152, 145, 148, 157, 156, 136, 116, 85, 97, 96, 89, 79, 84, 83, 83, + 99, 98, 103, 114, 120, 123, 128, 135, 140, 113, 94, 127, 130, 238, 255, 253, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 247, 248, 246, 252, 255, + 250, 255, 181, 191, 201, 203, 206, 211, 212, 208, 200, 195, 182, 185, 157, 160, + 146, 152, 130, 133, 130, 143, 170, 193, 199, 192, 196, 206, 206, 208, 219, 238, + 242, 234, 228, 230, 228, 220, 208, 197, 185, 171, 153, 142, 136, 124, 121, 125, + 123, 127, 125, 113, 110, 104, 99, 98, 100, 100, 98, 94, 102, 105, 112, 119, + 127, 128, 127, 124, 149, 142, 133, 129, 129, 123, 109, 95, 89, 96, 96, 84, + 80, 82, 83, 81, 105, 105, 109, 118, 130, 138, 137, 134, 149, 120, 98, 108, + 143, 205, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 247, + 248, 245, 253, 255, 254, 255, 183, 192, 198, 196, 198, 204, 202, 193, 189, 192, + 149, 167, 150, 165, 139, 156, 143, 165, 164, 170, 190, 211, 219, 220, 226, 237, + 238, 235, 239, 249, 249, 244, 241, 246, 245, 245, 244, 242, 236, 224, 207, 196, + 184, 157, 148, 155, 157, 152, 141, 124, 120, 114, 109, 107, 110, 112, 112, 108, + 102, 97, 92, 89, 90, 89, 89, 88, 71, 74, 80, 88, 94, 95, 95, 93, + 102, 101, 98, 82, 81, 81, 83, 74, 84, 82, 81, 89, 110, 132, 136, 126, + 140, 114, 101, 91, 151, 160, 212, 252, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 252, 247, 247, 244, 251, 255, 255, 255, 188, 196, 194, 192, 193, 195, + 184, 170, 170, 180, 142, 155, 150, 162, 156, 166, 164, 184, 188, 191, 205, 222, + 233, 237, 242, 248, 251, 246, 247, 251, 252, 246, 246, 250, 250, 251, 254, 255, + 255, 252, 245, 241, 229, 197, 183, 192, 191, 179, 163, 148, 138, 131, 126, 123, + 126, 129, 131, 129, 127, 119, 110, 102, 99, 99, 100, 100, 90, 94, 104, 113, + 120, 117, 115, 114, 115, 109, 104, 82, 85, 80, 80, 67, 60, 60, 56, 56, + 79, 109, 120, 112, 120, 102, 108, 103, 147, 144, 201, 247, 254, 253, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 247, 247, 245, 252, 255, 255, 245, 184, 192, + 194, 195, 195, 189, 172, 156, 156, 169, 164, 147, 142, 147, 190, 189, 187, 178, + 199, 201, 213, 230, 240, 245, 247, 247, 247, 245, 245, 249, 249, 246, 246, 247, + 250, 251, 253, 254, 255, 251, 247, 245, 246, 218, 210, 214, 206, 191, 178, 167, + 159, 150, 145, 140, 144, 145, 149, 147, 140, 138, 138, 138, 136, 130, 123, 117, + 105, 101, 103, 111, 118, 116, 114, 113, 128, 120, 117, 88, 95, 82, 84, 64, + 58, 62, 60, 57, 71, 96, 108, 105, 112, 102, 117, 126, 132, 155, 217, 255, + 249, 248, 253, 254, 255, 255, 255, 255, 255, 255, 252, 247, 248, 247, 252, 255, + 255, 221, 169, 177, 192, 197, 195, 184, 169, 160, 161, 167, 161, 144, 153, 149, + 199, 182, 190, 183, 201, 208, 221, 234, 246, 249, 249, 247, 241, 241, 243, 246, + 247, 246, 247, 247, 248, 251, 255, 255, 255, 255, 251, 248, 248, 231, 228, 227, + 213, 200, 196, 190, 184, 178, 170, 166, 167, 169, 169, 169, 147, 145, 142, 139, + 138, 134, 131, 127, 124, 111, 107, 115, 131, 136, 142, 148, 144, 135, 139, 107, + 117, 96, 99, 75, 51, 58, 66, 68, 76, 92, 100, 102, 108, 107, 114, 129, + 113, 156, 218, 255, 250, 249, 252, 253, 255, 255, 255, 255, 255, 255, 252, 247, + 247, 248, 255, 255, 250, 204, 159, 169, 179, 184, 181, 171, 166, 171, 171, 164, + 147, 154, 176, 174, 192, 172, 189, 206, 210, 217, 228, 239, 247, 249, 247, 244, + 239, 240, 242, 244, 245, 247, 249, 249, 248, 251, 255, 255, 255, 255, 255, 255, + 249, 239, 238, 233, 221, 217, 217, 211, 209, 205, 197, 192, 193, 193, 192, 190, + 181, 173, 161, 152, 148, 146, 147, 147, 146, 133, 126, 132, 140, 139, 142, 147, + 158, 151, 162, 129, 142, 116, 120, 94, 60, 59, 62, 67, 72, 79, 88, 94, + 103, 113, 109, 117, 116, 143, 190, 252, 255, 253, 255, 254, 255, 255, 255, 255, + 255, 255, 252, 249, 245, 248, 255, 255, 250, 198, 160, 171, 165, 168, 162, 155, + 163, 180, 177, 160, 158, 169, 182, 195, 202, 194, 199, 218, 219, 226, 235, 238, + 243, 244, 242, 238, 239, 240, 241, 241, 243, 247, 250, 251, 254, 254, 254, 251, + 251, 251, 254, 255, 247, 242, 241, 235, 224, 226, 230, 220, 222, 216, 210, 206, + 204, 204, 201, 199, 194, 191, 186, 180, 172, 162, 152, 145, 145, 139, 141, 153, + 158, 152, 150, 156, 166, 163, 181, 147, 162, 133, 139, 111, 96, 80, 69, 66, + 65, 66, 76, 84, 99, 122, 112, 112, 136, 132, 162, 241, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 253, 251, 240, 247, 255, 255, 229, 189, 164, 158, + 136, 140, 156, 166, 164, 167, 167, 158, 160, 190, 208, 208, 209, 210, 216, 230, + 231, 235, 242, 244, 243, 241, 241, 243, 233, 234, 237, 240, 244, 248, 251, 251, + 251, 251, 252, 253, 252, 252, 252, 253, 248, 247, 246, 244, 242, 241, 238, 237, + 234, 233, 230, 224, 217, 211, 206, 202, 206, 206, 204, 195, 185, 175, 169, 167, + 170, 170, 147, 155, 162, 160, 177, 166, 175, 176, 192, 166, 165, 152, 156, 124, + 108, 71, 57, 73, 65, 56, 76, 74, 83, 120, 109, 97, 133, 147, 154, 197, + 255, 254, 255, 249, 255, 255, 255, 255, 255, 255, 254, 252, 247, 249, 255, 255, + 208, 166, 141, 137, 144, 149, 161, 171, 173, 169, 163, 160, 164, 197, 215, 213, + 215, 220, 226, 237, 235, 239, 245, 245, 242, 240, 241, 241, 238, 238, 239, 242, + 245, 248, 250, 250, 251, 251, 252, 253, 252, 251, 252, 253, 248, 247, 246, 246, + 245, 243, 241, 240, 240, 239, 236, 232, 229, 224, 220, 218, 203, 204, 203, 197, + 188, 180, 175, 173, 161, 167, 155, 166, 171, 164, 172, 160, 175, 179, 197, 181, + 182, 175, 178, 149, 112, 72, 57, 63, 69, 70, 66, 63, 81, 109, 101, 111, + 139, 134, 144, 174, 251, 255, 255, 254, 255, 255, 255, 255, 255, 255, 254, 252, + 251, 249, 252, 251, 183, 151, 135, 140, 150, 155, 161, 171, 175, 162, 150, 154, + 168, 202, 219, 213, 219, 231, 238, 242, 241, 243, 246, 244, 241, 240, 240, 240, + 242, 241, 242, 245, 247, 249, 249, 251, 252, 252, 253, 252, 252, 251, 252, 251, + 249, 248, 246, 247, 248, 247, 247, 246, 244, 245, 244, 242, 240, 237, 235, 233, + 220, 219, 218, 212, 206, 198, 193, 191, 173, 181, 176, 184, 185, 178, 182, 174, + 181, 187, 205, 198, 202, 201, 202, 175, 140, 96, 73, 57, 78, 96, 72, 77, + 94, 108, 98, 124, 141, 127, 148, 160, 218, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 252, 251, 246, 244, 243, 172, 154, 157, 171, 152, 156, 159, 168, + 173, 156, 143, 154, 171, 202, 211, 209, 223, 241, 243, 238, 241, 242, 242, 241, + 239, 237, 238, 239, 241, 240, 241, 244, 246, 249, 249, 251, 252, 252, 252, 252, + 251, 252, 252, 251, 249, 247, 247, 248, 249, 249, 249, 249, 243, 245, 245, 244, + 243, 241, 241, 240, 240, 238, 236, 230, 224, 216, 210, 207, 202, 204, 200, 198, + 195, 192, 197, 199, 194, 198, 210, 208, 208, 210, 209, 187, 171, 127, 99, 57, + 77, 110, 88, 112, 117, 120, 106, 129, 137, 133, 169, 164, 180, 247, 255, 253, + 255, 255, 255, 255, 255, 255, 254, 252, 252, 252, 249, 235, 178, 164, 169, 182, + 149, 153, 159, 166, 166, 157, 155, 166, 177, 200, 205, 208, 229, 247, 242, 231, + 236, 235, 236, 236, 236, 237, 238, 238, 238, 239, 239, 242, 245, 248, 251, 251, + 250, 250, 251, 252, 252, 252, 250, 250, 248, 247, 245, 247, 248, 249, 248, 249, + 241, 243, 242, 241, 241, 240, 240, 239, 244, 243, 241, 238, 233, 227, 221, 219, + 219, 216, 215, 205, 200, 201, 202, 209, 205, 205, 209, 210, 204, 211, 208, 192, + 178, 144, 119, 67, 74, 106, 94, 131, 120, 124, 117, 125, 130, 145, 179, 162, + 155, 248, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 253, 255, 255, 220, + 189, 164, 159, 157, 146, 146, 159, 160, 147, 153, 170, 176, 182, 200, 207, 216, + 237, 247, 240, 233, 232, 232, 234, 236, 238, 239, 240, 240, 237, 238, 238, 241, + 243, 247, 250, 252, 251, 251, 251, 251, 251, 250, 249, 248, 248, 246, 245, 245, + 246, 246, 245, 244, 243, 242, 242, 240, 239, 239, 238, 238, 240, 240, 240, 238, + 239, 236, 231, 229, 224, 221, 229, 219, 215, 216, 207, 213, 211, 209, 207, 213, + 203, 214, 208, 196, 175, 154, 136, 95, 84, 98, 96, 122, 108, 115, 123, 116, + 121, 146, 162, 148, 142, 252, 253, 255, 255, 255, 255, 255, 255, 255, 254, 252, + 248, 255, 248, 187, 192, 162, 152, 137, 154, 148, 166, 157, 125, 143, 178, 173, + 181, 200, 215, 228, 240, 239, 234, 239, 235, 233, 236, 239, 243, 244, 243, 241, + 240, 239, 240, 241, 242, 246, 250, 251, 250, 250, 251, 251, 251, 250, 249, 248, + 247, 245, 243, 243, 243, 243, 241, 241, 240, 241, 241, 240, 240, 238, 237, 238, + 239, 238, 237, 239, 241, 240, 236, 234, 226, 222, 235, 226, 223, 227, 214, 221, + 218, 217, 211, 223, 207, 221, 212, 203, 186, 164, 146, 123, 100, 97, 102, 108, + 105, 101, 123, 107, 113, 136, 129, 137, 136, 253, 247, 255, 255, 255, 255, 255, + 255, 255, 254, 253, 242, 255, 236, 158, 188, 162, 155, 139, 172, 162, 180, 162, + 115, 138, 182, 170, 181, 200, 221, 235, 240, 228, 227, 242, 238, 237, 241, 244, + 246, 246, 245, 242, 243, 242, 243, 244, 244, 247, 249, 251, 251, 251, 250, 251, + 250, 250, 249, 248, 251, 248, 247, 245, 246, 244, 242, 240, 240, 240, 240, 239, + 240, 238, 238, 239, 238, 236, 236, 236, 238, 236, 231, 229, 227, 219, 231, 221, + 220, 230, 216, 227, 225, 223, 218, 232, 214, 226, 213, 203, 201, 172, 144, 134, + 106, 96, 106, 95, 113, 95, 120, 100, 106, 125, 105, 136, 137, 255, 249, 255, + 255, 255, 255, 255, 254, 254, 254, 255, 255, 255, 203, 177, 185, 159, 159, 149, + 161, 138, 173, 126, 152, 158, 166, 178, 183, 201, 225, 236, 236, 232, 234, 235, + 239, 236, 232, 232, 236, 238, 244, 243, 242, 242, 243, 244, 247, 248, 251, 252, + 250, 250, 251, 251, 252, 252, 252, 252, 249, 249, 251, 251, 251, 249, 248, 247, + 250, 249, 247, 245, 244, 241, 240, 240, 242, 241, 241, 240, 240, 237, 235, 235, + 231, 229, 227, 226, 226, 228, 227, 227, 228, 225, 224, 223, 223, 219, 212, 208, + 208, 173, 157, 138, 97, 91, 105, 98, 88, 92, 99, 101, 93, 95, 107, 122, + 142, 252, 255, 253, 255, 255, 255, 255, 254, 254, 254, 255, 255, 255, 193, 166, + 176, 151, 150, 154, 141, 123, 164, 128, 154, 157, 161, 170, 185, 202, 224, 234, + 235, 229, 231, 234, 239, 236, 234, 235, 236, 240, 242, 243, 240, 240, 241, 243, + 244, 247, 249, 251, 250, 251, 251, 251, 252, 252, 252, 253, 252, 252, 253, 253, + 253, 252, 250, 249, 251, 250, 248, 246, 244, 242, 241, 241, 239, 240, 242, 242, + 242, 240, 239, 238, 231, 229, 227, 226, 227, 227, 227, 226, 227, 227, 227, 226, + 224, 219, 213, 211, 204, 174, 162, 145, 103, 91, 100, 90, 74, 80, 81, 92, + 98, 102, 118, 123, 150, 255, 255, 253, 255, 255, 255, 255, 255, 254, 254, 255, + 255, 255, 180, 156, 167, 138, 131, 148, 121, 110, 151, 129, 154, 158, 162, 169, + 192, 208, 228, 236, 237, 231, 233, 236, 238, 237, 236, 237, 239, 241, 242, 242, + 239, 239, 238, 240, 241, 243, 245, 246, 246, 246, 246, 247, 247, 248, 248, 248, + 250, 250, 251, 251, 250, 249, 248, 248, 246, 246, 244, 243, 243, 241, 241, 242, + 241, 241, 241, 240, 241, 239, 237, 236, 232, 230, 228, 227, 227, 227, 228, 226, + 227, 230, 234, 233, 229, 223, 217, 217, 203, 182, 173, 152, 114, 96, 98, 87, + 79, 96, 90, 97, 102, 94, 118, 112, 136, 246, 255, 253, 255, 255, 255, 255, + 255, 254, 254, 255, 255, 255, 173, 156, 166, 134, 118, 140, 117, 108, 139, 125, + 148, 156, 168, 178, 202, 215, 234, 240, 240, 236, 237, 240, 237, 237, 237, 239, + 240, 242, 241, 240, 240, 240, 239, 239, 241, 242, 244, 242, 244, 243, 245, 244, + 246, 245, 246, 245, 250, 249, 250, 249, 249, 248, 248, 247, 245, 244, 243, 242, + 243, 242, 242, 242, 244, 246, 244, 242, 239, 235, 234, 232, 233, 231, 229, 228, + 228, 227, 228, 226, 227, 232, 238, 238, 232, 225, 220, 221, 209, 193, 181, 157, + 122, 105, 104, 96, 94, 116, 110, 107, 104, 82, 114, 105, 115, 223, 255, 255, + 255, 255, 255, 255, 255, 254, 254, 255, 255, 255, 165, 156, 160, 138, 124, 145, + 129, 116, 126, 116, 134, 147, 170, 187, 210, 222, 237, 242, 241, 238, 238, 241, + 235, 235, 235, 238, 240, 241, 239, 237, 242, 242, 241, 241, 242, 244, 243, 244, + 244, 242, 244, 243, 245, 243, 246, 244, 249, 247, 248, 246, 247, 245, 247, 245, + 243, 243, 242, 242, 242, 241, 242, 243, 244, 244, 243, 242, 238, 235, 233, 231, + 234, 232, 230, 229, 228, 228, 228, 227, 226, 232, 238, 238, 233, 226, 222, 222, + 215, 201, 182, 154, 126, 112, 108, 102, 100, 107, 106, 100, 110, 89, 119, 113, + 130, 219, 255, 255, 255, 255, 255, 255, 255, 253, 254, 255, 255, 247, 151, 147, + 142, 145, 143, 153, 134, 121, 116, 111, 124, 140, 170, 191, 216, 225, 235, 240, + 239, 237, 237, 240, 237, 237, 237, 239, 241, 242, 240, 238, 244, 243, 243, 243, + 245, 246, 245, 245, 244, 244, 245, 245, 245, 246, 246, 246, 247, 247, 246, 245, + 244, 244, 245, 245, 243, 242, 244, 243, 242, 242, 241, 242, 240, 240, 241, 240, + 240, 238, 237, 236, 235, 233, 231, 230, 229, 228, 229, 227, 228, 231, 235, 236, + 233, 228, 224, 223, 217, 205, 179, 149, 130, 118, 107, 100, 110, 89, 100, 88, + 113, 98, 122, 130, 188, 238, 255, 254, 255, 255, 255, 255, 255, 253, 254, 255, + 255, 233, 138, 138, 122, 142, 145, 137, 122, 114, 108, 115, 128, 146, 177, 199, + 221, 228, 236, 240, 240, 237, 238, 238, 241, 240, 239, 241, 242, 243, 243, 242, + 243, 243, 244, 243, 244, 246, 247, 247, 247, 246, 247, 247, 248, 248, 248, 248, + 247, 246, 244, 243, 243, 243, 244, 244, 244, 243, 243, 242, 241, 241, 241, 241, + 239, 239, 240, 239, 239, 238, 236, 237, 236, 234, 232, 230, 230, 229, 229, 227, + 231, 231, 233, 234, 233, 231, 226, 222, 216, 207, 181, 152, 140, 124, 102, 89, + 117, 88, 126, 99, 107, 91, 120, 168, 241, 254, 255, 252, 255, 255, 255, 255, + 255, 255, 253, 255, 250, 220, 129, 132, 107, 135, 134, 111, 103, 104, 103, 122, + 137, 157, 187, 206, 225, 230, 238, 241, 240, 238, 238, 240, 245, 243, 242, 242, + 243, 245, 245, 244, 243, 243, 242, 243, 244, 246, 248, 248, 249, 249, 249, 249, + 250, 250, 250, 251, 247, 246, 244, 243, 242, 243, 244, 245, 245, 245, 245, 243, + 241, 240, 242, 241, 242, 241, 242, 240, 239, 236, 234, 235, 237, 235, 233, 231, + 230, 229, 229, 227, 233, 231, 231, 232, 234, 233, 228, 223, 217, 211, 186, 159, + 150, 130, 101, 82, 111, 92, 158, 117, 103, 82, 126, 212, 255, 255, 255, 251, + 255, 255, 255, 255, 255, 255, 253, 253, 255, 205, 137, 116, 124, 113, 151, 118, + 116, 108, 117, 130, 135, 153, 187, 210, 225, 229, 236, 240, 240, 239, 238, 239, + 239, 240, 240, 242, 243, 245, 245, 246, 245, 243, 244, 245, 246, 248, 250, 250, + 251, 250, 251, 251, 251, 250, 249, 248, 249, 247, 244, 241, 240, 240, 240, 241, + 245, 244, 244, 243, 243, 244, 248, 249, 246, 244, 242, 239, 238, 237, 236, 238, + 242, 239, 235, 232, 230, 229, 229, 227, 231, 231, 231, 230, 228, 226, 224, 222, + 215, 219, 181, 170, 134, 125, 107, 88, 101, 89, 155, 116, 112, 86, 117, 231, + 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 254, 253, 253, 225, 158, 122, + 109, 117, 136, 131, 119, 108, 111, 121, 131, 157, 190, 205, 228, 231, 237, 238, + 238, 237, 237, 238, 240, 239, 238, 238, 239, 240, 242, 243, 240, 242, 244, 247, + 248, 249, 250, 250, 252, 252, 252, 252, 252, 251, 250, 249, 246, 245, 242, 240, + 238, 239, 240, 240, 245, 244, 244, 244, 244, 246, 248, 249, 248, 247, 246, 243, + 242, 241, 240, 241, 240, 238, 235, 232, 231, 229, 227, 225, 230, 230, 231, 231, + 230, 228, 227, 226, 212, 218, 182, 168, 132, 123, 113, 103, 105, 100, 146, 113, + 115, 82, 120, 219, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 253, + 249, 248, 181, 121, 102, 136, 125, 143, 127, 114, 113, 118, 134, 170, 204, 213, + 233, 234, 238, 238, 238, 236, 236, 237, 240, 239, 237, 237, 237, 239, 241, 240, + 240, 242, 244, 247, 249, 250, 250, 250, 251, 251, 251, 252, 251, 250, 249, 249, + 250, 248, 247, 245, 245, 245, 246, 247, 246, 246, 247, 247, 247, 248, 249, 251, + 248, 248, 248, 247, 247, 245, 243, 243, 239, 238, 237, 235, 234, 230, 228, 224, + 227, 228, 229, 229, 229, 228, 227, 226, 213, 219, 189, 171, 133, 117, 118, 116, + 105, 112, 131, 112, 128, 92, 147, 226, 255, 253, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 255, 255, 200, 109, 108, 154, 126, 147, 127, 118, 118, 121, + 139, 183, 219, 227, 236, 237, 239, 238, 238, 236, 236, 236, 239, 240, 241, 242, + 243, 244, 242, 242, 246, 246, 246, 247, 248, 249, 250, 251, 249, 248, 250, 248, + 250, 247, 248, 245, 252, 249, 250, 248, 250, 248, 252, 250, 249, 249, 248, 248, + 249, 249, 252, 253, 245, 246, 246, 248, 247, 244, 243, 241, 242, 242, 242, 241, + 239, 235, 231, 227, 225, 225, 226, 226, 225, 224, 223, 222, 217, 223, 203, 181, + 141, 113, 119, 123, 107, 124, 118, 112, 142, 112, 192, 251, 255, 254, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 229, 111, 108, 142, 126, 145, + 115, 111, 115, 121, 142, 186, 225, 234, 241, 240, 239, 238, 238, 237, 236, 235, + 238, 241, 246, 250, 252, 251, 247, 245, 250, 249, 246, 244, 242, 244, 247, 250, + 247, 248, 249, 248, 249, 247, 247, 245, 247, 246, 246, 245, 247, 246, 248, 247, + 249, 249, 249, 250, 252, 251, 252, 252, 244, 246, 247, 248, 247, 245, 245, 243, + 246, 246, 246, 246, 244, 240, 235, 230, 227, 227, 227, 226, 224, 222, 221, 219, + 218, 222, 212, 193, 156, 117, 123, 126, 117, 129, 110, 110, 139, 122, 227, 255, + 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 140, + 103, 113, 122, 135, 110, 108, 118, 134, 157, 195, 230, 240, 245, 242, 239, 237, + 239, 237, 237, 236, 238, 242, 247, 251, 253, 252, 247, 244, 248, 246, 243, 241, + 239, 241, 243, 247, 247, 247, 247, 248, 247, 246, 245, 245, 245, 245, 245, 245, + 245, 246, 246, 246, 245, 246, 247, 247, 249, 249, 249, 249, 246, 246, 247, 247, + 248, 247, 246, 246, 248, 247, 247, 247, 245, 241, 237, 232, 231, 230, 230, 229, + 227, 224, 222, 220, 216, 218, 216, 200, 174, 123, 127, 129, 130, 129, 113, 109, + 121, 115, 239, 255, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 255, 185, 104, 107, 122, 121, 119, 111, 125, 152, 181, 211, 236, 243, + 247, 243, 239, 236, 239, 239, 239, 237, 240, 241, 243, 244, 243, 242, 240, 239, + 237, 237, 238, 239, 238, 239, 239, 241, 242, 244, 244, 244, 244, 243, 242, 242, + 246, 246, 246, 247, 246, 246, 245, 245, 242, 243, 244, 245, 246, 245, 245, 244, + 244, 244, 246, 245, 246, 246, 246, 246, 246, 245, 244, 243, 241, 238, 234, 230, + 229, 229, 230, 229, 228, 226, 224, 222, 220, 216, 217, 203, 183, 125, 127, 124, + 139, 123, 121, 113, 107, 114, 248, 255, 255, 251, 251, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 249, 255, 215, 111, 122, 130, 111, 127, 114, 127, 162, + 193, 219, 236, 238, 248, 243, 239, 237, 239, 240, 241, 240, 244, 243, 241, 239, + 238, 236, 238, 237, 230, 233, 238, 242, 243, 243, 241, 241, 239, 242, 242, 242, + 242, 241, 240, 237, 243, 243, 242, 242, 242, 240, 239, 238, 239, 240, 241, 243, + 243, 244, 244, 243, 243, 243, 242, 241, 242, 243, 244, 244, 244, 242, 241, 239, + 237, 236, 231, 229, 226, 227, 227, 227, 227, 226, 225, 224, 227, 220, 217, 202, + 183, 121, 121, 115, 142, 118, 129, 121, 104, 121, 255, 255, 254, 251, 252, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 255, 237, 134, 126, 134, 113, + 128, 142, 121, 180, 205, 221, 248, 240, 242, 249, 246, 244, 245, 240, 237, 248, + 251, 244, 240, 242, 241, 235, 235, 237, 231, 234, 235, 237, 243, 251, 252, 248, + 238, 242, 236, 232, 244, 222, 247, 233, 242, 245, 240, 238, 241, 236, 232, 242, + 243, 237, 238, 246, 247, 241, 241, 245, 244, 247, 235, 245, 229, 239, 233, 241, + 233, 243, 245, 234, 229, 233, 236, 232, 232, 221, 234, 226, 234, 224, 233, 221, + 222, 221, 231, 209, 200, 133, 136, 122, 139, 113, 149, 110, 121, 117, 254, 255, + 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, + 170, 131, 133, 111, 127, 139, 128, 183, 207, 228, 245, 243, 248, 249, 241, 234, + 243, 248, 244, 241, 233, 224, 218, 214, 210, 205, 203, 206, 203, 213, 221, 221, + 220, 219, 220, 219, 204, 206, 193, 203, 208, 194, 206, 198, 235, 245, 246, 238, + 239, 236, 236, 244, 236, 238, 235, 231, 232, 232, 229, 222, 229, 226, 219, 224, + 220, 225, 225, 229, 222, 220, 217, 209, 209, 209, 212, 209, 226, 222, 232, 230, + 230, 226, 229, 222, 229, 224, 234, 215, 205, 130, 128, 117, 141, 111, 138, 130, + 134, 144, 244, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 255, 255, 208, 131, 126, 110, 130, 134, 140, 190, 215, 240, 242, 246, + 247, 244, 238, 235, 247, 255, 246, 230, 213, 207, 200, 196, 193, 190, 188, 190, + 193, 206, 215, 209, 197, 187, 187, 186, 168, 163, 151, 170, 171, 161, 166, 166, + 205, 234, 246, 238, 235, 236, 238, 245, 236, 237, 228, 216, 215, 220, 213, 196, + 206, 196, 196, 193, 203, 198, 204, 205, 211, 214, 218, 214, 205, 195, 200, 208, + 204, 213, 218, 228, 221, 224, 218, 220, 234, 227, 235, 222, 216, 132, 125, 119, + 130, 112, 125, 125, 133, 186, 238, 255, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 253, 255, 234, 133, 120, 118, 135, 137, 156, 203, + 226, 252, 239, 251, 243, 237, 240, 242, 235, 224, 211, 200, 179, 175, 170, 165, + 162, 158, 155, 151, 151, 159, 163, 152, 139, 132, 132, 133, 125, 116, 120, 129, + 137, 122, 131, 136, 160, 210, 241, 237, 235, 239, 239, 242, 232, 224, 210, 199, + 199, 198, 189, 176, 180, 161, 162, 152, 167, 153, 161, 159, 174, 170, 175, 182, + 181, 168, 164, 167, 172, 191, 194, 216, 213, 231, 227, 242, 234, 230, 236, 226, + 228, 139, 127, 129, 115, 118, 127, 103, 141, 226, 249, 249, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 254, 155, 121, 124, + 143, 146, 169, 218, 239, 255, 241, 252, 251, 238, 244, 238, 199, 164, 157, 162, + 158, 158, 158, 151, 146, 139, 131, 122, 108, 108, 102, 91, 85, 87, 92, 93, + 97, 87, 111, 105, 121, 99, 115, 124, 121, 184, 232, 238, 239, 242, 238, 235, + 223, 199, 178, 178, 178, 166, 157, 156, 146, 125, 121, 108, 118, 97, 104, 102, + 128, 109, 103, 117, 134, 132, 123, 115, 104, 123, 117, 137, 148, 180, 190, 221, + 233, 233, 236, 227, 237, 148, 133, 140, 116, 123, 135, 105, 188, 251, 255, 248, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 251, 255, + 255, 186, 119, 117, 144, 155, 171, 229, 247, 255, 245, 251, 255, 241, 243, 227, + 170, 138, 149, 166, 165, 171, 173, 173, 171, 168, 159, 149, 131, 122, 105, 90, + 85, 89, 90, 88, 86, 81, 108, 97, 110, 101, 108, 116, 108, 172, 226, 240, + 247, 246, 237, 231, 220, 188, 162, 161, 158, 141, 134, 141, 123, 103, 93, 88, + 87, 71, 74, 79, 89, 90, 92, 93, 95, 98, 112, 124, 118, 128, 109, 108, + 126, 150, 165, 199, 226, 234, 237, 227, 243, 158, 138, 141, 120, 119, 133, 127, + 244, 253, 250, 248, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 250, 252, 255, 255, 219, 122, 115, 137, 158, 165, 233, 251, 248, 250, 246, + 251, 243, 244, 219, 164, 155, 180, 187, 178, 185, 189, 189, 189, 190, 184, 174, + 163, 153, 134, 116, 107, 103, 100, 94, 88, 91, 99, 104, 95, 120, 99, 108, + 123, 178, 225, 242, 251, 248, 237, 236, 226, 198, 168, 154, 143, 130, 125, 129, + 112, 98, 85, 93, 83, 78, 78, 92, 79, 98, 111, 104, 96, 102, 127, 146, + 143, 149, 133, 116, 138, 135, 137, 158, 207, 228, 236, 226, 249, 168, 144, 141, + 122, 126, 122, 138, 255, 249, 244, 248, 253, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 133, 125, 131, 156, 157, 233, + 250, 241, 251, 244, 244, 245, 248, 215, 166, 176, 200, 188, 206, 212, 209, 203, + 202, 199, 192, 180, 171, 165, 154, 139, 130, 124, 119, 115, 120, 130, 117, 141, + 111, 166, 120, 128, 143, 188, 226, 243, 251, 248, 239, 238, 228, 208, 174, 146, + 131, 125, 121, 116, 104, 95, 83, 100, 87, 92, 90, 112, 113, 119, 123, 126, + 142, 157, 161, 151, 155, 167, 166, 149, 178, 155, 142, 149, 189, 220, 232, 224, + 253, 176, 149, 143, 124, 147, 120, 135, 255, 254, 252, 250, 253, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 112, + 122, 142, 193, 220, 255, 252, 255, 243, 242, 243, 228, 205, 191, 195, 209, 215, + 203, 214, 217, 211, 200, 184, 164, 143, 148, 138, 135, 115, 117, 105, 126, 110, + 100, 141, 134, 165, 134, 149, 138, 137, 157, 192, 236, 241, 255, 243, 254, 245, + 227, 216, 172, 144, 128, 122, 133, 128, 136, 96, 92, 111, 99, 73, 84, 115, + 105, 128, 136, 133, 146, 160, 176, 188, 190, 191, 195, 197, 185, 169, 164, 170, + 187, 206, 235, 244, 238, 192, 141, 147, 121, 157, 131, 148, 255, 255, 244, 246, + 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 252, + 255, 255, 111, 133, 120, 138, 191, 226, 255, 243, 246, 239, 239, 234, 216, 199, + 198, 212, 223, 226, 223, 210, 194, 178, 159, 148, 153, 163, 153, 132, 127, 114, + 108, 99, 102, 101, 112, 124, 105, 134, 134, 161, 167, 165, 168, 207, 243, 243, + 255, 247, 255, 242, 229, 220, 184, 164, 152, 145, 150, 137, 114, 100, 94, 88, + 83, 90, 97, 92, 93, 121, 127, 116, 126, 149, 176, 196, 229, 205, 200, 217, + 215, 189, 175, 182, 194, 209, 233, 239, 236, 195, 144, 151, 117, 159, 142, 198, + 254, 244, 246, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 107, 147, 115, 125, 181, 228, 255, 243, 246, 246, + 242, 228, 208, 196, 207, 226, 234, 228, 231, 192, 161, 158, 158, 146, 138, 138, + 133, 98, 95, 96, 90, 93, 76, 101, 96, 100, 92, 105, 113, 126, 155, 169, + 175, 228, 252, 249, 255, 253, 255, 242, 246, 238, 204, 185, 169, 152, 145, 124, + 94, 93, 90, 74, 71, 88, 89, 67, 84, 96, 90, 84, 108, 138, 161, 174, + 186, 204, 220, 223, 222, 224, 219, 212, 206, 214, 231, 236, 237, 202, 150, 154, + 131, 151, 155, 248, 255, 255, 251, 243, 254, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 142, 139, 127, 125, 175, 234, + 255, 244, 247, 246, 246, 234, 214, 204, 214, 228, 229, 217, 211, 176, 153, 156, + 165, 158, 140, 125, 134, 86, 77, 81, 76, 92, 69, 121, 113, 109, 104, 99, + 107, 92, 126, 136, 167, 241, 255, 255, 255, 255, 255, 243, 255, 250, 214, 189, + 162, 138, 127, 106, 97, 92, 98, 100, 84, 73, 66, 59, 80, 77, 74, 88, + 119, 132, 143, 157, 171, 200, 223, 224, 221, 222, 209, 193, 217, 221, 233, 237, + 242, 211, 158, 155, 155, 144, 186, 255, 255, 255, 251, 241, 255, 254, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 253, 255, 240, 231, 226, 234, 244, 206, 139, + 159, 142, 181, 242, 249, 243, 240, 236, 246, 240, 228, 217, 218, 224, 219, 203, + 187, 177, 164, 149, 144, 153, 167, 173, 182, 122, 88, 74, 71, 96, 86, 155, + 180, 151, 123, 103, 123, 103, 126, 119, 152, 245, 255, 255, 255, 250, 255, 245, + 248, 248, 214, 185, 151, 125, 121, 108, 113, 113, 132, 140, 107, 68, 59, 64, + 79, 72, 85, 127, 158, 146, 143, 162, 164, 144, 159, 214, 244, 232, 216, 221, + 218, 222, 232, 237, 246, 216, 160, 152, 161, 146, 228, 234, 226, 242, 246, 255, + 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 198, 190, + 205, 227, 255, 176, 169, 150, 186, 249, 245, 247, 245, 236, 240, 242, 239, 228, + 223, 222, 213, 200, 180, 178, 168, 149, 146, 165, 189, 203, 210, 158, 103, 69, + 75, 101, 119, 186, 206, 176, 137, 106, 115, 107, 138, 137, 148, 250, 255, 255, + 255, 246, 252, 246, 248, 251, 218, 186, 149, 121, 123, 114, 117, 133, 160, 161, + 122, 83, 68, 62, 89, 65, 78, 144, 199, 183, 151, 147, 184, 165, 171, 206, + 225, 215, 205, 213, 218, 223, 232, 236, 245, 217, 159, 148, 151, 151, 241, 222, + 221, 232, 224, 238, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 216, 181, 174, 185, 217, 255, 227, 160, 149, 191, 255, 239, 251, 252, 244, + 237, 243, 244, 234, 228, 224, 216, 201, 189, 182, 180, 175, 173, 177, 187, 197, + 206, 180, 129, 87, 108, 123, 154, 200, 188, 180, 152, 126, 124, 122, 152, 154, + 158, 255, 246, 255, 255, 243, 246, 243, 250, 252, 220, 190, 156, 127, 124, 113, + 120, 134, 159, 164, 137, 105, 85, 70, 90, 77, 94, 156, 214, 204, 165, 145, + 143, 164, 185, 195, 205, 221, 230, 231, 221, 228, 235, 236, 245, 218, 163, 151, + 147, 183, 231, 234, 233, 219, 200, 202, 255, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 248, 209, 172, 169, 172, 211, 230, 253, 157, 154, 201, 255, + 234, 243, 247, 239, 239, 245, 245, 235, 228, 224, 214, 197, 196, 198, 207, 206, + 183, 163, 175, 204, 209, 208, 168, 127, 155, 154, 182, 203, 190, 186, 162, 158, + 168, 174, 175, 152, 170, 255, 237, 255, 255, 243, 244, 241, 242, 245, 216, 193, + 164, 137, 130, 116, 133, 128, 149, 173, 157, 123, 99, 88, 83, 115, 154, 191, + 211, 198, 180, 180, 149, 153, 172, 199, 217, 216, 215, 216, 225, 230, 239, 238, + 246, 221, 165, 156, 155, 227, 227, 245, 216, 184, 189, 214, 255, 254, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 173, 155, 173, 214, 234, 245, + 173, 163, 204, 251, 233, 248, 241, 245, 242, 246, 246, 241, 236, 232, 225, 218, + 219, 222, 222, 218, 210, 196, 185, 177, 198, 211, 191, 168, 178, 190, 189, 192, + 189, 186, 187, 191, 198, 199, 191, 181, 198, 246, 244, 243, 255, 252, 244, 244, + 241, 243, 235, 221, 199, 180, 170, 166, 166, 169, 167, 163, 174, 184, 171, 146, + 153, 161, 188, 189, 194, 176, 198, 214, 202, 196, 198, 211, 221, 220, 223, 227, + 227, 222, 225, 237, 238, 216, 179, 150, 155, 213, 229, 235, 198, 183, 187, 198, + 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 252, 210, 166, 171, + 175, 235, 228, 229, 181, 164, 207, 247, 239, 249, 246, 246, 243, 248, 249, 246, + 242, 238, 230, 226, 230, 232, 232, 231, 224, 214, 205, 199, 192, 201, 196, 184, + 186, 189, 183, 177, 190, 193, 201, 204, 205, 203, 198, 191, 215, 252, 244, 244, + 255, 255, 244, 238, 245, 244, 235, 220, 205, 196, 197, 200, 176, 179, 177, 174, + 185, 198, 188, 168, 166, 170, 195, 167, 188, 174, 214, 220, 221, 214, 210, 213, + 219, 224, 231, 234, 227, 222, 228, 237, 241, 220, 183, 153, 148, 223, 237, 222, + 182, 182, 192, 187, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 251, 217, 157, 177, 168, 254, 226, 220, 196, 171, 213, 244, 246, 246, 249, 244, + 241, 247, 251, 248, 247, 247, 242, 238, 243, 244, 243, 240, 233, 227, 219, 216, + 215, 206, 202, 198, 189, 193, 199, 195, 199, 204, 214, 214, 212, 209, 212, 215, + 233, 255, 244, 246, 255, 255, 244, 232, 240, 241, 235, 225, 218, 214, 217, 220, + 198, 199, 192, 185, 191, 199, 190, 174, 181, 179, 202, 158, 191, 180, 227, 223, + 233, 233, 231, 226, 226, 231, 237, 237, 232, 227, 232, 240, 245, 228, 192, 161, + 149, 225, 239, 222, 177, 176, 189, 191, 255, 254, 254, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 221, 159, 166, 163, 255, 235, 226, 213, 177, 219, 242, + 252, 243, 248, 239, 241, 247, 251, 249, 250, 250, 248, 245, 248, 248, 245, 240, + 234, 227, 222, 218, 223, 203, 203, 205, 191, 194, 210, 210, 213, 215, 221, 220, + 218, 222, 233, 241, 238, 254, 241, 245, 255, 254, 245, 234, 231, 237, 239, 238, + 233, 226, 222, 220, 217, 216, 208, 197, 197, 202, 196, 184, 200, 197, 212, 182, + 205, 198, 228, 225, 229, 239, 244, 236, 234, 238, 240, 234, 236, 232, 235, 244, + 249, 234, 199, 166, 149, 212, 230, 233, 186, 164, 180, 206, 255, 254, 254, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 180, 163, 176, 247, 247, 232, + 213, 176, 218, 244, 254, 243, 247, 241, 243, 250, 252, 250, 250, 253, 250, 249, + 248, 247, 244, 239, 235, 229, 225, 222, 225, 211, 221, 231, 218, 213, 220, 217, + 221, 222, 226, 229, 233, 239, 245, 249, 237, 247, 241, 248, 255, 243, 243, 236, + 229, 235, 241, 243, 240, 232, 224, 218, 218, 220, 215, 207, 210, 216, 217, 213, + 224, 218, 216, 218, 217, 215, 223, 233, 226, 236, 242, 236, 235, 239, 241, 234, + 237, 233, 236, 243, 250, 238, 202, 166, 145, 208, 229, 235, 188, 164, 181, 211, + 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 209, 181, + 203, 242, 246, 223, 199, 168, 209, 246, 251, 247, 249, 246, 246, 252, 253, 251, + 252, 254, 253, 250, 246, 246, 246, 244, 240, 237, 234, 235, 241, 231, 232, 232, + 224, 220, 227, 230, 222, 225, 231, 241, 248, 250, 249, 245, 238, 245, 244, 255, + 250, 234, 238, 233, 236, 240, 241, 241, 240, 238, 234, 231, 223, 225, 222, 215, + 215, 219, 223, 224, 239, 232, 218, 233, 220, 226, 225, 243, 232, 233, 233, 229, + 230, 235, 240, 239, 234, 231, 234, 241, 248, 237, 201, 161, 148, 226, 247, 236, + 189, 183, 201, 219, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 232, 227, 203, 221, 238, 229, 203, 185, 161, 201, 251, 246, 250, 244, 247, + 244, 249, 251, 249, 250, 252, 252, 250, 248, 249, 249, 248, 245, 242, 241, 239, + 235, 233, 221, 209, 208, 209, 219, 232, 229, 230, 235, 242, 248, 249, 247, 242, + 243, 243, 244, 255, 251, 235, 240, 232, 241, 242, 241, 241, 240, 240, 237, 236, + 233, 235, 231, 220, 213, 212, 215, 217, 228, 228, 225, 228, 224, 227, 233, 241, + 239, 233, 230, 230, 232, 231, 233, 235, 228, 228, 231, 238, 245, 235, 196, 154, + 159, 233, 250, 240, 195, 194, 218, 239, 255, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 236, 230, 213, 220, 234, 212, 187, 179, 159, 196, 254, + 241, 249, 238, 242, 239, 242, 246, 244, 245, 249, 250, 248, 252, 251, 251, 249, + 245, 241, 236, 235, 227, 240, 233, 222, 228, 227, 226, 238, 239, 238, 238, 235, + 237, 241, 246, 248, 244, 241, 243, 255, 255, 240, 245, 234, 241, 242, 244, 245, + 244, 240, 235, 231, 239, 243, 239, 228, 218, 216, 219, 221, 207, 216, 232, 218, + 229, 228, 239, 230, 241, 234, 232, 240, 242, 232, 225, 226, 224, 226, 229, 235, + 243, 235, 193, 148, 165, 217, 233, 241, 202, 186, 215, 255, 255, 254, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 243, 226, 223, 231, 216, 181, + 169, 177, 181, 254, 243, 251, 242, 254, 251, 249, 249, 246, 245, 244, 246, 247, + 246, 249, 251, 248, 250, 253, 249, 241, 235, 237, 235, 231, 234, 243, 246, 241, + 242, 242, 244, 242, 242, 241, 244, 246, 238, 243, 251, 255, 251, 245, 240, 238, + 244, 239, 238, 244, 247, 243, 241, 242, 242, 239, 234, 234, 234, 233, 225, 218, + 214, 216, 221, 222, 224, 226, 231, 233, 235, 237, 240, 239, 234, 230, 227, 225, + 224, 227, 232, 237, 244, 233, 184, 135, 177, 209, 223, 246, 194, 206, 251, 255, + 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 250, 233, + 226, 233, 216, 183, 169, 196, 176, 250, 247, 244, 248, 249, 247, 248, 246, 244, + 244, 242, 244, 246, 248, 251, 251, 249, 253, 255, 252, 245, 241, 242, 240, 237, + 241, 246, 249, 244, 241, 242, 244, 243, 243, 242, 243, 244, 239, 243, 251, 255, + 252, 247, 242, 240, 240, 238, 238, 244, 245, 240, 236, 236, 233, 231, 232, 235, + 239, 238, 235, 227, 222, 224, 228, 229, 229, 231, 232, 235, 235, 237, 240, 239, + 235, 231, 229, 228, 226, 229, 233, 239, 241, 228, 189, 153, 178, 208, 222, 238, + 196, 215, 255, 255, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 255, 255, 255, 244, 233, 232, 216, 189, 168, 215, 174, 239, 249, 241, 251, 243, + 244, 244, 243, 242, 242, 243, 243, 243, 247, 250, 250, 250, 251, 254, 252, 247, + 247, 248, 247, 245, 249, 251, 252, 247, 241, 242, 245, 243, 244, 243, 244, 242, + 240, 243, 250, 254, 253, 249, 245, 242, 239, 238, 239, 243, 242, 236, 233, 231, + 230, 230, 233, 238, 244, 245, 242, 237, 231, 232, 235, 236, 235, 234, 235, 236, + 234, 237, 240, 240, 237, 235, 233, 232, 228, 229, 234, 242, 243, 230, 206, 187, + 187, 214, 227, 234, 208, 231, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 252, 254, 255, 251, 238, 233, 219, 196, 173, 219, 187, 226, + 247, 247, 243, 242, 242, 244, 243, 242, 243, 243, 242, 243, 244, 245, 246, 247, + 249, 250, 249, 248, 250, 250, 250, 251, 252, 253, 251, 247, 245, 245, 243, 242, + 244, 245, 245, 244, 242, 243, 249, 252, 252, 250, 246, 243, 243, 242, 243, 243, + 241, 236, 233, 231, 239, 238, 239, 241, 243, 244, 244, 240, 238, 238, 240, 240, + 239, 237, 234, 233, 234, 236, 239, 239, 238, 236, 236, 236, 232, 228, 232, 244, + 249, 242, 230, 221, 198, 218, 234, 233, 224, 244, 255, 252, 255, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 250, 252, 255, 255, 245, 238, 226, 212, + 183, 213, 207, 216, 241, 255, 233, 244, 242, 244, 246, 246, 246, 245, 245, 245, + 244, 244, 244, 246, 246, 246, 247, 248, 249, 248, 248, 251, 251, 249, 246, 245, + 249, 245, 242, 241, 242, 246, 248, 248, 243, 243, 246, 249, 250, 249, 246, 242, + 244, 244, 243, 239, 235, 232, 231, 229, 242, 239, 238, 236, 236, 237, 239, 239, + 240, 239, 239, 239, 240, 237, 233, 231, 234, 237, 239, 240, 239, 238, 238, 237, + 236, 227, 227, 241, 252, 251, 242, 233, 199, 214, 236, 232, 238, 254, 255, 245, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 251, 255, 255, + 252, 245, 236, 226, 198, 211, 226, 221, 238, 255, 230, 247, 244, 246, 248, 248, + 248, 247, 245, 244, 244, 243, 243, 246, 245, 243, 245, 249, 246, 243, 243, 247, + 248, 245, 242, 243, 248, 244, 243, 241, 244, 249, 251, 251, 245, 242, 243, 245, + 247, 246, 243, 239, 238, 243, 242, 236, 231, 229, 227, 224, 237, 235, 234, 232, + 232, 234, 237, 238, 240, 237, 236, 235, 237, 235, 232, 229, 233, 235, 237, 237, + 236, 236, 237, 237, 237, 229, 227, 237, 250, 252, 240, 222, 198, 204, 232, 230, + 250, 255, 253, 245, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 251, 255, 255, 254, 247, 242, 235, 211, 221, 235, 236, 242, 248, 240, 243, + 246, 248, 249, 250, 249, 246, 243, 241, 242, 240, 242, 245, 243, 240, 240, 247, + 245, 240, 239, 244, 245, 242, 240, 243, 243, 242, 243, 244, 250, 254, 252, 249, + 245, 240, 240, 242, 243, 241, 238, 235, 232, 239, 242, 237, 233, 230, 225, 219, + 231, 232, 235, 236, 236, 237, 238, 240, 240, 238, 235, 235, 236, 235, 232, 230, + 232, 234, 235, 235, 234, 234, 236, 235, 230, 231, 232, 237, 247, 252, 238, 214, + 207, 204, 234, 232, 255, 255, 248, 251, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 250, 254, 255, 253, 246, 242, 236, 218, 230, 235, 249, + 246, 236, 252, 239, 244, 247, 248, 248, 246, 245, 243, 240, 238, 236, 238, 241, + 239, 234, 237, 244, 247, 241, 238, 244, 246, 244, 244, 247, 238, 239, 240, 245, + 252, 253, 251, 246, 245, 241, 240, 241, 242, 239, 235, 232, 228, 240, 246, 243, + 238, 233, 227, 218, 233, 236, 242, 244, 244, 243, 242, 242, 242, 239, 235, 235, + 237, 237, 235, 233, 232, 234, 235, 234, 233, 232, 233, 233, 223, 231, 237, 239, + 246, 253, 237, 212, 218, 209, 237, 233, 255, 255, 244, 252, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 253, 242, 229, 253, + 226, 237, 239, 240, 248, 244, 240, 245, 241, 241, 243, 243, 241, 242, 241, 238, + 232, 232, 235, 238, 241, 239, 237, 237, 244, 244, 245, 244, 243, 243, 241, 237, + 236, 236, 238, 241, 248, 249, 249, 245, 243, 247, 239, 234, 243, 240, 225, 218, + 230, 236, 239, 238, 242, 244, 236, 222, 232, 234, 239, 242, 245, 246, 246, 245, + 238, 237, 236, 237, 236, 237, 237, 237, 234, 237, 238, 236, 234, 233, 232, 231, + 231, 229, 239, 246, 249, 249, 234, 207, 206, 217, 233, 247, 254, 254, 251, 252, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, + 255, 244, 230, 251, 234, 241, 239, 239, 249, 247, 241, 243, 241, 241, 242, 241, + 241, 240, 241, 238, 232, 232, 236, 238, 239, 238, 237, 236, 238, 239, 243, 243, + 244, 242, 239, 236, 237, 233, 234, 238, 242, 245, 244, 243, 229, 240, 243, 240, + 241, 235, 229, 237, 234, 240, 240, 239, 244, 255, 255, 247, 232, 233, 238, 242, + 244, 245, 247, 245, 238, 236, 237, 236, 239, 238, 237, 237, 237, 237, 239, 236, + 234, 231, 232, 230, 229, 226, 236, 244, 246, 246, 233, 207, 217, 221, 233, 249, + 255, 251, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 255, 255, 255, 246, 230, 248, 247, 248, 240, 238, 247, 247, 241, 243, + 242, 242, 242, 241, 241, 240, 240, 238, 233, 233, 236, 237, 238, 237, 236, 235, + 233, 235, 239, 241, 241, 239, 237, 234, 226, 231, 241, 252, 255, 255, 249, 242, + 246, 240, 229, 231, 241, 236, 220, 217, 213, 226, 234, 238, 243, 250, 249, 241, + 230, 231, 236, 239, 241, 242, 243, 242, 233, 234, 236, 235, 237, 236, 235, 234, + 237, 237, 238, 235, 233, 230, 231, 230, 231, 228, 235, 243, 244, 246, 237, 215, + 231, 225, 233, 251, 255, 251, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 231, 247, 253, 250, 237, 234, + 247, 248, 243, 244, 243, 242, 243, 241, 241, 239, 240, 237, 236, 236, 237, 237, + 237, 236, 236, 235, 236, 236, 238, 238, 238, 237, 239, 236, 237, 239, 246, 250, + 250, 244, 234, 228, 229, 233, 230, 231, 234, 230, 227, 237, 235, 241, 238, 231, + 233, 246, 255, 255, 228, 230, 232, 234, 238, 236, 238, 236, 230, 231, 233, 233, + 235, 234, 232, 231, 234, 234, 236, 233, 231, 228, 228, 227, 235, 230, 237, 246, + 246, 247, 242, 226, 241, 228, 232, 253, 255, 250, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 253, 237, 251, + 253, 249, 234, 231, 246, 251, 245, 245, 244, 243, 243, 241, 241, 239, 237, 236, + 240, 240, 239, 238, 237, 237, 237, 237, 238, 236, 234, 232, 232, 233, 237, 238, + 244, 242, 242, 242, 244, 247, 249, 249, 239, 236, 224, 223, 237, 237, 226, 222, + 222, 234, 241, 240, 241, 247, 246, 240, 229, 230, 232, 232, 234, 232, 232, 232, + 228, 228, 230, 230, 232, 231, 230, 229, 230, 231, 233, 230, 229, 226, 227, 226, + 235, 232, 239, 247, 244, 244, 243, 233, 245, 230, 233, 253, 255, 250, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, + 255, 255, 242, 253, 247, 246, 232, 231, 247, 251, 246, 247, 246, 243, 243, 241, + 240, 239, 237, 238, 242, 240, 240, 236, 235, 234, 235, 235, 235, 233, 231, 229, + 229, 232, 237, 238, 240, 243, 246, 248, 245, 232, 219, 208, 210, 227, 226, 219, + 225, 228, 218, 212, 217, 226, 231, 232, 237, 245, 247, 239, 233, 233, 233, 234, + 233, 231, 230, 229, 227, 226, 227, 225, 227, 227, 228, 228, 227, 228, 231, 229, + 228, 226, 228, 227, 236, 230, 238, 245, 240, 237, 238, 232, 245, 236, 239, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 252, 255, 255, 237, 244, 242, 244, 236, 234, 248, 250, 245, 247, + 246, 245, 244, 241, 240, 237, 237, 238, 242, 240, 238, 234, 233, 231, 232, 232, + 229, 229, 230, 231, 234, 238, 240, 241, 245, 248, 250, 241, 218, 181, 141, 118, + 128, 200, 245, 230, 206, 207, 227, 250, 197, 179, 147, 124, 135, 171, 208, 227, + 239, 239, 239, 237, 235, 230, 230, 228, 226, 225, 224, 221, 224, 224, 226, 228, + 226, 227, 230, 229, 230, 228, 230, 230, 236, 231, 240, 247, 239, 233, 234, 228, + 244, 243, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 231, 240, 245, 238, 237, + 249, 249, 244, 247, 247, 246, 244, 241, 240, 237, 236, 237, 241, 239, 236, 232, + 230, 230, 230, 231, 227, 228, 233, 237, 242, 245, 245, 245, 248, 247, 242, 231, + 212, 184, 157, 142, 159, 206, 228, 220, 228, 236, 223, 199, 180, 164, 136, 117, + 130, 165, 196, 210, 244, 243, 243, 240, 236, 232, 229, 229, 226, 224, 222, 219, + 221, 223, 226, 228, 227, 227, 231, 230, 231, 231, 233, 235, 240, 234, 243, 250, + 241, 233, 233, 229, 243, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 247, 234, 223, + 236, 236, 235, 238, 243, 248, 250, 249, 247, 243, 241, 242, 240, 236, 236, 239, + 245, 240, 233, 230, 231, 233, 230, 229, 236, 234, 235, 238, 242, 245, 246, 245, + 245, 249, 255, 249, 225, 192, 175, 172, 187, 206, 226, 229, 229, 239, 234, 207, + 189, 193, 180, 176, 171, 171, 195, 204, 242, 245, 240, 236, 240, 236, 227, 230, + 229, 227, 224, 220, 222, 222, 224, 226, 228, 230, 235, 234, 234, 231, 230, 231, + 236, 236, 247, 240, 237, 242, 228, 230, 230, 243, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 251, 231, 215, 225, 228, 229, 236, 244, 248, 248, 244, 247, 244, 242, 243, + 242, 235, 235, 237, 235, 234, 234, 235, 236, 238, 237, 236, 239, 241, 244, 245, + 248, 248, 248, 247, 247, 251, 253, 248, 227, 199, 183, 178, 183, 196, 215, 220, + 217, 223, 221, 204, 190, 199, 189, 190, 186, 185, 206, 210, 233, 239, 238, 238, + 245, 241, 236, 241, 231, 229, 226, 222, 223, 224, 226, 227, 224, 226, 232, 232, + 234, 232, 233, 234, 236, 234, 246, 239, 234, 233, 218, 223, 221, 237, 253, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 232, 213, 221, 223, 223, 229, 237, 245, 248, 248, + 245, 242, 243, 243, 242, 235, 233, 235, 226, 230, 234, 238, 239, 240, 239, 240, + 239, 243, 247, 249, 249, 245, 246, 246, 248, 249, 249, 245, 231, 210, 195, 190, + 176, 178, 190, 199, 194, 194, 196, 189, 172, 186, 184, 195, 197, 198, 218, 220, + 233, 242, 243, 242, 246, 239, 235, 243, 237, 234, 231, 226, 226, 226, 228, 229, + 224, 226, 231, 232, 233, 231, 232, 233, 234, 229, 244, 242, 235, 230, 219, 231, + 214, 234, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 223, 226, 222, 215, 216, + 223, 235, 245, 250, 245, 241, 241, 245, 242, 236, 232, 233, 224, 231, 237, 239, + 238, 237, 237, 239, 242, 245, 247, 248, 246, 245, 246, 247, 248, 247, 245, 241, + 235, 223, 210, 203, 181, 167, 169, 180, 178, 171, 173, 172, 165, 178, 182, 196, + 200, 202, 220, 223, 232, 244, 246, 244, 246, 239, 235, 242, 242, 240, 236, 231, + 230, 228, 229, 229, 230, 231, 234, 233, 232, 230, 230, 228, 236, 230, 244, 243, + 235, 226, 216, 228, 220, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, + 232, 227, 220, 218, 224, 233, 241, 244, 243, 241, 240, 244, 241, 235, 232, 233, + 229, 233, 237, 238, 236, 236, 238, 241, 248, 247, 246, 244, 244, 245, 249, 251, + 249, 248, 243, 238, 234, 227, 218, 209, 195, 166, 158, 169, 170, 164, 164, 164, + 185, 196, 194, 202, 203, 200, 214, 214, 220, 233, 239, 239, 244, 239, 237, 245, + 242, 240, 238, 233, 233, 230, 229, 228, 232, 233, 235, 233, 233, 230, 230, 229, + 240, 233, 244, 239, 229, 222, 209, 220, 234, 246, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 242, 242, 240, 243, 246, 247, 243, 241, 242, 241, 239, 241, + 239, 236, 235, 237, 234, 236, 238, 240, 240, 239, 240, 241, 238, 233, 229, 229, + 231, 236, 240, 242, 244, 245, 241, 235, 230, 227, 220, 212, 203, 171, 157, 164, + 165, 161, 164, 164, 195, 205, 198, 204, 203, 199, 212, 211, 219, 229, 230, 231, + 235, 228, 224, 230, 231, 231, 233, 232, 233, 231, 229, 227, 229, 230, 233, 232, + 232, 231, 233, 233, 233, 227, 239, 235, 233, 240, 231, 237, 248, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 255, 255, 255, 255, 248, 241, + 242, 238, 237, 239, 237, 235, 237, 240, 238, 237, 238, 241, 240, 237, 233, 228, + 219, 213, 208, 210, 218, 224, 225, 224, 228, 232, 234, 229, 228, 227, 225, 219, + 207, 181, 169, 170, 166, 165, 173, 177, 196, 204, 198, 204, 203, 198, 211, 209, + 219, 226, 222, 218, 221, 214, 207, 210, 214, 217, 223, 227, 232, 231, 229, 227, + 228, 228, 231, 229, 229, 228, 231, 231, 224, 226, 237, 231, 241, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 253, + 255, 253, 246, 242, 243, 240, 238, 237, 238, 235, 238, 242, 241, 238, 240, 241, + 240, 232, 223, 215, 210, 205, 201, 205, 215, 222, 221, 216, 212, 220, 225, 223, + 225, 230, 232, 229, 215, 196, 188, 185, 176, 178, 191, 200, 206, 214, 206, 210, + 205, 197, 206, 201, 212, 214, 212, 208, 214, 211, 203, 206, 203, 208, 215, 224, + 230, 231, 229, 227, 230, 229, 230, 229, 226, 225, 225, 227, 229, 230, 240, 228, + 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 251, 250, 254, 255, 250, 241, 246, 243, 241, 242, 240, 236, 237, 239, + 241, 238, 240, 243, 237, 225, 220, 222, 209, 200, 194, 199, 206, 209, 212, 218, + 214, 219, 227, 228, 231, 235, 236, 233, 232, 212, 202, 202, 201, 208, 218, 216, + 219, 215, 211, 209, 210, 210, 207, 204, 212, 215, 212, 211, 218, 214, 205, 205, + 206, 209, 208, 216, 232, 232, 223, 225, 229, 229, 228, 229, 232, 233, 236, 237, + 241, 238, 236, 235, 245, 255, 255, 252, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 251, 254, 255, 252, 245, 248, 244, 242, 242, + 238, 233, 235, 237, 252, 246, 246, 245, 239, 228, 221, 222, 216, 205, 183, 164, + 166, 187, 207, 216, 217, 220, 221, 220, 222, 225, 224, 220, 215, 204, 207, 213, + 212, 215, 221, 217, 215, 212, 209, 207, 207, 206, 204, 202, 202, 212, 213, 212, + 216, 210, 202, 205, 205, 207, 202, 208, 227, 231, 223, 224, 229, 229, 227, 228, + 230, 232, 233, 233, 236, 234, 234, 238, 248, 255, 255, 250, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, 255, 255, 253, 247, + 246, 243, 241, 240, 235, 230, 234, 238, 252, 245, 242, 240, 236, 228, 220, 217, + 216, 204, 168, 130, 125, 156, 185, 194, 212, 212, 209, 204, 203, 204, 203, 198, + 190, 187, 199, 210, 208, 207, 209, 203, 196, 197, 199, 201, 201, 202, 204, 206, + 204, 218, 221, 216, 212, 202, 197, 206, 204, 206, 200, 204, 222, 228, 222, 224, + 230, 229, 227, 227, 228, 229, 229, 230, 228, 231, 234, 241, 253, 255, 255, 250, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 255, 255, 255, 249, 241, 240, 239, 238, 232, 228, 234, 242, 246, 241, 239, 239, + 238, 232, 224, 215, 206, 188, 152, 119, 114, 136, 155, 160, 176, 179, 177, 169, + 162, 163, 166, 167, 174, 167, 174, 183, 182, 181, 181, 173, 168, 172, 178, 182, + 184, 188, 195, 200, 204, 217, 216, 202, 189, 177, 178, 192, 198, 207, 206, 208, + 220, 225, 223, 228, 231, 230, 228, 227, 227, 228, 228, 228, 227, 227, 233, 244, + 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 253, 241, 238, 236, 235, 231, 228, 235, 243, + 245, 243, 243, 243, 243, 237, 226, 214, 200, 176, 148, 136, 138, 146, 152, 156, + 168, 178, 182, 174, 166, 168, 180, 188, 186, 167, 161, 164, 165, 167, 167, 157, + 155, 158, 162, 163, 164, 168, 174, 179, 181, 191, 185, 166, 151, 141, 146, 165, + 182, 202, 210, 211, 218, 223, 225, 234, 231, 230, 228, 227, 228, 229, 229, 229, + 228, 228, 235, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 245, 238, 233, 231, + 230, 229, 235, 241, 241, 243, 243, 240, 237, 231, 220, 208, 210, 189, 172, 173, + 182, 186, 191, 197, 199, 211, 217, 212, 207, 212, 227, 237, 200, 175, 163, 163, + 165, 168, 168, 157, 158, 156, 153, 150, 147, 148, 151, 154, 149, 158, 152, 137, + 127, 120, 126, 143, 171, 196, 207, 208, 216, 223, 227, 236, 228, 228, 226, 227, + 228, 230, 231, 231, 232, 230, 237, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 252, 242, 232, 229, 230, 229, 232, 234, 233, 236, 235, 229, 224, 221, 215, 207, + 214, 211, 207, 207, 215, 224, 231, 231, 216, 222, 224, 219, 216, 221, 230, 235, + 245, 226, 221, 224, 225, 226, 224, 213, 216, 210, 203, 199, 199, 201, 204, 205, + 202, 213, 212, 206, 204, 198, 196, 206, 181, 201, 206, 204, 214, 224, 224, 229, + 223, 223, 223, 224, 227, 231, 232, 233, 233, 233, 242, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 246, 233, 229, 230, 231, 229, 229, 230, 233, 232, 224, + 219, 220, 220, 215, 203, 220, 227, 219, 222, 235, 241, 236, 228, 228, 223, 216, + 214, 217, 218, 215, 204, 194, 198, 207, 206, 203, 200, 189, 194, 187, 180, 178, + 183, 190, 196, 198, 204, 217, 221, 222, 224, 215, 205, 208, 199, 212, 209, 203, + 215, 224, 221, 220, 220, 220, 220, 223, 226, 230, 232, 232, 231, 233, 244, 255, + 255, 255, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 255, 254, 244, 235, 234, 234, 231, 232, 236, + 231, 232, 232, 227, 220, 214, 213, 213, 215, 219, 223, 229, 233, 234, 234, 234, + 227, 225, 224, 224, 222, 215, 205, 197, 202, 199, 196, 194, 197, 198, 197, 194, + 196, 190, 184, 187, 202, 216, 219, 213, 221, 230, 228, 223, 223, 217, 214, 222, + 207, 208, 209, 213, 217, 222, 223, 225, 227, 218, 215, 223, 231, 234, 237, 240, + 232, 241, 252, 255, 255, 255, 254, 249, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 255, 248, 241, 238, + 235, 231, 231, 235, 231, 232, 232, 229, 222, 217, 214, 214, 219, 222, 226, 231, + 232, 231, 230, 229, 222, 223, 222, 223, 224, 221, 215, 209, 201, 200, 199, 198, + 200, 201, 202, 202, 198, 195, 192, 194, 206, 218, 221, 216, 217, 226, 225, 221, + 222, 216, 213, 220, 209, 209, 210, 213, 217, 222, 224, 227, 222, 219, 221, 229, + 234, 234, 236, 239, 231, 240, 251, 255, 255, 255, 253, 249, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 251, 251, + 255, 251, 246, 241, 237, 233, 233, 236, 233, 233, 233, 228, 222, 219, 216, 215, + 219, 223, 227, 232, 233, 231, 229, 227, 218, 216, 212, 210, 210, 208, 204, 200, + 203, 203, 203, 203, 205, 206, 209, 209, 201, 203, 205, 207, 214, 224, 227, 225, + 215, 225, 225, 222, 224, 218, 213, 219, 212, 212, 211, 213, 217, 222, 226, 229, + 220, 223, 229, 234, 233, 230, 232, 237, 243, 249, 255, 255, 255, 255, 252, 248, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 251, 249, 250, 255, 254, 248, 244, 238, 235, 235, 238, 233, 232, 232, 228, + 225, 221, 219, 217, 217, 221, 226, 230, 231, 230, 226, 226, 218, 214, 207, 203, + 202, 200, 198, 195, 197, 194, 192, 192, 197, 199, 199, 196, 197, 202, 206, 205, + 206, 210, 212, 211, 219, 228, 227, 225, 227, 220, 212, 217, 214, 213, 212, 213, + 217, 223, 227, 231, 223, 228, 232, 232, 228, 227, 232, 237, 248, 253, 255, 255, + 255, 254, 252, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 249, 247, 249, 253, 255, 254, 247, 238, 233, 234, 237, + 236, 234, 231, 228, 226, 223, 222, 220, 219, 222, 226, 228, 229, 227, 222, 220, + 219, 215, 207, 202, 201, 200, 198, 195, 190, 183, 176, 177, 185, 187, 183, 175, + 189, 197, 203, 202, 199, 201, 204, 204, 221, 228, 227, 224, 226, 218, 209, 212, + 215, 214, 212, 213, 217, 223, 227, 231, 227, 231, 232, 229, 227, 232, 241, 246, + 250, 253, 255, 255, 253, 253, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 248, 249, 254, 255, 255, 249, + 236, 233, 233, 235, 236, 233, 230, 227, 227, 226, 224, 222, 224, 225, 228, 227, + 226, 223, 219, 218, 216, 211, 200, 192, 186, 180, 173, 167, 161, 153, 145, 145, + 152, 153, 148, 140, 152, 163, 175, 180, 185, 194, 202, 205, 218, 225, 221, 218, + 221, 215, 206, 208, 215, 214, 213, 214, 218, 223, 226, 229, 228, 231, 230, 228, + 232, 241, 247, 246, 255, 255, 255, 255, 254, 252, 251, 248, 252, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 249, 251, + 250, 255, 255, 252, 239, 237, 239, 242, 237, 233, 229, 227, 228, 227, 226, 224, + 224, 224, 226, 227, 227, 226, 225, 226, 222, 217, 208, 199, 191, 181, 171, 163, + 147, 144, 141, 138, 139, 138, 137, 134, 139, 150, 162, 170, 178, 190, 198, 202, + 216, 221, 216, 214, 219, 215, 207, 210, 213, 213, 213, 215, 218, 222, 224, 226, + 226, 228, 228, 230, 237, 243, 237, 224, 238, 245, 255, 255, 254, 252, 250, 245, + 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 250, 252, 243, 255, 255, 252, 243, 242, 247, 249, 235, 230, 227, 225, + 227, 226, 226, 224, 219, 220, 222, 225, 229, 232, 235, 237, 237, 233, 229, 226, + 223, 217, 210, 204, 193, 196, 196, 192, 186, 183, 187, 192, 198, 206, 211, 211, + 212, 217, 220, 219, 215, 219, 215, 213, 220, 217, 212, 216, 212, 211, 213, 216, + 219, 222, 223, 225, 225, 227, 228, 232, 239, 239, 222, 199, 193, 208, 227, 242, + 249, 255, 255, 252, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 253, 249, 255, 255, 255, 231, 248, 247, 242, + 238, 235, 226, 219, 221, 227, 225, 217, 231, 226, 221, 222, 228, 235, 240, 241, + 247, 243, 236, 229, 227, 224, 215, 204, 200, 205, 206, 196, 188, 192, 201, 206, + 214, 214, 213, 213, 214, 218, 221, 223, 220, 221, 219, 217, 217, 217, 212, 204, + 217, 215, 215, 215, 218, 221, 225, 227, 217, 234, 231, 232, 251, 245, 215, 200, + 206, 196, 219, 245, 255, 255, 246, 253, 253, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 249, 255, 255, 254, + 231, 244, 243, 239, 242, 239, 230, 221, 221, 225, 224, 219, 220, 217, 219, 223, + 231, 237, 240, 240, 233, 233, 231, 228, 227, 227, 223, 215, 206, 208, 207, 203, + 198, 200, 206, 213, 214, 213, 213, 213, 214, 216, 218, 219, 219, 221, 221, 219, + 220, 221, 216, 209, 214, 214, 214, 215, 217, 221, 224, 226, 227, 237, 227, 222, + 237, 235, 212, 201, 208, 196, 206, 219, 241, 255, 251, 255, 253, 252, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, + 250, 255, 255, 255, 231, 241, 239, 235, 247, 245, 238, 229, 225, 225, 225, 222, + 216, 216, 220, 226, 233, 238, 237, 235, 233, 236, 236, 232, 228, 226, 222, 215, + 209, 206, 205, 208, 206, 202, 206, 215, 207, 208, 209, 210, 212, 214, 215, 216, + 216, 219, 220, 219, 220, 222, 219, 213, 219, 219, 219, 220, 223, 226, 229, 231, + 235, 239, 228, 221, 233, 232, 214, 201, 207, 197, 197, 193, 221, 255, 255, 254, + 254, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 251, 253, 250, 255, 255, 255, 231, 239, 235, 232, 247, 247, 245, 239, + 233, 228, 225, 224, 221, 220, 222, 226, 231, 233, 231, 228, 230, 235, 236, 230, + 225, 222, 217, 213, 212, 201, 200, 209, 209, 199, 199, 209, 199, 201, 204, 207, + 210, 212, 213, 214, 213, 217, 218, 217, 218, 220, 218, 213, 221, 221, 221, 223, + 225, 228, 230, 232, 229, 232, 228, 226, 234, 235, 218, 199, 206, 203, 199, 184, + 210, 255, 255, 248, 254, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 253, 251, 255, 255, 255, 233, 237, 232, 230, + 242, 244, 246, 246, 241, 233, 227, 225, 225, 221, 220, 220, 223, 225, 224, 222, + 218, 224, 226, 222, 221, 220, 217, 214, 212, 202, 201, 210, 208, 198, 197, 205, + 201, 202, 204, 206, 208, 210, 210, 210, 213, 218, 220, 218, 218, 219, 217, 213, + 216, 217, 217, 218, 220, 222, 223, 224, 221, 221, 222, 224, 231, 237, 225, 204, + 214, 212, 206, 182, 199, 248, 255, 247, 255, 254, 253, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 251, 255, 255, 255, + 235, 237, 231, 230, 235, 236, 240, 246, 246, 238, 232, 230, 226, 221, 217, 215, + 217, 220, 220, 218, 215, 219, 218, 213, 210, 209, 206, 201, 202, 197, 198, 201, + 198, 191, 192, 200, 207, 206, 206, 206, 206, 206, 206, 206, 214, 220, 223, 221, + 220, 221, 220, 217, 217, 218, 218, 219, 219, 220, 220, 220, 225, 218, 220, 223, + 228, 240, 237, 215, 222, 219, 216, 188, 193, 233, 250, 255, 255, 255, 254, 253, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, + 251, 255, 255, 255, 237, 238, 231, 231, 231, 228, 231, 240, 246, 242, 238, 237, + 234, 228, 223, 220, 220, 220, 217, 216, 215, 214, 208, 202, 200, 199, 195, 188, + 191, 194, 197, 195, 191, 190, 195, 200, 201, 199, 199, 198, 199, 201, 202, 204, + 211, 218, 223, 221, 220, 222, 223, 221, 223, 223, 223, 223, 222, 222, 221, 220, + 224, 216, 222, 228, 229, 241, 239, 213, 209, 211, 217, 195, 190, 215, 239, 255, + 255, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 251, 251, 253, 251, 254, 255, 255, 239, 239, 231, 232, 229, 223, 224, 235, + 244, 244, 242, 243, 245, 239, 234, 229, 226, 222, 216, 213, 203, 201, 195, 192, + 195, 199, 197, 191, 188, 196, 202, 196, 191, 195, 204, 207, 189, 188, 188, 189, + 192, 197, 201, 204, 206, 214, 219, 219, 219, 222, 223, 222, 221, 221, 220, 220, + 219, 217, 216, 215, 210, 205, 218, 228, 227, 234, 225, 192, 181, 190, 209, 198, + 188, 197, 220, 255, 255, 255, 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 250, 249, 250, 252, 255, 255, 253, 238, 234, 237, 232, + 228, 226, 227, 233, 237, 237, 240, 245, 248, 243, 240, 237, 235, 232, 227, 224, + 210, 209, 206, 204, 202, 200, 198, 195, 193, 198, 206, 211, 213, 211, 209, 205, + 185, 193, 200, 198, 197, 199, 202, 203, 216, 217, 220, 222, 223, 223, 221, 220, + 219, 218, 217, 215, 213, 210, 207, 206, 206, 217, 211, 219, 227, 224, 217, 189, + 153, 158, 175, 205, 206, 211, 204, 245, 255, 255, 253, 246, 251, 251, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 249, 250, 252, 255, 255, 254, + 239, 235, 238, 232, 226, 223, 223, 227, 230, 229, 231, 236, 240, 238, 237, 236, + 236, 234, 229, 226, 217, 216, 212, 210, 209, 208, 207, 205, 206, 208, 212, 215, + 215, 215, 213, 212, 198, 204, 207, 204, 201, 204, 208, 210, 219, 220, 222, 223, + 222, 221, 219, 217, 218, 217, 215, 213, 211, 209, 208, 207, 206, 217, 211, 218, + 227, 226, 223, 199, 161, 139, 135, 167, 187, 208, 198, 228, 255, 255, 255, 249, + 254, 253, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 250, 249, 250, + 251, 255, 255, 255, 241, 237, 239, 231, 228, 224, 223, 226, 227, 226, 227, 231, + 237, 237, 239, 240, 241, 240, 237, 235, 225, 224, 220, 218, 217, 216, 216, 215, + 217, 216, 216, 215, 215, 215, 216, 217, 211, 215, 215, 209, 206, 210, 214, 215, + 221, 221, 221, 221, 219, 217, 215, 213, 217, 215, 212, 210, 209, 209, 210, 211, + 208, 218, 211, 219, 227, 228, 229, 209, 183, 139, 110, 134, 168, 213, 203, 210, + 254, 255, 255, 249, 254, 253, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 253, 250, 249, 250, 251, 254, 255, 255, 243, 238, 239, 231, 229, 225, 223, 225, + 226, 224, 225, 230, 236, 235, 237, 238, 239, 240, 240, 240, 234, 230, 225, 222, + 222, 221, 220, 219, 219, 218, 216, 216, 216, 217, 218, 218, 213, 217, 217, 212, + 210, 213, 216, 215, 217, 217, 217, 216, 215, 213, 211, 210, 214, 212, 208, 206, + 205, 207, 210, 212, 209, 217, 210, 217, 223, 224, 228, 215, 203, 163, 124, 122, + 148, 213, 212, 201, 245, 255, 255, 248, 251, 251, 246, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 253, 250, 249, 250, 252, 254, 255, 254, 242, 239, 240, 231, + 225, 220, 218, 219, 220, 219, 221, 226, 230, 229, 229, 227, 227, 229, 232, 235, + 236, 232, 227, 223, 222, 219, 217, 217, 216, 216, 217, 218, 218, 218, 218, 218, + 211, 216, 218, 215, 214, 216, 216, 213, 210, 210, 210, 210, 210, 209, 208, 208, + 211, 209, 205, 202, 202, 205, 209, 211, 208, 216, 208, 216, 219, 216, 223, 213, + 197, 180, 151, 127, 131, 206, 216, 200, 235, 253, 255, 250, 250, 251, 246, 247, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 253, 253, 250, 249, 250, 253, 253, 255, 251, + 240, 239, 240, 231, 227, 222, 219, 219, 220, 218, 221, 226, 227, 226, 226, 224, + 222, 223, 227, 230, 234, 231, 227, 224, 222, 219, 215, 212, 215, 218, 219, 220, + 221, 221, 220, 219, 211, 216, 218, 216, 216, 218, 215, 211, 205, 205, 205, 205, + 205, 206, 206, 206, 208, 206, 203, 200, 200, 203, 206, 209, 204, 212, 207, 216, + 217, 210, 217, 209, 189, 184, 172, 143, 130, 199, 219, 208, 230, 254, 255, 253, + 252, 251, 247, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 250, 249, 250, + 253, 252, 254, 247, 237, 237, 240, 232, 231, 225, 221, 220, 219, 217, 219, 223, + 221, 223, 227, 226, 223, 222, 224, 226, 227, 226, 224, 224, 222, 219, 216, 213, + 217, 218, 218, 218, 217, 218, 217, 216, 215, 217, 216, 212, 212, 213, 212, 207, + 204, 204, 204, 203, 203, 204, 204, 204, 206, 205, 203, 201, 201, 202, 205, 207, + 199, 209, 207, 218, 218, 209, 214, 207, 197, 179, 174, 164, 146, 200, 219, 217, + 223, 251, 255, 254, 252, 251, 248, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, + 253, 250, 249, 250, 255, 252, 253, 247, 237, 239, 242, 233, 231, 224, 220, 218, + 215, 211, 212, 217, 212, 217, 224, 225, 223, 220, 219, 219, 225, 225, 226, 227, + 227, 224, 220, 216, 221, 219, 217, 214, 215, 214, 213, 213, 217, 217, 212, 206, + 205, 208, 207, 203, 206, 205, 204, 203, 203, 203, 203, 204, 205, 204, 202, 201, + 200, 201, 203, 204, 194, 206, 207, 220, 219, 208, 214, 210, 212, 173, 166, 174, + 159, 198, 212, 217, 217, 247, 255, 252, 249, 251, 245, 245, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 254, 253, 253, 252, 251, 251, 249, 255, 247, 210, 230, 246, 237, 245, + 237, 230, 225, 223, 226, 225, 219, 213, 218, 217, 216, 217, 218, 218, 215, 213, + 216, 218, 219, 217, 215, 212, 212, 213, 212, 211, 211, 212, 213, 212, 209, 206, + 212, 207, 205, 207, 207, 202, 203, 208, 205, 204, 203, 201, 200, 199, 198, 198, + 205, 204, 203, 203, 203, 202, 200, 197, 199, 208, 210, 205, 205, 212, 210, 204, + 204, 187, 160, 182, 157, 127, 226, 224, 231, 255, 255, 252, 252, 253, 248, 246, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 253, 254, 253, 253, 253, 252, 252, 252, 248, 255, 238, 207, + 230, 247, 241, 248, 236, 231, 225, 223, 223, 221, 217, 212, 215, 214, 212, 213, + 216, 218, 219, 219, 216, 217, 218, 216, 213, 211, 210, 211, 211, 210, 210, 210, + 211, 210, 207, 204, 207, 202, 201, 203, 202, 198, 198, 202, 202, 201, 201, 200, + 200, 200, 201, 201, 204, 202, 200, 199, 200, 200, 199, 197, 199, 207, 209, 203, + 204, 210, 209, 203, 194, 189, 168, 170, 157, 126, 207, 226, 232, 255, 255, 253, + 253, 255, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 254, 254, 254, 254, 253, 254, 253, 253, 253, 252, 252, 252, + 251, 255, 226, 205, 224, 244, 241, 245, 233, 231, 228, 224, 221, 217, 214, 213, + 214, 211, 208, 208, 211, 214, 217, 218, 214, 216, 216, 214, 211, 208, 207, 207, + 209, 208, 207, 207, 208, 207, 205, 203, 205, 202, 201, 202, 201, 197, 196, 198, + 199, 199, 199, 199, 200, 202, 203, 204, 203, 200, 196, 195, 196, 197, 198, 197, + 198, 204, 206, 202, 203, 209, 209, 204, 196, 197, 177, 163, 164, 124, 169, 224, + 237, 255, 255, 254, 255, 255, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 253, 254, 253, 253, + 253, 252, 252, 252, 255, 255, 216, 207, 217, 238, 240, 241, 232, 233, 232, 228, + 221, 216, 214, 214, 213, 210, 207, 206, 208, 210, 210, 210, 213, 215, 215, 213, + 209, 206, 206, 206, 208, 206, 205, 205, 206, 206, 204, 202, 202, 201, 200, 200, + 198, 195, 194, 194, 198, 198, 198, 199, 200, 201, 203, 204, 202, 198, 194, 192, + 193, 196, 198, 198, 198, 202, 204, 201, 202, 207, 207, 205, 201, 195, 177, 160, + 177, 124, 136, 226, 240, 255, 255, 252, 255, 255, 251, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, + 253, 254, 253, 253, 253, 252, 252, 252, 255, 255, 209, 212, 210, 230, 241, 243, + 231, 233, 233, 228, 219, 213, 211, 212, 206, 205, 205, 206, 208, 208, 207, 205, + 212, 213, 214, 212, 209, 206, 205, 206, 207, 205, 204, 204, 205, 205, 204, 203, + 200, 200, 199, 196, 195, 195, 194, 193, 201, 201, 200, 200, 200, 201, 201, 202, + 201, 197, 192, 190, 192, 196, 198, 200, 198, 201, 203, 202, 203, 205, 205, 204, + 199, 179, 165, 160, 189, 129, 127, 233, 243, 255, 255, 251, 254, 254, 249, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 253, 254, 253, 253, 253, 252, 252, 252, 252, 255, 206, 219, + 202, 220, 240, 244, 228, 230, 230, 225, 217, 210, 207, 206, 199, 199, 201, 204, + 208, 209, 208, 206, 209, 211, 212, 210, 208, 206, 205, 206, 206, 204, 202, 202, + 203, 204, 204, 203, 203, 204, 202, 198, 197, 200, 201, 199, 203, 202, 201, 200, + 199, 199, 199, 200, 198, 194, 190, 189, 191, 195, 198, 199, 199, 201, 204, 205, + 206, 205, 203, 202, 207, 180, 164, 161, 183, 128, 137, 231, 245, 255, 255, 250, + 253, 253, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 253, 253, 253, 252, 252, 252, + 252, 255, 208, 226, 193, 205, 230, 238, 229, 229, 228, 224, 217, 210, 205, 203, + 200, 199, 199, 201, 205, 208, 208, 208, 205, 207, 208, 208, 206, 204, 204, 205, + 203, 201, 199, 199, 200, 202, 202, 201, 203, 204, 201, 195, 195, 201, 204, 202, + 202, 201, 200, 200, 199, 199, 200, 200, 194, 191, 188, 187, 190, 193, 195, 196, + 200, 202, 206, 209, 208, 205, 201, 200, 209, 190, 173, 163, 167, 135, 174, 240, + 249, 255, 255, 251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 253, 253, + 253, 252, 252, 252, 255, 255, 213, 231, 185, 192, 220, 229, 232, 231, 229, 225, + 220, 213, 207, 203, 205, 202, 199, 199, 201, 204, 206, 206, 202, 204, 206, 205, + 204, 203, 203, 204, 201, 199, 197, 196, 198, 200, 200, 200, 194, 196, 192, 185, + 186, 193, 198, 196, 201, 200, 199, 199, 199, 200, 201, 201, 190, 188, 186, 186, + 189, 192, 193, 194, 201, 203, 207, 211, 210, 205, 199, 198, 196, 192, 177, 161, + 158, 151, 218, 255, 251, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 253, 253, 253, 254, 254, 254, 254, 255, 254, 255, 237, 232, 155, 196, 215, 217, + 218, 229, 221, 214, 220, 211, 200, 210, 200, 201, 200, 197, 193, 193, 196, 200, + 201, 206, 208, 206, 202, 201, 202, 202, 201, 194, 190, 192, 192, 190, 191, 193, + 189, 193, 195, 196, 196, 196, 198, 200, 199, 199, 198, 198, 195, 192, 193, 194, + 185, 187, 189, 189, 189, 191, 197, 202, 209, 200, 198, 205, 207, 200, 197, 201, + 195, 187, 177, 162, 159, 238, 255, 252, 255, 255, 254, 254, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 253, 253, 253, 254, 254, 253, 254, 254, 255, 255, 249, 225, + 143, 187, 214, 216, 218, 224, 221, 217, 217, 210, 204, 207, 198, 199, 198, 195, + 192, 192, 195, 198, 194, 197, 199, 200, 200, 203, 206, 207, 202, 198, 196, 196, + 193, 189, 188, 192, 193, 194, 196, 197, 196, 197, 198, 200, 196, 196, 195, 195, + 194, 192, 191, 190, 185, 186, 188, 188, 189, 192, 197, 202, 203, 198, 197, 202, + 204, 202, 200, 200, 193, 193, 172, 167, 155, 248, 255, 251, 255, 254, 253, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 253, 253, 254, + 255, 252, 255, 230, 132, 184, 207, 211, 217, 215, 221, 222, 214, 210, 209, 203, + 197, 197, 196, 194, 191, 191, 193, 195, 201, 199, 197, 197, 199, 199, 199, 199, + 198, 198, 199, 200, 195, 189, 189, 194, 194, 196, 198, 198, 197, 196, 198, 200, + 192, 192, 192, 192, 193, 192, 190, 185, 184, 185, 187, 188, 189, 193, 197, 201, + 199, 201, 200, 199, 200, 202, 200, 196, 192, 196, 166, 171, 157, 255, 253, 251, + 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 253, 253, + 253, 252, 252, 253, 252, 249, 255, 249, 125, 191, 196, 203, 214, 208, 220, 225, + 210, 209, 213, 201, 196, 195, 194, 192, 191, 191, 191, 192, 202, 197, 195, 198, + 200, 198, 194, 192, 189, 192, 198, 201, 196, 191, 192, 200, 196, 198, 199, 198, + 197, 196, 197, 198, 188, 190, 190, 190, 192, 193, 190, 184, 185, 185, 186, 188, + 190, 194, 197, 199, 201, 207, 206, 198, 196, 200, 198, 189, 189, 190, 168, 169, + 176, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, + 253, 254, 253, 253, 252, 251, 251, 252, 252, 252, 255, 255, 119, 196, 186, 200, + 209, 203, 216, 222, 208, 208, 212, 200, 196, 195, 193, 192, 192, 192, 191, 191, + 188, 185, 187, 196, 201, 198, 194, 193, 186, 189, 196, 199, 196, 190, 192, 199, + 198, 200, 200, 199, 197, 195, 196, 197, 187, 191, 193, 191, 192, 195, 192, 185, + 187, 186, 187, 189, 192, 195, 197, 198, 200, 207, 206, 198, 195, 199, 197, 190, + 185, 180, 177, 167, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 254, 253, 254, 253, 253, 252, 251, 250, 251, 255, 255, 252, 255, + 131, 193, 184, 199, 203, 203, 210, 214, 208, 207, 208, 203, 197, 196, 194, 194, + 194, 194, 193, 191, 186, 182, 185, 194, 196, 189, 185, 188, 189, 190, 194, 198, + 195, 190, 190, 196, 198, 200, 200, 198, 195, 193, 194, 195, 184, 192, 195, 190, + 189, 194, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, + 255, 255, 250, 255, 170, 190, 190, 192, 197, 205, 205, 205, 209, 205, 202, 206, + 199, 197, 195, 196, 197, 197, 194, 192, 193, 187, 188, 193, 191, 182, 181, 188, + 192, 190, 192, 197, 197, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 254, + 253, 253, 252, 252, 245, 248, 255, 243, 251, 241, 247, 249, 250, 236, 239, 249, + 247, 255, 255, 244, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 254, 254, 254, 254, 254, 254, + 253, 253, 253, 253, 252, 252, 251, 250, 251, 248, 249, 251, 246, 253, 251, 225, + 253, 250, 253, 252, 249, 254, 255, 250, 253, 253, 254, 255, 254, 254, 254, 254, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 253, 253, 253, 254, 254, 253, 253, 253, 253, 253, 253, + 253, 252, 252, 253, 251, 252, 252, 251, 250, 250, 249, 248, 250, 246, 238, 236, + 195, 229, 225, 191, 203, 234, 252, 252, 244, 236, 238, 248, 251, 252, 252, 254, + 254, 254, 253, 253, 254, 254, 253, 254, 254, 255, 254, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 252, 252, 252, 252, 252, 252, 252, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 249, 248, 247, 247, 247, + 232, 232, 217, 201, 119, 167, 179, 156, 114, 180, 228, 237, 229, 214, 215, 240, + 243, 245, 246, 249, 251, 253, 253, 253, 253, 253, 253, 253, 254, 254, 254, 254, + 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 249, 255, 244, 255, 243, 249, 241, 236, 242, 249, 243, + 242, 242, 249, 250, 246, 228, 234, 238, 212, 219, 250, 238, 240, 237, 246, 250, + 231, 228, 230, 193, 204, 160, 164, 140, 148, 180, 154, 174, 133, 163, 186, 170, + 140, 147, 134, 169, 191, 211, 195, 219, 250, 242, 249, 245, 245, 249, 241, 254, + 246, 244, 239, 251, 251, 246, 247, 254, 255, 252, 252, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 253, 254, 255, 254, 254, 253, 254, 255, 248, 253, 241, 255, 249, 250, 232, + 224, 215, 205, 197, 198, 208, 215, 214, 196, 178, 162, 168, 173, 169, 163, 151, + 122, 142, 181, 188, 160, 148, 149, 143, 121, 122, 141, 136, 114, 162, 163, 186, + 165, 156, 129, 119, 106, 124, 107, 147, 130, 148, 138, 140, 139, 173, 191, 239, + 223, 225, 194, 151, 155, 228, 253, 245, 252, 252, 255, 255, 254, 249, 245, 246, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 252, 252, 252, 253, 253, 253, 252, 253, 254, 248, 252, 242, + 252, 252, 247, 216, 227, 202, 178, 169, 165, 181, 182, 173, 178, 170, 158, 170, + 195, 178, 143, 138, 94, 136, 194, 185, 163, 168, 158, 168, 134, 154, 156, 153, + 94, 135, 153, 158, 169, 145, 81, 85, 79, 112, 91, 144, 132, 155, 158, 141, + 92, 121, 100, 150, 134, 183, 163, 112, 85, 133, 243, 243, 242, 248, 250, 248, + 248, 251, 252, 252, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 253, 252, 252, 252, 254, 253, 253, 252, 252, + 250, 248, 253, 244, 241, 249, 243, 207, 220, 193, 168, 166, 156, 177, 176, 160, + 150, 147, 162, 179, 185, 163, 129, 129, 89, 127, 172, 138, 135, 167, 142, 146, + 151, 149, 133, 133, 85, 110, 150, 130, 140, 143, 79, 90, 72, 102, 82, 136, + 119, 150, 163, 156, 107, 107, 65, 74, 85, 162, 160, 168, 104, 49, 212, 251, + 247, 250, 248, 244, 244, 251, 253, 251, 243, 248, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 253, 253, 254, + 254, 253, 253, 253, 248, 247, 250, 239, 216, 233, 240, 215, 202, 180, 160, 168, + 148, 181, 188, 179, 176, 152, 183, 194, 172, 163, 147, 138, 119, 127, 155, 125, + 123, 143, 116, 130, 148, 121, 108, 104, 91, 88, 144, 115, 127, 150, 97, 106, + 75, 100, 75, 106, 137, 163, 164, 161, 133, 112, 112, 99, 101, 137, 144, 165, + 123, 60, 168, 210, 246, 249, 249, 249, 250, 251, 248, 241, 247, 250, 252, 252, + 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, + 253, 253, 254, 255, 254, 253, 253, 253, 252, 245, 242, 231, 191, 211, 228, 216, + 200, 178, 160, 173, 142, 185, 201, 199, 193, 150, 178, 178, 155, 169, 158, 143, + 127, 111, 135, 132, 111, 96, 92, 132, 158, 128, 121, 99, 94, 67, 117, 94, + 137, 148, 101, 113, 88, 112, 95, 93, 146, 160, 148, 142, 113, 87, 123, 117, + 112, 125, 157, 135, 125, 122, 119, 138, 185, 196, 215, 235, 244, 246, 248, 253, + 255, 255, 255, 253, 250, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 254, 254, 254, 253, 252, 252, 252, 253, 253, 252, 252, 251, 255, 244, 242, 239, + 181, 189, 196, 183, 180, 160, 149, 170, 134, 182, 200, 197, 191, 166, 186, 172, + 163, 179, 154, 148, 109, 100, 122, 131, 101, 89, 122, 161, 154, 135, 122, 88, + 81, 72, 103, 93, 150, 135, 96, 118, 102, 119, 122, 106, 151, 146, 145, 154, + 123, 123, 141, 154, 116, 155, 176, 165, 152, 138, 94, 103, 113, 127, 157, 184, + 192, 194, 214, 242, 242, 247, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 254, 254, 254, 254, 255, 251, 251, 252, 253, 252, 251, 250, 249, + 255, 244, 248, 250, 186, 177, 166, 143, 131, 119, 118, 155, 123, 177, 191, 185, + 164, 172, 193, 162, 157, 158, 113, 121, 86, 94, 110, 111, 86, 108, 168, 182, + 178, 164, 130, 86, 77, 97, 107, 102, 156, 124, 96, 124, 105, 108, 128, 112, + 148, 120, 122, 146, 112, 142, 124, 148, 120, 175, 140, 188, 170, 92, 75, 85, + 93, 100, 120, 135, 126, 121, 152, 198, 206, 220, 237, 251, 254, 254, 248, 243, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 253, 252, 250, 255, 255, 255, + 255, 254, 252, 251, 253, 241, 242, 238, 206, 181, 163, 141, 117, 95, 123, 151, + 104, 172, 172, 148, 172, 186, 177, 139, 140, 113, 102, 85, 88, 92, 75, 109, + 125, 160, 169, 169, 162, 153, 105, 71, 77, 104, 91, 149, 191, 121, 139, 124, + 87, 108, 101, 82, 134, 145, 125, 140, 129, 143, 156, 165, 125, 147, 141, 173, + 143, 108, 83, 67, 80, 70, 91, 124, 116, 129, 124, 148, 137, 141, 178, 224, + 252, 242, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 253, 252, + 255, 255, 255, 254, 250, 248, 247, 245, 251, 237, 231, 216, 191, 180, 156, 114, + 86, 93, 83, 105, 106, 132, 115, 171, 176, 151, 119, 89, 75, 69, 77, 53, + 84, 81, 111, 171, 186, 171, 152, 167, 149, 160, 135, 104, 123, 155, 153, 197, + 150, 143, 163, 114, 57, 50, 47, 75, 127, 143, 139, 153, 146, 140, 141, 135, + 125, 154, 146, 157, 118, 92, 76, 62, 71, 57, 63, 86, 92, 133, 144, 166, + 155, 136, 134, 156, 192, 241, 253, 238, 253, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, + 254, 253, 252, 251, 254, 252, 251, 251, 251, 252, 253, 253, 234, 227, 219, 195, + 176, 181, 154, 97, 65, 82, 63, 82, 96, 108, 94, 173, 157, 127, 93, 86, + 61, 73, 84, 46, 91, 73, 124, 159, 166, 131, 105, 132, 128, 161, 167, 136, + 159, 174, 172, 192, 141, 151, 139, 74, 42, 35, 30, 85, 145, 158, 161, 162, + 159, 136, 141, 130, 140, 160, 146, 138, 107, 93, 77, 56, 62, 61, 71, 84, + 85, 132, 149, 171, 147, 125, 121, 124, 142, 244, 254, 243, 250, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 254, 254, 254, 254, 253, 252, 251, 255, 251, 249, 251, 252, 252, 250, 250, + 214, 213, 209, 187, 165, 170, 151, 103, 70, 61, 67, 93, 78, 107, 124, 141, + 109, 123, 88, 83, 59, 77, 81, 47, 104, 87, 128, 103, 105, 98, 81, 99, + 101, 142, 169, 148, 168, 154, 147, 150, 156, 130, 85, 33, 31, 48, 68, 128, + 175, 179, 176, 157, 153, 130, 157, 157, 164, 157, 136, 126, 120, 112, 91, 67, + 64, 73, 91, 97, 76, 109, 135, 173, 156, 112, 124, 116, 125, 225, 249, 251, + 250, 254, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 253, 254, 254, 254, 254, 253, 252, 250, 254, 249, 241, 241, + 240, 231, 224, 221, 202, 196, 197, 179, 146, 134, 126, 102, 81, 43, 55, 94, + 73, 102, 131, 113, 81, 147, 95, 60, 45, 60, 68, 58, 86, 76, 108, 67, + 74, 84, 68, 70, 79, 114, 146, 147, 165, 139, 141, 144, 133, 82, 47, 26, + 21, 56, 118, 180, 177, 182, 177, 154, 148, 131, 169, 179, 178, 150, 130, 121, + 125, 118, 107, 102, 90, 84, 93, 98, 71, 92, 121, 175, 189, 112, 125, 104, + 108, 164, 215, 250, 254, 255, 252, 250, 253, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 254, 254, 254, 253, 252, 250, + 245, 228, 217, 217, 215, 206, 198, 196, 194, 180, 178, 162, 119, 94, 90, 79, + 82, 47, 35, 78, 91, 88, 104, 113, 66, 154, 99, 55, 55, 59, 76, 73, + 79, 62, 74, 56, 60, 65, 50, 55, 77, 102, 120, 135, 147, 129, 139, 142, + 83, 32, 25, 45, 52, 96, 164, 196, 156, 168, 167, 161, 155, 146, 175, 184, + 178, 149, 144, 122, 119, 109, 114, 133, 124, 105, 109, 122, 99, 108, 114, 151, + 180, 129, 157, 132, 108, 108, 177, 245, 250, 254, 253, 248, 250, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 254, 254, + 254, 252, 251, 249, 232, 210, 194, 193, 193, 186, 181, 182, 182, 162, 154, 137, + 98, 77, 73, 59, 64, 55, 40, 76, 101, 84, 93, 106, 54, 115, 72, 47, + 63, 56, 84, 65, 97, 80, 63, 64, 57, 61, 55, 62, 77, 106, 105, 122, + 116, 108, 107, 94, 46, 23, 32, 71, 104, 145, 175, 164, 136, 148, 139, 153, + 151, 158, 176, 182, 178, 160, 169, 135, 129, 117, 115, 126, 124, 116, 124, 136, + 113, 121, 112, 130, 158, 153, 172, 163, 122, 102, 145, 198, 230, 245, 254, 249, + 247, 251, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 253, 254, 254, 253, 253, 252, 251, 248, 238, 210, 187, 182, 180, 173, 168, 170, + 172, 149, 136, 119, 91, 82, 76, 53, 39, 54, 61, 86, 91, 87, 105, 84, + 79, 94, 51, 40, 61, 53, 97, 64, 78, 83, 56, 63, 51, 63, 60, 54, + 70, 109, 100, 114, 94, 92, 75, 42, 30, 48, 65, 94, 127, 152, 152, 123, + 127, 131, 108, 129, 131, 156, 172, 180, 181, 171, 189, 151, 151, 138, 116, 100, + 96, 102, 114, 113, 86, 108, 115, 137, 176, 171, 141, 146, 125, 124, 118, 121, + 208, 234, 253, 251, 245, 249, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 255, 247, 252, 255, 254, 249, 247, 253, 241, 233, 219, 193, 168, + 160, 168, 176, 177, 172, 139, 138, 139, 103, 74, 68, 58, 44, 55, 70, 83, + 92, 93, 87, 79, 73, 71, 58, 58, 71, 48, 70, 58, 74, 64, 49, 42, + 52, 67, 69, 63, 73, 92, 83, 97, 87, 73, 31, 31, 49, 63, 86, 110, + 123, 123, 113, 105, 114, 113, 116, 117, 125, 152, 171, 167, 181, 172, 172, 180, + 172, 141, 109, 94, 106, 96, 98, 108, 108, 100, 104, 117, 154, 160, 143, 120, + 108, 144, 115, 93, 142, 238, 245, 253, 241, 246, 252, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 251, 253, 254, 254, 250, 249, 253, 240, + 236, 205, 177, 171, 178, 181, 179, 179, 161, 162, 150, 131, 117, 100, 81, 73, + 46, 57, 69, 78, 81, 79, 75, 70, 77, 72, 65, 66, 73, 63, 74, 71, + 65, 62, 55, 53, 63, 72, 70, 63, 92, 95, 84, 81, 68, 57, 42, 48, + 72, 82, 96, 105, 103, 97, 90, 86, 92, 94, 103, 115, 130, 157, 169, 158, + 183, 184, 188, 186, 167, 137, 113, 101, 106, 106, 108, 112, 116, 119, 121, 123, + 113, 117, 114, 89, 82, 111, 102, 97, 130, 161, 252, 242, 248, 254, 246, 255, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 252, 250, + 251, 253, 245, 234, 217, 176, 153, 170, 192, 190, 174, 166, 123, 154, 131, 92, + 98, 98, 76, 67, 61, 69, 76, 81, 78, 73, 69, 69, 79, 73, 75, 80, + 78, 89, 79, 89, 67, 66, 62, 63, 70, 76, 75, 69, 75, 66, 69, 62, + 56, 54, 73, 80, 78, 82, 85, 79, 68, 61, 60, 62, 101, 106, 122, 143, + 162, 185, 191, 176, 183, 181, 172, 158, 147, 141, 135, 129, 123, 123, 116, 106, + 109, 117, 119, 114, 98, 99, 108, 83, 82, 91, 93, 96, 117, 113, 223, 242, + 250, 255, 248, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 253, 247, 253, 252, 229, 218, 184, 157, 147, 170, 194, 194, 173, 156, + 124, 149, 130, 92, 93, 103, 92, 76, 76, 77, 81, 84, 84, 79, 75, 74, + 78, 74, 87, 99, 92, 113, 88, 105, 82, 77, 69, 66, 70, 76, 78, 78, + 77, 60, 74, 66, 62, 54, 76, 70, 88, 87, 83, 76, 70, 71, 79, 86, + 114, 118, 133, 147, 156, 169, 172, 159, 175, 167, 151, 141, 153, 169, 164, 147, + 132, 121, 103, 91, 91, 99, 103, 104, 84, 76, 96, 75, 83, 73, 69, 68, + 107, 128, 148, 241, 250, 244, 255, 248, 254, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 255, 253, 251, 254, 245, 253, 250, 208, 198, 168, 161, 159, 168, + 186, 194, 182, 167, 151, 151, 152, 135, 111, 109, 104, 80, 73, 71, 74, 86, + 93, 92, 89, 90, 83, 83, 103, 119, 113, 134, 107, 123, 103, 93, 82, 76, + 76, 77, 78, 80, 76, 59, 76, 75, 77, 67, 81, 67, 67, 63, 58, 58, + 64, 76, 88, 96, 140, 143, 152, 156, 150, 155, 162, 159, 170, 175, 174, 174, + 185, 190, 169, 138, 113, 94, 82, 84, 89, 89, 94, 105, 84, 65, 79, 67, + 84, 74, 63, 55, 89, 128, 99, 205, 253, 240, 255, 245, 254, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 250, 250, 254, 243, 252, 246, 190, 184, + 167, 167, 164, 163, 172, 185, 186, 178, 162, 150, 163, 163, 121, 97, 87, 64, + 66, 66, 76, 95, 108, 111, 112, 116, 97, 104, 122, 140, 142, 149, 136, 144, + 123, 110, 97, 92, 88, 83, 78, 76, 66, 56, 65, 71, 77, 76, 83, 79, + 77, 74, 72, 76, 85, 97, 107, 112, 114, 117, 129, 134, 129, 139, 156, 163, + 182, 196, 201, 192, 183, 172, 150, 128, 98, 83, 78, 90, 93, 83, 84, 95, + 104, 81, 82, 72, 84, 85, 69, 64, 71, 84, 97, 142, 239, 250, 252, 247, + 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 250, 254, 239, + 251, 244, 180, 181, 167, 162, 160, 165, 174, 177, 174, 170, 167, 164, 168, 162, + 127, 90, 72, 70, 68, 74, 93, 115, 124, 123, 129, 140, 121, 130, 143, 158, + 170, 161, 172, 169, 147, 128, 108, 99, 96, 91, 84, 82, 81, 82, 71, 74, + 70, 70, 64, 74, 72, 74, 76, 78, 79, 82, 85, 88, 100, 102, 117, 130, + 134, 149, 170, 179, 181, 187, 187, 175, 161, 150, 136, 125, 98, 91, 86, 86, + 83, 76, 75, 80, 92, 83, 81, 76, 73, 85, 68, 72, 66, 56, 95, 106, + 189, 250, 252, 247, 254, 254, 254, 255, 255, 255, 255, 255, 255, 254, 255, 255, + 249, 250, 255, 235, 249, 241, 176, 181, 169, 155, 156, 178, 190, 177, 161, 156, + 158, 170, 155, 135, 117, 77, 57, 79, 70, 82, 107, 126, 127, 121, 130, 146, + 138, 150, 156, 169, 188, 169, 196, 188, 169, 141, 112, 98, 95, 93, 92, 93, + 70, 86, 73, 82, 77, 82, 72, 97, 79, 86, 92, 90, 82, 76, 76, 76, + 84, 83, 97, 111, 116, 128, 143, 147, 156, 157, 160, 164, 165, 155, 134, 116, + 97, 97, 87, 73, 67, 72, 78, 79, 68, 77, 86, 92, 79, 101, 85, 95, + 72, 63, 80, 102, 135, 242, 254, 243, 254, 254, 254, 255, 255, 255, 255, 255, + 254, 254, 253, 252, 251, 251, 255, 254, 236, 250, 155, 161, 161, 164, 169, 172, + 172, 168, 160, 151, 152, 158, 144, 124, 111, 96, 84, 88, 74, 92, 124, 148, + 146, 133, 131, 142, 144, 150, 172, 198, 207, 199, 192, 194, 183, 169, 147, 129, + 117, 109, 103, 97, 85, 83, 85, 82, 77, 83, 90, 85, 83, 81, 77, 76, + 77, 76, 72, 69, 79, 80, 83, 91, 104, 118, 128, 133, 134, 125, 117, 122, + 131, 130, 110, 90, 60, 72, 74, 68, 58, 63, 65, 65, 79, 78, 82, 88, + 93, 93, 98, 103, 110, 85, 67, 104, 108, 219, 251, 239, 253, 255, 255, 255, + 255, 255, 255, 255, 254, 254, 253, 251, 253, 251, 255, 253, 237, 247, 152, 156, + 160, 161, 164, 169, 170, 166, 160, 155, 142, 145, 120, 123, 111, 117, 95, 99, + 96, 111, 138, 161, 164, 157, 161, 173, 173, 176, 191, 212, 218, 212, 208, 212, + 209, 201, 189, 176, 162, 146, 128, 115, 108, 94, 89, 91, 89, 92, 90, 79, + 80, 77, 72, 71, 73, 73, 71, 68, 74, 79, 86, 95, 101, 104, 101, 98, + 122, 115, 105, 103, 103, 99, 85, 73, 67, 75, 75, 66, 59, 64, 65, 63, + 85, 84, 85, 92, 103, 108, 107, 102, 117, 89, 69, 82, 116, 180, 227, 242, + 252, 254, 255, 255, 255, 255, 255, 255, 254, 254, 252, 251, 254, 250, 254, 253, + 241, 243, 154, 157, 157, 154, 156, 162, 162, 153, 149, 152, 112, 130, 113, 128, + 104, 121, 108, 131, 130, 138, 158, 179, 187, 187, 193, 204, 206, 206, 213, 225, + 229, 226, 224, 229, 229, 229, 226, 224, 217, 203, 184, 171, 157, 129, 118, 123, + 123, 118, 106, 90, 88, 84, 79, 77, 80, 82, 82, 81, 72, 70, 64, 63, + 62, 63, 61, 60, 44, 47, 53, 61, 66, 69, 69, 69, 78, 79, 76, 61, + 59, 60, 62, 56, 64, 62, 59, 65, 84, 105, 106, 96, 109, 83, 72, 65, + 124, 136, 189, 235, 251, 254, 255, 255, 255, 255, 255, 255, 254, 254, 252, 251, + 253, 250, 253, 254, 247, 238, 159, 161, 153, 150, 151, 153, 144, 130, 130, 140, + 105, 118, 113, 125, 121, 131, 129, 150, 153, 159, 173, 189, 200, 204, 209, 216, + 222, 220, 223, 231, 234, 232, 233, 237, 237, 238, 240, 242, 241, 234, 226, 218, + 204, 170, 155, 162, 159, 145, 129, 114, 106, 101, 94, 93, 94, 99, 99, 99, + 95, 89, 80, 72, 69, 69, 70, 70, 60, 64, 74, 86, 90, 89, 87, 88, + 89, 85, 80, 57, 60, 55, 58, 47, 42, 42, 36, 34, 55, 83, 92, 84, + 92, 74, 81, 76, 121, 121, 177, 229, 245, 249, 253, 255, 255, 255, 255, 255, + 254, 254, 252, 251, 253, 249, 252, 254, 245, 221, 153, 156, 153, 153, 155, 149, + 132, 116, 119, 132, 127, 110, 106, 111, 154, 153, 151, 144, 164, 168, 180, 197, + 209, 213, 215, 217, 220, 221, 225, 232, 236, 236, 237, 240, 243, 244, 244, 244, + 242, 237, 231, 226, 225, 195, 183, 186, 176, 159, 146, 135, 125, 118, 111, 108, + 110, 113, 115, 115, 106, 106, 106, 106, 104, 98, 91, 85, 73, 70, 72, 81, + 87, 86, 84, 86, 100, 92, 89, 62, 69, 56, 57, 42, 42, 47, 44, 39, + 51, 75, 84, 79, 86, 76, 90, 99, 105, 129, 191, 236, 240, 245, 249, 253, + 255, 255, 255, 255, 254, 254, 252, 251, 252, 251, 252, 250, 238, 197, 138, 141, + 151, 155, 155, 144, 129, 120, 124, 130, 124, 107, 117, 113, 163, 146, 154, 148, + 168, 175, 188, 202, 214, 220, 219, 219, 217, 221, 226, 233, 238, 242, 243, 244, + 245, 247, 252, 254, 251, 245, 237, 232, 229, 210, 202, 200, 185, 172, 166, 158, + 149, 144, 136, 132, 133, 135, 135, 135, 113, 111, 108, 105, 102, 100, 95, 93, + 90, 77, 73, 84, 97, 105, 110, 118, 112, 105, 109, 77, 87, 66, 68, 51, + 35, 46, 51, 52, 58, 72, 78, 78, 84, 81, 88, 102, 86, 129, 191, 239, + 240, 244, 247, 249, 255, 255, 255, 255, 254, 254, 252, 251, 251, 252, 254, 249, + 233, 178, 126, 131, 138, 144, 141, 131, 129, 134, 134, 127, 111, 118, 140, 138, + 158, 138, 154, 171, 177, 185, 196, 207, 215, 219, 219, 217, 216, 221, 227, 233, + 241, 247, 249, 250, 248, 251, 255, 254, 254, 253, 249, 246, 233, 222, 217, 210, + 196, 190, 189, 180, 177, 170, 162, 157, 157, 157, 156, 154, 145, 137, 125, 116, + 110, 110, 110, 111, 110, 97, 90, 98, 104, 105, 108, 116, 124, 120, 130, 97, + 110, 84, 88, 68, 44, 47, 50, 52, 56, 61, 68, 72, 79, 89, 83, 91, + 88, 115, 162, 229, 244, 248, 250, 250, 255, 255, 255, 255, 254, 254, 253, 251, + 249, 252, 255, 249, 232, 170, 125, 130, 125, 128, 122, 115, 126, 143, 140, 123, + 122, 133, 146, 159, 167, 159, 164, 186, 187, 194, 203, 208, 213, 215, 215, 213, + 219, 223, 228, 234, 240, 248, 253, 253, 255, 255, 254, 251, 247, 246, 245, 246, + 233, 226, 222, 214, 201, 204, 205, 193, 191, 184, 175, 171, 169, 167, 164, 163, + 158, 155, 148, 142, 134, 124, 114, 108, 109, 103, 105, 117, 122, 116, 116, 122, + 132, 129, 145, 113, 126, 99, 103, 83, 78, 67, 57, 51, 49, 50, 56, 64, + 77, 98, 86, 86, 108, 105, 135, 219, 251, 253, 252, 251, 255, 255, 255, 255, + 255, 254, 254, 253, 244, 249, 254, 249, 211, 162, 128, 118, 96, 103, 119, 129, + 127, 130, 131, 122, 124, 154, 173, 173, 174, 175, 184, 197, 199, 205, 212, 214, + 213, 212, 216, 220, 214, 219, 226, 235, 243, 249, 253, 255, 255, 255, 253, 253, + 251, 248, 247, 246, 238, 235, 230, 226, 223, 220, 215, 211, 205, 202, 197, 191, + 184, 176, 171, 167, 171, 171, 168, 159, 147, 137, 131, 129, 134, 134, 111, 119, + 126, 124, 141, 130, 139, 140, 155, 130, 128, 116, 119, 94, 87, 56, 42, 58, + 49, 40, 56, 54, 61, 96, 83, 71, 106, 117, 124, 173, 246, 247, 250, 244, + 255, 255, 255, 255, 255, 255, 253, 253, 249, 251, 254, 247, 188, 137, 103, 95, + 104, 112, 124, 134, 136, 132, 127, 124, 128, 162, 180, 178, 180, 185, 194, 206, + 206, 211, 215, 217, 213, 213, 216, 221, 219, 223, 230, 237, 244, 249, 252, 255, + 255, 255, 253, 253, 251, 250, 247, 246, 239, 237, 232, 230, 227, 225, 222, 219, + 212, 210, 207, 203, 197, 193, 187, 185, 170, 172, 168, 162, 151, 144, 139, 137, + 125, 131, 119, 130, 135, 128, 136, 124, 138, 142, 160, 144, 145, 138, 141, 117, + 90, 56, 41, 47, 53, 52, 46, 43, 59, 85, 75, 84, 109, 105, 113, 148, + 235, 251, 253, 249, 255, 255, 255, 255, 255, 255, 253, 253, 253, 250, 247, 241, + 161, 120, 97, 98, 110, 118, 124, 134, 139, 126, 114, 118, 133, 167, 184, 180, + 186, 198, 205, 211, 213, 217, 218, 217, 214, 213, 215, 220, 223, 226, 231, 238, + 243, 248, 251, 253, 254, 253, 253, 252, 251, 250, 247, 246, 242, 239, 236, 234, + 234, 233, 231, 228, 220, 219, 218, 216, 212, 209, 206, 204, 188, 188, 185, 180, + 171, 163, 158, 156, 138, 146, 141, 149, 149, 142, 146, 138, 143, 149, 168, 161, + 162, 161, 162, 141, 114, 74, 53, 36, 57, 75, 51, 57, 72, 84, 72, 97, + 111, 96, 114, 134, 202, 246, 253, 248, 255, 255, 255, 255, 255, 255, 253, 253, + 253, 247, 239, 230, 149, 123, 117, 130, 112, 119, 122, 131, 137, 120, 107, 118, + 136, 167, 178, 176, 190, 208, 210, 206, 213, 216, 215, 214, 212, 213, 215, 219, + 222, 225, 230, 235, 241, 245, 250, 251, 252, 252, 252, 251, 250, 248, 247, 246, + 242, 240, 238, 238, 239, 239, 236, 235, 223, 223, 223, 222, 219, 218, 215, 214, + 212, 211, 207, 201, 193, 185, 177, 175, 167, 169, 165, 163, 158, 156, 161, 163, + 156, 160, 172, 171, 168, 170, 169, 151, 141, 101, 75, 32, 55, 88, 66, 90, + 92, 96, 78, 102, 106, 102, 136, 136, 162, 237, 249, 246, 255, 255, 255, 255, + 255, 255, 253, 253, 252, 251, 242, 222, 155, 132, 127, 138, 112, 118, 124, 131, + 130, 121, 121, 131, 142, 165, 172, 175, 196, 214, 210, 202, 210, 212, 213, 213, + 212, 213, 215, 218, 219, 222, 226, 231, 237, 243, 247, 250, 249, 249, 250, 248, + 248, 247, 245, 245, 241, 240, 238, 238, 239, 240, 237, 236, 227, 226, 225, 224, + 223, 220, 218, 217, 221, 220, 215, 211, 204, 198, 192, 188, 186, 183, 182, 172, + 165, 166, 167, 174, 169, 169, 171, 172, 163, 170, 167, 154, 144, 114, 91, 39, + 47, 79, 69, 106, 95, 100, 89, 98, 99, 114, 146, 134, 137, 238, 247, 250, + 255, 255, 255, 255, 255, 255, 253, 253, 254, 255, 248, 206, 166, 132, 117, 113, + 109, 111, 124, 125, 111, 117, 135, 141, 147, 165, 174, 183, 204, 214, 208, 204, + 209, 211, 211, 213, 214, 215, 218, 217, 217, 219, 223, 228, 234, 239, 245, 247, + 246, 246, 246, 246, 246, 245, 244, 243, 241, 239, 238, 238, 239, 239, 238, 235, + 230, 229, 229, 227, 225, 222, 220, 218, 221, 218, 217, 215, 213, 210, 205, 202, + 192, 188, 196, 186, 179, 181, 172, 178, 174, 173, 169, 175, 162, 173, 167, 158, + 139, 120, 104, 63, 53, 70, 69, 97, 83, 88, 95, 88, 89, 115, 127, 118, + 124, 239, 243, 252, 255, 255, 255, 255, 255, 255, 253, 253, 249, 255, 241, 173, + 166, 127, 108, 93, 117, 113, 131, 122, 89, 107, 143, 138, 149, 168, 182, 195, + 208, 207, 202, 210, 212, 215, 215, 217, 219, 220, 219, 218, 220, 220, 222, 226, + 231, 237, 240, 243, 243, 243, 244, 244, 244, 243, 242, 241, 242, 240, 238, 238, + 238, 238, 236, 234, 231, 230, 230, 229, 227, 225, 223, 221, 221, 219, 218, 217, + 218, 217, 213, 208, 197, 190, 203, 194, 190, 194, 178, 186, 181, 180, 173, 185, + 169, 183, 171, 163, 149, 127, 110, 89, 68, 66, 75, 81, 78, 74, 95, 79, + 81, 105, 94, 107, 118, 240, 237, 252, 255, 255, 255, 255, 255, 254, 253, 252, + 241, 254, 226, 140, 161, 126, 111, 95, 135, 127, 145, 127, 79, 102, 147, 135, + 146, 167, 188, 204, 208, 199, 198, 214, 217, 218, 220, 222, 224, 224, 221, 220, + 223, 223, 224, 227, 231, 234, 238, 240, 240, 240, 241, 242, 241, 241, 240, 239, + 241, 240, 237, 237, 236, 236, 232, 231, 229, 229, 229, 228, 227, 225, 224, 222, + 220, 216, 214, 214, 215, 213, 208, 203, 198, 187, 199, 189, 188, 197, 183, 191, + 189, 188, 181, 195, 177, 189, 175, 165, 161, 133, 107, 98, 74, 65, 79, 70, + 88, 70, 93, 72, 76, 95, 71, 108, 118, 243, 236, 253, 255, 255, 255, 255, + 255, 254, 253, 251, 251, 252, 185, 151, 152, 121, 113, 105, 126, 105, 139, 92, + 116, 122, 130, 143, 148, 168, 194, 207, 209, 206, 208, 212, 218, 214, 210, 210, + 214, 219, 222, 223, 222, 224, 225, 227, 230, 234, 237, 237, 235, 235, 236, 236, + 237, 237, 237, 237, 234, 235, 236, 237, 236, 235, 233, 232, 235, 234, 232, 230, + 227, 224, 221, 220, 219, 219, 217, 216, 214, 211, 209, 207, 203, 199, 197, 197, + 196, 196, 195, 194, 195, 192, 188, 187, 187, 184, 177, 172, 171, 134, 120, 104, + 67, 63, 80, 76, 66, 70, 74, 77, 67, 69, 77, 96, 121, 234, 243, 243, + 255, 255, 255, 255, 255, 254, 252, 251, 250, 249, 171, 137, 141, 111, 104, 110, + 106, 92, 130, 94, 118, 121, 125, 134, 150, 169, 193, 207, 207, 206, 208, 213, + 217, 214, 212, 213, 217, 221, 223, 224, 222, 222, 223, 225, 227, 230, 232, 234, + 232, 233, 233, 233, 234, 234, 234, 235, 234, 234, 235, 235, 235, 234, 232, 231, + 233, 232, 230, 228, 225, 223, 221, 221, 216, 216, 215, 215, 214, 212, 211, 210, + 203, 201, 197, 196, 197, 197, 195, 194, 195, 195, 194, 193, 191, 186, 180, 176, + 167, 137, 126, 111, 73, 65, 75, 68, 52, 59, 59, 70, 74, 78, 92, 97, + 127, 239, 249, 240, 255, 255, 255, 255, 255, 254, 252, 251, 247, 246, 158, 127, + 132, 98, 87, 107, 86, 79, 117, 95, 118, 122, 126, 133, 157, 175, 197, 209, + 209, 208, 210, 214, 216, 215, 214, 215, 220, 222, 222, 222, 221, 221, 221, 223, + 224, 226, 228, 229, 231, 231, 231, 232, 232, 233, 233, 233, 235, 235, 236, 236, + 235, 234, 233, 233, 231, 231, 229, 228, 226, 224, 222, 222, 218, 219, 217, 216, + 215, 213, 211, 210, 204, 202, 198, 197, 197, 197, 196, 194, 195, 198, 201, 200, + 196, 190, 184, 182, 167, 145, 137, 121, 84, 70, 73, 65, 57, 74, 68, 75, + 78, 70, 92, 88, 115, 228, 250, 240, 255, 255, 255, 255, 255, 254, 252, 251, + 244, 244, 151, 129, 131, 94, 74, 99, 82, 77, 105, 91, 112, 120, 132, 143, + 169, 184, 202, 213, 214, 213, 215, 218, 215, 215, 215, 217, 221, 223, 221, 220, + 222, 222, 222, 222, 224, 225, 227, 228, 229, 229, 230, 230, 231, 231, 231, 231, + 235, 235, 235, 235, 234, 234, 233, 233, 230, 229, 228, 227, 226, 225, 223, 223, + 224, 224, 222, 218, 216, 212, 208, 206, 205, 203, 199, 198, 198, 197, 196, 194, + 195, 200, 205, 205, 199, 192, 187, 186, 173, 158, 145, 126, 92, 77, 78, 71, + 72, 94, 88, 85, 80, 58, 88, 81, 94, 205, 246, 245, 255, 255, 255, 255, + 255, 254, 252, 251, 249, 242, 143, 129, 125, 101, 83, 104, 94, 85, 95, 85, + 100, 113, 135, 152, 177, 191, 205, 215, 215, 215, 216, 219, 216, 216, 216, 219, + 221, 222, 221, 219, 224, 224, 224, 224, 225, 227, 229, 229, 231, 231, 230, 232, + 231, 232, 232, 233, 235, 236, 234, 235, 233, 234, 233, 234, 230, 230, 229, 229, + 227, 226, 225, 224, 226, 224, 223, 220, 216, 213, 210, 208, 208, 204, 200, 199, + 198, 198, 196, 195, 194, 200, 205, 205, 200, 193, 189, 187, 179, 166, 146, 123, + 96, 84, 82, 78, 78, 85, 84, 78, 86, 65, 95, 91, 111, 203, 245, 247, + 255, 255, 255, 255, 255, 255, 252, 251, 253, 234, 131, 121, 110, 109, 102, 114, + 100, 90, 85, 80, 90, 106, 135, 156, 183, 194, 206, 213, 213, 214, 215, 218, + 218, 218, 218, 220, 222, 223, 222, 220, 226, 226, 226, 226, 228, 229, 231, 232, + 233, 233, 234, 234, 234, 235, 235, 235, 236, 236, 235, 234, 233, 233, 234, 234, + 232, 231, 231, 230, 229, 227, 227, 225, 222, 222, 221, 221, 218, 216, 215, 213, + 209, 205, 201, 200, 199, 198, 197, 195, 196, 199, 202, 203, 200, 195, 191, 188, + 181, 170, 145, 117, 98, 88, 79, 74, 85, 67, 78, 66, 89, 74, 98, 110, + 170, 224, 249, 245, 255, 255, 255, 255, 255, 255, 252, 251, 252, 220, 118, 112, + 91, 108, 106, 101, 88, 85, 77, 84, 94, 112, 142, 164, 188, 197, 207, 212, + 214, 214, 216, 219, 222, 221, 220, 222, 224, 225, 225, 224, 226, 226, 227, 229, + 230, 232, 233, 234, 236, 237, 238, 238, 239, 239, 239, 239, 238, 237, 235, 234, + 234, 234, 235, 235, 235, 234, 232, 231, 231, 228, 227, 227, 222, 223, 222, 221, + 220, 219, 217, 215, 210, 206, 202, 200, 200, 199, 197, 195, 199, 199, 200, 201, + 200, 198, 193, 189, 182, 173, 147, 120, 108, 94, 74, 63, 91, 64, 102, 75, + 85, 69, 98, 147, 227, 244, 250, 245, 255, 255, 255, 255, 255, 255, 253, 251, + 243, 207, 111, 109, 79, 101, 97, 74, 72, 75, 72, 91, 103, 122, 152, 173, + 194, 201, 210, 215, 217, 216, 219, 221, 226, 224, 223, 223, 225, 227, 227, 227, + 226, 226, 228, 229, 230, 232, 234, 235, 238, 240, 240, 240, 241, 241, 241, 242, + 238, 237, 235, 234, 233, 234, 235, 236, 236, 236, 234, 232, 231, 230, 228, 227, + 225, 225, 224, 222, 220, 217, 215, 213, 211, 207, 203, 201, 200, 199, 197, 195, + 201, 199, 198, 199, 201, 200, 195, 190, 183, 177, 152, 127, 118, 100, 71, 54, + 83, 66, 134, 93, 81, 60, 104, 194, 251, 248, 249, 246, 255, 255, 255, 255, + 255, 255, 253, 252, 254, 192, 119, 93, 96, 82, 116, 83, 85, 78, 87, 100, + 103, 121, 155, 177, 194, 200, 208, 214, 217, 217, 219, 221, 221, 222, 222, 224, + 225, 227, 228, 229, 228, 229, 230, 231, 233, 235, 237, 237, 240, 241, 242, 242, + 242, 241, 240, 239, 240, 238, 235, 232, 231, 231, 231, 232, 236, 235, 233, 232, + 233, 234, 234, 235, 229, 228, 224, 221, 219, 218, 217, 216, 216, 211, 205, 202, + 200, 199, 197, 195, 199, 199, 198, 197, 195, 193, 191, 189, 183, 187, 149, 138, + 102, 95, 77, 61, 73, 63, 131, 92, 90, 64, 97, 214, 247, 249, 249, 252, + 255, 255, 255, 255, 255, 255, 254, 252, 246, 215, 142, 101, 83, 87, 101, 96, + 88, 78, 81, 91, 99, 125, 157, 174, 196, 202, 209, 215, 216, 218, 219, 220, + 222, 221, 220, 220, 221, 223, 225, 226, 226, 228, 230, 233, 235, 236, 237, 237, + 241, 243, 243, 243, 243, 242, 241, 240, 237, 236, 233, 231, 229, 230, 231, 231, + 236, 235, 233, 233, 234, 233, 234, 235, 231, 231, 228, 225, 223, 222, 221, 219, + 214, 210, 205, 202, 201, 199, 195, 193, 198, 198, 198, 198, 197, 195, 194, 193, + 180, 186, 150, 136, 100, 91, 83, 73, 75, 72, 120, 89, 93, 62, 100, 204, + 248, 250, 250, 255, 255, 255, 255, 255, 255, 255, 255, 252, 244, 238, 165, 100, + 78, 109, 92, 110, 97, 87, 83, 88, 104, 139, 173, 182, 201, 205, 210, 215, + 216, 217, 218, 219, 222, 221, 220, 220, 220, 222, 224, 226, 226, 228, 231, 234, + 236, 237, 237, 237, 240, 240, 240, 241, 240, 239, 238, 238, 239, 237, 236, 234, + 234, 234, 235, 236, 235, 235, 234, 234, 234, 233, 235, 234, 230, 230, 228, 228, + 225, 223, 221, 220, 213, 210, 207, 205, 204, 200, 196, 192, 195, 196, 196, 196, + 196, 195, 194, 193, 182, 189, 157, 139, 101, 85, 87, 86, 75, 85, 105, 88, + 106, 72, 126, 210, 251, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 252, 251, 186, 91, 84, 127, 95, 116, 97, 91, 88, 91, 108, 152, 188, 196, + 207, 209, 213, 215, 216, 217, 218, 218, 221, 222, 224, 225, 226, 227, 228, 228, + 232, 232, 233, 234, 235, 236, 237, 238, 235, 237, 236, 237, 236, 236, 234, 234, + 238, 238, 236, 237, 236, 237, 238, 239, 236, 236, 235, 235, 234, 234, 235, 234, + 227, 226, 226, 226, 225, 222, 220, 218, 216, 214, 212, 211, 209, 205, 199, 195, + 193, 193, 193, 193, 192, 191, 190, 189, 186, 193, 171, 149, 109, 82, 88, 92, + 75, 94, 90, 88, 120, 92, 174, 238, 253, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 252, 255, 252, 215, 94, 86, 117, 97, 114, 85, 84, 87, 93, + 111, 155, 194, 203, 212, 212, 213, 215, 216, 217, 218, 219, 221, 224, 229, 233, + 235, 234, 233, 231, 237, 236, 233, 231, 231, 233, 236, 237, 233, 234, 234, 234, + 234, 233, 232, 231, 232, 232, 231, 231, 232, 232, 233, 233, 234, 234, 234, 235, + 235, 234, 233, 233, 224, 224, 225, 224, 224, 222, 219, 217, 218, 218, 216, 216, + 214, 210, 203, 198, 195, 195, 194, 193, 191, 189, 188, 186, 187, 194, 182, 161, + 124, 83, 89, 95, 86, 99, 82, 86, 117, 102, 209, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 252, 251, 245, 123, 81, 88, 93, 106, + 83, 81, 90, 106, 126, 164, 199, 209, 216, 214, 213, 215, 217, 219, 219, 220, + 221, 225, 230, 234, 236, 235, 233, 230, 235, 233, 230, 228, 228, 230, 232, 234, + 232, 232, 232, 233, 232, 231, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, + 230, 231, 232, 232, 232, 232, 230, 229, 223, 224, 223, 223, 222, 221, 220, 220, + 220, 219, 217, 217, 215, 211, 205, 200, 199, 198, 197, 196, 194, 191, 189, 189, + 185, 190, 186, 170, 140, 89, 93, 95, 99, 99, 86, 85, 99, 97, 221, 250, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 247, 253, 168, + 82, 82, 96, 92, 92, 85, 97, 124, 150, 180, 205, 212, 218, 215, 213, 214, + 217, 221, 221, 220, 223, 224, 226, 227, 229, 228, 226, 225, 224, 224, 225, 226, + 227, 228, 228, 228, 227, 226, 226, 226, 226, 225, 224, 224, 228, 228, 228, 229, + 228, 228, 227, 227, 224, 225, 226, 227, 227, 226, 225, 224, 221, 220, 219, 218, + 218, 218, 218, 218, 218, 217, 214, 213, 211, 208, 202, 198, 197, 197, 197, 196, + 195, 193, 191, 191, 189, 188, 187, 173, 149, 91, 93, 90, 108, 93, 94, 89, + 85, 96, 230, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 242, 244, 200, 91, 97, 104, 82, 100, 87, 100, 134, 165, 191, 207, 209, + 218, 215, 212, 213, 217, 220, 221, 220, 224, 224, 222, 220, 218, 218, 218, 219, + 212, 215, 220, 224, 226, 226, 224, 222, 219, 218, 218, 219, 218, 218, 216, 216, + 222, 222, 223, 223, 223, 222, 221, 220, 220, 221, 222, 223, 223, 221, 219, 219, + 216, 215, 214, 213, 213, 214, 215, 216, 216, 215, 212, 210, 208, 204, 199, 196, + 193, 194, 194, 194, 194, 193, 192, 191, 196, 189, 186, 171, 151, 89, 90, 84, + 109, 87, 102, 95, 82, 103, 242, 253, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 239, 245, 221, 113, 102, 107, 84, 99, 115, 94, 153, + 177, 194, 220, 213, 215, 222, 219, 217, 221, 216, 213, 222, 223, 215, 211, 213, + 212, 208, 206, 210, 204, 207, 208, 210, 215, 224, 224, 220, 208, 210, 204, 200, + 212, 190, 215, 203, 214, 218, 216, 215, 221, 217, 215, 223, 221, 214, 215, 220, + 219, 211, 209, 213, 210, 213, 202, 212, 198, 208, 202, 213, 206, 217, 217, 206, + 198, 201, 201, 197, 197, 186, 199, 191, 199, 189, 201, 189, 189, 188, 199, 180, + 172, 105, 106, 91, 106, 80, 118, 83, 99, 100, 245, 251, 254, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 244, 252, 240, 152, 110, 106, 82, + 98, 110, 101, 155, 180, 202, 219, 216, 223, 224, 214, 207, 216, 221, 216, 212, + 200, 191, 183, 181, 177, 172, 170, 173, 170, 180, 188, 188, 187, 188, 187, 186, + 171, 170, 157, 166, 171, 157, 170, 165, 202, 216, 218, 214, 217, 216, 217, 226, + 213, 211, 208, 202, 200, 199, 193, 186, 191, 190, 183, 191, 188, 194, 194, 201, + 196, 196, 189, 181, 177, 177, 176, 173, 190, 186, 196, 194, 195, 191, 197, 190, + 193, 191, 202, 186, 178, 103, 98, 86, 108, 78, 108, 103, 114, 131, 238, 255, + 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 252, 249, + 191, 111, 100, 83, 101, 105, 113, 162, 188, 214, 215, 222, 222, 219, 211, 208, + 219, 228, 218, 201, 180, 172, 163, 161, 158, 155, 156, 158, 161, 174, 184, 178, + 166, 159, 156, 155, 135, 130, 118, 135, 136, 126, 131, 133, 172, 205, 218, 211, + 211, 216, 219, 225, 210, 210, 199, 185, 184, 187, 177, 160, 170, 161, 161, 161, + 172, 170, 176, 179, 187, 190, 190, 186, 173, 163, 164, 172, 168, 177, 182, 192, + 186, 189, 186, 188, 199, 194, 203, 193, 189, 105, 95, 88, 97, 79, 94, 99, + 115, 174, 234, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 246, 246, 218, 115, 98, 92, 108, 107, 128, 176, 199, 226, 215, 227, + 218, 212, 213, 215, 207, 196, 184, 169, 144, 138, 132, 128, 125, 123, 120, 119, + 119, 128, 132, 124, 111, 106, 104, 105, 94, 85, 89, 97, 105, 87, 96, 103, + 129, 181, 212, 211, 211, 216, 219, 220, 206, 195, 179, 168, 166, 165, 154, 141, + 145, 129, 130, 122, 139, 127, 135, 135, 150, 146, 147, 154, 149, 136, 128, 131, + 136, 155, 158, 180, 178, 196, 195, 210, 199, 194, 203, 197, 199, 112, 99, 99, + 84, 87, 98, 79, 124, 216, 246, 250, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 245, 247, 240, 138, 100, 99, 115, 116, 141, 191, + 211, 233, 217, 230, 228, 214, 217, 212, 172, 135, 129, 129, 121, 120, 117, 113, + 109, 104, 96, 90, 76, 77, 71, 63, 59, 63, 66, 67, 71, 59, 83, 75, + 91, 67, 83, 92, 90, 155, 203, 212, 215, 220, 215, 211, 196, 168, 147, 145, + 143, 131, 122, 121, 114, 93, 91, 81, 94, 76, 83, 81, 104, 85, 75, 89, + 102, 100, 87, 79, 68, 87, 81, 101, 113, 145, 158, 189, 198, 197, 203, 198, + 208, 121, 105, 110, 85, 92, 108, 83, 172, 242, 255, 250, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 246, 250, 249, 170, 100, 94, + 116, 124, 142, 202, 221, 231, 223, 229, 235, 219, 219, 199, 141, 107, 118, 131, + 127, 130, 132, 132, 133, 131, 124, 117, 99, 91, 77, 64, 61, 65, 66, 64, + 62, 55, 81, 70, 80, 71, 76, 84, 77, 144, 197, 214, 220, 222, 214, 207, + 191, 155, 129, 129, 123, 106, 99, 107, 91, 73, 66, 62, 66, 52, 55, 60, + 68, 66, 64, 65, 63, 66, 76, 88, 82, 92, 73, 72, 91, 115, 133, 167, + 189, 199, 204, 198, 216, 131, 110, 114, 90, 89, 105, 106, 230, 246, 250, 252, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 248, 250, + 246, 202, 104, 94, 110, 127, 136, 205, 224, 224, 228, 226, 231, 221, 221, 192, + 136, 124, 148, 151, 137, 142, 146, 148, 151, 154, 149, 142, 131, 123, 106, 90, + 83, 82, 79, 73, 64, 68, 74, 79, 68, 93, 69, 78, 92, 150, 196, 216, + 224, 224, 214, 209, 194, 163, 133, 119, 108, 95, 91, 95, 80, 68, 60, 70, + 64, 61, 61, 75, 58, 74, 83, 76, 64, 70, 91, 110, 107, 113, 97, 80, + 103, 100, 105, 126, 170, 193, 203, 197, 222, 141, 116, 113, 92, 99, 96, 117, + 252, 244, 245, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 253, 249, 242, 226, 115, 103, 104, 127, 128, 207, 226, 219, 231, 224, + 224, 223, 225, 188, 138, 144, 166, 151, 164, 167, 166, 162, 161, 163, 156, 148, + 139, 137, 126, 115, 106, 103, 99, 94, 97, 107, 92, 116, 84, 139, 90, 98, + 113, 160, 199, 217, 227, 226, 216, 214, 196, 173, 139, 111, 96, 91, 87, 85, + 74, 68, 58, 79, 68, 75, 75, 95, 92, 95, 95, 98, 110, 125, 125, 115, + 119, 131, 130, 113, 143, 120, 110, 117, 152, 185, 199, 195, 226, 151, 121, 115, + 94, 120, 94, 114, 247, 249, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 250, 246, 251, 238, 114, 88, 93, 113, 164, 194, + 235, 230, 235, 225, 222, 221, 205, 178, 160, 163, 173, 178, 161, 169, 174, 170, + 159, 148, 128, 111, 116, 110, 107, 91, 93, 84, 106, 89, 77, 116, 109, 140, + 107, 122, 108, 107, 129, 164, 209, 215, 232, 221, 234, 223, 198, 183, 139, 112, + 93, 88, 102, 97, 107, 69, 67, 90, 80, 56, 69, 100, 84, 104, 108, 105, + 114, 128, 140, 152, 154, 155, 159, 161, 150, 134, 132, 138, 150, 171, 202, 215, + 211, 167, 113, 119, 91, 127, 103, 127, 241, 247, 243, 249, 254, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 248, 241, 242, 239, 89, 107, + 91, 109, 163, 200, 232, 223, 228, 221, 221, 212, 193, 172, 167, 178, 186, 186, + 181, 167, 151, 137, 121, 112, 118, 131, 121, 102, 99, 88, 84, 78, 81, 80, + 87, 99, 78, 107, 107, 134, 137, 135, 140, 180, 217, 220, 236, 227, 238, 222, + 201, 189, 151, 132, 120, 113, 119, 108, 85, 74, 69, 67, 64, 73, 82, 76, + 72, 97, 99, 88, 94, 117, 140, 160, 193, 169, 164, 181, 180, 154, 143, 150, + 159, 174, 200, 210, 209, 168, 116, 121, 85, 127, 114, 172, 237, 234, 244, 255, + 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 244, + 239, 244, 79, 118, 83, 96, 153, 205, 233, 223, 229, 229, 224, 209, 185, 169, + 174, 190, 193, 188, 189, 151, 120, 117, 120, 110, 104, 106, 101, 68, 68, 70, + 66, 69, 52, 77, 69, 73, 63, 76, 84, 97, 125, 139, 147, 201, 229, 227, + 241, 236, 245, 223, 219, 209, 173, 154, 138, 122, 115, 95, 65, 67, 65, 53, + 51, 71, 73, 49, 62, 72, 62, 56, 76, 106, 125, 138, 150, 168, 184, 187, + 187, 189, 187, 180, 171, 181, 199, 207, 210, 175, 122, 124, 97, 117, 123, 221, + 250, 247, 242, 241, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, + 252, 249, 246, 237, 232, 236, 110, 106, 96, 96, 148, 211, 233, 226, 230, 232, + 230, 215, 191, 175, 179, 190, 187, 175, 170, 138, 112, 118, 129, 124, 106, 93, + 102, 56, 47, 54, 50, 68, 43, 95, 83, 78, 73, 70, 76, 62, 96, 108, + 140, 216, 237, 237, 243, 240, 250, 228, 231, 222, 187, 160, 134, 108, 97, 77, + 70, 65, 73, 76, 62, 53, 48, 41, 58, 53, 46, 60, 87, 100, 107, 121, + 135, 164, 187, 188, 186, 187, 177, 161, 182, 188, 201, 208, 215, 182, 127, 123, + 120, 109, 152, 227, 241, 249, 239, 235, 253, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 253, 230, 214, 204, 206, 211, 169, 102, 126, 113, 154, 219, + 230, 227, 226, 222, 230, 222, 205, 188, 182, 183, 174, 161, 146, 141, 126, 113, + 108, 119, 133, 141, 150, 92, 58, 47, 44, 70, 59, 128, 149, 117, 89, 72, + 89, 71, 96, 91, 125, 222, 240, 244, 244, 239, 249, 234, 228, 221, 188, 158, + 124, 97, 94, 81, 86, 86, 107, 116, 85, 47, 38, 43, 57, 48, 57, 99, + 126, 114, 107, 126, 128, 108, 123, 178, 209, 197, 184, 189, 185, 191, 203, 210, + 219, 188, 128, 118, 124, 107, 191, 199, 197, 219, 228, 252, 253, 254, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 252, 255, 214, 180, 167, 174, 190, 217, 138, + 137, 122, 159, 226, 226, 231, 231, 224, 224, 224, 215, 199, 187, 180, 167, 155, + 142, 144, 132, 115, 112, 131, 157, 171, 178, 126, 73, 39, 45, 74, 89, 156, + 172, 140, 101, 72, 81, 72, 106, 109, 121, 227, 236, 249, 246, 237, 247, 236, + 229, 227, 195, 160, 124, 95, 96, 87, 90, 106, 134, 135, 97, 60, 45, 39, + 65, 41, 50, 116, 167, 151, 115, 111, 148, 129, 135, 170, 190, 180, 173, 181, + 185, 192, 203, 209, 218, 189, 127, 112, 112, 110, 200, 184, 190, 205, 203, 224, + 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 253, 252, 202, 159, 147, + 150, 179, 215, 186, 125, 121, 164, 232, 222, 235, 238, 232, 220, 225, 220, 205, + 192, 182, 169, 156, 153, 150, 146, 143, 141, 145, 155, 165, 174, 148, 97, 55, + 76, 93, 122, 168, 152, 142, 114, 90, 88, 87, 120, 126, 132, 235, 228, 248, + 247, 235, 242, 235, 233, 229, 198, 167, 131, 101, 96, 86, 93, 107, 132, 138, + 110, 79, 59, 44, 65, 53, 66, 128, 182, 172, 129, 109, 107, 128, 149, 159, + 170, 186, 198, 199, 190, 196, 206, 209, 218, 190, 129, 114, 106, 140, 187, 194, + 198, 189, 175, 187, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 238, 193, 149, 140, 137, 170, 185, 211, 122, 126, 174, 239, 216, 229, 235, 227, + 222, 227, 221, 207, 195, 187, 172, 158, 161, 166, 175, 174, 151, 131, 143, 169, + 175, 174, 134, 93, 121, 118, 146, 167, 153, 148, 124, 120, 130, 137, 142, 123, + 147, 244, 223, 247, 249, 235, 239, 231, 223, 221, 192, 167, 137, 111, 102, 86, + 103, 98, 119, 143, 129, 95, 70, 59, 55, 85, 122, 159, 177, 162, 144, 144, + 113, 117, 136, 164, 182, 184, 183, 185, 196, 203, 212, 211, 219, 193, 133, 119, + 114, 183, 186, 205, 179, 151, 159, 194, 252, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 253, 251, 244, 186, 150, 126, 138, 173, 191, 203, 137, 132, 178, 232, + 218, 237, 230, 232, 225, 226, 222, 215, 208, 204, 197, 190, 190, 190, 190, 186, + 177, 163, 150, 140, 162, 173, 153, 128, 138, 148, 147, 152, 152, 149, 147, 149, + 155, 158, 155, 152, 176, 230, 234, 234, 252, 244, 234, 229, 217, 214, 206, 190, + 168, 149, 138, 134, 134, 138, 133, 129, 140, 150, 137, 112, 116, 122, 148, 149, + 154, 136, 157, 176, 166, 160, 163, 178, 188, 189, 192, 198, 202, 200, 203, 212, + 211, 187, 146, 115, 117, 175, 188, 194, 160, 145, 150, 170, 252, 254, 254, 254, + 255, 255, 255, 255, 255, 255, 253, 251, 237, 192, 143, 142, 140, 197, 185, 187, + 143, 132, 181, 227, 224, 238, 236, 235, 226, 228, 225, 220, 216, 214, 210, 204, + 201, 202, 202, 199, 192, 180, 169, 162, 155, 163, 155, 142, 144, 145, 139, 135, + 153, 157, 160, 163, 162, 161, 162, 163, 196, 240, 236, 237, 254, 246, 230, 219, + 217, 212, 202, 187, 172, 163, 162, 165, 141, 145, 141, 139, 150, 163, 153, 132, + 125, 126, 151, 125, 146, 134, 173, 182, 185, 179, 177, 182, 188, 193, 199, 207, + 206, 204, 206, 215, 214, 191, 152, 120, 111, 186, 199, 184, 144, 144, 151, 158, + 252, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 251, 236, 199, 133, 148, + 135, 217, 185, 178, 158, 136, 185, 222, 231, 235, 239, 233, 226, 229, 229, 224, + 223, 225, 222, 218, 216, 215, 214, 210, 203, 195, 186, 180, 180, 169, 164, 157, + 148, 151, 157, 158, 165, 172, 178, 176, 170, 172, 178, 189, 215, 246, 236, 239, + 254, 247, 230, 213, 212, 209, 203, 194, 185, 181, 184, 188, 163, 165, 158, 151, + 155, 164, 155, 137, 139, 137, 160, 118, 151, 142, 189, 187, 198, 200, 198, 195, + 194, 202, 208, 211, 211, 209, 209, 217, 218, 199, 161, 128, 112, 188, 202, 186, + 141, 140, 151, 164, 252, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 251, + 241, 203, 135, 138, 132, 220, 197, 185, 172, 141, 190, 218, 235, 229, 237, 228, + 226, 229, 229, 227, 228, 230, 229, 226, 223, 221, 218, 213, 206, 197, 190, 186, + 190, 168, 166, 168, 153, 156, 172, 174, 182, 187, 188, 184, 180, 186, 201, 214, + 220, 242, 235, 241, 253, 243, 231, 215, 202, 205, 207, 206, 200, 193, 189, 187, + 182, 181, 173, 163, 161, 166, 160, 148, 160, 157, 171, 144, 167, 162, 191, 190, + 196, 208, 213, 207, 205, 210, 212, 208, 215, 214, 212, 218, 222, 205, 168, 133, + 114, 175, 193, 196, 149, 129, 145, 180, 252, 254, 254, 254, 255, 255, 255, 255, + 255, 255, 255, 252, 244, 205, 158, 137, 147, 214, 210, 194, 173, 138, 187, 218, + 235, 230, 236, 228, 228, 232, 232, 230, 230, 235, 235, 232, 224, 222, 219, 214, + 208, 202, 197, 194, 196, 179, 188, 198, 183, 178, 185, 184, 194, 196, 197, 197, + 199, 207, 217, 225, 220, 237, 234, 244, 246, 232, 228, 215, 202, 205, 211, 214, + 208, 200, 192, 187, 185, 187, 182, 175, 175, 181, 182, 177, 188, 182, 180, 183, + 182, 183, 190, 202, 195, 207, 213, 208, 207, 213, 215, 211, 216, 214, 213, 217, + 223, 209, 171, 133, 110, 173, 194, 200, 153, 132, 149, 188, 253, 254, 254, 254, + 255, 255, 255, 255, 255, 255, 255, 252, 245, 209, 189, 158, 175, 211, 211, 187, + 159, 128, 176, 220, 233, 232, 236, 233, 231, 235, 235, 233, 234, 237, 238, 235, + 227, 225, 222, 221, 217, 214, 210, 208, 213, 203, 203, 203, 193, 189, 196, 203, + 200, 203, 207, 213, 218, 221, 222, 222, 224, 235, 237, 248, 241, 223, 223, 212, + 209, 210, 211, 211, 210, 206, 202, 199, 190, 192, 189, 182, 180, 184, 188, 189, + 204, 197, 185, 200, 187, 195, 193, 214, 203, 205, 205, 203, 204, 208, 213, 215, + 212, 212, 211, 215, 221, 208, 168, 128, 113, 191, 212, 203, 156, 152, 172, 197, + 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 251, 249, 217, 209, 181, + 195, 209, 198, 168, 143, 120, 166, 224, 226, 235, 231, 234, 229, 232, 233, 231, + 231, 237, 238, 236, 230, 230, 228, 227, 224, 222, 218, 216, 211, 209, 194, 183, + 182, 183, 192, 209, 211, 213, 215, 217, 221, 222, 222, 223, 228, 234, 237, 252, + 242, 222, 223, 212, 214, 213, 212, 213, 212, 210, 207, 207, 201, 203, 199, 188, + 180, 179, 182, 184, 197, 197, 194, 197, 192, 198, 204, 213, 211, 207, 204, 206, + 208, 207, 209, 213, 209, 209, 208, 212, 218, 206, 163, 121, 123, 197, 217, 209, + 166, 167, 192, 221, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 253, 225, 213, 193, 196, 206, 183, 155, 138, 118, 161, 227, 221, 234, 225, 231, + 224, 228, 227, 226, 228, 234, 236, 234, 234, 233, 231, 230, 226, 222, 217, 215, + 207, 220, 211, 200, 206, 205, 203, 219, 225, 224, 219, 215, 212, 216, 222, 231, + 231, 232, 236, 254, 246, 227, 228, 214, 214, 213, 215, 216, 216, 212, 205, 201, + 209, 211, 207, 196, 186, 183, 185, 189, 178, 189, 203, 190, 200, 200, 211, 204, + 215, 208, 208, 216, 218, 208, 203, 204, 205, 207, 206, 209, 216, 203, 160, 115, + 129, 184, 202, 212, 175, 163, 193, 242, 253, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 250, 250, 243, 228, 208, 201, 208, 190, 150, 129, 136, 146, 227, + 223, 236, 229, 243, 236, 235, 230, 228, 228, 229, 232, 233, 230, 234, 233, 230, + 232, 236, 232, 222, 216, 219, 215, 211, 214, 223, 226, 223, 229, 229, 226, 221, + 216, 217, 223, 229, 225, 234, 244, 248, 242, 232, 223, 218, 219, 212, 211, 217, + 220, 216, 213, 214, 214, 209, 204, 204, 204, 201, 193, 186, 186, 190, 193, 196, + 196, 199, 204, 209, 211, 213, 216, 215, 212, 208, 205, 203, 205, 208, 209, 211, + 217, 201, 151, 99, 144, 176, 194, 219, 171, 187, 233, 242, 253, 254, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 250, 254, 248, 237, 219, 208, 211, 193, 154, + 129, 155, 141, 223, 227, 229, 235, 236, 232, 231, 228, 226, 225, 227, 230, 232, + 232, 235, 236, 234, 235, 238, 235, 228, 224, 225, 223, 220, 223, 229, 231, 227, + 228, 229, 226, 222, 217, 218, 222, 227, 226, 234, 244, 248, 243, 234, 225, 220, + 215, 211, 211, 217, 218, 213, 208, 208, 205, 203, 202, 205, 209, 208, 203, 197, + 194, 198, 202, 203, 202, 204, 208, 211, 211, 213, 216, 215, 213, 209, 207, 206, + 206, 210, 211, 213, 213, 196, 156, 117, 145, 177, 195, 215, 177, 199, 243, 249, + 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 250, 253, 251, 246, 231, + 216, 214, 196, 162, 131, 175, 141, 213, 231, 226, 238, 230, 229, 227, 225, 224, + 224, 226, 228, 229, 232, 235, 235, 235, 236, 239, 237, 232, 232, 233, 232, 231, + 232, 237, 235, 233, 228, 228, 226, 222, 219, 218, 220, 225, 227, 234, 243, 247, + 244, 236, 228, 222, 217, 214, 215, 219, 218, 212, 206, 204, 203, 203, 205, 210, + 216, 217, 212, 209, 204, 208, 211, 212, 211, 210, 211, 212, 210, 213, 216, 216, + 213, 211, 209, 210, 208, 209, 212, 216, 214, 198, 173, 152, 154, 182, 199, 212, + 190, 217, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 248, 249, 250, 240, 224, 216, 201, 173, 138, 181, 156, 200, 228, 234, 232, 229, + 227, 226, 223, 222, 223, 225, 227, 228, 229, 230, 231, 232, 234, 235, 234, 233, + 235, 235, 235, 236, 238, 239, 237, 233, 231, 228, 223, 219, 216, 217, 222, 225, + 227, 234, 242, 245, 243, 237, 229, 224, 221, 220, 219, 219, 217, 212, 206, 204, + 212, 211, 211, 213, 215, 216, 214, 212, 211, 214, 216, 216, 215, 213, 210, 209, + 210, 212, 215, 215, 214, 212, 212, 212, 212, 208, 210, 218, 220, 211, 194, 186, + 165, 189, 208, 214, 207, 234, 254, 249, 254, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 246, 247, 252, 248, 232, 224, 212, 190, 151, 177, 178, 192, + 224, 244, 222, 233, 227, 226, 224, 224, 224, 225, 226, 228, 226, 226, 229, 231, + 231, 231, 232, 233, 234, 233, 233, 236, 238, 236, 233, 231, 232, 227, 219, 214, + 213, 217, 223, 228, 229, 233, 239, 242, 241, 236, 228, 223, 222, 222, 221, 217, + 213, 210, 208, 206, 218, 215, 211, 209, 209, 210, 211, 211, 213, 215, 215, 215, + 213, 210, 206, 204, 208, 211, 213, 214, 213, 212, 212, 213, 216, 207, 205, 215, + 223, 220, 206, 198, 166, 185, 210, 212, 224, 245, 253, 244, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 249, 247, 254, 254, 241, 232, 223, 207, + 167, 176, 198, 199, 223, 247, 220, 236, 229, 228, 226, 224, 224, 225, 225, 225, + 227, 225, 228, 231, 230, 228, 230, 234, 231, 228, 228, 232, 235, 232, 229, 229, + 230, 225, 216, 212, 214, 219, 224, 228, 228, 232, 236, 238, 238, 233, 225, 220, + 219, 221, 220, 214, 209, 207, 204, 201, 213, 211, 207, 205, 205, 207, 209, 211, + 213, 213, 212, 211, 210, 208, 205, 202, 207, 209, 211, 211, 210, 208, 209, 210, + 217, 209, 205, 211, 221, 221, 204, 189, 165, 175, 209, 212, 237, 251, 250, 246, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 247, 253, 254, + 245, 237, 229, 217, 183, 189, 209, 216, 227, 237, 230, 232, 229, 228, 225, 224, + 223, 222, 223, 223, 225, 223, 225, 228, 226, 223, 225, 232, 230, 225, 226, 231, + 232, 229, 227, 229, 225, 220, 215, 214, 217, 221, 223, 227, 228, 230, 231, 235, + 234, 230, 223, 216, 213, 220, 223, 218, 212, 209, 203, 197, 208, 209, 209, 210, + 209, 210, 211, 213, 213, 211, 208, 208, 210, 209, 206, 204, 204, 206, 207, 207, + 206, 205, 207, 209, 210, 211, 210, 210, 218, 221, 202, 181, 174, 175, 211, 214, + 249, 254, 247, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 246, 249, 253, 244, 235, 229, 218, 192, 202, 213, 230, 232, 225, 241, 228, + 229, 228, 226, 224, 222, 221, 221, 220, 221, 219, 221, 224, 222, 217, 220, 227, + 230, 224, 224, 230, 232, 227, 227, 230, 220, 217, 216, 218, 222, 224, 224, 224, + 228, 229, 230, 231, 232, 229, 220, 215, 210, 221, 227, 224, 216, 211, 204, 195, + 207, 210, 214, 216, 216, 215, 214, 214, 214, 211, 207, 207, 209, 209, 207, 205, + 202, 204, 206, 205, 204, 203, 205, 207, 203, 211, 215, 213, 218, 222, 206, 181, + 189, 183, 218, 219, 254, 255, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 248, 253, 249, 242, 228, 214, 236, 205, 216, 219, 224, + 234, 232, 228, 234, 227, 226, 224, 223, 221, 220, 219, 219, 216, 218, 221, 224, + 224, 222, 220, 219, 226, 226, 225, 224, 223, 221, 218, 217, 218, 218, 219, 222, + 224, 226, 226, 225, 225, 229, 222, 220, 229, 228, 212, 204, 212, 216, 217, 216, + 218, 220, 209, 195, 204, 204, 207, 210, 211, 212, 212, 213, 209, 208, 206, 205, + 204, 203, 203, 203, 200, 203, 206, 207, 205, 205, 206, 208, 212, 210, 217, 223, + 223, 222, 207, 180, 183, 198, 219, 238, 251, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 253, 248, 243, 230, 215, 233, + 216, 223, 221, 223, 233, 233, 227, 232, 227, 226, 225, 224, 221, 221, 219, 219, + 216, 218, 220, 222, 223, 222, 219, 218, 218, 219, 221, 221, 220, 218, 215, 213, + 219, 219, 218, 220, 223, 225, 224, 223, 207, 221, 223, 222, 225, 219, 215, 221, + 214, 218, 218, 215, 220, 228, 227, 219, 202, 203, 206, 208, 210, 211, 211, 211, + 206, 207, 205, 204, 203, 202, 201, 201, 201, 203, 205, 207, 205, 205, 206, 209, + 210, 207, 214, 221, 220, 221, 208, 184, 196, 204, 221, 242, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 249, + 244, 232, 215, 230, 227, 228, 220, 220, 231, 233, 227, 229, 227, 227, 225, 224, + 221, 221, 218, 219, 215, 217, 218, 219, 220, 219, 216, 215, 213, 215, 217, 219, + 219, 217, 215, 214, 211, 217, 226, 234, 239, 235, 227, 220, 222, 218, 207, 209, + 222, 217, 202, 198, 191, 202, 210, 211, 216, 224, 221, 213, 200, 201, 204, 207, + 209, 210, 209, 210, 204, 205, 204, 203, 201, 200, 199, 198, 201, 203, 204, 206, + 204, 204, 205, 207, 209, 206, 213, 220, 218, 219, 212, 192, 210, 207, 220, 244, + 255, 253, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 253, 249, 245, 236, 217, 229, 232, 229, 216, 215, 229, 233, 228, 229, + 228, 227, 226, 224, 221, 219, 218, 218, 216, 216, 217, 217, 217, 216, 216, 215, + 216, 216, 216, 216, 216, 217, 217, 218, 222, 224, 228, 231, 230, 222, 210, 202, + 203, 207, 204, 205, 211, 207, 204, 214, 209, 213, 210, 203, 205, 218, 228, 229, + 198, 200, 202, 204, 206, 206, 205, 206, 201, 202, 201, 201, 199, 198, 196, 195, + 198, 200, 202, 204, 202, 202, 202, 204, 211, 206, 214, 220, 219, 220, 217, 203, + 219, 210, 218, 244, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 253, 246, 246, 242, 223, 234, 230, 224, 211, 211, + 225, 232, 227, 230, 229, 228, 226, 224, 221, 219, 218, 217, 218, 218, 217, 216, + 215, 215, 215, 215, 218, 216, 214, 212, 212, 215, 217, 220, 230, 228, 225, 224, + 224, 225, 223, 222, 210, 207, 195, 194, 208, 209, 198, 195, 193, 205, 212, 211, + 212, 218, 217, 211, 199, 200, 202, 204, 204, 204, 202, 202, 198, 199, 198, 198, + 196, 195, 194, 193, 194, 197, 199, 201, 200, 200, 201, 203, 211, 205, 213, 219, + 217, 217, 216, 207, 222, 212, 219, 244, 254, 250, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 249, 249, 231, 238, + 225, 219, 208, 208, 224, 231, 227, 230, 229, 228, 226, 224, 222, 219, 217, 216, + 218, 216, 213, 212, 211, 212, 213, 213, 215, 213, 211, 209, 211, 214, 219, 222, + 223, 226, 229, 230, 223, 209, 192, 179, 179, 194, 193, 186, 192, 195, 187, 181, + 184, 194, 198, 199, 204, 213, 215, 210, 204, 203, 205, 206, 204, 204, 201, 200, + 197, 197, 195, 193, 191, 191, 192, 192, 191, 194, 197, 200, 199, 200, 202, 204, + 210, 203, 210, 217, 212, 210, 211, 206, 221, 216, 225, 243, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, + 252, 251, 228, 230, 220, 218, 209, 210, 226, 230, 226, 230, 229, 228, 227, 224, + 222, 219, 217, 216, 215, 213, 210, 207, 206, 207, 208, 210, 210, 210, 212, 213, + 216, 220, 224, 225, 229, 232, 232, 222, 195, 156, 113, 86, 93, 165, 208, 193, + 169, 170, 190, 213, 161, 143, 112, 89, 100, 138, 177, 195, 210, 209, 211, 210, + 208, 205, 203, 201, 198, 196, 192, 189, 188, 188, 190, 192, 190, 193, 196, 200, + 201, 202, 204, 207, 210, 203, 210, 217, 210, 205, 206, 205, 222, 225, 233, 245, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 254, 249, 221, 218, 218, 219, 212, 214, 227, 229, 225, 228, + 230, 229, 227, 224, 222, 219, 216, 215, 214, 211, 208, 204, 203, 203, 206, 207, + 205, 209, 214, 219, 224, 227, 229, 229, 232, 229, 223, 210, 187, 157, 126, 107, + 123, 168, 190, 182, 187, 198, 182, 161, 142, 127, 99, 81, 94, 130, 163, 179, + 215, 215, 215, 213, 212, 207, 204, 202, 198, 195, 190, 187, 185, 187, 190, 192, + 191, 193, 197, 201, 202, 205, 207, 209, 212, 206, 213, 220, 212, 205, 207, 205, + 223, 230, 240, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 249, 242, 227, 210, 217, 213, 212, 216, + 223, 230, 231, 232, 230, 226, 224, 225, 222, 216, 214, 215, 217, 210, 205, 202, + 204, 206, 206, 205, 214, 215, 216, 219, 224, 227, 228, 227, 227, 230, 234, 226, + 198, 164, 143, 138, 149, 166, 185, 188, 187, 198, 191, 166, 149, 156, 143, 140, + 135, 136, 162, 173, 213, 217, 212, 209, 216, 212, 204, 206, 201, 198, 192, 188, + 186, 186, 188, 190, 192, 196, 201, 205, 205, 205, 204, 205, 208, 206, 217, 210, + 209, 214, 204, 208, 212, 226, 241, 251, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 246, 226, 205, + 207, 206, 210, 217, 226, 231, 231, 230, 230, 227, 225, 226, 222, 215, 213, 213, + 207, 206, 206, 207, 209, 211, 213, 212, 217, 219, 222, 226, 229, 230, 229, 228, + 228, 230, 230, 223, 199, 168, 148, 142, 146, 156, 173, 178, 175, 181, 179, 162, + 150, 160, 152, 153, 150, 149, 171, 177, 202, 210, 210, 211, 218, 217, 211, 217, + 203, 200, 194, 190, 187, 188, 190, 191, 188, 192, 198, 203, 205, 206, 207, 208, + 208, 204, 216, 211, 206, 206, 196, 203, 204, 222, 242, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 229, 206, 207, 205, 207, 212, 223, 231, 234, 235, 230, 227, 226, 226, + 222, 215, 211, 211, 199, 204, 208, 212, 213, 214, 216, 217, 216, 220, 224, 227, + 227, 226, 224, 224, 226, 226, 223, 218, 200, 178, 160, 154, 139, 138, 150, 159, + 154, 154, 155, 149, 132, 147, 147, 158, 161, 162, 183, 187, 202, 213, 215, 216, + 219, 215, 211, 216, 209, 205, 199, 194, 190, 190, 192, 193, 188, 192, 197, 203, + 204, 205, 206, 207, 206, 201, 216, 216, 211, 208, 199, 212, 199, 221, 243, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 236, 219, 216, 210, 202, 203, 213, 225, 234, 239, + 232, 228, 227, 227, 222, 214, 208, 209, 201, 205, 211, 213, 212, 211, 214, 216, + 219, 222, 224, 225, 223, 222, 223, 224, 225, 221, 218, 212, 202, 188, 174, 167, + 144, 127, 129, 140, 138, 134, 135, 135, 125, 141, 145, 159, 164, 166, 185, 188, + 199, 213, 217, 216, 218, 213, 208, 215, 214, 211, 204, 199, 194, 192, 193, 193, + 194, 197, 200, 204, 203, 204, 204, 205, 210, 204, 218, 220, 213, 206, 197, 213, + 207, 227, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 225, 218, 211, 211, + 217, 226, 232, 235, 232, 228, 226, 226, 221, 213, 208, 210, 206, 210, 214, 215, + 213, 213, 215, 218, 222, 221, 220, 218, 218, 219, 223, 225, 223, 220, 216, 209, + 201, 192, 182, 173, 158, 129, 121, 132, 132, 128, 128, 128, 148, 159, 157, 167, + 167, 164, 179, 179, 187, 202, 208, 210, 215, 211, 209, 217, 213, 211, 206, 201, + 197, 194, 193, 192, 196, 199, 201, 204, 204, 204, 204, 206, 214, 207, 218, 216, + 210, 204, 195, 207, 223, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 239, 237, 237, 240, 243, 242, 238, 233, 233, 228, 224, 223, 219, 212, 208, 211, + 212, 214, 216, 217, 217, 216, 217, 218, 212, 207, 203, 201, 203, 208, 212, 214, + 216, 216, 212, 204, 197, 192, 184, 176, 166, 134, 120, 128, 129, 127, 130, 130, + 159, 168, 163, 169, 167, 163, 177, 176, 187, 196, 199, 200, 203, 199, 195, 201, + 202, 202, 201, 200, 197, 195, 193, 191, 193, 196, 199, 203, 203, 205, 207, 210, + 207, 204, 216, 213, 215, 223, 218, 226, 241, 249, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 252, 254, 255, 255, 253, 244, 236, 233, 227, 222, 221, + 217, 211, 210, 214, 217, 218, 219, 220, 219, 216, 210, 205, 193, 185, 180, 181, + 189, 195, 196, 195, 198, 203, 202, 196, 193, 192, 189, 183, 171, 145, 133, 136, + 132, 133, 141, 145, 160, 168, 162, 168, 169, 164, 176, 174, 187, 194, 189, 187, + 190, 183, 176, 178, 185, 188, 191, 195, 196, 195, 193, 191, 192, 194, 197, 200, + 200, 202, 205, 208, 201, 203, 215, 212, 225, 248, 248, 250, 250, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 254, 254, 249, 241, 235, + 232, 227, 221, 219, 216, 211, 212, 216, 220, 219, 219, 220, 217, 209, 197, 188, + 181, 173, 169, 173, 184, 191, 188, 184, 180, 188, 192, 190, 190, 195, 196, 193, + 179, 160, 152, 151, 142, 144, 159, 166, 170, 178, 170, 174, 171, 163, 172, 166, + 177, 182, 177, 176, 181, 178, 170, 173, 171, 176, 183, 191, 194, 195, 193, 191, + 194, 195, 198, 197, 197, 197, 199, 201, 206, 209, 218, 210, 223, 252, 251, 249, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, 249, + 250, 250, 241, 231, 231, 226, 221, 220, 218, 213, 211, 213, 219, 216, 217, 217, + 209, 196, 188, 189, 174, 163, 157, 162, 170, 173, 177, 183, 179, 186, 192, 193, + 196, 200, 200, 197, 194, 174, 164, 164, 163, 170, 180, 178, 183, 180, 176, 174, + 174, 174, 171, 168, 176, 180, 176, 176, 183, 179, 170, 170, 171, 173, 172, 180, + 196, 196, 190, 192, 196, 196, 196, 197, 200, 204, 207, 209, 215, 217, 214, 217, + 231, 247, 252, 247, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 251, 250, 250, 251, 241, 232, 231, 226, 222, 220, 215, 210, 209, 214, + 229, 224, 220, 217, 210, 196, 188, 187, 177, 167, 145, 126, 128, 150, 171, 180, + 182, 185, 186, 185, 187, 190, 188, 184, 177, 166, 169, 175, 171, 174, 180, 180, + 178, 177, 174, 172, 171, 170, 168, 166, 166, 176, 177, 176, 180, 174, 166, 169, + 168, 170, 167, 173, 191, 195, 190, 191, 196, 196, 195, 196, 198, 200, 204, 205, + 210, 212, 215, 220, 234, 248, 251, 247, 253, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 250, 251, 250, 244, 234, 229, 225, 221, 218, + 212, 207, 208, 215, 229, 223, 216, 212, 207, 196, 187, 182, 177, 166, 130, 92, + 89, 120, 149, 158, 177, 177, 174, 169, 168, 169, 167, 162, 152, 149, 161, 172, + 167, 166, 168, 166, 159, 162, 164, 166, 165, 166, 168, 170, 168, 182, 185, 180, + 176, 166, 161, 170, 167, 169, 165, 169, 186, 192, 189, 191, 197, 196, 195, 195, + 196, 197, 200, 202, 205, 209, 215, 224, 239, 249, 252, 247, 253, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 251, 252, 246, 238, + 227, 223, 219, 216, 209, 205, 208, 216, 223, 218, 213, 211, 209, 200, 188, 179, + 167, 150, 114, 81, 78, 100, 119, 124, 141, 144, 142, 134, 127, 128, 130, 131, + 136, 129, 136, 145, 141, 140, 140, 135, 131, 137, 143, 147, 148, 152, 159, 164, + 168, 181, 180, 166, 153, 141, 142, 155, 161, 170, 171, 173, 184, 189, 190, 195, + 198, 197, 196, 195, 195, 196, 199, 200, 204, 208, 215, 227, 240, 250, 252, 250, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 251, 252, 248, 242, 226, 221, 216, 213, 208, 205, 209, 217, 222, 220, 217, 215, + 214, 205, 190, 178, 161, 138, 110, 98, 102, 110, 117, 121, 133, 143, 147, 139, + 131, 133, 144, 152, 148, 129, 123, 126, 124, 126, 126, 119, 118, 122, 126, 127, + 128, 132, 138, 143, 145, 155, 149, 130, 114, 104, 109, 128, 145, 165, 175, 176, + 182, 187, 192, 201, 198, 197, 196, 195, 196, 197, 200, 201, 206, 209, 217, 230, + 242, 250, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 253, 253, 250, 246, 232, 224, 215, 211, 208, 206, 207, 213, + 215, 217, 215, 211, 205, 198, 184, 171, 173, 150, 133, 136, 145, 151, 156, 162, + 164, 176, 182, 177, 172, 177, 191, 201, 162, 137, 125, 125, 124, 127, 127, 119, + 121, 120, 117, 114, 111, 112, 115, 118, 113, 122, 116, 101, 90, 83, 89, 106, + 134, 159, 172, 173, 180, 187, 194, 203, 195, 195, 194, 195, 196, 198, 202, 203, + 210, 212, 220, 234, 245, 250, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 249, 241, 229, 215, 209, + 208, 206, 204, 206, 207, 210, 207, 200, 192, 188, 179, 170, 177, 174, 170, 170, + 178, 189, 196, 199, 181, 187, 189, 184, 181, 186, 194, 199, 207, 188, 183, 186, + 184, 185, 183, 175, 179, 174, 167, 163, 163, 165, 168, 169, 166, 177, 175, 169, + 167, 161, 159, 169, 144, 164, 171, 169, 178, 188, 191, 196, 190, 190, 191, 192, + 195, 199, 203, 205, 211, 215, 225, 241, 250, 252, 251, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, + 249, 233, 216, 209, 208, 205, 201, 201, 202, 207, 204, 195, 187, 187, 182, 177, + 166, 183, 190, 184, 187, 203, 208, 203, 193, 193, 188, 181, 179, 182, 182, 179, + 166, 156, 160, 169, 165, 162, 159, 151, 157, 151, 144, 142, 147, 154, 160, 162, + 168, 181, 184, 185, 187, 178, 168, 171, 162, 175, 174, 168, 179, 188, 188, 187, + 187, 187, 188, 191, 194, 198, 203, 206, 211, 216, 229, 247, 253, 252, 249, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 252, 252, 246, 233, 220, 216, 212, 205, 204, 209, 203, 204, 203, 198, + 188, 181, 175, 175, 177, 182, 187, 193, 197, 201, 201, 201, 192, 190, 189, 189, + 187, 180, 169, 161, 164, 161, 158, 156, 156, 157, 156, 156, 158, 154, 148, 151, + 166, 180, 183, 177, 184, 193, 191, 186, 186, 180, 177, 185, 170, 171, 174, 178, + 181, 186, 190, 192, 194, 185, 183, 191, 199, 202, 208, 214, 214, 226, 239, 245, + 249, 251, 250, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 253, 251, 251, 252, 239, 226, 220, 213, 205, 204, 206, + 203, 204, 203, 197, 189, 181, 176, 176, 181, 184, 190, 195, 199, 200, 199, 198, + 189, 188, 187, 188, 189, 186, 179, 173, 163, 162, 161, 160, 159, 160, 161, 164, + 160, 159, 156, 158, 170, 182, 185, 180, 180, 189, 188, 184, 185, 179, 176, 183, + 172, 172, 175, 178, 181, 186, 191, 194, 189, 186, 189, 197, 202, 202, 207, 212, + 212, 227, 240, 247, 249, 252, 252, 249, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 251, 249, 252, 243, 233, 224, + 215, 207, 206, 207, 204, 204, 201, 196, 189, 183, 178, 177, 181, 185, 191, 196, + 200, 199, 197, 196, 185, 181, 177, 175, 175, 173, 168, 164, 165, 165, 165, 165, + 164, 165, 168, 171, 163, 167, 169, 171, 178, 188, 190, 188, 178, 188, 188, 185, + 187, 181, 176, 182, 175, 175, 176, 178, 181, 186, 193, 196, 187, 190, 197, 202, + 201, 198, 203, 210, 226, 238, 249, 253, 253, 253, 250, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 250, 250, + 251, 246, 237, 227, 216, 209, 208, 209, 204, 203, 200, 195, 189, 185, 181, 179, + 179, 183, 190, 197, 199, 198, 197, 194, 185, 179, 172, 168, 167, 165, 162, 159, + 159, 156, 154, 154, 156, 158, 158, 158, 159, 166, 170, 169, 170, 174, 175, 174, + 182, 191, 190, 188, 190, 183, 175, 180, 177, 176, 177, 178, 181, 187, 194, 198, + 190, 195, 200, 200, 196, 195, 203, 213, 234, 244, 252, 252, 251, 253, 252, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 251, 250, 251, 251, 243, 230, 216, 207, 205, 206, 204, 202, 198, 195, + 190, 187, 184, 182, 181, 184, 190, 194, 197, 195, 193, 191, 186, 180, 172, 167, + 166, 165, 162, 159, 152, 145, 138, 139, 144, 146, 142, 137, 151, 161, 167, 166, + 162, 164, 167, 167, 184, 191, 190, 187, 189, 181, 172, 175, 178, 177, 177, 178, + 181, 187, 194, 198, 194, 198, 200, 197, 195, 200, 212, 222, 235, 244, 248, 248, + 247, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 253, 251, 250, 254, 254, 250, 234, 216, 207, 204, 204, + 204, 201, 197, 194, 191, 190, 186, 184, 186, 189, 192, 193, 194, 194, 191, 189, + 183, 176, 165, 157, 151, 145, 137, 131, 123, 115, 107, 107, 111, 112, 107, 102, + 114, 127, 139, 144, 148, 157, 165, 168, 181, 188, 184, 181, 184, 178, 169, 171, + 178, 177, 178, 179, 182, 187, 193, 196, 195, 198, 198, 196, 200, 209, 218, 222, + 243, 251, 253, 254, 250, 250, 251, 249, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 252, 250, 254, 252, 237, + 219, 211, 210, 211, 205, 201, 196, 194, 192, 191, 188, 186, 186, 188, 189, 193, + 195, 196, 197, 197, 189, 182, 173, 164, 156, 146, 135, 127, 109, 106, 103, 100, + 98, 97, 96, 96, 101, 114, 126, 134, 141, 153, 161, 165, 179, 184, 179, 177, + 182, 178, 170, 173, 176, 176, 178, 180, 182, 186, 191, 193, 193, 195, 196, 198, + 205, 211, 208, 200, 223, 235, 247, 250, 250, 250, 250, 246, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, + 243, 252, 252, 239, 223, 218, 219, 220, 206, 201, 195, 193, 193, 192, 190, 188, + 183, 184, 188, 193, 197, 203, 206, 208, 204, 200, 196, 194, 190, 185, 175, 169, + 157, 160, 160, 156, 148, 145, 149, 154, 162, 170, 175, 175, 176, 180, 183, 182, + 178, 182, 178, 176, 183, 180, 175, 179, 175, 176, 177, 180, 183, 186, 190, 192, + 192, 194, 196, 200, 207, 207, 190, 173, 175, 194, 217, 233, 244, 252, 255, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 249, 254, 248, 243, 214, 225, 220, 214, 210, 207, 198, 191, + 191, 198, 196, 188, 199, 194, 189, 190, 196, 203, 208, 210, 216, 212, 205, 198, + 196, 193, 182, 172, 168, 173, 171, 161, 153, 157, 165, 170, 180, 180, 179, 179, + 180, 183, 186, 188, 185, 186, 184, 182, 182, 182, 176, 168, 181, 182, 182, 182, + 185, 188, 192, 194, 184, 201, 198, 199, 218, 212, 182, 168, 179, 171, 198, 227, + 249, 254, 242, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 249, 254, 248, 243, 214, 224, 218, 212, + 215, 213, 204, 195, 193, 197, 196, 191, 191, 188, 187, 191, 200, 206, 209, 209, + 204, 204, 202, 199, 198, 199, 192, 184, 175, 176, 175, 171, 166, 165, 171, 179, + 180, 179, 179, 179, 180, 182, 183, 184, 184, 186, 186, 184, 185, 186, 180, 173, + 181, 181, 181, 182, 184, 188, 191, 193, 194, 204, 194, 189, 204, 202, 179, 168, + 176, 166, 180, 198, 225, 248, 246, 255, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 254, 247, 244, + 214, 221, 214, 208, 220, 219, 212, 203, 197, 197, 197, 194, 187, 187, 188, 194, + 202, 207, 206, 204, 202, 205, 205, 201, 197, 195, 189, 183, 177, 171, 170, 173, + 171, 166, 170, 179, 173, 174, 175, 176, 178, 180, 180, 181, 181, 184, 185, 184, + 185, 187, 184, 177, 186, 186, 186, 187, 190, 193, 196, 198, 202, 206, 195, 188, + 200, 199, 181, 168, 175, 167, 171, 172, 205, 249, 254, 253, 254, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 250, 253, 247, 245, 214, 219, 210, 205, 220, 221, 219, 213, 205, 200, 197, 196, + 192, 191, 190, 194, 200, 202, 200, 197, 199, 204, 205, 199, 192, 190, 185, 178, + 177, 166, 165, 173, 173, 163, 163, 173, 165, 167, 170, 173, 176, 178, 178, 179, + 178, 182, 183, 182, 183, 185, 183, 178, 188, 188, 188, 190, 192, 195, 197, 199, + 196, 199, 195, 193, 201, 202, 185, 166, 174, 173, 173, 162, 193, 247, 254, 244, + 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 253, 247, 247, 216, 217, 207, 203, 215, 218, 220, 220, + 213, 205, 199, 197, 196, 192, 188, 188, 192, 194, 193, 191, 185, 192, 194, 190, + 186, 185, 182, 178, 176, 166, 165, 172, 170, 161, 160, 169, 167, 168, 170, 172, + 174, 176, 175, 175, 178, 183, 185, 183, 183, 184, 182, 178, 183, 184, 184, 185, + 187, 189, 190, 191, 188, 188, 189, 191, 198, 204, 192, 171, 180, 180, 178, 157, + 180, 234, 246, 242, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 251, 252, 247, 249, 218, 217, 206, 203, + 208, 210, 214, 220, 218, 210, 204, 202, 197, 192, 185, 183, 186, 189, 189, 187, + 182, 184, 183, 178, 175, 174, 170, 165, 166, 161, 160, 163, 161, 154, 155, 163, + 171, 172, 172, 172, 172, 172, 171, 171, 179, 185, 188, 186, 185, 186, 185, 182, + 184, 185, 185, 186, 186, 187, 187, 187, 192, 185, 187, 190, 195, 207, 204, 182, + 188, 187, 186, 161, 172, 217, 240, 254, 253, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 251, 247, 251, + 220, 218, 206, 204, 204, 202, 205, 214, 218, 214, 210, 209, 205, 199, 191, 188, + 189, 189, 186, 183, 180, 177, 172, 166, 164, 163, 157, 150, 153, 156, 157, 155, + 151, 150, 155, 160, 165, 164, 164, 163, 164, 166, 167, 169, 176, 183, 188, 186, + 185, 187, 188, 186, 187, 187, 187, 187, 186, 186, 185, 184, 188, 180, 186, 192, + 193, 205, 203, 178, 173, 177, 185, 168, 167, 197, 225, 253, 253, 253, 254, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 251, 250, 247, 252, 222, 219, 206, 205, 202, 197, 198, 209, 216, 216, 214, 215, + 216, 210, 202, 197, 195, 191, 185, 180, 168, 164, 159, 156, 159, 163, 159, 153, + 150, 158, 162, 156, 151, 155, 162, 167, 153, 153, 153, 154, 157, 162, 166, 169, + 171, 179, 184, 184, 184, 187, 188, 187, 186, 185, 184, 184, 183, 181, 180, 179, + 174, 169, 182, 192, 191, 198, 189, 157, 145, 154, 177, 170, 162, 178, 204, 246, + 252, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 253, 252, 252, 251, 253, 242, 221, 214, 212, 205, 201, 200, 201, 207, + 209, 209, 212, 217, 219, 214, 208, 205, 204, 201, 196, 191, 175, 172, 169, 167, + 166, 164, 160, 157, 155, 160, 165, 170, 173, 171, 167, 165, 149, 158, 165, 163, + 162, 164, 167, 168, 181, 182, 185, 187, 188, 188, 186, 185, 184, 183, 182, 180, + 178, 175, 172, 171, 171, 182, 176, 184, 192, 189, 182, 154, 117, 122, 140, 174, + 179, 190, 186, 233, 248, 254, 250, 247, 253, 253, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 253, 252, 252, 251, 253, 243, 222, 215, 213, 205, + 199, 197, 197, 201, 202, 201, 203, 208, 211, 209, 205, 204, 205, 203, 198, 193, + 182, 179, 175, 173, 172, 172, 169, 167, 168, 170, 171, 174, 174, 175, 172, 171, + 161, 169, 172, 169, 166, 169, 173, 175, 184, 185, 187, 188, 187, 186, 184, 182, + 183, 182, 180, 178, 176, 174, 173, 172, 171, 182, 176, 183, 192, 191, 188, 162, + 123, 102, 99, 135, 158, 185, 179, 212, 247, 254, 253, 248, 255, 255, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 252, 251, 251, 253, 244, + 224, 217, 214, 204, 201, 198, 197, 200, 199, 198, 199, 203, 208, 208, 207, 208, + 210, 209, 206, 204, 192, 189, 184, 183, 182, 181, 179, 178, 180, 180, 178, 177, + 177, 177, 178, 179, 174, 180, 180, 174, 171, 175, 179, 180, 186, 186, 187, 187, + 185, 183, 181, 178, 180, 178, 175, 173, 172, 172, 173, 174, 171, 181, 174, 182, + 190, 191, 192, 172, 145, 102, 74, 99, 137, 186, 180, 192, 240, 253, 253, 248, + 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 252, + 251, 250, 253, 244, 226, 218, 214, 204, 202, 199, 197, 199, 198, 196, 197, 202, + 207, 206, 205, 206, 208, 209, 209, 209, 201, 197, 192, 189, 186, 186, 184, 182, + 182, 181, 179, 178, 178, 179, 180, 181, 178, 182, 182, 177, 175, 178, 181, 180, + 182, 182, 183, 182, 181, 179, 177, 176, 177, 175, 171, 169, 168, 170, 173, 175, + 172, 180, 173, 180, 186, 187, 191, 177, 162, 123, 86, 87, 116, 184, 186, 182, + 229, 247, 251, 248, 252, 253, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 254, 254, 253, 252, 252, 250, 251, 243, 225, 219, 215, 204, 198, 194, 192, 193, + 192, 191, 193, 198, 201, 200, 197, 195, 196, 198, 201, 204, 204, 200, 195, 191, + 189, 186, 184, 181, 180, 181, 182, 181, 181, 181, 181, 181, 176, 181, 183, 180, + 179, 181, 181, 178, 175, 175, 176, 176, 176, 175, 174, 174, 174, 172, 168, 165, + 165, 168, 172, 174, 171, 179, 171, 179, 182, 179, 186, 175, 156, 140, 113, 91, + 96, 175, 189, 179, 219, 243, 251, 247, 251, 253, 251, 252, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 254, 254, 254, 253, 252, 253, 249, 248, 240, 223, 219, 215, 204, + 200, 196, 193, 193, 192, 190, 193, 198, 198, 197, 194, 192, 191, 192, 196, 198, + 202, 199, 195, 192, 190, 187, 182, 179, 182, 182, 183, 185, 186, 184, 183, 182, + 176, 181, 183, 181, 181, 183, 180, 176, 170, 170, 171, 171, 171, 172, 172, 172, + 172, 169, 166, 163, 163, 166, 169, 172, 167, 175, 170, 179, 180, 173, 180, 171, + 147, 142, 131, 107, 95, 168, 192, 185, 212, 242, 253, 250, 253, 255, 253, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 253, 252, 253, 248, 246, 236, + 220, 217, 215, 205, 204, 199, 195, 194, 191, 189, 191, 195, 192, 194, 195, 194, + 192, 191, 193, 194, 198, 196, 194, 194, 192, 190, 184, 181, 185, 185, 185, 185, + 184, 182, 181, 180, 179, 181, 181, 177, 177, 178, 177, 172, 169, 169, 170, 169, + 169, 170, 170, 170, 170, 167, 165, 163, 163, 164, 167, 169, 161, 171, 169, 180, + 180, 171, 176, 169, 155, 137, 134, 126, 110, 168, 190, 194, 206, 239, 254, 250, + 253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 253, 252, + 254, 247, 244, 234, 218, 217, 215, 205, 203, 196, 191, 189, 186, 182, 183, 188, + 180, 186, 191, 192, 190, 187, 186, 186, 193, 193, 194, 195, 195, 192, 187, 183, + 188, 186, 184, 181, 180, 179, 178, 178, 182, 182, 177, 171, 170, 173, 172, 168, + 171, 170, 170, 169, 169, 169, 169, 168, 169, 166, 164, 163, 162, 163, 165, 166, + 156, 168, 169, 182, 181, 170, 176, 169, 167, 129, 124, 137, 123, 166, 184, 194, + 200, 235, 252, 248, 250, 253, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 254, + 254, 254, 253, 252, 246, 254, 234, 194, 208, 218, 205, 212, 204, 197, 189, 187, + 190, 189, 183, 177, 182, 182, 180, 182, 183, 183, 180, 178, 181, 183, 184, 182, + 180, 177, 177, 178, 177, 176, 176, 177, 177, 176, 173, 170, 176, 171, 169, 171, + 171, 166, 167, 172, 169, 168, 167, 165, 164, 163, 162, 162, 169, 168, 167, 167, + 167, 166, 164, 161, 163, 172, 174, 169, 169, 176, 174, 164, 160, 142, 119, 143, + 123, 97, 200, 203, 215, 245, 254, 249, 251, 254, 252, 250, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 252, 253, 254, 254, 254, 254, 252, 251, 243, 253, 224, 189, 204, 218, 208, 212, + 199, 194, 188, 186, 186, 184, 180, 175, 178, 177, 175, 176, 179, 181, 182, 182, + 180, 181, 182, 180, 177, 175, 174, 175, 175, 174, 174, 174, 175, 174, 171, 168, + 171, 166, 165, 167, 166, 162, 162, 166, 166, 165, 165, 164, 164, 164, 165, 165, + 168, 166, 164, 163, 164, 164, 163, 161, 163, 171, 173, 167, 168, 174, 173, 166, + 150, 144, 124, 133, 123, 99, 183, 208, 219, 246, 254, 250, 251, 254, 252, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 254, 254, 254, 254, 252, 253, 254, 254, 254, 254, 252, 251, 246, 249, 212, 187, + 198, 215, 208, 209, 196, 194, 191, 187, 184, 180, 177, 176, 177, 174, 171, 171, + 174, 177, 180, 181, 178, 180, 180, 178, 175, 172, 171, 171, 173, 172, 171, 171, + 172, 171, 169, 167, 169, 166, 165, 166, 165, 161, 160, 162, 163, 163, 163, 163, + 164, 166, 167, 168, 167, 164, 160, 159, 160, 161, 162, 161, 162, 168, 170, 166, + 167, 173, 173, 167, 152, 154, 136, 126, 130, 96, 144, 206, 224, 249, 254, 250, + 253, 254, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 254, 254, 254, 254, 254, 253, 253, 254, 254, 254, 254, 252, 251, + 251, 249, 202, 189, 191, 209, 207, 206, 195, 196, 195, 191, 184, 179, 177, 177, + 176, 173, 170, 169, 171, 173, 173, 174, 177, 179, 179, 177, 173, 170, 170, 170, + 172, 170, 169, 169, 170, 170, 168, 166, 166, 165, 164, 164, 162, 159, 158, 158, + 162, 162, 162, 163, 164, 165, 167, 168, 166, 162, 158, 156, 157, 160, 162, 162, + 162, 166, 168, 165, 166, 171, 171, 168, 157, 151, 136, 125, 145, 98, 114, 209, + 228, 250, 254, 251, 253, 255, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 254, + 254, 254, 252, 251, 251, 248, 195, 194, 184, 201, 208, 208, 194, 196, 196, 191, + 182, 176, 174, 175, 169, 168, 168, 169, 171, 171, 170, 169, 176, 177, 178, 176, + 173, 170, 169, 170, 171, 169, 168, 168, 169, 169, 168, 167, 162, 162, 161, 158, + 157, 157, 156, 155, 163, 163, 162, 162, 162, 163, 163, 164, 165, 161, 156, 154, + 156, 160, 162, 164, 162, 165, 167, 166, 167, 169, 169, 167, 158, 138, 126, 125, + 157, 103, 106, 217, 231, 250, 253, 250, 252, 254, 250, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 253, 254, 254, 254, 254, 253, 252, 251, 247, 246, 192, 201, 176, 191, 207, 209, + 191, 193, 193, 188, 180, 173, 170, 169, 162, 162, 164, 167, 171, 172, 171, 170, + 173, 175, 176, 174, 172, 170, 169, 170, 170, 168, 166, 166, 167, 168, 168, 167, + 165, 166, 164, 160, 159, 162, 163, 161, 165, 164, 163, 162, 161, 161, 161, 162, + 162, 158, 154, 153, 155, 159, 162, 163, 163, 165, 168, 169, 170, 169, 167, 165, + 166, 139, 124, 127, 153, 103, 118, 218, 235, 250, 253, 249, 253, 253, 251, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 253, 254, 254, 254, 254, 253, 252, 251, 247, 250, 194, 208, + 167, 176, 197, 203, 192, 193, 192, 188, 181, 174, 169, 167, 164, 163, 163, 165, + 169, 172, 172, 172, 169, 171, 172, 172, 170, 168, 168, 169, 167, 165, 163, 163, + 164, 166, 166, 165, 165, 166, 163, 157, 157, 163, 166, 164, 164, 163, 162, 162, + 161, 161, 162, 162, 158, 155, 152, 151, 154, 157, 159, 160, 164, 166, 170, 173, + 172, 169, 165, 163, 169, 151, 136, 129, 139, 113, 158, 228, 241, 252, 252, 250, + 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 254, 254, 253, 252, 250, + 251, 253, 198, 213, 159, 163, 187, 194, 196, 195, 193, 189, 184, 177, 171, 167, + 169, 166, 163, 163, 165, 168, 170, 170, 166, 168, 170, 169, 168, 167, 167, 168, + 165, 163, 161, 160, 162, 164, 164, 164, 156, 158, 154, 147, 148, 155, 160, 158, + 163, 162, 161, 161, 161, 162, 163, 163, 154, 152, 150, 150, 153, 156, 157, 158, + 165, 167, 171, 175, 174, 169, 163, 161, 156, 152, 141, 129, 131, 130, 205, 254, + 244, 255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 255, 255, + 255, 255, 253, 253, 248, 253, 222, 214, 129, 167, 183, 182, 182, 193, 185, 178, + 184, 175, 164, 174, 164, 165, 164, 161, 157, 157, 160, 164, 165, 170, 172, 170, + 166, 165, 166, 166, 165, 158, 154, 156, 156, 154, 155, 157, 151, 152, 154, 155, + 155, 155, 157, 159, 158, 158, 157, 157, 154, 151, 152, 156, 149, 151, 153, 153, + 153, 155, 161, 166, 173, 164, 162, 169, 171, 164, 161, 164, 155, 150, 143, 131, + 137, 221, 248, 246, 253, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 253, 253, 255, 255, 255, 254, 253, 252, 251, 250, 234, 207, 117, 158, 182, 181, + 182, 188, 185, 181, 181, 174, 168, 171, 162, 163, 162, 159, 156, 156, 159, 162, + 158, 161, 163, 164, 164, 167, 170, 171, 166, 162, 160, 160, 157, 153, 152, 156, + 152, 153, 155, 156, 155, 156, 157, 159, 155, 155, 154, 154, 153, 151, 150, 152, + 147, 150, 152, 152, 153, 156, 161, 166, 167, 162, 161, 166, 168, 166, 164, 164, + 156, 156, 137, 139, 134, 232, 246, 247, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 253, 253, 255, 255, 254, 254, 252, 252, 251, 242, 251, 212, + 106, 155, 175, 177, 181, 179, 185, 186, 178, 174, 173, 167, 161, 161, 160, 158, + 155, 155, 157, 159, 165, 163, 161, 161, 163, 163, 163, 163, 162, 162, 163, 164, + 159, 153, 153, 158, 153, 155, 157, 157, 156, 155, 157, 159, 151, 151, 151, 151, + 152, 151, 149, 147, 146, 149, 151, 152, 153, 157, 161, 165, 163, 165, 164, 163, + 164, 166, 164, 160, 155, 160, 134, 144, 138, 243, 246, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 254, 253, 251, 251, + 246, 239, 251, 231, 99, 163, 164, 169, 178, 172, 184, 189, 174, 173, 177, 165, + 160, 159, 158, 156, 155, 155, 155, 156, 166, 161, 159, 162, 164, 162, 158, 156, + 153, 156, 162, 165, 160, 155, 156, 162, 155, 157, 158, 157, 156, 155, 156, 157, + 147, 149, 149, 149, 151, 152, 149, 143, 147, 149, 150, 152, 154, 158, 161, 163, + 165, 171, 170, 162, 160, 164, 162, 153, 152, 156, 137, 144, 159, 248, 251, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, + 253, 252, 250, 250, 246, 242, 251, 243, 93, 168, 154, 166, 173, 167, 180, 186, + 172, 172, 176, 164, 160, 159, 157, 156, 156, 156, 155, 155, 152, 149, 151, 160, + 165, 162, 158, 157, 150, 153, 160, 163, 160, 154, 156, 161, 157, 158, 158, 157, + 155, 153, 154, 155, 145, 149, 151, 149, 150, 153, 150, 144, 149, 150, 151, 153, + 156, 159, 161, 162, 164, 171, 170, 162, 159, 163, 161, 154, 149, 145, 146, 144, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, + 254, 255, 255, 255, 253, 252, 249, 249, 251, 245, 237, 240, 105, 165, 152, 165, + 167, 167, 174, 178, 172, 171, 172, 167, 161, 160, 158, 158, 158, 158, 157, 155, + 150, 146, 149, 158, 160, 153, 149, 152, 153, 154, 158, 162, 159, 154, 154, 158, + 157, 158, 158, 156, 153, 151, 152, 153, 142, 150, 153, 148, 147, 152, 186, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 251, 245, 235, 239, + 144, 162, 158, 158, 161, 169, 169, 169, 173, 169, 166, 170, 163, 161, 159, 160, + 161, 161, 158, 156, 157, 151, 152, 157, 155, 146, 145, 152, 156, 154, 156, 161, + 161, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 247, 250, 255, 243, 252, 239, 248, 247, 251, 234, 240, 249, 247, 255, 255, 246, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 254, 251, 252, 247, 249, 248, 244, 250, 248, 222, 250, 247, 249, 248, + 246, 253, 253, 250, 253, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 250, 250, 250, 250, 252, 252, 252, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 252, 252, 252, 252, + 255, 255, 253, 252, 252, 250, 247, 246, 248, 242, 232, 229, 188, 222, 217, 183, + 194, 225, 244, 244, 238, 230, 233, 245, 247, 249, 251, 252, 254, 254, 255, 255, + 254, 252, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 252, 252, 250, 250, 250, + 250, 250, 250, 250, 252, 252, 252, 252, 250, 250, 250, 250, 248, 248, 248, 248, + 246, 246, 246, 246, 248, 248, 248, 245, 245, 242, 240, 239, 225, 223, 206, 189, + 107, 154, 166, 143, 100, 166, 215, 223, 218, 202, 205, 231, 235, 236, 240, 244, + 248, 249, 250, 250, 250, 250, 250, 250, 252, 252, 254, 254, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, + 252, 245, 251, 238, 251, 237, 243, 234, 230, 237, 242, 236, 235, 235, 241, 242, + 239, 221, 224, 229, 203, 210, 239, 228, 233, 230, 239, 241, 222, 217, 218, 180, + 192, 146, 148, 122, 131, 161, 135, 153, 112, 142, 166, 149, 122, 130, 119, 153, + 177, 197, 183, 206, 240, 231, 240, 237, 239, 242, 234, 248, 242, 240, 236, 248, + 249, 246, 247, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, + 254, 253, 252, 252, 253, 244, 247, 234, 249, 241, 243, 223, 214, 204, 195, 185, + 186, 196, 204, 201, 183, 165, 150, 154, 159, 155, 149, 137, 109, 129, 167, 174, + 146, 132, 131, 124, 102, 102, 119, 113, 92, 140, 138, 161, 139, 130, 105, 95, + 84, 102, 86, 127, 109, 129, 121, 123, 123, 157, 177, 225, 210, 214, 183, 142, + 146, 221, 246, 239, 248, 249, 253, 253, 254, 248, 247, 248, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 251, 251, 253, 253, 253, 252, 251, 251, 250, 244, 247, 237, 245, 244, 238, 205, + 213, 188, 164, 153, 150, 166, 167, 155, 161, 153, 141, 151, 176, 159, 124, 119, + 75, 116, 175, 164, 143, 146, 136, 145, 111, 129, 132, 128, 69, 108, 126, 131, + 141, 117, 53, 56, 53, 86, 65, 120, 108, 133, 135, 120, 72, 101, 80, 131, + 118, 168, 148, 98, 71, 120, 234, 234, 235, 242, 246, 244, 245, 249, 253, 252, + 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 254, 251, 251, 253, 254, 253, 252, 251, 251, 246, 243, 248, 238, + 233, 240, 234, 196, 204, 176, 152, 150, 137, 158, 157, 141, 131, 128, 143, 158, + 164, 142, 109, 108, 67, 102, 150, 114, 112, 144, 117, 121, 125, 124, 108, 105, + 58, 83, 123, 103, 113, 115, 52, 62, 44, 77, 56, 110, 93, 124, 139, 132, + 83, 82, 43, 51, 64, 140, 140, 150, 86, 32, 198, 238, 236, 241, 239, 236, + 241, 247, 250, 247, 244, 248, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 254, 254, 254, 252, 252, 254, 254, 255, 255, 254, 252, + 245, 242, 245, 233, 208, 225, 231, 203, 187, 161, 142, 150, 130, 163, 169, 160, + 157, 131, 163, 174, 152, 141, 125, 116, 95, 101, 131, 99, 97, 117, 90, 104, + 122, 96, 83, 78, 65, 62, 118, 89, 101, 124, 72, 80, 49, 75, 50, 81, + 111, 137, 138, 135, 107, 86, 89, 75, 76, 112, 121, 141, 101, 39, 150, 193, + 232, 236, 238, 239, 244, 244, 242, 237, 245, 250, 252, 252, 251, 251, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 252, 252, 255, 255, + 255, 255, 254, 252, 252, 241, 239, 225, 184, 202, 218, 204, 185, 160, 144, 155, + 124, 167, 184, 180, 174, 130, 160, 158, 135, 147, 139, 121, 103, 85, 109, 106, + 85, 70, 68, 108, 134, 104, 97, 75, 70, 43, 93, 70, 114, 125, 78, 90, + 65, 89, 72, 70, 123, 134, 125, 116, 87, 61, 97, 91, 83, 96, 129, 107, + 100, 98, 97, 118, 167, 181, 201, 224, 235, 236, 239, 247, 253, 255, 255, 253, + 250, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, + 251, 251, 253, 253, 255, 254, 253, 250, 255, 241, 240, 234, 176, 182, 188, 172, + 165, 144, 135, 154, 118, 166, 184, 179, 173, 147, 169, 153, 144, 158, 136, 127, + 85, 75, 97, 106, 76, 64, 99, 138, 131, 112, 98, 64, 60, 51, 82, 72, + 130, 115, 76, 98, 80, 97, 100, 84, 129, 122, 123, 130, 99, 99, 117, 127, + 86, 123, 145, 133, 125, 111, 69, 81, 92, 109, 142, 170, 179, 183, 205, 235, + 239, 247, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, + 254, 255, 255, 254, 251, 249, 252, 252, 254, 253, 252, 249, 253, 241, 245, 244, + 179, 167, 156, 131, 116, 102, 102, 136, 104, 157, 172, 166, 145, 153, 174, 143, + 138, 139, 94, 99, 61, 69, 85, 86, 61, 83, 146, 160, 156, 142, 107, 63, + 56, 76, 86, 81, 136, 104, 76, 103, 84, 87, 107, 90, 126, 98, 100, 122, + 88, 118, 100, 121, 90, 143, 110, 159, 141, 64, 47, 61, 70, 78, 102, 118, + 109, 106, 137, 185, 197, 214, 231, 247, 251, 252, 246, 243, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 248, 253, 255, 255, 255, 255, 252, 249, + 250, 237, 235, 228, 195, 167, 148, 123, 96, 74, 100, 128, 79, 145, 146, 122, + 145, 159, 150, 114, 115, 89, 78, 61, 61, 63, 47, 81, 99, 134, 146, 147, + 140, 131, 83, 49, 54, 80, 67, 127, 170, 99, 117, 100, 63, 84, 77, 57, + 109, 120, 101, 114, 103, 117, 130, 138, 99, 121, 115, 147, 116, 80, 56, 40, + 55, 44, 67, 100, 93, 106, 102, 127, 118, 123, 163, 211, 244, 236, 251, 254, + 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 253, 255, 255, 252, + 249, 247, 245, 242, 246, 230, 223, 204, 176, 162, 138, 93, 63, 69, 59, 80, + 78, 104, 87, 140, 145, 122, 90, 61, 48, 42, 52, 28, 57, 51, 82, 143, + 160, 145, 127, 143, 125, 136, 112, 80, 98, 129, 127, 172, 126, 120, 138, 89, + 33, 26, 21, 49, 102, 118, 113, 127, 120, 114, 114, 108, 103, 132, 123, 132, + 93, 66, 49, 35, 44, 30, 36, 59, 66, 108, 119, 141, 130, 113, 113, 140, + 179, 232, 248, 236, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 255, 255, 254, 253, + 251, 249, 248, 248, 249, 248, 250, 250, 228, 219, 208, 181, 159, 163, 136, 76, + 44, 58, 39, 56, 71, 80, 66, 145, 129, 98, 65, 60, 34, 48, 61, 20, + 63, 46, 97, 133, 141, 107, 82, 110, 106, 139, 145, 114, 136, 150, 148, 167, + 117, 128, 114, 49, 18, 11, 4, 59, 120, 133, 135, 136, 133, 110, 114, 103, + 118, 138, 123, 114, 82, 67, 50, 29, 35, 34, 44, 57, 59, 107, 124, 146, + 121, 100, 100, 107, 128, 235, 248, 239, 249, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 254, 254, + 255, 255, 254, 251, 251, 246, 244, 246, 248, 246, 245, 244, 207, 203, 195, 170, + 146, 150, 130, 81, 48, 38, 44, 69, 54, 82, 96, 112, 81, 95, 62, 59, + 34, 53, 57, 23, 78, 59, 103, 76, 82, 73, 59, 75, 80, 119, 148, 125, + 146, 129, 125, 127, 134, 107, 60, 8, 7, 24, 42, 102, 150, 154, 150, 131, + 127, 104, 130, 130, 142, 135, 114, 103, 95, 87, 65, 41, 38, 46, 65, 71, + 51, 84, 110, 149, 130, 86, 101, 97, 111, 214, 243, 247, 248, 253, 254, 253, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 254, 254, 254, 254, 253, 252, 247, 248, 242, 234, 234, 231, 223, 216, 213, + 192, 183, 182, 161, 125, 112, 102, 77, 60, 21, 33, 71, 49, 76, 105, 85, + 55, 121, 69, 36, 22, 38, 46, 35, 62, 50, 85, 43, 53, 61, 47, 48, + 60, 92, 126, 125, 144, 116, 120, 123, 111, 59, 22, 1, 0, 32, 92, 154, + 152, 157, 151, 128, 122, 105, 142, 152, 156, 128, 108, 98, 101, 93, 82, 77, + 65, 58, 68, 73, 46, 67, 97, 149, 163, 86, 101, 83, 91, 150, 206, 245, + 251, 253, 252, 249, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 253, 254, 254, 254, 254, 251, 250, 246, 237, 220, 209, 207, + 205, 194, 186, 182, 180, 164, 159, 141, 95, 69, 63, 54, 60, 26, 14, 56, + 68, 64, 80, 87, 40, 127, 75, 32, 33, 37, 55, 52, 57, 38, 51, 33, + 38, 43, 29, 34, 56, 81, 99, 114, 126, 107, 117, 120, 60, 9, 0, 20, + 28, 72, 138, 170, 131, 143, 141, 135, 129, 120, 148, 157, 156, 127, 122, 100, + 96, 85, 90, 108, 99, 80, 84, 97, 74, 83, 90, 125, 151, 101, 131, 110, + 90, 92, 167, 237, 245, 251, 251, 248, 250, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 252, 252, 252, 249, 248, 244, + 222, 197, 181, 180, 180, 172, 167, 166, 165, 143, 133, 115, 74, 52, 45, 33, + 41, 34, 19, 53, 77, 59, 69, 82, 30, 91, 50, 24, 41, 36, 66, 44, + 74, 57, 41, 42, 36, 40, 34, 41, 56, 85, 84, 101, 95, 87, 86, 73, + 23, 0, 7, 46, 80, 121, 149, 138, 111, 123, 113, 127, 125, 132, 149, 155, + 156, 138, 147, 113, 107, 94, 92, 102, 100, 91, 100, 112, 89, 97, 88, 104, + 130, 123, 146, 139, 101, 83, 132, 188, 222, 240, 251, 248, 247, 253, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 250, + 250, 248, 247, 240, 225, 196, 173, 168, 163, 156, 149, 151, 151, 128, 114, 95, + 65, 56, 48, 29, 18, 34, 40, 62, 68, 63, 80, 60, 55, 70, 28, 17, + 42, 33, 80, 43, 57, 60, 34, 41, 29, 41, 38, 32, 48, 87, 78, 92, + 73, 70, 53, 20, 7, 25, 40, 69, 103, 128, 126, 97, 102, 106, 82, 103, + 105, 130, 145, 153, 159, 149, 167, 129, 129, 116, 93, 77, 73, 78, 90, 89, + 62, 84, 91, 111, 146, 141, 112, 120, 100, 103, 101, 107, 198, 226, 248, 248, + 246, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 249, 252, 253, 251, 245, 241, 246, 232, 221, 204, 176, 151, 141, 149, 155, 156, + 148, 115, 114, 113, 76, 47, 41, 33, 23, 35, 48, 59, 69, 69, 62, 54, + 49, 47, 36, 35, 52, 28, 53, 38, 54, 42, 27, 20, 29, 44, 46, 40, + 50, 69, 60, 74, 65, 50, 8, 9, 26, 40, 61, 85, 99, 99, 87, 79, + 89, 88, 90, 91, 99, 126, 144, 140, 159, 150, 150, 158, 150, 119, 87, 71, + 83, 73, 74, 84, 84, 76, 79, 91, 125, 129, 114, 93, 81, 120, 94, 75, + 128, 227, 239, 250, 240, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 253, 253, 252, 250, 244, 242, 244, 228, 220, 186, 158, 151, + 158, 159, 157, 154, 136, 137, 125, 105, 90, 73, 54, 49, 24, 34, 47, 54, + 57, 53, 50, 46, 53, 48, 43, 44, 52, 44, 57, 51, 44, 40, 33, 31, + 40, 49, 47, 39, 68, 71, 61, 58, 45, 34, 19, 25, 49, 59, 71, 80, + 79, 73, 64, 60, 67, 69, 77, 89, 104, 131, 142, 131, 160, 162, 166, 164, + 145, 115, 91, 79, 83, 83, 84, 88, 92, 94, 96, 96, 83, 88, 84, 61, + 54, 86, 78, 75, 113, 146, 243, 237, 245, 255, 248, 255, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 250, 246, 244, 244, 234, 220, + 199, 157, 134, 148, 170, 166, 151, 140, 97, 127, 103, 66, 71, 74, 51, 43, + 39, 46, 54, 57, 54, 47, 44, 42, 53, 47, 51, 59, 58, 68, 61, 70, + 46, 43, 39, 39, 46, 52, 50, 44, 50, 40, 44, 37, 32, 30, 49, 56, + 55, 59, 60, 54, 44, 37, 34, 36, 76, 81, 96, 117, 136, 159, 164, 149, + 160, 158, 149, 135, 125, 119, 113, 107, 100, 100, 92, 82, 84, 92, 94, 86, + 69, 70, 80, 55, 53, 63, 67, 73, 96, 96, 210, 233, 246, 253, 250, 255, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 251, 243, + 246, 243, 216, 204, 164, 135, 125, 146, 171, 168, 147, 129, 97, 121, 103, 67, + 69, 81, 69, 54, 52, 53, 57, 60, 58, 52, 48, 46, 53, 49, 62, 76, + 71, 93, 68, 85, 61, 53, 47, 41, 46, 49, 53, 51, 51, 32, 49, 39, + 38, 27, 52, 46, 65, 64, 58, 51, 46, 47, 53, 60, 89, 93, 107, 121, + 130, 143, 145, 132, 151, 143, 127, 118, 130, 147, 142, 124, 109, 97, 79, 66, + 66, 73, 77, 77, 55, 47, 66, 45, 53, 43, 41, 41, 83, 109, 134, 232, + 244, 241, 255, 247, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 251, 251, 239, 244, 239, 194, 182, 148, 139, 137, 144, 160, 167, 156, 140, + 124, 123, 125, 110, 87, 87, 83, 57, 49, 45, 49, 59, 67, 65, 61, 61, + 55, 56, 78, 97, 91, 113, 86, 102, 80, 68, 58, 49, 50, 48, 51, 50, + 48, 29, 49, 45, 50, 38, 55, 41, 44, 40, 33, 33, 40, 52, 62, 70, + 115, 118, 126, 130, 124, 129, 135, 131, 145, 150, 149, 150, 161, 167, 146, 115, + 90, 70, 57, 59, 63, 62, 67, 77, 56, 37, 49, 36, 54, 42, 33, 26, + 64, 105, 82, 192, 244, 236, 253, 245, 254, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 250, 251, 237, 243, 233, 176, 166, 146, 145, 140, 137, + 146, 158, 157, 149, 135, 122, 139, 140, 100, 76, 68, 43, 41, 39, 49, 67, + 81, 82, 83, 88, 69, 76, 96, 116, 118, 127, 116, 122, 98, 85, 72, 65, + 61, 55, 49, 46, 36, 26, 35, 41, 48, 47, 55, 51, 52, 51, 47, 51, + 61, 73, 81, 86, 89, 92, 103, 108, 103, 113, 129, 135, 157, 170, 176, 167, + 158, 148, 127, 105, 74, 58, 53, 64, 66, 56, 56, 66, 77, 54, 53, 41, + 53, 52, 37, 34, 44, 60, 75, 126, 229, 241, 248, 245, 254, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 252, 250, 251, 233, 242, 231, 165, 163, + 146, 139, 135, 139, 148, 150, 145, 141, 140, 136, 144, 139, 106, 69, 53, 49, + 43, 47, 66, 87, 94, 93, 100, 109, 91, 103, 116, 132, 146, 137, 150, 147, + 123, 101, 80, 71, 67, 60, 53, 50, 48, 49, 39, 42, 39, 39, 34, 47, + 47, 51, 51, 53, 55, 58, 59, 62, 75, 77, 91, 104, 108, 123, 143, 151, + 155, 161, 161, 150, 136, 125, 112, 101, 74, 66, 61, 60, 56, 49, 47, 53, + 66, 57, 51, 45, 41, 52, 34, 39, 37, 30, 71, 87, 177, 240, 247, 243, + 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 253, 232, + 241, 229, 162, 162, 148, 130, 132, 152, 164, 151, 135, 130, 131, 143, 129, 110, + 94, 56, 36, 56, 44, 54, 79, 99, 98, 93, 102, 119, 112, 124, 132, 147, + 168, 148, 177, 167, 146, 118, 88, 74, 68, 65, 63, 64, 41, 55, 42, 51, + 47, 53, 43, 68, 55, 61, 67, 65, 58, 52, 49, 50, 59, 58, 72, 86, + 91, 103, 116, 119, 130, 130, 133, 138, 139, 132, 111, 93, 74, 73, 63, 48, + 41, 46, 51, 53, 42, 51, 58, 61, 48, 68, 53, 65, 43, 38, 56, 84, + 122, 233, 246, 239, 252, 254, 254, 255, 255, 255, 255, 255, 250, 252, 252, 252, + 254, 254, 255, 251, 230, 239, 141, 142, 139, 142, 147, 147, 147, 143, 135, 125, + 126, 131, 117, 98, 84, 69, 57, 60, 46, 66, 98, 122, 121, 110, 109, 122, + 125, 131, 154, 182, 193, 184, 179, 178, 166, 149, 127, 109, 95, 87, 79, 74, + 60, 56, 57, 54, 48, 55, 62, 57, 57, 54, 50, 49, 50, 49, 45, 42, + 55, 56, 59, 67, 80, 94, 104, 109, 107, 98, 93, 97, 106, 107, 87, 67, + 38, 50, 53, 47, 37, 42, 43, 43, 54, 51, 53, 61, 64, 65, 70, 78, + 86, 63, 48, 90, 97, 212, 244, 236, 250, 253, 253, 255, 255, 255, 255, 255, + 249, 249, 250, 250, 255, 254, 255, 252, 231, 236, 138, 137, 140, 139, 140, 145, + 146, 142, 135, 130, 116, 119, 93, 96, 83, 89, 65, 71, 69, 86, 113, 138, + 142, 137, 142, 156, 158, 163, 179, 199, 206, 199, 197, 200, 195, 186, 174, 159, + 144, 126, 108, 94, 86, 70, 64, 64, 62, 64, 62, 51, 54, 50, 45, 44, + 46, 46, 44, 41, 50, 54, 61, 69, 78, 80, 78, 73, 95, 88, 81, 78, + 80, 75, 61, 50, 44, 54, 54, 46, 40, 44, 45, 41, 61, 57, 59, 65, + 76, 82, 81, 77, 96, 69, 53, 67, 107, 173, 221, 238, 249, 251, 253, 255, + 255, 255, 255, 255, 249, 249, 250, 250, 254, 253, 255, 250, 235, 232, 138, 137, + 135, 130, 132, 138, 137, 128, 124, 127, 86, 104, 86, 101, 76, 93, 80, 103, + 105, 115, 135, 158, 166, 168, 176, 189, 191, 192, 200, 213, 218, 214, 214, 219, + 216, 216, 212, 210, 202, 186, 166, 151, 136, 107, 94, 98, 96, 91, 78, 62, + 63, 58, 53, 51, 54, 56, 56, 54, 46, 43, 40, 38, 38, 38, 37, 36, + 17, 20, 26, 34, 42, 44, 44, 45, 54, 56, 53, 40, 38, 39, 41, 34, + 40, 37, 35, 39, 59, 78, 80, 70, 88, 63, 54, 48, 113, 126, 181, 228, + 248, 251, 253, 255, 255, 255, 255, 255, 249, 249, 250, 250, 253, 250, 252, 251, + 241, 227, 143, 141, 131, 126, 127, 129, 119, 105, 105, 115, 79, 92, 86, 98, + 93, 103, 101, 123, 131, 138, 152, 170, 181, 187, 194, 203, 208, 207, 211, 220, + 224, 221, 224, 228, 228, 229, 231, 231, 228, 220, 211, 200, 184, 149, 133, 138, + 134, 118, 102, 87, 81, 75, 69, 67, 69, 73, 74, 73, 70, 63, 56, 48, + 45, 45, 46, 44, 34, 38, 48, 59, 64, 65, 63, 63, 66, 61, 56, 35, + 38, 33, 37, 23, 20, 18, 12, 10, 31, 58, 68, 60, 70, 52, 60, 59, + 106, 107, 165, 219, 240, 246, 252, 255, 255, 255, 255, 255, 249, 249, 250, 250, + 253, 250, 252, 250, 238, 209, 135, 134, 131, 129, 130, 124, 107, 91, 93, 106, + 101, 84, 80, 85, 128, 127, 125, 119, 144, 149, 161, 180, 191, 198, 202, 206, + 209, 211, 216, 222, 227, 226, 228, 232, 235, 236, 237, 235, 233, 226, 218, 211, + 208, 177, 162, 164, 152, 134, 121, 110, 100, 93, 86, 83, 85, 88, 90, 90, + 81, 81, 81, 81, 79, 73, 66, 60, 48, 42, 44, 53, 59, 60, 58, 59, + 76, 68, 65, 39, 46, 33, 36, 19, 19, 24, 21, 15, 26, 48, 58, 54, + 63, 53, 69, 80, 88, 112, 176, 222, 233, 240, 246, 252, 255, 255, 255, 255, + 249, 249, 250, 250, 253, 252, 252, 247, 230, 185, 120, 119, 129, 131, 130, 119, + 104, 95, 98, 104, 98, 81, 91, 87, 137, 120, 130, 126, 149, 158, 171, 187, + 199, 206, 208, 208, 207, 212, 218, 225, 229, 233, 234, 237, 240, 244, 248, 248, + 244, 236, 228, 219, 215, 193, 185, 179, 163, 148, 142, 135, 127, 119, 111, 107, + 108, 110, 110, 110, 88, 86, 83, 80, 78, 75, 71, 68, 63, 50, 46, 56, + 70, 77, 85, 92, 87, 79, 85, 53, 63, 42, 47, 27, 12, 24, 30, 29, + 34, 47, 54, 52, 60, 58, 65, 81, 65, 108, 172, 225, 231, 240, 244, 246, + 255, 255, 255, 255, 249, 249, 250, 250, 252, 251, 252, 243, 223, 165, 107, 110, + 116, 119, 116, 106, 103, 108, 108, 101, 87, 94, 116, 114, 133, 113, 132, 151, + 160, 170, 181, 194, 204, 209, 208, 208, 208, 214, 220, 227, 232, 239, 241, 244, + 246, 251, 253, 251, 250, 245, 240, 234, 220, 206, 200, 192, 176, 169, 168, 159, + 156, 148, 140, 135, 135, 135, 134, 132, 121, 113, 101, 92, 87, 86, 84, 85, + 84, 71, 64, 71, 78, 78, 81, 88, 97, 92, 105, 72, 85, 59, 65, 45, + 21, 25, 28, 29, 33, 37, 43, 48, 55, 65, 60, 68, 66, 93, 140, 211, + 235, 242, 246, 247, 255, 255, 255, 255, 249, 249, 248, 248, 248, 251, 253, 244, + 222, 156, 105, 108, 100, 103, 97, 90, 100, 117, 114, 97, 98, 109, 122, 135, + 145, 137, 142, 165, 172, 181, 190, 197, 203, 207, 206, 206, 212, 216, 222, 228, + 233, 242, 246, 248, 255, 255, 255, 251, 244, 242, 238, 237, 224, 213, 208, 197, + 183, 183, 185, 172, 171, 163, 155, 151, 149, 148, 145, 141, 136, 131, 125, 119, + 111, 101, 91, 82, 83, 77, 79, 91, 96, 90, 89, 95, 105, 102, 119, 86, + 102, 74, 79, 59, 56, 48, 35, 30, 26, 27, 32, 39, 53, 74, 61, 61, + 84, 78, 108, 198, 239, 247, 249, 247, 255, 255, 255, 255, 250, 249, 249, 250, + 243, 246, 251, 242, 199, 145, 106, 93, 71, 76, 93, 103, 101, 104, 107, 98, + 102, 132, 151, 151, 154, 155, 163, 178, 186, 194, 201, 204, 203, 204, 209, 214, + 208, 214, 220, 229, 238, 244, 248, 252, 255, 255, 255, 253, 249, 245, 243, 238, + 229, 223, 217, 212, 208, 203, 199, 194, 187, 182, 178, 172, 165, 157, 152, 147, + 151, 149, 146, 137, 126, 114, 108, 106, 110, 110, 87, 95, 100, 98, 115, 104, + 113, 114, 129, 104, 102, 90, 93, 70, 66, 35, 21, 37, 26, 17, 32, 30, + 37, 72, 58, 44, 79, 89, 96, 149, 235, 239, 244, 240, 255, 255, 255, 255, + 250, 247, 249, 248, 246, 248, 251, 241, 177, 119, 82, 70, 78, 85, 98, 108, + 110, 106, 103, 100, 106, 140, 158, 158, 160, 165, 173, 188, 192, 199, 205, 206, + 205, 204, 211, 214, 215, 218, 225, 231, 240, 244, 247, 251, 255, 255, 255, 253, + 249, 246, 244, 240, 232, 228, 221, 217, 213, 211, 207, 202, 198, 194, 191, 187, + 182, 175, 170, 166, 151, 151, 148, 140, 132, 122, 117, 113, 103, 107, 97, 106, + 111, 102, 112, 98, 112, 116, 134, 118, 119, 112, 115, 92, 67, 33, 18, 24, + 30, 30, 22, 19, 36, 61, 50, 57, 81, 75, 84, 123, 222, 244, 248, 243, + 255, 255, 255, 255, 250, 247, 249, 248, 250, 245, 243, 232, 148, 100, 74, 73, + 84, 91, 97, 107, 113, 100, 90, 94, 111, 145, 164, 161, 167, 179, 186, 193, + 199, 204, 207, 206, 205, 204, 210, 213, 219, 221, 227, 232, 240, 244, 246, 250, + 253, 255, 255, 252, 249, 246, 244, 242, 236, 232, 227, 225, 223, 222, 218, 214, + 208, 206, 205, 203, 198, 195, 192, 188, 173, 170, 166, 159, 152, 143, 138, 134, + 118, 124, 121, 127, 127, 118, 124, 114, 120, 126, 142, 135, 137, 136, 137, 116, + 91, 51, 29, 15, 36, 54, 30, 33, 49, 60, 47, 70, 83, 67, 86, 109, + 189, 237, 246, 242, 255, 255, 255, 255, 250, 247, 248, 248, 250, 242, 235, 221, + 135, 103, 92, 102, 86, 92, 95, 104, 111, 94, 83, 94, 114, 147, 159, 157, + 171, 191, 193, 191, 199, 203, 204, 203, 203, 203, 207, 212, 216, 220, 226, 230, + 237, 242, 245, 249, 252, 252, 252, 249, 248, 245, 243, 242, 236, 234, 231, 229, + 230, 229, 227, 224, 212, 212, 212, 209, 207, 204, 202, 199, 198, 194, 189, 183, + 175, 165, 158, 154, 148, 149, 146, 143, 139, 134, 139, 141, 135, 137, 149, 145, + 143, 145, 144, 127, 117, 78, 51, 10, 32, 67, 45, 69, 70, 72, 56, 75, + 78, 73, 105, 112, 148, 228, 242, 240, 255, 255, 255, 255, 250, 247, 248, 248, + 250, 247, 236, 213, 141, 111, 102, 109, 83, 88, 96, 103, 104, 95, 96, 109, + 122, 145, 153, 156, 179, 199, 195, 186, 195, 196, 199, 199, 200, 203, 207, 211, + 213, 215, 220, 227, 234, 239, 244, 246, 247, 247, 248, 245, 245, 243, 241, 241, + 235, 234, 232, 231, 232, 233, 231, 228, 218, 218, 215, 214, 213, 209, 207, 204, + 207, 204, 200, 194, 188, 180, 174, 168, 169, 164, 165, 153, 146, 146, 147, 152, + 147, 147, 150, 149, 141, 148, 145, 131, 119, 88, 67, 17, 26, 58, 49, 86, + 73, 76, 67, 71, 71, 85, 115, 110, 123, 229, 240, 244, 255, 255, 255, 255, + 250, 247, 248, 247, 249, 251, 242, 197, 150, 111, 92, 84, 80, 81, 96, 97, + 85, 91, 113, 119, 127, 145, 155, 166, 189, 199, 193, 188, 193, 194, 197, 199, + 202, 203, 207, 209, 210, 213, 218, 222, 229, 236, 242, 244, 242, 242, 242, 242, + 242, 241, 240, 239, 235, 233, 232, 232, 233, 233, 232, 228, 224, 221, 221, 218, + 216, 212, 210, 207, 207, 204, 203, 199, 198, 193, 188, 183, 177, 171, 179, 169, + 163, 162, 153, 158, 155, 151, 148, 154, 142, 151, 145, 135, 113, 93, 79, 40, + 32, 49, 50, 77, 61, 67, 73, 64, 64, 87, 99, 94, 110, 230, 234, 244, + 255, 255, 255, 255, 250, 247, 248, 247, 244, 250, 235, 164, 151, 107, 83, 64, + 88, 83, 103, 94, 63, 81, 121, 116, 128, 147, 163, 178, 193, 192, 189, 196, + 194, 195, 198, 203, 207, 208, 209, 210, 213, 214, 218, 221, 227, 232, 238, 240, + 237, 237, 238, 238, 238, 237, 236, 235, 238, 236, 234, 234, 234, 234, 232, 228, + 226, 224, 224, 223, 219, 216, 214, 211, 209, 205, 204, 203, 202, 201, 197, 191, + 183, 175, 188, 179, 175, 177, 162, 167, 163, 161, 154, 164, 148, 162, 149, 138, + 122, 100, 84, 64, 47, 46, 56, 62, 59, 53, 73, 55, 56, 77, 66, 83, + 104, 231, 228, 245, 255, 255, 255, 255, 251, 249, 248, 247, 236, 248, 217, 128, + 144, 104, 86, 66, 106, 97, 117, 99, 53, 76, 125, 113, 126, 148, 171, 186, + 193, 183, 184, 200, 200, 201, 203, 208, 211, 211, 211, 209, 214, 216, 218, 220, + 225, 228, 234, 236, 234, 234, 236, 237, 236, 236, 235, 234, 239, 237, 235, 234, + 234, 233, 230, 226, 225, 225, 225, 222, 219, 217, 215, 214, 210, 205, 201, 201, + 201, 197, 192, 188, 184, 174, 186, 174, 175, 182, 168, 175, 173, 169, 163, 176, + 158, 170, 154, 142, 135, 104, 81, 74, 51, 44, 58, 50, 68, 50, 72, 50, + 52, 69, 44, 84, 103, 232, 227, 244, 255, 255, 255, 255, 255, 252, 251, 248, + 245, 244, 175, 138, 133, 98, 87, 76, 96, 74, 111, 64, 90, 96, 108, 121, + 128, 149, 176, 189, 192, 191, 193, 196, 201, 200, 196, 196, 201, 205, 209, 212, + 211, 214, 215, 217, 222, 225, 228, 230, 230, 232, 233, 233, 234, 234, 234, 234, + 231, 232, 233, 234, 233, 232, 230, 229, 232, 229, 227, 225, 220, 217, 214, 213, + 211, 208, 205, 204, 201, 198, 196, 195, 191, 188, 186, 183, 185, 183, 182, 179, + 180, 175, 172, 171, 171, 165, 158, 150, 145, 105, 94, 79, 43, 41, 58, 55, + 45, 49, 52, 53, 42, 42, 51, 71, 102, 220, 232, 234, 255, 255, 255, 255, + 255, 254, 253, 248, 246, 241, 160, 121, 121, 86, 78, 81, 76, 61, 102, 66, + 92, 95, 103, 112, 131, 150, 175, 190, 193, 190, 192, 196, 203, 200, 198, 199, + 203, 207, 209, 210, 210, 210, 211, 213, 217, 220, 222, 226, 228, 231, 231, 231, + 232, 232, 232, 233, 232, 232, 233, 233, 233, 232, 230, 229, 229, 228, 226, 224, + 219, 217, 214, 214, 208, 206, 206, 204, 202, 200, 199, 198, 191, 189, 186, 185, + 186, 186, 182, 181, 180, 180, 179, 178, 174, 169, 163, 156, 141, 108, 100, 84, + 49, 42, 53, 47, 31, 38, 36, 46, 50, 52, 65, 74, 109, 224, 236, 231, + 255, 255, 255, 255, 255, 254, 253, 248, 243, 238, 147, 111, 112, 73, 60, 77, + 56, 48, 89, 67, 92, 96, 104, 111, 138, 156, 179, 192, 195, 192, 196, 200, + 202, 201, 200, 201, 206, 208, 211, 211, 209, 209, 211, 213, 214, 216, 218, 221, + 226, 228, 228, 229, 229, 230, 230, 230, 232, 232, 233, 233, 232, 231, 230, 230, + 226, 226, 224, 223, 219, 217, 215, 215, 210, 208, 207, 204, 202, 200, 198, 197, + 192, 190, 187, 186, 186, 186, 183, 181, 180, 183, 186, 185, 179, 173, 167, 162, + 141, 116, 111, 93, 60, 47, 51, 42, 36, 53, 45, 51, 54, 44, 65, 64, + 96, 214, 237, 231, 255, 255, 255, 255, 255, 254, 253, 248, 240, 235, 140, 112, + 111, 69, 47, 69, 52, 46, 77, 63, 86, 96, 110, 123, 150, 164, 187, 196, + 199, 197, 201, 204, 201, 201, 201, 203, 207, 209, 210, 209, 210, 210, 212, 212, + 214, 215, 217, 219, 224, 226, 227, 227, 228, 228, 228, 228, 232, 232, 232, 232, + 231, 231, 230, 230, 225, 224, 223, 222, 219, 218, 216, 216, 215, 213, 211, 206, + 202, 198, 195, 193, 193, 191, 188, 187, 187, 186, 183, 181, 180, 185, 190, 190, + 182, 175, 170, 166, 147, 130, 119, 98, 68, 53, 55, 49, 51, 73, 65, 62, + 56, 32, 63, 57, 77, 191, 235, 236, 255, 255, 255, 255, 255, 254, 253, 248, + 244, 233, 132, 112, 105, 75, 55, 74, 64, 56, 67, 57, 75, 88, 113, 132, + 158, 171, 190, 198, 200, 199, 202, 205, 202, 202, 202, 205, 207, 208, 209, 207, + 214, 214, 214, 214, 217, 219, 220, 222, 225, 227, 227, 228, 228, 228, 229, 229, + 232, 232, 231, 231, 230, 230, 230, 230, 224, 224, 223, 223, 220, 219, 217, 217, + 216, 213, 212, 207, 202, 199, 196, 194, 195, 192, 189, 188, 187, 187, 183, 182, + 179, 185, 190, 190, 183, 176, 172, 167, 153, 138, 120, 95, 72, 60, 59, 54, + 55, 62, 61, 55, 62, 39, 69, 68, 96, 190, 236, 240, 255, 255, 255, 255, + 255, 254, 253, 248, 248, 225, 120, 104, 89, 83, 74, 83, 72, 61, 57, 52, + 65, 81, 115, 136, 164, 176, 190, 196, 198, 198, 201, 204, 204, 204, 204, 206, + 208, 209, 210, 208, 216, 216, 216, 216, 220, 221, 222, 224, 227, 229, 230, 230, + 230, 231, 231, 231, 232, 232, 231, 230, 229, 229, 230, 230, 226, 225, 225, 224, + 221, 220, 218, 217, 212, 210, 210, 207, 204, 202, 201, 199, 196, 193, 190, 189, + 188, 187, 184, 182, 181, 184, 187, 188, 183, 178, 174, 169, 157, 142, 118, 92, + 73, 64, 57, 51, 63, 44, 55, 43, 65, 50, 72, 86, 156, 213, 240, 238, + 255, 255, 255, 255, 255, 254, 253, 248, 246, 211, 107, 95, 70, 81, 77, 69, + 60, 55, 49, 56, 69, 87, 122, 144, 169, 179, 191, 198, 201, 200, 203, 205, + 208, 207, 206, 208, 212, 213, 215, 214, 216, 216, 219, 220, 221, 223, 224, 226, + 230, 232, 233, 233, 234, 234, 234, 234, 233, 232, 230, 229, 229, 229, 230, 230, + 228, 227, 226, 225, 222, 220, 218, 218, 212, 210, 210, 207, 205, 204, 202, 201, + 197, 194, 191, 189, 189, 188, 184, 182, 184, 184, 185, 186, 183, 181, 176, 170, + 157, 146, 122, 95, 83, 68, 50, 38, 68, 40, 78, 51, 61, 45, 74, 126, + 214, 235, 243, 239, 255, 255, 255, 255, 255, 255, 253, 248, 237, 198, 99, 91, + 57, 74, 68, 45, 43, 45, 44, 63, 78, 100, 132, 154, 176, 185, 196, 200, + 203, 202, 205, 207, 212, 210, 209, 209, 213, 215, 217, 217, 216, 216, 219, 220, + 221, 223, 225, 227, 232, 235, 235, 235, 236, 236, 236, 237, 233, 232, 230, 229, + 228, 229, 230, 231, 229, 229, 228, 226, 222, 221, 219, 218, 215, 212, 212, 208, + 205, 202, 200, 199, 198, 195, 192, 190, 189, 188, 184, 182, 186, 184, 183, 184, + 184, 183, 178, 171, 158, 150, 127, 102, 93, 74, 47, 30, 61, 43, 110, 69, + 57, 36, 80, 174, 239, 241, 243, 242, 255, 255, 255, 255, 255, 255, 253, 248, + 248, 183, 107, 75, 74, 54, 86, 53, 56, 50, 61, 74, 80, 98, 134, 158, + 176, 184, 194, 199, 203, 204, 205, 207, 209, 210, 210, 212, 215, 217, 218, 219, + 220, 220, 221, 222, 225, 227, 229, 229, 234, 236, 237, 237, 237, 236, 235, 234, + 235, 233, 230, 227, 226, 226, 226, 227, 229, 228, 227, 226, 224, 225, 225, 226, + 219, 215, 212, 207, 204, 203, 202, 202, 203, 199, 194, 191, 189, 188, 184, 182, + 184, 184, 183, 182, 178, 176, 174, 170, 160, 162, 124, 113, 77, 69, 51, 34, + 49, 38, 107, 68, 67, 41, 73, 196, 237, 245, 245, 250, 255, 255, 255, 255, + 255, 255, 254, 248, 240, 205, 129, 82, 60, 59, 71, 66, 59, 50, 55, 65, + 76, 104, 138, 154, 181, 186, 195, 201, 203, 204, 205, 206, 210, 209, 208, 208, + 211, 213, 215, 216, 217, 219, 221, 224, 227, 228, 229, 231, 237, 238, 238, 238, + 238, 237, 236, 235, 232, 231, 228, 226, 224, 225, 226, 226, 229, 228, 227, 227, + 225, 225, 225, 226, 221, 218, 216, 211, 208, 207, 206, 205, 201, 198, 194, 191, + 190, 188, 182, 180, 183, 183, 183, 183, 180, 178, 177, 174, 157, 161, 125, 111, + 75, 66, 57, 47, 51, 48, 97, 65, 70, 38, 76, 185, 239, 247, 247, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 238, 228, 152, 81, 54, 80, 61, 79, + 69, 60, 57, 62, 80, 118, 153, 162, 186, 189, 196, 201, 203, 203, 206, 207, + 210, 209, 210, 210, 210, 212, 216, 217, 217, 219, 223, 226, 228, 229, 231, 231, + 236, 236, 236, 237, 236, 235, 234, 234, 235, 233, 232, 230, 230, 230, 231, 232, + 229, 229, 228, 228, 226, 226, 226, 226, 220, 218, 217, 214, 211, 209, 207, 206, + 200, 198, 196, 194, 193, 189, 183, 179, 180, 181, 181, 181, 179, 178, 177, 174, + 161, 165, 132, 114, 76, 60, 59, 58, 49, 58, 80, 64, 83, 48, 105, 194, + 243, 250, 250, 255, 255, 255, 255, 255, 255, 255, 255, 248, 246, 240, 173, 71, + 60, 98, 64, 85, 69, 64, 62, 67, 87, 131, 168, 178, 191, 195, 200, 201, + 203, 203, 206, 206, 209, 210, 214, 215, 216, 217, 219, 219, 223, 223, 225, 226, + 227, 228, 231, 232, 232, 233, 233, 233, 233, 232, 231, 230, 235, 234, 233, 233, + 233, 233, 235, 235, 230, 230, 229, 229, 227, 227, 227, 227, 217, 215, 215, 213, + 211, 208, 206, 204, 203, 202, 201, 200, 198, 194, 186, 182, 178, 178, 178, 178, + 175, 174, 173, 170, 165, 169, 148, 124, 84, 54, 60, 64, 50, 68, 66, 62, + 97, 68, 152, 222, 247, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 248, + 248, 241, 202, 74, 62, 87, 65, 83, 57, 57, 63, 69, 90, 134, 174, 185, + 196, 198, 200, 201, 203, 206, 206, 206, 211, 214, 219, 223, 227, 226, 224, 222, + 229, 228, 225, 223, 225, 227, 230, 231, 230, 231, 231, 231, 231, 230, 229, 228, + 229, 229, 228, 228, 229, 229, 230, 230, 229, 229, 229, 230, 228, 227, 226, 226, + 215, 213, 214, 212, 210, 208, 206, 204, 206, 206, 205, 205, 203, 199, 190, 185, + 180, 180, 179, 178, 174, 172, 171, 167, 166, 170, 158, 136, 99, 56, 62, 66, + 58, 73, 58, 60, 94, 78, 187, 237, 250, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 245, 239, 231, 103, 57, 58, 61, 74, 54, 54, 66, 82, + 105, 143, 181, 191, 202, 200, 200, 202, 206, 207, 207, 207, 211, 215, 220, 224, + 228, 227, 224, 221, 227, 225, 222, 220, 222, 224, 226, 228, 229, 229, 229, 230, + 229, 228, 227, 227, 227, 227, 227, 227, 227, 228, 228, 228, 225, 226, 227, 227, + 225, 225, 223, 222, 215, 213, 213, 211, 209, 208, 207, 207, 208, 207, 206, 206, + 204, 200, 192, 187, 184, 183, 182, 181, 177, 174, 172, 171, 165, 168, 162, 144, + 115, 62, 65, 67, 71, 71, 59, 61, 76, 75, 201, 236, 251, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 246, 235, 239, 148, 58, 52, 63, 60, + 63, 58, 73, 100, 129, 159, 187, 194, 204, 201, 200, 201, 206, 209, 211, 210, + 213, 214, 216, 217, 220, 219, 217, 216, 216, 216, 219, 220, 221, 222, 222, 222, + 224, 224, 224, 224, 224, 223, 222, 222, 226, 226, 226, 227, 226, 226, 225, 225, + 220, 221, 222, 223, 221, 220, 218, 217, 213, 210, 210, 207, 206, 206, 206, 206, + 206, 205, 203, 202, 200, 197, 189, 185, 182, 182, 182, 181, 178, 176, 174, 173, + 169, 166, 163, 147, 124, 64, 65, 62, 79, 65, 67, 65, 62, 74, 210, 234, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 234, 232, 181, + 66, 67, 71, 50, 70, 58, 73, 110, 143, 170, 189, 195, 207, 204, 201, 203, + 206, 209, 210, 209, 213, 210, 208, 206, 207, 206, 207, 207, 202, 205, 210, 214, + 218, 216, 216, 215, 212, 214, 214, 213, 214, 212, 212, 211, 217, 217, 217, 219, + 219, 218, 217, 216, 214, 214, 215, 216, 216, 213, 212, 209, 207, 204, 202, 201, + 199, 200, 201, 202, 202, 198, 198, 194, 194, 189, 184, 181, 176, 177, 177, 177, + 175, 174, 173, 172, 176, 169, 166, 150, 128, 64, 62, 55, 78, 58, 73, 70, + 59, 83, 226, 243, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 236, 237, 206, 92, 74, 77, 52, 67, 85, 65, 126, 156, 175, 206, 202, + 206, 215, 212, 208, 211, 206, 201, 209, 209, 199, 195, 197, 196, 191, 190, 193, + 187, 190, 191, 193, 201, 207, 210, 206, 197, 199, 193, 187, 201, 177, 204, 192, + 202, 207, 206, 207, 214, 210, 208, 216, 208, 200, 201, 207, 207, 200, 198, 202, + 200, 201, 187, 197, 180, 188, 182, 192, 185, 194, 196, 184, 178, 180, 181, 177, + 177, 166, 179, 171, 179, 169, 180, 168, 172, 173, 184, 162, 151, 83, 80, 62, + 73, 47, 87, 54, 75, 82, 230, 242, 252, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 242, 246, 227, 132, 83, 77, 50, 66, 78, 72, 131, + 159, 185, 206, 207, 216, 217, 207, 198, 207, 210, 204, 198, 183, 172, 164, 162, + 158, 153, 151, 154, 151, 161, 169, 169, 168, 168, 168, 167, 154, 154, 141, 150, + 155, 141, 154, 148, 187, 200, 206, 202, 206, 207, 210, 216, 199, 194, 191, 186, + 185, 184, 181, 172, 178, 174, 167, 172, 167, 173, 173, 179, 171, 170, 165, 157, + 154, 154, 154, 151, 168, 164, 174, 172, 173, 169, 174, 169, 177, 176, 189, 170, + 159, 82, 72, 57, 75, 43, 74, 74, 90, 114, 226, 248, 252, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 247, 238, 173, 87, 75, 54, + 71, 75, 86, 140, 169, 199, 204, 212, 215, 212, 204, 199, 208, 216, 204, 185, + 161, 152, 144, 141, 138, 135, 135, 137, 140, 153, 163, 157, 145, 137, 135, 135, + 116, 111, 99, 116, 117, 107, 112, 114, 155, 189, 206, 200, 201, 207, 212, 214, + 195, 191, 181, 167, 166, 170, 163, 144, 154, 142, 142, 140, 151, 148, 152, 154, + 161, 164, 166, 162, 150, 140, 142, 150, 146, 155, 160, 170, 164, 167, 163, 167, + 180, 177, 188, 177, 170, 84, 71, 60, 66, 46, 63, 72, 93, 158, 223, 250, + 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 240, 237, + 203, 95, 74, 67, 79, 79, 104, 155, 182, 211, 203, 217, 211, 205, 204, 204, + 195, 182, 167, 151, 125, 119, 113, 109, 106, 103, 100, 98, 98, 107, 111, 102, + 89, 83, 82, 83, 73, 64, 68, 76, 84, 67, 76, 84, 109, 163, 198, 198, + 201, 208, 212, 209, 191, 177, 161, 150, 149, 146, 135, 122, 126, 108, 109, 98, + 117, 102, 110, 109, 124, 120, 123, 130, 126, 113, 106, 109, 114, 133, 136, 158, + 156, 174, 172, 189, 180, 178, 188, 181, 181, 91, 75, 71, 53, 56, 68, 53, + 106, 204, 239, 245, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 242, 241, 229, 122, 81, 77, 91, 92, 120, 172, 197, 220, 205, 219, + 220, 204, 206, 199, 155, 117, 108, 110, 102, 101, 99, 94, 90, 84, 76, 69, + 55, 56, 50, 41, 36, 39, 43, 44, 48, 35, 59, 51, 67, 44, 60, 71, + 70, 137, 189, 199, 205, 209, 207, 199, 179, 148, 127, 126, 124, 111, 102, 101, + 93, 70, 67, 54, 68, 47, 54, 52, 78, 59, 51, 65, 79, 77, 65, 57, + 46, 65, 59, 79, 91, 123, 135, 168, 179, 181, 188, 182, 192, 102, 83, 84, + 56, 63, 81, 60, 157, 233, 251, 249, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 249, 243, 245, 240, 157, 85, 76, 95, 103, 124, 185, + 208, 219, 212, 218, 227, 208, 207, 185, 123, 87, 97, 109, 108, 112, 114, 114, + 114, 112, 104, 96, 78, 70, 55, 41, 37, 41, 42, 38, 36, 28, 54, 41, + 54, 45, 51, 61, 56, 123, 181, 199, 209, 212, 206, 195, 175, 136, 110, 108, + 103, 84, 77, 82, 68, 47, 39, 35, 37, 22, 25, 30, 41, 40, 40, 41, + 40, 43, 54, 66, 60, 70, 51, 50, 69, 93, 110, 144, 171, 180, 189, 182, + 199, 112, 88, 87, 62, 61, 81, 85, 217, 240, 250, 253, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 247, 244, 238, 192, 90, 77, + 91, 109, 120, 191, 213, 214, 217, 217, 220, 208, 207, 175, 115, 103, 123, 127, + 117, 123, 127, 128, 130, 132, 127, 119, 108, 99, 82, 65, 57, 55, 52, 46, + 36, 37, 44, 48, 39, 64, 41, 52, 71, 129, 180, 201, 213, 214, 206, 198, + 179, 144, 113, 99, 88, 73, 66, 68, 55, 40, 30, 39, 34, 31, 31, 45, + 31, 48, 59, 52, 41, 47, 69, 88, 85, 91, 75, 58, 81, 78, 82, 103, + 152, 174, 188, 181, 205, 122, 95, 89, 66, 72, 73, 98, 241, 240, 247, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 246, + 234, 216, 103, 89, 87, 111, 114, 194, 214, 208, 222, 215, 213, 210, 211, 171, + 117, 121, 141, 125, 142, 148, 147, 142, 141, 141, 134, 125, 116, 113, 102, 89, + 80, 76, 72, 65, 66, 76, 61, 85, 54, 109, 62, 72, 89, 139, 180, 202, + 215, 215, 208, 202, 181, 154, 120, 91, 74, 66, 60, 57, 46, 39, 28, 48, + 38, 45, 44, 65, 65, 69, 71, 74, 87, 102, 103, 93, 97, 109, 108, 91, + 121, 98, 87, 94, 134, 166, 184, 179, 209, 131, 100, 91, 68, 93, 71, 95, + 238, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 247, 241, 244, 228, 103, 76, 79, 97, 150, 181, 223, 219, 226, 215, + 211, 208, 189, 159, 139, 138, 147, 152, 139, 150, 155, 150, 139, 126, 106, 88, + 93, 86, 83, 65, 67, 57, 79, 60, 46, 85, 78, 109, 77, 92, 80, 81, + 105, 143, 192, 200, 220, 210, 225, 212, 184, 164, 120, 91, 71, 63, 74, 68, + 77, 39, 36, 59, 50, 26, 40, 71, 57, 78, 84, 81, 91, 105, 118, 130, + 132, 133, 137, 139, 128, 112, 109, 115, 132, 152, 187, 199, 194, 147, 92, 95, + 65, 101, 81, 108, 232, 244, 248, 254, 255, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 243, 245, 235, 234, 230, 78, 94, 77, 93, 149, 187, + 220, 212, 218, 211, 209, 199, 177, 153, 146, 153, 160, 161, 159, 148, 132, 117, + 100, 90, 96, 108, 98, 78, 75, 63, 58, 51, 54, 51, 57, 68, 48, 77, + 77, 104, 109, 109, 118, 159, 200, 206, 225, 218, 231, 213, 187, 171, 134, 111, + 97, 88, 91, 78, 53, 41, 38, 36, 34, 45, 53, 50, 45, 71, 75, 64, + 71, 94, 118, 138, 171, 147, 142, 159, 158, 132, 120, 127, 140, 155, 185, 194, + 192, 149, 95, 97, 60, 102, 92, 155, 227, 232, 247, 255, 255, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 248, 237, 230, 232, 67, 104, + 68, 80, 139, 191, 220, 212, 219, 219, 212, 195, 171, 152, 155, 168, 171, 163, + 167, 129, 98, 95, 97, 86, 79, 81, 76, 42, 41, 43, 38, 41, 24, 49, + 40, 43, 33, 46, 54, 67, 97, 113, 125, 182, 213, 214, 231, 228, 238, 216, + 208, 195, 155, 134, 117, 96, 87, 65, 33, 34, 34, 22, 24, 45, 48, 25, + 38, 46, 38, 32, 53, 83, 103, 116, 128, 146, 162, 165, 165, 167, 164, 157, + 152, 162, 184, 191, 193, 156, 100, 98, 70, 90, 100, 202, 239, 244, 245, 244, + 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 247, 241, 238, 227, + 220, 222, 97, 91, 78, 78, 131, 195, 220, 214, 220, 221, 217, 201, 177, 159, + 160, 171, 165, 153, 148, 115, 90, 95, 105, 99, 81, 68, 77, 30, 21, 27, + 23, 40, 16, 68, 55, 49, 44, 40, 47, 34, 70, 84, 119, 196, 223, 223, + 235, 233, 244, 221, 221, 210, 170, 142, 112, 82, 69, 47, 40, 35, 43, 48, + 38, 29, 26, 19, 34, 27, 22, 36, 64, 77, 85, 99, 113, 142, 165, 166, + 164, 165, 154, 140, 163, 171, 186, 192, 198, 164, 106, 98, 92, 81, 127, 207, + 229, 242, 239, 237, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 245, + 244, 220, 204, 191, 192, 194, 153, 84, 107, 95, 137, 203, 216, 214, 215, 211, + 217, 208, 191, 174, 166, 165, 155, 139, 124, 117, 103, 89, 84, 94, 108, 116, + 125, 66, 32, 20, 17, 43, 32, 101, 121, 90, 62, 44, 62, 46, 72, 69, + 106, 204, 226, 232, 237, 233, 247, 230, 219, 210, 173, 141, 103, 73, 67, 51, + 56, 56, 77, 90, 62, 26, 19, 22, 33, 22, 33, 75, 103, 91, 85, 104, + 106, 86, 101, 156, 187, 175, 161, 168, 166, 173, 187, 193, 200, 167, 105, 91, + 95, 78, 164, 177, 183, 211, 226, 251, 254, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 243, 243, 202, 166, 151, 156, 172, 199, 119, 116, 101, 140, 208, + 211, 216, 218, 212, 211, 212, 203, 185, 171, 164, 151, 136, 119, 119, 108, 90, + 87, 106, 132, 146, 153, 101, 47, 13, 19, 47, 63, 130, 145, 114, 75, 45, + 56, 50, 85, 88, 104, 211, 222, 238, 240, 232, 244, 234, 222, 217, 181, 143, + 102, 70, 69, 58, 61, 77, 107, 110, 75, 42, 29, 21, 41, 15, 26, 92, + 144, 128, 93, 89, 126, 107, 113, 148, 168, 158, 150, 160, 166, 174, 187, 192, + 199, 168, 104, 86, 83, 80, 172, 161, 172, 194, 198, 223, 252, 254, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 241, 239, 189, 145, 130, 131, 160, 196, 166, + 103, 99, 145, 214, 206, 220, 225, 218, 210, 213, 208, 191, 178, 166, 153, 137, + 129, 125, 121, 118, 116, 120, 130, 140, 149, 123, 72, 30, 51, 67, 97, 143, + 128, 119, 91, 66, 66, 65, 99, 105, 115, 221, 216, 239, 243, 232, 239, 232, + 226, 221, 185, 151, 111, 78, 72, 57, 64, 78, 105, 115, 91, 62, 46, 29, + 43, 27, 42, 104, 159, 149, 107, 87, 85, 106, 127, 137, 148, 164, 175, 178, + 172, 181, 192, 192, 199, 169, 104, 87, 76, 108, 158, 169, 179, 178, 170, 184, + 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 252, 241, 226, 178, 133, 122, + 118, 150, 166, 189, 100, 104, 155, 222, 202, 216, 223, 215, 212, 215, 209, 193, + 180, 171, 158, 141, 141, 145, 154, 153, 130, 108, 120, 147, 150, 149, 109, 68, + 94, 92, 120, 141, 127, 125, 101, 97, 109, 118, 123, 105, 131, 230, 212, 238, + 244, 232, 236, 229, 216, 211, 180, 152, 118, 88, 78, 60, 77, 70, 93, 119, + 107, 74, 54, 41, 31, 59, 97, 134, 152, 138, 122, 122, 91, 95, 114, 144, + 162, 163, 162, 165, 178, 186, 195, 194, 200, 172, 110, 93, 86, 154, 158, 180, + 160, 134, 148, 187, 250, 254, 254, 255, 255, 255, 255, 255, 255, 255, 247, 244, + 235, 174, 136, 110, 119, 153, 172, 181, 115, 111, 163, 218, 211, 231, 224, 226, + 217, 217, 210, 202, 194, 190, 185, 178, 176, 177, 175, 171, 162, 146, 131, 121, + 140, 150, 130, 103, 112, 123, 122, 126, 125, 123, 122, 127, 136, 140, 139, 136, + 162, 217, 224, 225, 246, 241, 232, 224, 207, 200, 190, 172, 150, 128, 115, 109, + 109, 110, 106, 102, 113, 123, 110, 85, 89, 93, 122, 123, 129, 111, 135, 153, + 144, 138, 143, 159, 169, 169, 174, 180, 182, 179, 182, 192, 192, 169, 127, 95, + 96, 152, 166, 172, 139, 124, 131, 156, 247, 254, 254, 254, 255, 255, 255, 255, + 255, 255, 249, 244, 230, 182, 129, 126, 121, 178, 166, 165, 122, 111, 166, 216, + 219, 236, 234, 231, 219, 219, 213, 207, 203, 202, 199, 193, 193, 192, 192, 188, + 181, 168, 153, 144, 136, 142, 133, 118, 119, 120, 114, 110, 126, 131, 138, 141, + 145, 145, 148, 149, 182, 226, 225, 227, 248, 241, 229, 215, 206, 197, 187, 170, + 155, 144, 142, 143, 119, 120, 115, 111, 122, 133, 123, 100, 97, 99, 124, 100, + 121, 109, 151, 161, 163, 159, 158, 162, 170, 175, 184, 190, 187, 182, 185, 194, + 195, 173, 134, 103, 93, 168, 180, 163, 123, 121, 129, 140, 245, 254, 254, 254, + 255, 255, 255, 255, 255, 255, 255, 244, 229, 189, 121, 134, 118, 198, 165, 156, + 135, 116, 171, 211, 226, 231, 237, 229, 219, 219, 218, 212, 211, 212, 213, 209, + 209, 207, 206, 200, 192, 182, 171, 164, 161, 150, 143, 135, 126, 127, 133, 132, + 140, 147, 156, 157, 154, 156, 166, 176, 201, 234, 225, 229, 248, 242, 229, 209, + 201, 194, 188, 176, 168, 162, 165, 167, 141, 140, 133, 124, 129, 136, 127, 108, + 114, 112, 135, 93, 126, 119, 166, 165, 178, 181, 179, 177, 179, 186, 194, 194, + 192, 189, 191, 199, 199, 181, 143, 111, 94, 170, 183, 164, 119, 116, 128, 145, + 245, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 244, 234, 193, 123, 124, + 114, 201, 176, 163, 150, 119, 174, 206, 228, 226, 233, 224, 219, 219, 218, 214, + 215, 219, 222, 219, 218, 214, 211, 204, 195, 186, 177, 171, 173, 149, 147, 149, + 132, 135, 149, 152, 161, 166, 169, 168, 167, 174, 190, 203, 208, 230, 223, 230, + 246, 239, 228, 209, 194, 192, 194, 191, 185, 176, 172, 168, 162, 159, 151, 138, + 137, 142, 134, 122, 135, 132, 149, 121, 146, 140, 172, 170, 177, 190, 195, 191, + 189, 196, 198, 193, 198, 194, 194, 201, 203, 187, 150, 116, 95, 157, 174, 177, + 130, 107, 123, 163, 247, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 246, + 238, 197, 147, 124, 131, 195, 191, 173, 148, 115, 169, 205, 228, 224, 232, 222, + 221, 222, 221, 219, 219, 225, 228, 225, 220, 217, 214, 207, 201, 193, 186, 182, + 182, 164, 171, 181, 164, 158, 165, 165, 177, 181, 183, 184, 189, 196, 206, 215, + 210, 227, 224, 233, 239, 226, 223, 210, 193, 194, 200, 200, 195, 185, 177, 169, + 168, 168, 163, 154, 155, 159, 160, 155, 166, 160, 158, 161, 162, 162, 171, 184, + 177, 191, 197, 194, 193, 200, 202, 197, 199, 197, 195, 200, 206, 193, 153, 116, + 91, 154, 175, 181, 134, 111, 128, 172, 247, 254, 254, 254, 255, 255, 255, 255, + 255, 255, 255, 246, 239, 201, 178, 144, 161, 193, 192, 165, 133, 102, 157, 205, + 223, 225, 230, 227, 224, 227, 225, 223, 224, 229, 233, 230, 223, 220, 218, 215, + 211, 206, 200, 197, 201, 189, 189, 187, 175, 171, 178, 186, 186, 190, 195, 202, + 210, 213, 215, 214, 215, 225, 227, 238, 234, 217, 218, 207, 200, 200, 201, 200, + 199, 193, 189, 184, 175, 175, 172, 163, 161, 165, 169, 170, 185, 178, 166, 181, + 170, 177, 178, 198, 187, 191, 191, 190, 191, 197, 202, 203, 198, 195, 195, 198, + 204, 192, 151, 111, 94, 172, 193, 184, 137, 134, 154, 183, 247, 254, 254, 254, + 255, 255, 255, 255, 255, 255, 255, 248, 245, 210, 199, 168, 182, 193, 180, 146, + 118, 92, 146, 207, 215, 228, 225, 228, 222, 224, 223, 221, 224, 230, 235, 233, + 228, 226, 225, 222, 219, 215, 212, 208, 201, 197, 183, 170, 167, 168, 175, 193, + 199, 203, 206, 210, 214, 215, 217, 216, 221, 225, 227, 242, 233, 214, 216, 205, + 207, 205, 204, 202, 201, 199, 196, 193, 188, 190, 186, 173, 165, 162, 165, 167, + 179, 179, 176, 179, 177, 182, 190, 199, 197, 194, 191, 194, 196, 197, 199, 200, + 194, 192, 192, 197, 201, 190, 146, 104, 107, 181, 200, 191, 148, 150, 175, 207, + 249, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 249, 248, 219, 205, 182, + 184, 192, 167, 134, 110, 90, 139, 210, 210, 227, 219, 225, 219, 219, 220, 216, + 221, 229, 233, 233, 232, 231, 230, 226, 222, 216, 211, 208, 198, 209, 200, 187, + 193, 191, 189, 205, 214, 215, 213, 208, 208, 212, 218, 224, 223, 223, 226, 244, + 237, 219, 221, 207, 207, 205, 207, 208, 205, 201, 195, 190, 198, 200, 196, 183, + 173, 168, 173, 174, 164, 172, 189, 176, 186, 188, 199, 191, 202, 195, 196, 204, + 208, 198, 192, 193, 191, 192, 192, 194, 199, 188, 143, 98, 113, 167, 184, 196, + 158, 147, 179, 232, 249, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 247, + 247, 238, 221, 198, 190, 194, 175, 130, 103, 108, 124, 210, 212, 229, 223, 237, + 231, 226, 223, 218, 221, 224, 229, 232, 230, 231, 231, 226, 228, 229, 225, 215, + 209, 209, 206, 200, 203, 212, 215, 211, 220, 221, 222, 216, 215, 213, 218, 222, + 217, 225, 234, 238, 233, 224, 216, 211, 212, 203, 202, 208, 211, 205, 202, 203, + 203, 199, 194, 193, 193, 188, 182, 173, 174, 175, 181, 183, 184, 188, 193, 197, + 199, 201, 206, 205, 201, 197, 194, 192, 191, 193, 195, 196, 200, 186, 134, 83, + 127, 159, 178, 202, 157, 172, 219, 233, 250, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 249, 251, 243, 231, 210, 196, 198, 179, 136, 103, 127, 121, 206, + 216, 222, 229, 230, 225, 223, 218, 216, 218, 220, 227, 231, 232, 235, 233, 231, + 231, 234, 228, 221, 217, 217, 215, 210, 213, 219, 221, 217, 220, 221, 222, 219, + 216, 216, 217, 220, 218, 225, 234, 238, 234, 226, 218, 213, 208, 202, 202, 208, + 209, 204, 197, 197, 194, 192, 192, 195, 198, 197, 192, 186, 182, 185, 189, 190, + 191, 193, 196, 199, 199, 201, 206, 205, 202, 198, 196, 195, 195, 196, 198, 200, + 199, 181, 139, 101, 128, 159, 178, 199, 163, 186, 232, 240, 250, 254, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 249, 250, 248, 242, 223, 206, 202, 185, 145, + 105, 149, 122, 198, 221, 219, 232, 224, 222, 219, 215, 214, 214, 218, 223, 226, + 229, 232, 232, 232, 231, 234, 232, 225, 225, 226, 225, 222, 224, 228, 227, 224, + 219, 219, 220, 217, 215, 214, 216, 218, 219, 225, 233, 237, 235, 228, 221, 215, + 206, 202, 203, 207, 206, 200, 195, 193, 192, 192, 194, 199, 205, 206, 202, 198, + 193, 196, 199, 200, 199, 198, 199, 200, 198, 201, 204, 204, 201, 199, 197, 199, + 197, 198, 199, 203, 200, 183, 156, 133, 137, 167, 185, 198, 178, 206, 243, 245, + 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 247, 246, 245, 234, + 215, 206, 191, 157, 116, 158, 138, 187, 221, 228, 228, 223, 220, 216, 212, 211, + 212, 215, 220, 223, 224, 227, 228, 229, 229, 230, 229, 228, 228, 228, 228, 229, + 229, 230, 228, 224, 222, 218, 216, 213, 212, 213, 216, 219, 220, 225, 232, 235, + 234, 229, 222, 217, 210, 207, 207, 207, 205, 200, 195, 193, 201, 200, 200, 202, + 204, 205, 204, 201, 200, 202, 204, 204, 203, 201, 198, 197, 198, 200, 203, 203, + 202, 200, 200, 200, 201, 197, 199, 205, 206, 193, 178, 167, 148, 173, 193, 200, + 197, 224, 246, 244, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 245, 244, 249, 243, 224, 215, 201, 176, 130, 155, 162, 180, 217, 241, 218, 229, + 220, 216, 213, 211, 211, 214, 219, 221, 222, 222, 224, 226, 226, 226, 225, 226, + 227, 226, 226, 229, 229, 227, 224, 222, 222, 215, 211, 207, 207, 211, 216, 221, + 220, 223, 229, 232, 232, 228, 224, 216, 211, 208, 207, 203, 199, 196, 194, 192, + 206, 203, 200, 198, 198, 199, 200, 200, 202, 203, 203, 203, 202, 199, 195, 193, + 195, 198, 200, 201, 200, 199, 199, 201, 205, 196, 194, 202, 209, 202, 190, 179, + 149, 169, 197, 201, 215, 236, 247, 239, 252, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 250, 246, 251, 248, 235, 224, 214, 193, 147, 156, 184, 188, + 218, 243, 218, 232, 222, 218, 215, 212, 212, 212, 216, 218, 220, 221, 223, 226, + 225, 223, 223, 227, 224, 221, 221, 225, 226, 223, 220, 218, 218, 211, 205, 204, + 206, 211, 217, 220, 220, 222, 226, 228, 229, 225, 221, 213, 205, 207, 206, 200, + 195, 193, 190, 187, 201, 199, 196, 194, 194, 196, 198, 200, 202, 201, 200, 199, + 199, 197, 194, 191, 194, 196, 198, 198, 197, 196, 197, 199, 206, 200, 194, 198, + 207, 203, 188, 170, 148, 159, 195, 200, 228, 243, 245, 241, 252, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 246, 250, 248, 238, 228, 220, 203, + 162, 168, 194, 205, 222, 235, 228, 228, 222, 219, 213, 211, 210, 210, 212, 213, + 218, 216, 218, 221, 219, 216, 218, 225, 223, 218, 217, 222, 223, 220, 218, 218, + 211, 206, 203, 204, 208, 212, 215, 216, 218, 220, 222, 225, 227, 224, 218, 209, + 199, 203, 206, 201, 195, 192, 189, 183, 194, 195, 196, 197, 198, 199, 200, 202, + 202, 200, 197, 197, 197, 196, 193, 191, 192, 194, 193, 193, 192, 191, 193, 196, + 201, 202, 199, 199, 204, 203, 186, 162, 157, 159, 197, 202, 240, 245, 242, 247, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 246, 250, + 239, 229, 221, 208, 177, 188, 202, 223, 229, 223, 239, 224, 224, 221, 215, 212, + 210, 209, 208, 209, 213, 211, 213, 216, 214, 209, 212, 219, 222, 216, 215, 219, + 223, 217, 219, 220, 208, 206, 206, 209, 214, 216, 215, 213, 218, 217, 220, 221, + 223, 220, 213, 207, 196, 206, 212, 209, 202, 197, 190, 181, 194, 197, 202, 204, + 204, 203, 202, 202, 202, 199, 196, 195, 197, 197, 195, 193, 191, 193, 192, 191, + 190, 189, 191, 194, 192, 202, 204, 200, 204, 204, 188, 163, 171, 168, 204, 208, + 246, 250, 241, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 249, 253, 247, 240, 225, 209, 229, 200, 213, 218, 224, 234, 232, 228, 232, + 224, 219, 217, 214, 210, 207, 206, 205, 203, 207, 210, 213, 214, 212, 210, 209, + 216, 216, 216, 213, 214, 210, 210, 208, 214, 214, 215, 216, 220, 220, 218, 216, + 213, 217, 212, 209, 218, 216, 203, 193, 200, 205, 206, 205, 206, 208, 198, 184, + 192, 193, 194, 197, 199, 200, 200, 200, 195, 194, 195, 192, 191, 191, 191, 191, + 188, 191, 193, 193, 191, 191, 191, 194, 198, 196, 203, 207, 206, 203, 188, 161, + 165, 183, 206, 229, 246, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 247, 255, 247, 243, 227, 212, 231, 216, 223, 221, 224, + 234, 233, 227, 230, 224, 221, 218, 214, 212, 207, 206, 204, 203, 205, 207, 209, + 210, 209, 207, 206, 207, 208, 210, 210, 210, 208, 205, 207, 217, 218, 218, 218, + 217, 218, 215, 212, 196, 207, 212, 208, 212, 206, 202, 208, 205, 207, 207, 205, + 210, 217, 216, 208, 191, 192, 193, 196, 198, 199, 199, 199, 193, 193, 192, 191, + 191, 190, 189, 189, 189, 191, 193, 193, 191, 190, 191, 192, 196, 192, 200, 205, + 203, 201, 188, 166, 179, 188, 209, 234, 250, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 248, 244, 229, 212, 226, + 226, 227, 219, 220, 231, 232, 226, 228, 224, 222, 218, 214, 212, 207, 205, 204, + 203, 204, 206, 207, 208, 207, 205, 204, 202, 204, 206, 208, 208, 206, 204, 205, + 206, 214, 223, 230, 232, 226, 216, 207, 210, 204, 194, 195, 208, 203, 188, 184, + 180, 190, 198, 200, 205, 211, 209, 201, 189, 190, 193, 196, 198, 199, 199, 197, + 190, 191, 191, 190, 189, 188, 187, 186, 189, 191, 192, 192, 190, 189, 190, 191, + 196, 192, 199, 204, 201, 202, 192, 174, 193, 193, 211, 236, 251, 252, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, + 244, 232, 214, 225, 227, 224, 213, 211, 225, 228, 225, 226, 223, 220, 218, 214, + 212, 208, 205, 204, 205, 205, 206, 206, 206, 205, 205, 204, 205, 205, 205, 205, + 205, 206, 206, 208, 215, 219, 224, 224, 221, 211, 198, 189, 190, 192, 189, 190, + 195, 193, 190, 200, 196, 201, 196, 189, 191, 206, 216, 217, 187, 189, 191, 193, + 195, 195, 196, 195, 187, 188, 188, 188, 187, 186, 184, 183, 186, 188, 190, 190, + 188, 187, 187, 188, 199, 194, 200, 205, 202, 203, 197, 185, 205, 196, 209, 237, + 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 244, 245, 238, 220, 227, 224, 217, 205, 204, 220, 226, 223, 225, + 222, 221, 218, 214, 212, 208, 204, 203, 207, 207, 206, 205, 204, 204, 204, 204, + 207, 205, 203, 201, 201, 203, 206, 210, 221, 219, 217, 214, 213, 211, 208, 205, + 194, 191, 179, 178, 192, 195, 184, 178, 177, 187, 196, 195, 196, 204, 203, 197, + 188, 189, 192, 193, 194, 193, 194, 192, 187, 185, 185, 185, 184, 183, 182, 181, + 182, 185, 187, 187, 186, 185, 186, 187, 199, 194, 200, 205, 200, 200, 199, 190, + 208, 200, 210, 237, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 243, 247, 244, 227, 231, 214, 208, 198, 200, + 216, 224, 220, 223, 222, 221, 218, 216, 212, 208, 206, 203, 208, 206, 204, 202, + 201, 201, 202, 202, 204, 202, 200, 198, 199, 202, 207, 209, 213, 216, 219, 216, + 209, 193, 175, 161, 161, 175, 174, 167, 175, 178, 169, 163, 165, 173, 179, 180, + 187, 198, 200, 196, 190, 192, 194, 195, 196, 195, 193, 192, 186, 183, 182, 180, + 179, 179, 180, 180, 179, 182, 185, 186, 185, 185, 187, 188, 197, 192, 198, 205, + 198, 193, 194, 191, 209, 205, 216, 237, 251, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 250, 246, 223, 221, + 207, 205, 198, 198, 215, 221, 219, 222, 222, 221, 219, 216, 212, 207, 206, 205, + 204, 202, 199, 196, 195, 195, 196, 197, 196, 196, 198, 199, 202, 206, 209, 212, + 216, 219, 218, 207, 179, 136, 92, 65, 73, 145, 189, 174, 151, 152, 172, 194, + 139, 121, 90, 67, 80, 119, 159, 180, 196, 198, 200, 199, 199, 198, 196, 192, + 186, 182, 179, 176, 176, 176, 178, 180, 178, 181, 184, 186, 187, 187, 189, 191, + 197, 191, 199, 206, 196, 191, 192, 191, 211, 215, 226, 241, 252, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 251, 243, 216, 209, 205, 204, 199, 200, 216, 218, 218, 221, 223, 222, 219, 216, + 212, 209, 205, 204, 203, 200, 197, 193, 192, 192, 194, 195, 192, 195, 200, 205, + 210, 213, 214, 214, 217, 215, 208, 193, 167, 136, 105, 85, 101, 145, 169, 161, + 167, 177, 164, 140, 119, 101, 73, 57, 72, 110, 144, 161, 199, 201, 203, 202, + 202, 200, 199, 195, 186, 181, 177, 174, 173, 175, 178, 180, 179, 181, 185, 187, + 188, 190, 192, 194, 200, 194, 202, 209, 198, 193, 194, 193, 214, 223, 235, 243, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 246, 236, 221, 201, 203, 197, 198, 202, 212, 218, 224, 224, + 223, 219, 216, 217, 212, 207, 203, 205, 206, 200, 194, 191, 193, 195, 194, 193, + 201, 201, 202, 205, 210, 213, 214, 213, 213, 215, 217, 208, 179, 143, 120, 113, + 126, 141, 163, 166, 165, 176, 172, 144, 123, 129, 116, 114, 111, 114, 143, 155, + 197, 203, 200, 198, 206, 202, 196, 196, 189, 184, 179, 175, 174, 174, 176, 178, + 180, 184, 189, 191, 191, 190, 189, 190, 196, 195, 206, 199, 197, 202, 192, 197, + 202, 219, 238, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 240, 220, 195, 193, 192, 196, 203, + 214, 221, 223, 221, 223, 220, 217, 218, 213, 204, 202, 201, 196, 195, 195, 196, + 198, 200, 201, 200, 204, 206, 209, 212, 215, 216, 215, 213, 213, 213, 212, 203, + 178, 147, 126, 118, 120, 131, 149, 154, 153, 159, 157, 138, 124, 131, 125, 126, + 124, 125, 151, 158, 184, 194, 198, 200, 207, 207, 204, 207, 191, 186, 181, 177, + 175, 176, 178, 179, 176, 180, 186, 189, 191, 191, 192, 193, 196, 193, 205, 199, + 194, 195, 185, 194, 196, 215, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 222, 196, + 194, 191, 194, 202, 212, 222, 225, 227, 223, 220, 218, 218, 213, 204, 200, 199, + 188, 191, 195, 199, 200, 201, 202, 203, 202, 206, 210, 213, 213, 211, 210, 210, + 212, 210, 206, 199, 180, 157, 138, 130, 113, 112, 124, 133, 129, 129, 133, 124, + 106, 118, 120, 131, 135, 138, 163, 168, 184, 197, 201, 203, 208, 203, 201, 205, + 197, 191, 186, 181, 178, 178, 180, 181, 176, 180, 185, 189, 190, 190, 191, 192, + 192, 187, 204, 203, 199, 195, 190, 205, 192, 215, 241, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 229, 208, 206, 198, 193, 194, 204, 216, 228, 233, 224, 220, 218, 217, + 213, 203, 196, 197, 187, 192, 198, 200, 199, 198, 200, 202, 205, 208, 210, 211, + 209, 208, 209, 210, 209, 206, 201, 194, 183, 166, 152, 143, 118, 101, 103, 114, + 113, 108, 112, 109, 99, 112, 118, 132, 138, 142, 163, 168, 180, 195, 201, 202, + 206, 200, 197, 204, 202, 197, 191, 186, 182, 180, 181, 181, 182, 185, 188, 190, + 189, 189, 189, 189, 195, 189, 205, 206, 200, 195, 190, 206, 201, 222, 248, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 230, 215, 209, 204, 203, 209, 218, 227, 230, + 226, 220, 217, 216, 212, 202, 196, 196, 192, 196, 200, 201, 199, 199, 201, 204, + 209, 208, 207, 205, 205, 206, 210, 212, 208, 206, 199, 191, 182, 170, 160, 149, + 132, 103, 95, 106, 109, 104, 104, 102, 121, 132, 130, 139, 141, 140, 157, 159, + 168, 184, 190, 194, 199, 197, 197, 205, 199, 197, 193, 188, 185, 182, 181, 180, + 184, 187, 189, 190, 190, 189, 189, 190, 199, 192, 205, 202, 196, 192, 186, 199, + 217, 233, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 232, 231, 230, 235, + 238, 238, 234, 230, 228, 222, 217, 213, 210, 200, 197, 198, 198, 200, 202, 203, + 203, 202, 203, 204, 199, 194, 190, 189, 191, 196, 200, 202, 202, 202, 196, 186, + 178, 172, 162, 152, 140, 108, 94, 102, 105, 102, 105, 105, 133, 141, 135, 141, + 141, 139, 155, 154, 166, 177, 181, 182, 188, 183, 179, 187, 188, 188, 188, 187, + 185, 183, 181, 179, 181, 184, 187, 189, 189, 190, 192, 194, 192, 188, 202, 200, + 203, 213, 210, 220, 235, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 246, 247, 249, 251, 251, 250, 241, 232, 228, 221, 215, 211, 208, 199, 199, 201, + 200, 201, 202, 203, 202, 199, 194, 189, 178, 171, 166, 167, 175, 181, 182, 181, + 187, 189, 187, 179, 174, 172, 167, 159, 145, 119, 107, 109, 107, 108, 118, 120, + 134, 142, 136, 142, 144, 139, 154, 152, 166, 173, 170, 167, 172, 165, 158, 163, + 171, 174, 178, 182, 184, 183, 181, 179, 180, 182, 185, 186, 186, 187, 190, 192, + 185, 187, 201, 198, 212, 237, 239, 243, 244, 250, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 250, 250, 249, 252, 246, 237, 229, 228, 219, 213, 209, + 205, 199, 199, 203, 203, 202, 202, 203, 201, 193, 182, 171, 165, 158, 154, 158, + 166, 173, 171, 169, 167, 175, 177, 173, 171, 175, 174, 169, 155, 134, 126, 124, + 117, 119, 136, 141, 144, 152, 144, 148, 146, 138, 147, 144, 155, 161, 157, 155, + 162, 159, 151, 156, 156, 161, 168, 176, 180, 181, 181, 179, 182, 183, 185, 184, + 183, 183, 184, 186, 190, 192, 204, 196, 213, 243, 244, 243, 248, 252, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, 247, 247, 246, 236, 222, + 224, 216, 210, 207, 205, 199, 198, 200, 205, 202, 203, 202, 195, 180, 173, 172, + 155, 145, 138, 143, 148, 151, 155, 163, 160, 169, 173, 174, 176, 180, 178, 175, + 173, 151, 141, 141, 140, 147, 157, 155, 157, 152, 148, 146, 148, 148, 145, 144, + 152, 158, 154, 154, 163, 159, 150, 150, 152, 157, 156, 164, 180, 180, 175, 177, + 181, 181, 181, 182, 187, 190, 193, 195, 200, 200, 200, 205, 222, 238, 246, 243, + 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 248, + 247, 245, 235, 224, 223, 214, 211, 207, 201, 196, 196, 200, 215, 210, 207, 203, + 194, 181, 171, 168, 160, 148, 124, 105, 105, 124, 145, 156, 162, 166, 166, 165, + 167, 170, 166, 162, 156, 145, 146, 152, 149, 152, 158, 154, 152, 149, 146, 144, + 145, 144, 142, 140, 142, 152, 153, 152, 158, 152, 144, 147, 150, 152, 148, 154, + 175, 179, 173, 174, 181, 181, 180, 181, 185, 187, 190, 191, 195, 198, 201, 208, + 225, 242, 245, 242, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 248, 248, 247, 239, 226, 221, 213, 210, 205, 198, 193, 193, 199, + 215, 209, 201, 198, 191, 181, 170, 163, 160, 147, 109, 71, 65, 96, 123, 134, + 157, 158, 154, 149, 148, 149, 145, 140, 131, 128, 138, 149, 145, 144, 146, 140, + 133, 134, 136, 138, 139, 140, 144, 146, 144, 158, 163, 158, 154, 144, 139, 148, + 149, 151, 146, 150, 170, 176, 172, 174, 182, 181, 180, 180, 183, 184, 186, 188, + 191, 195, 201, 214, 230, 243, 246, 242, 251, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 249, 250, 248, 241, 232, 218, 213, 208, 203, + 195, 191, 193, 201, 209, 204, 198, 197, 193, 185, 172, 163, 150, 131, 95, 60, + 56, 76, 95, 100, 121, 125, 122, 114, 107, 108, 108, 109, 115, 108, 113, 122, + 119, 118, 118, 112, 105, 109, 115, 119, 122, 126, 135, 140, 144, 157, 158, 144, + 131, 119, 120, 136, 143, 152, 152, 154, 168, 173, 173, 178, 183, 182, 181, 180, + 182, 183, 185, 186, 190, 194, 203, 217, 233, 244, 249, 247, 252, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 248, 243, 236, + 219, 213, 205, 200, 194, 191, 194, 202, 208, 206, 202, 201, 198, 190, 174, 162, + 144, 119, 91, 77, 80, 88, 95, 99, 113, 124, 127, 119, 111, 113, 122, 130, + 127, 108, 100, 103, 102, 104, 104, 96, 92, 96, 100, 101, 102, 106, 114, 119, + 123, 133, 127, 108, 95, 85, 90, 109, 127, 147, 156, 157, 166, 171, 175, 184, + 183, 182, 181, 180, 183, 184, 186, 187, 192, 195, 205, 219, 234, 243, 250, 251, + 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 251, 250, 247, 241, 226, 215, 205, 200, 195, 192, 193, 199, 202, 204, 201, 197, + 190, 183, 168, 155, 157, 133, 116, 117, 126, 129, 134, 142, 145, 157, 162, 157, + 152, 157, 169, 179, 141, 116, 102, 102, 102, 105, 105, 96, 95, 94, 91, 88, + 85, 86, 91, 94, 91, 100, 94, 79, 71, 64, 70, 87, 116, 141, 153, 154, + 164, 171, 177, 186, 180, 180, 179, 180, 183, 185, 188, 191, 197, 200, 210, 225, + 239, 245, 250, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 251, 250, 246, 235, 221, 207, 198, 195, 192, 190, 192, + 192, 195, 193, 186, 177, 173, 165, 154, 161, 156, 152, 151, 159, 169, 176, 178, + 162, 168, 169, 164, 161, 166, 172, 177, 186, 167, 160, 163, 162, 163, 161, 152, + 153, 148, 141, 137, 139, 141, 146, 147, 144, 155, 156, 150, 148, 142, 140, 150, + 126, 146, 152, 150, 162, 172, 174, 179, 175, 175, 176, 177, 182, 186, 189, 193, + 200, 205, 217, 233, 244, 246, 248, 252, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 248, 244, 227, 208, 198, + 195, 192, 187, 187, 188, 192, 190, 181, 172, 172, 169, 164, 150, 167, 174, 165, + 168, 182, 189, 184, 174, 174, 168, 161, 159, 162, 160, 157, 145, 135, 137, 146, + 143, 140, 137, 128, 131, 125, 118, 116, 123, 130, 138, 140, 146, 159, 165, 166, + 168, 159, 149, 152, 144, 157, 155, 149, 163, 172, 171, 170, 172, 172, 173, 176, + 181, 185, 189, 193, 200, 208, 222, 241, 248, 249, 248, 249, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 251, + 243, 229, 213, 206, 199, 192, 190, 192, 189, 190, 189, 184, 173, 166, 162, 162, + 164, 166, 171, 177, 181, 182, 184, 182, 173, 171, 169, 169, 167, 160, 147, 139, + 143, 140, 135, 133, 134, 135, 134, 133, 135, 130, 124, 127, 144, 158, 161, 155, + 165, 174, 172, 167, 168, 162, 159, 167, 152, 153, 155, 159, 165, 170, 173, 175, + 179, 170, 168, 176, 186, 189, 194, 201, 204, 219, 231, 239, 243, 247, 249, 248, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 252, 252, 249, 234, 219, 210, 200, 192, 187, 190, 189, 190, 189, 184, + 174, 167, 163, 163, 168, 171, 174, 179, 182, 182, 181, 180, 170, 169, 167, 168, + 169, 166, 157, 151, 142, 141, 138, 137, 137, 138, 139, 141, 137, 135, 132, 134, + 148, 160, 163, 158, 161, 170, 169, 165, 167, 161, 158, 165, 154, 154, 156, 159, + 165, 170, 174, 177, 174, 171, 174, 182, 189, 189, 193, 201, 205, 219, 234, 242, + 246, 249, 250, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 254, 253, 250, 252, 240, 227, 216, 204, 194, 189, 189, + 188, 188, 186, 181, 174, 169, 165, 164, 168, 172, 177, 182, 185, 184, 182, 178, + 166, 162, 157, 155, 155, 153, 146, 142, 144, 144, 142, 142, 142, 143, 146, 148, + 140, 143, 147, 149, 156, 166, 171, 169, 159, 169, 170, 167, 169, 163, 160, 166, + 157, 157, 157, 159, 165, 170, 176, 179, 172, 175, 182, 187, 188, 185, 189, 199, + 218, 232, 245, 247, 250, 252, 251, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 252, 252, 244, 233, 219, + 205, 196, 191, 191, 188, 187, 185, 180, 175, 171, 168, 166, 166, 170, 176, 182, + 184, 183, 181, 179, 168, 160, 152, 148, 147, 145, 140, 137, 138, 135, 131, 131, + 134, 136, 136, 135, 136, 142, 148, 147, 148, 152, 156, 155, 163, 172, 172, 170, + 172, 165, 159, 164, 159, 158, 158, 159, 165, 171, 177, 181, 175, 180, 185, 185, + 183, 182, 189, 201, 225, 239, 247, 249, 248, 251, 252, 250, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, + 252, 248, 239, 223, 205, 194, 189, 188, 189, 187, 183, 180, 176, 173, 173, 171, + 170, 173, 178, 182, 184, 182, 179, 177, 169, 161, 152, 147, 146, 145, 140, 137, + 131, 124, 115, 116, 122, 124, 120, 114, 130, 139, 145, 144, 143, 145, 148, 148, + 166, 173, 172, 169, 173, 165, 156, 159, 160, 159, 158, 159, 165, 171, 177, 181, + 179, 183, 185, 182, 182, 187, 198, 210, 228, 239, 246, 246, 247, 250, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 255, 253, 248, 227, 205, 194, 188, 186, 189, 186, 182, 179, + 177, 176, 175, 173, 175, 177, 180, 181, 181, 180, 179, 175, 166, 157, 145, 137, + 131, 125, 115, 109, 102, 94, 84, 84, 89, 90, 85, 79, 93, 105, 117, 122, + 129, 138, 146, 149, 163, 170, 166, 163, 168, 162, 153, 155, 160, 159, 159, 160, + 166, 171, 176, 179, 180, 183, 183, 181, 187, 196, 204, 210, 236, 249, 251, 251, + 249, 251, 253, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 252, 253, 250, 230, 208, 198, 194, 193, + 190, 186, 181, 179, 178, 177, 177, 175, 175, 176, 180, 183, 184, 185, 185, 183, + 172, 163, 153, 144, 136, 126, 113, 105, 88, 85, 80, 77, 76, 75, 74, 73, + 80, 92, 104, 112, 122, 134, 142, 146, 161, 166, 163, 161, 166, 162, 154, 157, + 158, 158, 159, 161, 166, 170, 174, 176, 178, 180, 181, 183, 192, 198, 194, 188, + 218, 233, 245, 247, 249, 251, 252, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 251, 250, 233, + 214, 206, 205, 204, 190, 185, 182, 178, 181, 180, 178, 176, 171, 172, 176, 180, + 184, 189, 192, 192, 187, 181, 177, 173, 171, 164, 155, 147, 135, 138, 138, 132, + 125, 122, 126, 131, 138, 146, 151, 153, 154, 161, 164, 163, 160, 164, 162, 160, + 167, 164, 159, 163, 159, 157, 161, 164, 167, 170, 173, 175, 177, 179, 181, 185, + 194, 194, 177, 160, 165, 185, 208, 228, 240, 251, 255, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 249, 253, 245, 237, 206, 217, 209, 202, 198, 193, 186, 177, 180, 184, 182, 174, + 184, 179, 174, 175, 181, 188, 193, 192, 198, 194, 187, 178, 178, 173, 163, 151, + 147, 152, 151, 139, 131, 135, 143, 146, 153, 153, 152, 154, 155, 161, 164, 166, + 165, 166, 165, 163, 163, 163, 160, 152, 165, 165, 167, 167, 170, 173, 177, 179, + 169, 186, 183, 184, 203, 197, 167, 153, 160, 151, 179, 213, 240, 246, 239, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 249, 251, 245, 237, 207, 215, 211, 201, 204, 200, 191, 182, + 181, 185, 182, 177, 175, 172, 172, 176, 182, 188, 191, 191, 186, 186, 184, 181, + 180, 178, 172, 163, 154, 155, 154, 148, 143, 143, 149, 154, 153, 151, 152, 152, + 155, 157, 161, 162, 164, 166, 167, 165, 166, 167, 164, 157, 166, 166, 166, 167, + 169, 173, 176, 178, 179, 189, 179, 174, 189, 187, 164, 149, 153, 140, 157, 179, + 210, 238, 240, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 250, 251, 244, 238, 207, 212, 207, 197, + 209, 206, 199, 190, 185, 185, 183, 180, 171, 171, 173, 179, 184, 189, 188, 186, + 182, 185, 185, 181, 177, 175, 170, 162, 156, 149, 148, 151, 149, 142, 146, 155, + 146, 147, 148, 149, 153, 155, 158, 159, 161, 164, 165, 164, 166, 168, 165, 161, + 171, 171, 171, 172, 175, 178, 181, 183, 187, 191, 180, 173, 185, 184, 166, 149, + 152, 141, 148, 153, 190, 239, 248, 249, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 250, 250, 244, 239, + 207, 210, 203, 194, 209, 208, 206, 200, 193, 188, 183, 182, 176, 175, 175, 179, + 182, 184, 182, 179, 179, 184, 185, 179, 173, 169, 164, 156, 155, 144, 143, 149, + 149, 139, 139, 149, 138, 140, 143, 146, 151, 153, 156, 157, 158, 162, 163, 162, + 164, 166, 164, 159, 171, 173, 173, 175, 177, 180, 182, 184, 181, 184, 180, 178, + 186, 187, 170, 147, 149, 147, 150, 141, 177, 235, 246, 241, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 251, 250, 244, 241, 209, 208, 200, 192, 204, 205, 207, 207, 201, 193, 185, 183, + 180, 176, 173, 173, 174, 176, 175, 173, 166, 171, 173, 169, 166, 163, 160, 156, + 154, 142, 141, 149, 147, 135, 134, 143, 142, 143, 145, 147, 149, 151, 153, 153, + 156, 161, 165, 163, 163, 164, 163, 159, 166, 167, 167, 168, 170, 172, 173, 174, + 171, 171, 172, 174, 181, 187, 175, 152, 155, 155, 154, 137, 165, 223, 239, 238, + 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 251, 249, 244, 243, 211, 208, 199, 192, 197, 197, 201, 207, + 206, 198, 190, 188, 181, 176, 170, 168, 168, 171, 171, 167, 163, 164, 163, 158, + 153, 152, 148, 143, 142, 137, 137, 140, 135, 128, 129, 137, 147, 147, 147, 147, + 147, 147, 149, 149, 157, 163, 168, 166, 165, 166, 166, 163, 167, 168, 168, 169, + 169, 170, 170, 170, 175, 168, 170, 173, 178, 190, 187, 163, 163, 162, 162, 140, + 155, 204, 231, 248, 250, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 251, 248, 244, 245, 213, 209, 199, 193, + 193, 189, 192, 201, 206, 202, 196, 195, 189, 183, 176, 173, 171, 171, 168, 164, + 161, 158, 150, 144, 142, 141, 134, 127, 130, 133, 132, 130, 126, 125, 129, 135, + 141, 142, 142, 141, 142, 144, 145, 147, 154, 161, 166, 164, 165, 167, 168, 167, + 171, 171, 171, 171, 170, 170, 169, 168, 172, 164, 170, 176, 177, 189, 187, 159, + 149, 152, 162, 147, 149, 183, 214, 246, 249, 250, 252, 254, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, 247, 244, 246, + 215, 210, 199, 194, 191, 184, 185, 196, 204, 204, 200, 201, 200, 194, 187, 182, + 177, 173, 167, 161, 149, 145, 137, 134, 137, 141, 136, 130, 127, 135, 137, 131, + 126, 130, 137, 142, 131, 131, 131, 132, 135, 140, 144, 147, 149, 157, 162, 162, + 164, 167, 168, 167, 167, 169, 168, 168, 167, 165, 164, 163, 158, 153, 166, 176, + 175, 182, 173, 138, 121, 130, 154, 149, 145, 163, 191, 236, 247, 249, 250, 252, + 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, + 252, 248, 250, 236, 214, 205, 205, 194, 190, 187, 188, 194, 197, 197, 198, 203, + 203, 198, 193, 190, 186, 183, 178, 172, 156, 153, 150, 148, 144, 142, 139, 136, + 132, 137, 143, 148, 148, 146, 143, 140, 127, 138, 145, 143, 140, 142, 145, 146, + 159, 160, 163, 165, 166, 166, 164, 165, 165, 164, 163, 161, 159, 156, 153, 152, + 152, 163, 157, 165, 173, 170, 163, 134, 93, 98, 118, 153, 160, 173, 172, 221, + 242, 248, 245, 242, 250, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 251, 252, 248, 250, 237, 215, 206, 206, 194, 188, 184, 184, 188, + 190, 189, 189, 194, 195, 193, 190, 189, 187, 185, 180, 176, 163, 160, 157, 154, + 153, 150, 150, 146, 147, 147, 149, 152, 152, 150, 150, 149, 142, 149, 152, 149, + 144, 147, 151, 153, 162, 163, 165, 166, 165, 164, 162, 160, 163, 163, 161, 159, + 157, 155, 154, 153, 152, 163, 157, 164, 173, 172, 169, 143, 100, 76, 75, 114, + 140, 167, 165, 199, 238, 246, 246, 243, 250, 252, 251, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 251, 251, 248, 250, 238, 217, 208, 207, 193, + 190, 185, 184, 187, 187, 186, 185, 189, 192, 192, 192, 193, 192, 191, 188, 186, + 175, 170, 168, 164, 163, 161, 161, 159, 161, 158, 157, 156, 156, 154, 157, 158, + 155, 161, 160, 154, 151, 155, 157, 158, 164, 164, 162, 162, 160, 158, 156, 156, + 161, 160, 157, 155, 154, 154, 155, 156, 153, 163, 156, 164, 172, 173, 174, 153, + 122, 76, 50, 77, 117, 167, 166, 178, 229, 244, 244, 243, 250, 250, 249, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, 251, 247, 250, 238, + 219, 209, 207, 193, 191, 186, 184, 186, 186, 184, 183, 188, 191, 190, 190, 191, + 190, 191, 191, 191, 184, 180, 177, 172, 170, 167, 168, 164, 164, 162, 160, 157, + 159, 158, 161, 162, 159, 163, 162, 157, 155, 158, 159, 158, 160, 160, 158, 157, + 156, 154, 152, 151, 158, 157, 153, 151, 150, 152, 155, 157, 154, 162, 155, 162, + 168, 169, 173, 158, 140, 98, 63, 65, 95, 166, 171, 167, 216, 237, 243, 240, + 246, 248, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, + 252, 247, 248, 237, 218, 210, 208, 193, 187, 181, 179, 180, 180, 179, 179, 184, + 185, 184, 182, 180, 178, 180, 183, 186, 189, 185, 182, 176, 174, 169, 169, 165, + 164, 162, 163, 162, 163, 162, 163, 163, 157, 162, 164, 161, 159, 161, 161, 158, + 153, 153, 151, 151, 149, 148, 147, 149, 155, 153, 149, 146, 146, 149, 153, 155, + 152, 160, 152, 160, 163, 160, 167, 154, 134, 115, 90, 69, 76, 155, 172, 162, + 204, 231, 241, 240, 245, 248, 247, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 251, 253, 246, 245, 234, 216, 210, 208, 193, 189, 183, 180, 180, + 180, 178, 179, 184, 182, 181, 179, 177, 173, 174, 178, 183, 189, 186, 182, 179, + 177, 172, 167, 164, 167, 166, 167, 166, 167, 166, 165, 164, 157, 162, 164, 162, + 161, 163, 160, 156, 148, 148, 146, 146, 144, 145, 145, 147, 150, 150, 147, 144, + 144, 147, 150, 153, 148, 156, 151, 160, 161, 154, 161, 150, 125, 118, 109, 83, + 73, 147, 173, 169, 198, 230, 244, 241, 247, 250, 249, 250, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 251, 253, 245, 243, 230, 213, 208, 208, 194, + 193, 186, 182, 181, 179, 177, 177, 181, 176, 178, 180, 179, 174, 173, 175, 179, + 184, 185, 183, 183, 181, 176, 171, 166, 170, 170, 170, 168, 167, 166, 165, 164, + 163, 165, 162, 158, 158, 159, 157, 152, 147, 147, 145, 144, 142, 143, 142, 143, + 148, 148, 146, 144, 144, 145, 148, 150, 142, 152, 150, 161, 161, 152, 157, 148, + 133, 113, 109, 103, 88, 147, 172, 176, 190, 225, 243, 241, 247, 250, 250, 250, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 251, 252, 243, 239, 226, + 211, 206, 204, 193, 191, 182, 177, 175, 172, 168, 167, 172, 165, 168, 176, 175, + 173, 170, 169, 169, 178, 178, 179, 180, 180, 177, 172, 166, 171, 169, 167, 164, + 161, 160, 159, 159, 163, 163, 157, 151, 150, 153, 152, 146, 149, 148, 145, 144, + 142, 142, 142, 142, 147, 145, 145, 142, 143, 142, 146, 145, 137, 147, 150, 161, + 162, 149, 157, 149, 144, 104, 99, 111, 99, 143, 163, 176, 184, 221, 241, 239, + 244, 250, 249, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 250, 247, + 241, 246, 225, 181, 195, 206, 192, 197, 189, 180, 173, 171, 174, 173, 167, 161, + 166, 163, 164, 163, 164, 164, 161, 159, 161, 163, 164, 162, 160, 157, 157, 156, + 155, 154, 154, 155, 155, 154, 151, 148, 154, 149, 147, 149, 149, 144, 145, 148, + 145, 144, 143, 141, 140, 139, 138, 138, 145, 144, 145, 143, 145, 142, 142, 137, + 141, 148, 152, 145, 147, 152, 152, 139, 133, 113, 89, 114, 96, 71, 177, 184, + 199, 233, 244, 244, 249, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, + 255, 253, 250, 246, 237, 244, 213, 175, 191, 204, 193, 196, 181, 176, 170, 168, + 168, 166, 162, 157, 160, 159, 157, 158, 161, 163, 164, 163, 158, 157, 158, 156, + 153, 151, 150, 151, 151, 150, 150, 150, 151, 150, 147, 144, 147, 142, 141, 143, + 142, 138, 138, 142, 142, 141, 141, 140, 140, 140, 141, 141, 144, 142, 140, 139, + 140, 140, 139, 137, 139, 147, 149, 143, 144, 150, 149, 140, 121, 113, 95, 104, + 96, 72, 159, 188, 203, 234, 246, 245, 252, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, + 255, 255, 255, 255, 255, 253, 250, 246, 240, 240, 203, 175, 185, 201, 193, 193, + 178, 175, 172, 168, 165, 161, 158, 157, 158, 155, 152, 152, 155, 158, 161, 162, + 156, 156, 156, 154, 151, 148, 147, 147, 149, 148, 147, 147, 148, 147, 145, 143, + 145, 142, 141, 142, 141, 137, 136, 138, 139, 139, 139, 139, 140, 142, 143, 144, + 143, 140, 136, 135, 136, 137, 138, 137, 138, 144, 146, 142, 143, 149, 149, 141, + 123, 122, 106, 97, 103, 72, 122, 186, 208, 238, 248, 247, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, + 254, 254, 254, 254, 255, 255, 255, 255, 255, 253, 250, 246, 245, 240, 193, 177, + 178, 193, 190, 187, 176, 177, 176, 172, 165, 160, 158, 158, 157, 154, 151, 150, + 152, 154, 154, 152, 155, 155, 155, 153, 149, 146, 146, 146, 148, 146, 145, 145, + 146, 146, 144, 142, 142, 141, 140, 140, 138, 135, 134, 134, 138, 138, 138, 139, + 140, 141, 143, 144, 142, 138, 134, 132, 133, 136, 138, 138, 138, 142, 144, 141, + 142, 147, 147, 142, 128, 122, 108, 97, 120, 73, 91, 191, 214, 239, 248, 247, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 253, 250, 247, + 247, 241, 186, 182, 171, 185, 191, 189, 175, 177, 177, 172, 163, 157, 155, 156, + 150, 149, 149, 150, 152, 152, 151, 147, 154, 153, 154, 152, 149, 146, 145, 146, + 147, 145, 144, 144, 145, 145, 144, 143, 139, 139, 138, 135, 134, 134, 133, 132, + 140, 140, 139, 139, 139, 140, 140, 141, 141, 137, 132, 130, 132, 136, 138, 140, + 138, 141, 143, 142, 143, 145, 145, 141, 130, 108, 97, 97, 132, 80, 85, 201, + 217, 240, 249, 248, 253, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, + 255, 255, 252, 247, 243, 239, 183, 189, 163, 175, 190, 189, 172, 174, 174, 169, + 161, 154, 151, 150, 143, 143, 145, 148, 152, 153, 152, 148, 149, 151, 152, 150, + 148, 146, 145, 146, 146, 144, 142, 142, 143, 144, 144, 143, 142, 143, 141, 137, + 136, 139, 140, 138, 142, 141, 140, 139, 138, 138, 138, 139, 138, 134, 130, 129, + 131, 135, 138, 139, 139, 141, 144, 145, 146, 145, 143, 139, 138, 111, 98, 100, + 129, 81, 101, 202, 223, 242, 248, 247, 253, 255, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 253, 254, 255, 255, 255, 255, 252, 249, 244, 245, 185, 196, 152, 158, 178, 183, + 173, 171, 170, 166, 159, 152, 147, 145, 142, 141, 141, 143, 147, 150, 150, 150, + 145, 147, 148, 148, 146, 144, 144, 145, 143, 141, 139, 139, 140, 142, 142, 141, + 142, 143, 140, 134, 134, 140, 143, 141, 141, 140, 139, 139, 138, 138, 139, 139, + 134, 131, 128, 127, 130, 133, 135, 136, 140, 142, 146, 149, 148, 145, 141, 137, + 143, 122, 109, 104, 117, 92, 142, 214, 230, 246, 249, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 253, 254, 255, 255, 255, 255, 254, 251, 248, 248, 191, 201, + 144, 145, 168, 174, 174, 173, 171, 167, 162, 155, 149, 145, 147, 144, 141, 141, + 143, 146, 148, 148, 142, 144, 146, 145, 144, 143, 143, 144, 141, 139, 137, 136, + 138, 140, 140, 140, 133, 135, 131, 124, 125, 132, 137, 135, 140, 139, 138, 138, + 138, 139, 140, 140, 130, 128, 126, 126, 129, 132, 133, 134, 141, 143, 147, 151, + 150, 145, 139, 135, 130, 126, 115, 106, 110, 113, 189, 241, 236, 248, 250, 252, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, 251, 251, 254, 255, 255, 255, 255, 255, + 248, 248, 215, 202, 114, 149, 162, 160, 160, 171, 163, 156, 162, 153, 142, 152, + 142, 143, 142, 139, 135, 135, 138, 142, 141, 146, 148, 146, 142, 141, 142, 142, + 141, 134, 130, 132, 132, 130, 131, 133, 128, 130, 132, 133, 133, 133, 135, 137, + 136, 136, 135, 135, 132, 129, 130, 133, 125, 127, 129, 129, 129, 131, 137, 142, + 149, 140, 138, 145, 147, 140, 137, 138, 129, 123, 118, 110, 116, 205, 234, 234, + 247, 249, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 251, 251, 254, 255, + 255, 255, 255, 255, 251, 248, 227, 195, 104, 140, 161, 159, 160, 166, 163, 159, + 159, 152, 146, 149, 140, 141, 140, 137, 134, 134, 137, 140, 134, 137, 139, 140, + 140, 143, 146, 147, 142, 138, 136, 136, 133, 129, 128, 132, 130, 131, 133, 134, + 133, 134, 135, 137, 133, 133, 132, 132, 131, 129, 128, 129, 124, 126, 128, 128, + 129, 132, 137, 142, 143, 138, 137, 142, 144, 142, 140, 140, 130, 130, 115, 118, + 115, 217, 234, 238, 249, 250, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 251, 251, 254, 254, 255, 255, 255, 255, 253, 241, 246, 200, 93, 137, 152, 152, + 157, 155, 161, 162, 154, 150, 149, 143, 137, 137, 136, 134, 131, 131, 133, 135, + 141, 139, 137, 137, 139, 139, 139, 139, 138, 138, 139, 140, 135, 129, 129, 134, + 131, 133, 135, 135, 134, 133, 135, 137, 129, 129, 129, 129, 130, 129, 127, 124, + 123, 125, 127, 128, 129, 133, 137, 141, 139, 141, 140, 139, 140, 142, 140, 136, + 129, 134, 111, 123, 121, 230, 236, 241, 250, 253, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 252, 249, 250, 252, 254, 255, 255, 255, 255, 250, 238, 246, 221, + 84, 142, 141, 144, 154, 148, 160, 165, 150, 149, 153, 141, 136, 135, 134, 132, + 131, 131, 131, 132, 142, 137, 135, 138, 140, 138, 134, 132, 129, 132, 138, 141, + 136, 131, 132, 139, 133, 135, 136, 135, 134, 133, 134, 135, 125, 127, 127, 127, + 129, 130, 127, 121, 124, 125, 126, 128, 130, 134, 137, 139, 141, 147, 146, 138, + 136, 140, 138, 129, 126, 131, 116, 124, 143, 236, 242, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 254, 254, 254, 254, 254, 252, 249, 250, 252, 254, 255, 255, 255, 255, + 250, 241, 246, 233, 78, 147, 131, 139, 149, 143, 156, 162, 148, 148, 152, 140, + 136, 135, 133, 132, 132, 132, 131, 131, 128, 125, 127, 136, 141, 138, 134, 133, + 126, 129, 136, 139, 136, 130, 132, 138, 135, 136, 136, 135, 133, 131, 132, 133, + 123, 127, 129, 127, 128, 131, 128, 122, 126, 126, 127, 129, 132, 135, 137, 138, + 140, 147, 146, 138, 135, 139, 137, 130, 125, 123, 126, 126, 200, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 249, 249, 250, 254, + 255, 255, 255, 254, 255, 246, 234, 230, 90, 144, 127, 138, 143, 143, 150, 154, + 148, 147, 148, 143, 137, 136, 134, 134, 134, 134, 133, 131, 126, 122, 125, 134, + 136, 129, 125, 128, 129, 130, 134, 138, 135, 130, 130, 135, 135, 136, 136, 134, + 131, 129, 130, 131, 120, 128, 131, 126, 125, 130, 172, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 255, 246, 232, 229, 129, 141, 133, 131, + 137, 145, 145, 145, 149, 145, 142, 146, 139, 137, 135, 136, 137, 137, 134, 132, + 133, 127, 128, 133, 131, 122, 121, 128, 132, 130, 132, 137, 137, 174, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255 }; +/* Define image 'enemy3' of size 104x134x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy3[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 168, 179, 181, 170, 185, 181, 197, 211, 184, 186, 216, + 197, 199, 216, 221, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 152, 156, 178, 164, 171, 178, + 183, 195, 191, 188, 192, 175, 176, 202, 192, 204, 218, 221, 209, 241, 237, 233, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 181, 127, 143, + 112, 117, 136, 131, 165, 161, 169, 166, 162, 138, 137, 127, 128, 118, 115, 137, + 131, 136, 151, 163, 166, 220, 230, 229, 223, 238, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 133, 123, 100, 87, 89, 93, 91, 106, 110, 125, 119, 145, 124, + 95, 78, 72, 80, 88, 83, 80, 89, 91, 102, 88, 123, 127, 152, 199, 194, + 207, 211, 232, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 211, 94, 82, 78, 78, 69, 69, 76, + 77, 74, 80, 85, 95, 95, 110, 97, 68, 72, 66, 76, 84, 77, 72, 75, + 74, 77, 65, 87, 85, 105, 143, 145, 174, 212, 240, 230, 246, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 117, + 114, 77, 73, 77, 77, 71, 81, 89, 84, 82, 76, 86, 87, 92, 90, 88, + 66, 77, 74, 87, 95, 90, 86, 87, 83, 90, 86, 97, 89, 108, 130, 137, + 188, 200, 235, 230, 243, 230, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 243, 209, 188, 139, 96, 75, 72, 78, 83, 89, 82, 71, 77, 84, + 77, 80, 69, 84, 78, 85, 69, 78, 67, 77, 73, 81, 84, 77, 77, 77, + 72, 66, 73, 76, 67, 81, 83, 85, 142, 178, 218, 219, 237, 230, 237, 241, + 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 242, 196, 180, 174, 145, 99, 68, 74, + 79, 72, 80, 90, 77, 59, 60, 71, 67, 75, 67, 86, 79, 81, 62, 77, + 75, 87, 78, 75, 70, 60, 62, 64, 56, 67, 79, 79, 71, 74, 56, 49, + 93, 112, 160, 169, 198, 202, 216, 219, 219, 226, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 207, + 217, 208, 175, 164, 129, 84, 56, 73, 72, 79, 83, 91, 80, 59, 56, 67, + 70, 70, 69, 84, 86, 83, 75, 85, 84, 89, 80, 78, 70, 63, 66, 71, + 62, 60, 72, 74, 73, 74, 58, 49, 72, 110, 157, 167, 200, 212, 227, 220, + 212, 206, 225, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 239, 223, 208, 207, 205, 152, 113, 113, 96, 81, 71, 97, + 87, 72, 66, 70, 68, 55, 53, 64, 72, 69, 71, 78, 91, 88, 99, 98, + 89, 90, 85, 86, 81, 76, 79, 78, 65, 67, 72, 72, 78, 83, 83, 86, + 89, 104, 141, 140, 171, 191, 218, 215, 205, 210, 228, 219, 237, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 225, 245, 222, 199, + 176, 121, 76, 79, 72, 73, 69, 90, 70, 59, 46, 49, 60, 60, 65, 80, + 89, 92, 96, 93, 116, 115, 142, 130, 115, 124, 121, 122, 118, 107, 105, 95, + 73, 66, 62, 55, 62, 69, 79, 91, 82, 91, 119, 106, 137, 170, 214, 227, + 223, 203, 218, 203, 205, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 204, 196, 206, 190, 176, 169, 133, 87, 77, 70, 68, 70, 72, 66, + 58, 47, 57, 71, 79, 86, 98, 111, 123, 127, 151, 161, 178, 183, 177, 179, + 165, 180, 164, 173, 149, 162, 152, 138, 122, 116, 92, 92, 81, 79, 90, 83, + 106, 109, 114, 113, 115, 134, 160, 178, 183, 213, 226, 219, 212, 224, 220, 224, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 234, 201, 204, 206, 213, 196, 175, 163, + 124, 81, 79, 74, 72, 73, 68, 60, 53, 48, 58, 71, 79, 88, 102, 118, + 126, 137, 158, 168, 185, 189, 182, 185, 172, 177, 172, 174, 163, 156, 156, 132, + 125, 112, 102, 106, 87, 84, 99, 91, 99, 116, 114, 106, 104, 122, 155, 185, + 200, 206, 225, 218, 211, 222, 224, 213, 229, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, + 218, 222, 225, 208, 184, 149, 124, 114, 80, 67, 70, 76, 79, 80, 76, 72, + 67, 87, 96, 108, 115, 126, 144, 159, 167, 169, 189, 197, 211, 215, 209, 212, + 200, 199, 204, 201, 203, 183, 194, 166, 169, 140, 141, 137, 109, 98, 110, 103, + 100, 119, 119, 112, 104, 105, 112, 122, 125, 168, 199, 202, 200, 223, 239, 236, + 235, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 242, 239, 226, 222, 224, 191, 147, 105, 87, 86, + 64, 61, 68, 78, 85, 87, 87, 88, 89, 109, 120, 129, 135, 151, 171, 185, + 191, 189, 209, 212, 224, 226, 220, 226, 213, 217, 216, 217, 212, 198, 207, 187, + 187, 178, 175, 161, 129, 112, 115, 116, 114, 94, 99, 101, 100, 93, 88, 82, + 80, 111, 150, 165, 167, 198, 221, 218, 213, 219, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 219, 235, + 214, 216, 225, 187, 140, 102, 81, 78, 62, 71, 78, 85, 88, 90, 91, 98, + 102, 118, 129, 138, 145, 163, 185, 199, 200, 207, 224, 225, 233, 233, 228, 235, + 223, 234, 220, 226, 204, 208, 205, 196, 190, 190, 183, 164, 148, 130, 115, 117, + 119, 105, 100, 98, 94, 88, 87, 91, 96, 111, 152, 170, 176, 206, 229, 224, + 218, 219, 198, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 202, 207, 226, 205, 202, 205, 159, 115, 89, 73, 75, + 71, 73, 77, 82, 87, 93, 103, 114, 125, 134, 148, 158, 165, 185, 210, 222, + 219, 223, 238, 236, 243, 242, 235, 243, 233, 243, 227, 239, 212, 228, 224, 226, + 219, 202, 197, 180, 175, 155, 126, 120, 110, 121, 109, 104, 99, 91, 86, 87, + 92, 81, 118, 135, 148, 187, 217, 225, 227, 215, 201, 199, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 183, 185, 200, + 173, 138, 141, 100, 76, 75, 71, 81, 90, 73, 75, 82, 90, 102, 117, 133, + 146, 145, 160, 171, 180, 201, 227, 236, 229, 230, 243, 240, 243, 242, 235, 243, + 234, 237, 231, 241, 227, 232, 241, 239, 241, 220, 225, 208, 202, 187, 159, 152, + 126, 98, 90, 93, 102, 101, 93, 84, 83, 79, 103, 110, 123, 168, 204, 226, + 244, 237, 233, 247, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 232, 232, 207, 193, 186, 142, 100, 108, 81, 74, 81, 66, 60, + 63, 84, 87, 90, 97, 111, 126, 140, 151, 163, 181, 192, 198, 222, 247, 253, + 245, 249, 255, 255, 255, 255, 251, 255, 251, 248, 252, 251, 250, 231, 250, 235, + 247, 223, 239, 222, 216, 209, 200, 202, 167, 113, 100, 99, 105, 103, 90, 79, + 73, 96, 105, 93, 93, 128, 158, 184, 209, 205, 208, 246, 212, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 235, 222, 195, 202, 197, + 132, 106, 104, 86, 72, 85, 65, 80, 55, 72, 88, 93, 101, 121, 136, 146, + 162, 170, 186, 209, 212, 223, 244, 246, 253, 251, 250, 250, 249, 249, 248, 249, + 249, 251, 249, 249, 247, 249, 250, 251, 251, 237, 234, 229, 227, 226, 218, 199, + 173, 121, 109, 110, 105, 95, 98, 97, 82, 98, 101, 92, 96, 124, 143, 170, + 212, 206, 207, 242, 201, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 217, 221, 204, 170, 169, 165, 123, 71, 75, 68, 75, 81, 60, 73, + 67, 77, 95, 105, 115, 134, 149, 157, 172, 184, 197, 219, 219, 228, 248, 247, + 249, 251, 251, 250, 250, 250, 250, 249, 250, 250, 249, 248, 247, 248, 250, 252, + 252, 253, 248, 241, 235, 237, 237, 233, 217, 168, 153, 142, 125, 106, 107, 110, + 101, 92, 96, 87, 85, 95, 100, 118, 155, 149, 174, 225, 196, 205, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 195, 199, 162, 109, 91, 76, + 54, 56, 63, 61, 83, 73, 52, 56, 66, 78, 98, 109, 120, 141, 154, 159, + 172, 189, 199, 219, 218, 229, 250, 247, 247, 251, 251, 252, 252, 252, 252, 251, + 250, 250, 249, 249, 249, 249, 249, 252, 252, 255, 253, 248, 241, 243, 247, 250, + 242, 205, 187, 168, 140, 110, 107, 115, 114, 100, 102, 97, 91, 87, 81, 92, + 119, 119, 160, 221, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 217, 214, 214, 160, 103, 90, 76, 66, 62, 71, 65, 86, 63, 57, 49, + 65, 82, 101, 113, 124, 143, 157, 163, 176, 191, 199, 216, 216, 229, 252, 248, + 248, 249, 250, 252, 253, 253, 252, 250, 248, 249, 248, 250, 250, 250, 251, 251, + 251, 245, 249, 250, 245, 245, 245, 245, 238, 215, 200, 185, 155, 119, 106, 112, + 109, 105, 101, 97, 96, 93, 87, 95, 113, 119, 156, 213, 225, 223, 233, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 217, 219, 193, 119, 66, 66, 68, + 58, 67, 76, 69, 74, 58, 73, 65, 74, 94, 111, 122, 130, 150, 164, 172, + 186, 197, 203, 219, 217, 230, 252, 247, 247, 247, 249, 250, 252, 252, 251, 250, + 248, 249, 249, 249, 251, 251, 251, 251, 250, 239, 245, 248, 246, 244, 243, 242, + 238, 223, 213, 208, 187, 151, 127, 117, 106, 100, 83, 78, 81, 80, 80, 90, + 99, 106, 127, 169, 210, 215, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 228, 226, 231, 165, 85, 39, 44, 68, 54, 73, 75, 73, 63, 57, 77, 70, + 77, 103, 119, 129, 137, 155, 168, 176, 191, 207, 215, 228, 224, 233, 250, 245, + 247, 248, 249, 250, 250, 250, 250, 250, 248, 250, 250, 251, 251, 250, 252, 251, + 250, 247, 249, 249, 246, 244, 249, 251, 250, 239, 233, 234, 224, 193, 162, 139, + 118, 106, 79, 70, 72, 67, 70, 79, 84, 89, 97, 117, 169, 176, 214, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 188, 209, 196, 201, 116, 59, 36, 36, 79, + 63, 74, 65, 77, 62, 66, 68, 64, 78, 104, 122, 133, 141, 158, 169, 175, + 186, 210, 218, 233, 226, 232, 248, 245, 248, 250, 250, 249, 250, 250, 251, 252, + 251, 250, 250, 251, 251, 251, 251, 249, 248, 250, 251, 250, 247, 247, 252, 255, + 255, 250, 242, 243, 242, 220, 192, 165, 139, 122, 91, 80, 77, 65, 66, 78, + 80, 86, 99, 99, 138, 136, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 185, + 205, 198, 202, 105, 70, 53, 31, 74, 51, 66, 48, 75, 67, 76, 64, 65, + 88, 105, 126, 139, 147, 165, 173, 177, 185, 206, 216, 232, 227, 230, 246, 246, + 251, 252, 252, 250, 250, 250, 250, 252, 252, 250, 248, 251, 250, 252, 248, 249, + 245, 247, 247, 249, 246, 248, 250, 247, 245, 248, 236, 237, 241, 229, 208, 182, + 155, 127, 97, 88, 84, 64, 63, 77, 80, 89, 111, 103, 126, 117, 197, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 227, 202, 215, 157, 173, 63, 70, 64, 63, 58, + 67, 69, 60, 87, 75, 81, 64, 70, 87, 122, 139, 157, 169, 176, 179, 180, + 183, 211, 214, 219, 227, 228, 229, 242, 255, 250, 250, 250, 251, 252, 252, 254, + 254, 245, 248, 253, 252, 251, 248, 249, 250, 244, 248, 250, 245, 242, 244, 247, + 250, 255, 255, 255, 246, 232, 219, 206, 196, 165, 127, 116, 103, 74, 58, 67, + 72, 79, 105, 106, 110, 112, 176, 243, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 196, + 200, 150, 151, 60, 54, 59, 64, 61, 74, 90, 68, 80, 69, 84, 77, 77, + 89, 121, 140, 159, 171, 181, 192, 197, 199, 211, 216, 225, 233, 236, 237, 242, + 250, 247, 247, 247, 247, 247, 248, 250, 249, 249, 249, 248, 246, 245, 246, 252, + 255, 248, 253, 252, 247, 244, 245, 246, 248, 255, 255, 255, 252, 243, 234, 226, + 218, 191, 158, 140, 122, 84, 63, 69, 75, 72, 98, 98, 97, 103, 169, 205, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 243, 225, 204, 196, 136, 124, 73, 50, 65, 67, 57, + 72, 87, 69, 80, 70, 81, 78, 78, 89, 122, 143, 161, 168, 177, 194, 202, + 202, 215, 216, 222, 229, 234, 238, 243, 248, 249, 250, 249, 250, 250, 251, 253, + 252, 252, 250, 248, 246, 245, 245, 249, 253, 248, 253, 253, 248, 246, 248, 250, + 250, 255, 255, 254, 249, 241, 233, 226, 219, 206, 178, 155, 136, 93, 70, 67, + 73, 73, 93, 95, 91, 97, 153, 176, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 197, 171, + 147, 95, 85, 82, 51, 74, 70, 54, 69, 65, 68, 93, 84, 76, 72, 78, + 104, 136, 157, 170, 168, 175, 192, 200, 197, 216, 213, 212, 216, 226, 235, 244, + 250, 251, 251, 251, 250, 252, 253, 252, 253, 251, 251, 253, 251, 250, 247, 245, + 243, 244, 248, 250, 246, 248, 252, 255, 254, 255, 255, 253, 248, 241, 234, 231, + 225, 214, 193, 167, 153, 115, 94, 76, 78, 82, 89, 97, 98, 98, 131, 158, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 206, 199, 152, 112, 55, 51, 80, 50, 72, 67, 57, + 77, 60, 71, 96, 91, 77, 82, 94, 127, 156, 173, 180, 177, 180, 193, 199, + 197, 209, 211, 212, 215, 226, 236, 245, 248, 248, 248, 248, 247, 248, 249, 249, + 249, 250, 250, 250, 251, 251, 248, 246, 244, 241, 245, 246, 245, 248, 252, 255, + 253, 250, 250, 252, 250, 249, 248, 248, 245, 229, 215, 185, 182, 151, 133, 96, + 90, 86, 80, 97, 108, 105, 111, 144, 199, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 218, 197, 128, + 85, 57, 53, 78, 52, 63, 59, 60, 80, 70, 71, 76, 79, 77, 104, 113, + 141, 162, 173, 179, 181, 184, 192, 199, 203, 202, 212, 223, 230, 239, 245, 247, + 245, 250, 250, 249, 249, 249, 251, 251, 251, 253, 248, 244, 244, 246, 249, 253, + 255, 244, 245, 246, 244, 246, 250, 252, 247, 244, 245, 246, 247, 245, 243, 242, + 242, 233, 228, 191, 195, 167, 152, 101, 89, 82, 69, 92, 105, 107, 100, 136, + 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 220, 228, 199, 124, 94, 69, 64, 72, 55, 57, 55, 61, + 73, 76, 71, 67, 76, 81, 120, 126, 151, 162, 166, 175, 185, 189, 192, 200, + 212, 204, 221, 236, 242, 247, 251, 250, 246, 253, 253, 252, 251, 252, 254, 254, + 254, 255, 250, 245, 245, 247, 250, 253, 252, 244, 245, 245, 244, 247, 251, 253, + 247, 243, 242, 244, 244, 242, 238, 236, 233, 231, 232, 193, 199, 169, 156, 98, + 87, 79, 70, 94, 97, 106, 100, 133, 150, 196, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 195, 197, 161, 89, + 73, 54, 53, 52, 52, 54, 56, 64, 68, 77, 80, 81, 94, 95, 136, 139, + 164, 167, 168, 178, 192, 196, 195, 204, 220, 214, 232, 243, 245, 246, 250, 251, + 250, 249, 247, 246, 247, 249, 249, 250, 251, 255, 255, 252, 253, 251, 249, 242, + 238, 240, 241, 240, 242, 248, 255, 255, 250, 244, 246, 252, 255, 255, 254, 252, + 251, 235, 242, 204, 210, 178, 167, 109, 104, 86, 79, 100, 93, 103, 104, 132, + 130, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 172, 171, 178, 123, 59, 52, 52, 50, 49, 50, 55, 61, 66, + 71, 81, 70, 71, 94, 120, 136, 151, 164, 168, 173, 176, 180, 192, 203, 207, + 209, 233, 238, 246, 252, 252, 247, 248, 254, 251, 247, 247, 251, 250, 246, 248, + 255, 255, 254, 253, 250, 247, 244, 243, 241, 239, 238, 242, 249, 251, 247, 247, + 247, 247, 247, 250, 251, 252, 254, 255, 255, 242, 250, 215, 229, 197, 180, 114, + 106, 100, 93, 91, 115, 103, 116, 108, 105, 154, 180, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, 168, 176, 117, 70, + 60, 55, 52, 51, 51, 54, 59, 65, 73, 78, 72, 75, 98, 123, 137, 148, + 160, 165, 172, 178, 181, 190, 200, 205, 210, 225, 238, 248, 251, 247, 245, 247, + 250, 252, 248, 246, 248, 248, 245, 248, 255, 251, 251, 249, 247, 244, 242, 240, + 238, 242, 241, 242, 249, 251, 248, 247, 250, 248, 249, 250, 250, 249, 249, 252, + 254, 243, 239, 218, 210, 198, 163, 115, 99, 95, 91, 92, 113, 100, 112, 106, + 104, 154, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 243, 171, 171, 173, 106, 75, 60, 58, 56, 55, 53, 55, 59, 64, + 72, 76, 76, 83, 107, 132, 147, 157, 166, 174, 183, 191, 193, 194, 201, 205, + 210, 219, 238, 248, 246, 243, 246, 246, 244, 251, 248, 247, 247, 248, 248, 253, + 255, 250, 250, 248, 245, 243, 243, 244, 243, 250, 248, 250, 252, 252, 249, 249, + 250, 239, 241, 244, 243, 240, 239, 244, 247, 252, 239, 238, 210, 219, 163, 131, + 98, 84, 87, 93, 108, 95, 107, 109, 108, 148, 144, 191, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 166, 165, 162, 92, 77, + 60, 56, 56, 59, 59, 60, 61, 64, 71, 85, 89, 98, 119, 139, 150, 157, + 164, 173, 185, 195, 194, 194, 197, 204, 209, 214, 233, 239, 236, 239, 247, 245, + 235, 245, 246, 249, 249, 250, 252, 255, 255, 254, 252, 250, 249, 250, 249, 251, + 251, 253, 253, 254, 254, 254, 249, 246, 243, 247, 250, 254, 250, 247, 247, 253, + 255, 233, 220, 228, 204, 213, 158, 125, 84, 82, 86, 97, 100, 91, 104, 116, + 116, 137, 134, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 209, 150, 148, 147, 84, 78, 67, 50, 55, 62, 64, 64, 63, 64, + 70, 93, 100, 108, 120, 133, 139, 142, 146, 160, 174, 184, 184, 185, 191, 199, + 207, 210, 221, 225, 225, 235, 248, 246, 233, 243, 248, 252, 253, 254, 254, 255, + 254, 255, 253, 252, 254, 254, 255, 255, 255, 249, 252, 255, 255, 253, 248, 241, + 235, 222, 223, 226, 223, 220, 218, 221, 224, 217, 205, 204, 198, 190, 161, 125, + 85, 84, 89, 101, 93, 87, 99, 122, 122, 133, 129, 121, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 205, 151, 136, 132, 80, 72, + 71, 49, 54, 63, 66, 65, 63, 63, 69, 86, 95, 105, 117, 128, 137, 143, + 147, 171, 182, 187, 184, 182, 185, 192, 197, 207, 210, 212, 215, 227, 242, 243, + 235, 243, 251, 254, 255, 255, 255, 255, 255, 252, 251, 252, 253, 253, 255, 254, + 254, 252, 255, 255, 252, 246, 240, 232, 222, 216, 216, 217, 218, 216, 215, 215, + 215, 213, 202, 188, 194, 174, 170, 136, 103, 85, 91, 105, 85, 84, 98, 125, + 122, 136, 133, 116, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 184, 207, 159, 126, 116, 74, 60, 72, 53, 57, 64, 64, 61, 59, 62, + 70, 76, 88, 101, 113, 126, 141, 152, 159, 174, 180, 181, 175, 170, 175, 180, + 181, 190, 188, 188, 190, 196, 203, 212, 216, 219, 228, 234, 234, 239, 249, 255, + 254, 246, 246, 248, 251, 252, 252, 250, 249, 254, 253, 245, 230, 215, 206, 195, + 181, 163, 163, 169, 175, 181, 182, 181, 178, 188, 175, 167, 175, 156, 156, 128, + 90, 81, 88, 104, 79, 83, 94, 122, 113, 137, 138, 116, 134, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 195, 154, 111, 101, 70, 53, + 75, 58, 61, 64, 61, 57, 56, 60, 68, 78, 89, 100, 109, 118, 131, 143, + 149, 145, 151, 152, 148, 149, 157, 165, 166, 165, 160, 161, 159, 155, 155, 167, + 182, 182, 191, 197, 199, 211, 226, 239, 242, 242, 243, 248, 250, 251, 249, 246, + 243, 246, 240, 223, 196, 175, 160, 147, 131, 113, 114, 123, 136, 149, 154, 155, + 150, 167, 155, 161, 168, 158, 150, 123, 75, 76, 84, 103, 77, 83, 93, 118, + 104, 132, 139, 115, 130, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 228, 174, 194, 162, 106, 100, 58, 65, 70, 61, 62, 64, 58, 53, 54, 63, + 74, 85, 92, 108, 94, 127, 127, 130, 149, 137, 146, 156, 135, 140, 165, 148, + 155, 154, 156, 148, 154, 155, 155, 151, 166, 195, 176, 183, 202, 201, 216, 237, + 241, 245, 240, 244, 255, 239, 246, 230, 250, 230, 240, 212, 176, 162, 155, 145, + 121, 114, 99, 122, 121, 140, 155, 129, 148, 144, 163, 144, 150, 160, 142, 120, + 78, 72, 83, 106, 83, 82, 86, 115, 111, 131, 131, 130, 121, 154, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 153, 149, 167, 133, 86, 89, 59, 70, + 79, 60, 60, 59, 56, 54, 55, 58, 64, 81, 84, 103, 106, 127, 125, 116, + 123, 143, 142, 129, 137, 162, 186, 209, 218, 219, 229, 199, 170, 119, 128, 138, + 171, 155, 155, 173, 177, 182, 191, 205, 190, 214, 203, 220, 208, 236, 233, 217, + 199, 219, 189, 184, 187, 176, 189, 203, 172, 134, 102, 106, 129, 153, 151, 132, + 149, 144, 160, 156, 143, 127, 120, 123, 107, 81, 82, 93, 84, 81, 87, 109, + 114, 141, 138, 133, 117, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, + 163, 160, 169, 125, 81, 86, 62, 70, 78, 58, 56, 56, 55, 55, 54, 54, + 54, 72, 72, 98, 117, 106, 106, 100, 116, 137, 161, 163, 192, 191, 150, 145, + 118, 107, 124, 97, 101, 71, 133, 139, 150, 157, 168, 184, 151, 160, 170, 189, + 163, 178, 166, 187, 177, 195, 186, 189, 197, 178, 199, 226, 230, 216, 205, 179, + 142, 97, 99, 116, 166, 188, 170, 166, 166, 144, 132, 148, 159, 169, 173, 130, + 75, 95, 78, 73, 86, 79, 88, 102, 118, 144, 141, 141, 123, 130, 168, 255, + 255, 255, 255, 255, 255, 255, 255, 211, 187, 184, 186, 131, 92, 92, 70, 67, + 73, 53, 55, 58, 57, 55, 52, 52, 55, 70, 72, 101, 117, 76, 80, 95, + 135, 172, 169, 152, 121, 89, 54, 80, 82, 179, 230, 220, 216, 132, 195, 191, + 188, 177, 196, 206, 138, 143, 142, 160, 124, 96, 98, 113, 130, 92, 92, 121, + 203, 212, 206, 117, 57, 144, 226, 223, 232, 153, 187, 190, 210, 202, 191, 231, + 230, 210, 123, 89, 85, 129, 190, 162, 103, 105, 75, 58, 88, 82, 92, 98, + 119, 135, 137, 146, 138, 143, 127, 255, 255, 255, 255, 255, 255, 255, 255, 202, + 186, 183, 182, 123, 95, 97, 80, 69, 74, 50, 57, 63, 59, 52, 48, 55, + 62, 83, 78, 99, 108, 63, 70, 91, 134, 172, 158, 166, 108, 79, 72, 90, + 96, 173, 233, 226, 221, 119, 198, 196, 173, 154, 188, 206, 143, 151, 143, 151, + 118, 88, 99, 118, 130, 86, 88, 120, 202, 190, 184, 100, 43, 147, 234, 214, + 217, 168, 205, 207, 227, 199, 176, 229, 229, 183, 121, 111, 104, 125, 169, 146, + 102, 103, 69, 52, 88, 86, 95, 98, 119, 130, 132, 144, 141, 151, 133, 255, + 255, 255, 255, 255, 255, 255, 232, 192, 181, 174, 173, 112, 94, 95, 83, 69, + 75, 56, 62, 66, 58, 47, 45, 57, 70, 88, 74, 79, 80, 62, 67, 71, + 95, 126, 92, 110, 50, 45, 62, 83, 80, 212, 255, 251, 249, 153, 233, 210, + 147, 174, 197, 194, 131, 120, 97, 94, 83, 98, 109, 133, 104, 103, 93, 92, + 88, 95, 87, 95, 95, 157, 231, 235, 246, 167, 171, 187, 240, 215, 163, 188, + 189, 149, 128, 118, 97, 85, 106, 110, 96, 89, 64, 58, 85, 92, 98, 103, + 113, 132, 131, 137, 131, 145, 133, 255, 255, 255, 255, 255, 255, 255, 190, 191, + 179, 170, 168, 104, 91, 89, 81, 64, 73, 68, 68, 64, 52, 43, 44, 58, + 70, 80, 65, 63, 49, 58, 57, 52, 64, 66, 39, 63, 39, 53, 59, 95, + 81, 186, 248, 255, 255, 142, 199, 182, 112, 109, 124, 117, 87, 83, 73, 84, + 112, 179, 192, 207, 168, 174, 160, 122, 72, 71, 38, 47, 61, 135, 224, 230, + 235, 189, 156, 155, 196, 161, 107, 123, 130, 98, 101, 84, 68, 59, 61, 69, + 58, 69, 57, 68, 80, 94, 99, 109, 104, 127, 130, 135, 123, 138, 131, 188, + 255, 255, 255, 255, 255, 235, 189, 181, 168, 161, 159, 93, 84, 80, 78, 62, + 74, 78, 71, 60, 46, 39, 43, 55, 66, 69, 63, 65, 34, 55, 49, 49, + 65, 68, 46, 54, 48, 52, 33, 100, 87, 201, 241, 255, 247, 149, 212, 187, + 95, 103, 115, 109, 102, 90, 71, 69, 109, 178, 198, 200, 193, 164, 164, 112, + 86, 59, 76, 73, 49, 134, 222, 216, 249, 177, 156, 172, 198, 158, 113, 119, + 115, 77, 99, 76, 70, 72, 66, 76, 64, 55, 54, 76, 78, 96, 98, 111, + 96, 116, 125, 137, 123, 139, 132, 152, 255, 255, 255, 255, 255, 201, 225, 188, + 186, 190, 166, 103, 74, 85, 65, 44, 70, 71, 63, 54, 50, 52, 51, 46, + 40, 40, 30, 35, 56, 73, 75, 73, 73, 84, 75, 77, 51, 44, 37, 55, + 51, 152, 205, 211, 212, 109, 129, 85, 49, 43, 32, 50, 68, 78, 73, 81, + 135, 209, 226, 208, 214, 213, 211, 137, 77, 59, 72, 54, 79, 73, 126, 134, + 153, 150, 107, 94, 90, 60, 52, 68, 69, 53, 52, 66, 67, 50, 50, 54, + 43, 69, 64, 75, 89, 86, 87, 98, 103, 115, 113, 119, 144, 120, 130, 149, + 255, 255, 255, 255, 255, 203, 228, 194, 186, 174, 150, 95, 60, 65, 56, 41, + 48, 58, 53, 46, 45, 49, 49, 44, 40, 35, 33, 44, 64, 75, 71, 68, + 68, 73, 55, 57, 42, 43, 33, 46, 39, 65, 88, 106, 106, 51, 61, 56, + 39, 42, 36, 47, 50, 61, 66, 75, 117, 187, 201, 202, 223, 223, 223, 151, + 78, 68, 63, 40, 64, 44, 71, 71, 97, 81, 58, 65, 72, 51, 46, 56, + 51, 55, 42, 42, 46, 55, 88, 109, 94, 83, 70, 68, 78, 81, 83, 89, + 91, 104, 107, 127, 156, 125, 129, 150, 255, 255, 255, 255, 238, 174, 193, 153, + 129, 134, 111, 74, 48, 53, 64, 63, 53, 49, 46, 43, 44, 47, 46, 44, + 40, 40, 45, 60, 82, 93, 93, 97, 102, 73, 46, 45, 40, 45, 31, 37, + 28, 30, 32, 74, 77, 67, 42, 52, 40, 34, 34, 40, 36, 49, 69, 83, + 122, 191, 200, 220, 243, 234, 232, 169, 81, 80, 64, 43, 69, 48, 52, 51, + 86, 84, 69, 66, 60, 36, 41, 56, 53, 36, 45, 57, 54, 57, 95, 120, + 105, 101, 75, 62, 68, 74, 79, 80, 77, 89, 91, 126, 156, 120, 118, 140, + 255, 255, 255, 255, 216, 187, 208, 163, 128, 131, 97, 70, 55, 49, 58, 61, + 42, 47, 46, 45, 45, 45, 44, 41, 41, 46, 49, 59, 79, 92, 102, 113, + 122, 91, 58, 55, 47, 49, 29, 32, 25, 34, 33, 76, 80, 85, 48, 49, + 31, 32, 31, 42, 40, 53, 74, 96, 144, 195, 194, 223, 239, 215, 215, 176, + 88, 70, 55, 42, 66, 49, 50, 53, 83, 101, 91, 78, 51, 27, 37, 55, + 56, 31, 55, 75, 69, 67, 105, 125, 101, 111, 82, 64, 68, 73, 76, 74, + 67, 95, 92, 129, 153, 123, 118, 143, 255, 255, 255, 255, 206, 186, 201, 145, + 110, 120, 78, 62, 64, 52, 51, 55, 42, 41, 42, 44, 44, 44, 42, 41, + 43, 69, 70, 76, 89, 103, 112, 116, 118, 98, 68, 63, 52, 48, 28, 37, + 34, 35, 35, 50, 50, 52, 43, 44, 35, 42, 38, 49, 52, 59, 68, 94, + 153, 206, 199, 230, 233, 204, 211, 200, 124, 68, 61, 50, 54, 40, 44, 44, + 56, 56, 64, 61, 41, 29, 39, 49, 44, 60, 63, 67, 60, 83, 144, 162, + 123, 118, 89, 74, 78, 78, 77, 74, 66, 86, 75, 102, 118, 109, 109, 134, + 255, 255, 255, 255, 179, 162, 162, 93, 70, 89, 53, 49, 62, 55, 48, 54, + 49, 32, 36, 40, 40, 40, 40, 42, 48, 81, 86, 96, 110, 123, 129, 125, + 119, 92, 68, 65, 50, 45, 29, 45, 46, 31, 38, 37, 36, 37, 45, 43, + 40, 41, 35, 47, 53, 62, 70, 95, 160, 228, 220, 247, 236, 213, 217, 221, + 156, 73, 71, 57, 46, 34, 40, 38, 34, 39, 52, 50, 36, 33, 41, 46, + 43, 69, 73, 74, 68, 89, 147, 165, 127, 122, 96, 85, 87, 85, 81, 75, + 67, 67, 57, 71, 80, 96, 98, 120, 255, 255, 255, 255, 171, 166, 155, 84, + 88, 76, 61, 58, 61, 53, 44, 42, 35, 33, 37, 41, 40, 38, 38, 45, + 54, 71, 84, 97, 111, 122, 126, 125, 122, 94, 73, 70, 49, 46, 35, 51, + 43, 27, 30, 32, 31, 43, 39, 35, 35, 40, 38, 45, 46, 63, 88, 114, + 168, 221, 218, 244, 231, 221, 219, 220, 154, 77, 68, 54, 39, 36, 37, 35, + 26, 53, 58, 49, 34, 36, 45, 50, 53, 64, 76, 88, 86, 100, 147, 160, + 121, 129, 99, 87, 90, 88, 84, 75, 63, 67, 66, 72, 71, 107, 103, 117, + 255, 255, 255, 255, 150, 140, 115, 39, 59, 49, 54, 58, 56, 56, 60, 56, + 49, 40, 44, 46, 43, 39, 38, 45, 55, 84, 98, 111, 118, 123, 129, 135, + 138, 106, 89, 82, 56, 52, 44, 53, 37, 40, 28, 33, 27, 51, 36, 44, + 54, 52, 51, 52, 43, 65, 102, 127, 165, 210, 212, 242, 238, 244, 242, 235, + 167, 100, 84, 69, 57, 57, 53, 49, 43, 32, 40, 38, 33, 46, 53, 54, + 60, 78, 72, 75, 89, 126, 184, 191, 141, 135, 102, 86, 88, 89, 84, 74, + 60, 57, 64, 66, 59, 102, 90, 98, 255, 255, 255, 255, 184, 191, 116, 49, + 58, 51, 54, 59, 64, 64, 60, 54, 53, 48, 45, 45, 44, 43, 43, 50, + 62, 95, 104, 112, 124, 135, 142, 146, 147, 127, 116, 111, 70, 54, 63, 40, + 33, 40, 45, 53, 54, 55, 54, 50, 46, 48, 59, 53, 73, 84, 131, 149, + 169, 201, 208, 226, 232, 236, 235, 208, 194, 148, 141, 68, 54, 70, 59, 67, + 48, 46, 42, 50, 54, 50, 56, 69, 74, 70, 86, 114, 116, 174, 189, 202, + 135, 135, 99, 76, 72, 75, 78, 73, 56, 54, 55, 65, 77, 86, 91, 104, + 255, 255, 255, 255, 191, 194, 117, 52, 51, 51, 51, 56, 62, 62, 55, 49, + 49, 46, 44, 44, 44, 44, 42, 49, 61, 88, 98, 108, 120, 132, 140, 147, + 149, 152, 138, 130, 94, 72, 73, 53, 50, 45, 48, 57, 62, 59, 52, 49, + 48, 54, 72, 80, 107, 116, 146, 149, 161, 204, 209, 228, 234, 241, 240, 215, + 203, 189, 173, 94, 65, 62, 45, 56, 40, 48, 45, 54, 58, 53, 58, 70, + 72, 96, 122, 158, 164, 206, 202, 198, 125, 137, 96, 73, 74, 78, 78, 72, + 57, 50, 51, 59, 73, 85, 91, 100, 255, 255, 255, 255, 196, 188, 111, 63, + 56, 57, 53, 58, 67, 65, 52, 44, 47, 44, 43, 44, 46, 45, 42, 49, + 58, 86, 97, 109, 121, 136, 146, 153, 157, 156, 143, 135, 108, 85, 73, 55, + 58, 59, 59, 67, 73, 69, 61, 59, 66, 55, 68, 79, 103, 116, 148, 165, + 184, 202, 209, 231, 237, 245, 245, 221, 211, 196, 182, 118, 91, 78, 63, 76, + 66, 61, 58, 67, 71, 67, 74, 86, 89, 102, 129, 167, 174, 207, 201, 206, + 148, 141, 94, 70, 79, 84, 79, 72, 64, 53, 51, 55, 67, 80, 89, 96, + 255, 255, 255, 255, 169, 150, 76, 57, 53, 68, 60, 62, 74, 70, 52, 44, + 49, 42, 42, 46, 47, 45, 41, 47, 58, 87, 98, 110, 123, 138, 148, 156, + 161, 168, 160, 158, 146, 124, 102, 87, 90, 75, 70, 73, 80, 79, 74, 82, + 95, 90, 108, 130, 154, 160, 162, 159, 167, 202, 209, 231, 238, 246, 249, 227, + 219, 216, 209, 170, 148, 124, 96, 93, 78, 77, 71, 78, 81, 81, 93, 113, + 122, 167, 187, 207, 201, 207, 190, 194, 151, 144, 92, 68, 79, 84, 80, 77, + 76, 63, 59, 57, 62, 74, 82, 88, 255, 255, 255, 255, 186, 160, 81, 80, + 86, 74, 67, 67, 75, 70, 53, 45, 49, 44, 43, 45, 46, 44, 43, 47, + 57, 85, 95, 107, 120, 134, 146, 154, 160, 173, 175, 176, 181, 164, 135, 125, + 124, 133, 128, 128, 132, 134, 139, 154, 170, 171, 160, 154, 149, 150, 154, 174, + 196, 202, 207, 229, 236, 244, 248, 232, 227, 215, 217, 214, 215, 204, 189, 188, + 174, 136, 128, 131, 135, 137, 156, 184, 196, 216, 231, 240, 230, 212, 179, 174, + 136, 141, 89, 63, 71, 75, 73, 78, 82, 77, 69, 62, 61, 66, 74, 80, + 255, 255, 255, 255, 190, 163, 68, 65, 73, 75, 70, 69, 69, 62, 53, 46, + 46, 45, 44, 46, 46, 45, 42, 47, 58, 84, 94, 105, 119, 134, 146, 156, + 162, 169, 179, 181, 194, 186, 161, 157, 149, 136, 136, 133, 134, 139, 149, 162, + 167, 174, 160, 162, 159, 165, 152, 167, 180, 205, 208, 230, 235, 242, 248, 235, + 235, 227, 218, 219, 223, 209, 198, 197, 187, 141, 132, 135, 139, 141, 161, 187, + 199, 228, 234, 231, 224, 199, 171, 167, 143, 132, 87, 62, 63, 62, 64, 72, + 76, 80, 77, 69, 62, 63, 69, 73, 255, 255, 255, 255, 175, 164, 66, 61, + 75, 73, 75, 72, 63, 56, 54, 49, 43, 48, 45, 46, 45, 44, 42, 48, + 59, 80, 89, 103, 118, 134, 147, 159, 167, 182, 197, 193, 209, 210, 201, 209, + 199, 212, 219, 219, 217, 221, 230, 228, 218, 223, 187, 168, 146, 151, 140, 167, + 189, 209, 211, 230, 233, 241, 249, 239, 243, 230, 211, 220, 228, 227, 236, 245, + 239, 223, 216, 222, 225, 224, 235, 251, 255, 255, 255, 242, 236, 202, 169, 157, + 133, 126, 90, 69, 62, 55, 57, 64, 66, 72, 74, 74, 67, 66, 70, 72, + 255, 255, 255, 255, 126, 138, 51, 55, 78, 75, 79, 74, 61, 55, 58, 53, + 44, 52, 48, 46, 45, 42, 42, 48, 58, 71, 80, 93, 110, 125, 140, 151, + 159, 182, 198, 191, 208, 221, 223, 244, 236, 227, 239, 243, 237, 239, 244, 230, + 205, 204, 170, 160, 147, 162, 150, 176, 195, 218, 218, 235, 236, 241, 248, 239, + 244, 227, 199, 206, 214, 213, 227, 235, 230, 239, 238, 247, 251, 246, 247, 255, + 252, 241, 245, 243, 250, 217, 174, 144, 111, 122, 95, 75, 64, 52, 54, 61, + 57, 61, 70, 75, 71, 69, 70, 70, 255, 255, 255, 255, 135, 137, 59, 58, + 67, 73, 72, 71, 58, 47, 57, 61, 48, 51, 50, 47, 43, 41, 43, 48, + 54, 68, 66, 91, 108, 126, 135, 132, 149, 168, 183, 184, 200, 216, 230, 253, + 253, 247, 242, 248, 249, 240, 240, 226, 186, 180, 165, 160, 166, 168, 169, 188, + 217, 227, 227, 241, 231, 238, 234, 245, 231, 228, 232, 222, 224, 208, 220, 221, + 229, 224, 225, 236, 246, 252, 252, 251, 250, 250, 239, 232, 219, 182, 179, 142, + 121, 117, 90, 69, 60, 63, 63, 63, 61, 63, 63, 72, 72, 60, 58, 62, + 255, 255, 255, 255, 138, 146, 72, 63, 65, 69, 70, 69, 57, 47, 58, 64, + 51, 54, 52, 47, 43, 41, 43, 47, 54, 66, 64, 86, 103, 118, 129, 127, + 144, 162, 180, 183, 200, 218, 233, 255, 255, 252, 249, 255, 255, 246, 244, 227, + 190, 180, 161, 152, 160, 169, 172, 186, 209, 228, 228, 244, 237, 245, 239, 245, + 227, 228, 232, 220, 220, 202, 212, 213, 221, 229, 230, 239, 250, 255, 255, 255, + 253, 251, 238, 229, 215, 179, 178, 142, 123, 110, 87, 65, 59, 60, 60, 60, + 58, 60, 60, 70, 72, 62, 58, 62, 255, 255, 255, 255, 152, 161, 90, 69, + 60, 65, 65, 64, 54, 47, 60, 66, 54, 52, 50, 47, 43, 40, 42, 47, + 52, 62, 60, 83, 98, 113, 123, 124, 142, 155, 173, 176, 194, 212, 227, 250, + 251, 252, 250, 255, 250, 234, 223, 201, 167, 175, 149, 137, 146, 161, 168, 175, + 189, 211, 213, 235, 236, 251, 245, 248, 225, 220, 223, 210, 211, 195, 204, 204, + 216, 221, 222, 228, 238, 249, 254, 250, 244, 244, 229, 220, 206, 170, 169, 135, + 118, 106, 83, 64, 58, 59, 57, 56, 53, 58, 57, 69, 73, 66, 63, 63, + 255, 255, 255, 255, 157, 162, 94, 72, 59, 62, 61, 60, 51, 46, 61, 68, + 56, 53, 51, 47, 43, 40, 42, 46, 51, 59, 57, 79, 92, 106, 117, 119, + 140, 154, 171, 171, 188, 205, 218, 241, 240, 249, 250, 251, 242, 226, 207, 181, + 152, 145, 122, 106, 113, 127, 132, 134, 144, 181, 187, 215, 224, 243, 241, 242, + 217, 180, 180, 171, 178, 166, 177, 180, 198, 211, 214, 218, 226, 239, 247, 245, + 236, 236, 220, 211, 201, 164, 160, 124, 108, 98, 77, 61, 56, 58, 55, 52, + 49, 57, 56, 68, 74, 68, 65, 63, 255, 255, 255, 255, 155, 153, 94, 73, + 62, 62, 60, 59, 50, 46, 62, 70, 58, 53, 51, 47, 42, 40, 41, 46, + 51, 59, 54, 75, 87, 98, 110, 113, 135, 159, 174, 172, 184, 199, 210, 232, + 230, 238, 241, 238, 229, 222, 203, 175, 155, 146, 125, 112, 114, 119, 121, 122, + 131, 167, 174, 204, 216, 238, 234, 233, 207, 160, 163, 157, 170, 161, 174, 180, + 200, 204, 208, 210, 216, 229, 241, 242, 232, 228, 212, 206, 197, 161, 154, 117, + 101, 93, 73, 60, 56, 57, 54, 51, 49, 59, 59, 70, 74, 67, 64, 65, + 255, 255, 255, 255, 176, 163, 103, 79, 67, 65, 62, 59, 51, 47, 64, 72, + 57, 54, 52, 47, 42, 40, 41, 45, 49, 59, 55, 73, 82, 92, 103, 107, + 130, 157, 168, 164, 173, 184, 195, 217, 214, 222, 222, 211, 202, 197, 177, 148, + 133, 114, 97, 86, 82, 83, 79, 80, 87, 130, 137, 166, 173, 191, 185, 184, + 158, 110, 112, 110, 127, 119, 130, 134, 157, 179, 186, 187, 188, 202, 219, 223, + 218, 212, 196, 190, 184, 149, 142, 106, 92, 87, 70, 60, 56, 56, 54, 51, + 52, 65, 65, 74, 74, 63, 60, 64, 255, 255, 255, 255, 198, 178, 120, 88, + 69, 69, 65, 61, 51, 49, 66, 72, 58, 54, 51, 47, 43, 38, 39, 43, + 49, 60, 55, 73, 80, 87, 97, 102, 127, 149, 160, 152, 158, 167, 177, 201, + 199, 208, 205, 184, 171, 171, 150, 118, 107, 106, 90, 77, 72, 71, 68, 65, + 67, 77, 84, 111, 115, 127, 120, 120, 98, 86, 90, 89, 110, 101, 110, 111, + 134, 154, 164, 163, 161, 174, 194, 204, 203, 193, 174, 167, 163, 131, 127, 95, + 88, 84, 69, 59, 56, 57, 55, 54, 56, 72, 72, 81, 76, 60, 56, 65, + 255, 255, 255, 255, 197, 181, 127, 92, 70, 72, 67, 62, 52, 51, 65, 72, + 58, 53, 51, 47, 43, 38, 39, 43, 47, 62, 55, 72, 78, 83, 93, 99, + 123, 147, 155, 145, 149, 159, 171, 194, 192, 199, 194, 171, 158, 166, 147, 118, + 110, 100, 84, 67, 63, 65, 63, 57, 55, 75, 83, 108, 111, 122, 113, 118, + 100, 72, 76, 77, 99, 91, 98, 100, 122, 148, 158, 158, 154, 164, 187, 201, + 202, 183, 161, 153, 149, 119, 118, 93, 90, 81, 67, 57, 55, 56, 56, 56, + 59, 76, 77, 84, 76, 56, 52, 65, 255, 255, 255, 255, 180, 165, 126, 88, + 61, 67, 65, 55, 49, 53, 64, 69, 65, 56, 51, 43, 39, 38, 37, 37, + 36, 50, 51, 59, 75, 83, 85, 94, 106, 125, 132, 133, 132, 137, 154, 173, + 183, 182, 144, 127, 132, 128, 115, 103, 90, 80, 74, 68, 64, 63, 60, 57, + 57, 58, 76, 75, 92, 89, 90, 73, 81, 85, 77, 81, 98, 97, 84, 90, + 111, 117, 126, 130, 128, 135, 152, 167, 173, 156, 160, 129, 132, 113, 107, 93, + 76, 78, 65, 57, 56, 58, 60, 64, 73, 87, 87, 89, 76, 60, 66, 79, + 255, 255, 255, 255, 168, 143, 107, 80, 53, 57, 58, 51, 45, 47, 56, 60, + 59, 60, 54, 45, 40, 39, 40, 40, 41, 44, 46, 54, 69, 76, 78, 86, + 98, 102, 111, 116, 116, 123, 137, 150, 155, 148, 119, 106, 109, 104, 97, 90, + 79, 79, 69, 62, 57, 60, 63, 69, 74, 81, 91, 75, 77, 66, 75, 74, + 96, 87, 79, 82, 92, 90, 80, 80, 92, 105, 109, 104, 98, 104, 122, 139, + 147, 135, 141, 114, 119, 99, 95, 82, 67, 75, 65, 57, 56, 59, 59, 65, + 73, 88, 84, 84, 77, 66, 69, 142, 255, 255, 255, 255, 171, 130, 98, 84, + 55, 56, 57, 54, 49, 47, 53, 58, 60, 63, 56, 47, 41, 39, 41, 44, + 47, 42, 43, 51, 65, 71, 72, 77, 89, 84, 90, 98, 103, 110, 120, 125, + 123, 119, 103, 96, 93, 87, 88, 85, 74, 65, 63, 61, 61, 65, 67, 71, + 74, 73, 87, 78, 83, 71, 76, 76, 100, 90, 85, 85, 90, 91, 90, 88, + 89, 86, 90, 93, 94, 98, 105, 108, 105, 115, 125, 103, 108, 87, 83, 72, + 62, 73, 65, 58, 56, 59, 60, 66, 71, 90, 81, 78, 76, 72, 76, 255, + 255, 255, 255, 255, 173, 119, 91, 82, 53, 56, 58, 57, 53, 49, 51, 57, + 62, 65, 58, 48, 41, 39, 42, 46, 50, 46, 45, 51, 64, 68, 65, 70, + 80, 77, 84, 91, 95, 102, 107, 106, 101, 95, 92, 95, 90, 81, 87, 87, + 74, 76, 73, 70, 70, 72, 73, 77, 80, 71, 84, 81, 95, 85, 84, 78, + 98, 99, 96, 88, 84, 85, 87, 83, 77, 82, 87, 92, 94, 95, 95, 90, + 83, 107, 119, 100, 105, 82, 77, 68, 60, 67, 63, 56, 55, 56, 60, 64, + 68, 88, 76, 70, 72, 77, 78, 255, 255, 255, 255, 255, 157, 105, 81, 73, + 46, 52, 52, 50, 47, 44, 44, 47, 53, 63, 56, 45, 39, 38, 42, 45, + 49, 49, 49, 53, 61, 63, 59, 60, 70, 77, 80, 85, 86, 89, 91, 89, + 83, 72, 79, 91, 89, 82, 90, 94, 80, 86, 80, 76, 70, 71, 76, 86, + 92, 100, 99, 81, 89, 82, 87, 85, 108, 93, 95, 93, 92, 99, 110, 116, + 114, 97, 92, 85, 79, 77, 79, 84, 89, 107, 120, 101, 104, 79, 73, 66, + 60, 62, 59, 55, 53, 54, 59, 62, 64, 80, 70, 59, 61, 73, 72, 255, + 255, 255, 255, 130, 137, 100, 80, 70, 51, 53, 49, 45, 43, 41, 41, 43, + 50, 58, 53, 45, 40, 40, 41, 43, 45, 48, 47, 50, 58, 59, 52, 54, + 61, 70, 74, 78, 76, 75, 76, 74, 69, 60, 70, 85, 92, 89, 97, 103, + 94, 105, 111, 119, 125, 127, 128, 130, 128, 125, 120, 101, 115, 113, 119, 117, + 141, 129, 130, 125, 115, 105, 100, 99, 98, 97, 93, 88, 85, 79, 76, 84, + 91, 108, 121, 100, 102, 77, 71, 65, 58, 58, 57, 54, 49, 52, 59, 62, + 60, 70, 67, 52, 51, 65, 66, 255, 255, 255, 255, 113, 120, 100, 84, 67, + 56, 58, 49, 42, 42, 42, 42, 44, 50, 54, 51, 45, 43, 41, 41, 41, + 42, 48, 47, 50, 58, 59, 53, 54, 61, 63, 71, 75, 73, 70, 69, 68, + 66, 63, 68, 85, 94, 92, 97, 105, 102, 82, 96, 115, 127, 132, 131, 129, + 125, 101, 104, 99, 121, 119, 120, 114, 138, 114, 123, 130, 128, 113, 103, 105, + 112, 91, 91, 95, 97, 89, 81, 85, 93, 109, 119, 96, 98, 77, 73, 67, + 59, 56, 57, 53, 50, 53, 60, 62, 59, 69, 72, 55, 47, 64, 255, 255, + 255, 255, 255, 95, 102, 90, 75, 55, 47, 58, 45, 36, 37, 39, 37, 41, + 45, 51, 48, 45, 44, 44, 42, 40, 40, 49, 47, 51, 59, 60, 55, 57, + 64, 61, 71, 79, 77, 73, 71, 70, 69, 70, 69, 81, 89, 85, 89, 99, + 101, 108, 113, 118, 124, 129, 139, 152, 157, 170, 173, 168, 188, 180, 177, 175, + 204, 195, 198, 196, 175, 133, 93, 79, 81, 93, 92, 91, 84, 77, 71, 83, + 99, 108, 116, 92, 95, 77, 75, 71, 61, 57, 58, 54, 50, 53, 61, 63, + 60, 71, 80, 61, 49, 67, 255, 255, 255, 255, 217, 102, 100, 85, 68, 55, + 50, 49, 44, 37, 33, 31, 32, 34, 33, 43, 40, 38, 38, 40, 40, 38, + 36, 47, 42, 44, 53, 57, 52, 50, 56, 57, 65, 72, 76, 72, 69, 69, + 70, 60, 73, 84, 93, 94, 99, 95, 92, 96, 132, 149, 163, 172, 184, 202, + 191, 209, 206, 218, 232, 234, 226, 225, 233, 220, 214, 236, 192, 157, 115, 100, + 113, 123, 120, 117, 102, 79, 73, 80, 81, 93, 88, 80, 72, 69, 70, 67, + 60, 55, 60, 60, 54, 49, 53, 62, 68, 80, 89, 65, 49, 63, 255, 255, + 255, 255, 129, 102, 97, 83, 75, 55, 53, 50, 44, 36, 31, 31, 31, 31, + 32, 36, 35, 35, 37, 41, 41, 39, 37, 46, 41, 44, 53, 54, 48, 47, + 54, 58, 64, 72, 74, 74, 71, 72, 76, 87, 101, 114, 120, 121, 123, 120, + 117, 108, 130, 131, 135, 130, 126, 134, 122, 132, 124, 126, 133, 135, 134, 142, + 156, 149, 153, 185, 176, 168, 157, 156, 174, 147, 137, 132, 116, 92, 83, 87, + 83, 86, 81, 72, 65, 64, 66, 63, 56, 56, 59, 57, 52, 50, 56, 65, + 68, 86, 90, 67, 47, 54, 255, 255, 255, 255, 114, 101, 93, 81, 86, 58, + 63, 51, 45, 37, 32, 32, 31, 30, 31, 31, 32, 35, 38, 43, 42, 41, + 39, 44, 43, 47, 52, 51, 43, 45, 53, 54, 62, 69, 71, 73, 73, 75, + 79, 77, 94, 115, 119, 123, 119, 122, 119, 122, 136, 132, 136, 135, 128, 138, + 132, 150, 141, 141, 143, 144, 146, 158, 172, 170, 171, 183, 181, 164, 159, 144, + 150, 151, 136, 127, 112, 92, 84, 87, 80, 81, 76, 68, 61, 60, 62, 59, + 53, 57, 57, 53, 50, 52, 59, 66, 67, 75, 79, 63, 50, 122, 255, 255, + 255, 200, 82, 81, 73, 61, 75, 44, 53, 50, 45, 37, 32, 31, 30, 29, + 29, 27, 29, 34, 38, 43, 43, 42, 41, 44, 45, 49, 50, 46, 41, 44, + 53, 52, 56, 63, 67, 70, 73, 77, 83, 90, 110, 138, 143, 157, 153, 160, + 156, 147, 159, 161, 176, 178, 174, 194, 199, 182, 182, 188, 194, 193, 191, 196, + 200, 176, 179, 175, 188, 177, 186, 171, 171, 135, 113, 104, 97, 83, 81, 81, + 76, 76, 72, 66, 59, 59, 62, 59, 54, 55, 56, 52, 51, 55, 62, 62, + 58, 57, 65, 58, 54, 255, 255, 255, 255, 88, 75, 78, 73, 55, 69, 41, + 48, 48, 43, 36, 32, 31, 29, 28, 28, 25, 28, 34, 38, 43, 42, 42, + 42, 43, 47, 50, 49, 45, 40, 44, 51, 53, 56, 61, 65, 70, 74, 80, + 87, 78, 98, 130, 133, 156, 150, 163, 158, 168, 184, 187, 198, 195, 188, 210, + 217, 216, 221, 232, 240, 238, 232, 231, 231, 224, 223, 200, 207, 190, 195, 180, + 166, 126, 100, 92, 92, 84, 84, 85, 81, 74, 71, 65, 59, 60, 63, 62, + 57, 54, 55, 53, 53, 57, 61, 57, 50, 55, 59, 60, 59, 255, 255, 255, + 255, 92, 81, 80, 82, 56, 61, 47, 49, 46, 42, 36, 33, 33, 31, 30, + 29, 26, 30, 35, 38, 40, 39, 41, 42, 44, 46, 48, 47, 44, 44, 47, + 51, 56, 56, 58, 63, 69, 77, 84, 91, 83, 97, 130, 127, 159, 151, 166, + 159, 167, 184, 185, 193, 190, 189, 210, 216, 222, 226, 232, 236, 233, 231, 231, + 232, 223, 224, 204, 208, 203, 203, 200, 181, 125, 96, 89, 91, 85, 83, 85, + 83, 72, 70, 64, 59, 60, 64, 64, 57, 54, 54, 55, 55, 57, 59, 55, + 47, 57, 59, 65, 128, 255, 255, 255, 255, 68, 66, 56, 70, 39, 36, 41, + 38, 47, 43, 37, 35, 36, 34, 33, 33, 29, 32, 36, 37, 38, 36, 39, + 41, 47, 47, 47, 45, 46, 47, 49, 50, 54, 54, 55, 59, 66, 73, 81, + 89, 81, 87, 117, 111, 147, 139, 159, 149, 158, 173, 167, 169, 176, 186, 207, + 204, 210, 213, 216, 216, 213, 213, 215, 216, 212, 215, 199, 193, 193, 177, 184, + 154, 114, 85, 78, 82, 75, 72, 75, 75, 68, 64, 59, 55, 56, 61, 61, + 56, 55, 56, 57, 54, 55, 59, 59, 55, 53, 53, 62, 255, 255, 255, 255, + 255, 59, 63, 50, 74, 42, 36, 56, 48, 46, 44, 39, 37, 38, 37, 36, + 36, 31, 34, 37, 36, 36, 34, 38, 40, 47, 47, 45, 43, 46, 48, 50, + 48, 51, 49, 49, 52, 60, 69, 77, 83, 80, 81, 110, 102, 144, 136, 157, + 146, 158, 166, 147, 143, 151, 165, 183, 169, 164, 167, 171, 169, 168, 166, 166, + 166, 178, 184, 178, 169, 178, 153, 168, 136, 100, 74, 69, 72, 65, 61, 66, + 67, 63, 60, 56, 52, 54, 59, 60, 53, 56, 57, 56, 53, 54, 59, 63, + 62, 49, 46, 55, 255, 255, 255, 255, 255, 62, 51, 42, 42, 39, 34, 36, + 43, 41, 43, 43, 44, 44, 39, 36, 34, 28, 32, 39, 41, 44, 42, 42, + 41, 46, 46, 46, 45, 46, 45, 46, 46, 48, 45, 43, 46, 56, 62, 65, + 67, 66, 74, 82, 92, 105, 123, 142, 156, 159, 153, 147, 146, 149, 152, 151, + 145, 133, 130, 130, 133, 136, 140, 143, 144, 140, 144, 157, 158, 142, 133, 130, + 119, 91, 68, 71, 67, 64, 62, 48, 56, 58, 53, 50, 49, 51, 55, 58, + 59, 57, 55, 54, 56, 61, 62, 62, 59, 67, 57, 125, 255, 255, 255, 255, + 92, 61, 49, 41, 42, 41, 37, 38, 45, 39, 40, 40, 41, 41, 38, 35, + 34, 29, 33, 38, 40, 42, 41, 42, 42, 49, 48, 47, 45, 46, 45, 46, + 47, 45, 42, 41, 45, 53, 60, 61, 60, 58, 65, 75, 83, 94, 112, 136, + 152, 151, 146, 140, 140, 144, 143, 140, 135, 124, 122, 122, 126, 132, 134, 136, + 131, 138, 136, 145, 146, 133, 127, 120, 107, 86, 66, 69, 63, 62, 61, 48, + 54, 54, 51, 47, 45, 49, 52, 55, 55, 55, 54, 55, 57, 61, 62, 62, + 60, 67, 59, 255, 255, 255, 255, 255, 98, 56, 43, 36, 37, 39, 36, 36, + 41, 37, 37, 36, 36, 36, 35, 34, 34, 32, 34, 38, 38, 41, 40, 43, + 44, 45, 45, 44, 41, 41, 40, 41, 39, 40, 39, 38, 43, 49, 54, 55, + 53, 51, 56, 64, 68, 77, 95, 121, 143, 146, 145, 143, 142, 145, 146, 143, + 136, 125, 120, 121, 127, 134, 136, 130, 125, 128, 122, 125, 126, 118, 111, 104, + 87, 79, 63, 66, 59, 58, 61, 48, 53, 53, 50, 46, 44, 47, 49, 53, + 53, 55, 53, 53, 56, 59, 60, 61, 61, 75, 71, 255, 255, 255, 255, 255, + 86, 57, 42, 32, 36, 39, 37, 37, 40, 35, 35, 32, 31, 32, 32, 33, + 34, 35, 36, 38, 38, 40, 40, 44, 46, 43, 40, 39, 37, 37, 34, 35, + 35, 37, 36, 38, 40, 47, 48, 47, 45, 46, 51, 57, 58, 62, 79, 108, + 132, 140, 142, 146, 149, 151, 151, 148, 142, 132, 126, 125, 128, 134, 135, 130, + 122, 118, 112, 118, 119, 110, 101, 93, 77, 72, 61, 64, 54, 54, 60, 49, + 51, 55, 52, 48, 47, 49, 51, 54, 52, 53, 52, 52, 54, 56, 59, 60, + 59, 78, 80, 255, 255, 255, 255, 255, 75, 65, 46, 33, 36, 39, 38, 38, + 40, 34, 34, 31, 30, 31, 31, 32, 34, 37, 38, 39, 38, 40, 40, 44, + 47, 43, 43, 42, 40, 39, 37, 37, 36, 33, 36, 38, 40, 44, 44, 43, + 41, 43, 48, 52, 53, 56, 73, 104, 128, 134, 139, 146, 148, 148, 146, 144, + 140, 136, 128, 122, 120, 122, 123, 120, 116, 114, 114, 125, 126, 112, 102, 95, + 81, 67, 58, 62, 50, 49, 60, 50, 48, 52, 50, 47, 47, 50, 51, 54, + 52, 51, 51, 52, 54, 55, 58, 61, 64, 77, 136, 255, 255, 255, 255, 255, + 92, 71, 49, 31, 32, 35, 33, 33, 33, 35, 35, 32, 30, 31, 31, 31, + 33, 35, 36, 38, 37, 38, 38, 42, 44, 41, 39, 38, 36, 35, 35, 35, + 35, 35, 35, 38, 40, 41, 41, 40, 38, 42, 46, 49, 51, 58, 76, 104, + 125, 129, 136, 142, 145, 143, 139, 138, 136, 133, 125, 117, 111, 109, 109, 108, + 108, 112, 112, 122, 124, 110, 99, 92, 78, 65, 58, 62, 45, 46, 60, 49, + 44, 48, 46, 44, 44, 47, 50, 52, 50, 50, 50, 54, 58, 60, 66, 73, + 76, 87, 255, 255, 255, 255, 255, 255, 205, 80, 55, 32, 30, 33, 31, 28, + 28, 37, 36, 34, 33, 33, 31, 31, 31, 31, 33, 35, 35, 36, 35, 38, + 39, 37, 36, 35, 33, 33, 33, 34, 34, 36, 38, 40, 40, 40, 40, 40, + 39, 43, 45, 48, 51, 58, 72, 96, 113, 115, 124, 133, 134, 133, 131, 135, + 135, 130, 125, 119, 112, 106, 104, 107, 109, 113, 107, 109, 109, 98, 90, 82, + 66, 63, 59, 63, 43, 43, 59, 49, 39, 43, 42, 43, 44, 47, 50, 51, + 51, 48, 51, 58, 64, 70, 79, 90, 96, 157, 255, 255, 255, 255, 255, 255, + 255, 95, 67, 43, 38, 41, 38, 34, 33, 38, 38, 36, 35, 34, 32, 32, + 31, 29, 31, 33, 34, 33, 32, 33, 33, 38, 38, 36, 36, 37, 37, 39, + 39, 39, 39, 41, 39, 38, 38, 39, 39, 45, 46, 48, 48, 53, 65, 81, + 93, 91, 101, 113, 119, 118, 121, 125, 130, 130, 128, 124, 117, 109, 106, 109, + 112, 115, 101, 97, 93, 86, 82, 72, 55, 62, 58, 62, 41, 41, 59, 46, + 38, 44, 43, 44, 46, 50, 52, 53, 53, 48, 53, 61, 70, 80, 91, 103, + 111, 255, 255, 255, 255, 255, 255, 255, 255, 84, 68, 51, 41, 40, 42, 40, + 37, 39, 40, 41, 42, 39, 37, 34, 32, 32, 31, 31, 31, 31, 32, 33, + 34, 35, 36, 39, 40, 41, 38, 38, 35, 39, 39, 39, 39, 39, 39, 38, + 39, 44, 48, 52, 52, 56, 64, 74, 84, 89, 98, 108, 114, 114, 112, 121, + 132, 124, 124, 122, 121, 117, 113, 108, 106, 98, 95, 89, 84, 80, 73, 65, + 57, 57, 60, 59, 48, 45, 50, 48, 40, 44, 43, 43, 45, 48, 50, 51, + 52, 55, 62, 69, 74, 78, 84, 98, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 89, 74, 58, 48, 46, 46, 42, 38, 35, 36, 39, 41, 41, 41, 38, + 37, 33, 33, 31, 32, 32, 33, 31, 32, 34, 36, 38, 40, 40, 39, 38, + 37, 38, 38, 39, 39, 38, 37, 36, 37, 45, 52, 55, 56, 56, 57, 62, + 68, 68, 77, 94, 105, 109, 111, 120, 131, 134, 131, 127, 122, 116, 112, 108, + 104, 97, 91, 83, 74, 68, 63, 59, 54, 49, 54, 53, 44, 42, 47, 46, + 38, 44, 44, 45, 46, 49, 52, 55, 57, 49, 54, 66, 80, 92, 101, 162, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 80, 65, 56, 53, 50, 44, + 38, 35, 36, 38, 40, 41, 40, 38, 37, 33, 33, 32, 33, 33, 33, 32, + 32, 34, 35, 37, 38, 39, 38, 37, 36, 37, 38, 38, 38, 38, 37, 36, + 37, 40, 47, 52, 53, 52, 51, 52, 54, 54, 65, 84, 100, 106, 109, 121, + 131, 138, 132, 127, 119, 112, 106, 102, 100, 99, 90, 77, 68, 61, 58, 57, + 53, 47, 51, 50, 43, 42, 47, 46, 40, 48, 49, 48, 45, 41, 41, 44, + 48, 52, 54, 67, 86, 104, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 81, 68, 60, 57, 53, 46, 38, 39, 39, 40, 40, 39, 38, 34, + 33, 33, 34, 33, 34, 34, 34, 32, 32, 33, 34, 36, 37, 37, 37, 36, + 36, 36, 36, 37, 37, 37, 37, 36, 36, 37, 43, 51, 53, 52, 52, 55, + 57, 59, 67, 82, 96, 102, 106, 116, 127, 129, 125, 119, 111, 105, 103, 100, + 98, 98, 90, 76, 65, 59, 56, 55, 53, 49, 51, 51, 47, 46, 50, 49, + 45, 47, 49, 49, 45, 39, 38, 42, 48, 58, 58, 67, 82, 94, 155, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 66, 60, 58, 55, 46, + 38, 39, 39, 39, 39, 38, 37, 34, 33, 33, 34, 34, 35, 36, 35, 33, + 32, 33, 33, 34, 35, 35, 35, 35, 35, 34, 35, 36, 36, 36, 36, 36, + 36, 43, 47, 52, 53, 53, 54, 59, 64, 65, 71, 81, 90, 96, 100, 109, + 120, 118, 114, 109, 104, 101, 100, 102, 102, 94, 86, 77, 68, 63, 59, 57, + 52, 50, 51, 51, 49, 49, 51, 51, 49, 39, 43, 47, 48, 47, 50, 57, + 64, 58, 58, 64, 69, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 195, 64, 59, 58, 54, 45, 37, 36, 36, 36, 37, 38, 38, 37, + 37, 33, 35, 35, 37, 37, 36, 33, 33, 32, 32, 33, 33, 33, 34, 34, + 34, 33, 34, 35, 35, 36, 36, 35, 36, 42, 45, 48, 46, 45, 47, 53, + 59, 64, 66, 73, 82, 87, 92, 104, 113, 101, 99, 95, 93, 91, 92, 93, + 95, 87, 81, 73, 67, 63, 59, 57, 54, 49, 48, 48, 48, 48, 48, 48, + 48, 39, 42, 46, 48, 48, 51, 55, 60, 58, 59, 66, 66, 61, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 60, 58, 54, 45, + 37, 36, 36, 36, 36, 37, 38, 37, 38, 34, 35, 36, 38, 38, 37, 34, + 33, 32, 32, 32, 32, 32, 33, 33, 34, 32, 33, 34, 35, 35, 35, 35, + 35, 35, 38, 42, 39, 39, 40, 44, 49, 57, 60, 66, 76, 82, 85, 95, + 103, 90, 88, 84, 82, 79, 80, 81, 81, 80, 73, 66, 61, 60, 58, 57, + 54, 49, 47, 47, 48, 47, 47, 46, 47, 44, 45, 46, 47, 46, 45, 44, + 44, 55, 59, 69, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 62, 59, 54, 45, 37, 40, 39, 38, 37, 36, 36, 34, + 34, 34, 35, 37, 38, 39, 38, 34, 33, 32, 31, 31, 31, 31, 32, 33, + 34, 32, 32, 33, 34, 35, 35, 35, 35, 34, 38, 42, 43, 42, 43, 46, + 51, 53, 57, 66, 74, 80, 83, 88, 94, 88, 86, 83, 80, 78, 77, 76, + 75, 74, 68, 60, 54, 53, 54, 56, 55, 51, 48, 48, 49, 49, 47, 47, + 48, 44, 44, 46, 49, 51, 51, 48, 45, 48, 53, 66, 73, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 65, 62, 51, + 41, 42, 39, 37, 37, 38, 40, 38, 37, 37, 35, 33, 36, 40, 42, 38, + 36, 35, 34, 33, 31, 31, 30, 30, 30, 31, 31, 31, 32, 33, 36, 38, + 40, 38, 41, 43, 42, 40, 40, 42, 46, 47, 50, 56, 62, 67, 75, 82, + 89, 89, 85, 82, 77, 75, 74, 72, 72, 72, 63, 58, 60, 59, 52, 50, + 52, 44, 45, 45, 45, 45, 45, 45, 45, 45, 47, 48, 48, 46, 48, 52, + 57, 60, 63, 74, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 66, 56, 47, 47, 44, 40, 38, 37, 36, 33, + 31, 32, 31, 31, 34, 38, 39, 35, 33, 34, 33, 32, 31, 30, 30, 30, + 31, 31, 31, 31, 32, 33, 36, 38, 40, 38, 41, 43, 42, 40, 40, 42, + 45, 50, 52, 56, 58, 63, 69, 78, 84, 85, 83, 80, 77, 76, 73, 73, + 72, 72, 63, 58, 58, 56, 50, 48, 49, 49, 48, 47, 46, 45, 44, 43, + 42, 41, 44, 47, 47, 47, 52, 61, 69, 77, 84, 103, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 58, + 48, 49, 46, 42, 39, 37, 35, 30, 28, 29, 29, 31, 34, 38, 39, 35, + 33, 33, 32, 31, 31, 31, 31, 31, 32, 31, 31, 31, 32, 33, 36, 38, + 40, 39, 40, 41, 41, 40, 40, 41, 43, 51, 51, 54, 54, 58, 63, 72, + 77, 76, 75, 74, 71, 70, 67, 66, 64, 67, 60, 54, 53, 51, 47, 44, + 44, 49, 48, 48, 47, 46, 45, 44, 43, 37, 41, 45, 44, 44, 49, 61, + 71, 70, 78, 152, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 189, 45, 49, 46, 42, 40, 38, 36, 31, + 29, 28, 30, 33, 36, 39, 39, 36, 34, 35, 34, 33, 33, 33, 33, 34, + 34, 31, 31, 31, 32, 33, 36, 38, 40, 37, 38, 38, 38, 38, 38, 38, + 40, 44, 47, 49, 53, 55, 59, 64, 67, 68, 66, 67, 64, 62, 57, 55, + 52, 59, 54, 49, 48, 47, 44, 42, 41, 45, 45, 45, 46, 47, 47, 48, + 48, 41, 46, 50, 48, 44, 46, 56, 65, 58, 132, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 188, 50, 46, 44, 41, 38, 31, 28, 27, 30, 32, 35, 36, 36, 34, + 34, 38, 37, 37, 36, 36, 36, 36, 37, 31, 31, 31, 32, 33, 36, 38, + 40, 37, 37, 36, 36, 36, 36, 36, 36, 38, 43, 50, 57, 61, 62, 64, + 64, 67, 64, 65, 61, 58, 54, 52, 48, 52, 50, 48, 45, 46, 45, 44, + 41, 44, 44, 45, 45, 46, 47, 48, 48, 46, 51, 55, 53, 49, 49, 55, + 62, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 53, 49, 44, 39, 31, + 26, 26, 29, 30, 31, 31, 31, 30, 32, 42, 41, 40, 38, 37, 37, 37, + 37, 31, 31, 31, 32, 33, 36, 38, 40, 37, 36, 35, 35, 36, 35, 35, + 34, 36, 44, 53, 63, 67, 67, 67, 65, 70, 67, 66, 63, 61, 57, 56, + 54, 51, 50, 48, 46, 45, 49, 48, 45, 46, 46, 45, 45, 45, 44, 44, + 44, 40, 43, 46, 48, 48, 52, 58, 63, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 189, 53, 48, 42, 34, 29, 28, 30, 30, 29, 27, 27, 28, + 31, 44, 42, 41, 39, 37, 36, 36, 36, 31, 31, 31, 32, 33, 36, 38, + 40, 40, 39, 37, 36, 38, 38, 36, 34, 38, 45, 54, 62, 66, 66, 66, + 65, 63, 62, 60, 58, 58, 59, 60, 60, 50, 50, 48, 42, 43, 48, 46, + 42, 44, 44, 44, 44, 44, 43, 43, 43, 39, 38, 38, 41, 48, 57, 66, + 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 52, 47, 39, + 35, 32, 32, 32, 30, 27, 28, 30, 34, 44, 43, 41, 38, 36, 36, 35, + 35, 32, 31, 31, 32, 33, 36, 36, 40, 42, 41, 38, 37, 39, 40, 37, + 35, 39, 44, 51, 57, 61, 62, 62, 61, 55, 51, 50, 50, 52, 54, 58, + 60, 47, 49, 44, 39, 39, 43, 41, 36, 39, 40, 41, 42, 43, 45, 46, + 47, 50, 46, 42, 44, 54, 67, 77, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 60, 52, 43, 37, 29, 29, 33, 34, 34, 46, + 59, 46, 39, 36, 39, 40, 39, 40, 45, 39, 36, 34, 32, 33, 33, 34, + 37, 36, 36, 36, 36, 36, 36, 37, 39, 34, 39, 43, 46, 54, 60, 61, + 54, 53, 51, 52, 51, 50, 49, 51, 53, 45, 44, 42, 40, 37, 37, 37, + 38, 41, 42, 42, 43, 43, 47, 49, 51, 55, 43, 59, 59, 71, 86, 166, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, + 41, 43, 37, 34, 35, 36, 38, 51, 64, 50, 43, 39, 40, 41, 37, 37, + 40, 33, 33, 30, 30, 31, 31, 34, 36, 36, 37, 37, 36, 35, 36, 37, + 37, 34, 40, 47, 47, 49, 54, 56, 54, 53, 53, 54, 53, 49, 48, 48, + 50, 45, 43, 41, 38, 37, 37, 37, 40, 43, 42, 41, 40, 40, 46, 51, + 56, 67, 64, 64, 60, 67, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 61, 59, 53, 38, 41, 50, 58, 60, 54, 52, + 51, 44, 39, 37, 38, 40, 38, 39, 41, 34, 34, 31, 30, 32, 31, 33, + 35, 39, 40, 37, 37, 36, 36, 36, 37, 37, 46, 53, 52, 50, 53, 56, + 55, 54, 54, 55, 54, 50, 46, 45, 45, 43, 42, 40, 37, 36, 37, 37, + 39, 42, 40, 38, 36, 38, 43, 51, 57, 49, 64, 57, 65, 77, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, + 57, 60, 71, 86, 95, 96, 87, 76, 66, 48, 44, 42, 41, 43, 43, 43, + 43, 43, 41, 37, 35, 34, 32, 31, 31, 39, 41, 38, 37, 36, 36, 36, + 37, 38, 44, 49, 48, 48, 53, 54, 51, 49, 51, 53, 52, 48, 44, 42, + 39, 44, 42, 40, 38, 38, 36, 39, 41, 45, 44, 41, 40, 41, 45, 52, + 58, 66, 99, 84, 87, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 91, 94, 91, 92, 93, 87, + 81, 60, 57, 53, 47, 46, 45, 45, 42, 45, 43, 40, 37, 35, 32, 31, + 31, 39, 41, 40, 37, 36, 37, 37, 38, 37, 36, 37, 38, 45, 50, 49, + 42, 42, 44, 47, 48, 45, 42, 39, 39, 44, 42, 41, 37, 37, 37, 39, + 42, 46, 47, 46, 46, 47, 52, 57, 62, 82, 126, 113, 110, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 201, 86, 74, 55, 54, 48, 42, 41, 47, 49, + 47, 43, 41, 40, 38, 36, 33, 33, 32, 38, 40, 40, 40, 38, 38, 39, + 40, 43, 39, 35, 38, 47, 54, 52, 40, 37, 40, 43, 43, 41, 40, 38, + 39, 41, 40, 37, 36, 35, 36, 37, 41, 43, 44, 44, 44, 48, 55, 63, + 69, 84, 125, 129, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 190, 59, 50, 42, 42, 52, 56, 54, 47, 45, 44, 42, 39, 37, 33, + 35, 39, 40, 39, 39, 39, 40, 41, 42, 47, 45, 42, 42, 47, 52, 50, + 43, 38, 40, 41, 41, 39, 39, 38, 40, 38, 37, 34, 33, 32, 33, 34, + 38, 45, 46, 44, 47, 53, 65, 80, 91, 121, 146, 190, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 57, 52, 56, 57, + 53, 56, 54, 51, 48, 44, 39, 35, 34, 38, 39, 39, 39, 39, 41, 42, + 43, 43, 44, 42, 38, 39, 42, 42, 37, 40, 41, 42, 41, 38, 38, 38, + 40, 36, 34, 33, 30, 30, 31, 33, 37, 60, 59, 56, 57, 68, 85, 106, + 119, 145, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 60, 57, 59, 61, 53, 55, 54, 50, 43, 39, 39, + 40, 42, 42, 41, 40, 39, 41, 42, 43, 44, 43, 43, 41, 42, 41, 42, + 42, 43, 42, 41, 40, 40, 39, 38, 38, 41, 37, 36, 34, 34, 34, 35, + 40, 48, 69, 59, 64, 77, 85, 109, 119, 152, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 63, + 65, 62, 61, 61, 54, 49, 45, 43, 44, 41, 40, 39, 38, 38, 37, 38, + 39, 45, 44, 43, 41, 42, 42, 43, 43, 42, 41, 41, 40, 40, 39, 39, + 39, 37, 37, 38, 39, 40, 42, 45, 49, 56, 73, 60, 67, 91, 110, 146, + 166, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 196, 77, 75, 72, 64, 59, 55, 52, + 53, 48, 45, 43, 41, 41, 40, 40, 41, 42, 41, 39, 39, 40, 41, 41, + 42, 41, 39, 39, 39, 40, 40, 41, 41, 38, 39, 43, 45, 48, 50, 53, + 57, 59, 83, 80, 96, 121, 137, 194, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 84, 80, 71, 66, 61, 59, 58, 54, 52, 50, 46, 45, 42, 43, + 42, 39, 38, 35, 34, 34, 37, 38, 39, 38, 38, 39, 39, 41, 41, 42, + 43, 41, 43, 46, 49, 51, 53, 54, 57, 86, 115, 118, 138, 163, 199, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 76, 72, 67, 64, + 59, 59, 54, 52, 47, 44, 41, 41, 40, 40, 38, 35, 33, 33, 34, 38, + 38, 37, 37, 37, 39, 42, 43, 45, 47, 42, 44, 47, 52, 56, 61, 63, + 68, 87, 113, 112, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 198, 77, 73, 67, 63, 59, 54, 50, 48, 45, + 44, 46, 43, 40, 36, 36, 37, 41, 40, 36, 34, 37, 39, 42, 44, 48, + 49, 49, 51, 58, 66, 74, 83, 91, 98, 122, 147, 186, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 199, 77, 71, 67, 61, 57, 54, 51, 51, 50, 47, 42, 38, 37, 38, 39, + 40, 33, 34, 37, 39, 43, 45, 49, 52, 54, 58, 66, 76, 90, 103, 116, + 125, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 75, 70, 64, 59, 55, 53, + 51, 53, 48, 45, 40, 38, 39, 41, 41, 38, 39, 41, 43, 48, 51, 54, + 57, 57, 60, 68, 80, 95, 111, 168, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 196, 77, 73, 69, 64, 62, 59, 58, 56, 50, 48, 51, 51, + 51, 53, 55, 50, 46, 51, 63, 75, 79, 88, 90, 152, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 71, + 72, 72, 71, 67, 61, 61, 64, 64, 62, 64, 66, 70, 76, 81, 88, 96, + 102, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 70, 75, 81, 81, + 76, 73, 75, 82, 95, 102, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 130, 128, 139, 141, 127, 141, 134, 150, 164, 137, 139, 169, + 150, 152, 169, 174, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 112, 116, 138, 124, 131, 138, + 140, 151, 144, 141, 145, 128, 129, 155, 145, 157, 171, 174, 162, 194, 190, 186, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 150, 89, 105, + 74, 79, 98, 93, 127, 123, 131, 128, 124, 98, 95, 85, 86, 76, 75, 94, + 88, 93, 108, 119, 122, 173, 183, 182, 175, 206, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 205, 93, 83, 62, 50, 55, 59, 59, 74, 78, 93, 87, 113, 92, + 63, 45, 40, 49, 57, 51, 51, 57, 59, 68, 51, 85, 87, 108, 152, 148, + 159, 162, 183, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 199, 54, 42, 40, 40, 32, 35, 44, + 45, 44, 50, 55, 66, 66, 81, 65, 39, 41, 38, 48, 57, 50, 46, 48, + 46, 47, 32, 53, 47, 65, 99, 99, 127, 161, 189, 179, 212, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 81, + 78, 40, 36, 40, 40, 37, 47, 56, 51, 50, 44, 54, 55, 60, 58, 55, + 35, 45, 44, 56, 66, 61, 58, 59, 55, 60, 53, 63, 52, 70, 90, 95, + 142, 149, 183, 177, 190, 177, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 230, 171, 151, 104, 63, 42, 38, 45, 50, 56, 49, 37, 43, 51, + 45, 46, 35, 50, 45, 49, 33, 43, 32, 42, 38, 46, 51, 45, 45, 47, + 42, 36, 40, 43, 33, 44, 45, 45, 98, 127, 166, 166, 184, 177, 184, 189, + 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 229, 159, 145, 139, 112, 66, 36, 42, + 46, 41, 51, 59, 46, 26, 27, 37, 33, 39, 29, 49, 40, 40, 21, 36, + 34, 46, 37, 37, 33, 24, 26, 30, 24, 35, 47, 46, 38, 40, 22, 12, + 51, 61, 105, 113, 142, 149, 163, 167, 169, 178, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 168, + 180, 173, 142, 131, 96, 52, 24, 41, 42, 50, 55, 62, 49, 26, 22, 30, + 32, 31, 27, 41, 41, 36, 29, 39, 38, 41, 34, 31, 27, 20, 27, 34, + 26, 26, 38, 40, 41, 42, 26, 17, 32, 59, 100, 110, 144, 159, 175, 170, + 164, 159, 181, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 224, 181, 169, 170, 169, 119, 81, 81, 64, 49, 39, 64, + 57, 44, 38, 41, 37, 21, 16, 24, 29, 24, 23, 28, 39, 34, 45, 44, + 35, 34, 31, 31, 30, 25, 32, 35, 23, 28, 35, 36, 44, 51, 51, 54, + 52, 53, 84, 83, 115, 138, 166, 165, 157, 163, 184, 175, 209, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 183, 206, 185, 163, + 143, 89, 44, 47, 40, 41, 35, 56, 37, 30, 17, 18, 26, 22, 23, 34, + 41, 40, 40, 36, 57, 54, 79, 67, 52, 60, 57, 60, 58, 49, 49, 43, + 25, 21, 19, 16, 25, 33, 46, 58, 43, 38, 60, 49, 81, 117, 165, 179, + 177, 159, 176, 161, 163, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 158, 152, 164, 152, 140, 136, 101, 55, 48, 38, 36, 36, 36, 30, + 24, 14, 24, 34, 39, 43, 50, 59, 66, 66, 86, 93, 108, 110, 105, 107, + 92, 107, 91, 100, 78, 93, 87, 77, 65, 62, 42, 46, 36, 38, 52, 46, + 63, 56, 55, 56, 62, 82, 111, 132, 139, 171, 186, 180, 173, 182, 178, 196, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 157, 160, 164, 174, 158, 142, 131, + 92, 52, 47, 42, 39, 35, 28, 20, 13, 10, 20, 28, 32, 36, 45, 54, + 60, 65, 83, 89, 104, 106, 99, 102, 89, 94, 88, 92, 83, 76, 80, 59, + 56, 47, 41, 50, 36, 36, 53, 46, 52, 61, 57, 50, 53, 73, 109, 141, + 158, 166, 185, 179, 169, 180, 181, 170, 200, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, + 178, 180, 183, 166, 146, 113, 90, 82, 48, 35, 38, 40, 42, 38, 33, 26, + 21, 40, 49, 56, 59, 65, 76, 85, 88, 85, 103, 107, 119, 121, 115, 118, + 105, 104, 109, 108, 112, 92, 107, 81, 87, 65, 68, 71, 46, 39, 54, 52, + 48, 64, 64, 61, 56, 58, 69, 80, 86, 130, 159, 163, 158, 180, 193, 189, + 189, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 227, 199, 186, 180, 185, 151, 109, 71, 53, 54, + 32, 29, 35, 41, 43, 42, 39, 37, 37, 55, 63, 68, 71, 79, 92, 101, + 101, 94, 110, 111, 121, 123, 117, 121, 109, 112, 112, 113, 111, 98, 110, 91, + 95, 92, 92, 83, 57, 44, 50, 55, 57, 39, 47, 53, 53, 50, 47, 45, + 43, 73, 112, 123, 123, 152, 173, 169, 166, 178, 184, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 176, 194, + 175, 176, 185, 149, 104, 68, 49, 46, 30, 38, 41, 44, 43, 39, 39, 42, + 45, 55, 63, 68, 70, 80, 97, 104, 100, 101, 114, 113, 121, 121, 116, 121, + 111, 120, 107, 113, 91, 98, 96, 90, 86, 93, 89, 76, 65, 51, 41, 47, + 54, 51, 52, 51, 49, 47, 49, 54, 60, 75, 114, 128, 130, 158, 177, 171, + 166, 178, 160, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 160, 167, 187, 166, 162, 167, 123, 81, 57, 41, 43, + 38, 37, 38, 39, 39, 41, 45, 54, 62, 66, 75, 79, 83, 95, 114, 118, + 110, 108, 121, 118, 122, 121, 116, 124, 114, 124, 108, 117, 93, 111, 109, 112, + 109, 96, 96, 84, 84, 68, 43, 41, 40, 65, 63, 59, 57, 53, 49, 51, + 56, 45, 80, 93, 102, 138, 163, 167, 174, 172, 163, 153, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 141, 145, 161, + 134, 100, 103, 64, 42, 43, 39, 49, 57, 37, 37, 37, 40, 46, 57, 69, + 77, 72, 82, 87, 90, 104, 125, 127, 115, 109, 119, 114, 117, 116, 111, 119, + 110, 113, 107, 114, 103, 108, 118, 118, 124, 106, 116, 104, 105, 92, 70, 67, + 52, 42, 45, 51, 61, 64, 58, 51, 50, 43, 65, 68, 77, 116, 147, 166, + 188, 194, 192, 200, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 190, 191, 170, 157, 149, 105, 62, 72, 45, 40, 49, 34, 28, + 30, 48, 46, 43, 45, 51, 61, 71, 77, 80, 90, 98, 101, 117, 137, 138, + 124, 125, 136, 128, 131, 129, 125, 133, 124, 122, 126, 125, 124, 105, 123, 111, + 124, 104, 125, 112, 111, 108, 103, 108, 84, 50, 49, 52, 59, 61, 52, 44, + 40, 60, 67, 53, 49, 78, 104, 126, 156, 160, 166, 199, 160, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 194, 185, 162, 170, 169, + 102, 70, 68, 50, 39, 53, 36, 51, 23, 35, 45, 45, 45, 57, 65, 70, + 78, 73, 81, 103, 102, 110, 128, 126, 131, 126, 126, 123, 123, 123, 124, 125, + 127, 129, 127, 125, 123, 122, 123, 124, 124, 112, 112, 112, 112, 114, 110, 94, + 78, 42, 43, 47, 46, 44, 52, 56, 45, 62, 65, 54, 56, 80, 97, 121, + 163, 161, 165, 195, 153, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 172, 180, 167, 138, 141, 138, 95, 38, 39, 32, 43, 49, 31, 44, + 35, 40, 52, 55, 55, 68, 75, 77, 83, 82, 87, 105, 104, 112, 130, 124, + 127, 126, 126, 126, 126, 126, 126, 127, 128, 129, 128, 125, 124, 124, 123, 123, + 125, 126, 123, 118, 117, 120, 124, 120, 113, 80, 74, 68, 57, 45, 53, 63, + 59, 55, 60, 51, 47, 56, 58, 75, 110, 107, 132, 180, 150, 157, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 153, 158, 125, 77, 63, 49, + 26, 22, 27, 25, 51, 41, 23, 24, 33, 40, 53, 58, 59, 72, 78, 79, + 83, 87, 89, 105, 103, 113, 132, 125, 125, 126, 126, 128, 128, 128, 128, 128, + 127, 129, 128, 126, 126, 124, 124, 125, 125, 130, 130, 126, 122, 126, 134, 137, + 137, 111, 100, 87, 65, 44, 47, 63, 67, 58, 63, 59, 53, 50, 42, 50, + 78, 77, 118, 176, 164, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 172, 172, 173, 123, 71, 62, 49, 38, 28, 35, 31, 52, 31, 25, 17, + 30, 41, 55, 57, 61, 73, 79, 81, 85, 87, 88, 103, 102, 113, 132, 126, + 125, 124, 125, 128, 129, 129, 129, 127, 127, 131, 130, 128, 127, 127, 126, 126, + 126, 120, 126, 128, 128, 128, 131, 132, 130, 114, 106, 94, 72, 43, 40, 52, + 57, 58, 58, 58, 59, 56, 50, 58, 76, 78, 114, 168, 180, 175, 201, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 238, 172, 178, 155, 83, 34, 38, 41, + 30, 33, 39, 35, 40, 24, 40, 29, 37, 52, 64, 65, 66, 78, 85, 88, + 94, 92, 93, 106, 103, 115, 133, 125, 124, 122, 125, 125, 127, 129, 128, 127, + 126, 130, 130, 130, 129, 129, 128, 127, 126, 115, 123, 129, 129, 127, 128, 129, + 126, 114, 108, 107, 92, 64, 49, 48, 46, 46, 36, 35, 42, 44, 47, 57, + 66, 68, 85, 124, 165, 167, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 186, 184, 190, 128, 49, 7, 16, 41, 26, 39, 38, 39, 29, 23, 41, 33, + 36, 57, 68, 69, 69, 80, 87, 90, 95, 102, 103, 114, 109, 116, 131, 124, + 124, 124, 125, 125, 127, 127, 128, 128, 128, 130, 131, 131, 132, 130, 130, 129, + 128, 125, 130, 130, 129, 129, 134, 138, 137, 124, 119, 123, 120, 97, 75, 61, + 49, 47, 27, 23, 31, 32, 39, 50, 53, 53, 57, 75, 124, 129, 166, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 145, 166, 155, 163, 79, 26, 4, 8, 52, + 35, 40, 28, 43, 28, 30, 31, 26, 33, 54, 67, 69, 70, 80, 86, 85, + 89, 104, 106, 120, 111, 115, 130, 124, 125, 125, 125, 126, 127, 126, 129, 129, + 131, 130, 132, 133, 133, 133, 131, 129, 128, 130, 133, 132, 129, 132, 137, 140, + 138, 127, 119, 123, 129, 115, 94, 76, 61, 53, 31, 30, 35, 28, 35, 51, + 51, 51, 59, 57, 93, 89, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 144, + 164, 160, 165, 69, 37, 21, 3, 46, 23, 32, 11, 41, 31, 40, 25, 22, + 42, 54, 67, 71, 72, 83, 86, 83, 86, 98, 103, 117, 110, 111, 128, 123, + 128, 127, 127, 127, 126, 128, 130, 132, 134, 132, 132, 133, 134, 134, 133, 131, + 130, 129, 132, 131, 131, 133, 135, 132, 126, 121, 108, 112, 121, 115, 101, 84, + 68, 52, 31, 32, 38, 26, 32, 50, 53, 54, 74, 62, 84, 72, 150, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 188, 163, 176, 118, 136, 27, 37, 32, 35, 30, + 39, 36, 26, 50, 39, 44, 23, 25, 37, 67, 77, 85, 91, 90, 88, 85, + 83, 101, 101, 104, 110, 109, 110, 119, 132, 127, 127, 126, 127, 129, 132, 133, + 135, 129, 134, 137, 138, 135, 134, 133, 136, 128, 134, 135, 130, 127, 129, 132, + 131, 129, 128, 127, 121, 112, 104, 100, 100, 80, 53, 53, 52, 32, 23, 40, + 45, 44, 67, 65, 68, 67, 129, 232, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 157, + 163, 113, 115, 27, 22, 29, 36, 33, 46, 57, 34, 44, 32, 46, 35, 31, + 36, 62, 75, 84, 89, 91, 96, 98, 94, 101, 101, 107, 116, 117, 115, 118, + 126, 123, 123, 123, 124, 127, 129, 131, 133, 134, 134, 133, 131, 130, 133, 139, + 144, 135, 139, 138, 133, 129, 130, 131, 129, 128, 127, 128, 124, 118, 114, 113, + 114, 99, 76, 72, 65, 38, 25, 38, 47, 37, 62, 60, 56, 58, 122, 167, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 231, 188, 167, 160, 100, 91, 39, 18, 35, 39, 29, + 44, 55, 35, 44, 33, 40, 34, 29, 35, 60, 74, 82, 82, 85, 97, 101, + 95, 102, 100, 104, 111, 114, 116, 119, 124, 125, 126, 126, 127, 129, 132, 134, + 135, 137, 136, 134, 132, 131, 134, 138, 143, 138, 141, 141, 134, 131, 133, 132, + 131, 129, 128, 126, 121, 114, 109, 107, 110, 106, 89, 80, 71, 39, 26, 31, + 41, 38, 57, 57, 50, 52, 106, 128, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 161, 135, + 114, 62, 53, 50, 22, 46, 42, 26, 41, 33, 36, 57, 47, 35, 26, 27, + 45, 71, 84, 89, 80, 79, 91, 94, 88, 101, 97, 93, 95, 103, 112, 120, + 126, 127, 126, 128, 129, 131, 134, 135, 138, 135, 137, 139, 140, 139, 138, 136, + 134, 135, 138, 137, 134, 132, 137, 137, 135, 132, 131, 127, 121, 114, 109, 108, + 110, 108, 98, 84, 83, 56, 44, 34, 42, 48, 55, 59, 57, 56, 84, 110, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 168, 163, 116, 78, 21, 19, 48, 20, 44, 39, 29, + 49, 28, 40, 61, 55, 35, 37, 41, 67, 89, 99, 98, 87, 83, 89, 92, + 86, 92, 91, 91, 94, 102, 113, 120, 123, 123, 123, 125, 126, 127, 129, 132, + 134, 134, 136, 138, 141, 141, 141, 139, 138, 135, 136, 136, 133, 132, 136, 137, + 133, 132, 132, 131, 127, 124, 123, 124, 126, 118, 113, 94, 104, 85, 78, 49, + 48, 50, 45, 59, 67, 63, 64, 96, 165, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 180, 161, 94, + 53, 25, 23, 48, 22, 35, 31, 32, 52, 41, 40, 44, 43, 36, 58, 59, + 82, 93, 96, 95, 89, 84, 86, 89, 89, 84, 92, 101, 108, 115, 121, 122, + 120, 125, 125, 125, 128, 129, 131, 134, 135, 138, 136, 134, 134, 139, 143, 148, + 150, 138, 139, 136, 131, 132, 134, 132, 129, 129, 131, 129, 126, 122, 118, 118, + 119, 118, 120, 96, 112, 97, 91, 48, 43, 44, 34, 56, 67, 65, 53, 88, + 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 183, 190, 163, 90, 62, 37, 34, 42, 27, 29, 27, 33, + 45, 47, 40, 35, 41, 40, 74, 72, 89, 91, 88, 89, 90, 87, 84, 88, + 96, 86, 100, 113, 120, 122, 125, 124, 121, 128, 128, 128, 130, 132, 134, 136, + 138, 141, 138, 134, 135, 140, 144, 148, 149, 139, 139, 135, 131, 133, 135, 133, + 129, 131, 133, 131, 127, 121, 115, 111, 110, 112, 122, 95, 112, 95, 92, 41, + 40, 42, 35, 58, 59, 64, 55, 85, 99, 160, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 157, 161, 127, 57, + 43, 24, 25, 24, 24, 26, 28, 36, 39, 45, 44, 44, 53, 49, 83, 79, + 97, 93, 86, 87, 96, 94, 89, 94, 106, 93, 107, 118, 120, 120, 124, 127, + 126, 125, 126, 126, 127, 129, 132, 135, 135, 143, 140, 140, 143, 145, 145, 141, + 137, 136, 136, 134, 132, 134, 140, 138, 135, 135, 137, 139, 138, 133, 129, 127, + 127, 115, 131, 103, 119, 99, 97, 46, 50, 44, 43, 62, 52, 61, 59, 84, + 79, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 136, 137, 146, 94, 31, 26, 26, 24, 23, 24, 27, 34, 37, + 38, 40, 24, 21, 40, 61, 72, 79, 87, 86, 85, 84, 84, 91, 99, 101, + 98, 109, 111, 119, 127, 126, 123, 126, 134, 134, 130, 132, 136, 135, 131, 133, + 140, 138, 139, 139, 140, 141, 142, 143, 143, 141, 138, 138, 143, 141, 134, 130, + 133, 134, 134, 133, 129, 126, 126, 128, 131, 123, 138, 113, 136, 115, 105, 45, + 46, 49, 48, 46, 70, 58, 71, 61, 58, 106, 148, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 133, 136, 144, 89, 42, + 34, 32, 29, 25, 25, 27, 32, 36, 38, 33, 20, 19, 38, 58, 67, 73, + 79, 78, 81, 84, 86, 90, 99, 104, 101, 104, 112, 123, 127, 126, 125, 129, + 134, 138, 134, 132, 134, 132, 130, 133, 140, 134, 134, 135, 135, 136, 137, 139, + 140, 144, 141, 141, 144, 143, 136, 134, 137, 137, 137, 135, 130, 124, 123, 126, + 130, 126, 128, 116, 115, 115, 86, 45, 35, 40, 42, 45, 66, 55, 67, 61, + 59, 108, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 231, 137, 139, 141, 78, 47, 34, 35, 33, 29, 27, 28, 32, 35, + 37, 29, 22, 27, 47, 67, 77, 82, 87, 90, 95, 99, 97, 97, 101, 105, + 104, 104, 118, 131, 131, 127, 132, 134, 132, 139, 136, 135, 135, 134, 134, 138, + 144, 135, 135, 134, 134, 136, 137, 139, 141, 150, 147, 146, 147, 146, 141, 139, + 140, 134, 135, 134, 128, 120, 118, 123, 129, 139, 131, 138, 119, 137, 88, 63, + 37, 32, 38, 46, 61, 50, 62, 64, 63, 101, 97, 157, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 132, 133, 130, 64, 49, + 34, 33, 33, 33, 33, 33, 34, 35, 36, 38, 34, 42, 59, 74, 81, 83, + 85, 90, 98, 104, 102, 98, 101, 106, 109, 108, 123, 131, 128, 131, 141, 138, + 128, 138, 138, 138, 139, 138, 138, 141, 144, 140, 141, 139, 139, 140, 142, 145, + 147, 149, 149, 150, 150, 149, 144, 141, 140, 148, 151, 150, 144, 135, 133, 138, + 144, 125, 118, 134, 117, 135, 86, 59, 24, 30, 39, 50, 55, 46, 59, 71, + 71, 90, 87, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 173, 116, 116, 115, 56, 50, 41, 27, 32, 36, 38, 36, 35, 35, + 34, 46, 45, 52, 62, 69, 70, 69, 68, 78, 89, 97, 95, 92, 98, 106, + 112, 114, 123, 127, 127, 136, 151, 149, 134, 142, 145, 147, 145, 143, 142, 141, + 142, 145, 146, 145, 145, 145, 146, 148, 149, 142, 147, 151, 152, 152, 148, 144, + 139, 130, 133, 131, 126, 117, 113, 115, 118, 113, 109, 115, 117, 116, 92, 60, + 28, 33, 43, 55, 47, 42, 56, 79, 79, 88, 82, 73, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 169, 117, 104, 100, 52, 44, + 45, 26, 31, 37, 40, 37, 35, 34, 33, 39, 43, 50, 59, 67, 70, 72, + 73, 93, 100, 104, 99, 94, 97, 104, 109, 119, 122, 124, 127, 139, 154, 155, + 145, 149, 153, 155, 152, 149, 149, 148, 147, 146, 147, 147, 146, 147, 146, 145, + 145, 145, 151, 153, 152, 150, 147, 141, 135, 135, 135, 134, 130, 124, 119, 116, + 117, 119, 112, 105, 118, 103, 105, 75, 47, 37, 45, 59, 42, 41, 55, 82, + 79, 91, 86, 68, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 148, 171, 126, 94, 84, 47, 33, 46, 30, 34, 38, 38, 33, 31, 32, + 34, 30, 37, 46, 57, 66, 76, 83, 86, 100, 104, 103, 95, 90, 93, 98, + 101, 114, 114, 114, 115, 120, 127, 133, 136, 135, 139, 140, 136, 137, 143, 148, + 149, 144, 146, 147, 147, 145, 143, 141, 140, 147, 149, 145, 135, 126, 121, 113, + 105, 94, 93, 95, 96, 98, 98, 93, 90, 102, 93, 91, 105, 91, 96, 71, + 38, 34, 45, 61, 38, 42, 53, 81, 70, 92, 91, 68, 83, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 159, 121, 79, 69, 43, 26, + 49, 35, 38, 38, 35, 29, 28, 30, 34, 35, 41, 48, 54, 60, 69, 78, + 82, 74, 78, 79, 75, 74, 82, 90, 95, 100, 99, 97, 95, 90, 88, 98, + 108, 105, 110, 110, 109, 114, 128, 140, 143, 145, 147, 148, 149, 147, 144, 139, + 138, 142, 140, 128, 109, 93, 84, 73, 64, 52, 53, 58, 66, 75, 78, 76, + 72, 90, 81, 93, 104, 98, 94, 69, 27, 31, 43, 62, 36, 42, 52, 77, + 63, 89, 92, 67, 77, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 216, 138, 158, 129, 75, 69, 31, 38, 44, 38, 39, 38, 32, 25, 26, 33, + 40, 43, 45, 60, 42, 72, 69, 70, 85, 72, 79, 89, 68, 73, 98, 83, + 94, 98, 104, 93, 99, 98, 99, 91, 102, 127, 104, 106, 121, 114, 126, 144, + 149, 152, 148, 148, 158, 139, 146, 129, 150, 132, 148, 125, 96, 89, 88, 81, + 63, 60, 48, 66, 60, 75, 87, 59, 79, 76, 98, 81, 92, 106, 91, 73, + 33, 31, 44, 67, 44, 44, 48, 77, 70, 88, 84, 81, 68, 98, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 115, 113, 131, 100, 55, 58, 32, 43, + 53, 37, 37, 33, 30, 26, 27, 28, 30, 42, 38, 56, 58, 76, 73, 60, + 65, 83, 82, 69, 77, 102, 128, 151, 163, 172, 183, 153, 124, 72, 79, 87, + 116, 97, 90, 105, 105, 105, 110, 122, 106, 126, 111, 129, 115, 141, 138, 125, + 108, 130, 106, 106, 116, 112, 131, 148, 121, 88, 57, 58, 76, 95, 90, 69, + 87, 83, 102, 100, 91, 78, 75, 78, 66, 42, 43, 54, 45, 43, 49, 71, + 73, 98, 91, 84, 64, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, + 124, 123, 134, 92, 50, 55, 35, 43, 52, 35, 33, 30, 29, 27, 26, 24, + 22, 35, 31, 55, 72, 59, 58, 50, 64, 85, 106, 111, 140, 140, 99, 94, + 71, 65, 84, 57, 61, 29, 91, 95, 102, 105, 112, 125, 89, 94, 100, 117, + 86, 94, 78, 99, 89, 107, 101, 106, 115, 102, 126, 159, 170, 162, 154, 132, + 99, 56, 58, 73, 118, 136, 117, 110, 109, 88, 79, 98, 113, 125, 133, 92, + 38, 58, 41, 36, 49, 42, 51, 64, 77, 101, 95, 92, 70, 74, 130, 255, + 255, 255, 255, 255, 255, 255, 255, 167, 144, 147, 151, 98, 61, 61, 43, 40, + 47, 30, 32, 32, 31, 27, 24, 22, 22, 34, 35, 62, 79, 33, 38, 50, + 88, 125, 122, 105, 76, 43, 11, 38, 43, 143, 196, 186, 182, 95, 158, 153, + 148, 135, 150, 157, 85, 86, 84, 98, 54, 15, 12, 29, 47, 12, 13, 46, + 134, 147, 146, 61, 7, 97, 183, 184, 195, 116, 150, 151, 168, 155, 143, 182, + 179, 160, 76, 44, 44, 89, 154, 127, 70, 69, 39, 23, 53, 45, 55, 60, + 81, 94, 91, 97, 85, 87, 69, 255, 255, 255, 255, 255, 255, 255, 255, 154, + 140, 145, 147, 91, 64, 66, 53, 42, 48, 27, 34, 37, 32, 23, 19, 25, + 32, 50, 45, 64, 73, 25, 32, 50, 93, 131, 117, 127, 71, 42, 36, 56, + 62, 140, 200, 195, 190, 88, 167, 163, 140, 120, 150, 166, 99, 103, 94, 100, + 57, 8, 14, 35, 51, 12, 18, 55, 144, 138, 135, 54, 1, 108, 198, 178, + 184, 135, 170, 171, 187, 156, 132, 182, 183, 138, 79, 72, 69, 91, 137, 114, + 70, 70, 36, 19, 55, 51, 60, 61, 80, 89, 86, 95, 88, 95, 75, 255, + 255, 255, 255, 255, 255, 255, 216, 140, 134, 136, 138, 80, 63, 64, 56, 42, + 49, 33, 39, 39, 31, 18, 16, 27, 40, 59, 43, 48, 47, 27, 32, 34, + 58, 89, 57, 74, 17, 13, 32, 55, 51, 181, 227, 222, 219, 123, 205, 182, + 118, 143, 164, 160, 94, 80, 55, 50, 27, 22, 23, 52, 28, 35, 30, 36, + 40, 51, 49, 59, 61, 125, 199, 206, 215, 136, 138, 151, 203, 174, 120, 145, + 147, 108, 87, 82, 63, 54, 77, 82, 68, 57, 31, 25, 52, 57, 63, 66, + 74, 91, 85, 88, 78, 89, 75, 255, 255, 255, 255, 255, 255, 255, 141, 138, + 130, 132, 133, 72, 60, 58, 54, 37, 47, 45, 45, 37, 25, 14, 15, 27, + 40, 51, 36, 35, 18, 27, 24, 17, 29, 33, 8, 31, 10, 25, 32, 70, + 53, 157, 218, 244, 234, 114, 173, 156, 86, 81, 96, 88, 57, 50, 39, 48, + 63, 104, 106, 127, 95, 108, 104, 74, 32, 34, 8, 18, 33, 109, 198, 203, + 208, 158, 125, 121, 159, 122, 66, 83, 90, 59, 65, 50, 36, 31, 35, 46, + 32, 37, 24, 35, 47, 61, 63, 72, 65, 86, 84, 86, 70, 82, 73, 146, + 255, 255, 255, 255, 255, 221, 142, 132, 121, 123, 124, 60, 53, 51, 51, 36, + 51, 55, 49, 36, 22, 12, 16, 28, 39, 43, 37, 38, 5, 24, 16, 14, + 30, 32, 13, 25, 20, 28, 10, 80, 66, 176, 213, 230, 222, 124, 188, 166, + 74, 82, 94, 85, 75, 60, 35, 29, 56, 102, 115, 120, 118, 97, 105, 60, + 43, 22, 46, 46, 25, 111, 196, 190, 222, 146, 125, 140, 166, 125, 80, 86, + 83, 44, 66, 45, 42, 45, 40, 53, 38, 24, 19, 41, 43, 63, 63, 76, + 59, 75, 82, 88, 72, 83, 75, 90, 255, 255, 255, 255, 255, 158, 182, 145, + 145, 153, 130, 70, 42, 57, 39, 22, 51, 51, 43, 36, 32, 32, 31, 26, + 20, 20, 10, 11, 28, 41, 39, 34, 35, 45, 38, 44, 23, 22, 18, 40, + 36, 132, 182, 188, 190, 90, 111, 70, 35, 29, 18, 30, 43, 44, 30, 30, + 73, 133, 144, 126, 134, 136, 141, 74, 24, 16, 36, 26, 53, 47, 100, 106, + 124, 117, 74, 65, 67, 40, 34, 50, 49, 31, 25, 38, 39, 22, 24, 31, + 16, 34, 26, 38, 52, 51, 52, 63, 68, 77, 72, 72, 96, 68, 74, 88, + 255, 255, 255, 255, 255, 162, 190, 156, 149, 138, 116, 63, 31, 37, 33, 19, + 29, 40, 35, 29, 28, 30, 30, 25, 21, 16, 13, 19, 36, 42, 32, 25, + 25, 30, 16, 24, 14, 20, 18, 35, 28, 49, 69, 87, 87, 34, 45, 43, + 30, 34, 24, 29, 25, 24, 19, 17, 50, 110, 119, 118, 138, 138, 143, 81, + 17, 21, 26, 11, 38, 21, 45, 43, 67, 47, 26, 39, 54, 39, 36, 46, + 38, 36, 17, 13, 16, 26, 61, 82, 66, 47, 29, 30, 42, 45, 48, 57, + 56, 68, 66, 82, 108, 73, 73, 90, 255, 255, 255, 255, 224, 136, 156, 116, + 94, 98, 77, 42, 19, 25, 41, 41, 34, 31, 28, 26, 27, 28, 27, 23, + 20, 20, 23, 33, 50, 56, 52, 52, 57, 30, 7, 12, 12, 25, 16, 26, + 19, 16, 16, 56, 61, 51, 28, 41, 30, 26, 22, 22, 8, 11, 20, 25, + 53, 110, 112, 129, 154, 145, 148, 95, 19, 32, 25, 14, 46, 26, 30, 27, + 59, 56, 42, 46, 43, 26, 33, 46, 39, 16, 18, 27, 22, 24, 64, 89, + 74, 63, 34, 24, 32, 37, 44, 48, 42, 53, 53, 84, 110, 70, 64, 83, + 255, 255, 255, 255, 175, 150, 173, 128, 95, 98, 65, 41, 27, 23, 35, 39, + 23, 29, 28, 28, 28, 26, 25, 20, 18, 22, 23, 30, 43, 54, 59, 66, + 75, 46, 16, 19, 19, 29, 14, 22, 17, 23, 20, 61, 66, 71, 35, 38, + 21, 24, 19, 22, 11, 13, 23, 35, 71, 109, 100, 127, 143, 123, 128, 99, + 23, 19, 16, 13, 42, 29, 30, 29, 59, 78, 71, 61, 38, 17, 29, 45, + 39, 8, 25, 41, 31, 28, 68, 90, 65, 73, 41, 26, 32, 36, 41, 42, + 35, 60, 54, 87, 108, 73, 66, 87, 255, 255, 255, 255, 169, 150, 168, 112, + 79, 88, 46, 33, 36, 26, 28, 33, 23, 23, 24, 25, 25, 23, 21, 20, + 20, 41, 39, 41, 51, 61, 66, 68, 70, 51, 25, 27, 22, 28, 13, 27, + 29, 27, 25, 39, 39, 41, 32, 34, 25, 32, 24, 28, 21, 17, 15, 29, + 77, 114, 100, 129, 132, 106, 118, 119, 56, 13, 19, 18, 30, 20, 25, 24, + 36, 37, 46, 48, 30, 20, 30, 36, 26, 31, 29, 25, 17, 38, 99, 120, + 83, 76, 48, 36, 42, 41, 42, 41, 34, 51, 39, 61, 76, 61, 59, 80, + 255, 255, 255, 255, 143, 129, 131, 61, 41, 57, 24, 20, 34, 29, 26, 32, + 30, 14, 18, 21, 21, 19, 19, 21, 24, 50, 51, 58, 68, 77, 79, 74, + 67, 42, 23, 26, 18, 22, 14, 34, 37, 25, 29, 27, 25, 26, 34, 32, + 28, 29, 19, 23, 20, 16, 13, 29, 80, 131, 114, 140, 130, 107, 120, 134, + 82, 15, 25, 23, 19, 13, 20, 18, 16, 23, 38, 39, 27, 24, 31, 29, + 19, 35, 31, 26, 17, 37, 97, 118, 81, 77, 54, 44, 49, 48, 46, 42, + 34, 34, 22, 33, 39, 51, 50, 68, 255, 255, 255, 255, 138, 134, 126, 56, + 60, 47, 32, 29, 33, 27, 22, 20, 16, 15, 19, 22, 21, 17, 17, 21, + 27, 36, 44, 55, 65, 71, 72, 70, 66, 40, 25, 29, 16, 19, 16, 36, + 33, 18, 21, 22, 20, 28, 24, 20, 19, 24, 17, 17, 9, 14, 27, 44, + 84, 120, 105, 130, 119, 110, 117, 127, 74, 12, 17, 16, 9, 11, 16, 13, + 7, 37, 47, 39, 25, 25, 31, 28, 23, 24, 27, 32, 28, 42, 90, 105, + 70, 83, 57, 46, 52, 51, 49, 42, 32, 36, 34, 35, 33, 65, 58, 69, + 255, 255, 255, 255, 118, 111, 87, 13, 33, 21, 26, 30, 30, 33, 38, 37, + 30, 22, 26, 27, 24, 18, 17, 21, 27, 48, 57, 66, 69, 68, 70, 74, + 77, 49, 35, 35, 17, 20, 17, 32, 21, 25, 16, 17, 9, 32, 15, 25, + 33, 31, 26, 19, 1, 12, 40, 53, 80, 105, 96, 125, 120, 129, 134, 136, + 82, 30, 27, 26, 23, 26, 25, 23, 18, 14, 26, 24, 20, 29, 33, 26, + 23, 29, 15, 12, 23, 60, 121, 131, 86, 87, 57, 43, 50, 52, 51, 43, + 29, 26, 33, 31, 22, 61, 48, 51, 255, 255, 255, 255, 154, 163, 90, 23, + 32, 23, 26, 31, 38, 41, 38, 35, 34, 30, 27, 25, 24, 19, 19, 25, + 34, 57, 60, 65, 71, 76, 79, 81, 82, 63, 56, 56, 23, 14, 29, 11, + 8, 20, 25, 29, 29, 28, 25, 21, 17, 19, 26, 15, 27, 27, 65, 72, + 80, 94, 89, 105, 110, 117, 122, 104, 103, 71, 76, 17, 12, 32, 24, 33, + 17, 20, 21, 30, 34, 26, 27, 32, 27, 13, 21, 43, 42, 103, 120, 138, + 76, 85, 54, 33, 34, 38, 45, 42, 27, 25, 26, 34, 44, 49, 53, 61, + 255, 255, 255, 255, 163, 166, 91, 29, 28, 25, 25, 30, 39, 40, 33, 30, + 30, 28, 26, 24, 24, 20, 18, 24, 31, 50, 53, 59, 65, 71, 75, 78, + 78, 83, 73, 68, 37, 23, 29, 15, 16, 14, 19, 24, 25, 21, 14, 11, + 10, 16, 32, 37, 56, 54, 75, 70, 69, 94, 90, 107, 112, 118, 122, 105, + 104, 104, 101, 33, 12, 14, 1, 11, 0, 13, 15, 24, 29, 20, 20, 22, + 16, 30, 48, 81, 85, 131, 129, 133, 65, 85, 51, 30, 36, 41, 45, 40, + 30, 23, 24, 30, 42, 49, 54, 62, 255, 255, 255, 255, 168, 160, 85, 40, + 33, 31, 27, 32, 44, 43, 30, 25, 29, 26, 25, 24, 23, 20, 17, 21, + 28, 48, 51, 58, 66, 73, 77, 80, 81, 81, 70, 66, 42, 24, 17, 6, + 12, 17, 17, 21, 26, 21, 10, 11, 17, 8, 21, 28, 45, 50, 73, 82, + 91, 94, 92, 109, 115, 119, 123, 107, 107, 103, 101, 47, 27, 20, 6, 18, + 12, 15, 14, 24, 28, 21, 22, 26, 22, 27, 48, 82, 91, 129, 127, 139, + 88, 89, 49, 27, 38, 47, 46, 43, 36, 25, 23, 27, 38, 47, 53, 59, + 255, 255, 255, 255, 140, 122, 50, 31, 30, 42, 34, 39, 51, 48, 33, 26, + 31, 24, 22, 23, 24, 20, 16, 19, 25, 49, 52, 58, 66, 73, 77, 80, + 81, 85, 80, 79, 71, 54, 36, 26, 32, 18, 13, 15, 20, 18, 13, 22, + 37, 34, 51, 72, 90, 89, 83, 73, 71, 94, 93, 110, 115, 120, 123, 107, + 110, 117, 119, 90, 73, 53, 26, 22, 11, 16, 14, 22, 25, 21, 30, 42, + 43, 83, 98, 117, 113, 125, 115, 127, 92, 92, 45, 22, 38, 47, 47, 48, + 48, 37, 33, 31, 34, 42, 49, 55, 255, 255, 255, 255, 157, 133, 55, 54, + 60, 48, 41, 44, 52, 48, 34, 27, 31, 24, 23, 22, 23, 19, 15, 17, + 24, 46, 48, 55, 62, 69, 73, 74, 74, 85, 87, 90, 96, 85, 59, 51, + 52, 63, 57, 54, 57, 60, 65, 81, 101, 106, 96, 88, 79, 75, 71, 86, + 100, 96, 94, 112, 114, 118, 122, 108, 111, 108, 118, 122, 130, 122, 106, 105, + 95, 62, 58, 62, 64, 64, 80, 102, 108, 122, 135, 144, 138, 129, 105, 108, + 78, 89, 42, 17, 30, 39, 42, 49, 54, 51, 46, 39, 35, 38, 45, 48, + 255, 255, 255, 255, 158, 134, 41, 39, 47, 49, 47, 46, 48, 43, 34, 28, + 28, 25, 24, 23, 23, 17, 14, 17, 25, 44, 48, 54, 61, 67, 71, 73, + 74, 77, 85, 87, 101, 97, 76, 74, 68, 56, 53, 49, 49, 54, 66, 80, + 91, 101, 89, 91, 85, 86, 68, 75, 82, 101, 99, 114, 113, 116, 120, 109, + 113, 114, 111, 121, 128, 116, 106, 103, 94, 56, 52, 55, 57, 58, 73, 96, + 102, 127, 131, 132, 131, 117, 97, 103, 86, 81, 40, 16, 21, 26, 32, 43, + 50, 57, 54, 46, 39, 37, 41, 44, 255, 255, 255, 255, 144, 135, 39, 36, + 49, 50, 52, 49, 42, 37, 35, 31, 25, 28, 25, 23, 22, 16, 14, 18, + 26, 42, 46, 52, 60, 67, 72, 74, 74, 86, 97, 93, 111, 116, 108, 118, + 110, 122, 127, 126, 122, 126, 137, 141, 135, 145, 112, 93, 69, 71, 55, 75, + 91, 107, 104, 116, 113, 115, 120, 112, 118, 114, 101, 114, 126, 126, 135, 142, + 140, 129, 126, 133, 136, 133, 140, 153, 154, 151, 148, 139, 141, 118, 95, 94, + 79, 75, 43, 23, 20, 19, 25, 36, 40, 48, 52, 50, 44, 40, 42, 43, + 255, 255, 255, 255, 93, 107, 22, 28, 52, 49, 56, 51, 38, 33, 36, 34, + 25, 30, 25, 23, 20, 17, 14, 20, 27, 34, 38, 46, 55, 63, 68, 72, + 73, 88, 100, 92, 109, 122, 125, 146, 138, 125, 136, 137, 132, 134, 143, 135, + 116, 120, 90, 81, 69, 78, 60, 80, 93, 110, 106, 118, 113, 114, 120, 113, + 121, 111, 87, 98, 108, 107, 121, 127, 125, 140, 141, 150, 154, 145, 145, 149, + 144, 133, 139, 142, 158, 135, 101, 82, 56, 75, 50, 34, 26, 19, 25, 33, + 33, 39, 48, 51, 47, 42, 43, 42, 255, 255, 255, 255, 99, 104, 27, 29, + 40, 45, 46, 45, 32, 21, 31, 38, 24, 27, 26, 23, 19, 16, 18, 23, + 27, 34, 29, 48, 61, 71, 75, 65, 74, 85, 95, 90, 101, 113, 124, 146, + 144, 134, 124, 130, 131, 124, 131, 123, 90, 91, 82, 78, 83, 78, 75, 88, + 107, 107, 100, 114, 107, 114, 112, 126, 116, 116, 121, 111, 113, 97, 109, 109, + 121, 123, 127, 134, 142, 145, 143, 140, 139, 140, 135, 136, 131, 103, 110, 80, + 68, 73, 54, 33, 28, 32, 36, 37, 37, 41, 40, 49, 49, 35, 31, 35, + 255, 255, 255, 255, 102, 113, 40, 34, 36, 41, 42, 41, 29, 19, 30, 38, + 25, 27, 25, 23, 19, 17, 19, 25, 27, 34, 28, 47, 60, 70, 74, 65, + 74, 85, 96, 91, 103, 115, 126, 147, 145, 133, 127, 132, 134, 128, 132, 123, + 94, 92, 78, 70, 78, 81, 80, 87, 100, 105, 100, 117, 115, 125, 123, 133, + 118, 121, 125, 113, 113, 94, 104, 102, 113, 127, 130, 134, 143, 147, 147, 142, + 140, 142, 134, 133, 128, 101, 108, 79, 70, 70, 53, 33, 28, 31, 34, 34, + 34, 38, 37, 47, 49, 37, 33, 35, 255, 255, 255, 255, 116, 128, 58, 40, + 31, 37, 37, 36, 26, 19, 32, 40, 28, 28, 26, 23, 19, 18, 20, 25, + 28, 32, 27, 46, 56, 66, 71, 64, 75, 80, 90, 86, 98, 110, 121, 141, + 140, 136, 134, 137, 133, 122, 116, 103, 77, 93, 74, 63, 72, 83, 84, 86, + 90, 96, 92, 116, 122, 138, 137, 142, 123, 121, 124, 111, 112, 94, 103, 101, + 113, 120, 119, 123, 130, 137, 140, 135, 128, 132, 124, 123, 118, 92, 98, 70, + 62, 64, 48, 32, 27, 30, 31, 30, 29, 36, 35, 44, 48, 39, 36, 36, + 255, 255, 255, 255, 121, 129, 65, 43, 30, 34, 33, 32, 23, 18, 33, 42, + 30, 29, 27, 23, 19, 18, 20, 24, 27, 31, 25, 43, 53, 61, 66, 61, + 74, 80, 90, 85, 96, 106, 115, 135, 132, 139, 140, 138, 132, 119, 107, 88, + 70, 71, 54, 42, 49, 58, 59, 57, 57, 77, 78, 107, 119, 143, 142, 145, + 123, 88, 91, 82, 89, 74, 85, 87, 102, 114, 112, 112, 119, 128, 135, 130, + 121, 125, 114, 115, 113, 85, 89, 58, 52, 57, 45, 30, 27, 29, 29, 25, + 25, 35, 34, 44, 50, 41, 38, 36, 255, 255, 255, 255, 121, 121, 65, 44, + 34, 34, 32, 31, 22, 20, 36, 43, 31, 29, 27, 25, 20, 18, 19, 23, + 27, 32, 26, 43, 51, 57, 62, 58, 73, 89, 97, 89, 95, 102, 111, 130, + 126, 135, 138, 135, 129, 123, 110, 92, 80, 82, 69, 59, 61, 64, 61, 58, + 57, 77, 78, 110, 125, 149, 147, 148, 124, 80, 83, 79, 92, 81, 94, 98, + 115, 110, 110, 108, 110, 122, 132, 131, 123, 120, 110, 112, 113, 84, 84, 52, + 46, 52, 40, 28, 27, 28, 28, 24, 25, 37, 37, 46, 50, 41, 38, 37, + 255, 255, 255, 255, 142, 131, 75, 51, 39, 37, 34, 31, 23, 21, 38, 45, + 33, 30, 28, 25, 20, 18, 19, 22, 27, 35, 29, 44, 49, 53, 58, 56, + 72, 91, 97, 85, 88, 94, 101, 119, 117, 127, 129, 118, 108, 108, 94, 73, + 68, 59, 51, 43, 41, 37, 31, 28, 25, 54, 55, 86, 96, 115, 109, 110, + 87, 39, 43, 41, 58, 50, 61, 63, 81, 93, 93, 90, 90, 100, 115, 119, + 114, 112, 99, 101, 103, 77, 76, 45, 41, 48, 38, 28, 26, 28, 27, 27, + 28, 43, 43, 50, 51, 37, 34, 37, 255, 255, 255, 255, 166, 149, 92, 60, + 43, 43, 39, 35, 25, 22, 39, 48, 34, 30, 29, 24, 20, 18, 19, 23, + 26, 38, 31, 45, 48, 51, 56, 55, 72, 89, 93, 78, 79, 84, 91, 110, + 110, 123, 122, 100, 87, 90, 74, 51, 50, 59, 51, 42, 38, 37, 30, 22, + 16, 14, 16, 43, 49, 63, 56, 58, 38, 26, 30, 29, 51, 42, 51, 52, + 69, 77, 79, 76, 72, 81, 100, 110, 109, 103, 87, 88, 91, 67, 69, 43, + 42, 46, 37, 27, 26, 29, 28, 30, 32, 48, 48, 55, 50, 33, 29, 37, + 255, 255, 255, 255, 165, 153, 101, 66, 44, 46, 41, 36, 26, 24, 41, 48, + 34, 31, 29, 24, 20, 18, 19, 23, 27, 39, 33, 45, 48, 50, 54, 53, + 72, 90, 93, 78, 77, 82, 90, 110, 111, 124, 120, 95, 84, 91, 80, 58, + 60, 60, 50, 40, 37, 37, 32, 21, 12, 22, 24, 51, 54, 65, 58, 64, + 46, 20, 24, 26, 48, 40, 48, 49, 66, 81, 84, 81, 75, 83, 104, 116, + 119, 102, 86, 83, 87, 64, 70, 48, 51, 47, 37, 27, 27, 29, 29, 32, + 35, 52, 54, 58, 50, 29, 25, 37, 255, 255, 255, 255, 150, 137, 100, 65, + 38, 40, 38, 31, 25, 29, 40, 45, 43, 33, 28, 23, 19, 18, 17, 17, + 16, 30, 29, 35, 47, 51, 49, 52, 60, 74, 75, 72, 66, 67, 80, 97, + 109, 115, 80, 61, 66, 62, 53, 48, 44, 44, 44, 44, 42, 38, 31, 24, + 18, 11, 25, 24, 41, 38, 42, 25, 33, 37, 29, 35, 52, 51, 40, 44, + 61, 60, 65, 65, 61, 66, 81, 96, 104, 89, 96, 71, 82, 68, 69, 58, + 43, 46, 35, 27, 27, 31, 33, 40, 49, 63, 64, 63, 50, 33, 38, 48, + 255, 255, 255, 255, 140, 117, 84, 58, 31, 33, 31, 27, 21, 23, 32, 38, + 37, 37, 31, 25, 20, 19, 20, 20, 21, 24, 23, 29, 42, 46, 44, 48, + 56, 56, 60, 61, 58, 61, 72, 84, 91, 90, 63, 48, 49, 43, 40, 39, + 34, 43, 41, 37, 35, 33, 34, 36, 37, 38, 44, 28, 30, 19, 28, 27, + 49, 40, 32, 36, 47, 48, 38, 38, 48, 55, 55, 48, 41, 44, 61, 78, + 87, 78, 87, 66, 77, 63, 63, 53, 40, 45, 37, 28, 29, 32, 34, 41, + 49, 64, 61, 58, 50, 37, 41, 121, 255, 255, 255, 255, 143, 103, 74, 62, + 33, 32, 33, 30, 25, 25, 31, 35, 37, 43, 36, 27, 21, 20, 22, 25, + 27, 22, 20, 26, 38, 42, 39, 43, 51, 42, 47, 51, 52, 58, 65, 68, + 68, 69, 53, 44, 38, 30, 32, 37, 29, 29, 31, 33, 34, 34, 34, 34, + 32, 30, 42, 33, 38, 24, 29, 28, 52, 42, 38, 39, 45, 49, 48, 46, + 47, 42, 44, 46, 44, 47, 51, 54, 54, 65, 79, 63, 73, 56, 56, 50, + 39, 45, 37, 30, 29, 32, 36, 42, 49, 66, 58, 52, 49, 43, 45, 255, + 255, 255, 255, 255, 146, 95, 69, 63, 34, 34, 34, 33, 29, 27, 29, 34, + 39, 45, 38, 28, 21, 20, 23, 27, 30, 22, 20, 26, 36, 39, 35, 37, + 46, 41, 45, 49, 52, 57, 62, 59, 54, 53, 50, 49, 39, 28, 34, 38, + 29, 35, 36, 38, 38, 35, 34, 34, 34, 26, 39, 36, 48, 36, 36, 27, + 47, 48, 45, 40, 36, 39, 43, 39, 33, 40, 42, 46, 48, 47, 45, 40, + 35, 61, 77, 64, 73, 53, 52, 47, 39, 41, 35, 29, 28, 32, 36, 42, + 46, 64, 52, 42, 44, 45, 47, 255, 255, 255, 255, 255, 130, 81, 59, 54, + 27, 30, 28, 28, 25, 22, 22, 27, 33, 43, 36, 26, 20, 19, 23, 26, + 28, 23, 21, 25, 33, 34, 28, 30, 37, 43, 46, 49, 49, 52, 54, 51, + 45, 36, 41, 49, 42, 31, 37, 43, 31, 41, 39, 35, 29, 26, 27, 33, + 39, 52, 53, 34, 41, 31, 35, 30, 53, 36, 40, 41, 40, 49, 63, 69, + 68, 52, 47, 38, 33, 29, 31, 36, 41, 60, 77, 63, 71, 50, 47, 43, + 37, 36, 33, 29, 27, 30, 35, 40, 42, 56, 46, 31, 33, 41, 41, 255, + 255, 255, 255, 102, 113, 78, 61, 52, 32, 31, 25, 23, 21, 19, 19, 23, + 30, 38, 33, 26, 21, 21, 22, 24, 24, 22, 19, 22, 30, 29, 23, 23, + 31, 40, 44, 46, 44, 43, 45, 43, 38, 29, 35, 47, 47, 38, 44, 50, + 43, 56, 64, 74, 79, 76, 71, 69, 69, 74, 72, 53, 65, 58, 62, 59, + 83, 68, 72, 69, 59, 51, 49, 49, 51, 50, 46, 41, 37, 31, 28, 33, + 43, 61, 75, 58, 65, 45, 44, 39, 32, 32, 31, 28, 26, 28, 35, 40, + 38, 46, 43, 24, 21, 33, 33, 255, 255, 255, 255, 85, 96, 78, 65, 49, + 37, 36, 27, 20, 20, 19, 19, 24, 30, 34, 31, 26, 24, 24, 24, 24, + 21, 20, 17, 20, 28, 29, 24, 25, 32, 34, 43, 47, 45, 42, 42, 41, + 39, 37, 37, 47, 48, 41, 44, 52, 49, 31, 45, 64, 75, 75, 68, 62, + 60, 46, 54, 47, 67, 61, 59, 52, 76, 52, 61, 70, 68, 56, 48, 51, + 61, 40, 42, 46, 46, 38, 30, 32, 42, 60, 72, 53, 59, 41, 41, 38, + 31, 30, 31, 30, 27, 30, 38, 40, 37, 45, 48, 27, 17, 32, 255, 255, + 255, 255, 255, 68, 78, 68, 55, 35, 27, 38, 25, 16, 17, 19, 19, 23, + 28, 32, 31, 28, 27, 27, 25, 23, 19, 21, 17, 21, 31, 32, 27, 29, + 37, 34, 44, 52, 51, 47, 45, 44, 44, 43, 38, 44, 46, 36, 36, 44, + 44, 51, 55, 60, 62, 62, 68, 77, 86, 110, 119, 112, 128, 116, 111, 108, + 137, 128, 133, 132, 114, 76, 38, 26, 30, 42, 41, 40, 36, 26, 22, 34, + 52, 62, 73, 50, 57, 41, 43, 39, 32, 29, 32, 31, 27, 31, 39, 41, + 38, 49, 56, 34, 21, 35, 255, 255, 255, 255, 209, 79, 77, 60, 45, 32, + 27, 31, 26, 20, 16, 17, 19, 21, 23, 30, 27, 25, 25, 26, 26, 21, + 17, 22, 15, 17, 28, 32, 27, 27, 33, 34, 41, 48, 50, 46, 41, 40, + 41, 31, 42, 47, 52, 47, 47, 38, 31, 31, 64, 77, 88, 94, 103, 119, + 115, 144, 146, 155, 166, 164, 151, 149, 157, 145, 141, 170, 129, 100, 62, 51, + 66, 73, 70, 69, 56, 34, 30, 41, 44, 57, 54, 48, 40, 39, 40, 37, + 30, 27, 33, 36, 30, 27, 33, 42, 48, 61, 67, 41, 23, 33, 255, 255, + 255, 255, 109, 79, 74, 58, 50, 30, 30, 31, 27, 22, 18, 18, 21, 23, + 24, 28, 27, 25, 27, 27, 27, 22, 19, 22, 17, 20, 31, 31, 25, 27, + 34, 35, 41, 48, 50, 46, 43, 43, 45, 54, 66, 76, 78, 73, 69, 60, + 51, 36, 54, 51, 51, 44, 38, 46, 38, 59, 56, 54, 58, 55, 50, 56, + 70, 65, 73, 111, 107, 105, 101, 103, 125, 98, 90, 86, 71, 49, 45, 51, + 51, 54, 51, 44, 37, 36, 38, 33, 28, 27, 32, 32, 27, 28, 36, 45, + 50, 67, 71, 44, 21, 26, 255, 255, 255, 255, 94, 81, 73, 58, 63, 33, + 40, 32, 28, 23, 19, 19, 21, 22, 23, 23, 24, 25, 28, 29, 28, 24, + 21, 22, 19, 23, 30, 28, 23, 25, 33, 34, 39, 45, 47, 45, 45, 46, + 48, 41, 53, 70, 72, 72, 62, 57, 48, 47, 55, 47, 49, 44, 34, 44, + 41, 68, 62, 58, 58, 55, 52, 62, 76, 76, 81, 97, 102, 91, 93, 81, + 94, 100, 89, 81, 70, 51, 47, 51, 48, 49, 46, 40, 33, 32, 34, 31, + 25, 28, 30, 29, 26, 30, 39, 47, 48, 56, 60, 40, 24, 104, 255, 255, + 255, 193, 62, 61, 53, 38, 52, 19, 30, 31, 28, 23, 19, 18, 20, 21, + 21, 19, 21, 24, 28, 29, 29, 25, 23, 22, 23, 27, 30, 26, 21, 24, + 33, 32, 36, 41, 43, 43, 45, 48, 50, 52, 66, 91, 92, 100, 90, 91, + 82, 67, 75, 72, 83, 83, 77, 95, 102, 93, 93, 95, 98, 94, 89, 90, + 96, 72, 79, 81, 99, 94, 110, 98, 106, 81, 67, 59, 55, 45, 44, 48, + 44, 46, 44, 38, 31, 31, 34, 31, 26, 28, 29, 28, 27, 33, 40, 43, + 39, 38, 43, 35, 28, 255, 255, 255, 255, 68, 55, 58, 53, 32, 46, 18, + 28, 29, 26, 22, 19, 18, 19, 20, 20, 17, 20, 24, 28, 29, 28, 25, + 24, 23, 25, 27, 29, 25, 21, 25, 32, 34, 36, 39, 41, 43, 48, 52, + 54, 36, 49, 79, 79, 96, 84, 91, 80, 84, 94, 93, 102, 97, 88, 107, + 117, 119, 124, 130, 134, 130, 123, 117, 119, 112, 115, 98, 110, 100, 109, 97, + 95, 72, 56, 50, 51, 47, 49, 53, 52, 46, 44, 38, 32, 33, 36, 34, + 29, 27, 28, 29, 29, 35, 39, 35, 28, 33, 37, 37, 33, 255, 255, 255, + 255, 72, 61, 60, 62, 33, 38, 24, 29, 27, 25, 22, 20, 20, 21, 22, + 21, 18, 22, 25, 28, 26, 25, 24, 24, 24, 26, 28, 29, 25, 25, 28, + 32, 37, 37, 38, 41, 45, 51, 56, 58, 42, 48, 77, 71, 96, 83, 92, + 80, 82, 95, 92, 95, 91, 87, 108, 114, 120, 124, 128, 128, 124, 119, 117, + 118, 111, 116, 100, 110, 110, 114, 116, 108, 71, 54, 48, 53, 50, 50, 56, + 55, 45, 43, 37, 32, 33, 37, 36, 30, 27, 30, 31, 31, 35, 37, 33, + 25, 35, 36, 39, 111, 255, 255, 255, 255, 48, 46, 37, 51, 18, 15, 20, + 17, 28, 26, 23, 22, 23, 24, 25, 25, 21, 24, 26, 27, 24, 22, 22, + 23, 27, 27, 27, 27, 27, 30, 32, 33, 37, 35, 35, 37, 42, 50, 55, + 58, 41, 40, 66, 56, 88, 75, 87, 71, 76, 85, 75, 76, 78, 87, 108, + 105, 112, 115, 117, 112, 107, 105, 107, 108, 104, 111, 99, 99, 104, 93, 101, + 85, 64, 47, 42, 47, 42, 40, 47, 49, 41, 40, 35, 31, 32, 37, 34, + 29, 28, 32, 33, 32, 33, 37, 35, 32, 30, 30, 36, 255, 255, 255, 255, + 255, 39, 43, 31, 55, 21, 15, 35, 29, 29, 27, 25, 24, 25, 27, 28, + 28, 23, 26, 27, 26, 22, 20, 21, 23, 29, 29, 27, 26, 29, 33, 35, + 33, 34, 32, 31, 32, 38, 45, 51, 54, 44, 40, 64, 53, 89, 76, 91, + 73, 80, 84, 62, 54, 59, 71, 87, 75, 72, 77, 79, 75, 70, 68, 68, + 68, 79, 90, 88, 85, 97, 76, 93, 72, 54, 37, 34, 39, 33, 32, 40, + 43, 39, 38, 32, 28, 30, 35, 33, 29, 32, 35, 34, 31, 32, 37, 40, + 39, 26, 23, 29, 255, 255, 255, 255, 255, 42, 31, 23, 23, 20, 15, 17, + 24, 24, 26, 29, 31, 31, 29, 28, 26, 20, 24, 29, 31, 30, 28, 25, + 24, 28, 28, 27, 28, 29, 30, 31, 33, 33, 28, 25, 26, 34, 40, 42, + 39, 35, 38, 44, 50, 58, 69, 83, 91, 89, 79, 69, 64, 65, 66, 62, + 59, 53, 51, 50, 50, 53, 56, 59, 60, 57, 63, 80, 87, 75, 69, 68, + 65, 50, 35, 38, 36, 36, 36, 24, 34, 36, 33, 27, 27, 29, 33, 34, + 35, 35, 33, 32, 34, 38, 39, 36, 33, 41, 31, 106, 255, 255, 255, 255, + 70, 41, 31, 22, 23, 22, 18, 19, 26, 22, 23, 26, 28, 28, 28, 27, + 26, 21, 25, 28, 30, 28, 27, 25, 25, 31, 31, 30, 31, 31, 32, 33, + 34, 30, 27, 24, 27, 33, 38, 39, 37, 30, 36, 42, 46, 53, 66, 82, + 95, 88, 80, 69, 65, 65, 64, 60, 56, 53, 53, 53, 57, 61, 63, 63, + 60, 69, 69, 81, 86, 77, 73, 70, 62, 49, 35, 38, 34, 36, 37, 26, + 34, 34, 31, 27, 25, 27, 30, 31, 33, 36, 35, 33, 35, 38, 39, 36, + 34, 41, 33, 255, 255, 255, 255, 255, 76, 36, 25, 17, 20, 22, 19, 18, + 24, 20, 20, 22, 23, 23, 25, 26, 26, 24, 26, 28, 28, 27, 26, 26, + 27, 28, 28, 27, 26, 26, 27, 28, 28, 27, 24, 24, 26, 31, 35, 33, + 31, 29, 34, 38, 39, 41, 54, 75, 91, 89, 84, 78, 75, 74, 72, 68, + 65, 61, 60, 61, 68, 73, 75, 71, 66, 71, 67, 74, 79, 72, 69, 63, + 50, 46, 34, 39, 33, 35, 39, 28, 35, 34, 31, 28, 26, 27, 29, 31, + 31, 36, 36, 34, 34, 36, 37, 35, 33, 47, 43, 255, 255, 255, 255, 255, + 64, 37, 24, 15, 19, 22, 20, 19, 23, 18, 18, 18, 18, 19, 22, 25, + 26, 27, 28, 28, 28, 26, 26, 27, 29, 26, 26, 24, 24, 24, 23, 24, + 24, 24, 23, 23, 26, 29, 30, 28, 26, 28, 32, 35, 32, 30, 42, 65, + 84, 88, 86, 85, 85, 84, 82, 79, 77, 75, 72, 71, 74, 81, 82, 77, + 71, 67, 65, 72, 77, 69, 65, 58, 44, 43, 33, 38, 31, 32, 40, 31, + 33, 36, 33, 29, 29, 29, 31, 32, 33, 36, 35, 33, 32, 33, 33, 32, + 31, 50, 52, 255, 255, 255, 255, 255, 53, 45, 28, 16, 19, 24, 23, 20, + 23, 17, 17, 17, 17, 18, 21, 24, 26, 29, 30, 29, 28, 26, 26, 27, + 30, 29, 29, 27, 27, 26, 26, 26, 27, 22, 23, 23, 26, 26, 26, 24, + 21, 26, 31, 32, 29, 28, 40, 63, 81, 84, 85, 86, 87, 83, 79, 77, + 76, 80, 77, 71, 69, 71, 72, 69, 67, 67, 69, 81, 86, 74, 66, 60, + 48, 40, 35, 39, 28, 29, 42, 32, 31, 35, 33, 30, 29, 30, 31, 32, + 33, 34, 34, 33, 32, 32, 32, 33, 35, 48, 117, 255, 255, 255, 255, 255, + 70, 52, 31, 14, 15, 20, 18, 15, 16, 18, 18, 18, 17, 18, 21, 23, + 25, 27, 28, 28, 27, 24, 24, 25, 27, 27, 26, 25, 26, 24, 24, 26, + 26, 24, 24, 25, 26, 24, 23, 21, 20, 25, 29, 30, 29, 30, 43, 63, + 80, 79, 82, 85, 84, 78, 74, 71, 72, 76, 71, 63, 58, 56, 56, 57, + 59, 66, 67, 78, 82, 70, 61, 56, 45, 37, 36, 40, 25, 28, 43, 32, + 27, 31, 29, 27, 27, 29, 30, 30, 31, 33, 34, 35, 36, 37, 40, 44, + 47, 58, 255, 255, 255, 255, 255, 255, 198, 61, 37, 15, 13, 18, 16, 13, + 13, 20, 19, 20, 20, 20, 21, 23, 23, 23, 25, 25, 25, 22, 21, 21, + 22, 23, 23, 22, 23, 22, 24, 25, 25, 27, 27, 27, 26, 23, 22, 21, + 21, 26, 28, 28, 27, 29, 39, 55, 67, 63, 68, 73, 73, 68, 65, 66, + 70, 71, 68, 62, 55, 49, 48, 52, 56, 63, 58, 62, 63, 54, 48, 41, + 29, 36, 37, 41, 23, 25, 42, 32, 24, 28, 27, 26, 27, 29, 32, 32, + 32, 31, 35, 39, 42, 47, 53, 61, 67, 136, 255, 255, 255, 255, 255, 255, + 255, 75, 49, 24, 21, 24, 23, 19, 18, 21, 21, 22, 21, 21, 22, 22, + 21, 19, 21, 23, 21, 20, 17, 18, 18, 25, 25, 26, 25, 26, 28, 28, + 30, 28, 28, 28, 26, 24, 21, 21, 21, 28, 27, 25, 24, 25, 32, 42, + 50, 43, 49, 57, 59, 57, 56, 60, 67, 71, 71, 67, 60, 52, 51, 56, + 61, 66, 54, 51, 51, 44, 41, 34, 20, 36, 39, 42, 23, 24, 42, 32, + 23, 29, 28, 27, 29, 32, 34, 35, 35, 31, 36, 42, 48, 54, 63, 74, + 82, 255, 255, 255, 255, 255, 255, 255, 255, 61, 48, 32, 24, 22, 24, 22, + 19, 22, 23, 24, 25, 25, 23, 19, 19, 19, 18, 18, 18, 18, 19, 20, + 21, 22, 23, 26, 26, 27, 27, 24, 24, 25, 25, 25, 26, 26, 24, 23, + 22, 23, 24, 27, 27, 29, 34, 42, 48, 50, 55, 61, 64, 58, 55, 61, + 73, 69, 69, 69, 67, 66, 63, 62, 62, 56, 54, 51, 49, 44, 40, 33, + 29, 35, 42, 41, 31, 28, 33, 31, 23, 27, 26, 26, 28, 31, 33, 34, + 34, 38, 43, 50, 53, 52, 56, 69, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 66, 54, 37, 29, 28, 28, 24, 20, 18, 19, 22, 24, 24, 24, 23, + 22, 18, 18, 18, 19, 18, 19, 20, 21, 20, 22, 24, 26, 26, 25, 24, + 23, 24, 24, 25, 25, 24, 23, 22, 22, 24, 27, 30, 31, 28, 30, 33, + 36, 32, 40, 51, 58, 59, 57, 64, 76, 81, 80, 76, 72, 69, 66, 63, + 63, 59, 54, 47, 42, 38, 35, 31, 30, 31, 37, 36, 27, 25, 30, 29, + 21, 27, 27, 28, 29, 32, 35, 38, 40, 30, 35, 45, 57, 66, 73, 140, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 60, 44, 37, 35, 32, 26, + 20, 18, 19, 21, 23, 24, 23, 23, 22, 18, 18, 19, 20, 19, 19, 21, + 21, 20, 21, 23, 24, 25, 24, 23, 22, 23, 24, 24, 24, 24, 23, 22, + 22, 19, 23, 28, 29, 27, 24, 23, 24, 20, 29, 43, 55, 58, 59, 67, + 77, 84, 81, 76, 69, 65, 62, 60, 59, 61, 55, 44, 36, 31, 30, 28, + 29, 29, 34, 33, 26, 25, 30, 29, 23, 31, 32, 31, 28, 24, 24, 27, + 31, 33, 35, 46, 63, 78, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 61, 47, 41, 39, 35, 28, 20, 22, 22, 23, 23, 22, 21, 19, + 18, 18, 19, 20, 21, 20, 20, 21, 21, 19, 20, 22, 23, 23, 23, 22, + 22, 22, 22, 23, 23, 23, 23, 22, 21, 18, 22, 27, 29, 29, 27, 28, + 29, 27, 34, 45, 55, 57, 59, 66, 76, 80, 75, 69, 64, 59, 58, 59, + 60, 61, 54, 44, 36, 31, 29, 28, 29, 30, 34, 34, 30, 29, 33, 32, + 28, 30, 32, 32, 28, 22, 21, 25, 31, 39, 39, 46, 59, 68, 136, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, 45, 41, 39, 36, 28, + 20, 22, 22, 22, 22, 21, 20, 19, 18, 18, 19, 21, 22, 22, 21, 22, + 21, 19, 19, 20, 21, 21, 21, 21, 21, 20, 21, 22, 22, 22, 22, 22, + 21, 24, 28, 31, 32, 33, 34, 36, 40, 37, 39, 45, 52, 54, 56, 64, + 73, 71, 67, 62, 58, 57, 58, 61, 64, 59, 53, 45, 39, 35, 32, 30, + 30, 31, 34, 34, 32, 32, 34, 34, 32, 22, 26, 30, 31, 30, 33, 40, + 47, 39, 39, 42, 46, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 189, 45, 40, 39, 35, 27, 20, 19, 19, 19, 20, 21, 21, 22, + 22, 18, 20, 22, 24, 23, 22, 22, 22, 18, 18, 19, 19, 19, 20, 20, + 20, 19, 20, 21, 21, 22, 22, 21, 21, 24, 28, 29, 29, 26, 28, 33, + 37, 37, 38, 42, 47, 49, 52, 60, 69, 57, 55, 51, 48, 49, 51, 55, + 58, 54, 49, 44, 39, 36, 35, 33, 31, 30, 31, 31, 31, 31, 31, 31, + 31, 22, 25, 29, 31, 31, 34, 38, 43, 39, 40, 44, 43, 35, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 41, 39, 35, 27, + 20, 19, 19, 19, 19, 20, 21, 22, 23, 19, 20, 23, 25, 24, 23, 23, + 22, 18, 18, 18, 18, 18, 19, 19, 20, 18, 19, 20, 21, 21, 21, 21, + 22, 20, 23, 25, 24, 22, 23, 27, 31, 35, 34, 39, 45, 47, 49, 55, + 63, 48, 46, 44, 41, 41, 43, 46, 48, 48, 44, 38, 34, 33, 34, 32, + 34, 30, 30, 30, 31, 30, 30, 29, 30, 27, 28, 29, 30, 29, 28, 27, + 27, 35, 40, 47, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 43, 40, 35, 27, 20, 23, 22, 21, 20, 19, 19, 19, + 19, 19, 20, 24, 25, 25, 24, 23, 22, 18, 17, 17, 17, 17, 18, 19, + 20, 18, 18, 19, 20, 21, 21, 21, 22, 19, 23, 27, 28, 27, 28, 31, + 34, 33, 35, 40, 47, 49, 48, 52, 58, 50, 48, 45, 44, 41, 42, 43, + 43, 45, 40, 33, 30, 29, 32, 33, 35, 32, 31, 31, 32, 32, 30, 30, + 31, 27, 27, 29, 32, 34, 34, 31, 28, 28, 34, 44, 49, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 46, 43, 32, + 22, 25, 22, 20, 20, 21, 23, 23, 22, 22, 20, 20, 23, 26, 28, 27, + 25, 21, 20, 19, 17, 17, 16, 16, 16, 17, 17, 17, 18, 19, 22, 24, + 27, 25, 28, 30, 29, 27, 27, 29, 32, 29, 31, 33, 36, 39, 44, 50, + 54, 53, 50, 47, 44, 42, 43, 43, 44, 44, 37, 34, 38, 36, 32, 30, + 33, 27, 28, 28, 28, 28, 28, 28, 28, 28, 30, 31, 31, 29, 31, 35, + 40, 40, 43, 51, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 47, 37, 28, 30, 27, 23, 21, 20, 19, 18, + 16, 17, 16, 18, 21, 24, 25, 24, 22, 20, 19, 18, 17, 16, 16, 16, + 17, 17, 17, 17, 18, 19, 22, 24, 27, 25, 28, 30, 29, 27, 27, 29, + 30, 33, 34, 34, 35, 36, 41, 47, 52, 53, 50, 49, 46, 45, 44, 45, + 46, 46, 39, 36, 38, 36, 32, 29, 30, 32, 31, 30, 29, 28, 27, 26, + 25, 24, 27, 30, 30, 30, 35, 44, 52, 57, 64, 80, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 39, + 29, 32, 29, 25, 22, 20, 18, 15, 13, 14, 14, 18, 21, 24, 25, 24, + 22, 19, 18, 17, 17, 17, 17, 17, 18, 17, 17, 17, 18, 19, 22, 24, + 27, 26, 27, 28, 28, 27, 27, 28, 28, 34, 33, 32, 31, 31, 34, 41, + 46, 47, 46, 45, 44, 43, 41, 40, 40, 43, 38, 34, 35, 32, 28, 25, + 27, 32, 31, 31, 30, 29, 28, 27, 26, 20, 24, 28, 27, 27, 32, 44, + 54, 50, 58, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 182, 26, 32, 29, 25, 23, 21, 19, 16, + 14, 13, 15, 20, 23, 25, 25, 25, 23, 21, 20, 19, 19, 19, 19, 20, + 20, 17, 17, 17, 18, 19, 22, 24, 26, 24, 25, 25, 25, 25, 25, 25, + 25, 27, 29, 29, 30, 29, 32, 35, 38, 41, 40, 39, 38, 36, 34, 31, + 30, 37, 34, 31, 30, 28, 27, 25, 24, 28, 28, 28, 29, 30, 30, 31, + 31, 24, 29, 33, 31, 27, 29, 39, 48, 38, 119, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 182, 33, 29, 27, 24, 21, 16, 13, 12, 15, 19, 22, 22, 22, 23, + 23, 24, 23, 23, 22, 22, 22, 22, 23, 17, 17, 17, 18, 19, 22, 24, + 26, 22, 22, 21, 21, 22, 22, 21, 21, 21, 24, 30, 33, 35, 35, 35, + 35, 41, 41, 39, 38, 34, 32, 30, 28, 32, 32, 29, 28, 29, 30, 29, + 26, 27, 27, 28, 28, 29, 30, 31, 31, 29, 34, 38, 36, 32, 32, 38, + 45, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 36, 32, 27, 22, 16, + 11, 11, 14, 17, 18, 17, 17, 19, 21, 28, 27, 26, 24, 23, 23, 23, + 23, 17, 17, 17, 18, 19, 22, 24, 26, 22, 21, 20, 20, 21, 21, 20, + 19, 19, 25, 33, 39, 41, 39, 38, 37, 44, 44, 42, 41, 39, 38, 36, + 36, 33, 33, 31, 29, 30, 34, 33, 30, 29, 29, 28, 28, 28, 27, 27, + 27, 23, 26, 29, 31, 31, 35, 41, 46, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 183, 36, 31, 25, 19, 14, 13, 15, 17, 16, 13, 13, 17, + 20, 30, 28, 27, 25, 23, 22, 22, 22, 17, 17, 17, 18, 19, 22, 24, + 26, 25, 21, 19, 21, 23, 23, 21, 19, 21, 26, 34, 38, 39, 38, 37, + 37, 40, 40, 38, 38, 38, 39, 40, 42, 31, 33, 31, 28, 28, 33, 33, + 27, 27, 27, 27, 27, 27, 26, 26, 26, 22, 21, 21, 24, 31, 40, 49, + 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 35, 30, 24, + 20, 17, 19, 19, 17, 14, 15, 19, 23, 31, 30, 28, 25, 23, 21, 20, + 20, 17, 17, 17, 18, 19, 23, 25, 27, 27, 23, 20, 22, 24, 25, 22, + 20, 22, 25, 31, 35, 34, 34, 34, 35, 31, 32, 30, 30, 32, 36, 40, + 42, 30, 32, 30, 25, 25, 29, 28, 22, 22, 23, 24, 25, 26, 28, 29, + 28, 31, 26, 22, 26, 35, 50, 62, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 43, 37, 29, 23, 18, 18, 22, 23, 24, 33, + 46, 34, 27, 22, 25, 25, 21, 22, 27, 21, 20, 19, 18, 20, 23, 25, + 27, 23, 21, 21, 21, 21, 23, 24, 24, 19, 22, 25, 26, 32, 36, 34, + 30, 31, 33, 34, 33, 32, 33, 34, 36, 28, 27, 25, 23, 23, 23, 23, + 24, 23, 23, 24, 25, 28, 29, 30, 30, 30, 16, 32, 35, 51, 69, 158, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, + 27, 32, 26, 23, 24, 25, 28, 38, 51, 38, 31, 25, 26, 24, 19, 17, + 20, 15, 15, 15, 16, 18, 22, 26, 27, 23, 22, 22, 21, 22, 23, 24, + 24, 20, 26, 30, 29, 29, 32, 32, 30, 33, 35, 36, 35, 33, 32, 31, + 33, 28, 26, 24, 24, 23, 23, 23, 23, 25, 23, 22, 22, 24, 28, 30, + 31, 38, 32, 32, 32, 45, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 46, 44, 39, 27, 32, 41, 49, 49, 43, 39, + 38, 32, 27, 23, 24, 23, 20, 19, 21, 16, 16, 16, 16, 19, 22, 25, + 26, 24, 22, 22, 22, 23, 23, 23, 24, 24, 32, 36, 34, 30, 31, 32, + 33, 34, 36, 37, 36, 33, 29, 28, 28, 29, 28, 26, 24, 23, 24, 24, + 25, 24, 21, 19, 18, 20, 23, 27, 30, 17, 31, 24, 33, 51, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, + 46, 51, 62, 77, 86, 85, 76, 63, 53, 36, 32, 28, 27, 26, 25, 23, + 23, 23, 23, 22, 21, 21, 21, 22, 22, 24, 23, 23, 22, 23, 23, 23, + 24, 25, 31, 32, 30, 28, 31, 30, 29, 29, 33, 35, 34, 31, 27, 25, + 25, 30, 29, 27, 25, 25, 26, 26, 26, 27, 24, 22, 21, 21, 24, 27, + 28, 30, 62, 47, 52, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 81, 85, 82, 81, 82, 77, + 68, 48, 43, 36, 30, 27, 26, 24, 22, 25, 25, 25, 23, 22, 21, 22, + 21, 24, 23, 22, 22, 23, 24, 24, 25, 24, 23, 20, 20, 25, 30, 26, + 19, 22, 26, 29, 30, 28, 25, 25, 25, 29, 29, 28, 26, 26, 28, 28, + 29, 28, 27, 26, 25, 26, 27, 28, 28, 43, 83, 71, 69, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 198, 75, 61, 41, 38, 31, 24, 22, 26, 28, + 26, 22, 22, 22, 23, 23, 22, 23, 22, 23, 22, 22, 22, 23, 25, 26, + 27, 30, 26, 21, 21, 29, 34, 29, 20, 19, 22, 25, 25, 24, 23, 24, + 25, 28, 27, 26, 25, 26, 27, 28, 28, 23, 22, 21, 21, 23, 26, 29, + 30, 39, 77, 79, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 184, 41, 32, 22, 22, 29, 33, 30, 23, 24, 25, 25, 24, 24, 23, + 22, 22, 21, 22, 22, 24, 25, 28, 29, 34, 32, 28, 25, 28, 33, 30, + 23, 20, 22, 23, 23, 22, 22, 23, 25, 25, 24, 23, 22, 23, 24, 24, + 25, 25, 23, 20, 20, 25, 33, 41, 46, 69, 92, 152, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 35, 28, 32, 32, + 28, 31, 31, 31, 29, 27, 24, 22, 19, 21, 20, 20, 22, 24, 26, 29, + 30, 30, 31, 28, 24, 22, 23, 22, 18, 21, 23, 24, 23, 21, 21, 23, + 25, 21, 21, 20, 19, 19, 20, 22, 22, 37, 32, 28, 28, 34, 48, 61, + 69, 88, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 33, 30, 32, 34, 26, 28, 29, 27, 23, 20, 22, + 23, 23, 23, 22, 23, 25, 27, 29, 30, 31, 30, 28, 26, 25, 24, 23, + 23, 24, 25, 24, 23, 23, 22, 21, 21, 24, 22, 21, 19, 19, 21, 22, + 22, 21, 36, 26, 29, 38, 42, 59, 63, 89, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 33, + 35, 32, 33, 33, 30, 25, 23, 23, 24, 21, 20, 19, 19, 21, 23, 25, + 26, 32, 31, 28, 26, 25, 25, 24, 26, 25, 24, 24, 23, 23, 22, 22, + 22, 18, 18, 19, 20, 21, 25, 26, 27, 24, 37, 24, 29, 46, 62, 90, + 103, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 44, 43, 40, 36, 31, 28, 28, + 29, 25, 25, 23, 23, 24, 26, 27, 28, 29, 28, 26, 24, 22, 23, 23, + 24, 23, 24, 24, 24, 23, 23, 22, 22, 18, 19, 21, 23, 26, 28, 29, + 30, 23, 42, 39, 52, 71, 84, 153, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 49, 44, 39, 34, 31, 31, 31, 30, 29, 27, 26, 27, 28, 29, + 29, 26, 25, 22, 21, 19, 19, 20, 21, 23, 23, 24, 24, 24, 24, 23, + 23, 19, 19, 20, 21, 23, 24, 25, 25, 45, 69, 72, 89, 108, 160, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 41, 36, 34, 32, + 31, 32, 32, 30, 27, 26, 27, 27, 27, 27, 25, 22, 20, 18, 19, 20, + 23, 23, 23, 23, 24, 25, 24, 25, 25, 15, 16, 18, 20, 23, 26, 28, + 28, 41, 61, 60, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 186, 44, 41, 40, 39, 37, 34, 32, 31, 31, + 31, 33, 30, 27, 23, 21, 22, 23, 25, 22, 23, 23, 24, 24, 25, 25, + 25, 21, 22, 25, 31, 37, 45, 50, 54, 70, 92, 147, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 49, 47, 45, 41, 39, 37, 37, 37, 37, 34, 29, 25, 22, 23, 24, + 26, 22, 23, 23, 24, 25, 26, 26, 25, 25, 26, 31, 38, 49, 61, 72, + 78, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 47, 44, 41, 37, 35, 35, + 34, 36, 34, 28, 23, 21, 20, 22, 24, 20, 21, 22, 22, 23, 24, 24, + 25, 20, 22, 26, 34, 45, 60, 134, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 185, 46, 46, 43, 41, 40, 37, 39, 34, 28, 27, 28, 28, + 25, 24, 24, 20, 14, 15, 24, 32, 34, 37, 38, 115, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 44, + 46, 46, 45, 41, 36, 34, 37, 36, 31, 28, 28, 30, 34, 38, 41, 45, + 47, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 43, 47, 53, 50, + 44, 36, 33, 39, 49, 55, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 120, 118, 129, 131, 118, 130, 124, 140, 154, 127, 129, 159, + 140, 142, 159, 164, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 70, 102, 106, 128, 114, 121, 128, + 131, 140, 134, 131, 135, 118, 119, 145, 135, 147, 161, 164, 152, 184, 180, 176, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 142, 78, 94, + 63, 68, 87, 82, 116, 112, 120, 117, 111, 86, 81, 71, 74, 64, 63, 85, + 79, 84, 99, 110, 111, 163, 173, 172, 163, 198, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 201, 83, 73, 53, 41, 45, 49, 48, 63, 67, 82, 74, 100, 79, + 48, 26, 19, 29, 39, 36, 37, 46, 48, 58, 42, 76, 77, 97, 142, 135, + 145, 145, 166, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 193, 42, 32, 29, 31, 23, 25, 33, + 34, 34, 39, 44, 52, 52, 67, 52, 21, 20, 14, 27, 38, 33, 31, 37, + 35, 37, 23, 43, 38, 55, 88, 86, 111, 142, 168, 160, 200, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 65, + 64, 31, 27, 31, 32, 28, 38, 47, 42, 39, 33, 43, 42, 47, 43, 40, + 17, 24, 20, 36, 48, 45, 44, 48, 44, 50, 44, 54, 43, 59, 78, 83, + 127, 130, 162, 159, 172, 163, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 223, 152, 132, 85, 46, 27, 26, 36, 43, 49, 42, 28, 34, 42, + 34, 36, 23, 38, 30, 33, 17, 24, 12, 20, 16, 26, 32, 30, 32, 36, + 32, 26, 31, 34, 24, 35, 34, 35, 85, 110, 145, 148, 166, 163, 170, 178, + 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 223, 140, 125, 120, 95, 51, 23, 29, + 37, 36, 47, 54, 41, 19, 18, 28, 23, 27, 16, 33, 23, 22, 3, 16, + 14, 24, 17, 18, 15, 8, 12, 18, 13, 24, 36, 37, 29, 30, 12, 3, + 39, 44, 85, 96, 125, 135, 149, 156, 158, 168, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 151, + 162, 154, 125, 114, 81, 39, 11, 30, 32, 46, 52, 58, 44, 19, 13, 21, + 19, 16, 11, 24, 22, 16, 6, 16, 15, 19, 11, 11, 8, 3, 10, 18, + 12, 14, 26, 30, 30, 31, 15, 6, 20, 42, 81, 93, 127, 145, 161, 159, + 152, 149, 170, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 220, 167, 154, 154, 153, 102, 66, 66, 51, 36, 28, 55, + 49, 41, 35, 37, 32, 12, 7, 12, 13, 5, 3, 5, 15, 8, 19, 18, + 9, 11, 7, 10, 9, 6, 14, 18, 7, 13, 19, 22, 32, 38, 38, 41, + 36, 36, 65, 66, 98, 124, 152, 154, 145, 153, 173, 162, 200, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 169, 191, 169, 147, + 128, 74, 29, 34, 27, 30, 25, 46, 30, 26, 13, 13, 17, 11, 9, 18, + 21, 18, 15, 7, 27, 23, 48, 36, 21, 32, 30, 35, 32, 25, 26, 21, + 3, 0, 2, 0, 9, 17, 31, 43, 26, 22, 42, 32, 64, 103, 150, 167, + 164, 148, 164, 147, 149, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 145, 139, 150, 139, 126, 121, 88, 42, 34, 25, 23, 24, 24, 18, + 14, 7, 17, 25, 27, 27, 30, 37, 39, 37, 54, 58, 72, 75, 67, 69, + 57, 74, 59, 68, 48, 64, 59, 49, 38, 36, 19, 23, 15, 20, 33, 28, + 46, 38, 37, 39, 44, 68, 96, 119, 126, 159, 174, 165, 158, 166, 162, 184, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 216, 146, 147, 150, 159, 145, 127, 118, + 79, 38, 34, 29, 24, 22, 16, 8, 1, 0, 7, 12, 14, 14, 18, 26, + 26, 27, 43, 48, 61, 64, 55, 58, 47, 54, 51, 54, 46, 41, 44, 26, + 23, 15, 12, 23, 9, 13, 30, 25, 32, 41, 38, 33, 34, 58, 93, 128, + 144, 154, 173, 164, 155, 164, 165, 153, 189, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 170, 168, 169, 154, 133, 101, 78, 69, 35, 20, 23, 26, 26, 22, 17, 10, + 5, 24, 29, 34, 34, 36, 41, 48, 47, 39, 54, 57, 68, 70, 64, 67, + 57, 58, 63, 64, 67, 48, 62, 40, 47, 26, 33, 37, 13, 9, 27, 25, + 24, 43, 44, 42, 36, 42, 52, 66, 71, 117, 147, 148, 144, 164, 178, 173, + 173, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 224, 191, 178, 168, 170, 139, 96, 59, 41, 41, + 19, 14, 18, 25, 27, 23, 19, 18, 16, 31, 36, 39, 36, 41, 51, 55, + 51, 40, 55, 55, 63, 65, 59, 66, 54, 57, 59, 60, 57, 46, 59, 41, + 46, 45, 48, 44, 19, 9, 18, 24, 28, 18, 26, 33, 33, 33, 29, 29, + 27, 60, 99, 109, 110, 137, 159, 154, 150, 160, 172, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 167, 188, + 168, 166, 173, 138, 92, 56, 36, 33, 17, 23, 25, 26, 24, 18, 17, 19, + 18, 24, 29, 32, 30, 36, 47, 50, 41, 41, 51, 49, 57, 57, 52, 59, + 48, 58, 47, 53, 31, 39, 37, 32, 31, 40, 38, 30, 21, 12, 4, 11, + 22, 27, 30, 31, 28, 29, 30, 38, 44, 61, 101, 114, 117, 144, 164, 157, + 152, 160, 141, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 146, 157, 180, 159, 152, 154, 111, 69, 44, 28, 30, + 23, 21, 21, 20, 17, 17, 21, 28, 31, 29, 34, 36, 35, 43, 56, 57, + 45, 41, 52, 48, 53, 52, 48, 56, 48, 56, 40, 50, 25, 44, 44, 49, + 46, 36, 40, 33, 37, 23, 1, 2, 6, 40, 40, 38, 35, 34, 30, 35, + 40, 31, 67, 79, 89, 124, 151, 155, 160, 153, 142, 137, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 127, 135, 154, + 127, 91, 92, 52, 30, 32, 28, 36, 42, 21, 18, 16, 17, 21, 29, 41, + 44, 31, 36, 40, 38, 49, 63, 62, 45, 38, 45, 40, 43, 42, 39, 49, + 40, 41, 35, 43, 31, 38, 48, 49, 57, 43, 57, 49, 54, 46, 26, 26, + 15, 15, 22, 29, 39, 45, 38, 34, 33, 29, 52, 54, 64, 103, 136, 155, + 175, 175, 172, 184, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 166, 171, 154, 145, 141, 97, 51, 58, 33, 28, 38, 23, 15, + 15, 32, 28, 23, 21, 23, 31, 40, 40, 36, 43, 47, 46, 59, 74, 71, + 55, 53, 62, 53, 56, 54, 51, 62, 53, 48, 52, 51, 50, 31, 52, 41, + 56, 38, 62, 51, 54, 54, 52, 57, 40, 17, 22, 26, 35, 39, 31, 25, + 23, 46, 54, 41, 36, 67, 92, 114, 140, 141, 144, 181, 146, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 172, 166, 147, 159, 158, + 92, 56, 52, 36, 24, 40, 22, 37, 8, 19, 28, 23, 20, 29, 33, 36, + 41, 28, 33, 53, 49, 52, 67, 63, 64, 59, 56, 52, 49, 49, 52, 53, + 54, 56, 54, 53, 51, 51, 54, 55, 55, 46, 45, 45, 47, 50, 46, 29, + 20, 0, 8, 14, 16, 17, 29, 38, 29, 48, 53, 43, 44, 67, 82, 106, + 146, 138, 141, 175, 133, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 149, 160, 149, 123, 129, 127, 84, 23, 23, 18, 28, 36, 17, 30, + 20, 22, 33, 32, 29, 36, 40, 42, 43, 34, 36, 53, 50, 55, 69, 64, + 62, 60, 59, 56, 54, 54, 54, 54, 55, 58, 57, 55, 54, 54, 54, 55, + 56, 59, 56, 50, 47, 51, 54, 50, 50, 30, 33, 29, 22, 16, 27, 43, + 43, 39, 46, 39, 34, 41, 42, 58, 91, 83, 107, 157, 127, 137, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 131, 138, 107, 62, 51, 38, + 15, 10, 13, 11, 38, 28, 9, 9, 16, 21, 32, 31, 30, 39, 42, 42, + 41, 38, 36, 51, 48, 54, 70, 62, 60, 60, 59, 58, 58, 58, 58, 58, + 57, 60, 59, 58, 58, 57, 57, 58, 58, 65, 63, 59, 54, 57, 64, 67, + 72, 59, 55, 44, 26, 10, 19, 41, 47, 42, 48, 46, 40, 34, 27, 34, + 60, 55, 94, 153, 141, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 149, 150, 155, 105, 56, 50, 38, 27, 16, 23, 19, 40, 18, 12, 2, + 11, 21, 31, 30, 28, 39, 41, 41, 40, 36, 32, 47, 42, 52, 71, 61, + 58, 57, 58, 58, 59, 59, 61, 59, 58, 61, 60, 61, 59, 60, 59, 60, + 60, 54, 59, 61, 59, 59, 61, 62, 65, 58, 55, 49, 30, 7, 8, 24, + 33, 38, 41, 43, 43, 40, 34, 42, 57, 56, 90, 145, 157, 155, 188, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 231, 151, 156, 136, 67, 19, 26, 30, + 19, 23, 30, 25, 30, 12, 25, 13, 18, 30, 38, 35, 30, 40, 44, 42, + 45, 37, 32, 46, 40, 50, 67, 58, 56, 55, 55, 58, 60, 61, 61, 60, + 59, 62, 62, 64, 62, 64, 61, 63, 62, 51, 58, 63, 62, 60, 61, 61, + 60, 55, 51, 55, 44, 21, 11, 15, 18, 22, 16, 18, 25, 28, 30, 40, + 47, 45, 61, 101, 142, 147, 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 164, 162, 170, 110, 33, 0, 4, 30, 15, 30, 29, 29, 19, 11, 27, 15, + 16, 33, 39, 35, 30, 38, 42, 41, 44, 44, 40, 51, 44, 49, 63, 55, + 56, 54, 55, 58, 60, 60, 63, 63, 65, 67, 65, 68, 66, 67, 65, 66, + 63, 60, 64, 64, 62, 62, 67, 70, 69, 61, 57, 67, 67, 49, 32, 23, + 16, 17, 3, 3, 13, 13, 21, 34, 35, 31, 32, 51, 101, 109, 146, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 126, 147, 135, 144, 61, 9, 0, 0, 41, + 24, 31, 20, 33, 18, 18, 15, 7, 10, 27, 36, 33, 28, 34, 36, 33, + 34, 42, 40, 54, 44, 46, 60, 55, 57, 58, 58, 59, 60, 62, 66, 69, + 70, 69, 68, 71, 69, 71, 68, 68, 65, 67, 69, 68, 65, 67, 72, 73, + 69, 60, 52, 60, 69, 60, 45, 32, 22, 20, 3, 5, 13, 9, 17, 34, + 33, 29, 34, 35, 72, 69, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 126, + 146, 141, 147, 53, 22, 8, 0, 35, 12, 23, 3, 31, 19, 26, 8, 3, + 18, 25, 33, 32, 30, 35, 33, 31, 27, 34, 37, 50, 43, 43, 58, 55, + 60, 60, 61, 60, 62, 65, 69, 72, 73, 71, 71, 72, 73, 73, 70, 70, + 67, 67, 67, 67, 66, 68, 70, 67, 58, 50, 37, 45, 58, 55, 47, 35, + 23, 13, 0, 5, 14, 5, 12, 33, 34, 32, 48, 40, 62, 51, 130, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 171, 146, 159, 101, 120, 11, 22, 19, 23, 19, + 28, 27, 17, 41, 25, 28, 3, 2, 10, 36, 40, 45, 45, 41, 35, 31, + 24, 38, 35, 37, 43, 41, 42, 52, 65, 60, 60, 62, 65, 69, 72, 76, + 77, 70, 74, 78, 78, 76, 72, 74, 74, 67, 71, 72, 67, 64, 64, 67, + 63, 56, 54, 54, 54, 49, 47, 48, 52, 39, 16, 22, 25, 8, 3, 21, + 26, 22, 44, 43, 46, 46, 109, 228, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 140, + 147, 97, 99, 12, 9, 18, 24, 22, 35, 48, 24, 32, 16, 27, 13, 5, + 5, 28, 35, 42, 42, 41, 45, 43, 36, 38, 36, 43, 49, 51, 50, 54, + 62, 59, 59, 61, 64, 67, 71, 75, 76, 79, 79, 78, 74, 73, 75, 81, + 84, 75, 77, 76, 70, 66, 67, 66, 61, 55, 52, 53, 53, 52, 53, 57, + 63, 52, 36, 37, 35, 12, 2, 18, 26, 15, 38, 37, 34, 37, 102, 154, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 225, 172, 151, 146, 86, 76, 27, 5, 24, 27, 17, + 32, 44, 23, 30, 15, 20, 9, 0, 1, 23, 33, 39, 33, 34, 44, 47, + 39, 42, 39, 43, 49, 53, 53, 57, 62, 63, 66, 66, 68, 72, 76, 78, + 81, 83, 82, 80, 78, 77, 78, 82, 84, 77, 78, 78, 72, 68, 70, 70, + 65, 58, 53, 53, 50, 47, 45, 49, 54, 56, 45, 41, 39, 11, 1, 9, + 18, 16, 33, 34, 28, 31, 86, 108, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 139, 145, 121, + 99, 47, 40, 37, 8, 34, 30, 14, 29, 20, 21, 41, 28, 13, 0, 0, + 11, 33, 43, 42, 32, 28, 37, 42, 32, 46, 40, 35, 38, 44, 52, 60, + 66, 67, 68, 69, 72, 76, 78, 81, 84, 84, 85, 89, 87, 86, 82, 80, + 77, 76, 77, 77, 71, 71, 74, 75, 69, 62, 57, 53, 50, 45, 43, 48, + 53, 56, 50, 42, 47, 26, 17, 10, 18, 23, 30, 36, 35, 34, 64, 90, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 155, 149, 104, 66, 9, 8, 37, 9, 32, 27, 17, + 35, 13, 22, 41, 31, 10, 6, 7, 30, 47, 54, 51, 37, 32, 36, 40, + 33, 39, 39, 38, 41, 48, 56, 64, 65, 65, 67, 68, 71, 72, 76, 79, + 80, 85, 86, 90, 90, 90, 87, 83, 80, 77, 77, 75, 70, 71, 75, 76, + 70, 62, 60, 60, 57, 57, 57, 62, 68, 63, 64, 50, 65, 51, 47, 21, + 23, 26, 23, 36, 45, 41, 44, 76, 152, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 167, 147, 82, + 40, 14, 12, 37, 11, 23, 19, 20, 38, 23, 20, 21, 17, 8, 25, 23, + 42, 51, 52, 48, 40, 34, 36, 38, 37, 36, 42, 52, 57, 63, 67, 68, + 64, 69, 69, 71, 73, 76, 78, 81, 84, 91, 88, 85, 85, 87, 91, 93, + 93, 80, 81, 77, 71, 70, 73, 72, 67, 62, 60, 59, 57, 54, 52, 54, + 59, 63, 71, 50, 70, 61, 60, 17, 17, 21, 12, 32, 44, 43, 33, 68, + 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 167, 177, 151, 80, 51, 26, 23, 31, 15, 17, 15, 21, + 31, 29, 19, 10, 13, 10, 40, 36, 50, 49, 42, 42, 42, 39, 35, 38, + 47, 40, 55, 69, 73, 74, 75, 73, 67, 74, 74, 76, 77, 80, 82, 86, + 87, 94, 92, 88, 86, 88, 92, 93, 91, 81, 81, 76, 71, 71, 74, 73, + 67, 65, 64, 61, 57, 52, 48, 47, 50, 56, 71, 48, 69, 58, 57, 11, + 12, 16, 13, 34, 36, 42, 34, 65, 80, 146, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 144, 149, 115, 46, + 32, 13, 11, 12, 10, 14, 14, 24, 23, 24, 20, 18, 25, 16, 49, 42, + 55, 48, 39, 40, 46, 45, 39, 43, 56, 46, 59, 70, 72, 72, 74, 76, + 74, 73, 73, 73, 75, 77, 79, 81, 84, 93, 93, 92, 94, 95, 94, 89, + 83, 81, 79, 76, 73, 74, 77, 76, 70, 68, 68, 71, 69, 66, 63, 63, + 65, 55, 75, 51, 72, 58, 61, 15, 22, 20, 21, 39, 30, 39, 38, 64, + 60, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 124, 125, 133, 80, 17, 11, 11, 7, 8, 7, 13, 17, 23, + 21, 20, 0, 0, 12, 29, 37, 41, 45, 39, 37, 33, 33, 39, 46, 49, + 43, 55, 56, 64, 73, 75, 71, 75, 82, 81, 77, 78, 82, 81, 77, 79, + 85, 85, 85, 87, 89, 93, 94, 94, 94, 92, 86, 83, 85, 80, 68, 63, + 63, 64, 66, 66, 66, 65, 65, 65, 65, 57, 74, 51, 79, 67, 65, 12, + 18, 28, 29, 27, 51, 37, 50, 41, 38, 84, 134, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 125, 131, 75, 28, + 19, 14, 11, 8, 8, 10, 15, 20, 19, 12, 0, 0, 10, 28, 33, 34, + 36, 33, 34, 33, 32, 38, 45, 50, 45, 47, 54, 67, 73, 73, 72, 79, + 83, 88, 84, 82, 82, 81, 76, 79, 85, 80, 80, 81, 85, 87, 90, 93, + 93, 95, 91, 87, 87, 81, 72, 66, 69, 68, 71, 72, 70, 66, 64, 65, + 66, 57, 59, 50, 57, 65, 44, 11, 8, 20, 25, 27, 48, 34, 46, 40, + 38, 85, 78, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 227, 125, 126, 128, 64, 33, 19, 17, 15, 12, 10, 11, 15, 19, + 18, 9, 0, 2, 19, 37, 43, 43, 46, 46, 49, 50, 47, 46, 49, 53, + 52, 50, 65, 77, 77, 76, 80, 86, 84, 91, 88, 87, 85, 82, 80, 84, + 89, 80, 80, 80, 81, 84, 87, 91, 92, 100, 95, 93, 90, 88, 79, 76, + 77, 69, 73, 75, 73, 67, 63, 66, 67, 73, 66, 76, 62, 89, 48, 28, + 9, 11, 21, 28, 43, 31, 43, 43, 42, 81, 77, 143, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 120, 120, 117, 50, 35, + 19, 15, 15, 16, 16, 16, 17, 19, 17, 18, 13, 19, 33, 46, 48, 46, + 46, 48, 53, 59, 55, 50, 51, 57, 59, 58, 72, 82, 79, 84, 93, 92, + 82, 92, 92, 92, 90, 88, 86, 89, 90, 86, 86, 84, 86, 87, 88, 93, + 94, 96, 96, 97, 95, 94, 87, 84, 82, 89, 94, 97, 92, 85, 81, 84, + 86, 63, 56, 73, 63, 87, 46, 25, 0, 9, 21, 32, 36, 27, 40, 50, + 50, 70, 67, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 161, 104, 103, 102, 42, 36, 26, 11, 16, 21, 23, 22, 21, 21, + 18, 28, 24, 29, 38, 42, 39, 36, 30, 38, 48, 54, 51, 48, 54, 62, + 66, 66, 76, 82, 82, 94, 108, 106, 92, 100, 102, 102, 99, 97, 94, 94, + 92, 92, 90, 89, 89, 89, 90, 92, 93, 88, 92, 98, 99, 100, 98, 93, + 89, 79, 83, 83, 81, 74, 68, 67, 66, 58, 51, 57, 62, 69, 53, 28, + 1, 14, 27, 39, 31, 23, 37, 60, 60, 67, 62, 51, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 157, 105, 91, 87, 38, 30, + 30, 10, 15, 22, 25, 23, 21, 20, 17, 21, 22, 29, 35, 39, 41, 40, + 38, 55, 62, 64, 58, 54, 57, 64, 69, 79, 82, 84, 89, 101, 116, 117, + 108, 111, 114, 114, 111, 105, 103, 102, 98, 96, 94, 92, 90, 89, 89, 88, + 88, 89, 96, 100, 102, 102, 103, 97, 92, 90, 92, 92, 90, 87, 79, 74, + 70, 68, 59, 51, 68, 59, 67, 44, 22, 17, 29, 43, 25, 22, 36, 63, + 60, 70, 66, 48, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 136, 157, 111, 79, 69, 30, 16, 29, 14, 18, 23, 23, 21, 19, 21, + 20, 14, 16, 25, 34, 40, 48, 52, 54, 65, 68, 67, 58, 53, 56, 61, + 66, 80, 79, 79, 83, 88, 95, 100, 103, 101, 105, 104, 99, 97, 101, 104, + 102, 96, 94, 93, 92, 89, 86, 82, 83, 91, 96, 95, 87, 84, 82, 76, + 69, 55, 57, 60, 63, 68, 64, 57, 50, 55, 45, 41, 56, 49, 60, 41, + 14, 14, 28, 44, 20, 24, 35, 61, 51, 73, 71, 48, 64, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 145, 106, 64, 54, 26, 9, + 32, 19, 22, 23, 20, 17, 16, 19, 22, 18, 21, 27, 33, 36, 44, 50, + 53, 44, 46, 47, 43, 43, 51, 59, 65, 70, 70, 69, 67, 62, 61, 69, + 79, 77, 80, 80, 75, 79, 89, 99, 101, 100, 97, 98, 95, 92, 87, 83, + 81, 89, 90, 82, 66, 55, 50, 44, 35, 21, 22, 30, 40, 50, 52, 45, + 36, 48, 36, 46, 60, 61, 61, 41, 4, 12, 25, 44, 18, 24, 34, 57, + 43, 70, 74, 47, 59, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 212, 124, 142, 112, 57, 51, 12, 21, 27, 22, 23, 25, 19, 13, 14, 23, + 28, 27, 27, 40, 21, 51, 45, 44, 58, 44, 52, 62, 41, 46, 71, 55, + 66, 75, 82, 72, 78, 78, 76, 67, 77, 104, 79, 78, 91, 84, 92, 110, + 110, 109, 101, 100, 109, 89, 94, 77, 98, 83, 101, 82, 59, 56, 59, 56, + 39, 32, 21, 43, 41, 55, 66, 34, 48, 39, 58, 40, 52, 70, 60, 47, + 12, 13, 27, 50, 27, 25, 29, 58, 52, 69, 66, 64, 50, 81, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 102, 97, 115, 83, 37, 40, 13, 26, + 36, 21, 21, 20, 17, 14, 15, 18, 20, 27, 22, 38, 38, 55, 51, 37, + 41, 57, 56, 43, 53, 78, 106, 129, 142, 152, 167, 137, 108, 56, 62, 68, + 96, 77, 70, 82, 80, 79, 81, 92, 72, 88, 70, 85, 71, 95, 90, 78, + 63, 86, 66, 70, 84, 84, 107, 127, 100, 65, 34, 38, 60, 81, 72, 51, + 62, 52, 65, 63, 54, 46, 46, 57, 48, 25, 26, 37, 28, 24, 30, 52, + 55, 79, 73, 67, 48, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, + 109, 107, 115, 73, 30, 37, 16, 26, 35, 19, 17, 17, 16, 16, 15, 16, + 11, 19, 13, 38, 53, 39, 36, 27, 42, 63, 85, 89, 119, 119, 80, 75, + 53, 49, 72, 45, 49, 17, 79, 82, 88, 91, 95, 107, 68, 72, 75, 92, + 58, 58, 40, 61, 49, 67, 60, 66, 77, 66, 93, 130, 142, 138, 133, 114, + 80, 36, 38, 56, 104, 123, 103, 95, 89, 61, 47, 65, 80, 96, 107, 73, + 20, 42, 25, 18, 31, 24, 33, 45, 59, 84, 79, 75, 54, 59, 120, 255, + 255, 255, 255, 255, 255, 255, 255, 154, 128, 129, 132, 79, 41, 43, 24, 23, + 30, 14, 16, 19, 18, 16, 13, 14, 13, 20, 17, 45, 60, 14, 16, 29, + 68, 105, 102, 87, 57, 27, 0, 22, 28, 131, 186, 177, 173, 87, 150, 144, + 140, 123, 137, 142, 69, 69, 64, 77, 29, 0, 0, 0, 13, 0, 0, 15, + 103, 119, 120, 38, 0, 77, 166, 167, 177, 98, 132, 136, 156, 145, 133, 168, + 162, 137, 48, 13, 14, 63, 130, 108, 55, 53, 23, 4, 34, 27, 37, 41, + 62, 76, 75, 80, 69, 72, 55, 255, 255, 255, 255, 255, 255, 255, 255, 140, + 124, 126, 127, 70, 43, 46, 34, 25, 31, 11, 18, 24, 21, 15, 11, 17, + 22, 35, 26, 45, 53, 6, 11, 30, 73, 111, 99, 110, 53, 26, 22, 44, + 52, 131, 193, 190, 185, 83, 162, 158, 133, 111, 141, 156, 86, 89, 79, 83, + 36, 0, 0, 5, 21, 0, 0, 33, 124, 117, 118, 38, 0, 91, 182, 162, + 167, 116, 151, 157, 177, 149, 123, 172, 168, 117, 54, 43, 41, 66, 116, 99, + 57, 55, 19, 2, 38, 32, 41, 43, 63, 71, 70, 80, 74, 80, 61, 255, + 255, 255, 255, 255, 255, 255, 211, 126, 118, 117, 118, 59, 42, 44, 35, 25, + 32, 17, 23, 28, 20, 10, 8, 19, 30, 43, 25, 28, 28, 7, 12, 15, + 39, 70, 38, 58, 2, 0, 21, 44, 43, 176, 223, 218, 217, 121, 202, 179, + 114, 138, 157, 151, 85, 70, 43, 37, 10, 0, 0, 25, 4, 14, 13, 21, + 26, 38, 36, 47, 49, 112, 184, 190, 197, 118, 121, 137, 194, 168, 114, 136, + 133, 90, 65, 56, 36, 33, 59, 68, 56, 42, 14, 8, 35, 38, 44, 48, + 57, 73, 69, 73, 64, 74, 61, 255, 255, 255, 255, 255, 255, 255, 126, 122, + 113, 111, 111, 51, 39, 38, 33, 20, 30, 29, 29, 26, 14, 6, 7, 22, + 30, 35, 18, 14, 0, 7, 5, 0, 10, 14, 0, 16, 0, 14, 23, 63, + 49, 153, 216, 242, 233, 113, 172, 155, 85, 78, 92, 82, 49, 41, 29, 36, + 48, 81, 81, 104, 76, 92, 91, 64, 24, 26, 0, 10, 22, 96, 183, 186, + 189, 140, 107, 109, 150, 115, 60, 75, 78, 42, 43, 25, 11, 10, 18, 32, + 19, 22, 7, 18, 30, 44, 47, 54, 48, 68, 68, 71, 56, 67, 59, 138, + 255, 255, 255, 255, 255, 215, 124, 115, 103, 104, 104, 41, 33, 33, 32, 19, + 35, 41, 35, 24, 12, 5, 9, 21, 30, 30, 22, 21, 0, 6, 0, 0, + 11, 16, 0, 9, 8, 18, 2, 73, 61, 171, 209, 226, 217, 120, 186, 163, + 73, 81, 91, 81, 68, 50, 23, 17, 38, 76, 85, 93, 95, 78, 89, 49, + 34, 14, 38, 37, 13, 97, 181, 175, 205, 128, 107, 127, 155, 118, 73, 77, + 72, 29, 49, 25, 21, 26, 23, 39, 25, 6, 0, 22, 24, 44, 44, 57, + 40, 57, 65, 71, 55, 66, 58, 75, 255, 255, 255, 255, 255, 139, 163, 126, + 127, 137, 116, 55, 27, 43, 24, 8, 37, 40, 32, 26, 22, 25, 24, 19, + 13, 13, 1, 1, 16, 26, 23, 17, 16, 28, 22, 29, 11, 11, 11, 35, + 29, 121, 168, 174, 176, 76, 101, 63, 32, 28, 17, 29, 38, 34, 14, 11, + 48, 97, 104, 89, 101, 108, 116, 56, 6, 0, 22, 12, 38, 32, 85, 92, + 108, 102, 59, 51, 53, 29, 22, 40, 40, 20, 14, 26, 25, 8, 9, 15, + 0, 14, 5, 19, 33, 31, 32, 43, 48, 58, 52, 52, 74, 46, 51, 67, + 255, 255, 255, 255, 255, 142, 169, 135, 130, 124, 104, 50, 17, 25, 19, 6, + 15, 30, 25, 21, 20, 24, 24, 19, 15, 10, 6, 12, 25, 27, 17, 8, + 8, 13, 1, 9, 2, 12, 11, 31, 22, 36, 54, 72, 72, 18, 32, 35, + 25, 32, 24, 29, 20, 15, 3, 0, 21, 66, 71, 74, 101, 107, 116, 56, + 0, 1, 8, 0, 23, 5, 32, 31, 56, 35, 13, 26, 40, 25, 24, 36, + 29, 29, 10, 5, 6, 12, 44, 65, 45, 25, 7, 9, 20, 23, 26, 36, + 36, 46, 44, 59, 85, 49, 48, 64, 255, 255, 255, 255, 218, 117, 137, 97, + 75, 84, 65, 29, 5, 13, 27, 28, 20, 21, 18, 18, 19, 22, 21, 18, + 13, 13, 12, 22, 37, 40, 34, 33, 38, 13, 0, 0, 0, 16, 11, 24, + 14, 7, 3, 44, 48, 38, 17, 35, 28, 24, 22, 22, 4, 2, 5, 3, + 22, 65, 62, 84, 114, 111, 120, 70, 0, 12, 8, 0, 32, 13, 19, 17, + 50, 45, 31, 35, 33, 14, 22, 36, 30, 7, 11, 17, 11, 9, 46, 69, + 53, 42, 12, 3, 10, 18, 24, 27, 22, 31, 30, 60, 86, 45, 38, 56, + 255, 255, 255, 255, 157, 132, 153, 109, 76, 83, 52, 27, 13, 10, 21, 26, + 9, 19, 18, 20, 20, 20, 19, 15, 12, 12, 10, 14, 27, 35, 40, 46, + 55, 27, 0, 5, 8, 22, 9, 20, 14, 17, 12, 54, 57, 62, 27, 34, + 19, 22, 19, 21, 7, 3, 6, 14, 39, 62, 48, 79, 101, 86, 98, 73, + 1, 0, 0, 0, 30, 18, 21, 25, 55, 72, 62, 53, 29, 7, 18, 35, + 31, 0, 15, 31, 18, 13, 49, 68, 43, 50, 19, 5, 10, 17, 21, 21, + 14, 40, 33, 65, 85, 50, 42, 62, 255, 255, 255, 255, 151, 134, 149, 95, + 61, 73, 33, 19, 22, 13, 14, 20, 9, 13, 14, 18, 18, 18, 16, 15, + 12, 27, 21, 22, 30, 39, 43, 45, 47, 31, 8, 13, 12, 21, 10, 26, + 26, 25, 23, 35, 35, 35, 28, 32, 24, 33, 24, 27, 16, 5, 0, 7, + 43, 65, 43, 77, 86, 67, 85, 92, 33, 0, 3, 5, 20, 13, 19, 23, + 35, 33, 42, 42, 24, 13, 21, 27, 16, 23, 19, 13, 1, 19, 78, 96, + 58, 54, 26, 15, 20, 22, 22, 22, 13, 31, 17, 39, 52, 38, 34, 56, + 255, 255, 255, 255, 127, 114, 113, 46, 25, 44, 10, 6, 20, 16, 12, 19, + 16, 4, 8, 14, 14, 14, 14, 16, 14, 32, 29, 35, 44, 53, 54, 47, + 43, 19, 4, 11, 7, 16, 9, 32, 38, 25, 30, 26, 23, 22, 30, 30, + 28, 29, 19, 21, 13, 3, 0, 5, 45, 80, 56, 86, 82, 67, 85, 106, + 57, 0, 9, 11, 10, 8, 19, 19, 16, 23, 35, 35, 22, 17, 22, 21, + 9, 25, 19, 12, 0, 16, 72, 90, 55, 54, 32, 24, 28, 29, 26, 23, + 15, 15, 2, 12, 17, 28, 27, 46, 255, 255, 255, 255, 123, 121, 110, 42, + 46, 33, 18, 15, 19, 14, 8, 7, 2, 5, 9, 15, 14, 12, 12, 17, + 18, 16, 19, 30, 39, 44, 44, 40, 39, 16, 3, 11, 1, 10, 10, 33, + 32, 21, 24, 23, 18, 25, 21, 17, 19, 24, 14, 13, 0, 0, 6, 18, + 47, 66, 47, 76, 71, 67, 79, 96, 47, 0, 0, 3, 1, 7, 15, 15, + 9, 38, 45, 37, 20, 19, 22, 17, 12, 12, 13, 15, 8, 18, 63, 75, + 41, 59, 35, 26, 31, 32, 30, 25, 12, 16, 13, 16, 12, 43, 35, 47, + 255, 255, 255, 255, 105, 97, 73, 0, 18, 7, 12, 16, 15, 19, 24, 23, + 16, 12, 16, 20, 17, 13, 12, 17, 16, 26, 29, 37, 39, 38, 40, 45, + 48, 22, 11, 15, 0, 9, 10, 27, 21, 28, 20, 18, 7, 26, 10, 19, + 28, 28, 21, 12, 0, 0, 17, 26, 41, 50, 37, 71, 70, 85, 96, 104, + 53, 5, 8, 10, 13, 21, 22, 24, 21, 14, 25, 21, 14, 21, 22, 14, + 7, 14, 0, 0, 1, 34, 90, 97, 55, 64, 36, 24, 31, 34, 32, 25, + 11, 8, 13, 12, 3, 41, 26, 31, 255, 255, 255, 255, 143, 151, 77, 10, + 19, 9, 12, 17, 23, 27, 24, 21, 20, 20, 17, 18, 17, 15, 15, 21, + 23, 34, 31, 35, 40, 44, 46, 49, 50, 35, 30, 35, 5, 2, 19, 3, + 4, 21, 26, 27, 24, 19, 17, 13, 9, 13, 17, 4, 12, 7, 39, 42, + 40, 40, 31, 50, 61, 74, 82, 69, 72, 45, 54, 0, 0, 23, 18, 31, + 15, 19, 16, 23, 25, 14, 13, 16, 9, 0, 1, 21, 17, 73, 87, 102, + 42, 60, 33, 14, 15, 20, 26, 24, 11, 9, 8, 16, 25, 31, 34, 42, + 255, 255, 255, 255, 151, 154, 78, 15, 14, 10, 10, 15, 23, 26, 19, 16, + 16, 18, 16, 17, 17, 16, 14, 20, 21, 27, 24, 29, 34, 40, 43, 45, + 46, 52, 43, 43, 17, 6, 16, 4, 7, 11, 15, 17, 16, 8, 1, 0, + 0, 5, 20, 21, 37, 31, 47, 39, 30, 43, 34, 54, 63, 76, 82, 68, + 72, 75, 76, 12, 0, 0, 0, 5, 0, 7, 7, 13, 15, 3, 1, 2, + 0, 6, 23, 53, 55, 99, 94, 93, 29, 61, 32, 13, 17, 23, 28, 25, + 13, 6, 7, 14, 24, 33, 36, 43, 255, 255, 255, 255, 154, 146, 70, 24, + 17, 16, 12, 17, 28, 29, 16, 11, 15, 16, 15, 17, 17, 16, 13, 18, + 18, 27, 25, 29, 36, 42, 44, 47, 47, 49, 38, 37, 18, 5, 0, 0, + 0, 5, 5, 8, 10, 1, 0, 0, 0, 0, 3, 9, 25, 24, 44, 50, + 50, 45, 39, 60, 68, 78, 82, 70, 70, 70, 71, 19, 2, 0, 0, 4, + 0, 2, 1, 7, 9, 0, 0, 0, 0, 0, 18, 51, 57, 91, 88, 96, + 51, 65, 30, 10, 20, 29, 29, 27, 22, 11, 9, 13, 22, 32, 37, 43, + 255, 255, 255, 255, 126, 108, 35, 16, 14, 27, 19, 23, 35, 34, 18, 12, + 17, 14, 13, 17, 18, 16, 12, 16, 18, 30, 28, 34, 39, 43, 45, 46, + 46, 51, 47, 48, 42, 29, 14, 5, 12, 0, 0, 0, 0, 0, 0, 0, + 13, 11, 31, 50, 65, 61, 52, 38, 31, 48, 46, 65, 71, 79, 83, 70, + 71, 78, 84, 55, 42, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 10, 49, 64, 82, 77, 85, 73, 82, 52, 68, 27, 6, 20, 31, 30, 34, + 34, 22, 18, 16, 20, 29, 34, 40, 255, 255, 255, 255, 141, 116, 38, 37, + 43, 33, 26, 28, 36, 34, 19, 13, 17, 15, 14, 16, 17, 15, 12, 15, + 17, 31, 28, 33, 38, 41, 41, 41, 39, 49, 51, 55, 65, 55, 33, 26, + 27, 37, 29, 25, 26, 25, 30, 48, 70, 78, 69, 62, 53, 44, 39, 50, + 60, 54, 50, 69, 73, 78, 82, 70, 70, 66, 77, 83, 91, 85, 74, 75, + 65, 37, 32, 33, 32, 31, 44, 64, 70, 84, 97, 104, 97, 87, 60, 60, + 38, 65, 24, 1, 12, 23, 24, 35, 40, 38, 32, 25, 20, 24, 29, 33, + 255, 255, 255, 255, 143, 118, 24, 22, 30, 34, 31, 30, 31, 28, 19, 14, + 14, 16, 15, 17, 17, 14, 11, 15, 20, 32, 32, 35, 39, 41, 42, 41, + 38, 40, 49, 51, 67, 65, 45, 44, 38, 23, 19, 13, 10, 13, 26, 42, + 55, 68, 59, 63, 56, 55, 32, 38, 43, 62, 60, 75, 74, 78, 81, 69, + 72, 70, 67, 76, 84, 73, 65, 67, 60, 25, 19, 20, 20, 18, 33, 52, + 60, 85, 90, 90, 88, 70, 50, 55, 43, 54, 22, 0, 5, 10, 17, 29, + 35, 43, 40, 32, 25, 24, 27, 30, 255, 255, 255, 255, 126, 117, 20, 16, + 32, 34, 36, 33, 25, 22, 20, 17, 11, 19, 16, 17, 16, 13, 11, 16, + 21, 31, 30, 35, 40, 41, 43, 43, 40, 48, 61, 57, 74, 82, 75, 87, + 76, 85, 86, 83, 78, 80, 93, 98, 95, 109, 80, 62, 39, 38, 18, 36, + 52, 69, 68, 80, 78, 77, 81, 71, 74, 67, 52, 66, 78, 80, 89, 101, + 99, 93, 89, 93, 94, 89, 96, 108, 109, 107, 104, 96, 95, 72, 46, 43, + 35, 48, 25, 7, 4, 3, 10, 22, 27, 36, 39, 38, 30, 27, 28, 29, + 255, 255, 255, 255, 76, 89, 4, 9, 35, 34, 40, 35, 22, 19, 22, 20, + 11, 19, 17, 15, 13, 12, 10, 16, 22, 25, 24, 30, 35, 40, 43, 42, + 40, 54, 63, 53, 70, 83, 88, 109, 101, 85, 95, 95, 87, 89, 97, 91, + 74, 83, 53, 48, 33, 42, 25, 42, 55, 74, 69, 83, 79, 79, 81, 72, + 77, 64, 39, 49, 58, 59, 73, 81, 80, 98, 99, 107, 109, 99, 96, 101, + 95, 86, 91, 96, 111, 88, 56, 35, 15, 49, 31, 14, 7, 2, 9, 21, + 21, 26, 37, 41, 37, 31, 32, 30, 255, 255, 255, 255, 85, 89, 12, 13, + 23, 31, 31, 30, 17, 8, 18, 24, 12, 15, 16, 13, 9, 9, 11, 16, + 18, 22, 13, 32, 43, 51, 51, 38, 45, 53, 59, 52, 60, 72, 82, 104, + 103, 94, 86, 92, 93, 85, 90, 82, 50, 51, 42, 38, 43, 41, 39, 54, + 72, 72, 65, 79, 71, 76, 73, 84, 71, 70, 75, 65, 67, 51, 63, 63, + 74, 77, 80, 85, 91, 93, 87, 85, 84, 87, 84, 86, 85, 62, 69, 43, + 34, 46, 30, 11, 7, 14, 19, 24, 25, 30, 32, 41, 41, 28, 24, 26, + 255, 255, 255, 255, 88, 98, 25, 18, 20, 27, 28, 27, 15, 7, 18, 25, + 12, 16, 14, 11, 7, 7, 9, 14, 16, 21, 14, 32, 43, 50, 53, 42, + 48, 55, 62, 54, 61, 74, 82, 102, 101, 93, 90, 96, 100, 92, 94, 84, + 54, 52, 36, 30, 38, 43, 43, 55, 69, 72, 65, 82, 78, 88, 84, 93, + 75, 77, 81, 67, 67, 48, 58, 56, 67, 79, 81, 86, 91, 94, 91, 85, + 84, 86, 83, 85, 85, 63, 74, 46, 39, 44, 28, 10, 7, 13, 17, 21, + 22, 27, 29, 41, 43, 32, 26, 28, 255, 255, 255, 255, 102, 113, 43, 24, + 15, 23, 23, 22, 12, 7, 20, 27, 15, 16, 14, 13, 9, 7, 9, 14, + 16, 21, 12, 30, 40, 48, 49, 40, 48, 49, 56, 51, 58, 70, 79, 98, + 97, 99, 97, 101, 98, 85, 80, 66, 40, 55, 34, 24, 33, 47, 50, 56, + 59, 65, 61, 84, 88, 104, 99, 103, 83, 79, 82, 69, 70, 50, 59, 58, + 70, 76, 74, 76, 81, 87, 88, 81, 77, 82, 77, 80, 78, 56, 66, 40, + 35, 40, 26, 11, 7, 14, 16, 17, 17, 25, 24, 37, 41, 32, 27, 27, + 255, 255, 255, 255, 107, 114, 49, 27, 14, 20, 19, 18, 9, 6, 21, 29, + 17, 17, 15, 13, 9, 7, 9, 13, 15, 19, 12, 29, 36, 42, 45, 39, + 48, 51, 60, 50, 59, 67, 74, 95, 93, 102, 105, 104, 97, 85, 73, 54, + 33, 34, 17, 4, 13, 25, 27, 29, 29, 50, 49, 78, 89, 111, 110, 110, + 87, 49, 51, 42, 49, 33, 44, 46, 62, 72, 72, 70, 75, 82, 87, 83, + 74, 80, 72, 75, 77, 52, 59, 32, 29, 35, 24, 10, 9, 15, 16, 14, + 13, 24, 23, 34, 40, 32, 27, 25, 255, 255, 255, 255, 109, 108, 51, 30, + 20, 22, 20, 19, 10, 7, 23, 32, 20, 17, 15, 14, 9, 7, 8, 15, + 17, 21, 12, 28, 35, 39, 42, 37, 48, 63, 67, 57, 61, 67, 72, 92, + 89, 100, 105, 104, 97, 92, 77, 60, 48, 47, 34, 25, 29, 34, 33, 33, + 32, 53, 53, 84, 98, 119, 117, 117, 92, 45, 48, 41, 54, 44, 57, 61, + 78, 74, 73, 70, 71, 80, 89, 88, 80, 81, 72, 76, 79, 54, 58, 30, + 26, 34, 23, 13, 13, 14, 15, 13, 15, 26, 26, 36, 38, 28, 23, 23, + 255, 255, 255, 255, 130, 118, 61, 37, 25, 25, 22, 19, 11, 8, 25, 34, + 21, 18, 16, 14, 9, 7, 8, 14, 16, 23, 16, 30, 34, 36, 39, 35, + 50, 65, 69, 55, 57, 60, 67, 84, 82, 95, 96, 87, 80, 78, 64, 44, + 38, 28, 18, 11, 11, 11, 8, 6, 4, 31, 33, 63, 70, 89, 83, 83, + 57, 9, 10, 8, 25, 17, 28, 31, 49, 60, 60, 57, 55, 62, 76, 80, + 75, 76, 66, 69, 74, 52, 52, 26, 22, 33, 25, 15, 15, 16, 16, 17, + 18, 32, 30, 38, 37, 22, 17, 20, 255, 255, 255, 255, 153, 135, 78, 46, + 28, 30, 26, 22, 12, 11, 28, 36, 22, 20, 18, 16, 12, 9, 10, 14, + 18, 27, 19, 33, 35, 35, 38, 35, 51, 65, 67, 51, 49, 54, 58, 79, + 78, 92, 92, 72, 59, 63, 48, 24, 21, 31, 22, 14, 11, 12, 9, 3, + 0, 0, 0, 22, 25, 38, 31, 33, 10, 0, 2, 1, 21, 12, 21, 22, + 39, 47, 50, 46, 40, 48, 66, 76, 75, 69, 57, 58, 66, 42, 49, 22, + 26, 33, 26, 16, 16, 18, 19, 20, 22, 36, 36, 42, 35, 16, 10, 16, + 255, 255, 255, 255, 152, 139, 86, 51, 29, 33, 28, 23, 13, 13, 29, 36, + 22, 20, 18, 16, 12, 9, 10, 14, 18, 31, 22, 34, 37, 35, 39, 37, + 53, 70, 70, 52, 52, 54, 61, 82, 82, 95, 91, 69, 57, 68, 54, 34, + 35, 34, 23, 13, 12, 15, 12, 5, 0, 4, 6, 31, 34, 45, 37, 40, + 22, 0, 0, 0, 21, 13, 21, 22, 39, 54, 57, 53, 45, 53, 72, 85, + 87, 72, 57, 57, 62, 43, 48, 29, 34, 35, 26, 17, 16, 20, 20, 22, + 25, 40, 40, 45, 33, 10, 4, 15, 255, 255, 255, 255, 139, 125, 87, 51, + 24, 29, 27, 19, 13, 17, 28, 35, 32, 25, 20, 14, 10, 11, 10, 10, + 7, 21, 18, 25, 36, 40, 35, 38, 44, 55, 55, 51, 42, 42, 55, 73, + 84, 88, 53, 35, 40, 40, 30, 27, 21, 20, 20, 20, 19, 18, 13, 9, + 3, 0, 6, 5, 22, 19, 22, 3, 11, 15, 7, 11, 28, 27, 15, 18, + 36, 33, 37, 37, 32, 37, 51, 66, 73, 60, 69, 47, 59, 45, 48, 39, + 26, 35, 25, 19, 19, 24, 26, 30, 39, 51, 50, 50, 33, 14, 17, 27, + 255, 255, 255, 255, 128, 104, 70, 44, 17, 21, 20, 15, 9, 11, 20, 27, + 26, 29, 23, 16, 11, 12, 13, 13, 14, 17, 15, 22, 33, 36, 34, 35, + 42, 40, 41, 41, 38, 40, 50, 62, 66, 66, 38, 24, 25, 22, 20, 18, + 13, 21, 19, 15, 12, 14, 18, 21, 21, 21, 26, 10, 12, 1, 10, 7, + 29, 20, 12, 13, 24, 24, 14, 13, 23, 30, 29, 21, 14, 16, 33, 49, + 59, 51, 61, 43, 53, 41, 42, 35, 23, 34, 26, 20, 20, 25, 27, 31, + 39, 52, 47, 45, 33, 19, 20, 107, 255, 255, 255, 255, 132, 92, 62, 49, + 20, 20, 21, 20, 15, 14, 20, 27, 29, 34, 27, 20, 14, 13, 15, 18, + 20, 15, 14, 21, 31, 34, 30, 33, 38, 28, 30, 33, 33, 37, 44, 48, + 47, 44, 28, 22, 17, 11, 15, 17, 10, 7, 10, 12, 13, 16, 17, 18, + 18, 13, 23, 14, 19, 6, 11, 8, 32, 22, 18, 16, 22, 25, 24, 21, + 22, 17, 20, 20, 19, 20, 25, 28, 27, 40, 55, 38, 51, 36, 37, 29, + 23, 33, 26, 19, 18, 23, 26, 32, 38, 54, 44, 39, 32, 25, 25, 255, + 255, 255, 255, 255, 135, 83, 56, 49, 20, 21, 22, 23, 19, 16, 18, 26, + 31, 36, 29, 21, 14, 13, 16, 20, 23, 18, 16, 22, 32, 33, 27, 28, + 36, 27, 30, 33, 35, 38, 43, 39, 34, 29, 26, 26, 20, 10, 16, 21, + 10, 17, 17, 17, 17, 17, 17, 18, 18, 7, 18, 17, 28, 19, 16, 8, + 26, 27, 24, 18, 13, 15, 18, 14, 8, 16, 19, 23, 24, 24, 22, 17, + 12, 38, 53, 42, 52, 35, 32, 28, 22, 28, 24, 18, 17, 22, 26, 31, + 35, 52, 40, 30, 30, 30, 29, 255, 255, 255, 255, 255, 119, 69, 46, 40, + 13, 19, 18, 17, 14, 11, 11, 18, 24, 36, 29, 19, 13, 13, 17, 20, + 23, 22, 18, 22, 29, 30, 23, 22, 28, 33, 34, 35, 33, 34, 36, 32, + 26, 14, 18, 27, 24, 14, 21, 26, 14, 22, 19, 15, 9, 7, 10, 17, + 23, 32, 30, 14, 19, 12, 14, 10, 32, 16, 19, 19, 16, 24, 37, 43, + 42, 31, 26, 18, 10, 7, 9, 14, 19, 40, 58, 44, 52, 32, 30, 27, + 21, 21, 20, 16, 14, 18, 23, 29, 31, 46, 34, 19, 19, 26, 23, 255, + 255, 255, 255, 91, 101, 65, 47, 38, 18, 20, 15, 12, 10, 8, 8, 14, + 21, 31, 26, 19, 14, 15, 16, 18, 19, 21, 18, 19, 27, 27, 19, 18, + 23, 30, 33, 33, 29, 28, 27, 25, 18, 8, 13, 26, 28, 21, 28, 34, + 26, 39, 44, 53, 56, 57, 52, 51, 51, 53, 49, 31, 42, 37, 42, 39, + 61, 47, 48, 46, 34, 25, 20, 22, 25, 30, 28, 23, 17, 11, 8, 14, + 23, 43, 59, 42, 47, 30, 27, 24, 17, 17, 16, 13, 12, 16, 23, 29, + 27, 36, 33, 13, 10, 20, 18, 255, 255, 255, 255, 74, 84, 65, 51, 35, + 23, 25, 16, 9, 9, 11, 11, 15, 21, 27, 24, 19, 17, 17, 17, 17, + 16, 19, 17, 20, 26, 27, 20, 19, 24, 26, 32, 35, 31, 28, 25, 24, + 20, 14, 16, 28, 32, 24, 28, 34, 31, 12, 24, 43, 53, 56, 50, 45, + 42, 25, 29, 25, 43, 39, 38, 31, 53, 29, 36, 46, 42, 29, 18, 23, + 34, 21, 25, 29, 29, 21, 13, 16, 25, 45, 56, 37, 42, 27, 26, 24, + 17, 13, 14, 14, 11, 16, 25, 29, 26, 35, 38, 16, 6, 19, 255, 255, + 255, 255, 255, 59, 68, 57, 44, 24, 16, 27, 14, 7, 8, 10, 9, 13, + 18, 25, 23, 20, 19, 20, 18, 16, 14, 18, 15, 19, 28, 29, 23, 25, + 30, 27, 35, 41, 38, 32, 30, 27, 24, 22, 17, 25, 29, 19, 18, 24, + 25, 31, 33, 38, 41, 43, 50, 58, 66, 84, 91, 85, 100, 89, 85, 82, + 111, 101, 105, 105, 86, 47, 8, 0, 3, 21, 22, 21, 16, 9, 5, 19, + 36, 47, 57, 36, 44, 27, 30, 26, 18, 15, 17, 17, 13, 17, 26, 30, + 27, 38, 44, 23, 9, 24, 255, 255, 255, 255, 206, 71, 69, 53, 37, 24, + 19, 21, 16, 12, 8, 8, 10, 12, 13, 21, 18, 16, 16, 17, 17, 13, + 10, 15, 6, 10, 21, 25, 22, 21, 25, 26, 31, 36, 37, 31, 27, 24, + 25, 13, 22, 28, 32, 27, 26, 18, 10, 9, 41, 55, 65, 74, 84, 101, + 92, 112, 110, 120, 131, 130, 119, 117, 125, 114, 109, 138, 98, 70, 30, 19, + 36, 48, 47, 46, 33, 13, 13, 24, 28, 43, 42, 37, 29, 28, 29, 26, + 19, 16, 24, 26, 20, 16, 22, 31, 37, 47, 54, 29, 10, 22, 255, 255, + 255, 255, 102, 73, 68, 53, 45, 25, 24, 24, 19, 13, 9, 9, 11, 12, + 13, 17, 16, 15, 17, 18, 18, 14, 9, 12, 5, 10, 20, 23, 17, 20, + 27, 27, 33, 38, 38, 34, 29, 27, 27, 35, 46, 55, 56, 51, 45, 34, + 25, 11, 28, 26, 27, 21, 16, 24, 12, 24, 17, 14, 19, 18, 14, 21, + 35, 31, 38, 76, 74, 72, 68, 71, 93, 68, 64, 62, 48, 30, 26, 35, + 36, 41, 40, 33, 26, 25, 27, 22, 17, 19, 25, 25, 20, 17, 25, 34, + 38, 53, 57, 30, 8, 14, 255, 255, 255, 255, 85, 74, 66, 52, 57, 28, + 34, 25, 20, 14, 10, 10, 11, 11, 12, 12, 13, 15, 18, 20, 19, 16, + 11, 11, 7, 13, 19, 20, 16, 18, 26, 25, 31, 35, 35, 33, 31, 30, + 30, 19, 31, 47, 46, 45, 33, 27, 18, 16, 25, 18, 21, 17, 8, 18, + 12, 31, 21, 18, 19, 15, 14, 24, 38, 40, 46, 62, 69, 58, 59, 48, + 61, 71, 63, 57, 46, 31, 28, 35, 33, 36, 35, 29, 22, 21, 23, 20, + 14, 20, 23, 19, 16, 19, 28, 33, 34, 42, 46, 26, 11, 96, 255, 255, + 255, 190, 53, 54, 46, 32, 46, 14, 24, 24, 20, 14, 10, 9, 10, 10, + 10, 8, 10, 14, 18, 20, 20, 17, 13, 11, 10, 16, 21, 19, 14, 17, + 26, 25, 27, 30, 31, 32, 33, 34, 31, 29, 39, 63, 63, 71, 59, 58, + 47, 32, 39, 38, 50, 51, 45, 64, 69, 53, 51, 54, 58, 55, 49, 51, + 57, 35, 43, 45, 65, 60, 76, 65, 74, 53, 43, 36, 33, 26, 26, 33, + 31, 35, 32, 27, 20, 20, 23, 20, 15, 19, 22, 18, 17, 22, 29, 29, + 25, 24, 30, 21, 15, 255, 255, 255, 255, 59, 46, 51, 46, 26, 40, 12, + 21, 22, 18, 13, 10, 9, 9, 9, 9, 6, 9, 14, 18, 20, 19, 17, + 14, 12, 14, 19, 20, 18, 14, 19, 25, 27, 27, 28, 29, 32, 35, 38, + 35, 11, 19, 48, 45, 62, 49, 53, 42, 47, 57, 57, 64, 60, 52, 72, + 81, 77, 82, 90, 94, 91, 84, 80, 81, 75, 77, 60, 75, 65, 74, 63, + 63, 44, 31, 26, 29, 28, 30, 38, 38, 34, 33, 27, 21, 22, 25, 23, + 18, 18, 19, 19, 19, 24, 28, 22, 15, 19, 23, 23, 20, 255, 255, 255, + 255, 63, 52, 53, 55, 27, 32, 18, 22, 20, 17, 13, 11, 11, 11, 11, + 10, 7, 11, 15, 18, 17, 16, 16, 14, 15, 15, 19, 19, 18, 18, 22, + 26, 30, 30, 29, 30, 33, 38, 42, 39, 14, 16, 45, 38, 61, 46, 53, + 41, 43, 55, 51, 56, 50, 47, 70, 76, 80, 84, 89, 89, 85, 81, 80, + 81, 74, 78, 63, 73, 76, 80, 82, 76, 45, 30, 26, 32, 31, 33, 42, + 43, 34, 32, 26, 21, 22, 26, 25, 19, 18, 20, 21, 21, 24, 24, 20, + 12, 21, 22, 26, 102, 255, 255, 255, 255, 39, 37, 30, 44, 13, 10, 15, + 12, 21, 18, 14, 13, 14, 14, 14, 14, 10, 13, 16, 17, 15, 13, 14, + 13, 18, 16, 18, 17, 20, 23, 25, 26, 29, 28, 26, 26, 30, 36, 40, + 38, 15, 10, 35, 25, 54, 39, 49, 33, 36, 45, 34, 35, 39, 48, 69, + 66, 73, 76, 78, 73, 68, 67, 69, 70, 68, 76, 65, 65, 72, 59, 69, + 54, 39, 26, 20, 27, 25, 25, 33, 36, 30, 30, 25, 21, 20, 25, 23, + 18, 19, 22, 21, 19, 20, 24, 23, 18, 16, 16, 21, 255, 255, 255, 255, + 255, 30, 34, 24, 48, 16, 10, 30, 23, 21, 19, 16, 15, 16, 17, 17, + 17, 12, 15, 17, 16, 13, 11, 13, 15, 19, 17, 17, 18, 22, 26, 28, + 26, 27, 24, 21, 21, 27, 33, 38, 36, 20, 12, 38, 23, 58, 42, 56, + 38, 42, 46, 23, 14, 22, 33, 49, 39, 35, 42, 42, 39, 35, 33, 33, + 33, 47, 56, 54, 51, 67, 46, 64, 45, 31, 18, 14, 20, 18, 18, 27, + 31, 29, 27, 22, 18, 20, 23, 22, 17, 22, 24, 21, 18, 19, 24, 26, + 25, 12, 9, 14, 255, 255, 255, 255, 255, 31, 22, 16, 16, 14, 9, 11, + 18, 16, 18, 20, 22, 22, 19, 17, 15, 9, 13, 19, 21, 21, 19, 17, + 16, 18, 18, 20, 20, 22, 23, 26, 25, 26, 20, 15, 15, 23, 27, 28, + 25, 15, 16, 23, 26, 32, 41, 53, 59, 55, 44, 33, 27, 31, 31, 28, + 24, 20, 18, 17, 18, 19, 22, 25, 26, 25, 33, 50, 57, 48, 42, 43, + 41, 30, 16, 19, 18, 22, 23, 12, 23, 25, 24, 19, 16, 18, 22, 22, + 23, 22, 20, 19, 21, 24, 25, 23, 20, 26, 16, 97, 255, 255, 255, 255, + 57, 30, 19, 15, 16, 16, 12, 13, 20, 14, 15, 17, 19, 19, 18, 16, + 15, 10, 14, 18, 20, 19, 18, 17, 17, 21, 21, 22, 22, 24, 24, 27, + 28, 23, 20, 16, 17, 22, 25, 25, 23, 16, 20, 25, 27, 33, 42, 56, + 66, 57, 48, 37, 33, 34, 33, 27, 25, 23, 22, 22, 26, 31, 31, 31, + 28, 38, 40, 53, 58, 52, 49, 47, 41, 30, 17, 20, 18, 23, 25, 15, + 23, 25, 22, 18, 16, 16, 19, 19, 20, 22, 21, 20, 22, 24, 25, 23, + 21, 26, 18, 255, 255, 255, 255, 255, 63, 25, 13, 10, 12, 15, 12, 14, + 17, 12, 12, 13, 14, 14, 15, 15, 15, 13, 15, 18, 18, 18, 17, 18, + 19, 20, 20, 20, 19, 21, 21, 22, 22, 21, 17, 15, 16, 19, 21, 19, + 18, 18, 23, 25, 23, 25, 34, 52, 67, 62, 56, 48, 46, 44, 43, 39, + 37, 34, 32, 33, 38, 44, 46, 41, 36, 42, 37, 47, 53, 48, 45, 41, + 31, 29, 18, 22, 18, 21, 26, 17, 25, 27, 24, 18, 16, 16, 18, 18, + 18, 21, 20, 19, 20, 22, 23, 20, 19, 33, 29, 255, 255, 255, 255, 255, + 50, 26, 12, 7, 11, 15, 13, 15, 16, 11, 10, 9, 9, 10, 12, 14, + 15, 16, 17, 18, 18, 17, 17, 19, 21, 18, 17, 17, 16, 18, 17, 18, + 18, 18, 15, 16, 15, 19, 18, 14, 12, 18, 25, 24, 19, 17, 24, 46, + 62, 64, 59, 57, 57, 57, 53, 50, 49, 48, 46, 43, 46, 50, 51, 46, + 40, 38, 37, 46, 52, 47, 41, 38, 25, 27, 19, 23, 17, 19, 29, 21, + 23, 29, 26, 22, 19, 18, 20, 19, 19, 20, 19, 18, 18, 19, 20, 18, + 17, 36, 38, 255, 255, 255, 255, 255, 39, 34, 16, 8, 11, 17, 16, 16, + 16, 10, 9, 8, 8, 9, 11, 13, 15, 18, 19, 19, 18, 17, 17, 19, + 22, 20, 20, 20, 19, 20, 20, 22, 22, 16, 15, 16, 15, 16, 14, 10, + 10, 18, 24, 23, 17, 16, 23, 45, 61, 61, 59, 60, 58, 55, 52, 50, + 49, 53, 50, 42, 40, 40, 41, 38, 35, 37, 40, 54, 60, 51, 42, 40, + 29, 23, 21, 25, 15, 18, 32, 22, 23, 28, 25, 22, 19, 19, 20, 19, + 19, 18, 18, 18, 18, 16, 17, 19, 21, 32, 106, 255, 255, 255, 255, 255, + 56, 38, 19, 6, 7, 13, 11, 11, 9, 11, 10, 9, 8, 9, 11, 12, + 14, 16, 17, 18, 17, 15, 15, 17, 19, 18, 17, 17, 17, 18, 18, 21, + 21, 18, 18, 17, 17, 14, 11, 7, 8, 18, 22, 23, 18, 18, 26, 45, + 59, 56, 56, 56, 55, 50, 44, 44, 44, 49, 43, 35, 27, 25, 24, 26, + 27, 33, 36, 51, 57, 45, 38, 34, 26, 23, 22, 27, 14, 18, 33, 24, + 19, 24, 22, 19, 17, 19, 19, 17, 17, 17, 18, 20, 22, 21, 25, 30, + 33, 42, 255, 255, 255, 255, 255, 255, 193, 47, 25, 7, 5, 11, 9, 8, + 6, 13, 11, 11, 11, 11, 11, 12, 12, 12, 14, 15, 15, 13, 12, 13, + 14, 14, 14, 14, 14, 16, 17, 20, 20, 20, 21, 19, 17, 13, 10, 7, + 9, 18, 20, 19, 15, 15, 22, 37, 44, 39, 41, 45, 44, 38, 33, 37, + 40, 41, 39, 33, 25, 19, 15, 21, 24, 30, 26, 34, 37, 29, 24, 19, + 10, 19, 23, 28, 12, 15, 32, 24, 17, 21, 20, 18, 17, 19, 20, 18, + 18, 15, 19, 24, 28, 31, 38, 45, 51, 126, 255, 255, 255, 255, 255, 255, + 255, 64, 39, 17, 13, 17, 16, 14, 13, 14, 13, 13, 12, 12, 12, 12, + 11, 9, 11, 14, 13, 12, 10, 11, 11, 17, 17, 17, 19, 20, 21, 24, + 25, 22, 22, 22, 18, 15, 13, 11, 11, 20, 20, 17, 14, 13, 17, 25, + 31, 21, 25, 32, 31, 28, 26, 30, 36, 41, 41, 37, 30, 22, 20, 25, + 30, 36, 26, 27, 27, 22, 21, 15, 1, 23, 25, 31, 13, 14, 34, 23, + 16, 22, 21, 19, 21, 22, 22, 23, 21, 15, 20, 27, 34, 39, 49, 58, + 66, 255, 255, 255, 255, 255, 255, 255, 255, 53, 41, 25, 17, 18, 20, 20, + 15, 15, 15, 16, 17, 16, 14, 12, 11, 11, 10, 12, 12, 12, 13, 14, + 15, 16, 17, 20, 23, 24, 23, 21, 20, 22, 22, 22, 20, 20, 19, 18, + 15, 18, 20, 22, 20, 22, 26, 31, 34, 33, 38, 41, 41, 33, 26, 33, + 43, 39, 39, 38, 39, 37, 36, 36, 37, 32, 32, 32, 30, 28, 25, 20, + 17, 24, 32, 31, 23, 20, 25, 23, 15, 19, 18, 18, 20, 23, 23, 24, + 22, 22, 26, 33, 36, 37, 42, 55, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 60, 47, 32, 23, 24, 24, 22, 16, 11, 11, 14, 16, 16, 16, 16, + 15, 13, 13, 12, 13, 15, 16, 16, 17, 17, 19, 21, 23, 23, 22, 21, + 20, 21, 21, 22, 22, 21, 20, 19, 17, 21, 23, 25, 26, 24, 23, 25, + 25, 20, 24, 34, 38, 34, 31, 37, 46, 50, 49, 47, 45, 43, 42, 40, + 41, 40, 36, 33, 29, 27, 23, 20, 20, 21, 29, 28, 19, 17, 22, 21, + 13, 19, 19, 20, 21, 24, 27, 30, 30, 15, 18, 28, 41, 51, 59, 132, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 53, 39, 31, 31, 28, 24, + 16, 11, 11, 13, 15, 16, 15, 16, 15, 13, 13, 13, 14, 16, 16, 17, + 17, 17, 18, 20, 21, 22, 21, 20, 19, 20, 21, 21, 21, 21, 20, 19, + 17, 16, 19, 24, 25, 22, 17, 15, 14, 8, 13, 25, 34, 35, 32, 39, + 49, 56, 52, 49, 42, 39, 37, 36, 37, 42, 36, 29, 23, 20, 19, 20, + 19, 19, 26, 25, 18, 17, 22, 21, 15, 23, 24, 23, 20, 16, 16, 19, + 21, 18, 18, 29, 47, 63, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 54, 42, 35, 35, 31, 26, 16, 15, 14, 15, 15, 14, 13, 12, + 11, 13, 14, 14, 15, 17, 17, 17, 17, 16, 17, 19, 20, 20, 20, 19, + 19, 19, 19, 20, 20, 20, 20, 19, 16, 14, 17, 23, 25, 23, 22, 21, + 18, 14, 17, 27, 33, 34, 33, 39, 47, 50, 48, 42, 38, 35, 35, 37, + 39, 43, 38, 29, 22, 20, 18, 19, 19, 23, 26, 26, 22, 21, 25, 24, + 20, 22, 24, 24, 20, 14, 13, 17, 21, 24, 22, 29, 43, 53, 127, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 40, 35, 35, 32, 24, + 16, 15, 14, 14, 14, 13, 12, 12, 11, 13, 14, 15, 16, 19, 18, 18, + 17, 16, 16, 17, 18, 18, 18, 18, 18, 17, 18, 19, 19, 19, 19, 19, + 16, 20, 22, 26, 27, 26, 27, 28, 30, 25, 24, 29, 31, 32, 31, 35, + 45, 43, 41, 36, 34, 32, 34, 41, 45, 40, 36, 30, 25, 24, 21, 21, + 19, 24, 26, 26, 24, 24, 26, 26, 24, 14, 18, 22, 23, 22, 25, 32, + 37, 25, 24, 28, 32, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 186, 39, 34, 35, 31, 23, 13, 12, 11, 11, 12, 13, 13, 15, + 15, 13, 15, 16, 18, 20, 19, 18, 18, 15, 15, 16, 16, 16, 17, 17, + 17, 16, 17, 18, 18, 19, 19, 18, 16, 20, 21, 23, 22, 19, 21, 26, + 26, 26, 24, 24, 27, 26, 27, 33, 42, 30, 30, 26, 25, 25, 29, 36, + 40, 37, 34, 30, 27, 25, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 14, 17, 21, 23, 23, 26, 30, 33, 25, 25, 30, 29, 22, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 35, 35, 31, 23, + 13, 12, 11, 11, 11, 12, 13, 15, 16, 14, 15, 17, 19, 21, 20, 19, + 18, 15, 15, 15, 15, 15, 16, 16, 17, 15, 16, 17, 18, 18, 18, 18, + 16, 15, 16, 18, 17, 15, 15, 19, 21, 24, 21, 22, 25, 25, 25, 30, + 37, 23, 22, 19, 19, 20, 24, 27, 31, 33, 30, 26, 23, 22, 24, 25, + 25, 23, 22, 22, 23, 22, 22, 21, 22, 19, 20, 21, 22, 21, 20, 19, + 17, 24, 26, 34, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 37, 36, 31, 23, 13, 16, 14, 13, 12, 11, 11, 12, + 12, 14, 15, 18, 19, 22, 21, 19, 18, 15, 14, 14, 14, 14, 15, 16, + 17, 15, 15, 16, 17, 18, 18, 18, 16, 14, 16, 20, 21, 20, 21, 24, + 24, 22, 21, 23, 28, 28, 26, 28, 34, 27, 25, 24, 22, 22, 23, 26, + 28, 31, 28, 22, 18, 19, 21, 25, 26, 25, 23, 23, 24, 24, 22, 22, + 23, 19, 19, 21, 24, 26, 26, 23, 18, 17, 20, 33, 37, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 40, 37, 28, + 16, 18, 14, 12, 12, 13, 15, 16, 15, 17, 15, 14, 17, 23, 25, 23, + 21, 18, 17, 16, 14, 14, 13, 13, 13, 14, 14, 14, 15, 16, 19, 21, + 21, 19, 20, 24, 23, 21, 19, 21, 23, 19, 17, 17, 19, 18, 23, 27, + 32, 31, 28, 27, 25, 23, 25, 27, 30, 30, 24, 22, 27, 28, 23, 23, + 26, 19, 20, 20, 20, 20, 20, 20, 20, 20, 22, 23, 23, 21, 23, 27, + 32, 31, 32, 43, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 41, 33, 22, 22, 19, 15, 13, 12, 11, 11, + 9, 12, 11, 12, 15, 21, 22, 20, 18, 17, 16, 15, 14, 13, 13, 13, + 14, 14, 14, 14, 15, 16, 19, 21, 21, 19, 20, 24, 23, 21, 21, 21, + 23, 23, 22, 20, 19, 17, 20, 26, 31, 32, 31, 31, 28, 27, 28, 31, + 33, 33, 27, 25, 27, 27, 22, 22, 23, 24, 23, 22, 21, 20, 19, 18, + 17, 16, 19, 22, 22, 22, 27, 36, 44, 48, 55, 72, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 33, + 23, 24, 21, 17, 14, 12, 10, 8, 6, 9, 9, 12, 15, 21, 22, 20, + 18, 16, 15, 14, 14, 14, 14, 14, 15, 14, 14, 14, 15, 16, 19, 21, + 21, 20, 19, 22, 22, 21, 21, 22, 21, 26, 23, 19, 17, 14, 16, 21, + 26, 29, 28, 29, 27, 26, 26, 27, 28, 31, 27, 23, 25, 25, 21, 18, + 19, 24, 23, 23, 22, 21, 20, 19, 18, 12, 16, 20, 19, 19, 24, 36, + 46, 43, 51, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 180, 20, 24, 21, 17, 15, 13, 11, 9, + 7, 8, 10, 14, 17, 22, 22, 21, 19, 18, 17, 16, 16, 16, 16, 17, + 17, 14, 14, 14, 15, 16, 19, 21, 23, 18, 17, 19, 19, 19, 19, 19, + 20, 20, 19, 18, 16, 14, 15, 17, 20, 24, 25, 25, 23, 23, 20, 19, + 17, 26, 23, 21, 20, 21, 19, 17, 16, 20, 20, 20, 21, 22, 22, 23, + 23, 16, 21, 25, 23, 19, 21, 31, 40, 31, 114, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 179, 25, 21, 19, 16, 13, 9, 6, 7, 10, 13, 16, 19, 19, 19, + 19, 21, 20, 20, 19, 19, 19, 19, 20, 14, 14, 14, 15, 16, 19, 21, + 23, 17, 17, 16, 16, 19, 19, 16, 16, 14, 17, 21, 21, 22, 18, 19, + 19, 26, 27, 26, 24, 22, 19, 17, 17, 23, 22, 22, 20, 22, 23, 22, + 19, 19, 19, 20, 20, 21, 22, 23, 23, 21, 26, 30, 28, 24, 24, 30, + 37, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 28, 24, 19, 14, 9, + 4, 6, 9, 11, 12, 14, 14, 15, 17, 25, 24, 23, 21, 20, 20, 20, + 20, 14, 14, 14, 15, 16, 19, 21, 23, 17, 16, 15, 15, 18, 18, 15, + 14, 12, 18, 24, 27, 28, 25, 22, 23, 31, 30, 30, 28, 26, 24, 25, + 24, 23, 23, 23, 21, 23, 27, 26, 23, 21, 21, 20, 20, 20, 19, 19, + 19, 15, 18, 21, 23, 23, 27, 33, 38, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 181, 28, 23, 17, 12, 7, 8, 10, 11, 10, 10, 10, 13, + 16, 27, 25, 24, 22, 20, 19, 19, 19, 14, 14, 14, 15, 16, 19, 21, + 23, 20, 17, 15, 16, 20, 20, 18, 14, 14, 19, 25, 28, 28, 24, 21, + 23, 26, 27, 27, 27, 27, 28, 31, 32, 24, 25, 23, 19, 21, 26, 25, + 20, 19, 19, 19, 19, 19, 18, 18, 18, 14, 13, 13, 16, 23, 32, 41, + 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 27, 23, 17, + 15, 12, 13, 13, 11, 8, 9, 15, 17, 25, 24, 22, 19, 17, 18, 17, + 17, 14, 14, 14, 15, 16, 17, 19, 21, 22, 19, 16, 17, 21, 22, 19, + 15, 15, 18, 22, 24, 23, 22, 20, 22, 19, 18, 19, 19, 21, 24, 30, + 32, 22, 24, 21, 16, 16, 20, 20, 13, 14, 15, 17, 18, 19, 21, 22, + 21, 24, 17, 13, 16, 28, 42, 55, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 36, 32, 26, 20, 14, 14, 16, 17, 15, 27, + 38, 22, 15, 13, 16, 18, 17, 20, 27, 21, 20, 16, 15, 14, 14, 16, + 18, 17, 18, 16, 16, 16, 17, 18, 17, 12, 14, 15, 17, 21, 24, 23, + 18, 20, 21, 22, 21, 20, 20, 24, 26, 18, 17, 15, 13, 12, 12, 14, + 13, 13, 16, 20, 23, 25, 27, 26, 25, 23, 5, 21, 23, 42, 61, 154, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, + 24, 28, 22, 19, 20, 19, 19, 30, 42, 24, 15, 14, 15, 17, 15, 16, + 21, 15, 15, 12, 13, 12, 13, 15, 18, 17, 19, 17, 16, 16, 17, 16, + 16, 11, 17, 20, 19, 18, 21, 22, 20, 22, 23, 24, 23, 20, 19, 21, + 23, 18, 16, 14, 13, 14, 12, 14, 13, 15, 16, 18, 20, 24, 28, 27, + 26, 30, 21, 19, 18, 32, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 39, 41, 36, 23, 27, 36, 44, 43, 37, 31, + 29, 18, 11, 12, 13, 16, 16, 18, 22, 16, 16, 13, 13, 13, 13, 14, + 17, 19, 20, 17, 17, 17, 17, 15, 16, 15, 23, 26, 24, 19, 20, 22, + 22, 23, 24, 25, 24, 23, 19, 18, 18, 20, 19, 17, 15, 15, 15, 16, + 16, 14, 14, 13, 16, 20, 22, 23, 23, 6, 16, 7, 18, 38, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, + 42, 46, 57, 72, 81, 79, 70, 55, 44, 22, 18, 17, 16, 19, 21, 22, + 24, 24, 23, 19, 18, 15, 15, 13, 13, 19, 21, 18, 17, 17, 17, 15, + 16, 16, 22, 22, 20, 17, 20, 20, 18, 18, 21, 23, 22, 21, 17, 15, + 14, 21, 20, 19, 17, 17, 17, 20, 19, 17, 15, 16, 17, 20, 21, 22, + 18, 16, 44, 28, 33, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 79, 80, 77, 75, 76, 68, + 59, 36, 30, 26, 20, 21, 22, 23, 21, 24, 23, 22, 20, 16, 15, 13, + 12, 19, 19, 18, 17, 15, 16, 16, 17, 15, 14, 10, 10, 16, 21, 18, + 11, 11, 14, 19, 20, 18, 15, 16, 16, 22, 21, 22, 20, 20, 21, 24, + 21, 18, 18, 19, 20, 21, 23, 20, 16, 26, 64, 49, 47, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 196, 69, 52, 30, 25, 21, 14, 15, 21, 25, + 23, 19, 18, 20, 18, 17, 16, 14, 13, 18, 18, 18, 18, 16, 17, 18, + 19, 21, 17, 10, 11, 19, 25, 21, 11, 9, 10, 15, 15, 14, 13, 15, + 16, 20, 19, 20, 19, 21, 22, 23, 22, 14, 11, 13, 13, 18, 18, 19, + 15, 18, 54, 54, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 181, 29, 22, 13, 13, 23, 27, 26, 19, 19, 21, 18, 17, 16, 14, + 14, 15, 15, 15, 15, 17, 18, 19, 20, 25, 23, 19, 17, 21, 26, 23, + 14, 10, 12, 13, 13, 14, 14, 16, 18, 19, 18, 19, 18, 18, 19, 22, + 19, 14, 9, 8, 11, 14, 22, 26, 27, 47, 66, 134, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 24, 18, 22, 25, + 21, 26, 25, 24, 22, 19, 17, 14, 12, 14, 14, 14, 15, 17, 19, 20, + 21, 21, 22, 19, 15, 14, 16, 15, 11, 14, 13, 14, 13, 13, 13, 16, + 18, 16, 15, 14, 13, 15, 16, 18, 15, 23, 15, 14, 14, 22, 32, 42, + 46, 61, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 22, 19, 23, 25, 17, 19, 22, 19, 14, 13, 14, + 15, 16, 16, 15, 15, 16, 18, 20, 21, 22, 21, 21, 19, 18, 17, 17, + 16, 17, 17, 16, 15, 16, 15, 14, 14, 17, 15, 14, 12, 14, 15, 16, + 12, 4, 17, 7, 10, 21, 23, 36, 36, 58, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, 22, + 24, 21, 21, 22, 18, 15, 12, 14, 15, 14, 13, 12, 12, 13, 14, 16, + 17, 23, 22, 21, 19, 18, 18, 18, 19, 18, 16, 17, 16, 16, 15, 15, + 15, 11, 11, 12, 13, 14, 17, 19, 14, 3, 13, 0, 6, 25, 39, 63, + 72, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 179, 29, 28, 27, 22, 19, 17, 18, + 19, 17, 16, 14, 13, 14, 15, 18, 19, 21, 20, 18, 17, 18, 19, 19, + 20, 19, 17, 19, 17, 16, 16, 15, 15, 9, 10, 10, 12, 13, 15, 17, + 13, 0, 14, 11, 25, 44, 53, 132, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 30, 28, 24, 21, 20, 19, 20, 20, 21, 19, 17, 17, 17, 20, + 20, 18, 17, 14, 13, 14, 15, 16, 17, 18, 18, 19, 19, 17, 17, 16, + 14, 8, 7, 7, 9, 9, 10, 11, 4, 17, 36, 39, 57, 77, 137, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 22, 20, 19, 19, + 19, 23, 21, 19, 16, 16, 16, 18, 18, 19, 17, 16, 14, 13, 14, 18, + 20, 20, 20, 20, 19, 18, 17, 16, 14, 4, 4, 4, 5, 6, 7, 9, + 3, 8, 24, 23, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 180, 29, 28, 29, 29, 26, 23, 22, 21, 22, + 22, 25, 22, 21, 17, 16, 17, 21, 22, 21, 21, 22, 21, 20, 18, 17, + 13, 9, 8, 8, 12, 18, 24, 28, 27, 33, 51, 122, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 184, 38, 37, 34, 30, 29, 27, 28, 28, 29, 26, 23, 19, 17, 18, 21, + 23, 20, 21, 22, 21, 21, 19, 18, 14, 11, 11, 12, 17, 27, 37, 47, + 48, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 35, 31, 27, 24, 24, 23, + 24, 26, 25, 20, 15, 13, 13, 15, 17, 16, 19, 18, 17, 18, 15, 14, + 12, 4, 3, 4, 10, 20, 31, 114, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 179, 26, 27, 26, 25, 26, 23, 24, 20, 14, 10, 12, 12, + 12, 16, 19, 12, 3, 3, 9, 16, 15, 16, 14, 97, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 25, + 29, 29, 28, 24, 16, 15, 16, 15, 13, 16, 17, 18, 20, 22, 23, 26, + 26, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 22, 26, 31, 29, + 23, 20, 19, 23, 33, 37, 107, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy4' of size 141x151x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy4[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 74, 86, 88, 35, 37, 86, 134, 52, 30, 50, 80, 68, 81, + 68, 74, 82, 89, 94, 100, 121, 185, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 113, 127, 116, 126, 151, 162, + 180, 175, 164, 77, 71, 85, 113, 136, 139, 134, 113, 102, 151, 151, 136, 122, + 130, 132, 131, 152, 182, 198, 205, 239, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 204, 85, 73, 102, 101, 112, 156, 194, 202, 196, 206, 192, 160, 173, 152, + 169, 164, 190, 176, 153, 159, 138, 152, 160, 187, 176, 139, 135, 145, 148, 144, + 162, 192, 204, 194, 202, 215, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 106, 121, 131, + 145, 141, 177, 189, 203, 209, 220, 196, 181, 186, 159, 166, 152, 178, 195, 210, + 205, 163, 156, 152, 208, 209, 183, 169, 174, 152, 161, 166, 163, 178, 203, 213, + 206, 189, 195, 205, 216, 231, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 194, 85, 98, 108, 74, 84, 104, 135, 146, 206, + 224, 217, 189, 195, 178, 177, 165, 165, 170, 182, 193, 213, 174, 168, 188, 198, + 197, 185, 160, 166, 152, 171, 169, 171, 166, 153, 151, 158, 162, 155, 182, 182, + 185, 189, 193, 197, 206, 226, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 48, 46, 64, 67, 78, 114, 119, 142, 149, 157, 151, 191, 195, 199, 173, + 177, 164, 178, 163, 176, 215, 169, 190, 168, 174, 192, 199, 177, 209, 227, 214, + 203, 145, 188, 172, 171, 163, 149, 142, 144, 147, 147, 164, 151, 136, 128, 130, + 142, 159, 174, 201, 215, 231, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 124, 110, 109, + 92, 102, 138, 154, 157, 181, 144, 178, 237, 203, 203, 179, 152, 162, 167, 154, + 182, 191, 168, 165, 166, 179, 166, 199, 160, 160, 183, 202, 185, 165, 173, 191, + 179, 150, 124, 124, 132, 134, 136, 141, 129, 166, 152, 128, 141, 135, 118, 131, + 143, 171, 214, 202, 200, 230, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 205, 126, 116, 137, 135, 159, 172, 196, 233, + 201, 232, 223, 218, 194, 200, 195, 173, 155, 165, 170, 154, 185, 152, 151, 155, + 162, 159, 172, 170, 170, 147, 172, 185, 171, 163, 184, 187, 162, 128, 147, 151, + 138, 137, 151, 154, 143, 133, 142, 129, 130, 154, 145, 115, 108, 111, 111, 139, + 166, 184, 192, 194, 226, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 100, 115, 117, 134, 197, 192, 226, 225, 219, 235, 224, 235, 231, 209, + 188, 175, 186, 169, 171, 188, 160, 169, 146, 148, 150, 160, 189, 171, 129, 126, + 166, 170, 179, 157, 151, 166, 183, 195, 183, 156, 161, 164, 168, 165, 151, 137, + 134, 137, 144, 155, 159, 142, 110, 94, 116, 152, 144, 116, 97, 122, 146, 153, + 172, 184, 189, 233, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 78, 54, + 96, 121, 154, 230, 198, 231, 211, 226, 219, 187, 202, 178, 161, 122, 127, 153, + 137, 151, 188, 153, 195, 187, 177, 178, 170, 174, 160, 167, 172, 205, 186, 203, + 183, 194, 209, 178, 135, 142, 172, 190, 182, 178, 171, 149, 129, 142, 167, 180, + 140, 120, 129, 141, 150, 135, 103, 113, 119, 107, 134, 155, 158, 172, 158, 150, + 151, 193, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 210, 67, 42, 83, 93, 120, 196, 189, 244, + 217, 210, 208, 215, 205, 185, 191, 131, 145, 139, 117, 107, 120, 153, 156, 182, + 190, 222, 180, 186, 159, 160, 140, 141, 192, 190, 194, 169, 156, 149, 154, 161, + 158, 157, 158, 151, 150, 171, 169, 132, 104, 109, 131, 145, 139, 130, 137, 133, + 122, 139, 151, 131, 102, 117, 111, 129, 139, 137, 163, 160, 151, 135, 140, 171, + 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 75, 103, 110, 113, 153, 146, 186, 218, 198, 221, 187, 193, 206, + 209, 185, 159, 173, 139, 148, 162, 133, 154, 177, 183, 185, 193, 176, 190, 149, + 135, 148, 164, 134, 140, 180, 169, 177, 175, 185, 198, 201, 172, 138, 133, 138, + 128, 128, 126, 122, 114, 110, 110, 109, 105, 135, 131, 132, 119, 109, 135, 156, + 145, 149, 133, 110, 108, 97, 87, 119, 148, 157, 136, 136, 157, 166, 165, 194, + 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 149, 126, + 132, 143, 183, 185, 206, 215, 211, 177, 180, 164, 183, 190, 220, 192, 193, 181, + 171, 196, 176, 177, 141, 180, 217, 162, 161, 163, 129, 144, 150, 139, 171, 168, + 131, 166, 190, 192, 207, 197, 179, 155, 136, 127, 120, 118, 110, 91, 115, 96, + 97, 119, 131, 120, 114, 120, 115, 119, 130, 133, 130, 134, 134, 120, 134, 120, + 121, 120, 116, 112, 109, 125, 134, 125, 126, 143, 158, 156, 137, 120, 144, 188, + 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 225, 166, 124, 133, 166, 183, 187, 224, + 191, 184, 221, 210, 173, 179, 176, 164, 189, 193, 163, 197, 210, 211, 189, 185, + 146, 140, 121, 159, 133, 137, 153, 164, 138, 113, 132, 154, 171, 171, 212, 166, + 145, 179, 178, 155, 150, 139, 115, 98, 108, 115, 102, 82, 108, 120, 99, 73, + 69, 84, 96, 114, 105, 104, 113, 120, 122, 125, 127, 133, 127, 134, 116, 128, + 157, 137, 127, 104, 107, 108, 116, 136, 144, 116, 75, 81, 87, 99, 128, 184, + 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 238, 231, 193, 163, 145, 149, 179, 203, 197, 170, 209, 176, 185, 150, + 165, 179, 160, 156, 175, 191, 207, 203, 195, 211, 192, 146, 132, 123, 161, 126, + 150, 138, 135, 148, 163, 178, 198, 218, 208, 170, 163, 136, 124, 107, 139, 142, + 133, 128, 110, 107, 114, 99, 88, 103, 119, 87, 67, 60, 53, 59, 75, 84, + 81, 95, 108, 113, 110, 111, 120, 129, 127, 123, 116, 110, 105, 101, 97, 94, + 97, 89, 102, 113, 107, 109, 113, 97, 93, 106, 81, 82, 93, 94, 133, 179, + 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 233, + 215, 170, 131, 135, 160, 197, 170, 152, 196, 147, 155, 148, 138, 165, 152, 179, + 185, 183, 183, 212, 156, 182, 144, 166, 139, 115, 91, 107, 155, 132, 147, 161, + 167, 168, 173, 182, 189, 206, 177, 167, 142, 128, 94, 90, 78, 76, 67, 54, + 54, 64, 65, 65, 72, 57, 52, 62, 76, 75, 72, 65, 55, 73, 84, 94, + 100, 101, 100, 102, 104, 111, 107, 102, 97, 94, 90, 86, 83, 73, 84, 97, + 97, 82, 77, 86, 88, 97, 110, 97, 92, 91, 84, 83, 81, 78, 121, 220, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 236, 160, 203, 203, 170, 189, 188, 142, + 144, 154, 159, 146, 145, 164, 150, 140, 130, 170, 196, 203, 201, 150, 144, 126, + 183, 190, 176, 138, 138, 105, 117, 135, 110, 84, 98, 112, 123, 131, 145, 157, + 148, 130, 112, 114, 118, 105, 100, 73, 73, 82, 60, 52, 50, 52, 57, 71, + 77, 68, 39, 41, 56, 68, 70, 74, 70, 55, 73, 72, 71, 73, 78, 84, + 88, 91, 90, 88, 85, 83, 82, 79, 75, 74, 75, 79, 76, 75, 80, 81, + 79, 82, 89, 106, 122, 114, 109, 106, 96, 106, 66, 39, 55, 142, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 211, 113, 183, 192, 194, 187, 174, 148, 157, 174, 128, 133, + 155, 177, 136, 134, 112, 99, 138, 140, 156, 143, 124, 157, 157, 174, 169, 135, + 142, 131, 136, 121, 91, 95, 65, 98, 108, 120, 134, 148, 148, 127, 102, 113, + 98, 80, 92, 133, 127, 93, 74, 58, 55, 63, 61, 54, 68, 75, 54, 56, + 53, 52, 48, 47, 63, 73, 64, 64, 64, 64, 67, 73, 79, 84, 87, 80, + 79, 79, 79, 79, 77, 73, 70, 80, 83, 68, 66, 89, 98, 93, 104, 98, + 93, 106, 99, 113, 122, 89, 88, 87, 73, 109, 157, 200, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 158, + 167, 221, 193, 159, 159, 180, 214, 183, 151, 174, 177, 158, 130, 135, 172, 165, + 121, 151, 150, 150, 140, 143, 156, 182, 147, 154, 146, 92, 77, 88, 84, 116, + 114, 103, 115, 95, 105, 120, 141, 148, 129, 97, 77, 73, 54, 80, 91, 100, + 101, 80, 52, 55, 50, 49, 57, 47, 33, 46, 56, 37, 48, 46, 48, 44, + 41, 55, 63, 56, 52, 59, 68, 75, 78, 79, 78, 77, 76, 75, 75, 75, + 75, 74, 71, 69, 66, 79, 72, 66, 80, 86, 100, 128, 104, 76, 74, 82, + 127, 150, 98, 73, 70, 104, 152, 176, 174, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 188, 176, 157, 172, 168, + 172, 146, 165, 183, 174, 195, 187, 147, 182, 192, 173, 184, 172, 176, 164, 158, + 148, 133, 160, 147, 153, 94, 105, 112, 111, 107, 113, 144, 128, 86, 94, 91, + 122, 152, 144, 139, 132, 110, 82, 73, 79, 60, 73, 75, 90, 91, 90, 69, + 65, 50, 49, 47, 35, 28, 41, 53, 47, 39, 37, 44, 48, 47, 58, 66, + 61, 65, 64, 62, 61, 63, 70, 78, 83, 73, 72, 70, 69, 69, 67, 64, + 62, 64, 66, 61, 59, 72, 85, 98, 112, 95, 94, 99, 107, 134, 146, 122, + 113, 107, 122, 152, 192, 189, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 245, 219, 233, 207, 196, 200, 181, 147, 134, 197, + 200, 164, 174, 174, 145, 150, 158, 158, 156, 152, 215, 173, 168, 169, 188, 200, + 145, 134, 129, 133, 109, 101, 140, 90, 108, 154, 147, 138, 113, 157, 132, 110, + 85, 70, 67, 65, 63, 61, 61, 77, 83, 86, 52, 59, 70, 87, 46, 46, + 36, 29, 37, 44, 43, 43, 46, 38, 43, 50, 50, 59, 72, 76, 74, 63, + 50, 46, 53, 67, 79, 86, 70, 67, 63, 61, 59, 57, 54, 53, 66, 51, + 49, 58, 71, 87, 92, 83, 103, 130, 127, 115, 98, 88, 106, 123, 125, 128, + 135, 181, 189, 184, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 231, 202, 191, 216, 178, 159, 157, 177, 175, 166, 167, 160, 188, 191, + 172, 177, 156, 139, 155, 147, 206, 179, 190, 181, 157, 126, 113, 108, 115, 107, + 123, 139, 101, 101, 142, 146, 175, 136, 120, 121, 103, 87, 93, 87, 71, 63, + 64, 62, 54, 59, 54, 53, 73, 55, 77, 75, 66, 48, 52, 40, 39, 59, + 57, 38, 36, 48, 38, 45, 56, 55, 56, 66, 71, 56, 50, 48, 56, 71, + 79, 76, 70, 70, 66, 60, 56, 54, 52, 49, 47, 48, 42, 57, 68, 61, + 70, 84, 78, 112, 133, 106, 92, 79, 75, 115, 135, 138, 191, 182, 158, 146, + 180, 171, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 161, + 146, 143, 166, 151, 194, 153, 145, 137, 131, 173, 170, 181, 161, 178, 175, 136, + 115, 136, 148, 183, 181, 172, 138, 137, 136, 149, 104, 120, 89, 90, 86, 126, + 126, 163, 203, 121, 148, 80, 96, 85, 69, 68, 75, 73, 58, 56, 63, 63, + 51, 50, 56, 67, 71, 64, 55, 53, 42, 44, 47, 46, 41, 38, 38, 40, + 49, 44, 42, 44, 44, 44, 47, 52, 50, 49, 48, 49, 53, 58, 64, 68, + 74, 59, 54, 64, 64, 50, 43, 47, 44, 47, 51, 53, 56, 64, 77, 88, + 85, 90, 102, 112, 118, 121, 129, 138, 161, 162, 159, 151, 149, 160, 178, 192, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 180, 209, 219, 189, 167, 202, + 203, 195, 135, 150, 214, 218, 212, 192, 187, 180, 166, 160, 120, 127, 149, 198, + 197, 214, 165, 170, 176, 152, 166, 129, 117, 111, 117, 118, 120, 139, 105, 93, + 91, 74, 85, 90, 66, 74, 70, 74, 72, 59, 56, 60, 56, 57, 53, 54, + 61, 63, 57, 53, 50, 64, 61, 55, 45, 36, 33, 35, 39, 39, 35, 33, + 35, 36, 35, 38, 42, 42, 41, 40, 40, 42, 47, 52, 55, 67, 55, 48, + 52, 53, 46, 42, 45, 34, 37, 41, 42, 43, 50, 61, 70, 76, 97, 122, + 134, 127, 118, 123, 135, 130, 138, 146, 149, 148, 148, 150, 152, 155, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 223, 180, 203, 195, 185, 188, 235, 223, 202, 191, 207, + 247, 213, 240, 178, 154, 162, 168, 123, 152, 172, 194, 230, 223, 197, 198, 218, + 190, 149, 126, 140, 126, 111, 124, 115, 121, 107, 118, 137, 146, 117, 100, 71, + 67, 67, 63, 59, 63, 62, 52, 51, 55, 50, 62, 56, 52, 53, 52, 50, + 50, 50, 60, 55, 48, 38, 31, 29, 34, 40, 34, 30, 30, 32, 33, 32, + 34, 39, 40, 38, 36, 36, 37, 41, 44, 47, 55, 48, 41, 37, 39, 41, + 42, 41, 37, 38, 39, 38, 38, 43, 52, 59, 84, 97, 110, 112, 101, 92, + 99, 113, 114, 125, 140, 151, 151, 142, 132, 126, 132, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 145, 143, 153, 180, 196, 184, 214, 204, 176, 174, 168, 206, 202, 160, 137, + 169, 191, 159, 146, 166, 217, 224, 237, 233, 195, 191, 153, 145, 122, 142, 136, + 104, 73, 87, 129, 130, 130, 108, 84, 124, 146, 101, 131, 105, 82, 40, 52, + 51, 59, 60, 50, 52, 59, 58, 61, 57, 52, 48, 47, 47, 49, 49, 46, + 44, 44, 39, 34, 32, 34, 37, 36, 33, 33, 36, 37, 35, 37, 40, 40, + 39, 37, 36, 36, 38, 41, 43, 44, 45, 40, 32, 34, 42, 43, 38, 44, + 44, 43, 42, 42, 46, 52, 57, 77, 73, 70, 72, 73, 73, 77, 83, 94, + 101, 115, 128, 131, 125, 116, 112, 127, 180, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 133, 143, + 178, 215, 221, 203, 201, 169, 213, 209, 165, 190, 156, 205, 228, 161, 109, 127, + 162, 218, 236, 244, 202, 199, 177, 112, 123, 121, 132, 112, 127, 132, 113, 98, + 62, 62, 105, 139, 176, 157, 156, 139, 111, 133, 119, 45, 67, 66, 75, 74, + 59, 58, 67, 68, 53, 52, 50, 46, 45, 46, 48, 48, 53, 51, 48, 41, + 34, 29, 30, 32, 34, 31, 32, 36, 36, 33, 33, 36, 32, 31, 29, 28, + 29, 30, 32, 34, 37, 43, 42, 34, 35, 43, 43, 35, 40, 40, 38, 36, + 39, 41, 47, 51, 48, 46, 51, 61, 69, 71, 72, 74, 79, 84, 98, 115, + 124, 122, 121, 123, 139, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 133, 121, 162, 239, 235, 202, + 216, 184, 206, 198, 232, 240, 255, 225, 166, 159, 166, 162, 156, 142, 190, 183, + 175, 195, 143, 109, 121, 146, 126, 117, 133, 108, 115, 98, 102, 105, 146, 178, + 167, 136, 122, 149, 140, 127, 109, 126, 104, 85, 82, 87, 82, 64, 58, 63, + 62, 46, 50, 50, 46, 44, 46, 47, 45, 53, 48, 42, 33, 26, 25, 31, + 36, 34, 32, 33, 37, 37, 32, 31, 32, 28, 28, 27, 27, 28, 29, 31, + 33, 38, 44, 45, 41, 40, 44, 42, 35, 38, 37, 34, 33, 35, 37, 41, + 43, 45, 48, 54, 56, 55, 56, 68, 81, 70, 76, 94, 116, 127, 127, 129, + 136, 141, 127, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 202, 135, 139, 137, 168, 205, 184, 179, 228, 156, 224, + 202, 240, 219, 167, 183, 148, 165, 138, 149, 155, 148, 157, 159, 184, 143, 157, + 129, 131, 102, 120, 106, 126, 104, 109, 111, 105, 116, 131, 155, 117, 137, 128, + 144, 124, 148, 102, 95, 80, 81, 72, 72, 69, 56, 53, 53, 45, 43, 48, + 49, 43, 40, 42, 44, 41, 40, 38, 35, 30, 27, 28, 35, 41, 36, 34, + 36, 39, 38, 32, 29, 30, 27, 27, 27, 28, 29, 32, 34, 35, 41, 43, + 44, 43, 41, 40, 38, 36, 40, 38, 35, 33, 33, 34, 37, 38, 52, 50, + 50, 49, 48, 51, 66, 81, 64, 69, 85, 104, 110, 107, 111, 122, 122, 132, + 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 189, 90, 139, 132, 148, 167, 183, 206, 197, 147, 215, 204, 214, 167, 175, + 202, 157, 172, 148, 128, 143, 117, 146, 184, 196, 183, 180, 159, 144, 123, 135, + 110, 110, 116, 147, 115, 122, 121, 163, 157, 196, 163, 141, 125, 116, 133, 65, + 104, 107, 85, 68, 54, 51, 53, 50, 52, 50, 37, 43, 48, 48, 39, 35, + 38, 41, 39, 36, 40, 43, 42, 38, 35, 35, 37, 34, 32, 33, 36, 35, + 28, 24, 25, 23, 23, 24, 26, 28, 31, 33, 35, 45, 43, 43, 43, 40, + 36, 35, 37, 41, 38, 35, 32, 31, 31, 33, 32, 37, 34, 38, 52, 67, + 71, 70, 68, 82, 83, 92, 103, 102, 96, 103, 119, 100, 119, 134, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 125, 176, + 200, 225, 211, 171, 212, 237, 188, 187, 142, 156, 147, 165, 130, 145, 174, 161, + 140, 108, 107, 154, 179, 150, 135, 159, 132, 130, 141, 127, 134, 119, 130, 129, + 102, 114, 135, 149, 169, 179, 157, 134, 120, 123, 103, 104, 98, 123, 108, 94, + 75, 62, 55, 59, 56, 47, 45, 50, 57, 54, 51, 45, 40, 31, 36, 41, + 36, 39, 37, 31, 32, 38, 40, 37, 27, 34, 43, 46, 37, 23, 18, 20, + 25, 23, 23, 25, 30, 35, 38, 39, 35, 39, 43, 44, 43, 40, 39, 38, + 36, 41, 43, 40, 34, 34, 40, 48, 35, 40, 46, 56, 66, 71, 70, 68, + 69, 65, 67, 75, 84, 90, 97, 105, 102, 101, 119, 126, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 193, 183, 171, 210, 230, 195, + 170, 191, 191, 172, 168, 186, 189, 172, 167, 177, 160, 142, 122, 141, 153, 167, + 174, 164, 145, 129, 124, 146, 132, 121, 131, 135, 132, 118, 112, 161, 152, 130, + 147, 156, 143, 150, 139, 110, 140, 167, 153, 126, 96, 83, 74, 82, 66, 55, + 57, 55, 49, 48, 53, 53, 47, 40, 40, 40, 37, 37, 38, 35, 37, 36, + 31, 31, 36, 39, 36, 41, 32, 27, 31, 36, 34, 26, 21, 17, 19, 22, + 25, 29, 32, 34, 36, 46, 47, 49, 47, 44, 40, 38, 38, 37, 38, 38, + 36, 35, 36, 38, 40, 35, 37, 42, 49, 56, 59, 58, 56, 54, 51, 54, + 63, 72, 80, 90, 98, 96, 97, 117, 126, 177, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 237, 178, 201, 200, 201, 195, 200, 158, 167, 196, 205, + 230, 225, 159, 143, 173, 155, 142, 123, 135, 128, 121, 117, 107, 89, 87, 114, + 134, 128, 107, 114, 109, 128, 108, 116, 114, 134, 160, 174, 201, 165, 155, 178, + 157, 156, 194, 136, 122, 129, 149, 104, 96, 99, 79, 61, 48, 48, 48, 46, + 46, 50, 52, 41, 33, 37, 42, 41, 36, 33, 34, 35, 33, 30, 30, 35, + 37, 36, 42, 41, 40, 37, 28, 19, 20, 26, 21, 26, 30, 32, 31, 31, + 32, 35, 42, 42, 42, 39, 34, 31, 30, 30, 35, 33, 31, 32, 35, 37, + 35, 33, 33, 35, 38, 43, 47, 47, 45, 43, 48, 46, 48, 55, 64, 71, + 82, 92, 93, 91, 107, 112, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 185, 130, 110, 116, 154, 211, 217, 209, 187, 197, 207, 200, 186, 147, 157, + 159, 150, 123, 161, 140, 99, 134, 159, 147, 151, 159, 152, 149, 149, 141, 126, + 133, 118, 102, 84, 119, 165, 209, 199, 160, 103, 132, 151, 124, 131, 108, 108, + 129, 142, 122, 131, 126, 102, 51, 69, 54, 42, 42, 45, 46, 46, 47, 51, + 42, 35, 38, 42, 39, 34, 30, 34, 34, 32, 30, 31, 33, 36, 36, 32, + 39, 47, 45, 32, 19, 20, 28, 33, 36, 39, 36, 30, 26, 29, 32, 41, + 41, 40, 37, 34, 33, 34, 36, 28, 27, 28, 30, 33, 35, 33, 32, 32, + 34, 36, 39, 41, 40, 38, 36, 48, 45, 46, 51, 56, 62, 72, 82, 92, + 86, 94, 91, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 169, 169, + 165, 190, 197, 152, 200, 190, 202, 194, 193, 205, 178, 148, 163, 145, 165, 175, + 153, 158, 131, 134, 110, 139, 196, 238, 224, 175, 140, 127, 110, 124, 137, 128, + 152, 166, 169, 142, 121, 129, 164, 131, 127, 150, 113, 102, 121, 103, 87, 95, + 71, 53, 53, 80, 59, 49, 43, 45, 49, 51, 49, 48, 46, 42, 39, 41, + 40, 36, 35, 38, 37, 35, 33, 32, 32, 33, 35, 37, 33, 26, 26, 35, + 44, 44, 38, 33, 36, 38, 36, 30, 23, 21, 25, 30, 29, 29, 28, 25, + 22, 22, 24, 26, 21, 24, 28, 29, 30, 30, 32, 34, 32, 34, 36, 38, + 38, 38, 37, 36, 42, 40, 41, 45, 48, 52, 62, 71, 83, 79, 88, 83, + 87, 101, 255, 255, 255, 255, 255, 255, 255, 255, 45, 101, 130, 129, 89, 132, + 167, 184, 185, 212, 190, 175, 191, 173, 171, 129, 166, 162, 163, 156, 158, 138, + 186, 209, 203, 177, 152, 142, 133, 131, 146, 121, 119, 123, 105, 142, 152, 148, + 104, 107, 88, 58, 94, 110, 91, 119, 124, 112, 102, 69, 67, 54, 71, 47, + 33, 46, 43, 42, 44, 46, 47, 45, 43, 38, 39, 40, 42, 39, 36, 41, + 49, 42, 38, 35, 35, 35, 33, 34, 38, 38, 30, 26, 33, 41, 44, 44, + 45, 37, 36, 33, 27, 23, 24, 29, 34, 22, 22, 20, 18, 15, 13, 15, + 17, 23, 25, 28, 29, 27, 28, 31, 34, 31, 34, 37, 38, 37, 36, 36, + 37, 37, 37, 41, 46, 48, 50, 59, 69, 69, 70, 88, 87, 89, 98, 149, + 255, 255, 255, 255, 255, 255, 204, 97, 129, 108, 103, 86, 143, 184, 160, 174, + 193, 195, 187, 176, 164, 163, 184, 163, 151, 158, 147, 163, 181, 157, 154, 163, + 139, 132, 160, 152, 122, 123, 122, 129, 136, 134, 138, 129, 111, 85, 66, 77, + 102, 82, 68, 78, 73, 87, 91, 72, 65, 77, 66, 42, 35, 51, 39, 41, + 42, 41, 39, 39, 39, 39, 38, 38, 39, 40, 38, 36, 43, 52, 47, 41, + 38, 39, 37, 33, 34, 39, 41, 39, 39, 41, 40, 37, 39, 44, 36, 33, + 30, 27, 25, 26, 28, 30, 30, 31, 32, 31, 29, 29, 30, 32, 32, 30, + 27, 26, 28, 29, 28, 28, 30, 33, 36, 36, 34, 33, 34, 35, 37, 38, + 43, 47, 47, 47, 54, 63, 63, 65, 82, 79, 79, 87, 86, 255, 255, 255, + 255, 255, 255, 67, 101, 158, 154, 167, 169, 190, 200, 251, 234, 181, 176, 173, + 153, 170, 178, 155, 161, 159, 151, 155, 143, 178, 154, 142, 153, 125, 118, 147, + 128, 107, 141, 156, 148, 129, 137, 112, 103, 79, 79, 87, 74, 62, 73, 77, + 70, 74, 78, 48, 63, 72, 38, 44, 44, 45, 17, 42, 46, 47, 43, 38, + 38, 40, 41, 42, 40, 37, 38, 36, 35, 40, 47, 51, 44, 40, 41, 39, + 34, 34, 40, 45, 32, 27, 40, 57, 58, 43, 30, 32, 29, 25, 23, 22, + 21, 19, 17, 18, 20, 23, 25, 26, 27, 30, 32, 42, 34, 26, 25, 29, + 30, 27, 22, 30, 33, 35, 34, 31, 30, 31, 32, 35, 37, 41, 43, 41, + 37, 43, 50, 66, 63, 73, 63, 60, 70, 75, 255, 255, 255, 255, 255, 79, + 90, 104, 79, 162, 144, 118, 176, 184, 185, 182, 167, 157, 152, 161, 165, 167, + 154, 150, 158, 149, 152, 162, 147, 142, 125, 143, 110, 149, 131, 153, 152, 153, + 105, 110, 114, 129, 106, 105, 88, 76, 78, 70, 64, 65, 72, 78, 78, 76, + 80, 69, 60, 56, 44, 30, 29, 38, 39, 41, 45, 49, 48, 44, 37, 31, + 33, 36, 37, 37, 34, 29, 26, 25, 33, 34, 34, 34, 35, 37, 35, 32, + 39, 35, 35, 40, 42, 37, 32, 30, 16, 17, 19, 21, 22, 22, 21, 21, + 18, 20, 22, 24, 26, 29, 33, 35, 39, 39, 38, 33, 28, 27, 29, 32, + 41, 34, 32, 37, 38, 33, 29, 30, 36, 27, 27, 38, 40, 36, 48, 67, + 58, 53, 48, 47, 53, 64, 74, 138, 255, 255, 255, 255, 166, 173, 130, 144, + 142, 112, 165, 171, 173, 145, 162, 177, 180, 173, 161, 145, 134, 157, 150, 154, + 141, 139, 141, 120, 112, 101, 130, 129, 169, 155, 149, 127, 109, 109, 105, 99, + 110, 90, 96, 82, 71, 39, 45, 57, 67, 75, 78, 79, 78, 71, 58, 52, + 50, 44, 35, 37, 48, 46, 46, 48, 50, 48, 44, 38, 33, 42, 42, 41, + 40, 37, 33, 30, 28, 28, 28, 27, 25, 25, 25, 24, 22, 34, 30, 31, + 37, 39, 36, 32, 32, 27, 26, 25, 24, 23, 21, 19, 18, 19, 24, 29, + 30, 29, 31, 38, 44, 40, 39, 35, 30, 26, 26, 30, 34, 26, 23, 26, + 34, 38, 35, 33, 35, 41, 37, 39, 45, 45, 42, 50, 63, 70, 64, 57, + 53, 54, 59, 65, 68, 255, 255, 255, 255, 77, 70, 139, 90, 147, 195, 156, + 162, 174, 158, 170, 179, 171, 165, 158, 160, 158, 147, 143, 151, 143, 141, 142, + 123, 118, 113, 133, 142, 159, 152, 131, 117, 98, 114, 108, 99, 111, 96, 105, + 92, 80, 55, 53, 56, 64, 73, 75, 70, 65, 59, 48, 41, 39, 38, 35, + 39, 48, 48, 48, 49, 50, 49, 48, 44, 40, 44, 43, 40, 40, 40, 38, + 34, 32, 32, 30, 28, 26, 24, 22, 22, 23, 30, 27, 28, 33, 36, 33, + 31, 32, 28, 26, 23, 20, 17, 16, 15, 15, 24, 31, 37, 35, 29, 28, + 35, 42, 37, 35, 32, 27, 25, 27, 31, 36, 28, 28, 32, 36, 34, 29, + 26, 28, 43, 46, 49, 49, 48, 49, 55, 59, 65, 63, 59, 56, 57, 60, + 64, 67, 255, 255, 255, 255, 77, 92, 129, 125, 103, 90, 125, 160, 145, 182, + 188, 195, 180, 178, 164, 164, 157, 150, 148, 158, 146, 134, 128, 108, 107, 139, + 140, 145, 133, 134, 115, 120, 114, 118, 117, 114, 126, 105, 107, 89, 75, 74, + 78, 85, 80, 72, 62, 57, 55, 60, 50, 41, 39, 39, 36, 41, 46, 46, + 46, 46, 48, 49, 50, 50, 49, 35, 36, 35, 39, 41, 40, 36, 33, 36, + 33, 32, 31, 30, 29, 31, 35, 32, 29, 30, 33, 34, 30, 28, 30, 23, + 21, 18, 16, 15, 16, 18, 20, 33, 36, 36, 32, 25, 21, 24, 27, 31, + 30, 29, 29, 29, 31, 34, 36, 35, 36, 37, 35, 29, 24, 24, 26, 41, + 49, 51, 45, 43, 50, 55, 53, 53, 54, 55, 56, 58, 60, 63, 65, 125, + 255, 255, 188, 81, 74, 65, 112, 158, 135, 120, 163, 170, 176, 161, 152, 129, + 149, 157, 183, 185, 148, 149, 164, 155, 143, 137, 125, 133, 132, 127, 142, 122, + 129, 110, 114, 109, 118, 121, 119, 125, 93, 87, 68, 59, 56, 78, 100, 95, + 73, 55, 57, 64, 70, 60, 50, 47, 48, 48, 50, 50, 47, 45, 44, 46, + 46, 48, 48, 48, 31, 34, 37, 41, 43, 39, 34, 29, 33, 30, 30, 34, + 33, 32, 36, 44, 38, 36, 36, 38, 34, 28, 25, 26, 23, 21, 19, 17, + 18, 21, 25, 27, 38, 34, 30, 27, 24, 22, 19, 17, 25, 27, 30, 33, + 36, 37, 36, 35, 29, 30, 30, 26, 24, 26, 32, 37, 40, 48, 47, 36, + 32, 39, 45, 42, 47, 50, 53, 54, 54, 54, 55, 56, 62, 255, 255, 93, + 80, 82, 87, 136, 115, 131, 161, 156, 173, 157, 155, 179, 179, 215, 202, 200, + 173, 136, 135, 152, 150, 148, 150, 145, 157, 119, 110, 126, 106, 115, 104, 103, + 102, 115, 116, 112, 114, 82, 82, 73, 72, 70, 68, 66, 66, 68, 68, 68, + 68, 69, 57, 49, 48, 54, 57, 56, 54, 51, 49, 46, 45, 43, 43, 41, + 40, 37, 41, 44, 45, 41, 35, 29, 26, 32, 29, 32, 38, 37, 33, 38, + 48, 40, 39, 41, 42, 37, 29, 25, 26, 22, 20, 18, 16, 17, 19, 22, + 24, 34, 29, 25, 25, 28, 30, 27, 23, 27, 29, 33, 38, 42, 41, 36, + 32, 28, 28, 24, 18, 17, 24, 31, 34, 41, 45, 42, 31, 24, 28, 33, + 31, 35, 41, 48, 51, 53, 53, 56, 59, 67, 255, 255, 76, 85, 96, 84, + 95, 153, 144, 120, 199, 163, 177, 160, 167, 146, 178, 161, 164, 139, 148, 132, + 134, 128, 126, 125, 111, 116, 125, 106, 111, 89, 94, 100, 98, 107, 109, 107, + 101, 105, 81, 88, 85, 87, 90, 71, 55, 56, 73, 83, 76, 63, 59, 52, + 45, 45, 54, 61, 59, 52, 53, 50, 47, 45, 42, 40, 38, 35, 41, 46, + 48, 45, 36, 29, 28, 29, 36, 32, 35, 41, 38, 30, 33, 44, 34, 36, + 41, 45, 41, 33, 29, 30, 18, 17, 15, 14, 15, 17, 19, 21, 26, 25, + 25, 27, 31, 34, 35, 35, 36, 36, 38, 41, 43, 41, 35, 30, 37, 35, + 27, 17, 15, 21, 23, 20, 35, 37, 37, 32, 26, 25, 29, 31, 31, 38, + 47, 52, 54, 55, 59, 62, 63, 120, 255, 100, 85, 96, 114, 153, 121, 157, + 166, 147, 181, 154, 138, 147, 127, 168, 161, 179, 162, 160, 135, 128, 124, 129, + 132, 114, 114, 130, 109, 108, 89, 90, 104, 96, 109, 106, 101, 92, 98, 75, + 82, 74, 70, 61, 74, 90, 95, 92, 81, 73, 67, 58, 49, 43, 46, 56, + 63, 60, 52, 52, 49, 47, 45, 45, 44, 41, 37, 41, 45, 48, 40, 30, + 25, 29, 35, 35, 32, 35, 40, 34, 23, 24, 34, 27, 31, 39, 45, 43, + 36, 35, 35, 18, 18, 18, 19, 21, 22, 25, 26, 21, 23, 27, 29, 30, + 32, 37, 41, 45, 43, 44, 42, 42, 39, 34, 29, 38, 36, 28, 19, 19, + 25, 24, 18, 27, 29, 33, 35, 32, 30, 32, 36, 42, 49, 55, 56, 53, + 50, 52, 54, 54, 55, 255, 92, 105, 120, 152, 175, 196, 187, 161, 160, 158, + 150, 157, 183, 174, 170, 177, 159, 162, 149, 154, 136, 129, 138, 117, 99, 119, + 109, 108, 97, 93, 102, 106, 109, 118, 97, 92, 88, 86, 79, 68, 62, 62, + 57, 59, 77, 81, 66, 68, 73, 53, 54, 51, 55, 62, 58, 49, 50, 63, + 58, 63, 63, 57, 50, 45, 40, 34, 41, 44, 46, 42, 37, 35, 29, 25, + 35, 33, 37, 44, 42, 32, 27, 27, 35, 36, 44, 51, 51, 44, 39, 37, + 29, 28, 27, 29, 32, 30, 25, 21, 27, 27, 25, 25, 26, 28, 30, 32, + 37, 33, 35, 41, 44, 41, 37, 35, 33, 29, 37, 41, 27, 20, 26, 31, + 36, 39, 40, 40, 39, 43, 49, 53, 57, 58, 58, 56, 54, 54, 55, 55, + 45, 56, 255, 80, 98, 129, 142, 158, 196, 204, 178, 155, 131, 182, 169, 171, + 158, 163, 175, 154, 149, 148, 153, 137, 126, 134, 129, 118, 122, 114, 117, 109, + 101, 102, 97, 92, 98, 95, 89, 82, 78, 71, 62, 58, 59, 67, 69, 82, + 81, 63, 60, 63, 50, 44, 50, 54, 53, 51, 51, 54, 58, 54, 58, 57, + 52, 48, 48, 45, 40, 40, 45, 45, 41, 37, 37, 33, 30, 32, 30, 31, + 36, 34, 27, 24, 26, 32, 36, 44, 53, 57, 52, 48, 48, 34, 34, 34, + 35, 35, 33, 29, 24, 28, 27, 27, 26, 27, 29, 31, 33, 41, 40, 41, + 47, 48, 45, 42, 43, 46, 37, 41, 44, 35, 30, 31, 29, 34, 39, 44, + 46, 49, 50, 52, 54, 51, 52, 53, 51, 50, 49, 51, 51, 48, 54, 255, + 81, 105, 119, 134, 148, 175, 168, 139, 140, 142, 162, 182, 202, 174, 140, 135, + 147, 177, 150, 151, 138, 120, 118, 123, 117, 105, 102, 110, 107, 104, 105, 96, + 86, 88, 94, 87, 80, 76, 71, 64, 63, 66, 80, 81, 88, 81, 63, 59, + 61, 54, 45, 56, 60, 50, 47, 55, 57, 51, 61, 62, 59, 55, 55, 59, + 56, 50, 45, 50, 48, 43, 39, 39, 36, 33, 38, 35, 35, 37, 36, 32, + 33, 34, 38, 41, 46, 54, 56, 50, 45, 44, 40, 42, 43, 41, 39, 36, + 35, 34, 30, 28, 28, 29, 30, 32, 34, 35, 41, 41, 43, 47, 47, 43, + 43, 47, 52, 37, 37, 43, 40, 39, 35, 27, 38, 43, 49, 53, 55, 52, + 50, 50, 47, 49, 50, 49, 48, 47, 48, 49, 55, 55, 120, 196, 95, 128, + 150, 164, 177, 149, 120, 149, 183, 158, 163, 167, 160, 152, 151, 151, 157, 161, + 154, 148, 136, 124, 125, 123, 110, 94, 100, 99, 100, 106, 99, 86, 85, 88, + 82, 78, 77, 75, 70, 70, 73, 87, 85, 84, 78, 69, 66, 67, 64, 60, + 66, 67, 58, 53, 53, 53, 48, 70, 69, 65, 63, 66, 66, 61, 52, 53, + 57, 56, 51, 45, 43, 38, 33, 40, 40, 42, 43, 42, 40, 38, 39, 36, + 36, 43, 48, 48, 42, 38, 37, 46, 48, 51, 48, 43, 38, 41, 40, 32, + 31, 32, 33, 34, 33, 37, 37, 36, 36, 39, 42, 39, 36, 39, 44, 47, + 37, 36, 42, 42, 44, 42, 32, 44, 47, 51, 52, 52, 48, 43, 40, 47, + 49, 50, 50, 50, 49, 50, 50, 57, 52, 48, 255, 74, 117, 126, 131, 147, + 138, 117, 136, 154, 157, 145, 131, 139, 155, 158, 148, 132, 149, 139, 141, 143, + 131, 121, 121, 121, 107, 107, 99, 98, 106, 100, 83, 78, 80, 77, 76, 78, + 76, 71, 69, 71, 91, 87, 78, 73, 75, 70, 68, 68, 75, 70, 68, 68, + 62, 51, 50, 54, 65, 66, 65, 63, 66, 65, 57, 45, 53, 59, 60, 57, + 52, 49, 45, 40, 38, 40, 43, 44, 42, 40, 36, 35, 28, 28, 33, 41, + 44, 43, 43, 45, 56, 57, 58, 53, 46, 40, 40, 40, 36, 35, 36, 37, + 37, 37, 38, 38, 36, 38, 41, 43, 40, 34, 37, 43, 46, 42, 47, 49, + 42, 44, 46, 38, 43, 44, 44, 43, 44, 41, 38, 36, 45, 48, 50, 51, + 51, 50, 51, 51, 52, 46, 43, 255, 89, 129, 133, 127, 139, 140, 133, 152, + 161, 147, 157, 150, 148, 135, 123, 141, 150, 143, 135, 133, 137, 131, 115, 108, + 115, 114, 112, 100, 97, 105, 100, 87, 83, 81, 79, 79, 82, 80, 75, 73, + 74, 87, 85, 74, 69, 74, 69, 63, 68, 77, 68, 67, 74, 71, 59, 57, + 65, 61, 64, 66, 66, 67, 65, 57, 45, 46, 52, 57, 55, 54, 53, 53, + 49, 41, 48, 50, 48, 47, 46, 41, 36, 37, 35, 36, 42, 47, 47, 50, + 54, 68, 67, 64, 56, 49, 43, 40, 38, 43, 43, 44, 43, 43, 43, 42, + 42, 46, 44, 46, 48, 47, 42, 42, 44, 45, 44, 50, 47, 36, 35, 38, + 33, 36, 35, 33, 34, 37, 38, 37, 36, 41, 44, 47, 49, 49, 49, 49, + 49, 55, 48, 44, 255, 112, 114, 131, 130, 133, 129, 129, 154, 162, 163, 160, + 137, 142, 139, 128, 141, 138, 145, 145, 130, 124, 133, 122, 105, 107, 105, 108, + 101, 95, 99, 94, 87, 91, 79, 77, 77, 81, 82, 81, 82, 88, 79, 86, + 78, 73, 76, 66, 61, 76, 77, 75, 75, 77, 77, 75, 71, 74, 70, 74, + 75, 70, 66, 63, 57, 48, 42, 47, 50, 47, 48, 51, 55, 55, 55, 59, + 59, 54, 52, 53, 50, 44, 51, 47, 45, 48, 51, 52, 57, 63, 70, 67, + 63, 60, 57, 54, 51, 48, 52, 51, 51, 52, 51, 48, 46, 45, 52, 48, + 48, 52, 52, 46, 42, 42, 42, 40, 45, 41, 30, 31, 34, 24, 31, 30, + 29, 31, 36, 37, 36, 34, 39, 42, 46, 48, 49, 48, 49, 48, 59, 51, + 47, 255, 139, 110, 137, 146, 159, 164, 160, 166, 154, 157, 151, 126, 138, 144, + 132, 140, 127, 118, 127, 103, 89, 115, 118, 95, 91, 101, 109, 104, 94, 90, + 81, 77, 86, 69, 66, 67, 73, 78, 81, 87, 96, 71, 87, 84, 78, 80, + 66, 65, 89, 79, 86, 86, 79, 80, 88, 85, 76, 80, 82, 80, 71, 63, + 57, 52, 46, 45, 46, 45, 40, 40, 47, 53, 54, 63, 67, 64, 56, 55, + 57, 56, 51, 52, 48, 47, 52, 58, 63, 72, 80, 67, 64, 61, 61, 64, + 66, 65, 60, 58, 59, 59, 58, 57, 54, 52, 49, 52, 46, 46, 50, 51, + 46, 40, 36, 41, 40, 44, 39, 32, 37, 38, 27, 32, 31, 30, 32, 37, + 36, 32, 29, 40, 43, 47, 50, 51, 50, 50, 50, 57, 48, 44, 255, 222, + 108, 158, 160, 155, 154, 173, 154, 152, 154, 161, 136, 134, 126, 113, 128, 117, + 105, 99, 107, 122, 118, 101, 100, 114, 113, 97, 85, 83, 81, 76, 76, 82, + 72, 75, 76, 75, 72, 73, 78, 86, 81, 88, 89, 84, 86, 89, 92, 89, + 90, 88, 82, 77, 80, 89, 94, 94, 98, 93, 85, 74, 65, 56, 50, 45, + 51, 45, 42, 43, 50, 55, 58, 60, 59, 67, 70, 66, 66, 67, 65, 60, + 64, 66, 57, 68, 61, 78, 84, 100, 77, 78, 84, 89, 80, 66, 69, 81, + 85, 81, 75, 68, 63, 57, 54, 52, 55, 58, 57, 51, 45, 44, 45, 43, + 40, 44, 48, 45, 37, 32, 34, 35, 33, 32, 33, 36, 41, 43, 43, 42, + 36, 37, 44, 50, 49, 44, 46, 53, 52, 47, 42, 255, 255, 111, 147, 169, + 201, 188, 162, 132, 152, 161, 159, 142, 138, 132, 120, 114, 100, 105, 85, 74, + 83, 98, 103, 103, 104, 101, 83, 73, 82, 93, 90, 78, 70, 83, 80, 77, + 78, 81, 85, 87, 89, 83, 90, 90, 87, 86, 89, 91, 88, 93, 94, 87, + 78, 77, 83, 89, 90, 101, 94, 83, 77, 73, 67, 56, 49, 49, 47, 46, + 49, 53, 59, 62, 63, 68, 72, 71, 67, 67, 70, 68, 63, 72, 79, 75, + 85, 73, 81, 77, 87, 98, 91, 91, 98, 100, 91, 85, 85, 83, 81, 79, + 76, 73, 69, 65, 61, 54, 58, 58, 50, 45, 44, 43, 39, 47, 50, 53, + 49, 43, 38, 38, 39, 37, 36, 36, 38, 43, 43, 42, 41, 41, 40, 42, + 44, 44, 44, 52, 62, 66, 52, 46, 255, 255, 142, 141, 147, 193, 194, 166, + 130, 143, 158, 141, 135, 127, 127, 123, 100, 90, 85, 87, 92, 101, 106, 106, + 105, 105, 93, 78, 71, 83, 94, 90, 78, 71, 85, 78, 73, 76, 85, 91, + 89, 86, 98, 104, 105, 102, 100, 102, 104, 103, 106, 107, 101, 89, 83, 86, + 91, 94, 83, 78, 75, 80, 88, 92, 85, 78, 63, 63, 62, 64, 66, 70, + 73, 75, 76, 76, 71, 66, 69, 73, 75, 73, 92, 103, 101, 108, 90, 93, + 85, 91, 93, 99, 108, 109, 97, 82, 85, 98, 96, 96, 97, 98, 96, 88, + 80, 74, 58, 60, 61, 54, 50, 48, 46, 40, 52, 51, 51, 49, 46, 43, + 40, 37, 41, 40, 40, 41, 44, 44, 42, 40, 44, 43, 44, 46, 47, 49, + 56, 64, 61, 43, 39, 255, 255, 218, 144, 137, 163, 168, 171, 144, 134, 138, + 115, 121, 111, 114, 120, 94, 95, 66, 77, 96, 108, 101, 85, 82, 89, 88, + 80, 76, 77, 74, 68, 70, 79, 79, 75, 73, 79, 87, 91, 88, 85, 110, + 116, 119, 121, 119, 119, 120, 122, 121, 127, 125, 116, 110, 110, 114, 116, 113, + 110, 105, 106, 105, 102, 94, 87, 81, 79, 74, 70, 67, 68, 70, 72, 78, + 77, 75, 70, 69, 75, 85, 91, 112, 125, 120, 122, 101, 106, 102, 107, 94, + 101, 110, 105, 88, 75, 81, 94, 87, 87, 95, 99, 102, 97, 89, 79, 68, + 68, 65, 59, 54, 53, 51, 48, 54, 51, 50, 49, 49, 48, 43, 39, 43, + 40, 40, 41, 45, 45, 44, 42, 44, 47, 52, 56, 57, 55, 57, 58, 54, + 44, 43, 255, 255, 255, 147, 161, 174, 158, 166, 150, 138, 119, 104, 118, 113, + 112, 113, 88, 94, 86, 72, 71, 82, 82, 70, 72, 86, 85, 77, 71, 69, + 63, 57, 63, 75, 72, 76, 81, 86, 90, 91, 90, 90, 108, 115, 122, 126, + 125, 124, 127, 133, 132, 142, 146, 141, 137, 136, 137, 139, 142, 143, 141, 137, + 129, 122, 116, 114, 112, 105, 94, 85, 78, 75, 74, 74, 71, 73, 75, 72, + 70, 76, 93, 108, 116, 129, 125, 126, 106, 114, 108, 109, 119, 107, 100, 98, + 100, 97, 88, 81, 82, 84, 93, 104, 113, 113, 109, 100, 78, 76, 69, 60, + 57, 58, 57, 54, 56, 51, 49, 50, 53, 53, 48, 42, 39, 37, 37, 40, + 45, 47, 47, 45, 51, 55, 58, 58, 58, 58, 57, 55, 58, 62, 61, 255, + 255, 255, 152, 164, 184, 165, 168, 154, 142, 112, 108, 122, 125, 117, 102, 82, + 83, 92, 83, 79, 80, 73, 65, 77, 98, 88, 75, 68, 74, 77, 73, 69, + 70, 67, 75, 83, 87, 86, 86, 90, 96, 107, 114, 124, 130, 130, 129, 134, + 141, 140, 148, 154, 153, 151, 153, 153, 152, 145, 149, 153, 150, 144, 140, 140, + 141, 132, 120, 106, 94, 89, 85, 81, 79, 70, 71, 74, 75, 77, 84, 102, + 120, 117, 132, 132, 136, 119, 125, 111, 107, 121, 116, 111, 110, 109, 105, 97, + 88, 98, 97, 100, 108, 116, 116, 111, 102, 84, 81, 72, 64, 61, 62, 61, + 56, 50, 48, 45, 46, 48, 47, 43, 38, 37, 35, 36, 40, 47, 49, 50, + 49, 60, 60, 57, 51, 51, 56, 59, 57, 49, 61, 64, 255, 255, 255, 161, + 155, 172, 157, 167, 150, 127, 108, 109, 107, 117, 109, 86, 80, 76, 73, 87, + 92, 78, 64, 65, 75, 84, 90, 80, 76, 82, 85, 79, 74, 76, 71, 76, + 81, 82, 82, 86, 93, 103, 114, 122, 132, 141, 142, 139, 146, 155, 151, 155, + 159, 157, 157, 161, 160, 157, 167, 167, 163, 157, 150, 141, 137, 135, 133, 121, + 109, 103, 103, 99, 92, 85, 81, 77, 78, 85, 94, 102, 116, 131, 128, 140, + 136, 140, 127, 139, 125, 118, 108, 120, 130, 127, 115, 104, 101, 103, 106, 99, + 96, 97, 101, 102, 97, 88, 87, 85, 81, 74, 72, 69, 64, 57, 51, 50, + 49, 49, 46, 43, 40, 36, 38, 36, 38, 42, 49, 52, 52, 51, 57, 58, + 54, 47, 49, 55, 57, 54, 40, 48, 56, 255, 255, 255, 166, 168, 169, 139, + 151, 136, 106, 107, 105, 87, 99, 97, 74, 85, 80, 98, 106, 92, 67, 70, + 94, 92, 68, 84, 83, 84, 83, 73, 63, 70, 84, 85, 86, 85, 85, 87, + 94, 104, 114, 122, 129, 140, 149, 148, 146, 151, 161, 162, 162, 162, 158, 159, + 163, 164, 160, 165, 163, 160, 159, 157, 157, 154, 151, 158, 149, 138, 139, 143, + 142, 133, 123, 95, 86, 84, 95, 111, 121, 129, 138, 135, 143, 131, 134, 126, + 145, 138, 133, 114, 119, 128, 132, 131, 124, 111, 99, 114, 108, 104, 104, 112, + 115, 114, 109, 93, 91, 89, 84, 82, 78, 70, 58, 62, 61, 60, 58, 52, + 48, 44, 41, 41, 41, 42, 46, 50, 53, 54, 53, 46, 51, 53, 50, 52, + 56, 54, 46, 52, 50, 59, 255, 255, 255, 151, 155, 131, 130, 143, 134, 116, + 132, 95, 76, 80, 88, 92, 93, 87, 96, 80, 67, 68, 71, 69, 65, 66, + 79, 80, 83, 83, 75, 67, 70, 76, 83, 86, 90, 91, 95, 101, 112, 122, + 136, 140, 143, 148, 153, 158, 162, 164, 162, 160, 159, 160, 163, 162, 160, 156, + 162, 158, 154, 153, 155, 157, 156, 153, 149, 154, 151, 141, 139, 147, 152, 149, + 148, 138, 128, 124, 129, 136, 141, 144, 155, 155, 151, 145, 137, 132, 132, 135, + 138, 124, 118, 125, 133, 126, 110, 97, 101, 102, 133, 133, 114, 105, 99, 106, + 100, 97, 93, 87, 88, 87, 81, 73, 73, 68, 60, 56, 52, 52, 52, 52, + 42, 48, 55, 57, 55, 52, 53, 54, 52, 45, 43, 45, 43, 39, 46, 57, + 55, 46, 50, 255, 255, 255, 215, 129, 126, 135, 134, 131, 135, 104, 96, 110, + 133, 136, 126, 111, 96, 79, 66, 57, 58, 62, 66, 72, 78, 77, 77, 75, + 72, 66, 64, 72, 82, 78, 84, 92, 97, 104, 114, 127, 138, 150, 152, 154, + 155, 156, 157, 157, 157, 167, 165, 162, 160, 158, 154, 151, 148, 155, 153, 151, + 153, 157, 160, 161, 161, 161, 164, 162, 156, 153, 154, 155, 154, 157, 149, 140, + 135, 138, 141, 141, 139, 162, 160, 155, 149, 145, 142, 143, 144, 139, 133, 130, + 132, 131, 121, 108, 102, 110, 90, 100, 111, 126, 139, 117, 98, 114, 117, 114, + 103, 95, 86, 79, 70, 72, 66, 60, 57, 55, 56, 56, 56, 54, 55, 57, + 60, 61, 59, 57, 54, 57, 55, 55, 57, 56, 53, 55, 58, 60, 52, 122, + 255, 255, 255, 255, 159, 140, 130, 131, 130, 129, 135, 107, 86, 72, 59, 67, + 91, 107, 77, 78, 83, 91, 92, 84, 75, 70, 75, 71, 69, 67, 64, 63, + 72, 81, 73, 79, 89, 98, 110, 122, 136, 148, 158, 160, 162, 162, 162, 160, + 157, 156, 163, 164, 164, 163, 162, 162, 163, 165, 160, 159, 160, 162, 166, 169, + 170, 170, 169, 168, 167, 167, 163, 157, 155, 158, 156, 151, 147, 146, 148, 149, + 150, 148, 153, 149, 143, 140, 140, 141, 142, 143, 138, 141, 143, 142, 131, 119, + 113, 117, 113, 103, 114, 114, 121, 140, 126, 111, 121, 128, 128, 116, 103, 90, + 82, 74, 71, 66, 61, 59, 57, 57, 56, 55, 56, 52, 50, 52, 55, 56, + 52, 47, 53, 57, 59, 59, 60, 61, 57, 50, 58, 52, 255, 255, 255, 255, + 255, 162, 134, 115, 114, 111, 107, 114, 105, 105, 103, 89, 85, 94, 98, 103, + 91, 78, 71, 69, 72, 75, 77, 72, 69, 70, 70, 69, 65, 67, 72, 72, + 78, 89, 99, 112, 123, 136, 145, 156, 160, 163, 166, 168, 167, 165, 163, 160, + 163, 166, 166, 166, 168, 174, 179, 168, 168, 169, 170, 171, 171, 170, 170, 174, + 168, 168, 173, 170, 161, 161, 168, 158, 155, 153, 153, 155, 156, 156, 155, 158, + 152, 147, 146, 151, 156, 158, 158, 139, 144, 150, 149, 138, 128, 127, 135, 119, + 126, 146, 130, 117, 132, 132, 132, 121, 127, 127, 120, 109, 102, 92, 85, 75, + 70, 66, 61, 57, 55, 51, 49, 49, 47, 45, 45, 47, 48, 47, 45, 49, + 56, 57, 54, 56, 61, 54, 41, 51, 49, 255, 255, 255, 255, 255, 210, 123, + 124, 111, 103, 114, 117, 102, 96, 89, 78, 80, 90, 92, 103, 91, 75, 67, + 70, 77, 81, 80, 76, 70, 65, 65, 65, 61, 61, 64, 73, 79, 91, 102, + 114, 125, 135, 143, 154, 158, 163, 168, 171, 172, 172, 171, 170, 171, 171, 168, + 164, 163, 166, 170, 171, 171, 172, 172, 171, 170, 170, 169, 178, 172, 172, 177, + 176, 170, 173, 182, 170, 167, 163, 160, 157, 154, 154, 152, 158, 153, 151, 152, + 157, 162, 165, 165, 149, 150, 153, 154, 148, 141, 139, 144, 134, 131, 142, 130, + 126, 147, 142, 133, 130, 130, 126, 120, 114, 110, 102, 90, 79, 74, 67, 62, + 56, 53, 48, 45, 45, 47, 48, 47, 46, 46, 50, 53, 52, 56, 55, 50, + 52, 57, 53, 42, 48, 49, 255, 255, 255, 255, 255, 255, 115, 117, 109, 102, + 109, 120, 110, 110, 109, 99, 94, 87, 75, 94, 96, 98, 98, 98, 95, 84, + 73, 82, 70, 58, 54, 57, 59, 65, 70, 79, 85, 97, 110, 124, 133, 142, + 146, 159, 162, 166, 170, 173, 174, 174, 174, 177, 177, 176, 174, 171, 169, 169, + 170, 175, 176, 178, 178, 177, 177, 179, 181, 177, 175, 175, 176, 175, 174, 178, + 184, 172, 171, 170, 167, 164, 161, 161, 159, 158, 156, 155, 155, 158, 160, 162, + 163, 164, 160, 157, 157, 154, 147, 142, 143, 142, 131, 139, 131, 129, 146, 137, + 128, 143, 141, 133, 125, 118, 113, 102, 90, 81, 76, 69, 63, 59, 54, 51, + 49, 42, 46, 49, 48, 46, 46, 50, 55, 53, 53, 51, 46, 46, 49, 48, + 44, 43, 46, 255, 255, 255, 255, 255, 255, 107, 96, 93, 88, 85, 109, 97, + 92, 91, 88, 94, 99, 92, 98, 101, 96, 84, 75, 76, 79, 79, 80, 67, + 55, 54, 62, 68, 75, 80, 88, 94, 106, 119, 132, 141, 147, 149, 165, 168, + 170, 172, 174, 175, 176, 176, 177, 176, 176, 178, 180, 180, 179, 178, 177, 179, + 180, 180, 179, 180, 184, 188, 178, 182, 182, 178, 175, 176, 176, 175, 170, 173, + 176, 177, 174, 171, 168, 166, 176, 176, 175, 173, 171, 169, 169, 169, 172, 166, + 160, 159, 154, 147, 141, 141, 139, 130, 145, 141, 133, 141, 136, 138, 142, 142, + 140, 131, 123, 113, 102, 91, 88, 82, 73, 65, 60, 55, 52, 50, 43, 44, + 45, 45, 45, 45, 46, 47, 51, 48, 46, 45, 42, 39, 40, 44, 43, 44, + 255, 255, 255, 255, 255, 255, 125, 120, 97, 90, 106, 127, 112, 101, 91, 81, + 86, 90, 83, 77, 93, 103, 95, 81, 76, 77, 78, 73, 63, 58, 63, 75, + 80, 84, 88, 96, 103, 112, 125, 136, 144, 146, 149, 168, 170, 171, 173, 175, + 177, 179, 179, 177, 175, 174, 176, 179, 180, 176, 172, 174, 176, 176, 174, 172, + 174, 178, 182, 186, 194, 195, 187, 182, 183, 179, 171, 179, 183, 187, 187, 182, + 173, 165, 160, 177, 179, 178, 174, 167, 161, 160, 161, 172, 167, 161, 159, 153, + 146, 141, 142, 135, 120, 134, 143, 148, 159, 153, 153, 129, 136, 140, 134, 124, + 115, 106, 97, 99, 90, 79, 67, 60, 54, 50, 48, 48, 46, 44, 45, 49, + 49, 46, 42, 53, 48, 47, 50, 45, 36, 38, 47, 50, 49, 255, 255, 255, + 255, 255, 255, 220, 151, 140, 119, 116, 104, 103, 95, 103, 105, 95, 94, 87, + 82, 77, 80, 87, 84, 72, 63, 63, 69, 71, 72, 77, 82, 86, 92, 96, + 110, 117, 127, 138, 145, 150, 153, 157, 172, 174, 174, 173, 172, 172, 175, 177, + 177, 177, 179, 180, 180, 180, 180, 180, 179, 181, 183, 181, 178, 177, 178, 181, + 175, 182, 190, 193, 190, 183, 175, 171, 165, 168, 172, 177, 181, 181, 180, 179, + 172, 174, 177, 174, 169, 166, 167, 170, 166, 163, 160, 162, 164, 164, 158, 155, + 134, 141, 128, 140, 139, 167, 155, 147, 141, 130, 132, 135, 126, 121, 122, 117, + 104, 93, 78, 67, 56, 45, 43, 45, 45, 46, 49, 51, 46, 41, 45, 52, + 55, 53, 51, 50, 49, 47, 45, 44, 47, 48, 255, 255, 255, 255, 255, 255, + 255, 157, 134, 117, 145, 125, 109, 101, 101, 104, 100, 85, 77, 82, 76, 76, + 80, 76, 65, 58, 61, 74, 79, 84, 85, 83, 85, 91, 99, 115, 124, 133, + 143, 149, 153, 158, 161, 171, 175, 177, 178, 177, 176, 176, 177, 176, 177, 177, + 177, 177, 177, 176, 175, 183, 185, 187, 186, 185, 185, 187, 190, 201, 200, 197, + 191, 186, 183, 182, 183, 182, 183, 184, 183, 183, 179, 174, 172, 177, 179, 182, + 180, 176, 172, 169, 167, 160, 156, 151, 149, 149, 151, 151, 151, 148, 140, 122, + 136, 136, 154, 143, 144, 140, 136, 139, 138, 129, 126, 127, 120, 116, 102, 85, + 71, 56, 42, 37, 37, 47, 48, 50, 53, 50, 45, 47, 52, 54, 53, 51, + 50, 49, 48, 47, 47, 46, 54, 255, 255, 255, 255, 255, 255, 255, 216, 122, + 109, 157, 132, 106, 106, 90, 90, 97, 79, 88, 83, 75, 71, 72, 66, 57, + 54, 60, 75, 87, 96, 96, 91, 92, 102, 113, 125, 132, 140, 150, 155, 158, + 162, 164, 172, 176, 180, 182, 181, 179, 177, 177, 181, 182, 182, 182, 181, 180, + 178, 178, 179, 178, 179, 180, 180, 182, 186, 189, 198, 195, 189, 183, 180, 182, + 187, 192, 195, 194, 192, 189, 183, 177, 173, 169, 185, 182, 180, 178, 177, 176, + 177, 175, 176, 173, 166, 160, 157, 159, 163, 167, 155, 139, 125, 144, 146, 150, + 139, 144, 137, 141, 147, 142, 131, 132, 133, 121, 116, 104, 89, 75, 60, 46, + 41, 41, 45, 43, 45, 50, 49, 45, 43, 45, 50, 49, 47, 46, 46, 46, + 47, 48, 42, 55, 255, 255, 255, 255, 255, 255, 255, 255, 120, 110, 162, 139, + 112, 121, 90, 79, 92, 77, 106, 84, 75, 68, 67, 61, 54, 57, 66, 77, + 92, 104, 108, 107, 111, 122, 129, 133, 140, 147, 155, 159, 162, 165, 167, 173, + 177, 180, 181, 180, 179, 178, 179, 182, 183, 183, 184, 183, 183, 182, 180, 176, + 174, 174, 174, 175, 178, 181, 183, 186, 186, 185, 183, 182, 182, 185, 188, 191, + 191, 191, 189, 185, 181, 179, 177, 188, 181, 174, 171, 175, 180, 186, 187, 175, + 175, 171, 165, 158, 156, 157, 160, 140, 136, 136, 151, 155, 153, 143, 142, 134, + 141, 152, 142, 130, 135, 138, 123, 118, 106, 92, 79, 64, 49, 43, 43, 44, + 41, 43, 48, 50, 46, 42, 41, 43, 43, 42, 41, 40, 42, 45, 48, 49, + 59, 255, 255, 255, 255, 255, 255, 255, 255, 128, 112, 172, 158, 129, 137, 108, + 95, 103, 78, 98, 86, 77, 70, 68, 62, 57, 63, 78, 86, 101, 113, 120, + 124, 133, 139, 142, 141, 147, 153, 158, 161, 165, 168, 170, 176, 177, 178, 178, + 176, 177, 179, 180, 176, 177, 178, 180, 181, 181, 181, 180, 181, 178, 177, 177, + 178, 179, 180, 181, 191, 191, 191, 188, 184, 181, 180, 181, 182, 182, 183, 184, + 185, 184, 183, 182, 183, 178, 174, 173, 176, 180, 181, 183, 170, 173, 173, 170, + 161, 154, 147, 146, 126, 136, 145, 143, 148, 150, 149, 141, 138, 143, 153, 145, + 134, 141, 143, 125, 128, 116, 100, 85, 65, 47, 36, 33, 45, 43, 45, 50, + 52, 47, 43, 43, 39, 39, 38, 37, 36, 39, 44, 49, 67, 66, 255, 255, + 255, 255, 255, 255, 255, 255, 121, 92, 156, 155, 129, 131, 119, 120, 120, 87, + 84, 88, 79, 73, 71, 65, 60, 68, 84, 96, 115, 127, 132, 135, 145, 148, + 146, 148, 153, 157, 163, 165, 167, 169, 171, 176, 177, 177, 176, 175, 175, 178, + 181, 176, 177, 179, 181, 182, 183, 184, 183, 182, 181, 179, 180, 181, 181, 179, + 177, 189, 188, 185, 182, 179, 180, 183, 187, 180, 180, 181, 182, 183, 183, 183, + 182, 177, 177, 180, 181, 181, 178, 173, 169, 175, 178, 180, 178, 172, 162, 152, + 147, 137, 145, 151, 135, 143, 148, 157, 149, 146, 145, 153, 148, 143, 146, 146, + 132, 128, 115, 101, 87, 68, 50, 39, 35, 42, 41, 43, 47, 47, 43, 41, + 43, 42, 42, 41, 39, 37, 41, 48, 55, 74, 130, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 85, 131, 142, 130, 124, 123, 122, 115, 98, 92, 89, 81, + 76, 74, 66, 61, 67, 83, 101, 124, 140, 143, 141, 147, 151, 150, 154, 160, + 163, 167, 168, 171, 173, 175, 175, 176, 178, 178, 177, 176, 178, 179, 179, 180, + 181, 183, 184, 184, 184, 183, 180, 178, 178, 179, 181, 180, 177, 173, 178, 178, + 177, 176, 176, 178, 183, 187, 183, 183, 183, 183, 183, 183, 182, 182, 177, 180, + 182, 182, 180, 176, 173, 171, 173, 173, 171, 170, 167, 162, 153, 148, 152, 145, + 148, 136, 152, 150, 161, 155, 154, 143, 147, 149, 147, 147, 146, 135, 122, 112, + 99, 87, 71, 54, 43, 40, 36, 37, 39, 42, 39, 34, 36, 41, 43, 44, + 43, 39, 37, 41, 50, 57, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 139, 124, 145, 148, 136, 128, 112, 95, 105, 109, 92, 84, 80, 75, 67, + 59, 65, 80, 98, 127, 149, 147, 142, 146, 153, 155, 160, 163, 167, 169, 169, + 170, 174, 176, 175, 178, 182, 183, 182, 180, 179, 179, 179, 178, 179, 179, 180, + 179, 179, 179, 181, 181, 181, 184, 187, 185, 181, 176, 180, 181, 183, 183, 180, + 178, 176, 176, 187, 187, 186, 185, 185, 184, 185, 185, 182, 182, 181, 176, 174, + 175, 180, 187, 183, 178, 173, 171, 171, 170, 165, 162, 153, 132, 137, 138, 164, + 151, 158, 152, 157, 142, 141, 148, 147, 146, 144, 135, 128, 116, 103, 89, 70, + 50, 39, 33, 37, 37, 41, 42, 38, 32, 37, 43, 43, 42, 42, 37, 35, + 38, 48, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 127, + 123, 127, 123, 118, 112, 110, 107, 104, 107, 91, 82, 84, 83, 77, 75, 83, + 102, 130, 149, 153, 152, 154, 155, 152, 162, 164, 167, 169, 169, 170, 173, 175, + 177, 179, 181, 181, 176, 173, 179, 188, 178, 180, 183, 184, 185, 185, 187, 187, + 183, 183, 184, 183, 183, 181, 185, 185, 180, 178, 180, 182, 184, 184, 181, 178, + 179, 180, 183, 184, 184, 183, 182, 181, 185, 179, 177, 180, 183, 180, 178, 181, + 179, 174, 172, 174, 175, 171, 166, 164, 170, 166, 164, 165, 165, 162, 163, 167, + 158, 157, 154, 148, 143, 139, 139, 139, 125, 119, 106, 96, 87, 62, 44, 47, + 46, 41, 41, 42, 46, 42, 35, 25, 28, 30, 35, 43, 51, 41, 41, 123, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 131, 132, 125, + 116, 111, 112, 113, 112, 103, 94, 93, 94, 87, 73, 72, 84, 103, 131, 150, + 155, 155, 158, 159, 157, 161, 163, 167, 169, 171, 173, 175, 178, 176, 175, 177, + 181, 180, 178, 179, 183, 177, 180, 182, 182, 181, 182, 183, 185, 183, 184, 184, + 184, 183, 183, 184, 185, 183, 182, 180, 181, 183, 183, 182, 180, 182, 183, 184, + 185, 184, 183, 180, 179, 180, 175, 174, 178, 180, 177, 174, 177, 176, 174, 171, + 175, 177, 172, 169, 170, 167, 163, 164, 166, 165, 162, 164, 167, 163, 158, 153, + 150, 148, 145, 140, 135, 125, 119, 105, 96, 89, 64, 44, 47, 43, 40, 39, + 38, 38, 36, 34, 32, 48, 45, 36, 34, 37, 36, 117, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 134, 125, 114, 109, 111, + 115, 113, 104, 102, 107, 106, 89, 65, 63, 80, 105, 133, 153, 157, 158, 162, + 165, 163, 165, 165, 169, 171, 173, 174, 176, 176, 178, 174, 173, 178, 180, 175, + 171, 170, 174, 175, 177, 178, 178, 178, 179, 180, 183, 183, 182, 182, 183, 183, + 184, 184, 186, 184, 180, 181, 183, 184, 184, 183, 186, 186, 186, 186, 184, 181, + 178, 177, 178, 174, 174, 178, 179, 176, 173, 175, 178, 176, 174, 177, 178, 173, + 171, 172, 166, 163, 163, 167, 166, 162, 162, 164, 163, 157, 151, 150, 151, 149, + 141, 132, 128, 119, 105, 96, 90, 65, 43, 43, 50, 48, 45, 41, 36, 35, + 38, 42, 45, 46, 40, 36, 36, 32, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 138, 134, 125, 124, 127, 125, 120, 103, + 101, 108, 109, 90, 63, 63, 83, 110, 137, 156, 160, 161, 165, 168, 166, 171, + 170, 172, 172, 173, 173, 173, 172, 173, 170, 170, 173, 173, 169, 166, 168, 168, + 170, 173, 174, 173, 173, 175, 176, 181, 182, 181, 182, 184, 185, 184, 183, 187, + 186, 183, 184, 186, 187, 186, 187, 190, 190, 188, 187, 184, 180, 178, 176, 179, + 177, 178, 182, 182, 178, 175, 178, 183, 179, 178, 179, 179, 172, 169, 169, 167, + 164, 164, 167, 167, 162, 162, 163, 159, 155, 151, 150, 150, 147, 139, 131, 132, + 121, 107, 97, 90, 63, 40, 37, 46, 41, 35, 30, 25, 25, 26, 28, 26, + 35, 37, 38, 42, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 210, 125, 124, 127, 129, 120, 105, 102, 98, 101, 104, + 89, 65, 68, 90, 117, 143, 161, 164, 163, 167, 169, 168, 174, 172, 172, 172, + 173, 172, 170, 166, 164, 163, 164, 164, 160, 156, 161, 168, 163, 165, 169, 170, + 171, 172, 174, 177, 179, 178, 179, 181, 185, 186, 185, 183, 186, 186, 187, 189, + 191, 191, 188, 186, 192, 191, 189, 187, 184, 180, 178, 176, 181, 179, 180, 183, + 182, 178, 177, 181, 182, 181, 180, 181, 179, 172, 170, 171, 169, 165, 166, 168, + 168, 162, 160, 161, 155, 155, 155, 152, 148, 143, 139, 135, 133, 124, 109, 98, + 87, 60, 36, 33, 50, 41, 34, 31, 33, 35, 34, 32, 27, 37, 38, 87, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 137, 140, 146, 149, 135, 115, 118, 106, 103, 105, 86, 61, 63, + 86, 125, 149, 166, 168, 167, 171, 173, 172, 176, 172, 171, 170, 171, 170, 166, + 161, 162, 159, 157, 152, 142, 135, 138, 146, 151, 155, 159, 163, 166, 168, 171, + 173, 174, 173, 174, 178, 184, 186, 184, 181, 186, 185, 184, 186, 188, 188, 187, + 185, 189, 188, 186, 184, 182, 179, 178, 177, 180, 178, 178, 180, 178, 175, 176, + 182, 178, 178, 179, 181, 178, 173, 172, 176, 170, 166, 166, 167, 166, 160, 159, + 160, 155, 156, 156, 152, 146, 141, 138, 137, 128, 122, 110, 99, 84, 54, 32, + 33, 51, 42, 35, 36, 43, 50, 52, 51, 42, 55, 124, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 146, 117, 125, 131, 116, 95, 122, 108, 106, 107, 87, 62, 65, 93, 129, 153, + 170, 173, 173, 177, 181, 179, 184, 178, 173, 169, 167, 163, 156, 148, 148, 144, + 142, 139, 132, 124, 123, 127, 132, 136, 142, 149, 153, 156, 161, 164, 167, 164, + 166, 171, 179, 182, 182, 178, 186, 182, 178, 177, 180, 183, 186, 187, 186, 185, + 184, 182, 180, 179, 178, 178, 182, 180, 179, 180, 177, 174, 177, 183, 177, 178, + 180, 181, 178, 172, 172, 176, 170, 165, 162, 163, 162, 157, 156, 158, 153, 151, + 147, 144, 142, 140, 135, 133, 120, 117, 108, 98, 82, 52, 33, 35, 38, 30, + 24, 24, 31, 41, 50, 55, 59, 134, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 129, 137, + 145, 133, 114, 102, 96, 100, 109, 94, 72, 84, 118, 131, 155, 173, 176, 177, + 182, 186, 186, 194, 186, 177, 170, 164, 156, 146, 138, 118, 114, 117, 125, 131, + 131, 132, 133, 117, 121, 129, 134, 139, 144, 151, 153, 160, 159, 161, 168, 176, + 180, 180, 176, 186, 181, 173, 170, 173, 178, 184, 187, 182, 181, 180, 178, 177, + 177, 177, 177, 184, 181, 180, 180, 177, 174, 179, 186, 181, 180, 181, 180, 176, + 170, 168, 172, 169, 164, 160, 159, 157, 154, 154, 156, 152, 145, 138, 136, 138, + 136, 131, 125, 113, 114, 107, 97, 81, 51, 35, 39, 47, 41, 35, 31, 34, + 45, 60, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 140, 154, 144, 126, + 106, 105, 98, 93, 84, 72, 86, 125, 142, 162, 178, 182, 181, 182, 187, 190, + 183, 190, 193, 183, 172, 167, 164, 160, 165, 165, 162, 155, 148, 144, 145, 147, + 151, 134, 131, 115, 133, 125, 133, 121, 126, 126, 130, 134, 141, 148, 154, 158, + 151, 162, 167, 163, 167, 176, 178, 172, 175, 175, 175, 175, 175, 175, 175, 175, + 178, 177, 177, 176, 177, 179, 180, 182, 183, 185, 183, 177, 171, 167, 165, 166, + 160, 165, 164, 157, 156, 159, 156, 146, 142, 139, 136, 130, 126, 126, 124, 118, + 109, 112, 108, 96, 75, 44, 35, 48, 49, 41, 38, 39, 40, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 211, 132, 136, 136, 137, 114, 122, 109, + 96, 97, 85, 89, 119, 152, 168, 182, 186, 186, 188, 190, 190, 187, 190, 190, + 184, 180, 180, 177, 172, 172, 175, 179, 181, 181, 177, 172, 168, 167, 166, 172, + 145, 133, 105, 108, 103, 106, 107, 111, 112, 113, 112, 111, 111, 139, 150, 156, + 154, 160, 171, 175, 172, 174, 174, 174, 173, 174, 174, 175, 175, 181, 180, 178, + 177, 176, 175, 175, 176, 174, 175, 174, 170, 165, 160, 158, 158, 154, 157, 158, + 155, 154, 153, 149, 143, 136, 132, 124, 113, 107, 110, 109, 106, 106, 104, 103, + 92, 67, 42, 42, 52, 36, 32, 35, 41, 44, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 136, 128, 140, 162, 123, 143, 128, 120, 141, 129, + 117, 142, 169, 179, 188, 191, 194, 196, 195, 191, 190, 187, 184, 180, 182, 184, + 181, 176, 181, 176, 172, 169, 171, 174, 173, 173, 180, 169, 170, 165, 176, 156, + 133, 105, 103, 98, 93, 89, 92, 102, 115, 125, 128, 137, 144, 145, 151, 164, + 172, 172, 173, 173, 172, 171, 172, 173, 175, 176, 180, 179, 178, 177, 175, 174, + 173, 173, 178, 175, 171, 167, 163, 157, 151, 146, 145, 142, 141, 141, 136, 126, + 120, 119, 111, 110, 104, 96, 95, 97, 95, 89, 91, 82, 94, 92, 60, 43, + 49, 47, 46, 41, 39, 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 144, 128, 144, 175, 215, 210, 154, 123, 139, 123, 113, 155, 183, + 189, 193, 196, 201, 203, 198, 190, 188, 183, 177, 172, 171, 172, 170, 167, 167, + 170, 172, 175, 174, 171, 163, 158, 165, 163, 159, 151, 149, 150, 161, 168, 139, + 131, 118, 105, 100, 105, 119, 129, 128, 136, 141, 141, 146, 157, 167, 169, 172, + 171, 170, 169, 170, 172, 174, 175, 173, 174, 174, 175, 174, 173, 172, 172, 165, + 157, 146, 138, 133, 125, 118, 112, 109, 103, 102, 106, 103, 93, 92, 98, 94, + 101, 107, 110, 112, 109, 100, 89, 74, 65, 89, 94, 58, 43, 49, 34, 35, + 42, 55, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 141, 126, 137, 162, 206, 208, 180, 180, 203, 166, 131, 164, 195, 197, 198, 200, + 206, 207, 200, 190, 185, 180, 175, 168, 163, 161, 161, 164, 165, 164, 157, 152, + 149, 151, 154, 157, 136, 140, 140, 140, 130, 130, 131, 138, 135, 137, 139, 134, + 128, 122, 123, 125, 138, 142, 145, 144, 147, 155, 163, 166, 170, 170, 169, 169, + 169, 170, 172, 173, 170, 171, 172, 173, 172, 170, 168, 167, 153, 144, 129, 118, + 113, 105, 101, 97, 77, 73, 79, 88, 93, 93, 102, 114, 117, 127, 137, 142, + 142, 136, 123, 109, 84, 73, 91, 92, 56, 44, 50, 34, 45, 48, 52, 54, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 128, + 145, 246, 229, 182, 163, 174, 149, 139, 178, 203, 203, 203, 204, 209, 210, 202, + 192, 185, 179, 174, 170, 165, 161, 163, 168, 167, 159, 145, 134, 127, 125, 125, + 125, 134, 133, 130, 146, 147, 151, 128, 118, 118, 129, 139, 142, 141, 139, 142, + 145, 149, 149, 151, 150, 152, 155, 161, 165, 170, 170, 170, 170, 170, 170, 170, + 169, 171, 172, 173, 173, 170, 166, 161, 158, 149, 142, 130, 120, 114, 111, 110, + 110, 103, 104, 111, 118, 123, 129, 140, 151, 153, 157, 159, 157, 152, 146, 134, + 122, 111, 99, 99, 87, 57, 50, 61, 55, 67, 67, 64, 122, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 127, 139, 175, 180, + 160, 149, 162, 161, 160, 176, 207, 208, 209, 208, 211, 211, 204, 195, 188, 177, + 170, 169, 169, 165, 164, 164, 143, 140, 139, 143, 139, 123, 95, 74, 70, 81, + 72, 72, 49, 64, 77, 106, 120, 131, 137, 137, 135, 134, 139, 143, 152, 152, + 154, 155, 156, 158, 163, 167, 171, 172, 173, 173, 172, 171, 168, 167, 170, 171, + 173, 173, 170, 164, 159, 154, 135, 133, 128, 122, 117, 114, 115, 116, 130, 137, + 145, 144, 145, 150, 157, 159, 157, 158, 155, 149, 145, 142, 134, 124, 122, 116, + 104, 85, 68, 66, 78, 84, 63, 82, 154, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 115, 125, 135, 169, 188, 182, 163, 169, + 182, 186, 182, 210, 211, 212, 211, 212, 212, 206, 198, 191, 175, 165, 165, 168, + 165, 159, 157, 137, 113, 88, 80, 88, 95, 89, 78, 58, 63, 54, 68, 56, + 65, 50, 53, 73, 94, 116, 133, 137, 137, 138, 140, 150, 152, 155, 157, 158, + 160, 164, 169, 171, 171, 174, 174, 174, 170, 167, 164, 165, 166, 170, 170, 170, + 164, 160, 156, 138, 140, 139, 135, 129, 125, 123, 124, 110, 124, 132, 130, 131, + 137, 141, 138, 138, 143, 144, 141, 141, 140, 134, 124, 115, 117, 105, 87, 81, + 79, 87, 101, 88, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 113, 117, 113, 145, 217, 195, 190, 205, 211, 180, 175, + 200, 226, 222, 218, 220, 211, 208, 195, 188, 182, 177, 164, 157, 167, 171, 155, + 131, 128, 102, 81, 78, 73, 81, 107, 121, 62, 99, 92, 51, 128, 65, 83, + 63, 61, 50, 81, 136, 139, 124, 141, 149, 152, 155, 154, 151, 154, 163, 169, + 166, 166, 170, 170, 171, 169, 167, 165, 170, 167, 164, 161, 161, 158, 156, 151, + 142, 129, 122, 127, 124, 111, 102, 101, 85, 67, 55, 67, 88, 103, 109, 110, + 111, 111, 120, 134, 142, 138, 124, 113, 124, 119, 105, 92, 92, 104, 106, 100, + 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 105, 105, 104, 127, 197, 194, 182, 195, 206, 192, 179, 201, 226, 223, + 219, 219, 208, 204, 189, 193, 185, 183, 177, 170, 173, 173, 161, 165, 154, 133, + 124, 127, 127, 128, 135, 139, 79, 101, 71, 76, 86, 91, 98, 69, 137, 133, + 80, 81, 113, 130, 139, 136, 144, 153, 159, 160, 158, 155, 154, 167, 169, 171, + 173, 173, 171, 169, 167, 165, 167, 166, 162, 154, 147, 143, 139, 130, 127, 127, + 117, 89, 63, 63, 74, 68, 63, 58, 57, 58, 53, 41, 31, 86, 99, 114, + 125, 125, 119, 123, 128, 126, 122, 110, 97, 98, 109, 111, 104, 108, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 109, + 112, 124, 144, 197, 204, 182, 186, 187, 196, 178, 200, 226, 225, 222, 223, 212, + 206, 190, 199, 187, 188, 190, 183, 178, 177, 167, 163, 159, 159, 151, 129, 116, + 120, 123, 125, 98, 102, 83, 102, 54, 83, 76, 108, 165, 169, 128, 113, 121, + 131, 145, 145, 149, 151, 155, 156, 159, 161, 161, 170, 172, 175, 176, 176, 175, + 172, 170, 166, 167, 164, 156, 145, 138, 136, 136, 120, 109, 101, 91, 78, 68, + 74, 85, 37, 64, 84, 78, 61, 57, 62, 70, 53, 69, 93, 114, 121, 121, + 127, 132, 127, 124, 115, 105, 105, 114, 115, 110, 111, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 148, 171, + 191, 202, 185, 185, 172, 195, 176, 197, 225, 226, 227, 230, 219, 214, 198, 203, + 185, 187, 195, 188, 177, 176, 173, 171, 167, 180, 174, 139, 120, 120, 114, 116, + 121, 83, 89, 91, 89, 116, 139, 156, 161, 159, 159, 152, 120, 104, 120, 152, + 156, 158, 155, 153, 155, 161, 169, 172, 174, 178, 180, 180, 178, 174, 172, 172, + 166, 155, 145, 139, 138, 140, 141, 134, 127, 124, 118, 106, 89, 80, 77, 94, + 85, 76, 82, 112, 135, 120, 92, 58, 56, 66, 89, 115, 128, 132, 128, 127, + 124, 117, 108, 109, 113, 113, 108, 108, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 141, 161, 160, 180, 191, + 197, 175, 195, 181, 196, 225, 227, 228, 232, 222, 216, 200, 205, 186, 186, 195, + 190, 179, 178, 179, 187, 167, 173, 183, 174, 166, 154, 129, 93, 128, 116, 130, + 117, 133, 104, 120, 127, 133, 130, 124, 121, 117, 119, 129, 144, 156, 166, 167, + 159, 152, 152, 157, 172, 175, 179, 181, 181, 179, 175, 172, 172, 160, 146, 140, + 142, 143, 141, 135, 138, 147, 153, 142, 117, 96, 92, 100, 88, 98, 105, 107, + 119, 134, 128, 113, 90, 73, 62, 75, 104, 124, 130, 130, 127, 125, 121, 114, + 112, 111, 108, 106, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 129, 146, 148, 167, 202, 211, 188, 191, + 177, 197, 226, 226, 227, 229, 219, 213, 198, 206, 187, 186, 193, 189, 182, 183, + 183, 174, 165, 169, 177, 177, 173, 165, 154, 148, 157, 150, 114, 112, 124, 101, + 111, 101, 103, 108, 114, 125, 140, 153, 160, 156, 164, 168, 165, 156, 150, 156, + 164, 171, 174, 178, 181, 181, 178, 174, 171, 165, 153, 142, 141, 147, 148, 139, + 126, 88, 111, 140, 160, 154, 127, 97, 77, 92, 89, 92, 109, 138, 146, 122, + 89, 88, 85, 88, 103, 118, 127, 131, 133, 128, 126, 123, 119, 115, 112, 108, + 104, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 127, 146, 165, 170, 198, 200, 193, 181, 166, 194, 225, + 227, 227, 230, 220, 215, 200, 199, 185, 185, 190, 187, 185, 187, 182, 173, 180, + 181, 177, 173, 164, 163, 176, 155, 158, 173, 154, 168, 159, 145, 136, 150, 130, + 132, 152, 158, 151, 152, 157, 172, 169, 162, 155, 152, 154, 164, 172, 168, 172, + 177, 180, 180, 177, 172, 169, 163, 151, 141, 140, 147, 151, 148, 141, 163, 138, + 114, 105, 114, 120, 116, 105, 95, 107, 119, 120, 115, 104, 100, 100, 94, 101, + 116, 134, 141, 138, 133, 130, 125, 123, 123, 121, 117, 111, 106, 156, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 145, 178, 166, 180, 176, 186, 174, 161, 193, 224, 226, 228, 232, + 224, 221, 207, 191, 181, 184, 187, 185, 185, 186, 177, 180, 181, 166, 162, 175, + 169, 162, 175, 175, 171, 159, 166, 170, 167, 169, 166, 169, 165, 169, 165, 152, + 154, 165, 165, 162, 159, 157, 157, 161, 162, 159, 157, 167, 170, 175, 178, 178, + 175, 170, 167, 165, 152, 138, 134, 141, 153, 162, 165, 156, 152, 148, 146, 143, + 136, 121, 109, 104, 93, 85, 88, 97, 101, 107, 114, 137, 131, 128, 132, 138, + 137, 132, 128, 120, 118, 120, 119, 116, 110, 139, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 108, 189, 209, 165, 169, 167, 145, 166, 231, 235, 229, 239, 218, 205, 212, + 199, 193, 191, 187, 180, 173, 177, 186, 186, 182, 180, 181, 181, 171, 165, 164, + 165, 166, 168, 169, 169, 169, 168, 165, 158, 161, 166, 167, 163, 162, 162, 164, + 161, 164, 168, 166, 162, 160, 161, 163, 171, 171, 171, 175, 178, 177, 172, 167, + 163, 152, 142, 142, 146, 150, 155, 160, 151, 153, 157, 157, 156, 151, 145, 142, + 157, 148, 138, 136, 143, 146, 143, 139, 141, 137, 136, 140, 147, 147, 136, 124, + 114, 113, 117, 117, 115, 108, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 205, + 235, 219, 192, 175, 149, 148, 212, 227, 226, 233, 222, 214, 206, 196, 191, 192, + 195, 194, 187, 184, 185, 183, 178, 178, 181, 181, 176, 170, 169, 174, 174, 174, + 174, 173, 172, 171, 171, 169, 170, 171, 170, 170, 167, 167, 166, 165, 167, 168, + 167, 163, 162, 160, 160, 172, 171, 171, 174, 177, 177, 172, 167, 162, 151, 141, + 140, 143, 147, 152, 156, 158, 155, 153, 150, 148, 149, 149, 150, 160, 154, 147, + 146, 149, 149, 146, 140, 147, 148, 147, 150, 153, 149, 139, 126, 118, 114, 115, + 115, 111, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 130, 100, 142, + 199, 145, 155, 203, 222, 229, 229, 223, 221, 197, 195, 189, 188, 192, 194, 190, + 186, 183, 186, 179, 177, 182, 186, 183, 179, 177, 179, 179, 179, 178, 176, 175, + 175, 173, 175, 173, 171, 169, 169, 168, 165, 163, 167, 166, 166, 167, 167, 167, + 165, 164, 172, 171, 172, 175, 178, 177, 172, 167, 161, 150, 141, 139, 141, 144, + 148, 151, 157, 156, 154, 151, 151, 153, 155, 156, 155, 154, 153, 152, 153, 151, + 147, 145, 156, 158, 159, 158, 157, 149, 137, 129, 120, 115, 114, 113, 157, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 164, 160, 175, 205, + 214, 223, 237, 229, 219, 221, 192, 200, 195, 189, 185, 184, 184, 185, 186, 185, + 178, 175, 181, 186, 185, 181, 178, 180, 178, 176, 174, 175, 174, 176, 175, 177, + 172, 168, 167, 169, 169, 167, 164, 165, 163, 163, 168, 173, 175, 174, 170, 176, + 173, 174, 177, 180, 179, 174, 169, 163, 152, 142, 140, 142, 143, 146, 150, 151, + 153, 157, 160, 163, 163, 161, 160, 154, 156, 158, 159, 158, 158, 158, 159, 163, + 165, 163, 159, 152, 143, 134, 128, 120, 113, 110, 158, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 209, 148, 204, 255, 252, 227, 220, 241, + 231, 213, 216, 194, 200, 200, 196, 189, 184, 184, 188, 191, 184, 177, 174, 179, + 183, 181, 177, 176, 178, 177, 176, 175, 176, 176, 179, 180, 179, 176, 172, 172, + 174, 175, 173, 171, 170, 168, 166, 170, 175, 178, 178, 175, 179, 177, 178, 181, + 184, 183, 178, 174, 168, 157, 148, 146, 147, 147, 150, 151, 148, 151, 156, 161, + 165, 166, 166, 166, 165, 167, 168, 167, 166, 167, 170, 175, 168, 168, 163, 157, + 146, 138, 133, 129, 117, 109, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 238, 248, 252, 223, 211, 235, 229, 213, 214, + 195, 188, 194, 198, 193, 188, 186, 187, 186, 187, 183, 181, 184, 185, 182, 181, + 183, 182, 182, 182, 180, 182, 181, 184, 185, 176, 176, 175, 175, 176, 176, 175, + 173, 177, 175, 174, 175, 176, 179, 179, 176, 180, 178, 178, 182, 185, 184, 179, + 174, 171, 160, 151, 150, 151, 151, 152, 155, 154, 152, 152, 153, 156, 163, 169, + 173, 177, 175, 175, 172, 169, 169, 170, 173, 172, 169, 164, 156, 147, 139, 133, + 127, 112, 103, 149, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 233, 217, 210, 209, 208, 227, 229, 216, 213, 192, 190, 194, + 195, 190, 188, 188, 188, 183, 187, 185, 185, 187, 185, 182, 184, 189, 185, 186, + 186, 185, 186, 184, 184, 184, 176, 177, 179, 178, 177, 174, 173, 173, 179, 180, + 180, 178, 179, 179, 181, 182, 181, 177, 177, 180, 183, 183, 178, 173, 172, 161, + 153, 152, 153, 153, 154, 157, 159, 157, 156, 155, 157, 163, 168, 171, 177, 174, + 175, 172, 170, 168, 165, 164, 168, 167, 163, 156, 150, 141, 131, 122, 108, 97, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 244, 188, 172, 199, 209, 222, 227, 220, 214, 187, 206, 205, 196, 187, 186, + 191, 190, 183, 178, 179, 182, 182, 181, 178, 182, 190, 190, 190, 191, 189, 190, + 185, 185, 184, 182, 186, 189, 188, 183, 178, 177, 179, 176, 179, 181, 179, 177, + 180, 184, 186, 179, 176, 176, 180, 183, 182, 177, 171, 171, 161, 153, 152, 154, + 154, 155, 158, 161, 162, 164, 165, 168, 167, 167, 167, 175, 174, 175, 177, 175, + 173, 168, 163, 161, 161, 160, 157, 151, 141, 128, 116, 105, 147, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, + 173, 183, 198, 230, 218, 223, 203, 189, 192, 192, 189, 186, 181, 179, 180, 183, + 187, 183, 183, 187, 188, 183, 183, 188, 193, 194, 194, 193, 193, 191, 191, 189, + 184, 184, 186, 186, 181, 173, 172, 176, 178, 171, 172, 178, 180, 176, 174, 176, + 178, 179, 179, 180, 183, 187, 183, 174, 161, 157, 155, 155, 152, 150, 155, 162, + 162, 165, 170, 171, 172, 172, 176, 178, 176, 175, 174, 174, 172, 170, 170, 170, + 170, 171, 158, 148, 150, 141, 124, 114, 97, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 176, 177, 189, + 214, 216, 219, 210, 200, 197, 193, 188, 184, 183, 181, 179, 178, 184, 181, 181, + 185, 185, 181, 183, 187, 191, 190, 187, 184, 183, 181, 183, 182, 177, 175, 175, + 174, 167, 160, 161, 165, 168, 163, 164, 171, 174, 172, 169, 172, 174, 176, 176, + 176, 180, 183, 178, 171, 164, 159, 155, 153, 148, 145, 148, 154, 163, 166, 171, + 174, 177, 176, 178, 177, 177, 176, 176, 173, 173, 171, 169, 171, 168, 168, 162, + 159, 152, 132, 124, 137, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 173, 195, 213, 228, 216, + 208, 198, 198, 190, 184, 182, 184, 183, 177, 172, 180, 179, 179, 181, 181, 179, + 179, 181, 184, 186, 184, 182, 180, 176, 174, 172, 167, 165, 162, 160, 156, 151, + 156, 163, 166, 164, 167, 172, 176, 176, 175, 177, 173, 174, 173, 173, 176, 180, + 176, 169, 164, 158, 154, 151, 145, 140, 143, 148, 156, 159, 166, 173, 180, 181, + 179, 177, 179, 178, 178, 175, 175, 173, 170, 171, 168, 165, 158, 158, 148, 131, + 143, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 184, 209, 213, 231, 207, 203, 197, 189, + 184, 180, 178, 179, 178, 173, 171, 177, 177, 177, 178, 178, 177, 177, 178, 177, + 179, 182, 182, 178, 171, 163, 160, 162, 160, 157, 156, 154, 154, 163, 173, 170, + 169, 171, 176, 180, 181, 180, 180, 174, 175, 174, 173, 176, 180, 176, 169, 162, + 157, 152, 150, 144, 140, 143, 149, 143, 148, 156, 166, 176, 182, 182, 181, 179, + 179, 178, 176, 175, 171, 170, 169, 171, 164, 152, 144, 139, 134, 156, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 200, 219, 205, 218, 196, 199, 201, 182, 181, 180, 177, + 174, 172, 172, 175, 175, 177, 177, 176, 175, 176, 176, 175, 172, 172, 172, 171, + 168, 163, 158, 156, 165, 163, 161, 160, 158, 159, 168, 179, 174, 175, 176, 178, + 180, 182, 181, 178, 176, 176, 174, 172, 175, 179, 175, 169, 165, 159, 155, 151, + 145, 141, 143, 148, 139, 141, 149, 157, 166, 173, 177, 178, 177, 178, 178, 176, + 174, 170, 168, 166, 165, 166, 154, 140, 136, 128, 126, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 224, 210, 216, 202, 189, 186, 182, 182, 181, 176, 172, 170, 173, + 178, 172, 175, 175, 173, 172, 174, 174, 170, 175, 171, 165, 159, 158, 159, 163, + 166, 170, 168, 166, 164, 161, 160, 166, 175, 177, 179, 180, 181, 183, 186, 183, + 178, 177, 176, 174, 171, 174, 178, 175, 169, 171, 165, 159, 154, 146, 140, 141, + 146, 142, 145, 152, 155, 159, 163, 168, 171, 175, 175, 174, 174, 171, 167, 164, + 161, 154, 162, 158, 145, 133, 105, 132, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 244, 206, 208, 212, 186, 177, 187, 183, 177, 172, 169, 169, 170, 172, 166, 172, + 172, 168, 168, 172, 170, 166, 171, 167, 162, 158, 159, 162, 167, 171, 169, 168, + 166, 165, 163, 160, 164, 171, 178, 181, 182, 181, 182, 186, 184, 178, 180, 179, + 176, 174, 177, 181, 178, 172, 172, 166, 160, 155, 147, 141, 142, 147, 142, 149, + 157, 159, 159, 158, 162, 167, 172, 173, 172, 172, 169, 165, 160, 156, 150, 154, + 152, 144, 124, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 182, + 212, 195, 192, 192, 182, 171, 166, 166, 167, 165, 164, 163, 170, 170, 165, 165, + 170, 168, 163, 155, 157, 159, 161, 162, 163, 162, 162, 164, 163, 164, 165, 163, + 160, 163, 170, 168, 173, 175, 173, 176, 180, 179, 173, 185, 184, 181, 178, 181, + 185, 182, 176, 168, 162, 158, 154, 148, 143, 145, 151, 139, 150, 161, 165, 160, + 159, 163, 168, 170, 169, 170, 169, 166, 162, 156, 153, 154, 147, 140, 131, 109, + 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 193, 169, 196, 195, + 189, 187, 181, 174, 172, 172, 168, 164, 163, 166, 169, 168, 165, 161, 159, 159, + 153, 156, 160, 162, 162, 162, 163, 164, 156, 158, 160, 161, 162, 161, 159, 158, + 164, 167, 172, 174, 174, 173, 174, 175, 171, 173, 176, 181, 185, 186, 182, 180, + 169, 168, 163, 153, 142, 140, 147, 155, 143, 150, 159, 166, 165, 162, 158, 157, + 162, 163, 166, 165, 163, 160, 155, 150, 141, 137, 133, 129, 143, 164, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 194, 191, 198, 188, 186, 181, + 174, 172, 173, 169, 166, 168, 170, 170, 168, 164, 160, 158, 158, 154, 156, 157, + 157, 155, 155, 156, 157, 160, 161, 163, 164, 165, 165, 163, 162, 169, 170, 172, + 171, 169, 170, 174, 180, 172, 178, 185, 192, 195, 191, 182, 176, 163, 165, 164, + 158, 150, 147, 148, 149, 145, 151, 160, 163, 163, 159, 157, 154, 158, 157, 160, + 161, 161, 158, 153, 147, 143, 132, 135, 151, 168, 174, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 213, 190, 198, 187, 186, 181, 174, 171, 173, + 171, 168, 174, 174, 171, 167, 162, 158, 157, 157, 165, 167, 167, 164, 161, 160, + 162, 163, 158, 159, 158, 159, 159, 160, 160, 158, 155, 160, 164, 165, 161, 161, + 166, 171, 184, 189, 195, 200, 202, 198, 189, 183, 169, 167, 163, 158, 154, 151, + 150, 148, 150, 153, 160, 162, 162, 158, 157, 156, 154, 152, 154, 157, 158, 156, + 151, 143, 135, 121, 135, 170, 188, 180, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 197, 191, 186, 186, 182, 174, 171, 173, 172, 169, 179, + 178, 174, 167, 162, 158, 157, 160, 161, 163, 163, 163, 160, 158, 160, 161, 166, + 166, 166, 166, 166, 168, 168, 169, 163, 164, 162, 158, 154, 155, 166, 177, 181, + 181, 181, 182, 184, 184, 182, 180, 178, 169, 158, 151, 148, 150, 152, 151, 153, + 154, 159, 161, 162, 161, 161, 158, 148, 147, 149, 153, 156, 155, 147, 139, 130, + 127, 146, 177, 186, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 183, 187, 187, 183, 174, 170, 172, 173, 171, 178, 178, 174, 167, + 162, 160, 160, 163, 162, 165, 167, 166, 164, 164, 164, 166, 164, 165, 165, 166, + 167, 168, 167, 168, 177, 171, 160, 148, 141, 143, 152, 162, 175, 174, 173, 174, + 176, 177, 176, 175, 168, 160, 150, 145, 145, 148, 150, 147, 148, 147, 151, 154, + 158, 159, 159, 159, 147, 147, 150, 154, 155, 152, 145, 136, 141, 155, 176, 185, + 184, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 188, 188, 184, 175, 169, 171, 172, 172, 176, 175, 174, 168, 164, 163, 166, + 168, 165, 165, 163, 160, 157, 158, 160, 164, 176, 178, 179, 181, 182, 181, 182, + 180, 173, 175, 176, 174, 166, 154, 144, 138, 160, 161, 164, 168, 170, 169, 163, + 159, 148, 146, 146, 148, 150, 150, 146, 141, 144, 141, 143, 146, 151, 154, 156, + 155, 148, 151, 155, 156, 154, 148, 142, 134, 126, 151, 174, 172, 170, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, + 186, 175, 168, 169, 172, 172, 171, 171, 171, 170, 167, 167, 170, 173, 160, 154, + 146, 136, 130, 129, 135, 144, 146, 149, 152, 154, 155, 153, 154, 151, 172, 176, + 182, 189, 191, 182, 171, 160, 153, 152, 154, 156, 157, 156, 150, 146, 146, 148, + 150, 153, 153, 151, 147, 141, 145, 140, 141, 142, 148, 151, 153, 153, 151, 157, + 162, 161, 154, 145, 140, 135, 136, 159, 178, 174, 171, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 186, 174, 168, + 167, 171, 171, 169, 170, 172, 170, 169, 170, 173, 176, 176, 168, 151, 136, 126, + 128, 136, 146, 151, 156, 159, 163, 166, 166, 166, 165, 164, 155, 145, 147, 158, + 176, 191, 197, 195, 190, 185, 181, 181, 181, 180, 178, 168, 167, 165, 163, 160, + 158, 158, 154, 153, 148, 145, 145, 149, 153, 153, 153, 153, 160, 165, 163, 153, + 143, 139, 134, 85, 99, 105, 99, 88, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 180, 179, 173, 169, 167, + 174, 176, 175, 176, 175, 173, 173, 172, 178, 174, 167, 157, 146, 134, 126, 122, + 150, 150, 160, 159, 167, 170, 165, 186, 181, 190, 184, 175, 175, 170, 160, 159, + 165, 174, 166, 166, 154, 141, 151, 147, 148, 150, 153, 156, 159, 158, 157, 150, + 127, 127, 135, 141, 146, 150, 157, 160, 154, 168, 173, 156, 140, 143, 132, 98, + 44, 43, 45, 46, 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 230, 174, 168, 166, 168, 173, 174, 173, + 173, 172, 171, 172, 171, 172, 177, 179, 172, 158, 140, 130, 124, 113, 141, 164, + 151, 154, 171, 168, 177, 176, 185, 182, 179, 185, 184, 177, 179, 174, 181, 171, + 174, 169, 161, 168, 162, 165, 160, 154, 149, 146, 147, 149, 143, 128, 131, 140, + 148, 153, 156, 158, 160, 173, 162, 156, 153, 157, 152, 109, 46, 46, 41, 36, + 33, 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 227, 166, 165, 170, 177, 177, 177, 175, 174, 174, + 175, 176, 172, 179, 185, 180, 165, 151, 142, 139, 126, 148, 165, 152, 156, 163, + 147, 145, 150, 159, 154, 150, 159, 159, 152, 151, 160, 165, 157, 163, 163, 157, + 165, 158, 162, 163, 164, 164, 162, 158, 156, 147, 137, 139, 149, 157, 161, 160, + 158, 157, 162, 160, 156, 139, 125, 141, 170, 178, 144, 137, 128, 124, 170, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 226, 167, 169, 176, 177, 178, 179, 179, 178, 177, 178, 175, + 179, 180, 177, 169, 161, 157, 155, 146, 131, 133, 148, 175, 179, 155, 156, 155, + 161, 154, 150, 158, 159, 152, 150, 128, 135, 132, 138, 136, 130, 139, 135, 150, + 151, 152, 153, 153, 154, 154, 148, 154, 153, 160, 164, 166, 162, 157, 153, 157, + 142, 134, 130, 132, 157, 186, 196, 174, 171, 168, 167, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 169, 167, 167, 171, 175, 177, 178, 176, 173, 172, 180, 178, 174, 174, + 175, 170, 161, 155, 170, 142, 130, 137, 162, 167, 143, 145, 155, 159, 156, 157, + 170, 178, 174, 174, 148, 160, 161, 168, 164, 156, 170, 172, 165, 156, 141, 128, + 126, 135, 149, 154, 163, 158, 160, 160, 161, 158, 156, 151, 153, 130, 124, 140, + 156, 172, 172, 158, 175, 176, 178, 178, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 166, 165, 169, 173, 176, 178, 176, 173, 173, 180, 177, 175, 179, 185, 178, 161, + 150, 176, 174, 159, 130, 128, 132, 114, 113, 153, 156, 153, 153, 172, 180, 180, + 178, 147, 163, 169, 176, 171, 163, 181, 185, 167, 157, 144, 135, 134, 144, 158, + 163, 159, 153, 151, 151, 153, 153, 151, 147, 131, 135, 153, 159, 156, 165, 185, + 193, 172, 170, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 168, + 169, 171, 174, 175, 176, 177, 179, 177, 176, 180, 185, 180, 168, 159, 155, 167, + 169, 142, 129, 128, 118, 130, 159, 160, 154, 153, 171, 178, 174, 171, 155, 169, + 173, 182, 179, 169, 183, 184, 139, 140, 140, 141, 144, 151, 155, 157, 153, 150, + 146, 147, 148, 148, 144, 139, 136, 147, 168, 174, 168, 171, 171, 160, 176, 175, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 163, 163, 166, + 168, 172, 175, 178, 175, 174, 175, 179, 179, 178, 178, 166, 165, 173, 168, 155, + 131, 117, 143, 149, 150, 144, 143, 160, 167, 163, 161, 153, 165, 163, 172, 170, + 158, 167, 164, 149, 148, 143, 140, 144, 151, 160, 164, 155, 152, 148, 148, 148, + 145, 138, 133, 159, 176, 193, 185, 166, 168, 179, 177, 172, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 160, 165, 170, 170, 168, + 171, 174, 176, 179, 178, 177, 175, 176, 166, 164, 164, 171, 168, 155, 147, 147, + 153, 143, 158, 157, 170, 145, 147, 144, 129, 130, 132, 135, 140, 143, 147, 148, + 159, 148, 138, 138, 148, 157, 158, 155, 156, 152, 143, 139, 141, 148, 145, 138, + 187, 185, 184, 175, 163, 154, 156, 163, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 162, 168, 171, 174, 172, 167, 170, 172, + 174, 174, 174, 173, 175, 175, 159, 150, 160, 173, 171, 167, 168, 166, 156, 158, + 158, 160, 144, 143, 147, 147, 147, 146, 145, 146, 151, 156, 158, 155, 150, 147, + 149, 155, 157, 154, 149, 141, 153, 154, 144, 140, 147, 147, 142, 129, 117, 100, + 81, 59, 42, 37, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 226, 172, 176, 175, 170, 170, 171, 173, 174, 175, + 173, 175, 180, 164, 153, 158, 170, 177, 184, 191, 188, 181, 167, 169, 156, 149, + 144, 153, 155, 157, 157, 157, 158, 160, 163, 162, 152, 153, 155, 161, 163, 157, + 150, 143, 154, 153, 142, 131, 134, 140, 132, 113, 49, 42, 39, 43, 46, 45, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 227, 174, 176, 177, 176, 175, 175, 174, 174, 175, 175, 176, + 173, 171, 168, 166, 169, 184, 200, 211, 208, 189, 195, 174, 175, 162, 171, 172, + 174, 177, 175, 173, 168, 161, 155, 152, 155, 161, 162, 162, 155, 148, 143, 137, + 134, 133, 130, 119, 94, 63, 40, 49, 49, 54, 63, 64, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 228, 177, 181, 180, 178, 176, 173, 170, 170, 172, 174, 177, 178, 174, + 166, 163, 169, 179, 197, 201, 190, 203, 189, 194, 180, 187, 197, 196, 189, 181, + 170, 161, 152, 145, 155, 155, 157, 157, 153, 149, 148, 145, 144, 136, 131, 114, + 76, 45, 57, 88, 112, 118, 132, 184, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 180, 179, 178, 174, 170, 167, 165, 167, 179, 175, 168, 169, 171, 168, 158, + 151, 154, 162, 165, 176, 175, 181, 176, 180, 191, 184, 174, 164, 155, 154, 153, + 151, 157, 154, 152, 151, 148, 148, 147, 144, 128, 109, 94, 81, 61, 61, 105, + 161, 191, 187, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 178, + 176, 176, 172, 168, 165, 167, 179, 176, 168, 167, 172, 168, 155, 143, 139, 141, + 150, 149, 160, 159, 163, 161, 165, 163, 158, 154, 152, 154, 157, 157, 154, 152, + 149, 150, 150, 149, 146, 138, 128, 128, 142, 156, 164, 168, 176, 186, 194, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 178, 178, 177, + 172, 169, 170, 174, 178, 176, 172, 168, 166, 159, 157, 160, 156, 160, 145, 155, + 144, 155, 149, 155, 156, 159, 163, 164, 163, 159, 155, 152, 152, 151, 153, 154, + 149, 142, 132, 141, 160, 178, 176, 175, 180, 179, 173, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 175, 176, 175, 173, 171, + 175, 176, 173, 171, 169, 168, 168, 168, 162, 162, 161, 163, 163, 165, 165, 165, + 159, 160, 163, 163, 160, 159, 161, 162, 159, 158, 159, 158, 151, 142, 143, 144, + 182, 172, 174, 182, 185, 177, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 179, 179, 179, 177, 176, 175, + 173, 173, 173, 174, 175, 169, 168, 165, 163, 161, 159, 158, 156, 157, 159, 162, + 161, 161, 160, 162, 163, 164, 162, 161, 152, 134, 128, 146, 169, 157, 165, 180, + 188, 184, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 178, 181, 182, 179, 178, 176, 175, 174, 176, + 178, 179, 178, 177, 174, 171, 169, 167, 165, 163, 165, 165, 164, 163, 163, 163, + 165, 166, 170, 163, 157, 152, 146, 147, 161, 177, 180, 188, 194, 190, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 229, 182, 181, 179, 176, 174, 174, 175, 177, 179, 180, + 179, 177, 175, 174, 173, 172, 172, 168, 167, 165, 165, 165, 166, 168, 169, 165, + 162, 153, 144, 150, 168, 179, 179, 180, 181, 206, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 230, 182, 180, 178, 176, 175, 175, 177, 178, 180, 179, 177, 175, + 174, 173, 172, 172, 170, 168, 166, 165, 166, 168, 169, 168, 157, 161, 152, 138, + 147, 172, 177, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 230, 180, 179, 178, 178, 179, 179, 188, 186, 184, 181, 178, 176, 175, + 175, 171, 169, 167, 167, 168, 168, 168, 164, 159, 150, 144, 152, 176, 183, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 175, 177, 178, 178, 178, 177, 187, 186, 183, 181, 179, 177, 176, 176, 175, 173, + 169, 168, 169, 166, 162, 158, 163, 142, 144, 172, 184, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, + 176, 177, 175, 176, 175, 175, 173, 174, 173, 174, 175, 178, 174, 171, 169, 168, + 164, 159, 152, 156, 144, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 170, 173, 178, 174, 170, 167, 172, 176, 164, 166, 165, 161, 158, 157, 155, 149, + 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 76, + 80, 27, 31, 80, 128, 43, 19, 39, 69, 57, 72, 59, 67, 74, 81, 86, + 95, 116, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 196, 93, 107, 98, 108, 135, 148, 168, 163, 155, 67, 64, + 77, 105, 126, 129, 121, 103, 89, 141, 141, 127, 113, 123, 123, 124, 145, 177, + 191, 201, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 68, 54, 80, + 79, 90, 134, 172, 183, 178, 190, 176, 147, 159, 140, 157, 155, 181, 164, 141, + 147, 124, 140, 146, 175, 164, 129, 125, 137, 138, 136, 154, 186, 196, 187, 195, + 210, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 207, 94, 108, 116, 128, 119, 154, 167, 181, + 187, 198, 177, 164, 169, 143, 150, 139, 165, 184, 197, 192, 150, 143, 136, 195, + 196, 170, 156, 162, 140, 152, 154, 154, 169, 196, 204, 198, 180, 188, 198, 210, + 227, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 192, 79, 91, 99, 66, 73, 93, 120, 125, 183, 201, 194, 168, 174, 159, + 158, 146, 148, 153, 167, 178, 200, 159, 153, 173, 183, 180, 170, 145, 151, 137, + 158, 156, 160, 153, 142, 140, 150, 151, 146, 174, 174, 176, 180, 186, 190, 203, + 224, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 40, 58, 60, + 71, 107, 111, 134, 138, 144, 133, 168, 172, 176, 152, 156, 146, 160, 145, 158, + 198, 152, 175, 153, 159, 177, 183, 161, 193, 211, 199, 188, 130, 173, 160, 159, + 151, 137, 131, 133, 136, 136, 155, 143, 128, 120, 124, 136, 155, 170, 199, 213, + 231, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 209, 118, 103, 102, 85, 94, 130, 146, 149, + 173, 136, 165, 219, 182, 182, 158, 131, 141, 149, 136, 164, 173, 152, 149, 150, + 163, 150, 183, 143, 143, 167, 186, 169, 149, 159, 177, 164, 135, 112, 112, 120, + 122, 125, 130, 120, 157, 145, 120, 133, 129, 115, 127, 141, 169, 215, 202, 202, + 231, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 203, 118, 109, 128, 126, 151, 164, 188, 222, 193, 224, 215, 210, 183, + 183, 177, 152, 137, 144, 152, 136, 167, 134, 133, 139, 146, 143, 156, 154, 154, + 130, 155, 169, 155, 147, 168, 173, 148, 114, 133, 139, 126, 125, 139, 143, 132, + 125, 133, 122, 123, 147, 138, 109, 105, 108, 109, 137, 164, 185, 193, 195, 226, + 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 107, 110, + 125, 188, 181, 215, 214, 208, 224, 212, 224, 223, 201, 182, 164, 171, 153, 153, + 172, 142, 153, 130, 132, 134, 144, 173, 155, 113, 110, 150, 154, 163, 141, 135, + 150, 169, 181, 169, 142, 149, 152, 156, 153, 140, 126, 123, 126, 136, 147, 151, + 134, 103, 87, 109, 147, 139, 113, 94, 119, 143, 150, 170, 182, 189, 233, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 192, 80, 48, 87, 112, 143, 219, 185, + 216, 196, 211, 204, 172, 190, 167, 153, 114, 119, 141, 122, 136, 173, 137, 180, + 171, 162, 162, 154, 158, 144, 151, 156, 189, 170, 187, 167, 178, 195, 164, 121, + 127, 160, 178, 170, 166, 160, 138, 118, 131, 159, 172, 132, 112, 121, 135, 143, + 128, 96, 106, 112, 100, 127, 148, 151, 166, 152, 148, 151, 192, 246, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 67, 42, 83, 91, 113, 184, 177, 231, 202, 194, 190, 197, 189, + 169, 175, 116, 134, 131, 109, 99, 109, 141, 144, 170, 175, 210, 165, 174, 144, + 145, 125, 126, 177, 175, 179, 154, 141, 135, 139, 146, 143, 145, 146, 139, 138, + 160, 158, 124, 96, 101, 123, 137, 131, 124, 129, 125, 114, 131, 143, 123, 94, + 109, 103, 121, 127, 125, 151, 151, 145, 134, 137, 168, 224, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 99, + 104, 109, 147, 140, 177, 205, 185, 206, 170, 175, 186, 189, 165, 142, 155, 124, + 136, 151, 125, 146, 166, 172, 174, 182, 164, 178, 137, 123, 136, 152, 119, 125, + 165, 154, 162, 160, 170, 183, 186, 160, 126, 121, 126, 117, 117, 118, 114, 106, + 102, 102, 101, 97, 129, 125, 124, 111, 101, 127, 148, 134, 138, 120, 97, 95, + 81, 71, 103, 136, 150, 133, 133, 154, 163, 162, 193, 232, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 214, 137, 116, 120, 133, 171, 175, 194, + 203, 199, 164, 164, 147, 165, 170, 200, 171, 172, 161, 153, 180, 161, 166, 133, + 172, 209, 154, 153, 155, 118, 133, 139, 128, 160, 157, 118, 153, 177, 179, 194, + 184, 166, 143, 123, 114, 107, 107, 99, 80, 104, 88, 89, 112, 124, 113, 107, + 113, 109, 114, 123, 126, 123, 127, 123, 109, 122, 105, 106, 105, 99, 95, 92, + 109, 126, 120, 121, 138, 155, 153, 135, 118, 144, 188, 229, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 220, 152, 110, 119, 152, 169, 173, 210, 177, 170, 207, 197, 157, + 162, 159, 146, 169, 173, 143, 177, 192, 193, 172, 173, 135, 129, 113, 151, 125, + 129, 145, 156, 130, 102, 121, 143, 160, 160, 201, 153, 134, 166, 167, 144, 139, + 128, 104, 90, 100, 106, 93, 73, 101, 113, 92, 66, 62, 77, 89, 108, 98, + 96, 105, 112, 114, 114, 116, 120, 112, 119, 101, 111, 140, 120, 111, 93, 99, + 102, 109, 131, 139, 110, 72, 77, 85, 97, 128, 184, 229, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 221, 180, + 150, 132, 136, 166, 190, 184, 157, 196, 163, 172, 137, 150, 162, 143, 139, 158, + 174, 190, 186, 180, 196, 177, 133, 119, 112, 149, 115, 142, 130, 127, 140, 155, + 170, 190, 210, 200, 162, 155, 128, 112, 98, 127, 133, 126, 121, 103, 100, 107, + 92, 81, 96, 112, 81, 61, 54, 47, 53, 69, 77, 72, 84, 97, 102, 99, + 100, 109, 118, 116, 110, 103, 97, 92, 88, 84, 81, 84, 76, 91, 101, 95, + 100, 104, 90, 86, 100, 75, 79, 90, 90, 131, 178, 226, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 220, 202, 157, 118, 122, 147, + 184, 157, 139, 183, 134, 142, 135, 125, 150, 135, 162, 168, 166, 168, 197, 143, + 169, 131, 153, 127, 103, 79, 95, 144, 124, 139, 153, 159, 160, 165, 174, 181, + 198, 169, 158, 133, 119, 85, 81, 71, 68, 61, 48, 48, 58, 59, 59, 66, + 51, 46, 56, 70, 69, 66, 59, 47, 64, 72, 82, 88, 89, 88, 90, 92, + 99, 95, 90, 85, 82, 78, 74, 71, 60, 68, 84, 84, 69, 65, 74, 79, + 88, 101, 90, 85, 85, 78, 80, 77, 75, 118, 220, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 236, 157, 195, 190, 157, 176, 175, 129, 131, 141, 146, 133, 132, + 151, 137, 127, 117, 157, 181, 188, 186, 135, 129, 113, 170, 177, 163, 127, 126, + 93, 105, 126, 101, 76, 90, 104, 115, 123, 137, 149, 140, 122, 103, 105, 109, + 96, 91, 64, 64, 75, 52, 46, 44, 46, 51, 65, 71, 62, 33, 35, 50, + 62, 64, 68, 64, 47, 64, 63, 62, 64, 69, 75, 79, 82, 81, 79, 76, + 74, 73, 70, 66, 62, 62, 66, 63, 62, 68, 69, 67, 73, 80, 99, 115, + 107, 103, 100, 90, 102, 63, 36, 52, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, + 110, 178, 181, 181, 174, 161, 135, 144, 161, 115, 120, 142, 164, 123, 121, 99, + 86, 125, 128, 144, 128, 112, 144, 144, 161, 158, 124, 131, 119, 127, 112, 82, + 86, 56, 90, 100, 112, 126, 140, 140, 119, 94, 104, 89, 71, 83, 124, 118, + 84, 66, 52, 49, 57, 55, 48, 62, 69, 48, 50, 47, 46, 42, 41, 57, + 67, 58, 56, 55, 55, 58, 64, 70, 75, 78, 71, 70, 70, 70, 70, 68, + 64, 61, 68, 70, 55, 54, 77, 86, 84, 95, 91, 86, 99, 92, 107, 116, + 83, 82, 83, 70, 106, 154, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 152, 161, 216, 188, 152, 148, + 167, 201, 170, 138, 161, 164, 145, 117, 122, 159, 152, 108, 138, 137, 137, 128, + 132, 144, 171, 136, 143, 135, 84, 69, 80, 75, 109, 107, 96, 108, 88, 98, + 113, 134, 141, 122, 90, 70, 66, 47, 73, 84, 93, 93, 72, 44, 47, 44, + 45, 53, 43, 29, 42, 52, 33, 44, 42, 44, 40, 37, 51, 59, 50, 44, + 52, 61, 68, 71, 72, 71, 70, 69, 68, 68, 68, 68, 67, 64, 60, 54, + 67, 60, 54, 68, 77, 91, 119, 97, 69, 67, 75, 121, 144, 92, 67, 66, + 100, 148, 172, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 229, 179, 167, 148, 165, 161, 164, 135, 152, 170, 161, + 182, 174, 134, 169, 179, 160, 171, 159, 163, 151, 145, 135, 122, 149, 136, 142, + 83, 97, 104, 103, 99, 106, 137, 121, 79, 89, 86, 117, 145, 137, 132, 125, + 103, 75, 66, 72, 53, 66, 68, 83, 83, 82, 61, 59, 43, 45, 43, 31, + 24, 37, 49, 43, 35, 33, 40, 44, 43, 54, 62, 57, 59, 57, 54, 54, + 55, 63, 70, 76, 65, 65, 62, 62, 61, 60, 56, 55, 54, 57, 49, 50, + 63, 76, 89, 103, 88, 87, 92, 100, 128, 140, 116, 107, 104, 119, 148, 189, + 185, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 241, 207, 222, 196, 185, 192, 173, 136, 121, 184, 187, 151, 161, 161, 132, + 137, 145, 145, 143, 139, 202, 160, 155, 156, 177, 192, 137, 126, 121, 125, 101, + 95, 133, 85, 103, 149, 142, 135, 110, 152, 125, 103, 78, 63, 60, 58, 56, + 54, 53, 69, 75, 78, 44, 51, 62, 81, 39, 42, 32, 25, 33, 40, 39, + 39, 42, 34, 39, 46, 46, 55, 68, 72, 68, 57, 44, 40, 47, 61, 73, + 80, 64, 61, 57, 55, 53, 51, 48, 45, 58, 43, 39, 50, 63, 79, 84, + 75, 95, 122, 120, 108, 92, 82, 100, 117, 122, 125, 132, 178, 186, 181, 192, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 189, 178, + 201, 166, 147, 146, 166, 164, 153, 154, 147, 175, 178, 159, 164, 143, 126, 142, + 134, 193, 166, 177, 168, 146, 115, 105, 100, 107, 99, 115, 133, 95, 96, 137, + 141, 170, 133, 117, 118, 100, 82, 86, 80, 64, 56, 57, 55, 47, 51, 46, + 45, 65, 47, 69, 67, 59, 44, 48, 36, 35, 55, 53, 34, 32, 44, 34, + 41, 52, 51, 52, 62, 67, 49, 44, 42, 50, 65, 73, 70, 64, 64, 60, + 54, 50, 48, 46, 43, 41, 40, 34, 49, 60, 53, 62, 76, 70, 104, 125, + 99, 85, 73, 69, 109, 129, 132, 188, 179, 155, 143, 177, 168, 195, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 146, 131, 128, 149, 136, 179, + 141, 133, 125, 119, 160, 157, 168, 148, 165, 162, 123, 102, 123, 135, 170, 168, + 159, 125, 126, 125, 141, 96, 112, 81, 82, 80, 120, 121, 158, 198, 116, 145, + 77, 93, 82, 63, 62, 69, 67, 52, 50, 57, 57, 45, 44, 50, 60, 64, + 57, 48, 46, 38, 41, 44, 43, 38, 35, 35, 37, 46, 41, 39, 41, 41, + 41, 44, 49, 46, 45, 44, 45, 49, 54, 60, 64, 70, 55, 50, 60, 60, + 46, 39, 43, 37, 40, 44, 46, 49, 58, 71, 82, 79, 84, 96, 106, 111, + 114, 122, 133, 156, 157, 154, 146, 144, 155, 173, 187, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 220, 167, 194, 204, 172, 150, 186, 187, 180, 120, 138, 202, + 206, 199, 179, 174, 167, 153, 147, 107, 114, 136, 185, 184, 201, 152, 157, 163, + 141, 158, 121, 109, 103, 109, 110, 114, 132, 100, 88, 86, 69, 82, 87, 63, + 68, 64, 68, 66, 53, 50, 54, 50, 51, 47, 47, 54, 56, 50, 46, 46, + 61, 58, 52, 42, 33, 30, 32, 36, 36, 32, 30, 32, 33, 32, 35, 39, + 38, 37, 36, 36, 38, 43, 48, 51, 63, 51, 44, 48, 49, 42, 38, 41, + 30, 33, 34, 35, 36, 43, 54, 64, 70, 91, 116, 128, 120, 111, 116, 128, + 125, 133, 141, 144, 143, 143, 145, 147, 150, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 167, 188, 180, 168, 170, 217, 205, 186, 177, 193, 235, 201, 228, 165, 141, + 149, 155, 110, 139, 159, 181, 217, 210, 184, 185, 205, 177, 136, 115, 129, 115, + 100, 113, 107, 113, 99, 110, 130, 139, 110, 93, 66, 62, 62, 57, 53, 57, + 56, 46, 45, 49, 43, 55, 49, 45, 46, 45, 43, 43, 46, 57, 54, 47, + 37, 30, 28, 33, 39, 33, 29, 29, 31, 32, 31, 33, 39, 37, 35, 33, + 33, 34, 38, 41, 44, 52, 45, 38, 34, 36, 38, 39, 38, 34, 35, 34, + 34, 34, 39, 48, 55, 78, 91, 104, 106, 94, 85, 92, 106, 109, 120, 135, + 146, 146, 137, 127, 121, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 132, 138, 165, + 179, 167, 196, 186, 158, 158, 154, 192, 190, 148, 125, 156, 178, 146, 133, 153, + 204, 211, 224, 220, 182, 178, 140, 132, 109, 129, 124, 93, 61, 76, 118, 119, + 119, 100, 76, 116, 137, 94, 124, 98, 75, 34, 46, 45, 53, 54, 44, 46, + 52, 51, 54, 50, 45, 41, 40, 40, 42, 44, 43, 43, 43, 38, 33, 31, + 33, 36, 35, 32, 32, 35, 36, 34, 36, 39, 37, 36, 34, 33, 33, 35, + 38, 40, 41, 42, 37, 29, 31, 39, 40, 35, 41, 41, 40, 39, 37, 42, + 48, 53, 71, 67, 64, 66, 66, 66, 70, 76, 89, 96, 110, 123, 126, 120, + 111, 107, 122, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 212, 122, 132, 163, 200, 204, 185, 183, + 151, 197, 193, 150, 175, 144, 193, 216, 148, 96, 114, 149, 205, 223, 231, 189, + 186, 164, 99, 110, 108, 119, 99, 115, 120, 98, 86, 49, 49, 92, 128, 165, + 146, 144, 130, 102, 124, 110, 38, 61, 62, 71, 70, 55, 54, 63, 64, 49, + 48, 45, 41, 40, 41, 43, 43, 50, 50, 47, 40, 33, 28, 29, 31, 33, + 30, 31, 35, 35, 32, 32, 35, 32, 31, 29, 28, 29, 30, 32, 34, 37, + 43, 42, 34, 35, 43, 43, 35, 39, 39, 37, 36, 36, 38, 43, 47, 42, + 40, 45, 55, 62, 64, 65, 67, 72, 77, 91, 108, 117, 115, 114, 116, 132, + 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 126, 125, 110, 150, 224, 220, 184, 198, 166, 188, 182, 216, + 225, 243, 213, 154, 146, 153, 149, 143, 129, 177, 170, 162, 182, 130, 96, 108, + 133, 113, 104, 120, 93, 100, 83, 87, 90, 133, 165, 154, 123, 111, 137, 128, + 115, 100, 117, 97, 79, 78, 83, 78, 60, 54, 59, 58, 42, 46, 45, 41, + 39, 41, 42, 42, 49, 47, 41, 32, 25, 24, 30, 35, 33, 31, 32, 36, + 36, 31, 30, 31, 27, 28, 27, 27, 28, 29, 31, 33, 38, 44, 45, 41, + 40, 44, 42, 35, 37, 36, 33, 32, 32, 34, 37, 39, 39, 42, 48, 50, + 48, 49, 61, 74, 63, 69, 87, 109, 120, 120, 122, 129, 134, 120, 224, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 204, 132, 131, 126, 156, 190, 169, 161, 210, 138, 206, 186, 224, 204, 155, 171, + 138, 152, 125, 136, 142, 135, 144, 146, 171, 130, 144, 116, 118, 89, 107, 93, + 113, 89, 92, 94, 88, 99, 116, 140, 104, 124, 115, 131, 112, 136, 90, 83, + 71, 75, 68, 68, 65, 52, 49, 49, 41, 38, 43, 44, 38, 35, 37, 39, + 38, 36, 37, 34, 29, 26, 27, 34, 40, 35, 33, 35, 38, 37, 31, 28, + 29, 28, 28, 28, 29, 30, 33, 35, 36, 42, 44, 45, 44, 42, 41, 39, + 37, 41, 39, 34, 32, 33, 34, 34, 36, 48, 47, 44, 43, 41, 44, 58, + 72, 57, 62, 78, 97, 103, 100, 104, 115, 115, 125, 163, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 91, 134, 121, + 136, 155, 168, 191, 180, 130, 197, 187, 197, 152, 160, 190, 145, 160, 136, 116, + 131, 105, 134, 172, 184, 171, 167, 146, 131, 110, 122, 97, 97, 101, 132, 99, + 106, 104, 146, 142, 181, 150, 128, 112, 103, 122, 54, 93, 96, 76, 62, 50, + 47, 49, 46, 48, 46, 33, 38, 43, 43, 36, 30, 35, 36, 36, 35, 39, + 42, 41, 37, 34, 34, 36, 33, 31, 32, 35, 34, 27, 23, 24, 24, 24, + 25, 27, 29, 32, 34, 36, 46, 44, 44, 44, 41, 37, 36, 38, 42, 39, + 34, 31, 31, 31, 30, 29, 35, 30, 34, 49, 61, 65, 63, 61, 76, 77, + 86, 97, 96, 90, 97, 112, 93, 112, 127, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 198, 124, 172, 188, 212, 196, 156, 197, + 222, 173, 172, 125, 141, 132, 150, 115, 130, 159, 146, 125, 93, 92, 139, 164, + 135, 120, 144, 117, 115, 126, 112, 119, 104, 115, 114, 87, 100, 121, 134, 154, + 167, 145, 122, 108, 112, 92, 93, 87, 115, 100, 86, 69, 55, 48, 52, 52, + 43, 41, 46, 54, 51, 48, 45, 37, 30, 33, 40, 35, 38, 36, 30, 31, + 37, 39, 36, 26, 33, 42, 45, 36, 22, 17, 19, 26, 24, 24, 26, 31, + 36, 39, 40, 36, 40, 44, 45, 44, 41, 40, 39, 35, 40, 42, 39, 33, + 33, 39, 48, 35, 37, 43, 53, 63, 68, 67, 66, 65, 62, 63, 72, 80, + 87, 94, 99, 96, 95, 113, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 230, 190, 178, 162, 197, 215, 180, 155, 176, 176, 157, 153, + 171, 174, 157, 152, 162, 145, 127, 107, 126, 139, 153, 160, 150, 131, 114, 109, + 131, 117, 106, 116, 120, 117, 103, 97, 147, 138, 116, 135, 144, 131, 138, 129, + 100, 129, 156, 145, 118, 88, 75, 67, 76, 59, 48, 50, 51, 45, 44, 49, + 50, 44, 40, 40, 39, 36, 36, 37, 34, 36, 35, 30, 30, 35, 38, 35, + 40, 31, 26, 30, 35, 33, 25, 20, 18, 20, 23, 26, 30, 33, 35, 37, + 47, 48, 50, 48, 45, 41, 39, 39, 36, 37, 37, 35, 34, 35, 37, 39, + 34, 36, 41, 48, 55, 58, 57, 56, 52, 49, 52, 61, 70, 78, 87, 95, + 90, 91, 111, 120, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 238, 177, 198, 196, 193, 182, 185, 143, 152, 181, 190, 215, 210, 144, 128, 158, + 140, 127, 108, 120, 113, 106, 103, 93, 75, 73, 100, 119, 113, 92, 99, 94, + 113, 93, 101, 99, 119, 148, 162, 189, 153, 143, 167, 146, 145, 183, 128, 114, + 121, 141, 98, 89, 92, 73, 54, 41, 41, 44, 42, 42, 46, 49, 38, 33, + 37, 41, 40, 35, 32, 33, 34, 32, 29, 29, 34, 36, 35, 41, 40, 39, + 36, 27, 18, 19, 25, 22, 27, 31, 33, 32, 32, 33, 36, 43, 43, 43, + 40, 35, 32, 31, 31, 34, 32, 30, 31, 34, 36, 34, 32, 32, 34, 37, + 42, 46, 46, 44, 43, 46, 44, 46, 53, 62, 69, 79, 89, 87, 85, 101, + 106, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 132, 109, 113, + 147, 203, 204, 194, 172, 182, 192, 185, 171, 132, 142, 144, 135, 108, 146, 125, + 84, 119, 144, 133, 137, 145, 138, 135, 134, 126, 111, 118, 103, 87, 69, 104, + 150, 194, 187, 149, 91, 121, 140, 113, 120, 100, 100, 121, 134, 115, 124, 121, + 95, 45, 63, 47, 35, 35, 41, 42, 42, 43, 48, 39, 35, 38, 41, 38, + 33, 29, 33, 33, 31, 29, 30, 32, 35, 35, 31, 38, 46, 44, 31, 18, + 19, 27, 34, 37, 40, 37, 31, 27, 30, 33, 42, 42, 41, 38, 35, 34, + 35, 37, 27, 26, 27, 29, 32, 34, 32, 31, 31, 33, 35, 38, 40, 39, + 37, 36, 46, 43, 44, 49, 54, 60, 69, 79, 86, 80, 88, 85, 91, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 172, 165, 188, 191, 145, 187, + 175, 187, 179, 178, 190, 163, 133, 148, 130, 150, 160, 138, 143, 116, 119, 95, + 125, 182, 224, 209, 160, 125, 112, 95, 109, 122, 113, 137, 151, 154, 129, 110, + 121, 153, 123, 119, 142, 105, 95, 114, 96, 80, 90, 66, 50, 47, 74, 53, + 42, 36, 38, 45, 47, 45, 44, 43, 39, 39, 41, 39, 35, 34, 37, 36, + 34, 32, 31, 31, 32, 34, 36, 32, 25, 25, 34, 43, 43, 37, 32, 37, + 39, 37, 31, 24, 22, 26, 31, 30, 30, 29, 26, 23, 23, 25, 27, 20, + 23, 27, 28, 29, 29, 31, 33, 31, 33, 35, 37, 37, 37, 36, 36, 39, + 38, 39, 43, 46, 50, 58, 67, 77, 73, 82, 77, 80, 94, 255, 255, 255, + 255, 255, 255, 255, 255, 56, 108, 133, 129, 85, 126, 160, 171, 170, 197, 175, + 160, 176, 158, 156, 114, 151, 147, 148, 141, 143, 123, 171, 194, 189, 163, 138, + 127, 118, 116, 131, 106, 104, 108, 90, 127, 137, 133, 91, 96, 80, 50, 86, + 101, 84, 112, 117, 105, 96, 63, 64, 51, 68, 44, 29, 39, 36, 35, 37, + 42, 43, 41, 39, 35, 36, 40, 42, 38, 35, 40, 48, 41, 37, 34, 34, + 34, 32, 33, 37, 37, 29, 25, 32, 40, 43, 43, 44, 38, 37, 34, 28, + 24, 25, 30, 35, 23, 23, 21, 19, 16, 14, 16, 18, 22, 24, 27, 28, + 26, 27, 30, 33, 30, 33, 36, 37, 36, 35, 35, 37, 34, 35, 39, 44, + 46, 48, 55, 65, 63, 64, 82, 81, 82, 91, 144, 255, 255, 255, 255, 255, + 255, 208, 106, 134, 110, 101, 83, 138, 176, 147, 159, 178, 180, 172, 161, 149, + 148, 169, 148, 136, 143, 132, 148, 166, 142, 139, 148, 124, 117, 145, 137, 107, + 108, 107, 114, 121, 119, 122, 113, 95, 72, 57, 70, 95, 75, 61, 71, 66, + 81, 85, 69, 62, 73, 62, 40, 33, 47, 32, 34, 35, 34, 35, 35, 35, + 35, 35, 35, 39, 40, 37, 35, 42, 51, 46, 40, 37, 38, 36, 32, 33, + 38, 40, 38, 38, 40, 39, 36, 38, 43, 37, 34, 31, 28, 26, 27, 29, + 31, 31, 32, 33, 32, 30, 30, 31, 33, 31, 29, 26, 25, 27, 28, 27, + 27, 29, 32, 35, 35, 33, 32, 33, 35, 34, 36, 41, 45, 45, 45, 50, + 59, 57, 59, 76, 73, 71, 79, 79, 255, 255, 255, 255, 255, 255, 79, 111, + 164, 156, 165, 164, 183, 192, 238, 219, 166, 161, 158, 138, 155, 163, 140, 146, + 144, 136, 140, 128, 163, 139, 127, 138, 110, 103, 132, 113, 92, 126, 141, 133, + 114, 122, 96, 87, 63, 66, 78, 67, 55, 66, 70, 62, 68, 72, 44, 59, + 68, 34, 42, 42, 43, 15, 35, 39, 40, 36, 34, 34, 36, 37, 39, 37, + 37, 38, 35, 34, 39, 46, 50, 43, 39, 40, 38, 33, 33, 39, 44, 31, + 26, 39, 56, 57, 42, 29, 33, 30, 26, 24, 23, 22, 20, 18, 19, 21, + 24, 26, 27, 28, 31, 33, 41, 33, 25, 24, 28, 29, 26, 21, 29, 32, + 34, 33, 30, 29, 30, 32, 32, 35, 39, 41, 39, 35, 39, 46, 60, 57, + 67, 57, 52, 62, 68, 255, 255, 255, 255, 255, 93, 102, 114, 85, 164, 143, + 113, 170, 173, 172, 167, 152, 142, 137, 146, 150, 152, 139, 135, 143, 134, 137, + 147, 132, 127, 110, 128, 95, 134, 116, 138, 137, 138, 90, 95, 98, 113, 90, + 89, 72, 63, 69, 62, 56, 57, 64, 70, 72, 70, 76, 65, 56, 52, 41, + 27, 26, 35, 32, 34, 38, 42, 44, 40, 33, 27, 30, 33, 37, 37, 33, + 28, 25, 24, 32, 33, 33, 33, 34, 36, 34, 31, 38, 34, 34, 39, 41, + 36, 31, 29, 17, 18, 20, 22, 23, 23, 22, 22, 19, 21, 23, 25, 27, + 30, 34, 36, 38, 38, 37, 32, 27, 26, 28, 31, 40, 33, 31, 36, 37, + 32, 28, 30, 33, 24, 24, 35, 38, 34, 44, 63, 52, 47, 42, 41, 45, + 56, 66, 134, 255, 255, 255, 255, 180, 184, 140, 150, 144, 111, 160, 165, 162, + 132, 147, 162, 165, 158, 146, 130, 119, 142, 135, 139, 126, 124, 126, 105, 97, + 86, 115, 114, 154, 140, 134, 112, 94, 94, 90, 83, 94, 74, 80, 66, 58, + 30, 37, 49, 59, 67, 70, 71, 72, 64, 54, 48, 46, 40, 32, 34, 44, + 39, 39, 41, 43, 44, 40, 34, 29, 39, 39, 41, 40, 36, 32, 29, 27, + 27, 27, 26, 24, 24, 24, 23, 21, 33, 29, 30, 36, 38, 35, 31, 31, + 28, 27, 26, 25, 24, 22, 20, 19, 20, 25, 30, 31, 30, 32, 39, 45, + 39, 38, 34, 29, 25, 25, 29, 33, 25, 22, 25, 33, 37, 34, 32, 34, + 38, 34, 36, 42, 43, 40, 46, 59, 64, 58, 51, 47, 46, 51, 57, 60, + 255, 255, 255, 255, 91, 81, 146, 93, 148, 192, 151, 156, 163, 145, 155, 164, + 156, 150, 143, 145, 143, 132, 128, 136, 128, 126, 127, 108, 103, 98, 118, 127, + 144, 137, 116, 102, 83, 98, 92, 83, 95, 80, 89, 76, 67, 43, 43, 46, + 54, 63, 67, 62, 57, 50, 41, 34, 35, 34, 31, 35, 44, 41, 41, 42, + 43, 45, 44, 40, 36, 41, 40, 40, 40, 39, 37, 33, 31, 31, 29, 27, + 25, 23, 21, 21, 22, 29, 26, 27, 32, 35, 32, 30, 31, 29, 27, 24, + 21, 18, 17, 16, 16, 25, 32, 38, 36, 30, 29, 36, 43, 36, 34, 31, + 26, 24, 26, 30, 35, 27, 27, 31, 35, 33, 28, 25, 27, 40, 43, 46, + 46, 45, 46, 51, 55, 58, 56, 53, 50, 49, 52, 56, 59, 255, 255, 255, + 255, 88, 102, 136, 128, 104, 87, 118, 152, 134, 169, 173, 180, 165, 163, 149, + 149, 142, 135, 133, 143, 131, 119, 113, 93, 92, 124, 125, 130, 118, 119, 100, + 105, 99, 102, 101, 98, 110, 89, 91, 73, 62, 62, 68, 73, 70, 62, 52, + 47, 47, 51, 41, 32, 32, 32, 32, 34, 39, 39, 39, 39, 41, 45, 46, + 46, 45, 32, 33, 35, 39, 40, 39, 35, 32, 35, 32, 31, 30, 29, 28, + 30, 34, 31, 28, 29, 32, 33, 29, 27, 29, 24, 22, 19, 17, 16, 17, + 19, 21, 34, 37, 37, 33, 26, 22, 25, 28, 30, 29, 28, 28, 28, 30, + 33, 35, 34, 35, 36, 34, 28, 23, 23, 25, 38, 46, 48, 42, 40, 47, + 51, 49, 46, 47, 49, 50, 50, 52, 55, 57, 121, 255, 255, 193, 92, 84, + 72, 115, 159, 132, 113, 155, 159, 163, 146, 137, 114, 134, 142, 168, 170, 133, + 134, 149, 140, 128, 122, 110, 118, 117, 112, 127, 107, 114, 95, 98, 93, 102, + 105, 103, 109, 77, 71, 52, 43, 42, 66, 86, 83, 61, 43, 44, 54, 60, + 50, 40, 38, 39, 41, 41, 43, 40, 38, 37, 39, 42, 44, 44, 44, 28, + 31, 37, 41, 42, 38, 33, 28, 32, 29, 29, 33, 32, 31, 35, 43, 37, + 35, 35, 37, 33, 27, 24, 25, 24, 22, 20, 18, 19, 22, 26, 28, 39, + 35, 31, 28, 25, 23, 20, 18, 24, 26, 29, 32, 35, 36, 35, 34, 28, + 29, 29, 25, 23, 25, 31, 36, 37, 45, 44, 33, 29, 36, 41, 38, 40, + 43, 46, 47, 46, 46, 47, 48, 56, 255, 255, 106, 91, 90, 93, 139, 115, + 128, 154, 148, 162, 142, 140, 164, 164, 200, 187, 185, 158, 121, 120, 137, 135, + 133, 135, 130, 142, 104, 95, 111, 91, 100, 89, 87, 86, 99, 100, 96, 98, + 66, 66, 57, 56, 56, 54, 52, 52, 54, 56, 55, 55, 56, 47, 39, 38, + 44, 48, 47, 45, 44, 42, 39, 38, 39, 39, 37, 36, 34, 38, 44, 45, + 40, 34, 28, 25, 31, 28, 31, 37, 36, 32, 37, 47, 39, 38, 40, 41, + 36, 28, 24, 25, 23, 21, 19, 17, 18, 20, 23, 25, 35, 30, 26, 26, + 29, 31, 28, 24, 26, 28, 32, 37, 41, 40, 35, 31, 27, 27, 23, 17, + 16, 23, 30, 33, 38, 42, 39, 28, 21, 25, 29, 27, 28, 34, 41, 44, + 45, 45, 48, 51, 61, 255, 255, 89, 96, 104, 89, 96, 151, 141, 113, 191, + 152, 162, 145, 152, 131, 163, 146, 149, 124, 133, 117, 119, 113, 111, 110, 96, + 101, 110, 91, 96, 74, 79, 85, 82, 91, 93, 91, 85, 89, 65, 72, 69, + 71, 74, 55, 39, 42, 59, 69, 62, 51, 47, 40, 32, 35, 44, 51, 49, + 43, 46, 43, 40, 38, 38, 36, 34, 31, 38, 43, 48, 45, 35, 28, 27, + 28, 35, 31, 34, 40, 37, 29, 32, 43, 33, 35, 40, 44, 40, 32, 28, + 29, 19, 18, 16, 15, 16, 18, 20, 22, 27, 26, 26, 28, 32, 35, 36, + 36, 35, 35, 37, 40, 42, 40, 34, 29, 36, 34, 26, 16, 14, 20, 22, + 19, 32, 34, 34, 29, 23, 22, 25, 27, 24, 31, 40, 45, 46, 47, 51, + 54, 57, 116, 255, 113, 94, 101, 116, 153, 117, 151, 159, 139, 170, 141, 123, + 132, 112, 153, 146, 164, 147, 145, 120, 113, 109, 114, 117, 99, 99, 115, 94, + 93, 74, 75, 88, 80, 93, 90, 85, 76, 82, 59, 65, 57, 53, 44, 57, + 73, 81, 78, 69, 59, 55, 45, 39, 33, 36, 46, 55, 51, 43, 43, 40, + 38, 38, 38, 37, 34, 33, 36, 42, 45, 40, 29, 24, 28, 34, 34, 31, + 34, 39, 33, 22, 23, 33, 26, 30, 38, 45, 42, 36, 32, 34, 17, 17, + 17, 18, 20, 23, 26, 27, 22, 24, 28, 30, 31, 33, 38, 42, 44, 42, + 41, 41, 41, 38, 33, 28, 37, 35, 27, 18, 18, 24, 23, 17, 24, 26, + 30, 32, 29, 25, 28, 32, 35, 42, 48, 49, 44, 42, 44, 46, 48, 49, + 255, 106, 114, 122, 149, 169, 189, 179, 154, 155, 151, 138, 142, 168, 159, 155, + 162, 144, 147, 134, 139, 121, 114, 122, 101, 83, 103, 96, 95, 84, 80, 89, + 93, 96, 105, 83, 78, 74, 72, 65, 54, 48, 48, 43, 45, 63, 68, 53, + 58, 60, 43, 45, 42, 46, 55, 51, 42, 46, 56, 50, 53, 53, 47, 40, + 36, 31, 27, 34, 40, 42, 39, 34, 32, 29, 24, 36, 34, 38, 45, 43, + 33, 26, 26, 35, 36, 41, 48, 48, 41, 34, 34, 26, 24, 23, 25, 28, + 29, 24, 20, 26, 26, 26, 26, 27, 29, 31, 31, 34, 30, 30, 38, 41, + 38, 34, 32, 32, 28, 38, 42, 28, 21, 27, 30, 33, 34, 35, 35, 34, + 36, 42, 46, 48, 49, 49, 47, 44, 44, 45, 46, 39, 50, 255, 94, 107, + 129, 138, 148, 185, 196, 172, 150, 126, 170, 154, 156, 143, 148, 160, 139, 134, + 133, 138, 122, 111, 118, 113, 102, 106, 101, 104, 96, 88, 89, 84, 79, 84, + 81, 75, 68, 64, 57, 48, 43, 44, 52, 54, 69, 68, 50, 50, 53, 40, + 35, 43, 47, 46, 44, 47, 50, 51, 44, 45, 44, 39, 38, 38, 36, 31, + 33, 38, 41, 37, 34, 34, 33, 29, 33, 31, 32, 37, 35, 28, 23, 25, + 32, 33, 41, 50, 53, 48, 44, 44, 29, 29, 29, 30, 30, 29, 25, 23, + 27, 26, 26, 27, 28, 30, 32, 32, 38, 35, 36, 42, 45, 42, 39, 40, + 45, 36, 40, 45, 36, 31, 32, 28, 31, 34, 39, 41, 42, 43, 45, 47, + 42, 43, 44, 42, 40, 39, 41, 42, 39, 47, 255, 95, 114, 119, 130, 138, + 164, 160, 133, 135, 137, 150, 167, 187, 159, 125, 120, 132, 162, 135, 136, 123, + 105, 102, 107, 101, 89, 89, 97, 94, 91, 92, 83, 72, 74, 80, 73, 66, + 62, 57, 50, 49, 52, 65, 66, 73, 68, 50, 46, 51, 44, 35, 47, 51, + 43, 40, 48, 50, 44, 51, 49, 46, 42, 45, 49, 47, 41, 38, 43, 43, + 38, 36, 36, 35, 32, 37, 34, 34, 36, 35, 31, 30, 31, 35, 36, 42, + 50, 49, 43, 38, 37, 32, 34, 35, 36, 34, 31, 30, 31, 27, 27, 27, + 28, 29, 31, 33, 34, 38, 36, 38, 42, 42, 38, 40, 44, 49, 36, 36, + 42, 39, 38, 36, 26, 35, 38, 44, 48, 48, 45, 43, 43, 38, 40, 41, + 40, 38, 37, 38, 40, 46, 48, 115, 201, 105, 129, 146, 155, 166, 141, 114, + 144, 176, 146, 148, 152, 145, 137, 136, 136, 142, 146, 139, 133, 121, 108, 109, + 107, 94, 81, 87, 86, 87, 93, 86, 72, 71, 74, 68, 64, 63, 61, 56, + 56, 59, 72, 70, 69, 63, 54, 53, 54, 54, 50, 56, 57, 49, 44, 46, + 44, 39, 57, 56, 52, 50, 53, 56, 50, 43, 46, 50, 51, 46, 42, 40, + 37, 32, 39, 39, 39, 40, 39, 37, 35, 34, 31, 32, 36, 41, 41, 35, + 29, 30, 37, 40, 41, 40, 35, 33, 33, 35, 27, 28, 29, 30, 31, 32, + 34, 34, 31, 31, 34, 37, 34, 31, 34, 41, 44, 34, 35, 41, 41, 43, + 43, 31, 41, 42, 46, 47, 45, 41, 36, 33, 38, 40, 41, 41, 40, 39, + 40, 41, 48, 45, 41, 255, 82, 118, 122, 122, 136, 127, 109, 129, 148, 145, + 130, 116, 124, 140, 143, 133, 117, 134, 124, 125, 127, 115, 105, 105, 105, 94, + 94, 86, 85, 93, 87, 69, 64, 66, 63, 62, 64, 62, 57, 55, 57, 74, + 70, 61, 56, 58, 56, 54, 55, 62, 57, 55, 58, 52, 43, 40, 44, 52, + 51, 50, 50, 53, 54, 46, 36, 46, 52, 55, 52, 49, 46, 42, 37, 35, + 37, 38, 39, 37, 35, 31, 28, 21, 21, 24, 32, 35, 34, 33, 36, 45, + 48, 47, 44, 37, 33, 31, 33, 29, 30, 31, 32, 32, 34, 33, 33, 31, + 31, 34, 36, 33, 29, 32, 38, 43, 39, 44, 46, 42, 44, 46, 38, 40, + 39, 39, 38, 37, 34, 31, 29, 36, 39, 41, 42, 41, 40, 41, 42, 43, + 39, 36, 255, 97, 130, 129, 118, 128, 129, 125, 145, 155, 135, 142, 135, 133, + 120, 108, 126, 135, 128, 120, 117, 121, 115, 99, 92, 99, 101, 99, 87, 84, + 92, 87, 73, 69, 67, 65, 65, 68, 66, 61, 59, 60, 70, 68, 57, 52, + 57, 52, 46, 54, 63, 54, 53, 60, 58, 46, 44, 52, 46, 49, 51, 51, + 52, 52, 43, 34, 37, 45, 49, 50, 49, 50, 48, 44, 36, 41, 43, 41, + 38, 37, 32, 27, 26, 25, 26, 32, 34, 34, 37, 41, 55, 54, 50, 45, + 38, 32, 29, 29, 34, 34, 35, 36, 36, 36, 35, 35, 39, 37, 39, 41, + 40, 35, 35, 39, 40, 41, 47, 44, 33, 35, 38, 30, 31, 30, 28, 29, + 30, 31, 30, 29, 32, 35, 38, 40, 39, 39, 39, 40, 46, 41, 37, 255, + 120, 113, 124, 118, 120, 118, 121, 147, 156, 152, 148, 125, 130, 126, 115, 128, + 125, 132, 132, 117, 111, 120, 109, 92, 94, 92, 95, 87, 81, 85, 80, 73, + 77, 65, 63, 63, 67, 68, 67, 68, 71, 61, 68, 60, 55, 58, 48, 43, + 59, 60, 58, 58, 60, 60, 58, 57, 57, 53, 57, 57, 55, 51, 50, 43, + 37, 31, 38, 40, 39, 40, 46, 47, 47, 46, 50, 50, 45, 41, 42, 39, + 34, 38, 34, 32, 35, 37, 38, 43, 49, 55, 52, 48, 45, 42, 41, 38, + 35, 39, 41, 40, 42, 40, 39, 37, 36, 43, 39, 39, 43, 43, 39, 35, + 35, 35, 35, 40, 36, 25, 28, 31, 21, 26, 25, 24, 26, 29, 30, 29, + 27, 30, 33, 37, 39, 39, 38, 39, 39, 50, 44, 40, 255, 145, 109, 131, + 134, 146, 152, 152, 160, 148, 146, 139, 114, 126, 131, 119, 127, 114, 105, 114, + 90, 76, 102, 105, 82, 78, 88, 95, 90, 80, 76, 67, 63, 72, 55, 52, + 53, 59, 64, 67, 73, 80, 53, 67, 64, 60, 60, 48, 45, 69, 59, 66, + 66, 59, 60, 68, 67, 58, 60, 63, 61, 53, 45, 42, 37, 32, 31, 35, + 34, 30, 30, 37, 43, 45, 52, 54, 51, 43, 40, 42, 41, 36, 35, 31, + 30, 35, 39, 45, 54, 62, 48, 45, 42, 44, 47, 49, 48, 46, 43, 45, + 44, 45, 44, 41, 39, 39, 41, 37, 37, 41, 42, 37, 31, 29, 34, 33, + 37, 34, 27, 32, 33, 22, 27, 26, 25, 27, 30, 29, 25, 22, 31, 34, + 38, 41, 41, 40, 40, 41, 48, 41, 37, 255, 223, 107, 152, 148, 142, 142, + 162, 146, 144, 143, 148, 123, 121, 113, 100, 115, 104, 92, 86, 94, 109, 105, + 88, 86, 100, 99, 83, 71, 69, 67, 62, 62, 68, 58, 61, 62, 61, 58, + 59, 64, 70, 61, 66, 67, 65, 64, 70, 70, 67, 68, 66, 60, 55, 58, + 67, 72, 72, 75, 70, 62, 53, 44, 37, 31, 27, 33, 30, 27, 29, 36, + 44, 47, 46, 44, 52, 55, 51, 49, 50, 48, 43, 45, 48, 39, 50, 41, + 58, 64, 80, 57, 58, 64, 69, 60, 48, 50, 63, 66, 64, 58, 51, 46, + 43, 40, 38, 42, 47, 46, 40, 34, 35, 36, 34, 31, 37, 41, 38, 30, + 25, 27, 30, 28, 27, 28, 31, 34, 36, 36, 35, 27, 28, 35, 41, 39, + 34, 36, 44, 43, 40, 35, 255, 255, 110, 139, 156, 186, 176, 151, 124, 144, + 150, 146, 129, 125, 119, 107, 101, 87, 92, 72, 61, 70, 85, 90, 89, 90, + 87, 69, 59, 68, 79, 76, 64, 56, 69, 66, 63, 64, 67, 72, 74, 73, + 64, 68, 68, 65, 64, 67, 67, 64, 69, 67, 60, 51, 50, 56, 62, 63, + 74, 67, 58, 52, 50, 44, 36, 28, 30, 28, 28, 31, 38, 44, 47, 48, + 51, 53, 52, 48, 46, 50, 48, 43, 49, 56, 52, 63, 49, 57, 53, 63, + 73, 66, 66, 75, 77, 68, 62, 65, 63, 61, 59, 58, 55, 51, 47, 44, + 39, 45, 45, 39, 34, 33, 32, 30, 38, 41, 44, 42, 36, 31, 31, 32, + 32, 31, 31, 33, 36, 36, 35, 34, 32, 31, 33, 35, 34, 34, 42, 53, + 57, 45, 39, 255, 255, 139, 133, 134, 178, 179, 154, 119, 135, 147, 130, 124, + 116, 116, 112, 89, 79, 73, 75, 80, 89, 94, 94, 93, 93, 79, 64, 57, + 69, 80, 76, 64, 57, 71, 64, 60, 63, 72, 78, 76, 70, 76, 81, 82, + 79, 77, 79, 78, 77, 80, 79, 73, 61, 55, 58, 63, 66, 53, 48, 46, + 51, 61, 65, 60, 53, 40, 40, 41, 43, 47, 51, 54, 56, 55, 56, 51, + 46, 46, 50, 52, 50, 67, 79, 77, 84, 63, 66, 58, 64, 66, 72, 81, + 82, 70, 58, 61, 74, 72, 74, 75, 76, 74, 68, 60, 56, 41, 45, 46, + 41, 37, 35, 33, 29, 41, 42, 42, 40, 37, 34, 31, 30, 36, 35, 35, + 36, 37, 37, 35, 33, 35, 34, 35, 37, 37, 39, 46, 55, 52, 36, 32, + 255, 255, 217, 136, 124, 148, 153, 159, 133, 126, 127, 104, 110, 100, 103, 109, + 83, 84, 54, 65, 84, 96, 89, 73, 70, 77, 74, 66, 62, 63, 60, 54, + 56, 65, 65, 61, 60, 66, 74, 78, 75, 69, 88, 93, 96, 95, 93, 93, + 94, 94, 93, 97, 95, 86, 78, 78, 82, 84, 79, 76, 72, 73, 75, 72, + 65, 58, 54, 52, 49, 45, 44, 45, 47, 49, 55, 54, 50, 45, 44, 50, + 58, 64, 85, 96, 91, 94, 73, 78, 72, 79, 64, 73, 80, 77, 59, 47, + 52, 67, 60, 63, 68, 75, 78, 75, 65, 59, 51, 53, 50, 44, 41, 40, + 38, 35, 43, 40, 39, 40, 40, 39, 34, 30, 36, 35, 35, 36, 38, 38, + 37, 35, 35, 38, 43, 47, 47, 45, 47, 49, 45, 37, 36, 255, 255, 255, + 139, 148, 157, 143, 154, 139, 130, 108, 93, 107, 102, 101, 102, 76, 82, 74, + 60, 59, 70, 70, 58, 60, 74, 71, 63, 57, 55, 49, 43, 49, 61, 58, + 62, 68, 73, 77, 78, 77, 74, 87, 89, 96, 98, 97, 96, 99, 104, 103, + 110, 114, 109, 103, 102, 103, 103, 104, 105, 104, 100, 95, 88, 83, 81, 82, + 75, 65, 56, 51, 48, 49, 49, 46, 48, 48, 45, 43, 49, 64, 79, 87, + 99, 95, 96, 76, 84, 76, 79, 87, 77, 67, 68, 70, 67, 58, 53, 54, + 58, 65, 78, 86, 90, 82, 78, 59, 59, 54, 45, 42, 43, 44, 41, 43, + 41, 39, 40, 43, 43, 38, 33, 32, 32, 32, 35, 38, 40, 40, 38, 42, + 46, 49, 49, 48, 48, 47, 46, 49, 55, 54, 255, 255, 255, 142, 148, 167, + 150, 156, 143, 134, 101, 97, 111, 114, 106, 91, 70, 71, 80, 71, 67, 68, + 61, 53, 65, 86, 74, 61, 54, 60, 63, 59, 55, 56, 53, 61, 70, 74, + 73, 73, 77, 79, 84, 88, 96, 102, 102, 101, 105, 112, 108, 116, 120, 119, + 117, 117, 117, 114, 105, 109, 113, 112, 106, 103, 103, 107, 98, 87, 73, 64, + 59, 56, 52, 50, 43, 44, 47, 48, 48, 55, 73, 90, 87, 102, 99, 103, + 87, 93, 79, 75, 89, 84, 79, 78, 77, 73, 65, 58, 68, 69, 72, 80, + 88, 90, 85, 78, 65, 64, 57, 49, 46, 47, 46, 43, 37, 35, 35, 36, + 38, 37, 33, 29, 30, 30, 31, 35, 40, 42, 43, 42, 51, 51, 48, 42, + 41, 46, 49, 48, 40, 54, 57, 255, 255, 255, 151, 139, 155, 142, 155, 139, + 119, 100, 101, 99, 109, 101, 78, 71, 67, 64, 78, 83, 69, 54, 55, 65, + 72, 76, 65, 62, 68, 71, 65, 60, 62, 57, 63, 68, 69, 69, 73, 80, + 86, 91, 94, 104, 113, 113, 110, 114, 123, 117, 121, 123, 121, 121, 123, 122, + 119, 125, 125, 121, 115, 108, 101, 99, 99, 97, 87, 75, 71, 70, 69, 62, + 55, 52, 48, 49, 56, 64, 72, 86, 98, 95, 107, 102, 106, 93, 105, 91, + 84, 74, 86, 96, 93, 81, 72, 69, 71, 74, 69, 66, 69, 73, 74, 69, + 64, 68, 68, 64, 57, 55, 54, 49, 42, 38, 37, 36, 36, 36, 33, 30, + 27, 31, 31, 33, 37, 42, 45, 45, 44, 48, 49, 45, 38, 39, 45, 47, + 45, 31, 41, 49, 255, 255, 255, 158, 155, 154, 124, 139, 126, 95, 96, 97, + 76, 91, 86, 66, 76, 71, 89, 97, 83, 58, 60, 84, 82, 58, 71, 68, + 70, 69, 59, 49, 56, 70, 69, 70, 69, 69, 71, 78, 88, 95, 96, 100, + 111, 120, 119, 114, 119, 129, 128, 128, 126, 122, 123, 127, 126, 122, 125, 121, + 118, 117, 117, 117, 116, 115, 122, 113, 104, 105, 111, 110, 100, 90, 65, 56, + 54, 65, 78, 88, 96, 104, 101, 109, 97, 98, 89, 109, 101, 96, 77, 85, + 94, 98, 97, 90, 77, 67, 82, 76, 72, 74, 82, 87, 86, 82, 70, 72, + 70, 65, 63, 61, 53, 43, 47, 48, 47, 45, 42, 38, 34, 32, 34, 33, + 34, 38, 43, 46, 45, 44, 37, 42, 44, 41, 41, 46, 43, 37, 43, 43, + 52, 255, 255, 255, 144, 145, 119, 117, 131, 122, 104, 119, 84, 63, 68, 75, + 80, 81, 75, 87, 71, 57, 58, 63, 61, 57, 56, 66, 67, 70, 70, 61, + 53, 53, 59, 65, 68, 70, 72, 73, 79, 90, 99, 107, 108, 111, 116, 121, + 124, 128, 130, 128, 126, 125, 126, 129, 128, 124, 120, 126, 122, 118, 117, 119, + 121, 120, 119, 115, 120, 117, 107, 105, 113, 118, 115, 115, 105, 95, 91, 95, + 102, 107, 107, 118, 119, 115, 107, 99, 94, 94, 97, 100, 87, 81, 88, 96, + 92, 76, 63, 67, 70, 101, 101, 82, 75, 69, 78, 73, 73, 69, 65, 65, + 67, 63, 56, 59, 54, 47, 43, 41, 41, 41, 41, 33, 39, 46, 48, 46, + 43, 42, 43, 41, 34, 32, 34, 32, 28, 35, 48, 46, 39, 43, 255, 255, + 255, 214, 120, 117, 124, 122, 116, 120, 91, 83, 97, 120, 123, 113, 99, 84, + 70, 57, 47, 48, 54, 58, 64, 70, 67, 64, 62, 59, 52, 50, 55, 65, + 60, 64, 70, 75, 80, 90, 103, 112, 118, 118, 120, 121, 122, 123, 123, 123, + 133, 131, 128, 126, 124, 120, 117, 114, 122, 120, 118, 120, 124, 127, 127, 127, + 127, 130, 128, 122, 119, 120, 121, 120, 123, 115, 106, 101, 101, 104, 104, 102, + 124, 122, 117, 111, 105, 102, 103, 104, 101, 95, 93, 95, 94, 84, 74, 68, + 76, 56, 68, 79, 94, 107, 87, 68, 86, 89, 87, 79, 71, 66, 59, 53, + 55, 52, 47, 44, 44, 45, 45, 45, 43, 44, 46, 49, 50, 48, 46, 43, + 46, 44, 44, 46, 45, 42, 44, 49, 51, 45, 117, 255, 255, 255, 255, 152, + 130, 119, 119, 115, 114, 122, 94, 73, 59, 46, 54, 79, 95, 68, 69, 73, + 81, 84, 76, 67, 62, 65, 61, 56, 54, 50, 49, 56, 65, 55, 61, 70, + 79, 88, 100, 112, 122, 126, 126, 128, 128, 128, 126, 123, 122, 129, 130, 130, + 129, 128, 128, 129, 131, 127, 126, 127, 129, 132, 135, 136, 136, 135, 134, 133, + 133, 129, 123, 121, 124, 122, 117, 113, 112, 114, 115, 113, 111, 115, 111, 105, + 102, 100, 101, 102, 103, 100, 103, 106, 105, 94, 82, 79, 83, 79, 69, 82, + 82, 89, 108, 96, 81, 93, 100, 101, 92, 79, 70, 62, 57, 54, 52, 48, + 46, 46, 46, 45, 44, 45, 41, 39, 41, 44, 45, 41, 36, 42, 46, 48, + 48, 49, 50, 46, 41, 49, 45, 255, 255, 255, 255, 255, 155, 126, 106, 103, + 99, 92, 101, 92, 92, 90, 76, 72, 82, 86, 94, 82, 68, 61, 61, 64, + 67, 69, 62, 59, 57, 57, 55, 51, 51, 56, 54, 60, 70, 80, 90, 101, + 112, 119, 124, 126, 129, 132, 134, 133, 131, 129, 126, 129, 132, 132, 132, 134, + 140, 145, 135, 135, 136, 137, 137, 137, 136, 136, 140, 134, 134, 139, 136, 127, + 127, 134, 124, 121, 119, 119, 121, 122, 119, 118, 120, 114, 109, 108, 111, 116, + 118, 118, 101, 106, 113, 112, 101, 91, 93, 101, 85, 92, 114, 98, 85, 100, + 102, 102, 93, 99, 100, 93, 85, 80, 72, 67, 58, 56, 51, 48, 46, 44, + 40, 38, 38, 36, 34, 34, 36, 37, 36, 34, 38, 45, 46, 43, 45, 50, + 43, 32, 44, 42, 255, 255, 255, 255, 255, 209, 115, 115, 100, 91, 102, 104, + 89, 83, 76, 65, 67, 78, 80, 94, 82, 65, 57, 62, 69, 73, 72, 66, + 60, 55, 55, 53, 49, 47, 50, 57, 63, 73, 84, 95, 106, 113, 117, 122, + 124, 129, 134, 137, 138, 138, 137, 136, 137, 137, 134, 130, 129, 132, 136, 138, + 138, 138, 138, 137, 136, 136, 135, 144, 138, 138, 143, 142, 136, 138, 147, 137, + 134, 129, 126, 123, 120, 117, 115, 121, 116, 113, 114, 119, 124, 127, 127, 111, + 112, 116, 117, 111, 104, 105, 110, 100, 97, 110, 98, 94, 115, 112, 103, 102, + 102, 100, 94, 90, 88, 80, 70, 61, 57, 52, 49, 45, 42, 39, 36, 36, + 38, 39, 38, 37, 37, 41, 44, 43, 47, 46, 41, 43, 48, 44, 33, 41, + 42, 255, 255, 255, 255, 255, 255, 109, 108, 98, 90, 97, 107, 97, 97, 96, + 86, 81, 75, 63, 85, 87, 88, 88, 90, 87, 76, 65, 72, 60, 48, 44, + 45, 47, 51, 56, 63, 69, 79, 92, 105, 114, 120, 123, 127, 128, 132, 136, + 139, 140, 140, 140, 143, 143, 142, 140, 137, 135, 135, 136, 142, 143, 144, 144, + 143, 143, 145, 147, 143, 141, 141, 142, 141, 140, 143, 149, 139, 138, 136, 133, + 130, 127, 124, 122, 121, 119, 117, 117, 120, 122, 124, 125, 126, 122, 120, 120, + 117, 110, 108, 109, 108, 97, 107, 99, 97, 114, 107, 98, 115, 113, 107, 99, + 94, 89, 78, 68, 61, 58, 52, 48, 46, 43, 42, 40, 33, 37, 40, 39, + 37, 37, 41, 46, 44, 44, 42, 37, 37, 40, 39, 35, 36, 39, 255, 255, + 255, 255, 255, 255, 103, 89, 82, 76, 73, 96, 84, 79, 78, 75, 81, 87, + 80, 89, 92, 86, 74, 67, 68, 71, 71, 70, 57, 45, 44, 50, 56, 61, + 67, 72, 78, 89, 102, 113, 122, 125, 126, 133, 134, 136, 138, 140, 141, 142, + 142, 143, 142, 142, 144, 146, 146, 145, 144, 145, 147, 148, 148, 147, 148, 152, + 156, 145, 149, 149, 145, 142, 143, 143, 142, 137, 140, 143, 144, 141, 138, 134, + 132, 139, 139, 138, 136, 133, 131, 131, 131, 134, 128, 123, 122, 117, 110, 107, + 107, 105, 96, 113, 109, 101, 109, 106, 108, 114, 116, 114, 105, 96, 89, 78, + 69, 68, 64, 56, 51, 47, 45, 43, 41, 34, 35, 36, 36, 36, 36, 37, + 38, 42, 39, 37, 36, 33, 30, 31, 35, 36, 37, 255, 255, 255, 255, 255, + 255, 121, 112, 89, 79, 94, 114, 99, 88, 78, 68, 73, 78, 71, 68, 84, + 93, 85, 73, 68, 69, 70, 63, 53, 48, 54, 63, 68, 71, 72, 80, 85, + 95, 106, 117, 122, 124, 123, 136, 136, 137, 139, 141, 143, 145, 145, 143, 141, + 140, 142, 145, 146, 142, 138, 142, 144, 144, 142, 140, 142, 146, 150, 153, 161, + 162, 154, 149, 150, 146, 138, 146, 150, 154, 154, 149, 140, 131, 126, 140, 142, + 141, 137, 129, 123, 122, 123, 134, 129, 124, 122, 116, 109, 107, 108, 101, 86, + 102, 111, 116, 127, 123, 125, 101, 110, 114, 108, 97, 88, 79, 73, 76, 70, + 60, 53, 47, 44, 41, 39, 39, 37, 35, 36, 40, 40, 37, 33, 44, 39, + 38, 41, 36, 27, 29, 38, 43, 42, 255, 255, 255, 255, 255, 255, 219, 145, + 131, 108, 105, 91, 90, 82, 90, 92, 82, 82, 75, 73, 68, 70, 77, 76, + 64, 55, 55, 59, 59, 60, 65, 68, 73, 76, 80, 93, 98, 108, 116, 124, + 127, 130, 131, 140, 140, 140, 139, 138, 138, 141, 143, 143, 143, 145, 146, 146, + 146, 146, 146, 147, 149, 151, 149, 146, 145, 145, 148, 142, 149, 157, 160, 157, + 150, 142, 138, 134, 137, 141, 147, 148, 148, 147, 146, 138, 140, 140, 137, 132, + 129, 130, 133, 128, 125, 123, 125, 127, 127, 124, 121, 100, 107, 96, 108, 107, + 135, 125, 119, 113, 104, 106, 109, 98, 93, 94, 90, 80, 71, 60, 50, 42, + 35, 34, 38, 38, 39, 42, 44, 39, 34, 38, 45, 48, 46, 44, 43, 42, + 40, 38, 37, 40, 41, 255, 255, 255, 255, 255, 255, 255, 151, 127, 109, 134, + 112, 96, 88, 88, 91, 87, 73, 65, 73, 67, 66, 70, 68, 57, 50, 51, + 62, 65, 70, 71, 70, 69, 75, 81, 96, 102, 111, 120, 126, 130, 132, 133, + 139, 141, 143, 144, 143, 142, 142, 143, 142, 143, 143, 143, 143, 143, 142, 141, + 151, 153, 155, 154, 153, 153, 154, 157, 168, 167, 164, 158, 153, 150, 149, 150, + 151, 152, 153, 152, 150, 146, 141, 139, 143, 145, 145, 143, 139, 135, 132, 130, + 122, 118, 114, 112, 112, 114, 117, 117, 114, 106, 90, 104, 104, 122, 113, 116, + 114, 110, 113, 112, 101, 98, 99, 92, 89, 78, 65, 54, 42, 32, 28, 30, + 40, 41, 43, 46, 43, 38, 40, 45, 47, 46, 44, 43, 42, 41, 40, 40, + 39, 47, 255, 255, 255, 255, 255, 255, 255, 214, 115, 101, 146, 119, 93, 93, + 77, 77, 84, 67, 76, 74, 66, 61, 62, 58, 49, 46, 50, 61, 71, 80, + 80, 75, 74, 83, 91, 103, 109, 117, 124, 129, 132, 135, 137, 140, 142, 146, + 148, 147, 145, 143, 143, 147, 148, 148, 148, 147, 146, 144, 144, 147, 148, 149, + 150, 150, 152, 156, 159, 168, 165, 158, 152, 149, 151, 156, 161, 164, 163, 161, + 158, 152, 147, 140, 136, 152, 149, 146, 144, 143, 142, 140, 138, 138, 135, 129, + 123, 120, 122, 129, 133, 121, 105, 93, 112, 114, 118, 109, 116, 111, 115, 121, + 115, 102, 102, 103, 91, 87, 77, 66, 57, 46, 36, 33, 34, 38, 36, 38, + 43, 42, 38, 36, 38, 43, 42, 40, 39, 39, 39, 40, 41, 35, 48, 255, + 255, 255, 255, 255, 255, 255, 255, 114, 102, 151, 126, 99, 108, 77, 66, 79, + 65, 94, 75, 66, 58, 57, 53, 46, 49, 56, 61, 74, 86, 89, 88, 92, + 100, 106, 110, 114, 121, 127, 131, 133, 136, 138, 141, 143, 146, 147, 146, 145, + 144, 145, 148, 149, 149, 150, 149, 149, 148, 148, 144, 144, 144, 144, 145, 148, + 151, 153, 156, 156, 154, 152, 151, 151, 154, 157, 160, 160, 160, 158, 154, 150, + 146, 144, 155, 148, 140, 137, 141, 146, 149, 150, 137, 137, 134, 128, 121, 119, + 123, 126, 106, 102, 104, 119, 123, 121, 113, 114, 108, 118, 125, 115, 101, 106, + 106, 90, 88, 79, 69, 61, 50, 39, 35, 36, 37, 34, 36, 41, 43, 39, + 35, 34, 36, 36, 35, 34, 33, 35, 38, 41, 42, 52, 255, 255, 255, 255, + 255, 255, 255, 255, 122, 104, 161, 145, 116, 124, 95, 82, 90, 66, 86, 77, + 68, 60, 58, 54, 49, 55, 66, 68, 82, 94, 98, 102, 110, 116, 116, 115, + 119, 125, 129, 132, 133, 136, 138, 142, 143, 144, 144, 142, 143, 145, 146, 142, + 143, 144, 146, 147, 147, 147, 148, 149, 148, 147, 147, 148, 149, 150, 151, 161, + 161, 160, 157, 153, 150, 149, 150, 153, 153, 154, 155, 154, 153, 153, 152, 150, + 145, 140, 139, 142, 146, 147, 146, 132, 135, 136, 133, 124, 117, 113, 112, 92, + 102, 113, 111, 116, 118, 119, 113, 112, 120, 126, 118, 105, 109, 109, 93, 98, + 88, 76, 65, 51, 37, 30, 29, 41, 38, 40, 45, 47, 42, 38, 38, 34, + 34, 33, 32, 31, 34, 39, 45, 60, 59, 255, 255, 255, 255, 255, 255, 255, + 255, 115, 85, 148, 142, 116, 118, 106, 107, 107, 75, 72, 79, 70, 63, 61, + 57, 52, 60, 72, 78, 93, 105, 108, 112, 119, 122, 118, 120, 124, 128, 131, + 133, 134, 136, 138, 142, 143, 143, 142, 141, 141, 144, 147, 142, 143, 145, 147, + 148, 149, 150, 151, 152, 151, 149, 150, 151, 151, 149, 147, 159, 158, 154, 151, + 148, 149, 152, 156, 151, 151, 152, 153, 152, 152, 153, 152, 144, 144, 146, 147, + 147, 144, 139, 135, 137, 140, 143, 141, 135, 125, 118, 113, 103, 111, 119, 103, + 111, 116, 127, 121, 120, 122, 126, 121, 111, 114, 112, 98, 95, 87, 77, 67, + 54, 40, 33, 31, 38, 36, 38, 42, 42, 38, 36, 38, 37, 37, 36, 34, + 32, 36, 43, 51, 67, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, + 123, 129, 117, 111, 110, 109, 102, 86, 80, 80, 72, 66, 64, 58, 53, 59, + 71, 81, 100, 116, 116, 115, 119, 123, 120, 125, 128, 131, 134, 135, 135, 137, + 139, 141, 142, 144, 144, 143, 142, 144, 145, 145, 146, 147, 149, 150, 150, 150, + 151, 150, 150, 150, 151, 152, 151, 148, 144, 149, 149, 148, 147, 147, 149, 154, + 158, 154, 154, 154, 154, 152, 152, 151, 151, 144, 147, 149, 149, 146, 142, 139, + 137, 135, 135, 134, 133, 130, 125, 119, 114, 118, 111, 116, 104, 120, 118, 131, + 127, 128, 121, 120, 122, 115, 115, 112, 101, 89, 82, 75, 67, 57, 44, 37, + 36, 32, 32, 34, 37, 34, 29, 31, 36, 38, 39, 38, 34, 32, 36, 45, + 53, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 117, 133, 135, + 123, 115, 96, 79, 89, 96, 79, 72, 68, 65, 57, 51, 57, 68, 79, 104, + 122, 121, 114, 118, 123, 125, 128, 131, 134, 136, 136, 137, 138, 140, 139, 142, + 146, 147, 146, 144, 143, 143, 143, 144, 145, 145, 146, 146, 145, 145, 151, 151, + 151, 154, 157, 157, 151, 147, 150, 152, 154, 154, 151, 149, 147, 147, 156, 156, + 155, 154, 154, 154, 152, 152, 149, 149, 148, 143, 140, 141, 146, 150, 145, 140, + 135, 134, 134, 133, 131, 128, 119, 100, 105, 106, 132, 119, 126, 123, 130, 115, + 114, 119, 115, 112, 110, 101, 96, 88, 79, 69, 56, 40, 31, 29, 33, 34, + 36, 39, 33, 29, 32, 40, 38, 39, 37, 34, 30, 35, 43, 52, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 122, 113, 114, 110, 102, 95, + 91, 88, 85, 88, 74, 66, 70, 73, 69, 69, 73, 83, 104, 123, 127, 124, + 126, 127, 124, 133, 135, 135, 137, 137, 138, 139, 141, 139, 139, 141, 141, 138, + 135, 141, 150, 140, 144, 147, 148, 149, 149, 151, 154, 150, 151, 152, 151, 151, + 151, 153, 155, 147, 148, 150, 152, 153, 153, 150, 147, 146, 147, 150, 151, 151, + 150, 147, 147, 151, 145, 143, 146, 149, 146, 144, 144, 139, 134, 132, 136, 139, + 135, 132, 132, 138, 134, 132, 133, 131, 128, 129, 133, 126, 125, 122, 116, 110, + 106, 106, 107, 96, 93, 84, 78, 70, 49, 34, 40, 43, 41, 38, 42, 43, + 42, 32, 25, 25, 30, 32, 43, 48, 41, 38, 121, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 208, 122, 120, 112, 100, 92, 91, 90, 89, + 82, 75, 76, 81, 75, 65, 66, 74, 84, 105, 124, 129, 127, 130, 131, 129, + 132, 134, 135, 137, 139, 141, 143, 144, 138, 135, 137, 141, 142, 140, 141, 145, + 141, 144, 146, 149, 148, 149, 150, 152, 150, 151, 150, 150, 151, 151, 152, 153, + 150, 149, 150, 151, 152, 152, 151, 149, 147, 149, 150, 151, 150, 149, 146, 145, + 146, 141, 140, 144, 146, 143, 140, 140, 136, 131, 131, 137, 141, 138, 137, 138, + 138, 134, 132, 134, 131, 128, 128, 131, 129, 124, 119, 116, 115, 112, 108, 106, + 97, 93, 83, 78, 72, 51, 33, 38, 40, 40, 39, 38, 38, 36, 34, 32, + 48, 45, 36, 34, 37, 36, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 126, 122, 112, 98, 90, 92, 94, 92, 83, 83, 90, + 93, 77, 57, 57, 70, 86, 107, 127, 131, 130, 134, 137, 135, 136, 136, 137, + 139, 141, 142, 144, 144, 144, 140, 139, 144, 146, 141, 137, 136, 141, 143, 145, + 146, 146, 146, 147, 148, 149, 149, 150, 150, 151, 151, 152, 152, 153, 151, 150, + 151, 152, 153, 153, 152, 151, 152, 152, 152, 150, 147, 144, 143, 144, 140, 140, + 144, 145, 142, 139, 138, 138, 133, 134, 139, 141, 139, 139, 140, 136, 133, 133, + 135, 132, 128, 125, 127, 129, 123, 117, 116, 118, 116, 109, 103, 100, 96, 83, + 78, 73, 52, 32, 36, 47, 48, 45, 41, 36, 35, 38, 42, 45, 46, 40, + 36, 36, 32, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 129, 122, 112, 107, 108, 106, 99, 82, 82, 91, 96, 78, 56, + 57, 73, 91, 111, 130, 134, 133, 137, 140, 138, 142, 141, 140, 140, 141, 141, + 141, 140, 144, 141, 141, 144, 144, 140, 137, 139, 139, 141, 144, 145, 144, 144, + 146, 147, 149, 148, 149, 150, 152, 153, 152, 151, 154, 153, 153, 154, 155, 156, + 155, 154, 156, 156, 154, 153, 150, 146, 144, 142, 145, 143, 144, 148, 148, 144, + 141, 141, 143, 139, 140, 142, 142, 138, 137, 139, 137, 134, 134, 137, 135, 128, + 125, 126, 125, 121, 117, 116, 117, 114, 107, 102, 104, 98, 85, 79, 73, 50, + 29, 30, 43, 41, 35, 30, 25, 25, 26, 28, 26, 35, 37, 38, 42, 113, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 208, 116, 112, 111, 112, 101, 86, 83, 79, 84, 91, 77, 58, 62, 81, 98, + 117, 135, 138, 135, 139, 141, 140, 145, 143, 140, 140, 141, 140, 138, 137, 136, + 137, 138, 138, 134, 130, 133, 140, 135, 137, 141, 142, 143, 144, 146, 148, 147, + 146, 147, 149, 153, 154, 152, 150, 153, 153, 154, 156, 158, 158, 155, 153, 158, + 157, 155, 153, 150, 146, 144, 142, 147, 145, 146, 149, 148, 144, 143, 144, 144, + 141, 142, 144, 142, 138, 138, 141, 139, 137, 136, 138, 136, 130, 126, 127, 121, + 121, 121, 118, 114, 109, 107, 106, 105, 101, 87, 80, 73, 47, 25, 26, 47, + 41, 34, 31, 33, 35, 34, 32, 27, 37, 38, 87, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 131, + 133, 133, 118, 96, 99, 87, 86, 89, 74, 52, 55, 74, 103, 123, 140, 142, + 139, 143, 145, 144, 147, 143, 139, 138, 139, 138, 134, 132, 136, 136, 134, 129, + 119, 109, 112, 120, 123, 127, 131, 134, 137, 139, 142, 144, 142, 141, 142, 146, + 152, 154, 151, 148, 153, 152, 151, 153, 155, 155, 154, 152, 155, 154, 152, 150, + 148, 145, 144, 143, 146, 144, 144, 146, 144, 141, 142, 145, 140, 138, 141, 144, + 144, 141, 142, 146, 142, 138, 136, 137, 134, 128, 125, 126, 121, 122, 122, 118, + 112, 109, 109, 109, 102, 98, 88, 81, 70, 44, 23, 26, 48, 42, 35, 36, + 43, 50, 52, 51, 42, 55, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 110, 113, 115, 99, + 76, 101, 89, 89, 91, 74, 50, 56, 80, 107, 127, 144, 147, 145, 149, 153, + 151, 155, 149, 141, 137, 135, 131, 124, 119, 121, 118, 116, 113, 106, 96, 95, + 99, 102, 106, 112, 117, 121, 124, 129, 132, 135, 134, 136, 141, 149, 152, 149, + 145, 153, 149, 145, 144, 146, 149, 152, 153, 149, 148, 147, 145, 143, 142, 141, + 141, 145, 143, 142, 143, 140, 137, 140, 146, 138, 137, 141, 144, 144, 139, 142, + 146, 142, 137, 134, 133, 129, 124, 122, 124, 120, 119, 115, 112, 110, 108, 106, + 105, 94, 95, 88, 81, 68, 42, 24, 30, 35, 30, 24, 24, 31, 41, 50, + 55, 59, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 226, 122, 125, 129, 116, 93, 81, 75, + 81, 92, 78, 59, 72, 102, 109, 129, 147, 150, 149, 154, 158, 158, 165, 157, + 145, 138, 132, 124, 114, 106, 89, 87, 89, 97, 102, 102, 100, 101, 85, 89, + 95, 100, 105, 110, 114, 119, 130, 129, 131, 138, 146, 150, 147, 143, 153, 148, + 140, 137, 139, 144, 150, 153, 145, 144, 143, 141, 140, 140, 140, 140, 147, 144, + 143, 143, 140, 137, 142, 149, 142, 141, 144, 146, 142, 137, 138, 144, 141, 136, + 132, 131, 127, 121, 120, 123, 119, 112, 106, 104, 106, 107, 102, 97, 87, 92, + 87, 80, 66, 40, 26, 34, 44, 41, 35, 31, 34, 45, 60, 132, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 112, 128, 138, 125, 105, 83, 82, 75, 72, 65, + 55, 70, 107, 119, 136, 152, 156, 153, 154, 159, 162, 154, 161, 161, 151, 140, + 135, 132, 128, 132, 132, 129, 122, 114, 110, 111, 113, 114, 97, 94, 78, 96, + 88, 94, 87, 96, 98, 102, 106, 111, 118, 124, 128, 118, 129, 133, 129, 130, + 139, 141, 135, 138, 139, 139, 139, 139, 139, 139, 139, 142, 141, 141, 140, 141, + 143, 144, 145, 144, 146, 146, 143, 137, 134, 135, 138, 132, 138, 136, 129, 126, + 129, 123, 113, 109, 109, 104, 98, 96, 96, 94, 90, 82, 90, 90, 82, 62, + 33, 26, 43, 46, 40, 37, 38, 39, 113, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 208, 120, 120, 117, 114, 88, 96, 83, 73, 75, 66, 70, 100, + 129, 142, 156, 160, 158, 160, 162, 162, 158, 161, 158, 152, 148, 148, 145, 138, + 136, 139, 141, 145, 145, 141, 135, 131, 129, 128, 133, 108, 96, 68, 71, 68, + 76, 79, 83, 84, 83, 82, 81, 81, 106, 117, 122, 120, 123, 134, 138, 135, + 138, 138, 138, 137, 138, 138, 139, 139, 145, 144, 142, 141, 140, 139, 139, 139, + 135, 136, 137, 136, 132, 130, 130, 130, 127, 130, 130, 127, 124, 123, 116, 110, + 106, 102, 91, 81, 77, 80, 81, 80, 82, 82, 85, 78, 54, 33, 35, 47, + 33, 31, 34, 40, 43, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 122, 110, 118, 136, 95, 116, 101, 93, 115, 106, 94, 120, 143, 153, 162, + 165, 166, 168, 167, 163, 161, 158, 152, 148, 150, 152, 149, 142, 143, 138, 132, + 131, 133, 136, 136, 136, 143, 132, 133, 130, 141, 121, 98, 72, 74, 71, 66, + 62, 63, 73, 85, 95, 95, 104, 110, 108, 114, 127, 134, 134, 135, 135, 134, + 133, 134, 135, 137, 138, 142, 141, 140, 139, 137, 136, 135, 135, 139, 136, 134, + 132, 130, 127, 122, 119, 118, 115, 114, 114, 107, 97, 90, 89, 81, 80, 74, + 66, 65, 67, 67, 63, 67, 62, 76, 78, 50, 34, 42, 42, 42, 40, 38, + 39, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 109, + 120, 147, 186, 178, 122, 91, 110, 95, 87, 129, 157, 163, 167, 170, 173, 175, + 170, 162, 159, 154, 145, 140, 139, 140, 138, 133, 131, 132, 134, 137, 138, 135, + 129, 124, 132, 130, 129, 121, 120, 121, 132, 140, 112, 104, 91, 78, 71, 76, + 89, 99, 95, 102, 104, 104, 109, 120, 129, 131, 134, 133, 132, 131, 132, 134, + 136, 137, 135, 136, 136, 137, 136, 135, 134, 134, 126, 120, 111, 105, 100, 96, + 89, 85, 82, 76, 75, 79, 74, 64, 62, 68, 64, 71, 77, 80, 82, 81, + 72, 62, 50, 45, 70, 79, 47, 36, 41, 31, 31, 41, 54, 64, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 124, 104, 110, 133, 172, + 175, 144, 144, 170, 134, 102, 136, 167, 171, 172, 174, 178, 179, 172, 162, 156, + 151, 143, 136, 131, 129, 129, 132, 132, 128, 124, 119, 117, 119, 124, 129, 109, + 116, 117, 117, 110, 110, 112, 118, 110, 112, 112, 107, 99, 93, 93, 95, 106, + 108, 108, 107, 109, 117, 123, 126, 132, 132, 131, 131, 131, 132, 134, 135, 132, + 133, 134, 135, 134, 132, 130, 129, 116, 107, 94, 85, 80, 76, 72, 70, 53, + 49, 52, 61, 64, 64, 72, 84, 88, 98, 107, 112, 114, 108, 95, 82, 60, + 53, 74, 79, 45, 37, 42, 31, 41, 47, 51, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 100, 113, 210, 191, 144, 125, + 138, 116, 105, 146, 175, 177, 177, 178, 181, 182, 174, 164, 156, 150, 142, 138, + 133, 129, 131, 136, 135, 128, 116, 105, 99, 99, 102, 103, 114, 115, 113, 132, + 134, 138, 118, 103, 98, 104, 112, 115, 112, 110, 112, 115, 115, 115, 114, 113, + 114, 117, 121, 125, 132, 132, 132, 132, 132, 132, 132, 131, 133, 134, 135, 135, + 132, 128, 123, 120, 112, 105, 95, 87, 84, 82, 83, 83, 79, 80, 84, 91, + 94, 100, 110, 121, 124, 128, 129, 127, 124, 118, 107, 98, 87, 79, 82, 74, + 46, 43, 53, 52, 63, 66, 63, 122, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 96, 97, 105, 137, 140, 120, 109, 122, 123, 122, + 142, 179, 182, 183, 182, 183, 183, 176, 167, 159, 148, 138, 137, 137, 133, 132, + 135, 114, 113, 113, 117, 116, 102, 76, 57, 56, 69, 64, 66, 45, 60, 74, + 97, 101, 106, 112, 112, 108, 105, 109, 113, 118, 118, 118, 119, 118, 120, 123, + 127, 131, 132, 133, 133, 132, 131, 128, 127, 130, 131, 133, 133, 130, 124, 119, + 116, 98, 96, 93, 89, 87, 85, 88, 89, 106, 113, 118, 117, 116, 121, 127, + 129, 128, 129, 126, 120, 117, 114, 107, 100, 98, 96, 87, 72, 57, 59, 70, + 80, 59, 81, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 93, 97, 103, 133, 150, 142, 123, 129, 144, 148, 148, 182, 185, + 186, 185, 185, 185, 178, 170, 162, 146, 133, 133, 136, 133, 127, 125, 110, 87, + 62, 57, 66, 76, 73, 64, 48, 57, 50, 68, 58, 68, 53, 53, 60, 75, + 96, 110, 112, 110, 108, 107, 116, 115, 117, 119, 120, 122, 126, 131, 131, 133, + 134, 136, 134, 132, 127, 126, 125, 128, 130, 132, 130, 126, 120, 118, 104, 107, + 109, 108, 104, 102, 103, 105, 91, 105, 113, 110, 108, 114, 116, 113, 113, 116, + 117, 114, 114, 113, 107, 100, 91, 97, 88, 74, 72, 74, 83, 100, 87, 101, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 94, 95, 87, 116, 185, 161, 153, 168, 174, 142, 141, 174, 204, 200, 196, 195, + 186, 181, 168, 159, 153, 145, 132, 123, 133, 137, 123, 99, 98, 74, 54, 56, + 53, 64, 94, 112, 57, 98, 94, 56, 134, 74, 88, 60, 52, 37, 64, 113, + 112, 91, 104, 111, 112, 112, 111, 111, 116, 125, 133, 128, 130, 132, 134, 133, + 133, 129, 129, 132, 131, 126, 125, 123, 122, 118, 117, 112, 102, 99, 108, 109, + 100, 94, 95, 81, 63, 50, 59, 79, 93, 96, 96, 92, 91, 97, 112, 118, + 112, 98, 90, 101, 100, 91, 82, 87, 103, 108, 101, 110, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 86, 83, + 101, 169, 161, 148, 160, 168, 154, 146, 175, 206, 201, 197, 194, 183, 177, 162, + 164, 156, 151, 145, 136, 139, 139, 127, 133, 121, 103, 95, 102, 107, 111, 122, + 130, 74, 100, 73, 80, 92, 100, 104, 69, 130, 123, 66, 58, 84, 95, 100, + 95, 101, 109, 116, 120, 120, 119, 118, 131, 133, 135, 137, 137, 135, 133, 131, + 129, 131, 130, 126, 118, 111, 107, 105, 102, 105, 107, 100, 78, 58, 59, 74, + 69, 64, 58, 56, 53, 46, 32, 21, 71, 80, 94, 103, 101, 96, 97, 105, + 104, 104, 96, 88, 95, 109, 115, 109, 112, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 95, 105, 121, 169, 174, + 149, 151, 152, 161, 145, 174, 206, 203, 200, 198, 187, 179, 163, 170, 158, 156, + 158, 149, 144, 141, 133, 131, 127, 129, 122, 102, 93, 101, 108, 111, 88, 94, + 79, 101, 56, 85, 76, 103, 156, 156, 109, 90, 92, 96, 106, 104, 106, 108, + 112, 116, 121, 125, 128, 134, 136, 139, 140, 140, 139, 136, 134, 130, 131, 128, + 120, 109, 102, 100, 102, 92, 85, 78, 74, 64, 60, 68, 83, 37, 64, 82, + 74, 56, 50, 53, 57, 36, 50, 73, 92, 97, 98, 101, 109, 105, 106, 101, + 96, 102, 114, 119, 115, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 109, 131, 148, 165, 174, 155, 152, 139, + 162, 146, 171, 205, 204, 205, 205, 194, 187, 171, 174, 156, 155, 163, 154, 143, + 140, 137, 137, 135, 148, 144, 111, 93, 97, 94, 98, 106, 72, 79, 83, 84, + 110, 134, 147, 148, 142, 139, 125, 90, 69, 81, 112, 113, 115, 115, 115, 119, + 128, 136, 136, 138, 142, 144, 144, 142, 138, 136, 136, 130, 119, 109, 103, 102, + 104, 107, 106, 103, 101, 99, 91, 78, 71, 73, 92, 83, 72, 77, 105, 126, + 110, 78, 39, 36, 43, 67, 91, 105, 106, 105, 105, 108, 104, 101, 106, 113, + 117, 113, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 205, 125, 139, 137, 154, 163, 169, 145, 165, 151, 171, + 203, 205, 206, 207, 197, 189, 173, 176, 154, 153, 162, 154, 143, 142, 143, 151, + 133, 139, 151, 142, 136, 127, 104, 70, 107, 97, 112, 101, 119, 90, 106, 110, + 114, 110, 99, 92, 84, 82, 88, 101, 113, 126, 127, 121, 116, 119, 124, 136, + 139, 143, 145, 145, 143, 139, 136, 136, 124, 110, 104, 106, 107, 105, 101, 108, + 120, 128, 122, 99, 82, 82, 91, 82, 92, 97, 97, 108, 121, 113, 96, 70, + 50, 39, 51, 77, 98, 107, 108, 108, 108, 108, 107, 108, 113, 114, 111, 108, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 113, 127, 127, 144, 176, 185, 160, 163, 149, 172, 204, 204, 205, + 204, 194, 186, 169, 174, 155, 153, 160, 153, 146, 147, 147, 138, 129, 133, 143, + 143, 141, 135, 124, 119, 129, 125, 89, 88, 100, 80, 90, 78, 78, 81, 85, + 92, 103, 114, 119, 113, 121, 128, 127, 118, 117, 123, 131, 135, 138, 142, 145, + 145, 142, 138, 135, 129, 117, 106, 105, 111, 112, 103, 92, 58, 83, 116, 137, + 135, 112, 83, 66, 80, 79, 81, 98, 123, 131, 105, 71, 65, 61, 64, 76, + 92, 101, 108, 111, 110, 112, 113, 115, 114, 114, 114, 112, 161, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 114, 129, 144, 147, 175, 177, 167, 155, 140, 172, 203, 202, 202, 203, 193, 186, + 171, 167, 153, 152, 157, 151, 149, 149, 144, 135, 143, 143, 141, 137, 127, 129, + 142, 121, 125, 140, 120, 137, 128, 114, 107, 121, 101, 102, 119, 121, 112, 111, + 114, 129, 126, 122, 117, 114, 121, 131, 139, 132, 134, 139, 142, 142, 139, 134, + 131, 125, 113, 103, 102, 109, 113, 110, 105, 131, 110, 87, 80, 91, 101, 98, + 90, 79, 92, 104, 105, 96, 85, 80, 77, 67, 74, 89, 106, 113, 112, 109, + 111, 109, 111, 114, 118, 118, 115, 115, 161, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 128, 157, + 143, 157, 153, 163, 151, 139, 171, 202, 201, 203, 205, 197, 192, 178, 159, 149, + 151, 154, 149, 149, 148, 139, 142, 144, 128, 124, 135, 131, 124, 137, 136, 132, + 120, 126, 132, 129, 131, 128, 134, 132, 134, 128, 113, 113, 122, 122, 119, 116, + 114, 117, 123, 126, 126, 124, 129, 132, 137, 140, 140, 137, 132, 129, 127, 114, + 100, 96, 103, 115, 124, 129, 124, 122, 120, 119, 118, 113, 100, 88, 85, 74, + 66, 67, 74, 78, 82, 87, 109, 101, 98, 104, 110, 111, 108, 108, 103, 108, + 113, 119, 118, 116, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 87, 166, 186, 144, + 148, 146, 124, 144, 206, 208, 202, 212, 191, 176, 181, 166, 160, 155, 151, 142, + 135, 139, 148, 146, 143, 141, 142, 139, 131, 125, 124, 122, 123, 125, 125, 125, + 125, 124, 124, 119, 124, 127, 127, 123, 119, 119, 119, 117, 121, 125, 126, 124, + 124, 125, 127, 133, 131, 131, 135, 138, 137, 132, 127, 123, 112, 102, 102, 106, + 110, 115, 122, 117, 121, 125, 127, 127, 124, 120, 117, 132, 123, 113, 111, 115, + 119, 114, 109, 109, 105, 104, 111, 119, 121, 112, 104, 100, 103, 110, 116, 117, + 114, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 182, 212, 198, 174, 157, 131, + 126, 187, 200, 199, 206, 193, 183, 175, 163, 158, 156, 159, 156, 149, 146, 147, + 143, 139, 136, 139, 139, 134, 127, 126, 129, 129, 129, 129, 128, 127, 126, 126, + 129, 130, 131, 130, 127, 124, 122, 121, 121, 123, 125, 124, 123, 122, 122, 122, + 132, 131, 131, 134, 137, 137, 132, 127, 122, 111, 101, 100, 103, 107, 112, 118, + 122, 121, 119, 118, 118, 119, 120, 121, 131, 125, 118, 117, 118, 118, 113, 107, + 113, 112, 113, 118, 123, 123, 115, 108, 104, 105, 110, 116, 116, 160, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 215, 107, 79, 124, 182, 127, 133, 176, 195, + 202, 200, 194, 190, 166, 162, 156, 152, 154, 156, 152, 146, 143, 144, 137, 135, + 140, 144, 141, 135, 133, 134, 134, 132, 131, 128, 127, 127, 128, 132, 130, 128, + 126, 125, 124, 121, 119, 123, 122, 122, 123, 124, 124, 122, 121, 132, 131, 132, + 135, 138, 137, 132, 127, 121, 110, 101, 99, 101, 104, 108, 113, 121, 120, 118, + 117, 117, 119, 121, 122, 120, 119, 118, 117, 118, 116, 112, 108, 118, 118, 121, + 124, 125, 121, 115, 111, 107, 108, 111, 115, 161, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 138, 145, 143, 158, 180, 187, 196, 210, 200, 190, + 190, 161, 167, 159, 151, 147, 146, 146, 145, 146, 143, 136, 133, 139, 144, 142, + 137, 134, 135, 133, 131, 129, 127, 129, 128, 130, 133, 129, 125, 124, 125, 125, + 123, 120, 121, 119, 119, 121, 126, 128, 127, 126, 133, 133, 134, 137, 140, 139, + 134, 129, 123, 112, 102, 100, 102, 103, 106, 110, 113, 117, 121, 124, 125, 125, + 123, 122, 116, 117, 119, 120, 119, 119, 119, 121, 121, 123, 124, 123, 120, 115, + 112, 111, 110, 108, 109, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 202, 129, 187, 248, 227, 200, 192, 213, 202, 184, 185, 161, 164, + 164, 158, 151, 144, 144, 148, 151, 141, 134, 131, 136, 140, 138, 134, 133, 135, + 134, 133, 132, 131, 133, 134, 135, 135, 132, 128, 128, 130, 131, 129, 127, 123, + 121, 119, 121, 126, 129, 128, 126, 135, 134, 135, 138, 141, 140, 135, 131, 125, + 114, 105, 103, 104, 104, 107, 111, 110, 113, 118, 123, 125, 126, 126, 126, 125, + 127, 128, 127, 125, 126, 129, 132, 124, 125, 124, 119, 114, 110, 111, 112, 107, + 104, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 254, 220, 231, 230, 196, 183, 207, 200, 182, 181, 162, 152, 158, 160, 155, + 148, 146, 147, 146, 144, 140, 138, 141, 142, 139, 138, 140, 139, 139, 139, 139, + 139, 140, 141, 142, 133, 132, 131, 131, 132, 132, 131, 129, 130, 128, 125, 125, + 126, 126, 126, 126, 136, 135, 135, 139, 142, 141, 136, 131, 128, 117, 108, 107, + 108, 108, 109, 112, 114, 114, 112, 113, 116, 121, 127, 131, 133, 132, 130, 129, + 126, 126, 127, 129, 126, 126, 122, 118, 113, 111, 111, 113, 102, 98, 150, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, + 200, 188, 182, 180, 199, 198, 185, 180, 159, 154, 158, 157, 152, 148, 148, 145, + 140, 144, 142, 145, 147, 144, 141, 143, 148, 144, 145, 145, 146, 145, 145, 143, + 144, 134, 135, 137, 136, 133, 130, 129, 129, 132, 132, 130, 128, 126, 124, 126, + 129, 134, 134, 134, 137, 140, 140, 135, 130, 129, 118, 110, 109, 110, 110, 111, + 114, 119, 117, 114, 113, 115, 119, 124, 127, 130, 130, 128, 128, 125, 123, 120, + 120, 122, 121, 120, 119, 116, 113, 109, 108, 97, 92, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 169, 147, 172, + 181, 194, 196, 189, 181, 154, 173, 169, 160, 149, 148, 153, 150, 143, 135, 136, + 139, 142, 138, 135, 139, 147, 147, 147, 148, 149, 147, 145, 142, 141, 140, 142, + 145, 144, 139, 134, 133, 132, 129, 130, 132, 130, 127, 127, 131, 136, 132, 132, + 132, 136, 139, 138, 133, 128, 128, 118, 110, 109, 111, 111, 112, 115, 118, 120, + 120, 121, 121, 120, 119, 119, 127, 127, 128, 130, 130, 128, 123, 119, 115, 115, + 117, 117, 117, 113, 105, 102, 94, 144, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, 148, 156, 170, 202, 189, + 194, 172, 158, 160, 159, 156, 150, 145, 143, 144, 145, 144, 139, 139, 144, 144, + 139, 138, 144, 146, 147, 147, 146, 144, 144, 142, 142, 137, 137, 139, 139, 134, + 126, 125, 129, 131, 126, 127, 133, 135, 131, 129, 131, 131, 132, 132, 133, 136, + 140, 136, 129, 116, 112, 110, 110, 109, 107, 112, 119, 117, 121, 123, 124, 123, + 123, 126, 128, 126, 126, 127, 127, 127, 127, 127, 127, 124, 125, 114, 108, 116, + 112, 101, 99, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 223, 149, 150, 161, 186, 187, 190, 179, 169, + 165, 161, 155, 151, 149, 147, 145, 142, 141, 137, 137, 141, 141, 137, 136, 140, + 144, 141, 138, 135, 133, 132, 133, 133, 128, 126, 126, 125, 118, 113, 112, 118, + 121, 118, 119, 126, 129, 127, 126, 127, 127, 127, 127, 127, 131, 134, 131, 124, + 119, 114, 110, 108, 105, 102, 105, 111, 116, 119, 122, 125, 126, 125, 125, 124, + 126, 127, 127, 128, 128, 128, 129, 128, 121, 121, 119, 121, 119, 105, 103, 122, + 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 144, 146, 167, 185, 199, 187, 177, 167, 166, 158, 151, + 149, 150, 149, 143, 136, 137, 135, 135, 137, 137, 135, 135, 137, 140, 139, 137, + 135, 131, 129, 125, 123, 118, 114, 111, 109, 105, 102, 105, 114, 117, 115, 118, + 125, 129, 129, 128, 130, 124, 125, 124, 124, 127, 131, 129, 122, 119, 113, 109, + 106, 102, 97, 100, 105, 109, 112, 117, 124, 129, 130, 128, 126, 128, 129, 129, + 130, 130, 130, 130, 128, 124, 121, 118, 121, 115, 104, 122, 166, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 157, 181, 185, 202, 178, 172, 166, 157, 152, 147, 145, 145, 144, + 139, 135, 134, 133, 133, 134, 134, 133, 133, 134, 133, 135, 138, 138, 134, 127, + 119, 113, 113, 109, 106, 105, 103, 103, 112, 122, 119, 118, 120, 125, 129, 130, + 129, 129, 125, 126, 125, 124, 127, 131, 129, 122, 117, 112, 107, 105, 101, 97, + 100, 106, 98, 101, 107, 117, 125, 131, 131, 130, 128, 130, 131, 131, 132, 131, + 130, 129, 128, 124, 114, 110, 108, 109, 137, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 173, 191, 177, 189, 167, 168, 170, 150, 149, 147, 144, 140, 138, 138, 139, 132, + 133, 133, 132, 132, 133, 133, 132, 129, 129, 129, 128, 125, 120, 115, 112, 118, + 114, 110, 109, 107, 108, 117, 128, 121, 122, 123, 125, 127, 129, 128, 125, 125, + 127, 125, 123, 126, 130, 128, 122, 120, 114, 110, 106, 102, 98, 100, 105, 94, + 96, 102, 110, 117, 124, 128, 129, 128, 129, 131, 131, 131, 130, 128, 128, 125, + 128, 117, 107, 107, 105, 107, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 182, + 187, 173, 158, 155, 150, 150, 148, 143, 138, 136, 139, 142, 129, 131, 131, 129, + 129, 131, 131, 130, 135, 131, 125, 121, 118, 121, 123, 126, 125, 121, 117, 115, + 112, 111, 117, 126, 126, 128, 129, 128, 130, 133, 130, 125, 126, 127, 125, 122, + 125, 129, 128, 122, 126, 120, 114, 109, 103, 97, 98, 103, 97, 100, 105, 108, + 110, 114, 119, 122, 126, 128, 129, 131, 131, 129, 126, 124, 117, 128, 125, 116, + 108, 84, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 178, 179, 183, 155, + 146, 155, 151, 144, 139, 135, 135, 136, 136, 126, 129, 129, 125, 125, 129, 130, + 126, 131, 129, 124, 122, 121, 126, 129, 133, 126, 123, 121, 120, 116, 113, 117, + 124, 129, 132, 133, 130, 131, 135, 133, 127, 131, 130, 127, 125, 128, 132, 131, + 125, 127, 121, 115, 110, 104, 98, 99, 104, 99, 106, 112, 114, 112, 111, 115, + 120, 125, 126, 127, 129, 129, 127, 123, 122, 118, 124, 123, 117, 100, 64, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 153, 183, 164, 161, 160, 150, + 138, 133, 132, 133, 131, 128, 123, 127, 127, 122, 122, 127, 128, 123, 117, 119, + 123, 125, 126, 127, 126, 124, 124, 123, 124, 125, 120, 117, 120, 127, 123, 128, + 128, 126, 129, 133, 130, 124, 136, 135, 132, 129, 132, 136, 135, 129, 123, 117, + 113, 109, 105, 100, 102, 108, 96, 107, 118, 120, 115, 112, 116, 121, 123, 124, + 127, 129, 128, 125, 122, 121, 124, 120, 113, 108, 90, 54, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 221, 164, 140, 165, 164, 157, 155, 148, 141, 138, + 138, 134, 128, 125, 126, 129, 128, 125, 121, 119, 119, 115, 118, 122, 124, 124, + 124, 125, 126, 118, 120, 122, 123, 122, 121, 119, 118, 124, 127, 129, 131, 131, + 130, 131, 130, 124, 124, 127, 132, 136, 137, 135, 133, 124, 123, 118, 108, 99, + 97, 104, 112, 103, 110, 119, 123, 122, 117, 113, 112, 117, 120, 123, 125, 125, + 123, 121, 120, 114, 114, 110, 110, 125, 150, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 154, 165, 160, 167, 156, 154, 148, 141, 138, 139, 135, 130, + 130, 130, 130, 128, 124, 120, 118, 118, 114, 116, 117, 117, 115, 115, 116, 117, + 122, 123, 125, 126, 125, 125, 123, 124, 131, 132, 132, 131, 129, 130, 134, 137, + 125, 129, 136, 143, 146, 142, 135, 129, 118, 120, 119, 113, 107, 104, 105, 109, + 107, 113, 120, 123, 120, 116, 112, 111, 115, 117, 120, 123, 124, 124, 121, 119, + 120, 113, 116, 136, 154, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 184, 159, 167, 155, 154, 148, 141, 137, 139, 137, 132, 136, 136, 133, + 129, 122, 118, 117, 117, 125, 124, 124, 121, 118, 117, 118, 119, 113, 114, 115, + 116, 116, 117, 117, 118, 115, 120, 124, 125, 123, 123, 128, 131, 137, 140, 146, + 151, 153, 149, 142, 136, 124, 122, 118, 113, 111, 108, 107, 108, 112, 116, 122, + 124, 122, 118, 114, 113, 111, 112, 114, 119, 124, 124, 119, 116, 115, 106, 120, + 159, 178, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 166, 160, 154, 154, 149, 141, 137, 139, 138, 135, 143, 140, 136, 129, 122, 118, + 117, 117, 118, 119, 119, 116, 113, 111, 111, 112, 115, 115, 115, 115, 117, 119, + 121, 122, 118, 119, 119, 115, 111, 115, 126, 134, 134, 132, 132, 133, 135, 135, + 135, 133, 133, 124, 113, 106, 105, 107, 109, 111, 115, 117, 121, 123, 122, 121, + 118, 118, 108, 109, 111, 116, 122, 123, 117, 112, 113, 113, 135, 167, 178, 167, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 155, + 155, 150, 141, 136, 138, 139, 137, 144, 142, 138, 131, 124, 120, 120, 120, 118, + 118, 118, 116, 114, 111, 111, 111, 104, 104, 104, 105, 107, 110, 112, 113, 124, + 120, 111, 101, 94, 96, 107, 117, 126, 125, 124, 125, 127, 128, 129, 128, 123, + 115, 105, 100, 102, 105, 107, 107, 111, 113, 114, 117, 120, 121, 119, 119, 107, + 109, 112, 117, 121, 120, 115, 112, 126, 146, 168, 180, 178, 176, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 156, 156, 151, 142, + 135, 137, 138, 138, 142, 141, 138, 132, 126, 123, 123, 124, 118, 116, 113, 107, + 102, 100, 102, 103, 106, 106, 107, 109, 112, 115, 116, 119, 113, 117, 121, 121, + 113, 103, 93, 89, 111, 112, 115, 119, 121, 120, 116, 112, 103, 101, 101, 103, + 107, 107, 103, 101, 107, 107, 106, 109, 113, 116, 116, 115, 110, 113, 118, 122, + 122, 118, 114, 112, 113, 146, 169, 168, 166, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 153, 142, 134, 135, 138, + 138, 139, 139, 137, 134, 129, 127, 127, 129, 111, 104, 91, 78, 71, 70, 74, + 76, 67, 67, 70, 73, 76, 78, 79, 81, 104, 110, 121, 129, 133, 127, 116, + 107, 102, 103, 105, 107, 108, 107, 103, 99, 101, 103, 105, 108, 110, 108, 104, + 101, 108, 106, 104, 105, 110, 113, 113, 113, 113, 119, 125, 127, 122, 115, 112, + 113, 125, 154, 173, 170, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 223, 154, 142, 134, 135, 137, 137, 135, 136, + 136, 134, 131, 130, 130, 132, 127, 115, 96, 77, 65, 64, 71, 76, 72, 74, + 77, 81, 84, 84, 84, 83, 83, 76, 68, 72, 86, 105, 122, 131, 129, 126, + 121, 120, 120, 121, 122, 123, 113, 112, 110, 107, 104, 102, 102, 103, 110, 107, + 104, 105, 109, 113, 113, 113, 115, 123, 131, 131, 123, 115, 112, 114, 74, 91, + 99, 93, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 221, 151, 147, 144, 137, 133, 136, 136, 137, 138, 135, + 133, 130, 128, 129, 124, 112, 98, 82, 69, 58, 52, 82, 80, 86, 80, 82, + 81, 69, 89, 80, 88, 83, 77, 81, 78, 69, 69, 72, 81, 75, 77, 69, + 61, 72, 71, 73, 75, 78, 79, 79, 78, 75, 77, 68, 77, 85, 92, 99, + 106, 114, 120, 118, 134, 143, 128, 113, 119, 109, 79, 30, 33, 35, 36, 36, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 220, 145, 139, 137, 136, 135, 134, 133, 133, 132, 131, 129, 128, + 125, 127, 124, 113, 94, 75, 60, 54, 45, 73, 94, 77, 75, 86, 78, 86, + 80, 89, 86, 82, 91, 92, 86, 87, 78, 86, 78, 83, 82, 76, 86, 81, + 84, 79, 71, 63, 58, 56, 56, 61, 66, 77, 89, 99, 106, 112, 118, 122, + 140, 133, 130, 129, 135, 132, 90, 31, 34, 31, 26, 23, 25, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 217, 137, 136, 138, 139, 137, 137, 137, 136, 136, 135, 133, 125, 130, 132, + 122, 104, 86, 72, 67, 52, 74, 93, 82, 88, 97, 81, 81, 86, 93, 88, + 84, 90, 88, 81, 80, 90, 97, 87, 95, 95, 89, 95, 88, 90, 88, 87, + 83, 78, 74, 70, 70, 78, 89, 101, 112, 118, 122, 124, 125, 134, 137, 137, + 121, 108, 127, 157, 169, 139, 133, 124, 120, 168, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, + 138, 137, 138, 139, 140, 141, 141, 140, 137, 135, 131, 130, 127, 119, 108, 97, + 89, 83, 67, 52, 61, 82, 117, 128, 110, 117, 118, 124, 117, 109, 113, 111, + 101, 101, 83, 92, 85, 89, 85, 75, 81, 74, 84, 82, 79, 78, 76, 74, + 74, 77, 100, 108, 117, 124, 128, 128, 128, 127, 135, 123, 118, 118, 122, 148, + 179, 191, 173, 171, 168, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 140, 135, 131, + 133, 137, 141, 140, 138, 133, 129, 136, 129, 124, 119, 116, 109, 97, 85, 87, + 59, 55, 73, 112, 130, 116, 127, 143, 150, 144, 141, 151, 152, 144, 144, 127, + 141, 138, 138, 127, 113, 121, 116, 105, 92, 72, 57, 55, 64, 78, 92, 114, + 118, 122, 126, 129, 130, 130, 129, 135, 116, 114, 132, 152, 169, 171, 159, 177, + 178, 180, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 129, 133, 137, 140, + 140, 138, 133, 130, 136, 130, 125, 126, 127, 119, 100, 82, 93, 88, 84, 68, + 80, 99, 95, 104, 150, 158, 152, 151, 164, 167, 161, 161, 139, 157, 156, 157, + 141, 125, 133, 131, 107, 95, 79, 69, 68, 79, 93, 107, 114, 116, 117, 119, + 123, 127, 127, 128, 117, 125, 145, 155, 153, 166, 187, 195, 174, 175, 175, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 134, 135, 137, 138, 137, 136, + 134, 135, 130, 127, 130, 132, 125, 110, 95, 75, 85, 93, 77, 77, 89, 90, + 112, 148, 153, 147, 147, 160, 166, 159, 158, 147, 162, 160, 160, 146, 128, 134, + 128, 77, 76, 76, 77, 82, 91, 99, 106, 113, 114, 112, 115, 118, 121, 122, + 121, 122, 137, 161, 171, 167, 171, 173, 162, 178, 177, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 130, 129, 129, 130, 132, 134, 135, 135, 131, + 127, 126, 129, 129, 125, 118, 93, 87, 100, 101, 94, 80, 72, 106, 117, 122, + 118, 120, 137, 146, 142, 142, 136, 146, 140, 140, 127, 109, 109, 100, 83, 79, + 77, 78, 86, 97, 111, 119, 117, 116, 114, 115, 118, 118, 115, 113, 142, 163, + 183, 180, 162, 167, 179, 177, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 127, 128, 131, 134, 132, 128, 128, 130, 132, 132, 131, + 128, 126, 123, 104, 94, 94, 101, 97, 84, 76, 81, 89, 83, 103, 108, 126, + 105, 111, 110, 92, 89, 87, 84, 80, 79, 76, 76, 84, 76, 72, 78, 93, + 108, 113, 115, 118, 115, 109, 106, 111, 119, 120, 114, 167, 169, 170, 165, 154, + 148, 151, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 130, 134, 137, 136, 134, 127, 127, 129, 130, 130, 130, 129, 126, + 119, 98, 85, 89, 93, 88, 80, 78, 76, 71, 79, 86, 96, 87, 93, 97, + 91, 87, 82, 76, 74, 74, 77, 79, 78, 78, 81, 91, 104, 112, 114, 112, + 107, 119, 121, 111, 109, 118, 121, 118, 107, 98, 84, 66, 48, 33, 28, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 215, 138, 138, 137, 130, 130, 131, 130, 131, 132, 133, 132, 130, 110, 91, + 87, 87, 85, 83, 86, 81, 76, 70, 79, 75, 77, 78, 87, 80, 77, 76, + 74, 75, 77, 80, 83, 75, 82, 94, 106, 114, 117, 114, 111, 124, 123, 111, + 102, 106, 114, 106, 88, 26, 23, 22, 28, 31, 33, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, + 138, 138, 137, 136, 135, 135, 136, 136, 137, 137, 131, 122, 111, 99, 85, 77, + 83, 95, 103, 100, 87, 99, 84, 93, 85, 94, 86, 86, 87, 87, 85, 82, + 80, 80, 81, 91, 103, 113, 117, 117, 114, 113, 110, 109, 108, 106, 95, 73, + 41, 19, 30, 30, 37, 48, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 141, 143, + 142, 140, 138, 137, 136, 136, 136, 129, 126, 120, 110, 94, 84, 82, 87, 101, + 105, 97, 111, 99, 108, 99, 104, 109, 105, 101, 95, 89, 84, 80, 79, 95, + 102, 110, 114, 115, 115, 116, 119, 126, 121, 116, 99, 60, 29, 41, 73, 97, + 103, 120, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 142, 141, 140, 138, + 136, 135, 133, 131, 132, 122, 113, 111, 110, 102, 87, 76, 77, 83, 84, 95, + 92, 98, 93, 94, 103, 98, 90, 84, 82, 85, 91, 95, 108, 111, 114, 114, + 114, 116, 118, 121, 115, 102, 87, 73, 53, 52, 96, 150, 180, 176, 205, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 140, 140, 140, 138, 136, 133, + 131, 130, 121, 115, 117, 122, 119, 104, 90, 83, 83, 85, 79, 84, 79, 81, + 77, 83, 83, 82, 84, 90, 98, 108, 114, 116, 118, 120, 121, 121, 120, 119, + 119, 122, 129, 141, 155, 163, 166, 174, 181, 189, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 217, 142, 142, 141, 138, 135, 132, 126, 125, + 126, 125, 124, 123, 119, 114, 117, 108, 109, 86, 93, 77, 84, 78, 85, 91, + 97, 104, 110, 114, 114, 117, 118, 120, 123, 127, 128, 126, 119, 116, 138, 165, + 183, 181, 177, 182, 180, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 216, 137, 136, 135, 133, 131, 131, 129, 129, 126, 126, + 125, 125, 125, 119, 117, 116, 115, 113, 114, 114, 114, 111, 115, 118, 118, 115, + 115, 117, 120, 121, 122, 127, 132, 129, 124, 127, 136, 183, 179, 180, 188, 190, + 182, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 138, 136, 136, 136, 134, 133, 132, 130, 130, 130, 131, 132, + 126, 125, 121, 119, 117, 115, 114, 115, 120, 122, 123, 121, 118, 118, 118, 121, + 125, 126, 129, 126, 115, 112, 134, 162, 158, 170, 185, 193, 189, 182, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 138, 138, 139, 136, 135, 133, 132, 131, 133, 135, 136, 135, 134, 131, + 128, 126, 124, 121, 122, 126, 126, 125, 123, 120, 119, 121, 124, 130, 127, 125, + 126, 126, 133, 151, 170, 179, 188, 193, 189, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 216, 139, 138, 136, 133, 131, 131, 132, 134, 136, 137, 136, 134, 132, 131, 130, + 128, 129, 127, 127, 125, 122, 121, 122, 124, 127, 127, 128, 123, 120, 132, 154, + 169, 172, 175, 177, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 139, + 138, 136, 134, 132, 132, 134, 135, 137, 136, 134, 132, 131, 130, 129, 129, 127, + 125, 123, 121, 122, 124, 127, 128, 120, 128, 123, 115, 130, 159, 168, 157, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 138, 137, + 135, 135, 136, 136, 145, 143, 141, 138, 135, 133, 132, 132, 128, 126, 123, 123, + 124, 125, 125, 126, 125, 120, 117, 131, 161, 172, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 135, 137, 138, 138, 138, + 137, 147, 146, 143, 141, 138, 136, 135, 136, 132, 131, 127, 125, 126, 126, 123, + 121, 130, 114, 120, 154, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 138, 137, 137, 136, 137, + 135, 134, 133, 134, 133, 135, 138, 134, 131, 129, 130, 127, 122, 119, 127, 119, + 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 136, 139, 137, 131, + 130, 133, 137, 126, 128, 129, 124, 124, 124, 121, 119, 109, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 52, 66, 67, 16, 17, 68, 116, + 34, 13, 33, 63, 53, 67, 54, 61, 71, 78, 83, 91, 113, 180, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, + 82, 98, 86, 98, 122, 137, 154, 151, 140, 55, 48, 64, 92, 114, 119, 112, + 93, 81, 132, 132, 118, 106, 115, 116, 116, 139, 171, 185, 197, 237, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 193, 50, 37, 67, 66, 79, 121, 161, 169, + 166, 175, 163, 131, 146, 124, 143, 138, 166, 148, 125, 131, 111, 126, 133, 161, + 152, 117, 113, 124, 128, 125, 143, 174, 185, 177, 187, 204, 241, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 202, 78, 91, 97, 110, 105, 140, 153, 167, 173, 184, 162, 148, 153, + 127, 134, 122, 148, 166, 180, 175, 131, 124, 120, 178, 179, 153, 140, 146, 124, + 135, 140, 139, 154, 180, 189, 185, 171, 178, 190, 203, 223, 241, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 65, 75, 82, + 47, 55, 73, 101, 108, 167, 185, 178, 151, 157, 142, 141, 129, 130, 135, 148, + 159, 181, 140, 132, 150, 160, 160, 149, 124, 130, 118, 139, 137, 140, 136, 124, + 122, 131, 133, 129, 161, 163, 167, 171, 176, 180, 195, 219, 240, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 30, 26, 44, 44, 53, 88, 92, 115, 118, + 125, 113, 150, 154, 158, 133, 137, 126, 140, 125, 138, 178, 132, 154, 132, 138, + 154, 158, 136, 168, 186, 176, 165, 107, 150, 138, 137, 129, 115, 111, 113, 116, + 118, 140, 130, 115, 109, 112, 124, 143, 159, 187, 203, 224, 242, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 204, 102, 87, 84, 67, 75, 111, 125, 128, 152, 115, 146, 199, 161, + 161, 137, 110, 120, 127, 114, 142, 151, 129, 126, 127, 140, 127, 160, 117, 117, + 141, 160, 144, 124, 133, 151, 141, 112, 88, 88, 98, 100, 103, 110, 103, 142, + 129, 107, 120, 115, 100, 115, 128, 156, 201, 190, 190, 224, 241, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 105, 93, + 111, 109, 132, 145, 167, 202, 172, 203, 194, 189, 161, 163, 155, 131, 115, 123, + 130, 114, 145, 112, 111, 116, 123, 120, 133, 131, 129, 104, 127, 143, 129, 121, + 142, 147, 122, 88, 107, 115, 102, 101, 115, 121, 112, 106, 116, 104, 105, 129, + 122, 93, 88, 91, 94, 122, 149, 171, 179, 181, 218, 249, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 84, 94, 94, 108, 171, 163, 195, 192, + 186, 202, 190, 202, 202, 180, 160, 142, 150, 130, 131, 149, 120, 130, 107, 109, + 111, 121, 150, 132, 90, 87, 127, 129, 137, 115, 109, 124, 143, 155, 143, 116, + 125, 128, 132, 129, 118, 104, 101, 104, 115, 128, 132, 115, 84, 69, 91, 128, + 120, 96, 77, 102, 128, 135, 155, 169, 181, 231, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 188, 67, 34, 72, 95, 125, 201, 166, 195, 173, 188, 181, 149, + 168, 147, 132, 93, 98, 119, 99, 113, 150, 114, 157, 148, 139, 139, 131, 135, + 121, 128, 133, 166, 147, 162, 141, 153, 169, 138, 95, 104, 136, 154, 146, 144, + 138, 116, 96, 111, 136, 151, 111, 91, 100, 113, 124, 109, 77, 87, 94, 82, + 109, 132, 135, 150, 136, 135, 139, 184, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 55, 30, + 71, 78, 97, 168, 161, 214, 181, 171, 168, 173, 164, 144, 152, 93, 112, 110, + 88, 78, 87, 119, 122, 148, 154, 188, 144, 152, 123, 124, 104, 105, 156, 154, + 158, 131, 118, 109, 116, 123, 120, 121, 124, 117, 116, 138, 138, 103, 75, 80, + 104, 116, 108, 100, 106, 102, 91, 110, 122, 102, 73, 90, 84, 102, 111, 109, + 135, 134, 129, 116, 122, 155, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, 87, 92, 97, 135, 126, 162, + 189, 168, 187, 150, 151, 162, 164, 140, 116, 131, 101, 114, 129, 106, 127, 146, + 150, 152, 160, 142, 156, 115, 101, 114, 130, 98, 104, 144, 133, 141, 139, 149, + 160, 165, 138, 104, 99, 104, 97, 97, 97, 93, 87, 83, 83, 82, 78, 105, + 99, 101, 88, 78, 104, 127, 114, 118, 101, 80, 78, 65, 55, 88, 120, 132, + 114, 114, 137, 146, 149, 185, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 210, 125, 104, 108, 121, 159, 163, 182, 191, 185, 148, 148, 127, + 143, 146, 175, 144, 145, 136, 129, 157, 140, 144, 114, 153, 188, 133, 132, 134, + 98, 113, 119, 108, 140, 137, 99, 134, 158, 160, 175, 165, 147, 121, 104, 95, + 88, 87, 79, 62, 86, 69, 70, 94, 106, 95, 89, 94, 85, 85, 97, 100, + 97, 101, 101, 87, 100, 84, 87, 86, 81, 77, 76, 93, 107, 100, 101, 118, + 136, 136, 120, 105, 134, 181, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 139, + 97, 106, 139, 156, 160, 197, 164, 157, 194, 181, 141, 144, 139, 124, 145, 149, + 118, 152, 168, 171, 152, 151, 115, 111, 94, 130, 104, 108, 124, 135, 109, 82, + 101, 123, 140, 140, 181, 136, 116, 149, 149, 126, 121, 110, 86, 71, 81, 89, + 76, 56, 83, 95, 74, 50, 46, 61, 71, 86, 72, 73, 82, 89, 91, 94, + 96, 101, 93, 100, 82, 95, 124, 104, 95, 75, 78, 80, 90, 112, 120, 94, + 57, 65, 73, 85, 119, 178, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 231, 208, 163, 133, 115, 119, 149, 173, + 167, 140, 179, 146, 155, 120, 131, 144, 123, 119, 138, 154, 170, 166, 159, 177, + 158, 116, 102, 94, 133, 97, 121, 107, 106, 119, 134, 149, 171, 191, 181, 143, + 136, 109, 96, 81, 111, 116, 110, 105, 87, 84, 91, 76, 65, 80, 96, 65, + 45, 38, 33, 39, 55, 61, 55, 66, 79, 84, 81, 82, 91, 100, 98, 93, + 86, 80, 76, 72, 68, 64, 67, 59, 73, 85, 79, 83, 87, 74, 70, 86, + 61, 64, 75, 78, 119, 173, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 230, 201, 183, 138, 99, 103, 128, 165, 138, 120, 164, 115, + 123, 116, 106, 129, 115, 142, 148, 148, 149, 178, 124, 152, 114, 137, 111, 87, + 63, 79, 126, 103, 116, 132, 138, 139, 144, 155, 162, 179, 150, 141, 116, 102, + 68, 66, 55, 55, 47, 34, 34, 44, 45, 45, 52, 37, 32, 42, 56, 55, + 52, 45, 34, 49, 56, 66, 72, 73, 72, 74, 76, 83, 79, 74, 69, 66, + 62, 58, 55, 44, 52, 68, 68, 53, 49, 58, 62, 73, 86, 74, 69, 69, + 62, 65, 65, 68, 114, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 140, + 176, 171, 138, 157, 156, 110, 112, 122, 127, 114, 113, 132, 118, 108, 98, 138, + 160, 167, 165, 114, 110, 94, 151, 158, 146, 109, 110, 77, 89, 109, 84, 57, + 69, 83, 94, 102, 118, 130, 121, 103, 86, 88, 92, 79, 76, 49, 49, 59, + 39, 34, 32, 34, 39, 53, 59, 50, 21, 23, 38, 50, 52, 56, 52, 34, + 49, 48, 47, 49, 54, 60, 64, 67, 66, 64, 61, 59, 58, 55, 51, 46, + 46, 50, 47, 46, 52, 53, 53, 58, 65, 83, 99, 91, 87, 84, 76, 90, + 54, 29, 45, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 95, 159, 163, 162, 155, + 142, 116, 125, 142, 96, 101, 123, 145, 104, 102, 80, 67, 106, 106, 122, 107, + 90, 125, 125, 142, 138, 106, 113, 103, 110, 95, 65, 69, 39, 71, 79, 91, + 105, 121, 121, 100, 75, 87, 72, 54, 66, 109, 103, 69, 53, 40, 37, 45, + 43, 36, 50, 57, 36, 38, 35, 34, 30, 29, 45, 55, 46, 43, 40, 40, + 43, 49, 55, 60, 63, 56, 55, 55, 55, 55, 53, 49, 46, 52, 54, 39, + 38, 61, 70, 69, 80, 75, 70, 83, 76, 91, 100, 69, 70, 72, 61, 97, + 145, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 213, 136, 145, 197, 169, 133, 128, 148, 182, 151, 119, 142, + 145, 126, 98, 103, 140, 133, 89, 119, 118, 118, 106, 110, 122, 149, 116, 123, + 115, 63, 50, 61, 58, 91, 89, 78, 90, 70, 79, 94, 115, 122, 103, 71, + 52, 48, 31, 57, 68, 77, 80, 59, 31, 34, 32, 34, 42, 32, 18, 31, + 41, 22, 33, 31, 33, 29, 26, 40, 48, 38, 31, 36, 45, 52, 55, 56, + 55, 54, 53, 52, 52, 52, 52, 51, 48, 45, 40, 53, 46, 40, 54, 62, + 76, 104, 81, 53, 51, 59, 105, 128, 76, 53, 54, 89, 137, 161, 159, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 225, 164, 150, 131, 146, 142, 143, 115, 133, 151, 142, 163, 155, 115, 150, 160, + 141, 152, 140, 144, 132, 126, 116, 100, 127, 114, 120, 63, 76, 83, 82, 80, + 87, 119, 103, 61, 70, 67, 98, 126, 118, 113, 106, 84, 57, 48, 54, 37, + 50, 52, 67, 70, 69, 48, 47, 33, 34, 32, 20, 13, 26, 38, 32, 24, + 22, 29, 33, 32, 43, 51, 46, 45, 41, 41, 38, 42, 47, 57, 60, 52, + 49, 49, 46, 48, 44, 43, 39, 42, 42, 37, 35, 48, 61, 74, 88, 72, + 71, 76, 84, 112, 124, 100, 91, 89, 104, 136, 174, 173, 200, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 191, 204, 176, + 165, 171, 152, 116, 102, 165, 168, 132, 142, 142, 113, 118, 126, 126, 124, 120, + 183, 141, 136, 137, 155, 169, 114, 103, 100, 104, 80, 73, 114, 65, 84, 130, + 123, 116, 91, 133, 107, 85, 60, 45, 42, 42, 40, 38, 40, 56, 62, 65, + 33, 40, 51, 69, 29, 33, 23, 16, 24, 31, 30, 30, 33, 25, 30, 37, + 37, 46, 59, 61, 56, 43, 32, 26, 35, 47, 61, 66, 52, 47, 45, 41, + 41, 37, 36, 32, 47, 30, 29, 37, 50, 66, 71, 62, 82, 109, 104, 92, + 76, 66, 84, 101, 105, 108, 117, 161, 171, 164, 182, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 203, 173, 161, 182, 144, 125, 124, 144, + 142, 134, 135, 128, 156, 159, 140, 145, 124, 107, 123, 115, 174, 147, 158, 149, + 126, 93, 82, 77, 84, 78, 94, 111, 73, 76, 117, 122, 151, 114, 98, 99, + 81, 63, 68, 62, 46, 40, 41, 39, 31, 38, 33, 32, 54, 36, 58, 56, + 49, 35, 39, 27, 26, 46, 44, 25, 23, 35, 25, 32, 43, 42, 43, 53, + 58, 39, 32, 30, 38, 53, 61, 58, 52, 52, 48, 42, 38, 36, 34, 31, + 29, 29, 23, 38, 49, 42, 49, 63, 57, 91, 112, 83, 69, 57, 53, 93, + 113, 116, 171, 162, 138, 126, 160, 151, 184, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 220, 127, 112, 107, 129, 113, 156, 117, 109, 101, 97, 141, + 138, 149, 129, 146, 143, 104, 83, 104, 116, 151, 149, 140, 106, 106, 103, 118, + 73, 89, 60, 61, 58, 98, 101, 138, 179, 97, 126, 58, 74, 63, 47, 46, + 53, 51, 38, 36, 43, 43, 33, 32, 38, 50, 54, 47, 38, 36, 29, 34, + 37, 36, 31, 28, 28, 30, 39, 34, 32, 34, 34, 34, 37, 40, 35, 34, + 33, 34, 38, 43, 49, 53, 59, 44, 39, 49, 49, 35, 28, 32, 27, 30, + 34, 36, 39, 46, 59, 70, 65, 70, 80, 90, 95, 98, 104, 114, 137, 138, + 135, 127, 125, 136, 154, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, + 148, 175, 183, 152, 130, 163, 164, 157, 97, 112, 178, 184, 180, 160, 155, 148, + 134, 128, 88, 95, 117, 166, 165, 182, 133, 138, 144, 119, 135, 98, 86, 82, + 88, 89, 92, 113, 80, 69, 67, 50, 63, 68, 44, 52, 48, 52, 52, 39, + 36, 40, 38, 39, 35, 37, 44, 46, 40, 36, 37, 54, 51, 45, 35, 26, + 23, 25, 29, 29, 25, 23, 25, 26, 25, 28, 32, 29, 26, 25, 25, 27, + 32, 37, 40, 52, 40, 33, 37, 38, 31, 27, 30, 21, 24, 26, 25, 26, + 33, 44, 52, 56, 77, 100, 112, 104, 95, 98, 110, 106, 114, 122, 125, 124, + 124, 126, 128, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 148, 169, 161, 148, + 150, 195, 183, 163, 151, 167, 209, 177, 206, 146, 122, 130, 136, 91, 120, 140, + 162, 198, 191, 165, 166, 186, 158, 117, 93, 107, 93, 78, 93, 86, 92, 78, + 91, 111, 121, 92, 75, 47, 43, 43, 41, 39, 43, 44, 34, 33, 37, 33, + 45, 39, 37, 38, 37, 35, 35, 37, 50, 49, 42, 32, 25, 23, 28, 34, + 28, 24, 24, 26, 27, 26, 28, 31, 28, 26, 24, 24, 25, 29, 32, 35, + 43, 36, 29, 25, 27, 29, 30, 29, 27, 28, 28, 25, 25, 28, 37, 43, + 64, 77, 88, 90, 76, 67, 74, 88, 90, 101, 116, 127, 127, 118, 108, 102, + 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 114, 112, 119, 146, 159, 147, 174, 164, 136, + 135, 128, 166, 164, 124, 103, 137, 159, 127, 114, 134, 185, 192, 205, 201, 163, + 159, 121, 113, 90, 110, 102, 71, 39, 54, 98, 99, 99, 79, 57, 97, 120, + 76, 106, 80, 57, 18, 32, 31, 41, 42, 32, 34, 42, 41, 44, 40, 37, + 33, 32, 32, 34, 38, 38, 38, 38, 33, 28, 26, 28, 31, 30, 27, 27, + 30, 31, 29, 31, 34, 30, 27, 25, 24, 24, 26, 29, 31, 32, 33, 28, + 20, 22, 30, 31, 26, 34, 34, 33, 32, 31, 33, 37, 42, 59, 53, 48, + 50, 48, 48, 52, 58, 70, 77, 91, 104, 107, 101, 92, 88, 103, 164, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 205, 100, 110, 142, 179, 184, 165, 161, 129, 174, 170, 127, 152, + 120, 169, 194, 129, 77, 95, 130, 186, 204, 212, 170, 167, 145, 80, 91, 89, + 100, 80, 93, 98, 77, 64, 30, 30, 73, 108, 147, 128, 128, 113, 85, 107, + 93, 22, 47, 50, 59, 58, 44, 43, 52, 53, 40, 39, 39, 35, 34, 35, + 37, 37, 45, 46, 43, 36, 29, 24, 25, 27, 29, 26, 27, 31, 31, 28, + 28, 30, 24, 23, 21, 20, 21, 22, 24, 26, 29, 35, 34, 26, 27, 35, + 35, 27, 34, 34, 32, 28, 29, 29, 32, 36, 30, 26, 29, 39, 44, 46, + 47, 49, 54, 59, 73, 90, 99, 97, 96, 98, 114, 104, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 109, + 102, 88, 128, 203, 199, 164, 178, 144, 166, 159, 193, 202, 219, 189, 130, 127, + 134, 130, 124, 110, 158, 151, 143, 163, 111, 77, 89, 114, 94, 85, 101, 72, + 79, 62, 66, 71, 114, 146, 135, 106, 93, 121, 112, 99, 83, 100, 81, 65, + 66, 71, 66, 49, 43, 48, 47, 33, 37, 39, 35, 33, 35, 36, 37, 46, + 43, 37, 28, 21, 20, 26, 31, 29, 27, 28, 32, 32, 27, 26, 27, 22, + 20, 19, 19, 20, 21, 23, 25, 30, 36, 37, 33, 32, 36, 34, 27, 32, + 31, 28, 27, 25, 27, 28, 28, 27, 28, 34, 34, 30, 31, 43, 56, 45, + 51, 69, 91, 102, 102, 104, 111, 116, 102, 220, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 115, 108, 104, 134, + 169, 148, 141, 190, 118, 186, 163, 201, 181, 131, 147, 113, 133, 106, 117, 123, + 116, 125, 127, 152, 111, 125, 97, 99, 70, 88, 74, 94, 68, 72, 74, 68, + 81, 97, 121, 85, 107, 98, 115, 96, 120, 74, 67, 56, 63, 57, 57, 54, + 41, 38, 40, 32, 32, 37, 38, 32, 31, 33, 35, 33, 33, 35, 32, 27, + 24, 25, 32, 38, 33, 31, 33, 36, 35, 29, 26, 25, 22, 20, 20, 21, + 22, 25, 27, 28, 34, 36, 37, 36, 34, 33, 31, 29, 35, 34, 29, 27, + 25, 26, 25, 24, 36, 32, 30, 27, 23, 26, 39, 55, 39, 46, 62, 81, + 87, 84, 88, 99, 99, 109, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 190, 85, 115, 99, 114, 133, 147, 170, 160, + 110, 177, 167, 177, 129, 139, 166, 123, 138, 114, 94, 109, 83, 112, 150, 162, + 149, 148, 127, 112, 91, 103, 78, 78, 82, 111, 76, 83, 84, 126, 121, 160, + 131, 109, 93, 86, 104, 36, 75, 78, 59, 50, 39, 36, 38, 35, 37, 37, + 24, 32, 37, 37, 29, 26, 30, 32, 31, 31, 35, 40, 37, 35, 30, 32, + 32, 31, 27, 30, 31, 32, 23, 21, 20, 18, 16, 19, 19, 23, 24, 28, + 28, 40, 36, 38, 36, 35, 29, 30, 32, 36, 34, 29, 26, 23, 23, 23, + 20, 23, 19, 22, 34, 47, 51, 47, 45, 60, 61, 72, 81, 82, 74, 81, + 96, 77, 96, 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 197, 120, 163, 172, 193, 177, 137, 178, 203, 154, 153, 107, 122, + 113, 129, 96, 109, 140, 125, 102, 70, 69, 116, 141, 112, 97, 121, 96, 94, + 105, 91, 98, 83, 96, 93, 64, 74, 95, 111, 131, 143, 121, 100, 86, 90, + 72, 73, 67, 94, 79, 67, 55, 45, 38, 42, 43, 34, 32, 37, 47, 44, + 41, 37, 32, 25, 28, 35, 30, 33, 32, 25, 27, 32, 35, 31, 22, 28, + 38, 40, 32, 17, 13, 14, 21, 18, 19, 20, 26, 30, 34, 34, 31, 34, + 39, 39, 39, 35, 35, 33, 30, 35, 37, 34, 28, 28, 34, 40, 27, 30, + 36, 44, 54, 59, 58, 54, 53, 47, 51, 57, 68, 72, 79, 85, 80, 79, + 97, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 185, 172, 153, 181, 196, 161, 136, 157, 157, 138, 134, 152, 155, 138, 133, 143, + 126, 108, 86, 103, 113, 127, 134, 124, 105, 91, 86, 108, 94, 85, 95, 99, + 96, 84, 76, 121, 112, 90, 109, 118, 107, 114, 104, 75, 107, 134, 122, 95, + 65, 54, 48, 62, 49, 38, 40, 42, 36, 35, 40, 43, 37, 32, 32, 34, + 31, 31, 32, 29, 31, 30, 25, 25, 30, 33, 30, 35, 26, 21, 25, 30, + 28, 20, 15, 13, 15, 18, 21, 25, 28, 30, 32, 42, 43, 45, 43, 40, + 36, 34, 34, 31, 32, 32, 30, 29, 30, 32, 34, 29, 31, 36, 43, 50, + 53, 52, 48, 40, 36, 39, 48, 57, 65, 72, 80, 74, 75, 95, 104, 160, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 173, 191, 187, 182, + 166, 166, 124, 133, 162, 171, 196, 191, 125, 109, 139, 121, 108, 89, 101, 92, + 83, 77, 67, 49, 47, 74, 96, 90, 71, 78, 73, 92, 74, 82, 80, 98, + 124, 138, 165, 129, 119, 145, 124, 123, 161, 107, 93, 100, 120, 76, 70, 74, + 61, 44, 31, 31, 35, 33, 33, 37, 42, 31, 25, 29, 36, 35, 30, 27, + 28, 29, 27, 24, 24, 29, 31, 30, 36, 35, 34, 31, 22, 13, 14, 20, + 17, 22, 26, 28, 27, 27, 28, 31, 38, 38, 38, 35, 30, 27, 26, 26, + 29, 27, 25, 26, 29, 31, 29, 27, 27, 29, 32, 37, 41, 41, 39, 35, + 34, 31, 33, 40, 49, 56, 64, 74, 73, 71, 85, 90, 99, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 187, 127, 104, 104, 137, 190, 187, 175, 153, + 163, 173, 166, 152, 113, 123, 125, 116, 89, 127, 106, 65, 98, 121, 107, 111, + 119, 112, 109, 111, 103, 90, 97, 82, 66, 50, 85, 131, 175, 165, 127, 69, + 99, 118, 93, 100, 79, 79, 102, 115, 96, 105, 102, 77, 29, 51, 37, 25, + 25, 32, 33, 33, 34, 41, 32, 27, 30, 36, 33, 28, 24, 28, 28, 26, + 24, 25, 27, 30, 30, 26, 33, 41, 39, 26, 13, 14, 22, 29, 32, 35, + 32, 26, 22, 25, 28, 37, 37, 36, 33, 30, 29, 30, 32, 22, 21, 22, + 24, 27, 29, 27, 26, 26, 28, 30, 33, 35, 34, 32, 28, 34, 30, 31, + 36, 41, 47, 54, 64, 72, 66, 72, 69, 75, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 173, 165, 157, 176, 177, 129, 170, 156, 168, 160, 159, 171, + 144, 114, 129, 111, 131, 141, 119, 124, 97, 98, 72, 99, 156, 198, 186, 137, + 102, 89, 74, 88, 103, 94, 118, 132, 135, 110, 90, 100, 133, 102, 98, 123, + 86, 76, 95, 78, 62, 71, 47, 33, 31, 60, 41, 32, 26, 28, 36, 38, + 36, 35, 36, 32, 31, 33, 34, 30, 29, 32, 31, 29, 27, 26, 26, 27, + 29, 31, 27, 20, 20, 29, 38, 38, 32, 27, 32, 34, 32, 26, 19, 17, + 21, 26, 25, 25, 24, 21, 18, 18, 20, 22, 15, 18, 22, 23, 24, 24, + 26, 28, 26, 28, 30, 32, 32, 32, 31, 28, 30, 26, 27, 31, 33, 37, + 46, 55, 63, 59, 66, 61, 64, 78, 255, 255, 255, 255, 255, 255, 255, 255, + 52, 101, 124, 117, 73, 110, 142, 154, 151, 178, 156, 141, 157, 139, 137, 95, + 132, 128, 129, 122, 124, 104, 150, 171, 163, 137, 112, 104, 95, 93, 108, 85, + 83, 89, 71, 108, 118, 114, 72, 78, 61, 31, 67, 84, 66, 94, 101, 89, + 80, 47, 49, 36, 53, 29, 17, 29, 26, 25, 27, 33, 34, 32, 30, 28, + 29, 32, 34, 33, 30, 35, 43, 36, 32, 29, 29, 29, 27, 28, 32, 32, + 24, 20, 27, 35, 38, 38, 39, 33, 32, 29, 23, 19, 20, 25, 30, 18, + 18, 16, 14, 11, 9, 11, 13, 17, 19, 22, 23, 21, 22, 25, 28, 25, + 28, 31, 32, 31, 30, 30, 29, 25, 23, 27, 32, 33, 35, 43, 53, 49, + 50, 68, 65, 66, 75, 134, 255, 255, 255, 255, 255, 255, 207, 101, 127, 99, + 88, 66, 119, 157, 128, 140, 159, 161, 153, 142, 130, 129, 150, 129, 117, 124, + 113, 129, 147, 121, 116, 125, 101, 94, 122, 114, 86, 87, 88, 95, 102, 100, + 106, 97, 79, 55, 40, 52, 77, 57, 45, 55, 50, 67, 71, 54, 47, 61, + 50, 27, 20, 36, 22, 24, 25, 24, 26, 26, 26, 26, 28, 28, 31, 32, + 32, 30, 37, 46, 41, 35, 32, 33, 31, 27, 28, 33, 35, 33, 33, 35, + 34, 31, 33, 38, 32, 29, 26, 23, 21, 22, 24, 26, 26, 27, 28, 27, + 25, 25, 26, 28, 26, 24, 21, 20, 22, 23, 22, 22, 24, 27, 30, 30, + 28, 27, 28, 27, 25, 24, 29, 33, 33, 33, 38, 47, 45, 45, 62, 59, + 58, 66, 63, 255, 255, 255, 255, 255, 255, 77, 103, 154, 143, 150, 145, 164, + 171, 219, 200, 147, 142, 139, 119, 136, 144, 121, 127, 125, 117, 121, 109, 144, + 118, 106, 115, 87, 80, 109, 90, 71, 105, 122, 114, 95, 103, 80, 71, 47, + 50, 63, 51, 39, 50, 54, 49, 54, 58, 32, 47, 56, 22, 30, 30, 31, + 3, 25, 29, 30, 26, 25, 25, 27, 28, 32, 30, 29, 30, 30, 29, 34, + 41, 45, 38, 34, 35, 33, 28, 28, 34, 39, 26, 21, 34, 51, 52, 37, + 24, 28, 25, 21, 19, 18, 17, 15, 13, 14, 16, 19, 21, 22, 23, 26, + 28, 36, 28, 20, 19, 23, 24, 21, 16, 24, 27, 29, 28, 25, 24, 25, + 24, 23, 23, 27, 29, 27, 23, 27, 34, 48, 45, 53, 43, 39, 49, 52, + 255, 255, 255, 255, 255, 93, 98, 106, 75, 150, 125, 94, 148, 153, 153, 148, + 133, 123, 118, 127, 131, 133, 120, 116, 124, 115, 118, 128, 113, 106, 89, 105, + 74, 113, 95, 117, 118, 119, 71, 76, 82, 97, 74, 73, 56, 47, 54, 49, + 43, 44, 51, 59, 60, 58, 65, 54, 45, 41, 32, 18, 17, 26, 22, 24, + 28, 32, 35, 31, 24, 18, 23, 26, 29, 29, 28, 23, 20, 19, 27, 28, + 28, 28, 29, 31, 29, 26, 33, 29, 29, 34, 36, 31, 26, 24, 12, 13, + 15, 17, 18, 18, 17, 17, 14, 16, 18, 20, 22, 25, 29, 31, 33, 33, + 32, 27, 22, 21, 23, 26, 35, 28, 26, 31, 32, 27, 23, 22, 24, 15, + 15, 26, 26, 22, 33, 52, 40, 35, 30, 29, 32, 43, 53, 125, 255, 255, + 255, 255, 180, 180, 132, 138, 130, 93, 140, 143, 140, 113, 128, 143, 146, 139, + 127, 111, 100, 123, 116, 120, 107, 105, 107, 86, 78, 65, 92, 93, 133, 119, + 113, 93, 75, 75, 71, 67, 78, 58, 64, 50, 42, 15, 24, 36, 46, 56, + 59, 60, 60, 54, 43, 37, 35, 31, 23, 25, 35, 29, 29, 31, 33, 35, + 31, 25, 20, 32, 32, 33, 32, 31, 27, 24, 22, 22, 22, 21, 19, 19, + 19, 18, 16, 28, 24, 25, 31, 33, 30, 26, 26, 23, 22, 21, 20, 19, + 17, 15, 14, 15, 20, 25, 26, 25, 27, 34, 40, 34, 33, 29, 24, 20, + 20, 24, 28, 20, 17, 20, 28, 32, 29, 27, 29, 31, 25, 27, 33, 31, + 28, 35, 48, 52, 46, 39, 35, 33, 38, 44, 47, 255, 255, 255, 255, 92, + 77, 139, 82, 134, 173, 131, 134, 141, 126, 136, 145, 137, 131, 124, 126, 124, + 113, 109, 117, 109, 107, 108, 89, 84, 77, 97, 106, 123, 118, 97, 83, 64, + 82, 76, 67, 79, 65, 74, 61, 51, 29, 31, 34, 42, 53, 56, 51, 46, + 41, 31, 24, 24, 25, 22, 26, 35, 31, 31, 32, 33, 36, 35, 31, 27, + 34, 33, 32, 32, 34, 32, 28, 26, 26, 24, 22, 20, 18, 16, 16, 17, + 24, 21, 22, 27, 30, 27, 25, 26, 24, 22, 19, 16, 13, 12, 11, 11, + 20, 27, 33, 31, 25, 24, 31, 38, 31, 29, 26, 21, 19, 21, 25, 30, + 22, 22, 26, 30, 28, 23, 20, 22, 33, 36, 37, 37, 36, 37, 40, 44, + 48, 46, 41, 38, 38, 41, 45, 46, 255, 255, 255, 255, 90, 101, 129, 119, + 90, 70, 99, 131, 112, 150, 154, 161, 146, 144, 130, 130, 123, 116, 114, 124, + 112, 100, 94, 74, 73, 103, 104, 109, 97, 100, 81, 86, 80, 86, 85, 82, + 94, 74, 76, 58, 46, 48, 56, 61, 58, 52, 42, 37, 36, 42, 32, 23, + 22, 24, 23, 26, 31, 29, 29, 29, 31, 36, 37, 37, 36, 25, 26, 27, + 31, 35, 34, 30, 27, 30, 27, 26, 25, 24, 23, 25, 29, 26, 23, 24, + 27, 28, 24, 22, 24, 19, 17, 14, 12, 11, 12, 14, 16, 29, 32, 32, + 28, 21, 17, 20, 23, 25, 24, 23, 23, 23, 25, 28, 30, 29, 30, 31, + 29, 23, 18, 18, 20, 31, 39, 39, 33, 31, 38, 40, 38, 36, 37, 37, + 38, 39, 41, 44, 44, 112, 255, 255, 195, 94, 83, 65, 106, 145, 115, 94, + 134, 137, 144, 127, 118, 95, 115, 123, 149, 151, 114, 115, 130, 121, 109, 103, + 91, 99, 96, 91, 108, 88, 95, 76, 82, 77, 86, 89, 88, 94, 62, 56, + 37, 28, 29, 52, 75, 71, 49, 31, 35, 44, 50, 40, 31, 29, 30, 31, + 32, 33, 30, 28, 27, 29, 33, 35, 35, 35, 21, 24, 29, 33, 37, 33, + 28, 23, 27, 24, 24, 28, 27, 26, 30, 38, 32, 30, 30, 32, 28, 22, + 19, 20, 19, 17, 15, 13, 14, 17, 21, 23, 34, 30, 26, 23, 20, 18, + 15, 13, 19, 21, 24, 27, 30, 31, 30, 29, 23, 24, 24, 20, 18, 20, + 26, 31, 30, 38, 37, 26, 20, 27, 32, 29, 30, 33, 36, 37, 35, 35, + 36, 35, 42, 255, 255, 114, 95, 92, 89, 132, 103, 113, 135, 127, 140, 123, + 121, 145, 145, 181, 168, 166, 139, 102, 101, 118, 116, 114, 116, 111, 123, 83, + 74, 92, 72, 81, 70, 71, 70, 83, 84, 81, 83, 51, 51, 42, 41, 43, + 41, 41, 41, 43, 44, 46, 46, 47, 37, 30, 29, 35, 39, 38, 36, 34, + 32, 29, 28, 30, 30, 28, 27, 27, 31, 36, 37, 35, 29, 23, 20, 26, + 23, 26, 32, 31, 27, 32, 42, 34, 33, 35, 36, 31, 23, 19, 20, 18, + 16, 14, 12, 13, 15, 18, 20, 30, 25, 21, 21, 24, 26, 23, 19, 21, + 23, 27, 32, 36, 35, 30, 26, 22, 22, 18, 12, 11, 18, 25, 28, 31, + 35, 32, 21, 12, 16, 20, 18, 18, 24, 31, 34, 34, 34, 37, 38, 47, + 255, 255, 98, 100, 106, 85, 90, 139, 126, 95, 172, 132, 143, 126, 133, 112, + 144, 127, 130, 105, 114, 98, 100, 94, 92, 91, 77, 82, 91, 72, 77, 55, + 60, 66, 66, 75, 77, 75, 70, 74, 52, 59, 56, 58, 61, 42, 26, 29, + 46, 56, 51, 39, 35, 28, 23, 25, 34, 41, 40, 34, 36, 33, 30, 28, + 29, 27, 25, 22, 31, 36, 40, 37, 30, 23, 22, 23, 30, 26, 29, 35, + 32, 24, 27, 38, 28, 30, 35, 39, 35, 27, 23, 24, 14, 13, 11, 10, + 11, 13, 15, 17, 22, 21, 21, 23, 27, 30, 31, 31, 30, 30, 32, 35, + 37, 35, 29, 24, 31, 29, 21, 11, 9, 15, 17, 14, 25, 27, 27, 22, + 16, 15, 16, 18, 16, 23, 30, 35, 35, 36, 40, 41, 43, 106, 255, 122, + 99, 104, 113, 145, 105, 135, 141, 120, 150, 122, 102, 113, 91, 134, 127, 145, + 128, 126, 101, 94, 90, 95, 98, 80, 80, 96, 75, 74, 55, 56, 72, 64, + 77, 75, 70, 61, 69, 46, 55, 47, 43, 34, 47, 63, 70, 67, 57, 48, + 43, 36, 29, 23, 26, 36, 44, 42, 34, 34, 31, 29, 28, 30, 29, 26, + 24, 30, 35, 38, 32, 24, 19, 23, 29, 29, 26, 29, 34, 28, 17, 18, + 28, 21, 25, 33, 37, 37, 28, 27, 29, 13, 13, 13, 14, 16, 18, 21, + 22, 17, 19, 23, 25, 26, 28, 33, 37, 39, 37, 36, 36, 36, 33, 28, + 23, 32, 30, 22, 13, 13, 19, 18, 12, 17, 19, 23, 25, 22, 19, 19, + 23, 27, 34, 38, 39, 35, 31, 33, 35, 34, 35, 255, 115, 119, 121, 142, + 157, 173, 160, 135, 135, 132, 116, 119, 147, 136, 134, 141, 123, 126, 113, 118, + 102, 95, 106, 85, 67, 87, 77, 76, 67, 63, 72, 77, 80, 89, 70, 65, + 61, 61, 54, 45, 39, 39, 34, 36, 54, 59, 44, 48, 51, 33, 36, 33, + 37, 45, 41, 32, 35, 46, 39, 43, 43, 37, 31, 27, 22, 17, 26, 31, + 33, 30, 27, 25, 21, 19, 30, 29, 33, 40, 37, 27, 21, 21, 27, 28, + 34, 39, 41, 32, 28, 27, 21, 21, 20, 22, 25, 25, 20, 16, 22, 22, + 21, 21, 22, 24, 26, 27, 29, 25, 26, 33, 36, 33, 29, 27, 27, 23, + 32, 36, 22, 15, 21, 25, 28, 30, 31, 31, 28, 30, 36, 40, 41, 42, + 42, 38, 35, 35, 36, 37, 27, 38, 255, 103, 112, 127, 129, 136, 167, 177, + 150, 131, 106, 148, 131, 133, 120, 125, 137, 118, 113, 112, 117, 103, 92, 102, + 97, 86, 90, 82, 85, 79, 71, 73, 68, 63, 71, 68, 64, 57, 53, 48, + 39, 36, 37, 45, 47, 61, 60, 42, 41, 44, 31, 26, 33, 37, 36, 34, + 36, 39, 41, 34, 36, 35, 30, 29, 29, 27, 22, 25, 30, 32, 28, 27, + 27, 25, 24, 27, 26, 27, 32, 29, 22, 18, 20, 24, 26, 32, 41, 44, + 39, 35, 35, 25, 26, 26, 27, 27, 26, 22, 19, 23, 22, 22, 22, 23, + 25, 27, 28, 33, 31, 32, 38, 40, 37, 34, 35, 40, 31, 35, 39, 30, + 25, 26, 23, 26, 30, 35, 37, 36, 37, 39, 41, 35, 36, 37, 35, 31, + 30, 32, 33, 30, 37, 255, 104, 119, 117, 121, 126, 146, 141, 111, 116, 117, + 128, 144, 164, 136, 104, 99, 111, 141, 116, 117, 104, 86, 86, 91, 85, 73, + 72, 80, 77, 74, 76, 67, 59, 61, 67, 60, 55, 51, 48, 41, 40, 43, + 58, 59, 66, 60, 42, 38, 42, 35, 26, 38, 42, 33, 30, 38, 40, 34, + 42, 41, 38, 34, 36, 40, 40, 34, 30, 35, 37, 32, 29, 29, 30, 27, + 32, 29, 29, 31, 30, 26, 23, 24, 28, 30, 33, 41, 41, 35, 28, 29, + 29, 31, 32, 32, 30, 27, 26, 26, 22, 22, 22, 23, 24, 26, 28, 29, + 33, 32, 34, 38, 38, 34, 35, 39, 44, 31, 31, 37, 34, 33, 30, 21, + 30, 34, 40, 44, 42, 39, 37, 37, 31, 33, 34, 33, 29, 28, 29, 31, + 37, 38, 108, 204, 107, 124, 135, 140, 148, 120, 92, 124, 157, 124, 125, 129, + 122, 116, 115, 115, 121, 127, 120, 114, 102, 92, 93, 91, 78, 64, 70, 69, + 70, 77, 70, 59, 58, 61, 55, 53, 52, 52, 47, 47, 50, 65, 63, 62, + 56, 47, 45, 46, 45, 41, 47, 48, 40, 35, 36, 35, 30, 49, 48, 44, + 42, 45, 47, 44, 36, 38, 42, 45, 40, 35, 33, 32, 27, 34, 34, 34, + 35, 34, 30, 28, 28, 25, 23, 28, 33, 33, 25, 20, 20, 32, 37, 39, + 37, 32, 29, 30, 31, 23, 23, 24, 25, 26, 27, 29, 29, 27, 27, 30, + 33, 30, 27, 30, 36, 39, 29, 30, 36, 36, 38, 37, 26, 36, 38, 42, + 43, 39, 35, 30, 27, 31, 33, 34, 34, 31, 30, 31, 32, 39, 35, 31, + 255, 85, 113, 111, 107, 118, 107, 88, 110, 126, 123, 107, 95, 103, 119, 122, + 114, 98, 115, 105, 109, 111, 99, 89, 89, 89, 77, 77, 70, 69, 77, 71, + 56, 51, 53, 50, 51, 53, 51, 46, 46, 48, 66, 62, 53, 48, 50, 47, + 45, 46, 53, 48, 46, 48, 42, 32, 30, 34, 44, 44, 45, 44, 47, 48, + 42, 31, 40, 46, 51, 48, 44, 41, 37, 32, 30, 32, 32, 33, 31, 29, + 25, 20, 13, 13, 17, 23, 26, 25, 24, 27, 41, 43, 43, 39, 32, 27, + 26, 27, 23, 24, 25, 26, 26, 27, 27, 27, 25, 25, 28, 30, 27, 23, + 26, 32, 36, 32, 37, 39, 34, 36, 38, 30, 35, 35, 35, 34, 31, 28, + 25, 23, 29, 32, 34, 35, 32, 31, 32, 33, 34, 29, 26, 255, 100, 125, + 118, 103, 110, 109, 104, 126, 133, 113, 119, 114, 112, 99, 87, 107, 116, 109, + 101, 101, 105, 99, 83, 76, 83, 84, 82, 71, 68, 76, 71, 60, 56, 54, + 52, 54, 57, 55, 50, 50, 51, 62, 60, 49, 44, 49, 44, 38, 45, 54, + 45, 44, 51, 49, 37, 35, 43, 39, 42, 46, 46, 47, 46, 40, 30, 32, + 39, 46, 46, 45, 45, 44, 40, 32, 35, 37, 35, 33, 30, 25, 20, 20, + 16, 17, 23, 26, 25, 28, 32, 49, 48, 47, 39, 34, 26, 25, 22, 29, + 27, 30, 28, 30, 28, 29, 29, 33, 31, 33, 35, 34, 29, 29, 33, 34, + 34, 40, 37, 26, 27, 30, 23, 27, 26, 24, 25, 24, 25, 24, 23, 25, + 28, 31, 33, 30, 30, 30, 31, 37, 31, 27, 255, 123, 109, 114, 104, 103, + 98, 100, 128, 134, 130, 126, 103, 108, 107, 96, 109, 106, 115, 115, 100, 94, + 104, 93, 76, 78, 76, 79, 74, 68, 72, 67, 60, 64, 52, 50, 50, 54, + 55, 54, 57, 61, 51, 58, 50, 45, 48, 38, 33, 49, 50, 48, 48, 50, + 50, 48, 46, 49, 46, 50, 53, 50, 46, 44, 40, 33, 27, 33, 38, 36, + 37, 42, 44, 44, 41, 43, 43, 38, 35, 36, 33, 25, 30, 26, 24, 26, + 28, 29, 34, 40, 48, 45, 43, 38, 37, 33, 32, 27, 33, 32, 34, 33, + 34, 30, 30, 29, 38, 34, 34, 38, 38, 33, 29, 29, 29, 29, 34, 30, + 19, 21, 24, 14, 22, 21, 20, 22, 23, 24, 23, 21, 23, 26, 30, 32, + 30, 29, 30, 30, 41, 34, 30, 255, 146, 104, 119, 118, 127, 130, 129, 138, + 126, 126, 117, 92, 104, 112, 100, 108, 95, 88, 97, 73, 59, 86, 89, 66, + 62, 72, 82, 77, 67, 63, 54, 50, 59, 42, 39, 40, 46, 51, 54, 60, + 67, 43, 56, 55, 48, 51, 36, 36, 58, 50, 55, 57, 48, 51, 57, 57, + 48, 53, 57, 55, 49, 41, 37, 32, 29, 28, 31, 30, 28, 28, 35, 41, + 40, 46, 48, 45, 37, 35, 35, 34, 29, 28, 23, 22, 27, 32, 35, 44, + 52, 41, 38, 36, 36, 40, 41, 41, 37, 36, 36, 37, 36, 36, 32, 31, + 30, 35, 32, 32, 36, 37, 32, 26, 23, 28, 27, 31, 28, 21, 26, 27, + 16, 23, 22, 21, 23, 24, 23, 19, 16, 24, 27, 31, 34, 32, 31, 31, + 32, 39, 31, 27, 255, 224, 102, 140, 132, 123, 120, 140, 125, 123, 123, 129, + 104, 102, 94, 81, 98, 87, 75, 69, 78, 93, 89, 72, 73, 87, 86, 70, + 58, 56, 54, 49, 49, 55, 45, 48, 49, 48, 45, 46, 51, 55, 50, 53, + 56, 51, 53, 56, 59, 54, 57, 53, 49, 42, 47, 54, 61, 61, 69, 64, + 56, 48, 39, 31, 25, 23, 29, 25, 22, 26, 33, 40, 43, 43, 39, 45, + 48, 44, 42, 43, 41, 35, 38, 38, 29, 40, 32, 47, 53, 71, 48, 49, + 57, 60, 53, 38, 43, 53, 59, 54, 50, 41, 38, 32, 31, 29, 36, 41, + 40, 34, 28, 28, 29, 27, 24, 29, 33, 30, 22, 17, 19, 24, 24, 23, + 24, 27, 28, 30, 30, 29, 20, 21, 28, 34, 30, 25, 27, 35, 34, 30, + 25, 255, 255, 105, 128, 140, 165, 154, 129, 103, 123, 130, 127, 110, 106, 100, + 88, 84, 70, 75, 55, 45, 54, 69, 74, 76, 77, 76, 58, 48, 55, 66, + 63, 51, 43, 56, 53, 50, 51, 54, 56, 58, 58, 50, 55, 55, 52, 51, + 54, 55, 52, 57, 56, 49, 40, 39, 45, 51, 52, 67, 60, 53, 47, 44, + 38, 29, 23, 24, 22, 24, 27, 33, 39, 44, 43, 44, 47, 46, 42, 41, + 43, 41, 34, 41, 48, 44, 52, 39, 47, 43, 53, 66, 59, 59, 67, 69, + 60, 54, 56, 54, 52, 50, 48, 45, 41, 37, 36, 32, 39, 39, 33, 28, + 27, 26, 23, 31, 34, 37, 34, 28, 23, 23, 24, 28, 27, 27, 29, 30, + 30, 29, 28, 25, 24, 26, 28, 25, 25, 33, 44, 48, 35, 29, 255, 255, + 134, 120, 117, 157, 158, 132, 99, 114, 127, 110, 104, 96, 98, 94, 71, 61, + 57, 59, 66, 75, 80, 80, 79, 79, 68, 53, 46, 58, 69, 65, 51, 44, + 58, 51, 44, 47, 56, 62, 60, 54, 62, 67, 68, 65, 63, 65, 65, 64, + 67, 67, 61, 49, 43, 46, 51, 55, 45, 40, 40, 45, 54, 58, 53, 48, + 34, 34, 36, 38, 41, 45, 50, 50, 50, 49, 44, 39, 40, 42, 44, 42, + 60, 69, 67, 74, 54, 55, 47, 53, 57, 63, 72, 73, 61, 48, 51, 64, + 62, 63, 64, 65, 63, 57, 49, 46, 34, 40, 41, 35, 31, 29, 27, 23, + 35, 35, 35, 33, 30, 27, 24, 22, 32, 31, 31, 32, 31, 31, 29, 27, + 28, 27, 28, 30, 28, 30, 37, 46, 43, 26, 22, 255, 255, 215, 123, 107, + 127, 130, 135, 111, 105, 107, 84, 90, 80, 85, 91, 65, 66, 38, 49, 70, + 82, 75, 59, 56, 65, 65, 57, 51, 52, 49, 43, 43, 52, 52, 48, 44, + 50, 58, 62, 58, 53, 74, 79, 82, 82, 80, 80, 81, 82, 81, 86, 84, + 75, 67, 67, 71, 73, 70, 67, 63, 64, 65, 64, 57, 50, 47, 45, 42, + 40, 38, 39, 41, 43, 49, 48, 45, 38, 37, 43, 51, 55, 76, 88, 83, + 83, 62, 67, 62, 68, 54, 62, 72, 66, 51, 36, 44, 56, 51, 51, 59, + 63, 68, 62, 55, 50, 44, 48, 45, 39, 35, 34, 32, 29, 37, 34, 33, + 33, 33, 32, 27, 23, 30, 31, 31, 32, 32, 32, 31, 29, 28, 31, 36, + 40, 38, 36, 38, 40, 36, 27, 26, 255, 255, 255, 126, 131, 137, 120, 130, + 117, 109, 88, 75, 89, 84, 83, 84, 60, 66, 58, 44, 45, 56, 56, 44, + 48, 62, 62, 54, 48, 46, 38, 32, 36, 48, 45, 49, 52, 57, 60, 61, + 60, 58, 70, 74, 81, 84, 83, 82, 85, 90, 89, 97, 101, 96, 91, 90, + 91, 91, 95, 96, 95, 91, 85, 79, 74, 72, 74, 67, 57, 50, 44, 41, + 42, 42, 39, 41, 41, 38, 36, 40, 56, 71, 79, 89, 85, 86, 66, 73, + 65, 68, 76, 66, 58, 57, 60, 56, 48, 41, 43, 45, 54, 65, 75, 76, + 71, 67, 52, 52, 47, 38, 35, 36, 36, 33, 35, 32, 30, 31, 34, 34, + 29, 26, 26, 28, 28, 31, 32, 34, 34, 32, 35, 39, 42, 42, 39, 39, + 38, 37, 40, 45, 44, 255, 255, 255, 130, 132, 147, 127, 132, 121, 111, 83, + 79, 93, 96, 88, 73, 54, 55, 64, 55, 53, 54, 47, 39, 53, 74, 65, + 52, 45, 51, 52, 48, 42, 43, 40, 48, 54, 58, 56, 56, 60, 63, 68, + 73, 82, 88, 88, 87, 91, 98, 95, 103, 108, 107, 105, 105, 105, 103, 95, + 99, 103, 101, 95, 94, 94, 97, 88, 78, 64, 54, 51, 48, 44, 42, 36, + 37, 40, 41, 40, 47, 65, 82, 77, 92, 90, 94, 76, 82, 68, 64, 78, + 73, 68, 67, 66, 62, 54, 47, 57, 57, 60, 68, 76, 77, 72, 66, 58, + 57, 50, 42, 39, 40, 39, 35, 29, 27, 26, 27, 29, 28, 24, 22, 24, + 26, 27, 31, 34, 36, 37, 36, 44, 44, 41, 35, 32, 37, 40, 39, 31, + 44, 47, 255, 255, 255, 139, 123, 135, 119, 131, 117, 96, 81, 82, 80, 90, + 82, 59, 54, 50, 49, 63, 68, 54, 42, 43, 53, 60, 67, 58, 53, 59, + 60, 54, 49, 49, 44, 47, 52, 53, 52, 56, 61, 68, 75, 80, 90, 99, + 99, 96, 101, 110, 105, 109, 111, 109, 109, 112, 111, 108, 113, 113, 109, 103, + 96, 91, 88, 87, 85, 77, 65, 60, 61, 59, 52, 47, 46, 42, 41, 48, + 56, 64, 76, 89, 86, 98, 92, 96, 83, 95, 81, 74, 64, 76, 86, 83, + 71, 61, 58, 60, 63, 58, 55, 57, 61, 62, 57, 52, 61, 61, 57, 50, + 48, 47, 42, 35, 30, 29, 28, 28, 27, 24, 21, 20, 25, 27, 29, 33, + 36, 39, 39, 38, 41, 42, 38, 31, 30, 36, 38, 36, 22, 31, 39, 255, + 255, 255, 147, 139, 135, 101, 115, 101, 73, 76, 78, 58, 72, 68, 47, 59, + 54, 74, 82, 68, 43, 48, 72, 70, 48, 62, 61, 61, 60, 48, 38, 45, + 59, 56, 55, 54, 54, 56, 62, 72, 78, 81, 86, 97, 106, 105, 101, 106, + 116, 116, 116, 114, 110, 111, 115, 115, 111, 113, 109, 106, 105, 105, 105, 105, + 103, 110, 101, 94, 95, 100, 99, 91, 81, 57, 48, 46, 57, 71, 79, 87, + 95, 92, 99, 87, 86, 80, 97, 92, 87, 68, 75, 84, 88, 87, 80, 67, + 56, 71, 65, 61, 63, 71, 75, 74, 71, 62, 65, 63, 58, 56, 53, 45, + 36, 40, 40, 39, 37, 33, 29, 25, 25, 28, 30, 31, 35, 37, 40, 40, + 39, 30, 35, 37, 34, 35, 37, 37, 28, 34, 33, 42, 255, 255, 255, 136, + 133, 103, 98, 109, 98, 80, 100, 66, 47, 52, 59, 64, 67, 61, 72, 56, + 45, 46, 50, 48, 46, 46, 57, 58, 61, 61, 50, 42, 43, 49, 53, 56, + 59, 58, 60, 66, 77, 85, 93, 95, 98, 103, 108, 112, 116, 118, 116, 114, + 113, 114, 117, 116, 112, 108, 112, 108, 104, 103, 105, 107, 108, 107, 105, 110, + 107, 97, 96, 104, 109, 106, 106, 96, 86, 82, 86, 92, 97, 98, 109, 107, + 103, 94, 88, 81, 83, 86, 91, 78, 72, 79, 87, 82, 66, 53, 57, 59, + 90, 90, 71, 64, 58, 66, 62, 61, 59, 54, 57, 58, 53, 48, 50, 45, + 39, 35, 35, 35, 35, 37, 28, 34, 41, 43, 41, 38, 38, 39, 37, 30, + 28, 30, 28, 22, 31, 41, 37, 29, 33, 255, 255, 255, 212, 111, 102, 106, + 100, 93, 97, 72, 66, 81, 104, 107, 97, 85, 70, 55, 42, 35, 36, 41, + 45, 53, 59, 57, 55, 53, 50, 41, 39, 45, 55, 48, 53, 59, 64, 68, + 78, 91, 99, 107, 106, 108, 109, 110, 111, 111, 111, 121, 119, 116, 114, 112, + 108, 105, 102, 107, 105, 103, 105, 109, 112, 115, 115, 117, 120, 118, 112, 110, + 111, 112, 111, 114, 106, 97, 92, 92, 95, 95, 93, 113, 111, 104, 98, 93, + 90, 91, 92, 92, 86, 84, 86, 85, 75, 64, 58, 66, 46, 57, 68, 83, + 96, 76, 57, 74, 77, 76, 67, 61, 55, 50, 43, 47, 43, 39, 36, 38, + 39, 41, 41, 39, 40, 42, 45, 46, 44, 42, 39, 42, 40, 40, 42, 41, + 38, 40, 42, 44, 35, 110, 255, 255, 255, 255, 142, 118, 101, 97, 92, 93, + 103, 77, 57, 43, 30, 38, 65, 81, 53, 54, 61, 69, 71, 63, 56, 51, + 55, 51, 47, 45, 39, 38, 43, 52, 43, 49, 56, 65, 75, 87, 100, 109, + 115, 114, 116, 116, 116, 114, 111, 110, 117, 118, 118, 117, 116, 116, 117, 119, + 112, 111, 112, 114, 120, 123, 124, 124, 125, 124, 123, 123, 120, 114, 112, 115, + 113, 108, 104, 103, 104, 105, 104, 102, 104, 100, 94, 91, 88, 89, 90, 91, + 91, 94, 97, 96, 85, 73, 69, 73, 69, 59, 71, 71, 78, 97, 85, 70, + 81, 88, 90, 80, 69, 59, 53, 47, 46, 43, 40, 38, 40, 40, 39, 38, + 41, 37, 35, 37, 40, 41, 37, 32, 38, 42, 44, 44, 45, 46, 42, 34, + 42, 35, 255, 255, 255, 255, 255, 147, 113, 89, 83, 77, 71, 82, 75, 76, + 74, 60, 56, 68, 72, 79, 67, 56, 49, 48, 51, 56, 58, 52, 49, 48, + 48, 44, 40, 38, 43, 42, 48, 56, 66, 77, 88, 100, 106, 111, 114, 117, + 120, 122, 121, 119, 117, 114, 117, 120, 120, 120, 122, 128, 133, 120, 120, 121, + 122, 125, 125, 124, 124, 130, 124, 124, 129, 127, 118, 118, 125, 115, 112, 110, + 110, 111, 112, 110, 109, 109, 103, 98, 97, 99, 104, 106, 106, 92, 97, 104, + 103, 92, 82, 83, 91, 75, 82, 103, 87, 74, 89, 91, 91, 81, 87, 89, + 82, 75, 69, 63, 57, 50, 47, 44, 40, 40, 38, 34, 32, 34, 32, 30, + 30, 32, 33, 32, 30, 34, 41, 42, 39, 41, 46, 39, 25, 36, 32, 255, + 255, 255, 255, 255, 206, 102, 98, 80, 69, 80, 85, 72, 67, 60, 49, 51, + 64, 66, 79, 67, 53, 45, 49, 56, 62, 61, 54, 48, 43, 43, 41, 37, + 34, 37, 42, 48, 59, 70, 80, 91, 99, 104, 109, 112, 117, 122, 125, 126, + 126, 125, 124, 125, 125, 122, 118, 117, 120, 124, 123, 123, 126, 126, 125, 124, + 126, 125, 134, 128, 129, 134, 133, 127, 132, 141, 130, 127, 120, 117, 114, 111, + 108, 106, 112, 107, 102, 103, 108, 113, 114, 114, 102, 103, 107, 108, 102, 95, + 95, 100, 90, 87, 99, 87, 83, 104, 101, 92, 90, 90, 87, 81, 78, 75, + 69, 59, 51, 49, 45, 41, 39, 36, 32, 29, 31, 33, 34, 33, 32, 32, + 36, 39, 38, 42, 41, 36, 38, 43, 39, 26, 33, 32, 255, 255, 255, 255, + 255, 255, 97, 93, 78, 68, 75, 88, 80, 81, 80, 70, 65, 61, 49, 70, + 72, 76, 76, 77, 74, 65, 54, 60, 48, 36, 32, 33, 33, 38, 43, 48, + 54, 65, 78, 90, 99, 106, 109, 114, 116, 120, 124, 127, 128, 128, 128, 131, + 131, 130, 128, 125, 123, 123, 124, 127, 128, 132, 132, 131, 131, 135, 137, 133, + 131, 132, 133, 132, 131, 137, 143, 132, 131, 127, 124, 121, 118, 115, 113, 112, + 110, 106, 106, 109, 111, 111, 114, 117, 113, 111, 111, 108, 101, 98, 99, 98, + 87, 96, 88, 86, 103, 96, 87, 103, 101, 94, 86, 82, 77, 68, 57, 52, + 48, 44, 41, 40, 37, 35, 33, 28, 32, 35, 34, 32, 32, 36, 41, 39, + 39, 37, 32, 32, 35, 34, 28, 28, 29, 255, 255, 255, 255, 255, 255, 91, + 73, 64, 54, 51, 77, 67, 63, 62, 59, 65, 73, 66, 74, 77, 74, 62, + 54, 55, 60, 60, 58, 45, 33, 32, 36, 42, 48, 51, 57, 63, 73, 86, + 98, 107, 111, 112, 120, 122, 124, 126, 128, 129, 130, 130, 131, 130, 130, 132, + 134, 134, 133, 132, 132, 134, 135, 135, 136, 137, 141, 145, 136, 140, 140, 136, + 135, 136, 136, 135, 130, 133, 136, 137, 132, 129, 125, 123, 130, 130, 129, 127, + 122, 120, 120, 120, 125, 119, 114, 113, 108, 101, 97, 97, 95, 86, 102, 98, + 90, 98, 95, 97, 100, 101, 101, 92, 85, 77, 68, 58, 59, 54, 48, 42, + 39, 36, 34, 34, 29, 30, 31, 31, 31, 31, 32, 33, 37, 34, 32, 31, + 28, 25, 26, 28, 28, 27, 255, 255, 255, 255, 255, 255, 110, 99, 70, 57, + 72, 95, 82, 72, 62, 52, 57, 64, 57, 53, 69, 81, 73, 60, 55, 58, + 59, 51, 41, 36, 39, 49, 54, 55, 57, 65, 71, 79, 91, 102, 108, 110, + 110, 123, 124, 125, 127, 129, 131, 133, 133, 131, 129, 128, 130, 133, 134, 130, + 126, 129, 131, 131, 129, 129, 131, 135, 139, 144, 152, 153, 145, 142, 143, 139, + 131, 139, 143, 147, 147, 142, 131, 122, 117, 131, 133, 132, 128, 118, 112, 111, + 112, 125, 120, 115, 113, 107, 100, 97, 98, 91, 76, 91, 100, 105, 116, 112, + 113, 87, 95, 101, 95, 86, 77, 70, 63, 68, 61, 53, 44, 39, 35, 32, + 30, 34, 32, 30, 31, 35, 35, 32, 28, 39, 34, 33, 36, 31, 22, 24, + 31, 35, 32, 255, 255, 255, 255, 255, 255, 216, 131, 114, 88, 83, 72, 73, + 66, 74, 76, 66, 68, 61, 58, 53, 58, 65, 63, 51, 44, 44, 47, 45, + 46, 51, 55, 57, 61, 65, 77, 83, 93, 102, 107, 111, 114, 116, 127, 128, + 128, 127, 126, 126, 129, 131, 131, 131, 133, 134, 134, 134, 134, 134, 136, 138, + 140, 138, 135, 134, 136, 139, 133, 140, 150, 153, 152, 145, 137, 133, 129, 132, + 136, 139, 141, 141, 138, 137, 129, 131, 131, 128, 123, 120, 121, 124, 119, 116, + 114, 116, 118, 118, 114, 111, 90, 97, 85, 97, 96, 124, 114, 107, 99, 89, + 91, 94, 86, 81, 83, 79, 70, 60, 50, 40, 33, 25, 25, 28, 32, 33, + 36, 38, 33, 28, 32, 39, 42, 40, 38, 37, 36, 34, 32, 29, 32, 31, + 255, 255, 255, 255, 255, 255, 255, 139, 109, 88, 112, 95, 79, 72, 72, 75, + 71, 59, 51, 58, 52, 54, 58, 55, 44, 39, 39, 50, 52, 57, 58, 54, + 54, 60, 67, 81, 88, 97, 106, 110, 114, 117, 119, 126, 129, 131, 132, 131, + 130, 130, 131, 130, 131, 131, 131, 131, 131, 130, 129, 140, 142, 144, 143, 142, + 142, 145, 148, 159, 158, 157, 151, 148, 145, 144, 145, 146, 147, 148, 147, 143, + 139, 134, 130, 134, 136, 136, 134, 130, 126, 123, 121, 113, 109, 105, 103, 103, + 105, 107, 107, 104, 96, 79, 93, 93, 111, 102, 104, 99, 95, 98, 97, 89, + 86, 88, 81, 80, 68, 56, 44, 33, 22, 19, 20, 32, 35, 37, 40, 37, + 32, 34, 39, 41, 40, 38, 37, 36, 35, 34, 32, 31, 37, 255, 255, 255, + 255, 255, 255, 255, 210, 99, 80, 124, 102, 76, 77, 61, 61, 68, 53, 62, + 59, 51, 49, 50, 45, 36, 35, 38, 50, 58, 65, 65, 60, 60, 68, 77, + 89, 95, 101, 109, 114, 117, 118, 120, 127, 130, 134, 136, 135, 133, 131, 131, + 135, 136, 136, 136, 135, 134, 132, 132, 136, 137, 138, 139, 140, 142, 146, 149, + 160, 157, 153, 147, 144, 146, 151, 156, 159, 158, 156, 153, 147, 139, 133, 129, + 143, 140, 137, 135, 133, 132, 131, 129, 129, 126, 120, 114, 111, 113, 119, 123, + 111, 95, 82, 101, 103, 107, 98, 104, 96, 98, 104, 98, 88, 91, 93, 81, + 79, 68, 58, 47, 37, 26, 22, 24, 30, 30, 32, 37, 36, 32, 30, 32, + 37, 36, 34, 33, 33, 33, 34, 33, 27, 38, 255, 255, 255, 255, 255, 255, + 255, 255, 98, 83, 131, 109, 82, 92, 61, 50, 63, 51, 80, 60, 51, 46, + 45, 40, 33, 38, 44, 48, 62, 72, 75, 74, 78, 86, 92, 96, 101, 106, + 113, 117, 119, 120, 122, 128, 131, 134, 135, 134, 133, 132, 133, 136, 137, 137, + 138, 137, 137, 136, 135, 133, 133, 133, 133, 135, 138, 141, 143, 148, 148, 149, + 147, 146, 146, 149, 152, 155, 155, 155, 153, 149, 145, 139, 137, 146, 139, 131, + 128, 131, 136, 140, 141, 128, 128, 125, 119, 112, 110, 113, 116, 96, 92, 93, + 108, 112, 110, 102, 100, 93, 100, 108, 98, 87, 92, 95, 81, 80, 70, 61, + 51, 41, 29, 24, 26, 29, 28, 30, 35, 37, 33, 29, 28, 30, 30, 29, + 28, 27, 29, 32, 33, 34, 42, 255, 255, 255, 255, 255, 255, 255, 255, 106, + 85, 141, 128, 99, 108, 79, 66, 74, 52, 72, 62, 53, 48, 46, 41, 36, + 44, 54, 56, 68, 80, 85, 88, 96, 102, 103, 100, 105, 111, 115, 116, 118, + 121, 123, 130, 131, 132, 132, 130, 131, 133, 134, 130, 131, 132, 134, 135, 135, + 135, 135, 138, 138, 137, 137, 138, 139, 142, 143, 153, 153, 155, 152, 150, 147, + 146, 147, 149, 149, 150, 151, 149, 148, 145, 144, 143, 138, 131, 130, 133, 137, + 138, 138, 123, 126, 127, 124, 115, 108, 103, 102, 82, 92, 102, 100, 105, 107, + 108, 99, 97, 102, 109, 101, 91, 96, 99, 82, 88, 77, 66, 54, 40, 25, + 18, 18, 32, 32, 34, 39, 41, 36, 32, 32, 28, 28, 27, 26, 25, 28, + 33, 36, 52, 49, 255, 255, 255, 255, 255, 255, 255, 255, 101, 66, 127, 125, + 99, 102, 90, 91, 91, 61, 58, 64, 55, 51, 49, 44, 39, 49, 60, 66, + 80, 92, 96, 98, 106, 109, 106, 106, 110, 114, 118, 118, 119, 121, 123, 130, + 131, 131, 130, 129, 129, 132, 135, 130, 131, 133, 135, 136, 137, 138, 138, 142, + 141, 139, 140, 141, 141, 141, 139, 151, 150, 149, 146, 145, 146, 149, 153, 147, + 147, 148, 149, 147, 147, 145, 144, 137, 137, 137, 138, 138, 135, 130, 126, 128, + 131, 134, 132, 126, 116, 108, 103, 93, 101, 108, 92, 100, 105, 116, 107, 103, + 104, 109, 104, 98, 101, 102, 88, 86, 76, 67, 56, 43, 28, 21, 20, 29, + 30, 32, 36, 36, 32, 30, 32, 31, 31, 30, 28, 26, 30, 37, 42, 59, + 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 102, 112, 100, 95, 94, + 93, 86, 72, 66, 65, 57, 54, 52, 45, 40, 48, 59, 70, 88, 104, 105, + 102, 107, 111, 109, 111, 115, 116, 119, 120, 121, 123, 125, 129, 130, 132, 132, + 131, 130, 132, 133, 133, 134, 135, 137, 138, 138, 138, 138, 140, 139, 139, 140, + 144, 143, 140, 136, 143, 143, 142, 141, 143, 145, 150, 154, 150, 150, 150, 150, + 147, 147, 146, 146, 137, 140, 142, 142, 137, 133, 130, 128, 126, 126, 125, 124, + 121, 116, 109, 104, 108, 101, 105, 93, 109, 107, 120, 113, 111, 100, 103, 105, + 102, 102, 102, 91, 80, 72, 65, 56, 46, 32, 25, 25, 23, 26, 28, 31, + 28, 23, 25, 30, 32, 33, 32, 28, 26, 30, 39, 44, 55, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 123, 101, 117, 119, 107, 99, 81, 64, 74, + 80, 63, 58, 54, 53, 45, 38, 46, 56, 65, 90, 111, 108, 102, 106, 112, + 114, 115, 118, 119, 121, 121, 122, 124, 126, 127, 130, 134, 135, 134, 132, 131, + 131, 131, 132, 133, 133, 134, 131, 133, 133, 140, 140, 140, 144, 147, 146, 141, + 139, 142, 146, 148, 148, 147, 145, 143, 143, 151, 151, 150, 149, 149, 146, 147, + 145, 142, 142, 141, 136, 131, 132, 137, 142, 136, 131, 126, 125, 125, 124, 121, + 118, 109, 89, 94, 95, 121, 108, 115, 109, 113, 98, 97, 103, 102, 100, 98, + 91, 85, 77, 67, 58, 45, 30, 20, 18, 24, 27, 30, 32, 27, 22, 26, + 33, 32, 32, 31, 27, 24, 28, 37, 46, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 229, 116, 101, 98, 94, 87, 79, 76, 73, 70, 73, 58, + 51, 57, 61, 56, 57, 61, 69, 89, 110, 112, 110, 112, 113, 110, 119, 121, + 122, 124, 124, 125, 127, 129, 128, 129, 131, 131, 127, 124, 128, 137, 127, 130, + 133, 134, 135, 133, 137, 139, 135, 138, 139, 140, 140, 140, 142, 145, 138, 140, + 142, 144, 148, 148, 147, 142, 139, 140, 143, 144, 144, 141, 141, 138, 142, 136, + 134, 137, 140, 137, 135, 136, 131, 124, 122, 125, 127, 123, 120, 119, 125, 121, + 119, 120, 119, 116, 117, 121, 113, 112, 109, 103, 95, 91, 91, 94, 82, 80, + 71, 66, 60, 40, 25, 32, 34, 31, 29, 32, 34, 32, 23, 15, 16, 20, + 23, 33, 39, 31, 29, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 207, 113, 106, 96, 85, 77, 74, 74, 73, 65, 58, 60, 65, 61, + 52, 54, 62, 69, 90, 109, 114, 113, 116, 117, 115, 118, 120, 122, 124, 126, + 128, 130, 132, 127, 125, 127, 131, 131, 129, 128, 132, 127, 130, 132, 134, 131, + 132, 133, 135, 135, 136, 138, 138, 138, 138, 141, 142, 141, 140, 142, 143, 147, + 147, 148, 144, 141, 140, 141, 142, 141, 140, 137, 136, 137, 132, 131, 135, 137, + 134, 131, 132, 128, 122, 121, 126, 129, 126, 124, 125, 124, 120, 119, 121, 119, + 116, 116, 119, 117, 112, 107, 104, 100, 97, 93, 90, 83, 80, 70, 66, 62, + 42, 27, 31, 31, 30, 29, 28, 28, 26, 24, 22, 38, 35, 26, 24, 27, + 26, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 117, 108, 96, 83, 75, 77, 77, 75, 66, 66, 74, 77, 63, 44, 45, 58, + 71, 92, 112, 116, 116, 120, 123, 121, 122, 122, 124, 126, 128, 129, 131, 131, + 132, 128, 127, 132, 134, 129, 125, 124, 126, 128, 130, 131, 131, 131, 132, 133, + 137, 137, 137, 137, 140, 140, 141, 141, 144, 142, 142, 143, 147, 148, 148, 147, + 145, 143, 143, 143, 141, 138, 135, 134, 135, 131, 131, 135, 136, 133, 130, 130, + 130, 126, 126, 130, 132, 129, 128, 129, 125, 122, 122, 124, 122, 118, 116, 118, + 119, 113, 105, 104, 103, 101, 94, 87, 86, 82, 70, 66, 63, 43, 26, 28, + 38, 38, 35, 31, 26, 25, 28, 32, 35, 36, 30, 26, 26, 22, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 108, + 96, 91, 93, 89, 82, 65, 65, 75, 79, 64, 40, 43, 61, 76, 96, 115, + 119, 119, 123, 126, 124, 128, 127, 127, 127, 128, 128, 128, 127, 130, 127, 127, + 130, 130, 126, 123, 125, 123, 125, 128, 129, 128, 128, 130, 131, 136, 136, 136, + 137, 141, 142, 141, 140, 145, 144, 145, 146, 150, 151, 150, 147, 147, 147, 145, + 144, 141, 137, 135, 133, 136, 134, 135, 139, 139, 135, 132, 133, 135, 131, 131, + 133, 133, 128, 126, 128, 126, 123, 123, 126, 124, 118, 116, 117, 115, 111, 105, + 104, 102, 99, 92, 86, 90, 84, 72, 69, 65, 42, 23, 22, 34, 31, 25, + 20, 15, 15, 16, 18, 16, 25, 27, 28, 32, 106, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 101, 96, 95, 96, + 84, 69, 66, 62, 68, 74, 63, 42, 48, 66, 83, 102, 120, 123, 121, 125, + 127, 126, 131, 129, 127, 127, 128, 127, 125, 123, 122, 122, 123, 123, 119, 115, + 119, 126, 121, 123, 127, 128, 129, 130, 132, 134, 134, 133, 136, 138, 142, 143, + 143, 141, 144, 144, 147, 149, 151, 151, 148, 146, 149, 148, 146, 144, 141, 137, + 135, 133, 138, 136, 137, 140, 139, 135, 134, 136, 135, 133, 133, 135, 133, 128, + 127, 130, 128, 125, 125, 127, 125, 119, 116, 117, 111, 111, 109, 106, 102, 97, + 94, 92, 93, 87, 74, 70, 64, 39, 19, 18, 40, 33, 26, 23, 25, 27, + 26, 24, 19, 29, 30, 81, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 116, 116, 117, 117, 100, 79, 82, + 70, 70, 73, 58, 37, 42, 60, 89, 108, 125, 127, 125, 129, 131, 130, 133, + 129, 126, 125, 126, 125, 121, 118, 121, 120, 118, 113, 103, 94, 97, 105, 109, + 113, 117, 120, 123, 125, 128, 130, 129, 128, 131, 135, 141, 143, 142, 139, 144, + 143, 144, 146, 148, 148, 147, 143, 146, 145, 143, 141, 139, 136, 135, 134, 137, + 135, 135, 137, 135, 132, 133, 137, 131, 130, 132, 135, 134, 130, 131, 135, 130, + 126, 125, 126, 123, 117, 115, 116, 111, 112, 112, 106, 100, 96, 95, 95, 89, + 86, 77, 71, 61, 35, 16, 18, 41, 34, 27, 28, 35, 42, 44, 43, 34, + 47, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 130, 94, 97, 99, 81, 59, 84, 72, 71, 75, + 58, 34, 41, 64, 93, 112, 129, 132, 131, 135, 139, 137, 141, 135, 128, 124, + 122, 118, 111, 105, 104, 101, 101, 98, 91, 82, 81, 85, 91, 95, 101, 106, + 110, 113, 118, 121, 124, 123, 125, 130, 139, 142, 140, 136, 144, 140, 136, 135, + 137, 140, 143, 144, 141, 139, 138, 136, 134, 133, 132, 132, 136, 134, 133, 134, + 131, 128, 131, 137, 131, 131, 134, 136, 135, 130, 132, 136, 131, 126, 123, 123, + 120, 115, 113, 115, 111, 108, 104, 101, 97, 95, 92, 91, 81, 82, 77, 71, + 59, 33, 17, 24, 28, 22, 16, 16, 23, 33, 42, 47, 51, 128, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 223, 106, 111, 113, 100, 76, 64, 58, 64, 74, 62, 43, 58, + 87, 95, 114, 132, 135, 135, 140, 144, 144, 151, 143, 132, 125, 119, 111, 101, + 93, 73, 70, 75, 83, 88, 88, 87, 88, 74, 78, 85, 90, 95, 100, 106, + 109, 119, 118, 120, 127, 136, 140, 138, 134, 144, 139, 131, 128, 130, 135, 141, + 143, 136, 135, 134, 132, 131, 131, 131, 131, 138, 135, 134, 134, 131, 128, 133, + 140, 135, 134, 136, 137, 133, 128, 128, 133, 130, 125, 121, 120, 117, 112, 111, + 114, 110, 103, 95, 93, 93, 93, 88, 83, 74, 79, 76, 72, 59, 34, 21, + 28, 37, 33, 27, 23, 26, 37, 52, 127, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 96, 114, 122, 110, 88, 67, 66, 59, 55, 50, 39, 55, 93, 105, 121, + 137, 141, 139, 140, 145, 148, 140, 147, 148, 138, 127, 122, 119, 115, 117, 117, + 114, 107, 102, 98, 101, 103, 105, 88, 86, 70, 88, 80, 89, 78, 86, 87, + 91, 95, 101, 108, 114, 118, 109, 120, 124, 120, 121, 130, 132, 126, 129, 127, + 127, 127, 127, 127, 127, 127, 130, 129, 129, 128, 129, 131, 132, 136, 137, 139, + 138, 134, 128, 125, 125, 127, 121, 127, 125, 118, 116, 119, 114, 104, 100, 99, + 93, 87, 85, 85, 83, 78, 71, 77, 78, 73, 54, 27, 21, 37, 41, 35, + 32, 33, 34, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 106, + 105, 102, 98, 73, 81, 68, 57, 61, 51, 56, 85, 113, 127, 141, 145, 144, + 146, 148, 148, 144, 147, 145, 139, 135, 135, 132, 126, 122, 125, 128, 131, 133, + 129, 126, 122, 120, 119, 126, 100, 90, 62, 65, 62, 68, 68, 72, 73, 73, + 72, 71, 71, 97, 108, 113, 111, 114, 125, 129, 126, 126, 126, 126, 125, 126, + 126, 127, 127, 133, 132, 130, 129, 128, 127, 127, 130, 128, 129, 129, 127, 123, + 120, 119, 119, 116, 119, 119, 116, 114, 113, 107, 101, 96, 92, 82, 70, 66, + 69, 69, 67, 70, 71, 75, 69, 46, 26, 29, 41, 28, 26, 29, 35, 38, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 109, 96, 104, 121, + 81, 99, 84, 76, 100, 90, 80, 106, 128, 138, 147, 150, 152, 154, 153, 149, + 147, 144, 139, 135, 137, 139, 136, 130, 130, 125, 120, 118, 122, 125, 127, 127, + 135, 124, 127, 124, 137, 117, 94, 67, 66, 62, 57, 53, 55, 65, 75, 85, + 86, 95, 100, 99, 105, 118, 123, 123, 124, 124, 123, 122, 123, 124, 126, 127, + 131, 130, 129, 128, 126, 125, 124, 126, 132, 131, 128, 126, 123, 119, 114, 110, + 109, 106, 105, 105, 99, 89, 82, 81, 73, 70, 64, 56, 54, 56, 55, 50, + 55, 51, 66, 69, 41, 27, 36, 38, 39, 36, 34, 35, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 95, 108, 133, 172, 163, 107, + 76, 96, 81, 74, 116, 142, 148, 152, 155, 159, 161, 156, 148, 145, 140, 132, + 127, 126, 127, 125, 121, 117, 119, 121, 124, 126, 123, 119, 114, 123, 121, 121, + 113, 114, 115, 128, 136, 105, 95, 82, 69, 63, 68, 79, 89, 86, 93, 95, + 95, 100, 111, 118, 120, 123, 122, 121, 120, 121, 123, 125, 126, 124, 125, 125, + 126, 125, 124, 123, 125, 119, 114, 105, 98, 93, 88, 81, 76, 73, 67, 66, + 70, 66, 56, 54, 60, 56, 63, 67, 70, 71, 69, 60, 51, 40, 34, 63, + 72, 41, 30, 38, 26, 28, 37, 50, 60, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 114, 91, 99, 119, 160, 160, 130, 130, 155, 119, + 88, 122, 153, 156, 157, 159, 164, 165, 158, 148, 142, 137, 130, 123, 118, 116, + 116, 119, 117, 112, 109, 104, 104, 106, 113, 117, 98, 106, 109, 109, 103, 103, + 106, 111, 103, 105, 105, 100, 91, 85, 83, 85, 95, 98, 99, 98, 98, 106, + 113, 116, 119, 119, 118, 118, 118, 119, 121, 122, 119, 120, 121, 122, 121, 119, + 117, 118, 108, 101, 88, 78, 73, 68, 64, 61, 43, 39, 43, 52, 56, 56, + 64, 76, 80, 90, 97, 102, 103, 97, 84, 71, 50, 42, 66, 71, 39, 31, + 39, 26, 38, 43, 47, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 86, 89, 100, 198, 178, 131, 112, 124, 101, 93, 133, 161, + 162, 162, 163, 167, 168, 160, 150, 142, 136, 129, 125, 120, 116, 118, 121, 120, + 110, 100, 89, 85, 84, 88, 89, 103, 103, 103, 121, 125, 129, 109, 96, 91, + 97, 105, 108, 104, 102, 102, 105, 105, 105, 105, 104, 103, 106, 111, 115, 119, + 119, 119, 119, 119, 119, 119, 118, 120, 121, 122, 122, 119, 115, 110, 109, 104, + 99, 89, 80, 76, 74, 74, 74, 69, 70, 75, 82, 86, 92, 102, 113, 116, + 120, 119, 117, 113, 107, 96, 86, 77, 70, 74, 66, 40, 37, 50, 47, 60, + 62, 59, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 84, 87, 93, 126, 128, 108, 97, 110, 110, 111, 130, 165, 167, 168, 167, + 169, 169, 162, 153, 145, 134, 125, 124, 124, 120, 119, 119, 98, 94, 96, 100, + 100, 85, 61, 41, 43, 55, 51, 54, 34, 49, 65, 88, 94, 101, 105, 105, + 99, 97, 99, 103, 108, 108, 106, 107, 107, 109, 111, 115, 119, 120, 121, 121, + 120, 119, 116, 115, 118, 119, 121, 121, 118, 112, 107, 105, 90, 90, 87, 82, + 79, 77, 79, 80, 96, 103, 109, 108, 108, 113, 119, 121, 120, 121, 118, 112, + 106, 103, 96, 88, 88, 87, 79, 64, 51, 53, 67, 77, 56, 77, 150, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 85, + 90, 121, 139, 132, 113, 119, 133, 139, 138, 168, 168, 169, 168, 168, 168, 164, + 156, 148, 132, 120, 120, 123, 120, 114, 112, 93, 70, 47, 41, 52, 62, 58, + 51, 36, 45, 39, 58, 47, 59, 46, 45, 52, 68, 89, 102, 105, 101, 100, + 98, 106, 106, 106, 108, 109, 109, 113, 118, 119, 120, 122, 123, 122, 119, 115, + 113, 113, 115, 118, 119, 118, 113, 108, 107, 95, 100, 101, 101, 97, 96, 96, + 99, 85, 99, 106, 103, 102, 106, 109, 106, 106, 109, 108, 105, 103, 102, 96, + 88, 79, 86, 80, 66, 67, 70, 80, 98, 85, 99, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 81, 72, 102, 174, + 151, 145, 160, 168, 139, 132, 157, 183, 179, 175, 175, 166, 164, 151, 143, 137, + 130, 117, 111, 121, 125, 110, 88, 87, 63, 43, 45, 44, 56, 86, 105, 51, + 93, 89, 52, 130, 71, 84, 53, 43, 29, 56, 107, 105, 84, 96, 102, 104, + 103, 102, 99, 103, 112, 119, 115, 118, 121, 122, 122, 121, 118, 117, 121, 119, + 115, 113, 112, 110, 107, 105, 102, 93, 91, 101, 104, 98, 92, 95, 80, 62, + 47, 56, 74, 84, 87, 87, 86, 84, 89, 101, 106, 99, 85, 76, 87, 86, + 80, 73, 81, 99, 107, 103, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 73, 71, 66, 88, 157, 152, 139, 154, + 165, 153, 139, 158, 182, 178, 174, 174, 163, 158, 143, 148, 140, 136, 130, 124, + 127, 127, 115, 122, 112, 95, 87, 95, 100, 104, 116, 125, 70, 96, 70, 79, + 92, 99, 102, 61, 120, 114, 57, 52, 78, 89, 93, 89, 94, 100, 107, 108, + 107, 103, 102, 119, 121, 123, 125, 125, 123, 121, 119, 117, 119, 118, 114, 106, + 99, 95, 93, 91, 94, 98, 93, 76, 55, 60, 76, 73, 66, 58, 54, 49, + 38, 23, 11, 64, 74, 87, 92, 89, 82, 82, 89, 90, 90, 85, 79, 90, + 107, 116, 112, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 80, 79, 90, 107, 157, 163, 140, 145, 146, 157, 136, + 157, 182, 180, 177, 178, 167, 160, 144, 154, 142, 141, 143, 137, 132, 129, 121, + 120, 116, 119, 114, 93, 85, 94, 101, 108, 86, 92, 78, 99, 55, 84, 74, + 97, 147, 148, 102, 84, 86, 90, 99, 98, 99, 99, 103, 104, 108, 109, 111, + 122, 124, 127, 128, 128, 127, 124, 122, 118, 119, 116, 108, 97, 90, 88, 90, + 81, 75, 70, 67, 61, 58, 70, 84, 39, 66, 83, 71, 52, 42, 44, 48, + 29, 44, 66, 81, 85, 84, 86, 93, 91, 94, 92, 89, 97, 112, 120, 118, + 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 93, 115, 134, 152, 162, 144, 143, 130, 155, 136, 154, 181, 181, + 182, 185, 174, 168, 152, 158, 140, 140, 148, 142, 131, 128, 125, 125, 124, 137, + 134, 100, 84, 89, 87, 94, 103, 70, 77, 81, 81, 110, 131, 140, 139, 134, + 130, 118, 82, 63, 74, 104, 106, 106, 105, 102, 105, 111, 121, 124, 126, 130, + 132, 132, 130, 126, 124, 124, 118, 107, 97, 91, 90, 92, 95, 95, 93, 93, + 93, 88, 76, 72, 74, 93, 84, 71, 74, 99, 119, 101, 69, 32, 29, 35, + 56, 79, 91, 91, 91, 92, 95, 95, 93, 101, 111, 118, 116, 113, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 200, 109, 125, 121, 139, 149, 157, 134, 155, 140, 151, 180, 182, 183, 187, 177, + 170, 154, 160, 139, 138, 147, 142, 131, 130, 131, 139, 121, 127, 140, 131, 126, + 118, 97, 64, 102, 93, 110, 101, 118, 90, 105, 103, 107, 103, 92, 86, 77, + 76, 82, 94, 106, 116, 117, 108, 102, 104, 109, 124, 127, 131, 133, 133, 131, + 127, 124, 124, 112, 98, 92, 94, 95, 93, 89, 98, 111, 121, 115, 95, 79, + 81, 92, 82, 92, 95, 95, 104, 115, 106, 88, 63, 42, 31, 41, 66, 85, + 93, 94, 94, 98, 99, 99, 105, 112, 114, 114, 109, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 112, + 110, 128, 161, 170, 146, 149, 135, 152, 181, 181, 182, 184, 174, 167, 151, 159, + 140, 138, 145, 141, 134, 135, 135, 124, 115, 121, 131, 133, 130, 125, 116, 113, + 125, 121, 85, 86, 98, 79, 87, 72, 71, 74, 77, 85, 95, 107, 113, 106, + 114, 118, 116, 105, 102, 108, 116, 123, 126, 130, 133, 133, 130, 126, 123, 117, + 105, 94, 93, 99, 100, 91, 80, 47, 72, 106, 129, 129, 107, 82, 64, 80, + 78, 79, 94, 118, 124, 97, 61, 57, 51, 54, 65, 79, 88, 94, 98, 98, + 101, 104, 106, 110, 113, 114, 114, 161, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 113, 127, 129, 157, + 159, 150, 138, 123, 151, 180, 180, 180, 184, 174, 168, 153, 152, 138, 137, 142, + 139, 137, 138, 133, 122, 127, 130, 127, 125, 118, 119, 133, 112, 118, 135, 118, + 135, 126, 112, 103, 115, 93, 94, 112, 115, 105, 105, 107, 122, 119, 112, 106, + 101, 106, 116, 124, 120, 123, 128, 131, 131, 128, 123, 120, 114, 102, 92, 91, + 98, 102, 99, 93, 120, 99, 78, 73, 85, 95, 94, 87, 79, 89, 101, 100, + 90, 78, 73, 69, 58, 63, 78, 94, 101, 99, 97, 97, 96, 99, 105, 111, + 113, 114, 114, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 140, 125, 139, 135, 145, 133, + 118, 148, 179, 179, 181, 186, 178, 174, 160, 144, 134, 136, 139, 137, 137, 137, + 126, 129, 128, 115, 111, 125, 120, 115, 128, 129, 125, 115, 124, 129, 126, 130, + 125, 128, 123, 128, 120, 106, 107, 115, 115, 112, 109, 105, 107, 110, 112, 111, + 109, 118, 121, 126, 129, 129, 126, 121, 118, 116, 103, 89, 85, 92, 104, 113, + 117, 113, 111, 109, 110, 111, 107, 95, 83, 81, 70, 62, 62, 68, 70, 75, + 78, 98, 90, 87, 92, 98, 98, 96, 97, 93, 98, 105, 111, 113, 114, 146, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 70, 148, 168, 123, 127, 125, 103, 121, 184, + 187, 181, 193, 172, 158, 163, 151, 145, 141, 137, 131, 124, 128, 135, 134, 128, + 126, 127, 127, 119, 115, 114, 115, 117, 119, 122, 122, 122, 123, 120, 112, 115, + 120, 119, 115, 112, 112, 113, 108, 112, 116, 116, 113, 112, 111, 113, 122, 121, + 121, 125, 128, 127, 122, 117, 113, 102, 92, 92, 96, 100, 105, 111, 105, 110, + 114, 117, 119, 117, 113, 112, 128, 119, 109, 106, 111, 112, 108, 101, 98, 92, + 91, 97, 107, 108, 100, 93, 89, 94, 104, 111, 114, 112, 224, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 211, 166, 194, 179, 152, 137, 109, 103, 165, 179, 178, 187, + 175, 165, 157, 148, 143, 142, 145, 145, 138, 135, 136, 131, 124, 122, 125, 127, + 122, 118, 117, 123, 123, 124, 124, 125, 124, 123, 121, 121, 122, 123, 122, 120, + 117, 116, 115, 112, 114, 116, 115, 113, 112, 109, 109, 122, 121, 121, 124, 127, + 127, 122, 117, 112, 101, 91, 90, 93, 97, 102, 107, 110, 109, 109, 107, 108, + 111, 112, 113, 125, 119, 112, 111, 113, 113, 106, 98, 101, 100, 101, 105, 112, + 110, 105, 98, 95, 96, 104, 111, 112, 158, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 91, 62, 104, 164, 107, 112, 155, 174, 181, 182, 176, 172, 148, + 147, 141, 138, 141, 145, 141, 136, 133, 132, 125, 123, 128, 132, 129, 126, 124, + 128, 128, 126, 125, 124, 123, 123, 123, 125, 121, 119, 117, 116, 115, 112, 110, + 114, 113, 113, 114, 115, 115, 113, 112, 122, 121, 122, 125, 128, 127, 122, 117, + 111, 100, 91, 89, 91, 94, 98, 102, 109, 108, 106, 107, 107, 110, 112, 113, + 114, 113, 112, 111, 112, 110, 106, 100, 107, 106, 108, 112, 114, 109, 104, 101, + 99, 100, 106, 110, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 121, 128, 125, 140, 160, 166, 175, 189, 182, 172, 172, 143, 152, 145, 138, + 134, 135, 135, 135, 136, 131, 124, 121, 127, 132, 133, 128, 125, 129, 127, 125, + 123, 123, 124, 124, 124, 124, 120, 116, 115, 116, 116, 114, 111, 112, 110, 110, + 113, 118, 120, 119, 117, 124, 123, 124, 127, 130, 129, 124, 119, 113, 102, 92, + 90, 92, 93, 96, 100, 102, 105, 109, 112, 114, 114, 114, 113, 107, 110, 112, + 113, 114, 114, 114, 112, 109, 109, 109, 109, 107, 104, 101, 101, 101, 102, 104, + 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 114, + 171, 230, 207, 179, 171, 192, 184, 166, 167, 144, 150, 150, 145, 138, 134, 134, + 138, 141, 132, 125, 122, 127, 131, 131, 127, 126, 128, 127, 127, 126, 126, 127, + 129, 129, 126, 121, 117, 117, 119, 120, 118, 116, 115, 113, 111, 114, 119, 122, + 121, 119, 126, 125, 126, 129, 132, 131, 126, 122, 116, 105, 96, 94, 95, 95, + 98, 101, 97, 100, 105, 110, 113, 114, 116, 116, 115, 119, 120, 119, 119, 120, + 123, 125, 111, 109, 109, 106, 101, 99, 100, 104, 98, 98, 98, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 206, 215, 209, + 175, 162, 186, 182, 164, 164, 145, 138, 144, 147, 142, 138, 136, 137, 136, 135, + 131, 129, 132, 135, 132, 131, 133, 132, 132, 133, 133, 133, 134, 135, 135, 124, + 121, 120, 120, 121, 121, 120, 118, 122, 120, 118, 118, 119, 120, 120, 119, 127, + 126, 126, 130, 133, 132, 127, 122, 119, 108, 99, 98, 99, 99, 100, 103, 102, + 101, 100, 101, 104, 109, 115, 119, 124, 123, 124, 122, 120, 120, 121, 120, 111, + 109, 106, 105, 101, 100, 100, 104, 93, 92, 146, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 184, 167, 161, 159, 178, + 180, 167, 163, 142, 140, 144, 144, 139, 138, 138, 136, 131, 137, 135, 137, 139, + 138, 135, 137, 142, 138, 139, 139, 139, 139, 138, 137, 136, 122, 121, 123, 122, + 122, 119, 118, 118, 122, 122, 123, 121, 120, 119, 121, 123, 126, 125, 125, 128, + 131, 131, 126, 121, 120, 109, 101, 100, 101, 101, 102, 105, 107, 105, 102, 101, + 101, 106, 111, 114, 120, 119, 120, 119, 119, 117, 115, 111, 107, 105, 104, 103, + 104, 102, 98, 99, 91, 86, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 233, 154, 127, 151, 160, 173, 178, 171, 164, + 137, 158, 155, 146, 136, 137, 142, 140, 133, 128, 129, 132, 134, 131, 128, 133, + 140, 141, 140, 142, 141, 141, 137, 136, 134, 128, 131, 134, 133, 128, 123, 124, + 122, 121, 123, 125, 123, 120, 121, 125, 129, 124, 123, 123, 127, 130, 129, 124, + 119, 119, 109, 101, 100, 102, 102, 103, 106, 109, 108, 111, 110, 111, 110, 109, + 109, 117, 119, 120, 122, 124, 122, 118, 110, 100, 99, 101, 105, 107, 102, 97, + 93, 88, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 149, 128, 135, 149, 181, 171, 176, 154, 140, 145, 144, + 141, 136, 133, 131, 132, 134, 135, 130, 130, 135, 135, 130, 132, 135, 140, 139, + 141, 138, 139, 136, 137, 134, 129, 129, 131, 131, 126, 118, 119, 121, 125, 120, + 121, 127, 129, 125, 123, 125, 125, 126, 126, 127, 130, 134, 130, 123, 110, 106, + 104, 104, 102, 100, 105, 112, 111, 112, 117, 116, 116, 116, 119, 121, 119, 121, + 121, 121, 121, 120, 120, 118, 111, 112, 103, 98, 107, 104, 95, 92, 82, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 216, 130, 129, 140, 165, 169, 172, 161, 151, 150, 146, 140, 136, 137, + 135, 133, 130, 132, 128, 128, 132, 132, 128, 128, 132, 136, 134, 131, 128, 126, + 125, 126, 126, 123, 121, 121, 120, 113, 107, 107, 112, 115, 112, 113, 120, 123, + 121, 119, 121, 121, 122, 122, 122, 126, 129, 125, 118, 113, 108, 104, 102, 98, + 95, 98, 104, 110, 113, 117, 120, 122, 121, 121, 120, 122, 122, 122, 122, 122, + 121, 121, 119, 111, 111, 110, 112, 112, 98, 98, 117, 126, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 125, 125, 146, 164, 181, 169, 159, 149, 151, 143, 136, 134, 138, 137, 131, 124, + 128, 126, 126, 128, 128, 126, 126, 128, 131, 131, 129, 127, 124, 121, 118, 116, + 113, 110, 107, 105, 101, 97, 101, 109, 112, 110, 113, 119, 123, 123, 122, 124, + 119, 120, 119, 119, 122, 126, 123, 116, 113, 107, 103, 100, 95, 90, 93, 98, + 103, 106, 112, 119, 125, 126, 124, 122, 124, 124, 124, 124, 124, 123, 122, 119, + 113, 110, 108, 112, 108, 97, 117, 161, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 160, + 164, 184, 160, 154, 148, 142, 137, 132, 130, 133, 132, 127, 123, 125, 124, 124, + 125, 125, 124, 124, 125, 124, 126, 129, 129, 125, 118, 110, 105, 108, 105, 102, + 101, 99, 99, 108, 118, 115, 114, 116, 121, 125, 126, 125, 125, 120, 121, 120, + 119, 122, 126, 123, 116, 111, 106, 101, 99, 94, 90, 93, 99, 92, 95, 102, + 112, 121, 127, 127, 126, 124, 125, 125, 125, 125, 123, 122, 121, 119, 114, 105, + 101, 103, 104, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 170, 156, 171, 149, + 150, 152, 135, 134, 132, 129, 128, 126, 126, 127, 123, 124, 124, 123, 123, 124, + 124, 123, 120, 120, 120, 119, 116, 111, 106, 103, 112, 109, 106, 105, 103, 104, + 113, 124, 117, 118, 119, 121, 123, 125, 124, 121, 121, 122, 120, 118, 121, 125, + 122, 116, 114, 108, 104, 100, 95, 91, 93, 98, 88, 90, 96, 104, 112, 119, + 123, 124, 123, 124, 125, 125, 124, 122, 120, 119, 115, 117, 108, 98, 101, 99, + 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 161, 169, 155, 140, 137, 135, + 135, 133, 128, 126, 124, 127, 130, 120, 122, 122, 120, 120, 122, 122, 120, 125, + 121, 115, 110, 108, 110, 113, 116, 119, 115, 112, 110, 107, 106, 112, 121, 122, + 124, 125, 124, 126, 129, 126, 121, 122, 122, 120, 117, 120, 124, 122, 116, 120, + 114, 108, 103, 96, 90, 91, 96, 91, 94, 99, 102, 105, 109, 114, 117, 121, + 122, 123, 124, 123, 120, 117, 115, 108, 118, 116, 108, 103, 79, 118, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 228, 157, 161, 165, 137, 128, 140, 136, 129, 124, + 123, 123, 124, 124, 116, 120, 120, 116, 116, 120, 120, 116, 121, 118, 113, 110, + 110, 114, 118, 122, 119, 117, 115, 114, 110, 107, 111, 118, 124, 127, 128, 126, + 127, 131, 129, 123, 126, 125, 122, 120, 123, 127, 125, 119, 121, 115, 109, 104, + 97, 91, 92, 97, 92, 99, 106, 108, 106, 105, 109, 114, 119, 120, 121, 122, + 121, 118, 114, 112, 107, 114, 115, 110, 96, 60, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 134, 135, 165, 146, 143, 145, 135, 123, 118, 120, 121, 119, + 116, 113, 118, 118, 113, 113, 118, 118, 113, 106, 108, 111, 113, 114, 115, 114, + 113, 116, 115, 116, 117, 113, 110, 113, 120, 117, 122, 122, 120, 123, 127, 125, + 119, 131, 130, 127, 124, 127, 131, 129, 123, 117, 111, 107, 103, 98, 93, 95, + 101, 89, 100, 111, 114, 109, 106, 110, 115, 117, 118, 120, 121, 119, 116, 112, + 110, 114, 111, 106, 102, 86, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 214, 146, 122, 147, 146, 142, 140, 133, 126, 126, 126, 122, 116, 114, 116, + 119, 118, 115, 111, 109, 109, 104, 107, 111, 113, 113, 113, 114, 115, 109, 111, + 113, 114, 114, 113, 111, 110, 116, 119, 122, 124, 124, 123, 124, 124, 118, 119, + 122, 127, 131, 132, 129, 127, 118, 117, 112, 102, 92, 90, 97, 105, 95, 102, + 111, 116, 115, 111, 107, 106, 111, 113, 116, 117, 116, 114, 111, 110, 105, 108, + 104, 104, 123, 149, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, + 147, 142, 149, 141, 139, 133, 126, 126, 127, 123, 118, 119, 120, 120, 118, 114, + 110, 108, 108, 104, 106, 107, 107, 105, 105, 106, 107, 113, 114, 116, 117, 117, + 117, 115, 115, 122, 123, 124, 123, 121, 122, 126, 130, 119, 124, 131, 138, 141, + 137, 129, 123, 112, 114, 113, 107, 100, 97, 98, 101, 98, 104, 112, 115, 113, + 109, 106, 104, 108, 109, 112, 114, 115, 114, 110, 108, 112, 107, 110, 131, 153, + 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 141, 149, + 140, 139, 133, 126, 125, 127, 125, 120, 125, 125, 122, 118, 112, 108, 107, 107, + 115, 115, 115, 112, 109, 108, 109, 110, 107, 108, 108, 109, 109, 110, 110, 110, + 107, 112, 116, 117, 114, 114, 119, 123, 131, 135, 141, 146, 148, 144, 136, 130, + 118, 116, 112, 107, 104, 101, 100, 100, 103, 107, 113, 115, 114, 110, 107, 106, + 104, 104, 106, 110, 114, 113, 108, 105, 108, 101, 115, 155, 176, 170, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 142, 139, 139, 134, + 126, 125, 127, 126, 123, 131, 129, 125, 118, 112, 108, 107, 108, 109, 110, 110, + 108, 105, 103, 104, 105, 111, 111, 111, 111, 112, 114, 115, 116, 112, 113, 112, + 108, 104, 107, 118, 127, 128, 127, 127, 128, 130, 130, 129, 127, 127, 118, 107, + 100, 98, 100, 102, 103, 106, 108, 112, 114, 114, 113, 111, 110, 100, 100, 102, + 107, 112, 112, 106, 103, 106, 110, 131, 165, 176, 167, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 140, 140, 135, 126, 124, 126, + 127, 125, 132, 130, 126, 119, 113, 110, 110, 111, 109, 110, 111, 109, 107, 105, + 105, 106, 103, 103, 103, 104, 106, 108, 109, 110, 120, 116, 106, 95, 88, 90, + 101, 111, 121, 120, 119, 120, 122, 123, 123, 122, 117, 109, 99, 94, 95, 98, + 100, 99, 102, 103, 105, 108, 111, 112, 111, 111, 99, 100, 103, 108, 111, 109, + 104, 102, 119, 141, 165, 177, 178, 177, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 214, 141, 141, 136, 127, 123, 125, 126, 126, 130, + 129, 126, 120, 115, 113, 114, 115, 110, 109, 106, 101, 97, 96, 98, 100, 108, + 109, 110, 112, 114, 116, 117, 118, 112, 115, 118, 117, 109, 99, 89, 84, 106, + 107, 110, 114, 116, 115, 110, 106, 97, 95, 95, 97, 100, 100, 96, 93, 98, + 97, 97, 100, 104, 107, 108, 107, 101, 104, 109, 112, 111, 107, 102, 101, 105, + 142, 166, 167, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 143, 138, 127, 122, 123, 126, 126, 126, 126, 125, 122, + 118, 117, 118, 120, 104, 97, 86, 74, 67, 66, 71, 75, 72, 73, 76, 79, + 81, 82, 83, 83, 105, 111, 120, 128, 131, 124, 113, 103, 98, 98, 100, 102, + 103, 102, 97, 93, 95, 97, 99, 102, 103, 101, 97, 93, 99, 96, 95, 96, + 101, 104, 105, 105, 104, 110, 116, 117, 111, 104, 100, 102, 119, 150, 170, 169, + 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 218, 139, 127, 122, 122, 125, 125, 123, 124, 124, 122, 120, 120, 121, + 123, 120, 109, 91, 73, 62, 62, 69, 76, 75, 78, 83, 87, 90, 90, 90, + 89, 89, 81, 74, 77, 90, 109, 125, 133, 130, 126, 121, 119, 119, 120, 120, + 120, 110, 109, 107, 106, 103, 101, 101, 100, 104, 101, 98, 97, 101, 105, 105, + 103, 106, 114, 121, 120, 112, 104, 101, 105, 70, 89, 99, 93, 85, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 216, 137, 134, 130, 124, 121, 125, 126, 126, 127, 125, 123, 121, 119, 122, 117, + 107, 94, 80, 67, 57, 52, 81, 78, 87, 83, 87, 87, 80, 100, 94, 102, + 99, 92, 95, 91, 84, 81, 82, 89, 82, 83, 74, 64, 77, 75, 78, 80, + 83, 87, 88, 87, 87, 86, 70, 76, 84, 88, 93, 97, 105, 108, 106, 122, + 132, 116, 102, 109, 101, 73, 29, 34, 36, 37, 37, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 131, + 125, 123, 123, 124, 124, 123, 123, 122, 121, 120, 119, 117, 120, 119, 109, 92, + 73, 60, 54, 44, 70, 94, 78, 78, 91, 87, 95, 92, 101, 100, 99, 107, + 107, 101, 100, 89, 92, 86, 90, 88, 81, 92, 87, 91, 86, 81, 74, 72, + 71, 74, 73, 71, 77, 88, 95, 100, 103, 106, 109, 125, 119, 117, 117, 124, + 123, 83, 26, 34, 32, 27, 24, 26, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 123, 122, 125, + 128, 127, 127, 126, 125, 125, 125, 124, 117, 123, 126, 118, 101, 84, 72, 68, + 53, 75, 96, 84, 89, 98, 83, 82, 87, 95, 92, 88, 95, 94, 87, 86, + 92, 96, 87, 94, 96, 90, 97, 90, 94, 93, 95, 92, 91, 87, 83, 80, + 82, 88, 99, 107, 111, 111, 112, 112, 120, 121, 122, 107, 98, 118, 149, 164, + 136, 132, 123, 119, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 124, 124, 127, 128, 129, + 130, 130, 129, 127, 126, 122, 123, 121, 115, 105, 95, 88, 84, 72, 57, 65, + 83, 116, 125, 105, 110, 110, 116, 109, 103, 110, 107, 100, 97, 77, 83, 77, + 82, 81, 72, 79, 73, 86, 85, 86, 85, 86, 85, 85, 83, 100, 103, 111, + 116, 119, 116, 114, 112, 121, 108, 103, 104, 112, 139, 171, 187, 169, 169, 166, + 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 126, 122, 119, 122, 126, 129, 129, 127, + 123, 120, 127, 122, 117, 114, 112, 106, 95, 87, 95, 67, 62, 74, 111, 122, + 105, 113, 127, 133, 128, 125, 137, 139, 134, 133, 110, 124, 124, 127, 118, 106, + 117, 115, 105, 93, 77, 63, 61, 70, 84, 95, 110, 110, 113, 116, 118, 118, + 117, 115, 121, 103, 102, 121, 143, 162, 166, 154, 174, 175, 177, 177, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 121, 117, 121, 125, 128, 129, 127, 123, 121, 127, + 122, 118, 120, 123, 115, 97, 83, 103, 99, 91, 71, 78, 92, 81, 87, 131, + 136, 131, 130, 145, 148, 146, 143, 118, 135, 139, 142, 130, 116, 129, 129, 107, + 96, 83, 73, 72, 83, 97, 106, 108, 107, 107, 108, 112, 114, 115, 114, 104, + 113, 134, 146, 146, 160, 182, 192, 171, 171, 172, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 210, 122, 123, 125, 126, 126, 126, 125, 126, 122, 120, 123, + 126, 120, 106, 95, 84, 97, 103, 83, 79, 84, 79, 98, 130, 134, 128, 125, + 140, 144, 140, 139, 126, 143, 143, 146, 137, 122, 130, 127, 78, 77, 77, 78, + 83, 91, 98, 103, 105, 102, 102, 104, 108, 110, 111, 111, 113, 128, 153, 166, + 163, 169, 170, 159, 175, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 118, 117, 117, 118, 120, 123, 125, 126, 122, 119, 119, 122, 122, 119, + 117, 102, 100, 109, 108, 99, 79, 69, 98, 106, 110, 103, 104, 119, 127, 123, + 125, 120, 131, 126, 129, 121, 105, 108, 101, 85, 82, 79, 79, 85, 95, 107, + 113, 108, 104, 104, 106, 108, 109, 107, 106, 135, 157, 181, 177, 161, 165, 179, + 177, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 114, 115, 119, 122, 121, 118, 119, 121, 123, 124, 123, 121, 119, 119, 109, 104, + 102, 109, 105, 90, 82, 83, 89, 82, 98, 101, 115, 93, 97, 98, 83, 83, + 82, 81, 80, 80, 80, 80, 89, 80, 74, 78, 90, 103, 107, 107, 109, 106, + 100, 97, 103, 113, 116, 112, 166, 169, 170, 166, 155, 150, 155, 160, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 117, 122, + 125, 125, 123, 117, 118, 120, 121, 121, 121, 120, 121, 120, 103, 91, 97, 104, + 98, 89, 88, 85, 78, 84, 87, 94, 80, 86, 90, 90, 87, 83, 79, 78, + 80, 83, 85, 84, 82, 83, 90, 100, 106, 106, 103, 97, 110, 112, 104, 104, + 114, 120, 118, 109, 100, 87, 69, 52, 36, 33, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 126, 127, 126, + 120, 120, 121, 121, 122, 123, 123, 125, 129, 110, 94, 93, 97, 98, 97, 101, + 97, 90, 81, 88, 81, 78, 79, 88, 85, 86, 85, 84, 85, 87, 88, 89, + 81, 86, 93, 103, 109, 109, 102, 100, 114, 115, 106, 98, 103, 113, 109, 92, + 32, 27, 28, 33, 36, 37, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 126, 127, 127, 126, 125, + 125, 125, 125, 126, 128, 126, 119, 113, 102, 94, 88, 97, 110, 119, 116, 101, + 110, 94, 99, 91, 100, 97, 98, 99, 99, 97, 93, 87, 85, 85, 92, 101, + 108, 111, 108, 102, 102, 101, 102, 103, 102, 93, 72, 44, 24, 36, 36, 43, + 53, 54, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 212, 129, 132, 131, 129, 127, 125, 124, + 124, 124, 123, 122, 119, 110, 98, 90, 91, 98, 113, 117, 108, 122, 111, 117, + 108, 114, 121, 120, 115, 108, 98, 92, 84, 81, 94, 98, 104, 107, 104, 103, + 103, 106, 116, 114, 111, 96, 60, 30, 44, 78, 102, 110, 124, 179, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 214, 131, 130, 129, 126, 124, 122, 120, 119, 124, + 116, 110, 109, 109, 103, 91, 81, 83, 89, 93, 104, 102, 108, 103, 107, 117, + 111, 103, 95, 89, 90, 92, 94, 103, 104, 105, 105, 102, 103, 104, 107, 106, + 94, 81, 70, 51, 53, 99, 156, 186, 182, 207, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 213, 129, 128, 128, 126, 123, 120, 119, 123, 114, 109, 110, + 115, 112, 100, 86, 82, 82, 89, 87, 94, 90, 93, 92, 97, 96, 92, 92, + 93, 99, 104, 108, 107, 108, 106, 107, 107, 106, 102, 104, 110, 121, 136, 151, + 161, 167, 177, 187, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 213, 130, 130, 129, 126, 123, 121, 116, 117, 117, 117, 115, 114, 111, + 107, 111, 104, 108, 90, 98, 84, 92, 86, 95, 97, 102, 106, 108, 110, 108, + 108, 106, 107, 109, 112, 113, 110, 103, 101, 129, 158, 177, 177, 174, 181, 182, + 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 212, 126, 126, 125, 123, 121, 122, 121, 120, 120, 119, 118, 119, 119, 113, 112, + 113, 113, 112, 113, 113, 113, 111, 112, 115, 113, 109, 106, 106, 108, 108, 108, + 112, 117, 115, 110, 112, 125, 175, 172, 176, 184, 186, 178, 203, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 128, + 127, 127, 127, 125, 124, 125, 123, 123, 123, 125, 126, 120, 119, 118, 116, 114, + 112, 111, 111, 114, 114, 116, 113, 109, 106, 105, 107, 110, 112, 114, 111, 101, + 99, 122, 152, 152, 166, 181, 189, 185, 178, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 130, 131, 132, + 127, 126, 124, 123, 122, 124, 128, 129, 128, 127, 125, 122, 120, 118, 118, 118, + 119, 119, 118, 115, 111, 108, 108, 110, 118, 113, 112, 113, 115, 122, 141, 162, + 175, 186, 191, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 132, 129, 127, 124, + 122, 122, 123, 127, 129, 130, 129, 128, 126, 125, 124, 125, 123, 121, 119, 117, + 113, 110, 111, 113, 115, 114, 116, 112, 108, 122, 145, 160, 166, 172, 176, 202, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 130, 126, 124, 122, 123, 123, + 125, 126, 130, 129, 127, 125, 125, 124, 123, 123, 120, 116, 114, 112, 111, 113, + 115, 118, 111, 119, 115, 107, 123, 153, 163, 154, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 212, 126, 125, 126, 126, 127, 127, 138, + 136, 134, 131, 129, 127, 126, 125, 119, 117, 114, 114, 115, 116, 116, 117, 116, + 112, 110, 126, 156, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 123, 125, 128, 128, 128, 127, 139, 138, 135, 133, + 132, 130, 129, 128, 123, 119, 115, 116, 117, 118, 116, 115, 125, 110, 116, 152, + 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 126, 127, 127, 126, 128, 128, 127, 127, 127, 127, 127, + 127, 128, 122, 119, 119, 121, 119, 116, 114, 123, 115, 136, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 124, 128, 132, 131, 126, 124, 128, 130, 117, 117, + 117, 115, 115, 117, 119, 117, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255 }; +/* Define image 'enemy5' of size 140x152x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy5[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, + 52, 43, 230, 55, 63, 107, 69, 71, 63, 61, 88, 72, 241, 109, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 187, 71, 55, 61, 55, 60, 67, 65, 78, 66, 61, 47, 63, 71, 145, 48, + 60, 88, 82, 122, 74, 59, 103, 118, 153, 66, 138, 232, 222, 246, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 98, 123, 110, 92, 65, 82, + 63, 54, 91, 63, 68, 56, 77, 81, 70, 71, 87, 82, 68, 64, 130, 65, + 129, 148, 131, 93, 94, 130, 137, 172, 155, 207, 200, 224, 230, 220, 226, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 188, 61, 30, 137, 170, 119, 77, 76, 52, 44, 94, 102, 49, 66, + 58, 73, 112, 76, 47, 113, 129, 132, 112, 62, 194, 129, 152, 147, 178, 161, + 131, 100, 90, 163, 220, 221, 227, 226, 229, 230, 240, 252, 205, 195, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 89, 75, 47, + 157, 137, 147, 111, 89, 98, 120, 108, 72, 73, 146, 103, 85, 98, 153, 151, + 178, 234, 155, 171, 171, 145, 177, 156, 161, 197, 162, 187, 202, 168, 149, 153, + 164, 166, 201, 174, 201, 228, 217, 210, 197, 163, 158, 116, 92, 138, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 165, 143, 142, 165, 171, 159, 195, 193, 139, + 199, 188, 130, 128, 157, 156, 194, 160, 227, 201, 196, 193, 176, 178, 171, 194, + 145, 140, 192, 158, 147, 207, 187, 143, 137, 153, 180, 172, 135, 178, 184, 194, + 195, 216, 200, 178, 183, 183, 183, 124, 75, 90, 79, 140, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 177, 146, 175, 203, 171, 126, 167, 166, 205, 208, 144, 139, 142, 122, + 207, 231, 172, 184, 225, 152, 152, 177, 165, 150, 209, 129, 198, 166, 178, 191, + 199, 166, 159, 178, 136, 144, 167, 154, 122, 190, 186, 198, 161, 158, 165, 169, + 153, 119, 110, 109, 120, 119, 65, 65, 97, 96, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 115, 180, 154, + 182, 226, 212, 219, 186, 181, 180, 175, 187, 164, 158, 164, 179, 162, 210, 200, + 175, 164, 206, 155, 171, 174, 155, 194, 213, 214, 192, 204, 174, 160, 124, 140, + 128, 120, 143, 134, 123, 142, 128, 151, 167, 176, 159, 153, 142, 115, 125, 106, + 130, 114, 92, 81, 79, 76, 39, 112, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 225, 124, 192, 93, 127, 173, 240, 233, 211, + 189, 179, 216, 170, 180, 156, 194, 190, 168, 175, 212, 222, 148, 185, 119, 146, + 203, 156, 203, 218, 182, 152, 174, 197, 187, 158, 183, 148, 124, 196, 137, 94, + 129, 120, 92, 149, 172, 128, 94, 160, 93, 96, 148, 127, 93, 214, 77, 73, + 89, 78, 79, 88, 102, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 129, 137, 206, 180, 114, 222, 203, 243, 221, 220, 207, 242, 187, 177, + 188, 194, 216, 205, 165, 199, 243, 172, 198, 167, 169, 132, 152, 226, 197, 162, + 180, 136, 168, 182, 153, 189, 216, 190, 148, 176, 138, 106, 102, 80, 112, 142, + 130, 116, 104, 101, 95, 122, 96, 108, 125, 143, 107, 139, 74, 72, 66, 63, + 85, 67, 100, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 104, 106, 138, + 139, 216, 226, 214, 244, 210, 245, 212, 222, 209, 190, 181, 208, 228, 210, 223, + 221, 231, 184, 194, 180, 179, 89, 203, 220, 153, 161, 157, 149, 129, 136, 150, + 151, 100, 117, 179, 181, 136, 112, 123, 111, 112, 117, 104, 108, 98, 95, 69, + 80, 90, 66, 136, 79, 104, 139, 107, 62, 79, 73, 78, 75, 85, 83, 81, + 70, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 136, 105, 147, 175, 198, 165, 176, 181, 198, + 223, 223, 244, 235, 192, 185, 206, 232, 224, 232, 218, 203, 195, 219, 211, 241, + 139, 150, 254, 188, 168, 196, 158, 156, 141, 186, 118, 157, 143, 137, 174, 130, + 164, 132, 92, 125, 119, 135, 103, 90, 107, 108, 103, 71, 55, 57, 69, 142, + 97, 79, 114, 107, 88, 63, 108, 76, 80, 60, 93, 45, 95, 89, 77, 128, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 152, 128, 118, 89, 121, 164, 238, 188, 219, 215, 239, 205, 237, 254, 217, + 212, 214, 217, 209, 238, 235, 194, 169, 224, 220, 169, 213, 157, 201, 208, 185, + 209, 190, 209, 201, 220, 152, 181, 153, 172, 144, 128, 136, 121, 197, 122, 140, + 144, 118, 103, 118, 103, 127, 109, 64, 49, 71, 67, 104, 99, 51, 100, 101, + 91, 85, 81, 76, 66, 95, 82, 81, 87, 101, 68, 91, 43, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 230, 198, 120, 74, + 176, 125, 215, 229, 181, 186, 206, 214, 217, 231, 241, 195, 240, 212, 227, 217, + 204, 205, 234, 234, 249, 201, 176, 168, 214, 243, 137, 180, 176, 237, 223, 181, + 169, 196, 159, 200, 142, 177, 114, 114, 145, 151, 153, 180, 141, 186, 67, 112, + 111, 109, 66, 58, 60, 56, 55, 79, 64, 95, 103, 61, 88, 103, 89, 84, + 92, 87, 108, 66, 107, 79, 75, 76, 85, 80, 127, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 116, 168, 183, 199, 98, 80, 163, 216, 160, + 251, 152, 220, 176, 207, 239, 193, 222, 195, 207, 213, 216, 231, 240, 219, 219, + 243, 231, 238, 244, 225, 176, 210, 202, 216, 205, 220, 198, 140, 137, 115, 125, + 130, 151, 98, 109, 91, 135, 130, 156, 179, 137, 78, 83, 98, 84, 62, 64, + 71, 34, 55, 71, 82, 123, 74, 90, 104, 88, 140, 94, 81, 87, 69, 67, + 76, 64, 61, 61, 112, 110, 96, 138, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 238, 121, 172, 148, 91, 133, 160, 174, 206, 220, 146, 160, 190, 210, + 208, 212, 223, 197, 182, 215, 194, 217, 192, 197, 184, 218, 209, 198, 223, 221, + 206, 248, 247, 172, 227, 150, 221, 178, 214, 151, 207, 86, 98, 168, 143, 119, + 143, 94, 192, 176, 102, 132, 113, 83, 58, 87, 129, 62, 76, 56, 63, 69, + 54, 60, 73, 101, 78, 125, 80, 95, 90, 81, 82, 71, 91, 51, 60, 36, + 68, 52, 39, 60, 65, 49, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 173, 138, 136, + 167, 144, 94, 205, 153, 171, 217, 203, 197, 174, 210, 203, 220, 185, 196, 215, + 195, 189, 201, 199, 214, 184, 186, 208, 208, 184, 228, 225, 216, 209, 183, 205, + 143, 185, 127, 239, 115, 135, 172, 82, 139, 133, 130, 173, 145, 158, 158, 134, + 114, 91, 92, 64, 72, 67, 82, 68, 76, 62, 62, 59, 52, 63, 80, 86, + 93, 107, 110, 99, 74, 77, 91, 84, 78, 71, 51, 46, 74, 56, 46, 60, + 57, 59, 62, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 193, 151, 182, 90, 151, 174, 209, 217, 201, + 213, 181, 215, 196, 207, 193, 203, 206, 193, 213, 235, 192, 182, 213, 180, 190, + 185, 218, 147, 181, 168, 194, 170, 165, 189, 150, 151, 166, 147, 230, 137, 219, + 210, 96, 214, 101, 95, 183, 192, 173, 148, 117, 160, 107, 77, 90, 54, 61, + 62, 69, 68, 73, 67, 67, 63, 56, 48, 54, 63, 60, 62, 68, 68, 58, + 43, 58, 80, 74, 70, 80, 82, 60, 66, 44, 54, 55, 54, 83, 65, 86, + 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 193, 111, 197, 172, 165, 170, 210, 231, 232, 196, 211, 148, 230, 210, + 180, 175, 204, 216, 177, 188, 190, 159, 198, 249, 187, 195, 170, 237, 203, 243, + 169, 173, 172, 186, 148, 131, 135, 119, 136, 154, 131, 217, 192, 147, 189, 109, + 51, 180, 156, 165, 110, 144, 158, 77, 89, 57, 54, 57, 51, 66, 53, 72, + 57, 69, 61, 71, 61, 65, 68, 60, 58, 60, 56, 57, 45, 58, 78, 71, + 60, 63, 69, 60, 48, 35, 63, 57, 57, 96, 69, 78, 71, 70, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 107, 76, + 224, 178, 219, 255, 156, 229, 237, 199, 221, 166, 203, 188, 190, 200, 189, 190, + 218, 226, 180, 159, 171, 201, 186, 171, 217, 175, 196, 167, 196, 116, 168, 147, + 87, 85, 110, 101, 138, 108, 173, 185, 198, 173, 153, 158, 150, 160, 175, 114, + 131, 153, 165, 85, 56, 67, 48, 50, 47, 56, 50, 62, 56, 65, 62, 63, + 57, 62, 65, 59, 60, 63, 57, 48, 46, 57, 77, 90, 91, 84, 73, 67, + 49, 53, 76, 78, 80, 95, 92, 75, 74, 70, 62, 138, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 198, 69, 190, 208, 161, 234, 241, 225, + 225, 196, 193, 229, 198, 179, 169, 163, 183, 202, 187, 210, 178, 170, 179, 223, + 198, 204, 242, 201, 196, 178, 143, 173, 131, 116, 130, 138, 132, 67, 88, 82, + 90, 74, 141, 169, 149, 131, 108, 125, 92, 129, 61, 70, 123, 152, 119, 84, + 39, 54, 38, 46, 47, 44, 52, 48, 58, 57, 61, 52, 49, 55, 58, 54, + 59, 64, 58, 45, 59, 66, 72, 91, 106, 100, 86, 69, 57, 68, 66, 81, + 83, 65, 103, 82, 77, 58, 65, 67, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 223, 114, 119, 103, 132, 218, 165, 193, 187, 233, 183, 198, 202, 212, 221, + 156, 174, 171, 182, 177, 175, 193, 204, 211, 236, 179, 177, 202, 242, 231, 220, + 176, 150, 197, 156, 131, 140, 117, 133, 105, 64, 74, 85, 88, 68, 169, 131, + 135, 135, 90, 193, 97, 117, 88, 49, 71, 120, 51, 65, 59, 40, 47, 41, + 46, 37, 51, 39, 56, 49, 57, 54, 51, 55, 55, 51, 57, 63, 56, 56, + 79, 80, 67, 72, 82, 85, 87, 79, 74, 74, 60, 75, 73, 53, 94, 62, + 66, 61, 84, 77, 93, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 72, 92, 197, + 166, 239, 209, 255, 209, 227, 241, 209, 193, 232, 183, 185, 191, 200, 167, 192, + 208, 174, 189, 209, 135, 187, 218, 229, 193, 206, 210, 166, 157, 137, 122, 105, + 115, 191, 82, 141, 69, 86, 78, 87, 92, 64, 157, 99, 92, 101, 103, 88, + 80, 37, 39, 35, 60, 46, 40, 58, 36, 73, 40, 39, 39, 38, 41, 41, + 45, 46, 48, 46, 43, 46, 44, 39, 48, 56, 48, 43, 60, 62, 63, 74, + 76, 79, 98, 94, 102, 86, 95, 97, 82, 89, 87, 65, 59, 55, 55, 50, + 64, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 73, 68, 81, 112, 160, 157, 246, 249, 238, + 211, 205, 241, 185, 180, 180, 210, 201, 212, 176, 163, 189, 174, 128, 204, 183, + 165, 207, 172, 181, 173, 177, 156, 121, 146, 126, 120, 141, 108, 179, 74, 111, + 84, 88, 79, 78, 76, 104, 87, 73, 99, 79, 54, 59, 55, 42, 47, 53, + 28, 47, 44, 31, 44, 44, 38, 38, 33, 42, 31, 45, 34, 44, 40, 48, + 46, 49, 48, 45, 57, 67, 61, 48, 49, 48, 69, 92, 79, 67, 85, 82, + 97, 74, 116, 105, 76, 112, 60, 86, 66, 70, 57, 70, 65, 73, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 48, 56, 52, 86, 95, 176, 214, 225, 238, 204, 212, 186, 178, 219, + 178, 164, 176, 178, 188, 183, 177, 160, 146, 178, 161, 184, 153, 184, 125, 137, + 224, 140, 175, 164, 112, 83, 99, 101, 100, 105, 81, 92, 71, 88, 84, 74, + 83, 72, 71, 73, 64, 55, 52, 50, 46, 42, 40, 32, 39, 39, 32, 32, + 39, 41, 36, 38, 43, 33, 45, 32, 46, 38, 44, 48, 49, 49, 47, 43, + 40, 39, 39, 36, 68, 67, 64, 61, 56, 70, 73, 83, 71, 75, 103, 111, + 78, 60, 77, 109, 97, 77, 62, 75, 58, 59, 101, 132, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 62, 51, + 104, 51, 174, 183, 152, 223, 206, 225, 199, 163, 166, 187, 173, 187, 199, 151, + 233, 184, 164, 201, 192, 110, 158, 136, 172, 123, 183, 162, 150, 184, 155, 207, + 148, 100, 92, 47, 73, 137, 68, 93, 71, 77, 54, 71, 94, 56, 70, 55, + 53, 50, 46, 41, 36, 34, 34, 33, 37, 38, 34, 31, 32, 32, 30, 40, + 37, 22, 36, 33, 49, 39, 38, 49, 48, 46, 46, 46, 45, 43, 42, 60, + 78, 64, 56, 50, 43, 58, 66, 55, 86, 93, 84, 97, 114, 111, 99, 102, + 105, 85, 70, 101, 97, 96, 73, 78, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 29, 35, 59, 44, 84, 114, 162, 144, + 207, 208, 225, 208, 178, 162, 195, 189, 175, 168, 149, 184, 159, 186, 178, 152, + 114, 107, 165, 192, 194, 155, 133, 156, 203, 149, 160, 122, 153, 99, 93, 87, + 71, 106, 80, 65, 94, 93, 67, 73, 69, 43, 57, 41, 46, 47, 44, 37, + 31, 30, 32, 30, 31, 34, 38, 36, 33, 35, 40, 34, 39, 36, 44, 37, + 44, 41, 45, 46, 43, 41, 42, 45, 46, 45, 43, 66, 73, 54, 49, 46, + 35, 48, 59, 82, 93, 92, 87, 89, 86, 90, 103, 67, 80, 115, 118, 43, + 86, 57, 134, 112, 78, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 186, 54, 51, 27, 41, 53, 96, 127, 105, 124, 206, 200, 210, 204, + 182, 149, 174, 168, 179, 176, 160, 181, 142, 181, 140, 156, 127, 146, 125, 158, + 186, 160, 152, 131, 135, 179, 122, 135, 99, 76, 104, 79, 61, 101, 78, 72, + 127, 108, 92, 65, 36, 54, 37, 38, 41, 42, 36, 32, 31, 31, 30, 32, + 28, 31, 37, 38, 32, 37, 46, 33, 35, 37, 39, 37, 37, 36, 36, 44, + 43, 42, 42, 44, 46, 48, 49, 46, 51, 38, 48, 53, 40, 47, 55, 79, + 65, 65, 86, 87, 61, 71, 118, 158, 114, 113, 95, 92, 57, 90, 74, 101, + 61, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 50, 62, + 57, 32, 55, 83, 86, 90, 101, 156, 199, 163, 217, 190, 201, 162, 167, 168, + 175, 155, 139, 167, 142, 131, 195, 122, 103, 135, 196, 177, 177, 197, 126, 152, + 128, 108, 155, 172, 83, 60, 83, 84, 84, 87, 84, 124, 128, 116, 87, 38, + 40, 64, 33, 40, 39, 35, 27, 28, 32, 31, 26, 38, 31, 30, 34, 36, + 32, 38, 46, 61, 47, 39, 35, 48, 50, 51, 44, 43, 45, 45, 43, 41, + 42, 48, 53, 32, 38, 28, 43, 53, 42, 47, 52, 51, 63, 67, 67, 70, + 67, 74, 94, 88, 69, 143, 75, 51, 67, 74, 73, 62, 43, 73, 161, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 46, 47, 53, 64, 54, 59, 107, 123, + 153, 73, 183, 229, 208, 202, 216, 191, 196, 144, 120, 119, 128, 136, 141, 141, + 177, 124, 99, 166, 141, 161, 199, 206, 205, 211, 185, 198, 179, 237, 206, 146, + 117, 95, 77, 97, 93, 56, 89, 120, 96, 142, 93, 24, 50, 52, 46, 49, + 48, 39, 30, 31, 36, 34, 27, 37, 32, 30, 37, 46, 52, 56, 60, 61, + 54, 52, 40, 47, 47, 63, 69, 43, 43, 41, 37, 34, 35, 40, 45, 39, + 44, 29, 34, 43, 36, 44, 47, 50, 69, 72, 64, 63, 60, 56, 59, 85, + 124, 100, 140, 65, 76, 63, 26, 52, 43, 68, 92, 120, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 187, 57, 51, 81, 103, 81, 99, 152, 215, 190, 178, 229, 241, + 245, 194, 200, 135, 134, 136, 137, 127, 111, 132, 127, 114, 146, 136, 218, 160, + 183, 155, 201, 117, 234, 206, 200, 188, 124, 168, 122, 172, 131, 130, 104, 55, + 63, 84, 77, 76, 92, 135, 107, 42, 40, 54, 55, 55, 59, 52, 40, 37, + 39, 37, 30, 34, 35, 35, 41, 56, 69, 70, 64, 45, 38, 47, 43, 66, + 62, 70, 61, 56, 47, 38, 34, 37, 39, 39, 37, 42, 53, 34, 31, 35, + 32, 40, 40, 39, 41, 49, 68, 78, 61, 54, 67, 75, 69, 87, 90, 80, + 59, 68, 49, 51, 45, 46, 40, 34, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 47, 58, + 66, 58, 116, 157, 122, 130, 166, 236, 194, 189, 234, 243, 193, 225, 186, 179, + 141, 155, 154, 115, 84, 133, 128, 99, 119, 178, 140, 211, 175, 163, 171, 106, + 169, 170, 218, 204, 181, 190, 166, 149, 141, 100, 96, 106, 94, 96, 99, 60, + 116, 83, 96, 66, 24, 79, 53, 51, 61, 58, 46, 36, 36, 32, 28, 37, + 40, 36, 37, 50, 61, 53, 37, 71, 39, 37, 63, 133, 136, 107, 51, 79, + 63, 49, 46, 54, 58, 53, 43, 38, 55, 40, 33, 37, 35, 41, 36, 39, + 45, 54, 70, 84, 74, 60, 63, 73, 107, 75, 62, 48, 48, 110, 78, 60, + 59, 53, 34, 54, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 183, 59, 43, 47, 75, 47, 60, 118, 154, + 193, 224, 201, 242, 219, 209, 237, 238, 210, 196, 199, 211, 185, 117, 121, 123, + 102, 112, 116, 110, 196, 243, 184, 205, 174, 173, 168, 169, 204, 221, 191, 193, + 162, 157, 150, 159, 118, 120, 102, 76, 67, 93, 72, 90, 71, 76, 44, 77, + 59, 64, 32, 47, 42, 35, 33, 36, 40, 41, 40, 36, 38, 38, 37, 36, + 43, 56, 66, 27, 78, 50, 86, 170, 137, 131, 82, 102, 131, 116, 108, 90, + 87, 61, 66, 83, 74, 65, 47, 29, 30, 37, 33, 42, 56, 80, 77, 79, + 70, 47, 53, 49, 46, 77, 70, 51, 92, 77, 90, 64, 60, 71, 51, 42, + 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 183, 60, 32, 78, 41, 65, 98, 77, 173, 239, 234, 220, 230, 213, + 239, 230, 239, 204, 215, 204, 207, 148, 118, 178, 106, 94, 103, 83, 101, 116, + 146, 201, 203, 174, 119, 149, 148, 168, 168, 179, 196, 195, 167, 116, 101, 131, + 94, 103, 95, 80, 72, 90, 63, 85, 67, 63, 39, 65, 62, 68, 46, 51, + 47, 42, 38, 37, 36, 35, 35, 30, 32, 33, 30, 28, 30, 38, 45, 21, + 109, 96, 212, 135, 182, 181, 203, 152, 131, 124, 97, 77, 113, 142, 110, 77, + 72, 74, 68, 58, 58, 59, 49, 67, 61, 64, 55, 49, 41, 37, 67, 37, + 60, 65, 58, 84, 116, 75, 110, 99, 113, 83, 40, 48, 50, 22, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 25, 93, + 61, 56, 65, 66, 128, 87, 188, 241, 216, 209, 248, 209, 203, 230, 187, 233, + 208, 214, 167, 198, 140, 109, 104, 116, 134, 85, 64, 160, 196, 180, 157, 151, + 134, 139, 135, 161, 171, 179, 160, 120, 140, 107, 102, 104, 69, 81, 80, 75, + 70, 84, 59, 74, 64, 52, 42, 51, 60, 58, 46, 50, 49, 46, 42, 37, + 33, 32, 33, 30, 32, 35, 32, 30, 30, 34, 39, 68, 59, 186, 151, 194, + 191, 174, 159, 156, 147, 137, 106, 125, 115, 105, 75, 70, 68, 75, 76, 72, + 74, 72, 60, 63, 50, 51, 47, 46, 44, 54, 100, 44, 17, 44, 61, 48, + 100, 98, 88, 112, 151, 94, 38, 55, 57, 39, 39, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 74, 93, 99, 69, 46, 73, + 135, 150, 218, 234, 212, 218, 235, 223, 207, 204, 198, 195, 200, 199, 212, 188, + 83, 165, 115, 110, 87, 119, 185, 160, 163, 156, 184, 193, 162, 120, 159, 196, + 149, 166, 189, 158, 128, 76, 80, 87, 59, 68, 65, 66, 63, 81, 63, 66, + 70, 58, 59, 46, 55, 43, 39, 41, 44, 45, 43, 38, 35, 35, 37, 34, + 35, 35, 34, 34, 35, 40, 44, 80, 180, 179, 188, 185, 191, 155, 115, 124, + 107, 85, 78, 106, 76, 57, 72, 66, 65, 69, 67, 58, 62, 66, 58, 45, + 39, 45, 40, 38, 32, 26, 54, 47, 48, 39, 40, 52, 86, 74, 104, 85, + 126, 79, 39, 38, 35, 46, 44, 112, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 92, 26, 45, 68, 63, 79, 141, 110, 153, 193, 183, 206, + 208, 214, 218, 216, 192, 181, 203, 193, 208, 179, 199, 125, 138, 98, 80, 114, + 122, 101, 236, 150, 119, 170, 197, 140, 136, 109, 142, 169, 190, 241, 204, 156, + 126, 100, 73, 73, 55, 65, 61, 65, 60, 77, 69, 70, 80, 67, 70, 42, + 50, 37, 43, 36, 39, 42, 42, 38, 36, 37, 39, 36, 36, 33, 30, 31, + 33, 39, 43, 69, 146, 151, 126, 124, 130, 120, 91, 130, 89, 83, 103, 77, + 81, 95, 102, 66, 66, 70, 65, 50, 53, 60, 56, 37, 40, 46, 34, 37, + 39, 21, 26, 50, 58, 47, 47, 45, 63, 63, 101, 89, 96, 71, 60, 38, + 29, 52, 35, 43, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, + 105, 128, 78, 46, 135, 157, 131, 208, 226, 235, 169, 217, 226, 218, 231, 212, + 175, 180, 173, 209, 221, 183, 158, 146, 136, 102, 78, 67, 82, 192, 142, 158, + 158, 184, 153, 98, 121, 94, 102, 157, 124, 128, 130, 131, 79, 70, 61, 62, + 51, 65, 63, 70, 59, 72, 67, 71, 74, 59, 59, 34, 42, 38, 48, 37, + 38, 39, 39, 36, 35, 35, 35, 42, 40, 35, 31, 30, 33, 36, 39, 74, + 26, 115, 83, 76, 126, 80, 78, 72, 75, 66, 77, 51, 63, 55, 59, 63, + 66, 74, 74, 63, 61, 64, 57, 47, 48, 46, 27, 36, 52, 39, 41, 40, + 26, 43, 63, 22, 38, 62, 68, 101, 68, 57, 67, 50, 48, 58, 30, 37, + 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 57, 76, 54, 101, + 96, 91, 189, 218, 214, 230, 206, 219, 205, 202, 197, 213, 206, 192, 185, 162, + 218, 184, 198, 158, 121, 93, 95, 61, 152, 143, 118, 132, 157, 158, 166, 151, + 118, 87, 95, 77, 132, 137, 127, 107, 78, 87, 67, 67, 53, 59, 53, 65, + 54, 63, 59, 69, 62, 48, 47, 38, 42, 39, 42, 36, 35, 34, 33, 34, + 34, 33, 32, 42, 40, 37, 34, 34, 36, 36, 37, 29, 15, 69, 67, 61, + 37, 78, 49, 44, 64, 43, 33, 54, 58, 47, 69, 58, 57, 64, 68, 66, + 70, 68, 54, 66, 58, 49, 27, 27, 33, 20, 29, 27, 53, 32, 43, 55, + 49, 36, 76, 77, 44, 39, 41, 43, 49, 38, 27, 36, 46, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 195, 61, 82, 55, 64, 168, 122, 185, 217, 226, + 181, 208, 243, 188, 177, 234, 218, 190, 160, 196, 170, 208, 203, 168, 147, 128, + 135, 77, 126, 143, 122, 84, 99, 112, 167, 174, 165, 105, 92, 131, 64, 66, + 137, 122, 143, 107, 65, 68, 65, 81, 61, 53, 39, 54, 47, 56, 53, 70, + 59, 49, 51, 55, 54, 44, 36, 35, 31, 29, 30, 34, 36, 35, 33, 32, + 31, 30, 33, 35, 37, 36, 35, 38, 54, 49, 38, 46, 43, 58, 51, 61, + 30, 46, 54, 62, 45, 54, 40, 55, 45, 46, 51, 55, 65, 63, 46, 61, + 52, 53, 46, 47, 42, 29, 48, 44, 30, 21, 49, 35, 44, 54, 58, 69, + 55, 51, 34, 45, 53, 29, 46, 44, 46, 110, 255, 255, 255, 255, 255, 255, + 255, 255, 83, 116, 71, 63, 66, 231, 173, 231, 178, 207, 171, 198, 197, 199, + 191, 241, 234, 214, 154, 215, 205, 234, 177, 183, 213, 153, 150, 123, 113, 117, + 98, 79, 114, 193, 204, 177, 191, 159, 145, 94, 101, 96, 149, 77, 86, 86, + 62, 70, 59, 59, 61, 47, 53, 35, 47, 43, 54, 45, 48, 52, 54, 53, + 49, 44, 40, 32, 45, 38, 38, 21, 36, 32, 35, 41, 37, 31, 29, 30, + 34, 37, 38, 37, 52, 44, 57, 56, 43, 56, 44, 56, 53, 51, 50, 51, + 52, 55, 58, 60, 60, 58, 58, 56, 53, 51, 49, 43, 46, 50, 50, 42, + 35, 36, 41, 34, 39, 41, 36, 34, 40, 46, 49, 78, 89, 74, 81, 44, + 41, 45, 43, 38, 34, 45, 255, 255, 255, 255, 255, 255, 255, 194, 174, 90, + 67, 89, 63, 239, 204, 252, 184, 195, 172, 185, 155, 188, 200, 240, 207, 173, + 169, 183, 206, 212, 196, 184, 162, 99, 139, 114, 83, 113, 109, 112, 120, 220, + 198, 225, 165, 134, 95, 119, 73, 72, 133, 111, 113, 90, 48, 55, 55, 48, + 53, 45, 53, 39, 50, 45, 53, 45, 46, 47, 48, 47, 45, 42, 40, 39, + 38, 28, 40, 30, 37, 28, 33, 32, 33, 33, 34, 33, 32, 32, 31, 44, + 53, 51, 60, 58, 52, 56, 50, 55, 53, 49, 46, 44, 44, 46, 47, 52, + 55, 58, 60, 60, 56, 51, 48, 34, 38, 43, 45, 46, 45, 41, 36, 38, + 39, 37, 33, 34, 40, 43, 43, 61, 78, 73, 87, 52, 42, 39, 32, 52, + 25, 50, 130, 255, 255, 255, 255, 255, 255, 89, 71, 130, 42, 143, 193, 246, + 198, 237, 154, 206, 176, 209, 153, 187, 251, 207, 210, 189, 220, 214, 194, 166, + 185, 183, 149, 214, 92, 138, 133, 152, 106, 122, 187, 227, 190, 130, 157, 52, + 74, 41, 47, 70, 79, 77, 86, 92, 68, 72, 63, 54, 57, 52, 55, 42, + 44, 36, 37, 41, 41, 41, 40, 39, 38, 38, 38, 35, 33, 26, 43, 28, + 27, 20, 35, 32, 35, 38, 37, 34, 32, 33, 36, 49, 49, 61, 59, 58, + 60, 50, 53, 52, 50, 45, 41, 38, 36, 36, 37, 42, 47, 54, 60, 61, + 58, 53, 49, 40, 41, 39, 38, 44, 52, 48, 38, 43, 42, 38, 35, 38, + 45, 47, 42, 62, 73, 69, 80, 53, 44, 48, 40, 38, 41, 40, 52, 255, + 255, 255, 255, 255, 194, 79, 58, 102, 133, 201, 126, 222, 206, 215, 177, 168, + 185, 137, 141, 166, 197, 175, 173, 211, 177, 197, 196, 191, 167, 191, 227, 239, + 201, 171, 174, 166, 114, 157, 245, 150, 118, 67, 93, 79, 66, 36, 73, 77, + 74, 116, 120, 110, 72, 62, 49, 59, 60, 55, 55, 46, 42, 34, 31, 39, + 40, 40, 39, 39, 38, 37, 37, 25, 36, 36, 43, 21, 25, 28, 47, 47, + 47, 45, 38, 32, 33, 40, 48, 48, 43, 66, 59, 57, 62, 40, 47, 46, + 46, 43, 39, 37, 35, 35, 35, 37, 40, 46, 51, 54, 54, 53, 52, 54, + 52, 42, 31, 34, 48, 51, 44, 42, 44, 43, 40, 41, 46, 50, 47, 53, + 63, 67, 78, 63, 51, 54, 39, 40, 32, 58, 85, 142, 255, 255, 255, 255, + 39, 86, 68, 119, 169, 221, 68, 191, 177, 197, 166, 183, 176, 157, 120, 190, + 225, 180, 185, 166, 166, 169, 196, 218, 196, 226, 206, 249, 156, 167, 167, 151, + 224, 194, 174, 115, 100, 109, 59, 92, 31, 42, 36, 47, 20, 62, 75, 84, + 70, 66, 54, 46, 43, 46, 45, 47, 44, 44, 42, 37, 39, 41, 42, 42, + 40, 38, 36, 23, 40, 35, 36, 24, 48, 52, 56, 53, 53, 50, 42, 36, + 36, 44, 52, 47, 43, 66, 59, 56, 59, 35, 41, 42, 41, 39, 38, 38, + 38, 41, 42, 41, 41, 41, 43, 46, 51, 56, 59, 56, 58, 51, 38, 35, + 44, 50, 50, 41, 48, 52, 45, 39, 39, 44, 45, 31, 44, 66, 89, 88, + 65, 55, 24, 46, 58, 108, 56, 78, 255, 255, 255, 255, 54, 68, 108, 196, + 181, 166, 144, 203, 156, 120, 184, 156, 183, 150, 105, 238, 209, 228, 145, 140, + 208, 167, 215, 210, 193, 236, 165, 167, 169, 187, 166, 231, 154, 191, 149, 120, + 69, 66, 72, 59, 59, 82, 72, 107, 52, 40, 44, 60, 70, 66, 48, 38, + 35, 41, 37, 47, 42, 47, 43, 35, 37, 40, 42, 42, 40, 37, 35, 30, + 39, 25, 29, 37, 76, 70, 55, 44, 46, 47, 45, 41, 40, 43, 46, 52, + 52, 62, 59, 54, 50, 37, 38, 39, 39, 40, 40, 41, 42, 46, 46, 46, + 44, 43, 43, 46, 50, 57, 60, 44, 50, 55, 53, 46, 43, 46, 51, 40, + 51, 56, 48, 36, 31, 33, 34, 38, 41, 60, 81, 95, 77, 72, 37, 130, + 62, 44, 80, 77, 89, 255, 255, 255, 57, 124, 208, 214, 163, 149, 202, 151, + 179, 180, 208, 179, 166, 180, 93, 215, 215, 201, 162, 169, 168, 154, 215, 214, + 162, 207, 211, 166, 171, 226, 155, 200, 176, 211, 117, 164, 78, 61, 65, 71, + 54, 81, 72, 36, 38, 41, 58, 47, 47, 52, 54, 44, 39, 46, 37, 50, + 38, 40, 32, 33, 34, 34, 35, 35, 34, 34, 33, 34, 37, 23, 34, 41, + 70, 59, 47, 36, 36, 37, 38, 40, 42, 47, 49, 58, 63, 54, 54, 46, + 38, 43, 38, 40, 41, 41, 41, 41, 41, 44, 44, 42, 43, 45, 47, 49, + 50, 50, 50, 39, 41, 50, 57, 51, 40, 40, 49, 38, 48, 54, 48, 39, + 34, 32, 29, 53, 41, 46, 58, 85, 78, 88, 59, 122, 85, 50, 92, 58, + 116, 255, 255, 255, 50, 77, 217, 135, 182, 182, 167, 218, 178, 167, 213, 220, + 191, 160, 88, 148, 173, 175, 203, 180, 138, 187, 137, 184, 188, 194, 181, 143, + 229, 151, 177, 129, 202, 202, 163, 89, 84, 63, 47, 61, 55, 46, 47, 50, + 57, 34, 54, 43, 48, 46, 42, 46, 40, 51, 41, 57, 42, 45, 35, 32, + 31, 31, 29, 30, 30, 33, 33, 32, 37, 34, 45, 36, 45, 38, 42, 37, + 33, 28, 28, 36, 45, 53, 58, 64, 69, 46, 48, 41, 30, 46, 41, 43, + 43, 44, 41, 42, 41, 40, 40, 35, 39, 45, 49, 51, 47, 42, 38, 45, + 38, 42, 53, 48, 34, 35, 48, 35, 44, 50, 49, 45, 42, 38, 31, 43, + 28, 33, 46, 80, 74, 84, 50, 73, 41, 76, 55, 53, 54, 255, 255, 255, + 37, 141, 184, 214, 187, 199, 174, 200, 168, 161, 193, 189, 185, 133, 120, 195, + 97, 159, 131, 136, 182, 103, 117, 171, 135, 174, 137, 160, 103, 95, 163, 199, + 158, 163, 113, 73, 67, 51, 58, 54, 71, 47, 64, 52, 58, 55, 43, 41, + 47, 40, 25, 31, 37, 47, 30, 40, 99, 53, 29, 36, 36, 32, 17, 44, + 17, 49, 22, 32, 39, 32, 51, 57, 39, 47, 34, 32, 26, 37, 47, 40, + 35, 43, 47, 48, 41, 34, 32, 35, 39, 42, 42, 45, 46, 47, 46, 46, + 43, 40, 37, 37, 34, 34, 41, 50, 55, 52, 47, 49, 37, 42, 55, 44, + 58, 32, 52, 42, 42, 44, 47, 45, 39, 38, 38, 37, 42, 28, 33, 42, + 73, 97, 53, 52, 30, 46, 59, 41, 53, 85, 255, 255, 78, 163, 208, 197, + 182, 194, 170, 190, 167, 160, 180, 195, 184, 136, 132, 134, 143, 169, 141, 155, + 136, 136, 117, 155, 126, 169, 139, 122, 95, 93, 142, 154, 127, 140, 98, 52, + 58, 72, 60, 56, 47, 38, 59, 59, 58, 47, 33, 33, 42, 46, 43, 46, + 36, 43, 41, 50, 92, 49, 38, 32, 34, 41, 33, 32, 36, 36, 38, 33, + 51, 48, 52, 39, 25, 44, 48, 52, 41, 36, 35, 34, 42, 45, 33, 32, + 32, 33, 36, 39, 41, 41, 39, 49, 51, 52, 50, 46, 41, 39, 39, 37, + 34, 33, 37, 43, 46, 45, 42, 48, 35, 38, 51, 43, 56, 32, 47, 38, + 40, 46, 51, 48, 39, 33, 33, 35, 39, 28, 32, 36, 59, 84, 55, 33, + 43, 54, 67, 73, 63, 57, 255, 255, 150, 149, 145, 181, 192, 156, 175, 143, + 197, 172, 210, 178, 170, 188, 195, 102, 121, 153, 191, 154, 123, 129, 160, 115, + 131, 157, 128, 122, 126, 121, 144, 125, 115, 125, 96, 55, 47, 68, 47, 71, + 49, 42, 45, 51, 50, 47, 44, 43, 43, 41, 40, 39, 35, 54, 55, 43, + 54, 35, 58, 40, 22, 93, 26, 73, 29, 51, 44, 40, 50, 44, 47, 45, + 38, 43, 35, 55, 46, 37, 28, 28, 44, 45, 25, 38, 40, 42, 41, 39, + 38, 37, 37, 51, 53, 54, 51, 45, 40, 38, 38, 34, 34, 33, 34, 36, + 39, 42, 44, 49, 37, 36, 47, 46, 54, 36, 43, 33, 34, 38, 42, 41, + 35, 33, 35, 34, 37, 32, 34, 32, 45, 72, 65, 46, 71, 56, 56, 85, + 66, 42, 255, 255, 212, 182, 159, 166, 182, 195, 183, 189, 193, 187, 180, 185, + 150, 186, 191, 143, 124, 138, 142, 139, 136, 92, 153, 85, 117, 150, 107, 116, + 123, 111, 125, 97, 98, 98, 80, 70, 51, 62, 47, 81, 67, 56, 52, 46, + 45, 47, 52, 51, 42, 35, 34, 36, 37, 58, 56, 40, 39, 35, 64, 37, + 44, 78, 59, 60, 47, 41, 42, 51, 46, 35, 36, 43, 47, 46, 36, 48, + 39, 36, 33, 29, 37, 40, 30, 44, 44, 42, 38, 34, 34, 39, 44, 50, + 49, 47, 46, 44, 41, 37, 35, 31, 33, 34, 33, 34, 38, 45, 51, 52, + 41, 37, 45, 50, 53, 42, 41, 36, 32, 30, 32, 33, 35, 43, 52, 33, + 36, 37, 38, 32, 37, 61, 77, 68, 82, 56, 49, 78, 64, 47, 79, 255, + 160, 102, 73, 180, 210, 199, 219, 180, 199, 170, 160, 191, 185, 183, 165, 179, + 153, 160, 104, 169, 167, 137, 128, 137, 145, 177, 125, 99, 93, 74, 95, 84, + 88, 78, 69, 53, 47, 58, 50, 61, 52, 38, 45, 48, 44, 43, 45, 44, + 40, 40, 44, 52, 40, 43, 42, 54, 60, 52, 48, 54, 73, 60, 74, 60, + 60, 61, 54, 56, 48, 42, 30, 26, 33, 46, 62, 67, 38, 26, 33, 34, + 33, 34, 32, 29, 31, 32, 32, 33, 37, 44, 51, 45, 40, 36, 37, 41, + 42, 37, 31, 31, 34, 35, 34, 33, 35, 42, 48, 51, 43, 37, 42, 52, + 48, 47, 39, 42, 37, 33, 33, 35, 39, 50, 60, 30, 33, 39, 37, 33, + 35, 51, 79, 71, 68, 60, 64, 73, 64, 55, 63, 255, 210, 114, 130, 194, + 186, 204, 177, 196, 167, 205, 187, 185, 215, 183, 177, 170, 131, 158, 143, 132, + 135, 152, 102, 146, 168, 121, 100, 104, 85, 68, 82, 87, 85, 69, 63, 56, + 49, 57, 56, 72, 63, 33, 30, 37, 42, 47, 50, 49, 47, 45, 43, 45, + 39, 42, 34, 51, 54, 55, 42, 47, 51, 34, 32, 49, 35, 63, 42, 53, + 38, 42, 41, 39, 41, 43, 64, 94, 45, 18, 29, 36, 35, 32, 29, 25, + 29, 35, 39, 41, 42, 42, 43, 39, 34, 30, 33, 38, 41, 37, 33, 35, + 37, 38, 36, 33, 31, 33, 36, 47, 43, 37, 37, 51, 40, 48, 35, 39, + 36, 35, 36, 36, 36, 41, 48, 27, 29, 37, 31, 34, 37, 39, 69, 80, + 62, 62, 69, 62, 58, 61, 60, 255, 255, 164, 182, 172, 175, 180, 212, 197, + 188, 206, 204, 198, 196, 159, 173, 173, 128, 153, 146, 123, 133, 158, 108, 151, + 168, 107, 106, 92, 81, 78, 68, 75, 63, 52, 49, 82, 64, 80, 67, 104, + 83, 63, 50, 36, 49, 58, 57, 54, 52, 45, 36, 30, 34, 45, 36, 43, + 29, 45, 45, 63, 71, 44, 72, 55, 85, 66, 64, 49, 25, 38, 48, 52, + 51, 49, 81, 76, 42, 26, 31, 33, 34, 35, 31, 35, 36, 39, 42, 44, + 43, 39, 36, 35, 35, 35, 35, 36, 36, 38, 39, 37, 39, 41, 40, 37, + 34, 31, 30, 45, 46, 39, 36, 51, 34, 51, 35, 39, 35, 33, 34, 33, + 32, 37, 44, 30, 31, 38, 28, 38, 44, 31, 55, 99, 81, 69, 64, 58, + 55, 62, 70, 255, 255, 230, 196, 207, 189, 186, 205, 193, 170, 206, 209, 206, + 206, 208, 185, 193, 162, 192, 144, 151, 144, 162, 78, 159, 113, 150, 138, 76, + 79, 91, 63, 70, 56, 53, 54, 58, 48, 87, 49, 87, 48, 61, 64, 57, + 66, 62, 46, 40, 47, 49, 43, 41, 31, 36, 36, 52, 30, 43, 40, 51, + 36, 70, 49, 77, 69, 51, 37, 46, 27, 44, 42, 28, 31, 64, 137, 32, + 32, 40, 40, 29, 29, 38, 38, 34, 31, 28, 31, 36, 41, 43, 42, 33, + 39, 43, 40, 34, 32, 38, 44, 37, 39, 42, 45, 44, 40, 35, 32, 45, + 49, 43, 38, 53, 33, 55, 37, 47, 40, 34, 32, 32, 35, 46, 57, 34, + 34, 39, 26, 41, 49, 26, 45, 102, 98, 79, 69, 71, 59, 54, 72, 126, + 255, 255, 226, 183, 161, 224, 220, 187, 193, 177, 195, 229, 182, 210, 185, 190, + 198, 176, 152, 144, 134, 119, 95, 158, 121, 99, 88, 117, 73, 59, 82, 68, + 38, 53, 38, 62, 54, 53, 55, 55, 52, 54, 60, 50, 63, 72, 64, 34, + 78, 34, 43, 41, 39, 37, 38, 40, 40, 37, 34, 36, 49, 39, 71, 49, + 45, 52, 48, 27, 52, 31, 41, 29, 38, 111, 100, 32, 33, 33, 34, 35, + 34, 34, 33, 36, 37, 39, 41, 41, 39, 37, 36, 35, 37, 39, 37, 35, + 35, 38, 41, 46, 45, 42, 37, 32, 31, 34, 38, 39, 42, 42, 39, 39, + 42, 41, 38, 45, 28, 41, 33, 34, 53, 41, 36, 33, 33, 32, 34, 40, + 45, 42, 35, 73, 105, 87, 57, 60, 60, 80, 61, 52, 255, 255, 255, 255, + 255, 242, 221, 202, 210, 202, 208, 209, 190, 198, 181, 180, 185, 144, 151, 163, + 204, 118, 143, 156, 211, 114, 110, 86, 98, 62, 56, 101, 66, 80, 52, 53, + 48, 48, 55, 59, 57, 56, 58, 61, 59, 63, 71, 62, 108, 59, 57, 45, + 42, 38, 38, 38, 38, 35, 33, 43, 52, 41, 66, 46, 45, 55, 52, 48, + 28, 26, 43, 40, 37, 68, 98, 34, 36, 37, 39, 40, 41, 42, 42, 39, + 39, 39, 38, 37, 34, 32, 31, 33, 35, 37, 37, 36, 37, 40, 43, 41, + 43, 43, 41, 37, 35, 35, 37, 35, 39, 40, 38, 37, 39, 37, 33, 42, + 28, 46, 46, 44, 52, 37, 32, 39, 36, 31, 31, 38, 46, 45, 39, 69, + 104, 76, 81, 53, 60, 55, 56, 64, 255, 255, 255, 255, 255, 255, 255, 255, + 242, 226, 223, 188, 194, 189, 184, 181, 181, 131, 164, 134, 147, 187, 150, 119, + 128, 167, 131, 53, 126, 109, 105, 71, 88, 59, 59, 54, 49, 51, 59, 65, + 63, 58, 54, 51, 43, 47, 65, 66, 102, 60, 59, 49, 46, 41, 38, 37, + 36, 35, 34, 42, 48, 46, 65, 50, 49, 55, 50, 53, 25, 46, 36, 30, + 40, 56, 139, 37, 38, 39, 40, 41, 42, 42, 42, 39, 38, 36, 34, 33, + 32, 31, 31, 32, 34, 35, 36, 35, 35, 37, 39, 35, 38, 42, 43, 41, + 39, 37, 37, 34, 38, 39, 37, 37, 38, 36, 32, 42, 28, 45, 52, 47, + 44, 32, 31, 47, 40, 31, 29, 38, 49, 49, 43, 61, 84, 83, 81, 95, + 87, 81, 61, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, + 211, 209, 201, 185, 167, 128, 149, 138, 178, 181, 147, 147, 140, 153, 179, 65, + 87, 169, 104, 58, 52, 59, 56, 59, 54, 52, 56, 61, 60, 52, 45, 38, + 36, 44, 58, 48, 66, 42, 55, 53, 49, 44, 40, 38, 39, 40, 41, 38, + 43, 55, 69, 59, 54, 51, 41, 37, 37, 56, 23, 25, 53, 59, 122, 38, + 38, 38, 38, 37, 36, 34, 33, 37, 35, 33, 32, 32, 33, 35, 36, 35, + 35, 35, 34, 33, 31, 31, 30, 31, 34, 38, 40, 41, 40, 38, 37, 38, + 40, 39, 36, 36, 39, 40, 37, 46, 30, 38, 48, 41, 32, 30, 34, 49, + 42, 32, 30, 40, 51, 50, 44, 40, 95, 74, 113, 71, 113, 59, 51, 77, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 215, 203, 186, + 158, 149, 138, 129, 187, 149, 133, 135, 143, 108, 146, 158, 125, 130, 110, 83, + 78, 62, 35, 59, 52, 46, 47, 51, 53, 50, 40, 46, 45, 49, 56, 42, + 47, 38, 54, 52, 50, 46, 42, 41, 43, 46, 49, 49, 48, 66, 67, 60, + 54, 47, 36, 28, 39, 33, 20, 43, 59, 40, 33, 39, 39, 39, 38, 37, + 36, 35, 34, 39, 37, 34, 33, 33, 34, 37, 38, 36, 36, 36, 36, 35, + 34, 32, 30, 31, 31, 32, 34, 36, 37, 38, 38, 39, 40, 37, 32, 32, + 38, 42, 42, 46, 33, 36, 50, 42, 30, 33, 33, 46, 41, 35, 34, 42, + 51, 49, 41, 27, 63, 96, 104, 106, 96, 79, 78, 88, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 190, 175, 149, 158, 127, 123, + 176, 204, 145, 146, 125, 137, 133, 110, 182, 117, 161, 69, 52, 28, 68, 55, + 52, 46, 44, 50, 56, 57, 49, 53, 46, 40, 44, 42, 45, 40, 42, 47, + 46, 45, 42, 41, 43, 48, 52, 67, 56, 71, 55, 52, 50, 46, 37, 35, + 40, 21, 34, 49, 39, 35, 16, 38, 39, 40, 42, 43, 43, 43, 43, 43, + 41, 38, 35, 34, 33, 34, 35, 35, 35, 36, 38, 41, 41, 39, 37, 33, + 31, 29, 30, 33, 35, 37, 37, 36, 37, 34, 29, 31, 38, 43, 44, 40, + 37, 38, 56, 51, 37, 41, 29, 41, 40, 37, 36, 41, 47, 45, 39, 49, + 54, 45, 108, 97, 119, 62, 81, 84, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 183, 160, 139, 130, 108, 125, 207, 169, 154, 158, + 166, 108, 139, 80, 93, 80, 68, 98, 67, 52, 34, 48, 50, 47, 44, 49, + 57, 61, 55, 48, 44, 36, 36, 41, 42, 42, 33, 41, 41, 41, 39, 37, + 38, 43, 47, 64, 47, 67, 43, 45, 47, 45, 38, 40, 37, 29, 40, 33, + 25, 44, 44, 36, 37, 39, 41, 42, 43, 43, 43, 42, 41, 38, 36, 34, + 34, 34, 34, 34, 33, 35, 38, 42, 43, 40, 38, 35, 32, 30, 31, 33, + 35, 35, 34, 31, 34, 34, 33, 35, 42, 45, 44, 39, 41, 36, 52, 51, + 43, 50, 29, 38, 39, 38, 35, 37, 42, 43, 40, 44, 29, 57, 93, 175, + 216, 209, 209, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 180, 164, 158, 135, 137, 172, 191, 164, 208, 130, 161, 122, 136, 118, + 69, 135, 49, 52, 77, 61, 46, 39, 44, 44, 40, 43, 50, 54, 48, 44, + 52, 49, 44, 44, 41, 48, 39, 36, 38, 38, 35, 33, 34, 38, 42, 47, + 34, 60, 38, 47, 51, 47, 39, 41, 28, 33, 36, 27, 34, 39, 22, 34, + 35, 36, 36, 37, 36, 36, 36, 37, 37, 36, 35, 35, 36, 36, 37, 34, + 33, 33, 36, 39, 39, 35, 31, 36, 34, 32, 33, 36, 36, 34, 31, 29, + 34, 38, 39, 42, 47, 48, 45, 42, 44, 30, 41, 42, 42, 56, 33, 36, + 38, 38, 35, 34, 39, 43, 42, 35, 64, 91, 92, 145, 225, 234, 238, 232, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 143, + 135, 138, 156, 194, 178, 155, 182, 148, 172, 148, 133, 113, 65, 137, 83, 51, + 78, 51, 51, 61, 45, 38, 47, 49, 39, 42, 54, 44, 42, 40, 41, 43, + 43, 40, 36, 43, 42, 40, 36, 33, 34, 40, 48, 56, 57, 49, 46, 51, + 59, 55, 46, 51, 45, 43, 43, 42, 33, 28, 28, 34, 32, 31, 34, 35, + 34, 36, 41, 34, 36, 38, 36, 32, 31, 32, 34, 43, 36, 31, 34, 41, + 44, 41, 35, 28, 32, 32, 30, 33, 38, 35, 28, 35, 38, 35, 33, 42, + 52, 46, 31, 55, 45, 36, 34, 39, 42, 38, 31, 37, 31, 34, 43, 44, + 38, 39, 48, 21, 49, 104, 62, 160, 217, 214, 222, 240, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 170, 164, 139, 165, 212, + 165, 154, 145, 169, 160, 155, 114, 187, 106, 111, 104, 120, 36, 80, 50, 66, + 54, 46, 49, 55, 55, 51, 46, 44, 43, 42, 42, 42, 42, 40, 38, 40, + 41, 40, 37, 32, 31, 33, 38, 50, 57, 56, 54, 58, 65, 67, 67, 67, + 61, 50, 41, 35, 32, 32, 33, 30, 29, 30, 35, 37, 36, 39, 43, 41, + 43, 44, 42, 39, 37, 38, 40, 38, 37, 37, 37, 39, 40, 41, 42, 28, + 34, 36, 33, 31, 34, 34, 32, 35, 31, 31, 38, 46, 48, 44, 41, 50, + 43, 36, 35, 39, 41, 38, 32, 32, 27, 32, 42, 45, 40, 42, 49, 40, + 33, 84, 106, 194, 226, 223, 231, 221, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 145, 138, 169, 197, 217, 165, 158, 135, 179, + 161, 167, 130, 101, 86, 75, 69, 102, 54, 139, 72, 55, 56, 52, 45, 45, + 51, 48, 37, 41, 43, 44, 43, 41, 39, 39, 39, 37, 38, 39, 37, 34, + 32, 32, 35, 48, 59, 63, 58, 54, 57, 63, 68, 74, 73, 63, 44, 36, + 37, 39, 34, 32, 31, 32, 37, 39, 37, 38, 41, 34, 35, 36, 35, 32, + 31, 31, 32, 33, 38, 42, 40, 36, 35, 40, 46, 30, 37, 40, 35, 31, + 32, 34, 35, 38, 30, 31, 44, 48, 41, 39, 47, 42, 39, 37, 36, 38, + 39, 40, 36, 30, 26, 31, 41, 45, 42, 44, 49, 49, 34, 80, 157, 204, + 213, 218, 217, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 143, 151, 224, 181, 200, 182, 163, 167, 164, 173, 174, 178, 125, + 103, 86, 92, 67, 64, 75, 55, 48, 57, 57, 47, 35, 34, 39, 41, 38, + 40, 44, 42, 39, 36, 38, 39, 35, 35, 37, 37, 38, 37, 38, 40, 48, + 55, 59, 55, 50, 51, 57, 64, 71, 81, 76, 58, 46, 48, 44, 33, 39, + 37, 38, 42, 42, 37, 36, 38, 42, 42, 41, 41, 39, 38, 38, 38, 34, + 39, 42, 39, 34, 32, 37, 42, 37, 38, 38, 35, 33, 34, 35, 36, 40, + 37, 38, 44, 43, 37, 36, 42, 35, 36, 37, 37, 37, 38, 40, 41, 31, + 27, 31, 39, 43, 43, 44, 47, 36, 42, 93, 191, 192, 197, 221, 213, 207, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, + 129, 213, 186, 186, 193, 171, 184, 154, 168, 166, 195, 150, 115, 89, 98, 64, + 100, 65, 61, 65, 60, 55, 51, 43, 36, 40, 48, 35, 36, 41, 39, 38, + 34, 38, 38, 37, 34, 35, 33, 36, 37, 40, 42, 41, 43, 45, 48, 52, + 56, 61, 68, 68, 82, 82, 64, 51, 50, 47, 38, 40, 38, 40, 43, 43, + 39, 38, 40, 42, 42, 41, 40, 40, 39, 38, 37, 38, 38, 37, 35, 33, + 32, 32, 33, 44, 38, 32, 33, 37, 38, 36, 34, 36, 43, 44, 38, 35, + 39, 39, 35, 30, 33, 36, 37, 37, 37, 39, 40, 33, 29, 32, 36, 40, + 42, 42, 43, 28, 41, 90, 208, 207, 204, 230, 223, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 112, 145, 202, 187, + 187, 176, 172, 164, 152, 151, 170, 166, 148, 111, 86, 67, 73, 77, 58, 84, + 63, 49, 50, 52, 47, 42, 43, 33, 36, 38, 39, 39, 39, 40, 41, 39, + 37, 33, 33, 34, 36, 37, 40, 49, 45, 44, 48, 53, 55, 60, 63, 69, + 79, 79, 63, 49, 46, 47, 43, 37, 34, 36, 41, 43, 41, 42, 45, 37, + 35, 33, 33, 34, 34, 32, 30, 40, 36, 32, 32, 33, 33, 31, 28, 47, + 36, 28, 31, 38, 40, 38, 35, 31, 42, 43, 33, 32, 41, 42, 34, 30, + 32, 35, 37, 37, 37, 37, 36, 33, 30, 32, 34, 39, 41, 42, 42, 41, + 32, 64, 190, 224, 214, 217, 220, 217, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 221, 154, 126, 177, 186, 184, 178, 165, 178, + 148, 143, 154, 178, 136, 117, 108, 106, 61, 89, 107, 80, 72, 60, 51, 48, + 48, 44, 37, 36, 36, 38, 41, 44, 46, 46, 45, 40, 38, 36, 37, 40, + 41, 39, 40, 54, 49, 47, 51, 52, 51, 54, 60, 69, 77, 81, 73, 56, + 45, 43, 44, 35, 31, 32, 37, 39, 39, 41, 45, 44, 42, 40, 40, 41, + 41, 39, 37, 37, 34, 31, 31, 33, 34, 33, 31, 45, 35, 28, 31, 36, + 37, 38, 40, 37, 37, 36, 34, 34, 36, 36, 34, 31, 32, 34, 37, 38, + 37, 34, 31, 33, 31, 29, 32, 38, 43, 44, 42, 47, 35, 41, 127, 200, + 215, 203, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 108, 128, 180, 176, 186, 178, 180, 181, 158, 145, 163, 178, + 153, 142, 87, 96, 113, 93, 70, 67, 85, 86, 61, 42, 43, 48, 43, 39, + 38, 38, 42, 48, 51, 50, 48, 37, 37, 39, 43, 48, 49, 46, 44, 45, + 43, 44, 50, 51, 52, 57, 66, 67, 77, 88, 88, 70, 49, 40, 40, 36, + 32, 31, 34, 35, 34, 36, 41, 38, 35, 33, 33, 35, 35, 33, 30, 32, + 33, 33, 33, 33, 34, 36, 37, 42, 34, 30, 33, 34, 33, 37, 44, 46, + 35, 32, 38, 38, 29, 27, 33, 32, 32, 34, 36, 38, 37, 33, 28, 31, + 29, 28, 29, 36, 44, 46, 45, 34, 40, 30, 67, 164, 214, 211, 224, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 73, 101, 180, 176, 179, 172, 173, 176, 164, 150, 156, 182, 153, 125, 114, 114, + 123, 111, 81, 75, 66, 86, 75, 63, 57, 35, 49, 40, 48, 49, 51, 56, + 49, 43, 48, 48, 35, 36, 44, 44, 43, 39, 30, 47, 47, 46, 49, 54, + 60, 62, 63, 65, 79, 92, 90, 69, 47, 41, 45, 34, 33, 34, 34, 33, + 33, 35, 36, 37, 33, 30, 29, 32, 33, 32, 30, 34, 34, 34, 33, 33, + 32, 32, 31, 37, 35, 32, 33, 36, 40, 43, 44, 43, 39, 35, 35, 39, + 40, 36, 31, 33, 32, 31, 34, 37, 38, 35, 31, 30, 33, 35, 34, 35, + 37, 38, 35, 55, 36, 37, 46, 121, 190, 233, 217, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 92, 154, 158, + 165, 171, 171, 157, 146, 147, 156, 168, 135, 141, 106, 140, 120, 138, 103, 84, + 76, 82, 76, 65, 54, 38, 43, 47, 46, 42, 41, 53, 50, 49, 54, 59, + 52, 58, 55, 43, 35, 42, 43, 42, 42, 41, 41, 46, 53, 62, 68, 76, + 82, 89, 89, 75, 55, 45, 41, 35, 34, 35, 35, 34, 34, 35, 37, 37, + 34, 31, 31, 32, 34, 33, 31, 33, 33, 33, 32, 32, 32, 32, 32, 32, + 31, 31, 32, 34, 34, 33, 31, 42, 38, 35, 35, 37, 37, 34, 32, 33, + 31, 29, 31, 34, 37, 38, 36, 27, 31, 33, 32, 35, 39, 42, 39, 44, + 35, 30, 24, 55, 99, 121, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 89, 109, 157, 160, 157, 168, 172, 152, + 146, 156, 159, 165, 151, 146, 133, 133, 129, 130, 110, 90, 87, 76, 79, 72, + 58, 55, 49, 59, 55, 49, 50, 62, 60, 57, 63, 65, 57, 59, 55, 39, + 33, 41, 45, 46, 47, 45, 42, 45, 53, 69, 81, 86, 87, 89, 88, 79, + 61, 47, 38, 36, 35, 36, 36, 35, 35, 36, 37, 36, 34, 32, 32, 33, + 34, 33, 32, 32, 32, 32, 32, 32, 33, 33, 33, 30, 31, 33, 36, 38, + 36, 32, 28, 39, 38, 36, 35, 34, 33, 33, 32, 33, 30, 28, 28, 32, + 37, 40, 41, 29, 32, 33, 32, 33, 39, 41, 40, 40, 45, 38, 32, 30, + 70, 83, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 73, 99, 138, 177, 157, 164, 174, 161, 165, 174, 160, 173, + 167, 157, 152, 124, 121, 111, 101, 92, 93, 71, 79, 81, 70, 79, 63, 63, + 64, 63, 66, 72, 61, 55, 62, 64, 48, 46, 47, 44, 42, 44, 40, 50, + 55, 54, 49, 48, 54, 71, 85, 91, 90, 89, 88, 79, 61, 47, 36, 38, + 36, 37, 37, 35, 35, 36, 38, 33, 33, 32, 32, 32, 33, 32, 32, 32, + 32, 33, 33, 34, 34, 35, 35, 29, 30, 33, 37, 40, 40, 36, 33, 38, + 38, 37, 34, 31, 30, 31, 33, 32, 30, 29, 30, 32, 35, 38, 39, 35, + 37, 35, 32, 32, 35, 38, 35, 29, 38, 30, 31, 24, 74, 91, 87, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 98, 120, 152, 183, 162, 166, 178, 166, 172, 181, 168, 170, 153, 174, 136, 141, + 101, 121, 103, 101, 100, 73, 79, 83, 73, 83, 65, 59, 62, 66, 66, 66, + 50, 49, 63, 59, 46, 49, 53, 52, 49, 51, 45, 50, 55, 57, 51, 47, + 48, 59, 71, 87, 90, 91, 89, 77, 57, 44, 36, 38, 37, 38, 37, 35, + 35, 36, 37, 30, 31, 32, 32, 31, 31, 31, 32, 33, 33, 34, 35, 35, + 36, 36, 36, 30, 30, 31, 33, 35, 36, 35, 33, 39, 39, 37, 33, 30, + 29, 30, 32, 30, 31, 32, 33, 34, 34, 34, 34, 34, 37, 36, 31, 30, + 34, 37, 35, 35, 39, 22, 22, 17, 64, 74, 63, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 115, 138, 183, + 175, 182, 186, 170, 170, 182, 183, 167, 155, 166, 144, 138, 112, 121, 113, 114, + 106, 84, 77, 74, 69, 68, 53, 61, 63, 64, 62, 58, 44, 51, 76, 47, + 48, 61, 63, 49, 41, 49, 54, 53, 60, 63, 58, 51, 48, 53, 62, 82, + 87, 93, 91, 77, 56, 43, 37, 38, 36, 37, 36, 35, 34, 34, 36, 29, + 31, 33, 33, 32, 31, 32, 33, 34, 34, 34, 35, 35, 35, 35, 35, 40, + 37, 35, 34, 35, 36, 35, 34, 42, 39, 35, 32, 31, 30, 31, 31, 29, + 31, 34, 35, 34, 32, 32, 33, 30, 33, 32, 28, 27, 33, 38, 38, 40, + 41, 30, 22, 22, 58, 66, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 102, 120, 138, 190, 190, 190, 191, 184, + 179, 183, 191, 174, 168, 157, 160, 130, 129, 122, 123, 122, 105, 94, 75, 68, + 70, 57, 49, 70, 68, 68, 66, 65, 49, 56, 79, 44, 44, 60, 62, 49, + 41, 51, 56, 62, 67, 69, 65, 58, 53, 55, 60, 79, 84, 91, 92, 78, + 59, 43, 37, 38, 36, 37, 36, 34, 32, 33, 34, 30, 33, 36, 36, 35, + 33, 34, 36, 33, 33, 33, 33, 33, 32, 32, 32, 42, 40, 38, 38, 39, + 39, 37, 36, 45, 40, 34, 31, 32, 33, 32, 30, 28, 30, 33, 32, 31, + 31, 34, 37, 29, 32, 31, 26, 26, 32, 37, 38, 28, 30, 31, 11, 16, + 41, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 111, 132, 148, 194, 190, 177, 178, 192, 188, 179, 182, 184, + 160, 172, 145, 152, 120, 140, 130, 121, 101, 101, 76, 72, 81, 61, 59, 74, + 73, 71, 75, 73, 54, 50, 69, 50, 44, 50, 59, 57, 57, 60, 59, 67, + 72, 71, 66, 58, 52, 53, 54, 75, 79, 86, 91, 82, 65, 49, 38, 37, + 35, 36, 35, 33, 32, 32, 34, 31, 35, 38, 39, 38, 35, 37, 38, 32, + 32, 32, 31, 30, 30, 29, 29, 33, 33, 33, 35, 37, 38, 36, 34, 47, + 40, 33, 31, 33, 35, 33, 29, 28, 29, 30, 29, 29, 31, 37, 42, 32, + 34, 32, 26, 26, 31, 35, 35, 36, 38, 42, 5, 8, 28, 70, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 99, 111, 132, 160, 188, 172, 193, 182, 193, 199, 170, 182, 173, 156, 151, 129, + 146, 132, 145, 126, 127, 103, 103, 81, 90, 80, 80, 62, 75, 87, 58, 48, + 65, 62, 60, 55, 52, 53, 56, 60, 64, 71, 81, 71, 70, 65, 59, 51, + 47, 50, 57, 75, 59, 88, 83, 81, 76, 40, 48, 38, 34, 35, 35, 36, + 37, 39, 39, 39, 39, 37, 35, 34, 31, 35, 35, 35, 34, 33, 33, 32, + 31, 30, 30, 32, 32, 33, 34, 35, 35, 36, 37, 36, 36, 34, 33, 31, + 30, 29, 28, 32, 31, 28, 27, 28, 31, 34, 36, 27, 29, 29, 30, 32, + 33, 38, 40, 47, 36, 34, 16, 10, 39, 79, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 108, 124, 171, + 191, 168, 190, 186, 201, 215, 198, 172, 166, 153, 146, 124, 137, 125, 143, 125, + 124, 108, 110, 90, 96, 91, 96, 69, 57, 71, 69, 62, 56, 50, 68, 42, + 53, 60, 63, 66, 72, 75, 75, 72, 71, 68, 61, 50, 41, 43, 52, 63, + 53, 85, 83, 81, 76, 45, 52, 39, 34, 34, 35, 36, 37, 38, 38, 37, + 37, 38, 36, 33, 32, 34, 33, 34, 34, 33, 32, 31, 31, 30, 30, 33, + 33, 34, 35, 36, 37, 37, 38, 34, 34, 33, 32, 31, 30, 29, 29, 32, + 30, 29, 28, 28, 31, 34, 36, 34, 32, 32, 33, 36, 38, 40, 40, 29, + 33, 41, 6, 15, 92, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 113, 126, 173, 165, 185, 167, 201, 205, + 210, 214, 197, 174, 161, 149, 142, 133, 146, 132, 138, 115, 120, 120, 128, 108, + 97, 87, 90, 67, 87, 100, 69, 66, 91, 79, 58, 52, 63, 69, 64, 60, + 61, 60, 53, 71, 71, 70, 64, 50, 39, 40, 50, 52, 51, 83, 86, 82, + 76, 50, 54, 39, 34, 35, 36, 37, 37, 37, 37, 36, 36, 36, 34, 31, + 30, 31, 32, 33, 33, 33, 32, 31, 31, 30, 30, 32, 32, 33, 33, 34, + 35, 35, 36, 32, 32, 31, 31, 30, 30, 30, 29, 31, 30, 29, 28, 29, + 31, 34, 36, 39, 36, 33, 34, 39, 40, 39, 37, 27, 40, 28, 28, 22, + 145, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 166, 125, 158, 169, 189, 168, 207, 214, 211, 204, 190, 183, + 157, 141, 136, 144, 157, 137, 128, 121, 127, 131, 134, 114, 93, 84, 89, 89, + 83, 91, 85, 81, 83, 65, 63, 55, 57, 58, 55, 57, 59, 65, 72, 71, + 72, 72, 68, 54, 39, 39, 49, 48, 50, 80, 86, 87, 80, 54, 51, 40, + 35, 37, 38, 39, 39, 38, 38, 36, 37, 37, 35, 32, 31, 31, 32, 33, + 32, 32, 31, 31, 30, 30, 30, 29, 29, 29, 30, 30, 31, 31, 31, 30, + 30, 30, 30, 30, 30, 30, 30, 31, 30, 29, 29, 29, 31, 34, 35, 38, + 34, 32, 34, 38, 40, 38, 33, 41, 33, 19, 37, 55, 122, 158, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 127, 130, 155, 189, 209, 176, 206, 216, 214, 208, 204, 177, 154, 144, 133, 142, + 149, 134, 128, 136, 135, 135, 128, 114, 97, 99, 105, 105, 94, 98, 90, 89, + 93, 74, 72, 74, 63, 57, 60, 62, 56, 61, 76, 73, 73, 75, 74, 61, + 42, 40, 49, 50, 55, 77, 88, 91, 83, 59, 46, 41, 36, 39, 41, 41, + 41, 40, 39, 37, 38, 38, 37, 34, 32, 32, 33, 32, 31, 31, 31, 31, + 30, 30, 30, 29, 29, 29, 29, 29, 30, 30, 30, 29, 29, 29, 30, 30, + 30, 31, 31, 30, 30, 29, 29, 30, 32, 33, 34, 37, 33, 31, 35, 40, + 42, 38, 33, 40, 22, 24, 15, 79, 74, 165, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 120, 160, 178, + 212, 186, 214, 227, 218, 203, 193, 164, 152, 159, 136, 135, 131, 131, 140, 132, + 137, 147, 139, 138, 121, 118, 109, 107, 116, 118, 83, 85, 119, 110, 86, 80, + 68, 62, 68, 70, 63, 61, 67, 77, 75, 76, 80, 70, 51, 44, 50, 56, + 67, 83, 94, 94, 81, 61, 43, 41, 36, 39, 41, 42, 42, 40, 39, 37, + 38, 39, 38, 35, 33, 33, 33, 31, 31, 31, 30, 30, 30, 30, 30, 31, + 31, 31, 31, 32, 32, 32, 32, 30, 30, 30, 30, 31, 31, 31, 31, 30, + 30, 30, 30, 31, 32, 33, 34, 36, 36, 35, 38, 41, 42, 39, 35, 23, + 42, 10, 28, 42, 103, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 116, 134, 150, 150, 203, 188, 219, 231, + 215, 183, 163, 156, 146, 157, 129, 132, 126, 132, 142, 140, 145, 157, 143, 150, + 135, 127, 100, 123, 97, 94, 91, 94, 100, 99, 117, 76, 78, 74, 72, 83, + 97, 94, 83, 80, 76, 77, 85, 80, 60, 49, 53, 62, 81, 94, 102, 92, + 73, 61, 44, 39, 36, 39, 41, 41, 40, 38, 37, 35, 36, 38, 37, 34, + 32, 31, 31, 30, 30, 30, 30, 30, 30, 30, 30, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 31, 31, 31, 31, 29, 29, 30, 30, 31, + 32, 33, 33, 37, 38, 39, 40, 38, 38, 35, 33, 24, 51, 7, 38, 6, + 155, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 109, 134, 145, 202, 184, 206, 216, 203, 173, 153, 155, + 131, 135, 113, 130, 128, 129, 129, 172, 166, 157, 124, 133, 129, 132, 106, 125, + 119, 114, 84, 86, 121, 125, 122, 124, 130, 115, 87, 90, 111, 102, 73, 83, + 76, 77, 89, 85, 65, 54, 56, 65, 89, 104, 107, 89, 66, 58, 46, 37, + 34, 39, 40, 41, 38, 36, 35, 34, 35, 37, 36, 33, 31, 29, 29, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 33, + 33, 33, 32, 32, 31, 31, 31, 29, 29, 30, 31, 31, 32, 33, 34, 37, + 38, 39, 38, 34, 30, 29, 28, 39, 26, 28, 9, 18, 156, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 153, 128, 151, 198, 203, 217, 199, 172, 130, 145, 127, 117, 110, 115, 104, + 136, 129, 137, 159, 160, 200, 140, 145, 127, 114, 116, 126, 107, 154, 96, 92, + 105, 108, 131, 124, 131, 138, 129, 110, 90, 82, 81, 86, 89, 75, 76, 85, + 66, 50, 63, 96, 104, 108, 99, 81, 63, 52, 45, 41, 34, 36, 40, 42, + 37, 36, 36, 33, 32, 32, 34, 34, 34, 31, 29, 33, 32, 32, 31, 31, + 30, 30, 29, 31, 32, 32, 33, 33, 32, 32, 31, 30, 30, 30, 30, 30, + 30, 30, 30, 29, 29, 30, 31, 31, 32, 33, 34, 33, 48, 42, 45, 27, + 17, 37, 23, 32, 17, 38, 17, 22, 164, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 118, 146, + 170, 191, 183, 196, 158, 137, 127, 115, 95, 100, 97, 102, 125, 129, 160, 171, + 169, 206, 117, 101, 145, 117, 128, 130, 156, 114, 115, 79, 116, 93, 129, 102, + 112, 130, 128, 129, 113, 112, 110, 99, 97, 81, 73, 76, 65, 63, 85, 99, + 107, 110, 100, 82, 61, 49, 42, 38, 35, 36, 39, 40, 36, 34, 34, 37, + 36, 34, 35, 35, 32, 28, 25, 30, 30, 30, 30, 29, 29, 29, 29, 31, + 32, 32, 33, 33, 32, 32, 31, 30, 30, 30, 30, 30, 30, 30, 30, 29, + 29, 30, 31, 31, 32, 33, 34, 41, 38, 28, 43, 39, 26, 36, 24, 18, + 43, 29, 44, 20, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 121, 175, 172, 168, 135, 137, + 119, 119, 103, 104, 82, 99, 91, 106, 114, 116, 183, 168, 162, 163, 124, 133, + 121, 164, 149, 122, 168, 99, 112, 105, 107, 102, 117, 112, 111, 124, 112, 121, + 102, 106, 98, 100, 99, 84, 73, 71, 66, 78, 104, 105, 110, 109, 98, 78, + 59, 45, 39, 43, 40, 42, 46, 46, 41, 40, 40, 41, 39, 36, 36, 36, + 33, 29, 26, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 33, 33, 33, + 33, 32, 32, 31, 31, 31, 31, 31, 31, 31, 31, 29, 29, 30, 31, 31, + 32, 33, 34, 40, 44, 31, 32, 26, 21, 35, 33, 41, 30, 24, 71, 118, + 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 142, 149, 192, 191, 157, 129, 88, 110, 117, 120, 104, + 90, 107, 107, 104, 103, 94, 191, 186, 165, 126, 132, 130, 113, 142, 118, 105, + 143, 109, 127, 129, 116, 122, 112, 105, 97, 103, 88, 106, 98, 115, 112, 91, + 89, 83, 77, 76, 75, 88, 107, 115, 114, 106, 90, 71, 55, 45, 41, 49, + 48, 50, 51, 50, 44, 43, 45, 40, 37, 36, 38, 37, 37, 34, 31, 33, + 33, 34, 35, 35, 36, 36, 36, 32, 32, 33, 34, 34, 33, 32, 32, 32, + 32, 32, 32, 31, 31, 31, 31, 29, 29, 30, 31, 31, 32, 33, 34, 33, + 48, 39, 24, 23, 28, 32, 29, 40, 32, 94, 170, 222, 179, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 150, 160, 125, 139, 122, 103, 60, 84, 102, 116, 111, 103, 105, 109, 83, + 88, 87, 198, 206, 169, 147, 132, 112, 192, 116, 117, 103, 120, 117, 162, 111, + 139, 120, 114, 112, 101, 98, 88, 106, 107, 122, 120, 94, 86, 82, 80, 78, + 82, 97, 105, 123, 119, 104, 85, 64, 52, 45, 45, 51, 51, 51, 54, 51, + 45, 43, 45, 42, 41, 41, 41, 41, 41, 38, 34, 34, 34, 35, 35, 36, + 37, 37, 37, 32, 33, 34, 34, 34, 34, 33, 32, 34, 34, 33, 33, 32, + 32, 31, 31, 29, 29, 30, 31, 31, 32, 33, 34, 34, 36, 31, 30, 41, + 39, 33, 49, 63, 98, 157, 231, 233, 223, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 137, 133, + 141, 144, 107, 105, 96, 123, 130, 115, 106, 87, 87, 66, 77, 114, 210, 205, + 159, 164, 137, 184, 187, 137, 121, 113, 99, 131, 152, 99, 124, 109, 100, 131, + 124, 110, 107, 103, 105, 101, 97, 106, 92, 86, 82, 75, 87, 106, 111, 129, + 120, 102, 80, 62, 51, 47, 50, 57, 58, 61, 61, 57, 49, 48, 51, 49, + 47, 46, 46, 44, 41, 37, 34, 34, 33, 33, 33, 34, 34, 34, 34, 33, + 33, 34, 34, 34, 34, 33, 33, 35, 35, 34, 34, 33, 32, 32, 31, 29, + 29, 30, 31, 31, 32, 33, 34, 42, 31, 31, 34, 34, 16, 41, 124, 142, + 193, 216, 211, 217, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 174, 167, 166, 158, 137, 163, + 145, 141, 137, 118, 98, 77, 62, 77, 81, 164, 219, 209, 179, 149, 129, 208, + 105, 126, 100, 118, 107, 133, 140, 108, 113, 98, 93, 123, 121, 102, 111, 94, + 109, 96, 100, 104, 92, 92, 86, 74, 88, 114, 120, 129, 120, 102, 81, 64, + 53, 48, 50, 64, 65, 68, 68, 63, 56, 54, 58, 54, 50, 49, 48, 48, + 44, 40, 36, 35, 34, 34, 33, 33, 33, 33, 33, 33, 34, 34, 35, 35, + 34, 34, 33, 36, 36, 35, 34, 33, 32, 32, 31, 29, 29, 30, 31, 31, + 32, 33, 34, 42, 39, 41, 32, 30, 19, 47, 139, 145, 206, 224, 214, 231, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 169, 177, 185, 166, 199, 230, 229, 172, 161, 121, + 93, 80, 55, 102, 95, 207, 224, 213, 212, 143, 115, 139, 132, 120, 143, 110, + 142, 109, 170, 106, 145, 86, 105, 130, 129, 97, 110, 80, 105, 88, 99, 90, + 85, 96, 96, 79, 93, 121, 126, 127, 118, 102, 83, 67, 56, 51, 51, 66, + 69, 70, 71, 64, 55, 56, 60, 54, 52, 51, 52, 52, 51, 48, 44, 40, + 37, 37, 36, 36, 35, 35, 34, 34, 35, 35, 35, 35, 34, 34, 33, 37, + 36, 35, 35, 34, 33, 32, 32, 29, 29, 30, 31, 31, 32, 33, 34, 35, + 42, 43, 32, 60, 71, 45, 67, 71, 109, 82, 213, 243, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 165, 158, 165, 157, 167, 181, 184, 194, 189, 160, 100, 66, 94, 97, + 153, 249, 218, 197, 166, 129, 139, 119, 114, 106, 128, 90, 94, 111, 112, 148, + 186, 120, 149, 127, 110, 107, 109, 92, 80, 90, 102, 97, 89, 99, 102, 89, + 98, 123, 128, 119, 117, 106, 83, 64, 61, 63, 65, 71, 75, 77, 77, 73, + 70, 68, 67, 61, 58, 57, 62, 63, 59, 54, 52, 56, 52, 48, 45, 41, + 41, 42, 43, 38, 39, 38, 33, 29, 29, 32, 36, 32, 29, 30, 34, 34, + 31, 30, 33, 26, 29, 32, 32, 32, 32, 35, 39, 53, 54, 57, 64, 71, + 74, 67, 59, 67, 55, 84, 88, 230, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 128, 163, + 177, 125, 122, 190, 212, 196, 192, 157, 86, 82, 109, 105, 176, 237, 237, 206, + 175, 134, 135, 117, 117, 112, 127, 92, 86, 128, 120, 157, 159, 100, 109, 117, + 104, 108, 117, 103, 88, 88, 94, 102, 90, 96, 96, 86, 99, 129, 141, 121, + 113, 94, 73, 65, 68, 70, 69, 77, 81, 83, 83, 79, 76, 75, 73, 72, + 66, 64, 67, 68, 65, 62, 62, 58, 53, 51, 47, 45, 44, 46, 47, 44, + 43, 43, 39, 36, 33, 35, 37, 37, 34, 34, 37, 36, 32, 31, 33, 41, + 38, 34, 33, 36, 40, 43, 45, 59, 61, 62, 62, 69, 78, 77, 69, 61, + 73, 84, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 141, 123, 142, 179, 187, + 215, 240, 194, 171, 121, 148, 146, 124, 216, 225, 236, 196, 171, 135, 127, 115, + 117, 111, 113, 126, 96, 113, 109, 116, 131, 94, 111, 111, 101, 107, 117, 106, + 95, 91, 91, 100, 93, 97, 95, 87, 96, 125, 141, 125, 110, 86, 69, 67, + 71, 73, 70, 79, 82, 84, 85, 81, 77, 76, 74, 77, 70, 66, 69, 69, + 68, 68, 67, 58, 54, 54, 50, 49, 48, 49, 48, 48, 47, 47, 45, 42, + 39, 40, 39, 41, 38, 38, 40, 39, 34, 33, 35, 37, 33, 30, 34, 43, + 52, 57, 58, 55, 65, 71, 66, 72, 85, 88, 81, 69, 88, 80, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 129, 124, 137, 153, 185, 198, 199, 219, 228, 162, + 175, 215, 187, 146, 245, 224, 212, 175, 161, 138, 124, 118, 119, 108, 95, 127, + 97, 91, 129, 94, 138, 90, 108, 117, 101, 103, 109, 101, 94, 95, 94, 95, + 96, 102, 103, 94, 94, 107, 119, 121, 104, 84, 70, 69, 72, 70, 70, 76, + 81, 84, 84, 80, 78, 75, 73, 75, 70, 68, 69, 71, 68, 67, 67, 60, + 58, 57, 55, 54, 52, 52, 51, 52, 51, 51, 48, 46, 44, 42, 41, 42, + 38, 39, 42, 41, 37, 36, 38, 28, 28, 30, 37, 46, 56, 64, 68, 58, + 75, 84, 76, 77, 83, 82, 70, 56, 56, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 152, 153, 148, 127, 130, 150, 172, 197, 193, 126, 190, 229, 218, 172, + 241, 224, 197, 166, 157, 143, 125, 126, 125, 117, 98, 132, 96, 82, 125, 91, + 137, 98, 107, 121, 106, 105, 108, 100, 95, 99, 97, 92, 98, 102, 103, 98, + 91, 93, 103, 102, 92, 80, 71, 69, 67, 68, 70, 77, 82, 84, 85, 81, + 78, 76, 74, 73, 69, 69, 72, 74, 70, 67, 66, 62, 61, 61, 59, 58, + 56, 55, 53, 53, 52, 51, 50, 49, 47, 45, 42, 39, 36, 37, 41, 42, + 39, 39, 41, 36, 38, 39, 39, 42, 53, 69, 81, 74, 85, 88, 74, 66, + 64, 60, 48, 57, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 170, + 162, 161, 162, 162, 208, 227, 151, 126, 195, 228, 242, 210, 229, 218, 200, 165, + 154, 141, 118, 122, 120, 122, 109, 139, 97, 96, 101, 100, 115, 109, 103, 115, + 107, 114, 119, 110, 103, 103, 96, 95, 97, 93, 91, 96, 92, 91, 104, 85, + 79, 74, 72, 68, 63, 66, 73, 79, 84, 87, 87, 83, 81, 79, 78, 75, + 72, 73, 78, 79, 73, 69, 69, 65, 64, 65, 64, 63, 59, 57, 55, 55, + 51, 50, 49, 49, 48, 47, 43, 38, 35, 37, 41, 43, 40, 40, 43, 42, + 43, 43, 41, 43, 57, 81, 98, 74, 75, 69, 55, 49, 48, 50, 50, 122, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 115, 165, 143, 146, 207, + 214, 172, 136, 155, 208, 239, 244, 230, 229, 212, 197, 157, 144, 138, 114, 119, + 109, 116, 107, 105, 89, 109, 107, 116, 110, 101, 84, 107, 105, 116, 121, 112, + 105, 105, 98, 97, 98, 86, 85, 97, 95, 90, 102, 86, 80, 74, 75, 71, + 66, 67, 73, 79, 84, 84, 85, 83, 80, 78, 78, 78, 74, 74, 78, 80, + 75, 73, 72, 69, 69, 71, 69, 67, 63, 59, 55, 57, 53, 48, 47, 49, + 51, 49, 46, 40, 37, 38, 42, 42, 40, 39, 42, 38, 42, 45, 47, 49, + 58, 71, 82, 65, 55, 49, 46, 45, 43, 50, 123, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 175, 150, 125, 157, 203, 210, 189, 154, 165, + 212, 244, 220, 224, 236, 210, 185, 149, 139, 142, 120, 125, 106, 111, 102, 99, + 100, 91, 95, 85, 109, 103, 111, 102, 103, 113, 117, 105, 102, 106, 102, 98, + 98, 87, 85, 102, 95, 85, 95, 99, 87, 79, 77, 75, 69, 68, 72, 76, + 81, 82, 82, 80, 78, 76, 75, 80, 75, 73, 74, 76, 74, 74, 76, 73, + 72, 73, 72, 70, 65, 60, 56, 58, 53, 49, 47, 49, 52, 51, 48, 43, + 40, 40, 43, 43, 40, 39, 41, 41, 46, 53, 57, 55, 49, 42, 38, 64, + 53, 48, 52, 50, 42, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 147, 138, 152, 189, 213, 185, 141, 170, 250, 224, 221, 247, + 217, 195, 179, 149, 130, 122, 126, 125, 113, 107, 111, 96, 98, 103, 106, 102, + 100, 99, 102, 104, 105, 107, 113, 116, 114, 104, 92, 93, 93, 92, 90, 92, + 95, 93, 84, 88, 89, 88, 81, 73, 68, 69, 74, 78, 82, 85, 85, 83, + 80, 77, 76, 81, 79, 77, 75, 76, 80, 84, 85, 74, 74, 75, 72, 69, + 63, 61, 60, 61, 63, 62, 55, 51, 51, 47, 41, 47, 42, 45, 45, 43, + 51, 51, 37, 58, 48, 42, 43, 43, 39, 39, 42, 47, 46, 45, 46, 44, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 187, 207, 217, 192, 174, 158, 196, 252, 236, 234, 240, 221, 205, 165, 139, + 147, 144, 124, 111, 109, 108, 103, 97, 99, 105, 107, 108, 107, 109, 108, 112, + 107, 103, 103, 109, 112, 111, 106, 97, 95, 93, 90, 92, 94, 91, 85, 86, + 89, 89, 86, 78, 72, 72, 73, 77, 79, 81, 80, 78, 77, 76, 78, 83, + 82, 80, 78, 79, 78, 82, 82, 78, 77, 76, 72, 68, 64, 65, 65, 60, + 60, 56, 51, 51, 52, 50, 43, 46, 39, 40, 43, 46, 58, 60, 47, 50, + 43, 39, 41, 43, 41, 40, 41, 41, 40, 40, 113, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 246, + 207, 193, 181, 220, 242, 229, 228, 221, 215, 214, 167, 131, 142, 139, 120, 109, + 108, 108, 99, 98, 99, 101, 104, 107, 107, 107, 104, 112, 106, 100, 101, 105, + 111, 116, 114, 101, 99, 96, 92, 92, 95, 91, 86, 85, 88, 89, 88, 81, + 74, 72, 72, 77, 78, 78, 77, 76, 77, 79, 82, 86, 85, 83, 81, 80, + 78, 79, 78, 79, 78, 76, 71, 67, 65, 68, 68, 61, 60, 54, 49, 50, + 51, 49, 41, 46, 36, 38, 42, 46, 58, 62, 51, 40, 36, 35, 38, 41, + 40, 40, 42, 37, 37, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 171, 216, 178, 186, 185, 233, + 230, 215, 226, 231, 219, 208, 175, 137, 125, 118, 123, 123, 113, 105, 105, 103, + 101, 100, 102, 105, 104, 102, 98, 105, 103, 103, 107, 110, 112, 113, 111, 103, + 100, 97, 91, 89, 92, 90, 86, 84, 86, 88, 84, 80, 75, 73, 72, 77, + 79, 80, 80, 80, 80, 83, 85, 85, 84, 83, 82, 81, 79, 78, 77, 77, + 76, 76, 72, 69, 66, 66, 67, 61, 58, 54, 51, 51, 53, 48, 39, 46, + 39, 43, 46, 43, 49, 53, 46, 36, 35, 36, 38, 40, 41, 41, 42, 38, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 181, 215, 191, 207, 197, 214, 189, 158, 188, 234, + 215, 177, 163, 153, 146, 140, 138, 131, 116, 106, 103, 105, 102, 103, 104, 107, + 107, 105, 101, 103, 103, 105, 107, 110, 109, 108, 105, 101, 102, 99, 91, 88, + 90, 88, 86, 88, 87, 86, 81, 78, 76, 76, 76, 74, 77, 82, 84, 83, + 83, 83, 83, 82, 82, 84, 83, 83, 82, 81, 79, 71, 73, 76, 74, 71, + 66, 64, 60, 55, 56, 55, 54, 56, 56, 51, 42, 43, 40, 48, 50, 39, + 37, 43, 41, 37, 39, 40, 39, 39, 40, 40, 40, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 150, 194, 208, 233, 217, 206, 161, 122, 160, 229, 227, 199, 205, 175, + 197, 198, 162, 127, 114, 106, 95, 98, 97, 99, 101, 103, 104, 105, 103, 107, + 105, 103, 101, 102, 104, 107, 107, 100, 102, 102, 95, 90, 91, 89, 87, 92, + 90, 87, 84, 82, 80, 82, 80, 73, 76, 82, 84, 84, 82, 81, 81, 82, + 81, 82, 82, 81, 82, 83, 81, 70, 72, 74, 74, 70, 65, 61, 57, 51, + 54, 58, 57, 57, 59, 58, 52, 42, 39, 47, 50, 38, 33, 39, 40, 39, + 43, 42, 38, 36, 37, 39, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 220, + 223, 229, 211, 155, 129, 134, 166, 194, 202, 200, 210, 191, 219, 220, 178, 133, + 115, 105, 95, 93, 94, 96, 95, 96, 96, 98, 101, 105, 104, 101, 98, 99, + 101, 105, 107, 99, 103, 104, 99, 94, 93, 92, 90, 90, 89, 88, 87, 86, + 84, 83, 80, 78, 79, 83, 84, 83, 82, 83, 84, 86, 84, 82, 80, 80, + 80, 83, 81, 74, 75, 75, 74, 69, 64, 61, 58, 55, 60, 63, 59, 55, + 57, 61, 60, 55, 42, 43, 45, 37, 34, 39, 38, 38, 42, 41, 34, 31, + 34, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 208, 231, 211, 171, 142, + 162, 237, 255, 229, 217, 221, 216, 201, 206, 203, 184, 149, 120, 105, 103, 97, + 99, 101, 99, 95, 94, 96, 99, 97, 99, 101, 101, 101, 100, 101, 102, 98, + 104, 107, 102, 97, 96, 96, 93, 86, 86, 86, 86, 86, 83, 79, 75, 85, + 84, 86, 85, 83, 84, 86, 89, 86, 84, 80, 77, 76, 77, 81, 81, 78, + 76, 76, 73, 67, 63, 61, 60, 65, 70, 68, 58, 51, 52, 58, 59, 69, + 49, 41, 42, 38, 37, 40, 36, 36, 41, 39, 31, 27, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 229, 215, 218, 187, 157, 142, 255, 255, 247, 223, + 223, 224, 214, 231, 223, 214, 179, 130, 116, 113, 92, 100, 95, 89, 87, 87, + 91, 93, 97, 88, 90, 93, 95, 97, 98, 98, 98, 101, 100, 99, 97, 94, + 93, 95, 95, 83, 86, 87, 81, 80, 84, 82, 77, 84, 76, 74, 82, 88, + 86, 81, 80, 84, 84, 81, 78, 80, 84, 81, 73, 79, 70, 70, 74, 66, + 52, 57, 71, 56, 64, 57, 57, 62, 49, 53, 83, 48, 41, 37, 38, 38, + 34, 30, 30, 42, 42, 41, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 198, 207, 204, 158, 152, 255, 255, 216, 172, 199, 218, 245, 228, 203, + 199, 194, 164, 124, 113, 114, 97, 98, 91, 89, 87, 89, 91, 93, 94, 100, + 99, 98, 97, 99, 99, 101, 102, 99, 99, 99, 96, 95, 93, 92, 92, 83, + 86, 85, 81, 79, 83, 80, 78, 82, 76, 75, 82, 86, 83, 80, 80, 82, + 84, 82, 79, 79, 81, 79, 73, 73, 67, 67, 69, 64, 56, 59, 69, 63, + 48, 61, 63, 49, 66, 78, 46, 47, 40, 36, 38, 38, 34, 32, 32, 39, + 39, 39, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 204, + 179, 166, 238, 255, 223, 166, 145, 185, 235, 224, 168, 203, 198, 189, 160, 122, + 110, 109, 98, 95, 92, 89, 88, 90, 92, 93, 93, 104, 102, 101, 97, 96, + 95, 96, 97, 98, 99, 97, 97, 97, 95, 92, 90, 85, 86, 84, 81, 80, + 82, 79, 78, 79, 79, 80, 84, 85, 81, 81, 83, 80, 85, 87, 84, 80, + 80, 79, 75, 70, 68, 67, 65, 64, 62, 65, 67, 57, 60, 53, 52, 71, + 77, 57, 35, 44, 38, 36, 38, 38, 35, 34, 36, 37, 110, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 190, 170, 174, 250, 234, + 193, 124, 111, 106, 230, 237, 199, 211, 204, 189, 157, 125, 111, 105, 99, 93, + 90, 89, 89, 92, 92, 92, 93, 101, 99, 99, 97, 95, 93, 91, 91, 98, + 98, 96, 97, 97, 96, 92, 89, 87, 86, 85, 81, 81, 80, 80, 79, 81, + 84, 86, 86, 84, 82, 84, 85, 83, 87, 88, 83, 77, 79, 80, 78, 71, + 71, 70, 65, 64, 69, 68, 65, 61, 63, 50, 57, 80, 60, 32, 43, 41, + 37, 36, 38, 39, 36, 36, 39, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 240, 184, 166, 206, 255, 181, 160, 144, 148, 123, + 222, 246, 221, 200, 194, 170, 143, 123, 111, 103, 103, 92, 91, 90, 91, 93, + 93, 93, 91, 98, 100, 104, 106, 104, 100, 97, 93, 99, 96, 95, 97, 98, + 97, 92, 89, 89, 86, 84, 82, 81, 79, 79, 81, 84, 89, 91, 88, 85, + 84, 87, 87, 86, 89, 87, 81, 75, 77, 81, 81, 71, 73, 74, 69, 68, + 70, 70, 65, 73, 50, 66, 77, 47, 36, 45, 37, 39, 36, 36, 39, 39, + 37, 38, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 212, 182, 174, 195, 167, 182, 121, 119, 103, 102, 141, 236, 247, 196, + 184, 152, 127, 118, 109, 97, 99, 94, 92, 90, 90, 92, 91, 92, 90, 95, + 98, 106, 109, 108, 104, 100, 96, 101, 96, 94, 94, 97, 97, 92, 89, 91, + 87, 84, 84, 81, 78, 78, 84, 87, 93, 95, 89, 86, 87, 89, 89, 86, + 87, 85, 77, 75, 77, 80, 77, 71, 71, 75, 76, 73, 69, 68, 66, 63, + 72, 75, 57, 34, 35, 43, 39, 38, 36, 37, 40, 39, 37, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 180, + 128, 150, 140, 141, 78, 74, 62, 74, 78, 202, 224, 197, 182, 142, 116, 116, + 108, 92, 94, 96, 94, 91, 89, 90, 90, 90, 89, 93, 96, 103, 106, 106, + 103, 100, 96, 101, 95, 92, 93, 96, 96, 93, 90, 92, 87, 83, 84, 81, + 77, 78, 85, 90, 95, 94, 88, 85, 88, 89, 87, 84, 84, 81, 77, 77, + 79, 77, 70, 66, 65, 74, 80, 78, 68, 66, 71, 65, 85, 60, 33, 45, + 43, 31, 45, 37, 36, 38, 40, 111, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 173, 210, 115, 113, 126, 83, + 63, 59, 71, 66, 80, 190, 201, 189, 173, 130, 107, 116, 109, 94, 99, 97, + 95, 91, 88, 89, 89, 90, 88, 97, 99, 103, 105, 105, 103, 101, 99, 102, + 96, 91, 91, 93, 95, 94, 90, 93, 87, 83, 85, 83, 77, 78, 86, 91, + 96, 93, 86, 86, 89, 90, 83, 80, 80, 79, 78, 80, 79, 74, 62, 59, + 58, 70, 83, 79, 65, 63, 74, 91, 52, 40, 46, 40, 42, 47, 37, 38, + 37, 39, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 202, 219, 133, 105, 101, 73, 50, 81, 70, 129, + 77, 176, 226, 175, 159, 138, 125, 116, 105, 95, 90, 99, 96, 92, 91, 91, + 87, 83, 78, 90, 95, 100, 107, 109, 107, 105, 101, 98, 91, 91, 95, 96, + 92, 93, 98, 94, 92, 90, 86, 84, 84, 84, 85, 92, 94, 92, 91, 91, + 88, 88, 85, 88, 82, 80, 81, 77, 67, 63, 63, 72, 54, 57, 71, 74, + 77, 86, 88, 56, 52, 48, 44, 43, 42, 39, 38, 38, 36, 110, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 207, 219, 173, 153, 126, 81, 87, 112, 150, 177, 111, 200, 203, 177, + 154, 126, 111, 107, 104, 101, 98, 93, 92, 91, 94, 95, 95, 91, 88, 87, + 92, 97, 102, 104, 105, 102, 99, 96, 90, 90, 94, 94, 91, 90, 94, 96, + 94, 91, 88, 85, 84, 83, 84, 93, 95, 93, 92, 90, 89, 88, 86, 87, + 81, 78, 78, 72, 63, 57, 56, 59, 48, 50, 58, 68, 83, 88, 77, 53, + 49, 44, 41, 39, 40, 38, 38, 112, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 196, + 206, 225, 211, 194, 180, 182, 206, 192, 160, 212, 225, 195, 165, 128, 110, 106, + 105, 99, 93, 87, 87, 88, 91, 92, 93, 89, 87, 86, 88, 91, 96, 98, + 99, 99, 97, 91, 88, 88, 91, 91, 88, 87, 89, 93, 92, 91, 89, 89, + 88, 88, 90, 94, 96, 94, 93, 91, 90, 87, 86, 82, 76, 74, 72, 67, + 58, 54, 52, 57, 50, 49, 50, 60, 78, 77, 53, 51, 48, 43, 40, 38, + 39, 39, 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 181, 171, 204, + 188, 219, 224, 207, 218, 180, 224, 200, 169, 132, 115, 111, 107, 94, 82, 88, + 88, 88, 88, 88, 85, 82, 80, 84, 86, 87, 89, 91, 93, 94, 95, 89, + 89, 89, 90, 90, 88, 86, 86, 87, 87, 88, 90, 92, 93, 95, 97, 96, + 96, 96, 95, 92, 91, 88, 85, 73, 70, 69, 66, 63, 58, 55, 54, 56, + 49, 50, 51, 55, 65, 63, 43, 45, 44, 45, 43, 42, 41, 111, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 224, + 237, 160, 206, 189, 159, 124, 108, 107, 104, 92, 82, 92, 92, 92, 89, 87, + 84, 83, 82, 82, 82, 84, 86, 87, 90, 92, 94, 90, 91, 91, 90, 89, + 89, 88, 87, 85, 86, 89, 92, 94, 96, 97, 98, 97, 97, 96, 94, 92, + 90, 87, 85, 73, 71, 67, 62, 60, 58, 54, 53, 48, 38, 46, 59, 56, + 54, 57, 54, 38, 41, 45, 46, 44, 111, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 222, 196, 210, 190, + 162, 128, 108, 102, 97, 91, 87, 85, 87, 86, 84, 81, 80, 81, 84, 82, + 81, 82, 85, 86, 89, 92, 94, 91, 92, 91, 88, 88, 91, 91, 89, 89, + 90, 92, 93, 93, 93, 93, 92, 96, 96, 94, 93, 92, 89, 86, 83, 76, + 74, 70, 61, 55, 54, 51, 45, 49, 42, 53, 64, 53, 42, 48, 55, 32, + 38, 43, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 250, 228, 232, 198, 186, 166, 137, 116, 103, + 92, 84, 84, 80, 81, 79, 76, 73, 75, 80, 84, 80, 82, 82, 84, 86, + 88, 90, 94, 89, 91, 89, 84, 85, 91, 93, 91, 90, 91, 92, 93, 93, + 92, 90, 89, 95, 95, 93, 91, 89, 86, 84, 81, 76, 74, 69, 59, 52, + 51, 48, 43, 50, 50, 61, 62, 47, 40, 45, 44, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 232, 232, 184, 159, 148, 134, 121, 108, 97, 89, 87, 85, + 84, 82, 77, 73, 76, 82, 87, 81, 83, 84, 86, 87, 89, 93, 92, 88, + 89, 88, 81, 82, 90, 93, 92, 87, 88, 90, 91, 93, 92, 92, 91, 95, + 95, 93, 91, 89, 86, 84, 79, 72, 72, 66, 55, 52, 52, 50, 45, 40, + 49, 60, 53, 42, 46, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 248, 241, 166, 170, 150, 128, 120, 113, 103, 98, 96, 89, 86, 85, 81, 78, + 75, 75, 76, 81, 82, 84, 87, 89, 90, 92, 92, 87, 84, 83, 81, 80, + 81, 83, 84, 88, 90, 95, 95, 90, 84, 88, 98, 95, 94, 90, 88, 87, + 89, 88, 84, 72, 66, 61, 60, 59, 56, 52, 46, 38, 47, 67, 44, 118, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 250, 247, 193, + 164, 133, 122, 119, 114, 110, 104, 87, 83, 82, 82, 78, 75, 74, 73, 80, + 81, 83, 87, 88, 91, 92, 91, 85, 81, 81, 80, 79, 80, 82, 85, 84, + 85, 90, 92, 87, 82, 85, 93, 95, 92, 90, 90, 88, 80, 80, 84, 62, + 57, 54, 51, 51, 49, 47, 43, 48, 118, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 255, 194, 163, 132, 121, 118, + 112, 106, 100, 90, 85, 84, 83, 81, 78, 76, 74, 79, 80, 82, 83, 85, + 88, 90, 88, 81, 79, 78, 77, 77, 79, 81, 85, 87, 86, 88, 91, 89, + 85, 87, 94, 93, 90, 91, 92, 86, 74, 74, 81, 57, 55, 54, 51, 49, + 46, 48, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 230, 244, 160, 144, 131, 128, 126, 115, 106, 101, 98, + 92, 88, 85, 83, 82, 81, 80, 79, 79, 80, 81, 84, 85, 86, 86, 79, + 77, 76, 75, 76, 78, 82, 83, 86, 85, 85, 88, 90, 86, 87, 90, 89, + 90, 90, 87, 85, 83, 79, 73, 53, 55, 54, 51, 47, 47, 120, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 237, 248, 119, 118, 126, 137, 136, 123, 114, 111, 107, 98, 90, 85, 85, + 86, 87, 87, 80, 80, 81, 79, 82, 83, 83, 81, 78, 74, 75, 74, 75, + 77, 80, 82, 78, 76, 77, 80, 83, 78, 81, 84, 83, 91, 89, 81, 85, + 95, 85, 63, 49, 49, 48, 44, 42, 113, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 244, 112, + 105, 108, 121, 126, 119, 111, 108, 111, 103, 94, 88, 88, 87, 88, 86, 83, + 83, 80, 80, 80, 79, 79, 78, 76, 75, 73, 72, 72, 76, 78, 80, 75, + 75, 77, 80, 80, 77, 78, 83, 83, 87, 84, 78, 87, 99, 86, 59, 51, + 49, 45, 41, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 235, 173, 135, 102, 98, 111, + 114, 108, 100, 114, 108, 99, 95, 95, 93, 88, 84, 86, 85, 82, 80, 79, + 77, 77, 75, 76, 75, 72, 71, 71, 73, 75, 76, 73, 77, 80, 82, 80, + 76, 80, 87, 86, 80, 79, 85, 92, 88, 75, 62, 59, 53, 46, 113, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 246, 202, 255, 187, 116, 94, 112, 123, 115, 103, 116, + 113, 107, 103, 103, 99, 91, 83, 88, 85, 84, 81, 78, 76, 75, 72, 77, + 73, 73, 71, 70, 71, 74, 75, 69, 72, 79, 81, 76, 71, 77, 86, 88, + 74, 73, 91, 95, 76, 63, 65, 63, 53, 115, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 215, 228, 235, 217, 252, 233, 176, 103, 99, 112, 90, 106, 104, + 112, 101, 98, 88, 86, 85, 83, 80, 79, 76, 75, 81, 75, 69, 64, 63, + 65, 72, 75, 78, 77, 75, 74, 79, 83, 82, 80, 80, 83, 90, 96, 89, + 73, 67, 68, 60, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 239, 243, 231, 201, 112, 104, 103, 111, 100, 98, 95, 105, 91, + 90, 86, 84, 82, 79, 78, 75, 75, 72, 70, 69, 69, 70, 74, 75, 77, + 75, 72, 70, 74, 77, 78, 76, 75, 88, 94, 84, 72, 69, 69, 63, 62, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 247, 238, 239, 164, 101, 108, 107, 99, 92, 92, 105, 94, 92, 88, 85, 83, + 81, 79, 77, 71, 70, 73, 74, 74, 73, 72, 71, 79, 77, 77, 75, 75, + 76, 78, 78, 78, 99, 99, 72, 58, 66, 68, 58, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 222, 231, + 105, 99, 96, 101, 102, 97, 97, 98, 95, 92, 87, 85, 81, 80, 77, 74, + 74, 74, 74, 72, 69, 68, 66, 76, 75, 78, 79, 76, 74, 76, 80, 93, + 102, 97, 70, 59, 65, 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 230, 255, 105, 89, 93, 104, + 108, 98, 88, 98, 95, 93, 90, 87, 82, 83, 79, 79, 76, 75, 74, 73, + 72, 73, 73, 68, 69, 74, 78, 74, 69, 72, 79, 109, 96, 83, 72, 68, + 62, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 231, 233, 111, 90, 101, 101, 104, 98, 87, 97, + 96, 92, 90, 88, 85, 83, 80, 78, 75, 75, 75, 76, 78, 82, 84, 68, + 68, 74, 79, 75, 70, 78, 90, 114, 86, 69, 72, 134, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 221, 226, 133, 91, 109, 99, 106, 106, 92, 95, 94, 93, 89, 88, + 86, 85, 83, 74, 72, 75, 77, 79, 81, 84, 85, 75, 73, 77, 80, 77, + 75, 91, 107, 109, 80, 64, 71, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 239, + 159, 90, 108, 98, 116, 118, 99, 96, 95, 93, 92, 89, 86, 85, 81, 71, + 70, 72, 76, 77, 78, 78, 77, 77, 73, 73, 75, 70, 71, 91, 115, 103, + 81, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 241, 89, 119, 127, + 96, 118, 105, 95, 110, 97, 100, 91, 79, 90, 77, 76, 72, 80, 76, 62, + 77, 92, 77, 77, 86, 82, 63, 68, 89, 98, 86, 87, 77, 136, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 221, 255, 133, 113, 102, 115, 109, 120, 109, + 112, 97, 104, 98, 80, 85, 74, 79, 60, 72, 89, 83, 79, 83, 78, 83, + 64, 75, 103, 73, 79, 83, 80, 61, 134, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 229, 205, 255, 139, 100, 138, 117, 111, 118, 110, 93, 101, 99, + 86, 89, 83, 82, 60, 64, 77, 77, 75, 78, 77, 77, 69, 78, 81, 79, + 86, 91, 73, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 234, 245, 150, 116, 128, 112, 115, 108, 96, 91, 87, 83, 85, 80, 79, + 81, 82, 73, 72, 84, 86, 75, 89, 87, 81, 43, 88, 76, 73, 120, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 212, 223, 255, + 101, 106, 131, 110, 116, 116, 100, 90, 93, 89, 80, 72, 86, 91, 80, 77, + 81, 79, 74, 75, 63, 78, 91, 95, 70, 63, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 210, 233, 215, 104, 117, 91, + 98, 110, 97, 89, 94, 85, 83, 88, 86, 80, 79, 82, 72, 80, 106, 81, + 99, 133, 167, 74, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 237, 229, 220, 209, 117, 124, 102, 105, 94, 88, + 88, 82, 100, 86, 85, 77, 78, 90, 87, 96, 125, 155, 200, 195, 146, 64, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 206, 218, 231, 175, 155, 139, 126, 118, 114, 152, 155, + 185, 194, 197, 218, 223, 212, 211, 195, 231, 174, 62, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, + 60, 49, 236, 61, 69, 111, 73, 75, 67, 64, 95, 84, 255, 121, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 192, 86, 70, 76, 70, 75, 80, 77, 90, 75, 70, 55, 71, 77, 151, 54, + 66, 92, 86, 126, 78, 62, 110, 130, 169, 82, 156, 253, 245, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 111, 136, 123, 105, 78, 95, + 76, 67, 104, 75, 77, 65, 86, 87, 76, 77, 93, 85, 71, 68, 134, 67, + 132, 151, 135, 104, 108, 144, 153, 188, 173, 225, 218, 242, 246, 234, 234, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 192, 72, 41, 148, 181, 130, 88, 87, 63, 55, 105, 113, 61, 75, + 67, 82, 121, 82, 53, 119, 135, 135, 115, 66, 198, 131, 155, 150, 182, 169, + 141, 112, 102, 177, 234, 237, 243, 240, 243, 240, 248, 255, 208, 196, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 98, 84, 56, + 166, 146, 156, 120, 98, 107, 129, 117, 81, 82, 155, 110, 93, 105, 160, 157, + 184, 237, 158, 173, 173, 147, 179, 157, 162, 198, 165, 191, 208, 176, 157, 164, + 175, 178, 213, 185, 212, 234, 223, 213, 199, 163, 156, 115, 91, 139, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 172, 150, 146, 172, 175, 166, 199, 200, 143, + 206, 192, 137, 132, 164, 160, 201, 167, 235, 208, 203, 199, 180, 181, 174, 196, + 147, 142, 194, 159, 148, 208, 188, 145, 139, 156, 183, 178, 141, 186, 192, 200, + 201, 219, 202, 178, 183, 180, 179, 121, 73, 89, 81, 143, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 185, 150, 179, 205, 175, 128, 171, 168, 209, 210, 148, 141, 146, 124, + 211, 233, 176, 188, 230, 156, 156, 181, 167, 152, 211, 129, 198, 166, 179, 189, + 197, 165, 157, 179, 136, 144, 167, 156, 124, 192, 188, 200, 163, 158, 165, 167, + 151, 115, 106, 104, 115, 117, 65, 67, 101, 102, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 121, 186, 156, + 184, 228, 214, 221, 188, 183, 182, 177, 189, 166, 160, 166, 181, 164, 213, 203, + 180, 168, 210, 157, 173, 176, 157, 194, 213, 214, 190, 202, 172, 159, 122, 138, + 124, 116, 139, 132, 121, 140, 126, 149, 165, 174, 155, 149, 138, 111, 119, 99, + 124, 109, 90, 81, 81, 80, 45, 118, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 227, 131, 196, 97, 129, 174, 241, 234, 212, + 190, 180, 217, 171, 181, 157, 195, 191, 169, 176, 215, 225, 151, 188, 122, 146, + 203, 156, 203, 215, 179, 150, 170, 193, 184, 155, 180, 144, 118, 190, 131, 88, + 123, 114, 86, 143, 166, 122, 88, 154, 87, 92, 142, 120, 87, 208, 72, 71, + 89, 78, 81, 90, 106, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 133, 141, 210, 182, 116, 223, 204, 244, 222, 221, 208, 243, 188, 178, + 189, 195, 217, 206, 166, 200, 244, 175, 201, 170, 170, 132, 152, 226, 194, 159, + 177, 132, 164, 178, 150, 186, 213, 184, 142, 168, 130, 98, 94, 70, 104, 132, + 122, 108, 98, 95, 92, 118, 93, 101, 117, 137, 101, 134, 72, 70, 66, 63, + 87, 69, 102, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 106, 108, 140, + 141, 216, 226, 215, 245, 211, 246, 213, 223, 210, 191, 182, 209, 229, 211, 224, + 222, 232, 185, 195, 181, 180, 87, 201, 218, 150, 157, 153, 145, 122, 130, 144, + 145, 94, 111, 172, 174, 126, 103, 113, 102, 100, 108, 92, 99, 90, 89, 63, + 77, 87, 63, 129, 72, 97, 132, 102, 60, 77, 71, 76, 74, 84, 82, 80, + 69, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 221, 139, 108, 149, 177, 199, 166, 176, 181, 199, + 224, 224, 245, 236, 193, 186, 207, 233, 225, 233, 219, 204, 196, 220, 212, 242, + 140, 148, 252, 186, 166, 192, 154, 152, 137, 179, 112, 151, 137, 131, 168, 123, + 157, 123, 83, 113, 107, 123, 91, 78, 95, 99, 97, 65, 52, 56, 68, 137, + 90, 72, 107, 102, 83, 60, 106, 73, 78, 59, 92, 44, 94, 88, 76, 129, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 155, 131, 119, 90, 122, 165, 236, 186, 217, 213, 240, 206, 238, 255, 218, + 213, 215, 218, 210, 239, 236, 195, 170, 225, 221, 170, 211, 156, 199, 206, 181, + 205, 186, 205, 194, 213, 143, 173, 145, 164, 137, 121, 129, 114, 188, 113, 128, + 130, 104, 89, 104, 91, 118, 103, 58, 46, 70, 66, 98, 94, 45, 95, 95, + 86, 79, 76, 73, 63, 94, 81, 80, 86, 102, 70, 93, 45, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 231, 201, 123, 75, + 177, 126, 216, 227, 179, 184, 204, 215, 218, 232, 242, 196, 241, 213, 228, 218, + 205, 206, 235, 235, 250, 202, 177, 166, 213, 241, 135, 176, 172, 233, 219, 174, + 162, 187, 151, 192, 134, 170, 107, 107, 138, 142, 144, 166, 127, 170, 51, 98, + 99, 100, 60, 55, 59, 57, 56, 76, 58, 89, 97, 55, 82, 97, 83, 81, + 89, 86, 107, 65, 108, 80, 76, 78, 87, 82, 128, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 119, 171, 184, 200, 96, 78, 161, 214, 156, + 247, 148, 218, 177, 209, 241, 195, 224, 197, 209, 215, 218, 233, 242, 221, 221, + 245, 233, 239, 242, 222, 173, 207, 198, 212, 198, 213, 189, 131, 128, 107, 115, + 120, 142, 89, 102, 84, 126, 121, 143, 166, 121, 62, 70, 86, 75, 57, 61, + 70, 36, 56, 68, 79, 117, 68, 84, 98, 82, 134, 91, 78, 85, 67, 68, + 77, 65, 64, 62, 114, 112, 98, 140, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 239, 122, 173, 149, 92, 131, 158, 172, 204, 216, 142, 156, 188, 211, + 209, 213, 224, 198, 183, 216, 195, 218, 193, 198, 185, 219, 210, 199, 224, 219, + 203, 245, 243, 168, 223, 146, 214, 171, 207, 142, 199, 78, 90, 159, 136, 112, + 136, 86, 184, 164, 90, 118, 99, 71, 46, 78, 123, 59, 75, 55, 62, 67, + 51, 56, 70, 95, 75, 119, 77, 91, 87, 79, 80, 72, 92, 52, 63, 39, + 71, 55, 42, 63, 68, 51, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 171, 139, 134, + 165, 142, 92, 203, 151, 169, 215, 201, 195, 172, 208, 201, 218, 183, 194, 213, + 193, 187, 199, 197, 212, 182, 184, 206, 206, 182, 226, 223, 214, 207, 181, 203, + 141, 183, 123, 235, 111, 129, 166, 76, 133, 125, 123, 167, 139, 152, 152, 126, + 105, 81, 82, 54, 62, 59, 74, 62, 70, 57, 59, 55, 50, 61, 78, 82, + 91, 103, 108, 97, 72, 75, 89, 82, 76, 69, 52, 51, 79, 61, 51, 65, + 62, 62, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 193, 149, 180, 88, 149, 172, 207, 215, 199, + 211, 179, 213, 194, 205, 191, 201, 203, 190, 210, 232, 189, 179, 210, 177, 187, + 182, 215, 144, 178, 165, 191, 167, 163, 187, 148, 149, 164, 145, 228, 135, 215, + 206, 93, 211, 95, 89, 177, 187, 169, 144, 111, 155, 100, 71, 82, 48, 52, + 55, 60, 62, 65, 61, 60, 57, 54, 46, 52, 61, 58, 60, 66, 66, 56, + 41, 56, 78, 72, 68, 78, 83, 65, 74, 52, 62, 63, 62, 88, 70, 91, + 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 192, 110, 195, 170, 163, 168, 208, 229, 230, 194, 209, 146, 228, 208, + 178, 173, 202, 213, 174, 185, 187, 156, 195, 246, 184, 192, 167, 234, 200, 240, + 166, 170, 169, 184, 146, 129, 133, 117, 134, 152, 129, 213, 188, 143, 185, 106, + 48, 177, 153, 163, 108, 139, 156, 71, 86, 51, 50, 50, 47, 59, 49, 66, + 54, 63, 58, 69, 61, 65, 68, 60, 58, 60, 56, 57, 45, 58, 78, 71, + 60, 63, 70, 65, 53, 40, 68, 62, 62, 100, 73, 82, 73, 72, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 102, 73, + 222, 176, 217, 253, 154, 227, 235, 197, 219, 164, 201, 186, 188, 198, 187, 187, + 215, 223, 177, 156, 168, 198, 183, 168, 214, 172, 193, 164, 193, 113, 165, 145, + 85, 83, 108, 99, 136, 106, 171, 181, 194, 169, 149, 154, 147, 156, 172, 112, + 131, 150, 164, 82, 54, 63, 45, 46, 44, 52, 48, 58, 54, 61, 60, 63, + 57, 62, 65, 59, 60, 63, 57, 48, 46, 57, 77, 90, 91, 84, 74, 70, + 54, 58, 81, 81, 83, 99, 94, 77, 76, 72, 62, 138, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 195, 60, 183, 205, 159, 232, 239, 223, + 223, 194, 191, 227, 196, 177, 167, 161, 181, 200, 185, 207, 175, 167, 176, 220, + 195, 201, 239, 198, 193, 175, 140, 170, 128, 113, 127, 136, 130, 65, 86, 80, + 88, 72, 139, 167, 147, 129, 106, 123, 90, 127, 59, 69, 125, 150, 120, 82, + 39, 51, 38, 43, 47, 41, 52, 45, 58, 55, 61, 52, 49, 55, 58, 54, + 59, 64, 58, 45, 59, 66, 72, 91, 106, 100, 86, 72, 60, 71, 69, 83, + 85, 67, 102, 82, 77, 58, 63, 65, 138, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 221, 107, 110, 94, 123, 211, 162, 191, 185, 231, 181, 196, 200, 210, 219, + 154, 172, 169, 180, 175, 173, 191, 201, 208, 233, 176, 174, 199, 239, 228, 217, + 173, 147, 194, 153, 128, 137, 114, 131, 103, 62, 72, 83, 86, 66, 167, 129, + 133, 133, 88, 191, 95, 115, 88, 50, 73, 121, 53, 65, 61, 40, 48, 40, + 47, 36, 52, 39, 58, 49, 57, 54, 51, 55, 55, 51, 57, 63, 56, 56, + 79, 80, 67, 72, 82, 85, 87, 80, 76, 76, 62, 77, 75, 52, 93, 62, + 66, 59, 82, 75, 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 66, 86, 190, + 159, 232, 202, 252, 207, 225, 239, 207, 191, 230, 181, 183, 189, 198, 165, 190, + 206, 172, 187, 206, 132, 184, 215, 226, 190, 203, 207, 163, 154, 134, 119, 102, + 112, 188, 79, 139, 67, 84, 76, 85, 90, 62, 155, 99, 92, 101, 103, 88, + 80, 37, 41, 37, 63, 48, 43, 59, 39, 74, 43, 40, 42, 39, 44, 42, + 48, 47, 49, 47, 44, 47, 45, 40, 49, 57, 49, 44, 61, 63, 64, 75, + 77, 80, 98, 95, 101, 85, 94, 96, 81, 87, 85, 63, 57, 51, 51, 46, + 60, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 74, 69, 79, 110, 157, 154, 243, 246, 236, + 209, 203, 239, 183, 178, 178, 208, 199, 210, 174, 161, 187, 172, 126, 202, 180, + 162, 204, 169, 178, 170, 174, 153, 118, 143, 123, 117, 138, 105, 176, 71, 109, + 82, 86, 77, 76, 74, 102, 87, 73, 99, 79, 54, 59, 57, 44, 48, 56, + 31, 50, 47, 34, 47, 47, 41, 40, 35, 45, 34, 48, 37, 47, 43, 49, + 47, 50, 49, 46, 58, 68, 62, 49, 50, 49, 70, 93, 80, 68, 87, 80, + 96, 72, 115, 104, 75, 109, 58, 84, 64, 65, 53, 66, 61, 67, 117, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 57, 63, 59, 90, 99, 179, 217, 228, 239, 202, 210, 184, 176, 217, + 176, 162, 174, 176, 186, 181, 175, 158, 144, 176, 159, 181, 150, 181, 122, 134, + 221, 137, 172, 161, 109, 80, 96, 98, 97, 102, 78, 88, 67, 84, 80, 72, + 81, 72, 71, 73, 66, 56, 53, 51, 49, 45, 43, 34, 41, 41, 34, 34, + 41, 43, 38, 41, 46, 35, 47, 34, 48, 40, 47, 49, 50, 50, 48, 44, + 41, 40, 40, 37, 69, 68, 65, 62, 57, 71, 74, 81, 69, 73, 101, 109, + 77, 57, 75, 107, 95, 72, 58, 71, 54, 53, 95, 128, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 75, 62, + 113, 60, 181, 190, 159, 230, 210, 226, 197, 161, 164, 185, 171, 185, 197, 149, + 231, 182, 162, 199, 190, 108, 156, 133, 169, 120, 180, 159, 147, 181, 152, 204, + 145, 97, 89, 44, 70, 134, 65, 89, 67, 73, 50, 69, 92, 56, 70, 57, + 55, 51, 49, 44, 39, 37, 36, 35, 39, 40, 36, 33, 34, 34, 33, 43, + 40, 24, 38, 35, 51, 41, 40, 50, 49, 47, 47, 47, 46, 44, 43, 61, + 79, 65, 57, 51, 44, 59, 67, 55, 84, 91, 82, 95, 112, 108, 96, 99, + 103, 80, 65, 96, 93, 92, 67, 71, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 46, 52, 74, 57, 97, 125, 171, 153, + 216, 217, 229, 209, 176, 160, 193, 187, 173, 166, 147, 182, 157, 184, 176, 150, + 112, 105, 163, 189, 191, 152, 130, 153, 200, 146, 157, 119, 150, 96, 90, 84, + 68, 103, 77, 62, 91, 89, 63, 71, 67, 43, 57, 42, 47, 50, 47, 40, + 36, 35, 37, 32, 33, 36, 40, 38, 35, 38, 43, 37, 42, 39, 47, 39, + 46, 43, 47, 48, 45, 43, 44, 47, 48, 47, 45, 68, 75, 56, 51, 48, + 37, 50, 60, 83, 93, 92, 87, 89, 86, 88, 101, 66, 79, 113, 116, 41, + 84, 55, 129, 107, 73, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 193, 71, 68, 42, 56, 66, 109, 138, 114, 133, 215, 207, 214, 205, + 180, 147, 172, 166, 177, 174, 158, 179, 140, 179, 138, 154, 125, 144, 123, 155, + 183, 157, 149, 128, 132, 176, 119, 132, 96, 73, 101, 76, 58, 98, 75, 69, + 124, 104, 88, 63, 34, 54, 37, 39, 44, 45, 41, 37, 38, 38, 36, 33, + 29, 31, 39, 38, 34, 38, 49, 34, 38, 38, 42, 38, 39, 37, 38, 46, + 45, 44, 44, 46, 48, 50, 51, 48, 53, 40, 50, 55, 42, 49, 57, 80, + 66, 66, 87, 87, 61, 71, 116, 156, 113, 112, 93, 90, 55, 88, 72, 98, + 58, 60, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 67, 77, + 72, 45, 68, 94, 95, 98, 107, 162, 205, 167, 219, 191, 199, 160, 165, 166, + 173, 153, 137, 165, 140, 129, 193, 120, 101, 133, 194, 174, 174, 194, 123, 149, + 125, 105, 152, 169, 80, 57, 80, 81, 81, 84, 81, 118, 122, 113, 83, 36, + 38, 64, 33, 41, 42, 38, 32, 33, 38, 37, 32, 39, 31, 28, 34, 35, + 33, 38, 48, 61, 49, 39, 36, 48, 51, 50, 45, 45, 47, 47, 45, 43, + 44, 50, 55, 34, 40, 30, 45, 55, 44, 49, 54, 53, 65, 69, 69, 71, + 68, 75, 94, 89, 70, 144, 74, 50, 66, 73, 72, 60, 41, 71, 162, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 59, 60, 66, 75, 65, 68, 116, 130, + 160, 77, 187, 231, 210, 202, 217, 189, 194, 142, 118, 117, 126, 134, 139, 139, + 175, 122, 97, 164, 139, 159, 197, 203, 202, 208, 182, 195, 176, 234, 203, 143, + 114, 92, 74, 94, 90, 53, 86, 114, 90, 139, 90, 22, 48, 52, 48, 52, + 51, 44, 37, 37, 45, 43, 33, 36, 30, 28, 36, 45, 51, 56, 60, 61, + 54, 52, 40, 47, 47, 62, 68, 45, 45, 43, 39, 36, 37, 42, 47, 41, + 46, 31, 36, 45, 38, 46, 49, 52, 71, 74, 66, 65, 62, 57, 60, 87, + 125, 101, 141, 66, 75, 62, 25, 50, 44, 68, 94, 122, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 191, 66, 60, 90, 110, 88, 103, 156, 217, 192, 178, 227, 239, + 243, 190, 196, 133, 132, 134, 135, 125, 109, 130, 125, 112, 144, 134, 216, 158, + 181, 153, 199, 114, 231, 203, 197, 185, 121, 165, 119, 169, 128, 127, 101, 52, + 60, 81, 74, 70, 86, 132, 104, 40, 38, 54, 57, 58, 62, 57, 47, 43, + 48, 46, 36, 33, 30, 30, 37, 52, 66, 67, 62, 43, 36, 45, 40, 63, + 59, 67, 60, 58, 51, 42, 38, 41, 43, 43, 41, 46, 57, 38, 35, 39, + 36, 44, 44, 43, 45, 53, 72, 83, 66, 57, 70, 78, 71, 89, 93, 83, + 61, 70, 50, 52, 45, 48, 44, 40, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 64, 67, + 73, 65, 123, 161, 126, 132, 168, 237, 195, 187, 230, 239, 189, 221, 182, 177, + 139, 153, 152, 113, 82, 131, 126, 97, 117, 176, 138, 209, 173, 161, 168, 103, + 163, 164, 212, 198, 178, 184, 163, 146, 138, 97, 93, 103, 91, 92, 96, 57, + 113, 81, 94, 64, 24, 81, 54, 54, 63, 63, 51, 42, 42, 41, 32, 37, + 35, 34, 36, 49, 62, 55, 39, 73, 39, 37, 61, 129, 132, 100, 46, 80, + 65, 51, 48, 56, 60, 55, 47, 42, 59, 44, 39, 43, 41, 47, 42, 45, + 51, 58, 76, 89, 79, 65, 68, 79, 113, 78, 66, 52, 52, 113, 80, 57, + 56, 53, 36, 60, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 187, 73, 57, 60, 81, 51, 64, 122, 156, + 195, 226, 203, 243, 220, 207, 235, 236, 208, 194, 197, 209, 185, 117, 122, 124, + 103, 111, 115, 109, 195, 242, 183, 202, 171, 169, 165, 162, 197, 214, 184, 186, + 157, 150, 144, 153, 112, 116, 98, 72, 63, 89, 70, 88, 72, 77, 44, 77, + 61, 65, 33, 48, 43, 37, 35, 38, 41, 42, 41, 34, 36, 38, 39, 41, + 50, 63, 74, 35, 84, 52, 84, 163, 127, 118, 72, 97, 128, 116, 108, 91, + 88, 62, 68, 87, 78, 71, 56, 38, 38, 45, 41, 51, 65, 86, 86, 85, + 76, 53, 60, 56, 53, 84, 77, 58, 99, 84, 93, 59, 53, 66, 48, 43, + 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 187, 71, 43, 90, 52, 71, 102, 81, 177, 241, 236, 222, 232, 214, + 240, 228, 237, 203, 214, 203, 205, 148, 118, 178, 107, 95, 104, 82, 100, 115, + 145, 200, 202, 171, 116, 145, 142, 161, 160, 171, 188, 188, 160, 109, 95, 125, + 88, 99, 91, 76, 68, 86, 61, 85, 69, 65, 41, 67, 64, 69, 47, 52, + 48, 42, 38, 37, 36, 34, 35, 28, 32, 33, 34, 34, 40, 49, 57, 31, + 117, 98, 210, 127, 169, 164, 189, 143, 127, 121, 94, 77, 112, 143, 112, 79, + 76, 80, 77, 66, 68, 69, 59, 76, 70, 73, 64, 58, 50, 46, 76, 46, + 69, 74, 67, 93, 125, 84, 115, 94, 104, 76, 35, 48, 53, 27, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 36, 104, + 72, 69, 76, 72, 132, 89, 190, 243, 218, 210, 249, 210, 204, 229, 186, 232, + 207, 213, 165, 198, 140, 109, 105, 114, 132, 84, 63, 159, 195, 179, 156, 148, + 130, 135, 129, 154, 164, 172, 153, 113, 133, 101, 96, 98, 66, 77, 76, 73, + 68, 81, 57, 74, 66, 54, 44, 53, 62, 59, 47, 51, 50, 46, 42, 37, + 33, 32, 33, 28, 32, 35, 36, 36, 40, 45, 51, 78, 67, 188, 149, 188, + 181, 160, 146, 149, 143, 134, 103, 124, 114, 106, 77, 72, 72, 81, 85, 80, + 82, 82, 70, 72, 59, 60, 56, 55, 53, 63, 109, 53, 26, 53, 70, 57, + 109, 107, 93, 107, 142, 87, 35, 55, 60, 44, 46, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 85, 104, 110, 82, 57, 79, + 139, 152, 220, 236, 214, 219, 236, 224, 208, 203, 197, 194, 199, 198, 210, 186, + 83, 163, 113, 108, 86, 118, 184, 159, 162, 155, 183, 189, 158, 116, 155, 191, + 142, 159, 182, 151, 123, 70, 74, 84, 56, 64, 61, 64, 61, 78, 63, 68, + 72, 60, 61, 48, 56, 44, 40, 42, 44, 45, 43, 38, 35, 35, 37, 32, + 35, 37, 38, 40, 45, 50, 56, 90, 188, 181, 186, 178, 183, 142, 105, 117, + 104, 82, 75, 105, 75, 58, 74, 71, 69, 75, 73, 66, 70, 76, 68, 54, + 48, 54, 49, 47, 41, 35, 63, 56, 57, 48, 49, 61, 95, 83, 109, 80, + 119, 74, 36, 38, 38, 51, 51, 116, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 101, 35, 54, 80, 75, 90, 150, 114, 155, 195, 185, 208, + 210, 215, 219, 214, 190, 180, 202, 190, 205, 176, 196, 121, 136, 94, 76, 111, + 119, 98, 233, 149, 118, 169, 196, 138, 134, 107, 138, 164, 185, 236, 199, 150, + 120, 94, 70, 69, 51, 63, 59, 62, 57, 77, 69, 72, 82, 69, 72, 43, + 51, 38, 44, 37, 39, 42, 42, 38, 36, 37, 39, 36, 36, 35, 35, 37, + 43, 49, 53, 77, 152, 154, 126, 120, 121, 110, 82, 126, 86, 80, 103, 76, + 80, 96, 104, 71, 70, 76, 71, 59, 62, 68, 65, 43, 46, 52, 40, 43, + 45, 27, 32, 56, 64, 53, 53, 51, 69, 69, 103, 86, 89, 66, 57, 38, + 32, 58, 43, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, + 114, 137, 87, 58, 147, 169, 140, 212, 228, 237, 171, 219, 228, 219, 232, 210, + 174, 179, 172, 206, 218, 180, 155, 142, 132, 98, 75, 64, 79, 189, 139, 157, + 157, 183, 152, 96, 119, 92, 100, 154, 119, 123, 125, 125, 76, 67, 58, 58, + 49, 63, 60, 67, 59, 72, 68, 72, 76, 61, 60, 35, 43, 39, 49, 37, + 38, 39, 39, 36, 35, 35, 35, 42, 40, 37, 36, 36, 39, 46, 49, 81, + 32, 118, 83, 72, 119, 71, 69, 67, 72, 66, 77, 50, 64, 57, 61, 68, + 71, 80, 80, 69, 70, 72, 66, 53, 54, 52, 33, 42, 58, 45, 47, 46, + 32, 49, 69, 28, 44, 68, 70, 98, 63, 54, 67, 51, 49, 61, 36, 43, + 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 82, 65, 86, 64, 111, + 106, 100, 197, 222, 216, 231, 207, 220, 206, 200, 195, 212, 205, 189, 182, 159, + 215, 181, 195, 152, 115, 87, 89, 55, 147, 140, 116, 129, 154, 157, 165, 149, + 116, 85, 93, 74, 129, 134, 124, 104, 75, 83, 65, 65, 53, 59, 53, 65, + 55, 64, 60, 70, 65, 51, 50, 41, 45, 41, 44, 38, 37, 36, 35, 36, + 36, 34, 33, 42, 40, 39, 39, 40, 42, 46, 47, 36, 21, 72, 68, 58, + 33, 71, 42, 41, 63, 42, 32, 55, 59, 49, 71, 63, 62, 68, 74, 72, + 76, 74, 60, 72, 64, 55, 33, 33, 39, 26, 35, 33, 59, 38, 49, 61, + 55, 42, 81, 76, 41, 36, 40, 44, 50, 41, 33, 42, 54, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 198, 69, 90, 65, 74, 178, 132, 195, 225, 229, + 183, 209, 244, 189, 178, 232, 217, 189, 159, 193, 167, 205, 200, 165, 142, 122, + 129, 71, 121, 138, 117, 79, 97, 109, 164, 173, 164, 103, 90, 129, 62, 63, + 134, 119, 140, 104, 63, 66, 65, 81, 61, 53, 40, 55, 48, 57, 54, 73, + 62, 52, 54, 58, 56, 46, 38, 37, 33, 31, 32, 36, 38, 36, 35, 32, + 33, 35, 38, 41, 43, 46, 45, 45, 61, 52, 39, 46, 40, 53, 46, 60, + 29, 45, 55, 63, 46, 56, 42, 60, 50, 50, 55, 61, 71, 69, 52, 67, + 58, 59, 52, 53, 48, 35, 54, 50, 36, 27, 55, 41, 50, 60, 63, 70, + 54, 50, 33, 46, 54, 32, 49, 47, 52, 114, 255, 255, 255, 255, 255, 255, + 255, 255, 91, 124, 79, 71, 74, 239, 181, 239, 186, 210, 172, 199, 198, 197, + 189, 240, 233, 211, 151, 212, 202, 229, 172, 178, 208, 146, 143, 116, 106, 110, + 93, 74, 109, 191, 201, 174, 188, 157, 143, 92, 99, 94, 147, 75, 84, 84, + 63, 70, 59, 59, 62, 48, 54, 36, 49, 45, 56, 47, 50, 54, 56, 55, + 51, 46, 42, 34, 47, 40, 40, 23, 38, 34, 37, 43, 39, 36, 34, 36, + 40, 44, 45, 44, 59, 47, 60, 57, 42, 55, 43, 55, 54, 52, 51, 52, + 54, 57, 60, 62, 62, 63, 63, 60, 57, 55, 53, 48, 51, 55, 55, 47, + 40, 41, 46, 39, 44, 46, 41, 39, 45, 51, 54, 80, 90, 75, 82, 45, + 42, 46, 46, 41, 37, 48, 255, 255, 255, 255, 255, 255, 255, 196, 182, 98, + 75, 97, 71, 247, 212, 255, 189, 196, 173, 186, 156, 186, 199, 239, 206, 170, + 166, 180, 203, 207, 191, 179, 155, 90, 130, 105, 76, 106, 102, 106, 115, 215, + 196, 222, 162, 132, 93, 116, 71, 70, 131, 109, 114, 91, 48, 55, 57, 49, + 54, 46, 56, 41, 52, 47, 55, 47, 48, 49, 50, 49, 47, 44, 42, 41, + 40, 30, 42, 32, 39, 30, 35, 34, 35, 38, 39, 39, 38, 39, 38, 51, + 58, 56, 63, 60, 53, 57, 51, 56, 54, 50, 47, 46, 46, 48, 49, 54, + 57, 63, 65, 64, 60, 55, 52, 39, 43, 48, 50, 51, 50, 46, 41, 43, + 44, 42, 38, 39, 45, 48, 48, 66, 81, 76, 88, 53, 43, 40, 34, 54, + 29, 54, 132, 255, 255, 255, 255, 255, 255, 98, 80, 137, 50, 148, 198, 251, + 203, 242, 159, 207, 174, 208, 152, 186, 250, 204, 207, 186, 217, 209, 189, 161, + 180, 176, 142, 206, 81, 127, 125, 144, 100, 116, 182, 222, 185, 127, 154, 50, + 72, 41, 47, 71, 80, 78, 86, 92, 70, 74, 64, 55, 60, 54, 60, 47, + 49, 41, 42, 46, 46, 45, 44, 43, 42, 42, 42, 39, 37, 30, 47, 32, + 31, 24, 39, 37, 40, 43, 42, 39, 37, 38, 41, 54, 54, 66, 64, 63, + 62, 52, 55, 54, 52, 47, 43, 40, 38, 38, 39, 44, 49, 56, 62, 63, + 60, 55, 51, 42, 43, 41, 40, 46, 54, 50, 40, 45, 44, 40, 37, 40, + 47, 49, 47, 67, 78, 74, 83, 54, 45, 48, 40, 38, 43, 42, 56, 255, + 255, 255, 255, 255, 197, 88, 67, 109, 140, 205, 131, 227, 211, 220, 180, 169, + 183, 136, 140, 165, 196, 172, 170, 208, 174, 192, 191, 186, 162, 184, 219, 228, + 190, 160, 163, 155, 106, 151, 239, 145, 113, 64, 90, 77, 64, 36, 73, 77, + 75, 116, 122, 112, 74, 63, 52, 62, 63, 60, 60, 51, 47, 39, 36, 43, + 44, 44, 43, 43, 42, 41, 41, 29, 40, 40, 47, 25, 29, 32, 52, 52, + 52, 50, 43, 37, 38, 45, 53, 53, 48, 71, 64, 62, 67, 45, 52, 51, + 48, 45, 41, 39, 37, 37, 37, 39, 42, 48, 53, 56, 56, 55, 54, 56, + 54, 44, 33, 36, 50, 53, 46, 44, 46, 45, 42, 43, 48, 52, 52, 60, + 70, 72, 83, 66, 52, 54, 39, 40, 33, 60, 89, 144, 255, 255, 255, 255, + 50, 94, 76, 125, 176, 225, 72, 194, 180, 200, 169, 184, 175, 156, 119, 187, + 222, 177, 182, 161, 161, 164, 191, 212, 190, 220, 198, 236, 143, 154, 156, 140, + 216, 188, 168, 110, 95, 106, 56, 90, 31, 42, 36, 49, 22, 64, 77, 86, + 73, 69, 57, 49, 48, 51, 50, 53, 50, 50, 48, 41, 43, 45, 46, 46, + 44, 42, 40, 27, 44, 39, 40, 28, 52, 57, 61, 58, 58, 55, 47, 41, + 41, 49, 57, 52, 48, 72, 65, 62, 65, 41, 47, 46, 45, 44, 43, 43, + 43, 43, 44, 43, 43, 43, 45, 48, 53, 57, 60, 58, 60, 53, 40, 37, + 46, 52, 52, 43, 50, 54, 47, 41, 41, 46, 50, 38, 54, 73, 94, 91, + 66, 55, 24, 44, 59, 110, 60, 82, 255, 255, 255, 255, 64, 76, 116, 202, + 187, 170, 148, 205, 159, 123, 187, 155, 182, 149, 104, 235, 206, 225, 142, 135, + 203, 162, 210, 204, 187, 230, 157, 154, 154, 175, 154, 220, 143, 183, 143, 115, + 64, 63, 70, 57, 59, 82, 72, 109, 54, 42, 46, 63, 73, 69, 51, 43, + 40, 46, 42, 53, 48, 53, 49, 39, 41, 44, 46, 46, 44, 41, 39, 34, + 43, 29, 33, 41, 80, 75, 60, 49, 51, 52, 50, 46, 45, 48, 51, 57, + 57, 68, 65, 60, 59, 46, 47, 45, 43, 45, 45, 46, 47, 48, 48, 48, + 46, 45, 45, 48, 52, 58, 61, 46, 52, 57, 55, 48, 45, 48, 53, 42, + 53, 58, 50, 38, 33, 35, 39, 45, 51, 67, 86, 98, 78, 72, 37, 128, + 60, 45, 83, 82, 97, 255, 255, 255, 67, 132, 216, 220, 169, 153, 206, 153, + 181, 182, 211, 178, 165, 179, 92, 212, 212, 196, 157, 164, 163, 147, 208, 208, + 156, 201, 203, 154, 156, 211, 143, 190, 166, 203, 111, 159, 73, 58, 63, 69, + 54, 81, 72, 38, 40, 44, 61, 50, 50, 57, 59, 49, 44, 52, 43, 56, + 44, 49, 41, 38, 39, 40, 41, 41, 40, 40, 39, 40, 43, 29, 40, 47, + 76, 65, 53, 43, 43, 42, 43, 45, 47, 49, 51, 62, 67, 60, 60, 55, + 47, 52, 47, 46, 45, 45, 45, 46, 46, 46, 46, 44, 45, 47, 49, 50, + 51, 51, 51, 41, 43, 52, 59, 53, 42, 42, 51, 40, 50, 56, 50, 41, + 36, 34, 34, 63, 51, 53, 63, 88, 79, 88, 57, 120, 83, 51, 95, 63, + 124, 255, 255, 255, 58, 85, 223, 141, 186, 186, 169, 220, 181, 169, 214, 218, + 188, 157, 85, 145, 168, 170, 198, 175, 133, 180, 131, 178, 182, 186, 173, 132, + 218, 139, 166, 118, 194, 194, 155, 82, 79, 60, 45, 61, 57, 47, 48, 52, + 59, 37, 57, 46, 51, 51, 47, 51, 45, 56, 47, 62, 48, 51, 41, 38, + 37, 35, 35, 34, 36, 37, 39, 36, 43, 38, 51, 40, 51, 43, 47, 42, + 38, 33, 33, 38, 47, 55, 60, 66, 73, 50, 52, 47, 36, 55, 47, 47, + 47, 46, 45, 44, 43, 42, 42, 37, 41, 47, 51, 52, 48, 43, 39, 47, + 40, 44, 55, 50, 36, 37, 50, 37, 46, 52, 51, 47, 44, 40, 36, 52, + 38, 40, 53, 85, 77, 85, 50, 73, 42, 79, 58, 58, 62, 255, 255, 255, + 43, 147, 188, 218, 189, 201, 175, 201, 169, 162, 191, 183, 177, 126, 113, 188, + 90, 152, 125, 130, 176, 95, 109, 163, 127, 163, 129, 155, 99, 89, 157, 193, + 150, 154, 104, 66, 61, 47, 58, 56, 77, 53, 69, 55, 61, 58, 46, 44, + 49, 42, 27, 33, 39, 49, 35, 42, 104, 58, 34, 41, 41, 34, 22, 46, + 22, 51, 27, 34, 44, 34, 55, 59, 43, 49, 36, 34, 28, 39, 49, 40, + 35, 43, 47, 48, 43, 36, 34, 37, 41, 44, 44, 47, 48, 47, 48, 46, + 43, 40, 37, 37, 34, 34, 41, 50, 55, 52, 47, 51, 39, 44, 57, 46, + 60, 34, 54, 44, 44, 46, 49, 47, 41, 40, 42, 43, 48, 34, 40, 49, + 78, 103, 59, 58, 37, 53, 66, 49, 62, 95, 255, 255, 84, 167, 212, 199, + 184, 195, 171, 191, 168, 159, 177, 187, 174, 127, 123, 127, 136, 163, 135, 149, + 130, 128, 109, 144, 115, 157, 131, 117, 93, 88, 137, 147, 120, 131, 91, 44, + 52, 68, 60, 59, 53, 45, 66, 64, 60, 49, 35, 35, 44, 48, 45, 48, + 38, 45, 43, 52, 94, 51, 40, 35, 37, 43, 35, 34, 38, 38, 40, 35, + 53, 50, 54, 41, 27, 46, 50, 52, 41, 36, 35, 34, 42, 45, 33, 32, + 32, 33, 36, 39, 41, 41, 39, 49, 51, 52, 50, 46, 41, 39, 39, 37, + 34, 33, 37, 43, 46, 45, 42, 50, 37, 40, 53, 45, 58, 34, 49, 40, + 42, 48, 53, 50, 41, 35, 35, 39, 45, 34, 38, 43, 66, 91, 63, 41, + 51, 63, 76, 82, 72, 67, 255, 255, 156, 153, 149, 183, 194, 157, 176, 141, + 195, 171, 207, 170, 160, 179, 186, 93, 113, 145, 183, 146, 115, 118, 149, 104, + 120, 144, 120, 117, 124, 116, 139, 118, 108, 118, 89, 47, 41, 64, 47, 72, + 55, 49, 52, 56, 52, 49, 46, 45, 45, 43, 42, 41, 37, 56, 57, 45, + 56, 37, 60, 43, 25, 95, 28, 75, 31, 53, 46, 42, 52, 46, 49, 47, + 40, 45, 37, 55, 46, 37, 28, 28, 44, 45, 25, 38, 40, 42, 41, 39, + 38, 37, 37, 51, 53, 54, 51, 45, 40, 38, 38, 34, 34, 33, 34, 36, + 39, 42, 44, 51, 39, 38, 49, 48, 56, 38, 45, 35, 36, 40, 44, 43, + 37, 35, 37, 38, 41, 37, 39, 37, 50, 77, 71, 52, 77, 63, 63, 93, + 74, 50, 255, 255, 216, 186, 163, 168, 184, 196, 184, 187, 191, 186, 177, 177, + 140, 177, 182, 134, 116, 130, 134, 131, 125, 81, 142, 74, 106, 137, 96, 110, + 121, 106, 120, 90, 91, 91, 73, 64, 47, 59, 47, 82, 73, 61, 59, 48, + 47, 49, 54, 53, 44, 37, 36, 38, 39, 60, 58, 42, 41, 37, 66, 40, + 47, 80, 61, 62, 49, 43, 44, 53, 48, 37, 38, 45, 49, 48, 38, 48, + 39, 36, 33, 29, 37, 40, 30, 44, 44, 42, 38, 34, 34, 39, 44, 50, + 49, 47, 46, 44, 41, 37, 35, 31, 33, 34, 33, 34, 38, 45, 51, 54, + 43, 39, 47, 52, 55, 44, 43, 38, 34, 32, 34, 35, 37, 45, 54, 37, + 40, 42, 43, 37, 42, 66, 83, 74, 88, 63, 56, 85, 72, 55, 87, 255, + 162, 104, 75, 181, 211, 200, 220, 178, 197, 169, 157, 185, 177, 174, 156, 170, + 145, 149, 93, 159, 155, 125, 116, 124, 132, 161, 114, 93, 89, 69, 90, 77, + 81, 71, 62, 47, 43, 55, 50, 62, 58, 43, 52, 50, 46, 45, 47, 46, + 42, 42, 46, 54, 42, 45, 44, 56, 62, 54, 50, 57, 76, 62, 76, 62, + 62, 63, 56, 58, 50, 44, 32, 28, 35, 48, 64, 67, 38, 26, 33, 34, + 33, 34, 32, 29, 31, 32, 32, 33, 37, 44, 51, 45, 40, 36, 37, 41, + 42, 37, 31, 31, 34, 35, 34, 33, 35, 42, 48, 53, 45, 39, 44, 54, + 50, 49, 41, 44, 39, 35, 35, 37, 41, 52, 62, 34, 37, 43, 42, 38, + 40, 56, 85, 77, 74, 67, 71, 80, 71, 63, 71, 255, 211, 116, 131, 195, + 187, 205, 178, 194, 165, 204, 184, 179, 208, 174, 168, 162, 120, 147, 131, 120, + 123, 137, 90, 131, 153, 105, 87, 96, 81, 63, 77, 80, 78, 62, 57, 52, + 47, 57, 58, 73, 66, 38, 35, 39, 44, 49, 52, 51, 49, 47, 45, 47, + 41, 44, 36, 53, 56, 57, 44, 50, 54, 36, 34, 51, 37, 65, 44, 55, + 40, 44, 43, 41, 43, 45, 66, 94, 45, 18, 29, 36, 35, 32, 29, 25, + 29, 35, 39, 41, 42, 42, 43, 39, 34, 30, 33, 38, 41, 37, 33, 35, + 37, 38, 36, 33, 31, 33, 36, 49, 45, 39, 39, 53, 42, 50, 37, 41, + 38, 37, 38, 38, 38, 43, 50, 31, 33, 41, 35, 39, 42, 44, 75, 86, + 68, 68, 76, 69, 65, 69, 65, 255, 255, 165, 180, 170, 173, 178, 210, 195, + 186, 204, 201, 192, 189, 150, 164, 162, 117, 141, 131, 108, 118, 142, 93, 134, + 151, 90, 93, 84, 75, 72, 62, 70, 58, 46, 46, 78, 62, 80, 69, 105, + 86, 66, 53, 38, 51, 60, 59, 56, 54, 47, 38, 32, 36, 47, 38, 45, + 31, 47, 47, 66, 74, 46, 74, 57, 87, 68, 66, 51, 27, 40, 50, 54, + 53, 51, 83, 76, 42, 26, 31, 33, 34, 35, 31, 35, 36, 39, 42, 44, + 43, 39, 36, 35, 35, 35, 35, 36, 36, 38, 39, 37, 39, 41, 40, 37, + 34, 31, 30, 47, 48, 41, 38, 53, 36, 53, 37, 41, 37, 35, 36, 35, + 34, 39, 46, 31, 32, 40, 30, 40, 46, 34, 58, 102, 84, 73, 68, 62, + 59, 66, 75, 255, 255, 230, 194, 205, 187, 184, 203, 191, 168, 204, 207, 203, + 200, 201, 177, 182, 150, 177, 128, 135, 126, 144, 60, 141, 96, 133, 123, 65, + 73, 85, 57, 65, 51, 50, 53, 56, 49, 87, 51, 88, 51, 64, 67, 59, + 68, 64, 48, 42, 49, 51, 45, 43, 33, 38, 38, 54, 32, 45, 42, 54, + 39, 72, 51, 79, 71, 53, 39, 48, 29, 46, 44, 30, 33, 66, 139, 32, + 32, 40, 40, 29, 29, 38, 38, 34, 31, 28, 31, 36, 41, 43, 42, 33, + 39, 43, 40, 34, 32, 38, 44, 37, 39, 42, 45, 44, 40, 35, 32, 47, + 51, 45, 40, 55, 35, 57, 39, 49, 42, 36, 34, 34, 37, 48, 59, 35, + 35, 40, 28, 43, 51, 28, 48, 105, 101, 83, 73, 75, 63, 58, 75, 126, + 255, 255, 225, 180, 158, 221, 217, 185, 191, 175, 193, 226, 176, 203, 177, 177, + 183, 160, 134, 124, 114, 98, 74, 137, 103, 80, 73, 106, 65, 53, 76, 63, + 33, 50, 37, 60, 55, 53, 57, 56, 53, 55, 61, 52, 65, 74, 66, 36, + 80, 36, 45, 43, 41, 39, 40, 42, 42, 39, 36, 39, 52, 41, 73, 51, + 47, 54, 50, 29, 54, 33, 43, 31, 40, 113, 102, 32, 33, 33, 34, 35, + 34, 34, 33, 36, 37, 39, 41, 41, 39, 37, 36, 35, 37, 39, 37, 35, + 35, 38, 41, 46, 45, 42, 37, 32, 31, 34, 38, 41, 44, 44, 41, 41, + 44, 43, 40, 47, 30, 43, 35, 36, 55, 43, 38, 34, 34, 33, 36, 42, + 47, 44, 38, 76, 108, 91, 61, 64, 64, 84, 64, 53, 255, 255, 255, 255, + 255, 241, 218, 200, 208, 200, 206, 206, 187, 191, 173, 167, 168, 126, 131, 141, + 182, 93, 121, 133, 190, 93, 93, 74, 90, 54, 50, 96, 64, 79, 53, 54, + 49, 50, 57, 60, 58, 57, 59, 63, 61, 65, 73, 64, 110, 61, 59, 47, + 44, 40, 40, 40, 40, 37, 35, 46, 55, 43, 68, 48, 47, 57, 54, 50, + 30, 28, 45, 42, 39, 70, 100, 34, 36, 37, 39, 40, 41, 42, 42, 39, + 39, 39, 38, 37, 34, 32, 31, 33, 35, 37, 37, 36, 37, 40, 43, 41, + 43, 43, 41, 37, 35, 35, 37, 37, 41, 42, 40, 39, 41, 39, 35, 44, + 30, 48, 48, 46, 54, 39, 34, 40, 37, 32, 32, 40, 48, 47, 41, 72, + 107, 79, 85, 57, 64, 59, 59, 62, 255, 255, 255, 255, 255, 255, 255, 255, + 241, 222, 220, 185, 191, 182, 176, 166, 164, 110, 142, 109, 123, 160, 125, 97, + 107, 146, 114, 41, 118, 101, 99, 66, 86, 58, 60, 55, 51, 53, 61, 66, + 64, 57, 55, 53, 45, 49, 67, 68, 104, 62, 61, 51, 48, 43, 40, 39, + 38, 37, 36, 45, 51, 48, 67, 52, 51, 57, 52, 55, 27, 48, 38, 32, + 42, 58, 141, 37, 38, 39, 40, 41, 42, 42, 42, 39, 38, 36, 34, 33, + 32, 31, 31, 32, 34, 35, 36, 35, 35, 37, 39, 35, 38, 42, 43, 41, + 39, 37, 37, 36, 40, 41, 39, 39, 40, 38, 34, 44, 30, 47, 54, 49, + 46, 34, 33, 46, 39, 31, 29, 38, 49, 49, 44, 62, 85, 85, 83, 97, + 89, 83, 64, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, + 208, 204, 193, 170, 149, 106, 124, 112, 152, 153, 120, 122, 118, 130, 161, 50, + 76, 161, 98, 53, 51, 60, 59, 61, 56, 54, 58, 62, 61, 51, 44, 39, + 38, 46, 60, 50, 68, 44, 57, 55, 51, 46, 42, 40, 41, 42, 43, 41, + 46, 57, 71, 61, 56, 53, 43, 39, 39, 58, 25, 27, 55, 61, 124, 38, + 38, 38, 38, 37, 36, 34, 33, 37, 35, 33, 32, 32, 33, 35, 36, 35, + 35, 35, 34, 33, 31, 31, 30, 31, 34, 38, 40, 41, 40, 38, 37, 40, + 42, 41, 38, 38, 41, 42, 39, 48, 32, 40, 50, 43, 34, 32, 35, 48, + 41, 31, 30, 40, 51, 50, 45, 41, 96, 75, 115, 73, 115, 61, 52, 75, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 210, 195, 171, + 140, 127, 111, 101, 159, 118, 105, 110, 121, 85, 128, 143, 114, 122, 104, 78, + 77, 63, 38, 61, 56, 49, 49, 52, 53, 47, 39, 47, 47, 51, 58, 44, + 49, 40, 56, 54, 52, 48, 44, 43, 45, 48, 51, 52, 51, 68, 69, 62, + 56, 49, 38, 30, 41, 35, 22, 45, 61, 42, 35, 39, 39, 39, 38, 37, + 36, 35, 34, 39, 37, 34, 33, 33, 34, 37, 38, 36, 36, 36, 36, 35, + 34, 32, 30, 31, 31, 32, 34, 36, 37, 38, 38, 41, 42, 39, 34, 34, + 40, 44, 44, 48, 35, 38, 52, 44, 32, 35, 34, 45, 40, 34, 34, 42, + 51, 49, 42, 28, 64, 97, 106, 108, 98, 81, 79, 85, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 182, 160, 131, 133, 99, 92, + 145, 173, 117, 119, 100, 114, 112, 95, 171, 106, 155, 64, 51, 29, 71, 59, + 56, 49, 47, 50, 56, 54, 48, 54, 48, 42, 46, 44, 47, 42, 44, 49, + 48, 47, 44, 43, 45, 50, 54, 70, 59, 73, 57, 54, 52, 48, 39, 37, + 42, 23, 36, 51, 41, 37, 18, 38, 39, 40, 42, 43, 43, 43, 43, 43, + 41, 38, 35, 34, 33, 34, 35, 35, 35, 36, 38, 41, 41, 39, 37, 33, + 31, 29, 30, 33, 35, 37, 37, 38, 39, 36, 31, 33, 40, 45, 46, 42, + 39, 40, 58, 53, 39, 43, 30, 40, 39, 36, 35, 41, 47, 45, 40, 50, + 55, 46, 110, 99, 121, 64, 82, 81, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 175, 145, 118, 103, 80, 94, 175, 138, 126, 131, + 141, 86, 118, 65, 82, 69, 62, 93, 66, 53, 37, 52, 54, 50, 47, 49, + 57, 58, 54, 49, 46, 38, 38, 43, 44, 44, 35, 43, 43, 43, 41, 39, + 40, 45, 49, 67, 50, 69, 45, 47, 49, 47, 40, 42, 39, 31, 42, 35, + 27, 46, 46, 36, 37, 39, 41, 42, 43, 43, 43, 42, 41, 38, 36, 34, + 34, 34, 34, 34, 33, 35, 38, 42, 43, 40, 38, 35, 32, 30, 31, 33, + 35, 35, 34, 33, 36, 36, 35, 37, 44, 47, 46, 41, 43, 38, 54, 53, + 45, 52, 30, 37, 38, 37, 34, 37, 42, 43, 41, 45, 30, 58, 95, 177, + 218, 211, 210, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 168, 146, 136, 109, 109, 142, 161, 134, 181, 104, 136, 100, 118, 103, + 57, 124, 41, 47, 75, 60, 47, 41, 46, 46, 41, 43, 49, 51, 47, 45, + 54, 51, 46, 46, 43, 50, 41, 38, 40, 40, 37, 35, 36, 40, 43, 47, + 31, 60, 38, 46, 48, 44, 36, 36, 23, 28, 32, 26, 36, 40, 26, 34, + 35, 36, 36, 37, 36, 36, 36, 37, 37, 36, 35, 35, 36, 36, 37, 34, + 33, 33, 36, 39, 39, 35, 31, 36, 34, 32, 33, 36, 36, 34, 31, 31, + 36, 40, 41, 44, 49, 50, 47, 44, 46, 32, 43, 44, 44, 58, 34, 37, + 39, 37, 33, 32, 37, 41, 42, 37, 69, 97, 98, 149, 227, 235, 235, 226, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 120, + 110, 112, 129, 165, 149, 126, 156, 125, 151, 128, 115, 98, 53, 125, 72, 43, + 71, 45, 48, 59, 43, 38, 47, 46, 35, 38, 53, 44, 42, 40, 41, 43, + 43, 40, 36, 43, 42, 40, 36, 33, 34, 40, 45, 48, 45, 39, 36, 41, + 46, 41, 29, 31, 25, 24, 30, 34, 33, 31, 33, 35, 32, 31, 34, 35, + 34, 36, 41, 34, 36, 38, 36, 32, 31, 32, 34, 43, 36, 31, 34, 41, + 44, 41, 35, 28, 32, 32, 30, 33, 38, 35, 28, 35, 38, 35, 33, 42, + 52, 46, 31, 55, 45, 36, 34, 39, 42, 38, 33, 43, 37, 35, 38, 35, + 29, 35, 48, 31, 63, 118, 75, 168, 219, 209, 214, 231, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 138, 111, 135, 181, + 132, 124, 117, 143, 137, 134, 94, 171, 91, 96, 92, 109, 28, 73, 44, 60, + 50, 43, 46, 52, 51, 47, 45, 44, 43, 42, 42, 42, 42, 40, 38, 40, + 41, 40, 37, 32, 31, 33, 35, 38, 41, 42, 40, 41, 46, 47, 43, 39, + 33, 26, 22, 24, 30, 35, 37, 31, 29, 30, 35, 37, 36, 39, 43, 41, + 43, 44, 42, 39, 37, 38, 40, 38, 37, 37, 37, 39, 40, 41, 42, 28, + 34, 36, 33, 31, 34, 34, 32, 35, 31, 31, 38, 46, 48, 44, 41, 50, + 43, 36, 35, 39, 41, 38, 36, 41, 36, 34, 38, 34, 29, 36, 49, 50, + 49, 103, 124, 204, 228, 215, 220, 214, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 126, 115, 138, 162, 180, 126, 120, 99, 144, + 130, 140, 106, 81, 68, 57, 52, 87, 41, 130, 65, 49, 52, 49, 42, 44, + 50, 47, 38, 41, 43, 44, 43, 41, 39, 39, 39, 37, 38, 39, 37, 34, + 32, 32, 32, 38, 46, 49, 45, 40, 40, 43, 44, 46, 45, 36, 24, 22, + 33, 40, 39, 33, 31, 32, 37, 39, 37, 38, 41, 34, 35, 36, 35, 32, + 31, 31, 32, 33, 38, 42, 40, 36, 35, 40, 46, 30, 37, 40, 35, 31, + 32, 34, 35, 38, 30, 31, 44, 48, 41, 39, 47, 42, 39, 37, 36, 38, + 39, 40, 40, 39, 35, 33, 37, 34, 31, 38, 49, 59, 47, 97, 172, 212, + 212, 212, 211, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 131, 131, 195, 144, 155, 135, 116, 120, 120, 133, 140, 148, 99, + 81, 64, 71, 49, 49, 62, 46, 40, 51, 53, 44, 35, 35, 40, 42, 38, + 42, 44, 44, 39, 38, 38, 41, 35, 37, 37, 39, 38, 39, 38, 39, 38, + 43, 46, 42, 37, 34, 37, 40, 43, 52, 48, 34, 31, 40, 43, 37, 39, + 37, 38, 42, 42, 37, 36, 38, 42, 42, 41, 41, 39, 38, 38, 38, 34, + 39, 42, 39, 34, 32, 37, 42, 37, 38, 38, 35, 33, 34, 35, 36, 40, + 37, 38, 44, 43, 37, 36, 42, 35, 36, 37, 37, 37, 38, 40, 43, 40, + 36, 33, 35, 34, 32, 38, 46, 42, 54, 107, 204, 199, 196, 214, 208, 211, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 118, + 115, 185, 147, 138, 139, 114, 128, 103, 122, 126, 160, 119, 89, 62, 73, 41, + 81, 48, 48, 55, 52, 51, 48, 43, 37, 41, 51, 37, 41, 43, 44, 40, + 39, 40, 43, 39, 39, 37, 38, 38, 42, 42, 43, 32, 33, 35, 37, 39, + 39, 41, 41, 39, 50, 50, 38, 32, 39, 43, 38, 40, 38, 40, 43, 43, + 39, 38, 40, 42, 42, 41, 40, 40, 39, 38, 37, 38, 38, 37, 35, 33, + 32, 32, 33, 44, 38, 32, 33, 37, 38, 36, 34, 36, 43, 44, 38, 35, + 39, 39, 35, 30, 33, 36, 37, 37, 37, 39, 42, 42, 38, 34, 34, 34, + 33, 36, 42, 30, 48, 100, 219, 211, 205, 224, 221, 214, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 133, 107, 125, 166, 138, + 129, 112, 108, 107, 100, 106, 132, 131, 116, 80, 58, 40, 50, 56, 41, 70, + 53, 43, 46, 52, 48, 45, 46, 38, 41, 43, 44, 44, 44, 45, 46, 44, + 42, 38, 38, 39, 41, 42, 41, 42, 36, 35, 39, 42, 40, 37, 36, 37, + 46, 46, 34, 26, 31, 39, 41, 35, 34, 36, 41, 43, 41, 42, 45, 37, + 35, 33, 33, 34, 34, 32, 30, 40, 36, 32, 32, 33, 33, 31, 28, 47, + 36, 28, 31, 38, 40, 38, 35, 31, 42, 43, 33, 32, 41, 42, 34, 30, + 32, 35, 37, 37, 37, 37, 38, 42, 39, 34, 32, 33, 35, 36, 38, 42, + 37, 72, 198, 228, 216, 215, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 230, 164, 116, 147, 139, 123, 112, 99, 118, + 97, 99, 117, 140, 100, 82, 76, 75, 32, 62, 84, 62, 58, 50, 47, 48, + 50, 47, 43, 41, 41, 43, 46, 49, 51, 51, 50, 45, 43, 41, 42, 45, + 46, 44, 41, 50, 42, 40, 42, 41, 36, 31, 32, 36, 41, 45, 41, 32, + 28, 32, 39, 33, 31, 32, 37, 39, 39, 41, 45, 44, 42, 40, 40, 41, + 41, 39, 37, 37, 34, 31, 31, 33, 34, 33, 31, 45, 35, 28, 31, 36, + 37, 38, 40, 37, 37, 36, 34, 34, 36, 36, 34, 31, 32, 34, 37, 38, + 37, 34, 33, 39, 37, 33, 32, 34, 37, 38, 38, 46, 36, 44, 133, 206, + 218, 207, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 133, 129, 160, 133, 127, 112, 113, 121, 107, 101, 126, 138, + 112, 104, 51, 59, 80, 62, 43, 45, 67, 74, 55, 40, 45, 52, 49, 45, + 43, 43, 47, 53, 56, 55, 53, 42, 42, 44, 48, 53, 54, 51, 47, 40, + 36, 36, 40, 40, 34, 34, 38, 31, 40, 51, 55, 44, 29, 27, 32, 35, + 32, 31, 34, 35, 34, 36, 41, 38, 35, 33, 33, 35, 35, 33, 30, 32, + 33, 33, 33, 33, 34, 36, 37, 42, 34, 30, 33, 34, 33, 37, 44, 46, + 35, 32, 38, 38, 29, 27, 33, 32, 32, 34, 36, 38, 37, 33, 30, 37, + 35, 32, 31, 34, 40, 40, 39, 30, 39, 31, 72, 171, 224, 221, 230, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 114, 117, 170, 143, 126, 107, 107, 116, 113, 111, 119, 142, 111, 83, 73, 73, + 86, 76, 50, 49, 44, 70, 66, 60, 58, 39, 53, 46, 54, 55, 57, 62, + 55, 49, 54, 54, 41, 42, 50, 50, 49, 45, 33, 42, 40, 38, 39, 43, + 42, 39, 35, 29, 40, 53, 54, 39, 24, 26, 35, 30, 33, 34, 34, 33, + 33, 35, 36, 37, 33, 30, 29, 32, 33, 32, 30, 34, 34, 34, 33, 33, + 32, 32, 31, 37, 35, 32, 33, 36, 40, 43, 44, 43, 39, 35, 35, 39, + 40, 36, 31, 33, 32, 31, 34, 37, 38, 35, 33, 34, 39, 39, 36, 35, + 35, 34, 29, 49, 32, 37, 51, 132, 206, 253, 233, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 120, 156, 132, + 118, 111, 107, 100, 97, 108, 121, 126, 91, 96, 61, 98, 79, 100, 68, 55, + 53, 65, 64, 59, 52, 41, 47, 50, 52, 45, 47, 56, 56, 52, 60, 62, + 58, 61, 61, 46, 41, 45, 44, 37, 35, 32, 32, 32, 36, 37, 38, 39, + 43, 51, 52, 43, 31, 27, 31, 31, 34, 35, 35, 34, 34, 35, 37, 37, + 34, 31, 31, 32, 34, 33, 31, 33, 33, 33, 32, 32, 32, 32, 32, 32, + 31, 31, 32, 34, 34, 33, 31, 42, 38, 35, 35, 37, 37, 34, 32, 33, + 31, 29, 31, 34, 37, 38, 38, 31, 35, 37, 36, 37, 39, 38, 33, 38, + 31, 30, 30, 70, 120, 148, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 155, 150, 170, 143, 116, 112, 111, 97, + 100, 120, 124, 124, 105, 100, 87, 87, 84, 87, 71, 57, 60, 54, 63, 63, + 55, 56, 52, 61, 58, 51, 53, 64, 63, 59, 66, 67, 60, 61, 58, 41, + 36, 43, 45, 39, 38, 34, 31, 30, 34, 42, 49, 49, 46, 48, 51, 47, + 37, 28, 27, 32, 35, 36, 36, 35, 35, 36, 37, 36, 34, 32, 32, 33, + 34, 33, 32, 32, 32, 32, 32, 32, 33, 33, 33, 30, 31, 33, 36, 38, + 36, 32, 28, 39, 38, 36, 35, 34, 33, 33, 32, 33, 30, 28, 28, 32, + 37, 40, 41, 30, 36, 37, 36, 38, 41, 40, 36, 34, 41, 40, 41, 50, + 99, 123, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 146, 148, 159, 166, 121, 110, 114, 104, 116, 135, 125, 129, + 121, 110, 104, 76, 75, 66, 60, 55, 62, 45, 62, 70, 63, 76, 64, 63, + 66, 63, 68, 72, 63, 55, 64, 64, 50, 46, 49, 44, 44, 44, 38, 41, + 42, 41, 36, 30, 34, 42, 51, 52, 49, 48, 51, 47, 36, 28, 25, 34, + 36, 37, 37, 35, 35, 36, 38, 33, 33, 32, 32, 32, 33, 32, 32, 32, + 32, 33, 33, 34, 34, 35, 35, 29, 30, 33, 37, 40, 40, 36, 33, 38, + 38, 37, 34, 31, 30, 31, 33, 32, 30, 29, 30, 32, 35, 38, 39, 35, + 38, 39, 36, 37, 40, 38, 34, 25, 36, 31, 43, 49, 113, 141, 147, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 172, 173, 177, 175, 128, 115, 117, 107, 119, 138, 129, 126, 108, 127, 89, 93, + 53, 73, 58, 59, 64, 44, 58, 67, 65, 78, 62, 57, 62, 64, 66, 64, + 50, 47, 63, 57, 46, 47, 53, 50, 49, 49, 41, 37, 41, 42, 36, 28, + 25, 30, 37, 48, 47, 50, 52, 45, 32, 26, 26, 34, 37, 38, 37, 35, + 35, 36, 37, 30, 31, 32, 32, 31, 31, 31, 32, 33, 33, 34, 35, 35, + 36, 36, 36, 30, 30, 31, 33, 35, 36, 35, 33, 39, 39, 37, 33, 30, + 29, 30, 32, 30, 31, 32, 33, 34, 34, 34, 34, 34, 37, 38, 35, 36, + 40, 39, 35, 31, 37, 28, 38, 47, 111, 134, 135, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 170, 166, 177, + 143, 131, 125, 109, 115, 135, 142, 124, 110, 119, 97, 88, 62, 73, 66, 71, + 69, 53, 51, 57, 58, 59, 47, 57, 61, 60, 60, 54, 42, 47, 74, 43, + 46, 57, 61, 45, 39, 45, 48, 39, 43, 46, 41, 30, 23, 23, 26, 40, + 44, 52, 54, 44, 31, 25, 27, 34, 36, 37, 36, 35, 34, 34, 36, 29, + 31, 33, 33, 32, 31, 32, 33, 34, 34, 34, 35, 35, 35, 35, 35, 40, + 37, 35, 34, 35, 36, 35, 34, 42, 39, 35, 32, 31, 30, 31, 31, 29, + 31, 34, 35, 34, 32, 32, 33, 28, 33, 34, 34, 36, 42, 43, 40, 38, + 41, 38, 42, 58, 111, 133, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 177, 175, 166, 184, 159, 136, 125, 119, + 119, 132, 146, 131, 123, 110, 113, 80, 79, 71, 74, 76, 66, 61, 48, 49, + 57, 46, 42, 64, 64, 61, 62, 58, 45, 49, 75, 37, 40, 53, 58, 42, + 37, 44, 48, 45, 49, 50, 46, 38, 28, 25, 24, 37, 41, 49, 55, 48, + 36, 28, 27, 34, 36, 37, 36, 34, 32, 33, 34, 30, 33, 36, 36, 35, + 33, 34, 36, 33, 33, 33, 33, 33, 32, 32, 32, 42, 40, 38, 38, 39, + 39, 37, 36, 45, 40, 34, 31, 32, 33, 32, 30, 28, 30, 33, 32, 31, + 31, 34, 37, 27, 30, 33, 32, 35, 41, 42, 40, 26, 31, 41, 33, 57, + 101, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 186, 190, 180, 194, 162, 127, 118, 128, 128, 128, 137, 137, + 113, 125, 98, 105, 74, 92, 83, 76, 60, 64, 45, 47, 63, 44, 46, 65, + 65, 63, 69, 67, 48, 44, 63, 44, 36, 42, 51, 47, 47, 50, 45, 48, + 50, 51, 47, 39, 32, 26, 24, 39, 42, 49, 55, 52, 40, 30, 27, 33, + 35, 36, 35, 33, 32, 32, 34, 31, 35, 38, 39, 36, 35, 35, 38, 32, + 32, 32, 31, 30, 30, 29, 29, 33, 33, 33, 35, 37, 38, 36, 34, 47, + 40, 33, 31, 33, 35, 33, 29, 28, 29, 30, 29, 29, 31, 37, 42, 30, + 34, 34, 30, 32, 38, 37, 36, 35, 40, 52, 30, 50, 89, 146, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 176, 173, 170, 169, 171, 134, 142, 128, 139, 153, 125, 131, 122, 109, 105, 88, + 107, 90, 103, 84, 82, 60, 62, 46, 62, 53, 59, 50, 67, 79, 51, 41, + 58, 55, 52, 47, 42, 41, 42, 44, 46, 53, 59, 46, 45, 43, 41, 36, + 34, 35, 38, 51, 31, 56, 51, 49, 48, 13, 29, 33, 34, 35, 35, 36, + 37, 38, 38, 38, 38, 36, 34, 30, 30, 31, 34, 35, 34, 33, 33, 32, + 31, 30, 30, 32, 32, 33, 34, 35, 35, 36, 37, 36, 36, 34, 33, 31, + 30, 29, 28, 32, 31, 28, 27, 28, 31, 34, 36, 28, 30, 33, 35, 34, + 34, 35, 37, 42, 37, 45, 41, 53, 99, 152, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 171, 166, 184, + 180, 135, 145, 136, 152, 171, 152, 118, 112, 106, 102, 85, 100, 88, 103, 80, + 78, 61, 65, 49, 61, 59, 72, 53, 47, 60, 61, 54, 49, 43, 61, 33, + 41, 46, 47, 48, 53, 53, 49, 44, 44, 45, 43, 37, 32, 34, 39, 45, + 29, 57, 54, 49, 46, 15, 32, 31, 34, 34, 35, 36, 37, 37, 37, 36, + 36, 34, 32, 29, 28, 30, 32, 34, 34, 33, 32, 31, 31, 30, 30, 33, + 33, 34, 35, 36, 37, 37, 38, 34, 34, 33, 32, 31, 30, 29, 29, 32, + 30, 29, 28, 28, 31, 34, 36, 35, 36, 36, 38, 37, 37, 35, 36, 24, + 34, 52, 31, 58, 149, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 190, 189, 215, 179, 176, 136, 156, 155, + 161, 168, 151, 120, 107, 99, 96, 93, 109, 92, 96, 69, 72, 72, 81, 65, + 61, 52, 64, 49, 75, 88, 58, 55, 83, 70, 49, 40, 51, 55, 48, 42, + 42, 38, 30, 43, 44, 47, 46, 37, 28, 29, 35, 32, 25, 54, 54, 50, + 46, 20, 33, 31, 34, 35, 36, 37, 37, 37, 37, 35, 35, 35, 33, 30, + 29, 30, 31, 33, 33, 33, 32, 31, 31, 30, 30, 32, 32, 33, 33, 34, + 35, 35, 36, 32, 32, 31, 31, 30, 30, 30, 29, 31, 30, 29, 28, 29, + 31, 34, 36, 40, 37, 37, 39, 40, 39, 36, 32, 24, 42, 40, 55, 65, + 202, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 240, 186, 199, 183, 180, 139, 164, 166, 162, 158, 144, 129, + 103, 91, 90, 104, 120, 97, 86, 75, 76, 80, 86, 69, 52, 48, 59, 69, + 67, 76, 70, 68, 72, 53, 51, 43, 45, 44, 42, 40, 42, 46, 49, 43, + 44, 49, 50, 40, 26, 24, 32, 26, 24, 48, 54, 55, 50, 25, 30, 32, + 35, 37, 38, 39, 39, 38, 38, 35, 36, 36, 34, 31, 30, 30, 31, 33, + 32, 32, 31, 31, 30, 30, 30, 29, 29, 29, 30, 30, 31, 31, 31, 30, + 30, 30, 30, 30, 30, 30, 30, 31, 30, 29, 29, 29, 31, 34, 35, 39, + 35, 34, 36, 40, 41, 35, 30, 40, 38, 34, 64, 98, 179, 229, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 200, 189, 196, 206, 202, 148, 165, 170, 164, 162, 155, 121, 98, 94, 87, 100, + 109, 92, 83, 88, 83, 82, 77, 67, 55, 61, 73, 81, 74, 80, 72, 72, + 77, 61, 59, 60, 49, 44, 47, 45, 39, 44, 55, 45, 45, 49, 55, 44, + 27, 23, 29, 26, 27, 43, 55, 59, 53, 30, 25, 33, 36, 39, 41, 41, + 41, 40, 39, 37, 38, 38, 37, 34, 32, 32, 33, 32, 31, 31, 31, 31, + 30, 30, 30, 29, 29, 29, 29, 29, 30, 30, 30, 29, 29, 29, 30, 30, + 30, 31, 31, 30, 30, 29, 29, 30, 32, 33, 34, 37, 34, 33, 37, 42, + 43, 37, 32, 41, 28, 39, 44, 121, 131, 235, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 178, 201, 196, + 209, 163, 177, 182, 171, 156, 144, 108, 98, 109, 90, 93, 91, 89, 95, 81, + 82, 91, 83, 87, 74, 76, 73, 79, 94, 96, 62, 66, 102, 94, 73, 66, + 54, 49, 52, 53, 46, 44, 46, 49, 44, 50, 58, 50, 32, 24, 27, 28, + 35, 47, 58, 60, 51, 34, 24, 33, 36, 39, 41, 42, 42, 40, 39, 37, + 38, 39, 38, 35, 33, 33, 33, 31, 31, 31, 30, 30, 30, 30, 30, 31, + 31, 31, 31, 32, 32, 32, 32, 30, 30, 30, 30, 31, 31, 31, 31, 30, + 30, 30, 30, 31, 32, 33, 34, 36, 36, 37, 40, 43, 44, 40, 36, 25, + 48, 26, 54, 84, 158, 233, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 182, 190, 190, 170, 204, 170, 186, 190, + 169, 136, 112, 102, 91, 107, 85, 90, 86, 90, 96, 88, 90, 100, 86, 98, + 87, 82, 62, 92, 70, 67, 66, 73, 81, 81, 101, 60, 62, 58, 56, 66, + 80, 77, 62, 52, 46, 50, 62, 58, 37, 24, 26, 30, 45, 56, 64, 58, + 43, 33, 24, 31, 35, 38, 40, 41, 40, 38, 37, 36, 37, 39, 38, 35, + 33, 32, 32, 30, 30, 30, 30, 30, 30, 30, 30, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 31, 31, 31, 31, 29, 29, 30, 30, 31, + 32, 33, 33, 35, 36, 39, 42, 43, 40, 37, 35, 26, 60, 21, 64, 45, + 207, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 165, 176, 169, 208, 170, 179, 180, 159, 126, 102, 100, + 79, 87, 69, 88, 88, 87, 83, 120, 109, 98, 65, 78, 78, 84, 65, 90, + 91, 86, 57, 63, 100, 106, 104, 106, 114, 97, 70, 73, 94, 83, 52, 55, + 46, 50, 63, 61, 41, 25, 26, 29, 51, 64, 69, 55, 36, 33, 28, 29, + 33, 35, 39, 40, 38, 36, 35, 34, 36, 38, 37, 34, 32, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 33, + 33, 33, 32, 32, 31, 31, 31, 29, 29, 30, 31, 31, 32, 33, 32, 33, + 36, 39, 40, 39, 35, 31, 30, 44, 35, 42, 34, 54, 203, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 209, 171, 178, 208, 197, 196, 167, 132, 83, 95, 75, 66, 64, 73, 64, + 96, 87, 91, 107, 103, 141, 81, 88, 75, 64, 74, 90, 76, 123, 67, 66, + 82, 86, 112, 105, 113, 119, 110, 91, 71, 61, 59, 56, 57, 47, 49, 57, + 38, 17, 26, 56, 62, 66, 59, 47, 32, 26, 27, 31, 31, 31, 36, 38, + 36, 35, 36, 33, 32, 32, 34, 35, 35, 32, 30, 33, 32, 32, 31, 31, + 30, 30, 29, 31, 32, 32, 33, 33, 32, 32, 31, 30, 30, 30, 30, 30, + 30, 30, 30, 29, 29, 30, 31, 31, 32, 33, 32, 29, 44, 41, 47, 32, + 23, 42, 28, 37, 23, 50, 37, 54, 207, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 163, 177, + 186, 191, 167, 168, 120, 91, 77, 64, 47, 55, 55, 65, 88, 87, 114, 119, + 112, 147, 58, 43, 90, 67, 83, 94, 124, 83, 87, 52, 90, 70, 107, 80, + 90, 108, 107, 106, 90, 89, 85, 67, 65, 50, 44, 46, 33, 26, 45, 55, + 61, 64, 58, 45, 32, 25, 24, 29, 28, 29, 34, 35, 33, 30, 33, 36, + 35, 34, 35, 35, 33, 29, 26, 30, 30, 30, 30, 29, 29, 29, 29, 31, + 32, 32, 33, 33, 32, 32, 31, 30, 30, 30, 30, 30, 30, 30, 30, 29, + 29, 30, 31, 31, 32, 33, 32, 37, 34, 27, 45, 44, 32, 41, 29, 23, + 49, 40, 61, 47, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 161, 170, 210, 194, 174, 126, 115, + 85, 75, 56, 56, 35, 57, 53, 70, 78, 76, 138, 116, 105, 105, 66, 75, + 66, 112, 103, 86, 136, 68, 84, 78, 81, 79, 94, 89, 88, 101, 89, 95, + 76, 79, 70, 68, 65, 52, 42, 39, 32, 38, 60, 57, 61, 61, 54, 41, + 30, 24, 23, 32, 31, 33, 37, 37, 34, 32, 35, 36, 35, 35, 35, 35, + 33, 29, 26, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 33, 33, 33, + 33, 32, 32, 31, 31, 31, 31, 31, 31, 31, 31, 29, 29, 30, 31, 31, + 32, 33, 32, 36, 40, 31, 34, 31, 27, 40, 38, 43, 32, 31, 82, 138, + 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 201, 200, 233, 219, 171, 128, 70, 78, 75, 74, 59, + 48, 69, 71, 70, 69, 57, 149, 135, 110, 68, 74, 72, 58, 90, 74, 69, + 113, 78, 99, 102, 89, 96, 89, 82, 71, 77, 60, 79, 69, 84, 79, 57, + 55, 48, 44, 40, 37, 44, 59, 63, 62, 56, 46, 34, 25, 23, 25, 36, + 35, 37, 41, 40, 35, 34, 38, 33, 32, 32, 34, 36, 36, 33, 31, 33, + 33, 34, 35, 35, 36, 36, 36, 32, 32, 33, 34, 34, 33, 32, 32, 32, + 32, 32, 32, 31, 31, 31, 31, 29, 29, 30, 31, 31, 32, 33, 32, 29, + 44, 39, 28, 29, 34, 37, 32, 41, 33, 95, 176, 236, 200, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 209, 213, 170, 172, 143, 108, 48, 56, 62, 72, 69, 65, 69, 77, 53, + 56, 51, 158, 158, 114, 89, 74, 54, 138, 66, 73, 67, 90, 86, 134, 84, + 112, 94, 88, 86, 73, 70, 59, 74, 74, 86, 85, 58, 52, 47, 44, 40, + 42, 50, 55, 69, 63, 52, 38, 27, 22, 25, 29, 34, 35, 37, 40, 37, + 32, 33, 36, 33, 34, 34, 36, 37, 37, 34, 33, 34, 34, 35, 35, 36, + 37, 37, 37, 32, 33, 34, 34, 34, 34, 33, 32, 34, 34, 33, 33, 32, + 32, 31, 31, 29, 29, 30, 31, 31, 32, 33, 32, 29, 31, 31, 34, 47, + 45, 38, 52, 63, 95, 155, 233, 240, 237, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 194, 182, + 179, 168, 116, 94, 72, 86, 88, 77, 70, 55, 57, 39, 47, 80, 170, 159, + 107, 106, 79, 128, 133, 87, 77, 79, 71, 103, 124, 72, 97, 83, 74, 103, + 94, 81, 75, 70, 69, 64, 60, 70, 56, 51, 45, 35, 43, 58, 59, 73, + 64, 48, 33, 23, 21, 27, 32, 39, 40, 43, 45, 41, 35, 35, 41, 39, + 38, 37, 39, 39, 37, 33, 30, 33, 33, 33, 33, 34, 34, 34, 34, 33, + 33, 34, 34, 34, 34, 33, 33, 35, 35, 34, 34, 33, 32, 32, 31, 29, + 29, 30, 31, 31, 32, 33, 32, 37, 26, 31, 38, 40, 26, 46, 127, 142, + 189, 213, 208, 220, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 233, 220, 208, 186, 150, 157, + 123, 105, 97, 82, 63, 47, 34, 50, 54, 133, 182, 163, 127, 93, 71, 152, + 53, 76, 56, 84, 79, 105, 114, 81, 86, 70, 65, 94, 92, 70, 77, 58, + 71, 57, 61, 68, 56, 56, 49, 34, 44, 64, 66, 71, 62, 48, 34, 25, + 23, 28, 32, 44, 46, 49, 50, 45, 40, 40, 45, 41, 40, 40, 41, 41, + 39, 35, 32, 34, 34, 34, 33, 33, 33, 33, 33, 33, 34, 34, 35, 35, + 34, 34, 33, 36, 36, 35, 34, 33, 32, 32, 31, 29, 29, 30, 31, 31, + 32, 33, 32, 37, 34, 41, 36, 36, 29, 52, 142, 143, 200, 217, 209, 229, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 230, 234, 235, 202, 220, 233, 217, 144, 125, 85, + 57, 48, 25, 75, 65, 173, 184, 167, 160, 86, 59, 84, 80, 73, 101, 78, + 116, 84, 145, 81, 118, 59, 78, 101, 100, 65, 77, 44, 68, 49, 61, 52, + 47, 58, 55, 36, 45, 69, 70, 69, 62, 48, 36, 29, 25, 27, 30, 42, + 43, 47, 48, 42, 36, 36, 42, 37, 38, 38, 39, 42, 41, 39, 37, 36, + 36, 36, 35, 35, 34, 34, 33, 33, 34, 34, 35, 35, 34, 34, 33, 37, + 36, 35, 35, 34, 33, 32, 32, 29, 29, 30, 31, 31, 32, 33, 32, 30, + 37, 41, 34, 65, 76, 48, 69, 69, 103, 76, 208, 241, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 226, 220, 225, 207, 203, 199, 187, 182, 163, 123, 59, 29, 59, 63, + 119, 214, 176, 149, 111, 72, 82, 64, 64, 60, 87, 62, 72, 89, 90, 126, + 161, 95, 124, 100, 81, 78, 78, 61, 47, 55, 65, 59, 47, 54, 55, 38, + 45, 67, 72, 61, 63, 54, 37, 24, 27, 33, 35, 39, 42, 45, 45, 44, + 42, 40, 41, 38, 36, 38, 42, 45, 41, 37, 38, 47, 45, 41, 38, 36, + 36, 37, 38, 34, 35, 34, 32, 28, 28, 31, 35, 32, 29, 30, 34, 34, + 31, 30, 33, 26, 29, 32, 32, 32, 32, 35, 37, 48, 48, 53, 60, 70, + 73, 66, 59, 65, 53, 82, 89, 232, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 228, + 239, 180, 165, 217, 221, 190, 171, 117, 41, 41, 70, 70, 141, 198, 193, 156, + 120, 75, 78, 62, 66, 66, 89, 65, 65, 107, 98, 135, 134, 75, 82, 90, + 76, 80, 86, 72, 56, 56, 58, 61, 48, 49, 48, 33, 43, 73, 85, 64, + 59, 44, 29, 25, 32, 37, 37, 41, 43, 47, 47, 46, 44, 43, 44, 44, + 40, 41, 44, 46, 43, 43, 44, 45, 44, 40, 38, 36, 37, 39, 40, 36, + 38, 38, 35, 32, 32, 34, 36, 37, 34, 34, 37, 36, 32, 31, 33, 41, + 38, 34, 33, 36, 40, 43, 44, 55, 56, 56, 58, 65, 74, 74, 69, 61, + 75, 86, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 206, 184, 195, 221, 210, + 223, 229, 168, 129, 74, 104, 107, 87, 179, 186, 192, 146, 116, 76, 68, 58, + 65, 63, 72, 98, 74, 91, 84, 91, 104, 67, 83, 83, 70, 76, 85, 74, + 60, 56, 55, 59, 51, 52, 48, 36, 43, 69, 85, 71, 58, 38, 25, 27, + 38, 41, 38, 43, 46, 48, 49, 48, 45, 44, 45, 49, 44, 43, 46, 47, + 46, 46, 49, 44, 44, 41, 40, 39, 39, 40, 41, 41, 42, 42, 40, 37, + 35, 36, 38, 41, 38, 38, 40, 39, 34, 33, 35, 37, 33, 30, 34, 43, + 52, 57, 58, 53, 63, 67, 64, 71, 84, 87, 82, 70, 90, 82, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 190, 186, 198, 204, 223, 219, 201, 204, 198, 118, + 125, 170, 146, 107, 206, 183, 166, 123, 104, 77, 65, 61, 67, 60, 54, 96, + 72, 64, 103, 66, 110, 59, 78, 85, 69, 68, 75, 65, 58, 57, 56, 55, + 56, 60, 58, 46, 43, 54, 66, 69, 56, 38, 28, 31, 39, 41, 38, 43, + 45, 48, 48, 47, 45, 43, 44, 47, 42, 42, 46, 48, 46, 45, 48, 44, + 44, 43, 42, 41, 42, 42, 42, 43, 44, 44, 43, 41, 39, 37, 37, 41, + 38, 39, 42, 41, 37, 36, 38, 28, 28, 30, 37, 46, 56, 64, 68, 58, + 75, 82, 76, 76, 83, 83, 73, 57, 59, 124, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 213, 215, 207, 176, 166, 164, 169, 176, 157, 79, 139, 182, 173, 131, + 200, 180, 150, 114, 100, 82, 64, 67, 70, 66, 56, 100, 70, 54, 97, 60, + 107, 66, 75, 86, 72, 69, 72, 62, 58, 58, 57, 52, 58, 60, 58, 51, + 43, 44, 54, 54, 46, 36, 32, 33, 35, 39, 41, 44, 46, 48, 49, 48, + 45, 44, 45, 45, 41, 43, 49, 51, 47, 44, 44, 44, 45, 45, 45, 44, + 43, 42, 43, 43, 43, 42, 43, 42, 40, 38, 37, 38, 36, 37, 41, 42, + 39, 39, 41, 36, 38, 39, 39, 42, 53, 69, 81, 74, 87, 88, 76, 66, + 66, 62, 53, 59, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 232, + 219, 208, 194, 173, 200, 200, 110, 74, 141, 177, 195, 166, 185, 172, 150, 110, + 96, 80, 57, 63, 65, 71, 64, 104, 67, 64, 69, 65, 81, 73, 67, 77, + 70, 74, 79, 68, 61, 58, 54, 55, 60, 52, 49, 51, 45, 44, 57, 39, + 36, 35, 35, 35, 34, 39, 44, 46, 48, 51, 51, 50, 48, 47, 46, 46, + 44, 45, 52, 53, 50, 46, 46, 46, 47, 47, 48, 47, 45, 43, 42, 42, + 41, 40, 40, 40, 41, 40, 38, 37, 35, 37, 41, 43, 40, 40, 43, 42, + 43, 43, 41, 43, 57, 81, 100, 76, 77, 71, 60, 51, 53, 55, 56, 126, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 176, 220, 188, 174, 211, + 198, 137, 90, 101, 152, 185, 194, 184, 183, 165, 145, 100, 86, 77, 53, 60, + 54, 65, 62, 69, 57, 75, 73, 80, 74, 64, 47, 67, 65, 74, 80, 68, + 61, 59, 54, 57, 61, 48, 44, 55, 50, 44, 59, 43, 38, 37, 39, 39, + 37, 40, 46, 46, 49, 51, 52, 50, 47, 46, 46, 49, 47, 46, 50, 52, + 49, 47, 49, 46, 48, 49, 50, 48, 45, 43, 41, 43, 40, 38, 38, 40, + 42, 42, 41, 41, 39, 40, 44, 44, 42, 41, 44, 40, 44, 47, 49, 51, + 60, 73, 84, 67, 60, 54, 53, 50, 49, 56, 129, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 236, 205, 166, 180, 203, 189, 151, 102, 107, + 154, 190, 170, 177, 190, 160, 133, 92, 81, 79, 59, 66, 51, 60, 57, 61, + 64, 55, 57, 48, 69, 63, 69, 60, 59, 69, 71, 59, 55, 59, 56, 58, + 62, 49, 47, 61, 54, 42, 54, 57, 48, 43, 44, 43, 40, 41, 45, 43, + 46, 49, 49, 47, 45, 44, 43, 51, 46, 44, 46, 48, 46, 46, 50, 47, + 49, 50, 51, 48, 46, 42, 40, 44, 41, 36, 37, 40, 43, 44, 43, 44, + 42, 42, 45, 45, 42, 41, 43, 43, 48, 55, 59, 57, 51, 44, 40, 69, + 58, 55, 59, 56, 48, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 200, 178, 174, 185, 187, 140, 84, 109, 190, 168, 170, 200, + 171, 145, 127, 92, 72, 59, 65, 68, 61, 59, 66, 56, 61, 66, 66, 62, + 58, 57, 58, 60, 59, 61, 66, 69, 64, 54, 46, 53, 56, 54, 52, 54, + 57, 52, 46, 49, 52, 52, 48, 41, 39, 42, 45, 47, 49, 52, 52, 50, + 47, 46, 45, 50, 48, 45, 46, 47, 51, 55, 57, 48, 52, 52, 51, 48, + 44, 43, 44, 47, 51, 49, 45, 42, 42, 40, 36, 48, 44, 47, 47, 45, + 53, 53, 39, 60, 50, 44, 45, 45, 41, 41, 44, 52, 53, 52, 53, 53, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 224, 224, 211, 163, 126, 100, 136, 192, 180, 183, 193, 175, 158, 113, 82, + 89, 83, 65, 54, 58, 60, 58, 57, 62, 65, 67, 66, 65, 65, 64, 66, + 61, 56, 56, 59, 62, 61, 59, 55, 58, 55, 52, 54, 56, 53, 47, 49, + 54, 56, 53, 46, 43, 43, 44, 46, 46, 48, 47, 45, 44, 45, 47, 52, + 51, 48, 46, 47, 49, 50, 53, 51, 52, 50, 49, 47, 45, 46, 49, 46, + 47, 46, 42, 42, 45, 43, 40, 47, 41, 42, 45, 48, 60, 62, 49, 52, + 45, 41, 43, 45, 43, 42, 46, 46, 47, 47, 118, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 239, + 176, 142, 121, 158, 182, 175, 178, 174, 169, 167, 117, 76, 84, 80, 63, 54, + 60, 62, 57, 57, 58, 60, 63, 65, 65, 62, 60, 66, 60, 53, 51, 55, + 61, 64, 67, 57, 59, 55, 51, 51, 54, 53, 48, 48, 53, 56, 55, 49, + 45, 43, 43, 46, 46, 46, 45, 43, 44, 46, 49, 53, 52, 50, 48, 47, + 46, 46, 46, 52, 53, 51, 48, 46, 46, 49, 52, 47, 47, 44, 40, 43, + 46, 44, 40, 48, 41, 43, 47, 51, 63, 67, 56, 45, 41, 40, 43, 46, + 45, 45, 47, 42, 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 207, 147, 134, 123, 171, + 172, 161, 176, 185, 173, 162, 128, 82, 68, 61, 68, 71, 67, 63, 65, 62, + 60, 59, 61, 63, 62, 57, 53, 59, 57, 55, 57, 60, 62, 61, 61, 57, + 58, 55, 50, 48, 51, 52, 48, 47, 51, 52, 51, 47, 43, 41, 41, 46, + 47, 48, 48, 47, 47, 50, 52, 52, 51, 50, 49, 48, 46, 45, 45, 48, + 51, 51, 49, 48, 47, 48, 51, 47, 48, 45, 44, 46, 49, 44, 38, 48, + 44, 48, 51, 48, 54, 58, 51, 41, 40, 41, 43, 45, 46, 46, 47, 43, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 197, 206, 158, 152, 135, 152, 131, 104, 141, 190, + 171, 133, 117, 101, 91, 85, 86, 80, 71, 66, 66, 67, 64, 62, 63, 65, + 65, 60, 56, 57, 57, 57, 59, 60, 59, 56, 55, 55, 57, 54, 49, 47, + 49, 50, 48, 51, 52, 50, 48, 45, 43, 43, 45, 43, 46, 50, 52, 51, + 51, 50, 50, 49, 49, 48, 47, 47, 46, 45, 46, 44, 48, 50, 51, 50, + 47, 46, 46, 42, 46, 48, 49, 52, 55, 50, 42, 45, 45, 53, 55, 44, + 42, 48, 46, 42, 44, 45, 44, 44, 45, 45, 45, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 166, 182, 176, 179, 155, 146, 105, 71, 113, 185, 186, 155, 159, 125, + 145, 143, 110, 79, 72, 69, 59, 60, 59, 58, 60, 60, 62, 60, 58, 60, + 59, 55, 53, 51, 54, 55, 57, 52, 56, 55, 50, 48, 50, 51, 49, 55, + 53, 51, 48, 46, 47, 46, 47, 42, 45, 50, 52, 52, 50, 48, 48, 49, + 48, 46, 46, 45, 46, 47, 48, 43, 47, 51, 53, 51, 47, 45, 43, 38, + 45, 50, 53, 56, 59, 58, 54, 47, 44, 52, 55, 43, 38, 44, 45, 44, + 48, 47, 43, 41, 42, 44, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 209, + 191, 175, 149, 95, 73, 83, 121, 153, 163, 159, 166, 143, 169, 168, 127, 87, + 73, 68, 59, 55, 56, 58, 57, 55, 55, 55, 56, 58, 57, 53, 50, 48, + 50, 54, 56, 51, 57, 57, 54, 52, 52, 54, 52, 53, 52, 51, 50, 48, + 48, 45, 44, 46, 49, 51, 52, 51, 50, 50, 51, 51, 49, 46, 44, 44, + 44, 46, 48, 47, 50, 52, 53, 50, 46, 45, 46, 45, 53, 58, 55, 54, + 57, 61, 62, 60, 48, 49, 51, 43, 40, 45, 44, 44, 48, 47, 40, 37, + 40, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 196, 198, 156, 109, 84, + 108, 187, 221, 190, 178, 182, 172, 153, 156, 151, 132, 101, 75, 64, 65, 60, + 62, 64, 61, 57, 53, 55, 56, 52, 54, 54, 54, 53, 52, 53, 54, 50, + 58, 61, 57, 55, 55, 55, 55, 49, 49, 49, 50, 50, 47, 43, 39, 52, + 53, 54, 53, 51, 52, 54, 57, 54, 52, 47, 44, 43, 44, 45, 48, 51, + 53, 53, 51, 49, 46, 47, 47, 56, 62, 64, 57, 51, 54, 59, 63, 75, + 55, 47, 48, 44, 43, 46, 42, 42, 47, 45, 37, 33, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 243, 203, 182, 134, 96, 85, 217, 216, 206, 186, + 188, 187, 173, 185, 173, 159, 123, 77, 64, 66, 49, 63, 60, 54, 50, 50, + 53, 55, 56, 47, 47, 48, 50, 50, 51, 51, 52, 55, 56, 55, 52, 52, + 52, 54, 57, 46, 51, 51, 48, 47, 51, 50, 45, 51, 43, 41, 50, 57, + 56, 51, 50, 54, 54, 50, 47, 49, 53, 50, 44, 53, 49, 51, 56, 49, + 37, 44, 60, 48, 59, 56, 57, 64, 53, 57, 89, 54, 47, 43, 44, 44, + 40, 36, 36, 48, 48, 47, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 209, 191, 164, 100, 86, 207, 220, 166, 128, 160, 181, 206, 187, 157, + 149, 139, 109, 68, 62, 65, 54, 61, 58, 54, 52, 52, 54, 55, 56, 59, + 58, 56, 55, 54, 54, 54, 56, 55, 55, 55, 54, 53, 53, 54, 56, 46, + 51, 52, 48, 47, 51, 51, 46, 49, 43, 42, 50, 54, 53, 50, 50, 52, + 54, 54, 51, 51, 53, 51, 46, 50, 48, 49, 53, 47, 43, 48, 59, 54, + 44, 59, 65, 51, 70, 84, 52, 53, 46, 42, 44, 44, 40, 38, 38, 45, + 45, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 181, + 133, 100, 164, 197, 162, 109, 95, 139, 191, 180, 123, 153, 147, 135, 106, 71, + 62, 64, 57, 58, 57, 54, 53, 53, 55, 55, 55, 63, 59, 56, 52, 49, + 48, 49, 51, 54, 55, 55, 55, 55, 55, 54, 54, 48, 51, 51, 48, 49, + 51, 50, 46, 46, 43, 45, 49, 50, 49, 49, 51, 50, 55, 57, 54, 52, + 52, 50, 48, 49, 49, 49, 48, 47, 49, 54, 59, 51, 56, 51, 54, 73, + 81, 63, 41, 50, 44, 42, 44, 44, 41, 40, 42, 43, 114, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 162, 121, 105, 174, 162, + 128, 66, 57, 59, 185, 192, 152, 160, 153, 135, 106, 78, 67, 65, 62, 56, + 55, 54, 54, 55, 55, 54, 52, 58, 56, 54, 52, 48, 46, 44, 45, 54, + 54, 54, 55, 57, 56, 54, 51, 50, 51, 50, 48, 48, 49, 48, 48, 45, + 47, 49, 51, 49, 47, 50, 53, 51, 57, 58, 52, 49, 50, 51, 52, 49, + 53, 52, 48, 49, 56, 58, 57, 55, 62, 50, 59, 84, 64, 38, 49, 47, + 43, 42, 44, 45, 42, 42, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 234, 155, 114, 137, 184, 109, 94, 85, 93, 73, + 175, 199, 174, 149, 141, 119, 94, 78, 70, 68, 69, 56, 54, 53, 54, 55, + 55, 52, 50, 55, 57, 59, 59, 57, 53, 49, 47, 55, 54, 53, 55, 58, + 57, 54, 51, 52, 51, 49, 49, 48, 48, 48, 48, 47, 50, 52, 51, 49, + 49, 53, 55, 54, 57, 56, 50, 46, 48, 54, 55, 52, 57, 58, 55, 55, + 59, 60, 57, 67, 48, 66, 79, 51, 40, 51, 43, 45, 42, 42, 45, 45, + 43, 44, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 156, 128, 131, 97, 118, 63, 66, 55, 57, 97, 192, 200, 145, + 133, 101, 78, 75, 70, 64, 68, 58, 55, 53, 53, 54, 53, 51, 49, 52, + 55, 59, 62, 61, 57, 52, 49, 56, 54, 52, 54, 57, 56, 54, 51, 54, + 50, 49, 49, 48, 45, 47, 49, 48, 52, 54, 51, 48, 51, 55, 55, 54, + 56, 54, 48, 46, 49, 52, 54, 53, 57, 61, 63, 62, 60, 60, 60, 59, + 70, 75, 59, 38, 39, 49, 45, 44, 42, 43, 46, 45, 43, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 167, + 96, 100, 86, 93, 35, 36, 27, 39, 44, 165, 180, 150, 131, 91, 67, 72, + 69, 59, 63, 60, 57, 54, 52, 52, 52, 49, 48, 50, 53, 56, 59, 59, + 56, 52, 49, 59, 55, 52, 53, 55, 58, 55, 52, 55, 50, 48, 49, 48, + 44, 45, 50, 49, 52, 51, 47, 47, 52, 55, 53, 52, 53, 53, 50, 49, + 53, 50, 48, 50, 53, 61, 70, 67, 59, 58, 65, 61, 83, 60, 35, 49, + 49, 37, 51, 43, 42, 44, 46, 115, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 211, 99, 83, 92, 54, + 39, 37, 49, 45, 55, 160, 163, 144, 123, 78, 57, 70, 70, 59, 65, 62, + 58, 54, 51, 51, 51, 49, 47, 54, 56, 58, 58, 58, 56, 53, 52, 60, + 56, 51, 51, 55, 57, 56, 52, 56, 50, 48, 50, 48, 44, 45, 49, 48, + 51, 50, 45, 45, 53, 54, 51, 49, 52, 52, 52, 54, 55, 50, 42, 45, + 48, 60, 74, 70, 57, 57, 70, 89, 52, 42, 50, 46, 48, 53, 43, 44, + 43, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 235, 237, 136, 96, 91, 69, 47, 79, 67, 122, + 64, 154, 195, 134, 110, 87, 74, 69, 63, 57, 55, 64, 61, 57, 56, 54, + 50, 45, 40, 49, 52, 58, 62, 64, 62, 58, 56, 57, 53, 53, 57, 58, + 54, 57, 62, 58, 56, 53, 51, 49, 49, 49, 48, 49, 49, 50, 50, 50, + 52, 52, 53, 57, 54, 54, 58, 55, 47, 43, 46, 59, 45, 48, 64, 67, + 72, 82, 86, 54, 52, 50, 48, 49, 48, 48, 47, 44, 42, 114, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 250, 251, 193, 163, 133, 93, 100, 124, 158, 180, 106, 183, 176, 138, + 106, 74, 59, 58, 61, 63, 63, 60, 59, 59, 59, 60, 58, 55, 50, 49, + 51, 56, 60, 62, 60, 57, 57, 55, 52, 52, 56, 56, 53, 54, 58, 60, + 58, 54, 51, 50, 49, 48, 48, 51, 50, 51, 51, 52, 53, 53, 54, 59, + 56, 55, 56, 52, 45, 40, 41, 49, 41, 43, 53, 63, 79, 87, 77, 53, + 50, 48, 45, 45, 46, 47, 47, 116, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 237, + 237, 248, 231, 218, 204, 205, 223, 201, 159, 199, 199, 157, 119, 76, 58, 58, + 62, 60, 58, 56, 56, 57, 59, 60, 58, 54, 51, 50, 50, 53, 55, 57, + 57, 57, 56, 53, 52, 52, 55, 55, 52, 51, 53, 57, 56, 55, 53, 53, + 52, 52, 52, 52, 51, 52, 53, 54, 54, 55, 55, 55, 53, 52, 54, 50, + 43, 41, 41, 50, 46, 44, 47, 56, 77, 75, 53, 51, 49, 47, 44, 44, + 45, 49, 50, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 208, 194, 230, + 212, 242, 241, 216, 217, 164, 197, 160, 121, 80, 63, 65, 65, 59, 51, 60, + 60, 60, 60, 57, 54, 50, 48, 49, 50, 51, 51, 53, 55, 56, 57, 53, + 53, 53, 54, 54, 52, 50, 50, 51, 51, 52, 54, 56, 57, 59, 59, 54, + 54, 54, 55, 56, 57, 58, 59, 51, 52, 52, 52, 50, 47, 46, 47, 51, + 46, 47, 50, 54, 65, 63, 45, 46, 48, 49, 49, 48, 47, 118, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 228, + 231, 139, 175, 146, 110, 72, 59, 64, 67, 64, 57, 65, 65, 66, 63, 59, + 56, 53, 52, 50, 50, 50, 50, 51, 54, 56, 58, 54, 54, 54, 53, 52, + 52, 52, 51, 49, 50, 51, 54, 56, 58, 59, 60, 55, 55, 56, 57, 58, + 59, 59, 61, 52, 54, 54, 52, 51, 51, 49, 48, 45, 38, 45, 58, 55, + 54, 57, 55, 39, 45, 49, 52, 50, 117, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 208, 170, 174, 143, + 111, 75, 60, 61, 65, 67, 67, 63, 62, 62, 60, 57, 54, 55, 56, 52, + 51, 50, 51, 52, 55, 58, 58, 54, 55, 54, 51, 51, 54, 55, 53, 53, + 54, 54, 55, 55, 55, 55, 55, 56, 56, 57, 58, 58, 59, 60, 61, 58, + 61, 58, 53, 51, 51, 47, 44, 48, 41, 52, 65, 53, 44, 49, 56, 36, + 42, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 245, 204, 198, 156, 136, 112, 85, 70, 66, + 65, 68, 69, 60, 59, 57, 54, 51, 51, 54, 58, 52, 52, 52, 52, 54, + 56, 58, 60, 54, 56, 54, 49, 48, 54, 57, 55, 54, 55, 54, 55, 55, + 54, 52, 52, 55, 56, 56, 58, 58, 59, 60, 61, 60, 63, 60, 53, 49, + 51, 49, 44, 51, 51, 62, 63, 47, 42, 46, 48, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 205, 196, 140, 109, 96, 82, 75, 71, 66, 66, 68, 65, + 64, 60, 55, 51, 52, 56, 61, 53, 52, 53, 54, 55, 57, 59, 60, 53, + 57, 53, 46, 47, 55, 58, 57, 51, 52, 54, 55, 55, 54, 54, 54, 56, + 56, 56, 58, 58, 59, 60, 61, 57, 60, 58, 51, 49, 51, 51, 46, 41, + 51, 60, 55, 44, 50, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 220, 206, 125, 125, 102, 80, 73, 69, 62, 59, 63, 66, 67, 64, 60, 54, + 50, 48, 47, 49, 51, 51, 52, 54, 55, 56, 57, 55, 53, 50, 48, 47, + 49, 51, 52, 53, 55, 60, 60, 54, 48, 52, 61, 56, 55, 53, 54, 57, + 63, 66, 67, 58, 56, 52, 53, 54, 53, 49, 45, 40, 51, 69, 48, 120, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 215, 209, 151, + 119, 87, 74, 72, 67, 63, 65, 60, 63, 61, 58, 54, 48, 45, 44, 48, + 49, 50, 51, 53, 54, 55, 56, 54, 53, 50, 49, 48, 49, 51, 53, 52, + 53, 55, 57, 53, 48, 51, 57, 56, 53, 55, 59, 58, 55, 59, 68, 48, + 47, 47, 47, 46, 46, 44, 42, 50, 120, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 201, 193, 220, 153, 121, 87, 75, 72, + 66, 60, 61, 61, 62, 60, 57, 55, 50, 47, 45, 47, 48, 49, 50, 52, + 53, 55, 56, 53, 52, 50, 49, 49, 51, 53, 54, 56, 55, 56, 59, 57, + 53, 55, 60, 56, 53, 57, 62, 58, 51, 55, 67, 44, 46, 47, 46, 46, + 45, 47, 118, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 228, 199, 209, 122, 103, 89, 86, 82, 71, 62, 61, 67, + 65, 61, 57, 55, 54, 52, 51, 47, 47, 49, 50, 51, 52, 54, 55, 52, + 52, 49, 48, 49, 51, 54, 55, 58, 54, 55, 58, 58, 56, 55, 58, 53, + 56, 59, 59, 60, 62, 61, 61, 44, 48, 49, 48, 46, 46, 119, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 229, 209, 218, 84, 82, 88, 97, 96, 83, 72, 74, 73, 68, 60, 55, 54, + 55, 56, 56, 49, 49, 50, 50, 51, 52, 52, 53, 53, 52, 50, 49, 50, + 52, 53, 55, 52, 48, 49, 52, 53, 50, 51, 54, 51, 59, 59, 54, 62, + 78, 71, 53, 42, 44, 45, 43, 41, 114, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 216, 81, + 73, 73, 85, 90, 83, 73, 72, 75, 69, 60, 54, 53, 55, 55, 55, 52, + 52, 51, 51, 52, 52, 51, 51, 54, 53, 51, 50, 50, 51, 53, 55, 51, + 49, 51, 54, 52, 49, 50, 55, 53, 59, 57, 55, 68, 83, 74, 50, 47, + 46, 44, 42, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 211, 147, 107, 71, 68, 79, + 82, 73, 66, 77, 71, 63, 59, 59, 58, 56, 52, 55, 54, 54, 53, 52, + 52, 51, 50, 55, 54, 51, 50, 50, 51, 53, 54, 51, 52, 56, 58, 54, + 50, 54, 61, 58, 53, 53, 64, 74, 74, 65, 55, 56, 52, 47, 114, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 240, 182, 234, 163, 90, 68, 84, 95, 84, 71, 78, + 73, 66, 65, 65, 63, 56, 51, 57, 57, 56, 54, 53, 51, 51, 50, 56, + 55, 52, 50, 49, 50, 52, 53, 47, 50, 55, 57, 52, 47, 51, 59, 63, + 48, 52, 74, 79, 64, 54, 60, 60, 54, 116, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 197, 208, 213, 195, 227, 209, 149, 72, 61, 70, 48, 65, 66, + 76, 67, 66, 58, 58, 57, 57, 56, 55, 54, 53, 60, 57, 51, 46, 45, + 47, 51, 54, 56, 55, 53, 52, 55, 59, 58, 55, 57, 61, 71, 80, 75, + 63, 60, 65, 59, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 218, 223, 209, 174, 74, 62, 61, 70, 59, 60, 59, 71, 59, + 60, 58, 58, 56, 55, 53, 53, 54, 54, 52, 51, 51, 52, 53, 54, 55, + 53, 50, 48, 50, 53, 54, 54, 54, 69, 76, 67, 59, 60, 62, 60, 61, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 242, 220, 214, 128, 59, 66, 66, 59, 55, 56, 71, 63, 62, 61, 59, 57, + 55, 52, 52, 50, 51, 52, 53, 53, 52, 49, 49, 57, 55, 52, 50, 50, + 51, 53, 56, 56, 80, 81, 58, 45, 57, 64, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 200, 196, + 63, 57, 55, 64, 65, 62, 62, 64, 64, 62, 60, 57, 55, 52, 52, 51, + 53, 53, 53, 51, 48, 45, 43, 54, 53, 53, 54, 51, 49, 51, 55, 71, + 84, 79, 56, 46, 56, 60, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 212, 220, 64, 48, 52, 67, + 71, 63, 53, 64, 64, 61, 60, 56, 54, 52, 52, 53, 53, 52, 51, 50, + 49, 47, 47, 43, 44, 47, 51, 47, 42, 45, 54, 87, 78, 65, 58, 55, + 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 214, 200, 70, 49, 64, 64, 67, 63, 52, 63, + 62, 61, 58, 56, 54, 52, 51, 52, 52, 52, 52, 53, 55, 56, 58, 43, + 43, 47, 52, 48, 43, 50, 63, 91, 67, 51, 58, 125, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 204, 193, 95, 53, 72, 62, 71, 71, 57, 62, 60, 59, 57, 56, + 54, 52, 52, 48, 49, 49, 51, 53, 55, 57, 58, 48, 46, 48, 51, 48, + 46, 60, 80, 86, 61, 46, 54, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 211, + 123, 54, 72, 63, 79, 81, 62, 59, 58, 57, 56, 54, 54, 52, 52, 45, + 47, 49, 50, 51, 51, 51, 50, 48, 44, 44, 46, 43, 44, 63, 87, 80, + 62, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 210, 57, 84, 89, + 56, 73, 61, 51, 66, 55, 60, 55, 44, 58, 49, 54, 51, 58, 51, 38, + 51, 65, 50, 47, 58, 54, 36, 42, 65, 73, 63, 65, 58, 123, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 200, 236, 102, 81, 66, 74, 64, 74, 63, + 66, 52, 62, 60, 46, 53, 48, 57, 42, 51, 67, 59, 53, 56, 51, 53, + 36, 48, 77, 49, 56, 62, 61, 43, 122, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 211, 183, 233, 108, 65, 100, 75, 66, 74, 66, 51, 61, 63, + 52, 57, 57, 60, 42, 43, 55, 53, 49, 53, 52, 50, 43, 53, 58, 57, + 66, 72, 56, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 206, 212, 218, 119, 81, 90, 72, 73, 68, 56, 54, 53, 51, 55, 54, 58, + 63, 61, 53, 51, 60, 62, 51, 65, 65, 59, 24, 69, 58, 56, 111, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 194, 203, 235, + 73, 74, 97, 74, 80, 80, 66, 58, 63, 58, 53, 51, 68, 70, 60, 57, + 60, 58, 53, 55, 45, 60, 76, 79, 56, 50, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 194, 213, 191, 76, 87, 61, + 67, 78, 65, 59, 66, 57, 58, 67, 68, 62, 61, 62, 55, 63, 89, 64, + 83, 118, 154, 62, 73, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 233, 215, 203, 188, 93, 98, 76, 77, 66, 62, + 64, 57, 78, 65, 67, 59, 62, 72, 71, 80, 111, 141, 188, 185, 138, 57, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 190, 201, 210, 154, 131, 115, 104, 96, 92, 131, 137, + 168, 177, 180, 202, 209, 198, 199, 183, 221, 166, 56, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, + 45, 37, 224, 49, 57, 97, 58, 60, 50, 45, 77, 70, 244, 112, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 186, 67, 51, 57, 51, 56, 60, 57, 68, 56, 51, 40, 56, 65, 139, 42, + 54, 78, 71, 111, 61, 43, 92, 116, 156, 69, 142, 238, 229, 250, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 93, 118, 105, 87, 60, 77, + 58, 49, 84, 55, 56, 46, 67, 73, 62, 65, 81, 74, 60, 54, 119, 53, + 115, 132, 118, 90, 95, 131, 140, 175, 159, 211, 204, 228, 233, 221, 226, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 186, 55, 24, 131, 164, 113, 71, 70, 46, 38, 88, 96, 41, 56, + 46, 63, 102, 68, 39, 107, 123, 124, 104, 52, 183, 117, 138, 131, 165, 156, + 130, 100, 90, 164, 221, 224, 230, 227, 230, 229, 237, 248, 199, 190, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 81, 67, 39, + 149, 129, 139, 103, 81, 90, 112, 100, 64, 65, 136, 92, 72, 87, 142, 143, + 170, 226, 147, 162, 162, 134, 165, 143, 146, 180, 148, 177, 196, 163, 144, 150, + 161, 164, 199, 171, 198, 222, 211, 202, 188, 153, 144, 97, 70, 125, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 156, 134, 131, 156, 160, 150, 184, 184, 128, + 190, 177, 121, 117, 148, 145, 183, 149, 214, 190, 185, 185, 166, 170, 163, 185, + 136, 129, 180, 145, 132, 190, 172, 132, 128, 145, 172, 166, 129, 173, 179, 188, + 189, 208, 191, 168, 173, 171, 167, 102, 52, 68, 59, 128, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 170, 135, 164, 191, 160, 114, 156, 154, 194, 196, 133, 127, 131, 110, + 196, 219, 159, 171, 210, 139, 139, 167, 154, 141, 200, 119, 188, 154, 165, 176, + 182, 147, 142, 165, 124, 132, 155, 143, 111, 179, 175, 187, 150, 146, 153, 155, + 139, 104, 94, 85, 93, 94, 41, 43, 76, 76, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 107, 172, 142, + 170, 214, 200, 207, 174, 169, 168, 163, 175, 152, 146, 152, 167, 150, 196, 186, + 160, 151, 193, 144, 160, 165, 146, 184, 203, 202, 177, 189, 157, 141, 107, 125, + 113, 105, 128, 120, 109, 128, 114, 137, 153, 162, 144, 138, 127, 100, 105, 80, + 102, 87, 67, 57, 57, 55, 19, 92, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 222, 115, 182, 83, 115, 160, 227, 220, 198, + 176, 166, 203, 157, 167, 143, 181, 177, 155, 162, 198, 208, 132, 171, 105, 134, + 191, 146, 193, 206, 170, 138, 158, 181, 169, 138, 165, 132, 106, 178, 119, 76, + 111, 102, 74, 131, 154, 110, 76, 142, 75, 80, 128, 101, 65, 186, 50, 48, + 65, 54, 57, 66, 81, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 118, 126, 195, 169, 103, 209, 190, 230, 208, 207, 194, 229, 174, 164, + 175, 181, 203, 192, 152, 186, 228, 158, 182, 153, 154, 120, 140, 216, 185, 150, + 168, 121, 152, 166, 135, 169, 196, 170, 128, 157, 117, 87, 81, 60, 91, 122, + 109, 97, 84, 83, 77, 106, 76, 82, 96, 115, 79, 112, 49, 47, 42, 39, + 63, 45, 78, 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 92, 94, 126, + 127, 204, 214, 201, 231, 197, 232, 199, 209, 196, 177, 168, 195, 215, 197, 210, + 208, 218, 169, 179, 163, 164, 72, 189, 206, 141, 148, 144, 136, 112, 118, 132, + 131, 78, 95, 156, 158, 114, 88, 101, 87, 88, 93, 80, 84, 77, 73, 49, + 60, 72, 46, 110, 53, 78, 113, 82, 39, 56, 50, 55, 53, 63, 61, 59, + 48, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 215, 122, 91, 135, 163, 185, 152, 164, 169, 185, + 210, 210, 231, 222, 179, 172, 193, 219, 211, 219, 205, 190, 182, 206, 196, 226, + 122, 133, 237, 174, 154, 183, 145, 143, 128, 169, 100, 139, 123, 115, 152, 107, + 141, 108, 68, 99, 93, 109, 77, 64, 81, 84, 81, 49, 35, 38, 50, 118, + 71, 54, 88, 83, 63, 41, 85, 54, 57, 39, 71, 24, 73, 68, 55, 113, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 138, 114, 103, 74, 108, 151, 223, 173, 205, 201, 226, 192, 224, 241, 204, + 199, 201, 204, 196, 225, 222, 181, 156, 211, 207, 154, 196, 138, 184, 191, 170, + 194, 177, 196, 186, 205, 134, 162, 134, 151, 121, 105, 113, 98, 173, 98, 114, + 117, 91, 76, 91, 77, 103, 87, 42, 29, 52, 48, 82, 75, 29, 76, 79, + 67, 63, 57, 56, 44, 76, 61, 62, 66, 84, 49, 71, 21, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 225, 184, 106, 59, + 161, 112, 202, 214, 166, 172, 192, 201, 204, 218, 228, 182, 227, 199, 214, 204, + 191, 192, 221, 221, 236, 188, 161, 151, 195, 226, 120, 165, 161, 224, 210, 166, + 154, 178, 140, 181, 121, 154, 91, 91, 122, 127, 129, 153, 114, 157, 38, 85, + 85, 85, 44, 38, 41, 39, 38, 59, 42, 73, 81, 39, 66, 81, 67, 64, + 72, 68, 89, 47, 90, 62, 58, 57, 65, 60, 114, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 100, 152, 168, 184, 81, 63, 148, 201, 144, + 235, 137, 206, 163, 195, 227, 181, 210, 183, 195, 201, 204, 219, 228, 207, 207, + 231, 219, 223, 227, 205, 158, 192, 187, 201, 190, 205, 182, 124, 119, 96, 105, + 108, 127, 74, 84, 66, 109, 104, 127, 150, 106, 47, 54, 70, 58, 38, 42, + 50, 15, 38, 51, 64, 103, 54, 70, 84, 68, 120, 76, 63, 70, 52, 52, + 61, 49, 45, 44, 93, 91, 77, 126, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 233, 104, 155, 133, 76, 116, 143, 159, 191, 204, 130, 144, 175, 197, + 195, 199, 210, 184, 169, 202, 181, 204, 179, 184, 171, 205, 196, 185, 208, 204, + 188, 230, 231, 156, 212, 135, 204, 163, 197, 133, 188, 65, 77, 144, 120, 93, + 117, 67, 165, 148, 74, 105, 86, 57, 32, 63, 107, 40, 55, 35, 44, 52, + 36, 44, 55, 83, 60, 107, 62, 79, 72, 66, 65, 58, 76, 38, 46, 20, + 52, 34, 21, 42, 47, 29, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 156, 123, 119, + 150, 127, 77, 188, 136, 154, 200, 186, 180, 157, 193, 186, 203, 168, 179, 198, + 178, 172, 184, 182, 197, 167, 169, 191, 191, 167, 211, 210, 201, 194, 168, 190, + 128, 170, 111, 224, 99, 117, 152, 62, 119, 112, 105, 145, 115, 128, 130, 107, + 90, 69, 70, 44, 52, 46, 61, 46, 54, 38, 42, 43, 37, 49, 65, 71, + 78, 92, 95, 85, 59, 63, 76, 70, 63, 57, 38, 31, 57, 39, 29, 43, + 40, 41, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 187, 134, 165, 73, 134, 157, 192, 200, 184, + 196, 164, 198, 179, 190, 176, 186, 188, 175, 195, 217, 174, 164, 195, 162, 172, + 167, 200, 129, 163, 150, 176, 152, 151, 175, 136, 137, 151, 132, 215, 122, 203, + 194, 78, 196, 81, 75, 163, 168, 144, 117, 87, 133, 82, 55, 71, 36, 43, + 45, 51, 50, 52, 45, 44, 41, 41, 34, 40, 49, 46, 48, 54, 54, 44, + 29, 44, 66, 60, 56, 66, 69, 45, 51, 29, 39, 40, 39, 66, 48, 69, + 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 186, 92, 180, 155, 148, 153, 193, 214, 215, 179, 194, 131, 213, 193, + 163, 158, 187, 198, 159, 170, 172, 141, 180, 231, 169, 177, 152, 219, 185, 225, + 151, 155, 154, 172, 134, 117, 121, 104, 121, 139, 116, 201, 176, 131, 173, 91, + 33, 162, 136, 140, 83, 117, 135, 55, 71, 39, 39, 42, 36, 49, 37, 54, + 39, 49, 43, 56, 49, 53, 56, 48, 46, 48, 44, 45, 33, 46, 66, 59, + 48, 51, 56, 45, 31, 18, 46, 40, 40, 77, 50, 59, 51, 50, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 83, 56, + 207, 161, 202, 238, 139, 212, 220, 182, 204, 149, 186, 171, 173, 183, 172, 172, + 200, 208, 162, 141, 153, 183, 168, 153, 199, 157, 178, 149, 178, 98, 150, 132, + 73, 71, 96, 86, 123, 93, 158, 169, 182, 157, 137, 142, 132, 144, 155, 91, + 107, 131, 146, 67, 41, 52, 36, 37, 35, 43, 36, 47, 41, 49, 47, 51, + 45, 50, 53, 47, 48, 51, 45, 36, 34, 45, 65, 78, 79, 72, 60, 51, + 32, 36, 59, 60, 62, 76, 72, 55, 54, 50, 38, 122, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 189, 43, 165, 188, 144, 217, 224, 208, + 208, 179, 176, 212, 181, 162, 152, 146, 166, 185, 170, 192, 160, 152, 161, 205, + 180, 186, 224, 183, 178, 160, 125, 155, 113, 98, 112, 123, 117, 52, 73, 67, + 75, 59, 126, 155, 135, 117, 94, 111, 77, 115, 46, 51, 104, 135, 104, 69, + 27, 42, 30, 36, 39, 34, 42, 36, 46, 43, 49, 40, 39, 45, 48, 44, + 49, 54, 48, 35, 49, 56, 62, 81, 96, 90, 74, 53, 39, 50, 48, 61, + 63, 45, 81, 58, 53, 34, 38, 40, 122, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 218, 97, 95, 79, 106, 195, 147, 176, 170, 216, 166, 181, 185, 195, 204, + 139, 157, 154, 165, 160, 158, 176, 186, 193, 218, 161, 159, 184, 224, 213, 202, + 158, 132, 179, 138, 113, 122, 99, 118, 90, 49, 59, 70, 73, 53, 154, 117, + 121, 121, 76, 179, 83, 103, 76, 36, 59, 107, 40, 55, 50, 32, 40, 35, + 41, 31, 44, 31, 47, 39, 47, 44, 41, 45, 45, 41, 47, 53, 46, 46, + 69, 70, 57, 62, 72, 75, 75, 64, 55, 55, 41, 56, 53, 31, 72, 38, + 42, 34, 57, 50, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 52, 72, 174, + 143, 216, 186, 237, 192, 210, 224, 192, 176, 215, 166, 168, 174, 183, 150, 175, + 191, 157, 172, 191, 117, 169, 200, 211, 175, 188, 192, 148, 139, 119, 104, 87, + 97, 173, 64, 126, 54, 71, 63, 72, 77, 50, 143, 87, 80, 91, 93, 78, + 70, 27, 30, 26, 52, 37, 32, 51, 30, 68, 36, 35, 35, 33, 37, 36, + 39, 39, 41, 39, 36, 39, 37, 32, 41, 49, 41, 36, 53, 55, 56, 67, + 69, 72, 86, 79, 83, 67, 74, 76, 61, 66, 64, 40, 34, 26, 26, 19, + 33, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 60, 55, 64, 95, 142, 137, 226, 229, 221, + 194, 188, 224, 168, 163, 163, 193, 184, 195, 159, 146, 172, 157, 111, 187, 165, + 147, 189, 154, 163, 155, 159, 138, 103, 128, 108, 102, 123, 90, 161, 56, 96, + 69, 73, 64, 63, 61, 90, 75, 61, 87, 69, 44, 49, 46, 33, 40, 47, + 24, 43, 40, 27, 40, 40, 34, 35, 30, 38, 27, 41, 30, 40, 36, 43, + 39, 42, 41, 38, 50, 60, 54, 41, 42, 41, 62, 85, 72, 60, 76, 67, + 78, 57, 97, 86, 55, 90, 37, 63, 41, 43, 28, 41, 34, 41, 100, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 40, 47, 43, 75, 82, 162, 200, 211, 223, 187, 195, 169, 161, 202, + 161, 147, 159, 161, 171, 166, 160, 143, 129, 161, 144, 166, 135, 166, 107, 119, + 206, 122, 157, 146, 94, 65, 81, 83, 82, 87, 63, 76, 55, 72, 68, 60, + 69, 60, 59, 63, 55, 48, 45, 43, 40, 36, 36, 29, 36, 36, 29, 29, + 36, 38, 33, 34, 39, 30, 42, 29, 43, 35, 40, 43, 44, 44, 42, 38, + 35, 34, 34, 31, 63, 62, 59, 56, 51, 65, 66, 69, 54, 60, 86, 94, + 59, 38, 54, 86, 72, 50, 33, 46, 29, 27, 71, 113, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 57, 45, + 96, 43, 165, 172, 141, 212, 193, 210, 182, 146, 149, 170, 156, 170, 182, 134, + 216, 167, 147, 184, 175, 93, 141, 118, 154, 105, 165, 144, 132, 166, 137, 189, + 130, 82, 74, 29, 55, 119, 50, 77, 55, 61, 38, 57, 80, 44, 58, 46, + 44, 43, 40, 35, 32, 30, 31, 32, 36, 37, 33, 28, 29, 29, 26, 36, + 33, 19, 33, 30, 46, 36, 35, 44, 43, 41, 41, 41, 40, 38, 37, 55, + 73, 59, 51, 45, 38, 53, 59, 45, 72, 79, 69, 82, 97, 91, 77, 80, + 82, 60, 43, 74, 68, 67, 43, 52, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 27, 33, 55, 39, 79, 108, 154, 136, + 199, 200, 214, 193, 161, 145, 178, 172, 158, 151, 132, 167, 142, 169, 161, 135, + 97, 90, 148, 174, 176, 137, 115, 138, 185, 131, 142, 104, 135, 81, 75, 69, + 53, 88, 62, 47, 76, 77, 51, 59, 55, 33, 47, 34, 39, 43, 40, 33, + 30, 29, 31, 31, 32, 35, 37, 33, 30, 31, 36, 30, 33, 32, 40, 34, + 41, 38, 42, 43, 40, 38, 39, 42, 43, 42, 40, 63, 70, 51, 46, 43, + 32, 45, 54, 75, 85, 82, 77, 79, 74, 75, 86, 48, 59, 92, 93, 18, + 59, 30, 107, 88, 54, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 186, 52, 49, 23, 37, 48, 91, 121, 97, 116, 198, 191, 199, 189, + 165, 132, 157, 151, 162, 159, 143, 164, 125, 164, 123, 139, 110, 129, 108, 140, + 168, 142, 134, 113, 117, 161, 104, 117, 81, 58, 86, 61, 43, 83, 60, 54, + 109, 92, 76, 51, 22, 44, 27, 31, 35, 38, 34, 31, 31, 31, 32, 35, + 31, 31, 36, 36, 29, 32, 40, 26, 29, 30, 35, 32, 34, 32, 33, 41, + 40, 39, 39, 41, 43, 45, 46, 43, 48, 35, 45, 50, 37, 44, 52, 75, + 60, 60, 79, 79, 51, 59, 103, 141, 95, 92, 72, 69, 32, 65, 49, 81, + 41, 45, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 48, 58, + 53, 27, 50, 77, 78, 83, 93, 148, 191, 153, 205, 175, 184, 145, 150, 151, + 158, 138, 122, 150, 125, 114, 178, 105, 86, 118, 179, 159, 159, 179, 108, 134, + 110, 90, 137, 154, 65, 42, 65, 66, 66, 69, 66, 104, 108, 98, 71, 24, + 26, 54, 23, 33, 33, 31, 26, 29, 34, 33, 30, 41, 33, 29, 32, 33, + 27, 30, 37, 51, 38, 29, 28, 40, 45, 46, 40, 42, 44, 44, 42, 40, + 41, 47, 52, 31, 37, 27, 42, 52, 41, 46, 51, 50, 62, 66, 64, 66, + 62, 67, 84, 75, 54, 126, 54, 30, 45, 52, 51, 45, 26, 58, 151, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 41, 42, 48, 58, 48, 51, 99, 114, + 144, 63, 173, 218, 197, 190, 203, 176, 179, 127, 103, 102, 111, 119, 124, 124, + 160, 107, 82, 149, 124, 144, 182, 188, 187, 193, 167, 180, 161, 219, 188, 128, + 99, 77, 59, 79, 75, 38, 71, 100, 76, 124, 75, 10, 36, 42, 37, 43, + 44, 38, 30, 33, 40, 40, 31, 41, 33, 31, 34, 41, 46, 48, 48, 49, + 42, 42, 30, 39, 39, 57, 64, 42, 42, 40, 36, 33, 34, 39, 44, 38, + 43, 28, 33, 42, 35, 43, 48, 51, 70, 73, 63, 62, 57, 51, 52, 74, + 111, 85, 123, 48, 55, 42, 5, 35, 30, 56, 80, 113, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 184, 47, 41, 71, 94, 72, 88, 141, 203, 178, 166, 215, 227, + 231, 179, 184, 120, 117, 119, 120, 110, 94, 115, 110, 97, 129, 119, 201, 143, + 166, 138, 184, 99, 216, 188, 182, 170, 106, 150, 104, 154, 113, 112, 86, 37, + 45, 66, 59, 56, 72, 117, 89, 28, 26, 44, 46, 49, 55, 51, 40, 39, + 45, 43, 34, 38, 34, 34, 36, 49, 59, 58, 50, 31, 23, 33, 31, 56, + 52, 62, 56, 55, 50, 41, 37, 40, 42, 42, 40, 45, 56, 37, 34, 38, + 35, 43, 43, 44, 46, 54, 71, 79, 60, 50, 61, 67, 58, 75, 76, 64, + 40, 49, 32, 38, 33, 37, 30, 28, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 45, 50, + 55, 49, 107, 146, 111, 118, 154, 223, 181, 174, 218, 227, 177, 209, 170, 164, + 126, 140, 137, 98, 67, 116, 111, 82, 102, 161, 123, 194, 158, 146, 153, 86, + 147, 148, 196, 182, 161, 170, 148, 131, 123, 82, 78, 88, 76, 80, 81, 42, + 98, 66, 81, 52, 12, 70, 46, 47, 58, 57, 47, 40, 40, 38, 33, 39, + 39, 35, 34, 45, 56, 44, 26, 60, 27, 25, 49, 120, 123, 94, 40, 75, + 62, 48, 45, 53, 57, 52, 46, 41, 58, 43, 37, 41, 41, 47, 42, 45, + 51, 59, 74, 85, 75, 59, 61, 69, 103, 67, 52, 37, 37, 96, 66, 48, + 47, 43, 25, 48, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 182, 58, 42, 43, 67, 36, 50, 107, 142, + 181, 212, 189, 227, 204, 192, 220, 221, 193, 179, 184, 197, 175, 105, 108, 108, + 87, 93, 97, 91, 177, 224, 165, 187, 156, 157, 150, 144, 178, 196, 166, 168, + 138, 134, 128, 139, 98, 104, 86, 60, 51, 78, 57, 75, 58, 63, 32, 65, + 50, 57, 25, 42, 38, 34, 34, 37, 43, 44, 43, 37, 37, 38, 38, 37, + 43, 55, 63, 22, 70, 39, 72, 153, 118, 109, 63, 91, 121, 108, 100, 85, + 82, 57, 65, 86, 77, 71, 55, 37, 40, 47, 43, 48, 62, 84, 81, 81, + 72, 49, 53, 49, 46, 77, 69, 50, 91, 76, 84, 53, 47, 60, 41, 35, + 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 182, 57, 29, 76, 38, 57, 88, 67, 163, 227, 222, 208, 218, 198, + 224, 213, 222, 185, 196, 185, 190, 138, 108, 166, 93, 81, 88, 64, 82, 95, + 125, 182, 184, 156, 101, 133, 128, 143, 139, 152, 169, 169, 142, 93, 79, 111, + 74, 87, 79, 65, 57, 75, 49, 73, 55, 52, 28, 56, 53, 61, 41, 47, + 43, 42, 38, 39, 38, 39, 37, 29, 32, 33, 33, 30, 32, 41, 47, 20, + 104, 85, 198, 116, 160, 154, 180, 134, 118, 112, 85, 69, 107, 138, 107, 78, + 75, 80, 76, 68, 69, 71, 60, 73, 65, 68, 59, 53, 45, 41, 71, 41, + 64, 69, 62, 88, 120, 79, 109, 90, 99, 70, 29, 40, 44, 20, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 19, 88, + 56, 52, 60, 58, 118, 76, 177, 229, 204, 196, 235, 194, 188, 211, 168, 214, + 189, 195, 150, 186, 130, 97, 91, 101, 117, 66, 43, 139, 175, 161, 138, 133, + 118, 124, 115, 136, 145, 153, 134, 95, 115, 85, 80, 84, 51, 65, 64, 61, + 56, 72, 45, 62, 53, 41, 31, 42, 51, 51, 41, 46, 45, 46, 42, 39, + 35, 34, 35, 29, 32, 35, 35, 32, 32, 37, 41, 67, 54, 175, 137, 176, + 171, 151, 137, 139, 134, 127, 96, 119, 109, 101, 72, 71, 71, 81, 84, 82, + 84, 84, 71, 69, 54, 55, 51, 50, 48, 58, 104, 48, 21, 48, 65, 52, + 104, 102, 87, 103, 137, 81, 28, 47, 51, 37, 38, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, 68, 87, 93, 65, 41, 65, + 125, 139, 207, 222, 200, 205, 222, 208, 192, 185, 179, 176, 181, 180, 195, 174, + 71, 151, 100, 93, 68, 98, 164, 139, 142, 137, 165, 177, 146, 105, 143, 172, + 123, 140, 163, 133, 104, 54, 58, 69, 41, 52, 49, 52, 49, 69, 53, 57, + 59, 47, 48, 37, 48, 38, 34, 37, 42, 45, 43, 40, 37, 37, 39, 33, + 35, 36, 37, 36, 37, 42, 46, 79, 177, 170, 174, 168, 172, 133, 96, 109, + 95, 75, 68, 100, 70, 53, 69, 67, 68, 75, 73, 68, 72, 78, 69, 51, + 43, 49, 44, 42, 36, 30, 58, 51, 52, 43, 44, 56, 90, 78, 103, 76, + 113, 68, 29, 30, 29, 44, 43, 111, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 80, 14, 35, 60, 55, 73, 133, 99, 141, 181, 171, 194, + 196, 199, 203, 199, 175, 162, 184, 173, 188, 157, 179, 109, 124, 83, 64, 96, + 102, 79, 214, 129, 98, 151, 178, 125, 121, 95, 126, 145, 165, 217, 180, 134, + 104, 80, 55, 57, 39, 51, 47, 53, 48, 69, 59, 61, 71, 58, 61, 35, + 43, 32, 38, 32, 37, 42, 42, 40, 38, 39, 41, 36, 36, 32, 31, 33, + 35, 41, 44, 66, 142, 143, 114, 109, 112, 101, 73, 117, 79, 73, 95, 71, + 75, 91, 99, 67, 69, 76, 71, 58, 61, 70, 64, 41, 42, 48, 36, 39, + 41, 23, 28, 52, 60, 49, 49, 47, 65, 65, 98, 81, 83, 60, 50, 30, + 23, 48, 32, 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, + 93, 116, 66, 36, 125, 149, 121, 197, 214, 223, 157, 205, 214, 203, 216, 195, + 156, 161, 154, 189, 201, 161, 138, 130, 120, 86, 60, 47, 60, 170, 120, 137, + 137, 165, 134, 83, 106, 80, 87, 137, 100, 104, 106, 109, 59, 52, 43, 46, + 37, 51, 51, 58, 49, 64, 60, 64, 65, 50, 52, 27, 35, 33, 44, 35, + 36, 39, 39, 38, 37, 37, 37, 42, 40, 34, 32, 32, 35, 38, 40, 73, + 22, 109, 73, 63, 109, 62, 62, 61, 65, 58, 69, 45, 58, 52, 56, 64, + 67, 78, 80, 69, 69, 74, 65, 51, 50, 48, 29, 38, 54, 41, 43, 42, + 28, 45, 65, 24, 40, 64, 65, 93, 57, 47, 59, 43, 41, 52, 26, 33, + 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 42, 62, 40, 87, + 82, 79, 176, 205, 202, 217, 193, 204, 190, 185, 180, 194, 187, 172, 163, 140, + 196, 162, 178, 138, 101, 73, 73, 39, 128, 121, 95, 110, 135, 139, 147, 136, + 103, 73, 80, 57, 112, 117, 107, 89, 60, 71, 52, 53, 41, 49, 45, 57, + 47, 58, 52, 62, 56, 42, 43, 34, 38, 36, 39, 35, 34, 35, 34, 35, + 35, 36, 35, 42, 40, 36, 35, 36, 38, 38, 38, 28, 11, 63, 60, 51, + 24, 63, 34, 34, 58, 37, 27, 50, 54, 44, 66, 59, 58, 67, 72, 72, + 76, 74, 60, 70, 60, 51, 29, 29, 35, 22, 31, 29, 55, 34, 45, 57, + 51, 38, 75, 71, 36, 31, 35, 36, 42, 32, 23, 32, 43, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 190, 46, 67, 41, 50, 154, 108, 171, 204, 212, + 169, 195, 230, 173, 162, 217, 199, 171, 141, 174, 148, 186, 181, 146, 123, 106, + 113, 55, 102, 119, 97, 59, 76, 90, 145, 155, 146, 90, 77, 117, 49, 48, + 117, 102, 123, 89, 48, 53, 53, 69, 51, 45, 32, 47, 42, 51, 48, 66, + 55, 45, 47, 51, 51, 41, 33, 34, 30, 30, 31, 35, 37, 38, 34, 32, + 32, 31, 34, 37, 39, 38, 37, 37, 53, 45, 31, 38, 33, 47, 40, 55, + 24, 40, 49, 58, 41, 51, 37, 56, 46, 49, 54, 61, 71, 69, 50, 63, + 54, 55, 48, 49, 44, 31, 50, 46, 32, 23, 51, 37, 46, 56, 57, 65, + 49, 45, 28, 38, 46, 23, 40, 38, 40, 106, 255, 255, 255, 255, 255, 255, + 255, 255, 70, 101, 56, 48, 51, 216, 158, 216, 165, 193, 156, 183, 182, 182, + 174, 222, 215, 194, 132, 193, 183, 209, 152, 158, 189, 130, 127, 100, 88, 92, + 73, 54, 87, 170, 182, 157, 171, 144, 130, 80, 87, 81, 132, 60, 69, 71, + 49, 58, 47, 49, 54, 40, 48, 30, 44, 40, 51, 42, 45, 49, 51, 50, + 48, 43, 39, 31, 44, 39, 39, 22, 37, 33, 36, 42, 36, 32, 30, 32, + 36, 37, 38, 37, 51, 40, 53, 51, 37, 50, 38, 50, 49, 47, 46, 47, + 49, 54, 57, 59, 59, 59, 59, 59, 56, 54, 52, 44, 47, 51, 51, 43, + 36, 37, 42, 35, 40, 42, 37, 35, 41, 47, 48, 75, 84, 69, 76, 37, + 34, 38, 37, 30, 26, 37, 255, 255, 255, 255, 255, 255, 255, 189, 161, 77, + 52, 74, 48, 224, 189, 237, 169, 180, 157, 170, 140, 171, 181, 221, 188, 151, + 147, 161, 184, 187, 171, 159, 136, 73, 113, 88, 57, 87, 83, 84, 93, 195, + 175, 205, 147, 119, 81, 107, 59, 57, 116, 94, 100, 77, 36, 43, 46, 41, + 46, 40, 49, 36, 47, 42, 50, 42, 43, 46, 47, 46, 44, 41, 39, 38, + 37, 29, 41, 31, 38, 29, 34, 31, 32, 34, 35, 35, 34, 32, 31, 44, + 52, 50, 56, 55, 47, 52, 46, 51, 49, 45, 42, 41, 41, 45, 46, 51, + 54, 59, 61, 63, 59, 54, 51, 35, 39, 44, 46, 47, 46, 42, 37, 39, + 40, 38, 34, 35, 41, 44, 44, 60, 74, 69, 82, 45, 35, 32, 23, 43, + 15, 40, 122, 255, 255, 255, 255, 255, 255, 79, 61, 119, 29, 128, 178, 231, + 183, 222, 139, 191, 159, 190, 134, 168, 232, 187, 188, 167, 198, 189, 169, 141, + 160, 157, 123, 187, 63, 109, 104, 123, 78, 94, 160, 202, 165, 110, 139, 37, + 60, 31, 35, 57, 66, 64, 74, 80, 57, 63, 56, 47, 53, 49, 54, 43, + 45, 37, 38, 42, 42, 44, 43, 42, 41, 41, 41, 38, 36, 29, 46, 31, + 30, 23, 38, 33, 36, 39, 38, 35, 33, 34, 37, 50, 50, 62, 58, 59, + 57, 49, 52, 51, 49, 44, 40, 37, 35, 35, 36, 41, 46, 53, 59, 60, + 57, 52, 48, 39, 40, 38, 37, 43, 51, 47, 37, 42, 41, 37, 34, 37, + 44, 46, 43, 61, 72, 67, 76, 46, 37, 38, 30, 28, 30, 29, 41, 255, + 255, 255, 255, 255, 191, 71, 50, 93, 122, 188, 111, 207, 191, 200, 161, 153, + 168, 118, 122, 147, 178, 153, 151, 189, 155, 172, 171, 166, 142, 165, 200, 210, + 170, 140, 143, 135, 85, 129, 217, 125, 93, 45, 75, 64, 52, 26, 63, 65, + 61, 104, 109, 99, 63, 55, 43, 55, 56, 54, 54, 47, 43, 35, 32, 42, + 43, 43, 42, 42, 41, 40, 40, 28, 39, 39, 46, 24, 28, 31, 48, 48, + 48, 46, 39, 33, 34, 41, 49, 49, 44, 67, 60, 58, 63, 41, 48, 47, + 45, 42, 38, 36, 34, 34, 34, 36, 39, 45, 50, 53, 53, 52, 51, 53, + 51, 41, 30, 33, 47, 50, 43, 41, 43, 42, 39, 40, 45, 49, 48, 53, + 63, 65, 76, 57, 44, 44, 29, 28, 19, 46, 72, 133, 255, 255, 255, 255, + 36, 81, 61, 111, 160, 210, 55, 177, 163, 183, 152, 166, 157, 138, 101, 170, + 205, 158, 163, 141, 141, 144, 171, 190, 168, 198, 177, 217, 124, 135, 134, 118, + 193, 164, 144, 88, 75, 87, 41, 77, 19, 32, 26, 36, 9, 51, 64, 75, + 62, 60, 48, 42, 42, 47, 46, 51, 48, 48, 46, 42, 44, 46, 47, 47, + 45, 41, 39, 26, 43, 38, 39, 27, 51, 53, 57, 54, 52, 49, 41, 37, + 37, 45, 53, 48, 44, 68, 61, 60, 63, 39, 45, 45, 44, 40, 39, 39, + 39, 40, 41, 40, 40, 38, 40, 43, 48, 52, 55, 55, 57, 50, 37, 34, + 43, 49, 49, 40, 47, 51, 44, 38, 38, 43, 46, 31, 46, 65, 87, 82, + 58, 45, 14, 32, 45, 96, 43, 65, 255, 255, 255, 255, 53, 65, 103, 190, + 173, 156, 133, 191, 142, 106, 170, 137, 164, 131, 86, 218, 189, 206, 123, 115, + 183, 142, 190, 182, 165, 208, 136, 135, 135, 153, 132, 198, 121, 160, 119, 93, + 44, 44, 55, 44, 47, 72, 62, 96, 41, 29, 33, 52, 62, 60, 44, 37, + 34, 42, 38, 51, 46, 51, 47, 40, 42, 45, 47, 47, 45, 40, 38, 33, + 42, 28, 32, 40, 79, 71, 56, 43, 45, 46, 44, 42, 41, 44, 47, 53, + 53, 64, 61, 58, 56, 43, 44, 43, 42, 41, 41, 42, 43, 45, 45, 45, + 43, 40, 40, 43, 47, 53, 56, 43, 49, 54, 52, 45, 42, 45, 50, 39, + 50, 55, 47, 35, 30, 32, 35, 38, 43, 59, 79, 89, 70, 62, 25, 116, + 47, 29, 66, 62, 76, 255, 255, 255, 56, 121, 203, 208, 155, 139, 191, 139, + 167, 168, 194, 160, 147, 161, 74, 193, 193, 177, 138, 144, 143, 128, 189, 186, + 134, 179, 182, 132, 135, 190, 121, 165, 141, 180, 87, 137, 53, 39, 48, 56, + 42, 71, 62, 25, 27, 33, 50, 41, 41, 50, 52, 43, 38, 48, 39, 54, + 42, 48, 40, 41, 42, 40, 41, 41, 40, 40, 39, 38, 41, 27, 38, 45, + 74, 61, 49, 36, 36, 36, 37, 41, 43, 46, 48, 61, 66, 58, 58, 52, + 44, 49, 44, 44, 44, 44, 44, 42, 42, 43, 43, 41, 42, 42, 44, 45, + 46, 46, 46, 38, 40, 49, 56, 50, 39, 39, 48, 37, 47, 53, 47, 38, + 33, 31, 30, 55, 43, 46, 56, 79, 71, 78, 45, 108, 70, 35, 78, 43, + 101, 255, 255, 255, 47, 74, 211, 129, 172, 172, 155, 206, 164, 155, 198, 203, + 171, 140, 68, 126, 149, 151, 178, 155, 111, 161, 109, 156, 160, 165, 152, 110, + 196, 117, 144, 96, 171, 173, 134, 63, 60, 43, 32, 49, 46, 39, 40, 41, + 48, 28, 48, 37, 44, 44, 40, 45, 39, 52, 43, 58, 46, 49, 39, 38, + 37, 34, 33, 33, 34, 36, 37, 35, 41, 37, 49, 39, 49, 39, 43, 38, + 32, 27, 27, 35, 44, 52, 57, 65, 72, 49, 51, 45, 34, 52, 45, 46, + 46, 45, 44, 41, 40, 39, 39, 34, 38, 42, 46, 47, 43, 38, 34, 44, + 37, 41, 52, 47, 33, 34, 47, 34, 43, 49, 48, 44, 41, 37, 32, 47, + 30, 33, 46, 78, 68, 77, 40, 61, 28, 62, 41, 38, 39, 255, 255, 255, + 31, 135, 174, 204, 175, 187, 159, 185, 151, 146, 176, 169, 164, 110, 97, 170, + 71, 133, 103, 108, 152, 74, 88, 142, 108, 145, 110, 133, 74, 67, 135, 171, + 131, 137, 87, 50, 47, 35, 46, 45, 67, 43, 62, 48, 54, 51, 39, 37, + 44, 37, 22, 28, 34, 44, 29, 37, 100, 54, 30, 35, 35, 31, 18, 43, + 18, 48, 23, 31, 40, 33, 54, 58, 42, 48, 33, 31, 25, 36, 46, 38, + 33, 41, 45, 46, 40, 33, 31, 34, 38, 41, 41, 44, 45, 45, 45, 44, + 41, 38, 35, 35, 32, 32, 39, 48, 53, 50, 45, 50, 38, 43, 56, 45, + 59, 33, 53, 43, 43, 45, 48, 46, 40, 39, 41, 41, 44, 30, 33, 42, + 71, 93, 47, 44, 21, 35, 48, 28, 41, 71, 255, 255, 72, 153, 198, 185, + 170, 179, 155, 173, 150, 141, 160, 174, 162, 112, 106, 109, 117, 141, 113, 125, + 106, 105, 86, 124, 97, 141, 112, 95, 68, 66, 115, 128, 101, 116, 75, 33, + 40, 59, 50, 50, 43, 37, 58, 58, 55, 44, 30, 30, 39, 43, 40, 43, + 33, 40, 38, 47, 89, 46, 35, 28, 30, 38, 30, 29, 33, 35, 37, 32, + 50, 49, 53, 40, 26, 45, 49, 50, 39, 34, 33, 32, 40, 43, 31, 30, + 30, 31, 34, 37, 39, 39, 37, 47, 49, 50, 48, 44, 39, 37, 37, 35, + 32, 31, 35, 41, 44, 43, 40, 49, 36, 39, 52, 44, 57, 33, 48, 39, + 41, 47, 52, 49, 40, 34, 34, 38, 43, 30, 34, 36, 58, 83, 50, 28, + 36, 46, 57, 61, 51, 43, 255, 255, 144, 139, 135, 169, 180, 141, 160, 126, + 180, 153, 190, 157, 148, 164, 169, 76, 94, 124, 160, 123, 92, 96, 127, 84, + 100, 127, 101, 95, 99, 94, 117, 99, 89, 102, 73, 36, 29, 55, 37, 64, + 45, 41, 44, 50, 47, 44, 41, 40, 40, 38, 37, 36, 32, 51, 52, 40, + 51, 32, 55, 36, 18, 90, 23, 70, 26, 50, 43, 39, 49, 45, 48, 46, + 39, 44, 36, 53, 44, 35, 26, 26, 42, 43, 23, 36, 38, 40, 39, 37, + 36, 35, 35, 49, 51, 52, 49, 43, 38, 36, 36, 32, 32, 31, 32, 34, + 37, 40, 42, 50, 38, 37, 48, 47, 55, 37, 44, 34, 35, 39, 43, 42, + 36, 34, 36, 37, 40, 33, 35, 31, 43, 70, 59, 40, 63, 47, 45, 72, + 53, 29, 255, 255, 202, 172, 149, 154, 170, 180, 168, 172, 176, 168, 160, 164, + 128, 162, 165, 117, 95, 109, 111, 108, 103, 59, 120, 54, 86, 120, 76, 88, + 96, 84, 98, 71, 72, 75, 57, 52, 35, 50, 37, 74, 63, 54, 51, 43, + 42, 44, 49, 48, 39, 32, 31, 33, 34, 55, 53, 37, 36, 32, 61, 33, + 40, 75, 56, 57, 44, 40, 41, 50, 45, 36, 37, 44, 48, 47, 37, 46, + 37, 34, 31, 27, 35, 38, 28, 42, 42, 40, 36, 32, 32, 37, 42, 48, + 47, 45, 44, 42, 39, 35, 33, 29, 31, 32, 31, 32, 36, 43, 49, 53, + 42, 38, 46, 51, 54, 43, 42, 37, 33, 31, 33, 34, 36, 44, 53, 36, + 39, 38, 39, 31, 36, 59, 73, 62, 74, 47, 40, 67, 51, 34, 66, 255, + 149, 91, 61, 167, 197, 184, 204, 163, 182, 151, 140, 171, 164, 159, 139, 153, + 124, 129, 71, 134, 131, 103, 94, 105, 113, 145, 94, 71, 64, 47, 68, 58, + 62, 55, 46, 35, 31, 46, 40, 54, 48, 36, 44, 45, 41, 40, 42, 41, + 37, 37, 41, 49, 37, 40, 39, 51, 57, 49, 45, 50, 69, 57, 71, 57, + 57, 60, 53, 55, 47, 43, 31, 27, 34, 47, 63, 65, 36, 24, 31, 32, + 31, 32, 30, 27, 29, 30, 30, 31, 35, 42, 49, 43, 38, 34, 35, 39, + 40, 35, 29, 29, 32, 33, 32, 31, 33, 40, 46, 52, 44, 38, 43, 53, + 49, 48, 40, 43, 38, 34, 34, 36, 40, 51, 61, 33, 36, 42, 38, 32, + 34, 49, 75, 65, 60, 51, 55, 62, 53, 42, 50, 255, 207, 102, 117, 181, + 173, 189, 162, 179, 150, 186, 167, 165, 192, 159, 151, 143, 100, 125, 109, 96, + 99, 116, 68, 112, 134, 89, 68, 73, 56, 41, 55, 61, 59, 46, 41, 40, + 34, 47, 47, 65, 57, 31, 28, 34, 39, 44, 47, 46, 44, 42, 40, 42, + 36, 39, 31, 48, 51, 52, 39, 43, 47, 31, 29, 46, 32, 62, 41, 52, + 37, 43, 42, 40, 42, 44, 65, 92, 43, 16, 27, 34, 33, 30, 27, 23, + 27, 33, 37, 39, 40, 40, 41, 37, 32, 28, 31, 36, 39, 35, 31, 33, + 35, 36, 34, 31, 29, 31, 34, 48, 44, 38, 38, 52, 41, 49, 36, 40, + 37, 36, 37, 37, 37, 42, 49, 30, 32, 40, 34, 35, 36, 37, 65, 76, + 56, 54, 60, 51, 47, 48, 45, 255, 255, 151, 167, 155, 158, 163, 195, 180, + 171, 189, 186, 176, 173, 135, 147, 144, 97, 119, 108, 85, 95, 119, 70, 114, + 131, 72, 74, 61, 51, 50, 40, 50, 38, 30, 29, 66, 49, 70, 58, 97, + 77, 59, 46, 33, 46, 55, 54, 51, 49, 42, 33, 27, 31, 42, 33, 40, + 26, 42, 42, 59, 67, 41, 69, 52, 82, 65, 63, 48, 24, 39, 49, 53, + 52, 50, 82, 74, 40, 24, 29, 31, 32, 33, 29, 33, 34, 37, 40, 42, + 41, 37, 34, 33, 33, 33, 33, 34, 34, 36, 37, 35, 37, 39, 38, 35, + 32, 29, 28, 46, 47, 40, 37, 52, 35, 52, 36, 40, 36, 34, 35, 34, + 33, 38, 45, 33, 34, 39, 29, 37, 41, 27, 49, 93, 73, 59, 53, 45, + 42, 49, 55, 255, 255, 225, 181, 190, 172, 169, 188, 176, 153, 189, 192, 186, + 184, 183, 158, 162, 128, 154, 105, 112, 104, 122, 38, 121, 76, 115, 104, 43, + 49, 63, 35, 45, 31, 33, 35, 43, 35, 77, 40, 80, 42, 57, 60, 54, + 63, 59, 43, 37, 44, 46, 40, 38, 28, 33, 33, 49, 27, 40, 37, 47, + 32, 67, 46, 74, 66, 50, 36, 45, 26, 45, 43, 29, 32, 65, 138, 30, + 30, 38, 38, 27, 27, 36, 36, 32, 29, 26, 29, 34, 39, 41, 40, 31, + 37, 41, 38, 32, 30, 36, 42, 35, 37, 40, 43, 42, 38, 33, 30, 46, + 50, 44, 39, 54, 34, 56, 38, 48, 41, 35, 33, 33, 36, 47, 58, 37, + 37, 42, 27, 42, 48, 23, 41, 96, 90, 69, 59, 60, 46, 41, 58, 114, + 255, 255, 220, 165, 143, 206, 202, 170, 176, 160, 178, 209, 160, 185, 158, 158, + 162, 137, 112, 100, 90, 77, 53, 118, 83, 63, 54, 84, 42, 31, 54, 43, + 13, 33, 19, 47, 41, 43, 46, 48, 45, 49, 55, 47, 60, 69, 61, 31, + 75, 31, 40, 38, 36, 34, 35, 37, 37, 34, 31, 32, 45, 36, 68, 46, + 42, 51, 47, 26, 51, 32, 42, 30, 39, 112, 101, 30, 31, 31, 32, 33, + 32, 32, 31, 34, 35, 37, 39, 39, 37, 35, 34, 33, 35, 37, 35, 33, + 33, 36, 39, 44, 43, 40, 35, 30, 29, 32, 36, 40, 43, 43, 40, 40, + 43, 42, 39, 46, 29, 42, 34, 35, 54, 42, 37, 36, 36, 35, 35, 41, + 44, 39, 31, 67, 97, 77, 47, 49, 49, 67, 47, 35, 255, 255, 255, 255, + 255, 236, 203, 185, 193, 185, 191, 189, 168, 172, 152, 148, 148, 104, 107, 118, + 159, 73, 100, 115, 171, 76, 75, 52, 67, 33, 28, 76, 43, 61, 35, 40, + 35, 39, 46, 52, 50, 51, 53, 58, 56, 60, 68, 59, 105, 56, 54, 42, + 39, 35, 35, 35, 35, 32, 30, 39, 48, 38, 63, 43, 42, 54, 51, 47, + 27, 27, 44, 41, 38, 69, 99, 32, 34, 35, 37, 38, 39, 40, 40, 37, + 37, 37, 36, 35, 32, 30, 29, 31, 33, 35, 35, 34, 35, 38, 41, 39, + 41, 41, 39, 35, 33, 33, 35, 36, 40, 41, 39, 38, 40, 38, 34, 43, + 29, 47, 47, 45, 53, 38, 33, 44, 41, 34, 34, 39, 45, 44, 36, 65, + 98, 68, 71, 43, 49, 44, 42, 47, 255, 255, 255, 255, 255, 255, 255, 255, + 237, 210, 205, 168, 172, 163, 155, 147, 144, 89, 119, 87, 99, 139, 103, 76, + 86, 127, 94, 19, 95, 80, 77, 46, 65, 40, 42, 41, 37, 42, 50, 58, + 56, 52, 49, 48, 40, 44, 62, 63, 99, 57, 56, 46, 43, 38, 35, 34, + 33, 32, 31, 38, 44, 43, 62, 47, 46, 54, 49, 52, 24, 47, 37, 31, + 41, 57, 140, 35, 36, 37, 38, 39, 40, 40, 40, 37, 36, 34, 32, 31, + 30, 29, 29, 30, 32, 33, 34, 33, 33, 35, 37, 33, 36, 40, 41, 39, + 37, 35, 35, 35, 39, 40, 38, 38, 39, 37, 33, 43, 29, 46, 53, 48, + 45, 33, 32, 51, 44, 33, 31, 38, 47, 47, 39, 56, 77, 74, 70, 84, + 75, 69, 47, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, + 189, 184, 172, 149, 127, 83, 102, 89, 129, 132, 99, 102, 97, 112, 141, 29, + 54, 140, 76, 33, 30, 42, 40, 47, 42, 43, 47, 54, 53, 46, 39, 34, + 33, 41, 55, 45, 63, 39, 52, 50, 46, 41, 37, 35, 36, 37, 38, 34, + 39, 52, 66, 56, 51, 50, 40, 36, 36, 57, 24, 26, 54, 60, 123, 36, + 36, 36, 36, 35, 34, 32, 31, 35, 33, 31, 30, 30, 31, 33, 34, 33, + 33, 33, 32, 31, 29, 29, 28, 29, 32, 36, 38, 39, 38, 36, 35, 39, + 41, 40, 37, 37, 40, 41, 38, 47, 31, 39, 49, 42, 33, 31, 37, 53, + 46, 36, 32, 42, 51, 48, 40, 35, 88, 67, 104, 60, 102, 47, 38, 60, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 190, 174, 150, + 118, 104, 90, 79, 137, 98, 84, 90, 100, 67, 108, 122, 92, 101, 82, 58, + 56, 45, 19, 47, 41, 38, 38, 44, 45, 42, 34, 42, 42, 46, 53, 39, + 44, 35, 51, 49, 47, 43, 39, 38, 40, 43, 46, 45, 44, 63, 64, 57, + 51, 46, 35, 27, 38, 34, 21, 44, 60, 41, 34, 37, 37, 37, 36, 35, + 34, 33, 32, 37, 35, 32, 31, 31, 32, 35, 36, 34, 34, 34, 34, 33, + 32, 30, 28, 29, 29, 30, 32, 34, 35, 36, 36, 40, 41, 38, 33, 33, + 39, 43, 43, 47, 34, 37, 51, 43, 31, 34, 36, 50, 45, 39, 36, 44, + 51, 47, 37, 22, 56, 89, 95, 95, 85, 67, 65, 70, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 159, 139, 109, 111, 78, 71, + 124, 153, 96, 100, 80, 96, 93, 74, 149, 86, 133, 44, 30, 11, 52, 44, + 41, 38, 36, 42, 48, 49, 43, 49, 43, 37, 41, 39, 42, 37, 39, 44, + 43, 42, 39, 38, 40, 45, 49, 63, 52, 68, 52, 49, 47, 45, 36, 34, + 39, 22, 35, 50, 40, 36, 17, 36, 37, 38, 40, 41, 41, 41, 41, 41, + 39, 36, 33, 32, 31, 32, 33, 33, 33, 34, 36, 39, 39, 37, 35, 31, + 29, 27, 28, 31, 33, 35, 35, 37, 38, 35, 30, 32, 39, 44, 45, 41, + 38, 39, 57, 52, 38, 42, 32, 45, 45, 41, 40, 43, 47, 45, 35, 45, + 49, 38, 99, 86, 108, 50, 68, 66, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 152, 124, 97, 82, 58, 73, 154, 117, 105, 112, + 121, 65, 97, 44, 60, 49, 40, 73, 45, 35, 18, 37, 39, 39, 36, 41, + 49, 53, 49, 44, 41, 33, 33, 38, 39, 39, 30, 38, 38, 38, 36, 34, + 35, 40, 44, 60, 43, 64, 40, 42, 44, 44, 37, 39, 36, 30, 41, 34, + 26, 45, 45, 34, 35, 37, 39, 40, 41, 41, 41, 40, 39, 36, 34, 32, + 32, 32, 32, 32, 31, 33, 36, 40, 41, 38, 36, 33, 30, 28, 29, 31, + 33, 33, 32, 32, 35, 35, 34, 36, 43, 46, 45, 40, 42, 37, 53, 52, + 44, 51, 32, 42, 44, 42, 39, 39, 42, 43, 36, 40, 24, 50, 84, 164, + 205, 198, 196, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 146, 126, 115, 86, 85, 118, 135, 108, 154, 81, 114, 77, 96, 80, + 35, 104, 20, 27, 54, 42, 31, 27, 33, 35, 33, 35, 44, 46, 43, 40, + 49, 48, 41, 43, 38, 47, 36, 35, 35, 37, 32, 32, 31, 37, 38, 39, + 22, 52, 30, 41, 43, 39, 31, 32, 19, 24, 29, 24, 35, 42, 27, 34, + 33, 34, 34, 35, 34, 34, 34, 35, 35, 34, 33, 33, 34, 34, 35, 32, + 31, 31, 34, 37, 37, 33, 29, 34, 32, 30, 31, 34, 34, 32, 29, 30, + 35, 39, 40, 43, 48, 49, 46, 43, 45, 31, 42, 43, 43, 57, 36, 41, + 43, 42, 36, 35, 40, 42, 40, 32, 62, 87, 86, 134, 213, 219, 220, 212, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 102, + 90, 89, 102, 135, 115, 92, 121, 93, 122, 103, 91, 75, 29, 103, 52, 24, + 52, 29, 33, 46, 31, 28, 39, 41, 32, 35, 51, 42, 40, 40, 39, 43, + 41, 40, 34, 43, 40, 40, 34, 33, 32, 40, 40, 37, 31, 27, 26, 32, + 38, 32, 21, 22, 16, 17, 24, 32, 35, 38, 39, 37, 32, 31, 34, 35, + 34, 36, 41, 34, 36, 38, 36, 32, 31, 32, 34, 43, 36, 31, 34, 41, + 44, 41, 35, 28, 32, 32, 30, 33, 38, 35, 28, 35, 38, 35, 33, 42, + 52, 46, 31, 55, 45, 36, 34, 39, 42, 38, 32, 43, 37, 37, 42, 40, + 34, 36, 46, 23, 50, 103, 57, 147, 198, 189, 195, 214, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 121, 90, 109, 150, + 97, 86, 78, 108, 105, 107, 69, 146, 68, 75, 70, 89, 9, 55, 28, 48, + 39, 34, 39, 47, 48, 46, 43, 44, 43, 42, 42, 42, 42, 40, 38, 40, + 41, 40, 37, 32, 31, 33, 30, 24, 25, 29, 29, 33, 39, 38, 31, 27, + 21, 14, 15, 22, 31, 42, 46, 35, 29, 30, 35, 37, 36, 39, 43, 41, + 43, 44, 42, 39, 37, 38, 40, 38, 37, 37, 37, 39, 40, 41, 42, 28, + 34, 36, 33, 31, 34, 34, 32, 35, 31, 31, 38, 46, 48, 44, 41, 50, + 43, 36, 35, 39, 41, 38, 35, 38, 33, 33, 39, 40, 35, 38, 47, 42, + 36, 84, 102, 180, 206, 192, 198, 195, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 112, 101, 120, 140, 153, 93, 84, 65, 112, + 101, 113, 82, 57, 44, 35, 32, 68, 24, 113, 49, 37, 41, 40, 35, 39, + 45, 43, 33, 39, 41, 42, 41, 39, 37, 37, 37, 35, 36, 37, 35, 32, + 30, 30, 27, 26, 30, 38, 36, 31, 32, 34, 32, 34, 33, 25, 15, 19, + 32, 45, 45, 35, 31, 32, 37, 39, 37, 38, 41, 34, 35, 36, 35, 32, + 31, 31, 32, 33, 38, 42, 40, 36, 35, 40, 46, 30, 37, 40, 35, 31, + 32, 34, 35, 38, 30, 31, 44, 48, 41, 39, 47, 42, 39, 37, 36, 38, + 39, 40, 39, 36, 32, 32, 38, 40, 37, 40, 47, 51, 37, 81, 153, 191, + 191, 190, 189, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 119, 120, 181, 126, 132, 107, 86, 90, 91, 107, 115, 124, 76, + 58, 43, 50, 29, 30, 45, 29, 27, 39, 42, 35, 27, 29, 35, 37, 36, + 39, 42, 41, 37, 35, 36, 38, 33, 34, 35, 36, 36, 36, 36, 34, 28, + 29, 37, 34, 29, 26, 28, 28, 31, 38, 36, 24, 26, 38, 48, 40, 41, + 37, 38, 42, 42, 37, 36, 38, 42, 42, 41, 41, 39, 38, 38, 38, 34, + 39, 42, 39, 34, 32, 37, 42, 37, 38, 38, 35, 33, 34, 35, 36, 40, + 37, 38, 44, 43, 37, 36, 42, 35, 36, 37, 37, 37, 38, 40, 42, 37, + 33, 32, 36, 39, 38, 40, 44, 38, 44, 92, 186, 181, 176, 195, 186, 186, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 109, + 106, 174, 132, 118, 115, 87, 101, 76, 96, 101, 138, 98, 66, 41, 53, 23, + 64, 32, 32, 43, 41, 40, 39, 35, 29, 35, 44, 32, 35, 38, 38, 35, + 33, 35, 37, 34, 33, 32, 32, 33, 36, 37, 37, 23, 23, 26, 31, 33, + 32, 32, 30, 25, 35, 37, 25, 25, 35, 44, 40, 40, 38, 40, 43, 43, + 39, 38, 40, 42, 42, 41, 40, 40, 39, 38, 37, 38, 38, 37, 35, 33, + 32, 32, 33, 44, 38, 32, 33, 37, 38, 36, 34, 36, 43, 44, 38, 35, + 39, 39, 35, 30, 33, 36, 37, 37, 37, 39, 41, 39, 35, 33, 35, 36, + 36, 38, 40, 27, 40, 89, 203, 196, 189, 208, 200, 189, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 101, 116, 154, 121, + 107, 87, 81, 80, 76, 83, 109, 109, 95, 59, 37, 21, 32, 39, 25, 57, + 41, 31, 35, 42, 40, 36, 39, 31, 35, 37, 38, 38, 38, 39, 40, 38, + 36, 32, 32, 33, 35, 36, 35, 34, 27, 28, 32, 36, 33, 29, 25, 24, + 31, 31, 20, 18, 26, 37, 42, 36, 34, 36, 41, 43, 41, 42, 45, 37, + 35, 33, 33, 34, 34, 32, 30, 40, 36, 32, 32, 33, 33, 31, 28, 47, + 36, 28, 31, 38, 40, 38, 35, 31, 42, 43, 33, 32, 41, 42, 34, 30, + 32, 35, 37, 37, 37, 37, 37, 39, 36, 33, 33, 35, 37, 38, 37, 37, + 30, 61, 185, 214, 202, 200, 201, 197, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 227, 156, 107, 136, 123, 104, 88, 73, 92, + 70, 74, 91, 117, 78, 60, 55, 55, 14, 45, 68, 48, 45, 38, 35, 36, + 39, 36, 33, 34, 34, 36, 39, 42, 44, 44, 43, 38, 36, 34, 35, 38, + 39, 37, 35, 41, 34, 34, 37, 37, 31, 23, 21, 21, 25, 29, 26, 20, + 20, 28, 36, 34, 31, 32, 37, 39, 39, 41, 45, 44, 42, 40, 40, 41, + 41, 39, 37, 37, 34, 31, 31, 33, 34, 33, 31, 45, 35, 28, 31, 36, + 37, 38, 40, 37, 37, 36, 34, 34, 36, 36, 34, 31, 32, 34, 37, 38, + 37, 34, 32, 37, 35, 32, 32, 35, 39, 38, 37, 42, 31, 37, 123, 196, + 207, 193, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 127, 121, 149, 117, 109, 90, 87, 95, 78, 74, 99, 113, + 90, 81, 29, 40, 61, 44, 26, 31, 53, 60, 41, 27, 32, 38, 37, 35, + 36, 36, 40, 46, 49, 48, 46, 35, 35, 37, 41, 46, 47, 44, 38, 34, + 30, 33, 38, 36, 30, 26, 27, 17, 22, 33, 38, 31, 20, 21, 30, 33, + 32, 31, 34, 35, 34, 36, 41, 38, 35, 33, 33, 35, 35, 33, 30, 32, + 33, 33, 33, 33, 34, 36, 37, 42, 34, 30, 33, 34, 33, 37, 44, 46, + 35, 32, 38, 38, 29, 27, 33, 32, 32, 34, 36, 38, 37, 33, 29, 35, + 33, 31, 30, 35, 41, 40, 39, 27, 35, 26, 65, 163, 215, 210, 218, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 106, 107, 158, 126, 108, 85, 81, 88, 84, 82, 92, 116, 87, 59, 51, 53, + 67, 57, 32, 34, 30, 55, 51, 45, 44, 24, 39, 36, 44, 45, 47, 52, + 45, 39, 44, 44, 31, 32, 40, 40, 39, 35, 24, 36, 34, 35, 37, 39, + 38, 31, 24, 15, 23, 36, 38, 28, 16, 21, 33, 29, 33, 34, 34, 33, + 33, 35, 36, 37, 33, 30, 29, 32, 33, 32, 30, 34, 34, 34, 33, 33, + 32, 32, 31, 37, 35, 32, 33, 36, 40, 43, 44, 43, 39, 35, 35, 39, + 40, 36, 31, 33, 32, 31, 34, 37, 38, 35, 32, 35, 39, 38, 35, 35, + 36, 33, 29, 49, 31, 35, 45, 124, 196, 244, 222, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 108, 142, 115, + 98, 87, 80, 71, 65, 77, 91, 101, 66, 73, 38, 76, 59, 81, 49, 39, + 37, 49, 48, 43, 37, 24, 32, 39, 42, 36, 37, 47, 46, 43, 50, 53, + 48, 52, 51, 37, 31, 36, 36, 31, 29, 27, 27, 29, 29, 30, 27, 23, + 26, 32, 34, 32, 21, 23, 29, 30, 34, 35, 35, 34, 34, 35, 37, 37, + 34, 31, 31, 32, 34, 33, 31, 33, 33, 33, 32, 32, 32, 32, 32, 32, + 31, 31, 32, 34, 34, 33, 31, 42, 38, 35, 35, 37, 37, 34, 32, 33, + 31, 29, 31, 34, 37, 38, 37, 32, 36, 36, 35, 36, 39, 37, 33, 38, + 30, 28, 28, 65, 113, 141, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 141, 134, 153, 123, 94, 87, 83, 66, + 67, 88, 92, 96, 79, 76, 64, 64, 63, 70, 54, 40, 43, 40, 48, 46, + 38, 38, 35, 48, 47, 40, 42, 53, 52, 48, 55, 56, 49, 50, 47, 30, + 25, 32, 35, 31, 31, 30, 27, 27, 28, 35, 38, 33, 28, 30, 33, 36, + 27, 24, 25, 31, 35, 36, 36, 35, 35, 36, 37, 36, 34, 32, 32, 33, + 34, 33, 32, 32, 32, 32, 32, 32, 33, 33, 33, 30, 31, 33, 36, 38, + 36, 32, 28, 39, 38, 36, 35, 34, 33, 33, 32, 33, 30, 28, 28, 32, + 37, 40, 41, 32, 37, 36, 35, 34, 38, 38, 35, 34, 40, 39, 40, 48, + 94, 115, 107, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 129, 129, 140, 144, 97, 84, 86, 74, 84, 102, 93, 100, + 95, 84, 81, 53, 52, 47, 42, 37, 44, 30, 46, 52, 45, 59, 48, 51, + 55, 53, 57, 62, 52, 45, 53, 54, 39, 36, 38, 34, 33, 34, 26, 32, + 34, 35, 30, 26, 27, 34, 39, 35, 31, 30, 35, 36, 29, 24, 23, 33, + 36, 37, 37, 35, 35, 36, 38, 33, 33, 32, 32, 32, 33, 32, 32, 32, + 32, 33, 33, 34, 34, 35, 35, 29, 30, 33, 37, 40, 40, 36, 33, 38, + 38, 37, 34, 31, 30, 31, 33, 32, 30, 29, 30, 32, 35, 38, 39, 37, + 40, 38, 35, 33, 36, 36, 32, 24, 37, 33, 43, 46, 108, 132, 137, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 155, 153, 155, 152, 103, 88, 89, 77, 88, 106, 98, 97, 79, 99, 63, 70, + 31, 53, 39, 43, 48, 28, 41, 51, 46, 59, 45, 44, 50, 52, 54, 52, + 38, 35, 51, 45, 34, 35, 41, 38, 37, 37, 30, 28, 32, 35, 29, 22, + 19, 22, 25, 31, 30, 32, 36, 34, 25, 22, 25, 33, 37, 38, 37, 35, + 35, 36, 37, 30, 31, 32, 32, 31, 31, 31, 32, 33, 33, 34, 35, 35, + 36, 36, 36, 30, 30, 31, 33, 35, 36, 35, 33, 39, 39, 37, 33, 30, + 29, 30, 32, 30, 31, 32, 33, 34, 34, 34, 34, 36, 39, 37, 34, 32, + 36, 34, 33, 30, 38, 28, 37, 45, 105, 126, 124, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 149, 143, 153, + 118, 104, 97, 80, 85, 105, 112, 92, 79, 91, 69, 63, 39, 51, 48, 54, + 51, 35, 34, 39, 40, 42, 31, 45, 49, 49, 48, 43, 30, 36, 62, 32, + 34, 46, 49, 34, 27, 34, 36, 28, 33, 38, 34, 25, 18, 13, 14, 24, + 27, 34, 38, 35, 26, 23, 26, 33, 36, 37, 36, 35, 34, 34, 36, 29, + 31, 33, 33, 32, 31, 32, 33, 34, 34, 34, 35, 35, 35, 35, 35, 40, + 37, 35, 34, 35, 36, 35, 34, 42, 39, 35, 32, 31, 30, 31, 31, 29, + 31, 34, 35, 34, 32, 32, 33, 31, 35, 33, 32, 31, 37, 37, 35, 39, + 43, 40, 41, 56, 105, 124, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 157, 154, 143, 158, 131, 110, 99, 91, + 91, 103, 117, 99, 92, 82, 85, 55, 56, 50, 57, 60, 49, 44, 31, 32, + 38, 28, 24, 52, 53, 51, 51, 48, 34, 39, 64, 27, 29, 43, 47, 32, + 26, 34, 37, 35, 39, 43, 39, 31, 21, 15, 12, 21, 24, 33, 39, 38, + 30, 25, 26, 33, 36, 37, 36, 34, 32, 33, 34, 30, 33, 36, 36, 35, + 33, 34, 36, 33, 33, 33, 33, 33, 32, 32, 32, 42, 40, 38, 38, 39, + 39, 37, 36, 45, 40, 34, 31, 32, 33, 32, 30, 28, 30, 33, 32, 31, + 31, 34, 37, 30, 33, 32, 30, 30, 36, 36, 35, 27, 33, 42, 31, 53, + 93, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 166, 168, 157, 170, 138, 104, 92, 101, 100, 99, 106, 107, + 83, 97, 70, 79, 50, 70, 63, 57, 42, 46, 25, 27, 43, 26, 29, 50, + 52, 50, 55, 55, 36, 32, 51, 32, 25, 31, 40, 37, 37, 40, 34, 34, + 37, 40, 40, 32, 25, 17, 13, 25, 26, 33, 41, 42, 33, 26, 25, 32, + 35, 36, 35, 33, 32, 32, 34, 31, 35, 38, 37, 37, 33, 36, 38, 32, + 32, 32, 31, 30, 30, 29, 29, 33, 33, 33, 35, 37, 38, 36, 34, 47, + 40, 33, 31, 33, 35, 33, 29, 28, 29, 30, 29, 29, 31, 37, 42, 33, + 36, 33, 29, 28, 31, 32, 31, 33, 39, 51, 27, 46, 81, 136, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 156, 150, 147, 148, 151, 115, 121, 102, 111, 120, 92, 102, 95, 83, 79, 60, + 78, 65, 79, 60, 61, 41, 42, 26, 40, 32, 38, 28, 46, 60, 32, 23, + 42, 39, 39, 34, 30, 29, 31, 31, 34, 39, 45, 26, 25, 29, 31, 29, + 26, 28, 31, 41, 19, 43, 38, 38, 37, 6, 25, 30, 34, 35, 35, 36, + 37, 36, 36, 36, 36, 34, 30, 29, 26, 30, 32, 35, 34, 33, 33, 32, + 31, 30, 30, 32, 32, 33, 34, 35, 35, 36, 37, 36, 36, 34, 33, 31, + 30, 29, 28, 32, 31, 28, 27, 28, 31, 34, 38, 32, 34, 34, 31, 29, + 28, 28, 30, 38, 32, 39, 35, 44, 89, 141, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 150, 144, 166, + 162, 118, 124, 113, 122, 136, 118, 90, 86, 80, 75, 56, 71, 61, 77, 57, + 55, 41, 44, 29, 39, 38, 48, 28, 22, 38, 38, 35, 30, 27, 45, 18, + 27, 33, 34, 34, 39, 39, 32, 23, 23, 29, 31, 29, 25, 29, 31, 35, + 17, 45, 40, 38, 36, 7, 25, 29, 34, 34, 35, 36, 37, 35, 35, 34, + 34, 31, 29, 26, 25, 27, 30, 34, 34, 33, 32, 31, 31, 30, 30, 33, + 33, 34, 35, 36, 37, 37, 38, 34, 34, 33, 32, 31, 30, 29, 29, 32, + 30, 29, 28, 28, 31, 34, 38, 39, 39, 37, 34, 32, 32, 29, 27, 18, + 28, 46, 25, 49, 140, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 170, 168, 195, 162, 159, 118, 135, 132, + 131, 135, 118, 94, 83, 74, 70, 67, 82, 66, 71, 46, 50, 52, 61, 46, + 39, 30, 41, 25, 51, 66, 36, 37, 64, 55, 34, 26, 37, 42, 35, 28, + 27, 24, 12, 22, 23, 31, 34, 29, 22, 23, 28, 23, 12, 40, 41, 39, + 36, 12, 28, 29, 34, 35, 36, 37, 37, 37, 37, 33, 33, 33, 31, 28, + 27, 28, 29, 33, 33, 33, 32, 31, 31, 30, 30, 32, 32, 33, 33, 34, + 35, 35, 36, 32, 32, 31, 31, 30, 30, 30, 29, 31, 30, 29, 28, 29, + 31, 34, 38, 44, 41, 38, 35, 35, 34, 29, 26, 19, 37, 36, 50, 58, + 193, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 223, 168, 181, 166, 163, 123, 145, 143, 132, 125, 111, 103, + 79, 66, 64, 78, 93, 71, 61, 52, 55, 61, 66, 50, 32, 26, 35, 44, + 42, 53, 49, 49, 54, 37, 37, 29, 31, 31, 26, 24, 26, 31, 31, 21, + 22, 31, 36, 31, 20, 19, 24, 15, 11, 35, 39, 44, 40, 17, 25, 30, + 35, 37, 38, 39, 39, 38, 38, 33, 34, 34, 32, 29, 28, 28, 29, 33, + 32, 32, 31, 31, 30, 30, 30, 29, 29, 29, 30, 30, 31, 31, 31, 30, + 30, 30, 30, 30, 30, 30, 30, 31, 30, 29, 29, 29, 31, 34, 35, 41, + 37, 33, 33, 35, 35, 30, 25, 35, 32, 29, 59, 91, 172, 221, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 183, 171, 178, 190, 186, 134, 147, 146, 137, 129, 123, 96, 75, 71, 63, 75, + 83, 68, 60, 66, 62, 64, 58, 47, 33, 38, 50, 57, 50, 58, 52, 54, + 61, 45, 43, 47, 36, 28, 31, 29, 23, 26, 36, 23, 23, 32, 41, 36, + 20, 16, 20, 14, 15, 31, 40, 48, 43, 24, 22, 31, 36, 39, 41, 41, + 41, 40, 39, 37, 38, 38, 37, 34, 32, 32, 33, 32, 31, 31, 31, 31, + 30, 30, 30, 29, 29, 29, 29, 29, 30, 30, 30, 29, 29, 29, 30, 30, + 30, 31, 31, 30, 30, 29, 29, 30, 32, 33, 34, 39, 36, 32, 34, 37, + 37, 32, 27, 36, 24, 36, 40, 117, 125, 227, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 163, 185, 182, + 194, 149, 159, 159, 143, 126, 112, 83, 74, 86, 66, 68, 65, 65, 72, 60, + 62, 74, 66, 68, 54, 54, 49, 57, 71, 75, 41, 49, 84, 79, 57, 53, + 41, 33, 37, 37, 30, 26, 27, 27, 23, 33, 44, 41, 25, 17, 19, 17, + 22, 33, 46, 50, 41, 27, 20, 31, 36, 39, 41, 42, 42, 40, 39, 37, + 38, 39, 38, 35, 33, 33, 33, 31, 31, 31, 30, 30, 30, 30, 30, 31, + 31, 31, 31, 32, 32, 32, 32, 30, 30, 30, 30, 31, 31, 31, 31, 30, + 30, 30, 30, 31, 32, 33, 34, 38, 36, 34, 37, 38, 39, 34, 31, 22, + 46, 25, 51, 82, 153, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 170, 177, 179, 158, 190, 156, 169, 168, + 143, 108, 83, 78, 70, 84, 60, 66, 61, 66, 73, 67, 70, 81, 67, 77, + 65, 59, 39, 71, 49, 48, 46, 56, 64, 67, 86, 45, 47, 43, 41, 50, + 62, 59, 43, 30, 22, 31, 48, 47, 29, 17, 17, 19, 33, 43, 53, 48, + 35, 29, 23, 29, 33, 36, 38, 41, 40, 38, 37, 38, 39, 41, 40, 37, + 35, 34, 34, 30, 30, 30, 30, 30, 30, 30, 30, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 31, 31, 31, 31, 29, 29, 30, 30, 31, + 32, 33, 33, 36, 37, 37, 39, 37, 35, 32, 30, 23, 57, 21, 63, 42, + 203, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 154, 166, 156, 196, 157, 162, 158, 134, 98, 75, 79, + 57, 64, 44, 64, 63, 63, 60, 99, 90, 80, 47, 58, 57, 62, 43, 68, + 69, 65, 38, 45, 83, 91, 90, 92, 99, 83, 54, 55, 76, 66, 31, 31, + 22, 31, 48, 49, 31, 17, 16, 17, 38, 52, 58, 45, 28, 29, 26, 27, + 29, 34, 37, 38, 38, 36, 35, 36, 38, 40, 39, 36, 34, 32, 32, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 33, + 33, 33, 32, 32, 31, 31, 31, 29, 29, 30, 31, 31, 32, 33, 33, 34, + 37, 37, 37, 33, 29, 26, 25, 40, 32, 42, 31, 50, 197, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 200, 162, 169, 197, 183, 179, 146, 107, 57, 68, 53, 45, 41, 49, 39, + 71, 63, 68, 86, 84, 123, 63, 68, 53, 41, 50, 68, 55, 103, 49, 49, + 66, 72, 97, 91, 99, 104, 95, 74, 54, 42, 38, 32, 34, 26, 32, 45, + 27, 8, 17, 44, 48, 52, 47, 38, 27, 25, 25, 29, 26, 28, 33, 35, + 34, 33, 34, 33, 32, 32, 34, 37, 37, 34, 32, 33, 32, 32, 31, 31, + 30, 30, 29, 31, 32, 32, 33, 33, 32, 32, 31, 30, 30, 30, 30, 30, + 30, 30, 30, 29, 29, 30, 31, 31, 32, 33, 33, 30, 45, 39, 44, 28, + 19, 36, 22, 33, 21, 48, 35, 49, 198, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 156, 169, + 175, 179, 151, 147, 97, 67, 52, 43, 25, 32, 31, 39, 62, 63, 91, 98, + 93, 129, 40, 23, 69, 44, 60, 72, 103, 63, 66, 35, 73, 54, 93, 67, + 76, 94, 90, 90, 72, 71, 63, 44, 42, 30, 28, 35, 22, 17, 35, 44, + 48, 51, 46, 37, 28, 23, 22, 24, 22, 23, 28, 31, 28, 27, 29, 34, + 33, 34, 35, 35, 35, 31, 28, 30, 30, 30, 30, 29, 29, 29, 29, 31, + 32, 32, 33, 33, 32, 32, 31, 30, 30, 30, 30, 30, 30, 30, 30, 29, + 29, 30, 31, 31, 32, 33, 33, 38, 35, 25, 42, 40, 28, 35, 23, 17, + 45, 36, 55, 40, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 164, 203, 182, 162, 109, 94, + 60, 50, 30, 34, 15, 35, 30, 46, 54, 51, 115, 95, 86, 85, 46, 55, + 45, 88, 79, 62, 115, 48, 63, 61, 64, 63, 78, 75, 74, 87, 73, 80, + 59, 62, 49, 45, 40, 31, 24, 26, 22, 30, 49, 45, 47, 49, 43, 33, + 26, 23, 23, 26, 24, 26, 30, 32, 28, 29, 31, 33, 32, 33, 33, 33, + 33, 29, 26, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 33, 33, 33, + 33, 32, 32, 31, 31, 31, 31, 31, 31, 31, 31, 29, 29, 30, 31, 31, + 32, 33, 33, 37, 41, 31, 33, 27, 23, 34, 32, 38, 27, 24, 74, 127, + 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 197, 195, 225, 207, 156, 110, 50, 55, 51, 50, 38, + 26, 46, 47, 45, 44, 31, 125, 114, 90, 48, 54, 52, 37, 66, 49, 45, + 89, 57, 78, 83, 72, 81, 73, 68, 58, 62, 46, 62, 53, 66, 60, 32, + 30, 28, 27, 28, 26, 35, 49, 50, 49, 45, 35, 26, 23, 25, 25, 28, + 26, 28, 31, 31, 28, 27, 32, 27, 28, 29, 31, 34, 34, 31, 31, 33, + 33, 34, 35, 35, 36, 36, 36, 32, 32, 33, 34, 34, 33, 32, 32, 32, + 32, 32, 32, 31, 31, 31, 31, 29, 29, 30, 31, 31, 32, 33, 33, 30, + 45, 39, 27, 25, 30, 31, 25, 35, 25, 87, 166, 221, 183, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 205, 207, 163, 161, 128, 88, 26, 32, 37, 47, 47, 44, 47, 54, 27, + 31, 25, 133, 135, 93, 69, 54, 32, 114, 41, 48, 43, 66, 65, 113, 65, + 95, 79, 73, 73, 61, 56, 45, 59, 59, 70, 66, 34, 27, 27, 28, 27, + 32, 40, 44, 57, 50, 39, 28, 19, 20, 26, 29, 26, 22, 26, 29, 28, + 23, 24, 29, 26, 28, 28, 32, 34, 34, 31, 31, 34, 34, 35, 35, 36, + 37, 37, 37, 32, 33, 34, 34, 34, 34, 33, 32, 34, 34, 33, 33, 32, + 32, 31, 31, 29, 29, 30, 31, 31, 32, 33, 33, 33, 35, 31, 33, 43, + 41, 32, 45, 55, 86, 143, 219, 222, 214, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 188, 176, + 168, 154, 97, 74, 48, 60, 64, 54, 48, 32, 33, 12, 21, 53, 145, 135, + 85, 86, 59, 105, 109, 62, 52, 54, 47, 81, 102, 53, 78, 68, 59, 91, + 83, 67, 62, 55, 55, 48, 42, 46, 32, 31, 27, 23, 32, 46, 46, 60, + 51, 36, 23, 16, 19, 28, 32, 29, 26, 29, 32, 28, 24, 26, 32, 30, + 31, 30, 33, 35, 34, 30, 27, 31, 33, 33, 33, 34, 34, 34, 34, 33, + 33, 34, 34, 34, 34, 33, 33, 35, 35, 34, 34, 33, 32, 32, 31, 29, + 29, 30, 31, 31, 32, 33, 33, 41, 30, 31, 37, 36, 18, 39, 118, 132, + 178, 198, 191, 199, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 212, 196, 171, 130, 135, + 99, 79, 72, 60, 43, 23, 10, 23, 27, 105, 156, 139, 105, 70, 49, 129, + 29, 49, 29, 59, 55, 83, 91, 62, 67, 56, 51, 80, 78, 57, 65, 44, + 58, 42, 44, 44, 32, 34, 31, 22, 33, 53, 54, 59, 50, 36, 24, 18, + 21, 29, 30, 33, 31, 34, 36, 31, 27, 29, 36, 32, 31, 33, 35, 35, + 35, 31, 29, 32, 34, 34, 33, 33, 33, 33, 33, 33, 34, 34, 35, 35, + 34, 34, 33, 36, 36, 35, 34, 33, 32, 32, 31, 29, 29, 30, 31, 31, + 32, 33, 33, 41, 38, 41, 35, 32, 21, 45, 133, 131, 188, 201, 190, 206, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 225, 227, 224, 188, 203, 212, 193, 120, 101, 61, + 33, 23, 0, 46, 37, 146, 158, 143, 138, 66, 36, 63, 56, 47, 76, 55, + 93, 62, 123, 61, 99, 42, 61, 85, 84, 50, 62, 30, 52, 34, 42, 29, + 24, 37, 37, 20, 31, 56, 57, 57, 49, 36, 26, 20, 20, 25, 25, 30, + 28, 31, 34, 28, 22, 25, 30, 27, 27, 29, 31, 33, 32, 32, 31, 33, + 34, 34, 33, 33, 32, 32, 31, 31, 32, 32, 35, 35, 34, 34, 33, 37, + 36, 35, 35, 34, 33, 32, 32, 29, 29, 30, 31, 31, 32, 33, 33, 34, + 41, 42, 33, 61, 70, 41, 58, 57, 91, 60, 189, 218, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 221, 215, 217, 198, 191, 183, 166, 158, 138, 97, 31, 0, 29, 35, + 91, 186, 151, 126, 90, 52, 62, 44, 41, 36, 65, 41, 51, 68, 69, 105, + 141, 75, 104, 81, 63, 60, 58, 41, 28, 36, 46, 36, 23, 33, 37, 21, + 29, 54, 59, 49, 51, 41, 24, 14, 17, 23, 24, 26, 27, 30, 32, 30, + 28, 28, 28, 24, 23, 24, 31, 33, 29, 27, 29, 40, 39, 35, 32, 32, + 32, 33, 34, 31, 32, 31, 30, 26, 26, 29, 33, 30, 27, 28, 32, 32, + 29, 28, 31, 24, 27, 30, 30, 30, 30, 33, 38, 52, 52, 54, 61, 68, + 69, 61, 49, 53, 40, 67, 71, 211, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 224, + 234, 174, 155, 202, 200, 166, 144, 91, 12, 11, 39, 40, 111, 169, 166, 133, + 99, 57, 59, 42, 45, 43, 66, 44, 46, 88, 77, 114, 114, 55, 61, 69, + 55, 59, 65, 51, 35, 35, 36, 39, 24, 29, 28, 15, 26, 60, 72, 53, + 47, 33, 16, 13, 18, 22, 22, 27, 30, 33, 33, 31, 29, 30, 30, 30, + 25, 27, 30, 32, 29, 29, 32, 36, 35, 34, 31, 29, 31, 33, 34, 33, + 34, 35, 32, 29, 30, 32, 34, 35, 32, 32, 35, 34, 30, 29, 31, 39, + 36, 32, 31, 34, 38, 41, 42, 56, 60, 58, 59, 64, 71, 69, 61, 51, + 62, 72, 62, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 202, 179, 187, 209, 194, + 202, 207, 143, 104, 46, 75, 76, 58, 150, 157, 165, 123, 95, 58, 50, 39, + 44, 41, 50, 77, 53, 70, 62, 69, 83, 46, 61, 61, 49, 55, 62, 51, + 38, 34, 33, 37, 27, 31, 28, 17, 25, 56, 72, 59, 45, 26, 12, 15, + 23, 26, 23, 27, 30, 32, 33, 33, 30, 31, 31, 35, 29, 29, 32, 33, + 32, 32, 35, 33, 34, 33, 31, 30, 32, 33, 33, 35, 36, 38, 36, 33, + 32, 33, 34, 39, 36, 36, 38, 37, 32, 31, 33, 35, 31, 28, 32, 41, + 50, 55, 56, 54, 64, 68, 65, 69, 80, 82, 74, 62, 79, 71, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 185, 183, 191, 197, 212, 204, 180, 181, 172, 91, + 98, 141, 116, 78, 177, 155, 140, 101, 84, 59, 47, 42, 46, 38, 32, 75, + 50, 43, 80, 45, 88, 38, 54, 64, 46, 46, 50, 43, 34, 36, 33, 30, + 31, 38, 37, 26, 24, 40, 52, 56, 42, 25, 14, 18, 24, 25, 23, 26, + 29, 32, 32, 32, 30, 30, 30, 33, 28, 29, 32, 34, 32, 31, 34, 31, + 33, 32, 33, 32, 33, 33, 35, 36, 38, 38, 39, 37, 35, 33, 34, 39, + 36, 37, 40, 39, 35, 34, 36, 26, 26, 28, 35, 44, 54, 62, 66, 58, + 75, 83, 76, 74, 81, 78, 66, 51, 52, 118, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 206, 210, 201, 170, 154, 149, 150, 155, 133, 53, 112, 154, 144, 103, + 172, 153, 124, 92, 80, 64, 46, 49, 50, 45, 34, 79, 47, 32, 73, 39, + 83, 43, 50, 64, 47, 45, 46, 39, 32, 36, 32, 27, 33, 38, 37, 31, + 23, 29, 39, 40, 31, 23, 17, 19, 20, 23, 25, 27, 30, 32, 33, 31, + 28, 29, 29, 31, 27, 28, 33, 37, 33, 30, 30, 30, 32, 32, 34, 33, + 34, 33, 34, 34, 36, 35, 37, 36, 34, 32, 33, 34, 34, 35, 39, 40, + 37, 37, 39, 34, 36, 37, 37, 40, 51, 67, 79, 72, 84, 86, 73, 64, + 63, 59, 47, 54, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 227, + 213, 200, 183, 159, 181, 179, 88, 50, 115, 150, 167, 139, 158, 146, 125, 89, + 76, 62, 39, 45, 45, 50, 43, 82, 43, 41, 46, 43, 56, 49, 43, 54, + 44, 49, 53, 44, 36, 35, 30, 30, 34, 30, 27, 30, 25, 28, 41, 24, + 20, 20, 19, 20, 18, 22, 28, 29, 32, 35, 35, 33, 31, 32, 31, 32, + 30, 31, 37, 40, 36, 32, 32, 31, 31, 33, 33, 34, 34, 32, 33, 33, + 32, 31, 33, 35, 35, 34, 34, 33, 33, 35, 39, 41, 38, 38, 41, 40, + 41, 41, 39, 41, 55, 79, 97, 73, 74, 68, 56, 48, 49, 51, 52, 123, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 171, 215, 181, 162, 197, + 182, 118, 67, 77, 127, 159, 167, 158, 157, 139, 121, 80, 66, 59, 35, 42, + 34, 44, 39, 45, 32, 50, 48, 56, 48, 38, 21, 42, 39, 49, 52, 43, + 34, 35, 29, 32, 35, 25, 22, 33, 29, 28, 42, 27, 22, 21, 23, 24, + 21, 23, 29, 29, 30, 32, 33, 33, 30, 31, 31, 33, 30, 32, 36, 38, + 34, 32, 33, 30, 31, 35, 35, 34, 31, 30, 30, 32, 31, 29, 29, 33, + 35, 36, 37, 36, 36, 37, 41, 41, 39, 38, 41, 37, 41, 44, 46, 48, + 57, 70, 81, 62, 54, 48, 46, 46, 45, 54, 127, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 231, 199, 158, 170, 191, 172, 132, 81, 85, + 130, 164, 143, 151, 164, 135, 109, 72, 61, 62, 41, 48, 31, 39, 34, 38, + 40, 31, 34, 22, 44, 38, 44, 35, 34, 42, 45, 33, 29, 33, 30, 32, + 36, 26, 24, 39, 32, 25, 36, 41, 31, 27, 27, 28, 24, 24, 26, 26, + 27, 30, 30, 30, 28, 29, 28, 35, 30, 30, 32, 34, 32, 32, 35, 30, + 31, 34, 34, 34, 31, 28, 27, 33, 29, 28, 28, 33, 36, 38, 39, 39, + 39, 39, 42, 42, 39, 38, 40, 40, 45, 52, 56, 54, 48, 41, 37, 63, + 52, 48, 52, 52, 44, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 194, 170, 162, 173, 172, 121, 64, 88, 166, 143, 143, 174, + 145, 120, 103, 72, 52, 42, 47, 49, 40, 37, 43, 31, 35, 40, 41, 37, + 34, 32, 33, 35, 33, 35, 40, 41, 37, 27, 20, 27, 30, 31, 29, 31, + 34, 34, 27, 32, 34, 36, 31, 26, 23, 25, 27, 29, 30, 33, 33, 31, + 28, 28, 27, 32, 30, 30, 30, 33, 37, 41, 43, 31, 31, 34, 32, 31, + 29, 29, 31, 36, 39, 41, 36, 35, 35, 34, 32, 43, 41, 44, 44, 42, + 50, 50, 36, 57, 47, 41, 42, 42, 38, 38, 41, 46, 46, 45, 46, 48, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 216, 214, 197, 147, 106, 78, 112, 168, 155, 156, 167, 149, 132, 89, 62, + 69, 65, 47, 35, 37, 38, 35, 32, 36, 40, 42, 42, 41, 40, 39, 42, + 35, 30, 30, 32, 35, 34, 33, 30, 32, 32, 29, 31, 33, 34, 28, 31, + 35, 39, 36, 31, 27, 27, 26, 26, 27, 29, 28, 26, 25, 27, 29, 34, + 33, 33, 31, 34, 35, 37, 37, 32, 32, 33, 31, 30, 28, 32, 36, 35, + 38, 37, 35, 35, 39, 37, 35, 42, 38, 39, 42, 45, 57, 59, 46, 49, + 42, 38, 40, 42, 40, 39, 42, 40, 40, 40, 113, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 223, + 158, 121, 97, 135, 158, 149, 151, 148, 143, 141, 92, 55, 64, 62, 44, 34, + 38, 39, 33, 35, 36, 38, 41, 41, 41, 39, 35, 42, 36, 27, 26, 30, + 36, 40, 41, 32, 34, 33, 29, 29, 32, 34, 29, 30, 34, 39, 38, 34, + 29, 27, 25, 26, 25, 25, 24, 24, 25, 27, 30, 36, 35, 35, 33, 32, + 31, 31, 31, 33, 31, 31, 30, 29, 29, 35, 39, 36, 38, 35, 33, 37, + 42, 40, 36, 45, 37, 39, 43, 47, 59, 63, 52, 41, 37, 36, 39, 42, + 41, 41, 43, 36, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 192, 127, 112, 100, 148, + 148, 135, 149, 159, 147, 136, 102, 61, 48, 42, 48, 50, 44, 39, 40, 40, + 38, 37, 39, 41, 38, 34, 30, 36, 33, 32, 32, 35, 37, 37, 38, 34, + 34, 33, 28, 26, 29, 33, 29, 29, 32, 36, 34, 32, 28, 26, 23, 26, + 26, 27, 27, 28, 28, 31, 33, 35, 34, 35, 34, 33, 31, 30, 30, 30, + 29, 31, 31, 31, 32, 34, 38, 38, 39, 38, 38, 42, 46, 41, 36, 45, + 40, 44, 47, 44, 50, 54, 47, 37, 36, 37, 39, 41, 42, 42, 43, 37, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 184, 189, 139, 131, 110, 129, 107, 78, 113, 163, + 144, 106, 91, 79, 70, 65, 65, 59, 48, 41, 40, 44, 43, 42, 41, 43, + 43, 39, 33, 34, 34, 35, 36, 37, 36, 34, 32, 32, 34, 33, 27, 25, + 27, 31, 29, 33, 33, 34, 31, 30, 28, 28, 27, 23, 25, 29, 31, 30, + 30, 31, 31, 30, 30, 32, 31, 33, 32, 31, 31, 25, 28, 33, 33, 33, + 32, 32, 33, 33, 37, 42, 45, 49, 53, 48, 40, 42, 41, 49, 51, 40, + 38, 44, 42, 38, 40, 41, 40, 40, 41, 41, 41, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 153, 166, 155, 155, 130, 122, 80, 44, 85, 158, 158, 128, 133, 102, + 123, 123, 89, 57, 48, 43, 35, 39, 38, 38, 40, 41, 40, 39, 37, 40, + 36, 33, 31, 30, 31, 33, 34, 30, 33, 35, 29, 26, 28, 32, 30, 37, + 35, 35, 32, 32, 32, 32, 30, 22, 24, 29, 31, 31, 29, 29, 29, 30, + 29, 30, 30, 31, 32, 33, 33, 24, 27, 33, 36, 36, 33, 32, 32, 30, + 38, 47, 50, 54, 57, 58, 53, 43, 40, 48, 51, 39, 34, 40, 41, 40, + 44, 43, 39, 37, 38, 40, 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 191, + 170, 151, 124, 71, 48, 56, 92, 125, 134, 131, 139, 120, 146, 147, 106, 64, + 49, 42, 35, 34, 37, 39, 36, 35, 35, 36, 35, 38, 37, 33, 28, 27, + 29, 33, 35, 29, 34, 37, 33, 30, 30, 35, 33, 35, 34, 35, 34, 35, + 34, 32, 28, 25, 25, 30, 31, 30, 29, 31, 32, 32, 30, 30, 28, 28, + 28, 30, 31, 28, 30, 34, 36, 35, 32, 32, 34, 36, 45, 54, 52, 52, + 57, 63, 61, 56, 44, 45, 47, 39, 36, 41, 40, 40, 44, 43, 36, 33, + 36, 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 180, 179, 136, 88, 62, + 84, 162, 194, 161, 149, 153, 145, 130, 133, 130, 111, 81, 54, 42, 44, 41, + 43, 45, 42, 36, 33, 35, 37, 31, 33, 34, 34, 31, 30, 31, 32, 28, + 35, 38, 36, 33, 33, 35, 36, 30, 31, 33, 34, 36, 33, 29, 23, 33, + 32, 33, 32, 30, 31, 33, 36, 33, 31, 28, 25, 24, 27, 29, 31, 32, + 35, 35, 37, 35, 36, 38, 39, 49, 59, 61, 55, 51, 53, 61, 62, 71, + 51, 43, 44, 40, 39, 42, 38, 38, 43, 41, 33, 29, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 230, 189, 168, 118, 78, 66, 195, 193, 178, 157, + 158, 158, 145, 161, 150, 139, 106, 61, 50, 50, 33, 45, 41, 34, 31, 31, + 34, 34, 36, 27, 28, 27, 29, 30, 31, 31, 29, 31, 31, 30, 29, 28, + 30, 32, 36, 27, 32, 35, 31, 32, 36, 35, 30, 34, 24, 22, 29, 36, + 32, 27, 26, 30, 30, 29, 26, 28, 33, 30, 26, 36, 32, 36, 42, 39, + 30, 38, 56, 45, 56, 54, 57, 63, 52, 56, 87, 50, 43, 39, 40, 40, + 36, 32, 32, 44, 44, 43, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 195, 176, 152, 88, 72, 189, 199, 143, 101, 131, 152, 177, 159, 131, + 126, 119, 89, 53, 45, 50, 38, 43, 39, 34, 32, 33, 35, 34, 35, 39, + 38, 34, 33, 33, 33, 34, 33, 30, 28, 30, 29, 29, 28, 31, 32, 27, + 31, 33, 31, 32, 36, 35, 31, 32, 26, 23, 29, 33, 29, 24, 24, 26, + 28, 30, 27, 29, 31, 30, 27, 34, 33, 35, 40, 39, 37, 44, 57, 55, + 43, 60, 64, 50, 69, 82, 50, 49, 42, 38, 40, 40, 36, 34, 34, 41, + 41, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 167, + 118, 86, 151, 180, 143, 89, 70, 113, 162, 151, 94, 126, 120, 111, 82, 50, + 40, 43, 37, 39, 38, 34, 33, 34, 36, 34, 34, 43, 40, 35, 31, 29, + 28, 29, 28, 29, 28, 30, 30, 31, 30, 31, 30, 29, 31, 32, 29, 31, + 33, 34, 31, 29, 27, 26, 29, 30, 26, 24, 26, 24, 29, 33, 30, 30, + 31, 32, 29, 32, 34, 35, 38, 39, 43, 50, 56, 51, 55, 52, 53, 72, + 80, 61, 39, 46, 40, 38, 40, 40, 37, 36, 38, 39, 111, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, 148, 106, 90, 160, 148, + 110, 46, 33, 33, 156, 161, 122, 131, 124, 107, 79, 52, 40, 39, 36, 37, + 36, 34, 34, 36, 36, 33, 32, 39, 37, 33, 31, 28, 26, 24, 22, 29, + 27, 29, 30, 32, 31, 31, 30, 31, 31, 31, 29, 31, 31, 33, 30, 29, + 29, 31, 31, 27, 25, 25, 28, 26, 33, 34, 31, 28, 32, 33, 35, 35, + 39, 40, 38, 42, 50, 56, 55, 55, 60, 50, 58, 83, 63, 36, 47, 43, + 39, 38, 40, 41, 38, 38, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 218, 139, 100, 122, 171, 97, 80, 67, 72, 48, + 147, 169, 144, 118, 110, 88, 64, 47, 38, 36, 41, 34, 36, 34, 35, 36, + 36, 32, 30, 36, 38, 38, 39, 37, 33, 29, 24, 30, 29, 29, 31, 33, + 32, 31, 30, 33, 31, 30, 30, 31, 30, 30, 31, 31, 33, 35, 32, 27, + 27, 28, 30, 31, 34, 35, 30, 28, 32, 37, 40, 37, 42, 45, 44, 47, + 53, 58, 55, 67, 49, 66, 78, 50, 39, 49, 41, 41, 38, 38, 41, 41, + 39, 40, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 195, 141, 113, 119, 85, 108, 51, 50, 35, 34, 72, 165, 170, 116, + 102, 70, 46, 43, 37, 29, 37, 36, 37, 34, 34, 35, 34, 31, 29, 33, + 36, 39, 42, 41, 37, 32, 29, 33, 29, 28, 29, 32, 34, 33, 30, 35, + 31, 30, 30, 31, 28, 29, 30, 31, 34, 36, 30, 27, 29, 30, 30, 31, + 35, 34, 30, 30, 35, 38, 40, 39, 44, 50, 54, 56, 55, 58, 60, 60, + 71, 75, 58, 37, 38, 47, 43, 40, 38, 39, 42, 41, 39, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 151, + 83, 89, 74, 83, 26, 23, 8, 19, 19, 139, 153, 124, 104, 64, 37, 43, + 38, 26, 34, 38, 39, 35, 33, 33, 33, 29, 28, 31, 34, 36, 39, 39, + 36, 32, 29, 35, 30, 27, 28, 33, 35, 34, 31, 36, 31, 28, 29, 29, + 25, 26, 31, 31, 33, 32, 27, 26, 28, 30, 28, 29, 32, 32, 31, 35, + 40, 39, 37, 37, 41, 52, 61, 61, 54, 56, 65, 62, 84, 60, 34, 48, + 47, 33, 47, 39, 38, 40, 42, 112, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 197, 86, 72, 82, 46, + 29, 24, 35, 26, 33, 136, 140, 121, 100, 56, 32, 44, 41, 31, 38, 42, + 40, 35, 32, 32, 32, 29, 27, 35, 37, 37, 38, 38, 36, 33, 32, 36, + 31, 26, 26, 32, 34, 35, 31, 37, 31, 28, 30, 29, 25, 26, 30, 29, + 32, 31, 25, 23, 29, 30, 28, 28, 31, 33, 35, 41, 43, 40, 33, 34, + 38, 51, 67, 65, 54, 57, 69, 90, 52, 41, 49, 44, 46, 49, 39, 40, + 39, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 224, 225, 125, 87, 81, 60, 38, 66, 52, 104, + 45, 133, 175, 116, 93, 70, 55, 49, 41, 34, 33, 44, 42, 37, 36, 35, + 31, 24, 19, 29, 33, 36, 41, 43, 41, 38, 35, 35, 30, 30, 34, 37, + 33, 35, 40, 36, 34, 34, 31, 29, 29, 29, 29, 30, 28, 28, 28, 28, + 28, 30, 30, 36, 33, 37, 42, 42, 36, 34, 38, 50, 36, 39, 56, 61, + 68, 81, 87, 57, 54, 49, 47, 45, 44, 43, 42, 40, 38, 111, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 241, 240, 184, 154, 125, 83, 90, 110, 143, 163, 87, 165, 159, 123, + 92, 61, 45, 43, 44, 44, 43, 41, 40, 38, 39, 40, 39, 33, 29, 28, + 31, 34, 38, 40, 39, 36, 35, 33, 29, 29, 33, 35, 32, 32, 36, 38, + 36, 35, 32, 30, 29, 28, 26, 29, 29, 29, 29, 29, 29, 31, 33, 38, + 36, 39, 42, 41, 35, 32, 34, 40, 31, 35, 47, 59, 76, 85, 77, 55, + 52, 47, 44, 41, 42, 42, 42, 114, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 229, + 229, 240, 222, 205, 190, 189, 207, 184, 141, 182, 184, 144, 106, 65, 45, 44, + 46, 43, 39, 36, 36, 36, 38, 39, 38, 32, 29, 28, 29, 30, 33, 35, + 35, 35, 34, 32, 30, 30, 33, 33, 30, 29, 31, 35, 34, 33, 31, 31, + 30, 30, 31, 30, 28, 28, 28, 28, 30, 32, 34, 34, 35, 38, 40, 40, + 36, 35, 35, 42, 37, 38, 40, 53, 75, 76, 53, 53, 51, 46, 43, 40, + 41, 41, 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 201, 186, 217, + 196, 224, 223, 197, 197, 148, 180, 148, 109, 67, 50, 50, 49, 40, 31, 39, + 39, 38, 38, 36, 33, 27, 25, 27, 28, 27, 28, 30, 32, 33, 34, 31, + 31, 31, 32, 32, 30, 28, 28, 29, 29, 30, 32, 34, 35, 37, 36, 30, + 30, 30, 30, 30, 30, 34, 36, 28, 32, 36, 39, 41, 41, 41, 41, 45, + 39, 40, 45, 50, 63, 63, 44, 48, 49, 48, 47, 44, 43, 112, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 205, + 209, 120, 155, 130, 95, 58, 44, 47, 48, 42, 35, 44, 44, 43, 40, 37, + 34, 29, 28, 27, 27, 25, 26, 27, 30, 32, 34, 32, 35, 35, 34, 33, + 33, 30, 29, 27, 28, 30, 33, 35, 37, 36, 37, 31, 30, 30, 30, 31, + 31, 35, 37, 31, 36, 38, 40, 42, 43, 45, 44, 38, 30, 40, 54, 53, + 52, 57, 57, 41, 46, 48, 50, 46, 114, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 182, 147, 152, 123, + 92, 57, 40, 39, 40, 41, 40, 40, 40, 38, 36, 33, 31, 30, 32, 28, + 27, 25, 26, 27, 30, 33, 34, 35, 36, 35, 32, 32, 35, 33, 31, 31, + 32, 33, 34, 34, 34, 32, 29, 30, 30, 30, 30, 31, 31, 33, 37, 36, + 42, 42, 40, 40, 44, 44, 40, 43, 36, 48, 60, 51, 43, 51, 58, 37, + 43, 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 236, 178, 171, 131, 113, 88, 61, 44, 39, + 35, 35, 38, 35, 36, 33, 30, 27, 27, 29, 33, 28, 28, 26, 27, 29, + 31, 33, 35, 34, 36, 34, 29, 29, 35, 35, 33, 32, 33, 33, 34, 32, + 31, 29, 26, 29, 27, 27, 27, 29, 30, 32, 36, 37, 43, 45, 41, 40, + 43, 44, 39, 45, 45, 57, 58, 45, 41, 48, 49, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 178, 170, 115, 84, 72, 58, 49, 42, 35, 32, 36, 38, + 39, 36, 31, 27, 28, 33, 38, 31, 31, 32, 31, 32, 34, 34, 37, 33, + 36, 33, 26, 27, 35, 38, 35, 29, 30, 32, 33, 32, 31, 31, 28, 27, + 27, 27, 27, 30, 32, 36, 37, 38, 44, 45, 40, 40, 46, 46, 41, 36, + 46, 58, 52, 43, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 198, 184, 103, 102, 79, 57, 47, 42, 34, 30, 32, 35, 37, 35, 33, 30, + 28, 29, 29, 34, 33, 34, 33, 35, 35, 34, 35, 34, 33, 31, 29, 28, + 28, 30, 31, 33, 35, 38, 38, 30, 24, 28, 35, 27, 24, 24, 26, 31, + 40, 45, 49, 45, 44, 43, 45, 48, 46, 44, 41, 37, 50, 68, 49, 121, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 195, 188, 129, + 96, 64, 51, 46, 41, 35, 36, 30, 30, 32, 32, 30, 27, 29, 28, 35, + 34, 35, 35, 34, 36, 36, 36, 34, 32, 30, 29, 28, 29, 30, 32, 31, + 32, 33, 35, 28, 23, 26, 31, 27, 22, 25, 31, 34, 35, 42, 53, 37, + 38, 39, 38, 40, 39, 39, 38, 49, 121, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 178, 172, 198, 131, 97, 64, 51, 46, + 40, 34, 32, 31, 30, 32, 32, 32, 29, 31, 29, 32, 33, 34, 33, 33, + 34, 35, 35, 32, 33, 29, 28, 28, 30, 31, 33, 35, 34, 33, 36, 34, + 30, 32, 35, 29, 24, 29, 36, 36, 33, 40, 54, 35, 37, 39, 40, 41, + 40, 42, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 207, 178, 187, 101, 81, 67, 62, 57, 44, 37, 35, 38, + 36, 34, 33, 33, 33, 34, 35, 32, 32, 31, 32, 32, 33, 33, 34, 33, + 32, 28, 27, 28, 30, 32, 33, 36, 33, 31, 34, 35, 32, 32, 33, 27, + 28, 31, 35, 40, 45, 47, 47, 35, 40, 43, 41, 41, 41, 116, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 207, 187, 194, 62, 58, 65, 72, 71, 57, 48, 48, 46, 40, 34, 31, 33, + 35, 36, 38, 31, 31, 32, 32, 31, 32, 31, 31, 33, 31, 30, 29, 28, + 30, 32, 34, 29, 26, 27, 30, 29, 26, 27, 30, 26, 34, 35, 33, 44, + 62, 58, 41, 34, 38, 38, 38, 37, 110, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 194, 60, + 50, 51, 61, 66, 57, 50, 46, 49, 42, 35, 29, 31, 34, 36, 35, 32, + 34, 33, 33, 31, 31, 29, 30, 33, 32, 30, 29, 27, 29, 31, 33, 27, + 26, 28, 31, 28, 25, 26, 31, 29, 37, 36, 37, 53, 68, 62, 41, 38, + 39, 39, 36, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 187, 124, 85, 50, 44, 56, + 57, 51, 41, 51, 45, 39, 35, 37, 36, 35, 31, 34, 34, 33, 32, 31, + 30, 28, 28, 34, 35, 30, 29, 29, 30, 30, 31, 28, 30, 32, 34, 31, + 27, 31, 38, 37, 34, 36, 47, 60, 61, 55, 47, 49, 47, 42, 111, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 233, 158, 211, 139, 67, 45, 62, 71, 63, 48, 55, + 48, 44, 42, 44, 41, 34, 30, 36, 35, 34, 33, 31, 29, 27, 27, 35, + 35, 31, 29, 28, 29, 31, 30, 24, 27, 31, 33, 28, 23, 28, 38, 43, + 31, 35, 58, 66, 52, 45, 54, 55, 48, 113, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 175, 184, 190, 172, 205, 185, 128, 51, 38, 48, 26, 43, 43, + 52, 42, 43, 34, 34, 33, 34, 32, 31, 31, 30, 39, 37, 31, 26, 25, + 25, 30, 33, 33, 32, 30, 29, 31, 35, 34, 33, 39, 47, 57, 67, 64, + 53, 52, 58, 54, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 197, 199, 188, 153, 53, 40, 39, 48, 37, 37, 35, 46, 34, + 36, 34, 33, 33, 31, 31, 32, 35, 34, 32, 31, 31, 32, 32, 33, 34, + 30, 27, 25, 26, 29, 30, 31, 37, 55, 64, 57, 50, 51, 54, 53, 56, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 234, 200, 192, 106, 37, 44, 44, 34, 29, 30, 44, 35, 36, 34, 34, 34, + 32, 31, 32, 31, 34, 35, 36, 34, 33, 31, 28, 36, 34, 30, 28, 28, + 29, 31, 35, 42, 66, 69, 47, 36, 48, 55, 46, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 179, 176, + 41, 35, 33, 38, 38, 34, 34, 37, 36, 36, 33, 35, 32, 31, 32, 33, + 36, 36, 36, 32, 29, 27, 25, 33, 32, 31, 32, 29, 27, 29, 35, 57, + 70, 69, 45, 37, 47, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 192, 200, 44, 26, 30, 41, + 44, 35, 23, 36, 36, 36, 34, 35, 32, 32, 33, 36, 37, 36, 35, 34, + 33, 30, 30, 23, 24, 28, 32, 26, 21, 24, 34, 73, 64, 55, 47, 46, + 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 196, 181, 50, 27, 38, 37, 38, 33, 22, 35, + 34, 33, 33, 33, 33, 34, 33, 37, 36, 36, 36, 37, 39, 39, 41, 23, + 23, 28, 33, 27, 22, 29, 44, 77, 53, 39, 47, 119, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 186, 174, 74, 30, 46, 35, 41, 41, 25, 31, 32, 32, 32, 33, + 33, 35, 34, 33, 33, 34, 36, 38, 40, 40, 41, 31, 29, 30, 33, 30, + 28, 40, 61, 72, 47, 34, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 190, + 101, 30, 46, 35, 50, 52, 33, 30, 31, 31, 32, 32, 33, 33, 34, 28, + 31, 31, 33, 34, 32, 32, 29, 30, 26, 26, 28, 26, 27, 49, 73, 66, + 48, 37, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 190, 36, 62, 66, + 31, 50, 36, 26, 41, 31, 35, 31, 22, 35, 28, 33, 32, 37, 29, 14, + 26, 38, 23, 23, 36, 33, 19, 29, 55, 66, 55, 54, 44, 116, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 181, 217, 82, 60, 44, 52, 41, 51, 39, + 42, 29, 38, 37, 21, 30, 25, 36, 20, 30, 43, 33, 26, 27, 22, 27, + 12, 27, 62, 37, 50, 57, 55, 31, 112, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 191, 162, 212, 87, 43, 77, 51, 43, 49, 41, 27, 36, 39, + 27, 34, 34, 39, 20, 22, 31, 27, 22, 23, 22, 23, 20, 33, 42, 44, + 57, 66, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 184, 191, 197, 98, 59, 67, 47, 49, 42, 31, 28, 28, 26, 31, 31, 37, + 43, 40, 29, 24, 32, 34, 23, 39, 41, 38, 7, 55, 48, 49, 105, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 172, 179, 211, + 49, 49, 70, 48, 54, 56, 41, 35, 39, 37, 32, 30, 48, 49, 36, 32, + 33, 31, 26, 28, 21, 38, 57, 64, 45, 41, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 171, 189, 167, 52, 61, 35, + 39, 53, 40, 35, 42, 35, 36, 48, 48, 42, 39, 38, 29, 37, 61, 38, + 58, 95, 135, 46, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 225, 189, 177, 161, 65, 71, 49, 53, 42, 39, + 40, 35, 55, 46, 47, 39, 39, 48, 45, 54, 84, 115, 162, 160, 117, 38, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 164, 173, 183, 127, 105, 89, 80, 72, 69, 110, 117, + 150, 157, 160, 179, 183, 172, 173, 157, 196, 143, 34, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy6' of size 131x156x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy6[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 116, 116, 123, + 124, 118, 127, 117, 107, 101, 101, 105, 105, 104, 127, 221, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 208, 112, 112, 115, 113, 116, 119, 120, 117, 114, 113, 113, 109, 114, 119, + 121, 124, 125, 121, 114, 118, 115, 111, 106, 104, 101, 96, 92, 91, 101, 93, + 83, 87, 80, 72, 81, 83, 86, 81, 82, 100, 109, 105, 154, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 123, 127, 126, 121, + 120, 116, 114, 116, 116, 112, 109, 109, 108, 104, 106, 113, 112, 107, 108, 115, + 116, 111, 110, 114, 115, 111, 105, 103, 99, 103, 107, 106, 101, 94, 86, 81, + 98, 102, 92, 80, 78, 70, 63, 68, 73, 83, 80, 74, 90, 102, 98, 92, + 93, 109, 108, 126, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 129, 127, 126, + 127, 123, 116, 121, 118, 116, 116, 115, 111, 107, 105, 121, 110, 106, 113, 113, + 106, 110, 123, 111, 96, 85, 86, 87, 84, 86, 93, 78, 86, 93, 95, 89, + 81, 77, 77, 89, 87, 80, 72, 69, 63, 60, 61, 68, 81, 75, 67, 85, + 100, 93, 79, 89, 108, 109, 126, 133, 121, 127, 134, 168, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 128, 133, + 135, 134, 133, 131, 123, 115, 113, 113, 113, 114, 116, 117, 116, 114, 110, 99, + 96, 102, 100, 90, 89, 98, 93, 77, 65, 65, 67, 67, 74, 85, 66, 72, + 76, 75, 69, 65, 67, 71, 65, 61, 62, 63, 64, 67, 72, 71, 75, 84, + 74, 65, 86, 103, 92, 75, 90, 113, 109, 114, 119, 115, 119, 119, 117, 121, + 123, 124, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 98, + 94, 87, 92, 96, 97, 97, 95, 87, 77, 68, 68, 65, 61, 62, 65, 63, + 62, 67, 64, 70, 81, 86, 79, 76, 78, 91, 84, 77, 73, 68, 63, 63, + 67, 62, 65, 65, 61, 54, 54, 58, 62, 59, 53, 58, 63, 63, 69, 77, + 73, 83, 88, 77, 71, 90, 103, 94, 82, 89, 111, 104, 105, 113, 113, 117, + 114, 113, 117, 122, 122, 121, 121, 124, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 196, 66, 98, 89, 99, 105, 107, 107, 106, 105, 97, 89, 77, 76, 69, 59, + 56, 57, 55, 50, 47, 50, 57, 68, 79, 85, 86, 86, 87, 91, 90, 79, + 68, 61, 56, 53, 59, 58, 59, 56, 52, 52, 55, 58, 65, 54, 61, 66, + 61, 67, 75, 64, 84, 89, 81, 76, 87, 92, 90, 91, 99, 108, 98, 107, + 116, 107, 109, 108, 105, 109, 113, 113, 112, 114, 120, 126, 121, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 210, 126, 71, 72, 108, 101, 103, 105, 104, 100, 98, 96, 89, 81, 68, + 68, 61, 51, 49, 53, 52, 47, 41, 41, 40, 41, 51, 65, 72, 72, 66, + 77, 79, 67, 57, 57, 57, 54, 51, 54, 56, 58, 58, 57, 58, 58, 61, + 49, 58, 67, 61, 67, 76, 64, 80, 88, 81, 78, 82, 82, 86, 97, 120, + 115, 99, 114, 117, 89, 84, 86, 92, 95, 97, 96, 96, 99, 108, 116, 118, + 118, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 215, 123, 101, 91, 100, 109, 109, 108, 101, 96, 98, 99, 91, + 79, 72, 51, 58, 55, 52, 55, 50, 43, 48, 50, 38, 32, 40, 49, 51, + 49, 49, 62, 61, 62, 65, 62, 56, 55, 59, 58, 53, 47, 48, 52, 53, + 52, 50, 61, 56, 57, 65, 75, 76, 69, 60, 73, 82, 74, 76, 89, 84, + 82, 99, 117, 121, 108, 89, 87, 87, 87, 89, 79, 81, 77, 69, 64, 66, + 74, 81, 96, 104, 113, 119, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 136, 120, 115, 108, 98, 88, 80, 83, 88, 75, 69, 65, + 64, 60, 54, 49, 49, 48, 52, 46, 43, 50, 51, 52, 62, 56, 45, 39, + 44, 49, 49, 49, 50, 52, 54, 57, 59, 60, 59, 59, 58, 66, 58, 49, + 45, 48, 52, 50, 48, 57, 53, 54, 59, 68, 73, 70, 64, 86, 88, 86, + 89, 93, 87, 81, 87, 82, 96, 93, 79, 77, 74, 69, 70, 55, 55, 55, + 54, 53, 52, 56, 60, 71, 75, 81, 90, 103, 115, 166, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 215, 125, 113, 102, 91, 89, 88, 77, 59, 55, 61, + 53, 48, 45, 41, 35, 30, 32, 39, 42, 46, 41, 39, 49, 52, 55, 64, + 61, 54, 48, 48, 48, 47, 48, 51, 48, 55, 58, 57, 60, 66, 64, 56, + 60, 51, 41, 38, 44, 51, 50, 49, 54, 52, 53, 55, 60, 68, 72, 73, + 88, 82, 89, 98, 97, 94, 89, 81, 72, 86, 85, 72, 69, 64, 57, 56, + 56, 56, 56, 57, 58, 55, 49, 46, 48, 48, 50, 61, 75, 94, 110, 165, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 128, 123, 106, 85, 87, 82, 78, 75, 64, + 50, 46, 50, 56, 49, 45, 42, 38, 34, 37, 44, 39, 45, 42, 43, 52, + 52, 48, 52, 63, 59, 54, 50, 46, 45, 48, 51, 48, 58, 60, 55, 58, + 68, 64, 51, 59, 51, 42, 41, 46, 51, 52, 48, 53, 53, 53, 54, 58, + 64, 75, 82, 88, 76, 88, 99, 93, 95, 94, 76, 77, 86, 78, 64, 66, + 68, 65, 66, 67, 65, 64, 65, 68, 67, 59, 51, 43, 41, 42, 49, 58, + 72, 92, 107, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 107, 102, 89, 73, 80, 84, + 79, 64, 55, 55, 57, 54, 59, 53, 48, 48, 47, 44, 43, 45, 44, 48, + 44, 44, 54, 53, 49, 53, 64, 64, 60, 53, 47, 47, 49, 51, 48, 59, + 62, 55, 58, 67, 65, 53, 67, 60, 53, 50, 50, 50, 48, 45, 51, 53, + 54, 52, 54, 61, 73, 83, 93, 79, 87, 94, 86, 90, 92, 74, 77, 81, + 69, 59, 69, 78, 76, 76, 63, 59, 56, 58, 62, 65, 60, 54, 45, 44, + 47, 50, 49, 54, 70, 89, 106, 107, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 98, 91, 90, 88, + 85, 79, 86, 82, 66, 58, 66, 71, 66, 62, 55, 50, 51, 51, 47, 43, + 43, 48, 49, 40, 39, 52, 58, 60, 68, 69, 70, 66, 58, 52, 52, 51, + 50, 54, 63, 67, 64, 64, 70, 72, 68, 57, 56, 54, 51, 48, 48, 48, + 49, 46, 49, 52, 51, 52, 57, 68, 75, 79, 75, 78, 81, 84, 92, 97, + 89, 86, 93, 83, 75, 81, 84, 76, 71, 76, 68, 60, 57, 57, 55, 50, + 47, 44, 42, 46, 48, 43, 41, 51, 67, 86, 91, 150, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 95, + 95, 93, 91, 92, 79, 82, 81, 76, 72, 70, 74, 75, 66, 62, 59, 57, + 52, 46, 46, 50, 48, 48, 40, 42, 59, 68, 72, 81, 80, 80, 75, 66, + 60, 59, 54, 48, 64, 69, 73, 71, 67, 67, 72, 77, 57, 58, 56, 51, + 43, 43, 47, 53, 44, 47, 52, 53, 54, 57, 63, 67, 56, 65, 66, 67, + 82, 95, 99, 104, 99, 110, 106, 93, 90, 87, 81, 77, 90, 82, 71, 63, + 57, 51, 46, 43, 46, 38, 37, 41, 39, 34, 37, 47, 62, 73, 88, 99, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 97, 88, 97, 102, 96, 86, 84, 79, 75, 79, 86, 81, 70, 70, 78, 69, + 66, 64, 61, 50, 43, 47, 56, 44, 48, 45, 52, 71, 78, 78, 83, 88, + 89, 83, 72, 66, 63, 56, 46, 65, 67, 70, 69, 60, 54, 60, 71, 80, + 80, 74, 61, 45, 38, 43, 50, 46, 50, 55, 59, 59, 60, 61, 62, 46, + 63, 63, 60, 78, 86, 88, 100, 93, 110, 110, 95, 91, 90, 94, 100, 78, + 73, 66, 61, 57, 55, 51, 49, 52, 36, 29, 35, 39, 32, 30, 34, 45, + 61, 83, 101, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 104, 89, 92, 109, 104, 81, 73, 85, 91, 83, 74, 86, 82, 73, + 81, 68, 67, 63, 58, 57, 57, 57, 56, 53, 54, 64, 51, 59, 60, 93, + 83, 74, 79, 93, 86, 65, 68, 84, 70, 36, 42, 58, 72, 70, 62, 59, + 56, 54, 70, 67, 65, 62, 56, 49, 49, 54, 54, 65, 53, 54, 71, 56, + 41, 58, 53, 44, 45, 61, 80, 90, 93, 97, 107, 80, 77, 97, 105, 99, + 89, 74, 83, 77, 66, 54, 53, 58, 53, 44, 47, 43, 40, 34, 30, 31, + 37, 44, 39, 52, 67, 79, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 206, 105, 102, 103, 103, 97, 89, 86, 90, 92, 85, 79, + 91, 87, 76, 79, 65, 69, 65, 64, 59, 55, 53, 57, 59, 59, 63, 56, + 72, 70, 87, 81, 82, 82, 85, 78, 69, 68, 70, 61, 45, 39, 54, 65, + 59, 55, 57, 58, 53, 63, 61, 62, 64, 61, 54, 51, 53, 58, 67, 55, + 54, 70, 57, 39, 54, 55, 46, 45, 57, 74, 81, 84, 86, 91, 75, 78, + 90, 90, 85, 81, 70, 75, 74, 68, 62, 62, 64, 58, 51, 47, 46, 41, + 36, 31, 30, 34, 37, 35, 46, 57, 68, 89, 110, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 207, 100, 100, 108, 106, 91, 85, 92, 94, 88, + 82, 81, 79, 93, 90, 82, 87, 72, 71, 73, 71, 64, 57, 55, 64, 71, + 67, 67, 67, 83, 76, 77, 74, 83, 84, 77, 72, 72, 65, 52, 48, 53, + 43, 55, 58, 46, 44, 55, 58, 48, 57, 54, 56, 63, 65, 59, 52, 49, + 61, 68, 56, 53, 66, 57, 42, 50, 56, 46, 42, 49, 61, 67, 71, 72, + 73, 72, 78, 81, 72, 70, 74, 68, 74, 77, 77, 74, 71, 69, 61, 55, + 43, 43, 39, 36, 31, 29, 29, 31, 34, 40, 45, 53, 75, 100, 160, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 209, 105, 95, 100, 109, 105, 90, 84, + 93, 97, 92, 88, 85, 80, 88, 84, 80, 89, 75, 76, 76, 74, 68, 62, + 63, 72, 79, 71, 75, 77, 80, 72, 69, 70, 76, 81, 75, 72, 71, 59, + 42, 42, 54, 48, 57, 53, 36, 37, 52, 57, 45, 56, 51, 52, 60, 65, + 61, 53, 47, 61, 68, 59, 55, 64, 59, 48, 49, 53, 44, 39, 42, 50, + 57, 60, 62, 66, 67, 72, 67, 57, 62, 71, 68, 78, 82, 84, 83, 78, + 72, 65, 61, 74, 73, 68, 62, 54, 48, 43, 40, 36, 38, 37, 40, 59, + 85, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 108, 102, 97, 110, 105, + 102, 98, 96, 94, 97, 100, 102, 97, 83, 81, 71, 69, 83, 70, 81, 79, + 74, 69, 68, 68, 71, 74, 68, 77, 81, 67, 64, 67, 72, 68, 69, 74, + 73, 65, 54, 47, 48, 53, 47, 53, 47, 32, 35, 52, 58, 48, 56, 48, + 46, 53, 60, 58, 51, 46, 56, 65, 63, 57, 60, 61, 56, 51, 46, 40, + 35, 35, 42, 51, 54, 54, 61, 58, 58, 52, 45, 55, 67, 64, 72, 75, + 81, 84, 82, 79, 77, 77, 92, 88, 79, 70, 60, 50, 42, 37, 37, 37, + 33, 31, 46, 72, 92, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 110, 104, 103, + 105, 110, 95, 90, 96, 99, 91, 92, 99, 97, 94, 78, 76, 67, 70, 88, + 79, 82, 78, 77, 72, 67, 64, 63, 62, 65, 73, 78, 57, 64, 70, 78, + 65, 55, 67, 69, 60, 54, 56, 55, 51, 41, 44, 41, 34, 39, 50, 57, + 54, 55, 47, 44, 50, 57, 56, 52, 50, 53, 65, 69, 61, 56, 61, 61, + 53, 39, 37, 33, 33, 39, 48, 52, 50, 55, 42, 39, 38, 38, 48, 58, + 57, 59, 63, 71, 83, 88, 89, 90, 93, 70, 66, 58, 52, 47, 43, 38, + 35, 34, 37, 33, 27, 39, 64, 87, 98, 110, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 113, + 106, 103, 106, 110, 107, 89, 78, 84, 92, 89, 87, 90, 84, 85, 77, 78, + 71, 75, 93, 83, 74, 78, 82, 78, 70, 64, 63, 64, 73, 69, 74, 60, + 75, 70, 75, 62, 53, 60, 62, 60, 59, 58, 52, 45, 40, 38, 40, 40, + 41, 44, 49, 52, 48, 42, 41, 49, 55, 55, 54, 53, 52, 67, 78, 66, + 53, 60, 65, 53, 37, 37, 35, 34, 39, 48, 51, 48, 45, 28, 28, 36, + 39, 43, 50, 51, 58, 58, 66, 82, 92, 92, 89, 89, 71, 65, 58, 53, + 52, 52, 51, 50, 36, 42, 38, 29, 34, 56, 81, 95, 104, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 111, 105, 101, 101, 105, 109, 107, 91, 77, 77, 88, 93, 91, 88, 87, + 91, 85, 86, 75, 73, 85, 69, 65, 76, 86, 84, 74, 66, 68, 73, 85, + 69, 73, 67, 85, 68, 68, 58, 59, 57, 57, 63, 63, 54, 43, 37, 43, + 39, 41, 44, 43, 36, 39, 44, 42, 38, 41, 50, 56, 56, 55, 55, 53, + 71, 83, 69, 50, 57, 66, 54, 38, 38, 38, 36, 41, 49, 51, 46, 39, + 22, 26, 41, 42, 40, 45, 50, 66, 65, 71, 85, 93, 88, 79, 75, 85, + 75, 63, 52, 47, 43, 40, 38, 41, 48, 45, 33, 32, 50, 74, 89, 100, + 107, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 107, 103, 104, 105, 105, 103, 82, 87, 87, 85, 86, 89, + 85, 77, 75, 80, 65, 72, 78, 65, 70, 74, 61, 92, 90, 71, 72, 70, + 62, 66, 69, 73, 81, 82, 69, 55, 56, 66, 75, 65, 76, 62, 38, 33, + 34, 47, 38, 31, 43, 53, 41, 32, 44, 53, 37, 41, 50, 55, 56, 54, + 54, 54, 67, 73, 75, 71, 66, 57, 46, 33, 33, 41, 43, 38, 43, 54, + 46, 25, 40, 35, 32, 36, 43, 50, 50, 49, 46, 58, 71, 78, 79, 80, + 83, 86, 76, 64, 52, 45, 46, 48, 46, 42, 40, 40, 23, 27, 36, 45, + 70, 76, 92, 100, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 99, 99, 105, 107, 104, 98, 80, 85, 86, + 83, 80, 79, 73, 66, 71, 72, 62, 68, 63, 54, 68, 69, 58, 86, 92, + 80, 80, 73, 62, 66, 79, 74, 70, 69, 68, 66, 66, 67, 68, 59, 72, + 65, 48, 45, 41, 48, 33, 33, 44, 49, 45, 47, 52, 46, 43, 47, 53, + 57, 57, 57, 55, 55, 69, 79, 83, 76, 66, 57, 50, 45, 48, 48, 43, + 37, 41, 48, 44, 34, 34, 37, 39, 44, 49, 52, 52, 52, 51, 59, 67, + 71, 71, 71, 71, 73, 73, 66, 59, 56, 57, 56, 50, 44, 41, 45, 34, + 35, 34, 35, 58, 64, 91, 101, 113, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 93, 97, 109, 113, 106, 97, + 90, 94, 93, 87, 80, 75, 67, 61, 62, 58, 58, 64, 48, 46, 75, 73, + 90, 91, 77, 61, 61, 64, 74, 93, 77, 78, 78, 80, 83, 85, 79, 71, + 84, 66, 71, 62, 48, 45, 37, 39, 32, 35, 42, 41, 43, 55, 54, 32, + 49, 53, 58, 61, 61, 60, 59, 60, 69, 83, 88, 76, 61, 52, 55, 57, + 60, 53, 47, 45, 47, 47, 46, 45, 28, 33, 38, 41, 44, 44, 48, 52, + 59, 61, 64, 67, 68, 69, 70, 70, 62, 60, 59, 61, 64, 60, 50, 39, + 43, 53, 47, 46, 38, 31, 53, 61, 86, 97, 110, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 100, 105, 116, + 119, 112, 104, 99, 101, 99, 90, 80, 73, 68, 65, 54, 49, 55, 63, 42, + 47, 87, 83, 89, 79, 69, 71, 75, 72, 73, 82, 78, 85, 88, 86, 86, + 90, 89, 85, 98, 71, 65, 51, 39, 41, 34, 36, 43, 40, 42, 40, 40, + 51, 50, 30, 51, 55, 59, 62, 62, 63, 64, 68, 68, 79, 84, 73, 60, + 55, 60, 64, 60, 55, 57, 63, 65, 58, 54, 56, 54, 53, 53, 54, 55, + 60, 66, 68, 63, 63, 64, 68, 72, 76, 80, 80, 73, 74, 76, 80, 83, + 78, 68, 57, 51, 59, 51, 49, 42, 37, 58, 66, 76, 88, 105, 114, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 110, + 110, 112, 117, 115, 111, 106, 102, 97, 92, 84, 75, 69, 66, 65, 50, 47, + 53, 61, 42, 53, 93, 87, 91, 72, 65, 76, 85, 87, 85, 85, 90, 85, + 78, 75, 81, 89, 91, 87, 85, 59, 56, 47, 41, 48, 43, 45, 53, 42, + 42, 44, 40, 44, 50, 45, 59, 60, 62, 63, 62, 64, 66, 69, 72, 76, + 77, 70, 65, 66, 70, 72, 70, 65, 68, 75, 74, 64, 60, 66, 68, 64, + 62, 63, 68, 71, 71, 66, 57, 56, 57, 61, 68, 74, 80, 81, 80, 80, + 83, 85, 86, 81, 74, 66, 58, 58, 43, 41, 39, 37, 58, 63, 68, 81, + 100, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 104, 104, 104, 105, 106, 102, 98, 94, 103, 96, 87, 82, 78, 71, 66, + 66, 52, 51, 51, 57, 48, 58, 89, 81, 100, 75, 68, 78, 84, 96, 106, + 103, 96, 80, 74, 86, 99, 98, 82, 67, 72, 54, 62, 59, 53, 56, 47, + 48, 51, 40, 44, 49, 45, 46, 55, 55, 67, 68, 67, 64, 64, 64, 66, + 71, 77, 80, 78, 77, 78, 83, 82, 81, 85, 82, 79, 80, 74, 67, 69, + 75, 66, 62, 60, 65, 69, 68, 61, 50, 52, 52, 55, 58, 63, 69, 76, + 79, 81, 79, 79, 76, 73, 68, 62, 57, 57, 53, 33, 32, 33, 32, 47, + 46, 61, 76, 98, 112, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 201, 95, 92, 92, 98, 104, 106, 102, 96, 106, 96, 88, 88, + 87, 79, 69, 66, 52, 57, 48, 53, 59, 68, 86, 81, 84, 78, 93, 108, + 104, 103, 102, 86, 93, 82, 82, 99, 103, 87, 70, 64, 76, 64, 77, 74, + 62, 60, 51, 53, 55, 56, 65, 66, 64, 70, 73, 59, 70, 71, 70, 67, + 67, 68, 74, 79, 81, 86, 86, 85, 87, 92, 90, 87, 92, 96, 94, 91, + 84, 78, 80, 84, 82, 78, 75, 74, 76, 74, 72, 68, 62, 65, 70, 73, + 77, 81, 90, 96, 102, 98, 93, 85, 77, 69, 63, 58, 49, 49, 34, 36, + 37, 31, 41, 36, 54, 70, 94, 110, 119, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 89, 96, 91, 90, 102, 117, 125, 123, 115, 104, + 91, 85, 89, 91, 83, 71, 64, 55, 65, 51, 56, 75, 83, 92, 86, 99, + 94, 104, 104, 88, 92, 104, 93, 99, 88, 87, 89, 72, 54, 64, 91, 82, + 71, 84, 79, 66, 67, 64, 72, 72, 85, 96, 91, 90, 102, 95, 64, 66, + 68, 68, 69, 70, 76, 85, 91, 84, 91, 95, 94, 93, 97, 96, 92, 90, + 100, 109, 107, 101, 95, 93, 91, 90, 85, 75, 68, 64, 68, 75, 80, 80, + 83, 92, 96, 98, 104, 114, 122, 108, 103, 95, 84, 74, 63, 54, 49, 42, + 48, 42, 49, 47, 39, 44, 37, 49, 66, 89, 107, 115, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 117, 105, 104, 119, 128, 121, + 116, 117, 111, 101, 94, 93, 90, 83, 77, 75, 62, 66, 82, 96, 98, 103, + 105, 96, 101, 93, 93, 103, 102, 94, 91, 94, 92, 94, 90, 79, 79, 86, + 84, 77, 75, 73, 69, 64, 61, 66, 75, 82, 88, 87, 83, 79, 79, 82, + 80, 75, 71, 70, 66, 63, 67, 72, 81, 88, 79, 86, 93, 96, 98, 98, + 100, 102, 100, 104, 107, 106, 102, 99, 98, 98, 97, 95, 88, 77, 71, 73, + 76, 77, 83, 70, 69, 79, 87, 87, 88, 93, 84, 82, 76, 69, 68, 70, + 69, 65, 72, 54, 43, 45, 42, 33, 34, 44, 42, 39, 65, 78, 93, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 90, 84, 103, 122, + 128, 121, 112, 108, 106, 77, 75, 72, 66, 69, 74, 77, 73, 77, 80, 97, + 112, 112, 113, 113, 104, 103, 95, 95, 103, 102, 95, 91, 95, 86, 86, 81, + 76, 77, 81, 80, 77, 63, 63, 64, 63, 64, 69, 76, 81, 76, 73, 68, + 64, 66, 70, 71, 69, 68, 70, 73, 76, 79, 85, 90, 92, 89, 95, 100, + 101, 102, 104, 108, 110, 105, 105, 107, 106, 105, 104, 107, 109, 99, 96, 88, + 77, 72, 74, 76, 74, 58, 61, 73, 88, 95, 91, 82, 77, 74, 76, 76, + 76, 81, 86, 84, 77, 66, 57, 49, 46, 38, 30, 30, 38, 36, 35, 46, + 58, 70, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 86, + 90, 120, 140, 132, 117, 107, 99, 89, 74, 77, 71, 58, 57, 64, 72, 70, + 91, 94, 111, 124, 122, 121, 119, 109, 106, 96, 94, 100, 101, 95, 92, 96, + 94, 88, 83, 83, 82, 80, 80, 83, 61, 65, 70, 75, 78, 80, 83, 86, + 75, 74, 69, 63, 66, 74, 78, 77, 73, 73, 72, 72, 71, 73, 74, 76, + 93, 94, 98, 99, 102, 106, 111, 114, 109, 106, 107, 105, 107, 110, 113, 116, + 100, 95, 89, 80, 77, 79, 80, 75, 66, 71, 77, 81, 85, 88, 87, 83, + 74, 75, 75, 78, 83, 84, 73, 61, 64, 63, 58, 49, 38, 32, 31, 34, + 30, 31, 27, 36, 50, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 77, 90, 112, 120, 128, 129, 119, 113, 110, 99, 83, 87, 84, 79, 70, 64, + 65, 74, 82, 107, 108, 120, 130, 126, 126, 126, 117, 109, 102, 98, 101, 101, + 98, 97, 98, 106, 95, 90, 94, 94, 86, 87, 93, 73, 78, 86, 93, 96, + 95, 91, 90, 79, 80, 77, 74, 74, 81, 85, 84, 95, 90, 84, 77, 76, + 80, 84, 89, 91, 93, 97, 101, 104, 108, 113, 114, 111, 110, 109, 107, 109, + 111, 115, 115, 104, 102, 96, 90, 87, 88, 88, 81, 82, 87, 84, 75, 74, + 83, 88, 86, 95, 93, 90, 90, 93, 90, 75, 58, 67, 68, 63, 53, 44, + 43, 38, 33, 29, 34, 22, 30, 48, 113, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 89, 105, 129, 123, 114, 107, 104, 106, 103, 98, 94, 86, 79, + 78, 83, 79, 74, 86, 104, 123, 122, 128, 133, 127, 129, 133, 127, 117, 111, + 106, 106, 106, 104, 105, 105, 106, 96, 93, 98, 100, 93, 96, 103, 92, 96, + 103, 109, 110, 107, 100, 95, 80, 84, 85, 82, 82, 85, 86, 84, 91, 89, + 86, 86, 89, 98, 106, 111, 104, 105, 107, 112, 115, 115, 115, 113, 114, 112, + 112, 112, 113, 113, 111, 109, 111, 109, 105, 99, 96, 99, 98, 92, 74, 85, + 91, 88, 85, 86, 81, 72, 89, 87, 83, 84, 90, 91, 80, 66, 66, 64, + 57, 51, 49, 50, 41, 31, 29, 35, 26, 33, 65, 118, 108, 255, 255, 255, + 255, 255, 255, 255, 255, 112, 113, 115, 118, 115, 113, 112, 108, 100, 91, 92, + 99, 91, 87, 87, 92, 90, 90, 103, 120, 138, 132, 135, 137, 132, 135, 144, + 139, 129, 124, 117, 113, 113, 114, 114, 115, 109, 103, 103, 106, 110, 111, 115, + 118, 116, 120, 124, 127, 128, 124, 115, 110, 100, 105, 107, 104, 101, 102, 102, + 99, 87, 92, 97, 103, 108, 113, 114, 116, 124, 126, 126, 126, 127, 125, 121, + 116, 116, 116, 115, 118, 118, 115, 110, 104, 112, 113, 111, 104, 100, 101, 103, + 101, 81, 87, 93, 95, 96, 97, 92, 86, 82, 80, 75, 74, 78, 81, 75, + 65, 64, 55, 48, 47, 49, 48, 38, 29, 31, 31, 30, 35, 86, 118, 107, + 255, 255, 255, 255, 255, 255, 255, 206, 115, 119, 114, 105, 115, 124, 124, 110, + 97, 94, 96, 97, 104, 111, 105, 92, 93, 109, 122, 126, 142, 136, 141, 143, + 138, 142, 149, 144, 141, 136, 128, 122, 121, 124, 127, 128, 122, 121, 121, 118, + 122, 128, 132, 130, 135, 136, 137, 139, 140, 139, 134, 130, 127, 132, 131, 127, + 124, 125, 126, 125, 122, 125, 130, 133, 134, 133, 130, 127, 137, 134, 132, 131, + 132, 131, 127, 124, 122, 120, 119, 121, 121, 118, 113, 107, 108, 111, 111, 103, + 96, 98, 104, 103, 103, 94, 88, 91, 97, 103, 109, 115, 109, 107, 100, 93, + 90, 89, 81, 72, 67, 55, 49, 52, 52, 45, 37, 36, 35, 25, 32, 32, + 104, 115, 109, 255, 255, 255, 255, 255, 255, 255, 108, 104, 107, 108, 103, 112, + 124, 119, 97, 94, 108, 110, 99, 103, 120, 112, 87, 91, 123, 141, 131, 140, + 137, 143, 146, 141, 144, 149, 146, 148, 144, 135, 128, 127, 131, 134, 134, 132, + 136, 133, 126, 126, 135, 136, 131, 139, 140, 139, 142, 143, 144, 142, 139, 138, + 142, 140, 134, 131, 133, 137, 137, 137, 137, 137, 136, 136, 135, 135, 133, 135, + 130, 128, 126, 129, 131, 131, 130, 126, 122, 121, 121, 123, 121, 117, 111, 103, + 109, 111, 101, 92, 93, 101, 105, 110, 92, 84, 91, 99, 103, 110, 119, 120, + 119, 112, 102, 95, 90, 82, 74, 74, 61, 57, 62, 57, 45, 40, 46, 40, + 22, 33, 28, 113, 113, 113, 255, 255, 255, 255, 255, 255, 255, 102, 109, 104, + 105, 113, 114, 132, 125, 90, 111, 97, 103, 119, 113, 120, 115, 107, 114, 132, + 140, 132, 149, 146, 143, 144, 146, 148, 150, 150, 154, 152, 148, 147, 143, 139, + 140, 145, 136, 141, 145, 145, 147, 151, 150, 148, 149, 149, 148, 149, 150, 152, + 151, 150, 153, 153, 153, 153, 151, 149, 144, 141, 142, 141, 141, 142, 141, 139, + 134, 128, 132, 134, 138, 135, 136, 137, 132, 124, 127, 126, 130, 132, 130, 120, + 117, 117, 116, 107, 110, 103, 86, 83, 97, 104, 101, 102, 96, 84, 87, 102, + 108, 101, 126, 122, 121, 121, 119, 106, 84, 67, 71, 69, 61, 52, 49, 51, + 45, 36, 38, 56, 28, 31, 96, 120, 106, 167, 255, 255, 255, 255, 255, 96, + 101, 107, 105, 105, 109, 113, 111, 108, 98, 127, 115, 116, 126, 118, 113, 111, + 120, 135, 144, 150, 153, 155, 154, 154, 155, 156, 157, 157, 156, 156, 154, 153, + 154, 151, 146, 146, 149, 143, 148, 153, 154, 157, 162, 164, 161, 157, 158, 157, + 158, 158, 159, 158, 157, 158, 157, 156, 156, 155, 153, 149, 147, 149, 146, 144, + 143, 144, 142, 139, 134, 130, 132, 132, 132, 135, 138, 137, 133, 125, 125, 128, + 131, 130, 123, 121, 121, 122, 110, 108, 102, 87, 84, 94, 95, 96, 99, 98, + 90, 88, 97, 103, 103, 112, 120, 128, 128, 118, 104, 94, 89, 68, 69, 65, + 57, 52, 52, 45, 37, 37, 50, 29, 35, 89, 115, 110, 122, 255, 255, 255, + 255, 205, 104, 106, 110, 111, 110, 108, 110, 93, 95, 109, 138, 131, 129, 128, + 124, 110, 113, 140, 158, 158, 159, 171, 152, 152, 154, 156, 157, 157, 152, 152, + 156, 155, 154, 156, 156, 152, 151, 153, 153, 159, 163, 163, 166, 170, 170, 167, + 165, 165, 163, 164, 166, 167, 164, 162, 164, 162, 159, 158, 158, 157, 154, 152, + 155, 152, 148, 146, 146, 145, 144, 142, 143, 141, 138, 133, 133, 137, 134, 130, + 126, 125, 130, 133, 132, 126, 124, 126, 129, 112, 105, 99, 86, 84, 89, 86, + 92, 95, 100, 99, 94, 92, 96, 101, 100, 98, 99, 104, 107, 101, 87, 74, + 68, 71, 69, 62, 54, 50, 44, 38, 34, 38, 29, 37, 75, 106, 113, 118, + 255, 255, 255, 255, 108, 111, 106, 107, 111, 110, 104, 104, 95, 105, 120, 131, + 133, 134, 127, 118, 115, 129, 157, 170, 164, 162, 172, 162, 160, 162, 162, 164, + 162, 160, 160, 158, 155, 153, 155, 156, 155, 155, 157, 159, 163, 166, 165, 166, + 168, 166, 163, 166, 165, 164, 165, 166, 165, 164, 163, 167, 163, 160, 158, 159, + 157, 157, 155, 156, 156, 152, 150, 148, 147, 145, 144, 149, 149, 143, 137, 135, + 137, 135, 128, 128, 127, 131, 133, 132, 126, 125, 126, 131, 115, 108, 101, 86, + 80, 84, 81, 89, 91, 101, 108, 104, 94, 90, 93, 110, 106, 105, 110, 114, + 110, 97, 86, 77, 78, 75, 66, 54, 47, 42, 40, 32, 29, 28, 38, 60, + 94, 114, 113, 255, 255, 255, 255, 107, 107, 98, 97, 102, 103, 97, 97, 113, + 128, 129, 120, 132, 136, 131, 103, 123, 147, 164, 168, 167, 165, 166, 162, 159, + 156, 155, 156, 157, 158, 157, 162, 156, 152, 153, 156, 158, 159, 162, 156, 161, + 165, 163, 164, 165, 164, 160, 166, 164, 163, 164, 165, 165, 164, 162, 167, 163, + 160, 157, 159, 156, 157, 155, 153, 154, 155, 154, 150, 147, 144, 142, 140, 142, + 140, 138, 139, 142, 140, 134, 134, 132, 134, 135, 133, 127, 124, 125, 131, 118, + 115, 106, 87, 80, 84, 83, 88, 89, 100, 112, 114, 103, 91, 87, 80, 95, + 107, 104, 90, 82, 88, 97, 90, 87, 80, 69, 56, 47, 44, 45, 37, 29, + 30, 37, 52, 88, 114, 112, 255, 255, 255, 203, 105, 103, 94, 94, 100, 102, + 99, 98, 130, 138, 133, 122, 139, 135, 133, 95, 130, 159, 166, 165, 170, 171, + 166, 161, 158, 154, 152, 152, 153, 154, 155, 166, 159, 155, 158, 161, 161, 164, + 166, 154, 159, 164, 165, 166, 170, 170, 166, 169, 168, 168, 167, 168, 167, 167, + 164, 165, 161, 159, 158, 158, 156, 155, 153, 152, 155, 157, 155, 152, 147, 143, + 142, 140, 142, 139, 137, 137, 139, 136, 130, 136, 134, 135, 135, 133, 127, 124, + 126, 129, 121, 121, 114, 92, 84, 87, 85, 85, 88, 100, 111, 116, 112, 102, + 93, 89, 98, 107, 106, 98, 94, 99, 106, 94, 86, 77, 69, 58, 51, 48, + 50, 46, 37, 33, 35, 50, 86, 112, 114, 255, 255, 255, 98, 97, 95, 94, + 98, 102, 105, 106, 109, 134, 124, 131, 137, 149, 123, 123, 107, 137, 162, 167, + 166, 172, 174, 171, 170, 168, 165, 164, 165, 165, 164, 163, 165, 158, 156, 162, + 166, 164, 161, 160, 155, 160, 165, 165, 170, 173, 173, 169, 172, 171, 170, 170, + 171, 169, 169, 166, 164, 161, 160, 160, 160, 156, 155, 152, 154, 157, 158, 155, + 151, 146, 144, 145, 148, 148, 144, 139, 135, 137, 135, 130, 135, 133, 134, 135, + 134, 128, 128, 130, 133, 121, 121, 118, 101, 94, 94, 86, 79, 89, 100, 105, + 111, 118, 117, 111, 103, 95, 88, 87, 90, 88, 81, 72, 80, 71, 64, 62, + 57, 52, 49, 51, 52, 45, 31, 28, 48, 82, 105, 113, 161, 255, 101, 88, + 85, 84, 89, 95, 101, 104, 107, 122, 132, 106, 127, 152, 157, 111, 110, 126, + 145, 162, 169, 169, 172, 174, 175, 157, 156, 155, 156, 157, 155, 153, 151, 160, + 157, 157, 164, 169, 165, 160, 156, 160, 165, 168, 167, 170, 173, 171, 167, 174, + 170, 171, 169, 170, 170, 168, 167, 163, 162, 162, 163, 161, 158, 154, 152, 156, + 159, 158, 153, 148, 143, 147, 149, 147, 147, 143, 138, 138, 144, 146, 144, 135, + 133, 135, 137, 134, 130, 130, 132, 133, 120, 119, 119, 110, 103, 98, 87, 75, + 91, 103, 100, 104, 120, 129, 125, 127, 121, 115, 104, 92, 81, 74, 71, 62, + 54, 50, 53, 54, 49, 46, 47, 54, 48, 29, 21, 46, 78, 98, 110, 117, + 255, 97, 96, 96, 94, 94, 93, 97, 106, 117, 120, 103, 119, 141, 145, 141, + 128, 100, 138, 162, 161, 161, 157, 161, 175, 168, 150, 160, 164, 156, 153, 156, + 153, 147, 154, 153, 154, 161, 173, 176, 162, 144, 164, 162, 162, 168, 171, 170, + 170, 173, 175, 173, 172, 172, 176, 178, 180, 180, 169, 168, 168, 168, 168, 166, + 162, 159, 154, 155, 155, 154, 152, 149, 146, 144, 151, 141, 129, 122, 121, 125, + 137, 150, 143, 138, 134, 134, 136, 134, 128, 119, 126, 129, 130, 125, 113, 103, + 100, 96, 76, 85, 98, 103, 107, 114, 121, 125, 142, 139, 127, 106, 92, 85, + 75, 61, 59, 58, 56, 49, 44, 43, 44, 45, 45, 42, 54, 32, 31, 82, + 111, 107, 112, 95, 84, 103, 104, 106, 109, 107, 102, 103, 105, 91, 98, 119, + 154, 136, 143, 131, 123, 137, 161, 167, 174, 173, 164, 170, 159, 168, 174, 172, + 161, 160, 166, 168, 165, 162, 163, 159, 159, 164, 171, 170, 164, 168, 164, 165, + 171, 175, 175, 175, 176, 177, 179, 183, 187, 190, 189, 185, 181, 172, 169, 166, + 163, 162, 160, 158, 155, 153, 154, 154, 153, 152, 149, 145, 143, 152, 144, 136, + 130, 128, 128, 136, 145, 142, 139, 135, 133, 135, 134, 130, 126, 123, 127, 129, + 124, 112, 104, 107, 107, 91, 88, 96, 108, 110, 101, 105, 116, 112, 113, 108, + 99, 92, 85, 78, 70, 68, 63, 55, 51, 50, 49, 45, 43, 34, 37, 53, + 35, 38, 90, 115, 114, 118, 105, 100, 101, 101, 105, 111, 111, 104, 101, 102, + 89, 109, 122, 164, 129, 140, 118, 120, 146, 160, 161, 168, 165, 157, 167, 164, + 164, 169, 168, 158, 156, 161, 162, 160, 169, 172, 169, 161, 157, 160, 164, 166, + 165, 161, 163, 169, 175, 175, 177, 179, 183, 183, 186, 190, 191, 188, 183, 178, + 177, 173, 167, 162, 160, 159, 157, 155, 159, 159, 159, 157, 155, 151, 150, 148, + 150, 145, 142, 139, 137, 134, 137, 143, 143, 140, 137, 134, 132, 131, 129, 126, + 124, 127, 128, 122, 111, 106, 110, 113, 95, 83, 93, 114, 119, 102, 102, 116, + 106, 105, 106, 105, 98, 87, 78, 75, 78, 69, 58, 54, 55, 53, 46, 39, + 32, 39, 54, 39, 46, 94, 113, 112, 116, 96, 93, 109, 104, 103, 108, 107, + 101, 100, 104, 109, 124, 131, 162, 137, 136, 108, 107, 151, 160, 157, 163, 160, + 153, 166, 166, 163, 170, 174, 170, 169, 167, 163, 158, 162, 169, 173, 168, 164, + 163, 164, 162, 160, 156, 159, 166, 173, 174, 177, 179, 180, 177, 177, 175, 177, + 176, 175, 172, 178, 174, 170, 166, 165, 162, 161, 159, 162, 161, 160, 158, 156, + 152, 151, 150, 150, 147, 146, 145, 143, 139, 140, 145, 144, 144, 141, 136, 129, + 124, 123, 121, 128, 127, 125, 121, 114, 108, 108, 105, 97, 90, 100, 122, 128, + 115, 107, 111, 117, 113, 113, 116, 109, 92, 84, 87, 84, 77, 66, 60, 57, + 52, 44, 38, 35, 39, 47, 37, 56, 104, 116, 114, 115, 98, 100, 121, 114, + 112, 117, 113, 103, 101, 106, 117, 131, 146, 155, 145, 126, 110, 112, 145, 163, + 163, 173, 170, 156, 158, 147, 160, 166, 171, 170, 168, 166, 162, 158, 151, 157, + 165, 165, 169, 170, 170, 163, 158, 153, 158, 164, 173, 173, 178, 179, 173, 171, + 172, 173, 177, 177, 177, 175, 173, 171, 171, 170, 171, 168, 166, 163, 162, 161, + 159, 156, 154, 151, 149, 147, 157, 153, 150, 148, 143, 137, 138, 143, 141, 141, + 139, 135, 130, 124, 122, 119, 129, 124, 120, 120, 118, 113, 106, 98, 102, 103, + 112, 124, 129, 123, 107, 96, 113, 107, 107, 111, 108, 96, 93, 98, 86, 83, + 76, 68, 59, 51, 45, 43, 39, 38, 37, 30, 65, 116, 122, 122, 122, 109, + 116, 108, 106, 112, 123, 120, 108, 107, 116, 121, 144, 163, 152, 137, 106, 105, + 123, 143, 162, 158, 159, 155, 148, 152, 137, 158, 159, 160, 158, 158, 157, 159, + 160, 163, 164, 162, 160, 163, 167, 165, 159, 159, 157, 159, 168, 175, 177, 180, + 183, 175, 179, 186, 194, 199, 198, 194, 189, 175, 175, 177, 179, 181, 181, 178, + 175, 171, 170, 168, 165, 162, 159, 157, 156, 165, 160, 156, 152, 145, 138, 137, + 141, 139, 138, 135, 133, 131, 128, 126, 124, 126, 122, 119, 120, 119, 114, 107, + 97, 98, 100, 107, 117, 129, 128, 115, 97, 104, 97, 93, 92, 91, 86, 84, + 84, 81, 81, 76, 69, 60, 53, 50, 49, 53, 49, 39, 30, 68, 115, 115, + 117, 124, 98, 106, 99, 98, 106, 117, 113, 102, 107, 123, 129, 155, 157, 150, + 123, 103, 94, 123, 137, 158, 150, 142, 142, 149, 160, 145, 163, 164, 167, 167, + 166, 165, 166, 168, 170, 170, 167, 162, 160, 162, 159, 154, 161, 159, 161, 170, + 177, 179, 182, 186, 183, 185, 192, 198, 202, 200, 194, 188, 177, 177, 177, 179, + 182, 184, 183, 184, 181, 179, 176, 173, 169, 167, 166, 165, 162, 159, 159, 157, + 152, 144, 142, 145, 144, 138, 130, 127, 128, 130, 132, 129, 128, 126, 125, 122, + 115, 108, 106, 101, 102, 91, 94, 112, 129, 128, 121, 112, 99, 94, 85, 77, + 78, 78, 70, 61, 68, 67, 63, 61, 58, 56, 52, 49, 56, 56, 47, 35, + 71, 111, 109, 117, 122, 107, 119, 117, 110, 110, 112, 101, 89, 100, 121, 132, + 154, 133, 143, 115, 117, 94, 123, 119, 152, 155, 153, 157, 168, 174, 148, 147, + 151, 159, 164, 164, 159, 155, 155, 156, 163, 168, 167, 166, 167, 164, 160, 162, + 159, 162, 170, 177, 180, 182, 185, 185, 182, 181, 181, 181, 180, 176, 173, 173, + 171, 170, 170, 174, 177, 179, 179, 179, 178, 175, 171, 168, 165, 164, 164, 156, + 155, 159, 161, 159, 152, 149, 152, 155, 143, 131, 124, 126, 129, 131, 131, 133, + 134, 134, 124, 110, 101, 102, 103, 119, 95, 90, 113, 129, 122, 115, 118, 92, + 90, 81, 74, 77, 81, 72, 56, 56, 52, 47, 50, 54, 56, 51, 45, 40, + 49, 46, 37, 74, 115, 116, 132, 122, 109, 102, 95, 113, 114, 111, 110, 95, + 98, 129, 142, 144, 137, 147, 120, 110, 96, 108, 136, 144, 151, 157, 159, 155, + 151, 147, 156, 153, 155, 160, 162, 160, 163, 167, 155, 159, 163, 164, 164, 163, + 163, 164, 164, 164, 166, 171, 176, 180, 180, 179, 190, 183, 179, 179, 181, 181, + 176, 171, 168, 166, 165, 168, 174, 178, 179, 179, 181, 180, 177, 172, 169, 166, + 160, 155, 162, 161, 159, 155, 153, 151, 151, 152, 150, 136, 130, 121, 117, 126, + 134, 125, 137, 138, 135, 125, 115, 110, 108, 103, 98, 109, 86, 118, 114, 119, + 122, 113, 96, 82, 82, 71, 76, 84, 70, 63, 54, 54, 51, 48, 46, 46, + 47, 49, 51, 45, 46, 40, 68, 116, 122, 122, 123, 109, 100, 93, 99, 90, + 87, 96, 95, 105, 132, 129, 136, 137, 133, 110, 99, 98, 111, 140, 146, 150, + 152, 153, 149, 147, 144, 152, 153, 156, 161, 163, 160, 160, 163, 160, 163, 166, + 167, 167, 165, 165, 166, 159, 159, 161, 165, 171, 176, 178, 179, 186, 181, 177, + 176, 176, 173, 165, 158, 167, 167, 169, 173, 179, 182, 181, 179, 179, 179, 176, + 171, 167, 161, 154, 149, 161, 163, 163, 161, 158, 154, 151, 150, 155, 142, 134, + 127, 123, 132, 138, 129, 132, 134, 131, 121, 112, 107, 106, 101, 121, 122, 99, + 110, 105, 117, 110, 100, 113, 98, 96, 78, 74, 78, 63, 59, 59, 57, 54, + 51, 47, 45, 44, 44, 51, 47, 48, 41, 66, 112, 121, 123, 127, 110, 102, + 97, 92, 76, 75, 92, 102, 112, 127, 119, 128, 137, 116, 101, 90, 104, 116, + 138, 142, 146, 147, 150, 149, 148, 147, 152, 151, 156, 162, 164, 160, 158, 159, + 161, 164, 166, 167, 165, 164, 163, 164, 161, 160, 159, 162, 167, 172, 176, 176, + 179, 177, 177, 178, 178, 175, 167, 161, 159, 161, 165, 170, 174, 175, 173, 171, + 175, 174, 176, 174, 169, 162, 157, 154, 160, 163, 167, 167, 163, 156, 153, 149, + 159, 146, 137, 130, 126, 135, 141, 132, 127, 129, 127, 117, 109, 105, 104, 99, + 118, 115, 109, 102, 100, 121, 103, 95, 105, 97, 100, 83, 78, 80, 67, 66, + 61, 59, 55, 52, 48, 45, 40, 39, 48, 47, 50, 40, 61, 106, 116, 121, + 127, 106, 100, 104, 99, 89, 89, 101, 111, 114, 115, 111, 118, 128, 95, 92, + 82, 106, 112, 128, 134, 140, 145, 151, 152, 153, 153, 154, 152, 155, 160, 162, + 159, 158, 161, 158, 160, 164, 162, 162, 158, 160, 158, 167, 162, 162, 161, 167, + 170, 176, 175, 178, 176, 175, 174, 175, 170, 166, 161, 166, 166, 170, 171, 174, + 174, 173, 171, 163, 164, 169, 172, 170, 164, 162, 162, 160, 163, 168, 168, 165, + 160, 158, 155, 158, 143, 135, 128, 124, 134, 139, 129, 124, 128, 126, 117, 109, + 105, 106, 101, 100, 103, 121, 102, 100, 121, 97, 92, 83, 84, 97, 87, 83, + 83, 68, 66, 56, 54, 51, 50, 48, 45, 40, 37, 43, 43, 47, 35, 53, + 96, 108, 116, 120, 99, 96, 108, 107, 105, 101, 102, 111, 114, 106, 107, 106, + 109, 79, 83, 80, 102, 105, 123, 130, 138, 146, 154, 156, 156, 155, 159, 155, + 155, 159, 160, 158, 162, 166, 162, 164, 166, 164, 162, 160, 161, 161, 165, 161, + 160, 160, 166, 172, 178, 179, 181, 177, 173, 168, 165, 161, 158, 155, 163, 162, + 163, 161, 162, 161, 162, 162, 154, 152, 156, 162, 162, 156, 156, 160, 160, 162, + 164, 163, 163, 161, 161, 161, 155, 138, 129, 123, 121, 132, 136, 126, 126, 130, + 128, 119, 112, 108, 109, 103, 100, 107, 131, 103, 97, 108, 91, 89, 75, 79, + 98, 92, 88, 83, 60, 53, 49, 47, 44, 45, 47, 46, 42, 39, 37, 38, + 42, 29, 45, 88, 101, 109, 113, 203, 101, 106, 107, 109, 100, 92, 103, 113, + 102, 108, 101, 95, 79, 83, 87, 102, 107, 126, 133, 140, 148, 154, 154, 153, + 152, 161, 157, 156, 157, 158, 157, 163, 168, 168, 169, 169, 168, 166, 165, 166, + 167, 158, 156, 155, 159, 166, 173, 179, 182, 178, 174, 170, 167, 166, 166, 167, + 168, 158, 158, 157, 155, 153, 152, 154, 155, 158, 154, 156, 161, 158, 150, 150, + 157, 160, 161, 160, 159, 158, 159, 162, 163, 154, 136, 128, 122, 122, 133, 138, + 124, 127, 129, 130, 121, 113, 109, 110, 104, 105, 110, 125, 98, 96, 96, 101, + 100, 73, 75, 92, 91, 93, 90, 64, 51, 46, 43, 39, 41, 45, 46, 43, + 39, 35, 35, 38, 25, 42, 85, 98, 106, 111, 255, 108, 101, 104, 110, 101, + 87, 101, 111, 94, 102, 94, 83, 84, 81, 91, 100, 114, 131, 136, 140, 145, + 150, 150, 151, 150, 159, 156, 156, 158, 160, 159, 160, 165, 166, 169, 169, 168, + 166, 166, 167, 169, 162, 160, 160, 163, 169, 176, 181, 181, 176, 176, 176, 175, + 174, 174, 175, 176, 168, 170, 172, 171, 169, 167, 169, 169, 166, 159, 160, 162, + 155, 145, 148, 157, 160, 160, 159, 157, 156, 155, 157, 158, 153, 135, 124, 120, + 123, 135, 139, 125, 127, 129, 129, 120, 111, 107, 107, 102, 101, 104, 107, 94, + 103, 90, 110, 102, 77, 71, 80, 79, 90, 95, 72, 59, 51, 46, 40, 40, + 43, 44, 40, 37, 38, 36, 37, 25, 44, 88, 100, 107, 111, 255, 107, 98, + 103, 116, 108, 93, 104, 109, 84, 88, 82, 67, 83, 72, 86, 89, 114, 132, + 136, 138, 141, 146, 148, 151, 152, 155, 154, 154, 158, 159, 156, 156, 161, 159, + 162, 163, 162, 160, 160, 162, 164, 170, 168, 167, 168, 172, 176, 178, 179, 185, + 184, 183, 178, 172, 165, 162, 159, 157, 161, 167, 167, 166, 163, 164, 164, 165, + 159, 158, 160, 153, 142, 145, 157, 159, 161, 161, 158, 155, 152, 155, 153, 152, + 135, 124, 120, 122, 135, 139, 125, 125, 127, 126, 118, 109, 107, 105, 102, 101, + 104, 100, 99, 112, 85, 105, 85, 88, 73, 73, 68, 80, 92, 70, 58, 56, + 48, 42, 40, 42, 41, 38, 33, 40, 37, 38, 24, 45, 90, 103, 109, 111, + 255, 98, 93, 103, 108, 101, 93, 90, 89, 87, 66, 71, 77, 82, 85, 88, + 95, 104, 117, 123, 130, 135, 140, 143, 145, 148, 148, 155, 159, 160, 158, 156, + 157, 160, 159, 161, 161, 161, 161, 161, 161, 161, 164, 163, 164, 167, 172, 178, + 182, 183, 186, 171, 167, 168, 165, 151, 152, 160, 164, 164, 168, 168, 171, 169, + 169, 166, 164, 168, 169, 163, 159, 158, 158, 156, 156, 161, 164, 161, 156, 153, + 157, 160, 152, 151, 129, 128, 119, 138, 130, 126, 124, 131, 131, 121, 111, 111, + 116, 117, 112, 105, 97, 95, 92, 89, 90, 94, 88, 74, 80, 81, 66, 65, + 69, 52, 53, 45, 41, 42, 44, 40, 34, 27, 23, 34, 50, 37, 46, 81, + 96, 111, 103, 255, 255, 98, 104, 109, 106, 93, 82, 75, 74, 68, 71, 74, + 78, 85, 90, 99, 108, 115, 122, 129, 134, 139, 141, 143, 145, 143, 144, 146, + 150, 156, 159, 160, 161, 160, 162, 163, 163, 163, 162, 162, 161, 165, 163, 162, + 162, 163, 166, 168, 169, 172, 165, 163, 167, 166, 161, 163, 170, 177, 178, 179, + 180, 180, 178, 176, 173, 158, 161, 162, 158, 156, 156, 156, 153, 154, 157, 159, + 157, 153, 152, 153, 155, 148, 148, 129, 128, 122, 139, 128, 122, 123, 129, 132, + 124, 117, 115, 116, 114, 115, 110, 104, 99, 95, 92, 87, 83, 75, 66, 67, + 70, 70, 74, 78, 72, 61, 52, 44, 43, 45, 45, 42, 39, 36, 39, 46, + 32, 40, 76, 93, 105, 110, 255, 255, 99, 100, 106, 109, 96, 75, 62, 61, + 70, 70, 71, 76, 86, 95, 104, 112, 116, 125, 131, 136, 139, 141, 144, 146, + 145, 143, 143, 149, 159, 164, 163, 162, 164, 167, 168, 168, 168, 166, 165, 164, + 167, 165, 162, 160, 160, 160, 162, 162, 164, 164, 165, 166, 168, 170, 172, 174, + 165, 165, 166, 165, 164, 161, 159, 157, 156, 159, 163, 160, 158, 159, 158, 155, + 153, 153, 154, 153, 152, 151, 151, 151, 142, 143, 126, 128, 124, 141, 127, 118, + 123, 127, 131, 127, 122, 119, 114, 108, 111, 113, 107, 97, 94, 93, 83, 69, + 83, 78, 68, 65, 75, 76, 73, 75, 61, 54, 48, 47, 49, 50, 44, 39, + 38, 39, 50, 42, 56, 87, 94, 103, 113, 255, 255, 202, 92, 99, 110, 100, + 75, 59, 58, 70, 69, 71, 79, 91, 100, 107, 113, 118, 127, 133, 138, 140, + 142, 145, 147, 147, 148, 150, 156, 161, 163, 160, 158, 162, 165, 166, 167, 166, + 164, 163, 162, 164, 164, 163, 163, 163, 165, 168, 171, 171, 173, 173, 169, 169, + 172, 172, 166, 166, 166, 166, 166, 165, 162, 161, 159, 160, 162, 165, 162, 161, + 162, 161, 157, 156, 154, 153, 152, 153, 152, 151, 149, 141, 142, 126, 129, 124, + 143, 130, 121, 126, 127, 129, 127, 124, 118, 112, 108, 110, 114, 108, 96, 91, + 95, 82, 62, 93, 92, 74, 65, 79, 75, 64, 70, 61, 59, 56, 54, 55, + 54, 45, 34, 37, 32, 43, 43, 61, 92, 98, 107, 139, 255, 255, 255, 89, + 96, 109, 102, 80, 64, 62, 70, 71, 75, 84, 97, 103, 106, 110, 118, 126, + 133, 138, 140, 142, 146, 147, 143, 150, 159, 163, 162, 159, 157, 158, 157, 160, + 160, 161, 161, 160, 158, 157, 161, 163, 164, 166, 166, 169, 174, 176, 176, 178, + 176, 169, 167, 168, 164, 159, 169, 169, 169, 169, 169, 167, 169, 168, 165, 167, + 166, 161, 160, 162, 160, 156, 157, 155, 153, 152, 152, 151, 148, 146, 143, 146, + 130, 130, 123, 141, 132, 126, 129, 127, 125, 123, 120, 116, 113, 110, 114, 119, + 112, 96, 90, 95, 85, 69, 77, 80, 65, 60, 76, 73, 66, 75, 69, 68, + 63, 56, 56, 58, 51, 40, 47, 36, 38, 32, 47, 74, 85, 101, 220, 255, + 255, 255, 255, 97, 106, 103, 88, 73, 68, 73, 76, 81, 90, 98, 102, 104, + 108, 117, 125, 132, 136, 138, 140, 144, 145, 139, 148, 159, 163, 161, 157, 156, + 158, 161, 163, 163, 163, 164, 164, 164, 164, 162, 164, 167, 166, 164, 165, 170, + 173, 174, 171, 169, 167, 165, 161, 161, 160, 166, 167, 167, 166, 167, 167, 169, + 169, 170, 172, 168, 163, 163, 164, 165, 159, 158, 155, 154, 151, 148, 145, 144, + 143, 143, 148, 135, 134, 122, 139, 131, 129, 128, 126, 123, 122, 118, 111, 111, + 114, 120, 122, 115, 101, 93, 91, 84, 75, 61, 61, 55, 53, 62, 64, 65, + 71, 76, 72, 62, 51, 53, 63, 64, 56, 55, 47, 56, 51, 53, 62, 60, + 75, 255, 255, 255, 255, 255, 99, 103, 103, 98, 87, 78, 78, 82, 87, 92, + 96, 98, 102, 108, 119, 127, 134, 138, 140, 142, 145, 147, 145, 149, 156, 160, + 161, 160, 159, 160, 167, 166, 167, 167, 167, 169, 172, 174, 170, 172, 175, 171, + 168, 167, 172, 175, 172, 164, 163, 167, 166, 162, 164, 170, 178, 176, 176, 175, + 176, 177, 179, 179, 173, 172, 166, 160, 162, 166, 168, 164, 160, 160, 159, 155, + 148, 143, 143, 144, 140, 150, 141, 139, 123, 135, 127, 126, 122, 122, 122, 122, + 116, 107, 109, 115, 120, 118, 116, 105, 92, 81, 75, 73, 60, 52, 51, 49, + 43, 48, 59, 63, 73, 75, 68, 62, 68, 82, 85, 78, 64, 60, 73, 67, + 57, 53, 48, 66, 255, 255, 255, 255, 255, 203, 100, 103, 107, 99, 88, 83, + 87, 90, 92, 93, 94, 100, 110, 124, 132, 138, 143, 145, 146, 148, 151, 158, + 156, 155, 158, 162, 164, 161, 159, 164, 164, 162, 161, 162, 167, 171, 174, 179, + 181, 183, 179, 175, 174, 178, 182, 175, 163, 161, 169, 170, 163, 167, 178, 176, + 174, 174, 173, 174, 172, 175, 176, 167, 164, 159, 152, 155, 162, 165, 162, 162, + 165, 163, 157, 148, 142, 142, 145, 135, 150, 144, 144, 123, 132, 123, 123, 117, + 119, 124, 125, 116, 106, 107, 114, 116, 114, 111, 105, 87, 69, 64, 66, 60, + 47, 50, 48, 33, 42, 60, 63, 73, 82, 86, 87, 97, 112, 110, 97, 83, + 69, 68, 49, 35, 39, 55, 88, 255, 255, 255, 255, 255, 255, 203, 102, 105, + 97, 86, 91, 78, 89, 90, 94, 105, 101, 105, 123, 127, 131, 138, 143, 149, + 152, 156, 155, 154, 156, 156, 156, 157, 158, 159, 153, 161, 163, 161, 162, 169, + 176, 177, 176, 181, 186, 182, 176, 174, 178, 183, 173, 161, 158, 168, 170, 163, + 169, 182, 182, 181, 177, 173, 177, 180, 176, 168, 170, 165, 162, 161, 160, 156, + 158, 163, 156, 158, 159, 154, 143, 135, 134, 137, 134, 147, 147, 152, 127, 115, + 123, 116, 132, 112, 125, 119, 117, 117, 99, 115, 118, 117, 112, 101, 87, 74, + 67, 65, 49, 43, 45, 43, 40, 48, 54, 50, 68, 79, 94, 112, 125, 124, + 111, 98, 81, 83, 68, 48, 43, 48, 66, 94, 255, 255, 255, 255, 255, 255, + 255, 99, 100, 93, 84, 92, 84, 91, 90, 101, 110, 100, 106, 124, 129, 134, + 139, 143, 147, 152, 153, 148, 149, 149, 151, 155, 158, 162, 162, 162, 164, 164, + 164, 167, 175, 176, 174, 168, 171, 172, 172, 168, 170, 175, 179, 172, 160, 158, + 170, 173, 167, 168, 179, 181, 177, 172, 170, 170, 169, 170, 173, 169, 164, 161, + 162, 159, 157, 156, 160, 161, 145, 138, 144, 144, 132, 124, 125, 141, 103, 151, + 147, 119, 132, 117, 126, 129, 116, 119, 119, 114, 108, 99, 107, 115, 109, 104, + 101, 96, 81, 61, 44, 24, 28, 38, 41, 42, 53, 62, 63, 90, 100, 112, + 124, 126, 122, 117, 113, 100, 92, 68, 51, 51, 61, 78, 102, 255, 255, 255, + 255, 255, 255, 255, 255, 105, 100, 94, 94, 93, 91, 85, 104, 109, 92, 105, + 124, 129, 134, 138, 142, 144, 146, 147, 150, 151, 151, 154, 159, 163, 166, 166, + 164, 166, 165, 164, 169, 174, 170, 164, 165, 165, 163, 163, 164, 170, 176, 177, + 169, 158, 156, 170, 177, 173, 169, 173, 178, 172, 170, 169, 163, 156, 162, 173, + 171, 169, 165, 165, 164, 158, 157, 160, 149, 143, 137, 133, 127, 119, 117, 122, + 139, 102, 134, 122, 123, 138, 114, 116, 121, 120, 113, 120, 113, 99, 101, 101, + 114, 108, 98, 87, 76, 57, 37, 23, 31, 40, 49, 55, 62, 72, 80, 84, + 111, 118, 126, 128, 123, 117, 120, 128, 118, 104, 73, 52, 55, 66, 83, 103, + 255, 255, 255, 255, 255, 255, 255, 255, 210, 117, 116, 103, 105, 93, 79, 101, + 102, 79, 100, 122, 127, 130, 136, 138, 139, 139, 139, 153, 151, 149, 152, 156, + 159, 159, 157, 156, 159, 160, 160, 163, 165, 161, 156, 166, 161, 157, 157, 161, + 168, 173, 174, 166, 155, 153, 169, 178, 173, 166, 164, 169, 165, 167, 170, 160, + 142, 145, 159, 165, 162, 160, 161, 159, 154, 151, 152, 132, 142, 141, 129, 121, + 122, 117, 106, 93, 116, 114, 110, 133, 121, 121, 109, 111, 118, 105, 119, 116, + 97, 110, 99, 105, 98, 84, 61, 38, 28, 31, 38, 54, 62, 62, 66, 80, + 92, 97, 105, 117, 117, 120, 123, 118, 113, 123, 137, 133, 121, 90, 61, 55, + 60, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 126, 118, 119, + 103, 83, 99, 97, 76, 97, 123, 127, 129, 132, 134, 134, 134, 136, 145, 141, + 138, 140, 143, 145, 143, 141, 140, 149, 157, 155, 154, 155, 157, 158, 162, 157, + 150, 150, 154, 161, 165, 166, 164, 154, 152, 165, 175, 171, 162, 156, 155, 155, + 161, 166, 153, 128, 122, 130, 133, 128, 129, 133, 133, 131, 130, 132, 157, 149, + 139, 133, 124, 114, 108, 112, 117, 100, 113, 122, 126, 106, 136, 118, 104, 113, + 100, 116, 116, 102, 111, 99, 77, 69, 56, 39, 30, 37, 57, 72, 70, 73, + 65, 62, 85, 99, 101, 112, 114, 107, 106, 117, 120, 116, 126, 143, 142, 139, + 110, 75, 53, 48, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, + 117, 127, 125, 116, 96, 100, 97, 81, 99, 125, 126, 126, 127, 130, 131, 132, + 133, 135, 129, 125, 127, 131, 133, 130, 125, 125, 138, 149, 149, 147, 151, 157, + 163, 163, 157, 152, 150, 153, 159, 163, 165, 165, 157, 153, 161, 169, 165, 158, + 150, 144, 143, 149, 151, 139, 116, 103, 103, 96, 93, 95, 99, 103, 104, 108, + 112, 107, 91, 97, 116, 119, 127, 189, 255, 255, 95, 118, 120, 103, 117, 143, + 119, 108, 108, 101, 110, 111, 103, 99, 84, 56, 44, 32, 33, 47, 62, 69, + 72, 91, 98, 81, 73, 94, 101, 98, 110, 114, 100, 101, 122, 131, 126, 131, + 145, 144, 141, 115, 76, 50, 42, 57, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 104, 116, 113, 118, 105, 97, 94, 85, 96, 121, 121, 120, 120, + 121, 123, 126, 129, 130, 123, 116, 116, 118, 117, 112, 106, 106, 118, 128, 134, + 138, 145, 154, 158, 160, 157, 153, 152, 154, 158, 164, 166, 170, 163, 157, 160, + 165, 160, 155, 148, 143, 140, 139, 135, 127, 113, 100, 91, 93, 88, 89, 93, + 96, 97, 99, 104, 122, 111, 111, 111, 98, 102, 164, 239, 255, 109, 121, 109, + 108, 123, 147, 125, 119, 108, 107, 100, 100, 98, 73, 59, 47, 39, 37, 49, + 66, 73, 69, 60, 90, 109, 99, 91, 109, 106, 99, 114, 115, 103, 110, 134, + 141, 129, 130, 145, 150, 138, 106, 72, 56, 52, 64, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 101, 99, 96, 113, 106, 89, 89, 83, 87, 114, + 113, 111, 112, 112, 115, 119, 122, 124, 116, 106, 101, 101, 97, 88, 81, 87, + 95, 106, 115, 125, 138, 145, 147, 148, 148, 145, 146, 147, 153, 160, 163, 174, + 165, 160, 159, 160, 159, 154, 151, 149, 145, 134, 125, 121, 116, 105, 91, 113, + 106, 103, 103, 102, 100, 102, 107, 112, 114, 112, 108, 112, 120, 119, 112, 101, + 111, 129, 114, 135, 107, 146, 151, 129, 108, 110, 94, 92, 93, 55, 43, 47, + 52, 63, 75, 81, 82, 76, 69, 59, 91, 94, 92, 113, 110, 104, 124, 117, + 108, 119, 144, 148, 128, 126, 139, 160, 138, 98, 71, 69, 74, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 108, 109, 105, 122, 65, 66, + 92, 62, 86, 120, 104, 100, 99, 112, 98, 118, 107, 110, 106, 91, 87, 89, + 87, 78, 88, 74, 82, 110, 111, 102, 123, 127, 141, 116, 144, 129, 139, 150, + 172, 159, 158, 164, 160, 155, 155, 150, 142, 144, 137, 125, 116, 114, 113, 106, + 98, 91, 79, 92, 70, 78, 91, 102, 96, 47, 63, 75, 102, 117, 98, 126, + 111, 115, 108, 112, 118, 127, 137, 137, 121, 104, 80, 107, 79, 68, 72, 85, + 58, 61, 81, 91, 99, 99, 95, 89, 74, 62, 69, 60, 76, 92, 113, 119, + 98, 91, 88, 99, 121, 140, 140, 129, 126, 133, 140, 130, 88, 54, 85, 85, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 105, 104, 105, + 75, 48, 43, 72, 108, 70, 91, 84, 96, 105, 116, 92, 92, 95, 101, 104, + 104, 102, 99, 92, 83, 78, 99, 105, 120, 106, 117, 107, 120, 51, 104, 104, + 134, 136, 136, 162, 174, 167, 174, 167, 153, 146, 136, 122, 118, 125, 119, 117, + 117, 111, 102, 95, 91, 98, 70, 92, 103, 89, 94, 97, 240, 250, 55, 70, + 86, 103, 120, 104, 122, 116, 109, 110, 118, 124, 122, 124, 130, 118, 128, 95, + 57, 73, 84, 84, 95, 103, 106, 104, 99, 95, 92, 84, 74, 64, 61, 82, + 92, 100, 102, 89, 95, 101, 114, 131, 139, 138, 133, 127, 122, 134, 122, 68, + 49, 89, 95, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 98, 97, 100, 50, 85, 81, 62, 89, 64, 71, 74, 95, 104, 117, 107, 104, + 113, 105, 95, 90, 83, 76, 75, 76, 83, 93, 89, 118, 137, 197, 155, 160, + 255, 249, 64, 78, 114, 152, 158, 147, 160, 171, 166, 150, 148, 145, 134, 127, + 116, 112, 110, 109, 101, 94, 93, 96, 87, 101, 123, 71, 65, 62, 147, 83, + 62, 87, 85, 68, 91, 81, 109, 115, 130, 115, 111, 115, 111, 103, 113, 133, + 90, 101, 92, 56, 84, 88, 102, 106, 112, 111, 104, 97, 97, 96, 87, 77, + 66, 70, 94, 94, 89, 88, 85, 103, 99, 112, 124, 130, 136, 138, 129, 117, + 135, 121, 55, 55, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 107, 96, 65, 25, 80, 104, 79, 72, 63, 73, 93, 111, 109, + 113, 116, 116, 112, 97, 86, 83, 74, 62, 60, 70, 90, 72, 95, 116, 109, + 157, 138, 166, 178, 204, 84, 105, 109, 132, 154, 170, 155, 170, 167, 154, 153, + 148, 126, 106, 114, 108, 101, 99, 95, 93, 97, 103, 114, 127, 111, 71, 85, + 81, 218, 33, 65, 90, 145, 127, 62, 93, 88, 100, 125, 119, 117, 115, 109, + 100, 103, 114, 75, 99, 110, 93, 111, 113, 116, 113, 110, 110, 107, 103, 102, + 98, 82, 66, 75, 79, 100, 97, 86, 87, 89, 111, 103, 109, 119, 132, 143, + 140, 130, 115, 136, 126, 60, 74, 108, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 110, 111, 86, 102, 96, 85, 70, 54, 95, 102, + 121, 127, 120, 108, 102, 91, 75, 76, 90, 111, 110, 86, 68, 68, 122, 44, + 76, 106, 98, 113, 106, 118, 131, 131, 93, 101, 86, 110, 129, 132, 130, 156, + 163, 146, 134, 128, 126, 129, 118, 110, 105, 108, 112, 111, 110, 109, 141, 147, + 149, 106, 57, 78, 91, 69, 87, 67, 88, 104, 82, 112, 101, 114, 113, 119, + 120, 114, 116, 122, 121, 112, 105, 134, 135, 126, 110, 118, 111, 109, 110, 111, + 108, 105, 105, 99, 82, 65, 79, 78, 94, 90, 87, 91, 92, 113, 127, 124, + 132, 150, 159, 147, 126, 114, 123, 119, 70, 93, 162, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 139, 102, 66, 110, 74, 57, 103, + 141, 164, 152, 135, 109, 113, 104, 96, 79, 75, 82, 101, 122, 119, 94, 71, + 64, 130, 28, 49, 105, 131, 136, 119, 97, 114, 104, 137, 124, 84, 99, 119, + 124, 131, 132, 142, 185, 234, 221, 146, 79, 119, 115, 117, 126, 132, 128, 119, + 111, 128, 112, 177, 135, 83, 110, 83, 101, 88, 141, 120, 110, 146, 109, 120, + 104, 122, 128, 125, 115, 122, 137, 138, 124, 105, 137, 139, 138, 107, 121, 113, + 111, 118, 116, 109, 103, 100, 97, 86, 76, 74, 67, 81, 82, 89, 97, 95, + 112, 140, 138, 143, 158, 166, 157, 136, 119, 100, 101, 78, 98, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 45, 52, 94, + 83, 66, 110, 168, 181, 173, 138, 88, 105, 104, 104, 96, 111, 110, 113, 117, + 110, 95, 84, 81, 97, 86, 95, 128, 127, 122, 107, 110, 130, 102, 114, 96, + 65, 95, 118, 128, 126, 136, 137, 132, 121, 103, 98, 109, 113, 112, 116, 125, + 130, 125, 120, 116, 151, 88, 128, 118, 117, 95, 119, 113, 146, 98, 145, 135, + 131, 133, 130, 130, 139, 139, 134, 126, 131, 140, 142, 135, 106, 135, 152, 144, + 123, 127, 132, 127, 120, 119, 112, 103, 99, 96, 91, 84, 72, 63, 77, 84, + 96, 110, 107, 118, 145, 156, 157, 151, 159, 164, 146, 115, 87, 81, 82, 97, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, + 90, 117, 88, 74, 51, 78, 143, 133, 152, 139, 90, 112, 107, 107, 104, 125, + 125, 126, 128, 126, 123, 122, 121, 101, 152, 127, 142, 137, 147, 114, 124, 122, + 115, 113, 110, 90, 117, 133, 146, 151, 144, 135, 130, 125, 111, 109, 127, 107, + 106, 108, 111, 112, 110, 114, 120, 105, 138, 134, 106, 128, 149, 127, 144, 125, + 170, 137, 142, 134, 133, 136, 147, 142, 136, 135, 138, 141, 139, 141, 145, 128, + 143, 160, 124, 110, 103, 127, 122, 115, 116, 115, 107, 101, 98, 91, 82, 75, + 67, 82, 90, 107, 123, 118, 129, 159, 182, 175, 147, 148, 167, 147, 101, 84, + 73, 86, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 201, 108, 96, 90, 92, 40, 89, 154, 174, 131, 112, 98, 135, 118, + 105, 119, 128, 132, 134, 132, 128, 128, 133, 137, 134, 135, 140, 147, 151, 144, + 129, 115, 113, 114, 95, 101, 99, 117, 127, 151, 146, 145, 143, 132, 119, 108, + 108, 113, 105, 118, 126, 117, 101, 91, 98, 111, 122, 122, 121, 123, 125, 131, + 138, 142, 147, 149, 146, 139, 134, 139, 143, 144, 143, 151, 152, 132, 124, 145, + 158, 144, 138, 145, 172, 142, 108, 122, 123, 120, 117, 118, 116, 107, 99, 95, + 85, 78, 77, 72, 105, 91, 121, 114, 139, 122, 126, 177, 167, 151, 154, 158, + 148, 101, 79, 81, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 100, 93, 88, 84, 47, 79, 142, 197, 149, 129, + 107, 129, 117, 112, 127, 127, 132, 134, 134, 135, 134, 136, 138, 146, 140, 135, + 132, 130, 126, 122, 115, 112, 107, 104, 107, 110, 122, 132, 140, 144, 145, 143, + 136, 124, 112, 108, 108, 96, 103, 110, 109, 105, 102, 109, 116, 116, 116, 117, + 119, 125, 131, 138, 142, 134, 137, 136, 131, 130, 137, 145, 147, 143, 147, 147, + 134, 124, 142, 153, 143, 116, 133, 164, 140, 116, 126, 118, 116, 117, 117, 115, + 106, 101, 96, 91, 84, 74, 73, 105, 95, 123, 120, 146, 130, 130, 172, 162, + 148, 151, 152, 141, 101, 70, 75, 144, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 87, 85, 75, 60, 61, 117, + 169, 124, 119, 110, 121, 121, 127, 138, 132, 133, 135, 137, 139, 140, 140, 137, + 129, 129, 133, 133, 132, 128, 123, 116, 115, 102, 107, 112, 107, 120, 136, 134, + 140, 141, 139, 133, 125, 114, 102, 95, 98, 101, 106, 112, 120, 124, 128, 129, + 122, 122, 122, 124, 128, 131, 135, 137, 131, 135, 136, 134, 136, 145, 152, 154, + 146, 145, 144, 136, 127, 138, 149, 142, 123, 143, 153, 125, 114, 122, 118, 126, + 118, 118, 114, 104, 99, 96, 92, 87, 79, 80, 108, 101, 124, 123, 146, 130, + 130, 157, 147, 141, 150, 149, 132, 99, 62, 73, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 84, 85, 73, + 76, 46, 79, 111, 82, 100, 110, 115, 126, 135, 142, 138, 137, 137, 138, 141, + 142, 141, 136, 120, 126, 134, 139, 142, 138, 134, 132, 127, 113, 106, 116, 83, + 118, 136, 141, 138, 141, 137, 131, 125, 117, 102, 90, 107, 107, 113, 121, 133, + 139, 143, 143, 139, 139, 137, 136, 135, 134, 135, 134, 138, 143, 147, 146, 149, + 155, 157, 156, 154, 148, 147, 142, 132, 138, 146, 141, 141, 162, 157, 127, 124, + 124, 119, 129, 123, 120, 114, 101, 94, 91, 87, 84, 88, 90, 114, 108, 124, + 123, 140, 124, 124, 133, 126, 126, 143, 139, 113, 83, 54, 68, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 83, 86, 76, 85, 42, 48, 88, 76, 100, 116, 113, 128, 132, 134, 142, 139, + 136, 135, 137, 138, 137, 135, 136, 135, 134, 133, 136, 141, 146, 148, 136, 130, + 109, 126, 70, 121, 133, 148, 149, 150, 144, 136, 130, 125, 113, 98, 104, 108, + 116, 125, 136, 141, 147, 150, 154, 155, 153, 150, 147, 142, 140, 138, 142, 147, + 154, 157, 159, 162, 158, 152, 162, 156, 153, 149, 139, 143, 147, 139, 135, 162, + 159, 143, 143, 132, 121, 119, 121, 116, 109, 96, 88, 87, 85, 82, 93, 97, + 115, 113, 122, 124, 135, 120, 124, 121, 114, 114, 131, 124, 85, 55, 47, 125, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 86, 85, 82, 86, 56, 39, 84, 83, 100, 112, 107, 128, 124, + 136, 141, 140, 138, 137, 136, 136, 136, 135, 130, 132, 136, 141, 148, 152, 152, + 150, 139, 142, 118, 132, 82, 127, 133, 151, 150, 155, 148, 137, 131, 128, 117, + 101, 100, 106, 116, 126, 138, 144, 150, 156, 157, 159, 159, 157, 155, 153, 151, + 147, 147, 154, 162, 165, 169, 170, 164, 156, 164, 161, 159, 152, 142, 150, 152, + 139, 133, 151, 142, 136, 134, 129, 133, 125, 114, 111, 103, 94, 87, 88, 88, + 85, 90, 96, 112, 115, 119, 127, 134, 120, 136, 130, 125, 115, 121, 112, 66, + 42, 50, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 91, 83, 83, 78, 82, 54, 65, 77, 88, 101, + 104, 129, 119, 140, 141, 144, 148, 149, 148, 146, 145, 143, 129, 134, 146, 158, + 167, 165, 156, 145, 142, 141, 124, 116, 104, 126, 138, 149, 149, 157, 152, 140, + 131, 128, 117, 102, 103, 106, 115, 126, 140, 147, 151, 155, 159, 162, 163, 163, + 163, 161, 159, 155, 157, 162, 168, 170, 173, 176, 169, 161, 157, 160, 160, 150, + 143, 156, 158, 139, 146, 149, 131, 126, 117, 120, 143, 131, 112, 109, 103, 94, + 88, 89, 89, 86, 87, 94, 109, 116, 117, 128, 131, 118, 140, 140, 141, 116, + 106, 95, 55, 40, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 92, 79, 81, 70, 101, 69, 46, + 69, 81, 95, 105, 131, 113, 137, 140, 149, 159, 162, 159, 155, 153, 151, 160, + 157, 157, 160, 166, 163, 157, 148, 149, 139, 126, 94, 116, 122, 145, 148, 149, + 160, 159, 147, 138, 135, 123, 108, 108, 107, 111, 123, 138, 145, 145, 143, 160, + 163, 165, 166, 165, 163, 161, 158, 163, 166, 166, 168, 170, 171, 166, 157, 148, + 154, 156, 143, 138, 157, 160, 139, 153, 150, 135, 137, 120, 117, 140, 113, 112, + 109, 102, 93, 88, 88, 87, 84, 87, 95, 108, 117, 115, 129, 130, 117, 127, + 135, 140, 103, 84, 75, 42, 38, 110, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 86, 84, 82, + 86, 90, 73, 54, 77, 116, 96, 121, 137, 122, 150, 153, 156, 159, 161, 163, + 165, 164, 168, 171, 174, 170, 163, 155, 151, 150, 150, 131, 116, 114, 118, 124, + 136, 153, 152, 157, 154, 141, 135, 133, 128, 119, 118, 106, 115, 113, 119, 131, + 133, 152, 165, 167, 166, 163, 161, 163, 168, 171, 168, 172, 176, 178, 177, 172, + 170, 168, 175, 143, 132, 142, 148, 149, 146, 137, 141, 143, 144, 142, 137, 131, + 119, 106, 110, 101, 94, 86, 78, 78, 84, 94, 98, 98, 113, 124, 119, 123, + 136, 143, 136, 137, 126, 106, 66, 61, 27, 24, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 81, 79, 76, 79, 85, 109, 83, 60, 82, 91, 113, 125, 148, 152, 156, 159, + 161, 163, 165, 166, 167, 166, 171, 177, 180, 177, 165, 152, 142, 130, 135, 136, + 130, 132, 143, 148, 149, 159, 160, 155, 146, 139, 133, 128, 122, 129, 120, 129, + 127, 126, 133, 133, 149, 157, 162, 170, 175, 177, 174, 171, 167, 168, 164, 166, + 173, 182, 181, 172, 159, 156, 139, 138, 142, 135, 132, 140, 146, 132, 131, 132, + 136, 139, 136, 131, 123, 108, 99, 90, 82, 75, 77, 83, 92, 97, 98, 112, + 119, 117, 124, 141, 144, 130, 133, 123, 90, 64, 73, 58, 54, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 80, 78, 75, 77, 82, 99, 139, 108, 81, 86, 116, 118, 147, + 152, 156, 161, 166, 169, 172, 173, 173, 183, 176, 168, 163, 164, 162, 158, 153, + 112, 134, 142, 129, 132, 152, 156, 145, 161, 161, 155, 150, 142, 131, 126, 126, + 126, 122, 136, 135, 131, 134, 132, 146, 151, 150, 153, 155, 163, 167, 173, 173, + 179, 173, 172, 170, 174, 170, 166, 158, 157, 145, 147, 147, 133, 129, 139, 147, + 141, 134, 131, 137, 141, 135, 131, 129, 108, 100, 90, 81, 75, 77, 82, 89, + 98, 98, 108, 112, 112, 124, 139, 140, 131, 127, 120, 71, 65, 84, 91, 86, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 83, 81, 78, 79, 85, 86, 155, 144, 109, 100, + 124, 124, 144, 148, 153, 159, 165, 171, 174, 175, 176, 173, 174, 176, 176, 172, + 158, 141, 129, 122, 135, 134, 120, 127, 151, 158, 150, 157, 157, 153, 151, 143, + 130, 128, 129, 115, 116, 138, 139, 135, 136, 133, 147, 214, 204, 188, 175, 167, + 165, 164, 164, 171, 174, 172, 161, 149, 148, 159, 172, 177, 159, 151, 151, 146, + 144, 144, 136, 151, 139, 134, 141, 144, 134, 128, 127, 109, 102, 91, 80, 75, + 79, 84, 87, 103, 100, 106, 107, 109, 126, 141, 137, 141, 121, 112, 61, 65, + 78, 96, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 84, 81, 81, 86, 107, 112, + 108, 125, 115, 123, 128, 154, 161, 165, 170, 177, 181, 183, 182, 182, 176, 177, + 176, 170, 159, 147, 138, 134, 151, 142, 129, 124, 137, 153, 159, 159, 160, 162, + 159, 154, 145, 131, 129, 129, 112, 114, 138, 141, 139, 140, 135, 146, 148, 145, + 144, 145, 148, 150, 151, 151, 145, 152, 154, 148, 140, 144, 160, 179, 184, 164, + 154, 155, 154, 153, 146, 132, 140, 131, 130, 139, 144, 139, 134, 131, 111, 104, + 93, 81, 77, 82, 86, 85, 103, 102, 104, 104, 112, 136, 149, 138, 144, 108, + 98, 61, 67, 68, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 80, 80, + 85, 94, 91, 105, 128, 101, 112, 124, 133, 152, 156, 158, 159, 161, 161, 160, + 158, 164, 159, 148, 137, 133, 140, 155, 168, 159, 138, 125, 132, 148, 154, 154, + 158, 168, 176, 172, 159, 145, 135, 129, 124, 112, 114, 134, 137, 135, 134, 124, + 134, 153, 150, 146, 138, 134, 131, 134, 136, 146, 145, 148, 151, 156, 159, 162, + 164, 164, 159, 160, 158, 148, 144, 144, 137, 131, 127, 126, 130, 138, 140, 134, + 126, 114, 110, 98, 83, 79, 86, 88, 84, 98, 100, 103, 105, 116, 145, 157, + 141, 132, 92, 79, 63, 66, 66, 135, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 81, 80, 85, 74, 102, 118, 125, 97, 120, 126, 120, 130, 131, 131, 132, + 133, 132, 132, 132, 133, 138, 146, 152, 157, 156, 155, 154, 148, 131, 122, 131, + 144, 150, 150, 153, 169, 184, 181, 160, 144, 138, 132, 121, 112, 111, 129, 129, + 128, 127, 117, 125, 137, 137, 138, 134, 133, 137, 150, 159, 154, 153, 156, 160, + 165, 164, 160, 158, 157, 158, 164, 162, 148, 142, 144, 137, 132, 131, 126, 123, + 130, 141, 135, 122, 119, 114, 101, 85, 82, 90, 92, 86, 91, 94, 99, 100, + 114, 144, 152, 127, 104, 76, 61, 57, 55, 72, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 198, 82, 86, 96, 100, 91, 113, 123, 140, 135, 146, 149, + 150, 153, 154, 157, 157, 159, 161, 159, 158, 160, 162, 163, 158, 149, 142, 140, + 131, 123, 126, 138, 150, 155, 158, 164, 182, 182, 157, 139, 140, 134, 119, 115, + 112, 128, 130, 131, 131, 120, 128, 123, 135, 148, 151, 146, 140, 140, 143, 147, + 155, 162, 162, 158, 157, 164, 171, 166, 161, 166, 164, 155, 151, 146, 130, 130, + 132, 126, 118, 128, 147, 146, 131, 121, 118, 105, 88, 85, 92, 93, 86, 88, + 91, 95, 94, 105, 134, 137, 108, 82, 66, 48, 47, 43, 77, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 82, 79, 86, 94, 95, 131, 112, 116, + 128, 145, 150, 153, 159, 160, 159, 159, 161, 163, 159, 164, 167, 162, 153, 146, + 145, 146, 128, 121, 120, 132, 146, 152, 152, 153, 156, 166, 168, 159, 148, 141, + 133, 125, 115, 117, 123, 127, 133, 136, 135, 134, 120, 127, 139, 152, 159, 156, + 145, 137, 135, 147, 160, 165, 162, 159, 160, 163, 166, 157, 155, 159, 156, 144, + 138, 139, 126, 125, 126, 126, 128, 132, 135, 139, 120, 116, 106, 93, 87, 87, + 89, 88, 83, 88, 98, 86, 113, 138, 91, 56, 38, 59, 63, 34, 18, 136, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 83, 86, 93, 95, + 125, 113, 121, 129, 146, 149, 153, 157, 158, 159, 158, 160, 160, 164, 161, 157, + 153, 149, 145, 141, 138, 132, 125, 125, 135, 146, 150, 149, 150, 160, 166, 165, + 153, 143, 137, 131, 123, 116, 119, 122, 129, 135, 139, 137, 136, 128, 134, 144, + 155, 163, 163, 158, 153, 147, 149, 153, 157, 161, 165, 169, 170, 162, 158, 157, + 156, 150, 142, 138, 136, 128, 118, 116, 127, 129, 126, 133, 144, 126, 122, 109, + 95, 87, 87, 87, 85, 85, 85, 91, 82, 100, 115, 80, 56, 59, 57, 49, + 32, 34, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, + 87, 89, 92, 113, 113, 125, 128, 141, 147, 150, 152, 155, 158, 157, 157, 155, + 162, 153, 145, 143, 147, 148, 141, 134, 133, 127, 127, 136, 147, 151, 152, 154, + 166, 168, 163, 152, 143, 135, 129, 125, 123, 122, 125, 131, 136, 137, 136, 133, + 134, 138, 144, 153, 161, 165, 165, 164, 160, 151, 142, 141, 150, 161, 168, 168, + 157, 158, 157, 150, 143, 139, 136, 130, 133, 116, 114, 130, 132, 122, 128, 146, + 133, 127, 113, 97, 88, 86, 86, 83, 94, 83, 85, 75, 74, 71, 47, 39, + 52, 35, 21, 30, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 199, 85, 85, 88, 93, 108, 124, 120, 132, 143, 145, 147, 151, 154, + 155, 154, 151, 152, 146, 141, 141, 147, 150, 145, 137, 129, 124, 124, 132, 143, + 151, 158, 165, 168, 170, 165, 156, 146, 138, 130, 125, 125, 123, 125, 130, 134, + 131, 128, 128, 135, 139, 144, 150, 156, 161, 163, 164, 168, 155, 140, 135, 140, + 149, 157, 158, 150, 157, 156, 144, 137, 137, 133, 124, 136, 126, 124, 135, 137, + 130, 130, 137, 140, 133, 117, 98, 86, 84, 83, 79, 94, 78, 75, 69, 52, + 36, 26, 28, 33, 25, 22, 43, 82, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 84, 80, 83, 71, 96, 118, 111, 121, 135, 141, + 144, 147, 151, 151, 149, 147, 144, 143, 144, 148, 150, 147, 143, 139, 130, 124, + 121, 127, 135, 145, 156, 169, 164, 162, 160, 155, 148, 135, 125, 118, 119, 116, + 120, 128, 131, 127, 125, 128, 138, 140, 145, 149, 152, 154, 155, 156, 165, 157, + 147, 139, 137, 142, 148, 151, 148, 153, 152, 141, 136, 136, 132, 122, 128, 132, + 135, 137, 141, 141, 136, 128, 143, 136, 119, 99, 87, 83, 81, 76, 85, 69, + 65, 65, 43, 28, 32, 30, 32, 45, 55, 71, 98, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 75, 80, 50, 87, 115, 105, + 118, 128, 137, 142, 147, 147, 144, 143, 143, 143, 146, 149, 151, 148, 143, 137, + 135, 133, 127, 122, 123, 127, 135, 146, 159, 152, 149, 147, 147, 140, 128, 115, + 111, 108, 109, 118, 129, 130, 125, 128, 136, 141, 144, 147, 149, 148, 148, 149, + 150, 155, 154, 152, 147, 143, 143, 147, 150, 148, 148, 146, 141, 139, 136, 131, + 124, 116, 129, 135, 137, 143, 149, 140, 124, 144, 137, 119, 99, 86, 83, 81, + 76, 80, 67, 60, 57, 34, 29, 44, 24, 29, 52, 74, 85, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 79, 36, + 82, 115, 105, 123, 122, 132, 143, 146, 142, 140, 141, 143, 143, 145, 147, 147, + 143, 139, 133, 131, 133, 128, 124, 123, 123, 126, 135, 147, 141, 135, 133, 134, + 130, 118, 108, 106, 106, 111, 123, 133, 132, 124, 130, 142, 144, 145, 146, 144, + 142, 142, 145, 147, 146, 148, 150, 149, 147, 145, 145, 147, 153, 143, 141, 142, + 144, 139, 132, 127, 118, 125, 131, 139, 147, 148, 139, 127, 144, 136, 118, 97, + 85, 81, 80, 77, 78, 69, 56, 51, 36, 49, 71, 35, 25, 34, 60, 140, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 195, 80, 31, 81, 118, 109, 128, 117, 130, 141, 143, 138, 133, 135, 140, 140, + 139, 138, 138, 137, 137, 134, 131, 128, 126, 125, 124, 123, 123, 131, 140, 135, + 126, 122, 123, 119, 111, 106, 106, 111, 116, 129, 137, 130, 118, 124, 140, 143, + 144, 143, 140, 137, 138, 143, 147, 143, 145, 146, 146, 147, 143, 141, 137, 155, + 141, 136, 144, 149, 142, 132, 130, 129, 123, 129, 144, 151, 143, 134, 131, 143, + 135, 118, 98, 85, 82, 82, 78, 72, 68, 53, 51, 48, 79, 110, 65, 33, + 25, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 73, 42, 89, 114, 125, 127, 124, 104, 136, 138, 123, 134, + 133, 148, 137, 140, 135, 132, 139, 136, 129, 132, 136, 131, 126, 125, 126, 125, + 122, 115, 111, 110, 114, 112, 108, 103, 102, 104, 132, 133, 133, 130, 126, 124, + 129, 132, 134, 133, 131, 129, 137, 141, 142, 137, 139, 155, 144, 144, 155, 141, + 138, 147, 143, 146, 138, 132, 139, 140, 132, 130, 114, 123, 141, 145, 137, 138, + 139, 130, 127, 132, 126, 104, 88, 86, 84, 75, 78, 61, 53, 51, 85, 130, + 121, 106, 99, 21, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 43, 88, 111, 122, 125, 135, 119, 133, + 136, 124, 125, 130, 140, 137, 141, 137, 133, 137, 132, 126, 130, 120, 123, 126, + 126, 125, 124, 125, 122, 111, 111, 115, 116, 115, 112, 112, 112, 123, 122, 126, + 129, 128, 124, 121, 122, 135, 139, 144, 142, 132, 128, 129, 125, 132, 144, 139, + 146, 163, 156, 141, 137, 140, 149, 147, 142, 142, 139, 134, 133, 118, 121, 136, + 145, 138, 135, 134, 126, 123, 127, 120, 99, 86, 83, 81, 74, 75, 64, 62, + 61, 117, 149, 128, 106, 96, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 87, 106, 118, 123, + 134, 128, 126, 135, 129, 126, 144, 144, 137, 142, 135, 129, 130, 124, 119, 125, + 119, 127, 133, 134, 131, 130, 134, 138, 123, 125, 130, 132, 132, 131, 132, 132, + 122, 120, 128, 142, 147, 140, 134, 132, 125, 125, 132, 140, 130, 133, 136, 131, + 135, 141, 136, 131, 143, 151, 148, 148, 135, 146, 151, 147, 141, 138, 134, 133, + 121, 118, 131, 148, 144, 136, 134, 129, 122, 124, 113, 96, 84, 81, 80, 74, + 70, 62, 63, 56, 138, 160, 133, 109, 120, 140, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 89, + 101, 112, 119, 133, 137, 121, 134, 135, 127, 151, 147, 136, 140, 132, 124, 124, + 117, 114, 121, 114, 117, 122, 122, 118, 118, 122, 127, 132, 137, 141, 145, 146, + 145, 144, 143, 140, 139, 145, 154, 153, 139, 128, 124, 152, 140, 129, 137, 126, + 133, 124, 120, 129, 138, 144, 129, 129, 143, 148, 156, 133, 138, 146, 145, 138, + 139, 138, 132, 123, 115, 129, 151, 151, 141, 138, 135, 123, 120, 112, 96, 85, + 84, 82, 78, 69, 62, 62, 43, 140, 156, 136, 119, 175, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 86, 93, 101, 110, 135, 145, 126, 135, 137, 127, 144, 141, 136, 140, + 132, 124, 124, 116, 111, 115, 115, 116, 116, 116, 114, 117, 121, 126, 139, 144, + 147, 151, 153, 153, 151, 149, 153, 156, 160, 165, 163, 156, 151, 147, 138, 137, + 119, 130, 123, 130, 117, 130, 117, 119, 141, 137, 142, 157, 145, 142, 138, 132, + 138, 141, 137, 145, 145, 130, 123, 115, 130, 152, 150, 140, 135, 133, 121, 117, + 108, 96, 87, 84, 83, 80, 69, 66, 68, 46, 138, 154, 143, 132, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 198, 82, 90, 101, 121, 137, 130, 134, 141, 136, 140, + 145, 139, 144, 138, 132, 134, 123, 110, 107, 114, 113, 114, 117, 119, 124, 127, + 134, 141, 146, 149, 154, 157, 158, 155, 152, 156, 160, 159, 153, 152, 152, 148, + 137, 119, 141, 114, 119, 108, 105, 80, 117, 121, 97, 118, 124, 142, 168, 151, + 145, 148, 132, 137, 144, 141, 150, 152, 128, 123, 120, 135, 150, 144, 133, 128, + 121, 114, 109, 102, 92, 86, 83, 80, 76, 63, 64, 70, 59, 133, 156, 145, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 85, 97, 104, 121, 133, 131, + 144, 147, 136, 151, 140, 145, 144, 145, 148, 131, 104, 90, 83, 89, 98, 103, + 103, 105, 109, 118, 129, 134, 137, 143, 148, 150, 146, 143, 147, 149, 136, 116, + 116, 124, 113, 86, 106, 137, 95, 108, 129, 139, 112, 172, 118, 77, 99, 106, + 120, 151, 145, 154, 154, 135, 140, 149, 142, 152, 152, 122, 121, 125, 140, 148, + 138, 131, 126, 113, 108, 102, 96, 91, 87, 80, 77, 74, 63, 59, 64, 68, + 123, 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 83, 96, 99, + 116, 139, 131, 143, 146, 123, 144, 136, 145, 148, 153, 155, 132, 97, 75, 70, + 82, 98, 102, 97, 95, 100, 110, 104, 109, 114, 119, 126, 129, 127, 124, 109, + 114, 108, 102, 125, 156, 153, 123, 232, 240, 146, 132, 152, 150, 94, 143, 93, + 62, 103, 112, 109, 127, 125, 149, 154, 137, 146, 155, 143, 150, 148, 116, 118, + 128, 145, 149, 138, 134, 130, 115, 105, 100, 95, 92, 88, 82, 77, 74, 71, + 60, 60, 71, 115, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, + 75, 84, 84, 103, 126, 137, 136, 133, 134, 140, 148, 137, 141, 155, 148, 118, + 100, 99, 94, 85, 93, 103, 107, 117, 121, 114, 140, 132, 115, 124, 111, 130, + 113, 95, 118, 146, 156, 128, 104, 154, 162, 158, 155, 160, 131, 120, 153, 151, + 113, 95, 100, 111, 121, 122, 123, 128, 137, 141, 132, 144, 152, 150, 145, 140, + 131, 122, 117, 131, 141, 137, 129, 124, 115, 103, 101, 97, 94, 91, 89, 82, + 75, 70, 68, 59, 59, 67, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 70, 78, 81, 98, 118, 129, 134, 134, 136, 137, 143, 134, 135, + 144, 140, 121, 109, 109, 113, 85, 63, 66, 95, 136, 143, 121, 143, 136, 129, + 150, 142, 152, 131, 114, 142, 148, 141, 117, 107, 159, 149, 127, 147, 163, 142, + 122, 133, 128, 111, 114, 120, 131, 138, 137, 133, 135, 141, 143, 136, 146, 153, + 151, 144, 138, 128, 120, 120, 137, 149, 145, 133, 125, 115, 103, 101, 96, 92, + 87, 85, 81, 76, 72, 68, 60, 60, 68, 160, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 70, 74, 78, 88, 104, 119, 131, 135, 135, 134, + 138, 135, 133, 133, 133, 128, 125, 125, 116, 103, 83, 65, 73, 119, 147, 140, + 142, 128, 126, 147, 139, 139, 123, 111, 162, 159, 146, 127, 120, 164, 146, 121, + 138, 152, 134, 108, 108, 105, 103, 116, 133, 142, 147, 145, 140, 139, 142, 141, + 141, 148, 154, 150, 141, 133, 123, 116, 119, 138, 150, 146, 133, 124, 113, 102, + 99, 93, 87, 83, 82, 79, 77, 73, 67, 60, 63, 69, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 72, 75, 80, 90, 106, 124, + 132, 131, 128, 134, 136, 134, 132, 134, 138, 139, 135, 114, 120, 117, 93, 71, + 89, 120, 128, 151, 136, 146, 171, 170, 159, 144, 133, 158, 164, 163, 143, 118, + 149, 134, 124, 105, 112, 100, 94, 110, 123, 128, 136, 136, 143, 147, 144, 142, + 142, 144, 142, 146, 150, 153, 148, 137, 127, 119, 116, 118, 137, 147, 139, 125, + 117, 110, 103, 97, 90, 84, 79, 79, 79, 79, 77, 68, 62, 67, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 69, 69, 71, + 78, 94, 112, 123, 126, 125, 130, 136, 137, 135, 138, 144, 145, 139, 134, 120, + 116, 112, 97, 93, 99, 97, 109, 102, 130, 161, 170, 156, 145, 132, 135, 147, + 154, 137, 102, 120, 108, 108, 106, 111, 107, 111, 126, 137, 139, 141, 142, 148, + 151, 147, 147, 149, 151, 149, 148, 149, 150, 144, 131, 120, 117, 119, 125, 139, + 145, 131, 113, 107, 105, 101, 92, 87, 82, 77, 78, 81, 81, 79, 71, 66, + 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 68, 68, 72, 84, 99, 113, 119, 124, 125, 132, 135, 138, 142, 145, 143, + 138, 146, 125, 122, 129, 123, 113, 110, 106, 82, 70, 87, 99, 111, 106, 115, + 109, 107, 111, 118, 115, 96, 118, 106, 105, 120, 127, 136, 137, 133, 133, 137, + 141, 152, 154, 154, 148, 146, 149, 151, 148, 148, 146, 144, 138, 124, 115, 117, + 124, 139, 148, 145, 125, 107, 101, 101, 97, 87, 84, 80, 80, 82, 83, 82, + 80, 74, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 192, 68, 73, 78, 89, 101, 114, 126, 124, 129, 136, 145, + 149, 147, 144, 143, 143, 136, 141, 143, 132, 130, 134, 132, 125, 104, 105, 90, + 99, 97, 119, 114, 101, 96, 100, 108, 102, 132, 124, 125, 113, 122, 139, 146, + 139, 142, 155, 161, 155, 155, 153, 145, 144, 148, 152, 151, 146, 142, 138, 132, + 119, 112, 117, 129, 143, 148, 140, 120, 105, 101, 100, 95, 83, 80, 81, 84, + 86, 86, 83, 78, 77, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 73, 73, 75, 81, 92, 109, 125, 123, + 126, 134, 146, 152, 148, 146, 148, 140, 137, 140, 137, 134, 142, 143, 128, 129, + 118, 125, 105, 110, 100, 112, 96, 115, 106, 108, 113, 104, 132, 127, 132, 143, + 136, 143, 148, 142, 143, 148, 145, 157, 157, 153, 146, 146, 151, 157, 156, 144, + 139, 136, 128, 117, 110, 120, 133, 137, 140, 133, 116, 102, 101, 100, 95, 79, + 79, 84, 89, 92, 92, 86, 81, 81, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 67, 92, 82, + 79, 118, 122, 113, 127, 141, 137, 140, 149, 142, 146, 137, 130, 130, 136, 141, + 139, 137, 143, 141, 135, 134, 135, 139, 140, 140, 127, 129, 131, 133, 133, 136, + 140, 143, 143, 142, 142, 142, 145, 148, 151, 153, 158, 159, 154, 146, 142, 146, + 153, 156, 149, 148, 140, 120, 110, 116, 129, 134, 139, 132, 122, 108, 99, 94, + 90, 82, 76, 78, 87, 97, 99, 96, 98, 102, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, + 71, 64, 43, 50, 103, 124, 118, 120, 130, 133, 139, 142, 139, 145, 143, 137, + 132, 130, 131, 131, 135, 141, 141, 139, 139, 142, 144, 148, 149, 148, 149, 153, + 155, 154, 154, 154, 153, 142, 143, 145, 149, 151, 153, 154, 153, 153, 155, 152, + 144, 139, 144, 150, 152, 150, 144, 131, 116, 114, 124, 132, 132, 137, 129, 115, + 104, 99, 95, 89, 82, 74, 80, 90, 96, 101, 103, 103, 151, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 50, 50, 31, 28, 59, 109, 120, 117, 115, 127, 138, 138, 140, + 148, 149, 146, 136, 126, 121, 124, 133, 130, 133, 134, 134, 136, 140, 146, 149, + 153, 157, 161, 162, 160, 157, 155, 153, 140, 142, 148, 155, 158, 159, 157, 155, + 154, 157, 154, 149, 146, 150, 152, 153, 148, 135, 117, 111, 119, 133, 136, 131, + 134, 124, 109, 101, 97, 93, 89, 83, 82, 89, 98, 100, 107, 115, 160, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 178, 40, 34, 20, 22, 64, 110, 118, 104, 119, + 138, 141, 141, 149, 151, 151, 141, 128, 121, 121, 126, 134, 138, 140, 139, 138, + 141, 147, 153, 142, 145, 147, 148, 146, 143, 141, 140, 138, 140, 148, 153, 159, + 159, 158, 157, 154, 157, 157, 154, 151, 153, 153, 151, 141, 125, 111, 109, 122, + 135, 136, 133, 129, 120, 108, 100, 93, 87, 86, 87, 87, 97, 104, 102, 111, + 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, 20, 17, 25, 23, 92, + 119, 102, 112, 137, 144, 144, 148, 149, 149, 144, 136, 129, 122, 122, 127, 132, + 133, 130, 127, 127, 130, 134, 134, 135, 136, 135, 135, 135, 138, 138, 144, 144, + 149, 151, 156, 156, 156, 156, 151, 154, 154, 152, 150, 150, 148, 142, 131, 119, + 109, 112, 124, 133, 134, 133, 124, 117, 107, 100, 89, 82, 85, 92, 91, 99, + 104, 102, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 24, + 27, 12, 67, 101, 103, 112, 131, 142, 144, 149, 149, 147, 146, 142, 137, 127, + 121, 122, 123, 122, 119, 116, 116, 117, 118, 135, 135, 133, 131, 133, 136, 142, + 145, 155, 153, 154, 154, 154, 153, 154, 153, 153, 156, 155, 151, 150, 149, 145, + 138, 124, 115, 110, 115, 126, 129, 130, 129, 119, 111, 102, 97, 88, 82, 88, + 100, 98, 104, 107, 106, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 180, 30, 17, 23, 30, 61, 97, 113, 121, 136, 145, 152, 150, 146, 145, + 141, 138, 130, 128, 135, 135, 134, 132, 131, 132, 131, 130, 138, 138, 137, 136, + 137, 141, 147, 151, 157, 156, 156, 155, 156, 155, 154, 153, 158, 159, 157, 152, + 152, 150, 145, 137, 124, 112, 108, 116, 127, 130, 125, 121, 117, 101, 91, 92, + 92, 90, 95, 104, 108, 111, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 180, 17, 34, 3, 22, 87, 112, 113, 130, 147, 152, + 153, 148, 144, 140, 136, 134, 135, 132, 129, 127, 127, 132, 133, 132, 130, 144, + 144, 144, 143, 144, 148, 153, 156, 149, 150, 153, 157, 158, 157, 156, 155, 156, + 155, 153, 147, 147, 146, 139, 130, 124, 109, 104, 116, 131, 130, 122, 114, 114, + 94, 81, 87, 96, 98, 101, 107, 111, 109, 160, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 19, 24, 19, 36, 83, 114, + 129, 145, 152, 152, 152, 148, 143, 137, 131, 129, 140, 140, 141, 140, 141, 141, + 142, 142, 145, 151, 154, 151, 153, 157, 156, 150, 157, 154, 155, 154, 154, 153, + 153, 153, 156, 154, 154, 153, 153, 147, 136, 127, 114, 111, 112, 119, 128, 129, + 122, 111, 107, 91, 82, 93, 104, 106, 107, 112, 117, 162, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 19, 25, 22, + 24, 57, 98, 124, 135, 148, 149, 148, 145, 141, 139, 140, 142, 143, 142, 142, + 141, 140, 142, 143, 144, 145, 151, 155, 154, 157, 162, 162, 158, 161, 157, 157, + 155, 154, 153, 153, 152, 146, 147, 147, 148, 145, 140, 132, 125, 111, 110, 113, + 119, 125, 123, 111, 102, 95, 87, 86, 97, 105, 105, 107, 114, 162, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 17, 24, 26, 17, 30, 77, 120, 128, 137, 142, 144, 144, 143, 144, 145, 148, + 146, 145, 143, 142, 141, 145, 146, 148, 144, 149, 153, 155, 160, 165, 166, 163, + 166, 164, 162, 159, 157, 156, 155, 154, 148, 149, 149, 149, 144, 138, 131, 125, + 107, 108, 113, 119, 122, 116, 105, 97, 84, 83, 91, 103, 108, 106, 109, 163, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 18, 27, 23, 20, 59, 107, 124, 125, 134, 144, 148, 148, + 146, 144, 144, 147, 147, 147, 147, 147, 147, 147, 148, 142, 146, 149, 153, 158, + 161, 162, 161, 166, 164, 162, 159, 158, 158, 159, 159, 158, 152, 149, 146, 144, + 137, 125, 116, 102, 107, 116, 121, 120, 112, 103, 96, 86, 87, 95, 107, 112, + 111, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 25, 32, 23, 40, 80, 105, 124, 134, + 144, 148, 147, 146, 146, 147, 147, 147, 149, 150, 150, 149, 147, 146, 146, 147, + 149, 153, 155, 156, 156, 157, 158, 157, 156, 154, 155, 157, 159, 160, 160, 149, + 142, 139, 141, 136, 121, 107, 103, 108, 116, 117, 110, 102, 95, 92, 99, 97, + 100, 108, 117, 118, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 35, 29, 26, 46, + 72, 123, 133, 142, 144, 144, 146, 153, 157, 149, 148, 150, 152, 152, 150, 149, + 145, 153, 152, 153, 156, 157, 154, 153, 155, 149, 148, 148, 147, 149, 153, 157, + 159, 159, 148, 142, 139, 141, 135, 123, 108, 106, 110, 113, 107, 97, 89, 87, + 89, 109, 106, 106, 112, 119, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, + 34, 25, 24, 41, 106, 120, 135, 145, 147, 151, 156, 160, 151, 150, 150, 149, + 150, 149, 150, 150, 158, 153, 155, 159, 158, 154, 151, 154, 148, 146, 146, 146, + 148, 153, 157, 160, 158, 151, 148, 142, 138, 129, 121, 112, 105, 108, 109, 100, + 87, 82, 89, 97, 108, 111, 115, 118, 120, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 36, 30, 18, 25, 79, 101, 129, 147, 153, 153, 152, 151, 155, + 152, 148, 146, 145, 149, 151, 154, 158, 154, 153, 159, 158, 152, 150, 154, 151, + 151, 149, 149, 151, 155, 159, 162, 152, 150, 149, 140, 128, 116, 110, 106, 101, + 103, 103, 94, 83, 84, 97, 110, 103, 113, 121, 124, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 21, 19, 20, 43, 86, 129, 128, 154, 149, + 154, 146, 147, 144, 144, 147, 149, 150, 153, 160, 154, 155, 155, 156, 156, 155, + 154, 154, 152, 156, 158, 153, 150, 150, 156, 161, 154, 147, 141, 132, 125, 116, + 109, 102, 103, 95, 87, 82, 82, 90, 100, 109, 113, 120, 126, 168, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, 20, 21, 70, 118, + 129, 141, 140, 149, 154, 151, 146, 148, 149, 150, 150, 153, 158, 160, 156, 153, + 150, 150, 154, 158, 161, 153, 154, 155, 155, 156, 156, 155, 155, 149, 144, 135, + 128, 120, 112, 106, 98, 95, 91, 86, 85, 88, 97, 106, 114, 118, 120, 123, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, + 12, 51, 89, 122, 129, 139, 142, 153, 151, 148, 149, 151, 152, 150, 150, 152, + 156, 153, 151, 149, 150, 152, 156, 160, 159, 158, 158, 160, 164, 162, 156, 148, + 145, 139, 128, 118, 112, 106, 101, 95, 89, 88, 89, 92, 97, 106, 114, 120, + 125, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 34, 57, 111, 121, 137, 131, 137, 145, 143, 144, 149, 150, + 147, 146, 147, 147, 148, 152, 154, 154, 154, 152, 151, 161, 160, 158, 159, 159, + 156, 148, 141, 140, 130, 115, 104, 99, 95, 94, 91, 90, 90, 96, 102, 109, + 115, 121, 124, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 114, 115, 123, 118, 128, 137, 135, + 136, 143, 148, 146, 146, 147, 147, 147, 152, 153, 153, 151, 149, 147, 149, 149, + 149, 148, 144, 141, 137, 134, 128, 117, 105, 94, 89, 88, 90, 92, 96, 98, + 104, 110, 117, 121, 124, 126, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 103, 105, + 123, 129, 128, 129, 137, 143, 143, 143, 144, 151, 149, 147, 145, 145, 146, 148, + 149, 137, 139, 140, 140, 137, 136, 132, 131, 112, 105, 97, 91, 89, 93, 96, + 98, 107, 109, 112, 117, 119, 122, 125, 169, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 203, 110, 118, 117, 117, 125, 132, 133, 133, 134, 143, 141, 140, 138, + 137, 136, 137, 138, 133, 131, 130, 132, 133, 129, 121, 113, 97, 95, 96, 99, + 102, 106, 107, 109, 115, 116, 117, 119, 120, 123, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 206, 106, 114, 121, 122, 123, 123, 127, + 129, 134, 135, 133, 130, 124, 120, 126, 121, 116, 119, 123, 117, 102, 87, 85, + 88, 96, 107, 114, 118, 118, 117, 119, 120, 119, 121, 166, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 113, 91, + 99, 106, 116, 120, 123, 120, 119, 123, 123, 118, 114, 109, 108, 108, 102, 94, + 94, 99, 100, 107, 118, 124, 127, 126, 124, 124, 120, 128, 125, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 98, 101, 101, 104, 108, 107, 102, 93, 92, 97, + 102, 103, 100, 102, 109, 115, 120, 125, 126, 127, 123, 126, 127, 124, 174, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 107, 102, + 118, 118, 124, 130, 131, 128, 127, 130, 128, 131, 131, 127, 122, 120, 125, 171, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 216, 135, 131, 129, 129, 131, 131, 168, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 210, 115, 115, 122, 123, 117, 125, 116, 106, 103, 105, 109, 110, 109, 131, 223, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 209, 114, 114, 117, 112, 115, 118, 119, 116, 113, 112, + 112, 108, 113, 118, 120, 123, 124, 120, 113, 116, 113, 110, 108, 108, 105, 101, + 97, 96, 106, 97, 87, 89, 79, 70, 80, 84, 89, 82, 85, 103, 112, 108, + 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, + 125, 129, 128, 123, 122, 118, 116, 118, 118, 114, 111, 111, 107, 103, 105, 112, + 111, 106, 107, 114, 115, 110, 109, 113, 114, 110, 104, 102, 96, 100, 106, 108, + 104, 97, 91, 86, 103, 107, 95, 83, 80, 69, 60, 65, 72, 84, 79, 75, + 91, 105, 101, 95, 98, 114, 116, 134, 141, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 214, 131, 129, 128, 129, 125, 118, 123, 120, 118, 118, 117, 113, 109, 107, 120, + 109, 105, 112, 112, 105, 109, 122, 110, 95, 84, 85, 86, 83, 85, 92, 75, + 83, 92, 94, 91, 84, 82, 82, 94, 92, 83, 74, 68, 62, 57, 58, 65, + 78, 72, 66, 84, 101, 94, 82, 92, 113, 117, 134, 142, 130, 136, 143, 173, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 212, 131, 135, 137, 136, 135, 133, 125, 117, 115, 115, 115, 116, 118, 119, + 118, 116, 109, 96, 93, 99, 97, 87, 86, 95, 90, 74, 62, 62, 64, 64, + 71, 82, 63, 69, 75, 74, 71, 68, 72, 76, 70, 66, 65, 65, 63, 66, + 69, 68, 69, 78, 68, 62, 83, 102, 93, 78, 93, 118, 117, 122, 128, 124, + 131, 128, 124, 125, 127, 128, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 191, 103, 99, 89, 94, 98, 99, 99, 97, 89, 79, 70, 70, 67, + 63, 64, 67, 65, 61, 64, 61, 67, 78, 83, 76, 73, 75, 88, 81, 74, + 70, 65, 60, 60, 64, 59, 62, 62, 60, 56, 56, 61, 67, 64, 56, 60, + 65, 62, 68, 74, 68, 76, 81, 70, 65, 84, 100, 93, 83, 90, 114, 109, + 113, 122, 122, 129, 123, 117, 121, 125, 126, 125, 125, 128, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 195, 69, 101, 92, 100, 104, 106, 106, 105, 104, 96, 88, + 76, 75, 68, 58, 55, 56, 54, 49, 44, 47, 54, 65, 76, 82, 83, 83, + 84, 88, 87, 76, 65, 58, 53, 50, 53, 55, 56, 55, 53, 53, 58, 61, + 68, 57, 62, 67, 60, 64, 69, 58, 74, 79, 71, 68, 81, 89, 87, 89, + 100, 111, 102, 114, 125, 116, 118, 115, 108, 112, 114, 116, 115, 117, 123, 129, + 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 208, 121, 70, 74, 109, 102, 102, 104, 103, 99, 97, + 95, 88, 80, 67, 67, 60, 50, 48, 52, 51, 46, 38, 38, 37, 38, 48, + 62, 69, 69, 63, 74, 76, 64, 54, 54, 54, 51, 45, 48, 53, 55, 57, + 58, 59, 61, 64, 52, 59, 66, 58, 64, 70, 57, 70, 76, 71, 68, 74, + 76, 80, 94, 118, 116, 102, 118, 124, 98, 91, 93, 95, 96, 98, 97, 97, + 102, 111, 119, 121, 122, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 213, 117, 96, 89, 99, 108, 107, 107, 98, + 93, 95, 96, 88, 76, 69, 48, 55, 52, 49, 52, 47, 40, 45, 44, 32, + 26, 34, 43, 45, 43, 43, 56, 55, 56, 59, 56, 50, 49, 53, 51, 47, + 44, 45, 51, 54, 53, 51, 62, 57, 56, 64, 72, 73, 63, 53, 63, 70, + 64, 66, 81, 78, 76, 96, 115, 122, 109, 92, 91, 94, 91, 93, 80, 79, + 75, 70, 65, 67, 75, 84, 99, 107, 117, 123, 170, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 126, 113, 107, 100, 92, 83, 77, 80, + 85, 72, 66, 62, 61, 57, 51, 46, 46, 45, 49, 43, 40, 47, 48, 49, + 59, 50, 39, 33, 38, 43, 43, 43, 44, 46, 48, 51, 53, 54, 53, 53, + 52, 59, 51, 43, 42, 47, 51, 51, 49, 58, 54, 53, 58, 65, 67, 63, + 57, 76, 78, 76, 79, 85, 79, 75, 81, 79, 94, 91, 80, 80, 77, 72, + 71, 53, 53, 53, 52, 51, 53, 57, 61, 74, 78, 85, 94, 107, 119, 171, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 118, 106, 91, 83, 81, 82, + 70, 54, 49, 58, 50, 45, 42, 38, 32, 27, 29, 36, 39, 43, 38, 36, + 46, 49, 52, 61, 55, 48, 42, 42, 42, 41, 42, 45, 42, 49, 52, 51, + 54, 60, 58, 50, 52, 43, 35, 35, 42, 49, 51, 50, 55, 53, 51, 53, + 57, 62, 64, 65, 80, 74, 81, 90, 89, 86, 83, 75, 66, 82, 81, 70, + 67, 62, 55, 54, 53, 53, 53, 54, 55, 53, 50, 47, 51, 51, 54, 65, + 82, 101, 117, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 117, 98, 78, 76, + 71, 70, 67, 55, 43, 38, 44, 50, 46, 42, 39, 35, 31, 34, 41, 36, + 42, 39, 40, 49, 49, 45, 49, 57, 53, 48, 44, 40, 39, 42, 45, 42, + 52, 54, 49, 52, 62, 58, 45, 51, 43, 36, 35, 43, 49, 50, 49, 54, + 54, 51, 51, 52, 58, 67, 74, 80, 70, 80, 91, 85, 87, 88, 70, 71, + 80, 72, 58, 60, 62, 59, 60, 61, 59, 58, 62, 65, 64, 57, 52, 44, + 44, 46, 53, 65, 79, 99, 114, 166, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 102, 96, + 81, 65, 69, 73, 68, 56, 46, 48, 49, 48, 53, 47, 42, 42, 41, 38, + 37, 39, 38, 42, 38, 38, 48, 47, 43, 47, 56, 56, 52, 45, 39, 39, + 41, 43, 40, 51, 54, 47, 50, 59, 57, 45, 57, 52, 47, 44, 47, 48, + 46, 43, 49, 51, 51, 49, 48, 55, 65, 75, 87, 75, 81, 88, 80, 84, + 84, 66, 69, 73, 61, 51, 59, 68, 66, 66, 55, 51, 48, 52, 59, 62, + 58, 55, 46, 47, 51, 54, 56, 61, 79, 96, 110, 111, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, + 97, 89, 85, 82, 77, 68, 75, 71, 55, 49, 57, 61, 58, 56, 49, 44, + 45, 45, 41, 37, 37, 42, 43, 34, 33, 46, 52, 54, 62, 61, 62, 58, + 50, 44, 44, 43, 42, 46, 55, 59, 56, 56, 62, 64, 60, 47, 46, 46, + 45, 45, 45, 46, 47, 44, 47, 49, 48, 46, 49, 58, 67, 75, 71, 74, + 77, 78, 86, 89, 81, 78, 83, 73, 62, 68, 71, 62, 58, 66, 60, 52, + 49, 51, 52, 48, 45, 45, 45, 49, 52, 50, 48, 60, 76, 90, 95, 152, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 99, 94, 93, 88, 85, 84, 68, 71, 70, 65, 60, 61, 64, 67, + 60, 56, 53, 51, 46, 40, 40, 44, 42, 42, 34, 36, 53, 62, 66, 75, + 72, 72, 67, 58, 52, 51, 46, 40, 56, 61, 65, 63, 59, 59, 64, 69, + 47, 48, 48, 45, 39, 39, 45, 51, 42, 45, 48, 49, 48, 49, 53, 59, + 52, 63, 64, 65, 78, 88, 90, 95, 89, 100, 93, 78, 75, 72, 64, 63, + 80, 72, 63, 55, 51, 48, 44, 41, 47, 41, 40, 45, 46, 41, 46, 56, + 66, 77, 92, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 100, 90, 96, 100, 89, 78, 73, 68, 64, 67, 74, 71, + 60, 60, 70, 63, 62, 60, 55, 44, 37, 41, 50, 38, 42, 39, 46, 63, + 70, 70, 75, 80, 81, 75, 64, 58, 57, 50, 40, 59, 61, 63, 62, 53, + 45, 51, 63, 70, 70, 66, 53, 39, 34, 39, 46, 42, 46, 51, 53, 53, + 52, 53, 56, 44, 63, 60, 58, 74, 82, 81, 91, 84, 100, 97, 81, 76, + 76, 77, 86, 68, 65, 58, 53, 51, 49, 47, 47, 50, 37, 31, 39, 43, + 39, 37, 41, 49, 65, 87, 105, 161, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 104, 89, 90, 104, 97, 70, 60, 72, 77, 69, + 62, 76, 73, 66, 74, 64, 65, 61, 55, 53, 53, 53, 49, 46, 46, 56, + 43, 51, 50, 83, 73, 64, 69, 83, 76, 57, 62, 80, 66, 32, 40, 56, + 68, 66, 58, 52, 49, 45, 60, 58, 57, 54, 48, 43, 43, 48, 48, 59, + 47, 48, 65, 50, 35, 54, 53, 45, 45, 61, 77, 86, 89, 90, 101, 72, + 67, 85, 92, 87, 75, 62, 73, 69, 57, 48, 46, 52, 49, 42, 45, 44, + 40, 36, 32, 35, 41, 46, 41, 54, 69, 83, 101, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 204, 103, 100, 99, 97, 89, 78, 73, + 74, 75, 71, 66, 81, 78, 69, 75, 61, 66, 65, 61, 56, 51, 49, 50, + 52, 51, 55, 46, 62, 60, 77, 68, 69, 69, 72, 68, 61, 62, 66, 59, + 43, 39, 54, 62, 56, 50, 52, 51, 46, 55, 54, 54, 56, 53, 46, 43, + 45, 52, 61, 49, 48, 64, 51, 35, 52, 55, 47, 45, 57, 71, 78, 80, + 82, 84, 69, 70, 80, 80, 75, 69, 60, 67, 65, 61, 55, 55, 57, 54, + 47, 45, 44, 41, 36, 33, 32, 36, 39, 35, 46, 59, 71, 93, 116, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 95, 98, 106, 101, 85, + 77, 81, 81, 75, 68, 67, 66, 83, 81, 75, 83, 68, 69, 71, 69, 62, + 53, 51, 57, 64, 59, 59, 57, 73, 66, 67, 61, 70, 71, 64, 62, 64, + 59, 48, 46, 51, 43, 55, 55, 43, 39, 50, 51, 41, 51, 48, 50, 57, + 59, 53, 46, 43, 54, 61, 52, 49, 62, 53, 38, 47, 57, 49, 43, 50, + 61, 67, 68, 70, 69, 65, 71, 73, 64, 62, 64, 60, 65, 68, 70, 67, + 64, 62, 57, 51, 41, 41, 39, 36, 33, 31, 31, 33, 34, 40, 47, 56, + 79, 106, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 100, 90, 98, + 105, 99, 84, 76, 82, 84, 79, 74, 73, 67, 78, 75, 71, 82, 71, 72, + 74, 72, 66, 58, 59, 65, 72, 63, 67, 67, 70, 62, 59, 57, 63, 68, + 62, 62, 63, 53, 38, 40, 52, 48, 57, 50, 33, 32, 47, 50, 38, 49, + 45, 45, 54, 58, 55, 46, 40, 54, 61, 55, 51, 60, 55, 44, 46, 54, + 47, 40, 43, 51, 57, 60, 59, 63, 63, 68, 63, 50, 56, 64, 61, 69, + 73, 77, 76, 71, 65, 61, 57, 72, 71, 68, 62, 56, 50, 45, 42, 36, + 38, 39, 43, 63, 91, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 103, + 97, 92, 105, 100, 96, 92, 88, 86, 85, 88, 90, 85, 70, 71, 62, 60, + 76, 66, 77, 75, 70, 65, 62, 62, 65, 68, 60, 69, 71, 57, 54, 57, + 62, 58, 56, 61, 63, 57, 48, 43, 46, 51, 47, 53, 44, 29, 30, 47, + 51, 41, 52, 44, 42, 49, 56, 54, 47, 42, 52, 61, 59, 53, 56, 57, + 52, 48, 47, 42, 38, 38, 45, 52, 55, 54, 61, 55, 55, 49, 42, 53, + 63, 60, 65, 68, 74, 77, 78, 75, 73, 73, 90, 86, 79, 70, 60, 50, + 42, 37, 37, 37, 35, 34, 50, 78, 100, 106, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 208, 105, 99, 98, 100, 105, 90, 84, 90, 91, 83, 80, 87, 85, 82, 68, + 66, 58, 61, 81, 73, 76, 74, 71, 66, 61, 58, 57, 56, 57, 65, 68, + 47, 54, 60, 68, 55, 42, 54, 59, 52, 48, 52, 53, 49, 41, 44, 38, + 31, 34, 45, 50, 47, 50, 43, 39, 46, 52, 52, 47, 46, 49, 61, 65, + 57, 52, 57, 57, 50, 40, 39, 36, 36, 42, 51, 53, 51, 55, 42, 39, + 40, 38, 48, 58, 54, 55, 56, 64, 76, 84, 85, 86, 89, 68, 64, 58, + 52, 47, 43, 38, 35, 34, 37, 35, 30, 43, 70, 95, 106, 119, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 208, 108, 99, 96, 99, 103, 100, 82, 71, 77, 83, 80, 78, 81, + 75, 76, 67, 68, 63, 67, 85, 75, 66, 72, 74, 70, 62, 56, 55, 56, + 65, 61, 64, 50, 65, 60, 65, 52, 40, 47, 52, 52, 53, 54, 50, 43, + 40, 38, 37, 37, 36, 39, 42, 45, 43, 39, 38, 46, 52, 52, 49, 48, + 47, 62, 71, 59, 46, 53, 58, 48, 36, 38, 36, 35, 40, 49, 52, 49, + 46, 29, 29, 39, 40, 44, 51, 51, 56, 54, 62, 78, 88, 88, 87, 87, + 69, 63, 56, 51, 50, 50, 49, 48, 36, 42, 40, 32, 38, 62, 89, 103, + 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 106, 100, 94, 94, 98, 102, 100, 84, 70, 70, 79, + 84, 82, 79, 78, 82, 75, 76, 67, 65, 77, 61, 58, 69, 79, 76, 66, + 58, 60, 65, 77, 61, 63, 57, 75, 58, 58, 48, 46, 44, 47, 55, 57, + 50, 41, 35, 43, 39, 38, 41, 38, 31, 32, 39, 37, 35, 38, 47, 53, + 53, 50, 50, 48, 64, 76, 62, 43, 50, 57, 47, 35, 37, 37, 35, 40, + 48, 50, 47, 40, 23, 27, 44, 45, 43, 48, 51, 63, 61, 67, 81, 89, + 84, 77, 73, 83, 73, 61, 50, 45, 41, 38, 36, 41, 48, 47, 36, 36, + 56, 82, 97, 109, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 102, 98, 97, 98, 96, 94, 73, 78, + 78, 76, 79, 82, 78, 70, 68, 73, 57, 64, 68, 55, 60, 64, 52, 83, + 81, 62, 63, 61, 53, 57, 59, 63, 71, 72, 60, 46, 47, 56, 62, 52, + 66, 54, 32, 29, 32, 45, 38, 31, 40, 50, 36, 27, 37, 48, 32, 37, + 45, 50, 51, 49, 46, 46, 60, 64, 66, 62, 57, 48, 36, 24, 26, 36, + 38, 33, 40, 51, 43, 25, 40, 36, 33, 37, 46, 53, 53, 50, 46, 56, + 69, 76, 77, 78, 81, 84, 74, 62, 48, 41, 42, 44, 42, 40, 40, 40, + 25, 30, 40, 51, 78, 84, 101, 109, 164, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 94, 98, 100, 95, + 89, 71, 76, 77, 74, 73, 72, 66, 59, 64, 65, 54, 60, 53, 44, 58, + 60, 49, 77, 80, 71, 71, 64, 53, 57, 69, 64, 60, 59, 59, 57, 57, + 58, 55, 46, 62, 57, 42, 41, 39, 46, 33, 33, 41, 46, 40, 42, 45, + 39, 38, 42, 48, 52, 52, 49, 47, 46, 60, 68, 72, 66, 53, 44, 37, + 32, 37, 39, 34, 28, 32, 41, 40, 29, 31, 34, 39, 45, 50, 53, 53, + 53, 51, 57, 65, 69, 69, 69, 69, 71, 71, 64, 55, 52, 53, 52, 46, + 40, 38, 45, 36, 38, 38, 41, 66, 72, 100, 110, 120, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 86, 90, + 100, 104, 97, 88, 78, 82, 84, 78, 73, 68, 61, 55, 56, 52, 51, 57, + 39, 37, 63, 61, 79, 80, 64, 50, 49, 52, 62, 81, 67, 68, 68, 70, + 74, 76, 70, 62, 71, 53, 61, 54, 42, 41, 35, 37, 32, 35, 39, 38, + 38, 50, 47, 25, 41, 45, 50, 53, 53, 50, 49, 49, 58, 70, 75, 63, + 46, 38, 38, 40, 43, 38, 32, 32, 34, 37, 37, 36, 21, 26, 34, 38, + 41, 44, 48, 52, 59, 61, 64, 67, 68, 69, 68, 68, 58, 56, 55, 57, + 57, 53, 43, 35, 40, 53, 49, 49, 42, 37, 61, 69, 95, 106, 117, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 97, 93, 98, 107, 110, 103, 95, 87, 89, 87, 81, 73, 66, 62, 59, 48, + 43, 48, 56, 33, 38, 75, 71, 76, 66, 56, 58, 62, 60, 61, 70, 68, + 75, 78, 76, 77, 81, 80, 76, 85, 58, 55, 43, 33, 37, 32, 34, 43, + 40, 39, 37, 35, 46, 43, 23, 43, 47, 51, 52, 52, 52, 53, 55, 55, + 64, 67, 56, 42, 37, 40, 44, 40, 35, 37, 45, 47, 41, 40, 43, 44, + 44, 44, 47, 51, 57, 63, 68, 63, 63, 64, 68, 72, 76, 78, 78, 69, + 70, 72, 76, 76, 71, 61, 53, 48, 59, 53, 52, 46, 43, 66, 74, 85, + 97, 112, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 206, 105, 103, 105, 108, 106, 99, 94, 88, 85, 80, 74, 68, 62, + 60, 62, 47, 41, 46, 54, 33, 41, 80, 74, 76, 57, 50, 63, 72, 74, + 73, 73, 80, 75, 68, 65, 72, 80, 82, 78, 72, 46, 46, 39, 35, 44, + 41, 43, 53, 42, 39, 41, 35, 39, 43, 38, 49, 50, 52, 52, 51, 50, + 53, 54, 55, 59, 59, 52, 45, 46, 48, 48, 43, 38, 41, 51, 50, 41, + 42, 49, 54, 51, 49, 53, 59, 64, 64, 63, 57, 58, 59, 63, 68, 74, + 78, 79, 76, 76, 76, 78, 79, 74, 65, 59, 55, 58, 45, 44, 43, 43, + 66, 71, 77, 90, 107, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 99, 99, 97, 98, 97, 93, 86, 82, 89, 82, 75, + 72, 71, 65, 63, 63, 49, 48, 45, 50, 39, 46, 76, 68, 85, 60, 53, + 63, 71, 83, 93, 91, 84, 70, 64, 76, 90, 89, 73, 58, 59, 41, 52, + 51, 47, 52, 45, 46, 51, 40, 41, 46, 40, 41, 48, 48, 57, 57, 56, + 53, 50, 49, 51, 54, 58, 60, 58, 55, 56, 59, 58, 55, 55, 49, 49, + 50, 46, 40, 45, 55, 48, 45, 46, 52, 59, 59, 52, 46, 52, 54, 57, + 60, 63, 69, 74, 77, 77, 75, 72, 69, 66, 61, 53, 50, 54, 53, 35, + 35, 37, 38, 55, 54, 70, 85, 105, 119, 123, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 200, 90, 87, 85, 89, 95, 97, 90, 84, + 92, 82, 76, 78, 79, 73, 66, 63, 49, 54, 43, 46, 50, 56, 73, 65, + 67, 62, 78, 93, 89, 90, 89, 74, 81, 70, 72, 89, 94, 78, 61, 55, + 63, 51, 67, 66, 56, 56, 49, 51, 55, 56, 62, 63, 59, 65, 66, 50, + 59, 57, 56, 53, 52, 53, 57, 60, 61, 63, 64, 61, 63, 66, 64, 58, + 58, 59, 60, 57, 52, 50, 53, 60, 60, 58, 58, 60, 63, 64, 62, 61, + 62, 67, 72, 75, 77, 81, 88, 94, 98, 94, 86, 78, 70, 62, 54, 51, + 46, 49, 36, 39, 41, 37, 49, 44, 63, 79, 101, 117, 122, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, 91, 84, 83, 93, 108, + 116, 111, 103, 91, 81, 75, 81, 83, 75, 64, 57, 46, 57, 40, 43, 59, + 66, 73, 67, 81, 76, 87, 87, 71, 76, 88, 80, 85, 76, 75, 76, 62, + 44, 54, 81, 69, 59, 74, 69, 58, 61, 60, 68, 69, 82, 92, 87, 85, + 97, 88, 55, 55, 54, 54, 54, 55, 59, 65, 68, 59, 64, 67, 64, 63, + 65, 62, 59, 52, 62, 71, 71, 65, 61, 61, 61, 64, 61, 55, 50, 50, + 55, 65, 74, 78, 85, 92, 96, 98, 104, 112, 120, 104, 99, 91, 80, 67, + 56, 47, 42, 39, 48, 42, 51, 50, 43, 50, 43, 55, 73, 96, 114, 119, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 108, 110, 98, + 97, 112, 119, 112, 107, 109, 107, 98, 90, 86, 82, 74, 64, 59, 43, 45, + 59, 74, 73, 76, 78, 70, 78, 72, 72, 82, 83, 75, 72, 77, 74, 78, + 74, 65, 65, 72, 72, 65, 63, 61, 57, 52, 51, 56, 67, 74, 81, 80, + 76, 72, 72, 75, 73, 66, 60, 57, 51, 49, 48, 52, 56, 59, 49, 52, + 57, 58, 56, 56, 56, 58, 61, 65, 68, 67, 63, 60, 59, 61, 64, 66, + 62, 55, 53, 59, 66, 70, 81, 70, 67, 77, 84, 84, 85, 90, 81, 79, + 73, 66, 63, 65, 64, 60, 67, 51, 40, 42, 42, 33, 36, 46, 46, 46, + 72, 85, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, + 85, 77, 96, 115, 121, 112, 103, 99, 100, 77, 76, 69, 62, 59, 62, 60, + 54, 52, 53, 69, 81, 81, 82, 82, 73, 76, 69, 69, 77, 79, 72, 69, + 73, 67, 67, 63, 58, 59, 63, 64, 61, 49, 49, 50, 49, 50, 55, 62, + 68, 63, 63, 58, 53, 55, 61, 62, 58, 55, 56, 56, 58, 59, 61, 61, + 62, 55, 57, 58, 57, 56, 56, 58, 62, 63, 66, 66, 65, 62, 61, 64, + 68, 62, 63, 59, 53, 54, 60, 66, 67, 54, 59, 71, 86, 92, 88, 79, + 74, 71, 73, 73, 73, 78, 83, 81, 74, 61, 52, 44, 41, 35, 27, 30, + 40, 38, 39, 53, 65, 79, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 80, 81, 83, 113, 133, 125, 108, 98, 90, 81, 72, 74, 67, 52, + 45, 51, 53, 49, 64, 66, 80, 92, 90, 89, 87, 76, 75, 67, 67, 73, + 74, 67, 66, 70, 71, 65, 61, 61, 63, 61, 61, 64, 42, 46, 51, 56, + 59, 62, 65, 68, 57, 57, 52, 48, 51, 59, 63, 62, 56, 55, 52, 50, + 47, 45, 44, 44, 57, 56, 56, 55, 56, 58, 62, 67, 68, 68, 66, 62, + 62, 65, 70, 75, 61, 62, 60, 56, 59, 65, 67, 66, 62, 69, 75, 79, + 82, 85, 84, 80, 71, 72, 72, 75, 80, 81, 70, 58, 59, 58, 53, 44, + 35, 29, 31, 36, 32, 35, 34, 43, 59, 117, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 72, 85, 107, 113, 121, 122, 112, 104, 101, 90, 75, 81, + 80, 73, 61, 51, 48, 53, 57, 79, 77, 88, 95, 91, 91, 91, 82, 76, + 69, 67, 70, 70, 67, 65, 69, 77, 68, 62, 68, 68, 63, 61, 67, 47, + 52, 60, 67, 70, 69, 67, 66, 55, 56, 54, 51, 54, 61, 65, 64, 70, + 66, 57, 50, 46, 48, 50, 53, 53, 54, 53, 55, 56, 61, 64, 67, 70, + 69, 66, 64, 64, 66, 69, 74, 65, 66, 64, 64, 67, 74, 75, 72, 78, + 85, 82, 73, 71, 80, 85, 83, 92, 90, 87, 87, 90, 87, 72, 55, 62, + 63, 58, 48, 41, 40, 38, 35, 31, 38, 29, 37, 57, 122, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 84, 100, 124, 116, 107, 100, 97, 97, 94, + 89, 85, 78, 71, 69, 70, 63, 56, 64, 78, 93, 87, 93, 97, 91, 93, + 97, 91, 80, 74, 69, 69, 69, 69, 69, 72, 73, 63, 60, 66, 68, 64, + 64, 71, 58, 62, 69, 75, 76, 73, 68, 63, 50, 54, 55, 52, 54, 57, + 57, 56, 58, 57, 54, 52, 55, 62, 68, 72, 62, 62, 64, 67, 68, 68, + 68, 68, 71, 71, 69, 69, 68, 68, 66, 66, 69, 73, 73, 73, 76, 82, + 84, 82, 70, 83, 89, 86, 82, 83, 78, 69, 86, 84, 80, 81, 87, 88, + 77, 63, 61, 59, 52, 46, 46, 47, 41, 33, 31, 39, 33, 40, 74, 127, + 117, 255, 255, 255, 255, 255, 255, 255, 255, 107, 108, 110, 113, 108, 106, 105, + 101, 91, 82, 83, 90, 82, 75, 74, 75, 72, 68, 77, 90, 104, 96, 99, + 99, 94, 97, 103, 98, 88, 83, 76, 72, 72, 73, 76, 77, 71, 66, 64, + 69, 73, 76, 78, 81, 77, 78, 82, 85, 86, 82, 75, 70, 62, 67, 69, + 66, 65, 66, 65, 63, 49, 52, 57, 63, 69, 71, 72, 73, 81, 81, 81, + 81, 80, 79, 74, 71, 74, 73, 72, 73, 71, 68, 63, 61, 71, 76, 78, + 76, 78, 85, 89, 91, 77, 85, 91, 93, 93, 94, 89, 83, 79, 77, 72, + 71, 75, 78, 72, 62, 59, 50, 43, 42, 46, 45, 38, 31, 33, 35, 37, + 42, 95, 127, 116, 255, 255, 255, 255, 255, 255, 255, 205, 110, 114, 109, 100, + 108, 117, 117, 103, 88, 85, 87, 88, 91, 95, 88, 74, 71, 83, 92, 92, + 106, 99, 101, 103, 98, 102, 107, 102, 96, 91, 83, 77, 76, 79, 82, 83, + 77, 78, 75, 75, 79, 87, 89, 87, 87, 87, 88, 90, 92, 91, 86, 82, + 81, 86, 87, 83, 80, 81, 82, 81, 76, 79, 84, 87, 88, 86, 83, 80, + 90, 87, 85, 85, 86, 85, 81, 78, 77, 75, 74, 74, 74, 71, 66, 62, + 65, 74, 78, 75, 74, 80, 87, 93, 99, 92, 86, 89, 94, 100, 106, 112, + 106, 104, 97, 90, 87, 86, 78, 69, 62, 50, 44, 47, 49, 42, 37, 38, + 37, 29, 39, 39, 113, 124, 118, 255, 255, 255, 255, 255, 255, 255, 106, 99, + 102, 103, 98, 105, 117, 112, 90, 85, 99, 101, 87, 87, 103, 94, 65, 65, + 95, 107, 95, 103, 97, 101, 104, 99, 102, 107, 101, 102, 96, 87, 80, 79, + 83, 86, 86, 84, 88, 85, 77, 79, 88, 89, 82, 86, 84, 83, 86, 90, + 91, 89, 86, 86, 90, 91, 85, 82, 84, 88, 88, 85, 86, 86, 85, 85, + 84, 84, 85, 87, 84, 80, 80, 83, 85, 85, 84, 80, 77, 74, 75, 75, + 73, 69, 66, 60, 71, 75, 72, 69, 74, 85, 93, 104, 90, 82, 89, 96, + 100, 107, 116, 117, 116, 109, 99, 92, 87, 79, 71, 69, 56, 52, 57, 54, + 42, 40, 48, 42, 26, 40, 35, 122, 122, 122, 255, 255, 255, 255, 255, 255, + 255, 100, 104, 99, 100, 108, 107, 125, 118, 83, 102, 88, 94, 107, 96, 99, + 93, 82, 86, 102, 104, 95, 109, 105, 102, 100, 102, 104, 105, 105, 106, 102, + 98, 97, 93, 89, 90, 94, 85, 90, 94, 94, 96, 100, 99, 95, 91, 90, + 89, 90, 92, 94, 93, 92, 97, 97, 97, 97, 98, 96, 91, 88, 86, 85, + 85, 86, 88, 87, 82, 77, 81, 86, 88, 87, 88, 90, 85, 78, 81, 80, + 82, 84, 80, 72, 69, 70, 71, 69, 75, 74, 60, 61, 79, 92, 95, 100, + 94, 82, 84, 99, 105, 98, 123, 119, 118, 118, 116, 103, 81, 64, 66, 64, + 56, 47, 46, 48, 45, 38, 40, 60, 35, 38, 105, 129, 115, 172, 255, 255, + 255, 255, 255, 94, 99, 102, 100, 100, 104, 106, 104, 101, 91, 118, 106, 107, + 113, 100, 91, 86, 94, 105, 113, 114, 116, 114, 113, 110, 111, 112, 113, 112, + 110, 109, 104, 101, 102, 99, 94, 94, 97, 91, 96, 101, 102, 104, 109, 108, + 105, 98, 96, 95, 96, 99, 100, 99, 98, 101, 100, 99, 99, 99, 98, 93, + 90, 92, 89, 87, 86, 87, 87, 84, 82, 78, 82, 82, 82, 85, 91, 90, + 85, 79, 79, 80, 83, 80, 73, 70, 73, 77, 69, 71, 71, 60, 63, 77, + 83, 90, 97, 96, 88, 85, 94, 100, 100, 109, 117, 125, 125, 115, 101, 91, + 86, 63, 64, 60, 52, 49, 49, 45, 39, 39, 54, 36, 42, 98, 124, 119, + 129, 255, 255, 255, 255, 204, 102, 104, 105, 106, 105, 103, 103, 86, 88, 102, + 129, 122, 120, 115, 103, 85, 86, 112, 128, 124, 123, 134, 111, 111, 110, 112, + 112, 112, 110, 107, 109, 105, 104, 106, 104, 100, 99, 101, 98, 104, 108, 108, + 111, 115, 113, 110, 103, 101, 101, 102, 104, 105, 105, 103, 105, 103, 102, 101, + 101, 100, 97, 95, 97, 94, 90, 88, 88, 88, 87, 87, 88, 89, 86, 83, + 83, 87, 86, 82, 78, 77, 80, 83, 80, 74, 72, 75, 83, 71, 68, 68, + 59, 61, 70, 73, 86, 93, 98, 97, 91, 89, 93, 98, 97, 95, 96, 101, + 104, 98, 84, 71, 63, 66, 64, 57, 51, 47, 44, 40, 36, 42, 36, 44, + 84, 115, 122, 125, 255, 255, 255, 255, 106, 109, 104, 102, 106, 105, 99, 97, + 88, 98, 113, 122, 124, 125, 114, 97, 90, 101, 127, 138, 130, 126, 135, 120, + 119, 118, 118, 119, 120, 118, 115, 111, 105, 103, 105, 106, 103, 103, 105, 104, + 108, 111, 110, 109, 111, 109, 104, 104, 103, 102, 103, 104, 106, 105, 104, 108, + 106, 103, 103, 102, 102, 100, 98, 98, 95, 94, 92, 90, 89, 88, 87, 94, + 94, 91, 85, 85, 87, 85, 80, 80, 80, 81, 83, 80, 74, 73, 76, 85, + 73, 70, 69, 57, 57, 65, 68, 83, 89, 99, 106, 101, 91, 87, 90, 107, + 103, 102, 107, 111, 107, 94, 83, 72, 73, 70, 61, 51, 44, 42, 42, 34, + 33, 35, 45, 69, 103, 123, 120, 255, 255, 255, 255, 105, 105, 96, 92, 97, + 98, 92, 90, 106, 121, 122, 111, 123, 127, 118, 82, 98, 119, 134, 136, 133, + 129, 129, 120, 117, 114, 113, 114, 115, 115, 115, 116, 109, 105, 106, 109, 108, + 109, 112, 104, 109, 110, 108, 109, 110, 107, 103, 107, 105, 104, 105, 106, 108, + 107, 105, 110, 108, 105, 105, 105, 104, 103, 101, 95, 96, 97, 96, 93, 90, + 87, 85, 85, 87, 88, 86, 87, 90, 88, 84, 84, 82, 82, 84, 79, 73, + 72, 75, 83, 76, 77, 74, 58, 54, 63, 67, 82, 87, 98, 110, 111, 100, + 88, 84, 77, 92, 104, 101, 87, 79, 85, 94, 85, 82, 75, 64, 53, 44, + 44, 47, 39, 33, 37, 44, 61, 97, 123, 119, 255, 255, 255, 203, 103, 101, + 92, 89, 95, 97, 94, 91, 123, 131, 126, 113, 130, 126, 120, 74, 105, 131, + 135, 133, 136, 135, 129, 121, 116, 112, 110, 110, 112, 113, 114, 122, 114, 109, + 111, 114, 114, 114, 116, 102, 107, 109, 110, 111, 115, 113, 109, 111, 110, 109, + 109, 111, 111, 110, 109, 110, 109, 107, 106, 106, 106, 103, 101, 96, 97, 99, + 99, 95, 90, 86, 85, 85, 87, 87, 85, 85, 87, 84, 78, 86, 84, 84, + 84, 79, 73, 72, 76, 81, 76, 80, 79, 64, 59, 66, 69, 79, 86, 98, + 109, 113, 109, 99, 90, 86, 95, 104, 103, 95, 91, 96, 103, 89, 81, 72, + 64, 55, 48, 48, 52, 48, 41, 40, 42, 59, 95, 121, 121, 255, 255, 255, + 96, 95, 93, 92, 93, 97, 100, 101, 102, 127, 117, 124, 128, 140, 114, 110, + 86, 112, 134, 136, 134, 138, 138, 134, 130, 128, 124, 123, 124, 124, 123, 122, + 121, 114, 112, 116, 120, 118, 113, 112, 104, 109, 113, 113, 114, 117, 117, 113, + 116, 115, 112, 114, 115, 116, 113, 114, 112, 110, 110, 110, 110, 109, 105, 102, + 100, 101, 102, 99, 94, 91, 89, 90, 93, 93, 89, 84, 83, 85, 83, 78, + 85, 83, 83, 84, 80, 74, 74, 78, 83, 76, 80, 83, 73, 69, 71, 70, + 73, 87, 98, 103, 108, 115, 114, 108, 100, 92, 85, 84, 87, 85, 78, 69, + 75, 66, 59, 57, 54, 49, 49, 53, 54, 49, 38, 35, 57, 91, 114, 120, + 164, 255, 99, 86, 83, 82, 87, 93, 96, 99, 102, 115, 125, 99, 118, 140, + 145, 99, 94, 104, 119, 134, 139, 137, 138, 138, 138, 117, 116, 114, 115, 116, + 114, 112, 108, 116, 111, 111, 118, 121, 117, 110, 106, 109, 113, 116, 115, 114, + 117, 115, 111, 118, 117, 115, 116, 117, 117, 115, 114, 112, 111, 112, 113, 114, + 111, 107, 102, 104, 105, 103, 98, 93, 91, 92, 94, 92, 92, 88, 83, 86, + 92, 94, 92, 83, 81, 81, 83, 80, 76, 76, 80, 85, 75, 78, 84, 79, + 77, 75, 70, 67, 87, 99, 98, 101, 117, 126, 125, 124, 120, 112, 101, 89, + 78, 71, 68, 57, 49, 45, 50, 51, 49, 46, 49, 56, 52, 33, 28, 53, + 87, 107, 117, 121, 255, 96, 94, 94, 94, 93, 92, 94, 103, 111, 113, 96, + 110, 129, 132, 125, 111, 79, 112, 132, 131, 129, 125, 127, 139, 131, 110, 120, + 122, 114, 111, 114, 111, 102, 104, 101, 102, 109, 121, 124, 110, 92, 112, 107, + 106, 112, 115, 114, 114, 117, 122, 122, 119, 121, 125, 127, 129, 129, 118, 117, + 118, 118, 118, 116, 112, 109, 104, 105, 104, 103, 101, 98, 94, 92, 99, 89, + 77, 70, 66, 70, 82, 95, 86, 81, 77, 77, 79, 79, 73, 68, 80, 87, + 92, 90, 82, 76, 74, 77, 66, 79, 91, 99, 104, 111, 120, 126, 141, 140, + 126, 105, 91, 84, 72, 58, 56, 55, 53, 49, 44, 43, 44, 46, 46, 45, + 58, 36, 35, 89, 118, 114, 116, 97, 86, 101, 102, 106, 109, 106, 101, 100, + 102, 84, 91, 107, 141, 120, 126, 110, 101, 107, 130, 136, 143, 139, 130, 134, + 122, 128, 134, 130, 119, 115, 121, 123, 119, 110, 109, 104, 104, 109, 116, 115, + 109, 113, 109, 109, 115, 119, 119, 119, 123, 126, 128, 132, 136, 139, 138, 134, + 130, 121, 118, 115, 113, 112, 110, 108, 105, 105, 106, 106, 105, 101, 98, 94, + 92, 100, 92, 84, 78, 73, 73, 81, 90, 85, 80, 76, 76, 78, 79, 78, + 75, 76, 85, 91, 89, 81, 77, 81, 88, 79, 80, 89, 104, 105, 100, 104, + 117, 112, 113, 109, 100, 91, 84, 75, 67, 65, 61, 55, 51, 50, 49, 46, + 44, 35, 39, 56, 39, 42, 94, 123, 122, 121, 107, 102, 99, 99, 105, 111, + 110, 103, 98, 99, 82, 102, 110, 151, 113, 123, 97, 98, 116, 129, 127, 134, + 131, 123, 131, 127, 124, 129, 126, 116, 111, 116, 117, 114, 119, 120, 117, 109, + 105, 108, 112, 114, 113, 109, 110, 116, 122, 122, 124, 126, 132, 134, 137, 141, + 142, 139, 134, 130, 129, 125, 119, 114, 112, 111, 109, 107, 111, 111, 111, 109, + 107, 103, 99, 97, 99, 94, 90, 87, 82, 79, 82, 88, 86, 83, 80, 77, + 75, 76, 77, 78, 77, 85, 90, 87, 80, 79, 84, 94, 81, 75, 86, 110, + 114, 101, 101, 117, 106, 105, 107, 106, 97, 84, 75, 72, 75, 67, 58, 54, + 55, 53, 47, 40, 33, 41, 57, 43, 50, 98, 121, 120, 119, 98, 95, 107, + 102, 103, 108, 106, 100, 97, 101, 102, 117, 119, 149, 121, 119, 87, 82, 121, + 129, 123, 129, 126, 117, 129, 129, 123, 130, 132, 128, 124, 122, 118, 112, 112, + 119, 121, 118, 112, 113, 112, 111, 108, 105, 106, 115, 120, 123, 124, 128, 131, + 130, 128, 128, 128, 129, 126, 125, 129, 127, 122, 120, 117, 116, 113, 111, 114, + 113, 112, 110, 108, 104, 100, 99, 99, 96, 94, 93, 88, 84, 85, 90, 87, + 87, 84, 79, 74, 72, 71, 73, 81, 85, 87, 86, 83, 81, 82, 86, 83, + 80, 91, 115, 123, 112, 106, 112, 117, 113, 114, 115, 106, 89, 81, 84, 81, + 75, 66, 60, 57, 52, 45, 39, 36, 41, 50, 41, 60, 108, 124, 122, 118, + 100, 102, 119, 112, 112, 117, 112, 102, 98, 103, 110, 124, 134, 142, 129, 109, + 89, 87, 115, 129, 129, 139, 134, 120, 121, 110, 120, 126, 129, 128, 123, 121, + 116, 112, 103, 110, 115, 117, 119, 122, 119, 115, 107, 105, 107, 116, 122, 125, + 127, 130, 126, 125, 124, 127, 129, 131, 130, 129, 126, 126, 124, 125, 124, 123, + 119, 116, 116, 115, 113, 110, 106, 103, 101, 99, 106, 102, 98, 96, 91, 85, + 86, 91, 85, 85, 84, 80, 75, 72, 70, 71, 82, 82, 82, 85, 87, 86, + 80, 76, 88, 93, 103, 117, 124, 120, 106, 95, 113, 107, 106, 110, 105, 93, + 88, 94, 83, 81, 76, 68, 59, 51, 46, 44, 40, 40, 40, 34, 69, 120, + 130, 130, 125, 111, 118, 106, 104, 112, 123, 119, 107, 104, 113, 114, 137, 151, + 139, 121, 89, 84, 98, 113, 128, 124, 125, 119, 112, 115, 100, 118, 119, 118, + 116, 113, 112, 113, 114, 115, 117, 114, 112, 115, 119, 117, 111, 111, 109, 111, + 120, 127, 129, 132, 136, 129, 133, 140, 148, 153, 152, 148, 143, 129, 129, 131, + 134, 136, 136, 133, 130, 125, 124, 122, 119, 114, 111, 109, 108, 114, 109, 104, + 100, 93, 86, 85, 89, 83, 82, 80, 78, 76, 76, 75, 76, 79, 80, 81, + 85, 88, 87, 79, 75, 84, 90, 98, 110, 122, 125, 111, 96, 104, 97, 92, + 91, 88, 83, 79, 80, 78, 79, 76, 69, 60, 53, 51, 50, 54, 51, 42, + 34, 72, 119, 123, 125, 127, 100, 108, 97, 96, 106, 117, 112, 101, 104, 120, + 122, 148, 145, 137, 107, 86, 73, 98, 107, 124, 114, 106, 106, 113, 123, 105, + 121, 122, 122, 122, 120, 119, 120, 122, 124, 124, 121, 116, 114, 116, 113, 108, + 115, 113, 114, 123, 130, 132, 135, 139, 137, 141, 148, 154, 158, 157, 151, 145, + 134, 134, 134, 136, 139, 141, 140, 139, 134, 133, 130, 127, 123, 121, 118, 117, + 114, 111, 108, 106, 100, 92, 90, 93, 91, 85, 78, 75, 76, 79, 81, 83, + 83, 85, 87, 87, 84, 81, 78, 79, 85, 81, 85, 105, 122, 125, 117, 111, + 98, 93, 84, 76, 75, 73, 65, 57, 65, 65, 63, 61, 58, 56, 53, 50, + 57, 58, 50, 39, 75, 115, 117, 125, 125, 109, 121, 115, 108, 110, 112, 100, + 88, 97, 118, 125, 147, 121, 130, 99, 100, 73, 98, 89, 118, 119, 117, 121, + 131, 134, 108, 105, 109, 114, 119, 118, 113, 109, 109, 110, 117, 122, 121, 120, + 121, 118, 114, 116, 113, 115, 123, 130, 133, 135, 140, 139, 138, 137, 137, 137, + 136, 133, 130, 130, 128, 127, 127, 131, 134, 136, 136, 134, 132, 129, 125, 122, + 119, 116, 116, 108, 107, 108, 110, 107, 100, 97, 100, 102, 92, 79, 73, 75, + 81, 83, 85, 88, 93, 96, 89, 79, 72, 74, 81, 102, 82, 80, 104, 122, + 117, 111, 117, 91, 89, 80, 70, 72, 76, 67, 52, 53, 50, 47, 50, 54, + 56, 52, 46, 41, 51, 49, 41, 78, 119, 124, 140, 125, 111, 104, 93, 111, + 114, 111, 109, 94, 95, 126, 135, 137, 125, 134, 104, 93, 75, 83, 104, 108, + 115, 121, 122, 118, 111, 107, 114, 111, 110, 114, 116, 114, 115, 119, 109, 113, + 117, 118, 118, 117, 117, 118, 118, 118, 119, 124, 129, 133, 133, 134, 144, 139, + 135, 135, 137, 137, 133, 128, 125, 123, 122, 125, 131, 135, 136, 136, 136, 135, + 132, 127, 123, 120, 114, 109, 114, 113, 111, 107, 102, 100, 100, 101, 99, 88, + 79, 73, 69, 78, 86, 79, 92, 97, 97, 90, 82, 81, 80, 80, 81, 96, + 76, 109, 107, 114, 118, 109, 95, 81, 78, 67, 71, 79, 63, 59, 51, 52, + 51, 48, 46, 46, 48, 50, 52, 47, 49, 44, 72, 120, 130, 130, 126, 111, + 102, 91, 97, 90, 87, 95, 94, 102, 129, 122, 129, 125, 120, 94, 82, 77, + 86, 108, 110, 114, 116, 116, 112, 107, 104, 110, 108, 110, 115, 117, 114, 112, + 115, 114, 117, 120, 121, 121, 119, 119, 120, 113, 113, 114, 118, 124, 129, 131, + 132, 140, 137, 133, 132, 132, 130, 122, 115, 124, 124, 126, 130, 136, 139, 138, + 136, 134, 134, 131, 126, 121, 115, 108, 103, 113, 115, 115, 113, 107, 103, 100, + 99, 107, 94, 86, 79, 75, 84, 92, 84, 87, 93, 93, 86, 79, 78, 77, + 78, 104, 109, 89, 101, 96, 109, 105, 96, 109, 97, 92, 74, 69, 73, 56, + 52, 55, 55, 54, 51, 47, 45, 45, 45, 52, 49, 51, 45, 70, 116, 129, + 131, 130, 112, 104, 95, 90, 76, 75, 91, 101, 109, 124, 112, 121, 125, 103, + 85, 73, 83, 91, 106, 106, 109, 110, 110, 109, 106, 105, 107, 106, 110, 116, + 116, 112, 110, 111, 113, 117, 118, 119, 117, 116, 115, 116, 113, 112, 111, 114, + 119, 124, 128, 129, 133, 131, 131, 132, 132, 129, 121, 115, 113, 115, 119, 125, + 129, 130, 128, 126, 133, 132, 131, 129, 124, 117, 111, 108, 114, 117, 119, 119, + 115, 108, 102, 101, 112, 99, 91, 84, 80, 89, 95, 87, 82, 88, 89, 82, + 76, 76, 75, 76, 100, 102, 99, 93, 91, 113, 98, 91, 101, 93, 95, 78, + 70, 72, 58, 59, 57, 57, 55, 52, 48, 45, 41, 40, 49, 49, 53, 44, + 65, 110, 124, 129, 130, 108, 102, 102, 97, 89, 89, 100, 110, 111, 112, 104, + 111, 116, 82, 76, 65, 85, 87, 96, 98, 103, 108, 111, 112, 111, 111, 109, + 107, 109, 114, 114, 111, 110, 113, 110, 113, 114, 114, 112, 110, 109, 110, 116, + 114, 111, 113, 116, 122, 125, 126, 131, 130, 127, 128, 127, 124, 119, 115, 119, + 121, 123, 126, 127, 129, 126, 126, 121, 122, 124, 127, 125, 119, 116, 116, 114, + 117, 120, 120, 117, 112, 107, 107, 111, 98, 89, 82, 78, 88, 93, 84, 82, + 87, 88, 82, 76, 76, 77, 78, 82, 89, 108, 91, 91, 113, 92, 87, 79, + 80, 92, 82, 75, 75, 59, 59, 52, 52, 51, 50, 48, 45, 41, 38, 44, + 45, 50, 39, 57, 100, 116, 124, 123, 101, 98, 106, 105, 105, 101, 101, 110, + 111, 103, 100, 99, 97, 66, 67, 63, 81, 80, 88, 93, 101, 109, 114, 116, + 114, 113, 114, 110, 109, 111, 112, 110, 111, 116, 112, 114, 114, 114, 110, 110, + 109, 110, 113, 110, 107, 109, 113, 121, 125, 128, 132, 130, 124, 121, 116, 114, + 109, 108, 114, 115, 115, 115, 114, 115, 114, 116, 109, 110, 114, 120, 117, 111, + 111, 115, 114, 116, 118, 117, 115, 113, 113, 115, 110, 96, 84, 78, 76, 87, + 91, 81, 84, 89, 90, 84, 79, 79, 80, 80, 82, 93, 118, 92, 88, 100, + 86, 84, 71, 75, 93, 87, 80, 75, 51, 46, 45, 45, 44, 45, 47, 46, + 43, 40, 38, 40, 45, 33, 49, 92, 109, 117, 116, 203, 103, 104, 105, 109, + 100, 91, 102, 110, 99, 101, 94, 83, 66, 67, 70, 81, 82, 91, 96, 103, + 111, 114, 114, 111, 110, 116, 111, 108, 109, 110, 109, 112, 118, 116, 117, 117, + 116, 114, 113, 114, 115, 106, 104, 102, 106, 113, 120, 126, 129, 127, 125, 121, + 118, 117, 117, 118, 120, 110, 110, 109, 107, 105, 104, 106, 109, 113, 112, 114, + 119, 113, 105, 105, 112, 114, 115, 114, 113, 110, 111, 114, 117, 109, 94, 83, + 77, 77, 88, 93, 82, 85, 91, 92, 86, 80, 80, 81, 81, 87, 96, 112, + 87, 85, 88, 93, 95, 69, 71, 87, 86, 85, 82, 55, 44, 42, 41, 39, + 41, 45, 46, 44, 40, 36, 37, 41, 29, 46, 89, 106, 114, 114, 255, 110, + 99, 102, 110, 101, 86, 100, 108, 91, 95, 87, 71, 71, 65, 74, 79, 89, + 96, 99, 103, 108, 110, 110, 109, 108, 114, 110, 108, 110, 109, 108, 109, 115, + 114, 115, 114, 113, 111, 111, 112, 114, 107, 105, 104, 107, 113, 120, 125, 128, + 125, 125, 125, 124, 123, 123, 124, 125, 117, 119, 121, 121, 119, 117, 119, 121, + 121, 117, 118, 120, 113, 103, 103, 112, 114, 114, 113, 111, 108, 107, 109, 112, + 108, 93, 82, 78, 78, 90, 94, 83, 85, 91, 91, 85, 78, 78, 78, 79, + 83, 90, 94, 83, 92, 82, 102, 97, 71, 65, 75, 74, 82, 87, 63, 52, + 47, 44, 40, 40, 43, 44, 41, 38, 39, 38, 40, 29, 48, 92, 108, 115, + 114, 255, 106, 96, 101, 114, 107, 92, 103, 106, 81, 82, 75, 58, 70, 56, + 69, 70, 89, 98, 99, 101, 104, 106, 108, 109, 110, 110, 108, 108, 112, 111, + 108, 108, 111, 107, 108, 108, 107, 105, 105, 107, 109, 115, 113, 112, 113, 116, + 121, 122, 123, 132, 133, 130, 127, 119, 114, 109, 108, 105, 110, 115, 117, 114, + 113, 112, 114, 119, 114, 113, 115, 108, 97, 99, 111, 113, 113, 113, 110, 107, + 104, 104, 105, 105, 90, 79, 75, 77, 90, 94, 83, 84, 89, 90, 83, 76, + 75, 76, 74, 79, 86, 83, 84, 99, 76, 97, 80, 83, 69, 68, 63, 75, + 85, 63, 51, 54, 48, 42, 40, 42, 42, 39, 36, 43, 40, 41, 30, 52, + 97, 110, 117, 115, 255, 93, 88, 98, 103, 99, 90, 87, 86, 84, 60, 64, + 68, 69, 69, 71, 76, 79, 83, 86, 93, 98, 100, 103, 105, 106, 106, 111, + 115, 116, 112, 110, 111, 112, 107, 106, 106, 106, 106, 106, 106, 106, 109, 108, + 107, 110, 115, 121, 125, 128, 130, 118, 111, 115, 109, 98, 96, 107, 109, 112, + 113, 116, 117, 117, 115, 114, 116, 121, 122, 116, 111, 110, 110, 108, 108, 110, + 113, 110, 105, 102, 104, 109, 101, 100, 81, 80, 73, 94, 88, 86, 84, 93, + 95, 84, 75, 78, 83, 85, 82, 76, 72, 75, 75, 76, 81, 89, 85, 74, + 77, 78, 63, 61, 62, 48, 53, 47, 43, 43, 45, 42, 36, 32, 28, 41, + 58, 45, 54, 92, 108, 120, 110, 255, 255, 93, 99, 104, 101, 90, 79, 72, + 71, 62, 63, 65, 66, 69, 74, 80, 83, 81, 85, 92, 97, 99, 101, 103, + 105, 101, 102, 104, 108, 112, 115, 116, 115, 108, 107, 108, 108, 108, 107, 107, + 106, 110, 108, 105, 105, 106, 109, 111, 112, 116, 109, 107, 111, 110, 105, 107, + 114, 122, 123, 124, 125, 125, 124, 122, 121, 107, 113, 114, 110, 105, 105, 105, + 102, 103, 106, 106, 104, 100, 99, 100, 102, 95, 95, 78, 80, 74, 95, 86, + 82, 83, 92, 94, 87, 80, 79, 80, 78, 78, 77, 75, 75, 75, 78, 78, + 79, 72, 66, 67, 70, 67, 72, 74, 68, 59, 52, 44, 43, 46, 46, 44, + 41, 41, 46, 54, 40, 51, 87, 105, 117, 117, 255, 255, 94, 95, 101, 104, + 93, 72, 59, 58, 64, 62, 62, 64, 70, 79, 85, 87, 81, 85, 91, 96, + 99, 101, 102, 104, 100, 98, 98, 104, 113, 118, 117, 114, 112, 112, 113, 113, + 113, 111, 108, 107, 110, 108, 105, 103, 101, 101, 103, 105, 108, 108, 109, 110, + 112, 114, 116, 118, 113, 113, 114, 113, 112, 109, 107, 105, 105, 111, 112, 109, + 107, 108, 107, 104, 102, 102, 102, 101, 100, 99, 99, 98, 89, 90, 75, 80, + 76, 96, 85, 78, 83, 90, 93, 90, 85, 82, 76, 72, 74, 79, 77, 73, + 74, 79, 74, 65, 80, 78, 68, 65, 72, 74, 69, 71, 57, 52, 45, 44, + 46, 47, 43, 38, 39, 42, 53, 48, 64, 98, 106, 112, 120, 255, 255, 200, + 87, 94, 105, 97, 72, 56, 55, 64, 61, 62, 67, 75, 84, 88, 88, 83, + 87, 93, 98, 100, 102, 103, 105, 102, 103, 105, 111, 115, 117, 114, 110, 110, + 110, 111, 112, 111, 109, 106, 105, 107, 107, 106, 104, 104, 106, 109, 112, 113, + 117, 117, 113, 113, 116, 116, 113, 113, 114, 114, 114, 113, 112, 109, 109, 109, + 114, 114, 111, 110, 111, 110, 106, 105, 103, 101, 100, 101, 100, 99, 96, 88, + 91, 75, 81, 76, 97, 85, 79, 84, 86, 88, 89, 85, 81, 74, 70, 72, + 80, 78, 69, 71, 78, 72, 58, 90, 92, 74, 65, 76, 72, 60, 66, 55, + 53, 49, 47, 48, 47, 37, 29, 34, 32, 44, 46, 67, 101, 107, 116, 145, + 255, 255, 255, 84, 91, 104, 99, 77, 61, 59, 64, 63, 66, 72, 81, 87, + 87, 85, 83, 86, 91, 96, 98, 100, 101, 102, 98, 105, 113, 117, 116, 113, + 109, 107, 105, 105, 105, 106, 104, 103, 101, 100, 102, 104, 105, 105, 105, 108, + 113, 117, 118, 122, 120, 113, 111, 112, 111, 106, 116, 118, 118, 118, 118, 119, + 118, 117, 114, 116, 115, 110, 109, 111, 109, 105, 106, 104, 102, 101, 101, 100, + 97, 95, 92, 95, 79, 82, 75, 94, 86, 81, 84, 85, 84, 85, 81, 77, + 73, 72, 76, 83, 80, 69, 70, 78, 75, 62, 74, 80, 66, 61, 76, 73, + 63, 71, 61, 58, 50, 43, 43, 45, 38, 29, 38, 29, 34, 32, 51, 81, + 94, 110, 221, 255, 255, 255, 255, 92, 101, 100, 85, 70, 65, 67, 68, 72, + 78, 82, 86, 85, 83, 82, 85, 90, 94, 96, 98, 99, 100, 94, 103, 113, + 117, 115, 111, 108, 107, 109, 108, 108, 108, 107, 107, 107, 107, 103, 105, 106, + 105, 103, 104, 109, 114, 116, 115, 113, 111, 109, 108, 108, 109, 115, 116, 116, + 118, 119, 121, 121, 121, 122, 121, 117, 112, 112, 116, 114, 111, 107, 107, 106, + 103, 100, 97, 96, 95, 94, 99, 86, 85, 73, 91, 84, 83, 81, 81, 80, + 81, 76, 72, 72, 76, 82, 86, 83, 75, 71, 74, 74, 68, 58, 61, 56, + 54, 62, 64, 62, 67, 63, 58, 45, 34, 34, 44, 45, 39, 40, 34, 47, + 47, 54, 66, 67, 82, 255, 255, 255, 255, 255, 94, 98, 100, 95, 84, 75, + 72, 74, 78, 80, 80, 82, 83, 83, 84, 86, 92, 96, 98, 100, 100, 102, + 100, 104, 109, 113, 114, 113, 111, 109, 114, 113, 111, 111, 111, 113, 115, 117, + 111, 113, 113, 109, 105, 104, 109, 113, 114, 108, 107, 111, 113, 109, 111, 119, + 127, 127, 127, 128, 129, 132, 132, 132, 125, 124, 118, 112, 114, 120, 120, 118, + 112, 114, 113, 109, 102, 97, 97, 97, 93, 103, 94, 92, 74, 87, 79, 79, + 75, 77, 79, 81, 74, 68, 70, 78, 83, 85, 84, 79, 70, 64, 65, 66, + 57, 52, 52, 50, 42, 47, 56, 56, 59, 57, 48, 39, 43, 57, 60, 53, + 44, 43, 60, 59, 55, 55, 55, 73, 255, 255, 255, 255, 255, 202, 95, 100, + 104, 96, 85, 77, 79, 81, 80, 77, 78, 81, 85, 89, 91, 97, 101, 103, + 104, 106, 106, 113, 111, 108, 111, 115, 117, 114, 111, 113, 111, 109, 108, 109, + 111, 115, 117, 120, 122, 121, 117, 112, 111, 115, 120, 117, 107, 105, 116, 117, + 112, 116, 129, 127, 127, 127, 128, 129, 130, 130, 131, 120, 118, 111, 106, 108, + 117, 120, 117, 117, 120, 121, 115, 106, 100, 100, 103, 89, 104, 98, 97, 76, + 83, 74, 75, 70, 74, 79, 82, 74, 67, 70, 78, 80, 81, 82, 79, 67, + 55, 54, 59, 57, 47, 49, 47, 32, 39, 57, 54, 55, 60, 59, 58, 67, + 79, 77, 67, 56, 46, 51, 39, 31, 41, 59, 95, 255, 255, 255, 255, 255, + 255, 202, 99, 102, 94, 83, 85, 70, 80, 78, 78, 89, 82, 80, 88, 89, + 93, 97, 102, 108, 111, 114, 113, 112, 111, 111, 111, 112, 113, 112, 105, 110, + 112, 110, 111, 116, 120, 121, 119, 122, 124, 120, 113, 111, 115, 121, 115, 105, + 105, 115, 117, 112, 118, 133, 133, 134, 131, 130, 134, 139, 133, 125, 125, 120, + 115, 116, 115, 114, 115, 121, 115, 117, 118, 113, 105, 97, 96, 99, 92, 105, + 103, 106, 81, 68, 76, 69, 85, 67, 80, 76, 75, 78, 62, 79, 85, 85, + 84, 78, 67, 60, 57, 58, 46, 43, 45, 43, 37, 43, 49, 40, 48, 53, + 64, 79, 88, 85, 72, 61, 48, 54, 46, 34, 37, 49, 73, 101, 255, 255, + 255, 255, 255, 255, 255, 96, 97, 90, 81, 86, 76, 82, 78, 85, 94, 81, + 83, 92, 93, 96, 101, 105, 109, 111, 112, 107, 107, 107, 109, 113, 116, 117, + 117, 115, 117, 117, 116, 119, 124, 123, 118, 112, 114, 113, 110, 106, 107, 112, + 117, 114, 104, 105, 117, 122, 116, 119, 132, 134, 131, 129, 129, 129, 131, 132, + 132, 126, 121, 118, 119, 118, 116, 118, 122, 124, 108, 101, 109, 109, 97, 89, + 90, 103, 65, 109, 105, 76, 86, 72, 79, 82, 71, 76, 78, 75, 71, 63, + 74, 83, 81, 78, 79, 78, 68, 52, 40, 21, 25, 35, 38, 37, 46, 53, + 49, 66, 71, 80, 88, 86, 79, 73, 70, 62, 59, 44, 35, 45, 62, 85, + 111, 255, 255, 255, 255, 255, 255, 255, 255, 102, 97, 91, 88, 85, 82, 73, + 88, 93, 73, 82, 93, 94, 98, 102, 106, 108, 108, 109, 112, 110, 110, 113, + 118, 122, 123, 123, 121, 121, 120, 119, 122, 125, 121, 113, 112, 109, 105, 104, + 105, 108, 114, 118, 112, 102, 103, 117, 126, 122, 120, 126, 132, 129, 128, 130, + 124, 119, 125, 136, 132, 127, 126, 126, 125, 121, 122, 125, 116, 110, 106, 102, + 96, 91, 89, 91, 105, 68, 96, 83, 81, 95, 69, 71, 76, 75, 70, 79, + 76, 64, 68, 69, 86, 81, 74, 67, 59, 47, 30, 19, 28, 37, 46, 51, + 53, 62, 67, 67, 85, 86, 90, 90, 79, 70, 72, 81, 75, 68, 45, 34, + 48, 69, 92, 114, 255, 255, 255, 255, 255, 255, 255, 255, 209, 114, 113, 97, + 97, 84, 67, 85, 86, 60, 77, 94, 95, 98, 101, 103, 104, 104, 103, 117, + 115, 113, 114, 118, 121, 121, 119, 115, 118, 119, 117, 118, 118, 114, 107, 115, + 108, 101, 99, 103, 109, 114, 115, 109, 99, 100, 116, 127, 124, 119, 118, 126, + 124, 128, 133, 123, 107, 109, 123, 127, 124, 122, 125, 123, 118, 118, 120, 103, + 113, 114, 102, 95, 96, 91, 80, 65, 86, 80, 74, 96, 79, 78, 66, 66, + 75, 64, 81, 81, 64, 79, 72, 78, 76, 64, 44, 25, 18, 24, 34, 51, + 58, 58, 59, 70, 79, 83, 85, 89, 84, 83, 81, 72, 64, 71, 87, 87, + 83, 61, 44, 48, 63, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 122, 123, 112, 111, 94, 71, 83, 81, 57, 76, 97, 97, 99, 100, 102, 102, + 102, 101, 110, 106, 103, 104, 107, 109, 107, 105, 104, 113, 119, 117, 113, 112, + 112, 111, 113, 106, 97, 94, 98, 103, 107, 108, 108, 98, 99, 112, 124, 122, + 115, 110, 112, 113, 122, 129, 116, 92, 86, 97, 97, 94, 95, 99, 101, 99, + 101, 104, 131, 123, 116, 110, 103, 93, 89, 90, 94, 74, 84, 90, 90, 69, + 95, 77, 61, 72, 62, 80, 84, 71, 84, 73, 55, 51, 39, 26, 20, 28, + 50, 67, 66, 69, 56, 52, 71, 83, 83, 89, 85, 71, 67, 74, 71, 64, + 72, 91, 94, 97, 81, 56, 47, 52, 78, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 207, 114, 121, 117, 107, 84, 84, 81, 62, 78, 99, 98, 98, + 99, 100, 101, 102, 101, 103, 97, 93, 92, 96, 98, 95, 90, 90, 103, 114, + 113, 109, 110, 114, 118, 116, 108, 101, 97, 100, 103, 105, 107, 109, 101, 100, + 110, 118, 118, 111, 107, 101, 104, 112, 115, 103, 83, 70, 69, 62, 61, 62, + 69, 73, 76, 80, 86, 83, 69, 75, 97, 100, 110, 171, 248, 237, 71, 92, + 91, 70, 82, 104, 78, 67, 70, 65, 75, 80, 75, 74, 63, 38, 27, 19, + 22, 38, 55, 64, 67, 87, 91, 71, 61, 78, 83, 76, 84, 83, 65, 62, + 76, 79, 70, 75, 92, 95, 99, 83, 57, 45, 47, 70, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 101, 110, 105, 109, 93, 81, 78, 66, 75, + 96, 95, 94, 94, 93, 95, 98, 98, 99, 92, 85, 84, 86, 85, 80, 74, + 74, 86, 96, 99, 101, 107, 113, 115, 114, 110, 104, 100, 101, 105, 108, 110, + 114, 107, 104, 109, 114, 113, 108, 105, 100, 101, 102, 99, 91, 80, 67, 59, + 60, 58, 59, 65, 67, 70, 75, 82, 100, 92, 93, 95, 82, 89, 150, 226, + 246, 90, 98, 81, 76, 88, 108, 87, 81, 70, 70, 68, 72, 72, 51, 41, + 30, 26, 26, 40, 59, 68, 64, 55, 86, 102, 89, 77, 91, 87, 76, 87, + 84, 68, 68, 88, 89, 73, 72, 89, 98, 95, 74, 53, 51, 60, 79, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 93, 89, 104, 94, 76, + 73, 66, 69, 93, 91, 89, 87, 87, 91, 92, 95, 96, 88, 79, 74, 74, + 70, 63, 56, 62, 70, 77, 84, 92, 102, 108, 108, 109, 106, 102, 99, 98, + 100, 104, 107, 118, 112, 107, 108, 111, 110, 107, 105, 106, 103, 97, 89, 85, + 83, 72, 59, 83, 79, 76, 79, 80, 80, 84, 89, 94, 97, 96, 92, 96, + 104, 103, 95, 82, 89, 106, 88, 106, 76, 113, 116, 94, 73, 77, 63, 64, + 66, 30, 20, 25, 32, 46, 60, 71, 73, 69, 65, 52, 84, 84, 80, 95, + 91, 81, 98, 86, 73, 78, 99, 95, 72, 68, 86, 111, 99, 71, 55, 66, + 81, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 101, 100, + 93, 111, 52, 53, 76, 47, 71, 105, 88, 82, 78, 90, 73, 93, 82, 87, + 85, 72, 70, 76, 75, 66, 74, 58, 62, 86, 83, 72, 93, 95, 109, 85, + 109, 90, 93, 98, 114, 101, 105, 112, 108, 103, 106, 101, 93, 96, 91, 82, + 74, 75, 73, 68, 60, 59, 53, 71, 51, 60, 77, 89, 86, 37, 53, 62, + 88, 101, 79, 105, 89, 90, 82, 86, 92, 101, 111, 111, 95, 78, 53, 80, + 50, 39, 43, 56, 26, 29, 45, 55, 67, 72, 75, 72, 64, 53, 62, 53, + 67, 82, 96, 100, 75, 67, 59, 67, 83, 95, 87, 73, 73, 84, 99, 99, + 67, 42, 83, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 98, 96, 94, 64, 35, 30, 59, 95, 59, 78, 69, 79, 84, 94, 70, + 70, 69, 78, 85, 87, 88, 89, 84, 77, 68, 86, 86, 97, 79, 88, 79, + 92, 23, 77, 75, 99, 93, 87, 104, 116, 115, 125, 118, 104, 97, 87, 73, + 70, 79, 76, 75, 75, 71, 62, 57, 57, 72, 52, 75, 87, 77, 86, 88, + 231, 241, 45, 56, 68, 82, 95, 76, 94, 87, 81, 82, 92, 98, 99, 101, + 107, 95, 102, 67, 28, 41, 50, 50, 57, 59, 63, 65, 66, 69, 73, 70, + 64, 58, 54, 73, 79, 83, 83, 65, 68, 72, 82, 90, 92, 85, 77, 74, + 75, 97, 95, 51, 42, 87, 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 91, 90, 92, 42, 74, 70, 49, 76, 51, 58, 59, 78, + 83, 95, 82, 79, 86, 79, 74, 71, 67, 62, 63, 66, 69, 76, 69, 93, + 108, 167, 125, 132, 243, 222, 35, 43, 73, 103, 102, 91, 108, 123, 119, 103, + 101, 98, 86, 81, 70, 69, 68, 67, 61, 54, 53, 60, 60, 78, 104, 53, + 51, 49, 134, 73, 52, 74, 69, 49, 68, 54, 78, 84, 99, 86, 82, 88, + 84, 77, 87, 107, 64, 74, 63, 24, 51, 52, 66, 67, 69, 68, 65, 64, + 69, 74, 71, 65, 56, 60, 81, 80, 70, 68, 60, 75, 68, 75, 81, 81, + 80, 80, 76, 70, 98, 95, 39, 49, 97, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 100, 89, 57, 17, 69, 93, 66, 59, 50, + 58, 76, 93, 87, 88, 89, 87, 83, 70, 60, 62, 55, 44, 44, 53, 71, + 52, 70, 87, 76, 124, 106, 137, 151, 177, 56, 73, 68, 85, 101, 117, 106, + 124, 121, 108, 107, 102, 80, 63, 71, 65, 59, 57, 55, 53, 57, 65, 83, + 101, 88, 52, 67, 64, 201, 19, 51, 73, 126, 104, 35, 62, 56, 68, 92, + 88, 86, 86, 80, 73, 76, 87, 46, 70, 79, 60, 75, 76, 77, 71, 64, + 64, 65, 67, 73, 75, 64, 52, 63, 67, 86, 79, 66, 63, 62, 81, 67, + 68, 72, 81, 85, 82, 74, 67, 99, 100, 44, 68, 109, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 104, 78, 94, 85, 74, + 59, 43, 82, 87, 104, 106, 95, 81, 74, 60, 44, 45, 61, 83, 84, 64, + 48, 48, 99, 17, 45, 73, 61, 76, 72, 86, 102, 104, 65, 69, 48, 65, + 78, 81, 83, 113, 120, 103, 91, 85, 83, 87, 76, 68, 63, 66, 70, 69, + 68, 70, 108, 118, 121, 80, 33, 58, 71, 49, 67, 45, 64, 76, 51, 77, + 64, 78, 76, 84, 85, 81, 83, 91, 90, 84, 74, 101, 100, 89, 71, 79, + 69, 66, 63, 64, 65, 68, 73, 73, 60, 47, 63, 62, 76, 71, 63, 63, + 62, 79, 88, 79, 81, 94, 99, 87, 72, 68, 87, 96, 57, 87, 162, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 95, 58, + 102, 63, 46, 92, 130, 151, 137, 118, 88, 88, 76, 65, 46, 40, 47, 68, + 90, 90, 66, 44, 37, 101, 0, 14, 68, 90, 98, 83, 64, 85, 77, 109, + 93, 48, 56, 70, 75, 86, 89, 101, 144, 193, 180, 104, 40, 77, 73, 75, + 84, 90, 86, 77, 72, 91, 76, 144, 103, 55, 83, 56, 77, 61, 114, 90, + 78, 110, 72, 82, 66, 84, 92, 88, 80, 87, 105, 106, 92, 70, 102, 102, + 100, 66, 78, 67, 66, 70, 69, 66, 65, 67, 68, 63, 54, 55, 48, 59, + 59, 61, 68, 63, 74, 97, 89, 90, 100, 106, 97, 82, 73, 67, 78, 66, + 95, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 71, 40, 45, 87, 75, 58, 99, 157, 168, 158, 121, 67, 78, 73, 72, 59, + 73, 71, 76, 81, 77, 63, 52, 49, 64, 49, 56, 88, 82, 79, 67, 74, + 99, 74, 87, 65, 30, 54, 71, 81, 84, 95, 96, 91, 83, 65, 59, 72, + 74, 73, 77, 86, 88, 83, 77, 74, 112, 49, 90, 82, 83, 63, 87, 83, + 113, 66, 112, 99, 92, 92, 89, 89, 98, 98, 93, 88, 93, 104, 106, 101, + 70, 97, 114, 103, 78, 82, 85, 79, 72, 71, 67, 62, 62, 65, 64, 58, + 49, 40, 51, 57, 67, 77, 71, 79, 98, 103, 99, 92, 97, 106, 94, 71, + 55, 62, 73, 95, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 98, 85, 110, 81, 66, 43, 67, 132, 120, 140, 123, 69, 85, + 76, 72, 66, 84, 84, 84, 86, 87, 85, 84, 85, 63, 112, 84, 98, 90, + 100, 72, 87, 89, 87, 85, 82, 55, 79, 88, 99, 106, 102, 93, 89, 87, + 73, 72, 90, 70, 69, 69, 72, 70, 68, 71, 77, 62, 95, 92, 64, 88, + 111, 89, 108, 89, 132, 100, 103, 93, 90, 94, 105, 97, 94, 93, 97, 100, + 101, 103, 107, 90, 102, 119, 82, 63, 55, 79, 71, 64, 68, 68, 64, 63, + 63, 60, 55, 48, 40, 53, 61, 74, 88, 81, 88, 110, 126, 117, 87, 88, + 108, 97, 61, 56, 55, 78, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 200, 103, 89, 83, 84, 32, 81, 146, 163, 119, + 96, 77, 108, 87, 68, 81, 85, 87, 88, 86, 85, 86, 91, 95, 92, 91, + 93, 99, 101, 96, 85, 76, 78, 83, 67, 71, 64, 79, 82, 104, 100, 100, + 98, 89, 78, 70, 71, 76, 69, 80, 87, 78, 59, 50, 55, 65, 74, 74, + 75, 77, 81, 89, 96, 100, 105, 107, 104, 96, 91, 94, 98, 99, 97, 106, + 107, 90, 82, 105, 118, 104, 98, 103, 130, 97, 62, 74, 72, 69, 66, 70, + 69, 64, 61, 58, 52, 47, 46, 43, 74, 58, 86, 77, 101, 79, 75, 121, + 109, 91, 94, 101, 100, 63, 52, 67, 87, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 86, 81, 76, 39, 71, + 134, 189, 138, 114, 89, 104, 86, 76, 86, 84, 85, 87, 87, 88, 88, 90, + 92, 100, 94, 85, 80, 78, 77, 74, 74, 75, 75, 74, 77, 74, 81, 87, + 92, 96, 97, 97, 91, 81, 73, 69, 71, 60, 67, 73, 70, 64, 61, 64, + 69, 67, 67, 68, 71, 77, 85, 92, 96, 88, 91, 90, 86, 85, 92, 99, + 101, 97, 101, 102, 89, 82, 100, 113, 103, 74, 91, 119, 94, 68, 75, 66, + 64, 66, 69, 68, 63, 60, 59, 55, 51, 41, 40, 72, 60, 86, 82, 105, + 85, 79, 116, 104, 90, 94, 99, 97, 67, 48, 65, 143, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, 82, 80, + 68, 53, 53, 109, 161, 116, 107, 94, 96, 90, 91, 97, 87, 86, 87, 88, + 90, 91, 91, 89, 81, 81, 81, 79, 78, 76, 74, 73, 78, 70, 75, 80, + 69, 78, 89, 83, 86, 87, 87, 85, 80, 71, 63, 57, 62, 65, 69, 73, + 79, 83, 83, 82, 70, 70, 70, 72, 76, 82, 86, 90, 84, 88, 89, 87, + 89, 99, 106, 108, 100, 99, 99, 91, 85, 96, 107, 100, 81, 101, 108, 79, + 66, 71, 66, 75, 70, 71, 69, 61, 58, 57, 55, 51, 43, 44, 73, 64, + 87, 85, 105, 88, 82, 104, 94, 87, 98, 101, 94, 71, 45, 67, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 197, 79, 80, 66, 69, 38, 73, 105, 76, 90, 96, 93, 98, 101, 102, 93, + 89, 86, 87, 90, 91, 90, 87, 73, 77, 82, 86, 85, 85, 85, 86, 89, + 78, 71, 81, 45, 73, 88, 86, 80, 81, 80, 78, 76, 71, 60, 50, 69, + 71, 76, 84, 92, 98, 98, 97, 88, 86, 84, 83, 82, 83, 84, 86, 89, + 95, 99, 100, 103, 109, 111, 110, 108, 102, 102, 97, 90, 96, 104, 99, 99, + 120, 111, 81, 73, 73, 67, 78, 76, 75, 69, 58, 52, 52, 50, 47, 52, + 54, 77, 71, 86, 85, 99, 82, 77, 85, 75, 77, 95, 96, 79, 59, 41, + 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 78, 81, 69, 78, 35, 42, 86, 72, 93, 104, 93, 102, + 98, 97, 97, 91, 85, 83, 84, 85, 84, 84, 87, 86, 82, 80, 80, 85, + 95, 103, 95, 94, 75, 90, 29, 74, 82, 91, 84, 84, 81, 77, 77, 76, + 67, 56, 66, 70, 79, 88, 95, 100, 102, 104, 101, 99, 97, 94, 91, 89, + 87, 87, 91, 99, 106, 109, 113, 116, 112, 106, 116, 110, 108, 104, 97, 101, + 107, 99, 93, 120, 113, 97, 92, 81, 69, 68, 74, 73, 66, 55, 49, 48, + 47, 44, 56, 60, 78, 76, 84, 86, 94, 78, 79, 74, 67, 68, 87, 86, + 55, 35, 39, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 81, 80, 75, 79, 49, 34, 84, 82, 94, + 103, 90, 102, 92, 99, 97, 92, 87, 85, 83, 83, 83, 84, 81, 83, 85, + 88, 90, 96, 101, 103, 96, 104, 82, 94, 40, 79, 80, 90, 82, 84, 81, + 74, 73, 76, 69, 59, 60, 68, 78, 89, 97, 104, 108, 110, 104, 103, 103, + 101, 99, 98, 96, 95, 95, 104, 112, 117, 123, 124, 118, 110, 118, 115, 114, + 107, 100, 108, 112, 99, 91, 109, 97, 90, 86, 78, 81, 74, 69, 68, 62, + 52, 48, 49, 50, 47, 52, 59, 75, 78, 81, 89, 93, 79, 94, 88, 82, + 72, 81, 78, 39, 25, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, 78, 78, 73, 75, 49, + 65, 77, 84, 92, 87, 105, 87, 103, 97, 96, 98, 97, 93, 91, 89, 90, + 80, 85, 95, 105, 109, 109, 103, 98, 100, 103, 86, 75, 59, 78, 82, 86, + 76, 82, 81, 75, 72, 74, 69, 58, 60, 66, 77, 89, 99, 107, 109, 109, + 106, 106, 107, 107, 106, 106, 104, 103, 105, 112, 118, 123, 127, 130, 125, 117, + 112, 115, 115, 105, 101, 115, 117, 98, 105, 107, 86, 79, 69, 69, 90, 80, + 67, 68, 61, 52, 49, 49, 51, 48, 49, 57, 72, 79, 79, 90, 93, 80, + 100, 99, 100, 74, 68, 65, 33, 28, 44, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 77, 79, + 68, 96, 67, 48, 72, 77, 88, 89, 107, 81, 100, 98, 103, 109, 110, 107, + 103, 100, 100, 111, 108, 106, 107, 110, 110, 104, 100, 104, 97, 84, 49, 69, + 71, 88, 85, 76, 85, 86, 80, 76, 77, 71, 60, 61, 65, 72, 85, 97, + 104, 105, 101, 111, 111, 112, 113, 112, 110, 108, 107, 112, 115, 118, 120, 124, + 126, 121, 115, 106, 113, 115, 102, 100, 119, 122, 98, 112, 109, 93, 92, 73, + 69, 89, 66, 71, 72, 65, 56, 51, 50, 49, 46, 49, 58, 71, 78, 77, + 88, 89, 77, 89, 97, 103, 67, 52, 51, 25, 30, 110, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 198, 86, 84, 82, 86, 92, 75, 57, 75, 109, 80, 100, 107, 86, 110, 108, + 108, 108, 110, 112, 114, 116, 121, 124, 125, 121, 112, 104, 100, 99, 99, 80, + 65, 63, 65, 68, 78, 91, 82, 85, 82, 73, 69, 71, 70, 66, 66, 59, + 69, 70, 78, 93, 97, 114, 122, 121, 118, 115, 113, 115, 120, 125, 122, 126, + 130, 133, 132, 129, 127, 127, 139, 109, 98, 108, 114, 115, 110, 100, 101, 103, + 102, 97, 92, 85, 73, 64, 78, 73, 63, 55, 47, 45, 51, 58, 60, 61, + 75, 83, 78, 81, 94, 101, 95, 100, 93, 78, 44, 47, 21, 24, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 83, 82, 79, 82, 88, 111, 83, 56, 75, 75, 92, 95, + 112, 112, 111, 113, 113, 115, 117, 118, 119, 119, 124, 130, 133, 128, 116, 101, + 91, 77, 82, 80, 74, 74, 85, 90, 87, 91, 90, 85, 78, 71, 69, 66, + 64, 73, 69, 82, 82, 85, 95, 97, 112, 115, 120, 126, 133, 133, 132, 127, + 125, 124, 122, 123, 131, 139, 140, 129, 121, 122, 108, 107, 111, 101, 98, 104, + 109, 92, 91, 90, 94, 94, 91, 85, 83, 78, 73, 64, 54, 46, 46, 50, + 56, 60, 59, 71, 78, 75, 82, 97, 102, 92, 97, 94, 67, 48, 65, 56, + 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 82, 81, 78, 80, 85, 99, 137, 102, 69, + 68, 92, 86, 109, 110, 111, 115, 118, 121, 124, 125, 125, 134, 127, 119, 114, + 113, 111, 107, 102, 59, 81, 86, 73, 74, 94, 98, 83, 93, 88, 85, 82, + 74, 67, 64, 67, 68, 69, 87, 88, 88, 93, 91, 108, 112, 110, 111, 115, + 121, 128, 131, 134, 137, 134, 130, 131, 133, 132, 125, 120, 121, 111, 111, 111, + 97, 92, 102, 107, 101, 92, 89, 95, 96, 90, 86, 89, 76, 72, 62, 50, + 44, 44, 49, 53, 61, 59, 67, 71, 70, 82, 97, 100, 94, 94, 91, 49, + 49, 76, 89, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 84, 81, 82, 85, 84, + 149, 133, 94, 80, 98, 89, 106, 103, 107, 111, 117, 123, 126, 127, 128, 124, + 125, 127, 127, 121, 107, 90, 78, 69, 82, 78, 64, 69, 93, 100, 88, 89, + 84, 83, 83, 75, 66, 64, 70, 57, 63, 87, 90, 90, 93, 90, 106, 175, + 164, 148, 135, 128, 126, 125, 125, 132, 135, 133, 122, 111, 110, 121, 134, 139, + 119, 111, 111, 106, 104, 102, 94, 109, 97, 92, 99, 99, 89, 83, 87, 74, + 72, 60, 48, 42, 43, 48, 49, 64, 61, 64, 66, 66, 84, 99, 96, 105, + 89, 84, 39, 51, 70, 94, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 87, 84, + 84, 86, 101, 101, 96, 107, 90, 93, 92, 113, 115, 117, 122, 126, 130, 132, + 134, 134, 125, 126, 125, 119, 106, 94, 85, 81, 95, 86, 73, 68, 79, 95, + 101, 97, 92, 89, 89, 86, 77, 67, 65, 70, 54, 61, 87, 92, 90, 93, + 88, 103, 106, 105, 105, 106, 109, 111, 112, 112, 106, 113, 116, 110, 102, 106, + 122, 138, 139, 118, 108, 109, 108, 107, 101, 87, 95, 86, 85, 94, 99, 94, + 89, 89, 75, 72, 61, 46, 42, 45, 49, 48, 64, 63, 65, 66, 71, 95, + 108, 100, 111, 78, 72, 42, 55, 62, 83, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 86, 83, 83, 83, 86, 78, 88, 107, 74, 80, 86, 91, 104, 105, 107, + 108, 110, 110, 109, 110, 113, 108, 97, 86, 80, 87, 102, 115, 103, 82, 69, + 76, 90, 96, 96, 96, 100, 103, 102, 91, 79, 71, 67, 65, 54, 58, 81, + 86, 84, 83, 75, 87, 109, 108, 102, 96, 90, 89, 91, 94, 103, 103, 105, + 110, 113, 118, 119, 119, 116, 108, 109, 107, 97, 96, 96, 89, 85, 81, 80, + 85, 93, 95, 89, 84, 76, 74, 61, 46, 42, 49, 51, 47, 59, 61, 64, + 66, 77, 106, 119, 104, 100, 65, 57, 47, 56, 62, 136, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 84, 83, 83, 63, 87, 100, 100, 69, 85, 85, 75, + 79, 79, 79, 80, 81, 81, 81, 81, 80, 85, 93, 99, 101, 100, 99, 98, + 92, 75, 66, 75, 88, 94, 94, 94, 101, 111, 111, 92, 78, 74, 70, 62, + 54, 55, 73, 76, 75, 74, 64, 73, 88, 89, 88, 86, 84, 89, 101, 111, + 105, 106, 107, 113, 116, 117, 111, 107, 101, 101, 107, 107, 93, 90, 92, 86, + 84, 85, 80, 77, 85, 96, 93, 80, 78, 76, 63, 47, 43, 51, 53, 47, + 53, 56, 61, 63, 77, 107, 115, 94, 76, 54, 43, 43, 47, 70, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 199, 85, 84, 85, 83, 70, 88, 92, + 105, 92, 99, 98, 98, 98, 99, 102, 105, 106, 108, 106, 105, 104, 106, 107, + 102, 93, 86, 84, 75, 67, 70, 82, 94, 99, 99, 96, 112, 112, 89, 75, + 78, 75, 61, 59, 56, 72, 74, 75, 75, 64, 72, 66, 78, 91, 94, 89, + 83, 83, 86, 91, 99, 106, 106, 102, 101, 108, 115, 107, 102, 105, 105, 98, + 96, 91, 78, 79, 84, 78, 72, 83, 102, 104, 89, 78, 77, 64, 47, 43, + 53, 54, 49, 50, 55, 59, 58, 71, 100, 103, 78, 57, 47, 34, 37, 37, + 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 77, 75, 77, + 77, 106, 81, 81, 85, 98, 99, 101, 104, 105, 104, 104, 105, 107, 103, 108, + 109, 104, 95, 88, 87, 88, 72, 65, 64, 76, 90, 96, 96, 94, 90, 96, + 100, 93, 86, 82, 75, 69, 59, 64, 67, 71, 75, 78, 77, 74, 57, 64, + 76, 89, 96, 93, 83, 75, 73, 85, 98, 103, 100, 97, 98, 101, 105, 96, + 92, 98, 97, 87, 83, 87, 75, 77, 78, 80, 83, 87, 93, 97, 77, 73, + 63, 52, 45, 48, 50, 51, 47, 55, 64, 54, 83, 108, 61, 29, 19, 44, + 53, 25, 14, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, + 81, 78, 78, 77, 103, 85, 86, 88, 99, 98, 98, 100, 101, 102, 103, 103, + 103, 106, 103, 99, 95, 91, 87, 83, 80, 76, 69, 69, 79, 90, 94, 93, + 91, 94, 98, 99, 91, 84, 79, 75, 70, 63, 66, 69, 73, 77, 80, 78, + 74, 61, 65, 75, 86, 94, 94, 90, 85, 79, 81, 85, 89, 93, 97, 101, + 104, 99, 95, 94, 95, 91, 85, 81, 81, 76, 67, 68, 79, 83, 81, 88, + 102, 81, 76, 66, 52, 45, 48, 50, 49, 52, 53, 61, 54, 71, 88, 52, + 32, 44, 46, 40, 28, 32, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 86, 81, 78, 77, 92, 86, 93, 87, 96, 96, 95, 95, 96, + 99, 100, 98, 96, 103, 94, 86, 84, 88, 89, 83, 76, 75, 69, 71, 80, + 91, 95, 96, 96, 102, 104, 101, 93, 85, 82, 78, 74, 72, 71, 72, 75, + 78, 78, 74, 69, 65, 67, 73, 82, 91, 95, 95, 94, 90, 81, 72, 71, + 80, 91, 98, 100, 91, 95, 96, 89, 84, 82, 79, 75, 81, 65, 66, 82, + 86, 77, 83, 101, 86, 81, 70, 54, 47, 48, 49, 47, 62, 54, 57, 51, + 49, 47, 26, 21, 41, 28, 16, 27, 57, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 199, 83, 79, 76, 75, 83, 94, 82, 87, 92, + 90, 90, 92, 95, 96, 92, 89, 90, 84, 79, 82, 88, 91, 86, 79, 71, + 66, 68, 76, 87, 95, 102, 107, 109, 108, 106, 100, 93, 87, 81, 78, 78, + 74, 74, 77, 76, 72, 66, 62, 67, 68, 73, 79, 86, 91, 93, 94, 98, + 85, 70, 65, 70, 79, 87, 90, 87, 96, 95, 85, 78, 80, 78, 72, 84, + 75, 76, 87, 91, 84, 84, 92, 93, 87, 74, 57, 48, 47, 48, 48, 65, + 52, 51, 49, 33, 18, 11, 14, 25, 22, 19, 43, 84, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 78, 75, 56, 76, 90, + 75, 79, 87, 86, 87, 88, 90, 90, 86, 84, 80, 81, 82, 86, 88, 88, + 84, 80, 72, 66, 65, 71, 79, 89, 103, 113, 106, 104, 104, 102, 97, 88, + 80, 75, 74, 71, 71, 77, 75, 68, 63, 64, 71, 73, 78, 82, 85, 87, + 89, 90, 99, 91, 81, 73, 71, 76, 82, 88, 87, 94, 93, 84, 79, 81, + 77, 70, 76, 81, 87, 89, 93, 95, 90, 81, 98, 90, 76, 58, 49, 48, + 48, 47, 58, 46, 45, 48, 28, 14, 20, 20, 28, 46, 56, 74, 101, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 77, 76, + 40, 69, 89, 70, 77, 80, 82, 85, 86, 84, 81, 80, 80, 79, 82, 87, + 89, 86, 81, 78, 76, 75, 69, 66, 67, 71, 79, 93, 106, 96, 93, 94, + 96, 93, 83, 74, 70, 67, 66, 71, 78, 74, 66, 66, 72, 79, 82, 85, + 87, 86, 86, 87, 88, 93, 92, 90, 85, 81, 81, 86, 91, 91, 93, 89, + 86, 84, 84, 79, 72, 65, 78, 87, 89, 95, 101, 94, 77, 99, 91, 76, + 58, 48, 48, 50, 49, 57, 48, 42, 43, 23, 19, 34, 18, 28, 54, 76, + 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 78, 77, 29, 66, 91, 73, 82, 74, 80, 84, 85, 79, 74, 75, 77, + 79, 81, 83, 83, 81, 77, 74, 72, 75, 70, 68, 67, 67, 70, 82, 94, + 88, 82, 82, 85, 85, 77, 70, 68, 68, 70, 78, 84, 76, 65, 68, 80, + 84, 87, 88, 86, 84, 84, 87, 89, 89, 91, 93, 92, 90, 88, 88, 90, + 98, 91, 86, 90, 92, 87, 80, 76, 67, 74, 83, 91, 99, 100, 91, 80, + 99, 90, 75, 59, 48, 49, 52, 52, 57, 52, 39, 38, 26, 41, 65, 31, + 25, 39, 65, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 196, 78, 23, 65, 94, 77, 90, 70, 79, 86, 84, 77, + 72, 74, 78, 78, 77, 76, 76, 78, 78, 75, 72, 70, 68, 67, 68, 65, + 67, 75, 87, 86, 79, 76, 80, 80, 74, 69, 69, 74, 78, 86, 90, 78, + 65, 67, 82, 87, 88, 87, 84, 81, 82, 87, 91, 87, 89, 90, 93, 91, + 91, 86, 85, 103, 89, 84, 92, 97, 90, 81, 79, 78, 75, 81, 96, 103, + 95, 86, 85, 98, 90, 75, 57, 48, 50, 51, 53, 51, 50, 39, 40, 40, + 75, 108, 64, 34, 29, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 68, 31, 71, 89, 92, 89, 81, 57, + 85, 86, 71, 79, 81, 96, 81, 84, 77, 74, 81, 78, 71, 74, 78, 73, + 68, 67, 66, 67, 64, 63, 69, 74, 78, 79, 74, 70, 68, 68, 96, 95, + 93, 88, 82, 80, 82, 84, 80, 75, 74, 72, 80, 84, 88, 83, 85, 101, + 91, 93, 102, 90, 86, 95, 91, 94, 86, 80, 89, 90, 82, 80, 66, 75, + 93, 99, 91, 92, 93, 84, 82, 87, 81, 62, 50, 51, 52, 48, 55, 43, + 38, 41, 81, 129, 121, 106, 100, 22, 97, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 32, 70, 86, 91, + 88, 94, 74, 86, 88, 74, 75, 83, 90, 84, 88, 81, 77, 81, 76, 70, + 74, 63, 66, 67, 67, 66, 65, 66, 69, 71, 77, 81, 82, 78, 75, 74, + 74, 83, 82, 83, 86, 85, 81, 76, 75, 83, 83, 90, 88, 78, 74, 74, + 72, 78, 92, 87, 95, 112, 105, 90, 86, 88, 97, 95, 90, 92, 89, 84, + 83, 70, 73, 90, 99, 92, 89, 88, 80, 78, 82, 75, 57, 45, 47, 49, + 46, 52, 46, 47, 51, 112, 150, 131, 109, 96, 115, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 38, + 72, 85, 90, 88, 96, 86, 79, 87, 79, 76, 94, 94, 84, 89, 82, 76, + 77, 71, 66, 72, 65, 73, 79, 80, 77, 76, 80, 85, 76, 81, 86, 88, + 88, 87, 85, 85, 75, 73, 79, 93, 98, 91, 84, 82, 73, 73, 80, 88, + 78, 81, 83, 81, 83, 92, 87, 82, 94, 103, 97, 97, 83, 94, 100, 96, + 90, 87, 86, 85, 73, 70, 85, 102, 98, 90, 88, 83, 77, 79, 70, 53, + 43, 45, 48, 45, 47, 44, 48, 46, 133, 159, 136, 112, 120, 140, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 186, 77, 83, 87, 88, 96, 96, 76, 86, 84, 77, 101, 97, 83, + 87, 79, 71, 71, 65, 62, 69, 62, 68, 73, 73, 68, 68, 72, 77, 82, + 84, 88, 92, 93, 92, 91, 90, 87, 86, 90, 99, 98, 84, 73, 72, 103, + 93, 81, 89, 78, 85, 76, 72, 81, 89, 95, 80, 80, 95, 97, 105, 81, + 86, 95, 94, 87, 88, 90, 84, 75, 67, 83, 105, 105, 95, 92, 90, 78, + 77, 69, 55, 47, 48, 49, 49, 46, 44, 47, 33, 135, 155, 139, 121, 175, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 78, 78, 80, 83, 103, 107, 84, 89, 89, 77, + 92, 89, 85, 89, 81, 73, 73, 67, 62, 68, 68, 69, 70, 70, 71, 74, + 77, 80, 85, 85, 88, 92, 94, 94, 92, 90, 94, 97, 103, 108, 106, 99, + 94, 95, 92, 96, 77, 88, 79, 86, 70, 83, 71, 71, 93, 90, 93, 109, + 97, 94, 87, 81, 87, 90, 86, 94, 97, 82, 77, 69, 84, 106, 105, 95, + 90, 88, 76, 74, 65, 55, 49, 49, 50, 51, 46, 48, 53, 36, 133, 153, + 143, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 71, 74, 79, 93, 102, 89, + 89, 93, 85, 88, 93, 88, 93, 87, 83, 85, 76, 63, 61, 68, 70, 72, + 75, 80, 85, 90, 91, 87, 86, 89, 94, 97, 98, 97, 94, 98, 103, 102, + 96, 95, 98, 94, 88, 78, 104, 77, 82, 69, 63, 38, 73, 77, 51, 70, + 77, 93, 120, 103, 97, 97, 81, 86, 93, 90, 102, 104, 80, 77, 74, 89, + 104, 99, 88, 83, 76, 71, 68, 61, 54, 49, 48, 47, 49, 40, 46, 57, + 49, 128, 155, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 73, 79, + 80, 91, 97, 90, 98, 96, 84, 99, 89, 97, 96, 97, 99, 84, 59, 47, + 42, 51, 61, 66, 68, 70, 76, 79, 77, 76, 79, 85, 92, 94, 93, 90, + 95, 97, 84, 67, 67, 77, 66, 43, 69, 105, 60, 73, 92, 102, 72, 130, + 74, 34, 53, 61, 73, 104, 97, 106, 103, 84, 92, 101, 94, 104, 104, 75, + 74, 78, 95, 103, 93, 86, 81, 70, 66, 63, 57, 54, 50, 47, 46, 47, + 40, 41, 51, 58, 118, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 74, 77, 84, 81, 92, 109, 93, 98, 98, 72, 93, 88, 97, 100, 105, 108, + 87, 52, 34, 29, 45, 61, 67, 64, 62, 69, 75, 58, 57, 62, 70, 77, + 82, 80, 78, 63, 71, 65, 61, 84, 118, 115, 86, 200, 209, 113, 99, 116, + 113, 54, 103, 49, 19, 57, 67, 62, 80, 77, 101, 103, 86, 98, 107, 95, + 102, 101, 69, 71, 81, 100, 104, 93, 89, 85, 72, 66, 63, 58, 57, 53, + 49, 46, 47, 49, 42, 47, 61, 110, 196, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 195, 73, 78, 72, 86, 100, 103, 95, 87, 86, 89, 100, 89, + 93, 107, 101, 73, 55, 58, 53, 49, 56, 68, 75, 85, 90, 82, 102, 91, + 74, 86, 73, 92, 75, 59, 83, 114, 124, 98, 74, 126, 134, 128, 124, 128, + 98, 87, 117, 114, 73, 55, 56, 68, 75, 75, 74, 80, 86, 90, 84, 96, + 104, 102, 98, 93, 84, 75, 72, 86, 96, 92, 87, 82, 73, 62, 64, 61, + 58, 55, 53, 51, 46, 44, 46, 41, 46, 57, 103, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 74, 78, 75, 84, 96, 101, 98, 92, 90, + 89, 95, 86, 87, 96, 92, 74, 64, 66, 72, 47, 26, 29, 60, 101, 111, + 89, 108, 101, 97, 118, 110, 120, 101, 84, 114, 122, 115, 93, 83, 135, 125, + 101, 115, 128, 107, 85, 94, 89, 69, 72, 76, 85, 90, 88, 84, 87, 90, + 92, 88, 98, 105, 103, 97, 91, 81, 73, 75, 92, 104, 100, 91, 83, 73, + 62, 63, 60, 56, 54, 52, 50, 47, 46, 46, 42, 47, 58, 158, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 79, 77, 81, 88, 98, + 101, 99, 93, 87, 90, 84, 82, 85, 85, 82, 78, 80, 71, 60, 42, 24, + 35, 81, 110, 105, 110, 97, 95, 116, 111, 111, 95, 85, 136, 135, 122, 103, + 96, 142, 124, 95, 103, 114, 92, 66, 64, 61, 56, 69, 85, 93, 98, 94, + 89, 88, 90, 90, 93, 101, 107, 103, 94, 86, 78, 71, 74, 93, 107, 103, + 90, 81, 72, 64, 63, 59, 53, 50, 49, 50, 49, 50, 48, 43, 50, 59, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 81, 78, + 76, 81, 89, 98, 100, 93, 86, 86, 85, 83, 81, 83, 90, 91, 88, 67, + 73, 72, 48, 28, 46, 77, 90, 116, 105, 114, 140, 139, 128, 113, 102, 130, + 136, 135, 115, 90, 121, 106, 92, 64, 66, 54, 46, 62, 75, 78, 86, 84, + 91, 95, 93, 89, 89, 92, 91, 97, 103, 106, 101, 90, 80, 74, 71, 73, + 92, 104, 96, 82, 74, 69, 64, 61, 56, 50, 47, 47, 50, 51, 54, 49, + 45, 54, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 80, 78, 74, 73, 80, 91, 95, 92, 84, 82, 84, 85, 83, 86, 93, + 94, 88, 83, 72, 67, 63, 48, 44, 50, 51, 68, 65, 91, 124, 133, 119, + 106, 93, 96, 108, 115, 98, 63, 81, 69, 65, 59, 59, 55, 57, 72, 83, + 84, 86, 88, 94, 97, 94, 91, 93, 96, 97, 99, 102, 103, 97, 86, 75, + 72, 74, 82, 96, 102, 88, 72, 66, 64, 62, 58, 55, 50, 48, 49, 52, + 53, 56, 52, 49, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 79, 75, 71, 75, 82, 87, 89, 87, 77, 80, 83, + 86, 90, 93, 90, 85, 93, 72, 69, 76, 70, 60, 57, 54, 34, 24, 41, + 53, 65, 60, 67, 61, 59, 62, 69, 66, 44, 66, 54, 51, 64, 71, 78, + 79, 74, 74, 78, 82, 93, 97, 96, 92, 90, 93, 96, 95, 99, 99, 97, + 91, 79, 70, 72, 79, 96, 105, 102, 82, 66, 60, 60, 58, 53, 51, 50, + 50, 53, 55, 56, 57, 55, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 197, 78, 74, 71, 74, 80, 87, 90, + 78, 77, 81, 90, 94, 92, 89, 88, 87, 80, 84, 86, 74, 72, 76, 76, + 68, 50, 51, 36, 42, 40, 60, 55, 42, 36, 40, 48, 39, 69, 59, 61, + 51, 60, 76, 83, 79, 82, 94, 100, 95, 97, 93, 87, 86, 91, 95, 95, + 97, 95, 91, 85, 73, 66, 74, 86, 100, 105, 99, 79, 64, 60, 59, 56, + 49, 50, 51, 54, 58, 58, 57, 56, 58, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 76, 71, 69, + 76, 87, 94, 81, 78, 84, 96, 100, 96, 91, 93, 85, 82, 83, 80, 76, + 84, 85, 70, 69, 58, 65, 45, 47, 37, 49, 33, 50, 41, 43, 48, 37, + 65, 60, 67, 80, 76, 83, 88, 82, 83, 88, 85, 97, 97, 93, 88, 89, + 95, 102, 103, 95, 91, 87, 81, 70, 64, 75, 90, 94, 99, 92, 75, 64, + 63, 61, 58, 47, 49, 52, 57, 60, 60, 57, 55, 59, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 60, 64, 85, 73, 67, 99, 87, 71, 83, 97, 91, 94, 102, 95, 96, 87, + 78, 77, 83, 88, 86, 81, 81, 74, 68, 67, 71, 75, 76, 76, 64, 66, + 68, 70, 73, 76, 80, 84, 88, 89, 88, 88, 88, 92, 93, 95, 100, 102, + 97, 89, 86, 93, 100, 105, 97, 98, 88, 71, 63, 71, 84, 92, 97, 91, + 81, 70, 62, 57, 53, 49, 46, 48, 53, 60, 60, 58, 61, 69, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 196, 69, 60, 37, 44, 90, 96, 82, 83, 90, 91, 95, 96, + 92, 98, 93, 86, 81, 79, 80, 82, 82, 79, 75, 73, 73, 76, 80, 84, + 87, 85, 89, 93, 95, 95, 95, 97, 99, 92, 95, 95, 97, 97, 97, 96, + 96, 96, 98, 95, 89, 86, 91, 99, 101, 98, 92, 79, 67, 67, 77, 87, + 90, 97, 88, 77, 67, 62, 59, 53, 48, 46, 51, 54, 57, 58, 60, 62, + 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 48, 46, 27, 21, 47, 84, 88, 83, 78, + 87, 94, 91, 90, 96, 97, 94, 85, 75, 72, 77, 81, 71, 69, 70, 70, + 72, 78, 84, 89, 93, 97, 101, 104, 101, 98, 96, 96, 90, 94, 98, 103, + 104, 103, 99, 98, 97, 100, 99, 94, 93, 97, 101, 101, 96, 83, 68, 62, + 72, 86, 91, 89, 93, 83, 71, 64, 60, 57, 53, 49, 53, 60, 62, 61, + 64, 72, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 36, 30, 13, 12, 46, + 84, 88, 70, 79, 94, 91, 89, 94, 96, 96, 89, 80, 74, 75, 79, 78, + 79, 81, 80, 79, 82, 87, 93, 82, 85, 89, 90, 87, 84, 82, 83, 85, + 90, 96, 101, 103, 103, 101, 100, 97, 100, 102, 99, 98, 102, 102, 99, 89, + 76, 62, 62, 75, 90, 94, 91, 88, 79, 70, 61, 56, 51, 50, 53, 58, + 68, 68, 63, 68, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, 15, + 12, 16, 10, 74, 94, 71, 74, 90, 92, 87, 90, 91, 92, 92, 88, 84, + 79, 77, 76, 76, 75, 72, 69, 69, 72, 76, 76, 77, 78, 77, 75, 75, + 78, 81, 91, 94, 97, 99, 100, 100, 99, 99, 94, 97, 99, 97, 97, 99, + 96, 93, 82, 72, 62, 65, 77, 88, 92, 91, 83, 76, 69, 61, 52, 44, + 49, 58, 59, 67, 67, 60, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 15, 19, 20, 5, 55, 83, 76, 75, 86, 89, 85, 88, 88, 88, + 91, 94, 92, 86, 80, 73, 72, 69, 66, 63, 60, 61, 62, 77, 77, 75, + 73, 73, 76, 82, 86, 102, 103, 102, 101, 98, 97, 97, 96, 96, 99, 100, + 98, 99, 100, 96, 91, 77, 68, 63, 70, 81, 87, 88, 88, 78, 70, 63, + 58, 50, 44, 52, 64, 66, 71, 70, 64, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 179, 26, 14, 20, 23, 48, 74, 80, 78, 83, 86, + 89, 87, 87, 90, 93, 93, 92, 87, 90, 86, 83, 81, 80, 79, 78, 77, + 81, 81, 79, 78, 77, 81, 87, 92, 103, 104, 102, 102, 100, 98, 97, 96, + 101, 102, 101, 99, 101, 101, 96, 90, 77, 67, 63, 74, 85, 88, 82, 80, + 76, 63, 52, 53, 54, 52, 57, 68, 75, 76, 73, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 16, 34, 1, 13, 68, 83, + 74, 78, 89, 90, 90, 89, 89, 89, 91, 94, 94, 87, 82, 78, 78, 81, + 82, 79, 77, 87, 87, 86, 85, 84, 88, 93, 97, 95, 98, 100, 101, 100, + 100, 99, 98, 99, 100, 97, 96, 96, 97, 91, 84, 79, 67, 62, 74, 89, + 89, 81, 73, 76, 55, 42, 48, 58, 60, 63, 69, 76, 74, 132, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 22, 24, + 13, 19, 56, 78, 81, 91, 93, 93, 93, 93, 92, 91, 89, 89, 95, 93, + 92, 91, 90, 90, 89, 89, 88, 94, 96, 93, 93, 97, 96, 91, 100, 100, + 99, 98, 96, 96, 96, 96, 99, 99, 98, 102, 101, 98, 88, 81, 72, 71, + 71, 78, 87, 88, 81, 73, 68, 52, 45, 56, 67, 69, 70, 75, 80, 137, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 177, 21, 28, 17, 11, 34, 65, 81, 85, 95, 93, 91, 90, 90, 91, 96, + 97, 96, 93, 91, 90, 89, 89, 90, 91, 88, 94, 97, 96, 97, 102, 102, + 99, 104, 104, 101, 99, 97, 96, 96, 95, 89, 92, 94, 97, 96, 92, 86, + 82, 70, 69, 72, 78, 84, 82, 73, 63, 56, 48, 49, 60, 68, 68, 70, + 77, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 21, 26, 22, 6, 11, 50, 83, 86, 89, 91, 91, 92, + 91, 92, 95, 98, 95, 94, 90, 89, 88, 89, 90, 92, 86, 91, 95, 97, + 100, 105, 106, 104, 109, 108, 104, 101, 98, 97, 96, 97, 91, 94, 96, 98, + 95, 90, 85, 81, 66, 70, 75, 81, 84, 77, 66, 58, 47, 46, 54, 66, + 71, 69, 73, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 19, 23, 15, 5, 36, 79, 88, 83, + 89, 93, 96, 93, 90, 88, 87, 91, 91, 89, 89, 89, 89, 89, 90, 84, + 88, 91, 95, 98, 101, 102, 103, 108, 108, 104, 102, 99, 99, 100, 102, 101, + 99, 96, 97, 96, 91, 81, 74, 64, 70, 78, 82, 81, 73, 64, 57, 49, + 50, 58, 70, 76, 75, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 26, 12, 23, + 58, 77, 88, 93, 97, 96, 90, 85, 84, 85, 85, 88, 90, 91, 91, 90, + 87, 86, 86, 87, 91, 95, 96, 97, 97, 99, 100, 99, 97, 95, 96, 98, + 100, 103, 103, 96, 89, 90, 93, 90, 77, 65, 66, 73, 79, 80, 73, 64, + 57, 54, 62, 60, 63, 72, 80, 81, 138, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, + 29, 21, 13, 29, 50, 94, 96, 97, 94, 86, 84, 87, 90, 83, 84, 86, + 88, 88, 88, 87, 85, 93, 92, 93, 98, 98, 95, 94, 97, 91, 90, 89, + 88, 90, 94, 98, 102, 102, 95, 89, 90, 93, 91, 79, 68, 69, 74, 77, + 71, 59, 51, 49, 51, 72, 69, 69, 76, 82, 142, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 23, 29, 16, 12, 24, 81, 88, 94, 95, 89, 84, 85, 89, + 83, 84, 84, 83, 84, 85, 86, 88, 95, 93, 95, 99, 99, 95, 94, 97, + 90, 89, 87, 87, 89, 94, 98, 103, 101, 98, 95, 93, 90, 85, 77, 72, + 67, 72, 73, 64, 51, 46, 51, 59, 71, 74, 79, 82, 83, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 32, 25, 9, 13, 60, 74, 92, 100, 96, + 88, 81, 80, 86, 84, 80, 78, 79, 83, 87, 90, 95, 91, 93, 99, 99, + 93, 93, 96, 93, 92, 90, 90, 92, 96, 102, 105, 96, 99, 97, 92, 82, + 72, 68, 68, 65, 70, 69, 60, 49, 48, 61, 72, 66, 76, 85, 87, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 15, 12, 28, 63, + 97, 86, 101, 88, 88, 78, 80, 78, 78, 81, 83, 84, 89, 96, 92, 93, + 95, 96, 97, 96, 95, 95, 90, 94, 96, 94, 91, 92, 100, 108, 102, 99, + 93, 88, 83, 77, 69, 66, 74, 67, 60, 53, 53, 59, 67, 74, 76, 84, + 88, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 19, + 16, 10, 51, 89, 91, 94, 85, 87, 89, 86, 83, 82, 86, 87, 87, 89, + 96, 98, 96, 93, 92, 91, 95, 99, 103, 91, 92, 93, 96, 98, 100, 102, + 103, 101, 98, 91, 86, 81, 75, 68, 65, 67, 65, 60, 58, 59, 66, 74, + 79, 82, 82, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 20, 2, 34, 65, 88, 86, 88, 85, 92, 90, 87, 86, 90, + 90, 88, 88, 93, 96, 95, 93, 91, 92, 95, 99, 102, 100, 99, 99, 103, + 108, 109, 104, 99, 97, 93, 86, 79, 73, 69, 63, 62, 60, 61, 62, 63, + 68, 75, 82, 85, 89, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 21, 37, 81, 84, 94, 83, 85, 88, + 84, 85, 90, 93, 90, 88, 89, 89, 92, 94, 98, 98, 98, 95, 95, 103, + 103, 102, 103, 106, 105, 99, 94, 94, 87, 76, 67, 62, 59, 58, 58, 58, + 61, 64, 71, 76, 82, 86, 88, 90, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 92, 86, 88, + 77, 83, 86, 82, 83, 90, 95, 93, 90, 91, 91, 94, 96, 100, 100, 98, + 96, 94, 96, 96, 98, 97, 95, 94, 91, 91, 86, 78, 66, 57, 53, 55, + 57, 59, 63, 67, 71, 77, 82, 84, 86, 85, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 204, 75, 72, 86, 83, 79, 80, 88, 94, 94, 91, 93, 100, 98, 96, + 94, 94, 95, 97, 98, 88, 90, 93, 93, 92, 91, 89, 90, 73, 68, 60, + 56, 56, 60, 63, 65, 71, 74, 77, 80, 82, 84, 84, 140, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 195, 81, 80, 73, 73, 81, 89, 90, 87, 88, + 96, 94, 91, 89, 89, 88, 89, 90, 86, 85, 87, 89, 90, 88, 80, 75, + 59, 58, 59, 64, 69, 73, 76, 76, 78, 79, 80, 81, 82, 82, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 68, 74, 81, + 82, 81, 81, 84, 86, 89, 90, 88, 83, 78, 75, 83, 80, 78, 81, 85, + 79, 64, 50, 48, 53, 61, 72, 81, 85, 87, 85, 82, 82, 81, 80, 138, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 79, 57, 63, 68, 77, 81, 82, 77, 77, 78, 78, 76, 76, 72, + 71, 71, 65, 57, 57, 64, 65, 72, 83, 92, 95, 94, 92, 89, 82, 87, + 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 63, 63, 63, 67, 67, + 64, 56, 57, 62, 67, 68, 65, 67, 74, 80, 85, 90, 94, 92, 91, 91, + 92, 86, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 193, 70, 66, 83, 85, 91, 97, 98, 95, 94, 97, 93, 96, 96, 92, + 86, 85, 89, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 102, 98, 96, 94, + 96, 95, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 203, 94, 94, 101, 102, 96, 104, 95, 85, 81, 82, 86, + 87, 86, 113, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 92, 92, 95, 91, 94, 97, + 98, 95, 92, 91, 91, 87, 92, 97, 99, 102, 103, 99, 92, 95, 92, 89, + 86, 85, 82, 78, 74, 73, 83, 74, 64, 67, 58, 49, 60, 66, 70, 64, + 66, 84, 93, 89, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 102, 104, 108, 107, 102, 101, 97, 95, 97, 97, 93, 90, 90, + 87, 83, 85, 92, 91, 86, 87, 94, 95, 90, 89, 93, 94, 90, 84, 82, + 77, 81, 86, 87, 83, 76, 69, 64, 81, 85, 74, 62, 59, 49, 41, 46, + 54, 66, 61, 57, 73, 86, 82, 76, 78, 94, 95, 113, 120, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 207, 110, 108, 107, 108, 104, 97, 102, 99, 97, 97, 96, + 92, 88, 86, 100, 89, 85, 92, 92, 85, 89, 102, 90, 75, 64, 65, 66, + 63, 65, 72, 56, 64, 72, 74, 70, 63, 60, 60, 72, 70, 62, 53, 48, + 42, 38, 39, 48, 61, 55, 48, 66, 83, 76, 63, 73, 93, 96, 113, 121, + 109, 115, 122, 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 205, 110, 114, 116, 115, 114, 112, 104, 96, 94, 94, + 94, 95, 97, 98, 97, 95, 89, 77, 74, 80, 78, 68, 67, 76, 71, 55, + 43, 43, 45, 45, 52, 63, 44, 50, 55, 54, 50, 47, 50, 54, 48, 44, + 44, 44, 43, 46, 50, 49, 53, 62, 52, 45, 66, 84, 75, 59, 74, 98, + 96, 101, 107, 103, 109, 107, 106, 108, 110, 111, 158, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 184, 83, 79, 68, 73, 77, 78, 78, 76, 68, + 58, 49, 49, 46, 42, 43, 46, 44, 41, 45, 42, 48, 59, 64, 57, 54, + 56, 69, 62, 55, 51, 46, 41, 41, 45, 40, 43, 43, 40, 35, 35, 40, + 45, 42, 35, 39, 44, 42, 48, 55, 49, 60, 65, 54, 49, 68, 83, 75, + 65, 72, 95, 89, 92, 101, 101, 107, 102, 100, 104, 108, 109, 108, 108, 111, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 188, 48, 82, 73, 82, 86, 88, 88, + 87, 86, 78, 70, 58, 57, 50, 40, 37, 38, 36, 31, 27, 30, 37, 48, + 59, 65, 66, 66, 67, 71, 70, 59, 48, 41, 36, 33, 37, 38, 39, 37, + 35, 35, 39, 42, 49, 38, 44, 49, 42, 47, 53, 42, 62, 67, 59, 55, + 67, 74, 72, 74, 84, 94, 85, 96, 106, 97, 99, 97, 91, 95, 98, 99, + 98, 100, 106, 112, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 99, 49, 53, 91, 84, 84, + 86, 85, 81, 79, 77, 70, 62, 49, 49, 42, 32, 30, 34, 33, 28, 21, + 21, 20, 21, 31, 45, 52, 52, 46, 57, 59, 47, 37, 37, 37, 34, 29, + 32, 36, 38, 39, 40, 41, 42, 45, 33, 41, 48, 41, 47, 54, 41, 58, + 64, 59, 56, 61, 62, 66, 79, 103, 100, 85, 101, 106, 79, 73, 75, 78, + 80, 82, 81, 81, 85, 94, 102, 104, 105, 106, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 93, 74, 68, 79, + 90, 92, 89, 81, 76, 78, 79, 71, 59, 52, 31, 38, 35, 32, 35, 30, + 23, 28, 28, 16, 10, 18, 27, 29, 27, 27, 40, 39, 40, 43, 40, 34, + 33, 37, 35, 31, 27, 28, 33, 36, 35, 33, 44, 39, 38, 46, 55, 56, + 47, 37, 51, 58, 52, 54, 68, 64, 62, 81, 100, 106, 93, 75, 74, 76, + 74, 76, 64, 64, 60, 54, 49, 51, 59, 67, 82, 90, 100, 106, 158, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 99, 87, 84, 79, + 70, 64, 58, 65, 70, 55, 49, 45, 44, 40, 34, 29, 29, 28, 32, 26, + 23, 30, 31, 32, 42, 34, 23, 17, 22, 27, 27, 27, 28, 30, 32, 35, + 37, 38, 37, 37, 36, 43, 35, 27, 25, 29, 33, 33, 31, 40, 36, 35, + 40, 48, 51, 47, 41, 64, 66, 64, 67, 72, 66, 61, 67, 64, 79, 76, + 64, 63, 60, 55, 55, 38, 38, 38, 37, 36, 37, 41, 45, 57, 61, 68, + 77, 90, 102, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 92, 80, + 69, 60, 60, 60, 52, 35, 35, 43, 35, 30, 27, 23, 17, 12, 14, 21, + 24, 28, 23, 21, 31, 34, 37, 46, 41, 34, 28, 28, 28, 27, 28, 31, + 28, 35, 38, 37, 40, 46, 44, 36, 39, 30, 21, 20, 27, 34, 35, 34, + 39, 37, 36, 38, 42, 48, 51, 52, 69, 63, 70, 79, 78, 75, 71, 63, + 54, 70, 69, 57, 54, 49, 42, 41, 38, 38, 38, 39, 40, 38, 34, 31, + 34, 34, 37, 48, 64, 83, 99, 158, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, + 93, 75, 52, 54, 49, 49, 48, 38, 27, 25, 30, 36, 31, 27, 24, 20, + 16, 19, 26, 21, 27, 24, 25, 34, 34, 30, 34, 43, 39, 34, 30, 26, + 25, 28, 31, 28, 38, 40, 35, 38, 48, 44, 31, 38, 30, 22, 21, 28, + 34, 35, 33, 38, 38, 36, 36, 38, 44, 54, 61, 69, 58, 69, 80, 74, + 76, 76, 58, 59, 68, 60, 46, 48, 50, 47, 48, 47, 45, 44, 47, 50, + 49, 42, 36, 28, 27, 29, 36, 47, 61, 81, 96, 154, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 200, 80, 72, 58, 42, 47, 51, 48, 37, 29, 32, 36, 34, 39, 33, + 28, 28, 27, 24, 23, 25, 24, 28, 24, 24, 34, 33, 29, 33, 43, 43, + 39, 32, 26, 26, 28, 30, 27, 38, 41, 34, 37, 46, 44, 32, 45, 39, + 33, 30, 32, 33, 31, 28, 34, 36, 36, 34, 34, 41, 52, 62, 75, 63, + 69, 76, 68, 72, 73, 55, 58, 62, 50, 40, 49, 58, 56, 56, 42, 38, + 35, 38, 44, 47, 43, 39, 30, 30, 34, 37, 38, 43, 60, 78, 93, 94, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 200, 76, 68, 63, 60, 54, 46, 55, 53, 37, 34, 42, 49, + 45, 42, 35, 30, 31, 31, 27, 23, 23, 28, 29, 20, 19, 32, 38, 40, + 48, 48, 49, 45, 37, 31, 31, 30, 29, 33, 42, 46, 43, 43, 49, 51, + 47, 35, 34, 33, 31, 30, 30, 31, 32, 29, 32, 34, 33, 32, 36, 46, + 54, 63, 59, 62, 65, 66, 74, 78, 70, 67, 73, 63, 53, 59, 62, 53, + 49, 54, 47, 39, 36, 37, 37, 33, 30, 29, 28, 32, 35, 32, 30, 41, + 57, 73, 78, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 78, 73, 72, 66, 63, 63, 48, 51, 52, 47, + 46, 46, 52, 54, 48, 44, 41, 39, 34, 28, 28, 32, 30, 30, 22, 24, + 41, 50, 54, 63, 61, 61, 56, 47, 41, 40, 35, 29, 45, 50, 54, 52, + 48, 48, 53, 58, 37, 38, 37, 33, 27, 27, 32, 38, 29, 32, 36, 37, + 36, 38, 43, 48, 41, 51, 52, 53, 67, 78, 81, 86, 80, 91, 85, 71, + 68, 65, 57, 54, 68, 60, 50, 42, 37, 33, 29, 26, 31, 24, 23, 28, + 28, 23, 27, 37, 49, 60, 75, 86, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 79, 68, 75, 79, 70, 59, 55, 50, + 46, 51, 58, 59, 48, 50, 59, 51, 50, 49, 43, 32, 25, 29, 38, 26, + 30, 27, 34, 52, 59, 59, 64, 69, 70, 64, 53, 47, 45, 38, 28, 47, + 49, 53, 52, 43, 36, 42, 52, 60, 58, 55, 42, 27, 22, 27, 34, 30, + 34, 39, 41, 41, 41, 42, 44, 32, 53, 51, 46, 63, 71, 71, 82, 75, + 91, 89, 72, 69, 67, 69, 77, 58, 52, 47, 40, 39, 35, 35, 32, 37, + 21, 17, 22, 28, 21, 21, 25, 34, 50, 72, 90, 151, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 65, 67, 82, 78, 52, + 43, 56, 64, 56, 50, 64, 64, 56, 64, 53, 53, 49, 46, 42, 42, 42, + 39, 36, 35, 45, 32, 40, 40, 73, 63, 54, 59, 73, 66, 46, 50, 68, + 55, 21, 28, 44, 59, 57, 49, 44, 41, 36, 48, 43, 44, 41, 35, 29, + 29, 34, 36, 47, 35, 36, 53, 38, 23, 43, 43, 37, 37, 51, 68, 77, + 78, 80, 89, 61, 57, 73, 83, 75, 64, 50, 63, 58, 48, 36, 36, 40, + 38, 29, 33, 30, 28, 22, 19, 20, 27, 33, 28, 41, 56, 69, 87, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 80, 75, 74, + 75, 70, 60, 57, 59, 65, 60, 57, 71, 69, 61, 66, 52, 57, 55, 52, + 47, 40, 38, 40, 42, 40, 44, 36, 52, 50, 67, 59, 60, 60, 63, 58, + 50, 50, 54, 47, 31, 29, 44, 53, 47, 44, 46, 45, 38, 44, 38, 41, + 43, 40, 33, 30, 32, 40, 49, 37, 36, 52, 39, 23, 40, 47, 41, 37, + 49, 64, 69, 71, 71, 74, 57, 59, 68, 68, 63, 57, 48, 56, 56, 51, + 45, 45, 47, 43, 36, 33, 32, 29, 24, 20, 19, 23, 26, 25, 36, 48, + 60, 79, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 75, + 75, 81, 79, 63, 58, 63, 65, 59, 57, 56, 57, 73, 72, 65, 74, 59, + 57, 59, 57, 50, 42, 40, 47, 54, 48, 48, 47, 63, 56, 57, 52, 61, + 62, 55, 52, 53, 47, 36, 34, 39, 33, 45, 46, 34, 33, 44, 45, 33, + 39, 34, 38, 45, 47, 41, 34, 31, 44, 51, 41, 38, 51, 42, 27, 38, + 49, 42, 37, 42, 53, 57, 59, 58, 58, 55, 61, 62, 53, 51, 54, 49, + 56, 59, 60, 57, 54, 52, 46, 40, 29, 29, 27, 24, 20, 18, 18, 20, + 24, 30, 36, 45, 65, 92, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 201, 81, 70, 75, 80, 77, 62, 57, 64, 68, 63, 63, 61, 58, 68, 66, + 62, 74, 60, 61, 62, 60, 54, 47, 48, 55, 62, 52, 56, 57, 60, 52, + 49, 48, 54, 59, 53, 52, 52, 41, 26, 28, 40, 38, 47, 41, 24, 26, + 41, 44, 30, 39, 33, 35, 42, 48, 43, 36, 30, 44, 51, 44, 40, 49, + 44, 33, 37, 48, 40, 34, 37, 43, 49, 52, 50, 54, 52, 57, 52, 40, + 44, 54, 51, 60, 64, 67, 66, 61, 55, 50, 46, 60, 59, 56, 50, 43, + 37, 32, 29, 26, 28, 28, 32, 49, 77, 93, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 200, 84, 78, 72, 83, 78, 74, 70, 69, 67, 69, 72, 78, 73, + 61, 61, 53, 51, 66, 55, 66, 63, 58, 53, 50, 50, 53, 56, 49, 58, + 61, 47, 44, 47, 52, 48, 47, 52, 53, 46, 36, 31, 34, 39, 37, 43, + 35, 20, 24, 41, 45, 35, 43, 33, 33, 38, 47, 43, 38, 33, 43, 52, + 50, 44, 47, 48, 43, 39, 41, 37, 31, 31, 38, 44, 47, 46, 53, 46, + 46, 40, 33, 41, 54, 49, 55, 58, 64, 67, 67, 64, 62, 62, 78, 74, + 67, 58, 48, 38, 30, 25, 27, 27, 24, 23, 36, 64, 85, 91, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 202, 86, 80, 79, 81, 85, 68, 62, 68, 72, 64, 64, + 73, 71, 70, 58, 56, 49, 52, 71, 61, 64, 62, 59, 54, 49, 46, 45, + 44, 46, 54, 58, 37, 44, 50, 58, 45, 33, 45, 49, 41, 36, 40, 41, + 37, 31, 34, 29, 22, 28, 39, 44, 41, 44, 34, 33, 37, 46, 43, 41, + 37, 40, 52, 56, 48, 43, 48, 48, 43, 34, 34, 29, 29, 35, 44, 45, + 43, 47, 34, 31, 29, 28, 38, 48, 45, 44, 46, 54, 66, 73, 74, 75, + 78, 56, 52, 46, 40, 35, 31, 26, 23, 24, 27, 24, 19, 29, 56, 80, + 91, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 202, 89, 81, 78, 81, 85, 81, 63, 52, 58, + 66, 63, 63, 66, 60, 61, 55, 56, 52, 56, 74, 64, 53, 58, 61, 57, + 49, 43, 42, 43, 54, 50, 54, 40, 55, 50, 55, 42, 31, 38, 42, 41, + 41, 42, 38, 31, 30, 28, 28, 28, 30, 33, 36, 39, 37, 32, 33, 39, + 47, 45, 45, 42, 41, 56, 65, 53, 38, 45, 50, 42, 31, 32, 30, 29, + 34, 43, 46, 43, 40, 21, 21, 30, 32, 36, 43, 41, 44, 43, 51, 67, + 77, 77, 75, 75, 57, 51, 44, 39, 38, 38, 37, 36, 26, 32, 29, 21, + 24, 48, 74, 88, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 87, 81, 76, 76, 80, 84, 81, + 65, 51, 51, 62, 67, 67, 64, 63, 67, 63, 64, 56, 54, 66, 48, 42, + 53, 63, 63, 53, 45, 47, 52, 66, 50, 53, 47, 65, 48, 48, 38, 37, + 35, 37, 44, 45, 38, 29, 23, 33, 29, 29, 32, 32, 25, 26, 33, 33, + 30, 33, 42, 48, 48, 46, 46, 42, 58, 70, 56, 35, 42, 50, 39, 28, + 32, 32, 30, 35, 43, 45, 41, 34, 17, 19, 35, 36, 34, 39, 43, 54, + 50, 56, 70, 78, 73, 65, 61, 71, 61, 49, 38, 33, 29, 26, 24, 31, + 38, 36, 25, 22, 42, 67, 82, 92, 99, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 79, 79, 80, + 79, 77, 56, 61, 61, 59, 61, 64, 62, 54, 52, 57, 44, 51, 56, 43, + 48, 52, 37, 66, 64, 47, 48, 46, 38, 42, 47, 51, 61, 62, 51, 37, + 38, 47, 53, 43, 56, 43, 20, 17, 20, 33, 28, 21, 31, 41, 30, 21, + 31, 42, 28, 34, 42, 47, 48, 46, 43, 43, 54, 59, 59, 55, 50, 41, + 27, 17, 20, 30, 32, 27, 33, 44, 36, 17, 32, 28, 25, 29, 37, 44, + 46, 42, 36, 44, 57, 64, 65, 66, 69, 72, 62, 50, 37, 30, 31, 33, + 31, 28, 30, 30, 14, 19, 26, 37, 63, 69, 84, 92, 152, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, + 75, 80, 82, 78, 72, 54, 59, 60, 57, 55, 54, 50, 43, 48, 49, 41, + 47, 41, 32, 46, 45, 32, 60, 64, 54, 56, 49, 38, 42, 57, 52, 50, + 49, 50, 48, 48, 49, 46, 37, 52, 46, 30, 29, 27, 34, 23, 23, 32, + 37, 34, 36, 39, 33, 35, 39, 45, 49, 49, 46, 44, 41, 55, 62, 66, + 57, 47, 36, 29, 24, 31, 32, 27, 21, 25, 33, 31, 23, 24, 27, 31, + 37, 42, 45, 47, 45, 41, 45, 53, 57, 57, 57, 57, 59, 59, 52, 44, + 41, 42, 41, 35, 29, 29, 35, 25, 27, 24, 27, 51, 57, 83, 93, 102, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 76, 68, 72, 83, 87, 80, 71, 64, 68, 69, 63, 57, 52, 45, 39, + 40, 36, 35, 41, 24, 22, 49, 47, 61, 62, 47, 32, 33, 36, 48, 67, + 55, 56, 58, 60, 65, 67, 61, 53, 62, 44, 51, 43, 30, 29, 23, 25, + 22, 25, 30, 29, 32, 44, 41, 19, 39, 43, 48, 51, 50, 48, 47, 45, + 54, 64, 67, 54, 39, 29, 30, 32, 35, 31, 25, 24, 26, 28, 28, 29, + 13, 18, 25, 29, 34, 36, 40, 44, 49, 49, 52, 55, 56, 57, 56, 56, + 47, 45, 44, 46, 47, 43, 33, 24, 31, 43, 38, 38, 28, 23, 46, 54, + 78, 89, 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 78, 75, 80, 90, 93, 86, 78, 73, 75, 73, 66, 57, + 50, 46, 43, 32, 27, 32, 40, 18, 23, 61, 55, 59, 47, 39, 41, 46, + 44, 47, 56, 56, 63, 68, 66, 68, 72, 71, 67, 76, 49, 45, 32, 21, + 25, 20, 22, 33, 30, 30, 28, 29, 40, 37, 17, 40, 45, 49, 50, 50, + 48, 49, 49, 49, 57, 59, 46, 32, 27, 31, 35, 31, 26, 28, 35, 37, + 33, 31, 35, 35, 37, 37, 39, 42, 50, 56, 58, 51, 51, 52, 56, 60, + 64, 66, 66, 58, 59, 61, 65, 66, 61, 51, 42, 39, 49, 42, 41, 32, + 29, 51, 59, 68, 80, 94, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 199, 86, 85, 87, 91, 89, 83, 78, 75, 73, + 68, 62, 52, 46, 44, 45, 30, 25, 30, 38, 16, 25, 64, 57, 57, 36, + 31, 44, 55, 57, 57, 59, 68, 63, 58, 55, 63, 71, 75, 69, 63, 37, + 36, 28, 23, 32, 29, 31, 43, 32, 30, 32, 29, 33, 37, 32, 47, 48, + 50, 50, 49, 47, 47, 47, 48, 51, 49, 40, 34, 35, 37, 38, 34, 29, + 32, 41, 40, 33, 32, 41, 45, 43, 41, 44, 50, 56, 56, 54, 45, 45, + 46, 50, 56, 62, 66, 67, 65, 65, 66, 68, 69, 64, 56, 49, 46, 48, + 34, 33, 29, 29, 51, 56, 60, 73, 89, 102, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 80, 79, 80, 80, 76, 70, + 66, 78, 71, 63, 60, 55, 49, 46, 46, 32, 31, 29, 34, 22, 30, 60, + 51, 66, 39, 34, 44, 54, 66, 77, 75, 70, 58, 54, 66, 81, 80, 66, + 49, 51, 32, 42, 40, 35, 40, 33, 34, 41, 30, 32, 37, 34, 35, 42, + 42, 55, 55, 54, 49, 47, 44, 44, 46, 51, 51, 47, 42, 43, 47, 46, + 42, 45, 40, 39, 40, 35, 31, 35, 46, 38, 37, 37, 44, 50, 50, 43, + 35, 40, 41, 44, 47, 51, 57, 62, 65, 66, 64, 62, 59, 56, 51, 44, + 40, 45, 43, 24, 24, 23, 24, 40, 39, 53, 68, 87, 101, 106, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 71, 68, 67, 72, + 78, 80, 74, 68, 81, 71, 64, 66, 66, 59, 49, 46, 32, 37, 24, 28, + 33, 40, 57, 49, 47, 39, 57, 72, 70, 73, 73, 58, 67, 58, 62, 79, + 85, 69, 54, 46, 55, 42, 57, 55, 44, 44, 37, 39, 45, 46, 53, 54, + 53, 59, 60, 45, 57, 56, 53, 50, 49, 48, 50, 53, 54, 55, 53, 49, + 51, 53, 51, 44, 48, 50, 50, 47, 41, 39, 42, 50, 49, 49, 48, 51, + 54, 54, 52, 51, 50, 54, 59, 62, 65, 69, 76, 82, 87, 83, 76, 68, + 60, 52, 45, 41, 37, 39, 25, 28, 27, 23, 34, 29, 46, 62, 83, 99, + 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 67, 72, + 66, 65, 76, 91, 99, 95, 89, 82, 71, 65, 70, 70, 62, 48, 39, 29, + 38, 22, 26, 43, 50, 58, 50, 61, 56, 67, 67, 53, 60, 72, 64, 72, + 62, 63, 67, 52, 34, 45, 72, 60, 47, 64, 59, 47, 49, 49, 57, 60, + 73, 83, 78, 79, 91, 82, 50, 51, 51, 51, 49, 50, 52, 58, 60, 52, + 55, 56, 53, 52, 52, 50, 44, 39, 49, 60, 59, 53, 49, 48, 50, 51, + 49, 44, 40, 39, 46, 55, 62, 66, 72, 80, 84, 86, 92, 100, 108, 93, + 88, 82, 71, 59, 48, 39, 34, 30, 38, 32, 40, 39, 29, 36, 29, 41, + 57, 80, 96, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 89, 92, 80, 81, 96, 104, 97, 92, 96, 98, 89, 81, 76, 71, 59, + 48, 43, 26, 26, 41, 53, 53, 57, 61, 53, 60, 55, 55, 65, 68, 60, + 57, 61, 60, 65, 61, 54, 54, 61, 60, 53, 51, 47, 45, 40, 39, 44, + 56, 63, 71, 70, 68, 64, 66, 69, 67, 61, 54, 49, 44, 40, 41, 43, + 49, 51, 39, 42, 45, 45, 44, 44, 45, 45, 46, 50, 51, 50, 46, 43, + 42, 45, 49, 52, 49, 42, 43, 50, 56, 60, 69, 58, 55, 65, 75, 75, + 76, 81, 72, 70, 66, 59, 57, 59, 58, 54, 61, 44, 33, 33, 32, 23, + 25, 33, 32, 30, 56, 69, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 71, 66, 59, 78, 99, 105, 97, 88, 84, 86, 67, 68, 60, + 51, 47, 48, 44, 37, 32, 32, 48, 61, 61, 62, 62, 55, 59, 54, 54, + 62, 63, 58, 55, 59, 52, 53, 49, 44, 47, 49, 51, 46, 36, 36, 37, + 36, 37, 44, 51, 59, 54, 54, 49, 47, 49, 54, 55, 52, 47, 47, 48, + 48, 50, 51, 53, 52, 45, 46, 46, 44, 43, 44, 47, 48, 47, 49, 48, + 47, 45, 44, 47, 50, 46, 48, 45, 41, 42, 49, 57, 57, 43, 47, 59, + 74, 83, 79, 70, 65, 64, 66, 66, 66, 73, 78, 76, 69, 55, 46, 38, + 35, 26, 18, 20, 29, 25, 25, 37, 49, 62, 154, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 61, 62, 65, 95, 117, 109, 93, 83, 75, 68, + 60, 65, 56, 40, 31, 35, 36, 30, 45, 45, 60, 71, 69, 68, 66, 57, + 57, 51, 50, 56, 57, 53, 51, 55, 55, 51, 47, 47, 49, 46, 47, 49, + 28, 32, 37, 42, 45, 50, 53, 58, 47, 49, 44, 41, 44, 52, 56, 55, + 48, 45, 43, 39, 37, 34, 34, 33, 45, 43, 44, 42, 43, 44, 48, 51, + 50, 49, 48, 45, 43, 46, 53, 57, 46, 47, 46, 44, 47, 54, 59, 57, + 51, 57, 63, 67, 73, 76, 75, 71, 64, 65, 65, 68, 75, 76, 65, 53, + 53, 52, 47, 38, 26, 20, 21, 25, 19, 21, 18, 27, 42, 100, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 52, 66, 88, 95, 103, 106, 96, 89, + 86, 75, 62, 69, 69, 61, 46, 35, 30, 34, 37, 58, 56, 67, 73, 71, + 71, 71, 62, 57, 50, 49, 52, 52, 49, 50, 53, 61, 51, 48, 53, 53, + 47, 46, 52, 34, 39, 47, 54, 57, 56, 55, 54, 45, 46, 46, 43, 45, + 52, 58, 55, 63, 56, 46, 39, 36, 37, 40, 41, 40, 39, 40, 40, 42, + 45, 49, 51, 52, 51, 49, 47, 45, 47, 53, 56, 48, 50, 51, 51, 56, + 63, 66, 63, 67, 73, 70, 61, 62, 71, 76, 74, 85, 83, 80, 80, 85, + 82, 67, 50, 56, 57, 52, 42, 32, 31, 28, 24, 18, 24, 13, 21, 40, + 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 81, 105, 98, 89, + 84, 81, 82, 79, 74, 70, 65, 58, 54, 54, 47, 36, 43, 55, 69, 65, + 71, 73, 69, 71, 75, 69, 61, 55, 51, 51, 51, 50, 53, 55, 56, 46, + 45, 51, 53, 48, 49, 56, 46, 50, 57, 63, 64, 61, 57, 52, 39, 43, + 45, 42, 43, 46, 49, 45, 49, 46, 43, 40, 43, 48, 55, 57, 46, 45, + 47, 48, 50, 50, 50, 49, 52, 51, 50, 50, 49, 49, 47, 49, 53, 57, + 60, 60, 65, 72, 75, 72, 59, 71, 77, 74, 73, 74, 69, 60, 79, 77, + 73, 74, 82, 83, 72, 58, 55, 53, 46, 40, 37, 38, 31, 22, 18, 25, + 17, 24, 57, 110, 100, 255, 255, 255, 255, 255, 255, 255, 255, 87, 88, 91, + 94, 90, 88, 89, 85, 76, 67, 68, 75, 67, 61, 58, 57, 52, 47, 54, + 66, 79, 70, 75, 76, 71, 74, 81, 76, 68, 63, 56, 52, 52, 53, 57, + 58, 52, 47, 47, 51, 55, 57, 62, 65, 62, 64, 68, 71, 72, 68, 63, + 58, 49, 54, 58, 55, 53, 54, 56, 51, 36, 40, 45, 51, 54, 57, 56, + 57, 64, 62, 62, 60, 60, 56, 54, 50, 52, 54, 53, 54, 53, 50, 45, + 42, 53, 58, 63, 62, 65, 72, 78, 81, 66, 73, 79, 81, 84, 85, 80, + 74, 72, 70, 65, 64, 70, 73, 67, 57, 53, 44, 37, 36, 37, 36, 28, + 20, 20, 21, 21, 26, 78, 110, 99, 255, 255, 255, 255, 255, 255, 255, 198, + 90, 94, 90, 81, 90, 99, 101, 87, 73, 70, 72, 73, 75, 79, 70, 54, + 50, 60, 68, 67, 80, 72, 76, 78, 73, 77, 83, 78, 75, 70, 62, 56, + 55, 58, 63, 64, 58, 59, 59, 58, 62, 69, 73, 71, 73, 73, 74, 76, + 78, 77, 74, 70, 68, 73, 74, 70, 67, 68, 69, 68, 61, 64, 69, 72, + 72, 70, 67, 62, 72, 67, 65, 62, 63, 61, 58, 55, 56, 54, 53, 54, + 54, 51, 46, 43, 48, 56, 63, 61, 61, 68, 77, 83, 88, 80, 74, 77, + 85, 91, 97, 103, 99, 97, 90, 83, 82, 81, 73, 64, 56, 44, 38, 41, + 40, 33, 27, 27, 24, 15, 23, 23, 96, 107, 101, 255, 255, 255, 255, 255, + 255, 255, 85, 79, 82, 84, 79, 87, 99, 96, 74, 70, 84, 86, 71, 71, + 85, 74, 44, 42, 71, 82, 69, 76, 71, 76, 79, 75, 78, 83, 78, 79, + 73, 65, 57, 57, 61, 64, 66, 64, 68, 65, 60, 61, 70, 71, 67, 72, + 71, 70, 73, 76, 77, 75, 72, 72, 76, 76, 70, 67, 69, 73, 73, 71, + 69, 69, 68, 68, 65, 65, 65, 67, 61, 58, 56, 59, 61, 61, 60, 57, + 56, 54, 52, 53, 51, 49, 45, 41, 52, 59, 56, 55, 60, 72, 81, 92, + 78, 70, 77, 87, 91, 98, 107, 110, 109, 102, 92, 87, 82, 74, 66, 63, + 50, 46, 51, 45, 33, 30, 37, 29, 12, 24, 19, 105, 105, 105, 255, 255, + 255, 255, 255, 255, 255, 79, 84, 79, 81, 89, 89, 107, 102, 67, 87, 73, + 79, 91, 78, 78, 72, 60, 62, 76, 78, 68, 83, 77, 74, 73, 77, 79, + 82, 82, 83, 77, 75, 72, 70, 66, 67, 73, 64, 69, 73, 75, 77, 81, + 80, 79, 77, 76, 75, 76, 78, 80, 79, 78, 82, 82, 82, 82, 82, 80, + 75, 70, 69, 68, 68, 69, 70, 66, 61, 56, 60, 63, 65, 64, 65, 64, + 59, 54, 58, 57, 60, 61, 57, 49, 47, 50, 52, 50, 56, 56, 45, 47, + 65, 78, 83, 88, 82, 70, 75, 90, 96, 89, 116, 112, 111, 111, 111, 98, + 76, 59, 60, 58, 50, 41, 37, 39, 35, 27, 27, 46, 19, 22, 88, 112, + 98, 161, 255, 255, 255, 255, 255, 73, 78, 82, 80, 81, 85, 88, 86, 85, + 75, 103, 91, 92, 97, 80, 68, 64, 71, 81, 85, 88, 89, 86, 85, 83, + 84, 87, 88, 89, 87, 83, 79, 77, 78, 75, 70, 72, 75, 70, 75, 80, + 81, 86, 91, 91, 88, 84, 83, 82, 83, 83, 84, 83, 82, 84, 83, 82, + 80, 82, 78, 76, 71, 73, 70, 68, 67, 68, 67, 63, 60, 56, 59, 59, + 59, 60, 65, 64, 62, 55, 55, 57, 60, 57, 50, 49, 51, 56, 49, 52, + 51, 43, 46, 61, 69, 78, 85, 84, 76, 76, 85, 91, 91, 102, 110, 118, + 118, 110, 96, 86, 81, 57, 58, 54, 46, 40, 40, 35, 28, 26, 40, 20, + 26, 81, 107, 102, 113, 255, 255, 255, 255, 197, 81, 83, 85, 86, 86, 84, + 85, 68, 72, 86, 114, 107, 105, 99, 84, 63, 65, 90, 104, 97, 97, 107, + 83, 83, 85, 87, 89, 89, 88, 84, 83, 78, 77, 79, 80, 76, 75, 77, + 77, 83, 88, 88, 91, 95, 94, 93, 90, 89, 86, 87, 89, 90, 87, 85, + 87, 85, 83, 81, 82, 80, 78, 75, 77, 74, 70, 68, 68, 68, 67, 66, + 67, 67, 64, 60, 60, 64, 63, 59, 55, 54, 57, 58, 56, 50, 50, 54, + 60, 49, 49, 48, 42, 45, 55, 57, 74, 81, 86, 85, 82, 80, 84, 89, + 90, 88, 89, 94, 99, 93, 79, 66, 57, 60, 58, 51, 42, 38, 34, 29, + 23, 28, 20, 28, 67, 98, 105, 109, 255, 255, 255, 255, 83, 88, 83, 82, + 86, 86, 80, 79, 70, 82, 97, 107, 109, 110, 97, 78, 68, 79, 103, 115, + 105, 100, 108, 95, 91, 93, 93, 96, 96, 96, 92, 85, 78, 76, 78, 81, + 79, 79, 81, 83, 87, 91, 90, 90, 92, 90, 88, 91, 90, 87, 88, 89, + 90, 87, 86, 90, 87, 83, 82, 82, 81, 80, 78, 78, 76, 74, 72, 70, + 69, 68, 67, 73, 73, 69, 63, 62, 64, 62, 57, 57, 54, 56, 58, 56, + 50, 51, 53, 62, 51, 49, 48, 39, 39, 48, 52, 71, 77, 87, 94, 92, + 82, 78, 81, 100, 96, 95, 100, 106, 102, 89, 78, 66, 67, 64, 55, 42, + 35, 32, 31, 21, 19, 19, 29, 52, 86, 106, 104, 255, 255, 255, 255, 82, + 84, 75, 72, 77, 79, 73, 72, 88, 105, 106, 96, 108, 112, 101, 63, 76, + 97, 110, 113, 108, 103, 102, 95, 92, 90, 89, 92, 93, 96, 93, 90, 81, + 79, 80, 83, 83, 86, 89, 82, 87, 90, 88, 89, 90, 90, 86, 93, 91, + 90, 91, 90, 91, 88, 86, 90, 87, 84, 83, 81, 80, 79, 77, 73, 74, + 75, 74, 73, 70, 67, 65, 64, 66, 66, 64, 66, 69, 67, 61, 61, 57, + 58, 57, 53, 47, 48, 52, 61, 54, 56, 53, 40, 37, 46, 52, 70, 75, + 86, 98, 102, 91, 79, 75, 70, 85, 97, 94, 82, 74, 80, 89, 79, 76, + 69, 58, 44, 35, 34, 36, 26, 19, 21, 28, 44, 80, 106, 103, 255, 255, + 255, 195, 80, 80, 71, 69, 75, 78, 75, 73, 105, 115, 110, 98, 115, 111, + 104, 55, 83, 109, 114, 110, 111, 109, 103, 95, 91, 88, 88, 88, 92, 93, + 92, 97, 85, 83, 85, 88, 88, 91, 93, 80, 85, 89, 90, 91, 95, 96, + 92, 97, 96, 95, 95, 94, 94, 93, 89, 90, 87, 85, 84, 82, 81, 79, + 77, 73, 75, 77, 76, 75, 70, 66, 65, 64, 66, 65, 63, 64, 66, 63, + 56, 61, 59, 57, 57, 53, 47, 48, 51, 58, 53, 58, 59, 43, 39, 49, + 53, 67, 74, 86, 97, 104, 100, 90, 81, 79, 88, 97, 96, 90, 86, 91, + 98, 83, 75, 66, 58, 46, 39, 38, 41, 35, 27, 24, 26, 42, 78, 104, + 105, 255, 255, 255, 73, 72, 72, 71, 73, 77, 81, 82, 84, 109, 101, 108, + 113, 125, 99, 94, 67, 90, 112, 115, 111, 113, 112, 108, 105, 103, 102, 101, + 104, 106, 105, 102, 96, 87, 85, 90, 96, 94, 90, 89, 83, 88, 92, 92, + 97, 100, 100, 96, 101, 102, 98, 99, 100, 98, 96, 93, 91, 89, 87, 87, + 85, 83, 78, 75, 76, 78, 79, 76, 74, 70, 68, 69, 73, 73, 69, 64, + 62, 64, 62, 56, 60, 56, 56, 57, 54, 48, 48, 54, 60, 53, 58, 63, + 52, 49, 55, 54, 61, 75, 86, 91, 99, 106, 105, 99, 93, 85, 78, 77, + 82, 80, 73, 64, 69, 60, 53, 51, 45, 40, 39, 42, 41, 35, 22, 19, + 40, 74, 97, 104, 152, 255, 76, 63, 60, 61, 66, 72, 76, 80, 83, 97, + 107, 83, 103, 124, 129, 83, 78, 83, 96, 112, 115, 114, 113, 112, 112, 92, + 91, 92, 93, 96, 94, 94, 89, 91, 85, 85, 92, 98, 94, 87, 83, 88, + 92, 95, 94, 97, 100, 98, 94, 103, 101, 100, 100, 101, 99, 97, 96, 91, + 90, 89, 90, 88, 85, 81, 77, 80, 81, 82, 77, 72, 69, 71, 73, 72, + 72, 68, 63, 65, 71, 73, 70, 61, 57, 57, 59, 56, 52, 52, 56, 62, + 52, 58, 64, 61, 60, 59, 54, 54, 76, 88, 86, 92, 110, 119, 117, 119, + 115, 107, 96, 84, 73, 66, 61, 51, 43, 39, 43, 42, 39, 36, 38, 45, + 38, 19, 12, 37, 70, 90, 99, 104, 255, 75, 71, 69, 70, 72, 71, 75, + 86, 95, 97, 80, 93, 113, 115, 109, 93, 60, 89, 106, 105, 104, 100, 100, + 113, 105, 85, 95, 98, 90, 89, 92, 89, 79, 81, 77, 80, 87, 99, 102, + 89, 71, 91, 87, 89, 95, 98, 97, 97, 100, 106, 105, 103, 102, 106, 108, + 110, 108, 97, 96, 95, 95, 95, 93, 89, 86, 81, 82, 83, 82, 80, 77, + 73, 71, 78, 68, 56, 49, 46, 50, 62, 75, 67, 62, 57, 57, 59, 58, + 52, 47, 57, 65, 71, 70, 64, 59, 59, 62, 54, 67, 81, 90, 97, 106, + 115, 120, 137, 135, 122, 100, 86, 79, 65, 51, 47, 46, 44, 39, 36, 35, + 36, 38, 38, 34, 44, 21, 20, 71, 100, 96, 99, 76, 64, 78, 77, 82, + 85, 86, 81, 83, 85, 68, 75, 91, 124, 104, 108, 91, 78, 83, 102, 108, + 115, 112, 103, 108, 96, 103, 109, 106, 95, 92, 98, 100, 95, 88, 85, 83, + 83, 88, 95, 95, 89, 93, 89, 92, 98, 102, 102, 102, 105, 109, 111, 115, + 117, 120, 119, 115, 109, 100, 97, 94, 90, 89, 87, 85, 82, 83, 84, 84, + 83, 80, 77, 73, 71, 79, 71, 63, 57, 53, 53, 61, 70, 68, 64, 58, + 57, 59, 59, 57, 54, 56, 63, 72, 70, 63, 60, 66, 73, 67, 69, 79, + 95, 99, 95, 100, 112, 110, 111, 104, 95, 86, 79, 68, 58, 56, 49, 45, + 41, 42, 41, 40, 38, 27, 28, 45, 24, 27, 77, 102, 101, 104, 86, 80, + 76, 74, 81, 87, 90, 83, 81, 82, 66, 86, 94, 134, 97, 105, 78, 75, + 92, 101, 100, 107, 104, 96, 105, 101, 99, 104, 102, 92, 88, 93, 94, 90, + 96, 96, 95, 87, 83, 86, 91, 93, 92, 88, 92, 98, 104, 104, 106, 108, + 115, 119, 122, 124, 125, 122, 117, 110, 109, 103, 97, 92, 90, 89, 87, 85, + 89, 89, 89, 87, 85, 81, 78, 76, 78, 73, 69, 66, 62, 59, 62, 68, + 69, 66, 61, 58, 56, 56, 56, 56, 57, 63, 71, 68, 62, 62, 69, 79, + 70, 64, 76, 101, 108, 96, 97, 112, 104, 103, 102, 101, 92, 79, 68, 63, + 66, 55, 48, 44, 47, 45, 41, 34, 25, 30, 46, 28, 35, 81, 100, 99, + 102, 77, 73, 84, 77, 79, 84, 86, 80, 80, 84, 86, 101, 103, 132, 105, + 101, 68, 60, 97, 101, 96, 102, 99, 91, 103, 103, 98, 105, 108, 104, 101, + 99, 95, 88, 89, 94, 99, 95, 90, 90, 91, 90, 87, 84, 88, 96, 102, + 104, 106, 111, 116, 114, 113, 112, 113, 111, 109, 107, 112, 107, 102, 97, 97, + 93, 91, 89, 92, 91, 90, 88, 86, 82, 79, 78, 78, 75, 73, 72, 68, + 64, 65, 70, 70, 70, 65, 60, 54, 51, 50, 51, 61, 63, 68, 67, 65, + 64, 67, 71, 72, 70, 82, 107, 117, 107, 102, 107, 115, 111, 109, 111, 101, + 84, 74, 75, 72, 63, 56, 50, 49, 44, 39, 33, 28, 30, 39, 26, 45, + 91, 103, 101, 101, 79, 80, 96, 87, 88, 93, 92, 82, 81, 86, 94, 108, + 118, 125, 113, 91, 70, 65, 91, 102, 102, 112, 108, 94, 95, 84, 95, 101, + 105, 104, 100, 98, 93, 88, 80, 84, 92, 94, 96, 99, 98, 93, 86, 83, + 88, 96, 103, 105, 108, 113, 110, 110, 110, 112, 115, 115, 114, 113, 110, 107, + 106, 104, 106, 102, 99, 96, 93, 92, 90, 87, 84, 81, 79, 77, 85, 81, + 77, 75, 70, 64, 65, 70, 68, 68, 64, 60, 55, 51, 49, 49, 62, 60, + 63, 66, 69, 69, 65, 62, 77, 83, 94, 109, 118, 115, 102, 91, 111, 105, + 102, 106, 100, 88, 82, 85, 74, 69, 66, 58, 51, 43, 40, 38, 32, 29, + 29, 19, 54, 103, 109, 109, 108, 90, 96, 83, 79, 88, 99, 99, 87, 87, + 96, 98, 121, 135, 122, 105, 71, 65, 76, 89, 101, 97, 98, 93, 86, 89, + 74, 93, 94, 94, 92, 90, 89, 90, 90, 92, 91, 91, 89, 92, 96, 95, + 89, 89, 87, 91, 100, 107, 109, 112, 118, 114, 118, 125, 133, 138, 137, 133, + 127, 113, 113, 115, 115, 117, 117, 114, 109, 102, 101, 99, 96, 92, 89, 87, + 86, 93, 88, 83, 79, 72, 65, 64, 68, 66, 65, 60, 58, 56, 55, 54, + 54, 59, 58, 62, 66, 70, 70, 65, 61, 73, 80, 89, 102, 116, 120, 108, + 92, 102, 95, 88, 87, 83, 78, 73, 71, 69, 67, 66, 59, 52, 45, 45, + 44, 46, 40, 31, 19, 57, 102, 102, 104, 110, 79, 86, 74, 71, 82, 93, + 92, 81, 87, 103, 106, 132, 129, 120, 91, 68, 54, 76, 83, 97, 88, 80, + 80, 87, 97, 80, 97, 98, 99, 99, 97, 96, 97, 98, 100, 98, 97, 92, + 90, 92, 90, 85, 92, 90, 94, 103, 110, 112, 115, 121, 122, 128, 135, 141, + 145, 141, 135, 129, 118, 117, 117, 119, 122, 124, 123, 120, 114, 110, 107, 104, + 100, 98, 96, 95, 92, 89, 87, 85, 79, 71, 69, 72, 73, 67, 57, 54, + 55, 58, 60, 60, 62, 63, 68, 68, 66, 64, 64, 65, 75, 71, 76, 97, + 116, 120, 114, 107, 96, 91, 80, 72, 70, 69, 59, 48, 56, 53, 53, 51, + 50, 48, 47, 44, 49, 47, 39, 24, 60, 98, 96, 104, 108, 88, 99, 92, + 83, 86, 88, 80, 68, 80, 101, 109, 131, 105, 113, 83, 82, 54, 76, 65, + 91, 93, 91, 95, 105, 109, 83, 81, 85, 91, 96, 95, 90, 86, 85, 86, + 91, 98, 97, 96, 97, 95, 91, 93, 90, 95, 103, 110, 113, 115, 121, 126, + 127, 124, 124, 124, 123, 117, 114, 114, 112, 110, 110, 114, 117, 119, 117, 113, + 109, 106, 102, 99, 96, 94, 94, 86, 85, 87, 89, 86, 79, 76, 79, 84, + 73, 58, 52, 54, 59, 61, 62, 67, 71, 77, 70, 61, 56, 60, 67, 92, + 73, 71, 97, 116, 113, 108, 113, 89, 87, 76, 67, 68, 72, 61, 43, 44, + 38, 37, 40, 46, 48, 46, 40, 33, 40, 38, 26, 63, 102, 103, 119, 108, + 90, 82, 70, 86, 90, 87, 89, 74, 78, 109, 119, 121, 109, 117, 88, 75, + 56, 61, 81, 82, 89, 95, 96, 92, 86, 82, 90, 87, 87, 91, 93, 91, + 93, 96, 85, 87, 93, 94, 94, 93, 94, 95, 95, 95, 99, 104, 109, 113, + 113, 115, 131, 128, 122, 122, 124, 124, 117, 112, 109, 107, 105, 108, 114, 118, + 119, 117, 115, 112, 109, 104, 100, 97, 91, 86, 92, 91, 89, 85, 81, 79, + 79, 80, 80, 68, 58, 51, 47, 56, 64, 56, 71, 75, 78, 71, 65, 65, + 66, 66, 71, 87, 67, 102, 101, 110, 115, 106, 93, 79, 75, 64, 67, 75, + 57, 50, 42, 40, 41, 38, 38, 38, 42, 44, 44, 36, 38, 29, 57, 103, + 109, 109, 109, 90, 80, 68, 72, 66, 63, 75, 74, 85, 112, 106, 113, 109, + 103, 78, 64, 58, 64, 85, 84, 88, 90, 90, 86, 82, 79, 86, 85, 87, + 92, 94, 91, 90, 92, 90, 91, 96, 97, 97, 95, 96, 97, 90, 90, 94, + 98, 104, 109, 111, 114, 125, 124, 120, 119, 119, 114, 106, 99, 108, 107, 109, + 113, 119, 122, 121, 117, 113, 111, 108, 103, 98, 92, 85, 80, 91, 93, 93, + 91, 86, 82, 79, 78, 87, 74, 64, 57, 53, 62, 69, 61, 66, 71, 74, + 67, 62, 62, 63, 64, 94, 100, 80, 94, 91, 106, 102, 93, 108, 95, 89, + 71, 65, 69, 50, 44, 46, 43, 44, 41, 39, 37, 39, 39, 44, 38, 40, + 30, 55, 99, 108, 110, 113, 91, 82, 72, 65, 52, 51, 71, 81, 92, 107, + 96, 105, 109, 86, 69, 55, 64, 69, 83, 80, 83, 84, 85, 84, 82, 81, + 84, 83, 87, 93, 94, 90, 88, 88, 90, 91, 95, 96, 94, 93, 93, 94, + 91, 90, 91, 94, 99, 104, 108, 111, 118, 116, 116, 117, 117, 114, 106, 99, + 97, 99, 103, 106, 110, 111, 109, 105, 109, 108, 108, 106, 101, 94, 88, 85, + 91, 94, 97, 97, 93, 86, 81, 79, 92, 79, 68, 61, 57, 66, 72, 64, + 61, 66, 70, 63, 59, 60, 61, 62, 90, 93, 90, 86, 86, 110, 95, 88, + 100, 92, 92, 75, 67, 69, 53, 51, 48, 45, 45, 42, 40, 37, 35, 34, + 41, 38, 42, 29, 50, 93, 103, 108, 113, 87, 80, 79, 72, 65, 65, 80, + 90, 94, 95, 88, 95, 100, 65, 60, 47, 66, 65, 73, 72, 77, 82, 86, + 87, 87, 87, 86, 84, 86, 91, 92, 89, 88, 90, 87, 87, 91, 91, 89, + 87, 88, 88, 95, 92, 92, 93, 97, 102, 106, 109, 115, 115, 113, 113, 113, + 108, 103, 99, 103, 102, 105, 105, 109, 108, 106, 105, 97, 98, 101, 104, 102, + 96, 93, 93, 91, 94, 98, 98, 95, 90, 86, 85, 91, 77, 66, 59, 55, + 65, 70, 61, 60, 65, 69, 63, 59, 60, 63, 64, 72, 80, 100, 85, 86, + 110, 89, 84, 78, 79, 89, 79, 72, 72, 54, 51, 43, 40, 41, 40, 40, + 37, 35, 32, 36, 34, 39, 24, 42, 83, 95, 103, 106, 80, 76, 83, 80, + 81, 77, 81, 90, 94, 86, 84, 83, 81, 49, 51, 45, 62, 58, 66, 67, + 75, 83, 89, 91, 90, 89, 91, 87, 86, 89, 90, 88, 90, 93, 89, 89, + 92, 91, 88, 87, 88, 89, 92, 89, 89, 90, 95, 102, 107, 111, 117, 114, + 109, 105, 101, 96, 92, 90, 97, 95, 95, 92, 94, 92, 92, 93, 86, 86, + 90, 96, 94, 88, 88, 92, 91, 93, 95, 94, 93, 91, 91, 92, 89, 74, + 61, 55, 53, 64, 68, 58, 62, 67, 71, 65, 62, 63, 66, 66, 72, 84, + 110, 86, 83, 97, 83, 81, 70, 74, 90, 84, 77, 72, 46, 38, 36, 33, + 34, 35, 39, 38, 37, 34, 30, 29, 34, 18, 34, 75, 88, 96, 99, 196, + 81, 81, 80, 85, 76, 71, 82, 93, 82, 85, 78, 67, 49, 51, 52, 62, + 60, 69, 70, 77, 85, 89, 89, 87, 86, 93, 88, 86, 87, 88, 87, 91, + 95, 94, 93, 95, 94, 92, 91, 93, 94, 85, 83, 84, 88, 95, 102, 108, + 111, 110, 110, 106, 101, 100, 100, 101, 100, 90, 88, 87, 85, 83, 82, 84, + 86, 90, 88, 90, 95, 90, 82, 82, 89, 91, 92, 91, 90, 88, 89, 92, + 94, 88, 72, 60, 54, 54, 65, 70, 58, 63, 68, 73, 67, 63, 64, 67, + 67, 77, 87, 104, 81, 81, 85, 91, 92, 68, 70, 84, 83, 82, 79, 50, + 36, 33, 29, 29, 31, 37, 38, 38, 34, 28, 26, 30, 14, 31, 72, 85, + 93, 97, 255, 88, 76, 77, 86, 77, 66, 80, 91, 74, 79, 71, 55, 54, + 49, 56, 60, 67, 74, 73, 77, 82, 85, 85, 85, 84, 91, 87, 86, 88, + 88, 87, 88, 92, 92, 91, 93, 92, 90, 90, 92, 94, 87, 85, 87, 90, + 96, 103, 108, 110, 108, 108, 108, 105, 104, 104, 105, 104, 96, 98, 100, 98, + 96, 94, 96, 98, 98, 93, 94, 96, 89, 79, 80, 89, 91, 91, 90, 88, + 86, 85, 87, 89, 87, 71, 58, 54, 55, 67, 71, 59, 63, 68, 72, 66, + 61, 62, 64, 65, 73, 81, 86, 77, 88, 79, 100, 94, 71, 65, 72, 71, + 79, 84, 58, 44, 38, 32, 30, 30, 35, 36, 35, 32, 31, 27, 29, 14, + 33, 75, 87, 94, 97, 255, 85, 73, 76, 91, 86, 72, 83, 89, 64, 66, + 59, 43, 54, 40, 51, 53, 69, 73, 73, 75, 78, 81, 83, 85, 86, 87, + 85, 85, 89, 89, 86, 86, 88, 85, 84, 87, 86, 84, 84, 87, 89, 95, + 93, 92, 93, 99, 101, 105, 106, 116, 116, 114, 108, 101, 95, 91, 87, 84, + 89, 93, 94, 92, 90, 90, 91, 96, 91, 90, 92, 85, 74, 76, 88, 90, + 91, 91, 88, 85, 82, 83, 83, 85, 69, 56, 52, 54, 67, 71, 59, 62, + 66, 68, 63, 59, 60, 62, 62, 68, 76, 75, 77, 93, 71, 94, 76, 80, + 66, 64, 59, 71, 79, 57, 43, 42, 36, 32, 30, 34, 36, 33, 29, 36, + 31, 30, 16, 36, 79, 92, 96, 98, 255, 73, 66, 76, 83, 78, 71, 70, + 71, 69, 46, 48, 53, 53, 53, 53, 59, 59, 58, 59, 66, 71, 74, 77, + 79, 81, 81, 86, 90, 91, 88, 86, 87, 89, 85, 85, 85, 85, 85, 85, + 85, 85, 88, 87, 87, 90, 96, 101, 106, 108, 115, 104, 98, 99, 94, 80, + 79, 89, 89, 91, 92, 94, 93, 93, 91, 92, 94, 101, 102, 96, 91, 90, + 90, 88, 88, 91, 94, 91, 86, 83, 86, 90, 82, 81, 59, 58, 49, 69, + 63, 60, 59, 70, 73, 65, 59, 61, 68, 72, 72, 68, 65, 66, 67, 68, + 74, 83, 78, 66, 70, 69, 54, 50, 52, 37, 41, 34, 32, 35, 39, 37, + 31, 26, 22, 33, 47, 32, 39, 75, 88, 101, 94, 255, 255, 71, 77, 84, + 81, 73, 62, 57, 56, 48, 50, 50, 50, 54, 58, 63, 63, 56, 58, 65, + 70, 73, 75, 77, 79, 76, 77, 79, 83, 87, 90, 91, 91, 86, 86, 87, + 87, 87, 86, 86, 85, 89, 87, 85, 85, 86, 89, 91, 93, 101, 96, 94, + 98, 95, 90, 90, 97, 102, 103, 103, 104, 104, 100, 98, 99, 86, 93, 94, + 90, 86, 86, 86, 83, 84, 87, 88, 86, 82, 81, 82, 84, 77, 77, 59, + 58, 52, 70, 61, 56, 58, 66, 73, 68, 62, 63, 66, 66, 69, 68, 67, + 65, 66, 69, 71, 70, 63, 56, 57, 60, 58, 60, 63, 56, 47, 40, 34, + 35, 40, 41, 39, 36, 35, 38, 43, 27, 35, 70, 85, 97, 101, 255, 255, + 72, 73, 81, 84, 76, 55, 44, 43, 50, 49, 47, 48, 55, 63, 68, 67, + 59, 60, 66, 71, 74, 76, 78, 80, 77, 75, 75, 81, 90, 95, 94, 92, + 91, 92, 93, 93, 93, 91, 89, 88, 91, 89, 86, 84, 83, 83, 85, 88, + 93, 95, 96, 97, 97, 99, 99, 101, 92, 92, 93, 91, 90, 87, 85, 83, + 84, 89, 91, 88, 86, 87, 86, 83, 81, 81, 81, 80, 79, 78, 78, 80, + 71, 72, 56, 58, 54, 73, 61, 53, 58, 64, 72, 71, 67, 66, 63, 60, + 65, 69, 67, 63, 65, 70, 67, 56, 73, 70, 60, 55, 63, 62, 58, 60, + 45, 40, 36, 35, 39, 42, 39, 34, 34, 35, 44, 36, 49, 81, 86, 93, + 104, 255, 255, 193, 65, 74, 85, 80, 55, 41, 40, 50, 48, 47, 51, 60, + 68, 71, 68, 61, 62, 68, 73, 75, 77, 79, 81, 79, 80, 82, 88, 92, + 94, 91, 88, 89, 90, 91, 92, 91, 89, 87, 86, 88, 88, 87, 86, 86, + 88, 91, 96, 99, 104, 104, 100, 98, 101, 99, 95, 95, 93, 93, 93, 91, + 89, 87, 86, 88, 92, 93, 90, 89, 90, 89, 85, 84, 82, 80, 79, 80, + 79, 78, 78, 72, 74, 58, 61, 56, 74, 62, 55, 60, 64, 68, 70, 68, + 65, 61, 57, 61, 70, 67, 58, 62, 70, 63, 49, 83, 84, 66, 57, 67, + 63, 51, 55, 43, 41, 39, 39, 40, 41, 34, 25, 29, 24, 36, 35, 53, + 84, 88, 97, 132, 255, 255, 255, 62, 71, 84, 82, 60, 46, 44, 50, 50, + 51, 56, 66, 71, 70, 65, 61, 61, 67, 72, 74, 76, 78, 79, 75, 82, + 90, 94, 93, 90, 87, 86, 84, 85, 85, 86, 85, 84, 82, 81, 84, 86, + 87, 87, 87, 90, 95, 101, 104, 109, 107, 100, 96, 97, 95, 88, 98, 99, + 97, 97, 97, 97, 97, 96, 93, 95, 94, 89, 88, 90, 88, 84, 85, 83, + 81, 80, 80, 79, 76, 76, 75, 78, 62, 62, 55, 74, 63, 58, 63, 63, + 64, 66, 64, 62, 61, 59, 63, 71, 69, 58, 61, 70, 66, 54, 67, 72, + 58, 53, 68, 65, 56, 62, 50, 48, 41, 35, 35, 39, 32, 25, 33, 21, + 25, 20, 36, 65, 75, 91, 218, 255, 255, 255, 255, 72, 81, 83, 68, 55, + 50, 53, 55, 57, 62, 67, 70, 68, 63, 60, 60, 66, 70, 72, 74, 76, + 77, 71, 80, 90, 94, 92, 88, 86, 86, 88, 88, 88, 88, 88, 88, 88, + 88, 85, 87, 88, 87, 85, 86, 91, 98, 102, 102, 100, 98, 94, 92, 92, + 92, 96, 97, 97, 96, 97, 98, 99, 99, 100, 100, 96, 91, 91, 94, 93, + 89, 86, 85, 84, 81, 78, 75, 74, 75, 77, 84, 71, 68, 56, 71, 64, + 60, 61, 60, 61, 61, 60, 55, 57, 63, 69, 72, 70, 62, 60, 64, 64, + 58, 51, 53, 48, 46, 54, 56, 55, 58, 54, 47, 35, 26, 27, 38, 39, + 32, 33, 26, 38, 36, 40, 51, 49, 64, 255, 255, 255, 255, 255, 74, 78, + 83, 78, 69, 60, 58, 61, 63, 64, 65, 66, 66, 63, 62, 64, 70, 74, + 76, 78, 79, 81, 79, 83, 89, 93, 94, 93, 91, 90, 96, 95, 94, 94, + 94, 96, 98, 100, 95, 97, 98, 94, 90, 89, 94, 98, 100, 93, 92, 96, + 97, 93, 95, 102, 110, 110, 110, 108, 109, 111, 112, 112, 103, 102, 96, 90, + 92, 97, 98, 95, 90, 91, 90, 86, 79, 74, 74, 77, 77, 87, 78, 74, + 57, 67, 59, 59, 55, 56, 60, 61, 58, 51, 55, 62, 67, 70, 71, 66, + 59, 54, 55, 56, 50, 44, 46, 44, 37, 42, 49, 48, 48, 45, 37, 31, + 36, 52, 55, 48, 37, 35, 51, 48, 42, 41, 37, 55, 255, 255, 255, 255, + 255, 195, 75, 83, 87, 81, 70, 63, 66, 66, 64, 62, 62, 64, 65, 69, + 69, 75, 79, 81, 82, 84, 85, 92, 90, 88, 91, 95, 97, 94, 91, 94, + 93, 91, 90, 91, 94, 98, 100, 104, 106, 106, 102, 97, 96, 100, 105, 103, + 92, 90, 100, 101, 95, 99, 112, 110, 109, 109, 109, 110, 108, 111, 110, 100, + 95, 91, 83, 88, 94, 99, 94, 96, 97, 99, 91, 84, 76, 78, 81, 74, + 89, 83, 81, 60, 66, 57, 55, 50, 53, 60, 63, 58, 50, 54, 62, 64, + 66, 68, 66, 56, 44, 44, 49, 50, 39, 44, 42, 27, 32, 50, 45, 43, + 47, 48, 50, 59, 72, 70, 59, 49, 38, 41, 29, 19, 27, 42, 77, 255, + 255, 255, 255, 255, 255, 195, 82, 85, 79, 68, 71, 57, 65, 62, 63, 73, + 65, 60, 68, 66, 70, 75, 80, 86, 89, 92, 91, 90, 90, 90, 90, 91, + 92, 92, 85, 91, 93, 91, 92, 98, 103, 104, 102, 106, 109, 105, 98, 96, + 100, 106, 101, 90, 89, 99, 101, 95, 101, 116, 118, 118, 115, 113, 117, 119, + 116, 106, 106, 99, 97, 95, 96, 92, 96, 99, 95, 95, 98, 91, 84, 74, + 75, 78, 78, 91, 90, 91, 65, 50, 58, 51, 65, 46, 61, 57, 59, 61, + 46, 63, 70, 70, 70, 64, 56, 49, 47, 48, 39, 35, 37, 35, 30, 37, + 43, 31, 37, 40, 53, 70, 80, 78, 65, 53, 41, 46, 35, 23, 23, 33, + 57, 85, 255, 255, 255, 255, 255, 255, 255, 79, 80, 75, 66, 72, 63, 67, + 62, 70, 78, 64, 65, 71, 69, 73, 78, 82, 86, 89, 90, 85, 85, 85, + 87, 91, 94, 96, 96, 95, 97, 97, 96, 99, 105, 105, 101, 95, 97, 97, + 95, 91, 92, 97, 102, 100, 89, 89, 101, 105, 99, 102, 114, 118, 115, 112, + 111, 111, 112, 113, 114, 109, 104, 101, 102, 100, 98, 99, 103, 105, 89, 82, + 89, 89, 77, 69, 71, 90, 52, 97, 91, 60, 70, 53, 61, 62, 50, 57, + 58, 58, 53, 47, 57, 68, 67, 65, 66, 68, 59, 43, 31, 12, 18, 28, + 31, 31, 38, 46, 40, 54, 57, 67, 76, 76, 70, 64, 61, 53, 50, 32, + 22, 31, 46, 69, 94, 255, 255, 255, 255, 255, 255, 255, 255, 85, 82, 76, + 74, 72, 67, 57, 73, 77, 56, 64, 72, 72, 76, 80, 84, 86, 87, 88, + 91, 90, 90, 93, 98, 102, 104, 104, 102, 102, 101, 100, 104, 108, 104, 96, + 96, 94, 91, 90, 91, 95, 101, 104, 95, 85, 87, 101, 109, 105, 105, 110, + 116, 112, 112, 113, 107, 101, 107, 118, 115, 111, 109, 109, 108, 103, 103, 106, + 97, 91, 86, 82, 76, 70, 68, 73, 93, 56, 83, 68, 65, 78, 50, 52, + 57, 56, 51, 59, 58, 45, 51, 54, 72, 70, 62, 56, 49, 37, 20, 10, + 19, 28, 37, 42, 46, 53, 59, 57, 72, 71, 76, 77, 68, 60, 62, 71, + 66, 56, 33, 20, 32, 52, 75, 97, 255, 255, 255, 255, 255, 255, 255, 255, + 203, 99, 98, 83, 84, 69, 51, 70, 70, 43, 59, 72, 72, 75, 79, 81, + 82, 82, 81, 95, 93, 91, 93, 97, 100, 100, 98, 95, 98, 99, 98, 99, + 100, 96, 90, 98, 92, 86, 85, 89, 95, 100, 101, 92, 82, 84, 100, 110, + 107, 103, 102, 109, 106, 111, 115, 105, 88, 93, 107, 114, 111, 109, 111, 109, + 104, 103, 105, 87, 97, 97, 85, 78, 79, 74, 63, 53, 75, 68, 60, 80, + 63, 61, 47, 47, 56, 44, 60, 61, 45, 61, 55, 67, 65, 55, 34, 16, + 9, 16, 25, 42, 49, 49, 49, 61, 70, 72, 74, 75, 67, 67, 67, 59, + 50, 60, 76, 74, 70, 47, 28, 32, 46, 70, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 107, 108, 98, 98, 79, 55, 68, 65, 40, 57, 74, 73, + 75, 77, 79, 79, 79, 79, 88, 84, 81, 82, 85, 87, 85, 83, 82, 91, + 98, 96, 93, 93, 93, 93, 96, 89, 81, 79, 83, 89, 93, 94, 91, 81, + 83, 96, 107, 105, 99, 94, 96, 97, 107, 113, 100, 76, 72, 82, 85, 82, + 83, 87, 88, 86, 87, 90, 116, 108, 100, 94, 86, 76, 72, 76, 80, 61, + 70, 75, 74, 51, 77, 59, 42, 52, 41, 58, 63, 50, 63, 56, 44, 41, + 31, 18, 11, 21, 42, 61, 57, 60, 47, 42, 60, 70, 69, 75, 69, 55, + 52, 58, 57, 50, 60, 78, 80, 83, 67, 41, 31, 35, 60, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 202, 99, 107, 104, 92, 68, 69, 65, 45, + 59, 76, 74, 74, 75, 76, 77, 78, 78, 80, 74, 70, 70, 74, 76, 73, + 68, 68, 81, 92, 91, 88, 90, 95, 99, 98, 91, 84, 81, 84, 88, 91, + 93, 92, 84, 84, 93, 101, 100, 95, 90, 85, 87, 96, 99, 87, 66, 55, + 57, 52, 50, 53, 58, 63, 64, 69, 73, 71, 55, 62, 82, 86, 94, 157, + 234, 224, 59, 79, 77, 55, 63, 87, 60, 47, 49, 43, 53, 59, 53, 52, + 44, 26, 20, 11, 16, 31, 47, 58, 61, 78, 81, 61, 49, 65, 69, 62, + 69, 65, 46, 45, 60, 65, 57, 62, 78, 81, 83, 68, 42, 26, 27, 52, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, 96, 92, 94, 77, + 66, 62, 49, 56, 74, 72, 71, 71, 71, 73, 76, 77, 78, 71, 64, 63, + 65, 64, 59, 53, 53, 65, 75, 79, 82, 88, 95, 98, 98, 94, 89, 86, + 87, 91, 95, 95, 97, 90, 86, 90, 97, 95, 92, 88, 84, 84, 86, 83, + 77, 65, 52, 46, 51, 48, 51, 54, 59, 59, 65, 69, 89, 78, 81, 80, + 69, 73, 137, 210, 232, 76, 84, 67, 61, 69, 91, 68, 60, 49, 51, 47, + 50, 49, 28, 21, 20, 20, 20, 35, 53, 62, 58, 49, 77, 92, 79, 66, + 77, 72, 60, 70, 66, 49, 52, 72, 75, 58, 58, 74, 84, 79, 59, 36, + 32, 39, 60, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 77, + 73, 89, 78, 59, 57, 48, 49, 72, 68, 66, 65, 65, 67, 71, 74, 75, + 67, 58, 53, 55, 51, 43, 36, 42, 50, 59, 66, 75, 86, 92, 91, 92, + 90, 85, 83, 83, 86, 91, 92, 103, 96, 91, 91, 94, 95, 91, 89, 90, + 87, 81, 73, 71, 68, 57, 46, 72, 68, 65, 69, 69, 71, 74, 79, 84, + 87, 83, 79, 81, 89, 87, 79, 67, 75, 92, 73, 90, 58, 94, 97, 74, + 53, 58, 43, 43, 45, 10, 2, 14, 25, 38, 53, 62, 66, 61, 56, 42, + 74, 74, 68, 83, 77, 67, 83, 68, 53, 60, 80, 79, 57, 54, 70, 96, + 82, 54, 39, 49, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 195, 83, 83, 77, 93, 35, 36, 60, 28, 50, 84, 65, 60, 57, 67, + 53, 73, 62, 69, 66, 55, 54, 60, 61, 52, 61, 45, 51, 76, 72, 62, + 82, 82, 94, 67, 90, 73, 77, 84, 100, 87, 91, 98, 94, 89, 91, 87, + 79, 82, 76, 66, 60, 60, 61, 57, 49, 46, 38, 54, 36, 46, 66, 80, + 77, 28, 44, 53, 77, 86, 64, 86, 68, 70, 67, 71, 77, 86, 96, 94, + 78, 61, 36, 63, 34, 23, 27, 40, 11, 14, 31, 43, 56, 61, 64, 62, + 54, 44, 52, 43, 58, 73, 88, 93, 67, 55, 41, 46, 64, 76, 71, 56, + 57, 67, 81, 81, 50, 26, 68, 75, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 79, 77, 76, 46, 18, 13, 42, 78, 39, 59, 48, + 59, 63, 73, 49, 49, 52, 60, 68, 71, 75, 77, 73, 65, 59, 78, 79, + 91, 72, 80, 68, 80, 9, 58, 57, 80, 76, 72, 90, 102, 102, 111, 104, + 90, 83, 73, 59, 56, 64, 60, 61, 61, 59, 52, 46, 45, 55, 32, 57, + 72, 65, 75, 79, 224, 234, 36, 45, 54, 65, 75, 55, 73, 71, 67, 68, + 77, 83, 83, 85, 91, 79, 87, 53, 14, 28, 38, 38, 44, 46, 47, 50, + 51, 56, 59, 59, 54, 46, 44, 64, 71, 76, 76, 61, 59, 54, 61, 70, + 74, 67, 60, 58, 59, 79, 76, 35, 26, 74, 85, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 72, 71, 73, 23, 56, 52, 32, 59, + 32, 39, 38, 58, 62, 74, 62, 59, 69, 62, 57, 56, 54, 49, 51, 54, + 60, 68, 62, 88, 102, 159, 115, 120, 229, 203, 17, 24, 55, 86, 87, 76, + 95, 109, 103, 87, 85, 82, 72, 66, 55, 53, 54, 53, 49, 42, 43, 48, + 43, 60, 87, 39, 38, 40, 126, 64, 43, 65, 56, 34, 50, 33, 57, 63, + 81, 70, 66, 71, 67, 60, 70, 90, 47, 57, 47, 9, 36, 38, 52, 52, + 53, 52, 50, 49, 57, 61, 58, 53, 46, 50, 72, 71, 63, 59, 55, 64, + 50, 56, 62, 64, 65, 66, 62, 54, 80, 78, 23, 33, 83, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, 70, 38, 0, 51, + 75, 49, 42, 31, 39, 56, 73, 66, 68, 70, 69, 65, 53, 43, 45, 41, + 32, 31, 43, 64, 45, 65, 81, 69, 115, 95, 123, 134, 158, 35, 52, 50, + 67, 85, 101, 91, 108, 105, 92, 91, 86, 65, 47, 55, 49, 45, 43, 43, + 41, 45, 52, 65, 84, 72, 37, 55, 54, 193, 10, 42, 63, 112, 90, 18, + 42, 35, 47, 73, 70, 68, 68, 62, 54, 57, 68, 28, 52, 61, 43, 59, + 60, 62, 57, 48, 48, 49, 51, 59, 61, 50, 39, 51, 55, 75, 69, 57, + 53, 53, 70, 51, 50, 54, 64, 71, 68, 61, 53, 83, 83, 28, 52, 95, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 85, + 59, 75, 67, 56, 41, 25, 63, 68, 84, 87, 75, 60, 53, 40, 24, 27, + 45, 69, 71, 51, 37, 37, 91, 10, 40, 66, 55, 68, 62, 73, 86, 85, + 44, 48, 29, 46, 61, 64, 65, 96, 103, 86, 74, 68, 67, 71, 62, 54, + 49, 52, 56, 55, 54, 55, 91, 102, 107, 67, 21, 47, 62, 40, 58, 34, + 52, 62, 33, 58, 45, 56, 57, 65, 66, 62, 64, 71, 70, 63, 54, 82, + 81, 71, 54, 62, 53, 49, 45, 46, 48, 50, 58, 58, 46, 33, 48, 49, + 64, 57, 51, 52, 52, 67, 71, 60, 64, 79, 88, 76, 60, 53, 71, 80, + 41, 73, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 113, 76, 39, 83, 45, 28, 74, 112, 132, 116, 98, 67, 66, 55, 45, + 27, 21, 28, 51, 75, 76, 54, 33, 28, 93, 0, 8, 60, 84, 89, 71, + 49, 67, 56, 88, 72, 26, 37, 53, 58, 67, 70, 83, 126, 175, 162, 88, + 23, 63, 59, 61, 70, 76, 72, 63, 57, 75, 60, 129, 90, 43, 72, 47, + 67, 52, 103, 79, 63, 94, 53, 61, 45, 63, 70, 69, 58, 67, 82, 85, + 69, 50, 80, 83, 79, 48, 59, 51, 47, 50, 49, 47, 46, 50, 52, 47, + 40, 40, 33, 45, 45, 49, 54, 50, 61, 80, 72, 74, 86, 95, 87, 70, + 60, 52, 62, 50, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 51, 20, 26, 68, 56, 39, 81, 139, 149, 137, 101, 46, + 57, 53, 51, 40, 54, 54, 58, 65, 62, 50, 39, 38, 55, 41, 49, 80, + 76, 70, 57, 60, 81, 53, 66, 44, 8, 34, 51, 61, 62, 73, 76, 71, + 64, 46, 42, 56, 59, 58, 62, 71, 72, 67, 61, 58, 95, 34, 77, 70, + 71, 52, 76, 73, 104, 55, 97, 83, 75, 74, 69, 67, 76, 76, 73, 65, + 72, 80, 84, 76, 48, 74, 93, 81, 59, 61, 67, 59, 52, 51, 48, 44, + 44, 47, 47, 43, 33, 24, 36, 40, 51, 62, 55, 62, 82, 87, 85, 78, + 86, 95, 83, 60, 42, 47, 58, 80, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 78, 65, 91, 62, 47, 24, 49, 112, 101, + 118, 100, 48, 64, 55, 52, 47, 66, 66, 68, 70, 72, 72, 71, 73, 54, + 104, 77, 89, 82, 90, 60, 71, 70, 65, 63, 60, 33, 58, 67, 79, 85, + 80, 71, 69, 68, 54, 56, 74, 54, 53, 54, 57, 54, 52, 55, 61, 46, + 79, 78, 52, 76, 100, 78, 96, 77, 121, 84, 86, 75, 71, 72, 83, 76, + 72, 71, 75, 78, 78, 80, 84, 67, 80, 97, 60, 43, 35, 59, 52, 43, + 46, 48, 45, 44, 44, 42, 38, 31, 23, 37, 43, 57, 69, 63, 70, 93, + 111, 103, 76, 78, 100, 88, 51, 44, 41, 65, 138, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 83, 70, 64, 65, 13, + 62, 125, 143, 97, 73, 56, 87, 66, 49, 60, 66, 68, 72, 71, 69, 72, + 77, 83, 80, 82, 85, 89, 92, 84, 72, 59, 59, 62, 45, 47, 42, 58, + 61, 84, 77, 77, 77, 70, 60, 51, 55, 60, 55, 67, 72, 63, 43, 32, + 38, 49, 60, 60, 60, 64, 68, 77, 84, 88, 93, 93, 88, 79, 74, 75, + 77, 76, 74, 83, 84, 66, 58, 80, 93, 79, 73, 79, 106, 74, 39, 52, + 51, 48, 45, 48, 49, 45, 42, 40, 35, 29, 28, 25, 56, 39, 67, 58, + 82, 60, 58, 106, 95, 80, 84, 92, 90, 52, 41, 54, 72, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 67, + 62, 57, 20, 52, 113, 168, 116, 91, 65, 82, 65, 54, 66, 65, 67, 69, + 71, 72, 73, 75, 79, 87, 81, 76, 69, 67, 63, 60, 56, 56, 54, 50, + 53, 52, 61, 66, 70, 73, 74, 74, 70, 62, 56, 54, 55, 46, 53, 57, + 53, 46, 41, 45, 51, 52, 53, 54, 57, 63, 70, 77, 81, 73, 76, 74, + 67, 66, 71, 76, 78, 74, 78, 79, 66, 58, 76, 88, 78, 50, 67, 96, + 71, 46, 54, 45, 43, 45, 47, 48, 44, 42, 41, 39, 34, 24, 23, 53, + 41, 67, 61, 85, 66, 60, 99, 92, 79, 85, 91, 88, 57, 37, 53, 134, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 65, 62, 60, 49, 34, 34, 88, 140, 93, 83, 69, 74, 69, 69, 75, + 66, 66, 67, 71, 73, 76, 76, 75, 67, 67, 70, 67, 66, 63, 60, 56, + 59, 47, 52, 57, 46, 56, 69, 62, 62, 63, 66, 65, 61, 55, 48, 44, + 48, 51, 53, 56, 61, 63, 62, 62, 56, 56, 56, 58, 62, 67, 71, 74, + 68, 70, 71, 67, 69, 76, 83, 85, 77, 76, 76, 68, 61, 72, 83, 76, + 57, 77, 85, 56, 44, 50, 45, 54, 50, 51, 50, 42, 40, 40, 39, 35, + 27, 28, 54, 46, 68, 64, 85, 66, 62, 86, 80, 75, 87, 91, 85, 60, + 35, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 190, 59, 60, 47, 50, 19, 51, 83, 52, 65, 70, 69, + 74, 76, 77, 70, 67, 67, 68, 73, 74, 73, 72, 57, 63, 69, 72, 74, + 71, 70, 70, 68, 56, 49, 59, 22, 52, 68, 66, 58, 57, 60, 60, 59, + 56, 46, 38, 56, 57, 60, 66, 74, 76, 75, 74, 71, 72, 70, 69, 68, + 66, 67, 66, 72, 75, 79, 77, 80, 86, 88, 87, 85, 79, 79, 74, 66, + 72, 80, 75, 75, 96, 88, 58, 52, 52, 46, 57, 56, 54, 50, 41, 36, + 35, 34, 31, 36, 38, 59, 52, 67, 64, 77, 60, 57, 65, 58, 63, 83, + 87, 70, 49, 32, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 58, 61, 50, 59, 16, 20, 63, 47, + 67, 78, 68, 77, 73, 71, 74, 68, 64, 62, 66, 67, 66, 67, 72, 71, + 68, 64, 67, 70, 78, 84, 75, 72, 50, 66, 7, 54, 63, 72, 62, 62, + 63, 59, 61, 62, 54, 44, 55, 57, 63, 70, 75, 78, 79, 81, 85, 84, + 82, 79, 76, 71, 69, 66, 72, 77, 84, 86, 89, 92, 88, 82, 93, 87, + 85, 81, 73, 77, 82, 74, 69, 96, 90, 74, 71, 60, 48, 47, 54, 54, + 49, 37, 32, 33, 34, 31, 40, 44, 60, 57, 65, 65, 72, 56, 56, 54, + 49, 53, 76, 75, 45, 24, 28, 117, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 60, 56, 60, 30, + 12, 60, 54, 68, 74, 64, 75, 67, 73, 72, 69, 66, 64, 65, 65, 65, + 65, 64, 68, 68, 72, 76, 81, 84, 85, 77, 83, 58, 71, 18, 59, 62, + 72, 61, 62, 62, 57, 59, 63, 57, 47, 50, 55, 65, 71, 77, 79, 83, + 87, 86, 88, 88, 84, 82, 78, 76, 74, 74, 81, 89, 94, 99, 100, 94, + 86, 95, 92, 91, 84, 76, 84, 87, 74, 67, 85, 74, 67, 64, 57, 60, + 55, 50, 49, 44, 36, 33, 34, 37, 34, 39, 43, 59, 60, 62, 68, 71, + 57, 70, 66, 63, 56, 69, 68, 28, 15, 32, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 66, 58, + 58, 53, 56, 27, 41, 49, 57, 63, 61, 77, 62, 77, 72, 73, 75, 75, + 73, 71, 72, 72, 63, 68, 78, 89, 95, 94, 85, 78, 78, 80, 63, 53, + 38, 58, 65, 69, 57, 61, 63, 57, 58, 62, 57, 47, 51, 54, 64, 71, + 79, 82, 84, 85, 88, 91, 90, 90, 89, 86, 84, 81, 83, 87, 93, 97, + 103, 106, 100, 92, 89, 94, 94, 84, 79, 93, 95, 76, 83, 85, 65, 59, + 49, 50, 72, 61, 48, 50, 45, 36, 34, 37, 40, 35, 36, 41, 56, 61, + 60, 69, 70, 57, 75, 77, 80, 58, 55, 54, 22, 16, 32, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 69, 56, 58, 45, 76, 44, 24, 45, 50, 60, 63, 81, 56, 74, 74, + 79, 86, 88, 86, 82, 82, 81, 94, 91, 89, 91, 95, 94, 86, 80, 83, + 75, 62, 28, 49, 52, 71, 68, 59, 66, 69, 64, 63, 65, 58, 48, 51, + 51, 57, 66, 77, 82, 80, 77, 94, 97, 96, 97, 96, 92, 90, 86, 91, + 94, 96, 98, 101, 103, 98, 91, 84, 91, 93, 80, 77, 96, 99, 76, 90, + 87, 71, 71, 53, 49, 70, 46, 51, 53, 47, 38, 35, 37, 38, 33, 36, + 42, 55, 61, 58, 66, 67, 52, 66, 76, 84, 51, 39, 39, 15, 19, 102, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 190, 62, 60, 56, 62, 68, 51, 30, 50, 83, 54, 73, + 81, 60, 85, 85, 86, 87, 89, 91, 95, 96, 103, 106, 108, 104, 95, 87, + 83, 82, 82, 63, 48, 46, 49, 53, 64, 76, 70, 71, 70, 60, 57, 58, + 58, 52, 52, 43, 53, 51, 58, 72, 73, 93, 106, 108, 106, 103, 101, 101, + 106, 109, 106, 110, 114, 114, 113, 110, 108, 107, 115, 82, 71, 81, 87, 88, + 84, 74, 76, 78, 78, 74, 69, 62, 50, 42, 55, 49, 42, 35, 29, 28, + 36, 44, 47, 45, 56, 63, 56, 56, 69, 76, 75, 82, 76, 64, 30, 34, + 9, 12, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 59, 55, 52, 55, 61, 87, 59, 31, + 49, 50, 65, 71, 88, 87, 88, 90, 91, 93, 95, 98, 99, 101, 106, 112, + 115, 111, 99, 84, 74, 61, 66, 65, 59, 60, 71, 76, 74, 80, 80, 75, + 67, 60, 57, 53, 50, 58, 52, 64, 63, 65, 74, 75, 93, 101, 108, 115, + 121, 122, 120, 114, 111, 111, 108, 107, 115, 122, 122, 112, 100, 97, 80, 79, + 83, 74, 71, 78, 83, 67, 66, 66, 70, 71, 68, 62, 58, 54, 48, 41, + 32, 28, 28, 35, 42, 44, 42, 53, 58, 51, 57, 70, 77, 73, 83, 80, + 53, 35, 52, 43, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 54, 51, 53, 58, + 75, 114, 78, 45, 44, 66, 63, 86, 86, 88, 92, 96, 99, 102, 105, 105, + 117, 110, 102, 97, 96, 94, 90, 85, 43, 65, 71, 58, 60, 80, 84, 70, + 82, 79, 75, 71, 63, 55, 51, 53, 54, 53, 70, 70, 69, 73, 71, 89, + 97, 98, 99, 103, 107, 113, 117, 119, 121, 117, 114, 114, 115, 113, 107, 99, + 97, 84, 85, 85, 71, 66, 76, 82, 76, 68, 65, 71, 73, 67, 63, 64, + 53, 48, 40, 29, 26, 27, 34, 39, 45, 42, 49, 51, 48, 58, 72, 75, + 76, 79, 77, 35, 36, 63, 76, 76, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 57, + 54, 55, 59, 61, 127, 111, 71, 56, 73, 67, 83, 80, 84, 89, 95, 101, + 104, 107, 108, 107, 108, 110, 110, 104, 90, 73, 61, 53, 66, 63, 49, 55, + 79, 86, 75, 78, 75, 73, 72, 64, 54, 52, 56, 43, 47, 70, 73, 71, + 74, 71, 88, 160, 152, 136, 123, 113, 111, 110, 110, 115, 118, 116, 105, 92, + 91, 102, 113, 116, 94, 86, 86, 81, 79, 78, 70, 85, 73, 68, 75, 76, + 66, 60, 62, 52, 48, 39, 27, 23, 27, 34, 36, 49, 46, 48, 48, 47, + 62, 75, 74, 89, 76, 72, 26, 38, 57, 82, 144, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 191, 60, 57, 57, 60, 79, 81, 74, 85, 68, 69, 70, 91, 92, 95, + 100, 105, 109, 111, 114, 114, 108, 109, 108, 102, 90, 78, 69, 65, 80, 71, + 58, 53, 65, 81, 87, 84, 81, 80, 79, 75, 66, 55, 53, 56, 40, 45, + 70, 75, 73, 75, 70, 86, 92, 93, 90, 91, 94, 96, 95, 95, 89, 96, + 97, 91, 83, 87, 103, 118, 118, 95, 85, 86, 85, 84, 78, 64, 72, 63, + 62, 71, 76, 71, 66, 65, 53, 49, 40, 26, 23, 27, 33, 32, 49, 48, + 48, 47, 53, 75, 88, 81, 96, 67, 59, 28, 41, 48, 71, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 59, 56, 56, 58, 65, 59, 68, 86, 53, 57, 65, + 69, 82, 84, 86, 87, 89, 89, 90, 90, 96, 91, 80, 69, 64, 71, 86, + 99, 88, 67, 54, 61, 76, 82, 82, 83, 89, 94, 92, 80, 67, 59, 54, + 51, 40, 43, 65, 69, 67, 66, 58, 71, 96, 96, 89, 82, 77, 75, 75, + 78, 87, 87, 88, 92, 96, 100, 102, 100, 96, 87, 88, 86, 76, 74, 74, + 67, 62, 58, 57, 62, 70, 72, 66, 60, 55, 52, 42, 27, 24, 31, 35, + 31, 44, 46, 49, 49, 60, 89, 100, 86, 87, 54, 44, 34, 44, 50, 126, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, 56, 58, 43, 68, 80, 80, + 48, 63, 65, 54, 58, 58, 58, 59, 60, 60, 62, 62, 64, 69, 77, 83, + 86, 85, 84, 83, 77, 60, 51, 60, 73, 79, 79, 80, 90, 102, 101, 81, + 66, 62, 57, 48, 40, 40, 58, 60, 59, 58, 48, 59, 74, 77, 77, 74, + 70, 75, 87, 97, 90, 90, 92, 97, 99, 99, 94, 90, 84, 82, 88, 87, + 73, 69, 71, 65, 62, 62, 57, 54, 62, 73, 69, 56, 58, 55, 44, 28, + 26, 34, 38, 32, 40, 43, 48, 47, 61, 91, 99, 79, 65, 43, 31, 32, + 34, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 58, 59, 65, + 65, 51, 68, 72, 83, 73, 79, 77, 77, 78, 79, 82, 84, 88, 90, 90, + 89, 89, 91, 92, 87, 78, 71, 69, 60, 52, 55, 67, 79, 84, 85, 85, + 102, 102, 78, 63, 65, 61, 47, 44, 41, 57, 59, 60, 60, 49, 59, 55, + 69, 82, 85, 78, 72, 72, 75, 78, 86, 93, 93, 87, 86, 93, 98, 89, + 84, 87, 87, 79, 76, 71, 57, 58, 62, 56, 49, 60, 79, 80, 67, 59, + 57, 46, 29, 27, 36, 39, 33, 37, 41, 45, 46, 59, 88, 91, 67, 50, + 40, 25, 27, 25, 62, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 58, 52, 55, 59, 57, 86, 61, 59, 66, 78, 78, 80, 84, 85, 84, 84, + 88, 90, 88, 93, 95, 90, 81, 74, 73, 74, 57, 50, 49, 61, 75, 81, + 81, 80, 78, 86, 89, 81, 73, 68, 61, 54, 44, 48, 52, 56, 61, 64, + 63, 63, 48, 55, 67, 80, 87, 84, 72, 64, 62, 74, 85, 90, 87, 84, + 83, 86, 87, 78, 75, 80, 79, 68, 63, 66, 54, 55, 56, 57, 60, 64, + 69, 75, 58, 56, 46, 34, 29, 31, 35, 35, 33, 40, 52, 43, 73, 98, + 53, 22, 12, 37, 44, 16, 3, 128, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 190, 56, 57, 59, 57, 82, 64, 64, 68, 79, 77, 78, 81, + 82, 83, 83, 86, 86, 92, 89, 85, 81, 77, 73, 69, 66, 61, 54, 54, + 64, 75, 79, 78, 77, 82, 87, 87, 78, 70, 65, 60, 54, 47, 50, 53, + 58, 63, 66, 64, 61, 53, 58, 68, 79, 87, 87, 81, 76, 70, 70, 74, + 78, 82, 86, 88, 90, 82, 78, 77, 77, 73, 66, 62, 61, 55, 46, 46, + 57, 60, 58, 65, 80, 62, 60, 49, 35, 29, 31, 34, 33, 37, 40, 50, + 43, 63, 81, 48, 28, 39, 40, 33, 17, 20, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 60, 59, 58, 56, 71, 65, 70, 67, 75, + 75, 75, 76, 78, 81, 81, 82, 80, 89, 80, 72, 70, 74, 75, 69, 62, + 61, 55, 56, 65, 76, 80, 81, 82, 90, 92, 88, 79, 71, 66, 61, 57, + 55, 54, 56, 60, 64, 64, 61, 57, 58, 61, 67, 76, 83, 87, 87, 86, + 80, 71, 62, 59, 68, 79, 86, 87, 75, 78, 78, 71, 66, 63, 60, 55, + 60, 44, 44, 60, 63, 54, 60, 80, 68, 65, 53, 37, 29, 29, 31, 31, + 47, 40, 46, 41, 44, 43, 23, 17, 37, 22, 10, 18, 45, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 60, 57, 54, 53, 61, + 70, 61, 66, 71, 70, 71, 74, 77, 78, 77, 74, 77, 71, 66, 68, 74, + 77, 72, 65, 57, 52, 53, 61, 72, 80, 87, 93, 95, 95, 92, 85, 77, + 70, 64, 60, 60, 57, 57, 61, 62, 58, 53, 50, 58, 62, 67, 73, 78, + 83, 85, 86, 88, 75, 58, 53, 58, 67, 75, 77, 70, 78, 77, 67, 60, + 61, 58, 51, 63, 54, 54, 65, 68, 61, 61, 71, 75, 71, 57, 39, 29, + 28, 29, 30, 49, 39, 39, 40, 27, 14, 8, 13, 22, 17, 14, 35, 73, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 55, + 52, 33, 52, 66, 53, 57, 65, 66, 68, 70, 72, 72, 71, 69, 68, 68, + 69, 73, 75, 74, 70, 66, 58, 52, 50, 56, 64, 74, 87, 98, 92, 90, + 89, 86, 80, 70, 61, 56, 55, 52, 54, 60, 60, 54, 50, 52, 62, 64, + 69, 73, 76, 78, 77, 78, 87, 79, 67, 59, 57, 62, 66, 71, 69, 76, + 75, 65, 60, 61, 57, 49, 55, 60, 65, 67, 71, 72, 67, 61, 79, 74, + 59, 40, 30, 28, 29, 29, 41, 32, 34, 40, 23, 13, 20, 19, 25, 41, + 51, 67, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 190, 53, 51, 15, 45, 64, 48, 55, 58, 62, 66, 68, 67, 64, 65, + 65, 67, 70, 74, 76, 73, 68, 64, 62, 61, 55, 51, 52, 56, 64, 77, + 90, 81, 78, 78, 79, 75, 64, 54, 50, 47, 47, 53, 61, 59, 52, 53, + 60, 68, 71, 74, 76, 75, 75, 74, 75, 80, 79, 75, 70, 66, 66, 68, + 73, 72, 73, 70, 66, 64, 63, 58, 51, 44, 57, 65, 67, 73, 79, 71, + 57, 80, 75, 59, 40, 29, 28, 30, 30, 39, 33, 30, 34, 19, 18, 35, + 18, 26, 51, 71, 83, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 53, 52, 3, 41, 65, 50, 60, 52, 59, 66, 67, + 62, 58, 61, 63, 67, 69, 71, 71, 68, 64, 60, 58, 61, 56, 53, 52, + 52, 55, 66, 78, 72, 66, 65, 68, 66, 57, 49, 47, 47, 50, 59, 67, + 61, 51, 55, 67, 73, 75, 76, 74, 72, 72, 73, 75, 72, 74, 76, 75, + 71, 69, 69, 71, 78, 70, 66, 69, 71, 66, 59, 55, 46, 53, 61, 69, + 77, 78, 69, 60, 80, 74, 58, 40, 29, 28, 31, 32, 38, 36, 29, 30, + 24, 39, 67, 32, 25, 35, 59, 138, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 188, 53, 0, 40, 70, 54, 67, 50, + 58, 66, 66, 59, 54, 56, 63, 65, 64, 63, 63, 64, 64, 61, 58, 56, + 56, 55, 55, 53, 54, 62, 73, 71, 63, 61, 63, 63, 55, 51, 50, 56, + 59, 70, 74, 65, 51, 56, 70, 74, 75, 74, 71, 68, 69, 74, 78, 72, + 74, 75, 75, 74, 70, 66, 64, 82, 68, 63, 71, 76, 69, 60, 58, 57, + 53, 59, 74, 81, 73, 64, 62, 79, 71, 58, 37, 29, 29, 30, 33, 32, + 36, 28, 34, 38, 76, 111, 69, 36, 28, 48, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 9, 49, 67, + 73, 70, 62, 37, 64, 65, 49, 58, 59, 75, 64, 69, 63, 60, 69, 66, + 59, 62, 66, 62, 57, 56, 56, 56, 53, 52, 57, 60, 66, 64, 62, 55, + 56, 54, 84, 82, 83, 76, 73, 69, 74, 74, 68, 63, 63, 61, 69, 75, + 78, 73, 73, 89, 77, 76, 84, 71, 65, 74, 69, 72, 64, 58, 66, 67, + 59, 57, 43, 52, 70, 75, 67, 68, 69, 61, 61, 66, 62, 40, 29, 29, + 31, 27, 39, 29, 31, 39, 82, 134, 129, 114, 105, 26, 98, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 12, 50, 66, 71, 69, 76, 53, 66, 66, 51, 52, 57, 67, 66, 72, 66, + 62, 68, 63, 57, 61, 52, 55, 59, 59, 58, 57, 58, 61, 61, 67, 71, + 72, 69, 66, 65, 65, 75, 74, 76, 79, 78, 74, 70, 67, 70, 70, 78, + 76, 68, 64, 67, 64, 68, 79, 74, 78, 95, 86, 69, 65, 66, 75, 73, + 68, 69, 66, 61, 60, 47, 50, 66, 75, 68, 65, 64, 57, 57, 61, 54, + 35, 23, 25, 28, 25, 36, 34, 40, 49, 116, 155, 140, 118, 104, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 17, 51, 64, 69, 68, 77, 64, 59, 65, 56, 53, 69, 71, + 66, 73, 66, 60, 63, 57, 52, 58, 53, 61, 67, 68, 67, 66, 70, 77, + 68, 72, 77, 79, 79, 78, 77, 77, 67, 65, 72, 86, 91, 84, 77, 73, + 60, 59, 67, 75, 67, 70, 75, 72, 72, 78, 73, 65, 77, 83, 76, 76, + 62, 73, 79, 75, 69, 66, 64, 63, 51, 48, 62, 79, 75, 67, 65, 60, + 56, 60, 51, 34, 23, 23, 27, 27, 31, 32, 41, 44, 137, 165, 145, 121, + 128, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 179, 55, 61, 67, 68, 77, 76, 55, 64, 63, + 54, 78, 74, 65, 71, 63, 55, 57, 51, 48, 55, 49, 54, 59, 59, 57, + 57, 61, 66, 73, 76, 80, 84, 85, 84, 83, 82, 79, 78, 83, 92, 91, + 77, 66, 61, 89, 77, 67, 75, 66, 73, 66, 62, 69, 75, 81, 63, 63, + 75, 76, 84, 60, 65, 74, 73, 66, 67, 68, 62, 53, 45, 60, 82, 82, + 72, 69, 69, 59, 58, 50, 35, 26, 26, 30, 31, 30, 32, 40, 31, 139, + 161, 148, 133, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 55, 59, 62, 82, 86, + 62, 66, 67, 54, 70, 67, 66, 70, 64, 56, 56, 50, 47, 52, 52, 53, + 55, 55, 55, 58, 64, 67, 75, 77, 80, 84, 86, 86, 84, 82, 86, 89, + 94, 99, 97, 90, 85, 82, 76, 78, 61, 72, 66, 73, 60, 73, 58, 57, + 79, 72, 76, 89, 75, 72, 66, 60, 66, 69, 65, 73, 75, 60, 54, 46, + 61, 83, 82, 72, 67, 67, 57, 57, 48, 37, 28, 27, 31, 33, 30, 36, + 46, 34, 137, 159, 153, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 49, 51, + 56, 71, 80, 69, 68, 71, 64, 66, 71, 69, 74, 70, 66, 68, 58, 47, + 45, 52, 53, 56, 59, 63, 68, 74, 75, 75, 76, 79, 84, 87, 88, 86, + 83, 87, 92, 91, 85, 84, 86, 82, 74, 60, 85, 59, 64, 54, 49, 26, + 62, 64, 36, 56, 59, 76, 100, 81, 75, 76, 60, 65, 72, 69, 80, 82, + 58, 54, 51, 66, 81, 76, 65, 60, 55, 54, 50, 43, 35, 30, 28, 28, + 30, 24, 34, 49, 47, 132, 161, 155, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 47, 49, 55, 56, 67, 75, 68, 75, 75, 62, 77, 70, 77, 76, 77, + 82, 66, 40, 28, 24, 32, 42, 47, 49, 51, 57, 62, 64, 64, 67, 73, + 79, 81, 79, 76, 81, 83, 70, 52, 52, 61, 50, 26, 50, 84, 41, 54, + 76, 86, 60, 118, 61, 18, 38, 42, 55, 84, 75, 84, 84, 65, 72, 81, + 74, 84, 84, 55, 54, 58, 74, 82, 72, 65, 60, 51, 50, 46, 40, 36, + 32, 28, 26, 30, 26, 29, 43, 56, 122, 166, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 51, 53, 60, 57, 68, 85, 70, 77, 76, 51, 72, 66, + 77, 80, 85, 90, 68, 33, 14, 11, 26, 42, 47, 45, 43, 49, 55, 42, + 43, 48, 55, 62, 66, 64, 62, 47, 54, 48, 43, 66, 99, 96, 67, 179, + 188, 94, 80, 100, 97, 42, 91, 36, 3, 42, 48, 44, 60, 55, 79, 84, + 67, 78, 87, 75, 82, 81, 49, 51, 61, 79, 83, 72, 68, 64, 53, 49, + 47, 42, 38, 34, 30, 28, 30, 35, 30, 41, 59, 114, 200, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 187, 48, 52, 46, 60, 75, 78, 73, 64, + 64, 68, 78, 67, 71, 85, 81, 52, 36, 38, 33, 27, 37, 48, 54, 64, + 69, 61, 83, 71, 54, 65, 52, 71, 54, 37, 61, 91, 101, 74, 50, 102, + 110, 104, 103, 107, 79, 68, 101, 98, 61, 43, 43, 52, 60, 57, 57, 60, + 65, 69, 64, 76, 84, 82, 78, 73, 64, 55, 51, 65, 75, 71, 65, 60, + 51, 42, 48, 47, 44, 39, 37, 33, 30, 29, 32, 29, 40, 55, 107, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 50, 49, 58, 72, + 77, 74, 70, 67, 67, 73, 64, 65, 74, 72, 54, 45, 47, 52, 26, 7, + 10, 40, 81, 90, 68, 86, 79, 74, 95, 87, 97, 77, 60, 90, 97, 90, + 67, 57, 109, 99, 76, 94, 108, 88, 67, 79, 74, 57, 60, 63, 70, 76, + 71, 67, 67, 69, 71, 68, 78, 85, 83, 77, 71, 61, 53, 54, 71, 83, + 79, 69, 61, 51, 44, 50, 48, 44, 39, 37, 32, 31, 31, 33, 32, 41, + 56, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 49, + 49, 53, 62, 71, 75, 75, 71, 67, 68, 63, 61, 63, 63, 59, 58, 59, + 52, 41, 22, 4, 16, 62, 91, 85, 89, 76, 74, 95, 89, 89, 73, 62, + 113, 111, 98, 79, 72, 118, 100, 72, 83, 95, 76, 50, 51, 48, 46, 59, + 73, 79, 84, 77, 72, 69, 69, 69, 73, 83, 89, 85, 76, 68, 59, 52, + 55, 74, 88, 84, 71, 62, 52, 45, 49, 47, 41, 35, 34, 34, 35, 34, + 34, 33, 44, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 188, 52, 49, 47, 52, 63, 73, 75, 70, 64, 64, 64, 62, 60, 62, + 68, 71, 68, 49, 55, 53, 29, 11, 29, 60, 71, 96, 84, 93, 119, 118, + 107, 92, 81, 108, 114, 113, 93, 68, 99, 84, 71, 46, 50, 39, 32, 50, + 63, 69, 77, 73, 78, 82, 76, 73, 71, 71, 70, 80, 85, 88, 83, 72, + 62, 55, 52, 54, 73, 85, 77, 63, 55, 49, 47, 49, 46, 40, 34, 34, + 34, 37, 40, 35, 35, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 50, 47, 43, 43, 53, 64, 71, 67, 62, 60, 62, + 63, 61, 65, 72, 75, 69, 64, 52, 50, 46, 31, 27, 33, 35, 50, 47, + 74, 106, 115, 101, 89, 76, 79, 91, 98, 81, 46, 64, 52, 49, 43, 45, + 42, 45, 62, 73, 77, 79, 78, 82, 85, 78, 76, 76, 76, 76, 82, 84, + 85, 79, 67, 56, 53, 55, 63, 77, 83, 69, 52, 46, 44, 45, 46, 44, + 39, 34, 35, 38, 39, 42, 38, 39, 120, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 42, 41, 46, 54, 62, 63, + 61, 55, 58, 61, 64, 69, 72, 72, 67, 75, 54, 53, 60, 54, 44, 41, + 40, 20, 9, 26, 38, 50, 45, 53, 47, 45, 48, 55, 52, 31, 53, 41, + 39, 51, 58, 67, 68, 66, 66, 72, 76, 85, 86, 85, 77, 75, 76, 76, + 77, 82, 81, 79, 73, 60, 51, 53, 60, 77, 86, 83, 63, 46, 40, 40, + 41, 43, 42, 40, 39, 39, 41, 41, 43, 41, 43, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 44, 43, 42, + 45, 53, 60, 64, 55, 55, 60, 69, 74, 72, 69, 68, 70, 63, 67, 69, + 60, 58, 62, 63, 57, 40, 41, 26, 33, 31, 52, 47, 34, 28, 32, 40, + 32, 62, 53, 52, 40, 49, 67, 74, 71, 74, 89, 95, 87, 86, 83, 73, + 72, 74, 76, 78, 80, 79, 75, 69, 57, 50, 57, 69, 83, 88, 81, 61, + 46, 42, 41, 39, 39, 40, 41, 43, 44, 44, 42, 42, 44, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 51, 47, 44, 43, 51, 64, 73, 57, 55, 61, 73, 78, 74, 70, 72, 65, + 62, 66, 63, 62, 70, 71, 58, 59, 48, 55, 35, 38, 28, 40, 26, 44, + 35, 37, 42, 31, 59, 54, 61, 71, 66, 73, 78, 72, 75, 80, 75, 87, + 86, 82, 74, 72, 78, 82, 85, 80, 77, 73, 65, 54, 48, 56, 71, 75, + 79, 74, 57, 45, 44, 44, 42, 36, 39, 41, 44, 45, 45, 41, 40, 45, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 40, 45, 67, 56, 51, 82, 65, 47, 58, 72, 67, 68, + 76, 69, 73, 64, 57, 59, 67, 72, 72, 68, 70, 65, 59, 58, 61, 65, + 66, 67, 55, 57, 59, 61, 65, 68, 72, 76, 81, 81, 78, 76, 77, 79, + 81, 81, 86, 85, 80, 72, 69, 75, 82, 88, 84, 87, 77, 57, 47, 52, + 63, 70, 75, 69, 61, 51, 43, 39, 37, 34, 35, 37, 41, 44, 43, 39, + 42, 50, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 191, 54, 48, 25, 32, 74, 75, 56, 57, + 64, 66, 68, 70, 64, 72, 70, 65, 60, 62, 63, 67, 68, 66, 63, 61, + 61, 64, 68, 74, 76, 76, 79, 83, 85, 87, 87, 88, 89, 83, 85, 84, + 84, 85, 82, 82, 79, 77, 79, 76, 69, 68, 73, 80, 84, 87, 81, 68, + 53, 51, 59, 66, 66, 72, 66, 56, 48, 44, 43, 39, 36, 32, 37, 40, + 40, 41, 41, 42, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 35, 16, 11, 33, + 64, 63, 58, 52, 61, 67, 65, 65, 74, 75, 73, 64, 58, 55, 61, 67, + 57, 57, 58, 58, 60, 65, 73, 78, 83, 87, 91, 93, 93, 90, 88, 87, + 81, 84, 87, 90, 92, 88, 85, 81, 78, 81, 79, 74, 75, 79, 84, 87, + 83, 72, 54, 47, 54, 68, 70, 67, 71, 61, 50, 45, 42, 41, 39, 37, + 39, 46, 48, 44, 47, 53, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 27, + 21, 5, 2, 26, 59, 64, 45, 54, 69, 68, 67, 73, 75, 76, 68, 60, + 56, 59, 63, 63, 65, 67, 66, 65, 68, 76, 82, 72, 75, 78, 79, 79, + 76, 74, 74, 77, 81, 85, 88, 90, 88, 84, 83, 78, 81, 82, 79, 80, + 83, 85, 85, 76, 62, 47, 44, 57, 71, 72, 69, 66, 59, 51, 44, 40, + 37, 38, 41, 44, 52, 52, 46, 51, 60, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 13, 9, 6, 7, 0, 50, 72, 50, 53, 70, 71, 67, 70, 71, + 73, 71, 68, 63, 60, 58, 59, 61, 61, 58, 55, 55, 60, 64, 65, 66, + 67, 66, 67, 67, 70, 72, 83, 85, 86, 86, 87, 85, 82, 80, 75, 78, + 79, 77, 79, 82, 82, 78, 67, 56, 44, 47, 59, 67, 70, 69, 63, 56, + 50, 44, 36, 31, 37, 46, 46, 52, 51, 44, 117, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 12, 16, 12, 0, 33, 61, 55, 56, 67, 71, + 67, 70, 70, 70, 71, 74, 71, 66, 60, 56, 55, 53, 50, 47, 45, 48, + 49, 66, 66, 64, 62, 65, 68, 74, 78, 94, 92, 89, 87, 83, 80, 80, + 77, 77, 80, 80, 80, 82, 83, 81, 75, 59, 50, 45, 51, 60, 65, 66, + 66, 58, 52, 46, 43, 37, 31, 40, 52, 51, 54, 52, 48, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 25, 9, 5, 4, 29, 56, + 63, 62, 67, 70, 74, 70, 69, 70, 71, 70, 69, 65, 71, 69, 66, 64, + 63, 63, 64, 63, 70, 70, 68, 67, 69, 73, 79, 84, 93, 93, 90, 88, + 85, 81, 80, 77, 82, 83, 84, 81, 84, 84, 81, 74, 57, 46, 42, 52, + 63, 66, 63, 60, 58, 44, 35, 38, 41, 39, 46, 56, 58, 57, 56, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 12, 22, + 0, 0, 53, 69, 59, 65, 75, 77, 75, 71, 69, 68, 68, 69, 72, 68, + 64, 61, 61, 64, 65, 65, 63, 76, 76, 75, 74, 76, 80, 85, 89, 85, + 85, 86, 86, 86, 83, 80, 79, 80, 80, 80, 77, 79, 82, 77, 68, 58, + 43, 40, 52, 67, 67, 61, 53, 57, 38, 27, 33, 45, 47, 50, 56, 57, + 55, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 17, 13, 12, 1, 9, 45, 66, 69, 79, 79, 77, 75, 73, 71, 68, + 65, 64, 74, 75, 75, 74, 73, 73, 75, 75, 77, 83, 85, 82, 85, 89, + 88, 83, 89, 88, 86, 83, 82, 79, 77, 77, 80, 79, 81, 85, 87, 83, + 74, 66, 50, 46, 49, 56, 67, 68, 63, 54, 51, 35, 29, 40, 51, 53, + 54, 59, 62, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 177, 18, 21, 11, 3, 26, 56, 72, 74, 81, 78, 74, + 70, 69, 68, 71, 74, 76, 76, 74, 73, 72, 73, 76, 77, 77, 83, 86, + 85, 89, 94, 94, 91, 93, 90, 86, 84, 80, 79, 77, 76, 70, 72, 78, + 80, 81, 78, 73, 66, 50, 47, 50, 58, 64, 64, 54, 46, 39, 31, 33, + 44, 50, 50, 52, 59, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 22, 23, 19, 2, 4, 41, 74, 74, + 75, 74, 73, 71, 69, 70, 72, 75, 76, 77, 74, 73, 72, 74, 77, 79, + 75, 80, 84, 86, 92, 97, 98, 96, 98, 95, 90, 87, 82, 79, 78, 78, + 72, 74, 80, 81, 80, 76, 72, 68, 48, 49, 54, 62, 65, 60, 49, 43, + 31, 30, 36, 48, 52, 50, 51, 124, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 21, 24, 12, 0, + 28, 68, 74, 67, 70, 74, 75, 72, 67, 65, 67, 74, 76, 75, 75, 75, + 75, 77, 78, 73, 77, 80, 84, 90, 93, 94, 92, 96, 93, 90, 85, 81, + 81, 82, 83, 82, 81, 80, 82, 82, 78, 70, 60, 45, 51, 59, 65, 64, + 58, 49, 42, 33, 34, 40, 51, 54, 51, 50, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 24, 26, 10, 16, 47, 63, 72, 75, 77, 75, 70, 64, 63, 64, 70, 74, + 76, 77, 77, 76, 76, 75, 76, 77, 80, 84, 88, 89, 89, 88, 88, 85, + 83, 79, 78, 80, 82, 84, 86, 78, 73, 75, 79, 77, 66, 51, 48, 54, + 61, 64, 57, 51, 44, 41, 46, 42, 44, 50, 54, 54, 119, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 178, 31, 19, 7, 19, 36, 76, 77, 76, 71, 66, 63, 65, + 71, 69, 72, 74, 76, 76, 75, 76, 74, 83, 82, 83, 87, 90, 87, 86, + 86, 79, 76, 73, 72, 72, 76, 80, 83, 85, 77, 75, 75, 81, 78, 68, + 56, 53, 58, 61, 57, 46, 38, 36, 38, 56, 51, 50, 52, 55, 122, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 27, 26, 9, 0, 8, 61, 67, 72, 72, + 69, 65, 65, 71, 70, 72, 72, 71, 72, 73, 76, 77, 86, 83, 85, 89, + 91, 87, 85, 86, 76, 72, 71, 71, 71, 76, 80, 84, 84, 80, 81, 78, + 78, 72, 66, 60, 54, 58, 59, 52, 39, 34, 40, 46, 55, 56, 57, 56, + 54, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 21, 0, 1, 45, + 57, 73, 80, 77, 68, 61, 62, 71, 71, 67, 67, 67, 71, 77, 80, 86, + 82, 83, 89, 91, 85, 84, 85, 79, 76, 74, 74, 76, 80, 85, 88, 81, + 82, 83, 78, 69, 59, 56, 57, 51, 55, 57, 48, 37, 36, 47, 59, 50, + 57, 63, 61, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, + 12, 9, 21, 55, 86, 72, 85, 69, 66, 57, 63, 62, 62, 67, 69, 70, + 77, 84, 81, 82, 85, 86, 89, 88, 89, 87, 77, 79, 81, 78, 75, 78, + 85, 92, 88, 85, 79, 75, 69, 62, 57, 52, 60, 53, 43, 37, 37, 41, + 48, 55, 57, 62, 65, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 19, 15, 8, 45, 81, 80, 78, 65, 66, 67, 68, 65, 66, + 69, 72, 72, 77, 83, 87, 85, 83, 81, 83, 87, 91, 92, 78, 77, 78, + 80, 84, 85, 88, 89, 87, 83, 78, 72, 66, 59, 55, 50, 53, 50, 43, + 41, 41, 46, 53, 59, 60, 59, 60, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 19, 0, 27, 55, 76, 70, 69, 65, 71, + 71, 69, 69, 72, 75, 73, 75, 79, 85, 83, 81, 79, 81, 84, 88, 91, + 86, 83, 83, 86, 93, 93, 90, 84, 83, 78, 72, 64, 58, 53, 50, 47, + 44, 44, 45, 47, 50, 55, 61, 65, 67, 60, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 28, 70, 68, + 77, 61, 64, 69, 66, 69, 74, 76, 73, 74, 75, 77, 79, 82, 85, 85, + 85, 84, 82, 89, 86, 85, 86, 90, 88, 84, 78, 79, 71, 61, 51, 46, + 43, 44, 43, 43, 45, 49, 53, 57, 63, 66, 66, 69, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 79, 72, 69, 59, 64, 69, 64, 67, 74, 79, 77, 75, 76, 76, 78, + 81, 84, 84, 82, 82, 78, 80, 80, 81, 80, 78, 76, 75, 74, 70, 61, + 49, 39, 37, 38, 40, 42, 46, 49, 54, 58, 63, 66, 67, 65, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 199, 61, 55, 68, 68, 64, 65, 73, 79, 79, 77, + 76, 83, 81, 79, 77, 77, 78, 80, 81, 71, 73, 75, 75, 73, 72, 72, + 72, 56, 50, 42, 37, 39, 43, 46, 48, 55, 55, 58, 62, 64, 65, 64, + 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 67, 67, 62, 60, 68, + 73, 74, 72, 72, 80, 78, 74, 72, 69, 68, 69, 70, 68, 69, 70, 72, + 73, 70, 62, 56, 40, 39, 41, 45, 50, 54, 56, 57, 60, 60, 61, 62, + 63, 62, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 190, 59, 64, 69, 70, 67, 65, 68, 69, 70, 71, 67, 63, 55, 54, 64, + 62, 59, 62, 66, 60, 45, 31, 29, 33, 42, 53, 62, 66, 67, 64, 63, + 63, 62, 60, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 69, 47, 51, 55, 62, 64, 64, 58, 55, 57, + 55, 54, 57, 54, 53, 53, 47, 39, 38, 44, 45, 52, 63, 71, 74, 73, + 71, 69, 63, 67, 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 44, + 42, 43, 45, 42, 41, 37, 38, 43, 48, 49, 46, 47, 54, 60, 65, 70, + 73, 72, 70, 71, 70, 65, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 185, 44, 42, 64, 68, 74, 80, 79, 76, 75, 78, + 73, 76, 74, 70, 64, 63, 67, 132, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, + 83, 79, 77, 74, 76, 73, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy7' of size 114x125x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy7[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 214, 161, 144, 153, 123, 148, 143, 165, 183, 203, + 203, 147, 167, 245, 233, 194, 171, 242, 251, 164, 192, 219, 221, 225, 223, 225, + 221, 200, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 120, 128, 138, 126, 156, 144, 153, 120, 141, 140, 142, + 157, 184, 196, 153, 155, 236, 244, 202, 192, 252, 242, 162, 203, 229, 214, 205, + 200, 203, 203, 188, 169, 172, 189, 201, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 204, 110, 122, 131, 132, 122, 145, 142, 151, 130, 152, + 154, 127, 139, 162, 180, 163, 158, 237, 252, 206, 189, 238, 233, 177, 180, 176, + 174, 166, 157, 158, 166, 172, 168, 167, 169, 166, 181, 194, 208, 237, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 201, 103, 106, 113, 123, 130, 146, 132, 136, 132, 128, + 122, 139, 143, 127, 140, 146, 155, 168, 158, 214, 221, 173, 145, 174, 181, 154, + 117, 82, 104, 110, 107, 110, 112, 121, 124, 129, 128, 124, 149, 176, 194, 214, + 218, 226, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 210, 113, 98, 109, 109, 112, 119, 124, 120, 108, 107, + 111, 111, 125, 147, 157, 125, 140, 129, 127, 157, 144, 171, 155, 142, 132, 139, + 114, 114, 99, 64, 78, 93, 105, 111, 102, 92, 95, 107, 117, 109, 139, 161, + 166, 161, 148, 146, 158, 171, 196, 228, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 229, 190, 156, 52, 32, 71, 107, 117, 113, 111, 110, 106, 90, + 76, 80, 104, 127, 131, 138, 148, 124, 121, 121, 124, 127, 127, 131, 136, 142, + 139, 127, 109, 99, 94, 88, 79, 92, 93, 99, 91, 74, 78, 96, 103, 87, + 125, 159, 154, 123, 105, 118, 138, 159, 193, 189, 138, 176, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 240, 205, 189, 177, 179, 149, 62, 52, 78, 101, 103, 98, 96, 92, + 86, 89, 81, 83, 100, 115, 121, 126, 132, 126, 120, 115, 117, 120, 118, 114, + 114, 91, 96, 95, 86, 81, 81, 82, 79, 82, 77, 80, 76, 66, 70, 81, + 82, 79, 108, 133, 133, 121, 117, 125, 132, 133, 144, 137, 109, 171, 200, 192, + 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 237, 175, 168, 164, 152, 149, 129, 63, 66, 78, 86, 84, 82, + 81, 76, 69, 69, 71, 73, 78, 85, 90, 94, 96, 110, 101, 95, 95, 97, + 91, 81, 75, 63, 71, 77, 72, 67, 65, 69, 71, 73, 63, 63, 65, 61, + 64, 68, 62, 64, 82, 95, 97, 103, 116, 120, 115, 90, 82, 78, 71, 140, + 159, 149, 157, 188, 179, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 198, 173, 158, 161, 156, 146, 124, 69, 67, 67, 67, + 65, 72, 77, 74, 65, 64, 72, 76, 72, 73, 82, 84, 82, 100, 94, 92, + 92, 90, 81, 73, 69, 64, 67, 70, 67, 63, 61, 63, 61, 68, 58, 60, + 66, 63, 64, 64, 57, 61, 73, 78, 76, 87, 109, 118, 112, 85, 72, 77, + 75, 120, 117, 109, 128, 132, 135, 176, 239, 245, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 238, 187, 159, 165, 164, 176, 168, 139, 109, 65, 64, + 59, 56, 59, 68, 73, 69, 60, 56, 68, 71, 66, 67, 75, 79, 75, 80, + 81, 84, 84, 80, 71, 70, 73, 64, 57, 56, 57, 60, 61, 60, 59, 62, + 55, 63, 71, 65, 61, 62, 59, 67, 78, 82, 77, 83, 104, 121, 124, 95, + 79, 89, 85, 113, 96, 84, 101, 116, 131, 145, 195, 212, 227, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 230, 171, 157, 154, 171, 168, 164, 141, 106, 88, + 66, 65, 59, 56, 58, 63, 65, 59, 51, 49, 56, 60, 57, 59, 65, 67, + 65, 58, 60, 65, 66, 60, 55, 59, 66, 66, 57, 53, 55, 60, 60, 57, + 54, 55, 49, 60, 71, 63, 56, 59, 59, 59, 68, 73, 71, 73, 85, 103, + 113, 94, 72, 84, 83, 112, 100, 83, 81, 115, 139, 131, 167, 186, 197, 207, + 239, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 164, 155, 146, 155, 161, 137, 120, 106, + 87, 84, 74, 62, 56, 53, 54, 57, 56, 51, 47, 59, 61, 64, 64, 66, + 67, 65, 64, 65, 63, 63, 63, 58, 56, 61, 67, 66, 58, 56, 59, 62, + 56, 52, 52, 53, 45, 56, 69, 64, 57, 59, 59, 54, 54, 58, 64, 65, + 66, 72, 78, 89, 74, 92, 89, 118, 116, 99, 86, 82, 113, 122, 173, 179, + 172, 173, 179, 181, 177, 180, 189, 224, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 231, 155, 136, 136, 135, 104, 101, 69, + 63, 76, 74, 69, 50, 53, 49, 49, 50, 53, 53, 52, 51, 56, 53, 52, + 56, 57, 53, 51, 49, 62, 55, 49, 48, 48, 47, 48, 53, 50, 49, 53, + 61, 60, 54, 54, 57, 54, 44, 53, 69, 67, 61, 61, 59, 67, 57, 58, + 70, 74, 64, 58, 58, 66, 67, 93, 83, 103, 104, 93, 79, 93, 93, 89, + 132, 126, 139, 172, 176, 156, 158, 167, 182, 195, 211, 238, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 155, 137, 141, 146, 99, 63, + 63, 63, 65, 67, 63, 56, 48, 49, 46, 45, 47, 54, 57, 56, 50, 49, + 51, 54, 53, 51, 47, 45, 47, 50, 50, 48, 45, 42, 40, 41, 41, 39, + 37, 42, 51, 54, 50, 50, 54, 52, 49, 50, 53, 60, 64, 62, 59, 57, + 58, 59, 62, 63, 62, 58, 57, 57, 70, 73, 73, 87, 104, 91, 63, 66, + 69, 84, 106, 120, 130, 148, 163, 155, 159, 156, 166, 185, 187, 203, 241, 248, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 161, 148, 145, 153, 136, + 69, 63, 63, 66, 68, 67, 62, 55, 49, 43, 42, 43, 48, 54, 56, 51, + 47, 48, 50, 51, 51, 47, 44, 43, 43, 47, 47, 46, 43, 40, 40, 39, + 41, 42, 39, 41, 47, 48, 46, 47, 52, 50, 47, 45, 48, 53, 55, 55, + 52, 58, 58, 61, 63, 65, 64, 60, 59, 58, 66, 69, 70, 83, 94, 85, + 66, 61, 59, 65, 77, 88, 102, 129, 151, 174, 163, 162, 178, 188, 182, 190, + 216, 240, 250, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 150, 148, 141, + 126, 103, 54, 68, 71, 73, 70, 64, 56, 49, 43, 39, 39, 43, 49, 54, + 54, 48, 43, 47, 48, 48, 46, 43, 41, 41, 42, 44, 44, 43, 41, 40, + 39, 42, 44, 45, 42, 41, 43, 44, 44, 46, 51, 49, 46, 44, 44, 48, + 49, 47, 44, 55, 55, 58, 61, 63, 63, 60, 59, 61, 63, 64, 67, 75, + 79, 75, 66, 66, 62, 62, 68, 74, 83, 108, 132, 146, 137, 143, 155, 161, + 176, 195, 204, 218, 241, 244, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 171, 154, + 150, 118, 74, 72, 73, 78, 78, 76, 66, 55, 45, 41, 39, 40, 41, 44, + 49, 52, 53, 48, 45, 45, 46, 45, 43, 39, 38, 39, 40, 41, 41, 41, + 40, 39, 40, 42, 45, 44, 43, 42, 43, 44, 45, 47, 49, 47, 45, 43, + 44, 47, 47, 46, 44, 49, 49, 51, 54, 57, 58, 56, 54, 62, 59, 61, + 65, 67, 64, 60, 59, 55, 49, 51, 59, 63, 65, 73, 85, 90, 98, 113, + 113, 114, 157, 202, 205, 197, 227, 235, 237, 250, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 182, + 185, 159, 126, 83, 51, 72, 93, 79, 75, 69, 57, 46, 39, 39, 40, 41, + 42, 43, 45, 48, 49, 47, 46, 44, 44, 44, 42, 38, 37, 38, 39, 39, + 40, 40, 39, 39, 40, 43, 46, 43, 45, 46, 47, 48, 50, 51, 49, 42, + 41, 41, 42, 45, 46, 45, 45, 45, 45, 48, 51, 54, 56, 55, 54, 60, + 57, 59, 64, 65, 58, 54, 53, 50, 44, 45, 59, 67, 64, 63, 64, 72, + 77, 99, 105, 95, 123, 175, 200, 199, 221, 232, 232, 244, 243, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 209, + 179, 180, 191, 142, 83, 61, 65, 86, 85, 67, 63, 56, 46, 40, 38, 40, + 43, 38, 40, 41, 42, 43, 45, 44, 45, 43, 44, 44, 43, 39, 37, 37, + 38, 37, 40, 40, 40, 39, 40, 43, 46, 42, 45, 47, 46, 48, 51, 52, + 49, 37, 37, 38, 40, 42, 43, 44, 47, 46, 46, 48, 52, 56, 59, 59, + 58, 62, 58, 59, 62, 64, 58, 54, 53, 58, 49, 49, 61, 73, 73, 72, + 76, 79, 68, 90, 119, 109, 95, 128, 178, 195, 211, 234, 234, 237, 240, 236, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, + 209, 194, 179, 177, 168, 102, 55, 60, 71, 76, 61, 55, 49, 44, 40, 39, + 39, 39, 40, 36, 40, 42, 44, 45, 45, 43, 43, 43, 45, 46, 45, 41, + 39, 38, 38, 38, 39, 41, 40, 40, 41, 44, 46, 46, 49, 48, 44, 44, + 49, 51, 47, 38, 39, 40, 43, 44, 45, 46, 48, 48, 48, 51, 55, 60, + 63, 64, 64, 74, 71, 66, 62, 63, 62, 57, 50, 50, 46, 48, 56, 64, + 62, 68, 76, 72, 64, 74, 104, 108, 85, 92, 132, 152, 169, 218, 229, 228, + 236, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 242, 215, 203, 185, 172, 177, 140, 68, 53, 68, 57, 47, 47, 47, 44, 39, + 38, 40, 39, 36, 34, 36, 41, 47, 50, 50, 48, 44, 43, 43, 45, 47, + 47, 43, 40, 38, 38, 39, 40, 42, 41, 40, 41, 44, 46, 50, 51, 47, + 39, 39, 45, 51, 47, 44, 45, 46, 47, 47, 47, 49, 52, 50, 50, 51, + 56, 61, 64, 66, 64, 91, 85, 74, 62, 61, 62, 57, 46, 56, 58, 64, + 70, 69, 64, 71, 83, 59, 65, 61, 67, 85, 79, 69, 80, 98, 121, 195, + 220, 218, 235, 231, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 241, 206, 203, 197, 188, 187, 160, 103, 54, 48, 55, 52, 47, 49, 43, + 41, 39, 36, 34, 33, 33, 35, 43, 41, 40, 43, 49, 51, 47, 44, 42, + 42, 41, 41, 38, 36, 35, 34, 39, 39, 39, 40, 44, 46, 50, 52, 53, + 45, 40, 43, 48, 49, 46, 41, 44, 41, 41, 45, 49, 53, 55, 57, 48, + 57, 56, 55, 61, 62, 64, 75, 83, 88, 87, 73, 61, 56, 58, 58, 62, + 57, 59, 67, 74, 72, 74, 78, 77, 61, 54, 64, 77, 74, 63, 53, 69, + 78, 117, 154, 181, 227, 244, 221, 239, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 215, 211, 198, 201, 187, 145, 115, 80, 52, 52, 57, 52, 45, + 44, 41, 40, 38, 36, 33, 33, 33, 34, 42, 41, 40, 43, 48, 50, 47, + 43, 41, 41, 41, 40, 38, 36, 35, 34, 38, 37, 37, 38, 42, 44, 47, + 48, 43, 40, 41, 42, 45, 46, 47, 48, 51, 51, 51, 52, 54, 54, 54, + 53, 53, 61, 61, 62, 71, 72, 71, 78, 77, 83, 83, 69, 58, 55, 58, + 59, 59, 60, 63, 69, 69, 66, 69, 75, 70, 59, 55, 62, 66, 66, 61, + 60, 59, 59, 68, 95, 131, 167, 210, 245, 234, 238, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 214, 220, 205, 211, 185, 110, 75, 62, 51, 51, 54, + 52, 45, 42, 40, 39, 37, 35, 34, 34, 34, 35, 41, 40, 40, 43, 48, + 49, 45, 42, 41, 41, 41, 40, 38, 37, 35, 34, 37, 36, 36, 37, 39, + 41, 43, 44, 38, 40, 44, 44, 45, 48, 53, 57, 53, 53, 56, 56, 56, + 55, 55, 54, 59, 66, 68, 72, 83, 83, 78, 80, 72, 77, 77, 67, 56, + 55, 60, 63, 59, 61, 67, 70, 67, 63, 65, 68, 62, 56, 55, 57, 57, + 57, 59, 64, 58, 61, 59, 80, 114, 120, 155, 227, 248, 246, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 238, 211, 221, 214, 198, 149, 82, 64, 61, 53, + 46, 46, 50, 49, 42, 38, 37, 37, 35, 34, 34, 34, 35, 40, 40, 41, + 44, 47, 48, 44, 41, 41, 41, 41, 40, 38, 37, 36, 35, 37, 37, 37, + 37, 39, 40, 41, 41, 40, 44, 47, 46, 49, 54, 61, 63, 56, 57, 60, + 60, 61, 63, 66, 68, 70, 76, 77, 81, 92, 90, 81, 81, 71, 73, 74, + 67, 59, 56, 64, 68, 62, 63, 67, 71, 72, 69, 67, 64, 57, 55, 56, + 57, 56, 56, 59, 62, 60, 72, 81, 95, 110, 107, 124, 164, 224, 241, 252, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 209, 211, 210, 156, 85, 56, 63, + 62, 56, 46, 47, 51, 48, 39, 38, 36, 36, 36, 36, 36, 35, 35, 39, + 41, 43, 46, 48, 47, 44, 41, 40, 40, 40, 40, 38, 37, 36, 35, 37, + 37, 38, 39, 41, 41, 41, 41, 46, 49, 49, 47, 54, 62, 65, 61, 65, + 66, 66, 65, 66, 70, 77, 82, 81, 86, 84, 86, 96, 93, 82, 81, 72, + 72, 73, 66, 58, 55, 63, 71, 65, 64, 66, 73, 81, 84, 76, 63, 57, + 55, 55, 57, 60, 61, 60, 57, 63, 71, 83, 81, 80, 110, 134, 127, 142, + 186, 253, 255, 255, 255, 255, 255, 255, 255, 242, 226, 207, 200, 195, 123, 54, + 56, 54, 55, 55, 53, 52, 50, 43, 34, 37, 38, 39, 37, 38, 37, 37, + 38, 41, 43, 46, 48, 49, 47, 44, 42, 39, 40, 40, 40, 39, 38, 37, + 36, 37, 37, 39, 40, 42, 42, 42, 42, 50, 52, 51, 47, 54, 63, 64, + 60, 68, 69, 71, 67, 67, 70, 76, 83, 85, 91, 90, 89, 94, 90, 82, + 81, 74, 71, 71, 67, 57, 52, 59, 69, 67, 66, 68, 77, 91, 96, 85, + 67, 60, 57, 57, 58, 62, 65, 61, 55, 70, 73, 84, 77, 71, 117, 147, + 120, 95, 127, 243, 255, 255, 255, 255, 255, 255, 243, 213, 220, 208, 192, 166, + 106, 58, 60, 52, 54, 55, 57, 53, 46, 38, 37, 38, 38, 39, 41, 41, + 41, 40, 40, 41, 44, 48, 50, 50, 48, 44, 43, 39, 39, 40, 40, 39, + 38, 37, 36, 35, 36, 39, 40, 42, 42, 43, 42, 49, 57, 59, 54, 55, + 63, 69, 66, 68, 71, 75, 73, 71, 70, 74, 80, 87, 93, 90, 86, 89, + 85, 82, 86, 79, 74, 73, 68, 59, 51, 57, 69, 67, 71, 75, 84, 96, + 101, 89, 71, 63, 59, 57, 55, 59, 64, 62, 57, 72, 81, 88, 89, 92, + 114, 134, 136, 105, 94, 239, 238, 255, 255, 255, 255, 255, 218, 217, 216, 211, + 185, 136, 90, 62, 46, 58, 57, 58, 55, 48, 36, 37, 45, 38, 39, 40, + 41, 42, 42, 41, 40, 42, 45, 49, 51, 50, 47, 45, 42, 39, 39, 40, + 40, 40, 39, 38, 37, 32, 34, 36, 38, 40, 42, 42, 44, 49, 62, 69, + 60, 58, 66, 73, 74, 70, 78, 85, 86, 84, 83, 84, 89, 88, 95, 89, + 84, 86, 82, 80, 86, 84, 78, 76, 72, 62, 54, 60, 73, 70, 76, 83, + 89, 99, 103, 93, 76, 68, 68, 65, 58, 55, 61, 62, 60, 63, 77, 75, + 81, 100, 98, 115, 161, 111, 72, 245, 251, 255, 255, 255, 255, 255, 224, 212, + 209, 214, 190, 115, 50, 37, 50, 47, 48, 48, 46, 45, 42, 39, 37, 43, + 42, 41, 39, 38, 38, 39, 39, 40, 42, 44, 42, 41, 39, 40, 42, 39, + 41, 43, 44, 42, 42, 41, 39, 37, 31, 31, 36, 40, 39, 43, 51, 53, + 61, 69, 75, 75, 75, 77, 80, 87, 84, 85, 93, 97, 91, 88, 88, 93, + 96, 93, 80, 74, 80, 85, 83, 72, 65, 60, 57, 56, 57, 70, 82, 99, + 94, 91, 95, 101, 104, 97, 89, 96, 96, 86, 70, 58, 57, 58, 57, 64, + 65, 78, 86, 85, 94, 106, 108, 116, 94, 159, 203, 255, 255, 255, 255, 245, + 222, 209, 211, 208, 171, 97, 44, 37, 47, 48, 48, 47, 46, 44, 41, 39, + 37, 41, 41, 42, 42, 41, 39, 38, 37, 37, 40, 42, 43, 41, 39, 38, + 38, 36, 38, 42, 43, 43, 42, 43, 42, 32, 29, 33, 40, 43, 43, 47, + 55, 54, 61, 69, 74, 78, 83, 89, 93, 94, 91, 90, 94, 94, 92, 95, + 99, 106, 105, 98, 85, 79, 84, 90, 90, 69, 63, 63, 64, 67, 69, 79, + 91, 105, 100, 96, 99, 108, 115, 115, 113, 114, 109, 102, 91, 75, 60, 58, + 62, 59, 61, 76, 86, 85, 94, 109, 110, 92, 94, 182, 237, 255, 255, 255, + 255, 221, 218, 210, 212, 196, 140, 69, 38, 41, 46, 49, 49, 48, 47, 45, + 42, 40, 39, 40, 41, 43, 43, 43, 40, 38, 36, 35, 39, 42, 45, 42, + 40, 37, 36, 35, 37, 41, 42, 43, 42, 44, 42, 30, 29, 36, 42, 43, + 43, 48, 55, 58, 61, 65, 70, 78, 86, 96, 104, 106, 103, 101, 98, 97, + 95, 103, 111, 119, 115, 103, 86, 73, 71, 74, 74, 59, 56, 58, 69, 80, + 88, 97, 106, 112, 107, 105, 111, 123, 135, 142, 143, 130, 119, 110, 101, 81, + 59, 56, 63, 57, 59, 75, 85, 85, 94, 108, 109, 110, 98, 163, 217, 253, + 255, 255, 255, 219, 215, 220, 214, 177, 106, 45, 38, 48, 44, 51, 50, 49, + 48, 46, 44, 43, 42, 42, 42, 42, 42, 41, 40, 39, 38, 38, 41, 43, + 44, 42, 40, 38, 38, 36, 39, 43, 44, 43, 43, 43, 41, 36, 38, 43, + 46, 45, 47, 53, 61, 61, 61, 62, 67, 74, 86, 100, 108, 119, 118, 116, + 111, 108, 109, 117, 125, 132, 128, 117, 100, 85, 76, 74, 75, 73, 70, 74, + 88, 101, 107, 112, 116, 122, 122, 125, 134, 147, 159, 167, 167, 150, 139, 121, + 100, 79, 66, 60, 59, 57, 58, 74, 83, 83, 90, 103, 106, 108, 114, 172, + 193, 188, 255, 255, 255, 219, 215, 233, 209, 153, 79, 33, 41, 53, 43, 51, + 50, 49, 48, 47, 46, 46, 45, 46, 44, 41, 39, 38, 39, 41, 42, 42, + 43, 44, 41, 39, 39, 42, 44, 40, 42, 44, 45, 43, 42, 42, 42, 45, + 47, 50, 50, 53, 62, 71, 80, 68, 67, 67, 71, 81, 95, 109, 117, 124, + 127, 130, 126, 124, 125, 131, 136, 140, 137, 136, 129, 120, 114, 112, 117, 121, + 117, 118, 124, 129, 127, 124, 125, 133, 138, 148, 158, 169, 175, 180, 181, 174, + 168, 140, 99, 78, 79, 72, 58, 57, 59, 72, 80, 78, 85, 98, 99, 127, + 115, 147, 176, 191, 255, 255, 245, 221, 218, 233, 194, 130, 67, 33, 43, 52, + 41, 48, 48, 47, 46, 46, 47, 47, 48, 48, 45, 41, 38, 37, 39, 42, + 44, 43, 44, 43, 41, 38, 38, 42, 45, 41, 44, 47, 47, 46, 44, 44, + 44, 44, 46, 46, 50, 62, 78, 91, 98, 82, 82, 83, 88, 99, 111, 122, + 127, 124, 131, 137, 134, 134, 138, 140, 140, 143, 144, 146, 147, 142, 137, 136, + 141, 148, 145, 144, 148, 148, 145, 141, 143, 145, 152, 162, 172, 179, 182, 185, + 186, 187, 188, 161, 106, 78, 81, 76, 56, 59, 59, 70, 77, 74, 81, 93, + 97, 99, 121, 177, 205, 188, 255, 255, 225, 224, 222, 219, 171, 113, 66, 39, + 41, 46, 41, 43, 43, 42, 42, 43, 45, 47, 48, 47, 45, 42, 40, 39, + 40, 41, 42, 41, 42, 41, 40, 37, 38, 40, 42, 40, 45, 48, 50, 49, + 48, 50, 51, 46, 50, 51, 57, 74, 96, 110, 112, 105, 104, 105, 109, 117, + 125, 129, 130, 126, 132, 137, 138, 142, 148, 150, 146, 149, 149, 149, 149, 144, + 137, 136, 143, 149, 148, 150, 152, 152, 151, 153, 158, 154, 159, 165, 169, 172, + 177, 184, 188, 190, 200, 182, 131, 89, 77, 71, 60, 60, 59, 69, 74, 72, + 81, 94, 98, 117, 121, 161, 201, 195, 255, 255, 226, 226, 224, 203, 154, 103, + 70, 44, 38, 41, 41, 39, 39, 39, 39, 41, 43, 46, 47, 44, 44, 43, + 42, 41, 41, 40, 40, 36, 39, 40, 41, 38, 37, 37, 38, 40, 44, 49, + 51, 52, 53, 54, 57, 59, 63, 65, 73, 94, 115, 124, 124, 124, 123, 124, + 125, 128, 131, 129, 127, 130, 135, 140, 141, 147, 156, 157, 151, 154, 152, 153, + 154, 149, 142, 145, 152, 152, 153, 154, 154, 152, 149, 155, 161, 162, 161, 162, + 161, 163, 170, 182, 191, 195, 209, 201, 157, 106, 77, 71, 71, 61, 60, 70, + 75, 72, 81, 98, 102, 118, 125, 165, 203, 187, 255, 244, 227, 228, 226, 198, + 142, 112, 73, 35, 43, 47, 40, 46, 50, 50, 46, 43, 45, 45, 42, 46, + 46, 46, 43, 40, 38, 38, 39, 44, 44, 44, 44, 43, 41, 39, 37, 43, + 47, 50, 47, 49, 54, 60, 61, 67, 80, 92, 102, 107, 116, 125, 134, 135, + 139, 141, 137, 137, 141, 143, 141, 146, 149, 150, 149, 153, 162, 164, 161, 153, + 158, 162, 159, 154, 151, 155, 160, 152, 152, 155, 159, 162, 161, 160, 156, 160, + 163, 164, 162, 166, 172, 176, 176, 185, 195, 201, 178, 133, 101, 80, 57, 66, + 72, 72, 69, 69, 79, 94, 102, 114, 136, 164, 193, 193, 255, 221, 224, 223, + 220, 189, 127, 109, 47, 47, 36, 53, 40, 44, 48, 48, 45, 44, 47, 48, + 46, 46, 45, 42, 39, 38, 41, 46, 51, 40, 42, 42, 44, 45, 44, 43, + 44, 43, 50, 53, 54, 56, 65, 71, 75, 92, 103, 115, 123, 129, 134, 141, + 148, 142, 146, 146, 143, 143, 150, 151, 150, 155, 157, 157, 154, 158, 164, 165, + 161, 163, 158, 155, 157, 163, 165, 161, 155, 151, 150, 152, 156, 159, 160, 159, + 156, 160, 162, 162, 162, 164, 172, 175, 175, 186, 202, 223, 222, 191, 156, 111, + 67, 69, 63, 70, 60, 62, 89, 103, 103, 117, 128, 157, 196, 201, 255, 221, + 223, 221, 216, 179, 123, 92, 33, 47, 42, 49, 42, 46, 49, 48, 45, 45, + 48, 48, 45, 44, 44, 43, 42, 41, 44, 49, 52, 41, 42, 44, 46, 46, + 46, 46, 46, 44, 51, 55, 57, 64, 73, 81, 86, 98, 107, 116, 123, 127, + 130, 137, 142, 146, 149, 150, 148, 149, 154, 156, 157, 161, 162, 160, 157, 159, + 162, 163, 159, 164, 160, 157, 160, 166, 168, 163, 157, 150, 147, 149, 151, 155, + 157, 159, 156, 159, 161, 162, 160, 164, 171, 175, 173, 191, 196, 210, 215, 202, + 178, 135, 87, 73, 60, 80, 61, 54, 88, 104, 110, 126, 126, 158, 204, 206, + 255, 221, 224, 222, 217, 172, 127, 65, 40, 36, 58, 36, 46, 51, 52, 50, + 46, 45, 46, 44, 39, 40, 44, 48, 50, 48, 44, 41, 39, 45, 46, 47, + 48, 46, 45, 45, 46, 47, 53, 57, 58, 66, 76, 86, 91, 111, 117, 125, + 131, 136, 139, 143, 147, 145, 149, 150, 147, 149, 154, 158, 156, 159, 158, 156, + 155, 157, 158, 158, 156, 156, 161, 168, 167, 162, 159, 162, 164, 152, 148, 148, + 151, 156, 158, 159, 159, 160, 162, 163, 161, 164, 172, 175, 173, 186, 195, 219, + 237, 234, 212, 163, 110, 76, 56, 85, 74, 56, 83, 100, 122, 131, 130, 167, + 211, 204, 255, 222, 225, 222, 215, 165, 112, 48, 40, 38, 61, 33, 48, 50, + 50, 48, 44, 44, 47, 44, 38, 40, 44, 48, 49, 46, 40, 36, 34, 44, + 45, 47, 48, 48, 47, 48, 47, 52, 57, 61, 62, 68, 79, 88, 93, 117, + 123, 131, 137, 142, 147, 149, 151, 145, 150, 149, 147, 150, 155, 158, 156, 155, + 153, 152, 154, 155, 155, 155, 154, 153, 159, 167, 166, 161, 158, 160, 163, 156, + 151, 152, 154, 158, 162, 163, 162, 162, 165, 166, 164, 167, 175, 177, 175, 176, + 182, 203, 217, 219, 211, 184, 145, 103, 65, 73, 76, 73, 85, 93, 115, 112, + 127, 168, 208, 204, 255, 223, 225, 219, 211, 157, 82, 42, 33, 52, 50, 40, + 48, 44, 44, 42, 41, 45, 49, 47, 42, 42, 42, 42, 40, 38, 37, 39, + 41, 39, 41, 44, 47, 49, 50, 52, 52, 57, 63, 65, 67, 72, 85, 95, + 100, 114, 121, 126, 133, 140, 142, 145, 146, 149, 151, 151, 148, 151, 155, 158, + 156, 153, 150, 150, 155, 157, 155, 155, 156, 160, 156, 156, 159, 165, 166, 161, + 152, 158, 155, 155, 157, 162, 164, 163, 163, 164, 168, 168, 168, 170, 178, 180, + 176, 197, 197, 205, 208, 209, 221, 226, 213, 170, 113, 64, 66, 87, 87, 82, + 82, 90, 119, 152, 188, 206, 255, 225, 227, 221, 212, 156, 66, 34, 47, 55, + 48, 39, 48, 41, 41, 39, 39, 44, 49, 47, 41, 40, 40, 40, 38, 36, + 37, 41, 44, 37, 39, 42, 46, 48, 50, 52, 52, 55, 61, 65, 68, 77, + 90, 102, 110, 126, 131, 135, 140, 147, 149, 150, 151, 150, 152, 151, 148, 150, + 154, 156, 154, 154, 149, 149, 155, 157, 153, 151, 153, 158, 155, 156, 159, 165, + 165, 160, 150, 159, 156, 157, 161, 163, 164, 164, 162, 167, 170, 171, 171, 173, + 180, 183, 178, 164, 174, 197, 207, 206, 213, 214, 200, 222, 177, 74, 57, 90, + 90, 90, 74, 90, 122, 131, 157, 222, 255, 227, 231, 226, 216, 160, 69, 23, + 72, 45, 56, 31, 50, 43, 42, 39, 38, 42, 47, 44, 37, 37, 40, 43, + 44, 42, 39, 37, 37, 40, 42, 44, 45, 47, 47, 47, 48, 49, 56, 63, + 68, 81, 97, 111, 119, 128, 132, 135, 140, 144, 146, 147, 145, 146, 150, 149, + 145, 145, 149, 150, 148, 151, 146, 146, 152, 153, 150, 147, 149, 150, 158, 166, + 166, 162, 158, 160, 161, 161, 160, 160, 163, 166, 166, 164, 161, 170, 172, 173, + 172, 175, 180, 184, 179, 180, 184, 195, 197, 193, 206, 218, 211, 232, 214, 89, + 54, 90, 97, 119, 104, 105, 132, 116, 133, 255, 255, 225, 218, 235, 213, 151, + 40, 50, 58, 41, 49, 30, 36, 42, 39, 36, 36, 38, 39, 37, 35, 38, + 38, 38, 38, 38, 38, 38, 38, 37, 40, 43, 41, 41, 41, 46, 52, 54, + 64, 69, 77, 91, 110, 124, 129, 136, 144, 147, 145, 145, 151, 153, 150, 152, + 152, 151, 148, 144, 144, 145, 149, 148, 145, 146, 155, 156, 153, 154, 164, 152, + 161, 161, 159, 165, 165, 168, 175, 167, 167, 165, 165, 168, 174, 172, 167, 172, + 175, 178, 178, 176, 178, 186, 190, 191, 188, 192, 198, 203, 210, 215, 217, 236, + 243, 132, 85, 76, 101, 122, 111, 115, 115, 118, 150, 255, 255, 224, 216, 235, + 203, 95, 28, 41, 46, 35, 48, 41, 41, 42, 40, 39, 40, 43, 44, 42, + 40, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 37, 35, 39, 44, + 50, 53, 62, 72, 83, 103, 123, 137, 141, 139, 143, 143, 141, 145, 152, 156, + 154, 145, 143, 141, 140, 140, 138, 139, 141, 143, 139, 139, 143, 146, 144, 146, + 149, 151, 162, 163, 164, 170, 171, 169, 177, 171, 170, 168, 166, 168, 172, 172, + 165, 171, 175, 178, 180, 178, 179, 184, 185, 176, 177, 182, 191, 197, 203, 208, + 210, 205, 232, 186, 147, 80, 81, 128, 132, 127, 110, 113, 159, 255, 255, 223, + 216, 232, 181, 55, 41, 45, 45, 38, 44, 46, 38, 37, 36, 37, 39, 42, + 42, 40, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 35, 34, 37, + 41, 48, 54, 62, 70, 81, 94, 112, 131, 140, 139, 154, 152, 146, 142, 145, + 150, 152, 147, 150, 146, 142, 140, 142, 144, 143, 141, 145, 145, 143, 141, 146, + 150, 148, 146, 144, 156, 159, 163, 172, 171, 169, 175, 168, 169, 167, 165, 166, + 170, 169, 164, 168, 170, 174, 177, 178, 178, 178, 176, 182, 184, 192, 202, 209, + 215, 220, 222, 234, 232, 203, 167, 78, 68, 129, 132, 129, 99, 112, 168, 255, + 245, 225, 221, 230, 151, 40, 56, 45, 48, 46, 37, 45, 35, 35, 36, 38, + 40, 41, 40, 37, 36, 38, 38, 38, 38, 38, 38, 38, 38, 36, 35, 35, + 36, 41, 47, 54, 59, 67, 76, 87, 101, 120, 136, 143, 139, 156, 149, 143, + 141, 144, 147, 144, 140, 146, 138, 130, 127, 129, 133, 133, 131, 131, 135, 132, + 127, 131, 141, 139, 131, 139, 149, 153, 155, 169, 169, 168, 174, 163, 166, 166, + 164, 166, 168, 168, 165, 165, 165, 166, 170, 173, 176, 175, 172, 181, 181, 188, + 196, 205, 213, 221, 224, 238, 226, 212, 191, 115, 78, 102, 95, 124, 99, 131, + 206, 255, 222, 228, 227, 229, 119, 31, 49, 30, 44, 51, 32, 43, 40, 42, + 43, 45, 45, 44, 41, 39, 37, 38, 38, 38, 38, 38, 38, 38, 38, 35, + 34, 36, 38, 42, 48, 54, 59, 63, 77, 90, 108, 127, 146, 151, 149, 138, + 133, 133, 139, 145, 146, 141, 137, 139, 130, 120, 117, 120, 126, 130, 130, 124, + 129, 128, 123, 127, 138, 138, 130, 140, 147, 147, 147, 160, 163, 163, 169, 158, + 162, 164, 162, 165, 167, 169, 166, 165, 163, 162, 163, 166, 170, 171, 170, 176, + 176, 181, 187, 198, 209, 222, 228, 229, 230, 224, 191, 122, 63, 80, 107, 118, + 114, 170, 255, 255, 222, 228, 229, 228, 93, 39, 44, 27, 43, 50, 32, 41, + 42, 42, 44, 45, 44, 41, 38, 37, 37, 38, 38, 38, 38, 38, 38, 38, + 37, 36, 37, 40, 39, 40, 45, 54, 62, 76, 91, 106, 119, 132, 145, 149, + 147, 140, 135, 137, 143, 144, 137, 127, 123, 116, 110, 104, 103, 106, 113, 119, + 121, 119, 123, 125, 124, 126, 130, 134, 134, 136, 142, 139, 140, 152, 156, 155, + 162, 156, 163, 165, 163, 164, 166, 169, 166, 166, 162, 161, 159, 159, 159, 163, + 162, 169, 167, 170, 176, 186, 200, 213, 221, 234, 229, 225, 179, 114, 52, 74, + 114, 102, 120, 200, 255, 255, 225, 226, 226, 227, 78, 48, 45, 40, 46, 44, + 38, 41, 39, 40, 41, 42, 41, 37, 35, 36, 38, 38, 38, 38, 38, 38, + 38, 38, 37, 38, 40, 42, 42, 41, 48, 66, 79, 99, 112, 127, 132, 136, + 141, 144, 143, 143, 137, 136, 137, 128, 112, 99, 95, 80, 79, 77, 77, 80, + 83, 86, 87, 90, 90, 94, 97, 98, 96, 101, 109, 114, 121, 121, 127, 143, + 150, 149, 157, 158, 165, 166, 163, 163, 163, 165, 163, 159, 160, 159, 154, 148, + 143, 144, 145, 141, 139, 139, 142, 147, 156, 165, 172, 181, 177, 223, 206, 136, + 66, 69, 70, 83, 108, 209, 255, 255, 228, 223, 222, 226, 73, 39, 37, 45, + 43, 37, 45, 47, 40, 42, 44, 45, 43, 40, 39, 42, 44, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 42, 45, 44, 45, 57, 81, 101, 105, 121, 136, + 141, 141, 145, 150, 148, 126, 120, 120, 117, 106, 88, 78, 76, 77, 79, 81, + 82, 80, 78, 77, 75, 74, 73, 79, 85, 81, 74, 80, 94, 88, 99, 105, + 117, 138, 145, 147, 154, 161, 167, 169, 165, 161, 161, 162, 160, 152, 154, 155, + 148, 137, 129, 127, 126, 125, 124, 121, 121, 121, 124, 128, 130, 129, 123, 213, + 213, 126, 63, 84, 74, 71, 95, 209, 255, 255, 226, 217, 220, 223, 101, 43, + 31, 47, 45, 38, 46, 40, 39, 37, 37, 38, 38, 38, 37, 36, 35, 38, + 38, 38, 39, 39, 40, 40, 40, 39, 36, 42, 51, 55, 61, 85, 113, 118, + 135, 148, 145, 141, 140, 135, 123, 133, 124, 108, 90, 84, 87, 86, 80, 87, + 80, 73, 70, 74, 78, 77, 74, 65, 61, 63, 68, 71, 72, 75, 81, 88, + 84, 86, 97, 113, 127, 138, 148, 163, 162, 161, 159, 163, 169, 170, 165, 153, + 151, 144, 134, 122, 112, 111, 112, 108, 106, 101, 96, 92, 91, 95, 97, 111, + 107, 162, 192, 149, 95, 64, 72, 84, 105, 197, 255, 255, 225, 219, 222, 226, + 108, 40, 30, 48, 46, 39, 47, 42, 44, 38, 38, 38, 37, 37, 36, 36, + 36, 38, 38, 38, 39, 39, 40, 40, 40, 44, 38, 41, 56, 68, 79, 100, + 121, 124, 133, 142, 144, 143, 141, 138, 131, 102, 97, 91, 85, 88, 97, 100, + 97, 102, 97, 91, 86, 85, 84, 81, 77, 75, 69, 70, 72, 72, 69, 70, + 76, 95, 93, 96, 103, 116, 122, 130, 139, 156, 157, 156, 155, 157, 163, 162, + 157, 149, 141, 129, 115, 103, 94, 90, 91, 82, 82, 82, 80, 79, 80, 83, + 84, 85, 87, 140, 171, 155, 117, 77, 61, 95, 112, 198, 255, 255, 225, 220, + 222, 226, 114, 41, 33, 52, 49, 38, 45, 42, 46, 40, 39, 37, 36, 36, + 36, 37, 38, 38, 38, 38, 38, 39, 39, 39, 41, 46, 40, 43, 63, 84, + 100, 116, 131, 141, 140, 141, 144, 141, 133, 126, 124, 108, 107, 108, 109, 115, + 122, 125, 124, 126, 125, 124, 123, 122, 119, 117, 113, 111, 105, 102, 102, 100, + 98, 99, 103, 105, 104, 109, 115, 121, 123, 131, 140, 153, 157, 157, 156, 157, + 162, 159, 153, 153, 141, 124, 110, 98, 93, 88, 87, 78, 83, 87, 90, 93, + 95, 99, 101, 106, 111, 147, 170, 178, 162, 105, 65, 93, 117, 213, 255, 255, + 225, 222, 220, 222, 118, 46, 39, 58, 52, 37, 41, 38, 43, 41, 40, 37, + 35, 35, 36, 38, 39, 38, 38, 38, 38, 38, 38, 38, 41, 47, 45, 52, + 72, 96, 113, 128, 139, 151, 143, 139, 143, 139, 127, 117, 115, 113, 115, 119, + 123, 127, 127, 126, 124, 123, 125, 129, 130, 127, 123, 121, 118, 114, 109, 106, + 106, 106, 105, 108, 115, 106, 108, 113, 120, 122, 125, 134, 144, 151, 155, 157, + 156, 157, 159, 155, 149, 141, 128, 112, 100, 93, 88, 85, 83, 83, 89, 95, + 104, 109, 115, 121, 124, 127, 138, 153, 161, 186, 180, 112, 62, 87, 116, 255, + 255, 255, 224, 225, 219, 222, 127, 47, 40, 59, 52, 38, 41, 38, 43, 42, + 40, 38, 36, 35, 37, 38, 40, 38, 38, 38, 38, 38, 38, 38, 39, 46, + 53, 66, 85, 102, 118, 134, 145, 147, 140, 139, 145, 143, 130, 122, 122, 115, + 118, 125, 131, 133, 130, 127, 126, 121, 122, 124, 123, 118, 110, 106, 103, 102, + 97, 95, 96, 99, 98, 102, 110, 107, 109, 113, 118, 122, 126, 135, 146, 145, + 151, 154, 151, 151, 151, 147, 142, 139, 129, 114, 105, 99, 95, 91, 89, 98, + 104, 110, 118, 125, 132, 141, 145, 135, 155, 165, 169, 198, 182, 102, 61, 91, + 141, 255, 255, 255, 222, 228, 221, 225, 139, 44, 36, 54, 50, 39, 45, 42, + 45, 41, 40, 39, 37, 37, 37, 38, 39, 38, 38, 38, 38, 37, 37, 37, + 40, 49, 64, 80, 97, 111, 124, 138, 149, 152, 149, 149, 150, 145, 134, 125, + 123, 130, 134, 139, 142, 138, 128, 125, 123, 116, 116, 117, 117, 116, 110, 108, + 105, 103, 100, 98, 100, 102, 101, 104, 108, 116, 117, 121, 128, 132, 134, 141, + 148, 149, 152, 155, 153, 151, 151, 149, 143, 144, 136, 123, 113, 105, 99, 97, + 96, 103, 109, 116, 123, 130, 137, 146, 149, 142, 168, 184, 194, 219, 172, 79, + 57, 94, 158, 255, 255, 255, 222, 230, 221, 225, 146, 44, 34, 51, 48, 40, + 47, 42, 44, 40, 40, 39, 39, 39, 38, 38, 38, 38, 38, 38, 37, 37, + 36, 36, 39, 56, 72, 90, 107, 122, 135, 146, 153, 157, 160, 158, 148, 138, + 133, 128, 125, 132, 131, 133, 131, 122, 108, 102, 101, 99, 95, 94, 97, 100, + 101, 100, 97, 93, 90, 90, 93, 95, 93, 96, 102, 121, 120, 127, 138, 145, + 147, 149, 149, 153, 158, 161, 155, 152, 152, 151, 147, 130, 124, 112, 99, 88, + 83, 85, 88, 87, 95, 103, 110, 116, 120, 125, 126, 133, 156, 173, 197, 219, + 142, 43, 48, 102, 161, 255, 255, 255, 245, 230, 220, 221, 145, 49, 38, 51, + 48, 42, 47, 40, 39, 39, 40, 40, 40, 40, 38, 37, 36, 37, 37, 37, + 37, 37, 36, 36, 41, 63, 80, 95, 113, 129, 141, 152, 154, 148, 157, 155, + 144, 137, 139, 140, 139, 127, 128, 129, 127, 117, 104, 97, 100, 101, 95, 88, + 87, 90, 91, 87, 83, 81, 80, 82, 88, 93, 93, 95, 102, 111, 113, 123, + 138, 147, 149, 146, 142, 151, 154, 158, 154, 150, 149, 148, 144, 127, 119, 107, + 93, 82, 81, 88, 95, 88, 96, 106, 114, 119, 121, 123, 124, 126, 144, 160, + 195, 222, 135, 42, 67, 117, 196, 255, 255, 255, 255, 225, 222, 212, 162, 56, + 33, 43, 49, 47, 51, 42, 43, 40, 38, 38, 38, 38, 35, 32, 30, 34, + 34, 35, 37, 39, 39, 41, 44, 61, 86, 106, 116, 127, 142, 148, 145, 147, + 156, 159, 153, 147, 148, 148, 145, 136, 133, 126, 116, 105, 100, 98, 97, 81, + 78, 76, 74, 71, 67, 60, 59, 66, 79, 85, 82, 83, 93, 98, 96, 112, + 117, 126, 135, 142, 146, 149, 149, 142, 154, 163, 154, 145, 158, 166, 150, 131, + 104, 87, 84, 81, 86, 90, 83, 83, 92, 104, 112, 122, 143, 144, 123, 122, + 126, 175, 212, 198, 124, 48, 70, 119, 148, 255, 255, 255, 255, 209, 222, 227, + 186, 43, 33, 54, 58, 46, 42, 35, 42, 41, 40, 37, 36, 36, 35, 34, + 32, 30, 31, 34, 36, 38, 39, 38, 41, 60, 86, 106, 116, 128, 143, 148, + 148, 148, 153, 154, 149, 146, 146, 145, 141, 132, 128, 119, 114, 108, 102, 94, + 88, 75, 74, 72, 66, 55, 47, 42, 41, 79, 103, 116, 103, 84, 82, 91, + 99, 109, 117, 124, 131, 139, 143, 144, 145, 146, 149, 155, 157, 164, 180, 174, + 142, 112, 82, 77, 79, 68, 66, 73, 68, 76, 70, 81, 100, 120, 145, 159, + 155, 119, 129, 176, 206, 182, 81, 36, 79, 136, 150, 255, 255, 255, 255, 216, + 224, 218, 162, 45, 34, 54, 57, 45, 42, 34, 40, 40, 40, 36, 35, 35, + 35, 37, 38, 33, 34, 37, 38, 39, 39, 38, 41, 67, 91, 113, 122, 132, + 143, 149, 148, 152, 154, 151, 147, 145, 144, 141, 135, 129, 123, 115, 113, 110, + 104, 90, 79, 69, 74, 76, 71, 62, 57, 56, 60, 87, 111, 125, 111, 89, + 82, 90, 100, 110, 116, 125, 134, 140, 143, 144, 143, 148, 145, 151, 159, 171, + 191, 189, 163, 118, 80, 83, 94, 72, 63, 74, 67, 69, 78, 105, 122, 117, + 121, 143, 162, 139, 149, 188, 218, 196, 64, 53, 115, 143, 154, 255, 255, 255, + 255, 246, 228, 204, 131, 59, 34, 42, 46, 47, 52, 39, 38, 38, 40, 41, + 39, 39, 38, 39, 39, 36, 39, 41, 43, 44, 43, 42, 45, 80, 102, 121, + 130, 136, 143, 147, 149, 154, 151, 146, 144, 144, 143, 138, 133, 131, 127, 121, + 118, 114, 105, 92, 82, 84, 86, 89, 88, 85, 84, 84, 86, 89, 99, 103, + 100, 97, 99, 103, 104, 113, 120, 130, 137, 142, 144, 144, 144, 142, 146, 158, + 159, 162, 184, 208, 211, 142, 88, 81, 95, 76, 70, 77, 68, 75, 98, 135, + 147, 130, 121, 129, 135, 144, 152, 182, 218, 211, 60, 65, 136, 176, 198, 255, + 255, 255, 255, 255, 231, 211, 143, 56, 31, 39, 46, 48, 54, 40, 39, 38, + 42, 47, 47, 43, 40, 39, 39, 39, 41, 42, 45, 45, 46, 44, 49, 87, + 109, 129, 138, 143, 147, 151, 154, 151, 147, 143, 143, 143, 142, 137, 135, 137, + 136, 132, 128, 121, 114, 110, 106, 115, 110, 107, 106, 107, 104, 99, 95, 101, + 100, 98, 98, 104, 111, 116, 115, 119, 123, 132, 138, 142, 144, 144, 143, 144, + 148, 160, 160, 155, 176, 214, 234, 182, 113, 85, 95, 94, 96, 100, 88, 95, + 103, 123, 139, 151, 165, 160, 135, 142, 157, 189, 226, 221, 66, 70, 151, 177, + 255, 255, 255, 255, 255, 255, 227, 215, 160, 46, 32, 50, 54, 46, 45, 35, + 41, 44, 49, 55, 54, 48, 41, 39, 38, 39, 41, 42, 43, 45, 45, 45, + 51, 88, 110, 132, 143, 148, 150, 155, 162, 158, 153, 151, 152, 151, 147, 145, + 147, 141, 143, 141, 138, 134, 130, 131, 133, 134, 127, 121, 120, 123, 123, 116, + 110, 114, 114, 114, 108, 105, 107, 115, 124, 126, 128, 134, 138, 142, 143, 143, + 144, 154, 150, 157, 160, 160, 179, 209, 223, 207, 145, 98, 95, 109, 115, 115, + 110, 107, 110, 118, 126, 149, 184, 198, 181, 150, 171, 204, 234, 225, 87, 74, + 161, 161, 255, 255, 255, 255, 255, 255, 219, 216, 174, 60, 41, 52, 51, 43, + 45, 40, 47, 51, 57, 61, 58, 51, 44, 42, 41, 42, 43, 42, 43, 45, + 46, 48, 56, 89, 111, 133, 147, 149, 150, 156, 165, 166, 161, 158, 159, 155, + 149, 150, 153, 146, 145, 144, 144, 143, 139, 137, 135, 135, 131, 129, 127, 130, + 132, 130, 127, 124, 125, 125, 120, 115, 115, 124, 134, 138, 139, 141, 143, 145, + 146, 147, 149, 157, 149, 154, 159, 158, 172, 201, 218, 215, 174, 116, 96, 111, + 114, 108, 115, 118, 119, 129, 138, 149, 178, 205, 210, 172, 181, 199, 223, 226, + 125, 80, 158, 181, 255, 255, 255, 255, 255, 255, 212, 225, 204, 89, 53, 44, + 40, 42, 54, 50, 54, 60, 65, 66, 61, 52, 45, 44, 46, 48, 47, 45, + 45, 46, 49, 54, 60, 94, 114, 136, 147, 149, 146, 153, 161, 162, 159, 156, + 156, 150, 143, 143, 150, 149, 145, 141, 142, 145, 142, 134, 126, 131, 131, 130, + 129, 127, 127, 128, 131, 131, 128, 126, 129, 135, 139, 143, 147, 148, 148, 148, + 148, 150, 151, 153, 155, 156, 150, 156, 157, 148, 161, 198, 226, 241, 217, 160, + 125, 135, 128, 119, 134, 132, 119, 128, 151, 169, 186, 200, 200, 215, 202, 200, + 224, 251, 183, 108, 169, 174, 255, 255, 255, 255, 255, 255, 216, 209, 202, 107, + 39, 42, 43, 52, 48, 57, 51, 73, 79, 81, 74, 59, 47, 45, 50, 51, + 45, 44, 47, 48, 47, 52, 66, 98, 107, 127, 144, 151, 158, 164, 159, 154, + 160, 154, 150, 155, 150, 142, 147, 139, 137, 142, 142, 137, 141, 141, 129, 131, + 134, 138, 137, 135, 133, 133, 134, 136, 138, 138, 140, 142, 143, 145, 145, 157, + 155, 152, 150, 149, 151, 154, 156, 155, 153, 152, 159, 162, 159, 180, 218, 242, + 226, 186, 150, 139, 133, 127, 128, 137, 132, 141, 160, 175, 180, 188, 200, 206, + 192, 211, 212, 255, 218, 114, 170, 169, 255, 255, 255, 255, 255, 255, 218, 213, + 208, 112, 36, 36, 46, 57, 51, 56, 51, 63, 70, 72, 70, 60, 53, 52, + 55, 52, 47, 46, 48, 48, 46, 49, 62, 89, 110, 128, 140, 146, 151, 159, + 171, 162, 169, 164, 162, 165, 158, 149, 152, 151, 147, 149, 147, 139, 143, 142, + 131, 132, 134, 134, 132, 131, 133, 140, 145, 145, 145, 146, 146, 147, 149, 149, + 149, 151, 150, 150, 150, 151, 153, 155, 158, 162, 161, 161, 167, 168, 164, 184, + 223, 244, 232, 193, 158, 147, 150, 157, 166, 149, 140, 143, 157, 170, 179, 193, + 209, 203, 188, 194, 199, 251, 235, 141, 150, 165, 255, 255, 255, 255, 255, 255, + 255, 215, 212, 131, 43, 33, 48, 60, 58, 63, 67, 89, 94, 92, 86, 74, + 65, 61, 59, 51, 48, 49, 49, 47, 45, 46, 58, 88, 115, 124, 130, 148, + 150, 152, 170, 157, 164, 164, 163, 167, 160, 151, 153, 161, 157, 158, 154, 145, + 148, 149, 139, 137, 138, 138, 138, 137, 138, 144, 147, 148, 148, 149, 149, 148, + 148, 148, 149, 147, 148, 150, 152, 154, 154, 155, 157, 156, 159, 162, 166, 166, + 161, 181, 217, 236, 240, 216, 185, 173, 169, 169, 170, 161, 153, 154, 164, 175, + 182, 195, 207, 200, 200, 200, 206, 252, 255, 190, 154, 162, 255, 255, 255, 255, + 255, 255, 255, 215, 214, 156, 58, 36, 51, 58, 63, 76, 94, 130, 133, 125, + 110, 94, 82, 71, 63, 50, 50, 50, 50, 48, 44, 45, 55, 87, 117, 118, + 127, 157, 156, 143, 158, 149, 158, 157, 158, 164, 161, 154, 159, 165, 159, 160, + 159, 153, 157, 162, 152, 147, 149, 153, 154, 153, 148, 143, 139, 145, 145, 145, + 145, 144, 143, 144, 143, 150, 151, 153, 154, 155, 153, 153, 152, 148, 153, 157, + 160, 163, 157, 175, 208, 232, 243, 230, 203, 189, 181, 172, 164, 168, 165, 171, + 180, 186, 185, 188, 191, 178, 195, 201, 213, 233, 241, 214, 162, 161, 255, 255, + 255, 255, 255, 255, 255, 219, 219, 162, 69, 40, 58, 57, 68, 83, 110, 143, + 149, 140, 121, 104, 91, 78, 66, 50, 52, 53, 49, 45, 44, 47, 55, 72, + 113, 126, 137, 160, 153, 139, 156, 155, 161, 158, 157, 164, 164, 161, 167, 166, + 162, 164, 165, 160, 166, 170, 160, 158, 158, 160, 160, 156, 150, 145, 140, 146, + 146, 146, 146, 144, 144, 143, 142, 149, 152, 154, 154, 155, 156, 155, 153, 152, + 157, 160, 162, 163, 156, 169, 195, 235, 248, 232, 199, 188, 189, 186, 179, 169, + 170, 176, 183, 186, 185, 182, 180, 176, 194, 207, 225, 228, 235, 229, 176, 159, + 255, 255, 255, 255, 255, 255, 255, 245, 229, 159, 72, 41, 60, 55, 74, 88, + 114, 152, 158, 150, 127, 106, 91, 78, 64, 53, 56, 57, 50, 44, 43, 47, + 54, 60, 109, 141, 151, 155, 142, 143, 166, 160, 165, 160, 157, 163, 162, 159, + 167, 170, 166, 170, 169, 163, 167, 170, 159, 165, 161, 157, 153, 152, 151, 152, + 151, 150, 149, 150, 149, 149, 149, 148, 148, 147, 146, 148, 150, 152, 156, 158, + 159, 159, 161, 160, 161, 162, 153, 158, 178, 228, 252, 244, 209, 193, 192, 183, + 172, 169, 168, 170, 173, 176, 179, 180, 180, 192, 201, 214, 230, 236, 249, 240, + 185, 156, 255, 255, 255, 255, 255, 255, 255, 255, 233, 170, 83, 41, 57, 51, + 87, 103, 124, 158, 169, 161, 136, 109, 93, 81, 68, 61, 63, 62, 50, 40, + 40, 45, 51, 73, 110, 142, 152, 146, 141, 148, 164, 157, 163, 159, 157, 163, + 161, 156, 163, 171, 169, 172, 171, 165, 168, 168, 157, 167, 161, 155, 152, 153, + 154, 154, 153, 148, 149, 150, 149, 150, 150, 149, 149, 146, 145, 145, 144, 146, + 152, 157, 160, 157, 159, 155, 155, 159, 152, 151, 165, 207, 247, 252, 215, 189, + 182, 173, 164, 171, 168, 167, 167, 169, 175, 178, 179, 183, 196, 215, 211, 218, + 244, 227, 174, 157, 255, 255, 255, 255, 255, 255, 255, 255, 231, 190, 96, 41, + 50, 47, 99, 119, 142, 154, 167, 164, 140, 117, 103, 94, 84, 69, 71, 66, + 51, 41, 40, 44, 52, 102, 115, 135, 148, 145, 147, 152, 150, 154, 161, 160, + 161, 168, 165, 160, 166, 167, 165, 169, 169, 165, 168, 169, 157, 165, 163, 161, + 162, 162, 160, 155, 151, 144, 144, 145, 145, 147, 148, 148, 149, 153, 149, 145, + 141, 143, 148, 155, 156, 156, 156, 152, 155, 162, 159, 159, 170, 194, 238, 242, + 200, 169, 169, 176, 179, 173, 174, 174, 172, 174, 176, 178, 175, 181, 209, 237, + 214, 212, 245, 224, 179, 159, 255, 255, 255, 255, 255, 255, 255, 255, 243, 222, + 173, 69, 44, 55, 65, 120, 149, 154, 150, 140, 127, 129, 141, 130, 94, 97, + 79, 70, 67, 59, 50, 59, 85, 120, 129, 136, 142, 148, 150, 151, 152, 155, + 158, 160, 158, 160, 164, 165, 162, 166, 166, 164, 159, 162, 168, 172, 172, 171, + 169, 167, 168, 169, 166, 157, 150, 154, 144, 137, 137, 142, 146, 146, 144, 144, + 142, 140, 142, 145, 148, 151, 150, 156, 166, 163, 158, 167, 172, 165, 159, 184, + 218, 239, 207, 157, 146, 161, 166, 156, 175, 159, 165, 170, 159, 179, 184, 189, + 199, 216, 228, 230, 233, 216, 181, 150, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 224, 198, 118, 68, 56, 55, 93, 137, 154, 149, 145, 140, 139, 145, 130, + 97, 115, 89, 69, 61, 57, 55, 73, 100, 137, 141, 141, 142, 144, 144, 145, + 144, 151, 157, 159, 157, 160, 165, 168, 164, 158, 161, 164, 162, 163, 166, 168, + 167, 172, 169, 168, 168, 169, 166, 159, 151, 149, 146, 144, 142, 142, 141, 141, + 141, 144, 144, 146, 148, 151, 156, 159, 162, 154, 160, 156, 155, 167, 170, 162, + 161, 177, 200, 238, 242, 191, 143, 137, 152, 150, 172, 163, 171, 175, 163, 174, + 176, 190, 204, 226, 234, 230, 230, 215, 183, 160, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 222, 218, 162, 82, 50, 43, 70, 153, 165, 149, 136, 127, 125, + 130, 126, 107, 115, 88, 66, 57, 55, 60, 82, 110, 142, 141, 139, 139, 143, + 146, 149, 148, 150, 153, 156, 156, 159, 165, 167, 166, 157, 165, 171, 169, 169, + 169, 170, 168, 172, 169, 168, 167, 167, 162, 156, 148, 140, 142, 144, 143, 140, + 137, 137, 136, 145, 147, 153, 153, 152, 153, 156, 159, 161, 161, 156, 159, 171, + 168, 161, 165, 174, 178, 210, 242, 230, 190, 156, 139, 146, 168, 165, 169, 174, + 165, 171, 174, 178, 196, 222, 232, 231, 235, 226, 202, 155, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 218, 222, 199, 119, 78, 52, 52, 155, 163, 146, 133, + 128, 121, 124, 124, 113, 101, 86, 73, 70, 67, 71, 93, 120, 142, 141, 139, + 140, 146, 149, 150, 151, 148, 151, 154, 153, 157, 163, 167, 165, 157, 166, 172, + 172, 169, 168, 170, 168, 170, 169, 166, 166, 164, 159, 153, 148, 132, 134, 137, + 138, 139, 136, 136, 135, 143, 149, 154, 155, 149, 146, 149, 152, 160, 159, 156, + 161, 168, 160, 157, 170, 170, 176, 190, 204, 218, 224, 190, 138, 147, 164, 162, + 161, 166, 167, 173, 181, 172, 188, 209, 218, 221, 232, 228, 206, 194, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 242, 224, 234, 184, 145, 84, 35, 118, 144, + 140, 149, 153, 148, 142, 131, 114, 96, 89, 87, 83, 79, 84, 109, 135, 147, + 145, 145, 146, 148, 148, 146, 143, 147, 150, 151, 150, 153, 159, 163, 162, 155, + 162, 166, 162, 160, 161, 164, 163, 169, 169, 166, 164, 160, 155, 149, 145, 136, + 130, 129, 132, 137, 139, 137, 132, 133, 140, 145, 145, 140, 138, 139, 143, 137, + 143, 144, 149, 153, 147, 151, 170, 164, 177, 181, 169, 172, 195, 182, 140, 146, + 160, 164, 155, 160, 166, 166, 177, 179, 185, 195, 201, 206, 217, 215, 190, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 235, 212, 187, 121, 48, + 91, 133, 138, 152, 157, 152, 152, 148, 130, 104, 97, 94, 88, 84, 91, 117, + 143, 136, 139, 145, 147, 149, 149, 149, 148, 148, 150, 148, 146, 147, 153, 157, + 156, 158, 161, 161, 157, 158, 161, 163, 161, 166, 165, 163, 158, 153, 147, 144, + 141, 139, 133, 129, 132, 138, 138, 134, 128, 129, 131, 130, 127, 120, 114, 111, + 112, 114, 127, 132, 135, 143, 144, 153, 172, 169, 154, 147, 148, 158, 170, 162, + 136, 138, 154, 165, 154, 158, 165, 155, 164, 181, 184, 191, 194, 201, 217, 216, + 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 221, 208, 200, + 154, 78, 74, 124, 133, 144, 143, 141, 155, 163, 151, 124, 115, 106, 99, 97, + 105, 121, 138, 126, 132, 139, 142, 144, 145, 150, 153, 147, 148, 146, 143, 143, + 147, 150, 149, 162, 162, 160, 158, 160, 165, 162, 158, 160, 160, 156, 151, 146, + 140, 135, 133, 134, 132, 133, 135, 138, 137, 133, 127, 125, 124, 120, 116, 109, + 104, 99, 99, 109, 122, 125, 124, 140, 149, 158, 167, 168, 129, 117, 135, 159, + 163, 151, 129, 136, 149, 164, 150, 156, 169, 158, 169, 175, 181, 192, 197, 202, + 218, 219, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 226, + 218, 217, 179, 96, 48, 106, 126, 146, 147, 147, 164, 169, 152, 146, 134, 123, + 118, 120, 123, 129, 133, 131, 137, 142, 141, 138, 136, 141, 147, 147, 149, 145, + 140, 138, 142, 146, 145, 159, 158, 154, 153, 160, 163, 157, 149, 155, 154, 152, + 145, 139, 132, 128, 127, 122, 127, 135, 140, 139, 136, 133, 133, 119, 117, 117, + 117, 119, 117, 116, 117, 111, 122, 118, 117, 135, 152, 154, 155, 148, 127, 122, + 132, 139, 144, 138, 123, 138, 147, 161, 142, 150, 173, 169, 187, 170, 181, 196, + 198, 196, 207, 207, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 215, 229, 216, 192, 78, 46, 60, 113, 167, 149, 149, 165, 159, 164, 151, + 145, 138, 131, 134, 136, 136, 135, 135, 134, 134, 137, 140, 140, 138, 134, 137, + 142, 143, 138, 135, 138, 139, 139, 142, 145, 148, 149, 151, 151, 153, 156, 143, + 144, 141, 124, 110, 121, 131, 121, 132, 131, 131, 128, 128, 127, 126, 126, 127, + 122, 117, 113, 112, 114, 117, 121, 124, 124, 123, 126, 132, 135, 134, 132, 134, + 136, 139, 140, 138, 134, 130, 128, 135, 135, 140, 146, 151, 153, 161, 169, 175, + 167, 183, 182, 184, 197, 182, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 222, 224, 220, 203, 106, 30, 58, 98, 141, 181, 151, 171, 148, + 177, 153, 146, 141, 137, 138, 140, 141, 139, 143, 138, 133, 131, 133, 136, 139, + 139, 136, 137, 138, 137, 136, 134, 136, 139, 132, 135, 139, 141, 144, 145, 145, + 145, 135, 131, 127, 116, 107, 116, 128, 121, 131, 130, 129, 128, 128, 127, 125, + 124, 122, 120, 116, 111, 110, 112, 114, 118, 121, 125, 127, 128, 128, 130, 132, + 133, 132, 134, 137, 139, 139, 136, 132, 131, 134, 134, 138, 144, 146, 147, 151, + 158, 166, 161, 180, 180, 183, 198, 186, 200, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 246, 219, 226, 215, 149, 19, 44, 73, 126, 189, 156, + 167, 150, 172, 156, 149, 143, 140, 139, 139, 138, 137, 141, 137, 133, 131, 132, + 135, 138, 138, 140, 135, 135, 139, 138, 129, 132, 141, 136, 136, 139, 140, 143, + 142, 138, 133, 123, 113, 110, 109, 105, 111, 123, 119, 126, 124, 123, 122, 121, + 120, 120, 119, 118, 116, 114, 111, 110, 111, 112, 113, 118, 123, 126, 125, 122, + 121, 125, 130, 129, 131, 135, 138, 139, 137, 134, 133, 131, 132, 134, 137, 141, + 140, 145, 151, 160, 157, 178, 177, 180, 195, 185, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 215, 229, 217, 192, 36, 29, 55, 130, + 173, 167, 162, 168, 156, 161, 151, 144, 140, 137, 133, 131, 130, 131, 132, 134, + 137, 138, 138, 136, 135, 141, 132, 130, 137, 133, 121, 122, 135, 142, 141, 139, + 140, 142, 136, 127, 120, 113, 100, 100, 106, 106, 110, 117, 116, 117, 115, 116, + 115, 114, 113, 113, 113, 114, 115, 114, 113, 112, 112, 111, 112, 114, 117, 118, + 116, 114, 114, 117, 120, 125, 128, 132, 135, 135, 134, 131, 131, 127, 125, 127, + 130, 134, 136, 145, 155, 159, 157, 176, 175, 174, 186, 176, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 225, 209, 215, 73, 32, + 51, 118, 176, 177, 167, 172, 156, 161, 150, 141, 139, 137, 129, 129, 130, 133, + 134, 137, 137, 136, 134, 132, 131, 132, 122, 121, 127, 125, 113, 117, 129, 136, + 134, 131, 130, 131, 126, 115, 107, 106, 96, 99, 109, 108, 108, 111, 106, 108, + 107, 108, 108, 107, 109, 109, 110, 113, 115, 115, 114, 115, 114, 114, 113, 115, + 112, 109, 109, 111, 113, 113, 112, 122, 124, 128, 130, 130, 128, 125, 124, 125, + 121, 119, 119, 123, 129, 140, 152, 155, 154, 173, 172, 171, 182, 167, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 220, 204, 217, + 101, 37, 49, 79, 183, 174, 169, 156, 166, 158, 145, 138, 138, 138, 132, 135, + 140, 143, 141, 137, 132, 128, 127, 130, 133, 127, 122, 121, 126, 123, 119, 123, + 134, 127, 126, 125, 124, 124, 118, 111, 105, 104, 98, 104, 109, 106, 108, 110, + 102, 105, 105, 105, 108, 108, 109, 111, 113, 116, 116, 118, 117, 117, 116, 117, + 116, 118, 112, 108, 108, 113, 115, 116, 112, 120, 122, 126, 128, 129, 126, 123, + 121, 127, 121, 114, 113, 113, 117, 129, 141, 148, 146, 166, 169, 172, 184, 166, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, + 206, 204, 107, 35, 50, 62, 161, 170, 168, 154, 166, 156, 141, 133, 135, 136, + 131, 134, 144, 141, 140, 136, 131, 127, 127, 130, 134, 128, 127, 126, 124, 122, + 123, 126, 131, 124, 125, 125, 123, 121, 115, 110, 106, 101, 102, 108, 104, 98, + 106, 112, 101, 102, 102, 105, 106, 109, 112, 114, 115, 120, 120, 120, 119, 119, + 120, 120, 119, 117, 113, 112, 109, 113, 113, 118, 117, 119, 120, 126, 128, 131, + 128, 127, 125, 127, 122, 117, 116, 113, 113, 122, 132, 145, 142, 163, 170, 177, + 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 241, 212, 194, 101, 30, 53, 69, 124, 169, 163, 166, 154, 152, 136, 128, + 130, 131, 126, 129, 139, 127, 131, 134, 134, 132, 130, 131, 132, 128, 130, 127, + 119, 115, 117, 120, 120, 126, 127, 126, 121, 115, 109, 105, 105, 101, 107, 111, + 102, 94, 106, 115, 105, 104, 104, 106, 109, 112, 115, 118, 120, 125, 124, 124, + 122, 123, 125, 125, 125, 116, 117, 118, 115, 113, 114, 120, 125, 121, 125, 129, + 133, 134, 134, 130, 131, 128, 125, 122, 121, 117, 116, 122, 131, 146, 141, 163, + 170, 178, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 211, 216, 87, 34, 45, 53, 63, 92, 128, 146, 143, 126, + 125, 112, 116, 141, 118, 140, 134, 127, 126, 126, 126, 127, 128, 128, 129, 122, + 128, 127, 116, 115, 124, 128, 126, 129, 137, 137, 126, 115, 110, 106, 103, 109, + 108, 107, 106, 107, 107, 105, 103, 111, 111, 111, 115, 119, 122, 123, 124, 127, + 132, 131, 129, 137, 133, 127, 129, 130, 128, 125, 124, 122, 122, 122, 122, 138, + 142, 145, 141, 136, 135, 134, 133, 130, 125, 116, 112, 113, 114, 115, 117, 133, + 143, 157, 168, 173, 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 213, 222, 122, 65, 54, 46, 51, 64, 72, 77, + 80, 79, 84, 79, 121, 141, 127, 127, 132, 130, 129, 128, 126, 123, 120, 120, + 120, 117, 123, 124, 118, 120, 131, 139, 137, 116, 125, 135, 136, 127, 114, 102, + 97, 98, 96, 94, 92, 95, 100, 104, 109, 109, 110, 112, 114, 118, 120, 122, + 121, 126, 130, 128, 127, 138, 137, 133, 137, 126, 126, 127, 130, 133, 137, 140, + 141, 142, 145, 144, 142, 141, 140, 133, 126, 132, 131, 124, 119, 119, 117, 119, + 121, 135, 146, 161, 173, 176, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 240, 220, 162, 105, 68, 44, 47, 52, + 45, 42, 51, 51, 59, 59, 127, 141, 135, 119, 134, 130, 132, 133, 129, 123, + 118, 117, 117, 125, 129, 127, 120, 120, 127, 131, 128, 114, 118, 130, 140, 132, + 111, 96, 93, 97, 95, 93, 91, 91, 92, 94, 97, 97, 99, 100, 103, 107, + 109, 110, 109, 119, 122, 117, 114, 122, 120, 116, 121, 126, 127, 132, 136, 142, + 146, 148, 149, 139, 140, 141, 142, 146, 146, 139, 130, 127, 129, 127, 123, 119, + 116, 119, 121, 133, 145, 160, 171, 174, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 190, 140, 90, 46, + 42, 49, 48, 47, 51, 50, 58, 68, 117, 133, 130, 118, 132, 127, 131, 134, + 132, 126, 122, 122, 123, 130, 131, 127, 120, 117, 119, 118, 114, 125, 122, 127, + 136, 127, 105, 94, 98, 98, 103, 107, 108, 106, 102, 98, 97, 94, 95, 97, + 100, 105, 106, 105, 105, 108, 112, 107, 106, 113, 110, 106, 108, 112, 113, 116, + 120, 122, 123, 123, 122, 113, 117, 120, 122, 124, 125, 122, 116, 119, 124, 125, + 123, 119, 115, 118, 121, 139, 149, 163, 174, 173, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 172, + 120, 57, 29, 37, 52, 51, 43, 45, 57, 85, 99, 126, 120, 117, 124, 124, + 127, 131, 130, 127, 123, 123, 124, 122, 122, 121, 118, 119, 121, 121, 117, 128, + 123, 124, 131, 126, 107, 101, 106, 103, 110, 118, 122, 123, 121, 120, 122, 116, + 116, 117, 117, 119, 118, 116, 113, 108, 116, 115, 117, 125, 122, 116, 117, 111, + 112, 116, 118, 121, 120, 119, 118, 122, 128, 131, 124, 116, 112, 111, 110, 113, + 119, 123, 123, 121, 123, 127, 132, 148, 155, 166, 179, 176, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 204, 192, 147, 80, 34, 33, 53, 53, 37, 36, 51, 91, 91, 126, 124, 120, + 120, 125, 125, 125, 124, 123, 120, 119, 117, 122, 120, 120, 121, 124, 125, 124, + 120, 119, 118, 122, 131, 128, 116, 109, 109, 120, 123, 125, 126, 125, 128, 133, + 138, 140, 138, 134, 133, 131, 130, 126, 124, 127, 133, 132, 132, 138, 131, 120, + 120, 126, 128, 131, 136, 140, 142, 145, 146, 158, 165, 166, 155, 138, 127, 123, + 119, 110, 111, 113, 116, 120, 127, 135, 142, 141, 145, 157, 172, 202, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 237, 204, 169, 110, 62, 46, 53, 51, 41, 45, 49, 77, 93, 124, + 131, 114, 124, 126, 124, 120, 120, 122, 121, 118, 114, 127, 123, 122, 124, 127, + 125, 122, 118, 117, 118, 121, 124, 125, 121, 115, 110, 125, 128, 130, 128, 126, + 127, 133, 140, 146, 143, 139, 137, 136, 138, 137, 137, 139, 143, 139, 136, 141, + 134, 123, 124, 129, 129, 132, 136, 141, 146, 149, 150, 162, 169, 173, 165, 151, + 139, 128, 121, 118, 114, 112, 114, 120, 129, 138, 143, 138, 139, 154, 178, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 216, 186, 137, 86, 57, 45, 40, 36, 60, 48, 58, + 91, 110, 131, 101, 126, 128, 123, 118, 119, 123, 125, 122, 117, 122, 118, 119, + 124, 128, 128, 125, 121, 121, 122, 121, 115, 114, 118, 116, 111, 110, 118, 128, + 130, 133, 134, 139, 144, 143, 140, 137, 136, 141, 145, 148, 149, 130, 135, 131, + 133, 142, 141, 136, 140, 139, 140, 140, 141, 144, 147, 150, 151, 157, 165, 174, + 173, 169, 159, 146, 133, 134, 127, 120, 120, 126, 133, 139, 140, 151, 151, 169, + 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 237, 193, 149, 135, 79, 41, 33, 60, 48, + 45, 60, 83, 104, 122, 125, 113, 122, 127, 131, 129, 124, 119, 118, 118, 111, + 116, 118, 114, 116, 122, 126, 123, 120, 115, 115, 121, 125, 122, 114, 109, 124, + 127, 130, 129, 133, 138, 144, 145, 142, 145, 139, 137, 144, 141, 137, 140, 139, + 133, 135, 143, 141, 132, 134, 142, 138, 138, 143, 149, 151, 147, 147, 148, 159, + 162, 169, 171, 164, 152, 149, 150, 141, 124, 128, 130, 125, 138, 150, 137, 149, + 141, 170, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 171, 157, 103, 61, 40, + 47, 47, 46, 63, 86, 105, 121, 125, 115, 115, 120, 122, 123, 122, 121, 121, + 121, 115, 118, 118, 115, 117, 123, 125, 119, 120, 118, 118, 119, 121, 118, 113, + 110, 124, 128, 133, 135, 137, 139, 139, 136, 135, 136, 131, 127, 136, 134, 129, + 134, 133, 128, 130, 137, 138, 131, 133, 143, 136, 137, 139, 147, 150, 149, 150, + 153, 161, 163, 167, 170, 163, 153, 144, 143, 136, 122, 123, 128, 126, 140, 151, + 141, 137, 139, 172, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 181, 143, + 104, 71, 48, 45, 46, 66, 90, 105, 119, 124, 117, 114, 115, 115, 116, 118, + 120, 120, 119, 118, 118, 116, 115, 118, 123, 124, 117, 113, 113, 115, 117, 117, + 120, 120, 120, 121, 123, 126, 130, 132, 134, 134, 134, 134, 134, 130, 125, 135, + 134, 131, 136, 134, 128, 126, 127, 122, 114, 115, 122, 125, 125, 127, 134, 138, + 139, 144, 150, 161, 159, 160, 166, 164, 156, 145, 137, 140, 124, 126, 129, 131, + 140, 147, 136, 129, 147, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, + 193, 175, 148, 107, 53, 45, 48, 68, 93, 105, 115, 121, 118, 120, 118, 113, + 113, 115, 116, 115, 113, 117, 114, 112, 113, 117, 121, 122, 116, 112, 114, 116, + 113, 114, 117, 122, 123, 125, 120, 118, 120, 126, 131, 138, 144, 136, 138, 131, + 129, 137, 137, 134, 139, 134, 128, 124, 121, 115, 107, 107, 113, 119, 116, 117, + 123, 127, 131, 137, 143, 155, 152, 153, 160, 164, 157, 147, 138, 133, 124, 126, + 133, 139, 143, 143, 139, 124, 153, 194, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 237, 198, 192, 169, 127, 49, 48, 49, 70, 95, 104, 113, 120, 119, 124, + 119, 114, 112, 113, 113, 112, 110, 112, 109, 109, 111, 115, 117, 119, 116, 116, + 118, 118, 111, 109, 114, 118, 117, 127, 121, 117, 121, 127, 130, 137, 143, 135, + 139, 133, 131, 139, 139, 133, 138, 132, 129, 127, 126, 123, 120, 122, 127, 122, + 119, 117, 123, 126, 131, 138, 146, 154, 149, 150, 157, 159, 151, 142, 135, 116, + 116, 122, 134, 144, 144, 142, 146, 126, 155, 213, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 197, 198, 181, 149, 65, 57, 53, 71, 95, 106, 111, 119, + 118, 119, 116, 113, 112, 112, 113, 114, 113, 110, 108, 109, 112, 112, 111, 114, + 116, 109, 111, 112, 107, 110, 118, 122, 121, 123, 115, 116, 124, 127, 123, 121, + 125, 137, 142, 137, 136, 143, 142, 136, 140, 138, 137, 135, 132, 128, 125, 126, + 126, 122, 118, 118, 122, 127, 131, 140, 147, 154, 153, 154, 155, 149, 141, 136, + 133, 119, 125, 128, 135, 141, 135, 132, 144, 146, 163, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 237, 201, 184, 170, 94, 66, 58, 73, 96, 108, + 113, 119, 119, 113, 113, 114, 112, 111, 111, 113, 114, 112, 111, 113, 114, 110, + 105, 110, 115, 103, 106, 106, 103, 110, 123, 126, 119, 121, 113, 111, 122, 125, + 118, 114, 118, 136, 144, 140, 140, 147, 144, 137, 139, 141, 141, 138, 132, 123, + 119, 116, 114, 116, 110, 112, 117, 124, 128, 137, 147, 151, 152, 156, 154, 142, + 132, 130, 135, 131, 139, 138, 138, 140, 128, 129, 152, 174, 175, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 180, 177, 109, 73, 62, 74, + 99, 110, 117, 122, 122, 111, 113, 116, 113, 110, 108, 109, 112, 115, 114, 117, + 117, 109, 101, 106, 114, 114, 114, 109, 102, 106, 115, 115, 103, 127, 113, 111, + 119, 124, 122, 122, 131, 128, 137, 134, 134, 141, 137, 129, 130, 134, 136, 135, + 131, 125, 122, 120, 116, 116, 112, 113, 120, 126, 131, 140, 147, 144, 148, 154, + 150, 135, 126, 130, 141, 130, 141, 138, 136, 140, 132, 140, 171, 187, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 199, 191, 147, 76, + 70, 83, 103, 109, 113, 124, 129, 126, 115, 116, 116, 110, 110, 110, 100, 111, + 108, 109, 112, 111, 107, 107, 109, 115, 115, 111, 104, 105, 114, 114, 106, 114, + 116, 112, 115, 125, 122, 117, 125, 141, 141, 136, 130, 127, 131, 138, 142, 134, + 129, 124, 129, 136, 135, 127, 120, 128, 124, 121, 122, 128, 137, 145, 148, 146, + 146, 146, 142, 127, 115, 118, 129, 129, 145, 134, 140, 125, 118, 162, 185, 192, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 202, + 171, 99, 78, 80, 101, 112, 118, 127, 129, 120, 112, 113, 113, 107, 109, 112, + 106, 106, 104, 105, 110, 111, 109, 110, 113, 113, 111, 106, 103, 104, 108, 107, + 100, 103, 105, 105, 111, 124, 125, 122, 129, 129, 130, 129, 125, 125, 131, 136, + 139, 140, 134, 129, 131, 134, 135, 130, 127, 125, 124, 124, 126, 133, 141, 146, + 149, 148, 145, 146, 139, 127, 118, 124, 135, 134, 140, 143, 130, 126, 143, 166, + 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 241, 220, 177, 139, 97, 79, 96, 111, 118, 127, 129, 115, 110, 113, 112, 104, + 106, 112, 108, 104, 102, 103, 108, 109, 108, 109, 113, 117, 111, 108, 111, 112, + 109, 106, 105, 102, 105, 104, 111, 124, 125, 125, 133, 121, 125, 126, 123, 123, + 128, 131, 133, 138, 136, 131, 130, 130, 133, 132, 132, 122, 123, 126, 129, 135, + 140, 144, 147, 151, 149, 147, 140, 130, 124, 131, 141, 143, 134, 148, 131, 140, + 176, 175, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 243, 187, 156, 106, 81, 95, 108, 112, 123, 130, 115, 111, 116, + 116, 104, 103, 108, 104, 106, 103, 103, 106, 106, 104, 105, 108, 119, 109, 108, + 117, 117, 109, 104, 107, 107, 111, 109, 115, 125, 124, 124, 133, 125, 129, 129, + 120, 118, 122, 126, 123, 127, 129, 130, 126, 126, 128, 130, 130, 126, 127, 127, + 129, 132, 136, 140, 142, 154, 153, 149, 143, 135, 132, 135, 138, 146, 133, 142, + 142, 162, 188, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 224, 124, 91, 83, 100, 108, 107, 117, 124, 114, + 113, 120, 121, 110, 107, 109, 104, 107, 104, 103, 105, 105, 103, 104, 108, 114, + 106, 106, 113, 113, 106, 99, 100, 107, 112, 111, 113, 123, 119, 118, 129, 129, + 133, 129, 116, 114, 120, 124, 120, 119, 127, 130, 125, 124, 125, 125, 122, 126, + 127, 127, 126, 128, 133, 138, 144, 153, 154, 151, 147, 141, 137, 136, 133, 136, + 129, 124, 160, 182, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 232, 72, 66, 83, 106, 109, 106, 113, + 116, 112, 110, 117, 119, 111, 110, 112, 105, 104, 100, 99, 102, 103, 102, 105, + 110, 113, 109, 107, 112, 113, 107, 102, 99, 101, 105, 106, 109, 117, 115, 114, + 125, 122, 128, 124, 111, 110, 119, 124, 122, 120, 127, 130, 123, 122, 124, 121, + 114, 120, 122, 123, 123, 125, 130, 140, 147, 149, 150, 150, 146, 143, 142, 138, + 130, 127, 127, 124, 173, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 83, 103, 102, + 104, 116, 118, 118, 110, 112, 113, 107, 109, 111, 104, 104, 100, 99, 101, 101, + 100, 102, 107, 113, 113, 112, 110, 110, 113, 106, 99, 97, 102, 103, 106, 113, + 109, 110, 122, 112, 122, 121, 109, 108, 118, 122, 115, 115, 122, 123, 117, 118, + 124, 124, 116, 116, 120, 124, 125, 125, 127, 137, 142, 143, 146, 144, 139, 140, + 143, 141, 133, 133, 137, 154, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 94, 93, 103, 122, 126, 126, 114, 110, 108, 102, 104, 107, 100, 109, 104, 101, + 101, 99, 96, 97, 102, 107, 112, 110, 104, 105, 110, 106, 94, 101, 107, 106, + 107, 112, 107, 107, 118, 104, 116, 117, 107, 105, 115, 115, 106, 106, 114, 112, + 108, 112, 126, 128, 122, 114, 119, 125, 125, 125, 124, 130, 133, 141, 141, 138, + 134, 137, 144, 145, 135, 148, 152, 188, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 203, 101, 113, 126, 127, 115, 108, 110, 112, 109, 106, 107, 105, + 101, 107, 92, 101, 92, 101, 99, 100, 107, 108, 102, 99, 104, 106, 104, 99, + 98, 104, 112, 112, 105, 102, 105, 102, 107, 110, 110, 107, 107, 113, 119, 113, + 107, 104, 109, 110, 110, 115, 122, 111, 116, 123, 125, 124, 122, 128, 134, 143, + 129, 157, 131, 143, 121, 150, 131, 162, 185, 213, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 107, 105, + 110, 118, 113, 115, 96, 100, 90, 101, 102, 103, 109, 109, 104, 103, 106, 109, + 108, 100, 98, 102, 105, 102, 96, 96, 101, 102, 106, 110, 112, 110, 109, 111, + 115, 104, 105, 110, 118, 121, 114, 111, 112, 115, 118, 120, 122, 123, 122, 123, + 123, 120, 129, 131, 140, 146, 141, 142, 161, 167, 178, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 201, 97, 83, 94, 97, 102, 106, 105, 101, 100, + 102, 104, 103, 100, 100, 101, 101, 94, 89, 92, 98, 100, 101, 105, 108, 109, + 109, 107, 107, 101, 103, 111, 119, 120, 113, 106, 106, 116, 117, 116, 118, 119, + 122, 121, 117, 117, 132, 123, 134, 144, 134, 125, 162, 194, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 101, 100, 101, 102, + 101, 98, 98, 97, 96, 99, 101, 104, 100, 95, 90, 92, 97, 94, 94, 95, + 98, 103, 104, 104, 103, 106, 105, 107, 108, 109, 107, 106, 108, 109, 113, 114, + 114, 115, 120, 121, 119, 120, 118, 132, 126, 159, 152, 176, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 95, 98, 100, 101, 100, 97, 96, 93, 99, 104, 102, 98, 93, 94, 94, 90, + 88, 88, 90, 95, 99, 104, 105, 107, 106, 105, 103, 104, 106, 108, 110, 105, + 114, 116, 112, 109, 114, 118, 120, 120, 108, 132, 129, 144, 181, 238, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 202, 98, 97, 95, 96, 92, 96, 100, 98, 96, 96, 94, + 88, 87, 86, 86, 86, 90, 95, 102, 106, 101, 104, 106, 105, 106, 108, 107, + 106, 106, 117, 120, 111, 103, 108, 113, 112, 113, 110, 120, 144, 117, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 202, 95, 98, 97, 97, 96, 92, 93, + 95, 93, 84, 82, 84, 86, 85, 86, 88, 95, 99, 94, 99, 102, 99, 101, + 105, 104, 102, 108, 116, 116, 106, 102, 110, 112, 107, 102, 112, 111, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 106, 98, + 92, 94, 98, 95, 85, 79, 81, 85, 85, 81, 81, 84, 90, 90, 95, 94, + 89, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 216, 165, 146, 153, 122, 144, 139, 161, 182, 202, 203, 149, 172, 251, 242, 200, + 180, 248, 255, 170, 197, 224, 225, 234, 233, 235, 231, 210, 212, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, + 135, 144, 131, 158, 145, 152, 116, 137, 134, 136, 153, 180, 195, 153, 157, 241, + 250, 207, 198, 255, 247, 167, 205, 231, 216, 211, 209, 212, 212, 197, 178, 181, + 198, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, + 115, 127, 136, 137, 125, 146, 141, 147, 127, 147, 149, 122, 133, 156, 176, 162, + 158, 239, 255, 211, 194, 243, 235, 179, 180, 176, 174, 171, 163, 162, 172, 176, + 174, 171, 175, 170, 187, 198, 214, 240, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, + 106, 109, 116, 126, 133, 149, 135, 137, 132, 125, 117, 131, 135, 119, 132, 138, + 150, 164, 157, 215, 223, 175, 147, 176, 182, 155, 116, 81, 103, 112, 112, 112, + 117, 123, 129, 131, 133, 126, 154, 178, 199, 216, 223, 228, 243, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, + 113, 99, 110, 112, 115, 122, 127, 123, 111, 107, 111, 106, 120, 140, 150, 115, + 130, 121, 122, 152, 140, 170, 156, 143, 134, 140, 115, 113, 98, 60, 77, 94, + 108, 113, 105, 94, 98, 109, 120, 111, 142, 163, 169, 163, 151, 148, 160, 176, + 202, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 191, 157, + 53, 32, 71, 109, 119, 116, 114, 113, 109, 93, 79, 80, 104, 123, 127, 131, + 141, 114, 111, 113, 119, 122, 124, 130, 137, 143, 140, 126, 108, 96, 91, 83, + 76, 91, 94, 100, 92, 75, 79, 97, 104, 88, 126, 160, 155, 124, 106, 119, + 141, 164, 199, 193, 142, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 206, 190, 178, + 180, 150, 63, 52, 80, 103, 106, 101, 99, 95, 89, 92, 84, 85, 100, 112, + 117, 119, 125, 116, 110, 107, 112, 115, 115, 113, 115, 92, 97, 94, 85, 78, + 78, 77, 76, 82, 78, 81, 77, 67, 71, 82, 83, 80, 109, 134, 134, 122, + 118, 126, 135, 138, 150, 141, 113, 175, 204, 196, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 176, 169, + 165, 153, 150, 130, 64, 67, 79, 87, 87, 85, 87, 82, 75, 75, 74, 74, + 78, 82, 87, 89, 89, 100, 91, 87, 90, 92, 88, 80, 76, 64, 74, 78, + 73, 66, 64, 66, 68, 73, 64, 64, 66, 62, 65, 69, 63, 65, 83, 96, + 98, 104, 117, 121, 118, 95, 88, 83, 76, 142, 161, 151, 159, 190, 184, 227, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, + 174, 159, 162, 157, 147, 125, 70, 68, 70, 70, 71, 78, 85, 82, 73, 72, + 78, 79, 73, 73, 79, 81, 77, 92, 86, 84, 87, 87, 80, 74, 72, 67, + 70, 71, 68, 62, 60, 60, 60, 69, 59, 61, 67, 64, 65, 65, 58, 62, + 74, 79, 77, 88, 110, 119, 115, 90, 78, 82, 80, 122, 117, 109, 128, 132, + 135, 178, 241, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, + 187, 160, 166, 165, 177, 169, 140, 110, 66, 67, 64, 61, 64, 75, 83, 79, + 70, 66, 75, 76, 69, 68, 74, 76, 70, 73, 74, 77, 79, 77, 71, 71, + 76, 67, 63, 59, 60, 61, 62, 60, 59, 63, 56, 64, 72, 66, 62, 63, + 60, 68, 79, 83, 78, 84, 105, 122, 127, 102, 85, 94, 90, 115, 96, 83, + 100, 115, 130, 144, 194, 212, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 231, 172, 158, 155, 172, 169, 165, 142, 107, 89, 68, 70, 64, 61, 65, 73, + 75, 69, 61, 59, 66, 67, 62, 62, 66, 66, 62, 53, 55, 60, 63, 60, + 56, 62, 72, 72, 63, 56, 58, 61, 61, 57, 55, 56, 50, 61, 72, 64, + 57, 60, 60, 60, 69, 74, 72, 74, 86, 104, 115, 101, 81, 90, 88, 114, + 99, 79, 77, 111, 133, 125, 163, 182, 193, 206, 239, 212, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 165, 156, 147, 156, 162, 138, 121, 107, 88, 85, 76, 67, 63, 60, + 64, 67, 67, 62, 58, 70, 71, 71, 69, 68, 68, 66, 63, 60, 58, 58, + 60, 58, 57, 64, 73, 72, 66, 62, 65, 65, 59, 53, 53, 54, 47, 58, + 71, 66, 59, 61, 61, 56, 56, 60, 66, 67, 68, 74, 83, 96, 84, 99, + 94, 120, 115, 95, 81, 77, 105, 114, 165, 171, 167, 168, 178, 186, 186, 189, + 199, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 231, 154, 137, 135, 136, 105, 102, 70, 64, 77, 75, 70, 52, 58, + 56, 56, 60, 63, 63, 62, 62, 67, 63, 62, 63, 62, 58, 53, 51, 61, + 54, 48, 49, 49, 50, 53, 60, 57, 56, 60, 67, 65, 60, 57, 60, 59, + 49, 58, 74, 72, 66, 66, 64, 69, 59, 60, 72, 76, 66, 60, 63, 71, + 74, 98, 88, 105, 105, 92, 76, 88, 88, 81, 124, 118, 131, 164, 173, 157, + 163, 174, 188, 204, 221, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 227, 152, 134, 140, 143, 98, 62, 62, 64, 66, 68, 64, 57, + 50, 54, 51, 50, 53, 60, 63, 62, 59, 58, 60, 63, 62, 60, 56, 54, + 53, 54, 54, 52, 49, 47, 46, 47, 50, 49, 47, 52, 61, 64, 60, 60, + 64, 62, 59, 57, 60, 67, 71, 69, 66, 62, 63, 64, 67, 68, 67, 63, + 60, 60, 71, 76, 76, 90, 107, 94, 66, 67, 70, 83, 103, 115, 125, 140, + 158, 155, 161, 158, 169, 188, 192, 208, 245, 252, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 156, 145, 142, 150, 133, 68, 62, 64, 67, 69, 68, + 63, 56, 52, 48, 47, 48, 53, 59, 61, 57, 53, 57, 59, 60, 60, 58, + 55, 54, 54, 53, 53, 52, 49, 46, 46, 48, 50, 51, 48, 51, 57, 59, + 57, 58, 63, 62, 59, 55, 58, 63, 65, 62, 59, 65, 65, 66, 68, 70, + 69, 65, 62, 59, 67, 70, 73, 86, 100, 91, 72, 64, 62, 66, 77, 85, + 97, 122, 147, 172, 164, 162, 178, 189, 183, 191, 218, 242, 252, 246, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 226, 147, 147, 140, 125, 102, 55, 69, 72, 74, + 73, 67, 59, 52, 48, 44, 44, 48, 54, 59, 59, 54, 49, 56, 57, 57, + 55, 54, 52, 52, 53, 50, 50, 49, 47, 46, 45, 48, 50, 54, 51, 51, + 53, 54, 54, 56, 61, 61, 58, 56, 56, 58, 59, 57, 54, 62, 62, 63, + 66, 68, 68, 65, 62, 62, 64, 65, 70, 78, 84, 80, 73, 71, 65, 63, + 67, 71, 80, 103, 127, 143, 137, 143, 155, 162, 177, 197, 206, 220, 245, 248, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 231, 172, 153, 151, 117, 75, 73, 76, 79, + 81, 79, 71, 60, 50, 46, 44, 45, 46, 49, 54, 57, 58, 54, 51, 54, + 55, 54, 52, 50, 49, 50, 51, 47, 47, 47, 46, 45, 46, 48, 51, 53, + 52, 52, 53, 54, 55, 57, 59, 59, 57, 55, 56, 57, 57, 56, 54, 56, + 56, 56, 59, 62, 63, 61, 59, 65, 62, 64, 70, 72, 71, 67, 66, 60, + 54, 54, 60, 62, 62, 70, 82, 90, 98, 113, 113, 115, 160, 204, 210, 201, + 233, 240, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 231, 184, 188, 160, 129, 84, 54, 75, + 98, 82, 80, 74, 64, 53, 46, 46, 47, 46, 47, 48, 50, 53, 54, 53, + 52, 53, 53, 53, 51, 49, 48, 49, 50, 45, 46, 46, 45, 45, 46, 49, + 52, 50, 52, 53, 54, 55, 57, 58, 59, 53, 52, 52, 53, 55, 56, 55, + 55, 52, 52, 53, 56, 59, 61, 60, 59, 62, 59, 61, 69, 70, 65, 61, + 63, 57, 49, 50, 61, 68, 63, 59, 61, 72, 77, 99, 105, 96, 126, 177, + 205, 205, 230, 240, 242, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 246, 213, 184, 183, 194, 145, 88, 64, + 70, 91, 92, 72, 70, 63, 56, 50, 48, 50, 53, 44, 45, 46, 47, 48, + 50, 50, 51, 52, 53, 53, 52, 50, 48, 48, 49, 46, 46, 46, 46, 45, + 46, 49, 52, 49, 52, 54, 53, 55, 58, 59, 56, 47, 48, 49, 50, 52, + 53, 54, 54, 53, 53, 53, 57, 61, 64, 64, 63, 64, 63, 64, 69, 71, + 68, 64, 63, 65, 56, 54, 66, 74, 74, 71, 73, 79, 68, 90, 121, 112, + 98, 133, 185, 204, 222, 244, 246, 251, 254, 245, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 214, 199, 184, 182, 173, 107, + 62, 65, 78, 83, 71, 62, 59, 54, 52, 51, 51, 51, 50, 42, 45, 47, + 49, 50, 50, 49, 49, 52, 54, 55, 54, 52, 50, 49, 49, 47, 48, 47, + 46, 46, 47, 50, 53, 51, 54, 53, 49, 49, 54, 56, 54, 48, 49, 50, + 50, 51, 52, 53, 53, 53, 53, 53, 57, 62, 65, 66, 66, 79, 76, 71, + 68, 69, 71, 66, 61, 59, 52, 53, 61, 64, 62, 67, 75, 72, 64, 75, + 105, 111, 88, 97, 139, 161, 180, 230, 244, 242, 252, 243, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 220, 208, 190, 177, 182, + 145, 75, 60, 75, 64, 57, 57, 57, 54, 51, 50, 52, 51, 48, 44, 42, + 46, 52, 55, 55, 53, 50, 49, 52, 54, 56, 56, 54, 51, 49, 49, 48, + 49, 48, 47, 46, 47, 51, 53, 55, 56, 52, 44, 44, 50, 54, 52, 51, + 52, 53, 52, 52, 52, 54, 54, 52, 52, 53, 57, 62, 65, 67, 66, 93, + 90, 79, 68, 67, 71, 66, 57, 65, 64, 69, 75, 69, 64, 70, 82, 59, + 67, 62, 70, 88, 84, 76, 90, 107, 132, 207, 235, 234, 251, 250, 252, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 211, 208, 202, 193, + 192, 167, 110, 61, 55, 65, 62, 57, 59, 55, 53, 51, 48, 47, 46, 46, + 47, 49, 46, 45, 48, 54, 56, 53, 50, 51, 51, 50, 50, 49, 47, 46, + 45, 48, 48, 48, 49, 51, 53, 55, 57, 58, 50, 43, 46, 51, 52, 47, + 44, 47, 46, 46, 48, 52, 56, 58, 58, 49, 58, 57, 54, 60, 61, 63, + 74, 85, 93, 92, 80, 68, 66, 68, 68, 69, 64, 64, 72, 75, 73, 73, + 77, 77, 62, 55, 67, 80, 79, 70, 63, 78, 89, 129, 169, 197, 243, 255, + 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 216, 203, + 206, 192, 150, 122, 87, 59, 59, 67, 62, 55, 54, 53, 52, 50, 48, 46, + 46, 46, 46, 48, 46, 45, 48, 53, 55, 53, 49, 50, 50, 50, 49, 49, + 47, 46, 45, 47, 46, 46, 47, 49, 51, 52, 53, 48, 45, 44, 45, 46, + 47, 48, 49, 52, 52, 52, 53, 53, 54, 53, 53, 50, 58, 58, 59, 66, + 67, 66, 75, 78, 85, 85, 74, 63, 62, 65, 66, 66, 65, 68, 71, 70, + 65, 65, 72, 71, 62, 58, 65, 71, 71, 68, 67, 68, 70, 79, 107, 146, + 182, 225, 255, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 225, 210, 217, 191, 116, 80, 67, 58, 58, 61, 59, 55, 52, 50, 49, 49, + 47, 46, 46, 46, 45, 47, 45, 45, 48, 53, 54, 51, 48, 50, 50, 50, + 49, 49, 48, 46, 45, 47, 46, 46, 47, 46, 48, 48, 49, 41, 43, 45, + 45, 45, 48, 53, 57, 53, 53, 53, 53, 53, 52, 50, 50, 54, 62, 61, + 65, 76, 76, 71, 75, 71, 78, 78, 70, 61, 60, 65, 68, 64, 66, 70, + 71, 66, 60, 60, 65, 63, 61, 60, 62, 62, 62, 65, 70, 64, 70, 68, + 91, 125, 131, 166, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 240, 216, 226, 220, 204, 155, 88, 69, 66, 58, 53, 53, 57, 56, 52, 48, + 47, 47, 47, 46, 46, 46, 45, 46, 45, 46, 49, 52, 53, 50, 47, 50, + 50, 50, 49, 49, 48, 47, 46, 47, 47, 47, 47, 46, 47, 46, 46, 43, + 47, 48, 47, 49, 54, 58, 60, 52, 53, 53, 53, 54, 56, 57, 59, 61, + 67, 67, 71, 82, 80, 71, 72, 68, 73, 73, 68, 62, 62, 67, 74, 65, + 66, 68, 71, 69, 64, 59, 59, 60, 60, 61, 62, 61, 61, 65, 68, 66, + 78, 87, 101, 116, 113, 130, 170, 228, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 226, 214, 216, 216, 162, 91, 62, 66, 65, 59, 51, 52, 56, 53, + 46, 45, 46, 46, 46, 46, 46, 45, 45, 45, 46, 48, 51, 53, 52, 50, + 47, 49, 49, 49, 49, 49, 48, 47, 46, 48, 48, 48, 49, 48, 48, 46, + 46, 49, 50, 49, 47, 51, 59, 61, 57, 59, 58, 58, 57, 58, 62, 67, + 72, 68, 73, 71, 73, 82, 79, 68, 68, 65, 69, 70, 66, 59, 58, 64, + 74, 66, 66, 66, 70, 76, 77, 67, 58, 60, 62, 62, 64, 67, 68, 65, + 62, 68, 73, 85, 83, 82, 112, 136, 129, 142, 186, 255, 255, 255, 255, 255, + 255, 255, 255, 244, 233, 212, 206, 201, 129, 60, 62, 57, 58, 58, 56, 57, + 55, 48, 39, 44, 45, 46, 47, 48, 47, 47, 45, 46, 48, 51, 53, 54, + 52, 50, 48, 48, 49, 49, 49, 50, 49, 48, 47, 48, 48, 49, 50, 49, + 49, 47, 47, 51, 53, 51, 47, 51, 60, 60, 53, 58, 60, 59, 58, 55, + 58, 64, 69, 71, 77, 73, 73, 77, 74, 64, 67, 65, 67, 67, 65, 57, + 54, 61, 71, 69, 66, 65, 73, 84, 87, 74, 60, 63, 64, 64, 65, 69, + 72, 66, 57, 72, 73, 84, 76, 69, 115, 145, 119, 94, 126, 243, 255, 255, + 255, 255, 255, 255, 246, 219, 227, 213, 198, 172, 112, 64, 66, 55, 55, 58, + 60, 56, 49, 43, 42, 43, 45, 46, 48, 48, 48, 47, 47, 46, 49, 53, + 55, 55, 53, 50, 49, 48, 48, 49, 49, 50, 49, 48, 47, 46, 47, 49, + 50, 49, 49, 49, 48, 50, 58, 59, 51, 51, 59, 62, 57, 56, 59, 61, + 61, 57, 57, 60, 64, 71, 77, 72, 68, 71, 67, 62, 70, 71, 70, 69, + 66, 57, 52, 57, 70, 67, 69, 71, 78, 87, 91, 79, 64, 66, 69, 67, + 65, 65, 70, 67, 59, 72, 80, 87, 85, 88, 110, 128, 130, 100, 90, 238, + 238, 255, 255, 255, 255, 255, 224, 223, 221, 216, 191, 142, 96, 68, 52, 61, + 60, 60, 60, 50, 41, 42, 50, 43, 44, 47, 48, 49, 49, 48, 47, 47, + 50, 54, 57, 56, 53, 51, 51, 48, 48, 49, 49, 49, 48, 47, 48, 45, + 47, 47, 49, 50, 49, 48, 47, 51, 62, 67, 56, 51, 59, 64, 64, 56, + 62, 69, 70, 66, 64, 65, 67, 66, 73, 70, 65, 67, 64, 62, 72, 78, + 76, 74, 70, 60, 52, 58, 70, 64, 70, 75, 79, 87, 89, 79, 66, 65, + 69, 68, 61, 60, 66, 67, 62, 65, 77, 74, 80, 94, 92, 106, 153, 104, + 67, 242, 250, 255, 255, 255, 255, 255, 229, 217, 214, 219, 195, 122, 57, 44, + 57, 54, 53, 53, 53, 50, 49, 45, 44, 49, 49, 47, 46, 44, 45, 45, + 46, 47, 49, 51, 52, 51, 50, 51, 53, 50, 52, 54, 53, 51, 48, 47, + 48, 52, 48, 46, 52, 53, 49, 51, 54, 55, 59, 66, 67, 66, 66, 65, + 67, 71, 65, 66, 71, 70, 63, 58, 58, 63, 68, 66, 58, 56, 64, 72, + 76, 73, 69, 62, 58, 54, 54, 62, 73, 87, 80, 75, 77, 84, 85, 78, + 71, 79, 82, 76, 63, 55, 58, 63, 64, 70, 71, 83, 86, 81, 86, 96, + 99, 109, 90, 157, 203, 255, 255, 255, 255, 246, 227, 211, 213, 213, 176, 104, + 51, 47, 57, 54, 54, 53, 52, 50, 47, 45, 43, 47, 47, 48, 48, 47, + 45, 44, 44, 44, 47, 52, 53, 52, 50, 51, 51, 49, 51, 53, 52, 49, + 48, 48, 48, 47, 46, 48, 56, 56, 53, 53, 58, 54, 58, 61, 65, 66, + 70, 73, 77, 75, 69, 66, 67, 64, 58, 58, 62, 69, 72, 70, 61, 60, + 68, 77, 83, 70, 66, 61, 61, 59, 60, 65, 73, 86, 78, 73, 76, 85, + 92, 92, 90, 90, 87, 84, 78, 68, 60, 63, 72, 69, 70, 82, 88, 84, + 89, 99, 101, 86, 91, 178, 238, 255, 255, 255, 255, 226, 223, 212, 214, 201, + 145, 76, 45, 51, 56, 55, 55, 54, 53, 51, 48, 46, 45, 46, 47, 49, + 49, 49, 46, 44, 43, 42, 46, 52, 55, 53, 51, 50, 49, 48, 50, 52, + 52, 49, 47, 46, 48, 41, 44, 49, 53, 53, 50, 51, 55, 54, 55, 55, + 58, 62, 70, 79, 85, 84, 80, 75, 70, 65, 61, 66, 74, 82, 81, 73, + 60, 51, 54, 58, 62, 52, 49, 48, 57, 64, 69, 75, 80, 84, 79, 76, + 82, 94, 106, 113, 115, 103, 95, 90, 87, 74, 59, 59, 70, 67, 69, 82, + 90, 86, 90, 100, 102, 104, 95, 159, 218, 253, 255, 255, 255, 224, 220, 222, + 216, 182, 111, 52, 45, 58, 54, 57, 56, 55, 54, 52, 50, 49, 48, 48, + 48, 48, 48, 47, 46, 45, 44, 45, 48, 53, 54, 53, 51, 51, 51, 49, + 50, 53, 51, 48, 45, 45, 46, 45, 49, 53, 53, 50, 50, 53, 57, 55, + 51, 50, 51, 57, 67, 79, 87, 93, 92, 88, 82, 74, 73, 79, 87, 94, + 92, 83, 71, 59, 55, 55, 58, 55, 52, 55, 66, 74, 79, 80, 82, 86, + 86, 89, 98, 111, 123, 131, 135, 120, 112, 98, 83, 70, 63, 61, 64, 64, + 68, 81, 88, 84, 89, 98, 99, 102, 111, 168, 194, 188, 255, 255, 255, 224, + 220, 235, 211, 158, 84, 40, 48, 63, 53, 57, 56, 55, 54, 53, 52, 52, + 51, 52, 50, 47, 45, 44, 45, 47, 48, 49, 50, 51, 51, 50, 50, 53, + 55, 52, 54, 54, 52, 48, 45, 43, 43, 50, 52, 53, 53, 53, 59, 67, + 72, 55, 53, 51, 52, 59, 72, 83, 91, 95, 98, 98, 93, 86, 85, 89, + 94, 98, 99, 100, 97, 91, 88, 89, 91, 93, 87, 86, 90, 93, 89, 84, + 83, 89, 94, 104, 116, 127, 136, 141, 143, 142, 139, 115, 80, 65, 72, 72, + 61, 64, 66, 79, 85, 81, 84, 95, 95, 121, 112, 143, 177, 191, 255, 255, + 247, 226, 223, 235, 196, 135, 72, 40, 50, 62, 51, 54, 54, 53, 52, 52, + 53, 53, 54, 54, 51, 47, 44, 43, 45, 48, 50, 50, 51, 50, 48, 48, + 49, 53, 56, 53, 54, 54, 52, 49, 45, 43, 43, 44, 46, 46, 47, 55, + 69, 81, 86, 65, 62, 61, 65, 73, 83, 93, 98, 93, 98, 101, 99, 95, + 96, 96, 97, 99, 102, 107, 112, 109, 106, 107, 112, 112, 107, 104, 106, 104, + 99, 95, 95, 97, 104, 114, 126, 133, 139, 143, 147, 150, 158, 134, 86, 64, + 72, 73, 57, 64, 66, 77, 82, 77, 82, 93, 94, 95, 118, 173, 206, 188, + 255, 255, 231, 229, 227, 221, 173, 118, 71, 46, 48, 56, 51, 49, 49, 48, + 48, 49, 51, 53, 54, 53, 51, 48, 46, 45, 46, 47, 48, 46, 47, 48, + 47, 47, 48, 50, 52, 50, 52, 54, 53, 50, 48, 47, 46, 42, 43, 44, + 48, 64, 83, 93, 94, 83, 80, 78, 81, 87, 93, 95, 97, 91, 97, 100, + 100, 100, 105, 104, 100, 103, 103, 106, 111, 107, 102, 103, 108, 107, 104, 104, + 106, 104, 102, 104, 109, 105, 110, 116, 122, 126, 134, 143, 149, 153, 167, 153, + 106, 72, 66, 66, 60, 63, 64, 74, 79, 75, 82, 95, 98, 113, 118, 157, + 202, 195, 255, 255, 232, 231, 229, 205, 156, 108, 75, 51, 45, 51, 51, 45, + 45, 45, 45, 47, 49, 52, 53, 50, 50, 49, 48, 47, 47, 46, 46, 41, + 44, 47, 48, 48, 47, 47, 48, 47, 50, 52, 52, 52, 50, 49, 50, 49, + 50, 52, 59, 77, 97, 104, 100, 97, 95, 92, 93, 94, 95, 91, 90, 91, + 97, 99, 100, 104, 110, 110, 104, 107, 105, 107, 111, 108, 104, 107, 114, 109, + 107, 107, 107, 103, 100, 103, 112, 110, 112, 113, 114, 117, 127, 141, 152, 157, + 175, 171, 132, 87, 64, 64, 68, 62, 63, 73, 78, 75, 84, 99, 102, 114, + 122, 161, 204, 187, 255, 247, 233, 233, 231, 200, 144, 117, 78, 42, 50, 57, + 50, 52, 56, 56, 52, 49, 51, 51, 48, 52, 52, 52, 49, 46, 44, 44, + 45, 49, 49, 51, 51, 50, 48, 46, 44, 49, 53, 51, 47, 46, 50, 53, + 51, 53, 62, 74, 82, 87, 94, 101, 106, 105, 107, 105, 101, 99, 103, 103, + 102, 105, 108, 107, 104, 108, 115, 117, 112, 104, 111, 115, 114, 109, 108, 112, + 117, 109, 109, 110, 112, 115, 114, 111, 109, 111, 116, 119, 119, 125, 134, 140, + 139, 149, 161, 171, 151, 113, 86, 69, 52, 65, 73, 73, 70, 70, 80, 95, + 102, 110, 133, 160, 194, 193, 255, 230, 230, 228, 225, 191, 129, 114, 52, 54, + 43, 63, 50, 50, 54, 54, 51, 50, 53, 54, 52, 52, 51, 48, 45, 44, + 47, 52, 57, 45, 47, 49, 51, 52, 51, 50, 50, 49, 53, 53, 51, 52, + 58, 62, 62, 74, 81, 91, 99, 102, 108, 113, 119, 108, 110, 108, 103, 103, + 108, 109, 107, 112, 114, 112, 109, 111, 117, 116, 112, 114, 109, 106, 110, 116, + 118, 114, 110, 109, 109, 110, 111, 114, 115, 112, 111, 113, 117, 119, 121, 126, + 136, 140, 140, 150, 168, 193, 195, 171, 139, 98, 58, 64, 62, 69, 61, 62, + 90, 103, 103, 113, 125, 153, 197, 201, 255, 230, 229, 226, 221, 181, 125, 97, + 38, 54, 49, 59, 52, 52, 55, 54, 51, 51, 54, 54, 51, 50, 50, 49, + 48, 47, 50, 55, 58, 46, 47, 49, 51, 53, 53, 52, 52, 47, 53, 55, + 55, 57, 65, 71, 72, 76, 80, 89, 95, 97, 101, 105, 108, 110, 111, 110, + 106, 107, 110, 112, 111, 115, 117, 115, 112, 112, 115, 114, 110, 115, 111, 108, + 111, 117, 119, 114, 110, 109, 110, 109, 111, 113, 115, 114, 114, 114, 118, 121, + 122, 127, 136, 140, 140, 158, 164, 180, 188, 179, 159, 120, 76, 66, 55, 77, + 61, 51, 88, 101, 108, 122, 123, 154, 205, 206, 255, 230, 230, 227, 222, 174, + 129, 70, 45, 43, 65, 46, 56, 57, 58, 56, 52, 51, 52, 50, 45, 46, + 50, 54, 56, 54, 50, 47, 45, 50, 51, 52, 53, 53, 52, 51, 49, 49, + 53, 55, 54, 58, 66, 73, 75, 84, 89, 95, 102, 104, 106, 109, 111, 107, + 110, 108, 105, 105, 110, 112, 110, 113, 113, 111, 110, 110, 111, 109, 107, 107, + 112, 117, 116, 111, 108, 111, 115, 111, 112, 111, 111, 114, 116, 117, 117, 115, + 119, 122, 123, 127, 135, 140, 140, 154, 166, 191, 210, 211, 193, 148, 97, 67, + 49, 80, 69, 52, 79, 96, 118, 125, 127, 163, 212, 204, 255, 231, 231, 227, + 220, 167, 114, 53, 45, 45, 68, 43, 58, 56, 56, 54, 50, 50, 53, 50, + 44, 46, 50, 54, 55, 52, 46, 42, 40, 49, 50, 52, 53, 53, 52, 51, + 50, 54, 57, 57, 56, 58, 67, 74, 75, 89, 94, 99, 105, 109, 111, 113, + 114, 106, 108, 107, 104, 104, 109, 110, 108, 109, 107, 106, 108, 109, 109, 108, + 107, 104, 110, 115, 114, 108, 105, 107, 112, 114, 114, 111, 113, 116, 117, 118, + 117, 115, 119, 120, 121, 125, 133, 138, 138, 144, 154, 176, 193, 196, 192, 167, + 132, 92, 56, 64, 69, 66, 78, 86, 108, 106, 124, 164, 209, 204, 255, 232, + 231, 224, 216, 159, 84, 47, 38, 59, 57, 50, 58, 50, 50, 48, 47, 51, + 55, 53, 48, 48, 48, 48, 46, 44, 43, 45, 47, 44, 46, 49, 52, 54, + 55, 55, 55, 57, 61, 61, 59, 62, 71, 79, 81, 86, 89, 94, 100, 104, + 106, 108, 107, 107, 109, 108, 105, 105, 109, 110, 108, 107, 104, 104, 109, 111, + 109, 108, 109, 111, 107, 104, 107, 112, 113, 105, 101, 116, 115, 114, 115, 117, + 117, 116, 114, 115, 119, 120, 120, 124, 132, 136, 136, 165, 171, 182, 186, 189, + 203, 209, 198, 157, 102, 53, 57, 78, 78, 73, 74, 84, 116, 148, 189, 206, + 255, 234, 233, 226, 217, 158, 68, 39, 52, 62, 55, 49, 58, 47, 47, 45, + 45, 50, 55, 53, 47, 46, 46, 46, 44, 42, 43, 47, 50, 42, 44, 47, + 51, 53, 55, 55, 55, 55, 59, 61, 60, 65, 76, 86, 88, 97, 98, 102, + 107, 111, 114, 113, 112, 108, 110, 108, 105, 104, 108, 108, 106, 108, 103, 103, + 109, 111, 107, 105, 107, 111, 106, 104, 107, 112, 112, 104, 99, 114, 115, 115, + 116, 116, 115, 112, 110, 115, 118, 119, 119, 123, 130, 135, 136, 135, 151, 174, + 185, 186, 195, 197, 185, 209, 166, 63, 46, 79, 79, 80, 66, 84, 119, 127, + 158, 222, 255, 236, 237, 231, 221, 162, 71, 28, 79, 52, 66, 41, 60, 49, + 48, 45, 44, 48, 53, 50, 43, 43, 46, 49, 50, 48, 45, 43, 43, 45, + 47, 49, 52, 52, 52, 52, 51, 49, 54, 57, 58, 65, 78, 89, 93, 97, + 97, 100, 105, 109, 109, 108, 106, 107, 108, 107, 103, 102, 106, 107, 105, 108, + 103, 103, 109, 110, 104, 101, 103, 103, 109, 114, 113, 106, 100, 100, 105, 112, + 113, 113, 114, 115, 113, 108, 105, 114, 118, 119, 118, 123, 130, 134, 135, 148, + 158, 172, 175, 173, 188, 201, 196, 217, 201, 76, 41, 77, 84, 106, 94, 99, + 129, 114, 134, 255, 255, 231, 224, 240, 216, 153, 43, 55, 65, 48, 59, 40, + 47, 51, 48, 45, 45, 47, 48, 46, 44, 47, 47, 47, 47, 47, 47, 47, + 47, 44, 47, 50, 51, 48, 48, 51, 54, 54, 57, 59, 61, 69, 82, 92, + 96, 99, 106, 109, 107, 107, 113, 115, 112, 114, 114, 112, 109, 107, 107, 108, + 110, 108, 103, 104, 113, 114, 109, 111, 118, 103, 109, 105, 100, 103, 102, 102, + 111, 109, 111, 109, 107, 110, 115, 113, 108, 114, 119, 124, 126, 126, 130, 137, + 146, 155, 159, 164, 172, 181, 190, 198, 203, 222, 229, 118, 71, 60, 85, 105, + 98, 109, 113, 116, 151, 255, 255, 230, 223, 237, 206, 98, 33, 46, 53, 45, + 58, 52, 52, 51, 49, 48, 49, 52, 53, 51, 49, 47, 47, 47, 47, 47, + 47, 47, 47, 48, 49, 48, 47, 44, 45, 49, 51, 50, 53, 58, 63, 75, + 91, 101, 104, 101, 105, 105, 103, 107, 116, 120, 117, 108, 108, 106, 105, 105, + 105, 106, 105, 105, 101, 101, 105, 106, 104, 104, 106, 103, 110, 107, 105, 108, + 105, 101, 109, 108, 110, 108, 106, 109, 113, 110, 106, 113, 119, 124, 128, 130, + 132, 137, 142, 140, 145, 153, 163, 173, 183, 190, 193, 191, 218, 170, 131, 63, + 64, 109, 117, 121, 108, 114, 161, 255, 255, 229, 223, 234, 184, 58, 46, 50, + 52, 48, 54, 57, 49, 46, 45, 46, 48, 51, 51, 49, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 48, 47, 44, 43, 43, 47, 50, 53, 57, 60, 64, + 72, 84, 98, 103, 102, 117, 116, 109, 105, 108, 115, 117, 114, 117, 113, 109, + 109, 111, 113, 111, 109, 111, 111, 109, 107, 110, 114, 110, 104, 100, 108, 107, + 107, 112, 109, 105, 111, 108, 111, 109, 107, 108, 112, 110, 106, 112, 117, 122, + 128, 131, 134, 135, 138, 148, 155, 164, 176, 187, 195, 202, 205, 220, 218, 189, + 154, 62, 53, 112, 119, 123, 97, 113, 170, 255, 248, 231, 228, 232, 154, 43, + 61, 50, 55, 56, 47, 56, 46, 44, 45, 47, 49, 50, 49, 46, 45, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 46, 44, 45, 47, 52, 55, 56, 60, + 63, 69, 78, 91, 103, 106, 102, 121, 117, 110, 108, 111, 114, 113, 109, 117, + 109, 101, 98, 102, 106, 105, 103, 101, 105, 102, 97, 101, 109, 105, 95, 99, + 107, 105, 106, 112, 111, 108, 114, 106, 109, 109, 107, 108, 112, 112, 109, 112, + 113, 117, 124, 129, 133, 135, 135, 149, 153, 162, 172, 183, 195, 202, 207, 224, + 212, 198, 177, 99, 62, 86, 82, 118, 97, 132, 207, 255, 231, 234, 234, 231, + 122, 34, 54, 35, 51, 61, 42, 54, 51, 51, 52, 54, 54, 53, 50, 48, + 46, 47, 47, 47, 47, 47, 47, 47, 47, 46, 46, 47, 47, 49, 50, 53, + 54, 53, 60, 71, 82, 98, 111, 115, 113, 107, 105, 104, 110, 116, 117, 114, + 110, 113, 104, 94, 91, 97, 103, 107, 107, 100, 105, 104, 99, 103, 111, 110, + 100, 106, 111, 105, 103, 110, 111, 109, 115, 104, 108, 110, 108, 109, 114, 116, + 115, 116, 116, 116, 121, 126, 132, 134, 136, 146, 149, 154, 163, 176, 191, 203, + 211, 215, 217, 212, 179, 108, 50, 67, 95, 112, 112, 171, 255, 255, 231, 234, + 236, 230, 96, 42, 49, 32, 50, 60, 42, 52, 53, 51, 53, 54, 53, 50, + 47, 46, 46, 47, 47, 47, 47, 47, 47, 47, 48, 47, 49, 51, 48, 45, + 46, 51, 55, 64, 73, 83, 92, 101, 110, 113, 112, 111, 109, 111, 117, 118, + 111, 104, 100, 95, 88, 82, 81, 87, 94, 100, 102, 99, 103, 105, 104, 106, + 110, 112, 110, 108, 110, 103, 100, 108, 109, 107, 112, 106, 111, 113, 111, 111, + 114, 118, 117, 119, 119, 119, 120, 121, 125, 129, 132, 141, 143, 146, 154, 166, + 182, 196, 204, 220, 216, 213, 167, 100, 38, 60, 105, 99, 118, 200, 255, 255, + 234, 232, 233, 229, 81, 51, 50, 45, 53, 54, 48, 52, 50, 49, 50, 51, + 50, 46, 44, 45, 47, 47, 47, 47, 47, 47, 47, 47, 48, 49, 52, 53, + 48, 43, 48, 59, 69, 83, 93, 101, 104, 104, 107, 108, 108, 116, 114, 113, + 114, 107, 90, 80, 76, 61, 60, 59, 59, 62, 65, 68, 70, 73, 76, 79, + 83, 81, 79, 83, 89, 90, 94, 91, 93, 105, 107, 105, 110, 110, 115, 116, + 114, 111, 114, 116, 116, 116, 118, 120, 118, 114, 114, 114, 117, 114, 114, 114, + 119, 127, 138, 148, 155, 167, 163, 211, 194, 124, 54, 57, 62, 80, 106, 209, + 255, 255, 237, 229, 229, 228, 76, 42, 42, 50, 50, 47, 55, 58, 51, 51, + 53, 54, 52, 49, 48, 51, 53, 47, 47, 47, 47, 47, 47, 47, 47, 49, + 53, 54, 49, 44, 53, 71, 87, 86, 98, 109, 110, 109, 111, 114, 116, 100, + 98, 98, 98, 87, 71, 60, 58, 59, 63, 65, 66, 64, 61, 60, 61, 61, + 60, 66, 72, 68, 60, 66, 77, 68, 75, 77, 85, 101, 107, 104, 110, 114, + 119, 119, 115, 112, 114, 115, 114, 110, 115, 119, 115, 108, 101, 100, 102, 100, + 99, 98, 98, 101, 106, 110, 113, 112, 109, 199, 201, 114, 51, 74, 66, 67, + 93, 209, 255, 255, 235, 223, 227, 225, 104, 46, 36, 52, 52, 48, 56, 51, + 50, 46, 46, 47, 47, 47, 46, 45, 44, 47, 47, 47, 48, 48, 49, 49, + 49, 48, 46, 47, 52, 51, 52, 71, 94, 95, 108, 117, 113, 109, 108, 101, + 93, 110, 105, 89, 72, 66, 69, 68, 64, 71, 63, 56, 56, 60, 64, 63, + 61, 52, 50, 52, 58, 61, 59, 61, 64, 68, 62, 59, 67, 79, 89, 98, + 105, 116, 115, 113, 111, 115, 123, 124, 122, 114, 114, 111, 102, 94, 89, 89, + 90, 85, 83, 78, 73, 70, 71, 75, 79, 93, 91, 148, 178, 137, 83, 54, + 64, 80, 103, 197, 255, 255, 234, 225, 229, 228, 111, 43, 35, 53, 53, 49, + 57, 53, 55, 47, 47, 47, 46, 46, 45, 45, 45, 47, 47, 47, 48, 48, + 49, 49, 49, 51, 43, 44, 53, 59, 65, 81, 98, 97, 104, 111, 112, 111, + 111, 108, 103, 79, 78, 72, 67, 70, 79, 82, 81, 85, 80, 74, 72, 71, + 70, 67, 64, 62, 58, 57, 59, 59, 56, 56, 59, 75, 70, 67, 73, 79, + 83, 90, 96, 109, 110, 108, 107, 111, 117, 119, 115, 110, 105, 97, 86, 77, + 72, 71, 71, 60, 59, 59, 58, 57, 58, 61, 65, 66, 69, 124, 157, 141, + 105, 65, 53, 91, 110, 198, 255, 255, 234, 226, 229, 228, 117, 44, 38, 57, + 56, 48, 55, 53, 57, 49, 48, 46, 45, 45, 45, 46, 47, 47, 47, 47, + 47, 48, 48, 48, 48, 51, 43, 43, 57, 72, 82, 93, 104, 112, 109, 109, + 112, 111, 105, 100, 100, 85, 88, 89, 90, 96, 104, 107, 106, 108, 108, 107, + 106, 105, 102, 100, 98, 96, 91, 87, 87, 85, 81, 82, 84, 82, 79, 79, + 82, 82, 82, 86, 93, 106, 109, 109, 108, 111, 116, 116, 111, 116, 108, 95, + 82, 75, 71, 70, 69, 56, 59, 63, 66, 69, 72, 76, 78, 84, 92, 130, + 154, 164, 150, 93, 55, 89, 115, 213, 255, 255, 234, 228, 227, 224, 121, 49, + 44, 63, 59, 47, 51, 49, 54, 50, 49, 46, 44, 44, 45, 47, 48, 47, + 47, 47, 47, 47, 47, 47, 48, 50, 46, 48, 63, 80, 92, 101, 108, 119, + 108, 107, 113, 111, 101, 93, 93, 90, 93, 97, 101, 105, 108, 106, 104, 103, + 107, 111, 112, 108, 106, 102, 101, 96, 91, 88, 89, 87, 86, 88, 92, 81, + 79, 80, 83, 81, 80, 87, 95, 102, 106, 109, 108, 109, 113, 112, 107, 104, + 95, 83, 74, 70, 69, 67, 65, 61, 65, 71, 77, 83, 89, 93, 98, 104, + 117, 134, 144, 170, 166, 98, 52, 83, 114, 255, 255, 255, 233, 231, 226, 224, + 130, 50, 45, 64, 59, 48, 51, 49, 54, 51, 49, 47, 45, 44, 46, 47, + 49, 47, 47, 47, 47, 47, 47, 47, 46, 48, 52, 59, 72, 83, 93, 103, + 110, 110, 104, 104, 115, 117, 108, 102, 101, 92, 95, 102, 108, 109, 108, 105, + 104, 99, 102, 104, 103, 98, 92, 86, 83, 81, 76, 74, 75, 75, 75, 77, + 83, 78, 76, 76, 77, 77, 77, 84, 93, 95, 101, 104, 103, 103, 105, 103, + 100, 100, 93, 85, 79, 77, 76, 73, 71, 74, 77, 83, 90, 97, 105, 112, + 118, 108, 130, 142, 148, 181, 166, 89, 52, 87, 139, 255, 255, 255, 231, 234, + 228, 227, 142, 47, 41, 59, 57, 49, 55, 53, 56, 50, 49, 48, 46, 46, + 46, 47, 48, 47, 47, 47, 47, 46, 46, 46, 45, 50, 59, 72, 82, 89, + 96, 106, 113, 114, 113, 114, 119, 120, 114, 109, 105, 107, 108, 111, 116, 111, + 104, 98, 99, 92, 94, 95, 95, 93, 90, 85, 82, 79, 74, 73, 75, 74, + 73, 75, 79, 83, 80, 80, 83, 83, 83, 86, 93, 96, 102, 105, 103, 101, + 103, 103, 101, 105, 100, 94, 87, 83, 81, 79, 78, 79, 83, 88, 94, 101, + 108, 115, 121, 114, 141, 159, 173, 200, 155, 63, 45, 88, 155, 255, 255, 255, + 231, 236, 228, 227, 149, 47, 39, 56, 55, 50, 57, 53, 55, 49, 49, 48, + 48, 48, 47, 47, 47, 47, 47, 47, 46, 46, 45, 45, 44, 54, 65, 79, + 90, 97, 104, 111, 115, 119, 122, 123, 120, 116, 115, 113, 108, 106, 103, 103, + 103, 94, 82, 74, 74, 72, 71, 70, 73, 76, 79, 76, 72, 65, 62, 62, + 65, 66, 64, 65, 69, 84, 81, 84, 91, 94, 92, 90, 91, 98, 105, 108, + 105, 102, 104, 105, 103, 91, 88, 80, 71, 66, 65, 67, 70, 63, 67, 73, + 81, 85, 89, 93, 96, 102, 128, 148, 175, 198, 125, 27, 36, 96, 158, 255, + 255, 255, 247, 236, 225, 224, 148, 50, 41, 56, 55, 49, 57, 50, 50, 49, + 50, 50, 50, 50, 49, 48, 47, 48, 48, 48, 46, 47, 46, 46, 44, 60, + 69, 83, 95, 104, 113, 117, 118, 110, 119, 120, 113, 110, 118, 122, 118, 99, + 96, 97, 97, 89, 76, 70, 73, 77, 72, 68, 67, 71, 72, 68, 64, 60, + 56, 58, 63, 65, 64, 64, 67, 74, 72, 78, 89, 96, 94, 88, 87, 98, + 104, 105, 101, 97, 99, 101, 102, 89, 87, 79, 70, 63, 63, 70, 77, 64, + 70, 78, 85, 88, 88, 88, 89, 94, 113, 133, 173, 201, 118, 26, 58, 113, + 196, 255, 255, 255, 255, 230, 224, 213, 163, 55, 34, 44, 52, 54, 61, 52, + 53, 48, 49, 48, 50, 50, 48, 45, 43, 47, 47, 48, 48, 49, 49, 49, + 48, 54, 73, 91, 98, 105, 116, 118, 113, 113, 120, 123, 118, 115, 117, 117, + 114, 102, 99, 92, 83, 75, 73, 73, 77, 62, 63, 63, 63, 62, 60, 55, + 52, 57, 68, 71, 64, 62, 68, 67, 61, 72, 76, 81, 88, 93, 97, 98, + 100, 95, 106, 113, 101, 92, 107, 119, 109, 98, 77, 68, 66, 65, 70, 72, + 65, 64, 70, 81, 84, 90, 107, 107, 84, 85, 91, 144, 187, 180, 109, 37, + 64, 119, 150, 255, 255, 255, 255, 214, 224, 228, 185, 42, 34, 55, 61, 51, + 49, 45, 52, 49, 48, 48, 48, 48, 48, 47, 47, 45, 46, 47, 47, 48, + 47, 46, 43, 51, 71, 89, 98, 106, 117, 120, 116, 114, 119, 118, 113, 109, + 109, 108, 104, 95, 91, 85, 81, 78, 75, 71, 68, 58, 61, 61, 58, 50, + 44, 41, 40, 74, 96, 107, 90, 65, 57, 60, 64, 69, 73, 79, 86, 92, + 96, 97, 98, 102, 103, 105, 104, 109, 127, 124, 101, 79, 58, 59, 65, 52, + 50, 56, 49, 58, 51, 58, 72, 88, 109, 120, 113, 80, 94, 145, 181, 163, + 68, 28, 76, 137, 154, 255, 255, 255, 255, 221, 226, 219, 163, 46, 35, 55, + 59, 50, 49, 44, 50, 48, 48, 46, 47, 47, 48, 50, 51, 46, 47, 48, + 49, 49, 47, 44, 41, 55, 73, 92, 100, 105, 115, 119, 116, 118, 118, 115, + 111, 108, 107, 104, 98, 93, 86, 81, 80, 80, 75, 65, 56, 50, 57, 61, + 60, 53, 50, 51, 55, 78, 100, 112, 94, 65, 54, 56, 62, 69, 73, 80, + 87, 93, 96, 97, 96, 102, 99, 101, 106, 116, 138, 139, 122, 85, 56, 63, + 78, 54, 46, 52, 45, 50, 56, 79, 93, 83, 83, 104, 120, 100, 113, 157, + 193, 177, 51, 45, 112, 144, 158, 255, 255, 255, 255, 248, 233, 206, 133, 61, + 36, 44, 51, 54, 59, 49, 48, 46, 48, 49, 49, 49, 49, 50, 52, 49, + 50, 52, 52, 51, 48, 45, 41, 64, 81, 98, 105, 108, 112, 115, 114, 118, + 115, 110, 108, 107, 106, 101, 96, 95, 91, 87, 84, 82, 75, 65, 58, 61, + 66, 70, 71, 70, 71, 73, 75, 74, 82, 84, 77, 69, 68, 68, 65, 72, + 75, 83, 90, 95, 97, 97, 98, 96, 98, 106, 104, 104, 129, 157, 167, 107, + 61, 59, 76, 57, 48, 54, 42, 53, 74, 107, 118, 97, 83, 90, 96, 107, + 116, 153, 195, 194, 47, 57, 133, 177, 201, 255, 255, 255, 255, 255, 237, 217, + 148, 61, 36, 44, 51, 55, 61, 50, 46, 44, 48, 53, 55, 53, 51, 50, + 50, 50, 50, 51, 51, 50, 48, 45, 42, 68, 83, 102, 110, 110, 112, 116, + 118, 115, 109, 105, 105, 106, 105, 102, 100, 101, 100, 99, 94, 89, 84, 80, + 78, 88, 86, 82, 83, 84, 84, 80, 76, 78, 75, 71, 69, 71, 77, 77, + 75, 76, 79, 85, 91, 95, 98, 98, 97, 96, 99, 106, 103, 97, 121, 163, + 189, 145, 84, 61, 73, 71, 70, 71, 58, 68, 76, 93, 107, 115, 127, 121, + 96, 105, 121, 160, 203, 204, 55, 63, 148, 178, 255, 255, 255, 255, 255, 255, + 236, 224, 166, 50, 37, 55, 59, 53, 52, 45, 48, 47, 52, 58, 60, 55, + 51, 48, 47, 48, 47, 48, 47, 47, 45, 44, 42, 66, 81, 100, 112, 113, + 113, 119, 124, 120, 115, 113, 114, 114, 112, 110, 112, 105, 107, 108, 105, 101, + 98, 99, 101, 104, 97, 91, 92, 94, 94, 89, 83, 84, 84, 81, 74, 68, + 69, 75, 81, 82, 84, 87, 92, 96, 97, 97, 96, 105, 98, 100, 103, 101, + 121, 155, 178, 170, 112, 70, 68, 81, 85, 81, 76, 77, 80, 86, 92, 111, + 147, 159, 142, 113, 138, 177, 213, 210, 76, 67, 159, 162, 255, 255, 255, 255, + 255, 255, 229, 225, 183, 66, 47, 58, 57, 50, 52, 47, 53, 53, 57, 61, + 59, 54, 49, 47, 47, 48, 47, 46, 45, 45, 45, 47, 45, 65, 79, 100, + 112, 112, 112, 118, 124, 125, 120, 120, 121, 118, 114, 115, 120, 111, 110, 109, + 108, 107, 106, 104, 102, 99, 95, 92, 93, 96, 98, 96, 93, 86, 87, 87, + 80, 72, 72, 80, 90, 91, 93, 95, 97, 99, 100, 101, 102, 108, 97, 97, + 100, 97, 114, 147, 170, 176, 140, 86, 66, 79, 78, 68, 75, 84, 87, 95, + 102, 111, 139, 166, 171, 135, 148, 172, 202, 211, 114, 73, 156, 182, 255, 255, + 255, 255, 255, 255, 224, 235, 213, 95, 59, 50, 47, 49, 59, 55, 57, 58, + 61, 62, 58, 52, 46, 46, 48, 50, 48, 47, 45, 46, 48, 50, 49, 67, + 81, 100, 112, 110, 108, 112, 120, 121, 118, 118, 120, 113, 108, 110, 117, 114, + 110, 106, 107, 108, 105, 97, 89, 92, 91, 90, 89, 87, 87, 88, 88, 87, + 84, 82, 85, 88, 92, 96, 101, 102, 102, 102, 102, 104, 105, 107, 108, 104, + 97, 99, 98, 87, 102, 145, 178, 200, 183, 127, 93, 99, 88, 75, 90, 94, + 83, 90, 113, 130, 147, 161, 163, 179, 171, 174, 205, 235, 171, 101, 167, 175, + 255, 255, 255, 255, 255, 255, 228, 219, 213, 116, 45, 49, 48, 57, 51, 60, + 51, 65, 69, 73, 67, 54, 44, 44, 50, 51, 45, 44, 47, 48, 47, 51, + 57, 71, 74, 91, 109, 112, 120, 123, 118, 113, 119, 116, 114, 118, 115, 109, + 114, 104, 100, 105, 105, 99, 103, 102, 90, 89, 92, 94, 93, 89, 86, 86, + 87, 88, 88, 90, 92, 94, 95, 97, 97, 109, 107, 104, 103, 102, 104, 107, + 109, 103, 100, 95, 100, 103, 101, 127, 171, 201, 189, 152, 116, 101, 89, 79, + 80, 94, 92, 101, 120, 133, 138, 149, 163, 170, 161, 185, 193, 242, 209, 107, + 168, 170, 255, 255, 255, 255, 255, 255, 230, 224, 219, 121, 43, 41, 49, 60, + 53, 56, 47, 49, 54, 58, 57, 51, 46, 49, 54, 51, 47, 46, 48, 48, + 46, 49, 53, 65, 78, 95, 105, 109, 113, 121, 130, 121, 128, 126, 124, 128, + 123, 114, 117, 114, 109, 111, 109, 101, 102, 100, 88, 89, 88, 88, 84, 83, + 85, 90, 95, 93, 93, 94, 96, 97, 99, 101, 101, 103, 102, 103, 103, 104, + 106, 108, 109, 110, 108, 104, 109, 109, 107, 131, 176, 203, 195, 159, 122, 107, + 103, 104, 113, 102, 96, 99, 113, 126, 137, 154, 172, 167, 159, 171, 180, 238, + 226, 133, 148, 166, 255, 255, 255, 255, 255, 255, 255, 226, 223, 141, 50, 36, + 50, 60, 56, 59, 57, 70, 71, 73, 68, 60, 55, 54, 54, 50, 49, 50, + 51, 49, 47, 48, 51, 66, 86, 92, 99, 113, 113, 116, 132, 119, 126, 126, + 125, 130, 125, 116, 118, 123, 116, 117, 113, 104, 105, 106, 93, 91, 91, 91, + 89, 88, 89, 92, 95, 94, 94, 95, 97, 99, 99, 100, 101, 101, 102, 102, + 104, 105, 105, 106, 105, 104, 106, 105, 109, 109, 106, 131, 173, 198, 203, 182, + 149, 130, 121, 112, 113, 111, 106, 107, 118, 129, 139, 153, 170, 167, 171, 177, + 189, 239, 246, 182, 151, 163, 255, 255, 255, 255, 255, 255, 255, 226, 224, 163, + 64, 38, 51, 56, 59, 70, 80, 104, 104, 99, 88, 76, 68, 60, 56, 47, + 49, 53, 53, 50, 49, 50, 53, 69, 91, 91, 99, 124, 121, 108, 122, 113, + 120, 119, 120, 127, 124, 119, 122, 124, 118, 119, 116, 110, 114, 116, 106, 100, + 102, 104, 105, 101, 96, 91, 87, 91, 91, 91, 93, 95, 95, 96, 97, 104, + 105, 105, 106, 106, 104, 101, 100, 96, 102, 104, 106, 106, 104, 126, 165, 194, + 209, 196, 165, 145, 131, 113, 105, 115, 115, 121, 132, 138, 142, 146, 154, 145, + 168, 180, 195, 219, 231, 206, 159, 163, 255, 255, 255, 255, 255, 255, 255, 229, + 229, 170, 72, 40, 56, 51, 61, 74, 93, 114, 113, 108, 93, 80, 73, 64, + 57, 46, 52, 56, 55, 50, 52, 55, 55, 59, 92, 103, 112, 132, 122, 107, + 121, 119, 125, 122, 121, 127, 127, 124, 130, 124, 119, 121, 119, 114, 120, 122, + 112, 111, 111, 111, 111, 107, 101, 93, 88, 92, 92, 92, 94, 95, 96, 97, + 98, 105, 106, 106, 106, 105, 104, 101, 101, 103, 108, 108, 110, 109, 106, 122, + 155, 198, 214, 198, 161, 144, 139, 127, 119, 115, 118, 124, 134, 138, 139, 140, + 143, 145, 167, 186, 207, 216, 227, 223, 173, 161, 255, 255, 255, 255, 255, 255, + 255, 248, 237, 165, 76, 42, 57, 48, 65, 75, 93, 116, 119, 113, 95, 78, + 69, 61, 54, 49, 56, 60, 56, 52, 54, 58, 58, 48, 91, 120, 129, 128, + 114, 113, 134, 126, 129, 124, 121, 126, 125, 122, 128, 128, 123, 124, 123, 117, + 121, 122, 111, 118, 114, 108, 104, 103, 102, 100, 99, 96, 97, 98, 100, 101, + 103, 104, 104, 103, 102, 102, 102, 102, 104, 104, 107, 110, 114, 111, 109, 110, + 105, 114, 138, 194, 220, 210, 171, 149, 139, 124, 112, 112, 114, 116, 121, 127, + 133, 138, 143, 161, 174, 193, 212, 224, 241, 234, 182, 158, 255, 255, 255, 255, + 255, 255, 255, 255, 241, 176, 85, 39, 51, 42, 76, 87, 101, 121, 126, 122, + 100, 80, 70, 63, 56, 54, 63, 66, 58, 51, 53, 58, 58, 66, 95, 125, + 134, 124, 115, 120, 132, 123, 129, 123, 121, 126, 124, 119, 124, 127, 123, 126, + 125, 117, 120, 120, 109, 119, 113, 108, 105, 104, 105, 105, 104, 96, 97, 98, + 99, 102, 104, 105, 107, 104, 101, 98, 96, 96, 99, 102, 106, 110, 112, 106, + 106, 109, 106, 108, 127, 173, 215, 218, 177, 145, 129, 113, 101, 113, 114, 113, + 115, 120, 129, 136, 142, 152, 169, 194, 195, 206, 236, 221, 171, 159, 255, 255, + 255, 255, 255, 255, 255, 255, 239, 196, 98, 39, 44, 39, 86, 104, 116, 115, + 124, 122, 101, 81, 73, 70, 66, 59, 67, 68, 58, 49, 51, 55, 55, 94, + 98, 117, 128, 123, 123, 124, 120, 119, 126, 124, 124, 131, 128, 123, 127, 125, + 121, 125, 125, 119, 122, 121, 109, 117, 114, 112, 110, 110, 106, 101, 97, 90, + 92, 93, 95, 97, 100, 102, 103, 107, 103, 97, 91, 91, 94, 98, 102, 107, + 109, 103, 106, 112, 111, 112, 127, 154, 200, 204, 157, 122, 116, 117, 119, 113, + 116, 118, 119, 122, 128, 132, 133, 143, 175, 209, 192, 196, 235, 218, 176, 161, + 255, 255, 255, 255, 255, 255, 255, 255, 247, 230, 177, 70, 41, 47, 52, 103, + 124, 118, 108, 96, 83, 85, 101, 96, 67, 79, 69, 66, 68, 61, 53, 61, + 79, 103, 107, 114, 120, 123, 123, 123, 121, 120, 123, 123, 121, 121, 125, 126, + 123, 127, 129, 125, 120, 120, 125, 126, 124, 121, 117, 113, 111, 110, 106, 96, + 89, 97, 89, 82, 82, 87, 91, 92, 90, 90, 88, 86, 85, 88, 91, 93, + 93, 102, 114, 111, 106, 114, 119, 112, 109, 134, 170, 191, 157, 104, 91, 104, + 107, 94, 111, 97, 107, 114, 105, 125, 131, 136, 150, 176, 196, 208, 220, 211, + 182, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 204, 119, 65, 48, + 42, 76, 115, 121, 110, 101, 93, 92, 100, 91, 64, 93, 75, 63, 60, 55, + 54, 70, 91, 119, 116, 116, 117, 117, 117, 114, 113, 118, 122, 122, 120, 121, + 126, 126, 125, 121, 126, 127, 123, 121, 123, 122, 119, 120, 115, 111, 109, 108, + 103, 94, 87, 90, 89, 87, 85, 85, 84, 84, 84, 86, 87, 88, 91, 95, + 100, 103, 105, 100, 105, 101, 100, 112, 115, 107, 106, 122, 145, 183, 187, 136, + 88, 82, 93, 86, 106, 99, 111, 115, 105, 115, 117, 131, 149, 177, 196, 204, + 214, 208, 184, 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 224, 164, + 79, 41, 30, 55, 131, 134, 112, 94, 83, 78, 86, 88, 74, 93, 75, 59, + 54, 52, 57, 76, 99, 124, 119, 114, 114, 116, 119, 118, 117, 117, 120, 121, + 119, 120, 126, 128, 127, 120, 128, 132, 130, 127, 126, 124, 120, 119, 114, 111, + 108, 106, 101, 92, 87, 81, 84, 87, 86, 83, 80, 80, 82, 88, 93, 96, + 99, 98, 99, 102, 105, 107, 106, 101, 104, 116, 113, 106, 110, 119, 123, 155, + 187, 175, 135, 101, 80, 82, 102, 101, 109, 114, 107, 112, 115, 119, 141, 173, + 192, 203, 218, 219, 200, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, + 228, 201, 118, 71, 41, 37, 134, 134, 110, 96, 86, 77, 81, 86, 81, 78, + 70, 65, 63, 62, 66, 84, 107, 124, 119, 114, 115, 119, 122, 122, 120, 115, + 118, 119, 118, 120, 126, 128, 128, 120, 129, 133, 130, 126, 125, 122, 120, 120, + 116, 111, 109, 105, 98, 92, 87, 74, 76, 79, 81, 82, 81, 81, 83, 91, + 97, 102, 103, 100, 97, 100, 102, 105, 104, 101, 106, 113, 105, 102, 115, 115, + 121, 135, 149, 163, 169, 135, 81, 85, 100, 100, 101, 108, 109, 114, 122, 113, + 130, 159, 178, 191, 213, 220, 204, 194, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 244, 230, 236, 182, 139, 76, 22, 101, 119, 112, 114, 116, 106, 100, 93, + 81, 70, 72, 74, 75, 71, 76, 96, 120, 126, 123, 120, 121, 121, 121, 118, + 115, 116, 119, 118, 115, 118, 124, 126, 125, 118, 123, 124, 120, 116, 117, 116, + 115, 119, 116, 111, 106, 102, 96, 90, 86, 78, 75, 74, 77, 82, 86, 84, + 82, 83, 90, 97, 97, 94, 92, 93, 95, 84, 88, 89, 94, 98, 92, 96, + 115, 109, 122, 126, 114, 117, 140, 127, 83, 83, 96, 102, 95, 102, 108, 107, + 117, 118, 128, 145, 158, 174, 198, 203, 187, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 225, 237, 210, 181, 114, 37, 76, 112, 113, 121, 122, 113, + 113, 109, 97, 77, 79, 79, 76, 72, 78, 102, 125, 115, 117, 120, 122, 122, + 122, 121, 120, 117, 119, 117, 113, 114, 120, 122, 121, 121, 122, 119, 115, 114, + 117, 117, 113, 118, 115, 110, 105, 98, 92, 86, 83, 84, 80, 76, 79, 85, + 88, 84, 80, 82, 84, 86, 83, 78, 72, 69, 68, 64, 74, 77, 82, 88, + 91, 98, 119, 114, 101, 92, 95, 103, 117, 107, 79, 78, 92, 105, 96, 101, + 108, 97, 104, 121, 125, 138, 151, 169, 195, 203, 187, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 222, 224, 209, 197, 149, 71, 63, 107, 112, 117, + 110, 104, 117, 125, 116, 96, 93, 88, 84, 82, 88, 103, 117, 104, 110, 117, + 120, 119, 120, 123, 126, 119, 120, 118, 112, 112, 116, 117, 116, 125, 123, 118, + 116, 118, 121, 118, 111, 113, 111, 107, 101, 93, 87, 82, 80, 80, 81, 82, + 86, 89, 90, 86, 83, 82, 82, 80, 76, 71, 66, 61, 57, 60, 72, 72, + 74, 87, 99, 105, 117, 115, 79, 64, 85, 106, 113, 98, 74, 77, 89, 106, + 94, 100, 113, 100, 111, 115, 122, 139, 153, 168, 196, 205, 193, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 228, 229, 220, 215, 176, 91, 40, 94, + 108, 121, 116, 110, 126, 131, 116, 116, 110, 103, 102, 102, 105, 108, 112, 109, + 115, 120, 119, 113, 111, 114, 120, 120, 121, 117, 112, 110, 114, 115, 112, 122, + 119, 115, 114, 118, 121, 115, 105, 111, 110, 105, 98, 90, 83, 79, 78, 73, + 79, 87, 93, 94, 91, 90, 90, 79, 79, 79, 81, 83, 84, 83, 79, 64, + 73, 69, 68, 86, 103, 105, 106, 99, 78, 73, 83, 90, 95, 89, 73, 81, + 90, 104, 89, 98, 120, 113, 129, 112, 124, 143, 154, 162, 183, 193, 183, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 231, 217, 190, 75, + 39, 49, 97, 145, 121, 114, 127, 118, 128, 119, 119, 117, 114, 114, 116, 115, + 113, 113, 112, 112, 115, 118, 118, 113, 109, 112, 115, 116, 111, 108, 111, 111, + 108, 106, 108, 110, 111, 111, 111, 113, 113, 100, 101, 98, 81, 67, 78, 88, + 78, 89, 87, 87, 87, 87, 86, 87, 88, 90, 88, 83, 81, 80, 82, 85, + 87, 81, 77, 76, 79, 85, 88, 87, 85, 87, 89, 92, 93, 91, 87, 83, + 79, 82, 83, 88, 97, 102, 104, 110, 116, 118, 113, 133, 138, 150, 173, 168, + 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 222, + 204, 104, 25, 50, 83, 120, 152, 116, 130, 107, 139, 119, 119, 117, 117, 118, + 120, 119, 117, 121, 116, 111, 109, 111, 114, 114, 114, 111, 112, 113, 112, 109, + 109, 109, 111, 99, 99, 101, 105, 108, 109, 107, 107, 97, 93, 89, 78, 69, + 79, 90, 84, 92, 93, 92, 91, 91, 90, 91, 90, 89, 88, 84, 82, 81, + 83, 85, 86, 83, 82, 84, 85, 85, 87, 89, 90, 89, 91, 94, 96, 96, + 93, 89, 87, 86, 86, 92, 98, 100, 100, 102, 107, 113, 109, 130, 137, 151, + 176, 172, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, + 222, 230, 217, 152, 18, 35, 57, 105, 160, 119, 126, 108, 132, 120, 119, 119, + 119, 119, 119, 116, 115, 119, 115, 111, 109, 110, 113, 116, 116, 118, 113, 113, + 117, 113, 107, 107, 114, 105, 103, 103, 107, 109, 108, 104, 99, 91, 81, 78, + 77, 72, 81, 90, 89, 93, 93, 92, 92, 91, 90, 90, 89, 88, 86, 84, + 83, 82, 83, 84, 83, 81, 84, 87, 86, 83, 82, 86, 91, 90, 92, 96, + 99, 100, 98, 95, 93, 88, 88, 92, 98, 100, 97, 100, 104, 109, 108, 130, + 137, 147, 173, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 218, 232, 221, 196, 37, 22, 39, 108, 144, 130, 119, 123, 114, 124, + 120, 118, 119, 117, 112, 108, 107, 109, 110, 112, 115, 116, 116, 114, 113, 119, + 110, 108, 115, 111, 101, 100, 110, 113, 109, 107, 108, 110, 107, 98, 91, 85, + 72, 72, 80, 79, 83, 90, 89, 90, 90, 89, 88, 87, 86, 86, 86, 87, + 87, 86, 85, 84, 84, 83, 82, 81, 83, 84, 82, 80, 80, 83, 86, 91, + 94, 98, 101, 101, 100, 97, 94, 89, 87, 90, 95, 97, 98, 104, 110, 110, + 110, 132, 137, 144, 166, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 217, 231, 215, 221, 74, 24, 34, 94, 144, 138, 121, 127, + 114, 124, 119, 115, 118, 117, 111, 108, 109, 111, 112, 115, 115, 116, 114, 112, + 111, 112, 102, 101, 107, 105, 95, 97, 107, 109, 105, 102, 102, 103, 98, 89, + 81, 83, 73, 77, 87, 86, 89, 92, 86, 88, 88, 88, 88, 87, 86, 86, + 86, 89, 88, 88, 87, 87, 86, 84, 83, 85, 82, 79, 79, 81, 83, 83, + 82, 92, 94, 98, 100, 100, 98, 95, 92, 91, 88, 86, 88, 91, 94, 102, + 111, 110, 108, 131, 136, 143, 164, 157, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 242, 226, 210, 223, 103, 29, 32, 55, 151, 132, + 123, 109, 121, 121, 114, 110, 116, 118, 114, 114, 119, 121, 119, 115, 110, 108, + 107, 110, 113, 107, 102, 101, 106, 105, 101, 105, 113, 101, 99, 97, 98, 98, + 95, 88, 83, 82, 79, 85, 91, 88, 92, 94, 86, 91, 91, 91, 91, 91, + 91, 91, 90, 94, 92, 91, 90, 89, 88, 87, 86, 90, 85, 80, 81, 85, + 88, 88, 85, 92, 95, 98, 101, 101, 99, 95, 93, 95, 89, 85, 85, 85, + 87, 95, 104, 106, 103, 127, 136, 145, 166, 156, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 214, 212, 109, 26, 31, 35, + 127, 126, 120, 105, 121, 119, 110, 105, 113, 115, 113, 115, 123, 119, 118, 116, + 111, 107, 107, 110, 114, 110, 109, 108, 106, 104, 105, 110, 113, 101, 99, 99, + 97, 95, 92, 88, 87, 82, 85, 92, 91, 84, 92, 98, 89, 92, 92, 92, + 93, 95, 95, 96, 95, 97, 95, 93, 92, 90, 90, 90, 91, 90, 89, 85, + 85, 86, 89, 91, 93, 92, 96, 99, 104, 104, 104, 100, 99, 99, 95, 90, + 89, 87, 86, 90, 96, 104, 101, 124, 137, 150, 171, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 220, 200, 103, 23, + 39, 49, 97, 135, 125, 127, 117, 120, 108, 104, 110, 110, 108, 110, 121, 106, + 110, 116, 116, 114, 112, 113, 114, 110, 112, 109, 101, 97, 99, 102, 99, 100, + 100, 98, 95, 89, 86, 84, 83, 82, 88, 93, 86, 78, 93, 101, 91, 90, + 90, 92, 92, 94, 95, 95, 95, 98, 97, 94, 92, 90, 90, 90, 92, 86, + 87, 88, 85, 83, 84, 90, 95, 91, 95, 101, 105, 108, 108, 107, 105, 98, + 95, 95, 96, 95, 92, 92, 97, 108, 103, 126, 138, 156, 175, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 219, + 89, 32, 39, 43, 50, 75, 110, 126, 124, 107, 106, 93, 98, 123, 100, 119, + 116, 110, 109, 109, 109, 110, 111, 111, 112, 105, 111, 109, 98, 97, 106, 110, + 103, 102, 108, 108, 99, 88, 83, 80, 77, 86, 85, 85, 87, 88, 88, 86, + 84, 89, 87, 87, 88, 92, 93, 93, 91, 92, 97, 91, 89, 96, 92, 83, + 85, 89, 87, 85, 81, 79, 77, 77, 78, 95, 102, 107, 105, 104, 107, 108, + 105, 95, 90, 88, 89, 93, 94, 91, 87, 98, 106, 119, 138, 154, 160, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 215, 225, 123, 65, 52, 42, 47, 57, 65, 69, 70, 67, 70, 63, 104, 124, + 109, 109, 114, 113, 114, 113, 111, 108, 105, 103, 103, 100, 106, 105, 99, 101, + 112, 118, 114, 89, 96, 106, 107, 98, 85, 75, 70, 72, 70, 68, 69, 72, + 77, 81, 83, 81, 80, 79, 81, 83, 85, 83, 82, 85, 89, 82, 81, 89, + 88, 83, 89, 78, 78, 80, 81, 82, 84, 87, 88, 92, 96, 100, 102, 105, + 108, 104, 97, 95, 93, 94, 96, 98, 100, 98, 94, 100, 109, 125, 143, 159, + 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 240, 223, 163, 105, 68, 42, 45, 48, 38, 33, 41, 41, 47, 46, + 112, 126, 119, 103, 118, 115, 117, 118, 114, 108, 103, 100, 100, 108, 112, 108, + 101, 101, 108, 110, 105, 87, 91, 103, 113, 105, 84, 69, 66, 69, 67, 65, + 65, 65, 66, 68, 69, 63, 62, 63, 66, 68, 70, 66, 65, 74, 77, 67, + 64, 70, 68, 64, 69, 78, 80, 83, 85, 89, 91, 93, 94, 84, 90, 94, + 100, 109, 113, 108, 98, 88, 90, 94, 97, 97, 96, 95, 94, 98, 108, 124, + 142, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 218, 193, 142, 90, 46, 40, 47, 44, 40, 43, 42, + 49, 56, 104, 121, 115, 104, 118, 112, 116, 119, 117, 111, 107, 105, 106, 113, + 114, 108, 101, 98, 100, 97, 91, 99, 95, 100, 109, 100, 78, 67, 71, 70, + 74, 77, 78, 76, 72, 68, 65, 55, 54, 56, 59, 62, 63, 60, 57, 58, + 62, 55, 51, 58, 55, 49, 53, 63, 64, 65, 67, 67, 65, 64, 64, 55, + 62, 70, 75, 82, 88, 86, 80, 80, 85, 91, 94, 94, 93, 92, 93, 107, + 114, 129, 145, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 207, 175, 122, 59, 31, 37, 49, 47, + 37, 39, 50, 76, 88, 115, 108, 105, 109, 109, 112, 116, 115, 112, 108, 106, + 107, 105, 105, 102, 99, 100, 102, 100, 96, 105, 98, 99, 106, 99, 80, 72, + 77, 74, 78, 86, 90, 89, 87, 86, 85, 76, 73, 72, 72, 71, 70, 67, + 64, 57, 62, 60, 61, 69, 66, 57, 61, 60, 61, 63, 63, 62, 61, 58, + 57, 61, 71, 78, 76, 72, 73, 74, 72, 72, 78, 86, 91, 94, 96, 101, + 104, 116, 122, 136, 152, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 195, 151, 84, 38, 35, + 53, 51, 33, 32, 45, 84, 83, 118, 114, 110, 108, 110, 110, 110, 109, 108, + 105, 102, 100, 105, 103, 101, 102, 105, 106, 103, 99, 98, 96, 100, 106, 102, + 89, 80, 80, 88, 89, 91, 89, 88, 90, 95, 100, 97, 93, 89, 86, 83, + 81, 77, 73, 76, 82, 77, 77, 82, 75, 64, 64, 72, 75, 76, 78, 79, + 81, 81, 82, 95, 106, 112, 103, 90, 83, 81, 79, 67, 70, 76, 83, 91, + 99, 107, 111, 110, 113, 129, 149, 190, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 210, 175, 116, + 65, 49, 55, 51, 39, 41, 43, 71, 86, 116, 124, 107, 114, 114, 109, 105, + 105, 107, 106, 101, 97, 110, 106, 103, 105, 108, 106, 101, 97, 96, 97, 100, + 102, 99, 94, 86, 81, 93, 94, 93, 90, 86, 87, 93, 100, 103, 100, 96, + 92, 91, 91, 89, 88, 90, 94, 88, 85, 86, 79, 68, 70, 76, 76, 77, + 78, 80, 82, 84, 87, 99, 108, 116, 111, 102, 93, 85, 79, 75, 74, 74, + 78, 87, 98, 107, 112, 107, 111, 130, 158, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, + 194, 143, 92, 60, 48, 42, 36, 58, 45, 52, 86, 104, 123, 94, 116, 116, + 108, 103, 104, 108, 110, 105, 100, 105, 101, 100, 105, 109, 109, 104, 100, 103, + 104, 100, 94, 91, 92, 89, 82, 78, 84, 90, 92, 90, 91, 96, 101, 103, + 100, 97, 96, 98, 102, 103, 104, 85, 90, 86, 85, 94, 93, 86, 90, 88, + 87, 85, 83, 83, 84, 85, 86, 94, 105, 115, 119, 117, 111, 100, 91, 94, + 87, 82, 82, 90, 100, 108, 111, 124, 128, 149, 184, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 239, 204, 157, 143, 85, 44, 35, 60, 46, 42, 54, 78, 97, 116, 118, + 103, 110, 112, 116, 114, 109, 104, 101, 101, 94, 99, 99, 95, 97, 103, 105, + 102, 102, 99, 97, 100, 102, 96, 87, 80, 92, 93, 92, 91, 90, 95, 99, + 102, 104, 109, 103, 101, 107, 104, 99, 102, 100, 94, 96, 102, 100, 91, 90, + 99, 89, 88, 88, 91, 90, 86, 84, 85, 96, 102, 110, 117, 112, 104, 103, + 108, 101, 86, 88, 92, 88, 102, 117, 108, 126, 122, 153, 184, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 218, 179, 165, 109, 64, 42, 47, 45, 42, 57, 81, 98, + 115, 117, 105, 102, 105, 107, 108, 107, 106, 104, 104, 98, 101, 99, 96, 98, + 104, 104, 101, 103, 102, 100, 101, 100, 95, 87, 83, 92, 94, 96, 97, 97, + 96, 96, 96, 99, 104, 97, 95, 102, 100, 95, 100, 99, 94, 96, 103, 101, + 94, 96, 104, 91, 88, 89, 92, 93, 90, 90, 93, 101, 103, 110, 116, 114, + 105, 101, 101, 98, 84, 85, 88, 89, 104, 119, 113, 118, 125, 162, 208, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 195, 187, 146, 107, 72, 48, 43, 42, 60, + 85, 98, 111, 116, 107, 101, 100, 100, 101, 103, 105, 103, 102, 101, 101, 97, + 96, 99, 104, 103, 99, 96, 98, 99, 99, 99, 99, 97, 94, 92, 91, 92, + 93, 94, 94, 94, 96, 100, 105, 98, 96, 103, 102, 99, 104, 102, 96, 93, + 94, 89, 81, 82, 88, 85, 81, 80, 84, 85, 84, 87, 91, 103, 102, 106, + 114, 117, 110, 102, 98, 104, 91, 89, 92, 91, 104, 115, 113, 113, 137, 181, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 199, 178, 149, 107, 50, 41, + 42, 62, 86, 97, 107, 113, 107, 107, 103, 98, 98, 100, 101, 98, 96, 100, + 97, 93, 94, 98, 102, 101, 98, 95, 99, 100, 97, 96, 99, 101, 100, 97, + 91, 86, 86, 89, 94, 101, 108, 102, 106, 99, 97, 105, 105, 102, 107, 102, + 96, 91, 88, 82, 74, 74, 79, 81, 76, 75, 76, 79, 79, 83, 89, 101, + 98, 101, 112, 118, 114, 106, 101, 100, 93, 90, 96, 99, 107, 114, 117, 112, + 150, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 201, 193, 170, 127, + 46, 44, 43, 62, 86, 95, 102, 109, 107, 109, 104, 99, 97, 98, 98, 95, + 93, 95, 92, 90, 92, 96, 98, 98, 98, 101, 106, 103, 96, 92, 96, 97, + 94, 104, 95, 89, 91, 95, 98, 103, 109, 99, 103, 97, 95, 103, 103, 99, + 104, 98, 95, 93, 92, 89, 86, 88, 93, 88, 83, 79, 81, 82, 83, 88, + 94, 102, 100, 103, 111, 116, 113, 105, 103, 88, 88, 89, 97, 104, 108, 114, + 127, 118, 156, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 199, + 180, 146, 60, 50, 44, 61, 86, 94, 100, 106, 106, 104, 101, 98, 97, 97, + 98, 97, 96, 93, 91, 90, 93, 93, 92, 93, 98, 94, 99, 97, 92, 93, + 101, 104, 100, 100, 92, 90, 96, 99, 95, 91, 93, 99, 102, 97, 96, 103, + 102, 98, 102, 100, 99, 97, 94, 89, 86, 87, 89, 90, 86, 82, 84, 85, + 87, 92, 99, 106, 105, 108, 112, 111, 104, 101, 102, 92, 98, 97, 99, 103, + 99, 104, 126, 143, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 237, 200, 183, 167, 89, 59, 49, 63, 87, 96, 100, 106, 107, 98, 98, 99, + 97, 96, 96, 96, 97, 95, 94, 94, 95, 91, 86, 89, 97, 88, 94, 91, + 88, 95, 106, 108, 101, 100, 90, 88, 96, 99, 92, 86, 86, 96, 100, 96, + 96, 103, 100, 93, 95, 98, 98, 95, 89, 82, 78, 75, 76, 87, 83, 81, + 84, 87, 89, 94, 101, 105, 109, 113, 113, 105, 97, 100, 107, 106, 114, 107, + 102, 102, 94, 103, 136, 172, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 200, 179, 174, 104, 66, 54, 64, 87, 97, 102, 107, 107, 96, + 98, 99, 98, 93, 91, 92, 95, 98, 97, 98, 98, 90, 82, 85, 95, 99, + 102, 97, 90, 94, 103, 100, 88, 110, 96, 89, 97, 101, 96, 96, 99, 90, + 95, 91, 90, 97, 93, 85, 86, 89, 91, 90, 86, 82, 79, 77, 76, 83, + 81, 80, 84, 89, 92, 98, 105, 102, 109, 115, 113, 102, 95, 102, 115, 106, + 117, 110, 105, 108, 104, 120, 161, 187, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 237, 202, 193, 147, 74, 64, 74, 92, 94, 97, 106, + 111, 107, 98, 97, 99, 91, 91, 91, 81, 92, 89, 90, 93, 92, 88, 88, + 90, 100, 103, 99, 93, 97, 108, 108, 100, 106, 105, 96, 96, 101, 95, 87, + 93, 107, 105, 99, 92, 89, 93, 98, 102, 94, 86, 81, 86, 91, 90, 82, + 76, 84, 82, 79, 80, 86, 94, 102, 108, 108, 110, 113, 110, 98, 88, 93, + 104, 102, 118, 108, 115, 106, 102, 153, 182, 194, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 210, 205, 173, 100, 75, 71, 88, 97, + 100, 107, 109, 101, 93, 94, 94, 88, 90, 93, 87, 87, 85, 86, 91, 92, + 90, 91, 94, 96, 96, 94, 92, 98, 104, 102, 98, 98, 98, 92, 94, 102, + 98, 92, 99, 97, 98, 97, 91, 91, 94, 99, 101, 102, 94, 89, 88, 91, + 90, 85, 80, 78, 78, 77, 82, 89, 98, 106, 111, 111, 113, 114, 110, 100, + 92, 98, 110, 107, 113, 119, 112, 113, 137, 163, 189, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 223, 179, 140, 94, 72, + 85, 96, 100, 107, 109, 96, 91, 94, 93, 85, 87, 93, 89, 85, 83, 84, + 89, 90, 89, 90, 94, 98, 94, 93, 99, 104, 103, 101, 100, 95, 97, 93, + 95, 105, 101, 97, 105, 91, 95, 96, 90, 90, 94, 97, 96, 101, 97, 92, + 89, 89, 90, 89, 87, 78, 79, 82, 86, 92, 100, 106, 111, 117, 117, 115, + 111, 103, 99, 106, 116, 119, 113, 130, 116, 131, 174, 176, 194, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 188, 156, + 102, 74, 84, 93, 96, 103, 109, 96, 92, 97, 97, 85, 84, 89, 85, 87, + 84, 84, 87, 87, 85, 86, 89, 98, 91, 91, 102, 106, 101, 98, 101, 100, + 103, 98, 99, 106, 102, 97, 106, 98, 102, 101, 92, 88, 92, 93, 90, 93, + 95, 93, 89, 87, 89, 89, 90, 83, 84, 87, 89, 92, 98, 104, 109, 121, + 122, 120, 114, 108, 105, 108, 116, 126, 117, 127, 134, 159, 188, 186, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 225, 124, 87, 75, 88, 93, 90, 96, 103, 93, 91, 98, 99, 88, 85, 87, + 82, 85, 82, 81, 83, 83, 81, 82, 87, 91, 83, 85, 96, 100, 95, 91, + 93, 100, 104, 99, 100, 105, 100, 96, 105, 105, 109, 105, 92, 87, 93, 96, + 92, 89, 94, 96, 91, 87, 88, 88, 85, 88, 89, 89, 89, 92, 97, 105, + 111, 120, 123, 123, 119, 113, 111, 110, 111, 120, 118, 116, 155, 183, 206, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 232, 72, 62, 75, 94, 93, 89, 92, 95, 91, 88, 95, 97, 89, + 88, 90, 83, 82, 78, 77, 80, 81, 80, 83, 87, 87, 83, 84, 91, 96, + 94, 91, 91, 93, 97, 94, 96, 101, 97, 94, 105, 103, 109, 105, 92, 88, + 97, 100, 95, 92, 99, 100, 93, 89, 91, 88, 81, 86, 88, 89, 89, 91, + 98, 107, 116, 118, 122, 122, 118, 115, 114, 112, 108, 112, 119, 119, 170, 193, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 54, 75, 91, 86, 87, 95, 97, 97, 89, 91, + 92, 86, 88, 90, 83, 83, 79, 78, 80, 80, 79, 81, 84, 85, 85, 86, + 87, 91, 96, 93, 88, 88, 93, 91, 94, 99, 95, 94, 106, 94, 104, 103, + 91, 88, 98, 100, 93, 91, 98, 96, 90, 89, 95, 94, 86, 83, 87, 91, + 93, 93, 98, 106, 114, 115, 118, 116, 113, 114, 117, 115, 111, 120, 130, 148, + 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 82, 75, 84, 101, 105, 105, + 93, 89, 87, 81, 83, 86, 79, 88, 83, 80, 80, 78, 75, 76, 79, 79, + 83, 82, 78, 83, 91, 90, 81, 89, 95, 94, 95, 100, 95, 93, 104, 90, + 102, 103, 91, 89, 97, 97, 86, 86, 92, 90, 84, 88, 99, 101, 93, 85, + 90, 95, 97, 95, 97, 101, 106, 113, 115, 112, 108, 111, 117, 118, 114, 135, + 144, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 80, 90, + 103, 104, 92, 85, 87, 89, 86, 83, 84, 82, 78, 84, 69, 78, 69, 78, + 73, 71, 77, 80, 76, 76, 82, 88, 88, 86, 86, 92, 100, 100, 93, 90, + 93, 90, 95, 98, 96, 93, 93, 97, 101, 95, 87, 84, 87, 88, 86, 91, + 98, 84, 89, 94, 98, 96, 96, 101, 109, 117, 105, 132, 106, 118, 96, 124, + 109, 148, 175, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 201, 84, 82, 87, 95, 90, 92, 73, 77, + 67, 78, 76, 73, 79, 81, 78, 77, 84, 90, 90, 84, 85, 88, 93, 90, + 84, 84, 89, 93, 97, 101, 100, 98, 97, 97, 99, 88, 87, 90, 98, 99, + 92, 89, 90, 90, 91, 93, 95, 97, 96, 98, 101, 95, 107, 109, 118, 123, + 118, 119, 141, 153, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 193, 74, 60, 71, 71, 74, 76, 77, 75, 73, 78, 82, 84, 82, 84, 87, + 87, 82, 77, 80, 86, 90, 93, 97, 98, 99, 97, 95, 93, 84, 86, 93, + 101, 100, 93, 86, 83, 91, 90, 89, 91, 96, 99, 99, 96, 95, 111, 102, + 113, 125, 115, 105, 143, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 77, 75, 72, 73, 74, 75, 74, 74, 75, 74, 79, + 83, 87, 86, 81, 78, 80, 85, 84, 86, 87, 90, 93, 94, 92, 91, 89, + 88, 89, 90, 89, 87, 86, 85, 84, 86, 87, 87, 92, 97, 100, 98, 99, + 100, 113, 108, 141, 135, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 68, 71, 76, 77, 76, 75, + 74, 73, 81, 86, 85, 81, 79, 80, 81, 80, 80, 80, 82, 85, 89, 92, + 93, 90, 89, 87, 85, 84, 86, 88, 87, 77, 85, 89, 85, 86, 91, 97, + 99, 102, 91, 116, 115, 129, 166, 229, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 74, + 73, 73, 74, 70, 76, 80, 80, 77, 79, 77, 75, 77, 78, 78, 78, 80, + 85, 90, 94, 84, 87, 88, 87, 86, 88, 87, 83, 78, 88, 91, 84, 80, + 85, 92, 93, 96, 94, 106, 131, 103, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 194, 71, 76, 74, 77, 76, 74, 74, 78, 76, 70, 72, 76, 78, + 77, 76, 78, 82, 86, 77, 82, 83, 80, 81, 85, 84, 79, 79, 87, 87, + 79, 79, 87, 91, 88, 85, 96, 98, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 80, 79, 74, 68, 71, 78, 75, 68, 66, + 73, 77, 77, 73, 71, 74, 77, 76, 78, 75, 69, 131, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 164, 143, 153, 120, 145, + 138, 160, 180, 200, 201, 146, 168, 247, 237, 196, 175, 244, 253, 166, 193, 220, + 224, 233, 232, 236, 230, 211, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 128, 140, 125, 155, 140, 150, + 113, 136, 134, 136, 152, 179, 193, 151, 154, 237, 246, 203, 194, 253, 243, 163, + 202, 228, 213, 209, 206, 211, 209, 196, 175, 180, 195, 209, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 108, 121, 129, 131, 118, 141, + 136, 144, 122, 144, 146, 119, 133, 156, 175, 160, 156, 236, 253, 207, 190, 239, + 232, 176, 178, 174, 172, 167, 159, 161, 168, 175, 170, 170, 171, 169, 183, 197, + 210, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 97, 102, 107, 119, 124, 142, + 126, 131, 124, 120, 111, 128, 132, 117, 130, 136, 147, 161, 153, 210, 218, 170, + 142, 171, 177, 150, 112, 77, 99, 107, 106, 109, 111, 120, 123, 128, 127, 123, + 148, 175, 193, 213, 217, 225, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 107, 91, 102, 103, 106, 113, + 118, 114, 102, 99, 103, 100, 114, 134, 144, 113, 129, 119, 119, 149, 137, 166, + 151, 138, 129, 135, 110, 109, 94, 57, 73, 89, 101, 108, 98, 89, 91, 104, + 113, 106, 135, 158, 162, 158, 144, 143, 155, 172, 200, 231, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 228, 186, 152, 47, 24, 61, 98, 108, 105, + 103, 102, 98, 82, 68, 70, 94, 114, 118, 123, 135, 112, 109, 110, 115, 118, + 119, 125, 131, 137, 134, 121, 103, 91, 86, 79, 71, 86, 86, 94, 84, 69, + 71, 91, 96, 82, 118, 154, 147, 118, 98, 113, 134, 160, 197, 192, 141, 179, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 239, 202, 185, 173, 175, 145, 57, 44, 69, 92, + 95, 90, 88, 84, 78, 81, 73, 74, 90, 103, 108, 111, 119, 114, 108, 104, + 108, 111, 110, 108, 109, 86, 91, 89, 80, 73, 73, 73, 71, 74, 70, 73, + 69, 59, 63, 74, 75, 72, 101, 126, 126, 114, 110, 118, 128, 134, 148, 140, + 112, 174, 203, 195, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 236, 171, 164, 160, 148, 145, 125, 58, 59, + 71, 79, 78, 76, 77, 72, 65, 65, 65, 66, 70, 75, 80, 83, 83, 98, + 89, 84, 86, 88, 83, 75, 70, 58, 67, 72, 67, 61, 59, 61, 63, 65, + 56, 56, 58, 54, 57, 61, 55, 57, 75, 88, 90, 96, 109, 113, 111, 89, + 84, 79, 72, 139, 158, 148, 156, 187, 180, 224, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 169, 154, 157, 152, 142, 120, + 65, 62, 61, 61, 61, 68, 74, 71, 62, 61, 68, 70, 65, 65, 72, 74, + 71, 89, 83, 81, 83, 82, 75, 68, 65, 60, 63, 65, 62, 57, 55, 55, + 55, 61, 51, 53, 59, 56, 57, 57, 50, 54, 66, 71, 69, 80, 102, 111, + 108, 84, 74, 78, 76, 119, 115, 107, 126, 130, 133, 175, 238, 246, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 184, 155, 161, 160, 172, 164, + 135, 105, 61, 60, 57, 54, 57, 67, 74, 70, 61, 57, 67, 69, 62, 62, + 69, 71, 66, 67, 68, 71, 73, 70, 63, 63, 67, 58, 53, 50, 51, 53, + 54, 52, 51, 57, 50, 58, 66, 60, 56, 57, 54, 62, 73, 77, 72, 78, + 99, 116, 120, 95, 81, 90, 86, 112, 94, 81, 98, 113, 128, 142, 192, 210, + 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 167, 153, 150, 167, 164, + 160, 137, 102, 84, 63, 63, 57, 54, 57, 64, 66, 60, 52, 50, 57, 59, + 55, 55, 60, 61, 57, 47, 49, 54, 56, 52, 48, 53, 62, 62, 53, 47, + 49, 53, 53, 49, 47, 50, 44, 55, 66, 58, 51, 54, 54, 54, 63, 68, + 66, 68, 80, 98, 110, 94, 76, 86, 84, 111, 97, 78, 76, 110, 133, 125, + 162, 181, 192, 204, 237, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 151, 142, 151, + 157, 133, 116, 102, 83, 80, 71, 61, 56, 53, 56, 59, 59, 54, 50, 62, + 63, 64, 63, 63, 63, 61, 58, 54, 52, 52, 53, 50, 49, 55, 63, 62, + 55, 52, 55, 56, 50, 45, 45, 48, 42, 53, 66, 61, 54, 56, 56, 51, + 51, 55, 61, 62, 63, 69, 77, 89, 76, 92, 88, 115, 111, 92, 78, 74, + 103, 112, 163, 169, 164, 165, 174, 180, 181, 186, 198, 232, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 150, 132, 131, + 131, 100, 97, 65, 59, 72, 70, 65, 47, 52, 49, 49, 52, 55, 55, 54, + 54, 59, 55, 54, 56, 56, 52, 48, 46, 57, 49, 43, 43, 43, 43, 46, + 52, 49, 48, 52, 57, 58, 50, 50, 53, 52, 43, 52, 68, 66, 60, 60, + 58, 64, 54, 55, 67, 71, 61, 55, 57, 65, 66, 92, 81, 100, 99, 88, + 71, 85, 84, 79, 121, 116, 128, 162, 168, 151, 156, 167, 184, 201, 220, 244, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 147, 129, + 135, 138, 93, 57, 57, 58, 60, 62, 58, 51, 45, 48, 47, 46, 49, 56, + 59, 58, 54, 53, 55, 58, 57, 55, 51, 49, 49, 53, 53, 51, 48, 43, + 42, 43, 45, 41, 39, 44, 52, 56, 51, 52, 55, 53, 50, 49, 52, 59, + 63, 61, 58, 55, 56, 57, 60, 61, 60, 56, 53, 53, 63, 69, 67, 83, + 98, 87, 57, 61, 62, 78, 96, 111, 119, 137, 152, 145, 150, 147, 160, 181, + 186, 204, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, + 140, 137, 145, 128, 63, 57, 58, 61, 63, 62, 57, 50, 45, 44, 43, 44, + 49, 55, 57, 53, 49, 52, 54, 55, 55, 52, 49, 48, 48, 53, 53, 52, + 49, 44, 44, 45, 47, 46, 43, 43, 49, 51, 49, 50, 55, 52, 49, 46, + 49, 54, 56, 54, 51, 57, 57, 59, 61, 63, 62, 58, 55, 51, 59, 62, + 64, 77, 90, 81, 62, 55, 53, 58, 69, 78, 91, 116, 138, 160, 150, 150, + 166, 181, 175, 186, 213, 241, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 225, 142, 142, 135, 120, 97, 49, 63, 66, 68, 66, 60, 52, 45, 41, 40, + 40, 44, 50, 55, 55, 50, 45, 51, 52, 52, 50, 48, 46, 46, 47, 50, + 50, 47, 45, 44, 43, 44, 46, 49, 46, 43, 45, 46, 46, 48, 53, 51, + 48, 46, 46, 49, 50, 48, 45, 54, 54, 56, 59, 61, 61, 58, 55, 56, + 58, 59, 63, 71, 77, 73, 65, 64, 58, 57, 62, 66, 75, 99, 121, 134, + 125, 131, 143, 154, 169, 192, 201, 219, 244, 251, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 229, 166, 148, 145, 112, 69, 67, 69, 73, 74, 72, 64, 53, 43, 39, + 37, 41, 42, 45, 50, 53, 54, 50, 47, 49, 50, 49, 47, 44, 43, 44, + 45, 45, 47, 45, 44, 43, 44, 44, 47, 48, 47, 44, 45, 46, 47, 49, + 51, 49, 47, 45, 46, 48, 48, 47, 45, 48, 48, 49, 52, 55, 56, 54, + 52, 58, 55, 57, 63, 65, 63, 59, 58, 53, 47, 47, 54, 57, 57, 65, + 75, 80, 86, 101, 103, 107, 151, 199, 204, 200, 231, 243, 247, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 230, 179, 181, 154, 122, 78, 47, 68, 91, 75, 73, 67, 56, 45, + 38, 38, 39, 42, 43, 44, 46, 49, 50, 49, 48, 48, 48, 48, 46, 43, + 42, 43, 44, 43, 44, 44, 43, 43, 44, 45, 48, 43, 45, 46, 47, 47, + 49, 50, 50, 45, 44, 44, 45, 47, 48, 47, 47, 45, 45, 47, 50, 53, + 55, 54, 53, 57, 54, 56, 63, 64, 58, 54, 55, 50, 43, 44, 56, 63, + 59, 56, 56, 62, 65, 89, 95, 88, 117, 172, 199, 203, 227, 242, 243, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 245, 210, 178, 176, 187, 138, 81, 57, 63, 84, 84, 65, 62, 55, + 47, 41, 39, 41, 44, 40, 41, 42, 43, 44, 46, 46, 47, 47, 48, 48, + 47, 44, 42, 42, 43, 43, 44, 44, 44, 43, 42, 45, 48, 42, 45, 47, + 46, 47, 50, 51, 48, 39, 40, 41, 42, 44, 45, 46, 47, 46, 46, 47, + 51, 55, 58, 58, 57, 59, 57, 58, 62, 64, 60, 56, 55, 58, 49, 48, + 60, 69, 69, 67, 68, 69, 56, 80, 110, 103, 91, 127, 178, 201, 218, 243, + 246, 252, 255, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 241, 208, 193, 178, 175, 166, 100, 54, 58, 70, 75, 62, 54, + 50, 45, 42, 41, 41, 41, 41, 38, 41, 43, 45, 46, 46, 45, 45, 47, + 49, 50, 49, 46, 44, 43, 43, 44, 45, 43, 42, 42, 43, 46, 46, 45, + 48, 46, 42, 42, 47, 49, 46, 40, 41, 42, 43, 44, 45, 46, 47, 47, + 47, 48, 52, 57, 60, 61, 61, 75, 72, 67, 64, 65, 66, 61, 55, 54, + 48, 49, 57, 62, 60, 65, 71, 64, 54, 67, 97, 104, 81, 91, 132, 158, + 176, 228, 241, 242, 251, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 242, 214, 202, 184, 171, 175, 138, 67, 52, 67, 56, 48, + 48, 48, 45, 41, 40, 42, 41, 38, 35, 38, 42, 48, 51, 51, 49, 46, + 45, 47, 49, 51, 51, 48, 45, 43, 43, 45, 46, 44, 43, 42, 43, 44, + 46, 49, 50, 45, 37, 37, 43, 47, 45, 44, 45, 46, 46, 46, 46, 48, + 49, 47, 47, 48, 52, 57, 60, 62, 61, 90, 86, 75, 64, 63, 66, 61, + 51, 60, 60, 65, 71, 67, 62, 68, 78, 51, 56, 54, 61, 81, 77, 69, + 82, 102, 128, 205, 232, 233, 250, 248, 252, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 241, 205, 201, 195, 186, 185, 159, 102, 53, 47, 56, + 53, 48, 50, 45, 43, 41, 38, 37, 36, 36, 37, 45, 42, 41, 44, 50, + 52, 49, 46, 46, 46, 45, 45, 43, 41, 40, 39, 43, 43, 43, 44, 44, + 46, 49, 51, 51, 43, 36, 39, 42, 43, 39, 35, 40, 39, 39, 41, 45, + 49, 51, 52, 43, 52, 51, 49, 55, 56, 58, 69, 80, 87, 86, 73, 61, + 58, 60, 60, 62, 57, 58, 66, 70, 68, 69, 73, 69, 54, 49, 60, 73, + 72, 63, 55, 73, 83, 125, 164, 194, 240, 255, 236, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 214, 209, 196, 199, 185, 143, 114, 79, 51, + 51, 58, 53, 46, 45, 43, 42, 40, 38, 36, 36, 36, 36, 44, 42, 41, + 44, 49, 51, 49, 45, 45, 45, 45, 44, 43, 41, 40, 39, 42, 41, 41, + 42, 42, 44, 46, 47, 41, 38, 37, 38, 38, 39, 40, 41, 44, 44, 46, + 45, 48, 46, 48, 45, 45, 51, 53, 52, 62, 61, 62, 70, 72, 80, 80, + 68, 57, 55, 58, 59, 59, 59, 62, 66, 65, 61, 62, 67, 65, 53, 51, + 58, 64, 64, 61, 60, 63, 64, 75, 103, 143, 179, 222, 255, 246, 246, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 218, 203, 207, 181, 106, 73, + 60, 50, 50, 53, 51, 46, 43, 41, 40, 39, 37, 36, 36, 36, 36, 43, + 41, 41, 44, 49, 50, 47, 44, 45, 45, 45, 44, 43, 42, 40, 39, 39, + 38, 38, 39, 39, 41, 41, 42, 34, 36, 37, 37, 37, 40, 43, 47, 43, + 43, 46, 44, 46, 43, 44, 41, 48, 53, 55, 57, 70, 68, 65, 69, 66, + 72, 72, 63, 54, 53, 58, 61, 57, 59, 63, 65, 61, 55, 56, 60, 57, + 54, 54, 56, 56, 56, 61, 66, 60, 65, 65, 87, 121, 127, 162, 234, 255, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 209, 219, 210, 194, 145, + 78, 62, 59, 51, 45, 45, 49, 48, 43, 39, 38, 38, 37, 36, 36, 36, + 36, 42, 41, 42, 45, 48, 49, 46, 43, 45, 45, 45, 44, 43, 42, 41, + 40, 39, 39, 39, 39, 39, 40, 39, 39, 36, 40, 40, 39, 41, 46, 49, + 51, 41, 42, 43, 43, 44, 46, 48, 50, 52, 58, 58, 62, 73, 71, 62, + 65, 61, 65, 68, 60, 55, 52, 60, 64, 58, 57, 62, 63, 64, 58, 56, + 55, 53, 53, 55, 56, 55, 55, 61, 64, 62, 74, 85, 99, 114, 111, 128, + 168, 227, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 207, 209, 206, + 152, 79, 52, 59, 58, 52, 44, 45, 49, 46, 38, 37, 37, 37, 37, 37, + 37, 36, 36, 41, 42, 44, 47, 49, 48, 46, 43, 44, 44, 44, 44, 43, + 42, 41, 40, 40, 40, 40, 41, 40, 40, 39, 39, 40, 42, 41, 39, 42, + 50, 52, 46, 47, 47, 47, 46, 47, 51, 57, 62, 59, 64, 62, 64, 73, + 70, 59, 59, 57, 60, 63, 56, 51, 47, 56, 63, 58, 55, 58, 61, 70, + 69, 62, 52, 53, 55, 55, 57, 60, 61, 61, 58, 64, 70, 82, 80, 81, + 111, 135, 128, 142, 186, 254, 255, 255, 255, 255, 255, 255, 255, 243, 226, 205, + 196, 191, 119, 48, 50, 50, 51, 51, 49, 50, 48, 41, 32, 36, 37, 38, + 38, 39, 38, 38, 37, 42, 44, 47, 49, 50, 48, 46, 44, 43, 44, 44, + 44, 44, 43, 42, 41, 40, 40, 41, 42, 41, 41, 40, 40, 43, 45, 43, + 39, 42, 51, 51, 43, 46, 45, 47, 43, 43, 44, 52, 56, 60, 64, 63, + 60, 67, 61, 54, 56, 56, 56, 58, 53, 47, 41, 50, 58, 58, 54, 56, + 62, 76, 78, 68, 52, 56, 57, 57, 58, 62, 65, 62, 54, 69, 71, 82, + 74, 70, 116, 146, 117, 92, 124, 241, 255, 255, 255, 255, 255, 255, 244, 215, + 220, 206, 188, 162, 100, 52, 54, 48, 49, 51, 53, 49, 42, 36, 35, 36, + 37, 38, 40, 40, 40, 39, 39, 42, 45, 49, 51, 51, 49, 46, 45, 43, + 43, 44, 44, 44, 43, 42, 41, 38, 39, 41, 42, 41, 41, 39, 38, 42, + 50, 49, 42, 42, 50, 54, 48, 44, 43, 48, 45, 44, 41, 47, 49, 58, + 62, 60, 54, 59, 53, 51, 57, 60, 58, 58, 53, 45, 38, 45, 56, 55, + 56, 60, 66, 78, 81, 70, 56, 59, 61, 59, 57, 61, 66, 63, 56, 70, + 78, 85, 84, 87, 109, 128, 130, 97, 87, 234, 237, 255, 255, 255, 255, 255, + 220, 219, 215, 209, 181, 132, 86, 58, 42, 54, 53, 55, 53, 45, 34, 36, + 43, 37, 37, 40, 40, 42, 41, 41, 40, 41, 44, 50, 53, 52, 49, 47, + 46, 43, 43, 44, 44, 44, 43, 42, 42, 38, 38, 39, 41, 42, 41, 38, + 38, 40, 52, 55, 45, 41, 49, 55, 54, 43, 47, 54, 55, 52, 50, 51, + 54, 53, 60, 56, 51, 53, 50, 48, 59, 64, 63, 61, 57, 47, 39, 45, + 55, 50, 56, 62, 67, 75, 78, 68, 56, 56, 61, 59, 54, 54, 60, 61, + 59, 62, 75, 72, 78, 94, 92, 107, 151, 98, 61, 237, 245, 255, 255, 255, + 255, 255, 225, 213, 208, 213, 188, 114, 49, 36, 49, 47, 47, 49, 46, 46, + 42, 41, 37, 45, 42, 43, 39, 40, 38, 41, 39, 40, 41, 44, 44, 43, + 42, 43, 45, 42, 44, 48, 48, 46, 44, 43, 43, 45, 40, 39, 42, 44, + 40, 40, 43, 42, 46, 51, 54, 51, 51, 51, 51, 56, 51, 52, 58, 59, + 52, 48, 48, 53, 57, 55, 45, 42, 49, 56, 60, 57, 54, 48, 44, 39, + 39, 49, 58, 73, 67, 60, 63, 68, 70, 63, 57, 69, 73, 66, 53, 46, + 50, 56, 57, 66, 67, 79, 84, 78, 84, 95, 94, 99, 78, 145, 193, 255, + 255, 255, 255, 245, 223, 208, 210, 207, 170, 97, 44, 38, 48, 50, 50, 49, + 48, 46, 43, 41, 39, 43, 43, 44, 44, 43, 41, 40, 37, 37, 39, 43, + 44, 44, 42, 42, 42, 40, 42, 47, 47, 45, 44, 44, 44, 42, 38, 41, + 46, 47, 44, 43, 47, 42, 43, 48, 50, 50, 53, 57, 61, 61, 56, 54, + 56, 54, 49, 50, 54, 61, 63, 59, 49, 46, 53, 61, 65, 54, 49, 48, + 46, 46, 45, 52, 59, 72, 64, 59, 60, 69, 76, 76, 76, 78, 76, 74, + 69, 58, 50, 56, 63, 61, 65, 78, 85, 80, 86, 97, 96, 74, 76, 166, + 224, 255, 255, 255, 255, 222, 219, 209, 211, 195, 139, 69, 38, 42, 47, 51, + 51, 50, 49, 47, 44, 42, 41, 42, 43, 45, 45, 45, 42, 40, 36, 35, + 38, 43, 46, 45, 43, 41, 40, 39, 41, 44, 44, 45, 43, 43, 44, 35, + 37, 42, 45, 45, 42, 42, 45, 43, 41, 43, 44, 47, 54, 63, 68, 70, + 66, 62, 58, 54, 51, 57, 65, 73, 71, 62, 47, 37, 38, 42, 46, 36, + 33, 36, 43, 51, 55, 62, 67, 72, 65, 62, 68, 80, 90, 97, 101, 92, + 85, 81, 78, 64, 49, 52, 62, 59, 61, 75, 84, 81, 87, 97, 96, 92, + 80, 147, 204, 243, 255, 255, 255, 220, 216, 219, 213, 176, 105, 45, 38, 49, + 45, 53, 52, 51, 50, 48, 46, 45, 44, 44, 44, 44, 44, 43, 42, 41, + 40, 38, 40, 44, 45, 45, 43, 42, 42, 40, 42, 45, 44, 42, 40, 42, + 40, 40, 41, 45, 45, 43, 41, 43, 46, 43, 39, 36, 36, 41, 52, 62, + 70, 78, 77, 74, 68, 62, 61, 68, 76, 83, 80, 71, 57, 44, 38, 38, + 42, 41, 38, 41, 53, 63, 67, 69, 70, 74, 72, 75, 84, 97, 107, 117, + 122, 110, 103, 90, 75, 61, 54, 53, 57, 57, 60, 74, 82, 79, 84, 94, + 93, 90, 96, 156, 180, 178, 255, 255, 255, 220, 216, 232, 208, 152, 78, 33, + 41, 54, 44, 53, 52, 51, 50, 49, 48, 48, 47, 48, 46, 43, 41, 40, + 41, 43, 44, 42, 43, 44, 43, 42, 42, 45, 47, 42, 44, 45, 44, 41, + 38, 38, 37, 44, 45, 46, 44, 45, 50, 56, 61, 46, 42, 38, 38, 45, + 58, 68, 76, 79, 82, 83, 78, 73, 73, 77, 82, 86, 86, 86, 82, 75, + 71, 71, 74, 79, 76, 75, 78, 81, 78, 74, 71, 78, 81, 91, 102, 113, + 119, 126, 130, 131, 131, 108, 73, 57, 64, 64, 54, 57, 59, 72, 79, 74, + 79, 90, 86, 109, 97, 131, 163, 181, 255, 255, 246, 222, 219, 232, 193, 129, + 66, 33, 43, 53, 42, 50, 50, 49, 48, 48, 49, 49, 50, 50, 47, 43, + 40, 39, 41, 44, 46, 43, 44, 43, 41, 40, 41, 45, 48, 43, 45, 46, + 45, 42, 39, 38, 38, 36, 38, 38, 38, 47, 60, 71, 74, 55, 51, 48, + 51, 60, 69, 79, 82, 75, 79, 85, 80, 80, 80, 83, 81, 86, 86, 92, + 93, 92, 86, 89, 94, 98, 94, 92, 94, 91, 86, 82, 83, 85, 90, 100, + 111, 118, 123, 127, 132, 141, 148, 125, 77, 55, 65, 66, 51, 58, 59, 70, + 76, 70, 76, 85, 85, 83, 103, 161, 192, 178, 255, 255, 229, 225, 223, 218, + 170, 112, 65, 39, 41, 47, 42, 45, 45, 44, 44, 45, 47, 49, 50, 49, + 47, 44, 42, 41, 42, 43, 44, 40, 41, 41, 40, 39, 40, 41, 43, 41, + 44, 44, 44, 42, 40, 40, 40, 33, 35, 36, 39, 55, 74, 85, 84, 72, + 68, 67, 69, 76, 80, 83, 82, 72, 77, 82, 81, 84, 88, 89, 84, 88, + 87, 90, 92, 89, 82, 84, 89, 91, 91, 89, 91, 90, 88, 90, 95, 91, + 95, 101, 106, 110, 117, 125, 134, 144, 158, 145, 99, 64, 60, 60, 52, 56, + 57, 67, 72, 68, 76, 87, 88, 101, 103, 145, 188, 185, 255, 255, 230, 227, + 225, 202, 153, 102, 69, 44, 38, 42, 42, 41, 41, 41, 41, 43, 45, 48, + 49, 46, 46, 45, 44, 43, 43, 42, 42, 35, 38, 40, 41, 40, 39, 38, + 39, 39, 40, 43, 44, 44, 43, 43, 42, 40, 41, 43, 50, 69, 87, 95, + 90, 86, 83, 81, 80, 82, 81, 78, 74, 74, 78, 81, 82, 87, 94, 94, + 88, 91, 89, 91, 94, 90, 85, 88, 95, 92, 91, 91, 89, 88, 85, 89, + 97, 96, 97, 98, 98, 101, 110, 123, 135, 146, 166, 163, 125, 80, 56, 56, + 61, 56, 56, 66, 71, 68, 75, 91, 92, 102, 107, 149, 190, 177, 255, 246, + 231, 229, 227, 197, 141, 111, 72, 35, 43, 48, 41, 48, 52, 52, 48, 45, + 47, 47, 44, 48, 48, 48, 45, 42, 40, 40, 41, 43, 43, 44, 44, 42, + 40, 38, 36, 39, 43, 43, 37, 37, 41, 45, 42, 44, 52, 64, 71, 76, + 81, 89, 94, 94, 94, 93, 87, 86, 90, 91, 85, 87, 88, 88, 85, 89, + 97, 99, 95, 87, 93, 97, 95, 90, 89, 93, 98, 90, 90, 91, 92, 97, + 96, 94, 91, 94, 98, 100, 100, 105, 113, 118, 121, 137, 152, 163, 144, 106, + 79, 63, 46, 60, 67, 67, 64, 62, 72, 87, 90, 98, 118, 148, 180, 183, + 255, 227, 228, 224, 221, 188, 126, 108, 46, 47, 36, 54, 41, 46, 50, 50, + 47, 46, 49, 50, 48, 48, 47, 44, 41, 40, 43, 48, 53, 39, 41, 42, + 44, 44, 43, 42, 40, 39, 42, 43, 42, 43, 48, 53, 53, 64, 70, 81, + 87, 91, 95, 101, 105, 96, 96, 95, 91, 91, 96, 95, 91, 95, 95, 93, + 90, 93, 99, 99, 95, 97, 92, 89, 92, 98, 100, 96, 91, 87, 87, 88, + 90, 93, 94, 94, 92, 95, 98, 100, 101, 105, 114, 118, 121, 136, 158, 183, + 186, 162, 131, 92, 51, 58, 57, 64, 53, 54, 82, 93, 91, 101, 110, 141, + 183, 191, 255, 227, 227, 222, 217, 178, 122, 91, 32, 47, 42, 50, 43, 48, + 51, 50, 47, 47, 50, 50, 47, 46, 46, 45, 44, 43, 46, 51, 54, 42, + 43, 43, 45, 45, 45, 42, 42, 38, 42, 45, 43, 47, 54, 61, 61, 65, + 69, 78, 83, 86, 87, 92, 96, 98, 98, 98, 92, 93, 97, 99, 96, 99, + 98, 96, 93, 94, 97, 97, 93, 98, 94, 91, 94, 100, 102, 97, 92, 87, + 84, 84, 86, 91, 93, 93, 92, 95, 99, 103, 103, 108, 116, 120, 121, 143, + 153, 170, 179, 171, 152, 115, 70, 60, 49, 70, 53, 44, 78, 92, 96, 110, + 108, 142, 191, 196, 255, 227, 228, 223, 218, 171, 126, 64, 39, 36, 58, 37, + 47, 53, 54, 52, 48, 47, 48, 46, 41, 42, 46, 50, 52, 50, 46, 43, + 41, 46, 47, 46, 47, 45, 44, 41, 40, 38, 43, 43, 42, 47, 56, 64, + 62, 73, 75, 84, 88, 91, 91, 97, 97, 94, 95, 94, 91, 92, 97, 99, + 95, 97, 94, 92, 91, 92, 93, 92, 90, 90, 95, 100, 99, 94, 91, 94, + 98, 89, 86, 85, 86, 92, 94, 95, 95, 96, 100, 104, 104, 108, 116, 120, + 121, 139, 152, 180, 201, 203, 186, 141, 91, 62, 43, 74, 63, 43, 70, 87, + 107, 113, 112, 151, 198, 194, 255, 228, 229, 223, 216, 164, 111, 47, 39, 38, + 61, 34, 49, 52, 52, 50, 46, 46, 49, 46, 40, 42, 46, 50, 51, 48, + 42, 38, 36, 45, 46, 48, 47, 46, 45, 42, 41, 43, 47, 46, 44, 48, + 55, 63, 61, 77, 78, 86, 90, 94, 95, 99, 98, 91, 94, 93, 88, 89, + 94, 96, 94, 93, 91, 90, 92, 93, 93, 92, 91, 89, 95, 101, 100, 94, + 91, 93, 95, 92, 88, 89, 91, 94, 96, 99, 98, 99, 103, 105, 105, 109, + 117, 121, 122, 129, 140, 165, 183, 188, 185, 160, 126, 88, 51, 59, 63, 58, + 70, 76, 98, 94, 109, 152, 195, 194, 255, 229, 229, 220, 212, 156, 81, 41, + 32, 52, 50, 41, 49, 46, 46, 44, 43, 47, 51, 49, 44, 44, 44, 44, + 42, 40, 39, 41, 43, 40, 42, 45, 46, 48, 48, 46, 46, 47, 49, 49, + 48, 50, 60, 66, 67, 72, 74, 79, 83, 88, 90, 92, 92, 93, 95, 92, + 89, 90, 94, 96, 94, 91, 88, 88, 93, 95, 93, 92, 93, 96, 92, 90, + 93, 98, 99, 92, 84, 94, 90, 92, 93, 96, 97, 98, 97, 100, 104, 106, + 106, 109, 117, 123, 124, 152, 156, 168, 173, 178, 193, 202, 191, 151, 98, 49, + 52, 71, 71, 64, 63, 72, 101, 136, 175, 196, 255, 231, 231, 222, 213, 155, + 65, 33, 46, 55, 48, 40, 49, 43, 43, 41, 41, 46, 51, 49, 43, 42, + 42, 42, 40, 38, 39, 43, 46, 38, 40, 43, 45, 47, 48, 46, 46, 45, + 47, 49, 49, 53, 63, 73, 75, 81, 81, 85, 90, 95, 95, 95, 95, 92, + 94, 92, 89, 89, 93, 94, 92, 92, 87, 87, 93, 95, 91, 89, 91, 95, + 91, 90, 93, 98, 98, 91, 82, 93, 93, 93, 95, 98, 98, 98, 96, 102, + 105, 108, 108, 112, 119, 125, 124, 121, 135, 160, 172, 175, 185, 190, 178, 203, + 160, 57, 40, 73, 73, 71, 55, 72, 104, 115, 144, 215, 255, 233, 233, 227, + 215, 159, 66, 22, 72, 45, 58, 33, 52, 45, 44, 41, 40, 44, 49, 46, + 39, 39, 42, 45, 46, 44, 41, 39, 39, 41, 43, 45, 45, 46, 45, 45, + 42, 39, 42, 45, 46, 52, 64, 76, 80, 79, 78, 81, 86, 90, 90, 91, + 89, 90, 92, 91, 87, 86, 90, 91, 89, 92, 87, 87, 93, 94, 89, 85, + 87, 87, 94, 100, 99, 93, 86, 89, 90, 95, 95, 95, 97, 98, 97, 95, + 92, 101, 106, 107, 108, 112, 119, 125, 124, 135, 143, 158, 161, 162, 178, 193, + 189, 210, 193, 68, 33, 68, 75, 97, 82, 85, 114, 101, 120, 255, 255, 229, + 220, 234, 209, 148, 36, 48, 57, 41, 51, 32, 41, 46, 43, 40, 40, 42, + 43, 41, 39, 42, 42, 42, 42, 42, 42, 42, 42, 37, 40, 43, 43, 41, + 41, 45, 49, 46, 49, 49, 48, 56, 68, 79, 79, 80, 85, 88, 86, 86, + 92, 96, 93, 95, 95, 95, 92, 89, 89, 90, 93, 96, 91, 90, 99, 100, + 96, 95, 103, 88, 95, 90, 86, 90, 87, 90, 99, 97, 98, 96, 93, 96, + 101, 99, 94, 100, 106, 112, 115, 115, 120, 130, 137, 141, 143, 150, 159, 170, + 181, 188, 194, 213, 220, 107, 58, 45, 69, 89, 82, 93, 98, 103, 137, 255, + 255, 228, 216, 232, 199, 91, 26, 39, 45, 37, 50, 46, 46, 46, 44, 43, + 44, 47, 48, 46, 44, 42, 42, 42, 42, 42, 42, 42, 42, 40, 41, 40, + 39, 39, 41, 45, 46, 45, 46, 49, 52, 63, 76, 85, 86, 80, 82, 84, + 82, 86, 94, 98, 98, 89, 89, 87, 86, 86, 86, 89, 89, 94, 90, 90, + 92, 94, 92, 90, 90, 89, 96, 94, 91, 95, 91, 88, 98, 99, 100, 98, + 95, 95, 99, 97, 92, 99, 106, 112, 115, 120, 122, 129, 133, 128, 130, 139, + 151, 161, 172, 180, 183, 180, 207, 157, 116, 47, 46, 92, 98, 105, 93, 100, + 147, 255, 255, 227, 216, 229, 177, 51, 39, 43, 44, 40, 46, 51, 43, 41, + 40, 41, 43, 46, 46, 44, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, + 42, 39, 38, 39, 43, 45, 48, 51, 51, 54, 59, 70, 83, 85, 83, 98, + 94, 90, 86, 89, 95, 97, 95, 98, 96, 92, 91, 93, 95, 96, 94, 101, + 101, 99, 95, 98, 100, 97, 90, 87, 94, 94, 94, 101, 96, 93, 99, 98, + 100, 98, 95, 94, 98, 96, 92, 99, 103, 109, 114, 121, 123, 126, 127, 136, + 141, 152, 163, 174, 184, 192, 197, 211, 207, 176, 138, 46, 34, 94, 102, 107, + 82, 99, 156, 255, 247, 229, 221, 227, 147, 36, 54, 43, 47, 48, 39, 50, + 40, 39, 40, 42, 44, 45, 44, 41, 40, 42, 42, 42, 42, 42, 42, 42, + 42, 41, 40, 39, 40, 43, 46, 50, 51, 52, 54, 57, 64, 75, 86, 87, + 83, 101, 96, 91, 89, 92, 95, 93, 91, 99, 93, 85, 82, 85, 89, 91, + 89, 91, 95, 92, 86, 90, 96, 93, 81, 87, 93, 93, 92, 101, 99, 97, + 103, 95, 100, 98, 96, 96, 97, 97, 94, 98, 99, 103, 111, 118, 124, 127, + 126, 138, 141, 149, 160, 172, 185, 195, 199, 215, 203, 187, 164, 84, 46, 70, + 65, 102, 82, 118, 198, 255, 228, 232, 227, 226, 115, 27, 47, 28, 43, 53, + 34, 48, 45, 46, 47, 49, 49, 48, 45, 43, 41, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 41, 42, 42, 45, 48, 48, 44, 50, 57, 67, 80, + 91, 93, 91, 87, 84, 86, 92, 98, 99, 95, 93, 96, 89, 79, 76, 81, + 87, 93, 93, 90, 95, 94, 89, 93, 100, 99, 89, 94, 97, 93, 90, 99, + 98, 97, 103, 94, 98, 98, 96, 96, 100, 100, 98, 101, 100, 101, 107, 114, + 121, 125, 126, 135, 138, 143, 153, 165, 181, 196, 203, 206, 208, 200, 165, 95, + 34, 51, 79, 96, 97, 157, 255, 255, 228, 232, 229, 225, 89, 35, 42, 25, + 42, 52, 34, 46, 47, 46, 48, 49, 48, 45, 42, 41, 41, 42, 42, 42, + 42, 42, 42, 42, 42, 43, 45, 45, 43, 39, 40, 44, 45, 52, 59, 67, + 73, 81, 88, 89, 90, 93, 92, 94, 100, 101, 96, 88, 84, 78, 74, 68, + 67, 73, 80, 86, 88, 90, 94, 98, 95, 97, 99, 101, 98, 96, 97, 91, + 88, 97, 99, 97, 101, 95, 100, 102, 98, 97, 100, 101, 100, 103, 103, 105, + 105, 110, 113, 119, 122, 130, 133, 136, 143, 157, 172, 188, 196, 211, 207, 201, + 155, 87, 25, 47, 90, 84, 105, 188, 255, 255, 231, 230, 226, 224, 74, 44, + 43, 38, 45, 46, 40, 46, 44, 44, 45, 46, 45, 41, 39, 40, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 45, 48, 47, 44, 38, 40, 51, 59, 70, + 78, 84, 83, 83, 82, 84, 86, 99, 98, 97, 98, 90, 76, 65, 61, 46, + 46, 45, 45, 50, 53, 56, 60, 65, 67, 72, 74, 73, 69, 73, 78, 80, + 83, 80, 81, 94, 98, 96, 100, 100, 104, 105, 100, 97, 99, 101, 100, 100, + 102, 105, 102, 102, 100, 103, 106, 105, 107, 107, 111, 118, 128, 140, 147, 158, + 154, 199, 182, 112, 42, 45, 49, 65, 93, 197, 255, 255, 234, 227, 222, 223, + 69, 35, 35, 43, 42, 39, 47, 52, 45, 46, 48, 49, 47, 44, 43, 46, + 48, 42, 42, 42, 42, 42, 42, 42, 42, 43, 47, 49, 43, 39, 44, 61, + 74, 71, 82, 90, 90, 86, 86, 88, 93, 83, 84, 84, 83, 72, 55, 46, + 44, 45, 50, 52, 53, 51, 51, 50, 52, 53, 52, 58, 64, 60, 51, 57, + 67, 59, 65, 66, 74, 92, 98, 97, 101, 104, 109, 108, 104, 98, 98, 99, + 98, 94, 98, 103, 100, 94, 89, 89, 90, 93, 92, 90, 90, 92, 96, 100, + 103, 104, 98, 188, 189, 102, 39, 62, 53, 55, 80, 197, 255, 255, 232, 221, + 220, 220, 97, 39, 29, 45, 44, 40, 48, 45, 44, 41, 41, 42, 42, 42, + 41, 40, 39, 42, 42, 42, 43, 43, 44, 44, 44, 43, 38, 41, 46, 42, + 43, 60, 80, 79, 91, 97, 92, 86, 83, 74, 69, 94, 91, 75, 58, 52, + 55, 56, 51, 58, 53, 46, 45, 49, 55, 54, 52, 46, 44, 46, 49, 52, + 50, 52, 54, 59, 51, 50, 57, 70, 80, 90, 96, 106, 105, 101, 99, 101, + 108, 109, 106, 97, 96, 94, 87, 80, 75, 76, 77, 77, 75, 70, 65, 59, + 60, 64, 67, 83, 78, 135, 165, 125, 71, 42, 51, 68, 90, 185, 255, 255, + 231, 223, 222, 223, 104, 36, 28, 46, 45, 41, 49, 47, 49, 42, 42, 42, + 41, 41, 40, 40, 40, 42, 42, 42, 43, 43, 44, 44, 44, 44, 36, 35, + 44, 50, 54, 67, 82, 80, 86, 90, 89, 88, 85, 82, 81, 63, 64, 58, + 53, 56, 65, 70, 68, 75, 70, 64, 61, 62, 61, 58, 56, 56, 54, 51, + 53, 51, 48, 47, 51, 66, 62, 59, 65, 71, 76, 82, 89, 101, 100, 98, + 95, 98, 102, 103, 99, 93, 89, 82, 72, 64, 58, 57, 60, 49, 51, 51, + 47, 46, 45, 48, 51, 52, 55, 109, 144, 128, 93, 53, 40, 79, 98, 188, + 255, 255, 231, 224, 222, 223, 110, 37, 31, 50, 48, 40, 47, 47, 51, 44, + 43, 41, 40, 40, 40, 41, 42, 42, 42, 42, 42, 43, 43, 43, 41, 44, + 32, 31, 45, 60, 68, 79, 87, 94, 88, 88, 89, 87, 81, 75, 76, 69, + 74, 75, 76, 82, 90, 95, 94, 98, 98, 97, 96, 97, 94, 92, 91, 91, + 88, 82, 82, 78, 74, 74, 77, 74, 72, 71, 75, 75, 76, 80, 87, 98, + 99, 99, 96, 98, 103, 100, 95, 100, 91, 79, 68, 61, 58, 58, 57, 45, + 49, 53, 56, 57, 58, 62, 64, 70, 77, 114, 139, 151, 136, 79, 43, 77, + 103, 203, 255, 255, 231, 226, 220, 219, 114, 42, 37, 56, 51, 39, 43, 43, + 48, 45, 44, 41, 39, 39, 40, 42, 43, 42, 42, 42, 42, 42, 42, 42, + 41, 39, 32, 36, 48, 65, 75, 84, 90, 98, 88, 84, 89, 87, 78, 69, + 70, 74, 80, 84, 88, 92, 94, 95, 93, 94, 97, 101, 102, 101, 98, 95, + 93, 92, 87, 84, 82, 81, 79, 81, 84, 74, 71, 73, 75, 75, 75, 81, + 90, 95, 99, 99, 98, 97, 100, 96, 91, 88, 78, 67, 59, 56, 55, 55, + 53, 50, 55, 61, 66, 70, 74, 79, 81, 86, 100, 117, 128, 155, 153, 85, + 40, 71, 102, 255, 255, 255, 230, 229, 219, 219, 123, 43, 38, 57, 51, 40, + 43, 43, 48, 46, 44, 42, 40, 39, 41, 42, 44, 42, 42, 42, 42, 42, + 42, 42, 38, 35, 34, 43, 55, 66, 73, 83, 90, 91, 82, 82, 91, 94, + 85, 78, 80, 76, 81, 88, 94, 97, 95, 92, 91, 88, 91, 93, 92, 89, + 82, 77, 76, 78, 73, 71, 70, 71, 69, 72, 76, 72, 69, 70, 71, 72, + 72, 80, 89, 88, 94, 95, 93, 91, 92, 90, 86, 85, 77, 69, 64, 63, + 62, 61, 59, 62, 66, 72, 78, 83, 88, 94, 99, 89, 110, 124, 131, 165, + 151, 73, 37, 75, 127, 255, 255, 255, 228, 232, 221, 222, 135, 40, 34, 52, + 49, 41, 47, 47, 50, 45, 44, 43, 41, 41, 41, 42, 43, 42, 42, 42, + 42, 41, 41, 41, 38, 36, 40, 53, 63, 68, 75, 85, 91, 93, 91, 92, + 98, 98, 90, 86, 85, 91, 95, 99, 103, 100, 92, 87, 87, 82, 83, 84, + 84, 85, 81, 77, 74, 75, 73, 69, 71, 70, 69, 69, 73, 76, 72, 74, + 77, 78, 79, 83, 90, 90, 95, 96, 94, 90, 91, 90, 87, 90, 84, 80, + 72, 70, 67, 67, 66, 67, 70, 76, 80, 85, 90, 95, 99, 93, 120, 139, + 154, 183, 139, 48, 31, 76, 146, 255, 255, 255, 228, 234, 221, 222, 142, 40, + 32, 49, 47, 42, 49, 47, 49, 44, 44, 43, 43, 43, 42, 42, 42, 42, + 42, 42, 41, 41, 40, 40, 37, 39, 46, 59, 70, 75, 83, 89, 92, 96, + 101, 101, 98, 93, 93, 92, 88, 91, 89, 92, 91, 82, 69, 63, 63, 61, + 59, 60, 63, 66, 68, 66, 65, 62, 59, 59, 62, 62, 60, 60, 64, 78, + 74, 78, 85, 90, 87, 86, 87, 93, 99, 102, 96, 91, 92, 92, 90, 76, + 72, 67, 57, 53, 51, 55, 58, 51, 55, 62, 67, 67, 69, 72, 72, 81, + 106, 126, 154, 181, 107, 11, 22, 84, 149, 255, 255, 255, 246, 232, 219, 217, + 141, 44, 34, 49, 47, 42, 49, 42, 42, 41, 42, 42, 42, 42, 43, 42, + 41, 42, 42, 42, 41, 39, 38, 38, 35, 43, 49, 61, 73, 82, 91, 95, + 94, 87, 96, 98, 92, 89, 97, 100, 99, 85, 85, 86, 87, 78, 65, 61, + 64, 67, 64, 59, 60, 64, 65, 61, 57, 55, 54, 56, 59, 62, 60, 61, + 63, 68, 66, 73, 84, 92, 89, 84, 82, 92, 97, 99, 93, 89, 90, 91, + 90, 76, 74, 65, 56, 49, 49, 58, 65, 52, 57, 66, 71, 70, 69, 68, + 69, 73, 92, 112, 152, 182, 100, 10, 43, 102, 188, 255, 255, 255, 255, 224, + 219, 207, 157, 50, 28, 38, 45, 46, 52, 43, 44, 37, 35, 37, 38, 40, + 39, 38, 36, 40, 40, 39, 40, 40, 40, 38, 34, 36, 54, 70, 76, 82, + 93, 94, 90, 88, 96, 101, 98, 94, 97, 97, 96, 92, 90, 83, 76, 67, + 64, 66, 70, 55, 56, 57, 59, 57, 54, 49, 46, 52, 64, 68, 60, 59, + 64, 65, 59, 70, 72, 76, 82, 88, 92, 94, 93, 85, 96, 104, 93, 86, + 103, 113, 103, 89, 66, 54, 52, 50, 55, 58, 51, 50, 57, 67, 70, 75, + 91, 91, 67, 67, 72, 124, 167, 160, 90, 19, 48, 111, 147, 255, 255, 255, + 255, 208, 219, 223, 180, 37, 28, 49, 54, 44, 41, 36, 41, 36, 33, 34, + 36, 38, 39, 40, 40, 38, 39, 38, 39, 39, 36, 35, 29, 34, 50, 69, + 74, 83, 94, 96, 93, 89, 94, 96, 91, 90, 90, 90, 88, 86, 83, 76, + 74, 70, 68, 63, 61, 51, 55, 57, 55, 46, 39, 37, 35, 70, 90, 102, + 84, 61, 53, 58, 62, 67, 70, 74, 80, 86, 90, 91, 90, 89, 90, 96, + 96, 106, 123, 123, 97, 72, 48, 47, 52, 37, 35, 40, 34, 44, 37, 44, + 58, 75, 95, 105, 99, 63, 75, 127, 161, 146, 49, 9, 61, 131, 153, 255, + 255, 255, 255, 217, 221, 214, 158, 41, 30, 50, 54, 44, 42, 35, 39, 35, + 35, 35, 35, 37, 39, 43, 44, 39, 40, 42, 41, 40, 36, 34, 29, 39, + 53, 73, 77, 84, 93, 95, 93, 93, 94, 93, 89, 89, 88, 86, 82, 81, + 77, 71, 71, 70, 67, 58, 50, 43, 50, 56, 56, 48, 44, 47, 49, 73, + 94, 106, 87, 61, 50, 54, 59, 65, 67, 75, 81, 87, 88, 89, 86, 89, + 86, 92, 98, 113, 134, 138, 118, 78, 46, 52, 65, 40, 30, 38, 31, 36, + 43, 66, 79, 71, 70, 89, 106, 85, 97, 139, 173, 160, 32, 26, 97, 138, + 157, 255, 255, 255, 255, 247, 229, 203, 128, 56, 31, 39, 45, 47, 52, 40, + 39, 35, 35, 38, 38, 41, 41, 44, 45, 42, 44, 46, 47, 44, 41, 38, + 30, 49, 62, 80, 83, 87, 91, 92, 92, 94, 91, 88, 86, 88, 87, 83, + 80, 81, 79, 75, 74, 71, 65, 56, 48, 53, 59, 64, 64, 65, 65, 67, + 69, 69, 75, 78, 71, 65, 63, 64, 60, 66, 69, 77, 82, 87, 87, 87, + 85, 81, 84, 95, 97, 100, 126, 154, 164, 101, 52, 48, 62, 42, 34, 40, + 29, 40, 62, 95, 104, 82, 70, 75, 81, 91, 100, 135, 177, 176, 28, 38, + 118, 171, 200, 255, 255, 255, 255, 255, 235, 215, 144, 57, 32, 40, 47, 48, + 54, 42, 38, 34, 36, 43, 44, 45, 43, 44, 46, 46, 47, 48, 47, 46, + 43, 40, 34, 54, 66, 85, 89, 91, 92, 94, 96, 91, 86, 84, 84, 87, + 86, 83, 81, 85, 86, 84, 82, 76, 73, 69, 67, 79, 76, 75, 75, 78, + 77, 74, 69, 72, 68, 64, 61, 64, 68, 70, 67, 69, 70, 77, 81, 85, + 85, 85, 84, 82, 85, 96, 96, 93, 118, 160, 184, 139, 76, 49, 60, 57, + 57, 57, 47, 57, 65, 82, 94, 101, 114, 106, 81, 89, 105, 144, 185, 186, + 35, 44, 133, 172, 255, 255, 255, 255, 255, 255, 233, 221, 164, 49, 33, 51, + 55, 46, 45, 37, 40, 38, 41, 49, 50, 47, 43, 43, 44, 45, 45, 46, + 46, 44, 43, 40, 37, 55, 65, 85, 92, 94, 94, 97, 103, 97, 92, 92, + 93, 95, 92, 91, 93, 89, 91, 91, 90, 86, 83, 86, 88, 93, 86, 81, + 81, 86, 86, 82, 76, 76, 76, 72, 65, 60, 60, 67, 72, 73, 73, 77, + 79, 83, 84, 84, 82, 91, 85, 91, 94, 97, 117, 153, 173, 164, 105, 59, + 57, 69, 74, 69, 64, 66, 69, 73, 80, 98, 131, 144, 127, 97, 121, 160, + 194, 191, 58, 49, 146, 157, 255, 255, 255, 255, 255, 255, 228, 224, 180, 64, + 45, 54, 53, 43, 45, 39, 43, 42, 45, 51, 51, 47, 43, 43, 45, 48, + 48, 45, 44, 43, 43, 45, 41, 55, 64, 85, 93, 94, 93, 97, 104, 103, + 98, 99, 100, 99, 94, 96, 101, 92, 91, 90, 92, 91, 89, 89, 87, 87, + 83, 83, 83, 86, 88, 87, 84, 77, 78, 78, 70, 63, 63, 71, 79, 81, + 80, 82, 82, 84, 85, 86, 86, 93, 84, 88, 92, 94, 110, 145, 166, 169, + 131, 76, 56, 68, 66, 58, 65, 74, 76, 83, 90, 98, 124, 151, 154, 119, + 131, 155, 183, 192, 96, 55, 143, 177, 255, 255, 255, 255, 255, 255, 222, 234, + 210, 93, 55, 46, 40, 42, 52, 48, 48, 46, 50, 51, 49, 44, 40, 43, + 47, 49, 50, 46, 45, 44, 46, 49, 45, 58, 66, 86, 93, 93, 89, 92, + 100, 99, 96, 97, 98, 94, 88, 91, 98, 95, 91, 87, 88, 90, 87, 81, + 73, 77, 79, 78, 77, 75, 77, 78, 79, 78, 73, 73, 74, 78, 82, 86, + 88, 89, 87, 87, 87, 89, 90, 91, 92, 90, 83, 88, 90, 82, 98, 141, + 174, 194, 174, 118, 82, 87, 78, 66, 81, 85, 71, 79, 100, 115, 132, 144, + 145, 163, 153, 157, 188, 219, 155, 85, 154, 170, 255, 255, 255, 255, 255, 255, + 226, 218, 209, 113, 41, 42, 41, 50, 42, 51, 41, 54, 57, 62, 57, 48, + 39, 40, 48, 51, 45, 44, 47, 46, 45, 49, 52, 62, 59, 77, 90, 95, + 101, 103, 98, 91, 97, 95, 92, 99, 95, 90, 95, 84, 81, 86, 86, 80, + 84, 85, 73, 73, 78, 81, 80, 76, 76, 76, 77, 78, 77, 80, 80, 82, + 83, 85, 83, 95, 93, 90, 87, 86, 88, 91, 93, 89, 86, 84, 92, 97, + 97, 123, 165, 195, 181, 142, 106, 90, 80, 69, 70, 85, 82, 91, 108, 119, + 124, 132, 145, 154, 143, 168, 176, 226, 192, 91, 156, 165, 255, 255, 255, 255, + 255, 255, 226, 220, 213, 116, 36, 34, 40, 51, 42, 46, 36, 38, 41, 47, + 48, 44, 40, 44, 50, 49, 45, 44, 46, 46, 44, 47, 48, 55, 63, 80, + 86, 91, 94, 100, 110, 99, 106, 105, 103, 109, 103, 95, 98, 95, 90, 92, + 90, 82, 84, 84, 72, 73, 73, 73, 70, 69, 71, 79, 84, 82, 82, 83, + 85, 86, 88, 87, 87, 89, 88, 87, 87, 88, 90, 92, 94, 96, 94, 93, + 98, 103, 100, 125, 170, 197, 186, 149, 110, 97, 93, 96, 105, 94, 85, 88, + 100, 113, 123, 137, 154, 151, 143, 155, 165, 222, 211, 120, 136, 161, 255, 255, + 255, 255, 255, 255, 255, 222, 217, 133, 42, 27, 39, 50, 44, 48, 45, 56, + 57, 59, 56, 51, 46, 48, 50, 45, 44, 45, 46, 44, 42, 43, 43, 53, + 70, 77, 79, 94, 94, 94, 111, 96, 103, 105, 104, 111, 105, 97, 99, 104, + 98, 99, 95, 86, 88, 89, 77, 75, 75, 75, 74, 73, 74, 79, 82, 82, + 82, 83, 84, 85, 85, 86, 87, 86, 87, 88, 90, 91, 91, 92, 91, 90, + 92, 94, 98, 102, 99, 124, 164, 189, 194, 172, 137, 121, 111, 105, 104, 102, + 96, 97, 105, 116, 123, 137, 152, 150, 155, 161, 173, 223, 231, 169, 142, 158, + 255, 255, 255, 255, 255, 255, 255, 220, 216, 155, 54, 27, 39, 44, 47, 58, + 67, 91, 90, 86, 75, 66, 59, 54, 50, 40, 44, 46, 46, 45, 42, 43, + 41, 55, 74, 74, 78, 105, 101, 86, 100, 89, 97, 98, 99, 108, 105, 100, + 104, 106, 100, 101, 99, 93, 97, 100, 90, 84, 86, 89, 90, 87, 82, 77, + 73, 79, 79, 79, 80, 81, 81, 82, 82, 89, 90, 91, 92, 92, 90, 88, + 87, 82, 85, 90, 94, 97, 96, 119, 156, 185, 199, 184, 154, 134, 122, 105, + 97, 107, 104, 110, 120, 124, 126, 130, 136, 128, 151, 163, 181, 206, 219, 195, + 150, 158, 255, 255, 255, 255, 255, 255, 255, 221, 220, 159, 61, 28, 43, 37, + 45, 59, 77, 98, 97, 93, 79, 68, 61, 55, 48, 37, 44, 47, 45, 43, + 41, 44, 43, 43, 73, 85, 90, 111, 101, 84, 99, 95, 101, 100, 99, 108, + 108, 106, 112, 108, 103, 105, 104, 99, 105, 108, 98, 95, 95, 96, 96, 92, + 86, 79, 74, 80, 80, 80, 81, 81, 82, 84, 85, 92, 93, 94, 94, 94, + 93, 91, 88, 88, 91, 94, 97, 99, 97, 114, 145, 189, 204, 186, 150, 133, + 130, 119, 111, 105, 107, 113, 120, 124, 124, 124, 125, 127, 150, 169, 193, 202, + 214, 211, 164, 156, 255, 255, 255, 255, 255, 255, 255, 245, 226, 153, 62, 28, + 42, 32, 48, 59, 76, 100, 102, 97, 80, 66, 56, 51, 44, 38, 46, 49, + 44, 41, 40, 44, 43, 32, 71, 101, 106, 107, 92, 89, 111, 101, 105, 102, + 99, 107, 106, 104, 111, 112, 107, 109, 108, 102, 106, 108, 97, 102, 98, 93, + 89, 88, 87, 86, 85, 84, 84, 85, 86, 87, 88, 91, 91, 90, 89, 89, + 90, 91, 93, 94, 96, 95, 96, 96, 95, 99, 93, 105, 128, 184, 209, 198, + 160, 138, 131, 116, 104, 103, 104, 104, 108, 113, 118, 122, 125, 143, 157, 176, + 198, 210, 228, 222, 173, 153, 255, 255, 255, 255, 255, 255, 255, 255, 228, 162, + 71, 24, 35, 25, 58, 71, 83, 103, 109, 105, 84, 66, 56, 51, 44, 44, + 51, 52, 43, 37, 36, 41, 42, 48, 74, 105, 110, 101, 92, 96, 109, 98, + 104, 101, 99, 107, 105, 101, 107, 114, 110, 113, 112, 105, 108, 106, 95, 105, + 99, 92, 89, 89, 90, 90, 89, 83, 84, 87, 88, 90, 91, 92, 93, 92, + 90, 88, 86, 87, 91, 95, 96, 94, 94, 91, 91, 98, 93, 99, 116, 161, + 202, 206, 166, 134, 121, 105, 94, 102, 102, 101, 102, 105, 113, 120, 124, 134, + 152, 177, 180, 192, 223, 209, 162, 154, 255, 255, 255, 255, 255, 255, 255, 255, + 226, 182, 84, 24, 28, 20, 67, 85, 99, 98, 107, 106, 86, 69, 62, 58, + 54, 49, 55, 55, 42, 34, 34, 39, 38, 75, 78, 95, 104, 100, 99, 102, + 96, 97, 104, 102, 105, 112, 109, 105, 110, 111, 108, 112, 112, 106, 109, 107, + 95, 103, 100, 98, 97, 97, 94, 89, 85, 78, 81, 82, 84, 86, 88, 89, + 90, 94, 90, 87, 80, 80, 84, 91, 92, 93, 93, 89, 92, 101, 101, 102, + 118, 144, 189, 193, 148, 112, 108, 109, 111, 103, 104, 105, 105, 108, 114, 117, + 119, 130, 163, 197, 179, 183, 223, 204, 167, 156, 255, 255, 255, 255, 255, 255, + 255, 255, 243, 219, 163, 56, 24, 28, 33, 83, 104, 102, 94, 83, 72, 76, + 93, 87, 58, 69, 57, 54, 52, 47, 36, 47, 63, 83, 86, 91, 97, 101, + 102, 102, 100, 100, 103, 104, 103, 104, 108, 109, 106, 110, 111, 108, 103, 104, + 109, 113, 112, 110, 106, 103, 102, 102, 98, 91, 84, 90, 82, 75, 75, 80, + 84, 82, 80, 80, 76, 76, 74, 77, 80, 82, 82, 92, 103, 100, 95, 106, + 111, 104, 100, 125, 160, 181, 148, 96, 84, 97, 99, 83, 99, 84, 95, 101, + 93, 115, 123, 128, 143, 168, 185, 195, 204, 192, 168, 146, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 225, 192, 105, 48, 29, 23, 56, 94, 104, 95, 90, + 83, 84, 94, 84, 55, 82, 62, 49, 42, 40, 36, 55, 74, 99, 94, 94, + 95, 96, 96, 94, 93, 99, 103, 104, 102, 104, 109, 110, 108, 103, 107, 109, + 106, 105, 107, 109, 107, 109, 105, 104, 103, 103, 98, 92, 85, 84, 82, 80, + 78, 78, 77, 75, 75, 75, 76, 77, 80, 82, 87, 90, 94, 90, 98, 94, + 93, 105, 108, 100, 99, 115, 138, 176, 180, 129, 81, 75, 85, 74, 92, 87, + 100, 105, 94, 107, 111, 127, 144, 172, 187, 191, 198, 189, 168, 155, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 223, 212, 150, 62, 24, 11, 34, 110, 116, + 96, 80, 72, 70, 77, 79, 65, 80, 59, 43, 35, 35, 38, 60, 81, 102, + 96, 92, 92, 95, 98, 98, 97, 98, 101, 102, 101, 103, 109, 111, 110, 102, + 110, 115, 113, 111, 110, 111, 108, 111, 107, 104, 102, 103, 98, 90, 84, 77, + 80, 80, 79, 76, 73, 71, 72, 79, 83, 85, 87, 86, 87, 90, 93, 97, + 99, 94, 97, 109, 106, 99, 103, 112, 116, 148, 180, 168, 128, 94, 72, 72, + 90, 91, 98, 104, 96, 104, 109, 115, 136, 166, 182, 191, 202, 200, 185, 150, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 216, 187, 100, 53, 23, 16, + 113, 116, 94, 80, 72, 66, 72, 75, 68, 64, 54, 46, 44, 42, 46, 67, + 88, 102, 96, 92, 93, 98, 101, 101, 100, 96, 99, 100, 99, 102, 108, 111, + 110, 102, 111, 116, 114, 110, 109, 110, 108, 111, 108, 104, 102, 101, 95, 89, + 84, 70, 72, 75, 74, 75, 74, 74, 72, 80, 86, 91, 90, 86, 83, 86, + 91, 98, 97, 94, 99, 106, 98, 95, 108, 108, 114, 128, 142, 156, 162, 128, + 72, 74, 88, 89, 90, 97, 98, 106, 114, 107, 126, 152, 168, 180, 198, 201, + 189, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 218, 223, 167, 123, + 57, 3, 81, 99, 91, 95, 100, 92, 88, 80, 66, 55, 54, 55, 54, 50, + 55, 79, 101, 105, 100, 98, 99, 100, 100, 97, 94, 96, 99, 99, 96, 99, + 105, 108, 107, 100, 106, 108, 104, 103, 104, 104, 103, 110, 108, 106, 102, 98, + 92, 86, 82, 76, 70, 69, 72, 77, 78, 76, 73, 74, 79, 85, 85, 81, + 79, 78, 83, 76, 83, 84, 89, 93, 87, 91, 110, 104, 117, 121, 109, 112, + 135, 122, 76, 74, 86, 91, 84, 91, 97, 99, 109, 113, 121, 138, 149, 163, + 183, 187, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 224, + 195, 165, 96, 19, 55, 91, 91, 101, 103, 96, 96, 92, 78, 58, 57, 56, + 54, 50, 59, 83, 105, 94, 94, 98, 100, 101, 101, 100, 99, 97, 99, 97, + 94, 95, 101, 103, 102, 103, 105, 103, 99, 101, 104, 104, 101, 108, 106, 104, + 99, 93, 87, 82, 79, 81, 76, 72, 73, 79, 81, 77, 70, 72, 74, 75, + 70, 64, 58, 55, 55, 55, 68, 72, 76, 83, 85, 93, 113, 109, 95, 87, + 89, 98, 111, 102, 72, 68, 81, 94, 84, 90, 97, 86, 96, 113, 119, 132, + 142, 158, 181, 187, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 212, 213, 195, 182, 130, 52, 43, 87, 91, 96, 91, 86, 98, 106, 96, 75, + 70, 64, 61, 59, 68, 83, 98, 83, 87, 94, 97, 97, 98, 102, 105, 98, + 99, 97, 92, 92, 96, 98, 97, 109, 108, 104, 102, 104, 108, 107, 101, 105, + 104, 100, 94, 89, 83, 78, 76, 78, 77, 78, 81, 84, 82, 78, 74, 73, + 70, 68, 64, 58, 53, 48, 45, 53, 65, 66, 67, 81, 92, 99, 110, 109, + 72, 58, 78, 100, 106, 92, 67, 69, 79, 94, 81, 87, 100, 88, 100, 107, + 116, 133, 144, 158, 183, 192, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 218, 218, 207, 200, 159, 72, 21, 72, 86, 101, 96, 91, 105, 110, + 94, 92, 86, 78, 77, 78, 83, 89, 91, 86, 92, 97, 96, 91, 89, 93, + 99, 99, 100, 96, 91, 89, 93, 95, 93, 106, 104, 100, 99, 104, 107, 103, + 94, 102, 101, 97, 90, 85, 78, 74, 73, 69, 75, 83, 87, 88, 85, 83, + 81, 69, 68, 68, 67, 69, 69, 68, 66, 56, 66, 62, 61, 79, 96, 98, + 99, 92, 71, 66, 76, 83, 88, 82, 64, 72, 79, 93, 75, 84, 106, 100, + 117, 101, 115, 135, 145, 152, 171, 180, 171, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 209, 218, 203, 175, 58, 21, 29, 74, 124, 100, 94, + 106, 98, 104, 94, 94, 90, 88, 90, 92, 94, 92, 90, 89, 89, 92, 95, + 95, 91, 87, 90, 94, 95, 90, 87, 90, 90, 88, 90, 92, 97, 98, 99, + 99, 103, 104, 91, 92, 91, 74, 60, 71, 81, 71, 83, 84, 84, 81, 81, + 80, 80, 79, 81, 76, 71, 68, 67, 69, 72, 75, 74, 71, 70, 73, 79, + 82, 81, 79, 81, 83, 86, 87, 85, 81, 77, 72, 74, 70, 75, 83, 87, + 89, 93, 102, 107, 103, 124, 129, 140, 161, 155, 148, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 216, 216, 209, 190, 89, 6, 31, 62, 101, + 134, 96, 110, 85, 116, 94, 92, 91, 90, 93, 96, 98, 96, 98, 93, 88, + 86, 88, 91, 92, 92, 89, 90, 91, 90, 88, 87, 88, 90, 82, 83, 88, + 91, 94, 95, 96, 96, 86, 82, 80, 69, 60, 70, 81, 76, 87, 87, 86, + 85, 85, 82, 82, 81, 80, 77, 73, 68, 67, 69, 71, 73, 74, 75, 77, + 78, 78, 80, 82, 83, 82, 84, 87, 89, 89, 86, 82, 78, 76, 74, 77, + 83, 84, 82, 85, 90, 99, 96, 119, 128, 140, 165, 161, 188, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 213, 216, 203, 135, 0, 18, + 41, 88, 144, 101, 106, 86, 107, 94, 91, 91, 92, 94, 95, 95, 94, 96, + 92, 88, 86, 87, 90, 93, 93, 95, 90, 90, 94, 91, 84, 85, 93, 87, + 88, 89, 92, 97, 96, 92, 87, 80, 70, 67, 66, 63, 71, 81, 79, 86, + 88, 87, 84, 83, 82, 82, 79, 78, 76, 74, 71, 70, 71, 72, 72, 73, + 77, 80, 79, 76, 75, 79, 84, 83, 85, 89, 92, 93, 91, 88, 85, 79, + 75, 76, 81, 82, 78, 81, 86, 92, 93, 118, 127, 138, 162, 160, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 221, 207, 181, + 21, 6, 24, 94, 128, 112, 100, 102, 90, 98, 92, 91, 92, 93, 91, 90, + 89, 88, 87, 89, 92, 93, 93, 91, 90, 96, 87, 85, 92, 88, 77, 77, + 88, 97, 94, 92, 93, 97, 93, 84, 77, 73, 60, 60, 67, 68, 72, 79, + 80, 83, 83, 82, 81, 80, 77, 77, 77, 78, 76, 75, 74, 73, 72, 71, + 71, 72, 74, 75, 73, 71, 71, 74, 77, 82, 85, 89, 92, 92, 91, 88, + 85, 78, 74, 74, 76, 78, 77, 82, 89, 93, 94, 119, 126, 134, 157, 154, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 219, + 201, 207, 60, 13, 24, 82, 131, 123, 105, 108, 92, 98, 91, 88, 91, 93, + 89, 89, 90, 90, 89, 92, 92, 92, 90, 88, 87, 88, 78, 77, 83, 81, + 71, 73, 84, 92, 89, 88, 88, 89, 84, 76, 68, 69, 59, 64, 74, 73, + 75, 78, 75, 79, 81, 81, 79, 78, 78, 78, 76, 79, 79, 79, 76, 76, + 75, 74, 73, 75, 72, 69, 69, 71, 73, 73, 72, 82, 84, 88, 90, 90, + 88, 85, 81, 79, 73, 69, 68, 70, 72, 79, 89, 91, 92, 115, 122, 132, + 154, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 240, 216, 198, 209, 90, 18, 22, 45, 140, 120, 107, 91, 100, 95, 86, 86, + 92, 94, 94, 97, 100, 100, 96, 92, 87, 84, 83, 86, 89, 83, 78, 77, + 82, 81, 77, 81, 92, 84, 82, 83, 83, 83, 79, 74, 69, 68, 64, 71, + 77, 74, 77, 79, 73, 80, 82, 82, 83, 81, 81, 82, 82, 83, 82, 82, + 81, 78, 77, 77, 76, 79, 74, 69, 70, 74, 77, 77, 74, 81, 84, 87, + 90, 90, 88, 84, 81, 84, 74, 69, 64, 63, 61, 70, 78, 84, 86, 110, + 121, 134, 156, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 212, 201, 197, 96, 17, 24, 28, 117, 115, 106, 90, 100, 93, + 82, 81, 89, 94, 93, 98, 106, 98, 95, 92, 87, 83, 83, 86, 90, 86, + 85, 84, 82, 80, 81, 85, 91, 83, 84, 84, 82, 80, 76, 74, 72, 67, + 69, 77, 75, 71, 79, 85, 75, 80, 82, 83, 84, 86, 87, 86, 86, 89, + 88, 84, 83, 82, 82, 80, 80, 79, 77, 74, 73, 75, 77, 80, 81, 81, + 84, 88, 92, 93, 92, 89, 86, 87, 78, 73, 68, 64, 59, 65, 70, 82, + 81, 107, 122, 139, 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 241, 209, 188, 90, 13, 30, 40, 88, 125, 112, 112, + 99, 99, 86, 80, 86, 89, 88, 93, 101, 85, 89, 94, 94, 92, 90, 91, + 92, 88, 90, 87, 79, 75, 77, 80, 78, 83, 83, 84, 80, 74, 70, 67, + 69, 67, 73, 79, 71, 63, 77, 88, 78, 79, 79, 81, 82, 84, 86, 87, + 88, 91, 90, 86, 84, 83, 84, 84, 85, 76, 77, 78, 75, 73, 74, 80, + 84, 81, 84, 89, 93, 95, 95, 93, 92, 87, 84, 78, 76, 71, 66, 66, + 70, 85, 82, 110, 125, 145, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 209, 212, 78, 20, 27, 33, 41, 65, + 100, 115, 110, 93, 91, 76, 78, 103, 78, 98, 94, 90, 89, 89, 89, 90, + 91, 91, 92, 85, 91, 89, 78, 77, 86, 90, 85, 85, 90, 92, 82, 71, + 66, 63, 62, 70, 69, 71, 72, 73, 73, 72, 70, 76, 77, 77, 79, 83, + 85, 85, 84, 88, 93, 89, 87, 94, 90, 82, 84, 85, 81, 77, 74, 72, + 71, 71, 69, 88, 92, 96, 93, 91, 93, 93, 93, 89, 84, 76, 71, 69, + 69, 63, 61, 76, 87, 106, 128, 147, 152, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 218, 115, 53, 39, 31, + 36, 47, 55, 58, 60, 55, 57, 48, 86, 104, 85, 85, 90, 93, 95, 94, + 92, 89, 86, 85, 85, 82, 88, 88, 82, 84, 95, 101, 96, 72, 78, 88, + 89, 82, 69, 58, 53, 57, 55, 55, 55, 58, 63, 67, 70, 70, 70, 70, + 72, 77, 79, 78, 77, 83, 87, 82, 81, 92, 91, 86, 89, 76, 74, 74, + 76, 78, 80, 81, 82, 85, 89, 89, 90, 91, 93, 88, 83, 89, 90, 84, + 80, 77, 74, 71, 67, 78, 91, 113, 135, 152, 159, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 216, 155, 95, + 56, 30, 33, 37, 28, 24, 31, 29, 33, 30, 93, 105, 94, 78, 93, 94, + 98, 99, 95, 89, 84, 82, 82, 90, 94, 91, 84, 84, 91, 93, 87, 70, + 72, 84, 94, 88, 67, 52, 49, 55, 53, 53, 52, 52, 53, 55, 57, 54, + 54, 55, 58, 61, 63, 63, 62, 71, 74, 68, 65, 74, 72, 68, 71, 74, + 74, 78, 81, 85, 88, 88, 89, 79, 83, 84, 88, 93, 96, 90, 85, 83, + 85, 85, 82, 76, 71, 69, 67, 76, 90, 112, 134, 149, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, + 184, 131, 78, 34, 28, 35, 33, 30, 32, 31, 34, 40, 85, 99, 92, 78, + 92, 91, 97, 100, 98, 92, 88, 87, 88, 95, 96, 91, 84, 81, 83, 80, + 73, 82, 76, 81, 90, 83, 61, 50, 54, 56, 60, 66, 67, 65, 61, 57, + 54, 48, 48, 50, 53, 56, 57, 57, 55, 57, 61, 57, 54, 63, 60, 55, + 56, 59, 59, 61, 63, 64, 63, 60, 60, 51, 55, 61, 65, 68, 72, 70, + 66, 73, 80, 82, 80, 74, 69, 67, 69, 86, 95, 117, 137, 148, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 198, 164, 109, 46, 18, 27, 40, 36, 25, 27, 34, 59, 68, 93, + 84, 79, 86, 88, 93, 97, 96, 93, 89, 88, 89, 87, 87, 85, 82, 83, + 85, 83, 77, 87, 78, 79, 86, 82, 63, 56, 61, 60, 65, 75, 79, 79, + 77, 76, 76, 68, 66, 66, 66, 67, 66, 63, 60, 56, 62, 63, 64, 72, + 69, 61, 62, 57, 57, 59, 60, 58, 57, 55, 54, 56, 64, 70, 64, 59, + 58, 58, 59, 66, 72, 77, 76, 75, 75, 78, 82, 95, 105, 125, 143, 152, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 198, 184, 137, 70, 24, 24, 43, 39, 22, 20, 29, 66, + 62, 95, 89, 83, 84, 89, 91, 91, 90, 89, 86, 84, 82, 87, 85, 84, + 85, 88, 89, 86, 80, 79, 75, 79, 86, 85, 72, 64, 64, 75, 77, 81, + 80, 79, 81, 86, 91, 90, 87, 83, 80, 79, 77, 73, 70, 75, 81, 80, + 80, 85, 78, 67, 65, 70, 71, 73, 76, 76, 78, 79, 80, 90, 100, 102, + 92, 78, 70, 67, 67, 60, 64, 67, 68, 73, 78, 86, 91, 90, 98, 117, + 141, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 235, 198, 163, 104, 54, 38, 44, 41, 27, 29, + 29, 55, 67, 95, 98, 79, 89, 92, 90, 86, 86, 88, 87, 83, 79, 92, + 88, 86, 88, 91, 89, 84, 78, 77, 76, 79, 81, 82, 77, 70, 65, 80, + 82, 84, 81, 78, 79, 85, 92, 96, 93, 89, 86, 85, 85, 85, 84, 86, + 90, 87, 84, 89, 82, 71, 70, 72, 70, 72, 74, 77, 80, 80, 82, 94, + 103, 107, 101, 88, 78, 69, 65, 66, 66, 63, 64, 70, 78, 87, 92, 89, + 97, 118, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 181, 131, 80, 49, 37, 31, + 24, 46, 30, 36, 66, 82, 100, 68, 91, 94, 89, 84, 85, 89, 91, 87, + 82, 87, 83, 83, 88, 92, 92, 87, 81, 83, 82, 79, 73, 73, 75, 72, + 66, 65, 72, 81, 83, 83, 84, 89, 94, 95, 92, 89, 88, 91, 95, 98, + 99, 80, 85, 83, 83, 94, 93, 87, 89, 84, 81, 80, 79, 80, 79, 81, + 82, 89, 97, 107, 109, 104, 97, 85, 77, 84, 77, 71, 69, 74, 83, 90, + 93, 107, 114, 138, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 190, 146, 132, 75, + 35, 24, 48, 34, 27, 38, 59, 78, 92, 92, 78, 88, 93, 97, 95, 90, + 85, 83, 83, 76, 81, 82, 78, 80, 86, 88, 83, 82, 76, 75, 79, 84, + 79, 70, 64, 79, 81, 83, 82, 83, 88, 93, 95, 93, 97, 91, 89, 98, + 95, 90, 93, 93, 87, 89, 96, 96, 87, 87, 93, 84, 81, 83, 87, 85, + 81, 79, 78, 89, 94, 102, 105, 99, 90, 88, 94, 89, 75, 78, 79, 72, + 86, 100, 92, 110, 108, 143, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 168, + 154, 99, 55, 31, 37, 33, 30, 43, 62, 79, 91, 94, 80, 83, 86, 88, + 89, 88, 87, 86, 86, 80, 83, 82, 79, 81, 87, 87, 81, 83, 79, 78, + 79, 81, 77, 70, 66, 79, 82, 87, 88, 89, 89, 89, 88, 87, 91, 85, + 82, 92, 90, 85, 90, 90, 85, 87, 94, 95, 88, 90, 97, 85, 81, 82, + 87, 86, 84, 82, 85, 93, 95, 99, 104, 100, 91, 85, 85, 85, 71, 72, + 76, 73, 88, 104, 99, 103, 112, 152, 203, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 185, 177, 137, 98, 64, 38, 31, 30, 46, 66, 79, 88, 93, 82, 82, + 81, 81, 82, 84, 86, 85, 84, 83, 83, 80, 79, 82, 87, 86, 79, 76, + 75, 76, 77, 79, 80, 79, 77, 78, 78, 82, 84, 85, 86, 86, 87, 88, + 89, 85, 82, 90, 89, 88, 93, 91, 85, 84, 85, 80, 72, 75, 79, 75, + 70, 70, 75, 77, 77, 78, 83, 92, 91, 94, 101, 101, 94, 85, 81, 88, + 74, 73, 76, 79, 90, 102, 97, 98, 125, 170, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 190, 189, 169, 141, 99, 41, 32, 30, 48, 68, 78, 86, 90, + 85, 88, 84, 79, 79, 81, 82, 80, 78, 82, 79, 76, 77, 81, 85, 84, + 78, 75, 76, 77, 74, 76, 79, 82, 82, 83, 77, 75, 76, 80, 85, 92, + 96, 90, 91, 86, 84, 92, 92, 91, 96, 91, 85, 82, 79, 73, 65, 67, + 70, 70, 64, 63, 66, 69, 68, 73, 79, 89, 86, 88, 98, 102, 97, 88, + 82, 81, 75, 74, 80, 87, 93, 100, 103, 98, 135, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 235, 194, 187, 164, 119, 37, 35, 31, 49, 71, 78, + 82, 87, 85, 90, 85, 80, 78, 79, 79, 77, 75, 77, 74, 73, 75, 79, + 81, 81, 78, 80, 82, 80, 73, 72, 76, 78, 76, 88, 80, 77, 80, 84, + 87, 93, 97, 87, 89, 83, 81, 91, 91, 87, 92, 88, 85, 83, 82, 80, + 77, 79, 83, 76, 69, 66, 69, 69, 71, 77, 81, 89, 86, 87, 95, 99, + 94, 86, 82, 67, 67, 72, 81, 92, 94, 100, 113, 105, 142, 211, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 193, 193, 175, 139, 54, 42, 35, 51, + 71, 78, 80, 87, 84, 85, 82, 79, 78, 78, 79, 79, 78, 75, 73, 73, + 76, 76, 75, 76, 78, 73, 75, 74, 69, 73, 81, 84, 81, 84, 76, 77, + 84, 87, 83, 80, 80, 88, 90, 85, 84, 93, 92, 87, 91, 91, 90, 88, + 85, 82, 79, 80, 80, 77, 71, 68, 71, 71, 74, 78, 85, 92, 91, 92, + 95, 92, 85, 81, 81, 71, 77, 79, 83, 90, 87, 92, 112, 128, 155, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 195, 178, 162, 83, 51, + 40, 53, 72, 80, 81, 87, 85, 79, 79, 80, 78, 77, 77, 78, 79, 77, + 76, 77, 78, 74, 69, 72, 77, 67, 70, 68, 65, 74, 86, 88, 81, 83, + 74, 74, 83, 86, 79, 74, 73, 86, 89, 85, 85, 92, 89, 84, 86, 91, + 91, 88, 82, 76, 72, 69, 67, 71, 64, 63, 67, 71, 74, 78, 86, 90, + 93, 96, 95, 86, 77, 76, 85, 84, 92, 87, 86, 89, 82, 90, 123, 157, + 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 174, 167, + 98, 58, 43, 52, 71, 80, 81, 86, 86, 77, 79, 81, 79, 75, 73, 74, + 77, 80, 79, 81, 81, 73, 65, 68, 78, 78, 78, 73, 66, 72, 81, 79, + 67, 92, 78, 75, 83, 87, 83, 83, 88, 79, 83, 82, 79, 88, 84, 76, + 77, 83, 85, 84, 80, 76, 73, 71, 68, 68, 63, 63, 68, 73, 77, 84, + 91, 88, 94, 98, 95, 83, 75, 80, 92, 82, 93, 89, 87, 93, 92, 109, + 149, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, + 193, 182, 135, 61, 50, 59, 74, 73, 72, 82, 87, 90, 82, 82, 83, 76, + 76, 76, 66, 77, 74, 75, 78, 77, 73, 73, 73, 79, 81, 77, 71, 74, + 84, 86, 78, 87, 87, 80, 81, 89, 84, 77, 82, 97, 93, 90, 81, 80, + 84, 90, 94, 86, 79, 74, 79, 85, 84, 76, 67, 73, 68, 67, 68, 74, + 85, 93, 98, 97, 98, 98, 95, 80, 69, 73, 82, 75, 91, 85, 95, 91, + 89, 144, 175, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 200, 194, 160, 86, 58, 54, 69, 74, 76, 82, 85, 84, 78, 79, + 79, 73, 75, 78, 72, 72, 70, 71, 76, 77, 75, 76, 77, 78, 75, 72, + 70, 74, 79, 80, 75, 78, 79, 75, 78, 89, 87, 82, 89, 86, 87, 86, + 81, 81, 85, 90, 92, 93, 86, 81, 81, 84, 84, 79, 72, 68, 65, 67, + 71, 80, 89, 98, 102, 102, 100, 101, 94, 83, 75, 81, 88, 80, 86, 95, + 90, 97, 125, 156, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 240, 214, 168, 126, 79, 56, 67, 75, 76, 82, 85, 79, + 76, 79, 78, 70, 72, 78, 74, 70, 68, 69, 74, 75, 74, 75, 77, 81, + 74, 72, 77, 83, 81, 79, 78, 76, 78, 75, 79, 91, 89, 86, 94, 81, + 85, 86, 81, 81, 85, 88, 88, 93, 90, 85, 83, 83, 84, 83, 81, 69, + 68, 73, 77, 83, 90, 95, 99, 105, 102, 100, 95, 86, 79, 86, 94, 93, + 86, 106, 95, 114, 161, 168, 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 242, 180, 144, 90, 58, 66, 72, 73, 79, + 88, 79, 77, 82, 82, 70, 69, 74, 70, 72, 69, 69, 72, 72, 70, 71, + 72, 81, 71, 71, 81, 86, 80, 76, 79, 81, 84, 80, 83, 92, 89, 86, + 95, 87, 91, 90, 81, 78, 82, 84, 81, 84, 86, 85, 81, 80, 82, 83, + 82, 74, 75, 77, 79, 82, 87, 92, 94, 106, 104, 102, 96, 89, 84, 87, + 93, 101, 92, 104, 113, 142, 176, 179, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 114, 76, 62, 72, 74, + 70, 75, 82, 76, 77, 84, 85, 74, 71, 73, 68, 71, 68, 67, 69, 69, + 67, 68, 70, 75, 65, 68, 78, 81, 75, 72, 74, 81, 85, 83, 84, 91, + 86, 85, 95, 93, 97, 93, 80, 76, 82, 85, 81, 79, 85, 87, 82, 79, + 80, 80, 77, 79, 80, 80, 80, 80, 85, 90, 94, 103, 103, 102, 98, 92, + 88, 87, 88, 97, 96, 95, 136, 167, 199, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 64, 51, 62, + 78, 77, 71, 73, 76, 74, 74, 81, 83, 75, 74, 76, 69, 68, 64, 63, + 66, 67, 66, 69, 71, 72, 66, 68, 74, 78, 75, 73, 72, 74, 78, 78, + 80, 86, 83, 83, 94, 89, 95, 91, 78, 75, 84, 88, 84, 81, 88, 90, + 83, 80, 82, 79, 72, 77, 78, 79, 79, 79, 83, 90, 96, 98, 101, 100, + 96, 93, 92, 89, 85, 91, 100, 100, 155, 180, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 45, 64, 77, 71, 69, 76, 78, 80, 72, 74, 75, 69, 71, 73, 66, 66, + 62, 61, 63, 63, 62, 64, 68, 71, 71, 71, 71, 76, 80, 76, 70, 71, + 76, 75, 78, 86, 82, 81, 93, 82, 92, 91, 79, 77, 87, 89, 82, 81, + 88, 87, 81, 81, 87, 86, 78, 76, 78, 82, 82, 80, 82, 88, 93, 94, + 96, 94, 90, 91, 94, 92, 88, 103, 114, 134, 196, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 68, 61, 67, 84, 86, 88, 76, 72, 70, 64, 66, 69, + 62, 71, 66, 63, 63, 61, 58, 59, 63, 65, 69, 68, 63, 69, 76, 74, + 64, 73, 79, 78, 79, 86, 81, 80, 91, 77, 89, 90, 78, 76, 85, 85, + 75, 75, 81, 79, 74, 78, 90, 92, 85, 77, 82, 87, 86, 84, 80, 83, + 85, 91, 92, 89, 85, 88, 96, 97, 95, 119, 131, 170, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 192, 63, 74, 85, 86, 74, 67, 69, 71, + 68, 65, 66, 64, 60, 66, 51, 60, 51, 60, 58, 57, 66, 68, 63, 62, + 68, 74, 73, 70, 70, 78, 86, 88, 81, 78, 81, 76, 81, 84, 83, 80, + 80, 84, 89, 83, 76, 73, 76, 77, 76, 81, 88, 77, 80, 86, 87, 84, + 79, 82, 87, 94, 81, 110, 84, 96, 76, 107, 95, 137, 166, 200, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 195, 66, 64, 69, 77, 72, 74, 55, 59, 49, 60, 59, 62, 68, 69, + 65, 64, 70, 76, 76, 69, 69, 75, 79, 78, 72, 72, 77, 78, 82, 86, + 86, 84, 83, 84, 86, 75, 75, 79, 87, 88, 81, 78, 79, 83, 84, 84, + 84, 84, 79, 78, 78, 73, 84, 86, 97, 105, 102, 105, 130, 144, 159, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 56, 42, 53, 54, 62, + 65, 65, 62, 62, 66, 69, 70, 70, 71, 76, 76, 70, 65, 68, 74, 78, + 80, 84, 86, 87, 85, 83, 82, 74, 76, 83, 91, 91, 84, 77, 75, 86, + 83, 80, 80, 82, 81, 78, 75, 74, 90, 83, 96, 110, 101, 96, 136, 181, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, + 58, 60, 61, 62, 62, 62, 62, 62, 61, 68, 71, 77, 75, 70, 66, 68, + 73, 72, 73, 74, 77, 81, 82, 80, 79, 79, 78, 79, 80, 80, 78, 77, + 77, 79, 79, 80, 76, 78, 81, 81, 77, 78, 80, 96, 94, 131, 127, 154, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 57, 60, 64, 65, 64, 64, 63, 62, 69, 76, 75, 73, + 70, 71, 72, 68, 67, 67, 69, 73, 77, 80, 81, 80, 79, 77, 75, 75, + 77, 79, 79, 73, 79, 82, 74, 72, 75, 78, 80, 82, 73, 101, 104, 122, + 163, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 190, 62, 61, 62, 63, 59, 65, 71, + 70, 70, 71, 69, 66, 65, 65, 65, 65, 68, 73, 78, 82, 74, 77, 78, + 77, 77, 79, 78, 75, 74, 82, 85, 73, 66, 69, 75, 76, 78, 79, 95, + 123, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 61, 65, 66, + 68, 67, 64, 67, 70, 68, 61, 62, 65, 67, 66, 66, 68, 73, 77, 69, + 74, 76, 73, 74, 78, 77, 73, 75, 81, 81, 68, 65, 71, 74, 71, 69, + 83, 89, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 69, 68, 64, 58, 63, 69, 68, 60, 57, 62, 66, 66, 62, 61, 64, + 68, 67, 70, 68, 62, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy8' of size 97x125x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy8[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 198, 208, 206, 199, 200, 195, + 188, 189, 205, 215, 221, 218, 213, 215, 220, 234, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 153, 141, 143, 154, 197, 205, 203, 197, 200, + 196, 191, 192, 195, 208, 220, 222, 219, 217, 219, 220, 219, 214, 211, 226, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 214, 155, 160, 155, 163, 177, 188, 199, 198, 189, + 189, 186, 184, 189, 210, 224, 226, 212, 214, 229, 224, 204, 225, 221, 218, 220, + 225, 227, 228, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 225, 166, 172, 183, 197, 222, 168, 164, 193, 205, 204, + 196, 196, 195, 195, 201, 201, 201, 216, 225, 209, 188, 198, 228, 210, 208, 207, + 210, 216, 219, 219, 215, 212, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 177, 215, 206, 192, 188, 185, 176, 173, 174, 160, 167, + 162, 156, 162, 163, 161, 163, 177, 189, 191, 183, 194, 216, 208, 182, 207, 204, + 204, 206, 210, 210, 208, 206, 199, 203, 206, 207, 210, 226, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 223, 192, 205, 210, 194, 188, 184, 183, 181, 183, 184, 182, 182, 183, 174, + 172, 161, 156, 167, 169, 160, 155, 157, 155, 179, 208, 196, 165, 171, 208, 216, + 214, 214, 215, 217, 218, 215, 213, 220, 214, 203, 191, 191, 200, 211, 215, 207, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, + 160, 169, 176, 176, 177, 186, 195, 202, 197, 191, 179, 170, 166, 167, 168, 170, + 178, 174, 158, 153, 164, 166, 152, 141, 137, 141, 148, 158, 178, 194, 184, 162, + 196, 198, 201, 207, 215, 220, 225, 227, 234, 228, 217, 203, 197, 198, 201, 199, + 205, 204, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 139, 134, 157, + 169, 169, 176, 182, 183, 186, 186, 178, 170, 177, 173, 166, 161, 162, 169, 177, + 182, 176, 174, 159, 156, 170, 172, 157, 146, 135, 119, 129, 156, 161, 144, 149, + 174, 169, 172, 177, 185, 194, 203, 212, 217, 217, 221, 224, 221, 217, 212, 203, + 193, 200, 200, 200, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 127, 147, 156, + 163, 169, 177, 179, 177, 175, 180, 184, 179, 167, 166, 167, 167, 166, 168, 173, + 178, 180, 160, 163, 155, 154, 168, 171, 160, 154, 161, 139, 128, 135, 143, 140, + 137, 136, 174, 174, 176, 177, 181, 185, 192, 196, 202, 209, 214, 217, 221, 223, + 222, 215, 198, 198, 200, 201, 204, 203, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 117, 134, 142, 154, + 169, 176, 175, 182, 176, 173, 180, 182, 174, 165, 161, 165, 167, 170, 172, 175, + 174, 169, 163, 163, 180, 184, 166, 152, 154, 159, 159, 167, 156, 145, 137, 131, + 130, 135, 144, 151, 174, 193, 190, 177, 173, 180, 186, 188, 191, 194, 196, 204, + 215, 220, 218, 198, 195, 194, 196, 199, 203, 203, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 78, 119, 137, 149, 154, + 164, 175, 178, 174, 179, 172, 171, 173, 172, 162, 155, 150, 142, 152, 158, 151, + 139, 134, 141, 150, 165, 170, 165, 155, 151, 156, 159, 155, 146, 177, 181, 151, + 128, 132, 135, 126, 124, 142, 157, 162, 163, 170, 178, 181, 198, 196, 190, 185, + 188, 198, 205, 204, 206, 201, 198, 198, 199, 201, 201, 199, 198, 216, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 179, 27, 38, 81, 127, 143, 156, 162, + 165, 172, 178, 177, 170, 174, 170, 167, 165, 160, 153, 149, 145, 147, 145, 146, + 148, 150, 150, 149, 148, 151, 164, 170, 161, 146, 142, 155, 171, 154, 173, 185, + 176, 150, 128, 124, 127, 131, 136, 144, 152, 161, 173, 179, 178, 183, 189, 192, + 192, 193, 194, 190, 183, 203, 199, 196, 199, 204, 205, 203, 197, 197, 195, 194, + 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 36, 44, 65, 107, 146, 156, 162, + 166, 169, 173, 177, 172, 165, 162, 161, 157, 152, 148, 147, 149, 149, 143, 139, + 142, 154, 162, 158, 146, 137, 144, 156, 169, 167, 152, 142, 153, 172, 172, 166, + 170, 181, 174, 149, 134, 134, 127, 126, 127, 133, 145, 155, 162, 162, 169, 179, + 191, 198, 200, 199, 194, 186, 192, 186, 185, 194, 208, 213, 208, 200, 197, 196, + 195, 194, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 179, 35, 43, 70, 107, 138, 154, 162, + 166, 166, 166, 167, 169, 163, 156, 149, 149, 146, 141, 141, 146, 154, 156, 144, + 147, 160, 165, 155, 141, 136, 140, 148, 145, 149, 158, 163, 158, 151, 147, 164, + 174, 176, 172, 177, 179, 160, 131, 118, 120, 124, 128, 134, 142, 154, 162, 175, + 180, 184, 183, 188, 196, 202, 203, 192, 181, 173, 179, 196, 211, 214, 209, 200, + 197, 197, 196, 193, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 25, 29, 34, 50, 91, 139, 159, 159, + 164, 165, 164, 162, 161, 157, 152, 149, 150, 151, 149, 145, 149, 156, 161, 159, + 152, 146, 150, 158, 158, 152, 149, 154, 141, 145, 147, 150, 151, 149, 146, 141, + 159, 165, 175, 181, 180, 171, 155, 144, 137, 141, 144, 145, 140, 138, 152, 162, + 167, 174, 181, 184, 185, 190, 193, 193, 202, 188, 174, 167, 177, 195, 212, 219, + 203, 200, 199, 197, 194, 190, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 174, 12, 18, 23, 41, 75, 118, 152, 163, + 159, 154, 155, 155, 154, 152, 147, 145, 146, 155, 157, 156, 154, 157, 160, 156, + 148, 133, 119, 118, 137, 155, 159, 154, 154, 144, 158, 162, 149, 136, 137, 149, + 155, 165, 148, 154, 174, 173, 151, 145, 158, 154, 156, 157, 150, 135, 123, 129, + 137, 151, 165, 181, 190, 192, 193, 190, 185, 199, 196, 188, 174, 167, 177, 201, + 219, 207, 202, 200, 198, 194, 191, 187, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 173, 10, 11, 17, 25, 58, 108, 149, 160, + 160, 160, 143, 144, 148, 148, 145, 142, 143, 147, 153, 156, 156, 154, 156, 153, + 143, 125, 115, 116, 129, 148, 155, 150, 151, 159, 165, 170, 159, 138, 134, 148, + 158, 156, 160, 153, 143, 140, 149, 159, 158, 150, 166, 165, 165, 156, 138, 123, + 124, 131, 153, 163, 178, 183, 187, 196, 201, 203, 183, 197, 203, 189, 170, 170, + 194, 216, 208, 203, 200, 197, 193, 190, 188, 186, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 15, 13, 22, 27, 46, 87, 134, 161, + 159, 148, 142, 135, 136, 139, 140, 143, 147, 152, 156, 161, 161, 162, 159, 147, + 130, 125, 122, 106, 114, 132, 147, 151, 149, 155, 165, 172, 155, 133, 142, 171, + 179, 165, 157, 131, 128, 138, 140, 139, 165, 182, 165, 165, 156, 155, 152, 138, + 115, 105, 108, 124, 136, 159, 180, 186, 185, 190, 200, 186, 197, 189, 185, 188, + 166, 172, 217, 204, 198, 198, 197, 190, 185, 184, 188, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 176, 17, 16, 29, 39, 67, 109, 142, + 156, 148, 137, 132, 131, 131, 131, 132, 136, 142, 148, 152, 162, 153, 143, 136, + 127, 118, 115, 113, 106, 112, 132, 153, 162, 160, 160, 164, 149, 146, 142, 157, + 178, 172, 148, 137, 122, 128, 144, 150, 150, 167, 180, 167, 174, 168, 163, 152, + 133, 111, 101, 99, 126, 131, 148, 167, 180, 182, 187, 193, 194, 201, 189, 186, + 188, 167, 175, 212, 209, 204, 211, 210, 203, 195, 190, 187, 211, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 173, 18, 16, 18, 32, 49, 87, 130, + 149, 146, 137, 130, 126, 126, 126, 128, 132, 137, 144, 151, 155, 152, 139, 126, + 121, 117, 112, 110, 107, 108, 115, 135, 156, 167, 165, 158, 154, 134, 146, 156, + 171, 180, 162, 136, 129, 157, 164, 177, 179, 174, 182, 189, 180, 170, 169, 163, + 149, 135, 122, 114, 104, 129, 127, 135, 152, 170, 179, 185, 189, 191, 194, 185, + 185, 191, 177, 184, 213, 220, 220, 224, 224, 216, 205, 194, 187, 186, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 20, 15, 17, 34, 61, 100, + 138, 147, 140, 132, 128, 124, 118, 122, 129, 138, 145, 151, 152, 152, 134, 127, + 123, 123, 120, 115, 111, 107, 115, 123, 140, 155, 160, 154, 145, 140, 138, 153, + 162, 167, 165, 148, 135, 141, 176, 178, 180, 178, 174, 174, 176, 170, 166, 167, + 157, 143, 140, 142, 129, 108, 130, 129, 133, 145, 161, 175, 185, 190, 188, 189, + 184, 187, 194, 186, 187, 204, 226, 227, 231, 230, 224, 214, 200, 188, 188, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 17, 21, 16, 21, 44, 89, + 117, 142, 143, 134, 129, 124, 118, 114, 120, 130, 141, 148, 148, 140, 134, 123, + 121, 120, 121, 117, 111, 111, 113, 126, 136, 150, 154, 150, 144, 140, 139, 142, + 154, 158, 155, 149, 138, 138, 154, 167, 168, 167, 169, 171, 165, 159, 160, 180, + 172, 156, 143, 148, 153, 132, 100, 128, 131, 138, 143, 151, 164, 179, 188, 195, + 194, 191, 194, 195, 187, 182, 185, 212, 219, 228, 233, 234, 227, 209, 190, 193, + 190, 255, 255, 255, 255, 255, 255, 255, 255, 13, 13, 18, 21, 19, 36, 71, + 124, 135, 141, 136, 126, 119, 114, 111, 126, 129, 135, 143, 146, 142, 130, 121, + 123, 119, 113, 109, 105, 106, 115, 124, 136, 145, 154, 151, 143, 141, 142, 144, + 136, 145, 146, 143, 141, 134, 137, 155, 164, 167, 168, 170, 173, 158, 146, 152, + 182, 171, 154, 147, 157, 162, 138, 104, 125, 135, 143, 143, 143, 155, 169, 179, + 189, 187, 191, 195, 194, 192, 188, 182, 187, 201, 216, 227, 234, 233, 215, 192, + 196, 193, 255, 255, 255, 255, 255, 255, 255, 255, 13, 14, 18, 24, 29, 61, + 108, 144, 142, 137, 130, 120, 112, 112, 119, 138, 134, 133, 134, 135, 133, 126, + 120, 122, 113, 106, 104, 106, 114, 129, 140, 141, 147, 149, 142, 137, 138, 139, + 138, 134, 139, 136, 136, 141, 139, 142, 156, 153, 160, 158, 154, 153, 135, 131, + 153, 174, 164, 154, 153, 164, 166, 145, 119, 128, 140, 148, 147, 144, 151, 163, + 170, 180, 179, 186, 190, 190, 195, 197, 191, 180, 190, 196, 203, 214, 222, 214, + 195, 200, 194, 255, 255, 255, 255, 255, 255, 255, 8, 11, 13, 18, 26, 39, + 82, 139, 149, 140, 130, 125, 117, 110, 118, 131, 136, 129, 121, 119, 120, 123, + 123, 121, 119, 109, 103, 107, 118, 131, 144, 152, 142, 143, 139, 131, 128, 130, + 129, 123, 136, 136, 129, 130, 140, 143, 148, 161, 149, 158, 151, 144, 141, 129, + 143, 184, 172, 164, 157, 160, 166, 162, 143, 123, 135, 146, 154, 151, 150, 154, + 162, 164, 185, 183, 188, 189, 185, 191, 197, 190, 189, 189, 182, 176, 189, 207, + 209, 199, 203, 197, 212, 255, 255, 255, 255, 255, 255, 15, 20, 21, 16, 31, + 85, 134, 147, 138, 136, 123, 106, 102, 115, 128, 132, 135, 129, 124, 123, 125, + 128, 126, 124, 120, 114, 126, 152, 155, 135, 131, 144, 134, 139, 141, 134, 122, + 116, 120, 126, 128, 113, 119, 129, 131, 147, 160, 150, 131, 130, 133, 134, 129, + 131, 148, 167, 166, 152, 163, 169, 171, 172, 148, 125, 150, 150, 163, 159, 139, + 144, 161, 156, 173, 182, 187, 185, 183, 186, 192, 195, 199, 200, 189, 171, 161, + 168, 177, 179, 186, 189, 191, 255, 255, 255, 255, 255, 255, 28, 21, 22, 35, + 68, 118, 147, 142, 132, 131, 121, 108, 108, 121, 133, 137, 134, 125, 115, 112, + 117, 126, 133, 137, 138, 145, 147, 143, 142, 142, 130, 113, 137, 133, 128, 120, + 116, 116, 122, 126, 121, 118, 126, 132, 133, 136, 141, 134, 129, 126, 128, 129, + 129, 134, 152, 169, 166, 160, 166, 177, 176, 168, 157, 135, 148, 151, 162, 163, + 152, 146, 156, 160, 169, 177, 182, 182, 182, 186, 192, 195, 197, 194, 194, 191, + 179, 165, 160, 161, 165, 178, 194, 255, 255, 255, 255, 255, 185, 52, 40, 47, + 71, 106, 138, 147, 134, 133, 127, 117, 111, 118, 129, 136, 137, 128, 127, 126, + 131, 135, 140, 141, 140, 156, 144, 137, 133, 123, 108, 105, 113, 133, 126, 119, + 114, 118, 119, 121, 118, 113, 120, 125, 124, 130, 124, 123, 125, 124, 119, 122, + 124, 130, 140, 156, 170, 164, 168, 164, 185, 177, 157, 166, 145, 146, 157, 164, + 165, 164, 151, 150, 162, 169, 175, 178, 179, 181, 184, 186, 186, 191, 186, 191, + 201, 190, 164, 150, 153, 152, 164, 183, 255, 255, 255, 255, 255, 59, 63, 60, + 80, 106, 123, 136, 145, 141, 141, 124, 109, 111, 124, 135, 136, 134, 134, 137, + 141, 146, 149, 149, 143, 137, 141, 124, 113, 111, 95, 80, 98, 133, 126, 122, + 119, 118, 119, 118, 112, 107, 107, 119, 112, 109, 123, 122, 117, 128, 116, 115, + 118, 125, 135, 146, 158, 167, 163, 173, 158, 180, 167, 141, 168, 152, 147, 170, + 171, 162, 166, 159, 150, 157, 174, 178, 178, 178, 180, 182, 180, 177, 182, 181, + 184, 192, 185, 170, 163, 167, 161, 158, 165, 183, 255, 255, 255, 255, 63, 65, + 67, 92, 119, 129, 139, 151, 153, 144, 119, 101, 110, 128, 138, 136, 135, 150, + 144, 135, 131, 131, 133, 132, 131, 107, 114, 104, 85, 82, 102, 122, 130, 121, + 120, 118, 115, 110, 106, 103, 102, 109, 116, 107, 107, 125, 127, 120, 127, 111, + 115, 121, 129, 140, 150, 156, 156, 159, 172, 152, 164, 149, 131, 167, 152, 151, + 181, 178, 158, 160, 163, 155, 151, 171, 176, 177, 176, 179, 181, 178, 175, 172, + 178, 180, 179, 180, 183, 183, 180, 168, 163, 170, 186, 255, 255, 255, 255, 67, + 77, 76, 94, 118, 133, 144, 149, 141, 136, 114, 101, 114, 130, 134, 133, 138, + 143, 137, 128, 123, 120, 118, 114, 111, 99, 93, 88, 95, 111, 126, 126, 120, + 119, 118, 112, 103, 96, 95, 102, 109, 114, 116, 113, 117, 129, 129, 120, 118, + 112, 118, 128, 135, 142, 148, 150, 148, 155, 164, 149, 148, 136, 134, 166, 153, + 158, 178, 180, 160, 156, 162, 158, 150, 158, 164, 170, 172, 176, 180, 180, 177, + 165, 175, 180, 178, 181, 188, 187, 180, 165, 168, 181, 199, 255, 255, 255, 255, + 70, 79, 83, 102, 122, 134, 144, 144, 130, 124, 113, 111, 125, 127, 122, 123, + 137, 121, 120, 116, 114, 111, 106, 99, 94, 101, 86, 92, 121, 138, 130, 121, + 124, 115, 114, 108, 101, 97, 101, 111, 119, 119, 114, 117, 121, 119, 119, 119, + 111, 117, 126, 135, 138, 140, 143, 144, 141, 149, 154, 151, 137, 131, 151, 169, + 154, 165, 165, 173, 171, 161, 158, 159, 152, 146, 155, 164, 166, 168, 171, 174, + 173, 169, 170, 172, 177, 182, 182, 181, 179, 173, 164, 170, 190, 205, 255, 255, + 255, 61, 60, 80, 111, 128, 133, 142, 147, 135, 116, 112, 121, 132, 124, 108, + 113, 133, 115, 108, 95, 87, 87, 91, 95, 97, 91, 113, 128, 129, 131, 140, + 138, 128, 109, 109, 108, 107, 108, 113, 119, 122, 122, 109, 113, 113, 99, 104, + 117, 111, 122, 133, 140, 138, 137, 140, 142, 140, 146, 149, 157, 133, 132, 166, + 173, 157, 170, 154, 167, 183, 167, 153, 158, 158, 143, 153, 163, 163, 161, 164, + 169, 169, 178, 165, 163, 174, 177, 170, 171, 181, 184, 154, 142, 169, 206, 255, + 255, 255, 42, 59, 51, 99, 131, 129, 139, 137, 124, 108, 108, 113, 117, 116, + 114, 115, 120, 115, 99, 97, 107, 109, 110, 106, 93, 93, 115, 134, 140, 143, + 143, 127, 106, 104, 113, 116, 109, 104, 110, 118, 119, 121, 111, 104, 104, 109, + 111, 110, 108, 139, 141, 140, 138, 136, 135, 137, 139, 149, 149, 145, 138, 144, + 163, 176, 177, 168, 168, 161, 160, 171, 167, 156, 155, 161, 160, 159, 160, 162, + 164, 164, 163, 178, 174, 169, 171, 175, 174, 173, 172, 168, 172, 153, 155, 195, + 255, 255, 255, 23, 40, 44, 98, 133, 132, 139, 135, 121, 106, 112, 119, 114, + 109, 107, 112, 116, 109, 111, 123, 124, 107, 100, 108, 113, 119, 128, 132, 128, + 126, 127, 123, 115, 111, 116, 116, 109, 106, 110, 115, 115, 123, 104, 100, 113, + 118, 109, 116, 134, 131, 132, 134, 135, 136, 139, 143, 146, 142, 148, 147, 143, + 148, 163, 173, 173, 164, 159, 153, 155, 170, 170, 158, 155, 162, 160, 159, 160, + 162, 163, 163, 162, 161, 168, 169, 164, 161, 166, 168, 166, 160, 166, 151, 151, + 185, 225, 255, 175, 17, 26, 41, 102, 136, 134, 136, 128, 118, 110, 120, 123, + 110, 100, 101, 110, 115, 123, 126, 133, 126, 102, 96, 114, 128, 129, 135, 139, + 135, 125, 114, 111, 110, 117, 118, 115, 110, 110, 115, 118, 117, 121, 111, 111, + 117, 122, 118, 131, 148, 132, 135, 136, 136, 136, 137, 140, 142, 138, 148, 152, + 150, 153, 163, 170, 168, 161, 156, 147, 150, 167, 168, 156, 153, 157, 156, 156, + 158, 162, 165, 166, 167, 161, 175, 182, 175, 168, 172, 178, 178, 159, 161, 148, + 145, 172, 201, 255, 18, 21, 23, 49, 110, 138, 133, 132, 122, 117, 117, 121, + 116, 99, 95, 105, 119, 122, 147, 127, 113, 107, 98, 104, 120, 127, 128, 131, + 136, 135, 122, 107, 103, 108, 119, 117, 114, 114, 118, 123, 124, 123, 118, 130, + 126, 114, 116, 133, 140, 132, 134, 136, 137, 137, 136, 136, 138, 139, 137, 149, + 156, 154, 155, 164, 169, 167, 163, 160, 151, 151, 162, 162, 153, 153, 150, 147, + 151, 153, 161, 167, 170, 172, 158, 164, 171, 172, 166, 161, 165, 170, 165, 162, + 148, 142, 164, 195, 255, 18, 20, 26, 58, 115, 135, 131, 130, 121, 123, 122, + 115, 102, 89, 97, 115, 129, 130, 137, 109, 91, 91, 96, 109, 122, 120, 128, + 127, 124, 119, 107, 101, 110, 124, 122, 118, 116, 119, 124, 127, 126, 125, 121, + 130, 127, 118, 122, 137, 135, 120, 129, 132, 135, 137, 139, 141, 144, 146, 142, + 153, 158, 155, 157, 166, 170, 166, 157, 161, 155, 152, 157, 155, 151, 158, 148, + 146, 148, 150, 157, 163, 166, 170, 170, 160, 161, 173, 171, 156, 155, 166, 177, + 166, 150, 142, 160, 193, 255, 16, 17, 28, 64, 115, 128, 128, 128, 121, 129, + 122, 105, 91, 91, 108, 122, 127, 124, 97, 84, 86, 95, 99, 107, 117, 115, + 110, 116, 120, 116, 108, 107, 115, 123, 126, 122, 124, 127, 132, 127, 125, 124, + 129, 117, 115, 129, 136, 129, 125, 128, 138, 141, 143, 143, 142, 142, 143, 144, + 149, 157, 160, 158, 162, 170, 172, 165, 150, 157, 154, 149, 151, 150, 151, 162, + 155, 152, 150, 150, 152, 155, 157, 158, 179, 164, 162, 173, 177, 164, 161, 168, + 179, 167, 153, 145, 152, 186, 225, 14, 14, 30, 69, 113, 122, 123, 123, 115, + 126, 116, 97, 91, 105, 122, 121, 113, 105, 74, 70, 86, 99, 98, 101, 109, + 107, 96, 111, 120, 115, 112, 115, 120, 119, 126, 124, 128, 134, 137, 129, 126, + 126, 128, 113, 113, 131, 138, 126, 125, 138, 150, 152, 152, 149, 145, 141, 139, + 139, 151, 157, 159, 159, 166, 174, 171, 161, 152, 158, 152, 147, 149, 148, 148, + 158, 160, 156, 150, 148, 148, 149, 149, 150, 159, 159, 155, 156, 162, 164, 163, + 158, 168, 161, 158, 146, 142, 173, 205, 10, 9, 34, 73, 114, 118, 119, 118, + 106, 117, 111, 94, 96, 118, 132, 116, 98, 88, 78, 71, 83, 96, 97, 99, + 104, 100, 107, 116, 114, 101, 100, 116, 128, 129, 122, 122, 129, 138, 140, 133, + 129, 132, 123, 124, 126, 128, 128, 130, 134, 138, 149, 151, 153, 152, 150, 147, + 146, 146, 151, 156, 159, 162, 170, 178, 171, 157, 163, 163, 154, 148, 151, 150, + 147, 153, 161, 156, 151, 148, 148, 149, 150, 150, 153, 167, 166, 154, 159, 177, + 180, 165, 158, 155, 159, 148, 133, 163, 201, 68, 15, 36, 95, 108, 109, 116, + 113, 118, 114, 99, 92, 99, 115, 119, 99, 80, 72, 79, 86, 95, 99, 98, + 94, 91, 90, 115, 109, 103, 102, 108, 115, 120, 122, 128, 130, 134, 136, 136, + 134, 131, 131, 122, 125, 129, 133, 136, 141, 144, 145, 153, 159, 161, 158, 153, + 151, 151, 151, 164, 155, 156, 169, 177, 173, 167, 166, 172, 168, 159, 152, 149, + 148, 149, 150, 144, 152, 159, 157, 151, 147, 149, 155, 161, 161, 148, 152, 166, + 161, 161, 183, 176, 160, 139, 141, 132, 127, 172, 202, 17, 32, 91, 102, 102, + 111, 110, 115, 110, 94, 97, 110, 117, 107, 84, 78, 84, 82, 88, 94, 92, + 85, 86, 93, 100, 110, 106, 103, 105, 113, 118, 120, 118, 122, 123, 127, 128, + 129, 129, 130, 129, 125, 128, 133, 137, 140, 144, 148, 152, 159, 162, 164, 161, + 158, 157, 157, 157, 169, 165, 165, 171, 175, 171, 164, 160, 168, 164, 157, 151, + 148, 147, 146, 147, 149, 151, 154, 155, 153, 149, 148, 148, 150, 160, 153, 147, + 161, 163, 163, 175, 170, 161, 138, 134, 121, 118, 165, 255, 19, 32, 89, 97, + 96, 107, 110, 115, 108, 94, 100, 112, 113, 99, 80, 79, 88, 85, 94, 100, + 96, 85, 83, 95, 107, 106, 104, 103, 108, 117, 120, 119, 113, 114, 115, 117, + 119, 123, 124, 126, 126, 128, 132, 137, 140, 142, 148, 153, 156, 165, 164, 163, + 162, 162, 161, 161, 162, 170, 173, 174, 173, 173, 172, 165, 157, 163, 161, 157, + 153, 149, 147, 146, 146, 150, 149, 149, 150, 153, 152, 150, 146, 142, 158, 153, + 138, 145, 156, 162, 166, 164, 164, 148, 137, 119, 117, 159, 255, 17, 35, 90, + 95, 93, 108, 115, 119, 109, 97, 99, 104, 104, 100, 90, 86, 85, 94, 104, + 112, 108, 99, 94, 98, 108, 108, 104, 103, 109, 117, 120, 114, 109, 106, 110, + 114, 117, 122, 123, 123, 123, 130, 133, 137, 139, 143, 147, 154, 160, 169, 166, + 164, 165, 166, 164, 165, 168, 170, 179, 182, 178, 177, 180, 176, 166, 166, 164, + 162, 158, 155, 150, 149, 147, 145, 143, 146, 149, 154, 154, 155, 151, 147, 153, + 147, 132, 131, 139, 150, 159, 157, 169, 160, 149, 128, 124, 163, 255, 14, 37, + 90, 93, 90, 109, 119, 122, 108, 91, 98, 105, 103, 100, 96, 94, 94, 108, + 112, 114, 113, 111, 106, 105, 106, 108, 103, 100, 103, 109, 110, 106, 101, 103, + 107, 114, 120, 124, 123, 121, 119, 128, 131, 136, 137, 140, 145, 154, 162, 170, + 167, 166, 169, 168, 164, 166, 172, 171, 180, 183, 179, 179, 183, 180, 172, 170, + 169, 166, 164, 160, 155, 152, 148, 140, 142, 147, 148, 147, 148, 151, 152, 153, + 146, 143, 143, 133, 128, 137, 147, 154, 166, 156, 146, 128, 125, 168, 255, 13, + 35, 88, 89, 86, 108, 122, 123, 104, 81, 101, 115, 107, 96, 93, 102, 110, + 118, 114, 111, 109, 110, 111, 109, 107, 103, 100, 98, 98, 101, 101, 99, 96, + 102, 108, 115, 120, 123, 122, 119, 117, 124, 129, 134, 134, 136, 141, 152, 162, + 171, 169, 171, 174, 171, 163, 166, 174, 179, 179, 179, 176, 178, 179, 177, 172, + 174, 172, 170, 165, 161, 157, 152, 150, 142, 143, 146, 145, 142, 139, 141, 143, + 149, 138, 146, 156, 144, 131, 133, 136, 151, 155, 140, 131, 116, 117, 168, 255, + 14, 34, 86, 86, 85, 109, 125, 123, 101, 87, 105, 115, 103, 94, 98, 110, + 116, 109, 108, 109, 111, 115, 115, 111, 107, 98, 99, 100, 101, 100, 99, 98, + 97, 105, 107, 111, 113, 115, 116, 116, 115, 122, 128, 132, 132, 134, 139, 152, + 165, 172, 172, 179, 180, 175, 162, 167, 177, 188, 178, 175, 176, 181, 178, 176, + 175, 181, 178, 174, 168, 163, 159, 155, 152, 148, 145, 144, 143, 144, 143, 141, + 138, 140, 132, 144, 151, 141, 140, 143, 135, 145, 142, 127, 126, 115, 113, 164, + 255, 175, 33, 86, 86, 84, 111, 128, 125, 100, 101, 107, 105, 94, 98, 110, + 115, 112, 96, 102, 111, 120, 123, 119, 110, 103, 96, 101, 106, 108, 105, 103, + 100, 102, 107, 108, 108, 108, 109, 109, 112, 114, 122, 128, 134, 134, 135, 142, + 155, 169, 173, 176, 183, 187, 174, 161, 165, 179, 190, 176, 170, 177, 185, 182, + 180, 182, 187, 183, 179, 172, 167, 162, 159, 157, 154, 147, 143, 144, 150, 152, + 148, 141, 135, 129, 137, 137, 129, 145, 157, 140, 140, 135, 125, 133, 122, 115, + 158, 255, 255, 25, 55, 93, 83, 101, 140, 120, 95, 104, 103, 102, 103, 111, + 116, 104, 88, 94, 108, 120, 123, 121, 119, 112, 107, 106, 102, 101, 106, 106, + 101, 100, 105, 110, 112, 114, 114, 115, 116, 120, 124, 130, 132, 133, 136, 144, + 155, 170, 179, 182, 189, 190, 184, 169, 148, 155, 184, 184, 185, 181, 179, 181, + 183, 185, 185, 189, 185, 184, 179, 176, 171, 164, 160, 159, 157, 154, 150, 149, + 149, 149, 147, 141, 136, 132, 129, 130, 134, 137, 141, 144, 141, 133, 123, 116, + 115, 206, 255, 255, 22, 45, 81, 82, 105, 139, 122, 101, 103, 98, 100, 105, + 107, 99, 91, 89, 103, 111, 117, 117, 115, 115, 110, 104, 106, 101, 99, 102, + 103, 101, 104, 109, 115, 115, 118, 118, 117, 117, 119, 121, 133, 134, 135, 138, + 145, 158, 173, 183, 190, 192, 189, 184, 172, 153, 159, 188, 186, 187, 187, 181, + 184, 190, 193, 189, 193, 189, 188, 183, 179, 174, 167, 164, 162, 161, 159, 157, + 154, 153, 152, 149, 145, 140, 139, 137, 138, 137, 139, 139, 143, 137, 127, 122, + 118, 117, 255, 255, 255, 20, 33, 64, 84, 112, 135, 122, 110, 108, 102, 107, + 112, 103, 86, 85, 98, 110, 113, 112, 109, 109, 111, 107, 102, 105, 100, 98, + 100, 102, 103, 107, 113, 113, 114, 115, 116, 117, 119, 118, 117, 124, 128, 132, + 140, 151, 166, 183, 194, 198, 197, 190, 184, 177, 163, 169, 194, 192, 196, 194, + 185, 186, 199, 202, 193, 196, 194, 193, 188, 183, 178, 172, 170, 166, 166, 165, + 164, 162, 157, 155, 150, 150, 145, 144, 142, 142, 139, 138, 136, 138, 129, 122, + 122, 117, 114, 255, 255, 255, 19, 24, 50, 84, 118, 128, 120, 115, 109, 112, + 116, 109, 93, 82, 88, 102, 107, 108, 106, 104, 107, 111, 108, 102, 103, 101, + 99, 100, 101, 104, 108, 112, 111, 112, 114, 117, 121, 122, 120, 119, 123, 128, + 137, 148, 162, 177, 191, 199, 204, 205, 197, 188, 179, 168, 175, 202, 200, 205, + 200, 188, 191, 204, 205, 194, 201, 198, 198, 192, 189, 182, 178, 176, 170, 171, + 171, 171, 168, 164, 158, 155, 154, 148, 144, 142, 141, 138, 135, 132, 133, 128, + 123, 122, 112, 104, 255, 255, 255, 22, 21, 41, 88, 121, 118, 114, 117, 103, + 117, 119, 97, 81, 82, 92, 97, 96, 99, 101, 103, 109, 114, 111, 104, 101, + 102, 103, 103, 104, 105, 106, 108, 113, 116, 118, 121, 123, 125, 125, 124, 130, + 139, 150, 163, 173, 182, 189, 195, 207, 213, 204, 193, 184, 173, 183, 208, 209, + 211, 203, 192, 194, 204, 203, 192, 203, 203, 203, 198, 193, 187, 185, 183, 176, + 177, 179, 179, 177, 172, 168, 163, 158, 152, 146, 142, 140, 139, 134, 129, 128, + 128, 128, 125, 110, 103, 255, 255, 255, 178, 23, 38, 91, 120, 110, 111, 115, + 101, 118, 118, 94, 83, 92, 98, 93, 87, 95, 101, 106, 111, 114, 111, 104, + 99, 103, 104, 103, 103, 106, 106, 106, 115, 120, 123, 124, 125, 127, 129, 132, + 137, 145, 159, 173, 185, 194, 200, 205, 211, 215, 208, 199, 193, 186, 193, 213, + 217, 212, 203, 195, 198, 204, 202, 196, 206, 208, 208, 205, 198, 193, 193, 192, + 188, 187, 190, 188, 188, 183, 181, 176, 169, 163, 156, 152, 150, 145, 136, 128, + 123, 129, 130, 125, 116, 163, 255, 255, 255, 255, 23, 36, 93, 119, 102, 112, + 116, 101, 109, 110, 101, 97, 100, 98, 90, 85, 96, 104, 107, 109, 110, 107, + 102, 98, 102, 104, 101, 103, 109, 111, 111, 122, 130, 136, 138, 138, 143, 151, + 159, 158, 165, 176, 187, 197, 205, 212, 217, 214, 216, 207, 203, 207, 205, 205, + 216, 222, 209, 199, 200, 203, 203, 201, 202, 209, 212, 213, 210, 204, 199, 200, + 201, 199, 199, 201, 200, 200, 196, 194, 191, 187, 180, 174, 171, 167, 157, 142, + 129, 122, 129, 127, 122, 124, 255, 255, 255, 255, 255, 25, 37, 93, 117, 100, + 113, 119, 96, 97, 99, 103, 105, 100, 91, 83, 89, 99, 107, 108, 107, 106, + 103, 100, 98, 101, 102, 98, 100, 109, 115, 117, 133, 144, 153, 158, 159, 167, + 181, 194, 190, 192, 196, 199, 203, 206, 210, 215, 215, 212, 202, 202, 216, 219, + 213, 217, 224, 206, 197, 202, 207, 203, 203, 206, 209, 213, 215, 212, 206, 202, + 203, 205, 206, 206, 207, 207, 206, 204, 202, 201, 199, 193, 190, 187, 182, 167, + 145, 129, 123, 128, 122, 116, 124, 255, 255, 255, 255, 255, 19, 46, 103, 114, + 96, 113, 126, 100, 94, 93, 100, 104, 94, 85, 81, 98, 100, 102, 103, 104, + 103, 102, 101, 97, 94, 97, 105, 110, 110, 116, 124, 148, 159, 169, 172, 178, + 192, 203, 210, 211, 213, 214, 217, 218, 217, 214, 212, 213, 202, 183, 194, 201, + 196, 210, 211, 211, 202, 195, 199, 204, 204, 208, 214, 211, 207, 207, 213, 214, + 210, 208, 212, 214, 210, 210, 204, 195, 200, 203, 194, 195, 201, 211, 202, 197, + 193, 157, 128, 129, 133, 112, 119, 114, 255, 255, 255, 255, 255, 181, 51, 94, + 104, 96, 117, 128, 99, 92, 90, 97, 102, 99, 92, 91, 100, 101, 101, 101, + 101, 100, 98, 98, 105, 102, 105, 111, 116, 119, 127, 137, 163, 174, 184, 188, + 194, 206, 217, 221, 227, 222, 216, 209, 205, 208, 215, 220, 206, 203, 191, 203, + 206, 198, 204, 198, 209, 203, 199, 205, 209, 208, 207, 211, 211, 208, 212, 214, + 213, 207, 204, 206, 205, 206, 212, 211, 205, 201, 194, 183, 200, 202, 208, 216, + 221, 223, 191, 128, 118, 120, 105, 113, 161, 255, 255, 255, 255, 255, 255, 48, + 81, 92, 96, 122, 128, 104, 96, 90, 94, 100, 99, 97, 97, 102, 101, 100, + 98, 98, 96, 98, 97, 106, 105, 108, 110, 113, 120, 135, 149, 175, 184, 195, + 199, 205, 215, 223, 226, 226, 225, 222, 216, 210, 209, 210, 213, 202, 204, 196, + 204, 204, 197, 204, 197, 206, 204, 204, 210, 213, 211, 210, 209, 214, 214, 216, + 217, 214, 205, 201, 202, 204, 197, 192, 189, 191, 196, 202, 209, 218, 219, 214, + 228, 225, 235, 222, 131, 108, 107, 104, 114, 255, 255, 255, 255, 255, 255, 255, + 42, 70, 86, 100, 127, 124, 111, 102, 93, 90, 95, 99, 100, 99, 103, 101, + 100, 98, 97, 97, 100, 100, 103, 104, 107, 106, 110, 123, 145, 161, 183, 190, + 199, 205, 211, 218, 223, 224, 221, 221, 222, 225, 224, 221, 218, 212, 215, 215, + 201, 203, 202, 198, 213, 211, 203, 204, 206, 211, 213, 213, 211, 212, 215, 218, + 220, 218, 215, 208, 204, 201, 199, 196, 195, 200, 202, 190, 184, 193, 204, 214, + 218, 238, 222, 231, 236, 124, 101, 102, 120, 132, 255, 255, 255, 255, 255, 255, + 255, 43, 74, 94, 110, 130, 118, 112, 103, 93, 87, 93, 100, 104, 103, 101, + 100, 100, 99, 100, 101, 105, 106, 106, 111, 113, 113, 121, 140, 166, 183, 194, + 200, 206, 210, 215, 222, 224, 223, 228, 224, 220, 221, 222, 216, 206, 192, 173, + 170, 161, 171, 175, 172, 190, 192, 197, 201, 204, 207, 209, 212, 213, 215, 217, + 219, 220, 219, 217, 212, 204, 197, 192, 181, 161, 153, 147, 127, 125, 153, 162, + 174, 190, 225, 218, 234, 233, 107, 95, 103, 147, 158, 255, 255, 255, 255, 255, + 255, 255, 186, 85, 105, 117, 131, 113, 106, 100, 91, 86, 93, 105, 109, 107, + 99, 100, 101, 102, 104, 105, 109, 110, 109, 113, 117, 119, 133, 159, 189, 202, + 203, 206, 209, 212, 216, 222, 224, 222, 225, 225, 222, 215, 201, 173, 141, 114, + 88, 91, 100, 139, 159, 151, 163, 169, 188, 194, 202, 205, 208, 213, 214, 215, + 220, 223, 224, 225, 223, 216, 199, 183, 152, 130, 92, 75, 77, 72, 99, 161, + 167, 152, 151, 184, 197, 233, 224, 101, 94, 107, 175, 182, 255, 255, 255, 255, + 255, 255, 255, 255, 86, 107, 115, 127, 110, 103, 99, 91, 86, 93, 106, 110, + 106, 98, 99, 101, 103, 106, 107, 109, 109, 108, 113, 118, 124, 144, 176, 205, + 213, 209, 207, 210, 212, 215, 221, 222, 219, 218, 216, 208, 190, 160, 124, 92, + 69, 71, 73, 96, 157, 183, 165, 166, 170, 179, 190, 202, 207, 208, 215, 215, + 215, 225, 230, 233, 235, 233, 219, 187, 158, 106, 98, 80, 80, 92, 83, 109, + 179, 192, 155, 146, 163, 184, 227, 207, 104, 103, 118, 197, 194, 255, 255, 255, + 255, 255, 255, 255, 255, 78, 101, 109, 119, 105, 102, 99, 90, 85, 93, 105, + 109, 103, 98, 97, 99, 103, 106, 108, 109, 108, 110, 116, 121, 130, 153, 186, + 214, 220, 214, 213, 214, 215, 219, 224, 226, 223, 218, 207, 184, 150, 119, 102, + 102, 105, 97, 94, 115, 177, 195, 160, 148, 148, 167, 183, 198, 204, 210, 214, + 214, 211, 225, 230, 233, 238, 236, 216, 176, 137, 114, 106, 83, 80, 88, 77, + 107, 185, 180, 152, 167, 182, 198, 231, 192, 100, 109, 121, 202, 192, 255, 255, + 255, 255, 255, 255, 255, 255, 83, 113, 112, 101, 95, 89, 87, 80, 94, 112, + 111, 113, 113, 98, 97, 103, 107, 109, 111, 111, 109, 102, 119, 129, 144, 180, + 210, 218, 216, 214, 211, 213, 217, 218, 216, 212, 209, 207, 189, 171, 174, 190, + 197, 185, 171, 160, 160, 164, 172, 176, 174, 176, 178, 187, 191, 199, 206, 213, + 214, 213, 210, 221, 223, 225, 227, 226, 213, 186, 163, 144, 141, 145, 153, 154, + 156, 174, 195, 209, 227, 232, 222, 206, 217, 193, 99, 143, 166, 184, 184, 255, + 255, 255, 255, 255, 255, 255, 255, 90, 114, 103, 91, 95, 79, 77, 76, 89, + 102, 108, 116, 114, 96, 99, 109, 110, 109, 108, 108, 110, 110, 130, 143, 157, + 190, 215, 222, 221, 215, 211, 214, 216, 220, 219, 217, 216, 198, 204, 212, 217, + 220, 217, 212, 209, 203, 201, 201, 201, 197, 188, 184, 183, 195, 192, 194, 202, + 212, 217, 215, 210, 209, 211, 219, 226, 231, 227, 207, 189, 185, 179, 180, 189, + 195, 200, 214, 230, 222, 226, 234, 239, 226, 228, 212, 142, 164, 174, 182, 179, + 255, 255, 255, 255, 255, 255, 255, 255, 201, 110, 88, 78, 92, 76, 74, 84, + 92, 98, 113, 126, 121, 103, 109, 118, 119, 111, 107, 108, 113, 120, 142, 159, + 174, 201, 221, 225, 226, 218, 214, 215, 217, 221, 222, 222, 223, 218, 226, 232, + 228, 222, 218, 221, 226, 221, 217, 213, 210, 203, 193, 187, 184, 194, 189, 188, + 196, 209, 217, 216, 210, 216, 218, 224, 229, 234, 232, 217, 202, 193, 185, 181, + 188, 194, 199, 208, 218, 223, 221, 228, 246, 240, 232, 228, 184, 186, 186, 181, + 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 76, 67, 79, 74, 73, + 90, 94, 99, 125, 136, 129, 122, 120, 123, 124, 119, 114, 114, 119, 125, 149, + 169, 186, 208, 220, 223, 225, 220, 214, 215, 216, 221, 224, 226, 227, 231, 227, + 220, 218, 219, 218, 215, 211, 204, 201, 199, 200, 197, 189, 186, 186, 188, 186, + 189, 197, 209, 215, 218, 215, 224, 224, 228, 230, 233, 232, 220, 207, 203, 196, + 191, 192, 192, 194, 201, 208, 218, 217, 223, 244, 241, 231, 229, 200, 186, 181, + 175, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, 74, 67, 69, 70, + 70, 91, 89, 109, 145, 141, 134, 136, 128, 125, 126, 125, 123, 123, 126, 132, + 155, 176, 192, 212, 219, 219, 222, 220, 215, 216, 217, 221, 224, 226, 228, 216, + 216, 219, 226, 233, 230, 219, 207, 200, 197, 198, 200, 200, 197, 196, 198, 194, + 197, 206, 211, 216, 219, 223, 224, 217, 220, 223, 226, 232, 236, 230, 222, 217, + 216, 215, 212, 206, 205, 214, 223, 218, 229, 233, 242, 240, 234, 230, 201, 178, + 176, 173, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, 75, 68, 66, + 75, 79, 93, 86, 131, 177, 153, 144, 145, 134, 127, 130, 134, 131, 130, 132, + 142, 162, 180, 196, 215, 218, 218, 222, 219, 215, 216, 218, 222, 224, 228, 227, + 219, 223, 230, 231, 232, 229, 229, 226, 218, 214, 213, 215, 214, 210, 209, 212, + 206, 213, 220, 222, 221, 219, 221, 222, 220, 221, 224, 227, 233, 238, 235, 228, + 218, 221, 224, 221, 215, 214, 222, 232, 222, 242, 239, 240, 241, 235, 227, 198, + 176, 177, 177, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 69, 64, + 69, 83, 92, 96, 86, 158, 210, 164, 155, 145, 139, 137, 144, 145, 140, 139, + 143, 151, 166, 181, 197, 214, 218, 216, 220, 220, 218, 218, 220, 223, 225, 227, + 226, 234, 232, 232, 227, 225, 226, 231, 236, 229, 224, 223, 223, 221, 216, 215, + 218, 219, 221, 222, 222, 221, 218, 218, 219, 223, 226, 226, 227, 231, 235, 231, + 224, 222, 227, 231, 230, 227, 228, 232, 235, 225, 242, 234, 236, 241, 233, 225, + 204, 181, 177, 176, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 61, + 56, 71, 83, 96, 93, 83, 169, 226, 164, 154, 145, 144, 149, 157, 155, 146, + 145, 151, 154, 166, 178, 194, 213, 216, 212, 218, 221, 220, 220, 222, 225, 227, + 228, 226, 228, 225, 226, 232, 239, 240, 234, 225, 229, 223, 221, 225, 225, 221, + 221, 224, 230, 225, 222, 221, 223, 223, 222, 223, 216, 221, 223, 224, 229, 235, + 233, 228, 223, 225, 227, 226, 227, 228, 229, 225, 232, 240, 230, 237, 247, 233, + 227, 215, 183, 176, 172, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 65, 59, 67, 80, 100, 102, 81, 181, 219, 172, 146, 141, 156, 165, 163, 159, + 158, 160, 157, 164, 167, 181, 194, 207, 214, 217, 220, 225, 226, 226, 226, 226, + 225, 226, 226, 229, 228, 229, 228, 230, 232, 234, 234, 228, 231, 231, 227, 226, + 229, 229, 224, 231, 235, 235, 225, 220, 222, 223, 222, 221, 219, 218, 221, 227, + 232, 231, 230, 218, 232, 234, 223, 222, 234, 240, 233, 229, 232, 238, 240, 240, + 233, 225, 216, 183, 179, 176, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 191, 64, 62, 82, 111, 100, 93, 150, 211, 171, 155, 156, 155, 148, 151, + 171, 196, 201, 191, 179, 176, 181, 195, 206, 209, 213, 218, 220, 221, 223, 224, + 227, 228, 230, 230, 231, 231, 234, 234, 235, 235, 236, 233, 227, 229, 229, 226, + 225, 229, 228, 224, 224, 229, 228, 221, 218, 221, 221, 222, 222, 223, 223, 226, + 230, 233, 233, 233, 226, 229, 232, 231, 232, 234, 234, 231, 232, 233, 237, 240, + 241, 237, 229, 221, 189, 184, 181, 181, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 73, 64, 94, 127, 102, 105, 104, 183, 161, 168, 161, 165, 161, + 166, 194, 225, 223, 200, 198, 184, 182, 196, 207, 208, 212, 220, 219, 221, 223, + 225, 229, 230, 231, 231, 232, 233, 235, 236, 237, 236, 234, 230, 227, 228, 229, + 228, 228, 229, 228, 224, 226, 228, 226, 221, 220, 222, 221, 219, 219, 223, 227, + 229, 230, 233, 236, 237, 236, 228, 229, 236, 240, 237, 237, 239, 236, 234, 235, + 239, 243, 241, 233, 224, 206, 202, 198, 198, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 71, 73, 104, 129, 108, 117, 81, 147, 163, 200, 193, 196, + 174, 151, 163, 203, 229, 228, 210, 189, 182, 196, 206, 207, 213, 225, 224, 225, + 226, 227, 230, 230, 230, 229, 229, 231, 234, 236, 237, 234, 231, 226, 229, 230, + 232, 233, 232, 230, 228, 225, 225, 224, 221, 218, 219, 217, 216, 213, 217, 223, + 227, 232, 232, 234, 237, 242, 242, 230, 221, 222, 228, 235, 241, 244, 238, 233, + 233, 237, 240, 240, 234, 224, 222, 216, 213, 212, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 62, 85, 111, 121, 118, 124, 86, 115, 168, 224, 211, + 220, 203, 171, 167, 198, 225, 228, 217, 199, 188, 196, 206, 208, 212, 223, 225, + 228, 229, 230, 231, 231, 231, 231, 229, 231, 233, 234, 234, 231, 228, 226, 233, + 233, 236, 236, 234, 230, 225, 224, 215, 210, 206, 210, 215, 214, 212, 209, 219, + 225, 229, 233, 233, 236, 240, 244, 241, 236, 218, 199, 200, 221, 238, 236, 239, + 234, 234, 237, 240, 239, 233, 224, 223, 217, 214, 213, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 189, 95, 123, 127, 126, 124, 93, 86, 141, 187, + 217, 235, 241, 228, 222, 226, 223, 211, 221, 210, 200, 202, 206, 210, 211, 216, + 222, 225, 227, 230, 231, 233, 233, 234, 231, 231, 231, 232, 231, 231, 230, 230, + 233, 231, 234, 236, 233, 224, 218, 218, 206, 200, 199, 210, 220, 224, 221, 220, + 228, 228, 230, 230, 232, 234, 238, 239, 243, 244, 225, 195, 188, 209, 226, 227, + 235, 233, 236, 238, 238, 237, 234, 226, 223, 218, 214, 212, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 87, 128, 142, 128, 124, 97, 80, 103, + 122, 181, 203, 221, 221, 218, 221, 223, 221, 217, 217, 212, 207, 209, 216, 217, + 213, 222, 225, 226, 228, 229, 230, 230, 230, 231, 229, 227, 226, 226, 228, 230, + 232, 228, 227, 228, 231, 227, 215, 208, 206, 206, 199, 201, 214, 231, 236, 234, + 234, 233, 230, 226, 222, 224, 224, 225, 225, 229, 236, 230, 210, 195, 199, 214, + 220, 223, 224, 233, 236, 234, 233, 230, 228, 227, 220, 216, 214, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 65, 121, 153, 127, 128, 108, 99, + 95, 90, 71, 118, 171, 198, 199, 196, 200, 206, 210, 218, 218, 210, 212, 221, + 223, 216, 224, 227, 227, 227, 226, 225, 224, 225, 228, 227, 224, 221, 222, 226, + 231, 234, 227, 223, 226, 228, 223, 210, 201, 200, 208, 201, 202, 220, 237, 244, + 242, 242, 241, 235, 225, 220, 220, 218, 216, 214, 211, 218, 226, 220, 202, 190, + 199, 214, 216, 221, 231, 233, 231, 227, 226, 226, 226, 219, 214, 213, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 114, 137, 137, 120, 109, + 99, 92, 92, 75, 50, 98, 159, 202, 217, 200, 207, 209, 215, 217, 211, 211, + 215, 215, 213, 222, 224, 224, 226, 226, 226, 225, 226, 225, 229, 228, 225, 223, + 227, 228, 227, 232, 230, 225, 222, 216, 212, 208, 204, 216, 213, 214, 225, 236, + 240, 233, 224, 226, 225, 222, 226, 229, 227, 223, 216, 212, 209, 218, 227, 217, + 195, 196, 211, 222, 225, 234, 239, 233, 223, 223, 229, 225, 220, 216, 213, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 123, 137, 124, + 109, 97, 91, 93, 61, 34, 58, 91, 140, 187, 188, 185, 202, 211, 214, 211, + 207, 210, 214, 216, 222, 223, 223, 223, 225, 225, 226, 225, 226, 229, 231, 226, + 227, 230, 233, 231, 227, 231, 229, 219, 207, 204, 212, 224, 229, 225, 221, 218, + 213, 207, 201, 197, 168, 169, 175, 188, 206, 218, 220, 217, 194, 206, 223, 228, + 221, 206, 200, 201, 216, 223, 229, 233, 225, 218, 222, 227, 223, 220, 216, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 105, 133, + 130, 114, 98, 92, 95, 70, 50, 49, 54, 106, 184, 205, 189, 196, 206, 213, + 210, 205, 207, 214, 220, 219, 221, 222, 222, 224, 224, 225, 224, 223, 225, 228, + 224, 227, 231, 233, 231, 228, 227, 220, 210, 202, 204, 217, 228, 229, 228, 223, + 215, 204, 197, 196, 201, 223, 217, 211, 212, 218, 220, 217, 212, 204, 223, 238, + 235, 225, 215, 203, 192, 203, 212, 221, 223, 217, 213, 222, 230, 223, 220, 216, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, + 124, 129, 121, 107, 96, 94, 70, 58, 46, 42, 89, 174, 210, 193, 201, 207, + 211, 210, 207, 208, 213, 219, 218, 220, 221, 221, 223, 222, 224, 223, 219, 222, + 224, 223, 226, 230, 230, 227, 232, 221, 207, 202, 209, 217, 218, 217, 221, 223, + 222, 218, 214, 213, 216, 224, 230, 226, 216, 208, 204, 204, 204, 204, 227, 236, + 242, 234, 223, 213, 203, 197, 196, 206, 215, 216, 213, 215, 224, 233, 223, 219, + 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 194, 104, 117, 124, 117, 103, 94, 73, 60, 44, 44, 79, 150, 203, 206, 213, + 209, 208, 209, 211, 212, 213, 214, 218, 219, 221, 221, 222, 221, 223, 223, 219, + 223, 225, 225, 227, 229, 227, 222, 218, 212, 206, 208, 217, 222, 221, 215, 222, + 221, 219, 217, 217, 215, 214, 216, 222, 224, 217, 210, 205, 210, 222, 231, 231, + 229, 231, 232, 226, 213, 207, 209, 196, 206, 211, 212, 212, 217, 227, 233, 222, + 217, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 79, 96, 116, 122, 110, 99, 84, 70, 48, 48, 70, 125, 195, 218, + 220, 213, 208, 211, 214, 214, 212, 213, 218, 219, 221, 221, 223, 222, 222, 223, + 222, 225, 230, 230, 233, 232, 225, 217, 198, 209, 219, 222, 221, 220, 226, 230, + 232, 228, 223, 223, 223, 221, 213, 210, 224, 225, 221, 211, 205, 208, 219, 229, + 239, 235, 238, 244, 239, 222, 212, 214, 201, 208, 211, 210, 212, 220, 228, 229, + 220, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 52, 69, 101, 118, 115, 107, 86, 74, 48, 46, 56, 101, 179, + 208, 220, 211, 208, 211, 212, 209, 211, 216, 219, 219, 221, 221, 221, 222, 222, + 224, 222, 225, 231, 232, 234, 230, 219, 207, 202, 214, 225, 228, 222, 223, 230, + 236, 232, 228, 226, 225, 227, 225, 219, 217, 225, 226, 224, 221, 224, 228, 233, + 235, 233, 237, 239, 237, 234, 227, 218, 208, 211, 215, 214, 212, 217, 226, 229, + 225, 219, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 182, 51, 86, 111, 117, 114, 96, 91, 65, 59, 64, 102, + 179, 202, 215, 211, 210, 212, 210, 206, 211, 219, 219, 220, 221, 221, 222, 221, + 222, 222, 218, 223, 227, 231, 232, 226, 212, 198, 221, 221, 221, 223, 226, 229, + 231, 230, 226, 222, 220, 219, 218, 216, 213, 213, 219, 215, 212, 215, 219, 221, + 216, 209, 206, 216, 216, 207, 209, 222, 218, 203, 219, 220, 217, 214, 221, 231, + 232, 224, 218, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 183, 72, 105, 118, 113, 107, 96, 69, 66, 63, + 88, 167, 201, 214, 215, 214, 210, 210, 213, 215, 213, 219, 218, 218, 218, 219, + 220, 222, 224, 224, 224, 226, 228, 232, 228, 218, 212, 222, 221, 218, 219, 223, + 225, 219, 213, 209, 211, 207, 201, 200, 200, 198, 194, 195, 192, 189, 193, 198, + 199, 196, 191, 217, 213, 210, 207, 205, 206, 209, 212, 222, 227, 226, 219, 222, + 233, 231, 219, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 65, 94, 110, 111, 105, 101, 82, 81, + 72, 84, 155, 197, 212, 215, 215, 211, 211, 213, 216, 214, 217, 218, 218, 217, + 218, 220, 222, 223, 224, 223, 225, 230, 234, 230, 222, 214, 225, 214, 212, 212, + 187, 154, 150, 171, 184, 189, 189, 186, 186, 188, 187, 182, 194, 190, 190, 195, + 201, 199, 194, 187, 165, 167, 173, 181, 189, 201, 213, 219, 226, 227, 227, 221, + 221, 230, 226, 215, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 81, 99, 108, 102, 100, 88, + 87, 68, 67, 131, 190, 210, 214, 216, 214, 213, 214, 217, 215, 217, 217, 218, + 218, 219, 220, 223, 223, 223, 223, 226, 230, 235, 232, 226, 219, 227, 219, 217, + 212, 185, 151, 149, 171, 174, 180, 184, 182, 185, 188, 186, 181, 178, 179, 186, + 198, 210, 214, 210, 206, 194, 195, 198, 205, 211, 221, 229, 231, 227, 229, 228, + 221, 221, 224, 219, 209, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 89, 106, 107, 103, + 94, 85, 62, 54, 113, 189, 205, 212, 217, 215, 213, 215, 218, 216, 218, 217, + 218, 218, 219, 219, 221, 224, 220, 222, 225, 229, 232, 233, 229, 224, 227, 229, + 223, 214, 211, 211, 209, 203, 205, 210, 215, 215, 215, 217, 216, 209, 192, 195, + 207, 221, 233, 242, 243, 241, 231, 228, 226, 225, 226, 226, 227, 225, 223, 224, + 224, 219, 218, 218, 214, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 101, 113, + 112, 106, 95, 73, 61, 106, 190, 202, 210, 216, 216, 214, 216, 218, 217, 218, + 218, 217, 218, 219, 220, 222, 224, 220, 222, 225, 228, 230, 230, 229, 227, 228, + 228, 221, 216, 224, 234, 229, 218, 221, 225, 228, 225, 222, 222, 219, 213, 210, + 210, 216, 224, 230, 235, 236, 235, 222, 218, 219, 221, 226, 229, 231, 225, 219, + 219, 220, 217, 215, 214, 209, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 88, + 108, 111, 111, 100, 88, 76, 101, 178, 199, 208, 216, 215, 214, 214, 218, 217, + 218, 218, 217, 217, 219, 220, 222, 222, 222, 223, 227, 228, 229, 228, 229, 228, + 230, 222, 221, 227, 224, 216, 218, 230, 221, 225, 224, 219, 216, 215, 213, 207, + 209, 210, 212, 214, 217, 218, 220, 220, 224, 222, 222, 225, 231, 232, 232, 228, + 217, 216, 215, 212, 207, 203, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 193, 103, 106, 105, 91, 91, 86, 96, 168, 195, 206, 216, 215, 214, 213, 217, + 216, 218, 217, 218, 217, 219, 221, 222, 223, 226, 227, 231, 230, 229, 228, 229, + 230, 230, 225, 224, 227, 223, 216, 219, 231, 232, 232, 231, 226, 225, 226, 224, + 221, 220, 222, 224, 227, 229, 230, 232, 233, 233, 228, 225, 225, 227, 225, 218, + 210, 217, 213, 209, 202, 191, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 102, 103, 97, 78, 87, 92, 100, 168, 193, 206, 216, 217, 214, 213, + 214, 214, 218, 217, 217, 217, 217, 220, 221, 222, 227, 230, 230, 231, 229, 227, + 228, 230, 227, 232, 226, 213, 216, 227, 227, 216, 221, 224, 222, 218, 219, 223, + 222, 221, 223, 227, 230, 229, 230, 229, 229, 229, 231, 228, 225, 227, 231, 229, + 223, 215, 212, 205, 199, 189, 177, 166, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 91, 92, 75, 70, 70, 95, 161, 198, 204, 212, 223, 227, + 212, 204, 217, 216, 214, 213, 218, 223, 223, 219, 213, 225, 225, 225, 228, 229, + 227, 226, 224, 222, 221, 217, 215, 215, 217, 220, 223, 225, 226, 226, 223, 219, + 217, 220, 223, 228, 226, 224, 223, 225, 226, 228, 227, 224, 219, 220, 229, 230, + 222, 218, 217, 201, 191, 184, 175, 167, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 196, 91, 82, 76, 71, 92, 157, 199, 207, 210, 218, + 225, 216, 206, 211, 218, 215, 214, 215, 218, 221, 219, 216, 222, 223, 224, 224, + 225, 226, 223, 222, 219, 218, 217, 215, 215, 217, 219, 221, 226, 227, 226, 223, + 221, 220, 222, 224, 225, 225, 224, 221, 218, 216, 220, 222, 223, 223, 226, 230, + 228, 221, 218, 212, 191, 181, 176, 169, 164, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 200, 90, 85, 71, 80, 137, 197, 208, 209, + 211, 222, 221, 211, 207, 216, 217, 216, 216, 217, 219, 221, 222, 223, 222, 223, + 223, 225, 223, 222, 220, 221, 221, 220, 219, 217, 219, 219, 219, 222, 223, 224, + 222, 219, 218, 220, 221, 220, 222, 223, 217, 212, 210, 216, 222, 222, 228, 231, + 229, 225, 221, 214, 201, 167, 159, 157, 151, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, 88, 81, 81, 127, 189, 208, + 212, 207, 216, 222, 215, 211, 212, 214, 216, 217, 217, 219, 222, 227, 223, 222, + 222, 223, 225, 223, 220, 219, 223, 223, 224, 223, 222, 220, 219, 218, 221, 221, + 221, 221, 219, 218, 219, 219, 220, 221, 220, 217, 217, 219, 224, 227, 224, 230, + 231, 227, 225, 222, 209, 186, 152, 145, 144, 180, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 87, 87, 126, 181, + 208, 216, 208, 213, 220, 218, 218, 208, 210, 215, 217, 219, 221, 225, 229, 223, + 223, 222, 223, 224, 223, 220, 217, 222, 222, 223, 222, 221, 219, 218, 218, 219, + 218, 219, 220, 219, 218, 218, 218, 221, 218, 216, 218, 225, 232, 233, 232, 229, + 228, 227, 224, 225, 220, 196, 165, 151, 144, 181, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 70, 72, 112, + 181, 209, 217, 210, 212, 216, 217, 224, 209, 211, 211, 213, 216, 221, 224, 226, + 224, 223, 223, 224, 225, 223, 221, 218, 220, 219, 220, 218, 218, 217, 217, 217, + 219, 219, 218, 220, 221, 221, 218, 218, 221, 217, 215, 220, 229, 236, 235, 230, + 231, 227, 223, 222, 218, 206, 177, 145, 139, 132, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 51, + 101, 190, 209, 216, 211, 213, 213, 213, 221, 217, 213, 208, 206, 210, 218, 222, + 224, 226, 225, 224, 225, 226, 225, 222, 218, 221, 220, 221, 219, 219, 218, 218, + 219, 219, 220, 219, 221, 224, 223, 219, 219, 222, 221, 221, 224, 228, 232, 229, + 224, 231, 226, 222, 222, 208, 181, 150, 125, 121, 114, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 205, 198, 210, 211, 211, 215, 213, 209, 215, 226, 217, 204, 200, 206, 214, + 220, 222, 228, 226, 226, 226, 227, 226, 223, 219, 224, 223, 223, 221, 222, 221, + 222, 223, 220, 219, 219, 221, 224, 223, 218, 218, 224, 229, 229, 229, 229, 227, + 224, 221, 229, 223, 222, 220, 197, 160, 131, 113, 115, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 238, 205, 210, 214, 212, 209, 209, 215, 218, 224, 224, 212, 196, + 193, 207, 221, 228, 224, 223, 224, 229, 231, 230, 225, 222, 222, 222, 220, 220, + 221, 226, 229, 231, 229, 226, 225, 223, 221, 217, 218, 229, 230, 228, 227, 230, + 231, 233, 232, 225, 223, 222, 215, 192, 164, 144, 135, 173, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 238, 208, 213, 213, 207, 205, 209, 212, 220, 223, 221, + 213, 208, 207, 209, 215, 219, 224, 228, 228, 228, 229, 228, 226, 226, 226, 226, + 225, 226, 230, 234, 225, 226, 225, 224, 223, 223, 220, 219, 225, 227, 225, 224, + 224, 226, 228, 227, 229, 223, 220, 213, 195, 168, 148, 174, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 237, 204, 202, 201, 204, 210, 213, 218, + 222, 222, 216, 205, 198, 203, 212, 222, 228, 226, 224, 226, 228, 229, 229, 228, + 228, 226, 227, 230, 233, 225, 224, 225, 225, 225, 223, 219, 218, 224, 223, 222, + 219, 220, 222, 224, 221, 229, 223, 219, 217, 203, 177, 153, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 195, 197, 202, 208, 210, + 213, 218, 223, 221, 210, 204, 198, 204, 213, 219, 219, 220, 223, 225, 226, 227, + 227, 225, 223, 222, 224, 226, 229, 228, 229, 228, 226, 220, 215, 213, 222, 222, + 219, 215, 216, 217, 219, 218, 221, 219, 222, 222, 207, 181, 189, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 194, 197, + 201, 209, 217, 224, 224, 223, 218, 204, 203, 205, 207, 212, 216, 219, 217, 227, + 228, 228, 226, 224, 223, 224, 225, 229, 228, 228, 227, 225, 219, 213, 212, 219, + 219, 215, 211, 211, 212, 215, 214, 210, 215, 225, 226, 208, 180, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, + 181, 188, 200, 211, 219, 222, 224, 223, 216, 209, 202, 202, 205, 210, 212, 211, + 226, 227, 229, 229, 228, 227, 228, 229, 228, 225, 225, 224, 223, 220, 216, 215, + 215, 214, 211, 206, 207, 210, 213, 213, 213, 218, 227, 226, 205, 202, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 234, 195, 200, 209, 215, 220, 220, 223, 219, 211, 206, 203, 202, 205, + 206, 214, 216, 220, 223, 226, 227, 228, 230, 229, 225, 223, 222, 221, 218, 215, + 214, 216, 215, 211, 207, 208, 211, 217, 217, 228, 226, 225, 218, 200, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 235, 192, 199, 208, 216, 219, 223, 222, 220, 213, 205, 202, + 206, 210, 205, 208, 214, 217, 221, 223, 227, 228, 233, 228, 224, 221, 219, 216, + 212, 213, 221, 221, 215, 209, 209, 211, 215, 216, 237, 228, 219, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 233, 195, 199, 199, 205, 215, 221, 219, 215, + 216, 216, 216, 224, 220, 217, 214, 214, 216, 220, 221, 220, 221, 222, 223, 226, + 224, 223, 224, 222, 225, 220, 215, 210, 207, 209, 210, 217, 208, 210, 207, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 200, 191, 201, 210, 214, + 219, 224, 223, 219, 223, 222, 219, 216, 214, 213, 213, 212, 213, 213, 216, 221, + 224, 227, 228, 228, 226, 225, 219, 217, 216, 218, 217, 214, 207, 195, 195, 213, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 197, 199, + 203, 213, 222, 222, 218, 216, 218, 217, 216, 214, 213, 209, 206, 207, 208, 211, + 215, 220, 221, 223, 223, 228, 222, 217, 219, 223, 222, 215, 205, 201, 182, 173, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, + 204, 200, 203, 212, 215, 215, 211, 212, 214, 215, 214, 212, 212, 209, 209, 209, + 211, 213, 214, 215, 215, 214, 220, 218, 218, 222, 222, 215, 201, 187, 182, 158, + 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 240, 203, 204, 204, 204, 207, 207, 208, 208, 210, 212, 214, 215, 218, + 217, 217, 217, 216, 215, 215, 212, 213, 215, 222, 223, 218, 202, 181, 164, 150, + 131, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 209, 204, 201, 201, 201, 202, 202, 205, 209, 214, 216, + 222, 222, 222, 222, 221, 222, 222, 220, 219, 221, 226, 224, 208, 183, 156, 136, + 133, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 216, 198, 198, 199, 200, 203, 208, 212, + 216, 224, 224, 223, 222, 222, 224, 223, 221, 227, 224, 225, 222, 212, 190, 162, + 141, 134, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 198, 201, 202, 205, 208, + 211, 213, 223, 221, 221, 219, 219, 219, 218, 217, 222, 217, 219, 226, 230, 223, + 201, 180, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 213, + 214, 214, 214, 222, 220, 222, 228, 225, 217, 215, 220, 222, 219, 229, 234, 212, + 231, 221, 226, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 213, 210, 211, 208, 208, 214, 216, 215, 220, 226, 226, 225, 228, 223, + 196, 217, 219, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 241, 206, 202, 204, 207, 211, 215, 221, 226, 228, 232, + 220, 185, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 209, 207, 206, 220, 226, + 232, 220, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 184, 195, 193, 185, 186, 183, 177, 178, 196, + 206, 212, 209, 205, 207, 212, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 135, 125, 127, 139, 182, 192, 189, 182, 185, 182, 177, 180, + 185, 198, 210, 212, 209, 207, 209, 211, 210, 205, 202, 222, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 206, 131, 136, 134, 142, 157, 168, 180, 178, 171, 171, 167, 165, + 171, 196, 212, 212, 200, 202, 217, 212, 192, 213, 209, 206, 209, 214, 218, 217, + 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 214, 133, 139, 157, 176, 213, 142, 137, 165, 179, 178, 169, 168, 169, + 168, 177, 180, 185, 198, 209, 193, 171, 184, 214, 195, 193, 194, 196, 202, 207, + 205, 205, 207, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 146, 193, 179, 157, 148, 145, 138, 135, 137, 123, 132, 127, 120, 126, + 128, 126, 132, 151, 167, 169, 161, 173, 195, 188, 162, 186, 185, 185, 188, 192, + 194, 192, 192, 189, 195, 198, 199, 202, 223, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 162, + 177, 185, 158, 144, 137, 133, 131, 133, 134, 134, 134, 137, 128, 128, 117, 111, + 122, 125, 116, 114, 124, 125, 151, 179, 168, 137, 145, 181, 190, 190, 191, 193, + 194, 195, 195, 194, 205, 201, 190, 179, 179, 191, 201, 207, 199, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 129, 135, 138, + 136, 136, 142, 150, 153, 145, 134, 122, 114, 110, 111, 115, 117, 127, 122, 106, + 101, 114, 116, 102, 93, 95, 104, 111, 122, 144, 159, 150, 130, 165, 168, 173, + 180, 187, 194, 199, 203, 213, 210, 198, 186, 180, 183, 186, 185, 193, 194, 215, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 123, 109, 128, 138, 131, 136, + 138, 138, 137, 135, 127, 117, 120, 115, 108, 103, 104, 111, 119, 125, 119, 116, + 103, 100, 114, 116, 101, 93, 87, 74, 84, 113, 119, 101, 108, 134, 133, 137, + 144, 153, 163, 174, 183, 190, 190, 197, 200, 198, 194, 191, 182, 174, 185, 186, + 190, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 77, 104, 119, 127, 130, 132, 136, + 134, 130, 124, 127, 129, 121, 110, 108, 109, 109, 108, 110, 115, 120, 122, 102, + 105, 97, 97, 111, 114, 103, 98, 105, 86, 75, 83, 94, 92, 90, 93, 133, + 134, 137, 141, 146, 152, 159, 164, 172, 178, 186, 189, 193, 196, 195, 192, 177, + 180, 186, 191, 195, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 71, 90, 107, 113, 121, 134, 137, 132, + 138, 127, 123, 125, 125, 115, 105, 102, 108, 110, 113, 115, 118, 117, 112, 106, + 107, 124, 128, 110, 96, 98, 103, 101, 109, 98, 87, 80, 77, 78, 85, 95, + 104, 131, 152, 151, 140, 138, 145, 152, 155, 158, 161, 163, 171, 183, 190, 190, + 171, 172, 175, 180, 189, 194, 196, 216, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 183, 57, 90, 104, 116, 120, 126, 135, 135, + 127, 131, 122, 117, 116, 112, 102, 93, 90, 88, 100, 106, 99, 87, 81, 88, + 98, 113, 116, 111, 102, 98, 103, 103, 99, 86, 114, 120, 90, 69, 75, 80, + 73, 76, 96, 113, 120, 124, 131, 141, 144, 162, 159, 153, 148, 151, 161, 169, + 172, 175, 174, 175, 179, 185, 191, 192, 192, 193, 212, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 174, 8, 18, 57, 99, 109, 118, 124, 125, 130, 134, + 131, 120, 122, 117, 111, 107, 101, 91, 86, 86, 95, 97, 98, 100, 100, 100, + 99, 98, 101, 111, 117, 109, 94, 90, 102, 114, 93, 109, 124, 115, 91, 71, + 67, 73, 79, 87, 97, 107, 119, 131, 139, 139, 145, 149, 153, 153, 152, 153, + 151, 146, 167, 167, 169, 176, 186, 191, 190, 188, 190, 190, 189, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 17, 23, 40, 78, 113, 116, 120, 122, 123, 127, + 129, 123, 113, 109, 105, 99, 95, 89, 86, 86, 92, 94, 93, 96, 108, 114, + 109, 97, 88, 94, 106, 119, 117, 100, 90, 101, 118, 113, 105, 109, 122, 115, + 92, 77, 80, 74, 74, 78, 86, 99, 111, 118, 119, 129, 140, 150, 156, 158, + 157, 152, 146, 153, 151, 153, 167, 185, 196, 193, 187, 191, 191, 190, 189, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 175, 16, 22, 43, 77, 104, 114, 118, 118, 116, 117, + 118, 117, 111, 103, 96, 94, 89, 84, 83, 88, 93, 99, 96, 104, 114, 119, + 109, 94, 88, 92, 98, 95, 96, 106, 109, 105, 98, 94, 105, 115, 117, 113, + 118, 122, 103, 77, 65, 68, 73, 79, 86, 95, 107, 116, 134, 140, 142, 141, + 144, 150, 157, 159, 150, 142, 138, 149, 170, 188, 195, 195, 191, 192, 192, 191, + 188, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 14, 14, 14, 25, 61, 103, 120, 116, 115, 113, 112, + 110, 108, 104, 99, 93, 95, 96, 92, 89, 91, 98, 103, 105, 104, 101, 105, + 113, 112, 104, 101, 104, 91, 93, 95, 96, 98, 96, 90, 85, 103, 108, 117, + 124, 124, 115, 101, 90, 83, 88, 92, 93, 88, 89, 100, 114, 126, 134, 139, + 140, 140, 142, 145, 145, 157, 147, 135, 135, 147, 169, 189, 202, 194, 195, 194, + 192, 189, 185, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 172, 5, 7, 7, 17, 46, 84, 113, 118, 110, 102, 102, + 102, 101, 96, 91, 89, 89, 98, 100, 99, 98, 101, 104, 100, 94, 86, 73, + 72, 91, 108, 110, 105, 102, 92, 104, 108, 93, 80, 81, 92, 100, 109, 95, + 98, 121, 120, 98, 92, 104, 100, 102, 103, 96, 80, 70, 74, 88, 110, 125, + 139, 146, 147, 146, 141, 136, 152, 152, 148, 139, 136, 149, 177, 200, 197, 197, + 195, 193, 189, 186, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 171, 3, 2, 2, 5, 30, 76, 110, 117, 112, 108, 87, + 88, 91, 92, 88, 85, 86, 90, 96, 99, 99, 98, 100, 99, 87, 73, 67, + 71, 84, 103, 108, 102, 101, 109, 115, 117, 106, 86, 80, 94, 104, 103, 107, + 100, 90, 87, 96, 106, 104, 96, 112, 113, 111, 104, 86, 71, 71, 82, 109, + 123, 134, 139, 142, 148, 154, 156, 138, 153, 163, 153, 138, 140, 167, 196, 200, + 200, 197, 194, 190, 187, 185, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 5, 2, 10, 9, 23, 57, 98, 118, 111, 96, 87, + 78, 79, 81, 83, 85, 90, 95, 99, 106, 106, 107, 104, 92, 78, 70, 71, + 60, 70, 87, 102, 106, 104, 110, 120, 127, 107, 85, 94, 123, 131, 117, 107, + 77, 72, 82, 84, 86, 112, 129, 112, 113, 107, 103, 103, 89, 66, 57, 60, + 79, 92, 115, 136, 142, 141, 146, 156, 144, 157, 149, 149, 152, 131, 140, 194, + 200, 203, 203, 199, 190, 182, 181, 184, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 173, 6, 4, 14, 19, 40, 76, 104, 109, 98, 83, + 76, 73, 73, 73, 74, 78, 84, 91, 95, 107, 98, 88, 81, 74, 65, 62, + 64, 59, 68, 88, 109, 118, 116, 116, 120, 105, 102, 98, 112, 133, 127, 103, + 91, 69, 73, 89, 95, 95, 116, 129, 117, 124, 120, 115, 105, 86, 66, 54, + 53, 81, 87, 104, 123, 135, 140, 145, 151, 153, 160, 150, 147, 149, 131, 136, + 185, 203, 210, 214, 213, 204, 193, 186, 183, 207, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 171, 8, 5, 4, 14, 26, 59, 94, 108, 99, 85, + 74, 68, 68, 68, 70, 74, 80, 87, 94, 98, 97, 84, 70, 65, 64, 59, + 57, 58, 61, 72, 91, 113, 123, 121, 114, 110, 90, 102, 112, 127, 136, 118, + 92, 83, 106, 111, 125, 127, 122, 132, 140, 131, 121, 122, 116, 103, 89, 79, + 68, 60, 85, 85, 93, 110, 128, 139, 145, 149, 150, 153, 144, 144, 150, 138, + 143, 182, 208, 216, 222, 221, 213, 201, 190, 183, 181, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 4, 9, 3, 1, 15, 37, 71, 101, 104, 92, + 80, 72, 66, 60, 64, 71, 80, 88, 94, 95, 95, 79, 72, 67, 67, 67, + 62, 58, 58, 68, 80, 97, 112, 117, 111, 102, 97, 94, 109, 118, 123, 121, + 104, 91, 95, 127, 127, 131, 129, 126, 126, 128, 125, 121, 122, 112, 100, 97, + 100, 87, 68, 89, 89, 93, 105, 121, 135, 145, 150, 147, 148, 143, 145, 152, + 144, 145, 169, 205, 214, 219, 219, 215, 206, 194, 184, 183, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 171, 7, 10, 1, 3, 21, 61, 84, 101, 96, + 84, 75, 67, 58, 56, 62, 73, 84, 91, 91, 85, 79, 68, 66, 67, 68, + 64, 58, 60, 64, 79, 92, 106, 110, 106, 100, 95, 94, 97, 109, 113, 110, + 104, 93, 93, 109, 121, 122, 121, 123, 125, 121, 115, 116, 136, 131, 115, 102, + 107, 112, 93, 63, 90, 95, 99, 104, 112, 125, 139, 148, 153, 152, 149, 149, + 150, 142, 137, 144, 180, 192, 205, 213, 217, 214, 199, 184, 189, 187, 255, 255, + 255, 255, 255, 255, 255, 255, 7, 5, 8, 9, 3, 15, 44, 92, 98, 98, + 88, 74, 63, 57, 51, 68, 71, 78, 86, 89, 85, 75, 66, 68, 64, 60, + 56, 52, 53, 64, 75, 90, 101, 110, 107, 99, 97, 98, 100, 92, 101, 102, + 99, 96, 89, 92, 110, 120, 125, 124, 128, 131, 116, 104, 112, 142, 131, 114, + 108, 118, 124, 99, 68, 91, 101, 109, 107, 107, 116, 130, 139, 147, 145, 146, + 149, 148, 143, 139, 136, 146, 163, 181, 197, 210, 215, 202, 184, 192, 190, 255, + 255, 255, 255, 255, 255, 255, 255, 5, 4, 5, 8, 10, 36, 78, 108, 101, + 90, 80, 66, 56, 55, 59, 80, 77, 76, 77, 80, 78, 71, 65, 69, 60, + 53, 51, 55, 63, 78, 91, 94, 101, 103, 96, 91, 92, 93, 92, 87, 92, + 89, 89, 94, 92, 95, 111, 112, 120, 117, 114, 113, 95, 91, 114, 135, 125, + 115, 117, 128, 130, 108, 84, 96, 108, 116, 113, 110, 115, 124, 129, 138, 137, + 141, 144, 141, 145, 147, 141, 129, 141, 152, 164, 183, 198, 195, 183, 192, 190, + 255, 255, 255, 255, 255, 255, 255, 1, 4, 2, 3, 6, 14, 52, 103, 107, + 95, 82, 73, 63, 54, 61, 74, 80, 72, 64, 62, 65, 68, 68, 66, 66, + 56, 50, 56, 67, 80, 93, 103, 95, 98, 93, 85, 82, 84, 83, 77, 90, + 90, 83, 84, 94, 97, 101, 117, 108, 119, 112, 104, 103, 91, 104, 145, 136, + 128, 120, 123, 131, 127, 107, 90, 105, 116, 122, 119, 116, 120, 123, 123, 143, + 138, 142, 140, 135, 141, 145, 136, 132, 132, 129, 130, 150, 176, 185, 182, 191, + 189, 210, 255, 255, 255, 255, 255, 255, 6, 11, 9, 0, 7, 56, 100, 108, + 92, 88, 71, 52, 46, 59, 72, 76, 78, 74, 69, 68, 70, 73, 73, 71, + 67, 61, 75, 101, 103, 86, 82, 95, 87, 92, 94, 87, 75, 69, 73, 79, + 81, 66, 71, 81, 83, 99, 112, 104, 91, 91, 94, 95, 91, 93, 109, 128, + 130, 116, 126, 132, 135, 136, 112, 92, 119, 121, 133, 127, 104, 109, 122, 115, + 131, 137, 141, 136, 133, 134, 137, 139, 136, 137, 130, 118, 115, 129, 146, 155, + 169, 178, 184, 255, 255, 255, 255, 255, 255, 18, 9, 7, 14, 41, 86, 108, + 99, 84, 79, 66, 54, 54, 67, 79, 83, 79, 70, 60, 57, 62, 71, 80, + 84, 85, 94, 96, 92, 93, 93, 81, 64, 89, 86, 80, 73, 67, 69, 73, + 79, 72, 71, 77, 85, 84, 88, 92, 88, 86, 88, 88, 90, 90, 94, 112, + 130, 127, 121, 126, 140, 138, 130, 119, 99, 117, 122, 132, 133, 117, 111, 117, + 119, 127, 132, 136, 133, 132, 134, 137, 137, 132, 130, 131, 134, 128, 119, 121, + 129, 139, 161, 182, 255, 255, 255, 255, 255, 180, 38, 25, 27, 47, 74, 101, + 104, 86, 81, 72, 61, 57, 64, 77, 85, 86, 73, 72, 70, 75, 82, 87, + 88, 87, 105, 93, 85, 84, 74, 59, 56, 64, 85, 78, 68, 66, 67, 71, + 70, 69, 62, 71, 73, 75, 78, 75, 71, 77, 80, 79, 79, 84, 90, 99, + 115, 130, 124, 127, 123, 145, 137, 117, 126, 110, 115, 128, 133, 134, 129, 116, + 111, 121, 127, 130, 132, 130, 131, 134, 134, 130, 128, 122, 128, 141, 133, 111, + 102, 112, 118, 138, 163, 255, 255, 255, 255, 255, 42, 46, 42, 56, 77, 87, + 95, 97, 89, 85, 68, 53, 56, 72, 84, 88, 86, 81, 82, 85, 90, 96, + 96, 90, 84, 90, 73, 64, 62, 46, 31, 49, 84, 75, 71, 68, 67, 68, + 67, 61, 56, 56, 68, 60, 57, 71, 70, 65, 79, 70, 71, 74, 81, 91, + 103, 115, 123, 119, 131, 116, 138, 124, 98, 127, 112, 115, 139, 140, 130, 131, + 123, 111, 118, 132, 133, 132, 130, 130, 132, 130, 123, 123, 118, 121, 129, 125, + 112, 109, 117, 118, 123, 139, 163, 255, 255, 255, 255, 45, 46, 45, 65, 86, + 91, 94, 99, 97, 86, 61, 45, 55, 77, 89, 90, 88, 99, 91, 82, 78, + 78, 80, 81, 80, 55, 62, 55, 36, 34, 54, 74, 81, 70, 69, 67, 64, + 59, 55, 52, 51, 57, 64, 55, 55, 73, 75, 68, 78, 62, 67, 75, 83, + 93, 103, 109, 111, 114, 127, 106, 120, 104, 86, 122, 111, 116, 148, 145, 123, + 125, 127, 116, 112, 129, 131, 131, 130, 131, 133, 130, 124, 116, 118, 119, 116, + 117, 120, 122, 123, 116, 119, 135, 161, 255, 255, 255, 255, 48, 56, 51, 63, + 83, 91, 96, 95, 83, 76, 54, 43, 59, 79, 87, 90, 92, 92, 84, 75, + 70, 67, 65, 63, 60, 47, 41, 39, 46, 63, 78, 78, 71, 68, 67, 61, + 52, 45, 44, 51, 58, 62, 64, 61, 65, 77, 77, 68, 66, 60, 69, 79, + 86, 92, 100, 102, 99, 106, 116, 101, 100, 88, 88, 117, 108, 121, 145, 145, + 125, 119, 126, 119, 109, 116, 122, 126, 126, 128, 132, 132, 129, 113, 119, 121, + 116, 115, 122, 121, 116, 107, 116, 140, 168, 255, 255, 255, 255, 48, 56, 56, + 70, 84, 88, 93, 87, 68, 62, 51, 53, 70, 78, 76, 81, 93, 72, 67, + 63, 61, 60, 55, 48, 43, 52, 37, 43, 72, 90, 82, 73, 75, 64, 61, + 55, 48, 44, 48, 58, 66, 66, 61, 63, 67, 65, 65, 65, 57, 64, 74, + 83, 86, 88, 93, 94, 91, 99, 105, 102, 88, 81, 103, 119, 108, 125, 129, + 136, 134, 121, 119, 118, 111, 104, 113, 120, 122, 123, 126, 129, 128, 120, 118, + 117, 117, 115, 112, 110, 110, 107, 107, 123, 156, 183, 255, 255, 255, 41, 37, + 52, 76, 88, 87, 91, 90, 75, 56, 54, 66, 81, 77, 65, 71, 90, 66, + 55, 42, 34, 36, 40, 44, 46, 42, 64, 79, 80, 83, 92, 90, 79, 58, + 56, 55, 54, 55, 60, 66, 71, 69, 57, 61, 61, 47, 52, 65, 59, 69, + 80, 87, 85, 85, 88, 90, 88, 94, 99, 104, 83, 81, 115, 122, 109, 129, + 114, 127, 144, 126, 112, 116, 116, 99, 109, 117, 118, 116, 119, 121, 121, 130, + 115, 110, 116, 114, 102, 102, 112, 119, 96, 92, 131, 180, 255, 255, 255, 26, + 36, 23, 66, 90, 82, 88, 84, 70, 54, 58, 65, 70, 71, 69, 70, 73, + 64, 46, 44, 54, 58, 59, 55, 42, 44, 66, 85, 91, 96, 96, 79, 57, + 53, 62, 65, 58, 53, 59, 67, 71, 70, 62, 55, 55, 60, 62, 61, 59, + 87, 88, 87, 85, 83, 82, 84, 86, 96, 97, 91, 86, 91, 110, 123, 126, + 122, 123, 116, 116, 125, 121, 110, 109, 113, 112, 111, 112, 114, 116, 115, 114, + 128, 121, 117, 118, 118, 116, 111, 108, 106, 114, 104, 114, 165, 255, 255, 255, + 11, 19, 16, 65, 92, 85, 88, 82, 70, 56, 66, 74, 71, 64, 62, 64, + 68, 58, 58, 70, 71, 56, 49, 57, 62, 70, 79, 83, 79, 77, 80, 74, + 66, 60, 65, 65, 58, 55, 59, 64, 67, 72, 56, 52, 66, 69, 62, 67, + 85, 78, 79, 81, 82, 83, 86, 90, 93, 89, 95, 94, 89, 94, 108, 118, + 120, 114, 114, 105, 107, 122, 122, 110, 106, 113, 111, 110, 111, 113, 114, 114, + 112, 107, 115, 115, 111, 108, 111, 110, 106, 100, 108, 100, 108, 154, 212, 255, + 171, 5, 5, 13, 69, 95, 87, 85, 75, 67, 60, 74, 78, 67, 55, 56, + 62, 67, 75, 75, 82, 75, 51, 45, 63, 77, 78, 84, 88, 84, 74, 65, + 60, 59, 64, 66, 63, 58, 58, 63, 66, 66, 69, 60, 60, 69, 71, 70, + 80, 97, 79, 79, 80, 80, 80, 82, 85, 87, 83, 92, 96, 94, 96, 106, + 113, 113, 110, 108, 98, 101, 118, 119, 107, 102, 106, 105, 105, 108, 111, 115, + 115, 114, 104, 119, 126, 119, 112, 115, 118, 116, 97, 103, 95, 101, 140, 179, + 255, 8, 9, 2, 21, 77, 97, 86, 81, 69, 66, 67, 75, 71, 56, 50, + 60, 71, 74, 98, 78, 64, 56, 46, 53, 69, 76, 77, 80, 85, 82, 69, + 54, 50, 55, 64, 62, 59, 59, 63, 68, 69, 68, 63, 75, 74, 62, 63, + 81, 87, 79, 78, 79, 80, 80, 79, 79, 81, 82, 80, 92, 99, 96, 97, + 106, 110, 110, 110, 110, 101, 101, 112, 112, 103, 103, 97, 97, 98, 103, 108, + 114, 117, 118, 100, 107, 113, 115, 109, 103, 103, 109, 104, 102, 93, 95, 130, + 172, 255, 8, 8, 5, 30, 82, 94, 84, 79, 68, 72, 72, 69, 57, 46, + 52, 70, 81, 82, 90, 61, 43, 42, 47, 60, 70, 68, 75, 74, 71, 63, + 51, 46, 55, 67, 65, 61, 59, 62, 67, 70, 69, 68, 64, 73, 70, 61, + 65, 80, 78, 63, 70, 73, 76, 79, 81, 83, 86, 88, 84, 95, 99, 96, + 98, 106, 110, 108, 103, 109, 103, 100, 105, 103, 99, 106, 94, 94, 94, 98, + 103, 109, 112, 114, 111, 101, 102, 114, 113, 98, 93, 102, 113, 105, 93, 94, + 122, 166, 255, 6, 5, 7, 36, 82, 87, 81, 77, 67, 78, 72, 59, 46, + 48, 63, 77, 79, 77, 51, 38, 38, 47, 50, 58, 65, 63, 57, 63, 64, + 59, 51, 50, 57, 65, 68, 64, 63, 69, 71, 69, 64, 63, 68, 56, 54, + 68, 75, 68, 64, 67, 75, 78, 80, 81, 80, 80, 81, 82, 87, 95, 97, + 95, 99, 107, 108, 103, 92, 101, 98, 93, 95, 94, 95, 106, 99, 96, 94, + 94, 96, 99, 101, 101, 118, 103, 101, 115, 116, 104, 97, 103, 114, 103, 95, + 93, 111, 155, 209, 4, 2, 9, 41, 80, 81, 75, 72, 61, 75, 66, 50, + 46, 62, 76, 76, 65, 58, 28, 26, 39, 53, 50, 52, 57, 55, 43, 55, + 63, 58, 54, 57, 59, 58, 65, 63, 65, 73, 74, 68, 64, 64, 66, 51, + 51, 69, 73, 61, 60, 73, 85, 87, 87, 84, 80, 77, 75, 75, 87, 93, + 94, 94, 101, 109, 105, 95, 91, 97, 91, 86, 91, 90, 90, 100, 101, 97, + 93, 91, 91, 92, 92, 91, 96, 94, 93, 95, 100, 102, 99, 93, 101, 96, + 96, 93, 97, 139, 178, 0, 0, 13, 45, 81, 77, 71, 67, 52, 66, 61, + 47, 50, 75, 86, 70, 49, 41, 31, 27, 36, 49, 49, 50, 52, 47, 51, + 60, 57, 43, 39, 55, 67, 68, 59, 59, 66, 75, 77, 71, 67, 67, 58, + 57, 59, 62, 62, 62, 66, 70, 81, 83, 85, 84, 82, 80, 79, 79, 84, + 89, 92, 94, 102, 110, 103, 89, 97, 98, 89, 83, 89, 88, 85, 91, 99, + 95, 90, 87, 87, 88, 89, 87, 88, 101, 101, 92, 97, 115, 115, 100, 89, + 88, 97, 91, 86, 125, 171, 60, 3, 15, 67, 75, 68, 68, 62, 64, 63, + 48, 45, 53, 72, 73, 53, 31, 25, 32, 39, 47, 51, 48, 45, 39, 37, + 59, 53, 46, 44, 47, 54, 58, 60, 65, 67, 69, 71, 71, 69, 66, 65, + 56, 57, 61, 65, 68, 71, 73, 74, 81, 87, 89, 86, 81, 80, 80, 80, + 93, 84, 84, 97, 105, 101, 95, 94, 102, 98, 92, 85, 82, 81, 83, 84, + 80, 88, 94, 95, 89, 85, 87, 90, 95, 95, 83, 87, 104, 99, 96, 118, + 107, 93, 75, 84, 84, 87, 140, 200, 5, 11, 62, 68, 61, 63, 58, 61, + 59, 43, 50, 64, 74, 61, 38, 29, 35, 34, 40, 46, 42, 35, 34, 40, + 47, 54, 49, 44, 46, 52, 57, 58, 56, 59, 60, 62, 63, 64, 64, 64, + 63, 57, 60, 62, 67, 70, 72, 76, 77, 84, 86, 88, 85, 82, 82, 82, + 82, 94, 90, 90, 96, 99, 95, 88, 84, 94, 90, 86, 80, 77, 76, 76, + 77, 82, 85, 88, 89, 87, 84, 82, 82, 82, 94, 88, 85, 99, 101, 99, + 110, 104, 95, 74, 76, 71, 77, 130, 255, 7, 11, 60, 63, 55, 59, 58, + 61, 56, 43, 53, 66, 69, 53, 34, 30, 39, 35, 44, 50, 44, 33, 31, + 42, 54, 50, 47, 44, 49, 58, 62, 58, 52, 51, 52, 55, 57, 58, 59, + 60, 60, 60, 62, 65, 68, 70, 74, 79, 82, 87, 86, 85, 85, 85, 84, + 85, 86, 94, 97, 98, 97, 96, 95, 88, 80, 86, 84, 80, 76, 74, 72, + 72, 72, 79, 79, 79, 83, 86, 86, 82, 78, 74, 92, 88, 76, 83, 94, + 98, 101, 98, 99, 84, 79, 70, 73, 123, 255, 5, 14, 61, 61, 52, 60, + 63, 65, 57, 46, 52, 58, 60, 54, 44, 37, 36, 42, 52, 60, 56, 45, + 41, 45, 52, 50, 46, 44, 50, 58, 61, 55, 48, 45, 47, 52, 55, 57, + 58, 57, 57, 60, 63, 65, 68, 69, 73, 80, 84, 89, 84, 82, 84, 85, + 83, 85, 88, 90, 99, 102, 98, 97, 99, 95, 85, 85, 84, 81, 79, 76, + 73, 72, 72, 71, 72, 74, 79, 84, 87, 84, 83, 79, 87, 82, 71, 70, + 79, 89, 95, 92, 104, 96, 91, 79, 81, 124, 255, 2, 16, 61, 59, 48, + 61, 67, 68, 56, 40, 51, 59, 59, 54, 50, 45, 43, 55, 59, 61, 60, + 55, 50, 49, 50, 50, 45, 42, 45, 51, 53, 49, 42, 42, 46, 52, 58, + 59, 58, 55, 53, 58, 61, 64, 66, 66, 71, 79, 85, 88, 83, 82, 85, + 85, 81, 83, 90, 89, 98, 101, 96, 96, 100, 97, 89, 85, 85, 83, 81, + 77, 74, 73, 71, 63, 66, 71, 74, 75, 78, 79, 81, 85, 80, 81, 82, + 75, 70, 77, 86, 89, 102, 94, 89, 76, 80, 128, 255, 0, 14, 59, 55, + 44, 60, 70, 69, 52, 30, 54, 69, 63, 50, 47, 53, 59, 62, 58, 53, + 53, 54, 55, 53, 51, 45, 42, 40, 40, 43, 43, 41, 38, 43, 47, 53, + 58, 58, 57, 53, 51, 57, 59, 63, 63, 62, 68, 77, 85, 87, 83, 84, + 89, 84, 79, 80, 90, 94, 95, 94, 92, 92, 95, 91, 86, 88, 86, 84, + 81, 76, 74, 71, 71, 62, 66, 68, 69, 67, 67, 69, 71, 81, 72, 83, + 98, 87, 75, 75, 76, 87, 91, 78, 74, 64, 72, 128, 255, 1, 13, 57, + 52, 43, 61, 73, 69, 49, 36, 58, 69, 59, 48, 52, 61, 65, 53, 51, + 50, 54, 58, 58, 53, 49, 42, 43, 44, 45, 44, 43, 42, 41, 46, 49, + 50, 52, 53, 51, 50, 49, 55, 58, 61, 61, 60, 66, 77, 86, 86, 84, + 89, 93, 86, 76, 78, 92, 100, 93, 87, 91, 93, 92, 87, 86, 92, 89, + 85, 82, 76, 74, 71, 71, 68, 68, 66, 67, 68, 68, 66, 66, 72, 67, + 81, 93, 84, 83, 85, 75, 81, 78, 65, 69, 63, 68, 124, 255, 171, 13, + 58, 53, 45, 64, 76, 71, 48, 50, 60, 59, 50, 52, 64, 68, 61, 39, + 43, 52, 61, 66, 62, 53, 46, 40, 45, 50, 52, 49, 47, 47, 46, 49, + 49, 47, 47, 46, 47, 47, 48, 55, 58, 60, 59, 58, 63, 76, 85, 85, + 86, 93, 97, 87, 74, 79, 93, 104, 90, 84, 91, 96, 93, 90, 92, 97, + 94, 89, 83, 78, 75, 74, 73, 73, 67, 63, 66, 72, 76, 72, 66, 68, + 65, 75, 76, 70, 87, 96, 78, 74, 71, 63, 76, 72, 71, 122, 255, 255, + 9, 34, 62, 45, 56, 90, 66, 41, 52, 55, 55, 57, 65, 70, 57, 37, + 37, 49, 61, 64, 62, 60, 55, 50, 49, 45, 45, 50, 50, 45, 44, 49, + 51, 53, 54, 54, 53, 53, 55, 56, 59, 57, 56, 55, 58, 68, 78, 87, + 90, 97, 100, 96, 83, 64, 71, 103, 103, 102, 98, 94, 92, 92, 91, 92, + 96, 95, 91, 89, 85, 82, 77, 74, 73, 73, 70, 68, 67, 69, 69, 71, + 72, 71, 68, 67, 67, 69, 70, 70, 75, 74, 69, 67, 68, 77, 186, 255, + 255, 7, 25, 52, 46, 59, 89, 68, 47, 51, 50, 53, 59, 61, 53, 44, + 38, 46, 52, 58, 58, 56, 56, 53, 47, 49, 44, 44, 47, 48, 46, 49, + 53, 55, 55, 55, 56, 55, 54, 54, 53, 61, 58, 55, 54, 57, 66, 79, + 87, 95, 100, 98, 96, 87, 71, 79, 108, 106, 107, 103, 95, 94, 99, 99, + 95, 100, 99, 95, 93, 88, 85, 80, 77, 76, 75, 75, 73, 72, 71, 70, + 72, 77, 76, 73, 72, 71, 70, 68, 67, 69, 66, 62, 66, 72, 82, 255, + 255, 255, 5, 13, 36, 48, 66, 85, 68, 56, 56, 54, 60, 66, 57, 40, + 38, 47, 53, 54, 53, 50, 50, 52, 50, 45, 48, 43, 41, 43, 45, 46, + 52, 56, 51, 51, 52, 53, 54, 54, 52, 49, 54, 54, 55, 58, 65, 78, + 93, 102, 105, 106, 102, 97, 92, 81, 88, 116, 112, 116, 110, 99, 98, 107, + 108, 99, 105, 105, 102, 99, 93, 88, 85, 82, 80, 80, 80, 79, 77, 75, + 73, 73, 79, 79, 77, 75, 73, 70, 65, 61, 62, 58, 57, 64, 71, 79, + 255, 255, 255, 6, 4, 22, 50, 72, 78, 66, 61, 57, 64, 69, 63, 47, + 35, 39, 51, 50, 49, 47, 45, 48, 52, 51, 45, 46, 44, 42, 43, 44, + 47, 51, 54, 46, 46, 48, 51, 55, 56, 54, 52, 53, 56, 63, 70, 80, + 93, 105, 112, 115, 116, 110, 102, 96, 87, 97, 124, 119, 125, 118, 103, 103, + 113, 113, 102, 111, 111, 108, 105, 99, 94, 90, 90, 84, 85, 86, 86, 83, + 79, 76, 75, 81, 79, 73, 71, 69, 66, 59, 55, 57, 54, 56, 64, 66, + 69, 255, 255, 255, 9, 3, 13, 54, 75, 68, 62, 63, 51, 69, 72, 51, + 33, 35, 43, 46, 39, 40, 42, 44, 50, 55, 52, 45, 42, 43, 44, 44, + 45, 46, 47, 47, 46, 45, 49, 52, 56, 58, 58, 57, 63, 69, 78, 88, + 97, 104, 111, 114, 124, 127, 121, 111, 103, 94, 104, 130, 128, 130, 120, 107, + 107, 115, 114, 103, 115, 117, 115, 112, 105, 101, 99, 98, 91, 92, 94, 94, + 92, 87, 83, 81, 83, 78, 71, 69, 66, 62, 56, 51, 51, 54, 61, 67, + 64, 68, 255, 255, 255, 174, 5, 10, 57, 77, 60, 59, 63, 49, 70, 71, + 48, 35, 45, 49, 42, 30, 36, 42, 47, 52, 55, 52, 45, 40, 44, 45, + 44, 44, 47, 47, 44, 44, 47, 50, 53, 56, 58, 62, 65, 71, 79, 91, + 105, 114, 121, 127, 129, 131, 135, 128, 120, 114, 107, 114, 134, 135, 131, 120, + 112, 112, 116, 114, 108, 120, 122, 122, 120, 113, 108, 108, 110, 103, 105, 105, + 106, 102, 100, 95, 94, 91, 87, 79, 76, 73, 66, 56, 49, 46, 55, 63, + 69, 70, 140, 255, 255, 255, 255, 7, 11, 59, 76, 54, 60, 64, 49, 61, + 63, 54, 49, 53, 49, 37, 29, 39, 47, 50, 50, 51, 48, 43, 39, 43, + 43, 40, 42, 48, 50, 46, 49, 54, 61, 65, 67, 73, 83, 92, 93, 99, + 110, 121, 129, 136, 143, 147, 139, 139, 130, 126, 130, 127, 125, 137, 140, 127, + 117, 117, 119, 119, 117, 118, 125, 128, 129, 127, 121, 116, 117, 120, 116, 118, + 118, 119, 117, 115, 111, 110, 106, 102, 96, 93, 88, 78, 62, 50, 44, 55, + 62, 66, 78, 255, 255, 255, 255, 255, 9, 12, 61, 76, 52, 61, 65, 44, + 46, 50, 56, 57, 51, 39, 30, 33, 42, 50, 51, 48, 47, 44, 41, 39, + 42, 41, 37, 39, 48, 52, 50, 59, 67, 77, 84, 88, 99, 114, 128, 126, + 129, 133, 135, 137, 140, 144, 147, 145, 141, 129, 129, 142, 142, 135, 137, 142, + 124, 115, 120, 125, 120, 120, 126, 129, 133, 135, 132, 127, 123, 124, 126, 127, + 127, 128, 128, 127, 125, 123, 122, 118, 114, 110, 108, 102, 88, 66, 51, 46, + 56, 58, 61, 82, 255, 255, 255, 255, 255, 5, 23, 71, 73, 50, 61, 72, + 48, 43, 44, 53, 55, 45, 33, 28, 42, 43, 45, 46, 45, 44, 43, 42, + 36, 33, 34, 42, 47, 47, 50, 57, 73, 83, 94, 99, 108, 124, 138, 146, + 149, 151, 153, 156, 155, 154, 151, 150, 149, 137, 116, 123, 128, 122, 132, 131, + 129, 120, 115, 119, 124, 125, 129, 135, 132, 128, 128, 134, 136, 132, 132, 136, + 138, 134, 134, 128, 119, 123, 126, 116, 116, 122, 131, 123, 119, 115, 80, 52, + 54, 62, 50, 68, 76, 255, 255, 255, 255, 255, 176, 28, 65, 66, 50, 65, + 74, 47, 41, 41, 50, 53, 47, 39, 35, 44, 44, 44, 44, 42, 41, 39, + 39, 44, 41, 42, 48, 50, 53, 61, 70, 91, 100, 111, 117, 126, 140, 152, + 158, 165, 162, 156, 149, 145, 146, 153, 159, 146, 142, 128, 136, 135, 123, 125, + 118, 127, 121, 119, 125, 130, 130, 132, 136, 135, 132, 134, 139, 139, 133, 132, + 134, 133, 134, 140, 141, 135, 130, 123, 110, 122, 123, 129, 138, 145, 149, 116, + 54, 46, 53, 47, 66, 138, 255, 255, 255, 255, 255, 255, 28, 52, 54, 50, + 70, 74, 52, 45, 41, 45, 48, 47, 44, 41, 46, 46, 43, 41, 39, 37, + 37, 36, 43, 42, 42, 44, 46, 53, 68, 81, 106, 116, 127, 133, 140, 152, + 161, 165, 167, 166, 163, 158, 152, 148, 149, 153, 146, 149, 137, 141, 137, 124, + 127, 117, 124, 122, 124, 131, 136, 136, 136, 138, 140, 140, 140, 143, 141, 135, + 133, 134, 138, 131, 125, 125, 126, 131, 138, 142, 144, 143, 139, 154, 153, 163, + 151, 60, 40, 46, 51, 72, 255, 255, 255, 255, 255, 255, 255, 22, 42, 48, + 54, 75, 70, 59, 51, 42, 41, 43, 46, 44, 43, 47, 46, 43, 41, 38, + 38, 39, 39, 40, 41, 41, 40, 43, 56, 78, 94, 119, 128, 138, 143, 150, + 159, 166, 166, 166, 166, 167, 168, 166, 163, 158, 155, 163, 164, 146, 142, 137, + 128, 136, 133, 121, 122, 126, 132, 138, 139, 141, 142, 143, 143, 146, 147, 144, + 140, 138, 137, 137, 136, 135, 141, 143, 132, 125, 132, 134, 142, 145, 168, 151, + 162, 168, 59, 39, 46, 72, 95, 255, 255, 255, 255, 255, 255, 255, 24, 46, + 56, 64, 78, 64, 60, 52, 42, 38, 41, 47, 48, 46, 45, 45, 43, 42, + 41, 42, 44, 45, 43, 45, 46, 46, 52, 71, 97, 116, 135, 144, 152, 156, + 162, 168, 172, 171, 174, 171, 167, 167, 166, 159, 147, 137, 123, 122, 108, 113, + 111, 102, 113, 114, 115, 119, 124, 130, 136, 141, 145, 147, 145, 147, 148, 149, + 150, 148, 142, 137, 134, 124, 106, 100, 96, 77, 74, 97, 98, 107, 121, 160, + 152, 169, 171, 46, 36, 51, 104, 127, 255, 255, 255, 255, 255, 255, 255, 180, + 57, 68, 73, 79, 59, 54, 47, 40, 34, 39, 49, 51, 50, 43, 45, 44, + 45, 45, 46, 48, 49, 43, 47, 50, 52, 64, 90, 117, 135, 148, 155, 161, + 163, 168, 174, 176, 173, 176, 174, 170, 162, 146, 117, 83, 60, 43, 46, 51, + 84, 96, 83, 89, 91, 106, 114, 122, 128, 135, 144, 149, 149, 149, 151, 154, + 157, 158, 153, 139, 125, 98, 78, 42, 27, 28, 25, 54, 111, 107, 86, 87, + 120, 135, 172, 164, 43, 39, 60, 136, 156, 255, 255, 255, 255, 255, 255, 255, + 255, 58, 70, 71, 75, 56, 51, 46, 40, 34, 39, 50, 52, 49, 42, 44, + 46, 46, 47, 48, 48, 48, 42, 47, 51, 57, 75, 104, 133, 148, 158, 163, + 165, 167, 172, 177, 177, 174, 171, 168, 158, 137, 106, 69, 35, 16, 26, 29, + 48, 104, 123, 97, 92, 92, 97, 110, 122, 130, 137, 148, 151, 149, 154, 158, + 163, 167, 168, 156, 129, 102, 54, 50, 33, 36, 47, 40, 67, 133, 134, 92, + 86, 103, 125, 170, 151, 50, 52, 75, 162, 172, 255, 255, 255, 255, 255, 255, + 255, 255, 50, 64, 64, 71, 54, 53, 50, 42, 35, 39, 47, 47, 42, 42, + 44, 46, 47, 47, 46, 46, 45, 44, 49, 54, 62, 85, 117, 145, 158, 166, + 171, 172, 173, 177, 182, 182, 178, 171, 159, 133, 97, 65, 47, 44, 50, 48, + 46, 64, 122, 134, 96, 77, 75, 92, 108, 125, 133, 142, 150, 152, 149, 160, + 165, 171, 176, 176, 158, 118, 84, 64, 57, 35, 34, 43, 34, 64, 138, 125, + 93, 109, 125, 142, 177, 142, 55, 68, 89, 180, 179, 255, 255, 255, 255, 255, + 255, 255, 255, 53, 74, 69, 56, 49, 47, 47, 37, 47, 58, 50, 45, 47, + 42, 48, 51, 50, 49, 47, 45, 42, 35, 52, 61, 77, 115, 145, 155, 157, + 169, 171, 173, 175, 176, 174, 169, 164, 158, 138, 119, 121, 134, 140, 128, 112, + 102, 102, 106, 112, 116, 114, 114, 116, 125, 130, 138, 146, 153, 157, 156, 154, + 167, 170, 173, 175, 172, 160, 133, 110, 91, 88, 92, 100, 103, 105, 123, 144, + 156, 174, 178, 168, 155, 169, 154, 70, 122, 153, 179, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 60, 77, 60, 48, 53, 41, 40, 37, 44, 48, 45, 44, + 44, 41, 50, 56, 53, 47, 42, 41, 41, 42, 61, 75, 92, 125, 153, 160, + 165, 171, 173, 174, 176, 178, 177, 172, 169, 149, 153, 158, 163, 164, 161, 154, + 149, 143, 140, 139, 141, 138, 131, 127, 127, 139, 138, 140, 148, 158, 163, 161, + 157, 162, 166, 172, 179, 182, 176, 156, 137, 133, 125, 127, 136, 142, 147, 161, + 179, 171, 177, 182, 187, 178, 185, 179, 119, 151, 172, 186, 186, 255, 255, 255, + 255, 255, 255, 255, 255, 191, 74, 46, 36, 50, 38, 35, 43, 47, 44, 50, + 54, 51, 45, 54, 61, 57, 48, 40, 39, 42, 49, 74, 91, 109, 139, 159, + 166, 172, 174, 176, 175, 177, 179, 180, 177, 176, 169, 175, 177, 174, 165, 161, + 163, 168, 162, 158, 154, 153, 146, 137, 131, 130, 140, 137, 135, 143, 156, 164, + 163, 159, 168, 173, 176, 182, 187, 183, 168, 151, 142, 132, 129, 136, 142, 147, + 158, 170, 176, 174, 179, 198, 194, 192, 195, 164, 176, 183, 185, 183, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 62, 37, 28, 39, 34, 32, 49, 47, 46, + 64, 65, 59, 58, 60, 61, 59, 50, 43, 43, 46, 54, 81, 103, 123, 148, + 162, 165, 172, 176, 176, 175, 176, 179, 180, 181, 179, 182, 175, 167, 163, 162, + 161, 156, 152, 146, 143, 143, 144, 141, 135, 132, 133, 135, 135, 136, 146, 158, + 166, 167, 166, 176, 179, 180, 182, 185, 184, 172, 160, 154, 147, 142, 143, 143, + 146, 154, 164, 173, 174, 178, 199, 197, 192, 199, 180, 177, 181, 180, 179, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 52, 36, 27, 29, 30, 30, 46, 41, + 53, 84, 73, 64, 69, 61, 55, 54, 53, 48, 48, 51, 60, 87, 110, 132, + 153, 163, 164, 172, 176, 175, 174, 175, 177, 180, 181, 180, 166, 164, 165, 172, + 177, 174, 161, 149, 145, 142, 143, 147, 147, 144, 143, 147, 143, 148, 154, 162, + 167, 172, 174, 176, 171, 174, 177, 180, 186, 190, 184, 176, 173, 172, 171, 168, + 162, 161, 170, 181, 176, 190, 191, 200, 200, 198, 201, 183, 169, 176, 178, 179, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 51, 39, 30, 26, 32, 36, 46, + 36, 75, 116, 87, 74, 72, 60, 52, 54, 56, 53, 54, 57, 71, 95, 117, + 137, 158, 166, 166, 174, 175, 175, 174, 176, 178, 180, 180, 179, 169, 173, 175, + 176, 176, 173, 170, 170, 163, 161, 160, 162, 161, 158, 157, 160, 157, 164, 171, + 174, 173, 171, 173, 177, 171, 175, 178, 181, 187, 193, 190, 185, 175, 181, 184, + 181, 175, 174, 182, 192, 184, 204, 201, 202, 202, 202, 202, 182, 170, 177, 182, + 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 36, 28, 29, 39, 46, + 47, 34, 100, 149, 99, 85, 69, 59, 57, 63, 65, 60, 61, 68, 80, 101, + 119, 140, 161, 167, 167, 174, 176, 176, 176, 178, 179, 181, 179, 177, 184, 182, + 177, 172, 168, 169, 174, 180, 177, 174, 172, 172, 171, 166, 165, 168, 169, 171, + 174, 174, 173, 172, 172, 173, 174, 177, 179, 181, 186, 192, 190, 185, 183, 188, + 192, 191, 188, 189, 193, 196, 191, 208, 199, 200, 207, 203, 202, 190, 175, 178, + 181, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 32, 22, 31, 39, + 48, 41, 27, 112, 165, 101, 86, 67, 62, 66, 73, 73, 66, 68, 79, 86, + 103, 118, 139, 162, 168, 167, 174, 177, 178, 178, 180, 181, 181, 179, 177, 177, + 174, 172, 176, 182, 182, 176, 170, 179, 175, 174, 175, 174, 170, 171, 174, 177, + 175, 172, 173, 175, 177, 178, 177, 167, 170, 174, 177, 184, 192, 192, 189, 186, + 188, 190, 189, 190, 191, 189, 188, 198, 208, 194, 203, 212, 204, 204, 200, 179, + 177, 177, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 26, 27, + 34, 48, 46, 24, 122, 158, 110, 80, 62, 72, 82, 82, 78, 80, 84, 89, + 98, 108, 124, 143, 157, 167, 173, 176, 181, 183, 182, 182, 180, 179, 177, 177, + 178, 177, 175, 174, 174, 176, 178, 179, 180, 185, 183, 177, 175, 178, 176, 171, + 176, 182, 182, 175, 172, 176, 179, 176, 170, 168, 169, 174, 182, 189, 190, 191, + 181, 195, 197, 186, 182, 194, 198, 193, 195, 200, 202, 206, 205, 204, 202, 201, + 179, 180, 181, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 34, + 22, 34, 58, 41, 32, 89, 152, 112, 92, 81, 75, 67, 70, 94, 120, 129, + 123, 117, 118, 128, 145, 159, 164, 169, 175, 176, 178, 179, 180, 181, 182, 181, + 181, 180, 180, 180, 180, 179, 179, 180, 181, 179, 183, 181, 176, 174, 176, 173, + 168, 168, 173, 174, 168, 168, 173, 175, 173, 168, 169, 172, 177, 183, 190, 192, + 194, 187, 190, 193, 192, 191, 190, 190, 190, 196, 199, 201, 204, 207, 207, 206, + 207, 183, 186, 187, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 44, 26, 45, 72, 41, 43, 43, 124, 105, 109, 90, 89, 84, 90, 121, 155, + 156, 137, 139, 129, 131, 147, 161, 163, 167, 177, 175, 176, 178, 180, 181, 182, + 182, 182, 181, 182, 184, 185, 183, 182, 180, 178, 179, 182, 182, 177, 175, 173, + 170, 166, 167, 169, 168, 166, 166, 169, 171, 169, 164, 166, 173, 179, 184, 188, + 193, 197, 196, 188, 186, 193, 195, 191, 188, 193, 196, 196, 197, 200, 204, 208, + 209, 208, 201, 202, 204, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 43, 35, 55, 71, 46, 52, 18, 88, 109, 143, 127, 124, 104, 82, 95, + 139, 167, 170, 154, 137, 133, 149, 162, 163, 170, 180, 178, 180, 181, 182, 182, + 182, 181, 180, 179, 180, 183, 185, 183, 180, 177, 174, 182, 183, 183, 180, 176, + 172, 166, 164, 162, 161, 159, 159, 161, 163, 162, 158, 158, 164, 172, 179, 184, + 188, 195, 200, 200, 188, 177, 174, 178, 182, 187, 191, 194, 193, 190, 194, 200, + 204, 206, 206, 214, 217, 219, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 34, 47, 62, 63, 52, 58, 23, 57, 116, 171, 151, 156, 139, 109, + 106, 138, 168, 175, 166, 150, 143, 152, 161, 164, 168, 178, 179, 180, 181, 182, + 183, 183, 183, 183, 179, 181, 183, 183, 183, 180, 177, 175, 184, 184, 183, 182, + 176, 169, 161, 157, 146, 143, 142, 147, 153, 156, 154, 150, 159, 165, 173, 179, + 183, 188, 195, 201, 198, 192, 171, 148, 145, 164, 176, 178, 191, 190, 188, 191, + 196, 200, 203, 205, 215, 218, 221, 221, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 180, 57, 72, 67, 59, 57, 31, 28, 88, 136, 159, 177, 182, + 171, 166, 172, 170, 161, 174, 164, 157, 158, 162, 165, 167, 171, 176, 177, 179, + 182, 183, 185, 185, 186, 181, 181, 181, 182, 181, 181, 180, 180, 183, 182, 180, + 178, 172, 160, 150, 147, 134, 129, 130, 143, 155, 162, 161, 160, 165, 168, 172, + 176, 180, 185, 191, 195, 196, 196, 175, 141, 130, 147, 162, 164, 183, 185, 186, + 190, 192, 197, 202, 207, 214, 217, 220, 221, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 49, 77, 82, 61, 57, 35, 22, 53, 72, 126, 148, + 165, 167, 165, 170, 174, 174, 173, 173, 170, 164, 165, 171, 171, 167, 176, 177, + 178, 180, 181, 182, 182, 182, 181, 179, 177, 176, 176, 178, 180, 182, 179, 176, + 173, 172, 165, 149, 138, 134, 133, 126, 129, 145, 163, 171, 172, 172, 171, 168, + 166, 167, 171, 176, 179, 179, 181, 186, 177, 152, 133, 133, 143, 154, 168, 175, + 180, 183, 186, 191, 198, 206, 216, 219, 222, 223, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 31, 73, 93, 60, 61, 43, 41, 45, 42, 22, + 69, 124, 150, 152, 149, 155, 163, 167, 175, 175, 168, 169, 178, 179, 170, 178, + 179, 179, 179, 178, 177, 176, 175, 178, 175, 172, 169, 170, 172, 177, 181, 173, + 169, 168, 168, 157, 140, 128, 124, 130, 123, 126, 143, 163, 171, 170, 170, 170, + 164, 158, 156, 159, 161, 162, 162, 157, 162, 165, 158, 136, 120, 126, 142, 153, + 162, 172, 178, 179, 183, 194, 204, 214, 218, 219, 222, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 177, 69, 82, 74, 53, 44, 39, 39, 44, + 34, 12, 58, 118, 161, 175, 157, 165, 167, 173, 174, 171, 170, 174, 174, 169, + 177, 178, 178, 178, 178, 176, 175, 173, 171, 174, 173, 167, 165, 168, 169, 169, + 173, 170, 165, 157, 149, 140, 132, 126, 135, 130, 130, 139, 150, 152, 146, 137, + 140, 139, 140, 147, 153, 156, 154, 152, 147, 144, 150, 158, 144, 121, 118, 133, + 146, 153, 166, 178, 180, 180, 191, 207, 213, 217, 218, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 72, 76, 60, 46, 37, 36, + 45, 22, 1, 23, 56, 101, 147, 147, 143, 160, 168, 174, 170, 168, 171, 175, + 175, 177, 177, 177, 177, 177, 175, 173, 173, 171, 174, 172, 167, 165, 168, 170, + 169, 166, 168, 165, 153, 137, 132, 138, 145, 148, 142, 137, 132, 126, 120, 112, + 107, 77, 78, 87, 103, 126, 142, 147, 148, 126, 138, 153, 159, 148, 132, 124, + 124, 135, 143, 157, 169, 172, 177, 190, 208, 213, 216, 218, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, 59, 77, 68, 53, 39, + 35, 45, 32, 16, 12, 16, 67, 144, 164, 148, 157, 166, 173, 169, 166, 168, + 174, 179, 176, 177, 176, 176, 176, 174, 172, 172, 168, 170, 169, 165, 165, 170, + 170, 167, 163, 161, 154, 140, 132, 133, 144, 155, 154, 153, 149, 138, 128, 121, + 121, 122, 138, 132, 130, 134, 143, 150, 150, 147, 141, 161, 175, 171, 159, 147, + 133, 119, 126, 135, 151, 161, 166, 174, 193, 212, 213, 216, 218, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 74, 73, 63, + 48, 38, 42, 30, 21, 9, 4, 50, 134, 169, 154, 162, 167, 171, 169, 168, + 169, 173, 178, 175, 176, 175, 176, 175, 174, 172, 171, 166, 167, 167, 164, 165, + 169, 167, 163, 162, 150, 136, 132, 138, 145, 149, 147, 151, 154, 154, 151, 148, + 147, 151, 155, 152, 145, 138, 134, 134, 138, 141, 145, 168, 178, 183, 176, 163, + 151, 140, 130, 123, 133, 147, 158, 165, 178, 199, 218, 213, 217, 218, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 61, 67, + 69, 59, 44, 41, 31, 23, 7, 6, 40, 110, 165, 167, 174, 171, 169, 170, + 172, 173, 173, 173, 176, 176, 176, 176, 174, 174, 171, 172, 166, 168, 168, 168, + 168, 171, 166, 158, 146, 139, 132, 135, 145, 152, 153, 150, 156, 157, 157, 158, + 159, 159, 158, 157, 151, 149, 146, 141, 140, 148, 164, 176, 176, 176, 176, 178, + 170, 155, 147, 146, 126, 136, 148, 156, 165, 183, 204, 220, 214, 218, 231, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, + 51, 65, 66, 52, 44, 41, 32, 9, 10, 31, 86, 157, 181, 182, 175, 169, + 172, 175, 175, 172, 172, 176, 176, 176, 176, 176, 175, 173, 172, 169, 172, 173, + 173, 175, 174, 164, 153, 127, 135, 145, 149, 149, 150, 158, 164, 168, 166, 164, + 165, 168, 167, 161, 153, 156, 154, 151, 145, 142, 147, 162, 174, 185, 183, 185, + 191, 185, 168, 156, 154, 136, 143, 151, 158, 170, 189, 207, 218, 215, 218, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 24, 32, 54, 66, 57, 53, 40, 34, 8, 7, 18, 62, 141, 172, 182, 176, + 172, 175, 175, 172, 171, 175, 177, 178, 178, 178, 176, 175, 173, 173, 169, 172, + 174, 176, 176, 172, 158, 145, 134, 144, 154, 157, 153, 154, 162, 171, 168, 166, + 164, 166, 168, 168, 162, 157, 156, 154, 153, 154, 158, 165, 174, 180, 179, 183, + 185, 184, 180, 173, 162, 151, 150, 154, 158, 165, 179, 199, 212, 216, 216, 218, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 174, 19, 45, 63, 61, 60, 49, 49, 22, 18, 24, 66, 144, 168, 180, + 176, 174, 176, 173, 169, 171, 180, 177, 179, 178, 178, 178, 177, 175, 174, 167, + 171, 173, 175, 174, 168, 152, 136, 156, 156, 155, 157, 160, 162, 164, 165, 158, + 157, 155, 154, 153, 151, 149, 147, 148, 142, 140, 144, 152, 156, 154, 151, 148, + 160, 160, 152, 154, 165, 161, 145, 162, 165, 167, 172, 189, 207, 218, 217, 216, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 174, 36, 60, 67, 62, 60, 52, 26, 26, 23, 52, 132, 168, + 180, 182, 180, 176, 173, 176, 175, 174, 177, 177, 177, 175, 175, 176, 175, 176, + 173, 172, 172, 174, 176, 172, 160, 152, 163, 161, 157, 158, 160, 159, 153, 144, + 137, 138, 133, 126, 122, 122, 121, 117, 119, 116, 115, 120, 126, 131, 130, 128, + 154, 153, 150, 147, 146, 147, 150, 154, 169, 177, 180, 181, 194, 212, 220, 216, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 35, 56, 64, 61, 58, 55, 38, 41, 33, 48, 120, + 165, 179, 182, 181, 177, 174, 176, 176, 175, 178, 177, 177, 176, 175, 176, 175, + 176, 173, 172, 173, 176, 178, 174, 164, 157, 169, 158, 156, 153, 126, 91, 84, + 100, 111, 112, 110, 104, 102, 103, 102, 98, 113, 113, 115, 122, 127, 129, 125, + 121, 100, 104, 110, 118, 129, 142, 154, 162, 176, 184, 187, 187, 197, 213, 218, + 213, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 180, 47, 58, 62, 55, 53, 44, 44, 29, 31, + 99, 158, 179, 182, 184, 180, 176, 177, 177, 176, 177, 178, 176, 177, 176, 176, + 176, 176, 172, 172, 173, 176, 178, 176, 170, 163, 173, 166, 163, 156, 124, 88, + 83, 100, 100, 103, 102, 98, 97, 98, 96, 93, 96, 101, 111, 124, 136, 141, + 139, 137, 127, 130, 135, 142, 151, 161, 169, 176, 180, 188, 192, 193, 200, 211, + 214, 209, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 182, 53, 63, 60, 54, 48, 43, 23, + 19, 81, 159, 177, 183, 185, 182, 178, 178, 178, 177, 178, 178, 176, 176, 176, + 176, 176, 177, 171, 171, 172, 176, 178, 176, 172, 168, 172, 175, 169, 158, 152, + 150, 143, 135, 132, 136, 136, 133, 131, 131, 127, 123, 114, 121, 133, 148, 163, + 171, 174, 174, 164, 165, 163, 165, 167, 170, 171, 173, 180, 188, 193, 194, 200, + 208, 212, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 63, 66, 61, 58, 51, + 34, 26, 74, 160, 174, 183, 186, 183, 179, 179, 178, 178, 178, 179, 177, 176, + 175, 177, 177, 177, 171, 171, 172, 175, 176, 176, 172, 171, 173, 171, 164, 159, + 164, 172, 167, 154, 154, 156, 156, 151, 148, 146, 142, 137, 137, 142, 147, 155, + 164, 168, 171, 172, 158, 159, 160, 165, 172, 176, 178, 180, 180, 186, 193, 196, + 200, 206, 209, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 54, 61, 60, 64, + 56, 49, 41, 69, 148, 171, 181, 186, 185, 179, 179, 178, 177, 178, 178, 177, + 177, 177, 176, 177, 177, 173, 174, 174, 175, 174, 174, 172, 171, 172, 162, 161, + 167, 164, 155, 157, 169, 159, 161, 160, 155, 151, 150, 146, 142, 145, 146, 148, + 151, 154, 158, 159, 161, 167, 167, 169, 175, 183, 187, 187, 186, 182, 187, 190, + 193, 195, 197, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 55, 53, + 56, 47, 52, 51, 66, 138, 167, 179, 186, 185, 179, 178, 177, 176, 179, 179, + 178, 177, 177, 177, 177, 178, 177, 178, 178, 177, 174, 173, 172, 171, 169, 163, + 161, 166, 162, 155, 160, 174, 174, 176, 175, 171, 170, 170, 170, 166, 161, 163, + 165, 168, 170, 174, 175, 178, 180, 178, 176, 179, 183, 183, 178, 175, 184, 186, + 185, 184, 181, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, + 54, 51, 36, 49, 57, 69, 139, 165, 177, 186, 184, 179, 178, 177, 177, 179, + 178, 179, 177, 177, 178, 177, 179, 182, 183, 181, 180, 176, 174, 173, 173, 166, + 169, 163, 152, 155, 168, 168, 158, 166, 168, 168, 165, 166, 169, 171, 167, 167, + 169, 172, 173, 174, 175, 174, 176, 181, 179, 179, 183, 189, 189, 185, 181, 184, + 183, 181, 176, 168, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 52, 53, 38, 34, 36, 62, 129, 167, 171, 178, 189, 193, 178, 170, 183, + 180, 178, 177, 180, 185, 185, 180, 174, 183, 182, 180, 180, 180, 178, 173, 170, + 165, 163, 159, 157, 157, 159, 161, 164, 166, 167, 167, 163, 159, 157, 160, 163, + 169, 167, 165, 164, 165, 168, 169, 171, 169, 166, 170, 180, 184, 178, 175, 183, + 182, 180, 175, 168, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 184, 58, 49, 43, 39, 59, 123, 166, 173, 176, 184, 191, 182, 174, + 177, 182, 179, 178, 180, 183, 183, 182, 179, 183, 181, 181, 181, 180, 178, 173, + 170, 166, 164, 161, 159, 159, 159, 161, 162, 165, 166, 164, 161, 157, 156, 158, + 160, 162, 164, 162, 159, 156, 156, 162, 166, 168, 170, 176, 181, 182, 177, 175, + 179, 177, 177, 172, 168, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 190, 58, 53, 41, 49, 105, 164, 173, 175, 177, 188, 187, + 177, 173, 180, 178, 177, 178, 179, 180, 182, 183, 181, 180, 179, 179, 179, 177, + 173, 170, 170, 169, 166, 165, 163, 162, 162, 162, 163, 164, 162, 160, 157, 156, + 156, 157, 157, 159, 159, 155, 150, 150, 157, 166, 167, 175, 182, 183, 182, 181, + 175, 172, 157, 159, 157, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 53, 60, 52, 51, 96, 157, 175, 178, 173, 182, + 188, 181, 176, 174, 176, 176, 177, 178, 180, 183, 185, 181, 180, 178, 179, 179, + 177, 174, 171, 174, 175, 173, 172, 169, 167, 164, 163, 163, 162, 162, 159, 157, + 156, 155, 155, 155, 156, 155, 153, 153, 156, 164, 171, 171, 179, 185, 184, 186, + 187, 176, 163, 146, 149, 148, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 58, 62, 58, 96, 150, 174, 182, 173, + 177, 184, 183, 183, 168, 170, 173, 175, 177, 179, 183, 186, 180, 180, 178, 179, + 180, 179, 175, 173, 177, 177, 176, 175, 172, 170, 166, 165, 164, 163, 161, 161, + 160, 159, 156, 154, 153, 149, 147, 152, 159, 167, 172, 176, 176, 182, 184, 185, + 192, 191, 171, 150, 151, 154, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 47, 86, 152, 177, 184, + 175, 175, 180, 182, 186, 169, 169, 169, 171, 174, 178, 181, 183, 181, 180, 179, + 180, 181, 180, 178, 175, 178, 177, 176, 174, 173, 169, 168, 165, 167, 165, 163, + 162, 163, 162, 159, 154, 152, 146, 144, 151, 162, 171, 174, 173, 180, 182, 184, + 189, 191, 182, 158, 135, 145, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 77, 162, 179, + 183, 178, 178, 179, 178, 183, 178, 171, 164, 163, 167, 173, 177, 180, 181, 180, + 180, 181, 183, 182, 179, 178, 181, 180, 179, 177, 175, 174, 173, 171, 170, 168, + 165, 166, 166, 165, 161, 157, 153, 150, 150, 155, 161, 167, 168, 169, 182, 183, + 187, 193, 187, 166, 139, 124, 130, 132, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 173, + 181, 180, 178, 182, 179, 176, 180, 187, 175, 162, 157, 161, 169, 176, 178, 181, + 181, 181, 182, 183, 183, 180, 179, 185, 184, 183, 181, 179, 178, 178, 178, 172, + 170, 167, 167, 169, 168, 163, 158, 155, 155, 158, 160, 159, 162, 163, 166, 183, + 184, 191, 196, 182, 150, 125, 117, 130, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 231, 180, 183, 185, 181, 176, 177, 182, 180, 185, 182, 169, 151, 148, 160, 174, + 179, 177, 175, 179, 185, 188, 187, 185, 183, 183, 182, 180, 177, 178, 182, 184, + 183, 180, 177, 173, 171, 167, 163, 160, 162, 159, 157, 158, 161, 166, 174, 179, + 180, 186, 195, 196, 181, 160, 147, 145, 185, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 230, 183, 186, 184, 179, 176, 177, 179, 182, 184, 179, 170, 161, 158, + 160, 166, 170, 175, 180, 183, 184, 185, 185, 186, 186, 186, 183, 182, 184, 186, + 188, 180, 178, 176, 175, 174, 171, 168, 163, 160, 158, 154, 155, 157, 163, 169, + 174, 184, 188, 195, 198, 190, 171, 154, 184, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 229, 179, 176, 176, 176, 178, 180, 180, 183, 179, 169, + 156, 147, 152, 161, 171, 176, 179, 179, 181, 184, 185, 187, 185, 184, 182, 183, + 184, 188, 180, 179, 177, 177, 177, 174, 170, 164, 161, 156, 153, 153, 154, 159, + 166, 171, 186, 189, 196, 204, 200, 183, 163, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 227, 172, 175, 179, 180, 178, 178, 180, 179, + 173, 161, 151, 145, 151, 158, 166, 170, 173, 176, 177, 181, 182, 182, 180, 178, + 177, 179, 181, 184, 183, 181, 180, 178, 175, 167, 161, 162, 158, 153, 151, 152, + 157, 163, 169, 179, 187, 199, 212, 208, 190, 199, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 172, 171, 173, 177, 182, + 182, 179, 171, 165, 149, 149, 148, 153, 159, 165, 168, 168, 178, 179, 180, 178, + 176, 175, 176, 177, 184, 183, 183, 182, 180, 175, 168, 162, 161, 156, 151, 149, + 149, 154, 161, 167, 171, 186, 205, 217, 212, 191, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 158, 162, 170, + 177, 179, 177, 172, 168, 159, 152, 145, 145, 151, 158, 159, 160, 173, 176, 178, + 178, 177, 178, 179, 181, 180, 180, 180, 181, 179, 176, 172, 167, 159, 154, 149, + 147, 148, 152, 160, 166, 174, 189, 208, 218, 209, 211, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, + 166, 167, 169, 170, 168, 165, 166, 161, 153, 148, 147, 148, 151, 154, 160, 163, + 167, 170, 173, 176, 179, 183, 182, 180, 178, 178, 177, 176, 173, 169, 162, 157, + 151, 149, 151, 156, 164, 170, 189, 197, 207, 213, 204, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 227, 164, 165, 170, 172, 172, 170, 168, 162, 152, 144, 142, 144, 148, 143, + 147, 153, 159, 164, 171, 176, 180, 186, 184, 181, 178, 175, 172, 168, 165, 166, + 162, 157, 154, 158, 164, 172, 179, 208, 206, 207, 208, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 225, 169, 169, 164, 163, 168, 166, 158, 149, 144, 143, 140, + 148, 147, 145, 147, 153, 161, 171, 176, 177, 179, 180, 180, 178, 176, 173, 170, + 163, 164, 166, 167, 169, 176, 186, 195, 207, 204, 211, 212, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 231, 172, 158, 159, 159, 156, 153, 150, 145, + 137, 141, 142, 144, 147, 152, 157, 163, 166, 168, 170, 173, 174, 175, 175, 174, + 172, 167, 166, 168, 174, 185, 196, 205, 210, 208, 202, 204, 220, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 160, 155, 150, 152, 154, + 150, 142, 140, 142, 146, 149, 152, 154, 154, 155, 158, 161, 163, 167, 169, 169, + 169, 169, 173, 171, 172, 181, 195, 204, 206, 206, 207, 193, 186, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 166, 153, 149, + 151, 151, 147, 143, 145, 147, 150, 151, 153, 153, 154, 156, 158, 159, 161, 161, + 162, 161, 162, 171, 173, 178, 190, 199, 202, 198, 192, 192, 172, 157, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, + 159, 153, 150, 148, 147, 147, 146, 147, 149, 151, 153, 154, 158, 160, 161, 161, + 162, 162, 162, 163, 169, 176, 188, 197, 199, 192, 181, 172, 164, 149, 178, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 168, 160, 155, 151, 150, 146, 145, 145, 148, 151, 153, 159, 161, 162, + 164, 167, 170, 172, 173, 179, 187, 195, 199, 193, 176, 156, 144, 147, 143, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 180, 158, 155, 151, 148, 147, 148, 149, 150, 158, 158, + 161, 164, 169, 172, 176, 177, 187, 190, 194, 199, 197, 183, 162, 147, 146, 184, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 225, 162, 159, 156, 153, 150, 149, 150, 157, + 158, 159, 162, 166, 169, 172, 175, 182, 183, 189, 201, 214, 212, 197, 183, 149, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 167, 162, 158, 154, + 160, 160, 164, 172, 173, 170, 172, 178, 183, 184, 197, 206, 192, 217, 212, 223, + 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, + 158, 157, 154, 156, 164, 168, 172, 178, 185, 187, 187, 195, 194, 172, 199, 206, + 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 226, 163, 159, 160, 165, 170, 177, 183, 187, 191, 197, 188, 160, 185, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 173, 172, 170, 169, 183, 189, 199, 191, 160, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 222, 197, 212, 213, 208, 209, 203, 194, 195, 215, 227, 233, 230, + 226, 228, 233, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 133, 125, 128, 142, 189, 202, 204, 201, 206, 205, 200, 204, 212, 225, 237, + 237, 234, 232, 233, 232, 231, 226, 221, 232, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 206, 127, 134, 131, 139, 156, 169, 184, 187, 183, 187, 187, 187, 195, 221, 236, + 237, 224, 226, 239, 234, 212, 235, 229, 226, 226, 231, 235, 234, 241, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, + 128, 134, 150, 173, 211, 137, 130, 161, 178, 181, 176, 180, 182, 183, 191, 195, + 198, 212, 222, 206, 187, 199, 231, 214, 214, 214, 219, 225, 229, 230, 229, 229, + 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 144, + 190, 174, 150, 140, 137, 127, 124, 128, 115, 126, 125, 120, 130, 134, 133, 138, + 154, 169, 171, 164, 178, 202, 197, 174, 203, 204, 207, 212, 218, 220, 219, 218, + 213, 216, 219, 220, 225, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 161, 177, 184, 158, + 141, 129, 122, 120, 122, 123, 120, 120, 122, 115, 117, 108, 105, 117, 122, 115, + 110, 115, 114, 140, 171, 164, 136, 148, 188, 201, 206, 211, 216, 220, 223, 223, + 222, 226, 219, 210, 199, 201, 212, 225, 230, 223, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 127, 134, 137, 134, 134, 141, + 147, 149, 134, 123, 111, 101, 97, 96, 99, 101, 110, 108, 93, 88, 103, 107, + 93, 81, 79, 85, 93, 108, 134, 153, 148, 133, 171, 178, 188, 199, 210, 219, + 226, 229, 232, 226, 217, 204, 199, 202, 207, 208, 217, 219, 232, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 211, 121, 105, 124, 135, 128, 134, 135, 135, 133, + 132, 124, 111, 111, 103, 96, 91, 92, 97, 105, 108, 102, 102, 88, 85, 99, + 103, 88, 77, 67, 53, 65, 96, 105, 92, 102, 134, 135, 143, 153, 166, 178, + 192, 203, 209, 207, 213, 216, 214, 212, 208, 201, 194, 206, 211, 215, 222, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 70, 98, 115, 123, 125, 126, 130, 129, 124, 120, + 121, 124, 117, 103, 97, 97, 98, 96, 98, 103, 106, 108, 88, 91, 83, 80, + 94, 97, 86, 81, 88, 68, 59, 69, 80, 82, 82, 87, 131, 134, 140, 145, + 152, 159, 168, 175, 184, 193, 200, 203, 208, 211, 212, 210, 196, 202, 211, 218, + 226, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 67, 83, 100, 107, 114, 128, 130, 125, 129, 120, 114, + 118, 116, 107, 97, 94, 99, 99, 104, 104, 107, 106, 101, 95, 94, 111, 115, + 95, 81, 83, 86, 87, 97, 87, 76, 69, 67, 67, 76, 88, 98, 124, 146, + 144, 134, 132, 141, 151, 162, 169, 172, 174, 182, 196, 202, 204, 188, 192, 197, + 206, 216, 225, 229, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 184, 56, 84, 95, 107, 111, 117, 127, 126, 119, 121, 111, + 107, 105, 102, 91, 82, 79, 78, 89, 95, 88, 76, 73, 80, 87, 102, 104, + 99, 88, 84, 87, 88, 86, 78, 109, 115, 85, 61, 66, 73, 65, 64, 83, + 100, 106, 109, 116, 125, 135, 164, 167, 161, 156, 159, 169, 179, 183, 190, 191, + 195, 201, 211, 218, 221, 223, 223, 232, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 175, 10, 19, 55, 95, 100, 109, 113, 115, 118, 123, 118, 109, 109, + 103, 98, 93, 87, 78, 71, 72, 82, 85, 88, 90, 91, 93, 92, 91, 94, + 103, 109, 98, 81, 76, 88, 103, 90, 109, 121, 112, 85, 64, 58, 63, 66, + 72, 81, 88, 97, 109, 114, 122, 144, 157, 158, 158, 156, 157, 156, 153, 177, + 180, 184, 194, 208, 216, 216, 215, 221, 220, 219, 230, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 19, 20, 35, 72, 104, 106, 108, 111, 110, 114, 115, 109, 99, + 95, 90, 85, 78, 73, 68, 69, 75, 79, 78, 83, 95, 104, 102, 90, 81, + 87, 97, 110, 106, 87, 76, 87, 106, 109, 104, 106, 118, 109, 83, 68, 68, + 60, 60, 61, 66, 76, 86, 93, 102, 127, 143, 154, 158, 160, 158, 154, 147, + 158, 158, 164, 182, 203, 215, 216, 213, 219, 221, 220, 219, 230, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 177, 18, 19, 36, 67, 92, 102, 105, 106, 105, 103, 104, 103, 97, + 87, 78, 74, 70, 64, 63, 68, 74, 79, 76, 85, 98, 104, 96, 84, 78, + 82, 89, 86, 88, 95, 97, 91, 84, 80, 97, 109, 111, 105, 110, 111, 92, + 65, 51, 54, 56, 62, 66, 75, 87, 101, 130, 141, 144, 142, 143, 150, 154, + 158, 151, 145, 144, 159, 183, 204, 214, 218, 218, 222, 222, 221, 218, 214, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 22, 17, 15, 20, 51, 89, 103, 99, 101, 100, 99, 96, 94, 88, + 83, 76, 75, 75, 72, 66, 69, 76, 81, 81, 81, 78, 84, 94, 96, 90, + 89, 93, 80, 82, 84, 84, 84, 80, 75, 70, 90, 97, 106, 113, 111, 102, + 89, 78, 71, 74, 78, 79, 74, 74, 86, 102, 122, 135, 140, 139, 137, 138, + 141, 141, 154, 145, 138, 140, 157, 182, 205, 221, 221, 225, 224, 222, 219, 215, + 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 13, 13, 10, 15, 40, 72, 96, 99, 93, 88, 88, 88, 85, 81, + 74, 72, 70, 79, 80, 79, 75, 78, 79, 75, 68, 58, 47, 48, 68, 88, + 93, 90, 89, 79, 92, 96, 80, 65, 64, 75, 80, 92, 77, 81, 103, 104, + 82, 78, 92, 88, 92, 93, 86, 73, 62, 67, 83, 108, 126, 140, 145, 142, + 140, 134, 129, 146, 149, 149, 143, 144, 161, 190, 219, 222, 227, 225, 223, 219, + 216, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 175, 11, 7, 5, 4, 26, 65, 95, 98, 90, 87, 70, 73, 74, 75, + 71, 66, 67, 71, 76, 79, 79, 75, 77, 75, 62, 49, 44, 48, 63, 84, + 92, 88, 90, 98, 106, 109, 98, 75, 68, 82, 92, 89, 93, 86, 76, 73, + 82, 92, 92, 84, 102, 102, 101, 93, 75, 60, 63, 75, 108, 123, 135, 138, + 139, 144, 148, 150, 133, 150, 163, 155, 143, 148, 176, 208, 223, 227, 224, 221, + 217, 216, 214, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 13, 6, 10, 5, 15, 46, 82, 99, 89, 74, 66, 58, 59, 61, + 63, 65, 70, 75, 79, 86, 86, 87, 84, 72, 57, 50, 54, 47, 61, 81, + 96, 100, 99, 105, 117, 124, 105, 83, 92, 121, 129, 115, 106, 77, 71, 81, + 83, 82, 106, 121, 104, 102, 93, 90, 88, 72, 49, 37, 46, 76, 93, 116, + 137, 143, 142, 145, 157, 145, 158, 150, 151, 156, 135, 145, 202, 215, 223, 225, + 222, 214, 209, 208, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 176, 12, 6, 11, 12, 29, 61, 85, 89, 75, 59, 53, 51, 51, + 51, 52, 58, 64, 71, 75, 87, 78, 68, 61, 56, 47, 44, 49, 53, 65, + 87, 106, 117, 115, 115, 121, 106, 103, 99, 115, 136, 130, 106, 94, 75, 79, + 94, 100, 98, 115, 125, 110, 115, 108, 101, 89, 68, 45, 34, 37, 76, 88, + 105, 124, 138, 142, 147, 153, 157, 164, 153, 150, 152, 133, 139, 190, 215, 226, + 231, 232, 225, 217, 213, 210, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 174, 17, 11, 4, 10, 18, 47, 80, 90, 79, 63, 51, 44, 46, + 46, 48, 52, 60, 67, 74, 78, 77, 64, 53, 48, 46, 41, 39, 43, 53, + 66, 88, 107, 120, 118, 111, 109, 89, 101, 111, 128, 137, 119, 93, 86, 111, + 117, 129, 131, 124, 131, 136, 126, 116, 114, 106, 90, 74, 62, 52, 47, 82, + 87, 95, 112, 130, 140, 146, 150, 154, 157, 148, 148, 154, 141, 147, 188, 218, + 230, 236, 238, 234, 224, 215, 210, 211, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 15, 17, 7, 1, 9, 27, 57, 85, 85, 70, 56, 47, 42, + 38, 42, 49, 58, 68, 74, 75, 75, 59, 52, 50, 50, 49, 44, 40, 43, + 60, 73, 90, 105, 110, 104, 96, 91, 91, 106, 115, 120, 120, 103, 90, 97, + 130, 132, 134, 132, 126, 126, 126, 122, 116, 117, 106, 91, 88, 88, 75, 60, + 87, 90, 94, 106, 122, 136, 146, 151, 151, 152, 147, 149, 156, 148, 149, 173, + 212, 223, 231, 233, 234, 229, 220, 211, 213, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 176, 16, 16, 4, 1, 15, 50, 69, 83, 76, 61, 49, 40, + 32, 34, 42, 53, 64, 71, 71, 65, 59, 48, 46, 49, 50, 46, 40, 43, + 49, 69, 83, 97, 101, 97, 91, 89, 88, 92, 104, 108, 105, 101, 90, 90, + 106, 123, 124, 123, 125, 127, 122, 114, 115, 135, 129, 113, 98, 103, 106, 86, + 57, 89, 95, 100, 105, 113, 126, 140, 149, 155, 154, 151, 152, 153, 145, 140, + 148, 183, 197, 213, 224, 233, 234, 223, 210, 216, 216, 255, 255, 255, 255, 255, + 255, 255, 255, 19, 16, 16, 13, 3, 12, 37, 81, 82, 79, 66, 50, 36, + 30, 25, 46, 51, 58, 66, 69, 65, 55, 46, 48, 44, 42, 38, 34, 35, + 47, 60, 75, 88, 97, 94, 86, 86, 87, 89, 83, 92, 93, 90, 90, 83, + 86, 105, 119, 126, 125, 129, 132, 117, 105, 112, 143, 132, 115, 109, 119, 123, + 100, 68, 90, 100, 108, 107, 107, 117, 131, 140, 149, 147, 149, 152, 151, 147, + 143, 138, 144, 162, 185, 205, 223, 231, 222, 208, 217, 217, 255, 255, 255, 255, + 255, 255, 255, 255, 16, 13, 12, 9, 6, 31, 68, 94, 83, 70, 57, 42, + 29, 28, 33, 58, 57, 56, 57, 60, 58, 51, 45, 51, 42, 37, 35, 38, + 46, 61, 74, 78, 86, 88, 81, 76, 79, 80, 79, 77, 82, 79, 79, 86, + 84, 87, 105, 108, 118, 115, 112, 113, 95, 92, 115, 138, 128, 120, 121, 132, + 134, 115, 88, 97, 109, 117, 114, 111, 117, 127, 133, 140, 139, 144, 147, 144, + 148, 150, 142, 125, 136, 151, 167, 191, 211, 214, 205, 216, 215, 255, 255, 255, + 255, 255, 255, 255, 9, 11, 8, 6, 5, 9, 42, 91, 91, 76, 60, 49, + 37, 29, 34, 47, 57, 52, 44, 42, 45, 48, 48, 46, 48, 38, 34, 39, + 50, 63, 76, 86, 77, 79, 77, 69, 66, 68, 68, 62, 75, 75, 70, 71, + 81, 84, 91, 106, 102, 114, 107, 102, 100, 90, 105, 146, 140, 132, 127, 131, + 138, 134, 117, 97, 107, 116, 123, 120, 117, 121, 126, 127, 145, 141, 145, 144, + 138, 144, 149, 136, 125, 123, 125, 130, 153, 184, 199, 200, 211, 212, 224, 255, + 255, 255, 255, 255, 255, 11, 14, 11, 0, 3, 48, 88, 93, 76, 68, 49, + 28, 21, 34, 47, 51, 58, 54, 49, 48, 50, 53, 55, 53, 51, 45, 58, + 84, 89, 71, 67, 78, 69, 72, 76, 69, 57, 51, 57, 63, 65, 50, 57, + 67, 69, 85, 100, 91, 83, 84, 87, 90, 88, 92, 110, 129, 134, 120, 133, + 140, 145, 146, 124, 101, 124, 123, 135, 130, 108, 113, 125, 119, 133, 140, 143, + 139, 136, 138, 140, 138, 129, 128, 124, 114, 115, 134, 154, 168, 185, 194, 202, + 255, 255, 255, 255, 255, 255, 19, 9, 4, 9, 32, 75, 93, 82, 64, 58, + 45, 30, 30, 43, 55, 59, 59, 50, 40, 37, 42, 51, 62, 66, 69, 77, + 79, 75, 78, 78, 66, 47, 69, 66, 60, 53, 50, 51, 56, 61, 57, 55, + 62, 69, 70, 74, 78, 75, 77, 79, 80, 83, 85, 92, 112, 131, 130, 126, + 134, 148, 149, 141, 132, 109, 122, 124, 134, 135, 121, 115, 120, 123, 129, 135, + 138, 136, 135, 136, 140, 136, 126, 120, 124, 127, 124, 119, 124, 134, 148, 171, + 194, 255, 255, 255, 255, 255, 179, 35, 20, 20, 37, 63, 85, 87, 66, 60, + 51, 38, 33, 40, 55, 64, 65, 53, 52, 53, 58, 64, 69, 72, 71, 88, + 76, 71, 69, 59, 44, 41, 47, 65, 56, 49, 46, 48, 51, 53, 52, 45, + 54, 59, 60, 64, 60, 58, 65, 69, 69, 70, 76, 82, 93, 111, 128, 125, + 131, 129, 153, 146, 126, 137, 117, 120, 132, 138, 139, 133, 120, 114, 125, 129, + 133, 134, 133, 132, 135, 136, 129, 123, 113, 119, 133, 124, 105, 98, 110, 119, + 141, 172, 255, 255, 255, 255, 255, 35, 38, 32, 44, 63, 71, 77, 77, 67, + 62, 45, 30, 35, 50, 63, 68, 66, 63, 62, 68, 73, 78, 78, 74, 68, + 73, 56, 49, 47, 31, 16, 34, 67, 56, 50, 49, 48, 49, 48, 44, 39, + 39, 51, 46, 43, 57, 56, 52, 65, 57, 60, 63, 72, 82, 96, 109, 120, + 118, 132, 120, 142, 131, 107, 135, 120, 120, 144, 145, 135, 137, 127, 114, 121, + 134, 136, 134, 130, 131, 133, 129, 121, 119, 113, 114, 120, 114, 100, 97, 106, + 111, 119, 142, 172, 255, 255, 255, 255, 33, 32, 31, 48, 67, 70, 71, 77, + 74, 62, 39, 22, 34, 58, 72, 74, 72, 80, 73, 64, 60, 60, 62, 64, + 63, 41, 48, 40, 21, 20, 40, 60, 66, 53, 50, 48, 45, 40, 36, 35, + 34, 43, 50, 41, 41, 60, 62, 55, 64, 48, 55, 62, 70, 83, 95, 101, + 105, 109, 124, 108, 121, 107, 89, 127, 117, 122, 155, 152, 129, 131, 131, 119, + 115, 131, 134, 133, 130, 131, 131, 128, 123, 115, 117, 114, 107, 102, 103, 103, + 104, 102, 108, 133, 167, 255, 255, 255, 255, 34, 39, 31, 43, 61, 67, 73, + 69, 59, 52, 30, 21, 39, 62, 71, 74, 77, 75, 66, 57, 52, 49, 47, + 46, 43, 33, 27, 24, 31, 49, 64, 64, 56, 51, 48, 42, 33, 26, 25, + 34, 41, 48, 50, 47, 51, 64, 64, 55, 53, 47, 55, 65, 72, 81, 90, + 92, 92, 101, 112, 99, 98, 88, 88, 120, 111, 128, 152, 152, 132, 126, 130, + 124, 113, 118, 123, 127, 126, 126, 130, 130, 127, 115, 120, 117, 105, 99, 100, + 95, 91, 85, 102, 134, 173, 255, 255, 255, 255, 34, 38, 35, 49, 61, 64, + 66, 60, 43, 37, 28, 31, 50, 61, 61, 69, 80, 55, 49, 45, 43, 43, + 38, 31, 26, 37, 22, 28, 57, 76, 68, 59, 60, 47, 43, 37, 30, 28, + 32, 42, 50, 52, 47, 51, 55, 53, 53, 53, 45, 50, 60, 69, 73, 75, + 82, 83, 82, 92, 100, 97, 84, 80, 101, 120, 110, 133, 139, 144, 142, 129, + 124, 124, 115, 106, 114, 121, 121, 120, 123, 124, 125, 123, 120, 114, 106, 98, + 87, 82, 81, 81, 88, 115, 157, 196, 255, 255, 255, 30, 21, 31, 56, 63, + 61, 62, 61, 47, 30, 30, 45, 62, 61, 49, 57, 74, 49, 37, 24, 16, + 19, 23, 27, 29, 27, 49, 64, 65, 69, 78, 76, 64, 41, 38, 37, 36, + 37, 44, 50, 54, 53, 43, 47, 47, 33, 38, 52, 45, 55, 64, 73, 71, + 71, 74, 77, 75, 83, 90, 98, 76, 77, 112, 119, 109, 135, 122, 135, 149, + 132, 116, 118, 118, 100, 110, 117, 115, 113, 116, 117, 119, 130, 114, 104, 104, + 96, 79, 73, 83, 91, 74, 81, 130, 191, 255, 255, 255, 26, 28, 9, 47, + 68, 56, 59, 53, 42, 28, 35, 45, 52, 52, 50, 49, 53, 45, 28, 26, + 36, 39, 40, 38, 25, 27, 49, 70, 76, 80, 80, 65, 42, 34, 41, 44, + 37, 32, 40, 48, 51, 51, 45, 38, 38, 43, 45, 46, 44, 73, 74, 71, + 69, 67, 66, 68, 70, 82, 84, 81, 75, 83, 104, 119, 125, 124, 126, 119, + 117, 127, 123, 110, 109, 113, 110, 109, 108, 110, 112, 111, 109, 121, 113, 106, + 104, 101, 96, 86, 81, 81, 92, 89, 110, 173, 255, 255, 255, 15, 14, 4, + 48, 70, 59, 59, 51, 41, 31, 43, 53, 52, 45, 41, 42, 46, 39, 40, + 52, 53, 37, 30, 40, 45, 53, 62, 68, 64, 62, 64, 59, 51, 41, 44, + 44, 37, 34, 38, 45, 47, 53, 36, 32, 46, 52, 44, 50, 68, 64, 63, + 65, 64, 65, 68, 72, 75, 71, 79, 80, 77, 84, 101, 113, 116, 113, 111, + 103, 105, 120, 120, 108, 102, 109, 107, 106, 106, 109, 109, 110, 105, 97, 101, + 103, 97, 90, 91, 88, 80, 74, 86, 83, 101, 159, 220, 255, 174, 9, 0, + 1, 52, 73, 61, 56, 44, 38, 35, 51, 57, 48, 36, 35, 40, 45, 55, + 58, 65, 58, 34, 28, 46, 60, 61, 67, 71, 67, 57, 48, 43, 42, 46, + 45, 42, 37, 37, 42, 45, 45, 48, 39, 41, 49, 52, 50, 61, 78, 63, + 64, 65, 63, 63, 62, 65, 67, 63, 75, 81, 81, 87, 99, 106, 108, 106, + 104, 94, 97, 114, 115, 103, 98, 102, 101, 101, 101, 107, 108, 111, 106, 93, + 104, 113, 104, 95, 95, 94, 91, 72, 79, 77, 92, 143, 191, 255, 17, 13, + 0, 9, 60, 75, 60, 52, 38, 37, 42, 52, 50, 37, 31, 39, 51, 54, + 81, 63, 49, 39, 32, 36, 52, 59, 60, 63, 68, 66, 53, 36, 32, 37, + 44, 42, 39, 39, 43, 48, 49, 48, 43, 55, 53, 41, 45, 60, 69, 61, + 61, 62, 63, 61, 60, 59, 62, 62, 61, 73, 82, 82, 86, 95, 102, 103, + 102, 103, 94, 94, 105, 105, 96, 96, 89, 88, 90, 94, 100, 106, 109, 108, + 88, 90, 99, 98, 90, 81, 80, 81, 76, 76, 73, 85, 129, 182, 255, 17, + 12, 0, 18, 65, 72, 58, 50, 37, 43, 47, 46, 38, 29, 33, 49, 61, + 62, 74, 47, 29, 27, 33, 45, 56, 54, 59, 58, 53, 46, 34, 26, 35, + 48, 45, 41, 39, 42, 47, 50, 49, 48, 44, 53, 50, 41, 46, 60, 59, + 44, 52, 55, 58, 59, 61, 61, 66, 66, 64, 75, 81, 80, 84, 95, 100, + 97, 91, 96, 90, 87, 92, 90, 86, 93, 82, 81, 82, 85, 91, 97, 100, + 101, 95, 83, 86, 96, 93, 74, 68, 74, 85, 77, 73, 80, 119, 173, 255, + 15, 9, 2, 24, 65, 65, 55, 48, 39, 49, 47, 36, 27, 31, 44, 58, + 59, 59, 36, 25, 26, 33, 36, 44, 51, 49, 41, 45, 47, 40, 32, 30, + 37, 45, 48, 44, 44, 49, 52, 49, 45, 44, 49, 37, 35, 49, 56, 47, + 45, 48, 57, 60, 62, 60, 59, 57, 58, 59, 64, 74, 79, 77, 84, 92, + 96, 90, 78, 86, 83, 78, 80, 79, 80, 91, 84, 81, 79, 79, 81, 84, + 86, 84, 100, 84, 82, 95, 95, 80, 70, 73, 84, 75, 73, 79, 107, 160, + 218, 13, 6, 6, 30, 65, 61, 52, 43, 33, 48, 43, 30, 27, 45, 60, + 57, 45, 40, 15, 15, 29, 40, 38, 38, 43, 41, 27, 38, 46, 39, 34, + 35, 38, 37, 46, 44, 47, 54, 56, 49, 43, 43, 45, 30, 30, 48, 53, + 39, 40, 53, 65, 67, 67, 62, 58, 52, 50, 50, 62, 68, 72, 72, 83, + 91, 89, 79, 72, 78, 72, 67, 71, 70, 70, 80, 83, 79, 74, 72, 74, + 75, 75, 73, 78, 74, 72, 74, 79, 77, 71, 63, 72, 68, 73, 77, 91, + 140, 187, 9, 1, 10, 34, 66, 57, 48, 40, 24, 39, 38, 27, 34, 58, + 70, 54, 32, 23, 21, 18, 26, 39, 37, 36, 39, 31, 36, 43, 38, 23, + 20, 34, 46, 47, 41, 41, 48, 57, 59, 50, 46, 47, 38, 38, 40, 40, + 40, 39, 45, 49, 60, 62, 64, 61, 59, 54, 53, 52, 57, 62, 66, 71, + 81, 89, 84, 70, 75, 76, 67, 61, 66, 65, 62, 68, 78, 74, 69, 66, + 68, 69, 70, 69, 66, 79, 81, 71, 74, 90, 87, 70, 58, 59, 72, 72, + 78, 124, 179, 67, 7, 12, 56, 60, 50, 46, 35, 36, 36, 27, 25, 37, + 56, 58, 37, 14, 7, 22, 31, 37, 41, 37, 31, 26, 21, 44, 36, 27, + 24, 28, 33, 37, 39, 47, 49, 51, 53, 51, 49, 46, 43, 34, 36, 40, + 42, 45, 46, 51, 52, 59, 65, 67, 62, 56, 52, 52, 52, 65, 56, 59, + 72, 81, 77, 73, 72, 77, 72, 65, 58, 56, 55, 59, 60, 55, 63, 72, + 72, 68, 64, 66, 68, 73, 71, 61, 65, 81, 74, 68, 88, 76, 64, 48, + 64, 74, 85, 145, 202, 9, 8, 54, 56, 43, 41, 34, 35, 32, 22, 32, + 48, 58, 46, 22, 12, 20, 22, 30, 36, 31, 24, 21, 26, 33, 39, 32, + 28, 28, 33, 36, 37, 35, 41, 42, 44, 45, 44, 44, 42, 41, 36, 37, + 40, 42, 45, 47, 52, 54, 61, 63, 65, 61, 56, 53, 53, 51, 63, 59, + 61, 67, 73, 69, 64, 60, 67, 61, 56, 50, 49, 48, 50, 51, 55, 59, + 62, 65, 63, 62, 60, 60, 59, 70, 66, 62, 76, 76, 71, 80, 72, 63, + 47, 56, 60, 73, 134, 255, 11, 8, 52, 51, 37, 37, 34, 35, 32, 22, + 35, 51, 56, 38, 18, 13, 24, 24, 33, 39, 31, 20, 18, 28, 40, 35, + 30, 28, 31, 40, 42, 39, 33, 33, 34, 34, 36, 38, 39, 38, 36, 37, + 37, 41, 43, 45, 47, 54, 57, 64, 63, 62, 59, 57, 54, 53, 54, 62, + 65, 66, 65, 66, 65, 60, 52, 56, 54, 50, 46, 45, 43, 45, 45, 51, + 53, 53, 57, 60, 62, 59, 55, 51, 68, 66, 55, 62, 71, 71, 71, 66, + 69, 57, 59, 56, 70, 125, 255, 9, 13, 53, 49, 34, 38, 39, 39, 33, + 25, 34, 43, 47, 39, 29, 22, 21, 29, 39, 47, 42, 33, 27, 31, 39, + 36, 32, 28, 34, 42, 43, 37, 30, 26, 29, 31, 34, 37, 36, 33, 33, + 35, 37, 40, 40, 42, 46, 53, 58, 64, 60, 58, 57, 56, 53, 52, 53, + 55, 64, 67, 65, 64, 69, 65, 55, 55, 51, 51, 48, 45, 43, 42, 43, + 44, 44, 49, 53, 59, 61, 62, 60, 56, 65, 62, 50, 49, 55, 61, 67, + 62, 74, 69, 71, 65, 75, 127, 255, 6, 15, 53, 47, 32, 41, 43, 42, + 32, 21, 35, 44, 46, 41, 35, 30, 26, 41, 45, 47, 44, 42, 35, 34, + 35, 36, 31, 28, 31, 37, 36, 32, 26, 24, 27, 31, 37, 37, 36, 31, + 29, 33, 35, 39, 38, 39, 42, 50, 57, 64, 59, 56, 57, 55, 49, 49, + 53, 52, 61, 64, 62, 62, 68, 65, 57, 54, 51, 51, 49, 45, 44, 43, + 41, 35, 40, 47, 49, 51, 53, 55, 59, 62, 58, 60, 63, 55, 48, 51, + 58, 61, 74, 69, 69, 63, 74, 129, 255, 7, 13, 53, 45, 28, 40, 48, + 45, 28, 11, 38, 54, 50, 37, 32, 38, 42, 47, 43, 39, 38, 39, 40, + 38, 36, 31, 28, 26, 26, 29, 29, 27, 24, 25, 28, 32, 37, 36, 35, + 29, 25, 30, 33, 35, 33, 33, 36, 46, 55, 61, 58, 57, 60, 54, 45, + 45, 53, 57, 58, 57, 56, 57, 61, 58, 53, 55, 53, 51, 47, 45, 42, + 42, 41, 35, 38, 45, 45, 44, 43, 45, 49, 60, 50, 65, 78, 67, 52, + 51, 50, 60, 64, 55, 54, 51, 66, 129, 255, 8, 12, 51, 42, 27, 41, + 51, 45, 27, 17, 42, 54, 46, 35, 37, 46, 48, 38, 34, 34, 37, 41, + 41, 39, 35, 27, 28, 31, 32, 31, 30, 29, 26, 28, 29, 29, 31, 30, + 29, 26, 23, 28, 32, 33, 31, 31, 34, 46, 56, 61, 60, 63, 65, 56, + 43, 44, 55, 64, 54, 49, 54, 57, 57, 53, 52, 58, 55, 53, 49, 46, + 43, 43, 42, 41, 40, 43, 43, 45, 45, 45, 44, 51, 45, 63, 73, 65, + 63, 63, 49, 54, 51, 42, 50, 52, 63, 125, 255, 173, 14, 54, 44, 30, + 44, 54, 47, 26, 31, 42, 44, 37, 39, 49, 52, 44, 22, 27, 36, 45, + 49, 45, 36, 29, 25, 30, 35, 37, 34, 32, 33, 33, 35, 33, 29, 29, + 28, 26, 25, 24, 29, 32, 33, 30, 28, 33, 45, 57, 61, 62, 69, 71, + 59, 44, 46, 58, 69, 55, 49, 56, 62, 59, 56, 58, 63, 60, 55, 51, + 46, 45, 45, 45, 46, 40, 38, 43, 50, 53, 49, 43, 42, 40, 52, 57, + 52, 67, 75, 53, 48, 44, 38, 57, 61, 68, 124, 255, 255, 12, 33, 57, + 34, 37, 67, 42, 17, 31, 35, 39, 42, 50, 55, 41, 20, 20, 31, 43, + 46, 44, 42, 36, 31, 32, 28, 28, 33, 33, 28, 27, 34, 43, 45, 44, + 43, 40, 38, 37, 35, 37, 34, 30, 28, 31, 41, 53, 62, 67, 74, 76, + 72, 58, 38, 43, 74, 74, 72, 68, 63, 62, 63, 63, 61, 62, 60, 57, + 55, 54, 52, 49, 47, 48, 47, 46, 44, 45, 46, 46, 47, 41, 39, 41, + 46, 49, 51, 51, 48, 46, 45, 41, 44, 56, 74, 190, 255, 255, 14, 26, + 48, 34, 43, 66, 44, 23, 29, 30, 35, 43, 46, 37, 28, 19, 29, 34, + 40, 40, 38, 38, 34, 28, 30, 25, 24, 27, 28, 26, 29, 36, 45, 47, + 46, 45, 42, 39, 36, 32, 39, 35, 32, 30, 33, 41, 54, 65, 73, 79, + 77, 74, 66, 47, 56, 83, 81, 80, 77, 68, 68, 72, 73, 67, 67, 64, + 62, 59, 57, 55, 53, 50, 51, 50, 51, 49, 50, 49, 48, 46, 42, 41, + 47, 50, 54, 53, 50, 43, 42, 36, 32, 43, 59, 80, 255, 255, 255, 12, + 14, 32, 36, 50, 62, 44, 32, 34, 34, 42, 50, 42, 24, 22, 28, 36, + 36, 35, 32, 32, 34, 31, 26, 29, 24, 22, 24, 26, 27, 32, 37, 36, + 36, 35, 36, 36, 34, 30, 26, 29, 29, 29, 34, 40, 54, 69, 79, 87, + 87, 82, 77, 72, 59, 67, 93, 89, 91, 86, 74, 74, 82, 83, 73, 76, + 73, 71, 69, 66, 62, 58, 58, 57, 57, 59, 58, 56, 53, 51, 47, 47, + 45, 51, 56, 58, 55, 48, 38, 36, 28, 27, 42, 58, 75, 255, 255, 255, + 13, 5, 18, 38, 56, 55, 42, 37, 35, 44, 51, 47, 32, 19, 24, 32, + 33, 31, 29, 27, 30, 34, 32, 26, 27, 25, 23, 24, 25, 28, 32, 34, + 26, 24, 24, 27, 31, 30, 28, 25, 27, 31, 38, 47, 56, 69, 82, 92, + 97, 100, 93, 85, 78, 68, 77, 102, 98, 102, 96, 82, 81, 92, 92, 79, + 85, 83, 81, 78, 73, 70, 66, 67, 61, 62, 65, 65, 62, 58, 54, 50, + 49, 48, 51, 53, 55, 52, 43, 35, 31, 25, 27, 40, 51, 65, 255, 255, + 255, 16, 3, 9, 42, 59, 45, 38, 39, 29, 49, 54, 35, 19, 19, 28, + 27, 22, 22, 24, 26, 32, 37, 34, 27, 24, 25, 26, 26, 27, 28, 29, + 26, 19, 15, 18, 21, 27, 29, 29, 30, 36, 43, 54, 65, 74, 82, 91, + 95, 108, 114, 107, 97, 86, 77, 87, 110, 109, 111, 102, 87, 88, 97, 96, + 85, 95, 94, 93, 89, 83, 78, 76, 77, 70, 71, 74, 74, 72, 67, 63, + 59, 54, 51, 52, 54, 55, 52, 43, 31, 25, 25, 32, 43, 49, 62, 255, + 255, 255, 176, 5, 6, 45, 60, 37, 35, 39, 27, 50, 53, 32, 21, 29, + 34, 23, 13, 18, 24, 29, 34, 37, 34, 27, 22, 26, 27, 26, 26, 29, + 29, 21, 14, 14, 17, 21, 25, 29, 35, 39, 47, 55, 72, 86, 96, 106, + 112, 115, 120, 124, 117, 107, 101, 92, 99, 119, 121, 114, 104, 96, 97, 102, + 100, 94, 105, 105, 105, 100, 93, 88, 88, 89, 83, 84, 85, 85, 85, 82, + 78, 73, 68, 63, 63, 63, 65, 59, 45, 32, 20, 26, 34, 44, 55, 136, + 255, 255, 255, 255, 7, 6, 47, 59, 31, 36, 40, 27, 41, 45, 38, 35, + 37, 34, 19, 12, 20, 28, 31, 32, 33, 30, 25, 21, 25, 25, 22, 24, + 30, 32, 24, 17, 20, 29, 33, 39, 47, 60, 73, 75, 83, 98, 109, 120, + 129, 136, 139, 133, 131, 122, 116, 120, 115, 114, 124, 128, 113, 103, 103, 108, + 108, 106, 107, 114, 117, 118, 113, 105, 100, 99, 101, 98, 99, 100, 100, 101, + 98, 95, 91, 85, 82, 83, 83, 83, 73, 53, 35, 21, 28, 34, 43, 63, + 255, 255, 255, 255, 255, 9, 7, 48, 58, 29, 37, 41, 22, 27, 33, 40, + 43, 36, 25, 12, 16, 23, 31, 32, 30, 29, 26, 23, 21, 24, 23, 19, + 21, 30, 35, 31, 32, 37, 51, 59, 66, 80, 98, 116, 117, 122, 128, 133, + 138, 141, 145, 146, 143, 135, 122, 120, 133, 132, 125, 126, 131, 112, 103, 109, + 114, 112, 112, 117, 122, 126, 126, 121, 114, 108, 109, 109, 110, 110, 113, 113, + 112, 110, 110, 107, 99, 97, 99, 101, 101, 84, 59, 38, 26, 31, 31, 40, + 70, 255, 255, 255, 255, 255, 4, 17, 58, 55, 26, 37, 48, 26, 24, 27, + 37, 41, 30, 19, 10, 25, 24, 26, 27, 27, 26, 25, 24, 18, 15, 17, + 25, 30, 30, 34, 40, 52, 60, 75, 84, 96, 115, 132, 144, 150, 156, 158, + 163, 163, 163, 160, 155, 149, 133, 110, 117, 121, 113, 122, 120, 118, 109, 104, + 110, 117, 118, 124, 130, 128, 124, 123, 127, 126, 120, 118, 120, 122, 118, 120, + 115, 106, 113, 118, 104, 101, 107, 122, 118, 119, 113, 74, 39, 35, 40, 27, + 49, 67, 255, 255, 255, 255, 255, 176, 22, 51, 47, 26, 41, 50, 25, 22, + 24, 34, 39, 33, 25, 18, 27, 25, 25, 25, 24, 23, 21, 21, 26, 23, + 25, 31, 34, 37, 45, 54, 77, 89, 102, 111, 123, 141, 156, 166, 176, 174, + 168, 161, 157, 159, 166, 167, 146, 139, 123, 130, 129, 117, 118, 109, 116, 110, + 110, 118, 125, 126, 127, 133, 135, 132, 132, 134, 130, 122, 118, 120, 119, 120, + 128, 131, 127, 124, 117, 103, 109, 110, 122, 136, 147, 150, 113, 45, 31, 34, + 27, 50, 134, 255, 255, 255, 255, 255, 255, 21, 38, 35, 26, 46, 50, 30, + 26, 24, 30, 35, 33, 30, 24, 29, 26, 24, 22, 21, 19, 19, 18, 26, + 25, 26, 28, 30, 37, 52, 68, 101, 115, 128, 135, 146, 161, 174, 181, 185, + 184, 181, 173, 167, 163, 164, 163, 147, 146, 133, 136, 129, 117, 119, 108, 113, + 111, 115, 124, 130, 131, 133, 136, 141, 141, 140, 140, 134, 125, 120, 121, 124, + 119, 116, 116, 120, 127, 136, 136, 131, 129, 133, 153, 156, 166, 149, 54, 27, + 28, 35, 60, 255, 255, 255, 255, 255, 255, 255, 15, 28, 29, 30, 51, 46, + 37, 32, 25, 26, 30, 32, 31, 26, 30, 26, 24, 22, 20, 20, 21, 21, + 23, 24, 25, 24, 27, 40, 62, 85, 119, 133, 146, 154, 165, 177, 185, 188, + 187, 187, 186, 185, 181, 177, 170, 162, 165, 161, 143, 137, 131, 120, 128, 123, + 110, 111, 119, 127, 133, 136, 139, 142, 146, 147, 147, 143, 138, 131, 126, 125, + 124, 125, 125, 135, 139, 131, 127, 129, 122, 128, 139, 168, 155, 167, 169, 53, + 28, 31, 58, 87, 255, 255, 255, 255, 255, 255, 255, 17, 32, 37, 40, 54, + 40, 38, 33, 25, 23, 28, 33, 35, 29, 28, 25, 24, 23, 23, 24, 26, + 27, 26, 29, 30, 30, 37, 56, 82, 108, 139, 155, 166, 172, 180, 191, 195, + 194, 197, 191, 183, 181, 177, 166, 153, 140, 122, 118, 104, 109, 102, 92, 103, + 102, 104, 108, 117, 124, 130, 137, 142, 146, 148, 150, 149, 147, 144, 138, 131, + 126, 122, 113, 99, 96, 95, 78, 79, 98, 86, 91, 114, 158, 156, 175, 172, + 43, 28, 40, 95, 124, 255, 255, 255, 255, 255, 255, 255, 178, 43, 49, 48, + 55, 35, 32, 29, 23, 20, 27, 36, 39, 33, 26, 25, 25, 26, 27, 28, + 30, 31, 27, 31, 34, 36, 49, 75, 103, 127, 154, 170, 177, 182, 190, 196, + 200, 195, 197, 193, 183, 172, 152, 120, 82, 58, 40, 43, 47, 79, 87, 72, + 78, 79, 95, 103, 113, 122, 129, 139, 147, 150, 153, 155, 156, 154, 152, 144, + 128, 113, 86, 67, 35, 25, 31, 31, 61, 114, 96, 72, 78, 120, 140, 179, + 166, 42, 34, 52, 129, 155, 255, 255, 255, 255, 255, 255, 255, 255, 44, 51, + 46, 51, 32, 29, 28, 23, 20, 27, 37, 40, 32, 25, 24, 26, 27, 29, + 30, 30, 30, 26, 31, 35, 41, 60, 90, 119, 142, 165, 180, 185, 188, 192, + 200, 200, 195, 191, 184, 169, 143, 106, 66, 28, 8, 21, 26, 44, 98, 113, + 86, 81, 80, 85, 99, 113, 122, 131, 142, 149, 150, 158, 162, 165, 164, 162, + 147, 117, 89, 41, 40, 27, 35, 50, 47, 77, 136, 123, 77, 78, 102, 129, + 176, 154, 50, 48, 68, 158, 174, 255, 255, 255, 255, 255, 255, 255, 255, 38, + 45, 41, 48, 33, 36, 35, 28, 24, 27, 33, 32, 24, 25, 26, 28, 30, + 31, 31, 29, 28, 28, 33, 38, 49, 74, 110, 140, 159, 178, 191, 192, 195, + 199, 204, 205, 199, 189, 173, 142, 103, 65, 44, 40, 45, 44, 42, 60, 117, + 129, 87, 71, 68, 86, 102, 119, 131, 141, 150, 153, 152, 168, 173, 176, 179, + 176, 156, 114, 78, 57, 53, 33, 36, 48, 41, 74, 144, 122, 87, 108, 131, + 151, 190, 151, 62, 72, 92, 183, 188, 255, 255, 255, 255, 255, 255, 255, 255, + 42, 57, 50, 37, 34, 35, 39, 31, 39, 46, 32, 24, 25, 25, 33, 38, + 39, 38, 35, 31, 26, 18, 35, 48, 68, 113, 151, 166, 175, 190, 195, 197, + 199, 198, 196, 189, 184, 177, 153, 132, 131, 143, 147, 134, 114, 100, 98, 104, + 111, 115, 114, 115, 119, 130, 135, 145, 154, 163, 166, 165, 165, 181, 186, 186, + 187, 185, 170, 141, 116, 97, 94, 98, 106, 108, 112, 130, 151, 166, 184, 192, + 184, 174, 191, 175, 88, 139, 171, 199, 206, 255, 255, 255, 255, 255, 255, 255, + 255, 49, 59, 43, 32, 41, 32, 34, 32, 38, 36, 28, 20, 19, 21, 35, + 42, 42, 36, 30, 25, 25, 23, 45, 62, 86, 129, 164, 181, 190, 198, 198, + 200, 200, 200, 199, 193, 189, 168, 170, 174, 177, 177, 174, 166, 157, 143, 139, + 140, 143, 142, 137, 134, 136, 150, 151, 154, 162, 172, 177, 177, 173, 182, 186, + 192, 197, 201, 193, 171, 150, 146, 138, 137, 146, 150, 155, 169, 188, 188, 196, + 204, 210, 204, 212, 206, 145, 177, 196, 213, 215, 255, 255, 255, 255, 255, 255, + 255, 255, 188, 58, 30, 20, 38, 29, 28, 37, 41, 32, 33, 30, 25, 23, + 34, 44, 42, 33, 24, 23, 24, 29, 55, 78, 103, 142, 172, 188, 198, 199, + 201, 201, 201, 201, 202, 198, 196, 190, 194, 196, 190, 182, 176, 178, 180, 168, + 162, 158, 159, 153, 146, 142, 143, 154, 150, 151, 159, 172, 180, 181, 176, 190, + 194, 198, 202, 207, 204, 187, 168, 159, 148, 142, 149, 155, 159, 169, 182, 194, + 194, 201, 220, 220, 218, 222, 189, 201, 210, 212, 212, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 48, 22, 13, 27, 26, 26, 43, 39, 32, 46, 43, 33, + 31, 36, 40, 39, 34, 25, 25, 27, 32, 60, 89, 116, 150, 174, 187, 198, + 201, 201, 199, 200, 201, 203, 204, 201, 204, 197, 187, 184, 181, 180, 176, 170, + 160, 155, 154, 157, 154, 149, 146, 149, 151, 152, 156, 165, 177, 185, 186, 187, + 200, 202, 204, 206, 209, 206, 194, 180, 175, 166, 161, 162, 162, 162, 170, 179, + 193, 194, 199, 222, 224, 219, 227, 207, 204, 207, 209, 208, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 42, 23, 15, 17, 22, 22, 40, 31, 40, 66, 50, + 38, 40, 32, 29, 30, 31, 27, 27, 30, 38, 66, 96, 124, 157, 176, 187, + 197, 201, 199, 198, 199, 202, 203, 204, 204, 191, 187, 189, 196, 202, 199, 186, + 173, 166, 163, 164, 167, 167, 164, 163, 166, 162, 167, 176, 183, 188, 192, 195, + 198, 197, 200, 203, 206, 212, 216, 210, 202, 198, 195, 194, 191, 185, 184, 193, + 201, 196, 211, 213, 224, 226, 224, 229, 209, 196, 202, 207, 208, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 41, 27, 19, 14, 23, 27, 36, 25, 60, 98, + 65, 48, 39, 25, 21, 28, 33, 31, 31, 34, 49, 76, 102, 129, 164, 179, + 188, 200, 200, 199, 198, 200, 203, 205, 206, 205, 196, 200, 204, 205, 205, 202, + 200, 199, 192, 189, 188, 188, 187, 181, 180, 183, 179, 186, 193, 196, 197, 195, + 197, 200, 200, 203, 207, 209, 216, 222, 219, 213, 203, 208, 211, 208, 202, 201, + 209, 218, 207, 227, 224, 227, 229, 229, 231, 209, 198, 205, 211, 212, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 49, 27, 16, 17, 28, 33, 33, 20, 86, + 131, 81, 60, 35, 22, 24, 34, 40, 37, 39, 45, 58, 81, 106, 133, 167, + 182, 189, 200, 201, 198, 198, 200, 204, 206, 205, 206, 213, 211, 209, 204, 201, + 202, 209, 215, 213, 209, 205, 203, 200, 195, 192, 195, 194, 196, 198, 198, 199, + 198, 198, 201, 204, 207, 211, 210, 217, 222, 220, 214, 214, 219, 223, 222, 219, + 220, 224, 225, 216, 232, 223, 226, 234, 231, 230, 216, 203, 206, 210, 213, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 188, 24, 12, 21, 26, 34, 27, 12, + 95, 147, 84, 63, 31, 24, 32, 45, 49, 43, 48, 57, 67, 86, 107, 136, + 169, 184, 190, 201, 200, 200, 200, 202, 206, 207, 208, 206, 208, 205, 206, 211, + 217, 220, 214, 209, 217, 213, 210, 210, 207, 201, 200, 201, 205, 202, 199, 199, + 201, 203, 205, 205, 199, 203, 206, 209, 215, 222, 224, 220, 219, 221, 223, 222, + 223, 224, 224, 221, 223, 231, 220, 228, 242, 232, 233, 229, 206, 205, 206, 209, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 17, 17, 21, 34, 29, + 7, 104, 140, 95, 58, 29, 36, 50, 55, 57, 60, 68, 70, 82, 94, 115, + 140, 166, 185, 198, 203, 204, 203, 205, 205, 206, 205, 206, 206, 209, 208, 209, + 210, 211, 215, 217, 218, 220, 224, 221, 214, 208, 209, 206, 199, 205, 208, 208, + 200, 198, 202, 206, 204, 203, 201, 201, 206, 213, 219, 222, 222, 214, 228, 230, + 219, 216, 228, 234, 227, 220, 223, 228, 231, 235, 232, 231, 230, 206, 208, 210, + 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 26, 12, 20, 40, + 23, 13, 71, 136, 98, 74, 52, 42, 40, 49, 78, 106, 117, 110, 104, 107, + 122, 146, 169, 184, 196, 203, 199, 198, 202, 203, 207, 208, 210, 210, 211, 211, + 214, 216, 218, 218, 219, 219, 219, 222, 219, 211, 207, 206, 202, 195, 193, 198, + 198, 194, 193, 199, 203, 202, 200, 201, 205, 207, 215, 220, 222, 223, 218, 221, + 224, 223, 223, 223, 223, 222, 222, 223, 227, 230, 234, 235, 234, 233, 209, 211, + 213, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 38, 15, 30, + 52, 20, 22, 24, 108, 92, 93, 68, 65, 66, 76, 112, 147, 150, 130, 133, + 124, 130, 151, 174, 184, 196, 207, 200, 197, 201, 203, 207, 208, 211, 211, 212, + 213, 217, 218, 219, 218, 216, 216, 217, 219, 216, 210, 205, 200, 195, 190, 189, + 191, 192, 189, 192, 195, 198, 198, 195, 198, 205, 208, 213, 217, 221, 224, 223, + 215, 214, 221, 224, 220, 218, 221, 222, 219, 222, 227, 231, 235, 235, 234, 224, + 226, 228, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 39, 26, + 38, 49, 23, 30, 0, 72, 97, 132, 111, 109, 94, 75, 94, 139, 168, 169, + 155, 139, 136, 157, 179, 188, 200, 211, 204, 201, 204, 205, 208, 208, 210, 209, + 208, 211, 214, 218, 217, 214, 211, 210, 216, 217, 213, 210, 203, 196, 189, 182, + 181, 180, 180, 181, 186, 189, 188, 187, 188, 194, 201, 207, 210, 214, 219, 224, + 224, 210, 200, 198, 203, 208, 213, 217, 217, 217, 217, 221, 227, 230, 231, 230, + 237, 238, 241, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, + 38, 45, 39, 28, 34, 5, 43, 105, 163, 141, 147, 137, 110, 113, 146, 177, + 183, 171, 156, 150, 165, 181, 191, 201, 211, 207, 204, 205, 206, 207, 207, 209, + 209, 206, 210, 212, 214, 214, 211, 208, 206, 214, 213, 211, 206, 198, 187, 178, + 174, 164, 160, 159, 166, 176, 180, 179, 178, 187, 193, 200, 205, 208, 210, 216, + 220, 217, 209, 189, 167, 166, 183, 197, 200, 213, 213, 214, 217, 223, 227, 227, + 227, 236, 238, 239, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 180, 48, 53, 43, 33, 31, 10, 14, 80, 132, 157, 176, 188, 180, 179, 186, + 186, 173, 184, 174, 167, 173, 185, 194, 202, 204, 204, 201, 203, 206, 207, 209, + 211, 212, 208, 208, 208, 209, 210, 208, 209, 207, 208, 204, 204, 200, 190, 176, + 165, 161, 146, 143, 148, 161, 177, 185, 186, 186, 192, 194, 197, 199, 202, 206, + 209, 210, 212, 210, 187, 155, 145, 162, 178, 181, 205, 209, 213, 216, 220, 223, + 226, 227, 233, 235, 236, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 40, 58, 58, 34, 31, 14, 8, 46, 71, 129, 154, 176, 181, 183, + 189, 195, 192, 188, 186, 184, 183, 188, 200, 207, 203, 204, 201, 202, 204, 205, + 206, 206, 206, 206, 204, 202, 201, 203, 203, 207, 207, 201, 195, 194, 190, 180, + 161, 149, 145, 144, 137, 143, 163, 184, 193, 197, 197, 196, 193, 191, 188, 191, + 192, 192, 190, 193, 197, 187, 164, 144, 145, 157, 168, 189, 197, 206, 209, 212, + 215, 221, 227, 233, 235, 238, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 21, 53, 67, 33, 35, 23, 29, 38, 40, 25, 75, 132, 162, + 168, 169, 175, 182, 186, 194, 194, 190, 196, 208, 214, 206, 206, 203, 205, 203, + 202, 201, 200, 200, 203, 198, 195, 192, 193, 196, 201, 201, 189, 182, 180, 180, + 169, 151, 139, 136, 143, 136, 139, 159, 180, 190, 190, 190, 188, 182, 175, 172, + 175, 176, 176, 175, 171, 175, 180, 171, 148, 131, 137, 156, 170, 182, 194, 201, + 202, 208, 217, 225, 234, 234, 238, 239, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 173, 46, 52, 43, 26, 26, 28, 35, 42, 30, 9, 58, + 122, 169, 187, 174, 185, 187, 195, 201, 198, 200, 206, 206, 202, 206, 204, 206, + 204, 204, 203, 200, 199, 195, 197, 196, 191, 187, 190, 191, 184, 177, 169, 165, + 161, 156, 151, 145, 140, 150, 146, 145, 152, 161, 164, 155, 145, 143, 140, 144, + 153, 165, 170, 172, 169, 169, 164, 171, 176, 161, 134, 131, 146, 159, 167, 181, + 194, 200, 200, 214, 230, 235, 238, 241, 241, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 27, 43, 47, 33, 28, 26, 31, 41, 15, 0, + 17, 54, 106, 156, 163, 163, 182, 195, 201, 200, 199, 202, 206, 205, 206, 205, + 205, 203, 203, 200, 199, 196, 194, 195, 194, 187, 186, 189, 191, 182, 165, 163, + 163, 155, 145, 144, 153, 164, 167, 160, 153, 145, 135, 128, 118, 109, 72, 73, + 85, 106, 135, 155, 166, 169, 149, 161, 177, 178, 165, 145, 136, 134, 144, 154, + 169, 183, 190, 195, 213, 230, 237, 239, 241, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 5, 35, 50, 43, 32, 23, 26, 38, 23, + 7, 6, 15, 70, 152, 178, 166, 178, 192, 200, 199, 197, 199, 208, 211, 203, + 202, 202, 202, 202, 199, 198, 195, 191, 191, 191, 185, 186, 188, 189, 181, 167, + 162, 156, 148, 143, 149, 163, 175, 175, 173, 166, 154, 140, 131, 126, 125, 135, + 127, 127, 134, 150, 161, 167, 167, 162, 182, 196, 188, 173, 158, 143, 128, 134, + 145, 162, 174, 183, 192, 215, 234, 237, 239, 241, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, 49, 48, 41, 30, 26, 31, + 20, 12, 3, 3, 53, 142, 183, 172, 183, 193, 198, 199, 199, 200, 207, 210, + 202, 199, 201, 199, 199, 196, 195, 193, 186, 186, 186, 182, 183, 187, 186, 177, + 170, 156, 144, 143, 154, 165, 170, 171, 175, 175, 175, 168, 162, 159, 159, 158, + 148, 141, 136, 135, 142, 150, 158, 165, 190, 200, 203, 191, 175, 162, 149, 139, + 132, 142, 158, 170, 181, 195, 218, 239, 237, 239, 241, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 42, 44, 48, 39, 26, + 25, 19, 14, 1, 3, 41, 118, 178, 185, 195, 196, 196, 199, 203, 204, 207, + 203, 200, 196, 199, 197, 196, 194, 193, 191, 186, 187, 187, 185, 186, 186, 182, + 172, 158, 150, 145, 152, 165, 176, 178, 174, 183, 181, 180, 176, 174, 172, 169, + 163, 149, 144, 144, 144, 148, 161, 179, 195, 197, 196, 195, 194, 183, 167, 155, + 154, 134, 144, 157, 167, 181, 199, 222, 238, 235, 238, 244, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, 32, 44, 43, + 30, 24, 25, 21, 2, 7, 32, 91, 168, 198, 203, 200, 196, 201, 206, 206, + 206, 202, 200, 196, 197, 196, 196, 193, 192, 189, 187, 188, 190, 188, 190, 188, + 179, 167, 141, 148, 160, 168, 171, 174, 183, 191, 194, 191, 186, 187, 187, 183, + 174, 160, 157, 152, 153, 149, 151, 162, 179, 195, 208, 205, 205, 209, 199, 181, + 165, 162, 142, 149, 159, 170, 184, 204, 224, 235, 235, 238, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 16, 34, + 44, 33, 29, 24, 22, 0, 2, 17, 67, 152, 186, 203, 200, 198, 203, 206, + 205, 205, 205, 199, 196, 197, 197, 196, 193, 192, 190, 187, 188, 189, 189, 190, + 186, 173, 156, 145, 155, 168, 173, 172, 175, 185, 195, 192, 189, 187, 188, 188, + 185, 177, 167, 159, 157, 159, 163, 170, 182, 194, 201, 202, 206, 208, 204, 196, + 187, 175, 160, 157, 161, 167, 175, 192, 214, 230, 235, 237, 239, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 8, + 27, 40, 36, 34, 31, 35, 13, 12, 24, 68, 151, 182, 200, 200, 200, 204, + 206, 202, 205, 209, 199, 197, 197, 197, 195, 194, 191, 190, 182, 184, 187, 188, + 188, 182, 164, 147, 164, 164, 165, 169, 174, 179, 182, 185, 181, 179, 177, 176, + 175, 171, 166, 161, 156, 149, 151, 158, 169, 176, 177, 175, 173, 185, 185, 175, + 173, 182, 176, 159, 171, 171, 176, 182, 202, 223, 235, 235, 237, 244, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 172, 22, 39, 40, 35, 42, 39, 17, 18, 21, 54, 139, 179, 197, 203, 205, + 203, 206, 209, 210, 205, 199, 195, 195, 194, 192, 193, 191, 192, 188, 185, 186, + 187, 189, 185, 172, 162, 167, 163, 162, 165, 169, 171, 167, 162, 157, 158, 156, + 147, 144, 144, 141, 135, 132, 129, 130, 139, 146, 154, 157, 155, 181, 179, 176, + 172, 168, 167, 168, 169, 179, 186, 191, 194, 208, 229, 237, 235, 240, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 25, 37, 40, 36, 40, 40, 27, 33, 28, 48, 126, 176, 196, 203, + 206, 204, 207, 209, 211, 206, 199, 195, 195, 194, 194, 193, 193, 192, 190, 187, + 186, 189, 191, 187, 178, 166, 170, 157, 157, 155, 131, 99, 96, 116, 128, 132, + 131, 127, 125, 126, 125, 121, 132, 131, 135, 142, 152, 155, 154, 149, 130, 133, + 139, 145, 154, 164, 174, 179, 188, 194, 198, 201, 213, 231, 239, 234, 241, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 178, 35, 38, 39, 37, 37, 31, 35, 24, 31, 104, 169, 195, + 203, 208, 207, 209, 210, 212, 207, 201, 197, 196, 195, 195, 193, 194, 192, 189, + 187, 189, 190, 193, 189, 183, 172, 173, 162, 161, 157, 129, 96, 93, 114, 115, + 121, 124, 121, 122, 124, 122, 118, 119, 123, 134, 149, 163, 170, 169, 168, 160, + 160, 164, 169, 177, 186, 194, 197, 196, 202, 206, 208, 219, 231, 236, 233, 246, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 179, 37, 46, 42, 37, 33, 31, 16, 17, 84, 167, + 192, 203, 209, 209, 210, 211, 213, 208, 202, 197, 198, 196, 196, 195, 196, 195, + 190, 188, 190, 192, 194, 191, 187, 179, 175, 173, 169, 159, 156, 157, 153, 148, + 149, 153, 158, 156, 157, 158, 157, 152, 140, 146, 160, 175, 191, 201, 205, 205, + 197, 196, 194, 193, 195, 195, 196, 195, 197, 202, 209, 213, 222, 232, 236, 234, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 37, 50, 50, 44, 44, 40, 27, 24, 77, + 168, 189, 202, 210, 210, 211, 212, 213, 209, 204, 200, 201, 198, 198, 197, 198, + 197, 190, 188, 190, 191, 192, 192, 189, 184, 179, 177, 170, 165, 172, 183, 180, + 170, 172, 175, 180, 176, 175, 176, 174, 167, 166, 167, 175, 184, 192, 199, 201, + 203, 192, 189, 190, 192, 198, 202, 204, 201, 199, 203, 212, 215, 223, 230, 235, + 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 181, 44, 45, 43, 48, 43, 42, 39, + 72, 156, 185, 200, 210, 211, 211, 211, 213, 211, 205, 202, 201, 201, 201, 199, + 200, 198, 194, 193, 194, 193, 193, 190, 189, 186, 184, 172, 171, 177, 176, 170, + 173, 185, 180, 185, 186, 182, 181, 182, 179, 174, 172, 173, 175, 178, 183, 186, + 190, 191, 199, 198, 197, 202, 209, 210, 210, 208, 202, 205, 211, 215, 219, 223, + 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 41, 35, 41, 34, 45, + 49, 68, 146, 181, 196, 210, 211, 211, 210, 212, 210, 206, 204, 204, 201, 201, + 200, 200, 199, 198, 197, 198, 195, 193, 192, 191, 189, 185, 178, 178, 182, 180, + 173, 180, 193, 198, 201, 202, 200, 202, 205, 204, 198, 191, 191, 193, 196, 200, + 203, 207, 209, 210, 207, 205, 205, 208, 207, 202, 197, 205, 205, 207, 208, 206, + 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 37, 35, 22, + 38, 51, 67, 143, 177, 195, 210, 211, 209, 210, 210, 210, 208, 205, 204, 203, + 201, 202, 200, 199, 203, 203, 202, 199, 196, 194, 194, 192, 182, 186, 180, 168, + 173, 186, 188, 180, 189, 193, 194, 193, 196, 201, 204, 199, 194, 194, 197, 198, + 201, 201, 203, 204, 210, 208, 207, 210, 213, 213, 208, 205, 207, 206, 207, 204, + 197, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 36, + 20, 18, 24, 55, 130, 175, 188, 202, 216, 220, 205, 197, 210, 208, 206, 203, + 205, 208, 208, 201, 193, 203, 202, 201, 202, 202, 200, 199, 193, 180, 177, 173, + 171, 172, 174, 179, 182, 186, 187, 189, 188, 185, 183, 188, 189, 191, 187, 187, + 186, 190, 193, 197, 198, 198, 194, 199, 209, 212, 205, 202, 210, 210, 210, 206, + 201, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, + 43, 32, 26, 24, 50, 122, 175, 190, 200, 211, 218, 207, 197, 201, 210, 207, + 204, 204, 205, 204, 200, 197, 202, 201, 201, 201, 203, 202, 200, 193, 182, 177, + 174, 172, 172, 174, 176, 180, 183, 184, 185, 182, 181, 180, 184, 184, 183, 182, + 183, 182, 181, 181, 187, 193, 197, 198, 205, 210, 210, 204, 203, 208, 210, 210, + 207, 202, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 186, 45, 38, 30, 44, 108, 175, 193, 200, 204, 215, 212, 201, 197, 206, + 205, 204, 203, 202, 201, 201, 202, 201, 200, 202, 202, 205, 203, 202, 195, 187, + 182, 180, 179, 177, 179, 179, 181, 183, 184, 185, 183, 180, 179, 180, 181, 178, + 180, 183, 178, 175, 176, 185, 193, 196, 205, 212, 212, 210, 208, 204, 202, 191, + 193, 193, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 42, 49, 44, 49, 101, 170, 196, 203, 200, 209, 213, 205, 198, + 199, 201, 202, 201, 199, 199, 202, 205, 201, 200, 201, 202, 205, 203, 202, 197, + 195, 191, 190, 189, 187, 185, 183, 182, 185, 184, 184, 182, 180, 179, 179, 179, + 179, 180, 179, 179, 180, 183, 192, 200, 201, 210, 214, 214, 215, 217, 205, 192, + 180, 186, 185, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 53, 58, 60, 104, 166, 198, 209, 203, 205, 210, 207, + 205, 192, 194, 197, 197, 199, 199, 203, 205, 200, 200, 201, 202, 205, 206, 204, + 200, 198, 197, 196, 195, 193, 191, 188, 185, 187, 184, 183, 183, 182, 181, 179, + 178, 178, 177, 175, 180, 187, 197, 203, 205, 206, 211, 214, 216, 223, 221, 201, + 181, 187, 190, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 48, 51, 97, 170, 201, 213, 207, 206, 206, + 206, 209, 193, 191, 191, 191, 194, 197, 200, 202, 201, 200, 202, 203, 208, 207, + 206, 202, 202, 199, 199, 197, 196, 191, 190, 187, 189, 188, 186, 184, 185, 184, + 181, 178, 180, 176, 174, 180, 193, 201, 205, 205, 211, 213, 215, 220, 222, 214, + 190, 169, 181, 183, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 91, 184, 205, 214, 209, 208, + 204, 200, 204, 199, 193, 187, 183, 187, 193, 197, 197, 201, 201, 203, 204, 210, + 209, 207, 205, 207, 206, 203, 201, 200, 199, 196, 193, 192, 190, 188, 189, 188, + 187, 183, 182, 182, 182, 182, 186, 194, 199, 201, 200, 212, 213, 219, 224, 220, + 199, 173, 158, 169, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 195, 209, 212, 209, + 211, 204, 197, 200, 208, 197, 182, 177, 181, 189, 193, 195, 201, 201, 202, 205, + 208, 210, 208, 206, 212, 211, 209, 207, 206, 205, 203, 201, 196, 192, 190, 190, + 192, 189, 184, 183, 186, 188, 190, 191, 193, 194, 196, 197, 212, 215, 222, 228, + 215, 184, 159, 152, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 209, 214, + 216, 212, 203, 200, 203, 201, 206, 202, 189, 171, 168, 178, 192, 198, 197, 197, + 202, 210, 215, 214, 212, 210, 210, 209, 207, 204, 205, 207, 207, 207, 202, 199, + 195, 193, 190, 186, 184, 193, 193, 189, 189, 192, 196, 204, 209, 209, 217, 226, + 228, 215, 193, 180, 180, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, + 215, 217, 214, 204, 198, 198, 200, 203, 205, 199, 190, 181, 177, 179, 185, 189, + 196, 202, 206, 207, 210, 212, 212, 212, 213, 210, 209, 208, 211, 214, 203, 202, + 198, 197, 195, 193, 190, 188, 190, 189, 186, 186, 188, 192, 197, 202, 213, 218, + 225, 229, 222, 204, 188, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 240, 209, 203, 198, 198, 201, 201, 203, 204, 199, 189, 175, 166, 169, + 180, 190, 198, 199, 200, 204, 207, 210, 211, 212, 209, 207, 208, 210, 211, 203, + 202, 199, 199, 199, 196, 192, 188, 190, 187, 184, 181, 182, 186, 191, 196, 213, + 216, 224, 234, 231, 215, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 237, 198, 196, 199, 203, 201, 202, 203, 202, 195, 182, 171, + 163, 169, 177, 184, 189, 191, 196, 199, 204, 205, 205, 203, 201, 200, 202, 204, + 207, 206, 203, 202, 200, 196, 189, 184, 190, 185, 181, 178, 179, 182, 188, 191, + 203, 211, 225, 239, 238, 223, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 235, 193, 196, 198, 201, 206, 204, 200, 193, + 185, 168, 165, 165, 169, 177, 182, 185, 187, 199, 201, 202, 200, 198, 197, 198, + 199, 205, 204, 204, 203, 203, 198, 191, 187, 186, 183, 178, 174, 174, 176, 184, + 187, 192, 208, 230, 244, 241, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 184, 189, 196, 202, 203, 198, + 194, 187, 176, 167, 160, 160, 165, 171, 175, 175, 193, 195, 197, 197, 196, 199, + 200, 203, 202, 201, 201, 201, 202, 199, 195, 191, 184, 179, 174, 169, 170, 174, + 180, 184, 193, 209, 230, 242, 236, 230, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 194, 194, 195, + 193, 190, 184, 183, 176, 168, 162, 160, 161, 165, 167, 176, 181, 185, 188, 191, + 195, 198, 203, 202, 201, 199, 201, 200, 198, 197, 192, 186, 181, 176, 171, 170, + 175, 182, 188, 208, 217, 229, 236, 231, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 189, + 190, 193, 195, 192, 188, 184, 177, 167, 159, 154, 157, 161, 158, 162, 168, 173, + 179, 184, 191, 194, 202, 201, 200, 198, 198, 195, 193, 189, 189, 184, 179, 173, + 175, 182, 191, 197, 228, 227, 231, 232, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 233, 194, 193, 186, 183, 186, 185, 174, 163, 156, 154, 152, 160, 158, 156, + 156, 160, 167, 177, 183, 186, 189, 194, 197, 200, 200, 200, 194, 183, 182, 182, + 183, 187, 194, 206, 216, 231, 229, 239, 242, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 239, 195, 179, 179, 176, 171, 167, 163, 158, 149, 153, 151, + 151, 152, 155, 160, 166, 169, 173, 177, 183, 190, 196, 198, 200, 197, 187, 184, + 185, 193, 203, 217, 229, 235, 236, 231, 237, 243, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 183, 178, 172, 166, 167, 167, 162, 154, 152, + 152, 154, 156, 157, 158, 159, 160, 164, 169, 175, 181, 188, 191, 193, 193, 194, + 190, 193, 204, 218, 230, 233, 236, 239, 225, 221, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 181, 169, 163, 166, 165, 160, + 154, 154, 156, 158, 159, 159, 159, 159, 162, 165, 171, 174, 179, 182, 184, 184, + 193, 196, 204, 214, 227, 230, 229, 224, 227, 209, 196, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 174, 168, 164, + 161, 159, 157, 157, 155, 157, 158, 160, 161, 166, 169, 172, 174, 176, 178, 180, + 184, 194, 203, 215, 226, 231, 226, 215, 208, 201, 189, 206, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, + 175, 168, 163, 159, 157, 154, 155, 156, 160, 161, 168, 169, 172, 176, 180, 183, + 184, 191, 205, 214, 226, 229, 226, 210, 192, 181, 186, 183, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 194, 169, 165, 163, 160, 158, 158, 158, 160, 168, 168, 172, 176, 179, + 184, 186, 192, 211, 217, 225, 228, 228, 216, 196, 183, 184, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 229, 172, 171, 167, 165, 162, 160, 159, 169, 169, 170, 171, + 176, 178, 182, 189, 206, 208, 217, 230, 243, 244, 230, 216, 185, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 233, 178, 174, 169, 164, 173, 172, 176, + 183, 185, 180, 182, 192, 202, 206, 221, 231, 217, 243, 241, 252, 243, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 170, 170, 167, + 168, 175, 180, 182, 190, 199, 205, 208, 216, 216, 196, 223, 232, 252, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 173, 169, 173, 179, 184, 192, 198, 205, 209, 217, 209, 181, 206, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 190, 189, 188, 187, 201, 207, 218, 211, 182, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy9' of size 143x134x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy9[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 241, 197, 212, 233, 255, 255, 250, 243, 250, 255, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, + 171, 176, 189, 199, 197, 191, 165, 180, 198, 208, 209, 208, 212, 215, 230, 243, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 131, 119, 127, 135, + 143, 162, 183, 200, 208, 195, 180, 167, 170, 186, 199, 201, 194, 198, 208, 223, + 240, 247, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 211, 118, 119, 123, 127, 133, 138, 136, + 143, 158, 178, 191, 218, 220, 216, 212, 207, 207, 208, 211, 180, 179, 190, 214, + 232, 230, 224, 221, 217, 225, 236, 250, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 106, 100, 102, 103, 107, 116, 123, 125, 128, + 141, 157, 170, 172, 199, 223, 226, 208, 192, 189, 194, 186, 178, 177, 184, 184, + 172, 166, 168, 166, 163, 163, 176, 199, 225, 241, 249, 247, 250, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 86, 74, 71, 82, 88, 88, 89, 101, 109, 109, 111, 119, + 128, 136, 138, 150, 165, 181, 191, 185, 170, 159, 154, 145, 136, 130, 124, 135, + 171, 212, 232, 200, 156, 130, 131, 152, 175, 190, 199, 205, 219, 234, 248, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, + 81, 77, 76, 75, 74, 74, 76, 77, 78, 83, 86, 93, 98, 101, 101, 99, + 98, 107, 113, 109, 101, 104, 119, 132, 134, 131, 134, 141, 145, 135, 127, 139, + 163, 182, 215, 175, 170, 195, 172, 164, 170, 184, 219, 225, 222, 228, 245, 255, + 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 73, 71, 70, + 71, 71, 71, 71, 72, 74, 76, 78, 78, 83, 88, 89, 86, 83, 83, 85, + 79, 83, 84, 84, 88, 99, 108, 111, 126, 110, 105, 120, 137, 140, 137, 140, + 156, 188, 210, 200, 193, 200, 203, 205, 218, 251, 255, 254, 245, 246, 255, 241, + 251, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 214, 112, 72, 71, 70, 68, 66, 66, + 66, 66, 67, 69, 72, 75, 77, 76, 81, 85, 82, 74, 70, 72, 76, 74, + 75, 81, 89, 93, 94, 98, 103, 106, 102, 103, 111, 117, 122, 136, 155, 132, + 124, 182, 186, 161, 182, 194, 201, 224, 249, 255, 255, 249, 246, 255, 255, 255, + 254, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 194, 71, 72, 72, 71, 70, 68, 67, 64, 64, + 64, 65, 67, 70, 73, 75, 74, 76, 77, 74, 70, 68, 70, 72, 82, 80, + 86, 97, 98, 92, 92, 100, 90, 99, 107, 102, 89, 93, 125, 163, 180, 129, + 153, 181, 171, 174, 188, 203, 191, 209, 222, 246, 255, 250, 255, 249, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 191, 63, 67, 67, 67, 66, 66, 65, 64, 64, 66, 65, 64, + 64, 65, 67, 69, 70, 70, 67, 65, 66, 69, 72, 71, 70, 76, 73, 77, + 86, 87, 81, 82, 89, 90, 88, 86, 84, 82, 89, 106, 125, 170, 135, 106, + 138, 153, 136, 150, 159, 161, 176, 196, 240, 255, 255, 247, 228, 241, 248, 255, + 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, + 64, 63, 67, 74, 63, 63, 63, 63, 63, 63, 63, 63, 66, 65, 64, 63, + 62, 63, 65, 65, 64, 59, 56, 59, 67, 71, 69, 65, 68, 67, 71, 75, + 77, 75, 79, 84, 84, 81, 82, 83, 87, 87, 89, 90, 127, 145, 107, 113, + 134, 122, 133, 129, 139, 146, 157, 200, 235, 245, 255, 250, 231, 242, 254, 255, + 255, 252, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 68, 78, 68, + 55, 53, 54, 60, 60, 60, 60, 61, 62, 63, 63, 62, 61, 60, 58, 58, + 59, 61, 61, 61, 58, 57, 59, 63, 65, 64, 61, 64, 67, 71, 68, 70, + 72, 77, 75, 74, 80, 89, 84, 80, 74, 79, 84, 91, 115, 107, 96, 106, + 113, 112, 107, 116, 121, 121, 143, 166, 186, 224, 241, 226, 235, 246, 253, 255, + 255, 255, 255, 255, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 68, 53, 56, 65, 60, 55, + 59, 60, 54, 54, 55, 55, 56, 58, 60, 60, 58, 58, 57, 56, 56, 58, + 59, 60, 62, 63, 64, 64, 62, 61, 61, 61, 55, 64, 66, 60, 58, 64, + 64, 59, 75, 76, 75, 70, 68, 70, 74, 79, 95, 84, 105, 97, 96, 110, + 99, 102, 95, 111, 112, 115, 112, 118, 153, 171, 222, 226, 232, 241, 250, 254, + 255, 252, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 193, 62, 64, 65, 62, 56, 52, 51, 54, 57, + 60, 59, 57, 55, 55, 56, 57, 56, 55, 54, 55, 56, 57, 59, 60, 62, + 62, 59, 59, 60, 60, 60, 59, 59, 58, 54, 55, 57, 57, 57, 57, 59, + 61, 59, 61, 63, 64, 65, 69, 73, 80, 81, 92, 94, 91, 91, 94, 96, + 91, 92, 92, 95, 97, 97, 96, 97, 102, 153, 198, 215, 215, 235, 251, 252, + 254, 255, 255, 242, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 195, 65, 60, 62, 59, 57, 55, 52, 52, 52, 54, 55, + 59, 57, 55, 54, 55, 56, 55, 54, 55, 55, 56, 57, 58, 59, 60, 61, + 59, 58, 58, 58, 58, 58, 58, 56, 55, 57, 59, 59, 59, 59, 61, 62, + 59, 61, 61, 60, 59, 59, 61, 64, 76, 82, 85, 79, 80, 83, 88, 85, + 88, 92, 96, 99, 98, 98, 99, 101, 135, 162, 189, 214, 234, 240, 241, 247, + 242, 255, 255, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 193, 66, 61, 57, 57, 56, 53, 53, 52, 51, 51, 50, 50, 56, + 54, 52, 51, 53, 53, 53, 51, 54, 54, 54, 55, 55, 55, 56, 56, 56, + 55, 54, 53, 53, 54, 56, 56, 55, 55, 57, 57, 56, 56, 58, 59, 61, + 62, 63, 62, 59, 57, 57, 60, 69, 73, 73, 68, 69, 73, 79, 79, 82, + 85, 91, 94, 96, 98, 100, 102, 129, 131, 160, 203, 226, 237, 246, 249, 255, + 249, 247, 246, 250, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 194, 65, 61, 60, 57, 51, 57, 54, 53, 52, 52, 52, 52, 52, 55, 53, + 50, 50, 51, 52, 51, 50, 54, 54, 54, 54, 54, 53, 53, 53, 55, 54, + 52, 51, 51, 53, 55, 56, 51, 52, 54, 54, 53, 53, 54, 56, 59, 62, + 64, 65, 64, 62, 62, 64, 65, 67, 68, 65, 66, 68, 74, 75, 81, 84, + 87, 91, 95, 100, 106, 111, 127, 116, 129, 151, 171, 201, 215, 200, 254, 251, + 255, 251, 255, 255, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 63, + 57, 57, 61, 59, 50, 57, 53, 51, 49, 49, 50, 52, 53, 53, 51, 49, + 49, 50, 51, 50, 49, 53, 53, 53, 53, 52, 52, 52, 52, 54, 52, 51, + 50, 50, 52, 55, 55, 51, 51, 52, 52, 51, 50, 52, 53, 52, 54, 58, + 59, 58, 57, 58, 60, 61, 63, 68, 68, 70, 68, 72, 72, 83, 83, 84, + 87, 91, 100, 110, 118, 137, 134, 131, 124, 140, 190, 202, 165, 162, 204, 243, + 231, 242, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 58, 53, 51, + 55, 60, 59, 53, 52, 50, 47, 45, 45, 47, 49, 51, 52, 50, 48, 48, + 49, 50, 49, 48, 52, 52, 51, 51, 51, 51, 51, 51, 52, 51, 51, 50, + 51, 53, 55, 55, 53, 53, 54, 54, 52, 52, 53, 54, 53, 55, 56, 56, + 55, 53, 54, 56, 60, 62, 65, 70, 71, 68, 69, 73, 75, 75, 76, 77, + 80, 88, 99, 107, 122, 139, 142, 136, 162, 221, 239, 211, 124, 140, 173, 188, + 193, 194, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 61, 55, 52, 54, 55, + 55, 55, 55, 48, 46, 46, 45, 45, 46, 47, 47, 50, 48, 46, 46, 47, + 48, 47, 46, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 51, 52, + 53, 54, 54, 52, 53, 54, 53, 52, 51, 52, 53, 57, 58, 58, 57, 55, + 54, 55, 57, 58, 58, 60, 65, 66, 64, 67, 73, 70, 70, 69, 69, 70, + 74, 82, 88, 86, 105, 115, 125, 153, 189, 215, 232, 198, 165, 152, 174, 174, + 163, 195, 226, 233, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 193, 94, 49, 65, 59, 58, 61, 57, 51, + 50, 55, 47, 47, 49, 50, 50, 49, 47, 46, 50, 48, 46, 45, 47, 47, + 47, 45, 48, 48, 48, 49, 49, 50, 50, 50, 49, 50, 51, 52, 53, 54, + 54, 54, 50, 50, 52, 51, 50, 48, 50, 51, 55, 55, 56, 54, 54, 53, + 57, 60, 57, 56, 56, 60, 61, 59, 64, 73, 73, 74, 74, 73, 72, 72, + 76, 78, 84, 89, 90, 103, 117, 115, 142, 196, 246, 226, 180, 168, 171, 192, + 203, 144, 176, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 195, 67, 68, 69, 57, 56, 55, 53, 51, 50, 49, + 49, 50, 49, 49, 48, 48, 49, 49, 50, 49, 49, 48, 48, 48, 48, 48, + 48, 52, 52, 51, 51, 51, 51, 51, 51, 55, 55, 54, 53, 53, 52, 51, + 50, 54, 53, 56, 53, 54, 52, 56, 56, 57, 53, 53, 50, 52, 52, 57, + 58, 60, 64, 64, 60, 61, 65, 66, 63, 69, 71, 73, 74, 75, 76, 79, + 81, 96, 83, 90, 107, 115, 123, 130, 130, 200, 233, 247, 228, 171, 180, 226, + 180, 154, 205, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 196, 72, 81, 65, 62, 58, 57, 55, 54, 51, 51, 50, 50, + 47, 47, 48, 48, 48, 48, 47, 47, 46, 46, 46, 47, 48, 48, 49, 49, + 48, 48, 48, 48, 48, 48, 48, 48, 50, 51, 51, 52, 53, 53, 54, 54, + 52, 53, 54, 53, 52, 52, 54, 57, 62, 61, 58, 55, 53, 52, 52, 52, + 63, 65, 65, 62, 63, 67, 68, 66, 68, 71, 74, 77, 78, 80, 82, 84, + 80, 93, 102, 94, 104, 138, 159, 145, 152, 187, 241, 255, 235, 206, 198, 205, + 187, 237, 250, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 74, 65, 78, 54, 52, 58, 57, 54, 53, 52, 51, 51, 51, 44, + 45, 47, 47, 47, 47, 45, 44, 43, 44, 44, 46, 47, 48, 49, 49, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 51, 52, 53, 53, 54, 51, + 52, 52, 52, 51, 51, 53, 55, 55, 55, 56, 56, 57, 58, 58, 59, 62, + 65, 65, 62, 63, 67, 69, 67, 68, 71, 76, 79, 81, 82, 84, 86, 91, + 88, 96, 98, 100, 116, 143, 153, 148, 175, 225, 249, 255, 242, 178, 203, 234, + 248, 248, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 194, 74, 55, 56, 51, 54, 56, 55, 52, 51, 50, 50, 50, 50, 43, 45, + 47, 48, 48, 47, 45, 43, 44, 44, 44, 45, 45, 46, 46, 47, 50, 50, + 51, 51, 51, 51, 52, 52, 55, 54, 54, 53, 52, 52, 51, 51, 50, 51, + 52, 51, 50, 51, 53, 55, 50, 52, 55, 58, 60, 62, 63, 64, 60, 63, + 63, 60, 61, 66, 67, 65, 69, 72, 77, 79, 80, 81, 82, 83, 97, 84, + 89, 100, 98, 102, 121, 138, 143, 169, 176, 182, 241, 255, 230, 220, 248, 248, + 253, 255, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 68, + 64, 55, 44, 62, 59, 51, 51, 49, 48, 46, 45, 46, 46, 44, 45, 47, + 49, 49, 47, 45, 44, 46, 46, 46, 45, 44, 44, 43, 43, 46, 46, 46, + 47, 47, 48, 48, 48, 56, 55, 55, 54, 53, 53, 52, 52, 51, 52, 53, + 52, 51, 51, 53, 55, 56, 57, 58, 59, 60, 60, 59, 59, 61, 64, 64, + 62, 62, 67, 68, 66, 70, 72, 75, 76, 76, 75, 76, 77, 75, 86, 96, + 92, 100, 129, 141, 126, 138, 173, 156, 142, 172, 232, 255, 239, 240, 255, 255, + 253, 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 59, 72, 61, + 64, 51, 68, 51, 49, 48, 47, 46, 44, 44, 44, 45, 45, 45, 47, 48, + 48, 47, 45, 45, 48, 47, 47, 46, 44, 43, 42, 42, 46, 46, 47, 48, + 48, 49, 50, 50, 51, 51, 52, 53, 53, 54, 55, 55, 51, 52, 52, 52, + 51, 51, 53, 55, 52, 53, 54, 57, 59, 62, 64, 65, 67, 70, 69, 66, + 66, 70, 71, 69, 70, 71, 72, 72, 70, 70, 71, 73, 74, 75, 86, 98, + 112, 131, 138, 125, 131, 170, 170, 160, 139, 174, 254, 254, 255, 237, 236, 252, + 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 125, 83, 69, 66, 63, 61, + 58, 58, 46, 49, 48, 45, 44, 44, 44, 45, 45, 44, 44, 45, 45, 45, + 45, 44, 44, 47, 47, 47, 46, 45, 45, 44, 44, 48, 48, 49, 50, 51, + 51, 52, 52, 49, 49, 50, 50, 51, 52, 52, 53, 49, 50, 51, 50, 49, + 49, 51, 54, 46, 47, 49, 53, 59, 64, 69, 72, 69, 72, 71, 67, 67, + 70, 70, 68, 68, 68, 68, 67, 66, 67, 70, 73, 85, 67, 75, 99, 109, + 110, 115, 119, 109, 130, 154, 161, 149, 171, 228, 255, 253, 199, 193, 232, 247, + 240, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 70, 65, 49, 60, 47, 56, + 46, 53, 49, 49, 46, 45, 45, 45, 46, 46, 44, 43, 43, 42, 42, 43, + 43, 44, 46, 46, 46, 46, 46, 46, 46, 46, 44, 45, 45, 46, 47, 48, + 49, 49, 51, 50, 50, 49, 48, 48, 47, 47, 47, 49, 49, 49, 47, 48, + 50, 52, 52, 52, 52, 53, 56, 60, 64, 67, 69, 72, 70, 66, 65, 68, + 68, 65, 67, 67, 66, 64, 64, 67, 71, 75, 76, 79, 84, 81, 88, 110, + 119, 103, 123, 110, 127, 131, 154, 181, 182, 212, 220, 185, 178, 194, 204, 228, + 251, 249, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 195, 73, 59, 56, 53, 51, 51, 50, 48, + 46, 49, 46, 43, 43, 44, 44, 41, 39, 41, 41, 41, 42, 42, 43, 43, + 43, 47, 46, 44, 43, 43, 44, 46, 47, 42, 42, 43, 43, 43, 43, 43, + 43, 47, 48, 49, 50, 50, 50, 50, 49, 50, 49, 49, 48, 48, 47, 47, + 46, 44, 46, 49, 53, 57, 60, 61, 62, 62, 64, 65, 64, 62, 62, 66, + 71, 60, 62, 64, 64, 65, 66, 69, 72, 83, 82, 81, 83, 90, 98, 109, + 115, 108, 113, 118, 129, 145, 156, 154, 145, 168, 230, 212, 212, 249, 245, 245, + 254, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 92, 52, 58, 55, 52, 51, 50, 49, 47, 46, + 48, 45, 43, 43, 44, 44, 41, 39, 41, 41, 41, 42, 42, 43, 43, 43, + 45, 45, 44, 44, 44, 44, 45, 45, 43, 44, 44, 44, 45, 46, 46, 46, + 47, 48, 49, 49, 50, 50, 49, 49, 50, 50, 49, 49, 49, 49, 49, 48, + 54, 54, 55, 55, 54, 54, 53, 52, 55, 56, 57, 57, 57, 57, 59, 61, + 57, 58, 60, 61, 61, 62, 65, 68, 75, 75, 75, 76, 81, 86, 94, 98, + 105, 108, 112, 119, 132, 144, 146, 143, 164, 244, 246, 231, 244, 247, 253, 252, + 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 189, 82, 52, 56, 54, 50, 49, 49, 48, 45, 43, 47, + 45, 42, 42, 43, 43, 39, 40, 41, 41, 41, 42, 42, 43, 43, 43, 43, + 44, 44, 45, 45, 44, 44, 43, 44, 44, 45, 46, 47, 48, 49, 49, 47, + 47, 48, 49, 50, 50, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 51, + 52, 53, 54, 54, 54, 54, 54, 54, 54, 54, 56, 58, 59, 58, 57, 56, + 57, 59, 59, 59, 60, 63, 66, 70, 70, 71, 73, 74, 76, 79, 80, 98, + 100, 102, 106, 115, 126, 133, 136, 136, 204, 237, 248, 255, 255, 254, 241, 231, + 229, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 74, 60, 61, 54, 52, 48, 47, 47, 47, 44, 42, 45, 44, + 43, 42, 42, 42, 39, 38, 41, 41, 41, 42, 42, 43, 43, 43, 42, 43, + 44, 45, 45, 44, 43, 42, 43, 44, 45, 46, 48, 49, 50, 51, 46, 47, + 48, 49, 49, 49, 49, 48, 47, 48, 48, 49, 49, 50, 50, 51, 48, 49, + 50, 52, 54, 55, 55, 56, 55, 54, 54, 57, 61, 61, 58, 55, 58, 60, + 61, 61, 61, 62, 65, 67, 71, 73, 75, 78, 79, 78, 78, 77, 89, 91, + 94, 96, 101, 109, 117, 122, 140, 146, 169, 210, 241, 255, 255, 255, 255, 243, + 252, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 193, 62, 61, 54, 51, 49, 46, 45, 44, 44, 42, 41, 42, 43, 43, + 42, 39, 39, 39, 39, 41, 41, 41, 42, 42, 43, 43, 43, 41, 42, 43, + 44, 44, 43, 42, 41, 42, 42, 43, 45, 46, 48, 49, 49, 46, 47, 48, + 48, 49, 49, 48, 48, 45, 46, 46, 47, 47, 48, 48, 49, 52, 52, 52, + 53, 52, 51, 50, 50, 53, 51, 51, 54, 58, 58, 55, 52, 58, 60, 61, + 61, 60, 61, 64, 66, 72, 74, 79, 82, 84, 83, 82, 81, 79, 82, 86, + 90, 93, 96, 104, 110, 128, 111, 132, 179, 222, 254, 255, 255, 246, 236, 251, + 235, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, + 71, 51, 65, 47, 49, 47, 44, 44, 42, 42, 41, 40, 40, 42, 43, 42, + 39, 38, 39, 40, 41, 41, 41, 42, 42, 43, 43, 43, 41, 42, 42, 43, + 43, 42, 42, 41, 42, 42, 43, 44, 45, 46, 47, 47, 46, 46, 47, 48, + 48, 48, 48, 48, 46, 46, 46, 46, 46, 47, 47, 47, 46, 47, 49, 51, + 52, 53, 54, 52, 55, 54, 54, 55, 58, 58, 57, 56, 56, 58, 59, 58, + 58, 58, 61, 63, 70, 72, 76, 79, 82, 83, 83, 83, 80, 81, 85, 91, + 93, 93, 96, 103, 102, 108, 133, 148, 186, 244, 255, 255, 220, 221, 248, 253, + 208, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 53, + 53, 55, 48, 47, 45, 43, 42, 41, 41, 40, 39, 39, 41, 41, 40, 38, + 37, 39, 41, 41, 41, 41, 42, 42, 43, 43, 43, 42, 42, 41, 41, 41, + 41, 42, 42, 43, 43, 43, 44, 45, 45, 45, 46, 45, 46, 47, 48, 48, + 48, 48, 47, 48, 47, 47, 47, 47, 47, 46, 46, 41, 43, 46, 49, 53, + 55, 57, 56, 55, 55, 56, 56, 55, 56, 58, 60, 55, 56, 57, 57, 56, + 57, 59, 61, 67, 67, 68, 69, 73, 76, 78, 80, 87, 84, 85, 92, 95, + 95, 96, 102, 121, 131, 142, 127, 152, 217, 251, 255, 255, 255, 255, 255, 249, + 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 53, 42, + 44, 44, 45, 42, 40, 40, 39, 40, 39, 38, 37, 39, 41, 40, 40, 39, + 41, 43, 41, 41, 41, 42, 44, 45, 45, 45, 45, 42, 40, 38, 38, 37, + 39, 40, 43, 44, 45, 45, 45, 45, 45, 45, 45, 46, 47, 48, 48, 48, + 48, 47, 50, 49, 49, 48, 48, 47, 47, 46, 49, 49, 50, 51, 51, 50, + 50, 50, 49, 50, 53, 50, 49, 49, 54, 57, 57, 57, 59, 58, 58, 57, + 60, 63, 65, 64, 65, 65, 67, 70, 74, 76, 95, 88, 87, 93, 98, 98, + 100, 106, 122, 140, 176, 182, 198, 216, 208, 226, 248, 255, 253, 255, 255, 255, + 251, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 54, 40, 48, 44, + 47, 41, 39, 35, 36, 37, 38, 36, 33, 34, 34, 35, 38, 39, 42, 43, + 42, 41, 41, 42, 45, 46, 46, 46, 46, 49, 47, 43, 40, 38, 35, 34, + 37, 42, 44, 44, 43, 43, 44, 44, 45, 44, 45, 46, 47, 47, 47, 46, + 46, 49, 50, 51, 53, 54, 56, 57, 57, 51, 51, 51, 50, 50, 49, 49, + 49, 52, 51, 54, 51, 51, 49, 53, 53, 56, 54, 55, 54, 57, 57, 62, + 63, 60, 63, 67, 68, 69, 71, 74, 77, 82, 78, 81, 90, 96, 99, 106, + 118, 139, 152, 173, 200, 233, 255, 255, 245, 251, 220, 211, 193, 243, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 56, 40, 43, 38, 38, + 42, 39, 37, 36, 37, 38, 35, 33, 34, 34, 35, 37, 39, 40, 43, 42, + 39, 37, 40, 41, 42, 42, 42, 42, 47, 46, 45, 42, 40, 36, 33, 34, + 42, 44, 44, 43, 43, 44, 44, 45, 45, 45, 45, 46, 46, 47, 47, 47, + 46, 46, 47, 48, 49, 50, 51, 52, 51, 51, 51, 51, 51, 51, 51, 51, + 57, 58, 58, 57, 55, 55, 57, 58, 58, 57, 57, 57, 57, 58, 60, 60, + 59, 62, 64, 66, 67, 70, 73, 76, 81, 77, 77, 83, 88, 91, 98, 110, + 141, 168, 187, 192, 195, 213, 240, 255, 242, 233, 205, 150, 172, 227, 253, 255, + 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 57, 42, 43, 41, 39, 45, + 45, 42, 41, 40, 38, 36, 33, 35, 35, 35, 36, 36, 37, 36, 36, 36, + 35, 37, 38, 39, 39, 40, 40, 43, 45, 47, 47, 47, 44, 39, 38, 44, + 44, 44, 43, 43, 44, 44, 45, 46, 45, 45, 45, 45, 46, 47, 48, 45, + 45, 45, 46, 46, 47, 47, 47, 50, 50, 51, 51, 52, 53, 53, 54, 57, + 58, 58, 56, 54, 54, 55, 57, 58, 58, 58, 58, 58, 58, 58, 58, 59, + 61, 63, 65, 66, 69, 73, 76, 80, 76, 75, 78, 80, 82, 87, 95, 124, + 160, 189, 190, 176, 180, 209, 235, 241, 235, 224, 198, 171, 178, 204, 255, 248, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 191, 60, 53, 39, 43, 46, 44, 47, 48, + 48, 45, 42, 40, 38, 36, 35, 34, 34, 34, 33, 33, 33, 33, 35, 36, + 36, 37, 38, 39, 40, 41, 42, 45, 47, 48, 49, 48, 46, 45, 47, 44, + 44, 43, 43, 44, 44, 45, 46, 46, 45, 45, 45, 46, 47, 48, 47, 47, + 47, 47, 47, 47, 47, 47, 48, 48, 49, 50, 52, 53, 54, 54, 57, 58, + 58, 56, 54, 53, 54, 56, 56, 56, 57, 58, 59, 59, 59, 59, 61, 63, + 65, 67, 68, 71, 75, 78, 79, 79, 79, 80, 81, 80, 81, 85, 96, 120, + 144, 158, 164, 172, 186, 198, 241, 233, 238, 253, 214, 183, 170, 234, 255, 235, + 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 60, 49, 44, 40, 40, 44, 38, 48, 50, 50, + 48, 46, 42, 41, 38, 34, 33, 32, 32, 30, 30, 30, 32, 32, 33, 35, + 36, 37, 39, 40, 42, 42, 44, 45, 46, 49, 52, 53, 52, 48, 44, 44, + 43, 43, 44, 44, 45, 46, 45, 45, 45, 46, 46, 47, 48, 48, 48, 48, + 47, 47, 47, 46, 46, 45, 46, 47, 48, 50, 51, 52, 53, 60, 61, 61, + 59, 57, 56, 58, 60, 54, 54, 55, 57, 59, 61, 62, 63, 66, 68, 69, + 69, 70, 73, 78, 81, 82, 86, 89, 90, 90, 89, 86, 85, 85, 85, 90, + 106, 130, 153, 171, 182, 221, 242, 240, 233, 222, 238, 201, 189, 195, 232, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 55, 41, 46, 50, 43, 45, 37, 47, 50, 51, 49, + 45, 43, 42, 42, 36, 35, 34, 34, 34, 34, 34, 36, 34, 36, 36, 36, + 37, 36, 37, 37, 41, 42, 44, 44, 48, 53, 56, 55, 48, 44, 44, 43, + 43, 44, 44, 45, 44, 45, 46, 47, 47, 47, 46, 46, 45, 45, 45, 45, + 45, 45, 44, 44, 45, 45, 46, 47, 49, 50, 51, 52, 55, 56, 57, 56, + 54, 54, 56, 58, 54, 54, 54, 55, 57, 61, 64, 66, 70, 70, 70, 70, + 70, 72, 77, 80, 84, 90, 95, 96, 98, 98, 95, 90, 95, 90, 89, 97, + 110, 125, 141, 154, 185, 231, 255, 238, 236, 255, 239, 221, 165, 222, 248, 252, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 189, 60, 41, 50, 55, 41, 46, 44, 43, 48, 49, 46, 44, + 42, 44, 44, 40, 40, 41, 42, 43, 44, 45, 46, 44, 45, 44, 43, 41, + 38, 36, 36, 39, 40, 43, 45, 49, 51, 54, 53, 48, 44, 44, 43, 43, + 44, 44, 45, 42, 44, 47, 49, 49, 48, 46, 44, 43, 44, 44, 44, 44, + 44, 44, 44, 46, 47, 47, 48, 49, 50, 51, 52, 49, 50, 51, 51, 50, + 50, 53, 55, 57, 55, 54, 53, 55, 59, 64, 66, 70, 70, 69, 67, 67, + 68, 73, 76, 78, 85, 89, 89, 92, 97, 97, 93, 97, 101, 109, 116, 115, + 113, 119, 131, 157, 190, 243, 255, 255, 242, 237, 255, 238, 193, 178, 242, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 61, 63, 38, 45, 49, 30, 42, 49, 40, 42, 44, 43, 41, 42, + 43, 47, 46, 47, 49, 50, 53, 54, 58, 59, 60, 60, 58, 55, 49, 44, + 40, 38, 37, 39, 42, 46, 48, 49, 49, 45, 47, 44, 44, 43, 43, 44, + 44, 45, 41, 43, 47, 50, 50, 48, 45, 43, 44, 44, 44, 45, 45, 46, + 46, 46, 48, 48, 49, 50, 50, 51, 52, 52, 49, 51, 52, 52, 52, 53, + 55, 58, 60, 58, 54, 53, 54, 58, 62, 66, 68, 68, 66, 64, 63, 65, + 69, 72, 71, 76, 79, 78, 82, 91, 95, 91, 87, 91, 100, 111, 115, 113, + 121, 134, 148, 146, 194, 219, 250, 222, 217, 242, 255, 229, 211, 210, 246, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 57, 45, 37, 40, 48, 48, 41, 34, 34, 40, 40, 36, 42, 50, 52, + 47, 45, 55, 67, 77, 82, 87, 90, 96, 100, 106, 100, 85, 64, 52, 45, + 40, 44, 44, 42, 43, 43, 42, 41, 41, 43, 43, 43, 44, 44, 45, 45, + 45, 44, 45, 45, 46, 46, 45, 45, 44, 44, 45, 47, 49, 49, 47, 45, + 44, 44, 45, 47, 47, 46, 47, 48, 50, 50, 51, 53, 55, 55, 54, 53, + 52, 55, 55, 56, 57, 58, 58, 59, 59, 61, 62, 62, 63, 64, 65, 66, + 66, 70, 71, 72, 74, 76, 79, 82, 83, 79, 83, 89, 96, 104, 112, 121, + 128, 154, 166, 132, 136, 194, 223, 220, 220, 230, 255, 244, 222, 244, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, + 76, 63, 51, 47, 48, 43, 38, 32, 32, 34, 35, 35, 39, 46, 51, 53, + 56, 74, 93, 106, 114, 119, 128, 138, 126, 132, 131, 121, 109, 94, 74, 57, + 50, 46, 41, 39, 41, 43, 43, 42, 42, 43, 43, 44, 44, 44, 45, 45, + 45, 46, 47, 48, 48, 47, 46, 45, 44, 46, 47, 49, 49, 47, 46, 44, + 43, 45, 47, 47, 46, 46, 48, 50, 50, 51, 51, 52, 53, 53, 52, 52, + 55, 55, 55, 55, 55, 55, 54, 54, 64, 64, 64, 64, 64, 65, 65, 65, + 69, 70, 71, 74, 76, 79, 81, 81, 79, 80, 83, 85, 90, 99, 108, 116, + 148, 154, 147, 136, 152, 192, 220, 212, 229, 254, 255, 252, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 68, + 58, 46, 44, 43, 40, 38, 37, 33, 32, 34, 39, 41, 44, 56, 68, 90, + 107, 127, 136, 136, 139, 147, 156, 145, 146, 145, 142, 139, 128, 106, 84, 67, + 55, 43, 38, 38, 40, 38, 39, 40, 43, 43, 43, 44, 44, 44, 45, 45, + 46, 48, 50, 50, 48, 46, 45, 45, 46, 47, 48, 48, 47, 46, 45, 43, + 45, 47, 47, 46, 46, 48, 50, 50, 50, 50, 50, 50, 51, 52, 53, 55, + 56, 56, 56, 56, 57, 57, 57, 67, 66, 65, 65, 64, 64, 65, 65, 68, + 69, 72, 74, 77, 79, 80, 79, 78, 77, 78, 78, 82, 91, 100, 108, 104, + 116, 155, 162, 156, 201, 231, 201, 242, 247, 255, 255, 255, 249, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 56, 51, 45, + 39, 39, 38, 37, 39, 41, 38, 34, 38, 48, 50, 53, 69, 90, 121, 133, + 143, 146, 143, 141, 145, 149, 149, 147, 143, 141, 142, 143, 131, 117, 92, 72, + 53, 40, 36, 35, 31, 30, 39, 42, 43, 43, 43, 44, 44, 44, 44, 46, + 48, 50, 50, 48, 46, 44, 44, 44, 45, 46, 46, 45, 44, 44, 45, 47, + 48, 49, 48, 48, 50, 52, 52, 51, 50, 49, 50, 51, 53, 54, 50, 51, + 53, 55, 57, 59, 61, 62, 66, 65, 64, 64, 64, 65, 66, 67, 69, 70, + 73, 76, 78, 79, 80, 79, 76, 78, 79, 82, 85, 93, 101, 109, 106, 100, + 129, 141, 156, 210, 243, 234, 247, 227, 236, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 43, 53, 47, 44, + 43, 38, 33, 32, 36, 39, 38, 44, 55, 62, 70, 89, 110, 133, 137, 140, + 141, 141, 143, 145, 146, 147, 147, 145, 142, 144, 148, 146, 140, 117, 96, 68, + 49, 40, 37, 31, 31, 39, 42, 42, 43, 43, 43, 44, 44, 43, 44, 46, + 48, 48, 46, 44, 43, 42, 43, 43, 43, 43, 43, 43, 42, 47, 49, 50, + 50, 50, 50, 52, 53, 53, 53, 51, 51, 51, 53, 54, 55, 48, 49, 51, + 53, 55, 57, 59, 59, 63, 63, 62, 62, 64, 66, 69, 70, 71, 72, 74, + 76, 78, 80, 81, 81, 79, 82, 86, 90, 93, 96, 101, 106, 115, 107, 117, + 130, 169, 202, 214, 249, 246, 217, 220, 251, 255, 255, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 60, 54, 47, 43, 42, + 39, 32, 30, 34, 40, 44, 50, 61, 73, 86, 106, 123, 140, 140, 138, 138, + 141, 145, 145, 143, 142, 146, 152, 149, 148, 148, 146, 141, 135, 112, 85, 62, + 50, 44, 39, 39, 38, 42, 42, 42, 43, 43, 43, 43, 44, 45, 45, 45, + 45, 45, 45, 44, 43, 43, 43, 43, 43, 43, 43, 43, 47, 49, 50, 51, + 50, 50, 52, 54, 53, 53, 52, 52, 53, 54, 54, 55, 57, 57, 57, 58, + 58, 58, 59, 59, 61, 61, 60, 60, 62, 66, 69, 71, 73, 73, 73, 74, + 76, 78, 80, 81, 82, 85, 90, 92, 93, 93, 96, 97, 105, 116, 132, 142, + 183, 193, 182, 248, 255, 238, 225, 237, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 59, 26, 63, 53, 43, 37, 35, 34, + 32, 30, 36, 45, 55, 60, 68, 84, 105, 122, 131, 136, 137, 139, 141, 140, + 140, 141, 138, 136, 141, 147, 146, 147, 147, 144, 140, 144, 125, 97, 71, 54, + 46, 43, 45, 40, 41, 42, 42, 42, 43, 43, 43, 47, 46, 45, 45, 45, + 45, 46, 47, 45, 45, 44, 44, 44, 44, 45, 45, 45, 47, 49, 49, 48, + 48, 50, 52, 51, 51, 52, 53, 53, 53, 53, 53, 60, 60, 60, 60, 59, + 59, 59, 59, 62, 61, 59, 59, 60, 64, 67, 69, 73, 72, 70, 70, 72, + 75, 78, 81, 83, 86, 89, 89, 90, 91, 94, 97, 113, 118, 130, 125, 162, + 183, 181, 253, 255, 255, 235, 222, 236, 251, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 56, 87, 92, 63, 50, 40, 36, 35, 32, + 32, 37, 51, 63, 69, 74, 92, 118, 134, 137, 119, 128, 137, 140, 140, 140, + 144, 142, 141, 140, 142, 141, 144, 149, 150, 146, 148, 129, 101, 74, 54, 44, + 41, 44, 41, 41, 41, 42, 42, 43, 43, 43, 50, 47, 45, 44, 44, 45, + 47, 49, 47, 46, 46, 45, 45, 46, 46, 47, 44, 45, 47, 47, 47, 47, + 48, 50, 49, 50, 52, 52, 53, 52, 51, 50, 50, 51, 51, 52, 54, 55, + 56, 56, 63, 62, 60, 58, 59, 61, 65, 67, 72, 70, 68, 67, 68, 72, + 77, 82, 82, 83, 85, 87, 87, 91, 97, 102, 95, 99, 130, 131, 163, 187, + 170, 210, 235, 254, 240, 219, 229, 240, 242, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 208, 76, 54, 45, 50, 37, 33, 42, 47, 42, 37, + 42, 51, 56, 69, 85, 102, 130, 144, 135, 136, 139, 142, 145, 144, 143, 149, + 156, 149, 141, 140, 139, 136, 128, 125, 126, 148, 133, 108, 77, 54, 45, 43, + 42, 44, 46, 46, 46, 44, 44, 43, 43, 45, 43, 42, 42, 43, 43, 43, + 45, 45, 46, 47, 47, 47, 46, 45, 45, 45, 45, 45, 46, 46, 46, 47, + 47, 51, 50, 50, 49, 49, 50, 49, 50, 50, 52, 53, 55, 57, 59, 61, + 60, 52, 55, 60, 62, 62, 61, 63, 66, 62, 63, 67, 70, 68, 67, 73, + 84, 86, 86, 84, 80, 78, 80, 89, 96, 91, 97, 104, 120, 148, 176, 181, + 174, 176, 203, 204, 242, 254, 255, 251, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 165, 141, 107, 64, 47, 36, 38, 40, 41, 46, 54, + 57, 61, 79, 98, 113, 133, 145, 138, 150, 150, 152, 153, 152, 149, 151, 154, + 154, 147, 142, 136, 129, 122, 129, 136, 139, 129, 105, 77, 55, 47, 45, 42, + 42, 43, 43, 43, 43, 41, 41, 40, 44, 42, 42, 41, 42, 42, 43, 44, + 44, 45, 46, 47, 47, 47, 46, 46, 48, 48, 49, 49, 50, 50, 50, 50, + 52, 52, 51, 49, 49, 48, 49, 49, 50, 50, 53, 55, 59, 60, 63, 61, + 55, 57, 61, 64, 63, 62, 60, 60, 63, 63, 67, 70, 68, 67, 73, 84, + 86, 87, 88, 83, 80, 80, 85, 91, 90, 95, 101, 112, 138, 167, 178, 174, + 188, 218, 215, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 54, 38, 68, 106, 66, 49, 36, 35, 37, 40, 47, 57, 63, + 68, 90, 113, 124, 132, 141, 142, 152, 150, 149, 153, 152, 147, 143, 141, 144, + 148, 152, 149, 138, 127, 129, 132, 135, 124, 104, 77, 58, 49, 47, 45, 44, + 46, 46, 46, 47, 47, 47, 46, 46, 44, 44, 43, 43, 44, 45, 45, 44, + 45, 46, 47, 48, 48, 48, 47, 46, 47, 47, 47, 48, 48, 48, 48, 53, + 52, 51, 50, 49, 49, 50, 50, 50, 51, 53, 55, 59, 60, 61, 60, 60, + 59, 61, 63, 64, 62, 58, 55, 64, 64, 67, 70, 69, 68, 73, 83, 83, + 86, 88, 84, 80, 78, 79, 82, 88, 92, 97, 103, 124, 152, 171, 176, 199, + 229, 222, 243, 247, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 201, 71, 33, 29, 41, 49, 40, 35, 37, 39, 40, 44, 52, 66, 70, + 96, 120, 128, 129, 140, 144, 150, 146, 144, 149, 150, 142, 136, 129, 122, 127, + 132, 136, 133, 129, 130, 132, 132, 122, 103, 77, 58, 50, 47, 47, 46, 49, + 49, 50, 49, 49, 50, 49, 47, 45, 45, 43, 45, 44, 45, 46, 43, 44, + 46, 47, 48, 49, 49, 49, 46, 46, 46, 47, 47, 47, 48, 48, 52, 52, + 50, 50, 50, 51, 51, 50, 51, 51, 54, 55, 58, 60, 61, 61, 64, 60, + 58, 59, 62, 63, 60, 56, 66, 64, 66, 69, 69, 67, 72, 80, 79, 83, + 86, 84, 80, 75, 75, 76, 83, 87, 92, 97, 114, 138, 161, 173, 213, 246, + 234, 249, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 58, 47, 53, 58, 45, 39, 36, 36, 39, 39, 40, 44, 51, 73, 77, 100, + 125, 129, 132, 142, 149, 149, 143, 143, 149, 150, 142, 134, 126, 116, 109, 104, + 103, 110, 127, 140, 147, 134, 124, 102, 76, 57, 51, 48, 48, 46, 47, 47, + 47, 48, 46, 47, 47, 48, 46, 46, 45, 46, 46, 47, 46, 44, 45, 46, + 48, 49, 49, 49, 49, 50, 50, 51, 51, 51, 52, 52, 52, 53, 53, 51, + 51, 51, 52, 52, 52, 51, 51, 54, 55, 57, 59, 60, 60, 63, 59, 55, + 55, 59, 63, 63, 62, 66, 64, 64, 67, 68, 66, 70, 77, 78, 82, 86, + 85, 82, 77, 78, 79, 80, 85, 89, 94, 107, 128, 148, 162, 191, 223, 215, + 233, 235, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, + 62, 49, 47, 36, 41, 39, 38, 37, 35, 38, 47, 58, 80, 88, 109, 128, + 132, 139, 149, 150, 142, 138, 138, 142, 143, 138, 128, 121, 130, 125, 119, 116, + 126, 138, 144, 141, 130, 122, 103, 80, 61, 53, 51, 49, 48, 50, 48, 48, + 48, 48, 48, 47, 48, 47, 47, 46, 47, 47, 48, 48, 45, 46, 47, 48, + 49, 49, 49, 48, 50, 50, 50, 50, 51, 51, 51, 52, 54, 54, 54, 52, + 53, 53, 54, 53, 52, 52, 54, 55, 57, 58, 60, 61, 61, 58, 55, 55, + 58, 62, 65, 66, 66, 63, 62, 65, 66, 65, 67, 71, 78, 82, 86, 86, + 84, 84, 85, 88, 84, 87, 90, 94, 104, 118, 134, 148, 149, 180, 180, 209, + 216, 232, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 77, 73, + 58, 44, 26, 35, 37, 38, 36, 35, 40, 53, 64, 86, 98, 117, 132, 135, + 145, 151, 143, 134, 130, 130, 133, 134, 126, 118, 114, 125, 131, 138, 140, 143, + 143, 137, 127, 123, 118, 105, 86, 68, 60, 54, 50, 53, 53, 52, 52, 51, + 50, 50, 48, 48, 47, 47, 44, 47, 46, 47, 47, 49, 49, 50, 51, 51, + 50, 50, 49, 50, 50, 50, 50, 51, 51, 52, 52, 55, 54, 54, 55, 55, + 55, 56, 56, 54, 54, 55, 55, 57, 58, 59, 59, 56, 58, 59, 60, 60, + 61, 63, 64, 66, 61, 60, 63, 64, 63, 65, 68, 75, 79, 82, 82, 83, + 86, 90, 95, 94, 93, 93, 93, 99, 108, 121, 132, 132, 160, 163, 200, 209, + 218, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 105, 68, 42, 50, + 54, 35, 21, 28, 36, 39, 40, 47, 55, 67, 88, 103, 123, 134, 137, 147, + 149, 135, 132, 129, 129, 130, 128, 120, 113, 110, 99, 110, 119, 123, 126, 132, + 133, 129, 115, 114, 104, 91, 75, 65, 56, 50, 51, 49, 48, 47, 45, 44, + 43, 43, 46, 46, 45, 44, 46, 45, 47, 48, 50, 51, 52, 52, 52, 51, + 50, 50, 54, 54, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 57, 57, + 58, 57, 55, 55, 56, 57, 57, 58, 59, 59, 53, 58, 63, 64, 62, 60, + 60, 61, 65, 61, 59, 62, 63, 62, 63, 66, 69, 72, 75, 77, 79, 84, + 91, 97, 104, 98, 95, 93, 94, 101, 111, 121, 114, 138, 140, 180, 185, 186, + 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 65, 49, 48, 40, + 41, 32, 30, 33, 37, 42, 46, 59, 74, 98, 108, 120, 133, 139, 141, 147, + 154, 133, 127, 126, 128, 124, 115, 107, 105, 111, 105, 107, 120, 127, 125, 120, + 118, 112, 107, 98, 87, 75, 68, 61, 54, 50, 46, 43, 42, 43, 44, 46, + 45, 44, 45, 46, 45, 48, 45, 47, 48, 48, 47, 52, 61, 62, 57, 55, + 58, 58, 55, 55, 58, 58, 56, 56, 59, 59, 59, 59, 61, 62, 62, 60, + 56, 61, 56, 53, 53, 58, 59, 54, 50, 56, 57, 58, 58, 56, 56, 57, + 58, 60, 61, 63, 65, 65, 65, 63, 62, 64, 69, 73, 75, 73, 74, 80, + 86, 95, 94, 96, 97, 96, 96, 102, 113, 110, 109, 113, 136, 162, 165, 170, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 66, 61, 70, 46, 28, 39, + 36, 34, 37, 45, 54, 63, 74, 90, 104, 113, 121, 133, 140, 141, 144, 149, + 143, 130, 120, 116, 115, 114, 112, 111, 109, 107, 113, 124, 131, 127, 122, 119, + 111, 105, 96, 86, 76, 68, 63, 55, 51, 47, 45, 44, 45, 43, 39, 36, + 44, 44, 44, 44, 45, 45, 45, 46, 53, 54, 57, 63, 64, 59, 57, 59, + 58, 56, 57, 62, 63, 60, 61, 64, 64, 63, 63, 65, 67, 66, 63, 61, + 64, 62, 60, 60, 63, 63, 60, 56, 58, 60, 60, 59, 57, 56, 57, 58, + 62, 62, 62, 62, 62, 63, 64, 64, 66, 70, 71, 72, 70, 71, 75, 78, + 88, 89, 92, 97, 95, 93, 96, 104, 105, 104, 105, 121, 147, 157, 162, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 167, 91, 31, 33, 46, 36, 36, + 34, 36, 48, 62, 73, 84, 98, 111, 116, 121, 132, 140, 141, 141, 143, 151, + 134, 117, 115, 115, 116, 115, 114, 111, 113, 121, 131, 135, 130, 125, 121, 109, + 103, 96, 87, 77, 70, 64, 58, 42, 40, 41, 44, 49, 49, 46, 44, 47, + 46, 45, 45, 44, 45, 47, 49, 59, 59, 60, 63, 63, 60, 59, 61, 59, + 58, 61, 66, 68, 65, 65, 68, 68, 68, 68, 70, 71, 71, 68, 66, 63, + 63, 62, 61, 61, 60, 58, 58, 60, 61, 62, 61, 59, 57, 58, 59, 63, + 62, 60, 59, 60, 61, 64, 65, 66, 67, 68, 70, 72, 74, 76, 77, 78, + 81, 88, 94, 93, 92, 93, 98, 106, 106, 102, 112, 137, 154, 159, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 77, 64, 94, 82, 43, 33, 43, 35, 33, + 37, 51, 68, 81, 91, 101, 117, 117, 121, 132, 141, 143, 142, 142, 151, 139, + 127, 123, 120, 114, 112, 112, 117, 123, 132, 138, 139, 132, 123, 120, 109, 103, + 95, 89, 80, 71, 66, 63, 45, 42, 45, 48, 52, 54, 54, 53, 53, 53, + 52, 51, 51, 51, 54, 56, 64, 64, 63, 64, 64, 63, 64, 65, 65, 64, + 67, 72, 74, 71, 71, 72, 74, 73, 74, 75, 77, 76, 73, 71, 64, 64, + 63, 62, 58, 57, 58, 57, 58, 59, 61, 60, 59, 58, 59, 61, 62, 61, + 60, 60, 60, 62, 63, 64, 66, 66, 67, 71, 76, 80, 82, 82, 76, 79, + 86, 93, 93, 90, 91, 96, 96, 104, 104, 109, 133, 153, 162, 200, 255, 255, + 255, 255, 255, 255, 255, 78, 58, 54, 47, 35, 43, 51, 36, 39, 38, 46, + 63, 82, 94, 104, 114, 117, 117, 121, 131, 142, 145, 146, 147, 152, 145, 138, + 127, 116, 107, 109, 113, 126, 133, 140, 141, 140, 133, 123, 117, 112, 104, 97, + 94, 86, 76, 71, 71, 67, 61, 57, 55, 56, 57, 57, 56, 63, 63, 63, + 63, 64, 64, 65, 65, 68, 68, 68, 67, 68, 70, 72, 72, 75, 73, 75, + 80, 81, 79, 78, 81, 83, 81, 83, 84, 86, 85, 82, 79, 75, 73, 72, + 69, 63, 60, 61, 61, 55, 56, 58, 59, 58, 59, 61, 63, 60, 61, 62, + 63, 64, 63, 62, 62, 66, 66, 68, 72, 77, 81, 82, 82, 86, 87, 89, + 92, 89, 86, 88, 92, 81, 98, 105, 109, 129, 148, 169, 187, 255, 255, 255, + 255, 255, 255, 255, 93, 67, 51, 48, 43, 37, 36, 29, 37, 40, 54, 75, + 92, 103, 113, 122, 116, 117, 122, 133, 143, 147, 151, 154, 157, 150, 141, 126, + 110, 101, 109, 120, 136, 138, 141, 139, 137, 133, 123, 116, 117, 108, 102, 100, + 93, 81, 77, 80, 79, 73, 68, 66, 70, 73, 75, 76, 75, 75, 79, 80, + 81, 81, 80, 80, 75, 76, 78, 74, 77, 79, 82, 78, 85, 81, 84, 87, + 91, 88, 91, 93, 94, 93, 93, 96, 97, 97, 94, 90, 88, 83, 77, 72, + 67, 64, 62, 60, 56, 56, 58, 59, 58, 59, 60, 62, 60, 61, 64, 65, + 66, 65, 63, 62, 68, 69, 71, 73, 75, 76, 78, 79, 95, 93, 92, 91, + 87, 80, 83, 88, 81, 97, 107, 113, 130, 149, 178, 207, 255, 255, 255, 255, + 255, 255, 77, 54, 51, 50, 50, 49, 36, 32, 45, 41, 48, 66, 83, 97, + 102, 111, 117, 115, 117, 125, 136, 143, 147, 151, 158, 161, 155, 146, 134, 120, + 111, 116, 124, 139, 141, 139, 135, 134, 135, 128, 116, 121, 111, 105, 105, 99, + 88, 82, 88, 84, 82, 80, 82, 88, 92, 97, 98, 92, 94, 98, 101, 102, + 102, 102, 99, 86, 88, 89, 85, 86, 88, 89, 85, 91, 87, 89, 93, 98, + 98, 104, 108, 106, 105, 105, 107, 108, 107, 104, 101, 101, 95, 85, 78, 74, + 69, 64, 60, 61, 60, 61, 60, 59, 58, 59, 61, 63, 63, 64, 65, 65, + 65, 65, 65, 67, 70, 75, 75, 75, 76, 81, 85, 90, 89, 89, 89, 84, + 80, 83, 88, 93, 99, 104, 114, 132, 150, 183, 220, 255, 255, 255, 255, 255, + 255, 98, 56, 68, 57, 43, 50, 53, 45, 52, 56, 65, 80, 96, 102, 103, + 107, 112, 116, 119, 128, 138, 143, 144, 152, 161, 159, 156, 152, 147, 137, 126, + 123, 123, 140, 139, 135, 130, 132, 136, 130, 120, 124, 114, 109, 111, 105, 91, + 90, 95, 98, 95, 95, 98, 101, 105, 106, 105, 107, 111, 115, 119, 121, 120, + 118, 115, 96, 100, 100, 95, 94, 97, 96, 91, 96, 93, 94, 100, 105, 107, + 115, 120, 115, 114, 116, 117, 117, 116, 114, 110, 117, 108, 97, 89, 86, 82, + 77, 68, 66, 64, 64, 63, 60, 57, 57, 58, 65, 64, 64, 63, 63, 67, + 69, 70, 66, 71, 77, 79, 78, 79, 87, 93, 77, 79, 83, 88, 88, 85, + 89, 94, 103, 98, 95, 106, 127, 143, 176, 218, 255, 255, 255, 255, 255, 189, + 81, 64, 64, 64, 63, 68, 74, 77, 74, 86, 89, 93, 98, 101, 107, 111, + 114, 117, 120, 124, 133, 142, 147, 148, 146, 148, 154, 152, 143, 134, 131, 132, + 131, 132, 128, 124, 124, 125, 126, 127, 125, 125, 125, 123, 118, 112, 106, 107, + 105, 103, 105, 107, 110, 114, 115, 117, 117, 126, 129, 128, 125, 127, 131, 130, + 124, 120, 119, 117, 116, 112, 112, 111, 111, 112, 115, 118, 119, 118, 118, 123, + 126, 137, 138, 137, 134, 129, 124, 118, 115, 113, 113, 110, 102, 92, 82, 78, + 74, 70, 62, 61, 62, 62, 56, 54, 54, 51, 56, 64, 68, 69, 69, 71, + 73, 74, 76, 80, 82, 84, 87, 89, 93, 91, 89, 87, 90, 93, 96, 96, + 94, 98, 94, 94, 100, 111, 125, 145, 165, 255, 255, 255, 255, 255, 68, 89, + 73, 76, 77, 77, 82, 88, 90, 86, 96, 97, 101, 104, 108, 111, 113, 117, + 117, 120, 125, 132, 141, 145, 147, 146, 145, 150, 148, 142, 134, 132, 133, 131, + 128, 124, 122, 122, 124, 126, 127, 126, 129, 125, 121, 118, 118, 118, 116, 114, + 114, 113, 117, 120, 124, 125, 126, 127, 131, 134, 133, 130, 130, 134, 134, 129, + 130, 131, 131, 130, 128, 128, 129, 129, 130, 133, 135, 136, 133, 134, 136, 141, + 142, 142, 141, 140, 135, 129, 125, 122, 119, 118, 117, 110, 100, 91, 88, 83, + 66, 59, 59, 63, 64, 60, 60, 62, 57, 58, 61, 63, 65, 67, 70, 74, + 73, 74, 76, 78, 80, 84, 91, 95, 97, 92, 89, 91, 98, 103, 104, 100, + 101, 96, 95, 100, 106, 114, 131, 146, 255, 255, 255, 255, 79, 78, 90, 83, + 87, 88, 89, 93, 97, 98, 93, 97, 98, 102, 104, 107, 109, 112, 114, 120, + 122, 125, 129, 136, 141, 144, 144, 145, 148, 146, 138, 130, 129, 129, 128, 123, + 121, 121, 122, 124, 126, 129, 128, 132, 125, 119, 119, 125, 128, 125, 122, 120, + 122, 124, 126, 130, 131, 133, 133, 135, 136, 135, 133, 133, 136, 136, 132, 135, + 137, 137, 138, 139, 141, 140, 141, 138, 140, 140, 141, 138, 138, 140, 144, 142, + 145, 145, 142, 141, 137, 133, 130, 130, 129, 126, 120, 113, 105, 103, 97, 78, + 69, 67, 66, 65, 60, 59, 59, 64, 61, 57, 57, 61, 66, 70, 72, 72, + 72, 72, 72, 74, 78, 85, 90, 98, 92, 90, 92, 98, 103, 106, 104, 106, + 103, 102, 105, 107, 112, 121, 135, 255, 255, 255, 255, 80, 82, 85, 88, 92, + 94, 95, 98, 101, 100, 95, 100, 100, 103, 105, 107, 108, 110, 113, 120, 121, + 123, 124, 130, 134, 139, 141, 145, 147, 144, 133, 127, 126, 123, 119, 119, 119, + 121, 123, 125, 127, 131, 131, 130, 126, 124, 125, 129, 131, 129, 126, 124, 125, + 127, 131, 133, 133, 134, 134, 137, 137, 136, 136, 137, 138, 137, 135, 136, 136, + 136, 137, 138, 139, 139, 140, 138, 138, 138, 138, 136, 136, 136, 139, 144, 144, + 146, 145, 145, 142, 140, 137, 134, 133, 130, 127, 120, 115, 111, 106, 90, 79, + 74, 72, 67, 61, 58, 60, 65, 61, 56, 58, 63, 68, 71, 71, 73, 72, + 72, 71, 69, 72, 75, 79, 91, 90, 88, 89, 91, 96, 100, 106, 112, 111, + 109, 114, 116, 118, 130, 141, 255, 255, 255, 96, 92, 86, 87, 93, 96, 98, + 98, 101, 104, 101, 96, 107, 108, 109, 110, 112, 113, 114, 117, 118, 118, 118, + 118, 122, 125, 131, 136, 141, 141, 139, 129, 125, 123, 120, 117, 118, 120, 123, + 125, 127, 128, 132, 133, 125, 127, 130, 131, 131, 129, 128, 128, 128, 129, 132, + 133, 134, 134, 135, 137, 141, 137, 135, 138, 139, 137, 137, 137, 137, 138, 137, + 137, 136, 136, 137, 138, 142, 141, 140, 140, 141, 141, 141, 142, 144, 144, 146, + 146, 146, 145, 145, 143, 135, 133, 130, 127, 124, 121, 116, 111, 94, 84, 77, + 76, 74, 70, 69, 69, 65, 62, 60, 63, 68, 71, 71, 69, 71, 74, 77, + 77, 74, 74, 75, 74, 77, 83, 85, 83, 81, 83, 92, 102, 113, 112, 115, + 119, 127, 133, 148, 161, 255, 255, 255, 85, 99, 93, 96, 99, 101, 102, 100, + 103, 106, 104, 99, 107, 107, 108, 109, 111, 112, 113, 116, 115, 116, 116, 116, + 118, 119, 123, 128, 129, 130, 129, 125, 122, 124, 124, 121, 119, 122, 126, 127, + 127, 128, 131, 133, 123, 127, 132, 133, 131, 128, 128, 130, 132, 132, 135, 137, + 137, 138, 139, 139, 143, 139, 137, 140, 142, 140, 139, 141, 142, 142, 141, 140, + 138, 138, 138, 138, 144, 142, 141, 141, 143, 144, 143, 143, 145, 146, 146, 146, + 146, 145, 146, 145, 142, 139, 136, 136, 135, 131, 127, 122, 112, 100, 91, 86, + 81, 75, 72, 72, 69, 66, 67, 70, 71, 72, 71, 70, 70, 74, 78, 81, + 81, 80, 79, 80, 70, 76, 81, 79, 75, 78, 88, 98, 108, 109, 115, 126, + 137, 148, 164, 179, 255, 255, 200, 87, 98, 100, 102, 103, 106, 105, 102, 104, + 107, 107, 103, 104, 104, 106, 107, 109, 110, 113, 114, 115, 117, 118, 117, 115, + 117, 120, 123, 122, 124, 123, 120, 122, 125, 126, 122, 119, 122, 127, 127, 126, + 125, 128, 130, 128, 127, 127, 128, 130, 132, 133, 133, 135, 135, 137, 137, 138, + 140, 139, 139, 147, 141, 141, 144, 145, 142, 141, 144, 143, 142, 141, 140, 140, + 140, 139, 140, 142, 138, 137, 139, 141, 142, 141, 140, 148, 149, 149, 148, 148, + 146, 146, 145, 148, 146, 144, 143, 144, 143, 139, 132, 133, 119, 107, 98, 90, + 81, 75, 74, 77, 76, 77, 76, 72, 71, 71, 72, 71, 73, 76, 79, 78, + 79, 79, 81, 72, 74, 75, 78, 79, 81, 87, 92, 104, 109, 119, 135, 150, + 161, 176, 211, 255, 255, 96, 100, 96, 103, 100, 106, 107, 104, 101, 102, 106, + 107, 103, 106, 107, 109, 110, 112, 113, 116, 117, 115, 117, 118, 117, 115, 115, + 116, 119, 121, 121, 121, 118, 119, 123, 123, 120, 119, 122, 127, 127, 124, 122, + 125, 127, 133, 127, 122, 123, 130, 136, 138, 137, 134, 134, 136, 137, 138, 138, + 138, 137, 150, 144, 143, 148, 149, 145, 144, 146, 139, 139, 138, 138, 138, 138, + 138, 139, 141, 139, 136, 138, 141, 142, 141, 142, 152, 152, 150, 149, 148, 147, + 146, 146, 147, 144, 143, 143, 146, 144, 140, 134, 136, 124, 114, 106, 99, 91, + 88, 87, 87, 86, 85, 79, 73, 69, 71, 74, 73, 74, 75, 74, 72, 72, + 76, 77, 78, 75, 73, 76, 84, 89, 90, 89, 102, 109, 123, 144, 160, 171, + 183, 255, 255, 255, 90, 93, 102, 107, 105, 103, 105, 107, 106, 106, 104, 104, + 105, 106, 107, 110, 113, 116, 117, 116, 114, 112, 112, 115, 117, 117, 119, 119, + 119, 122, 122, 124, 124, 125, 126, 125, 125, 118, 123, 130, 133, 133, 131, 130, + 129, 126, 122, 124, 129, 131, 129, 131, 137, 137, 138, 140, 141, 144, 145, 148, + 148, 149, 146, 145, 145, 145, 145, 144, 143, 143, 142, 141, 140, 139, 139, 139, + 140, 143, 139, 135, 133, 137, 140, 141, 143, 144, 146, 149, 151, 148, 145, 148, + 154, 149, 148, 148, 148, 149, 148, 147, 146, 137, 138, 135, 125, 117, 112, 104, + 94, 95, 91, 88, 83, 79, 75, 73, 73, 69, 78, 81, 74, 75, 83, 82, + 72, 68, 75, 72, 68, 77, 82, 91, 108, 104, 107, 121, 155, 183, 182, 183, + 255, 255, 255, 90, 100, 102, 101, 107, 103, 105, 106, 106, 106, 104, 104, 105, + 108, 108, 111, 114, 117, 118, 116, 114, 113, 113, 114, 115, 116, 117, 119, 119, + 121, 122, 122, 124, 124, 124, 123, 122, 123, 123, 123, 122, 121, 124, 131, 135, + 128, 124, 125, 130, 131, 129, 130, 137, 136, 136, 138, 140, 142, 143, 146, 146, + 149, 147, 146, 145, 146, 145, 145, 142, 143, 143, 142, 142, 141, 140, 140, 140, + 146, 144, 142, 142, 143, 145, 144, 145, 152, 149, 148, 151, 150, 147, 146, 148, + 151, 151, 149, 148, 148, 147, 146, 146, 143, 143, 140, 130, 125, 123, 119, 112, + 108, 103, 99, 93, 87, 81, 76, 71, 77, 83, 85, 80, 81, 88, 87, 81, + 75, 80, 77, 76, 84, 90, 100, 117, 125, 135, 140, 156, 190, 210, 220, 255, + 255, 153, 92, 107, 102, 95, 109, 105, 107, 108, 108, 106, 104, 106, 107, 111, + 111, 112, 115, 118, 119, 117, 115, 116, 115, 114, 113, 115, 116, 117, 118, 119, + 120, 123, 125, 124, 123, 121, 120, 125, 124, 122, 119, 119, 123, 131, 137, 130, + 127, 128, 130, 130, 129, 130, 135, 136, 137, 140, 140, 142, 145, 147, 147, 150, + 147, 147, 146, 147, 146, 145, 144, 145, 146, 144, 145, 145, 143, 141, 140, 145, + 143, 141, 142, 144, 145, 142, 142, 153, 148, 144, 148, 151, 149, 146, 145, 150, + 149, 149, 149, 149, 149, 150, 148, 146, 146, 143, 138, 135, 137, 137, 133, 123, + 117, 113, 108, 103, 94, 86, 79, 84, 85, 85, 86, 86, 88, 88, 87, 75, + 82, 79, 79, 88, 94, 103, 118, 121, 139, 148, 165, 200, 218, 255, 255, 255, + 166, 96, 108, 104, 96, 107, 104, 106, 108, 108, 106, 105, 106, 107, 113, 113, + 114, 116, 119, 119, 117, 115, 117, 116, 114, 112, 114, 115, 117, 119, 120, 122, + 124, 126, 125, 123, 120, 119, 121, 124, 128, 130, 129, 129, 131, 132, 129, 128, + 129, 130, 131, 131, 132, 136, 138, 139, 142, 144, 147, 147, 149, 149, 151, 150, + 149, 149, 149, 149, 148, 145, 145, 147, 146, 147, 147, 145, 142, 140, 142, 141, + 139, 139, 140, 142, 141, 143, 147, 143, 143, 148, 151, 150, 148, 150, 148, 147, + 147, 148, 149, 151, 153, 154, 146, 148, 147, 144, 144, 147, 147, 143, 134, 128, + 125, 123, 119, 112, 103, 95, 92, 89, 90, 93, 93, 88, 86, 89, 77, 85, + 84, 84, 92, 97, 100, 112, 106, 122, 148, 181, 206, 205, 255, 255, 255, 180, + 103, 107, 110, 105, 105, 105, 106, 108, 108, 107, 106, 107, 108, 114, 114, 115, + 117, 119, 118, 116, 114, 119, 117, 115, 114, 113, 115, 117, 118, 122, 123, 125, + 126, 125, 124, 122, 120, 119, 124, 130, 133, 133, 131, 131, 131, 126, 128, 129, + 129, 131, 134, 136, 138, 139, 141, 143, 144, 147, 148, 150, 150, 154, 152, 151, + 151, 151, 151, 150, 149, 146, 147, 149, 150, 148, 146, 144, 142, 143, 142, 140, + 139, 138, 141, 145, 148, 144, 144, 147, 150, 149, 147, 149, 155, 148, 148, 148, + 148, 150, 150, 151, 152, 145, 149, 152, 150, 150, 153, 149, 145, 142, 138, 134, + 132, 129, 123, 117, 111, 106, 102, 101, 103, 98, 91, 85, 86, 84, 93, 93, + 94, 103, 104, 102, 109, 106, 125, 151, 184, 212, 228, 255, 255, 255, 171, 106, + 104, 112, 114, 104, 104, 105, 107, 107, 107, 106, 107, 108, 115, 114, 115, 116, + 118, 117, 115, 113, 120, 119, 118, 115, 114, 115, 116, 117, 122, 123, 123, 123, + 123, 123, 124, 123, 122, 123, 125, 126, 125, 126, 131, 133, 125, 128, 130, 129, + 131, 136, 138, 139, 137, 139, 141, 143, 145, 146, 148, 148, 154, 153, 151, 152, + 153, 152, 151, 149, 147, 148, 149, 149, 147, 146, 144, 143, 141, 140, 139, 137, + 134, 135, 139, 142, 146, 147, 150, 152, 150, 145, 149, 156, 153, 153, 152, 152, + 152, 150, 148, 147, 146, 150, 154, 152, 153, 154, 151, 146, 149, 147, 143, 137, + 133, 128, 126, 124, 121, 117, 112, 103, 95, 88, 83, 79, 86, 93, 92, 95, + 106, 108, 107, 113, 118, 142, 160, 180, 222, 255, 255, 255, 255, 141, 106, 103, + 109, 118, 106, 104, 105, 108, 108, 107, 107, 109, 111, 114, 114, 115, 116, 117, + 116, 113, 111, 119, 119, 119, 118, 116, 115, 115, 115, 121, 120, 119, 119, 121, + 122, 124, 124, 122, 121, 122, 121, 121, 123, 129, 133, 127, 131, 132, 129, 131, + 136, 138, 137, 139, 140, 143, 143, 145, 146, 148, 148, 153, 151, 150, 151, 152, + 151, 150, 149, 148, 148, 148, 148, 147, 147, 144, 144, 139, 140, 141, 139, 133, + 130, 129, 130, 141, 140, 141, 145, 147, 144, 146, 150, 150, 151, 154, 155, 154, + 151, 148, 146, 151, 154, 156, 152, 153, 157, 156, 150, 154, 153, 151, 144, 138, + 139, 143, 148, 143, 140, 126, 106, 92, 91, 87, 79, 87, 91, 89, 93, 108, + 116, 120, 129, 133, 158, 177, 196, 233, 255, 255, 255, 167, 114, 106, 107, 107, + 120, 109, 104, 106, 108, 110, 109, 109, 111, 112, 115, 114, 114, 115, 116, 115, + 112, 109, 117, 119, 117, 117, 117, 116, 114, 114, 119, 118, 116, 115, 117, 119, + 123, 123, 119, 120, 124, 125, 125, 125, 128, 129, 129, 134, 134, 130, 130, 136, + 137, 135, 139, 141, 143, 146, 147, 148, 149, 150, 151, 149, 148, 148, 150, 149, + 148, 147, 150, 148, 148, 146, 146, 146, 146, 145, 144, 146, 150, 147, 140, 132, + 128, 125, 133, 128, 128, 136, 142, 144, 145, 146, 143, 146, 152, 156, 157, 156, + 154, 152, 155, 159, 156, 152, 152, 156, 157, 154, 154, 155, 154, 150, 144, 148, + 158, 168, 255, 255, 218, 113, 98, 102, 100, 92, 93, 97, 92, 96, 116, 129, + 139, 150, 154, 175, 201, 225, 241, 255, 255, 255, 140, 121, 116, 100, 110, 114, + 109, 105, 104, 107, 110, 112, 114, 116, 117, 113, 115, 118, 118, 117, 116, 117, + 118, 114, 120, 119, 112, 112, 120, 122, 117, 119, 115, 114, 117, 120, 119, 122, + 126, 117, 121, 124, 127, 127, 127, 130, 131, 130, 130, 131, 131, 132, 133, 136, + 137, 138, 138, 140, 142, 144, 147, 148, 149, 150, 151, 152, 152, 152, 150, 150, + 150, 148, 149, 150, 148, 147, 146, 145, 143, 140, 140, 145, 144, 142, 136, 133, + 129, 116, 123, 120, 116, 126, 141, 143, 131, 136, 140, 146, 152, 154, 158, 159, + 160, 154, 155, 152, 148, 152, 158, 158, 152, 156, 136, 146, 166, 146, 180, 221, + 255, 255, 255, 255, 255, 156, 102, 87, 93, 100, 114, 113, 113, 131, 151, 162, + 173, 189, 212, 232, 255, 255, 255, 255, 255, 119, 113, 112, 103, 112, 115, 112, + 109, 109, 111, 112, 114, 115, 118, 118, 117, 118, 117, 116, 113, 111, 111, 110, + 115, 117, 116, 113, 114, 118, 120, 118, 120, 116, 114, 117, 120, 119, 121, 126, + 119, 122, 125, 126, 126, 126, 130, 131, 131, 131, 131, 132, 133, 134, 137, 138, + 137, 138, 140, 141, 145, 145, 148, 148, 149, 149, 149, 150, 151, 149, 148, 148, + 149, 151, 152, 151, 148, 146, 144, 141, 138, 139, 141, 142, 144, 145, 143, 141, + 132, 129, 122, 114, 116, 126, 128, 123, 132, 136, 142, 147, 154, 157, 160, 161, + 160, 156, 158, 162, 162, 154, 150, 154, 144, 189, 142, 168, 195, 198, 255, 255, + 255, 255, 255, 255, 255, 127, 117, 117, 111, 121, 121, 123, 144, 167, 180, 188, + 209, 234, 241, 255, 255, 255, 255, 255, 107, 111, 113, 104, 110, 108, 106, 112, + 112, 113, 113, 115, 115, 117, 119, 118, 118, 117, 116, 112, 111, 110, 111, 118, + 115, 114, 117, 118, 116, 117, 120, 120, 116, 115, 118, 121, 119, 121, 125, 122, + 124, 125, 125, 126, 127, 130, 132, 132, 132, 132, 132, 135, 136, 138, 138, 139, + 139, 141, 141, 145, 146, 149, 150, 148, 148, 149, 149, 150, 147, 147, 147, 149, + 150, 151, 151, 150, 147, 143, 141, 130, 127, 127, 132, 140, 146, 149, 149, 140, + 134, 125, 116, 112, 113, 117, 119, 127, 130, 137, 143, 152, 156, 158, 158, 162, + 153, 157, 167, 163, 149, 148, 161, 147, 177, 161, 201, 232, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 137, 142, 132, 136, 136, 139, 163, 190, 206, 209, 201, + 233, 255, 255, 255, 255, 255, 255, 136, 113, 115, 108, 113, 108, 108, 111, 111, + 112, 113, 115, 118, 119, 119, 118, 119, 119, 117, 115, 115, 115, 117, 120, 113, + 113, 120, 121, 115, 115, 122, 120, 117, 116, 119, 121, 120, 121, 125, 127, 125, + 126, 125, 126, 127, 130, 132, 132, 132, 132, 132, 135, 136, 137, 138, 140, 140, + 141, 144, 146, 149, 150, 151, 149, 150, 151, 151, 151, 150, 149, 147, 147, 148, + 150, 152, 151, 148, 146, 144, 128, 124, 122, 125, 133, 141, 145, 145, 148, 142, + 138, 133, 125, 115, 112, 115, 120, 124, 132, 140, 148, 154, 154, 153, 164, 153, + 153, 159, 159, 152, 156, 165, 177, 153, 190, 218, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 145, 142, 142, 145, 153, 172, 205, 228, 225, 203, 214, + 248, 252, 250, 255, 255, 255, 221, 112, 110, 109, 118, 113, 118, 107, 108, 110, + 112, 114, 118, 120, 121, 120, 121, 120, 117, 115, 115, 116, 118, 120, 114, 115, + 122, 122, 115, 116, 122, 120, 117, 119, 122, 122, 120, 122, 124, 127, 128, 128, + 127, 127, 128, 131, 134, 133, 133, 133, 133, 135, 136, 138, 138, 141, 142, 144, + 145, 147, 150, 151, 152, 154, 154, 155, 154, 154, 152, 152, 151, 145, 147, 148, + 150, 151, 150, 149, 146, 140, 134, 127, 124, 125, 128, 128, 126, 139, 138, 143, + 145, 139, 124, 116, 114, 113, 116, 124, 135, 147, 152, 153, 151, 160, 160, 158, + 156, 158, 163, 163, 161, 162, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 219, 146, 159, 169, 181, 214, 241, 236, 213, 242, 224, + 212, 255, 255, 255, 255, 255, 114, 106, 107, 114, 107, 113, 106, 107, 109, 112, + 116, 118, 121, 122, 124, 124, 121, 118, 113, 111, 113, 114, 119, 117, 118, 121, + 121, 117, 117, 119, 121, 118, 120, 123, 123, 120, 121, 124, 126, 127, 128, 128, + 129, 129, 132, 134, 134, 134, 134, 135, 136, 137, 139, 139, 142, 142, 145, 147, + 150, 151, 153, 153, 157, 157, 157, 157, 157, 155, 154, 153, 147, 148, 148, 149, + 150, 151, 149, 149, 148, 143, 134, 124, 116, 110, 106, 103, 105, 110, 123, 132, + 136, 133, 128, 122, 113, 114, 118, 127, 139, 149, 153, 153, 151, 160, 162, 158, + 159, 164, 165, 157, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 225, 184, 193, 192, 220, 249, 242, 227, 216, 255, 255, + 255, 255, 255, 255, 255, 118, 105, 105, 112, 100, 105, 109, 111, 113, 114, 117, + 119, 121, 123, 128, 126, 123, 120, 114, 112, 114, 116, 117, 121, 121, 119, 120, + 121, 120, 116, 123, 120, 121, 124, 125, 121, 121, 124, 124, 127, 129, 131, 133, + 133, 135, 136, 138, 138, 137, 139, 140, 141, 142, 143, 145, 145, 147, 147, 150, + 152, 154, 156, 160, 160, 160, 158, 158, 156, 155, 153, 152, 151, 149, 149, 149, + 149, 148, 149, 147, 146, 140, 130, 116, 106, 102, 100, 97, 103, 110, 115, 126, + 139, 142, 135, 129, 123, 117, 119, 128, 138, 146, 149, 152, 156, 162, 163, 158, + 162, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 115, 103, 109, 119, 103, 110, 113, 114, 115, 116, 118, 120, + 122, 122, 128, 128, 125, 122, 118, 119, 121, 123, 116, 123, 124, 118, 118, 123, + 121, 114, 123, 121, 121, 124, 125, 122, 121, 123, 122, 126, 129, 134, 134, 134, + 135, 137, 140, 140, 141, 141, 142, 143, 144, 145, 145, 145, 147, 150, 152, 153, + 156, 156, 161, 161, 161, 160, 160, 157, 156, 154, 159, 155, 152, 148, 147, 147, + 149, 148, 147, 151, 150, 141, 128, 118, 116, 117, 128, 128, 124, 115, 123, 142, + 146, 138, 147, 135, 120, 113, 116, 126, 135, 140, 163, 161, 163, 167, 162, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 208, 111, 110, 112, 110, 108, 113, 113, 112, 111, 116, 122, 126, + 125, 129, 127, 123, 120, 117, 118, 119, 120, 124, 124, 123, 123, 122, 121, 122, + 121, 118, 123, 128, 129, 128, 127, 129, 131, 136, 134, 132, 132, 133, 134, 136, + 139, 144, 144, 145, 146, 147, 148, 147, 146, 147, 148, 151, 152, 155, 157, 160, + 161, 158, 159, 163, 164, 164, 160, 156, 152, 157, 156, 153, 149, 148, 147, 148, + 147, 149, 147, 145, 143, 140, 137, 134, 132, 139, 135, 130, 128, 138, 151, 152, + 146, 145, 155, 144, 138, 126, 117, 131, 131, 148, 158, 164, 193, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 112, 110, 112, 113, 112, 115, 115, 114, 116, 120, 124, 128, 128, + 131, 129, 126, 122, 119, 117, 118, 118, 124, 123, 121, 120, 120, 122, 125, 126, + 123, 123, 125, 126, 130, 131, 130, 129, 134, 133, 133, 133, 134, 136, 140, 141, + 141, 140, 142, 143, 144, 144, 144, 145, 148, 150, 151, 153, 156, 159, 161, 161, + 161, 162, 163, 162, 162, 160, 159, 156, 156, 154, 153, 150, 149, 146, 148, 147, + 149, 147, 145, 142, 139, 133, 132, 128, 137, 137, 138, 136, 141, 150, 153, 151, + 149, 156, 144, 141, 136, 131, 147, 148, 145, 157, 194, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 111, 107, 110, 112, 116, 119, 117, 118, 120, 124, 129, 131, 132, 135, + 131, 128, 122, 119, 117, 117, 118, 124, 122, 120, 119, 122, 125, 128, 131, 129, + 125, 124, 126, 131, 134, 132, 129, 134, 134, 134, 135, 137, 139, 144, 145, 141, + 141, 143, 143, 144, 144, 144, 147, 151, 151, 153, 155, 158, 160, 161, 163, 164, + 163, 162, 159, 159, 159, 160, 158, 156, 154, 153, 151, 149, 148, 149, 148, 148, + 146, 145, 143, 141, 138, 137, 134, 137, 142, 146, 146, 146, 152, 155, 154, 154, + 155, 145, 152, 159, 168, 191, 197, 199, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 110, 107, 109, 112, 113, 120, 117, 119, 122, 129, 130, 132, 134, 134, 132, + 128, 123, 121, 120, 119, 120, 123, 123, 122, 121, 124, 126, 128, 129, 130, 128, + 127, 127, 130, 132, 133, 132, 136, 135, 136, 137, 138, 139, 143, 144, 141, 143, + 145, 145, 145, 145, 148, 150, 151, 153, 154, 155, 159, 160, 163, 163, 165, 165, + 164, 163, 163, 161, 162, 161, 158, 158, 157, 153, 153, 152, 151, 150, 148, 149, + 150, 150, 151, 151, 150, 148, 145, 147, 152, 153, 153, 154, 154, 153, 155, 156, + 151, 174, 197, 215, 242, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 207, 110, 112, 111, 111, 119, 115, 117, 124, 130, 129, 131, 135, 133, 131, 127, + 123, 123, 122, 122, 123, 125, 126, 127, 128, 128, 127, 127, 126, 129, 130, 133, + 131, 130, 130, 134, 137, 139, 139, 140, 140, 140, 140, 141, 141, 141, 143, 147, + 148, 146, 146, 149, 151, 153, 154, 155, 156, 160, 160, 163, 164, 165, 165, 167, + 167, 167, 164, 162, 161, 161, 161, 161, 159, 158, 158, 157, 154, 154, 154, 156, + 156, 157, 158, 158, 157, 154, 151, 152, 154, 158, 158, 154, 152, 154, 162, 172, + 209, 239, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 111, 114, 112, 109, 119, 114, 116, 126, 132, 129, 131, 136, 133, 131, 128, 126, + 124, 124, 123, 125, 124, 126, 129, 131, 131, 128, 127, 124, 128, 132, 136, 134, + 131, 130, 134, 138, 139, 139, 141, 140, 139, 138, 139, 138, 138, 141, 146, 146, + 144, 144, 147, 151, 154, 155, 156, 158, 160, 162, 164, 164, 164, 166, 167, 168, + 168, 166, 164, 160, 164, 165, 165, 163, 165, 162, 161, 159, 161, 161, 161, 159, + 158, 156, 155, 154, 159, 153, 150, 154, 158, 158, 157, 156, 158, 174, 197, 242, + 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, + 112, 112, 108, 120, 114, 117, 128, 134, 130, 131, 137, 135, 133, 129, 127, 124, + 123, 122, 124, 124, 125, 127, 129, 131, 131, 130, 129, 133, 134, 135, 135, 135, + 134, 134, 134, 137, 139, 139, 139, 139, 138, 139, 138, 140, 144, 148, 148, 146, + 146, 149, 154, 155, 155, 156, 159, 160, 162, 164, 165, 165, 165, 165, 164, 164, + 163, 163, 163, 166, 166, 167, 167, 167, 165, 164, 161, 162, 162, 162, 160, 158, + 156, 155, 151, 157, 151, 149, 153, 154, 154, 160, 167, 169, 185, 206, 251, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, + 109, 105, 121, 114, 117, 129, 134, 131, 132, 138, 137, 135, 131, 126, 124, 122, + 121, 122, 124, 125, 126, 128, 129, 131, 133, 134, 133, 131, 132, 134, 138, 138, + 134, 130, 134, 136, 137, 138, 139, 139, 140, 139, 143, 147, 151, 151, 149, 148, + 153, 157, 156, 156, 159, 160, 162, 162, 164, 164, 166, 163, 162, 159, 159, 161, + 162, 164, 165, 166, 167, 168, 168, 166, 164, 163, 160, 160, 160, 160, 159, 158, + 157, 156, 153, 151, 152, 152, 150, 150, 162, 175, 179, 189, 205, 245, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 104, + 100, 121, 119, 120, 124, 128, 131, 134, 135, 131, 137, 135, 124, 115, 117, 125, + 131, 127, 128, 131, 130, 131, 131, 131, 131, 132, 131, 132, 131, 131, 131, 131, + 131, 138, 138, 137, 137, 140, 141, 141, 140, 146, 147, 149, 149, 149, 151, 155, + 159, 160, 158, 156, 159, 163, 165, 164, 163, 158, 160, 165, 164, 161, 160, 162, + 165, 161, 161, 161, 164, 167, 166, 165, 163, 161, 163, 164, 161, 157, 156, 159, + 162, 152, 162, 161, 155, 154, 154, 165, 182, 183, 228, 231, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 107, + 114, 115, 119, 125, 130, 134, 135, 136, 134, 135, 129, 118, 113, 114, 118, 119, + 125, 129, 130, 131, 130, 131, 131, 131, 132, 131, 131, 131, 131, 129, 131, 132, + 140, 140, 138, 139, 142, 143, 143, 142, 145, 147, 149, 149, 149, 150, 152, 155, + 162, 162, 161, 163, 166, 168, 166, 164, 164, 166, 168, 168, 167, 167, 168, 168, + 168, 168, 170, 171, 170, 170, 169, 168, 165, 164, 161, 160, 159, 158, 156, 156, + 158, 162, 159, 155, 156, 154, 160, 179, 214, 244, 241, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 133, 111, 107, + 110, 117, 124, 130, 135, 137, 137, 141, 139, 131, 119, 115, 116, 116, 113, 123, + 125, 127, 129, 130, 131, 131, 131, 133, 133, 133, 133, 133, 132, 133, 135, 141, + 141, 140, 141, 144, 145, 145, 144, 147, 149, 152, 152, 151, 151, 152, 154, 159, + 160, 161, 163, 165, 166, 164, 162, 164, 164, 164, 165, 166, 166, 165, 164, 168, + 170, 170, 170, 167, 165, 164, 164, 166, 162, 159, 160, 162, 161, 155, 150, 159, + 158, 154, 156, 160, 157, 165, 188, 229, 244, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 102, 101, 108, + 116, 121, 128, 134, 138, 138, 142, 142, 135, 125, 117, 117, 116, 115, 120, 123, + 125, 129, 131, 132, 133, 133, 134, 134, 134, 136, 137, 137, 137, 138, 141, 142, + 140, 141, 144, 146, 146, 145, 151, 154, 157, 157, 156, 154, 154, 155, 155, 157, + 160, 162, 164, 162, 161, 159, 166, 162, 162, 162, 166, 166, 164, 160, 166, 166, + 165, 161, 155, 151, 150, 151, 159, 156, 158, 158, 162, 160, 158, 154, 157, 155, + 151, 156, 161, 161, 178, 209, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 98, 108, 114, + 116, 121, 130, 137, 137, 134, 138, 135, 124, 112, 111, 115, 115, 118, 120, 123, + 128, 131, 133, 135, 136, 136, 136, 137, 138, 139, 139, 140, 141, 143, 141, 140, + 141, 144, 146, 147, 146, 153, 155, 158, 158, 156, 155, 154, 154, 153, 155, 160, + 160, 163, 160, 161, 158, 169, 164, 164, 163, 167, 166, 164, 161, 164, 163, 158, + 151, 145, 142, 141, 142, 146, 150, 156, 158, 159, 158, 160, 162, 154, 156, 153, + 154, 158, 164, 186, 222, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 104, 112, 112, + 118, 128, 135, 135, 132, 138, 137, 125, 114, 110, 115, 118, 115, 117, 121, 125, + 130, 133, 136, 136, 137, 137, 139, 140, 141, 142, 144, 145, 143, 141, 140, 141, + 145, 147, 148, 147, 151, 153, 155, 155, 153, 152, 153, 154, 156, 159, 162, 163, + 162, 161, 162, 162, 164, 163, 162, 162, 162, 161, 159, 159, 159, 153, 144, 137, + 134, 135, 136, 136, 140, 146, 152, 155, 154, 155, 159, 164, 154, 159, 155, 152, + 158, 169, 192, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 111, 114, 120, + 130, 134, 131, 135, 139, 136, 124, 116, 114, 116, 113, 111, 112, 117, 121, 126, + 131, 134, 135, 137, 139, 140, 141, 144, 145, 147, 146, 144, 143, 142, 143, 147, + 149, 150, 149, 151, 152, 154, 153, 152, 152, 154, 156, 156, 159, 161, 161, 159, + 159, 161, 164, 160, 161, 162, 160, 158, 155, 155, 156, 153, 144, 133, 128, 131, + 137, 140, 140, 145, 146, 148, 150, 151, 153, 154, 156, 152, 162, 157, 154, 168, + 188, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 111, 116, 122, 132, + 134, 129, 135, 134, 128, 118, 113, 111, 110, 103, 109, 109, 114, 118, 124, 129, + 132, 136, 139, 139, 141, 144, 146, 147, 147, 148, 146, 144, 143, 145, 149, 151, + 152, 151, 153, 154, 155, 154, 153, 154, 156, 159, 155, 157, 159, 158, 156, 156, + 160, 163, 163, 166, 167, 165, 161, 157, 158, 161, 157, 146, 132, 129, 137, 147, + 152, 152, 152, 148, 145, 146, 149, 151, 150, 149, 151, 163, 158, 156, 181, 204, + 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 112, 124, 124, 125, + 132, 123, 124, 126, 124, 119, 114, 113, 111, 109, 111, 115, 118, 123, 126, 130, + 134, 133, 133, 134, 138, 143, 145, 147, 145, 145, 145, 146, 147, 148, 149, 150, + 150, 150, 149, 149, 149, 152, 156, 161, 163, 156, 160, 163, 161, 156, 156, 161, + 166, 161, 159, 159, 161, 159, 156, 154, 156, 154, 145, 140, 146, 149, 148, 148, + 150, 163, 152, 148, 152, 154, 148, 148, 153, 154, 165, 168, 164, 167, 221, 252, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 111, 119, 123, 126, + 132, 131, 129, 123, 117, 115, 115, 113, 109, 109, 112, 117, 120, 125, 130, 133, + 135, 135, 138, 139, 142, 143, 145, 143, 145, 146, 146, 147, 148, 149, 149, 149, + 150, 150, 150, 151, 153, 156, 159, 161, 148, 151, 155, 158, 160, 160, 160, 161, + 156, 157, 156, 154, 153, 153, 152, 151, 149, 142, 138, 140, 143, 141, 144, 151, + 162, 153, 146, 148, 153, 155, 155, 155, 159, 161, 158, 163, 188, 249, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 96, 115, 123, 123, 135, + 132, 127, 120, 116, 114, 116, 117, 107, 107, 109, 114, 118, 123, 128, 130, 136, + 137, 139, 139, 140, 140, 141, 142, 146, 146, 146, 146, 148, 148, 148, 148, 150, + 151, 152, 154, 155, 156, 157, 158, 162, 159, 156, 156, 159, 161, 160, 159, 156, + 161, 160, 153, 152, 156, 156, 150, 152, 150, 149, 149, 149, 149, 155, 163, 162, + 157, 150, 145, 150, 157, 159, 155, 157, 158, 156, 168, 203, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 110, 124, 126, 127, 125, + 123, 120, 116, 115, 118, 118, 108, 106, 107, 111, 118, 124, 127, 130, 135, 136, + 139, 139, 139, 139, 141, 142, 146, 146, 146, 146, 147, 147, 147, 147, 151, 152, + 154, 156, 157, 156, 156, 155, 169, 162, 154, 145, 147, 150, 159, 162, 158, 162, + 163, 153, 153, 157, 158, 148, 144, 145, 145, 144, 141, 142, 149, 157, 157, 163, + 159, 150, 149, 157, 159, 153, 156, 160, 168, 178, 212, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 102, 119, 127, 122, 123, 124, + 124, 121, 119, 119, 116, 112, 108, 108, 112, 119, 125, 128, 129, 131, 133, 136, + 137, 137, 137, 140, 145, 145, 145, 145, 146, 147, 147, 147, 148, 151, 152, 155, + 157, 158, 157, 155, 155, 154, 151, 146, 137, 133, 135, 146, 154, 155, 160, 162, + 154, 154, 157, 155, 145, 145, 145, 146, 145, 142, 142, 143, 145, 147, 160, 164, + 157, 151, 155, 159, 156, 159, 160, 171, 183, 224, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 118, 124, 127, 132, 132, + 129, 123, 119, 116, 116, 110, 109, 111, 118, 124, 127, 127, 129, 132, 136, 137, + 136, 137, 140, 144, 143, 143, 144, 145, 147, 148, 148, 149, 151, 153, 155, 157, + 158, 157, 156, 157, 150, 154, 154, 146, 134, 126, 126, 128, 152, 154, 158, 160, + 160, 159, 156, 153, 148, 148, 149, 150, 153, 255, 148, 140, 138, 152, 160, 160, + 157, 157, 163, 163, 160, 150, 164, 183, 236, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 123, 126, 132, 133, 131, + 127, 123, 120, 119, 111, 110, 111, 118, 124, 125, 125, 129, 133, 137, 136, 134, + 134, 137, 142, 139, 142, 143, 144, 147, 148, 149, 150, 152, 152, 155, 156, 157, + 158, 158, 159, 162, 165, 165, 158, 146, 134, 125, 121, 142, 140, 148, 161, 164, + 157, 155, 156, 145, 144, 147, 255, 255, 255, 255, 221, 142, 144, 151, 157, 160, + 159, 163, 166, 159, 150, 173, 193, 245, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 118, 122, 127, 130, 130, 128, + 127, 125, 118, 111, 107, 109, 116, 122, 123, 122, 131, 135, 138, 137, 133, 132, + 134, 139, 137, 139, 140, 144, 146, 149, 150, 153, 152, 152, 154, 155, 157, 157, + 158, 159, 161, 159, 156, 155, 152, 148, 141, 136, 128, 122, 132, 152, 157, 145, + 143, 148, 161, 161, 198, 255, 255, 255, 255, 255, 219, 137, 137, 149, 157, 155, + 155, 159, 155, 158, 196, 213, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 122, 127, 134, 134, 127, 132, + 119, 123, 113, 108, 110, 111, 111, 117, 125, 133, 131, 129, 132, 135, 137, 137, + 134, 136, 138, 137, 135, 140, 148, 155, 155, 155, 154, 151, 149, 156, 162, 159, + 151, 158, 157, 158, 160, 162, 159, 153, 146, 144, 136, 131, 134, 142, 149, 149, + 143, 149, 191, 255, 255, 255, 255, 255, 255, 255, 255, 148, 140, 142, 145, 151, + 152, 152, 151, 209, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 199, 108, 116, 128, 130, 126, 133, 123, + 120, 115, 114, 114, 112, 112, 118, 126, 131, 131, 132, 134, 138, 138, 136, 132, + 132, 134, 137, 136, 140, 150, 156, 156, 154, 154, 152, 151, 155, 160, 158, 151, + 153, 154, 155, 160, 163, 162, 158, 154, 161, 152, 143, 138, 140, 147, 153, 154, + 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 163, 163, 163, 163, + 197, 185, 213, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 203, 107, 124, 132, 130, 138, 127, 119, + 116, 119, 119, 115, 113, 115, 121, 128, 129, 133, 135, 139, 138, 134, 130, 130, + 133, 138, 139, 143, 152, 156, 156, 153, 156, 156, 154, 155, 158, 158, 154, 155, + 154, 157, 161, 162, 161, 156, 151, 143, 140, 138, 144, 155, 176, 198, 211, 204, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 191, 192, 191, 214, + 198, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 202, 117, 132, 132, 136, 124, 128, 125, + 126, 126, 125, 122, 119, 118, 129, 131, 133, 135, 138, 136, 134, 131, 130, 135, + 140, 141, 145, 152, 155, 153, 152, 156, 158, 157, 155, 155, 156, 157, 154, 155, + 160, 163, 165, 165, 162, 161, 147, 146, 146, 153, 168, 188, 206, 216, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 105, 125, 129, 132, 118, 136, 133, 130, + 130, 135, 135, 128, 120, 131, 133, 134, 135, 133, 133, 134, 134, 131, 136, 141, + 142, 144, 151, 153, 150, 152, 157, 161, 161, 158, 153, 155, 157, 148, 150, 155, + 161, 164, 166, 168, 168, 148, 146, 147, 160, 177, 191, 197, 196, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 118, 126, 135, 127, 134, 132, 129, 129, + 135, 139, 134, 126, 135, 135, 136, 134, 134, 133, 134, 136, 131, 136, 140, 141, + 145, 150, 152, 150, 153, 156, 160, 162, 159, 154, 154, 155, 150, 148, 149, 148, + 149, 149, 153, 155, 145, 144, 154, 171, 194, 205, 206, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 115, 134, 138, 129, 135, 137, 135, 138, + 147, 151, 148, 133, 136, 139, 138, 136, 135, 135, 135, 129, 133, 136, 138, 144, + 150, 154, 153, 155, 154, 158, 162, 161, 155, 154, 153, 150, 147, 147, 147, 146, + 150, 155, 159, 181, 180, 185, 192, 199, 218, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 140, 135, 147, 153, 151, 151, 162, + 173, 179, 134, 138, 142, 144, 141, 137, 136, 136, 126, 131, 134, 138, 144, 151, + 157, 157, 156, 153, 154, 162, 161, 156, 153, 152, 144, 142, 146, 152, 159, 171, + 185, 194, 199, 199, 199, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, 162, 164, + 163, 161, 151, 140, 136, 140, 145, 142, 133, 136, 135, 138, 143, 147, 150, 151, + 155, 154, 153, 153, 157, 161, 165, 162, 155, 144, 149, 154, 165, 182, 187, 191, + 202, 197, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 158, + 155, 155, 151, 145, 139, 139, 144, 147, 136, 142, 145, 141, 142, 150, 154, 154, + 155, 154, 155, 158, 164, 170, 175, 173, 159, 179, 190, 186, 189, 193, 191, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, + 156, 159, 155, 148, 143, 145, 146, 141, 149, 153, 148, 144, 149, 150, 143, 152, + 152, 153, 155, 160, 169, 179, 183, 174, 206, 215, 198, 192, 194, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, + 155, 159, 161, 155, 148, 141, 145, 144, 149, 154, 156, 151, 146, 144, 150, 151, + 152, 152, 156, 164, 177, 182, 182, 205, 209, 192, 186, 211, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 223, 163, 162, 163, 164, 163, 144, 137, 151, 159, 150, 147, 155, 145, 147, 149, + 151, 155, 162, 173, 178, 182, 192, 193, 187, 189, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 222, 177, 197, 202, 171, 153, 153, 153, 143, 143, 151, 140, 140, 143, 146, + 153, 161, 170, 175, 184, 188, 189, 192, 216, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 243, 206, 191, 173, 159, 152, 151, 149, 151, 147, 147, 151, 158, + 166, 174, 177, 184, 196, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 170, 156, 171, 165, 160, 161, 167, 175, + 182, 183, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, + 188, 203, 224, 246, 251, 243, 237, 244, 255, 253, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 163, 169, 180, 190, 188, 180, + 152, 168, 186, 195, 196, 197, 201, 206, 223, 236, 252, 255, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 212, 128, 113, 120, 126, 135, 151, 172, 189, 196, 177, + 163, 150, 154, 170, 184, 186, 182, 187, 197, 215, 232, 240, 242, 250, 255, 253, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 211, 116, 116, 120, 120, 126, 130, 128, 132, 148, 166, 177, 197, 197, + 195, 191, 187, 187, 191, 195, 165, 164, 178, 203, 221, 222, 216, 212, 205, 211, + 224, 238, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 104, 99, 99, 100, 100, 110, 115, 115, 116, 129, 145, 154, 149, 173, 198, + 201, 185, 169, 168, 174, 169, 161, 161, 169, 169, 160, 153, 155, 150, 145, 147, + 160, 185, 212, 233, 242, 244, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 87, 75, + 72, 80, 87, 85, 86, 96, 102, 103, 103, 111, 120, 124, 121, 129, 146, 161, + 171, 168, 154, 143, 140, 130, 124, 118, 113, 124, 163, 201, 215, 181, 139, 113, + 115, 138, 166, 182, 193, 203, 219, 235, 250, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 83, 79, 78, 77, 76, 76, + 76, 77, 78, 84, 87, 91, 96, 99, 99, 97, 95, 102, 106, 102, 94, 97, + 114, 127, 129, 126, 128, 138, 142, 132, 124, 136, 156, 168, 198, 158, 154, 180, + 160, 151, 159, 175, 211, 219, 218, 225, 245, 255, 248, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 196, 75, 73, 72, 73, 73, 73, 73, 74, 76, + 78, 80, 80, 85, 90, 91, 88, 85, 85, 87, 79, 84, 84, 85, 88, 100, + 108, 112, 126, 111, 105, 121, 137, 141, 137, 137, 144, 171, 193, 185, 179, 188, + 191, 194, 210, 244, 250, 248, 241, 242, 253, 238, 250, 252, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 215, 114, 74, 73, 72, 70, 68, 68, 68, 68, 69, 71, 74, 77, + 79, 78, 83, 87, 84, 76, 72, 74, 78, 76, 77, 83, 91, 95, 96, 100, + 105, 108, 104, 105, 113, 119, 124, 138, 152, 120, 109, 166, 172, 147, 170, 182, + 190, 216, 242, 247, 251, 245, 242, 255, 254, 255, 253, 250, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 194, 73, 74, 74, 73, 72, 70, 69, 66, 66, 66, 67, 69, 72, 75, 77, + 76, 78, 79, 76, 72, 70, 72, 74, 84, 82, 87, 99, 99, 94, 93, 102, + 91, 101, 108, 104, 90, 95, 126, 161, 169, 115, 138, 169, 159, 163, 177, 195, + 184, 203, 216, 243, 251, 246, 253, 247, 254, 253, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 64, 68, + 68, 68, 67, 67, 66, 65, 65, 67, 66, 65, 65, 66, 68, 70, 71, 71, + 68, 66, 67, 70, 73, 72, 71, 77, 74, 78, 87, 88, 82, 83, 90, 91, + 89, 87, 85, 83, 90, 107, 123, 161, 122, 93, 125, 140, 125, 139, 150, 154, + 170, 190, 237, 255, 253, 245, 226, 238, 245, 251, 255, 252, 252, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 65, 64, 68, 75, 64, 64, + 64, 64, 64, 64, 64, 64, 67, 66, 65, 64, 63, 64, 66, 66, 65, 60, + 57, 60, 68, 72, 70, 66, 69, 70, 72, 78, 78, 78, 80, 87, 85, 84, + 83, 86, 88, 90, 90, 90, 119, 133, 95, 101, 122, 113, 124, 122, 133, 143, + 154, 198, 233, 243, 254, 249, 226, 237, 248, 255, 253, 250, 252, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 61, 71, 81, 71, 58, 56, 57, 63, 63, 63, + 63, 64, 65, 66, 66, 65, 64, 63, 61, 61, 62, 64, 64, 64, 61, 60, + 62, 66, 68, 67, 64, 67, 72, 73, 73, 72, 77, 79, 80, 76, 85, 91, + 89, 82, 79, 81, 85, 85, 105, 97, 88, 98, 105, 104, 101, 110, 118, 118, + 141, 164, 187, 225, 240, 221, 229, 239, 248, 251, 252, 254, 255, 255, 244, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 194, 71, 56, 59, 68, 63, 58, 62, 63, 57, 57, 58, 58, + 59, 61, 63, 63, 61, 61, 60, 59, 59, 61, 62, 63, 65, 66, 67, 67, + 65, 64, 64, 64, 60, 69, 71, 65, 63, 69, 69, 64, 80, 81, 80, 75, + 73, 75, 79, 82, 91, 77, 98, 90, 89, 106, 93, 98, 91, 109, 110, 116, + 113, 119, 154, 170, 216, 218, 226, 235, 244, 249, 250, 249, 253, 243, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 194, 64, 66, 68, 65, 59, 55, 54, 57, 60, 63, 62, 60, 58, 58, 59, + 60, 59, 58, 57, 58, 59, 60, 62, 63, 65, 65, 62, 62, 63, 63, 63, + 62, 62, 61, 59, 61, 63, 63, 63, 63, 65, 67, 65, 67, 69, 70, 71, + 75, 79, 82, 81, 88, 90, 87, 87, 92, 92, 89, 90, 93, 96, 98, 98, + 99, 100, 101, 147, 191, 208, 208, 228, 245, 246, 249, 253, 255, 238, 243, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 67, + 62, 64, 62, 60, 58, 55, 55, 55, 57, 58, 62, 60, 58, 57, 58, 59, + 58, 57, 58, 58, 59, 60, 61, 62, 63, 64, 62, 61, 61, 61, 61, 61, + 61, 61, 62, 63, 65, 65, 65, 65, 67, 68, 65, 67, 67, 66, 65, 65, + 67, 69, 77, 82, 82, 79, 77, 83, 85, 85, 88, 92, 96, 100, 100, 100, + 101, 102, 130, 154, 182, 207, 227, 233, 234, 241, 236, 251, 249, 246, 251, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 68, 63, 58, + 58, 59, 58, 58, 57, 56, 56, 55, 55, 61, 59, 57, 56, 58, 58, 58, + 56, 59, 59, 59, 60, 60, 60, 61, 61, 61, 60, 59, 58, 58, 59, 61, + 61, 62, 65, 67, 67, 66, 66, 68, 69, 71, 72, 73, 72, 69, 67, 67, + 67, 72, 74, 72, 69, 68, 74, 79, 80, 83, 87, 93, 96, 98, 100, 102, + 103, 124, 125, 154, 196, 219, 228, 237, 242, 251, 241, 240, 240, 246, 244, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 67, 63, 61, 58, 53, + 59, 59, 58, 57, 57, 57, 57, 57, 60, 58, 55, 55, 56, 57, 56, 55, + 59, 59, 59, 59, 59, 58, 58, 58, 60, 59, 57, 56, 56, 58, 60, 63, + 61, 62, 64, 64, 63, 63, 64, 66, 69, 72, 74, 75, 74, 72, 72, 71, + 68, 70, 69, 68, 67, 71, 75, 78, 82, 85, 88, 92, 96, 101, 107, 111, + 124, 111, 123, 145, 164, 192, 206, 191, 245, 241, 251, 244, 254, 254, 232, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 194, 65, 59, 58, 62, 60, 52, 59, + 58, 56, 54, 54, 55, 57, 58, 58, 56, 54, 54, 55, 56, 55, 54, 58, + 58, 58, 58, 57, 57, 57, 57, 59, 57, 56, 55, 55, 57, 60, 62, 61, + 63, 64, 64, 63, 62, 64, 65, 64, 66, 70, 71, 70, 69, 70, 70, 66, + 68, 71, 73, 73, 73, 75, 77, 86, 86, 87, 90, 94, 103, 113, 119, 135, + 131, 126, 118, 133, 181, 193, 154, 151, 193, 231, 220, 232, 253, 236, 252, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 191, 61, 55, 53, 56, 61, 59, 55, 57, 55, + 52, 50, 50, 52, 54, 56, 57, 55, 53, 53, 54, 55, 54, 53, 57, 57, + 56, 56, 56, 56, 56, 56, 57, 56, 56, 55, 56, 58, 60, 62, 63, 65, + 66, 66, 64, 64, 65, 66, 65, 67, 68, 68, 67, 65, 66, 66, 67, 67, + 70, 75, 76, 73, 74, 78, 80, 80, 78, 79, 82, 90, 101, 108, 122, 137, + 139, 131, 156, 212, 228, 201, 111, 127, 159, 176, 181, 184, 202, 247, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 198, 64, 58, 54, 56, 56, 56, 55, 57, 53, 53, 53, + 52, 52, 53, 54, 54, 57, 55, 53, 53, 54, 55, 54, 53, 56, 56, 56, + 56, 56, 57, 57, 57, 57, 57, 57, 58, 59, 60, 61, 61, 62, 65, 66, + 65, 64, 63, 64, 65, 69, 70, 70, 69, 67, 66, 67, 69, 68, 66, 68, + 73, 73, 71, 74, 80, 75, 75, 74, 74, 75, 79, 84, 88, 85, 102, 111, + 120, 147, 180, 205, 219, 184, 152, 138, 162, 161, 151, 182, 216, 227, 252, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 194, 97, 52, 68, 62, 60, 62, 58, 51, 50, 57, 52, 54, 56, 57, + 57, 56, 54, 53, 57, 55, 53, 52, 54, 54, 54, 52, 55, 55, 55, 56, + 56, 57, 57, 57, 56, 57, 58, 59, 60, 61, 61, 61, 60, 62, 62, 63, + 60, 60, 60, 63, 65, 67, 66, 66, 64, 65, 67, 70, 67, 64, 63, 67, + 68, 66, 71, 80, 78, 79, 79, 78, 77, 77, 78, 80, 85, 90, 90, 102, + 112, 109, 133, 185, 236, 216, 169, 156, 159, 179, 189, 134, 172, 245, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, + 68, 69, 70, 59, 58, 56, 54, 53, 52, 51, 51, 55, 54, 54, 53, 53, + 54, 54, 55, 54, 54, 53, 53, 53, 53, 53, 53, 57, 57, 56, 56, 56, + 56, 56, 56, 60, 60, 59, 58, 58, 57, 56, 57, 61, 63, 63, 63, 61, + 62, 63, 66, 64, 63, 60, 60, 59, 62, 64, 65, 67, 69, 69, 65, 66, + 70, 71, 68, 74, 76, 78, 79, 80, 81, 84, 86, 101, 88, 93, 109, 116, + 122, 128, 126, 195, 226, 240, 218, 159, 168, 213, 171, 154, 208, 245, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 73, 82, + 65, 62, 59, 58, 56, 55, 53, 53, 52, 52, 52, 52, 53, 53, 53, 53, + 52, 52, 51, 51, 51, 52, 53, 53, 54, 54, 53, 53, 53, 53, 53, 53, + 53, 53, 55, 56, 56, 57, 58, 58, 59, 59, 59, 60, 61, 60, 59, 59, + 61, 64, 69, 68, 65, 62, 60, 59, 59, 59, 68, 70, 70, 67, 68, 72, + 73, 71, 73, 76, 79, 82, 83, 85, 87, 89, 87, 100, 107, 100, 106, 141, + 158, 145, 148, 183, 234, 250, 225, 194, 183, 196, 187, 240, 251, 234, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 66, 79, 56, + 54, 59, 58, 57, 56, 54, 53, 53, 53, 49, 50, 52, 52, 52, 52, 50, + 49, 48, 49, 49, 51, 52, 53, 54, 54, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 56, 56, 57, 58, 58, 59, 58, 59, 59, 59, 58, 58, 60, + 62, 62, 62, 63, 63, 64, 65, 65, 66, 67, 70, 70, 67, 68, 72, 74, + 72, 73, 76, 81, 84, 86, 87, 89, 91, 98, 95, 101, 104, 102, 119, 142, + 153, 144, 171, 218, 242, 254, 231, 165, 194, 232, 250, 248, 244, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 72, 56, 56, 53, 56, + 57, 56, 55, 54, 52, 52, 52, 52, 48, 50, 52, 53, 53, 52, 50, 48, + 49, 49, 49, 50, 50, 51, 51, 52, 55, 55, 56, 56, 56, 56, 57, 57, + 60, 59, 59, 58, 57, 57, 56, 56, 57, 58, 59, 58, 57, 58, 60, 62, + 57, 59, 62, 65, 67, 69, 70, 71, 65, 68, 68, 65, 66, 71, 72, 70, + 74, 77, 82, 84, 85, 86, 87, 88, 104, 91, 94, 106, 102, 105, 123, 137, + 141, 165, 170, 174, 233, 254, 219, 212, 242, 246, 249, 253, 249, 246, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 193, 69, 65, 55, 44, 64, 61, 54, + 54, 52, 51, 51, 50, 51, 51, 49, 50, 52, 54, 54, 52, 50, 49, 51, + 51, 51, 50, 49, 49, 48, 48, 51, 51, 51, 52, 52, 53, 53, 53, 61, + 60, 60, 59, 58, 58, 57, 57, 58, 59, 60, 59, 58, 58, 60, 62, 63, + 64, 65, 66, 67, 67, 66, 66, 66, 69, 69, 67, 67, 72, 73, 71, 75, + 77, 80, 81, 81, 80, 81, 82, 82, 93, 101, 98, 104, 131, 142, 125, 136, + 168, 151, 136, 164, 224, 255, 231, 233, 249, 255, 247, 240, 250, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 197, 60, 73, 61, 64, 53, 70, 53, 52, 51, + 50, 49, 49, 49, 49, 50, 50, 50, 52, 53, 53, 52, 50, 50, 53, 52, + 52, 51, 49, 48, 47, 47, 51, 51, 52, 53, 53, 54, 55, 55, 56, 56, + 57, 58, 58, 59, 60, 60, 58, 59, 59, 59, 58, 58, 60, 62, 59, 60, + 61, 64, 66, 69, 71, 72, 72, 75, 74, 71, 71, 75, 76, 74, 75, 76, + 77, 77, 75, 75, 76, 78, 81, 82, 91, 104, 115, 135, 141, 126, 130, 168, + 168, 155, 132, 167, 246, 246, 244, 226, 228, 245, 253, 255, 252, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 129, 83, 69, 66, 63, 63, 60, 59, 49, 52, 51, 50, + 49, 49, 49, 50, 50, 49, 49, 50, 50, 50, 50, 49, 49, 52, 52, 52, + 51, 50, 50, 49, 49, 53, 53, 54, 55, 56, 56, 57, 57, 54, 54, 55, + 55, 56, 57, 57, 58, 56, 57, 58, 57, 56, 56, 58, 61, 53, 54, 56, + 60, 66, 71, 76, 79, 76, 79, 78, 74, 74, 77, 77, 75, 75, 75, 75, + 74, 73, 74, 77, 80, 92, 74, 80, 105, 112, 114, 117, 120, 110, 129, 151, + 156, 144, 166, 221, 250, 241, 187, 182, 225, 243, 240, 245, 253, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 59, 72, 65, 49, 62, 49, 58, 49, 56, 52, 52, 51, 50, + 50, 50, 51, 51, 49, 48, 48, 47, 47, 48, 48, 49, 51, 51, 51, 51, + 51, 51, 51, 51, 49, 50, 50, 51, 52, 53, 54, 54, 56, 55, 55, 54, + 53, 53, 52, 52, 54, 56, 56, 56, 54, 55, 57, 59, 59, 59, 59, 60, + 63, 67, 71, 74, 76, 79, 77, 73, 72, 75, 75, 72, 74, 74, 73, 71, + 71, 74, 78, 82, 83, 86, 89, 86, 91, 113, 121, 105, 124, 111, 125, 128, + 151, 178, 176, 205, 206, 171, 166, 186, 200, 228, 253, 253, 250, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 196, 77, 61, 57, 54, 52, 52, 53, 51, 49, 54, 51, 48, 48, 51, + 51, 48, 46, 46, 46, 46, 47, 47, 48, 48, 48, 52, 51, 49, 48, 48, + 49, 51, 52, 47, 47, 48, 48, 48, 48, 48, 48, 52, 53, 54, 55, 55, + 55, 55, 54, 57, 56, 56, 55, 55, 54, 54, 53, 51, 53, 56, 60, 64, + 67, 68, 69, 72, 74, 75, 74, 72, 72, 76, 81, 70, 72, 74, 74, 75, + 76, 79, 82, 90, 89, 88, 90, 95, 104, 112, 118, 110, 113, 118, 127, 143, + 154, 151, 138, 154, 215, 200, 204, 245, 245, 246, 255, 239, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 96, 56, 60, 56, 53, 52, 53, 52, 50, 49, 53, 50, 48, 48, 51, 51, + 48, 46, 46, 46, 46, 47, 47, 48, 48, 48, 50, 50, 49, 49, 49, 49, + 50, 50, 48, 49, 49, 49, 50, 51, 51, 51, 52, 53, 54, 54, 55, 55, + 54, 54, 57, 57, 56, 56, 56, 56, 56, 55, 61, 61, 62, 62, 61, 61, + 60, 59, 65, 66, 67, 67, 67, 67, 69, 71, 67, 68, 70, 71, 71, 72, + 75, 78, 82, 82, 82, 83, 86, 91, 97, 101, 106, 110, 114, 119, 132, 145, + 144, 138, 152, 230, 234, 223, 238, 245, 252, 253, 255, 255, 252, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 86, + 56, 58, 55, 53, 52, 52, 51, 50, 48, 52, 50, 49, 49, 50, 50, 49, + 47, 46, 46, 46, 47, 47, 48, 48, 48, 48, 49, 49, 50, 50, 49, 49, + 48, 49, 49, 50, 51, 52, 53, 54, 54, 52, 52, 53, 54, 55, 55, 54, + 54, 56, 56, 56, 57, 57, 57, 57, 57, 58, 59, 60, 61, 61, 61, 61, + 61, 64, 64, 64, 66, 68, 69, 68, 67, 66, 67, 69, 69, 69, 70, 73, + 76, 77, 77, 78, 80, 81, 83, 84, 85, 100, 103, 105, 107, 117, 128, 133, + 133, 126, 193, 227, 240, 250, 252, 252, 238, 228, 226, 237, 248, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 65, 65, + 55, 53, 50, 50, 50, 50, 49, 47, 50, 49, 50, 49, 49, 49, 49, 48, + 46, 46, 46, 47, 47, 48, 48, 48, 47, 48, 49, 50, 50, 49, 48, 47, + 48, 49, 50, 51, 53, 54, 55, 56, 51, 52, 53, 54, 54, 54, 54, 53, + 54, 55, 55, 56, 56, 57, 57, 58, 55, 56, 57, 59, 61, 62, 62, 63, + 65, 64, 64, 67, 71, 71, 68, 65, 68, 70, 71, 71, 71, 72, 75, 77, + 78, 80, 82, 85, 85, 84, 83, 82, 91, 93, 96, 99, 104, 112, 119, 123, + 134, 139, 161, 204, 234, 248, 255, 253, 249, 237, 244, 230, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 67, 66, 58, 54, + 51, 48, 47, 49, 49, 47, 46, 49, 50, 50, 49, 49, 49, 49, 49, 46, + 46, 46, 47, 47, 48, 48, 48, 46, 47, 48, 49, 49, 48, 47, 46, 47, + 47, 48, 50, 51, 53, 54, 54, 51, 52, 53, 53, 54, 54, 53, 53, 52, + 53, 53, 54, 54, 55, 55, 56, 59, 59, 59, 60, 59, 58, 57, 57, 63, + 62, 62, 65, 69, 69, 66, 63, 69, 71, 72, 72, 71, 72, 75, 77, 82, + 84, 86, 89, 90, 89, 88, 87, 83, 86, 91, 95, 98, 102, 107, 112, 126, + 107, 126, 173, 214, 246, 252, 247, 234, 224, 242, 226, 199, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 76, 56, 70, 51, 52, 49, + 46, 46, 47, 47, 46, 45, 47, 49, 50, 49, 49, 48, 49, 50, 46, 46, + 46, 47, 47, 48, 48, 48, 46, 47, 47, 48, 48, 47, 47, 46, 47, 47, + 48, 49, 50, 51, 52, 52, 51, 51, 52, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 54, 54, 54, 53, 54, 56, 58, 59, 60, 61, 62, 65, 65, + 65, 66, 69, 69, 68, 67, 67, 69, 70, 69, 69, 69, 72, 74, 80, 82, + 83, 85, 88, 89, 89, 89, 84, 85, 89, 96, 98, 98, 102, 107, 104, 106, + 128, 142, 175, 231, 250, 247, 205, 206, 235, 241, 201, 226, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 75, 58, 58, 60, 52, 50, 47, 45, + 44, 46, 46, 45, 44, 46, 48, 51, 50, 48, 47, 49, 51, 46, 46, 46, + 47, 47, 48, 48, 48, 47, 47, 46, 46, 46, 46, 47, 47, 48, 48, 48, + 49, 50, 50, 50, 51, 50, 51, 52, 53, 53, 53, 53, 52, 55, 54, 54, + 54, 54, 54, 53, 53, 48, 50, 53, 56, 60, 62, 64, 66, 65, 66, 67, + 67, 66, 67, 69, 71, 66, 67, 68, 68, 67, 68, 70, 72, 77, 77, 78, + 78, 79, 82, 83, 85, 92, 90, 91, 98, 102, 102, 104, 108, 124, 130, 140, + 121, 141, 202, 235, 252, 244, 242, 246, 250, 242, 252, 249, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 62, 60, 50, 51, 51, 50, 47, 45, 45, + 45, 46, 46, 45, 47, 49, 51, 50, 47, 46, 48, 50, 46, 46, 46, 47, + 46, 47, 47, 47, 47, 47, 45, 44, 44, 46, 48, 49, 50, 49, 50, 50, + 50, 50, 50, 50, 50, 51, 52, 53, 53, 53, 53, 52, 57, 56, 56, 55, + 55, 54, 54, 53, 56, 56, 57, 58, 58, 57, 57, 57, 59, 61, 63, 61, + 59, 60, 64, 68, 67, 68, 69, 69, 68, 68, 70, 73, 75, 74, 72, 71, + 73, 76, 80, 82, 101, 94, 93, 99, 105, 105, 107, 112, 123, 137, 169, 171, + 183, 198, 188, 206, 226, 238, 237, 240, 253, 255, 247, 246, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 193, 61, 48, 56, 54, 57, 48, 46, 45, 46, 48, + 49, 49, 46, 45, 45, 44, 44, 44, 44, 43, 44, 46, 48, 47, 47, 47, + 47, 45, 45, 50, 49, 50, 50, 51, 52, 54, 54, 52, 49, 49, 48, 48, + 49, 49, 50, 49, 50, 51, 52, 52, 52, 51, 51, 56, 57, 58, 60, 61, + 63, 64, 64, 58, 58, 58, 57, 57, 56, 56, 56, 59, 61, 61, 61, 58, + 59, 60, 63, 63, 64, 62, 64, 64, 67, 69, 70, 67, 70, 72, 73, 74, + 76, 79, 82, 87, 83, 86, 95, 101, 104, 111, 119, 131, 140, 157, 183, 215, + 237, 236, 225, 228, 199, 191, 177, 228, 251, 252, 249, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 65, 63, 48, 53, 48, 47, 47, 44, 44, 46, 48, 49, + 48, 46, 47, 47, 46, 46, 45, 44, 43, 44, 46, 47, 47, 46, 44, 43, + 41, 41, 46, 47, 50, 52, 53, 53, 53, 51, 52, 49, 49, 48, 48, 49, + 49, 50, 50, 50, 50, 51, 51, 52, 52, 52, 53, 53, 54, 55, 56, 57, + 58, 59, 58, 58, 58, 58, 58, 58, 58, 58, 64, 65, 65, 64, 62, 62, + 64, 65, 65, 64, 64, 64, 64, 65, 67, 67, 64, 67, 69, 71, 72, 75, + 78, 81, 86, 82, 82, 88, 93, 96, 103, 109, 131, 152, 169, 174, 175, 192, + 219, 240, 219, 213, 186, 133, 156, 212, 240, 250, 244, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 66, 64, 50, 53, 51, 45, 44, 42, 41, 43, 45, 48, 47, + 46, 48, 48, 48, 47, 47, 46, 45, 45, 47, 48, 48, 48, 46, 44, 42, + 41, 43, 45, 49, 52, 52, 50, 48, 47, 51, 49, 49, 48, 48, 49, 49, + 50, 51, 50, 50, 50, 50, 51, 52, 53, 52, 52, 52, 53, 53, 54, 54, + 54, 57, 57, 58, 58, 59, 60, 60, 61, 64, 65, 65, 63, 61, 61, 62, + 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 66, 68, 70, 71, 74, 78, + 81, 85, 81, 80, 83, 85, 87, 92, 96, 115, 148, 175, 175, 160, 163, 190, + 216, 221, 216, 205, 181, 155, 163, 191, 255, 243, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 192, 63, 57, 45, 50, 53, 46, 42, 40, 40, 41, 43, 45, 45, 46, + 46, 47, 47, 47, 46, 46, 46, 46, 48, 49, 49, 50, 49, 49, 47, 46, + 44, 45, 47, 48, 49, 48, 46, 45, 49, 49, 49, 48, 48, 49, 49, 50, + 51, 51, 50, 50, 50, 51, 52, 53, 54, 54, 54, 54, 54, 54, 54, 54, + 55, 55, 56, 57, 59, 60, 61, 61, 64, 65, 65, 63, 61, 60, 61, 63, + 63, 63, 64, 65, 66, 66, 66, 66, 66, 68, 70, 72, 73, 76, 80, 83, + 84, 84, 84, 85, 86, 85, 86, 86, 91, 111, 136, 149, 152, 158, 171, 181, + 225, 217, 221, 238, 200, 168, 158, 223, 255, 232, 240, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 62, 50, 46, 43, 45, 49, 39, 38, 39, 39, 40, 41, 41, 44, 45, 44, + 45, 45, 45, 46, 46, 46, 45, 45, 46, 48, 49, 50, 50, 49, 48, 47, + 46, 45, 44, 43, 43, 44, 46, 48, 49, 49, 48, 48, 49, 49, 50, 51, + 50, 50, 50, 51, 51, 52, 53, 55, 55, 55, 54, 54, 54, 53, 53, 52, + 53, 54, 55, 57, 58, 59, 60, 67, 68, 68, 66, 64, 63, 65, 67, 61, + 61, 62, 64, 66, 68, 69, 70, 71, 73, 74, 74, 75, 78, 83, 86, 87, + 91, 94, 95, 95, 94, 91, 87, 84, 82, 86, 100, 122, 142, 159, 168, 207, + 227, 225, 218, 208, 224, 187, 179, 189, 230, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, + 42, 47, 52, 46, 47, 36, 37, 39, 40, 39, 40, 40, 41, 45, 41, 42, + 44, 44, 46, 46, 46, 46, 41, 41, 43, 46, 47, 47, 46, 46, 47, 47, + 44, 42, 42, 42, 43, 46, 48, 49, 49, 48, 48, 49, 49, 50, 49, 50, + 51, 52, 52, 52, 51, 51, 52, 52, 52, 52, 52, 52, 51, 51, 52, 52, + 53, 54, 56, 57, 58, 59, 62, 63, 64, 63, 61, 61, 63, 65, 61, 61, + 61, 62, 64, 68, 71, 73, 75, 75, 75, 75, 75, 77, 82, 85, 89, 95, + 100, 101, 103, 103, 100, 95, 97, 93, 91, 97, 107, 120, 135, 147, 174, 220, + 242, 224, 222, 249, 225, 209, 157, 217, 242, 250, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 59, 39, + 50, 56, 42, 46, 43, 38, 40, 41, 41, 39, 39, 41, 44, 40, 41, 42, + 43, 44, 46, 46, 46, 39, 40, 41, 42, 44, 43, 43, 43, 45, 45, 45, + 45, 44, 45, 43, 44, 48, 49, 49, 48, 48, 49, 49, 50, 47, 49, 52, + 54, 54, 53, 51, 49, 50, 51, 51, 51, 51, 51, 51, 51, 53, 54, 54, + 55, 56, 57, 58, 59, 56, 57, 58, 58, 57, 57, 60, 62, 64, 62, 61, + 60, 62, 66, 71, 73, 75, 75, 74, 72, 72, 73, 78, 81, 83, 90, 94, + 94, 97, 102, 102, 98, 104, 108, 114, 119, 116, 112, 117, 127, 150, 180, 232, + 242, 245, 229, 222, 248, 228, 185, 171, 236, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 62, 36, 45, + 49, 31, 42, 49, 39, 41, 43, 42, 40, 39, 40, 42, 39, 40, 40, 41, + 42, 44, 45, 44, 41, 41, 40, 42, 42, 41, 41, 40, 42, 44, 47, 48, + 48, 47, 44, 43, 49, 49, 49, 48, 48, 49, 49, 50, 46, 48, 52, 55, + 55, 53, 50, 48, 51, 51, 51, 52, 52, 53, 53, 53, 55, 55, 56, 57, + 57, 58, 59, 59, 56, 58, 59, 59, 59, 60, 62, 65, 67, 65, 61, 60, + 61, 65, 69, 73, 73, 73, 71, 69, 68, 70, 74, 77, 76, 81, 84, 83, + 87, 96, 100, 98, 96, 100, 110, 118, 118, 115, 122, 132, 143, 140, 184, 208, + 236, 209, 202, 229, 251, 219, 203, 203, 244, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 44, 35, 40, 47, + 49, 43, 39, 41, 47, 47, 41, 43, 50, 47, 38, 32, 38, 46, 53, 57, + 59, 60, 62, 61, 67, 69, 57, 43, 37, 36, 37, 45, 46, 48, 49, 49, + 48, 47, 45, 48, 48, 48, 49, 49, 50, 50, 50, 49, 50, 50, 51, 51, + 50, 50, 49, 51, 52, 54, 56, 56, 54, 52, 51, 51, 52, 54, 54, 53, + 54, 55, 57, 57, 58, 60, 62, 62, 61, 60, 59, 62, 62, 63, 64, 65, + 65, 66, 66, 66, 67, 67, 68, 69, 70, 71, 71, 75, 76, 77, 79, 81, + 84, 87, 90, 90, 94, 100, 106, 111, 118, 125, 129, 151, 161, 125, 126, 183, + 210, 205, 205, 216, 244, 233, 214, 238, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 75, 61, 49, 47, 49, 45, + 40, 38, 43, 47, 47, 43, 42, 43, 42, 38, 35, 46, 62, 71, 74, 78, + 84, 90, 76, 82, 85, 81, 75, 66, 55, 46, 45, 45, 46, 48, 52, 56, + 55, 55, 49, 48, 48, 49, 49, 49, 50, 50, 50, 51, 52, 53, 53, 52, + 51, 50, 51, 53, 54, 56, 56, 54, 53, 51, 50, 52, 54, 54, 53, 53, + 55, 57, 57, 58, 58, 59, 60, 60, 59, 59, 62, 62, 62, 62, 62, 62, + 61, 61, 69, 69, 69, 69, 69, 70, 70, 70, 74, 75, 76, 79, 81, 84, + 86, 88, 90, 93, 94, 96, 100, 106, 114, 118, 146, 151, 141, 129, 141, 179, + 205, 197, 214, 240, 246, 241, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 85, 67, 56, 46, 44, 44, 42, 42, + 46, 49, 48, 48, 47, 42, 40, 41, 47, 60, 72, 85, 90, 86, 85, 91, + 97, 85, 88, 91, 92, 93, 90, 77, 63, 52, 48, 44, 45, 51, 57, 58, + 56, 50, 48, 48, 48, 49, 49, 49, 50, 50, 51, 53, 55, 55, 53, 51, + 50, 52, 53, 54, 55, 55, 54, 53, 52, 50, 52, 54, 54, 53, 53, 55, + 57, 57, 57, 57, 57, 57, 58, 59, 60, 62, 63, 63, 63, 63, 64, 64, + 64, 72, 71, 70, 70, 69, 69, 70, 70, 73, 74, 77, 79, 82, 84, 85, + 86, 88, 88, 89, 89, 91, 98, 105, 111, 104, 114, 150, 154, 144, 187, 216, + 187, 227, 232, 244, 251, 250, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 199, 53, 49, 43, 39, 40, 40, 42, 45, 52, + 51, 47, 48, 51, 47, 42, 50, 62, 86, 89, 93, 92, 84, 81, 83, 87, + 88, 88, 85, 86, 91, 95, 91, 83, 67, 57, 46, 43, 48, 53, 53, 50, + 49, 47, 48, 48, 48, 49, 49, 49, 49, 51, 53, 55, 55, 53, 51, 49, + 51, 51, 52, 53, 53, 52, 51, 51, 52, 54, 55, 56, 55, 55, 57, 59, + 59, 58, 57, 56, 57, 58, 60, 61, 57, 58, 60, 62, 64, 66, 68, 69, + 71, 70, 69, 69, 69, 70, 71, 72, 74, 75, 78, 81, 83, 84, 85, 86, + 86, 88, 89, 91, 94, 99, 106, 111, 107, 98, 123, 135, 146, 199, 230, 219, + 231, 210, 220, 243, 247, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 99, 40, 51, 48, 46, 46, 45, 42, 43, 47, 49, + 43, 45, 50, 51, 51, 61, 76, 91, 89, 85, 82, 81, 81, 83, 85, 90, + 93, 90, 87, 89, 95, 97, 96, 82, 68, 53, 45, 46, 51, 52, 49, 49, + 47, 47, 48, 48, 48, 49, 49, 48, 49, 51, 53, 53, 51, 49, 48, 49, + 50, 50, 50, 50, 50, 50, 49, 54, 56, 57, 57, 57, 57, 59, 60, 60, + 60, 58, 58, 58, 60, 61, 62, 55, 56, 58, 60, 62, 64, 66, 66, 68, + 68, 67, 67, 69, 71, 74, 75, 76, 77, 79, 81, 83, 85, 86, 86, 86, + 89, 93, 96, 99, 102, 105, 108, 116, 107, 113, 123, 158, 191, 200, 233, 227, + 198, 205, 237, 252, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 53, 54, 51, 47, 45, 47, 46, 43, 42, 45, 42, 41, + 43, 47, 54, 60, 72, 83, 94, 88, 82, 80, 81, 84, 84, 85, 90, 98, + 100, 95, 91, 90, 91, 90, 90, 77, 60, 49, 48, 52, 55, 55, 48, 47, + 47, 47, 48, 48, 48, 48, 49, 50, 50, 50, 50, 50, 50, 49, 50, 50, + 50, 50, 50, 50, 50, 50, 54, 56, 57, 58, 57, 57, 59, 61, 60, 60, + 59, 59, 60, 61, 61, 62, 64, 64, 64, 65, 65, 65, 66, 66, 66, 66, + 65, 65, 67, 71, 74, 76, 78, 78, 78, 79, 81, 83, 85, 86, 88, 91, + 95, 97, 98, 99, 100, 101, 106, 116, 128, 135, 175, 181, 168, 231, 246, 219, + 208, 223, 242, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 52, 19, 57, 50, 43, 40, 42, 44, 43, 45, 45, 41, 41, 45, + 47, 56, 71, 83, 87, 88, 85, 83, 83, 82, 82, 83, 85, 93, 100, 101, + 97, 90, 88, 85, 82, 93, 81, 64, 51, 45, 48, 54, 57, 47, 46, 47, + 47, 47, 48, 48, 48, 52, 51, 50, 50, 50, 50, 51, 52, 52, 52, 51, + 51, 51, 51, 52, 52, 52, 54, 56, 56, 55, 55, 57, 59, 58, 58, 59, + 60, 60, 60, 60, 60, 67, 67, 67, 67, 66, 66, 66, 66, 67, 66, 64, + 64, 65, 69, 72, 74, 78, 77, 75, 75, 77, 80, 83, 86, 86, 89, 92, + 94, 95, 95, 98, 101, 113, 117, 127, 119, 154, 171, 167, 238, 248, 239, 216, + 206, 221, 240, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 49, 82, 89, 61, 52, 43, 41, 42, 41, 41, 42, 43, 48, 49, 48, + 60, 79, 90, 89, 68, 72, 79, 82, 82, 82, 86, 92, 99, 101, 99, 92, + 90, 90, 89, 87, 95, 84, 66, 49, 41, 41, 47, 51, 46, 46, 46, 47, + 47, 48, 48, 48, 55, 54, 52, 51, 51, 52, 54, 56, 54, 53, 53, 52, + 52, 53, 53, 54, 51, 52, 54, 54, 54, 54, 55, 57, 54, 55, 57, 59, + 60, 59, 58, 57, 57, 58, 58, 59, 59, 60, 61, 61, 68, 67, 65, 63, + 64, 66, 70, 72, 77, 75, 73, 72, 73, 77, 82, 85, 83, 84, 88, 89, + 91, 97, 102, 106, 97, 100, 127, 125, 154, 176, 156, 193, 212, 231, 219, 202, + 214, 229, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, + 71, 53, 46, 52, 40, 36, 45, 48, 41, 36, 37, 42, 41, 49, 57, 68, + 89, 96, 81, 78, 78, 81, 84, 83, 84, 91, 103, 102, 97, 92, 89, 82, + 71, 68, 72, 100, 93, 75, 54, 40, 41, 45, 47, 49, 49, 49, 49, 49, + 50, 50, 51, 52, 53, 52, 52, 53, 53, 55, 55, 52, 52, 52, 53, 52, + 52, 50, 51, 50, 51, 50, 52, 51, 52, 52, 52, 54, 53, 53, 54, 56, + 57, 59, 60, 60, 60, 60, 61, 60, 60, 61, 61, 55, 60, 65, 67, 67, + 66, 68, 71, 67, 68, 72, 75, 73, 72, 78, 87, 87, 87, 87, 85, 84, + 89, 97, 105, 97, 102, 105, 116, 141, 165, 166, 154, 151, 176, 179, 221, 238, + 247, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 160, + 142, 111, 70, 53, 39, 39, 39, 36, 39, 45, 46, 46, 58, 70, 78, 89, + 94, 83, 89, 86, 89, 92, 91, 90, 93, 101, 105, 100, 93, 86, 76, 70, + 75, 86, 95, 91, 75, 57, 44, 43, 45, 46, 44, 44, 44, 46, 46, 47, + 47, 48, 52, 52, 52, 51, 52, 54, 55, 54, 52, 51, 52, 53, 53, 53, + 52, 52, 54, 54, 55, 55, 56, 56, 56, 56, 53, 53, 54, 54, 56, 58, + 59, 61, 60, 60, 61, 61, 60, 60, 60, 61, 58, 62, 66, 69, 68, 67, + 65, 65, 68, 68, 72, 75, 73, 72, 78, 87, 87, 88, 89, 88, 86, 89, + 95, 101, 99, 101, 102, 109, 130, 155, 163, 156, 161, 189, 189, 226, 240, 253, + 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 33, 69, + 110, 72, 56, 41, 38, 36, 35, 40, 48, 49, 48, 66, 84, 86, 88, 90, + 84, 93, 89, 88, 92, 93, 89, 88, 91, 96, 101, 105, 101, 88, 77, 77, + 84, 91, 87, 75, 58, 47, 45, 47, 47, 45, 45, 45, 45, 46, 48, 48, + 49, 49, 49, 49, 50, 50, 51, 52, 52, 49, 50, 51, 52, 53, 53, 53, + 52, 51, 52, 52, 52, 53, 53, 53, 53, 54, 53, 53, 55, 56, 59, 60, + 62, 60, 61, 60, 60, 60, 61, 61, 61, 63, 64, 66, 68, 69, 67, 63, + 60, 69, 69, 72, 75, 74, 73, 78, 86, 84, 87, 89, 89, 86, 87, 89, + 92, 97, 98, 98, 100, 118, 143, 158, 160, 173, 202, 198, 223, 231, 247, 247, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 59, 28, 27, 45, + 55, 47, 40, 39, 38, 37, 39, 43, 51, 49, 68, 89, 88, 84, 87, 86, + 91, 85, 83, 90, 92, 89, 83, 80, 77, 82, 87, 89, 85, 81, 82, 86, + 92, 88, 76, 58, 47, 46, 49, 49, 45, 46, 46, 47, 48, 48, 49, 50, + 48, 48, 48, 48, 48, 49, 50, 51, 48, 49, 51, 52, 53, 54, 54, 54, + 51, 51, 51, 52, 52, 52, 53, 53, 54, 54, 55, 55, 57, 58, 61, 62, + 61, 61, 61, 60, 61, 61, 62, 62, 66, 65, 63, 64, 67, 68, 65, 61, + 71, 69, 71, 74, 74, 72, 77, 83, 80, 84, 88, 89, 86, 84, 84, 86, + 92, 93, 93, 94, 108, 131, 150, 158, 192, 220, 213, 229, 232, 249, 252, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, 35, 48, 56, 49, 45, + 43, 41, 41, 40, 36, 39, 41, 53, 51, 70, 90, 88, 84, 89, 91, 90, + 84, 84, 92, 97, 93, 85, 81, 73, 68, 61, 59, 66, 81, 96, 105, 96, + 92, 78, 59, 48, 48, 50, 50, 42, 42, 43, 43, 44, 45, 46, 46, 47, + 47, 47, 47, 47, 48, 49, 51, 49, 50, 51, 53, 54, 54, 54, 54, 55, + 55, 56, 56, 56, 57, 57, 57, 55, 55, 56, 56, 58, 59, 62, 62, 61, + 61, 61, 62, 62, 61, 62, 62, 68, 64, 60, 60, 64, 68, 68, 67, 71, + 69, 69, 72, 73, 71, 75, 80, 79, 83, 88, 90, 88, 86, 87, 88, 86, + 90, 91, 94, 103, 120, 139, 149, 171, 201, 195, 215, 220, 239, 248, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 50, 44, 45, 40, 47, 46, + 43, 39, 36, 37, 42, 47, 59, 58, 75, 90, 88, 90, 94, 92, 83, 79, + 81, 89, 94, 91, 83, 81, 91, 86, 79, 76, 83, 96, 102, 103, 96, 92, + 81, 63, 52, 50, 52, 51, 47, 46, 47, 47, 47, 47, 47, 48, 47, 48, + 48, 48, 48, 49, 50, 50, 50, 51, 52, 53, 54, 54, 54, 53, 55, 55, + 55, 55, 56, 56, 56, 57, 56, 56, 56, 57, 58, 60, 61, 63, 62, 62, + 61, 62, 62, 63, 62, 63, 66, 63, 60, 60, 63, 67, 70, 71, 71, 68, + 67, 70, 71, 70, 72, 76, 79, 83, 88, 91, 90, 90, 94, 97, 90, 92, + 92, 94, 100, 112, 127, 137, 133, 162, 162, 193, 204, 221, 236, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 189, 60, 61, 53, 42, 29, 40, 44, 43, + 38, 35, 39, 48, 53, 60, 64, 82, 91, 90, 94, 96, 85, 75, 73, 75, + 83, 87, 83, 78, 77, 91, 97, 101, 102, 103, 105, 99, 91, 91, 90, 83, + 69, 59, 55, 53, 51, 54, 53, 52, 52, 51, 50, 50, 50, 48, 49, 49, + 49, 49, 51, 52, 52, 51, 51, 52, 53, 53, 52, 52, 51, 52, 52, 52, + 52, 53, 53, 54, 54, 56, 56, 56, 57, 57, 60, 61, 62, 60, 60, 61, + 61, 62, 63, 63, 64, 61, 63, 64, 65, 65, 66, 68, 69, 71, 66, 65, + 68, 69, 68, 70, 73, 76, 80, 84, 87, 89, 92, 99, 104, 100, 98, 95, + 94, 96, 104, 115, 123, 119, 145, 148, 188, 197, 207, 223, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 81, 51, 31, 45, 55, 38, 26, 35, 41, 41, + 39, 43, 50, 53, 60, 68, 83, 90, 90, 97, 94, 78, 73, 72, 74, 82, + 84, 80, 76, 76, 66, 77, 85, 86, 90, 96, 97, 95, 85, 87, 84, 74, + 65, 61, 56, 51, 53, 54, 53, 52, 50, 49, 48, 48, 51, 51, 50, 50, + 51, 51, 52, 53, 52, 51, 52, 52, 52, 51, 50, 50, 54, 54, 55, 55, + 55, 56, 56, 57, 57, 57, 57, 57, 58, 59, 60, 62, 60, 60, 61, 62, + 61, 62, 63, 64, 58, 63, 68, 69, 67, 65, 65, 66, 70, 66, 64, 67, + 68, 67, 68, 71, 72, 75, 80, 82, 85, 90, 100, 106, 110, 104, 97, 94, + 94, 98, 107, 115, 105, 127, 129, 169, 174, 175, 187, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 99, 49, 38, 43, 41, 44, 37, 35, 35, 37, 38, + 41, 51, 59, 69, 71, 79, 88, 90, 88, 89, 95, 76, 73, 73, 80, 81, + 77, 73, 73, 78, 72, 75, 86, 93, 91, 86, 86, 84, 83, 78, 70, 65, + 61, 58, 55, 57, 56, 53, 52, 53, 54, 53, 52, 51, 52, 53, 55, 55, + 55, 54, 53, 49, 46, 51, 60, 61, 56, 54, 57, 57, 54, 54, 57, 57, + 55, 55, 58, 58, 58, 58, 60, 61, 61, 59, 57, 61, 58, 55, 58, 62, + 63, 60, 56, 61, 62, 63, 63, 61, 61, 62, 63, 65, 66, 68, 70, 70, + 70, 68, 67, 66, 71, 78, 80, 79, 80, 86, 92, 101, 100, 98, 100, 97, + 96, 102, 111, 104, 102, 106, 128, 151, 154, 160, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 209, 49, 46, 62, 43, 28, 42, 41, 39, 39, 44, 49, 55, + 64, 72, 73, 74, 80, 88, 90, 86, 87, 90, 86, 76, 67, 69, 75, 78, + 78, 79, 79, 77, 81, 92, 97, 95, 90, 89, 83, 81, 76, 69, 63, 59, + 56, 55, 58, 58, 56, 55, 55, 53, 49, 46, 51, 51, 51, 51, 52, 52, + 52, 51, 52, 49, 52, 58, 59, 54, 52, 54, 53, 51, 52, 57, 58, 55, + 56, 59, 59, 59, 58, 60, 62, 61, 60, 57, 63, 61, 60, 62, 65, 67, + 64, 62, 63, 65, 65, 64, 62, 61, 62, 63, 67, 67, 67, 67, 67, 68, + 69, 69, 68, 72, 76, 77, 76, 77, 81, 84, 94, 94, 97, 99, 97, 94, + 97, 104, 105, 102, 99, 114, 139, 147, 150, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 165, 151, 80, 24, 31, 48, 39, 41, 36, 37, 45, 55, 62, 71, + 77, 81, 77, 80, 87, 90, 86, 84, 84, 94, 80, 67, 68, 75, 79, 81, + 81, 81, 83, 91, 101, 102, 97, 92, 91, 80, 79, 73, 69, 63, 57, 54, + 54, 48, 50, 51, 54, 56, 56, 53, 51, 52, 51, 50, 50, 49, 50, 50, + 50, 54, 51, 52, 55, 55, 52, 51, 53, 51, 50, 53, 58, 60, 57, 57, + 61, 61, 61, 61, 63, 64, 64, 61, 58, 58, 58, 58, 60, 61, 62, 62, + 63, 65, 66, 67, 66, 64, 62, 63, 64, 68, 67, 65, 64, 65, 66, 69, + 70, 71, 72, 73, 75, 77, 79, 81, 82, 83, 86, 93, 99, 98, 94, 95, + 101, 109, 108, 100, 106, 131, 144, 148, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 60, 51, 85, 76, 41, 35, 46, 40, 36, 36, 46, 57, 66, 74, 78, + 84, 80, 81, 88, 91, 89, 85, 83, 94, 85, 77, 76, 77, 77, 78, 79, + 87, 93, 102, 108, 106, 99, 93, 90, 80, 76, 72, 69, 63, 57, 54, 55, + 46, 48, 48, 51, 55, 57, 55, 54, 54, 54, 51, 51, 50, 51, 51, 51, + 54, 53, 52, 53, 53, 52, 53, 54, 54, 53, 56, 61, 63, 60, 60, 63, + 65, 65, 64, 65, 67, 65, 62, 60, 55, 56, 58, 58, 57, 57, 60, 62, + 63, 64, 66, 65, 64, 63, 64, 66, 67, 66, 65, 65, 65, 67, 68, 69, + 71, 71, 72, 76, 81, 85, 87, 87, 81, 84, 91, 98, 98, 95, 96, 103, + 103, 109, 106, 107, 126, 143, 151, 191, 255, 255, 255, 255, 255, 255, 255, 60, + 45, 42, 40, 31, 43, 54, 41, 42, 39, 43, 56, 69, 77, 84, 87, 84, + 80, 81, 88, 94, 93, 89, 89, 95, 91, 85, 80, 73, 69, 72, 80, 96, + 103, 110, 111, 107, 100, 93, 87, 83, 77, 72, 71, 66, 58, 54, 59, 60, + 58, 54, 52, 51, 53, 52, 52, 56, 56, 54, 54, 53, 53, 54, 54, 54, + 55, 54, 54, 54, 57, 58, 59, 61, 60, 61, 67, 67, 66, 64, 68, 70, + 71, 71, 72, 72, 71, 67, 64, 62, 62, 62, 61, 59, 59, 62, 63, 60, + 61, 63, 64, 63, 64, 66, 68, 65, 66, 67, 68, 69, 68, 67, 67, 71, + 71, 73, 77, 82, 86, 87, 87, 91, 92, 95, 98, 95, 92, 94, 101, 90, + 105, 108, 110, 124, 141, 155, 172, 255, 255, 255, 255, 255, 255, 255, 78, 55, + 44, 44, 41, 38, 39, 34, 40, 41, 50, 65, 78, 85, 89, 94, 84, 81, + 84, 91, 95, 95, 94, 96, 100, 96, 88, 78, 65, 63, 72, 86, 103, 108, + 111, 109, 104, 100, 93, 86, 86, 79, 75, 75, 70, 61, 59, 63, 66, 63, + 57, 56, 57, 60, 62, 63, 60, 60, 61, 63, 62, 62, 61, 61, 57, 61, + 60, 59, 59, 64, 64, 63, 67, 66, 66, 72, 73, 73, 73, 79, 80, 79, + 79, 80, 80, 79, 75, 73, 71, 68, 66, 62, 62, 60, 61, 61, 58, 61, + 63, 64, 63, 64, 65, 67, 65, 66, 69, 70, 71, 70, 68, 67, 73, 74, + 76, 78, 80, 81, 83, 84, 100, 98, 98, 97, 93, 89, 92, 99, 92, 106, + 112, 115, 128, 142, 164, 192, 255, 255, 255, 255, 255, 255, 57, 41, 43, 44, + 48, 49, 39, 37, 50, 44, 48, 59, 73, 81, 83, 85, 89, 83, 83, 87, + 94, 95, 95, 97, 101, 103, 98, 91, 86, 75, 71, 77, 90, 106, 108, 106, + 102, 101, 102, 95, 85, 90, 82, 78, 80, 77, 66, 62, 68, 65, 65, 63, + 65, 69, 73, 76, 78, 68, 71, 73, 76, 77, 77, 74, 74, 65, 71, 70, + 68, 67, 71, 70, 68, 72, 70, 70, 76, 79, 81, 85, 91, 90, 89, 89, + 89, 90, 87, 84, 81, 82, 77, 72, 67, 66, 66, 63, 61, 63, 65, 66, + 65, 64, 63, 64, 66, 68, 68, 69, 70, 70, 70, 70, 70, 73, 76, 80, + 80, 80, 81, 83, 87, 95, 94, 95, 95, 93, 89, 92, 98, 105, 110, 111, + 116, 130, 143, 169, 205, 255, 255, 255, 255, 255, 255, 78, 43, 58, 49, 36, + 48, 50, 45, 49, 53, 58, 70, 82, 84, 81, 81, 84, 84, 85, 90, 96, + 95, 94, 98, 104, 102, 99, 99, 99, 93, 86, 85, 89, 107, 106, 102, 97, + 99, 103, 97, 87, 94, 84, 80, 82, 78, 67, 63, 71, 74, 72, 72, 73, + 76, 78, 77, 76, 78, 80, 84, 88, 90, 89, 87, 86, 71, 77, 77, 72, + 71, 74, 73, 68, 73, 70, 71, 77, 82, 87, 92, 100, 96, 95, 94, 95, + 95, 94, 90, 87, 97, 89, 80, 76, 75, 75, 70, 65, 67, 69, 69, 68, + 65, 64, 63, 65, 72, 71, 69, 68, 68, 69, 71, 72, 71, 76, 82, 84, + 83, 84, 89, 95, 82, 84, 88, 93, 93, 91, 95, 103, 112, 107, 102, 110, + 126, 139, 167, 205, 255, 255, 255, 255, 255, 184, 64, 48, 50, 50, 51, 56, + 62, 63, 60, 72, 72, 75, 78, 81, 85, 87, 88, 85, 84, 86, 91, 95, + 97, 93, 92, 93, 99, 102, 96, 92, 93, 96, 97, 102, 98, 94, 94, 95, + 96, 94, 92, 92, 92, 90, 85, 79, 76, 75, 75, 75, 77, 79, 80, 81, + 82, 83, 83, 92, 95, 94, 91, 94, 101, 100, 94, 87, 86, 84, 83, 82, + 82, 81, 81, 84, 87, 90, 91, 90, 91, 95, 98, 109, 108, 107, 104, 101, + 96, 91, 88, 89, 91, 90, 84, 75, 68, 64, 64, 66, 64, 63, 66, 68, + 65, 63, 63, 60, 65, 70, 73, 71, 70, 70, 72, 74, 76, 81, 84, 86, + 89, 94, 98, 94, 92, 90, 91, 94, 96, 96, 95, 98, 96, 99, 108, 119, + 129, 144, 156, 255, 255, 255, 255, 255, 53, 72, 57, 60, 61, 61, 64, 70, + 70, 66, 76, 77, 79, 82, 86, 89, 91, 90, 88, 87, 87, 90, 94, 97, + 94, 93, 90, 97, 100, 95, 92, 94, 97, 99, 98, 96, 92, 92, 94, 96, + 95, 94, 97, 93, 87, 84, 84, 84, 82, 80, 82, 83, 85, 86, 87, 88, + 88, 89, 93, 96, 95, 93, 96, 102, 102, 97, 96, 94, 94, 93, 94, 94, + 95, 95, 98, 101, 103, 104, 103, 104, 106, 109, 108, 108, 107, 106, 102, 99, + 95, 94, 92, 94, 93, 88, 81, 73, 69, 69, 61, 59, 59, 65, 68, 69, + 69, 71, 66, 67, 67, 68, 67, 68, 69, 70, 72, 73, 77, 79, 82, 89, + 96, 100, 100, 95, 90, 93, 98, 101, 100, 97, 97, 96, 100, 108, 115, 123, + 132, 139, 255, 255, 255, 255, 67, 63, 74, 65, 69, 70, 71, 75, 79, 78, + 73, 77, 78, 80, 82, 85, 87, 88, 87, 91, 89, 87, 89, 92, 94, 94, + 94, 92, 98, 99, 94, 90, 93, 96, 96, 93, 93, 91, 92, 94, 96, 97, + 96, 100, 93, 85, 85, 91, 94, 91, 88, 88, 90, 90, 92, 93, 93, 93, + 93, 95, 98, 97, 96, 99, 104, 104, 100, 101, 100, 100, 101, 102, 104, 106, + 107, 104, 106, 108, 109, 108, 108, 110, 112, 108, 108, 108, 108, 107, 104, 103, + 102, 102, 102, 102, 98, 91, 86, 81, 80, 68, 65, 63, 66, 67, 65, 64, + 65, 70, 67, 63, 62, 63, 66, 69, 71, 71, 71, 72, 72, 76, 83, 90, + 97, 103, 98, 93, 94, 98, 103, 103, 101, 102, 102, 105, 112, 115, 116, 120, + 126, 255, 255, 255, 255, 69, 67, 69, 70, 74, 76, 77, 80, 83, 80, 75, + 80, 80, 81, 83, 85, 86, 86, 86, 91, 89, 87, 86, 88, 90, 91, 93, + 97, 100, 100, 93, 89, 90, 91, 90, 91, 91, 91, 93, 95, 97, 99, 99, + 98, 94, 90, 91, 95, 97, 95, 92, 92, 93, 93, 94, 95, 95, 94, 94, + 97, 97, 98, 98, 100, 104, 103, 101, 99, 99, 99, 100, 101, 102, 105, 106, + 104, 104, 106, 106, 106, 106, 106, 107, 107, 107, 107, 108, 108, 108, 107, 107, + 104, 105, 103, 100, 96, 91, 87, 86, 77, 71, 66, 67, 66, 62, 61, 62, + 70, 66, 61, 60, 63, 68, 70, 70, 72, 72, 72, 73, 74, 77, 82, 86, + 98, 95, 93, 92, 92, 96, 100, 103, 108, 107, 110, 116, 119, 121, 125, 130, + 255, 255, 255, 88, 81, 71, 71, 75, 78, 80, 80, 81, 84, 81, 76, 85, + 86, 87, 88, 88, 89, 90, 90, 90, 89, 86, 84, 84, 85, 87, 89, 94, + 97, 96, 91, 89, 91, 91, 89, 90, 92, 93, 95, 97, 98, 100, 101, 93, + 95, 96, 97, 97, 95, 94, 94, 94, 95, 95, 96, 96, 96, 95, 94, 98, + 97, 97, 100, 102, 103, 103, 103, 100, 100, 99, 99, 99, 99, 100, 101, 108, + 107, 108, 108, 109, 109, 109, 108, 105, 105, 105, 107, 107, 108, 108, 109, 101, + 100, 100, 99, 96, 93, 89, 87, 77, 71, 66, 67, 67, 65, 66, 68, 66, + 64, 62, 64, 68, 71, 71, 69, 71, 74, 77, 79, 79, 79, 81, 84, 87, + 90, 92, 88, 84, 84, 93, 101, 109, 108, 112, 120, 126, 132, 139, 147, 255, + 255, 255, 78, 89, 78, 80, 81, 83, 84, 82, 83, 86, 84, 79, 85, 85, + 86, 87, 87, 88, 89, 89, 89, 88, 87, 84, 82, 81, 83, 85, 86, 90, + 91, 89, 90, 95, 96, 93, 91, 94, 96, 97, 97, 98, 99, 101, 91, 95, + 98, 99, 97, 94, 94, 96, 98, 98, 98, 99, 99, 98, 96, 96, 100, 96, + 97, 102, 104, 103, 102, 104, 104, 104, 103, 102, 101, 101, 101, 101, 110, 108, + 107, 109, 111, 112, 111, 109, 106, 105, 105, 105, 105, 106, 107, 108, 105, 105, + 103, 103, 102, 101, 97, 95, 89, 81, 74, 72, 68, 64, 65, 67, 66, 65, + 66, 69, 71, 72, 71, 70, 70, 74, 80, 83, 86, 86, 88, 89, 80, 86, + 88, 86, 80, 81, 89, 97, 104, 104, 111, 123, 132, 141, 153, 162, 255, 255, + 198, 80, 88, 85, 86, 85, 86, 85, 82, 84, 87, 85, 81, 82, 82, 82, + 83, 85, 86, 86, 87, 89, 89, 89, 85, 81, 81, 82, 85, 84, 86, 87, + 86, 90, 96, 98, 96, 91, 94, 97, 97, 96, 95, 96, 98, 96, 95, 93, + 94, 96, 98, 99, 99, 99, 99, 99, 99, 98, 97, 96, 95, 103, 98, 98, + 104, 107, 106, 105, 108, 105, 104, 103, 102, 102, 102, 102, 103, 105, 104, 103, + 105, 109, 110, 109, 106, 108, 106, 106, 105, 105, 106, 106, 107, 110, 109, 107, + 109, 110, 109, 105, 102, 106, 97, 84, 78, 71, 64, 62, 63, 70, 71, 72, + 73, 71, 70, 71, 72, 70, 73, 78, 81, 83, 85, 88, 90, 81, 83, 84, + 85, 84, 86, 89, 93, 99, 102, 112, 128, 139, 149, 161, 198, 255, 255, 90, + 90, 84, 88, 83, 87, 87, 84, 81, 82, 86, 85, 81, 84, 85, 85, 86, + 88, 89, 89, 90, 89, 91, 90, 88, 83, 81, 82, 85, 85, 87, 87, 86, + 90, 95, 97, 94, 91, 94, 97, 97, 94, 92, 93, 95, 101, 95, 88, 89, + 96, 102, 104, 103, 98, 98, 98, 97, 95, 95, 94, 93, 106, 100, 99, 105, + 109, 107, 106, 110, 101, 101, 100, 100, 100, 100, 101, 102, 104, 102, 102, 104, + 107, 110, 109, 105, 109, 107, 107, 106, 105, 104, 106, 106, 107, 106, 105, 106, + 108, 107, 103, 100, 106, 96, 86, 79, 75, 71, 69, 72, 74, 75, 76, 74, + 70, 68, 70, 73, 72, 73, 75, 76, 77, 78, 82, 86, 87, 84, 82, 85, + 91, 94, 92, 90, 97, 102, 114, 132, 145, 153, 163, 255, 255, 255, 84, 83, + 90, 92, 88, 84, 85, 87, 86, 84, 82, 82, 83, 82, 83, 83, 86, 89, + 90, 89, 87, 86, 86, 87, 87, 87, 87, 87, 87, 88, 90, 92, 94, 95, + 98, 99, 99, 90, 95, 100, 103, 103, 101, 98, 97, 94, 90, 90, 95, 97, + 95, 97, 103, 101, 100, 100, 101, 102, 101, 101, 101, 102, 102, 101, 103, 105, + 107, 106, 105, 103, 102, 101, 100, 101, 101, 101, 102, 106, 102, 98, 99, 103, + 106, 107, 106, 101, 102, 105, 107, 105, 102, 105, 111, 106, 108, 108, 110, 109, + 110, 109, 108, 103, 106, 103, 95, 89, 85, 80, 74, 76, 76, 75, 74, 72, + 70, 70, 69, 65, 77, 80, 75, 77, 88, 89, 79, 78, 85, 81, 77, 83, + 88, 96, 110, 101, 100, 111, 142, 165, 162, 162, 255, 255, 255, 83, 88, 87, + 84, 88, 84, 85, 86, 86, 84, 82, 82, 83, 84, 84, 84, 87, 90, 91, + 89, 87, 86, 87, 86, 87, 86, 87, 87, 87, 89, 90, 92, 94, 96, 96, + 97, 96, 95, 95, 93, 92, 91, 94, 99, 103, 96, 92, 91, 96, 97, 95, + 96, 101, 98, 98, 98, 98, 98, 99, 99, 99, 102, 100, 99, 101, 104, 105, + 105, 104, 103, 103, 102, 102, 103, 102, 102, 102, 109, 107, 105, 105, 109, 111, + 110, 108, 109, 105, 104, 107, 107, 104, 103, 105, 108, 108, 109, 108, 108, 107, + 106, 106, 105, 107, 104, 96, 93, 93, 91, 88, 85, 84, 82, 80, 76, 74, + 69, 66, 72, 80, 82, 79, 82, 91, 92, 88, 82, 90, 87, 82, 90, 96, + 105, 119, 122, 128, 128, 139, 169, 186, 204, 255, 255, 146, 82, 92, 85, 76, + 87, 83, 85, 86, 86, 84, 82, 82, 83, 84, 84, 85, 88, 89, 90, 88, + 86, 88, 87, 86, 85, 85, 86, 87, 88, 89, 90, 93, 95, 96, 95, 93, + 92, 97, 96, 92, 89, 89, 93, 99, 105, 98, 95, 94, 96, 96, 95, 96, + 99, 98, 97, 98, 98, 98, 98, 99, 99, 102, 100, 100, 102, 105, 106, 105, + 104, 102, 103, 104, 105, 105, 103, 103, 102, 107, 105, 104, 105, 107, 108, 108, + 105, 113, 105, 101, 105, 108, 106, 103, 102, 107, 106, 106, 106, 106, 106, 107, + 108, 106, 108, 105, 100, 99, 103, 105, 103, 95, 93, 90, 90, 89, 84, 76, + 70, 77, 78, 80, 83, 86, 89, 91, 92, 82, 89, 86, 84, 93, 99, 105, + 119, 121, 133, 136, 148, 175, 192, 255, 255, 255, 156, 84, 92, 86, 74, 83, + 82, 84, 86, 86, 84, 83, 82, 83, 86, 86, 87, 89, 90, 90, 88, 86, + 89, 88, 86, 84, 84, 85, 87, 89, 90, 92, 94, 96, 97, 95, 92, 91, + 93, 96, 98, 100, 99, 99, 99, 100, 97, 96, 95, 96, 97, 97, 98, 100, + 100, 99, 100, 100, 100, 100, 101, 101, 103, 102, 101, 102, 105, 107, 106, 105, + 102, 104, 106, 107, 107, 105, 104, 102, 104, 103, 102, 102, 103, 105, 107, 106, + 107, 103, 100, 105, 108, 107, 105, 107, 105, 104, 104, 105, 106, 108, 110, 111, + 106, 108, 107, 104, 104, 109, 110, 109, 102, 100, 98, 101, 101, 98, 89, 83, + 82, 80, 83, 89, 90, 88, 88, 92, 83, 90, 89, 89, 97, 99, 102, 113, + 106, 118, 136, 162, 181, 177, 255, 255, 255, 166, 87, 86, 87, 79, 78, 81, + 84, 86, 86, 83, 82, 83, 84, 87, 87, 86, 88, 90, 89, 87, 85, 89, + 87, 85, 84, 83, 85, 87, 88, 92, 93, 95, 96, 95, 94, 92, 90, 91, + 96, 100, 103, 103, 101, 99, 99, 94, 96, 95, 95, 97, 100, 102, 102, 99, + 99, 99, 100, 101, 100, 100, 100, 104, 104, 103, 105, 107, 109, 108, 107, 103, + 104, 106, 107, 108, 106, 104, 102, 105, 104, 102, 101, 101, 104, 108, 111, 106, + 106, 107, 110, 109, 107, 109, 115, 108, 108, 108, 108, 108, 108, 109, 110, 105, + 109, 109, 107, 107, 110, 109, 107, 106, 104, 104, 106, 107, 106, 100, 95, 92, + 89, 91, 94, 94, 89, 85, 88, 87, 96, 96, 97, 106, 105, 103, 110, 108, + 122, 139, 165, 185, 210, 255, 255, 255, 155, 89, 82, 86, 86, 77, 80, 83, + 85, 85, 83, 82, 83, 84, 88, 87, 86, 87, 89, 88, 86, 83, 87, 86, + 85, 85, 84, 85, 86, 87, 92, 93, 93, 93, 93, 93, 91, 90, 92, 95, + 95, 96, 95, 96, 99, 101, 93, 96, 96, 95, 97, 102, 104, 103, 97, 97, + 97, 97, 97, 98, 98, 98, 104, 103, 103, 104, 107, 108, 107, 107, 104, 105, + 106, 106, 107, 106, 104, 103, 103, 102, 101, 99, 97, 98, 102, 106, 108, 109, + 112, 114, 110, 105, 109, 116, 113, 113, 112, 112, 110, 108, 106, 105, 106, 110, + 111, 109, 109, 110, 107, 103, 109, 109, 109, 108, 107, 107, 107, 107, 105, 103, + 100, 93, 89, 84, 81, 79, 88, 96, 95, 98, 107, 109, 108, 114, 120, 140, + 148, 162, 196, 255, 255, 255, 255, 125, 89, 81, 83, 90, 77, 80, 83, 84, + 84, 83, 83, 82, 84, 87, 87, 86, 87, 88, 87, 84, 81, 86, 86, 86, + 85, 86, 85, 85, 85, 91, 90, 89, 89, 88, 89, 90, 91, 92, 93, 92, + 91, 91, 93, 97, 101, 95, 99, 98, 95, 97, 102, 104, 101, 97, 96, 97, + 97, 97, 98, 98, 98, 103, 101, 102, 103, 106, 107, 106, 105, 105, 105, 105, + 105, 104, 104, 104, 104, 101, 102, 103, 101, 96, 93, 92, 94, 105, 104, 105, + 109, 109, 106, 108, 112, 112, 113, 114, 115, 114, 111, 108, 106, 111, 114, 113, + 109, 109, 110, 109, 106, 112, 113, 115, 113, 111, 114, 120, 127, 125, 124, 112, + 94, 84, 85, 85, 80, 87, 93, 91, 95, 108, 116, 120, 131, 137, 159, 169, + 178, 205, 255, 255, 255, 151, 97, 86, 81, 79, 90, 80, 80, 82, 84, 83, + 82, 82, 82, 83, 86, 85, 85, 86, 87, 86, 83, 80, 87, 86, 87, 87, + 87, 86, 84, 84, 89, 88, 86, 85, 84, 86, 89, 90, 89, 92, 94, 95, + 95, 95, 96, 97, 97, 102, 100, 96, 96, 102, 103, 99, 99, 99, 99, 100, + 101, 100, 101, 100, 101, 101, 100, 102, 104, 105, 104, 103, 106, 105, 104, 103, + 103, 103, 103, 105, 104, 108, 110, 109, 102, 95, 90, 88, 97, 92, 92, 100, + 106, 108, 107, 108, 105, 108, 112, 116, 117, 116, 114, 113, 115, 117, 114, 110, + 108, 112, 113, 112, 114, 117, 121, 119, 117, 123, 135, 147, 255, 255, 213, 101, + 88, 94, 97, 88, 91, 95, 93, 97, 114, 127, 137, 151, 155, 173, 190, 207, + 225, 255, 255, 255, 120, 99, 91, 74, 82, 84, 80, 78, 80, 80, 82, 84, + 86, 86, 87, 83, 85, 88, 88, 89, 88, 90, 91, 86, 92, 91, 84, 84, + 92, 94, 89, 89, 85, 84, 87, 87, 86, 89, 93, 87, 92, 95, 98, 98, + 98, 98, 99, 98, 98, 97, 97, 98, 99, 100, 101, 100, 100, 100, 100, 100, + 100, 101, 101, 102, 103, 104, 105, 105, 106, 106, 106, 104, 105, 103, 104, 103, + 102, 101, 100, 97, 100, 102, 104, 102, 98, 93, 91, 79, 86, 86, 82, 92, + 107, 106, 94, 99, 104, 108, 112, 114, 116, 117, 118, 113, 114, 111, 107, 111, + 119, 121, 116, 123, 105, 117, 139, 123, 159, 207, 255, 255, 255, 255, 255, 146, + 94, 79, 87, 94, 109, 110, 110, 129, 149, 160, 169, 182, 201, 216, 254, 255, + 255, 255, 255, 97, 88, 87, 75, 84, 86, 83, 82, 82, 83, 84, 84, 85, + 85, 85, 84, 85, 87, 86, 85, 83, 84, 86, 88, 90, 89, 86, 87, 91, + 92, 90, 90, 86, 84, 87, 87, 86, 88, 94, 89, 93, 96, 97, 97, 97, + 98, 99, 99, 99, 97, 98, 99, 100, 101, 102, 101, 100, 100, 101, 101, 101, + 101, 101, 101, 101, 102, 103, 104, 105, 104, 104, 105, 105, 106, 105, 104, 102, + 100, 99, 95, 96, 98, 102, 104, 105, 103, 103, 95, 95, 87, 79, 81, 91, + 94, 89, 95, 99, 104, 109, 112, 115, 118, 119, 117, 115, 117, 124, 124, 117, + 117, 123, 115, 162, 116, 145, 174, 179, 255, 255, 255, 255, 255, 255, 255, 115, + 108, 109, 103, 113, 113, 117, 137, 161, 175, 181, 195, 219, 224, 255, 255, 255, + 255, 255, 85, 86, 87, 78, 84, 81, 79, 85, 85, 85, 85, 85, 85, 84, + 85, 84, 85, 87, 86, 84, 83, 83, 84, 91, 88, 87, 90, 90, 88, 89, + 92, 90, 86, 85, 88, 88, 86, 88, 93, 92, 95, 96, 96, 94, 95, 98, + 100, 98, 98, 98, 98, 99, 100, 102, 102, 101, 101, 101, 101, 101, 102, 102, + 102, 100, 100, 101, 102, 103, 103, 103, 103, 105, 106, 107, 107, 106, 103, 101, + 99, 87, 87, 87, 92, 100, 108, 111, 111, 106, 100, 91, 82, 78, 79, 83, + 85, 90, 93, 99, 105, 110, 114, 116, 116, 121, 112, 116, 129, 126, 114, 115, + 130, 120, 151, 140, 182, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, + 127, 117, 121, 122, 127, 149, 179, 195, 198, 187, 218, 250, 255, 255, 255, 255, + 255, 121, 91, 89, 82, 87, 81, 81, 84, 84, 84, 85, 85, 85, 85, 85, + 84, 85, 86, 87, 87, 87, 88, 90, 93, 86, 86, 93, 93, 87, 87, 94, + 90, 87, 86, 89, 88, 87, 88, 93, 95, 96, 97, 96, 94, 95, 98, 100, + 98, 98, 98, 98, 99, 100, 101, 102, 102, 102, 101, 102, 102, 102, 102, 103, + 101, 102, 103, 103, 103, 103, 102, 103, 103, 104, 106, 108, 107, 106, 104, 102, + 88, 84, 82, 85, 95, 103, 107, 108, 114, 109, 104, 99, 91, 81, 78, 81, + 83, 87, 94, 102, 108, 112, 112, 111, 122, 115, 114, 122, 124, 119, 125, 138, + 151, 132, 171, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, + 124, 125, 128, 136, 155, 189, 209, 208, 189, 202, 243, 241, 249, 255, 255, 255, + 216, 90, 87, 86, 95, 89, 94, 80, 81, 82, 84, 84, 85, 86, 87, 86, + 87, 87, 87, 87, 87, 89, 91, 93, 87, 87, 94, 94, 87, 86, 92, 90, + 87, 86, 89, 89, 87, 88, 92, 95, 96, 96, 95, 93, 94, 97, 100, 97, + 97, 97, 97, 97, 98, 100, 100, 101, 102, 102, 103, 103, 103, 103, 102, 104, + 104, 105, 106, 106, 105, 105, 104, 101, 103, 106, 108, 109, 108, 107, 106, 100, + 94, 89, 86, 87, 90, 91, 92, 106, 108, 110, 112, 105, 90, 79, 77, 75, + 78, 86, 97, 107, 112, 113, 111, 121, 121, 121, 120, 125, 131, 136, 135, 141, + 161, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, + 125, 135, 146, 158, 191, 216, 215, 199, 238, 210, 202, 255, 255, 255, 255, 255, + 91, 83, 84, 92, 85, 91, 79, 80, 81, 82, 83, 85, 87, 88, 90, 90, + 88, 85, 83, 83, 85, 87, 92, 90, 90, 93, 93, 89, 87, 89, 91, 88, + 87, 90, 90, 87, 87, 90, 94, 95, 96, 96, 95, 95, 98, 100, 98, 98, + 98, 97, 98, 99, 101, 101, 102, 102, 103, 103, 103, 103, 103, 103, 107, 107, + 107, 107, 107, 107, 106, 106, 103, 104, 106, 107, 108, 109, 109, 109, 108, 103, + 96, 86, 78, 72, 69, 69, 72, 80, 90, 99, 102, 99, 91, 86, 75, 76, + 80, 89, 101, 111, 115, 115, 113, 123, 126, 125, 127, 136, 139, 135, 156, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, + 160, 167, 167, 193, 222, 221, 213, 209, 255, 255, 255, 255, 255, 255, 255, 95, + 82, 83, 90, 78, 83, 82, 83, 83, 84, 85, 87, 87, 86, 91, 92, 91, + 88, 84, 84, 86, 88, 89, 93, 93, 91, 90, 91, 90, 86, 91, 88, 89, + 92, 91, 87, 87, 90, 90, 93, 95, 97, 97, 97, 99, 100, 100, 100, 99, + 99, 100, 101, 102, 103, 103, 103, 103, 103, 103, 104, 104, 103, 107, 107, 107, + 108, 108, 108, 107, 106, 108, 107, 107, 107, 107, 107, 108, 109, 107, 106, 102, + 92, 78, 68, 65, 66, 64, 73, 77, 82, 92, 105, 106, 99, 91, 85, 79, + 81, 90, 101, 109, 112, 116, 123, 129, 131, 130, 136, 151, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 92, 80, + 87, 97, 83, 88, 87, 86, 85, 86, 86, 86, 85, 85, 91, 91, 91, 90, + 88, 89, 93, 95, 88, 95, 96, 90, 88, 93, 91, 84, 91, 89, 89, 92, + 91, 88, 87, 89, 88, 92, 95, 98, 98, 98, 99, 99, 102, 102, 101, 101, + 102, 103, 104, 105, 103, 103, 103, 103, 104, 103, 103, 103, 106, 106, 106, 107, + 107, 107, 106, 106, 113, 111, 108, 106, 105, 105, 107, 108, 107, 111, 110, 103, + 90, 80, 78, 80, 95, 98, 91, 81, 89, 106, 110, 100, 109, 97, 82, 77, + 82, 92, 102, 107, 131, 129, 134, 139, 136, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 87, 88, + 90, 90, 89, 87, 85, 83, 82, 84, 88, 90, 89, 93, 91, 89, 88, 88, + 89, 91, 92, 95, 95, 94, 94, 93, 92, 90, 89, 86, 91, 94, 95, 92, + 91, 93, 95, 100, 98, 96, 94, 95, 96, 98, 99, 104, 104, 102, 103, 104, + 105, 104, 103, 103, 104, 104, 105, 107, 107, 107, 106, 101, 104, 108, 111, 111, + 110, 106, 104, 111, 110, 107, 105, 104, 103, 104, 105, 106, 107, 105, 103, 100, + 97, 94, 94, 104, 102, 96, 94, 102, 113, 114, 109, 108, 117, 108, 104, 94, + 87, 102, 104, 120, 130, 138, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 86, 90, + 93, 93, 89, 87, 85, 84, 86, 90, 92, 92, 95, 93, 90, 88, 87, 88, + 89, 90, 95, 94, 92, 91, 91, 93, 93, 94, 91, 91, 91, 92, 94, 95, + 94, 93, 98, 97, 95, 95, 96, 98, 100, 101, 101, 100, 99, 100, 101, 101, + 101, 101, 104, 103, 104, 105, 106, 106, 106, 106, 104, 105, 106, 107, 107, 107, + 106, 106, 108, 108, 105, 104, 102, 102, 101, 103, 105, 104, 102, 99, 96, 93, + 89, 88, 100, 103, 101, 100, 103, 111, 114, 112, 112, 120, 111, 111, 108, 107, + 124, 126, 122, 134, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 82, 82, 87, 92, + 94, 91, 88, 86, 88, 90, 93, 93, 94, 97, 95, 92, 88, 87, 88, 88, + 89, 95, 93, 91, 90, 90, 93, 96, 99, 95, 91, 88, 90, 95, 98, 96, + 93, 96, 96, 94, 95, 97, 99, 101, 102, 98, 98, 99, 99, 100, 100, 100, + 100, 104, 104, 105, 105, 105, 105, 106, 106, 105, 106, 105, 104, 104, 106, 107, + 108, 106, 106, 103, 103, 101, 101, 101, 101, 101, 102, 100, 98, 96, 95, 92, + 91, 98, 105, 107, 106, 106, 110, 113, 115, 117, 122, 113, 124, 137, 148, 174, + 180, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 80, 84, 89, 91, + 92, 88, 87, 90, 93, 94, 94, 96, 96, 94, 92, 89, 87, 88, 90, 91, + 94, 94, 93, 92, 92, 94, 96, 97, 96, 94, 91, 91, 94, 96, 97, 96, + 98, 97, 96, 97, 98, 99, 100, 101, 98, 100, 101, 101, 101, 101, 101, 103, + 104, 105, 104, 105, 104, 105, 106, 106, 106, 106, 105, 106, 106, 106, 107, 108, + 106, 106, 105, 103, 103, 102, 101, 102, 99, 100, 101, 103, 104, 104, 103, 103, + 101, 106, 109, 110, 109, 110, 112, 114, 118, 123, 124, 151, 179, 201, 232, 240, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 81, 85, 88, 87, 91, + 86, 85, 92, 94, 93, 93, 97, 95, 93, 91, 90, 90, 90, 93, 94, 93, + 94, 95, 96, 96, 95, 94, 93, 96, 97, 97, 95, 92, 92, 96, 99, 99, + 99, 97, 97, 97, 97, 97, 97, 97, 99, 100, 101, 99, 99, 102, 104, 105, + 106, 105, 106, 105, 105, 106, 105, 104, 106, 108, 110, 110, 109, 107, 106, 107, + 107, 107, 107, 105, 105, 104, 104, 104, 104, 105, 107, 108, 109, 109, 110, 109, + 108, 107, 110, 111, 112, 111, 111, 117, 131, 146, 190, 225, 240, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, 87, 87, 85, 91, 85, + 84, 93, 96, 93, 93, 98, 95, 93, 92, 90, 91, 92, 94, 96, 92, 94, + 97, 99, 99, 96, 94, 91, 95, 99, 100, 98, 93, 92, 96, 100, 99, 99, + 98, 97, 96, 95, 95, 94, 94, 97, 99, 99, 97, 97, 100, 104, 106, 107, + 106, 105, 105, 105, 105, 105, 103, 105, 108, 109, 109, 109, 107, 105, 107, 108, + 108, 109, 108, 107, 106, 106, 108, 108, 108, 108, 107, 105, 104, 103, 111, 105, + 102, 105, 110, 110, 111, 115, 121, 143, 171, 225, 253, 253, 253, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 83, 85, 81, 92, 85, 85, + 95, 98, 94, 93, 99, 97, 95, 93, 91, 91, 91, 93, 95, 92, 93, 95, + 97, 98, 98, 97, 96, 97, 98, 99, 99, 97, 96, 96, 96, 97, 96, 96, + 96, 96, 95, 95, 94, 93, 97, 101, 101, 97, 97, 100, 105, 107, 107, 106, + 106, 105, 105, 105, 104, 104, 104, 104, 105, 105, 106, 106, 106, 107, 107, 108, + 110, 108, 108, 107, 106, 107, 107, 107, 107, 105, 103, 102, 100, 106, 102, 100, + 103, 104, 106, 114, 124, 132, 154, 183, 235, 254, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 81, 78, 93, 85, 85, 96, + 101, 95, 94, 101, 99, 97, 95, 93, 91, 90, 92, 93, 92, 93, 93, 95, + 96, 98, 100, 101, 100, 98, 96, 98, 102, 102, 98, 92, 94, 93, 94, 95, + 96, 96, 96, 95, 96, 100, 104, 104, 100, 99, 104, 109, 106, 106, 106, 106, + 105, 105, 105, 105, 105, 104, 101, 100, 100, 102, 105, 107, 106, 107, 108, 109, + 109, 109, 107, 106, 105, 105, 105, 105, 106, 105, 104, 103, 100, 98, 99, 102, + 100, 102, 116, 134, 142, 160, 182, 229, 253, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 193, 76, 75, 94, 91, 91, 92, 95, + 95, 97, 98, 94, 100, 99, 91, 83, 88, 97, 103, 93, 94, 95, 96, 97, + 97, 97, 97, 98, 99, 98, 99, 99, 99, 99, 97, 98, 96, 95, 95, 96, + 97, 97, 96, 99, 100, 101, 101, 101, 103, 107, 109, 108, 104, 102, 102, 106, + 108, 107, 106, 99, 103, 106, 107, 104, 103, 105, 108, 104, 104, 104, 107, 110, + 112, 111, 109, 107, 108, 111, 108, 104, 103, 106, 109, 97, 107, 106, 103, 104, + 108, 121, 145, 150, 201, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 73, 82, 87, 87, 89, 93, 97, 98, + 98, 99, 97, 98, 93, 85, 81, 85, 90, 91, 93, 93, 94, 95, 96, 97, + 97, 97, 100, 99, 99, 99, 99, 100, 99, 98, 100, 98, 96, 97, 98, 99, + 99, 98, 98, 100, 101, 101, 101, 102, 104, 105, 108, 105, 104, 106, 109, 111, + 109, 107, 107, 109, 111, 111, 110, 110, 111, 111, 111, 111, 113, 114, 116, 116, + 115, 114, 111, 110, 109, 108, 107, 106, 104, 102, 101, 105, 102, 103, 106, 108, + 118, 141, 182, 218, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 110, 83, 78, 82, 87, 92, 97, 99, 100, + 100, 104, 102, 95, 86, 83, 87, 88, 85, 91, 91, 93, 95, 96, 97, 97, + 97, 99, 99, 99, 99, 99, 100, 99, 99, 101, 99, 98, 99, 100, 101, 101, + 100, 100, 102, 104, 104, 103, 103, 104, 104, 107, 106, 107, 109, 111, 112, 110, + 108, 110, 110, 110, 111, 112, 112, 111, 110, 111, 113, 113, 113, 110, 108, 107, + 107, 112, 108, 105, 106, 108, 107, 101, 96, 102, 101, 97, 102, 110, 110, 123, + 150, 197, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 212, 72, 72, 78, 83, 87, 92, 98, 101, 101, + 105, 105, 99, 89, 84, 85, 86, 85, 91, 91, 93, 95, 97, 98, 99, 99, + 100, 100, 100, 100, 101, 101, 101, 100, 101, 100, 98, 99, 100, 102, 102, 101, + 104, 107, 109, 109, 108, 106, 106, 105, 103, 105, 106, 110, 110, 110, 107, 107, + 112, 110, 108, 110, 112, 114, 110, 106, 109, 109, 108, 104, 98, 94, 93, 94, + 102, 102, 101, 104, 105, 106, 101, 97, 98, 96, 94, 102, 111, 114, 136, 173, + 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 188, 67, 75, 81, 82, 85, 94, 100, 100, 97, + 101, 99, 88, 79, 79, 83, 86, 89, 91, 94, 96, 99, 101, 101, 102, 100, + 100, 101, 100, 101, 101, 102, 101, 101, 99, 98, 99, 100, 102, 103, 102, 106, + 108, 110, 110, 108, 107, 106, 106, 103, 106, 108, 111, 111, 111, 109, 109, 117, + 115, 112, 114, 115, 117, 112, 109, 107, 104, 99, 92, 86, 83, 82, 83, 87, + 93, 97, 101, 100, 101, 101, 103, 94, 96, 94, 99, 108, 117, 146, 188, 224, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 189, 69, 77, 78, 81, 92, 97, 98, 95, 101, + 101, 89, 78, 77, 81, 86, 87, 89, 92, 96, 98, 101, 102, 102, 101, 101, + 101, 100, 101, 102, 101, 102, 101, 99, 98, 99, 101, 103, 104, 103, 104, 106, + 107, 107, 105, 104, 105, 106, 106, 110, 113, 114, 113, 112, 113, 113, 115, 114, + 113, 113, 113, 112, 110, 107, 102, 94, 85, 78, 75, 76, 77, 77, 81, 87, + 93, 96, 95, 96, 100, 103, 91, 99, 96, 97, 108, 125, 154, 190, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 60, 74, 77, 82, 92, 96, 93, 98, 102, 99, + 88, 80, 78, 80, 81, 83, 86, 89, 93, 97, 99, 100, 101, 101, 101, 100, + 101, 101, 102, 103, 103, 102, 101, 100, 101, 103, 105, 106, 105, 104, 105, 106, + 105, 104, 104, 106, 108, 108, 111, 113, 113, 111, 111, 113, 116, 112, 113, 114, + 112, 110, 107, 107, 107, 98, 87, 74, 69, 72, 78, 81, 81, 84, 85, 87, + 89, 90, 92, 93, 95, 89, 99, 98, 99, 119, 144, 168, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 188, 71, 77, 83, 94, 96, 91, 98, 97, 91, 81, + 75, 75, 72, 69, 80, 83, 86, 90, 95, 97, 98, 100, 101, 101, 101, 101, + 102, 103, 103, 104, 104, 102, 101, 103, 105, 107, 108, 107, 106, 107, 107, 106, + 105, 106, 108, 111, 107, 109, 111, 110, 108, 108, 112, 115, 115, 118, 119, 117, + 113, 109, 110, 111, 102, 89, 75, 70, 78, 88, 93, 93, 91, 87, 84, 85, + 88, 90, 89, 86, 88, 100, 99, 103, 132, 164, 181, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 186, 71, 83, 84, 87, 94, 86, 87, 87, 85, 79, + 76, 73, 75, 80, 83, 86, 89, 91, 94, 96, 98, 95, 95, 94, 95, 99, + 101, 100, 101, 103, 103, 104, 105, 104, 105, 106, 106, 103, 102, 101, 101, 104, + 108, 113, 115, 108, 112, 115, 113, 108, 108, 113, 118, 113, 111, 111, 113, 111, + 108, 106, 106, 101, 90, 85, 88, 91, 90, 90, 92, 104, 93, 87, 91, 90, + 84, 84, 89, 90, 104, 110, 111, 123, 183, 230, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 55, 70, 78, 85, 88, 94, 94, 90, 84, 77, 73, + 73, 75, 77, 80, 83, 85, 88, 91, 94, 97, 97, 95, 95, 96, 98, 99, + 98, 99, 103, 104, 104, 105, 104, 105, 105, 105, 103, 103, 102, 103, 105, 108, + 111, 113, 100, 103, 107, 110, 112, 112, 112, 113, 108, 109, 108, 106, 105, 105, + 104, 101, 96, 89, 85, 87, 88, 86, 89, 93, 104, 94, 85, 87, 89, 91, + 91, 94, 98, 102, 103, 114, 145, 213, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 182, 55, 74, 85, 85, 97, 94, 88, 81, 74, 70, 72, + 75, 73, 75, 77, 80, 84, 89, 92, 94, 98, 97, 96, 96, 97, 97, 97, + 98, 104, 104, 104, 104, 104, 104, 104, 104, 103, 104, 104, 106, 107, 108, 109, + 110, 112, 110, 107, 107, 110, 112, 111, 110, 107, 112, 111, 104, 103, 107, 107, + 100, 102, 99, 98, 98, 96, 96, 102, 108, 104, 99, 90, 85, 89, 96, 98, + 94, 98, 100, 103, 121, 163, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 185, 69, 85, 88, 89, 87, 84, 78, 72, 71, 71, 74, + 72, 72, 73, 77, 82, 88, 91, 92, 95, 96, 96, 96, 96, 96, 98, 99, + 104, 104, 104, 104, 103, 103, 103, 103, 104, 105, 106, 108, 109, 108, 108, 107, + 119, 113, 102, 96, 95, 101, 107, 113, 106, 113, 111, 104, 101, 108, 106, 98, + 95, 98, 98, 95, 92, 91, 98, 104, 102, 105, 101, 90, 89, 96, 98, 93, + 98, 107, 119, 135, 175, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 61, 80, 89, 84, 85, 85, 82, 77, 73, 71, 72, 72, + 72, 72, 76, 81, 87, 90, 91, 91, 93, 96, 97, 97, 97, 100, 102, 103, + 103, 103, 104, 103, 103, 103, 104, 104, 105, 107, 109, 110, 109, 107, 105, 102, + 99, 92, 85, 79, 83, 92, 102, 101, 108, 108, 102, 100, 105, 101, 95, 98, + 100, 101, 98, 95, 93, 94, 94, 94, 105, 109, 99, 93, 95, 99, 98, 106, + 111, 126, 145, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 192, 80, 86, 89, 90, 88, 83, 77, 71, 69, 73, 72, + 69, 73, 80, 86, 89, 89, 89, 92, 96, 97, 96, 97, 100, 104, 101, 101, + 102, 103, 103, 104, 104, 105, 104, 106, 107, 109, 110, 109, 108, 107, 98, 100, + 100, 92, 80, 72, 72, 74, 98, 100, 104, 106, 106, 105, 102, 101, 104, 105, + 106, 105, 108, 255, 101, 91, 87, 99, 107, 105, 99, 99, 103, 108, 109, 105, + 121, 146, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 66, 85, 88, 90, 89, 85, 79, 73, 72, 75, 71, 67, + 71, 78, 84, 85, 85, 91, 95, 99, 98, 96, 96, 99, 104, 99, 100, 101, + 102, 103, 104, 105, 106, 105, 105, 107, 108, 109, 110, 110, 109, 108, 108, 108, + 101, 89, 77, 68, 64, 85, 83, 91, 104, 107, 100, 98, 104, 101, 104, 107, + 255, 255, 255, 255, 204, 93, 93, 98, 104, 105, 104, 105, 111, 110, 107, 133, + 159, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 188, 77, 82, 85, 86, 84, 80, 78, 77, 76, 71, 67, 69, + 76, 82, 83, 82, 91, 97, 100, 99, 95, 94, 98, 101, 99, 99, 100, 102, + 104, 105, 106, 106, 105, 106, 106, 107, 109, 111, 112, 111, 109, 105, 102, 98, + 93, 88, 81, 76, 65, 62, 71, 93, 100, 90, 88, 100, 121, 124, 173, 255, + 255, 255, 255, 255, 205, 97, 94, 104, 110, 108, 106, 112, 115, 124, 164, 185, + 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 55, 76, 80, 87, 87, 80, 86, 74, 85, 76, 71, 71, 71, + 71, 77, 85, 93, 91, 89, 92, 97, 99, 99, 98, 100, 102, 101, 97, 98, + 104, 109, 107, 107, 106, 103, 101, 110, 119, 117, 107, 111, 108, 105, 102, 98, + 91, 81, 74, 69, 64, 62, 70, 84, 95, 100, 100, 115, 172, 255, 255, 255, + 255, 255, 255, 255, 255, 122, 112, 112, 115, 119, 122, 129, 132, 190, 223, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 182, 59, 66, 80, 83, 80, 87, 79, 82, 79, 76, 75, 73, 70, + 75, 83, 88, 88, 89, 94, 98, 100, 99, 96, 99, 102, 101, 98, 101, 106, + 110, 108, 106, 106, 105, 104, 109, 117, 117, 109, 109, 107, 104, 102, 99, 94, + 83, 77, 84, 79, 74, 76, 84, 97, 107, 115, 156, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 147, 144, 141, 140, 141, 182, 172, 200, 213, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 186, 57, 75, 84, 83, 92, 83, 78, 78, 78, 77, 73, 69, 71, + 77, 83, 86, 90, 95, 99, 98, 97, 94, 97, 101, 102, 101, 104, 108, 110, + 108, 104, 107, 107, 107, 108, 112, 112, 111, 111, 109, 108, 106, 102, 95, 87, + 80, 72, 74, 76, 85, 105, 132, 158, 176, 177, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 229, 172, 170, 172, 199, 187, 189, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 186, 68, 84, 85, 90, 78, 83, 82, 80, 80, 79, 75, 70, 69, + 82, 84, 89, 92, 96, 96, 97, 95, 97, 102, 104, 103, 106, 108, 109, 105, + 103, 107, 109, 108, 106, 108, 109, 111, 111, 112, 113, 112, 110, 105, 100, 97, + 85, 86, 90, 103, 124, 151, 173, 187, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 54, 75, 80, 84, 70, 89, 86, 81, 81, 83, 82, 75, 67, 80, + 82, 85, 88, 91, 93, 97, 98, 98, 103, 105, 104, 105, 107, 107, 102, 103, + 105, 109, 109, 106, 104, 106, 109, 108, 110, 112, 114, 113, 113, 113, 113, 94, + 95, 102, 119, 142, 162, 173, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 68, 74, 83, 76, 83, 80, 75, 75, 78, 82, 76, 68, 77, 80, + 83, 85, 87, 91, 94, 99, 95, 100, 102, 101, 103, 106, 106, 102, 104, 104, + 108, 110, 107, 102, 102, 107, 110, 112, 111, 108, 104, 104, 106, 108, 100, 103, + 117, 141, 167, 185, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 60, 80, 84, 76, 79, 79, 76, 77, 83, 87, 87, 71, 76, 81, + 85, 87, 88, 93, 95, 91, 95, 98, 98, 102, 106, 108, 105, 106, 105, 106, + 110, 108, 102, 101, 105, 112, 115, 113, 111, 110, 112, 117, 122, 147, 150, 158, + 170, 181, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 83, 78, 89, 93, 88, 86, 94, 105, 110, 65, 72, 80, 86, + 88, 88, 89, 92, 86, 91, 94, 96, 100, 107, 111, 109, 108, 104, 105, 110, + 109, 103, 100, 104, 108, 113, 117, 123, 130, 142, 155, 166, 173, 177, 181, 184, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 88, 90, 89, 88, 85, 78, 70, 71, 80, + 89, 88, 84, 92, 93, 96, 99, 103, 106, 107, 109, 108, 105, 106, 108, 112, + 113, 110, 109, 111, 123, 128, 139, 156, 164, 170, 183, 180, 178, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 74, 77, 78, 75, 72, 77, + 85, 93, 87, 95, 98, 97, 98, 106, 110, 110, 112, 111, 109, 112, 117, 123, + 126, 130, 128, 156, 167, 165, 170, 176, 176, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, 71, 78, 79, 74, 73, 80, + 87, 88, 101, 105, 101, 100, 105, 108, 104, 113, 113, 112, 114, 117, 126, 136, + 144, 147, 185, 197, 181, 177, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 67, 76, 83, 81, 78, 76, + 90, 94, 99, 106, 110, 109, 107, 107, 113, 116, 115, 115, 118, 126, 139, 150, + 157, 187, 192, 177, 174, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 78, 80, 86, 94, 103, + 89, 87, 103, 113, 108, 110, 119, 112, 114, 118, 120, 123, 130, 141, 150, 160, + 174, 177, 175, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, 93, 123, 138, 116, + 100, 105, 107, 101, 106, 118, 109, 112, 115, 120, 125, 133, 142, 149, 163, 172, + 174, 180, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 149, 136, + 123, 115, 113, 115, 118, 123, 122, 123, 127, 134, 142, 148, 153, 166, 180, 204, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 141, 131, 149, 145, 140, 141, 147, 155, 160, 163, 197, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 173, 188, 207, 231, 235, 227, + 223, 230, 243, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 220, 150, 153, 163, 173, 171, 162, 133, 146, 164, 176, 177, 179, + 183, 189, 205, 220, 238, 241, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, + 111, 97, 102, 109, 116, 131, 152, 169, 174, 153, 137, 124, 129, 145, 161, 163, + 160, 167, 177, 196, 213, 222, 224, 234, 241, 240, 243, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 101, 99, 101, + 102, 107, 111, 107, 110, 123, 144, 151, 168, 166, 166, 162, 160, 160, 165, 170, + 142, 141, 156, 181, 201, 201, 197, 195, 191, 200, 212, 226, 240, 246, 252, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 81, 82, 81, 81, + 88, 92, 90, 92, 103, 121, 128, 118, 140, 167, 170, 154, 138, 139, 147, 143, + 135, 136, 146, 148, 138, 134, 136, 135, 133, 134, 147, 174, 203, 222, 232, 235, + 243, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 73, 61, 56, 65, 69, 68, 67, 76, + 83, 81, 82, 88, 99, 100, 93, 100, 116, 134, 144, 142, 128, 118, 114, 107, + 102, 96, 93, 104, 142, 181, 197, 164, 123, 97, 100, 125, 151, 169, 181, 191, + 209, 227, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 195, 72, 68, 65, 64, 63, 63, 64, 65, 66, 70, 73, 78, + 83, 86, 84, 84, 80, 83, 87, 83, 76, 79, 95, 108, 110, 107, 112, 121, + 125, 115, 107, 119, 137, 142, 170, 132, 129, 157, 138, 132, 141, 160, 198, 207, + 207, 216, 237, 248, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 192, 64, 62, 61, 62, 62, 62, 62, 63, 65, 67, 69, 69, 74, 79, 80, + 77, 74, 74, 76, 67, 70, 72, 71, 76, 86, 96, 98, 114, 97, 93, 107, + 125, 127, 125, 120, 118, 141, 165, 156, 153, 164, 169, 174, 191, 228, 237, 236, + 230, 233, 244, 231, 246, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 105, 63, 62, + 61, 59, 57, 57, 57, 57, 58, 60, 63, 66, 68, 67, 72, 76, 73, 65, + 61, 63, 67, 65, 64, 72, 78, 84, 83, 89, 92, 97, 91, 94, 100, 108, + 111, 127, 137, 96, 80, 140, 146, 121, 146, 160, 170, 197, 226, 234, 239, 234, + 231, 244, 245, 248, 248, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 62, 63, 63, 62, 61, + 59, 58, 55, 55, 55, 56, 58, 61, 64, 66, 65, 67, 68, 65, 61, 59, + 61, 63, 73, 71, 79, 88, 91, 83, 85, 91, 83, 90, 100, 93, 82, 84, + 118, 148, 149, 89, 115, 145, 137, 141, 157, 176, 166, 187, 202, 228, 239, 234, + 241, 235, 242, 244, 246, 247, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 189, 56, 60, 60, 60, 59, 59, 58, 57, + 57, 59, 58, 57, 57, 58, 60, 62, 63, 63, 60, 58, 59, 62, 65, 64, + 63, 69, 66, 72, 79, 82, 74, 77, 82, 85, 81, 81, 77, 77, 82, 101, + 111, 144, 103, 74, 106, 123, 107, 121, 133, 136, 154, 176, 222, 241, 238, 232, + 211, 223, 230, 239, 243, 243, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 189, 57, 56, 60, 67, 56, 56, 56, 56, 56, 56, 56, 56, + 59, 58, 57, 56, 55, 56, 58, 58, 57, 52, 49, 52, 60, 64, 62, 58, + 63, 63, 66, 71, 72, 71, 74, 80, 79, 77, 77, 79, 82, 83, 84, 80, + 106, 117, 79, 85, 108, 98, 109, 106, 117, 126, 139, 183, 218, 228, 239, 231, + 207, 218, 232, 238, 238, 237, 240, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 52, 62, 72, 62, 49, 47, 48, 54, 54, 54, 54, 55, 56, 57, 57, 56, + 55, 54, 52, 52, 53, 55, 55, 55, 52, 51, 53, 57, 59, 58, 55, 60, + 66, 68, 67, 67, 71, 74, 74, 71, 79, 86, 83, 77, 73, 76, 77, 73, + 93, 85, 75, 85, 92, 91, 87, 96, 103, 103, 126, 149, 171, 207, 220, 201, + 207, 220, 228, 232, 235, 239, 242, 244, 234, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 62, 47, + 50, 59, 54, 49, 53, 54, 48, 48, 49, 49, 50, 52, 54, 54, 52, 52, + 51, 50, 50, 52, 53, 54, 56, 57, 58, 58, 56, 55, 55, 57, 54, 63, + 65, 59, 57, 63, 63, 58, 74, 75, 74, 69, 67, 69, 73, 75, 82, 67, + 88, 80, 79, 94, 81, 86, 79, 94, 95, 100, 97, 103, 138, 150, 194, 195, + 202, 213, 222, 227, 230, 232, 238, 231, 246, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 51, 55, 59, 58, 52, + 48, 47, 50, 53, 56, 55, 53, 51, 51, 52, 53, 52, 51, 50, 51, 52, + 53, 55, 56, 58, 58, 55, 55, 56, 56, 56, 55, 55, 54, 53, 57, 59, + 59, 59, 59, 61, 63, 61, 63, 65, 66, 67, 71, 75, 77, 73, 79, 81, + 78, 78, 80, 81, 77, 78, 79, 82, 84, 84, 82, 83, 81, 125, 165, 182, + 182, 202, 219, 222, 227, 234, 241, 227, 236, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 191, 54, 51, 53, 55, 53, 51, 48, + 48, 48, 50, 51, 55, 53, 51, 50, 51, 52, 51, 50, 51, 51, 52, 53, + 54, 55, 56, 57, 55, 54, 54, 54, 54, 54, 54, 55, 55, 59, 61, 61, + 61, 61, 63, 64, 61, 63, 63, 62, 61, 61, 63, 63, 71, 74, 75, 71, + 70, 73, 76, 75, 78, 80, 84, 86, 87, 86, 87, 84, 108, 131, 156, 181, + 199, 205, 206, 215, 214, 232, 235, 235, 246, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 189, 55, 52, 50, 52, 52, 52, 52, 51, 50, + 50, 49, 49, 55, 53, 51, 50, 52, 52, 52, 50, 53, 53, 53, 54, 54, + 54, 55, 55, 55, 54, 53, 52, 52, 53, 55, 55, 55, 57, 59, 59, 58, + 58, 60, 61, 63, 64, 65, 64, 61, 59, 59, 60, 65, 68, 67, 63, 63, + 66, 71, 72, 75, 76, 82, 83, 87, 87, 89, 89, 105, 103, 130, 170, 191, + 199, 208, 213, 225, 218, 222, 226, 237, 241, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 190, 54, 52, 53, 52, 48, 54, 53, 52, 51, 51, 51, + 51, 51, 54, 52, 49, 49, 50, 51, 50, 49, 53, 53, 53, 53, 53, 52, + 52, 52, 54, 53, 51, 50, 50, 52, 54, 56, 53, 54, 56, 56, 55, 55, + 56, 58, 61, 64, 66, 67, 66, 64, 64, 64, 61, 63, 63, 61, 61, 64, + 67, 69, 74, 77, 80, 84, 88, 93, 99, 99, 109, 92, 101, 121, 136, 163, + 175, 160, 216, 214, 230, 226, 244, 248, 229, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 188, 51, 46, 50, 56, 55, 47, 54, 52, 50, 48, 48, 49, 51, + 52, 52, 50, 48, 48, 49, 50, 49, 48, 52, 52, 52, 52, 51, 51, 51, + 51, 53, 51, 50, 49, 49, 51, 54, 55, 52, 53, 54, 54, 53, 52, 54, + 55, 54, 56, 60, 61, 60, 59, 60, 61, 59, 61, 64, 66, 66, 66, 68, + 70, 79, 79, 80, 83, 87, 96, 106, 111, 123, 116, 107, 96, 107, 152, 160, + 122, 119, 163, 207, 200, 220, 244, 231, 248, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 185, 42, 41, 40, 48, 56, 57, 52, 51, 49, 46, 44, 44, 46, 48, 50, + 51, 49, 47, 47, 48, 49, 48, 47, 51, 51, 50, 50, 50, 50, 50, 50, + 51, 50, 50, 49, 50, 52, 54, 55, 54, 55, 56, 56, 54, 54, 55, 56, + 55, 57, 58, 58, 57, 55, 56, 57, 59, 60, 63, 68, 69, 66, 67, 71, + 73, 73, 73, 74, 77, 85, 98, 103, 114, 125, 124, 111, 130, 183, 196, 166, + 77, 95, 132, 154, 165, 172, 193, 238, 244, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 43, + 39, 40, 45, 50, 51, 55, 56, 49, 46, 46, 45, 45, 46, 47, 47, 50, + 48, 46, 46, 47, 48, 47, 46, 49, 49, 49, 49, 49, 50, 50, 50, 50, + 50, 50, 51, 52, 53, 54, 54, 53, 53, 54, 53, 52, 51, 52, 53, 57, + 58, 58, 57, 55, 54, 55, 57, 57, 55, 57, 62, 65, 63, 67, 73, 69, + 69, 70, 70, 71, 75, 83, 86, 80, 93, 99, 101, 123, 151, 170, 184, 149, + 118, 109, 136, 142, 137, 173, 207, 213, 241, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 78, 33, 49, 45, + 47, 54, 52, 49, 50, 56, 48, 47, 49, 50, 50, 49, 47, 46, 50, 48, + 46, 45, 47, 47, 47, 45, 48, 48, 48, 49, 49, 50, 50, 50, 49, 50, + 51, 52, 53, 54, 54, 54, 51, 50, 53, 51, 51, 48, 51, 51, 56, 55, + 57, 54, 55, 53, 58, 59, 58, 53, 55, 59, 60, 58, 64, 73, 72, 73, + 75, 74, 73, 73, 77, 77, 80, 82, 78, 84, 90, 83, 102, 153, 201, 181, + 139, 130, 137, 162, 176, 122, 160, 232, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 54, 55, 56, 46, 47, 48, + 48, 48, 49, 48, 48, 51, 50, 50, 49, 49, 50, 50, 51, 50, 50, 49, + 49, 49, 49, 49, 49, 51, 51, 50, 50, 50, 50, 50, 50, 54, 54, 53, + 52, 52, 51, 50, 50, 54, 54, 56, 54, 54, 53, 56, 57, 57, 54, 53, + 51, 52, 53, 57, 57, 60, 62, 63, 59, 60, 64, 65, 62, 68, 70, 72, + 73, 74, 75, 80, 80, 95, 81, 84, 96, 98, 101, 103, 99, 166, 197, 211, + 191, 135, 146, 194, 156, 142, 199, 238, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 190, 59, 68, 53, 52, 51, 50, 50, 49, + 50, 50, 49, 49, 48, 48, 49, 49, 49, 49, 48, 48, 47, 47, 47, 48, + 49, 49, 50, 50, 47, 47, 47, 47, 47, 47, 47, 47, 49, 50, 50, 51, + 52, 52, 53, 53, 52, 53, 54, 53, 52, 52, 54, 57, 62, 61, 58, 55, + 53, 52, 52, 52, 62, 64, 64, 61, 62, 66, 67, 65, 67, 70, 73, 76, + 77, 79, 81, 83, 80, 92, 100, 88, 92, 122, 137, 121, 123, 156, 208, 222, + 200, 170, 162, 179, 177, 233, 243, 225, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 57, 52, 65, 43, 43, 51, 50, 50, 49, 51, + 50, 50, 50, 45, 46, 48, 48, 48, 48, 46, 45, 44, 45, 45, 47, 48, + 49, 50, 50, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 51, + 52, 52, 53, 51, 52, 52, 52, 51, 51, 53, 55, 55, 55, 56, 56, 57, + 58, 58, 59, 61, 64, 64, 61, 62, 66, 68, 66, 67, 70, 75, 78, 80, + 81, 83, 85, 91, 87, 94, 92, 88, 100, 122, 129, 119, 144, 192, 216, 232, + 209, 146, 177, 219, 239, 238, 232, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 188, 57, 42, 44, 42, 45, 49, 48, 48, 47, 47, 49, + 49, 49, 44, 46, 48, 49, 49, 48, 46, 44, 45, 45, 45, 46, 46, 47, + 47, 48, 49, 49, 50, 50, 50, 50, 51, 51, 54, 53, 53, 52, 51, 51, + 50, 50, 50, 51, 52, 51, 50, 51, 53, 55, 50, 52, 55, 58, 60, 62, + 63, 64, 59, 62, 62, 59, 60, 65, 66, 64, 68, 71, 76, 78, 79, 80, + 81, 82, 97, 83, 87, 94, 87, 88, 102, 116, 118, 140, 146, 151, 210, 232, + 199, 193, 226, 233, 237, 241, 239, 239, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 188, 55, 51, 43, 32, 53, 50, 45, 45, 45, 44, 45, 44, 47, + 47, 45, 46, 48, 50, 50, 48, 46, 45, 47, 47, 47, 46, 45, 45, 44, + 44, 45, 45, 45, 46, 46, 47, 47, 47, 55, 54, 54, 53, 52, 52, 51, + 51, 51, 52, 53, 52, 51, 51, 53, 55, 56, 57, 58, 59, 60, 60, 59, + 59, 60, 63, 63, 61, 61, 66, 67, 65, 69, 71, 74, 75, 75, 74, 75, + 76, 75, 85, 94, 86, 90, 117, 124, 105, 115, 146, 129, 114, 143, 203, 236, + 212, 214, 231, 239, 233, 230, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 193, 46, 59, 49, 52, 40, 59, 42, 43, 42, 43, 42, 43, 43, 45, 46, + 46, 46, 48, 49, 49, 48, 46, 46, 49, 48, 48, 47, 45, 44, 43, 43, + 45, 45, 46, 47, 47, 48, 49, 49, 50, 50, 51, 52, 52, 53, 54, 54, + 51, 52, 52, 52, 51, 51, 53, 55, 52, 53, 54, 57, 59, 62, 64, 65, + 66, 69, 68, 65, 65, 69, 70, 68, 69, 70, 71, 71, 69, 69, 70, 72, + 74, 75, 84, 94, 104, 121, 124, 108, 110, 147, 147, 135, 113, 148, 227, 227, + 222, 206, 209, 229, 242, 248, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 71, + 57, 54, 53, 52, 49, 51, 40, 45, 44, 43, 42, 43, 43, 44, 44, 45, + 45, 46, 46, 46, 46, 45, 45, 48, 48, 48, 47, 46, 46, 45, 45, 47, + 47, 48, 49, 50, 50, 51, 51, 48, 48, 49, 49, 50, 51, 51, 52, 49, + 50, 51, 50, 49, 49, 51, 54, 46, 47, 49, 53, 59, 64, 69, 72, 69, + 72, 71, 67, 67, 70, 70, 68, 68, 68, 68, 67, 66, 67, 70, 73, 85, + 67, 73, 95, 101, 100, 104, 106, 94, 111, 134, 137, 125, 147, 203, 229, 217, + 161, 162, 207, 231, 232, 240, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 59, 55, + 39, 51, 38, 47, 40, 47, 45, 45, 44, 43, 44, 44, 45, 45, 45, 44, + 44, 43, 43, 44, 44, 45, 47, 47, 47, 47, 47, 47, 47, 47, 43, 44, + 44, 45, 46, 47, 48, 48, 50, 49, 49, 48, 47, 47, 46, 46, 47, 49, + 49, 49, 47, 48, 50, 52, 52, 52, 52, 53, 56, 60, 64, 67, 69, 72, + 70, 66, 65, 68, 68, 65, 67, 67, 66, 64, 64, 67, 71, 75, 76, 79, + 82, 79, 82, 102, 110, 92, 110, 95, 110, 113, 136, 161, 160, 186, 180, 144, + 144, 167, 188, 220, 250, 252, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 63, 50, 49, 46, + 44, 44, 44, 44, 42, 47, 44, 42, 42, 44, 44, 41, 39, 42, 42, 42, + 43, 43, 44, 44, 44, 48, 47, 45, 44, 44, 45, 47, 48, 41, 41, 42, + 42, 42, 42, 42, 42, 46, 47, 48, 49, 49, 49, 49, 48, 50, 49, 49, + 48, 48, 47, 47, 46, 44, 46, 49, 53, 57, 60, 61, 62, 64, 66, 67, + 66, 64, 64, 68, 73, 62, 64, 66, 66, 67, 68, 71, 74, 82, 81, 80, + 82, 88, 94, 103, 107, 99, 101, 106, 114, 130, 139, 136, 119, 128, 186, 176, + 185, 233, 235, 241, 253, 238, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 81, 41, 49, 48, 45, 44, + 44, 43, 43, 42, 46, 43, 42, 42, 44, 44, 41, 39, 42, 42, 42, 43, + 43, 44, 44, 44, 46, 46, 45, 45, 45, 45, 46, 46, 42, 43, 43, 43, + 44, 45, 45, 45, 46, 47, 48, 48, 49, 49, 48, 48, 50, 50, 49, 49, + 49, 49, 49, 48, 54, 54, 55, 55, 54, 54, 53, 52, 57, 58, 59, 59, + 59, 59, 61, 63, 59, 60, 62, 63, 63, 64, 67, 70, 74, 74, 74, 75, + 79, 84, 90, 92, 98, 99, 103, 107, 120, 131, 131, 119, 126, 203, 210, 204, + 224, 233, 247, 248, 253, 251, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 69, 41, 47, 49, 46, 45, 45, + 44, 43, 41, 46, 44, 42, 42, 43, 43, 41, 40, 42, 42, 42, 43, 43, + 44, 44, 44, 44, 45, 45, 46, 46, 45, 45, 44, 43, 43, 44, 45, 46, + 47, 48, 48, 46, 46, 47, 48, 49, 49, 48, 48, 49, 49, 49, 50, 50, + 50, 50, 50, 51, 52, 53, 54, 54, 54, 54, 54, 56, 56, 56, 58, 60, + 61, 60, 59, 58, 59, 61, 61, 61, 62, 65, 68, 69, 69, 71, 73, 74, + 76, 78, 79, 95, 96, 98, 99, 106, 115, 121, 116, 101, 165, 202, 219, 234, + 240, 240, 229, 221, 219, 226, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 59, 45, 48, 47, 47, 45, 43, 43, 43, + 42, 40, 44, 43, 43, 42, 42, 42, 41, 40, 42, 42, 42, 43, 43, 44, + 44, 44, 43, 44, 45, 46, 46, 45, 44, 43, 42, 43, 44, 45, 47, 48, + 49, 50, 45, 46, 47, 48, 48, 48, 48, 47, 47, 48, 48, 49, 49, 50, + 50, 51, 48, 49, 50, 52, 54, 55, 55, 56, 57, 56, 56, 59, 63, 63, + 60, 57, 60, 62, 63, 63, 63, 64, 67, 69, 70, 72, 75, 78, 81, 80, + 79, 78, 88, 88, 91, 92, 95, 101, 108, 107, 110, 113, 138, 182, 216, 232, + 241, 241, 237, 225, 233, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 189, 47, 46, 41, 45, 46, 45, 42, 43, 43, 41, + 40, 42, 43, 43, 42, 40, 40, 40, 41, 42, 42, 42, 43, 43, 44, 44, + 44, 42, 43, 44, 45, 45, 44, 43, 42, 41, 41, 42, 44, 45, 47, 48, + 48, 45, 46, 47, 47, 48, 48, 47, 47, 45, 46, 46, 47, 47, 48, 48, + 49, 52, 52, 52, 53, 52, 51, 50, 50, 55, 54, 54, 57, 61, 61, 58, + 55, 61, 63, 64, 64, 63, 64, 67, 69, 73, 75, 79, 82, 86, 87, 86, + 85, 82, 85, 87, 89, 91, 92, 96, 98, 105, 82, 104, 151, 195, 227, 236, + 231, 218, 210, 227, 211, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 189, 56, 34, 48, 34, 45, 46, 43, 43, 41, 41, 40, 39, + 40, 42, 43, 42, 40, 39, 40, 41, 42, 42, 42, 43, 43, 44, 44, 44, + 42, 43, 43, 44, 44, 43, 43, 42, 41, 41, 42, 43, 44, 45, 46, 46, + 45, 45, 46, 47, 47, 47, 47, 47, 46, 46, 46, 46, 46, 47, 47, 47, + 46, 47, 49, 51, 52, 53, 54, 54, 57, 57, 57, 58, 61, 61, 60, 59, + 59, 61, 62, 61, 61, 61, 64, 66, 71, 73, 76, 81, 86, 87, 89, 89, + 85, 86, 88, 92, 92, 91, 92, 93, 83, 85, 106, 120, 155, 212, 231, 228, + 186, 187, 218, 225, 185, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 58, 38, 36, 38, 35, 43, 44, 42, 41, 42, 42, 39, 38, 39, + 41, 43, 42, 39, 38, 40, 42, 42, 42, 42, 43, 43, 44, 44, 44, 43, + 43, 42, 42, 42, 42, 43, 43, 42, 42, 42, 43, 44, 44, 44, 45, 44, + 45, 46, 47, 47, 47, 47, 46, 48, 47, 47, 47, 47, 47, 46, 46, 41, + 43, 46, 49, 53, 55, 57, 58, 57, 58, 59, 59, 58, 59, 61, 63, 58, + 59, 60, 60, 59, 60, 62, 64, 68, 68, 70, 73, 77, 82, 86, 88, 95, + 90, 89, 94, 95, 94, 93, 94, 107, 110, 119, 99, 119, 179, 212, 230, 222, + 222, 227, 232, 226, 237, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 45, 42, 29, 33, 35, 43, 43, 41, 41, 41, 42, 39, 38, 39, 41, + 43, 42, 40, 39, 41, 43, 42, 42, 42, 43, 43, 44, 44, 44, 44, 43, + 41, 40, 40, 41, 43, 44, 43, 43, 44, 44, 44, 44, 44, 44, 44, 45, + 46, 47, 47, 47, 47, 46, 50, 49, 49, 48, 48, 47, 47, 46, 49, 49, + 50, 51, 51, 50, 50, 50, 51, 53, 55, 53, 51, 52, 56, 60, 59, 60, + 61, 61, 60, 60, 62, 65, 66, 65, 65, 67, 71, 74, 80, 82, 101, 94, + 91, 95, 98, 97, 99, 100, 109, 120, 150, 151, 160, 174, 163, 179, 202, 213, + 214, 221, 236, 239, 235, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, + 43, 33, 43, 43, 48, 41, 39, 37, 38, 40, 41, 40, 37, 39, 39, 39, + 40, 40, 41, 41, 41, 42, 41, 41, 42, 42, 42, 41, 41, 45, 44, 43, + 42, 44, 44, 45, 46, 44, 43, 43, 42, 42, 43, 43, 44, 43, 44, 45, + 46, 46, 46, 45, 45, 49, 50, 51, 53, 54, 56, 57, 57, 51, 51, 51, + 50, 50, 49, 49, 49, 52, 53, 54, 53, 51, 51, 53, 55, 56, 56, 55, + 56, 57, 59, 62, 63, 60, 63, 66, 67, 70, 72, 75, 78, 83, 79, 82, + 89, 95, 98, 105, 111, 120, 126, 141, 163, 191, 210, 205, 192, 197, 168, 164, + 152, 207, 233, 237, 233, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 45, + 35, 44, 40, 42, 41, 38, 37, 38, 40, 41, 39, 37, 40, 40, 40, 41, + 43, 43, 43, 41, 39, 39, 40, 40, 39, 38, 37, 37, 42, 42, 44, 44, + 46, 45, 44, 43, 44, 43, 43, 42, 42, 43, 43, 44, 44, 44, 44, 45, + 45, 46, 46, 46, 46, 46, 47, 48, 49, 50, 51, 52, 51, 51, 51, 51, + 51, 51, 51, 51, 57, 58, 58, 57, 55, 55, 57, 58, 58, 57, 57, 57, + 57, 58, 60, 60, 58, 61, 63, 65, 66, 69, 72, 75, 80, 76, 76, 82, + 87, 90, 97, 104, 122, 139, 155, 154, 151, 163, 188, 205, 185, 180, 154, 105, + 133, 191, 223, 233, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 46, 37, + 44, 43, 41, 40, 37, 37, 38, 39, 40, 39, 37, 39, 39, 41, 41, 41, + 41, 40, 40, 39, 39, 40, 40, 39, 38, 37, 36, 41, 43, 46, 48, 48, + 46, 45, 42, 44, 43, 43, 42, 42, 43, 43, 44, 45, 44, 44, 44, 44, + 45, 46, 47, 45, 45, 45, 46, 46, 47, 47, 47, 50, 50, 51, 51, 52, + 53, 53, 54, 57, 58, 58, 56, 54, 54, 55, 57, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 60, 62, 64, 65, 68, 72, 75, 79, 75, 74, 77, 79, + 81, 86, 90, 108, 136, 162, 156, 137, 135, 160, 183, 188, 183, 173, 153, 130, + 142, 172, 236, 224, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 44, 40, 33, 42, + 46, 41, 39, 37, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 39, 37, + 39, 37, 39, 40, 40, 41, 41, 41, 40, 40, 41, 43, 45, 46, 47, 46, + 46, 45, 46, 43, 43, 42, 42, 43, 43, 44, 45, 45, 44, 44, 44, 45, + 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, 49, 50, 52, 53, + 54, 54, 57, 58, 58, 56, 54, 53, 54, 56, 56, 56, 57, 58, 59, 59, + 59, 59, 60, 62, 64, 66, 67, 70, 74, 77, 78, 78, 78, 79, 80, 79, + 80, 80, 85, 102, 123, 132, 130, 132, 142, 151, 192, 184, 191, 209, 174, 145, + 136, 203, 236, 213, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, 32, 32, 32, 38, 43, + 34, 37, 37, 37, 37, 37, 36, 37, 37, 35, 35, 35, 35, 36, 35, 36, + 35, 35, 36, 39, 40, 41, 42, 44, 44, 43, 43, 45, 45, 45, 46, 49, + 48, 46, 43, 43, 42, 42, 43, 43, 44, 45, 44, 44, 44, 45, 45, 46, + 47, 48, 48, 48, 47, 47, 47, 46, 46, 45, 46, 47, 48, 50, 51, 52, + 53, 60, 61, 61, 59, 57, 56, 58, 60, 54, 54, 55, 57, 59, 61, 62, + 63, 65, 67, 68, 68, 69, 72, 77, 80, 81, 85, 88, 89, 89, 88, 85, + 82, 79, 73, 75, 86, 103, 120, 133, 141, 178, 196, 194, 189, 181, 198, 161, + 154, 167, 209, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 36, 26, 33, 41, 39, 44, 34, + 36, 37, 38, 37, 36, 35, 36, 38, 34, 34, 35, 35, 36, 34, 36, 37, + 33, 34, 35, 38, 39, 39, 41, 41, 43, 43, 44, 43, 44, 46, 50, 49, + 46, 43, 43, 42, 42, 43, 43, 44, 43, 44, 45, 46, 46, 46, 45, 45, + 45, 45, 45, 45, 45, 45, 44, 44, 45, 45, 46, 47, 49, 50, 51, 52, + 55, 56, 57, 56, 54, 54, 56, 58, 54, 54, 54, 55, 57, 61, 64, 66, + 69, 69, 69, 69, 69, 71, 76, 79, 83, 89, 94, 95, 97, 97, 94, 89, + 92, 86, 80, 85, 90, 100, 111, 119, 146, 190, 213, 195, 193, 222, 198, 183, + 134, 195, 226, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 182, 39, 24, 38, 48, 36, 44, 41, 35, + 37, 38, 37, 35, 34, 34, 36, 32, 33, 34, 35, 36, 35, 38, 38, 33, + 34, 34, 37, 37, 36, 36, 36, 41, 41, 44, 45, 48, 49, 49, 47, 46, + 43, 43, 42, 42, 43, 43, 44, 41, 43, 46, 48, 48, 47, 45, 43, 43, + 44, 44, 44, 44, 44, 44, 44, 46, 47, 47, 48, 49, 50, 51, 52, 49, + 50, 51, 51, 50, 50, 53, 55, 57, 55, 54, 53, 55, 59, 64, 66, 69, + 69, 68, 66, 66, 67, 72, 75, 77, 84, 88, 88, 91, 96, 96, 92, 97, + 101, 107, 108, 102, 94, 96, 102, 124, 153, 204, 213, 216, 197, 191, 219, 201, + 162, 153, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 40, 44, 23, 33, 41, 26, 40, 47, 35, 36, + 38, 37, 35, 32, 33, 36, 33, 32, 35, 34, 36, 35, 39, 39, 37, 37, + 36, 36, 36, 36, 35, 35, 36, 40, 43, 47, 50, 50, 48, 44, 46, 43, + 43, 42, 42, 43, 43, 44, 40, 42, 46, 49, 49, 47, 44, 42, 44, 44, + 44, 45, 45, 46, 46, 46, 48, 48, 49, 50, 50, 51, 52, 52, 49, 51, + 52, 52, 52, 53, 55, 58, 60, 58, 54, 53, 54, 58, 62, 66, 67, 67, + 65, 63, 62, 64, 68, 71, 70, 75, 78, 77, 81, 90, 94, 91, 91, 95, + 102, 110, 107, 101, 104, 111, 121, 114, 157, 180, 207, 177, 169, 197, 223, 194, + 184, 185, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 38, 26, 22, 30, 42, 44, 40, 35, 34, 39, 39, + 34, 35, 42, 41, 31, 26, 31, 43, 49, 53, 55, 58, 61, 62, 68, 67, + 54, 40, 32, 31, 32, 39, 41, 44, 45, 47, 46, 45, 44, 44, 42, 42, + 43, 43, 44, 44, 44, 43, 44, 44, 45, 45, 44, 44, 43, 44, 45, 47, + 49, 49, 47, 45, 44, 44, 45, 47, 47, 46, 47, 48, 50, 50, 51, 53, + 55, 55, 54, 53, 52, 55, 55, 56, 57, 58, 58, 59, 59, 60, 61, 61, + 62, 63, 64, 65, 65, 69, 70, 71, 73, 75, 78, 81, 83, 84, 88, 94, + 98, 103, 106, 111, 113, 132, 139, 99, 99, 153, 178, 172, 172, 187, 218, 213, + 195, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 185, 57, 46, 37, 37, 43, 40, 39, 34, 35, 37, 37, 32, + 33, 34, 35, 31, 30, 43, 60, 69, 74, 76, 85, 90, 77, 83, 85, 79, + 73, 63, 51, 42, 39, 40, 40, 43, 46, 49, 51, 48, 42, 42, 42, 43, + 43, 43, 44, 44, 44, 45, 46, 47, 47, 46, 45, 44, 44, 46, 47, 49, + 49, 47, 46, 44, 43, 45, 47, 47, 46, 46, 48, 50, 50, 51, 51, 52, + 53, 53, 52, 52, 55, 55, 55, 55, 55, 55, 54, 54, 63, 63, 63, 63, + 63, 64, 64, 64, 68, 69, 70, 73, 75, 78, 80, 81, 84, 86, 88, 90, + 92, 98, 104, 105, 131, 132, 119, 103, 113, 147, 172, 164, 183, 213, 222, 221, + 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 66, 49, 41, 34, 36, 38, 37, 41, 41, 39, 37, 35, 36, 34, + 31, 36, 42, 58, 70, 86, 90, 87, 85, 94, 99, 85, 87, 91, 91, 93, + 87, 73, 58, 47, 42, 36, 37, 42, 47, 49, 46, 42, 42, 42, 42, 43, + 43, 43, 44, 44, 45, 47, 49, 49, 47, 45, 44, 45, 46, 47, 48, 48, + 47, 46, 45, 43, 45, 47, 47, 46, 46, 48, 50, 50, 50, 50, 50, 50, + 51, 52, 53, 55, 56, 56, 56, 56, 57, 57, 57, 66, 65, 64, 64, 63, + 63, 64, 64, 67, 68, 71, 73, 76, 78, 79, 79, 80, 80, 83, 83, 86, + 91, 98, 102, 92, 99, 130, 131, 118, 158, 183, 152, 194, 203, 218, 229, 231, + 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 192, 36, 34, 30, 29, 32, 35, 38, 43, 46, 42, 37, 37, 42, 38, 36, + 44, 59, 84, 88, 94, 92, 86, 83, 86, 88, 87, 84, 83, 83, 88, 93, + 89, 81, 63, 52, 38, 34, 38, 41, 40, 39, 41, 41, 42, 42, 42, 43, + 43, 43, 43, 45, 47, 49, 49, 47, 45, 43, 44, 44, 45, 46, 46, 45, + 44, 44, 45, 47, 48, 49, 48, 48, 50, 52, 52, 51, 50, 49, 50, 51, + 53, 54, 50, 51, 53, 55, 57, 59, 61, 62, 65, 64, 63, 63, 63, 64, + 65, 66, 68, 69, 72, 75, 77, 78, 79, 79, 78, 80, 81, 86, 89, 95, + 102, 106, 99, 85, 107, 113, 121, 169, 198, 186, 198, 180, 194, 219, 227, 227, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 80, + 23, 36, 34, 35, 37, 38, 37, 39, 43, 41, 36, 37, 44, 45, 47, 58, + 75, 92, 89, 88, 84, 83, 82, 84, 84, 83, 83, 83, 80, 84, 91, 93, + 93, 78, 64, 46, 36, 34, 38, 37, 37, 41, 41, 41, 42, 42, 42, 43, + 43, 42, 43, 45, 47, 47, 45, 43, 42, 42, 43, 43, 43, 43, 43, 43, + 42, 47, 49, 50, 50, 50, 50, 52, 53, 53, 53, 51, 51, 51, 53, 54, + 55, 48, 49, 51, 53, 55, 57, 59, 59, 62, 62, 61, 61, 63, 65, 68, + 69, 70, 71, 73, 75, 77, 79, 80, 80, 78, 81, 86, 92, 95, 100, 104, + 105, 110, 97, 101, 105, 136, 163, 171, 200, 195, 166, 176, 211, 230, 234, 236, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 38, + 36, 35, 34, 40, 39, 37, 40, 41, 37, 36, 37, 44, 50, 59, 71, 83, + 94, 90, 83, 79, 81, 83, 83, 81, 79, 84, 87, 85, 84, 86, 88, 87, + 87, 73, 55, 41, 36, 39, 42, 42, 39, 41, 41, 41, 42, 42, 42, 42, + 43, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 47, 49, 50, 51, 50, 50, 52, 54, 53, 53, 52, 52, 53, 54, 54, 55, + 57, 57, 57, 58, 58, 58, 59, 59, 60, 60, 59, 59, 61, 65, 68, 70, + 72, 72, 72, 73, 75, 77, 79, 79, 78, 81, 88, 91, 94, 97, 99, 100, + 101, 108, 117, 119, 154, 155, 139, 201, 213, 187, 180, 197, 220, 233, 228, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 1, 41, 35, + 31, 29, 34, 36, 37, 42, 42, 38, 40, 42, 46, 55, 72, 84, 88, 88, + 87, 84, 82, 81, 80, 81, 77, 77, 82, 85, 83, 81, 82, 81, 80, 90, + 78, 59, 44, 36, 35, 40, 45, 39, 40, 41, 41, 41, 42, 42, 42, 46, + 45, 44, 44, 44, 44, 45, 46, 45, 45, 44, 44, 44, 44, 45, 45, 45, + 47, 49, 49, 48, 48, 50, 52, 51, 51, 52, 53, 53, 53, 53, 53, 60, + 60, 60, 60, 59, 59, 59, 59, 61, 60, 58, 58, 59, 63, 66, 68, 72, + 71, 69, 69, 71, 74, 77, 79, 77, 80, 85, 88, 91, 94, 99, 102, 111, + 112, 118, 105, 133, 147, 140, 207, 215, 206, 186, 180, 198, 218, 226, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 63, 72, 48, 39, + 34, 34, 35, 36, 36, 38, 40, 45, 48, 47, 61, 80, 91, 89, 67, 73, + 78, 80, 80, 80, 82, 83, 85, 84, 83, 78, 80, 82, 84, 83, 91, 79, + 60, 44, 33, 32, 37, 43, 39, 39, 40, 40, 41, 41, 42, 41, 49, 46, + 45, 43, 44, 44, 47, 48, 47, 45, 46, 44, 45, 45, 46, 46, 44, 44, + 47, 46, 47, 46, 48, 50, 48, 49, 51, 52, 53, 52, 51, 49, 50, 50, + 51, 51, 52, 53, 54, 54, 62, 61, 59, 57, 58, 60, 64, 66, 71, 69, + 67, 66, 67, 71, 76, 78, 75, 76, 81, 84, 90, 97, 105, 107, 96, 95, + 120, 113, 137, 154, 130, 165, 180, 199, 190, 176, 191, 207, 214, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 51, 35, 32, 41, 31, 27, + 38, 42, 36, 31, 31, 37, 38, 48, 56, 66, 87, 94, 79, 76, 77, 78, + 81, 80, 80, 87, 97, 94, 88, 82, 80, 72, 62, 59, 62, 90, 85, 68, + 48, 37, 38, 42, 43, 42, 40, 42, 40, 42, 40, 42, 40, 44, 42, 43, + 41, 44, 42, 45, 44, 44, 42, 45, 43, 45, 42, 43, 41, 43, 41, 43, + 42, 44, 42, 45, 45, 47, 46, 46, 47, 48, 49, 50, 49, 51, 49, 52, + 51, 51, 52, 53, 53, 48, 54, 59, 61, 61, 60, 62, 65, 61, 62, 66, + 69, 67, 66, 72, 80, 79, 79, 80, 79, 82, 88, 99, 104, 95, 98, 99, + 105, 125, 147, 145, 129, 121, 146, 149, 194, 213, 225, 225, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 135, 138, 126, 97, 58, 43, 32, 33, + 34, 30, 33, 38, 42, 43, 55, 67, 76, 86, 91, 80, 86, 84, 84, 87, + 88, 86, 89, 95, 101, 94, 88, 77, 68, 59, 63, 75, 84, 80, 67, 50, + 40, 42, 47, 45, 39, 36, 36, 37, 37, 37, 37, 37, 41, 41, 41, 40, + 41, 42, 43, 43, 41, 41, 42, 43, 43, 43, 42, 42, 44, 44, 45, 45, + 46, 46, 46, 46, 47, 47, 47, 47, 48, 49, 50, 49, 49, 49, 50, 51, + 52, 50, 51, 53, 51, 56, 60, 63, 62, 61, 59, 59, 62, 62, 66, 69, + 67, 66, 72, 80, 79, 80, 83, 84, 84, 88, 96, 100, 98, 97, 96, 100, + 117, 139, 144, 132, 132, 159, 162, 199, 215, 231, 234, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 19, 11, 53, 96, 62, 48, 35, 31, 31, + 29, 34, 43, 46, 47, 64, 80, 83, 85, 87, 82, 89, 84, 83, 87, 89, + 85, 83, 84, 92, 95, 99, 91, 79, 66, 64, 72, 80, 78, 67, 51, 43, + 42, 47, 46, 40, 40, 40, 40, 41, 42, 42, 42, 42, 42, 42, 42, 42, + 43, 44, 44, 42, 43, 44, 45, 46, 46, 46, 45, 44, 45, 45, 45, 46, + 46, 46, 46, 49, 48, 48, 49, 49, 50, 51, 52, 51, 52, 52, 53, 54, + 53, 53, 53, 56, 58, 60, 62, 63, 61, 57, 54, 63, 63, 66, 69, 68, + 67, 72, 79, 76, 79, 83, 85, 84, 86, 90, 91, 96, 94, 92, 91, 104, + 126, 141, 137, 146, 173, 170, 198, 206, 225, 228, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 185, 35, 6, 12, 31, 45, 39, 34, 34, 34, 32, + 35, 38, 48, 46, 65, 86, 86, 79, 83, 82, 85, 80, 78, 84, 88, 83, + 77, 75, 72, 77, 81, 81, 75, 69, 70, 73, 80, 78, 67, 51, 43, 43, + 48, 48, 41, 41, 41, 42, 43, 43, 44, 44, 42, 41, 41, 41, 41, 42, + 43, 44, 41, 42, 44, 45, 46, 47, 47, 47, 44, 44, 44, 45, 45, 45, + 46, 46, 49, 49, 49, 49, 50, 51, 52, 52, 52, 52, 53, 53, 54, 55, + 56, 56, 61, 59, 57, 58, 61, 62, 59, 55, 65, 63, 65, 68, 68, 66, + 71, 76, 74, 76, 83, 83, 84, 81, 83, 85, 89, 89, 87, 85, 96, 115, + 132, 137, 165, 193, 186, 204, 207, 227, 233, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 11, 11, 26, 41, 35, 35, 35, 35, 36, 35, 33, 36, + 39, 52, 50, 68, 88, 86, 80, 85, 87, 84, 78, 78, 85, 91, 86, 80, + 75, 67, 62, 54, 50, 55, 68, 83, 91, 83, 81, 68, 51, 41, 43, 47, + 47, 39, 39, 40, 40, 41, 41, 42, 42, 43, 42, 42, 42, 42, 43, 44, + 45, 43, 44, 45, 47, 48, 48, 48, 48, 49, 49, 50, 50, 50, 51, 51, + 51, 50, 50, 50, 50, 51, 52, 54, 54, 53, 53, 54, 55, 56, 56, 57, + 57, 62, 58, 54, 54, 58, 62, 62, 61, 65, 63, 63, 66, 67, 65, 69, + 73, 73, 75, 83, 84, 86, 83, 86, 87, 84, 86, 86, 86, 92, 107, 122, + 130, 147, 177, 170, 191, 197, 217, 227, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 44, 26, 24, 30, 26, 37, 39, 39, 36, 31, 33, 39, 45, + 56, 56, 73, 87, 85, 86, 91, 88, 77, 73, 74, 81, 87, 83, 77, 73, + 84, 79, 71, 68, 74, 84, 90, 90, 84, 81, 70, 55, 45, 43, 47, 46, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 45, 45, + 44, 45, 46, 47, 48, 48, 48, 47, 49, 49, 49, 49, 50, 50, 50, 51, + 51, 51, 51, 51, 52, 53, 54, 55, 54, 54, 54, 55, 56, 57, 59, 58, + 60, 57, 54, 54, 57, 61, 64, 65, 65, 62, 61, 64, 65, 64, 66, 70, + 73, 77, 83, 85, 88, 88, 93, 96, 88, 88, 87, 86, 89, 100, 111, 119, + 110, 138, 138, 170, 180, 199, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 179, 32, 37, 33, 27, 18, 33, 37, 39, 35, 33, 37, 45, 51, 59, + 62, 80, 89, 85, 90, 91, 81, 69, 66, 68, 74, 79, 74, 70, 68, 82, + 88, 92, 93, 93, 94, 88, 79, 78, 79, 72, 61, 50, 49, 48, 46, 49, + 51, 50, 50, 49, 48, 48, 47, 46, 46, 46, 45, 46, 47, 48, 48, 48, + 48, 49, 50, 50, 49, 49, 48, 49, 49, 49, 49, 50, 50, 51, 51, 51, + 51, 51, 52, 52, 54, 57, 58, 56, 56, 57, 57, 58, 59, 62, 60, 55, + 57, 58, 59, 59, 60, 62, 63, 65, 60, 59, 62, 63, 62, 64, 67, 70, + 74, 79, 81, 87, 90, 96, 101, 98, 94, 90, 86, 87, 93, 103, 108, 100, + 124, 127, 166, 175, 185, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 53, 25, 9, 26, 41, 27, 19, 28, 37, 38, 37, 40, 47, 50, 57, 64, + 81, 87, 84, 90, 89, 71, 67, 65, 67, 72, 75, 70, 67, 66, 57, 68, + 75, 77, 78, 84, 85, 83, 74, 76, 73, 66, 56, 52, 48, 45, 48, 50, + 49, 48, 46, 45, 44, 44, 47, 47, 46, 46, 47, 47, 48, 49, 49, 49, + 50, 50, 50, 49, 48, 48, 52, 52, 53, 53, 53, 54, 54, 52, 52, 52, + 52, 52, 53, 54, 57, 58, 56, 56, 57, 58, 60, 61, 62, 60, 54, 57, + 62, 63, 61, 59, 59, 60, 64, 60, 58, 61, 62, 61, 62, 65, 65, 68, + 74, 76, 81, 88, 97, 103, 108, 100, 92, 88, 86, 89, 96, 103, 88, 109, + 109, 149, 152, 153, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, + 24, 16, 24, 27, 35, 30, 29, 32, 35, 35, 38, 49, 56, 65, 65, 75, + 83, 85, 82, 85, 89, 69, 63, 65, 70, 72, 66, 63, 62, 69, 63, 64, + 76, 83, 81, 76, 75, 73, 71, 67, 62, 56, 53, 49, 47, 50, 48, 45, + 44, 45, 46, 46, 45, 44, 45, 46, 47, 48, 47, 47, 47, 44, 42, 47, + 56, 57, 52, 50, 53, 53, 50, 50, 53, 53, 51, 51, 54, 53, 53, 53, + 55, 56, 56, 55, 52, 59, 55, 52, 54, 61, 62, 58, 52, 57, 56, 57, + 57, 55, 55, 56, 57, 59, 60, 62, 64, 64, 64, 62, 61, 61, 66, 72, + 74, 75, 76, 84, 90, 97, 96, 93, 93, 91, 88, 94, 99, 90, 86, 88, + 109, 131, 132, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 23, 23, + 43, 26, 16, 33, 34, 33, 34, 40, 46, 52, 62, 68, 68, 67, 74, 82, + 83, 79, 80, 84, 77, 66, 59, 59, 65, 66, 68, 68, 69, 67, 70, 81, + 87, 84, 79, 78, 72, 71, 67, 59, 54, 50, 46, 45, 50, 50, 48, 47, + 47, 45, 41, 38, 44, 44, 44, 44, 45, 45, 45, 45, 48, 46, 49, 55, + 56, 51, 49, 51, 50, 48, 49, 54, 55, 52, 53, 55, 53, 50, 52, 54, + 56, 57, 55, 54, 59, 59, 58, 59, 64, 66, 63, 58, 59, 59, 59, 58, + 56, 55, 56, 57, 61, 61, 61, 61, 61, 62, 63, 63, 63, 67, 70, 71, + 72, 73, 79, 82, 90, 90, 91, 94, 92, 88, 91, 96, 93, 89, 83, 96, + 118, 122, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 128, 60, 6, + 16, 37, 30, 34, 31, 32, 40, 49, 56, 65, 72, 73, 70, 74, 81, 83, + 79, 77, 76, 85, 70, 58, 58, 65, 70, 72, 72, 71, 73, 81, 91, 93, + 88, 83, 81, 72, 69, 65, 59, 52, 48, 44, 43, 38, 41, 42, 45, 48, + 48, 45, 43, 45, 44, 43, 43, 42, 43, 43, 44, 50, 48, 49, 52, 52, + 49, 48, 50, 48, 47, 50, 55, 57, 54, 54, 55, 53, 51, 53, 55, 56, + 58, 55, 55, 54, 55, 55, 56, 59, 59, 61, 59, 61, 60, 61, 60, 58, + 56, 57, 58, 62, 61, 59, 58, 59, 60, 63, 64, 65, 66, 69, 71, 73, + 75, 77, 78, 79, 82, 89, 93, 92, 89, 90, 94, 100, 97, 87, 90, 109, + 119, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 40, 32, 68, 62, 29, + 24, 39, 33, 29, 31, 40, 51, 59, 66, 70, 77, 71, 73, 79, 82, 79, + 76, 75, 85, 75, 68, 66, 70, 68, 69, 70, 77, 83, 92, 98, 97, 90, + 83, 80, 72, 67, 64, 60, 53, 46, 42, 44, 38, 38, 41, 42, 48, 48, + 49, 46, 48, 46, 46, 43, 45, 43, 46, 45, 52, 49, 50, 49, 51, 48, + 51, 50, 52, 49, 54, 57, 61, 56, 58, 56, 56, 54, 54, 55, 58, 59, + 56, 56, 50, 53, 54, 55, 55, 55, 57, 58, 57, 58, 60, 59, 58, 57, + 58, 60, 61, 60, 59, 59, 59, 61, 62, 63, 65, 65, 68, 72, 77, 81, + 83, 83, 77, 80, 87, 94, 94, 89, 92, 96, 96, 102, 95, 92, 107, 118, + 123, 172, 255, 255, 255, 255, 255, 255, 255, 36, 28, 26, 24, 19, 33, 45, + 34, 35, 33, 36, 48, 60, 67, 73, 78, 75, 71, 73, 79, 84, 82, 80, + 78, 86, 81, 77, 70, 66, 60, 64, 71, 86, 93, 100, 101, 100, 93, 85, + 79, 77, 70, 65, 63, 57, 48, 44, 47, 52, 49, 47, 43, 45, 44, 46, + 43, 50, 48, 49, 47, 49, 47, 50, 48, 51, 49, 51, 48, 51, 51, 55, + 53, 58, 54, 58, 61, 64, 60, 61, 60, 61, 59, 59, 60, 63, 62, 60, + 59, 56, 58, 60, 58, 56, 55, 57, 58, 54, 55, 57, 58, 57, 58, 60, + 62, 59, 60, 61, 62, 63, 62, 61, 61, 67, 67, 69, 73, 76, 80, 81, + 81, 87, 88, 91, 94, 91, 88, 92, 96, 85, 98, 99, 96, 104, 115, 126, + 141, 255, 255, 255, 255, 255, 255, 255, 55, 39, 28, 32, 29, 30, 32, 27, + 33, 33, 41, 56, 67, 73, 77, 82, 73, 69, 73, 79, 83, 84, 83, 85, + 91, 86, 80, 68, 59, 54, 64, 77, 94, 98, 101, 99, 97, 93, 85, 78, + 81, 73, 68, 68, 62, 50, 47, 53, 58, 54, 51, 47, 51, 52, 56, 55, + 55, 53, 57, 56, 58, 56, 57, 55, 53, 54, 56, 52, 55, 57, 60, 56, + 63, 59, 62, 65, 69, 66, 69, 70, 69, 66, 66, 67, 70, 69, 68, 66, + 64, 63, 62, 60, 58, 57, 57, 56, 53, 55, 57, 58, 57, 58, 59, 61, + 59, 60, 63, 64, 65, 64, 62, 61, 69, 70, 72, 74, 74, 75, 77, 78, + 96, 94, 94, 93, 91, 86, 89, 95, 88, 101, 105, 101, 107, 116, 135, 161, + 255, 255, 255, 255, 255, 255, 24, 22, 30, 32, 36, 39, 30, 30, 44, 37, + 40, 51, 63, 68, 69, 72, 75, 70, 71, 76, 82, 83, 84, 85, 90, 92, + 89, 84, 76, 69, 63, 70, 81, 97, 99, 97, 93, 94, 95, 90, 80, 85, + 76, 71, 73, 66, 55, 51, 57, 58, 57, 56, 57, 63, 66, 71, 71, 64, + 65, 69, 71, 73, 72, 71, 69, 60, 63, 64, 60, 61, 63, 64, 60, 66, + 62, 64, 68, 73, 73, 79, 81, 77, 74, 74, 75, 78, 78, 75, 74, 76, + 73, 66, 63, 63, 61, 58, 55, 58, 59, 60, 59, 58, 57, 58, 60, 62, + 62, 63, 64, 64, 64, 64, 64, 69, 72, 76, 76, 74, 75, 78, 82, 91, + 90, 93, 93, 92, 88, 91, 97, 103, 104, 103, 103, 109, 117, 140, 172, 255, + 255, 255, 255, 255, 255, 51, 26, 46, 38, 26, 36, 41, 37, 42, 46, 50, + 61, 71, 72, 68, 68, 70, 71, 73, 77, 84, 83, 83, 88, 93, 93, 90, + 91, 89, 84, 78, 76, 79, 98, 97, 93, 88, 90, 96, 90, 80, 86, 76, + 72, 74, 69, 55, 52, 59, 64, 64, 64, 66, 69, 71, 71, 70, 72, 75, + 79, 83, 85, 84, 82, 80, 64, 69, 69, 64, 63, 66, 65, 60, 65, 62, + 63, 69, 74, 78, 84, 89, 82, 80, 81, 82, 84, 83, 80, 79, 90, 82, + 73, 68, 69, 67, 62, 58, 62, 65, 65, 64, 61, 57, 59, 58, 65, 64, + 63, 62, 62, 64, 66, 67, 67, 72, 78, 80, 77, 78, 84, 90, 76, 78, + 84, 89, 89, 87, 91, 100, 109, 104, 94, 96, 106, 112, 136, 173, 255, 255, + 255, 255, 255, 176, 44, 33, 37, 39, 39, 44, 50, 54, 51, 63, 62, 65, + 67, 70, 74, 75, 75, 72, 70, 73, 79, 85, 88, 86, 82, 86, 92, 93, + 86, 80, 82, 84, 85, 91, 87, 83, 83, 84, 86, 85, 83, 83, 83, 81, + 76, 70, 65, 64, 64, 64, 66, 68, 70, 72, 73, 74, 74, 83, 86, 85, + 82, 85, 91, 90, 84, 78, 77, 75, 74, 72, 72, 71, 71, 73, 76, 79, + 80, 79, 80, 84, 87, 98, 98, 97, 94, 90, 85, 80, 79, 79, 80, 79, + 72, 65, 57, 53, 55, 63, 63, 62, 65, 66, 60, 60, 58, 55, 60, 66, + 69, 66, 65, 66, 68, 72, 74, 76, 79, 81, 84, 87, 91, 87, 85, 81, + 83, 86, 88, 88, 89, 96, 93, 92, 93, 96, 102, 114, 125, 255, 255, 255, + 255, 255, 34, 56, 42, 47, 48, 48, 52, 58, 59, 55, 65, 66, 68, 71, + 75, 78, 80, 79, 74, 72, 74, 78, 84, 87, 86, 85, 83, 89, 90, 85, + 80, 81, 83, 84, 87, 84, 81, 81, 83, 85, 84, 83, 86, 82, 77, 74, + 74, 74, 72, 70, 71, 72, 74, 76, 78, 79, 79, 80, 84, 87, 86, 84, + 86, 91, 91, 86, 86, 85, 85, 84, 84, 84, 85, 85, 87, 90, 92, 93, + 92, 93, 95, 98, 99, 99, 98, 97, 93, 89, 85, 83, 81, 82, 81, 75, + 67, 59, 55, 60, 58, 59, 59, 64, 67, 64, 66, 66, 61, 62, 63, 64, + 62, 63, 65, 67, 70, 71, 72, 74, 77, 83, 89, 93, 93, 86, 82, 82, + 88, 89, 89, 90, 96, 94, 93, 93, 94, 94, 101, 110, 255, 255, 255, 255, + 45, 44, 58, 51, 57, 58, 59, 63, 67, 67, 62, 66, 67, 69, 71, 74, + 76, 78, 76, 77, 74, 74, 77, 81, 84, 85, 85, 84, 89, 89, 83, 78, + 79, 81, 81, 82, 81, 80, 81, 83, 85, 86, 85, 89, 82, 75, 75, 81, + 84, 81, 78, 77, 79, 80, 82, 84, 84, 85, 85, 87, 89, 88, 87, 89, + 93, 93, 89, 91, 91, 91, 92, 93, 95, 96, 97, 94, 96, 97, 98, 97, + 97, 99, 101, 99, 100, 100, 99, 98, 95, 93, 91, 91, 91, 90, 85, 78, + 72, 68, 70, 66, 64, 62, 64, 64, 59, 60, 61, 66, 63, 59, 58, 60, + 64, 67, 69, 69, 69, 70, 70, 71, 77, 84, 89, 96, 88, 84, 83, 88, + 93, 94, 94, 101, 100, 96, 96, 92, 89, 90, 95, 255, 255, 255, 255, 47, + 48, 53, 56, 62, 64, 65, 68, 71, 69, 64, 69, 69, 70, 72, 74, 75, + 76, 75, 77, 74, 73, 73, 76, 79, 81, 83, 87, 90, 89, 81, 76, 76, + 76, 76, 79, 79, 80, 82, 84, 86, 88, 88, 87, 83, 80, 81, 85, 87, + 85, 82, 81, 82, 83, 85, 86, 86, 86, 86, 89, 89, 89, 89, 91, 94, + 93, 91, 90, 90, 90, 91, 92, 93, 95, 96, 94, 94, 95, 95, 95, 95, + 95, 96, 99, 99, 100, 100, 100, 99, 98, 97, 94, 94, 92, 89, 84, 79, + 75, 77, 71, 68, 63, 63, 61, 56, 54, 57, 64, 62, 57, 57, 61, 66, + 68, 68, 70, 70, 70, 70, 70, 71, 75, 79, 91, 88, 86, 83, 84, 86, + 92, 98, 107, 104, 102, 102, 98, 94, 95, 100, 255, 255, 255, 65, 59, 52, + 55, 61, 66, 68, 68, 70, 73, 70, 65, 74, 75, 76, 77, 78, 79, 80, + 79, 78, 75, 73, 72, 73, 75, 78, 81, 86, 88, 87, 80, 77, 78, 77, + 75, 78, 80, 82, 84, 86, 87, 89, 90, 82, 84, 86, 87, 87, 85, 84, + 84, 84, 85, 86, 87, 87, 87, 87, 87, 91, 89, 88, 91, 93, 93, 93, + 93, 91, 91, 90, 90, 90, 90, 91, 92, 98, 97, 97, 97, 98, 98, 98, + 98, 98, 98, 99, 100, 100, 100, 100, 100, 92, 91, 90, 88, 85, 82, 78, + 77, 70, 65, 60, 60, 61, 59, 59, 63, 60, 59, 57, 59, 66, 69, 71, + 69, 71, 74, 77, 76, 75, 75, 77, 76, 79, 82, 84, 81, 77, 76, 87, + 96, 108, 105, 105, 104, 105, 104, 110, 118, 255, 255, 255, 52, 64, 59, 64, + 67, 71, 72, 70, 72, 75, 73, 68, 74, 74, 75, 76, 77, 78, 79, 78, + 76, 74, 73, 71, 70, 70, 73, 76, 77, 80, 80, 77, 77, 81, 82, 79, + 79, 82, 85, 86, 86, 87, 88, 90, 80, 84, 88, 89, 87, 84, 84, 86, + 88, 88, 89, 90, 90, 90, 89, 89, 93, 89, 89, 93, 95, 94, 93, 95, + 95, 95, 94, 93, 92, 92, 92, 92, 100, 98, 97, 98, 100, 101, 100, 99, + 99, 99, 99, 99, 99, 99, 100, 100, 97, 96, 94, 94, 93, 91, 87, 86, + 81, 74, 66, 63, 60, 58, 57, 61, 59, 60, 61, 65, 69, 70, 71, 70, + 70, 74, 79, 82, 82, 82, 83, 84, 72, 78, 81, 78, 73, 74, 83, 93, + 101, 100, 102, 108, 112, 115, 125, 134, 255, 255, 190, 54, 63, 66, 70, 71, + 75, 74, 71, 73, 76, 74, 70, 71, 71, 72, 73, 75, 76, 77, 76, 76, + 75, 75, 72, 69, 69, 71, 74, 73, 75, 75, 74, 77, 82, 84, 81, 79, + 82, 86, 86, 85, 84, 85, 87, 85, 84, 83, 84, 86, 88, 89, 89, 87, + 87, 88, 88, 88, 88, 87, 86, 94, 89, 89, 94, 96, 94, 93, 96, 96, + 95, 94, 93, 93, 93, 93, 94, 96, 94, 93, 95, 98, 99, 98, 96, 100, + 99, 99, 98, 98, 98, 98, 98, 101, 100, 98, 99, 100, 99, 95, 92, 97, + 86, 76, 69, 64, 56, 54, 57, 62, 65, 68, 68, 67, 66, 69, 70, 68, + 71, 75, 78, 79, 81, 83, 85, 76, 78, 79, 78, 78, 80, 84, 88, 96, + 96, 102, 112, 119, 123, 132, 178, 255, 255, 66, 65, 60, 69, 67, 73, 76, + 73, 70, 71, 75, 74, 70, 73, 74, 75, 76, 78, 79, 80, 79, 76, 76, + 76, 74, 70, 69, 70, 73, 73, 75, 75, 73, 76, 81, 82, 79, 79, 82, + 86, 86, 83, 81, 82, 84, 90, 84, 78, 79, 86, 92, 94, 93, 86, 86, + 87, 87, 86, 86, 85, 84, 97, 91, 90, 96, 99, 96, 95, 98, 92, 92, + 91, 91, 91, 91, 92, 93, 95, 93, 92, 94, 97, 99, 98, 96, 102, 101, + 100, 99, 98, 97, 98, 98, 99, 97, 96, 97, 99, 98, 94, 90, 95, 84, + 75, 68, 65, 62, 62, 65, 66, 69, 71, 70, 65, 64, 66, 71, 70, 71, + 73, 73, 73, 74, 78, 81, 82, 79, 77, 80, 84, 88, 87, 85, 93, 94, + 105, 118, 124, 129, 136, 255, 255, 255, 58, 58, 66, 73, 72, 70, 74, 76, + 75, 73, 71, 71, 72, 72, 73, 74, 77, 80, 81, 80, 76, 73, 73, 75, + 76, 76, 76, 76, 76, 78, 79, 81, 83, 84, 86, 86, 86, 78, 83, 89, + 92, 92, 90, 87, 86, 83, 79, 80, 85, 87, 85, 87, 93, 89, 87, 88, + 89, 90, 90, 91, 91, 92, 91, 90, 91, 93, 94, 93, 94, 95, 94, 93, + 92, 92, 92, 92, 93, 97, 93, 89, 89, 93, 96, 97, 97, 92, 93, 96, + 98, 96, 93, 96, 102, 97, 98, 98, 99, 99, 99, 98, 97, 91, 93, 92, + 84, 78, 74, 70, 65, 69, 69, 69, 69, 66, 66, 65, 66, 62, 73, 76, + 70, 72, 82, 82, 72, 70, 77, 76, 72, 79, 84, 92, 105, 94, 90, 101, + 126, 145, 137, 133, 255, 255, 255, 57, 64, 66, 66, 73, 70, 74, 75, 75, + 73, 71, 71, 72, 74, 74, 75, 78, 81, 82, 80, 78, 75, 74, 74, 75, + 75, 76, 76, 76, 78, 79, 81, 83, 84, 84, 84, 83, 83, 83, 82, 81, + 80, 83, 88, 92, 85, 81, 81, 86, 87, 85, 86, 89, 87, 85, 86, 86, + 87, 88, 89, 89, 92, 90, 89, 90, 92, 93, 93, 91, 95, 95, 94, 94, + 94, 93, 93, 93, 100, 98, 96, 96, 99, 101, 100, 99, 100, 96, 95, 98, + 98, 95, 94, 96, 99, 99, 99, 98, 98, 97, 96, 96, 92, 93, 92, 84, + 82, 82, 80, 78, 77, 77, 75, 72, 70, 66, 63, 60, 68, 75, 77, 74, + 76, 84, 86, 81, 75, 82, 79, 78, 86, 92, 101, 114, 115, 118, 116, 123, + 148, 162, 186, 255, 255, 120, 55, 69, 65, 59, 73, 70, 74, 75, 75, 73, + 71, 72, 73, 75, 75, 76, 79, 81, 82, 80, 78, 77, 76, 75, 74, 75, + 76, 77, 78, 79, 80, 83, 85, 85, 84, 82, 81, 85, 84, 81, 78, 78, + 82, 88, 94, 87, 84, 84, 86, 86, 85, 86, 87, 87, 85, 86, 86, 87, + 88, 89, 89, 92, 90, 90, 91, 93, 94, 93, 92, 95, 96, 96, 97, 97, + 95, 94, 93, 98, 96, 95, 96, 98, 99, 98, 96, 103, 96, 92, 96, 99, + 97, 94, 93, 98, 97, 97, 97, 97, 97, 98, 98, 94, 95, 92, 87, 87, + 93, 94, 93, 84, 83, 82, 80, 80, 74, 66, 61, 69, 72, 74, 76, 78, + 81, 84, 85, 74, 81, 78, 78, 87, 93, 100, 113, 111, 121, 122, 132, 155, + 167, 255, 255, 255, 131, 58, 69, 66, 60, 71, 71, 73, 75, 75, 73, 72, + 72, 73, 77, 77, 78, 80, 82, 82, 80, 78, 78, 77, 75, 73, 74, 75, + 77, 79, 80, 82, 84, 86, 86, 84, 81, 80, 81, 84, 87, 89, 88, 88, + 88, 89, 86, 85, 85, 86, 87, 87, 88, 88, 87, 87, 88, 89, 90, 90, + 91, 91, 93, 92, 91, 92, 94, 95, 94, 93, 93, 97, 98, 99, 99, 97, + 95, 93, 95, 94, 93, 93, 94, 96, 97, 97, 97, 93, 91, 96, 99, 98, + 96, 98, 96, 95, 95, 96, 97, 99, 101, 102, 94, 96, 95, 92, 94, 98, + 101, 99, 91, 89, 87, 88, 89, 85, 76, 71, 72, 71, 73, 80, 81, 78, + 77, 83, 73, 83, 82, 82, 90, 94, 97, 107, 96, 106, 122, 145, 159, 153, + 255, 255, 255, 140, 62, 65, 69, 66, 69, 71, 73, 75, 75, 73, 72, 73, + 74, 78, 78, 78, 80, 82, 81, 79, 77, 79, 77, 75, 74, 73, 75, 77, + 78, 82, 83, 85, 86, 85, 84, 82, 80, 79, 84, 89, 92, 92, 90, 88, + 88, 83, 85, 85, 85, 87, 90, 92, 90, 87, 85, 86, 87, 88, 88, 89, + 89, 93, 92, 91, 92, 94, 95, 94, 95, 94, 97, 99, 100, 100, 98, 96, + 94, 96, 95, 93, 92, 92, 95, 99, 102, 95, 93, 95, 98, 97, 95, 97, + 103, 96, 96, 96, 96, 96, 96, 97, 98, 95, 99, 100, 98, 98, 101, 99, + 96, 94, 94, 93, 93, 93, 90, 84, 80, 81, 80, 81, 85, 83, 77, 73, + 77, 76, 87, 87, 88, 97, 99, 97, 102, 95, 107, 123, 148, 164, 192, 255, + 255, 255, 129, 63, 61, 69, 75, 68, 70, 72, 74, 74, 73, 72, 73, 74, + 79, 78, 78, 79, 81, 80, 78, 75, 78, 77, 76, 75, 74, 75, 76, 77, + 82, 83, 83, 83, 83, 83, 82, 81, 81, 83, 84, 85, 84, 85, 88, 90, + 82, 85, 86, 85, 87, 92, 94, 91, 85, 83, 84, 84, 85, 86, 87, 87, + 93, 92, 91, 92, 94, 95, 94, 95, 95, 98, 99, 99, 99, 98, 96, 95, + 94, 93, 92, 90, 88, 89, 93, 94, 97, 96, 99, 101, 98, 93, 97, 104, + 101, 101, 100, 100, 98, 96, 94, 93, 96, 100, 102, 100, 100, 101, 98, 94, + 99, 98, 97, 92, 92, 88, 90, 89, 92, 92, 88, 83, 77, 72, 69, 67, + 77, 85, 86, 89, 99, 101, 102, 106, 107, 125, 132, 142, 173, 255, 255, 255, + 255, 99, 63, 60, 68, 79, 69, 70, 72, 74, 74, 73, 73, 73, 75, 78, + 78, 78, 79, 80, 79, 76, 73, 77, 77, 77, 76, 76, 75, 75, 75, 81, + 80, 79, 79, 79, 80, 81, 82, 81, 81, 81, 80, 80, 82, 86, 90, 84, + 88, 88, 85, 87, 92, 94, 89, 85, 83, 84, 84, 85, 86, 87, 87, 92, + 90, 90, 91, 93, 94, 93, 94, 96, 98, 98, 98, 97, 97, 96, 96, 92, + 93, 94, 92, 87, 84, 83, 82, 93, 90, 91, 95, 96, 93, 95, 99, 99, + 100, 102, 103, 102, 99, 96, 94, 101, 104, 104, 100, 100, 102, 99, 95, 100, + 101, 101, 95, 94, 94, 102, 108, 111, 111, 99, 82, 71, 71, 72, 66, 75, + 80, 80, 84, 98, 106, 112, 120, 122, 141, 150, 158, 183, 255, 255, 255, 125, + 71, 61, 64, 65, 80, 72, 70, 72, 74, 74, 73, 73, 74, 75, 78, 77, + 77, 78, 79, 78, 75, 72, 77, 77, 77, 77, 77, 76, 74, 74, 79, 78, + 76, 75, 75, 77, 80, 81, 78, 80, 83, 84, 84, 84, 85, 86, 86, 91, + 90, 86, 86, 92, 93, 87, 87, 85, 86, 87, 88, 88, 89, 89, 90, 89, + 88, 89, 91, 92, 91, 92, 97, 96, 95, 94, 94, 94, 96, 97, 96, 99, + 102, 100, 93, 86, 81, 79, 85, 80, 80, 88, 94, 96, 96, 97, 94, 95, + 100, 104, 105, 104, 102, 98, 103, 105, 102, 98, 97, 101, 102, 100, 102, 104, + 104, 101, 98, 103, 117, 130, 255, 255, 209, 89, 76, 81, 82, 76, 78, 82, + 79, 83, 101, 114, 124, 135, 137, 152, 168, 185, 209, 255, 255, 255, 95, 75, + 69, 59, 70, 74, 72, 67, 68, 69, 71, 73, 75, 76, 77, 73, 75, 78, + 78, 78, 77, 79, 80, 75, 81, 80, 73, 73, 81, 83, 78, 79, 75, 74, + 77, 78, 77, 80, 84, 76, 78, 81, 84, 84, 84, 85, 86, 85, 85, 85, + 85, 86, 87, 88, 89, 87, 87, 88, 88, 89, 90, 91, 91, 92, 93, 94, + 95, 95, 95, 95, 95, 93, 94, 93, 93, 92, 91, 92, 91, 88, 90, 95, + 96, 94, 89, 85, 82, 70, 77, 77, 73, 83, 98, 97, 85, 90, 92, 97, + 100, 102, 102, 103, 102, 95, 96, 93, 89, 93, 102, 103, 100, 106, 87, 101, + 122, 105, 140, 196, 255, 255, 255, 255, 255, 136, 81, 66, 71, 78, 90, 91, + 91, 108, 128, 139, 144, 156, 173, 190, 236, 255, 255, 255, 255, 73, 66, 67, + 61, 72, 78, 75, 71, 71, 72, 73, 74, 75, 76, 76, 75, 76, 77, 76, + 74, 72, 73, 74, 77, 79, 78, 75, 76, 80, 81, 79, 80, 76, 74, 77, + 78, 77, 79, 83, 78, 79, 82, 83, 83, 83, 85, 86, 86, 86, 85, 86, + 87, 88, 89, 90, 87, 87, 88, 89, 90, 90, 91, 91, 91, 91, 92, 93, + 94, 94, 93, 93, 92, 92, 93, 92, 93, 91, 89, 87, 86, 87, 91, 94, + 96, 97, 95, 94, 87, 86, 81, 73, 75, 85, 85, 80, 86, 90, 93, 98, + 100, 101, 104, 103, 98, 95, 97, 103, 103, 98, 98, 103, 97, 143, 99, 127, + 157, 162, 255, 255, 255, 255, 255, 255, 255, 101, 91, 90, 82, 92, 90, 93, + 111, 135, 146, 152, 166, 188, 196, 255, 255, 255, 255, 255, 61, 64, 70, 63, + 71, 72, 70, 74, 74, 74, 74, 75, 75, 75, 76, 75, 76, 77, 76, 73, + 72, 72, 73, 80, 77, 76, 79, 79, 77, 78, 81, 80, 76, 75, 78, 79, + 77, 79, 82, 81, 81, 82, 82, 81, 82, 85, 87, 86, 86, 86, 86, 87, + 88, 90, 90, 88, 88, 89, 89, 90, 91, 92, 92, 90, 90, 91, 92, 93, + 92, 92, 92, 92, 93, 94, 94, 95, 92, 89, 87, 78, 77, 79, 84, 92, + 99, 102, 102, 97, 91, 82, 73, 69, 70, 74, 76, 81, 84, 88, 94, 98, + 100, 102, 100, 103, 94, 98, 110, 107, 95, 96, 112, 103, 134, 123, 165, 199, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 106, 94, 98, 96, 101, 122, + 149, 165, 168, 158, 189, 233, 255, 255, 255, 255, 255, 102, 70, 72, 67, 74, + 72, 72, 73, 73, 73, 74, 75, 76, 76, 76, 75, 76, 77, 77, 76, 76, + 77, 79, 82, 75, 75, 82, 82, 76, 76, 83, 80, 77, 76, 79, 79, 78, + 79, 82, 84, 82, 83, 82, 81, 82, 85, 87, 86, 86, 86, 86, 87, 88, + 89, 90, 89, 89, 89, 90, 91, 92, 92, 93, 91, 92, 93, 93, 93, 93, + 92, 92, 90, 91, 93, 95, 96, 94, 92, 90, 78, 74, 74, 77, 86, 94, + 98, 99, 105, 100, 95, 90, 82, 72, 69, 71, 74, 78, 83, 91, 96, 100, + 100, 97, 106, 96, 97, 104, 105, 102, 107, 121, 134, 115, 154, 196, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 100, 99, 102, 108, 125, 156, + 177, 178, 160, 178, 234, 224, 246, 255, 255, 255, 211, 69, 69, 70, 81, 79, + 84, 69, 70, 71, 73, 74, 76, 77, 78, 77, 78, 78, 77, 76, 76, 78, + 80, 82, 76, 76, 83, 83, 76, 76, 82, 80, 77, 77, 80, 80, 78, 79, + 81, 84, 83, 83, 82, 81, 82, 85, 88, 85, 85, 85, 85, 86, 87, 89, + 89, 89, 90, 90, 91, 92, 93, 93, 93, 95, 95, 96, 96, 96, 95, 95, + 94, 88, 90, 92, 94, 97, 96, 95, 94, 90, 84, 80, 77, 78, 81, 82, + 82, 97, 100, 101, 103, 95, 80, 70, 68, 66, 67, 75, 86, 97, 102, 103, + 99, 106, 104, 105, 104, 108, 116, 119, 120, 124, 145, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 96, 107, 115, 127, 159, 185, + 184, 170, 230, 184, 187, 255, 255, 255, 255, 255, 73, 67, 70, 79, 74, 80, + 68, 69, 70, 72, 74, 76, 78, 79, 81, 81, 79, 76, 73, 72, 74, 76, + 81, 79, 79, 82, 82, 78, 77, 79, 81, 78, 78, 81, 81, 78, 78, 80, + 81, 82, 83, 83, 83, 83, 86, 88, 86, 86, 86, 86, 87, 88, 90, 90, + 90, 90, 91, 92, 93, 93, 94, 94, 98, 98, 98, 98, 98, 97, 96, 96, + 90, 91, 92, 93, 96, 97, 97, 97, 98, 93, 87, 77, 69, 63, 60, 59, + 65, 72, 81, 90, 92, 89, 82, 74, 64, 65, 69, 78, 90, 100, 104, 104, + 100, 107, 110, 110, 112, 122, 124, 121, 140, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 132, 140, 137, 164, 192, 190, + 186, 192, 255, 255, 255, 255, 255, 255, 255, 79, 66, 69, 77, 67, 72, 71, + 71, 72, 73, 74, 76, 77, 77, 82, 82, 80, 77, 73, 72, 74, 76, 77, + 81, 81, 79, 79, 80, 79, 75, 80, 77, 78, 81, 81, 77, 77, 80, 78, + 81, 83, 85, 85, 85, 87, 88, 89, 89, 88, 89, 90, 91, 92, 93, 91, + 91, 92, 92, 93, 94, 95, 95, 99, 99, 99, 99, 99, 98, 97, 96, 95, + 94, 93, 93, 95, 95, 96, 97, 97, 96, 93, 83, 69, 59, 56, 56, 57, + 65, 68, 73, 82, 93, 94, 85, 78, 72, 68, 70, 81, 92, 100, 103, 102, + 108, 114, 118, 116, 123, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 78, 66, 74, 84, 72, 75, 74, 74, + 74, 75, 75, 76, 76, 76, 82, 82, 81, 79, 77, 78, 81, 83, 76, 83, + 84, 78, 77, 82, 80, 73, 80, 78, 78, 81, 81, 78, 77, 79, 76, 80, + 83, 86, 86, 86, 87, 88, 91, 91, 91, 91, 92, 93, 94, 95, 91, 91, + 92, 93, 94, 94, 95, 95, 99, 99, 99, 99, 99, 98, 97, 96, 100, 98, + 95, 92, 93, 93, 95, 96, 97, 101, 102, 94, 81, 71, 69, 71, 88, 90, + 82, 71, 77, 92, 96, 87, 96, 84, 71, 65, 72, 83, 93, 98, 118, 114, + 120, 125, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 195, 75, 75, 79, 79, 75, 74, 71, 69, + 68, 71, 76, 78, 77, 81, 79, 77, 75, 74, 75, 77, 78, 81, 81, 80, + 80, 79, 78, 77, 76, 73, 78, 82, 83, 80, 79, 81, 83, 88, 86, 84, + 83, 84, 85, 87, 89, 94, 94, 93, 94, 95, 96, 95, 94, 92, 93, 94, + 95, 97, 98, 99, 99, 94, 97, 101, 103, 103, 101, 97, 94, 98, 97, 94, + 92, 93, 92, 93, 93, 97, 97, 97, 95, 92, 89, 86, 85, 98, 95, 87, + 84, 90, 100, 101, 93, 92, 104, 96, 92, 83, 77, 94, 95, 108, 116, 123, + 167, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 76, 76, 79, 82, 79, 76, 73, 71, 71, + 74, 78, 80, 80, 83, 81, 78, 76, 74, 74, 75, 76, 81, 80, 78, 77, + 77, 79, 80, 81, 78, 78, 79, 80, 82, 83, 82, 81, 86, 85, 84, 84, + 85, 87, 90, 91, 91, 90, 90, 91, 92, 92, 92, 92, 93, 93, 94, 95, + 97, 98, 99, 99, 97, 98, 99, 100, 100, 99, 98, 97, 96, 95, 93, 91, + 92, 91, 91, 92, 96, 95, 95, 92, 89, 85, 82, 80, 94, 94, 93, 88, + 90, 96, 99, 97, 96, 104, 96, 100, 97, 97, 116, 115, 108, 118, 168, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 76, 75, 79, 83, 83, 79, 74, 73, 75, 78, + 81, 82, 83, 86, 83, 80, 76, 74, 74, 74, 75, 81, 79, 77, 76, 77, + 80, 83, 86, 83, 79, 76, 78, 83, 86, 84, 81, 85, 85, 84, 85, 87, + 89, 92, 93, 89, 89, 90, 90, 91, 91, 91, 92, 94, 94, 95, 96, 97, + 98, 99, 99, 99, 99, 98, 97, 97, 98, 99, 99, 95, 94, 92, 91, 91, + 91, 91, 91, 93, 93, 94, 92, 90, 88, 86, 84, 93, 97, 100, 96, 94, + 96, 99, 98, 99, 105, 98, 112, 126, 139, 166, 170, 165, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 74, 73, 77, 81, 80, 80, 74, 74, 77, 81, 82, + 83, 85, 85, 83, 80, 77, 75, 75, 76, 77, 80, 80, 79, 78, 79, 81, + 83, 84, 84, 82, 79, 79, 82, 84, 85, 84, 87, 86, 86, 87, 88, 89, + 91, 92, 89, 91, 92, 92, 92, 92, 93, 95, 94, 95, 95, 96, 97, 98, + 99, 99, 100, 100, 99, 99, 99, 99, 100, 100, 95, 95, 94, 92, 94, 93, + 92, 92, 92, 93, 96, 97, 98, 98, 97, 97, 98, 100, 103, 101, 98, 97, + 96, 97, 100, 106, 107, 137, 167, 192, 223, 228, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 195, 75, 78, 80, 77, 77, 70, 70, 77, 80, 79, 80, + 84, 82, 80, 77, 75, 75, 75, 77, 78, 78, 79, 80, 81, 81, 80, 79, + 78, 81, 82, 83, 81, 79, 79, 83, 86, 89, 89, 88, 88, 88, 88, 88, + 88, 88, 90, 92, 93, 91, 91, 94, 96, 95, 96, 96, 97, 98, 98, 99, + 99, 99, 100, 102, 103, 103, 102, 100, 99, 97, 97, 97, 96, 97, 97, 96, + 95, 97, 97, 101, 102, 103, 104, 104, 104, 106, 102, 102, 101, 101, 99, 95, + 93, 99, 113, 129, 175, 214, 229, 244, 247, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 75, 80, 80, 75, 77, 69, 69, 78, 82, 79, 80, 85, + 82, 80, 78, 76, 76, 77, 78, 80, 77, 79, 82, 84, 84, 81, 79, 76, + 80, 84, 86, 84, 80, 79, 83, 87, 89, 89, 89, 88, 87, 86, 86, 85, + 85, 88, 91, 91, 89, 89, 92, 96, 96, 97, 97, 97, 98, 98, 99, 99, + 98, 100, 102, 103, 103, 102, 100, 98, 98, 99, 99, 99, 101, 100, 99, 98, + 102, 102, 104, 104, 103, 101, 100, 99, 109, 101, 98, 98, 100, 96, 95, 97, + 103, 125, 154, 209, 241, 242, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 193, 77, 78, 72, 78, 69, 70, 80, 84, 80, 80, 86, 84, + 82, 79, 77, 76, 76, 77, 79, 77, 78, 80, 82, 83, 83, 82, 81, 83, + 84, 85, 85, 84, 83, 83, 83, 87, 87, 87, 87, 87, 86, 86, 85, 85, + 89, 93, 93, 90, 90, 93, 98, 97, 97, 97, 98, 98, 98, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 100, 101, 102, 101, 100, 99, 102, + 102, 104, 103, 101, 99, 98, 96, 105, 98, 96, 96, 93, 92, 98, 105, 113, + 134, 165, 219, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 74, 77, 71, 81, 71, 70, 81, 86, 81, 81, 85, 86, 84, + 81, 78, 76, 75, 76, 77, 77, 78, 78, 80, 81, 83, 85, 86, 85, 83, + 82, 84, 88, 88, 84, 79, 84, 84, 85, 86, 87, 87, 87, 86, 88, 92, + 96, 96, 93, 92, 97, 99, 97, 95, 98, 96, 98, 96, 99, 97, 100, 96, + 96, 92, 94, 94, 98, 98, 98, 99, 100, 101, 103, 102, 100, 99, 98, 100, + 100, 100, 100, 99, 98, 99, 96, 94, 95, 93, 89, 88, 100, 116, 124, 142, + 164, 213, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 194, 75, 71, 85, 79, 77, 79, 80, 81, 81, 80, 78, 84, 83, + 76, 68, 74, 83, 89, 81, 82, 83, 84, 85, 85, 85, 85, 86, 86, 86, + 86, 86, 86, 86, 85, 86, 84, 83, 83, 85, 86, 86, 85, 89, 90, 91, + 91, 91, 93, 97, 100, 97, 92, 92, 91, 97, 97, 98, 95, 91, 92, 98, + 96, 95, 92, 96, 99, 95, 95, 95, 98, 101, 102, 101, 99, 97, 101, 103, + 100, 96, 95, 98, 101, 90, 100, 99, 92, 93, 95, 108, 129, 133, 184, 193, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 75, 78, 80, 76, 78, 80, 82, 84, 82, 81, 79, 80, 77, 68, + 68, 71, 78, 79, 80, 81, 82, 83, 84, 85, 85, 85, 87, 86, 86, 86, + 86, 86, 86, 86, 88, 86, 84, 85, 87, 88, 88, 87, 88, 90, 91, 91, + 91, 92, 94, 94, 98, 94, 93, 95, 98, 100, 98, 96, 96, 98, 100, 100, + 99, 99, 100, 100, 102, 102, 104, 105, 106, 106, 105, 104, 101, 100, 98, 97, + 96, 95, 93, 92, 92, 96, 93, 92, 95, 95, 106, 128, 167, 201, 216, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 111, 80, 72, 71, 76, 79, 82, 85, 84, 84, 86, 84, 79, 69, 70, + 73, 76, 73, 78, 79, 81, 83, 84, 85, 85, 85, 87, 87, 87, 87, 87, + 87, 87, 87, 89, 87, 86, 87, 89, 90, 90, 89, 90, 92, 94, 94, 93, + 93, 94, 93, 96, 94, 95, 97, 99, 100, 98, 96, 98, 98, 98, 99, 100, + 100, 99, 98, 102, 104, 104, 104, 101, 99, 98, 98, 102, 98, 95, 96, 98, + 97, 91, 86, 93, 92, 88, 92, 101, 100, 111, 137, 184, 217, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 212, 72, 66, 68, 74, 77, 80, 84, 85, 85, 87, 87, 83, 73, 69, 72, + 75, 74, 77, 78, 80, 83, 85, 86, 87, 87, 88, 88, 88, 88, 89, 89, + 89, 89, 89, 88, 86, 87, 89, 91, 91, 90, 94, 97, 99, 99, 98, 96, + 96, 94, 92, 92, 94, 97, 98, 97, 95, 94, 100, 97, 96, 97, 100, 101, + 98, 94, 100, 100, 99, 95, 89, 85, 84, 85, 93, 92, 92, 94, 96, 96, + 92, 88, 90, 88, 85, 92, 102, 104, 124, 159, 186, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 62, 66, 72, 72, 73, 80, 84, 84, 81, 85, 83, 72, 64, 64, 70, + 72, 75, 77, 80, 83, 86, 88, 89, 90, 88, 88, 89, 89, 90, 90, 91, + 91, 89, 87, 86, 87, 89, 91, 92, 91, 96, 98, 100, 100, 98, 97, 96, + 94, 92, 92, 95, 97, 98, 97, 96, 95, 104, 101, 99, 100, 102, 103, 99, + 96, 98, 98, 93, 86, 80, 77, 76, 77, 81, 86, 91, 94, 94, 94, 95, + 97, 86, 88, 88, 92, 99, 107, 136, 176, 214, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 63, 71, 69, 72, 80, 84, 82, 79, 85, 85, 73, 64, 62, 69, 73, + 73, 75, 78, 82, 85, 88, 90, 90, 89, 89, 90, 90, 91, 92, 92, 93, + 89, 87, 86, 87, 90, 92, 93, 92, 94, 96, 97, 97, 95, 94, 95, 94, + 95, 96, 99, 100, 99, 98, 99, 99, 101, 100, 99, 99, 99, 98, 96, 94, + 95, 88, 79, 72, 69, 70, 71, 71, 75, 81, 87, 90, 89, 90, 94, 98, + 84, 91, 90, 90, 99, 114, 143, 177, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 57, 68, 69, 73, 81, 83, 80, 82, 86, 83, 72, 66, 64, 68, 68, 69, + 71, 75, 79, 83, 86, 88, 89, 89, 90, 90, 91, 92, 93, 94, 94, 90, + 89, 88, 89, 92, 94, 95, 94, 94, 95, 96, 95, 94, 94, 96, 96, 96, + 97, 99, 99, 97, 97, 99, 102, 98, 99, 100, 98, 96, 93, 93, 93, 91, + 80, 68, 63, 66, 72, 75, 75, 79, 80, 82, 84, 85, 87, 88, 90, 84, + 94, 92, 92, 112, 135, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, + 69, 72, 76, 85, 85, 78, 82, 81, 75, 65, 62, 61, 61, 57, 66, 68, + 72, 76, 81, 84, 86, 88, 90, 90, 91, 92, 93, 94, 94, 95, 92, 90, + 89, 91, 94, 96, 97, 96, 96, 97, 97, 96, 95, 96, 98, 99, 95, 95, + 97, 96, 94, 94, 98, 101, 101, 104, 105, 103, 99, 95, 96, 100, 95, 82, + 68, 64, 72, 82, 87, 87, 86, 82, 79, 80, 83, 85, 84, 81, 83, 95, + 93, 95, 125, 154, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, + 69, 77, 76, 76, 81, 70, 71, 72, 70, 67, 63, 61, 61, 66, 69, 72, + 75, 78, 81, 84, 86, 84, 84, 84, 86, 90, 92, 92, 92, 91, 91, 92, + 93, 93, 94, 95, 95, 93, 92, 91, 91, 94, 98, 103, 103, 96, 98, 101, + 99, 94, 94, 99, 104, 99, 97, 97, 99, 97, 94, 92, 95, 93, 85, 80, + 84, 87, 86, 86, 88, 100, 89, 84, 88, 88, 82, 82, 87, 88, 101, 106, + 105, 114, 172, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 53, + 66, 72, 76, 77, 81, 78, 75, 69, 65, 61, 61, 62, 64, 66, 69, 72, + 75, 79, 82, 85, 86, 85, 86, 87, 89, 90, 90, 90, 91, 92, 92, 93, + 93, 94, 94, 94, 93, 93, 92, 93, 95, 98, 101, 101, 88, 89, 93, 96, + 98, 98, 98, 99, 94, 95, 94, 92, 91, 91, 90, 90, 88, 83, 79, 81, + 83, 81, 84, 89, 100, 90, 82, 84, 87, 89, 89, 91, 95, 98, 98, 107, + 136, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 53, + 68, 76, 74, 84, 81, 73, 66, 62, 59, 61, 63, 61, 62, 64, 68, 72, + 77, 80, 82, 87, 87, 87, 87, 88, 88, 88, 89, 92, 92, 92, 92, 93, + 93, 93, 93, 93, 94, 94, 96, 97, 98, 99, 98, 101, 96, 93, 93, 96, + 98, 97, 96, 93, 98, 97, 90, 89, 93, 93, 89, 95, 95, 94, 94, 92, + 92, 98, 105, 102, 97, 89, 84, 88, 95, 97, 93, 94, 96, 97, 113, 155, + 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 65, + 78, 77, 78, 74, 69, 64, 61, 60, 61, 63, 60, 60, 61, 65, 70, 76, + 79, 81, 85, 86, 87, 87, 87, 87, 89, 90, 92, 92, 92, 92, 92, 92, + 92, 92, 94, 95, 96, 98, 99, 98, 98, 95, 108, 99, 89, 82, 82, 87, + 94, 99, 93, 99, 98, 90, 88, 94, 93, 87, 88, 92, 92, 90, 87, 87, + 94, 100, 99, 103, 99, 89, 88, 95, 97, 92, 94, 101, 112, 126, 166, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57, 73, + 78, 73, 72, 70, 68, 64, 60, 61, 61, 62, 60, 60, 64, 70, 76, 79, + 80, 81, 83, 86, 87, 87, 87, 90, 93, 91, 91, 91, 92, 92, 92, 92, + 93, 94, 95, 97, 99, 100, 99, 97, 94, 91, 86, 80, 72, 67, 70, 80, + 89, 89, 95, 96, 89, 88, 92, 89, 84, 90, 94, 95, 92, 89, 88, 89, + 90, 90, 102, 106, 97, 91, 94, 98, 96, 102, 106, 120, 136, 181, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 69, + 75, 76, 76, 75, 70, 64, 61, 59, 64, 61, 59, 62, 69, 75, 78, 78, + 79, 82, 86, 87, 86, 87, 90, 94, 89, 89, 90, 91, 92, 93, 93, 94, + 94, 96, 97, 99, 100, 99, 98, 96, 87, 88, 88, 80, 68, 60, 60, 62, + 86, 88, 92, 94, 94, 93, 90, 90, 95, 98, 99, 99, 102, 255, 95, 86, + 83, 95, 103, 102, 97, 97, 102, 105, 105, 99, 114, 137, 195, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 74, + 75, 76, 76, 72, 67, 64, 62, 66, 61, 58, 61, 68, 74, 75, 75, 80, + 84, 88, 87, 85, 85, 88, 93, 87, 88, 89, 90, 92, 93, 94, 95, 95, + 95, 97, 98, 99, 100, 100, 98, 98, 97, 97, 90, 78, 66, 57, 53, 74, + 72, 80, 93, 96, 89, 87, 93, 92, 96, 99, 255, 255, 255, 255, 203, 88, + 89, 94, 100, 102, 101, 103, 108, 105, 100, 125, 149, 205, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 187, 71, 72, + 73, 73, 69, 66, 64, 63, 62, 59, 55, 57, 66, 72, 73, 72, 81, 86, + 89, 88, 84, 83, 86, 88, 86, 87, 88, 90, 92, 94, 95, 96, 95, 93, + 94, 95, 97, 98, 99, 99, 98, 95, 92, 89, 85, 80, 73, 68, 58, 54, + 66, 87, 93, 83, 81, 90, 111, 115, 167, 255, 255, 255, 255, 255, 203, 89, + 87, 98, 104, 102, 101, 106, 107, 114, 153, 173, 228, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 76, 74, + 77, 71, 60, 63, 51, 64, 58, 53, 56, 59, 59, 67, 75, 85, 83, 79, + 82, 84, 86, 86, 84, 86, 88, 87, 84, 84, 91, 96, 95, 95, 92, 89, + 87, 95, 103, 101, 94, 101, 101, 99, 98, 96, 90, 84, 77, 73, 67, 65, + 71, 83, 93, 96, 94, 105, 164, 255, 255, 255, 255, 255, 255, 255, 255, 109, + 100, 101, 104, 108, 111, 113, 115, 173, 205, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 63, 65, 70, + 67, 57, 61, 52, 59, 57, 57, 58, 58, 58, 66, 74, 81, 81, 80, 84, + 86, 87, 83, 80, 84, 87, 87, 85, 86, 93, 97, 96, 92, 92, 89, 88, + 93, 100, 99, 93, 100, 101, 100, 100, 99, 95, 88, 83, 92, 86, 79, 79, + 87, 98, 107, 110, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, + 129, 127, 126, 127, 163, 153, 181, 194, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 56, 68, 70, + 63, 68, 58, 56, 57, 60, 61, 59, 58, 62, 68, 77, 79, 81, 85, 87, + 86, 81, 78, 82, 86, 88, 88, 89, 95, 97, 96, 90, 93, 92, 91, 92, + 96, 96, 95, 102, 103, 103, 103, 101, 96, 90, 84, 76, 76, 79, 87, 104, + 129, 156, 170, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, + 157, 156, 157, 180, 165, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 63, 70, 67, + 67, 55, 62, 63, 64, 65, 66, 65, 63, 62, 76, 78, 80, 83, 84, 84, + 81, 79, 82, 87, 90, 90, 91, 95, 96, 93, 89, 93, 94, 93, 91, 92, + 93, 96, 102, 105, 107, 108, 107, 104, 101, 98, 86, 86, 91, 102, 121, 145, + 168, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 66, 65, 64, + 50, 71, 68, 66, 67, 72, 74, 69, 61, 76, 78, 78, 80, 79, 81, 81, + 82, 83, 88, 91, 91, 90, 94, 94, 90, 89, 92, 95, 95, 92, 89, 91, + 95, 96, 100, 103, 106, 109, 109, 110, 110, 92, 92, 99, 115, 136, 154, 163, + 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61, 63, 69, 59, + 66, 66, 63, 65, 71, 75, 72, 64, 75, 77, 79, 78, 79, 79, 82, 83, + 81, 86, 89, 89, 89, 93, 93, 90, 90, 91, 94, 96, 93, 88, 88, 93, + 98, 100, 100, 98, 98, 98, 100, 102, 95, 97, 111, 133, 158, 174, 177, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55, 70, 72, 62, + 66, 68, 68, 72, 81, 87, 86, 72, 76, 80, 81, 80, 78, 81, 83, 78, + 82, 85, 86, 88, 93, 95, 93, 92, 91, 92, 96, 94, 88, 87, 91, 99, + 102, 101, 99, 98, 101, 108, 113, 137, 139, 147, 157, 167, 199, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 69, 78, + 85, 83, 84, 95, 106, 113, 70, 76, 83, 85, 84, 81, 81, 83, 74, 79, + 82, 84, 87, 94, 98, 97, 94, 90, 90, 96, 95, 89, 86, 90, 94, 99, + 103, 109, 116, 128, 144, 154, 160, 163, 167, 169, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 90, 94, 96, 95, 95, 87, 78, 75, 82, 88, 86, 79, 83, 81, 84, + 88, 90, 93, 94, 96, 93, 91, 90, 93, 97, 99, 96, 94, 94, 106, 111, + 122, 141, 148, 153, 166, 164, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 90, 89, 90, 89, 83, 79, 80, 87, 91, 80, 85, 88, 86, + 85, 93, 97, 97, 96, 95, 93, 96, 101, 107, 111, 114, 110, 138, 149, 146, + 153, 158, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 198, 90, 95, 92, 87, 83, 88, 89, 82, 91, 95, 91, 87, + 92, 94, 89, 96, 96, 94, 96, 100, 109, 119, 127, 128, 164, 177, 161, 156, + 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 199, 89, 96, 99, 96, 89, 82, 87, 85, 90, 96, 97, 95, + 92, 91, 95, 97, 96, 96, 99, 107, 120, 129, 137, 165, 172, 156, 152, 189, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 202, 101, 102, 104, 105, 102, 82, 78, 93, 100, 94, 94, + 103, 93, 95, 97, 99, 102, 109, 120, 128, 139, 152, 154, 151, 156, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 201, 117, 138, 139, 109, 92, 95, 94, 87, 90, 101, + 89, 91, 93, 97, 103, 111, 120, 126, 142, 149, 151, 156, 195, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 222, 142, 129, 114, 102, 98, 99, 100, 102, + 100, 99, 103, 110, 118, 125, 129, 144, 157, 189, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 111, 126, 121, + 115, 116, 122, 130, 136, 139, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'enemy' of size 113x150x1x3 and type 'const unsigned char' */ +const unsigned char data_enemy[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 222, 221, 224, 223, 222, 223, 223, 222, 220, 217, 222, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 222, 220, + 217, 217, 219, 229, 228, 227, 227, 226, 223, 219, 215, 220, 221, 229, 248, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 214, 227, 217, 219, 219, 218, + 219, 225, 227, 224, 217, 213, 211, 213, 219, 219, 214, 209, 222, 220, 220, 223, + 227, 229, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 249, 203, 226, 236, 212, 219, 189, 143, + 106, 94, 105, 118, 124, 154, 143, 132, 130, 141, 158, 172, 180, 188, 192, 200, + 211, 221, 227, 227, 225, 232, 229, 222, 216, 222, 231, 226, 215, 226, 199, 187, + 202, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 246, 230, 229, 231, 232, 210, 168, 127, 98, + 56, 32, 35, 52, 63, 64, 56, 50, 45, 45, 53, 63, 72, 76, 89, 99, + 121, 150, 181, 208, 227, 236, 234, 234, 222, 206, 206, 214, 203, 182, 199, 194, + 198, 201, 192, 182, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 226, 217, 218, 225, 187, 134, 98, 56, + 48, 36, 36, 45, 51, 42, 29, 41, 42, 45, 49, 51, 48, 44, 38, 46, + 50, 61, 78, 100, 125, 146, 157, 161, 202, 229, 210, 171, 157, 174, 196, 173, + 183, 186, 183, 187, 199, 201, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 246, 229, 227, 207, 237, 206, 142, 86, 84, 43, + 38, 37, 33, 31, 33, 36, 30, 21, 27, 26, 26, 27, 30, 33, 34, 34, + 48, 46, 44, 42, 45, 51, 59, 65, 79, 71, 76, 98, 117, 123, 121, 121, + 123, 146, 166, 172, 180, 192, 193, 184, 212, 222, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 231, 234, 235, 211, 252, 204, 176, 55, 74, 35, + 45, 27, 27, 23, 19, 21, 29, 35, 36, 25, 25, 26, 27, 31, 35, 38, + 40, 33, 36, 40, 42, 43, 43, 44, 45, 40, 37, 46, 61, 62, 61, 80, + 107, 91, 113, 145, 166, 163, 156, 167, 185, 196, 197, 234, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 246, 227, 229, 231, 233, 225, 228, 194, 49, 98, 30, + 43, 36, 28, 30, 29, 25, 23, 27, 27, 24, 15, 18, 22, 25, 26, 25, + 24, 23, 32, 36, 42, 44, 43, 40, 38, 37, 44, 34, 29, 29, 28, 29, + 41, 56, 93, 83, 87, 116, 148, 162, 160, 156, 178, 186, 220, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 230, 227, 225, 224, 225, 225, 219, 199, 106, 69, 27, + 46, 15, 25, 19, 21, 22, 22, 26, 30, 29, 23, 16, 16, 15, 14, 15, + 19, 24, 27, 25, 28, 32, 32, 30, 30, 32, 35, 21, 32, 38, 28, 17, + 21, 38, 53, 53, 64, 71, 80, 112, 153, 170, 164, 160, 172, 212, 222, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 234, 229, 206, 228, 216, 216, 223, 210, 133, 56, 29, + 32, 32, 25, 21, 22, 23, 25, 28, 30, 28, 28, 23, 17, 16, 12, 9, + 15, 28, 33, 30, 27, 28, 30, 32, 33, 30, 25, 21, 27, 28, 27, 22, + 19, 23, 34, 43, 42, 50, 61, 77, 102, 129, 142, 141, 152, 152, 213, 223, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 215, 235, 205, 232, 229, 215, 219, 213, 129, 56, 37, 24, + 25, 28, 24, 21, 23, 29, 26, 23, 23, 23, 23, 19, 16, 12, 14, 15, + 15, 20, 29, 31, 28, 26, 21, 17, 20, 26, 28, 24, 20, 36, 33, 30, + 27, 27, 31, 37, 42, 32, 38, 47, 63, 86, 108, 115, 110, 135, 135, 197, + 217, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 222, 233, 233, 232, 237, 221, 237, 214, 137, 28, 30, 35, + 38, 33, 22, 16, 18, 22, 25, 20, 15, 16, 21, 24, 23, 20, 7, 14, + 21, 24, 26, 29, 29, 27, 25, 17, 11, 13, 22, 28, 26, 22, 35, 31, + 26, 25, 27, 30, 31, 31, 25, 27, 32, 45, 66, 87, 95, 92, 130, 137, + 194, 230, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 246, 244, 233, 207, 222, 203, 226, 211, 136, 36, 29, 51, 41, + 39, 28, 15, 15, 26, 33, 33, 22, 17, 14, 17, 24, 27, 25, 21, 10, + 17, 25, 27, 26, 25, 25, 24, 23, 19, 15, 16, 20, 25, 26, 26, 29, + 27, 25, 23, 23, 24, 24, 23, 30, 29, 30, 35, 47, 62, 75, 79, 101, + 118, 174, 227, 212, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 237, 233, 220, 220, 232, 221, 201, 109, 22, 54, 51, 26, 18, + 24, 23, 17, 12, 22, 37, 38, 27, 25, 22, 20, 22, 24, 23, 17, 12, + 19, 22, 26, 26, 23, 19, 19, 22, 17, 20, 23, 22, 19, 19, 22, 25, + 26, 30, 32, 29, 25, 22, 25, 28, 33, 35, 38, 38, 38, 41, 50, 57, + 52, 74, 124, 195, 201, 223, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 234, 242, 233, 217, 215, 226, 179, 59, 38, 51, 34, 22, 51, + 27, 26, 31, 31, 25, 23, 26, 24, 18, 18, 18, 20, 22, 23, 21, 17, + 14, 27, 24, 23, 23, 19, 15, 16, 19, 12, 19, 26, 24, 16, 12, 16, + 21, 23, 28, 32, 30, 24, 22, 26, 31, 22, 29, 40, 47, 46, 43, 46, + 50, 47, 61, 93, 164, 198, 214, 230, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 244, 239, 225, 199, 222, 250, 190, 92, 45, 26, 45, 46, 39, 16, + 26, 21, 18, 21, 21, 17, 14, 16, 22, 26, 14, 17, 21, 22, 22, 22, + 24, 25, 32, 25, 21, 22, 21, 17, 16, 19, 14, 20, 24, 23, 18, 15, + 18, 22, 20, 22, 24, 24, 22, 22, 25, 28, 21, 22, 30, 42, 47, 45, + 45, 46, 53, 58, 72, 131, 188, 179, 194, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 246, 232, 212, 218, 243, 225, 149, 71, 32, 44, 49, 45, 17, 32, + 29, 34, 27, 29, 26, 24, 26, 26, 24, 23, 24, 25, 28, 29, 26, 20, + 19, 22, 26, 31, 23, 18, 21, 22, 18, 16, 17, 18, 19, 21, 20, 19, + 19, 21, 23, 22, 20, 19, 21, 25, 28, 28, 28, 35, 25, 19, 25, 31, + 31, 30, 32, 30, 32, 37, 91, 160, 131, 140, 157, 221, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 247, 236, 220, 221, 229, 240, 99, 15, 53, 47, 32, 31, 30, 28, + 28, 28, 28, 28, 20, 23, 24, 20, 18, 20, 22, 22, 23, 25, 23, 16, + 15, 20, 22, 18, 30, 20, 18, 24, 24, 14, 10, 14, 22, 23, 20, 15, + 15, 20, 23, 22, 21, 20, 20, 20, 22, 24, 25, 25, 29, 22, 19, 23, + 29, 32, 35, 39, 35, 18, 47, 63, 134, 135, 156, 142, 186, 212, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 232, 234, 238, 217, 246, 193, 25, 40, 51, 31, 37, 42, 38, 33, + 28, 24, 22, 22, 22, 26, 22, 19, 20, 22, 22, 21, 20, 21, 23, 22, + 16, 16, 20, 21, 18, 27, 19, 18, 23, 21, 12, 9, 14, 18, 20, 18, + 14, 14, 18, 20, 18, 18, 18, 17, 18, 20, 21, 22, 22, 26, 21, 18, + 22, 26, 28, 32, 37, 32, 24, 39, 36, 65, 61, 87, 94, 141, 190, 218, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 227, 228, 231, 233, 243, 190, 40, 28, 30, 38, 28, 41, 37, 34, + 29, 25, 23, 24, 26, 28, 32, 20, 14, 20, 24, 21, 18, 18, 18, 20, + 20, 17, 17, 19, 19, 17, 23, 18, 18, 22, 19, 11, 10, 15, 17, 20, + 20, 17, 17, 20, 20, 17, 17, 18, 18, 19, 19, 20, 21, 21, 21, 18, + 18, 21, 22, 22, 28, 35, 32, 31, 31, 25, 22, 24, 43, 62, 95, 148, + 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 222, 221, 226, 229, 227, 217, 51, 41, 49, 45, 51, 44, 29, 29, + 28, 26, 25, 25, 27, 29, 30, 32, 19, 14, 20, 23, 17, 15, 20, 17, + 18, 19, 18, 18, 19, 18, 16, 18, 16, 18, 20, 17, 11, 11, 15, 17, + 21, 22, 20, 20, 22, 21, 17, 18, 19, 21, 21, 21, 21, 21, 22, 17, + 16, 17, 19, 18, 17, 23, 31, 34, 33, 21, 31, 22, 36, 34, 42, 60, + 88, 139, 196, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 227, 220, 224, 234, 232, 221, 120, 31, 48, 36, 31, 45, 37, 29, + 28, 29, 30, 29, 28, 25, 23, 21, 26, 19, 17, 20, 19, 14, 17, 24, + 18, 18, 18, 19, 19, 17, 16, 17, 16, 16, 17, 18, 17, 13, 13, 15, + 16, 21, 22, 20, 20, 22, 21, 16, 16, 19, 22, 22, 20, 19, 19, 21, + 15, 15, 16, 18, 16, 15, 20, 27, 31, 33, 17, 29, 15, 31, 17, 20, + 32, 43, 76, 129, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 229, 226, 223, 232, 239, 218, 187, 55, 63, 26, 58, 16, 17, 31, + 31, 22, 24, 28, 30, 30, 27, 24, 21, 20, 21, 21, 19, 17, 19, 24, + 28, 22, 19, 18, 20, 19, 16, 15, 18, 17, 16, 15, 17, 19, 19, 17, + 15, 14, 18, 19, 17, 17, 19, 18, 14, 12, 16, 20, 20, 17, 15, 16, + 18, 17, 14, 15, 17, 17, 15, 18, 24, 22, 33, 23, 28, 5, 17, 13, + 21, 24, 39, 55, 73, 121, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 223, 227, 225, 223, 229, 218, 167, 109, 40, 36, 82, 22, 24, 34, + 38, 15, 20, 22, 25, 28, 29, 28, 26, 24, 20, 24, 22, 16, 19, 30, + 35, 30, 27, 22, 19, 21, 19, 15, 15, 19, 20, 17, 14, 16, 22, 25, + 21, 15, 15, 18, 19, 16, 16, 19, 18, 15, 11, 16, 21, 20, 16, 13, + 14, 17, 19, 15, 13, 17, 19, 18, 18, 21, 17, 29, 30, 30, 13, 19, + 20, 24, 21, 35, 47, 46, 73, 184, 226, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 248, 224, 228, 225, 220, 218, 190, 113, 35, 32, 59, 11, 37, 44, + 21, 24, 26, 30, 30, 30, 27, 25, 22, 21, 19, 25, 28, 24, 16, 24, + 43, 44, 32, 31, 23, 20, 21, 19, 12, 13, 20, 21, 17, 14, 16, 24, + 29, 24, 16, 19, 22, 22, 17, 17, 21, 21, 18, 14, 19, 24, 23, 19, + 15, 16, 18, 22, 15, 13, 17, 22, 21, 20, 20, 17, 26, 30, 28, 26, + 24, 16, 8, 10, 14, 27, 31, 35, 121, 183, 232, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 245, 228, 219, 232, 230, 224, 236, 117, 47, 49, 47, 39, 31, 29, + 31, 32, 32, 29, 30, 24, 28, 46, 36, 27, 42, 32, 36, 31, 43, 31, + 37, 77, 66, 27, 15, 36, 18, 3, 19, 15, 6, 28, 10, 26, 18, 14, + 31, 34, 24, 30, 23, 22, 20, 19, 22, 23, 15, 8, 13, 18, 19, 17, + 18, 19, 18, 15, 21, 17, 19, 19, 19, 29, 33, 22, 16, 20, 26, 31, + 29, 22, 20, 22, 16, 18, 27, 36, 47, 79, 140, 195, 234, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 227, 230, 230, 225, 213, 224, 216, 41, 65, 48, 48, 43, 36, + 34, 33, 32, 28, 27, 25, 28, 22, 26, 24, 28, 46, 36, 50, 41, 31, + 69, 43, 89, 49, 38, 32, 29, 39, 26, 23, 27, 18, 28, 13, 28, 22, + 19, 35, 38, 31, 32, 31, 27, 21, 19, 22, 21, 16, 11, 19, 24, 23, + 21, 22, 25, 22, 18, 20, 17, 21, 21, 21, 31, 37, 22, 15, 17, 24, + 31, 31, 28, 28, 32, 20, 22, 29, 35, 37, 55, 97, 139, 193, 233, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 226, 228, 231, 254, 197, 247, 230, 89, 69, 35, 57, 45, 42, + 40, 36, 32, 29, 25, 23, 16, 31, 19, 21, 38, 53, 69, 65, 75, 49, + 63, 85, 87, 82, 53, 46, 48, 27, 45, 38, 21, 27, 22, 21, 23, 35, + 30, 25, 36, 44, 38, 35, 38, 30, 22, 19, 21, 20, 16, 14, 20, 21, + 20, 19, 21, 25, 23, 17, 18, 17, 22, 21, 22, 33, 36, 22, 17, 17, + 20, 26, 27, 27, 30, 35, 23, 25, 30, 32, 28, 31, 52, 77, 166, 225, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 226, 226, 227, 229, 222, 233, 228, 149, 53, 51, 71, 43, 43, + 47, 46, 41, 35, 32, 27, 25, 21, 38, 24, 31, 54, 57, 62, 63, 69, + 58, 91, 80, 89, 61, 45, 35, 57, 43, 32, 34, 29, 21, 24, 18, 32, + 39, 36, 29, 37, 48, 49, 43, 39, 29, 22, 22, 23, 21, 17, 15, 17, + 19, 18, 18, 22, 28, 27, 21, 16, 17, 22, 21, 22, 35, 38, 20, 23, + 19, 18, 21, 21, 20, 23, 28, 25, 25, 28, 29, 25, 23, 33, 46, 124, + 214, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 228, 227, 226, 225, 208, 243, 137, 60, 60, 67, 61, 55, + 50, 54, 55, 47, 42, 41, 38, 34, 27, 37, 26, 52, 81, 76, 82, 95, + 75, 111, 122, 110, 78, 94, 64, 62, 53, 68, 21, 38, 59, 27, 34, 30, + 36, 38, 36, 28, 35, 55, 65, 56, 36, 26, 20, 24, 26, 21, 17, 16, + 17, 19, 20, 21, 27, 34, 35, 31, 15, 18, 23, 20, 20, 36, 39, 22, + 27, 21, 18, 19, 19, 17, 19, 23, 27, 26, 25, 25, 24, 25, 33, 41, + 63, 172, 221, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 228, 228, 227, 225, 222, 237, 200, 35, 82, 59, 57, 72, + 46, 57, 61, 57, 48, 43, 45, 44, 37, 42, 42, 38, 73, 96, 88, 104, + 119, 75, 110, 125, 79, 70, 79, 69, 63, 47, 70, 28, 51, 81, 43, 45, + 52, 36, 36, 37, 31, 36, 64, 79, 67, 36, 26, 21, 27, 29, 23, 17, + 17, 12, 17, 20, 20, 24, 32, 35, 35, 17, 21, 25, 20, 20, 38, 44, + 26, 25, 20, 18, 21, 22, 21, 21, 23, 27, 26, 25, 23, 23, 27, 34, + 40, 32, 127, 200, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 246, 229, 230, 229, 228, 224, 226, 86, 88, 78, 77, 65, + 56, 56, 73, 72, 62, 49, 46, 50, 49, 42, 61, 60, 63, 88, 87, 76, + 85, 80, 126, 119, 135, 73, 107, 83, 90, 85, 64, 58, 55, 62, 73, 59, + 55, 82, 41, 41, 46, 41, 41, 69, 84, 66, 45, 30, 22, 27, 29, 21, + 17, 20, 10, 14, 20, 18, 19, 25, 32, 34, 23, 27, 29, 21, 21, 43, + 50, 32, 22, 17, 17, 21, 24, 22, 20, 20, 24, 26, 27, 26, 25, 28, + 33, 36, 32, 82, 154, 219, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 227, 228, 231, 231, 229, 226, 100, 114, 71, 90, 99, + 66, 47, 76, 91, 88, 74, 58, 56, 63, 61, 50, 54, 65, 86, 112, 109, + 104, 115, 93, 165, 137, 112, 96, 110, 103, 81, 100, 96, 53, 87, 73, 56, + 71, 67, 111, 54, 50, 58, 51, 46, 71, 83, 58, 53, 36, 25, 28, 29, + 20, 19, 22, 14, 20, 27, 24, 20, 25, 32, 37, 29, 31, 33, 23, 24, + 46, 53, 35, 19, 15, 15, 21, 23, 19, 15, 14, 18, 24, 30, 30, 30, + 31, 33, 33, 30, 41, 102, 188, 212, 214, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 228, 223, 228, 242, 203, 229, 67, 82, 82, 103, + 98, 72, 83, 81, 106, 62, 79, 57, 58, 69, 67, 51, 99, 94, 101, 126, + 95, 103, 116, 136, 136, 128, 121, 119, 115, 96, 98, 124, 89, 87, 104, 95, + 68, 79, 107, 95, 60, 68, 58, 52, 45, 88, 91, 77, 55, 24, 32, 20, + 28, 23, 23, 18, 19, 16, 26, 21, 29, 34, 27, 44, 48, 33, 22, 23, + 31, 36, 36, 38, 18, 11, 22, 21, 21, 24, 17, 27, 18, 25, 24, 29, + 39, 28, 19, 31, 30, 48, 67, 115, 184, 215, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 246, 230, 231, 223, 229, 235, 139, 84, 86, 75, + 90, 89, 70, 75, 69, 72, 88, 71, 102, 57, 87, 61, 102, 112, 123, 97, + 132, 95, 141, 121, 130, 139, 103, 126, 127, 85, 111, 137, 85, 97, 97, 97, + 104, 76, 86, 83, 71, 82, 89, 59, 53, 52, 89, 105, 104, 62, 30, 35, + 19, 29, 33, 32, 19, 15, 27, 23, 31, 20, 46, 28, 49, 50, 37, 24, + 24, 27, 30, 31, 33, 22, 14, 24, 21, 21, 25, 17, 27, 28, 30, 36, + 28, 19, 36, 45, 26, 35, 55, 67, 90, 150, 208, 224, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 226, 222, 235, 225, 219, 186, 65, 76, 72, + 60, 75, 81, 70, 68, 58, 50, 92, 84, 79, 85, 80, 79, 96, 109, 109, + 123, 110, 136, 116, 118, 107, 126, 167, 115, 70, 111, 112, 93, 132, 114, 124, + 127, 118, 123, 131, 116, 81, 96, 114, 62, 51, 54, 87, 120, 134, 77, 34, + 35, 21, 34, 41, 40, 21, 19, 30, 34, 34, 33, 50, 38, 55, 64, 50, + 36, 33, 33, 31, 28, 28, 20, 11, 20, 18, 19, 22, 14, 23, 36, 23, + 37, 34, 13, 37, 57, 25, 30, 34, 42, 58, 100, 166, 206, 222, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 224, 215, 232, 234, 194, 68, 60, 55, + 53, 54, 68, 72, 63, 55, 47, 59, 96, 62, 96, 68, 74, 71, 98, 117, + 127, 124, 142, 134, 111, 100, 135, 154, 132, 98, 105, 140, 125, 92, 99, 121, + 141, 152, 111, 153, 159, 153, 99, 98, 140, 83, 54, 55, 90, 132, 152, 101, + 34, 31, 29, 41, 40, 42, 25, 32, 22, 54, 31, 66, 41, 53, 66, 81, + 62, 44, 41, 41, 38, 29, 23, 17, 9, 19, 19, 21, 25, 15, 23, 40, + 19, 30, 44, 32, 35, 49, 40, 45, 23, 31, 57, 80, 126, 180, 205, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 221, 224, 220, 225, 219, 123, 13, 67, + 48, 51, 60, 60, 53, 45, 39, 42, 76, 69, 60, 98, 57, 41, 87, 132, + 115, 125, 115, 123, 114, 102, 105, 150, 145, 78, 95, 129, 96, 94, 125, 114, + 152, 163, 158, 139, 161, 173, 160, 128, 94, 153, 111, 67, 58, 102, 138, 155, + 123, 35, 33, 43, 47, 33, 38, 30, 40, 17, 52, 47, 84, 49, 57, 78, + 84, 65, 47, 44, 49, 46, 34, 26, 17, 9, 20, 22, 27, 31, 20, 26, + 34, 33, 31, 35, 42, 39, 42, 56, 54, 30, 33, 48, 56, 91, 152, 188, + 200, 255, 255, 255, 255, 255, 255, 255, 255, 221, 225, 232, 220, 163, 48, 47, + 49, 49, 48, 57, 45, 37, 39, 39, 53, 58, 37, 56, 34, 50, 56, 125, + 113, 82, 95, 111, 85, 109, 105, 116, 107, 88, 84, 79, 78, 86, 109, 152, + 195, 180, 176, 152, 193, 173, 192, 162, 168, 92, 145, 129, 77, 57, 108, 130, + 144, 133, 40, 40, 52, 48, 32, 40, 33, 37, 27, 39, 71, 80, 76, 54, + 85, 83, 68, 56, 55, 57, 54, 47, 42, 18, 7, 17, 18, 23, 29, 19, + 25, 19, 44, 35, 16, 26, 38, 41, 50, 48, 46, 42, 29, 26, 63, 122, + 157, 174, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 227, 213, 78, 28, + 57, 37, 47, 37, 44, 30, 30, 42, 37, 50, 27, 45, 26, 42, 42, 129, + 101, 75, 64, 97, 83, 112, 78, 134, 101, 86, 95, 88, 94, 118, 155, 190, + 195, 174, 173, 161, 161, 199, 185, 195, 175, 162, 111, 128, 133, 87, 61, 113, + 118, 139, 133, 51, 55, 56, 45, 37, 50, 34, 35, 38, 43, 80, 83, 100, + 67, 85, 83, 77, 72, 68, 60, 53, 51, 53, 28, 13, 16, 13, 18, 26, + 19, 28, 15, 33, 42, 29, 19, 29, 38, 34, 46, 59, 54, 37, 31, 48, + 93, 138, 170, 190, 255, 255, 255, 255, 255, 255, 244, 226, 222, 213, 208, 17, + 51, 21, 44, 52, 34, 39, 26, 29, 40, 21, 25, 33, 40, 51, 86, 115, + 130, 69, 81, 80, 80, 75, 86, 62, 90, 93, 86, 121, 159, 177, 184, 198, + 193, 187, 199, 172, 161, 200, 186, 207, 196, 202, 136, 138, 122, 137, 100, 73, + 124, 117, 147, 130, 62, 71, 60, 43, 47, 62, 36, 37, 43, 63, 71, 98, + 110, 87, 83, 81, 82, 82, 72, 53, 40, 42, 50, 45, 26, 24, 17, 21, + 31, 27, 38, 25, 18, 50, 66, 33, 24, 37, 27, 31, 40, 42, 43, 36, + 21, 51, 114, 160, 173, 255, 255, 255, 255, 255, 255, 219, 223, 233, 221, 134, + 27, 51, 48, 31, 44, 36, 30, 29, 31, 30, 28, 29, 45, 53, 85, 121, + 116, 81, 74, 95, 78, 105, 117, 112, 112, 118, 132, 151, 177, 189, 200, 201, + 198, 200, 199, 199, 147, 181, 202, 196, 195, 203, 193, 165, 145, 116, 122, 99, + 76, 95, 157, 116, 117, 142, 64, 78, 66, 64, 57, 40, 46, 49, 60, 61, + 98, 112, 105, 70, 85, 78, 75, 88, 64, 33, 42, 44, 44, 52, 24, 17, + 21, 27, 45, 27, 27, 29, 26, 50, 49, 33, 39, 19, 24, 40, 58, 41, + 45, 53, 47, 80, 139, 166, 206, 255, 255, 255, 255, 255, 224, 230, 216, 196, + 46, 26, 42, 38, 45, 24, 26, 28, 30, 30, 29, 32, 40, 40, 100, 129, + 103, 74, 82, 106, 117, 151, 172, 179, 172, 172, 171, 177, 190, 198, 204, 211, + 212, 213, 210, 202, 192, 176, 196, 206, 200, 199, 204, 192, 170, 138, 137, 126, + 99, 86, 108, 151, 130, 92, 140, 88, 89, 71, 75, 62, 59, 56, 55, 65, + 65, 101, 111, 110, 83, 73, 75, 76, 81, 57, 30, 41, 40, 50, 47, 17, + 18, 26, 21, 38, 45, 31, 31, 27, 47, 43, 27, 31, 11, 24, 31, 51, + 46, 46, 51, 44, 66, 104, 153, 185, 255, 255, 255, 255, 255, 223, 221, 221, + 135, 4, 44, 45, 39, 45, 29, 35, 39, 35, 29, 29, 40, 52, 79, 74, + 67, 76, 108, 152, 183, 198, 199, 211, 212, 206, 208, 206, 204, 210, 212, 212, + 213, 214, 216, 212, 197, 180, 203, 207, 207, 204, 205, 205, 195, 181, 145, 163, + 129, 99, 81, 112, 145, 146, 96, 153, 119, 98, 83, 101, 63, 67, 67, 64, + 73, 73, 102, 108, 115, 102, 74, 79, 82, 84, 55, 28, 37, 34, 54, 62, + 32, 20, 25, 21, 35, 51, 35, 30, 24, 35, 32, 28, 37, 26, 28, 21, + 43, 52, 50, 51, 45, 51, 69, 118, 172, 255, 255, 255, 255, 245, 222, 214, + 230, 52, 26, 50, 44, 50, 39, 44, 46, 44, 35, 35, 44, 60, 76, 86, + 83, 108, 158, 186, 184, 199, 225, 206, 213, 206, 202, 210, 210, 206, 209, 215, + 216, 212, 211, 213, 210, 197, 181, 210, 205, 205, 205, 206, 201, 195, 193, 150, + 171, 146, 123, 82, 112, 141, 135, 119, 162, 130, 97, 96, 134, 70, 67, 74, + 70, 84, 82, 100, 96, 112, 116, 92, 82, 78, 88, 62, 27, 31, 32, 49, + 84, 66, 26, 21, 29, 36, 43, 53, 38, 26, 24, 20, 28, 45, 45, 35, + 18, 35, 54, 51, 52, 52, 45, 57, 81, 149, 255, 255, 255, 255, 225, 222, + 223, 184, 6, 38, 34, 36, 47, 46, 35, 39, 39, 38, 50, 73, 90, 102, + 120, 158, 192, 203, 200, 199, 207, 211, 213, 212, 203, 201, 212, 214, 211, 217, + 219, 219, 217, 213, 212, 212, 208, 199, 209, 204, 208, 209, 206, 197, 195, 200, + 148, 162, 168, 165, 96, 117, 146, 120, 130, 160, 132, 99, 98, 146, 85, 86, + 81, 75, 92, 92, 99, 82, 103, 121, 100, 72, 59, 80, 64, 26, 29, 37, + 37, 74, 78, 41, 26, 31, 34, 44, 67, 49, 39, 25, 16, 26, 37, 40, + 38, 22, 28, 47, 46, 48, 56, 45, 60, 68, 144, 202, 255, 255, 255, 226, + 223, 213, 97, 25, 40, 42, 41, 39, 61, 90, 98, 104, 114, 133, 154, 164, + 163, 189, 199, 193, 182, 194, 221, 229, 217, 219, 217, 209, 206, 217, 214, 212, + 220, 216, 219, 220, 214, 212, 214, 216, 213, 211, 210, 212, 214, 206, 195, 194, + 200, 169, 165, 179, 171, 98, 110, 162, 142, 146, 169, 153, 128, 101, 136, 98, + 105, 99, 84, 95, 95, 99, 74, 95, 119, 99, 62, 41, 63, 55, 24, 32, + 40, 31, 36, 58, 53, 33, 26, 30, 53, 54, 41, 46, 33, 24, 34, 32, + 31, 38, 34, 25, 34, 36, 40, 54, 44, 58, 72, 157, 163, 255, 255, 255, + 225, 222, 184, 49, 45, 40, 56, 50, 53, 91, 123, 134, 143, 149, 164, 179, + 180, 174, 201, 206, 213, 216, 213, 208, 211, 215, 214, 217, 213, 213, 218, 211, + 208, 220, 214, 217, 218, 213, 213, 215, 217, 214, 215, 213, 212, 211, 206, 200, + 196, 197, 187, 181, 183, 157, 105, 98, 160, 168, 162, 176, 166, 161, 113, 130, + 109, 118, 127, 92, 92, 94, 103, 77, 92, 116, 109, 80, 51, 52, 38, 23, + 34, 32, 39, 13, 41, 48, 26, 25, 30, 44, 39, 31, 48, 38, 30, 43, + 34, 32, 38, 52, 30, 25, 31, 33, 49, 44, 50, 64, 165, 166, 255, 255, + 255, 222, 218, 165, 53, 29, 31, 45, 44, 79, 129, 151, 161, 168, 168, 178, + 195, 197, 193, 203, 209, 210, 211, 216, 222, 222, 219, 209, 216, 218, 221, 223, + 213, 210, 222, 218, 220, 219, 217, 219, 221, 218, 211, 215, 211, 206, 203, 204, + 204, 201, 196, 176, 185, 188, 157, 126, 93, 139, 162, 159, 163, 155, 175, 126, + 134, 122, 121, 149, 101, 89, 93, 108, 83, 94, 113, 130, 111, 75, 52, 29, + 21, 36, 23, 52, 16, 41, 36, 11, 31, 34, 22, 45, 35, 53, 39, 29, + 42, 32, 31, 40, 67, 38, 24, 31, 32, 46, 43, 43, 45, 161, 179, 255, + 255, 255, 217, 215, 125, 52, 40, 30, 53, 56, 93, 155, 165, 174, 180, 182, + 188, 196, 198, 196, 204, 206, 207, 208, 209, 211, 212, 212, 212, 219, 222, 219, + 214, 212, 216, 221, 223, 222, 220, 219, 218, 216, 213, 210, 213, 219, 221, 213, + 208, 208, 203, 196, 195, 186, 178, 156, 119, 104, 116, 129, 171, 157, 157, 155, + 150, 154, 147, 122, 145, 146, 110, 80, 90, 89, 86, 106, 128, 127, 112, 79, + 46, 27, 28, 33, 53, 55, 33, 15, 23, 23, 22, 37, 49, 43, 33, 28, + 34, 45, 50, 49, 45, 55, 60, 43, 20, 26, 41, 41, 60, 56, 109, 154, + 255, 255, 255, 219, 215, 119, 42, 33, 32, 51, 64, 110, 161, 164, 175, 180, + 181, 181, 186, 190, 190, 197, 199, 200, 200, 204, 209, 215, 219, 217, 216, 214, + 218, 226, 228, 223, 218, 220, 219, 219, 220, 221, 220, 217, 215, 211, 214, 213, + 207, 200, 198, 197, 197, 183, 186, 184, 157, 120, 112, 121, 121, 152, 160, 154, + 152, 163, 154, 135, 133, 140, 171, 144, 90, 85, 101, 105, 111, 95, 107, 117, + 109, 81, 52, 39, 34, 46, 48, 32, 19, 23, 21, 18, 30, 42, 62, 74, + 62, 44, 42, 59, 77, 44, 46, 50, 40, 22, 25, 40, 43, 46, 50, 92, + 150, 202, 255, 255, 218, 213, 118, 39, 36, 43, 51, 78, 136, 169, 166, 177, + 183, 180, 176, 178, 183, 186, 178, 180, 186, 187, 192, 195, 199, 203, 211, 211, + 212, 220, 228, 232, 228, 221, 217, 216, 216, 216, 217, 215, 211, 208, 208, 207, + 203, 198, 188, 182, 185, 192, 178, 181, 172, 135, 100, 106, 125, 128, 130, 152, + 144, 147, 172, 152, 123, 144, 137, 159, 152, 129, 121, 105, 93, 98, 99, 107, + 117, 113, 83, 47, 30, 25, 37, 39, 32, 24, 24, 18, 14, 22, 40, 53, + 63, 59, 52, 51, 56, 59, 48, 39, 39, 36, 23, 23, 35, 41, 36, 45, + 73, 142, 161, 255, 255, 216, 209, 114, 41, 42, 58, 50, 88, 155, 169, 174, + 179, 181, 178, 174, 173, 173, 175, 173, 177, 184, 191, 191, 188, 188, 193, 194, + 205, 214, 219, 218, 219, 224, 229, 220, 219, 217, 217, 215, 208, 201, 196, 205, + 201, 194, 186, 173, 162, 162, 168, 162, 158, 147, 117, 89, 98, 124, 136, 115, + 126, 123, 138, 161, 144, 125, 141, 142, 148, 148, 152, 154, 126, 95, 89, 122, + 123, 130, 126, 98, 63, 47, 47, 37, 35, 33, 29, 24, 16, 14, 21, 34, + 32, 32, 37, 49, 55, 47, 33, 56, 37, 32, 35, 26, 21, 29, 36, 40, + 40, 63, 128, 165, 255, 255, 217, 208, 102, 41, 41, 63, 46, 93, 163, 161, + 176, 171, 164, 161, 157, 151, 146, 142, 142, 144, 150, 157, 158, 157, 163, 173, + 182, 194, 205, 212, 213, 214, 221, 225, 223, 220, 220, 217, 214, 206, 195, 189, + 196, 193, 185, 174, 157, 141, 136, 136, 126, 117, 120, 118, 99, 92, 106, 120, + 105, 92, 99, 124, 134, 133, 128, 126, 144, 165, 164, 148, 150, 156, 136, 109, + 86, 96, 113, 124, 109, 79, 57, 45, 46, 35, 35, 34, 25, 18, 20, 24, + 20, 30, 38, 39, 38, 43, 47, 49, 58, 34, 28, 35, 29, 23, 29, 34, + 47, 34, 58, 111, 181, 255, 255, 220, 210, 101, 52, 39, 65, 52, 107, 172, + 158, 159, 146, 135, 129, 125, 115, 105, 98, 95, 90, 93, 98, 103, 109, 128, + 147, 171, 176, 185, 200, 215, 221, 219, 212, 212, 211, 212, 212, 209, 201, 191, + 182, 185, 183, 175, 157, 142, 129, 118, 108, 101, 83, 84, 93, 81, 73, 85, + 102, 95, 75, 84, 105, 109, 118, 121, 111, 127, 148, 165, 165, 160, 157, 150, + 140, 116, 127, 139, 145, 138, 114, 86, 63, 60, 39, 37, 39, 28, 23, 27, + 26, 16, 28, 36, 33, 29, 34, 46, 54, 52, 30, 26, 33, 31, 28, 33, + 34, 47, 28, 51, 102, 191, 255, 255, 222, 210, 117, 68, 33, 60, 59, 122, + 175, 151, 128, 117, 106, 100, 94, 82, 75, 73, 79, 74, 76, 82, 85, 89, + 109, 131, 144, 154, 173, 195, 213, 219, 213, 203, 206, 205, 207, 208, 206, 197, + 188, 180, 172, 173, 162, 140, 128, 126, 114, 96, 90, 70, 62, 62, 54, 58, + 72, 81, 82, 81, 80, 87, 99, 104, 101, 100, 105, 109, 137, 167, 167, 150, + 146, 150, 140, 146, 145, 138, 133, 121, 96, 64, 71, 41, 39, 44, 33, 28, + 32, 26, 21, 21, 19, 18, 25, 35, 40, 39, 46, 30, 27, 32, 29, 30, + 33, 30, 38, 27, 42, 109, 192, 255, 255, 221, 208, 131, 79, 26, 49, 57, + 123, 166, 133, 100, 93, 85, 82, 75, 65, 64, 67, 73, 71, 76, 84, 82, + 78, 89, 107, 115, 139, 170, 194, 204, 204, 203, 202, 211, 213, 214, 215, 212, + 203, 193, 185, 166, 170, 157, 133, 125, 130, 119, 95, 82, 72, 70, 67, 62, + 68, 70, 60, 75, 97, 84, 74, 99, 98, 83, 99, 91, 101, 115, 126, 139, + 160, 160, 140, 127, 138, 143, 141, 147, 146, 119, 80, 76, 43, 41, 48, 36, + 32, 34, 24, 22, 24, 22, 19, 23, 32, 38, 39, 45, 32, 31, 31, 27, + 27, 30, 22, 30, 30, 37, 119, 189, 255, 255, 215, 210, 156, 70, 35, 35, + 57, 133, 95, 82, 61, 60, 56, 51, 56, 65, 70, 71, 80, 74, 70, 71, + 68, 67, 80, 100, 108, 131, 155, 169, 180, 191, 198, 199, 205, 202, 202, 209, + 211, 202, 192, 187, 182, 168, 156, 150, 138, 122, 118, 122, 108, 93, 89, 91, + 85, 73, 73, 84, 89, 95, 95, 92, 95, 102, 97, 87, 83, 86, 98, 113, + 119, 117, 128, 145, 131, 139, 140, 137, 145, 148, 133, 102, 76, 68, 62, 36, + 41, 49, 26, 42, 26, 26, 22, 16, 18, 24, 27, 26, 38, 24, 27, 21, + 24, 30, 22, 26, 25, 20, 38, 102, 231, 255, 255, 217, 213, 157, 77, 49, + 41, 63, 112, 78, 63, 47, 51, 55, 59, 69, 78, 82, 82, 72, 73, 77, + 84, 88, 85, 87, 89, 105, 124, 147, 168, 183, 192, 189, 184, 192, 194, 199, + 203, 209, 206, 200, 190, 179, 163, 155, 153, 153, 143, 143, 145, 134, 121, 115, + 118, 122, 124, 133, 145, 159, 160, 153, 140, 132, 128, 115, 100, 110, 103, 98, + 99, 96, 90, 99, 113, 133, 134, 133, 136, 152, 161, 148, 115, 75, 61, 63, + 49, 53, 60, 37, 37, 29, 28, 24, 18, 19, 24, 28, 27, 35, 23, 29, + 24, 26, 31, 20, 23, 27, 19, 34, 100, 225, 255, 255, 219, 214, 165, 83, + 53, 36, 65, 85, 71, 60, 65, 77, 91, 104, 118, 128, 130, 125, 120, 124, + 129, 133, 139, 137, 128, 116, 123, 132, 148, 165, 182, 193, 188, 181, 188, 195, + 202, 202, 208, 212, 206, 192, 184, 169, 162, 166, 172, 171, 172, 172, 181, 171, + 162, 158, 162, 169, 177, 181, 178, 183, 181, 173, 167, 164, 154, 140, 127, 116, + 108, 105, 101, 96, 101, 110, 122, 128, 132, 137, 147, 154, 149, 129, 75, 49, + 49, 43, 47, 57, 43, 30, 31, 30, 26, 19, 18, 23, 27, 26, 30, 24, + 32, 27, 27, 31, 19, 21, 26, 15, 27, 95, 214, 255, 255, 220, 215, 184, + 95, 50, 25, 74, 76, 90, 88, 104, 119, 137, 154, 170, 179, 178, 171, 168, + 171, 170, 165, 167, 171, 168, 158, 159, 157, 157, 163, 174, 186, 192, 192, 194, + 206, 212, 206, 210, 215, 208, 192, 190, 180, 176, 178, 182, 182, 185, 188, 180, + 177, 174, 173, 182, 192, 196, 192, 200, 206, 205, 195, 188, 185, 180, 167, 165, + 153, 142, 135, 124, 107, 95, 90, 106, 123, 141, 143, 139, 138, 145, 144, 92, + 51, 38, 31, 31, 47, 48, 30, 32, 32, 28, 21, 19, 22, 27, 26, 29, + 26, 36, 27, 25, 30, 19, 22, 26, 16, 27, 100, 210, 255, 255, 219, 215, + 196, 102, 44, 28, 98, 91, 124, 125, 138, 150, 167, 179, 192, 199, 197, 187, + 188, 188, 185, 175, 173, 180, 184, 179, 174, 170, 166, 163, 167, 176, 191, 202, + 203, 213, 218, 209, 210, 213, 208, 192, 187, 183, 184, 181, 180, 176, 183, 187, + 196, 193, 187, 184, 190, 198, 200, 194, 194, 202, 203, 194, 189, 190, 187, 181, + 178, 169, 159, 150, 138, 122, 105, 96, 103, 119, 137, 146, 145, 142, 150, 154, + 121, 80, 53, 45, 39, 47, 57, 42, 32, 34, 32, 24, 20, 22, 27, 26, + 30, 29, 38, 25, 21, 28, 21, 25, 28, 20, 33, 111, 208, 255, 255, 218, + 215, 187, 100, 33, 42, 123, 105, 140, 141, 161, 170, 179, 186, 193, 196, 193, + 184, 170, 167, 163, 155, 150, 151, 150, 151, 163, 164, 166, 165, 165, 171, 187, + 203, 203, 209, 212, 206, 205, 206, 203, 193, 182, 184, 187, 183, 177, 174, 179, + 184, 175, 168, 158, 154, 156, 160, 166, 168, 176, 188, 194, 188, 186, 189, 190, + 187, 176, 168, 158, 151, 145, 139, 133, 130, 115, 112, 118, 139, 154, 156, 155, + 149, 136, 114, 85, 76, 62, 51, 57, 44, 32, 37, 37, 31, 26, 26, 27, + 27, 29, 31, 41, 26, 19, 27, 21, 26, 23, 18, 33, 114, 255, 255, 255, + 218, 216, 178, 105, 30, 61, 139, 112, 140, 145, 166, 173, 178, 179, 181, 181, + 177, 166, 171, 162, 158, 161, 167, 167, 167, 170, 158, 157, 160, 162, 165, 171, + 187, 204, 206, 205, 207, 202, 201, 196, 195, 192, 182, 183, 187, 181, 178, 173, + 175, 174, 158, 149, 144, 149, 151, 151, 157, 166, 167, 181, 191, 186, 180, 178, + 176, 172, 191, 185, 173, 159, 150, 145, 142, 140, 134, 118, 113, 134, 156, 159, + 154, 149, 141, 141, 112, 102, 83, 50, 48, 43, 35, 40, 44, 39, 33, 30, + 30, 31, 23, 32, 46, 30, 21, 29, 22, 25, 22, 18, 33, 113, 255, 255, + 255, 219, 219, 185, 120, 38, 78, 148, 116, 144, 151, 155, 161, 163, 161, 162, + 159, 153, 141, 115, 100, 101, 119, 141, 152, 161, 169, 164, 160, 159, 160, 165, + 172, 190, 209, 211, 206, 205, 203, 199, 190, 188, 190, 180, 180, 180, 176, 174, + 170, 166, 160, 147, 134, 126, 124, 109, 86, 76, 81, 101, 123, 145, 151, 154, + 160, 162, 162, 173, 173, 168, 162, 158, 158, 158, 159, 152, 136, 129, 143, 155, + 155, 154, 158, 145, 159, 130, 116, 94, 49, 44, 47, 37, 43, 48, 43, 39, + 35, 33, 32, 20, 32, 48, 33, 23, 30, 21, 22, 29, 25, 40, 164, 255, + 255, 255, 218, 218, 189, 105, 49, 121, 145, 136, 150, 151, 134, 147, 119, 148, + 114, 68, 69, 67, 42, 52, 248, 132, 81, 167, 145, 150, 152, 165, 183, 157, + 160, 159, 190, 200, 209, 209, 209, 203, 197, 188, 184, 180, 185, 181, 180, 179, + 180, 177, 171, 164, 149, 95, 135, 159, 161, 95, 98, 84, 89, 69, 43, 54, + 64, 103, 124, 151, 142, 141, 148, 164, 165, 153, 153, 165, 176, 164, 147, 138, + 140, 148, 156, 161, 162, 149, 159, 136, 90, 98, 53, 56, 35, 30, 36, 48, + 56, 51, 41, 37, 32, 33, 32, 38, 43, 33, 25, 34, 43, 22, 114, 255, + 255, 255, 255, 218, 219, 197, 119, 57, 137, 149, 140, 141, 143, 132, 132, 130, + 95, 64, 87, 51, 52, 100, 109, 210, 47, 114, 195, 233, 181, 159, 164, 167, + 169, 166, 174, 189, 210, 211, 210, 208, 203, 197, 192, 189, 187, 178, 175, 175, + 183, 193, 194, 183, 171, 150, 137, 185, 176, 157, 101, 96, 63, 73, 65, 65, + 97, 86, 76, 72, 104, 130, 141, 151, 158, 158, 158, 163, 170, 176, 168, 157, + 151, 150, 153, 156, 159, 172, 159, 169, 147, 107, 113, 70, 65, 37, 32, 34, + 42, 49, 47, 45, 45, 35, 43, 49, 56, 59, 43, 31, 38, 35, 29, 130, + 255, 255, 255, 255, 255, 221, 192, 123, 61, 154, 157, 155, 148, 150, 138, 116, + 110, 61, 56, 119, 72, 63, 77, 82, 45, 102, 146, 211, 185, 206, 161, 158, + 147, 172, 165, 184, 186, 208, 211, 208, 203, 198, 194, 192, 192, 192, 179, 172, + 170, 181, 194, 193, 176, 157, 177, 126, 159, 187, 182, 104, 87, 78, 70, 66, + 82, 144, 156, 132, 74, 53, 89, 113, 133, 138, 143, 156, 164, 166, 173, 174, + 173, 168, 165, 162, 162, 164, 176, 164, 172, 156, 125, 124, 84, 74, 43, 35, + 32, 36, 37, 38, 44, 51, 35, 44, 51, 59, 63, 46, 36, 43, 45, 44, + 255, 255, 255, 255, 255, 255, 223, 187, 126, 62, 164, 161, 168, 155, 162, 133, + 101, 66, 69, 90, 134, 109, 91, 59, 77, 90, 108, 208, 170, 179, 147, 165, + 159, 148, 163, 167, 187, 190, 200, 210, 205, 197, 191, 189, 189, 190, 191, 182, + 174, 169, 175, 185, 185, 171, 156, 165, 137, 151, 154, 163, 136, 125, 97, 105, + 134, 159, 187, 170, 152, 100, 73, 72, 93, 114, 132, 148, 162, 170, 174, 173, + 178, 184, 183, 176, 170, 169, 174, 178, 167, 174, 162, 140, 136, 102, 83, 49, + 39, 33, 30, 28, 30, 39, 47, 38, 39, 38, 47, 56, 49, 43, 52, 77, + 64, 255, 255, 255, 255, 255, 255, 223, 201, 137, 71, 169, 161, 167, 156, 164, + 121, 94, 75, 95, 110, 136, 114, 114, 93, 138, 130, 153, 154, 193, 186, 168, + 173, 173, 172, 159, 178, 191, 206, 197, 211, 204, 194, 188, 186, 187, 188, 188, + 179, 174, 171, 174, 181, 186, 187, 185, 171, 161, 169, 159, 157, 143, 148, 144, + 141, 159, 158, 156, 135, 138, 121, 115, 92, 90, 99, 125, 143, 151, 160, 171, + 180, 185, 191, 188, 179, 172, 170, 175, 183, 174, 180, 168, 156, 145, 121, 95, + 49, 39, 31, 27, 24, 25, 35, 44, 41, 37, 33, 43, 59, 58, 52, 62, + 109, 84, 255, 255, 255, 255, 255, 255, 222, 204, 135, 74, 166, 167, 167, 166, + 174, 133, 122, 150, 135, 121, 155, 116, 142, 144, 130, 148, 171, 168, 177, 181, + 202, 179, 179, 183, 156, 183, 196, 215, 196, 210, 203, 195, 190, 189, 190, 189, + 188, 181, 179, 177, 176, 177, 183, 191, 196, 192, 167, 165, 178, 181, 158, 158, + 179, 165, 152, 137, 155, 153, 160, 147, 150, 143, 122, 115, 129, 143, 146, 155, + 168, 190, 192, 193, 187, 177, 170, 168, 172, 182, 175, 180, 165, 160, 143, 130, + 104, 54, 41, 31, 24, 24, 26, 33, 39, 36, 33, 31, 44, 64, 62, 59, + 68, 122, 104, 255, 255, 255, 255, 255, 255, 219, 194, 124, 73, 159, 173, 170, + 180, 189, 164, 170, 188, 177, 156, 178, 154, 175, 181, 170, 192, 175, 189, 177, + 168, 169, 179, 175, 169, 162, 181, 202, 211, 199, 205, 198, 192, 189, 191, 191, + 189, 186, 183, 183, 181, 178, 175, 175, 179, 183, 180, 191, 178, 163, 178, 199, + 193, 175, 190, 201, 204, 214, 187, 180, 172, 184, 186, 172, 163, 164, 169, 170, + 174, 177, 189, 189, 188, 184, 177, 171, 168, 172, 181, 176, 178, 161, 158, 137, + 137, 109, 69, 50, 35, 26, 24, 23, 28, 31, 25, 26, 27, 39, 58, 62, + 70, 90, 130, 132, 130, 255, 255, 255, 255, 255, 214, 192, 120, 77, 157, 181, + 170, 187, 193, 180, 192, 161, 196, 187, 175, 194, 192, 197, 188, 179, 168, 188, + 169, 160, 185, 180, 171, 152, 172, 180, 212, 207, 207, 198, 192, 188, 188, 191, + 191, 188, 184, 182, 182, 183, 182, 181, 177, 177, 176, 187, 192, 183, 183, 181, + 178, 184, 206, 192, 203, 191, 191, 189, 216, 201, 180, 179, 182, 183, 178, 178, + 181, 175, 166, 182, 181, 182, 181, 178, 175, 172, 174, 184, 178, 181, 163, 163, + 140, 146, 120, 86, 64, 40, 27, 21, 19, 21, 23, 24, 27, 29, 38, 54, + 69, 93, 127, 142, 160, 136, 153, 255, 255, 255, 255, 219, 172, 124, 77, 171, + 174, 194, 176, 191, 189, 188, 186, 184, 182, 180, 180, 179, 183, 181, 180, 181, + 185, 185, 181, 176, 172, 178, 175, 170, 181, 203, 209, 198, 189, 187, 185, 185, + 186, 188, 188, 188, 191, 191, 190, 189, 186, 181, 179, 177, 184, 185, 187, 189, + 190, 191, 191, 191, 183, 189, 196, 198, 199, 197, 194, 188, 189, 188, 185, 184, + 187, 187, 187, 184, 176, 176, 176, 178, 179, 179, 174, 172, 170, 170, 166, 160, + 161, 156, 138, 118, 112, 52, 46, 28, 33, 12, 13, 18, 26, 49, 22, 29, + 62, 95, 149, 169, 175, 193, 203, 181, 172, 255, 255, 255, 215, 177, 126, 81, + 171, 177, 195, 177, 195, 194, 194, 192, 188, 187, 187, 187, 187, 190, 191, 192, + 191, 190, 188, 187, 187, 189, 185, 176, 172, 186, 203, 205, 196, 193, 190, 186, + 185, 185, 185, 185, 185, 189, 190, 191, 190, 187, 184, 183, 183, 186, 185, 187, + 188, 192, 194, 196, 196, 196, 195, 193, 188, 188, 189, 191, 193, 189, 192, 192, + 194, 194, 191, 183, 179, 175, 175, 176, 179, 181, 180, 176, 170, 167, 166, 163, + 159, 161, 157, 141, 123, 111, 70, 60, 22, 19, 15, 16, 11, 37, 36, 44, + 40, 54, 111, 171, 193, 189, 197, 219, 185, 184, 180, 255, 255, 214, 179, 125, + 81, 169, 176, 188, 178, 198, 199, 198, 196, 195, 195, 195, 195, 197, 196, 200, + 202, 199, 196, 193, 194, 198, 200, 186, 174, 177, 192, 203, 203, 197, 188, 186, + 183, 181, 184, 187, 189, 189, 185, 190, 195, 193, 190, 187, 190, 192, 190, 190, + 191, 190, 195, 196, 199, 200, 211, 207, 201, 195, 193, 194, 197, 200, 195, 196, + 195, 196, 195, 193, 186, 183, 176, 177, 177, 180, 181, 179, 174, 168, 167, 164, + 161, 157, 158, 154, 141, 126, 113, 79, 67, 30, 17, 18, 22, 22, 31, 19, + 64, 63, 66, 140, 180, 185, 192, 189, 225, 190, 192, 170, 255, 255, 222, 183, + 128, 85, 165, 173, 184, 181, 202, 198, 198, 197, 196, 196, 197, 199, 200, 199, + 200, 203, 201, 197, 196, 197, 200, 193, 177, 170, 183, 197, 201, 202, 200, 190, + 184, 182, 178, 180, 183, 185, 187, 185, 191, 198, 198, 193, 189, 195, 199, 196, + 195, 193, 193, 195, 196, 199, 199, 211, 209, 208, 207, 205, 200, 198, 199, 202, + 199, 193, 190, 191, 193, 193, 194, 184, 182, 179, 178, 178, 176, 172, 167, 166, + 161, 158, 155, 154, 151, 140, 129, 114, 73, 65, 49, 31, 21, 27, 47, 50, + 54, 94, 102, 112, 166, 184, 170, 187, 181, 217, 201, 192, 173, 183, 255, 255, + 188, 138, 99, 165, 176, 186, 189, 205, 197, 197, 197, 197, 199, 200, 202, 202, + 201, 199, 199, 199, 201, 202, 200, 199, 185, 176, 176, 194, 204, 202, 201, 203, + 197, 190, 183, 177, 176, 175, 177, 178, 187, 193, 200, 200, 195, 192, 197, 201, + 204, 203, 200, 199, 199, 198, 200, 202, 203, 200, 203, 206, 205, 198, 194, 195, + 202, 198, 193, 191, 193, 197, 198, 199, 194, 189, 182, 177, 175, 173, 170, 166, + 162, 156, 154, 153, 152, 148, 140, 132, 111, 80, 73, 61, 35, 33, 37, 59, + 75, 123, 137, 149, 165, 177, 193, 182, 182, 176, 205, 213, 182, 183, 172, 255, + 255, 198, 153, 117, 168, 178, 191, 197, 204, 200, 200, 200, 201, 202, 204, 205, + 206, 204, 201, 199, 202, 205, 205, 202, 197, 188, 185, 189, 202, 210, 206, 201, + 201, 190, 185, 178, 174, 175, 179, 183, 183, 187, 193, 199, 198, 195, 194, 197, + 201, 210, 209, 208, 206, 205, 205, 207, 206, 204, 196, 196, 202, 202, 196, 197, + 202, 195, 195, 197, 200, 203, 203, 199, 196, 199, 193, 185, 179, 175, 173, 170, + 166, 159, 153, 152, 154, 151, 145, 139, 133, 108, 98, 90, 63, 35, 56, 61, + 70, 66, 141, 162, 190, 205, 188, 197, 191, 184, 175, 198, 214, 175, 189, 165, + 255, 255, 206, 169, 134, 166, 177, 192, 199, 197, 205, 204, 204, 203, 206, 206, + 209, 208, 205, 206, 207, 208, 207, 203, 200, 197, 196, 193, 194, 203, 214, 215, + 207, 199, 189, 183, 177, 173, 176, 182, 189, 191, 188, 189, 194, 196, 197, 197, + 199, 200, 210, 210, 212, 210, 210, 210, 211, 210, 208, 200, 199, 206, 207, 200, + 203, 209, 197, 199, 201, 205, 207, 206, 200, 197, 197, 193, 187, 183, 180, 177, + 171, 166, 155, 149, 151, 154, 152, 143, 137, 135, 110, 102, 94, 75, 51, 87, + 97, 111, 108, 136, 171, 204, 214, 213, 205, 189, 185, 169, 199, 203, 176, 191, + 255, 255, 255, 209, 176, 142, 164, 173, 189, 196, 187, 205, 205, 204, 204, 205, + 207, 208, 208, 205, 208, 212, 211, 204, 197, 195, 194, 200, 194, 191, 198, 214, + 220, 211, 198, 201, 194, 184, 177, 174, 177, 181, 183, 186, 188, 190, 194, 197, + 199, 200, 200, 207, 208, 209, 211, 213, 212, 212, 212, 205, 199, 202, 213, 213, + 203, 201, 207, 208, 205, 202, 202, 204, 205, 203, 203, 192, 191, 189, 188, 185, + 180, 173, 166, 153, 148, 150, 154, 151, 142, 137, 135, 115, 93, 86, 92, 76, + 108, 126, 164, 212, 162, 183, 196, 203, 233, 221, 195, 184, 161, 201, 191, 180, + 211, 255, 255, 255, 205, 184, 143, 157, 167, 192, 200, 197, 199, 201, 202, 202, + 203, 205, 209, 211, 200, 202, 203, 199, 197, 197, 197, 192, 192, 191, 194, 202, + 210, 208, 201, 196, 188, 186, 184, 182, 180, 180, 179, 179, 180, 184, 191, 186, + 207, 195, 199, 202, 210, 215, 214, 210, 214, 222, 220, 210, 214, 215, 211, 208, + 216, 225, 221, 207, 215, 212, 213, 215, 212, 204, 197, 197, 198, 192, 185, 182, + 180, 174, 164, 155, 154, 149, 135, 154, 146, 154, 135, 131, 130, 94, 107, 98, + 117, 128, 161, 212, 215, 183, 175, 197, 211, 210, 210, 208, 174, 171, 200, 179, + 190, 255, 255, 255, 255, 219, 196, 150, 161, 169, 189, 196, 193, 201, 203, 205, + 205, 206, 207, 211, 213, 205, 211, 213, 206, 201, 200, 204, 204, 187, 189, 195, + 205, 213, 210, 202, 195, 188, 185, 183, 179, 178, 175, 171, 167, 167, 170, 181, + 181, 208, 200, 204, 205, 210, 214, 216, 216, 219, 223, 221, 217, 216, 220, 216, + 208, 210, 221, 224, 219, 219, 212, 207, 206, 201, 196, 193, 195, 197, 191, 184, + 181, 179, 174, 166, 158, 145, 143, 134, 148, 137, 141, 125, 125, 128, 111, 134, + 131, 148, 152, 174, 209, 225, 196, 186, 198, 209, 213, 212, 203, 184, 171, 190, + 176, 255, 255, 255, 255, 255, 216, 194, 146, 158, 167, 187, 195, 195, 200, 202, + 204, 205, 207, 207, 211, 213, 206, 211, 213, 205, 197, 196, 200, 202, 180, 187, + 196, 206, 213, 211, 201, 192, 180, 178, 178, 180, 182, 179, 173, 166, 158, 160, + 170, 171, 205, 203, 207, 205, 206, 208, 212, 217, 218, 215, 214, 218, 213, 222, + 223, 215, 211, 217, 222, 223, 221, 215, 212, 211, 208, 203, 200, 202, 196, 191, + 183, 179, 177, 173, 166, 160, 143, 143, 138, 148, 137, 137, 128, 129, 120, 121, + 150, 146, 161, 165, 182, 199, 224, 204, 195, 195, 200, 211, 214, 200, 182, 164, + 182, 181, 255, 255, 255, 255, 255, 218, 192, 145, 158, 165, 185, 194, 194, 197, + 199, 201, 202, 203, 205, 207, 209, 203, 207, 208, 202, 197, 196, 194, 192, 180, + 188, 198, 208, 214, 213, 206, 196, 181, 180, 181, 183, 184, 180, 174, 169, 163, + 160, 164, 162, 199, 202, 208, 202, 206, 205, 211, 219, 218, 209, 209, 218, 210, + 219, 227, 224, 219, 217, 216, 213, 204, 202, 205, 210, 209, 203, 196, 196, 197, + 191, 183, 177, 174, 170, 164, 159, 144, 141, 140, 145, 142, 138, 132, 134, 116, + 127, 149, 141, 158, 164, 188, 195, 212, 205, 197, 188, 186, 202, 211, 199, 171, + 156, 186, 255, 255, 255, 255, 255, 255, 228, 200, 150, 162, 167, 182, 187, 190, + 195, 198, 201, 203, 204, 205, 207, 208, 207, 205, 206, 204, 206, 204, 193, 182, + 184, 194, 203, 209, 213, 216, 212, 202, 193, 190, 191, 187, 184, 179, 176, 173, + 172, 165, 160, 153, 192, 199, 209, 204, 213, 212, 216, 223, 220, 212, 213, 219, + 215, 220, 225, 223, 220, 217, 211, 205, 206, 204, 206, 211, 210, 205, 200, 201, + 196, 191, 183, 176, 170, 166, 161, 156, 146, 138, 137, 136, 142, 133, 129, 124, + 117, 131, 149, 142, 163, 172, 201, 200, 208, 206, 199, 183, 176, 194, 205, 192, + 165, 155, 190, 255, 255, 255, 255, 255, 255, 222, 194, 144, 160, 167, 179, 186, + 190, 196, 199, 203, 204, 206, 206, 208, 209, 207, 205, 202, 203, 209, 207, 192, + 174, 184, 196, 205, 207, 212, 216, 212, 202, 193, 194, 192, 187, 183, 183, 188, + 192, 177, 169, 160, 147, 185, 198, 210, 207, 215, 215, 216, 219, 219, 216, 215, + 219, 227, 223, 218, 216, 216, 216, 213, 208, 218, 210, 205, 203, 201, 199, 200, + 205, 191, 188, 182, 175, 169, 163, 158, 154, 151, 139, 140, 134, 141, 127, 125, + 116, 114, 132, 148, 153, 180, 186, 214, 206, 219, 210, 199, 181, 176, 192, 198, + 179, 171, 166, 255, 255, 255, 255, 255, 255, 255, 208, 182, 137, 157, 165, 179, + 188, 191, 196, 198, 203, 204, 204, 205, 208, 209, 206, 203, 200, 199, 202, 200, + 186, 171, 171, 186, 198, 200, 203, 206, 200, 189, 178, 179, 176, 167, 160, 161, + 175, 188, 180, 171, 162, 147, 182, 195, 206, 202, 211, 214, 214, 213, 215, 221, + 222, 220, 227, 222, 218, 217, 216, 216, 214, 214, 208, 199, 191, 188, 186, 185, + 188, 194, 183, 182, 179, 174, 168, 162, 158, 154, 149, 137, 144, 133, 141, 123, + 126, 121, 112, 130, 144, 159, 193, 198, 227, 215, 230, 207, 188, 177, 181, 199, + 195, 168, 172, 175, 255, 255, 255, 255, 255, 255, 255, 215, 186, 139, 159, 164, + 176, 181, 185, 193, 196, 201, 204, 204, 203, 204, 204, 207, 207, 205, 202, 200, + 197, 188, 177, 156, 173, 187, 190, 194, 195, 187, 174, 166, 165, 156, 139, 121, + 120, 135, 150, 180, 175, 166, 149, 180, 191, 201, 195, 212, 217, 215, 211, 218, + 231, 233, 227, 219, 220, 222, 224, 223, 216, 213, 212, 210, 204, 201, 202, 201, + 199, 199, 203, 177, 176, 176, 173, 168, 162, 159, 155, 137, 130, 143, 128, 137, + 119, 128, 128, 122, 135, 145, 166, 203, 207, 239, 227, 232, 200, 173, 171, 188, + 207, 194, 160, 164, 173, 255, 255, 255, 255, 255, 255, 255, 255, 179, 135, 160, + 151, 164, 173, 179, 187, 191, 194, 200, 205, 207, 207, 205, 208, 205, 204, 201, + 201, 197, 189, 182, 178, 166, 167, 173, 167, 169, 173, 171, 143, 156, 161, 141, + 110, 98, 114, 137, 172, 173, 155, 153, 183, 198, 196, 202, 213, 214, 217, 219, + 222, 222, 220, 217, 219, 222, 224, 220, 213, 209, 206, 210, 198, 196, 194, 194, + 194, 193, 186, 182, 179, 178, 174, 167, 161, 155, 154, 153, 137, 129, 128, 134, + 132, 125, 127, 137, 125, 153, 152, 173, 185, 200, 172, 174, 184, 167, 192, 201, + 188, 187, 176, 165, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 133, + 152, 147, 159, 166, 169, 182, 185, 192, 197, 204, 204, 204, 203, 209, 210, 209, + 206, 201, 195, 186, 183, 166, 142, 134, 139, 145, 150, 148, 136, 146, 157, 165, + 161, 151, 152, 164, 179, 172, 169, 162, 169, 191, 201, 201, 203, 217, 216, 216, + 219, 221, 222, 222, 221, 219, 219, 219, 218, 215, 209, 203, 198, 196, 195, 192, + 193, 194, 193, 187, 183, 180, 178, 172, 165, 155, 149, 146, 144, 136, 126, 123, + 127, 127, 120, 122, 130, 125, 152, 149, 161, 168, 187, 182, 200, 189, 182, 209, + 211, 194, 190, 178, 169, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, + 134, 146, 149, 158, 164, 163, 183, 187, 195, 200, 204, 206, 206, 206, 208, 211, + 210, 204, 195, 188, 183, 180, 165, 141, 133, 138, 143, 150, 149, 139, 155, 158, + 164, 171, 178, 181, 183, 185, 166, 157, 167, 188, 199, 205, 212, 209, 219, 216, + 217, 216, 217, 219, 222, 223, 223, 221, 219, 219, 219, 212, 202, 194, 194, 191, + 189, 190, 192, 192, 187, 184, 179, 176, 170, 162, 154, 148, 142, 137, 130, 118, + 116, 121, 125, 120, 120, 125, 140, 147, 136, 151, 174, 200, 199, 207, 191, 191, + 210, 205, 190, 190, 181, 176, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 138, 138, 150, 155, 163, 164, 183, 188, 195, 200, 204, 204, 206, 208, 211, + 209, 201, 194, 188, 182, 178, 176, 166, 156, 159, 162, 158, 160, 168, 168, 162, + 160, 161, 169, 176, 180, 174, 169, 172, 158, 174, 201, 201, 201, 211, 205, 212, + 211, 214, 214, 215, 215, 217, 218, 223, 222, 220, 219, 216, 209, 202, 196, 193, + 191, 188, 187, 189, 187, 184, 180, 176, 172, 165, 160, 155, 149, 144, 137, 126, + 115, 112, 118, 124, 124, 124, 126, 154, 155, 154, 173, 199, 216, 208, 204, 195, + 191, 197, 187, 184, 194, 184, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 195, 143, 128, 148, 150, 163, 162, 177, 184, 190, 193, 197, 195, 197, 202, + 213, 204, 192, 184, 184, 183, 178, 174, 164, 158, 165, 170, 164, 162, 168, 167, + 164, 164, 165, 170, 177, 181, 179, 177, 190, 173, 187, 207, 200, 195, 202, 197, + 204, 206, 213, 216, 216, 214, 215, 218, 222, 221, 219, 214, 207, 200, 199, 198, + 194, 190, 186, 185, 186, 183, 180, 175, 175, 169, 161, 156, 151, 147, 141, 133, + 124, 114, 111, 116, 120, 122, 120, 120, 159, 173, 196, 206, 210, 206, 211, 214, + 208, 197, 191, 180, 188, 194, 174, 164, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 200, 149, 120, 145, 143, 157, 160, 176, 184, 190, 193, 193, 192, 193, + 199, 206, 196, 183, 179, 182, 183, 178, 170, 171, 155, 156, 166, 166, 167, 162, + 148, 162, 164, 166, 168, 169, 171, 174, 180, 188, 179, 185, 196, 199, 199, 204, + 203, 200, 204, 214, 218, 218, 216, 217, 219, 223, 225, 222, 215, 208, 202, 203, + 204, 194, 190, 185, 181, 181, 179, 176, 171, 174, 165, 157, 149, 145, 138, 133, + 124, 122, 115, 113, 113, 116, 115, 116, 115, 184, 183, 204, 211, 214, 205, 216, + 211, 216, 203, 190, 178, 186, 182, 155, 153, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 205, 155, 121, 149, 141, 154, 157, 177, 185, 192, 194, 191, 189, + 191, 195, 186, 180, 174, 174, 178, 177, 171, 163, 176, 159, 158, 165, 167, 166, + 162, 151, 157, 161, 165, 163, 158, 158, 164, 169, 172, 176, 173, 178, 195, 201, + 202, 204, 196, 200, 209, 214, 215, 215, 218, 221, 222, 222, 219, 214, 210, 205, + 203, 200, 192, 186, 181, 179, 180, 179, 176, 172, 173, 163, 151, 142, 140, 136, + 132, 125, 120, 117, 117, 117, 117, 117, 119, 120, 205, 181, 193, 200, 215, 212, + 223, 205, 219, 206, 190, 173, 174, 165, 152, 179, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 209, 164, 126, 154, 142, 155, 157, 173, 180, 188, 189, 185, + 181, 183, 186, 165, 166, 166, 169, 169, 167, 161, 154, 163, 157, 163, 168, 157, + 155, 162, 162, 156, 159, 164, 164, 159, 158, 163, 170, 166, 177, 168, 164, 186, + 191, 184, 187, 190, 196, 203, 207, 209, 211, 216, 222, 214, 209, 207, 206, 206, + 202, 195, 187, 190, 183, 179, 176, 178, 178, 176, 171, 169, 159, 147, 140, 140, + 140, 137, 131, 116, 118, 121, 121, 123, 125, 128, 130, 199, 180, 201, 202, 211, + 204, 224, 216, 221, 207, 190, 168, 164, 158, 169, 225, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 212, 179, 127, 128, 150, 145, 155, 174, 176, 180, 187, + 186, 177, 171, 170, 168, 173, 171, 164, 159, 159, 161, 159, 163, 154, 151, 160, + 167, 167, 161, 155, 169, 172, 162, 170, 158, 173, 161, 161, 164, 160, 159, 165, + 173, 176, 184, 187, 178, 189, 199, 202, 203, 209, 214, 215, 214, 209, 208, 208, + 204, 196, 195, 197, 189, 179, 170, 171, 178, 180, 172, 162, 160, 154, 145, 135, + 135, 139, 136, 125, 123, 119, 125, 130, 126, 121, 130, 149, 201, 212, 207, 199, + 205, 207, 209, 217, 226, 184, 190, 176, 149, 144, 203, 230, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 215, 188, 134, 127, 147, 146, 159, 171, 173, 177, + 181, 176, 165, 160, 161, 156, 159, 157, 153, 153, 158, 162, 162, 160, 155, 155, + 162, 167, 166, 164, 163, 169, 172, 170, 177, 173, 177, 166, 161, 167, 162, 158, + 161, 165, 166, 170, 175, 172, 183, 191, 194, 198, 204, 210, 211, 208, 205, 205, + 206, 202, 193, 189, 190, 187, 180, 174, 173, 177, 173, 164, 154, 159, 153, 143, + 133, 133, 136, 132, 125, 129, 124, 125, 126, 123, 121, 136, 156, 194, 204, 202, + 207, 219, 219, 205, 196, 199, 179, 163, 124, 119, 193, 211, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 217, 197, 143, 126, 139, 141, 156, 167, 172, + 177, 178, 171, 161, 159, 159, 152, 152, 150, 147, 150, 157, 160, 159, 157, 156, + 161, 166, 167, 165, 165, 167, 155, 158, 165, 163, 170, 165, 163, 153, 167, 161, + 158, 160, 163, 163, 164, 168, 163, 172, 178, 183, 191, 201, 208, 209, 208, 206, + 208, 210, 207, 197, 192, 188, 180, 177, 175, 173, 173, 169, 161, 153, 158, 151, + 141, 133, 133, 132, 128, 123, 133, 128, 127, 127, 120, 117, 130, 147, 172, 196, + 208, 209, 210, 205, 200, 205, 187, 154, 117, 53, 110, 214, 214, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 215, 200, 149, 125, 135, 138, 149, 161, + 169, 175, 174, 167, 160, 162, 163, 160, 157, 153, 151, 154, 159, 160, 155, 161, + 161, 167, 173, 175, 171, 168, 170, 168, 166, 177, 165, 179, 169, 176, 166, 161, + 158, 159, 164, 167, 163, 161, 164, 158, 164, 169, 175, 187, 201, 208, 211, 207, + 206, 206, 206, 204, 197, 192, 187, 173, 171, 172, 172, 169, 167, 161, 158, 155, + 147, 139, 132, 133, 133, 129, 124, 130, 130, 130, 130, 121, 112, 115, 123, 131, + 160, 179, 181, 178, 170, 165, 170, 146, 89, 68, 32, 166, 200, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 203, 157, 129, 136, 138, 143, + 155, 163, 169, 167, 161, 158, 158, 161, 160, 160, 157, 157, 161, 166, 167, 163, + 176, 175, 179, 188, 194, 190, 183, 179, 185, 184, 196, 182, 190, 177, 180, 168, + 163, 160, 162, 168, 167, 160, 154, 153, 158, 161, 163, 165, 176, 190, 201, 203, + 202, 202, 198, 195, 193, 190, 186, 180, 174, 172, 170, 167, 165, 163, 161, 160, + 152, 143, 137, 134, 136, 135, 131, 129, 130, 130, 129, 125, 116, 109, 109, 114, + 97, 107, 110, 117, 129, 121, 94, 73, 60, 25, 25, 77, 223, 194, 224, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 210, 168, 133, 138, 140, + 142, 158, 166, 169, 164, 159, 157, 159, 160, 156, 157, 155, 152, 159, 167, 173, + 173, 185, 182, 185, 196, 204, 201, 197, 193, 189, 194, 204, 195, 194, 182, 174, + 163, 170, 166, 165, 167, 163, 152, 144, 141, 160, 162, 159, 158, 163, 176, 188, + 191, 200, 199, 193, 188, 188, 187, 183, 176, 175, 173, 168, 164, 161, 157, 155, + 154, 149, 140, 133, 135, 137, 136, 133, 131, 132, 129, 124, 117, 109, 107, 112, + 116, 103, 96, 74, 59, 63, 58, 43, 31, 19, 15, 17, 127, 211, 195, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 216, 177, 133, 133, + 139, 143, 159, 165, 166, 162, 161, 162, 163, 161, 160, 159, 152, 142, 144, 152, + 163, 169, 171, 172, 175, 182, 188, 189, 194, 196, 190, 197, 198, 200, 190, 191, + 183, 179, 175, 168, 164, 164, 160, 154, 149, 149, 159, 163, 160, 156, 156, 167, + 181, 189, 197, 197, 192, 187, 187, 188, 182, 171, 171, 167, 163, 161, 158, 156, + 151, 147, 148, 139, 131, 135, 137, 134, 128, 130, 125, 124, 118, 110, 103, 103, + 107, 108, 109, 98, 65, 33, 24, 25, 29, 36, 23, 19, 50, 159, 192, 188, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 220, 179, 127, + 126, 136, 141, 147, 154, 155, 152, 155, 162, 165, 164, 173, 171, 156, 139, 131, + 138, 150, 160, 154, 155, 160, 164, 167, 171, 182, 195, 176, 180, 170, 177, 163, + 181, 181, 188, 175, 167, 162, 164, 164, 163, 164, 167, 156, 160, 160, 153, 155, + 167, 182, 192, 186, 189, 187, 183, 184, 184, 174, 160, 162, 157, 156, 158, 159, + 156, 150, 145, 148, 138, 130, 134, 137, 131, 127, 125, 114, 116, 116, 110, 105, + 100, 98, 94, 94, 79, 46, 26, 32, 32, 22, 14, 21, 0, 91, 184, 212, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 201, 205, + 120, 118, 125, 128, 147, 147, 152, 160, 163, 163, 167, 178, 164, 165, 155, 144, + 137, 136, 135, 131, 133, 139, 148, 155, 160, 164, 169, 170, 161, 161, 162, 163, + 167, 171, 179, 180, 188, 177, 169, 167, 162, 156, 158, 166, 157, 153, 153, 158, + 164, 165, 167, 170, 188, 186, 180, 186, 193, 179, 169, 174, 162, 155, 154, 159, + 162, 154, 145, 139, 149, 132, 124, 135, 146, 139, 129, 122, 115, 113, 110, 106, + 106, 109, 107, 100, 105, 60, 30, 27, 21, 18, 18, 15, 27, 31, 149, 192, + 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, + 208, 129, 124, 131, 135, 146, 147, 151, 160, 163, 162, 165, 176, 179, 181, 176, + 165, 160, 158, 154, 150, 151, 150, 146, 144, 144, 148, 158, 162, 158, 153, 152, + 150, 150, 151, 153, 152, 168, 161, 159, 162, 164, 163, 165, 168, 163, 161, 162, + 167, 168, 168, 169, 174, 187, 184, 179, 181, 184, 171, 159, 163, 160, 157, 158, + 162, 160, 152, 146, 145, 146, 135, 129, 134, 140, 138, 128, 118, 113, 106, 102, + 95, 101, 108, 110, 104, 100, 56, 27, 22, 18, 13, 14, 11, 18, 52, 163, + 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 202, 207, 136, 123, 128, 133, 146, 147, 152, 157, 162, 161, 164, 169, 174, 180, + 181, 175, 169, 166, 162, 156, 157, 160, 162, 160, 156, 154, 152, 151, 146, 140, + 138, 139, 140, 141, 139, 134, 129, 127, 135, 147, 157, 158, 155, 152, 156, 154, + 158, 163, 161, 158, 159, 166, 183, 182, 176, 176, 179, 164, 153, 158, 157, 157, + 160, 162, 157, 149, 145, 147, 136, 135, 132, 131, 134, 136, 129, 115, 104, 100, + 97, 95, 101, 108, 109, 101, 88, 47, 24, 20, 16, 12, 13, 11, 39, 115, + 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 204, 207, 145, 120, 120, 123, 143, 145, 150, 156, 160, 162, 163, 162, 162, + 171, 176, 173, 170, 167, 160, 155, 167, 172, 177, 178, 177, 171, 167, 162, 151, + 145, 143, 144, 148, 148, 143, 135, 139, 126, 113, 110, 122, 137, 151, 157, 159, + 159, 166, 170, 166, 164, 166, 174, 177, 178, 174, 174, 177, 166, 159, 162, 156, + 151, 155, 155, 154, 144, 141, 140, 124, 129, 133, 126, 129, 132, 131, 117, 95, + 95, 99, 103, 109, 113, 104, 91, 72, 38, 19, 18, 15, 13, 16, 13, 12, + 132, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 209, 162, 128, 120, 120, 140, 143, 147, 153, 160, 163, 164, 158, + 155, 164, 173, 175, 173, 169, 163, 158, 178, 179, 177, 175, 175, 176, 182, 183, + 176, 168, 163, 162, 164, 160, 153, 146, 150, 142, 137, 136, 142, 149, 150, 145, + 156, 157, 164, 168, 167, 165, 169, 177, 171, 175, 171, 169, 172, 165, 160, 164, + 158, 149, 147, 149, 150, 143, 136, 132, 119, 128, 132, 125, 124, 127, 125, 113, + 93, 91, 96, 101, 109, 110, 100, 86, 56, 30, 17, 17, 15, 15, 21, 18, + 14, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 209, 179, 138, 124, 121, 137, 141, 145, 150, 158, 163, 163, + 153, 151, 161, 172, 173, 174, 169, 164, 161, 170, 175, 178, 179, 177, 178, 178, + 179, 180, 176, 174, 174, 174, 172, 167, 162, 156, 162, 167, 172, 173, 169, 157, + 142, 154, 152, 156, 162, 162, 162, 166, 173, 169, 175, 170, 164, 167, 159, 154, + 158, 160, 150, 145, 147, 149, 142, 133, 128, 125, 130, 132, 128, 123, 119, 114, + 105, 94, 88, 89, 92, 101, 106, 99, 87, 46, 25, 16, 17, 13, 16, 23, + 19, 54, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 194, 148, 128, 122, 135, 140, 144, 148, 155, 161, + 159, 147, 146, 157, 168, 172, 168, 166, 164, 161, 157, 166, 175, 179, 178, 175, + 169, 166, 174, 174, 174, 173, 172, 171, 171, 170, 175, 171, 163, 155, 155, 166, + 176, 177, 171, 165, 166, 170, 173, 172, 177, 182, 166, 174, 169, 161, 162, 156, + 151, 154, 156, 148, 144, 144, 141, 133, 126, 123, 130, 128, 128, 129, 123, 113, + 106, 100, 92, 86, 87, 89, 100, 107, 101, 89, 42, 25, 19, 18, 14, 16, + 22, 17, 62, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 240, 160, 136, 127, 135, 141, 144, 146, 152, + 159, 155, 142, 149, 158, 171, 172, 170, 168, 165, 162, 157, 159, 159, 158, 159, + 159, 163, 167, 175, 176, 174, 169, 164, 160, 159, 159, 145, 155, 164, 167, 169, + 175, 175, 168, 171, 164, 162, 165, 169, 168, 172, 175, 165, 172, 168, 159, 160, + 155, 151, 156, 149, 146, 145, 142, 135, 123, 120, 121, 131, 124, 125, 129, 126, + 112, 105, 102, 86, 85, 90, 97, 109, 113, 102, 87, 42, 27, 21, 20, 14, + 15, 20, 15, 98, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 167, 133, 113, 137, 124, 157, + 142, 135, 148, 154, 143, 155, 164, 171, 175, 165, 161, 171, 147, 151, 149, 146, + 147, 148, 140, 133, 143, 148, 149, 146, 144, 146, 156, 162, 148, 154, 161, 167, + 172, 176, 175, 166, 159, 164, 157, 174, 164, 178, 171, 176, 173, 166, 158, 156, + 159, 160, 157, 151, 148, 152, 137, 133, 135, 131, 130, 108, 104, 114, 123, 119, + 113, 107, 105, 98, 83, 82, 89, 98, 110, 112, 96, 75, 34, 27, 19, 18, + 25, 20, 18, 28, 105, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 145, 123, 119, 133, + 137, 144, 138, 136, 145, 153, 155, 153, 164, 179, 175, 164, 165, 157, 158, 152, + 143, 138, 135, 129, 123, 129, 134, 137, 140, 143, 146, 148, 149, 161, 167, 173, + 173, 174, 175, 173, 166, 158, 163, 157, 169, 160, 171, 164, 168, 171, 164, 158, + 154, 153, 152, 148, 144, 143, 145, 132, 127, 124, 115, 124, 112, 119, 121, 122, + 114, 110, 104, 101, 91, 89, 89, 94, 101, 109, 108, 89, 67, 34, 27, 12, + 4, 9, 10, 15, 27, 100, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 163, 131, 104, + 132, 119, 143, 139, 124, 133, 152, 155, 153, 160, 176, 174, 166, 168, 166, 163, + 155, 144, 134, 128, 124, 125, 139, 138, 137, 141, 148, 156, 161, 163, 175, 182, + 185, 180, 174, 171, 169, 163, 158, 161, 157, 165, 158, 164, 159, 159, 160, 157, + 154, 150, 147, 144, 142, 140, 136, 137, 125, 122, 112, 100, 115, 117, 121, 118, + 112, 103, 100, 97, 92, 83, 99, 101, 103, 108, 113, 107, 84, 62, 31, 31, + 20, 9, 15, 15, 12, 15, 85, 202, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 127, + 105, 116, 114, 133, 132, 121, 127, 136, 154, 160, 162, 167, 166, 167, 176, 169, + 165, 156, 145, 133, 129, 131, 136, 145, 148, 153, 158, 165, 171, 177, 178, 179, + 186, 186, 177, 165, 160, 159, 157, 158, 159, 156, 159, 157, 159, 155, 156, 149, + 149, 149, 147, 144, 140, 140, 138, 132, 131, 117, 120, 110, 95, 110, 118, 111, + 110, 105, 97, 93, 93, 90, 86, 106, 109, 111, 114, 118, 108, 86, 61, 19, + 20, 12, 4, 15, 17, 12, 9, 71, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 192, + 121, 120, 96, 118, 117, 118, 122, 123, 127, 147, 155, 158, 165, 166, 166, 176, + 170, 166, 159, 149, 140, 136, 139, 146, 134, 150, 167, 178, 182, 179, 177, 176, + 177, 182, 180, 169, 157, 153, 153, 151, 152, 151, 151, 150, 153, 150, 152, 149, + 145, 144, 144, 142, 138, 136, 136, 135, 130, 124, 110, 116, 111, 98, 108, 110, + 101, 106, 105, 98, 91, 91, 93, 96, 106, 110, 115, 118, 118, 111, 86, 64, + 30, 25, 10, 3, 16, 25, 25, 27, 89, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 132, 133, 90, 117, 105, 106, 120, 120, 126, 136, 137, 145, 166, 173, 169, + 168, 173, 167, 161, 153, 148, 142, 144, 150, 149, 157, 168, 171, 171, 173, 179, + 185, 173, 175, 171, 161, 152, 150, 151, 147, 143, 140, 146, 139, 148, 140, 146, + 142, 146, 144, 140, 136, 133, 131, 128, 127, 124, 122, 106, 111, 111, 102, 109, + 104, 96, 102, 103, 95, 88, 89, 94, 100, 104, 111, 118, 120, 119, 108, 85, + 62, 38, 31, 20, 16, 23, 21, 17, 26, 132, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 157, 137, 106, 102, 100, 102, 107, 113, 119, 127, 128, 134, 156, 168, + 168, 169, 173, 167, 161, 158, 156, 151, 149, 153, 167, 167, 166, 165, 167, 173, + 182, 190, 171, 171, 165, 155, 151, 151, 150, 145, 140, 135, 144, 132, 145, 132, + 141, 134, 144, 138, 130, 126, 126, 126, 125, 122, 117, 119, 103, 103, 102, 100, + 108, 99, 95, 97, 93, 86, 83, 89, 97, 104, 113, 120, 127, 126, 121, 109, + 83, 59, 33, 24, 15, 13, 14, 11, 26, 56, 172, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 132, 124, 89, 101, 102, 97, 107, 110, 128, 132, 133, 144, + 155, 165, 178, 168, 160, 155, 158, 159, 155, 153, 155, 157, 163, 171, 179, 183, + 180, 173, 166, 165, 163, 154, 146, 145, 147, 146, 140, 142, 135, 144, 131, 144, + 130, 138, 132, 139, 131, 123, 120, 123, 126, 126, 124, 113, 121, 106, 97, 95, + 96, 108, 98, 100, 97, 89, 83, 87, 100, 108, 113, 121, 129, 134, 131, 124, + 107, 82, 58, 57, 38, 18, 11, 17, 37, 93, 161, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 145, 137, 117, 105, 115, 106, 108, 115, 131, 130, 129, + 144, 145, 145, 165, 167, 162, 159, 161, 160, 155, 152, 155, 159, 161, 163, 166, + 165, 160, 149, 142, 143, 146, 136, 140, 140, 134, 141, 135, 135, 129, 128, 131, + 129, 125, 126, 133, 122, 122, 113, 113, 126, 129, 124, 127, 117, 121, 104, 107, + 93, 109, 98, 97, 96, 90, 86, 91, 98, 103, 108, 115, 122, 122, 121, 122, + 121, 107, 80, 57, 51, 28, 12, 10, 27, 36, 134, 204, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 139, 121, 107, 101, 106, 100, 108, 125, 128, + 130, 145, 146, 145, 160, 164, 159, 156, 157, 157, 152, 152, 157, 162, 163, 162, + 165, 165, 162, 156, 150, 142, 145, 135, 137, 136, 130, 138, 132, 133, 129, 127, + 129, 128, 124, 126, 131, 132, 131, 121, 118, 128, 127, 118, 120, 122, 124, 110, + 106, 100, 107, 101, 98, 99, 93, 92, 99, 106, 110, 115, 120, 129, 134, 134, + 127, 121, 108, 88, 65, 37, 36, 13, 13, 24, 93, 162, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 151, 130, 116, 97, 111, 101, 107, 123, + 129, 134, 143, 141, 137, 143, 157, 154, 152, 155, 155, 153, 155, 161, 169, 168, + 165, 163, 162, 163, 160, 157, 145, 147, 137, 140, 138, 131, 138, 132, 131, 126, + 124, 124, 123, 121, 122, 126, 119, 122, 116, 118, 129, 129, 122, 125, 120, 114, + 110, 96, 99, 97, 98, 92, 100, 97, 98, 107, 114, 117, 119, 125, 132, 143, + 143, 128, 117, 107, 91, 69, 27, 40, 11, 14, 24, 157, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 134, 123, 106, 109, 109, 108, + 120, 128, 133, 139, 137, 135, 137, 150, 150, 153, 157, 158, 155, 156, 161, 174, + 173, 168, 163, 159, 156, 155, 152, 141, 146, 135, 140, 139, 131, 138, 132, 129, + 125, 121, 120, 120, 120, 121, 123, 107, 112, 111, 117, 130, 131, 124, 128, 118, + 107, 107, 89, 98, 89, 96, 89, 97, 99, 103, 112, 119, 120, 122, 127, 128, + 140, 140, 123, 113, 105, 89, 64, 29, 29, 9, 23, 47, 187, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 126, 117, 94, 108, + 101, 108, 121, 131, 135, 141, 145, 145, 144, 146, 153, 160, 160, 155, 155, 159, + 167, 167, 165, 160, 155, 149, 145, 143, 137, 143, 133, 139, 138, 130, 137, 130, + 125, 122, 117, 115, 117, 120, 121, 120, 114, 120, 118, 120, 129, 125, 116, 118, + 118, 105, 105, 88, 101, 88, 100, 95, 100, 102, 111, 120, 125, 124, 127, 131, + 129, 135, 134, 122, 117, 110, 92, 66, 38, 17, 25, 60, 104, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 139, 129, 93, + 107, 106, 106, 118, 130, 130, 137, 145, 140, 139, 143, 151, 158, 157, 150, 150, + 156, 155, 159, 158, 155, 150, 144, 141, 139, 135, 140, 132, 138, 137, 128, 135, + 127, 122, 119, 114, 110, 114, 120, 122, 119, 122, 128, 125, 124, 130, 123, 113, + 113, 114, 102, 96, 87, 93, 89, 96, 98, 107, 111, 119, 128, 132, 132, 133, + 139, 134, 134, 132, 127, 126, 118, 103, 85, 53, 34, 65, 120, 165, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 161, 132, + 111, 103, 111, 106, 118, 130, 126, 132, 138, 129, 136, 139, 145, 149, 147, 142, + 145, 151, 149, 153, 153, 151, 147, 142, 140, 140, 138, 143, 134, 138, 136, 126, + 131, 123, 117, 115, 110, 106, 111, 120, 122, 118, 121, 127, 125, 123, 128, 121, + 111, 113, 107, 98, 85, 90, 86, 91, 91, 99, 115, 118, 125, 134, 136, 136, + 138, 143, 136, 132, 130, 130, 128, 118, 113, 109, 83, 87, 115, 171, 194, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, + 127, 125, 98, 104, 98, 114, 128, 125, 133, 140, 127, 135, 136, 140, 140, 137, + 135, 140, 148, 149, 151, 151, 146, 142, 139, 139, 140, 140, 145, 136, 139, 136, + 125, 128, 119, 115, 113, 108, 104, 110, 120, 123, 118, 125, 131, 126, 122, 124, + 115, 104, 104, 108, 101, 84, 95, 86, 99, 94, 106, 118, 121, 129, 136, 138, + 136, 139, 144, 134, 127, 127, 129, 125, 113, 116, 125, 113, 138, 148, 195, 214, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 146, 121, 124, 95, 106, 114, 122, 130, 126, 125, 136, 125, 122, 130, 136, + 135, 140, 148, 144, 149, 153, 147, 137, 136, 144, 142, 134, 137, 135, 131, 126, + 130, 134, 131, 122, 114, 114, 108, 102, 109, 122, 125, 119, 130, 123, 116, 116, + 118, 114, 101, 88, 94, 89, 89, 90, 91, 95, 106, 120, 135, 134, 133, 138, + 143, 146, 143, 138, 136, 124, 133, 129, 119, 112, 118, 148, 181, 192, 194, 192, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 224, 131, 122, 112, 105, 102, 116, 128, 123, 124, 138, 125, 121, 128, + 132, 129, 132, 139, 136, 145, 146, 144, 138, 137, 139, 139, 135, 139, 140, 135, + 128, 126, 126, 121, 113, 112, 110, 106, 105, 111, 120, 123, 120, 115, 118, 119, + 115, 106, 98, 93, 90, 79, 78, 82, 88, 92, 100, 115, 128, 135, 136, 140, + 145, 151, 152, 149, 144, 141, 125, 133, 130, 124, 119, 120, 143, 197, 203, 199, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 152, 131, 126, 104, 96, 113, 128, 124, 122, 131, 131, 125, + 131, 131, 127, 131, 137, 133, 138, 136, 137, 138, 136, 132, 134, 136, 137, 139, + 138, 130, 123, 118, 114, 109, 109, 103, 102, 108, 114, 116, 117, 118, 109, 112, + 114, 109, 100, 91, 87, 87, 82, 82, 89, 96, 102, 108, 121, 133, 133, 137, + 144, 149, 150, 149, 145, 143, 140, 124, 130, 127, 126, 123, 118, 132, 208, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 151, 130, 108, 100, 112, 121, 125, 124, 121, 132, + 125, 130, 130, 125, 128, 134, 130, 131, 127, 131, 138, 136, 127, 128, 136, 132, + 135, 138, 132, 123, 116, 116, 114, 105, 98, 100, 111, 116, 112, 111, 116, 114, + 108, 102, 100, 101, 96, 86, 77, 86, 90, 98, 107, 114, 119, 129, 140, 141, + 146, 149, 150, 148, 143, 141, 139, 138, 127, 134, 129, 127, 125, 117, 125, 206, + 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 229, 139, 120, 109, 105, 104, 117, 129, 120, + 123, 117, 123, 123, 119, 122, 128, 124, 126, 121, 125, 132, 132, 125, 125, 132, + 129, 132, 134, 132, 123, 115, 118, 119, 102, 96, 100, 111, 114, 108, 106, 110, + 107, 100, 93, 91, 91, 89, 83, 77, 82, 87, 100, 116, 126, 130, 141, 150, + 152, 154, 154, 151, 148, 143, 145, 146, 138, 133, 143, 134, 128, 127, 119, 124, + 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 166, 133, 116, 103, 89, 105, 127, + 123, 120, 115, 120, 123, 118, 120, 125, 120, 123, 118, 119, 124, 128, 124, 123, + 124, 130, 129, 130, 126, 120, 111, 114, 117, 100, 99, 103, 109, 109, 105, 101, + 102, 87, 90, 91, 85, 77, 75, 82, 90, 97, 104, 117, 131, 139, 140, 146, + 152, 155, 153, 150, 148, 145, 145, 145, 145, 135, 134, 144, 130, 125, 125, 116, + 117, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 141, 121, 118, 97, 96, + 116, 118, 119, 115, 121, 125, 120, 120, 123, 115, 120, 118, 116, 117, 123, 127, + 124, 116, 125, 123, 121, 118, 114, 106, 109, 113, 100, 104, 107, 105, 104, 102, + 99, 94, 81, 86, 87, 83, 78, 82, 95, 107, 118, 124, 138, 148, 151, 147, + 148, 153, 155, 152, 147, 146, 145, 144, 140, 137, 137, 135, 141, 127, 125, 130, + 117, 110, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 124, 138, 116, + 94, 103, 109, 116, 112, 118, 122, 115, 113, 113, 106, 120, 120, 116, 112, 121, + 129, 125, 111, 119, 113, 110, 111, 108, 103, 105, 112, 100, 108, 110, 103, 100, + 101, 97, 89, 92, 86, 82, 83, 92, 104, 113, 118, 119, 127, 141, 154, 156, + 153, 152, 157, 162, 158, 152, 152, 151, 147, 139, 133, 151, 145, 146, 132, 133, + 142, 125, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 178, 137, + 133, 129, 113, 75, 104, 111, 116, 117, 113, 109, 112, 116, 117, 115, 114, 113, + 111, 105, 104, 107, 110, 107, 105, 103, 103, 105, 107, 108, 98, 101, 104, 101, + 94, 84, 76, 72, 87, 100, 105, 106, 114, 119, 126, 144, 137, 146, 152, 153, + 151, 150, 157, 162, 158, 170, 169, 154, 148, 151, 148, 137, 149, 151, 149, 144, + 136, 130, 127, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, + 160, 142, 139, 130, 104, 113, 115, 117, 116, 113, 110, 104, 102, 118, 118, 121, + 124, 120, 111, 105, 102, 103, 103, 104, 103, 100, 93, 88, 83, 94, 87, 78, + 69, 69, 76, 88, 98, 97, 112, 119, 124, 131, 129, 130, 143, 145, 150, 154, + 158, 160, 162, 164, 165, 155, 162, 161, 153, 151, 155, 152, 144, 144, 146, 147, + 144, 139, 133, 127, 124, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 185, 141, 137, 131, 124, 104, 101, 97, 101, 108, 113, 114, 115, 128, 120, + 109, 101, 99, 100, 107, 115, 95, 97, 101, 104, 105, 103, 100, 97, 84, 83, + 83, 83, 88, 97, 108, 118, 115, 129, 134, 136, 141, 138, 137, 149, 157, 159, + 161, 165, 170, 172, 169, 167, 163, 160, 156, 155, 154, 152, 146, 143, 144, 145, + 146, 144, 141, 135, 127, 118, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 207, 139, 132, 133, 138, 140, 129, 112, 101, 93, 92, 93, 93, 94, + 95, 95, 98, 97, 89, 85, 86, 102, 96, 91, 84, 79, 76, 76, 76, 96, + 105, 116, 125, 129, 130, 130, 129, 133, 141, 142, 140, 146, 147, 150, 163, 168, + 170, 172, 173, 174, 172, 169, 166, 168, 157, 152, 157, 159, 152, 147, 148, 152, + 149, 145, 144, 141, 135, 126, 117, 129, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 132, 129, 146, 152, 166, 159, 145, 127, 113, 102, 97, 96, + 100, 96, 94, 94, 92, 84, 81, 82, 76, 75, 77, 82, 91, 105, 118, 126, + 132, 136, 139, 140, 139, 139, 142, 143, 143, 151, 151, 150, 157, 159, 163, 175, + 168, 174, 177, 175, 170, 165, 165, 166, 166, 154, 150, 158, 163, 157, 153, 157, + 155, 153, 147, 144, 144, 139, 132, 124, 114, 204, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 144, 143, 153, 158, 161, 162, 158, 152, 148, + 145, 152, 137, 120, 107, 102, 104, 113, 122, 137, 137, 137, 138, 140, 140, 140, + 141, 153, 155, 154, 151, 147, 145, 147, 148, 150, 161, 166, 169, 177, 176, 172, + 179, 168, 173, 176, 173, 165, 161, 164, 168, 172, 162, 157, 160, 160, 154, 150, + 153, 152, 150, 148, 146, 145, 143, 139, 135, 108, 151, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 164, 170, 177, 181, 178, + 171, 163, 160, 157, 157, 158, 153, 141, 134, 131, 145, 148, 153, 158, 162, 163, + 163, 165, 157, 158, 159, 157, 155, 154, 158, 160, 165, 174, 176, 177, 184, 181, + 175, 182, 178, 179, 177, 173, 168, 166, 167, 169, 171, 167, 163, 159, 155, 151, + 149, 150, 148, 149, 151, 150, 148, 143, 141, 140, 115, 130, 202, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 186, 181, 172, 161, 158, 159, 162, 159, 152, 145, 144, 148, 148, 152, 155, 158, + 161, 162, 163, 163, 160, 153, 147, 148, 158, 171, 181, 180, 186, 180, 176, 182, + 179, 178, 184, 194, 189, 182, 177, 174, 172, 170, 168, 154, 157, 157, 155, 154, + 158, 161, 162, 145, 150, 154, 153, 149, 142, 138, 136, 125, 122, 188, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 228, 168, 163, 158, 153, 148, 144, 146, 146, 149, 152, + 153, 153, 150, 150, 151, 154, 163, 174, 177, 174, 174, 179, 183, 177, 175, 183, + 189, 185, 182, 180, 187, 188, 183, 175, 173, 174, 171, 164, 164, 159, 154, 154, + 158, 160, 158, 155, 149, 152, 152, 149, 149, 150, 150, 144, 123, 125, 136, 212, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 220, 151, 154, 154, 154, 168, 166, 169, 173, 173, 167, 167, 171, 184, 180, 181, + 189, 193, 191, 189, 190, 189, 189, 185, 178, 176, 176, 173, 166, 167, 163, 158, + 157, 160, 160, 156, 152, 159, 160, 157, 150, 148, 149, 147, 141, 123, 108, 122, + 187, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 225, 165, 169, 170, 170, 176, 183, 188, 186, + 189, 193, 197, 195, 194, 194, 187, 186, 183, 178, 176, 176, 172, 166, 165, 162, + 160, 160, 162, 162, 158, 154, 163, 163, 159, 151, 149, 150, 146, 142, 121, 106, + 125, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 235, 191, 190, 189, 184, 181, 179, 176, 174, 172, 167, 163, 159, + 158, 158, 161, 164, 164, 162, 158, 159, 161, 161, 156, 155, 188, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 225, 224, 227, 226, 225, 226, 226, 225, 221, 218, + 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 225, 225, 223, 220, 220, 222, 232, 231, 230, 230, 229, 226, 220, + 216, 220, 221, 229, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, + 215, 228, 218, 222, 222, 221, 224, 230, 232, 229, 222, 218, 216, 218, 222, 222, + 217, 212, 223, 221, 219, 222, 226, 228, 226, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 202, + 227, 237, 213, 222, 192, 146, 109, 99, 110, 123, 129, 159, 148, 137, 135, 144, + 161, 175, 183, 189, 193, 199, 210, 220, 226, 226, 224, 233, 230, 223, 217, 223, + 232, 227, 216, 227, 200, 188, 203, 218, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 231, 230, + 232, 233, 211, 170, 129, 100, 61, 37, 40, 57, 68, 69, 61, 55, 50, 50, + 58, 68, 74, 78, 91, 101, 122, 151, 182, 209, 226, 235, 235, 237, 225, 209, + 209, 217, 206, 185, 202, 197, 201, 204, 195, 185, 218, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 225, 218, + 219, 226, 188, 136, 100, 58, 50, 41, 41, 50, 56, 47, 34, 46, 47, 50, + 54, 56, 53, 46, 40, 48, 52, 62, 79, 101, 126, 145, 158, 164, 205, 232, + 213, 174, 160, 177, 199, 176, 186, 189, 186, 190, 202, 204, 197, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 229, 228, 208, + 238, 207, 143, 87, 86, 45, 43, 42, 38, 36, 40, 43, 37, 28, 34, 33, + 33, 34, 35, 38, 39, 39, 50, 48, 45, 43, 46, 52, 60, 66, 82, 74, + 79, 101, 120, 126, 124, 124, 126, 149, 169, 175, 183, 195, 196, 187, 212, 222, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 234, 235, 212, + 253, 205, 177, 56, 75, 37, 47, 32, 32, 28, 24, 28, 36, 42, 43, 32, + 32, 33, 34, 36, 40, 43, 45, 35, 38, 41, 43, 44, 44, 45, 46, 43, + 40, 49, 64, 65, 64, 83, 110, 94, 116, 148, 169, 166, 159, 170, 188, 197, + 197, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 227, 229, 231, 233, + 226, 229, 195, 50, 100, 32, 45, 38, 33, 35, 34, 30, 30, 34, 34, 31, + 22, 25, 29, 32, 31, 30, 29, 28, 34, 38, 44, 46, 44, 41, 39, 38, + 47, 39, 34, 34, 33, 34, 46, 61, 98, 88, 92, 121, 153, 167, 165, 159, + 179, 186, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 227, 225, 224, 224, + 226, 220, 200, 107, 70, 29, 48, 17, 27, 24, 26, 27, 27, 31, 37, 34, + 30, 23, 23, 22, 21, 20, 24, 29, 32, 30, 33, 34, 34, 32, 32, 34, + 37, 23, 37, 43, 33, 22, 26, 43, 58, 58, 69, 76, 85, 117, 158, 175, + 167, 163, 173, 213, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 230, 207, 229, 217, + 217, 224, 211, 136, 58, 31, 34, 34, 27, 23, 24, 25, 27, 30, 32, 33, + 30, 28, 23, 22, 18, 15, 21, 34, 39, 36, 33, 34, 35, 37, 38, 35, + 30, 26, 29, 30, 29, 24, 21, 25, 36, 45, 44, 52, 63, 79, 104, 131, + 144, 146, 158, 158, 219, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 236, 206, 233, 230, 216, + 220, 214, 130, 59, 40, 26, 27, 30, 26, 23, 25, 31, 28, 25, 25, 25, + 25, 21, 18, 17, 20, 21, 21, 26, 35, 37, 34, 32, 27, 23, 26, 32, + 34, 30, 25, 38, 35, 32, 29, 29, 33, 39, 44, 34, 40, 49, 65, 88, + 110, 117, 115, 143, 146, 203, 220, 221, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 234, 234, 233, 238, 222, + 238, 215, 138, 29, 33, 38, 40, 35, 24, 18, 20, 24, 27, 22, 17, 18, + 23, 26, 25, 22, 12, 19, 26, 29, 31, 34, 34, 32, 30, 22, 16, 18, + 27, 33, 31, 27, 37, 33, 28, 27, 29, 32, 33, 33, 27, 29, 34, 47, + 68, 89, 97, 97, 138, 148, 200, 233, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 245, 234, 208, 223, 204, 227, + 212, 137, 37, 30, 52, 44, 42, 30, 17, 17, 28, 35, 35, 24, 19, 16, + 19, 26, 29, 27, 23, 15, 22, 30, 32, 31, 30, 30, 29, 28, 24, 20, + 21, 25, 30, 31, 31, 31, 29, 27, 25, 25, 26, 26, 25, 32, 31, 32, + 37, 49, 64, 77, 84, 109, 126, 180, 233, 214, 232, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 234, 221, 221, 233, 222, 202, + 110, 23, 55, 52, 27, 19, 27, 26, 19, 14, 24, 39, 40, 29, 27, 24, + 22, 24, 26, 25, 19, 14, 24, 27, 31, 31, 28, 24, 24, 27, 22, 25, + 28, 27, 24, 24, 27, 30, 28, 32, 34, 31, 27, 24, 27, 30, 35, 37, + 40, 40, 40, 43, 52, 62, 59, 82, 130, 201, 202, 224, 236, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 243, 234, 218, 216, 227, 180, + 60, 39, 52, 35, 23, 52, 28, 29, 34, 33, 27, 25, 28, 26, 20, 20, + 20, 22, 24, 25, 23, 19, 16, 32, 29, 28, 28, 24, 20, 21, 24, 17, + 24, 31, 29, 21, 17, 21, 26, 25, 30, 34, 32, 26, 24, 28, 33, 24, + 31, 42, 49, 48, 45, 48, 55, 52, 69, 99, 170, 201, 215, 231, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 244, 240, 226, 200, 223, 251, 191, 93, + 46, 27, 46, 47, 39, 16, 26, 22, 21, 24, 23, 19, 16, 18, 24, 28, + 16, 19, 23, 24, 24, 24, 26, 27, 34, 27, 23, 24, 23, 19, 18, 21, + 16, 22, 26, 25, 20, 17, 20, 24, 22, 24, 26, 26, 24, 24, 27, 30, + 23, 24, 32, 44, 49, 47, 47, 51, 58, 66, 78, 137, 191, 182, 197, 211, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 246, 233, 213, 219, 244, 226, 150, 72, + 33, 45, 50, 46, 18, 32, 29, 34, 27, 31, 29, 26, 28, 28, 26, 25, + 26, 27, 30, 31, 28, 22, 21, 24, 28, 33, 25, 20, 23, 24, 20, 18, + 19, 20, 21, 23, 22, 21, 21, 23, 25, 24, 22, 21, 23, 27, 30, 30, + 30, 37, 27, 21, 27, 33, 33, 32, 34, 35, 40, 43, 97, 166, 134, 143, + 160, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 247, 236, 221, 222, 230, 241, 100, 16, + 54, 48, 33, 32, 30, 28, 28, 28, 28, 28, 22, 26, 26, 22, 20, 22, + 24, 24, 25, 27, 25, 18, 17, 22, 24, 20, 32, 22, 20, 26, 26, 16, + 12, 16, 24, 25, 22, 17, 17, 22, 25, 24, 23, 22, 22, 22, 24, 26, + 27, 27, 31, 24, 21, 25, 31, 34, 37, 41, 40, 23, 54, 70, 141, 140, + 161, 147, 191, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 232, 234, 238, 218, 247, 194, 26, 41, + 52, 32, 38, 43, 39, 33, 28, 24, 22, 22, 22, 28, 25, 21, 22, 24, + 24, 23, 22, 23, 25, 24, 18, 18, 22, 23, 20, 29, 21, 20, 25, 23, + 14, 11, 16, 20, 22, 20, 16, 16, 20, 22, 20, 20, 20, 19, 20, 22, + 23, 24, 24, 28, 23, 20, 24, 28, 30, 34, 39, 37, 29, 46, 43, 72, + 68, 94, 99, 146, 195, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 227, 228, 231, 233, 244, 191, 41, 29, + 31, 39, 29, 42, 37, 34, 29, 25, 23, 24, 26, 28, 34, 23, 16, 22, + 26, 23, 20, 20, 20, 22, 22, 19, 19, 21, 21, 19, 23, 18, 18, 22, + 19, 11, 10, 15, 17, 20, 20, 17, 17, 20, 20, 17, 19, 20, 20, 21, + 21, 22, 23, 23, 23, 20, 20, 23, 24, 24, 30, 37, 37, 36, 38, 32, + 32, 34, 53, 69, 102, 155, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 222, 221, 226, 229, 227, 218, 52, 42, + 50, 46, 52, 45, 30, 29, 28, 26, 25, 25, 27, 29, 30, 34, 22, 16, + 22, 25, 19, 17, 22, 19, 20, 21, 20, 20, 21, 20, 18, 18, 16, 18, + 20, 17, 11, 11, 15, 17, 21, 22, 20, 20, 22, 21, 17, 20, 21, 23, + 23, 23, 23, 23, 24, 19, 18, 19, 21, 20, 19, 25, 33, 39, 38, 28, + 38, 32, 46, 44, 52, 70, 95, 146, 201, 228, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 227, 220, 224, 234, 232, 221, 121, 32, + 49, 37, 32, 46, 37, 29, 28, 29, 30, 29, 28, 25, 23, 21, 28, 22, + 19, 22, 21, 16, 19, 26, 20, 20, 20, 21, 21, 19, 18, 19, 16, 16, + 17, 18, 17, 13, 13, 15, 16, 21, 22, 20, 20, 22, 21, 16, 18, 21, + 24, 24, 22, 21, 21, 23, 17, 17, 18, 20, 18, 17, 22, 29, 36, 38, + 24, 36, 25, 41, 28, 31, 43, 53, 83, 134, 174, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 229, 226, 223, 232, 239, 218, 187, 56, + 64, 27, 59, 17, 18, 31, 31, 22, 24, 28, 30, 30, 27, 24, 21, 22, + 24, 23, 21, 19, 21, 26, 30, 24, 21, 20, 22, 21, 18, 17, 20, 17, + 16, 15, 17, 19, 19, 17, 15, 14, 18, 19, 17, 17, 19, 18, 14, 14, + 18, 22, 22, 19, 17, 18, 20, 19, 16, 17, 19, 19, 17, 20, 26, 27, + 38, 30, 35, 15, 28, 24, 32, 35, 50, 62, 78, 123, 226, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 223, 227, 225, 223, 229, 218, 167, 109, + 41, 37, 83, 23, 25, 35, 38, 15, 20, 22, 25, 28, 29, 28, 26, 24, + 22, 27, 24, 18, 21, 32, 37, 32, 29, 24, 21, 23, 21, 17, 17, 21, + 20, 17, 14, 16, 22, 25, 21, 15, 15, 18, 19, 16, 16, 19, 18, 15, + 13, 18, 23, 22, 18, 15, 16, 19, 21, 17, 15, 19, 21, 20, 20, 23, + 19, 34, 37, 37, 23, 30, 31, 37, 32, 46, 54, 51, 75, 185, 222, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 248, 224, 228, 225, 220, 218, 190, 113, + 35, 31, 58, 12, 38, 47, 23, 26, 28, 32, 32, 30, 27, 23, 20, 16, + 15, 22, 28, 24, 16, 24, 42, 45, 33, 32, 25, 22, 23, 21, 16, 17, + 22, 23, 17, 14, 16, 24, 29, 24, 15, 18, 21, 21, 17, 17, 21, 21, + 18, 14, 19, 24, 25, 19, 17, 18, 20, 24, 17, 15, 19, 22, 21, 20, + 20, 19, 28, 35, 35, 32, 34, 26, 18, 20, 21, 34, 36, 37, 122, 182, + 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 229, 218, 231, 229, 223, 233, 114, + 44, 46, 44, 36, 31, 32, 37, 39, 39, 39, 37, 29, 30, 46, 32, 18, + 31, 20, 26, 21, 33, 23, 29, 70, 62, 24, 15, 37, 20, 5, 24, 21, + 12, 34, 15, 28, 20, 14, 31, 33, 23, 26, 19, 18, 16, 18, 22, 23, + 17, 8, 12, 17, 18, 17, 17, 19, 18, 15, 21, 17, 19, 19, 18, 28, + 32, 21, 16, 20, 28, 33, 31, 24, 22, 24, 18, 20, 29, 38, 48, 80, + 141, 196, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 231, 229, 224, 212, 223, 213, + 38, 62, 45, 43, 39, 36, 35, 39, 40, 38, 37, 35, 35, 24, 25, 18, + 18, 31, 20, 33, 25, 15, 55, 31, 79, 41, 31, 29, 29, 40, 28, 28, + 33, 24, 34, 18, 30, 24, 19, 34, 37, 27, 28, 25, 21, 17, 18, 21, + 21, 18, 11, 18, 20, 22, 20, 21, 24, 22, 18, 20, 17, 20, 20, 20, + 30, 33, 21, 15, 17, 24, 31, 31, 28, 28, 32, 20, 22, 30, 36, 38, + 56, 98, 140, 194, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 230, 251, 194, 244, 227, + 84, 64, 30, 52, 37, 37, 37, 35, 35, 34, 32, 30, 23, 36, 20, 17, + 30, 41, 53, 47, 58, 33, 47, 71, 73, 70, 45, 39, 44, 24, 44, 39, + 23, 32, 27, 26, 25, 36, 31, 24, 35, 40, 33, 30, 32, 24, 18, 18, + 20, 20, 18, 14, 19, 20, 19, 18, 21, 25, 23, 17, 18, 17, 22, 21, + 21, 32, 35, 21, 17, 17, 20, 26, 27, 27, 30, 35, 23, 25, 31, 33, + 29, 32, 53, 78, 167, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 226, 226, 219, 230, 225, + 144, 48, 46, 66, 35, 35, 39, 41, 38, 36, 35, 32, 30, 24, 39, 21, + 24, 43, 43, 44, 44, 51, 40, 73, 64, 73, 47, 35, 27, 50, 39, 29, + 34, 28, 22, 27, 19, 33, 38, 33, 26, 32, 43, 41, 35, 31, 23, 16, + 18, 22, 21, 17, 15, 17, 18, 17, 17, 22, 28, 27, 21, 16, 17, 22, + 21, 21, 34, 37, 20, 23, 19, 18, 21, 21, 20, 23, 28, 25, 25, 29, + 30, 26, 24, 34, 47, 125, 215, 232, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 224, 223, 220, 203, 238, + 132, 52, 52, 59, 53, 45, 40, 46, 46, 42, 38, 40, 39, 35, 27, 34, + 21, 43, 68, 58, 61, 75, 56, 92, 103, 92, 60, 78, 50, 49, 43, 59, + 14, 34, 54, 24, 31, 27, 33, 35, 31, 23, 27, 47, 55, 46, 26, 18, + 15, 20, 25, 22, 17, 16, 17, 19, 20, 21, 27, 34, 35, 31, 15, 18, + 23, 20, 20, 36, 39, 22, 27, 21, 18, 19, 19, 17, 19, 23, 27, 26, + 26, 26, 25, 26, 34, 42, 64, 173, 222, 231, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 224, 220, 217, 232, + 192, 27, 74, 51, 47, 62, 36, 47, 51, 47, 39, 38, 41, 41, 34, 37, + 35, 29, 60, 79, 69, 81, 97, 51, 88, 103, 60, 51, 61, 53, 46, 33, + 58, 15, 41, 72, 36, 36, 45, 29, 29, 28, 22, 25, 53, 68, 56, 25, + 16, 13, 22, 25, 22, 17, 17, 14, 19, 20, 20, 24, 32, 35, 35, 17, + 21, 25, 20, 20, 40, 46, 28, 25, 20, 18, 21, 22, 21, 21, 23, 27, + 26, 26, 24, 24, 28, 35, 41, 33, 128, 201, 232, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 224, 225, 224, 220, 216, + 218, 76, 78, 68, 67, 54, 45, 44, 61, 61, 51, 40, 38, 45, 44, 35, + 52, 50, 50, 71, 69, 54, 61, 56, 100, 96, 112, 50, 84, 61, 71, 65, + 46, 42, 38, 48, 59, 47, 41, 70, 31, 31, 33, 28, 28, 56, 71, 52, + 31, 19, 14, 22, 25, 20, 18, 21, 12, 19, 22, 20, 20, 26, 31, 33, + 22, 26, 30, 22, 23, 45, 52, 34, 22, 17, 17, 21, 24, 22, 20, 20, + 24, 26, 28, 27, 26, 29, 34, 37, 33, 83, 155, 220, 228, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 223, 226, 226, 221, + 218, 90, 104, 61, 80, 88, 55, 36, 64, 79, 76, 63, 48, 46, 53, 52, + 41, 44, 52, 69, 94, 87, 81, 89, 67, 137, 111, 84, 70, 84, 77, 58, + 77, 74, 31, 65, 54, 37, 53, 48, 93, 37, 36, 41, 34, 29, 54, 66, + 43, 38, 22, 16, 20, 24, 19, 18, 24, 16, 25, 29, 25, 21, 24, 31, + 36, 25, 30, 32, 24, 25, 48, 58, 40, 19, 15, 15, 21, 23, 19, 15, + 14, 18, 24, 31, 31, 31, 32, 34, 34, 31, 42, 103, 189, 213, 215, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 218, 223, 237, + 195, 221, 57, 72, 72, 93, 87, 61, 72, 69, 94, 50, 67, 45, 46, 58, + 56, 38, 85, 77, 81, 104, 69, 75, 88, 108, 106, 100, 92, 91, 87, 68, + 70, 96, 61, 61, 78, 69, 42, 56, 81, 72, 41, 48, 38, 32, 25, 68, + 72, 58, 38, 9, 21, 11, 23, 22, 22, 21, 22, 21, 29, 22, 28, 31, + 24, 41, 43, 30, 19, 22, 32, 39, 41, 43, 18, 11, 22, 21, 21, 24, + 17, 27, 18, 25, 25, 30, 40, 29, 20, 32, 31, 49, 68, 116, 185, 216, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 225, 226, 218, + 224, 227, 131, 76, 76, 65, 80, 79, 59, 64, 57, 60, 76, 59, 90, 46, + 73, 48, 87, 95, 105, 75, 109, 67, 113, 92, 101, 110, 73, 94, 95, 53, + 79, 105, 53, 65, 66, 68, 75, 47, 57, 52, 42, 56, 66, 36, 29, 28, + 67, 82, 84, 43, 13, 22, 10, 24, 30, 31, 20, 18, 30, 24, 30, 17, + 41, 20, 41, 42, 29, 19, 21, 26, 31, 34, 35, 22, 14, 24, 21, 21, + 25, 17, 27, 28, 30, 37, 29, 20, 37, 46, 27, 36, 56, 68, 91, 151, + 209, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 219, 232, + 222, 216, 181, 60, 71, 64, 52, 67, 73, 60, 58, 48, 40, 82, 74, 67, + 74, 66, 64, 79, 91, 89, 99, 84, 108, 87, 86, 75, 94, 135, 81, 36, + 78, 79, 60, 99, 78, 89, 92, 83, 88, 96, 80, 49, 67, 86, 34, 23, + 28, 60, 93, 109, 57, 15, 20, 10, 27, 38, 40, 22, 20, 31, 33, 31, + 25, 40, 27, 44, 53, 39, 26, 25, 30, 30, 29, 29, 20, 11, 20, 18, + 19, 22, 14, 23, 36, 23, 38, 35, 14, 38, 58, 26, 31, 35, 43, 59, + 101, 167, 206, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 212, + 229, 231, 191, 65, 55, 50, 48, 49, 60, 64, 55, 47, 39, 51, 88, 54, + 86, 57, 61, 56, 79, 97, 105, 100, 116, 105, 82, 68, 103, 120, 98, 62, + 69, 104, 88, 55, 62, 82, 103, 114, 73, 112, 118, 112, 61, 65, 108, 51, + 25, 26, 62, 104, 125, 78, 15, 17, 19, 34, 37, 39, 25, 33, 21, 51, + 26, 56, 30, 39, 50, 65, 48, 33, 31, 36, 35, 28, 24, 17, 9, 19, + 19, 21, 25, 15, 23, 40, 19, 31, 45, 33, 36, 50, 41, 46, 24, 32, + 58, 81, 127, 180, 205, 230, 255, 255, 255, 255, 255, 255, 255, 255, 220, 225, + 219, 224, 218, 122, 12, 64, 45, 48, 57, 55, 48, 40, 34, 37, 71, 64, + 53, 89, 46, 28, 72, 113, 95, 103, 91, 97, 85, 73, 76, 118, 109, 42, + 57, 91, 58, 55, 86, 76, 111, 122, 116, 97, 116, 129, 114, 86, 57, 120, + 78, 34, 25, 70, 108, 127, 99, 15, 16, 30, 40, 30, 35, 30, 40, 17, + 47, 40, 73, 34, 39, 60, 66, 47, 32, 33, 42, 41, 34, 25, 17, 9, + 20, 22, 27, 31, 20, 26, 34, 33, 32, 36, 43, 40, 43, 57, 55, 31, + 34, 49, 57, 92, 152, 188, 200, 255, 255, 255, 255, 255, 255, 255, 255, 222, + 226, 233, 221, 164, 47, 46, 48, 46, 45, 54, 42, 32, 34, 34, 50, 55, + 34, 52, 27, 41, 43, 111, 95, 62, 73, 84, 59, 81, 76, 87, 75, 52, + 46, 41, 40, 47, 67, 111, 152, 137, 131, 107, 147, 125, 145, 115, 122, 54, + 110, 92, 41, 21, 75, 98, 116, 109, 20, 23, 39, 41, 28, 37, 33, 37, + 24, 32, 62, 66, 58, 34, 65, 62, 48, 38, 41, 48, 49, 44, 41, 18, + 7, 17, 18, 23, 29, 19, 25, 19, 44, 36, 17, 27, 39, 42, 51, 49, + 47, 43, 30, 27, 64, 122, 157, 174, 255, 255, 255, 255, 255, 255, 255, 255, + 224, 226, 230, 216, 81, 29, 58, 38, 46, 36, 43, 29, 27, 39, 34, 47, + 24, 43, 22, 35, 33, 116, 87, 57, 44, 75, 56, 86, 50, 106, 72, 54, + 57, 48, 54, 78, 113, 148, 152, 129, 128, 115, 113, 151, 135, 145, 125, 115, + 70, 91, 94, 50, 25, 80, 86, 109, 106, 29, 38, 43, 36, 33, 47, 34, + 32, 35, 36, 69, 68, 82, 46, 64, 59, 56, 54, 53, 49, 46, 46, 52, + 28, 13, 16, 13, 18, 26, 19, 28, 15, 33, 43, 30, 20, 30, 39, 35, + 47, 60, 55, 38, 32, 49, 93, 138, 170, 190, 255, 255, 255, 255, 255, 255, + 244, 227, 223, 214, 209, 18, 52, 22, 45, 53, 35, 38, 25, 28, 39, 20, + 22, 29, 34, 43, 74, 101, 112, 49, 57, 54, 52, 46, 54, 30, 58, 62, + 50, 82, 117, 135, 142, 157, 150, 142, 154, 126, 115, 152, 136, 157, 146, 151, + 89, 96, 84, 99, 63, 38, 91, 84, 115, 100, 35, 48, 41, 30, 38, 58, + 33, 32, 38, 54, 60, 83, 91, 66, 59, 57, 61, 64, 57, 42, 33, 37, + 49, 45, 26, 24, 17, 21, 31, 27, 38, 25, 18, 51, 67, 34, 25, 38, + 28, 32, 41, 43, 44, 37, 22, 50, 114, 160, 173, 255, 255, 255, 255, 255, + 255, 219, 220, 229, 218, 131, 26, 51, 48, 31, 44, 38, 30, 29, 32, 31, + 29, 26, 33, 35, 66, 99, 90, 52, 41, 59, 41, 66, 79, 74, 74, 80, + 94, 113, 135, 147, 158, 159, 156, 156, 155, 153, 101, 135, 155, 149, 148, 156, + 144, 118, 100, 75, 84, 63, 41, 63, 122, 81, 79, 106, 30, 49, 43, 46, + 46, 31, 39, 40, 49, 48, 84, 93, 85, 50, 65, 60, 61, 75, 55, 29, + 39, 44, 45, 53, 24, 18, 21, 28, 46, 28, 28, 30, 27, 51, 50, 34, + 40, 20, 23, 39, 57, 40, 44, 52, 46, 79, 138, 165, 206, 255, 255, 255, + 255, 255, 221, 226, 212, 191, 43, 22, 41, 36, 43, 24, 26, 28, 31, 31, + 30, 32, 33, 22, 74, 102, 74, 41, 45, 64, 74, 106, 127, 132, 127, 127, + 129, 135, 148, 154, 160, 165, 166, 167, 164, 157, 147, 129, 149, 159, 153, 152, + 157, 145, 123, 91, 91, 85, 63, 52, 74, 115, 92, 50, 98, 48, 52, 40, + 51, 44, 46, 45, 45, 52, 51, 84, 93, 90, 63, 53, 59, 62, 71, 48, + 26, 38, 40, 51, 48, 18, 19, 27, 22, 39, 46, 32, 32, 28, 48, 44, + 28, 32, 12, 23, 30, 50, 45, 45, 50, 43, 65, 103, 152, 184, 255, 255, + 255, 255, 255, 223, 218, 218, 132, 1, 40, 41, 35, 41, 25, 31, 34, 30, + 25, 25, 34, 40, 56, 45, 36, 41, 71, 111, 140, 153, 152, 164, 164, 160, + 162, 162, 160, 166, 166, 167, 166, 167, 169, 165, 150, 133, 153, 157, 158, 155, + 156, 156, 146, 131, 97, 116, 86, 58, 45, 76, 107, 105, 50, 107, 75, 58, + 49, 74, 43, 50, 53, 50, 59, 56, 82, 86, 93, 80, 54, 61, 65, 71, + 48, 23, 34, 33, 55, 63, 33, 21, 26, 22, 36, 52, 36, 31, 25, 36, + 33, 29, 38, 27, 27, 20, 42, 51, 49, 50, 44, 50, 68, 117, 171, 255, + 255, 255, 255, 245, 222, 214, 227, 49, 23, 47, 39, 42, 31, 35, 37, 34, + 25, 23, 32, 49, 59, 58, 48, 71, 120, 145, 141, 152, 178, 158, 162, 155, + 154, 162, 164, 160, 163, 168, 166, 162, 161, 163, 160, 146, 131, 159, 155, 154, + 156, 155, 150, 144, 141, 99, 122, 100, 80, 44, 74, 100, 93, 72, 115, 84, + 53, 58, 102, 46, 47, 56, 53, 66, 62, 78, 72, 88, 92, 69, 62, 61, + 75, 53, 22, 30, 31, 50, 85, 67, 27, 22, 30, 37, 44, 54, 39, 27, + 25, 21, 29, 46, 46, 34, 17, 34, 53, 50, 51, 51, 44, 56, 80, 148, + 255, 255, 255, 255, 225, 222, 223, 184, 3, 35, 29, 29, 38, 33, 21, 22, + 21, 21, 32, 52, 70, 76, 86, 118, 152, 161, 155, 153, 156, 161, 161, 160, + 151, 151, 162, 164, 161, 167, 168, 168, 166, 162, 161, 161, 154, 148, 155, 153, + 154, 158, 152, 143, 141, 146, 95, 110, 121, 120, 55, 76, 104, 75, 82, 109, + 83, 52, 56, 110, 56, 60, 59, 55, 70, 68, 72, 55, 76, 94, 75, 49, + 40, 67, 54, 21, 28, 38, 38, 75, 79, 42, 27, 32, 35, 45, 68, 50, + 40, 26, 17, 27, 38, 41, 37, 21, 27, 46, 45, 47, 55, 44, 59, 67, + 143, 202, 255, 255, 255, 226, 223, 214, 98, 25, 35, 35, 32, 26, 44, 71, + 76, 81, 89, 107, 127, 134, 129, 150, 155, 147, 136, 147, 171, 177, 165, 165, + 163, 155, 154, 163, 162, 160, 169, 162, 165, 164, 160, 156, 160, 160, 159, 157, + 156, 158, 160, 152, 141, 140, 146, 113, 111, 130, 125, 55, 68, 117, 96, 95, + 117, 100, 77, 56, 95, 63, 77, 73, 57, 67, 67, 69, 44, 65, 91, 72, + 39, 22, 48, 44, 19, 31, 40, 32, 37, 59, 54, 34, 27, 31, 54, 55, + 42, 47, 34, 25, 35, 33, 32, 37, 33, 24, 33, 35, 39, 53, 43, 57, + 71, 156, 162, 255, 255, 255, 225, 222, 185, 50, 45, 36, 47, 37, 36, 72, + 100, 107, 112, 117, 130, 146, 145, 135, 156, 159, 163, 166, 162, 157, 157, 161, + 158, 161, 157, 159, 162, 157, 154, 164, 158, 161, 161, 157, 156, 159, 159, 158, + 159, 157, 156, 155, 150, 144, 142, 142, 129, 124, 131, 110, 59, 55, 115, 121, + 110, 121, 111, 109, 65, 86, 72, 83, 95, 62, 60, 62, 69, 43, 60, 83, + 80, 55, 30, 37, 27, 15, 30, 31, 40, 14, 42, 49, 27, 26, 31, 45, + 40, 32, 49, 39, 31, 44, 35, 33, 37, 51, 29, 24, 30, 32, 48, 43, + 49, 63, 164, 165, 255, 255, 255, 222, 219, 166, 54, 29, 27, 37, 30, 61, + 106, 122, 131, 134, 133, 142, 156, 159, 150, 157, 160, 161, 160, 165, 171, 171, + 165, 155, 160, 162, 165, 167, 157, 154, 166, 160, 163, 162, 160, 162, 163, 160, + 155, 159, 155, 150, 148, 149, 149, 146, 141, 119, 131, 138, 111, 83, 52, 96, + 117, 108, 108, 100, 120, 76, 88, 83, 85, 114, 68, 53, 57, 70, 45, 58, + 79, 97, 82, 52, 34, 15, 11, 27, 19, 51, 17, 42, 37, 12, 32, 35, + 23, 46, 36, 54, 40, 30, 43, 33, 32, 39, 66, 37, 23, 30, 31, 45, + 42, 42, 44, 160, 178, 255, 255, 255, 217, 216, 126, 53, 40, 26, 43, 40, + 71, 130, 134, 140, 143, 143, 147, 156, 158, 153, 158, 159, 160, 159, 159, 161, + 162, 161, 160, 165, 168, 165, 157, 155, 158, 163, 165, 164, 162, 161, 162, 160, + 157, 154, 157, 164, 166, 161, 156, 156, 151, 143, 141, 133, 130, 112, 79, 67, + 77, 86, 122, 106, 102, 103, 100, 109, 106, 85, 108, 110, 73, 43, 51, 50, + 46, 68, 91, 94, 85, 59, 28, 16, 18, 28, 52, 56, 34, 16, 24, 24, + 23, 38, 50, 44, 34, 29, 35, 46, 51, 50, 44, 54, 59, 42, 19, 25, + 40, 40, 59, 55, 108, 153, 255, 255, 255, 219, 216, 120, 44, 33, 26, 39, + 47, 87, 134, 132, 139, 143, 142, 140, 145, 150, 149, 153, 155, 155, 156, 158, + 163, 169, 172, 170, 166, 162, 166, 171, 171, 166, 160, 162, 163, 163, 164, 165, + 165, 162, 160, 159, 162, 162, 156, 151, 149, 148, 148, 133, 139, 141, 119, 86, + 79, 85, 82, 109, 113, 103, 102, 116, 110, 96, 96, 102, 134, 105, 49, 43, + 59, 62, 69, 57, 73, 89, 84, 62, 37, 26, 27, 43, 49, 33, 20, 24, + 22, 19, 31, 43, 63, 75, 63, 45, 43, 60, 78, 43, 45, 49, 39, 21, + 24, 39, 42, 45, 49, 91, 149, 202, 255, 255, 218, 214, 120, 41, 34, 37, + 39, 61, 113, 141, 134, 141, 146, 143, 139, 141, 146, 149, 141, 143, 146, 150, + 152, 155, 159, 163, 169, 167, 166, 169, 176, 177, 171, 164, 160, 162, 161, 164, + 165, 163, 160, 157, 160, 159, 156, 151, 142, 136, 139, 146, 133, 140, 135, 102, + 72, 80, 97, 96, 92, 110, 98, 100, 127, 110, 86, 107, 99, 121, 111, 88, + 78, 62, 47, 55, 57, 69, 85, 85, 61, 29, 13, 15, 34, 40, 33, 25, + 25, 19, 15, 23, 41, 54, 64, 60, 53, 52, 57, 60, 47, 38, 38, 35, + 22, 22, 34, 40, 35, 44, 72, 141, 161, 255, 255, 216, 209, 116, 43, 40, + 51, 37, 69, 130, 141, 142, 144, 145, 142, 140, 139, 141, 143, 141, 145, 152, + 159, 159, 156, 156, 159, 158, 164, 172, 173, 170, 167, 169, 174, 168, 167, 166, + 166, 164, 160, 154, 149, 159, 155, 151, 144, 131, 120, 120, 128, 123, 123, 116, + 92, 69, 78, 102, 109, 83, 90, 84, 97, 120, 106, 89, 107, 104, 110, 107, + 109, 109, 81, 50, 44, 79, 84, 94, 94, 72, 41, 28, 33, 32, 36, 34, + 30, 25, 17, 15, 22, 35, 33, 33, 38, 50, 56, 48, 34, 55, 36, 31, + 34, 25, 20, 28, 35, 39, 39, 62, 127, 165, 255, 255, 217, 208, 103, 42, + 38, 56, 33, 75, 138, 133, 145, 139, 132, 129, 126, 123, 119, 115, 117, 119, + 125, 132, 133, 132, 137, 145, 152, 159, 167, 170, 166, 166, 168, 172, 172, 172, + 172, 170, 167, 161, 152, 146, 154, 151, 145, 136, 119, 105, 100, 102, 93, 89, + 97, 99, 84, 79, 92, 102, 81, 62, 65, 88, 98, 98, 96, 94, 108, 127, + 123, 106, 105, 110, 90, 63, 41, 53, 75, 89, 78, 52, 31, 27, 41, 36, + 36, 35, 26, 19, 21, 25, 21, 31, 39, 40, 39, 44, 48, 50, 57, 33, + 27, 34, 28, 22, 28, 33, 46, 33, 57, 110, 181, 255, 255, 220, 210, 102, + 51, 34, 57, 37, 89, 147, 131, 131, 118, 106, 102, 99, 92, 83, 79, 76, + 73, 74, 81, 84, 91, 107, 125, 144, 145, 150, 162, 172, 174, 168, 161, 165, + 166, 167, 167, 164, 158, 149, 143, 146, 145, 139, 123, 108, 96, 85, 78, 74, + 59, 67, 80, 72, 66, 76, 89, 76, 50, 54, 73, 77, 87, 93, 80, 92, + 110, 124, 123, 115, 111, 102, 92, 70, 82, 98, 109, 103, 83, 59, 44, 53, + 40, 38, 40, 29, 24, 28, 27, 17, 29, 37, 34, 30, 35, 47, 55, 51, + 29, 25, 32, 30, 27, 32, 33, 46, 27, 50, 101, 191, 255, 255, 222, 210, + 115, 67, 28, 52, 44, 104, 153, 124, 101, 90, 80, 77, 72, 63, 57, 56, + 65, 62, 63, 70, 72, 76, 94, 113, 121, 127, 140, 158, 172, 174, 164, 154, + 161, 162, 164, 167, 165, 158, 149, 142, 136, 139, 130, 110, 98, 96, 84, 67, + 67, 51, 49, 55, 51, 55, 67, 72, 67, 60, 52, 57, 69, 76, 75, 73, + 70, 71, 96, 125, 122, 104, 98, 103, 93, 100, 103, 101, 97, 89, 65, 43, + 64, 42, 40, 45, 34, 29, 33, 27, 22, 22, 20, 19, 26, 36, 41, 40, + 45, 29, 26, 31, 28, 29, 32, 29, 37, 26, 41, 108, 192, 255, 255, 221, + 208, 127, 76, 19, 40, 44, 107, 147, 114, 79, 72, 66, 64, 59, 51, 50, + 55, 61, 59, 64, 72, 70, 65, 74, 89, 94, 114, 141, 161, 167, 163, 157, + 157, 168, 170, 173, 174, 171, 165, 154, 148, 129, 134, 123, 99, 93, 98, 86, + 65, 58, 54, 56, 57, 55, 61, 63, 49, 57, 76, 56, 45, 71, 70, 57, + 72, 58, 65, 79, 88, 98, 118, 118, 95, 82, 96, 103, 104, 109, 110, 84, + 55, 67, 42, 42, 49, 37, 33, 35, 25, 23, 25, 23, 20, 24, 33, 39, + 40, 44, 33, 30, 32, 26, 27, 29, 23, 29, 29, 36, 118, 189, 255, 255, + 215, 207, 149, 62, 27, 27, 49, 123, 85, 72, 51, 50, 46, 43, 47, 56, + 61, 59, 67, 58, 54, 55, 51, 50, 61, 79, 85, 106, 128, 141, 149, 158, + 163, 162, 164, 160, 160, 167, 169, 161, 151, 146, 141, 127, 118, 111, 99, 83, + 79, 86, 79, 71, 68, 72, 68, 55, 55, 66, 69, 70, 68, 63, 67, 72, + 67, 58, 51, 53, 65, 82, 86, 86, 97, 113, 99, 104, 104, 101, 104, 107, + 91, 69, 64, 65, 62, 35, 42, 50, 28, 44, 28, 28, 23, 17, 17, 24, + 27, 26, 39, 27, 28, 24, 25, 32, 22, 28, 25, 21, 37, 102, 228, 255, + 255, 217, 210, 150, 69, 41, 35, 57, 106, 72, 57, 39, 43, 47, 50, 57, + 66, 69, 66, 55, 55, 59, 66, 67, 64, 62, 64, 78, 96, 119, 137, 152, + 160, 157, 149, 152, 152, 154, 161, 164, 164, 155, 148, 134, 121, 110, 110, 108, + 100, 98, 104, 102, 93, 87, 91, 95, 98, 110, 122, 132, 133, 125, 112, 102, + 96, 83, 68, 78, 71, 69, 70, 67, 63, 72, 86, 105, 103, 98, 100, 111, + 119, 101, 78, 59, 57, 60, 46, 52, 61, 38, 39, 31, 30, 25, 19, 18, + 24, 28, 27, 37, 26, 32, 27, 28, 33, 22, 25, 29, 21, 35, 100, 225, + 255, 255, 219, 214, 162, 80, 50, 31, 60, 78, 62, 48, 52, 61, 73, 85, + 97, 105, 104, 99, 97, 103, 107, 111, 114, 112, 100, 88, 93, 100, 114, 129, + 146, 156, 151, 141, 144, 151, 156, 158, 162, 168, 160, 147, 138, 124, 115, 121, + 125, 126, 125, 130, 144, 137, 128, 126, 131, 141, 150, 154, 150, 155, 152, 141, + 135, 131, 121, 107, 95, 84, 76, 76, 72, 69, 74, 83, 94, 97, 97, 99, + 106, 112, 102, 92, 57, 41, 42, 39, 44, 56, 44, 31, 33, 32, 28, 22, + 19, 24, 28, 27, 33, 27, 35, 30, 29, 33, 21, 23, 28, 17, 29, 96, + 216, 255, 255, 220, 215, 186, 95, 50, 23, 68, 68, 79, 73, 85, 96, 111, + 125, 137, 143, 141, 136, 141, 146, 145, 139, 139, 143, 136, 124, 123, 120, 117, + 122, 133, 142, 147, 147, 149, 161, 165, 160, 163, 169, 160, 146, 142, 134, 128, + 132, 134, 136, 137, 142, 138, 137, 134, 136, 146, 160, 163, 161, 169, 174, 173, + 163, 155, 152, 144, 134, 132, 121, 110, 103, 93, 78, 67, 62, 75, 91, 105, + 105, 98, 96, 100, 107, 70, 39, 26, 23, 24, 42, 47, 31, 33, 34, 30, + 23, 21, 25, 28, 29, 32, 29, 39, 29, 27, 32, 21, 24, 28, 18, 29, + 103, 213, 255, 255, 219, 215, 200, 106, 44, 26, 92, 81, 110, 107, 113, 122, + 132, 141, 149, 153, 150, 144, 157, 161, 157, 144, 141, 148, 148, 142, 135, 129, + 121, 116, 118, 127, 141, 152, 154, 166, 168, 162, 160, 166, 158, 145, 137, 135, + 134, 133, 129, 128, 132, 139, 149, 147, 143, 142, 149, 162, 163, 159, 161, 171, + 172, 163, 156, 157, 154, 148, 145, 136, 126, 119, 107, 91, 74, 65, 71, 84, + 101, 108, 104, 100, 105, 116, 94, 61, 37, 31, 27, 38, 52, 39, 33, 36, + 34, 29, 25, 27, 29, 28, 32, 31, 40, 27, 23, 30, 23, 27, 30, 22, + 38, 116, 214, 255, 255, 218, 215, 191, 105, 33, 41, 116, 93, 124, 119, 133, + 138, 143, 145, 148, 149, 144, 138, 137, 140, 135, 124, 118, 117, 114, 111, 122, + 119, 117, 115, 112, 117, 133, 149, 152, 160, 161, 157, 154, 156, 152, 143, 131, + 134, 135, 133, 125, 124, 127, 134, 125, 118, 110, 109, 114, 122, 129, 133, 143, + 156, 162, 159, 155, 158, 159, 156, 143, 135, 125, 118, 112, 106, 101, 98, 80, + 76, 80, 99, 112, 114, 110, 111, 105, 89, 62, 57, 46, 39, 48, 39, 31, + 38, 39, 36, 31, 32, 33, 32, 31, 33, 43, 28, 21, 29, 23, 28, 25, + 20, 38, 119, 255, 255, 255, 218, 216, 180, 105, 28, 57, 129, 98, 123, 121, + 138, 141, 142, 141, 140, 138, 131, 124, 139, 135, 131, 132, 134, 132, 131, 130, + 114, 112, 111, 112, 110, 115, 131, 148, 153, 154, 154, 151, 148, 145, 141, 141, + 128, 132, 133, 130, 124, 121, 121, 122, 106, 98, 96, 102, 108, 112, 121, 133, + 135, 152, 163, 158, 152, 151, 149, 143, 158, 149, 137, 124, 115, 110, 107, 104, + 98, 80, 75, 94, 114, 117, 112, 109, 105, 111, 84, 77, 62, 34, 35, 36, + 32, 41, 46, 44, 39, 39, 39, 37, 27, 34, 46, 30, 21, 29, 22, 25, + 22, 20, 38, 118, 255, 255, 255, 219, 217, 182, 115, 32, 70, 136, 100, 124, + 127, 129, 130, 131, 129, 127, 124, 116, 108, 87, 77, 75, 91, 109, 119, 124, + 131, 122, 114, 109, 109, 110, 117, 133, 153, 156, 153, 150, 150, 144, 137, 132, + 136, 124, 126, 124, 122, 118, 116, 110, 105, 95, 83, 77, 78, 67, 48, 42, + 49, 71, 96, 118, 127, 131, 137, 139, 136, 140, 138, 133, 125, 121, 122, 122, + 121, 114, 96, 89, 103, 113, 113, 112, 118, 105, 123, 96, 85, 69, 30, 30, + 39, 32, 42, 50, 49, 45, 44, 43, 41, 24, 34, 48, 33, 23, 30, 21, + 22, 28, 26, 42, 167, 255, 255, 255, 218, 215, 181, 96, 37, 108, 130, 118, + 129, 129, 109, 120, 92, 123, 88, 42, 46, 44, 20, 30, 224, 108, 53, 138, + 112, 113, 111, 123, 137, 110, 109, 105, 134, 145, 154, 154, 152, 148, 140, 133, + 127, 125, 128, 125, 123, 123, 122, 121, 113, 109, 96, 46, 89, 115, 121, 58, + 65, 55, 62, 46, 20, 34, 46, 85, 106, 128, 111, 104, 111, 126, 127, 115, + 115, 124, 135, 122, 105, 96, 98, 107, 117, 120, 121, 108, 119, 102, 62, 75, + 35, 44, 28, 30, 38, 54, 62, 60, 51, 46, 38, 37, 34, 38, 43, 32, + 24, 33, 39, 21, 115, 255, 255, 255, 255, 218, 215, 187, 105, 43, 121, 130, + 119, 118, 118, 107, 107, 108, 74, 45, 70, 35, 34, 80, 86, 187, 22, 85, + 165, 201, 145, 120, 123, 122, 123, 116, 122, 137, 156, 156, 153, 151, 146, 140, + 135, 132, 130, 121, 118, 118, 126, 135, 136, 125, 114, 98, 89, 138, 133, 118, + 66, 65, 36, 48, 42, 45, 78, 67, 59, 55, 82, 97, 104, 113, 117, 117, + 116, 121, 128, 134, 126, 115, 110, 109, 112, 117, 118, 127, 114, 125, 110, 75, + 86, 48, 51, 28, 29, 35, 47, 55, 56, 54, 54, 41, 47, 51, 56, 58, + 39, 27, 33, 30, 24, 127, 255, 255, 255, 255, 255, 217, 179, 106, 43, 134, + 135, 132, 122, 125, 113, 94, 89, 43, 41, 106, 60, 49, 57, 59, 20, 75, + 117, 181, 153, 170, 124, 116, 101, 125, 117, 133, 135, 156, 156, 151, 146, 141, + 137, 135, 135, 135, 122, 115, 112, 123, 136, 135, 118, 100, 125, 78, 112, 144, + 143, 69, 56, 50, 45, 42, 61, 125, 137, 113, 55, 31, 56, 75, 92, 97, + 100, 111, 119, 121, 128, 130, 129, 127, 124, 123, 123, 123, 127, 115, 127, 114, + 89, 96, 61, 56, 33, 31, 31, 38, 43, 47, 53, 60, 41, 48, 53, 59, + 59, 41, 29, 36, 36, 35, 255, 255, 255, 255, 255, 255, 219, 177, 109, 44, + 145, 138, 143, 128, 134, 105, 75, 41, 47, 72, 117, 93, 73, 35, 50, 61, + 78, 175, 136, 143, 109, 123, 116, 102, 116, 119, 136, 138, 148, 154, 148, 140, + 134, 132, 132, 133, 134, 125, 117, 111, 117, 127, 127, 113, 99, 114, 89, 103, + 110, 123, 99, 92, 66, 77, 109, 134, 162, 147, 129, 77, 47, 37, 52, 73, + 90, 103, 116, 124, 128, 127, 132, 139, 139, 135, 131, 130, 131, 129, 116, 127, + 118, 102, 104, 76, 64, 37, 32, 30, 31, 33, 36, 45, 56, 44, 45, 43, + 48, 53, 42, 34, 42, 64, 51, 255, 255, 255, 255, 255, 255, 220, 193, 123, + 55, 150, 139, 141, 126, 132, 87, 60, 43, 64, 82, 109, 88, 86, 61, 104, + 96, 117, 116, 153, 144, 125, 127, 126, 123, 108, 125, 139, 151, 143, 155, 148, + 138, 132, 130, 131, 132, 132, 123, 118, 115, 118, 125, 130, 131, 128, 115, 110, + 117, 111, 110, 100, 110, 107, 107, 126, 125, 126, 105, 108, 91, 83, 55, 49, + 57, 80, 98, 105, 112, 123, 132, 139, 146, 144, 138, 133, 134, 135, 132, 121, + 131, 122, 115, 110, 94, 76, 35, 31, 27, 27, 27, 30, 40, 51, 50, 46, + 38, 44, 56, 49, 42, 48, 92, 67, 255, 255, 255, 255, 255, 255, 220, 198, + 127, 61, 148, 143, 140, 132, 137, 94, 81, 108, 94, 83, 116, 79, 105, 105, + 88, 106, 129, 125, 131, 134, 153, 128, 128, 131, 104, 128, 139, 157, 140, 154, + 147, 139, 134, 133, 134, 133, 132, 125, 123, 121, 120, 121, 127, 134, 139, 135, + 110, 110, 127, 132, 110, 114, 137, 125, 114, 99, 117, 115, 122, 109, 113, 102, + 80, 70, 84, 97, 98, 105, 118, 140, 145, 148, 144, 136, 131, 132, 132, 132, + 122, 129, 119, 118, 108, 103, 82, 38, 31, 24, 24, 25, 29, 36, 46, 46, + 43, 38, 47, 60, 54, 47, 52, 104, 86, 255, 255, 255, 255, 255, 255, 217, + 192, 118, 63, 144, 152, 141, 146, 149, 119, 121, 138, 127, 105, 127, 105, 128, + 134, 123, 145, 127, 141, 126, 117, 117, 124, 120, 112, 106, 123, 144, 150, 141, + 149, 144, 138, 135, 137, 137, 135, 132, 129, 129, 126, 123, 120, 120, 124, 126, + 120, 131, 120, 106, 123, 148, 144, 128, 144, 158, 161, 171, 144, 137, 129, 141, + 144, 130, 118, 119, 123, 122, 124, 127, 139, 142, 143, 141, 136, 133, 132, 132, + 131, 121, 127, 115, 116, 102, 108, 88, 53, 40, 28, 23, 24, 26, 31, 36, + 36, 37, 34, 42, 54, 54, 56, 72, 108, 110, 108, 255, 255, 255, 255, 255, + 214, 191, 116, 67, 140, 156, 140, 149, 149, 134, 143, 110, 145, 135, 123, 142, + 140, 146, 140, 128, 117, 136, 117, 105, 131, 124, 115, 96, 114, 122, 152, 147, + 150, 142, 138, 134, 134, 137, 137, 134, 130, 128, 128, 129, 128, 127, 125, 122, + 122, 129, 132, 125, 126, 126, 126, 133, 158, 145, 158, 146, 146, 144, 171, 154, + 135, 134, 137, 137, 132, 130, 131, 125, 116, 132, 134, 137, 138, 137, 137, 136, + 134, 135, 127, 132, 117, 118, 102, 115, 94, 68, 52, 34, 25, 23, 22, 24, + 28, 31, 34, 32, 35, 46, 53, 71, 99, 110, 126, 104, 125, 255, 255, 255, + 255, 219, 170, 118, 64, 149, 143, 158, 133, 146, 142, 143, 140, 138, 136, 135, + 133, 132, 133, 130, 129, 130, 133, 133, 129, 124, 118, 124, 121, 114, 125, 146, + 152, 142, 133, 131, 129, 129, 132, 134, 134, 134, 140, 140, 139, 138, 135, 131, + 128, 125, 132, 132, 136, 138, 142, 143, 144, 144, 138, 144, 151, 156, 157, 155, + 149, 143, 143, 141, 138, 137, 137, 137, 137, 137, 129, 129, 131, 133, 135, 136, + 133, 131, 127, 125, 121, 114, 113, 111, 99, 86, 90, 40, 40, 28, 36, 17, + 18, 23, 26, 45, 17, 18, 44, 67, 111, 126, 123, 141, 154, 139, 140, 255, + 255, 255, 215, 174, 120, 65, 149, 143, 154, 132, 149, 149, 149, 148, 147, 146, + 144, 142, 141, 140, 140, 141, 140, 138, 136, 135, 135, 135, 131, 122, 118, 131, + 148, 150, 141, 137, 134, 130, 129, 129, 131, 131, 131, 135, 139, 140, 139, 136, + 135, 134, 133, 135, 136, 138, 141, 143, 147, 149, 151, 151, 150, 148, 146, 146, + 147, 149, 149, 142, 142, 142, 144, 144, 141, 136, 132, 128, 128, 131, 134, 136, + 135, 132, 129, 128, 126, 120, 114, 111, 109, 98, 87, 88, 56, 54, 22, 22, + 20, 21, 11, 31, 26, 33, 23, 27, 77, 125, 140, 127, 135, 160, 136, 147, + 154, 255, 255, 214, 179, 121, 68, 147, 142, 149, 133, 152, 152, 153, 152, 151, + 151, 150, 149, 148, 146, 148, 150, 147, 141, 138, 140, 144, 144, 130, 118, 121, + 135, 146, 146, 140, 131, 129, 126, 125, 128, 131, 133, 135, 131, 136, 141, 142, + 139, 136, 139, 142, 139, 139, 140, 142, 144, 148, 151, 154, 165, 161, 155, 151, + 149, 150, 153, 154, 148, 146, 145, 146, 145, 143, 139, 136, 129, 130, 132, 135, + 136, 134, 130, 127, 128, 126, 118, 112, 108, 106, 98, 91, 87, 63, 59, 26, + 17, 18, 21, 17, 21, 5, 49, 43, 38, 103, 131, 128, 129, 126, 163, 138, + 153, 143, 255, 255, 222, 183, 124, 74, 145, 142, 145, 136, 156, 151, 151, 151, + 150, 150, 150, 150, 149, 147, 148, 148, 146, 142, 141, 143, 144, 137, 121, 114, + 126, 140, 144, 142, 143, 130, 127, 122, 121, 123, 127, 129, 131, 129, 137, 144, + 144, 139, 138, 141, 148, 144, 143, 140, 141, 142, 145, 148, 151, 163, 162, 160, + 161, 159, 155, 152, 154, 155, 149, 143, 140, 141, 143, 146, 147, 137, 135, 134, + 133, 133, 131, 128, 126, 128, 123, 115, 110, 107, 103, 97, 92, 87, 54, 53, + 41, 24, 14, 18, 36, 35, 36, 74, 75, 80, 124, 133, 111, 121, 114, 154, + 148, 150, 144, 164, 255, 255, 190, 136, 88, 145, 145, 147, 144, 159, 150, 150, + 149, 150, 149, 149, 149, 149, 147, 144, 142, 142, 144, 146, 144, 141, 127, 118, + 118, 134, 144, 142, 139, 143, 135, 130, 121, 117, 116, 117, 119, 120, 129, 137, + 144, 144, 139, 138, 141, 147, 149, 148, 145, 144, 144, 146, 148, 150, 151, 150, + 153, 159, 158, 151, 147, 148, 152, 148, 143, 141, 143, 147, 151, 152, 147, 142, + 137, 132, 130, 128, 126, 125, 126, 121, 114, 108, 105, 100, 95, 94, 82, 57, + 57, 47, 23, 19, 20, 40, 54, 98, 109, 117, 128, 132, 138, 119, 113, 107, + 139, 157, 138, 151, 150, 255, 255, 201, 154, 109, 148, 148, 152, 152, 158, 153, + 153, 152, 151, 150, 150, 150, 149, 148, 144, 142, 145, 149, 149, 144, 139, 130, + 125, 129, 142, 148, 144, 139, 139, 128, 123, 116, 112, 113, 119, 123, 125, 129, + 135, 141, 142, 139, 138, 141, 145, 154, 152, 150, 150, 148, 151, 151, 152, 150, + 145, 145, 151, 151, 147, 146, 153, 145, 145, 147, 150, 153, 153, 152, 149, 152, + 146, 140, 134, 130, 128, 126, 125, 123, 118, 112, 109, 104, 98, 94, 95, 75, + 73, 69, 45, 15, 36, 36, 43, 37, 108, 128, 153, 162, 140, 139, 126, 112, + 103, 130, 156, 128, 155, 141, 255, 255, 209, 170, 126, 148, 147, 153, 154, 148, + 155, 154, 154, 153, 152, 150, 149, 148, 147, 148, 149, 150, 149, 145, 139, 136, + 135, 131, 132, 141, 149, 150, 142, 134, 124, 118, 112, 111, 114, 120, 127, 131, + 128, 131, 136, 138, 139, 139, 141, 142, 152, 152, 151, 152, 152, 154, 153, 154, + 152, 146, 145, 153, 154, 149, 150, 158, 148, 149, 151, 155, 157, 156, 153, 150, + 150, 146, 142, 138, 135, 132, 127, 125, 121, 115, 111, 109, 105, 96, 92, 94, + 75, 74, 68, 52, 25, 59, 64, 77, 72, 98, 132, 161, 168, 159, 145, 123, + 112, 96, 129, 143, 128, 154, 255, 255, 255, 212, 178, 134, 146, 143, 150, 151, + 138, 155, 155, 154, 152, 151, 150, 148, 148, 145, 150, 154, 153, 146, 139, 134, + 133, 138, 132, 129, 136, 149, 155, 146, 133, 136, 129, 119, 112, 112, 115, 119, + 121, 126, 128, 132, 136, 139, 141, 142, 142, 146, 147, 149, 151, 153, 154, 155, + 155, 148, 144, 147, 158, 158, 150, 148, 154, 157, 155, 152, 152, 154, 155, 156, + 156, 145, 144, 144, 143, 140, 135, 129, 125, 119, 114, 110, 111, 106, 96, 91, + 93, 79, 62, 57, 63, 44, 74, 88, 121, 168, 119, 138, 149, 153, 177, 157, + 127, 111, 88, 131, 131, 131, 186, 255, 255, 255, 208, 186, 135, 139, 137, 153, + 155, 148, 148, 150, 150, 150, 149, 148, 149, 151, 140, 144, 145, 141, 139, 139, + 136, 131, 130, 129, 132, 140, 145, 143, 136, 131, 123, 121, 119, 117, 118, 118, + 117, 117, 119, 123, 133, 128, 149, 137, 141, 144, 150, 153, 152, 148, 152, 162, + 160, 150, 154, 158, 154, 151, 159, 170, 166, 154, 164, 162, 163, 165, 162, 154, + 150, 150, 151, 145, 140, 137, 135, 129, 120, 114, 120, 115, 96, 110, 101, 108, + 89, 89, 94, 62, 76, 65, 81, 88, 117, 164, 167, 134, 127, 146, 157, 152, + 146, 137, 101, 98, 132, 121, 143, 255, 255, 255, 255, 222, 197, 142, 143, 138, + 150, 149, 144, 150, 152, 153, 153, 152, 151, 151, 153, 148, 153, 155, 148, 143, + 142, 143, 143, 126, 127, 133, 143, 148, 145, 137, 130, 123, 120, 118, 117, 116, + 113, 109, 106, 106, 112, 123, 123, 150, 142, 146, 147, 150, 152, 154, 154, 157, + 161, 161, 157, 156, 160, 159, 151, 153, 164, 169, 166, 168, 162, 157, 156, 151, + 146, 146, 148, 150, 144, 139, 136, 134, 129, 122, 117, 110, 108, 95, 104, 91, + 95, 80, 83, 92, 76, 102, 96, 109, 108, 126, 157, 172, 143, 133, 146, 153, + 153, 148, 135, 111, 99, 124, 119, 255, 255, 255, 255, 255, 218, 190, 135, 138, + 133, 146, 148, 144, 149, 151, 154, 153, 153, 151, 151, 153, 149, 155, 157, 149, + 141, 140, 142, 144, 122, 126, 135, 145, 150, 148, 138, 129, 117, 115, 115, 117, + 119, 118, 112, 108, 100, 102, 112, 114, 148, 146, 150, 147, 146, 146, 150, 155, + 156, 153, 154, 158, 153, 162, 166, 158, 154, 160, 167, 170, 170, 165, 162, 161, + 158, 153, 153, 155, 149, 144, 138, 134, 132, 128, 122, 119, 107, 106, 99, 104, + 91, 91, 83, 88, 84, 86, 118, 111, 122, 119, 130, 145, 168, 148, 139, 140, + 144, 151, 150, 134, 114, 97, 120, 127, 255, 255, 255, 255, 255, 215, 186, 129, + 133, 129, 141, 145, 143, 146, 148, 151, 152, 151, 151, 150, 152, 148, 153, 152, + 146, 141, 140, 138, 134, 122, 130, 140, 147, 153, 152, 143, 135, 118, 119, 118, + 122, 123, 122, 116, 111, 105, 103, 107, 105, 142, 147, 151, 145, 145, 143, 149, + 157, 156, 149, 149, 158, 150, 162, 170, 167, 162, 160, 161, 160, 153, 152, 155, + 160, 159, 153, 149, 149, 150, 144, 138, 132, 129, 125, 120, 118, 107, 104, 100, + 103, 96, 93, 90, 93, 80, 92, 117, 106, 116, 118, 134, 138, 154, 147, 141, + 133, 130, 144, 149, 134, 104, 93, 126, 255, 255, 255, 255, 255, 255, 224, 192, + 133, 135, 130, 137, 138, 137, 144, 147, 151, 153, 152, 151, 152, 153, 154, 154, + 152, 150, 152, 150, 139, 126, 128, 138, 146, 151, 154, 157, 151, 143, 132, 132, + 130, 129, 126, 122, 119, 116, 115, 110, 105, 98, 137, 147, 154, 147, 152, 150, + 155, 162, 159, 152, 153, 161, 157, 163, 168, 167, 164, 161, 155, 151, 155, 154, + 156, 161, 160, 155, 153, 154, 149, 144, 138, 131, 125, 121, 117, 115, 109, 101, + 97, 94, 95, 88, 86, 86, 82, 99, 116, 107, 121, 126, 147, 143, 149, 148, + 143, 127, 121, 138, 145, 130, 103, 96, 134, 255, 255, 255, 255, 255, 255, 215, + 181, 125, 132, 127, 134, 135, 137, 145, 149, 153, 157, 156, 155, 155, 156, 156, + 154, 151, 152, 155, 153, 138, 120, 128, 140, 148, 150, 153, 157, 153, 143, 135, + 136, 134, 130, 126, 126, 131, 137, 122, 114, 105, 95, 133, 146, 158, 152, 154, + 152, 155, 158, 158, 155, 157, 161, 169, 165, 162, 160, 160, 160, 157, 154, 167, + 160, 155, 153, 151, 149, 153, 158, 144, 141, 137, 130, 124, 118, 114, 113, 114, + 101, 97, 89, 94, 82, 82, 78, 79, 100, 115, 118, 138, 140, 162, 149, 159, + 151, 141, 125, 121, 137, 140, 121, 110, 109, 255, 255, 255, 255, 255, 255, 255, + 201, 168, 115, 126, 125, 132, 134, 138, 145, 148, 153, 157, 157, 156, 155, 156, + 155, 154, 151, 150, 151, 149, 135, 120, 117, 132, 143, 145, 146, 149, 143, 132, + 121, 122, 119, 110, 103, 106, 120, 133, 125, 119, 110, 95, 130, 145, 156, 150, + 152, 153, 153, 152, 157, 163, 164, 162, 171, 166, 162, 161, 162, 162, 160, 160, + 157, 149, 141, 138, 136, 135, 141, 147, 136, 135, 134, 129, 123, 117, 114, 113, + 108, 99, 101, 87, 94, 77, 85, 84, 79, 99, 113, 126, 154, 152, 175, 158, + 169, 148, 130, 121, 128, 144, 139, 112, 114, 119, 255, 255, 255, 255, 255, 255, + 255, 208, 174, 120, 131, 128, 132, 132, 134, 142, 146, 151, 154, 154, 154, 153, + 153, 156, 158, 154, 151, 149, 146, 137, 126, 104, 121, 135, 138, 138, 139, 131, + 118, 110, 110, 100, 84, 69, 68, 83, 98, 128, 123, 114, 97, 130, 141, 151, + 143, 155, 159, 157, 153, 160, 173, 175, 169, 163, 164, 166, 170, 169, 165, 162, + 161, 159, 154, 151, 152, 151, 149, 152, 156, 130, 131, 130, 127, 122, 118, 115, + 113, 96, 92, 100, 85, 91, 73, 87, 90, 85, 100, 110, 129, 161, 159, 187, + 170, 174, 142, 117, 115, 132, 152, 139, 105, 111, 124, 255, 255, 255, 255, 255, + 255, 255, 255, 170, 122, 139, 123, 130, 134, 134, 141, 142, 145, 149, 154, 156, + 156, 154, 158, 155, 151, 151, 150, 146, 138, 130, 126, 115, 116, 122, 118, 120, + 124, 122, 91, 104, 109, 89, 58, 47, 63, 86, 121, 122, 105, 103, 131, 146, + 144, 151, 162, 163, 163, 165, 166, 166, 164, 161, 163, 166, 170, 168, 163, 159, + 159, 160, 147, 145, 143, 143, 144, 143, 139, 135, 133, 132, 128, 123, 117, 113, + 112, 113, 99, 90, 89, 92, 89, 82, 84, 94, 82, 110, 106, 127, 136, 148, + 119, 121, 129, 112, 137, 146, 133, 131, 120, 113, 128, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 169, 122, 136, 126, 129, 131, 128, 137, 139, 142, 147, 151, + 153, 153, 152, 156, 155, 154, 153, 148, 141, 135, 131, 114, 91, 83, 90, 96, + 102, 100, 88, 96, 107, 115, 111, 102, 100, 112, 126, 119, 117, 110, 117, 137, + 147, 147, 149, 166, 167, 165, 165, 165, 166, 166, 165, 163, 163, 165, 166, 165, + 162, 156, 151, 145, 141, 141, 142, 144, 143, 140, 136, 134, 132, 128, 121, 113, + 107, 104, 103, 99, 91, 86, 90, 88, 81, 81, 87, 79, 105, 102, 112, 116, + 134, 129, 148, 135, 128, 153, 154, 137, 134, 124, 121, 141, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 172, 123, 130, 128, 128, 129, 124, 138, 141, 145, 150, + 153, 155, 155, 155, 153, 154, 153, 149, 139, 132, 129, 128, 113, 90, 82, 89, + 94, 100, 101, 91, 105, 108, 114, 121, 126, 129, 130, 129, 110, 102, 110, 131, + 141, 147, 151, 151, 165, 165, 163, 162, 161, 163, 164, 165, 165, 165, 165, 167, + 169, 165, 155, 147, 143, 140, 138, 139, 142, 142, 140, 137, 133, 130, 126, 120, + 112, 106, 102, 99, 98, 90, 85, 88, 90, 85, 83, 87, 97, 102, 89, 102, + 123, 149, 146, 152, 133, 130, 152, 147, 133, 137, 132, 132, 131, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 181, 127, 122, 128, 128, 130, 125, 138, 142, 146, + 151, 153, 155, 156, 157, 154, 149, 144, 137, 130, 126, 123, 121, 113, 105, 107, + 113, 108, 112, 120, 120, 114, 112, 113, 119, 127, 128, 121, 113, 114, 99, 115, + 140, 138, 139, 146, 144, 156, 160, 160, 160, 159, 159, 159, 160, 165, 164, 164, + 165, 164, 159, 152, 146, 143, 140, 137, 137, 139, 140, 137, 134, 130, 128, 123, + 118, 113, 109, 104, 101, 98, 90, 85, 90, 93, 92, 89, 88, 113, 110, 107, + 125, 148, 163, 155, 147, 132, 126, 134, 126, 126, 142, 138, 139, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 188, 132, 112, 126, 123, 129, 126, 134, 138, + 144, 147, 148, 148, 150, 151, 155, 144, 132, 126, 126, 126, 123, 118, 111, 106, + 113, 120, 116, 115, 121, 120, 117, 117, 119, 122, 128, 129, 126, 121, 132, 114, + 124, 141, 133, 128, 133, 132, 148, 154, 159, 162, 160, 158, 157, 157, 161, 163, + 163, 160, 153, 148, 147, 148, 144, 140, 136, 135, 136, 136, 132, 129, 129, 125, + 119, 114, 111, 107, 100, 98, 100, 94, 89, 91, 94, 91, 88, 84, 118, 128, + 149, 158, 158, 151, 154, 153, 139, 125, 123, 116, 132, 146, 132, 132, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 193, 138, 105, 125, 117, 126, 124, 135, + 139, 145, 146, 146, 147, 147, 149, 152, 138, 125, 122, 127, 131, 125, 119, 122, + 107, 108, 120, 122, 123, 118, 105, 120, 122, 124, 124, 123, 123, 125, 127, 132, + 120, 123, 133, 131, 132, 134, 137, 143, 152, 160, 164, 162, 160, 159, 158, 162, + 164, 164, 159, 152, 148, 149, 152, 144, 140, 135, 134, 134, 133, 130, 127, 130, + 123, 115, 109, 105, 101, 95, 92, 100, 97, 93, 91, 90, 87, 81, 77, 142, + 136, 156, 159, 159, 148, 155, 145, 142, 126, 120, 116, 132, 138, 119, 127, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 146, 106, 129, 115, 123, 122, + 138, 142, 147, 149, 146, 145, 147, 149, 136, 128, 122, 123, 127, 128, 124, 117, + 130, 115, 116, 125, 127, 128, 124, 113, 124, 128, 129, 126, 119, 116, 118, 122, + 120, 120, 115, 119, 131, 138, 136, 142, 141, 150, 157, 159, 158, 158, 160, 163, + 161, 161, 161, 158, 154, 151, 149, 149, 142, 139, 134, 132, 132, 133, 130, 128, + 128, 121, 111, 105, 102, 100, 96, 93, 96, 97, 95, 92, 89, 86, 83, 79, + 160, 133, 141, 143, 156, 151, 158, 136, 140, 127, 119, 113, 124, 125, 124, 160, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 155, 111, 133, 116, 124, + 122, 134, 139, 144, 145, 141, 140, 141, 144, 120, 119, 121, 124, 126, 124, 120, + 115, 124, 120, 127, 132, 123, 121, 128, 130, 127, 132, 135, 132, 126, 122, 124, + 128, 120, 128, 116, 111, 128, 133, 124, 129, 139, 146, 152, 155, 154, 154, 159, + 164, 153, 151, 149, 150, 150, 148, 141, 136, 140, 136, 132, 130, 132, 134, 132, + 129, 127, 119, 110, 104, 104, 104, 101, 99, 90, 93, 94, 93, 91, 90, 90, + 87, 150, 127, 144, 143, 148, 138, 157, 144, 143, 132, 122, 111, 117, 124, 147, + 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 170, 111, 107, 126, + 115, 121, 137, 135, 139, 146, 145, 137, 131, 133, 130, 135, 135, 128, 122, 124, + 126, 126, 130, 123, 119, 128, 138, 138, 132, 127, 143, 149, 136, 143, 129, 142, + 128, 125, 125, 118, 116, 119, 124, 127, 132, 138, 131, 143, 151, 151, 151, 154, + 157, 158, 156, 151, 150, 152, 148, 142, 141, 147, 142, 133, 124, 125, 132, 136, + 130, 122, 120, 117, 107, 99, 99, 104, 101, 93, 92, 91, 94, 98, 89, 80, + 87, 102, 149, 156, 148, 137, 139, 139, 139, 144, 152, 114, 129, 125, 108, 115, + 187, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 178, 121, 108, + 122, 116, 125, 134, 134, 138, 142, 136, 128, 123, 125, 124, 127, 127, 123, 122, + 127, 131, 131, 131, 126, 126, 133, 138, 137, 135, 136, 143, 149, 147, 151, 146, + 150, 137, 130, 134, 126, 121, 122, 123, 124, 126, 132, 129, 138, 144, 146, 147, + 152, 155, 154, 151, 148, 149, 152, 148, 142, 138, 140, 139, 134, 128, 129, 133, + 131, 124, 117, 122, 117, 107, 99, 98, 101, 97, 90, 97, 92, 90, 89, 82, + 78, 90, 107, 142, 147, 144, 144, 155, 152, 136, 128, 135, 119, 109, 80, 86, + 173, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 187, 130, + 107, 117, 113, 125, 132, 135, 140, 141, 134, 125, 123, 127, 124, 126, 122, 119, + 122, 129, 132, 131, 129, 128, 130, 135, 136, 134, 133, 138, 128, 132, 139, 136, + 143, 138, 134, 124, 135, 129, 125, 127, 127, 127, 128, 131, 125, 131, 135, 138, + 144, 153, 157, 157, 153, 151, 154, 156, 153, 146, 141, 141, 134, 133, 131, 131, + 131, 129, 121, 116, 120, 115, 105, 98, 98, 100, 96, 88, 97, 92, 89, 86, + 79, 74, 84, 99, 122, 144, 153, 152, 151, 144, 139, 145, 136, 108, 77, 20, + 87, 200, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 190, + 135, 106, 113, 110, 117, 125, 132, 138, 139, 131, 126, 127, 133, 132, 131, 127, + 123, 126, 131, 129, 124, 128, 128, 132, 138, 138, 134, 131, 133, 135, 134, 145, + 133, 147, 137, 144, 134, 129, 126, 127, 132, 135, 134, 132, 132, 123, 126, 128, + 132, 142, 154, 160, 160, 155, 154, 154, 154, 153, 147, 142, 140, 129, 129, 130, + 130, 129, 127, 124, 122, 119, 113, 104, 100, 101, 101, 97, 92, 94, 92, 92, + 89, 80, 70, 71, 79, 84, 113, 130, 132, 127, 119, 114, 122, 108, 58, 40, + 11, 151, 191, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, + 193, 143, 110, 114, 110, 111, 121, 127, 133, 131, 125, 124, 126, 131, 132, 132, + 129, 127, 129, 134, 132, 127, 138, 134, 136, 145, 148, 143, 135, 131, 141, 142, + 154, 140, 150, 137, 142, 132, 127, 126, 130, 136, 138, 132, 126, 124, 125, 126, + 126, 127, 135, 148, 154, 155, 154, 152, 148, 145, 143, 143, 139, 135, 130, 130, + 128, 127, 125, 123, 123, 124, 116, 109, 102, 102, 104, 104, 100, 97, 94, 94, + 93, 88, 79, 72, 72, 76, 60, 70, 71, 77, 91, 82, 55, 39, 39, 10, + 12, 68, 216, 191, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 208, 200, 154, 114, 115, 112, 112, 124, 130, 133, 130, 125, 125, 129, 130, 126, + 127, 123, 120, 123, 129, 132, 130, 139, 135, 136, 144, 148, 145, 139, 136, 135, + 141, 151, 145, 145, 135, 130, 120, 130, 130, 131, 135, 133, 124, 116, 113, 129, + 129, 126, 123, 125, 135, 143, 145, 154, 151, 146, 141, 141, 142, 138, 132, 133, + 131, 128, 124, 121, 120, 119, 118, 115, 106, 101, 103, 106, 105, 102, 101, 98, + 95, 89, 82, 77, 76, 80, 87, 73, 67, 45, 31, 35, 32, 17, 11, 12, + 15, 17, 127, 212, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 207, 163, 114, 110, 112, 113, 125, 131, 132, 128, 127, 130, 132, 131, + 125, 125, 116, 106, 103, 110, 118, 120, 120, 116, 117, 123, 124, 125, 128, 132, + 127, 136, 137, 141, 132, 138, 133, 132, 130, 128, 127, 130, 130, 126, 121, 121, + 130, 132, 127, 121, 119, 129, 139, 144, 151, 151, 146, 141, 142, 143, 137, 127, + 129, 127, 123, 121, 120, 118, 115, 111, 113, 104, 99, 103, 106, 103, 100, 100, + 95, 93, 88, 80, 75, 76, 81, 85, 87, 78, 46, 15, 8, 9, 14, 28, + 26, 26, 57, 166, 197, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 204, 212, 167, 111, 105, 111, 115, 117, 123, 124, 121, 123, 130, 133, + 129, 133, 126, 111, 93, 83, 87, 97, 102, 92, 91, 92, 94, 94, 96, 107, + 120, 102, 110, 100, 109, 98, 120, 123, 135, 126, 122, 122, 127, 132, 133, 136, + 139, 129, 131, 129, 122, 120, 130, 144, 151, 144, 144, 142, 139, 138, 138, 130, + 119, 122, 120, 119, 121, 122, 120, 114, 109, 114, 103, 98, 102, 105, 100, 96, + 97, 86, 90, 88, 82, 77, 73, 72, 71, 74, 62, 33, 16, 24, 26, 16, + 13, 28, 11, 101, 194, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 242, 195, 198, 109, 103, 107, 108, 123, 120, 122, 129, 132, 129, + 131, 136, 112, 107, 97, 83, 76, 72, 68, 62, 59, 63, 68, 73, 75, 78, + 80, 84, 79, 82, 83, 87, 93, 101, 111, 119, 130, 126, 124, 126, 125, 123, + 128, 138, 129, 126, 126, 131, 133, 132, 132, 133, 150, 145, 139, 143, 148, 134, + 122, 132, 125, 120, 119, 124, 127, 120, 111, 105, 115, 98, 90, 101, 112, 107, + 97, 91, 92, 90, 83, 75, 73, 76, 76, 72, 85, 45, 23, 23, 21, 18, + 19, 18, 32, 39, 155, 198, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 198, 202, 121, 112, 116, 118, 125, 121, 124, 129, 129, + 126, 128, 132, 125, 121, 114, 103, 94, 90, 83, 76, 72, 68, 61, 54, 53, + 55, 63, 70, 71, 71, 70, 70, 71, 75, 78, 82, 104, 103, 108, 117, 124, + 126, 131, 138, 136, 134, 135, 140, 139, 137, 136, 139, 150, 146, 138, 140, 141, + 125, 113, 120, 124, 123, 124, 128, 126, 118, 112, 111, 112, 101, 95, 100, 106, + 104, 93, 87, 91, 86, 76, 66, 66, 73, 77, 76, 80, 43, 22, 23, 20, + 18, 19, 16, 24, 58, 166, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 198, 201, 127, 112, 113, 116, 125, 121, 122, 125, + 126, 123, 123, 125, 127, 129, 127, 118, 110, 104, 95, 85, 81, 80, 77, 71, + 63, 59, 55, 56, 57, 55, 53, 54, 58, 61, 60, 60, 61, 66, 77, 97, + 110, 115, 115, 116, 125, 126, 130, 132, 130, 125, 126, 131, 146, 144, 135, 135, + 136, 121, 110, 117, 121, 123, 126, 128, 123, 115, 111, 113, 102, 101, 98, 97, + 99, 101, 94, 87, 84, 82, 74, 68, 68, 76, 78, 75, 70, 37, 19, 21, + 18, 17, 18, 16, 45, 121, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 202, 201, 138, 109, 105, 105, 121, 119, 120, + 122, 122, 121, 121, 120, 121, 128, 130, 125, 118, 109, 97, 88, 93, 93, 95, + 91, 84, 76, 70, 67, 62, 58, 56, 59, 63, 66, 63, 59, 68, 59, 50, + 53, 68, 87, 105, 115, 124, 128, 133, 137, 133, 129, 131, 137, 139, 140, 133, + 133, 136, 125, 117, 125, 120, 120, 121, 124, 120, 113, 107, 109, 90, 97, 99, + 94, 94, 100, 96, 88, 77, 79, 77, 77, 81, 82, 75, 68, 55, 28, 16, + 19, 17, 18, 21, 18, 18, 138, 205, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 155, 117, 105, 102, 116, 115, + 115, 117, 119, 121, 119, 116, 118, 129, 136, 133, 127, 118, 105, 95, 108, 103, + 97, 90, 84, 84, 87, 91, 87, 83, 78, 77, 79, 78, 71, 66, 75, 71, + 70, 73, 82, 93, 97, 98, 118, 122, 129, 133, 132, 129, 133, 139, 133, 137, + 133, 132, 134, 128, 120, 128, 124, 119, 116, 119, 118, 113, 104, 102, 87, 98, + 100, 95, 92, 96, 93, 86, 77, 79, 79, 79, 82, 83, 75, 65, 42, 21, + 13, 17, 17, 20, 23, 21, 20, 163, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 172, 127, 109, 103, 112, + 113, 113, 114, 117, 120, 116, 111, 116, 128, 137, 136, 129, 120, 111, 101, 105, + 104, 102, 99, 95, 92, 92, 93, 98, 96, 92, 92, 92, 91, 87, 84, 81, + 89, 99, 106, 111, 110, 100, 91, 111, 114, 118, 124, 124, 124, 128, 135, 131, + 138, 133, 128, 130, 123, 118, 124, 129, 120, 115, 117, 119, 112, 103, 98, 95, + 100, 102, 97, 92, 88, 83, 80, 81, 80, 74, 71, 76, 81, 77, 68, 33, + 18, 15, 19, 18, 21, 26, 22, 60, 202, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 139, 115, 106, + 113, 114, 112, 111, 114, 118, 112, 104, 110, 123, 133, 132, 126, 119, 112, 104, + 97, 101, 107, 109, 107, 101, 95, 92, 100, 100, 98, 97, 96, 96, 96, 95, + 102, 101, 95, 89, 94, 107, 119, 125, 126, 124, 125, 129, 132, 134, 139, 145, + 130, 138, 133, 127, 127, 122, 117, 123, 126, 121, 117, 117, 113, 105, 98, 95, + 102, 100, 100, 101, 95, 85, 78, 78, 79, 78, 72, 71, 78, 85, 80, 72, + 32, 20, 19, 22, 19, 21, 25, 20, 68, 199, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 151, 123, + 110, 114, 114, 113, 111, 114, 116, 109, 99, 109, 121, 131, 130, 125, 119, 114, + 109, 100, 100, 100, 99, 98, 100, 104, 106, 110, 108, 106, 101, 95, 91, 90, + 91, 77, 89, 101, 106, 111, 118, 121, 118, 126, 121, 120, 124, 128, 130, 135, + 139, 129, 138, 134, 128, 129, 124, 120, 126, 122, 120, 118, 116, 107, 97, 92, + 95, 103, 98, 97, 102, 98, 85, 77, 80, 73, 74, 75, 80, 89, 93, 84, + 71, 33, 24, 23, 24, 18, 20, 23, 18, 101, 220, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, + 156, 118, 95, 112, 96, 124, 105, 96, 106, 111, 98, 110, 117, 124, 126, 114, + 108, 118, 95, 99, 100, 98, 100, 104, 98, 86, 90, 90, 92, 87, 84, 86, + 93, 102, 89, 97, 104, 112, 120, 126, 125, 120, 114, 121, 116, 133, 123, 140, + 134, 140, 137, 132, 127, 127, 130, 131, 128, 124, 122, 128, 111, 109, 109, 107, + 104, 83, 77, 89, 96, 94, 86, 82, 78, 77, 68, 70, 73, 81, 90, 92, + 78, 61, 27, 26, 21, 24, 31, 25, 21, 31, 108, 198, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 165, 132, 106, 98, 106, 109, 111, 103, 99, 103, 106, 107, 104, 113, 126, + 122, 111, 114, 108, 111, 109, 104, 102, 102, 97, 90, 85, 86, 87, 90, 91, + 92, 95, 96, 108, 116, 122, 125, 128, 131, 129, 124, 116, 122, 116, 131, 122, + 135, 128, 134, 137, 133, 128, 127, 126, 125, 121, 119, 119, 124, 108, 105, 100, + 93, 99, 90, 94, 99, 97, 92, 85, 82, 76, 70, 72, 74, 77, 81, 88, + 86, 70, 53, 27, 26, 16, 10, 15, 15, 18, 30, 103, 207, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 178, 152, 116, 86, 111, 94, 114, 108, 93, 96, 106, 106, 101, 109, + 123, 121, 115, 117, 119, 120, 117, 109, 103, 101, 101, 98, 101, 96, 93, 95, + 102, 108, 114, 116, 128, 135, 138, 135, 132, 131, 129, 126, 120, 124, 120, 129, + 122, 129, 124, 127, 130, 130, 127, 125, 122, 119, 117, 117, 115, 117, 103, 102, + 90, 80, 93, 96, 99, 97, 89, 82, 77, 76, 69, 62, 81, 81, 81, 84, + 87, 82, 65, 48, 24, 30, 24, 18, 21, 20, 15, 18, 88, 208, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 170, 116, 90, 99, 93, 111, 107, 96, 96, 97, 108, 113, + 115, 118, 115, 116, 128, 122, 122, 118, 110, 104, 104, 108, 110, 109, 109, 111, + 116, 122, 128, 131, 132, 133, 141, 143, 136, 127, 124, 123, 121, 123, 124, 124, + 127, 125, 127, 125, 126, 121, 123, 123, 122, 118, 117, 117, 117, 112, 111, 97, + 100, 90, 75, 89, 97, 90, 89, 84, 76, 72, 72, 69, 65, 84, 85, 85, + 86, 88, 81, 65, 47, 12, 20, 16, 12, 21, 23, 15, 12, 77, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 187, 114, 109, 84, 103, 100, 100, 104, 101, 96, 110, + 116, 117, 122, 119, 119, 129, 123, 121, 116, 111, 104, 105, 110, 117, 97, 108, + 124, 135, 136, 133, 129, 128, 131, 136, 137, 128, 119, 116, 116, 116, 119, 120, + 123, 122, 125, 122, 124, 123, 119, 120, 120, 118, 114, 112, 112, 114, 110, 106, + 92, 98, 93, 80, 90, 92, 83, 88, 86, 79, 72, 72, 74, 75, 79, 82, + 85, 86, 86, 80, 63, 47, 22, 25, 14, 11, 25, 31, 28, 30, 95, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 127, 127, 82, 106, 93, 94, 105, 103, 103, + 109, 109, 113, 128, 132, 124, 121, 126, 120, 114, 110, 106, 105, 108, 114, 107, + 114, 122, 125, 123, 125, 131, 137, 125, 129, 128, 119, 113, 113, 114, 114, 114, + 113, 119, 114, 121, 115, 119, 118, 122, 120, 116, 112, 109, 107, 107, 107, 106, + 104, 88, 93, 93, 84, 91, 86, 78, 84, 84, 76, 69, 70, 75, 77, 76, + 79, 82, 84, 83, 75, 59, 44, 28, 31, 24, 24, 32, 27, 22, 29, 138, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 155, 132, 100, 96, 92, 91, 96, 101, + 104, 111, 108, 108, 124, 132, 126, 123, 125, 116, 110, 109, 108, 105, 105, 109, + 121, 121, 118, 117, 118, 124, 132, 140, 121, 123, 119, 111, 109, 112, 112, 112, + 113, 110, 119, 110, 120, 110, 116, 112, 122, 116, 108, 104, 104, 104, 103, 102, + 99, 103, 87, 87, 86, 84, 91, 82, 78, 80, 76, 69, 66, 72, 80, 81, + 81, 84, 86, 85, 83, 74, 55, 40, 23, 24, 19, 21, 23, 17, 31, 62, + 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 129, 119, 83, 93, 91, 86, + 96, 95, 112, 114, 109, 113, 120, 124, 133, 121, 112, 106, 109, 111, 107, 106, + 108, 109, 114, 122, 130, 134, 132, 125, 120, 121, 121, 114, 108, 107, 111, 113, + 111, 116, 112, 121, 109, 122, 108, 116, 110, 117, 109, 101, 98, 101, 104, 104, + 102, 93, 101, 86, 79, 77, 78, 91, 81, 83, 80, 72, 66, 70, 81, 89, + 91, 89, 91, 93, 90, 86, 74, 55, 39, 50, 38, 24, 20, 26, 43, 98, + 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 132, 111, 94, 103, + 92, 92, 95, 109, 106, 101, 112, 110, 107, 124, 124, 119, 116, 118, 116, 111, + 110, 111, 111, 111, 113, 118, 121, 118, 112, 106, 112, 117, 109, 115, 115, 109, + 119, 112, 112, 108, 107, 110, 108, 104, 106, 113, 102, 102, 93, 93, 106, 109, + 104, 106, 91, 94, 78, 83, 71, 88, 80, 78, 79, 73, 69, 74, 80, 82, + 86, 88, 90, 86, 85, 85, 85, 75, 56, 40, 44, 29, 19, 20, 34, 41, + 137, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 113, 96, + 89, 92, 83, 84, 99, 100, 102, 113, 111, 108, 121, 122, 117, 114, 115, 115, + 113, 113, 115, 114, 113, 114, 119, 123, 125, 123, 121, 117, 124, 114, 119, 118, + 112, 120, 114, 112, 108, 106, 108, 107, 103, 106, 111, 112, 111, 101, 98, 108, + 107, 99, 99, 95, 94, 83, 80, 75, 86, 82, 79, 82, 76, 75, 81, 85, + 88, 90, 94, 97, 100, 98, 92, 85, 78, 64, 51, 30, 38, 21, 23, 31, + 98, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 122, + 105, 85, 97, 85, 85, 99, 103, 106, 111, 106, 100, 106, 118, 115, 113, 116, + 115, 113, 115, 119, 121, 118, 117, 119, 123, 127, 129, 130, 120, 126, 116, 122, + 120, 113, 120, 114, 113, 108, 106, 106, 105, 103, 104, 108, 101, 105, 99, 101, + 112, 112, 105, 104, 94, 86, 82, 71, 77, 76, 79, 73, 81, 78, 79, 86, + 92, 92, 94, 97, 100, 109, 107, 93, 81, 77, 67, 55, 20, 42, 19, 24, + 31, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, + 127, 112, 94, 94, 93, 88, 96, 104, 107, 108, 105, 100, 100, 113, 111, 114, + 118, 118, 117, 118, 121, 128, 125, 122, 121, 122, 123, 124, 125, 119, 125, 117, + 122, 121, 113, 120, 114, 111, 107, 103, 102, 102, 102, 103, 105, 89, 94, 94, + 100, 113, 114, 107, 108, 94, 80, 80, 64, 77, 68, 77, 70, 78, 78, 82, + 90, 94, 94, 94, 97, 96, 106, 104, 88, 77, 75, 65, 50, 22, 31, 17, + 33, 54, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 134, 115, 106, 82, 94, 84, 86, 97, 105, 107, 110, 112, 110, 107, 109, + 115, 122, 122, 119, 119, 121, 125, 123, 123, 120, 119, 117, 116, 117, 114, 122, + 115, 121, 120, 112, 119, 112, 107, 104, 99, 97, 99, 102, 103, 102, 96, 102, + 100, 103, 112, 108, 99, 98, 96, 82, 82, 67, 80, 69, 78, 73, 79, 79, + 85, 93, 97, 96, 97, 99, 95, 101, 98, 87, 81, 81, 68, 52, 31, 19, + 33, 70, 111, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 223, 131, 118, 82, 92, 88, 86, 96, 106, 103, 109, 114, 107, 103, + 107, 115, 122, 121, 117, 117, 120, 115, 117, 118, 119, 117, 115, 115, 116, 114, + 122, 114, 120, 119, 110, 117, 109, 104, 101, 96, 92, 96, 102, 104, 101, 104, + 110, 107, 106, 112, 106, 95, 95, 93, 80, 74, 68, 74, 70, 74, 75, 84, + 85, 92, 100, 101, 100, 101, 105, 100, 100, 96, 92, 90, 89, 79, 71, 47, + 36, 73, 130, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 154, 124, 100, 91, 95, 88, 100, 110, 101, 105, 109, 98, + 105, 106, 112, 116, 113, 110, 113, 119, 113, 115, 117, 118, 115, 115, 117, 119, + 117, 125, 116, 121, 118, 108, 113, 105, 100, 98, 93, 89, 95, 104, 106, 102, + 105, 111, 109, 107, 112, 105, 95, 96, 89, 80, 67, 71, 67, 72, 69, 76, + 89, 91, 97, 103, 104, 102, 104, 109, 102, 98, 94, 95, 92, 89, 89, 95, + 77, 89, 123, 182, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 226, 120, 117, 87, 89, 82, 98, 110, 103, 108, 113, + 98, 106, 107, 108, 111, 108, 106, 111, 119, 117, 118, 119, 117, 115, 113, 118, + 122, 122, 128, 119, 122, 118, 107, 110, 101, 98, 96, 91, 87, 94, 104, 107, + 102, 109, 115, 110, 106, 108, 99, 88, 87, 92, 84, 66, 77, 67, 77, 71, + 80, 91, 93, 98, 104, 104, 102, 103, 108, 100, 93, 91, 94, 89, 84, 92, + 111, 107, 140, 156, 206, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 139, 114, 116, 85, 94, 100, 106, 112, 105, + 99, 109, 98, 95, 101, 108, 107, 114, 122, 118, 121, 124, 119, 111, 113, 123, + 123, 117, 120, 120, 116, 111, 113, 117, 112, 104, 97, 98, 92, 86, 92, 105, + 108, 102, 113, 106, 99, 99, 101, 97, 84, 71, 78, 75, 73, 72, 72, 73, + 83, 95, 107, 103, 101, 104, 109, 111, 106, 103, 102, 90, 97, 94, 84, 83, + 95, 134, 175, 194, 202, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 222, 126, 116, 105, 95, 90, 102, 112, + 105, 101, 112, 99, 95, 100, 106, 103, 109, 116, 113, 119, 120, 118, 115, 116, + 120, 122, 120, 124, 125, 120, 113, 109, 109, 102, 94, 95, 94, 90, 89, 94, + 103, 106, 103, 98, 101, 102, 98, 89, 81, 76, 74, 65, 64, 66, 70, 73, + 79, 90, 101, 104, 104, 106, 111, 116, 117, 112, 109, 107, 91, 97, 95, 89, + 90, 97, 129, 191, 205, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149, 126, 120, 97, 86, 101, + 113, 108, 104, 110, 108, 102, 105, 108, 104, 109, 115, 111, 116, 114, 115, 119, + 119, 116, 118, 123, 124, 126, 122, 114, 106, 101, 95, 90, 92, 88, 87, 93, + 99, 101, 102, 103, 94, 97, 99, 94, 85, 76, 71, 71, 68, 68, 73, 79, + 81, 86, 94, 105, 103, 106, 110, 114, 115, 114, 110, 108, 107, 90, 94, 92, + 91, 94, 95, 119, 202, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 126, 102, 93, + 102, 109, 110, 107, 103, 111, 104, 107, 109, 103, 109, 115, 111, 112, 108, 112, + 121, 120, 114, 115, 123, 119, 122, 122, 116, 106, 99, 94, 95, 88, 83, 85, + 96, 101, 97, 96, 101, 99, 93, 87, 85, 85, 80, 70, 61, 73, 74, 81, + 89, 92, 95, 101, 110, 110, 113, 116, 115, 113, 110, 106, 106, 105, 93, 98, + 94, 92, 96, 94, 112, 200, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 137, 116, + 103, 98, 93, 105, 112, 101, 104, 98, 101, 104, 100, 105, 111, 107, 109, 105, + 109, 119, 119, 114, 114, 121, 118, 121, 121, 116, 106, 98, 96, 100, 85, 81, + 85, 96, 99, 93, 91, 95, 92, 85, 77, 75, 75, 73, 67, 61, 67, 72, + 83, 96, 102, 104, 111, 119, 122, 121, 121, 118, 115, 113, 112, 113, 105, 99, + 107, 100, 93, 98, 96, 111, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, + 132, 112, 97, 81, 94, 112, 106, 101, 96, 101, 106, 101, 104, 109, 104, 107, + 105, 106, 113, 117, 116, 115, 116, 119, 118, 117, 113, 103, 94, 92, 98, 83, + 84, 88, 94, 94, 90, 86, 87, 72, 75, 75, 69, 61, 59, 66, 74, 82, + 88, 99, 111, 115, 113, 115, 122, 122, 120, 117, 115, 115, 115, 114, 114, 102, + 101, 108, 96, 90, 96, 93, 104, 216, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 234, 139, 117, 112, 89, 85, 101, 103, 102, 98, 104, 108, 103, 104, 107, 102, + 107, 107, 105, 106, 112, 119, 116, 109, 117, 112, 108, 105, 97, 89, 87, 94, + 84, 90, 92, 90, 89, 87, 84, 79, 65, 70, 71, 67, 62, 66, 79, 91, + 101, 108, 118, 127, 126, 120, 118, 120, 121, 118, 115, 113, 115, 115, 111, 108, + 106, 102, 105, 93, 90, 101, 94, 97, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 139, 120, 132, 105, 82, 88, 92, 98, 93, 101, 105, 99, 100, 101, + 94, 107, 107, 103, 101, 110, 120, 116, 104, 110, 104, 99, 98, 92, 86, 86, + 93, 83, 93, 95, 88, 85, 86, 82, 74, 77, 71, 65, 66, 75, 87, 96, + 101, 99, 105, 117, 128, 129, 124, 122, 124, 128, 124, 120, 119, 121, 118, 110, + 103, 118, 110, 111, 96, 101, 113, 102, 99, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 240, 170, 126, 118, 113, 95, 55, 83, 90, 98, 102, 100, 101, + 105, 109, 104, 100, 98, 100, 99, 96, 95, 98, 101, 98, 93, 90, 88, 88, + 91, 91, 82, 85, 88, 85, 78, 68, 59, 55, 70, 84, 87, 88, 97, 102, + 109, 123, 111, 116, 122, 122, 120, 119, 124, 129, 125, 137, 136, 121, 115, 121, + 118, 104, 110, 112, 112, 108, 104, 102, 104, 108, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 175, 147, 125, 121, 108, 82, 91, 93, 96, 100, 100, + 99, 97, 94, 103, 101, 104, 108, 107, 99, 93, 92, 91, 91, 92, 90, 85, + 78, 72, 66, 76, 70, 60, 53, 51, 59, 71, 80, 79, 94, 102, 104, 112, + 110, 111, 120, 115, 116, 120, 124, 126, 128, 131, 132, 122, 129, 128, 120, 119, + 123, 120, 110, 103, 105, 107, 108, 107, 105, 104, 105, 183, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 174, 126, 119, 109, 100, 80, 77, 75, 81, + 90, 98, 102, 100, 110, 99, 88, 82, 82, 84, 93, 103, 81, 83, 88, 91, + 90, 86, 82, 79, 65, 65, 63, 65, 69, 78, 89, 97, 95, 109, 114, 115, + 120, 117, 116, 124, 126, 125, 127, 131, 136, 138, 136, 134, 130, 127, 123, 122, + 121, 119, 114, 109, 105, 104, 106, 108, 109, 107, 102, 99, 130, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 198, 124, 114, 111, 114, 114, 102, 86, + 75, 72, 72, 73, 73, 72, 70, 73, 77, 76, 72, 69, 70, 86, 83, 75, + 68, 62, 59, 58, 58, 77, 83, 94, 103, 107, 109, 107, 107, 111, 120, 118, + 117, 123, 124, 125, 136, 137, 136, 138, 139, 140, 138, 136, 133, 135, 124, 119, + 124, 126, 119, 115, 114, 113, 110, 108, 109, 109, 107, 101, 96, 112, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 112, 124, 126, 139, 129, + 114, 98, 84, 75, 70, 69, 73, 68, 68, 69, 67, 63, 62, 65, 59, 59, + 60, 65, 74, 86, 97, 105, 111, 113, 116, 117, 116, 117, 117, 119, 119, 127, + 126, 125, 132, 135, 137, 146, 137, 140, 143, 141, 136, 132, 132, 133, 133, 121, + 117, 125, 130, 124, 120, 123, 119, 114, 110, 109, 110, 109, 105, 102, 95, 195, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 117, 123, + 124, 128, 127, 124, 119, 114, 112, 121, 105, 90, 79, 75, 79, 90, 103, 118, + 118, 118, 119, 118, 118, 119, 118, 130, 129, 127, 124, 120, 118, 119, 120, 123, + 134, 137, 140, 148, 147, 143, 149, 135, 139, 142, 139, 132, 128, 131, 135, 139, + 129, 124, 127, 127, 121, 117, 119, 116, 114, 111, 111, 111, 113, 113, 113, 90, + 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 129, 130, 133, 138, 143, 140, 132, 125, 123, 121, 123, 126, 123, 115, 109, 109, + 122, 127, 132, 137, 139, 140, 140, 139, 130, 131, 131, 129, 127, 126, 128, 130, + 135, 145, 145, 146, 153, 151, 145, 149, 145, 146, 144, 140, 135, 133, 134, 136, + 138, 134, 130, 126, 122, 118, 116, 115, 112, 113, 114, 115, 114, 113, 113, 116, + 94, 113, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 216, 144, 139, 133, 122, 121, 123, 128, 127, 122, 119, + 119, 123, 125, 126, 129, 132, 133, 134, 136, 135, 130, 122, 117, 118, 126, 140, + 150, 149, 153, 147, 143, 147, 146, 144, 151, 161, 156, 149, 144, 141, 139, 137, + 135, 121, 124, 124, 122, 121, 125, 128, 129, 110, 115, 119, 120, 116, 111, 111, + 112, 103, 105, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 133, 129, 127, 123, + 121, 118, 120, 121, 122, 125, 126, 124, 121, 118, 120, 122, 131, 142, 145, 140, + 140, 145, 149, 142, 140, 148, 153, 151, 146, 146, 154, 155, 150, 142, 140, 141, + 138, 131, 131, 126, 121, 121, 125, 127, 125, 122, 116, 119, 119, 116, 116, 119, + 121, 118, 99, 107, 119, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 211, 122, 122, 121, 121, 136, 134, 137, 142, 139, + 133, 133, 137, 149, 145, 145, 153, 157, 155, 153, 154, 154, 156, 152, 145, 143, + 143, 140, 133, 134, 130, 125, 124, 127, 127, 123, 119, 126, 127, 124, 117, 115, + 116, 116, 114, 99, 88, 105, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 131, 135, + 136, 136, 141, 148, 151, 149, 153, 157, 158, 156, 155, 158, 153, 153, 150, 145, + 143, 143, 139, 133, 132, 129, 127, 127, 128, 128, 124, 121, 133, 133, 129, 121, + 116, 117, 116, 113, 95, 84, 107, 145, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 152, 151, 153, 150, 148, 146, + 143, 141, 139, 134, 130, 126, 125, 125, 128, 130, 130, 128, 127, 130, 132, 131, + 126, 122, 166, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 215, 218, 217, + 216, 217, 217, 216, 213, 210, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 216, 214, 211, 211, 213, 223, + 222, 221, 221, 220, 217, 212, 208, 212, 213, 223, 246, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 242, 209, 222, 212, 215, 215, 214, 217, 223, 225, 222, + 215, 211, 209, 211, 215, 215, 210, 205, 217, 215, 214, 217, 221, 223, 221, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 243, 197, 221, 231, 207, 215, 185, 139, 102, 92, 103, 116, + 122, 152, 141, 130, 128, 137, 154, 168, 176, 183, 187, 194, 205, 215, 221, 221, + 219, 227, 224, 217, 211, 217, 226, 221, 210, 221, 194, 182, 197, 212, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 244, 226, 225, 227, 228, 206, 165, 124, 95, 55, 31, 34, 51, + 62, 63, 55, 49, 44, 44, 52, 62, 69, 73, 86, 96, 117, 146, 177, 204, + 222, 231, 229, 230, 218, 202, 202, 210, 199, 178, 195, 190, 194, 197, 188, 178, + 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 234, 221, 213, 214, 221, 183, 131, 95, 53, 45, 35, 35, 44, + 50, 41, 28, 40, 41, 44, 48, 50, 47, 41, 35, 43, 47, 57, 74, 96, + 121, 141, 153, 157, 198, 225, 206, 167, 153, 170, 192, 169, 179, 182, 179, 183, + 195, 197, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 244, 221, 223, 203, 233, 202, 138, 82, 81, 40, 37, 36, 32, 30, + 33, 36, 30, 21, 27, 26, 26, 27, 29, 32, 33, 33, 45, 43, 40, 38, + 41, 47, 55, 61, 75, 67, 72, 94, 113, 119, 117, 117, 119, 142, 162, 168, + 176, 188, 189, 180, 204, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 223, 226, 227, 207, 248, 200, 172, 51, 70, 32, 42, 26, 26, 22, + 18, 21, 29, 35, 36, 25, 25, 26, 27, 30, 34, 37, 39, 30, 33, 36, + 38, 39, 39, 40, 41, 36, 33, 42, 57, 58, 57, 76, 103, 87, 109, 141, + 162, 159, 152, 163, 181, 189, 189, 229, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 243, 219, 221, 223, 225, 221, 224, 190, 45, 95, 27, 40, 33, 27, 29, + 28, 24, 23, 27, 27, 24, 15, 18, 22, 25, 25, 24, 23, 22, 29, 33, + 39, 41, 39, 36, 34, 33, 40, 32, 27, 27, 26, 27, 39, 54, 91, 81, + 85, 114, 146, 160, 158, 152, 171, 178, 212, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 222, 219, 217, 216, 219, 220, 214, 195, 102, 65, 24, 43, 12, 22, 18, + 20, 21, 21, 27, 30, 30, 23, 16, 16, 15, 14, 14, 18, 23, 26, 24, + 27, 29, 29, 27, 27, 29, 32, 18, 30, 37, 26, 16, 19, 37, 51, 52, + 62, 70, 78, 111, 151, 169, 160, 154, 165, 205, 215, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 227, 224, 201, 223, 211, 212, 218, 205, 129, 53, 26, 29, 29, 24, 20, + 21, 22, 24, 27, 31, 29, 29, 24, 19, 18, 14, 11, 17, 30, 35, 32, + 29, 30, 31, 33, 34, 31, 26, 22, 26, 25, 26, 19, 18, 20, 33, 40, + 41, 47, 60, 74, 101, 126, 141, 140, 148, 146, 207, 215, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 208, 228, 198, 227, 224, 211, 215, 209, 125, 52, 33, 21, 22, 25, 21, 20, + 22, 28, 25, 24, 24, 24, 24, 20, 17, 13, 16, 17, 17, 22, 31, 33, + 30, 28, 23, 19, 22, 28, 30, 26, 21, 35, 32, 29, 26, 26, 30, 36, + 41, 31, 37, 46, 62, 85, 107, 114, 109, 132, 132, 191, 209, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 215, 226, 228, 227, 232, 216, 233, 210, 133, 24, 26, 31, 35, 30, 19, 13, + 17, 21, 24, 19, 16, 17, 22, 25, 24, 21, 8, 15, 22, 25, 27, 30, + 30, 28, 26, 18, 12, 14, 23, 29, 27, 23, 34, 30, 25, 24, 26, 29, + 30, 30, 24, 26, 31, 44, 65, 86, 94, 91, 127, 134, 188, 222, 208, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, + 237, 226, 200, 217, 198, 221, 206, 132, 32, 25, 47, 37, 35, 25, 12, 12, + 23, 32, 32, 21, 16, 15, 18, 25, 28, 26, 22, 11, 18, 26, 28, 27, + 26, 26, 25, 24, 20, 16, 17, 21, 26, 27, 27, 28, 26, 24, 22, 22, + 23, 23, 22, 29, 28, 29, 34, 46, 61, 74, 78, 98, 113, 168, 221, 203, + 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 226, 213, 215, 227, 216, 196, 105, 18, 50, 47, 22, 14, 20, 19, 14, 9, + 19, 34, 37, 26, 24, 21, 21, 23, 25, 24, 18, 13, 20, 23, 27, 27, + 24, 20, 20, 23, 18, 21, 24, 23, 20, 20, 23, 26, 25, 29, 31, 28, + 24, 21, 24, 27, 32, 34, 37, 37, 37, 40, 49, 56, 51, 71, 120, 191, + 194, 216, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, + 235, 226, 210, 210, 221, 174, 54, 34, 47, 30, 18, 47, 23, 22, 27, 28, + 22, 20, 23, 23, 17, 17, 17, 21, 23, 24, 22, 18, 15, 28, 25, 24, + 24, 20, 16, 17, 20, 13, 20, 27, 25, 17, 13, 17, 22, 22, 27, 31, + 29, 23, 21, 25, 30, 21, 28, 39, 46, 45, 42, 45, 49, 45, 58, 89, + 160, 192, 207, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 232, + 218, 192, 217, 245, 185, 87, 41, 22, 41, 42, 37, 14, 24, 17, 14, 17, + 18, 14, 11, 13, 21, 25, 13, 16, 22, 23, 23, 23, 25, 26, 31, 24, + 20, 21, 20, 16, 15, 18, 13, 19, 23, 22, 17, 14, 17, 21, 19, 21, + 23, 23, 21, 21, 24, 27, 20, 21, 29, 41, 46, 44, 44, 45, 51, 55, + 68, 127, 182, 173, 188, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 225, + 205, 211, 236, 220, 144, 66, 27, 40, 45, 41, 13, 30, 27, 32, 25, 26, + 22, 21, 23, 23, 21, 22, 23, 24, 27, 30, 27, 21, 20, 23, 27, 30, + 22, 17, 20, 21, 17, 15, 16, 17, 18, 20, 19, 18, 18, 20, 22, 21, + 19, 18, 20, 24, 27, 27, 27, 34, 24, 18, 24, 30, 30, 29, 29, 28, + 29, 33, 87, 156, 125, 134, 151, 215, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 228, + 215, 216, 224, 235, 94, 10, 49, 43, 28, 27, 28, 26, 26, 26, 28, 26, + 17, 19, 21, 17, 15, 17, 21, 21, 22, 24, 24, 17, 16, 21, 23, 19, + 29, 19, 17, 23, 23, 13, 9, 13, 21, 22, 19, 14, 14, 19, 22, 21, + 20, 19, 19, 19, 21, 23, 24, 24, 28, 21, 18, 22, 28, 31, 34, 36, + 33, 16, 46, 62, 133, 133, 154, 140, 184, 208, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 226, + 230, 212, 241, 188, 20, 35, 46, 27, 33, 38, 34, 31, 26, 22, 20, 22, + 20, 23, 18, 16, 17, 19, 19, 20, 19, 20, 22, 23, 17, 17, 21, 22, + 19, 26, 18, 17, 22, 20, 11, 8, 13, 17, 19, 17, 13, 13, 17, 19, + 17, 17, 17, 16, 17, 19, 20, 21, 21, 25, 20, 17, 21, 25, 27, 31, + 36, 31, 22, 38, 35, 64, 60, 86, 92, 139, 188, 214, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 220, + 223, 225, 238, 185, 35, 23, 26, 34, 24, 37, 35, 32, 29, 25, 23, 24, + 26, 26, 29, 16, 11, 17, 21, 18, 17, 17, 17, 19, 21, 18, 18, 20, + 20, 18, 21, 16, 16, 20, 17, 9, 8, 13, 15, 18, 18, 15, 15, 18, + 18, 15, 16, 17, 17, 18, 18, 19, 20, 20, 20, 17, 17, 20, 21, 21, + 27, 34, 31, 30, 31, 25, 24, 26, 45, 62, 95, 148, 198, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 213, + 218, 221, 219, 212, 46, 36, 44, 41, 47, 40, 25, 27, 26, 26, 25, 25, + 27, 29, 28, 29, 15, 11, 17, 20, 14, 14, 19, 16, 17, 20, 19, 19, + 20, 19, 17, 16, 14, 16, 18, 15, 9, 9, 13, 15, 19, 20, 18, 18, + 20, 19, 15, 17, 18, 20, 20, 20, 20, 20, 21, 16, 15, 16, 18, 17, + 16, 22, 30, 33, 32, 21, 31, 24, 38, 36, 44, 62, 88, 139, 195, 225, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 212, + 216, 226, 224, 213, 115, 27, 44, 32, 27, 41, 35, 27, 26, 27, 30, 29, + 28, 25, 25, 21, 23, 15, 14, 17, 16, 11, 16, 23, 17, 17, 19, 20, + 20, 18, 17, 18, 14, 14, 15, 16, 15, 11, 11, 13, 14, 19, 20, 18, + 18, 20, 19, 14, 15, 18, 21, 21, 19, 18, 18, 20, 14, 14, 15, 17, + 15, 14, 19, 26, 30, 32, 17, 29, 17, 33, 20, 23, 35, 45, 76, 128, + 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 218, + 215, 224, 231, 210, 179, 51, 59, 22, 54, 12, 13, 29, 29, 20, 22, 28, + 30, 30, 27, 26, 21, 17, 17, 18, 16, 14, 16, 23, 27, 21, 18, 19, + 21, 20, 17, 16, 19, 15, 14, 13, 15, 17, 17, 15, 13, 12, 16, 17, + 15, 15, 17, 16, 12, 11, 15, 19, 19, 16, 14, 15, 17, 16, 13, 14, + 16, 16, 14, 17, 23, 21, 32, 23, 28, 7, 20, 16, 24, 27, 42, 55, + 72, 118, 221, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 219, + 217, 215, 221, 210, 159, 101, 36, 32, 78, 18, 20, 30, 36, 13, 20, 22, + 25, 28, 31, 30, 28, 24, 17, 20, 19, 13, 16, 27, 34, 29, 26, 21, + 20, 22, 20, 16, 16, 20, 18, 15, 12, 14, 20, 23, 19, 13, 13, 16, + 17, 14, 14, 17, 16, 13, 10, 15, 20, 19, 15, 12, 13, 16, 18, 14, + 12, 16, 18, 17, 17, 20, 14, 28, 30, 30, 15, 22, 23, 28, 24, 38, + 47, 45, 70, 180, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 216, + 220, 217, 212, 210, 182, 105, 27, 26, 53, 6, 32, 40, 18, 21, 25, 29, + 31, 30, 27, 26, 23, 20, 14, 17, 18, 16, 8, 16, 37, 39, 28, 27, + 22, 19, 22, 20, 15, 16, 21, 20, 15, 12, 14, 22, 27, 22, 13, 16, + 19, 19, 15, 15, 19, 19, 16, 12, 17, 22, 22, 17, 14, 15, 17, 21, + 14, 12, 16, 20, 19, 18, 18, 16, 23, 31, 28, 28, 26, 18, 10, 12, + 14, 27, 30, 32, 117, 178, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 223, + 213, 226, 224, 218, 228, 109, 39, 39, 37, 29, 23, 23, 27, 31, 31, 31, + 30, 25, 27, 44, 33, 21, 35, 20, 17, 9, 23, 12, 18, 60, 53, 17, + 7, 31, 15, 2, 20, 17, 10, 32, 11, 25, 17, 12, 29, 31, 21, 25, + 18, 17, 15, 16, 20, 21, 16, 8, 10, 15, 16, 15, 15, 17, 16, 13, + 19, 15, 17, 17, 16, 26, 30, 19, 14, 18, 27, 30, 30, 21, 19, 21, + 15, 17, 24, 33, 43, 75, 135, 190, 229, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, + 225, 224, 219, 207, 218, 208, 33, 57, 40, 37, 30, 28, 27, 29, 29, 29, + 28, 27, 28, 19, 23, 18, 19, 34, 20, 23, 10, 2, 42, 19, 67, 30, + 21, 20, 21, 34, 23, 24, 29, 20, 30, 14, 27, 21, 17, 32, 35, 26, + 27, 25, 21, 16, 16, 19, 19, 17, 11, 16, 19, 20, 18, 19, 22, 20, + 16, 18, 15, 18, 18, 18, 28, 32, 19, 15, 17, 24, 31, 31, 28, 26, + 30, 18, 20, 25, 31, 33, 51, 92, 134, 186, 228, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, + 222, 225, 246, 189, 239, 222, 80, 60, 26, 48, 34, 31, 32, 30, 28, 27, + 24, 22, 15, 29, 14, 14, 28, 41, 54, 45, 48, 18, 32, 58, 62, 58, + 34, 29, 35, 17, 39, 33, 18, 26, 21, 20, 20, 31, 26, 20, 31, 37, + 30, 27, 32, 24, 17, 16, 18, 18, 15, 12, 17, 18, 17, 16, 19, 23, + 21, 15, 16, 15, 20, 19, 19, 30, 33, 19, 17, 17, 20, 26, 27, 27, + 28, 33, 21, 23, 26, 28, 24, 27, 47, 72, 159, 218, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, + 220, 221, 221, 214, 225, 220, 140, 44, 42, 62, 32, 32, 36, 38, 33, 30, + 28, 25, 23, 17, 33, 16, 18, 39, 40, 42, 38, 39, 26, 59, 49, 60, + 36, 25, 16, 40, 30, 22, 26, 23, 16, 20, 13, 27, 33, 28, 21, 29, + 40, 39, 33, 29, 23, 16, 17, 20, 19, 15, 13, 15, 16, 15, 15, 20, + 26, 25, 19, 14, 15, 20, 19, 19, 32, 35, 18, 23, 19, 18, 21, 21, + 20, 21, 26, 23, 23, 24, 25, 21, 19, 28, 41, 117, 207, 224, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 220, 219, 218, 216, 199, 234, 128, 49, 49, 56, 50, 43, 39, 44, 47, 39, + 35, 36, 33, 29, 19, 27, 15, 36, 62, 54, 56, 68, 42, 77, 89, 78, + 48, 65, 39, 40, 33, 50, 4, 25, 48, 17, 24, 20, 26, 28, 25, 17, + 24, 44, 53, 44, 24, 16, 12, 17, 21, 17, 15, 14, 15, 17, 18, 19, + 25, 32, 33, 29, 13, 16, 21, 18, 18, 34, 37, 20, 27, 21, 18, 19, + 19, 17, 17, 21, 25, 24, 21, 21, 20, 21, 28, 36, 56, 165, 214, 226, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 220, 220, 219, 216, 213, 228, 189, 24, 71, 48, 45, 60, 35, 48, 52, 48, + 40, 35, 38, 36, 27, 31, 27, 22, 52, 71, 62, 73, 86, 39, 74, 90, + 46, 37, 49, 40, 36, 22, 46, 6, 31, 63, 26, 27, 35, 19, 21, 21, + 15, 19, 49, 64, 54, 23, 14, 11, 19, 22, 18, 15, 15, 11, 16, 18, + 18, 22, 30, 33, 33, 15, 19, 23, 18, 18, 37, 43, 25, 25, 20, 18, + 21, 22, 21, 19, 21, 25, 24, 21, 19, 19, 23, 29, 35, 25, 120, 193, + 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 243, 220, 221, 220, 217, 213, 215, 74, 76, 66, 65, 52, 43, 44, 65, 65, + 55, 41, 36, 42, 40, 29, 45, 41, 41, 61, 57, 43, 49, 44, 87, 82, + 98, 36, 70, 48, 57, 54, 34, 29, 28, 37, 48, 35, 30, 58, 21, 22, + 25, 20, 20, 50, 65, 49, 28, 15, 11, 18, 22, 16, 13, 16, 7, 13, + 17, 15, 15, 21, 27, 29, 18, 22, 25, 17, 18, 40, 47, 31, 22, 17, + 17, 21, 24, 22, 18, 18, 22, 24, 23, 22, 21, 24, 28, 31, 25, 75, + 147, 212, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 218, 219, 222, 222, 218, 215, 88, 102, 59, 78, 86, 53, 34, 64, 83, + 80, 67, 49, 45, 51, 47, 34, 35, 43, 59, 82, 74, 67, 76, 54, 125, + 98, 72, 57, 71, 64, 44, 63, 60, 17, 52, 40, 23, 39, 34, 79, 27, + 25, 31, 24, 21, 47, 59, 38, 33, 19, 11, 17, 21, 15, 14, 19, 11, + 19, 24, 20, 16, 20, 27, 32, 22, 26, 28, 19, 20, 43, 52, 34, 17, + 15, 15, 21, 23, 19, 13, 12, 16, 22, 26, 26, 26, 27, 28, 28, 23, + 34, 95, 181, 205, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 214, 219, 233, 192, 218, 55, 70, 70, 91, 85, 59, 70, 69, + 96, 54, 71, 47, 46, 56, 52, 32, 76, 67, 70, 91, 56, 61, 74, 94, + 95, 88, 78, 77, 73, 54, 56, 82, 47, 46, 63, 54, 27, 40, 64, 56, + 27, 37, 27, 21, 16, 59, 65, 52, 31, 4, 17, 6, 19, 17, 17, 14, + 15, 14, 22, 16, 23, 26, 19, 36, 39, 25, 14, 17, 26, 32, 34, 37, + 16, 11, 22, 21, 21, 24, 15, 25, 16, 23, 20, 25, 35, 24, 14, 26, + 23, 41, 60, 108, 177, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 243, 221, 222, 214, 220, 224, 128, 73, 74, 63, 78, 77, 57, 62, + 57, 62, 78, 61, 90, 44, 70, 42, 80, 87, 93, 62, 95, 53, 99, 76, + 85, 96, 62, 81, 82, 40, 66, 92, 38, 50, 48, 50, 57, 29, 39, 32, + 24, 41, 52, 22, 17, 16, 56, 74, 77, 36, 6, 16, 5, 18, 25, 26, + 14, 11, 23, 18, 25, 12, 37, 17, 38, 39, 26, 15, 16, 21, 25, 27, + 30, 20, 14, 24, 21, 21, 25, 15, 25, 26, 28, 32, 24, 15, 32, 40, + 21, 28, 48, 60, 83, 143, 201, 216, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 218, 214, 227, 217, 211, 177, 56, 67, 61, 49, 64, 70, 58, + 56, 46, 39, 81, 73, 67, 72, 63, 59, 71, 81, 78, 87, 71, 94, 73, + 71, 60, 81, 122, 69, 24, 63, 64, 45, 82, 62, 70, 73, 64, 68, 76, + 58, 28, 51, 72, 20, 11, 15, 49, 84, 102, 50, 9, 13, 4, 21, 31, + 32, 14, 14, 25, 28, 26, 22, 38, 25, 42, 51, 37, 24, 22, 25, 25, + 23, 24, 18, 11, 20, 18, 19, 22, 12, 21, 34, 21, 33, 30, 9, 33, + 52, 20, 23, 27, 35, 51, 93, 159, 198, 217, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 218, 207, 224, 226, 186, 60, 51, 46, 44, 45, 57, 61, + 52, 44, 36, 48, 85, 51, 84, 53, 55, 49, 72, 88, 92, 88, 103, 91, + 68, 53, 88, 108, 86, 50, 55, 90, 72, 39, 44, 65, 84, 95, 52, 92, + 96, 90, 40, 46, 93, 36, 11, 12, 50, 93, 116, 70, 8, 8, 10, 26, + 30, 32, 17, 27, 16, 46, 22, 54, 28, 38, 50, 65, 47, 31, 29, 32, + 30, 23, 19, 15, 9, 19, 19, 21, 25, 13, 21, 38, 17, 26, 40, 28, + 31, 44, 35, 38, 16, 24, 50, 73, 119, 172, 197, 224, 255, 255, 255, 255, + 255, 255, 255, 255, 215, 219, 214, 219, 213, 117, 7, 59, 40, 43, 52, 51, + 44, 36, 30, 33, 67, 58, 47, 82, 40, 20, 65, 106, 86, 90, 79, 84, + 71, 59, 62, 105, 97, 30, 44, 78, 45, 40, 69, 57, 93, 102, 94, 73, + 93, 104, 90, 62, 38, 103, 61, 19, 10, 57, 97, 116, 89, 6, 8, 22, + 32, 21, 28, 22, 32, 9, 41, 34, 69, 31, 37, 58, 64, 45, 29, 29, + 36, 35, 26, 20, 15, 9, 20, 22, 27, 31, 18, 24, 32, 31, 27, 31, + 38, 35, 37, 51, 47, 23, 26, 41, 49, 84, 144, 180, 192, 255, 255, 255, + 255, 255, 255, 255, 255, 216, 220, 227, 215, 158, 42, 41, 43, 41, 40, 49, + 37, 28, 30, 30, 45, 48, 25, 43, 17, 32, 34, 102, 85, 51, 62, 73, + 46, 69, 62, 73, 62, 40, 35, 28, 27, 32, 51, 93, 135, 118, 110, 84, + 123, 102, 119, 89, 98, 33, 91, 76, 25, 7, 60, 85, 104, 99, 9, 15, + 30, 33, 19, 30, 25, 29, 17, 26, 57, 63, 56, 33, 64, 61, 47, 36, + 38, 43, 43, 37, 36, 16, 7, 17, 18, 23, 29, 17, 23, 17, 42, 31, + 12, 22, 34, 36, 45, 41, 39, 35, 22, 19, 56, 114, 149, 166, 255, 255, + 255, 255, 255, 255, 255, 255, 218, 219, 223, 209, 74, 23, 52, 32, 41, 31, + 38, 24, 22, 34, 29, 40, 15, 31, 11, 25, 24, 107, 78, 47, 33, 64, + 45, 73, 38, 94, 58, 41, 46, 38, 42, 66, 99, 132, 135, 110, 107, 92, + 91, 128, 110, 118, 98, 89, 50, 72, 77, 32, 9, 65, 73, 98, 97, 18, + 30, 34, 29, 24, 38, 24, 25, 28, 30, 65, 65, 80, 45, 63, 59, 55, + 52, 50, 45, 40, 40, 47, 26, 13, 16, 13, 18, 26, 17, 26, 13, 31, + 38, 25, 15, 25, 33, 29, 39, 52, 47, 30, 24, 41, 85, 130, 162, 182, + 255, 255, 255, 255, 255, 255, 242, 219, 215, 208, 203, 12, 47, 17, 40, 48, + 30, 34, 21, 23, 34, 15, 15, 18, 22, 32, 62, 90, 100, 38, 45, 41, + 40, 32, 41, 15, 43, 44, 34, 67, 103, 119, 126, 139, 131, 123, 133, 103, + 91, 129, 111, 130, 119, 122, 63, 74, 65, 80, 45, 19, 74, 69, 102, 89, + 24, 40, 34, 22, 31, 49, 26, 26, 32, 49, 54, 78, 87, 63, 57, 55, + 58, 60, 52, 36, 27, 31, 44, 43, 24, 24, 15, 21, 29, 25, 36, 23, + 16, 46, 62, 29, 20, 32, 22, 26, 35, 37, 38, 31, 16, 45, 106, 152, + 165, 255, 255, 255, 255, 255, 255, 211, 211, 220, 211, 126, 22, 49, 48, 31, + 46, 37, 30, 27, 27, 26, 23, 17, 21, 21, 52, 85, 77, 38, 26, 43, + 23, 49, 60, 55, 53, 59, 71, 90, 111, 123, 134, 135, 132, 131, 130, 127, + 75, 109, 129, 121, 120, 126, 114, 92, 79, 57, 65, 41, 19, 40, 102, 62, + 66, 94, 21, 43, 37, 42, 42, 26, 33, 33, 43, 40, 75, 86, 76, 41, + 56, 50, 52, 66, 46, 20, 30, 36, 40, 48, 22, 13, 19, 23, 41, 23, + 23, 25, 22, 46, 45, 29, 35, 15, 19, 35, 53, 36, 40, 48, 42, 74, + 133, 160, 202, 255, 255, 255, 255, 255, 214, 217, 203, 185, 38, 19, 39, 37, + 44, 26, 26, 26, 26, 25, 22, 24, 23, 8, 59, 85, 58, 26, 29, 48, + 57, 87, 106, 112, 104, 104, 105, 110, 123, 127, 133, 139, 140, 141, 138, 128, + 118, 101, 121, 131, 125, 122, 127, 115, 97, 71, 75, 65, 41, 27, 49, 93, + 71, 34, 84, 38, 44, 35, 47, 40, 40, 39, 36, 44, 42, 74, 83, 79, + 52, 42, 46, 51, 61, 39, 17, 29, 32, 45, 43, 13, 14, 22, 17, 34, + 41, 27, 27, 23, 43, 39, 23, 27, 7, 21, 28, 48, 43, 43, 48, 39, + 61, 98, 147, 179, 255, 255, 255, 255, 255, 215, 209, 209, 125, 0, 37, 38, + 34, 40, 24, 28, 30, 24, 16, 14, 22, 26, 40, 27, 18, 22, 53, 93, + 123, 134, 134, 144, 144, 137, 139, 137, 135, 141, 140, 138, 138, 139, 141, 137, + 122, 105, 126, 130, 128, 125, 126, 126, 116, 106, 77, 100, 67, 38, 21, 52, + 84, 85, 34, 92, 64, 50, 40, 67, 36, 42, 44, 41, 50, 46, 73, 75, + 82, 69, 45, 51, 57, 62, 40, 17, 27, 28, 50, 58, 28, 16, 21, 17, + 31, 47, 31, 26, 20, 31, 28, 24, 33, 22, 25, 18, 40, 49, 47, 48, + 40, 46, 63, 112, 166, 255, 255, 255, 255, 242, 214, 204, 218, 42, 16, 42, + 35, 39, 28, 30, 30, 25, 15, 9, 16, 31, 39, 37, 28, 52, 101, 125, + 122, 132, 158, 138, 141, 134, 131, 139, 140, 136, 137, 140, 139, 135, 134, 136, + 133, 119, 104, 132, 128, 125, 126, 126, 121, 115, 117, 80, 107, 84, 61, 21, + 51, 78, 71, 54, 99, 69, 42, 47, 91, 34, 36, 46, 43, 56, 51, 67, + 62, 78, 82, 61, 53, 53, 67, 48, 18, 25, 27, 45, 80, 62, 22, 17, + 25, 32, 39, 49, 34, 22, 20, 16, 24, 41, 41, 32, 15, 32, 51, 48, + 49, 47, 40, 51, 75, 143, 255, 255, 255, 255, 217, 214, 215, 176, 0, 28, + 23, 23, 31, 25, 12, 12, 9, 5, 12, 31, 46, 51, 61, 93, 127, 137, + 132, 130, 135, 138, 139, 138, 129, 126, 137, 139, 136, 142, 141, 139, 137, 133, + 132, 132, 126, 119, 127, 124, 126, 129, 124, 115, 113, 122, 79, 96, 105, 101, + 33, 54, 80, 52, 62, 90, 66, 36, 40, 94, 38, 45, 46, 44, 59, 56, + 61, 44, 65, 85, 68, 43, 34, 61, 52, 18, 24, 33, 33, 70, 74, 37, + 22, 27, 30, 40, 63, 45, 35, 21, 12, 22, 33, 36, 35, 19, 25, 44, + 43, 45, 51, 40, 54, 62, 138, 198, 255, 255, 255, 218, 215, 206, 90, 17, + 29, 27, 25, 18, 34, 57, 62, 63, 67, 82, 100, 106, 101, 121, 128, 121, + 110, 121, 146, 153, 141, 141, 139, 131, 130, 139, 138, 136, 142, 136, 137, 137, + 132, 129, 132, 133, 131, 129, 128, 130, 132, 126, 113, 114, 122, 98, 99, 116, + 109, 36, 46, 96, 73, 74, 96, 82, 58, 37, 75, 41, 56, 60, 46, 56, + 55, 59, 34, 55, 80, 63, 33, 16, 45, 42, 16, 29, 38, 27, 32, 54, + 49, 29, 22, 26, 49, 50, 37, 42, 29, 20, 30, 28, 27, 35, 31, 22, + 31, 33, 37, 49, 39, 52, 66, 151, 157, 255, 255, 255, 217, 214, 179, 44, + 37, 27, 38, 28, 26, 58, 84, 88, 91, 92, 102, 115, 113, 102, 125, 129, + 136, 139, 135, 130, 131, 135, 133, 136, 134, 135, 139, 133, 130, 139, 133, 134, + 134, 130, 129, 132, 135, 133, 134, 132, 131, 130, 127, 119, 118, 121, 117, 113, + 118, 94, 43, 36, 94, 101, 89, 101, 91, 88, 42, 61, 45, 61, 80, 51, + 49, 49, 59, 33, 49, 74, 72, 48, 25, 34, 25, 13, 29, 29, 35, 9, + 37, 44, 22, 21, 26, 40, 35, 27, 44, 34, 26, 39, 30, 28, 35, 49, + 27, 22, 28, 30, 44, 39, 44, 58, 159, 160, 255, 255, 255, 214, 211, 160, + 46, 21, 18, 26, 19, 47, 90, 104, 107, 107, 105, 110, 123, 123, 116, 124, + 128, 131, 131, 136, 142, 144, 139, 129, 135, 139, 142, 144, 134, 131, 143, 136, + 136, 135, 133, 135, 139, 136, 130, 134, 132, 127, 127, 128, 128, 125, 121, 108, + 121, 127, 96, 67, 34, 77, 96, 89, 88, 79, 99, 51, 62, 54, 59, 95, + 53, 39, 43, 57, 32, 46, 69, 88, 74, 46, 30, 14, 10, 28, 18, 47, + 12, 37, 32, 7, 27, 30, 18, 41, 31, 49, 35, 25, 38, 28, 27, 37, + 64, 35, 21, 28, 29, 41, 38, 37, 39, 155, 173, 255, 255, 255, 209, 208, + 118, 45, 30, 15, 31, 27, 57, 110, 113, 115, 116, 114, 115, 121, 123, 119, + 125, 129, 130, 129, 132, 134, 135, 134, 136, 141, 144, 141, 137, 135, 138, 141, + 141, 140, 138, 137, 137, 137, 134, 131, 134, 143, 145, 140, 135, 135, 130, 127, + 131, 125, 120, 101, 67, 51, 60, 69, 105, 87, 82, 81, 75, 80, 76, 58, + 89, 94, 57, 27, 36, 35, 34, 55, 82, 85, 78, 52, 24, 12, 16, 25, + 48, 51, 29, 11, 19, 19, 18, 33, 45, 39, 29, 24, 30, 41, 46, 45, + 42, 52, 57, 40, 17, 23, 36, 36, 54, 50, 103, 148, 255, 255, 255, 211, + 208, 112, 33, 21, 14, 25, 31, 71, 113, 109, 115, 116, 113, 110, 113, 115, + 117, 124, 126, 126, 127, 132, 137, 143, 146, 144, 141, 140, 144, 150, 151, 146, + 140, 140, 138, 140, 141, 142, 144, 141, 139, 138, 141, 143, 137, 134, 132, 131, + 133, 124, 133, 134, 110, 74, 64, 71, 65, 93, 95, 84, 79, 90, 81, 65, + 67, 81, 116, 88, 31, 27, 43, 46, 55, 44, 63, 78, 77, 55, 30, 20, + 21, 38, 44, 28, 15, 19, 17, 14, 26, 38, 58, 70, 58, 40, 38, 55, + 73, 41, 43, 47, 37, 19, 22, 35, 38, 40, 44, 86, 144, 197, 255, 255, + 210, 206, 109, 28, 21, 23, 23, 43, 95, 120, 111, 117, 120, 116, 110, 112, + 117, 120, 114, 117, 121, 124, 126, 129, 133, 137, 144, 142, 143, 148, 155, 157, + 152, 144, 140, 138, 140, 142, 143, 142, 139, 136, 140, 139, 138, 133, 126, 120, + 124, 133, 127, 134, 127, 93, 61, 67, 85, 81, 79, 94, 82, 80, 104, 85, + 57, 80, 78, 102, 93, 68, 61, 45, 31, 38, 41, 56, 72, 74, 50, 19, + 5, 6, 29, 35, 28, 20, 20, 14, 10, 18, 36, 49, 59, 55, 48, 47, + 52, 55, 45, 36, 36, 33, 20, 20, 30, 36, 30, 39, 67, 136, 153, 255, + 255, 208, 199, 103, 29, 25, 35, 20, 52, 110, 120, 121, 122, 121, 118, 115, + 114, 116, 118, 118, 122, 129, 136, 136, 131, 131, 134, 134, 142, 150, 150, 150, + 146, 149, 154, 147, 145, 145, 145, 143, 140, 134, 131, 143, 139, 135, 128, 117, + 106, 108, 118, 116, 119, 111, 85, 60, 69, 91, 98, 72, 76, 69, 79, 100, + 83, 63, 80, 83, 89, 87, 90, 90, 60, 29, 25, 62, 67, 78, 79, 59, + 28, 14, 24, 26, 31, 29, 25, 20, 12, 10, 17, 30, 28, 28, 33, 45, + 51, 43, 29, 53, 34, 29, 32, 23, 18, 24, 31, 34, 34, 57, 122, 157, + 255, 255, 209, 198, 89, 26, 21, 38, 16, 55, 118, 112, 125, 118, 111, 108, + 106, 102, 100, 96, 97, 99, 105, 112, 113, 110, 114, 123, 128, 137, 146, 148, + 148, 146, 150, 154, 153, 150, 152, 150, 147, 142, 135, 129, 138, 137, 133, 123, + 108, 93, 88, 92, 86, 85, 91, 92, 77, 71, 83, 92, 71, 52, 55, 74, + 82, 78, 73, 69, 86, 106, 103, 84, 84, 87, 67, 40, 20, 34, 56, 70, + 60, 35, 16, 15, 35, 31, 31, 30, 21, 14, 16, 20, 16, 26, 34, 35, + 34, 39, 43, 45, 55, 31, 25, 32, 26, 20, 24, 29, 41, 28, 52, 105, + 173, 255, 255, 212, 200, 88, 33, 15, 38, 18, 69, 127, 110, 110, 97, 88, + 83, 84, 76, 69, 64, 61, 57, 57, 63, 67, 71, 86, 102, 123, 124, 130, + 141, 153, 156, 151, 142, 145, 145, 146, 148, 145, 141, 133, 128, 131, 132, 127, + 113, 98, 87, 76, 70, 67, 55, 60, 74, 65, 58, 69, 81, 69, 43, 46, + 62, 64, 69, 72, 59, 70, 87, 102, 99, 92, 87, 79, 69, 46, 59, 76, + 87, 83, 63, 40, 29, 45, 35, 33, 35, 24, 19, 23, 22, 12, 24, 32, + 29, 25, 30, 42, 50, 49, 27, 23, 30, 28, 25, 28, 29, 41, 22, 45, + 96, 183, 255, 255, 214, 200, 100, 49, 9, 33, 25, 84, 132, 105, 82, 71, + 63, 61, 59, 49, 45, 46, 52, 48, 47, 54, 55, 59, 75, 93, 103, 108, + 121, 139, 154, 155, 147, 137, 142, 143, 145, 149, 147, 141, 134, 129, 122, 127, + 119, 100, 88, 88, 76, 61, 61, 45, 43, 49, 44, 48, 61, 67, 62, 55, + 48, 49, 58, 62, 58, 52, 48, 48, 74, 101, 99, 80, 75, 77, 67, 76, + 78, 75, 73, 66, 44, 24, 56, 37, 35, 40, 29, 24, 28, 22, 17, 17, + 15, 14, 21, 31, 36, 35, 43, 27, 24, 29, 26, 27, 28, 25, 32, 21, + 36, 103, 184, 255, 255, 213, 198, 115, 59, 3, 23, 27, 91, 130, 97, 62, + 55, 52, 50, 46, 38, 39, 43, 47, 45, 48, 56, 54, 48, 55, 69, 75, + 94, 123, 142, 149, 145, 141, 138, 149, 151, 153, 154, 153, 146, 137, 132, 113, + 120, 111, 87, 82, 87, 77, 55, 48, 44, 47, 48, 45, 53, 55, 43, 53, + 71, 52, 39, 60, 58, 42, 53, 39, 43, 57, 65, 76, 94, 94, 72, 59, + 72, 78, 78, 86, 86, 62, 35, 58, 37, 36, 44, 32, 28, 30, 20, 18, + 20, 18, 15, 19, 27, 33, 34, 40, 28, 26, 27, 24, 25, 25, 18, 25, + 24, 31, 113, 181, 255, 255, 207, 198, 139, 51, 16, 16, 36, 111, 73, 60, + 39, 38, 34, 30, 32, 41, 46, 45, 51, 42, 38, 39, 35, 32, 44, 60, + 67, 86, 109, 120, 129, 139, 144, 143, 142, 138, 138, 145, 147, 139, 131, 126, + 121, 109, 99, 94, 82, 66, 64, 70, 61, 50, 49, 55, 52, 41, 43, 54, + 60, 63, 61, 55, 56, 61, 56, 44, 36, 36, 48, 64, 69, 66, 77, 92, + 78, 82, 82, 77, 82, 85, 69, 52, 52, 58, 54, 30, 37, 45, 25, 41, + 25, 23, 18, 11, 12, 16, 17, 16, 31, 18, 22, 17, 20, 27, 20, 25, + 23, 16, 32, 94, 219, 255, 255, 209, 201, 140, 58, 30, 23, 45, 94, 60, + 45, 28, 30, 34, 35, 41, 50, 53, 50, 37, 35, 39, 46, 48, 45, 42, + 44, 57, 75, 98, 116, 131, 137, 136, 127, 127, 127, 131, 137, 141, 140, 132, + 126, 113, 99, 91, 91, 89, 81, 79, 84, 79, 69, 65, 70, 76, 81, 94, + 108, 121, 122, 114, 101, 91, 85, 72, 55, 65, 58, 55, 54, 51, 44, 53, + 65, 84, 82, 76, 78, 89, 97, 81, 60, 46, 48, 51, 39, 47, 56, 33, + 36, 28, 25, 20, 13, 13, 16, 18, 17, 26, 15, 23, 20, 23, 28, 19, + 22, 26, 16, 30, 92, 215, 255, 255, 211, 204, 147, 61, 31, 12, 41, 60, + 45, 32, 36, 46, 59, 70, 80, 89, 87, 82, 79, 82, 86, 90, 92, 90, + 78, 66, 69, 77, 89, 103, 120, 129, 125, 115, 119, 124, 132, 133, 138, 143, + 136, 124, 115, 101, 95, 100, 105, 105, 105, 108, 118, 110, 103, 103, 110, 120, + 131, 137, 136, 141, 138, 128, 122, 116, 106, 92, 82, 71, 61, 60, 56, 50, + 55, 62, 73, 76, 75, 78, 84, 90, 82, 74, 43, 30, 32, 30, 37, 51, + 39, 26, 28, 27, 23, 15, 13, 16, 20, 19, 24, 18, 28, 23, 24, 30, + 20, 22, 25, 12, 24, 88, 205, 255, 255, 212, 203, 165, 71, 26, 0, 46, + 47, 59, 54, 68, 78, 94, 109, 120, 127, 123, 117, 122, 124, 123, 116, 117, + 119, 113, 99, 97, 93, 91, 94, 103, 113, 118, 118, 120, 132, 139, 134, 137, + 143, 137, 122, 119, 111, 106, 109, 114, 113, 117, 119, 113, 111, 108, 110, 124, + 139, 144, 143, 151, 159, 158, 148, 140, 135, 128, 117, 117, 106, 95, 88, 75, + 60, 46, 40, 54, 68, 83, 82, 76, 74, 79, 88, 56, 25, 14, 12, 14, + 36, 42, 26, 28, 29, 25, 18, 16, 18, 22, 22, 25, 22, 32, 24, 24, + 29, 20, 23, 25, 15, 24, 96, 204, 255, 255, 211, 203, 177, 79, 18, 1, + 66, 56, 84, 83, 91, 100, 112, 122, 132, 137, 134, 127, 137, 140, 136, 123, + 118, 123, 122, 115, 106, 99, 92, 86, 86, 94, 108, 119, 124, 136, 141, 134, + 133, 138, 133, 119, 112, 112, 111, 110, 108, 105, 111, 116, 123, 121, 118, 118, + 127, 140, 144, 140, 144, 153, 154, 145, 139, 138, 135, 129, 130, 121, 111, 101, + 89, 73, 54, 44, 50, 62, 79, 85, 82, 76, 82, 95, 77, 46, 22, 18, + 15, 29, 46, 34, 28, 31, 31, 25, 21, 21, 24, 23, 27, 26, 35, 24, + 20, 29, 22, 26, 29, 19, 32, 109, 204, 255, 255, 210, 203, 168, 75, 5, + 13, 88, 67, 98, 95, 109, 115, 121, 125, 129, 131, 127, 122, 118, 119, 114, + 103, 95, 92, 88, 85, 94, 90, 87, 82, 80, 83, 97, 115, 121, 130, 132, + 127, 125, 129, 125, 116, 104, 109, 111, 108, 103, 101, 105, 109, 100, 93, 87, + 86, 92, 101, 110, 114, 126, 141, 147, 141, 137, 138, 139, 136, 126, 118, 108, + 101, 95, 87, 80, 75, 58, 52, 57, 74, 88, 90, 87, 88, 84, 69, 44, + 42, 31, 27, 39, 33, 26, 33, 36, 32, 27, 28, 29, 28, 28, 30, 40, + 25, 20, 28, 22, 27, 24, 17, 32, 113, 255, 255, 255, 210, 204, 159, 79, + 3, 30, 102, 72, 97, 97, 114, 118, 120, 120, 122, 121, 115, 108, 124, 118, + 114, 114, 115, 112, 107, 105, 87, 83, 81, 79, 79, 82, 96, 115, 121, 123, + 123, 120, 117, 116, 113, 112, 100, 105, 107, 103, 100, 97, 97, 98, 84, 77, + 76, 84, 91, 95, 105, 118, 122, 138, 149, 144, 138, 134, 132, 125, 141, 133, + 121, 105, 96, 90, 87, 82, 76, 57, 52, 69, 90, 92, 87, 84, 81, 87, + 63, 57, 45, 19, 26, 28, 25, 36, 43, 40, 37, 36, 36, 35, 26, 33, + 46, 30, 21, 29, 22, 25, 20, 17, 32, 112, 255, 255, 255, 211, 205, 165, + 95, 10, 47, 112, 75, 100, 103, 106, 109, 110, 108, 108, 105, 100, 93, 73, + 63, 62, 77, 94, 100, 105, 108, 98, 88, 82, 80, 80, 86, 103, 120, 125, + 121, 120, 119, 114, 106, 105, 108, 97, 98, 99, 96, 93, 90, 87, 84, 74, + 66, 62, 63, 53, 35, 30, 38, 61, 85, 107, 115, 117, 123, 125, 121, 123, + 119, 114, 106, 102, 100, 100, 98, 91, 71, 64, 77, 88, 88, 87, 92, 79, + 97, 71, 64, 49, 15, 17, 28, 26, 37, 45, 45, 43, 41, 42, 40, 23, + 33, 48, 33, 23, 30, 21, 20, 26, 21, 37, 163, 255, 255, 255, 210, 206, + 168, 81, 21, 91, 111, 98, 108, 106, 87, 99, 71, 103, 71, 25, 30, 30, + 9, 19, 214, 96, 41, 124, 97, 95, 93, 101, 114, 84, 82, 77, 107, 115, + 123, 123, 122, 117, 110, 102, 98, 95, 101, 98, 96, 96, 98, 96, 89, 88, + 80, 32, 76, 104, 111, 49, 56, 47, 55, 38, 12, 25, 36, 73, 94, 114, + 93, 85, 92, 107, 108, 94, 94, 102, 113, 98, 81, 71, 73, 79, 88, 90, + 91, 80, 93, 77, 41, 57, 21, 32, 20, 22, 33, 50, 60, 57, 50, 45, + 36, 36, 33, 38, 41, 30, 22, 29, 36, 16, 109, 255, 255, 255, 255, 210, + 206, 177, 94, 32, 106, 115, 100, 100, 98, 85, 85, 87, 55, 28, 54, 19, + 20, 71, 80, 179, 15, 77, 154, 188, 131, 103, 105, 101, 100, 93, 98, 113, + 130, 126, 123, 121, 116, 110, 105, 103, 101, 94, 91, 91, 99, 111, 112, 101, + 94, 84, 77, 128, 124, 111, 60, 60, 29, 43, 36, 38, 71, 60, 51, 45, + 69, 80, 85, 94, 97, 97, 94, 99, 104, 110, 101, 90, 82, 81, 82, 86, + 86, 96, 83, 98, 84, 52, 67, 34, 40, 19, 22, 30, 43, 51, 53, 53, + 53, 39, 46, 50, 54, 56, 36, 24, 29, 26, 18, 122, 255, 255, 255, 255, + 255, 208, 171, 98, 33, 123, 121, 114, 105, 105, 91, 71, 68, 23, 22, 89, + 44, 36, 48, 53, 13, 68, 109, 171, 142, 156, 108, 100, 85, 107, 97, 112, + 114, 132, 126, 121, 117, 112, 108, 106, 108, 108, 95, 88, 88, 99, 112, 111, + 94, 80, 111, 66, 102, 135, 136, 63, 51, 46, 41, 38, 56, 119, 130, 106, + 48, 18, 39, 54, 72, 77, 81, 90, 98, 98, 105, 105, 102, 97, 94, 92, + 92, 91, 97, 85, 98, 89, 65, 75, 45, 44, 23, 22, 26, 33, 39, 42, + 50, 57, 39, 47, 50, 57, 56, 37, 23, 30, 31, 28, 255, 255, 255, 255, + 255, 255, 210, 168, 101, 34, 131, 122, 123, 107, 112, 83, 52, 19, 26, 52, + 101, 78, 61, 25, 41, 53, 68, 166, 126, 131, 96, 109, 100, 86, 98, 99, + 115, 117, 124, 127, 119, 111, 105, 103, 103, 106, 107, 98, 90, 87, 93, 103, + 103, 89, 79, 97, 75, 91, 99, 115, 91, 85, 61, 73, 104, 129, 155, 139, + 121, 69, 34, 18, 32, 53, 68, 82, 93, 101, 104, 103, 106, 110, 110, 105, + 98, 97, 97, 97, 85, 97, 91, 79, 83, 59, 50, 25, 22, 23, 25, 27, + 32, 41, 51, 42, 41, 39, 43, 48, 36, 27, 33, 56, 43, 255, 255, 255, + 255, 255, 255, 211, 182, 110, 40, 133, 118, 118, 102, 107, 62, 35, 20, 43, + 61, 92, 73, 74, 50, 92, 84, 105, 105, 141, 130, 109, 111, 108, 106, 89, + 107, 118, 131, 119, 128, 121, 111, 105, 103, 104, 107, 107, 98, 93, 92, 95, + 102, 107, 108, 108, 98, 93, 103, 97, 100, 91, 101, 98, 98, 117, 116, 116, + 95, 97, 80, 68, 36, 27, 35, 59, 77, 82, 90, 100, 109, 113, 117, 115, + 106, 100, 100, 100, 101, 90, 101, 96, 93, 90, 77, 61, 22, 20, 18, 19, + 20, 24, 34, 44, 45, 41, 32, 38, 47, 40, 32, 39, 84, 59, 255, 255, + 255, 255, 255, 255, 208, 182, 108, 42, 126, 119, 113, 104, 108, 65, 53, 83, + 72, 62, 99, 63, 89, 90, 72, 92, 113, 109, 115, 118, 136, 109, 109, 110, + 83, 108, 119, 137, 117, 129, 120, 112, 107, 106, 107, 108, 107, 100, 98, 98, + 97, 98, 104, 114, 119, 115, 90, 90, 108, 117, 96, 101, 125, 113, 103, 88, + 104, 102, 109, 96, 95, 82, 58, 49, 63, 74, 76, 82, 93, 115, 117, 119, + 112, 104, 98, 96, 97, 99, 91, 100, 93, 96, 88, 86, 68, 25, 19, 14, + 14, 17, 22, 29, 38, 38, 35, 30, 38, 51, 43, 35, 39, 94, 76, 255, + 255, 255, 255, 255, 255, 205, 171, 92, 36, 115, 121, 109, 111, 114, 86, 91, + 111, 102, 84, 110, 90, 112, 116, 103, 127, 107, 121, 107, 98, 96, 103, 99, + 92, 83, 101, 122, 129, 117, 122, 116, 112, 109, 111, 111, 111, 108, 105, 105, + 105, 102, 99, 99, 104, 106, 96, 107, 98, 86, 103, 129, 127, 112, 129, 142, + 145, 155, 128, 120, 112, 122, 122, 108, 97, 98, 100, 100, 101, 102, 114, 114, + 114, 109, 104, 97, 96, 97, 98, 91, 98, 89, 94, 82, 90, 71, 38, 28, + 18, 14, 14, 17, 22, 29, 28, 29, 26, 31, 43, 43, 43, 58, 97, 99, + 97, 255, 255, 255, 255, 255, 202, 171, 91, 40, 112, 125, 106, 113, 114, 101, + 111, 81, 118, 113, 101, 121, 119, 125, 118, 107, 96, 115, 95, 84, 107, 101, + 92, 73, 90, 98, 126, 123, 123, 115, 110, 108, 108, 111, 111, 108, 104, 104, + 104, 105, 104, 103, 101, 101, 98, 107, 108, 103, 106, 105, 105, 114, 138, 127, + 139, 127, 127, 125, 150, 134, 114, 111, 114, 114, 109, 107, 108, 100, 91, 105, + 106, 106, 106, 105, 101, 102, 99, 103, 96, 102, 91, 95, 81, 97, 79, 54, + 40, 22, 13, 12, 13, 17, 21, 24, 27, 25, 26, 35, 40, 57, 85, 97, + 114, 93, 114, 255, 255, 255, 255, 209, 158, 102, 45, 125, 115, 126, 101, 113, + 112, 114, 114, 112, 110, 106, 103, 104, 110, 109, 108, 109, 111, 111, 107, 100, + 94, 98, 95, 87, 98, 117, 125, 115, 106, 104, 102, 102, 104, 106, 106, 106, + 113, 113, 112, 111, 108, 104, 101, 101, 111, 114, 117, 119, 122, 123, 124, 124, + 117, 123, 130, 134, 135, 131, 126, 120, 119, 115, 112, 111, 112, 112, 110, 109, + 101, 101, 102, 104, 106, 104, 103, 99, 93, 92, 90, 88, 91, 90, 82, 71, + 76, 26, 28, 18, 27, 10, 12, 19, 26, 44, 14, 12, 34, 55, 98, 110, + 109, 127, 140, 125, 125, 255, 255, 255, 207, 165, 108, 49, 126, 116, 124, 101, + 116, 120, 120, 123, 119, 118, 112, 109, 108, 117, 119, 120, 119, 116, 114, 111, + 111, 109, 105, 94, 90, 101, 118, 120, 111, 110, 107, 103, 102, 102, 103, 103, + 103, 107, 110, 111, 110, 107, 105, 104, 108, 116, 119, 121, 123, 126, 127, 129, + 130, 130, 127, 125, 122, 122, 122, 125, 124, 116, 115, 115, 117, 117, 114, 108, + 104, 100, 100, 102, 105, 107, 106, 103, 97, 95, 91, 88, 85, 88, 89, 81, + 71, 74, 43, 42, 10, 13, 14, 15, 9, 33, 27, 31, 16, 18, 65, 110, + 124, 112, 120, 146, 121, 129, 137, 255, 255, 206, 169, 109, 51, 124, 115, 118, + 102, 119, 124, 124, 127, 124, 124, 119, 116, 116, 123, 127, 129, 126, 120, 117, + 116, 120, 119, 105, 91, 94, 108, 119, 117, 111, 104, 102, 99, 98, 101, 104, + 106, 107, 103, 108, 113, 113, 110, 107, 110, 115, 118, 120, 121, 122, 125, 128, + 131, 131, 142, 137, 131, 126, 124, 123, 128, 128, 120, 119, 118, 119, 118, 116, + 111, 108, 101, 102, 103, 106, 107, 105, 101, 95, 95, 90, 86, 83, 85, 84, + 79, 72, 72, 48, 46, 14, 7, 10, 16, 14, 20, 5, 44, 34, 26, 87, + 116, 111, 114, 111, 150, 124, 136, 126, 255, 255, 214, 173, 112, 56, 121, 114, + 114, 105, 123, 123, 123, 127, 124, 124, 120, 118, 118, 123, 127, 128, 125, 121, + 120, 119, 121, 112, 96, 87, 99, 113, 117, 114, 114, 104, 100, 96, 94, 96, + 100, 102, 104, 102, 109, 116, 116, 111, 109, 113, 121, 122, 122, 122, 120, 124, + 124, 127, 128, 140, 136, 137, 135, 133, 126, 126, 125, 127, 122, 116, 113, 114, + 116, 118, 119, 109, 107, 105, 104, 104, 102, 99, 94, 92, 87, 83, 79, 81, + 81, 78, 74, 70, 39, 39, 28, 14, 6, 13, 32, 32, 32, 67, 64, 65, + 108, 116, 93, 105, 98, 139, 134, 136, 128, 149, 255, 255, 179, 123, 70, 121, + 117, 116, 113, 126, 122, 122, 126, 124, 124, 120, 118, 118, 123, 123, 122, 122, + 124, 123, 121, 119, 103, 94, 94, 110, 118, 116, 114, 117, 112, 106, 98, 93, + 92, 93, 95, 96, 105, 112, 119, 119, 114, 112, 116, 121, 128, 127, 125, 123, + 124, 124, 126, 126, 127, 123, 128, 131, 130, 121, 119, 120, 125, 121, 116, 114, + 116, 120, 123, 124, 119, 114, 108, 103, 101, 99, 97, 93, 90, 83, 79, 77, + 79, 77, 74, 75, 64, 41, 42, 34, 11, 10, 13, 34, 49, 91, 98, 104, + 110, 113, 118, 101, 97, 92, 125, 144, 125, 138, 137, 255, 255, 190, 140, 90, + 124, 120, 121, 121, 125, 125, 125, 129, 126, 126, 122, 120, 120, 125, 124, 122, + 125, 126, 126, 122, 117, 106, 101, 105, 118, 123, 119, 114, 114, 105, 100, 93, + 89, 90, 95, 99, 101, 105, 111, 117, 117, 114, 113, 116, 120, 131, 132, 130, + 127, 128, 127, 128, 126, 124, 118, 118, 122, 122, 117, 117, 123, 118, 118, 120, + 123, 126, 126, 124, 121, 124, 118, 111, 105, 101, 99, 97, 93, 87, 80, 77, + 78, 76, 72, 71, 74, 56, 53, 52, 31, 4, 27, 31, 36, 29, 99, 116, + 137, 143, 118, 119, 106, 97, 89, 117, 144, 118, 145, 131, 255, 255, 198, 156, + 107, 124, 119, 122, 123, 116, 128, 127, 131, 128, 128, 123, 121, 120, 123, 126, + 127, 128, 127, 123, 118, 115, 114, 110, 109, 118, 127, 128, 120, 112, 102, 96, + 90, 88, 91, 97, 104, 107, 104, 107, 112, 114, 115, 115, 117, 118, 130, 130, + 130, 128, 130, 129, 129, 127, 125, 118, 117, 122, 123, 118, 119, 127, 118, 122, + 124, 128, 130, 129, 125, 122, 122, 118, 113, 109, 106, 103, 98, 93, 84, 77, + 76, 78, 77, 70, 69, 72, 55, 53, 51, 36, 12, 48, 57, 68, 60, 85, + 115, 142, 145, 135, 121, 101, 95, 81, 117, 132, 118, 146, 255, 255, 255, 201, + 164, 115, 122, 115, 119, 120, 106, 128, 128, 131, 128, 127, 123, 120, 120, 121, + 128, 132, 131, 124, 117, 113, 112, 117, 111, 106, 113, 127, 133, 124, 111, 114, + 107, 97, 90, 89, 92, 96, 98, 102, 104, 108, 112, 115, 117, 118, 118, 125, + 126, 125, 127, 129, 130, 128, 128, 121, 114, 117, 128, 128, 119, 116, 123, 128, + 128, 125, 125, 127, 128, 128, 128, 117, 116, 115, 114, 111, 106, 100, 93, 82, + 77, 75, 79, 77, 70, 67, 71, 57, 41, 39, 47, 31, 62, 79, 112, 155, + 103, 119, 129, 130, 152, 132, 104, 92, 73, 119, 121, 124, 181, 255, 255, 255, + 197, 172, 116, 115, 109, 122, 124, 116, 121, 123, 128, 126, 125, 121, 121, 123, + 114, 120, 121, 117, 115, 115, 115, 110, 109, 108, 111, 119, 125, 123, 116, 111, + 103, 101, 99, 97, 97, 97, 96, 96, 98, 102, 111, 106, 127, 115, 119, 122, + 126, 130, 129, 125, 127, 136, 134, 124, 126, 129, 125, 121, 129, 139, 135, 123, + 135, 135, 136, 138, 135, 127, 122, 122, 123, 117, 111, 108, 106, 100, 91, 84, + 85, 80, 63, 81, 72, 82, 65, 67, 72, 41, 56, 48, 65, 76, 108, 154, + 153, 117, 107, 125, 133, 128, 121, 115, 82, 83, 119, 110, 135, 255, 255, 255, + 255, 211, 183, 123, 119, 110, 119, 119, 112, 123, 125, 131, 129, 128, 124, 123, + 125, 121, 129, 131, 124, 119, 118, 122, 122, 105, 106, 112, 122, 128, 125, 117, + 110, 103, 100, 98, 96, 95, 92, 88, 85, 85, 90, 101, 101, 128, 120, 124, + 125, 126, 129, 131, 131, 132, 136, 135, 131, 128, 132, 130, 121, 123, 134, 138, + 135, 139, 135, 130, 129, 124, 119, 118, 120, 122, 116, 110, 107, 105, 100, 93, + 87, 78, 76, 64, 77, 65, 71, 57, 61, 70, 54, 81, 77, 94, 95, 116, + 146, 158, 127, 115, 124, 130, 129, 123, 112, 92, 84, 112, 110, 255, 255, 255, + 255, 255, 207, 178, 117, 114, 106, 116, 118, 113, 122, 124, 131, 129, 129, 124, + 123, 125, 122, 128, 130, 122, 116, 115, 118, 120, 100, 105, 114, 124, 132, 130, + 120, 111, 99, 97, 97, 99, 101, 99, 93, 88, 80, 82, 92, 94, 128, 126, + 130, 125, 122, 123, 127, 132, 133, 130, 128, 132, 127, 134, 137, 129, 125, 131, + 136, 139, 141, 138, 135, 134, 131, 126, 125, 127, 121, 116, 109, 105, 103, 99, + 93, 89, 75, 77, 70, 79, 67, 68, 60, 66, 62, 64, 97, 91, 105, 104, + 119, 135, 155, 133, 122, 119, 121, 127, 125, 110, 93, 80, 107, 117, 255, 255, + 255, 255, 255, 206, 174, 113, 111, 103, 112, 115, 112, 119, 121, 128, 127, 127, + 123, 121, 122, 118, 125, 125, 119, 116, 115, 113, 110, 100, 108, 118, 126, 134, + 133, 125, 116, 100, 100, 100, 103, 104, 102, 96, 91, 85, 83, 87, 85, 122, + 126, 131, 125, 124, 120, 126, 134, 133, 125, 125, 132, 124, 135, 143, 138, 133, + 131, 131, 129, 124, 125, 128, 133, 132, 126, 121, 121, 122, 116, 109, 103, 100, + 96, 91, 88, 78, 77, 74, 79, 73, 72, 68, 71, 58, 70, 96, 86, 100, + 103, 124, 129, 143, 135, 124, 113, 107, 120, 126, 112, 85, 76, 115, 255, 255, + 255, 255, 255, 255, 215, 181, 117, 114, 104, 108, 108, 106, 117, 120, 128, 128, + 128, 123, 122, 122, 123, 123, 124, 122, 124, 122, 113, 101, 105, 115, 126, 131, + 136, 139, 133, 125, 113, 112, 111, 109, 106, 102, 99, 96, 95, 89, 84, 77, + 116, 125, 133, 127, 133, 129, 134, 141, 138, 128, 129, 137, 133, 136, 141, 140, + 137, 134, 128, 123, 128, 127, 129, 134, 133, 128, 125, 126, 121, 116, 109, 102, + 96, 92, 88, 87, 82, 75, 72, 72, 75, 69, 67, 65, 62, 78, 97, 88, + 105, 111, 137, 134, 141, 137, 128, 110, 100, 115, 121, 107, 82, 78, 121, 255, + 255, 255, 255, 255, 255, 207, 172, 110, 111, 102, 105, 106, 106, 118, 122, 130, + 131, 131, 126, 124, 124, 125, 123, 122, 123, 127, 125, 112, 94, 105, 117, 128, + 130, 135, 139, 135, 125, 115, 116, 114, 110, 106, 106, 111, 116, 101, 93, 84, + 73, 111, 124, 136, 131, 135, 134, 136, 137, 137, 134, 135, 137, 145, 141, 137, + 133, 133, 133, 130, 126, 140, 133, 128, 126, 124, 122, 125, 130, 116, 113, 108, + 101, 95, 89, 85, 85, 88, 78, 78, 70, 76, 63, 63, 57, 59, 79, 96, + 99, 122, 125, 151, 140, 151, 143, 129, 110, 101, 116, 118, 99, 91, 90, 255, + 255, 255, 255, 255, 255, 255, 193, 159, 101, 106, 100, 104, 106, 107, 118, 121, + 130, 131, 131, 126, 124, 124, 124, 122, 119, 118, 122, 120, 108, 93, 93, 108, + 122, 124, 127, 130, 124, 113, 101, 102, 99, 90, 83, 85, 99, 112, 104, 97, + 88, 73, 108, 122, 133, 128, 134, 134, 134, 133, 137, 141, 142, 140, 148, 141, + 137, 136, 136, 136, 132, 132, 130, 122, 114, 111, 109, 108, 113, 119, 108, 107, + 105, 100, 94, 88, 85, 85, 86, 78, 84, 71, 78, 61, 67, 65, 60, 79, + 93, 107, 137, 137, 164, 149, 164, 142, 119, 108, 110, 123, 116, 89, 94, 102, + 255, 255, 255, 255, 255, 255, 255, 198, 162, 105, 110, 104, 105, 102, 103, 113, + 119, 124, 127, 127, 124, 122, 122, 125, 126, 123, 120, 120, 117, 110, 99, 80, + 99, 113, 117, 121, 122, 114, 101, 93, 90, 83, 64, 48, 47, 62, 77, 106, + 101, 92, 75, 107, 118, 128, 121, 135, 139, 135, 131, 138, 151, 153, 147, 140, + 141, 141, 144, 143, 138, 135, 134, 132, 127, 124, 125, 124, 122, 124, 128, 102, + 102, 104, 101, 96, 91, 88, 88, 76, 73, 83, 68, 75, 57, 69, 71, 67, + 81, 91, 111, 145, 145, 174, 159, 163, 131, 104, 100, 115, 132, 119, 85, 93, + 109, 255, 255, 255, 255, 255, 255, 255, 255, 153, 103, 118, 99, 102, 103, 101, + 108, 110, 113, 118, 123, 127, 127, 125, 125, 122, 119, 118, 119, 117, 111, 106, + 104, 94, 97, 103, 101, 103, 109, 107, 77, 90, 96, 75, 44, 30, 46, 67, + 100, 101, 82, 80, 107, 122, 120, 124, 135, 136, 137, 139, 141, 141, 139, 136, + 138, 141, 146, 144, 138, 134, 133, 133, 120, 118, 116, 116, 117, 116, 113, 109, + 107, 106, 104, 98, 92, 88, 87, 88, 80, 73, 72, 76, 73, 66, 67, 77, + 65, 93, 90, 111, 121, 134, 105, 105, 109, 91, 116, 126, 113, 114, 105, 99, + 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 102, 113, 99, 101, 99, + 96, 104, 105, 109, 114, 120, 124, 126, 123, 124, 124, 123, 122, 117, 113, 108, + 107, 93, 72, 66, 75, 81, 88, 86, 74, 85, 96, 104, 100, 88, 86, 98, + 110, 101, 96, 89, 95, 113, 123, 121, 123, 139, 137, 136, 137, 140, 141, 141, + 140, 138, 138, 141, 142, 140, 136, 130, 125, 118, 115, 114, 115, 117, 116, 114, + 110, 110, 108, 103, 96, 89, 83, 80, 81, 80, 72, 68, 72, 71, 64, 63, + 70, 63, 89, 86, 97, 102, 118, 113, 127, 111, 102, 130, 134, 120, 119, 112, + 109, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 103, 107, 101, 100, + 99, 91, 105, 107, 112, 117, 122, 126, 128, 126, 123, 125, 124, 119, 112, 107, + 105, 106, 92, 71, 65, 74, 80, 89, 89, 79, 96, 99, 103, 110, 113, 115, + 116, 114, 93, 82, 91, 111, 119, 125, 130, 127, 139, 138, 137, 136, 136, 138, + 140, 141, 143, 142, 141, 143, 144, 139, 129, 121, 116, 113, 111, 112, 117, 117, + 114, 111, 109, 106, 101, 95, 88, 82, 77, 76, 77, 69, 65, 69, 70, 65, + 64, 68, 78, 83, 71, 85, 106, 130, 128, 132, 111, 109, 130, 127, 116, 121, + 118, 121, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 163, 107, 99, 104, + 99, 99, 92, 105, 108, 113, 119, 124, 125, 129, 130, 127, 123, 117, 110, 106, + 103, 102, 101, 95, 88, 93, 99, 97, 100, 108, 110, 104, 102, 101, 108, 113, + 115, 107, 98, 100, 83, 99, 122, 120, 118, 128, 123, 133, 133, 134, 134, 134, + 134, 135, 136, 143, 142, 141, 141, 140, 134, 127, 121, 116, 113, 110, 110, 114, + 114, 111, 108, 106, 103, 98, 93, 89, 84, 79, 77, 76, 68, 64, 69, 72, + 71, 69, 67, 93, 91, 89, 105, 129, 145, 137, 128, 114, 108, 117, 108, 112, + 128, 125, 126, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 114, 89, + 102, 96, 101, 94, 102, 105, 111, 114, 118, 120, 124, 124, 131, 120, 108, 104, + 104, 106, 103, 101, 95, 92, 100, 109, 104, 105, 111, 110, 107, 107, 106, 110, + 114, 116, 112, 106, 118, 98, 109, 125, 117, 111, 118, 114, 125, 130, 135, 138, + 137, 135, 135, 136, 140, 141, 140, 136, 129, 124, 123, 123, 117, 113, 111, 110, + 111, 110, 109, 105, 105, 100, 95, 90, 86, 82, 78, 76, 76, 70, 66, 69, + 71, 70, 65, 62, 98, 107, 129, 136, 137, 131, 135, 135, 124, 111, 110, 104, + 119, 132, 120, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 120, + 84, 101, 90, 97, 92, 103, 106, 112, 116, 118, 118, 121, 124, 128, 116, 105, + 102, 107, 110, 107, 102, 107, 93, 96, 107, 111, 112, 109, 96, 108, 110, 110, + 111, 110, 109, 111, 113, 119, 106, 110, 118, 118, 116, 122, 121, 123, 128, 136, + 140, 139, 137, 137, 137, 141, 143, 142, 136, 129, 124, 125, 128, 117, 113, 110, + 108, 108, 107, 106, 102, 105, 98, 91, 84, 80, 75, 72, 69, 76, 73, 69, + 68, 67, 65, 59, 56, 120, 116, 134, 138, 139, 129, 136, 129, 131, 118, 112, + 105, 120, 125, 107, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184, + 129, 85, 105, 90, 95, 92, 107, 110, 116, 118, 117, 118, 122, 125, 113, 106, + 101, 102, 108, 111, 106, 101, 115, 102, 102, 113, 117, 117, 113, 102, 109, 113, + 115, 110, 104, 100, 103, 106, 106, 107, 103, 105, 119, 123, 124, 127, 120, 127, + 135, 138, 138, 138, 140, 143, 140, 140, 139, 135, 131, 127, 123, 122, 117, 113, + 108, 106, 109, 109, 106, 103, 105, 97, 86, 79, 79, 76, 72, 70, 72, 73, + 72, 70, 67, 65, 61, 59, 139, 113, 120, 124, 138, 133, 140, 121, 133, 122, + 113, 105, 115, 115, 112, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 138, 92, 112, 91, 96, 94, 103, 107, 115, 116, 114, 112, 116, 120, 97, + 99, 100, 103, 107, 105, 102, 98, 109, 104, 113, 118, 111, 109, 116, 117, 111, + 115, 119, 117, 109, 106, 109, 112, 105, 113, 102, 97, 116, 119, 113, 115, 118, + 123, 131, 133, 133, 134, 139, 144, 132, 129, 127, 127, 127, 124, 115, 109, 115, + 110, 106, 104, 108, 109, 107, 104, 103, 94, 84, 78, 80, 80, 77, 76, 67, + 71, 73, 72, 70, 70, 69, 68, 133, 109, 127, 127, 133, 124, 141, 132, 139, + 129, 119, 104, 109, 114, 134, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 194, 155, 95, 88, 102, 89, 93, 108, 105, 111, 118, 117, 111, 106, 107, + 107, 114, 113, 106, 103, 104, 107, 107, 113, 105, 104, 113, 124, 124, 118, 113, + 126, 131, 119, 126, 113, 124, 111, 109, 110, 102, 100, 104, 110, 112, 119, 123, + 111, 120, 131, 130, 130, 134, 137, 138, 136, 131, 128, 129, 123, 116, 115, 120, + 116, 109, 100, 101, 108, 111, 106, 97, 95, 91, 84, 75, 77, 82, 79, 70, + 71, 69, 73, 77, 70, 62, 70, 86, 135, 141, 134, 124, 127, 128, 129, 137, + 151, 114, 128, 121, 102, 107, 174, 216, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 197, 166, 105, 91, 100, 92, 98, 107, 105, 109, 113, 110, 102, 97, + 101, 101, 104, 103, 99, 101, 106, 111, 111, 113, 108, 110, 117, 122, 121, 121, + 119, 126, 131, 129, 134, 129, 133, 119, 112, 117, 110, 105, 105, 109, 108, 113, + 116, 110, 117, 124, 126, 128, 131, 135, 134, 131, 128, 126, 128, 122, 115, 111, + 113, 116, 110, 104, 104, 108, 106, 99, 91, 96, 91, 83, 74, 76, 79, 75, + 68, 76, 71, 70, 70, 64, 61, 74, 93, 129, 136, 133, 135, 146, 144, 129, + 125, 135, 119, 109, 77, 81, 164, 187, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 200, 177, 114, 90, 94, 89, 97, 104, 108, 113, 114, 108, 99, + 99, 104, 100, 101, 98, 95, 100, 107, 110, 109, 108, 107, 112, 117, 118, 116, + 118, 122, 111, 115, 122, 119, 126, 121, 118, 108, 120, 114, 110, 110, 113, 111, + 114, 115, 106, 111, 116, 117, 124, 131, 136, 136, 132, 130, 130, 132, 127, 119, + 114, 113, 110, 108, 106, 106, 107, 104, 96, 90, 97, 91, 83, 76, 76, 77, + 73, 66, 75, 70, 70, 68, 61, 57, 69, 87, 111, 133, 146, 145, 147, 141, + 136, 144, 135, 108, 75, 15, 81, 191, 196, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 198, 180, 122, 91, 92, 88, 92, 99, 105, 111, 111, 105, + 101, 105, 109, 108, 106, 102, 99, 104, 109, 108, 103, 109, 109, 113, 119, 122, + 116, 115, 117, 120, 119, 130, 118, 132, 122, 129, 119, 114, 111, 112, 117, 120, + 118, 118, 117, 104, 107, 110, 113, 123, 134, 140, 139, 133, 132, 130, 130, 126, + 120, 115, 112, 104, 104, 105, 105, 104, 102, 98, 96, 95, 88, 82, 77, 78, + 78, 74, 69, 72, 71, 73, 71, 62, 54, 58, 68, 74, 105, 125, 128, 124, + 118, 113, 122, 107, 56, 37, 6, 144, 182, 198, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 199, 184, 130, 95, 93, 88, 86, 94, 101, 107, 105, + 101, 99, 103, 107, 108, 108, 105, 103, 106, 111, 110, 105, 119, 116, 119, 128, + 133, 127, 121, 117, 128, 130, 142, 128, 140, 127, 131, 120, 115, 114, 117, 123, + 124, 118, 114, 110, 108, 106, 107, 106, 115, 126, 134, 133, 131, 129, 123, 120, + 116, 115, 109, 106, 105, 106, 104, 102, 100, 98, 100, 100, 92, 84, 80, 79, + 83, 83, 79, 74, 72, 70, 71, 69, 60, 54, 56, 63, 51, 62, 66, 75, + 90, 83, 56, 40, 36, 5, 6, 61, 208, 182, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 200, 191, 143, 99, 97, 90, 88, 99, 104, 107, + 103, 100, 100, 105, 106, 102, 103, 100, 97, 101, 108, 112, 111, 123, 119, 121, + 130, 135, 132, 127, 125, 125, 133, 143, 136, 138, 127, 121, 111, 120, 118, 119, + 122, 122, 112, 104, 99, 111, 110, 107, 103, 106, 115, 122, 122, 131, 128, 120, + 115, 113, 113, 107, 103, 108, 107, 103, 99, 96, 94, 95, 94, 90, 81, 78, + 80, 85, 84, 81, 77, 73, 70, 67, 60, 56, 58, 65, 73, 63, 59, 41, + 28, 34, 33, 20, 12, 6, 7, 9, 119, 204, 188, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 199, 198, 152, 99, 92, 91, 89, 100, 104, + 105, 101, 102, 107, 111, 107, 103, 100, 92, 82, 81, 88, 99, 103, 103, 101, + 103, 109, 112, 113, 116, 122, 120, 131, 134, 137, 128, 132, 126, 124, 124, 120, + 118, 120, 119, 114, 110, 109, 114, 112, 108, 101, 100, 108, 117, 121, 128, 127, + 120, 115, 113, 114, 106, 98, 104, 102, 98, 96, 97, 95, 91, 87, 91, 82, + 76, 80, 85, 82, 78, 76, 69, 65, 62, 56, 53, 57, 66, 71, 76, 69, + 40, 13, 8, 10, 17, 26, 19, 18, 49, 158, 190, 186, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 196, 201, 155, 95, 86, 89, 90, 91, + 95, 96, 93, 98, 107, 110, 107, 108, 103, 88, 70, 63, 68, 81, 90, 81, + 81, 83, 86, 87, 90, 101, 115, 99, 108, 100, 108, 96, 117, 119, 129, 121, + 116, 114, 118, 121, 122, 125, 127, 112, 113, 111, 102, 101, 111, 123, 129, 122, + 121, 119, 114, 114, 112, 103, 91, 96, 94, 93, 95, 96, 96, 90, 85, 89, + 81, 75, 79, 82, 79, 75, 75, 64, 67, 66, 60, 55, 54, 55, 57, 63, + 54, 27, 14, 22, 26, 16, 11, 20, 1, 92, 185, 211, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 183, 182, 91, 82, 85, 83, + 97, 93, 94, 101, 104, 104, 107, 112, 88, 83, 75, 64, 58, 60, 59, 57, + 56, 63, 69, 75, 78, 81, 82, 85, 81, 85, 86, 89, 94, 101, 112, 118, + 128, 122, 119, 120, 117, 114, 118, 126, 115, 107, 107, 112, 115, 113, 113, 114, + 131, 125, 119, 124, 129, 113, 102, 110, 99, 92, 91, 96, 99, 93, 84, 78, + 88, 73, 65, 76, 87, 84, 74, 71, 76, 76, 66, 57, 54, 57, 58, 58, + 74, 38, 17, 20, 19, 16, 14, 11, 25, 28, 145, 188, 215, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 186, 102, 90, 93, + 92, 98, 94, 97, 101, 102, 100, 102, 107, 97, 95, 91, 82, 78, 79, 77, + 73, 75, 72, 68, 63, 60, 63, 69, 75, 77, 75, 74, 73, 74, 77, 82, + 84, 104, 101, 104, 111, 116, 117, 121, 127, 119, 115, 116, 121, 121, 117, 117, + 120, 132, 127, 120, 122, 124, 109, 97, 101, 98, 95, 96, 100, 98, 90, 85, + 84, 85, 74, 70, 75, 81, 79, 71, 67, 80, 77, 63, 50, 47, 53, 60, + 62, 69, 35, 18, 18, 17, 12, 13, 9, 14, 48, 157, 188, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 185, 110, 92, + 90, 90, 98, 94, 96, 100, 102, 100, 101, 100, 97, 100, 101, 98, 92, 91, + 87, 81, 83, 83, 82, 77, 71, 67, 62, 62, 63, 60, 58, 59, 62, 64, + 63, 61, 60, 63, 73, 90, 102, 106, 105, 102, 107, 105, 109, 112, 110, 106, + 107, 111, 127, 125, 117, 115, 117, 102, 91, 95, 95, 95, 98, 100, 96, 88, + 84, 86, 77, 76, 73, 72, 77, 79, 72, 66, 73, 72, 60, 51, 49, 55, + 60, 60, 58, 28, 15, 16, 15, 11, 12, 9, 35, 111, 198, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 185, 120, + 89, 82, 81, 97, 94, 96, 97, 99, 99, 99, 96, 91, 96, 104, 102, 97, + 95, 88, 82, 92, 96, 99, 97, 92, 84, 77, 73, 68, 64, 62, 64, 68, + 70, 66, 59, 66, 53, 43, 44, 58, 76, 92, 101, 105, 108, 114, 118, 114, + 109, 111, 118, 120, 119, 113, 111, 116, 103, 95, 99, 94, 91, 93, 95, 93, + 85, 80, 81, 65, 72, 74, 69, 72, 77, 74, 70, 63, 66, 63, 60, 60, + 62, 57, 52, 45, 19, 11, 14, 14, 12, 15, 11, 8, 128, 196, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, + 139, 99, 84, 78, 92, 91, 92, 95, 97, 99, 100, 92, 89, 97, 107, 108, + 104, 101, 93, 88, 106, 103, 100, 95, 89, 89, 93, 96, 93, 88, 83, 82, + 82, 80, 73, 65, 72, 65, 62, 64, 71, 80, 83, 82, 99, 102, 109, 113, + 112, 107, 111, 118, 112, 114, 110, 106, 111, 102, 95, 102, 97, 91, 88, 91, + 93, 87, 79, 76, 64, 74, 77, 71, 71, 75, 72, 67, 62, 63, 61, 58, + 61, 62, 55, 48, 31, 14, 10, 15, 14, 14, 18, 14, 10, 153, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 191, 156, 109, 88, 81, 90, 91, 92, 92, 97, 101, 98, 89, 88, 97, 109, + 110, 108, 103, 97, 91, 99, 102, 104, 102, 97, 95, 95, 96, 102, 99, 96, + 96, 94, 90, 86, 80, 76, 82, 90, 94, 98, 94, 83, 72, 92, 95, 99, + 103, 103, 103, 107, 112, 108, 112, 107, 102, 104, 97, 92, 97, 101, 92, 87, + 89, 93, 86, 77, 72, 71, 76, 78, 76, 71, 67, 62, 60, 64, 61, 55, + 50, 54, 59, 56, 53, 24, 10, 11, 16, 14, 15, 19, 15, 50, 192, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 174, 122, 96, 83, 90, 91, 91, 92, 96, 101, 96, 85, 84, 95, + 105, 107, 104, 101, 98, 93, 89, 95, 104, 107, 105, 100, 94, 91, 101, 101, + 100, 99, 96, 93, 93, 90, 95, 91, 82, 73, 76, 89, 99, 104, 105, 104, + 105, 107, 110, 111, 116, 119, 104, 112, 107, 99, 99, 94, 89, 95, 98, 94, + 90, 90, 89, 81, 74, 71, 80, 78, 78, 80, 74, 64, 57, 57, 60, 57, + 51, 47, 54, 62, 61, 56, 22, 14, 17, 21, 15, 15, 18, 11, 58, 189, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 233, 134, 104, 90, 93, 93, 93, 91, 95, 99, 93, 80, 84, + 95, 106, 106, 104, 102, 97, 95, 89, 92, 92, 93, 93, 94, 98, 101, 108, + 107, 105, 98, 90, 86, 83, 82, 66, 75, 84, 88, 91, 98, 97, 95, 105, + 102, 98, 102, 106, 107, 109, 113, 103, 111, 106, 99, 100, 95, 91, 98, 95, + 93, 91, 91, 83, 72, 68, 72, 81, 75, 76, 81, 77, 64, 56, 59, 54, + 54, 52, 54, 64, 69, 64, 56, 24, 19, 20, 23, 17, 14, 16, 9, 92, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 177, 138, 99, 73, 90, 75, 105, 87, 79, 90, 94, + 77, 89, 97, 104, 109, 97, 92, 104, 81, 86, 86, 86, 90, 93, 86, 76, + 84, 86, 85, 81, 76, 78, 84, 91, 75, 80, 85, 92, 98, 101, 100, 96, + 93, 102, 94, 111, 101, 117, 108, 114, 111, 105, 98, 97, 100, 101, 98, 95, + 95, 102, 86, 85, 86, 83, 81, 61, 56, 67, 77, 74, 67, 62, 59, 56, + 47, 48, 48, 55, 65, 68, 58, 48, 19, 22, 20, 22, 29, 21, 14, 22, + 99, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 148, 113, 86, 77, 87, 88, 92, 84, 81, + 87, 88, 87, 87, 96, 110, 106, 95, 97, 93, 95, 93, 87, 86, 87, 82, + 75, 74, 76, 78, 79, 80, 80, 81, 82, 92, 97, 103, 103, 104, 104, 104, + 99, 94, 102, 96, 108, 99, 111, 104, 107, 110, 105, 100, 97, 96, 95, 91, + 89, 93, 97, 84, 81, 76, 69, 77, 67, 72, 76, 77, 71, 65, 61, 56, + 49, 52, 51, 51, 56, 61, 63, 53, 40, 19, 22, 15, 10, 13, 11, 11, + 21, 94, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 162, 134, 97, 64, 90, 74, 96, 90, + 75, 78, 90, 89, 87, 92, 107, 105, 96, 98, 101, 101, 98, 90, 85, 84, + 83, 81, 88, 82, 80, 82, 89, 94, 98, 100, 110, 115, 118, 112, 108, 105, + 104, 100, 99, 105, 101, 107, 100, 107, 102, 102, 104, 101, 98, 95, 92, 89, + 87, 86, 88, 92, 80, 78, 67, 56, 72, 75, 78, 76, 71, 63, 59, 57, + 51, 43, 59, 57, 57, 58, 62, 60, 48, 37, 18, 28, 25, 17, 19, 16, + 8, 9, 79, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 151, 96, 69, 79, 72, 90, + 87, 76, 78, 80, 92, 97, 99, 101, 98, 97, 108, 104, 103, 99, 90, 86, + 84, 92, 93, 93, 94, 97, 102, 106, 112, 115, 116, 117, 122, 124, 116, 104, + 100, 99, 99, 103, 104, 103, 106, 104, 104, 101, 102, 97, 96, 96, 92, 91, + 86, 86, 88, 87, 86, 73, 76, 66, 51, 68, 76, 69, 68, 65, 57, 53, + 53, 52, 46, 61, 61, 60, 62, 64, 60, 48, 36, 6, 18, 17, 14, 21, + 19, 8, 3, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 95, 87, 62, 82, + 80, 80, 84, 80, 78, 92, 99, 99, 103, 101, 99, 109, 103, 102, 99, 92, + 88, 87, 96, 101, 81, 92, 108, 119, 121, 118, 115, 114, 116, 120, 120, 110, + 100, 97, 97, 96, 100, 100, 102, 101, 104, 100, 102, 100, 96, 94, 94, 90, + 88, 84, 84, 85, 85, 82, 70, 76, 71, 58, 70, 72, 63, 68, 69, 62, + 55, 55, 57, 56, 58, 58, 61, 61, 63, 60, 47, 37, 19, 25, 17, 13, + 24, 27, 21, 21, 85, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 105, 61, + 84, 71, 72, 84, 83, 85, 90, 88, 92, 109, 112, 103, 101, 106, 100, 96, + 93, 90, 89, 96, 100, 93, 98, 107, 110, 109, 111, 117, 123, 111, 114, 112, + 103, 98, 95, 98, 95, 96, 92, 98, 92, 100, 93, 98, 94, 98, 96, 92, + 86, 83, 81, 80, 80, 82, 80, 66, 71, 71, 62, 71, 66, 58, 64, 67, + 59, 52, 53, 58, 59, 54, 54, 58, 60, 61, 56, 44, 34, 26, 31, 27, + 26, 31, 23, 15, 20, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 134, 110, + 78, 74, 69, 69, 76, 79, 83, 88, 84, 85, 103, 110, 104, 100, 103, 97, + 93, 94, 94, 92, 96, 98, 106, 105, 104, 103, 104, 110, 121, 129, 110, 111, + 106, 98, 97, 97, 99, 95, 96, 90, 99, 89, 100, 87, 94, 89, 99, 92, + 84, 80, 80, 80, 79, 77, 75, 80, 64, 64, 63, 61, 71, 62, 60, 62, + 58, 51, 50, 56, 64, 63, 60, 60, 64, 63, 62, 55, 43, 33, 21, 24, + 22, 23, 22, 15, 24, 52, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 110, 99, 61, 70, 69, 64, 74, 72, 89, 90, 85, 92, 98, 102, 112, 101, + 92, 89, 94, 97, 95, 96, 98, 95, 100, 108, 116, 120, 118, 113, 107, 108, + 107, 102, 95, 94, 97, 98, 95, 99, 94, 103, 88, 101, 87, 93, 87, 94, + 85, 77, 74, 77, 80, 80, 78, 68, 77, 62, 55, 55, 56, 71, 61, 65, + 62, 54, 48, 52, 64, 72, 70, 68, 68, 71, 68, 67, 57, 44, 32, 44, + 36, 24, 19, 23, 39, 91, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 125, 113, 89, 72, 79, 66, 67, 70, 85, 82, 79, 91, 90, 88, 106, + 107, 102, 100, 102, 103, 98, 96, 98, 99, 100, 102, 106, 108, 104, 96, 90, + 94, 99, 90, 95, 95, 89, 98, 94, 94, 89, 88, 91, 87, 83, 82, 89, + 77, 77, 68, 66, 79, 82, 77, 77, 64, 67, 53, 59, 48, 67, 60, 61, + 63, 57, 51, 56, 60, 63, 65, 67, 67, 62, 63, 66, 69, 62, 46, 32, + 36, 23, 12, 12, 27, 35, 130, 200, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 115, 92, 74, 65, 66, 57, 60, 74, 78, 80, 92, 91, 90, + 104, 106, 101, 100, 101, 101, 98, 98, 101, 102, 102, 102, 106, 109, 109, 106, + 103, 97, 103, 93, 97, 96, 90, 98, 92, 93, 91, 87, 89, 86, 82, 82, + 87, 88, 86, 76, 71, 81, 80, 69, 70, 66, 66, 56, 55, 53, 65, 65, + 62, 66, 60, 57, 61, 64, 65, 68, 71, 74, 75, 76, 73, 71, 67, 54, + 42, 20, 27, 10, 14, 23, 91, 157, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 129, 103, 85, 61, 71, 59, 61, 75, 80, 84, 90, 86, + 82, 88, 101, 98, 98, 101, 103, 101, 103, 107, 109, 107, 105, 106, 108, 111, + 111, 111, 100, 105, 95, 100, 98, 91, 98, 92, 93, 88, 86, 86, 83, 81, + 82, 84, 77, 79, 73, 75, 84, 84, 77, 77, 67, 62, 60, 49, 56, 57, + 62, 58, 66, 63, 62, 67, 71, 70, 72, 73, 75, 84, 85, 74, 67, 66, + 57, 46, 10, 31, 8, 13, 23, 155, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 219, 108, 92, 72, 71, 68, 63, 72, 80, 84, 87, + 84, 81, 82, 95, 94, 99, 103, 106, 104, 105, 109, 115, 113, 109, 107, 106, + 106, 106, 106, 98, 104, 95, 100, 99, 91, 98, 92, 91, 87, 83, 82, 80, + 80, 81, 83, 65, 70, 68, 74, 87, 86, 79, 81, 70, 59, 61, 44, 58, + 51, 62, 55, 63, 61, 63, 69, 72, 71, 72, 73, 71, 81, 82, 69, 63, + 64, 55, 39, 12, 20, 6, 22, 46, 185, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 116, 97, 84, 58, 68, 58, 62, 73, 82, + 86, 90, 93, 91, 91, 93, 102, 109, 109, 105, 105, 108, 113, 112, 111, 108, + 105, 102, 100, 100, 96, 103, 95, 101, 100, 92, 99, 92, 87, 84, 79, 77, + 77, 80, 81, 80, 72, 78, 76, 77, 86, 82, 73, 73, 75, 64, 66, 50, + 63, 54, 64, 59, 62, 63, 68, 74, 76, 74, 73, 74, 68, 76, 76, 67, + 65, 67, 56, 41, 21, 8, 22, 59, 103, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 217, 112, 98, 60, 69, 64, 61, 72, + 82, 82, 88, 94, 88, 87, 91, 101, 108, 107, 102, 102, 106, 103, 105, 106, + 105, 102, 99, 98, 98, 95, 102, 94, 100, 99, 90, 97, 89, 84, 81, 76, + 72, 74, 80, 82, 79, 80, 86, 83, 82, 88, 80, 71, 73, 76, 66, 60, + 53, 59, 55, 60, 61, 68, 68, 73, 79, 80, 77, 76, 78, 73, 73, 72, + 72, 74, 75, 67, 60, 35, 23, 60, 119, 164, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 103, 78, 67, 70, 64, + 76, 86, 79, 84, 91, 80, 87, 89, 97, 101, 101, 97, 100, 106, 99, 102, + 103, 103, 100, 98, 99, 100, 98, 105, 96, 101, 98, 88, 93, 85, 80, 78, + 73, 69, 72, 81, 83, 79, 82, 88, 86, 84, 89, 80, 72, 76, 75, 68, + 55, 57, 53, 58, 55, 60, 72, 72, 76, 82, 81, 77, 79, 82, 75, 71, + 70, 75, 76, 75, 77, 84, 65, 76, 110, 168, 191, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 101, 96, 65, 66, + 57, 73, 86, 80, 86, 94, 80, 88, 89, 93, 95, 94, 92, 97, 105, 102, + 103, 104, 101, 98, 96, 99, 102, 102, 108, 99, 102, 98, 87, 90, 81, 78, + 76, 71, 67, 71, 81, 84, 79, 86, 92, 87, 83, 85, 76, 65, 69, 79, + 74, 54, 65, 53, 63, 57, 65, 72, 72, 77, 81, 79, 75, 77, 82, 72, + 66, 67, 74, 73, 70, 80, 98, 95, 127, 143, 192, 212, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 95, 95, + 60, 68, 74, 81, 90, 84, 82, 92, 81, 78, 87, 94, 93, 99, 107, 103, + 107, 110, 105, 96, 97, 106, 106, 99, 102, 101, 97, 92, 95, 99, 95, 84, + 77, 75, 69, 63, 72, 85, 88, 82, 93, 86, 79, 79, 81, 77, 64, 53, + 65, 64, 60, 60, 58, 59, 65, 75, 86, 82, 78, 79, 82, 83, 79, 75, + 74, 63, 73, 72, 65, 67, 81, 121, 163, 181, 189, 189, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 216, 107, + 94, 79, 68, 64, 76, 89, 83, 83, 95, 82, 78, 86, 91, 88, 93, 100, + 97, 104, 105, 103, 99, 99, 103, 104, 101, 105, 106, 101, 94, 91, 91, 85, + 77, 75, 71, 67, 66, 74, 83, 86, 83, 78, 81, 82, 78, 69, 61, 58, + 58, 52, 53, 53, 56, 58, 60, 70, 80, 83, 81, 81, 84, 88, 89, 85, + 81, 79, 63, 71, 73, 70, 74, 83, 116, 177, 191, 192, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 132, 106, 96, 71, 61, 77, 90, 85, 84, 91, 92, 86, 90, 92, 90, 95, + 101, 97, 102, 100, 101, 104, 103, 100, 102, 106, 107, 109, 106, 98, 90, 85, + 80, 73, 72, 65, 64, 70, 78, 80, 81, 82, 75, 78, 80, 75, 66, 57, + 55, 55, 55, 55, 58, 63, 62, 65, 73, 81, 77, 78, 82, 86, 85, 84, + 80, 78, 76, 62, 68, 70, 71, 76, 79, 103, 188, 198, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 129, 101, 76, 67, 77, 85, 87, 87, 83, 94, 87, 91, 92, 89, + 94, 100, 96, 97, 93, 97, 105, 104, 97, 98, 106, 102, 105, 106, 100, 90, + 83, 80, 78, 68, 60, 62, 73, 80, 76, 75, 80, 80, 74, 68, 66, 69, + 64, 54, 45, 57, 58, 65, 69, 71, 71, 77, 82, 81, 82, 85, 85, 83, + 79, 76, 75, 74, 65, 72, 72, 72, 78, 78, 96, 186, 214, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 222, 112, 89, 77, 72, 71, 83, 94, 84, 87, 81, 87, 89, + 85, 89, 95, 91, 93, 89, 93, 102, 102, 96, 96, 103, 100, 103, 104, 100, + 90, 82, 82, 83, 65, 58, 62, 73, 78, 72, 70, 74, 73, 66, 61, 59, + 60, 58, 52, 45, 48, 51, 63, 72, 78, 77, 83, 88, 88, 88, 88, 85, + 82, 79, 81, 82, 74, 71, 81, 75, 73, 80, 80, 95, 180, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 141, 104, 85, 71, 58, 72, 93, 88, 84, 79, 86, + 90, 85, 88, 93, 88, 91, 88, 89, 95, 99, 97, 96, 97, 101, 100, 100, + 96, 87, 78, 78, 81, 63, 61, 65, 71, 73, 69, 65, 66, 53, 56, 59, + 53, 46, 44, 51, 58, 61, 65, 75, 86, 87, 84, 84, 88, 87, 85, 82, + 80, 81, 81, 83, 83, 71, 70, 82, 71, 70, 78, 77, 88, 205, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 226, 114, 92, 88, 66, 63, 82, 84, 84, 80, + 88, 92, 87, 88, 92, 86, 90, 89, 87, 88, 94, 100, 97, 90, 98, 94, + 91, 88, 81, 73, 73, 77, 61, 64, 69, 67, 68, 66, 65, 60, 49, 54, + 56, 52, 47, 51, 66, 75, 81, 83, 93, 100, 96, 90, 84, 85, 86, 81, + 77, 78, 81, 81, 79, 76, 75, 71, 79, 68, 70, 83, 78, 81, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 116, 95, 108, 83, 60, 67, 72, 78, + 76, 83, 89, 83, 83, 85, 78, 90, 90, 86, 83, 92, 103, 99, 86, 93, + 87, 81, 81, 76, 68, 69, 76, 63, 72, 74, 69, 66, 67, 63, 55, 58, + 52, 47, 48, 57, 69, 78, 81, 75, 81, 91, 101, 100, 92, 88, 89, 93, + 87, 82, 84, 85, 84, 76, 69, 87, 80, 83, 72, 80, 95, 86, 83, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 149, 104, 97, 90, 71, 31, + 62, 69, 78, 83, 83, 82, 87, 91, 85, 81, 82, 83, 83, 81, 80, 83, + 86, 83, 77, 73, 69, 68, 68, 71, 67, 72, 75, 70, 63, 52, 41, 37, + 50, 61, 65, 64, 71, 76, 83, 96, 84, 90, 96, 94, 91, 90, 93, 96, + 92, 102, 101, 86, 80, 85, 82, 69, 79, 83, 85, 82, 81, 81, 86, 92, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 128, 105, 99, 85, + 58, 67, 70, 75, 77, 81, 79, 78, 75, 82, 81, 86, 92, 91, 85, 79, + 80, 79, 77, 76, 71, 66, 57, 49, 46, 64, 60, 50, 40, 37, 43, 53, + 60, 57, 70, 76, 77, 82, 78, 79, 89, 87, 89, 93, 97, 98, 100, 100, + 101, 89, 96, 93, 85, 81, 85, 82, 73, 73, 75, 81, 82, 84, 84, 86, + 88, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 105, 97, + 86, 76, 56, 53, 51, 56, 68, 75, 80, 79, 88, 78, 69, 65, 66, 69, + 80, 89, 68, 70, 72, 72, 71, 66, 60, 59, 51, 53, 52, 51, 55, 63, + 72, 78, 71, 84, 87, 86, 91, 86, 85, 93, 98, 98, 100, 104, 108, 110, + 105, 103, 97, 94, 88, 87, 86, 84, 76, 72, 74, 74, 80, 82, 84, 85, + 82, 82, 115, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 105, + 94, 88, 90, 89, 75, 59, 48, 45, 45, 48, 48, 48, 48, 52, 58, 59, + 56, 54, 55, 71, 67, 59, 52, 44, 39, 38, 38, 62, 70, 81, 89, 93, + 92, 89, 86, 87, 93, 90, 86, 92, 92, 94, 106, 108, 109, 111, 111, 112, + 110, 105, 102, 102, 91, 84, 89, 91, 84, 77, 79, 82, 79, 79, 81, 84, + 85, 81, 77, 96, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 102, 94, 103, 103, 112, 101, 85, 68, 54, 45, 40, 40, 46, 44, 45, 47, + 47, 44, 45, 49, 43, 43, 44, 49, 58, 69, 80, 88, 94, 97, 100, 99, + 98, 96, 95, 95, 93, 99, 96, 94, 101, 101, 104, 114, 108, 112, 115, 113, + 108, 101, 101, 102, 100, 88, 84, 92, 95, 89, 85, 88, 87, 83, 81, 81, + 85, 85, 84, 81, 78, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 104, 94, 97, 97, 97, 95, 89, 84, 79, 79, 92, 80, 66, + 57, 54, 59, 72, 86, 101, 103, 103, 104, 104, 104, 102, 102, 112, 112, 108, + 105, 101, 97, 97, 96, 96, 105, 107, 108, 116, 113, 109, 115, 104, 111, 114, + 111, 101, 97, 100, 104, 106, 96, 91, 94, 92, 86, 82, 84, 84, 82, 82, + 83, 84, 87, 90, 90, 70, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 105, 103, 104, 105, 107, 103, 93, 88, 94, 95, + 96, 101, 99, 92, 87, 88, 104, 110, 115, 120, 125, 126, 126, 124, 111, 110, + 110, 107, 105, 102, 102, 102, 107, 115, 116, 115, 122, 117, 111, 116, 114, 115, + 113, 109, 104, 102, 103, 105, 107, 103, 97, 93, 89, 85, 83, 83, 80, 81, + 85, 85, 86, 85, 89, 92, 73, 95, 173, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 106, 99, 94, 91, + 94, 97, 101, 102, 98, 96, 97, 103, 107, 109, 114, 117, 121, 122, 119, 114, + 106, 101, 93, 94, 101, 112, 121, 120, 122, 116, 110, 115, 113, 109, 116, 128, + 125, 118, 113, 110, 108, 106, 104, 90, 93, 91, 89, 88, 92, 95, 96, 78, + 83, 89, 89, 85, 82, 84, 86, 80, 85, 156, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 206, 105, 102, 99, 97, 94, 93, 97, 99, 103, 108, 109, 110, 107, 103, + 99, 97, 108, 117, 120, 113, 113, 117, 121, 112, 110, 116, 121, 116, 112, 111, + 121, 122, 117, 109, 107, 108, 107, 100, 100, 95, 90, 90, 94, 96, 94, 91, + 83, 86, 86, 83, 83, 88, 91, 91, 75, 85, 101, 195, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 104, 107, 106, + 104, 113, 109, 112, 114, 112, 106, 105, 109, 119, 115, 113, 121, 123, 121, 119, + 120, 122, 123, 119, 112, 110, 110, 109, 102, 103, 99, 94, 93, 96, 96, 92, + 88, 93, 94, 91, 84, 82, 83, 85, 84, 73, 64, 85, 158, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 204, 104, 108, 109, 108, 113, 120, 122, 120, 121, 125, 127, 125, + 124, 126, 118, 118, 115, 110, 110, 110, 106, 100, 101, 98, 96, 96, 100, 100, + 96, 90, 99, 99, 93, 85, 81, 84, 82, 81, 68, 60, 85, 128, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, + 121, 120, 121, 115, 113, 111, 108, 108, 106, 101, 97, 95, 94, 94, 97, 102, + 102, 100, 98, 98, 98, 95, 90, 87, 143, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255 }; +/* Define image 'heart' of size 100x100x1x3 and type 'const unsigned char' */ +const unsigned char data_heart[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 190, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 125, 125, 125, 125, 125, 125, + 42, 0, 0, 0, 0, 0, 0, 3, 125, 190, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, + 153, 60, 0, 0, 0, 3, 3, 121, 187, 187, 187, 187, 187, 219, 246, 246, + 246, 246, 246, 247, 207, 188, 188, 188, 31, 3, 1, 0, 0, 30, 60, 247, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 232, 186, 179, 0, 0, 0, 0, 0, 46, 234, 244, 244, 239, 239, 239, 240, + 241, 244, 244, 244, 244, 244, 244, 246, 246, 246, 246, 247, 247, 247, 146, 13, + 0, 0, 0, 39, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 242, 81, 0, 0, 0, 0, 0, 28, 127, 206, 242, 239, 239, + 239, 239, 243, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, + 245, 247, 247, 153, 94, 0, 0, 0, 54, 213, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 252, 129, 51, 0, 0, 5, 7, 101, 191, 202, 239, + 239, 239, 239, 239, 239, 243, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 245, 246, 246, 232, 98, 1, 0, 0, 39, 234, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 244, 112, 0, 0, 0, 39, 211, 247, + 245, 240, 239, 239, 239, 239, 239, 239, 239, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 246, 247, 115, 1, + 0, 0, 29, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 117, 100, 0, 0, 0, + 43, 197, 246, 242, 240, 239, 239, 239, 239, 239, 239, 239, 239, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 245, 246, 106, 0, 0, 0, 101, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 249, 243, 243, 243, 243, 79, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 86, 243, 243, 243, 243, 243, 243, 243, 249, 255, 255, 255, 255, 252, 137, 0, + 0, 0, 0, 26, 212, 246, 246, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 243, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 235, 112, 3, 0, 21, 173, 253, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 181, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 180, 255, 255, + 255, 204, 0, 0, 0, 0, 45, 221, 247, 242, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 240, 243, 244, 244, 244, 243, 242, 243, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 246, 127, 5, 0, + 0, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 185, 114, 3, 0, 0, 0, 0, 0, 0, 44, + 133, 134, 134, 134, 134, 134, 134, 40, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 114, 182, 255, 96, 0, 0, 19, 136, 204, 247, 245, 240, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 241, 241, 241, 241, 239, + 240, 241, 241, 242, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 246, 18, 0, 0, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 246, 235, 49, 24, 0, 0, 6, 14, 41, + 192, 192, 193, 212, 243, 244, 244, 244, 244, 244, 244, 210, 196, 196, 196, 196, + 197, 198, 45, 14, 6, 0, 0, 24, 49, 1, 0, 0, 187, 247, 247, 246, + 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 242, 243, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 172, 8, 0, 5, 114, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 78, 0, 0, 0, 0, + 72, 147, 239, 239, 239, 239, 243, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 241, 239, 245, 155, 17, 0, 0, 0, 0, 0, 52, + 231, 247, 247, 246, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 242, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 148, 0, 0, 0, 147, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 75, 0, + 0, 0, 67, 135, 235, 239, 239, 239, 240, 243, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 242, 242, 242, 160, 0, 0, + 0, 0, 0, 165, 247, 247, 247, 246, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 242, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 203, + 51, 0, 0, 64, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, + 121, 42, 0, 0, 0, 64, 217, 239, 239, 239, 239, 239, 240, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 243, + 241, 244, 155, 9, 0, 0, 0, 165, 247, 247, 247, 246, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 242, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 245, 218, 26, 0, 0, 193, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 244, 108, 0, 0, 0, 43, 82, 239, 239, 239, 239, 239, 239, 239, + 240, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 241, 242, 165, 22, 0, 0, 165, 247, 247, 247, 246, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 241, 243, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 93, 0, 0, 13, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 108, 0, 0, 0, 43, 194, 239, 239, 239, 239, + 239, 239, 239, 239, 240, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 246, 67, 0, 0, 165, + 247, 247, 247, 246, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 241, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 240, 219, 0, 0, + 13, 255, 255, 255, 255, 255, 255, 255, 255, 240, 24, 0, 0, 29, 196, 223, + 223, 223, 223, 223, 237, 239, 239, 239, 239, 242, 243, 244, 244, 243, 242, 239, + 239, 239, 239, 239, 240, 243, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 212, 28, 22, 173, 247, 247, 247, 246, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 241, 242, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 243, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 240, 241, 135, 0, 2, 103, 255, 255, 255, 255, 255, 255, 218, 57, 0, 0, + 45, 197, 221, 221, 221, 221, 221, 221, 223, 232, 232, 232, 232, 236, 241, 242, + 242, 242, 239, 239, 239, 239, 239, 239, 239, 240, 243, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 240, 244, 247, 247, 247, 247, 247, 247, 245, 240, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 241, 244, 247, 247, 247, 247, 245, + 241, 239, 239, 239, 239, 239, 239, 239, 239, 240, 243, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 240, 239, 162, 0, 0, 73, 255, 255, 255, 255, 255, 227, + 59, 0, 0, 48, 185, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 225, 237, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 241, + 244, 244, 244, 244, 244, 244, 244, 244, 240, 239, 244, 247, 247, 247, 247, 247, + 247, 242, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 247, 247, 247, + 247, 247, 247, 247, 247, 244, 239, 239, 239, 239, 239, 239, 239, 239, 241, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 240, 239, 209, 61, 0, 73, 255, 255, + 255, 255, 255, 187, 0, 0, 2, 95, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 223, 228, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 241, 243, 244, 244, 244, 244, 244, 244, 240, 239, 242, 247, + 247, 247, 247, 247, 247, 246, 245, 239, 239, 239, 239, 239, 239, 239, 239, 243, + 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 241, 239, 239, 239, + 239, 239, 239, 242, 244, 244, 244, 244, 244, 244, 243, 241, 239, 239, 230, 90, + 0, 11, 152, 255, 255, 255, 255, 13, 0, 0, 89, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 224, 236, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 243, 244, 244, 244, 244, 243, + 239, 239, 242, 247, 247, 247, 247, 247, 247, 247, 247, 245, 241, 241, 241, 241, + 241, 241, 243, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 246, 240, 239, 239, 239, 239, 239, 242, 244, 244, 244, 244, 242, 241, 239, + 239, 239, 156, 0, 0, 0, 134, 255, 255, 255, 255, 13, 0, 0, 197, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 224, 236, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 244, + 244, 244, 243, 239, 239, 239, 242, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 245, 240, 239, 239, 239, 239, 239, 240, 240, 240, + 240, 239, 239, 239, 239, 239, 156, 0, 0, 0, 134, 255, 255, 255, 98, 1, + 0, 125, 217, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 236, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 242, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 242, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 227, 86, 0, 0, 134, 255, + 255, 255, 73, 0, 34, 173, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 242, 247, 247, 247, 241, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 242, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 243, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 152, + 16, 0, 84, 232, 255, 255, 73, 0, 92, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 242, 247, 247, + 247, 246, 244, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 242, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 244, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 43, 0, 0, 194, 255, 148, 8, 0, 92, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 242, 247, 247, 247, 247, 247, 246, 244, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 241, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 246, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 69, 0, 0, 194, 255, 134, 0, 0, + 92, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 242, 247, 247, 247, 247, 247, 247, 247, 243, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 246, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 232, 0, 0, 119, + 255, 134, 0, 29, 184, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 242, 247, 247, 247, 247, 247, 247, + 247, 245, 244, 239, 239, 239, 239, 239, 239, 239, 239, 241, 244, 246, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 244, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 232, 0, 0, 0, 245, 114, 0, 45, 236, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 234, 246, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 245, 240, 240, 240, 240, 240, 240, 241, 246, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 244, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 234, 27, 0, 0, 194, 0, 0, 45, 236, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 235, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 245, 178, 0, 0, 194, 0, 0, 45, + 236, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 235, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 245, 175, 0, 0, + 194, 0, 0, 216, 236, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 235, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 246, 243, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 245, 175, 0, 0, 194, 0, 0, 233, 236, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 235, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 246, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 245, 175, 0, 0, 194, 0, 0, 233, 236, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 226, + 243, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 246, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 245, 175, 0, 0, 194, 0, 0, 233, + 236, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 236, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 243, 143, 0, 0, + 194, 0, 0, 233, 236, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 229, 244, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 232, 0, 0, 0, 194, 0, 0, 233, 236, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 228, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 242, 233, 0, 0, 0, 194, 0, 0, 233, 236, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 222, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 242, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 243, 233, 0, 0, 183, 194, 0, 0, 233, + 236, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 238, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 242, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 245, 149, 0, 0, 194, + 194, 0, 0, 233, 236, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 228, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 242, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 241, 247, + 45, 0, 0, 194, 194, 0, 0, 233, 246, 229, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 232, + 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 244, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 241, 217, 35, 0, 128, 252, 194, 0, 0, 233, 247, 229, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 240, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 244, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 244, 103, 0, 0, 134, 255, 194, 0, 0, 233, + 247, 242, 222, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 226, 246, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 240, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 247, 103, 0, 0, 134, 255, + 194, 0, 0, 191, 247, 247, 223, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 227, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 241, 228, 80, + 0, 71, 251, 255, 194, 0, 0, 45, 247, 247, 233, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 224, 240, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 244, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 245, 162, 0, 0, 73, 255, 255, 238, 98, 0, 12, 142, 247, 246, 233, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 233, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 241, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 226, 43, 0, 9, 206, 255, 255, 255, 134, 0, 0, + 103, 247, 247, 239, 223, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 235, 246, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 246, 241, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 240, 219, 0, 0, 60, 255, 255, 255, + 255, 193, 36, 0, 52, 205, 247, 247, 239, 223, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 243, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 244, 127, 0, 0, + 208, 255, 255, 255, 255, 255, 73, 0, 0, 162, 247, 247, 247, 225, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 227, 235, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 240, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 244, 32, 0, 0, 208, 255, 255, 255, 255, 255, 119, 3, 0, 0, 220, 247, + 247, 245, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 228, 244, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 243, 207, 23, 0, 37, 220, 255, 255, 255, 255, 255, 255, 13, + 0, 0, 124, 247, 247, 245, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 229, 235, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 220, 121, 44, 0, 0, 147, 255, 255, 255, 255, + 255, 255, 255, 161, 0, 0, 31, 244, 247, 246, 234, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 224, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 205, 0, 0, 0, 66, 229, + 255, 255, 255, 255, 255, 255, 255, 220, 39, 0, 0, 90, 247, 247, 247, 232, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 227, 244, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 241, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 206, 0, + 0, 0, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 0, 0, 43, + 195, 247, 247, 240, 223, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 236, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 244, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 241, 207, 0, 0, 0, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 231, 67, 0, 0, 144, 245, 247, 247, 226, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 224, 228, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 245, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 241, 246, 61, 0, 0, 21, 217, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 135, 7, 0, 0, 207, 247, 247, 232, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 222, 241, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 246, 243, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 243, 247, 18, 0, 0, 27, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, 0, 0, 207, 247, 247, + 246, 231, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 224, 233, 243, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 243, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 247, 155, 8, 0, + 0, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 0, + 0, 57, 239, 247, 247, 240, 222, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 240, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 240, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, + 247, 77, 0, 0, 7, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 231, 48, 0, 0, 77, 247, 247, 247, 247, 233, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 227, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 244, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 242, 213, 54, 0, 30, 189, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 161, 0, 0, 34, 185, 247, 247, 247, 247, + 232, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 223, 232, 243, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 246, 241, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 242, 246, 135, 0, 0, 101, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 81, 0, 0, 127, + 243, 247, 247, 247, 245, 232, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 238, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 241, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 245, 243, 127, 0, 2, 110, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 149, 12, 0, 0, 135, 247, 247, 247, 247, 239, 229, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 238, 242, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 244, 247, 194, + 0, 0, 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 151, 0, 0, 5, 247, 247, 247, 247, 247, 247, 234, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 232, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 242, 240, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 241, 247, 247, 87, 0, 0, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 13, 0, 1, 92, 237, 247, + 247, 247, 247, 246, 242, 230, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 223, 225, + 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, + 245, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 245, 247, 233, 5, 0, 0, 235, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 37, + 0, 0, 82, 225, 247, 247, 247, 247, 247, 247, 224, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 238, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 241, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 245, 247, 247, 64, 0, 0, 57, 241, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 114, 0, 0, 0, 75, 242, 247, 247, 247, 247, 247, 237, 231, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 222, 231, 241, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 245, 240, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 241, 246, 247, 247, 64, 0, + 0, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 231, 62, 0, 0, 0, 77, 234, 247, 247, + 247, 247, 247, 239, 223, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 223, 241, + 245, 247, 247, 247, 247, 247, 247, 247, 247, 245, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 241, 246, 247, + 247, 142, 10, 0, 95, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 64, 0, 0, + 0, 71, 219, 247, 247, 247, 247, 247, 247, 225, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 229, 247, 247, 247, 247, 247, 247, 247, 247, 243, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 241, 243, 247, 247, 224, 80, 0, 18, 162, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 228, 76, 0, 0, 0, 67, 234, 247, 247, 247, 247, 247, 238, 232, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 224, 231, 243, 247, 247, 247, 247, 247, + 243, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 245, 247, 247, 247, 181, 0, 0, 54, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 236, 77, 0, 0, 0, 61, 221, 237, 247, 247, + 247, 247, 240, 223, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 224, 244, + 245, 247, 247, 246, 241, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 243, 246, 247, 247, 240, 27, 0, 0, 220, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 50, 0, 0, + 0, 99, 234, 247, 247, 247, 247, 247, 234, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 229, 237, 237, 238, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 241, 247, 247, 247, 247, 171, + 0, 0, 67, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 211, 50, 0, 0, 0, 97, 247, 247, 247, 247, 247, 247, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 224, 227, 229, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 243, 245, 247, + 247, 247, 162, 19, 0, 0, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 231, 41, 0, 0, 3, 95, 217, 241, 247, 247, + 247, 243, 233, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 228, 236, 238, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 243, 246, 247, 247, 247, 237, 96, 0, 0, 111, 246, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 95, 35, 0, 0, + 0, 129, 247, 247, 247, 247, 239, 230, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 236, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 241, 245, 247, 247, 247, 239, 105, 0, 0, 25, 175, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 195, 21, 0, 0, 4, 135, 247, 247, 247, 247, 247, 235, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 228, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 240, 247, 247, 247, 247, 247, 108, 0, 0, 4, + 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 209, 22, 0, 0, 8, 125, 238, 247, 247, 247, + 246, 243, 229, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 228, 239, 239, 239, 239, 239, 239, 239, 239, 245, 247, 247, 247, 247, 226, + 32, 0, 0, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 42, 0, 0, 0, + 114, 246, 247, 247, 247, 247, 236, 229, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 227, 239, 239, 239, 239, 239, 239, 239, 241, 246, 247, + 247, 247, 211, 58, 0, 0, 55, 222, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 202, 31, 0, 0, 0, 124, 247, 247, 247, 247, 247, 245, 231, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 227, 239, 239, 239, 239, 239, 239, + 241, 246, 247, 247, 247, 225, 55, 0, 0, 52, 214, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 233, 174, 18, 0, 5, 25, 155, 244, 247, 247, 247, + 239, 224, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 227, 239, 239, + 239, 239, 239, 239, 242, 247, 247, 247, 222, 40, 0, 0, 3, 107, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 25, 0, 0, 0, + 138, 188, 247, 247, 247, 247, 233, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 227, 239, 239, 239, 239, 239, 239, 242, 247, 247, 204, 49, 0, 0, 0, + 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 1, 0, 0, 0, 34, 84, 228, 247, 247, 246, 238, 238, 224, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 227, 239, 239, 239, 239, 239, 239, 242, 247, 216, 48, + 0, 0, 0, 102, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 232, 143, 12, 0, 0, 0, 42, 220, 247, 247, 247, + 247, 245, 239, 223, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 229, 239, 239, 239, 239, 239, 241, + 246, 217, 26, 0, 0, 63, 232, 246, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 87, 0, 0, 0, + 51, 143, 229, 247, 247, 247, 247, 239, 231, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 228, 239, 239, 239, + 239, 239, 239, 247, 197, 40, 0, 0, 70, 240, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 240, 100, 0, 0, 0, 0, 67, 131, 247, 247, 247, 247, 247, 235, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 236, 239, 239, 239, 239, 239, 239, 206, 42, 0, 0, 73, 226, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 247, 235, 61, 0, 0, 0, 5, 118, 203, 247, 247, + 247, 246, 245, 232, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 227, 237, 238, 239, 239, 239, 239, 216, 199, 13, 0, 0, 45, 244, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 110, 44, 0, 0, + 0, 2, 167, 247, 247, 247, 247, 247, 233, 232, 225, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 228, 232, 239, 239, 239, 239, 239, 239, 111, 0, 0, + 0, 0, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 163, 0, 0, 0, 19, 77, 200, 247, 247, 247, 247, 247, 241, 223, + 221, 221, 221, 221, 221, 221, 221, 221, 229, 238, 239, 239, 239, 239, 239, 239, + 190, 34, 0, 0, 84, 175, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 253, 181, 49, 10, 0, 0, 10, 51, 219, 247, + 247, 247, 247, 245, 245, 245, 245, 245, 245, 239, 237, 237, 238, 239, 239, 239, + 239, 239, 239, 189, 10, 0, 0, 95, 247, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 0, 0, + 0, 0, 59, 136, 236, 247, 247, 247, 247, 247, 247, 247, 247, 243, 241, 239, + 239, 239, 239, 239, 239, 239, 176, 23, 0, 0, 89, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 178, 91, 0, 0, 0, 0, 66, 139, 247, 247, 247, 247, 247, 247, + 247, 247, 246, 242, 239, 239, 239, 239, 239, 180, 29, 0, 0, 0, 196, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 249, 243, 60, 30, 0, 0, 4, 11, 168, + 212, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246, 246, 219, 6, 0, 0, + 15, 154, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 117, + 10, 0, 0, 0, 43, 132, 137, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 131, 0, 0, 7, 158, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 189, 112, 0, 0, 0, 0, 2, 70, 160, 247, 247, 247, + 247, 247, 175, 70, 8, 0, 0, 155, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 247, 84, 38, 0, 0, 0, + 3, 7, 48, 191, 230, 237, 114, 0, 0, 20, 168, 253, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 211, 121, 117, 0, 0, 0, 0, 0, 89, 107, 0, 0, 13, 168, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 186, 91, 0, 0, 0, 0, 0, 0, 0, + 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 251, 50, 0, + 0, 0, 0, 39, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 226, 68, 0, 0, 50, 208, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 225, 190, 190, 216, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 190, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 6, 6, 6, 6, 6, + 2, 0, 0, 0, 0, 0, 0, 3, 125, 190, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, + 153, 60, 0, 0, 0, 0, 0, 5, 9, 10, 10, 10, 10, 13, 14, 14, + 14, 14, 13, 12, 10, 9, 9, 9, 1, 0, 0, 0, 0, 30, 60, 247, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 232, 186, 179, 0, 0, 0, 0, 0, 2, 14, 27, 27, 65, 71, 87, 99, + 122, 176, 176, 176, 176, 176, 153, 56, 56, 56, 39, 12, 12, 12, 7, 0, + 0, 0, 0, 39, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 242, 81, 0, 0, 0, 0, 0, 1, 20, 41, 47, 71, 71, + 71, 90, 155, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 146, 97, + 90, 12, 12, 7, 4, 0, 0, 0, 54, 213, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 252, 129, 51, 0, 0, 0, 0, 4, 10, 21, 63, + 71, 71, 71, 71, 80, 160, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 172, 100, 16, 13, 11, 4, 0, 0, 0, 39, 234, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 244, 112, 0, 0, 0, 1, 10, 12, + 20, 60, 71, 71, 71, 71, 71, 71, 83, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 82, 46, 12, 5, 0, + 0, 0, 29, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 117, 100, 0, 0, 0, + 2, 9, 13, 43, 57, 71, 71, 71, 71, 71, 71, 71, 83, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 155, 100, 34, 5, 0, 0, 0, 101, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 249, 243, 243, 243, 243, 79, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 86, 243, 243, 243, 243, 243, 243, 243, 249, 255, 255, 255, 255, 252, 137, 0, + 0, 0, 0, 1, 10, 13, 16, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 82, 172, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 150, 20, 5, 0, 0, 21, 173, 253, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 181, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 180, 255, 255, + 255, 204, 0, 0, 0, 0, 2, 10, 12, 45, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 96, 163, 176, 176, 176, 175, 144, 159, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 151, 38, 6, 0, 0, + 0, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 185, 112, 3, 0, 0, 0, 0, 0, 0, 13, + 72, 97, 97, 97, 97, 97, 97, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 114, 182, 255, 96, 0, 0, 0, 6, 9, 12, 22, 59, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 98, 118, 118, 118, 117, 71, + 93, 118, 118, 142, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 142, 40, 0, 0, 0, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 246, 235, 49, 24, 0, 0, 1, 4, 12, + 57, 57, 70, 146, 167, 176, 176, 176, 176, 176, 176, 152, 141, 141, 141, 141, + 97, 15, 5, 0, 0, 0, 0, 24, 49, 1, 0, 0, 9, 12, 12, 16, + 63, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 79, 143, 175, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 154, 25, 0, 0, 5, 114, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 229, 78, 0, 0, 0, 0, + 21, 43, 71, 71, 71, 91, 166, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 133, 73, 24, 7, 0, 0, 0, 0, 0, 0, 2, + 11, 12, 12, 17, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 140, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 149, 7, 0, 0, 0, 147, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 75, 0, + 0, 0, 19, 40, 70, 71, 71, 71, 94, 159, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 138, 104, 45, 15, 0, 0, + 0, 0, 0, 8, 12, 12, 12, 17, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 77, 138, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 164, 66, + 2, 0, 0, 64, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, + 121, 42, 0, 0, 0, 19, 64, 71, 71, 71, 71, 71, 111, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 170, + 114, 30, 10, 0, 0, 0, 0, 8, 12, 12, 12, 17, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 78, 142, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 115, 15, 1, 0, 0, 193, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 244, 108, 0, 0, 0, 12, 24, 71, 71, 71, 71, 71, 71, 71, + 111, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 121, 81, 8, 1, 0, 0, 8, 12, 12, 12, 17, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 114, 170, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 84, 7, 0, 0, 13, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 108, 0, 0, 0, 12, 57, 71, 71, 71, 71, + 71, 71, 71, 71, 111, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 158, 60, 3, 0, 0, 8, + 12, 12, 12, 17, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 113, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 109, 18, 0, 0, + 13, 255, 255, 255, 255, 255, 255, 255, 255, 240, 24, 0, 0, 5, 36, 44, + 44, 44, 44, 44, 67, 71, 71, 71, 77, 137, 174, 176, 176, 175, 144, 88, + 88, 88, 88, 88, 101, 170, 176, 176, 176, 176, 176, 176, 176, 176, 176, 162, + 84, 3, 1, 8, 12, 12, 12, 16, 67, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 67, 65, 52, 45, 65, 67, 71, 71, 71, 71, + 71, 71, 71, 71, 79, 169, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 109, 23, 6, 0, 2, 103, 255, 255, 255, 255, 255, 255, 218, 57, 0, 0, + 8, 34, 39, 39, 39, 39, 39, 39, 43, 60, 60, 60, 60, 66, 130, 139, + 139, 136, 71, 71, 71, 71, 71, 71, 71, 99, 163, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 99, 29, 12, 12, 12, 12, 12, 12, 24, 62, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 68, 50, 27, 12, 12, 12, 12, 21, + 50, 65, 71, 71, 71, 71, 71, 71, 71, 93, 160, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 109, 64, 7, 0, 0, 73, 255, 255, 255, 255, 255, 227, + 59, 0, 0, 8, 32, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 47, 68, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 98, 120, + 176, 176, 176, 176, 176, 176, 176, 176, 99, 66, 31, 12, 12, 12, 12, 12, + 12, 45, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 64, 12, 12, 12, + 12, 12, 12, 12, 12, 29, 69, 71, 71, 71, 71, 71, 71, 71, 129, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 109, 68, 33, 3, 0, 73, 255, 255, + 255, 255, 255, 187, 0, 0, 0, 16, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 43, 52, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 72, 114, 171, 176, 176, 176, 176, 176, 176, 99, 71, 45, 12, + 12, 12, 12, 12, 12, 16, 22, 66, 71, 71, 71, 71, 71, 71, 68, 36, + 19, 12, 12, 12, 12, 12, 12, 12, 12, 12, 20, 20, 50, 65, 71, 71, + 71, 71, 79, 149, 176, 176, 176, 176, 176, 176, 174, 133, 76, 71, 65, 22, + 0, 11, 152, 255, 255, 255, 255, 13, 0, 0, 15, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 45, 66, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 111, 169, 176, 176, 176, 176, 157, + 89, 71, 45, 12, 12, 12, 12, 12, 12, 12, 12, 22, 49, 49, 49, 49, + 49, 49, 34, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 17, 57, 71, 71, 71, 71, 73, 148, 176, 176, 176, 176, 150, 127, 71, + 71, 71, 46, 0, 0, 0, 134, 255, 255, 255, 255, 13, 0, 0, 34, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 46, 67, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 109, 176, + 176, 176, 159, 91, 71, 71, 45, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 20, 56, 71, 71, 71, 71, 81, 111, 111, 111, + 111, 83, 71, 71, 71, 71, 46, 0, 0, 0, 134, 255, 255, 255, 98, 1, + 0, 22, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 59, 63, 63, 63, 70, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 85, 85, 85, 81, 71, 71, 71, 45, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 48, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 67, 25, 0, 0, 134, 255, + 255, 255, 73, 0, 6, 30, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 17, 12, 12, 12, 53, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 45, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 34, + 67, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 45, + 4, 0, 84, 232, 255, 255, 73, 0, 16, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 17, 12, 12, + 12, 17, 34, 59, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 45, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 33, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 13, 0, 0, 194, 255, 148, 8, 0, 16, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 17, 12, 12, 12, 12, 12, 16, 26, 66, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 54, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 16, 65, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 14, 0, 0, 194, 255, 134, 0, 0, + 16, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 17, 12, 12, 12, 12, 12, 12, 12, 36, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 14, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 30, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 22, 0, 0, 119, + 255, 134, 0, 1, 20, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 17, 12, 12, 12, 12, 12, 12, + 12, 20, 33, 66, 71, 71, 71, 71, 71, 71, 71, 52, 33, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 30, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 22, 0, 0, 0, 245, 114, 0, 2, 23, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 25, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 22, 62, 62, 62, 62, 62, 62, 51, 15, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 30, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 24, 27, 0, 0, 194, 0, 0, 2, 23, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 23, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 30, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 30, 111, 0, 0, 194, 0, 0, 2, + 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 23, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 30, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 22, 8, 0, 0, + 194, 0, 0, 10, 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 23, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 37, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 22, 8, 0, 0, 194, 0, 0, 11, 23, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 23, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 16, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 22, 8, 0, 0, 194, 0, 0, 11, 23, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 32, + 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 16, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 22, 8, 0, 0, 194, 0, 0, 11, + 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 38, 22, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 25, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 22, 6, 0, 0, + 194, 0, 0, 11, 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 30, 14, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 61, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 22, 0, 0, 0, 194, 0, 0, 11, 23, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 31, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 61, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 47, 14, 0, 0, 0, 194, 0, 0, 11, 23, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 37, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 45, 70, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 36, 11, 0, 0, 183, 194, 0, 0, 11, + 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 38, 20, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 48, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 61, 25, 7, 0, 0, 194, + 194, 0, 0, 11, 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 31, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 48, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 50, 12, + 2, 0, 0, 194, 194, 0, 0, 11, 12, 30, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 38, 27, + 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 33, 69, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 50, 10, 1, 0, 128, 252, 194, 0, 0, 11, 12, 29, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 34, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 68, 32, 5, 0, 0, 134, 255, 194, 0, 0, 11, + 12, 17, 36, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 33, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 60, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 64, 12, 5, 0, 0, 134, 255, + 194, 0, 0, 9, 12, 12, 36, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 32, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 30, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 54, 11, 3, + 0, 71, 251, 255, 194, 0, 0, 2, 12, 12, 26, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 35, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 30, 67, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 19, 7, 0, 0, 73, 255, 255, 238, 98, 0, 0, 6, 12, 12, 26, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 26, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 51, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 18, 2, 0, 9, 206, 255, 255, 255, 134, 0, 0, + 5, 12, 12, 19, 36, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 38, 24, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 18, 55, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 62, 16, 0, 0, 60, 255, 255, 255, + 255, 193, 36, 0, 2, 9, 12, 12, 20, 36, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 37, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 33, 6, 0, 0, + 208, 255, 255, 255, 255, 255, 73, 0, 0, 7, 12, 12, 12, 34, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 32, 23, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 20, 62, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 33, 1, 0, 0, 208, 255, 255, 255, 255, 255, 119, 3, 0, 0, 10, 12, + 12, 14, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 30, 14, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 68, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 68, 38, 10, 1, 0, 37, 220, 255, 255, 255, 255, 255, 255, 13, + 0, 0, 6, 12, 12, 14, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 30, 24, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 68, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 60, 5, 2, 0, 0, 147, 255, 255, 255, 255, + 255, 255, 255, 161, 0, 0, 1, 11, 12, 12, 24, 38, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 35, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 68, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 25, 0, 0, 0, 66, 229, + 255, 255, 255, 255, 255, 255, 255, 220, 39, 0, 0, 4, 12, 12, 12, 26, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 31, 14, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 54, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 14, 0, + 0, 0, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 0, 0, 2, + 9, 12, 12, 19, 35, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 22, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 26, 63, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 49, 12, 0, 0, 0, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 231, 67, 0, 0, 7, 11, 12, 12, 33, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 35, 31, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 23, 64, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 50, 16, 2, 0, 0, 21, 217, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 135, 7, 0, 0, 10, 12, 12, 27, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 37, 17, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 39, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 67, 35, 12, 0, 0, 0, 27, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, 0, 0, 10, 12, 12, + 12, 28, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, 26, 15, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 36, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 58, 12, 7, 0, 0, + 0, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 0, + 0, 2, 11, 12, 12, 18, 37, 38, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 58, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 58, + 12, 3, 0, 0, 7, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 231, 48, 0, 0, 3, 12, 12, 12, 12, 25, 38, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 32, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 29, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 44, 10, 2, 0, 30, 189, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 161, 0, 0, 1, 9, 12, 12, 12, 12, + 26, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, 26, 16, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 13, 52, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 46, 12, 6, 0, 0, 101, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 81, 0, 0, 6, + 11, 12, 12, 12, 13, 26, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 20, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 51, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 69, 26, 11, 6, 0, 2, 110, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 149, 12, 0, 0, 6, 12, 12, 12, 12, 20, 30, 38, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 21, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 22, 63, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 66, 32, 12, 9, + 0, 0, 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 151, 0, 0, 0, 12, 12, 12, 12, 12, 12, 25, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 27, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 15, 45, 60, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 55, 12, 12, 4, 0, 0, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 13, 0, 0, 4, 11, 12, + 12, 12, 12, 12, 16, 29, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 36, 34, + 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, + 22, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 66, 19, 12, 11, 0, 0, 0, 235, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 37, + 0, 0, 3, 10, 12, 12, 12, 12, 12, 12, 35, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 21, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 49, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 24, 12, 12, 3, 0, 0, 57, 241, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 114, 0, 0, 0, 3, 11, 12, 12, 12, 12, 12, 21, 28, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 37, 27, 17, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 25, 62, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 51, 17, 12, 12, 3, 0, + 0, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 231, 62, 0, 0, 0, 3, 11, 12, 12, + 12, 12, 12, 20, 36, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 36, 17, + 13, 12, 12, 12, 12, 12, 12, 12, 12, 20, 65, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 55, 16, 12, + 12, 6, 0, 0, 95, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 64, 0, 0, + 0, 3, 10, 12, 12, 12, 12, 12, 12, 33, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 30, 12, 12, 12, 12, 12, 12, 12, 12, 37, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 53, 38, 12, 12, 10, 3, 0, 18, 162, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 228, 76, 0, 0, 0, 3, 11, 12, 12, 12, 12, 12, 20, 27, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 35, 28, 15, 12, 12, 12, 12, 12, + 36, 69, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 21, 12, 12, 12, 8, 0, 0, 54, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 236, 77, 0, 0, 0, 3, 10, 11, 12, 12, + 12, 12, 18, 36, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, 14, + 13, 12, 12, 14, 54, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 68, 37, 13, 12, 12, 11, 1, 0, 0, 220, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 50, 0, 0, + 0, 4, 11, 12, 12, 12, 12, 12, 25, 38, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 30, 21, 21, 44, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 48, 12, 12, 12, 12, 8, + 0, 0, 67, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 211, 50, 0, 0, 0, 4, 12, 12, 12, 12, 12, 12, 38, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 44, 51, 54, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 38, 26, 12, + 12, 12, 7, 0, 0, 0, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 231, 41, 0, 0, 0, 4, 10, 11, 12, 12, + 12, 15, 26, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 52, 67, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 37, 12, 12, 12, 12, 11, 4, 0, 0, 111, 246, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 95, 35, 0, 0, + 0, 6, 12, 12, 12, 12, 19, 28, 38, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 67, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 66, 48, 24, 12, 12, 12, 11, 5, 0, 0, 25, 175, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 195, 21, 0, 0, 0, 6, 12, 12, 12, 12, 12, 24, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 51, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 59, 12, 12, 12, 12, 12, 5, 0, 0, 4, + 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 209, 22, 0, 0, 0, 6, 11, 12, 12, 12, + 12, 15, 30, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 52, 71, 71, 71, 71, 71, 71, 71, 71, 20, 12, 12, 12, 12, 11, + 1, 0, 0, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 42, 0, 0, 0, + 5, 11, 12, 12, 12, 12, 22, 29, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 50, 71, 71, 71, 71, 71, 71, 71, 54, 13, 12, + 12, 12, 10, 2, 0, 0, 55, 222, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 202, 31, 0, 0, 0, 6, 12, 12, 12, 12, 12, 13, 27, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 50, 71, 71, 71, 71, 71, 71, + 52, 17, 12, 12, 12, 10, 2, 0, 0, 52, 214, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 233, 174, 18, 0, 0, 1, 7, 11, 12, 12, 12, + 20, 34, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 50, 71, 71, + 71, 71, 71, 71, 42, 12, 12, 12, 10, 1, 0, 0, 3, 107, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 25, 0, 0, 0, + 6, 9, 12, 12, 12, 12, 26, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 50, 71, 71, 71, 71, 71, 71, 42, 12, 12, 9, 2, 0, 0, 0, + 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 1, 0, 0, 0, 1, 4, 11, 12, 12, 12, 21, 21, 35, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 50, 71, 71, 71, 71, 71, 71, 42, 12, 10, 2, + 0, 0, 0, 102, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 232, 143, 12, 0, 0, 0, 2, 10, 12, 12, 12, + 12, 13, 19, 36, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 53, 71, 71, 71, 71, 70, 50, + 14, 10, 1, 0, 0, 63, 232, 246, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 87, 0, 0, 0, + 2, 6, 11, 12, 12, 12, 12, 19, 27, 38, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 52, 71, 71, 71, + 71, 71, 70, 12, 9, 1, 0, 0, 70, 240, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 240, 100, 0, 0, 0, 0, 3, 6, 12, 12, 12, 12, 12, 24, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 67, 71, 71, 71, 71, 71, 70, 10, 2, 0, 0, 73, 226, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 247, 235, 61, 0, 0, 0, 0, 5, 9, 12, 12, + 12, 12, 14, 27, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 50, 68, 70, 71, 71, 71, 71, 64, 24, 0, 0, 0, 45, 244, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 110, 44, 0, 0, + 0, 0, 8, 12, 12, 12, 12, 12, 25, 27, 34, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 51, 60, 71, 71, 71, 71, 71, 71, 33, 0, 0, + 0, 0, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 163, 0, 0, 0, 0, 3, 9, 12, 12, 12, 12, 12, 17, 36, + 39, 39, 39, 39, 39, 39, 39, 39, 54, 70, 71, 71, 71, 71, 71, 71, + 56, 10, 0, 0, 84, 175, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 253, 181, 49, 10, 0, 0, 0, 2, 10, 12, + 12, 12, 12, 13, 13, 13, 13, 13, 13, 55, 69, 69, 70, 71, 71, 71, + 71, 71, 71, 56, 2, 0, 0, 95, 247, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 0, 0, + 0, 0, 2, 6, 11, 12, 12, 12, 12, 12, 12, 12, 12, 36, 50, 71, + 71, 71, 71, 71, 71, 71, 52, 6, 0, 0, 89, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 178, 91, 0, 0, 0, 0, 3, 6, 12, 12, 12, 12, 12, 12, + 12, 12, 15, 48, 71, 71, 71, 71, 71, 53, 8, 0, 0, 0, 196, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 249, 243, 60, 30, 0, 0, 0, 0, 8, + 10, 12, 12, 12, 12, 12, 12, 13, 14, 14, 14, 14, 13, 2, 0, 0, + 15, 154, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 117, + 10, 0, 0, 0, 2, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 6, 0, 0, 7, 158, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 189, 112, 0, 0, 0, 0, 0, 3, 7, 12, 12, 12, + 12, 12, 8, 3, 0, 0, 0, 154, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 247, 84, 38, 0, 0, 0, + 0, 0, 2, 9, 11, 11, 5, 0, 0, 19, 168, 253, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 211, 121, 117, 0, 0, 0, 0, 0, 4, 5, 0, 0, 13, 168, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 186, 91, 0, 0, 0, 0, 0, 0, 0, + 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 251, 50, 0, + 0, 0, 0, 39, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 226, 68, 0, 0, 50, 208, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 225, 190, 190, 216, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 190, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 6, 6, 6, 6, 6, + 2, 0, 0, 0, 0, 0, 0, 3, 125, 190, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, + 153, 60, 0, 0, 0, 0, 0, 5, 9, 10, 10, 10, 10, 13, 14, 14, + 14, 14, 13, 12, 10, 9, 9, 9, 1, 0, 0, 0, 0, 30, 60, 247, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 232, 186, 179, 0, 0, 0, 0, 0, 2, 14, 27, 27, 65, 71, 87, 99, + 122, 176, 176, 176, 176, 176, 153, 56, 56, 56, 39, 12, 12, 12, 7, 0, + 0, 0, 0, 39, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 242, 81, 0, 0, 0, 0, 0, 1, 20, 41, 47, 71, 71, + 71, 90, 155, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 146, 97, + 90, 12, 12, 7, 4, 0, 0, 0, 54, 213, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 252, 129, 51, 0, 0, 0, 0, 4, 10, 21, 63, + 71, 71, 71, 71, 80, 160, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 172, 100, 16, 13, 11, 4, 0, 0, 0, 39, 234, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 244, 112, 0, 0, 0, 1, 10, 12, + 20, 60, 71, 71, 71, 71, 71, 71, 83, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 82, 46, 12, 5, 0, + 0, 0, 29, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 117, 100, 0, 0, 0, + 2, 9, 13, 43, 57, 71, 71, 71, 71, 71, 71, 71, 83, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 155, 100, 34, 5, 0, 0, 0, 101, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 249, 243, 243, 243, 243, 79, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 86, 243, 243, 243, 243, 243, 243, 243, 249, 255, 255, 255, 255, 252, 137, 0, + 0, 0, 0, 1, 10, 13, 16, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 82, 172, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 150, 20, 5, 0, 0, 21, 173, 253, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 181, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 180, 255, 255, + 255, 204, 0, 0, 0, 0, 2, 10, 12, 45, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 96, 163, 176, 176, 176, 175, 144, 159, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 151, 38, 6, 0, 0, + 0, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 185, 112, 3, 0, 0, 0, 0, 0, 0, 13, + 72, 97, 97, 97, 97, 97, 97, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 114, 182, 255, 96, 0, 0, 0, 6, 9, 12, 22, 59, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 98, 118, 118, 118, 117, 71, + 93, 118, 118, 142, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 142, 40, 0, 0, 0, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 246, 235, 49, 24, 0, 0, 1, 4, 12, + 57, 57, 70, 146, 167, 176, 176, 176, 176, 176, 176, 152, 141, 141, 141, 141, + 97, 15, 5, 0, 0, 0, 0, 24, 49, 1, 0, 0, 9, 12, 12, 16, + 63, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 79, 143, 175, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 154, 25, 0, 0, 5, 114, 248, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 229, 78, 0, 0, 0, 0, + 21, 43, 71, 71, 71, 91, 166, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 133, 73, 24, 7, 0, 0, 0, 0, 0, 0, 2, + 11, 12, 12, 17, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 140, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 149, 7, 0, 0, 0, 147, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 75, 0, + 0, 0, 19, 40, 70, 71, 71, 71, 94, 159, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 138, 104, 45, 15, 0, 0, + 0, 0, 0, 8, 12, 12, 12, 17, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 77, 138, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 164, 66, + 2, 0, 0, 64, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, + 121, 42, 0, 0, 0, 19, 64, 71, 71, 71, 71, 71, 111, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 170, + 114, 30, 10, 0, 0, 0, 0, 8, 12, 12, 12, 17, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 78, 142, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 115, 15, 1, 0, 0, 193, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 244, 108, 0, 0, 0, 12, 24, 71, 71, 71, 71, 71, 71, 71, + 111, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 121, 81, 8, 1, 0, 0, 8, 12, 12, 12, 17, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 114, 170, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 84, 7, 0, 0, 13, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 108, 0, 0, 0, 12, 57, 71, 71, 71, 71, + 71, 71, 71, 71, 111, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 158, 60, 3, 0, 0, 8, + 12, 12, 12, 17, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 113, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 109, 18, 0, 0, + 13, 255, 255, 255, 255, 255, 255, 255, 255, 240, 24, 0, 0, 5, 36, 44, + 44, 44, 44, 44, 67, 71, 71, 71, 77, 137, 174, 176, 176, 175, 144, 88, + 88, 88, 88, 88, 101, 170, 176, 176, 176, 176, 176, 176, 176, 176, 176, 162, + 84, 3, 1, 8, 12, 12, 12, 16, 67, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 67, 65, 52, 45, 65, 67, 71, 71, 71, 71, + 71, 71, 71, 71, 79, 169, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 109, 23, 6, 0, 2, 103, 255, 255, 255, 255, 255, 255, 218, 57, 0, 0, + 8, 34, 39, 39, 39, 39, 39, 39, 43, 60, 60, 60, 60, 66, 130, 139, + 139, 136, 71, 71, 71, 71, 71, 71, 71, 99, 163, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 99, 29, 12, 12, 12, 12, 12, 12, 24, 62, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 68, 50, 27, 12, 12, 12, 12, 21, + 50, 65, 71, 71, 71, 71, 71, 71, 71, 93, 160, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 109, 64, 7, 0, 0, 73, 255, 255, 255, 255, 255, 227, + 59, 0, 0, 8, 32, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 47, 68, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 98, 120, + 176, 176, 176, 176, 176, 176, 176, 176, 99, 66, 31, 12, 12, 12, 12, 12, + 12, 45, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 64, 12, 12, 12, + 12, 12, 12, 12, 12, 29, 69, 71, 71, 71, 71, 71, 71, 71, 129, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 109, 68, 33, 3, 0, 73, 255, 255, + 255, 255, 255, 187, 0, 0, 0, 16, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 43, 52, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 72, 114, 171, 176, 176, 176, 176, 176, 176, 99, 71, 45, 12, + 12, 12, 12, 12, 12, 16, 22, 66, 71, 71, 71, 71, 71, 71, 68, 36, + 19, 12, 12, 12, 12, 12, 12, 12, 12, 12, 20, 20, 50, 65, 71, 71, + 71, 71, 79, 149, 176, 176, 176, 176, 176, 176, 174, 133, 76, 71, 65, 22, + 0, 11, 152, 255, 255, 255, 255, 13, 0, 0, 15, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 45, 66, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 111, 169, 176, 176, 176, 176, 157, + 89, 71, 45, 12, 12, 12, 12, 12, 12, 12, 12, 22, 49, 49, 49, 49, + 49, 49, 34, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 17, 57, 71, 71, 71, 71, 73, 148, 176, 176, 176, 176, 150, 127, 71, + 71, 71, 46, 0, 0, 0, 134, 255, 255, 255, 255, 13, 0, 0, 34, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 46, 67, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 109, 176, + 176, 176, 159, 91, 71, 71, 45, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 20, 56, 71, 71, 71, 71, 81, 111, 111, 111, + 111, 83, 71, 71, 71, 71, 46, 0, 0, 0, 134, 255, 255, 255, 98, 1, + 0, 22, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 59, 63, 63, 63, 70, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 85, 85, 85, 81, 71, 71, 71, 45, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 48, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 67, 25, 0, 0, 134, 255, + 255, 255, 73, 0, 6, 30, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 17, 12, 12, 12, 53, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 45, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 34, + 67, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 45, + 4, 0, 84, 232, 255, 255, 73, 0, 16, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 17, 12, 12, + 12, 17, 34, 59, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 45, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 33, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 13, 0, 0, 194, 255, 148, 8, 0, 16, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 17, 12, 12, 12, 12, 12, 16, 26, 66, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 54, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 16, 65, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 14, 0, 0, 194, 255, 134, 0, 0, + 16, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 17, 12, 12, 12, 12, 12, 12, 12, 36, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 14, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 30, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 22, 0, 0, 119, + 255, 134, 0, 1, 20, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 17, 12, 12, 12, 12, 12, 12, + 12, 20, 33, 66, 71, 71, 71, 71, 71, 71, 71, 52, 33, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 30, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 22, 0, 0, 0, 245, 114, 0, 2, 23, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 25, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 22, 62, 62, 62, 62, 62, 62, 51, 15, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 30, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 24, 27, 0, 0, 194, 0, 0, 2, 23, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 23, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 30, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 30, 111, 0, 0, 194, 0, 0, 2, + 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 23, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 30, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 22, 8, 0, 0, + 194, 0, 0, 10, 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 23, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 37, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 22, 8, 0, 0, 194, 0, 0, 11, 23, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 23, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 16, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 22, 8, 0, 0, 194, 0, 0, 11, 23, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 32, + 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 16, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 22, 8, 0, 0, 194, 0, 0, 11, + 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 38, 22, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 25, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 22, 6, 0, 0, + 194, 0, 0, 11, 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 30, 14, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 61, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 22, 0, 0, 0, 194, 0, 0, 11, 23, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 31, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 61, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 47, 14, 0, 0, 0, 194, 0, 0, 11, 23, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 37, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 45, 70, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 36, 11, 0, 0, 183, 194, 0, 0, 11, + 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 38, 20, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 48, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 61, 25, 7, 0, 0, 194, + 194, 0, 0, 11, 23, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 31, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 48, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 50, 12, + 2, 0, 0, 194, 194, 0, 0, 11, 12, 30, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 38, 27, + 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 33, 69, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 50, 10, 1, 0, 128, 252, 194, 0, 0, 11, 12, 29, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 34, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 68, 32, 5, 0, 0, 134, 255, 194, 0, 0, 11, + 12, 17, 36, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 33, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 17, 60, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 64, 12, 5, 0, 0, 134, 255, + 194, 0, 0, 9, 12, 12, 36, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 32, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 30, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 54, 11, 3, + 0, 71, 251, 255, 194, 0, 0, 2, 12, 12, 26, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 35, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 30, 67, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 19, 7, 0, 0, 73, 255, 255, 238, 98, 0, 0, 6, 12, 12, 26, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 26, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 51, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 18, 2, 0, 9, 206, 255, 255, 255, 134, 0, 0, + 5, 12, 12, 19, 36, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 38, 24, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 18, 55, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 62, 16, 0, 0, 60, 255, 255, 255, + 255, 193, 36, 0, 2, 9, 12, 12, 20, 36, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 37, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 33, 6, 0, 0, + 208, 255, 255, 255, 255, 255, 73, 0, 0, 7, 12, 12, 12, 34, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 32, 23, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 20, 62, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 33, 1, 0, 0, 208, 255, 255, 255, 255, 255, 119, 3, 0, 0, 10, 12, + 12, 14, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 30, 14, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 68, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 68, 38, 10, 1, 0, 37, 220, 255, 255, 255, 255, 255, 255, 13, + 0, 0, 6, 12, 12, 14, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 30, 24, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 68, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 60, 5, 2, 0, 0, 147, 255, 255, 255, 255, + 255, 255, 255, 161, 0, 0, 1, 11, 12, 12, 24, 38, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 35, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 68, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 25, 0, 0, 0, 66, 229, + 255, 255, 255, 255, 255, 255, 255, 220, 39, 0, 0, 4, 12, 12, 12, 26, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 31, 14, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 54, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 14, 0, + 0, 0, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 0, 0, 2, + 9, 12, 12, 19, 35, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 22, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 26, 63, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 49, 12, 0, 0, 0, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 231, 67, 0, 0, 7, 11, 12, 12, 33, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 35, 31, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 23, 64, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 50, 16, 2, 0, 0, 21, 217, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 135, 7, 0, 0, 10, 12, 12, 27, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 37, 17, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 39, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 67, 35, 12, 0, 0, 0, 27, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 27, 0, 0, 10, 12, 12, + 12, 28, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, 26, 15, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 36, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 58, 12, 7, 0, 0, + 0, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 0, + 0, 2, 11, 12, 12, 18, 37, 38, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 58, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 58, + 12, 3, 0, 0, 7, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 231, 48, 0, 0, 3, 12, 12, 12, 12, 25, 38, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 32, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 29, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 44, 10, 2, 0, 30, 189, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 161, 0, 0, 1, 9, 12, 12, 12, 12, + 26, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, 26, 16, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 13, 52, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 46, 12, 6, 0, 0, 101, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 81, 0, 0, 6, + 11, 12, 12, 12, 13, 26, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 20, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 51, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 69, 26, 11, 6, 0, 2, 110, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 149, 12, 0, 0, 6, 12, 12, 12, 12, 20, 30, 38, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 21, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 22, 63, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 66, 32, 12, 9, + 0, 0, 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 151, 0, 0, 0, 12, 12, 12, 12, 12, 12, 25, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 27, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 15, 45, 60, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 55, 12, 12, 4, 0, 0, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 13, 0, 0, 4, 11, 12, + 12, 12, 12, 12, 16, 29, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 36, 34, + 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, + 22, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 66, 19, 12, 11, 0, 0, 0, 235, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 37, + 0, 0, 3, 10, 12, 12, 12, 12, 12, 12, 35, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 21, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 49, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 24, 12, 12, 3, 0, 0, 57, 241, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 114, 0, 0, 0, 3, 11, 12, 12, 12, 12, 12, 21, 28, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 37, 27, 17, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 25, 62, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 51, 17, 12, 12, 3, 0, + 0, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 231, 62, 0, 0, 0, 3, 11, 12, 12, + 12, 12, 12, 20, 36, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 36, 17, + 13, 12, 12, 12, 12, 12, 12, 12, 12, 20, 65, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 55, 16, 12, + 12, 6, 0, 0, 95, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 64, 0, 0, + 0, 3, 10, 12, 12, 12, 12, 12, 12, 33, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 30, 12, 12, 12, 12, 12, 12, 12, 12, 37, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 53, 38, 12, 12, 10, 3, 0, 18, 162, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 228, 76, 0, 0, 0, 3, 11, 12, 12, 12, 12, 12, 20, 27, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 35, 28, 15, 12, 12, 12, 12, 12, + 36, 69, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 21, 12, 12, 12, 8, 0, 0, 54, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 236, 77, 0, 0, 0, 3, 10, 11, 12, 12, + 12, 12, 18, 36, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, 14, + 13, 12, 12, 14, 54, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 68, 37, 13, 12, 12, 11, 1, 0, 0, 220, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 50, 0, 0, + 0, 4, 11, 12, 12, 12, 12, 12, 25, 38, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 30, 21, 21, 44, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 48, 12, 12, 12, 12, 8, + 0, 0, 67, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 211, 50, 0, 0, 0, 4, 12, 12, 12, 12, 12, 12, 38, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 44, 51, 54, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 38, 26, 12, + 12, 12, 7, 0, 0, 0, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 231, 41, 0, 0, 0, 4, 10, 11, 12, 12, + 12, 15, 26, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 52, 67, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 37, 12, 12, 12, 12, 11, 4, 0, 0, 111, 246, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 95, 35, 0, 0, + 0, 6, 12, 12, 12, 12, 19, 28, 38, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 67, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 66, 48, 24, 12, 12, 12, 11, 5, 0, 0, 25, 175, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 195, 21, 0, 0, 0, 6, 12, 12, 12, 12, 12, 24, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 51, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 59, 12, 12, 12, 12, 12, 5, 0, 0, 4, + 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 209, 22, 0, 0, 0, 6, 11, 12, 12, 12, + 12, 15, 30, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 52, 71, 71, 71, 71, 71, 71, 71, 71, 20, 12, 12, 12, 12, 11, + 1, 0, 0, 33, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 42, 0, 0, 0, + 5, 11, 12, 12, 12, 12, 22, 29, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 50, 71, 71, 71, 71, 71, 71, 71, 54, 13, 12, + 12, 12, 10, 2, 0, 0, 55, 222, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 202, 31, 0, 0, 0, 6, 12, 12, 12, 12, 12, 13, 27, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 50, 71, 71, 71, 71, 71, 71, + 52, 17, 12, 12, 12, 10, 2, 0, 0, 52, 214, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 233, 174, 18, 0, 0, 1, 7, 11, 12, 12, 12, + 20, 34, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 50, 71, 71, + 71, 71, 71, 71, 42, 12, 12, 12, 10, 1, 0, 0, 3, 107, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 25, 0, 0, 0, + 6, 9, 12, 12, 12, 12, 26, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 50, 71, 71, 71, 71, 71, 71, 42, 12, 12, 9, 2, 0, 0, 0, + 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 188, 1, 0, 0, 0, 1, 4, 11, 12, 12, 12, 21, 21, 35, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 50, 71, 71, 71, 71, 71, 71, 42, 12, 10, 2, + 0, 0, 0, 102, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 232, 143, 12, 0, 0, 0, 2, 10, 12, 12, 12, + 12, 13, 19, 36, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 53, 71, 71, 71, 71, 70, 50, + 14, 10, 1, 0, 0, 63, 232, 246, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 87, 0, 0, 0, + 2, 6, 11, 12, 12, 12, 12, 19, 27, 38, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 52, 71, 71, 71, + 71, 71, 70, 12, 9, 1, 0, 0, 70, 240, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 240, 100, 0, 0, 0, 0, 3, 6, 12, 12, 12, 12, 12, 24, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 67, 71, 71, 71, 71, 71, 70, 10, 2, 0, 0, 73, 226, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 247, 235, 61, 0, 0, 0, 0, 5, 9, 12, 12, + 12, 12, 14, 27, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 50, 68, 70, 71, 71, 71, 71, 64, 24, 0, 0, 0, 45, 244, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 110, 44, 0, 0, + 0, 0, 8, 12, 12, 12, 12, 12, 25, 27, 34, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 51, 60, 71, 71, 71, 71, 71, 71, 33, 0, 0, + 0, 0, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 163, 0, 0, 0, 0, 3, 9, 12, 12, 12, 12, 12, 17, 36, + 39, 39, 39, 39, 39, 39, 39, 39, 54, 70, 71, 71, 71, 71, 71, 71, + 56, 10, 0, 0, 84, 175, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 253, 181, 49, 10, 0, 0, 0, 2, 10, 12, + 12, 12, 12, 13, 13, 13, 13, 13, 13, 55, 69, 69, 70, 71, 71, 71, + 71, 71, 71, 56, 2, 0, 0, 95, 247, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 0, 0, + 0, 0, 2, 6, 11, 12, 12, 12, 12, 12, 12, 12, 12, 36, 50, 71, + 71, 71, 71, 71, 71, 71, 52, 6, 0, 0, 89, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 253, 178, 91, 0, 0, 0, 0, 3, 6, 12, 12, 12, 12, 12, 12, + 12, 12, 15, 48, 71, 71, 71, 71, 71, 53, 8, 0, 0, 0, 196, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 249, 243, 60, 30, 0, 0, 0, 0, 8, + 10, 12, 12, 12, 12, 12, 12, 13, 14, 14, 14, 14, 13, 2, 0, 0, + 15, 154, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 117, + 10, 0, 0, 0, 2, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 6, 0, 0, 7, 158, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 189, 112, 0, 0, 0, 0, 0, 3, 7, 12, 12, 12, + 12, 12, 8, 3, 0, 0, 0, 154, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 247, 84, 38, 0, 0, 0, + 0, 0, 2, 9, 11, 11, 5, 0, 0, 19, 168, 253, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 211, 121, 117, 0, 0, 0, 0, 0, 4, 5, 0, 0, 13, 168, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 186, 91, 0, 0, 0, 0, 0, 0, 0, + 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 251, 50, 0, + 0, 0, 0, 39, 231, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 226, 68, 0, 0, 50, 208, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 225, 190, 190, 216, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; +/* Define image 'title' of size 294x94x1x3 and type 'const unsigned char' */ +const unsigned char data_title[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 2, 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, 0, 0, 0, 0, 0, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 3, 1, 3, 1, 3, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, + 2, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, + 0, 0, 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, 0, 0, 1, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 2, 0, + 2, 2, 1, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 0, 1, 0, 2, 0, 3, 1, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 2, 0, 2, 2, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 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, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 2, 1, 1, 2, + 2, 0, 2, 0, 2, 0, 2, 2, 2, 1, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 0, 2, 1, 2, 3, 3, 3, 3, 2, 3, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 1, 1, 3, 1, 1, 0, 1, 0, 2, 1, 3, 2, + 2, 3, 3, 2, 4, 2, 2, 1, 2, 1, 1, 3, 3, 2, 2, 2, + 3, 2, 2, 3, 3, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 1, 2, 2, 2, 1, 1, 0, 0, + 2, 1, 2, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, + 2, 1, 1, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 2, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 2, 5, 5, + 5, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 2, 2, 2, 2, 2, 2, 0, + 2, 1, 2, 2, 3, 3, 2, 3, 3, 4, 4, 4, 3, 2, 3, 3, + 3, 3, 3, 2, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 4, 4, + 4, 4, 4, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, + 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 4, 4, 3, 3, 3, + 3, 2, 1, 1, 1, 1, 2, 1, 1, 1, 3, 3, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, + 2, 1, 4, 3, 4, 3, 5, 4, 5, 5, 6, 6, 4, 4, 4, 4, + 6, 6, 6, 6, 6, 6, 5, 4, 3, 3, 2, 4, 3, 2, 2, 1, + 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 2, 2, 3, 4, + 4, 5, 6, 6, 7, 6, 6, 6, 5, 4, 4, 3, 2, 3, 2, 1, + 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 2, 2, 2, 1, 2, 3, 4, 2, 3, 2, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, + 5, 5, 5, 5, 5, 4, 5, 5, 6, 6, 6, 7, 6, 7, 6, 7, + 7, 7, 5, 5, 6, 5, 5, 5, 6, 6, 6, 5, 6, 6, 6, 7, + 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, + 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8, 8, 8, + 7, 7, 6, 6, 7, 7, 6, 5, 7, 6, 5, 5, 6, 5, 5, 5, + 5, 4, 5, 5, 5, 5, 4, 3, 2, 1, 3, 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, 0, 0, 1, 1, 0, 1, 1, 1, + 1, 0, 1, 1, 2, 1, 2, 4, 5, 4, 6, 6, 7, 6, 7, 7, + 8, 6, 6, 5, 6, 6, 6, 6, 6, 8, 6, 6, 6, 5, 4, 5, + 5, 5, 3, 2, 3, 2, 2, 1, 0, 2, 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, + 2, 1, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 9, 8, 9, 7, + 7, 6, 4, 3, 4, 4, 2, 1, 2, 2, 1, 1, 1, 0, 1, 1, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 3, 2, 3, 4, 5, 6, + 6, 5, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 5, 6, 5, + 6, 6, 6, 6, 6, 6, 8, 6, 8, 6, 8, 6, 8, 6, 7, 7, + 8, 7, 8, 9, 10, 10, 10, 10, 9, 8, 8, 8, 8, 8, 8, 7, + 7, 7, 10, 8, 9, 9, 9, 9, 9, 9, 11, 10, 10, 10, 11, 11, + 11, 11, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 10, + 10, 10, 11, 11, 11, 11, 11, 10, 10, 10, 9, 8, 9, 8, 7, 7, + 6, 8, 6, 6, 7, 7, 6, 6, 6, 6, 8, 7, 7, 5, 5, 4, + 3, 4, 1, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 2, 2, 1, 2, 2, 3, 0, 1, 3, 4, 3, 4, 5, 7, + 7, 7, 9, 9, 10, 10, 11, 10, 10, 9, 10, 10, 10, 10, 9, 10, + 10, 8, 8, 8, 9, 10, 8, 6, 6, 5, 5, 4, 4, 3, 1, 2, + 1, 2, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 1, 2, 3, 2, 4, 2, 2, 4, 6, 8, 9, 9, 9, 11, 12, + 12, 12, 11, 11, 11, 9, 8, 7, 7, 5, 5, 4, 5, 4, 4, 2, + 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 3, 3, + 5, 5, 7, 7, 7, 8, 8, 7, 8, 8, 9, 8, 9, 9, 10, 10, + 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 9, 8, 9, 8, 9, 8, 9, 9, 9, 9, 8, 8, 9, 8, 9, 8, + 8, 7, 8, 8, 9, 10, 12, 11, 11, 11, 12, 13, 14, 12, 12, 11, + 13, 12, 11, 11, 11, 10, 10, 11, 12, 10, 11, 12, 13, 13, 13, 12, + 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 14, 14, 13, 13, 13, 13, + 12, 12, 12, 12, 12, 12, 13, 13, 14, 14, 14, 14, 14, 13, 12, 12, + 14, 12, 12, 11, 11, 10, 9, 10, 11, 10, 10, 10, 10, 10, 9, 8, + 9, 8, 8, 6, 7, 6, 4, 5, 4, 4, 4, 2, 1, 0, 1, 0, + 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 1, 0, 1, 3, 2, 2, 1, 3, 2, 2, 2, + 5, 6, 5, 6, 9, 9, 9, 9, 11, 11, 12, 12, 13, 13, 14, 12, + 14, 14, 14, 14, 13, 13, 12, 12, 10, 9, 11, 10, 9, 8, 7, 7, + 7, 7, 5, 4, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 2, 3, 3, 4, 4, 6, 4, 7, 8, + 10, 10, 10, 11, 12, 14, 15, 14, 14, 13, 14, 13, 11, 12, 9, 9, + 7, 8, 6, 7, 5, 5, 2, 1, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 4, 7, 6, 8, 10, 10, 11, 11, 10, 10, 9, + 10, 10, 10, 10, 11, 12, 13, 11, 13, 11, 12, 10, 12, 10, 12, 10, + 12, 10, 12, 10, 12, 10, 10, 10, 11, 11, 11, 11, 11, 10, 10, 10, + 12, 12, 12, 11, 11, 11, 11, 11, 11, 10, 11, 12, 14, 14, 15, 14, + 15, 16, 16, 16, 16, 16, 15, 15, 14, 13, 13, 14, 14, 15, 14, 14, + 15, 14, 15, 16, 16, 16, 16, 15, 15, 16, 17, 17, 17, 17, 17, 17, + 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 15, 15, 16, 16, 17, 17, + 17, 17, 17, 16, 15, 17, 17, 16, 14, 13, 15, 14, 13, 13, 12, 11, + 12, 11, 11, 11, 12, 12, 11, 11, 10, 9, 9, 8, 7, 7, 5, 6, + 5, 5, 2, 1, 2, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 2, 3, 2, + 2, 2, 4, 3, 3, 4, 5, 6, 7, 7, 10, 12, 13, 12, 15, 16, + 15, 15, 15, 16, 17, 15, 17, 18, 17, 17, 16, 16, 16, 15, 13, 13, + 13, 13, 10, 11, 10, 10, 9, 8, 7, 4, 3, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 5, + 6, 6, 8, 8, 8, 9, 11, 13, 14, 13, 15, 16, 17, 17, 17, 16, + 16, 15, 15, 14, 12, 12, 10, 9, 8, 7, 5, 4, 3, 3, 1, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 5, 5, 6, 9, 12, + 11, 12, 13, 14, 13, 13, 14, 13, 13, 13, 14, 14, 16, 14, 16, 13, + 15, 13, 15, 13, 15, 13, 15, 13, 15, 13, 15, 13, 13, 12, 13, 14, + 14, 13, 13, 13, 13, 13, 14, 14, 14, 13, 13, 13, 13, 13, 13, 12, + 14, 15, 16, 16, 19, 18, 19, 19, 20, 20, 20, 19, 18, 18, 17, 16, + 16, 17, 17, 17, 17, 17, 18, 17, 18, 19, 20, 19, 18, 19, 20, 20, + 21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 19, 19, 19, 19, 19, + 19, 19, 20, 20, 21, 21, 21, 21, 21, 20, 19, 19, 20, 20, 18, 16, + 17, 16, 15, 15, 15, 14, 14, 14, 14, 13, 15, 14, 13, 13, 14, 12, + 11, 9, 9, 9, 7, 8, 7, 5, 5, 3, 2, 2, 2, 1, 0, 0, + 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, + 1, 2, 0, 2, 3, 2, 3, 4, 4, 5, 5, 5, 7, 9, 11, 12, + 14, 14, 16, 16, 18, 19, 19, 19, 19, 18, 18, 18, 19, 19, 21, 20, + 19, 19, 20, 18, 16, 17, 16, 15, 14, 13, 13, 13, 11, 11, 9, 6, + 3, 3, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 3, 3, 5, 6, 7, 10, 10, 11, 12, 12, 13, 15, 17, 17, + 19, 19, 19, 19, 19, 19, 18, 17, 16, 15, 16, 15, 13, 11, 12, 9, + 7, 4, 4, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, + 6, 6, 8, 8, 11, 14, 16, 16, 16, 17, 16, 16, 18, 16, 17, 17, + 17, 18, 18, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 17, 17, + 17, 17, 17, 16, 16, 16, 17, 17, 17, 17, 17, 16, 16, 16, 17, 17, + 16, 16, 17, 17, 17, 16, 17, 19, 20, 20, 20, 21, 21, 23, 21, 22, + 21, 21, 22, 21, 20, 19, 19, 19, 19, 19, 18, 19, 19, 20, 21, 22, + 22, 21, 23, 22, 23, 24, 24, 24, 25, 25, 25, 24, 24, 24, 23, 23, + 23, 23, 22, 22, 22, 22, 22, 23, 23, 23, 24, 24, 24, 24, 24, 23, + 22, 22, 24, 22, 21, 20, 19, 17, 18, 17, 19, 18, 17, 16, 17, 17, + 16, 15, 16, 16, 16, 15, 14, 14, 12, 11, 9, 9, 8, 7, 5, 3, + 2, 1, 2, 2, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 2, 1, 1, 1, 2, 3, 3, 3, 5, 5, + 8, 9, 11, 12, 14, 16, 18, 18, 20, 19, 22, 22, 23, 23, 23, 24, + 23, 23, 23, 23, 24, 23, 25, 24, 23, 21, 20, 19, 19, 19, 18, 17, + 16, 15, 14, 13, 11, 9, 6, 5, 5, 4, 2, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 3, 4, 6, 7, 8, 10, 12, 12, + 15, 15, 17, 19, 20, 20, 22, 24, 23, 23, 23, 22, 22, 20, 20, 20, + 20, 19, 17, 15, 14, 12, 9, 6, 3, 2, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 2, 7, 8, 10, 10, 14, 17, 18, 19, 19, 21, + 20, 21, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 20, 21, 21, 21, 21, 21, 21, 22, 22, + 22, 21, 21, 20, 20, 19, 21, 20, 21, 19, 19, 20, 21, 23, 24, 23, + 24, 25, 25, 26, 26, 26, 25, 26, 25, 24, 23, 22, 23, 23, 24, 24, + 24, 24, 24, 25, 24, 25, 26, 25, 28, 27, 28, 28, 29, 29, 29, 29, + 29, 29, 29, 28, 28, 28, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, + 29, 29, 29, 29, 29, 28, 27, 27, 27, 26, 26, 24, 23, 22, 21, 20, + 23, 22, 22, 22, 21, 21, 21, 20, 21, 19, 18, 19, 17, 16, 16, 15, + 11, 11, 9, 7, 5, 4, 1, 2, 3, 3, 1, 0, 0, 0, 1, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 4, 3, 1, 1, + 4, 4, 5, 7, 8, 8, 11, 12, 14, 16, 17, 20, 23, 23, 24, 23, + 25, 26, 28, 27, 29, 28, 28, 28, 29, 29, 30, 29, 30, 30, 27, 25, + 24, 23, 23, 23, 21, 22, 20, 19, 18, 15, 14, 12, 7, 6, 7, 7, + 3, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 4, 5, + 7, 10, 10, 13, 16, 17, 19, 18, 22, 23, 25, 25, 26, 28, 29, 28, + 28, 27, 27, 25, 24, 25, 24, 23, 19, 17, 15, 13, 9, 6, 2, 3, + 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 4, 5, 11, 11, 11, 12, + 18, 20, 22, 22, 25, 25, 26, 25, 27, 26, 26, 26, 26, 26, 27, 26, + 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 25, 26, + 26, 26, 26, 26, 27, 26, 26, 26, 25, 25, 24, 23, 25, 24, 25, 25, + 23, 24, 25, 27, 28, 27, 30, 30, 30, 31, 31, 32, 30, 30, 31, 30, + 29, 28, 29, 28, 29, 29, 29, 30, 30, 31, 30, 31, 32, 31, 32, 32, + 33, 34, 34, 35, 35, 35, 35, 34, 34, 34, 33, 33, 33, 32, 32, 32, + 32, 32, 32, 33, 33, 34, 34, 34, 34, 34, 34, 33, 32, 32, 32, 31, + 31, 30, 29, 28, 27, 26, 27, 27, 27, 26, 26, 25, 25, 25, 25, 24, + 23, 21, 21, 21, 18, 18, 15, 14, 11, 9, 6, 5, 2, 1, 4, 3, + 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, + 2, 4, 6, 5, 4, 2, 6, 7, 10, 12, 14, 14, 16, 17, 19, 23, + 25, 26, 31, 32, 31, 31, 32, 33, 36, 34, 36, 36, 35, 36, 36, 36, + 38, 37, 38, 37, 35, 33, 31, 31, 31, 30, 29, 30, 28, 27, 25, 21, + 20, 16, 12, 11, 11, 12, 9, 6, 4, 2, 3, 2, 1, 1, 2, 2, + 1, 3, 4, 4, 7, 8, 11, 12, 14, 17, 21, 23, 23, 23, 28, 31, + 31, 33, 33, 35, 36, 35, 35, 34, 33, 32, 31, 30, 29, 28, 24, 21, + 19, 17, 10, 7, 5, 5, 2, 0, 0, 0, 0, 1, 2, 2, 2, 2, + 2, 2, 1, 1, 1, 1, 0, 0, 1, 2, 2, 0, 1, 0, 2, 3, + 5, 10, 16, 15, 14, 15, 21, 25, 28, 29, 33, 33, 33, 32, 34, 35, + 33, 33, 33, 34, 36, 35, 35, 35, 35, 34, 34, 34, 34, 34, 34, 34, + 35, 35, 35, 35, 33, 33, 33, 34, 36, 35, 35, 35, 35, 34, 34, 33, + 33, 32, 32, 31, 31, 31, 31, 32, 31, 34, 35, 35, 38, 37, 38, 39, + 38, 39, 37, 37, 39, 39, 37, 36, 36, 36, 35, 35, 36, 36, 37, 38, + 38, 40, 40, 39, 39, 38, 39, 40, 40, 40, 41, 41, 40, 40, 40, 39, + 39, 39, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 40, 40, 40, 40, + 40, 39, 38, 39, 39, 39, 38, 36, 36, 35, 36, 35, 35, 34, 34, 34, + 33, 33, 34, 33, 33, 32, 29, 29, 28, 25, 23, 22, 20, 18, 15, 11, + 9, 5, 3, 2, 3, 4, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 1, 0, 1, 2, 1, 3, 6, 5, 4, 4, 8, 10, 13, 16, + 17, 18, 22, 22, 24, 26, 28, 31, 36, 38, 36, 36, 39, 39, 39, 39, + 38, 39, 40, 42, 43, 44, 44, 43, 41, 40, 37, 37, 35, 36, 36, 35, + 34, 35, 33, 32, 28, 26, 22, 20, 16, 14, 14, 14, 11, 7, 3, 3, + 3, 3, 1, 2, 3, 3, 2, 3, 4, 4, 6, 6, 8, 10, 13, 17, + 23, 25, 28, 29, 33, 37, 39, 39, 40, 39, 40, 40, 40, 41, 40, 39, + 39, 37, 32, 30, 26, 24, 22, 18, 13, 10, 7, 6, 3, 2, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 0, 1, 1, + 2, 1, 1, 1, 1, 3, 7, 11, 15, 16, 18, 20, 26, 30, 31, 32, + 37, 36, 37, 36, 36, 37, 38, 39, 42, 42, 43, 41, 38, 38, 41, 41, + 38, 38, 40, 41, 41, 40, 39, 39, 41, 41, 40, 39, 39, 41, 42, 42, + 41, 41, 41, 41, 39, 38, 35, 37, 39, 39, 36, 36, 37, 37, 38, 39, + 39, 38, 40, 41, 45, 47, 48, 49, 48, 45, 45, 43, 42, 41, 42, 42, + 40, 39, 40, 39, 40, 41, 44, 44, 43, 43, 43, 43, 42, 42, 45, 46, + 51, 52, 52, 49, 43, 41, 42, 44, 44, 44, 43, 44, 46, 46, 43, 44, + 44, 45, 44, 45, 45, 45, 48, 48, 49, 46, 45, 43, 42, 40, 40, 40, + 41, 42, 40, 40, 38, 37, 38, 38, 37, 38, 40, 38, 37, 34, 32, 29, + 26, 24, 22, 20, 17, 14, 8, 5, 1, 2, 3, 3, 1, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 4, 4, + 7, 8, 12, 16, 17, 20, 23, 23, 25, 28, 29, 26, 27, 33, 41, 42, + 43, 42, 44, 44, 40, 38, 36, 37, 40, 46, 52, 52, 50, 48, 43, 39, + 36, 34, 39, 42, 39, 42, 43, 38, 38, 36, 31, 28, 25, 22, 21, 19, + 19, 16, 10, 6, 3, 1, 0, 2, 3, 4, 4, 3, 4, 3, 4, 4, + 2, 3, 5, 8, 13, 19, 26, 28, 28, 34, 33, 40, 39, 46, 38, 43, + 36, 45, 44, 48, 43, 49, 48, 42, 33, 26, 27, 26, 22, 19, 18, 14, + 10, 8, 2, 2, 2, 2, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 1, 1, 0, 2, 4, 4, 3, 5, 6, 7, 9, 15, 19, + 17, 23, 29, 31, 39, 31, 36, 39, 38, 36, 36, 37, 38, 43, 50, 53, + 47, 42, 38, 33, 48, 41, 41, 40, 40, 53, 46, 35, 43, 36, 43, 49, + 42, 43, 44, 46, 46, 45, 44, 46, 48, 42, 47, 39, 37, 38, 40, 42, + 42, 36, 43, 45, 48, 33, 47, 33, 43, 41, 56, 63, 57, 58, 63, 55, + 52, 43, 46, 42, 49, 47, 38, 41, 42, 39, 44, 43, 49, 45, 49, 38, + 51, 48, 42, 45, 50, 57, 66, 69, 77, 53, 56, 40, 44, 52, 53, 52, + 48, 51, 58, 52, 51, 48, 49, 52, 51, 48, 52, 48, 64, 59, 62, 62, + 52, 45, 45, 42, 39, 41, 40, 53, 46, 41, 35, 35, 39, 40, 38, 39, + 41, 41, 44, 39, 34, 29, 26, 26, 24, 21, 22, 17, 6, 0, 3, 4, + 2, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 2, 2, 2, 4, 7, 11, 14, 16, 18, 19, 21, 26, 27, 30, 28, + 30, 34, 36, 38, 45, 50, 44, 49, 58, 61, 59, 57, 54, 57, 63, 68, + 77, 81, 76, 66, 57, 56, 52, 51, 53, 49, 43, 42, 42, 40, 42, 40, + 36, 37, 22, 30, 26, 19, 22, 17, 12, 8, 6, 1, 2, 4, 5, 4, + 5, 6, 5, 4, 5, 4, 6, 6, 6, 10, 15, 23, 30, 34, 34, 40, + 51, 61, 62, 51, 62, 54, 62, 63, 57, 62, 61, 63, 58, 46, 39, 30, + 31, 29, 23, 20, 19, 15, 12, 9, 5, 4, 5, 4, 4, 4, 2, 2, + 1, 0, 0, 0, 1, 3, 2, 2, 3, 1, 1, 1, 3, 3, 5, 5, + 5, 7, 8, 10, 16, 18, 27, 20, 34, 35, 29, 49, 50, 47, 51, 49, + 49, 50, 49, 55, 65, 67, 68, 62, 50, 51, 58, 64, 59, 43, 54, 34, + 49, 55, 46, 45, 59, 56, 58, 57, 58, 59, 61, 60, 60, 59, 65, 67, + 55, 52, 47, 53, 50, 54, 43, 40, 45, 44, 48, 44, 44, 46, 55, 63, + 65, 35, 4, 14, 45, 56, 68, 65, 47, 51, 55, 42, 50, 50, 50, 44, + 51, 55, 65, 74, 65, 75, 75, 76, 76, 75, 70, 56, 43, 32, 6, 10, + 47, 43, 50, 52, 55, 59, 63, 65, 75, 86, 69, 74, 82, 75, 76, 79, + 69, 44, 35, 6, 0, 27, 54, 51, 48, 43, 46, 48, 57, 56, 58, 54, + 49, 49, 55, 55, 53, 53, 54, 55, 59, 53, 43, 38, 31, 31, 26, 23, + 24, 20, 7, 0, 5, 7, 3, 2, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 2, 2, 4, 6, 8, 11, 18, 19, 16, 16, + 18, 22, 29, 32, 32, 35, 37, 39, 40, 42, 46, 47, 58, 63, 70, 76, + 76, 66, 47, 33, 22, 16, 17, 19, 22, 25, 34, 50, 62, 81, 84, 68, + 54, 48, 46, 44, 45, 35, 36, 42, 28, 32, 33, 29, 25, 24, 18, 15, + 12, 7, 5, 5, 5, 5, 5, 5, 6, 4, 4, 5, 11, 12, 12, 15, + 21, 27, 36, 38, 38, 40, 22, 34, 42, 47, 55, 51, 44, 47, 50, 59, + 54, 40, 17, 1, 53, 40, 35, 32, 25, 22, 19, 16, 12, 9, 6, 5, + 6, 4, 4, 5, 4, 1, 1, 0, 0, 0, 2, 2, 2, 2, 1, 0, + 0, 1, 2, 3, 6, 5, 7, 9, 11, 12, 18, 21, 19, 19, 40, 55, + 45, 57, 61, 76, 83, 85, 83, 82, 79, 81, 88, 92, 89, 87, 86, 85, + 81, 86, 75, 78, 54, 51, 59, 44, 54, 69, 79, 84, 85, 84, 87, 87, + 85, 85, 88, 88, 82, 87, 87, 89, 83, 69, 61, 42, 45, 46, 51, 52, + 50, 53, 53, 74, 95, 36, 0, 4, 8, 0, 0, 0, 16, 78, 69, 46, + 50, 52, 48, 54, 53, 66, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 68, 60, 56, 52, 52, 61, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 52, 67, 54, 55, 55, + 53, 46, 81, 80, 82, 83, 81, 83, 88, 90, 89, 86, 85, 79, 75, 63, + 51, 49, 36, 32, 29, 25, 27, 22, 9, 6, 8, 8, 4, 2, 0, 0, + 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 3, 5, 6, 7, + 11, 15, 21, 21, 18, 16, 19, 23, 32, 35, 37, 39, 43, 45, 48, 53, + 64, 69, 61, 42, 16, 0, 0, 0, 7, 9, 5, 6, 12, 18, 16, 6, + 0, 1, 0, 0, 0, 12, 46, 65, 62, 57, 50, 47, 44, 38, 44, 38, + 29, 25, 27, 27, 25, 22, 18, 13, 9, 8, 5, 4, 6, 6, 6, 5, + 4, 6, 14, 16, 16, 17, 22, 29, 36, 41, 51, 57, 5, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 13, 61, 44, 38, 33, 27, 24, + 22, 17, 13, 12, 7, 6, 7, 5, 6, 5, 5, 3, 3, 2, 2, 1, + 2, 2, 2, 3, 2, 2, 1, 1, 2, 3, 4, 6, 8, 11, 11, 14, + 21, 22, 28, 37, 36, 42, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 61, 48, 47, 54, 61, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 49, 47, 55, 57, 51, 55, 67, 77, 26, 12, 12, 28, 27, 18, + 22, 27, 9, 0, 71, 65, 55, 55, 47, 61, 61, 75, 66, 73, 2, 19, + 17, 18, 35, 30, 21, 14, 15, 19, 25, 23, 5, 21, 75, 60, 55, 54, + 55, 63, 79, 43, 0, 14, 23, 20, 23, 21, 23, 24, 25, 26, 35, 20, + 0, 54, 72, 56, 55, 51, 65, 69, 68, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 43, 43, 35, 30, 25, 26, 21, 11, 7, + 10, 9, 5, 3, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 2, 3, 5, 6, 7, 13, 17, 23, 22, 22, 19, 19, 23, 36, 42, + 54, 48, 38, 46, 64, 70, 49, 20, 0, 1, 10, 17, 18, 19, 17, 19, + 22, 22, 21, 23, 25, 25, 22, 22, 20, 21, 18, 11, 0, 0, 14, 53, + 61, 55, 50, 48, 46, 37, 27, 31, 27, 29, 28, 26, 24, 19, 13, 10, + 6, 5, 6, 8, 9, 7, 7, 10, 17, 19, 19, 20, 22, 27, 35, 37, + 44, 58, 49, 0, 1, 10, 21, 26, 18, 18, 19, 22, 16, 11, 7, 23, + 69, 49, 41, 35, 30, 26, 24, 21, 18, 13, 9, 8, 9, 8, 7, 6, + 7, 4, 3, 3, 4, 4, 5, 5, 6, 6, 5, 5, 4, 3, 5, 6, + 8, 7, 10, 12, 14, 17, 24, 26, 23, 25, 36, 58, 54, 58, 0, 0, + 13, 19, 20, 15, 8, 5, 9, 10, 6, 5, 15, 6, 3, 0, 35, 74, + 63, 63, 59, 54, 56, 55, 45, 0, 1, 9, 7, 6, 7, 6, 4, 6, + 10, 22, 3, 6, 2, 6, 66, 51, 50, 51, 57, 56, 53, 57, 76, 39, + 0, 23, 39, 40, 32, 31, 32, 26, 29, 6, 0, 88, 56, 51, 53, 56, + 65, 64, 66, 72, 66, 0, 11, 39, 31, 34, 30, 28, 28, 30, 31, 22, + 5, 20, 79, 58, 59, 60, 59, 57, 64, 79, 30, 0, 17, 28, 35, 27, + 29, 29, 41, 43, 35, 19, 0, 51, 69, 57, 63, 54, 53, 73, 97, 0, + 0, 6, 9, 11, 17, 19, 16, 14, 12, 10, 3, 0, 6, 55, 52, 35, + 28, 22, 22, 20, 12, 10, 13, 11, 8, 4, 1, 0, 1, 0, 1, 1, + 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 6, 9, 14, 19, 24, 24, + 24, 23, 24, 28, 38, 45, 55, 57, 67, 69, 39, 0, 0, 6, 13, 21, + 28, 33, 32, 33, 33, 34, 35, 37, 37, 36, 37, 39, 36, 32, 36, 31, + 28, 30, 31, 20, 3, 0, 1, 56, 67, 60, 52, 55, 30, 33, 28, 28, + 29, 29, 28, 21, 15, 10, 7, 5, 7, 9, 11, 10, 9, 12, 20, 22, + 23, 23, 24, 27, 31, 35, 38, 51, 75, 38, 0, 20, 36, 37, 37, 34, + 35, 37, 35, 26, 13, 28, 73, 49, 41, 35, 30, 29, 27, 22, 18, 15, + 12, 11, 11, 10, 9, 8, 9, 6, 7, 6, 6, 6, 6, 7, 6, 7, + 7, 6, 5, 5, 7, 7, 8, 9, 11, 13, 14, 17, 24, 25, 24, 35, + 39, 46, 61, 66, 57, 0, 19, 32, 36, 34, 28, 24, 28, 28, 23, 21, + 24, 20, 2, 19, 82, 68, 61, 58, 55, 54, 49, 65, 80, 17, 8, 25, + 24, 24, 25, 24, 23, 26, 27, 23, 25, 12, 0, 76, 78, 56, 53, 56, + 57, 53, 57, 68, 76, 0, 4, 26, 42, 50, 47, 41, 39, 42, 34, 25, + 0, 35, 72, 54, 49, 53, 58, 59, 59, 70, 83, 2, 7, 22, 42, 44, + 39, 34, 34, 35, 35, 27, 8, 24, 89, 64, 62, 60, 55, 56, 58, 73, + 90, 0, 15, 34, 36, 41, 42, 40, 50, 48, 33, 16, 0, 48, 81, 48, + 55, 66, 61, 71, 89, 0, 8, 22, 28, 31, 34, 34, 31, 31, 28, 29, + 21, 0, 7, 61, 54, 37, 30, 22, 21, 20, 13, 12, 15, 12, 9, 5, + 2, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 2, 3, 4, 7, 7, + 8, 11, 18, 21, 24, 25, 26, 29, 33, 39, 45, 49, 50, 68, 59, 17, + 0, 4, 21, 20, 27, 29, 34, 40, 44, 41, 35, 30, 34, 34, 34, 36, + 38, 39, 41, 43, 37, 44, 47, 39, 32, 35, 29, 13, 9, 0, 41, 92, + 68, 45, 47, 32, 31, 30, 31, 33, 32, 24, 17, 13, 8, 8, 9, 12, + 14, 15, 14, 17, 24, 26, 27, 26, 27, 28, 30, 33, 40, 49, 66, 73, + 0, 22, 34, 41, 42, 41, 42, 42, 38, 29, 11, 24, 71, 48, 39, 34, + 33, 32, 30, 26, 22, 19, 16, 15, 15, 13, 13, 12, 12, 10, 10, 9, + 9, 10, 11, 10, 10, 10, 10, 9, 8, 8, 10, 10, 12, 11, 14, 17, + 17, 19, 26, 29, 30, 41, 44, 43, 45, 62, 78, 26, 7, 27, 38, 42, + 40, 40, 43, 42, 37, 34, 30, 22, 0, 66, 84, 54, 62, 62, 56, 60, + 63, 61, 73, 70, 1, 28, 30, 33, 35, 36, 39, 42, 45, 20, 18, 10, + 78, 66, 59, 60, 56, 55, 51, 51, 60, 76, 66, 0, 6, 33, 47, 50, + 53, 55, 49, 43, 38, 28, 18, 29, 80, 50, 65, 55, 52, 58, 42, 62, + 83, 51, 0, 35, 39, 45, 46, 45, 46, 45, 40, 26, 3, 19, 89, 62, + 61, 57, 57, 62, 62, 81, 85, 21, 1, 23, 41, 44, 53, 51, 49, 42, + 36, 15, 0, 57, 78, 58, 60, 60, 59, 78, 90, 0, 9, 28, 35, 40, + 43, 41, 37, 38, 42, 43, 31, 10, 9, 64, 54, 40, 32, 24, 22, 20, + 15, 13, 13, 11, 7, 5, 2, 0, 1, 0, 3, 1, 0, 0, 0, 0, + 0, 1, 2, 3, 6, 8, 8, 11, 18, 22, 25, 26, 31, 35, 39, 44, + 50, 56, 75, 36, 1, 0, 17, 32, 37, 38, 37, 39, 42, 44, 40, 33, + 28, 26, 23, 19, 18, 24, 26, 26, 33, 38, 43, 38, 47, 54, 48, 42, + 40, 36, 36, 22, 3, 0, 76, 70, 59, 46, 35, 33, 34, 34, 32, 27, + 20, 16, 11, 11, 12, 15, 19, 19, 19, 22, 26, 29, 31, 32, 32, 34, + 34, 35, 39, 49, 61, 83, 0, 10, 27, 47, 48, 46, 49, 44, 37, 28, + 10, 28, 71, 46, 38, 35, 35, 37, 36, 33, 27, 23, 20, 18, 18, 18, + 16, 18, 16, 15, 15, 13, 14, 13, 15, 15, 14, 14, 14, 12, 12, 12, + 12, 13, 17, 16, 18, 22, 21, 23, 30, 33, 37, 41, 37, 46, 44, 58, + 65, 63, 0, 23, 38, 47, 50, 50, 54, 53, 46, 40, 35, 7, 0, 106, + 64, 63, 59, 58, 59, 60, 68, 63, 69, 94, 0, 28, 33, 41, 45, 47, + 51, 49, 29, 24, 0, 65, 77, 58, 66, 54, 59, 52, 47, 56, 63, 74, + 52, 0, 12, 30, 42, 53, 63, 62, 53, 49, 43, 31, 22, 0, 85, 61, + 65, 57, 50, 45, 56, 59, 66, 82, 0, 25, 36, 44, 50, 52, 52, 49, + 42, 27, 9, 22, 93, 64, 63, 59, 57, 61, 64, 68, 95, 45, 0, 15, + 41, 43, 55, 58, 50, 40, 36, 11, 0, 66, 76, 62, 62, 60, 59, 71, + 87, 4, 9, 30, 41, 47, 50, 48, 43, 44, 49, 44, 27, 8, 11, 67, + 56, 44, 33, 26, 21, 20, 16, 13, 12, 10, 8, 6, 2, 0, 1, 0, + 1, 1, 0, 1, 0, 0, 1, 4, 4, 6, 6, 8, 12, 15, 20, 24, + 33, 22, 41, 44, 40, 47, 53, 73, 34, 0, 9, 33, 32, 44, 53, 49, + 46, 55, 31, 32, 33, 32, 24, 16, 0, 0, 0, 0, 6, 20, 27, 22, + 25, 46, 49, 59, 52, 56, 46, 38, 33, 26, 21, 6, 4, 84, 62, 58, + 43, 28, 40, 34, 33, 26, 22, 14, 14, 14, 17, 19, 23, 23, 24, 26, + 29, 35, 33, 35, 42, 39, 34, 44, 44, 57, 61, 86, 28, 10, 26, 42, + 42, 49, 48, 42, 38, 26, 10, 26, 71, 46, 37, 35, 39, 41, 38, 36, + 29, 28, 24, 22, 22, 22, 22, 20, 18, 18, 18, 18, 19, 18, 19, 19, + 18, 18, 18, 17, 17, 16, 17, 16, 21, 21, 24, 25, 26, 27, 33, 36, + 41, 41, 43, 42, 41, 45, 59, 86, 0, 18, 30, 40, 46, 55, 67, 59, + 52, 44, 39, 14, 0, 95, 76, 61, 57, 59, 62, 75, 69, 72, 82, 35, + 3, 29, 39, 43, 50, 52, 45, 33, 26, 7, 48, 71, 57, 53, 52, 57, + 55, 49, 51, 56, 65, 71, 53, 0, 10, 33, 40, 50, 67, 63, 50, 51, + 43, 23, 36, 0, 87, 64, 70, 65, 56, 52, 58, 60, 69, 94, 0, 30, + 37, 44, 48, 55, 57, 48, 44, 29, 7, 26, 87, 66, 61, 57, 57, 60, + 63, 70, 83, 53, 0, 15, 31, 43, 54, 59, 46, 35, 27, 17, 0, 70, + 80, 68, 61, 62, 62, 71, 91, 12, 7, 30, 37, 44, 54, 59, 49, 43, + 43, 37, 21, 3, 14, 67, 55, 45, 37, 27, 23, 21, 16, 13, 12, 8, + 8, 6, 2, 1, 2, 0, 1, 1, 0, 1, 0, 0, 1, 3, 4, 7, + 7, 9, 13, 15, 21, 25, 28, 39, 38, 37, 43, 55, 77, 8, 4, 12, + 35, 45, 43, 52, 57, 57, 57, 38, 26, 24, 4, 4, 0, 23, 57, 52, + 62, 62, 29, 0, 0, 7, 31, 34, 44, 60, 65, 58, 52, 44, 44, 32, + 29, 24, 15, 0, 74, 63, 44, 45, 34, 37, 37, 27, 24, 21, 19, 19, + 20, 23, 25, 26, 27, 29, 23, 34, 39, 41, 49, 49, 43, 44, 45, 55, + 56, 84, 30, 14, 28, 34, 44, 50, 48, 42, 38, 26, 11, 26, 73, 49, + 40, 38, 43, 45, 41, 39, 33, 31, 28, 26, 27, 26, 26, 24, 23, 22, + 23, 22, 23, 23, 23, 23, 22, 22, 22, 21, 20, 20, 21, 22, 23, 24, + 28, 28, 29, 31, 36, 40, 45, 47, 45, 44, 42, 45, 57, 83, 0, 18, + 28, 39, 43, 53, 65, 58, 52, 45, 38, 14, 0, 96, 78, 63, 54, 53, + 67, 63, 74, 85, 89, 0, 11, 30, 39, 51, 43, 46, 30, 19, 1, 50, + 69, 52, 47, 49, 50, 52, 50, 51, 52, 50, 63, 75, 68, 0, 8, 27, + 49, 55, 47, 53, 56, 43, 34, 30, 12, 4, 94, 68, 62, 72, 61, 56, + 58, 59, 63, 89, 0, 27, 32, 40, 44, 52, 54, 45, 42, 28, 6, 25, + 86, 66, 62, 58, 58, 61, 62, 68, 77, 49, 0, 16, 31, 43, 54, 59, + 46, 35, 29, 19, 0, 70, 79, 62, 56, 60, 59, 68, 89, 13, 7, 32, + 37, 44, 54, 59, 49, 43, 42, 33, 32, 1, 43, 67, 58, 46, 38, 28, + 23, 21, 16, 13, 10, 7, 7, 6, 2, 1, 2, 0, 2, 1, 1, 1, + 0, 1, 3, 4, 4, 6, 8, 10, 14, 18, 22, 29, 35, 41, 38, 37, + 53, 65, 46, 0, 13, 33, 44, 42, 51, 57, 51, 53, 47, 40, 19, 9, + 0, 40, 85, 76, 63, 70, 69, 62, 72, 80, 42, 0, 13, 29, 40, 52, + 45, 62, 68, 50, 43, 50, 40, 33, 20, 0, 0, 78, 62, 54, 37, 38, + 38, 30, 27, 27, 25, 25, 25, 28, 29, 30, 31, 31, 30, 31, 35, 38, + 41, 45, 43, 46, 52, 58, 56, 80, 24, 13, 28, 34, 48, 57, 53, 45, + 41, 29, 14, 29, 78, 52, 43, 40, 47, 47, 44, 39, 37, 36, 33, 31, + 32, 32, 30, 30, 29, 28, 28, 26, 26, 27, 27, 27, 27, 26, 26, 25, + 24, 24, 25, 27, 28, 28, 31, 33, 34, 35, 40, 44, 48, 48, 48, 47, + 45, 47, 58, 86, 0, 20, 29, 37, 43, 51, 61, 56, 50, 43, 35, 12, + 0, 100, 80, 63, 56, 59, 54, 70, 77, 97, 5, 9, 22, 38, 52, 57, + 41, 35, 21, 0, 29, 77, 68, 47, 47, 41, 51, 54, 51, 53, 56, 49, + 58, 68, 78, 0, 5, 25, 39, 47, 46, 43, 43, 41, 22, 17, 0, 9, + 84, 62, 66, 61, 68, 63, 58, 52, 54, 78, 0, 18, 24, 30, 36, 44, + 47, 40, 37, 22, 3, 23, 83, 66, 62, 60, 61, 61, 59, 63, 75, 49, + 0, 22, 34, 43, 54, 61, 49, 38, 32, 20, 0, 65, 84, 62, 59, 63, + 60, 67, 84, 9, 8, 35, 40, 45, 56, 61, 55, 46, 41, 33, 22, 0, + 47, 66, 53, 49, 38, 31, 25, 22, 18, 14, 10, 6, 7, 6, 2, 1, + 2, 0, 2, 0, 0, 0, 0, 1, 2, 5, 6, 8, 9, 12, 16, 20, + 26, 31, 36, 37, 40, 44, 74, 44, 0, 22, 42, 51, 47, 48, 54, 50, + 38, 42, 37, 25, 6, 3, 81, 76, 55, 48, 56, 48, 46, 51, 58, 66, + 74, 83, 14, 19, 22, 34, 42, 63, 56, 65, 55, 55, 50, 46, 35, 20, + 0, 33, 79, 55, 49, 40, 36, 31, 32, 29, 32, 31, 29, 30, 31, 32, + 35, 33, 30, 25, 35, 49, 52, 50, 49, 52, 54, 56, 56, 80, 20, 6, + 26, 37, 51, 60, 54, 45, 41, 30, 15, 30, 81, 55, 46, 45, 50, 49, + 44, 41, 40, 39, 36, 35, 36, 36, 35, 34, 33, 32, 31, 30, 31, 30, + 31, 31, 31, 31, 30, 30, 28, 28, 30, 30, 32, 34, 35, 37, 37, 38, + 43, 45, 49, 49, 51, 50, 49, 52, 60, 87, 0, 23, 30, 37, 41, 49, + 60, 55, 47, 39, 31, 11, 0, 102, 80, 63, 56, 54, 58, 69, 88, 31, + 1, 22, 36, 48, 49, 33, 33, 15, 0, 24, 79, 68, 47, 48, 46, 38, + 52, 51, 50, 50, 55, 54, 54, 57, 77, 36, 0, 23, 37, 36, 33, 33, + 35, 31, 24, 0, 0, 77, 75, 61, 53, 64, 67, 63, 59, 53, 55, 79, + 0, 17, 23, 30, 36, 44, 47, 40, 37, 22, 1, 22, 82, 64, 62, 60, + 61, 61, 56, 61, 73, 49, 0, 26, 34, 42, 53, 59, 49, 39, 33, 20, + 0, 61, 78, 56, 58, 63, 61, 73, 87, 12, 8, 36, 41, 46, 58, 65, + 59, 50, 40, 32, 17, 0, 40, 64, 50, 48, 38, 31, 25, 22, 19, 15, + 8, 6, 7, 6, 2, 1, 2, 0, 0, 0, 0, 0, 1, 1, 3, 4, + 6, 9, 12, 14, 18, 20, 26, 30, 28, 41, 48, 64, 72, 9, 5, 29, + 42, 51, 56, 60, 50, 38, 33, 31, 26, 9, 11, 90, 75, 59, 56, 55, + 45, 43, 47, 49, 52, 59, 65, 72, 71, 0, 19, 30, 50, 54, 55, 62, + 71, 64, 61, 50, 42, 26, 28, 0, 61, 76, 60, 45, 36, 34, 37, 36, + 40, 39, 37, 34, 34, 35, 39, 38, 34, 31, 41, 51, 53, 53, 49, 49, + 51, 51, 49, 79, 22, 5, 22, 36, 52, 61, 54, 44, 40, 28, 14, 30, + 83, 58, 50, 50, 54, 53, 46, 42, 41, 41, 40, 39, 39, 40, 39, 38, + 38, 37, 36, 35, 34, 35, 35, 35, 36, 36, 34, 34, 33, 32, 34, 35, + 38, 38, 39, 42, 42, 42, 45, 47, 52, 52, 52, 53, 54, 57, 64, 91, + 0, 27, 31, 39, 41, 49, 62, 56, 45, 35, 27, 7, 0, 101, 80, 64, + 55, 48, 59, 68, 60, 6, 10, 37, 43, 50, 40, 34, 22, 24, 0, 75, + 76, 54, 48, 48, 42, 44, 50, 41, 43, 43, 52, 56, 52, 58, 70, 83, + 10, 0, 12, 29, 15, 11, 25, 25, 7, 0, 4, 86, 63, 63, 58, 58, + 60, 58, 61, 60, 68, 93, 0, 25, 31, 37, 43, 51, 54, 45, 41, 25, + 2, 21, 82, 63, 61, 60, 61, 61, 54, 58, 70, 49, 0, 27, 31, 39, + 49, 57, 47, 39, 33, 17, 0, 57, 75, 56, 60, 61, 61, 72, 80, 5, + 8, 35, 39, 45, 58, 67, 62, 52, 42, 28, 27, 0, 44, 57, 59, 40, + 38, 28, 23, 21, 20, 15, 9, 6, 7, 5, 2, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 4, 5, 8, 11, 13, 16, 19, 22, 29, 33, 28, 44, + 60, 85, 16, 0, 26, 35, 48, 59, 63, 62, 46, 39, 41, 24, 7, 10, + 76, 82, 63, 63, 49, 41, 49, 41, 44, 50, 51, 52, 55, 59, 67, 75, + 0, 18, 39, 43, 47, 56, 64, 72, 72, 52, 48, 43, 27, 15, 10, 88, + 64, 51, 39, 38, 41, 43, 48, 46, 41, 38, 36, 37, 43, 43, 39, 46, + 55, 58, 63, 66, 60, 55, 63, 60, 50, 76, 24, 9, 24, 37, 52, 60, + 52, 42, 36, 25, 14, 29, 83, 59, 52, 51, 56, 54, 47, 43, 43, 44, + 44, 43, 43, 43, 43, 42, 41, 41, 40, 39, 39, 38, 39, 39, 40, 40, + 38, 38, 37, 38, 38, 39, 42, 42, 43, 45, 46, 46, 47, 49, 52, 52, + 54, 54, 53, 57, 64, 91, 0, 27, 31, 37, 43, 51, 63, 56, 46, 35, + 27, 7, 0, 101, 80, 63, 57, 60, 61, 77, 0, 10, 32, 39, 45, 51, + 38, 30, 22, 0, 81, 70, 52, 46, 48, 40, 43, 50, 44, 42, 40, 42, + 49, 54, 50, 58, 58, 82, 80, 24, 0, 0, 6, 2, 0, 0, 0, 26, + 94, 88, 70, 48, 56, 48, 54, 56, 62, 63, 69, 92, 0, 26, 35, 43, + 47, 55, 57, 48, 42, 26, 3, 21, 82, 63, 61, 60, 60, 61, 56, 61, + 72, 50, 2, 29, 33, 38, 47, 55, 47, 39, 33, 19, 0, 58, 78, 61, + 64, 61, 62, 71, 76, 15, 5, 32, 34, 41, 56, 64, 61, 52, 44, 32, + 23, 0, 39, 54, 57, 39, 36, 28, 21, 21, 20, 17, 10, 6, 7, 5, + 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 5, 7, 10, 12, 16, 19, + 21, 26, 33, 39, 40, 48, 70, 59, 0, 6, 24, 47, 57, 66, 61, 56, + 48, 44, 43, 14, 0, 57, 80, 64, 48, 41, 45, 52, 46, 45, 46, 44, + 40, 43, 49, 48, 57, 71, 71, 0, 16, 37, 42, 49, 52, 58, 72, 63, + 60, 38, 38, 12, 0, 57, 73, 58, 45, 42, 49, 52, 57, 55, 47, 42, + 39, 40, 46, 51, 56, 62, 68, 76, 83, 78, 68, 70, 60, 69, 59, 78, + 25, 14, 29, 42, 49, 55, 47, 36, 31, 21, 9, 27, 81, 59, 54, 53, + 59, 57, 49, 46, 48, 47, 47, 47, 48, 49, 48, 46, 45, 45, 44, 44, + 45, 44, 44, 45, 46, 46, 44, 44, 43, 43, 45, 46, 49, 48, 49, 51, + 50, 51, 51, 53, 54, 53, 53, 55, 53, 55, 60, 88, 0, 27, 31, 37, + 43, 52, 67, 58, 46, 36, 32, 12, 0, 101, 80, 64, 56, 73, 92, 1, + 4, 29, 30, 44, 52, 30, 36, 16, 0, 53, 76, 62, 46, 40, 38, 37, + 43, 48, 42, 45, 38, 40, 47, 51, 50, 51, 53, 58, 67, 82, 58, 18, + 6, 9, 14, 20, 67, 83, 85, 71, 71, 64, 52, 59, 56, 59, 69, 66, + 60, 80, 0, 23, 35, 44, 48, 56, 57, 48, 42, 26, 3, 22, 82, 63, + 61, 60, 62, 63, 63, 68, 77, 55, 6, 33, 34, 41, 49, 57, 47, 41, + 36, 23, 0, 64, 73, 56, 62, 62, 67, 71, 85, 45, 1, 27, 28, 35, + 49, 59, 56, 49, 44, 35, 17, 0, 41, 53, 49, 39, 33, 24, 19, 18, + 20, 17, 12, 7, 7, 5, 2, 0, 1, 0, 0, 0, 0, 0, 0, 2, + 4, 6, 11, 13, 15, 18, 23, 27, 33, 40, 44, 60, 78, 8, 3, 25, + 32, 49, 52, 65, 56, 53, 49, 34, 24, 0, 0, 75, 61, 57, 43, 40, + 47, 41, 51, 46, 43, 41, 37, 38, 48, 50, 49, 59, 80, 30, 1, 25, + 34, 46, 53, 51, 67, 59, 58, 53, 29, 14, 0, 18, 83, 60, 53, 49, + 54, 56, 60, 57, 51, 49, 49, 53, 63, 74, 69, 47, 21, 16, 16, 6, + 10, 41, 52, 83, 85, 96, 32, 15, 28, 38, 46, 53, 47, 38, 30, 20, + 8, 25, 81, 61, 56, 57, 62, 62, 55, 58, 70, 74, 72, 72, 75, 75, + 74, 73, 72, 71, 71, 70, 69, 64, 56, 51, 50, 50, 47, 47, 47, 47, + 52, 56, 65, 69, 76, 79, 78, 77, 78, 77, 71, 65, 63, 60, 58, 58, + 62, 88, 0, 25, 30, 36, 43, 54, 67, 59, 46, 38, 36, 15, 0, 99, + 78, 65, 72, 84, 32, 0, 23, 34, 42, 53, 36, 33, 26, 0, 61, 79, + 58, 49, 46, 37, 37, 39, 38, 39, 42, 38, 36, 35, 42, 54, 52, 46, + 67, 62, 78, 85, 97, 102, 106, 110, 113, 104, 95, 93, 73, 56, 70, 60, + 54, 52, 56, 59, 68, 65, 55, 77, 0, 23, 34, 43, 48, 55, 57, 47, + 42, 26, 4, 23, 82, 63, 63, 62, 63, 64, 65, 70, 79, 55, 5, 32, + 35, 41, 50, 58, 49, 42, 37, 24, 0, 64, 80, 60, 64, 63, 65, 63, + 77, 52, 0, 24, 27, 34, 47, 57, 54, 48, 43, 33, 28, 0, 67, 48, + 49, 37, 35, 27, 18, 18, 19, 17, 12, 7, 8, 5, 2, 0, 1, 0, + 0, 0, 0, 0, 0, 2, 5, 8, 9, 13, 16, 19, 24, 29, 35, 40, + 43, 61, 68, 0, 13, 32, 44, 53, 60, 61, 54, 49, 48, 35, 18, 0, + 59, 52, 56, 49, 42, 43, 42, 41, 41, 41, 39, 38, 37, 40, 47, 49, + 47, 46, 65, 73, 0, 12, 25, 36, 47, 55, 63, 64, 59, 49, 36, 28, + 18, 0, 65, 56, 63, 59, 57, 58, 61, 60, 55, 53, 68, 71, 68, 10, + 0, 2, 1, 0, 5, 6, 0, 0, 0, 0, 17, 94, 50, 10, 27, 39, + 47, 55, 53, 45, 36, 22, 8, 22, 80, 57, 55, 60, 59, 67, 39, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 77, 59, + 57, 48, 53, 44, 52, 52, 59, 30, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 21, 73, 72, 58, 67, 56, 92, 0, 25, 29, 36, 42, 54, 65, 56, + 45, 42, 40, 13, 0, 101, 68, 68, 81, 54, 0, 12, 41, 43, 54, 51, + 35, 20, 9, 30, 78, 54, 41, 47, 46, 43, 32, 30, 34, 35, 35, 35, + 36, 43, 42, 50, 55, 46, 0, 1, 21, 32, 36, 36, 30, 32, 36, 38, + 36, 14, 0, 46, 76, 61, 62, 56, 59, 57, 62, 59, 58, 81, 0, 23, + 32, 41, 47, 55, 55, 45, 41, 26, 7, 25, 79, 62, 63, 64, 61, 61, + 61, 66, 76, 52, 0, 25, 33, 42, 51, 61, 50, 42, 36, 21, 0, 61, + 81, 60, 65, 66, 65, 63, 78, 41, 0, 27, 35, 42, 50, 56, 55, 48, + 43, 30, 26, 0, 69, 47, 43, 41, 40, 32, 21, 16, 16, 13, 12, 7, + 6, 4, 2, 0, 1, 0, 0, 0, 0, 0, 0, 2, 5, 8, 9, 14, + 17, 20, 24, 29, 36, 41, 41, 69, 22, 8, 23, 40, 54, 56, 60, 54, + 46, 40, 41, 28, 8, 5, 68, 53, 52, 44, 40, 40, 38, 34, 35, 33, + 33, 35, 36, 39, 45, 46, 44, 46, 56, 74, 32, 6, 17, 32, 45, 54, + 60, 63, 60, 50, 41, 35, 21, 6, 46, 70, 63, 54, 51, 62, 55, 58, + 63, 70, 55, 2, 1, 6, 23, 21, 22, 26, 30, 30, 30, 31, 37, 18, + 17, 0, 6, 30, 45, 39, 54, 59, 57, 50, 39, 24, 7, 23, 79, 59, + 53, 60, 60, 67, 73, 64, 8, 14, 6, 14, 22, 20, 27, 26, 22, 22, + 22, 14, 20, 0, 64, 71, 63, 55, 51, 49, 54, 57, 65, 70, 42, 0, + 20, 29, 27, 20, 27, 11, 0, 73, 79, 72, 66, 62, 60, 88, 0, 25, + 28, 35, 43, 55, 65, 56, 49, 36, 35, 15, 0, 85, 83, 71, 84, 0, + 6, 36, 33, 54, 52, 34, 27, 0, 17, 89, 60, 38, 50, 43, 45, 42, + 33, 31, 32, 33, 34, 33, 30, 36, 47, 49, 51, 66, 38, 0, 0, 13, + 17, 13, 3, 3, 10, 13, 19, 8, 0, 53, 77, 58, 63, 61, 59, 57, + 59, 58, 60, 84, 0, 24, 31, 40, 46, 54, 55, 45, 39, 26, 9, 26, + 79, 62, 65, 64, 61, 59, 59, 65, 75, 49, 0, 24, 31, 42, 53, 61, + 51, 42, 36, 20, 0, 60, 80, 60, 63, 64, 66, 64, 75, 42, 0, 27, + 37, 44, 50, 56, 54, 47, 43, 32, 26, 0, 69, 44, 42, 41, 42, 35, + 22, 16, 15, 13, 10, 7, 6, 4, 2, 0, 1, 0, 0, 0, 0, 0, + 1, 1, 7, 9, 11, 17, 20, 21, 26, 31, 37, 45, 50, 70, 0, 12, + 32, 44, 51, 60, 64, 53, 47, 37, 35, 24, 0, 41, 73, 53, 46, 40, + 37, 37, 34, 31, 31, 29, 28, 29, 30, 35, 40, 41, 39, 45, 51, 76, + 77, 0, 10, 29, 41, 51, 58, 62, 61, 53, 44, 41, 36, 13, 4, 80, + 62, 57, 52, 48, 52, 66, 80, 50, 0, 4, 6, 32, 31, 38, 43, 41, + 38, 45, 43, 31, 37, 33, 22, 17, 27, 35, 48, 65, 61, 59, 56, 50, + 40, 23, 7, 24, 75, 62, 54, 61, 67, 62, 66, 80, 84, 0, 11, 27, + 21, 33, 29, 39, 28, 33, 27, 27, 24, 0, 29, 94, 71, 58, 51, 50, + 53, 58, 56, 74, 90, 0, 16, 31, 35, 24, 28, 0, 0, 93, 73, 68, + 62, 60, 62, 86, 0, 25, 27, 35, 43, 56, 65, 56, 41, 38, 34, 13, + 0, 113, 86, 93, 12, 0, 21, 33, 43, 38, 28, 26, 0, 0, 90, 65, + 58, 51, 45, 45, 38, 38, 37, 35, 33, 31, 32, 30, 28, 28, 42, 46, + 48, 62, 75, 0, 5, 21, 28, 24, 17, 17, 24, 27, 24, 14, 0, 59, + 79, 56, 62, 62, 59, 57, 59, 58, 59, 84, 0, 24, 31, 40, 46, 54, + 55, 45, 39, 26, 9, 26, 79, 62, 65, 64, 61, 59, 59, 65, 75, 49, + 0, 24, 31, 42, 53, 61, 51, 42, 36, 20, 0, 60, 79, 60, 62, 63, + 66, 65, 70, 39, 0, 27, 38, 45, 51, 56, 55, 48, 43, 35, 27, 0, + 70, 45, 43, 40, 42, 34, 22, 16, 15, 13, 10, 7, 6, 4, 1, 0, + 1, 0, 0, 0, 0, 0, 2, 2, 8, 10, 13, 17, 20, 22, 29, 33, + 40, 47, 59, 51, 0, 15, 36, 43, 47, 62, 66, 52, 48, 39, 33, 21, + 0, 72, 65, 47, 42, 40, 38, 35, 32, 31, 27, 27, 24, 25, 27, 31, + 37, 39, 38, 42, 46, 68, 92, 1, 5, 28, 40, 49, 56, 62, 62, 55, + 45, 42, 41, 13, 0, 101, 65, 54, 57, 50, 59, 63, 10, 0, 9, 20, + 34, 38, 54, 47, 41, 43, 50, 48, 43, 40, 42, 47, 20, 22, 37, 51, + 60, 63, 64, 58, 54, 49, 39, 22, 7, 26, 78, 64, 56, 55, 63, 63, + 66, 72, 96, 55, 0, 13, 29, 39, 52, 39, 35, 35, 36, 41, 22, 12, + 0, 92, 75, 59, 58, 56, 56, 60, 53, 64, 85, 12, 1, 29, 42, 34, + 27, 0, 49, 81, 68, 66, 56, 60, 62, 84, 0, 23, 26, 35, 46, 56, + 64, 55, 46, 35, 32, 12, 0, 106, 109, 34, 0, 33, 27, 35, 46, 30, + 27, 3, 0, 83, 67, 53, 45, 52, 50, 41, 38, 36, 38, 38, 32, 29, + 30, 29, 26, 28, 36, 40, 48, 50, 83, 44, 0, 21, 32, 32, 27, 29, + 35, 36, 33, 18, 0, 54, 78, 59, 64, 62, 59, 56, 59, 57, 59, 84, + 0, 24, 31, 40, 46, 54, 55, 45, 39, 26, 9, 26, 79, 62, 65, 64, + 61, 59, 59, 65, 75, 49, 0, 24, 31, 42, 53, 61, 51, 42, 36, 20, + 0, 60, 78, 62, 64, 64, 66, 64, 65, 44, 0, 27, 38, 45, 51, 57, + 55, 48, 42, 36, 23, 0, 71, 43, 42, 39, 41, 34, 21, 16, 15, 12, + 11, 6, 5, 4, 1, 0, 1, 0, 0, 0, 0, 1, 2, 3, 7, 9, + 13, 18, 21, 23, 30, 33, 41, 49, 62, 27, 1, 20, 31, 44, 51, 64, + 63, 51, 46, 37, 29, 14, 0, 88, 64, 48, 43, 40, 38, 32, 28, 28, + 25, 24, 22, 22, 24, 27, 34, 36, 41, 42, 49, 60, 80, 20, 5, 30, + 40, 47, 53, 59, 62, 57, 47, 41, 35, 13, 0, 93, 71, 53, 53, 60, + 71, 48, 0, 10, 31, 46, 45, 54, 48, 61, 56, 46, 48, 41, 31, 30, + 32, 24, 30, 29, 47, 54, 64, 81, 66, 59, 52, 48, 40, 23, 9, 27, + 78, 60, 60, 58, 57, 60, 67, 68, 63, 104, 8, 9, 26, 36, 60, 45, + 45, 35, 52, 41, 31, 18, 0, 52, 78, 56, 64, 61, 57, 55, 56, 66, + 95, 15, 5, 33, 40, 22, 0, 0, 92, 71, 66, 61, 55, 55, 58, 83, + 0, 23, 26, 37, 46, 55, 63, 56, 47, 33, 25, 8, 0, 122, 75, 0, + 26, 41, 35, 43, 42, 35, 25, 12, 82, 72, 58, 40, 54, 49, 45, 46, + 41, 40, 39, 36, 31, 29, 30, 29, 23, 29, 34, 36, 43, 55, 74, 48, + 0, 22, 35, 39, 39, 42, 47, 44, 31, 14, 0, 56, 80, 59, 62, 57, + 59, 56, 60, 57, 59, 84, 0, 24, 31, 40, 46, 54, 55, 45, 39, 26, + 9, 26, 79, 62, 65, 64, 61, 59, 59, 65, 75, 49, 0, 24, 31, 42, + 53, 61, 51, 42, 36, 20, 0, 60, 78, 64, 64, 64, 62, 63, 66, 62, + 0, 25, 37, 42, 50, 56, 54, 47, 40, 34, 19, 0, 69, 42, 42, 40, + 39, 33, 20, 17, 14, 12, 10, 6, 5, 4, 1, 0, 0, 0, 0, 0, + 1, 1, 3, 4, 8, 10, 14, 18, 22, 25, 30, 34, 41, 53, 70, 19, + 0, 29, 28, 45, 57, 60, 62, 52, 41, 33, 26, 9, 6, 93, 62, 48, + 43, 37, 36, 30, 29, 29, 24, 22, 20, 20, 22, 25, 32, 35, 39, 42, + 51, 56, 64, 47, 2, 28, 37, 44, 50, 57, 62, 57, 50, 42, 31, 17, + 0, 61, 76, 57, 59, 81, 68, 0, 4, 30, 50, 50, 52, 61, 63, 62, + 46, 35, 39, 31, 9, 0, 0, 3, 7, 20, 32, 46, 59, 62, 65, 61, + 54, 49, 40, 24, 10, 26, 78, 54, 60, 65, 58, 54, 55, 52, 61, 70, + 69, 0, 16, 38, 40, 56, 51, 49, 56, 46, 36, 18, 10, 8, 89, 67, + 61, 61, 63, 55, 58, 66, 88, 0, 9, 36, 42, 19, 0, 25, 88, 74, + 60, 54, 61, 51, 58, 85, 0, 23, 29, 39, 47, 54, 64, 58, 45, 43, + 30, 8, 0, 117, 10, 22, 28, 49, 46, 46, 41, 29, 14, 20, 107, 65, + 54, 50, 45, 50, 47, 49, 42, 41, 37, 33, 28, 25, 28, 26, 26, 21, + 36, 41, 39, 53, 71, 48, 0, 24, 36, 43, 46, 51, 54, 48, 35, 20, + 0, 60, 79, 59, 61, 59, 58, 56, 59, 57, 60, 84, 0, 24, 31, 40, + 46, 54, 55, 45, 39, 26, 9, 26, 79, 62, 65, 64, 61, 59, 59, 65, + 75, 49, 0, 24, 31, 42, 53, 61, 51, 42, 36, 20, 0, 60, 79, 64, + 64, 62, 61, 64, 71, 87, 0, 22, 32, 40, 48, 54, 52, 45, 39, 33, + 15, 9, 68, 42, 41, 40, 38, 30, 20, 16, 15, 13, 10, 5, 5, 4, + 1, 0, 0, 0, 0, 0, 0, 1, 3, 4, 8, 10, 14, 18, 22, 24, + 30, 35, 41, 54, 76, 11, 3, 30, 32, 47, 55, 61, 62, 56, 42, 33, + 25, 6, 17, 86, 58, 47, 40, 36, 35, 34, 32, 29, 26, 24, 21, 20, + 21, 25, 32, 34, 36, 44, 46, 51, 55, 62, 0, 26, 37, 42, 47, 55, + 61, 58, 51, 41, 27, 18, 0, 58, 78, 59, 77, 90, 0, 15, 29, 42, + 47, 59, 65, 66, 71, 51, 39, 32, 12, 5, 20, 47, 53, 28, 0, 7, + 27, 41, 50, 57, 60, 59, 55, 49, 40, 25, 11, 26, 85, 55, 53, 56, + 56, 57, 56, 57, 51, 70, 88, 0, 13, 38, 33, 47, 53, 60, 58, 58, + 33, 27, 21, 0, 61, 80, 68, 65, 69, 67, 64, 73, 67, 0, 26, 41, + 35, 12, 0, 70, 73, 66, 54, 51, 60, 54, 57, 87, 0, 23, 29, 39, + 46, 54, 65, 64, 66, 53, 42, 23, 0, 29, 21, 31, 45, 51, 54, 55, + 42, 31, 24, 0, 35, 77, 67, 54, 42, 47, 50, 47, 44, 40, 31, 25, + 23, 22, 24, 25, 29, 21, 34, 42, 40, 45, 69, 54, 0, 22, 34, 41, + 47, 54, 56, 46, 31, 15, 0, 55, 76, 58, 64, 66, 58, 56, 59, 57, + 60, 84, 0, 24, 31, 40, 46, 54, 55, 45, 39, 26, 9, 26, 79, 62, + 65, 64, 61, 59, 59, 65, 75, 49, 0, 24, 31, 42, 53, 61, 51, 42, + 36, 20, 0, 60, 79, 62, 62, 64, 63, 61, 68, 96, 0, 19, 31, 39, + 47, 53, 52, 45, 38, 31, 13, 20, 68, 44, 41, 38, 36, 29, 20, 17, + 15, 13, 9, 5, 5, 3, 1, 0, 0, 0, 0, 0, 0, 1, 3, 4, + 8, 10, 15, 19, 23, 25, 31, 34, 41, 55, 74, 0, 11, 24, 36, 48, + 46, 66, 62, 58, 42, 34, 26, 3, 22, 73, 56, 46, 41, 37, 36, 35, + 30, 26, 26, 23, 19, 19, 20, 23, 31, 34, 38, 49, 41, 49, 53, 69, + 0, 27, 38, 40, 47, 53, 60, 57, 50, 41, 32, 6, 0, 68, 84, 69, + 83, 45, 5, 31, 39, 40, 51, 60, 64, 68, 58, 40, 28, 8, 9, 62, + 93, 73, 73, 89, 94, 5, 14, 40, 41, 47, 53, 56, 54, 47, 39, 26, + 12, 26, 76, 62, 60, 53, 54, 55, 49, 52, 53, 50, 67, 57, 0, 29, + 33, 42, 52, 54, 68, 56, 38, 36, 28, 3, 0, 81, 76, 66, 62, 68, + 67, 86, 25, 13, 31, 40, 27, 11, 0, 97, 76, 57, 57, 59, 55, 62, + 54, 87, 0, 25, 31, 40, 46, 54, 67, 68, 73, 61, 48, 37, 15, 6, + 34, 47, 55, 51, 61, 53, 52, 45, 33, 13, 0, 77, 74, 57, 55, 43, + 50, 48, 41, 37, 27, 21, 21, 21, 23, 25, 27, 35, 33, 34, 47, 47, + 67, 46, 1, 23, 34, 41, 50, 58, 56, 48, 34, 18, 0, 57, 80, 60, + 63, 58, 58, 56, 59, 57, 60, 84, 0, 24, 31, 40, 46, 54, 55, 45, + 39, 26, 9, 26, 79, 62, 65, 64, 61, 59, 59, 65, 75, 49, 0, 24, + 31, 42, 53, 61, 51, 42, 36, 20, 0, 60, 78, 61, 61, 64, 64, 60, + 60, 91, 0, 20, 32, 39, 48, 54, 53, 47, 36, 29, 12, 29, 69, 45, + 40, 37, 34, 28, 21, 17, 16, 13, 9, 5, 5, 3, 1, 0, 0, 0, + 0, 0, 0, 1, 3, 4, 8, 10, 16, 20, 23, 26, 29, 35, 42, 57, + 76, 6, 11, 30, 33, 44, 60, 60, 61, 55, 49, 29, 26, 6, 10, 80, + 59, 46, 43, 39, 35, 31, 30, 25, 26, 24, 20, 19, 19, 21, 30, 33, + 35, 49, 44, 46, 42, 68, 0, 24, 35, 39, 44, 51, 63, 60, 52, 46, + 36, 23, 2, 25, 85, 78, 91, 3, 17, 38, 38, 42, 48, 58, 61, 57, + 50, 28, 22, 0, 46, 89, 76, 65, 66, 71, 82, 44, 3, 30, 38, 40, + 46, 54, 55, 48, 37, 24, 10, 25, 80, 57, 55, 53, 52, 51, 49, 49, + 51, 52, 60, 79, 0, 13, 31, 33, 45, 58, 64, 57, 45, 38, 32, 13, + 0, 86, 74, 68, 63, 71, 73, 92, 0, 27, 32, 38, 26, 1, 43, 83, + 68, 60, 59, 60, 62, 62, 60, 85, 0, 23, 32, 40, 47, 53, 60, 71, + 82, 64, 62, 53, 32, 25, 37, 47, 61, 70, 67, 58, 52, 49, 43, 27, + 5, 10, 81, 66, 56, 46, 53, 47, 38, 32, 24, 20, 21, 22, 24, 26, + 29, 33, 38, 39, 41, 51, 63, 46, 0, 25, 33, 41, 48, 55, 54, 45, + 35, 15, 0, 58, 77, 61, 64, 61, 58, 57, 60, 57, 60, 84, 0, 23, + 31, 40, 46, 54, 55, 45, 39, 26, 9, 26, 79, 62, 65, 64, 61, 59, + 59, 65, 75, 49, 0, 24, 31, 42, 53, 61, 51, 42, 36, 20, 0, 60, + 79, 61, 64, 62, 61, 61, 64, 89, 0, 21, 32, 38, 48, 55, 51, 48, + 38, 26, 7, 28, 63, 46, 41, 38, 34, 27, 20, 19, 15, 12, 9, 5, + 5, 3, 0, 0, 0, 0, 0, 0, 1, 1, 3, 4, 8, 10, 16, 19, + 23, 25, 29, 34, 40, 56, 79, 14, 13, 25, 40, 45, 51, 63, 67, 53, + 42, 35, 26, 1, 15, 78, 58, 45, 41, 37, 34, 31, 31, 25, 25, 23, + 20, 19, 18, 21, 29, 33, 38, 43, 47, 44, 43, 66, 0, 27, 35, 39, + 45, 52, 62, 60, 51, 46, 36, 22, 11, 14, 84, 75, 76, 0, 21, 38, + 39, 42, 49, 53, 57, 50, 34, 26, 10, 3, 88, 72, 60, 58, 61, 62, + 73, 72, 2, 31, 29, 35, 45, 54, 55, 48, 37, 23, 10, 25, 79, 56, + 55, 53, 52, 51, 49, 49, 52, 57, 50, 68, 40, 0, 21, 41, 44, 53, + 60, 58, 50, 42, 34, 20, 0, 31, 89, 68, 65, 73, 72, 59, 0, 31, + 32, 25, 21, 0, 78, 80, 65, 60, 61, 63, 65, 64, 62, 86, 0, 23, + 31, 40, 47, 54, 61, 70, 80, 83, 60, 55, 55, 35, 48, 52, 65, 75, + 73, 65, 58, 54, 49, 40, 25, 0, 38, 80, 53, 54, 48, 46, 36, 30, + 22, 22, 24, 25, 27, 29, 32, 35, 38, 38, 41, 50, 61, 43, 1, 25, + 33, 41, 48, 55, 52, 44, 35, 17, 0, 58, 77, 62, 64, 61, 58, 57, + 60, 57, 60, 84, 0, 23, 31, 40, 46, 54, 55, 45, 39, 26, 9, 26, + 79, 62, 65, 64, 61, 59, 59, 65, 75, 49, 0, 24, 31, 42, 53, 61, + 51, 42, 36, 20, 0, 61, 79, 62, 64, 62, 61, 61, 64, 89, 0, 15, + 32, 39, 45, 54, 53, 47, 36, 29, 8, 23, 71, 49, 40, 35, 31, 25, + 21, 18, 15, 12, 9, 5, 5, 3, 0, 0, 0, 0, 1, 0, 1, 1, + 3, 5, 9, 11, 16, 19, 23, 25, 29, 34, 41, 56, 80, 0, 9, 29, + 34, 42, 57, 61, 65, 52, 39, 38, 25, 1, 21, 77, 58, 44, 40, 36, + 34, 31, 29, 25, 25, 21, 17, 19, 18, 20, 27, 32, 38, 38, 45, 43, + 46, 67, 0, 28, 35, 40, 45, 52, 62, 59, 50, 45, 34, 26, 0, 38, + 89, 78, 55, 0, 20, 32, 43, 48, 51, 52, 49, 40, 33, 14, 0, 52, + 91, 69, 64, 62, 63, 62, 74, 95, 0, 19, 21, 33, 44, 55, 56, 48, + 36, 23, 11, 25, 76, 56, 55, 52, 51, 49, 48, 48, 53, 59, 49, 59, + 76, 0, 11, 37, 41, 48, 57, 60, 57, 47, 37, 28, 13, 0, 94, 66, + 58, 76, 81, 12, 1, 28, 30, 20, 8, 7, 94, 66, 62, 61, 62, 65, + 66, 66, 61, 86, 0, 22, 31, 39, 47, 55, 62, 67, 70, 76, 61, 54, + 51, 40, 41, 51, 61, 69, 75, 73, 66, 57, 50, 45, 33, 19, 0, 74, + 70, 50, 54, 41, 40, 34, 26, 23, 28, 30, 33, 34, 37, 37, 38, 39, + 41, 50, 61, 43, 1, 26, 33, 39, 48, 55, 51, 42, 34, 17, 0, 60, + 79, 62, 64, 61, 60, 58, 60, 57, 60, 84, 0, 23, 31, 40, 46, 54, + 55, 45, 39, 26, 9, 26, 79, 62, 65, 64, 61, 59, 59, 65, 75, 49, + 0, 24, 31, 42, 53, 61, 51, 42, 36, 20, 0, 61, 79, 62, 64, 62, + 59, 59, 62, 87, 0, 13, 31, 39, 45, 55, 55, 44, 35, 31, 1, 13, + 68, 46, 40, 37, 30, 24, 21, 19, 16, 12, 8, 4, 5, 3, 0, 0, + 0, 0, 1, 0, 1, 1, 3, 4, 9, 11, 16, 19, 23, 25, 30, 34, + 41, 55, 77, 0, 7, 30, 31, 42, 62, 61, 59, 54, 45, 36, 24, 8, + 19, 82, 60, 44, 41, 37, 34, 31, 29, 25, 23, 20, 18, 18, 18, 21, + 27, 32, 39, 40, 45, 44, 47, 74, 0, 24, 34, 40, 46, 55, 62, 58, + 49, 44, 38, 22, 0, 64, 89, 91, 24, 16, 20, 31, 46, 55, 55, 52, + 43, 33, 28, 4, 0, 103, 74, 65, 66, 58, 64, 63, 69, 90, 0, 11, + 24, 37, 44, 55, 56, 48, 36, 22, 9, 25, 75, 54, 54, 52, 51, 49, + 47, 48, 56, 53, 52, 54, 74, 4, 4, 26, 37, 42, 53, 61, 63, 52, + 40, 35, 27, 1, 26, 79, 67, 67, 101, 0, 7, 23, 24, 17, 0, 64, + 79, 56, 60, 61, 64, 65, 67, 66, 62, 85, 0, 22, 31, 40, 50, 57, + 61, 65, 64, 58, 57, 42, 32, 25, 31, 41, 51, 57, 69, 74, 72, 63, + 52, 47, 45, 26, 5, 10, 80, 61, 44, 48, 46, 40, 30, 26, 29, 31, + 35, 37, 38, 39, 38, 38, 42, 51, 60, 43, 3, 27, 33, 39, 48, 55, + 51, 41, 34, 17, 0, 60, 79, 62, 64, 61, 60, 58, 60, 57, 60, 84, + 0, 23, 31, 40, 46, 54, 55, 45, 39, 26, 9, 26, 79, 62, 65, 64, + 61, 59, 59, 65, 75, 49, 0, 24, 31, 42, 53, 61, 51, 42, 36, 20, + 0, 61, 79, 62, 64, 62, 59, 59, 62, 87, 23, 18, 29, 37, 45, 54, + 54, 40, 34, 24, 0, 21, 64, 45, 43, 38, 29, 23, 21, 20, 16, 12, + 8, 4, 5, 3, 0, 0, 0, 0, 1, 0, 1, 1, 3, 4, 8, 11, + 16, 20, 23, 24, 30, 35, 41, 53, 71, 8, 6, 25, 39, 45, 51, 67, + 60, 55, 46, 32, 28, 11, 6, 90, 62, 45, 42, 38, 33, 31, 29, 25, + 21, 20, 18, 18, 19, 20, 27, 32, 39, 43, 42, 47, 49, 80, 0, 22, + 32, 40, 47, 55, 62, 57, 48, 43, 35, 4, 0, 57, 75, 94, 0, 11, + 22, 34, 51, 62, 60, 51, 37, 30, 30, 12, 0, 95, 71, 55, 62, 67, + 62, 62, 65, 82, 1, 9, 32, 44, 49, 55, 56, 48, 36, 22, 9, 25, + 74, 55, 54, 52, 50, 48, 47, 47, 52, 47, 53, 52, 59, 55, 0, 20, + 31, 39, 49, 60, 65, 58, 44, 39, 36, 8, 0, 89, 73, 75, 56, 0, + 14, 24, 20, 2, 0, 97, 65, 58, 58, 59, 61, 65, 67, 65, 61, 83, + 0, 23, 32, 40, 51, 59, 61, 62, 64, 55, 41, 24, 15, 34, 24, 34, + 40, 46, 61, 73, 77, 70, 56, 48, 42, 39, 26, 0, 32, 73, 53, 50, + 51, 47, 36, 30, 30, 30, 35, 37, 40, 38, 36, 36, 43, 50, 60, 44, + 3, 29, 34, 41, 50, 55, 51, 41, 35, 17, 0, 60, 79, 62, 64, 63, + 60, 58, 60, 57, 60, 84, 0, 23, 31, 40, 46, 54, 55, 45, 39, 26, + 9, 26, 79, 62, 65, 64, 61, 59, 59, 65, 75, 49, 0, 24, 31, 42, + 53, 61, 51, 42, 36, 20, 0, 61, 79, 62, 62, 61, 59, 59, 61, 86, + 37, 16, 25, 36, 44, 48, 49, 41, 32, 19, 0, 48, 66, 48, 43, 35, + 29, 23, 21, 20, 16, 12, 8, 4, 5, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 3, 8, 10, 15, 18, 22, 25, 28, 33, 40, 51, 64, 20, + 1, 24, 37, 46, 54, 66, 66, 54, 44, 34, 33, 12, 0, 85, 64, 46, + 43, 40, 36, 33, 32, 26, 24, 22, 20, 21, 21, 23, 29, 35, 38, 46, + 43, 52, 54, 76, 0, 23, 32, 41, 48, 55, 61, 56, 46, 41, 39, 13, + 0, 82, 81, 95, 0, 18, 25, 37, 55, 64, 62, 53, 37, 31, 34, 10, + 20, 76, 62, 54, 59, 70, 66, 61, 62, 79, 26, 5, 29, 46, 49, 57, + 56, 48, 36, 22, 8, 24, 73, 54, 54, 51, 49, 48, 46, 45, 47, 46, + 46, 50, 54, 83, 4, 10, 26, 35, 45, 55, 63, 61, 49, 42, 28, 24, + 0, 73, 80, 83, 17, 7, 21, 34, 29, 0, 19, 85, 62, 55, 53, 55, + 58, 62, 64, 63, 57, 79, 0, 23, 32, 42, 53, 60, 60, 60, 55, 48, + 31, 21, 0, 97, 5, 23, 31, 39, 52, 63, 74, 72, 61, 52, 44, 38, + 39, 20, 0, 68, 69, 50, 53, 53, 45, 38, 31, 29, 35, 37, 39, 38, + 35, 36, 41, 51, 60, 42, 4, 29, 34, 41, 51, 56, 51, 41, 35, 17, + 0, 60, 79, 62, 65, 63, 60, 58, 60, 57, 60, 84, 0, 23, 31, 40, + 46, 54, 55, 45, 39, 26, 9, 26, 79, 62, 65, 64, 61, 59, 59, 65, + 75, 49, 0, 24, 31, 42, 53, 61, 51, 42, 36, 20, 0, 61, 79, 62, + 62, 61, 59, 58, 61, 86, 35, 12, 28, 36, 42, 40, 42, 45, 36, 18, + 0, 61, 65, 47, 44, 35, 28, 23, 21, 21, 17, 12, 8, 4, 5, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7, 9, 13, 17, 20, 23, + 27, 32, 39, 49, 61, 33, 0, 25, 29, 44, 56, 62, 68, 56, 44, 39, + 35, 15, 0, 57, 66, 49, 45, 42, 38, 37, 35, 30, 28, 26, 26, 26, + 26, 29, 36, 39, 42, 47, 46, 53, 62, 61, 0, 24, 33, 42, 49, 55, + 61, 55, 44, 41, 29, 12, 0, 94, 76, 81, 0, 14, 30, 42, 54, 63, + 63, 54, 42, 35, 24, 0, 42, 87, 62, 60, 61, 56, 67, 64, 62, 80, + 29, 2, 25, 44, 48, 57, 56, 48, 34, 21, 7, 23, 70, 51, 51, 49, + 48, 45, 44, 43, 42, 43, 38, 46, 56, 79, 45, 0, 19, 34, 41, 50, + 60, 63, 54, 45, 39, 19, 8, 18, 85, 95, 0, 13, 34, 42, 34, 5, + 62, 63, 58, 48, 49, 51, 55, 59, 61, 60, 54, 77, 0, 20, 32, 42, + 53, 62, 60, 58, 49, 41, 30, 18, 0, 139, 29, 4, 25, 39, 44, 49, + 64, 72, 67, 58, 53, 47, 39, 33, 2, 6, 78, 48, 53, 52, 54, 46, + 33, 27, 31, 36, 41, 40, 37, 36, 42, 51, 59, 43, 4, 30, 35, 42, + 52, 57, 52, 42, 35, 17, 0, 60, 79, 62, 65, 63, 60, 58, 60, 57, + 60, 84, 0, 23, 31, 40, 46, 54, 55, 45, 39, 26, 9, 26, 79, 62, + 65, 64, 61, 59, 59, 65, 75, 49, 0, 24, 31, 42, 53, 61, 51, 42, + 36, 20, 0, 61, 79, 62, 62, 61, 58, 58, 61, 85, 29, 13, 29, 30, + 34, 33, 34, 38, 35, 20, 0, 55, 64, 45, 45, 37, 29, 23, 22, 22, + 17, 14, 8, 4, 5, 3, 0, 0, 0, 0, 1, 0, 0, 1, 1, 2, + 8, 11, 12, 16, 19, 22, 28, 33, 39, 47, 57, 54, 0, 18, 36, 47, + 44, 63, 61, 61, 48, 46, 39, 24, 0, 29, 72, 52, 49, 45, 40, 38, + 37, 32, 31, 31, 29, 28, 28, 30, 37, 43, 45, 46, 47, 50, 69, 48, + 0, 26, 34, 42, 47, 54, 63, 57, 44, 39, 33, 6, 9, 84, 74, 92, + 0, 16, 33, 44, 53, 59, 57, 51, 42, 36, 31, 0, 58, 81, 63, 52, + 66, 64, 63, 69, 64, 84, 23, 6, 26, 38, 45, 55, 56, 48, 36, 22, + 6, 22, 70, 50, 50, 46, 45, 43, 42, 41, 41, 39, 39, 46, 55, 65, + 93, 0, 16, 34, 39, 46, 59, 65, 57, 45, 34, 27, 23, 0, 95, 60, + 0, 29, 41, 36, 15, 5, 80, 59, 55, 53, 49, 51, 53, 57, 61, 61, + 56, 78, 0, 18, 31, 42, 53, 62, 58, 56, 52, 43, 30, 0, 0, 115, + 97, 0, 13, 34, 39, 44, 57, 69, 72, 69, 67, 51, 46, 34, 19, 0, + 32, 72, 55, 49, 52, 47, 34, 27, 32, 35, 41, 39, 37, 37, 45, 53, + 60, 43, 1, 29, 34, 43, 55, 60, 52, 41, 34, 15, 0, 60, 80, 64, + 64, 63, 61, 60, 60, 56, 57, 84, 0, 24, 31, 39, 46, 54, 53, 44, + 38, 25, 7, 26, 81, 62, 63, 62, 61, 61, 61, 66, 75, 50, 0, 24, + 30, 40, 51, 62, 53, 43, 34, 19, 0, 63, 80, 62, 62, 61, 61, 61, + 61, 82, 23, 4, 16, 8, 20, 20, 17, 15, 18, 12, 0, 47, 69, 47, + 45, 37, 30, 24, 22, 21, 16, 13, 8, 4, 5, 3, 0, 0, 0, 0, + 2, 1, 1, 2, 2, 4, 8, 9, 12, 16, 19, 22, 28, 31, 37, 46, + 43, 73, 0, 15, 41, 41, 48, 49, 61, 59, 56, 49, 44, 33, 13, 0, + 75, 61, 47, 51, 49, 32, 43, 30, 40, 39, 35, 33, 30, 31, 38, 40, + 41, 45, 49, 52, 77, 26, 6, 29, 38, 37, 47, 57, 54, 58, 43, 33, + 28, 0, 31, 79, 77, 94, 0, 23, 37, 41, 48, 53, 52, 45, 42, 35, + 27, 0, 56, 78, 63, 63, 58, 64, 66, 68, 62, 83, 21, 4, 26, 36, + 41, 49, 55, 49, 38, 23, 4, 20, 71, 52, 48, 43, 40, 38, 37, 37, + 39, 44, 40, 44, 41, 60, 71, 28, 14, 30, 36, 45, 55, 70, 55, 52, + 38, 38, 29, 19, 60, 41, 18, 32, 35, 23, 0, 47, 70, 55, 52, 53, + 51, 52, 56, 58, 60, 60, 59, 81, 0, 16, 30, 43, 53, 58, 60, 51, + 52, 40, 23, 2, 0, 113, 94, 46, 0, 15, 31, 42, 56, 61, 61, 77, + 70, 68, 49, 32, 29, 12, 0, 79, 63, 52, 42, 42, 43, 31, 44, 39, + 38, 38, 34, 40, 51, 57, 63, 39, 0, 23, 33, 43, 58, 63, 54, 40, + 31, 12, 0, 60, 81, 65, 63, 61, 66, 64, 59, 54, 55, 82, 0, 28, + 30, 37, 44, 51, 50, 40, 34, 22, 5, 26, 83, 64, 61, 59, 61, 64, + 63, 68, 76, 50, 0, 24, 27, 35, 51, 64, 56, 45, 32, 17, 0, 65, + 82, 62, 62, 62, 65, 65, 62, 78, 9, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 44, 57, 42, 48, 40, 34, 27, 19, 16, 14, 10, 8, 4, + 5, 3, 1, 0, 0, 0, 2, 1, 2, 2, 3, 4, 7, 9, 12, 14, + 17, 21, 25, 28, 36, 41, 45, 61, 26, 12, 30, 43, 47, 50, 58, 60, + 60, 54, 47, 37, 23, 0, 31, 68, 58, 56, 37, 48, 39, 39, 41, 40, + 37, 34, 33, 33, 40, 44, 42, 54, 40, 62, 87, 0, 16, 28, 36, 44, + 49, 54, 58, 60, 44, 31, 15, 0, 68, 75, 68, 91, 0, 21, 36, 41, + 47, 52, 52, 50, 44, 38, 27, 3, 10, 83, 65, 68, 62, 63, 67, 69, + 62, 82, 21, 4, 24, 35, 39, 49, 55, 49, 38, 23, 4, 20, 71, 53, + 47, 43, 40, 37, 35, 37, 43, 43, 36, 42, 40, 48, 67, 68, 0, 24, + 32, 36, 59, 54, 62, 61, 50, 43, 49, 29, 22, 14, 29, 46, 31, 14, + 0, 72, 71, 48, 49, 53, 52, 52, 55, 56, 58, 60, 59, 80, 0, 17, + 30, 44, 53, 58, 60, 51, 50, 38, 25, 6, 0, 101, 93, 82, 0, 0, + 33, 44, 41, 47, 68, 71, 79, 67, 50, 43, 36, 27, 5, 15, 78, 55, + 49, 46, 35, 44, 45, 45, 40, 39, 36, 43, 53, 59, 64, 39, 0, 20, + 31, 43, 57, 62, 52, 38, 31, 12, 0, 60, 81, 66, 62, 60, 65, 63, + 59, 54, 55, 82, 0, 30, 32, 39, 46, 52, 50, 40, 34, 22, 6, 26, + 85, 64, 58, 56, 61, 64, 65, 68, 75, 49, 0, 24, 26, 34, 50, 62, + 56, 45, 30, 14, 0, 64, 80, 62, 62, 64, 68, 66, 61, 71, 57, 58, + 51, 74, 73, 67, 74, 66, 58, 60, 50, 68, 46, 39, 40, 46, 36, 30, + 22, 17, 12, 10, 8, 7, 5, 3, 1, 0, 0, 0, 2, 0, 2, 1, + 3, 3, 6, 7, 11, 13, 16, 19, 24, 27, 35, 39, 42, 57, 60, 0, + 22, 36, 43, 55, 59, 62, 64, 57, 46, 38, 30, 10, 0, 89, 72, 53, + 51, 37, 41, 47, 43, 39, 36, 34, 35, 38, 43, 46, 50, 48, 55, 60, + 72, 0, 17, 40, 39, 51, 51, 49, 48, 36, 30, 19, 0, 9, 86, 66, + 64, 91, 0, 15, 29, 39, 46, 55, 59, 56, 50, 42, 30, 4, 13, 95, + 67, 52, 62, 68, 69, 68, 61, 82, 21, 4, 24, 35, 44, 53, 56, 49, + 38, 23, 6, 23, 71, 52, 49, 46, 43, 40, 37, 38, 39, 42, 38, 40, + 44, 43, 55, 82, 5, 0, 18, 36, 48, 57, 65, 65, 65, 45, 50, 42, + 23, 28, 36, 28, 26, 7, 5, 88, 65, 50, 49, 46, 46, 48, 50, 52, + 54, 55, 53, 77, 0, 20, 33, 47, 55, 61, 63, 54, 49, 37, 28, 13, + 0, 103, 85, 85, 68, 0, 12, 32, 47, 43, 55, 64, 76, 70, 58, 53, + 40, 29, 18, 0, 41, 82, 59, 38, 56, 48, 47, 48, 48, 48, 44, 49, + 58, 61, 67, 41, 0, 22, 31, 41, 54, 57, 48, 37, 32, 15, 0, 61, + 80, 63, 59, 56, 60, 58, 60, 57, 60, 87, 0, 30, 35, 44, 51, 58, + 55, 44, 38, 26, 10, 29, 82, 60, 56, 56, 61, 64, 63, 66, 73, 48, + 0, 24, 26, 34, 49, 59, 53, 42, 27, 13, 0, 60, 79, 62, 62, 64, + 65, 64, 57, 59, 72, 86, 92, 91, 106, 111, 111, 103, 105, 94, 78, 61, + 44, 43, 42, 40, 37, 31, 27, 22, 13, 9, 12, 9, 7, 4, 1, 0, + 0, 0, 2, 0, 2, 1, 2, 2, 4, 6, 10, 13, 15, 19, 24, 27, + 33, 39, 35, 54, 70, 0, 5, 30, 40, 51, 55, 61, 65, 59, 48, 42, + 38, 25, 3, 22, 80, 68, 46, 49, 51, 44, 43, 40, 38, 38, 41, 43, + 47, 48, 50, 47, 63, 78, 29, 4, 31, 36, 48, 54, 60, 55, 52, 33, + 32, 18, 0, 66, 80, 64, 63, 83, 16, 0, 23, 35, 45, 54, 61, 60, + 54, 44, 29, 18, 0, 104, 71, 53, 71, 62, 63, 64, 59, 82, 21, 6, + 26, 37, 46, 56, 58, 49, 36, 22, 7, 24, 70, 52, 51, 48, 44, 41, + 38, 36, 38, 42, 43, 37, 42, 47, 46, 66, 45, 0, 16, 36, 38, 58, + 64, 62, 72, 65, 55, 49, 38, 44, 38, 29, 21, 0, 52, 79, 58, 52, + 48, 44, 44, 45, 47, 49, 51, 52, 49, 74, 0, 24, 34, 47, 55, 62, + 64, 54, 45, 39, 32, 14, 0, 108, 76, 63, 90, 25, 4, 26, 32, 43, + 53, 60, 65, 72, 64, 53, 51, 30, 25, 11, 0, 80, 67, 44, 54, 55, + 43, 50, 50, 53, 50, 53, 57, 61, 66, 43, 0, 23, 33, 42, 51, 55, + 47, 37, 34, 17, 0, 61, 81, 62, 59, 55, 56, 57, 60, 59, 64, 88, + 0, 28, 37, 47, 54, 61, 58, 47, 41, 29, 13, 30, 79, 57, 55, 58, + 61, 64, 62, 65, 72, 46, 0, 25, 28, 36, 49, 59, 51, 42, 29, 12, + 0, 58, 78, 62, 62, 64, 62, 61, 57, 59, 65, 78, 90, 50, 9, 0, + 0, 0, 12, 65, 83, 69, 44, 41, 39, 44, 36, 30, 26, 21, 12, 9, + 13, 10, 7, 4, 1, 0, 0, 0, 2, 0, 1, 1, 1, 2, 5, 4, + 8, 10, 13, 16, 21, 24, 32, 37, 40, 42, 63, 60, 0, 16, 42, 38, + 42, 51, 60, 62, 58, 52, 47, 36, 15, 0, 60, 73, 61, 39, 42, 46, + 44, 43, 43, 44, 47, 48, 48, 46, 42, 48, 60, 77, 0, 22, 35, 45, + 38, 43, 56, 52, 52, 40, 32, 1, 2, 81, 66, 64, 65, 82, 59, 0, + 14, 32, 42, 52, 61, 62, 57, 48, 44, 17, 0, 60, 78, 68, 50, 57, + 52, 54, 56, 83, 22, 7, 29, 40, 49, 57, 56, 46, 33, 21, 8, 24, + 68, 49, 51, 49, 46, 42, 38, 34, 41, 36, 42, 36, 36, 48, 46, 56, + 67, 0, 12, 29, 39, 43, 60, 63, 72, 77, 62, 54, 42, 44, 31, 25, + 14, 0, 77, 68, 58, 49, 45, 45, 42, 46, 45, 48, 50, 48, 46, 72, + 0, 27, 34, 46, 54, 61, 64, 52, 38, 39, 39, 11, 0, 99, 76, 64, + 65, 74, 8, 25, 24, 39, 53, 58, 56, 64, 67, 55, 59, 39, 26, 22, + 4, 22, 78, 59, 45, 46, 49, 47, 49, 53, 50, 52, 55, 58, 65, 43, + 0, 27, 37, 45, 52, 55, 48, 38, 34, 18, 0, 62, 80, 60, 59, 55, + 55, 55, 63, 64, 65, 88, 0, 24, 35, 46, 53, 59, 57, 47, 42, 30, + 16, 30, 75, 52, 55, 58, 61, 64, 62, 66, 73, 48, 0, 28, 34, 41, + 51, 61, 53, 43, 30, 14, 0, 58, 78, 61, 61, 60, 57, 57, 60, 67, + 81, 101, 22, 0, 3, 15, 7, 16, 4, 0, 14, 88, 58, 47, 47, 39, + 34, 26, 18, 14, 10, 8, 9, 9, 5, 4, 1, 0, 1, 0, 1, 0, + 1, 0, 2, 1, 3, 4, 7, 9, 12, 15, 19, 22, 30, 36, 40, 37, + 58, 81, 25, 0, 25, 32, 34, 43, 57, 63, 64, 62, 55, 45, 28, 19, + 0, 75, 68, 58, 48, 47, 47, 46, 48, 49, 50, 51, 51, 51, 55, 66, + 74, 0, 11, 30, 45, 53, 48, 51, 64, 53, 51, 42, 19, 0, 59, 80, + 68, 64, 62, 75, 72, 0, 7, 31, 42, 52, 58, 61, 58, 51, 41, 33, + 12, 17, 93, 64, 63, 51, 46, 51, 58, 85, 22, 7, 29, 42, 51, 57, + 56, 45, 31, 19, 8, 26, 67, 47, 49, 47, 44, 41, 37, 35, 37, 28, + 40, 40, 33, 39, 46, 53, 63, 23, 0, 25, 37, 43, 48, 63, 68, 72, + 64, 64, 48, 45, 35, 13, 0, 31, 79, 59, 53, 51, 51, 41, 44, 46, + 48, 48, 49, 49, 45, 71, 0, 29, 34, 43, 51, 58, 62, 52, 44, 36, + 37, 11, 0, 94, 75, 69, 67, 78, 46, 0, 24, 37, 46, 55, 52, 55, + 76, 63, 55, 49, 41, 29, 29, 0, 42, 81, 57, 42, 54, 48, 51, 55, + 51, 51, 52, 55, 64, 44, 0, 29, 40, 46, 52, 55, 48, 38, 34, 17, + 0, 65, 78, 59, 60, 57, 56, 57, 64, 65, 65, 87, 0, 20, 31, 41, + 48, 56, 54, 45, 41, 29, 16, 30, 72, 49, 54, 59, 62, 66, 62, 65, + 73, 49, 0, 28, 37, 45, 53, 61, 54, 45, 33, 17, 0, 60, 79, 63, + 63, 60, 56, 56, 61, 74, 94, 14, 0, 11, 26, 28, 34, 34, 16, 17, + 1, 21, 71, 55, 47, 46, 34, 25, 15, 12, 11, 10, 11, 9, 6, 4, + 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 4, 7, 10, 12, 14, + 18, 21, 28, 36, 37, 47, 54, 63, 64, 5, 3, 26, 34, 42, 48, 54, + 63, 65, 60, 53, 48, 27, 6, 0, 82, 76, 61, 56, 52, 52, 52, 53, + 53, 52, 54, 59, 68, 84, 29, 5, 25, 47, 47, 49, 52, 53, 56, 42, + 36, 21, 0, 14, 79, 64, 60, 63, 65, 74, 78, 9, 3, 29, 42, 48, + 53, 57, 56, 53, 41, 29, 15, 6, 48, 93, 70, 59, 48, 52, 62, 89, + 21, 4, 27, 40, 49, 56, 53, 44, 30, 19, 10, 26, 66, 44, 44, 43, + 40, 38, 35, 33, 31, 29, 36, 38, 32, 35, 43, 51, 57, 66, 0, 21, + 30, 45, 44, 56, 67, 73, 67, 61, 42, 35, 36, 19, 0, 73, 69, 51, + 48, 53, 49, 40, 48, 50, 50, 49, 50, 50, 46, 71, 0, 30, 33, 40, + 47, 54, 59, 52, 51, 38, 35, 9, 0, 94, 72, 62, 62, 74, 94, 7, + 2, 32, 39, 47, 50, 55, 79, 74, 59, 58, 57, 45, 32, 18, 0, 77, + 67, 57, 50, 55, 55, 58, 55, 53, 53, 54, 65, 47, 0, 30, 41, 48, + 51, 53, 48, 38, 30, 15, 0, 65, 75, 57, 60, 59, 60, 61, 66, 65, + 64, 82, 0, 16, 25, 36, 43, 51, 50, 41, 37, 28, 14, 29, 71, 48, + 55, 61, 64, 66, 59, 62, 72, 48, 0, 26, 37, 46, 51, 59, 53, 45, + 36, 19, 0, 61, 84, 67, 67, 63, 56, 54, 60, 77, 67, 0, 9, 24, + 38, 35, 38, 38, 39, 32, 19, 0, 68, 52, 46, 38, 35, 25, 19, 15, + 14, 15, 15, 12, 8, 4, 2, 0, 1, 0, 1, 0, 1, 2, 1, 1, + 3, 5, 6, 9, 10, 13, 16, 20, 25, 33, 38, 52, 46, 59, 68, 36, + 0, 12, 34, 43, 43, 48, 58, 64, 62, 57, 50, 44, 31, 6, 2, 51, + 83, 65, 68, 64, 65, 66, 67, 68, 73, 83, 80, 2, 9, 28, 38, 53, + 58, 58, 53, 48, 46, 38, 35, 8, 0, 73, 66, 67, 56, 66, 58, 59, + 67, 58, 0, 22, 38, 45, 49, 55, 55, 52, 43, 38, 33, 13, 0, 66, + 88, 71, 63, 65, 69, 92, 21, 3, 26, 39, 48, 54, 53, 44, 33, 22, + 13, 27, 67, 43, 41, 38, 36, 35, 34, 32, 30, 36, 30, 27, 32, 40, + 49, 54, 54, 76, 35, 6, 25, 29, 51, 52, 63, 73, 57, 51, 50, 34, + 24, 4, 6, 86, 58, 48, 52, 50, 36, 49, 48, 52, 50, 51, 52, 50, + 48, 74, 0, 30, 31, 39, 46, 52, 59, 52, 50, 41, 37, 6, 0, 93, + 78, 64, 56, 68, 75, 65, 0, 16, 30, 42, 51, 57, 68, 75, 72, 62, + 56, 48, 42, 27, 8, 27, 82, 61, 60, 56, 58, 61, 57, 55, 52, 56, + 68, 49, 0, 29, 41, 46, 50, 52, 47, 37, 30, 15, 0, 66, 74, 56, + 59, 59, 63, 62, 66, 63, 61, 82, 0, 16, 24, 33, 40, 48, 48, 38, + 37, 26, 14, 30, 72, 50, 56, 62, 65, 64, 58, 59, 70, 46, 0, 24, + 37, 45, 50, 58, 51, 45, 36, 20, 0, 63, 82, 67, 68, 65, 60, 58, + 63, 81, 12, 0, 20, 35, 39, 44, 45, 43, 43, 34, 25, 0, 28, 57, + 49, 38, 35, 29, 23, 20, 15, 13, 16, 12, 8, 4, 2, 0, 1, 0, + 1, 1, 1, 0, 0, 1, 2, 3, 5, 6, 10, 13, 14, 17, 25, 31, + 38, 35, 42, 44, 47, 63, 46, 0, 19, 42, 44, 51, 55, 47, 47, 54, + 50, 49, 34, 32, 14, 0, 4, 63, 87, 93, 77, 82, 97, 93, 72, 36, + 0, 5, 23, 40, 51, 59, 62, 59, 46, 50, 33, 28, 20, 0, 75, 66, + 61, 58, 57, 54, 50, 50, 55, 77, 23, 16, 27, 43, 41, 53, 52, 50, + 44, 43, 39, 34, 11, 3, 50, 102, 93, 78, 87, 87, 21, 4, 22, 34, + 45, 54, 60, 54, 38, 29, 23, 3, 73, 48, 39, 33, 37, 32, 40, 34, + 32, 30, 28, 31, 32, 39, 50, 55, 56, 72, 66, 0, 14, 33, 45, 53, + 59, 70, 60, 48, 36, 34, 18, 0, 43, 68, 58, 42, 48, 46, 45, 48, + 47, 53, 42, 51, 49, 51, 50, 80, 0, 28, 30, 36, 46, 55, 55, 54, + 52, 42, 27, 0, 0, 93, 72, 64, 66, 60, 65, 86, 34, 11, 17, 43, + 44, 59, 62, 71, 61, 60, 59, 50, 42, 35, 26, 0, 52, 74, 58, 56, + 64, 57, 67, 54, 54, 61, 73, 51, 2, 26, 38, 43, 47, 50, 44, 36, + 31, 23, 1, 72, 71, 52, 54, 59, 64, 61, 63, 55, 61, 87, 0, 25, + 26, 35, 44, 47, 48, 42, 37, 28, 14, 37, 77, 50, 69, 61, 64, 61, + 56, 60, 69, 47, 0, 21, 37, 42, 44, 58, 49, 43, 35, 16, 0, 59, + 81, 55, 69, 66, 65, 61, 69, 85, 2, 7, 29, 49, 47, 53, 57, 49, + 39, 29, 20, 7, 7, 59, 43, 33, 33, 31, 31, 26, 12, 6, 12, 12, + 6, 5, 2, 0, 0, 0, 1, 0, 0, 0, 0, 1, 3, 3, 4, 5, + 8, 10, 12, 16, 22, 27, 34, 32, 39, 39, 37, 57, 63, 52, 5, 23, + 37, 40, 47, 52, 40, 43, 47, 50, 54, 47, 29, 16, 0, 0, 0, 5, + 20, 20, 7, 0, 0, 1, 20, 26, 33, 45, 55, 56, 53, 49, 40, 28, + 23, 17, 0, 52, 72, 57, 56, 54, 52, 49, 45, 46, 49, 65, 83, 0, + 4, 32, 46, 48, 44, 50, 46, 47, 53, 56, 45, 20, 0, 0, 9, 22, + 25, 98, 24, 0, 24, 41, 44, 50, 56, 51, 43, 31, 21, 0, 86, 56, + 46, 42, 37, 36, 39, 37, 32, 29, 30, 31, 34, 40, 50, 55, 48, 64, + 81, 24, 0, 20, 38, 51, 54, 67, 55, 53, 36, 24, 14, 0, 66, 68, + 51, 41, 49, 46, 43, 42, 43, 41, 48, 46, 46, 62, 61, 83, 0, 27, + 33, 40, 48, 55, 57, 53, 45, 38, 25, 6, 0, 94, 77, 64, 59, 70, + 62, 74, 100, 1, 9, 24, 45, 61, 54, 54, 55, 55, 53, 47, 45, 30, + 33, 3, 0, 93, 73, 62, 63, 65, 48, 55, 57, 59, 86, 55, 2, 26, + 39, 46, 49, 53, 49, 42, 34, 16, 5, 54, 81, 55, 52, 54, 64, 59, + 63, 66, 53, 89, 0, 23, 33, 40, 49, 52, 52, 46, 40, 32, 21, 0, + 86, 62, 58, 59, 67, 61, 53, 56, 82, 48, 0, 22, 30, 42, 48, 53, + 46, 46, 43, 26, 0, 23, 69, 60, 62, 71, 66, 70, 55, 89, 0, 26, + 33, 38, 46, 61, 58, 55, 34, 30, 30, 0, 15, 65, 44, 35, 33, 33, + 32, 26, 8, 1, 7, 8, 6, 5, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 4, 7, 10, 12, 13, 22, 24, 22, 23, 34, 37, + 35, 43, 55, 66, 46, 4, 9, 28, 26, 33, 40, 46, 44, 46, 55, 52, + 42, 37, 32, 16, 5, 5, 0, 0, 10, 8, 18, 18, 24, 39, 46, 45, + 47, 45, 44, 48, 34, 23, 18, 0, 52, 81, 56, 57, 53, 49, 44, 43, + 45, 47, 49, 58, 80, 53, 0, 5, 30, 43, 46, 49, 37, 43, 58, 56, + 51, 44, 24, 9, 0, 0, 68, 85, 32, 6, 23, 44, 50, 52, 56, 56, + 52, 43, 29, 2, 50, 67, 48, 42, 39, 40, 44, 39, 34, 30, 31, 34, + 37, 41, 48, 50, 57, 53, 53, 64, 0, 9, 33, 53, 50, 55, 54, 50, + 33, 21, 1, 18, 77, 60, 46, 42, 49, 45, 45, 41, 39, 38, 40, 39, + 49, 56, 53, 62, 0, 24, 33, 39, 46, 51, 52, 47, 40, 40, 32, 13, + 0, 102, 70, 65, 64, 51, 65, 72, 81, 58, 0, 13, 27, 47, 46, 41, + 48, 44, 43, 43, 49, 50, 32, 16, 8, 26, 78, 63, 63, 56, 58, 45, + 53, 65, 79, 62, 0, 23, 37, 47, 48, 50, 50, 45, 35, 40, 13, 27, + 83, 59, 56, 46, 59, 57, 53, 53, 69, 82, 2, 25, 38, 44, 50, 51, + 49, 46, 40, 34, 19, 0, 100, 71, 63, 53, 68, 63, 60, 67, 86, 52, + 3, 28, 37, 48, 49, 54, 53, 52, 41, 31, 15, 22, 85, 58, 59, 63, + 63, 60, 68, 89, 0, 22, 31, 47, 50, 57, 52, 46, 46, 33, 40, 16, + 11, 66, 43, 32, 33, 30, 28, 21, 6, 0, 3, 4, 4, 5, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 7, 9, 11, 13, + 18, 21, 22, 23, 30, 38, 40, 37, 38, 50, 72, 60, 4, 4, 15, 17, + 45, 37, 46, 43, 36, 44, 51, 46, 37, 39, 26, 26, 19, 24, 30, 26, + 33, 39, 39, 40, 31, 30, 40, 35, 25, 26, 16, 4, 0, 73, 65, 57, + 58, 54, 48, 44, 39, 39, 43, 47, 49, 53, 59, 71, 40, 0, 9, 27, + 38, 42, 45, 42, 56, 56, 56, 52, 31, 18, 0, 39, 82, 82, 25, 10, + 33, 38, 38, 39, 41, 44, 46, 41, 27, 5, 12, 90, 68, 46, 45, 37, + 50, 37, 36, 33, 33, 35, 39, 42, 47, 47, 50, 43, 46, 62, 49, 0, + 20, 25, 44, 40, 58, 40, 30, 21, 0, 57, 66, 47, 46, 47, 43, 41, + 45, 43, 34, 38, 31, 40, 51, 61, 77, 34, 4, 26, 34, 38, 42, 44, + 47, 43, 39, 41, 37, 20, 0, 68, 83, 60, 57, 61, 63, 60, 71, 79, + 8, 0, 14, 30, 42, 40, 42, 33, 37, 37, 45, 41, 38, 26, 7, 0, + 55, 80, 67, 49, 47, 47, 53, 62, 94, 18, 3, 25, 38, 45, 46, 47, + 49, 47, 35, 24, 13, 0, 86, 60, 54, 53, 54, 53, 49, 68, 70, 51, + 9, 35, 43, 47, 50, 48, 47, 45, 43, 37, 23, 2, 54, 82, 72, 59, + 62, 54, 69, 77, 98, 14, 5, 23, 40, 44, 43, 40, 43, 47, 40, 37, + 13, 0, 85, 54, 73, 58, 61, 57, 48, 73, 7, 18, 28, 32, 44, 49, + 38, 39, 43, 29, 29, 14, 12, 59, 48, 36, 34, 28, 24, 18, 8, 4, + 6, 6, 4, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 1, 5, 5, 6, 10, 14, 18, 23, 24, 23, 27, 37, 39, 39, 45, + 57, 65, 79, 17, 0, 1, 14, 34, 35, 44, 35, 40, 42, 50, 42, 46, + 37, 37, 34, 37, 41, 36, 26, 24, 36, 40, 23, 13, 22, 18, 11, 11, + 0, 28, 82, 67, 49, 44, 40, 47, 41, 39, 38, 39, 43, 49, 52, 51, + 44, 56, 69, 45, 0, 1, 29, 25, 34, 29, 39, 41, 43, 41, 20, 1, + 0, 101, 67, 83, 27, 6, 30, 29, 27, 27, 30, 33, 36, 35, 26, 13, + 0, 59, 70, 50, 46, 37, 49, 42, 37, 34, 33, 33, 37, 40, 42, 43, + 41, 51, 42, 52, 89, 18, 0, 13, 25, 32, 49, 34, 32, 13, 0, 80, + 54, 41, 51, 49, 41, 40, 42, 38, 37, 36, 36, 40, 42, 66, 79, 0, + 5, 20, 25, 27, 26, 28, 32, 33, 39, 32, 34, 27, 15, 8, 97, 61, + 61, 52, 55, 56, 51, 61, 69, 6, 3, 5, 20, 28, 29, 25, 34, 34, + 39, 34, 30, 34, 36, 10, 0, 78, 71, 53, 49, 54, 55, 71, 78, 0, + 4, 21, 31, 34, 33, 34, 36, 35, 32, 21, 23, 0, 32, 82, 58, 55, + 58, 58, 51, 61, 89, 10, 0, 27, 32, 35, 35, 33, 30, 31, 34, 30, + 16, 0, 0, 91, 72, 59, 60, 65, 60, 80, 106, 0, 14, 32, 40, 33, + 34, 33, 36, 39, 33, 36, 22, 0, 27, 77, 62, 59, 61, 53, 51, 77, + 47, 0, 15, 36, 40, 36, 36, 35, 39, 39, 23, 0, 41, 49, 51, 41, + 34, 28, 19, 16, 17, 16, 15, 12, 6, 4, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 1, 2, 4, 6, 7, 12, 15, 17, 21, + 21, 21, 29, 34, 38, 40, 42, 49, 47, 70, 74, 23, 0, 11, 15, 16, + 21, 29, 20, 31, 37, 37, 35, 40, 41, 37, 34, 30, 25, 28, 30, 19, + 9, 15, 7, 0, 0, 28, 74, 69, 59, 41, 35, 35, 50, 40, 37, 36, + 39, 39, 40, 43, 48, 48, 47, 46, 49, 67, 66, 0, 0, 19, 15, 22, + 33, 28, 20, 17, 9, 0, 37, 78, 68, 71, 22, 0, 15, 12, 12, 12, + 13, 14, 18, 18, 12, 6, 2, 5, 53, 60, 49, 40, 36, 36, 38, 35, + 32, 33, 36, 36, 37, 40, 52, 41, 42, 53, 56, 91, 41, 0, 4, 32, + 34, 33, 33, 4, 25, 74, 49, 38, 48, 46, 40, 42, 39, 36, 33, 33, + 40, 45, 61, 62, 34, 0, 5, 12, 17, 16, 14, 15, 19, 22, 26, 23, + 23, 21, 17, 0, 44, 76, 59, 49, 49, 46, 45, 61, 65, 73, 7, 0, + 0, 8, 15, 19, 21, 16, 13, 23, 24, 18, 17, 10, 5, 0, 62, 76, + 49, 38, 64, 80, 19, 0, 4, 13, 18, 19, 18, 18, 19, 20, 12, 18, + 12, 2, 0, 40, 69, 61, 56, 52, 50, 63, 70, 0, 0, 16, 16, 19, + 17, 14, 13, 16, 20, 19, 16, 1, 0, 45, 75, 56, 55, 63, 63, 83, + 38, 0, 8, 21, 23, 13, 13, 15, 21, 19, 10, 15, 20, 8, 0, 61, + 71, 66, 57, 41, 57, 58, 82, 2, 0, 9, 28, 31, 28, 27, 26, 18, + 6, 18, 60, 44, 47, 40, 33, 24, 14, 13, 15, 17, 16, 12, 5, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 3, + 4, 4, 8, 11, 14, 19, 23, 25, 25, 30, 38, 38, 36, 45, 42, 44, + 59, 73, 65, 29, 0, 0, 0, 11, 26, 19, 15, 10, 17, 20, 25, 28, + 34, 31, 21, 18, 18, 21, 5, 0, 0, 28, 64, 71, 60, 52, 47, 43, + 35, 37, 42, 31, 36, 36, 38, 37, 30, 31, 39, 41, 51, 36, 50, 47, + 47, 72, 34, 6, 0, 4, 6, 13, 14, 5, 1, 0, 81, 68, 57, 74, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 38, + 39, 40, 34, 39, 39, 38, 33, 31, 33, 35, 35, 40, 48, 47, 57, 50, + 63, 68, 84, 116, 0, 27, 27, 32, 31, 11, 63, 58, 43, 34, 43, 42, + 38, 39, 33, 37, 40, 41, 39, 42, 49, 23, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 34, 56, 40, 53, 60, + 60, 48, 60, 63, 78, 46, 11, 0, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 58, 63, 67, 67, 21, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 42, 57, 62, 51, 53, 76, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, + 52, 59, 56, 51, 56, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 75, 64, 57, 64, 51, 51, 63, 61, 15, 0, + 13, 32, 16, 20, 14, 2, 9, 47, 43, 37, 45, 41, 29, 17, 11, 9, + 6, 7, 9, 7, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 2, 0, 0, 1, 1, 2, 6, 9, 10, 10, 15, 20, 21, 27, + 38, 39, 42, 27, 34, 41, 47, 52, 53, 61, 66, 62, 54, 22, 32, 0, + 0, 0, 0, 0, 2, 5, 6, 3, 0, 4, 19, 29, 59, 80, 77, 63, + 51, 44, 45, 45, 37, 33, 42, 37, 33, 39, 32, 32, 34, 31, 25, 25, + 32, 36, 40, 42, 47, 39, 42, 48, 61, 83, 64, 45, 20, 22, 23, 20, + 51, 72, 61, 50, 54, 66, 51, 50, 43, 51, 54, 56, 55, 54, 55, 54, + 48, 49, 57, 52, 26, 36, 38, 37, 35, 33, 41, 41, 36, 34, 35, 35, + 36, 40, 50, 53, 60, 55, 54, 58, 84, 37, 0, 17, 31, 27, 16, 16, + 85, 49, 41, 33, 43, 40, 35, 31, 28, 39, 36, 36, 37, 49, 29, 28, + 45, 51, 53, 53, 56, 57, 57, 56, 57, 57, 57, 54, 47, 53, 51, 46, + 48, 33, 49, 44, 43, 53, 54, 57, 53, 55, 54, 65, 68, 76, 90, 92, + 59, 54, 52, 42, 55, 57, 50, 45, 58, 49, 45, 35, 65, 58, 47, 34, + 45, 59, 56, 55, 54, 54, 57, 56, 53, 53, 54, 51, 66, 61, 52, 49, + 29, 65, 54, 56, 52, 28, 46, 54, 52, 51, 51, 54, 55, 54, 55, 57, + 61, 59, 58, 58, 54, 47, 21, 50, 50, 52, 49, 20, 36, 45, 64, 63, + 53, 55, 52, 58, 53, 51, 53, 48, 53, 58, 44, 33, 43, 64, 54, 54, + 49, 50, 46, 62, 65, 71, 23, 2, 3, 0, 26, 47, 63, 54, 35, 34, + 40, 37, 29, 18, 11, 9, 4, 4, 5, 5, 5, 4, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 1, 1, 2, 4, 8, 7, + 9, 10, 14, 19, 20, 25, 31, 32, 32, 32, 36, 37, 41, 43, 47, 50, + 53, 57, 64, 71, 74, 75, 72, 73, 32, 35, 36, 37, 46, 62, 76, 80, + 75, 70, 66, 61, 55, 49, 45, 44, 41, 40, 37, 35, 34, 32, 31, 29, + 28, 27, 27, 27, 25, 24, 29, 32, 35, 36, 37, 39, 39, 42, 51, 56, + 58, 62, 64, 66, 67, 67, 64, 61, 53, 50, 50, 53, 57, 60, 60, 60, + 63, 63, 63, 63, 62, 61, 60, 60, 64, 62, 54, 48, 42, 39, 36, 38, + 44, 46, 46, 41, 45, 42, 29, 43, 51, 53, 60, 59, 63, 64, 93, 1, + 3, 28, 29, 17, 4, 40, 71, 46, 42, 40, 41, 37, 27, 24, 34, 38, + 35, 34, 35, 38, 43, 48, 54, 57, 61, 59, 62, 63, 62, 63, 63, 64, + 64, 63, 62, 61, 60, 59, 58, 55, 46, 43, 45, 47, 47, 47, 47, 47, + 48, 49, 53, 57, 60, 62, 63, 64, 62, 62, 63, 63, 62, 62, 63, 61, + 59, 56, 52, 52, 53, 57, 62, 64, 64, 64, 64, 63, 64, 63, 63, 63, + 63, 64, 66, 65, 65, 61, 55, 52, 49, 48, 48, 52, 59, 62, 62, 62, + 63, 63, 63, 63, 63, 64, 66, 66, 64, 64, 64, 59, 52, 48, 48, 48, + 46, 51, 58, 63, 64, 64, 64, 63, 63, 63, 63, 63, 63, 62, 63, 61, + 60, 57, 53, 51, 49, 47, 47, 46, 47, 51, 55, 62, 67, 69, 69, 68, + 65, 61, 51, 41, 36, 35, 33, 30, 24, 19, 14, 9, 7, 5, 3, 3, + 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, + 1, 2, 2, 5, 8, 7, 6, 6, 12, 15, 17, 21, 24, 26, 27, 29, + 32, 35, 34, 35, 41, 42, 42, 43, 46, 46, 50, 49, 50, 50, 51, 54, + 54, 51, 52, 53, 52, 49, 49, 46, 44, 42, 42, 41, 40, 39, 37, 36, + 35, 32, 30, 28, 25, 24, 22, 22, 21, 20, 21, 22, 24, 27, 30, 30, + 33, 35, 36, 37, 42, 42, 40, 40, 42, 44, 44, 45, 45, 46, 45, 45, + 44, 44, 43, 43, 43, 43, 44, 45, 44, 44, 43, 42, 43, 44, 45, 46, + 46, 43, 42, 39, 38, 37, 37, 45, 50, 45, 40, 41, 41, 39, 47, 70, + 53, 64, 61, 84, 75, 0, 12, 28, 36, 9, 0, 75, 57, 48, 41, 40, + 38, 32, 22, 22, 32, 35, 29, 29, 31, 34, 35, 37, 39, 40, 41, 39, + 42, 41, 42, 43, 42, 43, 43, 43, 45, 44, 43, 42, 42, 41, 42, 41, + 41, 40, 42, 42, 42, 40, 42, 42, 43, 44, 42, 43, 43, 44, 45, 45, + 43, 44, 44, 44, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 43, 43, 42, 44, 43, 43, 43, 42, 43, 43, 43, 44, 45, + 43, 44, 44, 43, 42, 43, 44, 43, 39, 36, 35, 33, 28, 24, 22, 20, + 14, 10, 8, 6, 3, 3, 3, 5, 2, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 4, 3, 4, 4, 7, 11, + 13, 15, 19, 19, 22, 23, 25, 26, 27, 29, 35, 36, 37, 36, 39, 40, + 43, 43, 45, 43, 45, 47, 48, 46, 47, 48, 47, 43, 42, 40, 38, 36, + 36, 34, 33, 32, 30, 29, 28, 25, 23, 21, 19, 17, 17, 15, 14, 13, + 14, 15, 18, 20, 23, 23, 26, 27, 28, 31, 35, 35, 36, 36, 39, 40, + 39, 39, 39, 40, 39, 39, 39, 39, 38, 38, 38, 37, 39, 39, 39, 39, + 37, 38, 38, 39, 41, 41, 41, 42, 40, 40, 38, 35, 38, 37, 33, 37, + 43, 42, 49, 58, 50, 52, 48, 53, 75, 93, 0, 8, 31, 33, 32, 3, + 13, 77, 53, 43, 42, 39, 33, 28, 23, 24, 28, 29, 26, 25, 26, 29, + 30, 31, 34, 33, 35, 34, 36, 36, 37, 37, 38, 38, 37, 37, 39, 38, + 37, 36, 36, 36, 35, 34, 35, 34, 35, 34, 35, 34, 35, 34, 36, 37, + 36, 37, 39, 40, 39, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 38, 38, 38, 38, + 38, 37, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 37, 37, 38, 38, 38, 38, + 38, 38, 38, 38, 39, 39, 39, 38, 38, 37, 37, 37, 38, 38, 38, 38, + 37, 37, 37, 37, 38, 39, 40, 40, 38, 37, 37, 38, 37, 37, 35, 32, + 30, 28, 23, 21, 17, 16, 12, 8, 7, 6, 4, 2, 5, 4, 2, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, + 2, 2, 4, 4, 7, 10, 11, 14, 15, 17, 17, 17, 20, 22, 23, 25, + 30, 31, 31, 30, 33, 36, 38, 37, 39, 39, 40, 40, 39, 37, 37, 39, + 40, 39, 38, 36, 34, 31, 32, 29, 28, 28, 26, 25, 22, 20, 19, 18, + 15, 14, 13, 11, 11, 11, 12, 12, 14, 15, 18, 18, 21, 23, 24, 26, + 28, 30, 31, 32, 34, 35, 34, 34, 35, 35, 35, 35, 34, 34, 33, 33, + 33, 34, 37, 35, 35, 34, 33, 33, 34, 35, 37, 38, 38, 39, 39, 39, + 40, 39, 37, 30, 37, 42, 43, 44, 52, 62, 62, 62, 48, 66, 94, 20, + 11, 24, 42, 42, 20, 7, 50, 67, 47, 40, 41, 37, 30, 26, 25, 24, + 24, 24, 22, 22, 24, 26, 26, 28, 30, 29, 31, 31, 32, 32, 32, 33, + 33, 34, 33, 32, 34, 33, 32, 31, 31, 31, 30, 29, 30, 29, 30, 29, + 30, 29, 30, 29, 31, 32, 32, 33, 34, 35, 34, 35, 33, 33, 34, 33, + 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 33, 33, 33, 33, 32, 32, 32, 33, 33, 33, 33, + 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 33, 33, + 32, 32, 34, 33, 33, 33, 32, 32, 32, 32, 34, 34, 35, 36, 34, 33, + 32, 34, 33, 33, 31, 27, 25, 24, 21, 18, 14, 12, 11, 7, 7, 6, + 2, 2, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 0, 1, 0, 0, 0, 2, 1, 2, 2, 5, 7, 9, 11, 12, 12, + 14, 14, 16, 17, 20, 21, 26, 26, 27, 26, 29, 30, 32, 32, 33, 33, + 36, 37, 39, 38, 36, 35, 32, 30, 32, 31, 30, 28, 27, 26, 23, 23, + 21, 20, 18, 16, 16, 13, 11, 10, 10, 9, 8, 8, 9, 8, 11, 12, + 15, 15, 17, 19, 19, 22, 25, 25, 27, 27, 29, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 30, 30, 30, 30, 32, 31, 31, 29, 29, 29, 30, 31, + 34, 36, 37, 38, 38, 39, 41, 42, 46, 38, 53, 45, 38, 58, 68, 68, + 67, 63, 84, 99, 21, 4, 20, 34, 45, 33, 19, 0, 77, 59, 45, 37, + 37, 35, 29, 25, 26, 24, 19, 19, 18, 20, 21, 21, 23, 24, 25, 25, + 28, 27, 28, 29, 29, 29, 29, 30, 30, 30, 29, 28, 27, 26, 26, 26, + 26, 25, 25, 24, 24, 24, 26, 24, 25, 25, 27, 28, 27, 28, 29, 31, + 30, 30, 30, 31, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, + 30, 30, 30, 30, 29, 29, 28, 28, 29, 29, 28, 28, 27, 27, 27, 27, + 29, 30, 30, 31, 31, 30, 29, 29, 27, 29, 27, 23, 22, 20, 16, 14, + 14, 13, 9, 8, 7, 5, 3, 2, 2, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 2, 1, 2, + 4, 5, 7, 8, 9, 8, 12, 12, 14, 17, 17, 19, 22, 22, 22, 23, + 24, 26, 27, 26, 27, 28, 24, 26, 27, 27, 28, 28, 26, 25, 27, 28, + 26, 24, 23, 22, 21, 20, 18, 17, 14, 13, 12, 10, 8, 8, 9, 7, + 7, 6, 6, 6, 8, 10, 14, 14, 15, 16, 17, 19, 21, 22, 24, 23, + 25, 27, 27, 27, 26, 27, 27, 27, 27, 26, 26, 26, 26, 26, 28, 26, + 25, 24, 25, 25, 27, 28, 31, 32, 33, 36, 36, 38, 40, 43, 49, 53, + 46, 46, 67, 62, 34, 42, 48, 47, 27, 0, 14, 26, 29, 46, 39, 23, + 0, 19, 78, 48, 42, 36, 34, 34, 27, 26, 26, 21, 16, 14, 17, 18, + 18, 18, 20, 20, 21, 21, 23, 23, 24, 26, 25, 25, 25, 25, 26, 26, + 25, 25, 24, 22, 24, 23, 22, 22, 21, 22, 21, 21, 21, 22, 21, 21, + 23, 23, 24, 25, 26, 25, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 25, 25, 25, 25, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 25, 25, 24, 24, 24, 26, + 25, 25, 23, 23, 23, 23, 25, 25, 26, 27, 27, 27, 25, 25, 25, 25, + 23, 19, 18, 17, 15, 13, 11, 10, 9, 7, 6, 5, 3, 3, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 0, 1, 2, 3, 3, 2, 4, 5, 6, 6, 7, 10, 9, 12, 12, + 14, 16, 18, 18, 18, 17, 20, 22, 22, 22, 23, 22, 28, 27, 26, 24, + 24, 23, 22, 25, 24, 22, 21, 20, 20, 18, 18, 16, 15, 14, 12, 11, + 10, 9, 7, 6, 8, 6, 6, 6, 6, 5, 7, 10, 10, 10, 13, 14, + 14, 15, 18, 18, 19, 18, 20, 21, 22, 22, 22, 22, 22, 22, 21, 21, + 21, 21, 21, 21, 23, 23, 22, 21, 21, 22, 24, 22, 26, 26, 29, 31, + 33, 37, 42, 42, 42, 52, 42, 65, 81, 30, 0, 0, 0, 0, 9, 14, + 23, 37, 45, 38, 29, 16, 0, 67, 53, 47, 32, 34, 30, 28, 27, 26, + 23, 17, 13, 11, 13, 15, 15, 14, 16, 17, 18, 18, 18, 18, 19, 20, + 21, 20, 21, 21, 21, 21, 20, 20, 21, 20, 19, 18, 18, 17, 16, 17, + 17, 17, 17, 17, 16, 16, 18, 18, 19, 20, 21, 22, 22, 20, 21, 21, + 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 20, 20, + 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 20, 19, 19, 21, 21, 20, 20, 20, 20, 18, 18, 19, 20, 21, 22, + 22, 21, 21, 20, 19, 20, 17, 16, 14, 13, 12, 10, 7, 6, 5, 4, + 4, 3, 1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 1, 2, 2, 1, 2, 3, 3, 4, + 3, 4, 6, 6, 7, 9, 10, 13, 15, 15, 14, 14, 17, 19, 18, 18, + 19, 18, 17, 17, 19, 19, 20, 18, 16, 17, 18, 18, 17, 16, 17, 15, + 14, 12, 14, 12, 11, 9, 9, 7, 6, 6, 5, 5, 4, 5, 4, 5, + 6, 8, 6, 8, 9, 11, 11, 12, 15, 15, 15, 15, 16, 18, 18, 18, + 18, 19, 19, 19, 18, 17, 17, 17, 17, 17, 20, 19, 18, 17, 18, 18, + 21, 20, 23, 24, 27, 29, 32, 36, 42, 42, 42, 44, 53, 81, 43, 0, + 21, 20, 20, 20, 27, 35, 43, 39, 37, 24, 25, 0, 45, 64, 52, 44, + 41, 28, 25, 24, 25, 23, 18, 12, 9, 7, 9, 11, 12, 12, 12, 12, + 14, 14, 13, 14, 16, 17, 17, 17, 17, 17, 18, 17, 17, 16, 17, 16, + 15, 15, 15, 14, 13, 12, 14, 14, 14, 12, 12, 13, 14, 15, 15, 16, + 17, 18, 17, 17, 17, 17, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, + 17, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 18, 17, 17, 17, 17, 17, 17, 17, 16, 17, 17, 17, 17, 17, + 17, 17, 18, 18, 18, 17, 17, 16, 16, 15, 18, 17, 17, 17, 17, 17, + 15, 15, 16, 16, 17, 18, 18, 18, 17, 17, 15, 15, 14, 11, 11, 10, + 9, 8, 5, 5, 4, 2, 2, 1, 2, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 2, 1, 2, 2, 2, 2, 4, 5, 5, 7, 8, 8, 11, 11, + 12, 13, 14, 14, 14, 14, 15, 14, 15, 15, 15, 14, 14, 14, 13, 15, + 14, 13, 13, 12, 12, 12, 12, 12, 8, 8, 8, 7, 6, 4, 3, 4, + 5, 4, 4, 4, 3, 4, 4, 4, 5, 6, 6, 7, 8, 9, 11, 11, + 11, 12, 12, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 14, 14, + 16, 14, 13, 12, 13, 13, 17, 18, 19, 21, 26, 28, 31, 35, 41, 40, + 34, 46, 60, 45, 1, 21, 34, 33, 33, 26, 37, 42, 34, 32, 29, 12, + 0, 24, 52, 52, 45, 39, 36, 30, 24, 23, 22, 19, 14, 9, 6, 6, + 7, 9, 10, 8, 9, 10, 11, 10, 11, 11, 12, 12, 13, 13, 13, 13, + 14, 13, 13, 13, 12, 11, 11, 11, 9, 9, 10, 10, 10, 10, 10, 10, + 9, 9, 10, 10, 11, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 13, 13, 13, 12, 12, 12, + 12, 12, 12, 12, 11, 11, 11, 11, 13, 13, 13, 14, 14, 14, 13, 13, + 13, 12, 10, 10, 8, 7, 5, 6, 3, 3, 2, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 1, 0, 1, 2, 1, 2, 1, 1, 1, 1, + 3, 4, 3, 5, 6, 8, 10, 9, 10, 11, 11, 10, 11, 12, 12, 12, + 12, 11, 11, 10, 11, 10, 10, 11, 9, 8, 9, 9, 8, 8, 7, 6, + 6, 5, 3, 2, 1, 2, 3, 2, 2, 2, 3, 3, 4, 3, 4, 4, + 4, 5, 5, 7, 8, 9, 9, 9, 10, 9, 11, 9, 11, 9, 9, 9, + 9, 8, 9, 8, 10, 10, 11, 11, 9, 10, 9, 11, 13, 15, 18, 20, + 25, 27, 28, 32, 39, 39, 37, 46, 69, 0, 13, 24, 39, 37, 26, 36, + 42, 37, 27, 17, 2, 0, 58, 61, 55, 42, 36, 37, 37, 31, 23, 19, + 16, 15, 13, 9, 5, 5, 5, 6, 6, 7, 6, 8, 9, 8, 9, 8, + 10, 9, 11, 10, 12, 10, 9, 9, 8, 8, 7, 8, 8, 7, 6, 6, + 7, 6, 6, 6, 6, 6, 7, 6, 7, 7, 8, 9, 9, 10, 11, 9, + 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, + 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, + 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, + 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 11, 9, 12, 10, + 12, 10, 11, 9, 11, 11, 9, 9, 9, 9, 9, 7, 9, 7, 8, 8, + 9, 9, 9, 9, 9, 9, 8, 9, 7, 6, 5, 3, 2, 2, 2, 2, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 2, 2, 1, 3, 4, 5, 6, 7, 9, 8, + 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 7, 6, 5, + 4, 5, 4, 5, 4, 4, 3, 1, 0, 0, 0, 0, 0, 2, 1, 0, + 0, 1, 2, 1, 0, 0, 2, 2, 1, 3, 4, 5, 5, 5, 6, 5, + 8, 6, 7, 5, 6, 5, 5, 4, 5, 5, 6, 6, 7, 6, 7, 7, + 7, 8, 11, 12, 16, 19, 22, 26, 27, 33, 38, 44, 50, 66, 0, 19, + 24, 33, 37, 24, 28, 23, 23, 24, 9, 0, 8, 65, 66, 56, 41, 29, + 29, 34, 38, 31, 23, 17, 10, 11, 14, 10, 4, 2, 3, 3, 3, 3, + 4, 4, 5, 5, 5, 3, 6, 4, 7, 5, 7, 5, 5, 5, 5, 5, + 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 4, 4, 5, + 5, 6, 6, 7, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, + 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, + 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, + 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, + 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 6, 6, 6, 6, 6, 6, + 6, 4, 6, 4, 4, 5, 5, 5, 6, 6, 6, 6, 5, 6, 4, 3, + 3, 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, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 2, + 3, 4, 5, 6, 7, 7, 6, 6, 6, 7, 6, 6, 7, 6, 6, 6, + 6, 6, 6, 5, 4, 3, 5, 4, 3, 3, 4, 3, 2, 1, 0, 0, + 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 2, + 3, 4, 3, 4, 4, 5, 5, 5, 5, 5, 4, 3, 3, 3, 3, 4, + 4, 4, 6, 4, 6, 6, 7, 7, 10, 12, 15, 17, 20, 25, 27, 31, + 38, 45, 53, 6, 0, 11, 20, 1, 2, 4, 4, 6, 0, 5, 42, 73, + 67, 52, 46, 43, 37, 33, 30, 30, 31, 29, 21, 16, 8, 9, 15, 12, + 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, + 4, 4, 3, 3, 3, 3, 4, 4, 3, 3, 3, 2, 3, 3, 2, 3, + 3, 3, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 3, 3, 3, 4, 4, + 3, 3, 5, 4, 3, 2, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 3, 3, 3, 4, + 3, 3, 4, 4, 4, 4, 4, 3, 2, 2, 2, 1, 2, 1, 2, 1, + 2, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, + 0, 0, 1, 1, 1, 0, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, + 3, 2, 1, 1, 1, 2, 2, 2, 3, 2, 4, 4, 4, 7, 9, 11, + 13, 16, 19, 21, 25, 29, 36, 43, 31, 0, 0, 0, 0, 21, 9, 15, + 35, 44, 62, 70, 62, 55, 48, 44, 41, 41, 38, 35, 30, 25, 25, 27, + 17, 13, 8, 9, 13, 10, 0, 0, 3, 4, 4, 3, 3, 3, 4, 4, + 2, 2, 2, 3, 3, 3, 2, 2, 1, 1, 2, 2, 2, 1, 1, 0, + 0, 0, 0, 0, 1, 1, 1, 2, 0, 0, 0, 0, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, + 2, 3, 3, 1, 1, 1, 1, 2, 2, 4, 4, 3, 3, 3, 1, 0, + 0, 1, 1, 2, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 3, 1, 1, 1, 1, 2, 2, 2, 3, 1, + 2, 3, 4, 6, 9, 10, 14, 16, 19, 23, 24, 28, 34, 40, 47, 66, + 73, 76, 69, 64, 74, 59, 68, 54, 47, 48, 41, 41, 44, 37, 35, 34, + 30, 30, 27, 22, 20, 20, 12, 11, 8, 10, 13, 11, 1, 0, 2, 2, + 4, 1, 3, 1, 4, 2, 2, 2, 2, 3, 3, 2, 2, 1, 1, 1, + 1, 1, 2, 1, 1, 0, 1, 1, 0, 0, 0, 0, 2, 1, 0, 0, + 0, 0, 1, 0, 1, 0, 3, 2, 3, 3, 3, 3, 3, 3, 3, 2, + 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, + 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, + 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, + 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 1, 2, 2, 1, 1, + 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 2, + 1, 1, 2, 2, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 1, + 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 2, + 2, 2, 2, 1, 2, 0, 0, 0, 1, 3, 2, 2, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, + 0, 1, 1, 1, 2, 1, 2, 3, 4, 4, 8, 10, 13, 16, 18, 21, + 21, 23, 29, 33, 39, 53, 44, 49, 49, 52, 53, 50, 45, 44, 43, 40, + 33, 32, 39, 41, 40, 35, 29, 27, 28, 21, 11, 5, 6, 7, 12, 14, + 10, 6, 2, 1, 2, 2, 2, 1, 2, 1, 2, 2, 1, 1, 1, 2, + 2, 0, 0, 0, 0, 0, 1, 1, 3, 0, 2, 0, 2, 2, 2, 1, + 1, 2, 3, 2, 1, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 2, + 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 1, + 1, 0, 0, 0, 3, 2, 2, 2, 3, 2, 1, 1, 0, 0, 2, 1, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 4, + 6, 8, 11, 12, 16, 17, 19, 22, 27, 30, 34, 29, 39, 40, 44, 43, + 40, 37, 35, 40, 37, 34, 37, 35, 32, 39, 31, 28, 24, 22, 23, 18, + 10, 6, 4, 6, 9, 11, 6, 3, 0, 0, 1, 2, 1, 1, 1, 1, + 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 2, 1, 2, 4, 6, 6, 10, 11, 14, 16, 18, 22, 28, 28, + 30, 31, 32, 36, 36, 37, 37, 36, 36, 35, 36, 35, 33, 31, 29, 29, + 28, 26, 20, 17, 16, 13, 9, 6, 6, 5, 6, 3, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 5, 5, 8, 8, + 12, 14, 17, 22, 27, 28, 26, 25, 29, 30, 31, 32, 31, 31, 30, 30, + 31, 29, 29, 26, 24, 22, 21, 19, 16, 12, 11, 9, 7, 6, 6, 6, + 4, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 2, 4, 4, 5, 5, 8, 10, 12, 15, 20, 21, 20, 19, 23, 25, + 25, 23, 23, 24, 23, 23, 22, 22, 23, 20, 18, 17, 15, 13, 10, 9, + 7, 7, 5, 4, 4, 4, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 6, 7, 9, 11, + 15, 15, 17, 17, 19, 21, 19, 19, 19, 20, 17, 18, 17, 17, 18, 16, + 14, 13, 11, 10, 8, 7, 7, 5, 4, 5, 2, 3, 1, 2, 1, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, + 2, 2, 4, 6, 6, 9, 12, 14, 15, 14, 17, 17, 17, 15, 15, 15, + 14, 15, 14, 13, 14, 13, 11, 10, 9, 8, 7, 5, 5, 3, 4, 3, + 3, 4, 2, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 1, 2, 3, 5, 5, 8, 9, 10, 11, 12, + 13, 15, 14, 12, 12, 12, 11, 12, 12, 11, 11, 10, 9, 9, 7, 8, + 6, 6, 4, 3, 3, 3, 4, 4, 2, 1, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 3, 2, 2, 4, + 4, 6, 8, 8, 9, 10, 11, 12, 10, 10, 10, 10, 10, 9, 9, 9, + 9, 9, 8, 8, 6, 6, 4, 4, 4, 4, 4, 4, 3, 3, 2, 1, + 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 2, 2, 3, 3, 3, 5, 6, 7, 8, 7, 9, 9, 9, 7, + 8, 8, 6, 7, 7, 6, 8, 7, 6, 5, 5, 4, 3, 3, 3, 2, + 3, 2, 2, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 3, 3, 5, 6, 5, + 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 4, 6, 5, 5, 5, + 3, 3, 2, 3, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 1, 3, 4, 3, 6, 4, 5, 4, 5, 3, 4, 3, 4, 3, 3, 3, + 2, 4, 4, 3, 4, 4, 3, 3, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 0, 1, 2, 3, 2, 4, 3, 1, 1, 2, 1, + 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 3, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, + 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 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, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 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, 1, 1, 1, 1, 1, 1, + 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 2, 2, 2, 1, 3, 2, 3, 3, 3, 3, 1, 1, 1, + 1, 1, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, + 3, 3, 2, 2, 3, 3, 3, 3, 3, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 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, 0, 0, 0, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, + 3, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 2, 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, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 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, 0, 0, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, + 4, 4, 4, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, + 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 4, 4, 4, 4, 5, 5, 5, 5, 4, 4, 5, 5, 5, 5, 4, 4, + 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 2, 1, 2, 1, 2, 3, 4, 4, 4, 5, 5, 5, 5, 5, 6, + 5, 6, 5, 6, 5, 5, 6, 5, 5, 5, 3, 3, 3, 2, 1, 1, + 0, 0, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 2, 3, 3, + 3, 5, 4, 5, 4, 4, 3, 4, 4, 5, 4, 4, 4, 5, 4, 4, + 4, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 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, 1, 2, 1, 2, 1, 3, 3, 3, 3, 4, + 3, 4, 3, 4, 4, 4, 4, 4, 3, 4, 3, 4, 3, 4, 3, 4, + 3, 4, 3, 4, 3, 4, 4, 4, 4, 4, 4, 4, 3, 4, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 4, 5, 6, 6, 5, 5, + 6, 7, 6, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 5, 5, + 5, 5, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 2, 2, 2, 4, 3, 4, 4, 5, 5, 7, 7, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8, 8, 7, + 6, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 3, + 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 7, 8, 8, 8, 8, 9, + 8, 9, 8, 9, 7, 7, 6, 5, 4, 4, 3, 2, 2, 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, 0, 0, 0, 0, 0, 3, 4, 3, 4, + 3, 4, 4, 4, 6, 7, 6, 7, 6, 7, 7, 7, 7, 7, 6, 7, + 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 7, 7, 7, 7, + 7, 7, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 8, + 8, 9, 9, 10, 10, 11, 11, 13, 12, 13, 13, 12, 13, 12, 12, 11, + 11, 10, 10, 10, 9, 10, 10, 11, 11, 12, 13, 13, 13, 13, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 12, 12, 12, 12, + 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 10, 10, 10, + 9, 9, 8, 8, 8, 9, 8, 7, 7, 7, 7, 7, 6, 5, 5, 5, + 5, 5, 4, 4, 3, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 3, 4, 5, 7, + 7, 8, 9, 10, 10, 12, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 13, 13, 11, 10, 10, 8, 7, 6, 6, 6, 4, 3, 2, 2, + 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 3, 4, 5, 5, 7, 7, 8, 9, 10, 10, 11, 12, + 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 11, 10, 9, 7, 6, 4, + 4, 3, 2, 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, 1, 1, + 1, 3, 4, 5, 5, 5, 5, 7, 7, 8, 10, 10, 10, 10, 10, 10, + 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, + 10, 10, 10, 11, 10, 12, 13, 13, 14, 14, 15, 16, 16, 17, 17, 17, + 18, 17, 18, 18, 16, 16, 16, 15, 14, 14, 14, 14, 15, 16, 16, 16, + 18, 18, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 19, 19, 19, 19, + 19, 18, 18, 18, 17, 18, 18, 19, 18, 19, 19, 20, 19, 20, 19, 19, + 18, 18, 16, 16, 16, 15, 14, 14, 12, 12, 13, 12, 12, 12, 11, 11, + 10, 10, 10, 10, 10, 9, 8, 7, 5, 5, 4, 4, 4, 3, 3, 2, + 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, + 4, 5, 5, 8, 9, 11, 11, 13, 15, 16, 16, 17, 18, 20, 21, 21, + 22, 22, 22, 22, 21, 21, 21, 21, 19, 19, 18, 17, 15, 14, 12, 11, + 10, 9, 7, 6, 4, 3, 3, 3, 1, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 3, 3, 4, 5, 8, 9, 11, 12, + 14, 14, 16, 17, 17, 18, 19, 19, 18, 19, 19, 19, 18, 19, 18, 17, + 16, 15, 14, 11, 10, 8, 7, 5, 2, 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, 1, 3, 3, 4, 4, 7, 8, 9, 10, 12, 13, 14, 14, + 17, 17, 17, 17, 17, 17, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 16, 16, 16, 16, 16, 16, 16, 17, 16, 18, 19, 19, 21, 22, + 21, 22, 24, 25, 25, 25, 25, 25, 24, 23, 23, 23, 21, 21, 21, 20, + 21, 21, 21, 22, 23, 24, 24, 24, 26, 26, 27, 27, 27, 27, 28, 28, + 28, 27, 27, 27, 27, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 27, 28, 28, 28, 27, 27, 26, 26, 25, 25, 24, 23, 22, 21, 20, 20, + 19, 18, 18, 18, 18, 17, 16, 16, 16, 16, 15, 14, 13, 12, 11, 9, + 8, 8, 6, 5, 4, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 3, 3, 4, 6, 8, 9, 11, 14, 16, 17, 18, 21, 21, + 22, 24, 25, 27, 28, 29, 29, 30, 29, 29, 29, 29, 29, 28, 26, 26, + 24, 23, 22, 20, 18, 17, 14, 12, 10, 9, 7, 6, 5, 4, 2, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3, 4, + 5, 8, 9, 12, 14, 15, 20, 21, 22, 23, 24, 26, 25, 26, 27, 27, + 27, 28, 27, 27, 27, 26, 22, 20, 18, 16, 14, 11, 9, 7, 3, 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, 2, 3, 5, 6, 6, 10, 12, + 13, 15, 18, 19, 21, 23, 24, 24, 24, 25, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, + 24, 25, 24, 25, 24, 24, 24, 24, 24, 24, 23, 24, 23, 24, 23, 24, + 23, 24, 25, 27, 28, 30, 31, 33, 34, 35, 36, 36, 35, 35, 34, 34, + 33, 32, 32, 31, 31, 31, 30, 32, 33, 33, 33, 34, 35, 35, 37, 38, + 38, 38, 39, 39, 39, 39, 39, 39, 39, 38, 38, 38, 37, 37, 36, 36, + 36, 36, 36, 37, 37, 37, 38, 38, 38, 38, 38, 37, 37, 36, 35, 34, + 33, 32, 31, 31, 29, 28, 26, 26, 25, 25, 24, 24, 24, 24, 23, 22, + 22, 20, 18, 17, 16, 15, 11, 10, 9, 7, 5, 4, 3, 2, 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, 2, 3, 4, 7, 10, 10, 13, 15, 18, + 20, 21, 24, 26, 27, 30, 32, 34, 35, 37, 39, 40, 40, 41, 40, 40, + 40, 40, 39, 38, 37, 35, 33, 33, 32, 30, 26, 24, 21, 19, 17, 14, + 11, 10, 8, 7, 6, 4, 3, 2, 2, 2, 1, 0, 0, 0, 1, 1, + 1, 1, 3, 4, 4, 6, 7, 10, 12, 16, 19, 21, 27, 29, 33, 34, + 35, 36, 37, 38, 38, 38, 37, 38, 37, 36, 35, 32, 30, 28, 25, 21, + 18, 15, 12, 9, 5, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 3, 5, + 5, 8, 11, 13, 16, 17, 20, 22, 25, 26, 28, 31, 32, 33, 35, 35, + 34, 34, 35, 35, 34, 35, 34, 34, 33, 34, 33, 34, 33, 34, 33, 34, + 33, 34, 33, 34, 34, 35, 34, 35, 34, 35, 34, 34, 34, 34, 33, 33, + 32, 33, 32, 33, 31, 32, 31, 33, 34, 37, 39, 41, 42, 43, 45, 46, + 47, 48, 48, 47, 46, 45, 44, 42, 42, 41, 41, 42, 40, 41, 42, 43, + 44, 46, 46, 48, 48, 49, 50, 50, 51, 51, 51, 51, 52, 52, 51, 51, + 50, 50, 50, 50, 48, 48, 48, 48, 48, 48, 49, 49, 50, 50, 50, 50, + 50, 49, 48, 48, 47, 45, 43, 42, 42, 41, 39, 38, 39, 37, 36, 35, + 35, 35, 34, 33, 33, 32, 32, 29, 27, 24, 22, 20, 17, 15, 11, 9, + 6, 5, 3, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 3, 4, 4, 6, + 11, 14, 16, 19, 23, 26, 28, 31, 34, 36, 39, 41, 43, 47, 48, 50, + 51, 53, 54, 55, 54, 54, 54, 54, 53, 51, 50, 48, 46, 45, 44, 41, + 36, 33, 30, 27, 25, 22, 17, 14, 12, 11, 8, 7, 5, 4, 2, 2, + 0, 0, 0, 0, 1, 1, 1, 3, 4, 5, 5, 7, 10, 13, 16, 21, + 26, 29, 34, 38, 42, 46, 46, 47, 48, 50, 51, 50, 50, 51, 50, 49, + 47, 45, 40, 37, 32, 28, 24, 20, 16, 13, 9, 6, 5, 2, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 2, 5, 7, 8, 11, 14, 17, 22, 24, 26, 30, 34, 37, + 39, 41, 43, 45, 46, 46, 46, 46, 47, 48, 46, 47, 46, 47, 45, 46, + 45, 46, 45, 46, 45, 46, 45, 46, 45, 46, 46, 48, 47, 47, 47, 47, + 47, 46, 46, 46, 45, 45, 44, 43, 43, 43, 44, 44, 44, 46, 47, 50, + 52, 54, 55, 57, 58, 61, 61, 61, 61, 61, 60, 58, 57, 56, 56, 54, + 54, 55, 54, 54, 55, 57, 58, 59, 59, 61, 62, 64, 64, 65, 66, 66, + 66, 66, 66, 66, 66, 66, 65, 65, 64, 64, 64, 63, 62, 63, 63, 64, + 64, 65, 65, 66, 65, 66, 65, 65, 63, 63, 61, 59, 57, 56, 55, 54, + 53, 51, 50, 49, 48, 47, 47, 47, 45, 45, 44, 44, 41, 40, 37, 34, + 31, 27, 23, 19, 16, 12, 9, 6, 4, 3, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 3, + 2, 4, 5, 7, 10, 13, 17, 21, 23, 27, 32, 36, 39, 43, 46, 50, + 53, 55, 58, 61, 63, 66, 67, 69, 70, 71, 70, 71, 70, 70, 69, 67, + 67, 64, 62, 59, 57, 54, 48, 44, 41, 38, 33, 28, 25, 22, 18, 15, + 13, 12, 9, 7, 4, 3, 1, 1, 1, 2, 2, 2, 3, 3, 5, 7, + 7, 9, 13, 18, 24, 29, 35, 40, 44, 49, 54, 58, 60, 61, 64, 65, + 66, 66, 66, 67, 65, 64, 61, 58, 52, 48, 43, 37, 32, 25, 20, 17, + 14, 11, 8, 5, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 1, 4, 8, 10, 12, 16, 19, 23, + 28, 31, 35, 40, 44, 48, 52, 55, 57, 59, 60, 62, 61, 61, 62, 62, + 62, 62, 62, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 62, 61, 62, 62, 61, 61, 61, 61, 61, 59, 59, 59, 58, 58, 58, + 58, 58, 58, 60, 62, 63, 67, 69, 72, 74, 75, 77, 78, 78, 78, 77, + 76, 74, 73, 72, 72, 70, 70, 70, 70, 70, 71, 73, 74, 75, 76, 77, + 80, 81, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 81, + 81, 81, 80, 81, 80, 81, 81, 82, 82, 83, 82, 83, 82, 82, 80, 80, + 78, 76, 74, 72, 70, 69, 68, 66, 66, 65, 62, 62, 62, 61, 60, 59, + 58, 57, 55, 53, 49, 45, 40, 37, 31, 26, 22, 17, 12, 10, 7, 4, + 2, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 0, 1, 3, 4, 5, 7, 11, 13, 16, 19, 24, 28, 32, 37, + 43, 47, 51, 55, 59, 62, 69, 72, 74, 77, 80, 83, 84, 86, 87, 87, + 88, 88, 87, 86, 85, 85, 84, 82, 78, 76, 72, 68, 63, 59, 54, 50, + 44, 39, 35, 31, 26, 23, 19, 17, 14, 11, 8, 5, 4, 2, 2, 2, + 2, 2, 3, 4, 7, 9, 11, 14, 18, 24, 30, 38, 46, 51, 57, 63, + 69, 73, 75, 78, 80, 83, 83, 83, 83, 83, 82, 79, 75, 71, 67, 61, + 54, 47, 40, 35, 27, 22, 17, 14, 10, 7, 4, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 3, 6, + 10, 13, 16, 20, 24, 29, 36, 41, 47, 52, 57, 62, 67, 71, 73, 75, + 77, 77, 78, 78, 78, 79, 79, 78, 78, 78, 78, 78, 77, 77, 77, 77, + 77, 77, 78, 78, 78, 78, 78, 79, 79, 79, 78, 78, 78, 78, 78, 77, + 77, 77, 75, 75, 74, 74, 75, 75, 75, 77, 78, 80, 84, 86, 88, 90, + 92, 94, 95, 96, 95, 95, 93, 92, 91, 90, 88, 88, 87, 87, 86, 87, + 88, 89, 92, 93, 93, 95, 98, 99, 100, 101, 101, 101, 102, 102, 102, 101, + 101, 101, 100, 100, 100, 100, 99, 99, 99, 99, 99, 100, 100, 100, 101, 101, + 101, 101, 101, 100, 99, 98, 95, 93, 90, 89, 88, 86, 84, 83, 83, 82, + 80, 79, 78, 78, 77, 76, 74, 72, 69, 66, 63, 58, 53, 47, 40, 35, + 28, 22, 17, 13, 9, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 4, 6, 9, 12, 15, 18, + 21, 26, 32, 36, 44, 49, 55, 61, 65, 69, 74, 79, 86, 90, 93, 96, + 99, 102, 104, 106, 107, 107, 107, 107, 106, 105, 104, 103, 102, 99, 97, 93, + 90, 85, 80, 76, 69, 64, 58, 52, 47, 42, 37, 32, 25, 22, 17, 15, + 11, 9, 5, 5, 2, 2, 2, 2, 3, 5, 8, 11, 14, 19, 24, 30, + 38, 46, 55, 63, 71, 78, 85, 90, 94, 96, 98, 101, 101, 102, 101, 100, + 99, 96, 91, 86, 82, 76, 66, 59, 51, 43, 35, 30, 21, 17, 13, 9, + 6, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 4, 8, 12, 16, 20, 25, 30, 35, 46, 53, 59, 66, + 71, 77, 83, 87, 90, 93, 94, 95, 97, 97, 97, 98, 96, 96, 96, 96, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 98, 98, 97, 97, + 97, 97, 96, 96, 96, 95, 95, 94, 94, 93, 92, 91, 92, 93, 93, 94, + 97, 100, 103, 105, 107, 109, 112, 113, 115, 115, 116, 115, 112, 111, 110, 109, + 107, 107, 106, 106, 106, 106, 108, 109, 111, 112, 113, 114, 118, 119, 120, 120, + 121, 121, 121, 121, 121, 121, 121, 120, 120, 120, 119, 119, 119, 119, 119, 119, + 119, 119, 120, 120, 121, 121, 121, 121, 121, 120, 119, 118, 114, 113, 110, 108, + 107, 106, 103, 102, 102, 100, 98, 98, 97, 97, 95, 94, 92, 90, 87, 83, + 78, 72, 66, 59, 50, 42, 35, 27, 23, 18, 13, 9, 5, 3, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 4, + 6, 8, 12, 16, 19, 24, 28, 35, 41, 46, 54, 61, 67, 73, 79, 84, + 89, 94, 103, 105, 109, 113, 115, 118, 121, 123, 125, 125, 126, 126, 125, 124, + 122, 122, 118, 116, 113, 110, 107, 102, 95, 91, 84, 78, 70, 64, 58, 52, + 47, 42, 32, 27, 23, 19, 14, 11, 9, 6, 4, 3, 3, 3, 4, 6, + 9, 13, 19, 23, 30, 38, 46, 56, 67, 75, 84, 92, 98, 105, 109, 112, + 115, 117, 120, 119, 119, 118, 116, 112, 106, 102, 95, 87, 77, 68, 59, 50, + 42, 34, 25, 21, 16, 12, 8, 6, 4, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 7, 11, 14, 19, 24, 30, + 36, 44, 54, 63, 71, 78, 84, 91, 97, 102, 105, 109, 111, 113, 115, 114, + 114, 115, 114, 113, 113, 113, 113, 112, 112, 112, 112, 112, 112, 112, 113, 113, + 113, 113, 114, 115, 115, 115, 115, 115, 114, 113, 113, 113, 112, 112, 111, 110, + 109, 108, 109, 109, 110, 111, 114, 116, 119, 121, 125, 127, 130, 131, 133, 134, + 134, 134, 131, 130, 129, 128, 126, 125, 124, 124, 124, 125, 127, 128, 130, 131, + 132, 133, 136, 137, 137, 139, 138, 140, 139, 140, 139, 139, 138, 139, 137, 138, + 137, 137, 136, 137, 136, 137, 136, 138, 137, 139, 138, 139, 138, 139, 138, 138, + 136, 136, 134, 131, 128, 127, 126, 125, 122, 120, 118, 118, 116, 115, 115, 114, + 112, 111, 109, 106, 102, 97, 92, 85, 77, 70, 61, 53, 42, 35, 29, 23, + 16, 11, 6, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 6, 8, 12, 17, 22, 26, 32, 38, 45, 52, 58, + 67, 73, 81, 87, 94, 100, 105, 111, 118, 123, 127, 130, 133, 136, 138, 141, + 143, 144, 144, 144, 143, 142, 140, 139, 137, 134, 130, 127, 122, 117, 111, 107, + 99, 93, 84, 77, 71, 65, 57, 51, 41, 35, 29, 24, 19, 15, 11, 10, + 6, 6, 5, 5, 6, 8, 11, 15, 22, 29, 37, 45, 54, 66, 77, 87, + 97, 104, 112, 120, 125, 129, 132, 135, 137, 137, 136, 135, 133, 129, 123, 117, + 108, 100, 88, 78, 68, 58, 49, 40, 30, 24, 20, 15, 10, 8, 4, 3, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 2, 4, 5, + 9, 13, 17, 23, 28, 35, 44, 51, 65, 73, 82, 91, 98, 106, 112, 118, + 123, 127, 129, 132, 132, 132, 132, 133, 133, 132, 132, 132, 132, 131, 131, 131, + 131, 131, 131, 131, 132, 132, 132, 132, 133, 133, 133, 134, 133, 132, 132, 132, + 132, 131, 130, 129, 128, 127, 127, 126, 126, 126, 128, 129, 131, 134, 137, 139, + 143, 145, 148, 149, 151, 152, 152, 152, 149, 149, 147, 146, 144, 144, 142, 142, + 143, 143, 145, 146, 148, 150, 150, 152, 154, 155, 155, 157, 156, 157, 157, 158, + 156, 157, 156, 156, 155, 156, 154, 155, 154, 155, 154, 155, 154, 156, 155, 156, + 156, 157, 156, 157, 156, 156, 154, 154, 152, 149, 148, 146, 144, 143, 141, 139, + 137, 136, 134, 134, 132, 132, 130, 129, 127, 123, 118, 113, 107, 99, 89, 81, + 71, 62, 52, 42, 34, 28, 21, 14, 8, 4, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 8, 11, 16, 21, 27, + 33, 41, 47, 55, 63, 69, 80, 88, 96, 105, 112, 118, 123, 128, 136, 140, + 144, 147, 152, 156, 158, 161, 160, 159, 158, 159, 158, 158, 158, 156, 156, 153, + 148, 145, 140, 135, 129, 123, 115, 109, 99, 92, 85, 78, 69, 63, 51, 45, + 39, 32, 26, 21, 16, 14, 8, 7, 5, 6, 8, 11, 15, 19, 27, 34, + 44, 53, 61, 72, 86, 96, 111, 118, 128, 134, 141, 146, 149, 153, 154, 154, + 152, 151, 148, 144, 136, 132, 124, 114, 100, 88, 78, 67, 57, 46, 34, 29, + 23, 17, 12, 8, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 0, 1, 3, 4, 6, 9, 14, 19, 26, 33, 42, 51, 59, 75, 85, + 95, 105, 113, 121, 129, 135, 141, 145, 148, 151, 152, 151, 149, 149, 151, 151, + 152, 152, 151, 149, 151, 151, 149, 148, 149, 150, 152, 152, 151, 151, 150, 152, + 152, 151, 150, 150, 151, 149, 150, 149, 148, 147, 147, 146, 144, 144, 143, 143, + 145, 147, 148, 152, 155, 157, 160, 161, 162, 162, 163, 164, 165, 166, 165, 165, + 164, 162, 160, 159, 160, 161, 160, 161, 162, 163, 165, 167, 169, 169, 171, 170, + 172, 172, 172, 171, 168, 167, 166, 168, 173, 174, 172, 171, 169, 169, 170, 170, + 169, 169, 170, 171, 171, 171, 172, 173, 172, 172, 170, 168, 166, 166, 168, 166, + 164, 162, 162, 161, 156, 155, 155, 155, 154, 153, 152, 151, 150, 148, 144, 140, + 134, 128, 123, 113, 103, 93, 80, 71, 58, 47, 40, 32, 24, 17, 8, 5, + 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 3, 6, + 10, 12, 17, 22, 26, 33, 42, 49, 60, 69, 78, 85, 93, 106, 119, 124, + 129, 137, 141, 144, 156, 159, 161, 165, 171, 175, 179, 180, 177, 176, 174, 171, + 172, 174, 177, 177, 176, 171, 169, 166, 159, 155, 152, 140, 134, 125, 117, 108, + 100, 92, 86, 77, 66, 57, 48, 42, 36, 29, 23, 17, 13, 8, 6, 8, + 13, 15, 19, 24, 33, 43, 55, 64, 72, 82, 95, 109, 122, 136, 136, 148, + 152, 166, 163, 172, 165, 174, 169, 169, 162, 160, 150, 142, 141, 129, 115, 101, + 87, 75, 64, 53, 42, 33, 25, 20, 15, 10, 6, 5, 3, 3, 2, 2, + 2, 2, 2, 2, 1, 1, 2, 3, 3, 5, 7, 9, 12, 16, 23, 31, + 40, 49, 60, 72, 81, 96, 108, 119, 136, 138, 144, 154, 162, 166, 170, 171, + 171, 170, 165, 164, 166, 170, 175, 169, 171, 163, 172, 170, 161, 171, 166, 161, + 177, 169, 169, 170, 168, 169, 170, 169, 167, 166, 167, 168, 167, 162, 170, 166, + 169, 167, 158, 158, 164, 160, 164, 166, 171, 160, 180, 171, 181, 174, 177, 177, + 166, 168, 177, 176, 182, 177, 184, 178, 178, 179, 174, 181, 180, 179, 184, 181, + 182, 181, 193, 185, 190, 187, 186, 187, 188, 184, 176, 171, 175, 164, 199, 194, + 188, 188, 184, 183, 184, 185, 183, 179, 189, 187, 184, 186, 188, 188, 192, 183, + 186, 174, 173, 180, 184, 183, 179, 179, 182, 180, 167, 175, 174, 173, 173, 173, + 173, 171, 169, 167, 162, 154, 150, 142, 137, 128, 115, 105, 93, 77, 63, 54, + 45, 37, 28, 19, 13, 8, 5, 3, 2, 1, 0, 0, 0, 1, 2, 2, + 1, 2, 3, 3, 5, 9, 13, 17, 22, 27, 35, 41, 52, 62, 72, 82, + 92, 99, 111, 118, 132, 144, 152, 155, 160, 165, 165, 170, 174, 176, 176, 177, + 180, 182, 181, 180, 178, 180, 177, 174, 175, 179, 175, 176, 177, 175, 170, 168, + 164, 158, 153, 145, 135, 132, 110, 112, 101, 86, 77, 67, 57, 51, 44, 37, + 30, 24, 19, 13, 11, 14, 17, 20, 25, 31, 39, 49, 62, 73, 81, 92, + 105, 118, 134, 145, 153, 163, 164, 158, 174, 170, 178, 179, 169, 170, 167, 165, + 148, 141, 151, 142, 126, 112, 97, 84, 72, 59, 48, 39, 30, 24, 20, 15, + 10, 9, 7, 7, 6, 7, 7, 7, 6, 5, 4, 4, 5, 6, 6, 9, + 11, 13, 16, 20, 28, 37, 46, 55, 67, 79, 99, 101, 119, 128, 132, 156, + 158, 157, 165, 169, 173, 176, 178, 176, 171, 169, 178, 179, 178, 179, 173, 179, + 182, 173, 185, 165, 182, 191, 187, 181, 180, 169, 175, 174, 173, 174, 174, 173, + 174, 173, 176, 177, 168, 168, 171, 179, 173, 182, 177, 177, 176, 175, 181, 182, + 186, 184, 181, 176, 159, 120, 87, 96, 130, 148, 175, 189, 187, 197, 196, 186, + 197, 198, 196, 189, 194, 187, 177, 178, 180, 190, 181, 184, 190, 190, 179, 156, + 126, 106, 80, 108, 191, 208, 204, 200, 196, 195, 198, 191, 180, 185, 176, 185, + 186, 180, 186, 188, 178, 147, 124, 93, 87, 135, 190, 199, 195, 190, 198, 194, + 185, 175, 178, 178, 179, 179, 177, 175, 174, 171, 167, 163, 160, 154, 149, 141, + 128, 118, 102, 86, 71, 61, 51, 41, 32, 22, 14, 10, 6, 4, 2, 1, + 0, 0, 0, 1, 2, 2, 2, 2, 3, 3, 7, 12, 17, 21, 28, 35, + 44, 52, 64, 76, 87, 97, 108, 116, 125, 137, 148, 155, 162, 169, 173, 174, + 184, 181, 172, 165, 151, 133, 112, 97, 86, 77, 71, 71, 74, 81, 101, 120, + 131, 158, 179, 181, 181, 186, 184, 180, 173, 158, 151, 152, 128, 124, 116, 104, + 88, 78, 66, 58, 51, 44, 37, 31, 24, 19, 17, 18, 22, 24, 29, 34, + 41, 51, 66, 79, 89, 101, 116, 127, 136, 141, 111, 115, 112, 115, 124, 122, + 121, 124, 121, 130, 124, 110, 83, 78, 155, 150, 136, 123, 107, 93, 80, 67, + 55, 45, 36, 30, 24, 19, 15, 13, 12, 11, 11, 10, 10, 10, 9, 9, + 7, 7, 8, 10, 10, 12, 14, 17, 21, 25, 32, 42, 51, 63, 74, 86, + 99, 107, 131, 149, 142, 152, 147, 156, 159, 162, 167, 171, 175, 175, 171, 170, + 168, 169, 169, 171, 168, 174, 167, 187, 192, 201, 209, 189, 190, 190, 176, 171, + 174, 171, 168, 168, 173, 174, 171, 168, 165, 168, 164, 168, 165, 166, 182, 180, + 190, 190, 189, 187, 192, 198, 194, 195, 182, 96, 35, 33, 39, 31, 29, 35, + 71, 163, 200, 202, 206, 208, 201, 203, 198, 203, 181, 75, 36, 27, 34, 32, + 27, 27, 31, 35, 39, 37, 32, 29, 37, 90, 202, 222, 217, 211, 208, 206, + 144, 64, 46, 27, 34, 32, 28, 34, 30, 37, 33, 26, 36, 32, 42, 140, + 202, 212, 207, 207, 209, 190, 200, 184, 177, 174, 174, 173, 170, 168, 167, 166, + 167, 161, 155, 147, 149, 151, 135, 124, 112, 96, 79, 67, 57, 45, 33, 23, + 15, 10, 6, 4, 2, 1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 5, + 10, 16, 21, 27, 35, 42, 52, 62, 76, 88, 101, 113, 124, 132, 138, 150, + 161, 169, 175, 180, 181, 181, 163, 132, 87, 52, 34, 31, 33, 35, 33, 34, + 36, 39, 35, 30, 30, 33, 31, 37, 53, 89, 141, 174, 181, 184, 180, 178, + 171, 160, 155, 141, 126, 114, 104, 91, 78, 67, 59, 50, 44, 40, 32, 27, + 24, 24, 26, 30, 35, 40, 47, 56, 70, 84, 98, 112, 128, 138, 157, 160, + 92, 50, 40, 41, 29, 35, 41, 38, 30, 34, 35, 40, 45, 77, 158, 157, + 145, 132, 117, 103, 88, 75, 61, 52, 43, 37, 31, 25, 21, 20, 18, 18, + 18, 16, 16, 15, 14, 14, 13, 14, 14, 15, 15, 18, 19, 22, 27, 31, + 39, 49, 59, 70, 82, 95, 115, 136, 134, 141, 146, 66, 57, 36, 32, 32, + 35, 40, 43, 43, 40, 40, 37, 36, 44, 38, 44, 46, 63, 133, 205, 208, + 206, 209, 207, 130, 55, 45, 43, 40, 36, 36, 40, 41, 40, 38, 38, 39, + 41, 38, 40, 52, 110, 199, 200, 199, 199, 201, 202, 203, 203, 184, 84, 38, + 17, 27, 32, 27, 26, 35, 31, 53, 181, 210, 217, 222, 210, 218, 209, 215, + 200, 175, 50, 34, 22, 15, 25, 23, 23, 24, 28, 32, 34, 36, 34, 89, + 206, 222, 221, 223, 224, 220, 212, 144, 42, 38, 29, 20, 27, 26, 31, 27, + 19, 17, 26, 30, 31, 140, 212, 222, 215, 211, 223, 213, 182, 56, 47, 42, + 41, 39, 35, 34, 34, 35, 37, 37, 40, 53, 94, 143, 144, 135, 121, 103, + 85, 73, 59, 46, 33, 22, 16, 11, 7, 5, 3, 1, 0, 0, 0, 1, + 1, 1, 3, 4, 5, 7, 13, 20, 26, 32, 41, 51, 62, 73, 88, 104, + 117, 129, 141, 148, 159, 160, 167, 180, 194, 184, 135, 83, 35, 33, 33, 32, + 29, 26, 29, 31, 36, 35, 33, 30, 29, 31, 33, 33, 29, 31, 34, 35, + 29, 34, 80, 145, 176, 186, 183, 178, 165, 152, 142, 141, 120, 107, 91, 79, + 68, 59, 53, 49, 43, 38, 33, 33, 35, 37, 44, 49, 56, 65, 79, 94, + 109, 125, 142, 152, 163, 171, 143, 62, 39, 28, 30, 35, 32, 31, 29, 32, + 28, 29, 32, 74, 164, 165, 156, 145, 128, 114, 98, 84, 71, 61, 52, 46, + 40, 34, 31, 29, 27, 27, 26, 26, 24, 24, 23, 23, 21, 21, 23, 23, + 23, 26, 28, 31, 35, 39, 48, 57, 67, 78, 90, 104, 121, 132, 143, 166, + 159, 151, 64, 41, 33, 30, 32, 35, 36, 36, 35, 35, 37, 35, 39, 31, + 38, 52, 141, 211, 217, 228, 225, 222, 226, 205, 149, 52, 38, 34, 36, 36, + 33, 33, 36, 38, 34, 41, 23, 33, 48, 85, 192, 203, 207, 208, 210, 210, + 211, 208, 208, 132, 38, 31, 34, 32, 37, 41, 38, 30, 36, 36, 56, 203, + 214, 230, 230, 225, 220, 217, 223, 210, 159, 39, 32, 38, 23, 26, 31, 34, + 38, 38, 34, 33, 31, 87, 210, 225, 230, 233, 232, 227, 226, 211, 108, 40, + 29, 27, 35, 30, 33, 28, 30, 30, 27, 37, 42, 152, 217, 228, 233, 223, + 217, 218, 208, 53, 43, 36, 36, 34, 29, 28, 29, 31, 35, 37, 34, 41, + 86, 155, 156, 139, 127, 110, 92, 77, 63, 48, 33, 22, 16, 12, 7, 5, + 3, 1, 0, 0, 0, 0, 1, 2, 4, 6, 7, 11, 17, 24, 31, 40, + 50, 60, 71, 84, 101, 116, 130, 141, 153, 159, 167, 173, 188, 185, 142, 79, + 41, 35, 29, 27, 28, 29, 30, 32, 36, 39, 39, 39, 38, 36, 36, 38, + 36, 32, 37, 31, 22, 23, 28, 29, 31, 43, 79, 153, 177, 177, 171, 177, + 155, 155, 136, 122, 104, 90, 78, 68, 62, 60, 53, 48, 43, 41, 42, 46, + 51, 57, 65, 75, 88, 103, 119, 135, 152, 163, 171, 176, 182, 115, 31, 29, + 35, 32, 36, 34, 32, 34, 32, 31, 30, 76, 170, 175, 167, 155, 138, 122, + 106, 90, 79, 71, 61, 55, 49, 43, 40, 39, 37, 36, 34, 33, 33, 31, + 31, 30, 29, 30, 30, 31, 32, 35, 37, 39, 44, 49, 56, 66, 75, 85, + 98, 111, 126, 147, 156, 164, 179, 172, 141, 45, 34, 27, 31, 34, 36, 35, + 33, 34, 36, 37, 32, 34, 31, 87, 210, 229, 226, 228, 226, 230, 229, 229, + 206, 99, 35, 28, 35, 36, 34, 33, 37, 39, 33, 29, 35, 42, 50, 172, + 213, 212, 211, 217, 218, 214, 218, 216, 196, 70, 35, 27, 32, 40, 49, 48, + 43, 43, 34, 38, 35, 123, 226, 237, 231, 231, 229, 229, 233, 231, 211, 86, + 37, 21, 34, 36, 40, 40, 39, 40, 36, 35, 32, 91, 222, 234, 239, 239, + 236, 234, 234, 224, 189, 41, 35, 36, 36, 40, 42, 36, 40, 37, 28, 35, + 47, 152, 234, 225, 231, 240, 231, 220, 203, 45, 41, 34, 35, 33, 29, 27, + 30, 32, 29, 35, 33, 37, 82, 160, 161, 146, 133, 116, 98, 82, 66, 50, + 35, 23, 17, 13, 8, 5, 3, 1, 0, 0, 0, 0, 1, 2, 5, 7, + 10, 15, 22, 30, 39, 47, 59, 70, 83, 97, 115, 130, 141, 152, 161, 170, + 173, 185, 156, 92, 43, 35, 35, 29, 35, 35, 36, 40, 45, 46, 39, 34, + 33, 32, 33, 35, 38, 40, 40, 42, 42, 47, 41, 30, 26, 34, 34, 25, + 27, 26, 101, 176, 177, 168, 173, 157, 151, 139, 120, 104, 91, 81, 74, 71, + 66, 60, 54, 52, 52, 55, 62, 69, 77, 85, 98, 111, 127, 143, 160, 172, + 184, 188, 191, 167, 31, 33, 33, 35, 42, 41, 40, 38, 35, 31, 25, 74, + 178, 183, 177, 165, 147, 130, 114, 100, 90, 82, 72, 66, 61, 56, 52, 50, + 48, 48, 46, 45, 45, 43, 42, 40, 40, 40, 40, 41, 44, 46, 48, 50, + 55, 59, 67, 75, 86, 95, 107, 120, 133, 156, 168, 176, 181, 193, 187, 101, + 32, 25, 32, 36, 38, 38, 35, 36, 41, 43, 35, 38, 40, 158, 235, 233, + 239, 239, 235, 238, 241, 231, 232, 184, 33, 22, 30, 37, 40, 40, 38, 39, + 46, 28, 38, 61, 179, 199, 203, 214, 215, 220, 220, 219, 222, 216, 169, 40, + 34, 37, 42, 44, 52, 57, 51, 43, 37, 30, 32, 91, 223, 233, 243, 238, + 241, 251, 233, 239, 236, 156, 26, 32, 33, 41, 48, 50, 49, 47, 37, 32, + 27, 87, 224, 234, 240, 240, 240, 243, 240, 238, 202, 97, 34, 30, 41, 40, + 48, 45, 44, 39, 36, 34, 45, 149, 229, 239, 242, 239, 236, 235, 211, 50, + 36, 29, 36, 38, 36, 36, 38, 38, 35, 35, 32, 37, 82, 163, 162, 150, + 139, 120, 101, 86, 69, 54, 36, 24, 18, 13, 8, 5, 3, 1, 0, 0, + 0, 0, 1, 3, 5, 8, 12, 17, 26, 35, 44, 54, 67, 80, 96, 110, + 126, 142, 153, 163, 171, 176, 186, 129, 65, 35, 30, 31, 32, 32, 40, 45, + 49, 49, 44, 38, 33, 31, 33, 30, 29, 32, 33, 30, 34, 42, 53, 45, + 43, 45, 39, 36, 36, 32, 31, 28, 31, 50, 161, 179, 178, 173, 166, 155, + 136, 121, 106, 96, 89, 84, 79, 73, 67, 65, 65, 68, 75, 81, 88, 96, + 108, 120, 134, 151, 167, 180, 189, 198, 200, 188, 45, 24, 28, 43, 48, 50, + 50, 43, 35, 30, 27, 81, 185, 191, 185, 175, 156, 140, 125, 112, 103, 94, + 86, 79, 74, 69, 65, 64, 62, 61, 61, 58, 57, 56, 53, 53, 52, 52, + 54, 55, 55, 57, 60, 63, 68, 72, 79, 88, 97, 107, 117, 129, 144, 158, + 169, 187, 197, 208, 199, 159, 32, 25, 33, 40, 45, 44, 41, 42, 43, 41, + 33, 25, 45, 215, 225, 249, 243, 242, 240, 238, 242, 232, 236, 215, 32, 19, + 30, 39, 45, 46, 42, 41, 30, 44, 43, 152, 209, 211, 219, 209, 218, 217, + 217, 225, 224, 210, 146, 44, 36, 35, 40, 49, 59, 61, 53, 49, 42, 28, + 22, 39, 220, 240, 239, 239, 246, 246, 251, 243, 234, 201, 35, 19, 30, 40, + 51, 55, 53, 49, 37, 30, 32, 90, 229, 238, 245, 244, 242, 244, 243, 229, + 227, 138, 38, 29, 43, 38, 46, 52, 49, 44, 41, 27, 38, 151, 227, 245, + 246, 244, 242, 235, 215, 85, 34, 29, 39, 45, 46, 46, 48, 49, 40, 31, + 24, 33, 85, 169, 165, 155, 141, 123, 103, 87, 70, 54, 37, 25, 19, 14, + 8, 5, 3, 1, 0, 0, 0, 1, 2, 3, 6, 11, 16, 24, 31, 41, + 55, 66, 76, 90, 113, 114, 138, 154, 165, 177, 180, 182, 109, 42, 30, 37, + 28, 34, 41, 39, 41, 57, 42, 44, 36, 33, 27, 29, 29, 36, 37, 30, + 23, 30, 37, 34, 42, 60, 51, 53, 43, 47, 45, 44, 40, 38, 35, 33, + 55, 162, 172, 186, 179, 161, 155, 136, 122, 109, 104, 94, 91, 87, 82, 80, + 79, 82, 88, 94, 101, 112, 117, 126, 145, 156, 166, 186, 192, 207, 208, 200, + 81, 25, 27, 41, 47, 56, 54, 47, 39, 32, 28, 82, 193, 201, 192, 179, + 165, 149, 133, 123, 113, 107, 100, 93, 88, 84, 81, 79, 76, 76, 74, 74, + 72, 71, 68, 68, 66, 66, 69, 70, 70, 72, 75, 77, 82, 87, 93, 102, + 110, 118, 128, 138, 151, 162, 178, 192, 205, 212, 214, 201, 37, 28, 32, 40, + 45, 52, 57, 49, 44, 36, 28, 30, 45, 214, 235, 244, 246, 247, 239, 245, + 237, 233, 230, 141, 34, 25, 37, 41, 49, 50, 41, 33, 35, 48, 145, 209, + 213, 217, 210, 215, 214, 212, 219, 223, 226, 207, 147, 45, 34, 38, 38, 46, + 63, 62, 48, 51, 44, 24, 34, 30, 220, 238, 241, 240, 246, 246, 246, 242, + 242, 218, 31, 20, 28, 38, 47, 55, 53, 43, 35, 30, 30, 94, 223, 243, + 245, 246, 246, 245, 244, 239, 229, 160, 42, 33, 35, 40, 47, 57, 51, 46, + 36, 35, 35, 149, 228, 252, 247, 248, 249, 241, 226, 99, 32, 27, 37, 45, + 53, 62, 62, 54, 40, 29, 19, 30, 91, 172, 164, 156, 142, 124, 105, 87, + 70, 54, 39, 27, 19, 14, 8, 6, 4, 2, 0, 0, 0, 3, 4, 4, + 8, 13, 19, 27, 35, 47, 62, 73, 85, 99, 115, 136, 147, 157, 174, 183, + 186, 89, 45, 25, 34, 36, 33, 42, 47, 48, 48, 37, 37, 42, 28, 36, + 37, 80, 131, 135, 145, 138, 90, 40, 27, 38, 48, 44, 46, 58, 58, 53, + 52, 51, 56, 43, 34, 35, 42, 50, 167, 182, 178, 183, 160, 152, 140, 125, + 118, 110, 104, 100, 95, 94, 94, 97, 102, 109, 111, 126, 135, 143, 158, 170, + 179, 188, 195, 209, 213, 208, 87, 32, 31, 34, 46, 55, 55, 47, 39, 33, + 30, 83, 198, 206, 199, 188, 174, 159, 146, 136, 128, 122, 115, 110, 104, 101, + 98, 95, 94, 93, 92, 91, 89, 87, 85, 84, 83, 83, 83, 85, 86, 89, + 90, 93, 97, 101, 107, 115, 124, 131, 140, 150, 159, 170, 185, 199, 210, 218, + 223, 209, 38, 29, 33, 40, 47, 54, 61, 52, 45, 35, 27, 29, 47, 215, + 237, 246, 248, 246, 248, 233, 238, 232, 204, 63, 36, 28, 38, 50, 41, 44, + 30, 30, 33, 122, 199, 214, 212, 215, 210, 207, 207, 209, 214, 213, 223, 215, + 171, 42, 36, 32, 45, 49, 46, 53, 54, 43, 39, 37, 23, 57, 229, 245, + 233, 245, 242, 243, 245, 244, 245, 223, 35, 22, 31, 40, 48, 57, 54, 44, + 36, 31, 30, 95, 225, 243, 246, 247, 247, 246, 246, 241, 233, 163, 41, 32, + 35, 40, 47, 57, 51, 45, 35, 34, 35, 150, 230, 248, 245, 249, 249, 242, + 229, 104, 32, 26, 37, 45, 53, 62, 63, 54, 42, 31, 34, 32, 126, 176, + 170, 155, 141, 122, 104, 87, 70, 54, 40, 30, 20, 14, 8, 6, 4, 2, + 0, 0, 1, 3, 5, 6, 10, 16, 22, 31, 41, 53, 70, 82, 96, 110, + 124, 145, 165, 175, 186, 174, 115, 30, 25, 33, 42, 42, 51, 59, 54, 52, + 36, 30, 21, 36, 51, 135, 207, 210, 199, 210, 212, 206, 211, 201, 134, 47, + 27, 24, 41, 55, 47, 62, 68, 54, 52, 59, 44, 39, 37, 37, 66, 178, + 185, 190, 171, 166, 159, 143, 134, 126, 120, 115, 111, 112, 113, 114, 119, 126, + 138, 146, 150, 155, 164, 175, 188, 197, 208, 217, 222, 214, 87, 34, 36, 34, + 43, 52, 53, 46, 38, 31, 28, 83, 200, 211, 205, 195, 182, 170, 160, 152, + 144, 140, 133, 128, 122, 120, 117, 114, 113, 112, 112, 110, 108, 106, 104, 104, + 101, 102, 103, 104, 106, 108, 109, 111, 115, 117, 123, 130, 139, 145, 153, 161, + 169, 179, 191, 203, 213, 220, 225, 210, 36, 25, 31, 41, 49, 57, 64, 56, + 46, 37, 28, 30, 46, 214, 239, 249, 251, 255, 243, 248, 238, 222, 73, 40, + 32, 38, 51, 56, 40, 35, 22, 26, 102, 188, 212, 208, 210, 203, 205, 204, + 203, 207, 210, 206, 219, 217, 199, 70, 40, 29, 32, 41, 48, 48, 42, 42, + 30, 38, 30, 89, 233, 245, 246, 238, 239, 239, 248, 248, 250, 228, 40, 29, + 36, 46, 53, 61, 58, 47, 39, 34, 34, 97, 226, 245, 246, 246, 245, 247, + 248, 245, 236, 164, 38, 28, 33, 40, 47, 56, 50, 43, 34, 33, 37, 153, + 240, 251, 250, 254, 249, 241, 229, 104, 32, 25, 35, 44, 52, 60, 60, 53, + 44, 36, 29, 34, 136, 181, 165, 158, 140, 122, 103, 88, 70, 55, 42, 30, + 20, 14, 8, 6, 4, 2, 0, 0, 2, 4, 5, 8, 12, 19, 26, 35, + 47, 61, 77, 91, 105, 122, 136, 150, 172, 177, 189, 130, 37, 32, 37, 41, + 47, 53, 63, 59, 48, 45, 28, 21, 26, 56, 178, 210, 213, 218, 222, 215, + 217, 222, 225, 220, 201, 174, 55, 35, 32, 39, 42, 63, 56, 69, 59, 56, + 49, 45, 42, 43, 30, 104, 187, 183, 183, 175, 170, 160, 149, 139, 135, 130, + 128, 129, 130, 132, 136, 143, 155, 156, 164, 177, 183, 188, 200, 209, 213, 221, + 229, 221, 87, 30, 37, 37, 41, 50, 52, 45, 36, 30, 27, 84, 204, 215, + 211, 202, 191, 181, 172, 166, 160, 156, 149, 145, 141, 138, 135, 134, 133, 132, + 131, 130, 128, 125, 123, 122, 120, 120, 122, 122, 123, 125, 127, 130, 132, 134, + 140, 147, 152, 159, 166, 173, 181, 188, 198, 208, 217, 223, 227, 212, 33, 23, + 30, 41, 50, 58, 66, 57, 47, 38, 31, 31, 46, 215, 239, 249, 253, 255, + 254, 245, 227, 123, 36, 28, 38, 48, 51, 35, 35, 25, 22, 80, 185, 204, + 197, 203, 201, 189, 199, 196, 198, 199, 203, 206, 214, 213, 214, 138, 39, 38, + 37, 34, 40, 43, 36, 35, 40, 35, 51, 186, 235, 247, 239, 247, 240, 239, + 248, 248, 248, 227, 39, 29, 36, 45, 52, 60, 58, 46, 39, 34, 34, 98, + 227, 246, 246, 246, 245, 247, 250, 247, 237, 164, 36, 25, 33, 42, 49, 57, + 50, 43, 33, 34, 39, 156, 239, 247, 248, 253, 250, 247, 235, 109, 32, 24, + 36, 44, 52, 59, 58, 52, 43, 38, 24, 35, 133, 183, 167, 157, 140, 122, + 103, 87, 69, 55, 43, 31, 20, 14, 8, 6, 4, 2, 0, 0, 2, 4, + 6, 8, 15, 21, 29, 40, 52, 67, 84, 98, 113, 131, 148, 169, 168, 170, + 152, 63, 31, 34, 36, 42, 57, 67, 62, 50, 43, 37, 26, 26, 69, 186, + 202, 206, 210, 214, 208, 208, 209, 207, 202, 205, 208, 202, 177, 59, 46, 31, + 39, 42, 57, 67, 71, 59, 53, 45, 44, 32, 35, 32, 144, 191, 191, 186, + 181, 176, 166, 155, 150, 147, 147, 148, 150, 151, 154, 160, 171, 173, 178, 185, + 189, 194, 206, 212, 216, 221, 232, 229, 94, 31, 34, 36, 40, 49, 52, 46, + 36, 29, 27, 84, 209, 222, 218, 211, 201, 192, 186, 182, 176, 171, 165, 161, + 159, 157, 154, 153, 153, 152, 151, 150, 147, 145, 143, 142, 141, 141, 142, 142, + 143, 144, 146, 148, 151, 153, 156, 163, 168, 173, 180, 186, 194, 199, 208, 215, + 222, 228, 232, 214, 30, 20, 29, 41, 50, 58, 65, 57, 48, 40, 33, 34, + 49, 216, 237, 248, 252, 252, 255, 233, 155, 51, 26, 38, 41, 52, 49, 45, + 28, 47, 57, 171, 204, 199, 194, 193, 183, 181, 185, 180, 188, 190, 193, 202, + 207, 214, 219, 203, 84, 38, 27, 35, 28, 24, 32, 36, 35, 46, 105, 225, + 235, 252, 247, 247, 245, 244, 249, 245, 241, 218, 34, 23, 30, 40, 47, 55, + 53, 42, 36, 32, 32, 97, 227, 245, 247, 246, 245, 247, 252, 249, 239, 164, + 34, 24, 35, 44, 52, 59, 51, 43, 33, 35, 42, 159, 239, 250, 250, 249, + 246, 245, 231, 107, 33, 25, 37, 45, 51, 57, 56, 50, 43, 33, 33, 36, + 142, 181, 178, 154, 140, 121, 103, 86, 67, 53, 41, 30, 20, 13, 8, 5, + 3, 2, 0, 1, 2, 4, 7, 10, 16, 24, 33, 44, 57, 72, 90, 104, + 120, 140, 156, 173, 171, 174, 78, 31, 41, 36, 39, 50, 64, 67, 56, 49, + 46, 35, 31, 60, 169, 206, 208, 217, 200, 191, 200, 195, 195, 198, 195, 197, + 206, 210, 209, 184, 52, 33, 34, 32, 48, 59, 64, 70, 64, 45, 43, 39, + 21, 31, 76, 192, 192, 196, 191, 188, 178, 168, 164, 161, 162, 165, 167, 168, + 170, 173, 177, 184, 188, 186, 191, 203, 211, 215, 226, 230, 234, 228, 94, 33, + 34, 37, 41, 50, 53, 48, 38, 30, 29, 86, 211, 225, 223, 217, 208, 201, + 198, 195, 188, 184, 179, 176, 174, 173, 170, 169, 168, 169, 167, 166, 164, 163, + 161, 159, 157, 157, 158, 159, 159, 161, 163, 164, 167, 168, 171, 176, 182, 185, + 191, 197, 204, 209, 215, 222, 227, 232, 235, 216, 31, 19, 30, 42, 49, 57, + 63, 56, 48, 42, 33, 34, 50, 216, 237, 246, 252, 255, 242, 212, 56, 28, + 37, 39, 43, 53, 49, 48, 46, 48, 175, 194, 195, 196, 192, 179, 174, 177, + 169, 172, 179, 186, 188, 195, 202, 215, 216, 224, 187, 104, 41, 38, 49, 44, + 36, 39, 45, 122, 221, 240, 244, 237, 248, 242, 247, 246, 246, 242, 241, 218, + 32, 21, 28, 37, 45, 54, 52, 41, 36, 31, 32, 97, 228, 246, 247, 246, + 243, 246, 250, 247, 238, 163, 32, 23, 35, 45, 53, 61, 51, 43, 33, 34, + 41, 158, 242, 255, 254, 248, 247, 244, 232, 120, 34, 26, 38, 45, 51, 57, + 56, 50, 43, 34, 27, 35, 137, 183, 180, 154, 140, 121, 102, 86, 67, 52, + 40, 29, 20, 13, 8, 5, 3, 2, 2, 1, 3, 5, 8, 12, 19, 27, + 35, 48, 62, 77, 95, 110, 127, 146, 162, 169, 175, 143, 36, 36, 33, 45, + 51, 60, 58, 55, 47, 41, 38, 32, 46, 157, 202, 205, 202, 197, 192, 192, + 178, 177, 182, 185, 187, 193, 200, 199, 207, 201, 161, 40, 33, 36, 37, 48, + 58, 64, 72, 57, 50, 33, 42, 38, 42, 151, 196, 204, 203, 199, 189, 181, + 177, 175, 176, 180, 183, 183, 185, 186, 187, 188, 184, 187, 194, 199, 208, 222, + 216, 234, 239, 225, 90, 30, 31, 37, 43, 54, 58, 52, 40, 33, 31, 88, + 215, 229, 228, 223, 214, 209, 206, 205, 200, 197, 192, 190, 188, 187, 186, 184, + 185, 185, 184, 182, 180, 179, 177, 176, 174, 174, 175, 175, 176, 176, 178, 179, + 182, 183, 184, 190, 194, 197, 202, 207, 213, 218, 222, 228, 233, 236, 238, 218, + 32, 21, 32, 43, 49, 56, 59, 52, 47, 40, 31, 32, 48, 217, 239, 248, + 247, 246, 223, 86, 37, 38, 36, 48, 54, 35, 40, 39, 45, 140, 197, 203, + 198, 191, 181, 170, 169, 165, 158, 166, 172, 179, 183, 190, 198, 208, 217, 221, + 220, 220, 176, 123, 105, 104, 110, 128, 202, 231, 231, 225, 242, 248, 245, 254, + 246, 241, 240, 238, 245, 226, 37, 24, 30, 39, 47, 55, 53, 43, 37, 32, + 35, 100, 228, 247, 247, 246, 243, 244, 245, 242, 234, 160, 30, 21, 34, 44, + 53, 60, 52, 42, 31, 32, 37, 155, 235, 251, 250, 246, 249, 247, 243, 155, + 35, 27, 39, 48, 53, 58, 56, 49, 39, 33, 17, 30, 141, 185, 175, 159, + 141, 122, 103, 85, 65, 50, 38, 26, 20, 13, 8, 5, 3, 2, 2, 3, + 4, 7, 10, 14, 21, 29, 38, 51, 66, 82, 100, 116, 132, 152, 167, 176, + 168, 74, 42, 43, 34, 44, 47, 60, 54, 49, 41, 27, 22, 30, 82, 207, + 201, 205, 196, 190, 189, 172, 170, 163, 167, 172, 176, 183, 190, 195, 201, 201, + 197, 113, 36, 34, 34, 45, 59, 58, 69, 57, 48, 48, 35, 38, 40, 94, + 205, 211, 214, 207, 200, 192, 188, 187, 191, 193, 193, 190, 187, 183, 167, 138, + 106, 96, 95, 90, 111, 150, 164, 205, 227, 215, 85, 28, 30, 36, 45, 55, + 59, 51, 39, 33, 33, 91, 220, 236, 233, 229, 222, 216, 214, 208, 197, 191, + 188, 186, 184, 182, 182, 181, 179, 180, 180, 179, 178, 181, 187, 190, 188, 189, + 191, 191, 190, 190, 191, 189, 185, 181, 179, 182, 188, 190, 193, 200, 210, 219, + 225, 231, 236, 240, 242, 222, 33, 22, 32, 44, 50, 56, 59, 51, 46, 39, + 28, 30, 49, 220, 242, 249, 249, 230, 120, 39, 37, 33, 41, 52, 38, 39, + 39, 37, 150, 201, 198, 197, 193, 181, 175, 169, 156, 153, 154, 154, 162, 167, + 173, 188, 196, 196, 217, 212, 218, 216, 211, 208, 207, 210, 211, 213, 224, 228, + 203, 194, 236, 242, 245, 245, 245, 241, 238, 239, 248, 228, 38, 24, 31, 40, + 47, 56, 54, 44, 37, 33, 34, 99, 230, 247, 247, 246, 244, 245, 244, 240, + 233, 161, 31, 22, 33, 44, 52, 60, 51, 42, 31, 31, 36, 154, 241, 254, + 253, 248, 248, 239, 240, 169, 35, 26, 38, 45, 51, 58, 56, 48, 38, 27, + 24, 26, 171, 184, 177, 157, 138, 120, 102, 85, 66, 50, 38, 26, 19, 13, + 7, 5, 3, 2, 2, 2, 4, 7, 10, 16, 24, 33, 41, 56, 72, 88, + 107, 125, 142, 160, 177, 177, 137, 35, 31, 35, 40, 47, 58, 63, 59, 50, + 37, 30, 30, 39, 174, 198, 203, 194, 185, 180, 172, 163, 156, 154, 154, 158, + 162, 167, 175, 183, 194, 196, 205, 181, 43, 32, 37, 42, 49, 55, 63, 64, + 57, 47, 37, 35, 33, 38, 187, 214, 222, 216, 208, 204, 201, 202, 207, 201, + 202, 181, 146, 66, 32, 38, 37, 33, 37, 38, 34, 34, 31, 43, 84, 158, + 86, 26, 34, 44, 51, 57, 53, 45, 37, 32, 33, 93, 226, 239, 234, 234, + 223, 224, 192, 89, 40, 35, 39, 36, 30, 31, 32, 31, 31, 29, 29, 41, + 30, 87, 194, 200, 201, 199, 210, 203, 207, 202, 200, 151, 54, 41, 30, 28, + 32, 32, 31, 39, 57, 147, 217, 234, 233, 247, 238, 226, 30, 22, 33, 43, + 50, 57, 60, 51, 44, 39, 29, 28, 48, 228, 239, 249, 234, 166, 43, 26, + 43, 36, 41, 39, 30, 29, 42, 104, 207, 210, 196, 193, 180, 171, 163, 156, + 149, 145, 144, 147, 154, 165, 164, 177, 190, 177, 105, 99, 93, 87, 82, 81, + 84, 86, 85, 85, 86, 73, 59, 159, 233, 243, 244, 240, 243, 240, 241, 240, + 246, 225, 35, 23, 31, 40, 47, 55, 54, 44, 37, 32, 31, 96, 229, 248, + 246, 244, 245, 246, 246, 242, 235, 163, 34, 25, 34, 44, 50, 57, 50, 42, + 32, 33, 38, 155, 241, 251, 255, 253, 251, 244, 248, 165, 37, 27, 35, 42, + 52, 57, 55, 48, 38, 25, 20, 32, 182, 193, 176, 156, 135, 116, 101, 86, + 66, 50, 37, 26, 17, 12, 7, 5, 3, 1, 2, 2, 4, 9, 12, 16, + 25, 35, 45, 59, 75, 91, 111, 128, 145, 163, 176, 182, 78, 26, 29, 36, + 46, 51, 60, 60, 55, 44, 31, 26, 31, 73, 194, 208, 202, 187, 175, 167, + 158, 148, 144, 142, 142, 144, 149, 154, 162, 172, 186, 196, 207, 195, 97, 36, + 36, 41, 43, 49, 59, 64, 60, 50, 41, 35, 19, 42, 158, 222, 224, 218, + 214, 222, 212, 210, 208, 200, 160, 80, 46, 29, 30, 25, 28, 33, 31, 29, + 29, 28, 27, 19, 42, 30, 27, 42, 52, 44, 60, 61, 53, 44, 37, 31, + 33, 95, 227, 244, 234, 233, 226, 226, 226, 181, 62, 34, 27, 29, 25, 19, + 24, 23, 22, 23, 24, 21, 34, 41, 166, 207, 212, 213, 220, 218, 219, 215, + 216, 196, 123, 31, 24, 18, 25, 19, 25, 35, 49, 190, 220, 233, 241, 245, + 243, 225, 31, 22, 32, 41, 49, 58, 63, 53, 50, 35, 24, 33, 52, 212, + 248, 234, 204, 63, 35, 40, 32, 49, 40, 25, 32, 30, 86, 198, 209, 205, + 205, 186, 171, 163, 154, 147, 140, 136, 136, 140, 145, 155, 165, 173, 181, 190, + 139, 53, 37, 31, 26, 26, 31, 31, 30, 27, 27, 32, 37, 153, 230, 240, + 241, 241, 241, 240, 243, 241, 245, 223, 34, 24, 31, 40, 47, 56, 53, 44, + 38, 32, 29, 95, 229, 248, 245, 244, 245, 247, 247, 243, 236, 164, 36, 26, + 35, 44, 49, 57, 49, 42, 32, 34, 38, 156, 239, 251, 253, 252, 252, 247, + 250, 168, 36, 25, 33, 40, 50, 58, 53, 46, 38, 27, 21, 32, 186, 195, + 175, 154, 133, 114, 100, 86, 67, 50, 37, 26, 17, 12, 7, 5, 3, 1, + 2, 2, 5, 10, 13, 18, 27, 36, 47, 63, 78, 95, 115, 132, 149, 165, + 179, 176, 39, 26, 34, 40, 45, 54, 64, 58, 54, 42, 29, 27, 31, 115, + 200, 205, 193, 180, 167, 157, 147, 138, 133, 130, 129, 133, 137, 145, 153, 163, + 176, 190, 197, 200, 154, 40, 29, 35, 39, 47, 58, 63, 61, 53, 44, 36, + 25, 33, 92, 217, 227, 235, 233, 229, 230, 225, 203, 139, 44, 44, 25, 37, + 26, 31, 40, 38, 31, 35, 35, 24, 26, 29, 37, 36, 38, 38, 46, 64, + 65, 63, 52, 44, 37, 30, 31, 96, 223, 246, 235, 237, 236, 223, 223, 211, + 172, 35, 38, 38, 30, 35, 23, 33, 30, 39, 29, 32, 35, 28, 113, 214, + 220, 224, 224, 226, 226, 229, 221, 218, 199, 66, 35, 27, 33, 24, 33, 33, + 85, 224, 226, 237, 245, 247, 251, 225, 34, 22, 31, 41, 48, 57, 63, 55, + 46, 42, 29, 32, 46, 228, 230, 224, 83, 30, 40, 42, 49, 43, 30, 39, + 31, 70, 207, 210, 211, 203, 187, 178, 165, 156, 143, 133, 128, 125, 126, 131, + 141, 147, 163, 172, 181, 188, 181, 75, 43, 36, 35, 34, 38, 40, 37, 34, + 30, 37, 45, 158, 232, 238, 240, 242, 241, 240, 243, 241, 244, 223, 34, 24, + 31, 40, 47, 56, 53, 44, 38, 32, 29, 95, 229, 248, 245, 244, 245, 247, + 247, 243, 236, 164, 36, 26, 35, 44, 49, 57, 49, 42, 32, 34, 38, 156, + 238, 251, 252, 251, 252, 248, 245, 168, 36, 25, 34, 41, 51, 58, 54, 47, + 38, 30, 22, 30, 187, 193, 174, 153, 133, 113, 100, 84, 65, 50, 37, 26, + 17, 12, 6, 5, 3, 1, 3, 4, 7, 10, 14, 19, 28, 38, 49, 66, + 81, 98, 118, 136, 152, 166, 180, 146, 38, 27, 38, 41, 41, 58, 66, 57, + 56, 44, 32, 30, 36, 154, 195, 197, 185, 175, 163, 150, 137, 128, 121, 118, + 118, 121, 127, 135, 145, 156, 168, 182, 190, 195, 183, 58, 28, 32, 38, 45, + 56, 64, 62, 55, 45, 37, 30, 27, 61, 222, 230, 242, 245, 234, 236, 209, + 104, 40, 38, 30, 35, 33, 42, 35, 36, 41, 40, 38, 35, 33, 31, 43, + 32, 39, 44, 51, 54, 58, 68, 63, 50, 43, 36, 28, 31, 96, 224, 248, + 234, 231, 234, 229, 227, 218, 213, 139, 34, 30, 39, 41, 43, 30, 40, 45, + 38, 43, 28, 38, 61, 194, 222, 230, 236, 237, 235, 238, 229, 225, 210, 94, + 28, 27, 38, 35, 41, 37, 157, 227, 233, 244, 242, 252, 253, 227, 36, 23, + 30, 41, 48, 56, 62, 54, 51, 41, 33, 34, 44, 207, 219, 124, 28, 40, + 38, 46, 55, 37, 38, 34, 64, 192, 219, 221, 201, 197, 184, 168, 160, 149, + 136, 125, 120, 117, 119, 125, 137, 146, 157, 166, 182, 179, 192, 123, 37, 33, + 35, 37, 43, 45, 41, 38, 36, 38, 41, 153, 231, 241, 242, 241, 241, 239, + 243, 241, 244, 223, 34, 24, 31, 40, 47, 56, 53, 44, 38, 32, 29, 95, + 229, 248, 245, 244, 245, 247, 247, 243, 236, 164, 36, 26, 35, 44, 49, 57, + 49, 42, 32, 34, 38, 156, 237, 253, 254, 252, 252, 247, 240, 173, 38, 27, + 34, 41, 51, 58, 55, 48, 37, 31, 21, 31, 186, 191, 173, 152, 132, 113, + 99, 84, 65, 49, 36, 25, 16, 12, 6, 5, 3, 1, 2, 4, 7, 11, + 14, 20, 30, 39, 51, 67, 85, 101, 122, 140, 156, 168, 174, 113, 39, 30, + 35, 43, 46, 59, 63, 54, 52, 43, 30, 30, 47, 179, 194, 193, 181, 170, + 155, 140, 125, 117, 109, 106, 106, 109, 116, 124, 134, 146, 163, 175, 188, 192, + 191, 97, 32, 31, 35, 43, 55, 63, 64, 57, 47, 39, 31, 29, 47, 200, + 237, 244, 241, 234, 221, 159, 49, 31, 32, 38, 37, 43, 36, 51, 58, 52, + 45, 35, 26, 25, 25, 23, 44, 47, 59, 58, 59, 76, 70, 64, 51, 44, + 37, 29, 30, 94, 222, 242, 238, 234, 228, 229, 233, 228, 212, 221, 72, 36, + 36, 34, 51, 39, 52, 45, 52, 39, 36, 36, 38, 135, 222, 233, 242, 242, + 239, 239, 242, 236, 226, 100, 32, 31, 36, 28, 27, 46, 218, 235, 244, 249, + 249, 251, 254, 228, 36, 23, 30, 41, 48, 55, 61, 54, 49, 38, 31, 34, + 51, 204, 141, 38, 35, 37, 39, 49, 46, 42, 42, 60, 184, 215, 227, 214, + 213, 195, 177, 168, 154, 142, 129, 121, 116, 113, 114, 120, 130, 144, 155, 162, + 180, 187, 189, 130, 33, 30, 36, 41, 48, 51, 46, 40, 32, 34, 39, 152, + 233, 241, 239, 236, 241, 239, 242, 241, 244, 223, 34, 24, 31, 40, 47, 56, + 53, 44, 38, 32, 29, 95, 229, 248, 245, 244, 245, 247, 247, 243, 236, 164, + 36, 26, 35, 44, 49, 57, 49, 42, 32, 34, 38, 156, 237, 255, 254, 252, + 251, 248, 243, 193, 37, 25, 33, 41, 50, 57, 54, 47, 35, 32, 19, 38, + 184, 188, 173, 153, 131, 112, 97, 82, 64, 49, 35, 25, 16, 12, 6, 5, + 2, 1, 2, 4, 6, 11, 15, 22, 31, 41, 53, 69, 86, 104, 125, 141, + 158, 169, 174, 95, 31, 37, 32, 46, 54, 58, 61, 53, 46, 38, 28, 30, + 66, 191, 193, 191, 178, 162, 146, 130, 117, 108, 99, 96, 94, 99, 106, 114, + 127, 137, 153, 167, 185, 190, 192, 139, 32, 25, 32, 40, 52, 61, 64, 59, + 48, 42, 33, 36, 33, 158, 238, 247, 240, 236, 180, 46, 31, 31, 39, 37, + 40, 51, 51, 56, 54, 46, 44, 41, 36, 33, 29, 34, 34, 40, 45, 51, + 54, 59, 69, 66, 53, 45, 38, 30, 31, 93, 222, 233, 236, 238, 231, 225, + 225, 221, 231, 214, 160, 41, 31, 33, 34, 55, 58, 56, 54, 44, 39, 30, + 33, 70, 223, 238, 237, 240, 243, 239, 247, 234, 208, 53, 29, 31, 38, 31, + 38, 112, 230, 249, 245, 247, 255, 247, 254, 230, 37, 24, 31, 41, 47, 54, + 62, 56, 44, 44, 36, 33, 44, 179, 42, 33, 25, 43, 48, 50, 40, 33, + 30, 72, 219, 216, 223, 224, 207, 196, 177, 167, 150, 138, 126, 119, 112, 112, + 112, 117, 128, 134, 153, 167, 174, 188, 190, 133, 31, 28, 36, 43, 52, 55, + 48, 39, 34, 39, 44, 156, 231, 238, 238, 238, 239, 239, 241, 241, 243, 223, + 34, 24, 31, 40, 47, 56, 53, 44, 38, 32, 29, 95, 229, 248, 245, 244, + 245, 247, 247, 243, 236, 164, 36, 26, 35, 44, 49, 57, 49, 42, 32, 34, + 38, 156, 237, 255, 252, 249, 250, 249, 249, 219, 35, 24, 31, 38, 48, 55, + 52, 45, 35, 32, 20, 52, 185, 187, 172, 153, 131, 112, 95, 81, 61, 47, + 35, 24, 16, 12, 6, 5, 2, 1, 2, 3, 5, 11, 16, 22, 31, 41, + 54, 71, 88, 106, 127, 144, 161, 171, 176, 81, 31, 37, 37, 48, 52, 58, + 60, 55, 44, 38, 30, 32, 87, 191, 191, 187, 173, 157, 140, 126, 112, 101, + 92, 88, 87, 91, 98, 107, 120, 131, 143, 164, 175, 190, 199, 171, 29, 20, + 30, 38, 49, 59, 63, 60, 49, 43, 37, 43, 44, 148, 236, 242, 241, 212, + 55, 37, 35, 40, 43, 55, 57, 57, 60, 47, 49, 47, 27, 44, 111, 162, + 166, 122, 44, 33, 40, 43, 45, 54, 64, 64, 54, 45, 38, 32, 31, 91, + 226, 232, 229, 229, 229, 230, 228, 230, 229, 230, 213, 71, 33, 32, 32, 50, + 55, 60, 53, 53, 38, 35, 28, 39, 178, 240, 239, 242, 247, 247, 249, 230, + 158, 30, 32, 31, 31, 31, 46, 175, 228, 251, 244, 245, 253, 247, 251, 233, + 37, 25, 31, 41, 46, 54, 65, 62, 56, 45, 45, 42, 36, 69, 32, 26, + 40, 50, 57, 57, 36, 27, 33, 34, 134, 212, 223, 217, 201, 197, 180, 163, + 148, 138, 128, 119, 113, 110, 112, 117, 128, 129, 149, 168, 175, 180, 192, 143, + 31, 25, 33, 41, 51, 56, 47, 37, 29, 34, 38, 151, 226, 236, 241, 243, + 239, 239, 241, 241, 243, 223, 35, 24, 31, 40, 47, 56, 53, 44, 38, 32, + 29, 95, 229, 248, 245, 244, 245, 247, 247, 243, 236, 164, 36, 26, 35, 44, + 49, 57, 49, 42, 32, 34, 38, 156, 237, 253, 249, 251, 252, 249, 249, 230, + 36, 24, 31, 37, 47, 54, 52, 45, 34, 31, 23, 68, 185, 188, 169, 151, + 131, 111, 95, 80, 61, 47, 34, 24, 16, 11, 6, 5, 2, 1, 1, 3, + 5, 11, 16, 22, 32, 41, 56, 72, 89, 107, 128, 146, 163, 172, 169, 62, + 37, 28, 41, 50, 45, 63, 58, 57, 44, 38, 32, 33, 97, 183, 189, 186, + 172, 154, 139, 123, 105, 91, 85, 82, 80, 85, 91, 102, 113, 126, 140, 164, + 168, 190, 209, 190, 28, 21, 31, 38, 49, 59, 62, 59, 48, 43, 42, 29, + 36, 151, 238, 244, 231, 143, 33, 26, 38, 40, 54, 62, 60, 59, 50, 39, + 39, 34, 54, 146, 231, 237, 235, 228, 187, 58, 30, 36, 39, 46, 59, 61, + 53, 43, 37, 33, 32, 91, 215, 235, 232, 223, 225, 226, 221, 225, 231, 220, + 214, 159, 28, 30, 36, 44, 52, 53, 62, 54, 42, 41, 27, 34, 92, 221, + 242, 244, 240, 246, 246, 229, 91, 31, 29, 30, 25, 37, 61, 220, 242, 245, + 247, 249, 245, 252, 245, 231, 39, 25, 32, 40, 44, 54, 69, 66, 61, 49, + 46, 48, 42, 28, 34, 38, 49, 50, 67, 55, 45, 38, 33, 39, 48, 186, + 213, 211, 213, 194, 180, 166, 150, 140, 129, 121, 114, 112, 113, 117, 123, 136, + 146, 157, 180, 181, 192, 138, 32, 25, 33, 41, 51, 58, 50, 39, 32, 35, + 39, 152, 230, 238, 237, 235, 239, 239, 241, 241, 243, 223, 35, 24, 31, 40, + 47, 56, 53, 44, 38, 32, 29, 95, 229, 248, 245, 244, 245, 247, 247, 243, + 236, 164, 36, 26, 35, 44, 49, 57, 49, 42, 32, 34, 38, 156, 236, 252, + 248, 254, 255, 248, 243, 229, 38, 26, 33, 39, 48, 55, 53, 45, 34, 31, + 26, 82, 186, 188, 168, 150, 131, 112, 94, 78, 60, 47, 34, 24, 16, 11, + 6, 4, 2, 1, 2, 3, 5, 11, 16, 22, 33, 43, 57, 73, 89, 108, + 129, 147, 164, 174, 168, 66, 34, 34, 38, 46, 59, 57, 57, 54, 51, 33, + 32, 38, 87, 193, 192, 184, 171, 154, 136, 119, 102, 88, 83, 78, 76, 81, + 88, 98, 109, 122, 135, 159, 170, 190, 205, 197, 33, 16, 29, 38, 46, 57, + 65, 62, 50, 46, 39, 36, 33, 101, 234, 245, 222, 81, 31, 26, 38, 49, + 60, 64, 57, 48, 45, 30, 33, 36, 147, 231, 245, 246, 247, 241, 231, 145, + 27, 20, 35, 44, 52, 59, 54, 44, 36, 31, 30, 87, 216, 228, 223, 221, + 221, 220, 219, 220, 221, 218, 224, 207, 55, 31, 39, 33, 44, 54, 60, 56, + 49, 42, 31, 33, 47, 198, 233, 248, 243, 249, 244, 218, 31, 28, 26, 33, + 26, 35, 139, 225, 240, 246, 244, 244, 244, 245, 249, 229, 38, 23, 32, 40, + 45, 53, 65, 71, 73, 53, 56, 53, 37, 34, 42, 48, 53, 64, 71, 63, + 51, 43, 37, 33, 35, 78, 199, 213, 210, 195, 182, 168, 155, 146, 134, 124, + 117, 113, 113, 115, 120, 129, 146, 159, 172, 185, 192, 140, 31, 24, 34, 43, + 52, 57, 50, 39, 33, 32, 41, 152, 227, 239, 238, 238, 239, 240, 242, 241, + 243, 223, 36, 23, 31, 40, 47, 56, 53, 44, 38, 32, 29, 95, 229, 248, + 245, 244, 245, 247, 247, 243, 236, 164, 36, 26, 35, 44, 49, 57, 49, 42, + 32, 34, 38, 156, 237, 252, 251, 252, 252, 251, 249, 229, 40, 29, 33, 38, + 47, 56, 51, 46, 36, 31, 27, 84, 180, 186, 167, 151, 131, 111, 93, 77, + 59, 46, 34, 24, 16, 11, 5, 4, 2, 1, 2, 4, 6, 11, 16, 22, + 33, 43, 57, 73, 89, 107, 129, 146, 165, 172, 171, 74, 35, 28, 45, 46, + 50, 60, 63, 52, 44, 40, 33, 33, 92, 191, 191, 183, 169, 154, 135, 119, + 103, 90, 82, 77, 76, 80, 87, 95, 108, 121, 135, 153, 171, 188, 208, 197, + 33, 19, 29, 38, 47, 57, 64, 60, 49, 45, 35, 31, 39, 88, 231, 232, + 184, 45, 31, 29, 41, 51, 60, 63, 54, 45, 33, 36, 35, 70, 222, 245, + 244, 249, 250, 245, 249, 199, 39, 26, 30, 40, 51, 58, 54, 44, 37, 33, + 30, 87, 213, 225, 220, 216, 216, 215, 214, 214, 211, 218, 218, 211, 126, 32, + 33, 39, 43, 52, 59, 58, 51, 43, 34, 33, 36, 115, 237, 248, 250, 251, + 230, 168, 32, 29, 31, 27, 32, 31, 192, 238, 241, 243, 242, 241, 241, 242, + 246, 227, 37, 23, 31, 40, 45, 54, 66, 72, 76, 76, 57, 53, 52, 34, + 54, 57, 59, 69, 77, 70, 59, 49, 40, 34, 30, 36, 130, 209, 201, 204, + 182, 171, 160, 150, 138, 129, 120, 115, 114, 116, 119, 129, 145, 158, 172, 184, + 191, 140, 30, 24, 34, 43, 53, 57, 51, 40, 33, 31, 40, 152, 227, 239, + 238, 238, 239, 240, 242, 241, 243, 223, 36, 23, 31, 40, 47, 56, 53, 44, + 38, 32, 29, 95, 229, 248, 245, 244, 245, 247, 247, 243, 236, 164, 36, 26, + 35, 44, 49, 57, 49, 42, 32, 34, 38, 155, 237, 251, 251, 251, 252, 251, + 249, 229, 36, 23, 33, 39, 46, 55, 51, 45, 34, 37, 33, 84, 188, 188, + 166, 148, 131, 112, 91, 75, 59, 46, 34, 24, 16, 11, 5, 4, 2, 1, + 3, 4, 6, 11, 16, 23, 33, 42, 57, 73, 89, 107, 129, 146, 163, 172, + 174, 60, 33, 31, 38, 43, 56, 58, 63, 52, 41, 43, 33, 32, 96, 187, + 191, 184, 171, 156, 137, 121, 107, 92, 84, 80, 78, 83, 89, 97, 109, 121, + 138, 151, 172, 187, 209, 196, 31, 22, 30, 39, 47, 56, 64, 59, 48, 43, + 30, 34, 27, 117, 234, 225, 137, 34, 35, 37, 44, 51, 59, 60, 50, 42, + 40, 38, 29, 142, 236, 245, 251, 253, 252, 246, 249, 227, 36, 29, 32, 43, + 50, 57, 52, 44, 38, 33, 31, 87, 209, 222, 215, 210, 207, 207, 208, 206, + 205, 212, 212, 209, 190, 48, 29, 32, 40, 49, 58, 60, 55, 47, 39, 36, + 26, 42, 227, 243, 245, 254, 223, 108, 37, 34, 39, 34, 31, 69, 226, 237, + 240, 241, 238, 237, 237, 239, 243, 225, 37, 23, 31, 39, 45, 55, 67, 74, + 70, 76, 63, 55, 48, 37, 46, 56, 61, 69, 77, 75, 66, 55, 46, 39, + 26, 34, 41, 173, 207, 201, 195, 174, 164, 154, 144, 135, 124, 118, 115, 116, + 121, 131, 147, 159, 172, 184, 191, 139, 31, 24, 34, 44, 53, 57, 52, 41, + 34, 32, 40, 151, 227, 239, 238, 238, 238, 239, 242, 241, 243, 223, 36, 23, + 31, 40, 47, 56, 53, 44, 38, 32, 29, 95, 229, 248, 245, 244, 245, 247, + 247, 243, 236, 164, 36, 26, 35, 44, 49, 57, 49, 42, 32, 34, 38, 155, + 237, 252, 250, 251, 252, 252, 251, 231, 51, 24, 34, 39, 46, 56, 53, 43, + 34, 39, 31, 78, 185, 184, 165, 150, 132, 111, 91, 74, 57, 44, 34, 23, + 16, 11, 5, 4, 2, 1, 3, 4, 6, 11, 16, 22, 33, 42, 57, 72, + 89, 107, 127, 146, 163, 171, 175, 58, 32, 34, 35, 43, 59, 59, 57, 54, + 47, 42, 30, 37, 89, 187, 193, 187, 174, 159, 142, 126, 111, 97, 89, 84, + 84, 87, 92, 100, 111, 124, 141, 153, 174, 188, 207, 199, 30, 21, 30, 39, + 48, 57, 62, 58, 47, 42, 34, 33, 35, 153, 237, 231, 87, 40, 36, 40, + 45, 52, 58, 57, 48, 38, 34, 30, 45, 216, 233, 248, 253, 248, 250, 247, + 249, 230, 41, 30, 35, 41, 48, 55, 52, 44, 38, 34, 33, 89, 206, 218, + 210, 205, 202, 200, 200, 199, 200, 199, 210, 207, 208, 98, 34, 24, 38, 45, + 56, 61, 58, 50, 42, 38, 27, 37, 138, 239, 251, 238, 224, 51, 39, 34, + 37, 41, 27, 148, 226, 234, 239, 238, 235, 234, 234, 236, 241, 223, 36, 23, + 31, 38, 45, 56, 66, 72, 66, 60, 62, 49, 38, 31, 36, 46, 56, 62, + 70, 73, 71, 61, 52, 45, 38, 28, 34, 78, 199, 206, 188, 186, 168, 158, + 150, 140, 130, 122, 120, 120, 125, 136, 151, 163, 175, 186, 193, 141, 30, 24, + 35, 44, 53, 57, 52, 41, 34, 32, 40, 151, 227, 239, 238, 238, 238, 239, + 242, 241, 243, 223, 36, 23, 31, 40, 47, 56, 53, 44, 38, 32, 29, 95, + 229, 248, 245, 244, 245, 247, 247, 243, 236, 164, 36, 26, 35, 44, 49, 57, + 49, 42, 32, 34, 38, 155, 237, 252, 250, 251, 252, 252, 251, 231, 81, 30, + 32, 37, 46, 55, 52, 39, 33, 35, 29, 89, 181, 181, 166, 151, 131, 112, + 89, 73, 57, 44, 34, 24, 16, 11, 5, 4, 2, 1, 3, 4, 6, 11, + 16, 22, 32, 42, 55, 71, 87, 106, 127, 144, 161, 172, 174, 83, 33, 29, + 43, 46, 49, 62, 58, 55, 51, 37, 31, 36, 70, 190, 194, 190, 177, 163, + 146, 131, 117, 104, 95, 91, 89, 92, 98, 104, 114, 127, 144, 160, 174, 191, + 202, 199, 31, 21, 31, 39, 47, 57, 62, 57, 46, 41, 33, 22, 52, 162, + 228, 229, 39, 21, 34, 39, 45, 53, 58, 54, 46, 37, 25, 31, 79, 228, + 248, 251, 250, 253, 246, 246, 255, 233, 74, 31, 31, 34, 44, 53, 50, 44, + 38, 34, 33, 89, 205, 216, 207, 200, 196, 193, 192, 192, 193, 190, 204, 206, + 204, 164, 44, 30, 36, 42, 51, 60, 60, 53, 46, 42, 31, 28, 73, 220, + 243, 235, 156, 44, 40, 35, 32, 32, 49, 207, 223, 240, 237, 235, 232, 232, + 232, 235, 240, 223, 38, 23, 31, 37, 45, 55, 63, 67, 65, 58, 51, 41, + 44, 58, 34, 39, 53, 58, 62, 69, 73, 68, 61, 53, 42, 39, 28, 29, + 124, 203, 195, 190, 172, 163, 156, 148, 137, 130, 127, 128, 132, 140, 156, 166, + 178, 188, 194, 141, 31, 24, 34, 43, 52, 57, 51, 41, 33, 32, 40, 151, + 227, 239, 238, 238, 239, 239, 242, 241, 243, 223, 35, 23, 31, 40, 47, 56, + 53, 44, 38, 32, 29, 95, 229, 248, 245, 244, 245, 247, 247, 243, 236, 164, + 36, 26, 35, 44, 49, 57, 49, 42, 32, 34, 38, 155, 237, 252, 251, 252, + 252, 252, 252, 233, 97, 30, 31, 38, 45, 49, 47, 40, 31, 30, 34, 121, + 183, 183, 165, 148, 131, 112, 89, 72, 57, 44, 34, 24, 16, 11, 5, 4, + 2, 1, 2, 4, 5, 10, 15, 21, 31, 41, 54, 69, 86, 104, 124, 142, + 160, 170, 172, 101, 33, 30, 39, 46, 50, 62, 64, 54, 48, 39, 34, 31, + 47, 179, 196, 193, 181, 168, 151, 138, 124, 110, 103, 98, 96, 99, 105, 110, + 121, 132, 146, 167, 177, 193, 200, 188, 33, 24, 31, 40, 48, 57, 61, 56, + 44, 39, 34, 33, 47, 199, 242, 232, 38, 25, 32, 38, 45, 53, 56, 53, + 45, 36, 24, 32, 111, 222, 248, 254, 250, 254, 248, 245, 254, 235, 102, 29, + 26, 33, 42, 52, 50, 44, 38, 34, 33, 88, 204, 212, 202, 194, 190, 187, + 186, 185, 186, 189, 195, 201, 202, 200, 65, 35, 34, 37, 47, 54, 57, 56, + 51, 45, 26, 37, 41, 172, 234, 229, 93, 39, 35, 37, 31, 26, 110, 220, + 227, 236, 233, 231, 229, 229, 230, 234, 239, 221, 37, 24, 31, 37, 44, 54, + 60, 62, 54, 49, 39, 45, 39, 144, 30, 38, 45, 48, 53, 61, 67, 70, + 66, 59, 49, 37, 29, 33, 41, 171, 203, 193, 180, 170, 161, 155, 149, 142, + 137, 138, 140, 148, 160, 170, 180, 190, 195, 141, 30, 24, 34, 43, 51, 56, + 51, 41, 33, 32, 40, 152, 227, 239, 238, 238, 239, 240, 242, 241, 243, 223, + 35, 23, 31, 40, 47, 56, 53, 44, 38, 32, 29, 95, 229, 248, 245, 244, + 245, 247, 247, 243, 236, 164, 36, 26, 35, 44, 49, 57, 49, 42, 32, 34, + 38, 155, 237, 252, 251, 252, 252, 253, 252, 233, 95, 26, 34, 38, 43, 41, + 42, 44, 35, 31, 36, 136, 182, 181, 165, 148, 132, 112, 89, 72, 56, 44, + 34, 24, 16, 11, 5, 4, 2, 1, 2, 3, 5, 10, 14, 21, 30, 40, + 52, 68, 84, 102, 121, 139, 155, 169, 174, 117, 34, 32, 31, 45, 52, 58, + 66, 57, 48, 43, 35, 29, 36, 144, 197, 196, 185, 173, 158, 145, 132, 119, + 112, 108, 105, 108, 113, 118, 128, 139, 152, 170, 182, 194, 201, 165, 32, 28, + 32, 41, 49, 57, 61, 53, 42, 36, 19, 32, 46, 224, 243, 225, 42, 29, + 31, 36, 45, 55, 56, 50, 42, 35, 23, 26, 141, 238, 245, 255, 251, 241, + 250, 247, 249, 232, 104, 29, 29, 39, 43, 52, 50, 44, 38, 35, 33, 87, + 201, 209, 199, 189, 184, 180, 179, 178, 181, 188, 190, 198, 198, 197, 123, 36, + 31, 32, 42, 49, 54, 58, 54, 48, 45, 32, 32, 81, 217, 225, 46, 24, + 29, 29, 23, 34, 174, 220, 228, 225, 229, 228, 226, 226, 228, 231, 238, 221, + 37, 24, 31, 36, 43, 53, 59, 57, 43, 37, 32, 43, 36, 209, 86, 39, + 32, 35, 45, 52, 57, 66, 70, 64, 56, 46, 33, 36, 34, 76, 197, 191, + 188, 178, 166, 161, 161, 157, 149, 147, 149, 155, 167, 175, 184, 193, 196, 142, + 31, 24, 34, 42, 50, 55, 50, 40, 33, 32, 40, 152, 227, 239, 238, 238, + 239, 240, 242, 241, 243, 223, 35, 23, 31, 40, 47, 56, 53, 44, 38, 32, + 29, 95, 229, 248, 245, 244, 245, 247, 247, 243, 236, 164, 36, 26, 35, 44, + 49, 57, 49, 42, 32, 34, 38, 155, 237, 252, 251, 252, 253, 253, 253, 234, + 92, 27, 35, 32, 37, 34, 34, 37, 34, 33, 34, 130, 181, 178, 165, 149, + 133, 112, 90, 73, 56, 43, 34, 24, 16, 11, 5, 4, 2, 1, 1, 2, + 5, 8, 13, 19, 28, 39, 50, 65, 83, 99, 119, 137, 153, 167, 179, 148, + 37, 26, 35, 44, 41, 63, 62, 62, 51, 47, 34, 31, 32, 105, 198, 199, + 189, 178, 165, 153, 142, 129, 120, 115, 113, 117, 122, 127, 137, 148, 160, 174, + 188, 194, 200, 144, 29, 30, 34, 42, 52, 58, 58, 50, 39, 34, 27, 32, + 103, 225, 244, 233, 36, 29, 31, 35, 46, 55, 57, 50, 41, 34, 32, 32, + 163, 235, 245, 246, 255, 248, 244, 250, 248, 233, 99, 33, 35, 38, 45, 53, + 50, 44, 37, 34, 33, 88, 197, 206, 196, 186, 180, 176, 174, 174, 175, 179, + 186, 196, 196, 189, 192, 41, 31, 29, 38, 44, 51, 58, 57, 50, 45, 38, + 26, 28, 190, 154, 27, 28, 30, 25, 15, 50, 207, 228, 225, 225, 224, 223, + 222, 222, 225, 229, 235, 217, 37, 24, 30, 36, 43, 53, 58, 56, 46, 39, + 33, 30, 48, 206, 185, 45, 31, 31, 42, 47, 53, 66, 73, 71, 63, 47, + 42, 37, 31, 39, 124, 198, 193, 187, 174, 170, 171, 165, 158, 155, 158, 164, + 174, 181, 188, 196, 198, 144, 32, 25, 34, 41, 49, 54, 49, 40, 34, 33, + 41, 151, 226, 238, 238, 238, 239, 240, 242, 241, 245, 223, 35, 22, 31, 40, + 48, 56, 55, 44, 39, 33, 30, 94, 228, 247, 246, 245, 245, 246, 246, 243, + 236, 164, 36, 26, 35, 44, 49, 56, 49, 41, 33, 34, 39, 155, 236, 251, + 251, 252, 251, 252, 253, 236, 99, 36, 39, 27, 34, 34, 32, 30, 34, 40, + 41, 130, 191, 182, 166, 147, 132, 112, 89, 73, 57, 45, 34, 24, 16, 11, + 5, 4, 2, 1, 0, 1, 3, 7, 12, 19, 26, 35, 48, 62, 77, 96, + 117, 133, 149, 168, 176, 181, 39, 20, 33, 34, 51, 58, 67, 64, 55, 44, + 35, 32, 31, 39, 193, 207, 187, 186, 182, 159, 160, 137, 133, 127, 127, 130, + 137, 143, 147, 155, 168, 182, 200, 197, 199, 109, 33, 29, 38, 42, 59, 67, + 44, 44, 35, 31, 30, 28, 145, 235, 243, 223, 36, 21, 30, 36, 48, 57, + 62, 55, 43, 35, 28, 31, 165, 235, 241, 253, 246, 250, 246, 248, 246, 234, + 96, 34, 34, 36, 49, 57, 51, 43, 35, 32, 33, 88, 196, 204, 196, 186, + 177, 171, 167, 166, 165, 172, 179, 189, 188, 198, 192, 109, 32, 21, 35, 43, + 44, 63, 60, 64, 49, 48, 28, 28, 103, 86, 32, 32, 30, 31, 32, 124, + 212, 226, 220, 219, 218, 217, 216, 216, 220, 223, 229, 214, 39, 27, 29, 37, + 43, 53, 65, 59, 48, 39, 34, 40, 53, 221, 216, 148, 37, 29, 33, 40, + 56, 61, 62, 74, 58, 57, 50, 39, 37, 36, 40, 169, 196, 203, 186, 183, + 183, 166, 170, 163, 168, 176, 179, 187, 192, 196, 202, 145, 36, 28, 35, 41, + 48, 52, 48, 40, 36, 34, 42, 151, 225, 236, 239, 238, 239, 239, 243, 244, + 247, 224, 34, 22, 31, 41, 49, 58, 57, 47, 41, 35, 31, 94, 225, 245, + 247, 248, 245, 246, 245, 242, 235, 164, 35, 26, 36, 44, 49, 55, 47, 40, + 34, 35, 39, 154, 235, 251, 251, 251, 249, 249, 252, 240, 111, 47, 48, 31, + 42, 38, 42, 38, 46, 40, 49, 139, 190, 185, 171, 145, 128, 109, 90, 75, + 60, 48, 34, 24, 16, 11, 6, 4, 2, 1, 0, 1, 2, 7, 11, 17, + 25, 34, 45, 58, 73, 92, 112, 128, 144, 163, 184, 179, 86, 30, 27, 34, + 47, 56, 64, 64, 58, 50, 41, 35, 27, 35, 131, 200, 196, 197, 177, 183, + 164, 153, 144, 141, 139, 143, 148, 154, 160, 167, 176, 198, 196, 205, 196, 52, + 34, 23, 35, 48, 62, 64, 53, 49, 39, 33, 30, 43, 199, 244, 239, 219, + 35, 21, 32, 38, 48, 57, 63, 58, 44, 36, 28, 39, 112, 232, 242, 255, + 250, 246, 245, 248, 246, 234, 97, 34, 34, 37, 49, 57, 51, 42, 35, 32, + 33, 88, 193, 201, 193, 183, 174, 168, 163, 161, 161, 164, 167, 180, 186, 193, + 201, 167, 32, 27, 36, 37, 49, 47, 64, 71, 61, 49, 45, 29, 35, 32, + 36, 47, 31, 34, 38, 172, 218, 217, 215, 217, 214, 213, 212, 213, 216, 220, + 225, 212, 39, 27, 29, 36, 42, 53, 65, 59, 49, 38, 35, 42, 46, 212, + 237, 214, 71, 32, 40, 40, 41, 49, 69, 68, 67, 56, 52, 50, 38, 38, + 33, 79, 191, 198, 199, 198, 178, 182, 172, 172, 175, 182, 185, 190, 195, 199, + 203, 147, 37, 30, 35, 41, 49, 53, 49, 41, 37, 35, 42, 151, 224, 237, + 240, 239, 240, 240, 243, 243, 247, 224, 34, 21, 30, 40, 48, 57, 57, 47, + 42, 35, 31, 94, 225, 245, 249, 250, 245, 246, 245, 242, 236, 165, 35, 26, + 37, 44, 49, 56, 46, 40, 34, 36, 39, 155, 236, 251, 251, 250, 247, 248, + 253, 245, 190, 164, 146, 159, 146, 135, 149, 146, 140, 148, 144, 182, 191, 187, + 163, 151, 128, 108, 91, 77, 61, 48, 34, 23, 16, 11, 6, 5, 2, 1, + 0, 0, 2, 6, 11, 16, 24, 32, 44, 56, 72, 88, 108, 123, 139, 159, + 176, 182, 148, 36, 38, 32, 33, 47, 57, 62, 62, 55, 47, 39, 30, 34, + 61, 195, 202, 198, 199, 180, 167, 166, 158, 156, 156, 157, 159, 164, 171, 179, + 188, 193, 208, 195, 164, 43, 30, 35, 37, 52, 57, 55, 54, 41, 34, 32, + 24, 85, 233, 249, 243, 231, 63, 33, 34, 37, 45, 55, 60, 55, 43, 35, + 29, 34, 97, 229, 245, 246, 245, 247, 244, 248, 247, 235, 97, 34, 34, 36, + 46, 53, 50, 42, 36, 33, 33, 87, 192, 199, 189, 179, 169, 163, 160, 156, + 153, 158, 162, 171, 184, 186, 194, 197, 72, 32, 36, 39, 43, 49, 63, 67, + 71, 49, 49, 43, 34, 40, 44, 33, 27, 32, 77, 201, 212, 215, 212, 209, + 209, 207, 208, 209, 211, 218, 224, 210, 37, 25, 27, 35, 41, 51, 63, 56, + 49, 37, 28, 35, 44, 209, 243, 242, 174, 41, 27, 30, 49, 48, 60, 65, + 72, 65, 58, 54, 40, 35, 36, 31, 119, 195, 203, 193, 201, 187, 181, 180, + 182, 186, 189, 194, 199, 202, 207, 149, 37, 29, 35, 43, 50, 56, 52, 43, + 38, 34, 40, 150, 225, 239, 242, 241, 242, 240, 243, 241, 245, 222, 34, 21, + 29, 37, 45, 54, 54, 45, 39, 33, 30, 94, 227, 248, 250, 251, 246, 247, + 245, 243, 237, 165, 36, 26, 37, 45, 50, 57, 48, 41, 34, 36, 40, 156, + 237, 252, 251, 249, 249, 250, 255, 253, 242, 239, 232, 216, 214, 208, 208, 203, + 206, 203, 203, 203, 202, 195, 169, 148, 130, 111, 89, 75, 62, 47, 33, 20, + 15, 12, 6, 5, 2, 1, 0, 0, 2, 6, 10, 15, 22, 29, 41, 53, + 68, 85, 103, 118, 135, 154, 166, 182, 177, 73, 35, 32, 32, 40, 54, 63, + 65, 60, 52, 43, 34, 34, 45, 101, 198, 208, 197, 199, 188, 175, 174, 171, + 171, 172, 172, 174, 183, 190, 200, 198, 213, 203, 101, 36, 34, 29, 48, 58, + 61, 56, 54, 36, 36, 40, 47, 168, 241, 250, 242, 228, 99, 32, 35, 34, + 43, 52, 57, 54, 42, 34, 25, 39, 46, 217, 242, 249, 255, 245, 246, 250, + 248, 235, 98, 34, 34, 35, 44, 51, 48, 42, 37, 34, 32, 85, 191, 199, + 187, 176, 166, 159, 154, 152, 149, 153, 160, 162, 177, 187, 186, 192, 141, 38, + 41, 39, 36, 53, 59, 60, 74, 67, 54, 49, 43, 51, 44, 37, 28, 27, + 140, 205, 206, 212, 208, 203, 203, 203, 202, 204, 209, 216, 225, 210, 35, 22, + 27, 35, 42, 50, 62, 55, 46, 40, 28, 28, 46, 217, 239, 235, 228, 115, + 36, 29, 37, 47, 53, 61, 69, 76, 65, 53, 52, 35, 37, 39, 39, 164, + 199, 199, 205, 202, 188, 192, 189, 193, 196, 201, 205, 207, 211, 152, 36, 28, + 35, 42, 51, 57, 54, 44, 37, 33, 39, 150, 227, 241, 243, 244, 245, 242, + 243, 240, 242, 221, 34, 23, 28, 36, 42, 51, 52, 43, 37, 31, 28, 94, + 228, 249, 250, 250, 246, 247, 246, 243, 238, 167, 36, 25, 36, 44, 51, 58, + 49, 41, 34, 36, 40, 157, 239, 252, 251, 250, 250, 251, 254, 253, 243, 236, + 226, 165, 104, 57, 49, 62, 97, 163, 201, 205, 196, 191, 164, 152, 132, 114, + 93, 78, 63, 49, 34, 22, 15, 12, 6, 5, 2, 1, 0, 0, 1, 6, + 8, 13, 20, 27, 36, 48, 62, 78, 96, 111, 127, 146, 167, 173, 181, 146, + 32, 25, 42, 39, 54, 64, 67, 64, 57, 47, 37, 34, 32, 44, 156, 205, + 214, 201, 196, 196, 190, 188, 185, 185, 186, 188, 193, 201, 206, 210, 209, 189, + 34, 34, 26, 36, 48, 56, 57, 44, 39, 28, 28, 30, 87, 212, 234, 245, + 240, 230, 159, 47, 37, 34, 42, 50, 56, 56, 46, 38, 36, 27, 35, 147, + 234, 255, 244, 252, 253, 255, 250, 234, 97, 34, 33, 34, 41, 49, 48, 44, + 39, 34, 30, 84, 193, 200, 186, 173, 164, 157, 152, 148, 150, 145, 155, 156, + 167, 186, 188, 192, 191, 68, 42, 29, 38, 42, 55, 61, 70, 77, 62, 54, + 44, 46, 37, 36, 29, 42, 185, 208, 207, 203, 202, 202, 197, 198, 199, 201, + 206, 214, 225, 210, 34, 21, 27, 36, 42, 51, 61, 55, 46, 44, 33, 27, + 47, 220, 239, 244, 235, 202, 60, 36, 30, 38, 44, 54, 66, 76, 74, 57, + 63, 47, 37, 38, 29, 79, 194, 210, 205, 209, 206, 201, 197, 201, 204, 209, + 213, 214, 215, 155, 36, 26, 32, 39, 49, 56, 53, 43, 37, 32, 38, 150, + 228, 242, 244, 245, 246, 243, 242, 238, 241, 220, 35, 24, 29, 37, 42, 51, + 52, 42, 36, 29, 27, 93, 230, 251, 249, 249, 245, 246, 245, 242, 238, 167, + 35, 24, 34, 43, 51, 58, 50, 42, 34, 36, 41, 157, 237, 252, 252, 252, + 251, 250, 250, 245, 233, 223, 106, 41, 39, 38, 25, 37, 39, 42, 87, 186, + 189, 186, 167, 146, 134, 117, 99, 84, 66, 51, 37, 25, 16, 12, 6, 5, + 3, 1, 0, 0, 1, 5, 7, 12, 18, 24, 33, 45, 58, 72, 88, 104, + 119, 138, 160, 163, 178, 178, 83, 26, 37, 39, 48, 59, 66, 67, 63, 56, + 45, 37, 28, 43, 65, 177, 203, 213, 206, 205, 201, 198, 195, 196, 197, 199, + 204, 208, 215, 216, 195, 80, 37, 26, 34, 48, 62, 68, 64, 43, 33, 31, + 27, 37, 172, 232, 239, 240, 235, 228, 192, 50, 37, 33, 40, 47, 56, 59, + 52, 46, 36, 37, 33, 79, 224, 235, 251, 251, 255, 255, 249, 234, 97, 34, + 33, 33, 41, 49, 49, 45, 40, 35, 30, 83, 196, 202, 188, 175, 164, 155, + 150, 145, 146, 137, 150, 157, 163, 176, 183, 192, 201, 127, 24, 26, 38, 44, + 47, 61, 67, 70, 63, 63, 48, 46, 38, 26, 26, 97, 202, 211, 203, 200, + 203, 192, 191, 191, 195, 197, 203, 213, 224, 210, 33, 20, 28, 39, 44, 53, + 62, 55, 49, 40, 30, 30, 51, 221, 238, 252, 254, 233, 131, 39, 38, 36, + 35, 48, 62, 67, 81, 63, 59, 55, 46, 34, 37, 26, 131, 210, 215, 211, + 217, 206, 205, 209, 210, 215, 220, 220, 220, 157, 35, 25, 30, 38, 48, 56, + 53, 43, 36, 32, 39, 151, 230, 244, 245, 243, 247, 243, 241, 237, 241, 221, + 37, 27, 32, 39, 45, 53, 53, 43, 36, 30, 26, 93, 232, 253, 250, 247, + 244, 245, 245, 243, 238, 165, 35, 23, 33, 41, 50, 59, 49, 42, 33, 35, + 40, 156, 235, 250, 252, 252, 252, 251, 248, 240, 225, 106, 34, 32, 31, 25, + 26, 29, 22, 36, 37, 89, 185, 188, 164, 154, 135, 118, 103, 87, 67, 50, + 38, 25, 17, 12, 6, 5, 3, 1, 0, 0, 1, 5, 6, 10, 16, 22, + 30, 41, 53, 65, 82, 95, 110, 128, 142, 159, 171, 172, 153, 67, 32, 35, + 40, 49, 59, 63, 64, 61, 54, 46, 37, 28, 30, 52, 178, 204, 210, 216, + 209, 205, 202, 203, 206, 209, 213, 213, 209, 197, 95, 34, 29, 38, 42, 50, + 64, 66, 57, 36, 28, 26, 31, 94, 214, 228, 228, 232, 233, 233, 217, 106, + 35, 27, 37, 44, 55, 61, 62, 56, 43, 33, 25, 44, 139, 229, 242, 255, + 255, 255, 247, 231, 97, 34, 32, 32, 42, 51, 51, 46, 42, 35, 29, 83, + 199, 206, 191, 177, 166, 156, 148, 142, 140, 138, 146, 154, 161, 169, 174, 184, + 197, 175, 39, 27, 33, 46, 45, 57, 63, 69, 64, 60, 43, 36, 37, 36, + 39, 158, 204, 209, 196, 198, 196, 184, 184, 186, 189, 194, 201, 211, 224, 209, + 33, 20, 29, 41, 48, 56, 64, 55, 48, 31, 29, 33, 54, 222, 236, 246, + 251, 245, 224, 89, 33, 34, 37, 45, 55, 60, 74, 67, 58, 57, 53, 39, + 28, 32, 46, 170, 211, 226, 213, 214, 212, 216, 217, 222, 225, 224, 222, 158, + 34, 24, 29, 37, 49, 56, 53, 43, 36, 32, 38, 151, 232, 247, 244, 243, + 244, 241, 241, 239, 241, 223, 38, 30, 35, 43, 48, 56, 56, 46, 38, 30, + 26, 93, 233, 254, 249, 246, 243, 244, 245, 243, 237, 165, 34, 23, 32, 40, + 50, 59, 50, 41, 32, 34, 39, 155, 232, 247, 249, 251, 252, 252, 251, 238, + 180, 51, 42, 35, 42, 38, 39, 40, 39, 34, 29, 42, 172, 182, 168, 152, + 136, 118, 102, 85, 64, 47, 34, 24, 16, 12, 7, 5, 3, 1, 0, 0, + 1, 4, 6, 8, 14, 20, 26, 36, 46, 59, 74, 86, 101, 117, 131, 156, + 160, 176, 183, 130, 45, 33, 39, 41, 48, 54, 57, 63, 62, 56, 43, 40, + 35, 30, 60, 141, 206, 204, 209, 207, 204, 205, 207, 209, 209, 207, 183, 74, + 38, 32, 29, 42, 52, 59, 63, 59, 47, 39, 36, 34, 60, 184, 216, 233, + 222, 232, 228, 225, 224, 173, 38, 28, 33, 39, 50, 61, 65, 64, 54, 46, + 36, 31, 40, 158, 225, 238, 246, 249, 242, 229, 96, 34, 32, 33, 44, 53, + 52, 47, 41, 34, 27, 82, 198, 207, 193, 180, 168, 158, 147, 141, 138, 146, + 142, 142, 158, 169, 175, 183, 193, 191, 95, 30, 35, 30, 52, 51, 59, 68, + 54, 50, 51, 37, 25, 26, 69, 190, 203, 209, 200, 190, 178, 188, 179, 181, + 186, 192, 199, 209, 221, 205, 32, 20, 30, 42, 49, 57, 65, 56, 43, 32, + 36, 33, 49, 223, 240, 247, 243, 250, 234, 182, 44, 27, 33, 41, 50, 56, + 58, 68, 71, 61, 50, 39, 36, 30, 30, 90, 208, 219, 223, 219, 217, 221, + 221, 225, 229, 226, 222, 158, 34, 24, 29, 38, 50, 58, 54, 44, 35, 32, + 37, 151, 233, 247, 243, 241, 242, 240, 241, 240, 243, 224, 39, 30, 36, 45, + 51, 59, 58, 48, 39, 31, 26, 92, 232, 254, 249, 246, 243, 245, 247, 245, + 238, 165, 35, 24, 31, 40, 50, 59, 50, 41, 32, 33, 38, 154, 233, 246, + 247, 248, 250, 250, 249, 235, 103, 39, 35, 36, 41, 47, 50, 49, 45, 34, + 25, 31, 121, 182, 173, 156, 137, 118, 100, 84, 65, 49, 35, 24, 16, 12, + 7, 5, 3, 1, 0, 1, 1, 2, 4, 8, 12, 16, 23, 29, 41, 53, + 65, 78, 94, 108, 126, 136, 156, 170, 181, 184, 129, 41, 26, 30, 34, 43, + 48, 46, 57, 67, 59, 53, 32, 35, 34, 39, 80, 161, 198, 209, 194, 197, + 205, 194, 160, 106, 37, 33, 35, 40, 42, 47, 51, 54, 51, 57, 35, 33, + 37, 47, 183, 209, 215, 218, 219, 221, 223, 225, 225, 210, 87, 36, 28, 35, + 38, 54, 64, 66, 64, 58, 39, 34, 25, 44, 134, 216, 226, 225, 243, 219, + 95, 37, 33, 34, 46, 54, 58, 51, 39, 32, 31, 49, 195, 205, 194, 180, + 174, 156, 152, 139, 140, 139, 139, 144, 153, 161, 169, 178, 190, 193, 153, 37, + 35, 34, 41, 47, 53, 65, 55, 46, 39, 42, 23, 26, 126, 192, 209, 200, + 193, 183, 179, 179, 174, 181, 177, 191, 196, 205, 214, 203, 30, 19, 29, 39, + 49, 59, 61, 57, 49, 41, 32, 34, 55, 221, 236, 247, 248, 240, 241, 227, + 105, 39, 25, 42, 40, 54, 52, 66, 61, 62, 59, 48, 42, 37, 34, 36, + 152, 215, 221, 225, 224, 217, 231, 224, 230, 229, 221, 153, 35, 23, 27, 37, + 53, 62, 54, 43, 35, 35, 31, 151, 228, 246, 242, 242, 241, 236, 242, 237, + 245, 227, 32, 31, 33, 41, 51, 57, 56, 49, 38, 31, 23, 96, 229, 246, + 255, 246, 243, 244, 251, 249, 235, 167, 37, 29, 36, 42, 49, 64, 49, 42, + 34, 28, 40, 148, 239, 244, 248, 243, 243, 242, 249, 227, 67, 25, 30, 43, + 41, 51, 57, 53, 51, 42, 30, 39, 91, 174, 170, 155, 136, 117, 96, 82, + 68, 54, 39, 27, 18, 13, 7, 4, 2, 2, 0, 0, 2, 2, 4, 6, + 10, 13, 18, 25, 35, 46, 58, 69, 83, 98, 118, 129, 149, 164, 176, 191, + 174, 128, 36, 27, 30, 30, 42, 53, 50, 55, 59, 57, 50, 41, 30, 31, + 35, 39, 46, 88, 104, 102, 77, 48, 44, 32, 34, 31, 36, 46, 50, 46, + 41, 42, 40, 35, 34, 41, 38, 134, 201, 211, 208, 209, 211, 213, 215, 218, + 219, 209, 173, 49, 27, 36, 42, 45, 49, 62, 66, 62, 50, 44, 33, 25, + 34, 46, 97, 137, 171, 230, 93, 29, 34, 41, 45, 50, 52, 46, 34, 27, + 22, 35, 194, 199, 194, 189, 174, 161, 147, 140, 139, 138, 138, 142, 149, 157, + 165, 175, 181, 196, 199, 111, 39, 29, 32, 40, 47, 62, 49, 49, 39, 35, + 27, 40, 169, 205, 203, 194, 190, 180, 173, 171, 172, 173, 187, 189, 193, 211, + 213, 196, 29, 20, 33, 42, 51, 58, 58, 54, 46, 39, 30, 35, 50, 213, + 238, 244, 237, 250, 243, 228, 199, 59, 35, 31, 42, 53, 47, 51, 56, 59, + 58, 51, 46, 31, 34, 30, 58, 207, 224, 228, 225, 230, 218, 229, 236, 227, + 227, 152, 35, 25, 31, 41, 54, 61, 54, 44, 35, 23, 29, 125, 233, 245, + 242, 241, 242, 236, 246, 249, 232, 223, 35, 22, 31, 39, 50, 55, 55, 48, + 39, 33, 28, 42, 225, 245, 243, 243, 246, 244, 247, 240, 239, 158, 31, 31, + 30, 42, 52, 59, 46, 44, 39, 32, 28, 104, 227, 251, 243, 244, 239, 247, + 233, 226, 34, 32, 28, 28, 40, 57, 58, 61, 48, 43, 36, 18, 89, 172, + 168, 159, 135, 114, 94, 79, 69, 56, 41, 27, 18, 13, 7, 4, 2, 2, + 0, 0, 1, 1, 3, 5, 9, 12, 16, 21, 30, 41, 50, 62, 75, 90, + 105, 119, 136, 151, 163, 178, 187, 180, 124, 50, 23, 28, 27, 34, 39, 42, + 45, 46, 55, 51, 38, 37, 41, 35, 37, 44, 33, 35, 34, 27, 32, 29, + 30, 44, 52, 49, 45, 39, 38, 44, 33, 33, 45, 48, 145, 199, 189, 200, + 198, 199, 200, 201, 202, 204, 207, 205, 201, 146, 51, 34, 33, 34, 36, 48, + 47, 50, 49, 38, 30, 30, 29, 34, 51, 75, 209, 218, 97, 28, 26, 39, + 49, 50, 50, 45, 38, 31, 25, 30, 135, 188, 183, 182, 172, 161, 148, 140, + 137, 138, 137, 141, 146, 154, 164, 174, 194, 200, 204, 189, 61, 34, 29, 39, + 44, 53, 50, 47, 36, 34, 28, 80, 197, 207, 193, 187, 185, 175, 170, 168, + 170, 177, 184, 186, 195, 197, 189, 159, 27, 21, 31, 39, 45, 49, 47, 45, + 42, 45, 31, 32, 40, 207, 222, 242, 242, 229, 239, 231, 215, 156, 43, 38, + 31, 42, 41, 38, 47, 48, 54, 53, 48, 49, 37, 35, 47, 102, 206, 220, + 228, 230, 240, 231, 235, 231, 212, 148, 30, 24, 29, 37, 47, 49, 44, 37, + 29, 41, 28, 89, 222, 240, 247, 239, 242, 239, 241, 236, 236, 199, 32, 13, + 24, 32, 40, 45, 44, 41, 34, 30, 25, 29, 218, 233, 238, 236, 246, 243, + 244, 236, 220, 142, 37, 33, 33, 43, 49, 53, 46, 42, 29, 30, 30, 88, + 232, 243, 237, 239, 239, 238, 250, 230, 40, 28, 30, 43, 49, 60, 60, 56, + 52, 32, 30, 30, 77, 167, 161, 150, 132, 112, 92, 79, 67, 55, 40, 27, + 17, 13, 7, 4, 2, 2, 0, 0, 1, 1, 3, 4, 6, 9, 13, 18, + 25, 34, 44, 54, 67, 79, 97, 111, 126, 142, 155, 164, 175, 182, 181, 141, + 54, 34, 41, 31, 41, 27, 37, 39, 36, 44, 45, 38, 28, 36, 33, 37, + 29, 32, 31, 27, 37, 43, 40, 43, 42, 42, 43, 36, 27, 34, 31, 37, + 45, 163, 191, 196, 192, 187, 186, 186, 187, 187, 187, 190, 193, 195, 197, 193, + 133, 43, 32, 28, 32, 37, 50, 45, 45, 38, 38, 37, 26, 31, 39, 127, + 226, 217, 88, 30, 35, 35, 40, 40, 39, 37, 33, 30, 27, 31, 79, 188, + 188, 177, 172, 157, 154, 138, 139, 139, 140, 142, 147, 155, 164, 175, 192, 201, + 217, 212, 145, 44, 35, 23, 43, 39, 55, 40, 31, 36, 32, 140, 197, 199, + 188, 184, 176, 168, 165, 165, 166, 177, 175, 185, 192, 192, 194, 118, 34, 29, + 36, 40, 43, 43, 42, 41, 40, 42, 34, 30, 34, 151, 223, 230, 230, 237, + 236, 227, 229, 211, 100, 43, 35, 33, 43, 41, 42, 38, 46, 47, 43, 39, + 43, 38, 24, 42, 152, 214, 226, 226, 234, 236, 235, 220, 213, 96, 35, 31, + 35, 38, 42, 44, 39, 36, 32, 28, 25, 45, 204, 224, 236, 242, 236, 235, + 236, 245, 219, 150, 36, 24, 29, 34, 40, 42, 42, 40, 37, 36, 31, 43, + 152, 222, 237, 236, 239, 229, 243, 231, 211, 86, 33, 26, 36, 39, 42, 39, + 36, 37, 30, 32, 20, 41, 216, 224, 244, 231, 237, 238, 231, 218, 71, 36, + 33, 32, 44, 52, 49, 49, 44, 24, 19, 30, 84, 164, 161, 145, 128, 109, + 92, 78, 64, 51, 38, 26, 17, 12, 7, 4, 2, 2, 0, 0, 1, 1, + 1, 2, 4, 6, 9, 13, 20, 28, 37, 46, 57, 69, 85, 98, 111, 125, + 140, 153, 164, 175, 183, 181, 180, 101, 40, 40, 20, 23, 22, 33, 30, 38, + 36, 42, 31, 36, 31, 35, 33, 36, 41, 41, 41, 38, 35, 42, 41, 36, + 36, 32, 27, 40, 39, 106, 187, 194, 193, 190, 174, 178, 173, 173, 172, 171, + 170, 171, 175, 180, 184, 194, 191, 141, 41, 32, 38, 25, 36, 29, 33, 32, + 39, 41, 26, 31, 59, 207, 219, 222, 93, 29, 38, 34, 38, 38, 37, 35, + 33, 34, 36, 40, 42, 134, 174, 172, 170, 157, 158, 145, 140, 140, 143, 146, + 149, 156, 166, 178, 189, 212, 219, 216, 216, 106, 50, 37, 36, 36, 50, 34, + 29, 32, 56, 183, 197, 195, 187, 178, 167, 162, 159, 158, 165, 171, 175, 179, + 173, 183, 176, 61, 36, 32, 35, 35, 35, 34, 33, 32, 34, 25, 29, 29, + 30, 62, 217, 220, 227, 224, 232, 234, 224, 221, 205, 103, 49, 23, 31, 35, + 31, 27, 38, 36, 36, 31, 32, 38, 37, 30, 56, 178, 212, 223, 231, 238, + 228, 219, 181, 51, 40, 35, 36, 34, 35, 34, 31, 33, 38, 32, 36, 33, + 128, 217, 221, 233, 232, 235, 232, 226, 215, 90, 28, 28, 31, 32, 35, 35, + 35, 35, 34, 35, 31, 36, 74, 204, 224, 229, 230, 231, 222, 217, 197, 42, + 36, 35, 40, 32, 38, 34, 35, 37, 32, 37, 28, 34, 134, 224, 221, 229, + 237, 234, 233, 227, 134, 32, 34, 40, 39, 35, 40, 41, 37, 37, 26, 28, + 133, 165, 160, 139, 123, 106, 91, 76, 59, 44, 32, 21, 14, 12, 7, 4, + 2, 2, 0, 0, 1, 1, 1, 2, 3, 4, 8, 11, 16, 24, 32, 40, + 50, 61, 71, 85, 99, 110, 122, 135, 148, 160, 169, 180, 175, 187, 170, 93, + 38, 35, 31, 27, 28, 31, 19, 28, 34, 33, 32, 36, 35, 30, 30, 33, + 37, 40, 32, 25, 33, 50, 47, 29, 44, 92, 160, 177, 188, 182, 179, 174, + 176, 161, 158, 157, 154, 154, 154, 157, 162, 166, 179, 183, 183, 187, 160, 68, + 37, 40, 30, 32, 36, 31, 28, 32, 34, 44, 127, 204, 222, 210, 94, 29, + 40, 34, 36, 36, 36, 32, 30, 32, 38, 41, 41, 64, 148, 176, 173, 164, + 151, 146, 143, 142, 145, 150, 151, 159, 170, 180, 200, 199, 214, 224, 206, 213, + 129, 36, 26, 38, 37, 35, 28, 24, 102, 195, 199, 191, 181, 168, 161, 159, + 153, 151, 154, 159, 170, 175, 181, 166, 112, 45, 40, 36, 36, 35, 34, 33, + 34, 33, 31, 29, 34, 34, 34, 39, 143, 214, 217, 218, 221, 218, 216, 226, + 217, 197, 83, 42, 39, 39, 35, 33, 34, 27, 25, 35, 37, 30, 28, 30, + 48, 61, 182, 227, 219, 210, 223, 212, 107, 42, 42, 38, 35, 34, 32, 32, + 30, 32, 33, 42, 34, 40, 47, 146, 210, 222, 221, 221, 222, 213, 172, 56, + 38, 38, 34, 34, 35, 33, 32, 33, 32, 34, 42, 42, 54, 139, 217, 221, + 220, 226, 221, 214, 120, 44, 35, 35, 35, 26, 30, 32, 34, 32, 27, 32, + 36, 47, 68, 185, 213, 225, 224, 215, 232, 213, 196, 78, 42, 31, 32, 30, + 31, 31, 30, 31, 37, 80, 170, 167, 149, 129, 117, 102, 88, 74, 55, 40, + 29, 19, 13, 11, 6, 4, 2, 2, 0, 0, 2, 1, 1, 1, 2, 3, + 7, 9, 14, 21, 28, 35, 44, 54, 63, 75, 91, 103, 112, 122, 131, 141, + 152, 173, 178, 176, 177, 181, 163, 118, 74, 46, 33, 28, 34, 25, 28, 24, + 28, 25, 22, 21, 25, 26, 20, 20, 22, 35, 34, 30, 61, 122, 167, 183, + 176, 176, 180, 177, 162, 158, 152, 139, 140, 138, 135, 135, 141, 146, 149, 152, + 166, 156, 176, 177, 177, 187, 117, 64, 37, 31, 26, 33, 35, 36, 47, 62, + 201, 214, 211, 206, 91, 44, 51, 35, 37, 38, 37, 35, 31, 34, 38, 37, + 36, 30, 101, 152, 165, 169, 159, 157, 148, 147, 150, 155, 157, 165, 176, 185, + 192, 196, 217, 217, 231, 224, 213, 205, 29, 33, 34, 33, 21, 32, 153, 192, + 196, 184, 170, 157, 155, 154, 145, 146, 150, 154, 155, 157, 156, 112, 46, 38, + 34, 33, 32, 34, 35, 36, 34, 35, 29, 35, 37, 39, 35, 46, 56, 143, + 207, 208, 210, 211, 207, 193, 204, 197, 193, 146, 96, 58, 38, 38, 30, 36, + 40, 39, 30, 32, 34, 47, 37, 43, 70, 180, 206, 215, 204, 132, 51, 40, + 38, 36, 34, 34, 35, 35, 35, 35, 40, 26, 32, 40, 46, 53, 157, 197, + 213, 209, 212, 210, 77, 40, 43, 34, 38, 38, 37, 35, 34, 35, 31, 32, + 37, 36, 39, 67, 184, 218, 214, 211, 215, 181, 54, 49, 31, 29, 34, 36, + 37, 38, 35, 37, 45, 41, 31, 29, 51, 95, 197, 203, 209, 225, 214, 209, + 207, 180, 98, 31, 33, 34, 17, 25, 29, 40, 81, 149, 169, 161, 137, 121, + 111, 98, 84, 71, 54, 40, 27, 18, 13, 11, 6, 4, 2, 2, 0, 0, + 2, 2, 1, 1, 1, 3, 4, 5, 9, 16, 21, 27, 36, 45, 53, 61, + 73, 86, 95, 106, 119, 127, 145, 145, 162, 172, 171, 176, 179, 184, 181, 160, + 124, 73, 73, 34, 32, 43, 38, 36, 34, 31, 31, 29, 26, 34, 59, 79, + 117, 158, 181, 184, 181, 176, 171, 170, 162, 153, 154, 140, 130, 131, 123, 120, + 118, 119, 125, 131, 134, 137, 142, 149, 164, 166, 180, 181, 169, 171, 135, 106, + 76, 78, 76, 82, 126, 172, 196, 203, 202, 197, 149, 134, 125, 131, 125, 125, + 125, 124, 122, 123, 124, 120, 115, 118, 121, 150, 164, 168, 162, 156, 152, 150, + 152, 158, 163, 170, 182, 190, 196, 200, 214, 218, 227, 224, 223, 133, 37, 26, + 39, 33, 20, 54, 190, 191, 190, 176, 164, 152, 150, 144, 132, 139, 137, 138, + 144, 155, 130, 117, 115, 110, 115, 117, 118, 120, 123, 124, 123, 122, 125, 125, + 125, 133, 127, 124, 130, 135, 192, 200, 187, 188, 186, 190, 188, 191, 185, 191, + 182, 175, 174, 164, 125, 120, 126, 118, 125, 128, 129, 124, 127, 123, 140, 150, + 198, 194, 176, 143, 124, 124, 124, 124, 122, 124, 126, 127, 127, 126, 127, 120, + 126, 119, 115, 129, 139, 196, 195, 204, 202, 158, 134, 125, 128, 128, 127, 129, + 129, 128, 126, 126, 123, 121, 126, 129, 120, 134, 151, 202, 201, 205, 204, 156, + 134, 120, 131, 128, 121, 125, 124, 130, 125, 123, 130, 123, 122, 131, 130, 133, + 161, 195, 196, 203, 200, 202, 201, 201, 174, 153, 76, 40, 36, 30, 72, 113, + 163, 174, 161, 149, 128, 112, 106, 92, 78, 66, 51, 39, 27, 17, 13, 9, + 6, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 2, 4, 8, 12, + 17, 22, 28, 34, 45, 53, 62, 72, 81, 91, 103, 111, 123, 133, 145, 153, + 158, 164, 169, 174, 178, 177, 176, 176, 177, 178, 180, 180, 139, 138, 136, 134, + 142, 158, 172, 178, 178, 178, 176, 176, 177, 174, 170, 166, 157, 152, 143, 136, + 128, 121, 115, 111, 106, 103, 102, 104, 106, 110, 116, 121, 129, 135, 144, 153, + 160, 166, 168, 169, 170, 171, 173, 175, 174, 176, 179, 183, 188, 190, 190, 188, + 182, 180, 179, 178, 177, 177, 178, 178, 177, 176, 175, 173, 167, 167, 167, 168, + 167, 166, 163, 160, 154, 151, 154, 155, 169, 179, 181, 201, 200, 201, 213, 218, + 230, 218, 213, 80, 35, 38, 35, 31, 35, 106, 191, 189, 180, 170, 154, 145, + 143, 136, 126, 123, 127, 131, 136, 141, 147, 152, 156, 159, 165, 168, 171, 173, + 175, 176, 176, 177, 176, 177, 177, 176, 174, 173, 173, 175, 178, 180, 177, 175, + 173, 173, 173, 175, 176, 176, 176, 175, 174, 172, 173, 174, 176, 176, 176, 178, + 179, 179, 178, 177, 181, 184, 187, 187, 186, 183, 179, 176, 176, 177, 176, 177, + 177, 178, 177, 177, 177, 177, 176, 175, 175, 178, 182, 185, 187, 188, 188, 185, + 179, 176, 177, 177, 178, 178, 178, 177, 178, 177, 176, 176, 177, 177, 177, 179, + 185, 188, 188, 188, 189, 186, 180, 177, 177, 177, 176, 177, 178, 178, 178, 178, + 178, 177, 176, 175, 176, 178, 181, 183, 185, 186, 185, 185, 187, 186, 182, 178, + 175, 171, 169, 168, 165, 163, 161, 156, 148, 136, 120, 107, 93, 82, 67, 54, + 45, 35, 26, 17, 9, 6, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 0, 0, 2, 3, 6, 9, 13, 18, 23, 27, 36, 44, 52, 60, 68, 77, + 88, 97, 109, 118, 128, 137, 143, 149, 156, 162, 167, 170, 174, 177, 178, 180, + 181, 183, 182, 185, 184, 181, 180, 181, 180, 177, 180, 178, 174, 172, 167, 163, + 157, 151, 141, 136, 127, 119, 112, 106, 99, 95, 90, 87, 87, 88, 90, 93, + 99, 105, 114, 121, 129, 137, 145, 151, 157, 162, 167, 170, 172, 174, 174, 175, + 175, 177, 176, 176, 177, 177, 175, 175, 175, 175, 174, 175, 176, 177, 176, 175, + 174, 172, 171, 169, 167, 165, 164, 164, 163, 162, 157, 160, 165, 165, 170, 183, + 193, 195, 199, 225, 215, 228, 219, 218, 166, 45, 35, 33, 39, 28, 39, 164, + 184, 188, 172, 160, 146, 138, 133, 125, 115, 113, 116, 120, 125, 131, 137, 144, + 151, 156, 163, 165, 169, 171, 172, 173, 174, 175, 173, 173, 173, 171, 170, 169, + 167, 166, 164, 163, 161, 160, 159, 159, 159, 160, 162, 164, 165, 167, 167, 169, + 170, 172, 173, 173, 174, 175, 175, 175, 175, 175, 173, 173, 172, 173, 172, 173, + 172, 173, 174, 175, 174, 175, 174, 175, 174, 175, 174, 175, 174, 174, 173, 174, + 173, 174, 173, 174, 173, 174, 173, 174, 173, 174, 174, 175, 174, 175, 174, 175, + 174, 175, 174, 175, 174, 174, 173, 174, 173, 174, 173, 174, 173, 175, 174, 175, + 174, 175, 174, 175, 174, 175, 174, 174, 173, 172, 171, 170, 170, 170, 169, 170, + 170, 170, 171, 173, 173, 174, 174, 173, 172, 170, 165, 160, 152, 144, 135, 125, + 110, 98, 86, 73, 59, 48, 38, 31, 23, 16, 8, 5, 2, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 1, 3, 5, 7, 9, 13, 17, 21, + 29, 36, 43, 49, 56, 66, 75, 83, 93, 102, 112, 120, 127, 133, 140, 146, + 151, 156, 159, 162, 164, 166, 168, 168, 167, 169, 170, 168, 168, 169, 168, 164, + 164, 162, 158, 156, 151, 146, 140, 134, 127, 120, 112, 104, 97, 90, 85, 80, + 75, 73, 72, 74, 75, 79, 84, 91, 99, 105, 113, 121, 128, 135, 139, 144, + 150, 153, 156, 157, 159, 159, 159, 160, 159, 159, 159, 159, 160, 160, 160, 159, + 159, 159, 161, 161, 162, 160, 160, 160, 158, 158, 158, 159, 160, 162, 163, 165, + 173, 175, 171, 177, 187, 188, 193, 205, 204, 218, 231, 228, 221, 201, 54, 31, + 33, 28, 31, 27, 82, 182, 184, 181, 164, 151, 140, 129, 122, 113, 105, 104, + 105, 109, 113, 118, 124, 130, 138, 142, 147, 150, 152, 156, 157, 157, 158, 158, + 157, 157, 156, 155, 154, 152, 151, 150, 148, 146, 145, 143, 143, 142, 142, 143, + 145, 147, 149, 150, 151, 152, 154, 155, 156, 156, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 159, 159, 159, 159, 159, 159, 159, 159, + 158, 158, 158, 158, 158, 157, 157, 157, 157, 157, 157, 157, 157, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 157, 157, + 158, 158, 158, 158, 158, 158, 158, 158, 159, 159, 159, 158, 158, 157, 157, 157, + 155, 153, 153, 153, 153, 154, 154, 154, 155, 156, 157, 157, 158, 157, 157, 155, + 150, 145, 137, 129, 122, 112, 100, 87, 75, 64, 52, 40, 32, 26, 19, 13, + 7, 4, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, + 3, 4, 6, 9, 13, 17, 24, 29, 34, 41, 47, 54, 64, 70, 79, 86, + 96, 104, 110, 116, 122, 128, 134, 139, 142, 146, 148, 150, 152, 153, 153, 154, + 151, 149, 149, 152, 153, 152, 147, 145, 141, 138, 134, 129, 123, 117, 110, 104, + 96, 89, 83, 76, 71, 67, 62, 60, 59, 62, 63, 65, 70, 76, 84, 89, + 97, 105, 111, 117, 123, 127, 133, 136, 138, 140, 141, 141, 142, 143, 143, 143, + 142, 141, 142, 142, 142, 141, 142, 142, 142, 143, 145, 145, 146, 147, 147, 148, + 150, 152, 156, 159, 162, 167, 176, 174, 184, 192, 195, 194, 190, 201, 213, 224, + 219, 221, 207, 92, 42, 29, 32, 32, 22, 40, 135, 185, 180, 173, 157, 143, + 132, 121, 110, 101, 95, 95, 93, 96, 101, 105, 110, 115, 122, 125, 131, 133, + 136, 139, 139, 140, 140, 141, 140, 139, 138, 137, 136, 135, 133, 133, 130, 129, + 127, 126, 125, 124, 125, 126, 127, 129, 131, 132, 134, 135, 136, 138, 139, 140, + 140, 140, 141, 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 140, 140, 140, 140, 139, 139, 139, + 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 141, 141, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, + 141, 141, 140, 140, 139, 139, 136, 135, 135, 135, 136, 136, 136, 136, 138, 138, + 139, 141, 141, 140, 139, 138, 133, 130, 123, 114, 107, 98, 87, 76, 65, 55, + 44, 34, 27, 21, 15, 10, 6, 3, 1, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 4, 7, 9, 12, 16, 20, 25, 30, + 36, 44, 50, 56, 65, 70, 80, 86, 91, 98, 103, 108, 116, 120, 123, 126, + 129, 132, 133, 134, 136, 138, 138, 138, 136, 135, 132, 130, 128, 125, 122, 119, + 114, 110, 105, 100, 92, 86, 79, 72, 67, 61, 56, 53, 48, 47, 46, 48, + 49, 51, 56, 61, 68, 73, 81, 88, 93, 99, 104, 109, 114, 116, 118, 120, + 120, 121, 123, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122, 123, 123, 124, + 125, 128, 129, 131, 135, 138, 141, 146, 151, 156, 162, 165, 171, 171, 193, 191, + 190, 208, 206, 202, 208, 201, 214, 203, 83, 37, 38, 36, 31, 23, 34, 46, + 178, 188, 178, 164, 148, 134, 122, 109, 96, 88, 84, 82, 82, 84, 87, 90, + 94, 98, 104, 107, 112, 114, 117, 118, 120, 120, 120, 121, 119, 119, 118, 117, + 116, 115, 113, 113, 110, 109, 107, 106, 106, 106, 105, 106, 107, 109, 111, 112, + 114, 115, 116, 119, 119, 120, 120, 121, 122, 122, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 122, 122, 122, 122, 122, 122, 121, 121, 120, 119, 116, 116, 115, 116, + 116, 116, 116, 116, 118, 119, 119, 121, 120, 120, 121, 118, 114, 111, 106, 98, + 91, 84, 72, 63, 55, 46, 36, 28, 22, 16, 11, 7, 4, 2, 1, 0, + 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 5, + 6, 9, 11, 14, 18, 22, 27, 33, 39, 44, 52, 57, 65, 70, 75, 80, + 86, 91, 98, 101, 105, 108, 111, 113, 114, 115, 111, 113, 114, 115, 115, 115, + 113, 112, 109, 107, 103, 101, 97, 93, 87, 82, 75, 70, 63, 57, 52, 48, + 44, 40, 37, 35, 35, 36, 36, 38, 44, 48, 54, 60, 66, 72, 78, 83, + 87, 91, 95, 97, 99, 102, 102, 102, 103, 104, 104, 104, 104, 103, 103, 103, + 103, 103, 103, 103, 104, 106, 108, 111, 115, 117, 122, 126, 132, 138, 146, 153, + 161, 166, 173, 182, 186, 185, 200, 184, 141, 143, 154, 146, 109, 51, 38, 34, + 36, 48, 29, 24, 29, 90, 189, 180, 173, 157, 140, 126, 110, 97, 86, 77, + 73, 71, 70, 71, 74, 76, 79, 84, 87, 90, 94, 97, 98, 101, 101, 102, + 101, 102, 100, 100, 99, 99, 98, 96, 95, 94, 91, 91, 90, 88, 87, 87, + 87, 88, 90, 92, 92, 94, 95, 97, 98, 100, 101, 101, 101, 101, 103, 103, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 102, 102, 102, 102, 101, 101, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 103, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, 103, 102, 102, + 101, 101, 98, 98, 97, 97, 97, 98, 97, 98, 99, 100, 101, 102, 102, 102, + 102, 100, 96, 94, 89, 83, 76, 70, 61, 53, 44, 38, 29, 22, 17, 13, + 8, 5, 2, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 4, 8, 10, 12, 16, 19, 24, 29, 32, + 41, 45, 50, 55, 59, 65, 69, 74, 79, 82, 86, 88, 91, 93, 94, 96, + 102, 101, 100, 100, 98, 97, 96, 96, 90, 88, 85, 82, 79, 75, 70, 65, + 59, 55, 49, 44, 41, 36, 32, 29, 26, 24, 24, 26, 26, 28, 32, 37, + 41, 46, 51, 58, 62, 66, 69, 74, 77, 79, 81, 83, 84, 84, 84, 84, + 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, 86, 87, 92, 96, 100, 103, + 109, 114, 123, 131, 140, 150, 159, 168, 173, 191, 185, 192, 175, 96, 37, 38, + 36, 39, 37, 29, 25, 35, 47, 43, 30, 37, 52, 164, 171, 175, 157, 150, + 132, 116, 98, 86, 76, 69, 63, 61, 58, 59, 60, 62, 65, 68, 71, 74, + 76, 79, 80, 82, 82, 82, 82, 83, 82, 82, 81, 81, 80, 78, 77, 76, + 74, 73, 72, 70, 70, 70, 70, 70, 72, 74, 74, 76, 77, 78, 79, 81, + 81, 82, 83, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, + 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 82, 81, 80, 80, 80, 79, 79, 79, 79, 79, 80, + 80, 82, 83, 84, 84, 83, 83, 82, 77, 76, 73, 67, 63, 56, 50, 43, + 35, 29, 23, 17, 12, 8, 6, 4, 2, 1, 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, + 7, 10, 13, 16, 20, 24, 29, 33, 37, 42, 46, 51, 55, 58, 62, 67, + 70, 72, 74, 77, 78, 79, 78, 78, 80, 82, 81, 80, 78, 76, 74, 71, + 68, 67, 63, 59, 55, 51, 47, 43, 37, 33, 29, 27, 24, 21, 18, 16, + 17, 18, 19, 20, 24, 28, 29, 34, 40, 44, 49, 52, 56, 59, 61, 64, + 65, 67, 67, 67, 67, 69, 69, 69, 69, 68, 68, 68, 68, 68, 70, 71, + 71, 73, 76, 81, 86, 90, 98, 105, 115, 125, 136, 149, 159, 170, 182, 187, + 191, 191, 107, 27, 34, 26, 32, 32, 26, 28, 36, 37, 39, 36, 45, 35, + 136, 180, 174, 166, 155, 135, 123, 107, 89, 75, 66, 59, 54, 50, 47, 47, + 48, 50, 52, 55, 57, 59, 61, 63, 65, 66, 66, 66, 66, 66, 67, 66, + 66, 64, 63, 62, 61, 60, 59, 57, 56, 55, 54, 54, 54, 55, 57, 58, + 59, 60, 60, 62, 63, 64, 66, 66, 66, 66, 67, 67, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 66, 66, 66, 66, 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 67, 66, 66, 66, 66, 66, 66, 66, 65, 66, + 66, 66, 66, 66, 66, 66, 67, 67, 67, 66, 66, 65, 65, 64, 64, 63, + 63, 63, 63, 63, 64, 64, 65, 65, 66, 67, 67, 67, 66, 66, 61, 60, + 57, 54, 49, 46, 40, 34, 28, 23, 19, 13, 9, 6, 4, 3, 1, 0, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 3, 4, 6, 9, 12, 14, 17, 22, 25, 28, 32, + 35, 38, 41, 44, 50, 53, 54, 58, 58, 60, 61, 63, 64, 64, 64, 65, + 63, 63, 62, 61, 58, 56, 53, 52, 49, 45, 43, 40, 34, 32, 28, 25, + 21, 18, 16, 15, 13, 12, 12, 12, 13, 15, 17, 19, 23, 26, 29, 33, + 36, 40, 42, 44, 47, 49, 50, 52, 52, 53, 53, 53, 53, 53, 54, 53, + 53, 53, 54, 54, 55, 55, 56, 60, 63, 68, 74, 80, 87, 96, 109, 122, + 133, 145, 158, 170, 183, 192, 182, 132, 39, 32, 36, 35, 42, 34, 33, 35, + 32, 34, 37, 36, 37, 102, 166, 182, 166, 153, 138, 125, 113, 100, 81, 68, + 58, 51, 46, 42, 38, 37, 38, 39, 40, 43, 44, 46, 49, 49, 50, 50, + 51, 51, 51, 51, 52, 51, 51, 51, 50, 49, 47, 47, 45, 45, 43, 42, + 42, 42, 42, 42, 44, 45, 46, 46, 47, 48, 48, 50, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, + 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, + 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, + 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, 51, 52, 52, 53, 51, 52, + 51, 51, 50, 50, 49, 49, 48, 49, 49, 49, 49, 49, 51, 51, 51, 53, + 53, 53, 53, 53, 51, 50, 46, 43, 39, 34, 30, 26, 21, 18, 14, 10, + 7, 4, 3, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 4, 6, 9, + 11, 13, 15, 18, 21, 24, 26, 28, 31, 33, 37, 40, 41, 44, 44, 47, + 48, 49, 50, 50, 50, 49, 49, 49, 48, 47, 46, 44, 41, 39, 37, 35, + 32, 28, 25, 24, 21, 18, 15, 12, 11, 9, 8, 7, 7, 7, 8, 10, + 12, 14, 17, 19, 22, 25, 28, 30, 33, 35, 35, 37, 38, 40, 39, 40, + 39, 40, 40, 40, 40, 41, 40, 40, 41, 41, 42, 42, 45, 48, 52, 56, + 63, 70, 79, 90, 103, 116, 128, 141, 154, 166, 178, 177, 163, 54, 32, 25, + 39, 39, 32, 39, 38, 33, 32, 35, 33, 36, 135, 163, 182, 173, 156, 143, + 127, 112, 102, 90, 72, 60, 51, 41, 37, 35, 30, 29, 29, 31, 31, 34, + 35, 36, 37, 38, 38, 39, 39, 40, 40, 40, 39, 39, 38, 38, 37, 35, + 35, 34, 33, 33, 32, 31, 31, 31, 31, 31, 32, 33, 34, 34, 35, 37, + 37, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 39, 40, 39, 40, + 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, + 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, + 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, 39, 40, + 39, 40, 40, 41, 40, 41, 39, 40, 39, 39, 37, 37, 37, 37, 37, 37, + 37, 37, 38, 38, 40, 40, 40, 40, 40, 40, 38, 36, 34, 31, 28, 26, + 22, 20, 17, 15, 11, 8, 5, 4, 2, 2, 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, 2, 4, 6, 7, 9, 11, 13, 15, 17, 18, 20, 21, 23, + 26, 27, 29, 32, 32, 34, 35, 37, 37, 37, 37, 37, 36, 36, 35, 34, + 34, 32, 31, 29, 27, 25, 22, 20, 17, 17, 14, 11, 10, 7, 7, 6, + 5, 4, 3, 5, 5, 6, 7, 8, 10, 12, 15, 17, 19, 21, 22, 25, + 25, 25, 26, 28, 28, 30, 28, 29, 30, 29, 29, 29, 29, 30, 30, 30, + 31, 31, 34, 37, 43, 46, 54, 62, 71, 82, 96, 109, 123, 137, 150, 160, + 171, 165, 51, 42, 28, 33, 40, 29, 30, 23, 19, 28, 28, 28, 82, 161, + 175, 176, 167, 154, 143, 132, 116, 100, 89, 79, 65, 53, 42, 34, 31, 29, + 23, 21, 21, 21, 22, 24, 25, 25, 25, 26, 26, 27, 27, 28, 27, 28, + 28, 28, 28, 28, 27, 25, 24, 24, 24, 24, 22, 22, 22, 22, 22, 22, + 22, 24, 24, 25, 25, 26, 26, 27, 27, 28, 27, 28, 27, 28, 27, 28, + 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, + 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, + 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, + 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 26, 26, + 26, 26, 26, 26, 26, 27, 26, 27, 27, 28, 28, 28, 29, 29, 30, 29, + 28, 26, 24, 23, 21, 19, 16, 14, 11, 9, 8, 5, 3, 3, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 5, 8, 10, + 11, 13, 13, 14, 15, 17, 18, 19, 22, 22, 25, 25, 26, 27, 26, 26, + 27, 26, 26, 26, 25, 25, 26, 25, 22, 21, 20, 19, 16, 14, 12, 11, + 9, 8, 7, 5, 5, 4, 3, 3, 3, 3, 3, 5, 5, 6, 7, 9, + 10, 12, 13, 15, 16, 17, 18, 19, 19, 20, 20, 20, 20, 20, 22, 21, + 21, 21, 21, 22, 22, 22, 24, 24, 26, 31, 34, 39, 48, 55, 63, 75, + 88, 103, 116, 130, 145, 154, 157, 87, 37, 31, 39, 23, 31, 32, 29, 31, + 29, 44, 96, 150, 173, 173, 171, 166, 156, 146, 134, 120, 101, 88, 79, 70, + 58, 46, 34, 26, 25, 24, 18, 16, 16, 16, 16, 16, 18, 18, 18, 18, + 19, 19, 19, 20, 19, 19, 21, 21, 21, 21, 19, 19, 18, 18, 18, 17, + 16, 16, 15, 16, 15, 15, 16, 16, 17, 17, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, + 20, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21, + 21, 21, 22, 22, 21, 21, 20, 19, 18, 17, 16, 14, 12, 10, 6, 6, + 5, 3, 3, 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, 0, + 0, 2, 2, 3, 3, 5, 6, 7, 7, 9, 10, 11, 11, 12, 14, 15, + 16, 16, 18, 19, 18, 18, 17, 17, 17, 17, 16, 16, 17, 16, 15, 14, + 13, 12, 10, 9, 7, 7, 6, 5, 4, 3, 3, 3, 2, 1, 1, 2, + 2, 2, 3, 4, 5, 7, 8, 8, 8, 10, 11, 12, 11, 11, 12, 13, + 13, 13, 13, 13, 14, 13, 14, 14, 14, 15, 15, 15, 15, 16, 19, 24, + 27, 32, 40, 47, 56, 67, 80, 95, 109, 123, 137, 144, 122, 46, 41, 35, + 55, 92, 84, 92, 111, 127, 157, 176, 175, 172, 174, 171, 164, 157, 145, 133, + 120, 103, 89, 81, 68, 58, 48, 37, 25, 19, 17, 17, 14, 12, 12, 11, + 11, 11, 12, 12, 12, 13, 12, 14, 14, 14, 14, 14, 14, 14, 13, 13, + 13, 12, 12, 11, 10, 10, 10, 9, 9, 9, 8, 9, 9, 10, 10, 10, + 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 13, 13, 13, 14, 13, 14, + 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, + 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, + 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, + 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 13, 11, 11, 11, 11, + 11, 11, 11, 12, 13, 13, 13, 13, 14, 13, 13, 13, 13, 12, 10, 10, + 9, 9, 6, 5, 4, 4, 3, 2, 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, 1, 1, 0, 0, 0, 0, 1, 2, 1, 3, 3, 4, 4, 6, + 6, 7, 6, 8, 9, 11, 11, 12, 12, 13, 11, 12, 12, 11, 12, 11, + 11, 11, 11, 10, 9, 9, 8, 7, 6, 4, 3, 3, 3, 2, 2, 2, + 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 2, 4, 5, 5, 5, 5, + 6, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 10, + 9, 9, 10, 11, 14, 18, 22, 26, 33, 41, 53, 62, 75, 89, 102, 117, + 130, 139, 136, 150, 152, 160, 163, 165, 178, 167, 177, 169, 175, 181, 176, 174, + 169, 157, 149, 139, 125, 114, 103, 91, 78, 73, 60, 51, 39, 29, 20, 14, + 13, 12, 9, 7, 6, 6, 5, 6, 6, 7, 7, 7, 7, 8, 8, 9, + 9, 9, 9, 9, 9, 9, 8, 8, 6, 7, 6, 6, 5, 5, 5, 5, + 4, 6, 5, 6, 5, 7, 6, 7, 6, 8, 8, 10, 8, 8, 8, 8, + 8, 8, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, + 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, + 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, + 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 8, + 7, 7, 6, 6, 6, 6, 6, 7, 6, 7, 8, 8, 8, 8, 9, 9, + 8, 8, 8, 7, 6, 6, 4, 4, 3, 1, 3, 3, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 3, 3, 4, 3, 5, 4, 4, 6, 8, 7, 8, 8, 9, + 8, 8, 7, 7, 7, 7, 7, 6, 7, 7, 6, 5, 6, 5, 4, 2, + 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, + 6, 5, 5, 5, 5, 6, 6, 6, 7, 8, 10, 14, 17, 22, 29, 36, + 46, 57, 69, 83, 95, 109, 122, 132, 138, 153, 149, 157, 157, 165, 170, 172, + 170, 169, 170, 167, 159, 152, 145, 139, 133, 124, 112, 102, 91, 79, 67, 59, + 53, 43, 29, 22, 16, 11, 10, 9, 4, 4, 2, 3, 2, 3, 2, 4, + 3, 3, 3, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 5, 4, 5, + 4, 4, 4, 3, 3, 4, 3, 4, 3, 5, 4, 5, 4, 5, 4, 5, + 4, 5, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, + 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, + 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, + 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, + 4, 5, 4, 5, 4, 5, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, + 5, 5, 5, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 2, 0, 2, + 3, 4, 3, 3, 4, 4, 4, 4, 3, 4, 3, 3, 3, 3, 3, 4, + 2, 2, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 1, 1, + 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2, 3, 4, + 5, 10, 13, 17, 24, 32, 39, 49, 62, 73, 85, 98, 110, 121, 130, 133, + 149, 153, 154, 153, 156, 157, 157, 160, 152, 147, 149, 139, 125, 123, 111, 103, + 96, 87, 77, 67, 59, 52, 43, 34, 22, 15, 11, 8, 5, 4, 3, 2, + 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 3, 2, 2, 2, 1, 2, + 2, 2, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, + 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 3, 4, 6, 10, 15, 21, 26, 35, 44, 54, 65, + 74, 86, 94, 105, 117, 122, 128, 133, 136, 137, 139, 140, 140, 137, 133, 130, + 124, 118, 111, 106, 97, 90, 81, 73, 65, 56, 48, 41, 33, 28, 19, 14, + 9, 7, 6, 4, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 7, 12, + 17, 22, 31, 38, 48, 57, 66, 76, 84, 92, 102, 108, 112, 117, 120, 121, + 122, 122, 119, 117, 115, 111, 106, 100, 95, 90, 82, 75, 67, 60, 54, 47, + 37, 31, 26, 21, 16, 11, 8, 7, 5, 4, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 6, 9, 14, 19, 25, 32, 41, 48, 56, 64, 72, 80, + 89, 93, 97, 101, 103, 105, 105, 106, 102, 100, 96, 93, 89, 84, 80, 75, + 68, 61, 55, 49, 43, 38, 30, 24, 19, 15, 10, 8, 5, 4, 4, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 2, 4, 8, 12, 15, 21, 26, + 34, 40, 48, 55, 61, 66, 75, 80, 83, 87, 88, 88, 88, 89, 86, 84, + 81, 78, 75, 69, 65, 62, 54, 50, 44, 40, 35, 30, 24, 20, 13, 10, + 6, 4, 3, 3, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, + 4, 6, 9, 12, 16, 21, 27, 34, 39, 46, 51, 55, 61, 63, 66, 68, + 70, 71, 71, 71, 70, 68, 65, 62, 58, 54, 50, 47, 42, 39, 33, 29, + 25, 21, 17, 14, 8, 6, 4, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 2, 2, 2, 4, 5, 7, 9, 13, 16, 21, 25, 31, 36, + 40, 43, 47, 49, 51, 54, 55, 56, 56, 56, 54, 53, 51, 48, 44, 41, + 37, 35, 31, 28, 24, 21, 17, 14, 11, 8, 6, 4, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 4, 6, + 10, 12, 15, 19, 22, 26, 29, 32, 35, 36, 39, 40, 41, 41, 41, 41, + 41, 40, 37, 35, 33, 29, 27, 24, 21, 19, 17, 15, 12, 10, 6, 4, + 3, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 2, 3, 4, 7, 9, 10, 14, 16, 18, 21, 22, 23, 25, + 27, 29, 29, 30, 32, 32, 29, 27, 25, 24, 21, 20, 17, 16, 13, 12, + 11, 9, 6, 4, 3, 2, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 6, 8, + 11, 13, 14, 16, 17, 19, 19, 21, 21, 21, 21, 21, 20, 20, 18, 17, + 14, 13, 11, 11, 8, 8, 7, 5, 4, 2, 2, 1, 0, 0, 0, 0, + 0, 0, 0, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, + 1, 1, 2, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 15, + 15, 15, 14, 14, 12, 12, 9, 8, 6, 6, 5, 5, 4, 4, 2, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 2, 3, 4, 4, 5, + 6, 7, 8, 9, 9, 9, 9, 9, 8, 8, 8, 6, 6, 4, 3, 3, + 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 6, 6, 6, 5, + 5, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 1, 1, 2, 2, 2, 2, 3, 3, + 3, 4, 4, 4, 3, 2, 2, 2, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 1, 1, 2, 2, 2, 2, 2, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, + 4, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 3, 3, 3, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 3, 3, 3, 1, 0, 0, 0, 0, 0, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 4, 4, + 4, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 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, 2, 2, 2, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, + 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 0, 0, 0, 1, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 1, 0, + 2, 0, 2, 0, 2, 0, 1, 0, 2, 0, 2, 0, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 2, 2, 4, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 2, 2, + 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, + 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, 1, 1, 2, 0, 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, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 1, 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, + 2, 1, 3, 3, 2, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 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, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 1, 1, 0, 0, 0, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 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, 0, 0, 0, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, + 3, 2, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, + 0, 0, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 2, 1, + 2, 1, 2, 0, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 1, 2, 2, 4, 2, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, + 1, 0, 1, 3, 3, 2, 3, 2, 3, 2, 2, 2, 1, 1, 3, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 2, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, + 0, 0, 1, 0, 1, 1, 2, 0, 1, 0, 0, 0, 1, 1, 1, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 2, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 1, 0, 0, 0, 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, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 1, 0, 2, 1, 3, 1, 2, 0, 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, 1, 0, 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, 0, + 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 2, 4, + 5, 3, 2, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 0, 1, 2, 2, 3, 2, + 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, + 1, 2, 3, 3, 3, 3, 1, 0, 2, 1, 0, 1, 1, 2, 2, 2, + 1, 1, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 3, 2, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, + 2, 2, 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, 0, 2, 2, 2, 2, + 2, 2, 2, 0, 2, 0, 1, 0, 1, 1, 2, 1, 2, 3, 1, 1, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 2, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, + 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 2, 3, 2, 2, 0, 1, 1, 2, + 0, 0, 1, 1, 2, 2, 4, 4, 0, 1, 3, 2, 3, 2, 1, 2, + 2, 2, 2, 2, 2, 2, 1, 0, 2, 0, 1, 1, 3, 2, 2, 2, + 2, 2, 3, 3, 3, 3, 1, 1, 2, 1, 0, 1, 1, 1, 3, 2, + 2, 2, 0, 0, 0, 0, 0, 0, 1, 2, 1, 3, 1, 2, 1, 0, + 1, 1, 3, 2, 0, 1, 2, 3, 3, 3, 2, 3, 2, 1, 0, 0, + 1, 0, 0, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 3, 3, 3, 2, 0, 0, + 0, 1, 0, 0, 2, 2, 5, 3, 2, 0, 2, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 2, 0, 2, 0, 2, 2, 2, 2, + 4, 2, 3, 3, 3, 3, 3, 3, 2, 0, 2, 1, 2, 2, 4, 3, + 1, 2, 2, 3, 2, 2, 2, 1, 3, 2, 1, 0, 1, 0, 0, 1, + 2, 0, 1, 2, 2, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 2, 1, 1, 0, 1, 0, + 1, 2, 1, 3, 3, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 1, + 0, 1, 3, 2, 2, 1, 2, 1, 1, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, + 3, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 4, 3, 1, 0, + 2, 3, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 0, 1, 0, + 0, 0, 1, 0, 1, 1, 1, 0, 3, 3, 3, 3, 1, 2, 0, 0, + 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 2, 2, 2, 2, 1, 0, 0, 0, 1, 2, 0, 0, 0, 2, 3, 2, + 2, 2, 2, 1, 0, 0, 0, 0, 0, 1, 2, 2, 0, 2, 1, 0, + 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 2, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 1, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 3, 2, 2, 2, 1, 1, + 1, 2, 1, 3, 3, 2, 3, 3, 2, 2, 2, 2, 2, 2, 1, 2, + 1, 0, 2, 1, 2, 3, 2, 2, 2, 3, 2, 3, 3, 2, 0, 0, + 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 2, 0, 3, 1, 3, 1, 3, 0, 1, 1, 2, 3, + 3, 2, 2, 1, 1, 0, 1, 0, 2, 1, 3, 3, 2, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 2, 4, 2, 2, 1, 2, 1, 0, + 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 3, 1, 0, 2, 2, 1, 0, 1, 1, 0, 0, 0, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 1, 2, 2, 1, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, + 2, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 4, 3, 2, 1, + 2, 1, 1, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 1, 2, + 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 2, 0, + 2, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, + 4, 3, 3, 1, 2, 1, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 3, 3, 2, 1, 0, 3, 2, 1, 0, 0, 0, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 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, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, + 2, 3, 1, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 0, 3, 3, 2, 0, 0, 0, 2, 2, 2, 2, + 2, 2, 0, 0, 0, 1, 0, 0, 1, 3, 5, 4, 0, 0, 0, 0, + 0, 2, 1, 0, 0, 0, 0, 0, 1, 1, 6, 4, 1, 0, 1, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 2, 2, 1, 1, + 1, 0, 0, 3, 3, 3, 2, 2, 4, 0, 0, 0, 3, 6, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, + 1, 1, 2, 3, 2, 0, 1, 2, 1, 3, 3, 3, 5, 2, 4, 3, + 1, 0, 0, 2, 1, 1, 1, 1, 2, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 2, 2, + 1, 2, 1, 0, 0, 0, 0, 0, 0, 3, 6, 3, 0, 0, 2, 3, + 2, 4, 3, 1, 0, 1, 3, 3, 3, 5, 5, 6, 2, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, + 2, 1, 1, 1, 3, 2, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 3, 1, 0, 1, 1, 3, 1, 0, 1, 0, 2, 1, + 3, 1, 4, 2, 3, 1, 3, 0, 2, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 2, 0, 3, 1, 3, 1, 3, 0, 1, 1, 2, 2, 1, 0, + 0, 0, 0, 0, 1, 0, 0, 2, 3, 3, 4, 3, 5, 4, 2, 2, + 2, 2, 1, 1, 2, 1, 1, 1, 2, 0, 0, 0, 2, 4, 2, 0, + 0, 0, 2, 2, 2, 0, 2, 0, 0, 0, 1, 1, 0, 0, 0, 1, + 4, 2, 2, 0, 1, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 3, + 8, 5, 2, 1, 2, 1, 0, 0, 1, 1, 1, 1, 1, 2, 1, 1, + 2, 3, 4, 4, 4, 4, 3, 1, 1, 1, 4, 5, 5, 5, 6, 2, + 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 1, 4, 7, 4, 3, 0, 2, 3, 5, 4, + 4, 5, 6, 6, 5, 4, 2, 2, 5, 6, 0, 0, 3, 4, 3, 1, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, + 1, 1, 2, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 5, 3, 4, 1, 2, 4, 3, 3, 5, 6, 2, 0, 2, 4, 5, 5, + 9, 7, 3, 2, 4, 4, 2, 1, 0, 1, 6, 6, 3, 1, 0, 0, + 2, 4, 1, 0, 0, 2, 4, 4, 2, 1, 0, 1, 3, 2, 3, 1, + 0, 0, 1, 1, 0, 0, 1, 2, 4, 3, 0, 1, 6, 9, 8, 7, + 6, 3, 5, 2, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, + 0, 0, 0, 1, 2, 2, 5, 7, 10, 14, 18, 14, 2, 0, 1, 2, + 3, 3, 1, 1, 1, 3, 3, 4, 4, 2, 1, 2, 3, 5, 9, 8, + 8, 6, 2, 0, 3, 1, 0, 0, 0, 1, 2, 2, 3, 2, 2, 1, + 0, 1, 5, 5, 3, 4, 4, 2, 1, 2, 3, 4, 2, 2, 1, 1, + 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 4, 4, 6, 2, 0, 0, 0, 0, + 6, 5, 0, 0, 0, 0, 6, 6, 6, 1, 2, 0, 0, 0, 0, 2, + 3, 6, 5, 3, 1, 2, 4, 4, 5, 3, 7, 8, 2, 1, 1, 0, + 1, 5, 10, 11, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 7, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 11, 12, 7, + 0, 0, 0, 2, 0, 7, 1, 7, 0, 9, 5, 6, 0, 3, 12, 8, + 0, 0, 5, 8, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 1, 0, 0, 0, 0, 0, 3, 4, 3, 4, 1, 0, 5, 0, 6, 9, + 2, 0, 0, 0, 2, 5, 8, 7, 0, 0, 7, 1, 3, 0, 0, 0, + 8, 22, 6, 0, 0, 0, 0, 5, 0, 0, 0, 0, 4, 3, 0, 0, + 0, 0, 2, 1, 5, 2, 0, 0, 4, 0, 1, 0, 3, 0, 13, 0, + 0, 0, 20, 30, 21, 19, 20, 13, 14, 4, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 4, 7, 15, 27, 36, + 52, 23, 9, 0, 0, 4, 10, 7, 0, 0, 5, 2, 8, 6, 4, 3, + 0, 0, 5, 5, 23, 17, 19, 16, 4, 0, 4, 3, 0, 0, 0, 4, + 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 4, 1, 0, 0, + 4, 4, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 3, 6, + 8, 3, 0, 0, 0, 0, 9, 4, 0, 0, 0, 0, 5, 10, 2, 5, + 15, 19, 18, 18, 21, 26, 32, 34, 38, 38, 35, 29, 27, 29, 24, 22, + 21, 14, 3, 0, 0, 0, 0, 3, 8, 14, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 8, 7, 3, 0, 0, 0, 0, 0, 0, + 0, 2, 7, 11, 10, 6, 0, 1, 15, 27, 28, 18, 28, 21, 27, 28, + 23, 24, 17, 21, 24, 15, 4, 0, 6, 8, 2, 0, 0, 0, 2, 1, + 0, 0, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 1, 2, 13, 0, + 2, 0, 0, 14, 23, 22, 18, 12, 15, 15, 16, 19, 23, 23, 21, 20, + 23, 24, 16, 16, 13, 2, 21, 0, 5, 5, 0, 0, 17, 15, 17, 15, + 18, 21, 24, 21, 17, 13, 12, 16, 14, 17, 15, 18, 7, 11, 4, 1, + 0, 0, 2, 1, 3, 3, 9, 22, 37, 16, 0, 0, 13, 21, 35, 29, + 2, 0, 3, 0, 0, 0, 0, 0, 8, 16, 33, 39, 25, 33, 33, 39, + 43, 43, 34, 22, 12, 7, 0, 0, 0, 0, 0, 2, 6, 11, 17, 19, + 28, 43, 38, 46, 47, 35, 29, 33, 33, 14, 6, 0, 0, 0, 4, 0, + 5, 0, 0, 0, 4, 7, 18, 18, 17, 17, 17, 15, 9, 9, 13, 17, + 18, 16, 13, 8, 0, 1, 4, 5, 3, 3, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 4, 10, 12, 10, 2, + 0, 0, 4, 5, 12, 17, 34, 45, 50, 40, 22, 10, 0, 0, 0, 0, + 0, 6, 21, 34, 40, 54, 51, 31, 12, 4, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 2, 4, 4, 0, 0, 0, 0, 2, 4, 3, 1, + 0, 0, 0, 3, 3, 4, 6, 5, 4, 2, 3, 1, 0, 3, 0, 12, + 23, 28, 33, 26, 19, 22, 27, 36, 25, 11, 0, 0, 17, 3, 8, 6, + 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 3, 4, 2, 0, 4, 13, 3, 22, 38, 57, 59, 58, 56, 53, + 50, 53, 57, 61, 59, 59, 61, 60, 51, 51, 34, 34, 11, 6, 14, 0, + 4, 23, 43, 54, 56, 58, 65, 65, 61, 56, 53, 53, 57, 63, 58, 59, + 54, 37, 27, 7, 7, 4, 7, 6, 10, 9, 0, 12, 43, 0, 0, 3, + 7, 0, 0, 0, 0, 42, 24, 0, 1, 2, 0, 0, 0, 12, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 1, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 27, 21, 1, 8, 10, 4, 0, 32, 37, 49, 57, 59, 60, + 60, 59, 58, 55, 57, 50, 44, 33, 26, 23, 6, 0, 6, 4, 4, 2, + 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 2, 1, 2, 2, 0, 0, 1, 0, 0, 0, 2, 2, 0, 0, + 0, 3, 8, 12, 15, 9, 0, 5, 25, 37, 27, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 8, 5, 0, 0, 0, 0, 0, 0, 0, 15, 33, + 27, 19, 9, 2, 0, 0, 0, 0, 0, 0, 2, 5, 8, 8, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 8, 5, 0, 0, + 0, 0, 7, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 25, 5, 5, 3, 0, 0, 0, 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, 0, 0, 0, 0, 4, 3, 8, 10, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 7, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 7, 0, 5, 8, 9, 7, + 5, 16, 0, 0, 10, 35, 35, 26, 25, 22, 0, 0, 34, 21, 10, 8, + 0, 5, 1, 18, 25, 48, 2, 27, 25, 22, 36, 31, 22, 16, 11, 14, + 17, 16, 4, 6, 32, 0, 0, 0, 1, 15, 43, 16, 0, 4, 27, 28, + 28, 20, 16, 18, 31, 36, 43, 22, 0, 31, 27, 2, 3, 1, 12, 17, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 12, 3, 4, 1, 1, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 2, 3, 1, 1, 2, 1, 0, 0, 1, 1, + 0, 0, 0, 0, 4, 3, 0, 0, 15, 13, 4, 8, 24, 34, 24, 4, + 0, 0, 4, 11, 15, 18, 19, 21, 21, 17, 13, 12, 14, 17, 19, 17, + 8, 6, 7, 3, 0, 0, 6, 38, 29, 12, 0, 0, 0, 0, 0, 10, + 3, 6, 12, 11, 7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 4, + 1, 1, 9, 7, 0, 0, 0, 0, 0, 19, 19, 0, 2, 14, 13, 14, + 9, 13, 20, 23, 14, 7, 3, 8, 34, 6, 1, 0, 0, 0, 1, 3, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 2, 2, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, + 0, 0, 0, 5, 5, 19, 0, 0, 6, 13, 8, 0, 0, 0, 0, 3, + 3, 1, 7, 0, 0, 0, 0, 20, 5, 4, 5, 3, 6, 12, 12, 0, + 0, 4, 8, 10, 6, 2, 0, 0, 2, 13, 0, 0, 0, 0, 30, 7, + 2, 0, 0, 0, 2, 7, 28, 0, 0, 18, 41, 43, 33, 33, 38, 29, + 28, 0, 0, 56, 16, 6, 4, 2, 4, 3, 12, 29, 42, 0, 13, 44, + 36, 39, 36, 32, 30, 27, 25, 19, 4, 7, 34, 0, 1, 3, 2, 4, + 18, 39, 0, 0, 15, 33, 35, 23, 19, 23, 44, 48, 38, 15, 0, 20, + 19, 0, 10, 0, 0, 19, 52, 0, 0, 0, 5, 6, 9, 11, 12, 12, + 9, 4, 0, 0, 0, 31, 19, 0, 0, 0, 0, 0, 0, 0, 6, 6, + 1, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 1, 3, 2, 1, 0, + 0, 0, 0, 0, 4, 2, 0, 0, 0, 0, 6, 7, 0, 0, 7, 14, + 31, 36, 9, 0, 0, 4, 19, 27, 26, 28, 31, 37, 43, 45, 40, 34, + 30, 26, 31, 36, 38, 32, 31, 23, 22, 30, 37, 26, 8, 0, 0, 22, + 20, 10, 4, 14, 1, 8, 0, 2, 9, 12, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 8, 6, 0, 0, 0, 0, 0, 10, + 42, 19, 0, 26, 31, 29, 32, 34, 41, 45, 39, 27, 14, 18, 37, 5, + 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 2, 2, 1, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 9, 24, 30, 0, 15, 31, + 28, 26, 21, 21, 27, 30, 27, 26, 21, 9, 0, 0, 37, 12, 0, 0, + 0, 0, 0, 20, 44, 0, 0, 21, 31, 34, 33, 28, 24, 22, 19, 17, + 24, 8, 0, 46, 35, 7, 0, 0, 1, 0, 0, 16, 37, 0, 1, 31, + 43, 48, 44, 40, 44, 47, 36, 21, 0, 11, 34, 5, 0, 0, 1, 0, + 0, 13, 40, 0, 3, 27, 45, 47, 44, 38, 33, 33, 30, 22, 8, 11, + 43, 3, 3, 0, 0, 0, 3, 23, 47, 0, 8, 35, 34, 36, 32, 33, + 51, 51, 32, 7, 0, 13, 30, 0, 0, 7, 0, 14, 46, 0, 0, 22, + 28, 30, 33, 34, 36, 37, 33, 31, 19, 0, 0, 34, 21, 1, 0, 0, + 0, 0, 0, 0, 7, 7, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, + 0, 1, 1, 3, 2, 1, 1, 1, 0, 0, 3, 4, 1, 0, 0, 0, + 6, 10, 8, 5, 0, 18, 27, 0, 0, 0, 18, 24, 37, 35, 25, 28, + 37, 42, 48, 45, 41, 35, 29, 30, 36, 44, 48, 48, 38, 40, 43, 35, + 28, 32, 28, 11, 1, 0, 15, 55, 26, 0, 4, 0, 0, 0, 4, 8, + 9, 4, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 6, 7, + 0, 0, 0, 0, 0, 7, 25, 45, 0, 25, 29, 35, 40, 43, 51, 52, + 44, 30, 10, 11, 36, 2, 0, 0, 0, 0, 3, 5, 3, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 4, 2, 2, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 1, 0, 0, + 0, 19, 44, 6, 2, 28, 36, 38, 39, 43, 46, 48, 44, 40, 31, 12, + 0, 33, 34, 0, 0, 0, 0, 2, 9, 11, 28, 36, 0, 22, 38, 48, + 46, 43, 36, 34, 40, 13, 11, 0, 47, 24, 7, 4, 1, 4, 7, 2, + 0, 21, 36, 0, 11, 40, 46, 44, 48, 52, 50, 43, 33, 17, 7, 6, + 35, 0, 7, 0, 0, 4, 0, 0, 24, 11, 0, 39, 37, 40, 43, 43, + 40, 36, 30, 18, 1, 4, 43, 0, 1, 0, 0, 4, 4, 25, 36, 0, + 0, 22, 39, 39, 45, 45, 51, 46, 34, 6, 0, 22, 28, 0, 1, 0, + 0, 20, 48, 0, 3, 31, 38, 41, 43, 42, 43, 48, 51, 48, 34, 4, + 0, 34, 17, 1, 0, 0, 0, 0, 0, 0, 7, 6, 2, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, + 2, 3, 0, 0, 0, 2, 5, 9, 14, 17, 30, 0, 0, 0, 10, 29, + 39, 42, 45, 43, 33, 29, 30, 32, 36, 34, 25, 16, 12, 17, 26, 31, + 38, 43, 45, 37, 44, 48, 40, 36, 37, 33, 37, 18, 0, 0, 42, 28, + 10, 0, 0, 0, 1, 6, 7, 5, 0, 0, 0, 0, 0, 2, 3, 3, + 2, 0, 0, 0, 6, 8, 0, 0, 0, 1, 3, 8, 13, 44, 0, 9, + 23, 42, 46, 49, 55, 51, 40, 25, 8, 13, 35, 0, 0, 0, 0, 0, + 5, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, + 2, 4, 3, 3, 4, 2, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 2, 3, 4, 0, 0, 0, 0, 13, 26, 34, 0, 22, 37, 47, 52, 56, + 58, 58, 52, 46, 36, 0, 0, 72, 10, 0, 0, 0, 1, 4, 9, 7, + 22, 58, 0, 22, 39, 50, 55, 51, 45, 38, 22, 16, 0, 37, 37, 6, + 7, 0, 2, 3, 7, 12, 0, 16, 26, 0, 20, 38, 41, 46, 56, 59, + 55, 49, 37, 21, 14, 0, 39, 0, 2, 0, 0, 0, 0, 0, 1, 33, + 0, 23, 30, 37, 45, 48, 45, 41, 33, 19, 4, 5, 45, 1, 2, 0, + 0, 3, 4, 11, 45, 8, 0, 16, 42, 42, 49, 54, 54, 45, 35, 1, + 0, 32, 28, 4, 0, 0, 0, 14, 44, 0, 5, 35, 44, 48, 47, 49, + 51, 55, 57, 49, 31, 3, 0, 33, 14, 1, 0, 0, 0, 0, 0, 0, + 5, 6, 3, 1, 0, 0, 0, 0, 2, 2, 0, 1, 0, 0, 0, 3, + 2, 2, 0, 0, 0, 0, 1, 0, 2, 0, 5, 7, 1, 7, 13, 41, + 16, 0, 0, 23, 27, 42, 53, 48, 47, 52, 25, 24, 25, 27, 20, 11, + 0, 0, 0, 0, 4, 19, 26, 20, 26, 47, 48, 57, 48, 50, 40, 34, + 33, 28, 22, 0, 0, 50, 15, 5, 0, 0, 0, 0, 6, 3, 2, 0, + 0, 0, 2, 3, 4, 2, 1, 0, 0, 0, 6, 7, 4, 0, 2, 14, + 10, 14, 8, 40, 9, 4, 21, 39, 41, 49, 52, 43, 34, 20, 2, 7, + 33, 1, 0, 0, 0, 1, 3, 6, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 3, 4, 4, 3, 2, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 2, 2, 4, 0, 0, 0, 0, 2, 12, 48, + 0, 17, 29, 42, 51, 61, 66, 58, 55, 47, 36, 4, 0, 62, 21, 0, + 0, 2, 11, 22, 2, 7, 34, 5, 0, 24, 38, 42, 54, 53, 40, 25, + 18, 0, 14, 28, 7, 0, 0, 0, 0, 0, 10, 11, 1, 13, 27, 0, + 18, 41, 39, 43, 62, 60, 51, 51, 38, 18, 35, 0, 45, 3, 5, 1, + 2, 0, 3, 1, 4, 42, 0, 19, 29, 38, 45, 53, 50, 40, 36, 22, + 4, 9, 39, 4, 0, 0, 0, 1, 5, 16, 32, 18, 0, 19, 38, 47, + 54, 62, 54, 42, 31, 13, 0, 40, 30, 8, 0, 0, 0, 12, 46, 0, + 2, 34, 37, 40, 48, 55, 53, 50, 47, 40, 24, 0, 0, 27, 9, 0, + 0, 0, 0, 0, 0, 0, 4, 5, 2, 1, 0, 0, 1, 1, 2, 2, + 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 2, 0, 0, 12, 43, 0, 1, 15, 30, 39, 41, 50, 55, 53, 53, 35, + 23, 16, 0, 0, 0, 3, 36, 31, 41, 40, 10, 0, 0, 0, 29, 36, + 45, 63, 66, 59, 50, 43, 46, 35, 37, 27, 7, 0, 34, 14, 0, 0, + 0, 0, 5, 2, 4, 2, 0, 0, 2, 2, 3, 1, 0, 0, 0, 0, + 10, 8, 3, 3, 7, 12, 10, 13, 0, 34, 6, 6, 24, 34, 43, 51, + 48, 40, 31, 17, 2, 6, 34, 1, 0, 0, 0, 1, 2, 3, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 4, 5, 5, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 2, 2, + 2, 1, 1, 2, 3, 39, 0, 15, 27, 42, 50, 58, 62, 54, 52, 44, + 35, 6, 0, 61, 21, 0, 0, 0, 19, 10, 4, 20, 47, 0, 6, 29, + 34, 46, 42, 45, 30, 13, 0, 22, 29, 6, 0, 0, 0, 0, 0, 0, + 6, 0, 1, 20, 36, 0, 11, 35, 46, 49, 42, 51, 57, 45, 35, 29, + 9, 0, 48, 7, 0, 7, 5, 4, 4, 2, 4, 40, 0, 16, 27, 38, + 47, 53, 52, 42, 38, 24, 4, 9, 38, 4, 0, 0, 0, 2, 2, 11, + 25, 13, 0, 22, 38, 49, 55, 62, 54, 44, 31, 13, 0, 39, 29, 1, + 0, 0, 0, 9, 42, 0, 2, 36, 37, 40, 48, 53, 50, 46, 42, 32, + 33, 0, 10, 21, 10, 0, 0, 0, 0, 0, 0, 0, 2, 4, 2, 1, + 0, 0, 1, 1, 1, 0, 1, 2, 1, 0, 2, 2, 0, 0, 0, 0, + 0, 0, 1, 5, 8, 8, 0, 0, 1, 21, 26, 0, 13, 35, 43, 40, + 51, 56, 47, 48, 44, 38, 18, 3, 0, 7, 44, 35, 31, 39, 32, 20, + 24, 34, 9, 0, 4, 28, 45, 62, 59, 74, 76, 57, 47, 54, 47, 39, + 19, 0, 0, 44, 17, 6, 0, 0, 4, 1, 5, 7, 2, 1, 0, 1, + 2, 0, 0, 0, 1, 3, 3, 0, 0, 0, 0, 4, 13, 13, 0, 31, + 0, 3, 25, 36, 49, 56, 53, 41, 33, 17, 2, 7, 37, 4, 0, 0, + 1, 1, 1, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 2, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 1, 2, 2, 3, 5, 6, 6, 4, 0, 34, 0, 18, 28, 40, + 49, 55, 55, 46, 43, 39, 35, 6, 0, 64, 22, 0, 0, 7, 3, 16, + 13, 42, 0, 0, 21, 40, 49, 52, 38, 33, 24, 0, 0, 31, 26, 6, + 5, 0, 0, 0, 0, 0, 0, 0, 1, 14, 36, 0, 0, 28, 39, 45, + 43, 42, 47, 47, 32, 21, 0, 0, 30, 0, 1, 0, 11, 8, 4, 0, + 4, 42, 0, 15, 26, 36, 45, 53, 52, 40, 36, 22, 3, 8, 36, 3, + 0, 0, 0, 0, 0, 2, 19, 11, 0, 26, 38, 47, 54, 62, 54, 46, + 33, 13, 0, 31, 34, 1, 0, 3, 0, 8, 36, 0, 0, 36, 39, 42, + 49, 56, 54, 45, 37, 29, 21, 0, 10, 16, 1, 3, 2, 1, 2, 1, + 0, 0, 1, 4, 2, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, + 1, 2, 1, 0, 0, 0, 0, 0, 0, 5, 10, 6, 1, 0, 24, 7, + 0, 21, 41, 49, 45, 47, 60, 54, 37, 36, 31, 18, 0, 0, 45, 29, + 2, 0, 18, 13, 1, 0, 0, 10, 34, 57, 0, 9, 23, 42, 54, 75, + 64, 72, 58, 58, 55, 50, 35, 17, 0, 10, 42, 10, 0, 0, 0, 0, + 6, 4, 2, 1, 0, 0, 1, 0, 0, 0, 3, 0, 1, 4, 0, 0, + 0, 4, 9, 7, 0, 29, 0, 0, 23, 39, 50, 59, 55, 43, 33, 20, + 3, 8, 38, 3, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6, 9, 10, 7, + 0, 34, 0, 21, 28, 40, 47, 53, 54, 44, 39, 34, 33, 4, 0, 61, + 22, 0, 0, 3, 4, 15, 36, 0, 0, 16, 37, 50, 48, 30, 32, 14, + 0, 5, 37, 18, 4, 11, 11, 0, 0, 0, 0, 0, 0, 0, 2, 8, + 23, 0, 0, 15, 35, 37, 33, 34, 38, 38, 39, 2, 0, 35, 15, 0, + 0, 7, 10, 6, 0, 0, 7, 45, 0, 17, 27, 40, 49, 57, 54, 44, + 38, 24, 3, 8, 34, 1, 0, 0, 1, 0, 0, 0, 18, 11, 0, 30, + 38, 44, 50, 58, 54, 46, 33, 11, 0, 26, 24, 0, 0, 5, 0, 14, + 37, 0, 0, 36, 40, 45, 54, 61, 56, 47, 34, 26, 16, 0, 1, 13, + 0, 2, 2, 3, 4, 5, 0, 0, 1, 2, 2, 1, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 3, + 1, 10, 8, 22, 37, 0, 0, 27, 36, 43, 49, 59, 60, 48, 34, 27, + 18, 0, 0, 52, 24, 3, 2, 8, 7, 7, 1, 0, 0, 8, 28, 42, + 41, 0, 5, 23, 47, 52, 52, 60, 71, 66, 66, 52, 41, 22, 19, 0, + 30, 34, 13, 0, 0, 0, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 5, 1, 4, 4, 0, 0, 0, 0, 2, 0, 0, 33, 0, 0, 20, 38, + 50, 61, 57, 45, 35, 23, 7, 9, 40, 4, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 8, 12, 8, 0, 37, 0, 27, 30, 38, 47, 53, 58, 49, + 39, 33, 33, 1, 0, 53, 22, 4, 0, 0, 1, 15, 27, 0, 0, 33, + 42, 51, 44, 39, 26, 18, 0, 35, 33, 10, 7, 10, 8, 7, 4, 0, + 0, 0, 0, 7, 9, 9, 5, 17, 0, 0, 4, 31, 19, 15, 25, 28, + 21, 0, 0, 38, 3, 2, 5, 7, 3, 0, 0, 0, 11, 54, 0, 24, + 36, 49, 56, 64, 61, 49, 42, 25, 4, 7, 34, 0, 0, 0, 1, 0, + 0, 0, 16, 11, 0, 33, 36, 40, 45, 54, 52, 46, 35, 11, 0, 23, + 20, 0, 2, 6, 2, 15, 28, 0, 0, 34, 40, 47, 58, 65, 60, 51, + 37, 26, 29, 0, 7, 5, 10, 0, 4, 4, 6, 4, 0, 0, 2, 4, + 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 3, 1, + 0, 0, 0, 0, 1, 2, 0, 10, 17, 48, 0, 0, 22, 31, 40, 51, + 58, 61, 57, 50, 42, 19, 0, 0, 39, 32, 6, 5, 0, 0, 7, 0, + 0, 0, 0, 4, 13, 21, 29, 41, 0, 0, 28, 36, 42, 52, 64, 75, + 75, 53, 47, 40, 23, 4, 0, 53, 19, 3, 0, 0, 2, 2, 1, 0, + 0, 0, 0, 0, 1, 3, 3, 10, 13, 11, 10, 12, 8, 3, 13, 9, + 0, 31, 0, 0, 23, 39, 49, 58, 55, 46, 37, 23, 8, 9, 38, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 5, 0, 38, 0, 30, + 28, 36, 45, 55, 63, 54, 43, 35, 33, 1, 0, 51, 24, 5, 0, 5, + 5, 32, 0, 4, 30, 39, 44, 52, 43, 36, 22, 0, 39, 18, 5, 1, + 6, 0, 6, 12, 3, 1, 0, 0, 1, 5, 6, 10, 0, 16, 23, 0, + 0, 0, 3, 0, 0, 0, 0, 14, 54, 31, 7, 0, 5, 0, 0, 0, + 0, 0, 9, 49, 0, 25, 36, 47, 56, 62, 59, 48, 40, 24, 2, 6, + 33, 0, 0, 0, 2, 2, 0, 0, 18, 13, 0, 35, 34, 37, 41, 51, + 50, 46, 35, 13, 0, 23, 21, 0, 8, 7, 6, 15, 26, 0, 0, 30, + 37, 44, 57, 65, 62, 51, 41, 31, 30, 0, 2, 4, 11, 0, 3, 4, + 7, 6, 0, 0, 2, 3, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 2, 2, 3, 2, 0, 0, 0, 0, 3, 4, 0, 4, 30, 31, + 0, 8, 28, 50, 55, 64, 65, 63, 55, 48, 44, 10, 0, 35, 39, 13, + 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 12, 33, 38, 0, + 1, 31, 41, 53, 56, 60, 72, 61, 59, 40, 43, 9, 0, 27, 30, 9, + 0, 0, 2, 3, 2, 0, 0, 0, 0, 3, 6, 8, 13, 18, 23, 31, + 40, 36, 25, 25, 11, 18, 7, 33, 0, 1, 26, 43, 45, 52, 50, 42, + 35, 23, 8, 8, 34, 0, 0, 0, 0, 2, 1, 1, 1, 1, 0, 0, + 3, 3, 4, 2, 2, 0, 1, 0, 0, 1, 2, 2, 3, 1, 1, 0, + 0, 0, 1, 0, 3, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 34, 0, 31, 26, 33, 45, 57, 70, 62, 51, 41, 37, 5, + 0, 54, 23, 2, 0, 16, 45, 0, 0, 33, 36, 51, 53, 31, 39, 13, + 0, 23, 30, 10, 0, 0, 0, 0, 0, 6, 5, 9, 0, 0, 0, 0, + 0, 3, 6, 8, 15, 36, 27, 0, 0, 0, 0, 0, 24, 33, 26, 5, + 5, 0, 0, 4, 0, 0, 3, 2, 1, 39, 0, 19, 27, 36, 45, 53, + 50, 40, 33, 18, 0, 1, 31, 0, 0, 0, 4, 5, 2, 7, 21, 15, + 0, 35, 34, 35, 39, 49, 48, 44, 35, 15, 0, 26, 14, 0, 7, 10, + 14, 17, 32, 4, 0, 25, 31, 41, 54, 63, 56, 49, 43, 38, 27, 0, + 7, 5, 5, 0, 3, 3, 7, 5, 0, 0, 3, 4, 2, 0, 0, 0, + 0, 1, 1, 0, 0, 0, 1, 0, 2, 1, 3, 2, 0, 0, 0, 0, + 3, 5, 0, 13, 44, 0, 0, 27, 33, 50, 51, 64, 65, 63, 54, 35, + 25, 0, 0, 46, 18, 7, 0, 0, 7, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 4, 18, 39, 0, 0, 15, 36, 51, 57, 51, 66, 60, 57, 55, + 35, 16, 0, 0, 44, 12, 0, 0, 5, 6, 3, 0, 0, 0, 7, 16, + 29, 40, 32, 11, 0, 0, 0, 0, 0, 9, 17, 44, 44, 61, 13, 8, + 27, 39, 43, 50, 49, 42, 36, 23, 4, 4, 33, 0, 0, 0, 0, 4, + 7, 15, 30, 35, 35, 38, 41, 42, 37, 36, 37, 37, 37, 34, 33, 25, + 11, 3, 4, 2, 0, 0, 0, 2, 4, 10, 25, 34, 36, 39, 41, 40, + 38, 32, 21, 11, 4, 2, 0, 0, 0, 39, 0, 31, 27, 33, 43, 55, + 72, 64, 54, 44, 41, 7, 0, 55, 23, 5, 11, 33, 0, 0, 20, 39, + 47, 57, 35, 29, 22, 0, 34, 40, 11, 0, 0, 0, 0, 0, 0, 0, + 7, 5, 1, 0, 0, 3, 3, 3, 32, 29, 33, 42, 64, 74, 79, 78, + 74, 60, 46, 38, 15, 0, 6, 0, 0, 0, 0, 0, 7, 4, 0, 35, + 0, 19, 26, 33, 42, 50, 49, 39, 31, 17, 0, 1, 32, 0, 0, 0, + 5, 8, 5, 11, 23, 13, 0, 33, 34, 37, 41, 49, 46, 42, 35, 15, + 0, 30, 24, 0, 5, 7, 10, 8, 25, 13, 0, 23, 30, 37, 52, 60, + 55, 48, 44, 37, 38, 0, 32, 0, 4, 0, 3, 5, 6, 5, 0, 0, + 3, 4, 3, 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 2, 3, + 0, 2, 0, 0, 0, 0, 4, 3, 0, 18, 44, 0, 7, 26, 37, 47, + 59, 62, 62, 55, 53, 37, 20, 0, 31, 11, 11, 1, 0, 2, 4, 2, + 1, 2, 0, 0, 0, 0, 0, 0, 4, 3, 20, 33, 0, 0, 23, 40, + 48, 55, 65, 66, 60, 50, 39, 28, 14, 0, 27, 7, 6, 3, 7, 9, + 6, 4, 2, 1, 21, 32, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 74, 48, 15, 27, 38, 50, 56, 51, 43, 39, 23, 1, 0, + 31, 0, 0, 1, 2, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 0, 7, 0, 0, 0, 5, 6, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 13, 0, 0, 0, 51, + 0, 33, 34, 36, 39, 50, 66, 58, 52, 50, 46, 9, 0, 61, 13, 12, + 30, 19, 0, 9, 42, 44, 50, 43, 26, 8, 0, 9, 44, 12, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 3, 5, 5, 0, 2, 12, 11, 0, 0, + 0, 3, 17, 24, 24, 24, 19, 17, 17, 0, 0, 5, 20, 0, 0, 0, + 0, 0, 1, 1, 3, 41, 0, 21, 29, 38, 47, 53, 52, 40, 34, 20, + 0, 4, 33, 1, 0, 0, 1, 4, 4, 9, 19, 9, 0, 27, 36, 41, + 46, 54, 48, 42, 31, 13, 0, 31, 31, 0, 1, 0, 4, 7, 27, 7, + 0, 29, 35, 40, 51, 59, 57, 50, 42, 31, 30, 0, 32, 0, 0, 0, + 7, 5, 2, 0, 0, 0, 5, 6, 3, 1, 0, 0, 0, 0, 3, 1, + 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 2, 3, 0, 32, + 7, 2, 19, 33, 43, 48, 58, 56, 50, 45, 42, 29, 5, 0, 33, 8, + 7, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 2, 3, 3, + 8, 28, 0, 0, 14, 36, 44, 53, 64, 66, 60, 50, 43, 37, 20, 0, + 14, 23, 7, 0, 1, 12, 1, 5, 17, 29, 15, 0, 0, 3, 23, 26, + 26, 26, 23, 24, 35, 37, 36, 11, 3, 0, 12, 40, 45, 38, 58, 60, + 52, 46, 42, 24, 0, 0, 29, 0, 0, 3, 2, 10, 21, 22, 0, 6, + 8, 22, 30, 24, 19, 18, 24, 27, 21, 13, 21, 0, 20, 13, 9, 2, + 0, 0, 3, 8, 13, 27, 18, 0, 10, 24, 30, 24, 30, 3, 0, 32, + 30, 15, 0, 0, 2, 51, 0, 33, 35, 37, 39, 51, 64, 60, 55, 43, + 40, 11, 0, 45, 32, 21, 47, 0, 4, 41, 38, 55, 42, 18, 10, 0, + 0, 57, 19, 0, 7, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 1, + 1, 1, 10, 34, 17, 0, 0, 0, 5, 9, 8, 6, 3, 4, 14, 0, + 0, 21, 25, 0, 0, 0, 0, 0, 0, 0, 4, 44, 0, 24, 31, 40, + 49, 55, 54, 42, 36, 22, 1, 6, 34, 1, 0, 0, 0, 2, 2, 7, + 18, 7, 0, 25, 36, 43, 50, 56, 50, 40, 31, 11, 0, 33, 33, 0, + 0, 0, 1, 7, 25, 7, 0, 30, 34, 39, 50, 57, 58, 51, 42, 31, + 27, 0, 30, 0, 0, 0, 6, 7, 0, 0, 0, 0, 4, 6, 3, 1, + 1, 0, 2, 0, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 0, + 0, 0, 3, 8, 14, 42, 0, 9, 29, 41, 45, 54, 62, 52, 46, 36, + 33, 18, 0, 18, 35, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 28, 40, 0, 7, 33, 40, 48, 60, 65, + 61, 53, 46, 40, 31, 0, 0, 43, 11, 1, 0, 0, 0, 18, 50, 31, + 0, 0, 3, 31, 30, 38, 47, 45, 38, 43, 46, 32, 34, 26, 16, 16, + 34, 43, 47, 62, 64, 62, 51, 46, 44, 23, 0, 0, 25, 2, 0, 6, + 11, 5, 12, 35, 52, 0, 7, 30, 27, 34, 23, 33, 27, 35, 26, 28, + 29, 0, 0, 41, 17, 2, 0, 0, 0, 3, 7, 32, 56, 0, 7, 28, + 34, 24, 29, 0, 0, 48, 22, 10, 0, 0, 3, 46, 0, 29, 32, 37, + 41, 52, 66, 61, 50, 45, 33, 0, 0, 71, 36, 50, 0, 0, 21, 37, + 49, 39, 19, 11, 0, 0, 51, 19, 9, 6, 7, 9, 0, 0, 0, 0, + 0, 1, 2, 1, 0, 0, 0, 0, 6, 27, 49, 0, 0, 7, 19, 23, + 21, 20, 19, 18, 20, 8, 0, 29, 28, 0, 0, 0, 0, 0, 0, 0, + 3, 42, 0, 24, 31, 40, 49, 55, 54, 42, 36, 22, 1, 6, 34, 1, + 0, 0, 0, 2, 2, 7, 18, 7, 0, 25, 36, 43, 50, 56, 50, 40, + 31, 11, 0, 33, 32, 0, 0, 0, 1, 8, 20, 5, 0, 30, 35, 40, + 51, 57, 59, 52, 42, 34, 26, 0, 31, 0, 0, 0, 6, 4, 1, 0, + 0, 0, 4, 6, 3, 1, 0, 0, 2, 0, 2, 0, 0, 1, 2, 0, + 1, 0, 1, 1, 1, 0, 0, 1, 5, 12, 25, 26, 0, 13, 37, 46, + 45, 59, 64, 50, 45, 37, 28, 9, 0, 43, 25, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 52, 0, + 2, 33, 39, 46, 58, 63, 62, 55, 47, 41, 34, 1, 0, 65, 14, 0, + 2, 0, 6, 22, 0, 0, 10, 22, 37, 40, 52, 45, 43, 46, 48, 47, + 46, 41, 37, 40, 18, 23, 37, 51, 58, 62, 67, 59, 49, 45, 43, 24, + 0, 0, 29, 4, 0, 0, 6, 7, 12, 23, 54, 25, 0, 12, 31, 40, + 46, 31, 34, 37, 35, 42, 28, 9, 0, 48, 22, 1, 4, 0, 0, 2, + 6, 25, 44, 0, 0, 28, 37, 29, 24, 0, 11, 30, 15, 8, 0, 0, + 2, 41, 0, 25, 29, 37, 43, 54, 67, 60, 54, 39, 28, 0, 0, 69, + 68, 1, 0, 32, 30, 40, 52, 30, 22, 0, 0, 49, 22, 4, 0, 6, + 9, 3, 0, 0, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 7, 14, + 49, 18, 0, 13, 26, 31, 32, 32, 29, 27, 29, 11, 0, 24, 27, 0, + 0, 0, 0, 0, 0, 0, 3, 42, 0, 24, 31, 40, 49, 55, 54, 42, + 36, 22, 1, 6, 34, 1, 0, 0, 0, 2, 2, 7, 18, 7, 0, 25, + 36, 43, 50, 56, 50, 40, 31, 11, 0, 33, 31, 0, 0, 0, 3, 7, + 13, 8, 0, 29, 35, 40, 51, 60, 57, 50, 41, 35, 22, 0, 31, 0, + 0, 0, 5, 4, 0, 0, 0, 0, 4, 5, 2, 1, 0, 0, 2, 0, + 1, 0, 0, 0, 0, 1, 2, 1, 0, 1, 1, 0, 0, 0, 3, 14, + 30, 4, 0, 19, 36, 49, 53, 65, 61, 47, 42, 33, 24, 1, 0, 52, + 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 1, 12, 37, 0, 1, 35, 39, 44, 54, 62, 63, 57, 49, 40, + 30, 2, 0, 58, 15, 0, 0, 12, 26, 18, 0, 14, 37, 53, 50, 57, + 48, 59, 53, 42, 38, 35, 32, 32, 32, 19, 27, 23, 35, 44, 63, 83, + 71, 60, 49, 45, 44, 25, 0, 0, 28, 1, 4, 3, 0, 4, 13, 16, + 9, 62, 0, 1, 25, 35, 54, 39, 44, 37, 52, 44, 40, 22, 0, 19, + 28, 0, 8, 5, 0, 0, 9, 26, 52, 0, 0, 34, 33, 14, 0, 0, + 46, 14, 10, 6, 0, 0, 0, 37, 0, 21, 29, 40, 45, 55, 66, 59, + 46, 31, 21, 0, 0, 94, 53, 0, 16, 36, 38, 47, 45, 35, 24, 0, + 48, 27, 14, 0, 7, 0, 0, 0, 4, 4, 0, 0, 0, 1, 3, 1, + 0, 0, 0, 0, 2, 15, 34, 19, 0, 19, 31, 38, 43, 46, 42, 37, + 27, 9, 0, 26, 31, 0, 0, 0, 0, 0, 0, 0, 3, 42, 0, 24, + 31, 40, 49, 55, 54, 42, 36, 22, 1, 6, 34, 1, 0, 0, 0, 2, + 2, 7, 18, 7, 0, 25, 36, 43, 50, 56, 50, 40, 31, 11, 0, 33, + 30, 2, 0, 0, 1, 6, 13, 25, 0, 25, 32, 39, 50, 59, 56, 49, + 39, 33, 17, 0, 29, 0, 0, 0, 4, 3, 1, 0, 0, 0, 3, 3, + 2, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 2, 16, 37, 0, 0, 24, 31, 51, 63, 63, 59, 47, + 39, 31, 23, 0, 0, 54, 19, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 1, 4, 7, 19, 15, 0, 34, 36, 41, + 51, 60, 61, 56, 51, 42, 28, 8, 0, 25, 17, 0, 5, 38, 34, 0, + 0, 35, 55, 55, 52, 60, 63, 60, 43, 29, 24, 16, 1, 0, 0, 0, + 1, 12, 15, 31, 58, 68, 70, 62, 49, 44, 43, 26, 0, 0, 29, 0, + 3, 8, 1, 0, 2, 0, 0, 18, 39, 0, 12, 37, 36, 51, 50, 49, + 57, 49, 46, 26, 5, 0, 42, 9, 6, 1, 0, 0, 7, 24, 49, 0, + 2, 37, 37, 9, 0, 0, 34, 10, 3, 0, 2, 0, 0, 37, 0, 18, + 28, 40, 47, 56, 67, 59, 40, 36, 26, 1, 0, 102, 1, 16, 20, 43, + 45, 49, 45, 34, 17, 10, 72, 17, 6, 5, 0, 1, 0, 0, 4, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 23, 12, 0, 27, + 36, 43, 50, 54, 50, 40, 32, 17, 0, 31, 32, 0, 0, 0, 0, 0, + 0, 0, 3, 42, 0, 24, 31, 40, 49, 55, 54, 42, 36, 22, 1, 6, + 34, 1, 0, 0, 0, 2, 2, 7, 18, 7, 0, 25, 36, 43, 50, 56, + 50, 40, 31, 11, 0, 33, 30, 2, 0, 0, 0, 7, 17, 48, 0, 21, + 29, 39, 50, 57, 54, 47, 36, 30, 14, 0, 29, 0, 0, 1, 1, 2, + 0, 1, 0, 0, 3, 2, 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 1, 1, 0, 0, 0, 0, 2, 15, 42, 0, 0, 21, + 31, 50, 61, 65, 61, 51, 41, 34, 26, 0, 0, 47, 16, 2, 0, 0, + 0, 0, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 5, 0, 1, + 6, 28, 0, 32, 37, 39, 48, 58, 60, 57, 52, 40, 28, 13, 0, 24, + 17, 0, 23, 51, 0, 0, 23, 41, 42, 54, 55, 58, 64, 48, 41, 28, + 0, 0, 0, 17, 22, 2, 0, 0, 14, 30, 49, 61, 63, 60, 50, 44, + 43, 25, 3, 1, 36, 0, 0, 0, 0, 1, 2, 0, 0, 10, 51, 0, + 6, 36, 28, 43, 50, 58, 57, 59, 42, 37, 21, 0, 22, 28, 11, 4, + 5, 2, 7, 29, 37, 0, 22, 40, 32, 3, 0, 33, 12, 0, 0, 0, + 4, 0, 0, 38, 0, 14, 28, 40, 48, 56, 67, 63, 55, 42, 38, 23, + 0, 32, 18, 23, 37, 46, 48, 54, 50, 41, 28, 0, 5, 32, 18, 4, + 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 16, 15, 0, 32, 38, 43, 52, 55, 50, 40, 30, 14, 0, 28, + 30, 0, 3, 5, 2, 0, 0, 0, 3, 42, 0, 22, 31, 40, 49, 55, + 54, 42, 36, 22, 1, 6, 34, 1, 0, 0, 0, 2, 2, 7, 18, 7, + 0, 25, 36, 43, 50, 56, 50, 40, 31, 11, 0, 33, 30, 0, 0, 0, + 2, 4, 14, 55, 0, 17, 29, 38, 49, 56, 54, 45, 35, 29, 12, 6, + 29, 0, 0, 0, 1, 1, 2, 1, 0, 0, 2, 2, 2, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 16, 39, 0, 0, 11, 34, 49, 53, 70, 59, 55, 43, 37, 30, 0, + 0, 34, 14, 3, 0, 0, 0, 1, 0, 0, 3, 2, 0, 0, 0, 0, + 2, 1, 4, 9, 0, 0, 3, 33, 0, 33, 38, 39, 48, 57, 59, 56, + 49, 40, 31, 1, 0, 37, 26, 3, 33, 8, 0, 20, 36, 38, 45, 51, + 51, 54, 48, 37, 33, 5, 0, 25, 50, 28, 27, 49, 70, 0, 3, 33, + 44, 52, 57, 57, 49, 40, 42, 26, 4, 1, 28, 5, 6, 0, 0, 0, + 0, 0, 0, 0, 24, 31, 0, 24, 29, 39, 50, 51, 64, 57, 45, 44, + 32, 0, 0, 36, 20, 2, 0, 4, 6, 39, 4, 9, 32, 41, 26, 0, + 0, 51, 10, 0, 0, 5, 1, 6, 0, 37, 0, 15, 27, 40, 47, 56, + 68, 67, 63, 51, 47, 44, 27, 15, 32, 41, 49, 45, 57, 52, 61, 54, + 35, 4, 0, 43, 26, 3, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 3, 0, 10, 5, 0, 38, 39, 43, 53, 58, + 52, 42, 35, 16, 0, 32, 34, 2, 2, 0, 2, 0, 0, 0, 3, 42, + 0, 22, 31, 40, 49, 55, 54, 42, 36, 22, 1, 6, 34, 1, 0, 0, + 0, 2, 2, 7, 18, 7, 0, 25, 36, 43, 50, 56, 50, 40, 31, 11, + 0, 33, 29, 0, 0, 0, 4, 3, 3, 48, 0, 16, 28, 39, 50, 59, + 55, 46, 35, 26, 9, 14, 30, 0, 0, 0, 0, 0, 4, 1, 0, 0, + 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 1, 0, 0, 0, 0, 3, 18, 41, 0, 0, 19, 31, 45, 67, 64, + 58, 52, 50, 32, 28, 0, 0, 41, 15, 2, 0, 0, 0, 0, 0, 0, + 4, 3, 1, 0, 0, 0, 0, 2, 1, 8, 0, 0, 0, 32, 0, 29, + 33, 36, 43, 53, 62, 59, 51, 44, 32, 16, 0, 1, 31, 17, 44, 0, + 0, 28, 36, 42, 50, 52, 46, 41, 41, 27, 29, 0, 9, 35, 20, 7, + 10, 20, 41, 15, 0, 29, 42, 47, 52, 55, 50, 41, 41, 24, 2, 1, + 32, 0, 3, 1, 0, 0, 0, 0, 0, 0, 16, 50, 0, 5, 28, 33, + 42, 53, 59, 54, 50, 45, 36, 8, 0, 51, 19, 1, 0, 7, 8, 46, + 0, 32, 36, 40, 24, 0, 5, 27, 0, 0, 0, 6, 9, 7, 1, 36, + 0, 13, 30, 42, 48, 53, 61, 69, 76, 61, 68, 63, 40, 31, 38, 43, + 51, 64, 70, 66, 59, 53, 41, 21, 0, 0, 37, 11, 0, 0, 4, 3, + 0, 0, 1, 0, 0, 0, 0, 0, 3, 4, 1, 0, 0, 2, 4, 4, + 0, 40, 39, 42, 51, 54, 49, 41, 36, 14, 0, 32, 31, 3, 3, 0, + 2, 0, 1, 0, 3, 42, 0, 21, 31, 40, 49, 55, 54, 42, 36, 22, + 1, 6, 34, 1, 0, 0, 0, 2, 2, 7, 18, 7, 0, 25, 36, 43, + 50, 56, 50, 40, 31, 11, 0, 33, 28, 0, 0, 0, 1, 5, 7, 44, + 0, 16, 27, 36, 52, 60, 53, 47, 37, 24, 2, 11, 24, 0, 0, 0, + 0, 0, 3, 3, 0, 0, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 3, 19, 47, 0, + 0, 17, 39, 48, 58, 67, 64, 50, 41, 36, 26, 0, 0, 39, 14, 1, + 0, 0, 0, 0, 1, 0, 3, 2, 1, 0, 0, 0, 0, 1, 2, 2, + 0, 0, 0, 29, 0, 32, 33, 36, 44, 53, 61, 58, 50, 43, 31, 14, + 1, 0, 31, 17, 36, 0, 6, 32, 40, 48, 54, 55, 47, 39, 28, 27, + 16, 0, 41, 7, 0, 0, 0, 4, 18, 32, 0, 33, 35, 43, 51, 57, + 50, 41, 39, 25, 2, 1, 32, 0, 2, 1, 0, 0, 0, 0, 0, 1, + 8, 35, 17, 0, 19, 42, 41, 48, 55, 56, 53, 45, 36, 16, 0, 4, + 39, 3, 0, 9, 11, 15, 0, 40, 39, 26, 18, 0, 34, 19, 0, 0, + 3, 9, 11, 8, 2, 37, 0, 15, 29, 42, 48, 54, 62, 69, 77, 83, + 68, 66, 63, 39, 50, 50, 59, 71, 78, 73, 63, 55, 43, 34, 24, 0, + 6, 31, 0, 0, 1, 5, 0, 0, 1, 0, 0, 0, 0, 3, 6, 7, + 3, 0, 0, 1, 3, 1, 0, 40, 38, 40, 49, 54, 49, 39, 36, 14, + 0, 32, 31, 3, 3, 0, 2, 0, 1, 0, 3, 42, 0, 21, 31, 40, + 49, 55, 54, 42, 36, 22, 1, 6, 34, 1, 0, 0, 0, 2, 2, 7, + 18, 7, 0, 25, 36, 43, 50, 56, 50, 40, 31, 11, 0, 33, 28, 0, + 0, 0, 1, 3, 5, 42, 0, 8, 27, 37, 50, 59, 54, 46, 35, 26, + 3, 6, 32, 1, 0, 0, 0, 0, 3, 4, 0, 0, 2, 2, 2, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 2, 21, 52, 0, 1, 26, 39, 48, 64, 65, 64, 50, 36, 36, + 22, 0, 0, 36, 14, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 1, 4, 0, 0, 0, 0, 31, 0, 32, 34, 37, 46, 55, + 61, 57, 49, 44, 29, 19, 0, 10, 35, 23, 26, 0, 14, 33, 48, 56, + 62, 63, 52, 39, 33, 14, 0, 29, 37, 0, 0, 0, 2, 2, 10, 45, + 0, 20, 28, 42, 50, 56, 49, 41, 37, 24, 3, 1, 30, 0, 3, 3, + 0, 0, 0, 0, 0, 8, 7, 24, 43, 0, 7, 39, 38, 43, 52, 58, + 58, 49, 36, 25, 8, 0, 52, 7, 0, 12, 25, 0, 0, 34, 38, 21, + 2, 0, 44, 1, 0, 0, 5, 11, 11, 9, 2, 38, 0, 17, 31, 41, + 48, 53, 61, 67, 70, 78, 62, 59, 59, 46, 42, 50, 61, 69, 72, 70, + 66, 56, 47, 41, 33, 15, 0, 44, 13, 0, 3, 0, 6, 5, 4, 1, + 0, 0, 4, 6, 9, 7, 2, 0, 0, 3, 5, 3, 0, 37, 36, 38, + 47, 52, 47, 39, 36, 13, 0, 32, 31, 3, 3, 0, 2, 0, 1, 0, + 3, 42, 0, 21, 31, 40, 49, 55, 54, 42, 36, 22, 1, 6, 34, 1, + 0, 0, 0, 2, 2, 7, 18, 7, 0, 25, 36, 43, 50, 56, 50, 40, + 31, 11, 0, 33, 28, 0, 0, 0, 1, 3, 1, 38, 0, 7, 25, 37, + 50, 61, 54, 41, 32, 26, 0, 0, 29, 0, 0, 0, 0, 0, 3, 6, + 0, 0, 0, 1, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 3, 20, 52, 0, 3, 33, 38, 48, + 66, 64, 58, 52, 42, 32, 18, 0, 0, 43, 16, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 37, + 0, 28, 31, 37, 47, 56, 60, 56, 48, 43, 35, 16, 0, 33, 31, 38, + 6, 18, 25, 37, 50, 59, 65, 63, 52, 41, 32, 1, 0, 74, 19, 0, + 0, 0, 1, 1, 0, 37, 0, 11, 27, 42, 51, 57, 51, 41, 37, 24, + 1, 2, 28, 0, 4, 3, 1, 0, 0, 0, 4, 4, 12, 18, 35, 0, + 0, 27, 33, 38, 49, 59, 64, 55, 37, 31, 27, 0, 0, 29, 7, 9, + 55, 0, 0, 26, 28, 17, 0, 34, 26, 0, 0, 0, 7, 9, 7, 7, + 2, 39, 0, 18, 33, 43, 49, 54, 60, 65, 63, 57, 55, 42, 36, 29, + 32, 40, 52, 56, 62, 68, 69, 62, 50, 46, 45, 23, 3, 0, 32, 4, + 0, 5, 7, 9, 3, 0, 2, 1, 3, 6, 8, 7, 1, 0, 0, 5, + 8, 6, 0, 35, 34, 38, 47, 52, 47, 39, 34, 13, 0, 30, 31, 3, + 1, 0, 2, 0, 1, 0, 3, 42, 0, 21, 31, 40, 49, 55, 54, 42, + 36, 22, 1, 6, 34, 1, 0, 0, 0, 2, 2, 7, 18, 7, 0, 25, + 36, 43, 50, 56, 50, 40, 31, 11, 0, 31, 26, 0, 0, 0, 3, 1, + 0, 35, 0, 8, 23, 37, 51, 60, 53, 37, 31, 21, 0, 2, 25, 0, + 0, 1, 0, 0, 4, 5, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 18, + 43, 0, 2, 28, 46, 50, 52, 66, 59, 53, 45, 30, 22, 0, 0, 56, + 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 1, 0, 0, 0, 45, 0, 26, 29, 37, 47, 56, 60, 55, 47, 42, + 36, 0, 0, 18, 13, 41, 0, 23, 34, 42, 49, 58, 63, 59, 51, 43, + 32, 3, 0, 61, 22, 0, 0, 0, 0, 0, 0, 30, 0, 10, 29, 43, + 51, 58, 50, 41, 37, 22, 1, 2, 29, 1, 5, 4, 1, 0, 0, 0, + 3, 0, 13, 14, 13, 19, 0, 19, 29, 35, 48, 62, 67, 59, 41, 35, + 35, 0, 0, 52, 22, 25, 22, 0, 5, 21, 22, 0, 0, 60, 12, 0, + 0, 2, 4, 5, 5, 2, 1, 40, 0, 23, 36, 44, 49, 54, 58, 61, + 60, 51, 40, 23, 14, 32, 26, 33, 35, 38, 54, 68, 74, 69, 57, 49, + 40, 37, 23, 0, 0, 33, 12, 7, 5, 4, 0, 0, 5, 4, 0, 0, + 5, 2, 0, 0, 0, 6, 13, 8, 0, 31, 34, 38, 49, 54, 49, 41, + 34, 11, 0, 30, 31, 3, 1, 0, 0, 0, 1, 0, 3, 42, 0, 23, + 31, 40, 49, 55, 54, 42, 36, 22, 1, 6, 34, 1, 0, 0, 0, 2, + 2, 7, 18, 7, 0, 25, 36, 43, 50, 56, 50, 40, 31, 11, 0, 31, + 26, 0, 0, 0, 3, 1, 0, 33, 11, 5, 19, 37, 50, 54, 48, 36, + 29, 14, 0, 31, 27, 2, 2, 0, 0, 0, 4, 6, 0, 0, 0, 0, + 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 2, + 0, 0, 0, 0, 3, 16, 34, 0, 0, 26, 38, 46, 51, 61, 65, 54, + 47, 35, 29, 3, 0, 59, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 5, 41, 0, 26, 29, 38, + 48, 56, 61, 54, 45, 42, 40, 6, 0, 41, 17, 41, 0, 33, 40, 42, + 44, 51, 56, 55, 48, 40, 33, 0, 0, 35, 15, 0, 0, 0, 3, 0, + 0, 29, 11, 3, 21, 40, 50, 59, 52, 41, 37, 22, 1, 1, 30, 1, + 4, 4, 0, 0, 1, 0, 0, 1, 5, 8, 4, 41, 0, 6, 23, 34, + 46, 59, 67, 63, 46, 38, 27, 17, 0, 46, 40, 44, 0, 0, 12, 28, + 26, 0, 0, 42, 9, 0, 1, 1, 1, 1, 0, 0, 0, 38, 0, 26, + 37, 44, 49, 56, 58, 57, 50, 44, 28, 19, 0, 89, 0, 17, 22, 31, + 48, 64, 75, 73, 62, 51, 42, 35, 37, 13, 0, 40, 31, 7, 5, 4, + 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 9, 17, 12, 0, 28, + 32, 40, 49, 56, 51, 41, 34, 11, 0, 28, 29, 1, 0, 0, 0, 0, + 1, 0, 3, 42, 0, 23, 31, 40, 49, 55, 54, 42, 36, 22, 1, 6, + 34, 1, 0, 0, 0, 2, 2, 7, 18, 7, 0, 25, 36, 43, 50, 56, + 50, 40, 31, 11, 0, 31, 26, 0, 0, 1, 3, 1, 0, 31, 7, 1, + 22, 37, 48, 46, 42, 40, 33, 14, 0, 43, 26, 0, 2, 0, 0, 0, + 4, 6, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 1, 0, 0, 1, + 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 2, 12, 24, 5, 0, 24, + 26, 40, 49, 55, 69, 61, 51, 46, 37, 12, 0, 39, 31, 4, 0, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 3, 4, 5, 4, 0, 1, + 12, 26, 0, 27, 30, 39, 49, 56, 61, 54, 43, 40, 28, 5, 0, 56, + 15, 29, 0, 22, 36, 40, 36, 42, 50, 49, 44, 37, 21, 0, 0, 35, + 13, 6, 0, 0, 10, 7, 0, 27, 9, 0, 12, 35, 49, 59, 52, 41, + 37, 22, 0, 0, 27, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 1, + 2, 33, 24, 0, 17, 35, 46, 55, 66, 65, 54, 41, 33, 12, 0, 2, + 54, 67, 0, 7, 26, 36, 29, 0, 30, 17, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 0, 27, 39, 46, 51, 56, 57, 55, 45, 38, 27, 13, + 0, 121, 9, 0, 16, 36, 49, 59, 75, 78, 63, 50, 49, 44, 33, 25, + 0, 0, 43, 5, 7, 6, 2, 0, 0, 0, 0, 6, 4, 0, 0, 0, + 1, 11, 22, 15, 0, 26, 32, 40, 51, 58, 55, 43, 34, 9, 0, 28, + 29, 1, 0, 0, 0, 0, 1, 0, 3, 42, 0, 23, 31, 40, 49, 55, + 54, 42, 36, 22, 1, 6, 34, 1, 0, 0, 0, 2, 2, 7, 18, 7, + 0, 25, 36, 43, 50, 56, 50, 40, 31, 11, 0, 31, 26, 0, 0, 1, + 3, 1, 0, 31, 3, 1, 23, 31, 42, 39, 34, 33, 32, 16, 0, 37, + 25, 0, 5, 2, 0, 0, 5, 7, 0, 0, 0, 0, 2, 0, 0, 0, + 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 3, 8, 18, 24, 0, 15, 30, 39, 32, 55, 64, 67, 56, 51, 40, 23, + 0, 17, 39, 7, 4, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 3, 6, 3, 0, 0, 1, 24, 18, 0, 29, 32, 40, 48, 57, 62, 57, + 45, 38, 31, 0, 0, 48, 15, 40, 0, 20, 32, 36, 36, 43, 47, 45, + 39, 35, 27, 0, 11, 25, 12, 1, 5, 0, 5, 11, 0, 30, 1, 0, + 16, 30, 45, 56, 50, 43, 39, 24, 0, 1, 28, 0, 1, 0, 0, 1, + 2, 0, 0, 0, 0, 3, 3, 17, 63, 0, 8, 35, 46, 55, 64, 66, + 57, 43, 31, 22, 15, 0, 74, 40, 0, 26, 38, 29, 5, 0, 42, 11, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 24, 38, 48, 52, 58, + 56, 54, 50, 40, 26, 0, 0, 87, 62, 0, 7, 40, 47, 54, 68, 75, + 65, 58, 60, 46, 39, 28, 17, 0, 0, 29, 11, 3, 1, 0, 0, 0, + 0, 5, 2, 0, 0, 0, 0, 10, 24, 16, 0, 24, 32, 42, 51, 58, + 56, 46, 36, 11, 0, 30, 29, 3, 1, 0, 0, 0, 0, 0, 2, 42, + 0, 23, 33, 42, 47, 53, 52, 42, 34, 20, 2, 7, 36, 3, 0, 0, + 0, 2, 2, 7, 18, 7, 0, 25, 38, 47, 50, 58, 50, 42, 31, 11, + 0, 30, 28, 0, 0, 1, 3, 1, 0, 26, 0, 0, 10, 7, 17, 17, + 13, 7, 8, 0, 0, 22, 28, 1, 3, 0, 0, 0, 9, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0, + 2, 0, 0, 0, 0, 0, 2, 8, 7, 46, 0, 13, 30, 26, 32, 41, + 67, 70, 60, 48, 40, 30, 17, 0, 47, 20, 2, 5, 5, 0, 4, 0, + 3, 4, 2, 0, 0, 0, 4, 2, 0, 0, 0, 8, 39, 1, 0, 31, + 40, 38, 47, 58, 55, 61, 48, 36, 25, 0, 8, 40, 19, 44, 0, 24, + 24, 30, 48, 56, 53, 44, 38, 33, 30, 0, 14, 22, 7, 7, 1, 3, + 1, 1, 0, 35, 1, 0, 23, 34, 38, 46, 50, 47, 42, 27, 2, 3, + 34, 5, 0, 0, 3, 4, 5, 3, 0, 0, 2, 6, 0, 14, 27, 0, + 0, 24, 43, 56, 58, 70, 54, 54, 41, 40, 24, 7, 47, 31, 15, 34, + 34, 16, 0, 20, 32, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, + 0, 19, 37, 51, 54, 57, 58, 48, 49, 37, 18, 0, 0, 76, 47, 13, + 0, 30, 32, 41, 58, 61, 54, 65, 60, 61, 45, 31, 26, 0, 0, 37, + 17, 4, 0, 0, 0, 0, 9, 3, 0, 0, 0, 0, 0, 7, 23, 13, + 0, 22, 34, 42, 47, 56, 58, 50, 39, 11, 0, 32, 32, 7, 8, 0, + 0, 0, 0, 0, 3, 41, 0, 24, 35, 42, 43, 50, 50, 40, 33, 18, + 2, 9, 42, 6, 0, 0, 1, 3, 0, 5, 19, 7, 0, 21, 41, 51, + 54, 58, 52, 44, 33, 11, 0, 28, 30, 3, 1, 1, 5, 3, 0, 17, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 13, 0, 2, 0, + 6, 9, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 3, 7, 31, + 14, 4, 18, 29, 35, 46, 64, 67, 61, 51, 43, 36, 26, 0, 5, 28, + 12, 7, 0, 3, 2, 3, 3, 3, 1, 0, 1, 1, 3, 0, 0, 2, + 0, 19, 55, 0, 8, 29, 40, 47, 52, 56, 60, 63, 45, 28, 9, 0, + 35, 27, 10, 44, 0, 19, 23, 31, 53, 61, 55, 47, 42, 39, 32, 0, + 0, 29, 6, 9, 7, 5, 0, 0, 0, 35, 0, 0, 26, 36, 38, 44, + 50, 49, 42, 27, 2, 5, 32, 3, 0, 0, 2, 4, 4, 1, 0, 0, + 1, 6, 0, 2, 16, 25, 0, 16, 35, 42, 60, 55, 59, 62, 57, 47, + 44, 21, 15, 10, 29, 49, 31, 7, 0, 38, 28, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 40, 0, 18, 37, 51, 56, 57, 58, 48, 47, 36, + 24, 0, 0, 58, 41, 42, 0, 7, 32, 39, 39, 44, 61, 61, 71, 60, + 49, 43, 33, 21, 0, 0, 39, 10, 3, 1, 0, 1, 3, 3, 0, 0, + 0, 0, 0, 6, 22, 12, 0, 22, 34, 42, 47, 54, 56, 48, 35, 9, + 0, 34, 34, 8, 8, 0, 0, 0, 0, 1, 3, 41, 0, 24, 35, 44, + 45, 50, 50, 40, 31, 17, 1, 9, 42, 6, 0, 0, 0, 1, 0, 5, + 18, 6, 0, 21, 43, 53, 54, 58, 54, 46, 37, 15, 0, 28, 30, 3, + 1, 3, 5, 3, 0, 8, 3, 16, 26, 55, 41, 34, 54, 47, 30, 26, + 6, 22, 0, 0, 0, 6, 4, 7, 10, 7, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 38, 0, 12, 31, 44, 60, 60, 60, 63, 56, + 49, 41, 32, 2, 0, 47, 18, 0, 1, 0, 5, 12, 1, 0, 0, 4, + 9, 5, 0, 0, 6, 4, 6, 15, 40, 0, 12, 41, 42, 54, 57, 53, + 52, 35, 20, 6, 0, 0, 31, 1, 4, 46, 0, 9, 27, 40, 50, 57, + 54, 51, 50, 43, 34, 0, 0, 48, 9, 0, 4, 8, 5, 3, 0, 33, + 0, 0, 25, 38, 43, 51, 54, 49, 41, 25, 2, 3, 29, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 3, 1, 0, 5, 44, 0, 0, 14, 32, + 50, 60, 66, 64, 69, 48, 47, 37, 20, 26, 33, 27, 29, 2, 0, 47, + 18, 1, 0, 0, 0, 1, 7, 8, 6, 7, 4, 41, 0, 21, 37, 49, + 54, 59, 61, 51, 49, 39, 36, 12, 0, 59, 34, 37, 38, 0, 6, 33, + 48, 44, 53, 60, 73, 69, 60, 56, 42, 33, 22, 0, 17, 45, 17, 0, + 8, 0, 0, 0, 1, 4, 0, 3, 6, 10, 24, 12, 0, 21, 34, 42, + 47, 52, 51, 39, 28, 6, 0, 34, 32, 6, 2, 0, 0, 0, 3, 3, + 4, 41, 0, 22, 33, 44, 49, 55, 52, 40, 33, 17, 0, 2, 38, 5, + 0, 0, 0, 0, 0, 7, 18, 6, 0, 23, 41, 51, 52, 58, 54, 47, + 40, 18, 0, 31, 26, 0, 3, 7, 5, 1, 0, 0, 9, 27, 45, 50, + 68, 75, 79, 71, 68, 48, 25, 5, 0, 0, 0, 0, 0, 0, 3, 5, + 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 35, 0, 0, 31, + 47, 54, 52, 58, 67, 65, 55, 45, 35, 13, 0, 0, 28, 11, 0, 4, + 14, 7, 0, 0, 0, 0, 8, 6, 0, 0, 7, 5, 17, 39, 2, 0, + 25, 36, 48, 57, 66, 60, 51, 27, 19, 1, 0, 33, 16, 0, 0, 37, + 0, 0, 23, 39, 48, 53, 56, 54, 52, 43, 26, 8, 0, 65, 16, 0, + 14, 7, 5, 3, 0, 31, 0, 0, 21, 36, 49, 57, 56, 49, 39, 24, + 3, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 30, 31, 0, 9, 30, 39, 60, 63, 61, 73, 66, 52, 47, 37, 43, + 32, 24, 21, 0, 18, 33, 8, 2, 0, 0, 0, 4, 10, 12, 11, 8, + 5, 40, 0, 23, 35, 47, 52, 60, 67, 57, 48, 44, 42, 11, 0, 62, + 24, 11, 46, 0, 0, 22, 33, 46, 55, 63, 72, 77, 67, 55, 56, 39, + 37, 16, 0, 52, 27, 0, 4, 2, 0, 0, 2, 6, 1, 3, 5, 12, + 22, 11, 0, 21, 34, 44, 53, 54, 47, 36, 26, 4, 0, 32, 32, 2, + 0, 0, 0, 0, 5, 5, 6, 42, 0, 20, 31, 42, 52, 60, 54, 42, + 36, 18, 0, 0, 38, 5, 0, 0, 0, 0, 2, 9, 16, 2, 0, 23, + 38, 46, 46, 54, 50, 46, 38, 20, 0, 31, 24, 0, 0, 3, 7, 3, + 0, 0, 1, 17, 40, 10, 0, 0, 0, 0, 0, 28, 39, 21, 0, 0, + 0, 6, 0, 0, 0, 1, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 0, 11, 21, 0, 20, 42, 34, 40, 54, 75, 77, 65, 51, 38, 21, + 0, 0, 20, 25, 12, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 2, 19, 45, 0, 14, 29, 41, 37, 46, 62, 55, 46, 30, 25, 0, + 0, 34, 1, 0, 1, 32, 33, 0, 9, 31, 44, 55, 60, 60, 52, 39, + 33, 3, 0, 30, 28, 10, 0, 8, 1, 1, 0, 31, 0, 0, 18, 36, + 52, 62, 59, 49, 39, 24, 7, 10, 29, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 1, 0, 0, 4, 5, 20, 43, 0, 8, 27, 34, 40, 59, 64, + 71, 77, 64, 56, 43, 41, 25, 20, 10, 0, 40, 15, 3, 0, 0, 1, + 0, 1, 7, 12, 11, 8, 2, 37, 0, 25, 34, 44, 52, 62, 72, 62, + 48, 47, 43, 1, 0, 53, 26, 13, 15, 31, 0, 4, 18, 43, 61, 71, + 68, 72, 67, 54, 66, 49, 33, 25, 0, 0, 35, 7, 0, 0, 0, 0, + 0, 1, 0, 0, 4, 9, 19, 8, 0, 22, 38, 49, 58, 60, 47, 36, + 30, 7, 0, 28, 28, 0, 0, 0, 0, 0, 3, 5, 11, 48, 0, 22, + 29, 42, 56, 66, 58, 46, 40, 24, 0, 2, 40, 8, 2, 0, 0, 1, + 4, 9, 12, 0, 0, 23, 34, 38, 41, 49, 45, 40, 33, 15, 0, 30, + 23, 0, 0, 0, 6, 9, 6, 11, 24, 54, 0, 0, 0, 10, 0, 6, + 0, 0, 0, 63, 21, 7, 10, 6, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 1, 0, 2, 36, 9, 0, 23, 31, 33, 48, + 73, 78, 69, 58, 46, 34, 20, 7, 0, 41, 25, 13, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 3, 3, 21, 40, 0, 0, 25, 42, 52, 47, 52, + 64, 52, 45, 35, 14, 0, 22, 25, 3, 0, 0, 23, 42, 0, 3, 30, + 41, 51, 61, 62, 52, 42, 32, 23, 2, 0, 50, 9, 16, 4, 0, 0, + 0, 31, 0, 0, 19, 38, 52, 62, 57, 47, 35, 24, 9, 12, 33, 0, + 1, 2, 5, 5, 0, 0, 0, 0, 0, 1, 0, 0, 5, 15, 28, 2, + 0, 28, 32, 38, 45, 62, 65, 71, 68, 68, 48, 41, 31, 8, 0, 9, + 36, 6, 0, 0, 6, 0, 0, 0, 5, 7, 7, 4, 0, 33, 0, 23, + 30, 40, 51, 60, 72, 64, 55, 43, 37, 0, 0, 52, 23, 14, 15, 31, + 1, 0, 13, 41, 52, 66, 64, 63, 77, 61, 58, 53, 42, 28, 26, 0, + 5, 31, 4, 0, 2, 0, 0, 1, 0, 0, 1, 6, 15, 5, 0, 24, + 39, 53, 62, 61, 47, 36, 33, 11, 0, 28, 23, 0, 0, 0, 0, 0, + 2, 5, 11, 49, 0, 20, 27, 40, 56, 64, 58, 46, 42, 25, 0, 4, + 38, 8, 4, 2, 1, 5, 7, 11, 14, 2, 0, 27, 34, 38, 41, 47, + 43, 37, 31, 13, 0, 30, 27, 0, 0, 0, 6, 11, 7, 18, 47, 0, + 0, 13, 34, 36, 37, 35, 18, 17, 0, 6, 35, 11, 5, 9, 7, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 5, 19, + 35, 0, 4, 32, 36, 42, 55, 58, 59, 60, 56, 54, 53, 32, 4, 0, + 53, 33, 4, 0, 0, 0, 6, 7, 2, 0, 0, 3, 17, 43, 5, 0, + 15, 43, 49, 52, 52, 49, 49, 36, 39, 22, 0, 0, 36, 7, 0, 0, + 0, 17, 40, 0, 0, 30, 34, 41, 54, 60, 52, 47, 40, 32, 17, 0, + 10, 43, 20, 7, 0, 0, 0, 35, 0, 0, 28, 43, 50, 55, 52, 41, + 32, 22, 10, 14, 32, 0, 1, 2, 7, 8, 4, 0, 0, 0, 0, 3, + 0, 0, 0, 5, 12, 34, 0, 27, 26, 38, 39, 52, 60, 70, 73, 66, + 38, 30, 39, 18, 0, 39, 23, 0, 0, 0, 6, 0, 0, 0, 2, 3, + 0, 0, 0, 28, 0, 21, 26, 36, 43, 55, 67, 60, 57, 39, 31, 0, + 0, 63, 17, 0, 11, 25, 40, 0, 0, 33, 42, 50, 51, 56, 80, 74, + 54, 52, 54, 41, 27, 6, 0, 37, 15, 3, 2, 7, 0, 0, 0, 0, + 3, 4, 11, 4, 0, 28, 43, 53, 62, 61, 47, 36, 36, 14, 0, 24, + 17, 0, 0, 0, 0, 0, 0, 2, 11, 48, 0, 17, 24, 36, 51, 59, + 54, 42, 40, 25, 2, 6, 36, 5, 4, 4, 3, 8, 11, 16, 19, 7, + 0, 34, 39, 42, 45, 51, 45, 38, 31, 13, 0, 33, 34, 2, 0, 0, + 4, 7, 0, 20, 30, 0, 15, 41, 53, 47, 41, 37, 37, 29, 18, 0, + 25, 0, 0, 0, 6, 3, 0, 0, 3, 6, 6, 4, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, + 1, 3, 0, 7, 2, 17, 30, 10, 0, 14, 35, 42, 41, 44, 53, 61, + 62, 62, 59, 55, 38, 4, 0, 18, 38, 13, 19, 19, 23, 24, 20, 19, + 21, 33, 40, 0, 0, 18, 30, 50, 62, 63, 54, 45, 39, 33, 38, 9, + 0, 45, 23, 11, 0, 0, 0, 3, 23, 28, 0, 18, 29, 39, 52, 59, + 54, 52, 50, 48, 41, 7, 0, 23, 47, 24, 8, 3, 2, 38, 3, 3, + 32, 43, 45, 49, 47, 38, 30, 22, 10, 15, 34, 0, 0, 0, 4, 7, + 5, 0, 0, 0, 0, 0, 0, 4, 5, 4, 2, 36, 23, 6, 24, 25, + 46, 46, 56, 72, 63, 56, 45, 30, 30, 3, 0, 41, 10, 0, 0, 0, + 0, 11, 1, 0, 2, 2, 0, 0, 0, 27, 0, 21, 26, 33, 40, 50, + 61, 57, 50, 37, 34, 0, 0, 65, 19, 0, 4, 18, 17, 16, 0, 10, + 26, 39, 45, 52, 67, 76, 67, 56, 52, 44, 38, 19, 0, 0, 36, 8, + 12, 6, 0, 1, 0, 2, 3, 5, 12, 3, 0, 30, 43, 53, 58, 58, + 46, 36, 38, 16, 0, 24, 16, 0, 5, 6, 0, 0, 0, 1, 8, 44, + 0, 17, 24, 35, 45, 53, 50, 40, 36, 24, 4, 7, 34, 1, 0, 2, + 1, 6, 9, 14, 19, 11, 0, 36, 41, 44, 48, 54, 46, 40, 31, 13, + 0, 35, 34, 4, 0, 0, 6, 6, 0, 25, 0, 0, 30, 54, 54, 54, + 46, 39, 40, 32, 23, 0, 0, 4, 0, 0, 2, 2, 0, 0, 2, 5, + 5, 2, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 3, 4, 3, 0, 0, 1, 6, 29, 25, 0, + 18, 40, 32, 40, 55, 51, 49, 57, 56, 54, 35, 28, 6, 0, 0, 42, + 59, 58, 36, 40, 57, 56, 37, 8, 0, 0, 13, 32, 45, 57, 65, 61, + 47, 50, 34, 29, 18, 0, 48, 29, 19, 6, 0, 0, 0, 0, 4, 33, + 0, 0, 22, 46, 47, 58, 54, 53, 53, 55, 47, 32, 0, 0, 23, 69, + 47, 22, 22, 37, 8, 8, 29, 36, 40, 44, 46, 42, 31, 23, 16, 0, + 35, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 4, 0, 0, 1, 1, + 5, 28, 36, 0, 16, 38, 42, 47, 55, 69, 62, 49, 28, 31, 26, 0, + 8, 16, 6, 0, 0, 0, 4, 11, 5, 8, 0, 4, 0, 0, 0, 35, + 0, 22, 27, 32, 38, 45, 51, 48, 44, 37, 26, 0, 0, 62, 15, 0, + 13, 8, 8, 34, 0, 0, 10, 40, 31, 48, 60, 73, 61, 57, 59, 51, + 44, 34, 23, 0, 17, 25, 8, 0, 2, 0, 13, 4, 7, 10, 15, 5, + 0, 30, 41, 47, 51, 52, 43, 35, 36, 23, 0, 34, 13, 0, 8, 14, + 5, 0, 2, 0, 1, 40, 0, 19, 26, 37, 43, 46, 45, 41, 32, 20, + 2, 12, 30, 0, 6, 0, 0, 0, 1, 7, 15, 10, 0, 32, 42, 44, + 45, 60, 47, 40, 32, 8, 0, 32, 32, 0, 8, 7, 7, 3, 2, 29, + 0, 1, 32, 55, 53, 54, 49, 39, 39, 32, 22, 0, 0, 21, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 2, 2, 1, 0, 0, 0, 0, 0, 3, 2, 4, 0, + 2, 0, 0, 18, 33, 30, 0, 12, 22, 29, 49, 58, 41, 41, 49, 50, + 51, 43, 25, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 27, + 29, 41, 56, 57, 53, 49, 40, 28, 26, 15, 0, 24, 36, 15, 12, 7, + 0, 0, 0, 0, 0, 15, 39, 0, 0, 39, 56, 56, 45, 52, 54, 55, + 57, 54, 33, 5, 0, 0, 0, 0, 0, 50, 10, 3, 26, 39, 39, 40, + 43, 42, 35, 26, 14, 0, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 2, 0, 0, 0, 0, 16, 37, 0, 0, 26, 36, 48, 54, 68, + 53, 48, 28, 21, 18, 0, 28, 13, 0, 0, 0, 0, 3, 6, 7, 2, + 8, 1, 0, 7, 6, 42, 0, 27, 35, 39, 44, 49, 50, 46, 38, 33, + 26, 4, 0, 59, 21, 0, 3, 18, 4, 18, 54, 0, 0, 23, 35, 51, + 54, 60, 61, 60, 54, 50, 50, 35, 36, 0, 0, 57, 23, 4, 0, 4, + 0, 7, 10, 8, 27, 11, 0, 31, 44, 48, 48, 50, 47, 41, 39, 16, + 0, 23, 28, 0, 10, 12, 8, 0, 5, 8, 0, 40, 0, 18, 36, 44, + 45, 46, 48, 43, 34, 25, 12, 0, 36, 0, 0, 0, 0, 0, 0, 0, + 26, 7, 0, 28, 32, 44, 51, 57, 46, 45, 40, 18, 0, 0, 20, 0, + 6, 14, 9, 9, 0, 34, 0, 22, 32, 36, 44, 56, 48, 47, 35, 34, + 32, 0, 0, 34, 12, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 3, 2, 2, 1, 0, + 0, 0, 3, 3, 0, 0, 1, 1, 0, 0, 16, 32, 12, 0, 0, 26, + 31, 38, 37, 39, 40, 44, 53, 49, 37, 29, 24, 7, 0, 0, 0, 2, + 10, 5, 9, 13, 28, 47, 50, 50, 56, 51, 42, 43, 31, 22, 12, 0, + 15, 35, 12, 14, 7, 4, 2, 2, 1, 0, 0, 3, 18, 6, 0, 12, + 42, 53, 45, 46, 36, 42, 54, 52, 47, 45, 33, 12, 0, 0, 16, 39, + 17, 5, 15, 35, 47, 51, 52, 53, 53, 43, 26, 0, 18, 25, 2, 0, + 0, 0, 0, 0, 2, 3, 1, 3, 1, 2, 3, 0, 2, 0, 1, 25, + 0, 5, 30, 54, 54, 58, 49, 42, 27, 17, 0, 3, 40, 7, 0, 0, + 1, 4, 4, 3, 2, 0, 0, 0, 0, 4, 5, 28, 0, 32, 44, 49, + 50, 52, 51, 48, 39, 41, 36, 10, 0, 65, 13, 3, 8, 0, 6, 14, + 24, 17, 0, 17, 30, 49, 48, 49, 61, 57, 48, 45, 54, 55, 33, 13, + 0, 4, 35, 5, 1, 0, 8, 0, 2, 11, 25, 21, 0, 29, 42, 48, + 45, 45, 48, 48, 39, 43, 9, 6, 33, 1, 11, 2, 2, 0, 0, 0, + 6, 32, 0, 25, 47, 52, 48, 47, 48, 45, 36, 27, 15, 0, 54, 10, + 0, 0, 2, 0, 0, 0, 25, 8, 0, 26, 34, 49, 51, 58, 53, 51, + 39, 28, 7, 1, 38, 1, 3, 8, 8, 2, 5, 38, 0, 16, 28, 44, + 44, 51, 49, 48, 50, 37, 39, 7, 0, 35, 12, 1, 5, 4, 5, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 1, 1, 2, 0, 0, 2, 2, 2, 0, 3, 5, 0, 0, + 0, 10, 26, 21, 0, 0, 16, 18, 38, 28, 40, 40, 36, 44, 45, 36, + 23, 29, 26, 33, 30, 35, 36, 31, 36, 44, 45, 48, 38, 38, 48, 40, + 24, 21, 8, 0, 0, 40, 21, 5, 11, 8, 4, 3, 3, 3, 3, 4, + 0, 0, 0, 20, 18, 0, 16, 33, 34, 34, 43, 38, 49, 50, 54, 56, + 46, 24, 0, 5, 32, 36, 7, 5, 22, 30, 39, 42, 42, 45, 50, 44, + 27, 0, 0, 53, 28, 3, 3, 0, 5, 0, 6, 5, 0, 0, 2, 5, + 5, 0, 0, 0, 0, 17, 20, 0, 12, 24, 49, 44, 50, 30, 25, 13, + 0, 36, 29, 0, 0, 0, 1, 3, 5, 4, 0, 0, 0, 0, 2, 14, + 35, 7, 0, 36, 48, 52, 48, 48, 49, 46, 42, 44, 41, 19, 0, 35, + 28, 0, 0, 7, 7, 0, 10, 31, 0, 0, 20, 38, 47, 46, 54, 44, + 41, 39, 46, 42, 39, 26, 8, 0, 21, 31, 9, 0, 0, 0, 0, 9, + 45, 0, 0, 29, 42, 45, 39, 39, 48, 50, 41, 29, 15, 0, 40, 5, + 4, 2, 0, 0, 0, 15, 13, 7, 0, 38, 52, 54, 49, 46, 48, 46, + 41, 34, 20, 0, 15, 29, 13, 0, 1, 0, 0, 9, 43, 0, 0, 15, + 37, 45, 47, 44, 44, 46, 41, 36, 12, 0, 48, 1, 16, 1, 6, 1, + 0, 25, 0, 10, 26, 30, 36, 43, 45, 50, 49, 31, 27, 3, 0, 22, + 11, 2, 8, 7, 9, 6, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, 3, 2, 2, 1, 1, 0, 0, 0, 1, 0, + 0, 0, 1, 4, 7, 6, 0, 4, 13, 20, 38, 0, 0, 0, 6, 27, + 29, 41, 37, 43, 36, 39, 29, 37, 41, 48, 41, 41, 39, 37, 38, 38, + 40, 41, 29, 18, 21, 17, 14, 9, 0, 0, 35, 17, 9, 3, 0, 0, + 1, 1, 0, 0, 5, 8, 6, 2, 0, 13, 28, 15, 0, 1, 19, 15, + 31, 29, 35, 35, 38, 39, 22, 0, 0, 59, 12, 35, 5, 0, 25, 28, + 32, 32, 30, 32, 40, 39, 27, 7, 0, 31, 35, 12, 10, 0, 7, 2, + 5, 4, 0, 0, 3, 7, 6, 0, 0, 0, 0, 7, 49, 0, 0, 5, + 30, 37, 42, 24, 24, 2, 0, 50, 21, 0, 0, 0, 0, 2, 3, 0, + 0, 0, 0, 0, 0, 24, 43, 0, 2, 28, 36, 37, 30, 30, 35, 37, + 41, 33, 35, 26, 11, 0, 42, 0, 5, 0, 2, 2, 0, 11, 33, 0, + 2, 11, 23, 28, 28, 24, 37, 33, 31, 26, 29, 37, 39, 5, 0, 44, + 22, 0, 0, 2, 0, 21, 37, 0, 0, 20, 32, 32, 24, 24, 35, 38, + 38, 26, 26, 0, 0, 29, 6, 0, 0, 0, 0, 12, 45, 0, 0, 30, + 37, 39, 35, 32, 31, 34, 34, 29, 12, 0, 0, 52, 25, 6, 7, 7, + 0, 25, 68, 0, 0, 26, 42, 38, 39, 36, 40, 42, 38, 41, 28, 0, + 2, 34, 4, 0, 4, 0, 0, 32, 21, 0, 15, 39, 34, 33, 51, 55, + 48, 40, 17, 0, 6, 2, 5, 0, 7, 7, 5, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 3, 4, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 0, 6, + 2, 29, 47, 5, 0, 1, 4, 10, 21, 30, 15, 23, 27, 30, 41, 51, + 47, 37, 27, 26, 33, 38, 29, 15, 7, 10, 0, 0, 0, 16, 49, 31, + 9, 0, 0, 0, 4, 0, 1, 2, 0, 0, 4, 7, 5, 2, 8, 7, + 2, 27, 46, 0, 0, 1, 11, 23, 29, 20, 13, 9, 2, 0, 3, 32, + 12, 23, 0, 0, 11, 13, 14, 12, 10, 8, 16, 15, 9, 0, 0, 0, + 22, 27, 15, 4, 0, 0, 1, 0, 0, 0, 4, 6, 3, 0, 0, 0, + 0, 8, 11, 50, 7, 0, 5, 38, 28, 24, 24, 0, 0, 38, 16, 2, + 4, 0, 0, 3, 3, 0, 0, 0, 0, 7, 22, 27, 3, 0, 0, 14, + 17, 15, 9, 7, 15, 19, 24, 19, 17, 14, 16, 0, 0, 17, 8, 1, + 0, 0, 0, 8, 18, 39, 0, 0, 0, 0, 0, 7, 16, 11, 3, 13, + 20, 16, 14, 2, 0, 0, 22, 28, 0, 0, 9, 32, 0, 0, 0, 8, + 16, 15, 6, 7, 14, 18, 14, 18, 11, 0, 0, 0, 20, 5, 0, 0, + 0, 20, 34, 0, 0, 15, 12, 13, 13, 11, 10, 14, 18, 15, 7, 0, + 0, 15, 35, 7, 4, 11, 10, 40, 12, 0, 0, 12, 23, 16, 12, 13, + 17, 15, 9, 16, 23, 3, 0, 29, 15, 1, 0, 0, 5, 15, 49, 0, + 0, 10, 18, 26, 40, 42, 31, 14, 0, 0, 23, 0, 3, 0, 5, 3, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, + 0, 0, 1, 2, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 0, 0, 0, 0, 1, 14, 8, 5, 13, 33, 40, 10, 0, 0, 0, 10, + 23, 15, 10, 7, 22, 29, 33, 29, 26, 22, 15, 9, 7, 9, 0, 0, + 0, 0, 32, 39, 27, 18, 13, 5, 0, 0, 1, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 13, 0, 6, 7, 17, 44, 1, 0, 0, 0, 0, 5, + 4, 0, 0, 0, 41, 19, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 0, + 7, 7, 1, 0, 0, 0, 5, 3, 22, 27, 35, 79, 0, 31, 26, 25, + 19, 0, 29, 19, 9, 0, 3, 0, 0, 0, 0, 1, 0, 2, 4, 10, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 9, 12, 7, 0, 8, 16, 40, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 16, 15, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 10, 10, 0, 5, 37, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 11, 3, 0, 8, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, + 0, 0, 0, 8, 21, 26, 0, 0, 0, 20, 12, 19, 10, 0, 0, 14, + 10, 5, 12, 10, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, + 0, 1, 0, 0, 1, 1, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 10, 0, 5, 4, 0, 2, + 20, 34, 38, 39, 38, 7, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 30, 49, 44, 27, 11, 4, 9, 14, 10, 3, 7, 0, + 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 0, 6, 12, + 21, 48, 41, 28, 1, 5, 4, 0, 25, 38, 18, 1, 4, 19, 10, 22, + 23, 36, 33, 32, 27, 26, 29, 30, 24, 24, 30, 21, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 2, 8, 5, 0, 0, 0, 0, 4, 5, 13, 18, + 32, 0, 0, 21, 28, 19, 3, 0, 48, 8, 2, 0, 9, 5, 0, 0, + 0, 4, 0, 0, 6, 19, 0, 1, 19, 28, 32, 33, 32, 29, 23, 23, + 26, 30, 38, 31, 16, 22, 29, 25, 19, 0, 12, 5, 1, 7, 4, 5, + 0, 5, 7, 22, 24, 32, 52, 56, 28, 30, 37, 30, 37, 34, 22, 17, + 36, 24, 14, 0, 21, 8, 0, 0, 19, 42, 37, 35, 35, 36, 33, 31, + 32, 34, 35, 29, 40, 34, 26, 18, 0, 22, 5, 8, 7, 0, 21, 33, + 28, 22, 19, 24, 30, 33, 30, 33, 40, 35, 27, 27, 30, 21, 0, 3, + 0, 3, 4, 0, 15, 29, 38, 36, 34, 36, 25, 28, 23, 21, 26, 22, + 29, 39, 31, 11, 0, 5, 0, 0, 0, 6, 3, 20, 33, 45, 0, 0, + 0, 0, 8, 25, 29, 17, 2, 6, 15, 11, 2, 0, 0, 0, 0, 0, + 4, 3, 2, 2, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 3, 3, 4, 2, + 4, 3, 4, 2, 0, 1, 9, 14, 16, 20, 29, 34, 36, 37, 35, 38, + 1, 3, 4, 3, 9, 24, 36, 39, 37, 33, 29, 23, 17, 10, 6, 5, + 6, 8, 7, 6, 4, 3, 3, 3, 4, 3, 1, 2, 3, 1, 3, 3, + 7, 6, 4, 3, 3, 6, 12, 17, 24, 28, 30, 32, 32, 31, 26, 20, + 8, 3, 5, 8, 16, 21, 27, 29, 29, 29, 25, 25, 24, 23, 22, 23, + 23, 22, 13, 8, 3, 1, 0, 0, 7, 9, 9, 7, 9, 5, 0, 0, + 0, 0, 0, 2, 18, 24, 53, 0, 0, 29, 21, 6, 0, 18, 34, 1, + 0, 0, 12, 8, 0, 0, 0, 2, 2, 0, 4, 6, 10, 15, 21, 24, + 28, 27, 26, 26, 23, 24, 26, 27, 29, 27, 22, 21, 24, 25, 20, 15, + 6, 2, 5, 4, 3, 3, 3, 4, 5, 7, 10, 13, 17, 21, 24, 27, + 28, 28, 26, 25, 21, 21, 25, 24, 18, 13, 7, 6, 7, 13, 23, 29, + 29, 27, 29, 29, 27, 25, 27, 27, 27, 27, 27, 26, 26, 20, 13, 8, + 5, 3, 3, 10, 20, 26, 24, 22, 23, 23, 25, 27, 25, 27, 29, 27, + 25, 23, 27, 20, 8, 3, 1, 1, 3, 8, 20, 27, 27, 27, 29, 27, + 25, 23, 23, 23, 23, 24, 26, 25, 27, 21, 10, 3, 0, 0, 3, 4, + 4, 8, 17, 25, 30, 33, 34, 34, 31, 25, 12, 3, 2, 4, 7, 5, + 0, 1, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 1, 4, 0, 0, 0, + 0, 3, 2, 4, 4, 3, 1, 0, 2, 2, 0, 0, 1, 2, 3, 1, + 3, 3, 3, 2, 3, 6, 8, 11, 13, 10, 7, 8, 5, 2, 6, 6, + 3, 2, 3, 2, 1, 4, 2, 4, 3, 4, 4, 5, 2, 3, 3, 3, + 0, 1, 1, 1, 4, 3, 3, 2, 3, 2, 2, 1, 4, 3, 2, 0, + 2, 4, 4, 4, 4, 3, 2, 2, 2, 2, 3, 3, 3, 3, 4, 5, + 4, 2, 1, 0, 0, 0, 2, 3, 4, 2, 1, 0, 0, 0, 0, 7, + 12, 6, 0, 0, 0, 0, 0, 9, 0, 7, 12, 45, 45, 0, 9, 27, + 28, 0, 0, 48, 17, 1, 0, 1, 9, 6, 0, 0, 0, 3, 1, 0, + 1, 2, 2, 4, 4, 3, 3, 3, 2, 1, 2, 2, 2, 3, 2, 2, + 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, 3, 1, 2, 1, + 2, 1, 1, 0, 1, 1, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, + 1, 0, 1, 0, 1, 0, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, + 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 3, 1, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 0, 2, 0, 2, 0, 2, 0, + 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 0, 2, 1, 2, 1, + 3, 1, 2, 1, 1, 1, 2, 2, 3, 3, 4, 2, 1, 1, 2, 2, + 0, 0, 1, 1, 0, 1, 2, 3, 2, 1, 0, 1, 0, 0, 2, 5, + 2, 0, 0, 0, 0, 0, 0, 0, 2, 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, 0, 0, 1, 0, 0, 0, 0, 0, 2, 2, 4, 6, 9, 7, + 5, 6, 3, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 3, 1, 0, 5, 0, 0, 0, 1, + 26, 56, 0, 2, 28, 32, 29, 0, 0, 40, 10, 0, 3, 5, 2, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 1, 0, 0, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 3, 3, 6, 4, 2, 2, 2, 3, 2, 2, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 6, 12, 14, 16, 1, 21, 53, 0, 0, 23, 41, 41, 17, 0, 18, 23, + 1, 0, 8, 7, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 0, 0, 2, 0, 0, 3, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 4, 8, 9, 6, 4, 1, 0, 0, + 2, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 2, 1, 1, 0, 0, 0, + 0, 0, 10, 4, 0, 12, 25, 27, 31, 27, 44, 64, 0, 0, 16, 33, + 44, 31, 15, 0, 38, 10, 0, 0, 9, 7, 0, 0, 0, 1, 0, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 2, 0, 1, + 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, + 1, 0, 0, 0, 0, 1, 0, 0, 1, 3, 2, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 2, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 1, 3, 2, + 3, 2, 0, 0, 0, 0, 0, 1, 3, 6, 25, 23, 3, 13, 22, 20, + 0, 0, 4, 23, 28, 45, 38, 19, 0, 0, 33, 0, 0, 0, 4, 2, + 0, 0, 0, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 2, 3, 3, 4, + 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 7, 6, 5, 2, 1, 0, 0, 0, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 1, 2, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 4, 0, 23, + 51, 8, 0, 0, 0, 0, 0, 6, 20, 38, 44, 37, 25, 6, 0, 35, + 9, 2, 0, 0, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 1, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 2, 1, 1, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 1, 0, + 1, 1, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 1, 0, 3, 2, 3, 3, 2, 2, 1, 0, 0, 0, 0, 0, 0, 2, + 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, + 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 2, + 2, 2, 1, 0, 0, 1, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, + 1, 0, 1, 0, 0, 0, 0, 2, 4, 2, 5, 2, 2, 0, 0, 0, + 0, 0, 0, 1, 7, 42, 23, 0, 17, 16, 10, 12, 22, 35, 44, 42, + 36, 22, 18, 0, 15, 27, 11, 5, 5, 0, 0, 0, 0, 0, 4, 4, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 2, 1, 1, 2, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, + 1, 1, 2, 1, 2, 1, 1, 0, 1, 0, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 2, 1, 2, 1, 2, 1, + 2, 1, 2, 1, 2, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 2, 0, 1, 0, 1, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 2, 1, 2, 0, 1, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 0, 4, 2, 3, 2, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 2, 1, 0, 1, 2, 1, 1, 1, 2, 1, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 1, 3, 3, + 2, 1, 1, 0, 0, 0, 0, 0, 0, 7, 21, 15, 0, 18, 33, 32, + 25, 19, 34, 43, 35, 31, 24, 4, 0, 0, 16, 14, 9, 6, 2, 0, + 0, 0, 0, 3, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 1, 0, 0, 1, + 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, + 2, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 0, + 1, 0, 2, 2, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 13, + 41, 0, 4, 20, 39, 36, 22, 32, 39, 34, 25, 11, 0, 0, 33, 28, + 17, 5, 7, 9, 4, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 0, + 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 2, 2, 2, 2, + 2, 2, 2, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 1, 1, 0, 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, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 0, 0, 0, 0, 0, 0, 1, 1, 3, 1, 1, 1, + 0, 0, 3, 7, 14, 38, 0, 13, 13, 23, 29, 22, 29, 23, 16, 14, + 0, 0, 0, 36, 30, 17, 5, 0, 4, 9, 4, 0, 0, 0, 0, 3, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 1, 5, 11, 20, 0, 0, 4, 7, 0, + 0, 0, 0, 1, 0, 0, 21, 48, 39, 16, 5, 0, 2, 6, 9, 7, + 2, 0, 0, 0, 0, 2, 4, 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, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 1, 0, 2, 2, 2, + 0, 0, 1, 1, 1, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 12, + 1, 0, 0, 0, 0, 0, 0, 0, 13, 23, 39, 42, 25, 14, 12, 6, + 0, 0, 7, 10, 7, 2, 2, 3, 0, 0, 0, 0, 1, 2, 0, 0, + 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 0, 0, 1, + 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 5, 13, 20, 38, 43, 46, 41, 35, 39, 22, 34, 22, + 16, 12, 0, 0, 3, 0, 0, 0, 0, 3, 3, 2, 2, 5, 0, 0, + 0, 0, 4, 3, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 2, 1, + 0, 0, 0, 0, 1, 1, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 1, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 11, 19, 5, 9, + 9, 15, 14, 12, 6, 5, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 3, 2, 1, 0, 0, 0, 0, 6, 5, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 2, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 0, 1, 1, 0, 2, 3, 2, 4, 4, 4, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 2, 3, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 2, 2, 2, 2, + 2, 2, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, + 1, 2, 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, 0, 0, 0, + 2, 4, 4, 0, 0, 0, 3, 2, 3, 0, 0, 0, 0, 0, 5, 2, + 0, 2, 0, 0, 0, 0, 1, 2, 4, 3, 0, 0, 0, 0, 4, 4, + 0, 0, 0, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 4, 2, + 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 3, 1, 1, 0, 0, 0, 4, 3, 4, 1, 2, 4, 4, 3, 4, 3, + 3, 2, 2, 4, 5, 5, 1, 4, 6, 4, 1, 0, 0, 2, 1, 1, + 0, 0, 1, 0, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 3, 3, 3, 2, 2, 1, 0, 1, 5, 5, 2, 2, + 4, 4, 4, 3, 3, 1, 1, 2, 4, 3, 4, 3, 1, 3, 5, 4, + 1, 0, 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, + 0, 0, 0, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, + 0, 1, 0, 2, 0, 1, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 1, 3, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 2, + 2, 1, 3, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 2, 3, 2, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, + 0, 0, 1, 2, 1, 2, 3, 2, 3, 3, 2, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 1, + 3, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 1, 2, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 3, 3, 1, 1, 0, 2, 1, 1, 2, 0, 1, 0, + 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 2, + 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +/* Define image 'tomato' of size 100x100x1x3 and type 'const unsigned char' */ +const unsigned char data_tomato[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, + 149, 49, 31, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 194, 166, 70, 0, 2, 3, 14, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 249, 144, 41, 1, 0, 2, 6, 7, 1, 14, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 241, 0, 1, 7, 8, 7, 3, 0, 2, 5, + 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 93, 1, 3, 0, 0, + 0, 9, 16, 3, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, + 0, 1, 5, 13, 14, 17, 18, 5, 94, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 63, 3, 10, 13, 18, 18, 18, 10, 92, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 177, 0, 9, 11, 18, 18, 18, 10, + 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 6, 10, + 17, 18, 18, 10, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 85, 4, 10, 15, 18, 18, 13, 4, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 153, 2, 10, 14, 18, 18, 17, 4, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 1, 9, 11, 18, 18, 17, + 2, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 10, 8, + 10, 17, 18, 17, 3, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 51, 5, 10, 16, 18, 18, 5, 99, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 253, 253, 245, 240, 223, + 207, 207, 207, 208, 250, 255, 104, 2, 10, 13, 18, 18, 8, 82, 255, 255, + 255, 255, 255, 255, 255, 255, 223, 177, 104, 81, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 104, 182, 209, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 250, 248, 247, 247, 229, + 202, 181, 175, 175, 175, 175, 175, 175, 197, 254, 172, 2, 10, 12, 18, 18, + 11, 18, 250, 255, 255, 255, 242, 161, 119, 57, 18, 0, 54, 90, 143, 191, + 191, 191, 191, 191, 191, 191, 191, 138, 90, 49, 0, 1, 57, 160, 218, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 251, 247, 247, 218, + 202, 110, 64, 8, 7, 7, 7, 7, 7, 38, 82, 150, 175, 226, 192, 0, + 9, 11, 18, 18, 96, 36, 250, 245, 160, 96, 9, 15, 35, 107, 136, 235, + 242, 247, 247, 247, 247, 250, 253, 254, 254, 254, 254, 252, 251, 245, 238, 165, + 67, 24, 6, 105, 169, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, 247, + 247, 174, 80, 12, 0, 22, 57, 104, 128, 128, 128, 128, 119, 57, 14, 0, + 46, 148, 230, 18, 7, 11, 18, 18, 43, 255, 143, 50, 0, 69, 129, 210, + 247, 247, 247, 247, 247, 247, 247, 247, 253, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 251, 229, 120, 62, 0, 48, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 251, 239, 124, 27, 7, 41, 131, 167, 166, 175, 175, 175, 175, 175, 175, + 175, 175, 164, 110, 41, 6, 19, 2, 20, 38, 18, 18, 16, 55, 7, 85, + 182, 244, 247, 247, 247, 247, 247, 247, 247, 247, 247, 252, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 244, 208, 37, 9, 28, + 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 249, 197, 85, 13, 67, 136, 197, 186, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 179, 76, 7, 38, 103, 16, 11, + 1, 47, 191, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 250, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 250, 236, 171, 92, 2, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 248, 187, 9, 10, 130, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 208, 246, 247, 198, + 63, 2, 1, 0, 6, 170, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 252, 248, 247, 107, 10, 201, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 241, 101, 0, 55, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 184, 192, 205, 222, 222, + 247, 247, 247, 247, 247, 163, 55, 12, 39, 220, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 248, 245, 71, 0, 147, + 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 246, 108, 7, + 102, 166, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 193, 222, 241, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 243, 209, 223, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 251, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 247, 233, 111, 1, 61, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 240, 97, 4, 120, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 192, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 251, 255, 255, + 255, 255, 255, 255, 253, 253, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 245, 247, 189, 12, 106, 246, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 252, 165, 0, 92, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 229, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 251, 255, 255, 255, 255, 255, 251, 247, 247, 247, 248, 251, 251, 254, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 247, 143, 11, 145, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 24, 71, 174, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 178, 245, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 249, 254, 255, 255, 255, 254, 248, 247, 247, 247, 247, + 247, 247, 247, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 249, + 247, 100, 7, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 159, 11, 157, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 197, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 250, 255, 255, 254, 249, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, 250, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 248, 247, 68, 40, 234, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 58, + 66, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 197, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 251, + 254, 255, 255, 255, 255, 255, 255, 255, 253, 247, 224, 36, 63, 246, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 194, 5, 138, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 181, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 251, 255, 255, 255, 255, 255, 255, 255, 255, 248, 246, 203, + 17, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 240, 77, 41, 173, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 232, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 249, 254, 255, 255, 255, 255, 255, + 255, 254, 249, 247, 141, 13, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 247, 183, 25, 101, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 213, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 250, 255, + 255, 255, 255, 255, 255, 255, 253, 247, 241, 45, 116, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 172, 5, 153, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 186, 244, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 250, 255, 255, 255, 255, 255, 255, 255, 242, 247, 144, 12, 249, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 227, 120, 10, 165, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 226, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 252, 255, 255, 255, 255, 255, 255, 245, + 244, 240, 17, 108, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 227, 95, 47, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 207, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 253, 255, 255, + 255, 255, 255, 250, 243, 247, 111, 13, 208, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 227, 59, 83, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 182, 238, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 250, 255, 255, 255, 255, 255, 255, 248, 247, 247, 16, 102, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 59, 108, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 205, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 248, 254, 255, 255, 255, 255, 255, 248, 247, 247, 152, + 14, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 26, 108, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 181, 237, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 254, 255, 255, 255, 255, 255, + 248, 247, 247, 243, 22, 147, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 0, 152, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 203, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 252, 255, + 255, 255, 255, 255, 248, 247, 247, 247, 95, 114, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 168, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 232, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 240, 240, 246, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 251, 255, 255, 255, 255, 254, 248, 247, 247, 247, 139, 27, 237, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 168, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 191, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 246, 241, 241, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 253, 255, 255, 255, 251, 247, 247, 247, 247, + 226, 13, 162, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 0, 168, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 176, 220, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, 251, 251, 250, 247, + 247, 247, 247, 247, 247, 99, 59, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 0, 168, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 177, 228, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 190, 48, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 168, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 181, 237, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, + 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 191, 8, 220, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 0, 168, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 195, 237, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 246, 242, 242, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 237, + 232, 232, 27, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 226, 0, 168, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 179, 235, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 246, 239, 239, 246, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 237, 180, 175, 175, 44, 127, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 226, 0, 168, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 184, 223, 241, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 245, 185, 175, 175, 175, 81, 111, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 226, 0, 123, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 184, 212, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 235, 175, 175, 175, 175, 81, 99, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 56, 108, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 203, 231, 244, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 216, 175, 175, + 175, 175, 81, 99, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 227, 59, 108, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 190, 216, 239, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 194, 175, 175, 175, 175, 81, 99, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 227, 59, 103, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 189, 244, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 240, 177, 175, 175, 175, 175, 81, 124, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 227, 76, 47, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 203, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 210, 175, 175, 175, 175, 175, 81, 127, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 120, 45, 174, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 195, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 239, 177, 175, 175, 175, + 175, 175, 81, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 233, 132, 1, 162, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 195, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 208, + 175, 175, 175, 175, 175, 175, 81, 127, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 175, 6, 137, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 187, 245, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 228, 177, 175, 175, 175, 175, 175, 175, 56, 127, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 41, 65, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 238, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 244, 184, 175, 175, 175, 175, 175, 175, 167, 16, 179, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 114, 41, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 217, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 205, 175, 175, 175, 175, 175, 175, + 175, 135, 17, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 140, 3, 156, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 191, 242, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 203, 175, 175, 175, + 175, 175, 175, 175, 175, 76, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 214, 12, 111, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 191, 243, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 201, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 74, 118, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 87, 64, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 200, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 224, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 18, 142, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, + 10, 156, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 210, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 240, 182, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 161, 9, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 247, 24, 120, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 176, 199, 244, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 244, 190, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 99, 19, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 85, 86, 178, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 185, 211, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 203, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 67, 104, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 7, 134, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 196, 245, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 232, 203, + 178, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 152, 14, 148, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 91, 31, 138, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 183, 210, 240, 247, 247, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 244, 213, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 84, + 32, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 212, 52, 21, 157, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 189, 219, 232, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 239, 212, 186, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 151, 12, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 32, 84, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 189, 217, 239, 247, 247, 247, 247, 247, + 247, 247, 247, 246, 235, 206, 177, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 80, 44, 248, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, + 1, 68, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 181, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 54, 144, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 156, 0, 136, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 161, 3, 176, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 251, 81, 15, 109, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 65, 26, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 92, 5, + 154, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 133, 5, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 31, 13, 130, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 145, 33, 68, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 231, 59, 6, 123, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 179, 83, 47, 203, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 99, 10, 127, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 178, 118, 6, + 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 241, 64, 4, 63, 156, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 181, 80, 7, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 153, 25, 3, 121, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 178, 110, 8, 149, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 226, 81, 0, 39, + 84, 148, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 140, 4, 148, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 250, 171, 107, 26, 4, 46, 95, 175, 150, 151, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 156, 8, 116, 253, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 236, 162, 83, 11, 0, 0, 2, 47, + 117, 48, 46, 46, 46, 46, 46, 46, 97, 117, 117, 171, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 155, 41, 78, + 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, + 234, 234, 156, 56, 26, 55, 130, 54, 6, 0, 0, 0, 0, 1, 0, 55, + 160, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 166, 31, 16, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 0, 2, 5, 0, + 0, 10, 10, 0, 29, 141, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 154, 53, 24, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 13, + 8, 16, 4, 53, 44, 5, 17, 9, 0, 11, 120, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 170, 46, 14, 201, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 192, 0, 11, 6, 5, 206, 183, 0, 13, 18, 7, 0, 38, 151, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 168, 47, 4, 201, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 15, 5, 18, 158, 255, 254, 71, 6, 17, + 15, 0, 3, 12, 61, 171, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 171, 72, 13, 191, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 188, 1, 4, 0, 45, 224, 116, 8, 1, 91, 162, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 153, 74, + 8, 7, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 138, 98, 120, 229, 255, 247, 185, 86, 0, 22, + 78, 168, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 86, 14, 21, 117, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 253, 215, 115, 16, 43, 142, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 153, 119, 26, 12, 104, 241, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 191, 38, 7, 77, 141, 175, 175, 175, + 175, 175, 161, 114, 104, 42, 10, 0, 60, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 130, 26, + 4, 10, 10, 10, 10, 10, 8, 16, 31, 78, 142, 239, 250, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 244, 178, 149, 149, 149, 181, 182, 182, 220, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, + 149, 49, 31, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 194, 166, 70, 7, 53, 65, 14, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 249, 144, 41, 2, 3, 43, 118, 139, 31, 14, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 241, 0, 35, 128, 156, 141, 67, 0, 33, 5, + 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 93, 35, 63, 14, 0, + 11, 132, 219, 47, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, + 0, 18, 97, 192, 210, 233, 234, 72, 94, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 63, 65, 178, 202, 234, 234, 234, 140, 92, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 177, 3, 167, 189, 234, 234, 234, 140, + 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 122, 181, + 228, 234, 234, 140, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 85, 75, 178, 216, 234, 234, 179, 4, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 153, 43, 178, 206, 234, 234, 221, 4, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 24, 169, 190, 234, 234, 221, + 2, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 10, 146, + 181, 227, 234, 229, 43, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 51, 98, 178, 224, 234, 234, 68, 99, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 235, 209, 209, 209, 209, 211, 213, 165, + 120, 120, 120, 121, 241, 255, 104, 36, 178, 204, 234, 234, 115, 82, 255, 255, + 255, 255, 255, 255, 255, 255, 223, 177, 104, 81, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 104, 182, 209, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 116, 39, 8, 8, 12, + 19, 25, 27, 27, 27, 27, 27, 27, 91, 252, 172, 36, 178, 197, 234, 234, + 148, 18, 250, 255, 255, 255, 242, 161, 119, 57, 18, 0, 1, 2, 4, 6, + 6, 6, 6, 6, 6, 6, 6, 4, 2, 1, 0, 1, 57, 160, 218, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 160, 28, 9, 7, + 6, 3, 5, 0, 1, 1, 1, 1, 1, 5, 12, 23, 27, 173, 192, 16, + 164, 185, 234, 234, 234, 36, 250, 245, 160, 96, 9, 0, 1, 3, 4, 7, + 7, 8, 8, 8, 8, 11, 23, 27, 63, 63, 63, 62, 60, 43, 21, 13, + 2, 0, 6, 105, 169, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 142, 10, + 8, 5, 2, 0, 0, 3, 8, 16, 19, 19, 19, 19, 18, 8, 2, 0, + 7, 51, 136, 18, 133, 185, 234, 234, 236, 255, 143, 50, 0, 2, 4, 6, + 8, 8, 8, 8, 8, 8, 8, 8, 16, 71, 97, 104, 104, 104, 104, 104, + 104, 104, 104, 94, 65, 29, 3, 2, 0, 48, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 245, 158, 7, 4, 0, 0, 1, 6, 23, 25, 27, 27, 27, 27, 27, 27, + 27, 27, 25, 17, 6, 1, 5, 2, 106, 218, 234, 234, 182, 55, 0, 2, + 5, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 21, 89, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 101, 72, 32, 6, 1, 9, 28, + 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 224, 80, 6, 2, 2, 10, 19, 21, 23, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 11, 2, 0, 1, 51, 219, 145, + 20, 1, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 15, 83, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 97, + 53, 12, 23, 92, 2, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 235, 82, 6, 0, 1, 20, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 18, 8, 8, 6, + 2, 0, 22, 8, 83, 72, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 70, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 74, 22, 77, 71, 10, 201, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 53, 3, 0, 8, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 24, 22, 18, 14, 14, + 8, 8, 8, 8, 8, 5, 16, 157, 212, 33, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 29, 99, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 88, 31, 37, 2, 0, 147, + 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 71, 3, 1, + 15, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 22, 14, 9, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 11, 44, 31, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 61, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 94, + 48, 8, 3, 0, 61, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 101, 3, 0, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 22, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 61, 104, 104, + 104, 104, 104, 104, 91, 84, 64, 68, 85, 94, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 65, 8, 32, 8, 106, 246, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 175, 10, 0, 14, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 61, 104, 104, 104, 104, 104, 65, 15, 8, 8, 9, 11, 20, 47, 94, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 47, 8, 4, 0, 145, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 62, 0, 11, 26, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 26, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 39, 101, 104, 104, 104, 97, 21, 8, 8, 8, 8, + 8, 8, 8, 14, 41, 98, 104, 104, 104, 104, 104, 104, 104, 104, 103, 36, + 8, 3, 0, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 16, 1, 24, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 20, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 54, 104, 104, 101, 33, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 9, 23, 89, 104, 104, 104, 104, 104, + 104, 104, 104, 97, 25, 8, 2, 40, 234, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 1, + 10, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 20, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 13, + 13, 13, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 11, 58, + 102, 104, 104, 104, 104, 104, 104, 104, 91, 18, 7, 1, 63, 246, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 102, 0, 21, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 25, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 58, 104, 104, 104, 104, 104, 104, 104, 104, 82, 12, 6, + 0, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 213, 23, 6, 26, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 11, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 9, 42, 102, 104, 104, 104, 104, 104, + 104, 104, 39, 8, 4, 13, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 233, 52, 3, 15, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 16, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 53, 104, + 104, 104, 104, 104, 104, 104, 82, 13, 7, 1, 116, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 26, 0, 23, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 9, 54, 104, 104, 104, 104, 104, 104, 104, 71, 8, 4, 12, 215, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 175, 18, 1, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 13, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 10, 79, 104, 104, 104, 104, 104, 104, 100, + 22, 7, 0, 62, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 175, 14, 7, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 18, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 15, 91, 104, 104, + 104, 104, 104, 104, 31, 8, 3, 0, 138, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 175, 9, 12, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 10, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 54, 104, 104, 104, 104, 104, 104, 30, 8, 8, 0, 56, 251, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 9, 16, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 18, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 28, 103, 104, 104, 104, 104, 104, 30, 8, 8, 4, + 0, 203, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 4, 16, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 25, 10, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 98, 104, 104, 104, 104, 104, + 30, 8, 8, 7, 0, 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 0, 23, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 19, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 70, 104, + 104, 104, 104, 104, 30, 8, 8, 8, 3, 18, 233, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 26, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, + 11, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 11, 12, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 66, 104, 104, 104, 104, 102, 28, 8, 8, 8, 4, 0, 181, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 26, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 22, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 11, 11, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 16, 91, 104, 104, 104, 60, 8, 8, 8, 8, + 7, 0, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 0, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 26, 15, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 25, 58, 58, 53, 10, + 8, 8, 8, 8, 8, 3, 59, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 0, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 12, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 37, 245, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 26, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 25, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 0, 178, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 0, 26, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 21, 10, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 10, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 10, + 11, 11, 1, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 175, 0, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 10, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 12, 12, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 10, 25, 27, 27, 6, 127, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 175, 0, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 24, 14, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 24, 27, 27, 27, 12, 81, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 175, 0, 19, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 24, 17, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 10, 27, 27, 27, 27, 12, 48, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 8, 16, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 19, 11, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 27, 27, + 27, 27, 12, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 175, 9, 16, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 22, 16, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 21, 27, 27, 27, 27, 12, 48, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 175, 9, 15, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 23, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 9, 26, 27, 27, 27, 27, 12, 119, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 175, 11, 7, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 19, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 17, 27, 27, 27, 27, 27, 12, 127, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 18, 7, 26, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 21, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 10, 26, 27, 27, 27, + 27, 27, 12, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 193, 20, 0, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 21, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 18, + 27, 27, 27, 27, 27, 27, 12, 127, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 27, 0, 21, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 23, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 12, 26, 27, 27, 27, 27, 27, 27, 8, 127, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 151, 6, 10, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 10, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 24, 27, 27, 27, 27, 27, 27, 25, 2, 179, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 20, 6, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 15, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 19, 27, 27, 27, 27, 27, 27, + 27, 20, 17, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 39, 0, 24, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 22, 9, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 19, 26, 27, 27, + 27, 27, 27, 27, 27, 11, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 139, 1, 17, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 22, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 19, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 11, 83, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 66, 9, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 20, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 13, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 2, 137, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, + 1, 24, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 17, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 9, 24, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 24, 1, 146, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 247, 24, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 20, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 23, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 15, 6, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 85, 7, 26, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 24, 17, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 19, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 10, 83, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 0, 15, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 26, 21, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 11, 19, + 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 23, 2, 148, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 91, 4, 21, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 24, 17, 9, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 16, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 13, + 16, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 212, 52, 3, 24, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 23, 15, 11, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 9, 17, 23, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 23, 1, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 32, 13, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 26, 23, 15, 9, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 11, 18, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 12, 44, 248, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, + 0, 10, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 8, 144, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 156, 0, 20, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 24, 0, 176, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 251, 81, 2, 16, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 10, 26, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 92, 1, + 23, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 20, 1, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 31, 2, 20, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 22, 5, 68, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 204, 13, 0, 19, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 40, 47, 203, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 9, 1, 19, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 9, 6, + 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 103, 2, 0, 9, 24, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 25, 9, 0, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 168, 63, 0, 0, 18, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 26, 8, 8, 149, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 120, 26, 0, 6, + 12, 22, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 11, 0, 148, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 247, 171, 107, 26, 0, 7, 12, 16, 23, 23, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 16, 0, 116, 253, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 236, 162, 83, 11, 0, 0, 0, 7, + 18, 7, 7, 7, 7, 7, 7, 7, 14, 18, 18, 26, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 24, 6, 78, + 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, + 234, 234, 156, 56, 26, 55, 130, 123, 82, 0, 0, 0, 0, 16, 0, 8, + 24, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 25, 4, 16, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 9, 31, 70, 0, + 0, 133, 136, 3, 4, 21, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 23, 8, 24, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 13, + 110, 217, 57, 58, 101, 71, 233, 126, 1, 1, 18, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 26, 7, 14, 201, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 192, 0, 152, 87, 5, 206, 183, 0, 176, 234, 95, 0, 5, 23, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 7, 4, 201, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 15, 5, 18, 158, 255, 254, 71, 79, 232, + 201, 12, 3, 1, 9, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 11, 13, 191, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 188, 1, 54, 8, 45, 224, 61, 1, 0, 14, 24, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 23, 11, + 1, 7, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 138, 98, 120, 229, 255, 234, 129, 13, 0, 3, + 12, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 13, 2, 21, 117, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 250, 215, 115, 16, 6, 21, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 23, 18, 4, 12, 104, 241, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 191, 38, 1, 11, 21, 27, 27, 27, + 27, 27, 24, 17, 16, 6, 1, 0, 60, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 130, 26, + 0, 1, 1, 1, 1, 1, 1, 16, 31, 78, 142, 239, 250, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 244, 172, 89, 89, 89, 180, 182, 182, 220, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, + 149, 49, 31, 79, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 194, 166, 70, 1, 8, 10, 14, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 249, 144, 41, 1, 0, 7, 19, 23, 5, 14, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 241, 0, 5, 21, 26, 23, 11, 0, 6, 5, + 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 93, 5, 10, 2, 0, + 1, 26, 44, 9, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, + 0, 3, 16, 35, 40, 46, 47, 14, 94, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 63, 11, 30, 37, 47, 47, 47, 28, 92, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 177, 1, 28, 33, 47, 47, 47, 28, + 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 20, 31, + 45, 47, 47, 28, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 85, 12, 30, 41, 47, 47, 36, 4, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 153, 7, 30, 38, 47, 47, 44, 4, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 4, 28, 33, 47, 47, 44, + 2, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 10, 24, + 31, 45, 47, 46, 8, 171, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 51, 16, 30, 44, 47, 47, 13, 99, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 235, 208, 208, 208, 208, 211, 212, 164, + 118, 118, 118, 119, 240, 255, 104, 6, 30, 38, 47, 47, 23, 82, 255, 255, + 255, 255, 255, 255, 255, 255, 223, 177, 104, 81, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 104, 182, 209, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 114, 35, 4, 4, 8, + 16, 22, 24, 24, 24, 24, 24, 24, 88, 252, 172, 6, 30, 35, 47, 47, + 29, 18, 250, 255, 255, 255, 242, 161, 119, 57, 18, 0, 0, 1, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 1, 57, 160, 218, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 159, 25, 5, 3, + 3, 1, 4, 0, 0, 0, 0, 0, 0, 5, 11, 20, 24, 172, 192, 2, + 27, 32, 47, 47, 115, 36, 250, 245, 160, 96, 9, 0, 0, 1, 2, 3, + 3, 4, 4, 4, 4, 8, 22, 27, 63, 63, 63, 61, 59, 40, 18, 11, + 1, 0, 6, 105, 169, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 140, 6, + 4, 2, 1, 0, 0, 3, 7, 14, 17, 17, 17, 17, 16, 7, 2, 0, + 6, 49, 134, 18, 22, 32, 47, 47, 69, 255, 143, 50, 0, 1, 2, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 15, 71, 97, 104, 104, 104, 104, 104, + 104, 104, 104, 94, 63, 26, 1, 1, 0, 48, 209, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 244, 156, 3, 2, 0, 0, 0, 4, 20, 22, 24, 24, 24, 24, 24, 24, + 24, 24, 22, 15, 5, 0, 5, 2, 21, 50, 47, 47, 38, 55, 0, 1, + 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 20, 89, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 101, 71, 29, 3, 0, 9, 28, + 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 224, 77, 3, 1, 1, 9, 16, 17, 20, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 8, 1, 0, 0, 32, 44, 29, + 4, 0, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 83, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 97, + 51, 8, 21, 92, 2, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 235, 80, 3, 0, 1, 17, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 14, 4, 4, 3, + 1, 0, 4, 1, 16, 16, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 70, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 73, 18, 75, 70, 10, 201, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 50, 1, 0, 7, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 21, 19, 15, 10, 10, + 4, 4, 4, 4, 4, 2, 3, 31, 42, 8, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 26, 99, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 88, 28, 34, 1, 0, 147, + 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 68, 1, 1, + 14, 22, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 18, 10, 5, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 8, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 60, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 94, + 45, 4, 1, 0, 61, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 98, 1, 0, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 19, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 60, 104, 104, + 104, 104, 104, 104, 90, 83, 63, 68, 85, 94, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 64, 4, 29, 8, 106, 246, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 174, 8, 0, 12, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 60, 104, 104, 104, 104, 104, 64, 11, 4, 4, 5, 9, 18, 47, 94, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 45, 4, 2, 0, 145, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 59, 0, 9, 23, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 22, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 36, 101, 104, 104, 104, 96, 17, 4, 4, 4, 4, + 4, 4, 4, 13, 41, 98, 104, 104, 104, 104, 104, 104, 104, 104, 103, 33, + 4, 1, 0, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 14, 1, 21, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 17, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 52, 104, 104, 101, 31, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 5, 20, 88, 104, 104, 104, 104, 104, + 104, 104, 104, 97, 22, 4, 1, 40, 234, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 0, + 9, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 17, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 10, + 10, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, 56, + 102, 104, 104, 104, 104, 104, 104, 104, 91, 14, 3, 0, 63, 246, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 100, 0, 18, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 22, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 56, 104, 104, 104, 104, 104, 104, 104, 104, 81, 8, 3, + 0, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 213, 22, 5, 23, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 7, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 5, 40, 102, 104, 104, 104, 104, 104, + 104, 104, 36, 4, 2, 13, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 233, 49, 3, 13, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 13, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 51, 104, + 104, 104, 104, 104, 104, 104, 81, 9, 3, 0, 116, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 23, 0, 21, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 5, 52, 104, 104, 104, 104, 104, 104, 104, 69, 4, 2, 12, 215, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 174, 16, 1, 22, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 6, 78, 104, 104, 104, 104, 104, 104, 100, + 19, 3, 0, 61, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 174, 13, 6, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 15, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12, 91, 104, 104, + 104, 104, 104, 104, 28, 4, 1, 0, 137, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 174, 8, 11, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 22, 6, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 52, 104, 104, 104, 104, 104, 104, 27, 4, 4, 0, 56, 251, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 8, 14, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 15, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 25, 103, 104, 104, 104, 104, 104, 27, 4, 4, 2, + 0, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 3, 14, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 22, 6, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 98, 104, 104, 104, 104, 104, + 27, 4, 4, 3, 0, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 0, 20, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 16, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 68, 104, + 104, 104, 104, 104, 27, 4, 4, 4, 1, 17, 233, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 23, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, + 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 65, 104, 104, 104, 104, 102, 25, 4, 4, 4, 2, 0, 180, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 23, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 19, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 13, 90, 104, 104, 104, 59, 4, 4, 4, 4, + 3, 0, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 0, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 23, 11, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 22, 57, 57, 50, 6, + 4, 4, 4, 4, 4, 1, 59, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 0, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 9, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 36, 245, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 23, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 22, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 0, 178, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 0, 23, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 18, 6, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, + 8, 8, 0, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 174, 0, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 22, 7, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 6, 22, 24, 24, 6, 127, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 174, 0, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 21, 10, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 21, 24, 24, 24, 11, 81, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 174, 0, 16, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 21, 13, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, 24, 24, 24, 24, 11, 47, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 7, 14, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 16, 8, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12, 24, 24, + 24, 24, 11, 47, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 174, 8, 14, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 19, 12, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 18, 24, 24, 24, 24, 11, 47, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 174, 8, 14, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 19, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 5, 23, 24, 24, 24, 24, 11, 118, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 174, 10, 6, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 15, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 14, 24, 24, 24, 24, 24, 11, 127, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174, 16, 6, 23, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 18, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 23, 24, 24, 24, + 24, 24, 11, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 192, 18, 0, 22, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 18, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 14, + 24, 24, 24, 24, 24, 24, 11, 127, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 24, 0, 18, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 20, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 9, 23, 24, 24, 24, 24, 24, 24, 7, 127, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 5, 9, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 6, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 21, 24, 24, 24, 24, 24, 24, 22, 2, 179, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 18, 5, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 15, 24, 24, 24, 24, 24, 24, + 24, 18, 17, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 37, 0, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 19, 5, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 16, 23, 24, 24, + 24, 24, 24, 24, 24, 10, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 138, 1, 15, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 19, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 16, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 10, 82, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 65, 8, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 16, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 10, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 2, 137, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 167, + 1, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 14, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 5, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 22, 1, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 247, 24, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 17, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 19, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 13, 5, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 85, 6, 23, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 21, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 16, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 9, 83, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 0, 13, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 23, 18, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 15, + 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 20, 1, 148, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 91, 4, 19, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 21, 14, 5, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 13, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 11, + 16, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 212, 52, 2, 21, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 19, 11, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 6, 13, 20, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 20, 1, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 32, 11, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 23, 19, 12, 6, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 7, 15, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 11, 44, 248, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, + 0, 9, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 22, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 7, 144, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 156, 0, 18, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 22, 0, 176, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 251, 81, 2, 14, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 8, 26, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 92, 1, + 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 18, 1, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 31, 1, 17, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 20, 4, 68, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 203, 12, 0, 16, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 22, 40, 47, 203, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 7, 1, 17, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 7, 6, + 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 101, 1, 0, 8, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 22, 8, 0, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 167, 61, 0, 0, 16, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 23, 6, 8, 149, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 118, 25, 0, 5, + 11, 20, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 9, 0, 148, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 247, 171, 107, 26, 0, 6, 11, 13, 20, 20, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 13, 0, 116, 253, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 236, 162, 83, 11, 0, 0, 0, 6, + 16, 6, 6, 6, 6, 6, 6, 6, 13, 16, 16, 23, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 21, 5, 78, + 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, + 234, 234, 156, 56, 26, 55, 130, 64, 16, 0, 0, 0, 0, 3, 0, 7, + 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 22, 4, 16, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45, 1, 6, 14, 0, + 0, 26, 27, 0, 4, 19, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 21, 7, 24, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 13, + 22, 43, 11, 54, 52, 14, 46, 25, 0, 1, 16, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 23, 6, 14, 201, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 192, 0, 30, 17, 5, 206, 183, 0, 35, 47, 19, 0, 5, 20, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 6, 4, 201, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 15, 5, 18, 158, 255, 254, 71, 15, 46, + 40, 2, 3, 1, 8, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 9, 13, 191, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 188, 1, 10, 1, 45, 224, 59, 1, 0, 12, 22, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 21, 10, + 1, 7, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 138, 98, 120, 229, 255, 234, 128, 11, 0, 3, + 10, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 11, 1, 21, 117, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 254, 250, 215, 115, 16, 5, 19, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 21, 16, 3, 12, 104, 241, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 191, 38, 1, 10, 19, 24, 24, 24, + 24, 24, 22, 15, 14, 5, 1, 0, 60, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 130, 26, + 0, 1, 1, 1, 1, 1, 1, 16, 31, 78, 142, 239, 250, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 244, 172, 87, 87, 87, 180, 182, 182, 220, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; diff --git a/examples/img/parrot.ppm b/examples/img/parrot.ppm new file mode 100644 index 000000000..06db1be56 Binary files /dev/null and b/examples/img/parrot.ppm differ diff --git a/examples/img/parrot_mask.pgm b/examples/img/parrot_mask.pgm new file mode 100644 index 000000000..a2bdec25c Binary files /dev/null and b/examples/img/parrot_mask.pgm differ diff --git a/examples/img/sh0r.pgm b/examples/img/sh0r.pgm new file mode 100644 index 000000000..6e97f0488 --- /dev/null +++ b/examples/img/sh0r.pgm @@ -0,0 +1,256 @@ +P5 +# CREATOR: CImg : Original size=180x180x1x1 +180 180 +255 +¾½¿½¾¾¾¾¿¾¿¾¿¿¿¿¿¿¿¿¿¿¾¿¾¿À½¾À¾½Á½½Â¼Ã»Â¾À¾ÀÁ½ÀÀÁ½À¿ÀÀ½À¼À¼¿¾¿¿¿¿¿¿¿½¼»»ºº¹¸·····¸¹»½¾¾½¼º¹·¶¶¶¶¶···¸¸¸·¸¶·¶·¶····¸¸¹¸º¹»¹»º»¹»»»»»»½½º¼¿º»Á¹½¾¼»¿»»¿½»¼¾½¼¿¼¾½½¿½¾½¾½¾¼½¼¼½¼º¾º½»¼¼½À¼À½¿¾¿¾¿¾¿¾¿¿¿¾À¿¿¿¾¿¿À¾¼ÀÀ»¿Â¹ÃÁ¹Å¹ÅºÂ¾Á¾½ÂÁ¿»Å¿¿¿»Ã¹Ã¹Á½¾¿¿¿¿ÀÀ¿½»¸¶¶µ´´´³²²³¶¹º¼¼¾½¼º¸·¶µµ¶¶··¸¸¸¸¸·¸µ¸µ¸µ¹µ¹¶º·»·»¸»¸¼¸¼¹º»»¼»º½½¼¶Á¿´Ã»º½ÂµÁ¾¸¾¾¿»¼¿ºÀ¼¾½½¿¼¿¼¿¼¿»¾¼»»À·À¸¾»¼¿¾¿¾¾¾¿¾¿¾¿¾¿¾¿¿¿¾¿¿À¾¿½¿À¾À»Â¾¼Äº½Ã»Á¿¿¾À¾¿Â¿½¿Å¼½Â¼Ä¹ÄºÁ½¾¾¾¿¿¿ÀÀ¾»¶±³¸»¹³­§¡›™›ž¡¦¬³¸º¹¶´³³´µ¶·¸¹¹¸¸¸·¶·µ¸´¸µ¹µ¹·¹¹º¹º¹»¸¼¸»º»º»»¾¸»¿¿½¹Â¹¾¿¾¶Æ¶¿¿º¿»¾¾»ÀºÀ»Á»¿¾¼¿»¿»¿»¾¼¾¸Á·À¹¾»¿¼À½¿¾¿¾¿¿¾¿½À¾¿¾À¿¿¾À½À¾½ÂºÄºÀÀºÁ»Á¾½Â¾¿¿Á¾¿¿Ä¹Â»ķźÀ½¾¾¾¾¾¿¿¿½º¸±©¨¢¢¤¦ª¯®¨¤§«®­«ª­±°®­®°²´µ·¸¹¹¹¹¸·¶¶¶µ¶µ·¶··¸¹¹¹ºººº»¹»º»º¼»»¼»¿¸½¸Á»¿¾¹¼Ã´Å¸¿¾»¿½¼À¹Â¸Ä¸Â»¾¿»ÁºÁºÀº¾º¿¸Á·Á¸½½Á»Á½À½¿¾¿¿½À½À¾¿¾¿¾¿½À½¿À»Ä¸Ä¼½ÁÀ¹Â¾Á½¾À¿À½À½Ã¹Å½¾ÂºÆºÀ¾¾¾¾¾¾¾¾¾¾¹µ¸±©­¢–ŽŠŠŠ‹”¤©§¦§£¡¤§§§©¬¯²µ·¹¹¸¹¸·¶µµµµµ¶¶··¸¸¹¹¹¹ººº¹ºººº»º»»º½¹Â¶Å¶À½¹Â½¸Æ´Ä¹À½¼¾¿ºÂ·Å¶Å¹À½¼Á¹Â¹Áº¿¼½»¿¹Á·ÁºÀ»ÂºÁ»À½À¿¾À½À¾¿¿¿¿¿¾¿¾À¾¿ÁºÄ¹ÀÀ½»Ã¿ºÁÀ¾Á¾¾Â½ÄºÂ½Á¿½Â»À¾¾¾¾¾½½¼»»¼¹·²›‚xkc]]aipv}‰Œš¢ž™›ž¡¤¨«¯³µ¶³±³µµµ´´´µµµ¶¶··¸¸¹¹¹¹¹¹¹ººººº»»»¼»¾¸ÃµÄº¼Ã¹½Ã²Ê³Æ¸À¾½½ÀºÂ¸Ä¹Â¼¿¿¼Á»À»¿½¼¿»½¾ºÀº¾½ÂºÂºÂ»À½¿¿½À¾¿¿¿¿¿¿¿¾¿¾¿½¿À»Á½¼¿Á¼¼Ã¼½Â»ÁÀ¼Ä»Â¿¿Á½À½À¾¾¾¾¿½¼¼º¸²«¢–€_C8=96:AIS^ckt||z€†‰•£¦©¬­¯®¥¡§¯³³²²³³´µµ¶¶···¹¹¸··¹ºº¹ºººº»»»¼»¾ºÁ¸À¿¹¿Á·Ê°Ë²Æ¹¾¿½¾¿¼Á»Â¼À¾½À½À½¿½½À¹Â¹¿½½½½À»Â»Â»Á½À¾¾À½¿¿¿¿¿¿¿¿¿¿¾¿¿½¿¿¾¼Â½ºÁ¿¾½Á¼Ã¼¾Á½Á¾¾Ã¹Á¿¿¿¿¾¿¿¿º¹½½¶¥‰kN5(&*52/036;744:FY`YRT^kupzŒ ¡Ÿš~kpz€Ž¢¯®­«¬®®¯²³³°´¹¾À¶¬±¸¸··¸¹¹ºº»»¼½½¾½¿¿¼¿Á¹Æ·Ç¶Å»¾Á»Â»À¾¿¿¿¿À¾Á½Â¼Á½¾À¹Æ¶Å·Ãº¾½¾¿¾¾½Á»À¾¾À½¿¿¿¿¿¿¾¿¿¾ÁºÄ¹Â¼¿¿½ÀºÀ½¾¿½À½À½¿À¿¿¿¿¿¿¿¿¿¿¿¿¼½¼´ŽTM>720--/15789::999=HRRNKMVisz}—y\R`ry|‡ ¨«¥£¢£¤§ª§Ÿ›¥ª±««³´®¯³¶¸¸¹¹º»¼½½¾¾¿¾Á½¿Á¼Â»Ã½¿À¼ÃºÃ»Á¾À¿À¿Á¾Á½Á½À¾½Â¹Ä¸Ä¹Á½À¼¿½À¾¼Á»À¿½À¾¿¿¿¿¿¿¾¾ÁºÄ¸Ç·Ã»Á¼¾À¾½À»Á»Á¼À½À½Á½À¿¿¿¿¿¿¾½¹ÂÄWNT<2*$!"%),03689:;<<>ABA@>>BUkr€†V7--1569Diƒ™˜“Ž‘˜’ziccagy”£¢£«²µ¶µ¶¸¹»¼½¾¿¿¿¿Á¾À¿¿¿¿¿À¾Á¼Â¼Â¾Á¿ÁÀÁ¿Á¿À¿À¿ÀÀ½Á¼Á¼Á½¿¾¾¼Âº¾À½¿¿½À½¿¾¾¿¾¿¾¿¿»Ã»¿¹Åº¿¼Á¼¾½À»ÂºÂ»Á»Á»Â¼Á¾¿¿¿¿¿½¼ÀÌÇÁS"Z8%$$%&'*,0479:;;<==;:75540)1H^k`%&,.,***,?=<;::9741/.-+()1>>2#($=r˜—„z|xb`^[TONIKaw€ˆ”¢¤¤§­²¶¹¼¾ÀÀÁÁÁÁÁÁÀÀ¿¿¿¿¿¿¿¿ÀÁÁÁÁÁÁÁÁÁÁÁÁÀÀÀ¿¿¿¿¿¿¿½¿»Á»À»ÁºÀ½¿¿¼¿¿¾¾¾¿¼Â¹Ã»¿¼Â¼¼À¼¿½¼À¹Â¹Â¹Â¹ÂºÁ¼¿¿¿¿¿¿½¸´´¶c+&#*057:;=??=:6310/+)&%$#!# #((Abg[SXTJBIPPKFEFFJT[`k‘›¡¤ª°²´¸½¿ÁÁÁÁÁÁÁÁÀÀ¿¿¿¿¿¿ÀÁÁÁÂÂÂÂÂÁÁÁÁÁÁÀÀÀÀÀ¿¿¿¿¾»ÀºÂºÂ¸Ãº¿½½¿¾½¿¼ÁºÂ¹Ã¹Â»Â»¿ÀºÁ»¾¾»À»À»¿»À»À¼¿¾¾¿¿¿¾¼¸·­|,!(/577777641-)&#! $'$$7>;8<97AFO`wŒœ¬­²º½ÂÃÄÃÂÁÁÁÁÀÀ¿¿¿¿¿ÀÁÁÂÂÂÃÃÂÂÂÂÂÁÁÁÁÁÀ¿¿¿¿¾»¿¹Á¸Â¸Áº¿¼¾½¿¼¿»À»¿¼¿½¾½¾½½¾½¾½½½½½¼½¼½½½½½½½½¾¾¾¾½¿¾«(#*-,)&$$$#!!%((%" "&&'(*-.0//./0379:;;:9756>Nk¬±²»ºÀÄÅÄÂÁÀÁÁÀÀÁÂÂÁ¿¿¿¿¾ÀÂÃÂÀÀÁÀ¿¾¿À¿¾½½¿Áü½»¾»¾»¾¼¾½½½½½½½½½½½½½½½½¾¾¾½½½½½½¼¼¼¼¼½¼¼½½½½½¾¾½¹¸»•J '*($ $(++($"!!"#$%&&&'(),.134554226==42x—¯Æ¿¾¿ÁÄÃÂÂÃÄÃÁÀÂÃÀ¿ÄÆÅÄÄÅþ¹¹¼¾¾½¾¿¿½¼ÀÃÅƼ¼¼¼¼¼¼¼¼¼½¼½½½½½½½½½½½½½¾¾¾¾½½½½½¼¼¼¼¼»¼¼¼¼¼¼¼¾¾¾»¹¿¾&"&$ #'+--)$!$&),0368::8669<91>[Œ¾ÄÆÇÉÆ¿¿ÁÁ¿½ºº»µµ½¿À»¹º¾ÀÂÆÊľ»º»»¹·¸¸¹¹¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼½½½½½½½½½½¾½½½½½¼¼»»¼»»»»¼¼¼¼½½¿¾½½²’W"!!!&*./-(! $'+/25789:;<=;78@gŸ·º¸¹ÃÁ¾¿À¾½¿ÈÇÈ¿¼ÃÀ¾½¿À¾¾Á¾¹···µ¶ÆÉÈÆ»»»»»»»»»»»»»»»»»»»»»»¼½½½½½½¼¼¼¼¼»»»¼»»»»¼¼¼¼¼¼¾½¼­~K,#&%"#)-00-%!$(+.02357:;9441K{¢²º¹§š››—”•Š„†}z}uskedffb^]WPKHHGD@;986»»»»º»»»»»ººººººº»»ºº»»»»¼½¾½¼º¼¼»º»¼¼»ºººº»¼»¸µº»¯„I' $/:?:1)" %+/0.)  #&(*,.146752.6?@2310+)-,''+'!&"#& #"$),*)+1.+*++)(7:::»»»º¹¹¹ºº¹¹¹º¹¸¸¹»¹¸¸º½½»»¾À¾»º»»¸¶¸»»ºº¹¸·¸¸·µ¶Å³ŠQ%#-7>>80)#"(,..* +  !"$'*.1332052* "$%!#)' $$(/-0-)((&!!%*)(+010,'(*+¹ºº¸µµµ····¹¹¸µµ¹»¹¶¶¹½½¶¶º½»µ´·¹µ³¶º¹¹º¸¸·´²±³¸½‰K"$)*)'%#!#(++' + + + + "&+/00.-($*%#'$(38044IDGP[cjs€‘› ¡£¬³··¸ÃÂõ´´»À¸¶´²¶±®ª¶¿¨O.   + +   +   + #'))&@qŒœ§¹¿ÁÁÁÂÂÁÁÁÂÃÃÄÅÅÅÄÄÄÄÆÇÈÈÉÊÊËËËËË˸··¸´°²¶ÃÁ¿¿½º¸¹¹½¾º¸½Âø¶¾¾¿¸º»»¼µ²±°¯ª«¯±®{(   + +  +   +   #''",Nwž¤´¼¿ÀÀÀÀÀÀÀÀÂÂÂÃÃÃÄÄÄÄÅÆÆÇÈÈÉÉÉÊÊÊÊ®¶¸³³¹»¹º´±³¸¸¶·½ÁÁ»¸º¿Á¾¼½¼ºµµ¸ºº¶´³²®©«±¨ŸV  + +  + + + + + + + +   +  #&"&4`œ£±¹½¿¾¾¾¿¿¿¿ÀÀÀÁÁÂÂÂÃÃÄÄÅÆÆÇÇÈÈÈÉÉɲµ³²±°´·¹·¶·º¼¼½¿ÃÁ¾»»¼»ºº»¼º·¶¸¸¸¶µµ´³±®ª—‡; +  +  + + + + + + +   !!(A‰¢­¶¹½½½½½½¾¾¾¿¿ÀÀÀÀÁÂÂÃÃÄÄÅÅÆÆÆÇÇÇǸ¸¸·¶¶¸ºº¹¸¹º¼¼¼¾À¿½»»»»ºº»»º¹¸··¶´´´´´±¬£’\( + + +  + +  +  /d“¤²³¹ºº»»¼¼¼½½¾¾¾¿ÀÀÀÀÂÂÃÃÃÄÄÄÅÅÅÅŸ¸····¸ºººººº»¼¼½½½½¼»»»ºººº¹¸¸¶¶´´³³´µ°±¬’5 + +  +  + +  + "C€›°°·¸¸¹¹ºº»¼¼¼½½¾¾À¾ÀÀÁÀÂÂÃÃÃÃÄÄÄÅ·····¸¸¹ºººº»»¼¼¼½½¼¼¼»ºººº¹¸¸·¶´´³³³´´¯²µ|  +   +  + (Z¡­´µ¶·¸¹¹ºº»»»½¼¿¼À½À¾ÀÀÁÁÁÁÂÂÂÃø¸¸¸¸¸¹¹ºººº»»»¼¼¼¼¼¼»ºººº¸¸¸·¶µ´³³³³µ³ª¥£D  + +   + +  ">h‹¯®±³···¸¸¹ºº»º½º¿º¿»À½À¿ÀÀÁÁÁÁÁÁ¸¸¸¸¹¹¹ºººº»»»»»»»¼»»ººº¹¹¸¸·¶¶´³³²³´µ³¨˜}  + +  !"! !!"!   ?_›Ÿ§­µ·¶··¸¹¹ººº¼º¿¹¿»¿¼¿¾¿¾¿ÀÀÀÀ¹¹¹¹¹º¹ºººº»»»»»»»»»ºººº¸¹¸··¶µ´³²±²µµ²¥K  +  +"$#""#%()$ !(-,("  +  + + +G‡œ¦ª³¶µ¶¶·¸¸¹¹ºº¼¹¾¹¿º¿»¾½½½¾¾¾¿¹¹º¹ººººººº»º¼º¼º»¼¹¼¹º¹¹·¸¸¶¶µ´²¯­±µ°®žp!   &'%#$&*/2*! !!"!!! ! !!""###$'/9>?<6-"  +  +   !5j•¨©³·´µµ·¸¸¹¹¹¹¹»¹½¸¾º½»¼¼¼½½½½¹º¹»º¹»º¼º»»¼º¼º¼ºº¼¸º¹¹¸¹···µµ³±ª©°´©±’;$ + !*($$&).49/$ "###"""""""""##$$%%&&'()*,19AGKMLI@4(       '?lœ«µºµ´µ·¹¹¸¸¸¹¹¹»¸½¹½º»»»»»»¼½ººººº»º»º»º»º¼¹¼º»»¹»¹º¹¹¸¸·¶µ´³¯¤£ž˜™‰L/) +  %+'%%(,16:0' #$%%%$$"#"""#$$%&'()*,,.04:@GMQSUURLC90& +  %%#Fzª¶¾¶¶¹»º¸·¸¸¹¹º¹»¸¼¹»ººº¹¹»¼¼ºº»º»º»ºº¼»»»º¼º»ºº»¸º¹¹¸¹··¶¶´³°¡’|vt[(,'   + +&+'%&).267/' #&'''&%$$####$%%'()*,.147CHMQVZ\^__^\WPJF?5)!   #+*0µ¶²ª¤ª¸½®¬²·¹¹¹¹¹¹¹¹¹º¼½½½¿¼¼¹¼¹¼»»»¹½º»»»»º»ºº»¹º¹¹¸¹··¶µ´´¶¨{ŽH'61$   &)'&)-1562%! $+/+))'&%$##$$')+-.049?DHMRX\`cddedca[UPLH>/& +    + )"tª§ ¢•yu…Ÿ´ºº¹¹¹¹¹¹¹¹¹¼¶®ª¾¼º»º»»»»»»º»»»ºº»ºº»¹º¹º¸¸¸··¶µ´´µ°~ªo NK0!    $(&'*/3995 "(34+))''%$##$&)-/138@HNQTX]bfijjjihge`[VSOE4)!    + + ' ZŽ‡bU3FFo™°»¼º¹¹¹¹¹¹¹¹¹·¥‹}³»»º¹½¹¼º»»»»»º¼ºººººº¹¹¹º¸¸¸·¶µ´´µ³‡+&fH) "&&(,16??=#-?:(()('%$##%(+048EGJ1! -GOL'((&').3:BJOTY]`cfiklqy~€‚ƒƒ‚€‚‚nkoaTI>70( + +  )+),8D8BDwž¦´»¼º¹¹¹¹¹¹º½À¿µWLÀ»¼¹¾µÁ´À¶¿ºº¾¶¾ºº»ºº¹º¹¹¸¹¸¸·¶´³¶³x1(920'#")08?CGG3! (@JNK-,+(&(,4BFC2('?[VQK8540,)+1:BIPV\_cgjnszƒ‰ŒŠˆ‹•lvoROOG=5.%  $&$',4(z·¸¸º»º¹¹¹¹¹¹º¼¿¿º‘i¸Âºº½·ÀµÂ´¿¹¼»º»»º»ºº»¸ºº¹¸¸¸¸¸···ÀF8H<2-*#&.6=@C=4;72017>FNUZ_dgkq{„‹’•—˜–“Š•œnvjMQTL@71) +  !2=¬Ã¶·ººº¹¹¹¸¹º»¼¾¿½³ºÄº¼º»º¼¸¾ººº¼º»º»ººº¹»º¹¹¹¹¸¹¹º¹¹®?MD543.#$-5<>?=E^isnc]WOKGEB>:5227ANX^bcjw„‘•™›ž˜‹‘˜speNTXNB:5-#  +  G<¿¶¶¶¹º¹¹¹·»¹º»¼¾¾½¾§»Â¾´À¸½¹¼¼¹¼¼º»»º»º»»º¹ºº¹¹¹¹º»¼º»˜.QC69;0"$,6<@BK]ptqida^YTPNLJHC=505AKPWbv†’—™œŸ¢£¤¢”Œ‘—šzibQWYO@<92( + +  +]?̼¸´¸¹¹¹¹º·»º»¼½½»¼µ¼Àº¾·¿¶¾¼¸½»º»»ººº»ºººººº¹¹¹º¼¼¼¶µ|>R79?@. ! "%-7@FP_ioomkigda^[ZXXWVWTOMRW^k|“œ ¡¡£¥§§¨¦¢˜Ž–—h`VYYL>=<6.%  +   8WBŹµ³¶¹¹¹¹·¼·»º»¼½»»º¼¾º½¸»¼ºº¼»º»»»ºººº»ºººº¹¹¹º»½»»¥Ÿ‹>K3>D=&&)(&%)0:DM[hmqrppomjhfdb```accejs}„‹”¢¦¦¨©ª«¬¬ª§‘•–‡naZ\WF:@>:3+" +  "3RD¯¹´³¶¸¹¹¹º·¼¸¼»¼¼»»»¼½¼¸½º»¼¹¼»»»¼»º¹ºº»»º»¹º¹¹º»½¹¸”Š„?D5>@1 #031/.07AKVclpstutsrpomljihjmrvy~…Œ‘•›¢§ª«¬®®¯°¯®«£—“––wd^^U>7DB=81)   -IA­¹²³¶¸¹¹¹¸º¸¼¹¼»»»»»¼¼»º½¹»»¼»»»»»½½º¹º»»»º»¹¹¹¹¼½¸´Ž‚|D=696#  -9:888;AKU^gmrvwxxwwutsrqpqtx}‚†Š•™£§«­¯°±±²³²²®§œ—˜˜‘~ia`S68JFB>80%  +  )?>µ¹±³¶¸¹¸¸¹¹»¸½º»»»»»»¼º¾·¾º»»¼»»º¹¹½¾º»¼»»»ºº¹¹º¼¼·¬‘†zE920) + + (7@@@CHMSZaglquy{|||zzyxxxxz}‚†Š‘˜¡¥¨«®°±³³´µµµ´±« ››š”‚nfaR3>PLHGA6+   (:@½º±³·¸¸¸¸¸¹º»¹»½»»»»»»¼¸¿¹»»¼¼»»º¹±¤»»¼¼¼¼ºº¹¹¹¹¼»·’‰w<6+*  + + !'4BHJLS\dinqsvx|~€€€~~~~ƒ†ŠŽ‘”™Ÿ¤§©«®°²³µ¶¶¶··¶³®¤žž—ˆukcQ6JYUMPN@1  +  %9B¿»³µ¸¸¸¸¸¸¹ºº»»¹»½º»»»º¾¸»¼»»¼¼»»»¸x­»½¾¼¼»º¹¹¸¹¼º²„‡„s/3&# + + + $)5CNSWZajrx{}~ƒ„………„„ƒ„„„†ˆŠ“–™ž£§©ª¬¯²´¶¶··¸¸¸¸¶°¨£¡ ›tiR9WebRVXK8# +  6@»»´¶¹¹¸¸·¹¹»»»»»¼¹¼»»»¼¸½»º»»¼¼¼¼ºº|£¸½¾¼¼»º¹¸··»¹¥hu~w'/! +   ).5GRZ^afmt{„†‡‡ˆˆŠ‰‰‰‰‰‰Š‹‹Ž“•˜š¡¥©ª«®±´¶¶·¸¹¹¹¹¹·³«¦¤£ž”ˆt[=`opXZ_UB( + 4=µ¾µ·¹¹¹¸¸¹¹¼»»»»º½ºº½º¹¾¹º¼»»»¼¼¼»¹¢¦´¼½¼»º¹¸·¶µº¸˜Vl~&) + -8>K[`dhkqy…ŠŽŽŽŽŽ‘’“•–˜šœž £§ª«¬¯²µ·¸¸º¸»¹º¹¸´®ª¨¦ –‡€mB_tz]\d[K,  + 2;´Áµ·¹¸¹¹ºº·¾»º»»»º»¼¹¼½¸»¼º»º»»»»¼¼¸³µº¼¼»º¹¸·µ´¹´™Vo{}(& +  1HT\hjhkrx…Š’”””••••••–•––––—˜™šœžŸ¡£¦¨«¬®±´¶¸¸º·½¸ºº¹¸µ±­«©£˜‘Œˆ€QX{…b[icV0  .2º½¶·¸¸»»µ«¯Á»º»»»»»º¼º¹º¼¹»»ºººººº»»¹¸¹»»ºº¹¸·µ³¸²Ÿsqov)% + Ngpopoqv}ƒ‰Ž“–˜™šš›››››œœœœ››››œžŸ¡¢¤¦¨ª¬­¯²µ¶¸º·½·¼¹º¹·µ²¯­¬¦œ•‘‹‡hGvŽuXjj_6 + + !6<¼½´¸¸·¼¸”iªÂ¹¹»»»»»»º»¹¼¹º»¹»ººººººº¹¹ºººº¹¹¸·µ´¸°¥”zqq*# +  &f~~wvx|‚‡Œ‘•™œžŸŸ  ¡¡¡¡¡¡  ŸžžžŸ¡¢£¥§¨ª¬­¯±³µ·¹¸¼·¼¹»¹¹·µ³°¯­©Ÿš–Š€O`ƒaipi>$ + %;D¶¼³¸··¼»RªÂ¹¹»¼»»º»»ºº¸ºº¹»¹ºº¹¹¹¹¹¹¹¹ºº¹¹¹¸¸¶´¸°¨žyqn," + 6s‡‚|~ƒ‡Œ’—›ž ¡¢££¤¥¥¥¥¥¥¥¤£¢   ¡¢£¥§¨ª«­®¯±´¶·¸¹¹»ººº¹¸¶µ³±¯®©£ž›•‹qV`€rlurH-   + + &;L¯½±¶¶·½·ˆV°Ã¸¹»»»º»¹»º¹ºº¹»¸º¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¶´º°¬wpp4$ +  Gz…ƒ†‹‘”˜œ ¢£¤¥¥¦§§¨¨§¦§§§¥£¢¡¡¢£¥§¨ª«¬­®°²´µ·¸¹ººººº¹·¶´²±¯­ª¥¡Ÿ›’‡qYutputQ8    + '?W¨¼³´µ·º¯“‡¼Ä¸¸»»º¹¹º¹º¹¸¹¹¸¹¹¹¹¹¹¸¹¸¹¹¹¹¹¹¹¸¹º¬³º³° |sr?+ + U†ˆ“•˜œ¡¤¥¥¥¥¥¥¦§©¨§¥¤¤¤¤£¡  ¡¤¦¨©ª¬­®¯°²´µ¶¸¹ºººº¹¸·µ´²°®¬©¥¢¢Ÿ™’‘‹zqikooTB'   +  ,C\—±µ³´··¯¯¾ÂÁ¸¹º»º¹¹¹¹º¸º·¹¸¸¹¹¸¸¸¸¸º¸¹¹¹¹¹¹·¹¶Œ±º¸®Ÿ‚xsK5 + + !^„”‡‹“–˜œ ¤¦¤¡ ¡¡¡¡¤§¨¥¡ žœ›œžŸ ¢¥©ª«¬­®¯°²³µ¶·¸¹¹¹¸··µ´²°®­¬©¦£¢¡˜•˜’‰kfifUG0   !,BZ…£µ³µ··³µ»½¼¸¹ºº¹¸··¹º¸·¹·¹¸¸¸¸¹·¹¸¸º¹¹¹º¹¹·¼¤P¤´»§—‰‚tZ=  +)e‹˜ˆ“–˜šž¢¤¢›•–˜ššš¡¨¨¥¡ž›™•‘”—˜šž¤¨ª«¬­®¯°±³´µ¶·¸¸·¶´²±¯®«ª««ª¥££¢Ÿš—™œœˆqpgWM:$  +  )?X}›´····µ·¹»º¹¹ºº¹µ³·¹º·¹·¹·¸¸¸¹¸¹¸¹¹¸¹¹º»ºº·Áo`¥¶¼¦ŽwoE& +  ;d™ˆ”—š ¡ž“‡„††…„††xpmiiimrzƒ‰ŒŽ“¦ª««­­®¯±²³´µ¶¶µ³±®¬«¨¤ ££¢£ž™——™œ–‡€ueWG1 + &=UsŽ©¸º¸¸¶·¸¹¹¹¹ºº¸³°¶¹º¸·¸·¸¸·¸¹·¹¸¸¹¹¹º»»ºµ¶µXŠ°¹½ª‹‹™wX3 +  +>cŽ˜‰‘–™œžž˜Œ~sqqojggcRJE@==AIVjx‚„‘ §©ª¬­®®¯°²²²²°­©¤ŸžŸ›™•’•šššœ›—Ž’•”Ž‰~n_P='  + "3Q`o¡µ»¹¸··¸¹¹¹º»»¶®¬µ¹»···¸·¸·¹µ»¶¹¹¹¹¹º¼¼¸´½‰g®²¸¾±‚–‰{lI% +  ?h–Œ‘–™››”…uib_\VMGDB>962126;CUgtvt„—¢¦©«¬­®®¯¯¯¯¬©¢š„{tnhaZW_mvy…}z~ƒˆ‹‹ŒƒufZJ6 $COEŸµ¼º¹¸¸¸¹¹º»¼»´¨©¶º»··¸·¸·¹´¼´º¸¸¹¹º»½¼·¿¶V™º¯¹¾¹›Œ|s^8  >n“•—•Œ~nc]ZYVPIB>:5/+)()-4>IXcidzŽ›¢¥©«¬¬­¬¬«ª¦¡™uneYOHBB=;>ACM\hov|€„ˆ†{maUB) "1M+¡¶¼¼»¹¹¹¹º»¼¼º°¢§¸»¼¸···¸¸¶»´»·¸¹¹º»¼½¼¹¿~Z»·°º½¾«‹Š~smQ0 9753211247?CPmy|xqmhR1 +  + )5#{µ¹º½½¼¼»»»»»¹·®¤©¸½¾¸¸¸¸¸¸¸¸¸¸¸¸¹¹º¹¹ÀÄŸL¡·¹³·¹»»¸´­Ÿ„‰“h@% +4~Ž…ŒŠŒ…yokjijklnqv}ƒ‚rdUF90-/4:AGR[nxˆ—Ÿ§¬®¬©§£œ‚vh[LB:3.,)%##$'+059<>@AA@DXjvwsqn]@ + +  +%-+´¾¾½¾¾¼¼»¼»º¹·´®§¬¹½¿¸¸¸¸¸¸¸¸¸·¸¸¹¹º¹¹ÁÆtwµµ·µ¸¹ºº¹¶°‹˜œtA/!  +0}‰ƒ‰‰‹~pkiklnmnpnikmoq|zqaJ1)*/6>ISjy‡— ©®°®«©¤Ž{naRE;510.,)),-15:>>>@ADECBM[ltttqcL    +"5#TÉÄÁ¿¿¾½¼¼»¹¸¶´°¬ª°º½¾¸¸¹¸¸¸¸¸¸¸¸¸¹¹º¸¸»¦i£´½¸·¹º»»¹·²ž““Ÿ¢‰N2,(  !r…†ˆ‰qhilopokffaUMBAPWTT[\M<2//3?H[|‡™¡¬±´±­¬¦‹tgYH=40/* &,--/48:;?ADFFELXepturdS& +  + &! ªÖÁ¾¿¾¾½¼»¹·´²¯­¬¬³º½¿¹¹¸¹·º·¸··¸¸¹¹º¹º¹·»¾¹¹º»»»º¹·©ž™¥©œšd21D9 + h†~„†~W]ovtpjbVM<8Sr‹œš‹oWONIB=73:BLt†œ¤®µ¸¶²°§ˆm]M=3*&%$15==832215;@DGIHMXcmsvsfV)   „Çƺ»½¾½¼»¹¶³°®­­®°¶¼½¾¸¹¹¸º¶¹·¸··¸¸¹»½¿²·¸»»¹º»»»»»º¹²¨Ÿ©­ w.-YZ5 Qw‚rG{‘rlbT<7GjŽ’‹ˆyfUQNMKJHE>;?Edƒ ¦±º½»¶µ¨™ƒdO>1')=MUboqneWM?69?DHJKOZakruujV-   + '#j”Á¼¹»½½½»º¸µ±¯®®°²µ¹¼½¾¹¹¹¹·¹·¸¶¶¶¶·¹»½ºŸ²¼·¹º»»»»»»»ºº¶®¦¬­¨˜w+'ZoP4pt{kQ6ƒ‘~mh_C5Pv€hB0(")AJHJKLKC?EW~£¨²½ÁÀ»»§’|X>1+*,;Yuƒxd__ailhcXG@BGJMNSZ`jsuxqV- +  f„Ÿ»Àº»¼¼¼»º¸·¶¶µ¶·¸¹¼½¾¾¹¹¹¸¹·¸¶¶¶µµ¶¹¹¹©‘¸·¶º»¼¼¼¼»»»º¹¶°©­¬©a-'Hi^7#+&NfmV`4†‹zmfU;HkdB.%%0P?" QUFMORTODLNv¦­µÀÅÃÀÀ§ŽpJ3.,1>Zpn^RH?<>IWcniQA=DLOQV\]jtuywX+  + Q¬±¸Å¿»º»¼»»º¹¹¹ºººº»¼½½½¾ºº¹¹¸¹··¶µ´³µ¹·®’•¸µ¸»¼½¼¼»»»»»º·¯§­°¡L4/5O[Q:,!97*8DVT6Œ„zmdWCNTC?N@&() nmGKSY\]RSTl§µ¾ÊÍËÇÀ®e>457K[e^NJL:##"!+?TZWI:GPTcnb_k|wxg- &6Ư¯³À¿½¼¼¼¼¼»»»»¼»¼¼½½½¾½¿¾º»º»¹¹¸·µ³±°¸º¤¥½¹´´·º¼¼»¸····¶µ²ª¬±žzb]gqwngc`Qyƒ…‹;…bg˜Š…ƒ€}xsqrv~‡†pdfmxˆŒ‡€‚…Œ……:945GUUZ[TNRA7Dk{bSU`s€2'!";kN25!y“«¶ÃÉÌÎÉ¿¹«˜~;Usœ••—›š–Œ‹ˆ…ƒ…”–—›¡¢¢ž›š–}ƒ]q…‚o;!7=FNN@)Votd\YVZhpt{‡Š‘“•–—˜˜šš›œžžŸŸžž ©­««°¶¾ÄÇÉÊÉÆ¿¹²ª¢Ÿ £Ÿ€Œ‘••“‘‘’’“”•”‘ŽŒ‹Šˆ}~~|zvspljfo|…‹…‘ŽN”˜°¼¾½¼»»»º¼¹»ºººº¹º¹¹¹¸¸··¹´’}¿½¾½½¼º¸¶µ´µ¶¶·····¸¸·º¸º¹¹ºººº»¼º¸·¸ºº¹±º’mQEay‚€pkmqrw~„ˆ‹Ž“•–—˜™šœžŸ ¡¡¡¢¡ Ÿ£«¬¨©¯µº¿ÂÅÆÆþ¸±¨Ÿš™Ÿ •Ž•˜—”’‘‘‘’’““‘ŽŒŒŠ‡~}|zwtqnkjbv…Œ’ˆ“‹V +0„“¡°»½½¼»»º¼¹¼¹»º»ºº¹¹º¹¹¸··¹»®¤½¿¾¾½»º·µ´µ¶·¸·······¸·¹¹¹º¹¹ºº»¾½¸·º½¼¹´³¢‹]17D[ntzutprz†Š’•–—™š›žŸ ¢¢¤¤££¡Ÿ¡¥¤œœ©°¶º»¼¾À¾º´¬¡—”š•››š–”“’’’’’’ŽŒ‹‰†~|{yuqnljj]{ˆŽ’‰–% n¢š¡°º½½¼»»¼¹½¹¼¸¼¹»¹º¹¹¹¹¸¸¸¹¹±§¿¾¿¾¾½¿¾º¶µ·¸¸¸·¶¶¶¶···¸¹ºººº¹¹¸»Â¹°·À¿»´°§}c)+  9Myyqqv~„ˆ‹’”–˜š›ž ¡¢¤¥¥¦¦¦¢œ›ˆ˜£ª°°°³µ´°¬¢•„y|…‹Œ‘Ÿžœ™—•”““’’‘ŽŒŠˆ„|ywsolkieWr{{Œƒ] `˜°©«³¹¼¼¼»½¹¾¹½¸¾¸¼¸¼¸»¸º¸¹¸¸¸¸´¯¿¿¿¿¾¾À¶±¬¬²¶¶¶µµµ´´µ¶·¸¹¹ººº¹¹¶­«¬ÈËÁ½·±·«|[;4 &itst{‚†Š‘”–˜šœž ¡£¤¥¦§§¨¨¢—Ž…~m^j“¤¥¤§¨¦¢œŽy`V`nwy¡ ›™—–•““’‘ŽŒ‰‡ƒ~{xupljjg^T`pzŒS(<™­³¬­³¹»¼¼¼¹¾¸½º¼¸½¸¼¶½¶½µ»¸¸¸¸·³°À¿À¿¾»µ”‡€ˆ™¦ª®±²²²²´µ·¸¹¹ººººº¹´•s‡©´¼²°·ª„^B;(@vqtry„ˆŒ“–˜›ž ¢¤¥¦§¨¨©© ”‰wkXIM[r’’•”ŽŒ…lN:7CUcssŽŸ Ÿ›™—–•“’‘‹‰†‚~zvrmigjg__q|uml2"g\£©®¨­´¹»¼¼»¾¸¾ºº»»¹¼¸¾´À³¾µº¸¸¸¶±®ÀÁÁÁ½¹¯‚fal‚–¡©­¯°°±²´¶·¹ºº»»»º¹¶²-G+btsqv}‚†‹“–™›Ÿ¡£¤¦§¨ªªª©Ÿ‘‡fO8.+/GeqtxupqhF+#%0DWmqŒ¡ ž›™—•”’‘‹ˆ…‚}ytpkeflncfliQ8!,V™›q ¤ª¨®´¹»¼¼¼¹¾º»¼¹¼º¹¼¶À²Á²½·¸¸¸¶¯ªÁÁÁÁ½»·ŽNQaw‹œ¦¬®®®¯°²´·¹º»¼¼º»¹½»¦FCTW^ž¬¹’`KO6O$Fupty„‰Ž“—™œž ¢£¥¦¨©ª««© ’ŽiI:2-)1ESX\ZYXM0"!%.ATkuŽœ¢¢ žœ™˜•”’‘ŒŠ‡„€|wrmhcgrpOG>&3†ªÀ˜‡§¦¨ª°µ¹»»¼»½»»¼º»»»º¹½´À²¿¶º¸¸·µ­§ÁÁ½¼¿ž@OewŠœ¦¬®®®®¯±´¶¹º»¼¼º»´®½²{FHKBZŠµŸXfq&2(€ursw}‚‡’–šœž ¢¤¦§©ª««¬«¤•–wSA9632;CGGGGE>1.129I[o|’££¡Ÿœ›˜–”’ŽŒ‰†ƒztojfckud'"_¡¦–ž«¨©¬±¶¹»»¼»¼»¼»º½¸¼º»¸½´¿´»¸¸¸·µ¬¥ÁÂÂý»À HZr€‘¢¨«­­­­®±´¶¸º»¼½º¼´¾³–bZJ7&8Žmb…(#zuwvw{…Œ‘–šœŸ ¢¤¥§©ª«­®­¨žŒlWKJHA===;;;;;EKPU\hw†£¦¤¡žš˜•”‘Š†ƒ{uokhhgr|( +r£ª¯­­ª¨ª­±¶º»»¼º¼½·Â³Ä²Á¸ººº¹º¸º¸¸¸·´¬¤ÂÂÃŽ¿Ä‘9;XnŠ¡£¨­®­­®±³¶¸¹º»»º¹¹§µ·¯•z](!*;[k‚(+ Wt|}yy|ˆŽ”˜œž ¡£¥§©ª¬­®¯¯ª¦¡–ˆ{qi^RE>988x}~{y{†’—›Ÿ¡£¤¦¨ª«¬­®®¬©¥ž”‰vk]MC=:Sotx€‘N AŽ€‰~~ƒ†Š“•—˜˜–”””•————•”‘‘‘“”—š›š•Œ‰ˆ†††…„‚ƒƒƒƒ…‡‰Š‰‡„‚{wsoljhkpurk '@3;o©v¦®«³­§¬´¹¹º¹¹ººº¹ººº»¼¼¼ºººººººº¹¸·µ°¦ ÃÃÄĺ½¾oKL^\cimw”£¥¦©®³¶···º¶º¹ººº··©y¢‰tQFD:EV]_YO #€‹~„†‰‹Ž‘‘‰ƒ€€ƒ‡‡‡ˆˆˆˆ‡†††ˆ˜›š•“Œ…|xwx{{|zvuvx~ƒ„‚€~{xtqnkiijpssj 3T/@“¸w°¯´±²¶¹¹¹¹¹¹¸¸¸¹¹¹¸¹¼¼»··¸¸¹¹ººº¹·µ°¦ ÃÃÄĹ¼¾|QObcgjkw¢¤¥¨®³¶·¸¸·»¸¹ººº··®u¥šmUQP9BJKF1i{ˆ}~€„†ˆ‰ŠŠ‡‚ynggkswwvtsqpqstu~ˆŠ„zulfeedeee_]YTTV^jw|}|zxurolkiijnprT .WN€¹°{¢³²µ´µ···¸·¸··¶µ¸½½µ³³µ¸¸º¼¹··¹»»º¸¶°§¡ÂÃÄĹ¹¹Š`Xfkkkk{¢£¤§­´··¸¸¹¸¹¹¹ºº·¶µ¥«‚moG6:H?-  Px„|}~}}~€‚ƒƒ‚yqdULGGNTX[]_`acdbahqqka\TQRQRQOJA?=;>BIVhrvwvtrpmkjiiilnm3 H’º½´uª³´¶µµµ¶····¶²¬ª®²¯¾Â¾½¾º¸¼¾¹¶·º¼º¹¶±¨¢ÃÃÄĺ¹µjcnqmkiz‘££¢¦­µ¸¸¸¸¹¸¸¹¹ºº·¶·ž§‰~t409E0  8wzy||||}}~~}ysj^PC<536;BHMOQRRNHDHMMLIMKJHEC@;4-,.169=IZgnqrqomkjihhgknk  )»´¼¹z©´¶¶µµ¶¶···µ´­¤¤§—tfmy‹Ÿ¦§¯»º·¶¼Á¼º·±©¢ÂÃÄû½µ‡jivqigfrŽ¢£¡£­¶¸¹¹¸¸¸¸¸¹º¹··µ‘”“|]13E:   +!tyyuzzzyzzzywrld\TOOMJOXadaYROOOKBA?;==?EKNOSUTWTYbkpja[\agkmmlkjihhhejkc£³Äµ¥±··µµ¶···¸·´°®¬¦ƒ[>>CIMF@P€•–£Á½¼¹±©¢ÂÃľÁ¹xdl|necdmˆ¡£ ¡­¸º¹¹¹¸¹¸¸¹¹»¹¹°‹†~u€R?GO* guwpvxwwvvutrpmlkkpy~~}|ˆˆƒ}|}zscZPEIP_nyzy}}xrnt~††}tnhefhjjjiihghfbheI  +Fª£—©­µ¸µµ¶··¸¸¸¸¸¸¥‘kM44:?DDGUm‡mwÿ¿º±©¡ÂÃÄ¿¿½_go}kaadm„Ÿ¥žŸ­¹»¹¹¹¹¹¹¹¹»¼¹¸¨ƒ|srxWYh> + Bstkrvutsrrqpppty†Ž‘’‘ŒŠ’—™Ÿ§¯µ¦™• ˜‘“™œœ—‘Œ…~}‚Š‰„xohffhhhhgggge_hj  + +Lw~Šž¥¬±°³·¹¸¶¶·¸·­…t`I2-/13=RkxaJÇÁ¿º°§¡ÂÂÄ¿¼¸Xipxg_afq‡¡¦œœ¬º»º¹¹º¹¹¸¹¼¼¹µ£ˆ~tqrcfg#  ,eniossrqponmnovˆ”——“Ž‹‘–š¡«¸Á»°±´®£Ÿ Ÿ™‘ˆ‚~|}€…‡‡†|sifffgggffffd^cZ 5TWdz‡’˜ž¯»¾»¶¸»º± {oh\T;)'-?j’•”ŠpWÁþ¹®¦ ÁÂļ»°adkmc]bexŽ£¥™š¬º¼¸··¸¸¸·º¼·«Ÿ“†|rlkhgV  +Ndfmqqpommlkknv‰Ž‘“’‹ˆ†…‡Š•˜œ™Ÿ¡žš››–Œƒ|yyz|}‚‚€|tkfeeefeeeefc^[?*C@BS`kmk{–­´¬¬¸Â¾«Š€|sYA6CHIDBIT[[_g~˜±¸½¹·¹¾¿»¶µµ¶º¼¼½¿¾¾º´­§¤ÀÀdz¹¿ pYMUWcs˜š—™¦´¬‘unjimqpnkf_^ab^Z^e^N  + + + + 8L]flkkjjhhhlt}ƒ…„‚xqkiloswyyyvw{~{||{xqib^]_aejnqsuuqkfeeedbaa_YO6  CGGDCGMNJKOXd®¦ ¢¦²ÀÁ»¼ÀÀ¿»¹¹¸¹¸³­§¤ÀÀÅ™¯ÃªoZMZgzƒ†‹‘•—š¡¡Žqaeiggffffedca]XV\f^= + + + ->Q`hhiiihhils|ƒ„‚wlbYSRV]diihkruspic]UMHINU\bhmprssqkheeedb_`[QC# ;G=>BEEDCEJMLNUZXaoyqmq|¤¨£¤®¸¾½¾¿¾¾½¶®§£ÀÀÀ€£Å¶oWQfz…ƒ~‚ˆŽ“–‘i\`fgda_`bba_\YVV]g^- + + + +  +'2BVeefhhiiims{‚ƒƒ{qg]SJC??CCA@E@>;:9659BMW]chmprsssqmigffda^`WF1  9J@?BDEEDDEHJLQVUUY_afhmpnp{‹–Ÿ«±·»¹µ·±¬¥¢ÀÁºŠ«Á³f^`q|~xsppu|‚ƒ}rc\`egc_]\]]\ZXVVW[`O + + + +  %*/A\ddgiiiknt{‚„……zrk`XQKFB=534466=AEKQXafjmptwxwvtrnjhggea^[N1  2HB@BDDEEDEEGILPQNNSY[VNPX[]eqv€•”‹†~„‰£°¼®µ¼¦johpvsnifegjmlid_\_egea][ZYXWVVVWVT? + + +   #("&=Wchiijlpv|‚„‡‰‰‡ƒ}sjaYQLMNQSU\^]_adfimoqtx|~~|zwspljige_ZN1  +/GDABCDDDDEEEFHJLLLLMNMLOSX[_ehjkje`^_`elrz†›­»¸œtykmolgda_]]]]]\ZXY_ee`\YWWVUTUVVNI5 + + + +  "*9Tfkjjmqx}ƒ…‰ŒŽŽŽŒˆƒ|zutx{„ƒ†…„†‡…‚€€€„……ƒ€}zurmkjhcXM5  .FEBBCDDDDDEEEFGHIIHHHILQVZ\]\WSQRUZ]^`dknbgq†˜¡Ž{{mklifca^ZWUTUURPPV_c_[WVUTTTUVUJE3 +     + .# 7Wgkjmry‚„‡ŠŽ‘“•––•“”””“’—š“”——•’ŽŒŒŒŠ‡ƒ{wsnkjf^L6 + ,EFCBCDDDDDDDEEEGGHHIKNQVXZZYXWVUUWWXY\bgkaegjlx~|ynlkigda^ZURPONLJJOX]]XUTSRSTVWVMF3 +  + /& ;\ijlrz€„†‰Œ“—šŸžœ››š˜˜›š•’“••••”””“’‘Š…|xsnjg_Q7  + + 'AFDCDDDCDDCEEEFGGIJLORTVVUTSSRRQQRSTW[_dgmmljiovxvolkigea]YUQNLKHFFKSXYVTRQQRTWXYSK5 +   /) F`hlrz…ˆŠ”˜ ¢¢¡ŸŸžžœš—•”“”””•–——–•”’‹†|vqkg_O8  + +!=FFEDDDDDCECEEFGHILNQRSSRRPPPPPPPQSUXZ]`arqpooqttromkjhe`\YTQMKJHFFKQUWURQOOPTWZ[YP8 +  /+ 'H^ipx…‰ŒŽ“—œŸ¢¢¡Ÿž›™—–””“““””•–———–”’‹…yrle^P8  + 9FHGFEDDCECEDFFGIJLNPQQPPPPOOPPPQRTVXY[]^rqponopppnlljgc_[WTPMKIHFHMRUUTQOMLOTX[]^T=  +// + &F]hpx€‡ŒŽ’•™œœ™—•”“’‘‘‘‘‘‘’’““””•”’‘Žˆ‚{tld\P: + 5FIJHEDDDCECFEGGIJLNOOPPPPOPPPQQRTUVXY[\]pponmmmmmlkjhe`\YVSPNLJHHKPTUUSPNKJLSY]]`UD .3! $G`inv€ˆŽ‘’”–—–”‘ŽŽŽ‘ŽŠ„{tld\O9  3FJLIFEDCDCEDFFHHJLMNNOOOOPPPQRRSTUXYZ\\]nmmlkkjjjihgea\YWUSQOLKJKMRUVUSPLIGIRY]\_SG +7( &B^djr}‡ŒŽŽŒŒŒ‹Š‰ˆˆ‰Š‹Œ‹Š‰ŠŠ‹‹‹‰„|rjb\Q8 4EIMJFEDDCDDEEGGIJKMMNNPOPPPQQRSTUVXY[\]]kkkjiihggfec`]YWVUSRPNMLMPSUWVTPKGEFPY][\PH '80  IYago{…ŠŠŠŠ‹ŠŠŠ‰ˆ‡…„ƒ‚‚ƒ„……„ƒƒ„„…†…‚{qg^VP< +4EHMJGEDCDDEEFFHHJKLNLONPOPQQRRTTVVXZ[]]^iiihggfeecb`][YWVUTSPONNNQTVWVTPKFCCMX]Z[OJ(  !64"  *BT_fox€ƒ‚ƒƒ„„„ƒƒ}||{z{{{{|}~~{vndYPI9 +5FHLJFECDDDEFFGGIIJMLOMPNPPRRRTTUVWYZ\]^^gffffeedcb`_][YWWUTSQPPPPRTUVWUQLGBAKV\ZYOK7 16( ";MX`iptvvvxxy{{zywvtrrrqrswxxxvrld\SI=2 7GGJIFDCCCEEEGGHHJKJNLPNQPRQRSTTUVXYZ\]^^eeeeeddcba`^][YXWUUTRRPQQRSUVVURMHCAJTZYWPLC$  ++5-  1AOZbfhijjklnqrrokfcdfikmmmmmjd[SKB6':FEHGECCCDDDFEGGIJJMKPLQNRQRRSSUUVWYZ\]^^ccccccbcaa_^][ZYWWUTTRSPSRSTUUTRNJECIRWXVQLF/ &30 + +'7FNSX[\\]^_``_]YTQPTY]]ZYYYVQJA7+=DCEECCCCDEFEGGHIILKOLQNROSQSSTTUVWXY[\]^bbbbcac_b_`]^[[YYWVUTTQTPSSSUTTSOKGDHOUVURMF6 + !03!  -6%.4$  !)/24555565445530/023431/-(   7A??@AABCCEDGEHHIJIMJOLQNSOUQTSTTUUVVWXYYY____`^a\b[a[`Z]Y[WXVTVQVQTTRURSRPNKIILOQRRPLD1  )4(  !$%&&%%$%&&%$##$$$" 0?@==?@ABCEDGEHGHIILJOKQNROUOURTTUUUUVVWWWW]^]^]_\a[bZ`Z_Z[YYXWWTWQURSTQTRRQNLKJLNPQQPLF9*  "1+  +  +)9?=;<=?ABCDFEHGHIILIOJPMQNTOUQTSTTTUUUUVVVV\\][^[_[`Z`[_[\[YZXXUWRWRTTRUQSRPPNLLMNPPQPMH?5# *+ + +  +#3;;9:;=?ABCEEGGHIIKIMJQKRNSOUPTRTTTUTTVUUUUU[\Y]Y]Y_Z_[^[]\Z\YYWXTYQUSSTQSRQQOONNNOOPQPNJD=1 +!(" + + + + + +  +$278778:=?ACDEGGIIIKIMJOJRMSNUOTRTTTTUTVSUUUUUZX\W]W]Y^[][][[\Y[XYWYRYRUTRTRQTOROPNPNPPQQPMHD=* #$ )4754568:=?ACEFGHIIKIMJNKQLSMUOURTTSTTUURWRWRVTX[W\U]V]Y[[[][\[[Y[XYUYRWSUTTQTPTORNRNRORRRRPMIG;# " -78412358:=@BDEGHIJLINJNKPLRMSOUQTSSTTTTTWRXPYQVYVZU]S]V\ZZ][[[[[[ZZXYUZRXRURURSQSPSNTNSPRRSRPMLF5  + ".673//0358:>ACEGHIJKKMJOKPLRMROSQTRTTTTTUTTURYOWSVYU[Q^S]W[[Y\[[[Z[ZYYXYUYSWSUSSTRRRPTNUNTRSTTSPMJB3   +'1452/-.0368BEHJLMMNNPNONPNSOSQSRTSTTTSUSSUSTTTRTSWTXR]O\S\U\X[Z[[[Z[[ZYZXWYVWWSYQXRVTSUPXOURTTTUSOKH?,    +"(,,,***+./259=@DFILMNONPNPOPOROSPSRSSUSUTURTTSSTRTRRTTWSYO]Q[S]U]X\Z[[[[[Z[XZYWYWUYSZRXTUUSWPWPTRRSTTQNLH;+   + + $%'))))*+,.147;>BEHKLNOOQNQPPPQPSPSRSSURWRUSTTRSSRSQTRRVSWR[O\Q]Q^T]W[YZZ[Z[W[XXYXXXUYSZSXUUWRYQVRSRRRRRONLE8*  +   "$%%&'(()*,-036:=ACFIKMNOPORPPQPQRPTRTSURWQVRTSSSSQRRRQRQTWSXP\N^O`P_S]W[YZYZXZXYYWYWYYVZUZUYWUYRWRSRQPQQQPNMIA6)    "$$$$%&'')+-/269<@BEGIJMNOOQNQPPQRPTRTSURWQWRURSRRRQRPRQQRUTVRYN]M_N_Q]T[WYXYXYWXWWYWYWYYWZVYWVYSYSUSRPOOPPPONLF?7. +   "####$$%'(*-/1598+   +  !"######%'),/269=?ACDEFGIJLLMNNPOQPSQVRUTUTVSUSSRRRRORQORPOQTUURWQYQZRZTYWXWXWVWUVUUUVVXWZXZX[W\U]SYUUTRPNNNNOPPPPNLID>3"  +  !!"""""##%(+/26:@ABCDDEEGGHHIJKLMNOPQSTUUVUVUTSTRSQRPQOPOPNQO \ No newline at end of file diff --git a/examples/img/sh1r.pgm b/examples/img/sh1r.pgm new file mode 100644 index 000000000..532974c7f --- /dev/null +++ b/examples/img/sh1r.pgm @@ -0,0 +1,243 @@ +P5 +# CREATOR: CImg : Original size=180x180x1x1 +180 180 +255 +««¬«««¬¬««¬¬¬­¬¬­®­­®¯­°®¯¯¯¯¯±¬´­²°¯±°±°°¯¯°­®­¯­­¬«¬««««««ªª©©©©ª¬­¬ª¦ž–‰ˆ‰ˆ‡‹–¢©¬«©¨§§§§¨¨¨©©¨©¨¨¨§¨§¨§¨§¨¨©©©ªªªªªª««¬¬­­®®®®®¯¯¯¯°°°±±±±±±±±°°°°¯¯¯¯¯¯¯¯®®®®®¯¯°±±²²³³´´´³³³³³«¬«ª«©«¬«¬ª­­«­¬­¬®®­¬²¬°°®±°°­¶ª´¯¯³¯±¯°®°¯®°¬¯­­¬¬¬¬«««««ªªª¨¦¦¥¦¨©ª¨¥¡¢¥£Ÿ››™”“˜¡¨ª¨¦¦¦¦§¨¨¨©©©©¨¨§§§§§§§¨¨¨©©ªªªªªªªª«¬¬­­®®®®¯¯¯¯¯°°±±±±±±±±±°°°°¯¯¯¯¯¯¯¯¯®®®®¯¯±±²²³³³´´³³³³³³¬«ª«®¬©«««­«¬¬¬­­­®¬­±ª²®­±¬±°±­²±®´®²¯±¯±®°¯­±«¯­¬¬¬««««««ªª¨¦¥¤¥§ª­®­¬ª¡š™ž¤©©¥ž—“˜¢¥¦¦¦¦§§¨¨©©©¨¨§§§§§§§§§¨¨©©ªªªªªªªªª¬¬­®®®®¯¯¯¯¯¯°°±±±±²²±±±°°°°¯¯¯¯¯¯¯®®®®®¯¯°±²²²²³³³³´´³³²²«ª«°¤°«ª«««­«¬¬­­­­­¯¬²«¯°­²­¯°²°¯³®³¯±°°¯°¯¯°­¯¬­¬¬«¬«««««©¨¦¤¤£¥§¦ •‹‚}~‚‚‚†•Ÿ£›ˆ™¡¦§§¨¨¨©©©§¦¦¦§§§§§§§§§¨¨©ªªªªª©©©ª«¬­­®¯¯¯¯¯¯°°°±±²²²²²²±±±°¯¯¯¯¯¯¯¯®®®¯¯¯°±²³´´³³²²²²²²±±±±ªª®¤¶£°«««¬¬¬¬¬¬­¬¯¬®¯¬±­®¯®±¯¯°¯²¯²¯±°°°°°¯¯®¯­­­¬¬««ªªª«ª¨¤ ¡¡žžœ’k]WXY^elqqms‹“ƒ„‹“ §ª«««ª¨¥£££¤¦¦§§¦¦¦¦§§¨©ª««ªª©¨©©«¬­®¯¯¯¯¯°°°±±²³³´³³²²²²±±¯¯¯¯®®®¬¬­®®®®¯±²´´µµ´´´¶¶¶´²²³´¬ª©²¡³§¬¬«¬«¬¬¬¬¬®«¯¬®¯­¯®¯¯°°°°°°±±±±±°°°°¯¯¯®­­¬¬¬«ªªªª¬¬¨¤¡ —ypk`QE?@FPY_bimkd`i~……‘Ÿ¨««©¤Ÿ››Ÿ¢¥§¨¨¨§¥¤¤¥¥¥¥¦§¨ª¬­­«ª««®¯°°°°°±±²²²²³²³³³²³³²²±±¯¯¯®®®¬¬®¯®¬­­¯°°°°¯¯¯°±²±¯¯¯¯°¨®ª¨°©«¬«««¬«¬¬¬­¬­­®­®®®®¯¯¯°°°°°±±±±±±°°°°¯¯®®­­¬««ªª©©©¦ž–‹y`80-,+))+19DQ`moe_ZYant||w€Ž–››•“Ÿ¤§¨©©¨¤¡Ÿœœž¤¨ª©¥¤¤§ª­°±±°¯¯¯¯¯°±±°¯¯±³³´´µ´²°°°°±±¯¯²³²´¶¶µ³±°°·¸···´²±·¸µ²­¨­«ªª¬««««¬¬¬¬¬­­­­®®®®®¯¯¯¯¯°°°°±±±±±±±°°°°¯®®­¬««ª©©¨§¢•ƒoU5!#%)+*%##'-17I_e_Z[XWYi{{z„”“•“†…•œ¥¥£ ¢Ÿ˜“‘“—œ˜””—™–“’“˜Ÿ¥ª®¯©§¨ª¬®°±±¯­¬­¯±²³´µ³±¯¯¯®±±¯¯³³®¨§¦£ ›˜•Ž‹‰…‚|vog`XR«ª¬ª«««««««««¬¬¬­­­­­­®®®®®¯¯¯¯¯°°±±±±±±±±°°°¯¯®­­«««©©¨¥pT>.%%)-/1/,++****)-8EHJKIFDHWpzpx~ˆ€ogl}–“‹‰‡{z€ˆ‘’‹„ƒuTBDLUdu‰œ¤¤§¨®´³¯®´¸­«©¦¡š‘‹‰„}ume\VNKE?<;50489537<>;99;?AA@@ABCª­©«««««««««««¬­­­­­­­®®®®®®®¯¯¯°±±±²²²²±±°°°°®­¬«««©¤§¨†aC61-(%##$%&'*,-./.-+-269:999;?F[d\G@JOGRcg^]o„‹‹Š…weTE?GVZWROPS[gkkjaZUQKB729840-)'(010///-,1320031/16875533??<:9840./01ªªª«ª««««ªªª««¬­­­®®®®®®®®®®®­®®¯¯°°°°°®¬«¬®°²±¯®®¬«§¢ ŽN:31.'!"%(+./01111001210/../024.-,(#!%*)$)=S[\Z^[N@552,1>@<<=?;7:>>?B;1-0430*'%$%).1/.-,,++("&'+165/3;AJQSRZ^eo{…Œ‘¢¥¦§ªª«ªª««««ªªªªª«¬­®®­­¬¬­­­­®®®®±³µ³°­«ª­±³´µµ³°­¬¯©¥¨§“_410,& #'*-/11221110/.-+*(&$#"!!! !(./)),,.,+-./113577646:::93+%$%'((*,.15:?IOW`jt}ƒŽ—Ÿ£©¯³º»¹¸½ÅÇÈÓÓÑÍËÇÄÄÊÌÍͪªªªª«««««ª©©ªªª«««ª©¨©ª­®¯±°­¬«ªªª«¬­¯¯ª¨©«¬«©©³´¥š‡^,1*""$'*,/1233211/.-+('%$"!!&+,.,++-0234566569>BCEK[s‹™œ¦­³·¶³±²¸º¹¶³±²²­¯³³´·»½¿¾»¸¼À¾¹¹»¿ÂÅÇÈÇÆÇǪªªªªªª«ª©¨§§¨§¦¦§ª¬¯±±¯©¦¨«¬ª¨ª¬¬«¬¯°¯­­¬¬®¯¯­ª¡™‘Y8$"!$&)+./1233210.-+)&$"  + + "%&''(*+,../0112259=>>?Ke‡ ¨¤ §²··¶´²±²´³²´·º»½½¼»¼½º¶¶º¾ÁÅÅÂÁÁÂÂÂÂÃÄÄÄÅŪª©©ª©©ª¨¦¤¥¦¨§¦¥¦©«¬«ª«³²±²°¬««¡—†xl_JA:3,% &62 #&'(*+,./000/.-*(%#  !"$%')*++,--./02454202>X} ±¥§¯³¶¶¹¼¾¾»¶±®°²¶¸¸··¸¸¹º½¿À¿¾½¾¿ÁÂÂÂÃÄÅÅÅÆƪ©¨©©¨©¬¨¥¥§ª¬®¬§¥¢œ“‰t\PE<2("" #%%)&)$$&'''&''()****(&#  "$%'()**+-./134667754CeŒ«³¶¶´´µ·¶¶µµ´µ¶¸¹¹¹¹¹º¹¹¹º¼½¿ÀÁÂÃÃÃÃÃÃÃÄÄÅÆƪ©§ªª¥—vmbP?3/+!!%*")18AIQQG.!#&'&$"!!!!"""#" !"$%&()*+-.02345652/1;Lv™¯³µ´¶···¶µµµµ¶·¸¸¹¹¹ººº»¼½¾ÀÁÂÂÃÂÂÃÃÃÄÄÅÅÆ«§§¨ž{D*)%#%#!#"!"%,3;DO]hux{ˆ‘”—t:!!%&#  "$%&(*,-/01234320/.0Fw”»¹··¸···¶¶¶¶··¸¸¹¹ººº»¼½¾¾ÀÁÁÁÂÂÂÃÃÃÄÄÅÅÅ«§¦©¢r*!#3@GPZels|„Œ”›¢¦©©§§©ªª¦¥¦ª¬«¨¤["#" "$&(*,-./0222210,&(Gw«½¸·¸¸···¶¶¶···¸¹¹ºº»¼¼½¾¾ÀÀÁÁÁÂÂÃÃÄÄÄÄÄÅ«¦¥¨¡h D\r€†«¯¨¦ª§žœŸ™™Ÿ¡£¥¨«®°¯«¨¨©­¬©¨©ª§¡Š3"  #%(*+-..//00010-$+GŒª´´···········¸¹¹ºº»¼¼½¾¿¿ÀÀÁÁÂÂÃÃÄÄÄÅÅÅ«¦¤¥š[*‰ ¬«£ž £¡›¤¦£¥©¨¨©©¦¥¥¦§ª««©¨©ªªªª©©ª¤˜q'"%()+,--...//11++_•¨²····¶¶¶¶¶···¸¸¹ºº»¼½½¾¿¿ÀÀÁÁÂÂÃÃÄÄÄÅÅ«¦¥¦šX"DŸ¦§©«¬ª«°°±±¯¬©¨££¥¦§¨©ª¬®­¬ª¨¨§§¦§§©¦•{I "%()*+,,,,--.00 ,>…ž±¸¸··¶¶¶¶¶¶¶··¸¸¹º»»½¾¾¿¿ÀÀÁÁÁÂÂÂÃÄÄÄĪ§¥¥–KF¡£¤¥¨©©©©ªªªª©©©©©ª©¨§§§¨©ª«««ª©¨§¥¦§™tG##%'()*++++++-.'*;_—§¸º··¶µµµµµµ¶¶·¸¸¹º»¼½½¾¿¿¿ÀÀÁÁÁÂÂÃÃÃÄ«¨¢¤—HQ£¨©©©©©©©©©ªªªª©©©©©©¨¨¨©©©ªª©¨§§£Ÿ¡ž~D #%&'()))***+,*+/Hy—°¹·¶µ´´´´´´´µµ¶·¸¸º»¼¼¼½½½¾¾¾¿ÀÀÀÁÁ¬© ¤M[TVl¦¥¥¢Ž +#—£¥¨¦§¨¨ªªªª««««ªªª©ª©ª©ª¨¨§œ•\ + + + + """     !"#" $Ap ¥¦¥¥¦¦§§¨¨©©ªª¬ªªO@TXNWg¦¥¤©† •¤§©¥¥§¨©©ªªªª««ªª©©©¨¨¨¨§ª§„r'  + + +  !$'('$  +  ! )@¢Ÿ§§¥¥¥¦¦§¨¨¨©©©­¨©kCGWSJT_§¤¢¦„ •¦©©¤¥¦§¨©©ªª©ª©ª©©¨§¦¥¥¦§ª§ŒV +  + + + + + !%),-,("  + #-h™¡©©¥¤¥¥¦§§¨¨©¨¨²«šICMUOGM\¨¤Ÿ¢‚ $˜§¨§£¤¥§¨¨©©©«©ª©©©¨¦£¡¢£¦¦œ†1  + + +  !$)-021-% + + "F|š¤©¤£¤¥¦¦§¨¨¨¨©²§p8FSRMEG^©¦žŸ+¦¦¥¢£¤¦§¨©©¨ªª©ª©©§¥¡œ››”f  + + + +  #(-15761( + + -\Žš¥¢¢£¤¥¦§¨©©¨ªª¥B7@VQMECd«¨Ÿž€-ž¦¦¥¡¢¤¦§¨¨¨©§ª©©©©¨¦¡—’‹€t^B"  + + + + + "&+059<;6,  ! !!!!!!! $%%!   "G…—¢¡¡£¤¥¦§¨©©©«¦¥24:WTMDEh«ª¢},ž§§¦¡¡£¥¦§¨¨©¨©©©©©©¨¤™Š}u[>' + !$*/49>A@:1# !"####$##$$$$#"! %,11.)$ 2w˜¢¢¡£¤¥¦§¨©ª©¬¥™22AWYLBKf©¨¢œz -Ÿ¦©§¡¡£¥¦§§¨¦«¨©©©©ªª¦Š…J-#   #(-28=BED>5&!$%'((''&&&&&&&%$"!&/7<;61*# ^“œ£ £¤¥¦§¨©ª©¬¡’.6GW]MCQ`¨¦¢šw0¤¥©§¢¡£¥¦¦§§©§©©©©ª««¥ž’˜{;-)    "&,17D]bRFSY¨£¤˜s3¥¥¨§¢¡£¤¥¦§§¨©©©©©ªªª¢ ”yA(/$    !$)/6;@DIMLC<0% !  $(,0110.+*)((((''&(09?BA@<6/(  !#"1yšžž¥¦¦¦§¨¨¨©ª¢}.IEfgXHST¨£¤•l4¤¦¨¥¢¡£¤¥¦§§¨¨©©©©©ª©££“J,&1"  "'-4:?CGLONF@5+!"#"!!%*/2331.+*((((((),19?ABA@;6/)  !%'+a•¤¡¦¦¦¦¦¦¤¥©«¦r2IMniZKST©££•d5¢£¥£¡¢£¤¥¦§¨§©©©©©©©ª¤¥ˆ-$&0"  $)07>BFINPOHD:2"!$%$#! !$(,./.,*(&&'(()+/39>@BCB@;5.(" &+('KŠ¦£§§¥££¡Ÿ¢ªªªu5GVpiYLUVª£¤™_9 ¡£¢¡¢£¤¥¦§¥©¨©©©©©¨«¥¡h$#'.!  %+2:@DGKOQOIF>6' #&'&#! !#$%$#"!"#%'),.26;?ACDDD@;4/)# + #+-$=¡¢©©¡š—•–Ÿ§ª¬6K[qgXNYY©££œX<¡¢¡¡¡£¤¥¦¥©¦©©©©ª©¥¦¬C%)**!%,3;AEHLPRNJGA8*#&(('$! !#$#"!!!#&),036:>ACEGHGFA;5/*$ + (1(6u ¥¨“‹ƒ‚Œœ¥««Ž4Q^tkWQ[]©¢¡šM?›Ÿ¢¢¡¢¤¤¥¦§¥©¨©©ªªª¥¡®k030+(!$+3:AEILPROJGB6+!!%)*)'# "'*-,+)((+.259;>ACFIKLLLHC<61+&! + + + + #003hž§—ujfv‘£§¬ª™9Wczu[T_`ª¢ž—DDžž¢¢¢£¤¥¥¦¦¨§¨©©ªª«¨¥ V0?0*'"")18?DHLQROJFA5*# $(+,*'"$*.00.--/26:=?BDFIMPQRQOKD>83-(" + + + + '-0Q}ƒidRMg¨¬ª¬«¡N`n€cYbd«¤Ÿ”?K¢ ££¢£¤¥¥¦§§¨¨¨©ªª«©©“U8@,)($ &.5***%#*19?EJPSQLHC3)"!'+/0/+& "&)-148BGLQUX[^adgikmmlkhe_WNHC>83,%  +  +  EjŸ¥§£¢¦ª¬­¬¬ªŽy{ƒŠzihi­¥£’,c¢££¤¤¥¥¥¦¦¦§§§§§¨¨©¨±‰2C(.5/#!$)/6=CHLOPNKG:(4569:70'"$,6?EKQX_cfilorstuutrqolg^RLGA;6/'"  +  +  !"Fu¡Ÿ£¡¢§ª¬­¬­­™„…}jfg­¥¢—%g¥¤¤¥¥¥¦¦¦¦§¦§§¦¦¦§§§­›O5-14,!  "%&')+/5*7668:93+$ !&/:EMT\dkorux{}}}|zxwutrnfWPJE?:3(#""!  + ! #?z ¡¥£¥¨ª«­­®®¡ˆˆlee­¥¡™k§¦¥¥¥¦¥¦¦¦¥¨¦¦¦¦¦¦§¥¢˜a3/21' #),./148=DJNPPPONLGB06645675/)$"$(1=JU^irx|ƒ„„„„ƒ€}zyxvsj[TOHC?5(%'))'! +  +  !<ˆ¨¤§¥¦©«¬­­¯¯§™‹€ndc¬£Ÿšm§¦¦¦¥¥¦¦¦¥©¤§¦¦¥¥¦§ ¢X4,.*! !(0457:>CHNSVXWWUSPLE7$&475446630,('+2=JXds}ƒ†ˆ‰‰‰‰‰‰ˆ…‚|{yul`XRKGB6*+1553*  4Š¥§¨¦§©«¬­­®¯ª –‹qeb¬¡Ÿ˜p§¥¦¦¥¥¦¥¦§¤¨¥¦¥¤¥§¦«†E0')#  &.6:=AEKOTWZ]^_^]ZWRKB46BHFB><;:964104=HUex‡Š‹‹‹ŒŒŒ‰†ƒ€~|wnd\UOJE6-5>AB@6'  + 1Ž¤¦§¦¨ª¬­­­®®¬¥œ‘Šuie¬¡¥~¦£¦¦¥¥¥¥¥¦¦¦¦¥¥¥¤§¥š«~A(## + + !%,5% + + + +  $'*27[‚§¨¯ª¬¬¬­­­­®®®®®®«£¢ 'ŒŸ¡¡ ¡¢£¤¥¥¦¦¨§¨¨¨¨§¥©¨¢•{F0^o{uuwz}€‚„|uqprw{{|€€|vsqopruwwxz}€ƒ…††‡‡ˆ‰Š‹‹ŒŒŒ‹‹‹ŠŠ‹‹ŒŒŒŒŒŠŠ‹Š‰ˆ„‚‚ƒ„vmgeZE6) + + + !0E2J$©§°ª««¬¬­­­®®®®®®¬¤£} (Œž   ¡¢£¤¤¦¥§§¨¨¨¨¨¨¨©§¦¡’q; 0`mzuuwz|€}wngc_[UYbii^PHLMMORW`ioqsv{„††‡‡ˆˆ‰‰ŠŠŠŠ‰‡†…„„„ƒ‚|yywpntxzzvsx}}{{|ƒ‚{smdVI8$  2:3:6©§¯««««¬¬­­®®®®­­¬¦¢z )ŒŸ   ¡£¤¥¥§¦¨§¨¨¨©©ªª©ªªšY:" -^nwtuvy||yqh_YUQLIGGE?9531..16;962/,*(''(+06;BKRW^lx€„†ˆ‰ŠŠŠ‰‡ƒ~xqjbXNF@7/)%" !$&)-048;=@BGNYfqtqjeY@" 4~…’–ž¢¤¤¤£¡™”‘“–™®ª›a:›¤Ÿ   ¡¢¤¥¦§¨¨©©ªª«¬¬¬­®œl ³§”~0  Sinpoolf`[WTSQOMKHEB@>;:997642136;@GOV]iu~„‡‰‹‹‹‹Š‡ƒ|une]TKB93-*'%$#$%'*.26:=@BDEGKR]iqqmj_D$ J“¯—š˜šž¡¢£¢¡ž›˜–••••—˜®¨˜_@£¨ž   ¡¢¤¥¦§§©©©ªª«¬¬¬­¦~Œ¯®«•s,!& + +Nikmmmid`[XVTRQOMMKJHEA<:986420038>CKU]fs}„ˆ‹ŒŒŒŒ‹ˆƒ{rjbYQF<51-+((()+-0369;>ADFHHJLQZfnqomdH$ 0S›´ª¥ž››ž ¡¡ Ÿ›™™˜™™™šš®¦•ZA¥¨ ¡  ¡¢¤¥¦§¨¨ªªª«¬¬¬­­™~§²±³Še.%7& Fgiillga]YUTSQONMMOQPLC81,*%! "'/6?AELX`^[X[_Q5#!%,1?Rao~‹‘”––––“‚ym`SC91*&##)/:HQYdg\ND9338?FKNPU[emqqomW'Mg¨¥¨¡œ›››œœœ›š››œœžžž²œ›EH£¤£¡ ¡£¥¦§¨©©ª«««««¨£ˆŠª­¬°©K6*'8C/$!! 5SfbidVQQXZVSNF=88>M_nuxvl\PMQVQC4,*+5GZm~•™›œœ›—‚{kWH71.*)+2;AP_eiqutl`UJ=7;DJNQUZdnqrqoZ)"K[¨«¢ššš››œœœ››ššš›œžŸŸŸ°ž›AJ£¥¤¡¡¡£¤¦§¨©ªª««««ª¥–~˜®ªª¯£O51*:G=.&$$"6RcbfXNRYa^URJ?68EXinaPJI@47>@CIIE<4/1@Me|Ž™ž¡££¡œzgK=20/036;CRg{‰ŽŠ}qmjhaTF?DKOSUYamrsrp\,4MQ ¢š›˜˜™š››››ššššš›žŸ   ®¢š;M£¤¤¡¡¢£¤¦§¨©ª««¬¬«ª¡†ˆ¥®ªª¯ŸW>?1>NL>4,')2H`^[KMS`g_TQE:7CQYWE, )*"$.58>EIFA86?G\zœ¡¥¦§¦ž‘€x]@7468=BISZTKB7//6H^jgd\NDEMRTWW\ktsrp^/!-[S@• ›™––˜™™ššš™™™™šœžŸ  ¡¡¬¦š6Qœ¢£¢¡¡¢£¤¦¨©ªª«¬¬¬¬©‘v™«©¬«¯ ]JL;BV]PB7/..9U^QMNPdiaTOA:>GE<2)""!/@?508HSY[QFENSW[XVeutqo^1$,.Nc7Z¢Ÿ–“‘“–—˜˜˜——–—™›ž  ¡¡¡ª©š0Tœ£ ¡  ¢£¤¦¨©ª«¬¬¬¬¨¤|v§¬¤¬«­¤`WXKIR^YNB741/>WJWHOhjcUMA==:5588/!&F\QA>DNUSHCJRq‹§­®­ª –€hLBJKKJKJGEE:&"%)*$!(4:FQQIEMUZc_RYpvqn]1 !#+22DN4zš˜ŒŠŒ’“”•””““•—›Ÿ¡¡¢¡¢¨«™,Wœ¢Ÿ  ¢¢£¥¨©ª¬¬¬ª© ™hs›¥¢©©«¨bb`]YMPPMG?=5%%*AZGUkmgYNC;648BMOB.!#,AaldWNJNX`WCOWm…™¦®°®¨œ–~bPUZMFECACMUH"$6C?9>FHGMU_im_P]utm^1"#%(.3*0*T›ž‡‡‡ŠŽ‘‘‘”—›ž ¡¢¢£¢§­›'Z¡Ÿ  ¡¡¢¤§©«¬¬«©¦›‹XUq„—¥¨ª«dheilYLB>=?KN.djFYnplaWPKHHMU[]WH;59D`utmidbacjdCEYfssppt|ˆ’’y_W\RFOQPNR\e^8) %3EOKA;?DHNXdnsq_Tevpc4!$&(+/1&,3”¤§›’Œˆ‰ŒŽŽ”™œŸ¡¢¢£¢£§©ž^ŸžŸŸ ¡ Ÿ¢§ª«¬¬«ª¨£šŒ„…‘¢©­©lnjlvfPA948Qnqb1|‰Z^pssnhd_XSQTY`js}„„~yutsrrstuvX3GMO[w‘¡©­¡uSEIKAUcikhhkqs^E635:K^c\RIGHLS_kuxzoZUqrg1!#%%#%-G~¨¯§ š”Ž‹Œ•šž ¢¢£££¤§¨^Ÿ›ž Ÿ ¡ ¥©«¬¬««««ª©ª¨¥¤¥ª®­}vpowkSC928Ywzn:‰—phruwvsqng^XUTUVWX[_bdfhjkmorsusb$79:8~¦¤¨£¤ —š¡¤¦¦¦¥¤¡›Š•¢§¤Ÿœ ¤§¨©ª«««­­­±£„#œ¡¡Ÿ¢¡¢£¤¥¥©¨©©ªªª©«¥ƒdkdhjjmr|‡““Œwl8;(,^o`Z^behkmpsuxz}‚ƒ„††ˆˆˆˆ‡†„‚€ƒ‡—ž¡¢£¤¥¥£¡ž™‘‡{|ƒ„†‡‡ˆˆˆˆˆˆˆˆ‡‡……‚|zxtqlghml)*dš¦¬¨§ —›£¦§§¦¤ ™—£¨§£žž¢¥§¨ªª«««­¬­·¥‚ !šž¡ ¡¡¡£¤¥§¦©¨©ªªª©§¡}gpjkihkq{…Ž’•“„*7+._pa[[`cgjmpsuy{~€‚„…†‡‡ˆ‰‰ˆ†‚}xurqqvŒ•šœœœœœœ›˜‘„ukhlsy„‡ˆˆ‰‰‰‰‰‰ˆˆˆ‡†„‚~|yvsokfgte >s‘§ª¨Ÿ•œ¥¨©¨¥Ÿ–ŽŒ”¡¦¥£ žŸ£¦¨©ªª¬©®©®«¸£~ !˜ ¡¢ ¡£¤¥¥¨§©©ªª©©¤¡rdpplhfipz„‘“˜’’(035Wd_Y^aeilpsvy|~ƒ„†‡ˆˆ‰‰‰ˆ…€xpic][`m}‹“—˜˜—–•”‚nZPPVan{ƒ‡‰ŠŠ‰Š‰‰‰‰ˆˆ‡…„‚€~{xtqmhfh{[ =q™¤¤›—Ÿ§©¨£™ŠŒ’š   ŸžŸ¢¥§©ªª¬¨¯§°ª­´ž{ #™¡¡¡ ¢£¤¥§¦©¨©ª©©©£¢b]pulechpz…’–œŸ<1I- 0abY]`dhlosvz|ƒ…†‡‰ˆŠŠŠ‰†ulcUIBBM`vƒ‹ŽŽŽ‹‡}kR?7:DTfx„ˆ‰‹‹ŠŠŠŠ‰ˆˆ‡†…„€}zvsokhgj~R  7m•Ÿž›œ¤§¤›…†‹”˜›œž £¥¨ªªª«¨°¥²§¯«°›z %œ¢ ¡ ¢£¤¥¦¨¨©©ª©¨¨¢œRVpvh`aiq|‡‘“ ¦Y=bD*" Wd[]_bfkosvz}ƒ…†ˆˆŠŠŠŠ‰†€vl_N;.*/>Xjtxz{zxrgSOe{†‰‹‹‹‹Š‹ˆŠ‰ˆ‡†…ƒ|yurnjgim}I d‘¬«¦¤¦¨¨¥£¤§§¦¤¤¤¤¤¤¥¦¨©ªªª«©°¤´¥²ª­¯  ( œ£   ¢£¤¥¦¦©©©ª©¨¨£–SUnma\`ks€‹‘’”ž£kLe\H855;Pf]]^afjnswz}€„…‡‡‰ˆŠ‹‹ŠˆƒzqdRA3+).:M\chlke_RB757;fb]\_bgmrvz}‚ƒ…†‡‰ˆŠŠ‹‹Šˆ„vi]PF@<99;===?@ACFKQU[ep{„‰‹‹‹‹‹ŠŠ‰ˆ‡‡…„ƒ€~{yurnkijpt_(#!#9Ep¨°²²¯®®­­­¬¬¬«ªªªª««««¬«««©¯¦°¦°©®«®«¬Ÿs +›ž¢žŸ ¡¢¤¥¦¨©©ªª©Ÿ¦­ŸXUXROQ^r€“‘Ž‘•™œœ‡~sqtqZ1$_h^\]afkquy|ƒ…†‡‡ŠˆŠŠ‹‹Šˆƒ}ti]RJD>:8778:=BHNTZ_enw†‰‹‹‹‹ŠŠ‰‰‡‡†…ƒ€}zwtqmkkjpqN'._…§²³±¯¯®®®®®­­¬««««««¬¬¬««¬©­§®¨®ª¬¬¬¬®©Ÿo ,• ¢žŸ¡¢¤¥¦¨©©ª«§–ž° SSSOMQdy†’“Ž‘—šœŒ‰‚l $Xga]]`diotx{ƒ„…‡‡ˆŠ‰ŠŠŠŠˆ†‚|ti^ULD>97669>FNV\bgnu|‚‡‰ŠŠŠŠŠ‰‰ˆ‡†…„‚~|yvromklkql=%-g•¯«ª«¬­®®®®®®­­­««««¬¬¬«««ª«©«©«ª«¬«®­«ªŸj/”¢¡žŸ¡¢¤¥¦¨©ªª«¦‹‘± MRPOMTn‚ˆ‘‘Ž’™Ÿž˜›œr __b^^_cgmrwz~€‚ƒ…†‡ˆˆ‰‰‰‰‰ˆ‡„{sh_VLD=988;BKV^djou{€„‡ˆ‰‰‰‰ˆˆ‡‡†…„ƒ}zxtromlmmse- "=h„™ž ¦ª¬­®®®®®®­¬«ªª«¬¬«¬«ªª©©©©©«««¬¬­®­ž` 4™¦žžŸ¡¢¤¥¦¨©ªª«¥‰Ž®JUPQQ^vƒˆŽŽ”› ¤  Ž›ƒ& X_b`_`bekquy|‚„…††ˆˆˆˆ‰ˆˆ‡…‚~xpg^UKD?<<@GR^flpuy~‚…‡‡ˆˆˆˆˆ‡‡†…„ƒ€~{yvtqommpos\ %[uƒŽ›¢§ª«­®®®®­«¨¤¥¨¬¬¬¬««ª©©©©©©ª««¬¬­®°žX 8¨ŸžŸ¡¢¤¥¦¨©ª««¨’š©–N[RV[j|ƒˆŽŽ—ž¤ªž¢˜”>  Jgeba`adinsw{}€ƒ„…†‡‡ˆˆˆ‡‡…„‚{unf]SKEBCGOZfmruy}€‚„……†††††††…„ƒ‚€~|zwurpnmmpprQ  +"\t‚ˆ–Ÿ¥©«¬­­®®®¬¨¢ž¤«®®­¬««ª©¨¨§§¨¨©«¬­­®­V4›¨ž ŸŸ ¢¤¥¦¨¨ªª«ªž£¨\bSYds~ƒ‡‹ŽŽ’›¢¦®˜¡žs + + 2dhdb`acgkpuy{~€ƒ„…†‡‡‡‡††…„‚€}xsmf]UNLLPXdntxz}‚ƒ„„„„…………„„‚€}zxvsqonmnrqoC +8_w£ª­¯®®¯¯±°¯®¯²²°®­¬«ª©¨§¦¦¥¥¦¨©«­­®«U7ž©¡¡ŸŸ ¢¤¥¦§¨©ª«ª¥§¦•ebVZju|…ˆŒ”¢¤¬z“> +  #Xedbaabeinrwy|~€‚ƒ„……††††…„„‚~|xtohb\ZY]dnv{~€‚‚‚ƒ‚‚‚‚‚‚ƒƒ‚€}{ywtrponmnpnf/'Kdmvƒ™£¨ª¬¯°±³´´³²°®­¬«ª©¨§¦¤£¢¢£¤§ª¬­®ªœR;¡©¤¢ŸŸ ¢¤¥¦§¨©ªªª©©¤˜`]\]lrtvy~†Ž”¢¦¨kŽz + +Nccba`acgkptwz|€‚ƒƒ„„………„„ƒ‚}zwsokhgioxƒƒƒ‚ƒƒƒ‚€~~~€€€}|yxusqpnmnnoi\U¦Ÿª¨¦¦¥¤¢ ¡£¤¥¦§§–zc```^\ZXVSQOMKJILL< + +  *GTWXXXYZ\^abbbbcglrrmikoqqplhhe[TPKDCFIPW_ehjnrqomqx}~~{uoifefgghhiiihgaH &EJKKKKJIHGFEDDDFGHJLNPQOOSX\_``_][YWWWª•7P¡ ¨¨§¦¥£ž™šŸ¤¦§¨œ{\W\][YWUSRPNLJHGHIG4 + +  :LRVVWWXY[^`cegkpuxyusrswzxrpt}„…‚zqpsw{ˆŠ‡|xussuy{|{yvqlhgffggggggfdV5 $DKLKKJJIHFFEDDDEFHKMOQSUX[\]\[YXVTSSSS§•0T¥¥¦§¥¢ž–‹‚‹˜¢§ †eRVZZXVTRQOLKIGEEFF@- + +  +.AMSTTUVWX[]`cgkosvwxwwwxz||~ƒŒ–›œ˜‘‘“‘ŽŽ‰‚{vtrstvwwwuroligffffffffd_G$  $CJMLKJIHGFFDDDDEFGKNQTWYZYYWVTSSRQQQRR¨–.[œ™›š”†zla^fwŠ’…lYSUVVTSQPNKJGEDCCCB;) + +  %7FQTTTTUVX[]adinqtuutsqoqtz†‰’••““”’‰…€yspoopqrsssqnlihffffeeeee`S. 'FLMLKJIHFGDDDDDDEFHLORTUTRQOOOOOOOOOOO¨*']~vsvqic[SPOR\imf\VSSSRRPOMKIFDCAAAA?9' + +  +;KSSSSSUVXZ^bgknppponnnoptx{|~„†‡‰Š‰ˆ…|vplkkkklmnnnmkihgffeedddd`S<  + ,ILNLJIIGGEFDDDCDDEGIKMNNMLKKKLMMNNNNNMªŽ2Agla^[SNLKLNQRUWXYWSPOOOONLJHFDBA@??@?:' +  + !)=NRRQRSUVX\_dhjkjihgghjklnprtvx{|~~|zyvrmhedbbbdfhiiiihggffedcddbXA%  + 1KMNLJIHHFFEDCDCCDDFGHIIIIHHIJJKLMMMMMM¥Š=Yf`XQMLKJJIIIJMOQPOMLLLMLLJIFDB@?>>?@@<) +  %@PRQQRTUWZ^behhgda][[]adghiknqsvwvtsqokgb_[XWX[_bdfggggggfedccd]I+ + 4JMMLJIHGGEDCF@ECCDDEFGGHGGHHIJKKLMMMMM¦ŠO``YSPOOOMKJIGFFGIIIIHJJJJJIGEB@?===>@BA+   *FQQPRSTVY\`dffec^YSOMNQVZ]^`cfiiijkid\VPLLLOSX\`ceghhhhhgecbdbP5  + + 5GKMKJIGGEEDDAG>ECCDDEFGGGGHHJJKKLKMLML˜~`c]WSRQQPNLJHGEEDDEEFGHHIIHGECA?=<<<>@CD/  !! +2KPQRRSUX[_cegfda[TMFCADHLPRUWXYXTNJE@>=?DJPV[_cfghijjjihfbbcV>  + + 8EJLKJHGFFFCCE@F@ECCDEEFFGGHHJILJLKLMLMg`cb\XUTSQPNLJHGFDDDDDEFGGGHGFEB@><;;;=@EG2 "$ :JPSSTUX[_befhfd_ZSLE@<962////0259=>?CFKQW[_bfhjllmmmmljfbb\F   + + !;EJKJIHGFFDFCCDBDADDCEEFFGGGJHLHMJLMLMLX\d`[XVUSQONLJHGEDDCDDEEFFGGFFDB?=;:9:=@FL6 "&  !=KRTTUX\_behhihfb^XQJD?<;999<9889=AHM9  +!' (=LRTUX\_bfhiklljie`ZVSQPQRTY]bgjnnmlihjknpsuvwvutsrqpmg_P4 + + + + + '?DHIIHGFEECCDBDCBDCEAHCFHGHGKGLIKLKLLLM``]ZXWUTRPNLJHGFEECDDDDFCHDFEDC@>;9778I?FCCECFDGHGHIIIKKJMKLLKLXXWVUTRPOMKJHGFGCGBEDDCH?LBFEDC@=:8668GBDDDFEGFGGIGJJJJLKLLKLLVVUTSRQNMLJHGFGCH@GCDDFBJ@HDEDC@=:8667"  % 6MY]bglpsux{ƒƒƒ‚€~~~}}||||}}~~}{yuqmif`L+  +  -BDE5  "& + +$>KU]ekpsvy{{zyxwwwwwwwwvvutttstttuuusoib[TI7 + +  + 3>AAABBBCAFAECCFCEEEFEFFFIDLELGJIKHKKKKKKKOONNMMKJIHGGEFEEDEDEEDECDDCCCA@?<:87668:=@CC7(  +'! %8HS\cjnqsuuutsssssssssrqqqpppqqqqpomg`XNB1 + +  +  .;?@@AABBCCAFAEDDEEDFEFFGGFIGJGJIIKJJJKKKKKNNNMMKJJHIFGGEEFEDDDDDDDDCDBBA@?<:877679<>AA9." &$ "6FQYagjlllmmmlmmmnmmmlkkkllmnmmlkhe^VK>-   +  *9????@AABACDAFBFDFEFFEGFFGGHGIGIJJIKJJJKJJKMMMMKKJIJFHFFFEEECFCDECDCDBCA@@=<:977779;=??:2)  "&"4CNV\`bcdddefgghhgeedddefgijifeda\TH:) + +  +%8@@>>??AA@CBCEBGCFEFFFGEHFGHGJFKHHKJJJKJJJKJLMLLKJIJGIFGFFEEDGBEEBECDBDAA@?=<:987889:<>>;5/# $ .=HPTWZZ[[\]]^__^]\\]^^_`aa_]\ZVNC5$  + +  "4??==>>??@BBCCCFCGEFGFFGHEHGGIEKGHKHJJJJKJJKJLKLJKIJGJFGFFFFEFAFDBECCDCABA??=<::88799:<=><83+   )8AFIKMMMMNPRTTSQPQRTUUSRQPNMJC8+ +  1<><;<=>>@@BBCDEDGEGGFGHGGGGGHFKFHKGKIJIJKIKJJKKJJJIHIGHGFFDFECFDCEBDDACBA@@>><;:98899:;===:82(    "-48;=>>>?@BDEDB@@?ACCCA@>;83*   +  0:;:::;<=??AACCDEFFGGGGGGGGGGGGHFJJGJIJJJJIMGKKKJJKHJHHHFFFFFEEEDCDCDACDAAA@??==;::999::;<==<:71% +   #)-/011001210/.-./010.*&!  + +  +.:;989:;<=>@@BCDEFGGGGHHHGHGHGHGHHHGJIIJIJJKGNHJIJJGKFJGHGGFEFEDEDDEAECABC@A@?>>=;<9;99;;;<<=<;97.  + !!!!""!!    + +  +$19;97789:<=>?ABDEFGGHHHHHHHHHFHGHHHHIHHIIJJJJKIKJJGJJEKEIFFFFGDFFCECCG@CDAAB@@?>><=:<9:;:;<;<<=<:94(   +    $29;866789:<=>@ACDFFGHHIHIHHJHGIGGHGHHHHIIIJJJHKJJJGLFHJEJEHGEHBIBFDDFABEC?EA@A@??=>;>9<;;;;;<<=<<;:7."    #/687556789:<=?@BCEFGHHIIIIIJFJGIGJEIGHHIHIIJJHJJJKIJDLFGIFIFGGCK?JBEDCGBBBF>CB?@?>><>:>:<;;<<<=<=<<;93'  + (.2343345789:;>=<>;<;;=:=<<====<:4+   +  $-//0001235689:;=?@BDFGHIJHKHJIKFLDLCNBLFHHHHHIJIJHHNFKFJICLBKBKDFCJ@JAEECECADC?CA?@??=>==<=<9?:><;====<;6-$    &020.-./0234679:;=?@CDFGHIIKHKIJIJFLEKDLDJHHHJHIIIIJLFNHIEHIEIEIDHEGDGCFDCEACCBBC@AA???>>=<=;;>9?:<>=====;6.&   +-420--./0134679:;=?@CDFGHIJJJJJJIIIGIGIFIGHHHGJIHJIJHKHJ \ No newline at end of file diff --git a/examples/img/tetris.h b/examples/img/tetris.h new file mode 100644 index 000000000..e18b158a3 --- /dev/null +++ b/examples/img/tetris.h @@ -0,0 +1,2313 @@ +/*------------------------------------------------------------ + + Define hard-coded color image used in the 'tetris.cpp' + example file, so that the corresponding executable does not + depend on additional data files. + +--------------------------------------------------------------*/ + +const unsigned char data_logo[] = { + 45, 45, 46, 47, 48, 49, 50, 49, 48, 48, 49, 50, 52, 53, 55, 56, + 59, 62, 64, 65, 64, 64, 66, 66, 65, 66, 72, 76, 78, 80, 77, 74, + 83, 84, 79, 78, 82, 85, 91, 97, 85, 92, 90, 95, 97, 97, 93, 88, + 95, 87, 85, 88, 88, 85, 82, 81, 83, 77, 74, 81, 81, 78, 73, 69, + 67, 65, 63, 65, 66, 65, 65, 65, 64, 61, 59, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 30, 29, 30, 29, 29, 30, + 45, 45, 46, 47, 48, 49, 50, 49, 48, 49, 49, 50, 52, 54, 56, 57, + 59, 61, 63, 64, 65, 65, 67, 67, 67, 67, 71, 75, 78, 81, 79, 76, + 83, 87, 83, 82, 84, 88, 94, 100, 91, 95, 94, 98, 100, 100, 96, 92, + 99, 91, 90, 91, 89, 85, 84, 83, 83, 78, 77, 82, 82, 78, 73, 69, + 68, 66, 66, 67, 66, 65, 65, 65, 64, 61, 59, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 30, 30, 30, 30, 29, 30, + 45, 45, 46, 47, 48, 49, 50, 49, 49, 49, 50, 51, 53, 55, 56, 58, + 59, 61, 63, 64, 66, 67, 69, 70, 70, 70, 71, 74, 79, 82, 83, 79, + 83, 90, 88, 86, 86, 89, 96, 103, 97, 98, 100, 102, 103, 103, 100, 97, + 103, 95, 95, 95, 91, 86, 88, 86, 82, 80, 82, 84, 82, 77, 73, 70, + 69, 69, 69, 68, 67, 66, 65, 65, 63, 60, 58, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 30, 30, 31, 30, 29, 30, + 45, 45, 46, 47, 48, 49, 50, 49, 49, 49, 50, 52, 54, 56, 57, 59, + 60, 62, 64, 65, 67, 69, 71, 72, 72, 72, 72, 74, 79, 83, 85, 83, + 83, 90, 92, 89, 87, 90, 97, 105, 102, 99, 103, 104, 105, 105, 101, 101, + 105, 97, 98, 98, 93, 88, 91, 89, 84, 83, 86, 86, 81, 76, 73, 71, + 71, 72, 72, 71, 69, 67, 66, 64, 63, 60, 58, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 31, 31, 31, 31, 30, 30, + 45, 45, 46, 47, 48, 49, 50, 49, 50, 50, 51, 52, 55, 56, 58, 60, + 62, 64, 66, 67, 68, 70, 73, 74, 75, 77, 76, 76, 80, 84, 88, 89, + 86, 91, 96, 94, 90, 93, 101, 106, 107, 100, 108, 107, 109, 109, 105, 106, + 108, 100, 103, 100, 96, 92, 95, 91, 87, 88, 89, 86, 80, 76, 75, 75, + 74, 74, 74, 72, 70, 68, 66, 64, 62, 59, 57, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 31, 31, 32, 31, 30, 30, + 45, 45, 46, 47, 48, 49, 50, 50, 50, 51, 52, 52, 56, 57, 59, 61, + 65, 66, 68, 68, 69, 72, 74, 75, 77, 80, 80, 79, 79, 84, 90, 96, + 92, 92, 101, 101, 95, 98, 106, 111, 114, 105, 114, 113, 116, 116, 112, 112, + 111, 103, 107, 100, 98, 95, 96, 92, 89, 93, 88, 83, 79, 75, 77, 79, + 78, 76, 75, 74, 72, 69, 66, 64, 62, 59, 57, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 31, 32, 32, 32, 30, 30, + 45, 45, 46, 47, 48, 49, 50, 50, 50, 51, 52, 53, 57, 58, 60, 62, + 65, 67, 69, 70, 70, 73, 75, 77, 79, 82, 84, 83, 83, 85, 91, 98, + 97, 94, 101, 107, 99, 100, 109, 113, 119, 110, 117, 118, 120, 121, 115, 118, + 113, 108, 110, 103, 99, 100, 99, 93, 94, 96, 88, 81, 79, 77, 79, 81, + 80, 78, 76, 74, 71, 68, 65, 63, 61, 59, 57, 56, 55, 54, 52, 53, + 52, 52, 51, 49, 49, 48, 47, 46, 45, 44, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 34, 33, 33, + 33, 33, 32, 31, 30, 29, 31, 32, 32, 32, 32, 33, 33, 33, 31, 30, + 45, 45, 46, 47, 48, 49, 50, 50, 51, 52, 53, 55, 57, 59, 63, 65, + 67, 70, 71, 73, 74, 75, 78, 79, 82, 85, 89, 91, 89, 87, 92, 96, + 101, 98, 98, 110, 106, 102, 110, 114, 124, 117, 121, 124, 124, 126, 118, 124, + 115, 116, 112, 107, 103, 107, 102, 96, 102, 97, 86, 80, 81, 82, 81, 83, + 82, 80, 78, 73, 70, 66, 63, 62, 61, 59, 58, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 44, 43, 42, 41, 41, 41, + 40, 40, 39, 39, 38, 37, 37, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 32, 31, 31, 31, 32, 34, 33, 32, 32, 34, 34, 34, 32, 31, + 45, 45, 46, 47, 49, 49, 50, 50, 51, 52, 54, 56, 58, 61, 64, 67, + 70, 73, 75, 77, 78, 79, 82, 83, 84, 89, 93, 95, 93, 93, 94, 96, + 102, 105, 102, 108, 117, 109, 109, 118, 127, 123, 125, 128, 129, 130, 122, 129, + 119, 122, 116, 109, 113, 112, 104, 105, 106, 95, 85, 82, 83, 85, 85, 86, + 84, 80, 77, 73, 70, 66, 63, 63, 61, 59, 58, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 44, 43, 42, 41, 41, 41, + 41, 40, 39, 39, 38, 37, 37, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 32, 31, 31, 31, 32, 34, 33, 32, 32, 34, 34, 34, 32, 31, + 45, 46, 47, 48, 49, 50, 51, 50, 52, 53, 56, 58, 60, 63, 68, 70, + 73, 75, 79, 81, 81, 83, 86, 87, 88, 92, 97, 100, 100, 102, 99, 97, + 102, 112, 111, 107, 122, 118, 111, 121, 131, 132, 131, 134, 135, 135, 128, 135, + 124, 129, 121, 113, 120, 114, 109, 113, 106, 93, 86, 87, 89, 90, 89, 89, + 86, 80, 76, 72, 69, 67, 64, 63, 62, 60, 59, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 44, 44, 43, 42, 42, 42, + 41, 40, 40, 40, 39, 38, 37, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 32, 31, 31, 31, 33, 34, 33, 32, 32, 34, 34, 34, 32, 31, + 46, 47, 47, 48, 50, 50, 51, 51, 52, 54, 58, 60, 62, 66, 71, 74, + 75, 78, 82, 84, 85, 86, 88, 90, 89, 93, 97, 101, 105, 107, 106, 102, + 103, 115, 121, 112, 121, 128, 119, 123, 134, 141, 137, 141, 143, 142, 136, 141, + 131, 134, 122, 119, 122, 115, 119, 116, 101, 94, 92, 94, 95, 93, 91, 89, + 85, 79, 74, 71, 69, 67, 65, 64, 63, 61, 59, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 45, 44, 44, 43, 42, 43, + 42, 41, 41, 40, 39, 38, 38, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 32, 32, 32, 32, 33, 34, 33, 32, 32, 34, 34, 34, 32, 31, + 46, 47, 48, 49, 50, 51, 52, 51, 53, 55, 59, 61, 64, 68, 74, 77, + 78, 81, 86, 88, 89, 91, 92, 94, 95, 97, 100, 103, 108, 112, 113, 111, + 107, 114, 125, 123, 123, 135, 132, 127, 138, 150, 142, 149, 152, 150, 144, 148, + 140, 137, 125, 129, 124, 124, 127, 114, 100, 98, 101, 101, 99, 95, 90, 86, + 83, 78, 73, 70, 69, 67, 65, 64, 63, 61, 60, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 45, 45, 44, 43, 43, 43, + 42, 42, 41, 41, 40, 39, 38, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 32, 32, 32, 32, 33, 34, 33, 32, 32, 34, 34, 34, 32, 31, + 47, 47, 48, 49, 50, 50, 51, 51, 52, 55, 60, 62, 65, 70, 75, 79, + 80, 83, 89, 91, 91, 94, 96, 98, 100, 101, 103, 105, 109, 113, 117, 117, + 110, 111, 124, 134, 128, 137, 142, 130, 141, 156, 147, 155, 159, 155, 150, 153, + 148, 140, 128, 137, 128, 134, 131, 112, 102, 102, 107, 105, 102, 96, 89, 84, + 81, 77, 73, 70, 68, 67, 66, 65, 63, 61, 60, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 45, 45, 44, 43, 43, 43, + 43, 42, 41, 41, 40, 39, 38, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 34, 33, 31, 32, 34, 34, 34, 32, 31, + 47, 48, 48, 49, 48, 49, 51, 51, 52, 56, 61, 65, 69, 73, 77, 80, + 78, 83, 90, 88, 89, 95, 102, 99, 102, 104, 109, 111, 108, 114, 115, 112, + 114, 117, 125, 134, 135, 128, 150, 129, 142, 160, 157, 160, 164, 156, 156, 153, + 151, 142, 137, 139, 137, 139, 125, 112, 114, 115, 113, 111, 103, 95, 88, 83, + 81, 77, 74, 71, 69, 66, 65, 65, 64, 62, 61, 58, 57, 55, 54, 51, + 51, 50, 49, 48, 47, 46, 45, 45, 46, 45, 45, 44, 44, 43, 42, 43, + 42, 42, 41, 42, 42, 42, 41, 40, 39, 38, 38, 37, 36, 35, 35, 35, + 35, 34, 34, 35, 34, 34, 32, 31, 31, 30, 32, 33, 33, 34, 32, 31, + 47, 48, 48, 49, 47, 48, 51, 51, 53, 57, 63, 66, 73, 77, 80, 82, + 79, 84, 87, 92, 97, 95, 97, 103, 104, 107, 109, 114, 116, 105, 114, 122, + 120, 127, 124, 128, 143, 129, 148, 145, 137, 167, 167, 173, 175, 166, 165, 156, + 153, 137, 148, 149, 149, 134, 115, 116, 125, 125, 116, 110, 102, 95, 88, 84, + 81, 78, 75, 72, 70, 67, 65, 64, 63, 61, 60, 58, 57, 55, 54, 52, + 51, 50, 50, 48, 47, 46, 46, 46, 46, 46, 46, 44, 44, 43, 42, 43, + 43, 42, 41, 42, 42, 42, 42, 41, 40, 39, 38, 37, 37, 36, 35, 35, + 35, 34, 34, 35, 34, 33, 31, 29, 29, 29, 31, 33, 33, 34, 32, 31, + 47, 48, 48, 49, 47, 49, 52, 52, 56, 59, 65, 69, 76, 81, 83, 88, + 90, 93, 92, 100, 101, 107, 110, 116, 113, 119, 124, 122, 121, 125, 122, 119, + 127, 145, 143, 134, 143, 144, 151, 167, 152, 177, 177, 183, 185, 179, 176, 163, + 165, 153, 163, 152, 159, 134, 121, 133, 130, 129, 119, 108, 100, 94, 89, 84, + 82, 79, 76, 73, 70, 68, 66, 64, 62, 61, 59, 57, 56, 54, 53, 53, + 53, 52, 51, 50, 49, 48, 47, 48, 47, 47, 47, 45, 45, 44, 43, 43, + 42, 41, 40, 42, 42, 42, 42, 41, 40, 39, 38, 38, 37, 36, 35, 34, + 33, 32, 32, 33, 32, 31, 30, 30, 30, 29, 31, 33, 33, 34, 32, 31, + 47, 48, 48, 49, 48, 49, 53, 54, 59, 63, 69, 72, 78, 83, 86, 91, + 94, 99, 105, 111, 111, 115, 108, 97, 90, 97, 113, 123, 131, 130, 129, 127, + 132, 148, 153, 144, 139, 156, 161, 166, 163, 177, 195, 195, 196, 192, 190, 178, + 163, 159, 168, 170, 150, 142, 138, 141, 134, 128, 119, 107, 98, 94, 90, 85, + 82, 79, 76, 72, 69, 67, 65, 64, 63, 62, 60, 58, 57, 55, 54, 55, + 55, 53, 53, 51, 51, 50, 49, 49, 48, 48, 47, 45, 45, 44, 44, 44, + 43, 42, 41, 43, 43, 43, 42, 42, 41, 40, 40, 39, 39, 38, 37, 36, + 35, 34, 33, 33, 32, 32, 31, 30, 30, 30, 31, 33, 33, 34, 32, 31, + 47, 48, 48, 49, 48, 50, 54, 56, 62, 66, 72, 75, 79, 85, 88, 95, + 99, 107, 116, 111, 97, 81, 68, 52, 44, 49, 67, 77, 98, 128, 139, 135, + 138, 128, 139, 144, 140, 156, 171, 178, 179, 176, 202, 201, 202, 200, 198, 185, + 164, 176, 174, 176, 151, 154, 156, 151, 138, 126, 114, 107, 99, 94, 91, 86, + 83, 80, 77, 72, 69, 66, 64, 66, 66, 64, 62, 61, 59, 57, 56, 57, + 56, 55, 55, 53, 52, 51, 51, 50, 49, 48, 47, 45, 45, 44, 44, 44, + 44, 43, 42, 43, 43, 43, 43, 44, 43, 42, 42, 42, 41, 40, 39, 38, + 38, 37, 36, 35, 34, 33, 32, 30, 31, 30, 31, 33, 33, 34, 32, 31, + 47, 48, 48, 49, 48, 51, 55, 57, 64, 69, 75, 77, 82, 88, 92, 101, + 112, 114, 102, 79, 53, 37, 31, 29, 25, 32, 47, 48, 53, 73, 112, 141, + 143, 66, 57, 78, 134, 156, 175, 177, 107, 84, 93, 97, 103, 99, 101, 90, + 89, 103, 82, 67, 76, 82, 89, 123, 130, 124, 111, 107, 101, 95, 90, 86, + 84, 80, 77, 74, 72, 69, 67, 67, 66, 65, 64, 62, 60, 58, 57, 57, + 57, 56, 56, 54, 53, 52, 52, 52, 51, 49, 47, 46, 46, 45, 44, 45, + 44, 43, 43, 44, 44, 44, 44, 45, 44, 43, 43, 43, 42, 41, 41, 40, + 40, 39, 38, 36, 35, 34, 33, 31, 31, 31, 32, 33, 33, 34, 32, 31, + 46, 48, 48, 50, 49, 52, 56, 59, 66, 71, 75, 78, 84, 91, 98, 108, + 114, 99, 60, 34, 35, 35, 32, 36, 37, 48, 59, 54, 51, 48, 64, 93, + 117, 34, 44, 50, 117, 163, 177, 199, 90, 66, 58, 73, 77, 76, 80, 78, + 75, 53, 49, 61, 66, 88, 92, 89, 113, 122, 112, 109, 102, 96, 91, 87, + 84, 81, 78, 77, 75, 72, 70, 69, 68, 66, 65, 63, 62, 60, 59, 59, + 58, 57, 57, 55, 54, 53, 53, 53, 52, 50, 48, 47, 46, 45, 44, 45, + 44, 43, 43, 44, 44, 44, 44, 45, 45, 44, 43, 44, 43, 42, 42, 43, + 42, 40, 39, 38, 37, 36, 34, 32, 32, 31, 32, 32, 33, 33, 32, 31, + 46, 48, 49, 50, 50, 53, 56, 61, 68, 73, 75, 80, 84, 98, 106, 114, + 94, 45, 36, 39, 41, 48, 58, 59, 58, 54, 49, 46, 51, 54, 54, 55, + 74, 47, 48, 38, 95, 178, 187, 198, 97, 75, 74, 88, 91, 95, 101, 84, + 64, 51, 60, 92, 101, 111, 106, 59, 110, 123, 115, 107, 101, 95, 91, 86, + 84, 81, 78, 77, 75, 73, 72, 72, 70, 69, 68, 65, 64, 62, 61, 62, + 62, 61, 60, 59, 58, 56, 55, 55, 54, 52, 51, 47, 46, 44, 43, 44, + 44, 44, 44, 45, 45, 46, 47, 47, 47, 47, 47, 47, 46, 45, 45, 44, + 43, 41, 40, 39, 39, 37, 35, 34, 33, 30, 31, 31, 30, 31, 32, 32, + 46, 48, 49, 51, 51, 55, 58, 63, 70, 75, 77, 82, 90, 104, 112, 99, + 56, 38, 41, 49, 58, 60, 53, 45, 55, 62, 61, 53, 49, 50, 47, 55, + 60, 69, 71, 49, 95, 178, 193, 201, 108, 73, 82, 91, 104, 94, 114, 73, + 68, 67, 83, 117, 130, 136, 121, 60, 108, 123, 114, 107, 101, 96, 93, 90, + 88, 85, 83, 81, 79, 77, 76, 76, 75, 73, 72, 68, 67, 65, 63, 63, + 63, 62, 61, 61, 60, 57, 56, 57, 55, 53, 52, 48, 47, 45, 44, 45, + 45, 45, 46, 49, 49, 51, 51, 50, 50, 50, 51, 51, 50, 49, 49, 49, + 47, 45, 44, 43, 42, 40, 37, 36, 35, 33, 33, 32, 31, 31, 32, 32, + 46, 48, 49, 51, 52, 56, 60, 66, 73, 78, 81, 88, 96, 108, 109, 69, + 49, 48, 48, 51, 52, 44, 39, 65, 88, 101, 103, 99, 76, 58, 46, 52, + 61, 73, 68, 51, 98, 180, 195, 210, 154, 108, 92, 84, 87, 75, 57, 23, + 48, 83, 111, 137, 127, 104, 92, 69, 109, 122, 114, 108, 103, 100, 98, 95, + 93, 90, 88, 85, 84, 82, 80, 80, 79, 77, 76, 73, 71, 69, 68, 67, + 66, 65, 65, 64, 63, 61, 60, 60, 58, 56, 54, 50, 49, 47, 46, 48, + 48, 49, 50, 52, 53, 55, 55, 54, 54, 54, 55, 55, 54, 53, 53, 54, + 52, 50, 48, 46, 45, 42, 40, 39, 37, 35, 34, 33, 31, 32, 31, 31, + 47, 49, 50, 52, 54, 58, 62, 69, 76, 82, 86, 94, 104, 113, 74, 33, + 36, 38, 36, 41, 41, 31, 59, 102, 117, 125, 129, 130, 126, 103, 55, 55, + 67, 87, 68, 46, 97, 176, 192, 222, 219, 181, 144, 95, 85, 69, 18, 22, + 81, 118, 136, 125, 74, 88, 99, 96, 118, 121, 116, 112, 109, 105, 103, 100, + 97, 95, 92, 89, 88, 86, 84, 82, 81, 79, 78, 75, 74, 72, 71, 71, + 70, 69, 69, 68, 67, 65, 64, 65, 62, 59, 57, 53, 51, 50, 49, 49, + 50, 52, 52, 53, 55, 57, 58, 57, 57, 57, 57, 58, 57, 56, 56, 57, + 55, 53, 51, 48, 47, 43, 41, 41, 38, 35, 35, 34, 32, 32, 31, 31, + 48, 50, 51, 53, 55, 60, 65, 72, 81, 87, 92, 99, 114, 104, 24, 25, + 36, 43, 50, 52, 38, 55, 105, 115, 120, 119, 121, 124, 134, 137, 101, 68, + 72, 78, 68, 48, 92, 173, 190, 214, 235, 237, 238, 177, 115, 56, 76, 115, + 133, 136, 140, 78, 68, 129, 137, 135, 134, 128, 123, 121, 117, 112, 110, 106, + 103, 100, 97, 94, 92, 91, 89, 87, 85, 83, 82, 80, 79, 77, 76, 76, + 76, 75, 74, 74, 73, 71, 69, 68, 67, 63, 60, 55, 54, 52, 52, 52, + 54, 56, 56, 56, 59, 61, 63, 63, 63, 63, 63, 65, 64, 63, 62, 61, + 60, 58, 56, 53, 52, 48, 44, 43, 40, 36, 36, 35, 33, 32, 31, 30, + 48, 50, 51, 53, 56, 61, 66, 73, 82, 89, 94, 105, 113, 70, 23, 52, + 60, 61, 60, 47, 43, 90, 116, 116, 120, 118, 117, 118, 126, 135, 137, 88, + 71, 74, 80, 63, 102, 180, 194, 215, 242, 249, 253, 226, 95, 58, 104, 134, + 134, 128, 125, 57, 112, 159, 156, 150, 146, 140, 132, 127, 123, 117, 114, 110, + 108, 104, 102, 99, 97, 95, 94, 91, 89, 88, 86, 83, 82, 80, 79, 79, + 79, 78, 77, 77, 75, 73, 72, 70, 67, 63, 60, 56, 54, 52, 53, 54, + 56, 57, 58, 60, 62, 65, 67, 69, 69, 69, 70, 71, 71, 69, 68, 66, + 64, 63, 62, 60, 57, 53, 49, 46, 43, 39, 37, 36, 33, 32, 31, 30, + 47, 49, 51, 54, 57, 63, 67, 75, 82, 89, 102, 111, 105, 49, 39, 65, + 64, 59, 47, 27, 61, 113, 117, 118, 122, 122, 122, 123, 133, 137, 144, 119, + 68, 86, 96, 78, 103, 188, 205, 224, 244, 249, 251, 237, 55, 99, 133, 137, + 134, 128, 113, 63, 139, 173, 169, 161, 156, 147, 136, 130, 127, 122, 117, 115, + 110, 105, 103, 102, 99, 99, 97, 89, 87, 87, 87, 86, 85, 82, 80, 81, + 81, 83, 80, 80, 76, 74, 73, 73, 68, 66, 63, 59, 57, 55, 56, 58, + 57, 58, 58, 61, 65, 71, 71, 71, 73, 75, 76, 76, 74, 73, 74, 71, + 67, 65, 67, 64, 63, 54, 53, 48, 45, 40, 37, 36, 32, 32, 31, 30, + 47, 48, 51, 54, 57, 63, 68, 77, 82, 92, 107, 119, 95, 37, 40, 63, + 55, 52, 42, 28, 83, 120, 120, 116, 121, 122, 124, 128, 134, 140, 144, 147, + 85, 82, 91, 78, 97, 191, 215, 234, 247, 250, 251, 246, 92, 126, 146, 135, + 121, 122, 116, 71, 153, 175, 168, 160, 151, 141, 132, 126, 123, 118, 113, 113, + 109, 102, 99, 99, 96, 98, 97, 83, 81, 84, 86, 87, 87, 84, 83, 87, + 85, 87, 84, 79, 82, 81, 75, 70, 71, 70, 64, 63, 61, 58, 60, 63, + 61, 59, 61, 65, 68, 75, 75, 74, 78, 82, 84, 83, 79, 75, 73, 73, + 73, 73, 70, 67, 61, 61, 59, 50, 46, 41, 37, 35, 32, 32, 32, 31, + 47, 48, 51, 54, 58, 63, 70, 79, 85, 98, 107, 115, 55, 10, 29, 56, + 52, 53, 42, 42, 103, 124, 117, 113, 116, 118, 121, 123, 129, 135, 141, 150, + 100, 83, 106, 81, 98, 194, 215, 239, 253, 252, 251, 245, 121, 124, 141, 132, + 126, 134, 124, 68, 146, 157, 144, 139, 134, 126, 121, 116, 113, 109, 106, 109, + 106, 101, 98, 95, 94, 98, 97, 89, 89, 92, 94, 91, 91, 89, 88, 88, + 84, 84, 85, 85, 81, 80, 84, 74, 76, 72, 67, 66, 63, 62, 63, 67, + 66, 64, 66, 69, 70, 76, 79, 78, 81, 84, 86, 84, 81, 77, 76, 75, + 76, 76, 70, 72, 66, 63, 58, 52, 48, 43, 38, 36, 33, 32, 32, 31, + 47, 48, 51, 54, 59, 65, 72, 80, 88, 99, 111, 88, 8, 9, 32, 52, + 59, 61, 38, 60, 116, 121, 111, 107, 110, 112, 115, 116, 121, 127, 134, 144, + 123, 94, 90, 55, 96, 189, 209, 234, 249, 250, 248, 247, 112, 87, 70, 96, + 120, 122, 121, 74, 151, 164, 156, 145, 134, 127, 121, 118, 117, 114, 111, 113, + 111, 107, 104, 101, 102, 103, 102, 96, 96, 98, 99, 100, 99, 96, 92, 87, + 87, 89, 90, 93, 90, 88, 89, 90, 83, 74, 76, 69, 67, 64, 65, 71, + 70, 69, 70, 72, 79, 84, 88, 86, 89, 92, 93, 93, 85, 82, 83, 79, + 74, 78, 76, 70, 78, 63, 60, 57, 51, 46, 40, 38, 34, 33, 32, 31, + 47, 48, 51, 54, 60, 66, 74, 82, 88, 98, 114, 67, 28, 44, 51, 64, + 60, 62, 34, 79, 119, 117, 107, 106, 107, 108, 110, 112, 119, 125, 131, 139, + 139, 95, 83, 53, 87, 178, 200, 224, 243, 251, 254, 250, 115, 86, 91, 85, + 97, 130, 130, 70, 146, 161, 157, 146, 136, 132, 130, 125, 123, 121, 120, 121, + 120, 116, 111, 109, 110, 109, 108, 112, 114, 113, 112, 112, 107, 102, 97, 94, + 96, 95, 94, 95, 97, 97, 94, 91, 89, 85, 79, 73, 70, 67, 68, 74, + 72, 74, 76, 80, 89, 91, 94, 93, 96, 99, 99, 98, 98, 92, 86, 81, + 83, 84, 81, 79, 72, 76, 67, 60, 54, 49, 42, 40, 35, 33, 32, 31, + 47, 48, 51, 54, 61, 68, 75, 84, 89, 100, 114, 59, 55, 60, 60, 73, + 65, 56, 33, 95, 119, 114, 106, 105, 105, 105, 108, 111, 117, 122, 128, 134, + 135, 62, 63, 57, 81, 172, 200, 228, 251, 254, 254, 247, 132, 117, 140, 119, + 89, 97, 105, 74, 149, 158, 145, 134, 126, 126, 127, 126, 126, 126, 124, 127, + 128, 124, 117, 116, 118, 117, 123, 126, 126, 123, 119, 118, 114, 109, 105, 100, + 101, 100, 105, 106, 92, 88, 98, 99, 93, 94, 83, 79, 75, 71, 72, 77, + 77, 79, 82, 86, 93, 96, 106, 109, 114, 117, 115, 103, 99, 98, 95, 91, + 91, 90, 99, 104, 81, 81, 69, 64, 57, 51, 44, 41, 36, 34, 32, 31, + 47, 48, 51, 54, 61, 68, 76, 86, 90, 106, 112, 62, 52, 55, 65, 78, + 79, 52, 34, 100, 117, 109, 102, 102, 104, 104, 107, 109, 112, 117, 120, 129, + 129, 48, 74, 80, 81, 174, 212, 234, 252, 254, 254, 250, 143, 150, 135, 138, + 125, 101, 76, 72, 153, 170, 163, 143, 130, 128, 128, 129, 131, 131, 129, 133, + 135, 129, 121, 125, 128, 130, 142, 161, 161, 156, 149, 124, 118, 115, 114, 112, + 112, 117, 138, 164, 166, 153, 134, 127, 96, 95, 92, 86, 80, 77, 77, 80, + 81, 84, 89, 95, 102, 114, 140, 156, 163, 167, 167, 145, 102, 92, 103, 102, + 99, 116, 144, 110, 118, 81, 76, 66, 59, 52, 45, 42, 37, 34, 32, 31, + 47, 49, 53, 56, 62, 68, 76, 86, 96, 104, 97, 47, 53, 71, 79, 85, + 82, 47, 45, 107, 117, 107, 101, 100, 100, 98, 99, 101, 106, 110, 116, 124, + 127, 114, 117, 93, 94, 184, 210, 231, 252, 248, 253, 247, 138, 139, 133, 146, + 142, 147, 140, 70, 151, 170, 160, 158, 153, 147, 140, 139, 135, 138, 150, 159, + 156, 148, 101, 132, 142, 159, 162, 138, 122, 136, 105, 108, 99, 115, 122, 124, + 129, 162, 166, 177, 194, 211, 218, 186, 130, 92, 95, 90, 84, 82, 83, 79, + 85, 94, 97, 103, 120, 126, 138, 148, 141, 142, 124, 70, 35, 100, 127, 113, + 124, 162, 139, 162, 163, 98, 72, 70, 60, 55, 46, 42, 36, 33, 32, 31, + 47, 49, 53, 57, 63, 69, 77, 86, 92, 109, 96, 59, 58, 83, 71, 63, + 42, 29, 47, 107, 110, 102, 97, 97, 95, 94, 95, 98, 103, 108, 112, 120, + 132, 133, 106, 90, 121, 184, 207, 232, 237, 240, 249, 248, 148, 133, 132, 118, + 142, 148, 141, 72, 138, 162, 159, 153, 151, 148, 148, 139, 171, 155, 153, 164, + 155, 152, 91, 130, 158, 189, 182, 136, 130, 116, 106, 109, 101, 90, 122, 135, + 166, 198, 181, 177, 206, 216, 214, 211, 177, 106, 90, 94, 89, 85, 84, 87, + 92, 96, 108, 134, 148, 156, 132, 123, 121, 131, 74, 77, 126, 180, 193, 134, + 154, 170, 143, 177, 164, 126, 60, 67, 63, 55, 48, 43, 38, 34, 32, 31, + 47, 49, 53, 57, 65, 71, 79, 88, 97, 109, 73, 52, 77, 90, 77, 74, + 59, 51, 57, 106, 104, 97, 93, 93, 93, 91, 92, 95, 100, 107, 113, 117, + 132, 155, 152, 143, 151, 185, 204, 228, 218, 234, 241, 246, 132, 117, 148, 131, + 133, 121, 126, 70, 131, 153, 154, 151, 154, 147, 152, 145, 174, 159, 160, 158, + 162, 149, 82, 150, 186, 195, 178, 187, 180, 192, 202, 198, 175, 121, 109, 155, + 168, 152, 178, 186, 208, 212, 212, 168, 156, 179, 86, 96, 96, 88, 87, 91, + 96, 103, 132, 180, 179, 180, 152, 128, 127, 128, 132, 178, 197, 200, 198, 179, + 162, 157, 151, 165, 140, 145, 53, 63, 65, 56, 50, 44, 39, 35, 34, 32, + 47, 49, 53, 57, 66, 73, 80, 90, 98, 108, 67, 70, 100, 83, 84, 75, + 67, 64, 58, 105, 101, 95, 92, 92, 92, 91, 93, 95, 99, 108, 116, 125, + 136, 146, 151, 157, 164, 183, 202, 217, 207, 232, 230, 241, 123, 118, 126, 114, + 144, 161, 147, 70, 135, 147, 145, 148, 149, 135, 147, 163, 166, 158, 167, 181, + 160, 167, 116, 181, 191, 196, 175, 186, 149, 203, 203, 205, 210, 182, 110, 189, + 182, 172, 189, 196, 212, 214, 195, 145, 175, 231, 104, 91, 102, 94, 92, 93, + 99, 120, 160, 187, 187, 184, 185, 171, 107, 81, 150, 198, 185, 164, 179, 157, + 150, 143, 134, 158, 138, 142, 42, 61, 66, 56, 50, 45, 39, 36, 34, 32, + 47, 49, 53, 57, 66, 72, 80, 89, 94, 109, 82, 93, 91, 76, 92, 70, + 84, 71, 58, 101, 100, 95, 93, 92, 92, 91, 94, 96, 100, 110, 119, 124, + 129, 141, 153, 161, 163, 178, 196, 200, 202, 227, 220, 233, 129, 142, 138, 115, + 133, 141, 143, 77, 140, 148, 139, 141, 139, 128, 144, 165, 161, 165, 176, 193, + 147, 160, 152, 199, 201, 185, 171, 187, 146, 198, 187, 203, 185, 190, 161, 212, + 194, 200, 219, 207, 201, 197, 176, 166, 234, 212, 111, 79, 105, 101, 98, 98, + 108, 143, 175, 187, 204, 188, 196, 137, 56, 74, 124, 179, 164, 131, 161, 151, + 166, 90, 89, 151, 161, 127, 40, 63, 65, 56, 49, 44, 39, 35, 34, 33, + 47, 49, 53, 57, 65, 71, 79, 88, 92, 107, 85, 79, 65, 75, 88, 58, + 77, 57, 67, 107, 100, 95, 93, 93, 90, 90, 93, 98, 106, 110, 116, 118, + 122, 136, 147, 152, 156, 171, 185, 184, 196, 213, 213, 230, 150, 139, 139, 131, + 148, 147, 145, 73, 135, 151, 141, 135, 136, 129, 137, 160, 157, 177, 183, 192, + 173, 153, 173, 193, 162, 119, 131, 190, 181, 205, 188, 169, 175, 202, 195, 199, + 192, 153, 157, 197, 201, 207, 198, 210, 197, 129, 131, 63, 106, 106, 102, 103, + 117, 156, 155, 140, 179, 175, 173, 61, 65, 110, 126, 141, 129, 130, 141, 134, + 165, 111, 80, 139, 127, 64, 37, 67, 62, 55, 47, 43, 37, 34, 33, 33, + 48, 49, 54, 58, 63, 70, 79, 88, 92, 105, 80, 69, 68, 77, 67, 54, + 107, 66, 74, 103, 100, 95, 93, 92, 89, 90, 94, 99, 107, 110, 113, 119, + 128, 137, 147, 153, 157, 164, 174, 177, 195, 197, 206, 215, 166, 155, 157, 148, + 147, 154, 153, 68, 128, 152, 146, 134, 132, 124, 120, 163, 165, 186, 181, 185, + 182, 157, 172, 148, 70, 74, 99, 169, 184, 191, 175, 182, 186, 189, 190, 189, + 102, 62, 83, 128, 181, 193, 159, 189, 154, 132, 124, 52, 105, 106, 102, 105, + 120, 153, 149, 157, 168, 147, 124, 43, 96, 129, 135, 137, 131, 152, 120, 127, + 143, 119, 75, 92, 69, 42, 63, 69, 60, 53, 45, 41, 35, 32, 32, 32, + 49, 50, 54, 58, 62, 70, 78, 87, 96, 103, 71, 75, 96, 92, 76, 90, + 116, 67, 79, 109, 103, 97, 94, 92, 91, 93, 97, 100, 101, 106, 113, 121, + 130, 138, 145, 151, 156, 156, 162, 177, 197, 178, 198, 206, 155, 163, 169, 161, + 160, 170, 161, 70, 127, 146, 145, 140, 132, 125, 125, 142, 165, 182, 180, 198, + 188, 169, 175, 79, 61, 111, 133, 151, 189, 203, 203, 199, 170, 164, 171, 126, + 47, 94, 118, 118, 131, 122, 94, 137, 151, 169, 159, 43, 104, 103, 102, 106, + 126, 155, 181, 184, 173, 141, 110, 50, 112, 128, 129, 136, 149, 162, 112, 133, + 106, 111, 61, 93, 82, 69, 72, 69, 59, 51, 43, 39, 33, 30, 30, 31, + 49, 50, 54, 58, 62, 69, 77, 87, 94, 107, 91, 96, 111, 109, 101, 120, + 113, 65, 78, 110, 106, 100, 97, 96, 95, 94, 95, 97, 99, 105, 112, 121, + 130, 134, 142, 149, 148, 147, 155, 174, 187, 171, 191, 198, 157, 160, 146, 165, + 172, 171, 170, 73, 126, 143, 142, 144, 136, 126, 131, 153, 178, 182, 175, 194, + 195, 184, 132, 51, 103, 128, 144, 151, 205, 220, 217, 218, 180, 197, 183, 63, + 75, 125, 130, 133, 160, 174, 177, 195, 182, 199, 175, 39, 102, 103, 103, 108, + 144, 174, 178, 172, 175, 155, 120, 48, 122, 124, 131, 140, 148, 147, 104, 128, + 131, 127, 48, 86, 90, 80, 74, 67, 58, 50, 42, 38, 33, 30, 30, 31, + 48, 50, 53, 57, 61, 69, 76, 86, 91, 110, 110, 114, 111, 110, 108, 123, + 97, 57, 76, 112, 108, 103, 100, 98, 95, 93, 92, 94, 98, 104, 111, 118, + 126, 132, 138, 143, 139, 140, 152, 172, 174, 165, 186, 190, 161, 160, 174, 174, + 176, 169, 181, 71, 124, 141, 139, 141, 135, 128, 133, 156, 180, 176, 183, 212, + 210, 161, 71, 70, 126, 130, 139, 154, 202, 213, 223, 221, 183, 196, 183, 48, + 106, 135, 132, 129, 177, 212, 210, 217, 211, 194, 166, 36, 102, 105, 106, 116, + 152, 167, 158, 143, 170, 164, 128, 56, 121, 129, 134, 141, 130, 128, 124, 137, + 147, 133, 43, 82, 93, 79, 71, 65, 56, 49, 42, 37, 32, 30, 30, 31, + 47, 49, 53, 57, 61, 68, 76, 86, 96, 108, 105, 100, 97, 99, 100, 104, + 95, 64, 78, 115, 111, 105, 101, 98, 90, 90, 91, 93, 98, 104, 111, 116, + 123, 131, 133, 133, 133, 138, 151, 168, 162, 163, 181, 192, 156, 167, 189, 163, + 189, 186, 179, 67, 123, 139, 136, 135, 133, 130, 133, 149, 169, 174, 199, 210, + 178, 80, 39, 91, 130, 143, 132, 151, 197, 216, 223, 199, 168, 181, 146, 57, + 123, 135, 139, 145, 158, 182, 166, 189, 189, 166, 146, 35, 103, 108, 107, 115, + 143, 153, 167, 161, 172, 153, 117, 59, 122, 127, 133, 136, 134, 146, 154, 150, + 137, 110, 42, 80, 88, 75, 68, 63, 54, 47, 40, 37, 33, 31, 30, 30, + 47, 49, 52, 56, 60, 67, 75, 85, 94, 108, 106, 101, 100, 100, 111, 108, + 113, 81, 81, 117, 114, 106, 100, 96, 89, 90, 91, 95, 99, 105, 112, 116, + 121, 129, 127, 127, 131, 139, 151, 162, 153, 162, 174, 187, 136, 157, 145, 150, + 186, 165, 160, 73, 124, 138, 134, 133, 132, 131, 136, 155, 176, 189, 201, 171, + 84, 99, 63, 100, 136, 137, 136, 142, 161, 186, 197, 160, 148, 190, 130, 68, + 133, 134, 136, 137, 153, 182, 159, 203, 175, 164, 134, 37, 106, 110, 109, 115, + 129, 141, 166, 155, 158, 146, 120, 54, 127, 123, 134, 141, 149, 150, 142, 138, + 122, 121, 43, 80, 86, 75, 69, 60, 52, 46, 40, 36, 33, 31, 30, 30, + 47, 49, 52, 56, 60, 67, 75, 85, 91, 108, 106, 101, 98, 94, 119, 118, + 121, 88, 77, 118, 114, 105, 98, 96, 94, 93, 93, 96, 100, 106, 113, 117, + 120, 124, 123, 126, 130, 140, 150, 156, 147, 161, 167, 179, 138, 163, 163, 154, + 153, 130, 137, 66, 125, 138, 134, 132, 128, 127, 136, 155, 181, 198, 180, 129, + 119, 203, 75, 107, 134, 131, 137, 141, 156, 180, 169, 146, 152, 194, 133, 74, + 136, 129, 133, 139, 142, 170, 170, 193, 164, 155, 119, 39, 109, 112, 109, 118, + 126, 147, 167, 153, 165, 153, 130, 63, 122, 129, 135, 144, 149, 135, 129, 133, + 125, 103, 38, 79, 85, 73, 65, 59, 51, 45, 40, 36, 32, 31, 30, 30, + 48, 49, 51, 54, 60, 66, 74, 84, 93, 108, 103, 89, 88, 96, 122, 124, + 124, 104, 69, 118, 114, 104, 98, 96, 95, 94, 96, 98, 102, 106, 115, 118, + 119, 118, 119, 128, 130, 142, 152, 148, 144, 159, 162, 175, 176, 181, 188, 176, + 160, 155, 156, 61, 124, 136, 133, 133, 126, 122, 133, 156, 187, 170, 124, 143, + 216, 235, 74, 102, 127, 128, 133, 144, 181, 180, 149, 154, 170, 191, 135, 74, + 131, 127, 129, 132, 135, 159, 152, 175, 152, 137, 113, 39, 110, 114, 111, 117, + 130, 159, 170, 160, 176, 166, 146, 75, 115, 132, 135, 142, 144, 119, 135, 142, + 140, 75, 45, 81, 83, 71, 62, 58, 49, 44, 39, 35, 33, 32, 30, 30, + 49, 49, 51, 53, 59, 66, 73, 83, 92, 108, 104, 89, 94, 109, 118, 130, + 126, 107, 69, 114, 113, 104, 100, 99, 97, 96, 98, 100, 103, 108, 115, 117, + 115, 115, 123, 132, 136, 146, 145, 141, 144, 158, 159, 177, 190, 170, 180, 186, + 187, 195, 160, 64, 123, 136, 133, 133, 126, 122, 130, 146, 161, 124, 174, 220, + 237, 194, 56, 101, 124, 124, 131, 142, 171, 162, 160, 183, 185, 184, 100, 73, + 128, 127, 125, 134, 145, 164, 171, 169, 140, 135, 134, 40, 111, 116, 112, 117, + 127, 147, 151, 149, 153, 146, 132, 76, 102, 137, 149, 146, 145, 125, 142, 143, + 127, 50, 48, 82, 80, 69, 62, 57, 49, 43, 37, 35, 34, 32, 30, 30, + 48, 48, 50, 53, 59, 65, 72, 82, 90, 105, 107, 95, 104, 120, 110, 139, + 141, 122, 68, 107, 114, 106, 103, 104, 100, 100, 101, 103, 105, 111, 116, 114, + 109, 116, 128, 131, 145, 151, 142, 139, 147, 156, 153, 173, 143, 166, 130, 171, + 191, 156, 124, 69, 123, 138, 133, 131, 127, 124, 130, 132, 116, 184, 239, 232, + 201, 166, 58, 99, 124, 124, 131, 142, 163, 188, 173, 194, 188, 182, 98, 73, + 128, 126, 125, 133, 157, 159, 182, 171, 144, 144, 149, 41, 113, 118, 115, 118, + 121, 126, 124, 140, 135, 134, 132, 116, 105, 128, 141, 136, 140, 131, 125, 120, + 74, 29, 65, 83, 76, 68, 62, 56, 48, 43, 37, 36, 34, 32, 30, 30, + 47, 48, 49, 52, 57, 64, 71, 81, 90, 105, 112, 106, 107, 125, 116, 152, + 158, 138, 69, 103, 118, 110, 104, 105, 102, 101, 103, 105, 108, 114, 116, 110, + 109, 120, 127, 139, 143, 144, 144, 138, 149, 153, 150, 167, 70, 83, 126, 190, + 158, 100, 142, 72, 122, 139, 133, 130, 127, 125, 129, 126, 181, 244, 236, 208, + 205, 194, 71, 98, 125, 125, 131, 135, 148, 205, 166, 187, 176, 176, 108, 72, + 127, 126, 126, 128, 160, 155, 168, 169, 156, 152, 143, 42, 114, 120, 115, 119, + 121, 122, 118, 131, 131, 142, 144, 146, 125, 125, 128, 111, 118, 125, 113, 90, + 38, 44, 82, 83, 72, 67, 61, 54, 47, 42, 36, 35, 34, 31, 30, 30, + 47, 47, 49, 52, 56, 62, 69, 80, 91, 104, 116, 115, 116, 132, 127, 158, + 148, 118, 76, 90, 118, 114, 106, 106, 104, 104, 106, 108, 112, 116, 117, 111, + 114, 119, 135, 168, 152, 133, 139, 134, 150, 149, 147, 166, 133, 115, 130, 131, + 78, 127, 186, 72, 121, 139, 134, 131, 127, 124, 130, 156, 225, 213, 202, 208, + 200, 215, 68, 100, 125, 126, 132, 131, 156, 196, 152, 185, 180, 182, 112, 71, + 127, 127, 126, 131, 158, 164, 167, 171, 160, 156, 147, 41, 114, 121, 116, 118, + 124, 128, 127, 123, 124, 133, 136, 153, 136, 123, 120, 109, 127, 121, 91, 57, + 39, 72, 85, 81, 70, 66, 59, 52, 46, 41, 37, 36, 33, 31, 30, 30, + 47, 47, 49, 51, 55, 62, 69, 79, 89, 100, 117, 120, 123, 138, 133, 158, + 136, 109, 97, 76, 114, 117, 108, 109, 109, 109, 111, 113, 115, 116, 116, 114, + 117, 122, 150, 192, 173, 129, 124, 135, 150, 144, 146, 168, 167, 193, 160, 124, + 121, 209, 192, 65, 121, 137, 135, 133, 127, 123, 130, 167, 217, 171, 163, 191, + 173, 218, 67, 101, 126, 126, 132, 141, 187, 190, 143, 168, 176, 179, 120, 72, + 127, 127, 127, 136, 146, 164, 173, 171, 158, 154, 151, 40, 113, 120, 115, 115, + 123, 130, 136, 128, 125, 129, 138, 158, 126, 108, 113, 126, 140, 96, 53, 46, + 68, 91, 85, 79, 69, 66, 58, 51, 45, 40, 36, 35, 33, 31, 30, 30, + 46, 47, 49, 51, 55, 62, 69, 79, 87, 97, 113, 118, 117, 137, 134, 159, + 153, 152, 137, 82, 112, 119, 111, 111, 113, 113, 114, 116, 115, 113, 114, 116, + 120, 134, 160, 186, 181, 121, 102, 133, 147, 140, 148, 160, 190, 195, 195, 200, + 211, 228, 210, 73, 122, 136, 135, 134, 127, 124, 133, 164, 190, 193, 208, 165, + 215, 220, 66, 103, 129, 128, 132, 142, 167, 165, 151, 158, 146, 133, 77, 71, + 127, 127, 126, 135, 124, 143, 167, 167, 160, 152, 144, 40, 112, 120, 115, 113, + 122, 130, 140, 134, 133, 140, 149, 135, 99, 105, 125, 122, 89, 49, 56, 81, + 103, 91, 85, 77, 69, 68, 57, 49, 44, 40, 35, 35, 33, 30, 30, 30, + 45, 49, 50, 53, 56, 62, 69, 79, 85, 93, 101, 111, 122, 135, 132, 150, + 165, 152, 150, 97, 107, 121, 114, 109, 114, 112, 117, 113, 117, 112, 115, 117, + 129, 149, 159, 150, 180, 88, 78, 132, 141, 138, 146, 159, 194, 191, 205, 214, + 219, 231, 218, 74, 120, 135, 132, 130, 128, 132, 139, 162, 179, 193, 226, 215, + 200, 186, 69, 107, 135, 129, 129, 133, 123, 143, 174, 189, 195, 172, 103, 69, + 122, 127, 123, 134, 106, 97, 113, 143, 156, 155, 139, 44, 119, 122, 117, 115, + 126, 136, 137, 118, 143, 143, 112, 67, 69, 72, 61, 60, 65, 78, 96, 104, + 101, 91, 83, 77, 73, 69, 60, 48, 41, 38, 34, 33, 30, 29, 30, 30, + 45, 48, 50, 53, 56, 62, 69, 77, 83, 89, 95, 107, 114, 121, 135, 144, + 151, 137, 141, 134, 93, 120, 115, 115, 117, 117, 119, 114, 113, 111, 114, 125, + 143, 182, 165, 175, 148, 51, 91, 132, 142, 141, 150, 161, 194, 178, 192, 213, + 195, 220, 189, 75, 118, 136, 135, 134, 129, 129, 139, 165, 198, 204, 191, 183, + 159, 157, 56, 108, 135, 130, 125, 134, 153, 189, 189, 190, 195, 175, 104, 64, + 121, 127, 126, 134, 142, 144, 120, 114, 127, 130, 120, 42, 113, 123, 115, 121, + 129, 130, 121, 127, 146, 138, 65, 57, 108, 115, 110, 113, 113, 112, 116, 114, + 103, 90, 84, 77, 73, 68, 59, 48, 42, 37, 33, 32, 29, 28, 30, 30, + 46, 48, 49, 52, 55, 60, 66, 73, 79, 86, 91, 101, 108, 116, 137, 130, + 126, 126, 158, 151, 112, 107, 126, 115, 119, 116, 117, 119, 115, 113, 114, 132, + 173, 191, 173, 173, 99, 55, 111, 138, 144, 141, 152, 169, 187, 180, 200, 199, + 185, 201, 153, 90, 109, 142, 133, 129, 130, 132, 136, 166, 202, 202, 164, 120, + 150, 152, 56, 111, 134, 128, 126, 141, 178, 200, 171, 181, 181, 166, 98, 69, + 120, 119, 125, 128, 147, 155, 160, 154, 126, 115, 120, 39, 115, 119, 115, 117, + 126, 122, 114, 118, 130, 133, 91, 91, 145, 142, 143, 141, 138, 129, 124, 120, + 108, 94, 87, 79, 73, 67, 59, 50, 43, 38, 33, 32, 29, 28, 30, 30, + 46, 48, 48, 50, 54, 58, 63, 69, 77, 83, 89, 98, 109, 126, 153, 155, + 156, 149, 164, 162, 136, 117, 115, 123, 123, 123, 121, 121, 116, 123, 131, 164, + 187, 186, 179, 153, 57, 84, 119, 141, 148, 142, 156, 174, 183, 189, 205, 196, + 189, 211, 187, 134, 100, 135, 135, 132, 131, 133, 134, 155, 189, 180, 197, 172, + 120, 131, 68, 99, 135, 130, 126, 144, 181, 178, 161, 180, 173, 163, 110, 67, + 118, 119, 123, 131, 152, 125, 155, 155, 160, 154, 139, 56, 107, 119, 119, 122, + 128, 116, 122, 123, 114, 111, 112, 92, 116, 120, 138, 143, 140, 137, 132, 124, + 115, 102, 91, 83, 75, 67, 59, 51, 44, 38, 34, 32, 29, 28, 30, 30, + 46, 47, 47, 49, 52, 56, 59, 65, 74, 81, 87, 93, 101, 111, 134, 156, + 166, 167, 168, 160, 148, 150, 114, 126, 120, 126, 120, 117, 123, 138, 155, 185, + 193, 185, 164, 87, 62, 103, 122, 138, 149, 149, 165, 174, 190, 193, 194, 192, + 192, 204, 200, 192, 136, 132, 138, 130, 131, 133, 140, 162, 176, 178, 200, 195, + 119, 123, 98, 97, 129, 131, 129, 163, 180, 161, 166, 179, 170, 166, 124, 61, + 115, 125, 121, 127, 147, 102, 160, 150, 152, 150, 146, 93, 92, 119, 115, 116, + 126, 104, 119, 101, 111, 111, 115, 88, 58, 85, 122, 110, 110, 118, 121, 122, + 120, 110, 97, 88, 77, 68, 60, 53, 45, 39, 34, 32, 29, 28, 30, 30, + 46, 47, 47, 48, 51, 54, 57, 62, 71, 77, 82, 89, 101, 108, 115, 134, + 132, 158, 176, 136, 128, 140, 133, 146, 127, 116, 121, 141, 174, 169, 136, 138, + 174, 170, 109, 50, 94, 112, 121, 138, 167, 181, 199, 194, 195, 195, 201, 207, + 201, 201, 192, 179, 187, 200, 185, 111, 128, 151, 158, 175, 178, 171, 169, 184, + 194, 190, 174, 138, 116, 123, 153, 183, 163, 152, 158, 171, 166, 156, 108, 88, + 114, 111, 110, 105, 113, 91, 163, 124, 142, 144, 135, 118, 112, 106, 106, 119, + 129, 81, 100, 98, 125, 118, 91, 70, 87, 116, 102, 73, 75, 83, 87, 96, + 103, 106, 103, 92, 81, 69, 61, 54, 46, 39, 34, 32, 29, 28, 30, 30, + 46, 47, 46, 47, 50, 52, 56, 60, 68, 74, 79, 84, 88, 101, 108, 119, + 125, 155, 157, 131, 104, 108, 127, 152, 149, 138, 147, 186, 195, 156, 145, 175, + 168, 132, 63, 84, 107, 113, 116, 131, 171, 192, 203, 195, 189, 195, 209, 210, + 198, 204, 188, 177, 200, 193, 178, 85, 125, 179, 177, 175, 182, 159, 179, 196, + 179, 179, 174, 160, 106, 114, 170, 170, 139, 150, 159, 168, 163, 144, 118, 124, + 107, 88, 91, 96, 101, 106, 155, 138, 139, 134, 127, 128, 129, 92, 94, 115, + 119, 64, 70, 79, 103, 109, 97, 97, 113, 117, 91, 78, 83, 88, 83, 82, + 86, 94, 102, 95, 81, 72, 61, 56, 47, 40, 35, 33, 30, 29, 30, 30, + 46, 46, 45, 46, 49, 50, 55, 58, 65, 72, 77, 83, 89, 94, 103, 110, + 113, 150, 140, 151, 157, 158, 175, 176, 186, 170, 177, 220, 203, 194, 190, 212, + 169, 73, 71, 111, 113, 110, 114, 131, 177, 191, 197, 182, 181, 192, 202, 197, + 201, 196, 176, 187, 206, 186, 162, 72, 129, 189, 177, 169, 174, 174, 192, 187, + 158, 155, 161, 160, 94, 101, 164, 144, 135, 155, 160, 162, 161, 137, 155, 103, + 86, 70, 71, 55, 70, 120, 156, 141, 137, 132, 129, 132, 119, 77, 73, 116, + 124, 100, 97, 116, 115, 118, 105, 105, 127, 116, 104, 98, 105, 104, 95, 90, + 81, 75, 80, 91, 84, 75, 62, 58, 49, 42, 37, 34, 31, 29, 30, 30, + 45, 46, 45, 45, 49, 50, 54, 57, 62, 68, 73, 80, 86, 90, 97, 105, + 110, 113, 124, 157, 171, 181, 193, 196, 214, 138, 198, 216, 175, 191, 187, 155, + 79, 72, 108, 113, 111, 109, 113, 126, 159, 161, 162, 160, 166, 178, 190, 191, + 193, 187, 183, 195, 204, 181, 173, 70, 121, 143, 123, 141, 161, 171, 184, 177, + 161, 159, 153, 135, 78, 102, 161, 153, 155, 162, 140, 117, 102, 54, 60, 66, + 93, 62, 111, 123, 125, 158, 154, 138, 135, 130, 127, 131, 118, 81, 77, 115, + 127, 116, 108, 118, 125, 130, 91, 102, 126, 100, 96, 91, 94, 86, 80, 81, + 76, 71, 60, 77, 88, 75, 64, 60, 51, 44, 38, 35, 31, 29, 30, 30, + 44, 45, 44, 45, 47, 48, 52, 54, 60, 65, 70, 77, 82, 86, 92, 98, + 103, 107, 111, 123, 160, 161, 179, 196, 180, 164, 213, 191, 140, 132, 77, 51, + 81, 105, 114, 114, 106, 109, 113, 120, 135, 115, 104, 104, 107, 111, 117, 119, + 112, 102, 102, 111, 116, 105, 108, 71, 118, 112, 86, 83, 90, 97, 99, 102, + 97, 94, 83, 78, 64, 99, 132, 105, 90, 80, 61, 48, 53, 48, 66, 83, + 70, 81, 127, 108, 85, 94, 81, 78, 76, 75, 74, 82, 69, 58, 76, 110, + 127, 123, 101, 106, 120, 101, 88, 117, 102, 72, 78, 83, 87, 80, 76, 69, + 71, 71, 56, 57, 82, 78, 68, 62, 53, 47, 39, 35, 32, 30, 30, 30, + 44, 44, 43, 44, 46, 47, 50, 52, 57, 64, 68, 74, 79, 83, 89, 93, + 99, 103, 107, 101, 92, 94, 120, 128, 105, 148, 143, 91, 79, 54, 66, 105, + 112, 115, 111, 103, 102, 107, 112, 115, 117, 98, 90, 94, 94, 92, 95, 106, + 103, 94, 92, 97, 98, 100, 96, 97, 115, 111, 96, 91, 92, 92, 91, 90, + 89, 92, 91, 86, 86, 98, 103, 94, 86, 83, 84, 84, 83, 77, 83, 79, + 76, 91, 98, 85, 74, 80, 80, 77, 80, 83, 85, 85, 83, 84, 101, 108, + 121, 131, 114, 98, 93, 72, 101, 98, 77, 78, 80, 83, 86, 82, 80, 72, + 68, 61, 55, 41, 66, 82, 71, 63, 54, 47, 40, 36, 32, 31, 31, 31, + 44, 44, 43, 44, 46, 46, 48, 50, 55, 61, 65, 71, 75, 79, 85, 88, + 91, 95, 105, 113, 111, 102, 93, 81, 75, 70, 70, 69, 81, 85, 94, 107, + 107, 107, 102, 97, 98, 105, 109, 110, 108, 104, 107, 112, 114, 112, 117, 123, + 115, 109, 107, 108, 108, 112, 102, 106, 104, 109, 106, 104, 104, 103, 104, 105, + 102, 99, 100, 99, 97, 96, 97, 100, 102, 102, 101, 98, 100, 94, 97, 87, + 93, 91, 97, 92, 92, 91, 88, 84, 88, 92, 95, 93, 100, 98, 101, 109, + 116, 133, 131, 113, 80, 95, 98, 78, 75, 87, 77, 81, 80, 78, 73, 66, + 62, 60, 59, 34, 54, 81, 72, 63, 54, 47, 40, 36, 33, 31, 32, 32, + 43, 43, 43, 44, 46, 45, 48, 50, 53, 59, 62, 67, 71, 76, 81, 83, + 85, 94, 97, 103, 104, 106, 102, 99, 103, 100, 97, 98, 92, 95, 106, 104, + 104, 98, 99, 94, 95, 104, 107, 107, 101, 105, 110, 111, 114, 109, 113, 123, + 115, 105, 103, 104, 107, 108, 103, 102, 101, 101, 102, 104, 103, 102, 102, 102, + 101, 97, 97, 96, 91, 91, 89, 97, 102, 99, 97, 98, 98, 94, 92, 87, + 85, 86, 86, 87, 84, 86, 84, 84, 86, 89, 92, 91, 97, 96, 100, 105, + 115, 121, 110, 99, 93, 92, 76, 71, 78, 80, 67, 72, 71, 73, 68, 62, + 62, 67, 61, 34, 48, 76, 73, 63, 54, 47, 40, 37, 33, 31, 32, 32, + 43, 44, 44, 45, 44, 46, 49, 51, 51, 56, 60, 63, 68, 72, 78, 80, + 85, 90, 93, 97, 99, 99, 98, 99, 102, 98, 99, 98, 98, 103, 104, 100, + 99, 96, 93, 91, 93, 99, 101, 100, 98, 100, 105, 106, 107, 106, 109, 118, + 111, 101, 97, 99, 102, 103, 100, 100, 100, 99, 99, 99, 99, 98, 97, 96, + 94, 93, 92, 92, 90, 90, 88, 92, 93, 92, 91, 91, 91, 90, 89, 85, + 85, 82, 82, 83, 82, 82, 82, 83, 83, 86, 87, 89, 93, 95, 101, 107, + 110, 80, 80, 93, 98, 82, 102, 94, 84, 69, 59, 56, 61, 61, 56, 60, + 58, 62, 49, 37, 40, 74, 70, 64, 54, 47, 40, 37, 33, 31, 32, 31, + 43, 44, 45, 45, 45, 48, 50, 52, 52, 54, 59, 61, 64, 68, 73, 77, + 81, 85, 89, 90, 92, 93, 93, 94, 94, 94, 93, 93, 96, 101, 101, 98, + 96, 92, 89, 88, 91, 94, 96, 95, 94, 96, 101, 103, 104, 103, 105, 113, + 108, 98, 94, 95, 98, 100, 97, 98, 99, 98, 97, 97, 96, 95, 94, 92, + 90, 90, 89, 88, 88, 86, 86, 86, 85, 84, 84, 85, 85, 84, 83, 83, + 82, 81, 81, 81, 81, 81, 81, 83, 82, 84, 85, 87, 91, 94, 101, 103, + 99, 84, 98, 96, 71, 60, 115, 125, 116, 106, 100, 92, 83, 67, 52, 52, + 62, 58, 46, 29, 30, 72, 72, 64, 55, 47, 40, 37, 33, 31, 32, 31, + 43, 44, 45, 46, 46, 47, 50, 51, 51, 53, 57, 59, 60, 64, 68, 72, + 74, 78, 81, 82, 85, 86, 87, 88, 87, 87, 88, 88, 91, 95, 94, 92, + 90, 87, 84, 83, 86, 89, 91, 90, 89, 91, 96, 98, 99, 97, 100, 106, + 102, 94, 90, 90, 92, 94, 93, 93, 93, 92, 91, 91, 90, 90, 88, 86, + 85, 84, 83, 82, 81, 80, 80, 79, 78, 77, 76, 79, 78, 77, 77, 77, + 77, 76, 75, 75, 75, 75, 75, 77, 77, 78, 81, 83, 87, 91, 99, 96, + 78, 76, 87, 77, 46, 47, 117, 130, 128, 126, 126, 121, 115, 105, 90, 52, + 54, 47, 33, 22, 32, 71, 71, 64, 53, 46, 39, 36, 32, 31, 32, 31, + 43, 44, 45, 46, 46, 47, 49, 50, 49, 51, 55, 56, 59, 61, 66, 68, + 70, 73, 76, 77, 80, 82, 84, 84, 83, 83, 84, 85, 88, 90, 89, 87, + 86, 84, 81, 81, 84, 87, 88, 86, 85, 87, 91, 93, 94, 92, 94, 101, + 98, 91, 86, 85, 88, 90, 89, 89, 89, 88, 88, 87, 87, 86, 85, 82, + 81, 80, 79, 77, 77, 76, 75, 73, 73, 72, 71, 73, 73, 72, 71, 73, + 73, 72, 72, 72, 72, 72, 72, 72, 73, 75, 77, 80, 85, 89, 99, 94, + 68, 61, 55, 64, 46, 52, 115, 117, 118, 121, 123, 124, 125, 124, 122, 62, + 34, 26, 24, 27, 41, 71, 68, 63, 52, 45, 38, 36, 32, 30, 31, 30, + 43, 44, 45, 46, 46, 47, 48, 49, 48, 50, 52, 54, 57, 59, 63, 64, + 67, 70, 72, 73, 75, 77, 80, 80, 78, 79, 81, 83, 86, 86, 84, 83, + 82, 81, 79, 79, 82, 85, 85, 83, 81, 82, 85, 88, 90, 87, 88, 95, + 93, 87, 83, 81, 84, 86, 86, 84, 86, 85, 84, 84, 83, 82, 81, 78, + 77, 76, 75, 73, 72, 72, 71, 69, 69, 68, 67, 68, 68, 67, 67, 69, + 69, 68, 67, 67, 67, 67, 67, 68, 69, 72, 75, 77, 82, 88, 98, 91, + 71, 62, 50, 75, 55, 61, 118, 113, 113, 115, 118, 120, 120, 120, 125, 78, + 32, 22, 47, 36, 43, 70, 69, 61, 51, 43, 37, 35, 31, 30, 30, 29, + 43, 44, 45, 46, 46, 47, 47, 48, 48, 49, 51, 52, 54, 56, 58, 60, + 63, 65, 66, 67, 69, 71, 74, 75, 73, 75, 77, 80, 83, 81, 79, 78, + 77, 75, 74, 75, 78, 80, 80, 78, 77, 78, 80, 83, 85, 82, 83, 89, + 88, 84, 78, 75, 78, 81, 81, 80, 80, 79, 78, 78, 78, 77, 76, 74, + 72, 72, 71, 69, 68, 67, 66, 66, 66, 65, 64, 63, 63, 62, 62, 64, + 63, 62, 62, 61, 61, 61, 61, 62, 64, 67, 70, 73, 79, 85, 95, 90, + 75, 68, 65, 85, 59, 62, 118, 112, 111, 112, 113, 115, 118, 121, 123, 72, + 40, 45, 65, 33, 46, 70, 69, 61, 51, 43, 37, 34, 31, 29, 30, 29, + 42, 43, 44, 45, 45, 46, 46, 47, 48, 49, 50, 51, 51, 53, 55, 56, + 59, 61, 62, 63, 64, 67, 69, 70, 69, 71, 74, 77, 80, 77, 75, 73, + 72, 70, 69, 71, 74, 75, 75, 75, 73, 74, 76, 79, 80, 77, 78, 83, + 84, 80, 74, 71, 74, 77, 77, 76, 75, 74, 73, 73, 73, 72, 71, 70, + 69, 68, 67, 65, 64, 63, 62, 63, 62, 61, 61, 59, 59, 58, 57, 59, + 60, 59, 58, 58, 58, 58, 59, 60, 60, 63, 67, 70, 75, 82, 93, 94, + 73, 62, 69, 75, 57, 60, 113, 115, 113, 113, 115, 114, 116, 119, 106, 38, + 33, 60, 49, 24, 59, 73, 62, 59, 50, 42, 36, 34, 31, 29, 30, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 49, 49, 50, 51, 52, 53, 55, 55, + 55, 57, 59, 61, 64, 65, 67, 68, 67, 69, 73, 77, 77, 75, 73, 71, + 68, 66, 67, 69, 72, 73, 72, 72, 74, 76, 78, 78, 76, 75, 76, 81, + 82, 79, 73, 71, 72, 74, 75, 75, 74, 72, 70, 70, 70, 69, 68, 66, + 66, 65, 64, 64, 63, 62, 61, 59, 58, 57, 57, 56, 56, 55, 54, 57, + 57, 57, 57, 57, 56, 56, 57, 58, 59, 61, 63, 67, 74, 80, 91, 98, + 73, 52, 66, 62, 52, 50, 95, 113, 117, 119, 121, 122, 122, 112, 68, 27, + 46, 57, 35, 36, 71, 73, 61, 56, 48, 43, 37, 34, 32, 30, 28, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 49, 50, 51, 51, 51, 51, 53, 54, + 54, 55, 57, 58, 60, 61, 63, 64, 65, 67, 71, 74, 73, 72, 70, 68, + 67, 66, 67, 68, 69, 71, 70, 68, 69, 71, 73, 73, 71, 70, 71, 76, + 78, 75, 70, 67, 68, 69, 71, 72, 72, 70, 68, 67, 66, 65, 65, 64, + 65, 64, 63, 61, 60, 59, 58, 58, 57, 56, 56, 55, 55, 54, 53, 55, + 55, 55, 55, 54, 54, 54, 54, 54, 55, 57, 60, 65, 71, 77, 88, 96, + 72, 43, 57, 47, 43, 37, 63, 99, 120, 123, 118, 116, 92, 63, 45, 37, + 57, 45, 21, 51, 75, 66, 62, 55, 47, 42, 36, 33, 31, 30, 28, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 49, 50, 51, 50, 49, 49, 51, 51, + 51, 52, 54, 56, 57, 58, 60, 62, 64, 66, 69, 71, 69, 68, 66, 66, + 65, 65, 66, 67, 68, 69, 68, 66, 65, 67, 69, 69, 67, 66, 67, 72, + 74, 71, 66, 64, 64, 66, 67, 69, 69, 67, 65, 64, 63, 62, 61, 62, + 62, 61, 60, 58, 57, 56, 56, 55, 55, 54, 53, 53, 52, 51, 50, 51, + 52, 52, 52, 51, 51, 51, 51, 52, 52, 54, 56, 62, 68, 74, 82, 89, + 81, 48, 40, 39, 41, 39, 42, 54, 68, 70, 69, 68, 48, 32, 41, 54, + 54, 28, 37, 67, 76, 61, 61, 52, 45, 40, 35, 32, 31, 30, 28, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 50, 51, 50, 50, 48, 48, 48, 49, + 48, 50, 51, 53, 55, 57, 58, 60, 63, 66, 69, 69, 67, 66, 65, 64, + 62, 62, 64, 66, 67, 68, 67, 65, 64, 66, 68, 68, 66, 65, 66, 70, + 73, 71, 67, 64, 64, 65, 67, 66, 65, 63, 62, 61, 61, 60, 60, 60, + 60, 59, 59, 58, 57, 56, 55, 54, 53, 52, 51, 51, 50, 49, 49, 50, + 50, 50, 50, 49, 49, 49, 49, 51, 51, 53, 55, 61, 66, 72, 79, 82, + 90, 70, 43, 38, 38, 46, 45, 53, 52, 50, 50, 43, 44, 47, 56, 57, + 37, 28, 60, 75, 72, 59, 55, 49, 43, 39, 34, 31, 30, 30, 28, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 52, 51, 49, 49, 49, 48, 48, 47, + 47, 48, 50, 51, 54, 55, 57, 58, 61, 65, 66, 65, 64, 64, 64, 63, + 58, 59, 62, 64, 65, 66, 66, 63, 63, 65, 66, 66, 65, 63, 65, 69, + 72, 70, 66, 63, 62, 64, 66, 65, 63, 62, 60, 60, 60, 59, 58, 59, + 58, 58, 57, 56, 56, 55, 54, 52, 51, 50, 49, 49, 48, 47, 47, 48, + 49, 49, 49, 47, 47, 47, 47, 50, 50, 52, 55, 58, 64, 68, 75, 77, + 84, 90, 75, 50, 42, 50, 48, 54, 55, 50, 52, 52, 42, 44, 51, 36, + 36, 64, 77, 73, 65, 57, 50, 46, 40, 37, 33, 30, 29, 30, 28, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 51, 51, 49, 49, 50, 49, 48, 48, + 47, 49, 51, 52, 52, 54, 55, 56, 58, 62, 62, 61, 61, 61, 62, 60, + 57, 58, 61, 62, 63, 64, 63, 61, 61, 63, 64, 64, 63, 61, 63, 67, + 70, 68, 65, 61, 61, 62, 64, 64, 63, 61, 60, 59, 58, 58, 57, 58, + 58, 57, 57, 55, 54, 53, 53, 51, 51, 50, 49, 49, 48, 47, 47, 48, + 48, 48, 48, 47, 47, 47, 47, 47, 48, 50, 52, 55, 60, 64, 70, 69, + 78, 89, 92, 81, 63, 59, 49, 50, 47, 43, 44, 40, 46, 40, 43, 54, + 69, 81, 79, 69, 61, 54, 49, 45, 40, 37, 32, 29, 29, 30, 28, 29, + 42, 42, 43, 44, 45, 45, 46, 47, 48, 48, 47, 48, 48, 48, 48, 48, + 48, 49, 50, 51, 52, 52, 54, 55, 56, 58, 58, 57, 57, 57, 58, 57, + 56, 57, 59, 61, 61, 62, 61, 60, 60, 61, 62, 63, 61, 60, 61, 63, + 66, 66, 63, 59, 58, 59, 61, 62, 61, 59, 59, 58, 57, 56, 55, 57, + 58, 57, 56, 54, 53, 52, 51, 51, 51, 50, 49, 49, 48, 47, 47, 46, + 46, 45, 45, 44, 44, 44, 44, 43, 44, 47, 49, 51, 56, 61, 66, 67, + 75, 83, 89, 92, 80, 73, 63, 55, 48, 45, 46, 44, 48, 53, 67, 82, + 86, 80, 75, 67, 61, 53, 49, 46, 41, 38, 34, 32, 31, 30, 28, 29, + 42, 42, 43, 44, 45, 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, + 49, 49, 50, 52, 53, 52, 54, 55, 56, 56, 56, 56, 56, 56, 56, 55, + 55, 57, 59, 60, 62, 61, 60, 60, 59, 60, 61, 62, 61, 60, 60, 61, + 64, 65, 62, 58, 57, 57, 59, 60, 59, 58, 57, 57, 56, 55, 55, 56, + 57, 56, 55, 53, 52, 51, 51, 51, 51, 50, 49, 49, 48, 47, 47, 45, + 45, 44, 43, 43, 43, 43, 42, 40, 42, 45, 47, 50, 54, 60, 63, 67, + 72, 78, 82, 85, 84, 81, 78, 75, 69, 66, 65, 64, 69, 73, 78, 82, + 80, 77, 71, 65, 59, 52, 49, 47, 42, 38, 35, 34, 31, 29, 28, 29, + 42, 42, 43, 44, 45, 45, 46, 47, 46, 46, 46, 46, 46, 47, 48, 48, + 49, 49, 50, 51, 53, 52, 54, 55, 55, 55, 55, 55, 55, 55, 55, 54, + 55, 57, 58, 60, 61, 60, 59, 59, 59, 60, 61, 61, 61, 60, 59, 60, + 63, 64, 61, 58, 56, 57, 58, 59, 58, 57, 57, 56, 56, 55, 54, 56, + 56, 55, 55, 53, 51, 51, 50, 50, 50, 49, 48, 48, 47, 46, 46, 45, + 44, 43, 42, 42, 42, 42, 41, 39, 41, 43, 45, 47, 52, 57, 60, 63, + 67, 73, 76, 79, 82, 82, 83, 86, 83, 82, 82, 80, 80, 79, 78, 77, + 75, 70, 65, 60, 55, 49, 46, 45, 41, 37, 35, 34, 31, 29, 28, 29, + 42, 42, 43, 44, 44, 45, 45, 46, 46, 46, 46, 46, 46, 46, 47, 48, + 48, 49, 50, 50, 51, 52, 54, 55, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 56, 58, 59, 59, 59, 58, 57, 58, 59, 59, 60, 59, 59, 58, 59, + 62, 63, 60, 58, 56, 55, 57, 57, 57, 56, 55, 55, 54, 54, 53, 54, + 55, 54, 53, 52, 51, 50, 49, 49, 48, 48, 47, 46, 46, 45, 44, 44, + 43, 42, 42, 42, 42, 42, 41, 38, 39, 42, 43, 45, 49, 53, 57, 59, + 63, 68, 70, 72, 74, 76, 77, 77, 77, 78, 78, 78, 75, 73, 72, 72, + 69, 64, 59, 56, 51, 46, 43, 42, 39, 35, 33, 33, 31, 29, 28, 29, + 42, 42, 43, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, + 48, 48, 49, 50, 50, 51, 54, 55, 53, 53, 53, 53, 53, 53, 53, 53, + 54, 55, 57, 58, 59, 58, 57, 56, 57, 58, 59, 59, 59, 58, 57, 58, + 61, 62, 59, 57, 55, 54, 55, 56, 56, 55, 54, 54, 53, 52, 52, 53, + 54, 53, 52, 51, 50, 49, 49, 48, 47, 47, 46, 45, 45, 44, 43, 43, + 43, 42, 41, 41, 41, 41, 41, 38, 39, 40, 41, 43, 47, 51, 53, 56, + 59, 63, 66, 68, 70, 70, 70, 73, 75, 76, 76, 74, 72, 71, 69, 68, + 64, 59, 55, 52, 49, 43, 41, 39, 37, 34, 32, 32, 30, 29, 29, 29, + 42, 42, 43, 43, 43, 44, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, + 47, 48, 49, 49, 49, 50, 54, 54, 52, 52, 52, 52, 52, 52, 52, 52, + 53, 55, 57, 58, 58, 57, 56, 56, 56, 57, 58, 58, 58, 57, 56, 57, + 60, 61, 58, 56, 55, 53, 54, 55, 55, 54, 53, 53, 52, 51, 51, 53, + 53, 52, 51, 51, 50, 49, 49, 47, 47, 46, 45, 45, 44, 43, 42, 43, + 42, 42, 41, 41, 41, 41, 40, 37, 38, 38, 39, 41, 44, 48, 50, 53, + 55, 59, 62, 63, 65, 65, 65, 68, 71, 71, 69, 66, 65, 64, 63, 61, + 59, 54, 51, 48, 44, 39, 38, 37, 35, 32, 31, 31, 30, 29, 29, 29, + 42, 42, 43, 43, 43, 44, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, + 47, 48, 49, 49, 49, 50, 54, 54, 52, 52, 52, 52, 52, 52, 52, 52, + 53, 55, 56, 57, 57, 56, 56, 55, 55, 56, 57, 58, 57, 56, 55, 56, + 60, 60, 57, 56, 55, 53, 53, 54, 54, 53, 53, 53, 52, 51, 50, 52, + 52, 51, 51, 51, 50, 49, 48, 47, 46, 45, 45, 44, 44, 43, 42, 42, + 42, 41, 41, 41, 41, 41, 40, 37, 37, 38, 38, 40, 42, 46, 48, 49, + 52, 55, 57, 56, 58, 61, 61, 63, 66, 66, 64, 64, 61, 59, 57, 55, + 54, 50, 47, 44, 40, 36, 35, 35, 33, 31, 30, 30, 30, 29, 29, 29, + 42, 42, 43, 43, 43, 43, 43, 43, 42, 43, 43, 44, 44, 45, 46, 47, + 47, 47, 48, 49, 49, 51, 53, 53, 51, 51, 51, 50, 50, 50, 50, 51, + 53, 53, 54, 55, 55, 55, 55, 55, 55, 56, 57, 57, 56, 55, 54, 55, + 57, 59, 57, 54, 52, 50, 50, 53, 54, 53, 53, 51, 50, 50, 49, 51, + 51, 50, 50, 50, 50, 49, 48, 47, 46, 45, 45, 44, 44, 43, 43, 43, + 43, 42, 41, 41, 40, 39, 38, 37, 38, 39, 40, 40, 42, 44, 46, 49, + 51, 53, 54, 55, 55, 57, 58, 60, 60, 60, 60, 59, 57, 55, 54, 52, + 49, 46, 44, 41, 39, 36, 34, 34, 32, 30, 29, 29, 29, 29, 29, 29, + 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 43, 44, 44, 45, 46, 46, + 46, 47, 48, 49, 49, 51, 52, 52, 50, 50, 50, 50, 50, 50, 50, 51, + 52, 53, 54, 54, 54, 54, 54, 54, 54, 55, 56, 56, 55, 54, 53, 54, + 57, 58, 56, 53, 51, 50, 50, 52, 53, 53, 53, 51, 50, 49, 48, 50, + 51, 50, 49, 49, 49, 49, 48, 47, 46, 45, 45, 44, 44, 44, 44, 44, + 43, 42, 41, 41, 40, 38, 38, 38, 38, 40, 40, 40, 41, 43, 45, 46, + 47, 49, 51, 51, 52, 53, 54, 55, 55, 55, 55, 54, 52, 51, 50, 49, + 46, 43, 42, 40, 38, 35, 34, 33, 32, 30, 29, 29, 29, 29, 29, 29, + 42, 42, 42, 42, 42, 42, 42, 41, 41, 42, 42, 43, 44, 44, 45, 46, + 46, 47, 47, 48, 49, 50, 52, 51, 49, 49, 49, 49, 49, 49, 49, 50, + 52, 53, 53, 54, 53, 53, 53, 53, 54, 55, 55, 55, 54, 53, 52, 53, + 56, 58, 56, 53, 51, 49, 49, 51, 52, 52, 52, 51, 50, 49, 48, 50, + 50, 49, 49, 49, 49, 48, 47, 47, 46, 45, 45, 44, 44, 44, 44, 43, + 42, 42, 41, 41, 40, 38, 38, 39, 39, 40, 40, 40, 41, 42, 43, 43, + 45, 46, 47, 47, 47, 48, 49, 51, 51, 51, 50, 48, 47, 45, 45, 44, + 42, 40, 38, 38, 37, 34, 33, 33, 31, 30, 29, 29, 29, 29, 29, 29, + 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 42, 43, 43, 44, 44, 45, + 46, 46, 47, 48, 49, 50, 51, 50, 49, 49, 49, 49, 49, 49, 49, 49, + 51, 52, 53, 53, 52, 52, 52, 52, 53, 53, 54, 54, 53, 52, 51, 52, + 55, 57, 55, 52, 50, 49, 49, 50, 51, 51, 51, 50, 49, 48, 48, 49, + 49, 49, 48, 49, 48, 47, 47, 47, 46, 45, 45, 43, 43, 43, 43, 43, + 42, 41, 41, 41, 40, 38, 38, 39, 39, 39, 39, 39, 39, 40, 41, 43, + 43, 44, 45, 45, 45, 45, 46, 48, 48, 48, 48, 46, 44, 43, 41, 39, + 38, 37, 36, 36, 35, 33, 32, 31, 31, 30, 29, 29, 29, 29, 28, 28, + 41, 41, 41, 41, 41, 41, 41, 41, 40, 41, 42, 42, 43, 43, 44, 45, + 45, 46, 47, 48, 50, 50, 50, 48, 48, 48, 48, 48, 48, 48, 48, 49, + 51, 51, 53, 52, 51, 51, 51, 51, 52, 52, 53, 53, 52, 51, 50, 51, + 54, 56, 53, 51, 50, 48, 48, 49, 50, 50, 50, 49, 49, 48, 47, 49, + 49, 48, 48, 48, 48, 47, 46, 46, 46, 45, 45, 43, 43, 43, 43, 42, + 42, 41, 40, 40, 40, 38, 38, 39, 38, 38, 38, 38, 38, 38, 39, 43, + 43, 43, 44, 44, 43, 43, 43, 46, 46, 46, 45, 44, 42, 40, 39, 37, + 36, 34, 34, 35, 33, 31, 31, 30, 30, 30, 29, 29, 29, 29, 28, 28, + 41, 41, 41, 41, 41, 41, 41, 40, 40, 40, 41, 42, 42, 43, 44, 44, + 45, 45, 46, 47, 50, 49, 49, 48, 47, 47, 47, 47, 48, 48, 48, 49, + 50, 51, 52, 52, 50, 50, 50, 50, 51, 51, 52, 52, 51, 50, 49, 50, + 53, 55, 52, 51, 50, 48, 48, 49, 49, 49, 49, 49, 48, 47, 47, 48, + 49, 48, 47, 47, 47, 46, 46, 46, 46, 45, 45, 42, 42, 42, 42, 42, + 41, 40, 40, 40, 40, 38, 38, 40, 40, 39, 38, 39, 39, 38, 39, 41, + 41, 42, 40, 41, 41, 39, 40, 42, 42, 42, 42, 41, 39, 37, 36, 35, + 34, 33, 32, 32, 31, 30, 30, 29, 30, 30, 29, 29, 29, 29, 28, 27, + 40, 40, 40, 40, 41, 41, 41, 40, 40, 40, 41, 41, 41, 42, 43, 43, + 44, 45, 46, 47, 49, 49, 49, 48, 47, 47, 47, 47, 47, 48, 48, 48, + 50, 50, 51, 51, 50, 50, 50, 49, 50, 51, 52, 52, 50, 50, 49, 50, + 53, 55, 53, 51, 49, 48, 48, 49, 49, 49, 49, 49, 48, 48, 47, 48, + 48, 47, 47, 47, 47, 46, 46, 46, 45, 44, 44, 42, 42, 42, 42, 42, + 41, 40, 40, 40, 39, 38, 38, 39, 39, 38, 37, 38, 38, 37, 37, 39, + 39, 39, 38, 39, 39, 38, 39, 40, 40, 39, 39, 38, 37, 36, 35, 34, + 33, 32, 31, 30, 30, 29, 29, 29, 30, 29, 29, 29, 29, 29, 28, 27, + 38, 39, 39, 40, 41, 41, 41, 40, 40, 40, 41, 41, 41, 41, 42, 43, + 43, 44, 46, 48, 49, 49, 49, 49, 48, 48, 48, 47, 46, 47, 48, 48, + 49, 49, 50, 50, 50, 50, 50, 49, 49, 50, 50, 51, 50, 49, 49, 50, + 53, 55, 54, 52, 50, 50, 49, 50, 51, 51, 51, 50, 49, 48, 47, 47, + 47, 47, 47, 46, 46, 46, 46, 44, 43, 43, 42, 42, 42, 42, 42, 42, + 42, 41, 41, 40, 39, 38, 38, 37, 37, 36, 36, 36, 36, 36, 36, 37, + 37, 37, 37, 37, 37, 37, 37, 38, 37, 36, 36, 37, 36, 35, 34, 32, + 31, 30, 29, 29, 28, 28, 29, 30, 30, 29, 29, 29, 29, 29, 28, 27, + 38, 39, 39, 40, 41, 41, 41, 40, 40, 40, 41, 41, 41, 41, 42, 43, + 43, 44, 46, 48, 49, 49, 49, 49, 49, 49, 49, 48, 47, 48, 48, 48, + 49, 49, 50, 50, 50, 50, 50, 49, 49, 50, 50, 51, 50, 49, 48, 50, + 53, 55, 55, 53, 51, 50, 50, 50, 51, 51, 51, 51, 50, 49, 48, 47, + 47, 47, 47, 46, 46, 46, 46, 44, 43, 43, 42, 42, 42, 42, 42, 42, + 42, 41, 41, 40, 39, 38, 38, 37, 37, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 35, 34, 34, 35, 34, 33, 32, 30, + 30, 29, 28, 29, 28, 27, 28, 30, 30, 29, 29, 29, 29, 29, 28, 27, + 38, 39, 39, 40, 41, 41, 41, 40, 40, 40, 41, 41, 41, 41, 42, 43, + 43, 44, 46, 48, 49, 49, 49, 49, 49, 49, 49, 48, 47, 48, 48, 48, + 48, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 49, 48, 50, + 53, 55, 55, 53, 51, 50, 50, 50, 51, 51, 51, 51, 50, 49, 48, 47, + 47, 47, 47, 46, 46, 46, 46, 44, 43, 43, 42, 42, 42, 42, 42, 42, + 42, 41, 41, 40, 39, 38, 38, 37, 37, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 35, 34, 34, 34, 34, 34, 33, 33, 32, 33, 32, 31, 30, 29, + 28, 27, 27, 29, 28, 27, 28, 30, 30, 29, 29, 29, 29, 29, 28, 27, + 69, 69, 70, 72, 73, 74, 75, 76, 77, 77, 79, 80, 82, 83, 85, 86, + 87, 90, 93, 95, 97, 100, 102, 102, 102, 104, 110, 114, 116, 118, 116, 115, + 125, 127, 122, 122, 126, 129, 135, 142, 132, 139, 137, 142, 144, 144, 140, 136, + 143, 133, 130, 132, 131, 126, 122, 122, 123, 116, 112, 116, 116, 111, 105, 102, + 100, 97, 95, 97, 98, 96, 96, 95, 93, 90, 88, 85, 83, 82, 81, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 46, 45, 46, 45, 45, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 84, 86, 87, + 87, 89, 93, 95, 98, 101, 103, 104, 104, 105, 109, 113, 117, 120, 118, 117, + 126, 130, 127, 126, 128, 132, 138, 146, 138, 142, 141, 145, 147, 147, 143, 140, + 147, 137, 135, 135, 132, 126, 125, 124, 123, 117, 115, 119, 116, 111, 105, 102, + 101, 98, 98, 99, 98, 97, 96, 95, 93, 90, 88, 85, 83, 82, 81, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 46, 46, 46, 46, 45, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 77, 78, 80, 81, 83, 85, 87, 88, + 88, 90, 93, 96, 100, 103, 106, 108, 108, 108, 109, 113, 118, 121, 122, 121, + 127, 134, 132, 130, 130, 134, 141, 149, 144, 145, 147, 149, 150, 150, 147, 145, + 151, 142, 140, 139, 134, 127, 128, 127, 124, 120, 121, 122, 117, 111, 105, 102, + 102, 101, 101, 100, 99, 98, 96, 94, 92, 89, 87, 85, 83, 82, 81, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 46, 46, 47, 46, 45, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 78, 79, 80, 82, 84, 86, 88, 89, + 89, 92, 95, 98, 102, 105, 109, 111, 112, 112, 112, 114, 120, 124, 126, 126, + 127, 134, 136, 134, 132, 135, 142, 151, 151, 148, 152, 153, 154, 154, 150, 150, + 154, 145, 145, 143, 137, 130, 133, 131, 127, 124, 126, 123, 118, 111, 107, 105, + 104, 105, 104, 103, 101, 99, 97, 94, 92, 90, 88, 85, 84, 83, 81, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 47, 47, 47, 47, 46, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 79, 80, 81, 82, 85, 87, 89, 91, + 92, 95, 99, 101, 104, 108, 111, 114, 116, 118, 118, 118, 122, 126, 130, 132, + 130, 135, 141, 140, 135, 138, 146, 155, 158, 151, 158, 157, 159, 159, 155, 156, + 158, 149, 150, 145, 140, 135, 137, 135, 130, 130, 129, 123, 117, 111, 109, 109, + 107, 107, 107, 104, 102, 100, 98, 94, 92, 89, 87, 86, 84, 83, 82, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 47, 47, 48, 47, 46, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 79, 81, 82, 82, 87, 88, 90, 92, + 96, 98, 102, 104, 106, 110, 115, 117, 120, 123, 124, 123, 123, 128, 135, 140, + 139, 139, 148, 149, 142, 146, 154, 161, 165, 156, 165, 164, 167, 167, 163, 163, + 163, 155, 157, 149, 144, 141, 140, 137, 134, 136, 131, 123, 116, 112, 112, 113, + 111, 109, 108, 106, 104, 101, 98, 94, 92, 89, 87, 86, 84, 83, 82, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 47, 48, 48, 48, 46, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 80, 81, 82, 83, 88, 89, 91, 94, + 98, 101, 104, 107, 109, 113, 117, 119, 123, 126, 128, 128, 127, 129, 136, 143, + 145, 142, 149, 156, 148, 150, 158, 163, 171, 162, 169, 170, 172, 173, 167, 171, + 167, 161, 161, 152, 146, 147, 144, 138, 140, 140, 132, 122, 117, 115, 115, 115, + 113, 111, 109, 106, 103, 100, 97, 93, 91, 89, 87, 86, 85, 84, 82, 78, + 77, 77, 76, 74, 73, 72, 71, 71, 70, 69, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 56, 54, 54, + 54, 54, 53, 52, 51, 50, 50, 48, 48, 48, 48, 49, 49, 49, 47, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 80, 82, 83, 85, 88, 90, 94, 97, + 101, 104, 108, 111, 114, 117, 121, 123, 126, 130, 133, 136, 134, 132, 137, 143, + 150, 148, 148, 161, 157, 153, 161, 166, 177, 170, 174, 177, 178, 179, 171, 179, + 170, 169, 165, 157, 151, 154, 149, 144, 150, 142, 131, 123, 121, 120, 118, 117, + 116, 113, 111, 106, 102, 98, 95, 93, 91, 89, 88, 87, 86, 84, 83, 79, + 78, 78, 77, 76, 74, 72, 72, 71, 71, 70, 68, 67, 66, 65, 64, 63, + 62, 62, 61, 61, 60, 59, 59, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 53, 52, 52, 52, 51, 50, 49, 48, 48, 50, 50, 50, 48, 47, + 69, 69, 70, 72, 74, 74, 75, 76, 81, 82, 85, 87, 89, 92, 95, 99, + 105, 109, 113, 117, 120, 122, 126, 128, 130, 135, 140, 141, 140, 140, 141, 145, + 153, 157, 154, 161, 169, 161, 162, 172, 183, 179, 181, 184, 184, 185, 178, 186, + 176, 178, 171, 161, 163, 160, 151, 154, 155, 142, 130, 125, 125, 124, 122, 120, + 118, 114, 110, 106, 103, 98, 95, 93, 91, 89, 88, 87, 86, 84, 83, 79, + 78, 78, 77, 76, 74, 72, 72, 71, 71, 70, 68, 67, 66, 65, 65, 63, + 63, 62, 61, 61, 60, 59, 59, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 53, 52, 52, 52, 51, 50, 49, 48, 48, 50, 50, 50, 48, 46, + 69, 70, 71, 73, 74, 75, 76, 77, 81, 83, 87, 89, 91, 94, 99, 104, + 110, 113, 119, 122, 125, 128, 131, 133, 135, 139, 144, 148, 148, 150, 147, 148, + 155, 165, 164, 160, 176, 172, 165, 177, 188, 189, 188, 191, 192, 192, 185, 193, + 183, 186, 176, 166, 172, 164, 158, 163, 155, 141, 132, 131, 131, 130, 127, 124, + 120, 114, 109, 105, 102, 99, 96, 94, 92, 90, 89, 87, 86, 84, 83, 79, + 78, 78, 77, 76, 74, 72, 72, 71, 71, 70, 68, 68, 67, 66, 65, 64, + 63, 62, 62, 62, 61, 60, 59, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 53, 52, 52, 52, 52, 50, 49, 48, 48, 50, 50, 50, 48, 46, + 70, 71, 71, 73, 75, 75, 76, 77, 81, 85, 89, 91, 93, 97, 103, 107, + 112, 116, 122, 126, 129, 132, 135, 137, 139, 143, 147, 152, 156, 158, 157, 154, + 156, 168, 174, 166, 175, 182, 173, 178, 191, 198, 194, 198, 200, 199, 193, 200, + 191, 192, 179, 174, 175, 167, 168, 166, 152, 142, 139, 139, 138, 134, 130, 124, + 119, 113, 108, 104, 102, 100, 98, 95, 94, 92, 90, 88, 87, 85, 83, 79, + 78, 78, 77, 76, 74, 72, 72, 71, 71, 70, 69, 68, 68, 67, 66, 65, + 64, 63, 63, 62, 61, 60, 60, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 53, 53, 53, 53, 52, 50, 49, 48, 48, 50, 50, 50, 48, 46, + 70, 71, 72, 74, 75, 76, 77, 78, 82, 86, 90, 92, 95, 99, 106, 110, + 115, 120, 127, 131, 133, 136, 139, 142, 145, 147, 151, 154, 159, 163, 164, 163, + 160, 167, 179, 177, 177, 189, 187, 183, 196, 208, 200, 206, 210, 208, 202, 207, + 200, 196, 182, 184, 177, 175, 176, 165, 151, 147, 148, 146, 142, 136, 130, 123, + 117, 112, 107, 104, 102, 100, 98, 96, 94, 92, 91, 88, 87, 85, 83, 79, + 78, 78, 77, 76, 74, 72, 72, 71, 71, 70, 69, 69, 68, 67, 66, 65, + 64, 64, 63, 63, 62, 61, 60, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 53, 53, 53, 53, 52, 50, 49, 48, 48, 50, 50, 50, 48, 46, + 71, 71, 72, 74, 76, 77, 77, 79, 82, 87, 91, 93, 96, 101, 107, 113, + 120, 126, 132, 137, 140, 142, 145, 148, 152, 153, 154, 156, 161, 166, 171, 173, + 167, 165, 178, 190, 185, 194, 198, 189, 202, 217, 206, 214, 220, 217, 212, 214, + 209, 200, 186, 193, 181, 187, 182, 163, 154, 153, 155, 150, 145, 137, 129, 121, + 115, 111, 107, 103, 101, 100, 99, 96, 94, 92, 91, 88, 87, 85, 83, 80, + 79, 78, 77, 76, 74, 73, 72, 71, 71, 70, 69, 69, 68, 67, 66, 65, + 65, 64, 63, 63, 62, 61, 60, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 54, 54, 54, 54, 53, 51, 50, 49, 48, 50, 50, 50, 48, 46, + 71, 72, 74, 76, 76, 78, 80, 82, 87, 89, 93, 96, 100, 106, 111, 118, + 126, 134, 144, 144, 145, 152, 158, 156, 159, 161, 162, 164, 163, 174, 179, 180, + 182, 176, 180, 194, 201, 194, 211, 192, 209, 225, 218, 222, 230, 225, 226, 222, + 217, 207, 197, 198, 195, 197, 186, 167, 163, 164, 159, 155, 146, 135, 126, 120, + 117, 113, 109, 106, 104, 102, 99, 96, 95, 93, 92, 89, 88, 85, 84, 80, + 79, 77, 77, 75, 75, 73, 71, 69, 70, 69, 69, 68, 67, 66, 65, 64, + 63, 62, 62, 63, 62, 62, 62, 59, 58, 57, 57, 56, 55, 54, 54, 55, + 54, 53, 53, 54, 53, 52, 53, 52, 51, 50, 49, 50, 50, 49, 47, 46, + 71, 72, 75, 76, 76, 79, 82, 85, 90, 93, 95, 99, 106, 113, 117, 125, + 133, 140, 145, 152, 156, 152, 153, 160, 163, 162, 161, 166, 171, 168, 184, 198, + 194, 188, 178, 188, 213, 201, 212, 211, 208, 233, 228, 234, 240, 236, 238, 228, + 223, 204, 211, 209, 209, 197, 179, 172, 173, 173, 163, 155, 144, 134, 126, 121, + 118, 115, 111, 108, 106, 103, 101, 97, 95, 92, 91, 90, 88, 85, 84, 81, + 80, 79, 78, 76, 75, 74, 73, 70, 70, 70, 70, 68, 67, 66, 65, 64, + 63, 62, 62, 63, 63, 63, 62, 60, 58, 58, 57, 56, 55, 54, 54, 55, + 54, 53, 53, 54, 53, 52, 53, 54, 52, 51, 50, 50, 49, 49, 47, 46, + 71, 72, 75, 76, 76, 80, 83, 87, 91, 95, 101, 105, 113, 120, 125, 134, + 144, 147, 147, 153, 152, 155, 155, 163, 164, 166, 169, 168, 171, 183, 186, 190, + 196, 200, 191, 190, 210, 214, 214, 231, 220, 240, 235, 241, 246, 243, 243, 234, + 237, 221, 225, 212, 219, 195, 184, 187, 179, 177, 166, 153, 143, 134, 127, 122, + 119, 116, 113, 109, 106, 104, 102, 97, 95, 94, 91, 89, 88, 86, 84, 82, + 82, 80, 79, 78, 77, 76, 74, 72, 71, 71, 71, 69, 68, 67, 66, 65, + 64, 63, 62, 64, 64, 64, 64, 62, 61, 60, 59, 59, 58, 57, 57, 56, + 55, 54, 54, 54, 53, 52, 53, 54, 53, 51, 51, 50, 50, 49, 47, 46, + 71, 72, 75, 77, 77, 80, 84, 89, 93, 99, 106, 112, 120, 127, 133, 140, + 146, 150, 153, 154, 151, 150, 140, 130, 128, 133, 147, 159, 171, 177, 182, 189, + 195, 196, 194, 194, 202, 224, 224, 229, 229, 237, 245, 246, 249, 247, 246, 242, + 234, 225, 228, 226, 204, 197, 195, 193, 183, 175, 166, 152, 142, 135, 129, 123, + 120, 117, 114, 109, 106, 103, 101, 98, 96, 94, 92, 90, 89, 87, 85, 84, + 84, 82, 82, 79, 79, 78, 77, 75, 74, 73, 72, 70, 69, 68, 67, 66, + 65, 64, 63, 65, 65, 65, 64, 63, 62, 61, 61, 60, 60, 59, 59, 58, + 57, 56, 55, 54, 53, 53, 53, 55, 53, 52, 51, 50, 50, 49, 47, 46, + 71, 72, 75, 77, 77, 81, 86, 91, 95, 103, 112, 119, 127, 135, 140, 147, + 149, 154, 156, 144, 124, 102, 85, 71, 67, 71, 89, 101, 126, 161, 178, 184, + 192, 167, 173, 186, 197, 221, 232, 235, 237, 228, 245, 241, 243, 242, 242, 238, + 226, 232, 223, 221, 194, 198, 202, 199, 187, 174, 162, 154, 144, 137, 131, 125, + 122, 119, 116, 110, 107, 104, 102, 100, 99, 96, 94, 93, 91, 89, 87, 87, + 86, 85, 85, 82, 81, 80, 80, 77, 76, 75, 74, 72, 71, 70, 69, 67, + 66, 65, 64, 65, 65, 65, 65, 65, 64, 63, 63, 63, 62, 61, 61, 60, + 60, 58, 57, 56, 55, 54, 55, 55, 54, 52, 51, 51, 50, 50, 48, 46, + 71, 73, 75, 77, 78, 82, 87, 92, 97, 105, 116, 126, 134, 142, 147, 154, + 158, 155, 133, 101, 66, 45, 36, 36, 35, 42, 58, 61, 70, 92, 134, 176, + 186, 96, 80, 112, 185, 217, 234, 228, 153, 121, 120, 120, 125, 123, 125, 123, + 130, 138, 110, 91, 98, 106, 116, 164, 180, 174, 161, 156, 147, 140, 133, 127, + 123, 119, 116, 113, 110, 107, 105, 103, 102, 99, 98, 96, 95, 92, 90, 89, + 89, 87, 86, 85, 84, 83, 81, 80, 79, 76, 74, 73, 73, 71, 70, 68, + 68, 67, 66, 67, 67, 67, 67, 67, 66, 65, 65, 65, 65, 64, 64, 64, + 63, 62, 60, 59, 58, 57, 57, 56, 54, 53, 52, 51, 50, 50, 48, 46, + 71, 73, 76, 78, 79, 83, 88, 94, 98, 107, 120, 131, 140, 147, 152, 157, + 154, 131, 81, 44, 36, 32, 29, 36, 41, 52, 63, 60, 58, 57, 73, 114, + 149, 53, 57, 76, 162, 220, 234, 245, 123, 91, 74, 82, 85, 83, 89, 92, + 93, 66, 55, 64, 68, 93, 103, 125, 164, 172, 163, 158, 150, 142, 135, 128, + 124, 120, 117, 116, 115, 112, 109, 106, 105, 102, 100, 99, 97, 96, 93, 91, + 90, 89, 88, 86, 85, 84, 84, 82, 80, 78, 76, 74, 73, 72, 71, 69, + 69, 68, 67, 68, 68, 68, 69, 69, 69, 68, 68, 68, 67, 66, 66, 67, + 66, 65, 63, 61, 60, 59, 58, 56, 55, 53, 52, 50, 50, 49, 48, 47, + 71, 73, 77, 79, 80, 85, 88, 96, 100, 111, 122, 135, 141, 153, 156, 158, + 125, 67, 47, 40, 37, 44, 56, 61, 63, 61, 58, 55, 58, 60, 57, 69, + 97, 56, 53, 57, 137, 232, 242, 242, 127, 95, 84, 92, 92, 96, 102, 88, + 67, 48, 54, 83, 94, 109, 110, 93, 163, 175, 167, 157, 150, 141, 136, 130, + 126, 123, 120, 119, 117, 115, 113, 110, 108, 107, 105, 102, 101, 99, 97, 95, + 94, 93, 92, 90, 89, 87, 86, 85, 84, 82, 80, 76, 75, 73, 72, 71, + 71, 71, 71, 72, 72, 73, 74, 74, 74, 74, 74, 74, 73, 72, 72, 71, + 70, 68, 66, 66, 66, 63, 61, 59, 56, 53, 51, 49, 47, 47, 48, 48, + 71, 73, 77, 79, 81, 87, 90, 98, 103, 115, 126, 137, 146, 155, 155, 134, + 79, 51, 45, 46, 52, 58, 57, 56, 71, 81, 80, 72, 65, 61, 54, 66, + 75, 72, 71, 65, 133, 232, 247, 243, 133, 88, 85, 90, 101, 91, 111, 69, + 60, 55, 69, 104, 119, 133, 126, 96, 162, 177, 167, 158, 152, 144, 140, 135, + 132, 129, 126, 124, 122, 120, 119, 115, 113, 111, 110, 106, 104, 102, 100, 99, + 97, 96, 95, 94, 93, 90, 89, 88, 86, 84, 83, 78, 77, 75, 74, 73, + 73, 73, 73, 76, 77, 78, 78, 78, 78, 78, 78, 78, 77, 76, 76, 76, + 75, 73, 71, 70, 69, 66, 64, 62, 59, 56, 53, 50, 48, 47, 48, 48, + 71, 73, 77, 79, 82, 88, 92, 101, 108, 119, 132, 143, 150, 153, 144, 94, + 64, 53, 47, 45, 48, 49, 55, 89, 118, 133, 138, 132, 105, 80, 61, 66, + 71, 71, 65, 66, 137, 233, 250, 248, 173, 119, 91, 79, 81, 70, 54, 17, + 34, 68, 95, 125, 122, 110, 106, 110, 165, 178, 169, 160, 155, 149, 146, 141, + 138, 135, 132, 129, 128, 126, 124, 120, 118, 116, 115, 111, 109, 106, 105, 104, + 102, 101, 100, 100, 98, 96, 95, 92, 90, 88, 86, 81, 80, 78, 77, 76, + 76, 77, 78, 80, 81, 83, 83, 83, 83, 83, 83, 84, 83, 82, 82, 82, + 80, 78, 76, 73, 73, 70, 67, 65, 61, 58, 55, 51, 48, 48, 47, 47, + 72, 74, 78, 80, 84, 90, 94, 104, 112, 125, 137, 149, 155, 151, 100, 48, + 43, 37, 31, 35, 42, 47, 90, 142, 160, 171, 179, 179, 171, 139, 83, 74, + 72, 83, 64, 62, 138, 232, 249, 254, 238, 191, 145, 90, 81, 66, 18, 19, + 71, 110, 130, 126, 86, 111, 132, 145, 175, 178, 172, 166, 161, 155, 151, 145, + 142, 140, 137, 133, 132, 130, 128, 125, 123, 121, 119, 116, 114, 113, 112, 110, + 108, 107, 107, 106, 105, 102, 100, 97, 94, 91, 89, 85, 83, 81, 79, 79, + 80, 81, 82, 83, 85, 87, 88, 88, 88, 88, 88, 89, 88, 87, 87, 88, + 86, 83, 80, 78, 76, 73, 69, 66, 62, 58, 56, 53, 49, 48, 47, 47, + 73, 75, 79, 81, 86, 92, 97, 107, 118, 131, 143, 153, 160, 136, 40, 30, + 37, 38, 41, 47, 46, 83, 152, 170, 175, 178, 184, 187, 192, 187, 142, 93, + 76, 72, 64, 65, 135, 231, 251, 253, 251, 244, 237, 172, 111, 56, 78, 115, + 131, 137, 145, 93, 98, 172, 191, 193, 192, 185, 180, 175, 169, 162, 158, 151, + 148, 145, 143, 139, 137, 135, 134, 130, 128, 125, 124, 122, 121, 119, 118, 115, + 115, 114, 113, 112, 111, 109, 107, 103, 99, 95, 93, 88, 86, 84, 83, 83, + 85, 87, 87, 87, 90, 92, 94, 95, 95, 95, 95, 97, 96, 95, 94, 93, + 91, 89, 87, 84, 82, 78, 73, 68, 64, 59, 57, 54, 50, 49, 47, 46, + 73, 75, 79, 81, 87, 94, 99, 110, 121, 135, 147, 157, 156, 96, 32, 51, + 57, 55, 52, 45, 58, 128, 173, 181, 181, 182, 185, 187, 190, 191, 185, 118, + 75, 69, 78, 80, 143, 238, 254, 253, 252, 251, 251, 220, 90, 57, 104, 135, + 136, 132, 135, 80, 150, 213, 220, 212, 204, 197, 188, 182, 175, 167, 161, 157, + 154, 151, 149, 146, 143, 141, 139, 136, 134, 132, 130, 126, 124, 123, 121, 118, + 118, 117, 116, 116, 114, 112, 110, 107, 104, 99, 96, 91, 89, 87, 85, 85, + 87, 89, 90, 92, 94, 97, 99, 102, 101, 101, 102, 104, 103, 102, 101, 99, + 97, 95, 93, 91, 88, 84, 78, 72, 67, 62, 58, 55, 51, 49, 47, 46, + 74, 75, 79, 83, 88, 96, 104, 114, 124, 137, 152, 156, 138, 65, 42, 62, + 61, 54, 44, 36, 88, 158, 177, 182, 180, 182, 185, 188, 196, 196, 199, 160, + 83, 86, 90, 88, 137, 238, 254, 252, 252, 252, 253, 238, 55, 98, 130, 138, + 136, 128, 119, 88, 186, 234, 236, 219, 207, 199, 188, 183, 178, 169, 162, 159, + 156, 152, 151, 151, 146, 144, 142, 142, 142, 140, 136, 132, 129, 126, 124, 120, + 119, 123, 121, 122, 119, 116, 114, 115, 110, 106, 100, 95, 92, 90, 88, 87, + 89, 92, 96, 97, 101, 105, 106, 109, 108, 108, 109, 109, 108, 109, 110, 107, + 102, 100, 100, 97, 95, 85, 83, 77, 71, 66, 60, 56, 52, 50, 48, 46, + 74, 75, 80, 85, 89, 98, 107, 118, 128, 141, 155, 156, 117, 45, 40, 61, + 53, 50, 45, 46, 121, 172, 180, 176, 176, 177, 182, 186, 194, 200, 205, 198, + 112, 87, 83, 82, 123, 234, 254, 255, 255, 254, 253, 250, 98, 127, 143, 137, + 123, 115, 117, 97, 204, 240, 232, 215, 200, 191, 184, 179, 174, 166, 158, 158, + 155, 151, 151, 151, 146, 145, 142, 145, 146, 143, 139, 136, 133, 131, 130, 129, + 125, 130, 128, 125, 129, 127, 120, 118, 118, 113, 104, 100, 97, 94, 92, 91, + 93, 98, 103, 108, 109, 113, 115, 118, 118, 117, 117, 118, 117, 117, 115, 113, + 114, 112, 108, 104, 96, 93, 89, 80, 74, 69, 62, 58, 53, 51, 49, 47, + 74, 75, 80, 85, 90, 100, 109, 120, 132, 147, 154, 150, 73, 15, 29, 54, + 50, 52, 48, 63, 143, 178, 177, 171, 170, 172, 176, 180, 189, 196, 202, 203, + 132, 92, 101, 84, 124, 236, 254, 254, 254, 254, 254, 250, 128, 126, 138, 134, + 127, 125, 124, 93, 198, 223, 209, 198, 190, 184, 179, 176, 172, 165, 158, 158, + 157, 155, 156, 154, 151, 150, 146, 150, 151, 148, 145, 139, 138, 139, 139, 138, + 134, 135, 135, 134, 131, 130, 132, 122, 124, 117, 110, 107, 103, 100, 99, 97, + 100, 106, 111, 115, 114, 117, 121, 125, 124, 123, 123, 124, 125, 126, 127, 125, + 125, 123, 115, 114, 104, 100, 93, 83, 77, 70, 63, 59, 54, 52, 49, 47, + 74, 75, 80, 85, 91, 101, 111, 122, 135, 147, 155, 120, 25, 14, 32, 50, + 56, 61, 47, 84, 157, 174, 168, 164, 164, 166, 169, 173, 179, 188, 195, 199, + 158, 104, 88, 61, 124, 231, 252, 253, 252, 251, 250, 250, 117, 89, 69, 99, + 121, 114, 121, 99, 204, 230, 221, 212, 202, 194, 187, 184, 182, 176, 170, 166, + 166, 167, 167, 165, 164, 160, 155, 150, 150, 148, 145, 147, 148, 147, 147, 146, + 146, 146, 144, 145, 141, 138, 138, 137, 130, 120, 122, 115, 110, 107, 105, 105, + 107, 113, 118, 120, 125, 126, 131, 133, 133, 133, 134, 137, 136, 138, 143, 139, + 131, 131, 125, 116, 119, 102, 95, 87, 80, 74, 66, 61, 55, 52, 49, 47, + 74, 75, 80, 85, 92, 103, 113, 125, 138, 145, 156, 95, 42, 47, 51, 63, + 58, 63, 46, 106, 162, 170, 164, 161, 159, 160, 164, 169, 176, 184, 192, 195, + 179, 110, 85, 63, 117, 220, 243, 247, 245, 251, 254, 251, 118, 88, 90, 88, + 98, 122, 129, 95, 198, 227, 222, 218, 210, 203, 197, 192, 189, 185, 180, 175, + 174, 176, 177, 175, 172, 165, 161, 159, 158, 155, 152, 155, 156, 155, 155, 157, + 159, 154, 147, 146, 146, 143, 139, 135, 134, 131, 128, 122, 117, 113, 111, 111, + 114, 119, 125, 129, 136, 133, 135, 136, 138, 139, 139, 142, 148, 149, 148, 146, + 143, 140, 130, 124, 112, 114, 101, 91, 84, 77, 68, 63, 57, 53, 49, 47, + 74, 75, 80, 86, 93, 104, 115, 127, 140, 148, 153, 85, 67, 62, 59, 72, + 64, 59, 49, 125, 165, 166, 162, 159, 155, 157, 161, 165, 173, 180, 187, 191, + 178, 84, 72, 73, 113, 214, 245, 250, 251, 254, 253, 248, 134, 119, 140, 123, + 90, 89, 105, 99, 201, 224, 211, 207, 202, 195, 191, 188, 186, 183, 180, 175, + 175, 177, 177, 177, 174, 166, 167, 163, 160, 156, 152, 156, 159, 162, 164, 163, + 161, 154, 153, 149, 130, 125, 134, 138, 135, 139, 132, 129, 126, 122, 119, 119, + 121, 126, 131, 133, 137, 136, 142, 141, 145, 150, 149, 141, 144, 149, 152, 153, + 149, 140, 142, 141, 114, 112, 99, 94, 86, 79, 70, 64, 58, 53, 49, 47, + 74, 75, 80, 86, 94, 105, 116, 129, 141, 153, 147, 84, 61, 56, 64, 77, + 79, 58, 54, 134, 164, 163, 158, 155, 153, 155, 158, 162, 167, 174, 178, 187, + 177, 75, 90, 100, 117, 219, 252, 254, 254, 255, 254, 250, 144, 151, 135, 142, + 126, 93, 76, 97, 206, 236, 228, 214, 201, 190, 182, 179, 179, 177, 175, 169, + 169, 170, 169, 174, 173, 167, 174, 186, 185, 179, 175, 154, 158, 165, 170, 167, + 163, 160, 173, 194, 191, 176, 158, 160, 132, 137, 138, 135, 132, 128, 126, 127, + 128, 132, 135, 138, 140, 148, 168, 175, 182, 188, 190, 172, 135, 131, 149, 154, + 146, 156, 176, 136, 140, 101, 101, 97, 89, 81, 72, 65, 58, 54, 49, 47, + 75, 77, 82, 88, 95, 105, 116, 129, 148, 150, 129, 65, 58, 70, 78, 84, + 81, 55, 68, 144, 165, 162, 154, 150, 148, 146, 149, 153, 160, 166, 172, 181, + 179, 148, 139, 121, 134, 231, 254, 254, 254, 254, 254, 250, 139, 139, 134, 151, + 143, 138, 140, 95, 203, 235, 225, 224, 214, 196, 179, 171, 166, 168, 179, 178, + 174, 174, 132, 164, 171, 182, 179, 152, 136, 149, 121, 130, 133, 159, 170, 164, + 163, 190, 186, 190, 202, 219, 227, 209, 159, 126, 137, 138, 135, 134, 135, 130, + 134, 140, 138, 139, 150, 152, 156, 152, 146, 150, 135, 83, 51, 122, 156, 148, + 155, 187, 157, 175, 173, 106, 90, 100, 91, 83, 73, 65, 58, 53, 49, 47, + 75, 77, 83, 88, 96, 107, 117, 131, 146, 155, 125, 71, 58, 82, 70, 63, + 43, 40, 74, 150, 162, 156, 149, 145, 143, 141, 144, 148, 156, 163, 168, 178, + 187, 172, 136, 125, 167, 234, 252, 254, 253, 254, 254, 250, 149, 133, 133, 123, + 143, 140, 140, 97, 191, 228, 224, 213, 204, 187, 173, 155, 184, 168, 166, 168, + 159, 163, 107, 148, 173, 198, 185, 141, 137, 122, 115, 124, 125, 127, 161, 161, + 185, 211, 188, 176, 203, 210, 211, 225, 198, 135, 126, 138, 138, 136, 138, 141, + 142, 139, 141, 160, 169, 172, 141, 118, 120, 133, 77, 80, 130, 186, 205, 153, + 169, 181, 148, 180, 165, 126, 73, 97, 93, 84, 75, 67, 60, 55, 49, 47, + 75, 77, 83, 89, 98, 109, 119, 133, 153, 154, 99, 61, 76, 88, 77, 75, + 61, 66, 89, 152, 157, 151, 143, 139, 138, 137, 140, 145, 152, 160, 167, 176, + 189, 199, 189, 185, 201, 235, 248, 254, 248, 254, 254, 252, 134, 116, 149, 137, + 134, 112, 126, 95, 184, 219, 219, 211, 204, 180, 168, 150, 175, 160, 162, 156, + 159, 151, 90, 160, 192, 196, 176, 188, 183, 193, 204, 207, 192, 149, 139, 169, + 176, 155, 175, 181, 200, 202, 204, 175, 169, 200, 116, 135, 141, 139, 142, 147, + 145, 141, 158, 197, 190, 188, 156, 122, 126, 132, 136, 179, 195, 196, 200, 186, + 167, 159, 150, 164, 138, 144, 65, 93, 95, 84, 76, 68, 61, 56, 51, 48, + 75, 77, 83, 89, 99, 110, 121, 135, 154, 152, 91, 75, 97, 80, 84, 76, + 68, 79, 93, 154, 156, 149, 140, 137, 136, 136, 139, 143, 149, 160, 170, 184, + 195, 194, 194, 205, 219, 235, 245, 254, 248, 254, 253, 250, 124, 117, 127, 118, + 145, 153, 147, 95, 187, 213, 210, 209, 200, 167, 160, 164, 162, 154, 166, 175, + 156, 169, 122, 188, 196, 196, 171, 187, 150, 201, 202, 207, 220, 201, 132, 196, + 184, 171, 187, 191, 206, 206, 188, 146, 180, 244, 129, 125, 145, 145, 146, 150, + 147, 154, 178, 196, 191, 187, 187, 172, 115, 96, 163, 204, 184, 158, 175, 158, + 150, 144, 134, 159, 140, 145, 57, 91, 96, 85, 77, 69, 61, 57, 51, 48, + 75, 77, 83, 89, 100, 110, 121, 134, 150, 153, 103, 97, 86, 71, 92, 71, + 85, 86, 94, 152, 157, 149, 141, 137, 135, 136, 139, 144, 151, 161, 171, 182, + 189, 192, 202, 214, 221, 233, 240, 245, 251, 254, 250, 246, 132, 141, 138, 119, + 135, 133, 143, 103, 192, 213, 204, 205, 196, 163, 157, 165, 157, 161, 174, 190, + 145, 163, 160, 208, 208, 188, 171, 188, 146, 196, 182, 201, 189, 203, 177, 217, + 195, 201, 220, 207, 200, 196, 174, 164, 234, 221, 131, 109, 147, 151, 152, 154, + 154, 172, 188, 190, 204, 187, 200, 150, 78, 103, 148, 193, 168, 128, 156, 149, + 165, 92, 93, 158, 171, 139, 60, 94, 95, 85, 76, 68, 61, 56, 51, 49, + 75, 77, 83, 89, 99, 109, 120, 134, 150, 151, 104, 81, 58, 69, 87, 58, + 79, 75, 105, 160, 157, 149, 141, 135, 133, 134, 139, 145, 154, 161, 168, 175, + 182, 189, 198, 208, 218, 227, 229, 233, 252, 255, 248, 247, 154, 137, 137, 135, + 149, 139, 144, 99, 187, 217, 207, 204, 199, 170, 155, 163, 156, 176, 184, 193, + 177, 161, 185, 206, 175, 130, 137, 194, 183, 202, 182, 164, 175, 209, 206, 203, + 196, 158, 166, 206, 209, 214, 203, 205, 194, 134, 147, 91, 146, 156, 157, 158, + 160, 181, 163, 138, 177, 174, 181, 85, 102, 154, 165, 168, 141, 133, 140, 133, + 167, 119, 91, 156, 148, 86, 64, 99, 92, 84, 74, 67, 60, 55, 51, 49, + 75, 77, 83, 89, 98, 109, 120, 134, 149, 147, 97, 68, 61, 70, 65, 54, + 108, 83, 112, 155, 155, 147, 139, 134, 133, 134, 140, 146, 155, 159, 163, 171, + 181, 188, 197, 209, 216, 220, 222, 229, 251, 251, 251, 239, 172, 153, 155, 151, + 149, 145, 153, 93, 180, 218, 211, 201, 198, 179, 157, 179, 168, 186, 182, 189, + 183, 157, 179, 166, 97, 103, 126, 191, 192, 189, 169, 178, 187, 194, 197, 198, + 117, 84, 108, 153, 197, 199, 160, 184, 152, 135, 137, 79, 146, 159, 160, 159, + 160, 173, 154, 155, 167, 148, 132, 69, 140, 186, 188, 172, 148, 158, 124, 132, + 150, 130, 93, 119, 102, 77, 98, 103, 92, 84, 73, 66, 59, 54, 50, 48, + 73, 76, 82, 89, 97, 108, 120, 135, 151, 142, 86, 72, 87, 85, 73, 88, + 116, 84, 114, 157, 155, 146, 138, 136, 137, 139, 144, 147, 148, 153, 161, 167, + 176, 185, 194, 203, 211, 211, 216, 227, 249, 240, 254, 240, 164, 160, 166, 165, + 161, 161, 161, 95, 180, 212, 210, 202, 199, 195, 182, 175, 174, 182, 180, 200, + 184, 159, 174, 102, 105, 163, 185, 194, 206, 200, 197, 198, 175, 170, 174, 141, + 77, 135, 164, 159, 154, 124, 87, 135, 150, 172, 171, 70, 147, 161, 165, 161, + 162, 170, 182, 182, 176, 146, 121, 75, 160, 194, 191, 176, 167, 168, 118, 144, + 116, 124, 83, 128, 126, 116, 114, 105, 93, 82, 72, 65, 58, 53, 50, 48, + 73, 75, 82, 89, 97, 108, 120, 135, 149, 145, 106, 93, 102, 102, 98, 118, + 112, 80, 113, 158, 156, 148, 141, 139, 141, 140, 141, 144, 146, 152, 159, 166, + 174, 180, 191, 200, 202, 203, 212, 225, 238, 233, 250, 235, 167, 157, 142, 169, + 174, 163, 170, 98, 178, 209, 207, 204, 203, 200, 194, 191, 190, 181, 176, 198, + 190, 172, 130, 77, 154, 189, 203, 200, 226, 217, 211, 216, 185, 203, 185, 81, + 112, 174, 183, 181, 186, 175, 169, 192, 182, 202, 187, 67, 146, 162, 166, 161, + 178, 187, 178, 169, 176, 160, 131, 75, 174, 195, 197, 182, 165, 153, 110, 136, + 138, 139, 70, 123, 138, 130, 119, 103, 91, 81, 71, 64, 58, 53, 50, 48, + 72, 75, 81, 88, 96, 108, 120, 134, 146, 149, 127, 114, 102, 104, 105, 121, + 95, 71, 109, 158, 159, 152, 145, 142, 141, 139, 138, 141, 145, 151, 158, 165, + 173, 179, 189, 195, 194, 196, 209, 224, 226, 228, 245, 227, 172, 158, 172, 179, + 177, 161, 181, 97, 176, 207, 204, 201, 202, 202, 197, 193, 191, 176, 183, 217, + 208, 153, 74, 99, 180, 194, 201, 203, 222, 210, 217, 220, 188, 203, 187, 70, + 149, 188, 186, 180, 206, 215, 205, 214, 211, 197, 178, 64, 146, 164, 168, 168, + 186, 180, 157, 139, 168, 166, 138, 86, 176, 202, 201, 182, 146, 132, 126, 139, + 150, 143, 65, 118, 140, 129, 115, 101, 89, 79, 69, 63, 57, 53, 49, 47, + 71, 74, 81, 88, 95, 107, 119, 134, 149, 147, 124, 103, 91, 93, 97, 100, + 92, 76, 110, 160, 162, 155, 147, 142, 136, 136, 138, 140, 145, 151, 158, 163, + 171, 181, 184, 187, 189, 194, 208, 221, 215, 226, 240, 229, 167, 165, 187, 167, + 190, 178, 179, 93, 176, 205, 200, 195, 199, 204, 197, 186, 180, 173, 200, 217, + 179, 77, 46, 125, 190, 211, 197, 202, 217, 214, 217, 198, 173, 187, 151, 85, + 170, 194, 199, 198, 190, 188, 161, 187, 189, 168, 158, 63, 147, 167, 170, 167, + 176, 166, 165, 156, 168, 153, 125, 92, 180, 202, 200, 177, 148, 148, 152, 145, + 136, 117, 64, 117, 135, 125, 111, 97, 86, 77, 68, 62, 56, 53, 49, 46, + 71, 74, 80, 87, 94, 106, 118, 133, 146, 148, 128, 108, 97, 95, 108, 105, + 109, 92, 111, 163, 165, 157, 148, 142, 136, 136, 138, 142, 146, 152, 160, 165, + 173, 182, 181, 182, 187, 196, 209, 216, 207, 227, 234, 225, 148, 155, 144, 154, + 187, 156, 160, 98, 176, 204, 199, 192, 198, 205, 199, 192, 187, 188, 202, 178, + 87, 98, 75, 139, 200, 209, 202, 193, 182, 184, 190, 159, 153, 197, 135, 101, + 186, 198, 200, 193, 186, 190, 156, 202, 174, 167, 146, 65, 150, 169, 171, 166, + 164, 155, 165, 149, 151, 142, 127, 90, 186, 197, 200, 180, 162, 151, 138, 128, + 118, 127, 65, 116, 133, 125, 112, 94, 83, 75, 66, 60, 55, 52, 49, 46, + 70, 74, 80, 87, 94, 106, 118, 132, 143, 150, 130, 111, 97, 90, 114, 114, + 116, 96, 106, 163, 167, 158, 147, 142, 141, 140, 140, 143, 148, 154, 161, 168, + 176, 179, 177, 180, 186, 197, 209, 211, 202, 226, 229, 218, 151, 162, 163, 159, + 154, 122, 137, 92, 177, 204, 198, 192, 195, 201, 200, 192, 192, 197, 181, 137, + 125, 205, 91, 152, 202, 205, 205, 193, 177, 178, 163, 145, 158, 201, 139, 110, + 194, 197, 200, 198, 177, 178, 167, 192, 164, 158, 130, 67, 153, 171, 172, 171, + 163, 164, 169, 148, 158, 148, 136, 99, 181, 200, 197, 179, 160, 135, 124, 120, + 119, 110, 61, 117, 132, 121, 108, 92, 82, 73, 65, 59, 54, 52, 48, 46, + 71, 74, 79, 85, 94, 105, 116, 131, 144, 152, 131, 103, 90, 93, 118, 119, + 118, 111, 95, 162, 167, 159, 149, 143, 142, 141, 143, 145, 149, 154, 163, 171, + 178, 176, 172, 179, 183, 198, 211, 203, 199, 225, 226, 215, 191, 182, 189, 183, + 161, 146, 156, 87, 176, 202, 198, 193, 193, 196, 196, 193, 198, 169, 125, 151, + 221, 238, 94, 150, 198, 203, 201, 196, 202, 178, 143, 154, 176, 199, 141, 114, + 192, 197, 198, 193, 170, 167, 149, 174, 152, 140, 124, 67, 154, 173, 174, 171, + 170, 180, 176, 159, 170, 160, 150, 108, 169, 198, 190, 172, 152, 119, 129, 129, + 136, 86, 71, 120, 129, 117, 102, 89, 79, 70, 62, 57, 54, 51, 47, 46, + 72, 74, 78, 84, 94, 105, 116, 130, 143, 151, 135, 106, 99, 108, 115, 123, + 119, 113, 94, 158, 167, 160, 152, 146, 144, 143, 145, 148, 151, 156, 163, 172, + 176, 171, 175, 180, 185, 200, 203, 196, 200, 225, 223, 220, 206, 171, 181, 192, + 188, 187, 160, 89, 175, 202, 198, 193, 193, 196, 194, 183, 172, 124, 175, 226, + 239, 198, 78, 151, 197, 200, 198, 193, 193, 160, 154, 183, 191, 192, 106, 115, + 192, 198, 196, 196, 180, 172, 168, 168, 139, 138, 146, 67, 155, 175, 175, 173, + 171, 175, 164, 152, 151, 140, 135, 104, 149, 194, 195, 168, 149, 125, 139, 134, + 128, 67, 80, 124, 125, 114, 100, 87, 77, 69, 60, 56, 53, 51, 47, 46, + 71, 72, 77, 83, 92, 103, 114, 128, 140, 150, 142, 117, 112, 119, 107, 132, + 133, 125, 92, 150, 169, 164, 156, 152, 147, 147, 148, 151, 153, 159, 164, 169, + 172, 171, 174, 172, 187, 200, 197, 194, 203, 224, 219, 216, 159, 168, 132, 178, + 192, 148, 124, 94, 175, 204, 198, 190, 194, 198, 193, 170, 127, 183, 239, 236, + 204, 169, 81, 151, 197, 199, 196, 193, 184, 186, 167, 193, 194, 189, 105, 116, + 192, 197, 194, 191, 190, 165, 176, 168, 143, 147, 161, 69, 157, 177, 178, 178, + 172, 164, 148, 151, 136, 131, 132, 133, 140, 172, 175, 150, 140, 131, 125, 118, + 85, 55, 105, 128, 121, 110, 97, 84, 75, 67, 59, 55, 53, 50, 47, 46, + 71, 72, 77, 82, 91, 102, 113, 126, 139, 150, 149, 130, 117, 126, 113, 144, + 149, 141, 92, 145, 172, 168, 159, 154, 149, 148, 150, 153, 156, 162, 164, 166, + 171, 171, 167, 172, 179, 187, 196, 191, 207, 222, 216, 210, 87, 87, 129, 197, + 159, 92, 142, 98, 175, 205, 198, 190, 194, 199, 193, 163, 192, 244, 236, 210, + 204, 196, 93, 150, 196, 198, 194, 186, 169, 204, 160, 186, 182, 183, 115, 115, + 191, 196, 193, 184, 190, 158, 160, 167, 155, 155, 155, 69, 158, 179, 180, 182, + 178, 167, 151, 149, 137, 142, 143, 155, 150, 159, 153, 118, 116, 126, 119, 96, + 58, 78, 128, 131, 117, 106, 93, 82, 72, 66, 58, 54, 52, 49, 47, 46, + 70, 71, 76, 82, 90, 101, 112, 125, 139, 150, 155, 142, 129, 133, 124, 150, + 139, 120, 96, 130, 173, 173, 161, 156, 152, 151, 153, 156, 160, 164, 165, 167, + 174, 166, 170, 195, 181, 170, 186, 187, 208, 218, 213, 209, 150, 119, 133, 139, + 79, 118, 186, 98, 174, 204, 198, 191, 194, 198, 193, 194, 236, 212, 201, 207, + 197, 216, 90, 151, 196, 196, 192, 181, 178, 195, 147, 185, 186, 189, 118, 113, + 190, 195, 192, 185, 186, 165, 155, 168, 160, 159, 159, 69, 158, 179, 181, 184, + 186, 181, 168, 147, 135, 135, 132, 154, 150, 145, 135, 109, 122, 123, 100, 71, + 67, 115, 136, 132, 114, 103, 90, 79, 70, 64, 57, 54, 51, 48, 46, 46, + 70, 71, 76, 81, 89, 100, 111, 124, 137, 147, 156, 148, 137, 138, 130, 150, + 125, 110, 117, 116, 169, 176, 164, 160, 157, 156, 159, 161, 163, 164, 165, 169, + 175, 166, 179, 212, 194, 161, 168, 185, 209, 213, 212, 211, 184, 197, 165, 131, + 122, 201, 192, 90, 173, 203, 199, 193, 193, 197, 193, 205, 229, 170, 163, 189, + 167, 218, 89, 151, 195, 194, 190, 189, 209, 189, 138, 168, 182, 186, 127, 114, + 189, 193, 191, 188, 172, 162, 161, 168, 158, 157, 163, 67, 157, 179, 181, 184, + 189, 189, 183, 158, 139, 132, 133, 153, 133, 123, 120, 122, 132, 99, 66, 67, + 102, 140, 141, 132, 113, 102, 87, 77, 69, 63, 56, 53, 50, 48, 46, 46, + 69, 71, 76, 80, 88, 99, 109, 122, 133, 143, 155, 150, 136, 140, 128, 148, + 143, 152, 153, 117, 160, 176, 170, 165, 162, 162, 164, 166, 167, 165, 166, 169, + 172, 173, 180, 199, 195, 148, 141, 184, 210, 211, 212, 204, 209, 201, 200, 205, + 210, 222, 213, 100, 172, 201, 200, 195, 193, 194, 193, 199, 200, 192, 206, 160, + 208, 219, 85, 149, 194, 193, 189, 190, 191, 168, 148, 157, 150, 141, 87, 114, + 188, 193, 191, 186, 150, 141, 155, 163, 158, 152, 153, 65, 156, 177, 180, 183, + 187, 187, 184, 163, 146, 142, 147, 135, 110, 124, 140, 130, 97, 67, 84, 116, + 148, 147, 145, 131, 113, 102, 86, 76, 68, 63, 56, 53, 50, 47, 46, 46, + 68, 73, 77, 81, 87, 97, 105, 117, 129, 140, 149, 154, 151, 143, 122, 132, + 155, 148, 155, 115, 140, 171, 177, 171, 166, 164, 170, 168, 172, 167, 171, 169, + 173, 177, 170, 151, 184, 107, 111, 185, 212, 208, 208, 203, 218, 203, 211, 212, + 213, 230, 228, 102, 167, 196, 200, 196, 192, 194, 191, 191, 187, 189, 217, 205, + 191, 184, 84, 146, 192, 192, 190, 183, 154, 155, 174, 187, 195, 177, 117, 117, + 186, 196, 191, 188, 135, 101, 103, 135, 149, 152, 144, 64, 157, 176, 180, 181, + 184, 181, 167, 134, 149, 144, 119, 93, 103, 112, 104, 106, 115, 131, 154, 163, + 163, 155, 144, 132, 117, 102, 89, 77, 69, 63, 57, 53, 49, 47, 46, 46, + 68, 72, 77, 80, 86, 95, 103, 114, 124, 136, 146, 153, 149, 134, 128, 129, + 142, 131, 141, 145, 118, 163, 174, 177, 173, 172, 175, 171, 170, 168, 169, 173, + 177, 202, 169, 173, 152, 71, 125, 186, 210, 206, 205, 201, 217, 189, 197, 210, + 191, 224, 203, 104, 161, 194, 200, 200, 195, 190, 188, 194, 207, 202, 183, 174, + 154, 158, 72, 146, 189, 194, 189, 182, 185, 203, 188, 185, 192, 180, 120, 114, + 186, 197, 195, 187, 173, 151, 114, 109, 123, 129, 127, 63, 152, 177, 180, 186, + 184, 168, 143, 136, 148, 138, 74, 92, 150, 163, 163, 172, 176, 177, 181, 178, + 169, 157, 146, 132, 117, 103, 90, 78, 70, 63, 57, 53, 49, 47, 47, 46, + 69, 72, 76, 79, 85, 93, 100, 110, 119, 131, 142, 150, 146, 136, 138, 123, + 119, 120, 155, 157, 131, 143, 175, 172, 177, 173, 174, 174, 168, 165, 163, 172, + 197, 204, 176, 174, 107, 81, 152, 192, 204, 198, 199, 202, 204, 186, 200, 197, + 186, 209, 170, 119, 150, 195, 193, 195, 196, 193, 185, 196, 213, 202, 161, 117, + 150, 157, 76, 151, 190, 193, 191, 185, 205, 210, 168, 173, 177, 168, 113, 118, + 183, 190, 192, 181, 178, 164, 157, 152, 127, 118, 131, 64, 156, 175, 180, 180, + 178, 158, 133, 126, 130, 131, 98, 124, 183, 186, 193, 196, 196, 190, 184, 180, + 169, 157, 147, 132, 117, 103, 91, 80, 71, 64, 57, 53, 49, 48, 47, 46, + 69, 72, 75, 78, 84, 91, 96, 106, 116, 127, 138, 148, 150, 154, 166, 157, + 151, 142, 159, 163, 148, 143, 153, 171, 179, 179, 174, 170, 162, 166, 170, 193, + 201, 193, 180, 158, 74, 119, 169, 195, 198, 187, 193, 198, 193, 191, 202, 195, + 194, 221, 203, 159, 135, 179, 186, 193, 196, 192, 181, 184, 202, 183, 198, 173, + 122, 140, 90, 139, 190, 193, 189, 182, 202, 184, 154, 170, 166, 163, 120, 111, + 176, 184, 186, 181, 181, 134, 154, 157, 164, 160, 152, 81, 148, 175, 182, 184, + 178, 149, 137, 126, 111, 107, 116, 115, 144, 152, 175, 186, 186, 185, 182, 176, + 171, 159, 147, 134, 119, 105, 93, 82, 72, 65, 57, 53, 49, 48, 47, 46, + 69, 71, 74, 76, 82, 88, 92, 101, 111, 123, 134, 145, 148, 148, 159, 171, + 167, 163, 164, 158, 152, 166, 139, 162, 168, 173, 164, 156, 158, 168, 182, 203, + 197, 186, 166, 98, 88, 147, 181, 192, 189, 183, 191, 187, 192, 189, 187, 191, + 198, 213, 213, 211, 162, 163, 175, 182, 190, 186, 181, 186, 187, 181, 201, 197, + 123, 132, 118, 134, 178, 187, 185, 194, 193, 162, 158, 168, 162, 164, 130, 97, + 165, 179, 172, 168, 170, 108, 158, 154, 157, 156, 158, 114, 128, 169, 175, 176, + 174, 134, 132, 101, 106, 104, 114, 99, 72, 103, 145, 138, 140, 150, 157, 164, + 166, 158, 147, 137, 122, 109, 95, 84, 73, 66, 58, 53, 50, 48, 47, 46, + 69, 71, 74, 75, 81, 86, 89, 97, 105, 117, 128, 140, 151, 152, 152, 160, + 141, 161, 174, 133, 128, 145, 144, 167, 160, 149, 149, 164, 192, 183, 148, 143, + 173, 170, 116, 69, 129, 164, 188, 191, 197, 206, 214, 200, 193, 188, 193, 205, + 204, 206, 200, 189, 199, 216, 205, 148, 176, 192, 188, 191, 183, 171, 168, 182, + 194, 195, 188, 164, 153, 168, 196, 207, 172, 151, 150, 162, 159, 154, 111, 113, + 149, 151, 147, 133, 127, 89, 156, 124, 142, 145, 140, 132, 138, 145, 156, 178, + 176, 109, 111, 97, 118, 111, 85, 68, 88, 119, 109, 84, 87, 98, 107, 125, + 136, 144, 146, 138, 125, 112, 99, 85, 75, 66, 58, 54, 50, 48, 47, 46, + 69, 71, 73, 74, 80, 84, 88, 95, 101, 112, 124, 135, 140, 150, 152, 154, + 144, 167, 162, 130, 102, 108, 131, 163, 166, 155, 160, 196, 201, 159, 145, 173, + 168, 137, 76, 110, 150, 170, 184, 182, 196, 210, 214, 198, 187, 190, 203, 208, + 199, 205, 191, 180, 204, 199, 185, 112, 162, 210, 198, 184, 182, 156, 176, 191, + 175, 179, 181, 177, 132, 146, 203, 188, 148, 150, 154, 162, 160, 144, 121, 140, + 130, 115, 115, 113, 106, 100, 145, 135, 138, 132, 128, 135, 147, 121, 134, 172, + 166, 93, 81, 78, 98, 103, 91, 91, 109, 115, 91, 80, 88, 95, 93, 99, + 107, 122, 136, 136, 125, 117, 101, 87, 76, 67, 59, 55, 51, 48, 47, 46, + 70, 70, 72, 73, 79, 82, 87, 93, 98, 109, 119, 130, 140, 145, 152, 152, + 142, 171, 153, 156, 158, 158, 177, 180, 189, 174, 178, 220, 201, 190, 185, 211, + 175, 86, 92, 145, 161, 170, 182, 180, 200, 208, 208, 188, 183, 192, 202, 197, + 202, 197, 177, 187, 205, 186, 162, 91, 158, 211, 191, 174, 173, 170, 189, 181, + 153, 154, 164, 172, 111, 124, 187, 160, 145, 160, 161, 163, 164, 142, 161, 114, + 100, 87, 85, 64, 70, 113, 145, 138, 134, 129, 127, 135, 130, 99, 107, 173, + 173, 132, 110, 117, 112, 114, 100, 99, 123, 113, 101, 97, 106, 106, 98, 97, + 93, 94, 106, 126, 125, 121, 103, 89, 78, 69, 61, 56, 52, 49, 47, 46, + 69, 70, 72, 72, 78, 81, 85, 91, 94, 105, 113, 124, 133, 140, 147, 152, + 148, 143, 145, 168, 177, 186, 199, 200, 212, 136, 195, 212, 172, 188, 184, 159, + 95, 94, 139, 154, 161, 169, 179, 174, 185, 180, 177, 172, 177, 187, 198, 198, + 197, 191, 187, 197, 206, 182, 174, 88, 147, 164, 137, 149, 164, 172, 185, 177, + 160, 161, 159, 146, 94, 123, 183, 171, 169, 173, 150, 127, 114, 68, 71, 78, + 107, 77, 124, 132, 128, 157, 152, 143, 137, 130, 127, 135, 130, 100, 110, 175, + 179, 152, 126, 124, 124, 129, 88, 100, 123, 97, 93, 89, 92, 86, 80, 82, + 82, 82, 78, 105, 126, 119, 106, 92, 80, 71, 62, 57, 52, 49, 47, 45, + 68, 69, 71, 72, 77, 79, 83, 88, 93, 101, 108, 117, 125, 133, 142, 146, + 149, 147, 142, 145, 176, 175, 193, 207, 181, 164, 214, 193, 145, 139, 87, 68, + 107, 137, 153, 161, 159, 165, 172, 169, 168, 143, 129, 128, 131, 134, 139, 137, + 129, 119, 118, 126, 130, 118, 121, 96, 149, 139, 109, 101, 105, 110, 112, 113, + 108, 107, 99, 97, 87, 126, 160, 130, 112, 101, 82, 72, 77, 72, 88, 103, + 93, 103, 148, 125, 100, 108, 95, 96, 92, 86, 85, 95, 90, 83, 114, 173, + 183, 164, 126, 118, 125, 103, 88, 117, 101, 71, 75, 80, 84, 78, 74, 68, + 73, 76, 66, 78, 115, 120, 108, 94, 82, 74, 64, 57, 53, 50, 47, 45, + 68, 68, 70, 71, 76, 77, 81, 86, 92, 99, 104, 111, 119, 126, 135, 141, + 151, 150, 145, 131, 118, 120, 145, 148, 117, 159, 157, 108, 100, 78, 93, 138, + 149, 155, 157, 153, 154, 161, 166, 164, 161, 137, 126, 130, 132, 130, 131, 139, + 137, 128, 125, 130, 130, 132, 128, 136, 156, 150, 132, 124, 124, 122, 120, 119, + 118, 122, 124, 120, 124, 138, 145, 130, 118, 116, 118, 120, 120, 113, 116, 114, + 115, 128, 135, 118, 107, 114, 115, 116, 114, 113, 113, 114, 118, 123, 151, 177, + 183, 177, 145, 117, 102, 78, 105, 99, 77, 77, 78, 80, 83, 80, 79, 73, + 67, 61, 60, 57, 95, 119, 109, 95, 83, 74, 65, 58, 53, 51, 48, 46, + 68, 68, 70, 71, 75, 76, 79, 84, 90, 96, 99, 105, 112, 119, 128, 136, + 147, 148, 150, 151, 145, 135, 128, 113, 100, 95, 97, 101, 117, 125, 138, 151, + 152, 154, 152, 149, 149, 155, 158, 160, 158, 151, 153, 160, 164, 160, 163, 169, + 164, 158, 156, 158, 157, 161, 152, 158, 157, 159, 155, 153, 152, 149, 147, 149, + 148, 147, 147, 147, 147, 148, 152, 144, 143, 144, 146, 146, 147, 140, 139, 136, + 146, 144, 148, 142, 142, 144, 142, 139, 139, 138, 139, 137, 150, 151, 161, 181, + 180, 183, 166, 136, 93, 104, 104, 81, 77, 88, 76, 79, 78, 76, 73, 69, + 63, 59, 62, 45, 78, 116, 109, 95, 83, 74, 65, 58, 54, 51, 48, 47, + 67, 68, 70, 71, 74, 75, 77, 82, 87, 92, 94, 99, 106, 113, 122, 129, + 140, 148, 145, 146, 143, 145, 143, 139, 138, 137, 135, 140, 138, 146, 160, 156, + 151, 147, 149, 145, 145, 151, 153, 157, 155, 157, 162, 165, 169, 164, 165, 177, + 172, 163, 162, 164, 166, 168, 164, 161, 159, 157, 158, 161, 159, 157, 154, 154, + 157, 154, 153, 152, 148, 151, 151, 147, 148, 147, 148, 150, 150, 145, 141, 145, + 146, 146, 145, 145, 143, 148, 148, 147, 146, 144, 144, 146, 155, 158, 166, 177, + 177, 168, 142, 121, 108, 106, 90, 84, 89, 88, 72, 76, 73, 75, 71, 67, + 63, 64, 61, 41, 68, 110, 110, 95, 83, 74, 65, 59, 54, 51, 48, 47, + 67, 68, 69, 70, 71, 73, 76, 79, 83, 86, 91, 96, 104, 109, 116, 122, + 132, 136, 138, 140, 141, 141, 142, 143, 145, 142, 144, 144, 145, 153, 155, 149, + 143, 141, 139, 137, 139, 143, 145, 147, 148, 150, 155, 157, 159, 157, 158, 170, + 167, 157, 154, 156, 159, 159, 156, 152, 151, 149, 149, 150, 149, 147, 146, 146, + 147, 146, 145, 144, 143, 144, 143, 142, 141, 140, 140, 141, 141, 139, 137, 137, + 138, 135, 135, 136, 134, 135, 136, 137, 136, 136, 139, 143, 149, 154, 163, 170, + 158, 109, 96, 105, 112, 106, 134, 127, 114, 96, 80, 73, 73, 70, 63, 63, + 56, 55, 44, 41, 60, 109, 107, 97, 85, 75, 65, 59, 54, 51, 49, 47, + 67, 68, 69, 69, 69, 72, 74, 77, 81, 84, 89, 94, 100, 105, 111, 116, + 123, 127, 131, 132, 134, 135, 136, 138, 141, 141, 140, 140, 143, 149, 148, 143, + 139, 135, 132, 131, 134, 137, 139, 139, 140, 143, 148, 149, 150, 149, 152, 162, + 160, 150, 147, 148, 151, 152, 149, 144, 143, 142, 141, 141, 140, 139, 138, 138, + 138, 138, 137, 136, 136, 135, 134, 134, 133, 132, 132, 133, 133, 132, 131, 128, + 127, 126, 126, 126, 126, 126, 126, 126, 127, 129, 133, 138, 143, 148, 156, 157, + 134, 98, 102, 99, 84, 91, 163, 178, 168, 154, 141, 127, 112, 92, 69, 57, + 60, 49, 40, 33, 51, 108, 111, 97, 85, 74, 65, 59, 54, 51, 49, 47, + 67, 68, 69, 70, 70, 71, 74, 75, 79, 83, 87, 91, 95, 100, 106, 110, + 115, 119, 123, 124, 127, 129, 130, 132, 134, 134, 135, 135, 138, 142, 141, 137, + 132, 129, 126, 125, 128, 131, 133, 134, 134, 136, 140, 143, 144, 142, 145, 154, + 152, 144, 141, 141, 143, 144, 142, 138, 136, 135, 135, 134, 134, 133, 132, 132, + 132, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 126, 125, 124, 123, 121, + 120, 119, 118, 118, 118, 118, 118, 119, 120, 123, 127, 132, 139, 143, 153, 145, + 107, 86, 88, 80, 61, 81, 170, 196, 193, 189, 183, 173, 163, 149, 121, 61, + 55, 42, 28, 27, 53, 108, 110, 96, 84, 73, 64, 58, 53, 50, 49, 47, + 67, 68, 69, 70, 70, 71, 73, 74, 77, 81, 85, 88, 92, 97, 102, 106, + 110, 113, 116, 118, 121, 122, 125, 126, 128, 128, 130, 130, 134, 136, 134, 131, + 127, 124, 122, 122, 125, 127, 129, 129, 129, 131, 135, 137, 139, 136, 138, 146, + 146, 139, 136, 135, 137, 139, 137, 133, 131, 130, 129, 129, 128, 127, 127, 126, + 126, 125, 124, 123, 122, 121, 121, 119, 118, 117, 117, 119, 118, 117, 116, 115, + 114, 113, 113, 113, 113, 113, 113, 113, 114, 118, 122, 127, 134, 140, 149, 135, + 91, 66, 54, 67, 61, 88, 172, 192, 193, 193, 192, 189, 187, 183, 163, 75, + 38, 24, 22, 34, 63, 109, 107, 94, 82, 72, 63, 58, 53, 50, 48, 46, + 67, 68, 69, 70, 70, 71, 72, 73, 76, 78, 82, 85, 89, 94, 99, 102, + 105, 108, 110, 111, 114, 116, 119, 120, 122, 123, 124, 126, 129, 129, 128, 125, + 122, 120, 118, 118, 121, 124, 124, 124, 125, 126, 129, 132, 134, 131, 132, 139, + 139, 134, 129, 127, 130, 133, 131, 127, 126, 125, 124, 124, 123, 122, 121, 121, + 120, 119, 119, 117, 116, 115, 114, 113, 112, 111, 110, 111, 111, 110, 110, 108, + 108, 107, 106, 106, 106, 106, 106, 107, 108, 112, 117, 123, 130, 137, 145, 125, + 88, 64, 47, 77, 70, 96, 175, 192, 193, 193, 194, 193, 190, 187, 172, 92, + 39, 23, 47, 45, 67, 107, 108, 93, 81, 71, 62, 57, 52, 49, 47, 45, + 67, 68, 69, 70, 70, 71, 71, 72, 74, 76, 79, 82, 86, 89, 93, 96, + 101, 103, 104, 105, 108, 110, 113, 115, 114, 116, 118, 121, 124, 122, 120, 117, + 116, 114, 113, 114, 117, 119, 119, 119, 119, 120, 123, 125, 127, 124, 125, 131, + 131, 128, 122, 120, 123, 125, 124, 121, 120, 119, 118, 118, 117, 116, 115, 114, + 113, 112, 112, 109, 108, 107, 107, 106, 106, 105, 104, 103, 103, 102, 101, 101, + 100, 99, 99, 98, 98, 98, 98, 100, 101, 106, 112, 117, 124, 132, 139, 119, + 88, 67, 61, 84, 71, 94, 172, 188, 189, 188, 188, 186, 185, 187, 170, 88, + 48, 48, 69, 45, 73, 109, 108, 92, 80, 70, 61, 56, 52, 49, 47, 45, + 66, 67, 68, 69, 69, 70, 70, 71, 72, 74, 78, 80, 82, 85, 88, 91, + 95, 98, 99, 100, 102, 104, 107, 108, 107, 109, 111, 115, 117, 115, 113, 111, + 109, 108, 107, 109, 111, 113, 112, 113, 114, 115, 117, 120, 121, 118, 119, 124, + 125, 121, 116, 114, 116, 118, 118, 116, 114, 113, 112, 112, 112, 111, 110, 107, + 106, 105, 105, 103, 102, 101, 100, 100, 100, 99, 98, 97, 96, 95, 94, 94, + 93, 92, 91, 91, 91, 91, 91, 93, 95, 100, 105, 111, 118, 126, 135, 122, + 85, 62, 65, 74, 65, 85, 159, 181, 181, 180, 180, 176, 176, 175, 147, 52, + 41, 66, 57, 41, 88, 113, 102, 90, 79, 69, 61, 56, 52, 49, 47, 45, + 66, 67, 67, 68, 69, 69, 70, 71, 72, 74, 77, 79, 81, 84, 87, 89, + 90, 92, 94, 96, 100, 101, 103, 104, 103, 104, 109, 113, 112, 111, 108, 107, + 104, 102, 103, 105, 108, 109, 108, 109, 113, 114, 116, 116, 114, 113, 114, 119, + 120, 118, 112, 111, 111, 112, 113, 112, 111, 109, 107, 107, 107, 106, 105, 102, + 101, 100, 100, 99, 98, 97, 97, 95, 93, 93, 92, 91, 91, 90, 89, 88, + 88, 88, 88, 87, 87, 87, 87, 89, 90, 95, 99, 105, 113, 122, 132, 127, + 87, 55, 65, 61, 58, 69, 132, 166, 172, 172, 172, 170, 168, 156, 100, 37, + 53, 65, 48, 56, 103, 115, 101, 87, 77, 69, 62, 56, 53, 49, 45, 45, + 66, 67, 67, 68, 69, 69, 70, 71, 71, 73, 75, 77, 79, 81, 83, 85, + 87, 88, 90, 92, 94, 96, 98, 99, 99, 100, 104, 107, 106, 104, 103, 102, + 101, 100, 101, 103, 104, 105, 104, 105, 107, 109, 111, 111, 109, 108, 109, 113, + 115, 112, 108, 105, 106, 106, 108, 108, 106, 105, 103, 102, 101, 100, 99, 99, + 98, 97, 96, 94, 93, 92, 91, 90, 89, 89, 88, 87, 87, 86, 85, 85, + 84, 84, 84, 83, 83, 83, 83, 84, 85, 88, 93, 101, 109, 116, 127, 129, + 92, 52, 61, 49, 48, 50, 90, 134, 157, 159, 153, 148, 121, 92, 65, 45, + 65, 56, 38, 76, 109, 109, 102, 85, 75, 68, 61, 55, 52, 49, 45, 45, + 66, 67, 67, 68, 69, 69, 70, 71, 71, 72, 74, 75, 76, 78, 80, 81, + 82, 84, 86, 88, 89, 91, 93, 94, 94, 96, 100, 101, 99, 98, 97, 97, + 98, 97, 98, 99, 100, 101, 101, 101, 103, 105, 107, 106, 105, 104, 105, 108, + 109, 107, 103, 101, 101, 102, 102, 103, 101, 100, 98, 96, 96, 95, 94, 94, + 93, 93, 92, 90, 88, 87, 87, 86, 85, 84, 84, 83, 82, 82, 81, 80, + 80, 80, 80, 79, 79, 79, 79, 78, 80, 83, 87, 96, 104, 111, 121, 128, + 109, 65, 52, 47, 46, 48, 59, 74, 88, 89, 87, 85, 63, 46, 51, 62, + 65, 45, 59, 98, 113, 104, 99, 82, 73, 67, 59, 54, 52, 49, 45, 45, + 66, 67, 67, 68, 69, 69, 70, 71, 71, 71, 72, 74, 74, 76, 77, 78, + 79, 81, 83, 85, 87, 89, 90, 91, 92, 95, 97, 97, 95, 94, 94, 94, + 94, 94, 96, 98, 99, 100, 99, 99, 100, 102, 104, 103, 102, 100, 102, 104, + 106, 104, 100, 98, 97, 98, 99, 99, 97, 95, 94, 93, 93, 92, 92, 91, + 90, 89, 88, 87, 86, 85, 85, 82, 81, 80, 79, 79, 78, 78, 77, 75, + 75, 75, 75, 74, 74, 74, 74, 76, 76, 81, 85, 92, 100, 107, 117, 126, + 125, 96, 64, 52, 46, 54, 55, 58, 56, 54, 55, 48, 49, 51, 61, 67, + 51, 50, 90, 111, 112, 101, 93, 79, 71, 65, 58, 52, 51, 49, 45, 45, + 66, 67, 67, 68, 69, 69, 70, 71, 71, 71, 71, 72, 74, 75, 76, 77, + 77, 78, 80, 82, 85, 87, 88, 88, 89, 93, 94, 93, 92, 92, 92, 91, + 90, 90, 93, 95, 97, 98, 97, 96, 98, 100, 101, 101, 100, 98, 100, 102, + 103, 102, 99, 95, 95, 96, 97, 96, 95, 93, 91, 92, 92, 91, 90, 88, + 87, 87, 86, 85, 85, 84, 83, 80, 79, 78, 77, 77, 76, 75, 75, 73, + 73, 73, 73, 71, 71, 71, 71, 73, 74, 78, 82, 88, 96, 102, 113, 125, + 126, 124, 104, 70, 53, 57, 54, 54, 54, 50, 52, 53, 43, 46, 57, 49, + 56, 92, 112, 113, 106, 98, 85, 76, 68, 63, 56, 52, 50, 49, 45, 45, + 66, 67, 67, 68, 69, 69, 70, 70, 71, 71, 71, 71, 75, 76, 76, 76, + 76, 77, 79, 81, 82, 83, 85, 85, 86, 89, 90, 89, 89, 89, 90, 89, + 87, 88, 91, 92, 93, 94, 93, 93, 95, 97, 99, 99, 97, 96, 97, 99, + 100, 98, 96, 92, 92, 93, 94, 94, 93, 91, 90, 89, 88, 88, 87, 87, + 87, 86, 86, 84, 83, 82, 82, 79, 79, 78, 77, 77, 76, 75, 74, 72, + 72, 72, 72, 70, 70, 70, 70, 71, 72, 75, 80, 84, 91, 97, 108, 119, + 123, 128, 126, 106, 79, 70, 59, 53, 50, 48, 51, 48, 55, 49, 55, 72, + 92, 113, 117, 110, 101, 92, 82, 73, 66, 62, 55, 51, 50, 49, 45, 45, + 64, 65, 66, 66, 68, 68, 69, 70, 71, 70, 71, 71, 73, 73, 74, 74, + 75, 76, 77, 79, 80, 80, 81, 83, 84, 86, 86, 86, 86, 86, 87, 86, + 86, 87, 89, 91, 91, 92, 91, 90, 92, 94, 95, 95, 94, 93, 93, 94, + 96, 96, 93, 90, 89, 89, 91, 92, 91, 89, 89, 88, 87, 86, 85, 85, + 85, 84, 83, 81, 80, 79, 78, 78, 77, 76, 75, 75, 74, 73, 73, 70, + 69, 69, 68, 68, 68, 68, 68, 68, 70, 73, 77, 81, 87, 93, 101, 113, + 119, 124, 128, 128, 112, 102, 91, 78, 71, 69, 72, 70, 75, 80, 94, 110, + 117, 114, 111, 103, 94, 85, 77, 69, 63, 58, 54, 51, 48, 47, 44, 45, + 64, 64, 65, 66, 67, 68, 69, 70, 70, 70, 71, 71, 71, 71, 72, 73, + 74, 75, 76, 77, 79, 78, 79, 81, 84, 85, 85, 85, 85, 85, 86, 85, + 85, 87, 89, 90, 92, 91, 90, 90, 91, 92, 92, 93, 92, 92, 91, 92, + 94, 95, 92, 89, 87, 87, 89, 90, 89, 88, 87, 87, 86, 85, 85, 83, + 82, 81, 81, 78, 77, 76, 76, 76, 75, 74, 73, 73, 72, 71, 71, 69, + 69, 68, 67, 67, 67, 67, 67, 67, 70, 73, 76, 79, 84, 90, 97, 107, + 113, 120, 125, 129, 129, 126, 123, 117, 111, 108, 107, 106, 111, 116, 119, 119, + 117, 112, 105, 96, 88, 80, 72, 64, 60, 55, 52, 51, 48, 45, 44, 45, + 64, 64, 65, 66, 67, 67, 68, 69, 70, 70, 70, 70, 70, 71, 72, 73, + 74, 74, 75, 76, 78, 77, 79, 81, 83, 84, 84, 84, 84, 84, 85, 84, + 85, 87, 88, 90, 91, 90, 89, 89, 90, 91, 92, 92, 92, 91, 90, 91, + 93, 94, 91, 88, 86, 87, 88, 89, 88, 87, 87, 86, 86, 85, 84, 82, + 81, 80, 80, 78, 76, 76, 75, 75, 74, 73, 72, 72, 71, 70, 70, 69, + 68, 67, 66, 66, 66, 66, 67, 66, 69, 72, 74, 77, 82, 88, 93, 101, + 107, 113, 119, 123, 127, 129, 129, 130, 126, 125, 125, 123, 123, 122, 120, 115, + 111, 104, 97, 90, 83, 75, 68, 62, 58, 53, 51, 50, 47, 45, 44, 45, + 64, 64, 65, 66, 66, 67, 67, 68, 70, 70, 70, 70, 70, 70, 71, 72, + 73, 74, 75, 75, 76, 77, 79, 81, 82, 83, 83, 83, 83, 83, 84, 84, + 84, 86, 88, 89, 89, 89, 88, 87, 89, 90, 90, 91, 90, 89, 89, 89, + 92, 93, 90, 88, 86, 85, 87, 87, 87, 86, 85, 85, 84, 84, 83, 81, + 80, 79, 78, 77, 76, 75, 74, 74, 72, 72, 71, 70, 70, 69, 68, 68, + 67, 66, 66, 66, 66, 66, 65, 65, 67, 70, 71, 74, 78, 83, 88, 95, + 101, 107, 111, 115, 118, 122, 121, 120, 120, 120, 121, 120, 118, 115, 112, 109, + 104, 97, 90, 85, 78, 71, 65, 59, 56, 52, 49, 49, 47, 45, 44, 45, + 64, 64, 65, 66, 66, 66, 67, 68, 69, 69, 69, 69, 69, 70, 71, 71, + 72, 73, 74, 75, 75, 76, 79, 81, 81, 82, 82, 82, 82, 82, 83, 83, + 84, 85, 87, 88, 89, 88, 87, 86, 87, 88, 89, 89, 89, 88, 87, 88, + 91, 92, 89, 87, 85, 84, 85, 86, 86, 85, 84, 84, 83, 82, 82, 80, + 79, 78, 77, 76, 75, 74, 74, 73, 71, 71, 70, 69, 69, 68, 67, 67, + 67, 66, 65, 65, 65, 65, 65, 64, 65, 67, 68, 71, 75, 79, 83, 91, + 96, 101, 106, 110, 112, 114, 113, 113, 115, 116, 115, 113, 112, 110, 108, 103, + 98, 91, 85, 80, 74, 68, 62, 56, 54, 50, 48, 48, 46, 45, 45, 45, + 64, 64, 65, 65, 65, 66, 67, 67, 69, 69, 69, 69, 69, 69, 70, 71, + 71, 72, 73, 74, 73, 75, 78, 81, 80, 81, 81, 81, 81, 81, 82, 82, + 83, 85, 87, 88, 88, 87, 86, 86, 86, 87, 88, 88, 88, 87, 86, 87, + 90, 91, 88, 86, 85, 83, 84, 85, 85, 84, 83, 83, 82, 81, 81, 79, + 78, 77, 76, 76, 75, 74, 74, 71, 71, 70, 69, 69, 68, 67, 66, 67, + 66, 66, 65, 65, 65, 65, 64, 63, 64, 65, 66, 69, 72, 76, 79, 84, + 89, 95, 98, 103, 106, 107, 107, 106, 108, 109, 107, 104, 103, 102, 99, 95, + 91, 85, 80, 75, 69, 63, 58, 54, 52, 48, 47, 47, 46, 45, 45, 45, + 64, 64, 65, 65, 65, 66, 67, 67, 69, 69, 69, 69, 69, 69, 70, 71, + 71, 72, 73, 73, 73, 74, 78, 80, 80, 81, 81, 81, 81, 81, 82, 82, + 83, 85, 86, 87, 87, 86, 86, 85, 85, 86, 87, 88, 87, 86, 85, 86, + 90, 90, 87, 86, 85, 83, 83, 84, 84, 83, 83, 83, 82, 81, 80, 78, + 77, 76, 76, 76, 75, 74, 73, 71, 70, 69, 69, 68, 68, 67, 66, 66, + 66, 65, 65, 65, 65, 65, 64, 63, 63, 65, 65, 67, 70, 74, 76, 79, + 83, 88, 91, 91, 96, 99, 100, 99, 102, 101, 99, 99, 97, 94, 92, 88, + 85, 81, 75, 69, 64, 59, 55, 52, 50, 48, 46, 46, 46, 45, 45, 45, + 64, 64, 65, 65, 65, 65, 65, 65, 66, 67, 67, 68, 68, 69, 70, 71, + 71, 71, 72, 73, 73, 75, 77, 79, 79, 80, 80, 79, 79, 79, 80, 80, + 82, 83, 84, 84, 84, 84, 84, 84, 85, 86, 87, 87, 86, 85, 84, 85, + 86, 88, 86, 83, 81, 79, 79, 82, 83, 83, 83, 81, 79, 79, 78, 77, + 76, 75, 75, 75, 75, 74, 73, 71, 70, 69, 69, 68, 68, 67, 67, 67, + 67, 66, 65, 65, 64, 63, 62, 62, 62, 64, 64, 64, 67, 69, 71, 76, + 79, 83, 86, 87, 90, 93, 93, 92, 92, 92, 92, 91, 89, 87, 85, 82, + 78, 73, 68, 64, 61, 56, 53, 51, 49, 47, 45, 45, 45, 45, 45, 45, + 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 67, 68, 68, 69, 70, 70, + 70, 71, 72, 73, 73, 75, 76, 78, 79, 79, 79, 79, 79, 79, 80, 80, + 81, 82, 83, 83, 83, 83, 83, 84, 84, 85, 86, 86, 85, 84, 83, 83, + 86, 87, 85, 82, 80, 79, 79, 81, 82, 82, 82, 80, 79, 78, 77, 76, + 75, 74, 74, 74, 74, 73, 72, 71, 70, 69, 69, 68, 68, 68, 68, 68, + 67, 66, 65, 65, 64, 62, 61, 61, 62, 63, 64, 63, 65, 67, 69, 71, + 74, 77, 79, 81, 84, 86, 86, 85, 85, 85, 85, 83, 82, 80, 79, 77, + 74, 70, 66, 62, 58, 54, 52, 50, 49, 47, 45, 45, 45, 45, 45, 45, + 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 67, 68, 68, 69, 70, + 70, 71, 71, 72, 73, 74, 76, 77, 77, 78, 78, 78, 78, 78, 79, 80, + 81, 82, 82, 83, 82, 82, 82, 82, 84, 85, 85, 85, 84, 83, 82, 83, + 85, 87, 85, 82, 80, 78, 78, 80, 81, 81, 81, 80, 79, 78, 77, 75, + 74, 73, 73, 73, 73, 72, 71, 71, 70, 69, 69, 68, 68, 68, 68, 67, + 66, 66, 65, 65, 64, 62, 61, 61, 61, 62, 62, 62, 63, 65, 66, 66, + 68, 70, 73, 75, 77, 78, 80, 79, 79, 79, 78, 76, 75, 73, 73, 71, + 68, 64, 62, 59, 56, 52, 50, 50, 48, 46, 45, 45, 45, 45, 45, 45, + 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 66, 67, 67, 68, 68, 69, + 70, 70, 71, 72, 73, 74, 75, 76, 77, 78, 78, 78, 78, 78, 79, 79, + 80, 81, 82, 82, 81, 81, 81, 81, 82, 83, 84, 83, 82, 82, 81, 81, + 84, 86, 84, 81, 79, 78, 78, 79, 80, 80, 80, 79, 78, 77, 77, 75, + 73, 73, 72, 73, 72, 71, 71, 71, 70, 69, 69, 67, 67, 67, 67, 67, + 66, 65, 65, 65, 64, 62, 61, 61, 61, 61, 61, 61, 61, 62, 63, 63, + 64, 67, 69, 71, 72, 73, 74, 74, 74, 74, 74, 72, 71, 69, 67, 65, + 63, 60, 58, 56, 53, 50, 49, 48, 48, 46, 45, 45, 45, 45, 44, 44, + 63, 63, 63, 63, 63, 63, 63, 63, 64, 65, 66, 66, 67, 67, 68, 69, + 69, 70, 71, 72, 74, 74, 74, 74, 76, 77, 77, 77, 77, 77, 78, 78, + 80, 80, 82, 81, 80, 80, 80, 80, 81, 81, 82, 82, 81, 80, 79, 80, + 83, 85, 82, 80, 79, 77, 77, 78, 79, 79, 79, 78, 78, 77, 76, 74, + 73, 72, 72, 72, 72, 71, 70, 70, 70, 69, 69, 67, 67, 67, 67, 66, + 66, 65, 64, 64, 64, 62, 61, 61, 60, 60, 60, 60, 60, 60, 61, 62, + 63, 65, 66, 69, 70, 70, 71, 70, 70, 70, 70, 68, 66, 64, 63, 61, + 59, 57, 54, 53, 50, 47, 47, 47, 47, 46, 45, 45, 45, 45, 44, 44, + 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 65, 66, 66, 67, 68, 68, + 69, 69, 70, 71, 74, 73, 73, 74, 75, 75, 75, 76, 76, 77, 77, 78, + 79, 80, 81, 81, 79, 79, 79, 79, 80, 80, 81, 81, 80, 79, 78, 79, + 82, 83, 81, 79, 78, 76, 77, 77, 77, 77, 77, 77, 77, 76, 75, 74, + 73, 72, 71, 71, 71, 70, 70, 70, 70, 69, 69, 66, 66, 66, 66, 66, + 65, 64, 64, 64, 64, 62, 61, 61, 60, 59, 58, 58, 58, 58, 58, 59, + 59, 61, 63, 65, 66, 66, 66, 65, 64, 64, 64, 63, 61, 60, 59, 58, + 57, 54, 52, 50, 47, 46, 46, 46, 46, 46, 45, 45, 45, 45, 44, 43, + 62, 62, 62, 62, 63, 63, 63, 63, 64, 64, 65, 65, 65, 66, 67, 67, + 68, 69, 70, 71, 73, 73, 73, 73, 74, 74, 74, 74, 75, 75, 76, 77, + 79, 79, 80, 80, 79, 79, 79, 78, 79, 80, 81, 81, 79, 79, 78, 78, + 80, 82, 80, 79, 77, 76, 76, 77, 77, 77, 77, 77, 76, 75, 74, 72, + 72, 71, 71, 71, 71, 70, 70, 70, 69, 68, 68, 66, 66, 66, 66, 65, + 64, 64, 63, 64, 63, 62, 61, 60, 59, 58, 57, 58, 58, 57, 57, 58, + 58, 59, 60, 62, 62, 63, 62, 62, 62, 61, 61, 60, 59, 58, 57, 56, + 55, 53, 52, 49, 48, 46, 45, 45, 46, 45, 45, 45, 45, 45, 44, 43, + 60, 61, 61, 62, 63, 63, 63, 63, 64, 64, 65, 65, 65, 65, 66, 67, + 67, 68, 70, 72, 73, 73, 73, 73, 73, 73, 73, 72, 71, 72, 73, 75, + 78, 78, 79, 79, 79, 79, 79, 78, 78, 79, 79, 80, 79, 78, 78, 77, + 78, 80, 80, 78, 76, 75, 75, 76, 77, 77, 77, 76, 75, 74, 73, 71, + 71, 71, 71, 70, 70, 70, 70, 68, 67, 67, 66, 66, 66, 66, 66, 65, + 64, 63, 63, 62, 61, 60, 60, 59, 59, 58, 58, 58, 58, 58, 58, 59, + 59, 59, 59, 59, 59, 59, 59, 60, 59, 58, 58, 58, 58, 57, 55, 53, + 52, 51, 50, 50, 48, 47, 47, 46, 46, 45, 45, 45, 45, 45, 44, 43, + 60, 61, 61, 62, 63, 63, 63, 63, 64, 64, 65, 65, 65, 65, 66, 67, + 67, 68, 70, 72, 73, 73, 73, 73, 73, 73, 73, 72, 71, 72, 72, 74, + 77, 78, 79, 79, 79, 79, 79, 78, 78, 79, 79, 80, 79, 78, 77, 77, + 78, 80, 80, 78, 76, 75, 75, 75, 76, 76, 76, 76, 75, 74, 73, 71, + 71, 71, 71, 70, 70, 70, 70, 68, 67, 67, 66, 66, 66, 66, 66, 65, + 64, 63, 63, 62, 61, 60, 60, 59, 59, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 57, 56, 55, 55, 56, 55, 54, 53, 51, + 51, 50, 49, 50, 49, 48, 47, 46, 46, 45, 45, 45, 45, 45, 44, 43, + 60, 61, 61, 62, 63, 63, 63, 63, 64, 64, 65, 65, 65, 65, 66, 67, + 67, 68, 70, 72, 73, 73, 73, 73, 73, 73, 73, 72, 71, 72, 72, 74, + 77, 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 78, 77, 77, + 78, 80, 80, 78, 76, 75, 75, 75, 76, 76, 76, 76, 75, 74, 73, 71, + 71, 71, 71, 70, 70, 70, 70, 68, 67, 67, 66, 66, 66, 66, 66, 65, + 64, 63, 63, 62, 61, 60, 60, 59, 59, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 57, 56, 56, 56, 56, 55, 54, 54, 53, 54, 53, 52, 51, 50, + 49, 48, 48, 50, 49, 48, 47, 46, 46, 45, 45, 45, 45, 45, 44, 43, + 18, 17, 17, 16, 16, 17, 17, 18, 19, 19, 19, 20, 19, 19, 20, 22, + 27, 29, 31, 30, 30, 31, 32, 32, 31, 31, 36, 38, 39, 41, 37, 35, + 43, 45, 39, 36, 38, 40, 46, 52, 40, 47, 45, 50, 52, 52, 48, 46, + 54, 45, 41, 43, 41, 37, 33, 35, 41, 35, 31, 36, 38, 34, 30, 30, + 31, 29, 30, 32, 34, 35, 36, 36, 35, 32, 30, 27, 25, 24, 23, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 9, 8, 9, 8, 7, 7, + 18, 17, 17, 16, 16, 17, 17, 18, 19, 19, 19, 20, 20, 20, 21, 22, + 26, 28, 29, 29, 30, 31, 32, 33, 32, 32, 34, 36, 39, 41, 38, 37, + 44, 47, 42, 39, 40, 42, 49, 54, 45, 49, 49, 53, 54, 54, 51, 49, + 58, 49, 45, 45, 42, 37, 35, 38, 41, 35, 35, 39, 38, 34, 29, 30, + 32, 31, 32, 33, 35, 35, 35, 36, 35, 32, 30, 27, 25, 24, 23, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 9, 9, 9, 9, 7, 7, + 18, 17, 17, 16, 16, 17, 17, 18, 19, 20, 20, 20, 21, 21, 22, 22, + 25, 27, 28, 29, 31, 32, 34, 34, 34, 33, 34, 35, 39, 41, 41, 38, + 43, 49, 46, 42, 41, 44, 50, 56, 50, 51, 53, 55, 56, 56, 52, 53, + 59, 51, 49, 49, 44, 38, 38, 41, 40, 37, 39, 42, 39, 34, 29, 31, + 33, 34, 34, 35, 36, 35, 36, 36, 34, 31, 29, 27, 25, 24, 23, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 9, 9, 10, 9, 7, 7, + 18, 17, 17, 16, 16, 17, 17, 18, 20, 20, 20, 20, 21, 21, 22, 22, + 24, 26, 28, 29, 31, 32, 34, 35, 35, 35, 34, 36, 39, 41, 43, 41, + 41, 48, 48, 44, 42, 43, 49, 56, 54, 51, 55, 55, 57, 57, 53, 54, + 60, 52, 52, 51, 45, 39, 41, 43, 41, 39, 42, 43, 38, 33, 30, 32, + 35, 36, 37, 37, 37, 36, 35, 35, 33, 30, 28, 26, 25, 23, 22, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 10, 10, 10, 10, 8, 8, + 18, 17, 17, 16, 16, 17, 17, 18, 20, 20, 20, 19, 21, 21, 22, 24, + 25, 27, 29, 30, 31, 32, 35, 36, 37, 39, 37, 37, 38, 40, 45, 45, + 42, 46, 50, 47, 43, 44, 50, 56, 58, 51, 59, 57, 59, 60, 56, 57, + 60, 53, 54, 50, 46, 43, 45, 44, 42, 44, 45, 42, 37, 33, 33, 35, + 38, 38, 39, 39, 37, 37, 35, 34, 32, 29, 27, 26, 24, 23, 22, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 10, 10, 11, 10, 9, 9, + 18, 17, 17, 16, 16, 17, 17, 18, 20, 19, 19, 19, 21, 21, 23, 24, + 26, 28, 29, 30, 30, 32, 35, 36, 38, 41, 39, 37, 36, 39, 45, 50, + 46, 46, 54, 52, 45, 47, 54, 60, 63, 53, 63, 61, 64, 64, 61, 61, + 61, 54, 57, 50, 47, 45, 46, 44, 43, 47, 44, 39, 35, 33, 36, 39, + 40, 38, 38, 38, 38, 36, 33, 32, 30, 27, 25, 24, 22, 21, 20, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 10, 11, 11, 11, 10, 10, + 18, 17, 17, 16, 16, 17, 17, 18, 19, 19, 19, 19, 20, 22, 23, 24, + 25, 26, 28, 29, 30, 31, 34, 35, 37, 41, 41, 38, 37, 38, 44, 50, + 50, 46, 52, 56, 48, 48, 56, 60, 66, 56, 64, 65, 67, 67, 62, 64, + 60, 55, 57, 51, 47, 48, 47, 42, 46, 49, 43, 38, 36, 36, 38, 41, + 41, 39, 39, 38, 37, 34, 32, 31, 29, 27, 25, 24, 23, 22, 20, 20, + 19, 20, 19, 19, 21, 20, 20, 15, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 10, 9, 11, + 11, 11, 10, 9, 8, 7, 9, 11, 11, 11, 11, 12, 12, 12, 10, 10, + 18, 17, 18, 16, 16, 17, 17, 18, 19, 19, 19, 20, 20, 22, 25, 25, + 25, 27, 29, 30, 31, 33, 34, 36, 38, 41, 44, 44, 41, 39, 42, 47, + 52, 49, 48, 59, 54, 49, 56, 60, 69, 62, 66, 69, 69, 71, 63, 69, + 59, 60, 57, 53, 50, 55, 50, 45, 52, 48, 41, 37, 39, 41, 41, 43, + 42, 41, 40, 37, 35, 31, 30, 30, 29, 27, 26, 25, 24, 22, 21, 21, + 20, 20, 20, 20, 21, 21, 20, 15, 14, 15, 16, 15, 16, 17, 16, 14, + 13, 13, 12, 12, 11, 10, 10, 13, 13, 12, 12, 12, 11, 10, 10, 11, + 11, 11, 10, 9, 9, 9, 10, 13, 12, 11, 11, 13, 13, 13, 12, 11, + 18, 17, 18, 17, 17, 17, 17, 18, 18, 18, 19, 20, 21, 23, 26, 26, + 27, 29, 32, 32, 33, 35, 36, 38, 40, 43, 47, 47, 44, 43, 43, 45, + 53, 55, 52, 56, 62, 54, 54, 62, 71, 68, 70, 73, 73, 74, 66, 72, + 61, 65, 60, 53, 59, 59, 51, 54, 55, 46, 38, 38, 43, 46, 46, 45, + 42, 40, 38, 35, 34, 31, 29, 29, 28, 26, 25, 24, 23, 21, 20, 21, + 20, 20, 20, 20, 21, 21, 20, 15, 14, 15, 16, 15, 16, 17, 17, 14, + 14, 13, 12, 12, 11, 10, 11, 13, 13, 12, 12, 12, 11, 10, 10, 11, + 11, 11, 10, 9, 9, 9, 10, 13, 12, 11, 11, 13, 13, 13, 12, 12, + 19, 18, 18, 17, 17, 17, 18, 18, 18, 19, 20, 21, 22, 24, 28, 28, + 28, 30, 34, 34, 36, 37, 40, 40, 41, 45, 49, 49, 49, 50, 46, 45, + 51, 61, 59, 52, 65, 61, 54, 64, 74, 75, 74, 77, 78, 78, 71, 75, + 63, 69, 62, 56, 64, 60, 57, 62, 55, 42, 38, 42, 48, 51, 52, 48, + 44, 40, 37, 34, 33, 31, 29, 29, 28, 26, 24, 23, 22, 20, 19, 19, + 20, 20, 20, 20, 21, 21, 20, 15, 14, 15, 16, 16, 17, 18, 17, 15, + 14, 13, 13, 13, 12, 11, 11, 13, 13, 12, 12, 12, 11, 10, 10, 11, + 11, 11, 10, 9, 9, 9, 11, 13, 12, 11, 11, 13, 13, 13, 13, 13, + 20, 19, 19, 18, 18, 18, 18, 18, 18, 18, 21, 23, 23, 27, 30, 31, + 28, 31, 35, 37, 38, 39, 41, 42, 42, 46, 48, 51, 54, 55, 52, 49, + 50, 61, 66, 55, 64, 69, 60, 63, 75, 82, 78, 82, 84, 83, 77, 80, + 69, 72, 63, 62, 65, 60, 65, 63, 49, 43, 45, 49, 54, 55, 54, 48, + 43, 37, 34, 32, 33, 31, 29, 28, 27, 25, 23, 21, 20, 18, 17, 19, + 20, 20, 20, 20, 21, 21, 20, 15, 14, 15, 17, 17, 18, 19, 18, 16, + 15, 14, 14, 13, 12, 11, 11, 13, 13, 12, 12, 12, 11, 10, 10, 11, + 11, 11, 10, 10, 10, 10, 11, 13, 12, 11, 11, 13, 13, 13, 13, 14, + 20, 19, 20, 18, 18, 19, 19, 18, 19, 19, 23, 24, 25, 29, 33, 34, + 30, 33, 38, 41, 41, 42, 44, 45, 47, 49, 51, 53, 56, 59, 59, 57, + 53, 59, 68, 65, 65, 75, 71, 66, 78, 90, 82, 88, 92, 89, 84, 85, + 75, 75, 64, 71, 67, 69, 73, 60, 47, 46, 52, 56, 59, 57, 54, 46, + 41, 36, 33, 32, 32, 31, 29, 28, 27, 25, 24, 21, 20, 18, 17, 19, + 20, 20, 20, 20, 21, 21, 20, 15, 14, 15, 17, 17, 18, 19, 18, 16, + 15, 15, 14, 14, 13, 12, 12, 13, 13, 12, 12, 12, 11, 10, 10, 11, + 11, 11, 10, 10, 10, 10, 11, 13, 12, 11, 11, 13, 13, 13, 13, 14, + 20, 19, 20, 19, 19, 19, 19, 18, 18, 20, 23, 25, 26, 30, 34, 35, + 32, 35, 39, 42, 43, 44, 46, 48, 50, 51, 52, 53, 57, 61, 65, 63, + 56, 55, 67, 76, 69, 78, 84, 70, 79, 95, 86, 93, 97, 94, 90, 90, + 82, 76, 66, 79, 70, 79, 77, 58, 49, 52, 58, 60, 61, 58, 53, 44, + 39, 35, 32, 32, 30, 31, 30, 28, 27, 25, 24, 21, 20, 18, 17, 19, + 19, 20, 19, 19, 20, 19, 20, 16, 15, 16, 17, 18, 20, 19, 19, 16, + 16, 15, 14, 14, 13, 12, 12, 13, 13, 12, 12, 12, 11, 10, 9, 9, + 10, 11, 11, 11, 11, 11, 12, 12, 12, 11, 11, 13, 13, 13, 13, 14, + 21, 21, 22, 21, 20, 20, 21, 20, 18, 22, 27, 29, 32, 35, 36, 36, + 30, 33, 38, 35, 35, 42, 50, 47, 49, 52, 57, 60, 58, 68, 71, 65, + 62, 63, 67, 76, 77, 75, 103, 74, 77, 100, 96, 95, 98, 93, 98, 95, + 89, 79, 74, 78, 78, 84, 74, 61, 62, 63, 62, 63, 60, 56, 52, 44, + 40, 37, 35, 34, 34, 32, 30, 27, 25, 25, 24, 22, 21, 20, 19, 16, + 16, 17, 16, 17, 17, 16, 17, 17, 17, 18, 20, 20, 20, 20, 19, 14, + 12, 12, 11, 12, 12, 12, 13, 15, 15, 14, 14, 13, 12, 11, 9, 9, + 9, 9, 9, 11, 12, 12, 12, 11, 11, 11, 11, 13, 13, 14, 15, 14, + 21, 22, 22, 22, 20, 20, 23, 22, 19, 23, 28, 31, 35, 37, 37, 36, + 28, 31, 33, 37, 41, 41, 45, 51, 50, 52, 53, 58, 61, 54, 65, 73, + 69, 74, 67, 68, 84, 76, 103, 88, 68, 106, 106, 106, 101, 97, 106, 97, + 91, 72, 82, 84, 86, 77, 61, 67, 74, 73, 64, 60, 57, 54, 52, 45, + 41, 38, 36, 35, 35, 33, 31, 26, 24, 23, 23, 22, 21, 21, 20, 16, + 14, 15, 15, 15, 16, 15, 17, 19, 19, 20, 22, 21, 22, 21, 19, 14, + 12, 11, 11, 12, 12, 12, 14, 17, 16, 16, 15, 14, 13, 12, 10, 8, + 8, 8, 9, 11, 11, 12, 11, 9, 9, 10, 12, 13, 14, 15, 15, 15, + 20, 20, 22, 21, 19, 21, 23, 24, 22, 25, 30, 32, 36, 38, 38, 37, + 34, 36, 37, 46, 48, 56, 61, 68, 62, 63, 64, 58, 53, 56, 53, 56, + 72, 90, 87, 76, 83, 85, 94, 101, 79, 113, 115, 114, 108, 105, 110, 99, + 97, 83, 93, 82, 91, 72, 64, 82, 82, 78, 67, 57, 53, 51, 49, 44, + 41, 38, 36, 34, 34, 32, 31, 26, 24, 24, 24, 22, 23, 23, 21, 18, + 18, 19, 18, 19, 19, 18, 19, 20, 19, 21, 21, 21, 22, 21, 20, 16, + 15, 14, 13, 15, 15, 15, 16, 18, 18, 17, 16, 16, 15, 14, 11, 9, + 9, 8, 9, 11, 12, 12, 10, 10, 10, 10, 11, 13, 14, 14, 15, 15, + 20, 20, 21, 21, 19, 21, 24, 25, 25, 28, 32, 32, 34, 36, 37, 38, + 36, 41, 51, 60, 64, 71, 67, 59, 51, 51, 59, 60, 62, 57, 53, 59, + 75, 96, 102, 91, 80, 91, 92, 91, 87, 110, 128, 123, 115, 112, 117, 107, + 89, 83, 92, 95, 78, 74, 74, 89, 89, 79, 67, 56, 49, 47, 47, 44, + 41, 39, 36, 33, 32, 30, 30, 28, 26, 26, 26, 24, 25, 25, 23, 22, + 21, 22, 21, 21, 22, 21, 22, 21, 21, 22, 21, 21, 22, 22, 21, 18, + 17, 16, 15, 16, 16, 16, 17, 19, 19, 18, 18, 17, 17, 16, 13, 11, + 10, 10, 11, 12, 13, 13, 11, 10, 10, 10, 11, 13, 13, 14, 14, 14, + 19, 20, 20, 21, 19, 21, 25, 27, 28, 31, 33, 31, 31, 35, 37, 41, + 42, 52, 66, 67, 59, 47, 37, 27, 23, 21, 30, 29, 41, 65, 73, 72, + 85, 81, 98, 99, 84, 88, 91, 101, 112, 120, 147, 138, 132, 128, 134, 122, + 97, 108, 106, 111, 88, 96, 101, 104, 95, 78, 63, 55, 48, 46, 44, 42, + 41, 38, 37, 33, 31, 29, 28, 30, 30, 28, 29, 28, 28, 28, 27, 25, + 24, 25, 25, 24, 25, 24, 26, 22, 21, 21, 21, 21, 22, 22, 21, 20, + 19, 18, 17, 18, 18, 18, 19, 21, 21, 20, 20, 20, 19, 18, 16, 14, + 14, 13, 14, 15, 15, 15, 12, 10, 10, 10, 11, 13, 13, 14, 13, 13, + 18, 18, 20, 20, 19, 22, 25, 28, 30, 32, 32, 30, 30, 35, 39, 48, + 60, 67, 62, 46, 27, 15, 11, 19, 27, 28, 33, 25, 23, 37, 73, 98, + 97, 29, 27, 46, 86, 87, 90, 113, 80, 69, 80, 77, 75, 70, 78, 67, + 65, 79, 58, 46, 56, 66, 74, 93, 88, 77, 61, 54, 48, 44, 42, 41, + 40, 37, 36, 34, 32, 30, 29, 32, 32, 31, 32, 30, 31, 31, 30, 26, + 26, 27, 26, 26, 27, 26, 26, 23, 21, 20, 20, 21, 21, 21, 21, 20, + 20, 19, 18, 19, 19, 19, 20, 22, 21, 20, 20, 20, 19, 18, 17, 16, + 16, 16, 16, 16, 16, 16, 14, 9, 9, 9, 10, 12, 13, 13, 12, 11, + 17, 18, 19, 19, 19, 21, 25, 28, 31, 32, 30, 28, 29, 37, 46, 59, + 73, 64, 34, 15, 22, 24, 22, 36, 50, 57, 61, 51, 44, 40, 56, 73, + 85, 15, 29, 29, 77, 99, 90, 143, 83, 72, 71, 79, 76, 73, 82, 83, + 79, 58, 54, 67, 72, 95, 98, 68, 71, 74, 61, 56, 48, 43, 40, 39, + 39, 37, 34, 35, 35, 33, 31, 34, 34, 33, 33, 32, 33, 31, 31, 28, + 27, 27, 28, 27, 27, 27, 26, 23, 22, 20, 19, 20, 20, 20, 20, 19, + 19, 18, 18, 19, 19, 19, 20, 21, 21, 20, 19, 20, 19, 18, 18, 17, + 17, 16, 16, 16, 16, 16, 14, 10, 9, 8, 10, 11, 12, 12, 12, 11, + 16, 16, 19, 20, 19, 22, 24, 30, 32, 33, 27, 27, 29, 46, 57, 72, + 65, 24, 23, 33, 40, 48, 56, 59, 61, 57, 50, 45, 52, 60, 64, 53, + 57, 38, 45, 28, 63, 118, 104, 135, 76, 69, 76, 88, 84, 88, 99, 86, + 65, 52, 62, 93, 100, 107, 99, 32, 67, 75, 63, 51, 45, 41, 39, 39, + 38, 36, 35, 35, 35, 34, 34, 36, 35, 34, 34, 33, 33, 31, 31, 28, + 28, 28, 28, 29, 29, 28, 27, 24, 22, 22, 21, 19, 19, 18, 17, 17, + 18, 18, 18, 19, 20, 20, 21, 22, 22, 22, 22, 22, 21, 20, 18, 17, + 17, 16, 16, 17, 18, 17, 13, 11, 9, 7, 7, 8, 8, 9, 11, 12, + 15, 16, 18, 20, 19, 23, 25, 30, 32, 33, 28, 28, 37, 56, 69, 65, + 38, 27, 38, 52, 62, 61, 50, 36, 38, 45, 44, 39, 41, 50, 55, 57, + 54, 70, 75, 45, 67, 123, 114, 138, 79, 61, 81, 92, 102, 92, 118, 81, + 76, 75, 90, 122, 129, 130, 111, 29, 62, 73, 60, 49, 46, 43, 42, 43, + 42, 40, 38, 38, 38, 37, 36, 38, 37, 36, 36, 34, 34, 32, 31, 28, + 28, 28, 28, 30, 29, 28, 27, 24, 23, 22, 21, 19, 20, 18, 17, 17, + 17, 17, 17, 20, 20, 22, 22, 20, 20, 20, 20, 20, 20, 18, 18, 18, + 18, 17, 17, 17, 18, 16, 14, 13, 11, 10, 8, 8, 8, 9, 10, 11, + 14, 16, 18, 20, 20, 23, 27, 32, 34, 34, 31, 33, 46, 64, 75, 45, + 40, 43, 52, 58, 56, 40, 28, 40, 46, 59, 64, 65, 51, 42, 38, 49, + 63, 80, 75, 47, 71, 126, 120, 143, 111, 84, 84, 81, 83, 75, 63, 32, + 58, 93, 118, 139, 121, 91, 72, 33, 62, 70, 58, 50, 49, 48, 47, 47, + 47, 44, 43, 42, 42, 41, 40, 39, 38, 38, 37, 35, 35, 33, 33, 29, + 29, 29, 30, 31, 30, 29, 28, 26, 25, 23, 23, 21, 21, 19, 17, 16, + 16, 17, 18, 20, 21, 23, 23, 19, 19, 19, 19, 19, 18, 17, 18, 20, + 19, 18, 17, 16, 16, 14, 14, 15, 12, 11, 9, 8, 8, 9, 9, 10, + 15, 16, 19, 19, 21, 25, 28, 35, 36, 37, 35, 40, 56, 75, 48, 16, + 30, 37, 41, 45, 39, 18, 34, 63, 61, 67, 73, 79, 83, 70, 31, 43, + 71, 94, 70, 36, 65, 121, 119, 140, 144, 128, 113, 71, 64, 52, 9, 17, + 74, 112, 126, 107, 45, 47, 49, 46, 67, 67, 59, 55, 54, 54, 54, 52, + 49, 47, 46, 44, 44, 43, 42, 40, 39, 37, 37, 37, 37, 35, 34, 31, + 32, 31, 32, 34, 32, 32, 31, 30, 28, 25, 25, 22, 22, 21, 19, 16, + 17, 18, 19, 20, 21, 23, 23, 19, 19, 19, 19, 19, 19, 18, 18, 20, + 19, 18, 18, 16, 16, 13, 13, 16, 12, 9, 9, 9, 7, 7, 7, 8, + 15, 17, 19, 20, 21, 27, 30, 37, 39, 39, 39, 47, 68, 72, 8, 15, + 32, 44, 52, 52, 28, 29, 64, 64, 61, 59, 61, 66, 82, 93, 64, 50, + 76, 82, 64, 31, 53, 113, 118, 125, 144, 170, 195, 145, 89, 38, 66, 108, + 124, 127, 125, 54, 32, 77, 74, 76, 79, 72, 65, 63, 63, 63, 63, 57, + 54, 52, 51, 49, 47, 47, 46, 42, 40, 39, 38, 39, 38, 38, 37, 34, + 33, 34, 34, 34, 35, 33, 34, 33, 32, 28, 27, 24, 23, 23, 21, 16, + 17, 19, 20, 20, 22, 24, 25, 20, 20, 20, 21, 22, 22, 21, 21, 22, + 21, 20, 19, 17, 17, 13, 14, 17, 14, 11, 11, 10, 8, 7, 7, 7, + 15, 17, 19, 20, 23, 26, 31, 37, 40, 40, 41, 53, 73, 44, 11, 45, + 55, 60, 60, 41, 23, 53, 65, 61, 68, 64, 61, 63, 73, 87, 94, 66, + 72, 75, 72, 40, 55, 115, 120, 129, 157, 191, 223, 208, 82, 53, 109, 141, + 140, 132, 123, 43, 82, 113, 99, 91, 88, 81, 72, 70, 69, 69, 69, 63, + 58, 56, 55, 53, 52, 50, 50, 44, 42, 40, 40, 39, 39, 39, 38, 35, + 34, 34, 34, 34, 34, 33, 34, 33, 32, 30, 27, 25, 25, 23, 22, 15, + 17, 19, 21, 22, 24, 27, 27, 25, 26, 26, 26, 27, 26, 26, 26, 25, + 23, 23, 21, 21, 20, 17, 18, 19, 16, 13, 12, 10, 7, 7, 7, 7, + 18, 19, 22, 24, 24, 27, 29, 35, 42, 35, 39, 59, 78, 39, 33, 56, + 56, 60, 49, 15, 24, 59, 63, 67, 69, 68, 66, 68, 78, 84, 94, 86, + 62, 92, 98, 60, 56, 122, 132, 138, 161, 202, 235, 232, 49, 96, 137, 143, + 139, 135, 112, 44, 101, 120, 109, 97, 94, 88, 77, 70, 69, 70, 72, 63, + 56, 55, 56, 57, 53, 50, 47, 40, 38, 37, 37, 36, 38, 39, 39, 38, + 35, 33, 30, 30, 28, 30, 30, 28, 26, 30, 30, 29, 28, 24, 20, 14, + 15, 20, 24, 26, 29, 32, 29, 27, 31, 31, 29, 26, 26, 32, 36, 32, + 25, 20, 21, 21, 24, 19, 21, 19, 16, 12, 11, 11, 9, 9, 9, 8, + 20, 21, 25, 27, 26, 26, 27, 34, 45, 34, 38, 67, 79, 41, 41, 51, + 45, 56, 47, 11, 30, 54, 66, 70, 65, 65, 68, 71, 77, 83, 87, 103, + 70, 91, 105, 71, 54, 126, 142, 149, 166, 209, 243, 247, 88, 119, 146, 135, + 121, 126, 112, 45, 103, 113, 101, 91, 85, 82, 74, 63, 58, 61, 67, 58, + 49, 48, 49, 51, 47, 45, 40, 32, 32, 31, 31, 33, 36, 38, 40, 42, + 36, 33, 26, 22, 28, 32, 29, 17, 22, 29, 29, 32, 29, 24, 19, 16, + 17, 22, 28, 33, 32, 34, 30, 28, 35, 37, 31, 26, 26, 34, 38, 32, + 29, 24, 20, 20, 21, 25, 25, 17, 14, 12, 11, 11, 11, 11, 11, 10, + 21, 22, 26, 27, 27, 25, 26, 35, 47, 39, 39, 66, 40, 15, 30, 44, + 42, 57, 47, 20, 46, 56, 64, 67, 62, 61, 64, 67, 72, 78, 83, 104, + 79, 88, 120, 76, 59, 130, 141, 154, 172, 212, 244, 248, 118, 117, 140, 130, + 125, 137, 120, 40, 94, 93, 77, 67, 62, 64, 60, 51, 46, 48, 55, 51, + 44, 41, 40, 39, 38, 40, 38, 37, 38, 37, 35, 33, 34, 35, 36, 35, + 28, 26, 25, 25, 25, 29, 32, 20, 25, 26, 25, 26, 25, 22, 21, 23, + 23, 25, 26, 27, 24, 25, 26, 26, 32, 35, 29, 22, 21, 26, 30, 26, + 26, 24, 19, 24, 22, 23, 23, 18, 16, 13, 11, 12, 11, 12, 11, 10, + 21, 22, 26, 27, 28, 26, 27, 35, 47, 41, 47, 46, 3, 16, 34, 42, + 49, 64, 40, 35, 59, 53, 56, 61, 57, 56, 59, 60, 64, 71, 77, 94, + 93, 89, 100, 52, 62, 128, 134, 149, 171, 208, 238, 246, 108, 82, 69, 94, + 119, 126, 116, 46, 99, 100, 89, 72, 61, 63, 58, 50, 46, 48, 55, 55, + 49, 42, 37, 35, 38, 42, 44, 47, 48, 45, 41, 39, 37, 33, 30, 22, + 23, 29, 33, 37, 37, 35, 36, 39, 32, 22, 25, 18, 19, 19, 23, 31, + 29, 26, 21, 18, 22, 23, 27, 29, 36, 40, 37, 31, 23, 22, 24, 19, + 18, 26, 28, 25, 33, 19, 20, 22, 17, 15, 13, 12, 12, 12, 11, 10, + 19, 22, 26, 26, 27, 28, 29, 36, 45, 42, 55, 29, 23, 50, 53, 55, + 52, 63, 31, 51, 63, 51, 53, 59, 53, 53, 55, 57, 63, 69, 75, 86, + 100, 82, 88, 51, 58, 120, 124, 140, 169, 207, 239, 244, 109, 81, 90, 82, + 96, 134, 125, 42, 94, 97, 90, 72, 62, 68, 68, 58, 53, 55, 62, 67, + 63, 51, 41, 37, 42, 48, 55, 69, 71, 65, 57, 51, 41, 34, 27, 20, + 28, 36, 42, 48, 50, 46, 42, 47, 41, 30, 20, 13, 15, 19, 26, 36, + 31, 25, 19, 19, 27, 28, 33, 38, 45, 50, 49, 43, 38, 28, 18, 15, + 24, 36, 40, 40, 29, 30, 24, 25, 21, 18, 15, 14, 13, 12, 11, 10, + 19, 21, 25, 25, 27, 28, 30, 37, 43, 46, 61, 26, 48, 65, 61, 66, + 59, 55, 25, 63, 63, 49, 52, 57, 52, 51, 54, 56, 62, 68, 72, 78, + 86, 40, 62, 54, 55, 117, 125, 145, 180, 208, 231, 237, 125, 113, 138, 115, + 88, 100, 100, 46, 97, 93, 78, 62, 58, 68, 72, 67, 63, 65, 71, 84, + 81, 65, 48, 45, 53, 62, 79, 93, 92, 83, 70, 61, 51, 40, 34, 26, + 35, 48, 66, 71, 54, 44, 51, 66, 54, 42, 22, 15, 18, 24, 31, 39, + 33, 27, 23, 25, 35, 42, 56, 64, 71, 77, 77, 63, 51, 39, 28, 25, + 36, 49, 68, 75, 46, 39, 27, 28, 23, 20, 16, 15, 13, 12, 11, 10, + 19, 20, 23, 24, 27, 28, 30, 37, 41, 54, 66, 34, 46, 59, 66, 73, + 76, 49, 21, 65, 60, 46, 49, 54, 51, 52, 53, 56, 58, 62, 66, 71, + 74, 17, 64, 72, 57, 122, 137, 153, 182, 204, 223, 234, 136, 145, 132, 134, + 124, 105, 71, 44, 102, 106, 96, 75, 69, 80, 83, 81, 79, 81, 87, 102, + 101, 81, 61, 62, 72, 85, 109, 138, 139, 128, 112, 76, 63, 52, 47, 43, + 53, 76, 111, 143, 141, 119, 97, 106, 67, 50, 33, 23, 24, 31, 36, 37, + 33, 31, 32, 42, 56, 76, 108, 128, 133, 139, 144, 123, 71, 47, 45, 42, + 52, 86, 124, 92, 93, 46, 38, 29, 24, 21, 16, 14, 12, 12, 11, 10, + 17, 19, 24, 26, 27, 26, 29, 36, 44, 55, 57, 25, 49, 75, 80, 83, + 81, 42, 27, 68, 60, 47, 47, 51, 48, 46, 47, 48, 53, 58, 63, 65, + 68, 74, 95, 78, 67, 134, 137, 154, 186, 192, 214, 225, 130, 136, 130, 141, + 141, 150, 135, 42, 99, 105, 93, 95, 100, 110, 110, 106, 99, 105, 123, 144, + 138, 116, 56, 84, 100, 129, 142, 128, 113, 121, 83, 76, 57, 64, 66, 68, + 85, 135, 155, 171, 184, 193, 195, 179, 113, 57, 44, 34, 33, 39, 43, 28, + 32, 42, 50, 65, 94, 111, 130, 140, 127, 127, 116, 68, 26, 74, 86, 66, + 91, 145, 132, 156, 150, 75, 40, 33, 25, 22, 16, 14, 12, 9, 10, 9, + 17, 19, 24, 26, 28, 28, 30, 34, 37, 62, 63, 43, 55, 88, 73, 63, + 45, 24, 26, 65, 55, 44, 43, 46, 45, 42, 44, 46, 51, 57, 60, 63, + 72, 83, 72, 64, 90, 134, 136, 158, 171, 178, 201, 219, 138, 131, 130, 114, + 141, 151, 136, 44, 87, 98, 93, 92, 106, 120, 130, 122, 150, 136, 140, 162, + 151, 135, 63, 98, 131, 171, 172, 136, 131, 113, 97, 92, 72, 55, 80, 96, + 136, 184, 181, 182, 208, 209, 204, 213, 171, 83, 50, 46, 41, 41, 41, 28, + 35, 48, 72, 112, 141, 159, 143, 130, 117, 121, 73, 87, 135, 173, 168, 104, + 134, 163, 144, 180, 159, 113, 33, 30, 26, 21, 16, 14, 11, 10, 9, 10, + 16, 18, 23, 25, 28, 29, 31, 35, 39, 63, 45, 42, 78, 94, 80, 77, + 64, 42, 29, 60, 49, 40, 39, 41, 42, 40, 42, 45, 50, 56, 61, 63, + 75, 101, 107, 106, 114, 134, 135, 157, 153, 167, 184, 210, 120, 116, 147, 127, + 132, 124, 121, 42, 79, 89, 88, 92, 111, 123, 142, 136, 163, 150, 158, 165, + 166, 144, 69, 133, 170, 185, 175, 190, 185, 196, 202, 192, 159, 99, 80, 129, + 151, 145, 181, 193, 215, 213, 211, 176, 156, 164, 55, 55, 50, 42, 38, 27, + 37, 60, 106, 171, 183, 193, 171, 142, 123, 114, 127, 190, 213, 203, 187, 163, + 152, 155, 155, 169, 138, 137, 30, 25, 28, 21, 18, 15, 13, 10, 10, 10, + 16, 18, 23, 24, 28, 30, 31, 34, 37, 64, 45, 65, 103, 87, 86, 79, + 73, 52, 26, 56, 46, 39, 39, 40, 42, 41, 43, 45, 49, 58, 66, 76, + 85, 88, 93, 108, 121, 132, 135, 148, 141, 160, 166, 201, 109, 118, 126, 109, + 143, 164, 142, 42, 83, 83, 78, 86, 102, 111, 138, 158, 159, 155, 171, 189, + 167, 169, 112, 174, 184, 190, 170, 188, 153, 208, 208, 205, 203, 169, 92, 175, + 173, 167, 189, 200, 216, 216, 197, 152, 175, 220, 79, 53, 54, 40, 33, 25, + 43, 84, 144, 187, 195, 195, 199, 182, 94, 55, 131, 202, 199, 169, 174, 150, + 145, 141, 133, 157, 133, 134, 20, 22, 29, 21, 19, 15, 13, 11, 10, 11, + 16, 18, 22, 24, 28, 29, 30, 32, 31, 65, 63, 92, 95, 79, 94, 75, + 91, 58, 22, 49, 45, 40, 39, 40, 42, 42, 44, 47, 51, 60, 69, 78, + 82, 81, 88, 102, 114, 126, 131, 134, 136, 151, 151, 190, 114, 142, 138, 111, + 133, 144, 138, 49, 88, 83, 72, 75, 86, 98, 131, 159, 156, 164, 182, 200, + 152, 164, 155, 199, 197, 177, 161, 183, 146, 202, 192, 207, 183, 182, 149, 206, + 189, 194, 214, 203, 199, 198, 178, 170, 232, 203, 89, 41, 54, 38, 28, 28, + 54, 113, 166, 190, 211, 191, 200, 140, 29, 27, 86, 169, 170, 133, 157, 150, + 162, 83, 79, 140, 150, 117, 17, 24, 26, 20, 17, 14, 12, 10, 10, 11, + 14, 18, 22, 24, 27, 28, 30, 31, 28, 65, 69, 81, 70, 77, 90, 64, + 86, 44, 28, 54, 45, 41, 39, 40, 42, 42, 45, 49, 56, 61, 67, 75, + 79, 74, 74, 86, 103, 117, 122, 121, 131, 135, 140, 184, 135, 140, 140, 126, + 147, 150, 140, 46, 83, 87, 74, 65, 75, 93, 119, 151, 151, 175, 187, 193, + 174, 156, 177, 194, 157, 107, 114, 178, 175, 206, 191, 173, 176, 197, 188, 196, + 186, 142, 143, 183, 192, 203, 197, 206, 191, 117, 110, 25, 50, 35, 23, 32, + 67, 132, 152, 145, 182, 167, 164, 54, 26, 42, 68, 115, 124, 125, 134, 135, + 161, 100, 61, 119, 109, 48, 14, 28, 23, 19, 15, 12, 10, 8, 9, 11, + 14, 18, 22, 24, 26, 27, 29, 31, 27, 65, 70, 73, 72, 75, 66, 61, + 117, 49, 30, 47, 46, 45, 40, 39, 42, 44, 47, 51, 59, 61, 64, 70, + 75, 74, 80, 91, 102, 107, 109, 114, 131, 120, 134, 167, 148, 155, 158, 143, + 147, 157, 149, 40, 76, 88, 79, 64, 67, 73, 86, 144, 156, 184, 183, 184, + 182, 159, 170, 137, 48, 41, 63, 140, 178, 196, 174, 185, 192, 186, 186, 186, + 81, 32, 49, 92, 160, 190, 155, 182, 150, 125, 107, 16, 49, 35, 25, 36, + 78, 140, 151, 157, 163, 139, 114, 20, 42, 53, 67, 99, 118, 146, 114, 123, + 144, 114, 55, 58, 32, 14, 33, 28, 21, 19, 16, 14, 11, 8, 8, 11, + 13, 18, 22, 25, 25, 27, 30, 31, 29, 65, 66, 82, 97, 85, 72, 97, + 127, 49, 28, 49, 50, 49, 42, 40, 47, 50, 53, 54, 54, 58, 64, 65, + 67, 77, 88, 98, 102, 96, 94, 111, 133, 106, 130, 159, 133, 159, 169, 156, + 159, 173, 156, 42, 75, 82, 78, 74, 65, 58, 70, 110, 154, 183, 182, 194, + 188, 170, 165, 52, 17, 54, 78, 105, 188, 214, 196, 202, 181, 163, 172, 121, + 8, 40, 64, 57, 99, 122, 87, 131, 153, 172, 149, 12, 49, 37, 32, 41, + 94, 156, 187, 178, 162, 141, 111, 17, 52, 51, 57, 91, 132, 161, 108, 124, + 113, 118, 43, 47, 27, 27, 35, 27, 21, 19, 18, 17, 13, 10, 8, 10, + 14, 17, 22, 24, 25, 27, 29, 31, 27, 68, 85, 102, 111, 102, 97, 127, + 124, 45, 28, 49, 51, 52, 45, 44, 52, 50, 50, 51, 53, 57, 63, 66, + 68, 77, 90, 98, 95, 89, 92, 111, 123, 100, 124, 152, 135, 155, 145, 161, + 172, 174, 166, 45, 74, 79, 76, 79, 68, 55, 69, 117, 166, 183, 177, 191, + 194, 185, 118, 18, 47, 63, 82, 99, 205, 233, 209, 220, 191, 197, 185, 54, + 24, 62, 69, 66, 126, 176, 172, 189, 185, 204, 167, 11, 48, 39, 33, 41, + 114, 179, 189, 168, 163, 156, 123, 15, 60, 45, 56, 91, 128, 148, 103, 119, + 140, 137, 31, 37, 31, 33, 35, 24, 20, 19, 18, 17, 14, 9, 9, 11, + 14, 17, 22, 24, 24, 26, 29, 30, 26, 70, 103, 118, 109, 104, 105, 130, + 106, 38, 28, 52, 54, 54, 48, 46, 52, 49, 48, 48, 51, 56, 62, 66, + 71, 79, 87, 92, 87, 85, 95, 114, 111, 94, 119, 143, 139, 156, 175, 171, + 175, 173, 177, 43, 72, 76, 72, 76, 67, 56, 71, 119, 168, 178, 185, 209, + 210, 161, 57, 32, 67, 64, 76, 102, 201, 226, 214, 222, 194, 197, 185, 35, + 52, 70, 68, 63, 145, 215, 207, 211, 215, 199, 158, 9, 48, 41, 36, 47, + 120, 172, 171, 143, 161, 164, 128, 23, 58, 45, 55, 88, 109, 130, 127, 133, + 157, 142, 27, 33, 34, 32, 32, 23, 19, 18, 18, 17, 12, 9, 9, 10, + 13, 16, 22, 24, 25, 27, 30, 33, 31, 66, 92, 101, 97, 95, 98, 108, + 103, 48, 34, 58, 57, 55, 49, 47, 46, 45, 46, 48, 50, 55, 61, 65, + 74, 81, 80, 78, 79, 86, 101, 115, 100, 92, 113, 145, 135, 163, 189, 160, + 188, 190, 174, 39, 71, 75, 69, 70, 65, 59, 72, 112, 157, 175, 201, 208, + 177, 80, 23, 50, 70, 76, 68, 98, 196, 229, 214, 200, 179, 181, 146, 38, + 64, 67, 74, 78, 127, 188, 163, 184, 192, 171, 138, 9, 49, 43, 36, 44, + 109, 157, 182, 167, 168, 153, 113, 24, 55, 40, 49, 81, 112, 149, 161, 150, + 148, 117, 24, 33, 31, 28, 27, 21, 18, 18, 17, 16, 12, 9, 9, 9, + 13, 16, 21, 25, 25, 27, 30, 33, 30, 65, 88, 99, 100, 98, 110, 111, + 118, 67, 41, 64, 59, 54, 49, 47, 45, 45, 46, 48, 51, 55, 62, 66, + 74, 78, 71, 69, 74, 86, 104, 112, 92, 92, 107, 141, 115, 153, 146, 147, + 185, 168, 156, 45, 72, 74, 67, 67, 63, 60, 74, 118, 164, 191, 203, 169, + 83, 98, 48, 59, 73, 68, 69, 88, 159, 198, 187, 161, 158, 190, 129, 44, + 68, 63, 70, 71, 123, 190, 158, 198, 178, 169, 126, 10, 52, 46, 37, 42, + 91, 141, 182, 165, 157, 144, 114, 22, 62, 36, 50, 85, 127, 155, 152, 142, + 132, 125, 25, 34, 31, 28, 29, 20, 17, 17, 16, 15, 12, 9, 9, 9, + 14, 17, 22, 25, 26, 26, 30, 34, 31, 63, 83, 95, 98, 95, 118, 120, + 125, 74, 43, 68, 59, 52, 48, 47, 49, 48, 47, 48, 51, 55, 62, 67, + 72, 70, 63, 62, 69, 84, 100, 106, 86, 92, 102, 134, 118, 160, 165, 151, + 152, 133, 132, 39, 73, 74, 67, 67, 60, 55, 74, 118, 169, 199, 182, 128, + 120, 201, 62, 65, 70, 60, 69, 85, 153, 190, 158, 145, 161, 192, 132, 45, + 67, 55, 68, 75, 114, 179, 170, 188, 168, 160, 110, 11, 55, 47, 38, 44, + 84, 142, 181, 164, 166, 150, 120, 31, 62, 47, 55, 90, 128, 140, 140, 138, + 132, 102, 19, 35, 32, 25, 25, 20, 17, 17, 16, 14, 11, 9, 8, 8, + 16, 18, 22, 23, 26, 27, 29, 34, 34, 61, 75, 79, 88, 100, 123, 124, + 125, 93, 40, 72, 58, 49, 48, 49, 50, 48, 49, 50, 51, 55, 63, 66, + 66, 61, 55, 61, 65, 84, 99, 96, 83, 90, 98, 130, 157, 179, 191, 174, + 159, 158, 152, 34, 72, 72, 66, 68, 58, 50, 71, 119, 175, 171, 127, 141, + 215, 231, 57, 58, 62, 55, 62, 87, 177, 189, 138, 153, 178, 188, 132, 41, + 59, 52, 64, 70, 107, 168, 151, 171, 155, 142, 104, 12, 56, 50, 40, 43, + 82, 144, 176, 168, 178, 162, 135, 48, 61, 58, 63, 94, 126, 123, 144, 146, + 142, 67, 18, 36, 31, 22, 21, 21, 16, 16, 15, 13, 11, 8, 7, 8, + 18, 19, 22, 23, 26, 27, 28, 33, 35, 58, 69, 74, 95, 115, 121, 128, + 125, 99, 44, 71, 56, 46, 49, 53, 51, 49, 50, 51, 52, 56, 63, 64, + 57, 54, 59, 66, 73, 86, 88, 86, 84, 90, 95, 134, 172, 168, 183, 183, + 186, 198, 155, 36, 71, 72, 66, 68, 58, 50, 68, 109, 149, 126, 176, 219, + 236, 190, 42, 55, 56, 49, 59, 84, 167, 171, 147, 180, 192, 180, 96, 38, + 54, 50, 61, 72, 118, 173, 170, 165, 143, 140, 126, 13, 57, 51, 41, 44, + 74, 122, 146, 151, 154, 141, 123, 54, 57, 73, 89, 107, 130, 127, 148, 145, + 122, 32, 15, 36, 30, 22, 21, 21, 16, 16, 14, 13, 11, 7, 6, 8, + 17, 20, 23, 24, 26, 27, 29, 34, 34, 52, 66, 76, 105, 129, 114, 135, + 137, 114, 49, 67, 57, 45, 51, 59, 53, 52, 52, 52, 54, 59, 62, 57, + 48, 57, 70, 75, 88, 93, 82, 81, 87, 89, 90, 130, 125, 165, 133, 169, + 190, 160, 120, 41, 71, 74, 66, 65, 59, 52, 68, 96, 104, 185, 241, 231, + 202, 163, 41, 52, 55, 48, 58, 84, 157, 196, 160, 190, 195, 176, 92, 36, + 52, 50, 62, 70, 130, 164, 178, 165, 147, 149, 141, 14, 59, 54, 45, 48, + 63, 88, 105, 133, 131, 129, 125, 100, 72, 82, 101, 112, 132, 129, 123, 114, + 59, 4, 25, 36, 27, 22, 21, 22, 18, 17, 14, 13, 9, 5, 6, 8, + 17, 20, 23, 24, 26, 26, 28, 34, 36, 49, 66, 83, 108, 136, 120, 146, + 153, 133, 53, 66, 60, 48, 53, 61, 54, 53, 53, 54, 56, 61, 62, 52, + 48, 65, 80, 95, 98, 92, 85, 78, 90, 86, 87, 124, 53, 83, 130, 188, + 157, 104, 137, 45, 71, 75, 66, 65, 59, 53, 68, 89, 169, 245, 238, 208, + 206, 192, 51, 51, 55, 47, 57, 76, 142, 213, 152, 184, 182, 171, 102, 36, + 52, 52, 63, 65, 130, 159, 161, 163, 159, 157, 135, 14, 60, 55, 47, 51, + 59, 72, 85, 114, 124, 139, 140, 138, 104, 97, 106, 103, 118, 120, 105, 77, + 16, 9, 35, 34, 25, 22, 20, 21, 17, 16, 13, 12, 9, 5, 6, 8, + 18, 19, 23, 24, 26, 25, 28, 34, 38, 47, 66, 89, 117, 144, 132, 151, + 142, 114, 63, 54, 61, 51, 55, 62, 56, 55, 56, 57, 60, 62, 63, 53, + 54, 71, 101, 140, 120, 90, 83, 77, 91, 82, 84, 124, 116, 115, 134, 130, + 77, 130, 181, 44, 70, 74, 67, 66, 59, 53, 68, 120, 213, 215, 204, 208, + 202, 214, 52, 52, 55, 47, 57, 71, 150, 204, 138, 181, 186, 177, 105, 36, + 53, 53, 64, 68, 128, 166, 157, 164, 164, 161, 139, 14, 60, 56, 49, 53, + 58, 66, 80, 96, 113, 130, 134, 151, 126, 110, 115, 114, 131, 114, 76, 37, + 7, 24, 31, 31, 24, 22, 19, 20, 16, 16, 14, 13, 8, 4, 5, 8, + 18, 19, 23, 24, 25, 26, 28, 34, 37, 42, 64, 92, 124, 150, 139, 150, + 128, 106, 87, 41, 56, 53, 58, 66, 61, 60, 60, 62, 62, 62, 62, 56, + 61, 81, 127, 176, 152, 94, 73, 79, 91, 77, 83, 126, 150, 193, 165, 122, + 120, 213, 188, 37, 69, 73, 68, 68, 58, 51, 68, 131, 205, 172, 165, 191, + 175, 218, 50, 53, 55, 47, 56, 79, 181, 198, 128, 164, 181, 173, 113, 37, + 54, 55, 66, 74, 114, 163, 162, 164, 162, 159, 143, 13, 59, 56, 49, 52, + 55, 60, 79, 93, 112, 126, 138, 161, 124, 108, 121, 142, 148, 87, 32, 21, + 26, 35, 27, 28, 23, 24, 18, 19, 15, 16, 14, 12, 7, 4, 4, 8, + 19, 20, 23, 23, 25, 26, 29, 34, 36, 39, 59, 85, 111, 143, 139, 154, + 145, 149, 129, 53, 60, 60, 58, 65, 65, 63, 62, 62, 60, 56, 58, 55, + 63, 97, 144, 181, 170, 91, 53, 78, 88, 71, 82, 116, 174, 197, 201, 201, + 212, 232, 205, 47, 72, 71, 65, 68, 57, 46, 65, 124, 178, 195, 210, 165, + 219, 222, 47, 52, 54, 47, 57, 83, 155, 169, 141, 155, 149, 129, 71, 36, + 57, 53, 62, 74, 93, 141, 159, 162, 162, 155, 137, 15, 60, 53, 45, 50, + 53, 63, 85, 101, 120, 136, 150, 136, 97, 104, 128, 128, 86, 30, 25, 45, + 55, 35, 30, 28, 23, 22, 15, 17, 14, 16, 14, 13, 9, 4, 5, 8, + 22, 25, 25, 23, 23, 26, 30, 37, 38, 41, 49, 68, 96, 126, 136, 154, + 157, 144, 141, 79, 72, 72, 55, 52, 67, 61, 59, 52, 52, 47, 53, 51, + 65, 110, 149, 154, 177, 63, 28, 76, 83, 65, 74, 112, 180, 198, 215, 220, + 224, 235, 213, 51, 76, 70, 54, 62, 54, 40, 55, 113, 167, 197, 225, 212, + 206, 195, 54, 52, 52, 45, 62, 82, 97, 137, 173, 192, 194, 169, 99, 33, + 58, 48, 46, 75, 77, 94, 115, 141, 156, 156, 131, 20, 69, 51, 38, 46, + 65, 87, 104, 99, 134, 139, 109, 60, 55, 49, 32, 27, 28, 36, 47, 49, + 48, 43, 39, 33, 26, 14, 11, 15, 13, 16, 16, 16, 12, 10, 8, 7, + 23, 25, 25, 23, 23, 26, 30, 37, 37, 40, 45, 60, 80, 103, 134, 149, + 147, 133, 138, 123, 67, 76, 55, 53, 65, 62, 58, 50, 49, 51, 58, 69, + 92, 153, 160, 180, 144, 24, 38, 75, 83, 69, 80, 118, 182, 185, 200, 219, + 202, 225, 186, 58, 79, 76, 59, 68, 56, 37, 56, 121, 190, 210, 188, 176, + 164, 164, 40, 51, 49, 46, 61, 88, 125, 180, 191, 191, 191, 173, 101, 27, + 60, 47, 46, 75, 114, 139, 126, 111, 125, 129, 112, 18, 64, 51, 34, 50, + 71, 90, 98, 116, 142, 135, 55, 29, 71, 68, 53, 50, 47, 46, 48, 47, + 43, 40, 39, 32, 25, 14, 13, 15, 14, 16, 16, 16, 13, 10, 8, 7, + 23, 24, 24, 22, 22, 25, 29, 35, 36, 38, 41, 54, 71, 93, 128, 131, + 130, 131, 161, 145, 90, 68, 70, 54, 62, 56, 55, 58, 57, 63, 69, 94, + 146, 179, 175, 177, 89, 21, 53, 79, 87, 75, 91, 133, 178, 184, 202, 202, + 192, 207, 153, 78, 78, 91, 68, 68, 61, 49, 65, 131, 200, 209, 161, 111, + 150, 156, 39, 56, 53, 50, 66, 97, 154, 193, 174, 180, 175, 161, 93, 34, + 61, 43, 48, 73, 119, 150, 164, 148, 123, 112, 111, 16, 67, 50, 36, 45, + 70, 87, 98, 115, 130, 131, 75, 47, 91, 80, 73, 63, 57, 48, 45, 48, + 40, 35, 34, 29, 27, 20, 18, 17, 15, 16, 16, 16, 12, 10, 8, 7, + 23, 24, 23, 21, 21, 23, 26, 32, 35, 37, 39, 49, 67, 96, 136, 150, + 164, 159, 172, 162, 121, 86, 68, 67, 63, 62, 61, 66, 68, 84, 99, 145, + 186, 190, 184, 153, 40, 43, 57, 82, 95, 86, 108, 148, 178, 192, 202, 196, + 197, 218, 189, 127, 77, 96, 85, 78, 69, 63, 79, 134, 195, 189, 193, 161, + 116, 132, 50, 50, 63, 60, 74, 107, 162, 174, 165, 180, 166, 157, 103, 35, + 64, 49, 52, 80, 129, 121, 158, 149, 157, 152, 130, 34, 64, 55, 43, 50, + 73, 86, 114, 127, 119, 110, 99, 58, 75, 71, 80, 80, 73, 70, 63, 51, + 45, 36, 30, 28, 29, 26, 23, 18, 15, 16, 16, 15, 12, 10, 9, 8, + 23, 23, 22, 20, 21, 22, 24, 30, 35, 36, 37, 45, 56, 75, 106, 142, + 173, 177, 178, 165, 141, 130, 82, 82, 65, 72, 71, 74, 88, 112, 136, 183, + 208, 196, 167, 78, 35, 56, 59, 81, 103, 106, 136, 162, 191, 195, 187, 191, + 199, 212, 204, 190, 123, 106, 103, 85, 76, 78, 102, 154, 188, 188, 195, 184, + 114, 123, 83, 57, 70, 75, 87, 136, 167, 162, 173, 180, 163, 159, 118, 35, + 70, 64, 60, 85, 128, 101, 164, 148, 151, 149, 142, 75, 55, 64, 48, 44, + 73, 80, 119, 112, 119, 109, 107, 77, 43, 64, 94, 77, 73, 81, 75, 60, + 56, 43, 33, 31, 32, 32, 27, 20, 16, 16, 15, 15, 12, 9, 9, 9, + 23, 23, 22, 20, 20, 22, 23, 29, 34, 35, 35, 40, 53, 65, 78, 108, + 130, 161, 182, 142, 129, 134, 119, 122, 91, 80, 89, 113, 152, 154, 126, 141, + 190, 177, 102, 28, 55, 61, 62, 87, 129, 155, 187, 196, 203, 198, 194, 203, + 206, 208, 198, 181, 181, 186, 163, 71, 79, 109, 136, 178, 194, 180, 162, 173, + 190, 191, 165, 110, 74, 83, 123, 166, 159, 161, 169, 175, 162, 151, 105, 72, + 81, 65, 64, 75, 104, 93, 170, 126, 144, 148, 136, 108, 84, 63, 50, 48, + 76, 59, 105, 113, 136, 117, 89, 83, 99, 123, 104, 72, 71, 79, 71, 58, + 55, 50, 45, 37, 36, 33, 28, 21, 17, 16, 14, 14, 11, 8, 9, 9, + 22, 23, 22, 20, 21, 22, 24, 29, 33, 35, 35, 37, 40, 54, 64, 83, + 108, 145, 154, 133, 108, 110, 129, 147, 131, 121, 131, 173, 183, 147, 137, 173, + 173, 126, 40, 46, 61, 60, 61, 85, 140, 176, 205, 206, 201, 199, 202, 204, + 199, 206, 192, 178, 197, 185, 163, 49, 81, 146, 163, 182, 195, 164, 170, 186, + 176, 180, 168, 142, 78, 86, 150, 160, 142, 162, 171, 172, 160, 141, 118, 117, + 85, 53, 56, 77, 98, 112, 162, 143, 146, 142, 132, 123, 110, 59, 46, 43, + 66, 42, 74, 93, 114, 107, 93, 107, 125, 126, 97, 81, 84, 88, 77, 67, + 59, 54, 52, 44, 35, 33, 26, 20, 17, 16, 14, 14, 11, 8, 8, 9, + 22, 22, 21, 19, 21, 21, 25, 29, 31, 35, 35, 36, 40, 45, 54, 66, + 81, 125, 124, 145, 160, 166, 187, 184, 184, 168, 175, 216, 197, 186, 180, 202, + 156, 49, 32, 60, 58, 57, 64, 89, 150, 184, 206, 196, 191, 193, 197, 189, + 196, 193, 175, 185, 202, 179, 150, 39, 88, 161, 167, 174, 181, 171, 178, 176, + 154, 153, 156, 149, 75, 82, 147, 135, 138, 167, 170, 163, 155, 131, 155, 101, + 70, 42, 43, 42, 70, 125, 160, 145, 144, 141, 134, 130, 105, 52, 31, 45, + 69, 75, 95, 125, 123, 117, 97, 102, 126, 113, 100, 93, 97, 94, 91, 97, + 76, 54, 44, 47, 38, 32, 23, 22, 18, 17, 15, 15, 11, 8, 8, 9, + 21, 20, 20, 19, 21, 22, 25, 29, 28, 33, 33, 35, 37, 40, 47, 55, + 63, 73, 95, 141, 167, 186, 205, 207, 219, 143, 200, 214, 169, 180, 171, 133, + 49, 31, 56, 55, 52, 57, 67, 85, 132, 152, 168, 168, 166, 171, 181, 179, + 178, 174, 172, 183, 192, 168, 157, 35, 79, 115, 109, 137, 156, 158, 163, 162, + 150, 150, 145, 124, 62, 84, 142, 140, 150, 166, 143, 109, 88, 44, 57, 62, + 78, 36, 86, 110, 122, 158, 151, 136, 134, 131, 125, 124, 102, 56, 36, 44, + 69, 84, 97, 118, 126, 127, 81, 90, 114, 89, 85, 80, 80, 69, 78, 101, + 87, 65, 37, 41, 44, 28, 21, 23, 19, 18, 16, 15, 10, 7, 8, 11, + 20, 19, 20, 19, 21, 22, 25, 27, 27, 31, 32, 35, 36, 38, 42, 45, + 49, 60, 73, 95, 144, 154, 177, 196, 176, 160, 210, 185, 129, 115, 54, 24, + 39, 55, 56, 53, 46, 56, 67, 77, 101, 100, 101, 98, 89, 90, 101, 98, + 86, 77, 78, 89, 94, 83, 84, 32, 74, 80, 65, 63, 67, 69, 70, 76, + 73, 71, 62, 58, 43, 73, 101, 79, 72, 70, 48, 26, 26, 26, 51, 69, + 48, 49, 96, 87, 72, 80, 62, 62, 63, 62, 60, 63, 45, 26, 30, 38, + 65, 80, 78, 96, 115, 95, 78, 105, 91, 64, 71, 76, 77, 67, 76, 93, + 88, 74, 43, 29, 40, 29, 21, 24, 20, 20, 17, 14, 11, 7, 9, 13, + 18, 18, 19, 18, 22, 22, 24, 26, 25, 30, 33, 37, 38, 38, 41, 41, + 46, 53, 62, 61, 60, 69, 97, 105, 80, 126, 125, 74, 58, 30, 36, 70, + 67, 65, 56, 43, 44, 53, 63, 64, 71, 70, 70, 66, 55, 55, 69, 75, + 64, 55, 53, 60, 61, 66, 62, 51, 66, 73, 61, 54, 51, 50, 51, 51, + 48, 51, 54, 53, 54, 59, 56, 50, 51, 55, 52, 43, 39, 40, 54, 51, + 40, 46, 56, 50, 43, 47, 41, 43, 48, 52, 54, 50, 44, 38, 47, 37, + 55, 78, 77, 75, 80, 63, 94, 93, 75, 80, 86, 89, 90, 82, 84, 86, + 78, 64, 48, 19, 29, 32, 22, 25, 21, 20, 17, 14, 10, 7, 10, 15, + 18, 18, 19, 19, 21, 22, 23, 25, 23, 28, 31, 36, 37, 37, 39, 39, + 42, 47, 57, 66, 66, 58, 50, 37, 29, 29, 35, 39, 52, 55, 60, 69, + 66, 62, 51, 42, 41, 50, 57, 51, 50, 63, 72, 66, 58, 61, 81, 85, + 67, 60, 58, 60, 61, 67, 58, 53, 51, 63, 61, 54, 50, 50, 56, 55, + 48, 44, 47, 54, 53, 43, 35, 40, 52, 57, 54, 44, 42, 45, 56, 46, + 43, 35, 41, 44, 48, 41, 31, 33, 39, 45, 48, 44, 48, 40, 38, 37, + 47, 73, 84, 80, 61, 85, 91, 72, 73, 91, 85, 90, 87, 81, 74, 66, + 64, 61, 54, 16, 19, 32, 24, 25, 21, 19, 16, 14, 10, 7, 10, 15, + 17, 18, 19, 20, 21, 21, 23, 25, 20, 24, 28, 33, 34, 35, 39, 39, + 40, 48, 48, 52, 52, 53, 47, 42, 43, 47, 50, 57, 56, 59, 68, 65, + 64, 55, 52, 44, 43, 50, 55, 46, 39, 56, 64, 55, 49, 51, 71, 80, + 62, 51, 48, 50, 53, 57, 54, 46, 45, 49, 49, 46, 41, 43, 49, 45, + 38, 34, 36, 41, 37, 29, 19, 29, 43, 43, 40, 36, 34, 37, 43, 37, + 27, 23, 24, 31, 30, 26, 18, 24, 28, 33, 35, 33, 36, 31, 32, 35, + 52, 66, 63, 66, 74, 81, 63, 56, 67, 75, 67, 74, 73, 74, 65, 55, + 59, 66, 58, 18, 16, 30, 25, 23, 19, 18, 16, 14, 10, 8, 10, 15, + 17, 18, 19, 19, 19, 21, 24, 24, 18, 22, 26, 29, 33, 35, 39, 41, + 43, 47, 48, 50, 50, 49, 46, 46, 48, 47, 52, 53, 54, 61, 61, 57, + 56, 51, 47, 44, 45, 49, 53, 47, 43, 51, 57, 55, 53, 53, 64, 71, + 62, 49, 44, 45, 49, 52, 52, 47, 45, 46, 45, 43, 41, 42, 44, 40, + 35, 34, 35, 37, 36, 31, 27, 32, 37, 37, 36, 33, 32, 34, 37, 34, + 31, 27, 27, 31, 30, 27, 24, 30, 31, 33, 33, 31, 32, 32, 35, 42, + 69, 53, 56, 80, 94, 68, 70, 56, 48, 40, 36, 42, 54, 60, 58, 63, + 62, 65, 47, 23, 11, 32, 23, 22, 18, 17, 16, 16, 12, 10, 12, 13, + 17, 18, 19, 19, 19, 22, 24, 25, 19, 21, 25, 26, 30, 33, 38, 40, + 42, 45, 47, 47, 48, 47, 46, 47, 47, 47, 46, 46, 49, 55, 54, 52, + 50, 47, 43, 42, 45, 48, 50, 49, 47, 49, 54, 56, 57, 56, 59, 67, + 62, 50, 43, 42, 47, 51, 51, 48, 47, 46, 45, 45, 44, 43, 42, 40, + 38, 38, 37, 36, 36, 34, 34, 35, 35, 34, 33, 34, 34, 33, 32, 33, + 33, 32, 32, 32, 32, 32, 33, 36, 35, 34, 33, 31, 33, 35, 39, 45, + 77, 81, 92, 94, 73, 38, 61, 62, 54, 47, 48, 49, 52, 44, 41, 56, + 68, 62, 45, 16, 5, 34, 28, 22, 17, 16, 16, 16, 14, 12, 12, 11, + 17, 18, 19, 20, 20, 21, 24, 24, 19, 21, 23, 24, 26, 30, 33, 35, + 36, 39, 40, 41, 42, 41, 42, 42, 42, 43, 43, 43, 46, 50, 50, 47, + 46, 43, 40, 39, 42, 45, 47, 45, 43, 45, 50, 52, 53, 52, 54, 62, + 57, 44, 38, 38, 42, 46, 47, 45, 44, 43, 42, 42, 41, 40, 39, 37, + 35, 34, 33, 32, 32, 31, 30, 31, 30, 29, 29, 31, 30, 29, 29, 30, + 30, 29, 28, 28, 28, 28, 29, 31, 31, 29, 29, 29, 30, 31, 38, 46, + 64, 79, 84, 74, 41, 14, 47, 52, 48, 48, 49, 50, 52, 47, 50, 40, + 49, 46, 29, 10, 8, 34, 27, 21, 17, 17, 16, 16, 14, 12, 12, 11, + 17, 18, 19, 20, 20, 21, 23, 22, 18, 19, 21, 23, 25, 28, 31, 32, + 32, 35, 36, 36, 38, 38, 39, 39, 38, 39, 40, 41, 44, 46, 45, 43, + 42, 40, 37, 37, 40, 43, 44, 42, 40, 42, 46, 48, 49, 47, 49, 56, + 53, 42, 35, 34, 38, 43, 45, 43, 41, 40, 39, 39, 38, 38, 37, 35, + 35, 33, 33, 31, 31, 30, 29, 29, 29, 28, 27, 29, 29, 28, 27, 28, + 28, 27, 27, 27, 27, 27, 27, 28, 28, 27, 26, 27, 29, 30, 40, 49, + 59, 69, 55, 60, 36, 10, 37, 42, 40, 41, 41, 44, 49, 51, 66, 37, + 20, 20, 20, 16, 17, 35, 25, 21, 17, 16, 15, 16, 14, 11, 11, 10, + 17, 18, 19, 20, 20, 21, 22, 21, 17, 18, 20, 21, 24, 26, 29, 31, + 29, 31, 33, 32, 33, 35, 36, 37, 36, 37, 39, 41, 44, 44, 42, 40, + 39, 37, 35, 35, 39, 41, 42, 40, 38, 40, 43, 45, 47, 44, 46, 53, + 49, 40, 32, 31, 35, 40, 42, 40, 38, 37, 36, 36, 36, 35, 34, 35, + 34, 33, 33, 31, 30, 29, 28, 28, 28, 27, 27, 28, 27, 26, 26, 28, + 27, 26, 26, 26, 26, 26, 26, 26, 25, 24, 25, 25, 28, 30, 41, 50, + 66, 76, 55, 72, 44, 12, 39, 47, 45, 43, 41, 43, 45, 46, 66, 45, + 14, 15, 44, 27, 20, 32, 25, 21, 16, 15, 15, 16, 13, 10, 10, 9, + 17, 18, 19, 20, 20, 21, 21, 20, 17, 18, 20, 20, 21, 24, 26, 28, + 28, 29, 30, 28, 29, 31, 33, 34, 32, 34, 36, 39, 42, 40, 38, 36, + 35, 34, 33, 33, 36, 38, 38, 37, 36, 37, 39, 42, 44, 41, 42, 49, + 47, 38, 31, 27, 31, 37, 40, 37, 35, 34, 33, 33, 32, 31, 31, 32, + 33, 32, 32, 29, 28, 27, 27, 28, 27, 26, 26, 25, 25, 24, 23, 26, + 27, 26, 26, 25, 25, 25, 24, 22, 22, 23, 23, 24, 26, 30, 40, 49, + 72, 84, 74, 88, 52, 18, 45, 53, 50, 47, 44, 46, 51, 57, 71, 44, + 26, 41, 66, 26, 22, 29, 23, 22, 17, 16, 15, 16, 12, 8, 9, 9, + 16, 17, 18, 19, 19, 20, 20, 20, 17, 18, 20, 21, 20, 21, 23, 25, + 26, 27, 28, 26, 26, 28, 30, 32, 31, 32, 35, 38, 41, 38, 36, 35, + 33, 32, 30, 32, 35, 36, 36, 35, 34, 35, 37, 40, 41, 38, 39, 45, + 45, 37, 28, 25, 29, 35, 39, 36, 34, 33, 32, 31, 31, 30, 30, 31, + 32, 31, 30, 28, 27, 26, 26, 28, 28, 27, 26, 24, 24, 23, 22, 25, + 26, 25, 25, 24, 24, 24, 24, 21, 21, 21, 21, 23, 25, 29, 39, 50, + 67, 76, 79, 84, 62, 33, 53, 51, 48, 46, 48, 50, 55, 62, 66, 24, + 29, 65, 53, 17, 32, 27, 15, 23, 18, 16, 15, 15, 12, 8, 8, 9, + 16, 17, 17, 18, 19, 19, 20, 20, 19, 20, 21, 21, 22, 23, 24, 24, + 23, 24, 25, 26, 28, 28, 29, 30, 30, 32, 36, 40, 40, 38, 36, 34, + 31, 29, 30, 32, 35, 36, 35, 34, 35, 37, 39, 39, 37, 36, 37, 44, + 45, 38, 30, 26, 28, 34, 38, 37, 35, 33, 31, 31, 31, 30, 30, 31, + 30, 29, 29, 28, 27, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 24, + 25, 25, 25, 24, 24, 24, 23, 22, 21, 20, 20, 22, 25, 29, 38, 49, + 60, 60, 73, 74, 70, 44, 50, 42, 44, 46, 51, 58, 65, 63, 38, 27, + 52, 66, 39, 26, 40, 25, 13, 21, 19, 19, 17, 15, 13, 8, 6, 8, + 16, 17, 17, 18, 19, 19, 20, 21, 21, 22, 22, 22, 22, 22, 23, 24, + 23, 24, 24, 24, 25, 26, 26, 29, 30, 32, 36, 39, 38, 36, 34, 34, + 32, 31, 32, 33, 34, 36, 34, 33, 32, 34, 36, 36, 34, 33, 34, 41, + 43, 36, 28, 25, 27, 31, 36, 37, 35, 33, 31, 30, 29, 28, 28, 29, + 29, 29, 28, 25, 25, 24, 23, 24, 24, 24, 23, 22, 22, 21, 21, 23, + 24, 24, 24, 23, 23, 23, 22, 20, 19, 19, 19, 20, 23, 28, 35, 43, + 52, 41, 55, 55, 66, 45, 36, 39, 57, 63, 63, 69, 54, 34, 32, 46, + 68, 52, 19, 34, 41, 19, 17, 22, 18, 19, 17, 15, 12, 8, 6, 8, + 16, 17, 17, 18, 19, 19, 20, 21, 22, 22, 23, 22, 21, 21, 21, 22, + 22, 23, 23, 23, 23, 24, 24, 27, 30, 32, 35, 37, 35, 34, 33, 32, + 30, 30, 31, 32, 33, 34, 33, 31, 31, 32, 34, 34, 32, 32, 32, 38, + 41, 35, 27, 23, 25, 31, 34, 34, 33, 31, 29, 28, 27, 26, 26, 26, + 26, 26, 25, 23, 21, 20, 20, 22, 22, 22, 21, 20, 20, 19, 18, 20, + 21, 21, 21, 20, 20, 20, 19, 18, 16, 18, 17, 19, 22, 27, 31, 34, + 54, 34, 24, 39, 62, 54, 30, 18, 30, 34, 38, 44, 33, 26, 42, 64, + 60, 27, 24, 42, 41, 19, 21, 22, 19, 19, 17, 15, 12, 8, 6, 8, + 16, 17, 17, 18, 19, 19, 20, 21, 24, 24, 24, 22, 21, 20, 21, 21, + 20, 21, 23, 22, 24, 24, 24, 27, 31, 34, 36, 37, 35, 34, 33, 31, + 29, 28, 31, 33, 34, 35, 34, 31, 30, 32, 34, 34, 32, 31, 33, 38, + 41, 35, 29, 24, 26, 30, 35, 34, 31, 29, 28, 27, 27, 26, 25, 24, + 23, 22, 22, 21, 20, 19, 19, 20, 20, 19, 18, 18, 17, 16, 16, 17, + 17, 17, 17, 16, 16, 16, 16, 17, 18, 18, 18, 20, 22, 26, 28, 27, + 58, 42, 10, 20, 49, 58, 41, 45, 41, 39, 42, 39, 47, 55, 64, 59, + 29, 9, 31, 41, 37, 26, 23, 19, 17, 18, 17, 13, 11, 8, 6, 8, + 16, 17, 17, 18, 19, 19, 20, 21, 25, 25, 24, 22, 22, 21, 21, 20, + 20, 20, 22, 22, 23, 24, 24, 27, 30, 34, 35, 34, 33, 33, 33, 31, + 26, 26, 29, 31, 33, 33, 33, 31, 30, 32, 33, 33, 32, 31, 32, 39, + 41, 35, 30, 25, 26, 30, 36, 34, 31, 30, 28, 28, 28, 27, 26, 23, + 21, 21, 20, 19, 19, 18, 17, 18, 18, 17, 16, 16, 15, 14, 14, 15, + 15, 15, 15, 13, 13, 13, 13, 18, 18, 18, 18, 19, 20, 24, 26, 22, + 48, 51, 23, 13, 37, 51, 43, 59, 57, 48, 48, 47, 41, 46, 50, 22, + 10, 25, 31, 29, 30, 33, 25, 18, 17, 17, 15, 13, 10, 7, 6, 8, + 16, 17, 17, 18, 19, 19, 20, 22, 25, 25, 23, 22, 24, 22, 21, 21, + 20, 21, 22, 22, 22, 22, 23, 25, 28, 32, 32, 31, 31, 31, 32, 29, + 25, 26, 29, 30, 31, 32, 31, 28, 29, 31, 33, 33, 31, 30, 31, 36, + 38, 33, 28, 24, 25, 28, 34, 34, 32, 30, 29, 28, 27, 27, 26, 24, + 22, 21, 20, 19, 18, 17, 16, 18, 18, 17, 16, 16, 16, 15, 14, 14, + 15, 15, 15, 13, 13, 13, 14, 18, 17, 16, 16, 16, 19, 20, 22, 17, + 38, 43, 30, 31, 42, 47, 35, 46, 41, 30, 26, 19, 24, 19, 20, 25, + 28, 29, 22, 19, 26, 34, 30, 18, 16, 16, 15, 12, 10, 7, 6, 8, + 17, 18, 18, 19, 20, 21, 21, 23, 23, 23, 22, 21, 22, 22, 21, 21, + 19, 19, 21, 21, 21, 21, 22, 25, 29, 30, 30, 28, 28, 28, 28, 26, + 23, 24, 26, 28, 28, 29, 27, 26, 26, 27, 28, 29, 27, 27, 27, 31, + 34, 32, 28, 24, 24, 25, 30, 30, 29, 27, 26, 26, 25, 24, 23, 23, + 23, 22, 21, 19, 18, 17, 16, 19, 20, 19, 18, 18, 18, 17, 16, 16, + 16, 15, 15, 14, 14, 14, 15, 18, 19, 18, 18, 17, 19, 21, 22, 19, + 32, 35, 33, 41, 45, 42, 32, 29, 20, 12, 11, 7, 10, 15, 27, 40, + 37, 27, 22, 22, 25, 27, 26, 21, 17, 16, 14, 13, 11, 8, 7, 8, + 17, 18, 19, 19, 21, 21, 22, 23, 21, 21, 21, 21, 21, 21, 22, 21, + 18, 18, 19, 20, 21, 21, 22, 26, 31, 30, 30, 28, 27, 26, 26, 24, + 21, 23, 25, 26, 28, 27, 26, 25, 24, 25, 25, 26, 25, 25, 24, 27, + 30, 31, 28, 24, 23, 23, 26, 26, 25, 24, 24, 23, 23, 22, 21, 24, + 23, 22, 22, 19, 18, 18, 17, 21, 22, 21, 20, 20, 20, 19, 18, 18, + 18, 17, 16, 16, 16, 16, 16, 19, 20, 20, 19, 19, 20, 24, 24, 22, + 26, 31, 34, 37, 39, 35, 32, 28, 23, 19, 18, 17, 21, 26, 30, 32, + 31, 29, 27, 25, 23, 20, 21, 21, 17, 14, 14, 14, 12, 9, 7, 8, + 18, 18, 19, 20, 21, 21, 22, 22, 20, 20, 20, 20, 20, 21, 22, 21, + 17, 17, 18, 19, 21, 20, 22, 26, 31, 30, 29, 27, 26, 25, 25, 24, + 23, 25, 26, 28, 28, 28, 27, 24, 23, 24, 25, 25, 25, 24, 23, 26, + 31, 32, 29, 26, 24, 24, 26, 27, 26, 25, 24, 24, 23, 23, 22, 23, + 23, 22, 22, 20, 18, 18, 17, 21, 22, 21, 20, 20, 19, 18, 18, 18, + 18, 17, 16, 16, 16, 16, 16, 19, 20, 19, 18, 18, 19, 22, 22, 20, + 22, 26, 30, 33, 34, 35, 36, 38, 35, 34, 34, 32, 32, 31, 30, 27, + 25, 23, 22, 21, 18, 15, 17, 20, 16, 13, 12, 13, 11, 9, 8, 8, + 18, 18, 19, 20, 20, 21, 21, 22, 20, 20, 20, 20, 20, 20, 21, 20, + 17, 18, 18, 19, 20, 20, 22, 26, 29, 29, 28, 26, 25, 24, 24, 23, + 22, 24, 26, 27, 27, 27, 26, 24, 22, 23, 24, 25, 24, 23, 22, 26, + 30, 31, 28, 26, 24, 23, 25, 25, 25, 24, 23, 23, 22, 22, 21, 22, + 22, 21, 21, 19, 18, 17, 17, 20, 20, 20, 19, 18, 18, 17, 16, 18, + 17, 16, 16, 16, 16, 16, 16, 18, 18, 18, 16, 15, 17, 20, 20, 17, + 19, 23, 26, 27, 29, 31, 31, 31, 31, 31, 32, 31, 29, 26, 25, 24, + 22, 19, 18, 18, 16, 13, 14, 17, 14, 11, 11, 12, 11, 9, 8, 8, + 18, 18, 19, 20, 20, 20, 21, 21, 20, 19, 19, 19, 19, 20, 21, 20, + 18, 18, 19, 20, 20, 21, 24, 27, 29, 28, 27, 25, 24, 24, 23, 22, + 22, 23, 25, 26, 27, 26, 25, 24, 23, 24, 25, 25, 25, 24, 23, 25, + 29, 30, 27, 25, 23, 22, 23, 24, 24, 23, 22, 22, 21, 20, 20, 21, + 22, 21, 20, 19, 18, 17, 17, 19, 19, 19, 18, 17, 17, 16, 15, 17, + 17, 16, 15, 15, 15, 15, 15, 17, 17, 16, 15, 13, 15, 17, 17, 16, + 17, 22, 24, 26, 28, 27, 26, 28, 30, 31, 30, 28, 27, 25, 24, 21, + 20, 18, 17, 16, 15, 11, 12, 14, 12, 9, 10, 11, 10, 9, 8, 8, + 18, 18, 19, 19, 19, 20, 21, 21, 19, 19, 19, 19, 19, 19, 20, 20, + 18, 19, 20, 20, 20, 21, 25, 28, 28, 27, 26, 24, 23, 23, 22, 22, + 22, 24, 26, 27, 27, 26, 25, 24, 23, 24, 25, 25, 25, 24, 23, 26, + 30, 30, 27, 25, 24, 22, 23, 24, 24, 23, 22, 22, 22, 21, 20, 21, + 21, 20, 19, 19, 18, 17, 17, 19, 19, 18, 17, 17, 16, 15, 14, 17, + 16, 16, 15, 15, 15, 15, 15, 15, 16, 14, 13, 12, 13, 16, 16, 14, + 16, 19, 22, 23, 25, 26, 25, 26, 28, 29, 27, 24, 23, 22, 20, 18, + 17, 16, 15, 14, 11, 8, 10, 12, 10, 8, 9, 10, 10, 9, 8, 8, + 18, 18, 19, 19, 19, 20, 21, 20, 19, 19, 19, 19, 19, 19, 20, 20, + 19, 20, 21, 21, 21, 22, 26, 28, 28, 27, 26, 24, 23, 22, 22, 22, + 23, 25, 26, 27, 27, 26, 26, 24, 23, 24, 25, 26, 25, 24, 23, 26, + 30, 30, 27, 26, 25, 23, 23, 24, 24, 23, 23, 23, 22, 21, 20, 20, + 20, 19, 19, 19, 18, 17, 17, 18, 18, 17, 17, 16, 16, 15, 14, 16, + 16, 15, 15, 15, 15, 15, 15, 15, 15, 14, 12, 12, 13, 15, 16, 12, + 15, 18, 20, 18, 20, 23, 22, 24, 27, 26, 24, 24, 22, 20, 17, 16, + 16, 14, 14, 11, 9, 6, 7, 10, 8, 7, 8, 9, 10, 9, 8, 8, + 18, 18, 19, 19, 19, 19, 19, 18, 17, 17, 17, 18, 18, 19, 20, 20, + 19, 19, 20, 21, 21, 23, 25, 27, 27, 26, 25, 23, 21, 20, 20, 21, + 23, 24, 25, 26, 26, 26, 26, 24, 23, 24, 25, 25, 24, 23, 22, 24, + 28, 30, 28, 25, 23, 21, 21, 23, 24, 24, 24, 22, 21, 20, 20, 21, + 21, 20, 19, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 15, 15, 17, + 17, 16, 15, 15, 14, 13, 12, 14, 13, 14, 13, 12, 13, 13, 15, 16, + 17, 19, 19, 20, 20, 21, 22, 23, 24, 24, 23, 22, 20, 19, 17, 17, + 15, 13, 12, 11, 10, 7, 7, 9, 7, 6, 7, 8, 9, 9, 8, 8, + 18, 18, 18, 18, 18, 18, 18, 18, 16, 16, 17, 18, 18, 19, 20, 20, + 19, 20, 21, 21, 22, 23, 25, 26, 27, 25, 25, 22, 21, 20, 20, 21, + 23, 24, 25, 25, 25, 25, 25, 25, 23, 24, 25, 24, 24, 23, 22, 25, + 28, 29, 27, 24, 22, 21, 21, 23, 24, 24, 24, 22, 21, 20, 19, 21, + 21, 20, 20, 20, 20, 19, 18, 18, 18, 17, 17, 16, 16, 16, 16, 17, + 17, 16, 15, 15, 14, 12, 12, 13, 12, 13, 14, 12, 13, 14, 15, 15, + 17, 18, 19, 19, 19, 20, 21, 22, 22, 22, 21, 20, 19, 17, 17, 18, + 16, 13, 12, 12, 12, 8, 8, 8, 7, 6, 7, 8, 9, 9, 8, 8, + 18, 18, 18, 18, 18, 18, 18, 17, 16, 16, 16, 17, 18, 18, 19, 20, + 20, 21, 21, 22, 23, 24, 26, 27, 25, 24, 23, 21, 20, 20, 19, 20, + 23, 24, 24, 25, 24, 24, 24, 24, 24, 25, 25, 25, 24, 23, 22, 24, + 27, 29, 27, 24, 22, 20, 20, 22, 23, 23, 23, 22, 21, 20, 19, 21, + 22, 21, 21, 21, 21, 20, 19, 19, 18, 17, 17, 16, 16, 16, 16, 17, + 16, 16, 15, 15, 14, 12, 12, 12, 12, 13, 13, 13, 14, 15, 16, 14, + 16, 17, 17, 17, 17, 18, 19, 19, 19, 19, 19, 17, 15, 14, 15, 18, + 15, 12, 12, 13, 11, 9, 8, 8, 6, 5, 7, 8, 9, 9, 8, 8, + 18, 18, 18, 18, 18, 18, 18, 17, 15, 15, 16, 17, 17, 18, 18, 19, + 21, 22, 22, 23, 25, 25, 26, 26, 25, 24, 23, 21, 20, 19, 19, 20, + 23, 24, 25, 25, 24, 24, 24, 23, 23, 24, 25, 24, 23, 23, 22, 24, + 27, 29, 27, 24, 22, 21, 21, 23, 23, 23, 23, 22, 21, 21, 20, 22, + 21, 21, 20, 21, 20, 19, 19, 19, 18, 17, 17, 15, 15, 15, 15, 16, + 16, 15, 15, 15, 14, 12, 12, 12, 12, 12, 12, 13, 14, 15, 15, 16, + 17, 18, 18, 17, 17, 17, 18, 18, 18, 18, 18, 16, 14, 13, 14, 16, + 14, 12, 11, 12, 10, 9, 8, 6, 6, 5, 7, 8, 9, 9, 8, 7, + 17, 17, 17, 17, 17, 17, 17, 16, 15, 15, 16, 16, 17, 17, 18, 19, + 21, 22, 23, 24, 26, 26, 26, 25, 24, 23, 22, 20, 19, 18, 18, 20, + 24, 24, 26, 25, 24, 24, 24, 23, 23, 23, 24, 24, 23, 22, 21, 23, + 27, 29, 26, 24, 23, 21, 21, 22, 23, 23, 23, 22, 22, 21, 20, 21, + 21, 20, 20, 20, 20, 19, 18, 18, 18, 17, 17, 15, 15, 15, 15, 16, + 16, 15, 14, 14, 14, 12, 12, 12, 11, 11, 11, 13, 13, 13, 15, 16, + 17, 18, 19, 19, 17, 17, 17, 18, 18, 18, 17, 15, 14, 12, 13, 14, + 13, 11, 11, 10, 9, 8, 7, 5, 5, 5, 7, 8, 9, 9, 8, 7, + 17, 17, 17, 17, 17, 17, 17, 16, 14, 14, 15, 16, 16, 17, 18, 18, + 21, 21, 22, 23, 26, 25, 25, 25, 23, 22, 21, 19, 19, 18, 18, 20, + 23, 24, 25, 25, 23, 23, 23, 22, 22, 22, 23, 23, 22, 21, 20, 22, + 26, 27, 25, 24, 23, 21, 21, 22, 22, 22, 22, 22, 21, 20, 20, 21, + 22, 22, 21, 21, 21, 20, 20, 19, 18, 17, 17, 14, 14, 14, 14, 15, + 15, 14, 14, 14, 14, 12, 12, 12, 12, 10, 11, 12, 13, 13, 13, 16, + 17, 17, 16, 17, 16, 15, 15, 16, 16, 16, 15, 14, 12, 11, 11, 14, + 13, 12, 11, 10, 8, 8, 6, 5, 5, 6, 7, 8, 9, 9, 7, 6, + 16, 16, 16, 16, 17, 17, 17, 16, 14, 14, 15, 15, 15, 16, 17, 18, + 19, 20, 21, 23, 25, 24, 24, 23, 22, 21, 21, 20, 19, 19, 18, 20, + 23, 23, 24, 24, 23, 23, 23, 22, 22, 22, 23, 23, 22, 21, 21, 22, + 25, 27, 25, 23, 21, 20, 20, 21, 22, 22, 22, 21, 20, 20, 19, 20, + 21, 21, 20, 20, 20, 19, 19, 18, 17, 17, 16, 14, 14, 14, 14, 15, + 15, 14, 14, 14, 13, 12, 11, 12, 12, 12, 11, 12, 12, 12, 12, 15, + 15, 15, 14, 15, 15, 14, 15, 15, 15, 15, 14, 14, 13, 11, 12, 14, + 13, 13, 12, 10, 9, 8, 7, 7, 7, 7, 8, 8, 9, 9, 7, 6, + 14, 15, 15, 16, 17, 17, 17, 16, 14, 14, 15, 15, 15, 15, 16, 17, + 17, 18, 20, 22, 23, 23, 23, 22, 21, 21, 21, 20, 18, 19, 19, 20, + 22, 22, 23, 23, 23, 23, 23, 22, 22, 23, 23, 24, 23, 22, 22, 22, + 23, 25, 25, 23, 21, 20, 20, 21, 22, 22, 22, 21, 20, 19, 18, 18, + 19, 19, 19, 18, 18, 18, 18, 18, 17, 17, 16, 16, 16, 16, 16, 16, + 15, 14, 14, 13, 12, 11, 11, 13, 12, 12, 12, 12, 12, 12, 12, 13, + 13, 13, 13, 13, 13, 13, 13, 15, 14, 13, 13, 14, 13, 12, 13, 13, + 13, 12, 11, 11, 10, 9, 9, 10, 9, 8, 8, 9, 9, 9, 8, 7, + 14, 15, 15, 16, 17, 17, 17, 16, 14, 14, 15, 15, 15, 15, 16, 17, + 17, 18, 20, 22, 23, 23, 23, 22, 21, 21, 21, 20, 19, 20, 20, 21, + 21, 22, 23, 23, 23, 23, 23, 22, 22, 23, 23, 24, 23, 22, 21, 21, + 23, 25, 25, 23, 21, 20, 20, 20, 21, 21, 21, 21, 20, 19, 18, 18, + 19, 19, 19, 18, 18, 18, 18, 18, 17, 17, 16, 16, 16, 16, 16, 16, + 15, 14, 14, 13, 12, 11, 11, 13, 13, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 14, 13, 12, 12, 13, 12, 11, 12, 12, + 12, 11, 10, 11, 10, 9, 9, 10, 10, 9, 9, 9, 9, 9, 8, 7, + 14, 15, 15, 16, 17, 17, 17, 16, 14, 14, 15, 15, 15, 15, 16, 17, + 17, 18, 20, 22, 23, 23, 23, 22, 21, 21, 21, 20, 19, 20, 20, 21, + 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 22, 21, 21, + 23, 25, 25, 23, 21, 20, 20, 20, 21, 21, 21, 21, 20, 19, 18, 18, + 19, 19, 19, 18, 18, 18, 18, 18, 17, 17, 16, 16, 16, 16, 16, 16, + 15, 14, 14, 13, 12, 11, 11, 13, 13, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 11, 10, 10, 10, 10, 12, 11, 11, 10, 11, 10, 9, 9, 11, + 10, 9, 9, 11, 10, 9, 9, 10, 10, 9, 9, 9, 9, 9, 8, 7 }; diff --git a/examples/jawbreaker.cpp b/examples/jawbreaker.cpp new file mode 100644 index 000000000..187a35268 --- /dev/null +++ b/examples/jawbreaker.cpp @@ -0,0 +1,232 @@ +/* + # + # File : jawbreaker.cpp + # ( C++ source file ) + # + # Description : A funny game featuring small colored balls. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Main procedure +//---------------- +int main(int argc, char **argv) { + + // Display help (if option '-h' or '--help' specified) and retrieve program arguments + cimg_usage("A small and funny game featuring colored balls.\n (by David Tschumperlé)."); + const char *score_file = cimg_option("-s",(char*)0,"Specify score file to use (0=default file)."); + cimg_help("\n" + "** Quick Help *********************************************************\n\n" + "Goal : Delete the board by clicking on groups of adjacent colored balls\n" + " (a group is made of at least two balls with the same color).\n" + " Suppressing large sets gives higher scores.\n\n" + "In-game keys : - BACKSPACE or SPACE = Undo last move\n" + " - CTRL+F = Toggle fullscreen mode\n" + " - ESC = Quit application\n" + " - Q = End current game\n\n" + "*********************************************************************"); + + // Load score file if available + CImgList score_history; + char filename_history[1024]; + std::sprintf(filename_history,"%s%s",score_file?"":cimg::temporary_path(),score_file?score_file:"/jawbreaker.score"); + std::FILE *file = std::fopen(filename_history,"r"); + if (file) { std::fclose(file); score_history = CImg::get_load_dlm(filename_history)<'y'; } + + // Create ball graphics + const unsigned int W = 12, H = 14, Wi = (W<<5), Hi = (H<<5); + unsigned int score = 0, previous_score = 0, shape_score = 0, + best_score = score_history?score_history.max():0U; + + const CImg<> colors(3,7,1,1, 255,255,255, 205,0,230, 0,235,0, 235,255,0, 235,0,0, 0,128,255, 450,350,300); + const unsigned char + white[] = { 255,255,255 }, orange[] = { 255,128,64 }, yellow[] = { 255,255,64 }, red[] = { 255,64,64 }, six = 6; + CImgList<> balls0(7,32,32,1,3,0); + cimglist_for(balls0,l) if (l) { + balls0[l].draw_circle(16,16,14,colors.data(0,l)); + cimg_forXYC(balls0[l],x,y,k) if (balls0(l,x,y,k)) (balls0(l,x,y,k)*=(32 - x + y)/60.0f)+=20; + balls0[l].draw_circle(16,16,14,colors.data(0,l),0.5f,~0U). + draw_circle(20,10,5,colors.data(),0.2f).draw_circle(22,8,2,colors.data(),0.4f).cut(0,255); + } + + // Create background graphics + CImgList balls(balls0); + CImg + mask = balls[1].get_cut(0,1).channel(0).dilate(3), + background = CImg(Wi,Hi,1,3,0). + noise(255,1).blur(6,20,0,true).equalize(100,0,255).blur(2,4,0,true); + background.get_shared_channel(0)/=4; background.get_shared_channel(1)/=8; background.get_shared_channel(2)/=2; + + // Begin user-interaction loop. + CImg board, previous_board, selected_board, shape, img(background); + CImgDisplay disp(img.width(),img.height(),"Jawbreaker",0); + bool redraw = true, gameover = false, title = true; + for (float opac = 0.0f; !disp.is_closed(); ) { + + // Init board + if (!board) { + (++((board.assign(W,H,1,1,5).noise(5,1))%=5)).get_shared_row(0).fill(0); + opac = (float)(score = previous_score = shape_score = 0); + gameover = false; redraw = title = true; + previous_board = board; + } + + // Draw graphical board + if (redraw) { + (img=background).draw_text(2,2,"Score : %u",yellow,0,0.7f,24,score). + draw_text(Wi - 90,2,"Best : %u",orange,0,0.9f,17,best_score); + if (selected_board) { + cimg_forXY(selected_board,x,y) if (selected_board(x,y)) + img.draw_image(x<<5,y<<5,balls[selected_board(x,y)],mask); + } else cimg_forXY(board,x,y) if (board(x,y)) img.draw_image(x<<5,y<<5,balls[board(x,y)],mask); + if (title) { + CImg text1, text2; + text1.draw_text(0,0,"- Jawbreaker -",white,0,1,48).resize(-100,-100,1,3); + text2.draw_text(0,0,"Press button to start",yellow,0,1,24).resize(-100,-100,1,3); + (img/=2).draw_image((Wi - text1.width())/2, + (Hi - text1.height())/2, + text1,text1.get_dilate(7),1,255). + draw_image((Wi - text2.width())/2, + (Hi + text1.height() + 10)/2, + text2,text2.get_dilate(5),0.7f,255); + for (float i = 1; i<10 && !disp.is_keyESC(); i+=0.25) + disp.display(img.get_crop((int)(Wi*(0.5f - i*i/200.0f)),(int)(Hi*(0.5f - i*i*i*i/20000.0f)), + (int)(Wi*(0.5f + i*i/200.0f)),(int)(Hi*(0.5f + i*i*i*i/20000.0f)))).wait(20); + } + } + if ((opac-=0.06f)>0) disp.display((+img).draw_text(disp.mouse_x() - 8,disp.mouse_y() - 80 + (int)(60*opac),"+%u", + white,0,(float)std::sqrt(opac),32,shape_score)).wait(20); + else { if (redraw) { disp.display(img); redraw = false; } else disp.wait(); } + + // Handle key and window events + if (disp.is_resized()) disp.resize(disp); + if (disp.is_keyBACKSPACE() || disp.is_keySPACE()) { + board = previous_board; score = previous_score; selected_board.assign(); redraw = true; disp.set_key(); + } + if (disp.is_keyQ()) { gameover = true; disp.set_key(); } + if (disp.is_keyESC()) disp.close(); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.toggle_fullscreen().display(img); + + // Handle ball selection and removal + const int x = disp.mouse_x()*board.width()/disp.width(), y = disp.mouse_y()*board.height()/disp.height(); + if (disp.button()&1 && x>=0 && y>=0) { + if (title) { title = false; redraw = true; } else { + if (!board(x,y)) { selected_board.assign(); redraw = true; } + else { + if (!selected_board || selected_board(x,y)!=6) { + (selected_board=board).draw_fill(x,y,0,&six,1,shape); + if ((shape_score=(unsigned int)shape.sum())<2) selected_board.assign(); + else { shape_score-=1; shape_score*=shape_score; opac = 1.0f; redraw = true; } + } else { + selected_board.assign(); + previous_board = board; + previous_score = score; + score += shape_score; + board&=--shape; + redraw = true; + + // Handle board modification due to ball removal + for (int pmax = board.width(), p = 0; p=0; --q) { + while (qs>=0 && !board(p,qs)) --qs; + board(p,q) = (qs>=0?board(p,qs--):0); + } + if (!board(p,board.height() - 1)) { + board.draw_image(p,board.get_crop(p,0,board.width() - 1,board.height() - 1).shift(-1)); + if (p text1, text2, text3, text4, text5, text6; + text1.draw_text(0,0,"Game Over !",white,0,1,48).resize(-100,-100,1,3); + const unsigned int remaining_balls = (unsigned int)board.get_cut(0,1).sum(); + if (remaining_balls<8) { + const unsigned int bonus = (22 - 2*remaining_balls)*10; + score += bonus; + text2.draw_text(0,0,"Jawbreaker Bonus : +%u",white,0,1,24,bonus); + } + score_history.insert(CImg::vector(score)); + text3.draw_text(0,0,"Final score : %u",yellow,0,1,24,score).resize(-100,-100,1,3); + text4.draw_text(0,0,score>best_score?"** New record ! **":"Best score : %u", + orange,0,1,24,score>best_score?score:best_score).resize(-100,-100,1,3); + text5.draw_text(0,0,"Average score : %u",red,0,1,24, + score_history?(unsigned int)(score_history>'x').mean():0U).resize(-100,-100,1,3); + text6.draw_text(0,0,"Games played : %u",red,0,1,24,score_history.size()).resize(-100,-100,1,3); + if (score>best_score) best_score = score; + + unsigned int yt = (Hi - text1.height())/2 - 20; + (img/=2).draw_image((Wi - text1.width())/2,yt,text1,text1.get_dilate(7),1,255); yt+=80; + if (text2) { img.draw_image((Wi - text2.width())/2,yt,text2,text2.get_dilate(5),1,255); yt+=25; } + img.draw_image((Wi - text3.width())/2,yt,text3,text3.get_dilate(5),1,255). + draw_image((Wi - text4.width())/2,yt + 25,text4,text4.get_dilate(5),1,255). + draw_image((Wi - text5.width())/2,yt + 50,text5,text5.get_dilate(5),1,255). + draw_image((Wi - text6.width())/2,yt + 75,text6,text6.get_dilate(5),1,255).display(disp); + for (disp.flush(); !disp.is_closed() && !disp.key() && !disp.button(); disp.wait()) + if (disp.is_resized()) disp.resize(disp); + disp.flush(); + board.assign(); + for (float i = 10; i>0 && !disp.is_keyESC(); i-=0.25) + disp.display(img.get_crop((int)(Wi*(0.5f - i*i*i*i/20000.0f)),(int)(Hi*(0.5f - i*i/200.0f)), + (int)(Wi*(0.5f + i*i*i*i/20000.0f)),(int)(Hi*(0.5f + i*i/200.0f)))).wait(20); + } + } + + // Save score history if possible, and exit. + if (score_history) { + file = std::fopen(filename_history,"w"); + if (file) { std::fclose(file); (score_history>'y').save_dlm(filename_history); } + } + + return 0; +} diff --git a/examples/mcf_levelsets2d.cpp b/examples/mcf_levelsets2d.cpp new file mode 100644 index 000000000..f69546c33 --- /dev/null +++ b/examples/mcf_levelsets2d.cpp @@ -0,0 +1,120 @@ +/* + # + # File : mcf_levelsets2d.cpp + # ( C++ source file ) + # + # Description : Implementation of the Mean Curvature Flow on a 2D curve, + # using the framework of Level Sets. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Retrieve the curve corresponding to the zero level set of the distance function. +template +CImg get_level0(const CImg& img) { + CImg dest(img); + CImg_2x2(I,T); Inn = 0; + cimg_for2x2(img,x,y,0,0,I,T) if (Icc*Inc<0 || Icc*Icn<0) dest(x,y) = 255; else dest(x,y) = Icc<0?100:0; + return dest; +} + +/*-------------------- + + Main procedure + +----------------------*/ +int main(int argc,char **argv) { + cimg_usage("Perform a Mean Curvature Flow on closed curves, using Level Sets"); + const float dt = cimg_option("-dt",0.8f,"PDE time step"); + const unsigned int nb_iterations = cimg_option("-iter",10000,"Number of iterations"); + + // Create a user-defined closed curve. + CImg curve(256,256,1,2,0); + unsigned char col1[] = {0,255}, col2[] = {200,255}, col3[] = {255,255}; + curve.draw_grid(20,20,0,0,false,false,col1,0.4f,0xCCCCCCCC,0xCCCCCCCC). + draw_text(5,5,"Please draw your curve\nin this window\n(Use your mouse)",col1); + CImgDisplay disp(curve,"Mean curvature flow",0); + int xo = -1, yo = -1, x0 = -1, y0 = -1, x1 = -1, y1 = -1; + while (!disp.is_closed() && (x0<0 || disp.button())) { + if (disp.button() && disp.mouse_x()>=0 && disp.mouse_y()>=0) { + if (x0<0) { xo = x0 = disp.mouse_x(); yo = y0 = disp.mouse_y(); } else { + x1 = disp.mouse_x(); y1 = disp.mouse_y(); + curve.draw_line(x0,y0,x1,y1,col2).display(disp); + x0 = x1; y0 = y1; + } + } + disp.wait(); + if (disp.is_resized()) disp.resize(disp); + } + curve.draw_line(x1,y1,xo,yo,col2).channel(0).draw_fill(0,0,col3); + CImg<> img = CImg<>(curve.get_shared_channel(0)).normalize(-1,1); + + // Perform the "Mean Curvature Flow". + img.distance_eikonal(10); + CImg_3x3(I,float); + for (unsigned int iteration = 0; iteration velocity(img.width(),img.height(),img.depth(),img.spectrum()); + float *ptrd = velocity.data(), veloc_max = 0; + cimg_for3x3(img,x,y,0,0,I,float) { + const float + ix = (Inc - Ipc)/2, + iy = (Icn - Icp)/2, + ixx = Inc + Ipc - 2*Icc, + iyy = Icn + Icp - 2*Icc, + ixy = (Ipp + Inn - Inp - Ipn)/4, + ngrad = ix*ix + iy*iy, + iee = (ngrad>1e-5)?((iy*iy*ixx - 2*ix*iy*ixy + ix*ix*iyy)/ngrad):0; + *(ptrd++) = iee; + if (iee>veloc_max) veloc_max = iee; else if (-iee>veloc_max) veloc_max = -iee; + } + if (veloc_max>0) img+=(velocity*=dt/veloc_max); + if (!(iteration%10)) { + get_level0(img).resize(disp.width(),disp.height()). + draw_grid(20,20,0,0,false,false,col3,0.4f,0xCCCCCCCC,0xCCCCCCCC). + draw_text(5,5,"Iteration %d",col3,0,1,13,iteration).display(disp); + } + if (!(iteration%60)) img.distance_eikonal(1,3); + if (disp.is_resized()) disp.resize(); + } + + return 0; +} diff --git a/examples/mcf_levelsets3d.cpp b/examples/mcf_levelsets3d.cpp new file mode 100644 index 000000000..fabeb0622 --- /dev/null +++ b/examples/mcf_levelsets3d.cpp @@ -0,0 +1,180 @@ +/* + # + # File : mcf_levelsets3d.cpp + # ( C++ source file ) + # + # Description : Implementation of the Mean Curvature Flow on Surfaces + # using the framework of Level Sets 3D. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Apply the Mean curvature flow PDE +//----------------------------------- +template CImg& mcf_PDE(CImg& img, const unsigned int nb_iterations, + const float dt=0.25f, const float narrow=4.0f) { + CImg velocity(img.width(),img.height(),img.depth(),img.spectrum()); + CImg_3x3x3(I,float); + for (unsigned int iteration = 0; iterationveloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } else *(ptrd++) = 0; + if (veloc_max>0) img+=(velocity*=dt/veloc_max); + } + return img; +} + +/*---------------------- + + Main procedure + + --------------------*/ +int main(int argc,char **argv) { + cimg_usage("Mean curvature flow of a surface, using 3D level sets"); + const char *file_i = cimg_option("-i",(char*)0,"Input image"); + const float dt = cimg_option("-dt",0.05f,"PDE Time step"); + const float narrow = cimg_option("-band",5.0f,"Size of the narrow band"); + const bool both = cimg_option("-both",false,"Show both evolving and initial surface"); + + // Define the signed distance map of the initial surface. + CImg<> img; + if (file_i) { + const float sigma = cimg_option("-sigma",1.2f,"Segmentation regularity"); + const float alpha = cimg_option("-alpha",5.0f,"Region growing tolerance"); + img.load(file_i).channel(0); + CImg s; + CImgDisplay disp(img,"Please select a starting point"); + while (!s || s[0]<0) s = img.get_select(0,disp); + CImg<> region; + float tmp[] = { 0 }; + img.draw_fill(s[0],s[1],s[2],tmp,1,region,alpha); + ((img = region.normalize(-1,1))*=-1).blur(sigma); + } + else { // Create synthetic implicit function + img.assign(60,60,60); + const float exte[] = { 1 }, inte[] = { -1 }; + img.fill(*exte).draw_rectangle(15,15,15,45,45,45,inte).draw_rectangle(25,25,0,35,35,img.depth() - 1,exte). + draw_rectangle(0,25,25,img.width() - 1,35,35,exte).draw_rectangle(25,0,25,35,img.height() - 1,35,exte).noise(0.7); + } + img.distance_eikonal(10,0,0.1f); + + // Compute corresponding surface triangularization by the marching cube algorithm (isovalue 0). + CImg<> points0; + CImgList faces0; + if (both) points0 = img.get_isosurface3d(faces0,0); + const CImgList colors0(faces0.size(),CImg::vector(100,200,255)); + const CImgList<> opacities0(faces0.size(),1,1,1,1,0.2f); + + // Perform MCF evolution. + CImgDisplay disp(256,256,0,1), disp3d(512,512,0,0); + float alpha = 0, beta = 0; + for (unsigned int iteration = 0; !disp.is_closed() && !disp3d.is_closed() && + !disp.is_keyESC() && !disp3d.is_keyESC() && !disp.is_keyQ() && !disp3d.is_keyQ(); ++iteration) { + disp.set_title("3D implicit Function (iter. %u)",iteration); + disp3d.set_title("Mean curvature flow 3D - Isosurface (iter. %u)",iteration); + + // Apply PDE on the distance function. + mcf_PDE(img,1,dt,narrow); // Do one iteration of mean curvature flow + // Every 10 steps, do one iteration of distance function re-initialization. + if (!(iteration%10)) img.distance_eikonal(1,narrow,0.5f); + + // Compute surface triangularization by the marching cube algorithm (isovalue 0) + CImgList faces; + CImg<> points = img.get_isosurface3d(faces,0); + CImgList colors(faces.size(),CImg::vector(200,128,100)); + CImgList<> opacities(faces.size(),CImg<>::vector(1.0f)); + const float fact = 3*std::max(disp3d.width(),disp3d.height())/(4.0f*std::max(img.width(),img.height())); + + // Append initial object if necessary. + if (both) { + points.append_object3d(faces,points0,faces0); + colors.insert(colors0); + opacities.insert(opacities0); + } + + // Center and rescale the objects + cimg_forX(points,l) { + points(l,0)=(points(l,0) - img.width()/2)*fact; + points(l,1)=(points(l,1) - img.height()/2)*fact; + points(l,2)=(points(l,2) - img.depth()/2)*fact; + } + + // Display 3D object on the display window. + CImg visu(disp3d.width(),disp3d.height(),1,3,0); + const CImg<> rot = CImg<>::rotation_matrix(1,0,0,(beta+=0.5f))*CImg<>::rotation_matrix(0,1,1,(alpha+=3)); + if (points.size()) { + visu.draw_object3d(visu.width()/2.0f,visu.height()/2.0f,0.0f, + rot*points,faces,colors,opacities,3, + false,500.0,0.0f,0.0f,-8000.0f).display(disp3d); + } else visu.fill(0).display(disp3d); + img.display(disp.wait(20)); + + if ((disp3d.button() || disp3d.key()) && points.size() && !disp3d.is_keyESC() && !disp3d.is_keyQ()) { + const unsigned char white[3] = { 255, 255, 255 }; + visu.fill(0).draw_text(10,10,"Time stopped, press any key to start again",white). + display_object3d(disp3d,points,faces,colors,opacities,true,4,3,false,500,0,0,-5000,0.4f,0.3f); + disp3d.set_key(); + } + if (disp.is_resized()) disp.resize(false); + if (disp3d.is_resized()) disp3d.resize(false); + disp.wait(50); + } + + return 0; +} diff --git a/examples/odykill.cpp b/examples/odykill.cpp new file mode 100644 index 000000000..a9e55f879 --- /dev/null +++ b/examples/odykill.cpp @@ -0,0 +1,229 @@ +/* + # + # File : odykill.cpp + # ( C++ source file ) + # + # Description : Simple shoot-em-up game featuring the Robotvis/Odyssee Team ! + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "img/odykill.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Create game graphics + CImg graphics[21] = { + CImg(data_tomato,100,100,1,3,false), + CImg(data_heart,100,100,1,3,false), + CImg(data_dynamite,100,100,1,3,false), + CImg(data_brain,100,100,1,3,false), + CImg(data_cdrom,100,100,1,3,false), + CImg(data_enemy,113,150,1,3,false), + CImg(data_enemy2,116,155,1,3,false), + CImg(data_enemy3,104,134,1,3,false), + CImg(data_enemy4,141,151,1,3,false), + CImg(data_enemy5,140,152,1,3,false), + CImg(data_enemy6,131,156,1,3,false), + CImg(data_enemy7,114,125,1,3,false), + CImg(data_enemy8,97,125,1,3,false), + CImg(data_enemy9,143,134,1,3,false), + CImg(data_enemy10,158,214,1,3,false), + CImg(data_enemy11,131,168,1,3,false), + CImg(data_enemy12,114,138,1,3,false), + CImg(data_enemy13,144,144,1,3,false), + CImg(data_enemy14,132,153,1,3,false), + CImg(data_enemy15,152,151,1,3,false), + CImg(data_enemy16,139,185,1,3,false), + }; + CImg<> masks[21]; + const unsigned char black[] = { 0,0,0 }, white[] = { 255,255,255 }; + + // Display weapon selection menu + CImg back0(640,480,1,3), title(data_title,294,94,1,3,true), choose(data_choose,524,49,1,3,true); + back0.fill(0).draw_image(back0.width()/2 - title.width()/2,30,title). + draw_image(back0.width()/2 - choose.width()/2,150,choose); + CImgDisplay disp(back0,"OdyKill"); + int weapon=-1; + + while (!disp.is_closed() && !disp.button()) { + weapon = -1; + for (int k=0; k<5; k++) { + const int mx = disp.mouse_x(), my = disp.mouse_y(); + if (!((mx - 40)/110==k && my>250 && my<350)) back0.draw_image(40 + k*110,250,graphics[k]/2.0); + else back0.draw_image(40 + k*110,250,graphics[weapon=k]); + } + CImg tmp = CImg().draw_text(0,0, + weapon==0?" Tomato ": + weapon==1?" Heart ": + weapon==2?" Dynamite ": + weapon==3?" Brain ": + weapon==4?" CD-Rom ": + " ",white,black,1,32).resize(-100,-100,1,1), + tmp2 = tmp.get_blur(6).normalize(0,255).draw_image(tmp,0.5f); + cimg_forC(back0,k) back0.draw_image(250,390,0,k,tmp2); + + disp.resize(disp).display(back0).wait(); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.toggle_fullscreen(); + if (disp.is_closed() || disp.is_keyQ() || disp.is_keyESC()) std::exit(0); + } + disp.hide_mouse(); + + /*--------------------------------- + + Go ! + + --------------------------------*/ + + const CImg + background = CImg(100,100,1,3,0).noise(100,2).draw_plasma(). + resize(back0.width(),back0.height(),1,3,5)/2.5; + for (unsigned int k = 0; k<21; k++) { + CImg<> tmp = graphics[k].resize(k<5?32:164,k<5?32:164,1,3); + cimg_forXY(tmp,x,y) tmp(x,y) = (tmp(x,y,0)==255 && tmp(x,y,1)==255 && tmp(x,y,2)==255)?0.0f:1.0f; + masks[k] = tmp.get_channel(0); + graphics[k].resize(k<5?32:164,k<5?32:164,1,3,5); + } + + CImg canvas(background); + int n = 5 + ((int)(200*cimg::rand())%16); + CImg tomato = graphics[weapon], enemy = graphics[n]; + CImg<> m_tomato = masks[weapon], m_enemy = masks[n]; + + double angle = 0; + int tomato_x = 0,tomato_y = 0,shooted = 0; + double enemy_x = -1000, enemy_y = -1000, enemy_z = -1000, tomato_z = 0, vx = 0, vy = 0, vz = 0, va = 0; + double speed = cimg_option("-speed",5.0,"Speed"); + int timeleft = 2000, score = 0; + CImg r_enemy; + + // Main loop + while (timeleft && !disp.is_closed() && !disp.is_keyESC() && !disp.is_keyQ()) { + --timeleft; + const int mx = disp.mouse_x()*back0.width()/disp.width(), my = disp.mouse_y()*back0.height()/disp.height(); + + // Handle object motion + if (tomato_z>0) { + tomato_z+=0.07; tomato_y -= (int)(20*std::cos(cimg::PI/7 + tomato_z*cimg::PI)); + if (tomato_z>=1) { tomato_z=0; tomato_x = mx; tomato_y = my; } + } + if (!shooted) { enemy_x +=vx; enemy_y +=vy; enemy_z +=vz; } + else { + va = 10; + enemy_y += vy; + vy += 2; + tomato_z = 0; + if (enemy_y>5*canvas.height()/4) { + shooted = 0; + int nn = 5 + ((int)(200*cimg::rand())%16); + enemy = graphics[nn]; + m_enemy = masks[nn]; + enemy_x=cimg::rand(-1,1)*1e8; enemy_y=cimg::rand(-1,1)*1e8; enemy_z=cimg::rand(-1,1)*1e8; + va = angle = 0; + } + } + + if (enemy_x<0) { enemy_x=0; vx = speed*cimg::rand(-1,1); } + if (enemy_x>canvas.width()) { enemy_x=canvas.width(); vx = speed*cimg::rand(-1,1); } + if (enemy_y<0) { enemy_y=0; vy = speed*cimg::rand(-1,1); } + if (!shooted && enemy_y>canvas.height()) { enemy_y=canvas.height(); vy = speed*cimg::rand(-1,1); } + if (enemy_z<0.1) { enemy_z = 0.1; vz = speed*0.01*cimg::rand(-1,1); } + if (enemy_z>0.7) { enemy_z = 0.7; vz = speed*0.01*cimg::rand(-1,1); } + angle+=va; + + // Handle mouse interaction + if (!disp.button()) { + if (tomato_z==0) { + tomato_x = mx; tomato_y = my; + } + } else tomato_z +=0.0001; + + // Detect shooting + if (cimg::abs(tomato_z - enemy_z)<0.1) { + if (tomato_x>enemy_x - r_enemy.width()/2 && tomato_xenemy_y - r_enemy.height()/2 && tomato_y rm_enemy = m_enemy.get_resize(r_enemy.width(),r_enemy.height()); + CImg r_tomato = tomato.get_resize((int)(8 + tomato.width()*(1 - tomato_z)), + (int)(8 + tomato.height()*(1 - tomato_z)),-100,-100); + CImg<> rm_tomato = m_tomato.get_resize(r_tomato.width(),r_tomato.height()); + + if (angle!=0) { + r_enemy.rotate((float)angle,0,0); + rm_enemy.rotate((float)angle,0,0); + cimg_forXY(r_enemy,x,y) r_enemy(x,y,0) = (r_enemy(x,y,0) + 255)/2; + } + r_enemy*=(1 - (enemy_z - 0.1)/1.6); + r_tomato*=(1 - tomato_z/1.6); + rm_enemy*=(1 - (enemy_z - 0.1)/1.6); + + if (enemy_z>tomato_z) { + canvas.draw_image((int)(enemy_x - r_enemy.width()/2), + (int)(enemy_y - r_enemy.height()/2), + r_enemy,rm_enemy); + if (tomato_x>=0) canvas.draw_image(tomato_x - r_tomato.width()/2, + tomato_y - r_tomato.height()/2, + r_tomato,rm_tomato); + } + else { + if (tomato_x>=0) canvas.draw_image(tomato_x - r_tomato.width()/2, + tomato_y - r_tomato.height()/2, + r_tomato,rm_tomato); + canvas.draw_image((int)(enemy_x - r_enemy.width()/2), + (int)(enemy_y - r_enemy.height()/2), + r_enemy,rm_enemy); + } + canvas.draw_text(1,1," Time left %d, Score = %d",white,0,0.5f,24,timeleft,score); + disp.resize(disp).display(canvas).wait(25); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.toggle_fullscreen(); + } + + std::fprintf(stderr,"\n\n YOUR SCORE : %d\n\n\n",score); + + return 0; +} diff --git a/examples/pde_TschumperleDeriche2d.cpp b/examples/pde_TschumperleDeriche2d.cpp new file mode 100644 index 000000000..c5c9c223e --- /dev/null +++ b/examples/pde_TschumperleDeriche2d.cpp @@ -0,0 +1,231 @@ +/* + # + # File : pde_TschumperleDeriche2d.cpp + # ( C++ source file ) + # + # Description : Implementation of the Tschumperlé-Deriche's Regularization + # PDE, for 2D multivalued images, as described in the articles below. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # (1) PDE-Based Regularization of Multivalued Images and Applications. + # (D. Tschumperlé). PhD Thesis. University of Nice-Sophia Antipolis, December 2002. + # (2) Diffusion PDE's on Vector-valued Images : Local Approach and Geometric Viewpoint. + # (D. Tschumperlé and R. Deriche). IEEE Signal Processing Magazine, October 2002. + # (3) Vector-Valued Image Regularization with PDE's : A Common Framework for Different Applications. + # (D. Tschumperlé and R. Deriche). CVPR'2003, Computer Vision and Pattern Recognition, + # Madison, United States, June 2003. + # + # This code can be used to perform image restoration, inpainting, magnification or flow visualization. + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif +#undef min +#undef max + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line arguments + //----------------------------- + cimg_usage("Tschumperlé-Deriche's flow for 2D Image Restoration, Inpainting, Magnification or Flow visualization"); + const char *file_i = cimg_option("-i",cimg_imagepath "milla.bmp","Input image"); + const char *file_m = cimg_option("-m",(char*)NULL,"Mask image (if Inpainting)"); + const char *file_f = cimg_option("-f",(char*)NULL,"Flow image (if Flow visualization)"); + const char *file_o = cimg_option("-o",(char*)NULL,"Output file"); + const double zoom = cimg_option("-zoom",1.0,"Image magnification"); + + const unsigned int nb_iter = cimg_option("-iter",100000,"Number of iterations"); + const double dt = cimg_option("-dt",20.0,"Adapting time step"); + const double alpha = cimg_option("-alpha",0.0,"Gradient smoothing"); + const double sigma = cimg_option("-sigma",0.5,"Structure tensor smoothing"); + const float a1 = cimg_option("-a1",0.5f,"Diffusion limiter along minimal variations"); + const float a2 = cimg_option("-a2",0.9f,"Diffusion limiter along maximal variations"); + const double noiseg = cimg_option("-ng",0.0,"Add gauss noise before aplying the algorithm"); + const double noiseu = cimg_option("-nu",0.0,"Add uniform noise before applying the algorithm"); + const double noises = cimg_option("-ns",0.0,"Add salt&pepper noise before applying the algorithm"); + const bool stflag = cimg_option("-stats",false,"Display image statistics at each iteration"); + const unsigned int save = cimg_option("-save",0,"Iteration saving step"); + const unsigned int visu = cimg_option("-visu",10,"Visualization step (0=no visualization)"); + const unsigned int init = cimg_option("-init",3,"Inpainting initialization (0=black, 1=white, 2=noise, 3=unchanged)"); + const unsigned int skip = cimg_option("-skip",1,"Step of image geometry computation"); + bool view_t = cimg_option("-d",false,"View tensor directions (useful for debug)"); + double xdt = 0; + + // Variable initialization + //------------------------- + CImg<> img, flow; + CImg mask; + + if (file_i) { + img = CImg<>(file_i).resize(-100,-100,1,-100); + if (file_m) mask = CImg(file_m).resize(img.width(),img.height(),1,1); + else if (zoom>1) { + mask = CImg(img.width(),img.height(),1,1,-1). + resize((int)(img.width()*zoom),(int)(img.height()*zoom),1,1,4) + 1; + img.resize((int)(img.width()*zoom),(int)(img.height()*zoom),1,-100,3); + } + } else { + if (file_f) { + flow = CImg<>(file_f); + img = CImg<>((int)(flow.width()*zoom),(int)(flow.height()*zoom),1,1,0).noise(100,2); + flow.resize(img.width(),img.height(),1,2,3); + } else + throw CImgException("You need to specify at least one input image (option -i), or one flow image (option -f)"); + } + img.noise(noiseg,0).noise(noiseu,1).noise(noises,2); + float initial_min, initial_max = img.max_min(initial_min); + if (mask && init!=3) + cimg_forXYC(img,x,y,k) if (mask(x,y)) + img(x,y,k) = (float)((init? + (init==1?initial_max:((initial_max - initial_min)*cimg::rand())): + initial_min)); + + CImgDisplay disp; + if (visu) disp.assign(img,"Iterated Image"); + CImg<> G(img.width(),img.height(),1,3,0), T(G), veloc(img), val(2), vec(2,2); + + // PDE main iteration loop + //------------------------- + for (unsigned int iter = 0; iter grad = img.get_gradient(); + if (alpha!=0) cimglist_for(grad,l) grad[l].blur((float)alpha); + G.fill(0); + cimg_forXYC(img,x,y,k) { + const float ix = grad[0](x,y,k), iy = grad[1](x,y,k); + G(x,y,0) += ix*ix; + G(x,y,1) += ix*iy; + G(x,y,2) += iy*iy; + } + if (sigma!=0) G.blur((float)sigma); + + // When using PDE for image restoration, inpainting or zooming + T.fill(0); + if (!mask) cimg_forXY(G,x,y) { + G.get_tensor_at(x,y).symmetric_eigen(val,vec); + const float + l1 = (float)std::pow(1.0f + val[0] + val[1],-a1), + l2 = (float)std::pow(1.0f + val[0] + val[1],-a2), + ux = vec(1,0), + uy = vec(1,1); + T(x,y,0) = l1*ux*ux + l2*uy*uy; + T(x,y,1) = l1*ux*uy - l2*ux*uy; + T(x,y,2) = l1*uy*uy + l2*ux*ux; + } + else cimg_forXY(G,x,y) if (mask(x,y)) { + G.get_tensor_at(x,y).symmetric_eigen(val,vec); + const float + ux = vec(1,0), + uy = vec(1,1); + T(x,y,0) = ux*ux; + T(x,y,1) = ux*uy; + T(x,y,2) = uy*uy; + } + } + } + + // Compute the PDE velocity and update the iterated image + //-------------------------------------------------------- + CImg_3x3(I,float); + veloc.fill(0); + cimg_forC(img,k) cimg_for3x3(img,x,y,0,k,I,float) { + const float + a = T(x,y,0), + b = T(x,y,1), + c = T(x,y,2), + ixx = Inc + Ipc - 2*Icc, + iyy = Icn + Icp - 2*Icc, + ixy = 0.25f*(Ipp + Inn - Ipn - Inp); + veloc(x,y,k) = a*ixx + 2*b*ixy + c*iyy; + } + if (dt>0) { + float m, M = veloc.max_min(m); + xdt = dt/std::max(cimg::abs(m),cimg::abs(M)); + } else xdt=-dt; + img+=veloc*xdt; + img.cut((float)initial_min,(float)initial_max); + + // Display and save iterations + if (disp && !(iter%visu)) { + if (!view_t) img.display(disp); + else { + const unsigned char white[3] = {255,255,255}; + CImg nvisu = img.get_resize(disp.width(),disp.height()).normalize(0,255); + CImg<> isophotes(img.width(),img.height(),1,2,0); + cimg_forXY(img,x,y) if (!mask || mask(x,y)) { + T.get_tensor_at(x,y).symmetric_eigen(val,vec); + isophotes(x,y,0) = vec(0,0); + isophotes(x,y,1) = vec(0,1); + } + nvisu.draw_quiver(isophotes,white,0.5f,10,9,0).display(disp); + } + } + if (save && file_o && !(iter%save)) img.save(file_o,iter); + if (disp) disp.resize().display(img); + } + + // Save result and exit. + if (file_o) img.save(file_o); + return 0; +} diff --git a/examples/pde_heatflow2d.cpp b/examples/pde_heatflow2d.cpp new file mode 100644 index 000000000..bb970a639 --- /dev/null +++ b/examples/pde_heatflow2d.cpp @@ -0,0 +1,114 @@ +/* + # + # File : pde_heatflow2D.cpp + # ( C++ source file ) + # + # Description : A simple Heat flow on 2D images. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Include library header file +#include "CImg.h" +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif +#undef min +#undef max + +// Make a simpler namespace alias if one wants to avoid 'using namespace cimg_library' +namespace cil = cimg_library; + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line arguments, and init images and displays + //----------------------------------------------------------- + cimg_usage("Perform a simple Heat Flow on 2D images"); + cil::CImg<> img(cimg_option("-i",cimg_imagepath "milla.bmp","Input image")), veloc(img); + const double dt = cimg_option("-dt",3.0,"Adapting time step"); + img. + noise(cimg_option("-ng",0.0,"Add gaussian noise"),0). + noise(cimg_option("-nu",0.0,"Add uniform noise"),1). + noise(cimg_option("-ns",0.0,"Add Salt&Pepper noise"),2); + cil::CImgDisplay profile(400,300,"Intensity Profile",0,false,true), disp(img,"Heat flow 2D",0,false,true); + disp.move((cil::CImgDisplay::screen_width() - disp.width() - profile.width())/2, + (cil::CImgDisplay::screen_height() - disp.height())/2); + + profile.move(disp.window_x() + 8 + disp.window_width(), disp.window_y()); + const float fwhite[] = { 255,255,255 }; + bool run_PDE = true; + + // Begin PDE iteration loop + //------------------------- + for (int iter = 0; !disp.is_closed() && !profile.is_closed() && + !disp.is_keyQ() && !disp.is_keyESC() && !profile.is_keyQ() && !profile.is_keyESC();) { + + // Compute one iteration of PDE explicit scheme + if (run_PDE) { + CImg_3x3(I,float); + cimg_forC(img,k) cimg_for3x3(img,x,y,0,k,I,float) veloc(x,y,k) = Inc + Ipc + Icn + Icp - 4*Icc; + float m, M = veloc.max_min(m); + const double xdt = dt/(M - m); + img += veloc*xdt; + cil::CImg<>(img).draw_text(2,2,"iter = %d",fwhite,0,1,13,iter).display(disp.wait(25)); + } + + // Plot (R,G,B) intensity profiles and display it + if (disp.mouse_x()>=0) { + const int + mx = disp.mouse_x(), my = disp.mouse_y(), + mnx = mx*profile.width()/disp.width(); + const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 }, white[] = { 255,255,255 }; + cil::CImg(profile.width(),profile.height(),1,3,0). + draw_graph(img.get_shared_row(my,0,0),red,1,1,0,255,0). + draw_graph(img.get_shared_row(my,0,1),green,1,1,0,255,0). + draw_graph(img.get_shared_row(my,0,2),blue,1,1,0,255,0). + draw_line(mnx,0,mnx,profile.height() - 1,white,0.5f,cil::cimg::rol(0xFF00FF00,iter%32)). + draw_text(2,2,"(x,y)=(%d,%d)",white,0,1,13,mx,my). + display(profile); + } + + // Mouse button stops/starts PDE evolution. + if (disp.button() || profile.button()) { disp.set_button(); profile.set_button(); run_PDE = !run_PDE; } + profile.resize(); + disp.resize(disp); + if (run_PDE) ++iter; + } + + return 0; +} diff --git a/examples/plotter1d.cpp b/examples/plotter1d.cpp new file mode 100644 index 000000000..226583d10 --- /dev/null +++ b/examples/plotter1d.cpp @@ -0,0 +1,73 @@ +/* + # + # File : plotter1d.cpp + # ( C++ source file ) + # + # Description : A simple math formula plotter. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Include CImg library file and use its main namespace +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line argument. + cimg_usage("Simple plotter of mathematical formulas"); + const char *const formula = cimg_option("-f","sin(x/8) % cos(2*x)","Formula to plot"); + const float x0 = cimg_option("-x0",-5.0f,"Minimal X-value"); + const float x1 = cimg_option("-x1",5.0f,"Maximal X-value"); + const int resolution = cimg_option("-r",1024,"Plot resolution"); + const unsigned int nresolution = resolution>1?resolution:1024; + const unsigned int plot_type = cimg_option("-p",1,"Plot type"); + const unsigned int vertex_type = cimg_option("-v",1,"Vertex type"); + + // Create plot data. + CImg values(4,nresolution,1,1,0); + const unsigned int r = nresolution - 1; + cimg_forY(values,X) values(0,X) = x0 + X*(x1 - x0)/r; + cimg::eval(formula,values).move_to(values); + + // Display interactive plot window. + values.display_graph(formula,plot_type,vertex_type,"X-axis",x0,x1,"Y-axis"); + + // Quit. + return 0; +} diff --git a/examples/radon_transform2d.cpp b/examples/radon_transform2d.cpp new file mode 100644 index 000000000..9317a8be9 --- /dev/null +++ b/examples/radon_transform2d.cpp @@ -0,0 +1,379 @@ +/* + # + # File : radon_transform2d.cpp + # ( C++ source file ) + # + # Description : An implementation of the Radon Transform. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David G. Starkweather + # ( starkdg@sourceforge.net - starkweatherd@cox.net ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +#define ROUNDING_FACTOR(x) (((x) >= 0) ? 0.5 : -0.5) + +CImg GaussianKernel(double rho); +CImg ApplyGaussian(CImg im,double rho); +CImg RGBtoGrayScale(CImg &im); +int GetAngle(int dy,int dx); +CImg CannyEdges(CImg im, double T1, double T2,bool doHysteresis); +CImg<> RadonTransform(CImg im,int N); + +// Main procedure +//---------------- +int main(int argc,char **argv) { + cimg_usage("Illustration of the Radon Transform"); + + const char *file = cimg_option("-f",cimg_imagepath "parrot.ppm","path and file name"); + const double sigma = cimg_option("-r",1.0,"blur coefficient for gaussian low pass filter (lpf)"), + thresh1 = cimg_option("-t1",0.50,"lower threshold for canny edge detector"), + thresh2 = cimg_option("-t2",1.25,"upper threshold for canny edge detector");; + const int N = cimg_option("-n",64,"number of angles to consider in the Radon transform - should be a power of 2"); + + //color to draw lines + const unsigned char green[] = {0,255,0}; + CImg src(file); + + int rhomax = (int)std::sqrt((double)(src.width()*src.width() + src.height()*src.height()))/2; + + if (cimg::dialog(cimg::basename(argv[0]), + "Instructions:\n" + "Click on space bar or Enter key to display Radon transform of given image\n" + "Click on anywhere in the transform window to display a \n" + "corresponding green line in the original image\n", + "Start", "Quit",0,0,0,0, + src.get_resize(100,100,1,3),true)) std::exit(0); + + //retrieve a grayscale from the image + CImg grayScaleIm; + if ((src.spectrum() == 3) && (src.width() > 0) && (src.height() > 0) && (src.depth() == 1)) + grayScaleIm = (CImg)src.get_norm(0).quantize(255,false); + else if ((src.spectrum() == 1)&&(src.width() > 0) && (src.height() > 0) && (src.depth() == 1)) + grayScaleIm = src; + else { // image in wrong format + if (cimg::dialog(cimg::basename("wrong file format"), + "Incorrect file format\n","OK",0,0,0,0,0, + src.get_resize(100,100,1,3),true)) std::exit(0); + } + + //blur the image with a Gaussian lpf to remove spurious edges (e.g. noise) + CImg blurredIm = ApplyGaussian(grayScaleIm,sigma); + + //use canny edge detection algorithm to get edge map of the image + //- the threshold values are used to perform hysteresis in the edge detection process + CImg cannyEdgeMap = CannyEdges(blurredIm,thresh1,thresh2,false); + CImg radonImage(500,400,1,1,0); + + //display the two windows + CImgDisplay dispImage(src,"original image"); + dispImage.move(CImgDisplay::screen_width()/8,CImgDisplay::screen_height()/8); + CImgDisplay dispRadon(radonImage,"Radon Transform"); + dispRadon.move(CImgDisplay::screen_width()/4,CImgDisplay::screen_height()/4); + CImgDisplay dispCanny(cannyEdgeMap,"canny edges"); + //start main display loop + while (!dispImage.is_closed() && !dispRadon.is_closed() && + !dispImage.is_keyQ() && !dispRadon.is_keyQ() && + !dispImage.is_keyESC() && !dispRadon.is_keyESC()) { + + CImgDisplay::wait(dispImage,dispRadon); + + if (dispImage.is_keySPACE() || dispRadon.is_keySPACE()) { + radonImage = (CImg)RadonTransform(cannyEdgeMap,N).quantize(255,false).resize(500,400); + radonImage.display(dispRadon); + } + + //when clicking on dispRadon window, draw line in original image window + if (dispRadon.button()) + { + const double rho = dispRadon.mouse_y()*rhomax/dispRadon.height(), + theta = (dispRadon.mouse_x()*N/dispRadon.width())*2*cimg::PI/N, + x = src.width()/2 + rho*std::cos(theta), + y = src.height()/2 + rho*std::sin(theta); + const int x0 = (int)(x + 1000*std::cos(theta + cimg::PI/2)), + y0 = (int)(y + 1000*std::sin(theta + cimg::PI/2)), + x1 = (int)(x - 1000*std::cos(theta + cimg::PI/2)), + y1 = (int)(y - 1000*std::sin(theta + cimg::PI/2)); + src.draw_line(x0,y0,x1,y1,green,1.0f,0xF0F0F0F0).display(dispImage); + } + } + return 0; +} +/** + * PURPOSE: create a 5x5 gaussian kernel matrix + * PARAM rho - gaussiam equation parameter (default = 1.0) + * RETURN CImg the gaussian kernel + **/ + +CImg GaussianKernel(double sigma = 1.0) +{ + CImg resultIm(5,5,1,1,0); + int midX = 3, midY = 3; + cimg_forXY(resultIm,X,Y) { + resultIm(X,Y) = std::ceil(256.0*(std::exp(-(midX*midX + midY*midY)/(2*sigma*sigma)))/(2*cimg::PI*sigma*sigma)); + } + return resultIm; +} +/* + * PURPOSE: convolve a given image with the gaussian kernel + * PARAM CImg im - image to be convolved upon + * PARAM double sigma - gaussian equation parameter + * RETURN CImg image resulting from the convolution + * */ +CImg ApplyGaussian(CImg im,double sigma) +{ + CImg smoothIm(im.width(),im.height(),1,1,0); + + //make gaussian kernel + CImg gk = GaussianKernel(sigma); + //apply gaussian + + CImg_5x5(I,int); + cimg_for5x5(im,X,Y,0,0,I,int) { + float sum = 0; + sum += gk(0,0)*Ibb + gk(0,1)*Ibp + gk(0,2)*Ibc + gk(0,3)*Ibn + gk(0,4)*Iba; + sum += gk(1,0)*Ipb + gk(1,1)*Ipp + gk(1,2)*Ipc + gk(1,3)*Ipn + gk(1,4)*Ipa; + sum += gk(2,0)*Icb + gk(2,1)*Icp + gk(2,2)*Icc + gk(2,3)*Icn + gk(2,4)*Ica; + sum += gk(3,0)*Inb + gk(3,1)*Inp + gk(3,2)*Inc + gk(3,3)*Inn + gk(3,4)*Ina; + sum += gk(4,0)*Iab + gk(4,1)*Iap + gk(4,2)*Iac + gk(4,3)*Ian + gk(4,4)*Iaa; + smoothIm(X,Y) = sum/256; + } + return smoothIm; +} +/** + * PURPOSE: convert a given rgb image to a MxNX1 single vector grayscale image + * PARAM: CImg im - rgb image to convert + * RETURN: CImg grayscale image with MxNx1x1 dimensions + **/ + +CImg RGBtoGrayScale(CImg &im) +{ + CImg grayImage(im.width(),im.height(),im.depth(),1,0); + if (im.spectrum() == 3) { + cimg_forXYZ(im,X,Y,Z) { + grayImage(X,Y,Z,0) = (unsigned char)(0.299*im(X,Y,Z,0) + 0.587*im(X,Y,Z,1) + 0.114*im(X,Y,Z,2)); + } + } + grayImage.quantize(255,false); + return grayImage; +} +/** + * PURPOSE: aux. function used by CannyEdges to quantize an angle theta given by gradients, dx and dy + * into 0 - 7 + * PARAM: dx,dy - gradient magnitudes + * RETURN int value between 0 and 7 + **/ +int GetAngle(int dy,int dx) +{ + double angle = cimg::abs(std::atan2((double)dy,(double)dx)); + if ((angle >= -cimg::PI/8)&&(angle <= cimg::PI/8))//-pi/8 to pi/8 => 0 + return 0; + else if ((angle >= cimg::PI/8)&&(angle <= 3*cimg::PI/8))//pi/8 to 3pi/8 => pi/4 + return 1; + else if ((angle > 3*cimg::PI/8)&&(angle <= 5*cimg::PI/8))//3pi/8 to 5pi/8 => pi/2 + return 2; + else if ((angle > 5*cimg::PI/8)&&(angle <= 7*cimg::PI/8))//5pi/8 to 7pi/8 => 3pi/4 + return 3; + else if (((angle > 7*cimg::PI/8) && (angle <= cimg::PI)) || + ((angle <= -7*cimg::PI/8)&&(angle >= -cimg::PI))) //-7pi/8 to -pi OR 7pi/8 to pi => pi + return 4; + else return 0; +} +/** + * PURPOSE: create an edge map of the given image with hysteresis using thresholds T1 and T2 + * PARAMS: CImg im the image to perform edge detection on + * T1 lower threshold + * T2 upper threshold + * RETURN CImg edge map + **/ +CImg CannyEdges(CImg im, double T1, double T2, bool doHysteresis=false) +{ + CImg edges(im); + CImg secDerivs(im); + secDerivs.fill(0); + edges.fill(0); + CImgList gradients = im.get_gradient("xy",1); + int image_width = im.width(); + int image_height = im.height(); + + cimg_forXY(im,X,Y) { + double Gr = std::sqrt(std::pow((double)gradients[0](X,Y),2.0) + std::pow((double)gradients[1](X,Y),2.0)); + double theta = GetAngle(Y,X); + //if Gradient magnitude is positive and X,Y within the image + //take the 2nd deriv in the appropriate direction + if ((Gr > 0)&&(X < image_width - 2)&&(Y < image_height - 2)) { + if (theta == 0) + secDerivs(X,Y) = im(X + 2,Y) - 2*im(X + 1,Y) + im(X,Y); + else if (theta == 1) + secDerivs(X,Y) = im(X + 2,Y + 2) - 2*im(X + 1,Y + 1) + im(X,Y); + else if (theta == 2) + secDerivs(X,Y) = im(X,Y + 2) - 2*im(X,Y + 1) + im(X,Y); + else if (theta == 3) + secDerivs(X,Y) = im(X + 2,Y + 2) - 2*im(X + 1,Y + 1) + im(X,Y); + else if (theta == 4) + secDerivs(X,Y) = im(X + 2,Y) - 2*im(X + 1,Y) + im(X,Y); + } + } + //for each 2nd deriv that crosses a zero point and magnitude passes the upper threshold. + //Perform hysteresis in the direction of the gradient, rechecking the gradient + //angle for each pixel that meets the threshold requirement. Stop checking when + //the lower threshold is not reached. + CImg_5x5(I,float); + cimg_for5x5(secDerivs,X,Y,0,0,I,float) { + if ( (Ipp*Ibb < 0) || + (Ipc*Ibc < 0)|| + (Icp*Icb < 0) ) { + double Gr = std::sqrt(std::pow((double)gradients[0](X,Y),2.0) + std::pow((double)gradients[1](X,Y),2.0)); + int dir = GetAngle(Y,X); + int Xt = X, Yt = Y, delta_x = 0, delta_y=0; + double GRt = Gr; + if (Gr >= T2) + edges(X,Y) = 255; + //work along the gradient in one direction + if (doHysteresis) { + while ((Xt > 0) && (Xt < image_width - 1) && (Yt > 0) && (Yt < image_height - 1)) { + switch (dir){ + case 0 : delta_x=0;delta_y=1;break; + case 1 : delta_x=1;delta_y=1;break; + case 2 : delta_x=1;delta_y=0;break; + case 3 : delta_x=1;delta_y=-1;break; + case 4 : delta_x=0;delta_y=1;break; + } + Xt += delta_x; + Yt += delta_y; + GRt = std::sqrt(std::pow((double)gradients[0](Xt,Yt),2.0) + std::pow((double)gradients[1](Xt,Yt),2.0)); + dir = GetAngle(Yt,Xt); + if (GRt >= T1) + edges(Xt,Yt) = 255; + } + //work along gradient in other direction + Xt = X; Yt = Y; + while ((Xt > 0) && (Xt < image_width - 1) && (Yt > 0) && (Yt < image_height - 1)) { + switch (dir){ + case 0 : delta_x=0;delta_y=1;break; + case 1 : delta_x=1;delta_y=1;break; + case 2 : delta_x=1;delta_y=0;break; + case 3 : delta_x=1;delta_y=-1;break; + case 4 : delta_x=0;delta_y=1;break; + } + Xt -= delta_x; + Yt -= delta_y; + GRt = std::sqrt(std::pow((double)gradients[0](Xt,Yt),2.0) + std::pow((double)gradients[1](Xt,Yt),2.0)); + dir = GetAngle(Yt,Xt); + if (GRt >= T1) + edges(Xt,Yt) = 255; + } + } + } + } + return edges; +} +/** + * PURPOSE: perform radon transform of given image + * PARAM: CImg im - image to detect lines + * int N - number of angles to consider (should be a power of 2) + * (the values of N will be spread over 0 to 2PI) + * RETURN CImg - transform of given image of size, N x D + * D = rhomax = sqrt(dimx*dimx + dimy*dimy)/2 + **/ +CImg<> RadonTransform(CImg im,int N) { + int image_width = im.width(); + int image_height = im.height(); + + //calc offsets to center the image + float xofftemp = image_width/2.0f - 1; + float yofftemp = image_height/2.0f - 1; + int xoffset = (int)std::floor(xofftemp + ROUNDING_FACTOR(xofftemp)); + int yoffset = (int)std::floor(yofftemp + ROUNDING_FACTOR(yofftemp)); + float dtemp = (float)std::sqrt((double)(xoffset*xoffset + yoffset*yoffset)); + int D = (int)std::floor(dtemp + ROUNDING_FACTOR(dtemp)); + + CImg<> imRadon(N,D,1,1,0); + + //for each angle k to consider + for (int k= 0 ; k < N; k++) { + //only consider from PI/8 to 3PI/8 and 5PI/8 to 7PI/8 + //to avoid computational complexity of a steep angle + if (k == 0){k = N/8;continue;} + else if (k == (3*N/8 + 1)){ k = 5*N/8;continue;} + else if (k == 7*N/8 + 1){k = N; continue;} + + //for each rho length, determine linear equation and sum the line + //sum is to sum the values along the line at angle k2pi/N + //sum2 is to sum the values along the line at angle k2pi/N + N/4 + //The sum2 is performed merely by swapping the x,y axis as if the image were rotated 90 degrees. + for (int d=0; d < D; d++) { + double theta = 2*k*cimg::PI/N;//calculate actual theta + double alpha = std::tan(theta + cimg::PI/2);//calculate the slope + double beta_temp = -alpha*d*std::cos(theta) + d*std::sin(theta);//y-axis intercept for the line + int beta = (int)std::floor(beta_temp + ROUNDING_FACTOR(beta_temp)); + //for each value of m along x-axis, calculate y + //if the x,y location is within the boundary for the respective image orientations, add to the sum + unsigned int sum1 = 0, + sum2 = 0; + int M = (image_width >= image_height) ? image_width : image_height; + for (int m=0;m < M; m++) { + //interpolate in-between values using nearest-neighbor approximation + //using m,n as x,y indices into image + double n_temp = alpha*(m - xoffset) + beta; + int n = (int)std::floor(n_temp + ROUNDING_FACTOR(n_temp)); + if ((m < image_width) && (n + yoffset >= 0) && (n + yoffset < image_height)) + { + sum1 += im(m, n + yoffset); + } + n_temp = alpha*(m - yoffset) + beta; + n = (int)std::floor(n_temp + ROUNDING_FACTOR(n_temp)); + if ((m < image_height)&&(n + xoffset >= 0)&&(n + xoffset < image_width)) + { + sum2 += im(-(n + xoffset) + image_width - 1, m); + } + } + //assign the sums into the result matrix + imRadon(k,d) = (float)sum1; + //assign sum2 to angle position for theta + PI/4 + imRadon(((k + N/4)%N),d) = (float)sum2; + } + } + return imRadon; +} +/* references: + * 1. See Peter Toft's thesis on the Radon transform: http://petertoft.dk/PhD/index.html + * While I changed his basic algorithm, the main idea is still the same and provides an excellent explanation. + * + * */ diff --git a/examples/scene3d.cpp b/examples/scene3d.cpp new file mode 100644 index 000000000..5405e51d0 --- /dev/null +++ b/examples/scene3d.cpp @@ -0,0 +1,142 @@ +/* + # + # File : scene3d.cpp + # ( C++ source file ) + # + # Description : A simple program that demonstrates the use of the + # 3D functions of CImg, in conjonction with the Board library. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Uncomment the line below to use the Board library. +// ( You will need to link your code with the board library object ). +// ( Get the Board Library at : http://libboard.sourceforge.net/ ) +//#define cimg_use_board + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main() { + + // Define a simple 3D scene, composed of various basic objects (torus, cone, cube, ...) + //------------------------------------------------------------------------------------- + std::fprintf(stderr," - Create 3D Scene.\n"); + + // Define objects vertices and primitives. + CImgList cube_prims, cone_prims, torus_prims, sphere_prims, plane_prims, scene_prims; + const CImg + cube_pts = CImg<>::box3d(cube_prims,60,60,60).shift_object3d().shift_object3d(-50,50,0), + cone_pts = CImg<>::cone3d(cone_prims,30,40).shift_object3d().shift_object3d(50,50,0), + torus_pts = CImg<>::torus3d(torus_prims,30,10).shift_object3d().shift_object3d(-50,-50,0), + sphere_pts = CImg<>::sphere3d(sphere_prims,30).shift_object3d().shift_object3d(50,-50,0), + plane_pts = CImg<>::plane3d(plane_prims,200,200,20,20).shift_object3d().shift_object3d(0,0,40); + plane_prims.insert(plane_prims.get_reverse_object3d()); + + // Define objects colors and textures. + const CImgList + cone_cols = CImgList(cone_prims.size(),CImg::vector(128,63,255)), + torus_cols = CImgList(torus_prims.size(),CImg::vector(255,55,163)), + sphere_cols = CImgList(sphere_prims.size(),CImg::vector(115,115,63)), + plane_cols = CImgList(plane_prims.size(),CImg::vector(60,120,180)); + const CImg texture = CImg(cimg_imagepath "milla.bmp").resize(128,128); + CImgList cube_cols; + cimglist_for(cube_prims,p) { + cube_cols.insert(texture,~0U,true); + cube_prims[p].append(CImg::vector(0,0,127,0,127,127,0,127),'y'); + } + + // Define objects opacities. + const CImg + cube_opacs(cube_prims.size(),1,1,1,1.0f), + cone_opacs(cone_prims.size(),1,1,1,0.8f), + torus_opacs(torus_prims.size(),1,1,1,0.6f), + sphere_opacs(sphere_prims.size(),1,1,1,0.4f), + plane_opacs(plane_prims.size(),1,1,1,0.4f); + + // Append all object in a single 3D scene. + const CImg scene_pts = CImg(). + append_object3d(scene_prims,cube_pts,cube_prims). + append_object3d(scene_prims,cone_pts,cone_prims). + append_object3d(scene_prims,torus_pts,torus_prims). + append_object3d(scene_prims,sphere_pts,sphere_prims). + append_object3d(scene_prims,plane_pts,plane_prims); + const CImgList scene_cols = (+cube_cols,cone_cols,torus_cols,sphere_cols,plane_cols); + const CImg scene_opacs = (cube_opacs,cone_opacs,torus_opacs,sphere_opacs,plane_opacs)>'x'; + + // Display object3D in a user-interacted window and get final position matrix. + std::fprintf(stderr," - Display 3D Scene.\n"); + const CImg visu = CImg(3,512,512,1).fill(230,230,255).permute_axes("yzcx"); + CImg view_matrix = CImg<>::identity_matrix(4); + visu.display_object3d("3D Scene",scene_pts,scene_prims,scene_cols,scene_opacs,true,4,4,false, + 500.0f,0,0,-5000,0.5f,0.1f,true,view_matrix.data()); + + // Save object 3D as OFF file. + std::fprintf(stderr," - Save .OFF 3D object file.\n"); + scene_pts.save_off(scene_prims,scene_cols,"output.off"); + + // Save 3D view in SVG, EPS and FIG files. + // (using the Board library : https://github.com/c-koi/libboard ). +#ifdef cimg_use_board + + // Define a Board instance + LibBoard::Board B; + + // Set Background color of the board. + B.clear(230,230,255); + + // Draw object both in 'visu' and in the board. + (view_matrix.crop(0,0,2,2))*=2; + (+visu).draw_object3d(B,visu.width()/2,visu.height()/2,visu.depth()/2, + view_matrix*scene_pts,scene_prims,scene_cols,scene_opacs,3). + display("Snapshot for Board"); + + // Save board into a vector graphics file format. + std::fprintf(stderr," - Save .SVG, .EPS and .FIG snapshots\n"); + B.save("output.svg"); + B.save("output.eps"); + B.save("output.fig"); +#endif + + // Exit. + std::fprintf(stderr," - Exit.\n"); + return 0; +} diff --git a/examples/spherical_function3d.cpp b/examples/spherical_function3d.cpp new file mode 100644 index 000000000..b163390ba --- /dev/null +++ b/examples/spherical_function3d.cpp @@ -0,0 +1,113 @@ +/* + # + # File : spherical_function3d.cpp + # ( C++ source file ) + # + # Description : An example that shows how to build custom 3D objects in CImg. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; + +/*--------------------------- + + Main procedure + + --------------------------*/ +int main() { + + CImgList object_colors; + CImgList object_opacities; + + // Define a 3D centered box. + CImg object_vertices = CImg(3,8,1,1, // Define the 8 vertices of the cube + -1,-1,-1, // (x0,y0,z0) + 1,-1,-1, // (x1,y1,z1) + 1,1,-1, // ... + -1,1,-1, + -1,-1,1, + 1,-1,1, + 1,1,1, // (x6,y6,z6) + -1,1,1).transpose(); // (x7,y7,z7) + CImgList object_primitives(12,1,2,1,1, // Define the 12 segments of the cube + 0,1, 1,2, 2,3, 3,0, + 4,5, 5,6, 6,7, 7,4, + 0,4, 1,5, 2,6, 3,7); + object_colors.insert(object_primitives.size(),CImg::vector(32,64,255)); + object_opacities.insert(object_primitives.size(),CImg::vector(0.3f)); + + // Define the spherical function's vertices. + CImgList spherical_vertices; + const float a = 1; + const unsigned int na = 132, nb = 132; + for (unsigned int v = 0; v::vector(altitude*x,altitude*y,altitude*z)); + } + + // Define the spherical function's mesh. + CImgList spherical_primitives; + for (unsigned int vv = 0; vv::vector(nb*vv + nu,nb*nv + uu,nb*vv + uu)); + spherical_primitives.insert(CImg::vector(nb*vv + nu,nb*nv + nu,nb*nv + uu)); + object_colors.insert(CImg<>::vector(0,255,255)); + object_colors.insert(CImg<>::vector(100,200,255)); + object_opacities.insert(2,CImg<>::vector(1)); + } + + // Merge 3D objects together. + object_vertices.append_object3d(object_primitives,spherical_vertices>'x',spherical_primitives); + char title[4096] = { 0 }; + std::sprintf(title,"3D Spherical Function (%u vertices, %u primitives)", + object_vertices.width(),object_primitives.size()); + CImgDisplay disp(640,480,title,0); + CImg(disp.width(),disp.height(),1,3,220). + display_object3d(disp,object_vertices,object_primitives,object_colors,object_opacities,true,4,3,false, + 500,0,0,-5000,0.1f,1.5f); + + return 0; +} diff --git a/examples/tetris.cpp b/examples/tetris.cpp new file mode 100644 index 000000000..5d3c4b36c --- /dev/null +++ b/examples/tetris.cpp @@ -0,0 +1,208 @@ +/* + # + # File : tetris.cpp + # ( C++ source file ) + # + # Description : A CImg version of the famous Tetris game. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "img/tetris.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line argument (if any) + cimg_usage("An implementation of the well known 'Tetris' game with CImg."); + unsigned int + blocdim = cimg_option("-blocdim",18,"Sprite bloc size"), + speed = cimg_option("-speed",20,"Initial speed"), + level = cimg_option("-level",0,"Level"); + const char *geometry = cimg_option("-g","12x20","Size of the board"); + unsigned int bwidth = 12,bheight = 20; + std::sscanf(geometry,"%u%*c%u",&bwidth,&bheight); + + const CImg dlogo = CImg(data_logo,128,96,1,3,true); + if (cimg::dialog("CImg Tetris", + "Welcome to the CImg version of Tetris.\n" + "( by David Tschumperle )\n\n" + "Press 'Start' when you are ready to play !","Start","Quit",0,0,0,0,dlogo,true)) std::exit(0); + + // Create sprite, background graphics and initial board data + const CImgList pieces = CImgList(). + insert(CImg(3,2).fill(1,1,1,0,0,1)). + insert(CImg(3,2).fill(2,2,2,2,0,0)). + insert(CImg(2,2).fill(3,3,3,3)). + insert(CImg(4,1).fill(4,4,4,4)). + insert(CImg(3,2).fill(5,5,0,0,5,5)). + insert(CImg(3,2).fill(0,6,6,6,6,0)). + insert(CImg(3,3).fill(0,7,0,7,7,7,0,7,0)). + insert(CImg(2,1).fill(8,8)). + insert(CImg(3,2).fill(9,9,9,0,9,0)). + insert(CImg(2,2).fill(10,10,0,10)). + insert(CImg(3,1).fill(11,11,11)); + + CImg board(bwidth,bheight,1,1,0), background(board.width()*blocdim,board.height()*blocdim,1,3,0); + (background.noise(30).draw_plasma().noise(30).deriche(5,0,'y').shift(0,-background.height()/2,0,0,2). + deriche(5,0,'y'))/=1.5f; + if (level) (board.get_shared_rows(board.height() - level,board.height() - 1,0,0).noise(100))%=pieces.size() + 1; + + // Create a set of small gradient-colored blocs used to draw the pieces. + CImgList blocs(pieces.size(),blocdim,blocdim,1,3); + cimglist_for(blocs,l) { + CImg color = CImg(3,1,1,1,128).noise(127,1).cut(120,255); + float val; + cimg_forXYC(blocs[l],x,y,k) + blocs[l](x,y,k) = (unsigned char)((val=(color[k]*0.7f*(x + y + 5)/blocdim))>255?255:val); + blocs[l].draw_line(0,0,0,blocdim - 1,(color>>1).data()). + draw_line(0,blocdim - 1,blocdim - 1,blocdim - 1,(color>>1).data()); + color = (CImg(color)*=2).cut(0,255); + blocs[l].draw_line(0,0,(int)blocdim - 1,0,color.data()). + draw_line(blocdim - 1,0,blocdim - 1,blocdim - 1,color.data()); + } + + // Initialize window display and enter the main event loop + CImgDisplay disp(background,"CImg Tetris",0,false,true); + disp.move((CImgDisplay::screen_width() - disp.width())/2, + (CImgDisplay::screen_height() - disp.height())/2).hide_mouse(); + const unsigned char white[3]={ 255, 255, 255 }; + CImg visu, nboard, piece, next, next_mask; + int cx = -1, cy = -1, cn = -1, nn = rand()%pieces.size(), time = 0, score = 0; + bool gameover = false, pause = false; + + while (!gameover && !disp.is_closed() && !disp.is_keyESC() && !disp.is_keyQ()) { + + if (!pause) { + + // Draw the board on the display window. + nboard = board; visu = background; + if (cx>=0 && cy>=0) + cimg_forXY(piece,x,y) if (piece(x,y)) nboard(cx - piece.width()/2 + x,cy - piece.height()/2 + y)=piece(x,y); + cimg_forXY(board,xx,yy) if (nboard(xx,yy)) visu.draw_image(xx*blocdim,yy*blocdim,blocs[nboard(xx,yy) - 1]); + visu.draw_text(5,5,"Lines : %d",white,0,1,13,score,nn).draw_text(visu.width() - 75,5,"Next :",white,0,1,13); + if (next) visu.draw_image(visu.width() - next.width() - 2,10 - next.height()/2,next,next_mask). + display(disp.wait(20)); + + if (cn<0) { + + // Introduce a new piece on the board (if necessary) and create representation of the next piece + board = nboard; + piece = pieces[cn=nn]; + nn = rand()%pieces.size(); + cx = board.width()/2; + cy = piece.height()/2; + next = CImg(pieces[nn].width()*blocdim,pieces[nn].height()*blocdim,1,3,0); + cimg_forXY(pieces[nn],xi,yi) + if (pieces[nn](xi,yi)) next.draw_image(xi*blocdim,yi*blocdim,blocs[pieces[nn](xi,yi) - 1]); + next_mask = next.resize(-50,-50).get_norm().threshold(0); + + // Detect tetris lines and do line removal animation if found. + cimg_forY(board,yyy) { + int Y = yyy*blocdim, line = 1; + cimg_forX(board,xxx) if (!board(xxx,yyy)) line=0; + if (line) { + board.draw_image(0,1,board.get_crop(0,0,board.width() - 1,yyy - 1)); + if (!((++score)%1) && speed>1) --speed; + for (float alpha=0; alpha<=1; alpha+=0.07f) + CImg(visu).draw_image(0,Y,background.get_crop(0,Y,visu.width() - 1, + Y + blocdim - 1),alpha). + display(disp.wait(20)); + visu.draw_image(0,Y,background.get_crop(0,Y,visu.width() - 1,Y + blocdim - 1)); + } + } + } + + // Handle motion & collisions + const int ox = cx, oy = cy; + bool rotated = false, collision; + switch (disp.key()) { + case cimg::keyP: pause = true; break; + case cimg::keyARROWUP: piece.rotate(90); rotated = true; disp.set_key(); break; + case cimg::keyARROWLEFT: --cx; disp.set_key(); break; + case cimg::keyARROWRIGHT: ++cx; disp.set_key(); break; + } + if (cx - piece.width()/2<0) cx = piece.width()/2; + if (cy - piece.height()/2<0) cy = piece.height()/2; + if (cx + (piece.width() - 1)/2>=board.width()) cx = board.width() - 1 - (piece.width() - 1)/2; + + // Detect collision along the X axis + collision = false; + cimg_forXY(piece,i,j) + if (piece(i,j) && board(cx - piece.width()/2 + i,cy - piece.height()/2 + j)) collision = true; + if (collision) { cx=ox; if (rotated) piece.rotate(-90); } + + if (disp.key()==cimg::keyARROWDOWN || !((++time)%speed)) { ++cy; disp.set_key(); } + // Detect collisiong along the Y axis + collision = false; + cimg_forXY(piece,ii,jj) + if (piece(ii,jj) && (cy - piece.height()/2 + jj>=board.height() || + board(cx - piece.width()/2 + ii,cy - piece.height()/2 + jj))) collision = true; + if (collision || cy + (piece.height() - 1)/2>=board.height()) { cy = oy; cn = -1; } + if (collision && cy==piece.height()/2) gameover = true; + } else { + + // If game is paused (key 'P'), do a little text animation + float A = 0, B = 0; + CImg pauselogo = CImg().draw_text(0,0,"Game Paused\nPress a key",white); + disp.set_key(); while (!disp.is_closed() && !disp.key()) { + const CImg pauserotated = pauselogo.get_rotate((float)(30*std::sin(A)),1,0). + resize((int)(-150 - 80*std::sin(B)),(int)(-150 - 80*std::sin(B))); + A+=0.08f; B+=0.043f; + CImg(background). + draw_image((background.width() - pauserotated.width())/2, + (background.height() - pauserotated.height())/2, + pauserotated.get_resize(-100,-100,1,3,2),pauserotated,1,255).display(disp.wait(20)); + if (disp.is_resized()) disp.resize(); + } + disp.set_key(); + pause = false; + } + background.shift(0,-20/(int)speed,0,0,2); + if (disp.is_resized()) disp.resize(); + } + + // End of game reached, display the score and do a 'game over' animation + cimg_forXYC(visu,x,y,k) if (x%2 || y%2) visu(x,y,k) = 0; + visu.display(disp); + char tmp[1024]; + std::sprintf(tmp,"Game Over !\n\nYour score : %d",score); + cimg::dialog("CImg Tetris",tmp,"Quit"); + return 0; +} diff --git a/examples/tron.cpp b/examples/tron.cpp new file mode 100644 index 000000000..c650474a9 --- /dev/null +++ b/examples/tron.cpp @@ -0,0 +1,190 @@ +/* + # + # File : tron.cpp + # ( C++ source file ) + # + # Description : A clone of the famous (and very simple) Tron game. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main(int argc, char **argv) { + + // Print usage, help and retrieve command line options + //----------------------------------------------------- + cimg_usage("A very simple Tron game, using the CImg Library"); + cimg_help("--- Quick help ----------------------------\n" + " Player 1 (blue) :\n" + " Use keys 'Z' (up), 'S' (down), 'Q' (left)\n" + " and 'D' (right) to control your player.\n" + " Right 'CONTROL' key enables turbospeed\n" + " Player 2 (red) : \n" + " Use arrow keys to control your player.\n" + " 'TAB' key enables turbospeed.\n" + "-------------------------------------------"); + + const char *geom = cimg_option("-g","300x300","Size of the game board"); + const int delay = cimg_option("-s",10,"Game speed (lower value means faster)"); + const bool twoplayers = !cimg_option("-1",false,"One player only"); + const int zoom = cimg_option("-z",1,"Zoom factor"); + const bool full = cimg_option("-f",false,"Fullscreen mode"); + unsigned int W = 400, H = 400; + std::sscanf(geom,"%u%*c%u",&W,&H); + + // Define game colors and variables + //---------------------------------- + const unsigned char blue[] = { 128,200,255}, red[] = { 255,0,0 }, white[] = { 255,255,255 }; + int score1 = 0, score2 = 0, round_over = 0, ix1 = -1, iy1 = -1, x1 = 0, y1 = 0, u1 = 0, v1 = 0, + ix2 = -1, iy2 = -1, x2 = 0, y2 = 0, u2 = 0, v2 = 0; + bool start_round = true, turbo1 = false, turbo2 = false; + + // Create background image + //-------------------------- + CImg background, img; + background.assign(64,64,1,3,0).noise(60).draw_plasma().resize(W,H).blur(2).normalize(0,128). + draw_rectangle(0,0,W-1,H-1,white,1.0f,~0U); + + // Open display window + //--------------------- + CImgDisplay disp(background,"* CImg-Tron *"); + if (zoom>1) disp.resize(-100*zoom,-100*zoom); + if (full) disp.toggle_fullscreen().display(background); + + // Start main game loop + //---------------------- + while (!disp.is_closed() && !disp.is_keyESC()) { + + // Init new game round if necessary + //---------------------------------- + if (start_round) { + + // Init game variables + round_over = 0; + ix1 = -1; iy1 = -1; x1 = 10; y1 = 10; u1 = 1; v1 = 0; turbo1 = false; + ix2 = -1; iy2 = -1; x2 = W - 11; y2 = H - 11; u2 = -1; v2 = 0; turbo2 = false; + img = background; + start_round = false; + + // Display a simple pre-round page + CImg logo, pressakey; + logo.draw_text(0,0," CImg-Tron ",white,0,1,33).resize(-100,-100,1,3); + CImg tmp = (+background).draw_image((W - logo.width())/2,(H - logo.height())/2 - 20, + logo,logo.get_channel(0).dilate(6).normalize(0,1)). + draw_text(W/2 - 60,H/2 + 10,"Blue ( %u )",blue,0,1,13,score1). + draw_text(W/2 + 10,H/2 + 10,"Red ( %u )",red,0,1,13,score2); + pressakey.draw_text(0,0,"* Press a key to start round *",white); + for (float i = 0; i<1; i+=0.05f) ((+tmp)*=i).display(disp.wait(20)); + disp.flush(); + for (unsigned long t = 0; !disp.key() && !disp.is_closed(); ++t) { + if (!(t%10)) { if (t%20) disp.display(tmp); + else disp.display((+tmp).draw_image(W/2 - 70,H/2 + 50,pressakey,pressakey,1,255)); } + if (disp.wait(20).is_resized()) disp.resize(disp); + } + if (disp.is_keyESC()) disp.flush(); + } + + // Test collision between players and borders + if (x1<0 || x1>=img.width() || y1<0 || y1>=img.height() || + img(x1,y1,0)!=background(x1,y1,0) || + img(x1,y1,1)!=background(x1,y1,1) || + img(x1,y1,2)!=background(x1,y1,2) || + ((ix1>=0 || iy1>=0) && (img(ix1,iy1,0)!=background(ix1,iy1,0) || // Collision test for turbo mode + img(ix1,iy1,1)!=background(ix1,iy1,1) || + img(ix1,iy1,2)!=background(ix1,iy1,2)))) { round_over=1; score2++; } + if (twoplayers) { + if (x2<0 || x2>=img.width() || y2<0 || y2>=img.height() || + img(x2,y2,0)!=background(x2,y2,0) || + img(x2,y2,1)!=background(x2,y2,1) || + img(x2,y2,2)!=background(x2,y2,2) || + ((ix2>=0 || iy2>=0) && (img(ix2,iy2,0)!=background(ix2,iy2,0) || // Collision test for turbo mode + img(ix2,iy2,1)!=background(ix2,iy2,1) || + img(ix2,iy2,2)!=background(ix2,iy2,2)))) { round_over=2; score1++; } + } + + // Draw new players positions + img.draw_point(x1,y1,blue); + if (ix1>=0 && iy1>=0) img.draw_point(ix1,iy1,blue); + if (twoplayers) { + img.draw_point(x2,y2,red); + if (ix2>=0 && iy2>=0) img.draw_point(ix2,iy2,red); + } + if (disp.is_resized()) disp.resize(disp); + img.display(disp); + + // Update players positions + x1+=u1; y1+=v1; + if (turbo1) { ix1 = x1; iy1 = y1; x1+=u1; y1+=v1; } else { ix1 = iy1 = -1; } + if (twoplayers) { + x2+=u2; y2+=v2; + if (turbo2) { ix2 = x2; iy2 = y2; x2+=u2; y2+=v2; } else { ix2 = iy2 = -1; } + } + + // Test keyboard events + int nu1 = u1, nv1 = v1, nu2 = u2, nv2 = v2; + if (disp.is_keyARROWLEFT()) { nu1 = -1; nv1 = 0; } + if (disp.is_keyARROWRIGHT()) { nu1 = 1; nv1 = 0; } + if (disp.is_keyARROWUP()) { nu1 = 0; nv1 = -1; } + if (disp.is_keyARROWDOWN()) { nu1 = 0; nv1 = 1; } + turbo1 = disp.is_keyCTRLRIGHT(); + if (twoplayers) { + if (disp.is_keyQ()) { nu2 = -1; nv2 = 0; } + if (disp.is_keyD()) { nu2 = 1; nv2 = 0; } + if (disp.is_keyZ()) { nu2 = 0; nv2 = -1; } + if (disp.is_keyS()) { nu2 = 0; nv2 = 1; } + turbo2 = disp.is_keyTAB(); + } + if (nu1!=-u1 && nv1!=-v1) { u1 = nu1; v1 = nv1; } + if (nu2!=-u2 && nv2!=-v2) { u2 = nu2; v2 = nv2; } + + // Check if round is over. + if (round_over) { + const int xc = round_over==1?x1:x2, yc = round_over==1?y1:y2; + for (int r=0; r<50; r+=3) img.draw_circle(xc,yc,r,round_over==1?blue:red,r/300.0f).display(disp.wait(20)); + for (int rr=0; rr<50; rr+=3) + ((+img)*=(50 - rr)/50.0f).draw_circle(xc,yc,(50 + rr),round_over==1?blue:red,1/6.0f).display(disp.wait(20)); + start_round = true; + } + + // Wait a small amount of time + disp.wait(delay); + } + return 0; +} diff --git a/examples/tutorial.cpp b/examples/tutorial.cpp new file mode 100644 index 000000000..ed8be8732 --- /dev/null +++ b/examples/tutorial.cpp @@ -0,0 +1,133 @@ +/* + # + # File : tutorial.cpp + # ( C++ source file ) + # + # Description : View the color profile of an image, along the X-axis. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Include CImg library file and use its main namespace +#include "CImg.h" +using namespace cimg_library; + +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Define program usage and read command line parameters + //------------------------------------------------------- + + // Display program usage, when invoked from the command line with option '-h'. + cimg_usage("View the color profile of an image along the X axis"); + + // Read image filename from the command line (or set it to "img/parrot.ppm" if option '-i' is not provided). + const char* file_i = cimg_option("-i",cimg_imagepath "parrot.ppm","Input image"); + + // Read pre-blurring variance from the command line (or set it to 1.0 if option '-blur' is not provided). + const double sigma = cimg_option("-blur",1.0,"Variance of gaussian pre-blurring"); + + // Init variables + //---------------- + + // Load an image, transform it to a color image (if necessary) and blur it with the standard deviation sigma. + const CImg image = CImg<>(file_i).normalize(0,255).blur((float)sigma).resize(-100,-100,1,3); + + // Create two display window, one for the image, the other for the color profile. + CImgDisplay + main_disp(image,"Color image (Try to move mouse pointer over)",0), + draw_disp(500,400,"Color profile of the X-axis",0); + + // Define colors used to plot the profile, and a hatch to draw the vertical line + unsigned int hatch = 0xF0F0F0F0; + const unsigned char + red[] = { 255,0,0 }, + green[] = { 0,255,0 }, + blue [] = { 0,0,255 }, + black[] = { 0,0,0 }; + + // Enter event loop. This loop ends when one of the two display window is closed or + // when the keys 'ESC' or 'Q' are pressed. + while (!main_disp.is_closed() && !draw_disp.is_closed() && + !main_disp.is_keyESC() && !draw_disp.is_keyESC() && !main_disp.is_keyQ() && !draw_disp.is_keyQ()) { + + // Handle display window resizing (if any) + if (main_disp.is_resized()) main_disp.resize().display(image); + draw_disp.resize(); + + if (main_disp.mouse_x()>=0 && main_disp.mouse_y()>=0) { // Mouse pointer is over the image + + const int + xm = main_disp.mouse_x(), // X-coordinate of the mouse pointer over the image + ym = main_disp.mouse_y(), // Y-coordinate of the mouse pointer over the image + xl = xm*draw_disp.width()/main_disp.width(), // Corresponding X-coordinate of the hatched line + x = xm*image.width()/main_disp.width(), // Corresponding X-coordinate of the pointed pixel in the image + y = ym*image.height()/main_disp.height(); // Corresponding Y-coordinate of the pointex pixel in the image + + // Retrieve color component values at pixel (x,y) + const unsigned int + val_red = image(x,y,0), + val_green = image(x,y,1), + val_blue = image(x,y,2); + + // Create and display the image of the intensity profile + CImg(draw_disp.width(),draw_disp.height(),1,3,255). + draw_grid(-50*100.0f/image.width(),-50*100.0f/256,0,0,false,true,black,0.2f,0xCCCCCCCC,0xCCCCCCCC). + draw_axes(0,image.width() - 1.0f,255.0f,0.0f,black). + draw_graph(image.get_shared_row(y,0,0),red,1,1,0,255,1). + draw_graph(image.get_shared_row(y,0,1),green,1,1,0,255,1). + draw_graph(image.get_shared_row(y,0,2),blue,1,1,0,255,1). + draw_text(30,5,"Pixel (%d,%d)={%d %d %d}",black,0,1,16, + main_disp.mouse_x(),main_disp.mouse_y(),val_red,val_green,val_blue). + draw_line(xl,0,xl,draw_disp.height() - 1,black,0.5f,hatch=cimg::rol(hatch)). + display(draw_disp); + } else + // else display a text in the profile display window. + CImg(draw_disp.width(),draw_disp.height()).fill(255). + draw_text(draw_disp.width()/2 - 130,draw_disp.height()/2 - 5,"Mouse pointer is outside the image", + black,0,1,16).display(draw_disp); + + // Temporize event loop + cimg::wait(20); + } + + return 0; +} diff --git a/examples/use_RGBclass.cpp b/examples/use_RGBclass.cpp new file mode 100644 index 000000000..7129d2d32 --- /dev/null +++ b/examples/use_RGBclass.cpp @@ -0,0 +1,138 @@ +/* + # + # File : use_RGBclass.cpp + # ( C++ source file ) + # + # Description : A small code that shows how to write a CImg plugin to + # handle color image manipulation using a user-defined RGB + # class, instead of using classical pixel access of CImg + # with operator(). + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_plugin +#define cimg_plugin "examples/use_RGBclass.cpp" // Path of the plugin is relative to the CImg.h file +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main() { + + // Load images. + CImg img1(cimg_imagepath "milla.bmp"); + const CImg img2 = CImg(cimg_imagepath "parrot.ppm").resize(img1,3); + const float default_color[] = { 30,30,80 }; + + // Modify 'img1' using the RGB pixel accessor. + cimg_forXY(img1,x,y) + if (!((x*y)%31)) img1.RGB_at(x,y) = default_color; + else if ((x+y)%2) img1.RGB_at(x,y) = img2.RGB_at(x,y); + img1.display(); + + // Quit. + return 0; +} + +#else + +//------------------------- +// Start of the plugin code +//------------------------- + +// Define a simple structure of *references* to R,G,B values. +//----------------------------------------------------------- +// (Feel free to add your own operators in there !) +struct st_RGB { + T _R,_G,_B,&R,&G,&B; + + // Construct from R,G,B references of values. + st_RGB(const T& nR, const T& nG, const T& nB):_R(nR),_G(nG),_B(nB),R(_R),G(_G),B(_B) {} + st_RGB(T& nR, T& nG, T& nB):R(nR),G(nG),B(nB) {} + + // Copy constructors. + st_RGB(const st_RGB& rgb):_R(rgb.R),_G(rgb.G),_B(rgb.B),R(_R),G(_G),B(_B) {} + template + st_RGB(const t& rgb):_R(rgb[0]),_G(rgb[1]),_B(rgb[2]) {} + + // Assignement operator. + st_RGB& operator=(const st_RGB& rgb) { + R = (T)(rgb[0]); G = (T)(rgb[1]); B = (T)(rgb[2]); + return *this; + } + template + st_RGB& operator=(const t& rgb) { + R = (T)(rgb[0]); G = (T)(rgb[1]); B = (T)(rgb[2]); + return *this; + } + + // Data (R,G or B) access operator. + const T& operator[](const unsigned int i) const { + return i==2?B:(i==1?G:R); + } + T& operator[](const unsigned int i) { + return i==2?B:(i==1?G:R); + } + + // Print instance on the standard error. + const st_RGB& print() const { + std::fprintf(stderr,"{ %d %d %d }\n",(int)R,(int)G,(int)B); + return *this; + } +}; + +// Define CImg member functions which return pixel values as st_RGB instances. +//-------------------------------------------------------------------------------- +const st_RGB RGB_at(const int x, const int y=0, const int z=0) const { + const int whz = width()*height()*depth(); + const T *const pR = data() + x + y*width() + z*width()*height(), *const pG = pR + whz, *const pB = pG + whz; + return st_RGB(*pR,*pG,*pB); +} + +st_RGB RGB_at(const int x, const int y=0, const int z=0) { + const int whz = width()*height()*depth(); + T *const pR = data() + x + y*width() + z*width()*height(), *const pG = pR + whz, *const pB = pG + whz; + return st_RGB(*pR,*pG,*pB); +} + +//------------------------ +// End of the plugin code +//------------------------ +#endif diff --git a/examples/use_chlpca.cpp b/examples/use_chlpca.cpp new file mode 100644 index 000000000..6b769d06a --- /dev/null +++ b/examples/use_chlpca.cpp @@ -0,0 +1,70 @@ +/* + # + # File : use_chlpca.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/chlpca.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Jerome Boulanger + # ( http://www.irisa.fr/vista/Equipe/People/Jerome.Boulanger.html ) + # + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#define cimg_plugin "plugins/chlpca.h" +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc,char **argv) { + cimg_usage("Patch based denoising "); + const char *file_i = cimg_option("-i",cimg_imagepath "milla.bmp","Input image"); + const int p = cimg_option("-p",3,"patch radius"); + const int w = cimg_option("-w",10,"window radius"); + const float lambda_min = cimg_option("-l",(float)2.f,"component selection threshold"); + const int nstep = cimg_option("-nstep",5,"sub-sampling"); + const float nsim = cimg_option("-nsim",(float)5.f,"dictionnary size a multiple of the patch size"); + const float noise_std = cimg_option("-sigma",(float)-1.f,"noise std (-1:estimated)"); + const bool use_svd = cimg_option("-svd",(float)-1.f,"use svd for computing PCA"); + const char *file_o = cimg_option("-o",(char*)NULL,"Output file"); + CImg<> img(file_i); + img = img.get_chlpca(p, w, nstep, nsim, lambda_min, noise_std, use_svd); + img.display(); + if (file_o) img.save(file_o); + return 0; +} diff --git a/examples/use_cimgIPL.cpp b/examples/use_cimgIPL.cpp new file mode 100644 index 000000000..821eb3c96 --- /dev/null +++ b/examples/use_cimgIPL.cpp @@ -0,0 +1,155 @@ +/* +# +# File : use_cimgIPL.cpp +# ( C++ source file ) +# +# Description : Example of use for the CImg plugin 'plugins/cimgIPL.h'. +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : newleft (haibo.zheng@gmail.com) +# newleftist@hotmail.com +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# +*/ + +#include +#include +#include + +#pragma comment(lib, "cv.lib") +#pragma comment(lib, "cvaux.lib") +#pragma comment(lib, "cxcore.lib") +#pragma comment(lib, "highgui.lib") + +#define cimg_plugin1 "plugins\cimgIPL.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main(int argc, char* argv[]) { + int wid = 0; + CImg<> cImg(argv[1]); + cImg.display("cImg"); + IplImage* ipl; + //ipl = cvLoadImage(argv[1], -1); + ipl = cImg.get_IPL(); + + IplImage *ipl8; + IplImage *ipl16, *ipl32, *ipl64; + IplImage *ipl16to8, *ipl32to8, *ipl64to8; + cvNamedWindow("origin", wid++); + cvNamedWindow("8bit_OK", wid++); + cvNamedWindow("16bit", wid++); + cvNamedWindow("32bit", wid++); + cvNamedWindow("64bit", wid++); + cvNamedWindow("16bitto8", wid++); + cvNamedWindow("32bitto8", wid++); + cvNamedWindow("64bitto8", wid++); + + cvShowImage("origin", ipl); + + ipl8 = cvCreateImage(cvGetSize(ipl), IPL_DEPTH_8U, ipl->nChannels); + cvConvert(ipl, ipl8); + + ipl16 = cvCreateImage(cvGetSize(ipl), IPL_DEPTH_16U, ipl->nChannels); + cvConvert(ipl, ipl16); + + ipl32 = cvCreateImage(cvGetSize(ipl), IPL_DEPTH_32F, ipl->nChannels); + cvConvert(ipl, ipl32); + + ipl64 = cvCreateImage(cvGetSize(ipl), IPL_DEPTH_64F, ipl->nChannels); + cvConvert(ipl, ipl64); + + cvShowImage("8bit_OK", ipl8);// this canbe show properly + cvShowImage("16bit", ipl16);// maynot display properly, that's bug of cvShowImage + cvShowImage("32bit", ipl32);// maynot display properly, that's bug of cvShowImage + cvShowImage("64bit", ipl64);// maynot display properly, that's bug of cvShowImage + + // cvShowImage can only display IplImage with IPL_DEPTH_8X, proved by the following codes + ipl16to8 = cvCreateImage(cvGetSize(ipl16), IPL_DEPTH_8U, ipl16->nChannels); + cvConvert(ipl16, ipl16to8); + ipl32to8 = cvCreateImage(cvGetSize(ipl32), IPL_DEPTH_8U, ipl32->nChannels); + cvConvert(ipl32, ipl32to8); + ipl64to8 = cvCreateImage(cvGetSize(ipl64), IPL_DEPTH_8U, ipl64->nChannels); + cvConvert(ipl64, ipl64to8); + cvShowImage("16bitto8", ipl16to8); // diplay ok + cvShowImage("32bitto8", ipl32to8); // diplay ok + cvShowImage("64bitto8", ipl64to8); // diplay ok + + // now, we test ipl8->cImg, ipl16->cImg, ipl32->cImg, ipl64->cImg + cImg.assign(ipl8); + cImg.display("ipl8->cimg"); + cImg.assign(ipl16); + cImg.display("ipl16->cimg"); + cImg.assign(ipl32); + cImg.display("ipl32->cimg"); + cImg.assign(ipl64); + cImg.display("ipl64->cimg"); + + cvWaitKey(0); + + // test another construct + CImg testCImg1(ipl16); + testCImg1.display("testCImg1"); + CImg testCImg2(ipl32); + testCImg2.display("testCImg2"); + CImg testCImg3(ipl64); + testCImg3.display("testCImg3"); + + CImg testCImg4(ipl16); + testCImg4.display("testCImg4"); + CImg testCImg5(ipl32); + testCImg5.display("testCImg5"); + CImg testCImg6(ipl64); + testCImg6.display("testCImg6"); + + cvReleaseImage(&ipl); + cvReleaseImage(&ipl8); + cvReleaseImage(&ipl16); + cvReleaseImage(&ipl32); + cvReleaseImage(&ipl64); + cvReleaseImage(&ipl16to8); + cvReleaseImage(&ipl32to8); + cvReleaseImage(&ipl64to8); + + cvDestroyWindow("origin"); + cvDestroyWindow("8bit_OK"); + cvDestroyWindow("16bit"); + cvDestroyWindow("32bit"); + cvDestroyWindow("64bit"); + cvDestroyWindow("16bitto8"); + cvDestroyWindow("32bitto8"); + cvDestroyWindow("64bitto8"); + + return 0; +} diff --git a/examples/use_cimgmatlab.cpp b/examples/use_cimgmatlab.cpp new file mode 100644 index 000000000..08c06777d --- /dev/null +++ b/examples/use_cimgmatlab.cpp @@ -0,0 +1,102 @@ +/*----------------------------------------------------------------------- + + File : use_cimgmatlab.cpp + + Description: Example of use for the CImg plugin 'plugins/cimgmatlab.h' + which allows to use CImg in order to develop matlab external + functions (mex functions). + User should be familiar with Matlab C/C++ mex function concepts, + as this file is by no way a mex programming tutorial. + + This simple example implements a mex function that can be called + as + + - v = cimgmatlab_cannyderiche(u,s) + - v = cimgmatlab_cannyderiche(u,sx,sy) + - v = cimgmatlab_cannyderiche(u,sx,sy,sz) + + The corresponding m-file is cimgmatlab_cannyderiche.m + + + Copyright : Francois Lauze - http://www.itu.dk/people/francois + This software is governed by the Gnu Lesser General Public License + see http://www.gnu.org/copyleft/lgpl.html + + The plugin home page is at + http://www.itu.dk/people/francois/cimgmatlab.html + + for the compilation: using the mex utility provided with matlab, just + remember to add the -I flags with paths to CImg.h and/or cimgmatlab.h. + The default lcc cannot be used, it is a C compiler and not a C++ one! + +--------------------------------------------------------------------------*/ + +#include +#define cimg_plugin "plugins/cimgmatlab.h" +#include + +void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { + if (nrhs < 2) mexErrMsgTxt("No enough input arguments."); + if (nrhs > 4) mexErrMsgTxt("Too many input arguments."); + cimg_library::CImg<> u(prhs[0],true); + if (nrhs == 2) { + const float s = (float)mxGetScalar(prhs[1]); + plhs[0] = u.get_blur(s).toMatlab(); + } else if (nrhs == 3) { + const float sx = (float)mxGetScalar(prhs[1]); + const float sy = (float)mxGetScalar(prhs[2]); + plhs[0] = u.get_blur(sx,sy,0).toMatlab(); + } else if (nrhs == 4) { + const float sx = (float)mxGetScalar(prhs[1]); + const float sy = (float)mxGetScalar(prhs[2]); + const float sz = (float)mxGetScalar(prhs[3]); + plhs[0] = u.get_blur(sx,sy,sz).toMatlab(); + } +} + +/*------------------------------------------------------------------ + + SPECIAL NOTE : + ------------- + + How to read a .mat file using plugin 'cimgmatlab.h' ? + (contribution by Vo Duc Khanh/Denso IT Lab, Tokyo, Japan). + + #include + #include + #include + + #define cimg_plugin "cimgmatlab.h" + + #include "CImg.h" + #include + #include + + ......... + + using namespace cimg_library; + using namespace std; + + // Load input images (125700 images) from training database 'BmpTrainingDb.mat' + MATFile *pmat, *pmat_out; + mxArray *pa, *pa_out; + const char data_path[256] = ".\\BmpTrainingDb.mat\0"; + const char *var_name; + + pmat = matOpen(data_path, "r"); + if (pmat == NULL) { + cout << "Error opening file " << data_path << endl; + return (1); + } + + pa = matGetNextVariable(pmat, &var_name); + if (pa == NULL){ + cout << "Error reading in file " << data_path << endl; + return (1); + } + + CImg train_db(pa,false); + ........ + + + -----------------------------------------------------------------------------*/ diff --git a/examples/use_cimgmatlab.m b/examples/use_cimgmatlab.m new file mode 100644 index 000000000..30abf6612 --- /dev/null +++ b/examples/use_cimgmatlab.m @@ -0,0 +1,33 @@ +/*----------------------------------------------------------------------- + File : use_cimgmatlab.m + + Description: Example of use for the CImg plugin 'plugins/cimgmatlab.h' + which allows to use CImg in order to develop matlab external + functions (mex functions). + User should be familiar with Matlab C/C++ mex function concepts, + as this file is by no way a mex programming tutorial. + + This simple example implements a mex function that can be called + as + + - v = cimgmatlab_cannyderiche(u,s) + - v = cimgmatlab_cannyderiche(u,sx,sy) + - v = cimgmatlab_cannyderiche(u,sx,sy,sz) + + The corresponding m-file is cimgmatlab_cannyderiche.m + + + Copyright : Francois Lauze - http://www.itu.dk/people/francois + This software is governed by the Gnu General Public License + see http://www.gnu.org/copyleft/gpl.html + + The plugin home page is at + http://www.itu.dk/people/francois/cimgmatlab.html + + for the compilation: using the mex utility provided with matlab, just + remember to add the -I flags with paths to CImg.h and/or cimgmatlab.h. + The default lcc cannot be used, it is a C compiler and not a C++ one! +--------------------------------------------------------------------------*/ + +function v = cimgmatlab_cannyderiche(u,sx,sy,sz) + diff --git a/examples/use_draw_gradient.cpp b/examples/use_draw_gradient.cpp new file mode 100644 index 000000000..d87470c49 --- /dev/null +++ b/examples/use_draw_gradient.cpp @@ -0,0 +1,138 @@ +/* + # + # File : use_draw_gradient.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/draw_gradient.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Jerome Boulanger + # ( http://www.ricam.oeaw.ac.at/people/page.cgi?firstn=Jerome;lastn=Boulanger ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#define cimg_plugin "plugins/draw_gradient.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//--------------- +int main(int argc,char **argv) { + + // Read command line arguments + //---------------------------- + cimg_usage("Example of the use of draw_gradient CImg plugin"); + const char *const file_i = cimg_option("-i",(char*)0,"Input image"); + const int shape = cimg_option("-s",1,"shape [0,6]"); + const int profile = cimg_option("-p",0,"profile [0,7]"); + + // Define an image + CImg img; + if (file_i) img.load(file_i).resize(-100,-100,-100,3); + else img.assign(300,200,1,3,0); + + // Define the color of the gradient + CImg col(3); + const unsigned char col1[3] = { 0,0,255 }, col2[3] = { 255,255,255 }; + CImgDisplay disp(img,"Click and drag to create color gradient",0); + while (!disp.is_closed() && !disp.key()) { + + // Get a vector direction from the user. + const CImg selection = img.get_select(disp,1); + + // Draw a gradient using the selected coordinated. + col.rand(100,255); + printf("Gradient with %s from color (%d,%d,%d) to (%d,%d,%d)\n", + CImg<>::get_gradient_str(shape,profile),col(0),col(1),col(2),col1[0],col1[1],col2[2]); + img.draw_gradient(selection(0),selection(1),selection(3),selection(4), + col.data(),col1,shape,profile,.7f).display(disp); + } + + // color 0 to transparency + if (file_i) img.load(file_i).resize(-100,-100,-100,3); + else img.assign(300,200,1,3,0); + img.display(disp); + disp.show().flush(); + while (!disp.is_closed() && !disp.key()) { + + // Get a vector direction from the user. + const CImg selection = img.get_select(disp,1); + + // Draw a gradient using the selected coordinated. + col.rand(100,255); + printf("Gradient with %s from color (%d,%d,%d) to transparency\n", + CImg<>::get_gradient_str(shape,profile),col(0),col(1),col(2)); + img.draw_gradient(selection(0),selection(1),selection(3),selection(4), + col.data(),0,shape,profile,.7f).display(disp); + } + + + // transparency to color 1 + if (file_i) img.load(file_i).resize(-100,-100,-100,3); + else img.assign(300,200,1,3,0); + img.display(disp); + disp.show().flush(); + while (!disp.is_closed() && !disp.key()) { + + // Get a vector direction from the user. + const CImg selection = img.get_select(disp,1); + + // Draw a gradient using the selected coordinated. + col.rand(100,255); + printf("Gradient with %s from transparency to color (%d,%d,%d)\n", + CImg<>::get_gradient_str(shape,profile),col(0),col(1),col(2)); + img.draw_gradient(selection(0),selection(1),selection(3),selection(4), + 0,col.data(),shape,profile,.7f).display(disp); + } + + // random + if (file_i) img.load(file_i).resize(-100,-100,-100,3); + else img.assign(300,200,1,3,0); + disp.set_title("Random color gradient").show().flush(); + CImg visu(img); + visu.display(disp); + while (!disp.is_closed() && !disp.key()) { + const int + x = (int)(cimg::rand()*visu.width()), + y = (int)(cimg::rand()*visu.height()), + rx = (int)((cimg::rand()*25 + 5)*(cimg::rand()>.5?-1:1)), + ry = (int)((cimg::rand()*25 + 5)*(cimg::rand()>.5?-1:1)); + col.rand(64,255); + img.draw_gradient(x,y,x + rx,y + ry,col.data(),0,shape,profile,.4f); + visu = img; + visu.draw_text(10,10,"%.1ffps",col2,0,1,13,disp.frames_per_second()).display(disp); + if (disp.is_resized()) disp.resize(); + } + + return 0; +} diff --git a/examples/use_jpeg_buffer.cpp b/examples/use_jpeg_buffer.cpp new file mode 100644 index 000000000..65e86ff1d --- /dev/null +++ b/examples/use_jpeg_buffer.cpp @@ -0,0 +1,109 @@ +/* + # + # File : use_jpeg_buffer.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/jpeg_buffer.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Paolo Prete + # ( p4olo_prete(at)yahoo.it ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// These includes are necessary to get the plug-in compile ! +#include +#include +#include + +// Define plugin and include the CImg Library. +#define cimg_plugin "plugins/jpeg_buffer.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main() { + + // Create a jpeg memory buffer from the content of a jpeg file. + // (this is for testing purposes only) + const char *filename_input = "foo.jpg"; + std::fprintf(stderr," - Reading file '%s'\n",filename_input); + std::FILE *file_input = std::fopen(filename_input,"rb"); + if (!file_input) { std::fprintf(stderr,"Input JPEG file not found !"); std::exit(0); } + + std::fprintf(stderr," - Construct input JPEG-coded buffer\n"); + unsigned buf_size = 500000; // Put the file size here ! + JOCTET *buffer_input = new JOCTET[buf_size]; + if (std::fread(buffer_input,sizeof(JOCTET),buf_size,file_input)) std::fclose(file_input); + // -> 'buffer_input' is now a valid jpeg-coded memory buffer. + + // Create a CImg instance from the jpeg-coded buffer using the plug-in function. + std::fprintf(stderr," - Create CImg instance from JPEG-coded buffer\n"); + CImg img; + img.load_jpeg_buffer(buffer_input, buf_size); + delete[] buffer_input; + + // Do you image processing stuff here .... + // Here, we just mirror the image and write "hello". + std::fprintf(stderr," - Do simple processing\n"); + const unsigned char purple[] = { 255, 0, 0 }; + const unsigned char black[] = { 0, 0, 0 }; + img.mirror('y').draw_text(0,0," Hello! ",purple,black,1,57); + + // Display image to see if everything's fine. + img.display("Using 'jpeg_buffer.h' plugin"); + + // Define a new JOCTET array where the processed image has to be saved + // (we don't know its dimension before compressing it, therefore we have to allocate enough memory ) + std::fprintf(stderr," - Construct output JPEG-coded buffer\n"); + JOCTET *buffer_output = new JOCTET[2*buf_size]; + + // Save processed image into this JOCTET buffer, compressed as jpeg. + // This is done again by using the plug-in function. + img.save_jpeg_buffer(buffer_output,buf_size,60); + // Note that here, the variable 'buf_size' contains the length of the + // data which have been written in the given output buffer. + + // Copy the content of the above array into a new file + // (it should give you a valid JPEG file then !) + const char *filename_output = "foo_output.jpg"; + std::fprintf(stderr," - Save output file '%s'\n",filename_output); + std::FILE* file_output = std::fopen(filename_output,"wb"); + std::fwrite(buffer_output, sizeof(JOCTET), buf_size, file_output); + std::fclose(file_output); + delete[] buffer_output; + + std::fprintf(stderr," - All done !\n"); + return 0; +} diff --git a/examples/use_nlmeans.cpp b/examples/use_nlmeans.cpp new file mode 100644 index 000000000..07c7e56a0 --- /dev/null +++ b/examples/use_nlmeans.cpp @@ -0,0 +1,125 @@ +/* + # + # File : use_nlmeans.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/nlmeans.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Jerome Boulanger + # ( http://www.irisa.fr/vista/Equipe/People/Jerome.Boulanger.html ) + # + # Benchmark : (CPU intel pentium 4 2.60GHz) compiled with cimg_debug=0. + # patch lambda* alpha T sigma PSNR + # 3x3 15 9x9 3.6s 20 28.22 + # 5x5 17 15x15 22.2s 20 27.91 + # 7x7 42 21x21 80.0s 20 28.68 + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#define cimg_plugin "plugins/nlmeans.h" +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line argument s + //----------------------------- + cimg_usage("Non-local means denoising algorithm.\n [1] Buades, A. Coll, B. and Morel, J.: A review of image " + "denoising algorithms, with a new one. Multiscale Modeling and Simulation: A SIAM Interdisciplinary " + "Journal 4 (2004) 490-530 \n [2] Gasser, T. Sroka,L. Jennen Steinmetz,C. Residual variance and residual " + "pattern nonlinear regression. Biometrika 73 (1986) 625-659 \n Build : "); + + // input/output and general options + const char *file_i = cimg_option("-i",cimg_imagepath "milla.bmp","Input image"); + const char *file_o = cimg_option("-o",(char*)NULL,"Output file"); + const double zoom = cimg_option("-zoom",1.0,"Image magnification"); + const double noiseg = cimg_option("-ng",0.0,"Add gauss noise before aplying the algorithm"); + const double noiseu = cimg_option("-nu",0.0,"Add uniform noise before applying the algorithm"); + const double noises = cimg_option("-ns",0.0,"Add salt&pepper noise before applying the algorithm"); + const unsigned int visu = cimg_option("-visu",1,"Visualization step (0=no visualization)"); + + // non local means options + const int patch_size = cimg_option("-p",1,"Half size of the patch (2p+1)x(2p+1)"); + const float lambda = (float)cimg_option("-lambda",-1.0f,"Bandwidth as defined in [1] (-1 : automatic bandwidth)"); + const double sigma = cimg_option("-sigma",-1,"Noise standard deviation (-1 : robust estimation)"); + const int alpha = cimg_option("-alpha",3,"Neighborhood size (3)"); + const int sampling = cimg_option("-sampling",1,"Sampling of the patch (1: slow, 2: fast)"); + + // Read image + //------------ + CImg<> img; + if (file_i) { + img = CImg<>(file_i); + if (zoom>1) + img.resize((int)(img.width()*zoom),(int)(img.height()*zoom),(int)(img.depth()*zoom),-100,3); + } else throw CImgException("You need to specify at least one input image (option -i)"); + CImg<> original=img; + + // Add some noise + //----------------- + img.noise(noiseg,0).noise(noiseu,1).noise(noises,2); + + // Apply the filter + //--------------------- + cimg_uint64 tic = cimg::time(); + CImg<> dest; + dest = img.get_nlmeans(patch_size,lambda,alpha,sigma,sampling); + cimg_uint64 tac = cimg::time(); + + // Save result + //----------------- + if (file_o) dest.cut(0,255.f).save(file_o); + + // Display (option -visu) + //----------------------- + if (visu){ + fprintf(stderr,"Image computed in %f s \n",(float)(tac - tic)/1000.); + fprintf(stderr,"The pnsr is %f \n", + 20.*std::log10(255./std::sqrt( (dest - original).pow(2).sum()/original.size() ))); + if (noiseg==0 && noiseu==0 && noises==0) + CImgList<>(original,dest,((dest - original)*=2)+=128).display("Original + Restored + Estimated Noise"); + + else { + CImgList<>(original,img,dest,((dest - img)*=2)+=128,((dest - original)*=2)+=128). + display("Original + Noisy + Restored + Estimated Noise + Original Noise"); + } + } + + return 0; +} diff --git a/examples/use_skeleton.cpp b/examples/use_skeleton.cpp new file mode 100644 index 000000000..7004b1f8b --- /dev/null +++ b/examples/use_skeleton.cpp @@ -0,0 +1,119 @@ +/* + # + # File : use_skeleton.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/skeleton.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Francois-Xavier Dupe + # ( http://www.greyc.ensicaen.fr/~fdupe/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include +#define cimg_plugin "plugins/skeleton.h" +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main (int argc, char **argv) { + + cimg_usage("Compute the skeleton of a shape, using Hamilton-Jacobi equations"); + + // Read command line arguments + cimg_help("Input/Output options\n" + "--------------------"); + const char* file_i = cimg_option("-i",cimg_imagepath "milla.bmp","Input (black&white) image"); + const int median = cimg_option("-median",0,"Apply median filter"); + const bool invert = cimg_option("-inv",false,"Invert image values"); + const char* file_o = cimg_option("-o",(char*)0,"Output skeleton image"); + const bool display = cimg_option("-visu",true,"Display results"); + + cimg_help("Skeleton computation parameters\n" + "-------------------------------"); + const float thresh = cimg_option("-t",-0.3f,"Threshold"); + const bool curve = cimg_option("-curve",false,"Create medial curve"); + + cimg_help("Torsello correction parameters\n" + "------------------------------"); + const bool correction = cimg_option("-corr",false,"Torsello correction"); + const float dlt1 = 2; + const float dlt2 = cimg_option("-dlt",1.0f,"Discrete step"); + + // Load the image (forcing it to be scalar with 2 values { 0,1 }). + CImg image0(file_i), image = image0.get_norm().quantize(2).normalize(0.0f,1.0f).round(); + if (median) image.blur_median(median); + if (invert) (image-=1)*=-1; + if (display) (image0.get_normalize(0,255),image.get_normalize(0,255)).display("Input image - Binary image"); + + // Compute distance map. + CImgList visu; + CImg distance = image.get_distance(0); + if (display) visu.insert(distance); + + // Compute the gradient of the distance function, and the flux (divergence) of the gradient field. + const CImgList grad = distance.get_gradient("xyz"); + CImg flux = image.get_flux(grad,1,1); + if (display) visu.insert(flux); + + // Use the Torsello correction of the flux if necessary. + if (correction) { + CImg + logdensity = image.get_logdensity(distance,grad,flux,dlt1), + nflux = image.get_corrected_flux(logdensity,grad,flux,dlt2); + if (display) visu.insert(logdensity).insert(nflux); + flux = nflux; + } + + if (visu) { + cimglist_apply(visu,normalize)(0,255); + visu.display(visu.size()==2?"Distance function - Flux":"Distance function - Flux - Log-density - Corrected flux"); + } + + // Compute the skeleton + const CImg skel = image.get_skeleton(flux,distance,curve,thresh); + if (display) { + (image0.resize(-100,-100,1,3)*=0.7f).get_shared_channel(1)|=skel*255.0; + image0.draw_image(0,0,0,0,image*255.0,0.5f).display("Image + Skeleton"); + } + + // Save output image if necessary. + if (file_o) skel.save(file_o); + + return 0; +} diff --git a/examples/use_tiff_stream.cpp b/examples/use_tiff_stream.cpp new file mode 100644 index 000000000..37b8e3cb4 --- /dev/null +++ b/examples/use_tiff_stream.cpp @@ -0,0 +1,81 @@ +/* + # + # File : use_tiff_stream.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/jpeg_buffer.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Wolf Blecher + # ( Wolf.Blecher(at)sirona.com ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + + +#include +// These includes are necessary to get the plug-in compile ! Don't forget to link with 'libtiff' and 'libtiffxx' ! +#include "tiffio.h" +#include "tiffio.hxx" + +// Define plugin and include the CImg Library. +#define cimg_plugin "plugins/tiff_stream.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main() { + + std::ifstream inFile("input.tif", std::ifstream::in | std::ifstream::binary); + std::ofstream outFile("outFile.tif", std::ofstream::out | std::ifstream::binary); + + if (!inFile.good()) + { + std::cout << "Error Reading from infile" << std::endl; + } + + cimg_library::CImg imgIn; + imgIn.load_tiff(&inFile); + imgIn.display(); + CImg imgOut = imgIn.save_tiff(&outFile, 2U); + imgOut.display(); + + inFile.close(); + outFile.close(); + + inFile.open("outFile.tif", std::ifstream::in | std::ifstream::binary); + imgIn.load_tiff(&inFile); + imgIn.display(); + inFile.close(); + return 0; +} diff --git a/examples/use_tinymatwriter.cpp b/examples/use_tinymatwriter.cpp new file mode 100644 index 000000000..90d63c742 --- /dev/null +++ b/examples/use_tinymatwriter.cpp @@ -0,0 +1,135 @@ +/* + # + # File : use_tinymatwriter.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/tinymatwriter.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Jan W. Krieger + # ( https://github.com/jkriege2 ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +/* + This Matlab/Octave script tests the output: + clear all + more off + + subplot(2,2,1) + load("mat432.mat", "-v6") + disp('mat432.mat: CImg_image=') + disp(CImg_image) + imagesc(CImg_image(:,:,1)) + colorbar + + subplot(2,2,2) + load("mat432i16.mat", "-v6") + disp('mat432i16.mat: CImg_image=') + disp(CImg_image) + imagesc(double(CImg_image(:,:,2))) + colorbar + + subplot(2,2,3) + load("matb.mat", "-v6") + disp('matb.mat: CImg_image=') + disp(CImg_image) + imagesc(CImg_image(:,:,4)) + colorbar +*/ + +#include +#include +#include "tinymatwriter.h" +#include + +#define cimg_plugin "plugins/tinymatwriter.h" +#include "../CImg.h" + +using namespace std; +using namespace cimg_library; + +int main(int argc, const char** argv) { + + double mat432[4*3*2]= { + 1,2,3, + 4,5,6, + + 10,20,30, + 40,50,60, + + 100,200,300, + 400,500,600, + + 1000,2000,3000, + 4000,5000,6000, + }; + + int16_t mat432i16[4*3*2]= { + 1,2,3, + 4,5,6, + + 10,20,30, + 40,50,60, + + 100,200,300, + 400,500,600, + + 1000,-2000,3000, + -4000,5000,-6000, + }; + + // a boolean matrix + bool matb[4*3*2] = { + true,false,true, + false,true,false, + + true,true,true, + false,false,false, + + true,false,true, + true,false,true, + + true,true,false, + false,true,true + }; + + cimg_library::CImg ciD(mat432, 3,2,4); + cimg_library::CImg ciI16(mat432i16, 3,2,4); + cimg_library::CImg ciB(matb, 3,2,4); + + ciD.save_tinymat("mat432.mat"); + ciI16.save_tinymat("mat432i16.mat"); + ciB.save_tinymat("matb.mat"); + return 0; +} diff --git a/examples/wavelet_atrous.cpp b/examples/wavelet_atrous.cpp new file mode 100644 index 000000000..5f5628d47 --- /dev/null +++ b/examples/wavelet_atrous.cpp @@ -0,0 +1,191 @@ +/* + # + # File : wavelet_atrous.cpp + # ( C++ source file ) + # + # Description : Performs a 2D or 3D 'a trous' wavelet transform + # (using a cubic spline) on an image or a video sequence. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Author : Renaud Peteri + # ( Renaud.Peteri(at)mines-paris.org ) + # Andrea Onofri + # ( Andrea.Onofri(at)teletu.it ) + # + # Institution : CWI, Amsterdam + # + # Date : February 2005 + # + # References : Starck, J.-L., Murtagh, F. and Bijaoui, A., + # Image Processing and Data Analysis: The Multiscale Approach, + # Cambridge University Press, 1998. + # (Hardback and softback, ISBN 0-521-59084-1 and 0-521-59914-8.) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Define convolution mask. +CImg mask(const unsigned char dirIdx, const unsigned char scale) { + const int + d1 = 1 << (scale-1), + d2 = 1 << scale, + c = d2, + vecLen = (1 << (scale + 1)) + 1; + + const float + valC = 0.375f, // 6/16 + valD1 = 0.25f, // 4/16 + valD2 = 0.0625f; // 1/16 + + switch(dirIdx) { + case 0 : { // x + CImg m(vecLen,1,1,1,0); + m(c) = valC; + m(c - d1) = m(c + d1) = valD1; + m(c - d2) = m(c + d2) = valD2; + return m; + } + case 1: { // y + CImg m(1,vecLen,1,1,0); + m(0,c) = valC; + m(0,c - d1) = m(0,c + d1) = valD1; + m(0,c - d2) = m(0,c + d2) = valD2; + return m; + } + case 2: { // t + CImg m(1,1,vecLen,1,0); + m(0,0,c) = valC; + m(0,0,c - d1) = m(0,0,c + d1) = valD1; + m(0,0,c - d2) = m(0,0,c + d2) = valD2; + return m; + } + default: throw CImgException("Error, unknow decompostion axe, dirIdx = '%c'.",dirIdx); + } +} + +/*------------------ + Main procedure + ----------------*/ +int main(int argc,char **argv) { + cimg_usage("Perform an 'a trous' wavelet transform (using a cubic spline) on an image or on a video sequence.\n" + "This wavelet transform is undecimated and produces 2 images/videos at each scale. For an example of\n" + "decomposition on a video, try -i img/trees.inr (sequence from the MIT).\n" + "\t(Type -h for help)"); + + // Read command line parameters + const char + *name_i = cimg_option("-i",cimg_imagepath "parrot.ppm","Input image or video"), + *name_o = cimg_option("-o","","Name of the multiscale analysis output"), + *axe_dec = cimg_option("-axe",(char*)0, + "Perform the multiscale decomposition in just one direction ('x', 'y' or 't')"); + const unsigned int + s = cimg_option("-s",3,"Scale of decomposition"); + + const bool help = cimg_option("-h",false,"Display Help"); + if (help) std::exit(0); + + // Initialize Image Data + std::fprintf(stderr," - Load image sequence '%s'...\n",cimg::basename(name_i)); + const CImg texture_in(name_i); + CImg mask_conv; + CImgList res(s,texture_in.width(),texture_in.height(),texture_in.depth()); + CImgList wav(s,texture_in.width(),texture_in.height(),texture_in.depth()); + cimglist_for(res,l) { res(l).fill(0.0); wav(l).fill(0.0); } + unsigned int i; + + int firstDirIdx = 0,lastDirIdx = 2; + if (axe_dec) { // The multiscale decomposition will be performed in just one direction + char c = cimg::lowercase(axe_dec[0]); + switch(c) { + case 'x': firstDirIdx = 0; break; + case 'y': firstDirIdx = 1; break; + case 't': firstDirIdx = 2; break; + default: throw CImgException("Error, unknow decompostion axe '%c', try 'x', 'y' or 't'",c); + } + lastDirIdx = firstDirIdx; // Only one direction + } + + for (i = 0; i%CImg" specialization="[specialization]" newinstance="[new-instance version]" const="[const version]" inplace="[in-place version]" overloading="[overloading]" simplification="[simplification]" + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = YES + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = NO + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = NO + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = NO + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = NO + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= NO + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = NO + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = NO + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = NO + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../CImg.h CImg_documentation.h + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = _* + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = img/reference + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = reference + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = header_doxygen.html + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = footer_doxygen.html + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = YES + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# Qt Help Project / Namespace. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# Qt Help Project / Virtual Folders. + +QHP_VIRTUAL_FOLDER = doc + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file . + +QHG_LOCATION = + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NONE + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = cimg_verbosity=3 cimg_display=0 + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/html/CImg_documentation.h b/html/CImg_documentation.h new file mode 100644 index 000000000..fcdd056c4 --- /dev/null +++ b/html/CImg_documentation.h @@ -0,0 +1,1019 @@ +/*------------------------------------------------------------------------ +# +# File : CImg_documentation.h +# +# Description : Extra documentation file for the CImg Library. +# Used by doxygen to generate the reference documentation. +# ( http://cimg.eu ) +# +# Copyright : David Tschumperlé +# ( http://tschumperle.users.greyc.fr/ ) +# +# +-------------------------------------------------------------------------*/ + +/*----------------------------------- + + Main reference documentation page + + -------------------------------------*/ + +/** + \mainpage + + This is the reference documentation of the CImg Library, + the C++ template image processing library. + This documentation have been generated using the tool doxygen. + It contains a detailed description of all classes and functions of the %CImg Library. + + Use the menu above to navigate through the documentation pages. + As a first step, you may look at the list of available modules. + + You may be interested also in the + presentation slides presenting an overview + of the %CImg Library capabilities. + +**/ + +/*----------------------------------- + + CImg Library overview + + -------------------------------------*/ + +/** \addtogroup cimg_overview CImg Library Overview */ +/*@{*/ +/** + \page overview CImg Library Overview + + The CImg Library is an image processing library, designed for C++ programmers. + It provides useful classes and functions to load/save, display and process various types of images. + + \section s1 Library structure + + The %CImg Library consists in a single header file CImg.h providing a set of C++ template classes that + can be used in your own sources, to load/save, process and display images or list of images. + Very portable (Unix/X11,Windows, MacOS X, FreeBSD,..), efficient, simple to use, it's a pleasant toolkit + for coding image processing stuff in C++. + + The header file CImg.h contains all the classes and functions that compose the library itself. + This is one originality of the %CImg Library. This particularly means that : + - No pre-compilation of the library is needed, since the compilation of the CImg functions is done at the same time as + the compilation of your own C++ code. + - No complex dependencies have to be handled : Just include the CImg.h file, and you get a working C++ image processing toolkit. + - The compilation is done on the fly : only CImg functionalities really used by your program are compiled and appear in the + compiled executable program. This leads to very compact code, without any unused stuff. + - Class members and functions are inlined, leading to better performance during the program execution. + + The %CImg Library is structured as follows : + + - All library classes and functions are defined in the namespace \ref cimg_library. This namespace + encapsulates the library functionalities and avoid any class name collision that could happen with + other includes. Generally, one uses this namespace as a default namespace : + \code + #include "CImg.h" + using namespace cimg_library; + ... + \endcode + + - The namespace \ref cimg_library::cimg defines a set of \e low-level functions and variables used by the library. + Documented functions in this namespace can be safely used in your own program. But, \b never use the + \ref cimg_library::cimg namespace as a default namespace, since it contains functions whose names are already + defined in the standard C/C++ library. + + - The class \ref cimg_library::CImg represents images up to 4-dimensions wide, containing pixels of type \c T + (template parameter). This is actually the main class of the library. + + - The class \ref cimg_library::CImgList represents lists of cimg_library::CImg images. It can be used for instance + to store different frames of an image sequence. + + - The class \ref cimg_library::CImgDisplay is able to display images or image lists into graphical display windows. + As you may guess, the code of this class is highly system-dependent but this is transparent for the programmer, + as environment variables are automatically set by the CImg library (see also \ref cimg_environment). + + - The class \ref cimg_library::CImgException (and its subclasses) are used by the library to throw exceptions + when errors occur. Those exceptions can be caught with a try { ..} catch (CImgException) { .. } block. + Subclasses define precisely the type of encountered errors. + + Knowing these four classes is \b enough to get benefit of the %CImg Library functionalities. + + + \section s2 CImg version of "Hello world". + + Below is some very simple code that creates a "Hello World" image. This shows you basically how a CImg program looks like. + + \code + #include "CImg.h" + using namespace cimg_library; + + int main() { + CImg img(640,400,1,3); // Define a 640x400 color image with 8 bits per color component. + img.fill(0); // Set pixel values to 0 (color : black) + unsigned char purple[] = { 255,0,255 }; // Define a purple color + img.draw_text(100,100,"Hello World",purple); // Draw a purple "Hello world" at coordinates (100,100). + img.display("My first CImg code"); // Display the image in a display window. + return 0; + } + \endcode + + Which can be also written in a more compact way as : + + \code + #include "CImg.h" + using namespace cimg_library; + + int main() { + const unsigned char purple[] = { 255,0,255 }; + CImg(640,400,1,3,0).draw_text(100,100,"Hello World",purple).display("My first CImg code"); + return 0; + } + \endcode + + Generally, you can write very small code that performs complex image processing tasks. The %CImg Library is very simple + to use and provides a lot of interesting algorithms for image manipulation. + + \section s3 How to compile ? + + The CImg library is a very light and user-friendly library : only standard system libraries are used. + It avoids handling complex dependencies and problems with library compatibility. + The only thing you need is a (quite modern) C++ compiler : + + - Microsoft Visual Studio.NET and Visual Express Edition : Use the project files and solution files provided in the + %CImg Library package (directory 'compilation/') to see how it works. + - Intel ICL compiler : Use the following command to compile a CImg-based program with ICL : + \code + icl /Ox hello_world.cpp user32.lib gdi32.lib + \endcode + - g++ (MingW windows version) : Use the following command to compile a CImg-based program with g++, on Windows : + \code + g++ -o hello_world.exe hello_world.cpp -O2 -lgdi32 + \endcode + - g++ (Linux version) : Use the following command to compile a CImg-based program with g++, on Linux : + \code + g++ -o hello_world.exe hello_world.cpp -O2 -L/usr/X11R6/lib -lm -lpthread -lX11 + \endcode + - g++ (Solaris version) : Use the following command to compile a CImg-based program with g++, on Solaris : + \code + g++ -o hello_world.exe hello_world.cpp -O2 -lm -lpthread -R/usr/X11R6/lib -lrt -lnsl -lsocket + \endcode + - g++ (Mac OS X version) : Use the following command to compile a CImg-based program with g++, on Mac OS X : + \code + g++ -o hello_world.exe hello_world.cpp -O2 -lm -lpthread -I/usr/X11R6/include -L/usr/X11R6/lib -lm -lpthread -lX11 + \endcode + - Dev-Cpp : Use the project file provided in the CImg library package to see how it works. + + If you are using other compilers and encounter problems, please + write me since maintaining compatibility is one + of the priorities of the %CImg Library. Nevertheless, old compilers that do not respect the C++ standard will not + support the %CImg Library. + + \section s4 What's next ? + + If you are ready to get more, and to start writing more serious programs + with CImg, you are invited to go to the \ref cimg_tutorial section. + +**/ +/*@}*/ + +/*----------------------------------- + + FAQ : Frequently Asked Questions + + -------------------------------------*/ + +/** \addtogroup cimg_faq FAQ : Frequently Asked Questions. */ +/*@{*/ +/** + \page faq FAQ + + \section ssf0 FAQ Summary + + - General information and availability + - What is the CImg Library ? + - What platforms are supported ? + - How is CImg distributed ? + - What kind of people are concerned by CImg ? + - What are the specificities of the CeCILL license ? + - Who is behind CImg ? + + - C++ related questions + - What is the level of C++ knowledge needed to use CImg ? + - How to use CImg in my own C++ program ? + - Why is CImg entirely contained in a single header file ? + + - Other resources + - Translations + + \section sf1 1. General information and availability + + \subsection ssf11 1.1. What is the CImg Library ? + + The CImg Library is an open-source C++ toolkit for image processing.\n + + It mainly consists in a (big) single header file + CImg.h + providing a set of C++ classes and functions that can be used in your own sources, + to load/save, manage/process and display generic images. + It's actually a very simple and pleasant toolkit for coding image processing stuff in C++ : + Just include the header file CImg.h, and you are ready to handle images in your C++ programs. + + \subsection ssf12 1.2. What platforms are supported ? + + CImg has been designed with portability in mind. + It is regularly tested on different architectures and compilers, + and should also work on any decent OS having a decent C++ compiler. + Before each release, the CImg Library is compiled under these different configurations : + \li PC Linux 32/64 bits, with g++. + \li PC Windows 32/64 bits, with Visual C++ Express Edition. + + CImg has a minimal number of dependencies. In its minimal version, it can be compiled only with standard C++ headers. + Anyway, it has interesting extension capabilities and can use external libraries to perform specific tasks more + efficiently (Fourier Transform computation using FFTW for instance). + + \subsection ssf13 1.3. How is CImg distributed ? + + The CImg Library is freely distributed as a complete .zip compressed package, hosted at the + CImg server.\n + The package is distributed under the CeCILL license. + + This package contains : + - The main library file CImg.h (C++ header file). + - Several C++ source code showing examples of using CImg. + - A complete library documentation, in PDF format. + - Additional library plug-ins that can be used to extend + library capabilities for specific uses. + + The CImg Library is a quite lightweight library which is easy to maintain (due to its particular structure), and thus + has a fast rythm of release. A new version of the CImg package is released approximately every three months. + + \subsection ssf14 1.4. What kind of people are concerned by CImg ? + + The CImg library is an image processing library, primarily intended for computer scientists or students working in the fields + of image processing or computer vision, and knowing bases of C++. + As the library is handy and really easy to use, it can be also used by any programmer + needing occasional tools for dealing with images in C++, since there are no standard library yet + for this purpose. + + \subsection ssf15 1.5. What are the specificities of the CeCILL license ? + + The CeCILL license governs the use of the CImg Library. + This is an open-source license which gives you rights to access, use, modify and redistribute the source code, + under certains conditions. + There are two different variants of the CeCILL license used in CImg + (namely + CeCILL and + CeCILL-C, all open-source), + corresponding to different constraints on the source files : + - The CeCILL-C license is the most permissive one, close to + the GNU LGPL license, and applies only on the main library file + CImg.h. + Basically, this license allows to use CImg.h + in a closed-source product without forcing you to redistribute the entire software source code. Anyway, + if one modifies the CImg.h source file, one has to redistribute + the modified version of the file that must be governed by the same CeCILL-C license. + + - The CeCILL license applies to all other files + (source examples, plug-ins and documentation) of the CImg Library package, and is close (even compatible) + with the GNU GPL license. It does not allow the use of these files in closed-source products. + + You are invited to read the complete descriptions of the + the CeCILL-C + and CeCILL licenses before releasing a + software based on the CImg Library. + + \subsection ssf16 1.6. Who is behind CImg ? + + CImg has been started by + David Tschumperlé at the beginning of his PhD thesis, in October 1999. + He is still the main coordinator of the project. + Since the first release, a growing number of contributors has appeared. + Due to the very simple and compact form of the library, submitting a contribution is quite easy and can be + fastly integrated into the supported releases. + List of contributors can be found on the front page. + + \section sf2 2. C++ related questions + + \subsection ssf21 2.1 What is the level of C++ knowledge needed to use CImg ? + + The CImg Library has been designed using C++ templates and object-oriented programming techniques, + but in a very accessible level. + There are only public classes without any derivation (just like C structures) and + there is at most one template parameter for each CImg class (defining the pixel type of the images). + The design is simple but clean, making the library accessible even for non professional C++ programmers, while proposing + strong extension capabilities for C++ experts. + + \subsection ssf22 2.2 How to use CImg in my own C++ program ? + + Basically, you need to add these two lines in your C++ source code, in order + to be able to work with CImg images : + \code + #include "CImg.h" + using namespace cimg_library; + \endcode + + \subsection ssf23 2.3 Why is CImg entirely contained in a single header file ? + + People are often surprised to see that the complete code of the library is contained in a single (big) C++ header file + CImg.h. + There are good practical and technical reasons to do that. Some arguments are listed below to justify this approach, + so (I hope) you won't think this is a awkwardly C++ design of the CImg library :\n + + - First, the library is based on template datatypes (images with generic pixel type), + meaning that the programmer is free to decide what type of image he instanciates in his code. + Even if there are roughly a limited number of fully supported types (basically, the "atomic" types of C++ : unsigned char, int, float, ...), + this is not imaginable to pre-compile the library classes and functions for all possible atomic datatypes, + since many functions and methods can have two or three arguments having different template parameters. + This really means a huge number of possible combinations. The size of the object binary file generated to cover all possible cases + would be just colossal. Is the STL library a pre-compiled one ? No, CImg neither. + CImg is not using a classical .cpp and .h mechanism, just like the STL. + Architectures of C++ template-based libraries are somewhat special in this sense. This is a proven technical fact. + + - Second, why CImg does not have several header files, just like the STL does (one for each class for instance) ? + This would be possible of course. + There are only 4 classes in CImg, the two most important being CImg and CImgList representing respectively + an image and a collection of images. + But contrary to the STL library, these two CImg classes are strongly inter-dependent. All CImg algorithms + are actually not defined as separate functions acting on containers (as the STL does with his header \), + but are directly methods of the image and image collection classes. This inter-dependence practically means that you + will undoubtly need these two main classes at the same time if you are using CImg. + If they were defined in separate header files, you would be forced to include both of them. What is the gain then ? No gain.\n + Concerning the two other classes : You can disable the third most important class CImgDisplay of the CImg library, by setting the compilation + macro cimg_display to 0, avoiding thus to compile this class if you don't use display capabilities of CImg in your code. + But to be honest, this is a quite small class and doing this doesn't save much compilation time. + The last and fourth class is CImgException, which is only few lines long and is obviously required in almost all methods of CImg. + Including this one is mandatory.\n + As a consequence, having a single header file instead of several ones is just a way for you to avoid including all of them, + without any consequences on compilation time. This is both good technical and practical reasons to do like this. + + - Third, having a single header file has plenty of advantages : Simplicity for the user, and for the developers (maintenance is in fact easier). + Look at the CImg.h file, it looks like a mess at a first glance, but it is in fact very well organized and structured. + Finding pieces of code in CImg functions or methods is particularly easy and fast. + Also, how about the fact that library installation problems just disappear ? + Just bring CImg.h with you, put it in your source directory, and the library is ready to go ! + + I admit the compilation time of CImg-based programs can be sometime long, but don't think that it is due to the fact that you are + using a single header file. Using several header files wouldn't arrange anything since you would need all of them. + Having a pre-compiled library object would be the only solution to speed up compilation time, but it is not possible at all, + due to the too much generic nature of the library. + + \section sf3 3. Other resources + \subsection ssf31 3.1 Translations + + This FAQ has been translated to Serbo-Croatian language by Web Geeks . + +**/ +/*@}*/ + +/*----------------------------------- + + Setting Environment Variables + + -------------------------------------*/ + +/** \addtogroup cimg_environment Setting Environment Variables */ +/*@{*/ +/** + \page environment_variables Setting Environment Variables + + The CImg library is a multiplatform library, working on a wide variety of systems. + This implies the existence of some \e environment \e variables that must be correctly defined + depending on your current system. + Most of the time, the %CImg Library defines these variables automatically + (for popular systems). Anyway, if your system is not recognized, you will have to set the environment + variables by hand. Here is a quick explanations of environment variables.\n + + Setting the environment variables is done with the \#define keyword. + This setting must be done before including the file CImg.h in your source code. + For instance, + defining the environment variable \c cimg_display would be done like this : + \code + #define cimg_display 0 + #include "CImg.h" + ... + \endcode + + Here are the different environment variables used by the %CImg Library : + + - \b \c cimg_OS : This variable defines the type of your Operating System. It can be set to \b 1 (\e Unix), + \b 2 (\e Windows), or \b 0 (\e Other \e configuration). + It should be actually auto-detected by the CImg library. If this is not the case (cimg_OS=0), you + will probably have to tune the environment variables described below. + + - \b \c cimg_display : This variable defines the type of graphical library used to + display images in windows. It can be set to 0 (no display library available), \b 1 (X11-based display) or + \b 2 (Windows-GDI display). + If you are running on a system without X11 or Windows-GDI ability, please set this variable to \c 0. + This will disable the display support, since the %CImg Library doesn't contain the necessary code to display + images on systems other than X11 or Windows GDI. + + - \b \c cimg_use_vt100 : This variable tells the library if the system terminal has VT100 color capabilities. + It can be \e defined or \e not \e defined. Define this variable to get colored output on your terminal, + when using the %CImg Library. + + - \b \c cimg_verbosity : This variable defines the level of run-time debug messages that will be displayed by + the %CImg Library. It can be set to 0 (no debug messages), 1 (normal debug messages displayed on + standard error), 2 (normal debug messages displayed in modal windows, which is + the default value), or 3 (high debug messages). Note that setting this value to 3 may slow down your + program since more debug tests are made by the library (particularly to check if pixel access is made outside + image boundaries). See also CImgException to better understand how debug messages are working. + + - \b \c cimg_plugin : This variable tells the library to use a plugin file to add features to the CImg class. + Define it with the path of your plugin file, if you want to add member functions to the CImg class, + without having to modify directly the \c "CImg.h" file. An include of the plugin file is performed in the CImg + class. If \c cimg_plugin if not specified (default), no include is done. + + - \b \c cimglist_plugin : Same as \c cimg_plugin, but to add features to the CImgList class. + + - \b \c cimgdisplay_plugin : Same as \c cimg_plugin, but to add features to the CImgDisplay class. + + All these compilation variables can be checked, using the function cimg_library::cimg::info(), which + displays a list of the different configuration variables and their values on the standard error output. +**/ +/*@}*/ + + +/** \addtogroup cimg_visual2005 How to use CImg library with Visual C++ 2005 Express Edition ?. */ +/*@{*/ +/** + \page visual_cpp How to use CImg library with Visual C++ 2005 Express Edition ? + + \section s13968 How to use CImg library with Visual C++ 2005 Express Edition ? + + This section has been written by Vincent Garcia and Alexandre Fournier from I3S/Sophia_Antipolis. + + - Download CImg library + - Download and install Visual C++ 2005 Express Edition + - Download and install Microsoft Windows SDK + - Configure Visual C++ to take into account Microsoft SDK + - 1. Go to menu "Tools -> options" + - 2. Select option "Projects and Solutions -> VC++ Directories" + - 3. In the select liste "Show directories for", choose "include files", and add C:\\Program Files\\Microsoft Platform SDK\\Include (adapt if needed) + - 4. In the select liste "Show directories for", choose "library files", and add C:\\Program Files\\Microsoft Platform SDK\\Lib + (adapt if needed) Edit file C:\\Program Files\\Microsoft Visual Studio 8\\VC\\VCProjectDefaults\\corewin_express.vsprops (adapt if needed) + - 6. 7. Remplace the line AdditionalDependencies="kernel32.lib" /> by AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib" /> + - Restart Visual C++ + - Import CImg library in your main file + +**/ +/*@}*/ + + +/*----------------------------------- + + Tutorial : Getting started + + -------------------------------------*/ + +/** \addtogroup cimg_tutorial Tutorial : Getting Started. */ +/*@{*/ +/** + \page tutorial Tutorial : Getting Started. + + Let's start to write our first program to get the idea. This will demonstrate how to load and create images, as well as handle image + display and mouse events. + Assume we want to load a color image lena.jpg, smooth it, display it in a windows, and enter an event loop so that clicking a + point in the image will draw the (R,G,B) intensity profiles of the corresponding image line (in another window). + Yes, that sounds quite complex for a first code, but don't worry, it will be very simple using the CImg library ! Well, just look + at the code below, it does the task : + + \code + #include "CImg.h" + using namespace cimg_library; + + int main() { + CImg image("lena.jpg"), visu(500,400,1,3,0); + const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 }; + image.blur(2.5); + CImgDisplay main_disp(image,"Click a point"), draw_disp(visu,"Intensity profile"); + while (!main_disp.is_closed() && !draw_disp.is_closed()) { + main_disp.wait(); + if (main_disp.button() && main_disp.mouse_y()>=0) { + const int y = main_disp.mouse_y(); + visu.fill(0).draw_graph(image.get_crop(0,y,0,0,image.width()-1,y,0,0),red,1,1,0,255,0); + visu.draw_graph(image.get_crop(0,y,0,1,image.width()-1,y,0,1),green,1,1,0,255,0); + visu.draw_graph(image.get_crop(0,y,0,2,image.width()-1,y,0,2),blue,1,1,0,255,0).display(draw_disp); + } + } + return 0; + } + \endcode + + Here is a screenshot of the resulting program : + + + + And here is the detailled explanation of the source, line by line : + + \code #include "CImg.h" \endcode + Include the main and only header file of the CImg library. + \code using namespace cimg_library; \endcode + Use the library namespace to ease the declarations afterward. + \code int main() { \endcode + Definition of the main function. + \code CImg image("lena.jpg"), visu(500,400,1,3,0); \endcode + Creation of two instances of images of \c unsigned \c char pixels. + The first image \c image is initialized by reading an image file from the disk. + Here, lena.jpg must be in the same directory as the current program. + Note that you must also have installed the \e ImageMagick package in order to be able to read JPG images. + The second image \c visu is initialized as a black color image with dimension dx=500, dy=400, + dz=1 (here, it is a 2D image, not a 3D one), and dv=3 (each pixel has 3 'vector' channels R,G,B). + The last argument in the constructor defines the default value of the pixel values + (here \c 0, which means that \c visu will be initially black). + \code const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 }; \endcode + Definition of three different colors as array of unsigned char. This will be used to draw plots with different colors. + \code image.blur(2.5); \endcode + Blur the image, with a gaussian blur and a standard variation of 2.5. Note that most of the CImg functions have two versions : + one that acts in-place (which is the case of blur), and one that returns the result as a new image (the name of the function + begins then with get_ ). In this case, one could have also written image = image.get_blur(2.5); + (more expensive, since it needs an additional copy operation). + \code CImgDisplay main_disp(image,"Click a point"), draw_disp(visu,"Intensity profile"); \endcode + Creation of two display windows, one for the input image image, and one for the image visu which will be display intensity profiles. + By default, CImg displays handles events (mouse,keyboard,..). On Windows, there is a way to create fullscreen displays. + \code while (!main_disp.is_closed() && !draw_disp.is_closed()) { \endcode + Enter the event loop, the code will exit when one of the two display windows is closed. + \code main_disp.wait(); \endcode + Wait for an event (mouse, keyboard,..) in the display window \c main_disp. + \code if (main_disp.button() && main_disp.mouse_y()>=0) { \endcode + Test if the mouse button has been clicked on the image area. + One may distinguish between the 3 different mouse buttons, + but in this case it is not necessary + \code const int y = main_disp.mouse_y(); \endcode + Get the image line y-coordinate that has been clicked. + \code visu.fill(0).draw_graph(image.get_crop(0,y,0,0,image.width()-1,y,0,0),red,1,0,256,0); \endcode + This line illustrates the pipeline property of most of the CImg class functions. The first function fill(0) simply sets + all pixel values with 0 (i.e. clear the image \c visu). The interesting thing is that it returns a reference to + \c visu and then, can be pipelined with the function \c draw_graph() which draws a plot in the image \c visu. + The plot data are given by another image (the first argument of \c draw_graph()). In this case, the given image is + the red-component of the line y of the original image, retrieved by the function \c get_crop() which returns a + sub-image of the image \c image. Remember that images coordinates are 4D (x,y,z,c) and for color images, + the R,G,B channels are respectively given by v=0, v=1 and v=2. + \code visu.draw_graph(image.get_crop(0,y,0,1,image.width()-1,y,0,1),green,1,0,256,0); \endcode + Plot the intensity profile for the green channel of the clicked line. + \code visu.draw_graph(image.get_crop(0,y,0,2,image.width()-1,y,0,2),blue,1,0,256,0).display(draw_disp); \endcode + Same thing for the blue channel. Note how the function (which return a reference to \c visu) is pipelined with the function + \c display() that just paints the image visu in the corresponding display window. + \code ...till the end \endcode + I don't think you need more explanations ! + + As you have noticed, the CImg library allows to write very small and intuitive code. Note also that this source will perfectly + work on Unix and Windows systems. Take also a look to the examples provided in the CImg package ( + directory \c examples/ ). It will show you how CImg-based code can be surprisingly small. + Moreover, there is surely one example close to what you want to do. + A good start will be to look at the file CImg_demo.cpp which contains small and various examples of what you can do + with the %CImg Library. All CImg classes are used in this source, and the code can be easily modified to see what happens. + +**/ +/*@}*/ + +/*----------------------------------- + + Using image loops + + -------------------------------------*/ + +/** \addtogroup cimg_loops Using Image Loops. */ +/*@{*/ +/** + \page loops_Using Image Loops. + The %CImg Library provides different macros that define useful iterative loops over an image. + Basically, it can be used to replace one or several for(..) instructions, but it also proposes + interesting extensions to classical loops. + Below is a list of all existing loop macros, classified in four different categories : + - \ref lo1 + - \ref lo4 + - \ref lo5 + - \ref lo6 + + \section lo1 Loops over the pixel buffer + + Loops over the pixel buffer are really basic loops that iterate a pointer on the pixel data buffer + of a \c cimg_library::CImg image. Two macros are defined for this purpose : + + - \b cimg_for(img,ptr,T) : + This macro loops over the pixel data buffer of the image \c img, using a pointer T* ptr, + starting from the beginning of the buffer (first pixel) till the end of the buffer (last pixel). + - \c img must be a (non empty) \c cimg_library::CImg image of pixels \c T. + - \c ptr is a pointer of type \c T*. + This kind of loop should not appear a lot in your own source code, since this is a low-level loop + and many functions of the CImg class may be used instead. Here is an example of use : + \code + CImg img(320,200); + cimg_for(img,ptr,float) { *ptr=0; } // Equivalent to 'img.fill(0);' + \endcode + + - \b cimg_rof(img,ptr,T) : + This macro does the same as \c cimg_for() but from the end to the beginning of the pixel buffer. + + - \b cimg_foroff(img,off) : + This macro loops over the pixel data buffer of the image \c img, using an offset \c , + starting from the beginning of the buffer (first pixel, \c off=0) + till the end of the buffer (last pixel value, off = img.size()-1). + - \c img must be a (non empty) cimg_library::CImg image of pixels \c T. + - \c off is an inner-loop variable, only defined inside the scope of the loop. + + Here is an example of use : + \code + CImg img(320,200); + cimg_foroff(img,off) { img[off]=0; } // Equivalent to 'img.fill(0);' + \endcode + + \section lo4 Loops over image dimensions + + The following loops are probably the most used loops in image processing programs. + They allow to loop over the image along one or several dimensions, along a raster scan course. + Here is the list of such loop macros for a single dimension : + - \b cimg_forX(img,x) : equivalent to : for (int x = 0; x. + - \b cimg_forY(img,y) : equivalent to : for (int y = 0; y. + - \b cimg_forZ(img,z) : equivalent to : for (int z = 0; z. + - \b cimg_forC(img,c) : equivalent to : for (int c = 0; c. + + Combinations of these macros are also defined as other loop macros, allowing to loop directly over 2D, 3D or 4D images : + - \b cimg_forXY(img,x,y) : equivalent to : \c cimg_forY(img,y) \c cimg_forX(img,x). + - \b cimg_forXZ(img,x,z) : equivalent to : \c cimg_forZ(img,z) \c cimg_forX(img,x). + - \b cimg_forYZ(img,y,z) : equivalent to : \c cimg_forZ(img,z) \c cimg_forY(img,y). + - \b cimg_forXC(img,x,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forX(img,x). + - \b cimg_forYC(img,y,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forY(img,y). + - \b cimg_forZC(img,z,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forZ(img,z). + - \b cimg_forXYZ(img,x,y,z) : equivalent to : \c cimg_forZ(img,z) \c cimg_forXY(img,x,y). + - \b cimg_forXYC(img,x,y,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forXY(img,x,y). + - \b cimg_forXZC(img,x,z,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forXZ(img,x,z). + - \b cimg_forYZC(img,y,z,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forYZ(img,y,z). + - \b cimg_forXYZC(img,x,y,z,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forXYZ(img,x,y,z). + + - For all these loops, \c x,\c y,\c z and \c v are inner-defined variables only visible inside the scope of the loop. + They don't have to be defined before the call of the macro. + - \c img must be a (non empty) cimg_library::CImg image. + + Here is an example of use that creates an image with a smooth color gradient : + \code + CImg img(256,256,1,3); // Define a 256x256 color image + cimg_forXYC(img,x,y,c) { img(x,y,c) = (x+y)*(c+1)/6; } + img.display("Color gradient"); + \endcode + + \section lo5 Loops over interior regions and borders. + + Similar macros are also defined to loop only on the border of an image, or inside the image (excluding the border). + The border may be several pixel wide : + + - \b cimg_for_insideX(img,x,n) : Loop along the x-axis, except for pixels inside a border of \p n pixels wide. + - \b cimg_for_insideY(img,y,n) : Loop along the y-axis, except for pixels inside a border of \p n pixels wide. + - \b cimg_for_insideZ(img,z,n) : Loop along the z-axis, except for pixels inside a border of \p n pixels wide. + - \b cimg_for_insideC(img,c,n) : Loop along the c-axis, except for pixels inside a border of \p n pixels wide. + - \b cimg_for_insideXY(img,x,y,n) : Loop along the (x,y)-axes, excepted for pixels inside a border of \p n pixels wide. + - \b cimg_for_insideXYZ(img,x,y,z,n) : Loop along the (x,y,z)-axes, excepted for pixels inside a border of \p n pixels wide. + + And also : + + - \b cimg_for_borderX(img,x,n) : Loop along the x-axis, only for pixels inside a border of \p n pixels wide. + - \b cimg_for_borderY(img,y,n) : Loop along the y-axis, only for pixels inside a border of \p n pixels wide. + - \b cimg_for_borderZ(img,z,n) : Loop along the z-axis, only for pixels inside a border of \p n pixels wide. + - \b cimg_for_borderC(img,c,n) : Loop along the c-axis, only for pixels inside a border of \p n pixels wide. + - \b cimg_for_borderXY(img,x,y,n) : Loop along the (x,y)-axes, only for pixels inside a border of \p n pixels wide. + - \b cimg_for_borderXYZ(img,x,y,z,n) : Loop along the (x,y,z)-axes, only for pixels inside a border of \p n pixels wide. + + - For all these loops, \c x,\c y,\c z and \c c are inner-defined variables only visible inside the scope of the loop. + They don't have to be defined before the call of the macro. + - \c img must be a (non empty) cimg_library::CImg image. + - The constant \c n stands for the size of the border. + + Here is an example of use, to create a 2d grayscale image with two different intensity gradients : + \code + CImg<> img(256,256); + cimg_for_insideXY(img,x,y,50) img(x,y) = x+y; + cimg_for_borderXY(img,x,y,50) img(x,y) = x-y; + img.display(); + \endcode + + \section lo6 Loops using neighborhoods. + + Inside an image loop, it is often useful to get values of neighborhood pixels of the + current pixel at the loop location. + The %CImg Library provides a very smart and fast mechanism for this purpose, with the definition + of several loop macros that remember the neighborhood values of the pixels. + The use of these macros can highly optimize your code, and also simplify your program. + + \subsection lo7 Neighborhood-based loops for 2D images + + For 2D images, the neighborhood-based loop macros are : + + - \b cimg_for2x2(img,x,y,z,c,I,T) : Loop along the (x,y)-axes using a centered 2x2 neighborhood. + - \b cimg_for3x3(img,x,y,z,c,I,T) : Loop along the (x,y)-axes using a centered 3x3 neighborhood. + - \b cimg_for4x4(img,x,y,z,c,I,T) : Loop along the (x,y)-axes using a centered 4x4 neighborhood. + - \b cimg_for5x5(img,x,y,z,c,I,T) : Loop along the (x,y)-axes using a centered 5x5 neighborhood. + + For all these loops, \c x and \c y are inner-defined variables only visible inside the scope of the loop. + They don't have to be defined before the call of the macro. + \c img is a non empty CImg image. \c z and \c c are constants that define on which image slice and + vector channel the loop must apply (usually both 0 for grayscale 2D images). + Finally, \c I is the 2x2, 3x3, 4x4 or 5x5 neighborhood of type \c T that will be updated with the correct pixel values + during the loop (see \ref lo9). + + \subsection lo8 Neighborhood-based loops for 3D images + + For 3D images, the neighborhood-based loop macros are : + + - \b cimg_for2x2x2(img,x,y,z,c,I,T) : Loop along the (x,y,z)-axes using a centered 2x2x2 neighborhood. + - \b cimg_for3x3x3(img,x,y,z,c,I,T) : Loop along the (x,y,z)-axes using a centered 3x3x3 neighborhood. + + For all these loops, \c x, \c y and \c z are inner-defined variables only visible inside the scope of the loop. + They don't have to be defined before the call of the macro. + \c img is a non empty CImg image. \c c is a constant that defines on which image channel + the loop must apply (usually 0 for grayscale 3D images). + Finally, \c I is the 2x2x2 or 3x3x3 neighborhood of type \c T that will be updated with the correct pixel values + during the loop (see \ref lo9). + + \subsection lo9 Defining neighborhoods + + A neighborhood is defined as an instance of a class having operator[] defined. + This particularly includes classical C-array, as well as CImg objects. + + For instance, a 3x3 neighborhood can be defined either as a 'float[9]' or a + 'CImg(3,3)' variable. + + \subsection lo10 Using alternate variable names + + There are also some useful macros that can be used to define variables that + reference the neighborhood elements. There are : + + - \b CImg_2x2(I,type) : Define a 2x2 neighborhood named \c I, of type \c type. + - \b CImg_3x3(I,type) : Define a 3x3 neighborhood named \c I, of type \c type. + - \b CImg_4x4(I,type) : Define a 4x4 neighborhood named \c I, of type \c type. + - \b CImg_5x5(I,type) : Define a 5x5 neighborhood named \c I, of type \c type. + - \b CImg_2x2x2(I,type) : Define a 2x2x2 neighborhood named \c I, of type \c type. + - \b CImg_3x3x3(I,type) : Define a 3x3x3 neighborhood named \c I, of type \c type. + + Actually, \c I is a \e generic \e name for the neighborhood. In fact, these macros declare + a \e set of new variables. + For instance, defining a 3x3 neighborhood \c CImg_3x3(I,float) declares 9 different float variables + \c Ipp,\c Icp,\c Inp,\c Ipc,\c Icc,\c Inc,\c Ipn,\c Icn,\c Inn which correspond to each pixel value of + a 3x3 neighborhood. + Variable indices are \c p,\c c or \c n, and stand respectively for \e 'previous', \e 'current' and \e 'next'. + First indice denotes the \c x-axis, second indice denotes the \c y-axis. + Then, the names of the variables are directly related to the position of the corresponding pixels + in the neighborhood. For 3D neighborhoods, a third indice denotes the \c z-axis. + Then, inside a neighborhood loop, you will have the following equivalence : + - Ipp = img(x-1,y-1) + - Icn = img(x,y+1) + - Inp = img(x+1,y-1) + - Inpc = img(x+1,y-1,z) + - Ippn = img(x-1,y-1,z+1) + - and so on... + + For bigger neighborhoods, such as 4x4 or 5x5 neighborhoods, two additionnal indices are introduced : + \c a (stands for \e 'after') and \c b (stands for \e 'before'), so that : + - Ibb = img(x-2,y-2) + - Ina = img(x+1,y+2) + - and so on... + + The value of a neighborhood pixel outside the image range (image border problem) is automatically set to the same + values as the nearest valid pixel in the image (this is also called the \e Neumann \e border \e condition). + + \subsection lo11 Example codes + More than a long discussion, the above example will demonstrate how to compute the gradient norm of a 3D volume + using the \c cimg_for3x3x3() loop macro : + + \code + CImg volume("IRM.hdr"); // Load an IRM volume from an Analyze7.5 file + CImg_3x3x3(I,float); // Define a 3x3x3 neighborhood + CImg gradnorm(volume); // Create an image with same size as 'volume' + cimg_for3x3x3(volume,x,y,z,0,I,float) { // Loop over the volume, using the neighborhood I + const float ix = 0.5f*(Incc-Ipcc); // Compute the derivative along the x-axis. + const float iy = 0.5f*(Icnc-Icpc); // Compute the derivative along the y-axis. + const float iz = 0.5f*(Iccn-Iccp); // Compute the derivative along the z-axis. + gradnorm(x,y,z) = std::sqrt(ix*ix+iy*iy+iz*iz); // Set the gradient norm in the destination image + } + gradnorm.display("Gradient norm"); + \endcode + + And the following example shows how to deal with neighborhood references to blur a color image by averaging + pixel values on a 5x5 neighborhood. + + \code + CImg src("image_color.jpg"), dest(src,false); // Image definitions. + typedef unsigned char uchar; // Avoid space in the second parameter of the macro CImg_5x5x1 below. + CImg<> N(5,5); // Define a 5x5 neighborhood as a 5x5 image. + cimg_forC(src,k) // Standard loop on color channels + cimg_for5x5(src,x,y,0,k,N,float) // 5x5 neighborhood loop. + dest(x,y,k) = N.sum()/(5*5); // Averaging pixels to filter the color image. + CImgList visu(src,dest); + visu.display("Original + Filtered"); // Display both original and filtered image. + \endcode + + As you can see, explaining the use of the CImg neighborhood macros is actually more difficult than using them ! + +**/ +/*@}*/ + +/*----------------------------------- + + Using display windows + + -------------------------------------*/ + +/** \addtogroup cimg_displays Using Display Windows. */ +/*@{*/ +/** + \page display Using Display Windows. + + When opening a display window, you can choose the way the pixel values will be normalized + before being displayed on the screen. Screen displays only support color values between [0,255], + and some + + When displaying an image into the display window using CImgDisplay::display(), values of + the image pixels can be eventually linearly normalized between [0,255] for visualization purposes. + This may be useful for instance when displaying \p CImg images with pixel values + between [0,1]. + The normalization behavior depends on the value of \p normalize which can be either \p 0,\p 1 or \p 2 : + - \p 0 : No pixel normalization is performed when displaying an image. This is the fastest + process, but you must be sure your displayed image have pixel values inside the range [0,255]. + - \p 1 : Pixel value normalization is done for each new image display. Image pixels are + not modified themselves, only displayed pixels are normalized. + - \p 2 : Pixel value normalization is done for the first image display, then the + normalization parameters are kept and used for all the next image displays. + +**/ +/*@}*/ + +/*----------------------------------- + + How pixel data are stored + + -------------------------------------*/ + +/** \addtogroup cimg_storage How pixel data are stored with CImg. */ +/*@{*/ +/** + \page storage How pixel data are stored with CImg? + + First, CImg are *very* basic structures, which means that there are no memory tricks, weird memory alignments or + disk caches used to store pixel data of images. When an image is instanced, all its pixel values are stored in memory at + the same time (yes, you should avoid working with huge images when dealing with CImg, if you have only 64kb of RAM). + + A CImg is basically a 4th-dimensional array (width,height,depth,dim), and its pixel data are stored linearly in a single + memory buffer of general size (width*height*depth*dim). Nothing more, nothing less. The address of this memory buffer can be + retrieved by the function CImg::data(). + As each image value is stored as a type T (T being known by the programmer of course), this pointer is a 'T*', or a 'const T*' if your image is 'const'. + so, 'T *ptr = img.data()' gives you the pointer to the first value of the image 'img'. The overall size of the used memory for one + instance image (in bytes) is then 'width*height*depth*dim*sizeof(T)'. + + Now, the ordering of the pixel values in this buffer follows these rules : + The values are *not* interleaved, and are ordered first along the X,Y,Z and V axis respectively (corresponding to the width,height,depth,dim dimensions), + starting from the upper-left pixel to the bottom-right pixel of the instane image, with a classical scanline run. + + So, a color image with dim=3 and depth=1, will be stored in memory as : + + R1R2R3R4R5R6......G1G2G3G4G5G6.......B1B2B3B4B5B6.... (i.e following a 'planar' structure) + + and *not* as R1G1B1R2G2B2R3G3B3... (interleaved channels), + where R1 = img(0,0,0,0) is the first upper-left pixel of the red component of the image, + R2 is img(1,0,0,0), G1 = img(0,0,0,1), G2 = img(1,0,0,1), B1 = img(0,0,0,2), and so on... + + Another example, a (1x5x1x1) CImg (column vector A) will be stored as : A1A2A3A4A5 + where A1 = img(0,0), A2 = img(0,1), ... , A5 = img(0,4). + + As you see, it is *very* simple and intuitive : no interleaving, no padding, just simple. + This is cool not only because it is simple, but this has in fact a number of interesting properties. For instance, a 2D color image + is stored in memory exactly as a 3D scalar image having a depth=3, meaning that when you are dealing with 2D color images, you can write 'img(x,y,k)' + instead of 'img(x,y,0,k)' to access the kth channel of the (x,y) pixel. More generally, if you have one dimension that is 1 in + your image, you can just skip it in the call to the operator(). Similarly, values of a column vector stored as an image with + width=depth=spectrum=1 can be accessed by 'img(y)' instead of 'img(0,y)'. This is very convenient. + + Another cool thing is that it allows you to work easily with 'shared' images. A shared image is a CImg instance that shares + its memory with another one (the 'base' image). Destroying a shared image does nothing in fact. Shared images is a convenient + way of modifying only *portions* (consecutive in memory) of an image. For instance, if 'img' is a 2D color image, you can write : + + img.get_shared_channel(0).blur(2); + img.get_shared_channels(1,2).mirror('x'); + + which just blur the red channel of the image, and mirror the two others along the X-axis. + This is possible since channels of an image are not interleaved but are stored as different consecutive planes in memory, so you see that constructing a shared image is possible (and trivial). + +**/ +/*@}*/ + +/*----------------------------------- + + Files IO + + -------------------------------------*/ + +/** \addtogroup cimg_files_io Files IO in CImg. */ +/*@{*/ +/** + \page io Files IO in CImg. + + The %CImg Library can NATIVELY handle the following file formats : + - RAW : consists in a very simple header (in ascii), then the image data. + - ASC (Ascii) + - HDR (Analyze 7.5) + - INR (Inrimage) + - PPM/PGM (Portable Pixmap) + - BMP (uncompressed) + - PAN (Pandore-5) + - DLM (Matlab ASCII) + + If ImageMagick is installed, The %CImg Library can save image in formats handled by ImageMagick : JPG, GIF, PNG, TIF,... + +**/ +/*@}*/ + +/*----------------------------------- + + Retrieving command line arguments + + -------------------------------------*/ + +/** \addtogroup cimg_options Retrieving Command Line Arguments. */ +/*@{*/ +/** + \page options Retrieving Command Line Arguments. + + The CImg library offers facilities to retrieve command line arguments in a console-based + program, as it is a commonly needed operation. + Three macros \c cimg_usage(), \c cimg_help() and \c cimg_option() are defined for this purpose. + Using these macros allows to easily retrieve options values from the command line. + Invoking the compiled executable with the option \c -h or \c --help will + automatically display the program usage, followed by the list of requested options. + + \section so1 The cimg_usage() macro + + The macro \c cimg_usage(usage) may be used to describe the program goal and usage. + It is generally inserted one time after the int main(int argc,char **argv) definition. + + \param usage : A string describing the program goal and usage. + \pre The function where \c cimg_usage() is used must have correctly defined \c argc and \c argv variables. + + \section so1_5 The cimg_help() macro + + The macro \c cimg_help(str) will display the string \c str only if the \c -help or \c --help option + are invoked when running the programm. + + \section so2 The cimg_option() macro + + The macro \c cimg_option(name,default,usage) may be used to retrieve an option value from the command line. + + \param name : The name of the option to be retrieved from the command line. + \param default : The default value returned by the macro if no options \p name has been specified when running the program. + \param usage : A brief explanation of the option. If \c usage==0, the option won't appear on the option list + when invoking the executable with options \c -h or \c --help (hidden option). + + \return \c cimg_option() returns an object that has the \e same \e type as the default value \c default. + The return value is equal to the one specified on the command line. If no such option have been specified, + the return value is equal to the default value \c default. + Warning, this can be confusing in some situations (look at the end of the next section). + \pre The function where \c cimg_option() is used must have correctly defined \c argc and \c argv variables. + + \section so3 Example of use + + The code below uses the macros \c cimg_usage() and \c cimg_option(). + It loads an image, smoothes it an quantifies it with a specified number of values. + \code + #include "CImg.h" + using namespace cimg_library; + int main(int argc,char **argv) { + cimg_usage("Retrieve command line arguments"); + const char* filename = cimg_option("-i","image.gif","Input image file"); + const char* output = cimg_option("-o",(char*)0,"Output image file"); + const double sigma = cimg_option("-s",1.0,"Standard variation of the gaussian smoothing"); + const int nblevels = cimg_option("-n",16,"Number of quantification levels"); + const bool hidden = cimg_option("-hidden",false,0); // This is a hidden option + + CImg img(filename); + img.blur(sigma).quantize(nblevels); + if (output) img.save(output); else img.display("Output image"); + if (hidden) std::fprintf(stderr,"You found me !\n"); + return 0; + } + \endcode + + Invoking the corresponding executable with test -h -hidden -n 20 -i foo.jpg will display : + \verbatim + ./test -h -hidden -n 20 -i foo.jpg + + test : Retrieve command line arguments (Oct 16 2004, 12:34:26) + + -i = foo.jpg : Input image file + -o = 0 : Output image file + -s = 1 : Standard variation of the gaussian smoothing + -n = 20 : Number of quantification levels + + You found me ! +\endverbatim + + \warning As the type of object returned by the macro \c cimg_option(option,default,usage) + is defined by the type of \c default, undesired casts may appear when writting code such as : + \code + const double sigma = cimg_option("-val",0,"A floating point value"); + \endcode + In this case, \c sigma will always be equal to an integer (since the default value \c 0 is an integer). + When passing a float value on the command line, a \e float \e to \e integer cast is then done, + truncating the given parameter to an integer value (this is surely not a desired behavior). + You must specify 0.0 as the default value in this case. + + \section so4 How to learn more about command line options ? + You should take a look at the examples examples/gmic.cpp provided in the %CImg Library package. + This is a command line based image converter which intensively uses the \c cimg_option() and \c cimg_usage() + macros to retrieve command line parameters. +**/ +/*@}*/ diff --git a/html/CImg_flyer.svg b/html/CImg_flyer.svg new file mode 100644 index 000000000..a37aa8e01 --- /dev/null +++ b/html/CImg_flyer.svg @@ -0,0 +1,2165 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Usefulness + + + Simplicity + + + Genericity + + + Extensibility + + + Freedom + + + Portability + + + + + + + + + It provides C++ classes to process and visualizegeneric images easily. A single header file must be included in your own sources, defining only four new classes. It handles up to 4-D datasets (multispectral volumetric images) with template pixel types. It can use external libraries and user-defined plug-ins to extend its capabilities. Multiple architectures are supported (Unix, Windows, MacOSX, *BSD,...) It is an open-source project which can be used in commercial applications. + + http://cimg.eu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/html/CImg_reference_chinese.pdf b/html/CImg_reference_chinese.pdf new file mode 100644 index 000000000..f62f67930 Binary files /dev/null and b/html/CImg_reference_chinese.pdf differ diff --git a/html/download.html b/html/download.html new file mode 100644 index 000000000..132ad18d5 --- /dev/null +++ b/html/download.html @@ -0,0 +1,63 @@ + + + + + + + The CImg Library - C++ Template Image Processing Toolkit - Download + + + + + + + + + +

+ + + + +

Download

+ +

+ You have different ways to get the Library: +

+ + + + + + +
+ Standard Package
+ The Library is mainly provided as + + .zip package + which is platform-independent. + It contains all the required files, as well as various examples (which must be compiled), + illustrating the use of the library functions and classes.
+
+ Sources Repository
+ You may be also more adventurous and try the current development version with git. + This ensures you will get the latest code available, and will ease the + updates as well. To do this, just + type the command : + + in your favorite console. Nevertheless, you have to know that some code in the source repository + is under development and may be experimental, so always test the latest stable archive before complaining ! +
+ +
+ + + diff --git a/html/favicon.ico b/html/favicon.ico new file mode 100644 index 000000000..f6752b6e6 Binary files /dev/null and b/html/favicon.ico differ diff --git a/html/favicon.png b/html/favicon.png new file mode 100644 index 000000000..b69bb8691 Binary files /dev/null and b/html/favicon.png differ diff --git a/html/footer.html b/html/footer.html new file mode 100644 index 000000000..3b40df1f2 --- /dev/null +++ b/html/footer.html @@ -0,0 +1,27 @@ + + + + + + The CImg Library - C++ Template Image Processing Toolkit + + +
+

+ Copyrights (C) From october 2004, David Tschumperlé - GREYC UMR CNRS 6072, Image team.
+ Copyrights (C) January->September 2004, David Tschumperlé.
+ Copyrights (C) 2000->2003, David Tschumperlé - INRIA Sophia-Antipolis. Odyssée group.
+

+
+ + + + + + + + diff --git a/html/footer_doxygen.html b/html/footer_doxygen.html new file mode 100644 index 000000000..fd313f1c7 --- /dev/null +++ b/html/footer_doxygen.html @@ -0,0 +1,22 @@ + +
+ +
+

+ Copyrights (C) From october 2004, David Tschumperlé - GREYC UMR CNRS 6072, Image team.
+ Copyrights (C) January->September 2004, David Tschumperlé.
+ Copyrights (C) 2000->2003, David Tschumperlé - INRIA Sophia-Antipolis. Odyssée group.
+

+
+ + + + + + + + diff --git a/html/header.html b/html/header.html new file mode 100644 index 000000000..43e625dcb --- /dev/null +++ b/html/header.html @@ -0,0 +1,68 @@ + + + + The CImg Library - C++ Template Image Processing Toolkit + + + + + + + + + + + + + + + + +
+ Logo +

+ Latest stable version: 2.9.6        Current pre-release: 2.9.7 +

+ +
+ + + +
+
+ +
+ + diff --git a/html/header_doxygen.html b/html/header_doxygen.html new file mode 100644 index 000000000..6737ed90c --- /dev/null +++ b/html/header_doxygen.html @@ -0,0 +1,69 @@ + + + + The CImg Library - C++ Template Image Processing Toolkit - Reference Documentation + + + + + + + + + + + + + + + + +
+ Logo +

+ Latest stable version: 2.9.6        Current pre-release: 2.9.7 +

+ +
+ + + +
+
+ +

Reference

diff --git a/html/highslide.js b/html/highslide.js new file mode 100644 index 000000000..f1d645b29 --- /dev/null +++ b/html/highslide.js @@ -0,0 +1,1891 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if (!hs) { var hs = { +// Language strings +lang : { + cssDirection: 'ltr', + loadingText : 'Loading...', + loadingTitle : 'Click to cancel', + focusTitle : 'Click to bring to front', + fullExpandTitle : 'Expand to actual size (f)', + creditsText : 'Powered by Highslide JS', + creditsTitle : 'Go to the Highslide JS homepage', + restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' +}, +// See http://highslide.com/ref for examples of settings +graphicsDir : 'highslide/graphics/', +expandCursor : 'zoomin.cur', // null disables +restoreCursor : 'zoomout.cur', // null disables +expandDuration : 250, // milliseconds +restoreDuration : 250, +marginLeft : 15, +marginRight : 15, +marginTop : 15, +marginBottom : 15, +zIndexCounter : 1001, // adjust to other absolutely positioned elements +loadingOpacity : 0.75, +allowMultipleInstances: true, +numberOfImagesToPreload : 5, +outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only +outlineStartOffset : 3, // ends at 10 +padToMinWidth : false, // pad the popup width to make room for wide caption +fullExpandPosition : 'bottom right', +fullExpandOpacity : 1, +showCredits : true, // you can set this to false if you want +creditsHref : 'http://highslide.com/', +creditsTarget : '_self', +enableKeyListener : true, +openerTagNames : ['a'], // Add more to allow slideshow indexing + +dragByHeading: true, +minWidth: 200, +minHeight: 200, +allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight +outlineType : 'drop-shadow', // set null to disable outlines +// END OF YOUR SETTINGS + + +// declare internal properties +preloadTheseImages : [], +continuePreloading: true, +expanders : [], +overrides : [ + 'allowSizeReduction', + 'useBox', + 'outlineType', + 'outlineWhileAnimating', + 'captionId', + 'captionText', + 'captionEval', + 'captionOverlay', + 'headingId', + 'headingText', + 'headingEval', + 'headingOverlay', + 'creditsPosition', + 'dragByHeading', + + 'width', + 'height', + + 'wrapperClassName', + 'minWidth', + 'minHeight', + 'maxWidth', + 'maxHeight', + 'pageOrigin', + 'slideshowGroup', + 'easing', + 'easingClose', + 'fadeInOut', + 'src' +], +overlays : [], +idCounter : 0, +oPos : { + x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], + y: ['above', 'top', 'middle', 'bottom', 'below'] +}, +mouse: {}, +headingOverlay: {}, +captionOverlay: {}, +timers : [], + +pendingOutlines : {}, +clones : {}, +onReady: [], +uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : + parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), +ie : (document.all && !window.opera), +//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant? +safari : /Safari/.test(navigator.userAgent), +geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), + +$ : function (id) { + if (id) return document.getElementById(id); +}, + +push : function (arr, val) { + arr[arr.length] = val; +}, + +createElement : function (tag, attribs, styles, parent, nopad) { + var el = document.createElement(tag); + if (attribs) hs.extend(el, attribs); + if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); + if (styles) hs.setStyles(el, styles); + if (parent) parent.appendChild(el); + return el; +}, + +extend : function (el, attribs) { + for (var x in attribs) el[x] = attribs[x]; + return el; +}, + +setStyles : function (el, styles) { + for (var x in styles) { + if (hs.ieLt9 && x == 'opacity') { + if (styles[x] > 0.99) el.style.removeAttribute('filter'); + else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; + } + else el.style[x] = styles[x]; + } +}, +animate: function(el, prop, opt) { + var start, + end, + unit; + if (typeof opt != 'object' || opt === null) { + var args = arguments; + opt = { + duration: args[2], + easing: args[3], + complete: args[4] + }; + } + if (typeof opt.duration != 'number') opt.duration = 250; + opt.easing = Math[opt.easing] || Math.easeInQuad; + opt.curAnim = hs.extend({}, prop); + for (var name in prop) { + var e = new hs.fx(el, opt , name ); + + start = parseFloat(hs.css(el, name)) || 0; + end = parseFloat(prop[name]); + unit = name != 'opacity' ? 'px' : ''; + + e.custom( start, end, unit ); + } +}, +css: function(el, prop) { + if (el.style[prop]) { + return el.style[prop]; + } else if (document.defaultView) { + return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); + + } else { + if (prop == 'opacity') prop = 'filter'; + var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; + if (prop == 'filter') + val = val.replace(/alpha\(opacity=([0-9]+)\)/, + function (a, b) { return b / 100 }); + return val === '' ? 1 : val; + } +}, + +getPageSize : function () { + var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' + ? d.documentElement : d.body, + ieLt9 = hs.ie && (hs.uaVersion < 9 || typeof pageXOffset == 'undefined'); + + var width = ieLt9 ? iebody.clientWidth : + (d.documentElement.clientWidth || self.innerWidth), + height = ieLt9 ? iebody.clientHeight : self.innerHeight; + hs.page = { + width: width, + height: height, + scrollLeft: ieLt9 ? iebody.scrollLeft : pageXOffset, + scrollTop: ieLt9 ? iebody.scrollTop : pageYOffset + }; + return hs.page; +}, + +getPosition : function(el) { + var p = { x: el.offsetLeft, y: el.offsetTop }; + while (el.offsetParent) { + el = el.offsetParent; + p.x += el.offsetLeft; + p.y += el.offsetTop; + if (el != document.body && el != document.documentElement) { + p.x -= el.scrollLeft; + p.y -= el.scrollTop; + } + } + return p; +}, + +expand : function(a, params, custom, type) { + if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); + if (typeof a.getParams == 'function') return params; + try { + new hs.Expander(a, params, custom); + return false; + } catch (e) { return true; } +}, + + +focusTopmost : function() { + var topZ = 0, + topmostKey = -1, + expanders = hs.expanders, + exp, + zIndex; + for (var i = 0; i < expanders.length; i++) { + exp = expanders[i]; + if (exp) { + zIndex = exp.wrapper.style.zIndex; + if (zIndex && zIndex > topZ) { + topZ = zIndex; + topmostKey = i; + } + } + } + if (topmostKey == -1) hs.focusKey = -1; + else expanders[topmostKey].focus(); +}, + +getParam : function (a, param) { + a.getParams = a.onclick; + var p = a.getParams ? a.getParams() : null; + a.getParams = null; + + return (p && typeof p[param] != 'undefined') ? p[param] : + (typeof hs[param] != 'undefined' ? hs[param] : null); +}, + +getSrc : function (a) { + var src = hs.getParam(a, 'src'); + if (src) return src; + return a.href; +}, + +getNode : function (id) { + var node = hs.$(id), clone = hs.clones[id], a = {}; + if (!node && !clone) return null; + if (!clone) { + clone = node.cloneNode(true); + clone.id = ''; + hs.clones[id] = clone; + return node; + } else { + return clone.cloneNode(true); + } +}, + +discardElement : function(d) { + if (d) hs.garbageBin.appendChild(d); + hs.garbageBin.innerHTML = ''; +}, +transit : function (adj, exp) { + var last = exp || hs.getExpander(); + exp = last; + if (hs.upcoming) return false; + else hs.last = last; + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + try { + hs.upcoming = adj; + adj.onclick(); + } catch (e){ + hs.last = hs.upcoming = null; + } + try { + exp.close(); + } catch (e) {} + return false; +}, + +previousOrNext : function (el, op) { + var exp = hs.getExpander(el); + if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp); + else return false; +}, + +previous : function (el) { + return hs.previousOrNext(el, -1); +}, + +next : function (el) { + return hs.previousOrNext(el, 1); +}, + +keyHandler : function(e) { + if (!e) e = window.event; + if (!e.target) e.target = e.srcElement; // ie + if (typeof e.target.form != 'undefined') return true; // form element has focus + var exp = hs.getExpander(); + + var op = null; + switch (e.keyCode) { + case 70: // f + if (exp) exp.doFullExpand(); + return true; + case 32: // Space + case 34: // Page Down + case 39: // Arrow right + case 40: // Arrow down + op = 1; + break; + case 8: // Backspace + case 33: // Page Up + case 37: // Arrow left + case 38: // Arrow up + op = -1; + break; + case 27: // Escape + case 13: // Enter + op = 0; + } + if (op !== null) {hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + if (!hs.enableKeyListener) return true; + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + if (exp) { + if (op == 0) { + exp.close(); + } else { + hs.previousOrNext(exp.key, op); + } + return false; + } + } + return true; +}, + + +registerOverlay : function (overlay) { + hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); +}, + + +getWrapperKey : function (element, expOnly) { + var el, re = /^highslide-wrapper-([0-9]+)$/; + // 1. look in open expanders + el = element; + while (el.parentNode) { + if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); + el = el.parentNode; + } + // 2. look in thumbnail + if (!expOnly) { + el = element; + while (el.parentNode) { + if (el.tagName && hs.isHsAnchor(el)) { + for (var key = 0; key < hs.expanders.length; key++) { + var exp = hs.expanders[key]; + if (exp && exp.a == el) return key; + } + } + el = el.parentNode; + } + } + return null; +}, + +getExpander : function (el, expOnly) { + if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null; + if (typeof el == 'number') return hs.expanders[el] || null; + if (typeof el == 'string') el = hs.$(el); + return hs.expanders[hs.getWrapperKey(el, expOnly)] || null; +}, + +isHsAnchor : function (a) { + return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/)); +}, + +reOrder : function () { + for (var i = 0; i < hs.expanders.length; i++) + if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost(); +}, + +mouseClickHandler : function(e) +{ + if (!e) e = window.event; + if (e.button > 1) return true; + if (!e.target) e.target = e.srcElement; + + var el = e.target; + while (el.parentNode + && !(/highslide-(image|move|html|resize)/.test(el.className))) + { + el = el.parentNode; + } + var exp = hs.getExpander(el); + if (exp && (exp.isClosing || !exp.isExpanded)) return true; + + if (exp && e.type == 'mousedown') { + if (e.target.form) return true; + var match = el.className.match(/highslide-(image|move|resize)/); + if (match) { + hs.dragArgs = { + exp: exp , + type: match[1], + left: exp.x.pos, + width: exp.x.size, + top: exp.y.pos, + height: exp.y.size, + clickX: e.clientX, + clickY: e.clientY + }; + + + hs.addEventListener(document, 'mousemove', hs.dragHandler); + if (e.preventDefault) e.preventDefault(); // FF + + if (/highslide-(image|html)-blur/.test(exp.content.className)) { + exp.focus(); + hs.hasFocused = true; + } + return false; + } + } else if (e.type == 'mouseup') { + + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + if (hs.dragArgs) { + if (hs.styleRestoreCursor && hs.dragArgs.type == 'image') + hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor; + var hasDragged = hs.dragArgs.hasDragged; + + if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) { + exp.close(); + } + else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) { + hs.dragArgs.exp.doShowHide('hidden'); + } + hs.hasFocused = false; + hs.dragArgs = null; + + } else if (/highslide-image-blur/.test(el.className)) { + el.style.cursor = hs.styleRestoreCursor; + } + } + return false; +}, + +dragHandler : function(e) +{ + if (!hs.dragArgs) return true; + if (!e) e = window.event; + var a = hs.dragArgs, exp = a.exp; + + a.dX = e.clientX - a.clickX; + a.dY = e.clientY - a.clickY; + + var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); + if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) + || (distance > (hs.dragSensitivity || 5)); + + if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { + + if (a.type == 'resize') exp.resize(a); + else { + exp.moveTo(a.left + a.dX, a.top + a.dY); + if (a.type == 'image') exp.content.style.cursor = 'move'; + } + } + return false; +}, + +wrapperMouseHandler : function (e) { + try { + if (!e) e = window.event; + var over = /mouseover/i.test(e.type); + if (!e.target) e.target = e.srcElement; // ie + if (!e.relatedTarget) e.relatedTarget = + over ? e.fromElement : e.toElement; // ie + var exp = hs.getExpander(e.target); + if (!exp.isExpanded) return; + if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp + || hs.dragArgs) return; + for (var i = 0; i < exp.overlays.length; i++) (function() { + var o = hs.$('hsId'+ exp.overlays[i]); + if (o && o.hideOnMouseOut) { + if (over) hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur); + } + })(); + } catch (e) {} +}, +addEventListener : function (el, event, func) { + if (el == document && event == 'ready') { + hs.push(hs.onReady, func); + } + try { + el.addEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + el.attachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = func; + } + } +}, + +removeEventListener : function (el, event, func) { + try { + el.removeEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = null; + } + } +}, + +preloadFullImage : function (i) { + if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') { + var img = document.createElement('img'); + img.onload = function() { + img = null; + hs.preloadFullImage(i + 1); + }; + img.src = hs.preloadTheseImages[i]; + } +}, +preloadImages : function (number) { + if (number && typeof number != 'object') hs.numberOfImagesToPreload = number; + + var arr = hs.getAnchors(); + for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) { + hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i])); + } + + // preload outlines + if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} ); + else + + hs.preloadFullImage(0); + + // preload cursor + if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor }); +}, + + +init : function () { + if (!hs.container) { + + hs.ieLt7 = hs.ie && hs.uaVersion < 7; + hs.ieLt9 = hs.ie && hs.uaVersion < 9; + + hs.getPageSize(); + for (var x in hs.langDefaults) { + if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x]; + else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined') + hs.lang[x] = hs.langDefaults[x]; + } + + hs.container = hs.createElement('div', { + className: 'highslide-container' + }, { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + zIndex: hs.zIndexCounter, + direction: 'ltr' + }, + document.body, + true + ); + hs.loading = hs.createElement('a', { + className: 'highslide-loading', + title: hs.lang.loadingTitle, + innerHTML: hs.lang.loadingText, + href: 'javascript:;' + }, { + position: 'absolute', + top: '-9999px', + opacity: hs.loadingOpacity, + zIndex: 1 + }, hs.container + ); + hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container); + + // http://www.robertpenner.com/easing/ + Math.linearTween = function (t, b, c, d) { + return c*t/d + b; + }; + Math.easeInQuad = function (t, b, c, d) { + return c*(t/=d)*t + b; + }; + + hs.hideSelects = hs.ieLt7; + hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE' + || (hs.ieLt7 && hs.uaVersion < 5.5)); + } +}, +ready : function() { + if (hs.isReady) return; + hs.isReady = true; + for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i](); +}, + +updateAnchors : function() { + var el, els, all = [], images = [],groups = {}, re; + + for (var i = 0; i < hs.openerTagNames.length; i++) { + els = document.getElementsByTagName(hs.openerTagNames[i]); + for (var j = 0; j < els.length; j++) { + el = els[j]; + re = hs.isHsAnchor(el); + if (re) { + hs.push(all, el); + if (re[0] == 'hs.expand') hs.push(images, el); + var g = hs.getParam(el, 'slideshowGroup') || 'none'; + if (!groups[g]) groups[g] = []; + hs.push(groups[g], el); + } + } + } + hs.anchors = { all: all, groups: groups, images: images }; + return hs.anchors; + +}, + +getAnchors : function() { + return hs.anchors || hs.updateAnchors(); +}, + + +close : function(el) { + var exp = hs.getExpander(el); + if (exp) exp.close(); + return false; +} +}; // end hs object +hs.fx = function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if (!options.orig) options.orig = {}; +}; +hs.fx.prototype = { + update: function(){ + (hs.fx.step[this.prop] || hs.fx.step._default)(this); + + if (this.options.step) + this.options.step.call(this.elem, this.now, this); + + }, + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit;// || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + if ( t() && hs.timers.push(t) == 1 ) { + hs.timerId = setInterval(function(){ + var timers = hs.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval(hs.timerId); + } + }, 13); + } + }, + step: function(gotoEnd){ + var t = (new Date()).getTime(); + if ( gotoEnd || t >= this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if (this.options.complete) this.options.complete.call(this.elem); + } + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + this.pos = this.options.easing(n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + this.update(); + } + return true; + } + +}; + +hs.extend( hs.fx, { + step: { + + opacity: function(fx){ + hs.setStyles(fx.elem, { opacity: fx.now }); + }, + + _default: function(fx){ + try { + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; + } catch (e) {} + } + } +}); + +hs.Outline = function (outlineType, onLoad) { + this.onLoad = onLoad; + this.outlineType = outlineType; + var v = hs.uaVersion, tr; + + this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7; + if (!outlineType) { + if (onLoad) onLoad(); + return; + } + + hs.init(); + this.table = hs.createElement( + 'table', { + cellSpacing: 0 + }, { + visibility: 'hidden', + position: 'absolute', + borderCollapse: 'collapse', + width: 0 + }, + hs.container, + true + ); + var tbody = hs.createElement('tbody', null, null, this.table, 1); + + this.td = []; + for (var i = 0; i <= 8; i++) { + if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true); + this.td[i] = hs.createElement('td', null, null, tr, true); + var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' }; + hs.setStyles(this.td[i], style); + } + this.td[4].className = outlineType +' highslide-outline'; + + this.preloadGraphic(); +}; + +hs.Outline.prototype = { +preloadGraphic : function () { + var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png"; + + var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null; + this.graphic = hs.createElement('img', null, { position: 'absolute', + top: '-9999px' }, appendTo, true); // for onload trigger + + var pThis = this; + this.graphic.onload = function() { pThis.onGraphicLoad(); }; + + this.graphic.src = src; +}, + +onGraphicLoad : function () { + var o = this.offset = this.graphic.width / 4, + pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]], + dim = { height: (2*o) +'px', width: (2*o) +'px' }; + for (var i = 0; i <= 8; i++) { + if (pos[i]) { + if (this.hasAlphaImageLoader) { + var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px'; + var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true); + hs.createElement ('div', null, { + filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", + position: 'absolute', + width: w, + height: this.graphic.height +'px', + left: (pos[i][0]*o)+'px', + top: (pos[i][1]*o)+'px' + }, + div, + true); + } else { + hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'}); + } + + if (window.opera && (i == 3 || i ==5)) + hs.createElement('div', null, dim, this.td[i], true); + + hs.setStyles (this.td[i], dim); + } + } + this.graphic = null; + if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy(); + hs.pendingOutlines[this.outlineType] = this; + if (this.onLoad) this.onLoad(); +}, + +setPosition : function (pos, offset, vis, dur, easing) { + var exp = this.exp, + stl = exp.wrapper.style, + offset = offset || 0, + pos = pos || { + x: exp.x.pos + offset, + y: exp.y.pos + offset, + w: exp.x.get('wsize') - 2 * offset, + h: exp.y.get('wsize') - 2 * offset + }; + if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset) + ? 'visible' : 'hidden'; + hs.setStyles(this.table, { + left: (pos.x - this.offset) +'px', + top: (pos.y - this.offset) +'px', + width: (pos.w + 2 * this.offset) +'px' + }); + + pos.w -= 2 * this.offset; + pos.h -= 2 * this.offset; + hs.setStyles (this.td[4], { + width: pos.w >= 0 ? pos.w +'px' : 0, + height: pos.h >= 0 ? pos.h +'px' : 0 + }); + if (this.hasAlphaImageLoader) this.td[3].style.height + = this.td[5].style.height = this.td[4].style.height; + +}, + +destroy : function(hide) { + if (hide) this.table.style.visibility = 'hidden'; + else hs.discardElement(this.table); +} +}; + +hs.Dimension = function(exp, dim) { + this.exp = exp; + this.dim = dim; + this.ucwh = dim == 'x' ? 'Width' : 'Height'; + this.wh = this.ucwh.toLowerCase(); + this.uclt = dim == 'x' ? 'Left' : 'Top'; + this.lt = this.uclt.toLowerCase(); + this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; + this.rb = this.ucrb.toLowerCase(); + this.p1 = this.p2 = 0; +}; +hs.Dimension.prototype = { +get : function(key) { + switch (key) { + case 'loadingPos': + return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; + case 'wsize': + return this.size + 2 * this.cb + this.p1 + this.p2; + case 'fitsize': + return this.clientSize - this.marginMin - this.marginMax; + case 'maxsize': + return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; + case 'opos': + return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); + case 'osize': + return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); + case 'imgPad': + return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; + + } +}, +calcBorders: function() { + // correct for borders + this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; + + this.marginMax = hs['margin'+ this.ucrb]; +}, +calcThumb: function() { + this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : + this.exp.el['offset'+ this.ucwh]; + this.tpos = this.exp.tpos[this.dim]; + this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; + if (this.tpos == 0 || this.tpos == -1) { + this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt]; + }; +}, +calcExpanded: function() { + var exp = this.exp; + this.justify = 'auto'; + + + // size and position + this.pos = this.tpos - this.cb + this.tb; + + if (this.maxHeight && this.dim == 'x') + exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full); + + this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); + this.minSize = exp.allowSizeReduction ? + Math.min(exp['min'+ this.ucwh], this.full) :this.full; + if (exp.isImage && exp.useBox) { + this.size = exp[this.wh]; + this.imgSize = this.full; + } + if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth; + this.marginMin = hs['margin'+ this.uclt]; + this.scroll = hs.page['scroll'+ this.uclt]; + this.clientSize = hs.page[this.wh]; +}, +setSize: function(i) { + var exp = this.exp; + if (exp.isImage && (exp.useBox || hs.padToMinWidth)) { + this.imgSize = i; + this.size = Math.max(this.size, this.imgSize); + exp.content.style[this.lt] = this.get('imgPad')+'px'; + } else + this.size = i; + + exp.content.style[this.wh] = i +'px'; + exp.wrapper.style[this.wh] = this.get('wsize') +'px'; + if (exp.outline) exp.outline.setPosition(); + if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); +}, +setPos: function(i) { + this.pos = i; + this.exp.wrapper.style[this.lt] = i +'px'; + + if (this.exp.outline) this.exp.outline.setPosition(); + +} +}; + +hs.Expander = function(a, params, custom, contentType) { + if (document.readyState && hs.ie && !hs.isReady) { + hs.addEventListener(document, 'ready', function() { + new hs.Expander(a, params, custom, contentType); + }); + return; + } + this.a = a; + this.custom = custom; + this.contentType = contentType || 'image'; + this.isImage = !this.isHtml; + + hs.continuePreloading = false; + this.overlays = []; + hs.init(); + var key = this.key = hs.expanders.length; + // override inline parameters + for (var i = 0; i < hs.overrides.length; i++) { + var name = hs.overrides[i]; + this[name] = params && typeof params[name] != 'undefined' ? + params[name] : hs[name]; + } + if (!this.src) this.src = a.href; + + // get thumb + var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a; + el = this.thumb = el.getElementsByTagName('img')[0] || el; + this.thumbsUserSetId = el.id || a.id; + + // check if already open + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].a == a) { + hs.expanders[i].focus(); + return false; + } + } + + // cancel other + if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) { + hs.expanders[i].cancelLoading(); + } + } + hs.expanders[key] = this; + if (!hs.allowMultipleInstances && !hs.upcoming) { + if (hs.expanders[key-1]) hs.expanders[key-1].close(); + if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey]) + hs.expanders[hs.focusKey].close(); + } + + // initiate metrics + this.el = el; + this.tpos = this.pageOrigin || hs.getPosition(el); + hs.getPageSize(); + var x = this.x = new hs.Dimension(this, 'x'); + x.calcThumb(); + var y = this.y = new hs.Dimension(this, 'y'); + y.calcThumb(); + this.wrapper = hs.createElement( + 'div', { + id: 'highslide-wrapper-'+ this.key, + className: 'highslide-wrapper '+ this.wrapperClassName + }, { + visibility: 'hidden', + position: 'absolute', + zIndex: hs.zIndexCounter += 2 + }, null, true ); + + this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler; + if (this.contentType == 'image' && this.outlineWhileAnimating == 2) + this.outlineWhileAnimating = 0; + + // get the outline + if (!this.outlineType) { + this[this.contentType +'Create'](); + + } else if (hs.pendingOutlines[this.outlineType]) { + this.connectOutline(); + this[this.contentType +'Create'](); + + } else { + this.showLoading(); + var exp = this; + new hs.Outline(this.outlineType, + function () { + exp.connectOutline(); + exp[exp.contentType +'Create'](); + } + ); + } + return true; +}; + +hs.Expander.prototype = { +error : function(e) { + if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message); + else window.location.href = this.src; +}, + +connectOutline : function() { + var outline = this.outline = hs.pendingOutlines[this.outlineType]; + outline.exp = this; + outline.table.style.zIndex = this.wrapper.style.zIndex - 1; + hs.pendingOutlines[this.outlineType] = null; +}, + +showLoading : function() { + if (this.onLoadStarted || this.loading) return; + + this.loading = hs.loading; + var exp = this; + this.loading.onclick = function() { + exp.cancelLoading(); + }; + var exp = this, + l = this.x.get('loadingPos') +'px', + t = this.y.get('loadingPos') +'px'; + setTimeout(function () { + if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })} + , 100); +}, + +imageCreate : function() { + var exp = this; + + var img = document.createElement('img'); + this.content = img; + img.onload = function () { + if (hs.expanders[exp.key]) exp.contentLoaded(); + }; + if (hs.blockRightClick) img.oncontextmenu = function() { return false; }; + img.className = 'highslide-image'; + hs.setStyles(img, { + visibility: 'hidden', + display: 'block', + position: 'absolute', + maxWidth: '9999px', + zIndex: 3 + }); + img.title = hs.lang.restoreTitle; + if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img); + if (hs.ie && hs.flushImgSize) img.src = null; + img.src = this.src; + + this.showLoading(); +}, + +contentLoaded : function() { + try { + if (!this.content) return; + this.content.onload = null; + if (this.onLoadStarted) return; + else this.onLoadStarted = true; + + var x = this.x, y = this.y; + + if (this.loading) { + hs.setStyles(this.loading, { top: '-9999px' }); + this.loading = null; + } + x.full = this.content.width; + y.full = this.content.height; + + hs.setStyles(this.content, { + width: x.t +'px', + height: y.t +'px' + }); + this.wrapper.appendChild(this.content); + hs.container.appendChild(this.wrapper); + + x.calcBorders(); + y.calcBorders(); + + hs.setStyles (this.wrapper, { + left: (x.tpos + x.tb - x.cb) +'px', + top: (y.tpos + x.tb - y.cb) +'px' + }); + this.getOverlays(); + + var ratio = x.full / y.full; + x.calcExpanded(); + this.justify(x); + + y.calcExpanded(); + this.justify(y); + if (this.overlayBox) this.sizeOverlayBox(0, 1); + + + if (this.allowSizeReduction) { + this.correctRatio(ratio); + if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) { + this.createFullExpand(); + if (this.overlays.length == 1) this.sizeOverlayBox(); + } + } + this.show(); + + } catch (e) { + this.error(e); + } +}, + +justify : function (p, moveOnly) { + var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; + + var hasMovedMin = false; + + var allowReduce = p.exp.allowSizeReduction; + p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); + if (p.pos < p.scroll + p.marginMin) { + p.pos = p.scroll + p.marginMin; + hasMovedMin = true; + } + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) { + if (!moveOnly && hasMovedMin && allowReduce) { + p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize')); + } else if (p.get('wsize') < p.get('fitsize')) { + p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize'); + } else { // image larger than viewport + p.pos = p.scroll + p.marginMin; + if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); + } + } + + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + + + + if (p.pos < p.marginMin) { + var tmpMin = p.pos; + p.pos = p.marginMin; + + if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin); + + } +}, + +correctRatio : function(ratio) { + var x = this.x, + y = this.y, + changed = false, + xSize = Math.min(x.full, x.size), + ySize = Math.min(y.full, y.size), + useBox = (this.useBox || hs.padToMinWidth); + + if (xSize / ySize > ratio) { // width greater + xSize = ySize * ratio; + if (xSize < x.minSize) { // below minWidth + xSize = x.minSize; + ySize = xSize / ratio; + } + changed = true; + + } else if (xSize / ySize < ratio) { // height greater + ySize = xSize / ratio; + changed = true; + } + + if (hs.padToMinWidth && x.full < x.minSize) { + x.imgSize = x.full; + y.size = y.imgSize = y.full; + } else if (this.useBox) { + x.imgSize = xSize; + y.imgSize = ySize; + } else { + x.size = xSize; + y.size = ySize; + } + changed = this.fitOverlayBox(this.useBox ? null : ratio, changed); + if (useBox && y.size < y.imgSize) { + y.imgSize = y.size; + x.imgSize = y.size * ratio; + } + if (changed || useBox) { + x.pos = x.tpos - x.cb + x.tb; + x.minSize = x.size; + this.justify(x, true); + + y.pos = y.tpos - y.cb + y.tb; + y.minSize = y.size; + this.justify(y, true); + if (this.overlayBox) this.sizeOverlayBox(); + } + + +}, +fitOverlayBox : function(ratio, changed) { + var x = this.x, y = this.y; + if (this.overlayBox) { + while (y.size > this.minHeight && x.size > this.minWidth + && y.get('wsize') > y.get('fitsize')) { + y.size -= 10; + if (ratio) x.size = y.size * ratio; + this.sizeOverlayBox(0, 1); + changed = true; + } + } + return changed; +}, + +show : function () { + var x = this.x, y = this.y; + this.doShowHide('hidden'); + + // Apply size change + this.changeSize( + 1, { + wrapper: { + width : x.get('wsize'), + height : y.get('wsize'), + left: x.pos, + top: y.pos + }, + content: { + left: x.p1 + x.get('imgPad'), + top: y.p1 + y.get('imgPad'), + width:x.imgSize ||x.size, + height:y.imgSize ||y.size + } + }, + hs.expandDuration + ); +}, + +changeSize : function(up, to, dur) { + + if (this.outline && !this.outlineWhileAnimating) { + if (up) this.outline.setPosition(); + else this.outline.destroy(); + } + + + if (!up) this.destroyOverlays(); + + var exp = this, + x = exp.x, + y = exp.y, + easing = this.easing; + if (!up) easing = this.easingClose || easing; + var after = up ? + function() { + + if (exp.outline) exp.outline.table.style.visibility = "visible"; + setTimeout(function() { + exp.afterExpand(); + }, 50); + } : + function() { + exp.afterClose(); + }; + if (up) hs.setStyles( this.wrapper, { + width: x.t +'px', + height: y.t +'px' + }); + if (this.fadeInOut) { + hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 }); + hs.extend(to.wrapper, { opacity: up }); + } + hs.animate( this.wrapper, to.wrapper, { + duration: dur, + easing: easing, + step: function(val, args) { + if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { + var fac = up ? args.pos : 1 - args.pos; + var pos = { + w: x.t + (x.get('wsize') - x.t) * fac, + h: y.t + (y.get('wsize') - y.t) * fac, + x: x.tpos + (x.pos - x.tpos) * fac, + y: y.tpos + (y.pos - y.tpos) * fac + }; + exp.outline.setPosition(pos, 0, 1); + } + } + }); + hs.animate( this.content, to.content, dur, easing, after); + if (up) { + this.wrapper.style.visibility = 'visible'; + this.content.style.visibility = 'visible'; + this.a.className += ' highslide-active-anchor'; + } +}, + + + + +afterExpand : function() { + this.isExpanded = true; + this.focus(); + if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; + this.prepareNextOutline(); + var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; + this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize') + && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize'); + if (this.overlayBox) this.showOverlays(); + +}, + + +prepareNextOutline : function() { + var key = this.key; + var outlineType = this.outlineType; + new hs.Outline(outlineType, + function () { try { hs.expanders[key].preloadNext(); } catch (e) {} }); +}, + + +preloadNext : function() { + var next = this.getAdjacentAnchor(1); + if (next && next.onclick.toString().match(/hs\.expand/)) + var img = hs.createElement('img', { src: hs.getSrc(next) }); +}, + + +getAdjacentAnchor : function(op) { + var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none']; + return (as && as[current + op]) || null; +}, + +getAnchorIndex : function() { + var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; + if (arr) for (var i = 0; i < arr.length; i++) { + if (arr[i] == this.a) return i; + } + return null; +}, + + +cancelLoading : function() { + hs.discardElement (this.wrapper); + hs.expanders[this.key] = null; + if (this.loading) hs.loading.style.left = '-9999px'; +}, + +writeCredits : function () { + this.credits = hs.createElement('a', { + href: hs.creditsHref, + target: hs.creditsTarget, + className: 'highslide-credits', + innerHTML: hs.lang.creditsText, + title: hs.lang.creditsTitle + }); + this.createOverlay({ + overlayId: this.credits, + position: this.creditsPosition || 'top left' + }); +}, + +getInline : function(types, addOverlay) { + for (var i = 0; i < types.length; i++) { + var type = types[i], s = null; + if (!this[type +'Id'] && this.thumbsUserSetId) + this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId; + if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']); + if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try { + s = eval(this[type +'Eval']); + } catch (e) {} + if (!this[type] && this[type +'Text']) { + s = this[type +'Text']; + } + if (!this[type] && !s) { + this[type] = hs.getNode(this.a['_'+ type + 'Id']); + if (!this[type]) { + var next = this.a.nextSibling; + while (next && !hs.isHsAnchor(next)) { + if ((new RegExp('highslide-'+ type)).test(next.className || null)) { + if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++; + this[type] = hs.getNode(next.id); + break; + } + next = next.nextSibling; + } + } + } + + if (!this[type] && s) this[type] = hs.createElement('div', + { className: 'highslide-'+ type, innerHTML: s } ); + + if (addOverlay && this[type]) { + var o = { position: (type == 'heading') ? 'above' : 'below' }; + for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x]; + o.overlayId = this[type]; + this.createOverlay(o); + } + } +}, + + +// on end move and resize +doShowHide : function(visibility) { + if (hs.hideSelects) this.showHideElements('SELECT', visibility); + if (hs.hideIframes) this.showHideElements('IFRAME', visibility); + if (hs.geckoMac) this.showHideElements('*', visibility); +}, +showHideElements : function (tagName, visibility) { + var els = document.getElementsByTagName(tagName); + var prop = tagName == '*' ? 'overflow' : 'visibility'; + for (var i = 0; i < els.length; i++) { + if (prop == 'visibility' || (document.defaultView.getComputedStyle( + els[i], "").getPropertyValue('overflow') == 'auto' + || els[i].getAttribute('hidden-by') != null)) { + var hiddenBy = els[i].getAttribute('hidden-by'); + if (visibility == 'visible' && hiddenBy) { + hiddenBy = hiddenBy.replace('['+ this.key +']', ''); + els[i].setAttribute('hidden-by', hiddenBy); + if (!hiddenBy) els[i].style[prop] = els[i].origProp; + } else if (visibility == 'hidden') { // hide if behind + var elPos = hs.getPosition(els[i]); + elPos.w = els[i].offsetWidth; + elPos.h = els[i].offsetHeight; + + + var clearsX = (elPos.x + elPos.w < this.x.get('opos') + || elPos.x > this.x.get('opos') + this.x.get('osize')); + var clearsY = (elPos.y + elPos.h < this.y.get('opos') + || elPos.y > this.y.get('opos') + this.y.get('osize')); + var wrapperKey = hs.getWrapperKey(els[i]); + if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image + if (!hiddenBy) { + els[i].setAttribute('hidden-by', '['+ this.key +']'); + els[i].origProp = els[i].style[prop]; + els[i].style[prop] = 'hidden'; + + } else if (hiddenBy.indexOf('['+ this.key +']') == -1) { + els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']'); + } + } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) + && wrapperKey != this.key) { // on move + els[i].setAttribute('hidden-by', ''); + els[i].style[prop] = els[i].origProp || ''; + } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) { + els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', '')); + } + + } + } + } +}, + +focus : function() { + this.wrapper.style.zIndex = hs.zIndexCounter += 2; + // blur others + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && i == hs.focusKey) { + var blurExp = hs.expanders[i]; + blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur'; + blurExp.content.style.cursor = hs.ieLt7 ? 'hand' : 'pointer'; + blurExp.content.title = hs.lang.focusTitle; + } + } + + // focus this + if (this.outline) this.outline.table.style.zIndex + = this.wrapper.style.zIndex - 1; + this.content.className = 'highslide-'+ this.contentType; + this.content.title = hs.lang.restoreTitle; + + if (hs.restoreCursor) { + hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer'; + if (hs.ieLt7 && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand'; + this.content.style.cursor = hs.styleRestoreCursor; + } + + hs.focusKey = this.key; + hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); +}, +moveTo: function(x, y) { + this.x.setPos(x); + this.y.setPos(y); +}, +resize : function (e) { + var w, h, r = e.width / e.height; + w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full)); + if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full; + h = w / r; + if (h < Math.min(this.minHeight, this.y.full)) { + h = Math.min(this.minHeight, this.y.full); + if (this.isImage) w = h * r; + } + this.resizeTo(w, h); +}, +resizeTo: function(w, h) { + this.y.setSize(h); + this.x.setSize(w); + this.wrapper.style.height = this.y.get('wsize') +'px'; +}, + +close : function() { + if (this.isClosing || !this.isExpanded) return; + this.isClosing = true; + + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + + try { + this.content.style.cursor = 'default'; + this.changeSize( + 0, { + wrapper: { + width : this.x.t, + height : this.y.t, + left: this.x.tpos - this.x.cb + this.x.tb, + top: this.y.tpos - this.y.cb + this.y.tb + }, + content: { + left: 0, + top: 0, + width: this.x.t, + height: this.y.t + } + }, hs.restoreDuration + ); + } catch (e) { this.afterClose(); } +}, + +createOverlay : function (o) { + var el = o.overlayId; + if (typeof el == 'string') el = hs.getNode(el); + if (o.html) el = hs.createElement('div', { innerHTML: o.html }); + if (!el || typeof el == 'string') return; + el.style.display = 'block'; + this.genOverlayBox(); + var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto'; + if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px'; + var overlay = hs.createElement( + 'div', { + id: 'hsId'+ hs.idCounter++, + hsId: o.hsId + }, { + position: 'absolute', + visibility: 'hidden', + width: width, + direction: hs.lang.cssDirection || '', + opacity: 0 + },this.overlayBox, + true + ); + + overlay.appendChild(el); + hs.extend(overlay, { + opacity: 1, + offsetX: 0, + offsetY: 0, + dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250 + }); + hs.extend(overlay, o); + + + if (this.gotOverlays) { + this.positionOverlay(overlay); + if (!overlay.hideOnMouseOut || this.mouseIsOver) + hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur); + } + hs.push(this.overlays, hs.idCounter - 1); +}, +positionOverlay : function(overlay) { + var p = overlay.position || 'middle center', + offX = overlay.offsetX, + offY = overlay.offsetY; + if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay); + if (/left$/.test(p)) overlay.style.left = offX +'px'; + + if (/center$/.test(p)) hs.setStyles (overlay, { + left: '50%', + marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px' + }); + + if (/right$/.test(p)) overlay.style.right = - offX +'px'; + + if (/^leftpanel$/.test(p)) { + hs.setStyles(overlay, { + right: '100%', + marginRight: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p1 = overlay.offsetWidth; + + } else if (/^rightpanel$/.test(p)) { + hs.setStyles(overlay, { + left: '100%', + marginLeft: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p2 = overlay.offsetWidth; + } + + if (/^top/.test(p)) overlay.style.top = offY +'px'; + if (/^middle/.test(p)) hs.setStyles (overlay, { + top: '50%', + marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px' + }); + if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px'; + if (/^above$/.test(p)) { + hs.setStyles(overlay, { + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + bottom: '100%', + marginBottom: this.y.cb +'px', + width: 'auto' + }); + this.y.p1 = overlay.offsetHeight; + + } else if (/^below$/.test(p)) { + hs.setStyles(overlay, { + position: 'relative', + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + top: '100%', + marginTop: this.y.cb +'px', + width: 'auto' + }); + this.y.p2 = overlay.offsetHeight; + overlay.style.position = 'absolute'; + } +}, + +getOverlays : function() { + this.getInline(['heading', 'caption'], true); + if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move'; + if (hs.showCredits) this.writeCredits(); + for (var i = 0; i < hs.overlays.length; i++) { + var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup; + if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId) + || (sg && sg === this.slideshowGroup)) { + this.createOverlay(o); + } + } + var os = []; + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (/panel$/.test(o.position)) this.positionOverlay(o); + else hs.push(os, o); + } + for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]); + this.gotOverlays = true; +}, +genOverlayBox : function() { + if (!this.overlayBox) this.overlayBox = hs.createElement ( + 'div', { + className: this.wrapperClassName + }, { + position : 'absolute', + width: (this.x.size || (this.useBox ? this.width : null) + || this.x.full) +'px', + height: (this.y.size || this.y.full) +'px', + visibility : 'hidden', + overflow : 'hidden', + zIndex : hs.ie ? 4 : 'auto' + }, + hs.container, + true + ); +}, +sizeOverlayBox : function(doWrapper, doPanels) { + var overlayBox = this.overlayBox, + x = this.x, + y = this.y; + hs.setStyles( overlayBox, { + width: x.size +'px', + height: y.size +'px' + }); + if (doWrapper || doPanels) { + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat'); + if (o && /^(above|below)$/.test(o.position)) { + if (ie6) { + o.style.width = (overlayBox.offsetWidth + 2 * x.cb + + x.p1 + x.p2) +'px'; + } + y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight; + } + if (o && ie6 && /^(left|right)panel$/.test(o.position)) { + o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px'; + } + } + } + if (doWrapper) { + hs.setStyles(this.content, { + top: y.p1 +'px' + }); + hs.setStyles(overlayBox, { + top: (y.p1 + y.cb) +'px' + }); + } +}, + +showOverlays : function() { + var b = this.overlayBox; + b.className = ''; + hs.setStyles(b, { + top: (this.y.p1 + this.y.cb) +'px', + left: (this.x.p1 + this.x.cb) +'px', + overflow : 'visible' + }); + if (hs.safari) b.style.visibility = 'visible'; + this.wrapper.appendChild (b); + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + o.style.zIndex = o.zIndex || 4; + if (!o.hideOnMouseOut || this.mouseIsOver) { + o.style.visibility = 'visible'; + hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: o.opacity }, o.dur); + } + } +}, + +destroyOverlays : function() { + if (!this.overlays.length) return; + hs.discardElement(this.overlayBox); +}, + + + +createFullExpand : function () { + this.fullExpandLabel = hs.createElement( + 'a', { + href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();', + title: hs.lang.fullExpandTitle, + className: 'highslide-full-expand' + } + ); + + this.createOverlay({ + overlayId: this.fullExpandLabel, + position: hs.fullExpandPosition, + hideOnMouseOut: true, + opacity: hs.fullExpandOpacity + }); +}, + +doFullExpand : function () { + try { + if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel); + + this.focus(); + var xSize = this.x.size, + ySize = this.y.size; + this.resizeTo(this.x.full, this.y.full); + + var xpos = this.x.pos - (this.x.size - xSize) / 2; + if (xpos < hs.marginLeft) xpos = hs.marginLeft; + + var ypos = this.y.pos - (this.y.size - ySize) / 2; + if (ypos < hs.marginTop) ypos = hs.marginTop; + + this.moveTo(xpos, ypos); + this.doShowHide('hidden'); + + } catch (e) { + this.error(e); + } +}, + + +afterClose : function () { + this.a.className = this.a.className.replace('highslide-active-anchor', ''); + + this.doShowHide('visible'); + if (this.outline && this.outlineWhileAnimating) this.outline.destroy(); + + hs.discardElement(this.wrapper); + + hs.expanders[this.key] = null; + hs.reOrder(); +} + +}; +hs.langDefaults = hs.lang; +// history +var HsExpander = hs.Expander; +if (hs.ie && window == window.top) { + (function () { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(arguments.callee, 50); + return; + } + hs.ready(); + })(); +} +hs.addEventListener(document, 'DOMContentLoaded', hs.ready); +hs.addEventListener(window, 'load', hs.ready); + +// set handlers +hs.addEventListener(document, 'ready', function() { + if (hs.expandCursor) { + var style = hs.createElement('style', { type: 'text/css' }, null, + document.getElementsByTagName('HEAD')[0]), + backCompat = document.compatMode == 'BackCompat'; + + + function addRule(sel, dec) { + if (hs.ie && (hs.uaVersion < 9 || backCompat)) { + var last = document.styleSheets[document.styleSheets.length - 1]; + if (typeof(last.addRule) == "object") last.addRule(sel, dec); + } else { + style.appendChild(document.createTextNode(sel + " {" + dec + "}")); + } + } + function fix(prop) { + return 'expression( ( ( ignoreMe = document.documentElement.'+ prop + + ' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );'; + } + if (hs.expandCursor) addRule ('.highslide img', + 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'); + } +}); +hs.addEventListener(window, 'resize', function() { + hs.getPageSize(); +}); +hs.addEventListener(document, 'mousemove', function(e) { + hs.mouse = { x: e.clientX, y: e.clientY }; +}); +hs.addEventListener(document, 'mousedown', hs.mouseClickHandler); +hs.addEventListener(document, 'mouseup', hs.mouseClickHandler); + +hs.addEventListener(document, 'ready', hs.getAnchors); +hs.addEventListener(window, 'load', hs.preloadImages); +} diff --git a/html/highslide/graphics/close.png b/html/highslide/graphics/close.png new file mode 100644 index 000000000..4de4396d4 Binary files /dev/null and b/html/highslide/graphics/close.png differ diff --git a/html/highslide/graphics/closeX.png b/html/highslide/graphics/closeX.png new file mode 100644 index 000000000..cf5d01817 Binary files /dev/null and b/html/highslide/graphics/closeX.png differ diff --git a/html/highslide/graphics/controlbar-black-border.gif b/html/highslide/graphics/controlbar-black-border.gif new file mode 100644 index 000000000..e2403fe83 Binary files /dev/null and b/html/highslide/graphics/controlbar-black-border.gif differ diff --git a/html/highslide/graphics/controlbar-text-buttons.png b/html/highslide/graphics/controlbar-text-buttons.png new file mode 100644 index 000000000..d2f72e0a8 Binary files /dev/null and b/html/highslide/graphics/controlbar-text-buttons.png differ diff --git a/html/highslide/graphics/controlbar-white-small.gif b/html/highslide/graphics/controlbar-white-small.gif new file mode 100644 index 000000000..462fce751 Binary files /dev/null and b/html/highslide/graphics/controlbar-white-small.gif differ diff --git a/html/highslide/graphics/controlbar-white.gif b/html/highslide/graphics/controlbar-white.gif new file mode 100644 index 000000000..1f143f5b8 Binary files /dev/null and b/html/highslide/graphics/controlbar-white.gif differ diff --git a/html/highslide/graphics/controlbar2.gif b/html/highslide/graphics/controlbar2.gif new file mode 100644 index 000000000..39ad65218 Binary files /dev/null and b/html/highslide/graphics/controlbar2.gif differ diff --git a/html/highslide/graphics/controlbar3.gif b/html/highslide/graphics/controlbar3.gif new file mode 100644 index 000000000..3eebb8110 Binary files /dev/null and b/html/highslide/graphics/controlbar3.gif differ diff --git a/html/highslide/graphics/controlbar4-hover.gif b/html/highslide/graphics/controlbar4-hover.gif new file mode 100644 index 000000000..ca08b59c2 Binary files /dev/null and b/html/highslide/graphics/controlbar4-hover.gif differ diff --git a/html/highslide/graphics/controlbar4.gif b/html/highslide/graphics/controlbar4.gif new file mode 100644 index 000000000..7a3ad3442 Binary files /dev/null and b/html/highslide/graphics/controlbar4.gif differ diff --git a/html/highslide/graphics/fullexpand.gif b/html/highslide/graphics/fullexpand.gif new file mode 100644 index 000000000..26d9ed02b Binary files /dev/null and b/html/highslide/graphics/fullexpand.gif differ diff --git a/html/highslide/graphics/geckodimmer.png b/html/highslide/graphics/geckodimmer.png new file mode 100644 index 000000000..309bb2783 Binary files /dev/null and b/html/highslide/graphics/geckodimmer.png differ diff --git a/html/highslide/graphics/icon.gif b/html/highslide/graphics/icon.gif new file mode 100644 index 000000000..b74a073c1 Binary files /dev/null and b/html/highslide/graphics/icon.gif differ diff --git a/html/highslide/graphics/loader.gif b/html/highslide/graphics/loader.gif new file mode 100644 index 000000000..0b31f6f9e Binary files /dev/null and b/html/highslide/graphics/loader.gif differ diff --git a/html/highslide/graphics/loader.white.gif b/html/highslide/graphics/loader.white.gif new file mode 100644 index 000000000..f2a1bc0c6 Binary files /dev/null and b/html/highslide/graphics/loader.white.gif differ diff --git a/html/highslide/graphics/outlines/Outlines.psd b/html/highslide/graphics/outlines/Outlines.psd new file mode 100644 index 000000000..540565151 Binary files /dev/null and b/html/highslide/graphics/outlines/Outlines.psd differ diff --git a/html/highslide/graphics/outlines/beveled.png b/html/highslide/graphics/outlines/beveled.png new file mode 100644 index 000000000..fc428f415 Binary files /dev/null and b/html/highslide/graphics/outlines/beveled.png differ diff --git a/html/highslide/graphics/outlines/drop-shadow.png b/html/highslide/graphics/outlines/drop-shadow.png new file mode 100644 index 000000000..0186c2ee4 Binary files /dev/null and b/html/highslide/graphics/outlines/drop-shadow.png differ diff --git a/html/highslide/graphics/outlines/glossy-dark.png b/html/highslide/graphics/outlines/glossy-dark.png new file mode 100644 index 000000000..3c64c0d41 Binary files /dev/null and b/html/highslide/graphics/outlines/glossy-dark.png differ diff --git a/html/highslide/graphics/outlines/outer-glow.png b/html/highslide/graphics/outlines/outer-glow.png new file mode 100644 index 000000000..288d43fef Binary files /dev/null and b/html/highslide/graphics/outlines/outer-glow.png differ diff --git a/html/highslide/graphics/outlines/rounded-black.png b/html/highslide/graphics/outlines/rounded-black.png new file mode 100644 index 000000000..a77e65d8f Binary files /dev/null and b/html/highslide/graphics/outlines/rounded-black.png differ diff --git a/html/highslide/graphics/outlines/rounded-white.png b/html/highslide/graphics/outlines/rounded-white.png new file mode 100644 index 000000000..0d4b8176f Binary files /dev/null and b/html/highslide/graphics/outlines/rounded-white.png differ diff --git a/html/highslide/graphics/resize.gif b/html/highslide/graphics/resize.gif new file mode 100644 index 000000000..9100de776 Binary files /dev/null and b/html/highslide/graphics/resize.gif differ diff --git a/html/highslide/graphics/scrollarrows.png b/html/highslide/graphics/scrollarrows.png new file mode 100644 index 000000000..b3d55756d Binary files /dev/null and b/html/highslide/graphics/scrollarrows.png differ diff --git a/html/highslide/graphics/zoomin.cur b/html/highslide/graphics/zoomin.cur new file mode 100644 index 000000000..cb7912438 Binary files /dev/null and b/html/highslide/graphics/zoomin.cur differ diff --git a/html/highslide/graphics/zoomout.cur b/html/highslide/graphics/zoomout.cur new file mode 100644 index 000000000..acf619996 Binary files /dev/null and b/html/highslide/graphics/zoomout.cur differ diff --git a/html/highslide/highslide-full.js b/html/highslide/highslide-full.js new file mode 100644 index 000000000..c1a496734 --- /dev/null +++ b/html/highslide/highslide-full.js @@ -0,0 +1,3320 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default +events +unobtrusive +imagemap +slideshow +positioning +transitions +viewport +thumbstrip +inline +ajax +iframe +flash + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if (!hs) { var hs = { +// Language strings +lang : { + cssDirection: 'ltr', + loadingText : 'Loading...', + loadingTitle : 'Click to cancel', + focusTitle : 'Click to bring to front', + fullExpandTitle : 'Expand to actual size (f)', + creditsText : 'Powered by Highslide JS', + creditsTitle : 'Go to the Highslide JS homepage', + previousText : 'Previous', + nextText : 'Next', + moveText : 'Move', + closeText : 'Close', + closeTitle : 'Close (esc)', + resizeTitle : 'Resize', + playText : 'Play', + playTitle : 'Play slideshow (spacebar)', + pauseText : 'Pause', + pauseTitle : 'Pause slideshow (spacebar)', + previousTitle : 'Previous (arrow left)', + nextTitle : 'Next (arrow right)', + moveTitle : 'Move', + fullExpandText : '1:1', + number: 'Image %1 of %2', + restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' +}, +// See http://highslide.com/ref for examples of settings +graphicsDir : 'highslide/graphics/', +expandCursor : 'zoomin.cur', // null disables +restoreCursor : 'zoomout.cur', // null disables +expandDuration : 250, // milliseconds +restoreDuration : 250, +marginLeft : 15, +marginRight : 15, +marginTop : 15, +marginBottom : 15, +zIndexCounter : 1001, // adjust to other absolutely positioned elements +loadingOpacity : 0.75, +allowMultipleInstances: true, +numberOfImagesToPreload : 5, +outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only +outlineStartOffset : 3, // ends at 10 +padToMinWidth : false, // pad the popup width to make room for wide caption +fullExpandPosition : 'bottom right', +fullExpandOpacity : 1, +showCredits : true, // you can set this to false if you want +creditsHref : 'http://highslide.com/', +creditsTarget : '_self', +enableKeyListener : true, +openerTagNames : ['a', 'area'], // Add more to allow slideshow indexing +transitions : [], +transitionDuration: 250, +dimmingOpacity: 0, // Lightbox style dimming background +dimmingDuration: 50, // 0 for instant dimming + +allowWidthReduction : false, +allowHeightReduction : true, +preserveContent : true, // Preserve changes made to the content and position of HTML popups. +objectLoadTime : 'before', // Load iframes 'before' or 'after' expansion. +cacheAjax : true, // Cache ajax popups for instant display. Can be overridden for each popup. +anchor : 'auto', // where the image expands from +align : 'auto', // position in the client (overrides anchor) +targetX: null, // the id of a target element +targetY: null, +dragByHeading: true, +minWidth: 200, +minHeight: 200, +allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight +outlineType : 'drop-shadow', // set null to disable outlines +skin : { + controls: + '
' + , + contentWrapper: + '
'+ + '
'+ + '' +}, +// END OF YOUR SETTINGS + + +// declare internal properties +preloadTheseImages : [], +continuePreloading: true, +expanders : [], +overrides : [ + 'allowSizeReduction', + 'useBox', + 'anchor', + 'align', + 'targetX', + 'targetY', + 'outlineType', + 'outlineWhileAnimating', + 'captionId', + 'captionText', + 'captionEval', + 'captionOverlay', + 'headingId', + 'headingText', + 'headingEval', + 'headingOverlay', + 'creditsPosition', + 'dragByHeading', + 'autoplay', + 'numberPosition', + 'transitions', + 'dimmingOpacity', + + 'width', + 'height', + + 'contentId', + 'allowWidthReduction', + 'allowHeightReduction', + 'preserveContent', + 'maincontentId', + 'maincontentText', + 'maincontentEval', + 'objectType', + 'cacheAjax', + 'objectWidth', + 'objectHeight', + 'objectLoadTime', + 'swfOptions', + 'wrapperClassName', + 'minWidth', + 'minHeight', + 'maxWidth', + 'maxHeight', + 'pageOrigin', + 'slideshowGroup', + 'easing', + 'easingClose', + 'fadeInOut', + 'src' +], +overlays : [], +idCounter : 0, +oPos : { + x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], + y: ['above', 'top', 'middle', 'bottom', 'below'] +}, +mouse: {}, +headingOverlay: {}, +captionOverlay: {}, +swfOptions: { flashvars: {}, params: {}, attributes: {} }, +timers : [], + +slideshows : [], + +pendingOutlines : {}, +sleeping : [], +preloadTheseAjax : [], +cacheBindings : [], +cachedGets : {}, +clones : {}, +onReady: [], +uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : + parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), +ie : (document.all && !window.opera), +//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant? +safari : /Safari/.test(navigator.userAgent), +geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), + +$ : function (id) { + if (id) return document.getElementById(id); +}, + +push : function (arr, val) { + arr[arr.length] = val; +}, + +createElement : function (tag, attribs, styles, parent, nopad) { + var el = document.createElement(tag); + if (attribs) hs.extend(el, attribs); + if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); + if (styles) hs.setStyles(el, styles); + if (parent) parent.appendChild(el); + return el; +}, + +extend : function (el, attribs) { + for (var x in attribs) el[x] = attribs[x]; + return el; +}, + +setStyles : function (el, styles) { + for (var x in styles) { + if (hs.ieLt9 && x == 'opacity') { + if (styles[x] > 0.99) el.style.removeAttribute('filter'); + else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; + } + else el.style[x] = styles[x]; + } +}, +animate: function(el, prop, opt) { + var start, + end, + unit; + if (typeof opt != 'object' || opt === null) { + var args = arguments; + opt = { + duration: args[2], + easing: args[3], + complete: args[4] + }; + } + if (typeof opt.duration != 'number') opt.duration = 250; + opt.easing = Math[opt.easing] || Math.easeInQuad; + opt.curAnim = hs.extend({}, prop); + for (var name in prop) { + var e = new hs.fx(el, opt , name ); + + start = parseFloat(hs.css(el, name)) || 0; + end = parseFloat(prop[name]); + unit = name != 'opacity' ? 'px' : ''; + + e.custom( start, end, unit ); + } +}, +css: function(el, prop) { + if (el.style[prop]) { + return el.style[prop]; + } else if (document.defaultView) { + return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); + + } else { + if (prop == 'opacity') prop = 'filter'; + var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; + if (prop == 'filter') + val = val.replace(/alpha\(opacity=([0-9]+)\)/, + function (a, b) { return b / 100 }); + return val === '' ? 1 : val; + } +}, + +getPageSize : function () { + var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' + ? d.documentElement : d.body, + ieLt9 = hs.ie && (hs.uaVersion < 9 || typeof pageXOffset == 'undefined'); + + var width = ieLt9 ? iebody.clientWidth : + (d.documentElement.clientWidth || self.innerWidth), + height = ieLt9 ? iebody.clientHeight : self.innerHeight; + hs.page = { + width: width, + height: height, + scrollLeft: ieLt9 ? iebody.scrollLeft : pageXOffset, + scrollTop: ieLt9 ? iebody.scrollTop : pageYOffset + }; + return hs.page; +}, + +getPosition : function(el) { + if (/area/i.test(el.tagName)) { + var imgs = document.getElementsByTagName('img'); + for (var i = 0; i < imgs.length; i++) { + var u = imgs[i].useMap; + if (u && u.replace(/^.*?#/, '') == el.parentNode.name) { + el = imgs[i]; + break; + } + } + } + var p = { x: el.offsetLeft, y: el.offsetTop }; + while (el.offsetParent) { + el = el.offsetParent; + p.x += el.offsetLeft; + p.y += el.offsetTop; + if (el != document.body && el != document.documentElement) { + p.x -= el.scrollLeft; + p.y -= el.scrollTop; + } + } + return p; +}, + +expand : function(a, params, custom, type) { + if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); + if (typeof a.getParams == 'function') return params; + if (type == 'html') { + for (var i = 0; i < hs.sleeping.length; i++) { + if (hs.sleeping[i] && hs.sleeping[i].a == a) { + hs.sleeping[i].awake(); + hs.sleeping[i] = null; + return false; + } + } + hs.hasHtmlExpanders = true; + } + try { + new hs.Expander(a, params, custom, type); + return false; + } catch (e) { return true; } +}, + +htmlExpand : function(a, params, custom) { + return hs.expand(a, params, custom, 'html'); +}, + +getSelfRendered : function() { + return hs.createElement('div', { + className: 'highslide-html-content', + innerHTML: hs.replaceLang(hs.skin.contentWrapper) + }); +}, +getElementByClass : function (el, tagName, className) { + var els = el.getElementsByTagName(tagName); + for (var i = 0; i < els.length; i++) { + if ((new RegExp(className)).test(els[i].className)) { + return els[i]; + } + } + return null; +}, +replaceLang : function(s) { + s = s.replace(/\s/g, ' '); + var re = /{hs\.lang\.([^}]+)\}/g, + matches = s.match(re), + lang; + if (matches) for (var i = 0; i < matches.length; i++) { + lang = matches[i].replace(re, "$1"); + if (typeof hs.lang[lang] != 'undefined') s = s.replace(matches[i], hs.lang[lang]); + } + return s; +}, + + +setClickEvents : function () { + var els = document.getElementsByTagName('a'); + for (var i = 0; i < els.length; i++) { + var type = hs.isUnobtrusiveAnchor(els[i]); + if (type && !els[i].hsHasSetClick) { + (function(){ + var t = type; + if (hs.fireEvent(hs, 'onSetClickEvent', { element: els[i], type: t })) { + els[i].onclick =(type == 'image') ?function() { return hs.expand(this) }: + function() { return hs.htmlExpand(this, { objectType: t } );}; + } + })(); + els[i].hsHasSetClick = true; + } + } + hs.getAnchors(); +}, +isUnobtrusiveAnchor: function(el) { + if (el.rel == 'highslide') return 'image'; + else if (el.rel == 'highslide-ajax') return 'ajax'; + else if (el.rel == 'highslide-iframe') return 'iframe'; + else if (el.rel == 'highslide-swf') return 'swf'; +}, + +getCacheBinding : function (a) { + for (var i = 0; i < hs.cacheBindings.length; i++) { + if (hs.cacheBindings[i][0] == a) { + var c = hs.cacheBindings[i][1]; + hs.cacheBindings[i][1] = c.cloneNode(1); + return c; + } + } + return null; +}, + +preloadAjax : function (e) { + var arr = hs.getAnchors(); + for (var i = 0; i < arr.htmls.length; i++) { + var a = arr.htmls[i]; + if (hs.getParam(a, 'objectType') == 'ajax' && hs.getParam(a, 'cacheAjax')) + hs.push(hs.preloadTheseAjax, a); + } + + hs.preloadAjaxElement(0); +}, + +preloadAjaxElement : function (i) { + if (!hs.preloadTheseAjax[i]) return; + var a = hs.preloadTheseAjax[i]; + var cache = hs.getNode(hs.getParam(a, 'contentId')); + if (!cache) cache = hs.getSelfRendered(); + var ajax = new hs.Ajax(a, cache, 1); + ajax.onError = function () { }; + ajax.onLoad = function () { + hs.push(hs.cacheBindings, [a, cache]); + hs.preloadAjaxElement(i + 1); + }; + ajax.run(); +}, + +focusTopmost : function() { + var topZ = 0, + topmostKey = -1, + expanders = hs.expanders, + exp, + zIndex; + for (var i = 0; i < expanders.length; i++) { + exp = expanders[i]; + if (exp) { + zIndex = exp.wrapper.style.zIndex; + if (zIndex && zIndex > topZ) { + topZ = zIndex; + topmostKey = i; + } + } + } + if (topmostKey == -1) hs.focusKey = -1; + else expanders[topmostKey].focus(); +}, + +getParam : function (a, param) { + a.getParams = a.onclick; + var p = a.getParams ? a.getParams() : null; + a.getParams = null; + + return (p && typeof p[param] != 'undefined') ? p[param] : + (typeof hs[param] != 'undefined' ? hs[param] : null); +}, + +getSrc : function (a) { + var src = hs.getParam(a, 'src'); + if (src) return src; + return a.href; +}, + +getNode : function (id) { + var node = hs.$(id), clone = hs.clones[id], a = {}; + if (!node && !clone) return null; + if (!clone) { + clone = node.cloneNode(true); + clone.id = ''; + hs.clones[id] = clone; + return node; + } else { + return clone.cloneNode(true); + } +}, + +discardElement : function(d) { + if (d) hs.garbageBin.appendChild(d); + hs.garbageBin.innerHTML = ''; +}, +dim : function(exp) { + if (!hs.dimmer) { + isNew = true; + hs.dimmer = hs.createElement ('div', { + className: 'highslide-dimming highslide-viewport-size', + owner: '', + onclick: function() { + if (hs.fireEvent(hs, 'onDimmerClick')) + + hs.close(); + } + }, { + visibility: 'visible', + opacity: 0 + }, hs.container, true); + + if (/(Android|iPad|iPhone|iPod)/.test(navigator.userAgent)) { + var body = document.body; + function pixDimmerSize() { + hs.setStyles(hs.dimmer, { + width: body.scrollWidth +'px', + height: body.scrollHeight +'px' + }); + } + pixDimmerSize(); + hs.addEventListener(window, 'resize', pixDimmerSize); + } + } + hs.dimmer.style.display = ''; + + var isNew = hs.dimmer.owner == ''; + hs.dimmer.owner += '|'+ exp.key; + + if (isNew) { + if (hs.geckoMac && hs.dimmingGeckoFix) + hs.setStyles(hs.dimmer, { + background: 'url('+ hs.graphicsDir + 'geckodimmer.png)', + opacity: 1 + }); + else + hs.animate(hs.dimmer, { opacity: exp.dimmingOpacity }, hs.dimmingDuration); + } +}, +undim : function(key) { + if (!hs.dimmer) return; + if (typeof key != 'undefined') hs.dimmer.owner = hs.dimmer.owner.replace('|'+ key, ''); + + if ( + (typeof key != 'undefined' && hs.dimmer.owner != '') + || (hs.upcoming && hs.getParam(hs.upcoming, 'dimmingOpacity')) + ) return; + + if (hs.geckoMac && hs.dimmingGeckoFix) hs.dimmer.style.display = 'none'; + else hs.animate(hs.dimmer, { opacity: 0 }, hs.dimmingDuration, null, function() { + hs.dimmer.style.display = 'none'; + }); +}, +transit : function (adj, exp) { + var last = exp || hs.getExpander(); + exp = last; + if (hs.upcoming) return false; + else hs.last = last; + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + try { + hs.upcoming = adj; + adj.onclick(); + } catch (e){ + hs.last = hs.upcoming = null; + } + try { + if (!adj || exp.transitions[1] != 'crossfade') + exp.close(); + } catch (e) {} + return false; +}, + +previousOrNext : function (el, op) { + var exp = hs.getExpander(el); + if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp); + else return false; +}, + +previous : function (el) { + return hs.previousOrNext(el, -1); +}, + +next : function (el) { + return hs.previousOrNext(el, 1); +}, + +keyHandler : function(e) { + if (!e) e = window.event; + if (!e.target) e.target = e.srcElement; // ie + if (typeof e.target.form != 'undefined') return true; // form element has focus + if (!hs.fireEvent(hs, 'onKeyDown', e)) return true; + var exp = hs.getExpander(); + + var op = null; + switch (e.keyCode) { + case 70: // f + if (exp) exp.doFullExpand(); + return true; + case 32: // Space + op = 2; + break; + case 34: // Page Down + case 39: // Arrow right + case 40: // Arrow down + op = 1; + break; + case 8: // Backspace + case 33: // Page Up + case 37: // Arrow left + case 38: // Arrow up + op = -1; + break; + case 27: // Escape + case 13: // Enter + op = 0; + } + if (op !== null) {if (op != 2)hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + if (!hs.enableKeyListener) return true; + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + if (exp) { + if (op == 0) { + exp.close(); + } else if (op == 2) { + if (exp.slideshow) exp.slideshow.hitSpace(); + } else { + if (exp.slideshow) exp.slideshow.pause(); + hs.previousOrNext(exp.key, op); + } + return false; + } + } + return true; +}, + + +registerOverlay : function (overlay) { + hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); +}, + + +addSlideshow : function (options) { + var sg = options.slideshowGroup; + if (typeof sg == 'object') { + for (var i = 0; i < sg.length; i++) { + var o = {}; + for (var x in options) o[x] = options[x]; + o.slideshowGroup = sg[i]; + hs.push(hs.slideshows, o); + } + } else { + hs.push(hs.slideshows, options); + } +}, + +getWrapperKey : function (element, expOnly) { + var el, re = /^highslide-wrapper-([0-9]+)$/; + // 1. look in open expanders + el = element; + while (el.parentNode) { + if (el.hsKey !== undefined) return el.hsKey; + if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); + el = el.parentNode; + } + // 2. look in thumbnail + if (!expOnly) { + el = element; + while (el.parentNode) { + if (el.tagName && hs.isHsAnchor(el)) { + for (var key = 0; key < hs.expanders.length; key++) { + var exp = hs.expanders[key]; + if (exp && exp.a == el) return key; + } + } + el = el.parentNode; + } + } + return null; +}, + +getExpander : function (el, expOnly) { + if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null; + if (typeof el == 'number') return hs.expanders[el] || null; + if (typeof el == 'string') el = hs.$(el); + return hs.expanders[hs.getWrapperKey(el, expOnly)] || null; +}, + +isHsAnchor : function (a) { + return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/)); +}, + +reOrder : function () { + for (var i = 0; i < hs.expanders.length; i++) + if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost(); +}, +fireEvent : function (obj, evt, args) { + return obj && obj[evt] ? (obj[evt](obj, args) !== false) : true; +}, + +mouseClickHandler : function(e) +{ + if (!e) e = window.event; + if (e.button > 1) return true; + if (!e.target) e.target = e.srcElement; + + var el = e.target; + while (el.parentNode + && !(/highslide-(image|move|html|resize)/.test(el.className))) + { + el = el.parentNode; + } + var exp = hs.getExpander(el); + if (exp && (exp.isClosing || !exp.isExpanded)) return true; + + if (exp && e.type == 'mousedown') { + if (e.target.form) return true; + var match = el.className.match(/highslide-(image|move|resize)/); + if (match) { + hs.dragArgs = { + exp: exp , + type: match[1], + left: exp.x.pos, + width: exp.x.size, + top: exp.y.pos, + height: exp.y.size, + clickX: e.clientX, + clickY: e.clientY + }; + + + hs.addEventListener(document, 'mousemove', hs.dragHandler); + if (e.preventDefault) e.preventDefault(); // FF + + if (/highslide-(image|html)-blur/.test(exp.content.className)) { + exp.focus(); + hs.hasFocused = true; + } + return false; + } + else if (/highslide-html/.test(el.className) && hs.focusKey != exp.key) { + exp.focus(); + exp.doShowHide('hidden'); + } + } else if (e.type == 'mouseup') { + + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + if (hs.dragArgs) { + if (hs.styleRestoreCursor && hs.dragArgs.type == 'image') + hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor; + var hasDragged = hs.dragArgs.hasDragged; + + if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) { + if (hs.fireEvent(exp, 'onImageClick')) + exp.close(); + } + else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) { + hs.dragArgs.exp.doShowHide('hidden'); + } + + if (hs.dragArgs.exp.releaseMask) + hs.dragArgs.exp.releaseMask.style.display = 'none'; + + if (hasDragged) hs.fireEvent(hs.dragArgs.exp, 'onDrop', hs.dragArgs); + hs.hasFocused = false; + hs.dragArgs = null; + + } else if (/highslide-image-blur/.test(el.className)) { + el.style.cursor = hs.styleRestoreCursor; + } + } + return false; +}, + +dragHandler : function(e) +{ + if (!hs.dragArgs) return true; + if (!e) e = window.event; + var a = hs.dragArgs, exp = a.exp; + if (exp.iframe) { + if (!exp.releaseMask) exp.releaseMask = hs.createElement('div', null, + { position: 'absolute', width: exp.x.size+'px', height: exp.y.size+'px', + left: exp.x.cb+'px', top: exp.y.cb+'px', zIndex: 4, background: (hs.ieLt9 ? 'white' : 'none'), + opacity: 0.01 }, + exp.wrapper, true); + if (exp.releaseMask.style.display == 'none') + exp.releaseMask.style.display = ''; + } + + a.dX = e.clientX - a.clickX; + a.dY = e.clientY - a.clickY; + + var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); + if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) + || (distance > (hs.dragSensitivity || 5)); + + if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { + if (!hs.fireEvent(exp, 'onDrag', a)) return false; + + if (a.type == 'resize') exp.resize(a); + else { + exp.moveTo(a.left + a.dX, a.top + a.dY); + if (a.type == 'image') exp.content.style.cursor = 'move'; + } + } + return false; +}, + +wrapperMouseHandler : function (e) { + try { + if (!e) e = window.event; + var over = /mouseover/i.test(e.type); + if (!e.target) e.target = e.srcElement; // ie + if (!e.relatedTarget) e.relatedTarget = + over ? e.fromElement : e.toElement; // ie + var exp = hs.getExpander(e.target); + if (!exp.isExpanded) return; + if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp + || hs.dragArgs) return; + hs.fireEvent(exp, over ? 'onMouseOver' : 'onMouseOut', e); + for (var i = 0; i < exp.overlays.length; i++) (function() { + var o = hs.$('hsId'+ exp.overlays[i]); + if (o && o.hideOnMouseOut) { + if (over) hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur); + } + })(); + } catch (e) {} +}, +addEventListener : function (el, event, func) { + if (el == document && event == 'ready') { + hs.push(hs.onReady, func); + } + try { + el.addEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + el.attachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = func; + } + } +}, + +removeEventListener : function (el, event, func) { + try { + el.removeEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = null; + } + } +}, + +preloadFullImage : function (i) { + if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') { + var img = document.createElement('img'); + img.onload = function() { + img = null; + hs.preloadFullImage(i + 1); + }; + img.src = hs.preloadTheseImages[i]; + } +}, +preloadImages : function (number) { + if (number && typeof number != 'object') hs.numberOfImagesToPreload = number; + + var arr = hs.getAnchors(); + for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) { + hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i])); + } + + // preload outlines + if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} ); + else + + hs.preloadFullImage(0); + + // preload cursor + if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor }); +}, + + +init : function () { + if (!hs.container) { + + hs.ieLt7 = hs.ie && hs.uaVersion < 7; + hs.ieLt9 = hs.ie && hs.uaVersion < 9; + + hs.getPageSize(); + hs.ie6SSL = hs.ieLt7 && location.protocol == 'https:'; + for (var x in hs.langDefaults) { + if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x]; + else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined') + hs.lang[x] = hs.langDefaults[x]; + } + + hs.container = hs.createElement('div', { + className: 'highslide-container' + }, { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + zIndex: hs.zIndexCounter, + direction: 'ltr' + }, + document.body, + true + ); + hs.loading = hs.createElement('a', { + className: 'highslide-loading', + title: hs.lang.loadingTitle, + innerHTML: hs.lang.loadingText, + href: 'javascript:;' + }, { + position: 'absolute', + top: '-9999px', + opacity: hs.loadingOpacity, + zIndex: 1 + }, hs.container + ); + hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container); + hs.viewport = hs.createElement('div', { + className: 'highslide-viewport highslide-viewport-size' + }, { + visibility: (hs.safari && hs.uaVersion < 525) ? 'visible' : 'hidden' + }, hs.container, 1 + ); + hs.clearing = hs.createElement('div', null, + { clear: 'both', paddingTop: '1px' }, null, true); + + // http://www.robertpenner.com/easing/ + Math.linearTween = function (t, b, c, d) { + return c*t/d + b; + }; + Math.easeInQuad = function (t, b, c, d) { + return c*(t/=d)*t + b; + }; + Math.easeOutQuad = function (t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + }; + + hs.hideSelects = hs.ieLt7; + hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE' + || (hs.ieLt7 && hs.uaVersion < 5.5)); + hs.fireEvent(this, 'onActivate'); + } +}, +ready : function() { + if (hs.isReady) return; + hs.isReady = true; + for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i](); +}, + +updateAnchors : function() { + var el, els, all = [], images = [], htmls = [],groups = {}, re; + + for (var i = 0; i < hs.openerTagNames.length; i++) { + els = document.getElementsByTagName(hs.openerTagNames[i]); + for (var j = 0; j < els.length; j++) { + el = els[j]; + re = hs.isHsAnchor(el); + if (re) { + hs.push(all, el); + if (re[0] == 'hs.expand') hs.push(images, el); + else if (re[0] == 'hs.htmlExpand') hs.push(htmls, el); + var g = hs.getParam(el, 'slideshowGroup') || 'none'; + if (!groups[g]) groups[g] = []; + hs.push(groups[g], el); + } + } + } + hs.anchors = { all: all, groups: groups, images: images, htmls: htmls }; + return hs.anchors; + +}, + +getAnchors : function() { + return hs.anchors || hs.updateAnchors(); +}, + + +close : function(el) { + var exp = hs.getExpander(el); + if (exp) exp.close(); + return false; +} +}; // end hs object +hs.fx = function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if (!options.orig) options.orig = {}; +}; +hs.fx.prototype = { + update: function(){ + (hs.fx.step[this.prop] || hs.fx.step._default)(this); + + if (this.options.step) + this.options.step.call(this.elem, this.now, this); + + }, + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit;// || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + if ( t() && hs.timers.push(t) == 1 ) { + hs.timerId = setInterval(function(){ + var timers = hs.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval(hs.timerId); + } + }, 13); + } + }, + step: function(gotoEnd){ + var t = (new Date()).getTime(); + if ( gotoEnd || t >= this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if (this.options.complete) this.options.complete.call(this.elem); + } + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + this.pos = this.options.easing(n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + this.update(); + } + return true; + } + +}; + +hs.extend( hs.fx, { + step: { + + opacity: function(fx){ + hs.setStyles(fx.elem, { opacity: fx.now }); + }, + + _default: function(fx){ + try { + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; + } catch (e) {} + } + } +}); + +hs.Outline = function (outlineType, onLoad) { + this.onLoad = onLoad; + this.outlineType = outlineType; + var v = hs.uaVersion, tr; + + this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7; + if (!outlineType) { + if (onLoad) onLoad(); + return; + } + + hs.init(); + this.table = hs.createElement( + 'table', { + cellSpacing: 0 + }, { + visibility: 'hidden', + position: 'absolute', + borderCollapse: 'collapse', + width: 0 + }, + hs.container, + true + ); + var tbody = hs.createElement('tbody', null, null, this.table, 1); + + this.td = []; + for (var i = 0; i <= 8; i++) { + if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true); + this.td[i] = hs.createElement('td', null, null, tr, true); + var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' }; + hs.setStyles(this.td[i], style); + } + this.td[4].className = outlineType +' highslide-outline'; + + this.preloadGraphic(); +}; + +hs.Outline.prototype = { +preloadGraphic : function () { + var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png"; + + var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null; + this.graphic = hs.createElement('img', null, { position: 'absolute', + top: '-9999px' }, appendTo, true); // for onload trigger + + var pThis = this; + this.graphic.onload = function() { pThis.onGraphicLoad(); }; + + this.graphic.src = src; +}, + +onGraphicLoad : function () { + var o = this.offset = this.graphic.width / 4, + pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]], + dim = { height: (2*o) +'px', width: (2*o) +'px' }; + for (var i = 0; i <= 8; i++) { + if (pos[i]) { + if (this.hasAlphaImageLoader) { + var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px'; + var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true); + hs.createElement ('div', null, { + filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", + position: 'absolute', + width: w, + height: this.graphic.height +'px', + left: (pos[i][0]*o)+'px', + top: (pos[i][1]*o)+'px' + }, + div, + true); + } else { + hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'}); + } + + if (window.opera && (i == 3 || i ==5)) + hs.createElement('div', null, dim, this.td[i], true); + + hs.setStyles (this.td[i], dim); + } + } + this.graphic = null; + if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy(); + hs.pendingOutlines[this.outlineType] = this; + if (this.onLoad) this.onLoad(); +}, + +setPosition : function (pos, offset, vis, dur, easing) { + var exp = this.exp, + stl = exp.wrapper.style, + offset = offset || 0, + pos = pos || { + x: exp.x.pos + offset, + y: exp.y.pos + offset, + w: exp.x.get('wsize') - 2 * offset, + h: exp.y.get('wsize') - 2 * offset + }; + if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset) + ? 'visible' : 'hidden'; + hs.setStyles(this.table, { + left: (pos.x - this.offset) +'px', + top: (pos.y - this.offset) +'px', + width: (pos.w + 2 * this.offset) +'px' + }); + + pos.w -= 2 * this.offset; + pos.h -= 2 * this.offset; + hs.setStyles (this.td[4], { + width: pos.w >= 0 ? pos.w +'px' : 0, + height: pos.h >= 0 ? pos.h +'px' : 0 + }); + if (this.hasAlphaImageLoader) this.td[3].style.height + = this.td[5].style.height = this.td[4].style.height; + +}, + +destroy : function(hide) { + if (hide) this.table.style.visibility = 'hidden'; + else hs.discardElement(this.table); +} +}; + +hs.Dimension = function(exp, dim) { + this.exp = exp; + this.dim = dim; + this.ucwh = dim == 'x' ? 'Width' : 'Height'; + this.wh = this.ucwh.toLowerCase(); + this.uclt = dim == 'x' ? 'Left' : 'Top'; + this.lt = this.uclt.toLowerCase(); + this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; + this.rb = this.ucrb.toLowerCase(); + this.p1 = this.p2 = 0; +}; +hs.Dimension.prototype = { +get : function(key) { + switch (key) { + case 'loadingPos': + return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; + case 'loadingPosXfade': + return this.pos + this.cb+ this.p1 + (this.size - hs.loading['offset'+ this.ucwh]) / 2; + case 'wsize': + return this.size + 2 * this.cb + this.p1 + this.p2; + case 'fitsize': + return this.clientSize - this.marginMin - this.marginMax; + case 'maxsize': + return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; + case 'opos': + return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); + case 'osize': + return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); + case 'imgPad': + return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; + + } +}, +calcBorders: function() { + // correct for borders + this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; + + this.marginMax = hs['margin'+ this.ucrb]; +}, +calcThumb: function() { + this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : + this.exp.el['offset'+ this.ucwh]; + this.tpos = this.exp.tpos[this.dim]; + this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; + if (this.tpos == 0 || this.tpos == -1) { + this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt]; + }; +}, +calcExpanded: function() { + var exp = this.exp; + this.justify = 'auto'; + + // get alignment + if (exp.align == 'center') this.justify = 'center'; + else if (new RegExp(this.lt).test(exp.anchor)) this.justify = null; + else if (new RegExp(this.rb).test(exp.anchor)) this.justify = 'max'; + + + // size and position + this.pos = this.tpos - this.cb + this.tb; + + if (this.maxHeight && this.dim == 'x') + exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full); + + this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); + this.minSize = exp.allowSizeReduction ? + Math.min(exp['min'+ this.ucwh], this.full) :this.full; + if (exp.isImage && exp.useBox) { + this.size = exp[this.wh]; + this.imgSize = this.full; + } + if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth; + this.target = exp['target'+ this.dim.toUpperCase()]; + this.marginMin = hs['margin'+ this.uclt]; + this.scroll = hs.page['scroll'+ this.uclt]; + this.clientSize = hs.page[this.wh]; +}, +setSize: function(i) { + var exp = this.exp; + if (exp.isImage && (exp.useBox || hs.padToMinWidth)) { + this.imgSize = i; + this.size = Math.max(this.size, this.imgSize); + exp.content.style[this.lt] = this.get('imgPad')+'px'; + } else + this.size = i; + + exp.content.style[this.wh] = i +'px'; + exp.wrapper.style[this.wh] = this.get('wsize') +'px'; + if (exp.outline) exp.outline.setPosition(); + if (exp.releaseMask) exp.releaseMask.style[this.wh] = i +'px'; + if (this.dim == 'y' && exp.iDoc && exp.body.style.height != 'auto') try { + exp.iDoc.body.style.overflow = 'auto'; + } catch (e) {} + if (exp.isHtml) { + var d = exp.scrollerDiv; + if (this.sizeDiff === undefined) + this.sizeDiff = exp.innerContent['offset'+ this.ucwh] - d['offset'+ this.ucwh]; + d.style[this.wh] = (this.size - this.sizeDiff) +'px'; + + if (this.dim == 'x') exp.mediumContent.style.width = 'auto'; + if (exp.body) exp.body.style[this.wh] = 'auto'; + } + if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); + if (this.dim == 'x' && exp.slideshow && exp.isImage) { + if (i == this.full) exp.slideshow.disable('full-expand'); + else exp.slideshow.enable('full-expand'); + } +}, +setPos: function(i) { + this.pos = i; + this.exp.wrapper.style[this.lt] = i +'px'; + + if (this.exp.outline) this.exp.outline.setPosition(); + +} +}; + +hs.Expander = function(a, params, custom, contentType) { + if (document.readyState && hs.ie && !hs.isReady) { + hs.addEventListener(document, 'ready', function() { + new hs.Expander(a, params, custom, contentType); + }); + return; + } + this.a = a; + this.custom = custom; + this.contentType = contentType || 'image'; + this.isHtml = (contentType == 'html'); + this.isImage = !this.isHtml; + + hs.continuePreloading = false; + this.overlays = []; + this.last = hs.last; + hs.last = null; + hs.init(); + var key = this.key = hs.expanders.length; + // override inline parameters + for (var i = 0; i < hs.overrides.length; i++) { + var name = hs.overrides[i]; + this[name] = params && typeof params[name] != 'undefined' ? + params[name] : hs[name]; + } + if (!this.src) this.src = a.href; + + // get thumb + var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a; + el = this.thumb = el.getElementsByTagName('img')[0] || el; + this.thumbsUserSetId = el.id || a.id; + if (!hs.fireEvent(this, 'onInit')) return true; + + // check if already open + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].a == a + && !(this.last && this.transitions[1] == 'crossfade')) { + hs.expanders[i].focus(); + return false; + } + } + + // cancel other + if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) { + hs.expanders[i].cancelLoading(); + } + } + hs.expanders[key] = this; + if (!hs.allowMultipleInstances && !hs.upcoming) { + if (hs.expanders[key-1]) hs.expanders[key-1].close(); + if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey]) + hs.expanders[hs.focusKey].close(); + } + + // initiate metrics + this.el = el; + this.tpos = this.pageOrigin || hs.getPosition(el); + hs.getPageSize(); + var x = this.x = new hs.Dimension(this, 'x'); + x.calcThumb(); + var y = this.y = new hs.Dimension(this, 'y'); + y.calcThumb(); + if (/area/i.test(el.tagName)) this.getImageMapAreaCorrection(el); + this.wrapper = hs.createElement( + 'div', { + id: 'highslide-wrapper-'+ this.key, + className: 'highslide-wrapper '+ this.wrapperClassName + }, { + visibility: 'hidden', + position: 'absolute', + zIndex: hs.zIndexCounter += 2 + }, null, true ); + + this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler; + if (this.contentType == 'image' && this.outlineWhileAnimating == 2) + this.outlineWhileAnimating = 0; + + // get the outline + if (!this.outlineType + || (this.last && this.isImage && this.transitions[1] == 'crossfade')) { + this[this.contentType +'Create'](); + + } else if (hs.pendingOutlines[this.outlineType]) { + this.connectOutline(); + this[this.contentType +'Create'](); + + } else { + this.showLoading(); + var exp = this; + new hs.Outline(this.outlineType, + function () { + exp.connectOutline(); + exp[exp.contentType +'Create'](); + } + ); + } + return true; +}; + +hs.Expander.prototype = { +error : function(e) { + if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message); + else window.location.href = this.src; +}, + +connectOutline : function() { + var outline = this.outline = hs.pendingOutlines[this.outlineType]; + outline.exp = this; + outline.table.style.zIndex = this.wrapper.style.zIndex - 1; + hs.pendingOutlines[this.outlineType] = null; +}, + +showLoading : function() { + if (this.onLoadStarted || this.loading) return; + + this.loading = hs.loading; + var exp = this; + this.loading.onclick = function() { + exp.cancelLoading(); + }; + + + if (!hs.fireEvent(this, 'onShowLoading')) return; + var exp = this, + l = this.x.get('loadingPos') +'px', + t = this.y.get('loadingPos') +'px'; + if (!tgt && this.last && this.transitions[1] == 'crossfade') + var tgt = this.last; + if (tgt) { + l = tgt.x.get('loadingPosXfade') +'px'; + t = tgt.y.get('loadingPosXfade') +'px'; + this.loading.style.zIndex = hs.zIndexCounter++; + } + setTimeout(function () { + if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })} + , 100); +}, + +imageCreate : function() { + var exp = this; + + var img = document.createElement('img'); + this.content = img; + img.onload = function () { + if (hs.expanders[exp.key]) exp.contentLoaded(); + }; + if (hs.blockRightClick) img.oncontextmenu = function() { return false; }; + img.className = 'highslide-image'; + hs.setStyles(img, { + visibility: 'hidden', + display: 'block', + position: 'absolute', + maxWidth: '9999px', + zIndex: 3 + }); + img.title = hs.lang.restoreTitle; + if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img); + if (hs.ie && hs.flushImgSize) img.src = null; + img.src = this.src; + + this.showLoading(); +}, + +htmlCreate : function () { + if (!hs.fireEvent(this, 'onBeforeGetContent')) return; + + this.content = hs.getCacheBinding(this.a); + if (!this.content) + this.content = hs.getNode(this.contentId); + if (!this.content) + this.content = hs.getSelfRendered(); + this.getInline(['maincontent']); + if (this.maincontent) { + var body = hs.getElementByClass(this.content, 'div', 'highslide-body'); + if (body) body.appendChild(this.maincontent); + this.maincontent.style.display = 'block'; + } + hs.fireEvent(this, 'onAfterGetContent'); + + var innerContent = this.innerContent = this.content; + + if (/(swf|iframe)/.test(this.objectType)) this.setObjContainerSize(innerContent); + + // the content tree + hs.container.appendChild(this.wrapper); + hs.setStyles( this.wrapper, { + position: 'static', + padding: '0 '+ hs.marginRight +'px 0 '+ hs.marginLeft +'px' + }); + this.content = hs.createElement( + 'div', { + className: 'highslide-html' + }, { + position: 'relative', + zIndex: 3, + height: 0, + overflow: 'hidden' + }, + this.wrapper + ); + this.mediumContent = hs.createElement('div', null, null, this.content, 1); + this.mediumContent.appendChild(innerContent); + + hs.setStyles (innerContent, { + position: 'relative', + display: 'block', + direction: hs.lang.cssDirection || '' + }); + if (this.width) innerContent.style.width = this.width +'px'; + if (this.height) hs.setStyles(innerContent, { + height: this.height +'px', + overflow: 'hidden' + }); + if (innerContent.offsetWidth < this.minWidth) + innerContent.style.width = this.minWidth +'px'; + + + + if (this.objectType == 'ajax' && !hs.getCacheBinding(this.a)) { + this.showLoading(); + var exp = this; + var ajax = new hs.Ajax(this.a, innerContent); + ajax.src = this.src; + ajax.onLoad = function () { if (hs.expanders[exp.key]) exp.contentLoaded(); }; + ajax.onError = function () { location.href = exp.src; }; + ajax.run(); + } + else + + if (this.objectType == 'iframe' && this.objectLoadTime == 'before') { + this.writeExtendedContent(); + } + else + this.contentLoaded(); +}, + +contentLoaded : function() { + try { + if (!this.content) return; + this.content.onload = null; + if (this.onLoadStarted) return; + else this.onLoadStarted = true; + + var x = this.x, y = this.y; + + if (this.loading) { + hs.setStyles(this.loading, { top: '-9999px' }); + this.loading = null; + hs.fireEvent(this, 'onHideLoading'); + } + if (this.isImage) { + x.full = this.content.width; + y.full = this.content.height; + + hs.setStyles(this.content, { + width: x.t +'px', + height: y.t +'px' + }); + this.wrapper.appendChild(this.content); + hs.container.appendChild(this.wrapper); + } else if (this.htmlGetSize) this.htmlGetSize(); + + x.calcBorders(); + y.calcBorders(); + + hs.setStyles (this.wrapper, { + left: (x.tpos + x.tb - x.cb) +'px', + top: (y.tpos + x.tb - y.cb) +'px' + }); + + + this.initSlideshow(); + this.getOverlays(); + + var ratio = x.full / y.full; + x.calcExpanded(); + this.justify(x); + + y.calcExpanded(); + this.justify(y); + if (this.isHtml) this.htmlSizeOperations(); + if (this.overlayBox) this.sizeOverlayBox(0, 1); + + + if (this.allowSizeReduction) { + if (this.isImage) + this.correctRatio(ratio); + else this.fitOverlayBox(); + var ss = this.slideshow; + if (ss && this.last && ss.controls && ss.fixedControls) { + var pos = ss.overlayOptions.position || '', p; + for (var dim in hs.oPos) for (var i = 0; i < 5; i++) { + p = this[dim]; + if (pos.match(hs.oPos[dim][i])) { + p.pos = this.last[dim].pos + + (this.last[dim].p1 - p.p1) + + (this.last[dim].size - p.size) * [0, 0, .5, 1, 1][i]; + if (ss.fixedControls == 'fit') { + if (p.pos + p.size + p.p1 + p.p2 > p.scroll + p.clientSize - p.marginMax) + p.pos = p.scroll + p.clientSize - p.size - p.marginMin - p.marginMax - p.p1 - p.p2; + if (p.pos < p.scroll + p.marginMin) p.pos = p.scroll + p.marginMin; + } + } + } + } + if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) { + this.createFullExpand(); + if (this.overlays.length == 1) this.sizeOverlayBox(); + } + } + this.show(); + + } catch (e) { + this.error(e); + } +}, + + +setObjContainerSize : function(parent, auto) { + var c = hs.getElementByClass(parent, 'DIV', 'highslide-body'); + if (/(iframe|swf)/.test(this.objectType)) { + if (this.objectWidth) c.style.width = this.objectWidth +'px'; + if (this.objectHeight) c.style.height = this.objectHeight +'px'; + } +}, + +writeExtendedContent : function () { + if (this.hasExtendedContent) return; + var exp = this; + this.body = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body'); + if (this.objectType == 'iframe') { + this.showLoading(); + var ruler = hs.clearing.cloneNode(1); + this.body.appendChild(ruler); + this.newWidth = this.innerContent.offsetWidth; + if (!this.objectWidth) this.objectWidth = ruler.offsetWidth; + var hDiff = this.innerContent.offsetHeight - this.body.offsetHeight, + h = this.objectHeight || hs.page.height - hDiff - hs.marginTop - hs.marginBottom, + onload = this.objectLoadTime == 'before' ? + ' onload="if (hs.expanders['+ this.key +']) hs.expanders['+ this.key +'].contentLoaded()" ' : ''; + this.body.innerHTML += ''; + this.ruler = this.body.getElementsByTagName('div')[0]; + this.iframe = this.body.getElementsByTagName('iframe')[0]; + + if (this.objectLoadTime == 'after') this.correctIframeSize(); + + } + if (this.objectType == 'swf') { + this.body.id = this.body.id || 'hs-flash-id-' + this.key; + var a = this.swfOptions; + if (!a.params) a.params = {}; + if (typeof a.params.wmode == 'undefined') a.params.wmode = 'transparent'; + if (swfobject) swfobject.embedSWF(this.src, this.body.id, this.objectWidth, this.objectHeight, + a.version || '7', a.expressInstallSwfurl, a.flashvars, a.params, a.attributes); + } + this.hasExtendedContent = true; +}, +htmlGetSize : function() { + if (this.iframe && !this.objectHeight) { // loadtime before + this.iframe.style.height = this.body.style.height = this.getIframePageHeight() +'px'; + } + this.innerContent.appendChild(hs.clearing); + if (!this.x.full) this.x.full = this.innerContent.offsetWidth; + this.y.full = this.innerContent.offsetHeight; + this.innerContent.removeChild(hs.clearing); + if (hs.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) { // ie css bug + this.newHeight = parseInt(this.innerContent.currentStyle.height); + } + hs.setStyles( this.wrapper, { position: 'absolute', padding: '0'}); + hs.setStyles( this.content, { width: this.x.t +'px', height: this.y.t +'px'}); + +}, + +getIframePageHeight : function() { + var h; + try { + var doc = this.iDoc = this.iframe.contentDocument || this.iframe.contentWindow.document; + var clearing = doc.createElement('div'); + clearing.style.clear = 'both'; + doc.body.appendChild(clearing); + h = clearing.offsetTop; + if (hs.ie) h += parseInt(doc.body.currentStyle.marginTop) + + parseInt(doc.body.currentStyle.marginBottom) - 1; + } catch (e) { // other domain + h = 300; + } + return h; +}, +correctIframeSize : function () { + var wDiff = this.innerContent.offsetWidth - this.ruler.offsetWidth; + hs.discardElement(this.ruler); + if (wDiff < 0) wDiff = 0; + + var hDiff = this.innerContent.offsetHeight - this.iframe.offsetHeight; + if (this.iDoc && !this.objectHeight && !this.height && this.y.size == this.y.full) try { + this.iDoc.body.style.overflow = 'hidden'; + } catch (e) {} + hs.setStyles(this.iframe, { + width: Math.abs(this.x.size - wDiff) +'px', + height: Math.abs(this.y.size - hDiff) +'px' + }); + hs.setStyles(this.body, { + width: this.iframe.style.width, + height: this.iframe.style.height + }); + + this.scrollingContent = this.iframe; + this.scrollerDiv = this.scrollingContent; + +}, +htmlSizeOperations : function () { + + this.setObjContainerSize(this.innerContent); + + + if (this.objectType == 'swf' && this.objectLoadTime == 'before') this.writeExtendedContent(); + + // handle minimum size + if (this.x.size < this.x.full && !this.allowWidthReduction) this.x.size = this.x.full; + if (this.y.size < this.y.full && !this.allowHeightReduction) this.y.size = this.y.full; + this.scrollerDiv = this.innerContent; + hs.setStyles(this.mediumContent, { + position: 'relative', + width: this.x.size +'px' + }); + hs.setStyles(this.innerContent, { + border: 'none', + width: 'auto', + height: 'auto' + }); + var node = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body'); + if (node && !/(iframe|swf)/.test(this.objectType)) { + var cNode = node; // wrap to get true size + node = hs.createElement(cNode.nodeName, null, {overflow: 'hidden'}, null, true); + cNode.parentNode.insertBefore(node, cNode); + node.appendChild(hs.clearing); // IE6 + node.appendChild(cNode); + + var wDiff = this.innerContent.offsetWidth - node.offsetWidth; + var hDiff = this.innerContent.offsetHeight - node.offsetHeight; + node.removeChild(hs.clearing); + + var kdeBugCorr = hs.safari || navigator.vendor == 'KDE' ? 1 : 0; // KDE repainting bug + hs.setStyles(node, { + width: (this.x.size - wDiff - kdeBugCorr) +'px', + height: (this.y.size - hDiff) +'px', + overflow: 'auto', + position: 'relative' + } + ); + if (kdeBugCorr && cNode.offsetHeight > node.offsetHeight) { + node.style.width = (parseInt(node.style.width) + kdeBugCorr) + 'px'; + } + this.scrollingContent = node; + this.scrollerDiv = this.scrollingContent; + } + if (this.iframe && this.objectLoadTime == 'before') this.correctIframeSize(); + if (!this.scrollingContent && this.y.size < this.mediumContent.offsetHeight) this.scrollerDiv = this.content; + + if (this.scrollerDiv == this.content && !this.allowWidthReduction && !/(iframe|swf)/.test(this.objectType)) { + this.x.size += 17; // room for scrollbars + } + if (this.scrollerDiv && this.scrollerDiv.offsetHeight > this.scrollerDiv.parentNode.offsetHeight) { + setTimeout("try { hs.expanders["+ this.key +"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}", + hs.expandDuration); + } +}, + +getImageMapAreaCorrection : function(area) { + var c = area.coords.split(','); + for (var i = 0; i < c.length; i++) c[i] = parseInt(c[i]); + + if (area.shape.toLowerCase() == 'circle') { + this.x.tpos += c[0] - c[2]; + this.y.tpos += c[1] - c[2]; + this.x.t = this.y.t = 2 * c[2]; + } else { + var maxX, maxY, minX = maxX = c[0], minY = maxY = c[1]; + for (var i = 0; i < c.length; i++) { + if (i % 2 == 0) { + minX = Math.min(minX, c[i]); + maxX = Math.max(maxX, c[i]); + } else { + minY = Math.min(minY, c[i]); + maxY = Math.max(maxY, c[i]); + } + } + this.x.tpos += minX; + this.x.t = maxX - minX; + this.y.tpos += minY; + this.y.t = maxY - minY; + } +}, +justify : function (p, moveOnly) { + var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; + + if (tgt && tgt.match(/ /)) { + tgtArr = tgt.split(' '); + tgt = tgtArr[0]; + } + if (tgt && hs.$(tgt)) { + p.pos = hs.getPosition(hs.$(tgt))[dim]; + if (tgtArr && tgtArr[1] && tgtArr[1].match(/^[-]?[0-9]+px$/)) + p.pos += parseInt(tgtArr[1]); + if (p.size < p.minSize) p.size = p.minSize; + + } else if (p.justify == 'auto' || p.justify == 'center') { + + var hasMovedMin = false; + + var allowReduce = p.exp.allowSizeReduction; + if (p.justify == 'center') + p.pos = Math.round(p.scroll + (p.clientSize + p.marginMin - p.marginMax - p.get('wsize')) / 2); + else + p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); + if (p.pos < p.scroll + p.marginMin) { + p.pos = p.scroll + p.marginMin; + hasMovedMin = true; + } + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) { + if (!moveOnly && hasMovedMin && allowReduce) { + p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize')); + } else if (p.get('wsize') < p.get('fitsize')) { + p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize'); + } else { // image larger than viewport + p.pos = p.scroll + p.marginMin; + if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); + } + } + + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + + + } else if (p.justify == 'max') { + p.pos = Math.floor(p.pos - p.size + p.t); + } + + + if (p.pos < p.marginMin) { + var tmpMin = p.pos; + p.pos = p.marginMin; + + if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin); + + } +}, + +correctRatio : function(ratio) { + var x = this.x, + y = this.y, + changed = false, + xSize = Math.min(x.full, x.size), + ySize = Math.min(y.full, y.size), + useBox = (this.useBox || hs.padToMinWidth); + + if (xSize / ySize > ratio) { // width greater + xSize = ySize * ratio; + if (xSize < x.minSize) { // below minWidth + xSize = x.minSize; + ySize = xSize / ratio; + } + changed = true; + + } else if (xSize / ySize < ratio) { // height greater + ySize = xSize / ratio; + changed = true; + } + + if (hs.padToMinWidth && x.full < x.minSize) { + x.imgSize = x.full; + y.size = y.imgSize = y.full; + } else if (this.useBox) { + x.imgSize = xSize; + y.imgSize = ySize; + } else { + x.size = xSize; + y.size = ySize; + } + changed = this.fitOverlayBox(this.useBox ? null : ratio, changed); + if (useBox && y.size < y.imgSize) { + y.imgSize = y.size; + x.imgSize = y.size * ratio; + } + if (changed || useBox) { + x.pos = x.tpos - x.cb + x.tb; + x.minSize = x.size; + this.justify(x, true); + + y.pos = y.tpos - y.cb + y.tb; + y.minSize = y.size; + this.justify(y, true); + if (this.overlayBox) this.sizeOverlayBox(); + } + + +}, +fitOverlayBox : function(ratio, changed) { + var x = this.x, y = this.y; + if (this.overlayBox && (this.isImage || this.allowHeightReduction)) { + while (y.size > this.minHeight && x.size > this.minWidth + && y.get('wsize') > y.get('fitsize')) { + y.size -= 10; + if (ratio) x.size = y.size * ratio; + this.sizeOverlayBox(0, 1); + changed = true; + } + } + return changed; +}, + +reflow : function () { + if (this.scrollerDiv) { + var h = /iframe/i.test(this.scrollerDiv.tagName) ? (this.getIframePageHeight() + 1) +'px' : 'auto'; + if (this.body) this.body.style.height = h; + this.scrollerDiv.style.height = h; + this.y.setSize(this.innerContent.offsetHeight); + } +}, + +show : function () { + var x = this.x, y = this.y; + this.doShowHide('hidden'); + hs.fireEvent(this, 'onBeforeExpand'); + if (this.slideshow && this.slideshow.thumbstrip) this.slideshow.thumbstrip.selectThumb(); + + // Apply size change + this.changeSize( + 1, { + wrapper: { + width : x.get('wsize'), + height : y.get('wsize'), + left: x.pos, + top: y.pos + }, + content: { + left: x.p1 + x.get('imgPad'), + top: y.p1 + y.get('imgPad'), + width:x.imgSize ||x.size, + height:y.imgSize ||y.size + } + }, + hs.expandDuration + ); +}, + +changeSize : function(up, to, dur) { + // transition + var trans = this.transitions, + other = up ? (this.last ? this.last.a : null) : hs.upcoming, + t = (trans[1] && other + && hs.getParam(other, 'transitions')[1] == trans[1]) ? + trans[1] : trans[0]; + + if (this[t] && t != 'expand') { + this[t](up, to); + return; + } + + if (this.outline && !this.outlineWhileAnimating) { + if (up) this.outline.setPosition(); + else this.outline.destroy( + (this.isHtml && this.preserveContent)); + } + + + if (!up) this.destroyOverlays(); + + var exp = this, + x = exp.x, + y = exp.y, + easing = this.easing; + if (!up) easing = this.easingClose || easing; + var after = up ? + function() { + + if (exp.outline) exp.outline.table.style.visibility = "visible"; + setTimeout(function() { + exp.afterExpand(); + }, 50); + } : + function() { + exp.afterClose(); + }; + if (up) hs.setStyles( this.wrapper, { + width: x.t +'px', + height: y.t +'px' + }); + if (up && this.isHtml) { + hs.setStyles(this.wrapper, { + left: (x.tpos - x.cb + x.tb) +'px', + top: (y.tpos - y.cb + y.tb) +'px' + }); + } + if (this.fadeInOut) { + hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 }); + hs.extend(to.wrapper, { opacity: up }); + } + hs.animate( this.wrapper, to.wrapper, { + duration: dur, + easing: easing, + step: function(val, args) { + if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { + var fac = up ? args.pos : 1 - args.pos; + var pos = { + w: x.t + (x.get('wsize') - x.t) * fac, + h: y.t + (y.get('wsize') - y.t) * fac, + x: x.tpos + (x.pos - x.tpos) * fac, + y: y.tpos + (y.pos - y.tpos) * fac + }; + exp.outline.setPosition(pos, 0, 1); + } + if (exp.isHtml) { + if (args.prop == 'left') + exp.mediumContent.style.left = (x.pos - val) +'px'; + if (args.prop == 'top') + exp.mediumContent.style.top = (y.pos - val) +'px'; + } + } + }); + hs.animate( this.content, to.content, dur, easing, after); + if (up) { + this.wrapper.style.visibility = 'visible'; + this.content.style.visibility = 'visible'; + if (this.isHtml) this.innerContent.style.visibility = 'visible'; + this.a.className += ' highslide-active-anchor'; + } +}, + + + +fade : function(up, to) { + this.outlineWhileAnimating = false; + var exp = this, t = up ? hs.expandDuration : 0; + + if (up) { + hs.animate(this.wrapper, to.wrapper, 0); + hs.setStyles(this.wrapper, { opacity: 0, visibility: 'visible' }); + hs.animate(this.content, to.content, 0); + this.content.style.visibility = 'visible'; + + hs.animate(this.wrapper, { opacity: 1 }, t, null, + function() { exp.afterExpand(); }); + } + + if (this.outline) { + this.outline.table.style.zIndex = this.wrapper.style.zIndex; + var dir = up || -1, + offset = this.outline.offset, + startOff = up ? 3 : offset, + endOff = up? offset : 3; + for (var i = startOff; dir * i <= dir * endOff; i += dir, t += 25) { + (function() { + var o = up ? endOff - i : startOff - i; + setTimeout(function() { + exp.outline.setPosition(0, o, 1); + }, t); + })(); + } + } + + + if (up) {}//setTimeout(function() { exp.afterExpand(); }, t+50); + else { + setTimeout( function() { + if (exp.outline) exp.outline.destroy(exp.preserveContent); + + exp.destroyOverlays(); + + hs.animate( exp.wrapper, { opacity: 0 }, hs.restoreDuration, null, function(){ + exp.afterClose(); + }); + }, t); + } +}, +crossfade : function (up, to, from) { + if (!up) return; + var exp = this, + last = this.last, + x = this.x, + y = this.y, + lastX = last.x, + lastY = last.y, + wrapper = this.wrapper, + content = this.content, + overlayBox = this.overlayBox; + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + hs.setStyles(content, { + width: (x.imgSize || x.size) +'px', + height: (y.imgSize || y.size) +'px' + }); + if (overlayBox) overlayBox.style.overflow = 'visible'; + this.outline = last.outline; + if (this.outline) this.outline.exp = exp; + last.outline = null; + var fadeBox = hs.createElement('div', { + className: 'highslide-'+ this.contentType + }, { + position: 'absolute', + zIndex: 4, + overflow: 'hidden', + display: 'none' + } + ); + var names = { oldImg: last, newImg: this }; + for (var n in names) { + this[n] = names[n].content.cloneNode(1); + hs.setStyles(this[n], { + position: 'absolute', + border: 0, + visibility: 'visible' + }); + fadeBox.appendChild(this[n]); + } + wrapper.appendChild(fadeBox); + if (this.isHtml) hs.setStyles(this.mediumContent, { + left: 0, + top: 0 + }); + if (overlayBox) { + overlayBox.className = ''; + wrapper.appendChild(overlayBox); + } + fadeBox.style.display = ''; + last.content.style.display = 'none'; + + + if (hs.safari && hs.uaVersion < 525) { + this.wrapper.style.visibility = 'visible'; + } + hs.animate(wrapper, { + width: x.size + }, { + duration: hs.transitionDuration, + step: function(val, args) { + var pos = args.pos, + invPos = 1 - pos; + var prop, + size = {}, + props = ['pos', 'size', 'p1', 'p2']; + for (var n in props) { + prop = props[n]; + size['x'+ prop] = Math.round(invPos * lastX[prop] + pos * x[prop]); + size['y'+ prop] = Math.round(invPos * lastY[prop] + pos * y[prop]); + size.ximgSize = Math.round( + invPos * (lastX.imgSize || lastX.size) + pos * (x.imgSize || x.size)); + size.ximgPad = Math.round(invPos * lastX.get('imgPad') + pos * x.get('imgPad')); + size.yimgSize = Math.round( + invPos * (lastY.imgSize || lastY.size) + pos * (y.imgSize || y.size)); + size.yimgPad = Math.round(invPos * lastY.get('imgPad') + pos * y.get('imgPad')); + } + if (exp.outline) exp.outline.setPosition({ + x: size.xpos, + y: size.ypos, + w: size.xsize + size.xp1 + size.xp2 + 2 * x.cb, + h: size.ysize + size.yp1 + size.yp2 + 2 * y.cb + }); + last.wrapper.style.clip = 'rect(' + + (size.ypos - lastY.pos)+'px, ' + + (size.xsize + size.xp1 + size.xp2 + size.xpos + 2 * lastX.cb - lastX.pos) +'px, ' + + (size.ysize + size.yp1 + size.yp2 + size.ypos + 2 * lastY.cb - lastY.pos) +'px, ' + + (size.xpos - lastX.pos)+'px)'; + + hs.setStyles(content, { + top: (size.yp1 + y.get('imgPad')) +'px', + left: (size.xp1 + x.get('imgPad')) +'px', + marginTop: (y.pos - size.ypos) +'px', + marginLeft: (x.pos - size.xpos) +'px' + }); + hs.setStyles(wrapper, { + top: size.ypos +'px', + left: size.xpos +'px', + width: (size.xp1 + size.xp2 + size.xsize + 2 * x.cb)+ 'px', + height: (size.yp1 + size.yp2 + size.ysize + 2 * y.cb) + 'px' + }); + hs.setStyles(fadeBox, { + width: (size.ximgSize || size.xsize) + 'px', + height: (size.yimgSize || size.ysize) +'px', + left: (size.xp1 + size.ximgPad) +'px', + top: (size.yp1 + size.yimgPad) +'px', + visibility: 'visible' + }); + + hs.setStyles(exp.oldImg, { + top: (lastY.pos - size.ypos + lastY.p1 - size.yp1 + lastY.get('imgPad') - size.yimgPad)+'px', + left: (lastX.pos - size.xpos + lastX.p1 - size.xp1 + lastX.get('imgPad') - size.ximgPad)+'px' + }); + + hs.setStyles(exp.newImg, { + opacity: pos, + top: (y.pos - size.ypos + y.p1 - size.yp1 + y.get('imgPad') - size.yimgPad) +'px', + left: (x.pos - size.xpos + x.p1 - size.xp1 + x.get('imgPad') - size.ximgPad) +'px' + }); + if (overlayBox) hs.setStyles(overlayBox, { + width: size.xsize + 'px', + height: size.ysize +'px', + left: (size.xp1 + x.cb) +'px', + top: (size.yp1 + y.cb) +'px' + }); + }, + complete: function () { + wrapper.style.visibility = content.style.visibility = 'visible'; + content.style.display = 'block'; + hs.discardElement(fadeBox); + exp.afterExpand(); + last.afterClose(); + exp.last = null; + } + + }); +}, +reuseOverlay : function(o, el) { + if (!this.last) return false; + for (var i = 0; i < this.last.overlays.length; i++) { + var oDiv = hs.$('hsId'+ this.last.overlays[i]); + if (oDiv && oDiv.hsId == o.hsId) { + this.genOverlayBox(); + oDiv.reuse = this.key; + hs.push(this.overlays, this.last.overlays[i]); + return true; + } + } + return false; +}, + + +afterExpand : function() { + this.isExpanded = true; + this.focus(); + + if (this.isHtml && this.objectLoadTime == 'after') this.writeExtendedContent(); + if (this.iframe) { + try { + var exp = this, + doc = this.iframe.contentDocument || this.iframe.contentWindow.document; + hs.addEventListener(doc, 'mousedown', function () { + if (hs.focusKey != exp.key) exp.focus(); + }); + } catch(e) {} + if (hs.ie && typeof this.isClosing != 'boolean') // first open + this.iframe.style.width = (this.objectWidth - 1) +'px'; // hasLayout + } + if (this.dimmingOpacity) hs.dim(this); + if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; + this.prepareNextOutline(); + var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; + this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize') + && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize'); + if (this.overlayBox) this.showOverlays(); + hs.fireEvent(this, 'onAfterExpand'); + +}, + + +prepareNextOutline : function() { + var key = this.key; + var outlineType = this.outlineType; + new hs.Outline(outlineType, + function () { try { hs.expanders[key].preloadNext(); } catch (e) {} }); +}, + + +preloadNext : function() { + var next = this.getAdjacentAnchor(1); + if (next && next.onclick.toString().match(/hs\.expand/)) + var img = hs.createElement('img', { src: hs.getSrc(next) }); +}, + + +getAdjacentAnchor : function(op) { + var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none']; + if (as && !as[current + op] && this.slideshow && this.slideshow.repeat) { + if (op == 1) return as[0]; + else if (op == -1) return as[as.length-1]; + } + return (as && as[current + op]) || null; +}, + +getAnchorIndex : function() { + var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; + if (arr) for (var i = 0; i < arr.length; i++) { + if (arr[i] == this.a) return i; + } + return null; +}, + + +getNumber : function() { + if (this[this.numberPosition]) { + var arr = hs.anchors.groups[this.slideshowGroup || 'none']; + if (arr) { + var s = hs.lang.number.replace('%1', this.getAnchorIndex() + 1).replace('%2', arr.length); + this[this.numberPosition].innerHTML = + '
'+ s +'
'+ this[this.numberPosition].innerHTML; + } + } +}, +initSlideshow : function() { + if (!this.last) { + for (var i = 0; i < hs.slideshows.length; i++) { + var ss = hs.slideshows[i], sg = ss.slideshowGroup; + if (typeof sg == 'undefined' || sg === null || sg === this.slideshowGroup) + this.slideshow = new hs.Slideshow(this.key, ss); + } + } else { + this.slideshow = this.last.slideshow; + } + var ss = this.slideshow; + if (!ss) return; + var key = ss.expKey = this.key; + + ss.checkFirstAndLast(); + ss.disable('full-expand'); + if (ss.controls) { + this.createOverlay(hs.extend(ss.overlayOptions || {}, { + overlayId: ss.controls, + hsId: 'controls', + zIndex: 5 + })); + } + if (ss.thumbstrip) ss.thumbstrip.add(this); + if (!this.last && this.autoplay) ss.play(true); + if (ss.autoplay) { + ss.autoplay = setTimeout(function() { + hs.next(key); + }, (ss.interval || 500)); + } +}, + +cancelLoading : function() { + hs.discardElement (this.wrapper); + hs.expanders[this.key] = null; + if (hs.upcoming == this.a) hs.upcoming = null; + hs.undim(this.key); + if (this.loading) hs.loading.style.left = '-9999px'; + hs.fireEvent(this, 'onHideLoading'); +}, + +writeCredits : function () { + if (this.credits) return; + this.credits = hs.createElement('a', { + href: hs.creditsHref, + target: hs.creditsTarget, + className: 'highslide-credits', + innerHTML: hs.lang.creditsText, + title: hs.lang.creditsTitle + }); + this.createOverlay({ + overlayId: this.credits, + position: this.creditsPosition || 'top left', + hsId: 'credits' + }); +}, + +getInline : function(types, addOverlay) { + for (var i = 0; i < types.length; i++) { + var type = types[i], s = null; + if (type == 'caption' && !hs.fireEvent(this, 'onBeforeGetCaption')) return; + else if (type == 'heading' && !hs.fireEvent(this, 'onBeforeGetHeading')) return; + if (!this[type +'Id'] && this.thumbsUserSetId) + this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId; + if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']); + if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try { + s = eval(this[type +'Eval']); + } catch (e) {} + if (!this[type] && this[type +'Text']) { + s = this[type +'Text']; + } + if (!this[type] && !s) { + this[type] = hs.getNode(this.a['_'+ type + 'Id']); + if (!this[type]) { + var next = this.a.nextSibling; + while (next && !hs.isHsAnchor(next)) { + if ((new RegExp('highslide-'+ type)).test(next.className || null)) { + if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++; + this[type] = hs.getNode(next.id); + break; + } + next = next.nextSibling; + } + } + } + if (!this[type] && !s && this.numberPosition == type) s = '\n'; + + if (!this[type] && s) this[type] = hs.createElement('div', + { className: 'highslide-'+ type, innerHTML: s } ); + + if (addOverlay && this[type]) { + var o = { position: (type == 'heading') ? 'above' : 'below' }; + for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x]; + o.overlayId = this[type]; + this.createOverlay(o); + } + } +}, + + +// on end move and resize +doShowHide : function(visibility) { + if (hs.hideSelects) this.showHideElements('SELECT', visibility); + if (hs.hideIframes) this.showHideElements('IFRAME', visibility); + if (hs.geckoMac) this.showHideElements('*', visibility); +}, +showHideElements : function (tagName, visibility) { + var els = document.getElementsByTagName(tagName); + var prop = tagName == '*' ? 'overflow' : 'visibility'; + for (var i = 0; i < els.length; i++) { + if (prop == 'visibility' || (document.defaultView.getComputedStyle( + els[i], "").getPropertyValue('overflow') == 'auto' + || els[i].getAttribute('hidden-by') != null)) { + var hiddenBy = els[i].getAttribute('hidden-by'); + if (visibility == 'visible' && hiddenBy) { + hiddenBy = hiddenBy.replace('['+ this.key +']', ''); + els[i].setAttribute('hidden-by', hiddenBy); + if (!hiddenBy) els[i].style[prop] = els[i].origProp; + } else if (visibility == 'hidden') { // hide if behind + var elPos = hs.getPosition(els[i]); + elPos.w = els[i].offsetWidth; + elPos.h = els[i].offsetHeight; + if (!this.dimmingOpacity) { // hide all if dimming + + var clearsX = (elPos.x + elPos.w < this.x.get('opos') + || elPos.x > this.x.get('opos') + this.x.get('osize')); + var clearsY = (elPos.y + elPos.h < this.y.get('opos') + || elPos.y > this.y.get('opos') + this.y.get('osize')); + } + var wrapperKey = hs.getWrapperKey(els[i]); + if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image + if (!hiddenBy) { + els[i].setAttribute('hidden-by', '['+ this.key +']'); + els[i].origProp = els[i].style[prop]; + els[i].style[prop] = 'hidden'; + + } else if (hiddenBy.indexOf('['+ this.key +']') == -1) { + els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']'); + } + } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) + && wrapperKey != this.key) { // on move + els[i].setAttribute('hidden-by', ''); + els[i].style[prop] = els[i].origProp || ''; + } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) { + els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', '')); + } + + } + } + } +}, + +focus : function() { + this.wrapper.style.zIndex = hs.zIndexCounter += 2; + // blur others + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && i == hs.focusKey) { + var blurExp = hs.expanders[i]; + blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur'; + if (blurExp.isImage) { + blurExp.content.style.cursor = hs.ieLt7 ? 'hand' : 'pointer'; + blurExp.content.title = hs.lang.focusTitle; + } + hs.fireEvent(blurExp, 'onBlur'); + } + } + + // focus this + if (this.outline) this.outline.table.style.zIndex + = this.wrapper.style.zIndex - 1; + this.content.className = 'highslide-'+ this.contentType; + if (this.isImage) { + this.content.title = hs.lang.restoreTitle; + + if (hs.restoreCursor) { + hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer'; + if (hs.ieLt7 && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand'; + this.content.style.cursor = hs.styleRestoreCursor; + } + } + hs.focusKey = this.key; + hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + hs.fireEvent(this, 'onFocus'); +}, +moveTo: function(x, y) { + this.x.setPos(x); + this.y.setPos(y); +}, +resize : function (e) { + var w, h, r = e.width / e.height; + w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full)); + if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full; + h = this.isHtml ? e.height + e.dY : w / r; + if (h < Math.min(this.minHeight, this.y.full)) { + h = Math.min(this.minHeight, this.y.full); + if (this.isImage) w = h * r; + } + this.resizeTo(w, h); +}, +resizeTo: function(w, h) { + this.y.setSize(h); + this.x.setSize(w); + this.wrapper.style.height = this.y.get('wsize') +'px'; +}, + +close : function() { + if (this.isClosing || !this.isExpanded) return; + if (this.transitions[1] == 'crossfade' && hs.upcoming) { + hs.getExpander(hs.upcoming).cancelLoading(); + hs.upcoming = null; + } + if (!hs.fireEvent(this, 'onBeforeClose')) return; + this.isClosing = true; + if (this.slideshow && !hs.upcoming) this.slideshow.pause(); + + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + + try { + if (this.isHtml) this.htmlPrepareClose(); + this.content.style.cursor = 'default'; + this.changeSize( + 0, { + wrapper: { + width : this.x.t, + height : this.y.t, + left: this.x.tpos - this.x.cb + this.x.tb, + top: this.y.tpos - this.y.cb + this.y.tb + }, + content: { + left: 0, + top: 0, + width: this.x.t, + height: this.y.t + } + }, hs.restoreDuration + ); + } catch (e) { this.afterClose(); } +}, + +htmlPrepareClose : function() { + if (hs.geckoMac) { // bad redraws + if (!hs.mask) hs.mask = hs.createElement('div', null, + { position: 'absolute' }, hs.container); + hs.setStyles(hs.mask, { width: this.x.size +'px', height: this.y.size +'px', + left: this.x.pos +'px', top: this.y.pos +'px', display: 'block' }); + } + if (this.objectType == 'swf') try { hs.$(this.body.id).StopPlay(); } catch (e) {} + + if (this.objectLoadTime == 'after' && !this.preserveContent) this.destroyObject(); + if (this.scrollerDiv && this.scrollerDiv != this.scrollingContent) + this.scrollerDiv.style.overflow = 'hidden'; +}, + +destroyObject : function () { + if (hs.ie && this.iframe) + try { this.iframe.contentWindow.document.body.innerHTML = ''; } catch (e) {} + if (this.objectType == 'swf') swfobject.removeSWF(this.body.id); + this.body.innerHTML = ''; +}, + +sleep : function() { + if (this.outline) this.outline.table.style.display = 'none'; + this.releaseMask = null; + this.wrapper.style.display = 'none'; + this.isExpanded = false; + hs.push(hs.sleeping, this); +}, + +awake : function() {try { + + hs.expanders[this.key] = this; + + if (!hs.allowMultipleInstances &&hs.focusKey != this.key) { + try { hs.expanders[hs.focusKey].close(); } catch (e){} + } + + var z = hs.zIndexCounter++, stl = { display: '', zIndex: z }; + hs.setStyles (this.wrapper, stl); + this.isClosing = false; + + var o = this.outline || 0; + if (o) { + if (!this.outlineWhileAnimating) stl.visibility = 'hidden'; + hs.setStyles (o.table, stl); + } + if (this.slideshow) { + this.initSlideshow(); + } + + this.show(); +} catch (e) {} + + +}, + +createOverlay : function (o) { + var el = o.overlayId, + relToVP = (o.relativeTo == 'viewport' && !/panel$/.test(o.position)); + if (typeof el == 'string') el = hs.getNode(el); + if (o.html) el = hs.createElement('div', { innerHTML: o.html }); + if (!el || typeof el == 'string') return; + if (!hs.fireEvent(this, 'onCreateOverlay', { overlay: el })) return; + el.style.display = 'block'; + o.hsId = o.hsId || o.overlayId; + if (this.transitions[1] == 'crossfade' && this.reuseOverlay(o, el)) return; + this.genOverlayBox(); + var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto'; + if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px'; + var overlay = hs.createElement( + 'div', { + id: 'hsId'+ hs.idCounter++, + hsId: o.hsId + }, { + position: 'absolute', + visibility: 'hidden', + width: width, + direction: hs.lang.cssDirection || '', + opacity: 0 + }, + relToVP ? hs.viewport :this.overlayBox, + true + ); + if (relToVP) overlay.hsKey = this.key; + + overlay.appendChild(el); + hs.extend(overlay, { + opacity: 1, + offsetX: 0, + offsetY: 0, + dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250 + }); + hs.extend(overlay, o); + + + if (this.gotOverlays) { + this.positionOverlay(overlay); + if (!overlay.hideOnMouseOut || this.mouseIsOver) + hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur); + } + hs.push(this.overlays, hs.idCounter - 1); +}, +positionOverlay : function(overlay) { + var p = overlay.position || 'middle center', + relToVP = (overlay.relativeTo == 'viewport'), + offX = overlay.offsetX, + offY = overlay.offsetY; + if (relToVP) { + hs.viewport.style.display = 'block'; + overlay.hsKey = this.key; + if (overlay.offsetWidth > overlay.parentNode.offsetWidth) + overlay.style.width = '100%'; + } else + if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay); + if (/left$/.test(p)) overlay.style.left = offX +'px'; + + if (/center$/.test(p)) hs.setStyles (overlay, { + left: '50%', + marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px' + }); + + if (/right$/.test(p)) overlay.style.right = - offX +'px'; + + if (/^leftpanel$/.test(p)) { + hs.setStyles(overlay, { + right: '100%', + marginRight: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p1 = overlay.offsetWidth; + + } else if (/^rightpanel$/.test(p)) { + hs.setStyles(overlay, { + left: '100%', + marginLeft: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p2 = overlay.offsetWidth; + } + var parOff = overlay.parentNode.offsetHeight; + overlay.style.height = 'auto'; + if (relToVP && overlay.offsetHeight > parOff) + overlay.style.height = hs.ieLt7 ? parOff +'px' : '100%'; + + if (/^top/.test(p)) overlay.style.top = offY +'px'; + if (/^middle/.test(p)) hs.setStyles (overlay, { + top: '50%', + marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px' + }); + if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px'; + if (/^above$/.test(p)) { + hs.setStyles(overlay, { + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + bottom: '100%', + marginBottom: this.y.cb +'px', + width: 'auto' + }); + this.y.p1 = overlay.offsetHeight; + + } else if (/^below$/.test(p)) { + hs.setStyles(overlay, { + position: 'relative', + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + top: '100%', + marginTop: this.y.cb +'px', + width: 'auto' + }); + this.y.p2 = overlay.offsetHeight; + overlay.style.position = 'absolute'; + } +}, + +getOverlays : function() { + this.getInline(['heading', 'caption'], true); + this.getNumber(); + if (this.caption) hs.fireEvent(this, 'onAfterGetCaption'); + if (this.heading) hs.fireEvent(this, 'onAfterGetHeading'); + if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move'; + if (hs.showCredits) this.writeCredits(); + for (var i = 0; i < hs.overlays.length; i++) { + var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup; + if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId) + || (sg && sg === this.slideshowGroup)) { + if (this.isImage || (this.isHtml && o.useOnHtml)) + this.createOverlay(o); + } + } + var os = []; + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (/panel$/.test(o.position)) this.positionOverlay(o); + else hs.push(os, o); + } + for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]); + this.gotOverlays = true; +}, +genOverlayBox : function() { + if (!this.overlayBox) this.overlayBox = hs.createElement ( + 'div', { + className: this.wrapperClassName + }, { + position : 'absolute', + width: (this.x.size || (this.useBox ? this.width : null) + || this.x.full) +'px', + height: (this.y.size || this.y.full) +'px', + visibility : 'hidden', + overflow : 'hidden', + zIndex : hs.ie ? 4 : 'auto' + }, + hs.container, + true + ); +}, +sizeOverlayBox : function(doWrapper, doPanels) { + var overlayBox = this.overlayBox, + x = this.x, + y = this.y; + hs.setStyles( overlayBox, { + width: x.size +'px', + height: y.size +'px' + }); + if (doWrapper || doPanels) { + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat'); + if (o && /^(above|below)$/.test(o.position)) { + if (ie6) { + o.style.width = (overlayBox.offsetWidth + 2 * x.cb + + x.p1 + x.p2) +'px'; + } + y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight; + } + if (o && ie6 && /^(left|right)panel$/.test(o.position)) { + o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px'; + } + } + } + if (doWrapper) { + hs.setStyles(this.content, { + top: y.p1 +'px' + }); + hs.setStyles(overlayBox, { + top: (y.p1 + y.cb) +'px' + }); + } +}, + +showOverlays : function() { + var b = this.overlayBox; + b.className = ''; + hs.setStyles(b, { + top: (this.y.p1 + this.y.cb) +'px', + left: (this.x.p1 + this.x.cb) +'px', + overflow : 'visible' + }); + if (hs.safari) b.style.visibility = 'visible'; + this.wrapper.appendChild (b); + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + o.style.zIndex = o.zIndex || 4; + if (!o.hideOnMouseOut || this.mouseIsOver) { + o.style.visibility = 'visible'; + hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: o.opacity }, o.dur); + } + } +}, + +destroyOverlays : function() { + if (!this.overlays.length) return; + if (this.slideshow) { + var c = this.slideshow.controls; + if (c && hs.getExpander(c) == this) c.parentNode.removeChild(c); + } + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (o && o.parentNode == hs.viewport && hs.getExpander(o) == this) hs.discardElement(o); + } + if (this.isHtml && this.preserveContent) { + this.overlayBox.style.top = '-9999px'; + hs.container.appendChild(this.overlayBox); + } else + hs.discardElement(this.overlayBox); +}, + + + +createFullExpand : function () { + if (this.slideshow && this.slideshow.controls) { + this.slideshow.enable('full-expand'); + return; + } + this.fullExpandLabel = hs.createElement( + 'a', { + href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();', + title: hs.lang.fullExpandTitle, + className: 'highslide-full-expand' + } + ); + if (!hs.fireEvent(this, 'onCreateFullExpand')) return; + + this.createOverlay({ + overlayId: this.fullExpandLabel, + position: hs.fullExpandPosition, + hideOnMouseOut: true, + opacity: hs.fullExpandOpacity + }); +}, + +doFullExpand : function () { + try { + if (!hs.fireEvent(this, 'onDoFullExpand')) return; + if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel); + + this.focus(); + var xSize = this.x.size, + ySize = this.y.size; + this.resizeTo(this.x.full, this.y.full); + + var xpos = this.x.pos - (this.x.size - xSize) / 2; + if (xpos < hs.marginLeft) xpos = hs.marginLeft; + + var ypos = this.y.pos - (this.y.size - ySize) / 2; + if (ypos < hs.marginTop) ypos = hs.marginTop; + + this.moveTo(xpos, ypos); + this.doShowHide('hidden'); + + } catch (e) { + this.error(e); + } +}, + + +afterClose : function () { + this.a.className = this.a.className.replace('highslide-active-anchor', ''); + + this.doShowHide('visible'); + + if (this.isHtml && this.preserveContent + && this.transitions[1] != 'crossfade') { + this.sleep(); + } else { + if (this.outline && this.outlineWhileAnimating) this.outline.destroy(); + + hs.discardElement(this.wrapper); + } + if (hs.mask) hs.mask.style.display = 'none'; + this.destroyOverlays(); + if (!hs.viewport.childNodes.length) hs.viewport.style.display = 'none'; + + if (this.dimmingOpacity) hs.undim(this.key); + hs.fireEvent(this, 'onAfterClose'); + hs.expanders[this.key] = null; + hs.reOrder(); +} + +}; + + +// hs.Ajax object prototype +hs.Ajax = function (a, content, pre) { + this.a = a; + this.content = content; + this.pre = pre; +}; + +hs.Ajax.prototype = { +run : function () { + var xhr; + if (!this.src) this.src = hs.getSrc(this.a); + if (this.src.match('#')) { + var arr = this.src.split('#'); + this.src = arr[0]; + this.id = arr[1]; + } + if (hs.cachedGets[this.src]) { + this.cachedGet = hs.cachedGets[this.src]; + if (this.id) this.getElementContent(); + else this.loadHTML(); + return; + } + try { xhr = new XMLHttpRequest(); } + catch (e) { + try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } + catch (e) { + try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } + catch (e) { this.onError(); } + } + } + var pThis = this; + xhr.onreadystatechange = function() { + if(pThis.xhr.readyState == 4) { + if (pThis.id) pThis.getElementContent(); + else pThis.loadHTML(); + } + }; + var src = this.src; + this.xhr = xhr; + if (hs.forceAjaxReload) + src = src.replace(/$/, (/\?/.test(src) ? '&' : '?') +'dummy='+ (new Date()).getTime()); + xhr.open('GET', src, true); + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xhr.send(null); +}, + +getElementContent : function() { + hs.init(); + var attribs = window.opera || hs.ie6SSL ? { src: 'about:blank' } : null; + + this.iframe = hs.createElement('iframe', attribs, + { position: 'absolute', top: '-9999px' }, hs.container); + + this.loadHTML(); +}, + +loadHTML : function() { + var s = this.cachedGet || this.xhr.responseText, + regBody; + if (this.pre) hs.cachedGets[this.src] = s; + if (!hs.ie || hs.uaVersion >= 5.5) { + s = s.replace(new RegExp(']*>', 'gi'), '') + .replace(new RegExp(']*>.*?', 'gi'), ''); + if (this.iframe) { + var doc = this.iframe.contentDocument; + if (!doc && this.iframe.contentWindow) doc = this.iframe.contentWindow.document; + if (!doc) { // Opera + var pThis = this; + setTimeout(function() { pThis.loadHTML(); }, 25); + return; + } + doc.open(); + doc.write(s); + doc.close(); + try { s = doc.getElementById(this.id).innerHTML; } catch (e) { + try { s = this.iframe.document.getElementById(this.id).innerHTML; } catch (e) {} // opera + } + hs.discardElement(this.iframe); + } else { + regBody = /(]*>|<\/body>)/ig; + if (regBody.test(s)) s = s.split(regBody)[hs.ieLt9 ? 1 : 2]; + + } + } + hs.getElementByClass(this.content, 'DIV', 'highslide-body').innerHTML = s; + this.onLoad(); + for (var x in this) this[x] = null; +} +}; + + +hs.Slideshow = function (expKey, options) { + if (hs.dynamicallyUpdateAnchors !== false) hs.updateAnchors(); + this.expKey = expKey; + for (var x in options) this[x] = options[x]; + if (this.useControls) this.getControls(); + if (this.thumbstrip) this.thumbstrip = hs.Thumbstrip(this); +}; +hs.Slideshow.prototype = { +getControls: function() { + this.controls = hs.createElement('div', { innerHTML: hs.replaceLang(hs.skin.controls) }, + null, hs.container); + + var buttons = ['play', 'pause', 'previous', 'next', 'move', 'full-expand', 'close']; + this.btn = {}; + var pThis = this; + for (var i = 0; i < buttons.length; i++) { + this.btn[buttons[i]] = hs.getElementByClass(this.controls, 'li', 'highslide-'+ buttons[i]); + this.enable(buttons[i]); + } + this.btn.pause.style.display = 'none'; + //this.disable('full-expand'); +}, +checkFirstAndLast: function() { + if (this.repeat || !this.controls) return; + var exp = hs.expanders[this.expKey], + cur = exp.getAnchorIndex(), + re = /disabled$/; + if (cur == 0) + this.disable('previous'); + else if (re.test(this.btn.previous.getElementsByTagName('a')[0].className)) + this.enable('previous'); + if (cur + 1 == hs.anchors.groups[exp.slideshowGroup || 'none'].length) { + this.disable('next'); + this.disable('play'); + } else if (re.test(this.btn.next.getElementsByTagName('a')[0].className)) { + this.enable('next'); + this.enable('play'); + } +}, +enable: function(btn) { + if (!this.btn) return; + var sls = this, a = this.btn[btn].getElementsByTagName('a')[0], re = /disabled$/; + a.onclick = function() { + sls[btn](); + return false; + }; + if (re.test(a.className)) a.className = a.className.replace(re, ''); +}, +disable: function(btn) { + if (!this.btn) return; + var a = this.btn[btn].getElementsByTagName('a')[0]; + a.onclick = function() { return false; }; + if (!/disabled$/.test(a.className)) a.className += ' disabled'; +}, +hitSpace: function() { + if (this.autoplay) this.pause(); + else this.play(); +}, +play: function(wait) { + if (this.btn) { + this.btn.play.style.display = 'none'; + this.btn.pause.style.display = ''; + } + + this.autoplay = true; + if (!wait) hs.next(this.expKey); +}, +pause: function() { + if (this.btn) { + this.btn.pause.style.display = 'none'; + this.btn.play.style.display = ''; + } + + clearTimeout(this.autoplay); + this.autoplay = null; +}, +previous: function() { + this.pause(); + hs.previous(this.btn.previous); +}, +next: function() { + this.pause(); + hs.next(this.btn.next); +}, +move: function() {}, +'full-expand': function() { + hs.getExpander().doFullExpand(); +}, +close: function() { + hs.close(this.btn.close); +} +}; +hs.Thumbstrip = function(slideshow) { + function add (exp) { + hs.extend(options || {}, { + overlayId: dom, + hsId: 'thumbstrip', + className: 'highslide-thumbstrip-'+ mode +'-overlay ' + (options.className || '') + }); + if (hs.ieLt7) options.fade = 0; + exp.createOverlay(options); + hs.setStyles(dom.parentNode, { overflow: 'hidden' }); + }; + + function scroll (delta) { + selectThumb(undefined, Math.round(delta * dom[isX ? 'offsetWidth' : 'offsetHeight'] * 0.7)); + }; + + function selectThumb (i, scrollBy) { + if (i === undefined) for (var j = 0; j < group.length; j++) { + if (group[j] == hs.expanders[slideshow.expKey].a) { + i = j; + break; + } + } + if (i === undefined) return; + var as = dom.getElementsByTagName('a'), + active = as[i], + cell = active.parentNode, + left = isX ? 'Left' : 'Top', + right = isX ? 'Right' : 'Bottom', + width = isX ? 'Width' : 'Height', + offsetLeft = 'offset' + left, + offsetWidth = 'offset' + width, + overlayWidth = div.parentNode.parentNode[offsetWidth], + minTblPos = overlayWidth - table[offsetWidth], + curTblPos = parseInt(table.style[isX ? 'left' : 'top']) || 0, + tblPos = curTblPos, + mgnRight = 20; + if (scrollBy !== undefined) { + tblPos = curTblPos - scrollBy; + + if (minTblPos > 0) minTblPos = 0; + if (tblPos > 0) tblPos = 0; + if (tblPos < minTblPos) tblPos = minTblPos; + + + } else { + for (var j = 0; j < as.length; j++) as[j].className = ''; + active.className = 'highslide-active-anchor'; + var activeLeft = i > 0 ? as[i - 1].parentNode[offsetLeft] : cell[offsetLeft], + activeRight = cell[offsetLeft] + cell[offsetWidth] + + (as[i + 1] ? as[i + 1].parentNode[offsetWidth] : 0); + if (activeRight > overlayWidth - curTblPos) tblPos = overlayWidth - activeRight; + else if (activeLeft < -curTblPos) tblPos = -activeLeft; + } + var markerPos = cell[offsetLeft] + (cell[offsetWidth] - marker[offsetWidth]) / 2 + tblPos; + hs.animate(table, isX ? { left: tblPos } : { top: tblPos }, null, 'easeOutQuad'); + hs.animate(marker, isX ? { left: markerPos } : { top: markerPos }, null, 'easeOutQuad'); + scrollUp.style.display = tblPos < 0 ? 'block' : 'none'; + scrollDown.style.display = (tblPos > minTblPos) ? 'block' : 'none'; + + }; + + + // initialize + var group = hs.anchors.groups[hs.expanders[slideshow.expKey].slideshowGroup || 'none'], + options = slideshow.thumbstrip, + mode = options.mode || 'horizontal', + floatMode = (mode == 'float'), + tree = floatMode ? ['div', 'ul', 'li', 'span'] : ['table', 'tbody', 'tr', 'td'], + isX = (mode == 'horizontal'), + dom = hs.createElement('div', { + className: 'highslide-thumbstrip highslide-thumbstrip-'+ mode, + innerHTML: + '
'+ + '<'+ tree[0] +'><'+ tree[1] +'>
'+ + '
'+ + '
'+ + '
' + }, { + display: 'none' + }, hs.container), + domCh = dom.childNodes, + div = domCh[0], + scrollUp = domCh[1], + scrollDown = domCh[2], + marker = domCh[3], + table = div.firstChild, + tbody = dom.getElementsByTagName(tree[1])[0], + tr; + for (var i = 0; i < group.length; i++) { + if (i == 0 || !isX) tr = hs.createElement(tree[2], null, null, tbody); + (function(){ + var a = group[i], + cell = hs.createElement(tree[3], null, null, tr), + pI = i; + hs.createElement('a', { + href: a.href, + title: a.title, + onclick: function() { + if (/highslide-active-anchor/.test(this.className)) return false; + hs.getExpander(this).focus(); + return hs.transit(a); + }, + innerHTML: hs.stripItemFormatter ? hs.stripItemFormatter(a) : a.innerHTML + }, null, cell); + })(); + } + if (!floatMode) { + scrollUp.onclick = function () { scroll(-1); }; + scrollDown.onclick = function() { scroll(1); }; + hs.addEventListener(tbody, document.onmousewheel !== undefined ? + 'mousewheel' : 'DOMMouseScroll', function(e) { + var delta = 0; + e = e || window.event; + if (e.wheelDelta) { + delta = e.wheelDelta/120; + if (hs.opera) delta = -delta; + } else if (e.detail) { + delta = -e.detail/3; + } + if (delta) scroll(-delta * 0.2); + if (e.preventDefault) e.preventDefault(); + e.returnValue = false; + }); + } + + return { + add: add, + selectThumb: selectThumb + } +}; +hs.langDefaults = hs.lang; +// history +var HsExpander = hs.Expander; +if (hs.ie && window == window.top) { + (function () { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(arguments.callee, 50); + return; + } + hs.ready(); + })(); +} +hs.addEventListener(document, 'DOMContentLoaded', hs.ready); +hs.addEventListener(window, 'load', hs.ready); + +// set handlers +hs.addEventListener(document, 'ready', function() { + if (hs.expandCursor || hs.dimmingOpacity) { + var style = hs.createElement('style', { type: 'text/css' }, null, + document.getElementsByTagName('HEAD')[0]), + backCompat = document.compatMode == 'BackCompat'; + + + function addRule(sel, dec) { + if (hs.ie && (hs.uaVersion < 9 || backCompat)) { + var last = document.styleSheets[document.styleSheets.length - 1]; + if (typeof(last.addRule) == "object") last.addRule(sel, dec); + } else { + style.appendChild(document.createTextNode(sel + " {" + dec + "}")); + } + } + function fix(prop) { + return 'expression( ( ( ignoreMe = document.documentElement.'+ prop + + ' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );'; + } + if (hs.expandCursor) addRule ('.highslide img', + 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'); + addRule ('.highslide-viewport-size', + hs.ie && (hs.uaVersion < 7 || backCompat) ? + 'position: absolute; '+ + 'left:'+ fix('scrollLeft') + + 'top:'+ fix('scrollTop') + + 'width:'+ fix('clientWidth') + + 'height:'+ fix('clientHeight') : + 'position: fixed; width: 100%; height: 100%; left: 0; top: 0'); + } +}); +hs.addEventListener(window, 'resize', function() { + hs.getPageSize(); + if (hs.viewport) for (var i = 0; i < hs.viewport.childNodes.length; i++) { + var node = hs.viewport.childNodes[i], + exp = hs.getExpander(node); + exp.positionOverlay(node); + if (node.hsId == 'thumbstrip') exp.slideshow.thumbstrip.selectThumb(); + } +}); +hs.addEventListener(document, 'mousemove', function(e) { + hs.mouse = { x: e.clientX, y: e.clientY }; +}); +hs.addEventListener(document, 'mousedown', hs.mouseClickHandler); +hs.addEventListener(document, 'mouseup', hs.mouseClickHandler); +hs.addEventListener(document, 'ready', hs.setClickEvents); +hs.addEventListener(window, 'load', hs.preloadImages); +hs.addEventListener(window, 'load', hs.preloadAjax); +} diff --git a/html/highslide/highslide-full.min.js b/html/highslide/highslide-full.min.js new file mode 100644 index 000000000..a20c40630 --- /dev/null +++ b/html/highslide/highslide-full.min.js @@ -0,0 +1,9 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default +events +unobtrusive +imagemap +slideshow +positioning +transitions +viewport +thumbstrip +inline +ajax +iframe +flash + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if(!hs){var hs={lang:{cssDirection:"ltr",loadingText:"Loading...",loadingTitle:"Click to cancel",focusTitle:"Click to bring to front",fullExpandTitle:"Expand to actual size (f)",creditsText:"Powered by Highslide JS",creditsTitle:"Go to the Highslide JS homepage",previousText:"Previous",nextText:"Next",moveText:"Move",closeText:"Close",closeTitle:"Close (esc)",resizeTitle:"Resize",playText:"Play",playTitle:"Play slideshow (spacebar)",pauseText:"Pause",pauseTitle:"Pause slideshow (spacebar)",previousTitle:"Previous (arrow left)",nextTitle:"Next (arrow right)",moveTitle:"Move",fullExpandText:"1:1",number:"Image %1 of %2",restoreTitle:"Click to close image, click and drag to move. Use arrow keys for next and previous."},graphicsDir:"highslide/graphics/",expandCursor:"zoomin.cur",restoreCursor:"zoomout.cur",expandDuration:250,restoreDuration:250,marginLeft:15,marginRight:15,marginTop:15,marginBottom:15,zIndexCounter:1001,loadingOpacity:0.75,allowMultipleInstances:true,numberOfImagesToPreload:5,outlineWhileAnimating:2,outlineStartOffset:3,padToMinWidth:false,fullExpandPosition:"bottom right",fullExpandOpacity:1,showCredits:true,creditsHref:"http://highslide.com/",creditsTarget:"_self",enableKeyListener:true,openerTagNames:["a","area"],transitions:[],transitionDuration:250,dimmingOpacity:0,dimmingDuration:50,allowWidthReduction:false,allowHeightReduction:true,preserveContent:true,objectLoadTime:"before",cacheAjax:true,anchor:"auto",align:"auto",targetX:null,targetY:null,dragByHeading:true,minWidth:200,minHeight:200,allowSizeReduction:true,outlineType:"drop-shadow",skin:{controls:'',contentWrapper:'
'},preloadTheseImages:[],continuePreloading:true,expanders:[],overrides:["allowSizeReduction","useBox","anchor","align","targetX","targetY","outlineType","outlineWhileAnimating","captionId","captionText","captionEval","captionOverlay","headingId","headingText","headingEval","headingOverlay","creditsPosition","dragByHeading","autoplay","numberPosition","transitions","dimmingOpacity","width","height","contentId","allowWidthReduction","allowHeightReduction","preserveContent","maincontentId","maincontentText","maincontentEval","objectType","cacheAjax","objectWidth","objectHeight","objectLoadTime","swfOptions","wrapperClassName","minWidth","minHeight","maxWidth","maxHeight","pageOrigin","slideshowGroup","easing","easingClose","fadeInOut","src"],overlays:[],idCounter:0,oPos:{x:["leftpanel","left","center","right","rightpanel"],y:["above","top","middle","bottom","below"]},mouse:{},headingOverlay:{},captionOverlay:{},swfOptions:{flashvars:{},params:{},attributes:{}},timers:[],slideshows:[],pendingOutlines:{},sleeping:[],preloadTheseAjax:[],cacheBindings:[],cachedGets:{},clones:{},onReady:[],uaVersion:/Trident\/4\.0/.test(navigator.userAgent)?8:parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]),ie:(document.all&&!window.opera),safari:/Safari/.test(navigator.userAgent),geckoMac:/Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),$:function(a){if(a){return document.getElementById(a)}},push:function(a,b){a[a.length]=b},createElement:function(a,f,e,d,c){var b=document.createElement(a);if(f){hs.extend(b,f)}if(c){hs.setStyles(b,{padding:0,border:"none",margin:0})}if(e){hs.setStyles(b,e)}if(d){d.appendChild(b)}return b},extend:function(b,c){for(var a in c){b[a]=c[a]}return b},setStyles:function(b,c){for(var a in c){if(hs.ieLt9&&a=="opacity"){if(c[a]>0.99){b.style.removeAttribute("filter")}else{b.style.filter="alpha(opacity="+(c[a]*100)+")"}}else{b.style[a]=c[a]}}},animate:function(f,a,d){var c,g,j;if(typeof d!="object"||d===null){var i=arguments;d={duration:i[2],easing:i[3],complete:i[4]}}if(typeof d.duration!="number"){d.duration=250}d.easing=Math[d.easing]||Math.easeInQuad;d.curAnim=hs.extend({},a);for(var b in a){var h=new hs.fx(f,d,b);c=parseFloat(hs.css(f,b))||0;g=parseFloat(a[b]);j=b!="opacity"?"px":"";h.custom(c,g,j)}},css:function(a,c){if(a.style[c]){return a.style[c]}else{if(document.defaultView){return document.defaultView.getComputedStyle(a,null).getPropertyValue(c)}else{if(c=="opacity"){c="filter"}var b=a.currentStyle[c.replace(/\-(\w)/g,function(e,d){return d.toUpperCase()})];if(c=="filter"){b=b.replace(/alpha\(opacity=([0-9]+)\)/,function(e,d){return d/100})}return b===""?1:b}}},getPageSize:function(){var f=document,b=window,e=f.compatMode&&f.compatMode!="BackCompat"?f.documentElement:f.body,g=hs.ie&&(hs.uaVersion<9||typeof pageXOffset=="undefined");var c=g?e.clientWidth:(f.documentElement.clientWidth||self.innerWidth),a=g?e.clientHeight:self.innerHeight;hs.page={width:c,height:a,scrollLeft:g?e.scrollLeft:pageXOffset,scrollTop:g?e.scrollTop:pageYOffset};return hs.page},getPosition:function(c){if(/area/i.test(c.tagName)){var e=document.getElementsByTagName("img");for(var b=0;bc){c=f;b=d}}}if(b==-1){hs.focusKey=-1}else{a[b].focus()}},getParam:function(b,d){b.getParams=b.onclick;var c=b.getParams?b.getParams():null;b.getParams=null;return(c&&typeof c[d]!="undefined")?c[d]:(typeof hs[d]!="undefined"?hs[d]:null)},getSrc:function(b){var c=hs.getParam(b,"src");if(c){return c}return b.href},getNode:function(e){var c=hs.$(e),d=hs.clones[e],b={};if(!c&&!d){return null}if(!d){d=c.cloneNode(true);d.id="";hs.clones[e]=d;return c}else{return d.cloneNode(true)}},discardElement:function(a){if(a){hs.garbageBin.appendChild(a)}hs.garbageBin.innerHTML=""},dim:function(d){if(!hs.dimmer){a=true;hs.dimmer=hs.createElement("div",{className:"highslide-dimming highslide-viewport-size",owner:"",onclick:function(){if(hs.fireEvent(hs,"onDimmerClick")){hs.close()}}},{visibility:"visible",opacity:0},hs.container,true);if(/(Android|iPad|iPhone|iPod)/.test(navigator.userAgent)){var b=document.body;function c(){hs.setStyles(hs.dimmer,{width:b.scrollWidth+"px",height:b.scrollHeight+"px"})}c();hs.addEventListener(window,"resize",c)}}hs.dimmer.style.display="";var a=hs.dimmer.owner=="";hs.dimmer.owner+="|"+d.key;if(a){if(hs.geckoMac&&hs.dimmingGeckoFix){hs.setStyles(hs.dimmer,{background:"url("+hs.graphicsDir+"geckodimmer.png)",opacity:1})}else{hs.animate(hs.dimmer,{opacity:d.dimmingOpacity},hs.dimmingDuration)}}},undim:function(a){if(!hs.dimmer){return}if(typeof a!="undefined"){hs.dimmer.owner=hs.dimmer.owner.replace("|"+a,"")}if((typeof a!="undefined"&&hs.dimmer.owner!="")||(hs.upcoming&&hs.getParam(hs.upcoming,"dimmingOpacity"))){return}if(hs.geckoMac&&hs.dimmingGeckoFix){hs.dimmer.style.display="none"}else{hs.animate(hs.dimmer,{opacity:0},hs.dimmingDuration,null,function(){hs.dimmer.style.display="none"})}},transit:function(a,d){var b=d||hs.getExpander();d=b;if(hs.upcoming){return false}else{hs.last=b}hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);try{hs.upcoming=a;a.onclick()}catch(c){hs.last=hs.upcoming=null}try{if(!a||d.transitions[1]!="crossfade"){d.close()}}catch(c){}return false},previousOrNext:function(a,c){var b=hs.getExpander(a);if(b){return hs.transit(b.getAdjacentAnchor(c),b)}else{return false}},previous:function(a){return hs.previousOrNext(a,-1)},next:function(a){return hs.previousOrNext(a,1)},keyHandler:function(a){if(!a){a=window.event}if(!a.target){a.target=a.srcElement}if(typeof a.target.form!="undefined"){return true}if(!hs.fireEvent(hs,"onKeyDown",a)){return true}var b=hs.getExpander();var c=null;switch(a.keyCode){case 70:if(b){b.doFullExpand()}return true;case 32:c=2;break;case 34:case 39:case 40:c=1;break;case 8:case 33:case 37:case 38:c=-1;break;case 27:case 13:c=0}if(c!==null){if(c!=2){hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler)}if(!hs.enableKeyListener){return true}if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}if(b){if(c==0){b.close()}else{if(c==2){if(b.slideshow){b.slideshow.hitSpace()}}else{if(b.slideshow){b.slideshow.pause()}hs.previousOrNext(b.key,c)}}return false}}return true},registerOverlay:function(a){hs.push(hs.overlays,hs.extend(a,{hsId:"hsId"+hs.idCounter++}))},addSlideshow:function(b){var d=b.slideshowGroup;if(typeof d=="object"){for(var c=0;c1){return true}if(!d.target){d.target=d.srcElement}var b=d.target;while(b.parentNode&&!(/highslide-(image|move|html|resize)/.test(b.className))){b=b.parentNode}var f=hs.getExpander(b);if(f&&(f.isClosing||!f.isExpanded)){return true}if(f&&d.type=="mousedown"){if(d.target.form){return true}var a=b.className.match(/highslide-(image|move|resize)/);if(a){hs.dragArgs={exp:f,type:a[1],left:f.x.pos,width:f.x.size,top:f.y.pos,height:f.y.size,clickX:d.clientX,clickY:d.clientY};hs.addEventListener(document,"mousemove",hs.dragHandler);if(d.preventDefault){d.preventDefault()}if(/highslide-(image|html)-blur/.test(f.content.className)){f.focus();hs.hasFocused=true}return false}else{if(/highslide-html/.test(b.className)&&hs.focusKey!=f.key){f.focus();f.doShowHide("hidden")}}}else{if(d.type=="mouseup"){hs.removeEventListener(document,"mousemove",hs.dragHandler);if(hs.dragArgs){if(hs.styleRestoreCursor&&hs.dragArgs.type=="image"){hs.dragArgs.exp.content.style.cursor=hs.styleRestoreCursor}var c=hs.dragArgs.hasDragged;if(!c&&!hs.hasFocused&&!/(move|resize)/.test(hs.dragArgs.type)){if(hs.fireEvent(f,"onImageClick")){f.close()}}else{if(c||(!c&&hs.hasHtmlExpanders)){hs.dragArgs.exp.doShowHide("hidden")}}if(hs.dragArgs.exp.releaseMask){hs.dragArgs.exp.releaseMask.style.display="none"}if(c){hs.fireEvent(hs.dragArgs.exp,"onDrop",hs.dragArgs)}hs.hasFocused=false;hs.dragArgs=null}else{if(/highslide-image-blur/.test(b.className)){b.style.cursor=hs.styleRestoreCursor}}}}return false},dragHandler:function(c){if(!hs.dragArgs){return true}if(!c){c=window.event}var b=hs.dragArgs,d=b.exp;if(d.iframe){if(!d.releaseMask){d.releaseMask=hs.createElement("div",null,{position:"absolute",width:d.x.size+"px",height:d.y.size+"px",left:d.x.cb+"px",top:d.y.cb+"px",zIndex:4,background:(hs.ieLt9?"white":"none"),opacity:0.01},d.wrapper,true)}if(d.releaseMask.style.display=="none"){d.releaseMask.style.display=""}}b.dX=c.clientX-b.clickX;b.dY=c.clientY-b.clickY;var f=Math.sqrt(Math.pow(b.dX,2)+Math.pow(b.dY,2));if(!b.hasDragged){b.hasDragged=(b.type!="image"&&f>0)||(f>(hs.dragSensitivity||5))}if(b.hasDragged&&c.clientX>5&&c.clientY>5){if(!hs.fireEvent(d,"onDrag",b)){return false}if(b.type=="resize"){d.resize(b)}else{d.moveTo(b.left+b.dX,b.top+b.dY);if(b.type=="image"){d.content.style.cursor="move"}}}return false},wrapperMouseHandler:function(c){try{if(!c){c=window.event}var b=/mouseover/i.test(c.type);if(!c.target){c.target=c.srcElement}if(!c.relatedTarget){c.relatedTarget=b?c.fromElement:c.toElement}var d=hs.getExpander(c.target);if(!d.isExpanded){return}if(!d||!c.relatedTarget||hs.getExpander(c.relatedTarget,true)==d||hs.dragArgs){return}hs.fireEvent(d,b?"onMouseOver":"onMouseOut",c);for(var a=0;a=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var a=true;for(var b in this.options.curAnim){if(this.options.curAnim[b]!==true){a=false}}if(a){if(this.options.complete){this.options.complete.call(this.elem)}}return false}else{var e=c-this.startTime;this.state=e/this.options.duration;this.pos=this.options.easing(e,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};hs.extend(hs.fx,{step:{opacity:function(a){hs.setStyles(a.elem,{opacity:a.now})},_default:function(a){try{if(a.elem.style&&a.elem.style[a.prop]!=null){a.elem.style[a.prop]=a.now+a.unit}else{a.elem[a.prop]=a.now}}catch(b){}}}});hs.Outline=function(g,e){this.onLoad=e;this.outlineType=g;var a=hs.uaVersion,f;this.hasAlphaImageLoader=hs.ie&&hs.uaVersion<7;if(!g){if(e){e()}return}hs.init();this.table=hs.createElement("table",{cellSpacing:0},{visibility:"hidden",position:"absolute",borderCollapse:"collapse",width:0},hs.container,true);var b=hs.createElement("tbody",null,null,this.table,1);this.td=[];for(var c=0;c<=8;c++){if(c%3==0){f=hs.createElement("tr",null,{height:"auto"},b,true)}this.td[c]=hs.createElement("td",null,null,f,true);var d=c!=4?{lineHeight:0,fontSize:0}:{position:"relative"};hs.setStyles(this.td[c],d)}this.td[4].className=g+" highslide-outline";this.preloadGraphic()};hs.Outline.prototype={preloadGraphic:function(){var b=hs.graphicsDir+(hs.outlinesDir||"outlines/")+this.outlineType+".png";var a=hs.safari&&hs.uaVersion<525?hs.container:null;this.graphic=hs.createElement("img",null,{position:"absolute",top:"-9999px"},a,true);var c=this;this.graphic.onload=function(){c.onGraphicLoad()};this.graphic.src=b},onGraphicLoad:function(){var d=this.offset=this.graphic.width/4,f=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],c={height:(2*d)+"px",width:(2*d)+"px"};for(var b=0;b<=8;b++){if(f[b]){if(this.hasAlphaImageLoader){var a=(b==1||b==7)?"100%":this.graphic.width+"px";var e=hs.createElement("div",null,{width:"100%",height:"100%",position:"relative",overflow:"hidden"},this.td[b],true);hs.createElement("div",null,{filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+this.graphic.src+"')",position:"absolute",width:a,height:this.graphic.height+"px",left:(f[b][0]*d)+"px",top:(f[b][1]*d)+"px"},e,true)}else{hs.setStyles(this.td[b],{background:"url("+this.graphic.src+") "+(f[b][0]*d)+"px "+(f[b][1]*d)+"px"})}if(window.opera&&(b==3||b==5)){hs.createElement("div",null,c,this.td[b],true)}hs.setStyles(this.td[b],c)}}this.graphic=null;if(hs.pendingOutlines[this.outlineType]){hs.pendingOutlines[this.outlineType].destroy()}hs.pendingOutlines[this.outlineType]=this;if(this.onLoad){this.onLoad()}},setPosition:function(g,e,c,b,f){var d=this.exp,a=d.wrapper.style,e=e||0,g=g||{x:d.x.pos+e,y:d.y.pos+e,w:d.x.get("wsize")-2*e,h:d.y.get("wsize")-2*e};if(c){this.table.style.visibility=(g.h>=4*this.offset)?"visible":"hidden"}hs.setStyles(this.table,{left:(g.x-this.offset)+"px",top:(g.y-this.offset)+"px",width:(g.w+2*this.offset)+"px"});g.w-=2*this.offset;g.h-=2*this.offset;hs.setStyles(this.td[4],{width:g.w>=0?g.w+"px":0,height:g.h>=0?g.h+"px":0});if(this.hasAlphaImageLoader){this.td[3].style.height=this.td[5].style.height=this.td[4].style.height}},destroy:function(a){if(a){this.table.style.visibility="hidden"}else{hs.discardElement(this.table)}}};hs.Dimension=function(b,a){this.exp=b;this.dim=a;this.ucwh=a=="x"?"Width":"Height";this.wh=this.ucwh.toLowerCase();this.uclt=a=="x"?"Left":"Top";this.lt=this.uclt.toLowerCase();this.ucrb=a=="x"?"Right":"Bottom";this.rb=this.ucrb.toLowerCase();this.p1=this.p2=0};hs.Dimension.prototype={get:function(a){switch(a){case"loadingPos":return this.tpos+this.tb+(this.t-hs.loading["offset"+this.ucwh])/2;case"loadingPosXfade":return this.pos+this.cb+this.p1+(this.size-hs.loading["offset"+this.ucwh])/2;case"wsize":return this.size+2*this.cb+this.p1+this.p2;case"fitsize":return this.clientSize-this.marginMin-this.marginMax;case"maxsize":return this.get("fitsize")-2*this.cb-this.p1-this.p2;case"opos":return this.pos-(this.exp.outline?this.exp.outline.offset:0);case"osize":return this.get("wsize")+(this.exp.outline?2*this.exp.outline.offset:0);case"imgPad":return this.imgSize?Math.round((this.size-this.imgSize)/2):0}},calcBorders:function(){this.cb=(this.exp.content["offset"+this.ucwh]-this.t)/2;this.marginMax=hs["margin"+this.ucrb]},calcThumb:function(){this.t=this.exp.el[this.wh]?parseInt(this.exp.el[this.wh]):this.exp.el["offset"+this.ucwh];this.tpos=this.exp.tpos[this.dim];this.tb=(this.exp.el["offset"+this.ucwh]-this.t)/2;if(this.tpos==0||this.tpos==-1){this.tpos=(hs.page[this.wh]/2)+hs.page["scroll"+this.uclt]}},calcExpanded:function(){var a=this.exp;this.justify="auto";if(a.align=="center"){this.justify="center"}else{if(new RegExp(this.lt).test(a.anchor)){this.justify=null}else{if(new RegExp(this.rb).test(a.anchor)){this.justify="max"}}}this.pos=this.tpos-this.cb+this.tb;if(this.maxHeight&&this.dim=="x"){a.maxWidth=Math.min(a.maxWidth||this.full,a.maxHeight*this.full/a.y.full)}this.size=Math.min(this.full,a["max"+this.ucwh]||this.full);this.minSize=a.allowSizeReduction?Math.min(a["min"+this.ucwh],this.full):this.full;if(a.isImage&&a.useBox){this.size=a[this.wh];this.imgSize=this.full}if(this.dim=="x"&&hs.padToMinWidth){this.minSize=a.minWidth}this.target=a["target"+this.dim.toUpperCase()];this.marginMin=hs["margin"+this.uclt];this.scroll=hs.page["scroll"+this.uclt];this.clientSize=hs.page[this.wh]},setSize:function(a){var f=this.exp;if(f.isImage&&(f.useBox||hs.padToMinWidth)){this.imgSize=a;this.size=Math.max(this.size,this.imgSize);f.content.style[this.lt]=this.get("imgPad")+"px"}else{this.size=a}f.content.style[this.wh]=a+"px";f.wrapper.style[this.wh]=this.get("wsize")+"px";if(f.outline){f.outline.setPosition()}if(f.releaseMask){f.releaseMask.style[this.wh]=a+"px"}if(this.dim=="y"&&f.iDoc&&f.body.style.height!="auto"){try{f.iDoc.body.style.overflow="auto"}catch(b){}}if(f.isHtml){var c=f.scrollerDiv;if(this.sizeDiff===undefined){this.sizeDiff=f.innerContent["offset"+this.ucwh]-c["offset"+this.ucwh]}c.style[this.wh]=(this.size-this.sizeDiff)+"px";if(this.dim=="x"){f.mediumContent.style.width="auto"}if(f.body){f.body.style[this.wh]="auto"}}if(this.dim=="x"&&f.overlayBox){f.sizeOverlayBox(true)}if(this.dim=="x"&&f.slideshow&&f.isImage){if(a==this.full){f.slideshow.disable("full-expand")}else{f.slideshow.enable("full-expand")}}},setPos:function(a){this.pos=a;this.exp.wrapper.style[this.lt]=a+"px";if(this.exp.outline){this.exp.outline.setPosition()}}};hs.Expander=function(k,f,b,l){if(document.readyState&&hs.ie&&!hs.isReady){hs.addEventListener(document,"ready",function(){new hs.Expander(k,f,b,l)});return}this.a=k;this.custom=b;this.contentType=l||"image";this.isHtml=(l=="html");this.isImage=!this.isHtml;hs.continuePreloading=false;this.overlays=[];this.last=hs.last;hs.last=null;hs.init();var m=this.key=hs.expanders.length;for(var g=0;ga.scroll+a.clientSize-a.marginMax){a.pos=a.scroll+a.clientSize-a.size-a.marginMin-a.marginMax-a.p1-a.p2}if(a.pos(this.x.imgSize||this.x.size)){this.createFullExpand();if(this.overlays.length==1){this.sizeOverlayBox()}}}this.show()}catch(d){this.error(d)}},setObjContainerSize:function(a,d){var b=hs.getElementByClass(a,"DIV","highslide-body");if(/(iframe|swf)/.test(this.objectType)){if(this.objectWidth){b.style.width=this.objectWidth+"px"}if(this.objectHeight){b.style.height=this.objectHeight+"px"}}},writeExtendedContent:function(){if(this.hasExtendedContent){return}var f=this;this.body=hs.getElementByClass(this.innerContent,"DIV","highslide-body");if(this.objectType=="iframe"){this.showLoading();var g=hs.clearing.cloneNode(1);this.body.appendChild(g);this.newWidth=this.innerContent.offsetWidth;if(!this.objectWidth){this.objectWidth=g.offsetWidth}var c=this.innerContent.offsetHeight-this.body.offsetHeight,d=this.objectHeight||hs.page.height-c-hs.marginTop-hs.marginBottom,e=this.objectLoadTime=="before"?' onload="if (hs.expanders['+this.key+"]) hs.expanders["+this.key+'].contentLoaded()" ':"";this.body.innerHTML+='';this.ruler=this.body.getElementsByTagName("div")[0];this.iframe=this.body.getElementsByTagName("iframe")[0];if(this.objectLoadTime=="after"){this.correctIframeSize()}}if(this.objectType=="swf"){this.body.id=this.body.id||"hs-flash-id-"+this.key;var b=this.swfOptions;if(!b.params){b.params={}}if(typeof b.params.wmode=="undefined"){b.params.wmode="transparent"}if(swfobject){swfobject.embedSWF(this.src,this.body.id,this.objectWidth,this.objectHeight,b.version||"7",b.expressInstallSwfurl,b.flashvars,b.params,b.attributes)}}this.hasExtendedContent=true},htmlGetSize:function(){if(this.iframe&&!this.objectHeight){this.iframe.style.height=this.body.style.height=this.getIframePageHeight()+"px"}this.innerContent.appendChild(hs.clearing);if(!this.x.full){this.x.full=this.innerContent.offsetWidth}this.y.full=this.innerContent.offsetHeight;this.innerContent.removeChild(hs.clearing);if(hs.ie&&this.newHeight>parseInt(this.innerContent.currentStyle.height)){this.newHeight=parseInt(this.innerContent.currentStyle.height)}hs.setStyles(this.wrapper,{position:"absolute",padding:"0"});hs.setStyles(this.content,{width:this.x.t+"px",height:this.y.t+"px"})},getIframePageHeight:function(){var a;try{var d=this.iDoc=this.iframe.contentDocument||this.iframe.contentWindow.document;var b=d.createElement("div");b.style.clear="both";d.body.appendChild(b);a=b.offsetTop;if(hs.ie){a+=parseInt(d.body.currentStyle.marginTop)+parseInt(d.body.currentStyle.marginBottom)-1}}catch(c){a=300}return a},correctIframeSize:function(){var b=this.innerContent.offsetWidth-this.ruler.offsetWidth;hs.discardElement(this.ruler);if(b<0){b=0}var a=this.innerContent.offsetHeight-this.iframe.offsetHeight;if(this.iDoc&&!this.objectHeight&&!this.height&&this.y.size==this.y.full){try{this.iDoc.body.style.overflow="hidden"}catch(c){}}hs.setStyles(this.iframe,{width:Math.abs(this.x.size-b)+"px",height:Math.abs(this.y.size-a)+"px"});hs.setStyles(this.body,{width:this.iframe.style.width,height:this.iframe.style.height});this.scrollingContent=this.iframe;this.scrollerDiv=this.scrollingContent},htmlSizeOperations:function(){this.setObjContainerSize(this.innerContent);if(this.objectType=="swf"&&this.objectLoadTime=="before"){this.writeExtendedContent()}if(this.x.sizee.offsetHeight){e.style.width=(parseInt(e.style.width)+d)+"px"}this.scrollingContent=e;this.scrollerDiv=this.scrollingContent}if(this.iframe&&this.objectLoadTime=="before"){this.correctIframeSize()}if(!this.scrollingContent&&this.y.sizethis.scrollerDiv.parentNode.offsetHeight){setTimeout("try { hs.expanders["+this.key+"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}",hs.expandDuration)}},getImageMapAreaCorrection:function(d){var h=d.coords.split(",");for(var b=0;bf.scroll+f.clientSize-f.marginMax){if(!b&&d&&a){f.size=Math.min(f.size,f.get(e=="y"?"fitsize":"maxsize"))}else{if(f.get("wsize")c){d=b*c;if(dthis.minHeight&&a.size>this.minWidth&&d.get("wsize")>d.get("fitsize")){d.size-=10;if(b){a.size=d.size*b}this.sizeOverlayBox(0,1);c=true}}return c},reflow:function(){if(this.scrollerDiv){var a=/iframe/i.test(this.scrollerDiv.tagName)?(this.getIframePageHeight()+1)+"px":"auto";if(this.body){this.body.style.height=a}this.scrollerDiv.style.height=a;this.y.setSize(this.innerContent.offsetHeight)}},show:function(){var a=this.x,b=this.y;this.doShowHide("hidden");hs.fireEvent(this,"onBeforeExpand");if(this.slideshow&&this.slideshow.thumbstrip){this.slideshow.thumbstrip.selectThumb()}this.changeSize(1,{wrapper:{width:a.get("wsize"),height:b.get("wsize"),left:a.pos,top:b.pos},content:{left:a.p1+a.get("imgPad"),top:b.p1+b.get("imgPad"),width:a.imgSize||a.size,height:b.imgSize||b.size}},hs.expandDuration)},changeSize:function(d,i,b){var k=this.transitions,e=d?(this.last?this.last.a:null):hs.upcoming,j=(k[1]&&e&&hs.getParam(e,"transitions")[1]==k[1])?k[1]:k[0];if(this[j]&&j!="expand"){this[j](d,i);return}if(this.outline&&!this.outlineWhileAnimating){if(d){this.outline.setPosition()}else{this.outline.destroy((this.isHtml&&this.preserveContent))}}if(!d){this.destroyOverlays()}var c=this,h=c.x,g=c.y,f=this.easing;if(!d){f=this.easingClose||f}var a=d?function(){if(c.outline){c.outline.table.style.visibility="visible"}setTimeout(function(){c.afterExpand()},50)}:function(){c.afterClose()};if(d){hs.setStyles(this.wrapper,{width:h.t+"px",height:g.t+"px"})}if(d&&this.isHtml){hs.setStyles(this.wrapper,{left:(h.tpos-h.cb+h.tb)+"px",top:(g.tpos-g.cb+g.tb)+"px"})}if(this.fadeInOut){hs.setStyles(this.wrapper,{opacity:d?0:1});hs.extend(i.wrapper,{opacity:d})}hs.animate(this.wrapper,i.wrapper,{duration:b,easing:f,step:function(n,l){if(c.outline&&c.outlineWhileAnimating&&l.prop=="top"){var m=d?l.pos:1-l.pos;var o={w:h.t+(h.get("wsize")-h.t)*m,h:g.t+(g.get("wsize")-g.t)*m,x:h.tpos+(h.pos-h.tpos)*m,y:g.tpos+(g.pos-g.tpos)*m};c.outline.setPosition(o,0,1)}if(c.isHtml){if(l.prop=="left"){c.mediumContent.style.left=(h.pos-n)+"px"}if(l.prop=="top"){c.mediumContent.style.top=(g.pos-n)+"px"}}}});hs.animate(this.content,i.content,b,f,a);if(d){this.wrapper.style.visibility="visible";this.content.style.visibility="visible";if(this.isHtml){this.innerContent.style.visibility="visible"}this.a.className+=" highslide-active-anchor"}},fade:function(f,h){this.outlineWhileAnimating=false;var c=this,j=f?hs.expandDuration:0;if(f){hs.animate(this.wrapper,h.wrapper,0);hs.setStyles(this.wrapper,{opacity:0,visibility:"visible"});hs.animate(this.content,h.content,0);this.content.style.visibility="visible";hs.animate(this.wrapper,{opacity:1},j,null,function(){c.afterExpand()})}if(this.outline){this.outline.table.style.zIndex=this.wrapper.style.zIndex;var b=f||-1,d=this.outline.offset,a=f?3:d,g=f?d:3;for(var e=a;b*e<=b*g;e+=b,j+=25){(function(){var i=f?g-e:a-e;setTimeout(function(){c.outline.setPosition(0,i,1)},j)})()}}if(f){}else{setTimeout(function(){if(c.outline){c.outline.destroy(c.preserveContent)}c.destroyOverlays();hs.animate(c.wrapper,{opacity:0},hs.restoreDuration,null,function(){c.afterClose()})},j)}},crossfade:function(g,m,o){if(!g){return}var f=this,p=this.last,l=this.x,k=this.y,d=p.x,b=p.y,a=this.wrapper,i=this.content,c=this.overlayBox;hs.removeEventListener(document,"mousemove",hs.dragHandler);hs.setStyles(i,{width:(l.imgSize||l.size)+"px",height:(k.imgSize||k.size)+"px"});if(c){c.style.overflow="visible"}this.outline=p.outline;if(this.outline){this.outline.exp=f}p.outline=null;var h=hs.createElement("div",{className:"highslide-"+this.contentType},{position:"absolute",zIndex:4,overflow:"hidden",display:"none"});var j={oldImg:p,newImg:this};for(var e in j){this[e]=j[e].content.cloneNode(1);hs.setStyles(this[e],{position:"absolute",border:0,visibility:"visible"});h.appendChild(this[e])}a.appendChild(h);if(this.isHtml){hs.setStyles(this.mediumContent,{left:0,top:0})}if(c){c.className="";a.appendChild(c)}h.style.display="";p.content.style.display="none";if(hs.safari&&hs.uaVersion<525){this.wrapper.style.visibility="visible"}hs.animate(a,{width:l.size},{duration:hs.transitionDuration,step:function(u,r){var x=r.pos,q=1-x;var w,s={},t=["pos","size","p1","p2"];for(var v in t){w=t[v];s["x"+w]=Math.round(q*d[w]+x*l[w]);s["y"+w]=Math.round(q*b[w]+x*k[w]);s.ximgSize=Math.round(q*(d.imgSize||d.size)+x*(l.imgSize||l.size));s.ximgPad=Math.round(q*d.get("imgPad")+x*l.get("imgPad"));s.yimgSize=Math.round(q*(b.imgSize||b.size)+x*(k.imgSize||k.size));s.yimgPad=Math.round(q*b.get("imgPad")+x*k.get("imgPad"))}if(f.outline){f.outline.setPosition({x:s.xpos,y:s.ypos,w:s.xsize+s.xp1+s.xp2+2*l.cb,h:s.ysize+s.yp1+s.yp2+2*k.cb})}p.wrapper.style.clip="rect("+(s.ypos-b.pos)+"px, "+(s.xsize+s.xp1+s.xp2+s.xpos+2*d.cb-d.pos)+"px, "+(s.ysize+s.yp1+s.yp2+s.ypos+2*b.cb-b.pos)+"px, "+(s.xpos-d.pos)+"px)";hs.setStyles(i,{top:(s.yp1+k.get("imgPad"))+"px",left:(s.xp1+l.get("imgPad"))+"px",marginTop:(k.pos-s.ypos)+"px",marginLeft:(l.pos-s.xpos)+"px"});hs.setStyles(a,{top:s.ypos+"px",left:s.xpos+"px",width:(s.xp1+s.xp2+s.xsize+2*l.cb)+"px",height:(s.yp1+s.yp2+s.ysize+2*k.cb)+"px"});hs.setStyles(h,{width:(s.ximgSize||s.xsize)+"px",height:(s.yimgSize||s.ysize)+"px",left:(s.xp1+s.ximgPad)+"px",top:(s.yp1+s.yimgPad)+"px",visibility:"visible"});hs.setStyles(f.oldImg,{top:(b.pos-s.ypos+b.p1-s.yp1+b.get("imgPad")-s.yimgPad)+"px",left:(d.pos-s.xpos+d.p1-s.xp1+d.get("imgPad")-s.ximgPad)+"px"});hs.setStyles(f.newImg,{opacity:x,top:(k.pos-s.ypos+k.p1-s.yp1+k.get("imgPad")-s.yimgPad)+"px",left:(l.pos-s.xpos+l.p1-s.xp1+l.get("imgPad")-s.ximgPad)+"px"});if(c){hs.setStyles(c,{width:s.xsize+"px",height:s.ysize+"px",left:(s.xp1+l.cb)+"px",top:(s.yp1+k.cb)+"px"})}},complete:function(){a.style.visibility=i.style.visibility="visible";i.style.display="block";hs.discardElement(h);f.afterExpand();p.afterClose();f.last=null}})},reuseOverlay:function(d,c){if(!this.last){return false}for(var b=0;b'+b+"
"+this[this.numberPosition].innerHTML}}},initSlideshow:function(){if(!this.last){for(var c=0;cthis.x.get("opos")+this.x.get("osize"));var g=(k.y+k.hthis.y.get("opos")+this.y.get("osize"))}var d=hs.getWrapperKey(e[f]);if(!j&&!g&&d!=this.key){if(!h){e[f].setAttribute("hidden-by","["+this.key+"]");e[f].origProp=e[f].style[a];e[f].style[a]="hidden"}else{if(h.indexOf("["+this.key+"]")==-1){e[f].setAttribute("hidden-by",h+"["+this.key+"]")}}}else{if((h=="["+this.key+"]"||hs.focusKey==d)&&d!=this.key){e[f].setAttribute("hidden-by","");e[f].style[a]=e[f].origProp||""}else{if(h&&h.indexOf("["+this.key+"]")>-1){e[f].setAttribute("hidden-by",h.replace("["+this.key+"]",""))}}}}}}}},focus:function(){this.wrapper.style.zIndex=hs.zIndexCounter+=2;for(var a=0;ae.parentNode.offsetWidth){e.style.width="100%"}}else{if(e.parentNode!=this.overlayBox){this.overlayBox.appendChild(e)}}if(/left$/.test(f)){e.style.left=b+"px"}if(/center$/.test(f)){hs.setStyles(e,{left:"50%",marginLeft:(b-Math.round(e.offsetWidth/2))+"px"})}if(/right$/.test(f)){e.style.right=-b+"px"}if(/^leftpanel$/.test(f)){hs.setStyles(e,{right:"100%",marginRight:this.x.cb+"px",top:-this.y.cb+"px",bottom:-this.y.cb+"px",overflow:"auto"});this.x.p1=e.offsetWidth}else{if(/^rightpanel$/.test(f)){hs.setStyles(e,{left:"100%",marginLeft:this.x.cb+"px",top:-this.y.cb+"px",bottom:-this.y.cb+"px",overflow:"auto"});this.x.p2=e.offsetWidth}}var d=e.parentNode.offsetHeight;e.style.height="auto";if(c&&e.offsetHeight>d){e.style.height=hs.ieLt7?d+"px":"100%"}if(/^top/.test(f)){e.style.top=a+"px"}if(/^middle/.test(f)){hs.setStyles(e,{top:"50%",marginTop:(a-Math.round(e.offsetHeight/2))+"px"})}if(/^bottom/.test(f)){e.style.bottom=-a+"px"}if(/^above$/.test(f)){hs.setStyles(e,{left:(-this.x.p1-this.x.cb)+"px",right:(-this.x.p2-this.x.cb)+"px",bottom:"100%",marginBottom:this.y.cb+"px",width:"auto"});this.y.p1=e.offsetHeight}else{if(/^below$/.test(f)){hs.setStyles(e,{position:"relative",left:(-this.x.p1-this.x.cb)+"px",right:(-this.x.p2-this.x.cb)+"px",top:"100%",marginTop:this.y.cb+"px",width:"auto"});this.y.p2=e.offsetHeight;e.style.position="absolute"}}},getOverlays:function(){this.getInline(["heading","caption"],true);this.getNumber();if(this.caption){hs.fireEvent(this,"onAfterGetCaption")}if(this.heading){hs.fireEvent(this,"onAfterGetHeading")}if(this.heading&&this.dragByHeading){this.heading.className+=" highslide-move"}if(hs.showCredits){this.writeCredits()}for(var a=0;a=5.5){c=c.replace(new RegExp("]*>","gi"),"").replace(new RegExp("]*>.*?<\/script>","gi"),"");if(this.iframe){var f=this.iframe.contentDocument;if(!f&&this.iframe.contentWindow){f=this.iframe.contentWindow.document}if(!f){var g=this;setTimeout(function(){g.loadHTML()},25);return}f.open();f.write(c);f.close();try{c=f.getElementById(this.id).innerHTML}catch(d){try{c=this.iframe.document.getElementById(this.id).innerHTML}catch(d){}}hs.discardElement(this.iframe)}else{b=/(]*>|<\/body>)/ig;if(b.test(c)){c=c.split(b)[hs.ieLt9?1:2]}}}hs.getElementByClass(this.content,"DIV","highslide-body").innerHTML=c;this.onLoad();for(var a in this){this[a]=null}}};hs.Slideshow=function(c,b){if(hs.dynamicallyUpdateAnchors!==false){hs.updateAnchors()}this.expKey=c;for(var a in b){this[a]=b[a]}if(this.useControls){this.getControls()}if(this.thumbstrip){this.thumbstrip=hs.Thumbstrip(this)}};hs.Slideshow.prototype={getControls:function(){this.controls=hs.createElement("div",{innerHTML:hs.replaceLang(hs.skin.controls)},null,hs.container);var b=["play","pause","previous","next","move","full-expand","close"];this.btn={};var c=this;for(var a=0;a0){F=0}if(C>0){C=0}if(C0?G[L-1].parentNode[B]:w[B],A=w[B]+w[H]+(G[L+1]?G[L+1].parentNode[H]:0);if(A>x-v){C=x-A}else{if(J<-v){C=-J}}}var E=w[B]+(w[H]-g[H])/2+C;hs.animate(s,h?{left:C}:{top:C},null,"easeOutQuad");hs.animate(g,h?{left:E}:{top:E},null,"easeOutQuad");l.style.display=C<0?"block":"none";t.style.display=(C>F)?"block":"none"}var j=hs.anchors.groups[hs.expanders[k.expKey].slideshowGroup||"none"],f=k.thumbstrip,m=f.mode||"horizontal",u=(m=="float"),o=u?["div","ul","li","span"]:["table","tbody","tr","td"],h=(m=="horizontal"),r=hs.createElement("div",{className:"highslide-thumbstrip highslide-thumbstrip-"+m,innerHTML:'
<'+o[0]+"><"+o[1]+">
'},{display:"none"},hs.container),e=r.childNodes,n=e[0],l=e[1],t=e[2],g=e[3],s=n.firstChild,a=r.getElementsByTagName(o[1])[0],b;for(var q=0;q35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){A m={18:{97:\'aK\',aZ:\'fw...\',aY:\'8G 2i fP\',bD:\'8G 2i g0 2i eR\',9Z:\'eZ 2i fc D (f)\',cq:\'f8 by an ao\',cr:\'f4 2i f6 an ao fg\',8Y:\'aq\',8W:\'ay\',8Z:\'ag\',92:\'am\',90:\'am (eD)\',b0:\'eY\',ab:\'al\',au:\'al 1p (aj)\',ac:\'ah\',ad:\'ah 1p (aj)\',8s:\'aq (8w 1b)\',8X:\'ay (8w 3m)\',8V:\'ag\',ae:\'1:1\',3G:\'g7 %1 fz %2\',9W:\'8G 2i 26 2R, dC aA dE 2i 3u. dF 8w dB O 1D aA 3a.\'},5c:\'K/dw/\',7R:\'dv.5q\',6h:\'dx.5q\',6W:5Z,9A:5Z,4W:15,9B:15,4d:15,6L:15,4F:cY,be:0.75,9l:M,9f:5,3Y:2,ei:3,5S:1j,bz:\'4Q 3m\',bA:1,br:M,ct:\'em://K.eh/\',cs:\'ec\',aS:M,9w:[\'a\',\'5v\'],3q:[],cE:5Z,4b:0,87:50,6J:1j,6X:M,4D:M,3U:\'60\',7W:M,46:\'1M\',9n:\'1M\',b1:I,aC:I,a7:M,4s:aw,6k:aw,5Y:M,1Z:\'ev-dV\',8i:{2X:\'

<6t>\'+\'<1H 1W="K-3a">\'+\'\'+\'<1C>{m.18.8Y}\'+\'\'+\'<1H 1W="K-3L">\'+\'\'+\'<1C>{m.18.ab}\'+\'\'+\'<1H 1W="K-3p">\'+\'\'+\'<1C>{m.18.ac}\'+\'\'+\'<1H 1W="K-1D">\'+\'\'+\'<1C>{m.18.8W}\'+\'\'+\'<1H 1W="K-3u">\'+\'\'+\'<1C>{m.18.8Z}\'+\'\'+\'<1H 1W="K-1a-2F">\'+\'\'+\'<1C>{m.18.ae}\'+\'\'+\'<1H 1W="K-26">\'+\'\'+\'<1C>{m.18.92}\'+\'\'+\'

\',bd:\'

<6t>\'+\'<1H 1W="K-3a">\'+\'\'+\'<1C>{m.18.8Y}\'+\'\'+\'<1H 1W="K-1D">\'+\'\'+\'<1C>{m.18.8W}\'+\'\'+\'<1H 1W="K-3u">\'+\'\'+\'<1C>{m.18.8Z}\'+\'\'+\'<1H 1W="K-26">\'+\'\'+\'<1C>{m.18.92}\'+\'\'+\'

\'+\'

\'+\'

\'+\'<1C 1W="K-3O" 24="{m.18.b0}"><1C>\'+\'

\'},64:[],a1:M,16:[],a4:[\'5Y\',\'3t\',\'46\',\'9n\',\'b1\',\'aC\',\'1Z\',\'3Y\',\'dU\',\'dM\',\'dL\',\'b3\',\'dK\',\'dI\',\'dJ\',\'b2\',\'cv\',\'a7\',\'42\',\'6l\',\'3q\',\'4b\',\'L\',\'N\',\'88\',\'6J\',\'6X\',\'4D\',\'dN\',\'dO\',\'dT\',\'2I\',\'7W\',\'4j\',\'4x\',\'3U\',\'8e\',\'a9\',\'4s\',\'6k\',\'6M\',\'9i\',\'aX\',\'2N\',\'2Q\',\'cF\',\'cD\',\'1e\'],1T:[],61:0,8g:{x:[\'bM\',\'1b\',\'4X\',\'3m\',\'bC\'],y:[\'5N\',\'Y\',\'9a\',\'4Q\',\'7E\']},7B:{},b2:{},b3:{},8e:{aG:{},29:{},aF:{}},4m:[],6u:[],4n:{},4R:[],7q:[],5a:[],7k:{},8c:{},7l:[],2t:/dP\\/4\\.0/.11(4A.6d)?8:8J((4A.6d.5G().3b(/.+(?:b9|dQ|e9|2h)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),2h:(W.6q&&!1S.3z),4M:/ea/.11(4A.6d),6y:/eu.+b9:1\\.[0-8].+es/.11(4A.6d),$:C(1v){q(1v)E W.9Q(1v)},2o:C(2a,3j){2a[2a.V]=3j},1d:C(ba,4l,49,6c,bh){A el=W.1d(ba);q(4l)m.3A(el,4l);q(bh)m.R(el,{94:0,8H:\'1E\',9D:0});q(49)m.R(el,49);q(6c)6c.1X(el);E el},3A:C(el,4l){O(A x 2Y 4l)el[x]=4l[x];E el},R:C(el,49){O(A x 2Y 49){q(m.3R&&x==\'1z\'){q(49[x]>0.99)el.G.ew(\'5Q\');J el.G.5Q=\'bg(1z=\'+(49[x]*2w)+\')\'}J el.G[x]=49[x]}},2z:C(el,1f,3C){A 4T,51,4w;q(1F 3C!=\'7j\'||3C===I){A 2H=c5;3C={4h:2H[2],2Q:2H[3],76:2H[4]}}q(1F 3C.4h!=\'3G\')3C.4h=5Z;3C.2Q=1h[3C.2Q]||1h.bj;3C.7g=m.3A({},1f);O(A 2Z 2Y 1f){A e=1J m.fx(el,3C,2Z);4T=8J(m.8I(el,2Z))||0;51=8J(1f[2Z]);4w=2Z!=\'1z\'?\'F\':\'\';e.3E(4T,51,4w)}},8I:C(el,1f){q(el.G[1f]){E el.G[1f]}J q(W.8L){E W.8L.cK(el,I).co(1f)}J{q(1f==\'1z\')1f=\'5Q\';A 3j=el.5y[1f.2k(/\\-(\\w)/g,C(a,b){E b.bi()})];q(1f==\'5Q\')3j=3j.2k(/bg\\(1z=([0-9]+)\\)/,C(a,b){E b/2w});E 3j===\'\'?1:3j}},7S:C(){A d=W,w=1S,63=d.7a&&d.7a!=\'8v\'?d.5h:d.19,3R=m.2h&&(m.2t<9||1F bf==\'1L\');A L=3R?63.8F:(d.5h.8F||7c.ep),N=3R?63.c4:7c.eo;m.4g={L:L,N:N,5O:3R?63.5O:bf,5R:3R?63.5R:ed};E m.4g},6K:C(el){q(/5v/i.11(el.3J)){A 7N=W.2C(\'1N\');O(A i=0;i<7N.V;i++){A u=7N[i].eb;q(u&&u.2k(/^.*?#/,\'\')==el.23.2Z){el=7N[i];5m}}}A p={x:el.4V,y:el.8O};5g(el.bb){el=el.bb;p.x+=el.4V;p.y+=el.8O;q(el!=W.19&&el!=W.5h){p.x-=el.5O;p.y-=el.5R}}E p},2F:C(a,29,3E,T){q(!a)a=m.1d(\'a\',I,{1o:\'1E\'},m.2b);q(1F a.6a==\'C\')E 29;q(T==\'3D\'){O(A i=0;i8d){8d=1B;7n=i}}}q(7n==-1)m.3d=-1;J 16[7n].3M()},43:C(a,6b){a.6a=a.2p;A p=a.6a?a.6a():I;a.6a=I;E(p&&1F p[6b]!=\'1L\')?p[6b]:(1F m[6b]!=\'1L\'?m[6b]:I)},7s:C(a){A 1e=m.43(a,\'1e\');q(1e)E 1e;E a.21},4J:C(1v){A 1P=m.$(1v),4q=m.8c[1v],a={};q(!1P&&!4q)E I;q(!4q){4q=1P.5J(M);4q.1v=\'\';m.8c[1v]=4q;E 1P}J{E 4q.5J(M)}},3B:C(d){q(d)m.9y.1X(d);m.9y.2d=\'\'},1u:C(B){q(!m.2v){84=M;m.2v=m.1d(\'P\',{1c:\'K-dc K-2x-D\',5r:\'\',2p:C(){q(m.1A(m,\'d3\'))m.26()}},{1n:\'1Y\',1z:0},m.2b,M);q(/(df|d2|cU|cT)/.11(4A.6d)){A 19=W.19;C 81(){m.R(m.2v,{L:19.cR+\'F\',N:19.cV+\'F\'})}81();m.2j(1S,\'3O\',81)}}m.2v.G.1o=\'\';A 84=m.2v.5r==\'\';m.2v.5r+=\'|\'+B.Q;q(84){q(m.6y&&m.aR)m.R(m.2v,{9t:\'7T(\'+m.5c+\'d0.ak)\',1z:1});J m.2z(m.2v,{1z:B.4b},m.87)}},9x:C(Q){q(!m.2v)E;q(1F Q!=\'1L\')m.2v.5r=m.2v.5r.2k(\'|\'+Q,\'\');q((1F Q!=\'1L\'&&m.2v.5r!=\'\')||(m.2q&&m.43(m.2q,\'4b\')))E;q(m.6y&&m.aR)m.2v.G.1o=\'1E\';J m.2z(m.2v,{1z:0},m.87,I,C(){m.2v.G.1o=\'1E\'})},8N:C(7z,B){A 1i=B||m.2G();B=1i;q(m.2q)E 1j;J m.1i=1i;m.4z(W,1S.3z?\'6U\':\'71\',m.68);1t{m.2q=7z;7z.2p()}1y(e){m.1i=m.2q=I}1t{q(!7z||B.3q[1]!=\'4e\')B.26()}1y(e){}E 1j},7O:C(el,2n){A B=m.2G(el);q(B)E m.8N(B.7V(2n),B);J E 1j},3a:C(el){E m.7O(el,-1)},1D:C(el){E m.7O(el,1)},68:C(e){q(!e)e=1S.2u;q(!e.2L)e.2L=e.9k;q(1F e.2L.9j!=\'1L\')E M;q(!m.1A(m,\'dz\',e))E M;A B=m.2G();A 2n=I;b6(e.dy){2c 70:q(B)B.7r();E M;2c 32:2n=2;5m;2c 34:2c 39:2c 40:2n=1;5m;2c 8:2c 33:2c 37:2c 38:2n=-1;5m;2c 27:2c 13:2n=0}q(2n!==I){q(2n!=2)m.4z(W,1S.3z?\'6U\':\'71\',m.68);q(!m.aS)E M;q(e.5n)e.5n();J e.c0=1j;q(B){q(2n==0){B.26()}J q(2n==2){q(B.1p)B.1p.cl()}J{q(B.1p)B.1p.3p();m.7O(B.Q,2n)}E 1j}}E M},du:C(14){m.2o(m.1T,m.3A(14,{22:\'22\'+m.61++}))},dt:C(1r){A 3c=1r.2N;q(1F 3c==\'7j\'){O(A i=0;i<3c.V;i++){A o={};O(A x 2Y 1r)o[x]=1r[x];o.2N=3c[i];m.2o(m.6u,o)}}J{m.2o(m.6u,1r)}},9U:C(7y,7h){A el,2m=/^K-U-([0-9]+)$/;el=7y;5g(el.23){q(el.6R!==1L)E el.6R;q(el.1v&&2m.11(el.1v))E el.1v.2k(2m,"$1");el=el.23}q(!7h){el=7y;5g(el.23){q(el.3J&&m.77(el)){O(A Q=0;Q1)E M;q(!e.2L)e.2L=e.9k;A el=e.2L;5g(el.23&&!(/K-(2R|3u|3D|3O)/.11(el.1c))){el=el.23}A B=m.2G(el);q(B&&(B.62||!B.55))E M;q(B&&e.T==\'8y\'){q(e.2L.9j)E M;A 3b=el.1c.3b(/K-(2R|3u|3O)/);q(3b){m.2y={B:B,T:3b[1],1b:B.x.H,L:B.x.D,Y:B.y.H,N:B.y.D,aV:e.7A,aO:e.7F};m.2j(W,\'7D\',m.6H);q(e.5n)e.5n();q(/K-(2R|3D)-9J/.11(B.S.1c)){B.3M();m.a6=M}E 1j}J q(/K-3D/.11(el.1c)&&m.3d!=B.Q){B.3M();B.59(\'1q\')}}J q(e.T==\'c3\'){m.4z(W,\'7D\',m.6H);q(m.2y){q(m.54&&m.2y.T==\'2R\')m.2y.B.S.G.4L=m.54;A 3I=m.2y.3I;q(!3I&&!m.a6&&!/(3u|3O)/.11(m.2y.T)){q(m.1A(B,\'dr\'))B.26()}J q(3I||(!3I&&m.aU)){m.2y.B.59(\'1q\')}q(m.2y.B.3W)m.2y.B.3W.G.1o=\'1E\';q(3I)m.1A(m.2y.B,\'do\',m.2y);m.a6=1j;m.2y=I}J q(/K-2R-9J/.11(el.1c)){el.G.4L=m.54}}E 1j},6H:C(e){q(!m.2y)E M;q(!e)e=1S.2u;A a=m.2y,B=a.B;q(B.1k){q(!B.3W)B.3W=m.1d(\'P\',I,{1l:\'2l\',L:B.x.D+\'F\',N:B.y.D+\'F\',1b:B.x.cb+\'F\',Y:B.y.cb+\'F\',1B:4,9t:(m.3R?\'eB\':\'1E\'),1z:0.eU},B.U,M);q(B.3W.G.1o==\'1E\')B.3W.G.1o=\'\'}a.dX=e.7A-a.aV;a.dY=e.7F-a.aO;A 9g=1h.fG(1h.aE(a.dX,2)+1h.aE(a.dY,2));q(!a.3I)a.3I=(a.T!=\'2R\'&&9g>0)||(9g>(m.fK||5));q(a.3I&&e.7A>5&&e.7F>5){q(!m.1A(B,\'fN\',a))E 1j;q(a.T==\'3O\')B.3O(a);J{B.9m(a.1b+a.dX,a.Y+a.dY);q(a.T==\'2R\')B.S.G.4L=\'3u\'}}E 1j},aP:C(e){1t{q(!e)e=1S.2u;A 66=/fM/i.11(e.T);q(!e.2L)e.2L=e.9k;q(!e.7P)e.7P=66?e.fE:e.fD;A B=m.2G(e.2L);q(!B.55)E;q(!B||!e.7P||m.2G(e.7P,M)==B||m.2y)E;m.1A(B,66?\'ft\':\'fr\',e);O(A i=0;i=k.1r.4h+k.9c){k.4o=k.51;k.H=k.96=1;k.82();k.1r.7g[k.1f]=M;A 9s=M;O(A i 2Y k.1r.7g)q(k.1r.7g[i]!==M)9s=1j;q(9s){q(k.1r.76)k.1r.76.ax(k.30)}E 1j}J{A n=t-k.9c;k.96=n/k.1r.4h;k.H=k.1r.2Q(n,0,1,k.1r.4h);k.4o=k.4T+((k.51-k.4T)*k.H);k.82()}E M}};m.3A(m.fx,{3P:{1z:C(fx){m.R(fx.30,{1z:fx.4o})},ap:C(fx){1t{q(fx.30.G&&fx.30.G[fx.1f]!=I)fx.30.G[fx.1f]=fx.4o+fx.4w;J fx.30[fx.1f]=fx.4o}1y(e){}}}});m.6r=C(1Z,3F){k.3F=3F;k.1Z=1Z;A v=m.2t,47;k.9G=m.2h&&m.2t<7;q(!1Z){q(3F)3F();E}m.7m();k.2g=m.1d(\'2g\',{eJ:0},{1n:\'1q\',1l:\'2l\',eN:\'eM\',L:0},m.2b,M);A 4G=m.1d(\'4G\',I,I,k.2g,1);k.2J=[];O(A i=0;i<=8;i++){q(i%3==0)47=m.1d(\'47\',I,{N:\'1M\'},4G,M);k.2J[i]=m.1d(\'2J\',I,I,47,M);A G=i!=4?{eL:0,eK:0}:{1l:\'4y\'};m.R(k.2J[i],G)}k.2J[4].1c=1Z+\' K-1g\';k.ai()};m.6r.5w={ai:C(){A 1e=m.5c+(m.f1||"fi/")+k.1Z+".ak";A ar=m.4M&&m.2t<73?m.2b:I;k.3V=m.1d(\'1N\',I,{1l:\'2l\',Y:\'-4v\'},ar,M);A 3v=k;k.3V.4N=C(){3v.az()};k.3V.1e=1e},az:C(){A o=k.1w=k.3V.L/4,H=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1u={N:(2*o)+\'F\',L:(2*o)+\'F\'};O(A i=0;i<=8;i++){q(H[i]){q(k.9G){A w=(i==1||i==7)?\'2w%\':k.3V.L+\'F\';A P=m.1d(\'P\',I,{L:\'2w%\',N:\'2w%\',1l:\'4y\',2e:\'1q\'},k.2J[i],M);m.1d(\'P\',I,{5Q:"fo:fn.bv.fm(fl=fe, 1e=\'"+k.3V.1e+"\')",1l:\'2l\',L:w,N:k.3V.N+\'F\',1b:(H[i][0]*o)+\'F\',Y:(H[i][1]*o)+\'F\'},P,M)}J{m.R(k.2J[i],{9t:\'7T(\'+k.3V.1e+\') \'+(H[i][0]*o)+\'F \'+(H[i][1]*o)+\'F\'})}q(1S.3z&&(i==3||i==5))m.1d(\'P\',I,1u,k.2J[i],M);m.R(k.2J[i],1u)}}k.3V=I;q(m.4n[k.1Z])m.4n[k.1Z].5U();m.4n[k.1Z]=k;q(k.3F)k.3F()},4C:C(H,1w,aB,4i,2Q){A B=k.B,5X=B.U.G,1w=1w||0,H=H||{x:B.x.H+1w,y:B.y.H+1w,w:B.x.Z(\'2f\')-2*1w,h:B.y.Z(\'2f\')-2*1w};q(aB)k.2g.G.1n=(H.h>=4*k.1w)?\'1Y\':\'1q\';m.R(k.2g,{1b:(H.x-k.1w)+\'F\',Y:(H.y-k.1w)+\'F\',L:(H.w+2*k.1w)+\'F\'});H.w-=2*k.1w;H.h-=2*k.1w;m.R(k.2J[4],{L:H.w>=0?H.w+\'F\':0,N:H.h>=0?H.h+\'F\':0});q(k.9G)k.2J[3].G.N=k.2J[5].G.N=k.2J[4].G.N},5U:C(bk){q(bk)k.2g.G.1n=\'1q\';J m.3B(k.2g)}};m.6A=C(B,1u){k.B=B;k.1u=1u;k.3l=1u==\'x\'?\'bY\':\'bW\';k.3k=k.3l.5G();k.6m=1u==\'x\'?\'cj\':\'c8\';k.6Y=k.6m.5G();k.9L=1u==\'x\'?\'c7\':\'bX\';k.b5=k.9L.5G();k.1G=k.36=0};m.6A.5w={Z:C(Q){b6(Q){2c\'9T\':E k.1K+k.3s+(k.t-m.2r[\'1w\'+k.3l])/2;2c\'9v\':E k.H+k.cb+k.1G+(k.D-m.2r[\'1w\'+k.3l])/2;2c\'2f\':E k.D+2*k.cb+k.1G+k.36;2c\'5e\':E k.4K-k.3o-k.4S;2c\'8D\':E k.Z(\'5e\')-2*k.cb-k.1G-k.36;2c\'6e\':E k.H-(k.B.1g?k.B.1g.1w:0);2c\'9R\':E k.Z(\'2f\')+(k.B.1g?2*k.B.1g.1w:0);2c\'2K\':E k.1V?1h.3e((k.D-k.1V)/2):0}},8a:C(){k.cb=(k.B.S[\'1w\'+k.3l]-k.t)/2;k.4S=m[\'9D\'+k.9L]},9M:C(){k.t=k.B.el[k.3k]?3H(k.B.el[k.3k]):k.B.el[\'1w\'+k.3l];k.1K=k.B.1K[k.1u];k.3s=(k.B.el[\'1w\'+k.3l]-k.t)/2;q(k.1K==0||k.1K==-1){k.1K=(m.4g[k.3k]/2)+m.4g[\'28\'+k.6m]}},8h:C(){A B=k.B;k.2T=\'1M\';q(B.9n==\'4X\')k.2T=\'4X\';J q(1J 4Y(k.6Y).11(B.46))k.2T=I;J q(1J 4Y(k.b5).11(B.46))k.2T=\'4t\';k.H=k.1K-k.cb+k.3s;q(k.9i&&k.1u==\'x\')B.6M=1h.31(B.6M||k.1a,B.9i*k.1a/B.y.1a);k.D=1h.31(k.1a,B[\'4t\'+k.3l]||k.1a);k.2U=B.5Y?1h.31(B[\'31\'+k.3l],k.1a):k.1a;q(B.2E&&B.3t){k.D=B[k.3k];k.1V=k.1a}q(k.1u==\'x\'&&m.5S)k.2U=B.4s;k.2L=B[\'2L\'+k.1u.bi()];k.3o=m[\'9D\'+k.6m];k.28=m.4g[\'28\'+k.6m];k.4K=m.4g[k.3k]},72:C(i){A B=k.B;q(B.2E&&(B.3t||m.5S)){k.1V=i;k.D=1h.4t(k.D,k.1V);B.S.G[k.6Y]=k.Z(\'2K\')+\'F\'}J k.D=i;B.S.G[k.3k]=i+\'F\';B.U.G[k.3k]=k.Z(\'2f\')+\'F\';q(B.1g)B.1g.4C();q(B.3W)B.3W.G[k.3k]=i+\'F\';q(k.1u==\'y\'&&B.5C&&B.19.G.N!=\'1M\')1t{B.5C.19.G.2e=\'1M\'}1y(e){}q(B.2A){A d=B.2s;q(k.9e===1L)k.9e=B.1s[\'1w\'+k.3l]-d[\'1w\'+k.3l];d.G[k.3k]=(k.D-k.9e)+\'F\';q(k.1u==\'x\')B.4c.G.L=\'1M\';q(B.19)B.19.G[k.3k]=\'1M\'}q(k.1u==\'x\'&&B.1x)B.57(M);q(k.1u==\'x\'&&B.1p&&B.2E){q(i==k.1a)B.1p.5d(\'1a-2F\');J B.1p.4u(\'1a-2F\')}},aa:C(i){k.H=i;k.B.U.G[k.6Y]=i+\'F\';q(k.B.1g)k.B.1g.4C()}};m.5A=C(a,29,3E,35){q(W.bS&&m.2h&&!m.9F){m.2j(W,\'41\',C(){1J m.5A(a,29,3E,35)});E}k.a=a;k.3E=3E;k.35=35||\'2R\';k.2A=(35==\'3D\');k.2E=!k.2A;m.a1=1j;k.1T=[];k.1i=m.1i;m.1i=I;m.7m();A Q=k.Q=m.16.V;O(A i=0;ip.28+p.4K-p.4S)p.H=p.28+p.4K-p.D-p.3o-p.4S-p.1G-p.36;q(p.H(k.x.1V||k.x.D)){k.bs();q(k.1T.V==1)k.57()}}k.a5()}1y(e){k.9o(e)}},91:C(6c,1M){A c=m.4p(6c,\'7J\',\'K-19\');q(/(1k|3x)/.11(k.2I)){q(k.4j)c.G.L=k.4j+\'F\';q(k.4x)c.G.N=k.4x+\'F\'}},6T:C(){q(k.aD)E;A B=k;k.19=m.4p(k.1s,\'7J\',\'K-19\');q(k.2I==\'1k\'){k.6n();A 5o=m.3w.5J(1);k.19.1X(5o);k.eP=k.1s.1O;q(!k.4j)k.4j=5o.1O;A 5b=k.1s.1U-k.19.1U,h=k.4x||m.4g.N-5b-m.4d-m.6L,4N=k.3U==\'60\'?\' 4N="q (m.16[\'+k.Q+\']) m.16[\'+k.Q+\'].69()" \':\'\';k.19.2d+=\'<1k 2Z="m\'+(1J 7K()).79()+\'" eQ="0" Q="\'+k.Q+\'" \'+\' G="L:\'+k.4j+\'F; N:\'+h+\'F" \'+4N+\' 1e="\'+k.1e+\'" >\';k.5o=k.19.2C(\'P\')[0];k.1k=k.19.2C(\'1k\')[0];q(k.3U==\'6x\')k.8A()}q(k.2I==\'3x\'){k.19.1v=k.19.1v||\'m-fY-1v-\'+k.Q;A a=k.8e;q(!a.29)a.29={};q(1F a.29.aN==\'1L\')a.29.aN=\'fR\';q(9p)9p.fT(k.1e,k.19.1v,k.4j,k.4x,a.g1||\'7\',a.gb,a.aG,a.29,a.aF)}k.aD=M},7Z:C(){q(k.1k&&!k.4x){k.1k.G.N=k.19.G.N=k.8p()+\'F\'}k.1s.1X(m.3w);q(!k.x.1a)k.x.1a=k.1s.1O;k.y.1a=k.1s.1U;k.1s.9q(m.3w);q(m.2h&&k.aL>3H(k.1s.5y.N)){k.aL=3H(k.1s.5y.N)}m.R(k.U,{1l:\'2l\',94:\'0\'});m.R(k.S,{L:k.x.t+\'F\',N:k.y.t+\'F\'})},8p:C(){A h;1t{A 2B=k.5C=k.1k.9O||k.1k.6g.W;A 3w=2B.1d(\'P\');3w.G.aJ=\'bc\';2B.19.1X(3w);h=3w.8O;q(m.2h)h+=3H(2B.19.5y.4d)+3H(2B.19.5y.6L)-1}1y(e){h=de}E h},8A:C(){A 5i=k.1s.1O-k.5o.1O;m.3B(k.5o);q(5i<0)5i=0;A 5b=k.1s.1U-k.1k.1U;q(k.5C&&!k.4x&&!k.N&&k.y.D==k.y.1a)1t{k.5C.19.G.2e=\'1q\'}1y(e){}m.R(k.1k,{L:1h.9Y(k.x.D-5i)+\'F\',N:1h.9Y(k.y.D-5b)+\'F\'});m.R(k.19,{L:k.1k.G.L,N:k.1k.G.N});k.52=k.1k;k.2s=k.52},b4:C(){k.91(k.1s);q(k.2I==\'3x\'&&k.3U==\'60\')k.6T();q(k.x.D1P.1U){1P.G.L=(3H(1P.G.L)+6E)+\'F\'}k.52=1P;k.2s=k.52}q(k.1k&&k.3U==\'60\')k.8A();q(!k.52&&k.y.Dk.2s.23.1U){4a("1t { m.16["+k.Q+"].2s.G.2e = \'1M\'; } 1y(e) {}",m.6W)}},b8:C(5v){A c=5v.fC.7G(\',\');O(A i=0;ip.28+p.4K-p.4S){q(!5u&&8C&&5s){p.D=1h.31(p.D,p.Z(1u==\'y\'?\'5e\':\'8D\'))}J q(p.Z(\'2f\')2M){ 3f=3y*2M;q(3fk.6k&&x.D>k.4s&&y.Z(\'2f\')>y.Z(\'5e\')){y.D-=10;q(2M)x.D=y.D*2M;k.57(0,1);3T=M}}E 3T},dS:C(){q(k.2s){A h=/1k/i.11(k.2s.3J)?(k.8p()+1)+\'F\':\'1M\';q(k.19)k.19.G.N=h;k.2s.G.N=h;k.y.72(k.1s.1U)}},a5:C(){A x=k.x,y=k.y;k.59(\'1q\');m.1A(k,\'et\');q(k.1p&&k.1p.2D)k.1p.2D.5t();k.9b(1,{U:{L:x.Z(\'2f\'),N:y.Z(\'2f\'),1b:x.H,Y:y.H},S:{1b:x.1G+x.Z(\'2K\'),Y:y.1G+y.Z(\'2K\'),L:x.1V||x.D,N:y.1V||y.D}},m.6W)},9b:C(1I,2i,4i){A 5M=k.3q,8o=1I?(k.1i?k.1i.a:I):m.2q,t=(5M[1]&&8o&&m.43(8o,\'3q\')[1]==5M[1])?5M[1]:5M[0];q(k[t]&&t!=\'2F\'){k[t](1I,2i);E}q(k.1g&&!k.3Y){q(1I)k.1g.4C();J k.1g.5U((k.2A&&k.4D))}q(!1I)k.78();A B=k,x=B.x,y=B.y,2Q=k.2Q;q(!1I)2Q=k.cF||2Q;A 6x=1I?C(){q(B.1g)B.1g.2g.G.1n="1Y";4a(C(){B.6I()},50)}:C(){B.5D()};q(1I)m.R(k.U,{L:x.t+\'F\',N:y.t+\'F\'});q(1I&&k.2A){m.R(k.U,{1b:(x.1K-x.cb+x.3s)+\'F\',Y:(y.1K-y.cb+y.3s)+\'F\'})}q(k.cD){m.R(k.U,{1z:1I?0:1});m.3A(2i.U,{1z:1I})}m.2z(k.U,2i.U,{4h:4i,2Q:2Q,3P:C(3j,2H){q(B.1g&&B.3Y&&2H.1f==\'Y\'){A 5W=1I?2H.H:1-2H.H;A H={w:x.t+(x.Z(\'2f\')-x.t)*5W,h:y.t+(y.Z(\'2f\')-y.t)*5W,x:x.1K+(x.H-x.1K)*5W,y:y.1K+(y.H-y.1K)*5W};B.1g.4C(H,0,1)}q(B.2A){q(2H.1f==\'1b\')B.4c.G.1b=(x.H-3j)+\'F\';q(2H.1f==\'Y\')B.4c.G.Y=(y.H-3j)+\'F\'}}});m.2z(k.S,2i.S,4i,2Q,6x);q(1I){k.U.G.1n=\'1Y\';k.S.G.1n=\'1Y\';q(k.2A)k.1s.G.1n=\'1Y\';k.a.1c+=\' K-4I-46\'}},6w:C(1I,2i){k.3Y=1j;A B=k,t=1I?m.6W:0;q(1I){m.2z(k.U,2i.U,0);m.R(k.U,{1z:0,1n:\'1Y\'});m.2z(k.S,2i.S,0);k.S.G.1n=\'1Y\';m.2z(k.U,{1z:1},t,I,C(){B.6I()})}q(k.1g){k.1g.2g.G.1B=k.U.G.1B;A 6Z=1I||-1,1w=k.1g.1w,8r=1I?3:1w,8q=1I?1w:3;O(A i=8r;6Z*i<=6Z*8q;i+=6Z,t+=25){(C(){A o=1I?8q-i:8r-i;4a(C(){B.1g.4C(0,o,1)},t)})()}}q(1I){}J{4a(C(){q(B.1g)B.1g.5U(B.4D);B.78();m.2z(B.U,{1z:0},m.9A,I,C(){B.5D()})},t)}},4e:C(1I,2i,8u){q(!1I)E;A B=k,1i=k.1i,x=k.x,y=k.y,3n=1i.x,3g=1i.y,U=k.U,S=k.S,1x=k.1x;m.4z(W,\'7D\',m.6H);m.R(S,{L:(x.1V||x.D)+\'F\',N:(y.1V||y.D)+\'F\'});q(1x)1x.G.2e=\'1Y\';k.1g=1i.1g;q(k.1g)k.1g.B=B;1i.1g=I;A 5l=m.1d(\'P\',{1c:\'K-\'+k.35},{1l:\'2l\',1B:4,2e:\'1q\',1o:\'1E\'});A 8t={cN:1i,cM:k};O(A n 2Y 8t){k[n]=8t[n].S.5J(1);m.R(k[n],{1l:\'2l\',8H:0,1n:\'1Y\'});5l.1X(k[n])}U.1X(5l);q(k.2A)m.R(k.4c,{1b:0,Y:0});q(1x){1x.1c=\'\';U.1X(1x)}5l.G.1o=\'\';1i.S.G.1o=\'1E\';q(m.4M&&m.2t<73){k.U.G.1n=\'1Y\'}m.2z(U,{L:x.D},{4h:m.cE,3P:C(3j,2H){A H=2H.H,4B=1-H;A 1f,D={},93=[\'H\',\'D\',\'1G\',\'36\'];O(A n 2Y 93){1f=93[n];D[\'x\'+1f]=1h.3e(4B*3n[1f]+H*x[1f]);D[\'y\'+1f]=1h.3e(4B*3g[1f]+H*y[1f]);D.cI=1h.3e(4B*(3n.1V||3n.D)+H*(x.1V||x.D));D.6S=1h.3e(4B*3n.Z(\'2K\')+H*x.Z(\'2K\'));D.cJ=1h.3e(4B*(3g.1V||3g.D)+H*(y.1V||y.D));D.6V=1h.3e(4B*3g.Z(\'2K\')+H*y.Z(\'2K\'))}q(B.1g)B.1g.4C({x:D.3h,y:D.3r,w:D.5L+D.44+D.8U+2*x.cb,h:D.5K+D.45+D.8T+2*y.cb});1i.U.G.d7=\'d6(\'+(D.3r-3g.H)+\'F, \'+(D.5L+D.44+D.8U+D.3h+2*3n.cb-3n.H)+\'F, \'+(D.5K+D.45+D.8T+D.3r+2*3g.cb-3g.H)+\'F, \'+(D.3h-3n.H)+\'F)\';m.R(S,{Y:(D.45+y.Z(\'2K\'))+\'F\',1b:(D.44+x.Z(\'2K\'))+\'F\',4d:(y.H-D.3r)+\'F\',4W:(x.H-D.3h)+\'F\'});m.R(U,{Y:D.3r+\'F\',1b:D.3h+\'F\',L:(D.44+D.8U+D.5L+2*x.cb)+\'F\',N:(D.45+D.8T+D.5K+2*y.cb)+\'F\'});m.R(5l,{L:(D.cI||D.5L)+\'F\',N:(D.cJ||D.5K)+\'F\',1b:(D.44+D.6S)+\'F\',Y:(D.45+D.6V)+\'F\',1n:\'1Y\'});m.R(B.cN,{Y:(3g.H-D.3r+3g.1G-D.45+3g.Z(\'2K\')-D.6V)+\'F\',1b:(3n.H-D.3h+3n.1G-D.44+3n.Z(\'2K\')-D.6S)+\'F\'});m.R(B.cM,{1z:H,Y:(y.H-D.3r+y.1G-D.45+y.Z(\'2K\')-D.6V)+\'F\',1b:(x.H-D.3h+x.1G-D.44+x.Z(\'2K\')-D.6S)+\'F\'});q(1x)m.R(1x,{L:D.5L+\'F\',N:D.5K+\'F\',1b:(D.44+x.cb)+\'F\',Y:(D.45+y.cb)+\'F\'})},76:C(){U.G.1n=S.G.1n=\'1Y\';S.G.1o=\'3X\';m.3B(5l);B.6I();1i.5D();B.1i=I}})},bQ:C(o,el){q(!k.1i)E 1j;O(A i=0;i\'+s+\'

\'+k[k.6l].2d}}},a0:C(){q(!k.1i){O(A i=0;ik.x.Z(\'6e\')+k.x.Z(\'9R\'));A bG=(3N.y+3N.hk.y.Z(\'6e\')+k.y.Z(\'9R\'))}A 6F=m.9U(1m[i]);q(!bl&&!bG&&6F!=k.Q){q(!2S){1m[i].5F(\'1q-by\',\'[\'+k.Q+\']\');1m[i].9N=1m[i].G[1f];1m[i].G[1f]=\'1q\'}J q(2S.bF(\'[\'+k.Q+\']\')==-1){1m[i].5F(\'1q-by\',2S+\'[\'+k.Q+\']\')}}J q((2S==\'[\'+k.Q+\']\'||m.3d==6F)&&6F!=k.Q){1m[i].5F(\'1q-by\',\'\');1m[i].G[1f]=1m[i].9N||\'\'}J q(2S&&2S.bF(\'[\'+k.Q+\']\')>-1){1m[i].5F(\'1q-by\',2S.2k(\'[\'+k.Q+\']\',\'\'))}}}}},3M:C(){k.U.G.1B=m.4F+=2;O(A i=0;i14.23.1O)14.G.L=\'2w%\'}J q(14.23!=k.1x)k.1x.1X(14);q(/1b$/.11(p))14.G.1b=74+\'F\';q(/4X$/.11(p))m.R(14,{1b:\'50%\',4W:(74-1h.3e(14.1O/2))+\'F\'});q(/3m$/.11(p))14.G.3m=-74+\'F\';q(/^bM$/.11(p)){m.R(14,{3m:\'2w%\',9B:k.x.cb+\'F\',Y:-k.y.cb+\'F\',4Q:-k.y.cb+\'F\',2e:\'1M\'});k.x.1G=14.1O}J q(/^bC$/.11(p)){m.R(14,{1b:\'2w%\',4W:k.x.cb+\'F\',Y:-k.y.cb+\'F\',4Q:-k.y.cb+\'F\',2e:\'1M\'});k.x.36=14.1O}A 9d=14.23.1U;14.G.N=\'1M\';q(53&&14.1U>9d)14.G.N=m.3Z?9d+\'F\':\'2w%\';q(/^Y/.11(p))14.G.Y=6O+\'F\';q(/^9a/.11(p))m.R(14,{Y:\'50%\',4d:(6O-1h.3e(14.1U/2))+\'F\'});q(/^4Q/.11(p))14.G.4Q=-6O+\'F\';q(/^5N$/.11(p)){m.R(14,{1b:(-k.x.1G-k.x.cb)+\'F\',3m:(-k.x.36-k.x.cb)+\'F\',4Q:\'2w%\',6L:k.y.cb+\'F\',L:\'1M\'});k.y.1G=14.1U}J q(/^7E$/.11(p)){m.R(14,{1l:\'4y\',1b:(-k.x.1G-k.x.cb)+\'F\',3m:(-k.x.36-k.x.cb)+\'F\',Y:\'2w%\',4d:k.y.cb+\'F\',L:\'1M\'});k.y.36=14.1U;14.G.1l=\'2l\'}},bB:C(){k.a2([\'58\',\'9X\'],M);k.bq();q(k.9X)m.1A(k,\'eE\');q(k.58)m.1A(k,\'eF\');q(k.58&&k.a7)k.58.1c+=\' K-3u\';q(m.br)k.bp();O(A i=0;i=5.5){s=s.2k(1J 4Y(\']*>\',\'c9\'),\'\').2k(1J 4Y(\']*>.*?\',\'c9\'),\'\');q(k.1k){A 2B=k.1k.9O;q(!2B&&k.1k.6g)2B=k.1k.6g.W;q(!2B){A 3v=k;4a(C(){3v.6f()},25);E}2B.ca();2B.dg(s);2B.26();1t{s=2B.9Q(k.1v).2d}1y(e){1t{s=k.1k.W.9Q(k.1v).2d}1y(e){}}m.3B(k.1k)}J{7H=/(<19[^>]*>|<\\/19>)/db;q(7H.11(s))s=s.7G(7H)[m.3R?1:2]}}m.4p(k.S,\'7J\',\'K-19\').2d=s;k.3F();O(A x 2Y k)k[x]=I}};m.83=C(4k,1r){q(m.cX!==1j)m.95();k.4k=4k;O(A x 2Y 1r)k[x]=1r[x];q(k.cZ)k.cg();q(k.2D)k.2D=m.ci(k)};m.83.5w={cg:C(){k.2X=m.1d(\'P\',{2d:m.8b(m.8i.2X)},I,m.2b);A 6j=[\'3L\',\'3p\',\'3a\',\'1D\',\'3u\',\'1a-2F\',\'26\'];k.1Q={};A 3v=k;O(A i=0;i<6j.V;i++){k.1Q[6j[i]]=m.4p(k.2X,\'1H\',\'K-\'+6j[i]);k.4u(6j[i])}k.1Q.3p.G.1o=\'1E\'},ch:C(){q(k.cm||!k.2X)E;A B=m.16[k.4k],5q=B.7v(),2m=/7w$/;q(5q==0)k.5d(\'3a\');J q(2m.11(k.1Q.3a.2C(\'a\')[0].1c))k.4u(\'3a\');q(5q+1==m.4U.3i[B.2N||\'1E\'].V){k.5d(\'1D\');k.5d(\'3L\')}J q(2m.11(k.1Q.1D.2C(\'a\')[0].1c)){k.4u(\'1D\');k.4u(\'3L\')}},4u:C(1Q){q(!k.1Q)E;A cn=k,a=k.1Q[1Q].2C(\'a\')[0],2m=/7w$/;a.2p=C(){cn[1Q]();E 1j};q(2m.11(a.1c))a.1c=a.1c.2k(2m,\'\')},5d:C(1Q){q(!k.1Q)E;A a=k.1Q[1Q].2C(\'a\')[0];a.2p=C(){E 1j};q(!/7w$/.11(a.1c))a.1c+=\' 7w\'},cl:C(){q(k.42)k.3p();J k.3L()},3L:C(ck){q(k.1Q){k.1Q.3L.G.1o=\'1E\';k.1Q.3p.G.1o=\'\'}k.42=M;q(!ck)m.1D(k.4k)},3p:C(){q(k.1Q){k.1Q.3p.G.1o=\'1E\';k.1Q.3L.G.1o=\'\'}d9(k.42);k.42=I},3a:C(){k.3p();m.3a(k.1Q.3a)},1D:C(){k.3p();m.1D(k.1Q.1D)},3u:C(){},\'1a-2F\':C(){m.2G().7r()},26:C(){m.26(k.1Q.26)}};m.ci=C(1p){C 7p(B){m.3A(1r||{},{4P:4E,22:\'2D\',1c:\'K-2D-\'+5k+\'-14 \'+(1r.1c||\'\')});q(m.3Z)1r.6w=0;B.4O(1r);m.R(4E.23,{2e:\'1q\'})};C 28(3K){5t(1L,1h.3e(3K*4E[3S?\'1O\':\'1U\']*0.7))};C 5t(i,80){q(i===1L)O(A j=0;j<5I.V;j++){q(5I[j]==m.16[1p.4k].a){i=j;5m}}q(i===1L)E;A as=4E.2C(\'a\'),4I=as[i],48=4I.23,1b=3S?\'cj\':\'c8\',3m=3S?\'c7\':\'bX\',L=3S?\'bY\':\'bW\',4V=\'1w\'+1b,1O=\'1w\'+L,7e=P.23.23[1O],5j=7e-2g[1O],6o=3H(2g.G[3S?\'1b\':\'Y\'])||0,2O=6o,ej=20;q(80!==1L){2O=6o-80;q(5j>0)5j=0;q(2O>0)2O=0;q(2O<5j)2O=5j}J{O(A j=0;j0?as[i-1].23[4V]:48[4V],7Y=48[4V]+48[1O]+(as[i+1]?as[i+1].23[1O]:0);q(7Y>7e-6o)2O=7e-7Y;J q(7X<-6o)2O=-7X}A 8R=48[4V]+(48[1O]-7f[1O])/2+2O;m.2z(2g,3S?{1b:2O}:{Y:2O},I,\'8S\');m.2z(7f,3S?{1b:8R}:{Y:8R},I,\'8S\');8l.G.1o=2O<0?\'3X\':\'1E\';8M.G.1o=(2O>5j)?\'3X\':\'1E\'};A 5I=m.4U.3i[m.16[1p.4k].2N||\'1E\'],1r=1p.2D,5k=1r.5k||\'bV\',8K=(5k==\'en\'),4f=8K?[\'P\',\'6t\',\'1H\',\'1C\']:[\'2g\',\'4G\',\'47\',\'2J\'],3S=(5k==\'bV\'),4E=m.1d(\'P\',{1c:\'K-2D K-2D-\'+5k,2d:\'

\'+\'<\'+4f[0]+\'><\'+4f[1]+\'>

\'+\'

\'+\'

\'+\'

\'},{1o:\'1E\'},m.2b),5E=4E.7L,P=5E[0],8l=5E[1],8M=5E[2],7f=5E[3],2g=P.ef,4G=4E.2C(4f[1])[0],47;O(A i=0;i<5I.V;i++){q(i==0||!3S)47=m.1d(4f[2],I,I,4G);(C(){A a=5I[i],48=m.1d(4f[3],I,I,47),ex=i;m.1d(\'a\',{21:a.21,24:a.24,2p:C(){q(/K-4I-46/.11(k.1c))E 1j;m.2G(k).3M();E m.8N(a)},2d:m.bT?m.bT(a):a.2d},I,48)})()}q(!8K){8l.2p=C(){28(-1)};8M.2p=C(){28(1)};m.2j(4G,W.eA!==1L?\'er\':\'eq\',C(e){A 3K=0;e=e||1S.2u;q(e.bU){3K=e.bU/dR;q(m.3z)3K=-3K}J q(e.bZ){3K=-e.bZ/3}q(3K)28(-3K*0.2);q(e.5n)e.5n();e.c0=1j})}E{7p:7p,5t:5t}};m.7o=m.18;A e8=m.5A;q(m.2h&&1S==1S.Y){(C(){1t{W.5h.e4(\'1b\')}1y(e){4a(c5.dZ,50);E}m.41()})()}m.2j(W,\'dW\',m.41);m.2j(1S,\'8B\',m.41);m.2j(W,\'41\',C(){q(m.7R||m.4b){A G=m.1d(\'G\',{T:\'e0/8I\'},I,W.2C(\'e1\')[0]),8E=W.7a==\'8v\';C 5P(8m,8n){q(m.2h&&(m.2t<9||8E)){A 1i=W.c6[W.c6.V-1];q(1F(1i.5P)=="7j")1i.5P(8m,8n)}J{G.1X(W.e6(8m+" {"+8n+"}"))}}C 5T(1f){E\'e5( ( ( ez = W.5h.\'+1f+\' ? W.5h.\'+1f+\' : W.19.\'+1f+\' ) ) + \\\'F\\\' );\'}q(m.7R)5P(\'.K 1N\',\'4L: 7T(\'+m.5c+m.7R+\'), 7Q !dA;\');5P(\'.K-2x-D\',m.2h&&(m.2t<7||8E)?\'1l: 2l; \'+\'1b:\'+5T(\'5O\')+\'Y:\'+5T(\'5R\')+\'L:\'+5T(\'8F\')+\'N:\'+5T(\'c4\'):\'1l: fV; L: 2w%; N: 2w%; 1b: 0; Y: 0\')}});m.2j(1S,\'3O\',C(){m.7S();q(m.2x)O(A i=0;iHighslide JS
', + creditsTitle : 'Go to the Highslide JS homepage', + previousText : 'Previous', + nextText : 'Next', + moveText : 'Move', + closeText : 'Close', + closeTitle : 'Close (esc)', + resizeTitle : 'Resize', + playText : 'Play', + playTitle : 'Play slideshow (spacebar)', + pauseText : 'Pause', + pauseTitle : 'Pause slideshow (spacebar)', + previousTitle : 'Previous (arrow left)', + nextTitle : 'Next (arrow right)', + moveTitle : 'Move', + fullExpandText : '1:1', + number: 'Image %1 of %2', + restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' +}, +// See http://highslide.com/ref for examples of settings +graphicsDir : 'highslide/graphics/', +expandCursor : 'zoomin.cur', // null disables +restoreCursor : 'zoomout.cur', // null disables +expandDuration : 250, // milliseconds +restoreDuration : 250, +marginLeft : 15, +marginRight : 15, +marginTop : 15, +marginBottom : 15, +zIndexCounter : 1001, // adjust to other absolutely positioned elements +loadingOpacity : 0.75, +allowMultipleInstances: true, +numberOfImagesToPreload : 5, +outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only +outlineStartOffset : 3, // ends at 10 +padToMinWidth : false, // pad the popup width to make room for wide caption +fullExpandPosition : 'bottom right', +fullExpandOpacity : 1, +showCredits : true, // you can set this to false if you want +creditsHref : 'http://highslide.com/', +creditsTarget : '_self', +enableKeyListener : true, +openerTagNames : ['a'], // Add more to allow slideshow indexing +transitions : [], +transitionDuration: 250, +dimmingOpacity: 0, // Lightbox style dimming background +dimmingDuration: 50, // 0 for instant dimming + +anchor : 'auto', // where the image expands from +align : 'auto', // position in the client (overrides anchor) +targetX: null, // the id of a target element +targetY: null, +dragByHeading: true, +minWidth: 200, +minHeight: 200, +allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight +outlineType : 'drop-shadow', // set null to disable outlines +skin : { + controls: + '
' +}, +// END OF YOUR SETTINGS + + +// declare internal properties +preloadTheseImages : [], +continuePreloading: true, +expanders : [], +overrides : [ + 'allowSizeReduction', + 'useBox', + 'anchor', + 'align', + 'targetX', + 'targetY', + 'outlineType', + 'outlineWhileAnimating', + 'captionId', + 'captionText', + 'captionEval', + 'captionOverlay', + 'headingId', + 'headingText', + 'headingEval', + 'headingOverlay', + 'creditsPosition', + 'dragByHeading', + 'autoplay', + 'numberPosition', + 'transitions', + 'dimmingOpacity', + + 'width', + 'height', + + 'wrapperClassName', + 'minWidth', + 'minHeight', + 'maxWidth', + 'maxHeight', + 'pageOrigin', + 'slideshowGroup', + 'easing', + 'easingClose', + 'fadeInOut', + 'src' +], +overlays : [], +idCounter : 0, +oPos : { + x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], + y: ['above', 'top', 'middle', 'bottom', 'below'] +}, +mouse: {}, +headingOverlay: {}, +captionOverlay: {}, +timers : [], + +slideshows : [], + +pendingOutlines : {}, +clones : {}, +onReady: [], +uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : + parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), +ie : (document.all && !window.opera), +//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant? +safari : /Safari/.test(navigator.userAgent), +geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), + +$ : function (id) { + if (id) return document.getElementById(id); +}, + +push : function (arr, val) { + arr[arr.length] = val; +}, + +createElement : function (tag, attribs, styles, parent, nopad) { + var el = document.createElement(tag); + if (attribs) hs.extend(el, attribs); + if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); + if (styles) hs.setStyles(el, styles); + if (parent) parent.appendChild(el); + return el; +}, + +extend : function (el, attribs) { + for (var x in attribs) el[x] = attribs[x]; + return el; +}, + +setStyles : function (el, styles) { + for (var x in styles) { + if (hs.ieLt9 && x == 'opacity') { + if (styles[x] > 0.99) el.style.removeAttribute('filter'); + else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; + } + else el.style[x] = styles[x]; + } +}, +animate: function(el, prop, opt) { + var start, + end, + unit; + if (typeof opt != 'object' || opt === null) { + var args = arguments; + opt = { + duration: args[2], + easing: args[3], + complete: args[4] + }; + } + if (typeof opt.duration != 'number') opt.duration = 250; + opt.easing = Math[opt.easing] || Math.easeInQuad; + opt.curAnim = hs.extend({}, prop); + for (var name in prop) { + var e = new hs.fx(el, opt , name ); + + start = parseFloat(hs.css(el, name)) || 0; + end = parseFloat(prop[name]); + unit = name != 'opacity' ? 'px' : ''; + + e.custom( start, end, unit ); + } +}, +css: function(el, prop) { + if (el.style[prop]) { + return el.style[prop]; + } else if (document.defaultView) { + return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); + + } else { + if (prop == 'opacity') prop = 'filter'; + var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; + if (prop == 'filter') + val = val.replace(/alpha\(opacity=([0-9]+)\)/, + function (a, b) { return b / 100 }); + return val === '' ? 1 : val; + } +}, + +getPageSize : function () { + var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' + ? d.documentElement : d.body, + ieLt9 = hs.ie && (hs.uaVersion < 9 || typeof pageXOffset == 'undefined'); + + var width = ieLt9 ? iebody.clientWidth : + (d.documentElement.clientWidth || self.innerWidth), + height = ieLt9 ? iebody.clientHeight : self.innerHeight; + hs.page = { + width: width, + height: height, + scrollLeft: ieLt9 ? iebody.scrollLeft : pageXOffset, + scrollTop: ieLt9 ? iebody.scrollTop : pageYOffset + }; + return hs.page; +}, + +getPosition : function(el) { + var p = { x: el.offsetLeft, y: el.offsetTop }; + while (el.offsetParent) { + el = el.offsetParent; + p.x += el.offsetLeft; + p.y += el.offsetTop; + if (el != document.body && el != document.documentElement) { + p.x -= el.scrollLeft; + p.y -= el.scrollTop; + } + } + return p; +}, + +expand : function(a, params, custom, type) { + if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); + if (typeof a.getParams == 'function') return params; + try { + new hs.Expander(a, params, custom); + return false; + } catch (e) { return true; } +}, +getElementByClass : function (el, tagName, className) { + var els = el.getElementsByTagName(tagName); + for (var i = 0; i < els.length; i++) { + if ((new RegExp(className)).test(els[i].className)) { + return els[i]; + } + } + return null; +}, +replaceLang : function(s) { + s = s.replace(/\s/g, ' '); + var re = /{hs\.lang\.([^}]+)\}/g, + matches = s.match(re), + lang; + if (matches) for (var i = 0; i < matches.length; i++) { + lang = matches[i].replace(re, "$1"); + if (typeof hs.lang[lang] != 'undefined') s = s.replace(matches[i], hs.lang[lang]); + } + return s; +}, + + +focusTopmost : function() { + var topZ = 0, + topmostKey = -1, + expanders = hs.expanders, + exp, + zIndex; + for (var i = 0; i < expanders.length; i++) { + exp = expanders[i]; + if (exp) { + zIndex = exp.wrapper.style.zIndex; + if (zIndex && zIndex > topZ) { + topZ = zIndex; + topmostKey = i; + } + } + } + if (topmostKey == -1) hs.focusKey = -1; + else expanders[topmostKey].focus(); +}, + +getParam : function (a, param) { + a.getParams = a.onclick; + var p = a.getParams ? a.getParams() : null; + a.getParams = null; + + return (p && typeof p[param] != 'undefined') ? p[param] : + (typeof hs[param] != 'undefined' ? hs[param] : null); +}, + +getSrc : function (a) { + var src = hs.getParam(a, 'src'); + if (src) return src; + return a.href; +}, + +getNode : function (id) { + var node = hs.$(id), clone = hs.clones[id], a = {}; + if (!node && !clone) return null; + if (!clone) { + clone = node.cloneNode(true); + clone.id = ''; + hs.clones[id] = clone; + return node; + } else { + return clone.cloneNode(true); + } +}, + +discardElement : function(d) { + if (d) hs.garbageBin.appendChild(d); + hs.garbageBin.innerHTML = ''; +}, +dim : function(exp) { + if (!hs.dimmer) { + isNew = true; + hs.dimmer = hs.createElement ('div', { + className: 'highslide-dimming highslide-viewport-size', + owner: '', + onclick: function() { + + hs.close(); + } + }, { + visibility: 'visible', + opacity: 0 + }, hs.container, true); + + if (/(Android|iPad|iPhone|iPod)/.test(navigator.userAgent)) { + var body = document.body; + function pixDimmerSize() { + hs.setStyles(hs.dimmer, { + width: body.scrollWidth +'px', + height: body.scrollHeight +'px' + }); + } + pixDimmerSize(); + hs.addEventListener(window, 'resize', pixDimmerSize); + } + } + hs.dimmer.style.display = ''; + + var isNew = hs.dimmer.owner == ''; + hs.dimmer.owner += '|'+ exp.key; + + if (isNew) { + if (hs.geckoMac && hs.dimmingGeckoFix) + hs.setStyles(hs.dimmer, { + background: 'url('+ hs.graphicsDir + 'geckodimmer.png)', + opacity: 1 + }); + else + hs.animate(hs.dimmer, { opacity: exp.dimmingOpacity }, hs.dimmingDuration); + } +}, +undim : function(key) { + if (!hs.dimmer) return; + if (typeof key != 'undefined') hs.dimmer.owner = hs.dimmer.owner.replace('|'+ key, ''); + + if ( + (typeof key != 'undefined' && hs.dimmer.owner != '') + || (hs.upcoming && hs.getParam(hs.upcoming, 'dimmingOpacity')) + ) return; + + if (hs.geckoMac && hs.dimmingGeckoFix) hs.dimmer.style.display = 'none'; + else hs.animate(hs.dimmer, { opacity: 0 }, hs.dimmingDuration, null, function() { + hs.dimmer.style.display = 'none'; + }); +}, +transit : function (adj, exp) { + var last = exp || hs.getExpander(); + exp = last; + if (hs.upcoming) return false; + else hs.last = last; + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + try { + hs.upcoming = adj; + adj.onclick(); + } catch (e){ + hs.last = hs.upcoming = null; + } + try { + if (!adj || exp.transitions[1] != 'crossfade') + exp.close(); + } catch (e) {} + return false; +}, + +previousOrNext : function (el, op) { + var exp = hs.getExpander(el); + if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp); + else return false; +}, + +previous : function (el) { + return hs.previousOrNext(el, -1); +}, + +next : function (el) { + return hs.previousOrNext(el, 1); +}, + +keyHandler : function(e) { + if (!e) e = window.event; + if (!e.target) e.target = e.srcElement; // ie + if (typeof e.target.form != 'undefined') return true; // form element has focus + var exp = hs.getExpander(); + + var op = null; + switch (e.keyCode) { + case 70: // f + if (exp) exp.doFullExpand(); + return true; + case 32: // Space + op = 2; + break; + case 34: // Page Down + case 39: // Arrow right + case 40: // Arrow down + op = 1; + break; + case 8: // Backspace + case 33: // Page Up + case 37: // Arrow left + case 38: // Arrow up + op = -1; + break; + case 27: // Escape + case 13: // Enter + op = 0; + } + if (op !== null) {if (op != 2)hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + if (!hs.enableKeyListener) return true; + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + if (exp) { + if (op == 0) { + exp.close(); + } else if (op == 2) { + if (exp.slideshow) exp.slideshow.hitSpace(); + } else { + if (exp.slideshow) exp.slideshow.pause(); + hs.previousOrNext(exp.key, op); + } + return false; + } + } + return true; +}, + + +registerOverlay : function (overlay) { + hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); +}, + + +addSlideshow : function (options) { + var sg = options.slideshowGroup; + if (typeof sg == 'object') { + for (var i = 0; i < sg.length; i++) { + var o = {}; + for (var x in options) o[x] = options[x]; + o.slideshowGroup = sg[i]; + hs.push(hs.slideshows, o); + } + } else { + hs.push(hs.slideshows, options); + } +}, + +getWrapperKey : function (element, expOnly) { + var el, re = /^highslide-wrapper-([0-9]+)$/; + // 1. look in open expanders + el = element; + while (el.parentNode) { + if (el.hsKey !== undefined) return el.hsKey; + if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); + el = el.parentNode; + } + // 2. look in thumbnail + if (!expOnly) { + el = element; + while (el.parentNode) { + if (el.tagName && hs.isHsAnchor(el)) { + for (var key = 0; key < hs.expanders.length; key++) { + var exp = hs.expanders[key]; + if (exp && exp.a == el) return key; + } + } + el = el.parentNode; + } + } + return null; +}, + +getExpander : function (el, expOnly) { + if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null; + if (typeof el == 'number') return hs.expanders[el] || null; + if (typeof el == 'string') el = hs.$(el); + return hs.expanders[hs.getWrapperKey(el, expOnly)] || null; +}, + +isHsAnchor : function (a) { + return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/)); +}, + +reOrder : function () { + for (var i = 0; i < hs.expanders.length; i++) + if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost(); +}, + +mouseClickHandler : function(e) +{ + if (!e) e = window.event; + if (e.button > 1) return true; + if (!e.target) e.target = e.srcElement; + + var el = e.target; + while (el.parentNode + && !(/highslide-(image|move|html|resize)/.test(el.className))) + { + el = el.parentNode; + } + var exp = hs.getExpander(el); + if (exp && (exp.isClosing || !exp.isExpanded)) return true; + + if (exp && e.type == 'mousedown') { + if (e.target.form) return true; + var match = el.className.match(/highslide-(image|move|resize)/); + if (match) { + hs.dragArgs = { + exp: exp , + type: match[1], + left: exp.x.pos, + width: exp.x.size, + top: exp.y.pos, + height: exp.y.size, + clickX: e.clientX, + clickY: e.clientY + }; + + + hs.addEventListener(document, 'mousemove', hs.dragHandler); + if (e.preventDefault) e.preventDefault(); // FF + + if (/highslide-(image|html)-blur/.test(exp.content.className)) { + exp.focus(); + hs.hasFocused = true; + } + return false; + } + } else if (e.type == 'mouseup') { + + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + if (hs.dragArgs) { + if (hs.styleRestoreCursor && hs.dragArgs.type == 'image') + hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor; + var hasDragged = hs.dragArgs.hasDragged; + + if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) { + exp.close(); + } + else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) { + hs.dragArgs.exp.doShowHide('hidden'); + } + hs.hasFocused = false; + hs.dragArgs = null; + + } else if (/highslide-image-blur/.test(el.className)) { + el.style.cursor = hs.styleRestoreCursor; + } + } + return false; +}, + +dragHandler : function(e) +{ + if (!hs.dragArgs) return true; + if (!e) e = window.event; + var a = hs.dragArgs, exp = a.exp; + + a.dX = e.clientX - a.clickX; + a.dY = e.clientY - a.clickY; + + var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); + if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) + || (distance > (hs.dragSensitivity || 5)); + + if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { + + if (a.type == 'resize') exp.resize(a); + else { + exp.moveTo(a.left + a.dX, a.top + a.dY); + if (a.type == 'image') exp.content.style.cursor = 'move'; + } + } + return false; +}, + +wrapperMouseHandler : function (e) { + try { + if (!e) e = window.event; + var over = /mouseover/i.test(e.type); + if (!e.target) e.target = e.srcElement; // ie + if (!e.relatedTarget) e.relatedTarget = + over ? e.fromElement : e.toElement; // ie + var exp = hs.getExpander(e.target); + if (!exp.isExpanded) return; + if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp + || hs.dragArgs) return; + for (var i = 0; i < exp.overlays.length; i++) (function() { + var o = hs.$('hsId'+ exp.overlays[i]); + if (o && o.hideOnMouseOut) { + if (over) hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur); + } + })(); + } catch (e) {} +}, +addEventListener : function (el, event, func) { + if (el == document && event == 'ready') { + hs.push(hs.onReady, func); + } + try { + el.addEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + el.attachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = func; + } + } +}, + +removeEventListener : function (el, event, func) { + try { + el.removeEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = null; + } + } +}, + +preloadFullImage : function (i) { + if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') { + var img = document.createElement('img'); + img.onload = function() { + img = null; + hs.preloadFullImage(i + 1); + }; + img.src = hs.preloadTheseImages[i]; + } +}, +preloadImages : function (number) { + if (number && typeof number != 'object') hs.numberOfImagesToPreload = number; + + var arr = hs.getAnchors(); + for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) { + hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i])); + } + + // preload outlines + if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} ); + else + + hs.preloadFullImage(0); + + // preload cursor + if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor }); +}, + + +init : function () { + if (!hs.container) { + + hs.ieLt7 = hs.ie && hs.uaVersion < 7; + hs.ieLt9 = hs.ie && hs.uaVersion < 9; + + hs.getPageSize(); + for (var x in hs.langDefaults) { + if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x]; + else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined') + hs.lang[x] = hs.langDefaults[x]; + } + + hs.container = hs.createElement('div', { + className: 'highslide-container' + }, { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + zIndex: hs.zIndexCounter, + direction: 'ltr' + }, + document.body, + true + ); + hs.loading = hs.createElement('a', { + className: 'highslide-loading', + title: hs.lang.loadingTitle, + innerHTML: hs.lang.loadingText, + href: 'javascript:;' + }, { + position: 'absolute', + top: '-9999px', + opacity: hs.loadingOpacity, + zIndex: 1 + }, hs.container + ); + hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container); + hs.viewport = hs.createElement('div', { + className: 'highslide-viewport highslide-viewport-size' + }, { + visibility: (hs.safari && hs.uaVersion < 525) ? 'visible' : 'hidden' + }, hs.container, 1 + ); + + // http://www.robertpenner.com/easing/ + Math.linearTween = function (t, b, c, d) { + return c*t/d + b; + }; + Math.easeInQuad = function (t, b, c, d) { + return c*(t/=d)*t + b; + }; + Math.easeOutQuad = function (t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + }; + + hs.hideSelects = hs.ieLt7; + hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE' + || (hs.ieLt7 && hs.uaVersion < 5.5)); + } +}, +ready : function() { + if (hs.isReady) return; + hs.isReady = true; + for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i](); +}, + +updateAnchors : function() { + var el, els, all = [], images = [],groups = {}, re; + + for (var i = 0; i < hs.openerTagNames.length; i++) { + els = document.getElementsByTagName(hs.openerTagNames[i]); + for (var j = 0; j < els.length; j++) { + el = els[j]; + re = hs.isHsAnchor(el); + if (re) { + hs.push(all, el); + if (re[0] == 'hs.expand') hs.push(images, el); + var g = hs.getParam(el, 'slideshowGroup') || 'none'; + if (!groups[g]) groups[g] = []; + hs.push(groups[g], el); + } + } + } + hs.anchors = { all: all, groups: groups, images: images }; + return hs.anchors; + +}, + +getAnchors : function() { + return hs.anchors || hs.updateAnchors(); +}, + + +close : function(el) { + var exp = hs.getExpander(el); + if (exp) exp.close(); + return false; +} +}; // end hs object +hs.fx = function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if (!options.orig) options.orig = {}; +}; +hs.fx.prototype = { + update: function(){ + (hs.fx.step[this.prop] || hs.fx.step._default)(this); + + if (this.options.step) + this.options.step.call(this.elem, this.now, this); + + }, + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit;// || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + if ( t() && hs.timers.push(t) == 1 ) { + hs.timerId = setInterval(function(){ + var timers = hs.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval(hs.timerId); + } + }, 13); + } + }, + step: function(gotoEnd){ + var t = (new Date()).getTime(); + if ( gotoEnd || t >= this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if (this.options.complete) this.options.complete.call(this.elem); + } + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + this.pos = this.options.easing(n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + this.update(); + } + return true; + } + +}; + +hs.extend( hs.fx, { + step: { + + opacity: function(fx){ + hs.setStyles(fx.elem, { opacity: fx.now }); + }, + + _default: function(fx){ + try { + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; + } catch (e) {} + } + } +}); + +hs.Outline = function (outlineType, onLoad) { + this.onLoad = onLoad; + this.outlineType = outlineType; + var v = hs.uaVersion, tr; + + this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7; + if (!outlineType) { + if (onLoad) onLoad(); + return; + } + + hs.init(); + this.table = hs.createElement( + 'table', { + cellSpacing: 0 + }, { + visibility: 'hidden', + position: 'absolute', + borderCollapse: 'collapse', + width: 0 + }, + hs.container, + true + ); + var tbody = hs.createElement('tbody', null, null, this.table, 1); + + this.td = []; + for (var i = 0; i <= 8; i++) { + if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true); + this.td[i] = hs.createElement('td', null, null, tr, true); + var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' }; + hs.setStyles(this.td[i], style); + } + this.td[4].className = outlineType +' highslide-outline'; + + this.preloadGraphic(); +}; + +hs.Outline.prototype = { +preloadGraphic : function () { + var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png"; + + var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null; + this.graphic = hs.createElement('img', null, { position: 'absolute', + top: '-9999px' }, appendTo, true); // for onload trigger + + var pThis = this; + this.graphic.onload = function() { pThis.onGraphicLoad(); }; + + this.graphic.src = src; +}, + +onGraphicLoad : function () { + var o = this.offset = this.graphic.width / 4, + pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]], + dim = { height: (2*o) +'px', width: (2*o) +'px' }; + for (var i = 0; i <= 8; i++) { + if (pos[i]) { + if (this.hasAlphaImageLoader) { + var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px'; + var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true); + hs.createElement ('div', null, { + filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", + position: 'absolute', + width: w, + height: this.graphic.height +'px', + left: (pos[i][0]*o)+'px', + top: (pos[i][1]*o)+'px' + }, + div, + true); + } else { + hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'}); + } + + if (window.opera && (i == 3 || i ==5)) + hs.createElement('div', null, dim, this.td[i], true); + + hs.setStyles (this.td[i], dim); + } + } + this.graphic = null; + if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy(); + hs.pendingOutlines[this.outlineType] = this; + if (this.onLoad) this.onLoad(); +}, + +setPosition : function (pos, offset, vis, dur, easing) { + var exp = this.exp, + stl = exp.wrapper.style, + offset = offset || 0, + pos = pos || { + x: exp.x.pos + offset, + y: exp.y.pos + offset, + w: exp.x.get('wsize') - 2 * offset, + h: exp.y.get('wsize') - 2 * offset + }; + if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset) + ? 'visible' : 'hidden'; + hs.setStyles(this.table, { + left: (pos.x - this.offset) +'px', + top: (pos.y - this.offset) +'px', + width: (pos.w + 2 * this.offset) +'px' + }); + + pos.w -= 2 * this.offset; + pos.h -= 2 * this.offset; + hs.setStyles (this.td[4], { + width: pos.w >= 0 ? pos.w +'px' : 0, + height: pos.h >= 0 ? pos.h +'px' : 0 + }); + if (this.hasAlphaImageLoader) this.td[3].style.height + = this.td[5].style.height = this.td[4].style.height; + +}, + +destroy : function(hide) { + if (hide) this.table.style.visibility = 'hidden'; + else hs.discardElement(this.table); +} +}; + +hs.Dimension = function(exp, dim) { + this.exp = exp; + this.dim = dim; + this.ucwh = dim == 'x' ? 'Width' : 'Height'; + this.wh = this.ucwh.toLowerCase(); + this.uclt = dim == 'x' ? 'Left' : 'Top'; + this.lt = this.uclt.toLowerCase(); + this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; + this.rb = this.ucrb.toLowerCase(); + this.p1 = this.p2 = 0; +}; +hs.Dimension.prototype = { +get : function(key) { + switch (key) { + case 'loadingPos': + return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; + case 'loadingPosXfade': + return this.pos + this.cb+ this.p1 + (this.size - hs.loading['offset'+ this.ucwh]) / 2; + case 'wsize': + return this.size + 2 * this.cb + this.p1 + this.p2; + case 'fitsize': + return this.clientSize - this.marginMin - this.marginMax; + case 'maxsize': + return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; + case 'opos': + return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); + case 'osize': + return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); + case 'imgPad': + return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; + + } +}, +calcBorders: function() { + // correct for borders + this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; + + this.marginMax = hs['margin'+ this.ucrb]; +}, +calcThumb: function() { + this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : + this.exp.el['offset'+ this.ucwh]; + this.tpos = this.exp.tpos[this.dim]; + this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; + if (this.tpos == 0 || this.tpos == -1) { + this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt]; + }; +}, +calcExpanded: function() { + var exp = this.exp; + this.justify = 'auto'; + + // get alignment + if (exp.align == 'center') this.justify = 'center'; + else if (new RegExp(this.lt).test(exp.anchor)) this.justify = null; + else if (new RegExp(this.rb).test(exp.anchor)) this.justify = 'max'; + + + // size and position + this.pos = this.tpos - this.cb + this.tb; + + if (this.maxHeight && this.dim == 'x') + exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full); + + this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); + this.minSize = exp.allowSizeReduction ? + Math.min(exp['min'+ this.ucwh], this.full) :this.full; + if (exp.isImage && exp.useBox) { + this.size = exp[this.wh]; + this.imgSize = this.full; + } + if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth; + this.target = exp['target'+ this.dim.toUpperCase()]; + this.marginMin = hs['margin'+ this.uclt]; + this.scroll = hs.page['scroll'+ this.uclt]; + this.clientSize = hs.page[this.wh]; +}, +setSize: function(i) { + var exp = this.exp; + if (exp.isImage && (exp.useBox || hs.padToMinWidth)) { + this.imgSize = i; + this.size = Math.max(this.size, this.imgSize); + exp.content.style[this.lt] = this.get('imgPad')+'px'; + } else + this.size = i; + + exp.content.style[this.wh] = i +'px'; + exp.wrapper.style[this.wh] = this.get('wsize') +'px'; + if (exp.outline) exp.outline.setPosition(); + if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); + if (this.dim == 'x' && exp.slideshow && exp.isImage) { + if (i == this.full) exp.slideshow.disable('full-expand'); + else exp.slideshow.enable('full-expand'); + } +}, +setPos: function(i) { + this.pos = i; + this.exp.wrapper.style[this.lt] = i +'px'; + + if (this.exp.outline) this.exp.outline.setPosition(); + +} +}; + +hs.Expander = function(a, params, custom, contentType) { + if (document.readyState && hs.ie && !hs.isReady) { + hs.addEventListener(document, 'ready', function() { + new hs.Expander(a, params, custom, contentType); + }); + return; + } + this.a = a; + this.custom = custom; + this.contentType = contentType || 'image'; + this.isImage = !this.isHtml; + + hs.continuePreloading = false; + this.overlays = []; + this.last = hs.last; + hs.last = null; + hs.init(); + var key = this.key = hs.expanders.length; + // override inline parameters + for (var i = 0; i < hs.overrides.length; i++) { + var name = hs.overrides[i]; + this[name] = params && typeof params[name] != 'undefined' ? + params[name] : hs[name]; + } + if (!this.src) this.src = a.href; + + // get thumb + var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a; + el = this.thumb = el.getElementsByTagName('img')[0] || el; + this.thumbsUserSetId = el.id || a.id; + + // check if already open + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].a == a + && !(this.last && this.transitions[1] == 'crossfade')) { + hs.expanders[i].focus(); + return false; + } + } + + // cancel other + if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) { + hs.expanders[i].cancelLoading(); + } + } + hs.expanders[key] = this; + if (!hs.allowMultipleInstances && !hs.upcoming) { + if (hs.expanders[key-1]) hs.expanders[key-1].close(); + if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey]) + hs.expanders[hs.focusKey].close(); + } + + // initiate metrics + this.el = el; + this.tpos = this.pageOrigin || hs.getPosition(el); + hs.getPageSize(); + var x = this.x = new hs.Dimension(this, 'x'); + x.calcThumb(); + var y = this.y = new hs.Dimension(this, 'y'); + y.calcThumb(); + this.wrapper = hs.createElement( + 'div', { + id: 'highslide-wrapper-'+ this.key, + className: 'highslide-wrapper '+ this.wrapperClassName + }, { + visibility: 'hidden', + position: 'absolute', + zIndex: hs.zIndexCounter += 2 + }, null, true ); + + this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler; + if (this.contentType == 'image' && this.outlineWhileAnimating == 2) + this.outlineWhileAnimating = 0; + + // get the outline + if (!this.outlineType + || (this.last && this.isImage && this.transitions[1] == 'crossfade')) { + this[this.contentType +'Create'](); + + } else if (hs.pendingOutlines[this.outlineType]) { + this.connectOutline(); + this[this.contentType +'Create'](); + + } else { + this.showLoading(); + var exp = this; + new hs.Outline(this.outlineType, + function () { + exp.connectOutline(); + exp[exp.contentType +'Create'](); + } + ); + } + return true; +}; + +hs.Expander.prototype = { +error : function(e) { + if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message); + else window.location.href = this.src; +}, + +connectOutline : function() { + var outline = this.outline = hs.pendingOutlines[this.outlineType]; + outline.exp = this; + outline.table.style.zIndex = this.wrapper.style.zIndex - 1; + hs.pendingOutlines[this.outlineType] = null; +}, + +showLoading : function() { + if (this.onLoadStarted || this.loading) return; + + this.loading = hs.loading; + var exp = this; + this.loading.onclick = function() { + exp.cancelLoading(); + }; + var exp = this, + l = this.x.get('loadingPos') +'px', + t = this.y.get('loadingPos') +'px'; + if (!tgt && this.last && this.transitions[1] == 'crossfade') + var tgt = this.last; + if (tgt) { + l = tgt.x.get('loadingPosXfade') +'px'; + t = tgt.y.get('loadingPosXfade') +'px'; + this.loading.style.zIndex = hs.zIndexCounter++; + } + setTimeout(function () { + if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })} + , 100); +}, + +imageCreate : function() { + var exp = this; + + var img = document.createElement('img'); + this.content = img; + img.onload = function () { + if (hs.expanders[exp.key]) exp.contentLoaded(); + }; + if (hs.blockRightClick) img.oncontextmenu = function() { return false; }; + img.className = 'highslide-image'; + hs.setStyles(img, { + visibility: 'hidden', + display: 'block', + position: 'absolute', + maxWidth: '9999px', + zIndex: 3 + }); + img.title = hs.lang.restoreTitle; + if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img); + if (hs.ie && hs.flushImgSize) img.src = null; + img.src = this.src; + + this.showLoading(); +}, + +contentLoaded : function() { + try { + if (!this.content) return; + this.content.onload = null; + if (this.onLoadStarted) return; + else this.onLoadStarted = true; + + var x = this.x, y = this.y; + + if (this.loading) { + hs.setStyles(this.loading, { top: '-9999px' }); + this.loading = null; + } + x.full = this.content.width; + y.full = this.content.height; + + hs.setStyles(this.content, { + width: x.t +'px', + height: y.t +'px' + }); + this.wrapper.appendChild(this.content); + hs.container.appendChild(this.wrapper); + + x.calcBorders(); + y.calcBorders(); + + hs.setStyles (this.wrapper, { + left: (x.tpos + x.tb - x.cb) +'px', + top: (y.tpos + x.tb - y.cb) +'px' + }); + + + this.initSlideshow(); + this.getOverlays(); + + var ratio = x.full / y.full; + x.calcExpanded(); + this.justify(x); + + y.calcExpanded(); + this.justify(y); + if (this.overlayBox) this.sizeOverlayBox(0, 1); + + + if (this.allowSizeReduction) { + this.correctRatio(ratio); + var ss = this.slideshow; + if (ss && this.last && ss.controls && ss.fixedControls) { + var pos = ss.overlayOptions.position || '', p; + for (var dim in hs.oPos) for (var i = 0; i < 5; i++) { + p = this[dim]; + if (pos.match(hs.oPos[dim][i])) { + p.pos = this.last[dim].pos + + (this.last[dim].p1 - p.p1) + + (this.last[dim].size - p.size) * [0, 0, .5, 1, 1][i]; + if (ss.fixedControls == 'fit') { + if (p.pos + p.size + p.p1 + p.p2 > p.scroll + p.clientSize - p.marginMax) + p.pos = p.scroll + p.clientSize - p.size - p.marginMin - p.marginMax - p.p1 - p.p2; + if (p.pos < p.scroll + p.marginMin) p.pos = p.scroll + p.marginMin; + } + } + } + } + if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) { + this.createFullExpand(); + if (this.overlays.length == 1) this.sizeOverlayBox(); + } + } + this.show(); + + } catch (e) { + this.error(e); + } +}, + +justify : function (p, moveOnly) { + var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; + + if (tgt && tgt.match(/ /)) { + tgtArr = tgt.split(' '); + tgt = tgtArr[0]; + } + if (tgt && hs.$(tgt)) { + p.pos = hs.getPosition(hs.$(tgt))[dim]; + if (tgtArr && tgtArr[1] && tgtArr[1].match(/^[-]?[0-9]+px$/)) + p.pos += parseInt(tgtArr[1]); + if (p.size < p.minSize) p.size = p.minSize; + + } else if (p.justify == 'auto' || p.justify == 'center') { + + var hasMovedMin = false; + + var allowReduce = p.exp.allowSizeReduction; + if (p.justify == 'center') + p.pos = Math.round(p.scroll + (p.clientSize + p.marginMin - p.marginMax - p.get('wsize')) / 2); + else + p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); + if (p.pos < p.scroll + p.marginMin) { + p.pos = p.scroll + p.marginMin; + hasMovedMin = true; + } + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) { + if (!moveOnly && hasMovedMin && allowReduce) { + p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize')); + } else if (p.get('wsize') < p.get('fitsize')) { + p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize'); + } else { // image larger than viewport + p.pos = p.scroll + p.marginMin; + if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); + } + } + + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + + + } else if (p.justify == 'max') { + p.pos = Math.floor(p.pos - p.size + p.t); + } + + + if (p.pos < p.marginMin) { + var tmpMin = p.pos; + p.pos = p.marginMin; + + if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin); + + } +}, + +correctRatio : function(ratio) { + var x = this.x, + y = this.y, + changed = false, + xSize = Math.min(x.full, x.size), + ySize = Math.min(y.full, y.size), + useBox = (this.useBox || hs.padToMinWidth); + + if (xSize / ySize > ratio) { // width greater + xSize = ySize * ratio; + if (xSize < x.minSize) { // below minWidth + xSize = x.minSize; + ySize = xSize / ratio; + } + changed = true; + + } else if (xSize / ySize < ratio) { // height greater + ySize = xSize / ratio; + changed = true; + } + + if (hs.padToMinWidth && x.full < x.minSize) { + x.imgSize = x.full; + y.size = y.imgSize = y.full; + } else if (this.useBox) { + x.imgSize = xSize; + y.imgSize = ySize; + } else { + x.size = xSize; + y.size = ySize; + } + changed = this.fitOverlayBox(this.useBox ? null : ratio, changed); + if (useBox && y.size < y.imgSize) { + y.imgSize = y.size; + x.imgSize = y.size * ratio; + } + if (changed || useBox) { + x.pos = x.tpos - x.cb + x.tb; + x.minSize = x.size; + this.justify(x, true); + + y.pos = y.tpos - y.cb + y.tb; + y.minSize = y.size; + this.justify(y, true); + if (this.overlayBox) this.sizeOverlayBox(); + } + + +}, +fitOverlayBox : function(ratio, changed) { + var x = this.x, y = this.y; + if (this.overlayBox) { + while (y.size > this.minHeight && x.size > this.minWidth + && y.get('wsize') > y.get('fitsize')) { + y.size -= 10; + if (ratio) x.size = y.size * ratio; + this.sizeOverlayBox(0, 1); + changed = true; + } + } + return changed; +}, + +show : function () { + var x = this.x, y = this.y; + this.doShowHide('hidden'); + if (this.slideshow && this.slideshow.thumbstrip) this.slideshow.thumbstrip.selectThumb(); + + // Apply size change + this.changeSize( + 1, { + wrapper: { + width : x.get('wsize'), + height : y.get('wsize'), + left: x.pos, + top: y.pos + }, + content: { + left: x.p1 + x.get('imgPad'), + top: y.p1 + y.get('imgPad'), + width:x.imgSize ||x.size, + height:y.imgSize ||y.size + } + }, + hs.expandDuration + ); +}, + +changeSize : function(up, to, dur) { + // transition + var trans = this.transitions, + other = up ? (this.last ? this.last.a : null) : hs.upcoming, + t = (trans[1] && other + && hs.getParam(other, 'transitions')[1] == trans[1]) ? + trans[1] : trans[0]; + + if (this[t] && t != 'expand') { + this[t](up, to); + return; + } + + if (this.outline && !this.outlineWhileAnimating) { + if (up) this.outline.setPosition(); + else this.outline.destroy(); + } + + + if (!up) this.destroyOverlays(); + + var exp = this, + x = exp.x, + y = exp.y, + easing = this.easing; + if (!up) easing = this.easingClose || easing; + var after = up ? + function() { + + if (exp.outline) exp.outline.table.style.visibility = "visible"; + setTimeout(function() { + exp.afterExpand(); + }, 50); + } : + function() { + exp.afterClose(); + }; + if (up) hs.setStyles( this.wrapper, { + width: x.t +'px', + height: y.t +'px' + }); + if (this.fadeInOut) { + hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 }); + hs.extend(to.wrapper, { opacity: up }); + } + hs.animate( this.wrapper, to.wrapper, { + duration: dur, + easing: easing, + step: function(val, args) { + if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { + var fac = up ? args.pos : 1 - args.pos; + var pos = { + w: x.t + (x.get('wsize') - x.t) * fac, + h: y.t + (y.get('wsize') - y.t) * fac, + x: x.tpos + (x.pos - x.tpos) * fac, + y: y.tpos + (y.pos - y.tpos) * fac + }; + exp.outline.setPosition(pos, 0, 1); + } + } + }); + hs.animate( this.content, to.content, dur, easing, after); + if (up) { + this.wrapper.style.visibility = 'visible'; + this.content.style.visibility = 'visible'; + this.a.className += ' highslide-active-anchor'; + } +}, + + + +fade : function(up, to) { + this.outlineWhileAnimating = false; + var exp = this, t = up ? hs.expandDuration : 0; + + if (up) { + hs.animate(this.wrapper, to.wrapper, 0); + hs.setStyles(this.wrapper, { opacity: 0, visibility: 'visible' }); + hs.animate(this.content, to.content, 0); + this.content.style.visibility = 'visible'; + + hs.animate(this.wrapper, { opacity: 1 }, t, null, + function() { exp.afterExpand(); }); + } + + if (this.outline) { + this.outline.table.style.zIndex = this.wrapper.style.zIndex; + var dir = up || -1, + offset = this.outline.offset, + startOff = up ? 3 : offset, + endOff = up? offset : 3; + for (var i = startOff; dir * i <= dir * endOff; i += dir, t += 25) { + (function() { + var o = up ? endOff - i : startOff - i; + setTimeout(function() { + exp.outline.setPosition(0, o, 1); + }, t); + })(); + } + } + + + if (up) {}//setTimeout(function() { exp.afterExpand(); }, t+50); + else { + setTimeout( function() { + if (exp.outline) exp.outline.destroy(exp.preserveContent); + + exp.destroyOverlays(); + + hs.animate( exp.wrapper, { opacity: 0 }, hs.restoreDuration, null, function(){ + exp.afterClose(); + }); + }, t); + } +}, +crossfade : function (up, to, from) { + if (!up) return; + var exp = this, + last = this.last, + x = this.x, + y = this.y, + lastX = last.x, + lastY = last.y, + wrapper = this.wrapper, + content = this.content, + overlayBox = this.overlayBox; + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + hs.setStyles(content, { + width: (x.imgSize || x.size) +'px', + height: (y.imgSize || y.size) +'px' + }); + if (overlayBox) overlayBox.style.overflow = 'visible'; + this.outline = last.outline; + if (this.outline) this.outline.exp = exp; + last.outline = null; + var fadeBox = hs.createElement('div', { + className: 'highslide-'+ this.contentType + }, { + position: 'absolute', + zIndex: 4, + overflow: 'hidden', + display: 'none' + } + ); + var names = { oldImg: last, newImg: this }; + for (var n in names) { + this[n] = names[n].content.cloneNode(1); + hs.setStyles(this[n], { + position: 'absolute', + border: 0, + visibility: 'visible' + }); + fadeBox.appendChild(this[n]); + } + wrapper.appendChild(fadeBox); + if (overlayBox) { + overlayBox.className = ''; + wrapper.appendChild(overlayBox); + } + fadeBox.style.display = ''; + last.content.style.display = 'none'; + + + if (hs.safari && hs.uaVersion < 525) { + this.wrapper.style.visibility = 'visible'; + } + hs.animate(wrapper, { + width: x.size + }, { + duration: hs.transitionDuration, + step: function(val, args) { + var pos = args.pos, + invPos = 1 - pos; + var prop, + size = {}, + props = ['pos', 'size', 'p1', 'p2']; + for (var n in props) { + prop = props[n]; + size['x'+ prop] = Math.round(invPos * lastX[prop] + pos * x[prop]); + size['y'+ prop] = Math.round(invPos * lastY[prop] + pos * y[prop]); + size.ximgSize = Math.round( + invPos * (lastX.imgSize || lastX.size) + pos * (x.imgSize || x.size)); + size.ximgPad = Math.round(invPos * lastX.get('imgPad') + pos * x.get('imgPad')); + size.yimgSize = Math.round( + invPos * (lastY.imgSize || lastY.size) + pos * (y.imgSize || y.size)); + size.yimgPad = Math.round(invPos * lastY.get('imgPad') + pos * y.get('imgPad')); + } + if (exp.outline) exp.outline.setPosition({ + x: size.xpos, + y: size.ypos, + w: size.xsize + size.xp1 + size.xp2 + 2 * x.cb, + h: size.ysize + size.yp1 + size.yp2 + 2 * y.cb + }); + last.wrapper.style.clip = 'rect(' + + (size.ypos - lastY.pos)+'px, ' + + (size.xsize + size.xp1 + size.xp2 + size.xpos + 2 * lastX.cb - lastX.pos) +'px, ' + + (size.ysize + size.yp1 + size.yp2 + size.ypos + 2 * lastY.cb - lastY.pos) +'px, ' + + (size.xpos - lastX.pos)+'px)'; + + hs.setStyles(content, { + top: (size.yp1 + y.get('imgPad')) +'px', + left: (size.xp1 + x.get('imgPad')) +'px', + marginTop: (y.pos - size.ypos) +'px', + marginLeft: (x.pos - size.xpos) +'px' + }); + hs.setStyles(wrapper, { + top: size.ypos +'px', + left: size.xpos +'px', + width: (size.xp1 + size.xp2 + size.xsize + 2 * x.cb)+ 'px', + height: (size.yp1 + size.yp2 + size.ysize + 2 * y.cb) + 'px' + }); + hs.setStyles(fadeBox, { + width: (size.ximgSize || size.xsize) + 'px', + height: (size.yimgSize || size.ysize) +'px', + left: (size.xp1 + size.ximgPad) +'px', + top: (size.yp1 + size.yimgPad) +'px', + visibility: 'visible' + }); + + hs.setStyles(exp.oldImg, { + top: (lastY.pos - size.ypos + lastY.p1 - size.yp1 + lastY.get('imgPad') - size.yimgPad)+'px', + left: (lastX.pos - size.xpos + lastX.p1 - size.xp1 + lastX.get('imgPad') - size.ximgPad)+'px' + }); + + hs.setStyles(exp.newImg, { + opacity: pos, + top: (y.pos - size.ypos + y.p1 - size.yp1 + y.get('imgPad') - size.yimgPad) +'px', + left: (x.pos - size.xpos + x.p1 - size.xp1 + x.get('imgPad') - size.ximgPad) +'px' + }); + if (overlayBox) hs.setStyles(overlayBox, { + width: size.xsize + 'px', + height: size.ysize +'px', + left: (size.xp1 + x.cb) +'px', + top: (size.yp1 + y.cb) +'px' + }); + }, + complete: function () { + wrapper.style.visibility = content.style.visibility = 'visible'; + content.style.display = 'block'; + hs.discardElement(fadeBox); + exp.afterExpand(); + last.afterClose(); + exp.last = null; + } + + }); +}, +reuseOverlay : function(o, el) { + if (!this.last) return false; + for (var i = 0; i < this.last.overlays.length; i++) { + var oDiv = hs.$('hsId'+ this.last.overlays[i]); + if (oDiv && oDiv.hsId == o.hsId) { + this.genOverlayBox(); + oDiv.reuse = this.key; + hs.push(this.overlays, this.last.overlays[i]); + return true; + } + } + return false; +}, + + +afterExpand : function() { + this.isExpanded = true; + this.focus(); + if (this.dimmingOpacity) hs.dim(this); + if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; + this.prepareNextOutline(); + var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; + this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize') + && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize'); + if (this.overlayBox) this.showOverlays(); + +}, + + +prepareNextOutline : function() { + var key = this.key; + var outlineType = this.outlineType; + new hs.Outline(outlineType, + function () { try { hs.expanders[key].preloadNext(); } catch (e) {} }); +}, + + +preloadNext : function() { + var next = this.getAdjacentAnchor(1); + if (next && next.onclick.toString().match(/hs\.expand/)) + var img = hs.createElement('img', { src: hs.getSrc(next) }); +}, + + +getAdjacentAnchor : function(op) { + var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none']; + if (as && !as[current + op] && this.slideshow && this.slideshow.repeat) { + if (op == 1) return as[0]; + else if (op == -1) return as[as.length-1]; + } + return (as && as[current + op]) || null; +}, + +getAnchorIndex : function() { + var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; + if (arr) for (var i = 0; i < arr.length; i++) { + if (arr[i] == this.a) return i; + } + return null; +}, + + +getNumber : function() { + if (this[this.numberPosition]) { + var arr = hs.anchors.groups[this.slideshowGroup || 'none']; + if (arr) { + var s = hs.lang.number.replace('%1', this.getAnchorIndex() + 1).replace('%2', arr.length); + this[this.numberPosition].innerHTML = + '
'+ s +'
'+ this[this.numberPosition].innerHTML; + } + } +}, +initSlideshow : function() { + if (!this.last) { + for (var i = 0; i < hs.slideshows.length; i++) { + var ss = hs.slideshows[i], sg = ss.slideshowGroup; + if (typeof sg == 'undefined' || sg === null || sg === this.slideshowGroup) + this.slideshow = new hs.Slideshow(this.key, ss); + } + } else { + this.slideshow = this.last.slideshow; + } + var ss = this.slideshow; + if (!ss) return; + var key = ss.expKey = this.key; + + ss.checkFirstAndLast(); + ss.disable('full-expand'); + if (ss.controls) { + this.createOverlay(hs.extend(ss.overlayOptions || {}, { + overlayId: ss.controls, + hsId: 'controls', + zIndex: 5 + })); + } + if (ss.thumbstrip) ss.thumbstrip.add(this); + if (!this.last && this.autoplay) ss.play(true); + if (ss.autoplay) { + ss.autoplay = setTimeout(function() { + hs.next(key); + }, (ss.interval || 500)); + } +}, + +cancelLoading : function() { + hs.discardElement (this.wrapper); + hs.expanders[this.key] = null; + if (hs.upcoming == this.a) hs.upcoming = null; + hs.undim(this.key); + if (this.loading) hs.loading.style.left = '-9999px'; +}, + +writeCredits : function () { + if (this.credits) return; + this.credits = hs.createElement('a', { + href: hs.creditsHref, + target: hs.creditsTarget, + className: 'highslide-credits', + innerHTML: hs.lang.creditsText, + title: hs.lang.creditsTitle + }); + this.createOverlay({ + overlayId: this.credits, + position: this.creditsPosition || 'top left', + hsId: 'credits' + }); +}, + +getInline : function(types, addOverlay) { + for (var i = 0; i < types.length; i++) { + var type = types[i], s = null; + if (!this[type +'Id'] && this.thumbsUserSetId) + this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId; + if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']); + if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try { + s = eval(this[type +'Eval']); + } catch (e) {} + if (!this[type] && this[type +'Text']) { + s = this[type +'Text']; + } + if (!this[type] && !s) { + this[type] = hs.getNode(this.a['_'+ type + 'Id']); + if (!this[type]) { + var next = this.a.nextSibling; + while (next && !hs.isHsAnchor(next)) { + if ((new RegExp('highslide-'+ type)).test(next.className || null)) { + if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++; + this[type] = hs.getNode(next.id); + break; + } + next = next.nextSibling; + } + } + } + if (!this[type] && !s && this.numberPosition == type) s = '\n'; + + if (!this[type] && s) this[type] = hs.createElement('div', + { className: 'highslide-'+ type, innerHTML: s } ); + + if (addOverlay && this[type]) { + var o = { position: (type == 'heading') ? 'above' : 'below' }; + for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x]; + o.overlayId = this[type]; + this.createOverlay(o); + } + } +}, + + +// on end move and resize +doShowHide : function(visibility) { + if (hs.hideSelects) this.showHideElements('SELECT', visibility); + if (hs.hideIframes) this.showHideElements('IFRAME', visibility); + if (hs.geckoMac) this.showHideElements('*', visibility); +}, +showHideElements : function (tagName, visibility) { + var els = document.getElementsByTagName(tagName); + var prop = tagName == '*' ? 'overflow' : 'visibility'; + for (var i = 0; i < els.length; i++) { + if (prop == 'visibility' || (document.defaultView.getComputedStyle( + els[i], "").getPropertyValue('overflow') == 'auto' + || els[i].getAttribute('hidden-by') != null)) { + var hiddenBy = els[i].getAttribute('hidden-by'); + if (visibility == 'visible' && hiddenBy) { + hiddenBy = hiddenBy.replace('['+ this.key +']', ''); + els[i].setAttribute('hidden-by', hiddenBy); + if (!hiddenBy) els[i].style[prop] = els[i].origProp; + } else if (visibility == 'hidden') { // hide if behind + var elPos = hs.getPosition(els[i]); + elPos.w = els[i].offsetWidth; + elPos.h = els[i].offsetHeight; + if (!this.dimmingOpacity) { // hide all if dimming + + var clearsX = (elPos.x + elPos.w < this.x.get('opos') + || elPos.x > this.x.get('opos') + this.x.get('osize')); + var clearsY = (elPos.y + elPos.h < this.y.get('opos') + || elPos.y > this.y.get('opos') + this.y.get('osize')); + } + var wrapperKey = hs.getWrapperKey(els[i]); + if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image + if (!hiddenBy) { + els[i].setAttribute('hidden-by', '['+ this.key +']'); + els[i].origProp = els[i].style[prop]; + els[i].style[prop] = 'hidden'; + + } else if (hiddenBy.indexOf('['+ this.key +']') == -1) { + els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']'); + } + } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) + && wrapperKey != this.key) { // on move + els[i].setAttribute('hidden-by', ''); + els[i].style[prop] = els[i].origProp || ''; + } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) { + els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', '')); + } + + } + } + } +}, + +focus : function() { + this.wrapper.style.zIndex = hs.zIndexCounter += 2; + // blur others + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && i == hs.focusKey) { + var blurExp = hs.expanders[i]; + blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur'; + blurExp.content.style.cursor = hs.ieLt7 ? 'hand' : 'pointer'; + blurExp.content.title = hs.lang.focusTitle; + } + } + + // focus this + if (this.outline) this.outline.table.style.zIndex + = this.wrapper.style.zIndex - 1; + this.content.className = 'highslide-'+ this.contentType; + this.content.title = hs.lang.restoreTitle; + + if (hs.restoreCursor) { + hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer'; + if (hs.ieLt7 && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand'; + this.content.style.cursor = hs.styleRestoreCursor; + } + + hs.focusKey = this.key; + hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); +}, +moveTo: function(x, y) { + this.x.setPos(x); + this.y.setPos(y); +}, +resize : function (e) { + var w, h, r = e.width / e.height; + w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full)); + if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full; + h = w / r; + if (h < Math.min(this.minHeight, this.y.full)) { + h = Math.min(this.minHeight, this.y.full); + if (this.isImage) w = h * r; + } + this.resizeTo(w, h); +}, +resizeTo: function(w, h) { + this.y.setSize(h); + this.x.setSize(w); + this.wrapper.style.height = this.y.get('wsize') +'px'; +}, + +close : function() { + if (this.isClosing || !this.isExpanded) return; + if (this.transitions[1] == 'crossfade' && hs.upcoming) { + hs.getExpander(hs.upcoming).cancelLoading(); + hs.upcoming = null; + } + this.isClosing = true; + if (this.slideshow && !hs.upcoming) this.slideshow.pause(); + + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + + try { + this.content.style.cursor = 'default'; + this.changeSize( + 0, { + wrapper: { + width : this.x.t, + height : this.y.t, + left: this.x.tpos - this.x.cb + this.x.tb, + top: this.y.tpos - this.y.cb + this.y.tb + }, + content: { + left: 0, + top: 0, + width: this.x.t, + height: this.y.t + } + }, hs.restoreDuration + ); + } catch (e) { this.afterClose(); } +}, + +createOverlay : function (o) { + var el = o.overlayId, + relToVP = (o.relativeTo == 'viewport' && !/panel$/.test(o.position)); + if (typeof el == 'string') el = hs.getNode(el); + if (o.html) el = hs.createElement('div', { innerHTML: o.html }); + if (!el || typeof el == 'string') return; + el.style.display = 'block'; + o.hsId = o.hsId || o.overlayId; + if (this.transitions[1] == 'crossfade' && this.reuseOverlay(o, el)) return; + this.genOverlayBox(); + var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto'; + if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px'; + var overlay = hs.createElement( + 'div', { + id: 'hsId'+ hs.idCounter++, + hsId: o.hsId + }, { + position: 'absolute', + visibility: 'hidden', + width: width, + direction: hs.lang.cssDirection || '', + opacity: 0 + }, + relToVP ? hs.viewport :this.overlayBox, + true + ); + if (relToVP) overlay.hsKey = this.key; + + overlay.appendChild(el); + hs.extend(overlay, { + opacity: 1, + offsetX: 0, + offsetY: 0, + dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250 + }); + hs.extend(overlay, o); + + + if (this.gotOverlays) { + this.positionOverlay(overlay); + if (!overlay.hideOnMouseOut || this.mouseIsOver) + hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur); + } + hs.push(this.overlays, hs.idCounter - 1); +}, +positionOverlay : function(overlay) { + var p = overlay.position || 'middle center', + relToVP = (overlay.relativeTo == 'viewport'), + offX = overlay.offsetX, + offY = overlay.offsetY; + if (relToVP) { + hs.viewport.style.display = 'block'; + overlay.hsKey = this.key; + if (overlay.offsetWidth > overlay.parentNode.offsetWidth) + overlay.style.width = '100%'; + } else + if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay); + if (/left$/.test(p)) overlay.style.left = offX +'px'; + + if (/center$/.test(p)) hs.setStyles (overlay, { + left: '50%', + marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px' + }); + + if (/right$/.test(p)) overlay.style.right = - offX +'px'; + + if (/^leftpanel$/.test(p)) { + hs.setStyles(overlay, { + right: '100%', + marginRight: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p1 = overlay.offsetWidth; + + } else if (/^rightpanel$/.test(p)) { + hs.setStyles(overlay, { + left: '100%', + marginLeft: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p2 = overlay.offsetWidth; + } + var parOff = overlay.parentNode.offsetHeight; + overlay.style.height = 'auto'; + if (relToVP && overlay.offsetHeight > parOff) + overlay.style.height = hs.ieLt7 ? parOff +'px' : '100%'; + + if (/^top/.test(p)) overlay.style.top = offY +'px'; + if (/^middle/.test(p)) hs.setStyles (overlay, { + top: '50%', + marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px' + }); + if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px'; + if (/^above$/.test(p)) { + hs.setStyles(overlay, { + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + bottom: '100%', + marginBottom: this.y.cb +'px', + width: 'auto' + }); + this.y.p1 = overlay.offsetHeight; + + } else if (/^below$/.test(p)) { + hs.setStyles(overlay, { + position: 'relative', + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + top: '100%', + marginTop: this.y.cb +'px', + width: 'auto' + }); + this.y.p2 = overlay.offsetHeight; + overlay.style.position = 'absolute'; + } +}, + +getOverlays : function() { + this.getInline(['heading', 'caption'], true); + this.getNumber(); + if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move'; + if (hs.showCredits) this.writeCredits(); + for (var i = 0; i < hs.overlays.length; i++) { + var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup; + if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId) + || (sg && sg === this.slideshowGroup)) { + this.createOverlay(o); + } + } + var os = []; + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (/panel$/.test(o.position)) this.positionOverlay(o); + else hs.push(os, o); + } + for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]); + this.gotOverlays = true; +}, +genOverlayBox : function() { + if (!this.overlayBox) this.overlayBox = hs.createElement ( + 'div', { + className: this.wrapperClassName + }, { + position : 'absolute', + width: (this.x.size || (this.useBox ? this.width : null) + || this.x.full) +'px', + height: (this.y.size || this.y.full) +'px', + visibility : 'hidden', + overflow : 'hidden', + zIndex : hs.ie ? 4 : 'auto' + }, + hs.container, + true + ); +}, +sizeOverlayBox : function(doWrapper, doPanels) { + var overlayBox = this.overlayBox, + x = this.x, + y = this.y; + hs.setStyles( overlayBox, { + width: x.size +'px', + height: y.size +'px' + }); + if (doWrapper || doPanels) { + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat'); + if (o && /^(above|below)$/.test(o.position)) { + if (ie6) { + o.style.width = (overlayBox.offsetWidth + 2 * x.cb + + x.p1 + x.p2) +'px'; + } + y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight; + } + if (o && ie6 && /^(left|right)panel$/.test(o.position)) { + o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px'; + } + } + } + if (doWrapper) { + hs.setStyles(this.content, { + top: y.p1 +'px' + }); + hs.setStyles(overlayBox, { + top: (y.p1 + y.cb) +'px' + }); + } +}, + +showOverlays : function() { + var b = this.overlayBox; + b.className = ''; + hs.setStyles(b, { + top: (this.y.p1 + this.y.cb) +'px', + left: (this.x.p1 + this.x.cb) +'px', + overflow : 'visible' + }); + if (hs.safari) b.style.visibility = 'visible'; + this.wrapper.appendChild (b); + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + o.style.zIndex = o.zIndex || 4; + if (!o.hideOnMouseOut || this.mouseIsOver) { + o.style.visibility = 'visible'; + hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: o.opacity }, o.dur); + } + } +}, + +destroyOverlays : function() { + if (!this.overlays.length) return; + if (this.slideshow) { + var c = this.slideshow.controls; + if (c && hs.getExpander(c) == this) c.parentNode.removeChild(c); + } + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (o && o.parentNode == hs.viewport && hs.getExpander(o) == this) hs.discardElement(o); + } + hs.discardElement(this.overlayBox); +}, + + + +createFullExpand : function () { + if (this.slideshow && this.slideshow.controls) { + this.slideshow.enable('full-expand'); + return; + } + this.fullExpandLabel = hs.createElement( + 'a', { + href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();', + title: hs.lang.fullExpandTitle, + className: 'highslide-full-expand' + } + ); + + this.createOverlay({ + overlayId: this.fullExpandLabel, + position: hs.fullExpandPosition, + hideOnMouseOut: true, + opacity: hs.fullExpandOpacity + }); +}, + +doFullExpand : function () { + try { + if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel); + + this.focus(); + var xSize = this.x.size, + ySize = this.y.size; + this.resizeTo(this.x.full, this.y.full); + + var xpos = this.x.pos - (this.x.size - xSize) / 2; + if (xpos < hs.marginLeft) xpos = hs.marginLeft; + + var ypos = this.y.pos - (this.y.size - ySize) / 2; + if (ypos < hs.marginTop) ypos = hs.marginTop; + + this.moveTo(xpos, ypos); + this.doShowHide('hidden'); + + } catch (e) { + this.error(e); + } +}, + + +afterClose : function () { + this.a.className = this.a.className.replace('highslide-active-anchor', ''); + + this.doShowHide('visible'); + if (this.outline && this.outlineWhileAnimating) this.outline.destroy(); + + hs.discardElement(this.wrapper); + this.destroyOverlays(); + if (!hs.viewport.childNodes.length) hs.viewport.style.display = 'none'; + + if (this.dimmingOpacity) hs.undim(this.key); + hs.expanders[this.key] = null; + hs.reOrder(); +} + +}; + + +hs.Slideshow = function (expKey, options) { + if (hs.dynamicallyUpdateAnchors !== false) hs.updateAnchors(); + this.expKey = expKey; + for (var x in options) this[x] = options[x]; + if (this.useControls) this.getControls(); + if (this.thumbstrip) this.thumbstrip = hs.Thumbstrip(this); +}; +hs.Slideshow.prototype = { +getControls: function() { + this.controls = hs.createElement('div', { innerHTML: hs.replaceLang(hs.skin.controls) }, + null, hs.container); + + var buttons = ['play', 'pause', 'previous', 'next', 'move', 'full-expand', 'close']; + this.btn = {}; + var pThis = this; + for (var i = 0; i < buttons.length; i++) { + this.btn[buttons[i]] = hs.getElementByClass(this.controls, 'li', 'highslide-'+ buttons[i]); + this.enable(buttons[i]); + } + this.btn.pause.style.display = 'none'; + //this.disable('full-expand'); +}, +checkFirstAndLast: function() { + if (this.repeat || !this.controls) return; + var exp = hs.expanders[this.expKey], + cur = exp.getAnchorIndex(), + re = /disabled$/; + if (cur == 0) + this.disable('previous'); + else if (re.test(this.btn.previous.getElementsByTagName('a')[0].className)) + this.enable('previous'); + if (cur + 1 == hs.anchors.groups[exp.slideshowGroup || 'none'].length) { + this.disable('next'); + this.disable('play'); + } else if (re.test(this.btn.next.getElementsByTagName('a')[0].className)) { + this.enable('next'); + this.enable('play'); + } +}, +enable: function(btn) { + if (!this.btn) return; + var sls = this, a = this.btn[btn].getElementsByTagName('a')[0], re = /disabled$/; + a.onclick = function() { + sls[btn](); + return false; + }; + if (re.test(a.className)) a.className = a.className.replace(re, ''); +}, +disable: function(btn) { + if (!this.btn) return; + var a = this.btn[btn].getElementsByTagName('a')[0]; + a.onclick = function() { return false; }; + if (!/disabled$/.test(a.className)) a.className += ' disabled'; +}, +hitSpace: function() { + if (this.autoplay) this.pause(); + else this.play(); +}, +play: function(wait) { + if (this.btn) { + this.btn.play.style.display = 'none'; + this.btn.pause.style.display = ''; + } + + this.autoplay = true; + if (!wait) hs.next(this.expKey); +}, +pause: function() { + if (this.btn) { + this.btn.pause.style.display = 'none'; + this.btn.play.style.display = ''; + } + + clearTimeout(this.autoplay); + this.autoplay = null; +}, +previous: function() { + this.pause(); + hs.previous(this.btn.previous); +}, +next: function() { + this.pause(); + hs.next(this.btn.next); +}, +move: function() {}, +'full-expand': function() { + hs.getExpander().doFullExpand(); +}, +close: function() { + hs.close(this.btn.close); +} +}; +hs.Thumbstrip = function(slideshow) { + function add (exp) { + hs.extend(options || {}, { + overlayId: dom, + hsId: 'thumbstrip', + className: 'highslide-thumbstrip-'+ mode +'-overlay ' + (options.className || '') + }); + if (hs.ieLt7) options.fade = 0; + exp.createOverlay(options); + hs.setStyles(dom.parentNode, { overflow: 'hidden' }); + }; + + function scroll (delta) { + selectThumb(undefined, Math.round(delta * dom[isX ? 'offsetWidth' : 'offsetHeight'] * 0.7)); + }; + + function selectThumb (i, scrollBy) { + if (i === undefined) for (var j = 0; j < group.length; j++) { + if (group[j] == hs.expanders[slideshow.expKey].a) { + i = j; + break; + } + } + if (i === undefined) return; + var as = dom.getElementsByTagName('a'), + active = as[i], + cell = active.parentNode, + left = isX ? 'Left' : 'Top', + right = isX ? 'Right' : 'Bottom', + width = isX ? 'Width' : 'Height', + offsetLeft = 'offset' + left, + offsetWidth = 'offset' + width, + overlayWidth = div.parentNode.parentNode[offsetWidth], + minTblPos = overlayWidth - table[offsetWidth], + curTblPos = parseInt(table.style[isX ? 'left' : 'top']) || 0, + tblPos = curTblPos, + mgnRight = 20; + if (scrollBy !== undefined) { + tblPos = curTblPos - scrollBy; + + if (minTblPos > 0) minTblPos = 0; + if (tblPos > 0) tblPos = 0; + if (tblPos < minTblPos) tblPos = minTblPos; + + + } else { + for (var j = 0; j < as.length; j++) as[j].className = ''; + active.className = 'highslide-active-anchor'; + var activeLeft = i > 0 ? as[i - 1].parentNode[offsetLeft] : cell[offsetLeft], + activeRight = cell[offsetLeft] + cell[offsetWidth] + + (as[i + 1] ? as[i + 1].parentNode[offsetWidth] : 0); + if (activeRight > overlayWidth - curTblPos) tblPos = overlayWidth - activeRight; + else if (activeLeft < -curTblPos) tblPos = -activeLeft; + } + var markerPos = cell[offsetLeft] + (cell[offsetWidth] - marker[offsetWidth]) / 2 + tblPos; + hs.animate(table, isX ? { left: tblPos } : { top: tblPos }, null, 'easeOutQuad'); + hs.animate(marker, isX ? { left: markerPos } : { top: markerPos }, null, 'easeOutQuad'); + scrollUp.style.display = tblPos < 0 ? 'block' : 'none'; + scrollDown.style.display = (tblPos > minTblPos) ? 'block' : 'none'; + + }; + + + // initialize + var group = hs.anchors.groups[hs.expanders[slideshow.expKey].slideshowGroup || 'none'], + options = slideshow.thumbstrip, + mode = options.mode || 'horizontal', + floatMode = (mode == 'float'), + tree = floatMode ? ['div', 'ul', 'li', 'span'] : ['table', 'tbody', 'tr', 'td'], + isX = (mode == 'horizontal'), + dom = hs.createElement('div', { + className: 'highslide-thumbstrip highslide-thumbstrip-'+ mode, + innerHTML: + '
'+ + '<'+ tree[0] +'><'+ tree[1] +'>
'+ + '
'+ + '
'+ + '
' + }, { + display: 'none' + }, hs.container), + domCh = dom.childNodes, + div = domCh[0], + scrollUp = domCh[1], + scrollDown = domCh[2], + marker = domCh[3], + table = div.firstChild, + tbody = dom.getElementsByTagName(tree[1])[0], + tr; + for (var i = 0; i < group.length; i++) { + if (i == 0 || !isX) tr = hs.createElement(tree[2], null, null, tbody); + (function(){ + var a = group[i], + cell = hs.createElement(tree[3], null, null, tr), + pI = i; + hs.createElement('a', { + href: a.href, + title: a.title, + onclick: function() { + if (/highslide-active-anchor/.test(this.className)) return false; + hs.getExpander(this).focus(); + return hs.transit(a); + }, + innerHTML: hs.stripItemFormatter ? hs.stripItemFormatter(a) : a.innerHTML + }, null, cell); + })(); + } + if (!floatMode) { + scrollUp.onclick = function () { scroll(-1); }; + scrollDown.onclick = function() { scroll(1); }; + hs.addEventListener(tbody, document.onmousewheel !== undefined ? + 'mousewheel' : 'DOMMouseScroll', function(e) { + var delta = 0; + e = e || window.event; + if (e.wheelDelta) { + delta = e.wheelDelta/120; + if (hs.opera) delta = -delta; + } else if (e.detail) { + delta = -e.detail/3; + } + if (delta) scroll(-delta * 0.2); + if (e.preventDefault) e.preventDefault(); + e.returnValue = false; + }); + } + + return { + add: add, + selectThumb: selectThumb + } +}; +hs.langDefaults = hs.lang; +// history +var HsExpander = hs.Expander; +if (hs.ie && window == window.top) { + (function () { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(arguments.callee, 50); + return; + } + hs.ready(); + })(); +} +hs.addEventListener(document, 'DOMContentLoaded', hs.ready); +hs.addEventListener(window, 'load', hs.ready); + +// set handlers +hs.addEventListener(document, 'ready', function() { + if (hs.expandCursor || hs.dimmingOpacity) { + var style = hs.createElement('style', { type: 'text/css' }, null, + document.getElementsByTagName('HEAD')[0]), + backCompat = document.compatMode == 'BackCompat'; + + + function addRule(sel, dec) { + if (hs.ie && (hs.uaVersion < 9 || backCompat)) { + var last = document.styleSheets[document.styleSheets.length - 1]; + if (typeof(last.addRule) == "object") last.addRule(sel, dec); + } else { + style.appendChild(document.createTextNode(sel + " {" + dec + "}")); + } + } + function fix(prop) { + return 'expression( ( ( ignoreMe = document.documentElement.'+ prop + + ' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );'; + } + if (hs.expandCursor) addRule ('.highslide img', + 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'); + addRule ('.highslide-viewport-size', + hs.ie && (hs.uaVersion < 7 || backCompat) ? + 'position: absolute; '+ + 'left:'+ fix('scrollLeft') + + 'top:'+ fix('scrollTop') + + 'width:'+ fix('clientWidth') + + 'height:'+ fix('clientHeight') : + 'position: fixed; width: 100%; height: 100%; left: 0; top: 0'); + } +}); +hs.addEventListener(window, 'resize', function() { + hs.getPageSize(); + if (hs.viewport) for (var i = 0; i < hs.viewport.childNodes.length; i++) { + var node = hs.viewport.childNodes[i], + exp = hs.getExpander(node); + exp.positionOverlay(node); + if (node.hsId == 'thumbstrip') exp.slideshow.thumbstrip.selectThumb(); + } +}); +hs.addEventListener(document, 'mousemove', function(e) { + hs.mouse = { x: e.clientX, y: e.clientY }; +}); +hs.addEventListener(document, 'mousedown', hs.mouseClickHandler); +hs.addEventListener(document, 'mouseup', hs.mouseClickHandler); + +hs.addEventListener(document, 'ready', hs.getAnchors); +hs.addEventListener(window, 'load', hs.preloadImages); +} diff --git a/html/highslide/highslide-with-gallery.min.js b/html/highslide/highslide-with-gallery.min.js new file mode 100644 index 000000000..5f8669993 --- /dev/null +++ b/html/highslide/highslide-with-gallery.min.js @@ -0,0 +1,9 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default +slideshow +positioning +transitions +viewport +thumbstrip + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if(!hs){var hs={lang:{cssDirection:"ltr",loadingText:"Loading...",loadingTitle:"Click to cancel",focusTitle:"Click to bring to front",fullExpandTitle:"Expand to actual size (f)",creditsText:"Powered by Highslide JS",creditsTitle:"Go to the Highslide JS homepage",previousText:"Previous",nextText:"Next",moveText:"Move",closeText:"Close",closeTitle:"Close (esc)",resizeTitle:"Resize",playText:"Play",playTitle:"Play slideshow (spacebar)",pauseText:"Pause",pauseTitle:"Pause slideshow (spacebar)",previousTitle:"Previous (arrow left)",nextTitle:"Next (arrow right)",moveTitle:"Move",fullExpandText:"1:1",number:"Image %1 of %2",restoreTitle:"Click to close image, click and drag to move. Use arrow keys for next and previous."},graphicsDir:"highslide/graphics/",expandCursor:"zoomin.cur",restoreCursor:"zoomout.cur",expandDuration:250,restoreDuration:250,marginLeft:15,marginRight:15,marginTop:15,marginBottom:15,zIndexCounter:1001,loadingOpacity:0.75,allowMultipleInstances:true,numberOfImagesToPreload:5,outlineWhileAnimating:2,outlineStartOffset:3,padToMinWidth:false,fullExpandPosition:"bottom right",fullExpandOpacity:1,showCredits:true,creditsHref:"http://highslide.com/",creditsTarget:"_self",enableKeyListener:true,openerTagNames:["a"],transitions:[],transitionDuration:250,dimmingOpacity:0,dimmingDuration:50,anchor:"auto",align:"auto",targetX:null,targetY:null,dragByHeading:true,minWidth:200,minHeight:200,allowSizeReduction:true,outlineType:"drop-shadow",skin:{controls:''},preloadTheseImages:[],continuePreloading:true,expanders:[],overrides:["allowSizeReduction","useBox","anchor","align","targetX","targetY","outlineType","outlineWhileAnimating","captionId","captionText","captionEval","captionOverlay","headingId","headingText","headingEval","headingOverlay","creditsPosition","dragByHeading","autoplay","numberPosition","transitions","dimmingOpacity","width","height","wrapperClassName","minWidth","minHeight","maxWidth","maxHeight","pageOrigin","slideshowGroup","easing","easingClose","fadeInOut","src"],overlays:[],idCounter:0,oPos:{x:["leftpanel","left","center","right","rightpanel"],y:["above","top","middle","bottom","below"]},mouse:{},headingOverlay:{},captionOverlay:{},timers:[],slideshows:[],pendingOutlines:{},clones:{},onReady:[],uaVersion:/Trident\/4\.0/.test(navigator.userAgent)?8:parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]),ie:(document.all&&!window.opera),safari:/Safari/.test(navigator.userAgent),geckoMac:/Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),$:function(a){if(a){return document.getElementById(a)}},push:function(a,b){a[a.length]=b},createElement:function(a,f,e,d,c){var b=document.createElement(a);if(f){hs.extend(b,f)}if(c){hs.setStyles(b,{padding:0,border:"none",margin:0})}if(e){hs.setStyles(b,e)}if(d){d.appendChild(b)}return b},extend:function(b,c){for(var a in c){b[a]=c[a]}return b},setStyles:function(b,c){for(var a in c){if(hs.ieLt9&&a=="opacity"){if(c[a]>0.99){b.style.removeAttribute("filter")}else{b.style.filter="alpha(opacity="+(c[a]*100)+")"}}else{b.style[a]=c[a]}}},animate:function(f,a,d){var c,g,j;if(typeof d!="object"||d===null){var i=arguments;d={duration:i[2],easing:i[3],complete:i[4]}}if(typeof d.duration!="number"){d.duration=250}d.easing=Math[d.easing]||Math.easeInQuad;d.curAnim=hs.extend({},a);for(var b in a){var h=new hs.fx(f,d,b);c=parseFloat(hs.css(f,b))||0;g=parseFloat(a[b]);j=b!="opacity"?"px":"";h.custom(c,g,j)}},css:function(a,c){if(a.style[c]){return a.style[c]}else{if(document.defaultView){return document.defaultView.getComputedStyle(a,null).getPropertyValue(c)}else{if(c=="opacity"){c="filter"}var b=a.currentStyle[c.replace(/\-(\w)/g,function(e,d){return d.toUpperCase()})];if(c=="filter"){b=b.replace(/alpha\(opacity=([0-9]+)\)/,function(e,d){return d/100})}return b===""?1:b}}},getPageSize:function(){var f=document,b=window,e=f.compatMode&&f.compatMode!="BackCompat"?f.documentElement:f.body,g=hs.ie&&(hs.uaVersion<9||typeof pageXOffset=="undefined");var c=g?e.clientWidth:(f.documentElement.clientWidth||self.innerWidth),a=g?e.clientHeight:self.innerHeight;hs.page={width:c,height:a,scrollLeft:g?e.scrollLeft:pageXOffset,scrollTop:g?e.scrollTop:pageYOffset};return hs.page},getPosition:function(a){var b={x:a.offsetLeft,y:a.offsetTop};while(a.offsetParent){a=a.offsetParent;b.x+=a.offsetLeft;b.y+=a.offsetTop;if(a!=document.body&&a!=document.documentElement){b.x-=a.scrollLeft;b.y-=a.scrollTop}}return b},expand:function(b,g,d,c){if(!b){b=hs.createElement("a",null,{display:"none"},hs.container)}if(typeof b.getParams=="function"){return g}try{new hs.Expander(b,g,d);return false}catch(f){return true}},getElementByClass:function(e,c,d){var b=e.getElementsByTagName(c);for(var a=0;ac){c=f;b=d}}}if(b==-1){hs.focusKey=-1}else{a[b].focus()}},getParam:function(b,d){b.getParams=b.onclick;var c=b.getParams?b.getParams():null;b.getParams=null;return(c&&typeof c[d]!="undefined")?c[d]:(typeof hs[d]!="undefined"?hs[d]:null)},getSrc:function(b){var c=hs.getParam(b,"src");if(c){return c}return b.href},getNode:function(e){var c=hs.$(e),d=hs.clones[e],b={};if(!c&&!d){return null}if(!d){d=c.cloneNode(true);d.id="";hs.clones[e]=d;return c}else{return d.cloneNode(true)}},discardElement:function(a){if(a){hs.garbageBin.appendChild(a)}hs.garbageBin.innerHTML=""},dim:function(d){if(!hs.dimmer){a=true;hs.dimmer=hs.createElement("div",{className:"highslide-dimming highslide-viewport-size",owner:"",onclick:function(){hs.close()}},{visibility:"visible",opacity:0},hs.container,true);if(/(Android|iPad|iPhone|iPod)/.test(navigator.userAgent)){var b=document.body;function c(){hs.setStyles(hs.dimmer,{width:b.scrollWidth+"px",height:b.scrollHeight+"px"})}c();hs.addEventListener(window,"resize",c)}}hs.dimmer.style.display="";var a=hs.dimmer.owner=="";hs.dimmer.owner+="|"+d.key;if(a){if(hs.geckoMac&&hs.dimmingGeckoFix){hs.setStyles(hs.dimmer,{background:"url("+hs.graphicsDir+"geckodimmer.png)",opacity:1})}else{hs.animate(hs.dimmer,{opacity:d.dimmingOpacity},hs.dimmingDuration)}}},undim:function(a){if(!hs.dimmer){return}if(typeof a!="undefined"){hs.dimmer.owner=hs.dimmer.owner.replace("|"+a,"")}if((typeof a!="undefined"&&hs.dimmer.owner!="")||(hs.upcoming&&hs.getParam(hs.upcoming,"dimmingOpacity"))){return}if(hs.geckoMac&&hs.dimmingGeckoFix){hs.dimmer.style.display="none"}else{hs.animate(hs.dimmer,{opacity:0},hs.dimmingDuration,null,function(){hs.dimmer.style.display="none"})}},transit:function(a,d){var b=d||hs.getExpander();d=b;if(hs.upcoming){return false}else{hs.last=b}hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);try{hs.upcoming=a;a.onclick()}catch(c){hs.last=hs.upcoming=null}try{if(!a||d.transitions[1]!="crossfade"){d.close()}}catch(c){}return false},previousOrNext:function(a,c){var b=hs.getExpander(a);if(b){return hs.transit(b.getAdjacentAnchor(c),b)}else{return false}},previous:function(a){return hs.previousOrNext(a,-1)},next:function(a){return hs.previousOrNext(a,1)},keyHandler:function(a){if(!a){a=window.event}if(!a.target){a.target=a.srcElement}if(typeof a.target.form!="undefined"){return true}var b=hs.getExpander();var c=null;switch(a.keyCode){case 70:if(b){b.doFullExpand()}return true;case 32:c=2;break;case 34:case 39:case 40:c=1;break;case 8:case 33:case 37:case 38:c=-1;break;case 27:case 13:c=0}if(c!==null){if(c!=2){hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler)}if(!hs.enableKeyListener){return true}if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}if(b){if(c==0){b.close()}else{if(c==2){if(b.slideshow){b.slideshow.hitSpace()}}else{if(b.slideshow){b.slideshow.pause()}hs.previousOrNext(b.key,c)}}return false}}return true},registerOverlay:function(a){hs.push(hs.overlays,hs.extend(a,{hsId:"hsId"+hs.idCounter++}))},addSlideshow:function(b){var d=b.slideshowGroup;if(typeof d=="object"){for(var c=0;c1){return true}if(!d.target){d.target=d.srcElement}var b=d.target;while(b.parentNode&&!(/highslide-(image|move|html|resize)/.test(b.className))){b=b.parentNode}var f=hs.getExpander(b);if(f&&(f.isClosing||!f.isExpanded)){return true}if(f&&d.type=="mousedown"){if(d.target.form){return true}var a=b.className.match(/highslide-(image|move|resize)/);if(a){hs.dragArgs={exp:f,type:a[1],left:f.x.pos,width:f.x.size,top:f.y.pos,height:f.y.size,clickX:d.clientX,clickY:d.clientY};hs.addEventListener(document,"mousemove",hs.dragHandler);if(d.preventDefault){d.preventDefault()}if(/highslide-(image|html)-blur/.test(f.content.className)){f.focus();hs.hasFocused=true}return false}}else{if(d.type=="mouseup"){hs.removeEventListener(document,"mousemove",hs.dragHandler);if(hs.dragArgs){if(hs.styleRestoreCursor&&hs.dragArgs.type=="image"){hs.dragArgs.exp.content.style.cursor=hs.styleRestoreCursor}var c=hs.dragArgs.hasDragged;if(!c&&!hs.hasFocused&&!/(move|resize)/.test(hs.dragArgs.type)){f.close()}else{if(c||(!c&&hs.hasHtmlExpanders)){hs.dragArgs.exp.doShowHide("hidden")}}hs.hasFocused=false;hs.dragArgs=null}else{if(/highslide-image-blur/.test(b.className)){b.style.cursor=hs.styleRestoreCursor}}}}return false},dragHandler:function(c){if(!hs.dragArgs){return true}if(!c){c=window.event}var b=hs.dragArgs,d=b.exp;b.dX=c.clientX-b.clickX;b.dY=c.clientY-b.clickY;var f=Math.sqrt(Math.pow(b.dX,2)+Math.pow(b.dY,2));if(!b.hasDragged){b.hasDragged=(b.type!="image"&&f>0)||(f>(hs.dragSensitivity||5))}if(b.hasDragged&&c.clientX>5&&c.clientY>5){if(b.type=="resize"){d.resize(b)}else{d.moveTo(b.left+b.dX,b.top+b.dY);if(b.type=="image"){d.content.style.cursor="move"}}}return false},wrapperMouseHandler:function(c){try{if(!c){c=window.event}var b=/mouseover/i.test(c.type);if(!c.target){c.target=c.srcElement}if(!c.relatedTarget){c.relatedTarget=b?c.fromElement:c.toElement}var d=hs.getExpander(c.target);if(!d.isExpanded){return}if(!d||!c.relatedTarget||hs.getExpander(c.relatedTarget,true)==d||hs.dragArgs){return}for(var a=0;a=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var a=true;for(var b in this.options.curAnim){if(this.options.curAnim[b]!==true){a=false}}if(a){if(this.options.complete){this.options.complete.call(this.elem)}}return false}else{var e=c-this.startTime;this.state=e/this.options.duration;this.pos=this.options.easing(e,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};hs.extend(hs.fx,{step:{opacity:function(a){hs.setStyles(a.elem,{opacity:a.now})},_default:function(a){try{if(a.elem.style&&a.elem.style[a.prop]!=null){a.elem.style[a.prop]=a.now+a.unit}else{a.elem[a.prop]=a.now}}catch(b){}}}});hs.Outline=function(g,e){this.onLoad=e;this.outlineType=g;var a=hs.uaVersion,f;this.hasAlphaImageLoader=hs.ie&&hs.uaVersion<7;if(!g){if(e){e()}return}hs.init();this.table=hs.createElement("table",{cellSpacing:0},{visibility:"hidden",position:"absolute",borderCollapse:"collapse",width:0},hs.container,true);var b=hs.createElement("tbody",null,null,this.table,1);this.td=[];for(var c=0;c<=8;c++){if(c%3==0){f=hs.createElement("tr",null,{height:"auto"},b,true)}this.td[c]=hs.createElement("td",null,null,f,true);var d=c!=4?{lineHeight:0,fontSize:0}:{position:"relative"};hs.setStyles(this.td[c],d)}this.td[4].className=g+" highslide-outline";this.preloadGraphic()};hs.Outline.prototype={preloadGraphic:function(){var b=hs.graphicsDir+(hs.outlinesDir||"outlines/")+this.outlineType+".png";var a=hs.safari&&hs.uaVersion<525?hs.container:null;this.graphic=hs.createElement("img",null,{position:"absolute",top:"-9999px"},a,true);var c=this;this.graphic.onload=function(){c.onGraphicLoad()};this.graphic.src=b},onGraphicLoad:function(){var d=this.offset=this.graphic.width/4,f=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],c={height:(2*d)+"px",width:(2*d)+"px"};for(var b=0;b<=8;b++){if(f[b]){if(this.hasAlphaImageLoader){var a=(b==1||b==7)?"100%":this.graphic.width+"px";var e=hs.createElement("div",null,{width:"100%",height:"100%",position:"relative",overflow:"hidden"},this.td[b],true);hs.createElement("div",null,{filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+this.graphic.src+"')",position:"absolute",width:a,height:this.graphic.height+"px",left:(f[b][0]*d)+"px",top:(f[b][1]*d)+"px"},e,true)}else{hs.setStyles(this.td[b],{background:"url("+this.graphic.src+") "+(f[b][0]*d)+"px "+(f[b][1]*d)+"px"})}if(window.opera&&(b==3||b==5)){hs.createElement("div",null,c,this.td[b],true)}hs.setStyles(this.td[b],c)}}this.graphic=null;if(hs.pendingOutlines[this.outlineType]){hs.pendingOutlines[this.outlineType].destroy()}hs.pendingOutlines[this.outlineType]=this;if(this.onLoad){this.onLoad()}},setPosition:function(g,e,c,b,f){var d=this.exp,a=d.wrapper.style,e=e||0,g=g||{x:d.x.pos+e,y:d.y.pos+e,w:d.x.get("wsize")-2*e,h:d.y.get("wsize")-2*e};if(c){this.table.style.visibility=(g.h>=4*this.offset)?"visible":"hidden"}hs.setStyles(this.table,{left:(g.x-this.offset)+"px",top:(g.y-this.offset)+"px",width:(g.w+2*this.offset)+"px"});g.w-=2*this.offset;g.h-=2*this.offset;hs.setStyles(this.td[4],{width:g.w>=0?g.w+"px":0,height:g.h>=0?g.h+"px":0});if(this.hasAlphaImageLoader){this.td[3].style.height=this.td[5].style.height=this.td[4].style.height}},destroy:function(a){if(a){this.table.style.visibility="hidden"}else{hs.discardElement(this.table)}}};hs.Dimension=function(b,a){this.exp=b;this.dim=a;this.ucwh=a=="x"?"Width":"Height";this.wh=this.ucwh.toLowerCase();this.uclt=a=="x"?"Left":"Top";this.lt=this.uclt.toLowerCase();this.ucrb=a=="x"?"Right":"Bottom";this.rb=this.ucrb.toLowerCase();this.p1=this.p2=0};hs.Dimension.prototype={get:function(a){switch(a){case"loadingPos":return this.tpos+this.tb+(this.t-hs.loading["offset"+this.ucwh])/2;case"loadingPosXfade":return this.pos+this.cb+this.p1+(this.size-hs.loading["offset"+this.ucwh])/2;case"wsize":return this.size+2*this.cb+this.p1+this.p2;case"fitsize":return this.clientSize-this.marginMin-this.marginMax;case"maxsize":return this.get("fitsize")-2*this.cb-this.p1-this.p2;case"opos":return this.pos-(this.exp.outline?this.exp.outline.offset:0);case"osize":return this.get("wsize")+(this.exp.outline?2*this.exp.outline.offset:0);case"imgPad":return this.imgSize?Math.round((this.size-this.imgSize)/2):0}},calcBorders:function(){this.cb=(this.exp.content["offset"+this.ucwh]-this.t)/2;this.marginMax=hs["margin"+this.ucrb]},calcThumb:function(){this.t=this.exp.el[this.wh]?parseInt(this.exp.el[this.wh]):this.exp.el["offset"+this.ucwh];this.tpos=this.exp.tpos[this.dim];this.tb=(this.exp.el["offset"+this.ucwh]-this.t)/2;if(this.tpos==0||this.tpos==-1){this.tpos=(hs.page[this.wh]/2)+hs.page["scroll"+this.uclt]}},calcExpanded:function(){var a=this.exp;this.justify="auto";if(a.align=="center"){this.justify="center"}else{if(new RegExp(this.lt).test(a.anchor)){this.justify=null}else{if(new RegExp(this.rb).test(a.anchor)){this.justify="max"}}}this.pos=this.tpos-this.cb+this.tb;if(this.maxHeight&&this.dim=="x"){a.maxWidth=Math.min(a.maxWidth||this.full,a.maxHeight*this.full/a.y.full)}this.size=Math.min(this.full,a["max"+this.ucwh]||this.full);this.minSize=a.allowSizeReduction?Math.min(a["min"+this.ucwh],this.full):this.full;if(a.isImage&&a.useBox){this.size=a[this.wh];this.imgSize=this.full}if(this.dim=="x"&&hs.padToMinWidth){this.minSize=a.minWidth}this.target=a["target"+this.dim.toUpperCase()];this.marginMin=hs["margin"+this.uclt];this.scroll=hs.page["scroll"+this.uclt];this.clientSize=hs.page[this.wh]},setSize:function(a){var b=this.exp;if(b.isImage&&(b.useBox||hs.padToMinWidth)){this.imgSize=a;this.size=Math.max(this.size,this.imgSize);b.content.style[this.lt]=this.get("imgPad")+"px"}else{this.size=a}b.content.style[this.wh]=a+"px";b.wrapper.style[this.wh]=this.get("wsize")+"px";if(b.outline){b.outline.setPosition()}if(this.dim=="x"&&b.overlayBox){b.sizeOverlayBox(true)}if(this.dim=="x"&&b.slideshow&&b.isImage){if(a==this.full){b.slideshow.disable("full-expand")}else{b.slideshow.enable("full-expand")}}},setPos:function(a){this.pos=a;this.exp.wrapper.style[this.lt]=a+"px";if(this.exp.outline){this.exp.outline.setPosition()}}};hs.Expander=function(k,f,b,l){if(document.readyState&&hs.ie&&!hs.isReady){hs.addEventListener(document,"ready",function(){new hs.Expander(k,f,b,l)});return}this.a=k;this.custom=b;this.contentType=l||"image";this.isImage=!this.isHtml;hs.continuePreloading=false;this.overlays=[];this.last=hs.last;hs.last=null;hs.init();var m=this.key=hs.expanders.length;for(var g=0;ga.scroll+a.clientSize-a.marginMax){a.pos=a.scroll+a.clientSize-a.size-a.marginMin-a.marginMax-a.p1-a.p2}if(a.pos(this.x.imgSize||this.x.size)){this.createFullExpand();if(this.overlays.length==1){this.sizeOverlayBox()}}}this.show()}catch(d){this.error(d)}},justify:function(f,b){var g,h=f.target,e=f==this.x?"x":"y";if(h&&h.match(/ /)){g=h.split(" ");h=g[0]}if(h&&hs.$(h)){f.pos=hs.getPosition(hs.$(h))[e];if(g&&g[1]&&g[1].match(/^[-]?[0-9]+px$/)){f.pos+=parseInt(g[1])}if(f.sizef.scroll+f.clientSize-f.marginMax){if(!b&&d&&a){f.size=Math.min(f.size,f.get(e=="y"?"fitsize":"maxsize"))}else{if(f.get("wsize")c){d=b*c;if(dthis.minHeight&&a.size>this.minWidth&&d.get("wsize")>d.get("fitsize")){d.size-=10;if(b){a.size=d.size*b}this.sizeOverlayBox(0,1);c=true}}return c},show:function(){var a=this.x,b=this.y;this.doShowHide("hidden");if(this.slideshow&&this.slideshow.thumbstrip){this.slideshow.thumbstrip.selectThumb()}this.changeSize(1,{wrapper:{width:a.get("wsize"),height:b.get("wsize"),left:a.pos,top:b.pos},content:{left:a.p1+a.get("imgPad"),top:b.p1+b.get("imgPad"),width:a.imgSize||a.size,height:b.imgSize||b.size}},hs.expandDuration)},changeSize:function(d,i,b){var k=this.transitions,e=d?(this.last?this.last.a:null):hs.upcoming,j=(k[1]&&e&&hs.getParam(e,"transitions")[1]==k[1])?k[1]:k[0];if(this[j]&&j!="expand"){this[j](d,i);return}if(this.outline&&!this.outlineWhileAnimating){if(d){this.outline.setPosition()}else{this.outline.destroy()}}if(!d){this.destroyOverlays()}var c=this,h=c.x,g=c.y,f=this.easing;if(!d){f=this.easingClose||f}var a=d?function(){if(c.outline){c.outline.table.style.visibility="visible"}setTimeout(function(){c.afterExpand()},50)}:function(){c.afterClose()};if(d){hs.setStyles(this.wrapper,{width:h.t+"px",height:g.t+"px"})}if(this.fadeInOut){hs.setStyles(this.wrapper,{opacity:d?0:1});hs.extend(i.wrapper,{opacity:d})}hs.animate(this.wrapper,i.wrapper,{duration:b,easing:f,step:function(n,l){if(c.outline&&c.outlineWhileAnimating&&l.prop=="top"){var m=d?l.pos:1-l.pos;var o={w:h.t+(h.get("wsize")-h.t)*m,h:g.t+(g.get("wsize")-g.t)*m,x:h.tpos+(h.pos-h.tpos)*m,y:g.tpos+(g.pos-g.tpos)*m};c.outline.setPosition(o,0,1)}}});hs.animate(this.content,i.content,b,f,a);if(d){this.wrapper.style.visibility="visible";this.content.style.visibility="visible";this.a.className+=" highslide-active-anchor"}},fade:function(f,h){this.outlineWhileAnimating=false;var c=this,j=f?hs.expandDuration:0;if(f){hs.animate(this.wrapper,h.wrapper,0);hs.setStyles(this.wrapper,{opacity:0,visibility:"visible"});hs.animate(this.content,h.content,0);this.content.style.visibility="visible";hs.animate(this.wrapper,{opacity:1},j,null,function(){c.afterExpand()})}if(this.outline){this.outline.table.style.zIndex=this.wrapper.style.zIndex;var b=f||-1,d=this.outline.offset,a=f?3:d,g=f?d:3;for(var e=a;b*e<=b*g;e+=b,j+=25){(function(){var i=f?g-e:a-e;setTimeout(function(){c.outline.setPosition(0,i,1)},j)})()}}if(f){}else{setTimeout(function(){if(c.outline){c.outline.destroy(c.preserveContent)}c.destroyOverlays();hs.animate(c.wrapper,{opacity:0},hs.restoreDuration,null,function(){c.afterClose()})},j)}},crossfade:function(g,m,o){if(!g){return}var f=this,p=this.last,l=this.x,k=this.y,d=p.x,b=p.y,a=this.wrapper,i=this.content,c=this.overlayBox;hs.removeEventListener(document,"mousemove",hs.dragHandler);hs.setStyles(i,{width:(l.imgSize||l.size)+"px",height:(k.imgSize||k.size)+"px"});if(c){c.style.overflow="visible"}this.outline=p.outline;if(this.outline){this.outline.exp=f}p.outline=null;var h=hs.createElement("div",{className:"highslide-"+this.contentType},{position:"absolute",zIndex:4,overflow:"hidden",display:"none"});var j={oldImg:p,newImg:this};for(var e in j){this[e]=j[e].content.cloneNode(1);hs.setStyles(this[e],{position:"absolute",border:0,visibility:"visible"});h.appendChild(this[e])}a.appendChild(h);if(c){c.className="";a.appendChild(c)}h.style.display="";p.content.style.display="none";if(hs.safari&&hs.uaVersion<525){this.wrapper.style.visibility="visible"}hs.animate(a,{width:l.size},{duration:hs.transitionDuration,step:function(u,r){var x=r.pos,q=1-x;var w,s={},t=["pos","size","p1","p2"];for(var v in t){w=t[v];s["x"+w]=Math.round(q*d[w]+x*l[w]);s["y"+w]=Math.round(q*b[w]+x*k[w]);s.ximgSize=Math.round(q*(d.imgSize||d.size)+x*(l.imgSize||l.size));s.ximgPad=Math.round(q*d.get("imgPad")+x*l.get("imgPad"));s.yimgSize=Math.round(q*(b.imgSize||b.size)+x*(k.imgSize||k.size));s.yimgPad=Math.round(q*b.get("imgPad")+x*k.get("imgPad"))}if(f.outline){f.outline.setPosition({x:s.xpos,y:s.ypos,w:s.xsize+s.xp1+s.xp2+2*l.cb,h:s.ysize+s.yp1+s.yp2+2*k.cb})}p.wrapper.style.clip="rect("+(s.ypos-b.pos)+"px, "+(s.xsize+s.xp1+s.xp2+s.xpos+2*d.cb-d.pos)+"px, "+(s.ysize+s.yp1+s.yp2+s.ypos+2*b.cb-b.pos)+"px, "+(s.xpos-d.pos)+"px)";hs.setStyles(i,{top:(s.yp1+k.get("imgPad"))+"px",left:(s.xp1+l.get("imgPad"))+"px",marginTop:(k.pos-s.ypos)+"px",marginLeft:(l.pos-s.xpos)+"px"});hs.setStyles(a,{top:s.ypos+"px",left:s.xpos+"px",width:(s.xp1+s.xp2+s.xsize+2*l.cb)+"px",height:(s.yp1+s.yp2+s.ysize+2*k.cb)+"px"});hs.setStyles(h,{width:(s.ximgSize||s.xsize)+"px",height:(s.yimgSize||s.ysize)+"px",left:(s.xp1+s.ximgPad)+"px",top:(s.yp1+s.yimgPad)+"px",visibility:"visible"});hs.setStyles(f.oldImg,{top:(b.pos-s.ypos+b.p1-s.yp1+b.get("imgPad")-s.yimgPad)+"px",left:(d.pos-s.xpos+d.p1-s.xp1+d.get("imgPad")-s.ximgPad)+"px"});hs.setStyles(f.newImg,{opacity:x,top:(k.pos-s.ypos+k.p1-s.yp1+k.get("imgPad")-s.yimgPad)+"px",left:(l.pos-s.xpos+l.p1-s.xp1+l.get("imgPad")-s.ximgPad)+"px"});if(c){hs.setStyles(c,{width:s.xsize+"px",height:s.ysize+"px",left:(s.xp1+l.cb)+"px",top:(s.yp1+k.cb)+"px"})}},complete:function(){a.style.visibility=i.style.visibility="visible";i.style.display="block";hs.discardElement(h);f.afterExpand();p.afterClose();f.last=null}})},reuseOverlay:function(d,c){if(!this.last){return false}for(var b=0;b'+b+"
"+this[this.numberPosition].innerHTML}}},initSlideshow:function(){if(!this.last){for(var c=0;cthis.x.get("opos")+this.x.get("osize"));var g=(k.y+k.hthis.y.get("opos")+this.y.get("osize"))}var d=hs.getWrapperKey(e[f]);if(!j&&!g&&d!=this.key){if(!h){e[f].setAttribute("hidden-by","["+this.key+"]");e[f].origProp=e[f].style[a];e[f].style[a]="hidden"}else{if(h.indexOf("["+this.key+"]")==-1){e[f].setAttribute("hidden-by",h+"["+this.key+"]")}}}else{if((h=="["+this.key+"]"||hs.focusKey==d)&&d!=this.key){e[f].setAttribute("hidden-by","");e[f].style[a]=e[f].origProp||""}else{if(h&&h.indexOf("["+this.key+"]")>-1){e[f].setAttribute("hidden-by",h.replace("["+this.key+"]",""))}}}}}}}},focus:function(){this.wrapper.style.zIndex=hs.zIndexCounter+=2;for(var a=0;ae.parentNode.offsetWidth){e.style.width="100%"}}else{if(e.parentNode!=this.overlayBox){this.overlayBox.appendChild(e)}}if(/left$/.test(f)){e.style.left=b+"px"}if(/center$/.test(f)){hs.setStyles(e,{left:"50%",marginLeft:(b-Math.round(e.offsetWidth/2))+"px"})}if(/right$/.test(f)){e.style.right=-b+"px"}if(/^leftpanel$/.test(f)){hs.setStyles(e,{right:"100%",marginRight:this.x.cb+"px",top:-this.y.cb+"px",bottom:-this.y.cb+"px",overflow:"auto"});this.x.p1=e.offsetWidth}else{if(/^rightpanel$/.test(f)){hs.setStyles(e,{left:"100%",marginLeft:this.x.cb+"px",top:-this.y.cb+"px",bottom:-this.y.cb+"px",overflow:"auto"});this.x.p2=e.offsetWidth}}var d=e.parentNode.offsetHeight;e.style.height="auto";if(c&&e.offsetHeight>d){e.style.height=hs.ieLt7?d+"px":"100%"}if(/^top/.test(f)){e.style.top=a+"px"}if(/^middle/.test(f)){hs.setStyles(e,{top:"50%",marginTop:(a-Math.round(e.offsetHeight/2))+"px"})}if(/^bottom/.test(f)){e.style.bottom=-a+"px"}if(/^above$/.test(f)){hs.setStyles(e,{left:(-this.x.p1-this.x.cb)+"px",right:(-this.x.p2-this.x.cb)+"px",bottom:"100%",marginBottom:this.y.cb+"px",width:"auto"});this.y.p1=e.offsetHeight}else{if(/^below$/.test(f)){hs.setStyles(e,{position:"relative",left:(-this.x.p1-this.x.cb)+"px",right:(-this.x.p2-this.x.cb)+"px",top:"100%",marginTop:this.y.cb+"px",width:"auto"});this.y.p2=e.offsetHeight;e.style.position="absolute"}}},getOverlays:function(){this.getInline(["heading","caption"],true);this.getNumber();if(this.heading&&this.dragByHeading){this.heading.className+=" highslide-move"}if(hs.showCredits){this.writeCredits()}for(var a=0;a0){F=0}if(C>0){C=0}if(C0?G[L-1].parentNode[B]:w[B],A=w[B]+w[H]+(G[L+1]?G[L+1].parentNode[H]:0);if(A>x-v){C=x-A}else{if(J<-v){C=-J}}}var E=w[B]+(w[H]-g[H])/2+C;hs.animate(s,h?{left:C}:{top:C},null,"easeOutQuad");hs.animate(g,h?{left:E}:{top:E},null,"easeOutQuad");l.style.display=C<0?"block":"none";t.style.display=(C>F)?"block":"none"}var j=hs.anchors.groups[hs.expanders[k.expKey].slideshowGroup||"none"],f=k.thumbstrip,m=f.mode||"horizontal",u=(m=="float"),o=u?["div","ul","li","span"]:["table","tbody","tr","td"],h=(m=="horizontal"),r=hs.createElement("div",{className:"highslide-thumbstrip highslide-thumbstrip-"+m,innerHTML:'
<'+o[0]+"><"+o[1]+">
'},{display:"none"},hs.container),e=r.childNodes,n=e[0],l=e[1],t=e[2],g=e[3],s=n.firstChild,a=r.getElementsByTagName(o[1])[0],b;for(var q=0;q35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){u m={18:{9C:\'9t\',9f:\'bb...\',9g:\'8o 1L ba\',9Y:\'8o 1L bd 1L bw\',7p:\'bx 1L bl B (f)\',aS:\'bp by 8H 8I\',b0:\'bn 1L bj 8H 8I bz\',8T:\'8C\',8U:\'8D\',8w:\'8E\',8v:\'8J\',8t:\'8J (bv)\',bu:\'bg\',8P:\'8G\',8A:\'8G 1g (8B)\',8N:\'8F\',8M:\'8F 1g (8B)\',8S:\'8C (8l 14)\',8O:\'8D (8l 2V)\',8s:\'8E\',8r:\'1:1\',3n:\'b9 %1 bq %2\',84:\'8o 1L 26 2M, c4 8L c6 1L 3i. c0 8l c1 K 1p 8L 3c.\'},4p:\'L/bX/\',5M:\'bI.4y\',5m:\'bK.4y\',7f:53,8p:53,4L:15,9M:15,4j:15,9K:15,4z:bE,91:0.75,9j:J,7A:5,3B:2,bP:3,4R:1f,at:\'4g 2V\',aq:1,an:J,aF:\'bQ://L.c2/\',aE:\'bO\',8V:J,8e:[\'a\'],2Z:[],aL:53,3I:0,7G:50,3Q:\'2n\',6H:\'2n\',8y:H,8x:H,7v:J,5c:8R,5w:8R,5q:J,1B:\'bR-bS\',a6:{2B:\'<7V>\'+\'<1R 2s="L-3c">\'+\'\'+\'<23>{m.18.8T}\'+\'\'+\'<1R 2s="L-3r">\'+\'\'+\'<23>{m.18.8P}\'+\'\'+\'<1R 2s="L-2S">\'+\'\'+\'<23>{m.18.8N}\'+\'\'+\'<1R 2s="L-1p">\'+\'\'+\'<23>{m.18.8U}\'+\'\'+\'<1R 2s="L-3i">\'+\'\'+\'<23>{m.18.8w}\'+\'\'+\'<1R 2s="L-1a-2D">\'+\'\'+\'<23>{m.18.8r}\'+\'\'+\'<1R 2s="L-26">\'+\'\'+\'<23>{m.18.8v}\'+\'\'+\'\'},4X:[],6Z:J,W:[],6V:[\'5q\',\'30\',\'3Q\',\'6H\',\'8y\',\'8x\',\'1B\',\'3B\',\'bG\',\'bH\',\'bJ\',\'8u\',\'bW\',\'cd\',\'cc\',\'8z\',\'aW\',\'7v\',\'3D\',\'5b\',\'2Z\',\'3I\',\'M\',\'1b\',\'7B\',\'5c\',\'5w\',\'6F\',\'6R\',\'9i\',\'2t\',\'2r\',\'aT\',\'aD\',\'1G\'],1x:[],4V:0,7q:{x:[\'9H\',\'14\',\'4i\',\'2V\',\'9L\'],y:[\'4T\',\'11\',\'8h\',\'4g\',\'6D\']},66:{},8z:{},8u:{},3u:[],4U:[],48:{},7I:{},5G:[],21:/ca\\/4\\.0/.19(4B.5r)?8:8n((4B.5r.5Y().2H(/.+(?:9y|c9|ce|2m)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),2m:(R.52&&!1A.3q),4u:/cf/.19(4B.5r),5Z:/ci.+9y:1\\.[0-8].+cg/.19(4B.5r),$:z(1M){q(1M)D R.c7(1M)},2p:z(2o,3j){2o[2o.S]=3j},1c:z(9m,4k,3P,8b,9n){u C=R.1c(9m);q(4k)m.3b(C,4k);q(9n)m.V(C,{bY:0,aM:\'1F\',6S:0});q(3P)m.V(C,3P);q(8b)8b.2E(C);D C},3b:z(C,4k){K(u x 2T 4k)C[x]=4k[x];D C},V:z(C,3P){K(u x 2T 3P){q(m.4d&&x==\'1n\'){q(3P[x]>0.99)C.G.c5(\'5j\');I C.G.5j=\'9o(1n=\'+(3P[x]*28)+\')\'}I C.G[x]=3P[x]}},2b:z(C,Z,31){u 41,4v,47;q(1q 31!=\'6q\'||31===H){u 36=9V;31={3J:36[2],2r:36[3],63:36[4]}}q(1q 31.3J!=\'3n\')31.3J=53;31.2r=1d[31.2r]||1d.93;31.5S=m.3b({},Z);K(u 35 2T Z){u e=24 m.1E(C,31,35);41=8n(m.7U(C,35))||0;4v=8n(Z[35]);47=35!=\'1n\'?\'F\':\'\';e.3F(41,4v,47)}},7U:z(C,Z){q(C.G[Z]){D C.G[Z]}I q(R.6T){D R.6T.9P(C,H).9Q(Z)}I{q(Z==\'1n\')Z=\'5j\';u 3j=C.bf[Z.2j(/\\-(\\w)/g,z(a,b){D b.92()})];q(Z==\'5j\')3j=3j.2j(/9o\\(1n=([0-9]+)\\)/,z(a,b){D b/28});D 3j===\'\'?1:3j}},6v:z(){u d=R,w=1A,5d=d.6i&&d.6i!=\'7P\'?d.4l:d.3x,4d=m.2m&&(m.21<9||1q 9l==\'1C\');u M=4d?5d.8m:(d.4l.8m||5J.b2),1b=4d?5d.aK:5J.b3;m.3S={M:M,1b:1b,5l:4d?5d.5l:9l,5i:4d?5d.5i:be};D m.3S},6g:z(C){u p={x:C.4f,y:C.9h};4o(C.9k){C=C.9k;p.x+=C.4f;p.y+=C.9h;q(C!=R.3x&&C!=R.4l){p.x-=C.5l;p.y-=C.5i}}D p},2D:z(a,2O,3F,T){q(!a)a=m.1c(\'a\',H,{1u:\'1F\'},m.22);q(1q a.5u==\'z\')D 2O;2d{24 m.4Z(a,2O,3F);D 1f}1W(e){D J}},a4:z(C,4F,U){u 1i=C.2L(4F);K(u i=0;i<1i.S;i++){q((24 5X(U)).19(1i[i].U)){D 1i[i]}}D H},a7:z(s){s=s.2j(/\\s/g,\' \');u 1T=/{m\\.18\\.([^}]+)\\}/g,4S=s.2H(1T),18;q(4S)K(u i=0;i<4S.S;i++){18=4S[i].2j(1T,"$1");q(1q m.18[18]!=\'1C\')s=s.2j(4S[i],m.18[18])}D s},9w:z(){u 7J=0,6j=-1,W=m.W,A,1r;K(u i=0;i7J){7J=1r;6j=i}}}q(6j==-1)m.3v=-1;I W[6j].43()},5h:z(a,5p){a.5u=a.2G;u p=a.5u?a.5u():H;a.5u=H;D(p&&1q p[5p]!=\'1C\')?p[5p]:(1q m[5p]!=\'1C\'?m[5p]:H)},73:z(a){u 1G=m.5h(a,\'1G\');q(1G)D 1G;D a.1Y},4W:z(1M){u 3w=m.$(1M),45=m.7I[1M],a={};q(!3w&&!45)D H;q(!45){45=3w.7j(J);45.1M=\'\';m.7I[1M]=45;D 3w}I{D 45.7j(J)}},3H:z(d){q(d)m.8j.2E(d);m.8j.2R=\'\'},1m:z(A){q(!m.2a){7E=J;m.2a=m.1c(\'X\',{U:\'L-bk L-1Z-B\',4x:\'\',2G:z(){m.26()}},{1e:\'1D\',1n:0},m.22,J);q(/(bm|bt|bo|br)/.19(4B.5r)){u 3x=R.3x;z 7H(){m.V(m.2a,{M:3x.bA+\'F\',1b:3x.b5+\'F\'})}7H();m.1Q(1A,\'3O\',7H)}}m.2a.G.1u=\'\';u 7E=m.2a.4x==\'\';m.2a.4x+=\'|\'+A.P;q(7E){q(m.5Z&&m.9q)m.V(m.2a,{9e:\'5O(\'+m.4p+\'bh.97)\',1n:1});I m.2b(m.2a,{1n:A.3I},m.7G)}},7Q:z(P){q(!m.2a)D;q(1q P!=\'1C\')m.2a.4x=m.2a.4x.2j(\'|\'+P,\'\');q((1q P!=\'1C\'&&m.2a.4x!=\'\')||(m.1U&&m.5h(m.1U,\'3I\')))D;q(m.5Z&&m.9q)m.2a.G.1u=\'1F\';I m.2b(m.2a,{1n:0},m.7G,H,z(){m.2a.G.1u=\'1F\'})},83:z(6n,A){u Y=A||m.2h();A=Y;q(m.1U)D 1f;I m.Y=Y;m.49(R,1A.3q?\'5P\':\'5Q\',m.4N);2d{m.1U=6n;6n.2G()}1W(e){m.Y=m.1U=H}2d{q(!6n||A.2Z[1]!=\'3Y\')A.26()}1W(e){}D 1f},6d:z(C,1P){u A=m.2h(C);q(A)D m.83(A.7b(1P),A);I D 1f},3c:z(C){D m.6d(C,-1)},1p:z(C){D m.6d(C,1)},4N:z(e){q(!e)e=1A.29;q(!e.2i)e.2i=e.7l;q(1q e.2i.9x!=\'1C\')D J;u A=m.2h();u 1P=H;8Y(e.cq){1I 70:q(A)A.6k();D J;1I 32:1P=2;5B;1I 34:1I 39:1I 40:1P=1;5B;1I 8:1I 33:1I 37:1I 38:1P=-1;5B;1I 27:1I 13:1P=0}q(1P!==H){q(1P!=2)m.49(R,1A.3q?\'5P\':\'5Q\',m.4N);q(!m.8V)D J;q(e.4D)e.4D();I e.9W=1f;q(A){q(1P==0){A.26()}I q(1P==2){q(A.1g)A.1g.ad()}I{q(A.1g)A.1g.2S();m.6d(A.P,1P)}D 1f}}D J},d5:z(O){m.2p(m.1x,m.3b(O,{1H:\'1H\'+m.4V++}))},d4:z(1h){u 2C=1h.2t;q(1q 2C==\'6q\'){K(u i=0;i<2C.S;i++){u o={};K(u x 2T 1h)o[x]=1h[x];o.2t=2C[i];m.2p(m.4U,o)}}I{m.2p(m.4U,1h)}},86:z(7N,65){u C,1T=/^L-Q-([0-9]+)$/;C=7N;4o(C.1O){q(C.5F!==1C)D C.5F;q(C.1M&&1T.19(C.1M))D C.1M.2j(1T,"$1");C=C.1O}q(!65){C=7N;4o(C.1O){q(C.4F&&m.5L(C)){K(u P=0;P1)D J;q(!e.2i)e.2i=e.7l;u C=e.2i;4o(C.1O&&!(/L-(2M|3i|5W|3O)/.19(C.U))){C=C.1O}u A=m.2h(C);q(A&&(A.8c||!A.55))D J;q(A&&e.T==\'aH\'){q(e.2i.9x)D J;u 2H=C.U.2H(/L-(2M|3i|3O)/);q(2H){m.2I={A:A,T:2H[1],14:A.x.E,M:A.x.B,11:A.y.E,1b:A.y.B,9v:e.6c,9u:e.68};m.1Q(R,\'6o\',m.5V);q(e.4D)e.4D();q(/L-(2M|5W)-89/.19(A.17.U)){A.43();m.7R=J}D 1f}}I q(e.T==\'aA\'){m.49(R,\'6o\',m.5V);q(m.2I){q(m.4I&&m.2I.T==\'2M\')m.2I.A.17.G.46=m.4I;u 3y=m.2I.3y;q(!3y&&!m.7R&&!/(3i|3O)/.19(m.2I.T)){A.26()}I q(3y||(!3y&&m.d8)){m.2I.A.5s(\'1s\')}m.7R=1f;m.2I=H}I q(/L-2M-89/.19(C.U)){C.G.46=m.4I}}D 1f},5V:z(e){q(!m.2I)D J;q(!e)e=1A.29;u a=m.2I,A=a.A;a.5T=e.6c-a.9v;a.7o=e.68-a.9u;u 7s=1d.ck(1d.9r(a.5T,2)+1d.9r(a.7o,2));q(!a.3y)a.3y=(a.T!=\'2M\'&&7s>0)||(7s>(m.cX||5));q(a.3y&&e.6c>5&&e.68>5){q(a.T==\'3O\')A.3O(a);I{A.7C(a.14+a.5T,a.11+a.7o);q(a.T==\'2M\')A.17.G.46=\'3i\'}}D 1f},8Q:z(e){2d{q(!e)e=1A.29;u 6C=/cW/i.19(e.T);q(!e.2i)e.2i=e.7l;q(!e.6E)e.6E=6C?e.db:e.di;u A=m.2h(e.2i);q(!A.55)D;q(!A||!e.6E||m.2h(e.6E,J)==A||m.2I)D;K(u i=0;i=k.1h.3J+k.80){k.4c=k.4v;k.E=k.7X=1;k.8a();k.1h.5S[k.Z]=J;u 8d=J;K(u i 2T k.1h.5S)q(k.1h.5S[i]!==J)8d=1f;q(8d){q(k.1h.63)k.1h.63.95(k.2F)}D 1f}I{u n=t-k.80;k.7X=n/k.1h.3J;k.E=k.1h.2r(n,0,1,k.1h.3J);k.4c=k.41+((k.4v-k.41)*k.E);k.8a()}D J}};m.3b(m.1E,{3k:{1n:z(1E){m.V(1E.2F,{1n:1E.4c})},96:z(1E){2d{q(1E.2F.G&&1E.2F.G[1E.Z]!=H)1E.2F.G[1E.Z]=1E.4c+1E.47;I 1E.2F[1E.Z]=1E.4c}1W(e){}}}});m.4O=z(1B,3V){k.3V=3V;k.1B=1B;u v=m.21,3L;k.7h=m.2m&&m.21<7;q(!1B){q(3V)3V();D}m.71();k.1V=m.1c(\'1V\',{cr:0},{1e:\'1s\',1j:\'2v\',cC:\'cD\',M:0},m.22,J);u 4a=m.1c(\'4a\',H,H,k.1V,1);k.2e=[];K(u i=0;i<=8;i++){q(i%3==0)3L=m.1c(\'3L\',H,{1b:\'2n\'},4a,J);k.2e[i]=m.1c(\'2e\',H,H,3L,J);u G=i!=4?{cP:0,cO:0}:{1j:\'8i\'};m.V(k.2e[i],G)}k.2e[4].U=1B+\' L-16\';k.98()};m.4O.5o={98:z(){u 1G=m.4p+(m.cN||"cQ/")+k.1B+".97";u 9a=m.4u&&m.21<6t?m.22:H;k.3d=m.1c(\'1y\',H,{1j:\'2v\',11:\'-4P\'},9a,J);u 7T=k;k.3d.64=z(){7T.9b()};k.3d.1G=1G},9b:z(){u o=k.1k=k.3d.M/4,E=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1m={1b:(2*o)+\'F\',M:(2*o)+\'F\'};K(u i=0;i<=8;i++){q(E[i]){q(k.7h){u w=(i==1||i==7)?\'28%\':k.3d.M+\'F\';u X=m.1c(\'X\',H,{M:\'28%\',1b:\'28%\',1j:\'8i\',3a:\'1s\'},k.2e[i],J);m.1c(\'X\',H,{5j:"cL:cG.cF.cE(cH=cI, 1G=\'"+k.3d.1G+"\')",1j:\'2v\',M:w,1b:k.3d.1b+\'F\',14:(E[i][0]*o)+\'F\',11:(E[i][1]*o)+\'F\'},X,J)}I{m.V(k.2e[i],{9e:\'5O(\'+k.3d.1G+\') \'+(E[i][0]*o)+\'F \'+(E[i][1]*o)+\'F\'})}q(1A.3q&&(i==3||i==5))m.1c(\'X\',H,1m,k.2e[i],J);m.V(k.2e[i],1m)}}k.3d=H;q(m.48[k.1B])m.48[k.1B].5x();m.48[k.1B]=k;q(k.3V)k.3V()},3Z:z(E,1k,9d,3t,2r){u A=k.A,cK=A.Q.G,1k=1k||0,E=E||{x:A.x.E+1k,y:A.y.E+1k,w:A.x.N(\'1N\')-2*1k,h:A.y.N(\'1N\')-2*1k};q(9d)k.1V.G.1e=(E.h>=4*k.1k)?\'1D\':\'1s\';m.V(k.1V,{14:(E.x-k.1k)+\'F\',11:(E.y-k.1k)+\'F\',M:(E.w+2*k.1k)+\'F\'});E.w-=2*k.1k;E.h-=2*k.1k;m.V(k.2e[4],{M:E.w>=0?E.w+\'F\':0,1b:E.h>=0?E.h+\'F\':0});q(k.7h)k.2e[3].G.1b=k.2e[5].G.1b=k.2e[4].G.1b},5x:z(9c){q(9c)k.1V.G.1e=\'1s\';I m.3H(k.1V)}};m.6r=z(A,1m){k.A=A;k.1m=1m;k.3m=1m==\'x\'?\'ah\':\'au\';k.3G=k.3m.5Y();k.4M=1m==\'x\'?\'af\':\'ag\';k.6B=k.4M.5Y();k.7d=1m==\'x\'?\'a5\':\'a8\';k.90=k.7d.5Y();k.1o=k.2z=0};m.6r.5o={N:z(P){8Y(P){1I\'78\':D k.1K+k.3o+(k.t-m.1S[\'1k\'+k.3m])/2;1I\'6Q\':D k.E+k.cb+k.1o+(k.B-m.1S[\'1k\'+k.3m])/2;1I\'1N\':D k.B+2*k.cb+k.1o+k.2z;1I\'4n\':D k.3W-k.2P-k.3X;1I\'7a\':D k.N(\'4n\')-2*k.cb-k.1o-k.2z;1I\'5t\':D k.E-(k.A.16?k.A.16.1k:0);1I\'7M\':D k.N(\'1N\')+(k.A.16?2*k.A.16.1k:0);1I\'2f\':D k.1z?1d.2y((k.B-k.1z)/2):0}},74:z(){k.cb=(k.A.17[\'1k\'+k.3m]-k.t)/2;k.3X=m[\'6S\'+k.7d]},6X:z(){k.t=k.A.C[k.3G]?7L(k.A.C[k.3G]):k.A.C[\'1k\'+k.3m];k.1K=k.A.1K[k.1m];k.3o=(k.A.C[\'1k\'+k.3m]-k.t)/2;q(k.1K==0||k.1K==-1){k.1K=(m.3S[k.3G]/2)+m.3S[\'1J\'+k.4M]}},6P:z(){u A=k.A;k.2k=\'2n\';q(A.6H==\'4i\')k.2k=\'4i\';I q(24 5X(k.6B).19(A.3Q))k.2k=H;I q(24 5X(k.90).19(A.3Q))k.2k=\'56\';k.E=k.1K-k.cb+k.3o;q(k.6R&&k.1m==\'x\')A.6F=1d.2X(A.6F||k.1a,A.6R*k.1a/A.y.1a);k.B=1d.2X(k.1a,A[\'56\'+k.3m]||k.1a);k.2q=A.5q?1d.2X(A[\'2X\'+k.3m],k.1a):k.1a;q(A.3A&&A.30){k.B=A[k.3G];k.1z=k.1a}q(k.1m==\'x\'&&m.4R)k.2q=A.5c;k.2i=A[\'2i\'+k.1m.92()];k.2P=m[\'6S\'+k.4M];k.1J=m.3S[\'1J\'+k.4M];k.3W=m.3S[k.3G]},82:z(i){u A=k.A;q(A.3A&&(A.30||m.4R)){k.1z=i;k.B=1d.56(k.B,k.1z);A.17.G[k.6B]=k.N(\'2f\')+\'F\'}I k.B=i;A.17.G[k.3G]=i+\'F\';A.Q.G[k.3G]=k.N(\'1N\')+\'F\';q(A.16)A.16.3Z();q(k.1m==\'x\'&&A.1l)A.4K(J);q(k.1m==\'x\'&&A.1g&&A.3A){q(i==k.1a)A.1g.4J(\'1a-2D\');I A.1g.3T(\'1a-2D\')}},7Z:z(i){k.E=i;k.A.Q.G[k.6B]=i+\'F\';q(k.A.16)k.A.16.3Z()}};m.4Z=z(a,2O,3F,2Q){q(R.cs&&m.2m&&!m.6I){m.1Q(R,\'3s\',z(){24 m.4Z(a,2O,3F,2Q)});D}k.a=a;k.3F=3F;k.2Q=2Q||\'2M\';k.3A=!k.cp;m.6Z=1f;k.1x=[];k.Y=m.Y;m.Y=H;m.71();u P=k.P=m.W.S;K(u i=0;ip.1J+p.3W-p.3X)p.E=p.1J+p.3W-p.B-p.2P-p.3X-p.1o-p.2z;q(p.E(k.x.1z||k.x.B)){k.ap();q(k.1x.S==1)k.4K()}}k.aG()}1W(e){k.7D(e)}},2k:z(p,4C){u 4b,2l=p.2i,1m=p==k.x?\'x\':\'y\';q(2l&&2l.2H(/ /)){4b=2l.dh(\' \');2l=4b[0]}q(2l&&m.$(2l)){p.E=m.6g(m.$(2l))[1m];q(4b&&4b[1]&&4b[1].2H(/^[-]?[0-9]+F$/))p.E+=7L(4b[1]);q(p.Bp.1J+p.3W-p.3X){q(!4C&&79&&4q){p.B=1d.2X(p.B,p.N(1m==\'y\'?\'4n\':\'7a\'))}I q(p.N(\'1N\')2x){ 2A=2Y*2x;q(2Ak.5w&&x.B>k.5c&&y.N(\'1N\')>y.N(\'4n\')){y.B-=10;q(2x)x.B=y.B*2x;k.4K(0,1);3e=J}}D 3e},aG:z(){u x=k.x,y=k.y;k.5s(\'1s\');q(k.1g&&k.1g.2g)k.1g.2g.4G();k.8f(1,{Q:{M:x.N(\'1N\'),1b:y.N(\'1N\'),14:x.E,11:y.E},17:{14:x.1o+x.N(\'2f\'),11:y.1o+y.N(\'2f\'),M:x.1z||x.B,1b:y.1z||y.B}},m.7f)},8f:z(1t,1L,3t){u 5k=k.2Z,6M=1t?(k.Y?k.Y.a:H):m.1U,t=(5k[1]&&6M&&m.5h(6M,\'2Z\')[1]==5k[1])?5k[1]:5k[0];q(k[t]&&t!=\'2D\'){k[t](1t,1L);D}q(k.16&&!k.3B){q(1t)k.16.3Z();I k.16.5x()}q(!1t)k.67();u A=k,x=A.x,y=A.y,2r=k.2r;q(!1t)2r=k.aT||2r;u ay=1t?z(){q(A.16)A.16.1V.G.1e="1D";4r(z(){A.62()},50)}:z(){A.5v()};q(1t)m.V(k.Q,{M:x.t+\'F\',1b:y.t+\'F\'});q(k.aD){m.V(k.Q,{1n:1t?0:1});m.3b(1L.Q,{1n:1t})}m.2b(k.Q,1L.Q,{3J:3t,2r:2r,3k:z(3j,36){q(A.16&&A.3B&&36.Z==\'11\'){u 4Q=1t?36.E:1-36.E;u E={w:x.t+(x.N(\'1N\')-x.t)*4Q,h:y.t+(y.N(\'1N\')-y.t)*4Q,x:x.1K+(x.E-x.1K)*4Q,y:y.1K+(y.E-y.1K)*4Q};A.16.3Z(E,0,1)}}});m.2b(k.17,1L.17,3t,2r,ay);q(1t){k.Q.G.1e=\'1D\';k.17.G.1e=\'1D\';k.a.U+=\' L-42-3Q\'}},5n:z(1t,1L){k.3B=1f;u A=k,t=1t?m.7f:0;q(1t){m.2b(k.Q,1L.Q,0);m.V(k.Q,{1n:0,1e:\'1D\'});m.2b(k.17,1L.17,0);k.17.G.1e=\'1D\';m.2b(k.Q,{1n:1},t,H,z(){A.62()})}q(k.16){k.16.1V.G.1r=k.Q.G.1r;u 5D=1t||-1,1k=k.16.1k,7c=1t?3:1k,6Y=1t?1k:3;K(u i=7c;5D*i<=5D*6Y;i+=5D,t+=25){(z(){u o=1t?6Y-i:7c-i;4r(z(){A.16.3Z(0,o,1)},t)})()}}q(1t){}I{4r(z(){q(A.16)A.16.5x(A.cz);A.67();m.2b(A.Q,{1n:0},m.8p,H,z(){A.5v()})},t)}},3Y:z(1t,1L,72){q(!1t)D;u A=k,Y=k.Y,x=k.x,y=k.y,2W=Y.x,2U=Y.y,Q=k.Q,17=k.17,1l=k.1l;m.49(R,\'6o\',m.5V);m.V(17,{M:(x.1z||x.B)+\'F\',1b:(y.1z||y.B)+\'F\'});q(1l)1l.G.3a=\'1D\';k.16=Y.16;q(k.16)k.16.A=A;Y.16=H;u 4s=m.1c(\'X\',{U:\'L-\'+k.2Q},{1j:\'2v\',1r:4,3a:\'1s\',1u:\'1F\'});u 77={aO:Y,aR:k};K(u n 2T 77){k[n]=77[n].17.7j(1);m.V(k[n],{1j:\'2v\',aM:0,1e:\'1D\'});4s.2E(k[n])}Q.2E(4s);q(1l){1l.U=\'\';Q.2E(1l)}4s.G.1u=\'\';Y.17.G.1u=\'1F\';q(m.4u&&m.21<6t){k.Q.G.1e=\'1D\'}m.2b(Q,{M:x.B},{3J:m.aL,3k:z(3j,36){u E=36.E,3U=1-E;u Z,B={},6N=[\'E\',\'B\',\'1o\',\'2z\'];K(u n 2T 6N){Z=6N[n];B[\'x\'+Z]=1d.2y(3U*2W[Z]+E*x[Z]);B[\'y\'+Z]=1d.2y(3U*2U[Z]+E*y[Z]);B.aJ=1d.2y(3U*(2W.1z||2W.B)+E*(x.1z||x.B));B.6p=1d.2y(3U*2W.N(\'2f\')+E*x.N(\'2f\'));B.aN=1d.2y(3U*(2U.1z||2U.B)+E*(y.1z||y.B));B.6f=1d.2y(3U*2U.N(\'2f\')+E*y.N(\'2f\'))}q(A.16)A.16.3Z({x:B.2K,y:B.2J,w:B.58+B.3C+B.6O+2*x.cb,h:B.5a+B.3z+B.6W+2*y.cb});Y.Q.G.ct=\'cn(\'+(B.2J-2U.E)+\'F, \'+(B.58+B.3C+B.6O+B.2K+2*2W.cb-2W.E)+\'F, \'+(B.5a+B.3z+B.6W+B.2J+2*2U.cb-2U.E)+\'F, \'+(B.2K-2W.E)+\'F)\';m.V(17,{11:(B.3z+y.N(\'2f\'))+\'F\',14:(B.3C+x.N(\'2f\'))+\'F\',4j:(y.E-B.2J)+\'F\',4L:(x.E-B.2K)+\'F\'});m.V(Q,{11:B.2J+\'F\',14:B.2K+\'F\',M:(B.3C+B.6O+B.58+2*x.cb)+\'F\',1b:(B.3z+B.6W+B.5a+2*y.cb)+\'F\'});m.V(4s,{M:(B.aJ||B.58)+\'F\',1b:(B.aN||B.5a)+\'F\',14:(B.3C+B.6p)+\'F\',11:(B.3z+B.6f)+\'F\',1e:\'1D\'});m.V(A.aO,{11:(2U.E-B.2J+2U.1o-B.3z+2U.N(\'2f\')-B.6f)+\'F\',14:(2W.E-B.2K+2W.1o-B.3C+2W.N(\'2f\')-B.6p)+\'F\'});m.V(A.aR,{1n:E,11:(y.E-B.2J+y.1o-B.3z+y.N(\'2f\')-B.6f)+\'F\',14:(x.E-B.2K+x.1o-B.3C+x.N(\'2f\')-B.6p)+\'F\'});q(1l)m.V(1l,{M:B.58+\'F\',1b:B.5a+\'F\',14:(B.3C+x.cb)+\'F\',11:(B.3z+y.cb)+\'F\'})},63:z(){Q.G.1e=17.G.1e=\'1D\';17.G.1u=\'4H\';m.3H(4s);A.62();Y.5v();A.Y=H}})},9E:z(o,C){q(!k.Y)D 1f;K(u i=0;i\'+s+\'\'+k[k.5b].2R}}},aB:z(){q(!k.Y){K(u i=0;ik.x.N(\'5t\')+k.x.N(\'7M\'));u 9Z=(3g.y+3g.hk.y.N(\'5t\')+k.y.N(\'7M\'))}u 5H=m.86(1i[i]);q(!ax&&!9Z&&5H!=k.P){q(!2u){1i[i].5A(\'1s-by\',\'[\'+k.P+\']\');1i[i].88=1i[i].G[Z];1i[i].G[Z]=\'1s\'}I q(2u.9X(\'[\'+k.P+\']\')==-1){1i[i].5A(\'1s-by\',2u+\'[\'+k.P+\']\')}}I q((2u==\'[\'+k.P+\']\'||m.3v==5H)&&5H!=k.P){1i[i].5A(\'1s-by\',\'\');1i[i].G[Z]=1i[i].88||\'\'}I q(2u&&2u.9X(\'[\'+k.P+\']\')>-1){1i[i].5A(\'1s-by\',2u.2j(\'[\'+k.P+\']\',\'\'))}}}}},43:z(){k.Q.G.1r=m.4z+=2;K(u i=0;iO.1O.2c)O.G.M=\'28%\'}I q(O.1O!=k.1l)k.1l.2E(O);q(/14$/.19(p))O.G.14=5E+\'F\';q(/4i$/.19(p))m.V(O,{14:\'50%\',4L:(5E-1d.2y(O.2c/2))+\'F\'});q(/2V$/.19(p))O.G.2V=-5E+\'F\';q(/^9H$/.19(p)){m.V(O,{2V:\'28%\',9M:k.x.cb+\'F\',11:-k.y.cb+\'F\',4g:-k.y.cb+\'F\',3a:\'2n\'});k.x.1o=O.2c}I q(/^9L$/.19(p)){m.V(O,{14:\'28%\',4L:k.x.cb+\'F\',11:-k.y.cb+\'F\',4g:-k.y.cb+\'F\',3a:\'2n\'});k.x.2z=O.2c}u 8g=O.1O.3f;O.G.1b=\'2n\';q(4E&&O.3f>8g)O.G.1b=m.3E?8g+\'F\':\'28%\';q(/^11/.19(p))O.G.11=5C+\'F\';q(/^8h/.19(p))m.V(O,{11:\'50%\',4j:(5C-1d.2y(O.3f/2))+\'F\'});q(/^4g/.19(p))O.G.4g=-5C+\'F\';q(/^4T$/.19(p)){m.V(O,{14:(-k.x.1o-k.x.cb)+\'F\',2V:(-k.x.2z-k.x.cb)+\'F\',4g:\'28%\',9K:k.y.cb+\'F\',M:\'2n\'});k.y.1o=O.3f}I q(/^6D$/.19(p)){m.V(O,{1j:\'8i\',14:(-k.x.1o-k.x.cb)+\'F\',2V:(-k.x.2z-k.x.cb)+\'F\',11:\'28%\',4j:k.y.cb+\'F\',M:\'2n\'});k.y.2z=O.3f;O.G.1j=\'2v\'}},9J:z(){k.a2([\'6z\',\'dd\'],J);k.a3();q(k.6z&&k.7v)k.6z.U+=\' L-3i\';q(m.an)k.am();K(u i=0;i0)4w=0;q(2w>0)2w=0;q(2w<4w)2w=4w}I{K(u j=0;j0?as[i-1].1O[4f]:3M[4f],7x=3M[4f]+3M[2c]+(as[i+1]?as[i+1].1O[2c]:0);q(7x>6h-5z)2w=6h-7x;I q(7F<-5z)2w=-7F}u 7r=3M[4f]+(3M[2c]-6b[2c])/2+2w;m.2b(1V,3p?{14:2w}:{11:2w},H,\'7n\');m.2b(6b,3p?{14:7r}:{11:7r},H,\'7n\');7Y.G.1u=2w<0?\'4H\':\'1F\';85.G.1u=(2w>4w)?\'4H\':\'1F\'};u 51=m.3R.2N[m.W[1g.3N].2t||\'1F\'],1h=1g.2g,4m=1h.4m||\'ao\',81=(4m==\'bi\'),3K=81?[\'X\',\'7V\',\'1R\',\'23\']:[\'1V\',\'4a\',\'3L\',\'2e\'],3p=(4m==\'ao\'),4e=m.1c(\'X\',{U:\'L-2g L-2g-\'+4m,2R:\'\'+\'<\'+3K[0]+\'><\'+3K[1]+\'>\'+\'\'+\'\'+\'\'},{1u:\'1F\'},m.22),57=4e.6l,X=57[0],7Y=57[1],85=57[2],6b=57[3],1V=X.b7,4a=4e.2L(3K[1])[0],3L;K(u i=0;i<51.S;i++){q(i==0||!3p)3L=m.1c(3K[2],H,H,4a);(z(){u a=51[i],3M=m.1c(3K[3],H,H,3L),cj=i;m.1c(\'a\',{1Y:a.1Y,1X:a.1X,2G:z(){q(/L-42-3Q/.19(k.U))D 1f;m.2h(k).43();D m.83(a)},2R:m.9I?m.9I(a):a.2R},H,3M)})()}q(!81){7Y.2G=z(){1J(-1)};85.2G=z(){1J(1)};m.1Q(4a,R.c3!==1C?\'bB\':\'bZ\',z(e){u 3h=0;e=e||1A.29;q(e.9D){3h=e.9D/ch;q(m.3q)3h=-3h}I q(e.9N){3h=-e.9N/3}q(3h)1J(-3h*0.2);q(e.4D)e.4D();e.9W=1f})}D{6s:6s,4G:4G}};m.5U=m.18;u bC=m.4Z;q(m.2m&&1A==1A.11){(z(){2d{R.4l.bD(\'14\')}1W(e){4r(9V.bF,50);D}m.3s()})()}m.1Q(R,\'bL\',m.3s);m.1Q(1A,\'az\',m.3s);m.1Q(R,\'3s\',z(){q(m.5M||m.3I){u G=m.1c(\'G\',{T:\'bM/7U\'},H,R.2L(\'bT\')[0]),8k=R.6i==\'7P\';z 5e(7w,7W){q(m.2m&&(m.21<9||8k)){u Y=R.9S[R.9S.S-1];q(1q(Y.5e)=="6q")Y.5e(7w,7W)}I{G.2E(R.bU(7w+" {"+7W+"}"))}}z 5f(Z){D\'bV( ( ( bN = R.4l.\'+Z+\' ? R.4l.\'+Z+\' : R.3x.\'+Z+\' ) ) + \\\'F\\\' );\'}q(m.5M)5e(\'.L 1y\',\'46: 5O(\'+m.4p+m.5M+\'), 5R !c8;\');5e(\'.L-1Z-B\',m.2m&&(m.21<7||8k)?\'1j: 2v; \'+\'14:\'+5f(\'5l\')+\'11:\'+5f(\'5i\')+\'M:\'+5f(\'8m\')+\'1b:\'+5f(\'aK\'):\'1j: bc; M: 28%; 1b: 28%; 14: 0; 11: 0\')}});m.1Q(1A,\'3O\',z(){m.6v();q(m.1Z)K(u i=0;iHighslide JS', + creditsTitle : 'Go to the Highslide JS homepage', + previousText : 'Previous', + nextText : 'Next', + moveText : 'Move', + closeText : 'Close', + closeTitle : 'Close (esc)', + resizeTitle : 'Resize', + playText : 'Play', + playTitle : 'Play slideshow (spacebar)', + pauseText : 'Pause', + pauseTitle : 'Pause slideshow (spacebar)', + previousTitle : 'Previous (arrow left)', + nextTitle : 'Next (arrow right)', + moveTitle : 'Move', + fullExpandText : '1:1', + restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' +}, +// See http://highslide.com/ref for examples of settings +graphicsDir : 'highslide/graphics/', +expandCursor : 'zoomin.cur', // null disables +restoreCursor : 'zoomout.cur', // null disables +expandDuration : 250, // milliseconds +restoreDuration : 250, +marginLeft : 15, +marginRight : 15, +marginTop : 15, +marginBottom : 15, +zIndexCounter : 1001, // adjust to other absolutely positioned elements +loadingOpacity : 0.75, +allowMultipleInstances: true, +numberOfImagesToPreload : 5, +outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only +outlineStartOffset : 3, // ends at 10 +padToMinWidth : false, // pad the popup width to make room for wide caption +fullExpandPosition : 'bottom right', +fullExpandOpacity : 1, +showCredits : true, // you can set this to false if you want +creditsHref : 'http://highslide.com/', +creditsTarget : '_self', +enableKeyListener : true, +openerTagNames : ['a'], // Add more to allow slideshow indexing + +allowWidthReduction : false, +allowHeightReduction : true, +preserveContent : true, // Preserve changes made to the content and position of HTML popups. +objectLoadTime : 'before', // Load iframes 'before' or 'after' expansion. +cacheAjax : true, // Cache ajax popups for instant display. Can be overridden for each popup. +dragByHeading: true, +minWidth: 200, +minHeight: 200, +allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight +outlineType : 'drop-shadow', // set null to disable outlines +skin : { + contentWrapper: + '
'+ + '
'+ + '' +}, +// END OF YOUR SETTINGS + + +// declare internal properties +preloadTheseImages : [], +continuePreloading: true, +expanders : [], +overrides : [ + 'allowSizeReduction', + 'useBox', + 'outlineType', + 'outlineWhileAnimating', + 'captionId', + 'captionText', + 'captionEval', + 'captionOverlay', + 'headingId', + 'headingText', + 'headingEval', + 'headingOverlay', + 'creditsPosition', + 'dragByHeading', + + 'width', + 'height', + + 'contentId', + 'allowWidthReduction', + 'allowHeightReduction', + 'preserveContent', + 'maincontentId', + 'maincontentText', + 'maincontentEval', + 'objectType', + 'cacheAjax', + 'objectWidth', + 'objectHeight', + 'objectLoadTime', + 'swfOptions', + 'wrapperClassName', + 'minWidth', + 'minHeight', + 'maxWidth', + 'maxHeight', + 'pageOrigin', + 'slideshowGroup', + 'easing', + 'easingClose', + 'fadeInOut', + 'src' +], +overlays : [], +idCounter : 0, +oPos : { + x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], + y: ['above', 'top', 'middle', 'bottom', 'below'] +}, +mouse: {}, +headingOverlay: {}, +captionOverlay: {}, +swfOptions: { flashvars: {}, params: {}, attributes: {} }, +timers : [], + +pendingOutlines : {}, +sleeping : [], +preloadTheseAjax : [], +cacheBindings : [], +cachedGets : {}, +clones : {}, +onReady: [], +uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : + parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), +ie : (document.all && !window.opera), +//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant? +safari : /Safari/.test(navigator.userAgent), +geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), + +$ : function (id) { + if (id) return document.getElementById(id); +}, + +push : function (arr, val) { + arr[arr.length] = val; +}, + +createElement : function (tag, attribs, styles, parent, nopad) { + var el = document.createElement(tag); + if (attribs) hs.extend(el, attribs); + if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); + if (styles) hs.setStyles(el, styles); + if (parent) parent.appendChild(el); + return el; +}, + +extend : function (el, attribs) { + for (var x in attribs) el[x] = attribs[x]; + return el; +}, + +setStyles : function (el, styles) { + for (var x in styles) { + if (hs.ieLt9 && x == 'opacity') { + if (styles[x] > 0.99) el.style.removeAttribute('filter'); + else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; + } + else el.style[x] = styles[x]; + } +}, +animate: function(el, prop, opt) { + var start, + end, + unit; + if (typeof opt != 'object' || opt === null) { + var args = arguments; + opt = { + duration: args[2], + easing: args[3], + complete: args[4] + }; + } + if (typeof opt.duration != 'number') opt.duration = 250; + opt.easing = Math[opt.easing] || Math.easeInQuad; + opt.curAnim = hs.extend({}, prop); + for (var name in prop) { + var e = new hs.fx(el, opt , name ); + + start = parseFloat(hs.css(el, name)) || 0; + end = parseFloat(prop[name]); + unit = name != 'opacity' ? 'px' : ''; + + e.custom( start, end, unit ); + } +}, +css: function(el, prop) { + if (el.style[prop]) { + return el.style[prop]; + } else if (document.defaultView) { + return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); + + } else { + if (prop == 'opacity') prop = 'filter'; + var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; + if (prop == 'filter') + val = val.replace(/alpha\(opacity=([0-9]+)\)/, + function (a, b) { return b / 100 }); + return val === '' ? 1 : val; + } +}, + +getPageSize : function () { + var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' + ? d.documentElement : d.body, + ieLt9 = hs.ie && (hs.uaVersion < 9 || typeof pageXOffset == 'undefined'); + + var width = ieLt9 ? iebody.clientWidth : + (d.documentElement.clientWidth || self.innerWidth), + height = ieLt9 ? iebody.clientHeight : self.innerHeight; + hs.page = { + width: width, + height: height, + scrollLeft: ieLt9 ? iebody.scrollLeft : pageXOffset, + scrollTop: ieLt9 ? iebody.scrollTop : pageYOffset + }; + return hs.page; +}, + +getPosition : function(el) { + var p = { x: el.offsetLeft, y: el.offsetTop }; + while (el.offsetParent) { + el = el.offsetParent; + p.x += el.offsetLeft; + p.y += el.offsetTop; + if (el != document.body && el != document.documentElement) { + p.x -= el.scrollLeft; + p.y -= el.scrollTop; + } + } + return p; +}, + +expand : function(a, params, custom, type) { + if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); + if (typeof a.getParams == 'function') return params; + if (type == 'html') { + for (var i = 0; i < hs.sleeping.length; i++) { + if (hs.sleeping[i] && hs.sleeping[i].a == a) { + hs.sleeping[i].awake(); + hs.sleeping[i] = null; + return false; + } + } + hs.hasHtmlExpanders = true; + } + try { + new hs.Expander(a, params, custom, type); + return false; + } catch (e) { return true; } +}, + +htmlExpand : function(a, params, custom) { + return hs.expand(a, params, custom, 'html'); +}, + +getSelfRendered : function() { + return hs.createElement('div', { + className: 'highslide-html-content', + innerHTML: hs.replaceLang(hs.skin.contentWrapper) + }); +}, +getElementByClass : function (el, tagName, className) { + var els = el.getElementsByTagName(tagName); + for (var i = 0; i < els.length; i++) { + if ((new RegExp(className)).test(els[i].className)) { + return els[i]; + } + } + return null; +}, +replaceLang : function(s) { + s = s.replace(/\s/g, ' '); + var re = /{hs\.lang\.([^}]+)\}/g, + matches = s.match(re), + lang; + if (matches) for (var i = 0; i < matches.length; i++) { + lang = matches[i].replace(re, "$1"); + if (typeof hs.lang[lang] != 'undefined') s = s.replace(matches[i], hs.lang[lang]); + } + return s; +}, + + +getCacheBinding : function (a) { + for (var i = 0; i < hs.cacheBindings.length; i++) { + if (hs.cacheBindings[i][0] == a) { + var c = hs.cacheBindings[i][1]; + hs.cacheBindings[i][1] = c.cloneNode(1); + return c; + } + } + return null; +}, + +preloadAjax : function (e) { + var arr = hs.getAnchors(); + for (var i = 0; i < arr.htmls.length; i++) { + var a = arr.htmls[i]; + if (hs.getParam(a, 'objectType') == 'ajax' && hs.getParam(a, 'cacheAjax')) + hs.push(hs.preloadTheseAjax, a); + } + + hs.preloadAjaxElement(0); +}, + +preloadAjaxElement : function (i) { + if (!hs.preloadTheseAjax[i]) return; + var a = hs.preloadTheseAjax[i]; + var cache = hs.getNode(hs.getParam(a, 'contentId')); + if (!cache) cache = hs.getSelfRendered(); + var ajax = new hs.Ajax(a, cache, 1); + ajax.onError = function () { }; + ajax.onLoad = function () { + hs.push(hs.cacheBindings, [a, cache]); + hs.preloadAjaxElement(i + 1); + }; + ajax.run(); +}, + +focusTopmost : function() { + var topZ = 0, + topmostKey = -1, + expanders = hs.expanders, + exp, + zIndex; + for (var i = 0; i < expanders.length; i++) { + exp = expanders[i]; + if (exp) { + zIndex = exp.wrapper.style.zIndex; + if (zIndex && zIndex > topZ) { + topZ = zIndex; + topmostKey = i; + } + } + } + if (topmostKey == -1) hs.focusKey = -1; + else expanders[topmostKey].focus(); +}, + +getParam : function (a, param) { + a.getParams = a.onclick; + var p = a.getParams ? a.getParams() : null; + a.getParams = null; + + return (p && typeof p[param] != 'undefined') ? p[param] : + (typeof hs[param] != 'undefined' ? hs[param] : null); +}, + +getSrc : function (a) { + var src = hs.getParam(a, 'src'); + if (src) return src; + return a.href; +}, + +getNode : function (id) { + var node = hs.$(id), clone = hs.clones[id], a = {}; + if (!node && !clone) return null; + if (!clone) { + clone = node.cloneNode(true); + clone.id = ''; + hs.clones[id] = clone; + return node; + } else { + return clone.cloneNode(true); + } +}, + +discardElement : function(d) { + if (d) hs.garbageBin.appendChild(d); + hs.garbageBin.innerHTML = ''; +}, +transit : function (adj, exp) { + var last = exp || hs.getExpander(); + exp = last; + if (hs.upcoming) return false; + else hs.last = last; + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + try { + hs.upcoming = adj; + adj.onclick(); + } catch (e){ + hs.last = hs.upcoming = null; + } + try { + exp.close(); + } catch (e) {} + return false; +}, + +previousOrNext : function (el, op) { + var exp = hs.getExpander(el); + if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp); + else return false; +}, + +previous : function (el) { + return hs.previousOrNext(el, -1); +}, + +next : function (el) { + return hs.previousOrNext(el, 1); +}, + +keyHandler : function(e) { + if (!e) e = window.event; + if (!e.target) e.target = e.srcElement; // ie + if (typeof e.target.form != 'undefined') return true; // form element has focus + var exp = hs.getExpander(); + + var op = null; + switch (e.keyCode) { + case 70: // f + if (exp) exp.doFullExpand(); + return true; + case 32: // Space + case 34: // Page Down + case 39: // Arrow right + case 40: // Arrow down + op = 1; + break; + case 8: // Backspace + case 33: // Page Up + case 37: // Arrow left + case 38: // Arrow up + op = -1; + break; + case 27: // Escape + case 13: // Enter + op = 0; + } + if (op !== null) {hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + if (!hs.enableKeyListener) return true; + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + if (exp) { + if (op == 0) { + exp.close(); + } else { + hs.previousOrNext(exp.key, op); + } + return false; + } + } + return true; +}, + + +registerOverlay : function (overlay) { + hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); +}, + + +getWrapperKey : function (element, expOnly) { + var el, re = /^highslide-wrapper-([0-9]+)$/; + // 1. look in open expanders + el = element; + while (el.parentNode) { + if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); + el = el.parentNode; + } + // 2. look in thumbnail + if (!expOnly) { + el = element; + while (el.parentNode) { + if (el.tagName && hs.isHsAnchor(el)) { + for (var key = 0; key < hs.expanders.length; key++) { + var exp = hs.expanders[key]; + if (exp && exp.a == el) return key; + } + } + el = el.parentNode; + } + } + return null; +}, + +getExpander : function (el, expOnly) { + if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null; + if (typeof el == 'number') return hs.expanders[el] || null; + if (typeof el == 'string') el = hs.$(el); + return hs.expanders[hs.getWrapperKey(el, expOnly)] || null; +}, + +isHsAnchor : function (a) { + return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/)); +}, + +reOrder : function () { + for (var i = 0; i < hs.expanders.length; i++) + if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost(); +}, + +mouseClickHandler : function(e) +{ + if (!e) e = window.event; + if (e.button > 1) return true; + if (!e.target) e.target = e.srcElement; + + var el = e.target; + while (el.parentNode + && !(/highslide-(image|move|html|resize)/.test(el.className))) + { + el = el.parentNode; + } + var exp = hs.getExpander(el); + if (exp && (exp.isClosing || !exp.isExpanded)) return true; + + if (exp && e.type == 'mousedown') { + if (e.target.form) return true; + var match = el.className.match(/highslide-(image|move|resize)/); + if (match) { + hs.dragArgs = { + exp: exp , + type: match[1], + left: exp.x.pos, + width: exp.x.size, + top: exp.y.pos, + height: exp.y.size, + clickX: e.clientX, + clickY: e.clientY + }; + + + hs.addEventListener(document, 'mousemove', hs.dragHandler); + if (e.preventDefault) e.preventDefault(); // FF + + if (/highslide-(image|html)-blur/.test(exp.content.className)) { + exp.focus(); + hs.hasFocused = true; + } + return false; + } + else if (/highslide-html/.test(el.className) && hs.focusKey != exp.key) { + exp.focus(); + exp.doShowHide('hidden'); + } + } else if (e.type == 'mouseup') { + + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + if (hs.dragArgs) { + if (hs.styleRestoreCursor && hs.dragArgs.type == 'image') + hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor; + var hasDragged = hs.dragArgs.hasDragged; + + if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) { + exp.close(); + } + else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) { + hs.dragArgs.exp.doShowHide('hidden'); + } + + if (hs.dragArgs.exp.releaseMask) + hs.dragArgs.exp.releaseMask.style.display = 'none'; + hs.hasFocused = false; + hs.dragArgs = null; + + } else if (/highslide-image-blur/.test(el.className)) { + el.style.cursor = hs.styleRestoreCursor; + } + } + return false; +}, + +dragHandler : function(e) +{ + if (!hs.dragArgs) return true; + if (!e) e = window.event; + var a = hs.dragArgs, exp = a.exp; + if (exp.iframe) { + if (!exp.releaseMask) exp.releaseMask = hs.createElement('div', null, + { position: 'absolute', width: exp.x.size+'px', height: exp.y.size+'px', + left: exp.x.cb+'px', top: exp.y.cb+'px', zIndex: 4, background: (hs.ieLt9 ? 'white' : 'none'), + opacity: 0.01 }, + exp.wrapper, true); + if (exp.releaseMask.style.display == 'none') + exp.releaseMask.style.display = ''; + } + + a.dX = e.clientX - a.clickX; + a.dY = e.clientY - a.clickY; + + var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); + if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) + || (distance > (hs.dragSensitivity || 5)); + + if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { + + if (a.type == 'resize') exp.resize(a); + else { + exp.moveTo(a.left + a.dX, a.top + a.dY); + if (a.type == 'image') exp.content.style.cursor = 'move'; + } + } + return false; +}, + +wrapperMouseHandler : function (e) { + try { + if (!e) e = window.event; + var over = /mouseover/i.test(e.type); + if (!e.target) e.target = e.srcElement; // ie + if (!e.relatedTarget) e.relatedTarget = + over ? e.fromElement : e.toElement; // ie + var exp = hs.getExpander(e.target); + if (!exp.isExpanded) return; + if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp + || hs.dragArgs) return; + for (var i = 0; i < exp.overlays.length; i++) (function() { + var o = hs.$('hsId'+ exp.overlays[i]); + if (o && o.hideOnMouseOut) { + if (over) hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur); + } + })(); + } catch (e) {} +}, +addEventListener : function (el, event, func) { + if (el == document && event == 'ready') { + hs.push(hs.onReady, func); + } + try { + el.addEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + el.attachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = func; + } + } +}, + +removeEventListener : function (el, event, func) { + try { + el.removeEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = null; + } + } +}, + +preloadFullImage : function (i) { + if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') { + var img = document.createElement('img'); + img.onload = function() { + img = null; + hs.preloadFullImage(i + 1); + }; + img.src = hs.preloadTheseImages[i]; + } +}, +preloadImages : function (number) { + if (number && typeof number != 'object') hs.numberOfImagesToPreload = number; + + var arr = hs.getAnchors(); + for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) { + hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i])); + } + + // preload outlines + if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} ); + else + + hs.preloadFullImage(0); + + // preload cursor + if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor }); +}, + + +init : function () { + if (!hs.container) { + + hs.ieLt7 = hs.ie && hs.uaVersion < 7; + hs.ieLt9 = hs.ie && hs.uaVersion < 9; + + hs.getPageSize(); + hs.ie6SSL = hs.ieLt7 && location.protocol == 'https:'; + for (var x in hs.langDefaults) { + if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x]; + else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined') + hs.lang[x] = hs.langDefaults[x]; + } + + hs.container = hs.createElement('div', { + className: 'highslide-container' + }, { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + zIndex: hs.zIndexCounter, + direction: 'ltr' + }, + document.body, + true + ); + hs.loading = hs.createElement('a', { + className: 'highslide-loading', + title: hs.lang.loadingTitle, + innerHTML: hs.lang.loadingText, + href: 'javascript:;' + }, { + position: 'absolute', + top: '-9999px', + opacity: hs.loadingOpacity, + zIndex: 1 + }, hs.container + ); + hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container); + hs.clearing = hs.createElement('div', null, + { clear: 'both', paddingTop: '1px' }, null, true); + + // http://www.robertpenner.com/easing/ + Math.linearTween = function (t, b, c, d) { + return c*t/d + b; + }; + Math.easeInQuad = function (t, b, c, d) { + return c*(t/=d)*t + b; + }; + + hs.hideSelects = hs.ieLt7; + hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE' + || (hs.ieLt7 && hs.uaVersion < 5.5)); + } +}, +ready : function() { + if (hs.isReady) return; + hs.isReady = true; + for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i](); +}, + +updateAnchors : function() { + var el, els, all = [], images = [], htmls = [],groups = {}, re; + + for (var i = 0; i < hs.openerTagNames.length; i++) { + els = document.getElementsByTagName(hs.openerTagNames[i]); + for (var j = 0; j < els.length; j++) { + el = els[j]; + re = hs.isHsAnchor(el); + if (re) { + hs.push(all, el); + if (re[0] == 'hs.expand') hs.push(images, el); + else if (re[0] == 'hs.htmlExpand') hs.push(htmls, el); + var g = hs.getParam(el, 'slideshowGroup') || 'none'; + if (!groups[g]) groups[g] = []; + hs.push(groups[g], el); + } + } + } + hs.anchors = { all: all, groups: groups, images: images, htmls: htmls }; + return hs.anchors; + +}, + +getAnchors : function() { + return hs.anchors || hs.updateAnchors(); +}, + + +close : function(el) { + var exp = hs.getExpander(el); + if (exp) exp.close(); + return false; +} +}; // end hs object +hs.fx = function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if (!options.orig) options.orig = {}; +}; +hs.fx.prototype = { + update: function(){ + (hs.fx.step[this.prop] || hs.fx.step._default)(this); + + if (this.options.step) + this.options.step.call(this.elem, this.now, this); + + }, + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit;// || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + if ( t() && hs.timers.push(t) == 1 ) { + hs.timerId = setInterval(function(){ + var timers = hs.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval(hs.timerId); + } + }, 13); + } + }, + step: function(gotoEnd){ + var t = (new Date()).getTime(); + if ( gotoEnd || t >= this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if (this.options.complete) this.options.complete.call(this.elem); + } + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + this.pos = this.options.easing(n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + this.update(); + } + return true; + } + +}; + +hs.extend( hs.fx, { + step: { + + opacity: function(fx){ + hs.setStyles(fx.elem, { opacity: fx.now }); + }, + + _default: function(fx){ + try { + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; + } catch (e) {} + } + } +}); + +hs.Outline = function (outlineType, onLoad) { + this.onLoad = onLoad; + this.outlineType = outlineType; + var v = hs.uaVersion, tr; + + this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7; + if (!outlineType) { + if (onLoad) onLoad(); + return; + } + + hs.init(); + this.table = hs.createElement( + 'table', { + cellSpacing: 0 + }, { + visibility: 'hidden', + position: 'absolute', + borderCollapse: 'collapse', + width: 0 + }, + hs.container, + true + ); + var tbody = hs.createElement('tbody', null, null, this.table, 1); + + this.td = []; + for (var i = 0; i <= 8; i++) { + if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true); + this.td[i] = hs.createElement('td', null, null, tr, true); + var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' }; + hs.setStyles(this.td[i], style); + } + this.td[4].className = outlineType +' highslide-outline'; + + this.preloadGraphic(); +}; + +hs.Outline.prototype = { +preloadGraphic : function () { + var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png"; + + var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null; + this.graphic = hs.createElement('img', null, { position: 'absolute', + top: '-9999px' }, appendTo, true); // for onload trigger + + var pThis = this; + this.graphic.onload = function() { pThis.onGraphicLoad(); }; + + this.graphic.src = src; +}, + +onGraphicLoad : function () { + var o = this.offset = this.graphic.width / 4, + pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]], + dim = { height: (2*o) +'px', width: (2*o) +'px' }; + for (var i = 0; i <= 8; i++) { + if (pos[i]) { + if (this.hasAlphaImageLoader) { + var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px'; + var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true); + hs.createElement ('div', null, { + filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", + position: 'absolute', + width: w, + height: this.graphic.height +'px', + left: (pos[i][0]*o)+'px', + top: (pos[i][1]*o)+'px' + }, + div, + true); + } else { + hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'}); + } + + if (window.opera && (i == 3 || i ==5)) + hs.createElement('div', null, dim, this.td[i], true); + + hs.setStyles (this.td[i], dim); + } + } + this.graphic = null; + if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy(); + hs.pendingOutlines[this.outlineType] = this; + if (this.onLoad) this.onLoad(); +}, + +setPosition : function (pos, offset, vis, dur, easing) { + var exp = this.exp, + stl = exp.wrapper.style, + offset = offset || 0, + pos = pos || { + x: exp.x.pos + offset, + y: exp.y.pos + offset, + w: exp.x.get('wsize') - 2 * offset, + h: exp.y.get('wsize') - 2 * offset + }; + if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset) + ? 'visible' : 'hidden'; + hs.setStyles(this.table, { + left: (pos.x - this.offset) +'px', + top: (pos.y - this.offset) +'px', + width: (pos.w + 2 * this.offset) +'px' + }); + + pos.w -= 2 * this.offset; + pos.h -= 2 * this.offset; + hs.setStyles (this.td[4], { + width: pos.w >= 0 ? pos.w +'px' : 0, + height: pos.h >= 0 ? pos.h +'px' : 0 + }); + if (this.hasAlphaImageLoader) this.td[3].style.height + = this.td[5].style.height = this.td[4].style.height; + +}, + +destroy : function(hide) { + if (hide) this.table.style.visibility = 'hidden'; + else hs.discardElement(this.table); +} +}; + +hs.Dimension = function(exp, dim) { + this.exp = exp; + this.dim = dim; + this.ucwh = dim == 'x' ? 'Width' : 'Height'; + this.wh = this.ucwh.toLowerCase(); + this.uclt = dim == 'x' ? 'Left' : 'Top'; + this.lt = this.uclt.toLowerCase(); + this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; + this.rb = this.ucrb.toLowerCase(); + this.p1 = this.p2 = 0; +}; +hs.Dimension.prototype = { +get : function(key) { + switch (key) { + case 'loadingPos': + return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; + case 'wsize': + return this.size + 2 * this.cb + this.p1 + this.p2; + case 'fitsize': + return this.clientSize - this.marginMin - this.marginMax; + case 'maxsize': + return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; + case 'opos': + return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); + case 'osize': + return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); + case 'imgPad': + return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; + + } +}, +calcBorders: function() { + // correct for borders + this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; + + this.marginMax = hs['margin'+ this.ucrb]; +}, +calcThumb: function() { + this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : + this.exp.el['offset'+ this.ucwh]; + this.tpos = this.exp.tpos[this.dim]; + this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; + if (this.tpos == 0 || this.tpos == -1) { + this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt]; + }; +}, +calcExpanded: function() { + var exp = this.exp; + this.justify = 'auto'; + + + // size and position + this.pos = this.tpos - this.cb + this.tb; + + if (this.maxHeight && this.dim == 'x') + exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full); + + this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); + this.minSize = exp.allowSizeReduction ? + Math.min(exp['min'+ this.ucwh], this.full) :this.full; + if (exp.isImage && exp.useBox) { + this.size = exp[this.wh]; + this.imgSize = this.full; + } + if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth; + this.marginMin = hs['margin'+ this.uclt]; + this.scroll = hs.page['scroll'+ this.uclt]; + this.clientSize = hs.page[this.wh]; +}, +setSize: function(i) { + var exp = this.exp; + if (exp.isImage && (exp.useBox || hs.padToMinWidth)) { + this.imgSize = i; + this.size = Math.max(this.size, this.imgSize); + exp.content.style[this.lt] = this.get('imgPad')+'px'; + } else + this.size = i; + + exp.content.style[this.wh] = i +'px'; + exp.wrapper.style[this.wh] = this.get('wsize') +'px'; + if (exp.outline) exp.outline.setPosition(); + if (exp.releaseMask) exp.releaseMask.style[this.wh] = i +'px'; + if (this.dim == 'y' && exp.iDoc && exp.body.style.height != 'auto') try { + exp.iDoc.body.style.overflow = 'auto'; + } catch (e) {} + if (exp.isHtml) { + var d = exp.scrollerDiv; + if (this.sizeDiff === undefined) + this.sizeDiff = exp.innerContent['offset'+ this.ucwh] - d['offset'+ this.ucwh]; + d.style[this.wh] = (this.size - this.sizeDiff) +'px'; + + if (this.dim == 'x') exp.mediumContent.style.width = 'auto'; + if (exp.body) exp.body.style[this.wh] = 'auto'; + } + if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); +}, +setPos: function(i) { + this.pos = i; + this.exp.wrapper.style[this.lt] = i +'px'; + + if (this.exp.outline) this.exp.outline.setPosition(); + +} +}; + +hs.Expander = function(a, params, custom, contentType) { + if (document.readyState && hs.ie && !hs.isReady) { + hs.addEventListener(document, 'ready', function() { + new hs.Expander(a, params, custom, contentType); + }); + return; + } + this.a = a; + this.custom = custom; + this.contentType = contentType || 'image'; + this.isHtml = (contentType == 'html'); + this.isImage = !this.isHtml; + + hs.continuePreloading = false; + this.overlays = []; + hs.init(); + var key = this.key = hs.expanders.length; + // override inline parameters + for (var i = 0; i < hs.overrides.length; i++) { + var name = hs.overrides[i]; + this[name] = params && typeof params[name] != 'undefined' ? + params[name] : hs[name]; + } + if (!this.src) this.src = a.href; + + // get thumb + var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a; + el = this.thumb = el.getElementsByTagName('img')[0] || el; + this.thumbsUserSetId = el.id || a.id; + + // check if already open + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].a == a) { + hs.expanders[i].focus(); + return false; + } + } + + // cancel other + if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) { + hs.expanders[i].cancelLoading(); + } + } + hs.expanders[key] = this; + if (!hs.allowMultipleInstances && !hs.upcoming) { + if (hs.expanders[key-1]) hs.expanders[key-1].close(); + if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey]) + hs.expanders[hs.focusKey].close(); + } + + // initiate metrics + this.el = el; + this.tpos = this.pageOrigin || hs.getPosition(el); + hs.getPageSize(); + var x = this.x = new hs.Dimension(this, 'x'); + x.calcThumb(); + var y = this.y = new hs.Dimension(this, 'y'); + y.calcThumb(); + this.wrapper = hs.createElement( + 'div', { + id: 'highslide-wrapper-'+ this.key, + className: 'highslide-wrapper '+ this.wrapperClassName + }, { + visibility: 'hidden', + position: 'absolute', + zIndex: hs.zIndexCounter += 2 + }, null, true ); + + this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler; + if (this.contentType == 'image' && this.outlineWhileAnimating == 2) + this.outlineWhileAnimating = 0; + + // get the outline + if (!this.outlineType) { + this[this.contentType +'Create'](); + + } else if (hs.pendingOutlines[this.outlineType]) { + this.connectOutline(); + this[this.contentType +'Create'](); + + } else { + this.showLoading(); + var exp = this; + new hs.Outline(this.outlineType, + function () { + exp.connectOutline(); + exp[exp.contentType +'Create'](); + } + ); + } + return true; +}; + +hs.Expander.prototype = { +error : function(e) { + if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message); + else window.location.href = this.src; +}, + +connectOutline : function() { + var outline = this.outline = hs.pendingOutlines[this.outlineType]; + outline.exp = this; + outline.table.style.zIndex = this.wrapper.style.zIndex - 1; + hs.pendingOutlines[this.outlineType] = null; +}, + +showLoading : function() { + if (this.onLoadStarted || this.loading) return; + + this.loading = hs.loading; + var exp = this; + this.loading.onclick = function() { + exp.cancelLoading(); + }; + var exp = this, + l = this.x.get('loadingPos') +'px', + t = this.y.get('loadingPos') +'px'; + setTimeout(function () { + if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })} + , 100); +}, + +imageCreate : function() { + var exp = this; + + var img = document.createElement('img'); + this.content = img; + img.onload = function () { + if (hs.expanders[exp.key]) exp.contentLoaded(); + }; + if (hs.blockRightClick) img.oncontextmenu = function() { return false; }; + img.className = 'highslide-image'; + hs.setStyles(img, { + visibility: 'hidden', + display: 'block', + position: 'absolute', + maxWidth: '9999px', + zIndex: 3 + }); + img.title = hs.lang.restoreTitle; + if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img); + if (hs.ie && hs.flushImgSize) img.src = null; + img.src = this.src; + + this.showLoading(); +}, + +htmlCreate : function () { + + this.content = hs.getCacheBinding(this.a); + if (!this.content) + this.content = hs.getNode(this.contentId); + if (!this.content) + this.content = hs.getSelfRendered(); + this.getInline(['maincontent']); + if (this.maincontent) { + var body = hs.getElementByClass(this.content, 'div', 'highslide-body'); + if (body) body.appendChild(this.maincontent); + this.maincontent.style.display = 'block'; + } + + var innerContent = this.innerContent = this.content; + + if (/(swf|iframe)/.test(this.objectType)) this.setObjContainerSize(innerContent); + + // the content tree + hs.container.appendChild(this.wrapper); + hs.setStyles( this.wrapper, { + position: 'static', + padding: '0 '+ hs.marginRight +'px 0 '+ hs.marginLeft +'px' + }); + this.content = hs.createElement( + 'div', { + className: 'highslide-html' + }, { + position: 'relative', + zIndex: 3, + height: 0, + overflow: 'hidden' + }, + this.wrapper + ); + this.mediumContent = hs.createElement('div', null, null, this.content, 1); + this.mediumContent.appendChild(innerContent); + + hs.setStyles (innerContent, { + position: 'relative', + display: 'block', + direction: hs.lang.cssDirection || '' + }); + if (this.width) innerContent.style.width = this.width +'px'; + if (this.height) hs.setStyles(innerContent, { + height: this.height +'px', + overflow: 'hidden' + }); + if (innerContent.offsetWidth < this.minWidth) + innerContent.style.width = this.minWidth +'px'; + + + + if (this.objectType == 'ajax' && !hs.getCacheBinding(this.a)) { + this.showLoading(); + var exp = this; + var ajax = new hs.Ajax(this.a, innerContent); + ajax.src = this.src; + ajax.onLoad = function () { if (hs.expanders[exp.key]) exp.contentLoaded(); }; + ajax.onError = function () { location.href = exp.src; }; + ajax.run(); + } + else + + if (this.objectType == 'iframe' && this.objectLoadTime == 'before') { + this.writeExtendedContent(); + } + else + this.contentLoaded(); +}, + +contentLoaded : function() { + try { + if (!this.content) return; + this.content.onload = null; + if (this.onLoadStarted) return; + else this.onLoadStarted = true; + + var x = this.x, y = this.y; + + if (this.loading) { + hs.setStyles(this.loading, { top: '-9999px' }); + this.loading = null; + } + if (this.isImage) { + x.full = this.content.width; + y.full = this.content.height; + + hs.setStyles(this.content, { + width: x.t +'px', + height: y.t +'px' + }); + this.wrapper.appendChild(this.content); + hs.container.appendChild(this.wrapper); + } else if (this.htmlGetSize) this.htmlGetSize(); + + x.calcBorders(); + y.calcBorders(); + + hs.setStyles (this.wrapper, { + left: (x.tpos + x.tb - x.cb) +'px', + top: (y.tpos + x.tb - y.cb) +'px' + }); + this.getOverlays(); + + var ratio = x.full / y.full; + x.calcExpanded(); + this.justify(x); + + y.calcExpanded(); + this.justify(y); + if (this.isHtml) this.htmlSizeOperations(); + if (this.overlayBox) this.sizeOverlayBox(0, 1); + + + if (this.allowSizeReduction) { + if (this.isImage) + this.correctRatio(ratio); + else this.fitOverlayBox(); + if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) { + this.createFullExpand(); + if (this.overlays.length == 1) this.sizeOverlayBox(); + } + } + this.show(); + + } catch (e) { + this.error(e); + } +}, + + +setObjContainerSize : function(parent, auto) { + var c = hs.getElementByClass(parent, 'DIV', 'highslide-body'); + if (/(iframe|swf)/.test(this.objectType)) { + if (this.objectWidth) c.style.width = this.objectWidth +'px'; + if (this.objectHeight) c.style.height = this.objectHeight +'px'; + } +}, + +writeExtendedContent : function () { + if (this.hasExtendedContent) return; + var exp = this; + this.body = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body'); + if (this.objectType == 'iframe') { + this.showLoading(); + var ruler = hs.clearing.cloneNode(1); + this.body.appendChild(ruler); + this.newWidth = this.innerContent.offsetWidth; + if (!this.objectWidth) this.objectWidth = ruler.offsetWidth; + var hDiff = this.innerContent.offsetHeight - this.body.offsetHeight, + h = this.objectHeight || hs.page.height - hDiff - hs.marginTop - hs.marginBottom, + onload = this.objectLoadTime == 'before' ? + ' onload="if (hs.expanders['+ this.key +']) hs.expanders['+ this.key +'].contentLoaded()" ' : ''; + this.body.innerHTML += ''; + this.ruler = this.body.getElementsByTagName('div')[0]; + this.iframe = this.body.getElementsByTagName('iframe')[0]; + + if (this.objectLoadTime == 'after') this.correctIframeSize(); + + } + if (this.objectType == 'swf') { + this.body.id = this.body.id || 'hs-flash-id-' + this.key; + var a = this.swfOptions; + if (!a.params) a.params = {}; + if (typeof a.params.wmode == 'undefined') a.params.wmode = 'transparent'; + if (swfobject) swfobject.embedSWF(this.src, this.body.id, this.objectWidth, this.objectHeight, + a.version || '7', a.expressInstallSwfurl, a.flashvars, a.params, a.attributes); + } + this.hasExtendedContent = true; +}, +htmlGetSize : function() { + if (this.iframe && !this.objectHeight) { // loadtime before + this.iframe.style.height = this.body.style.height = this.getIframePageHeight() +'px'; + } + this.innerContent.appendChild(hs.clearing); + if (!this.x.full) this.x.full = this.innerContent.offsetWidth; + this.y.full = this.innerContent.offsetHeight; + this.innerContent.removeChild(hs.clearing); + if (hs.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) { // ie css bug + this.newHeight = parseInt(this.innerContent.currentStyle.height); + } + hs.setStyles( this.wrapper, { position: 'absolute', padding: '0'}); + hs.setStyles( this.content, { width: this.x.t +'px', height: this.y.t +'px'}); + +}, + +getIframePageHeight : function() { + var h; + try { + var doc = this.iDoc = this.iframe.contentDocument || this.iframe.contentWindow.document; + var clearing = doc.createElement('div'); + clearing.style.clear = 'both'; + doc.body.appendChild(clearing); + h = clearing.offsetTop; + if (hs.ie) h += parseInt(doc.body.currentStyle.marginTop) + + parseInt(doc.body.currentStyle.marginBottom) - 1; + } catch (e) { // other domain + h = 300; + } + return h; +}, +correctIframeSize : function () { + var wDiff = this.innerContent.offsetWidth - this.ruler.offsetWidth; + hs.discardElement(this.ruler); + if (wDiff < 0) wDiff = 0; + + var hDiff = this.innerContent.offsetHeight - this.iframe.offsetHeight; + if (this.iDoc && !this.objectHeight && !this.height && this.y.size == this.y.full) try { + this.iDoc.body.style.overflow = 'hidden'; + } catch (e) {} + hs.setStyles(this.iframe, { + width: Math.abs(this.x.size - wDiff) +'px', + height: Math.abs(this.y.size - hDiff) +'px' + }); + hs.setStyles(this.body, { + width: this.iframe.style.width, + height: this.iframe.style.height + }); + + this.scrollingContent = this.iframe; + this.scrollerDiv = this.scrollingContent; + +}, +htmlSizeOperations : function () { + + this.setObjContainerSize(this.innerContent); + + + if (this.objectType == 'swf' && this.objectLoadTime == 'before') this.writeExtendedContent(); + + // handle minimum size + if (this.x.size < this.x.full && !this.allowWidthReduction) this.x.size = this.x.full; + if (this.y.size < this.y.full && !this.allowHeightReduction) this.y.size = this.y.full; + this.scrollerDiv = this.innerContent; + hs.setStyles(this.mediumContent, { + position: 'relative', + width: this.x.size +'px' + }); + hs.setStyles(this.innerContent, { + border: 'none', + width: 'auto', + height: 'auto' + }); + var node = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body'); + if (node && !/(iframe|swf)/.test(this.objectType)) { + var cNode = node; // wrap to get true size + node = hs.createElement(cNode.nodeName, null, {overflow: 'hidden'}, null, true); + cNode.parentNode.insertBefore(node, cNode); + node.appendChild(hs.clearing); // IE6 + node.appendChild(cNode); + + var wDiff = this.innerContent.offsetWidth - node.offsetWidth; + var hDiff = this.innerContent.offsetHeight - node.offsetHeight; + node.removeChild(hs.clearing); + + var kdeBugCorr = hs.safari || navigator.vendor == 'KDE' ? 1 : 0; // KDE repainting bug + hs.setStyles(node, { + width: (this.x.size - wDiff - kdeBugCorr) +'px', + height: (this.y.size - hDiff) +'px', + overflow: 'auto', + position: 'relative' + } + ); + if (kdeBugCorr && cNode.offsetHeight > node.offsetHeight) { + node.style.width = (parseInt(node.style.width) + kdeBugCorr) + 'px'; + } + this.scrollingContent = node; + this.scrollerDiv = this.scrollingContent; + } + if (this.iframe && this.objectLoadTime == 'before') this.correctIframeSize(); + if (!this.scrollingContent && this.y.size < this.mediumContent.offsetHeight) this.scrollerDiv = this.content; + + if (this.scrollerDiv == this.content && !this.allowWidthReduction && !/(iframe|swf)/.test(this.objectType)) { + this.x.size += 17; // room for scrollbars + } + if (this.scrollerDiv && this.scrollerDiv.offsetHeight > this.scrollerDiv.parentNode.offsetHeight) { + setTimeout("try { hs.expanders["+ this.key +"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}", + hs.expandDuration); + } +}, + +justify : function (p, moveOnly) { + var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; + + var hasMovedMin = false; + + var allowReduce = p.exp.allowSizeReduction; + p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); + if (p.pos < p.scroll + p.marginMin) { + p.pos = p.scroll + p.marginMin; + hasMovedMin = true; + } + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) { + if (!moveOnly && hasMovedMin && allowReduce) { + p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize')); + } else if (p.get('wsize') < p.get('fitsize')) { + p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize'); + } else { // image larger than viewport + p.pos = p.scroll + p.marginMin; + if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); + } + } + + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + + + + if (p.pos < p.marginMin) { + var tmpMin = p.pos; + p.pos = p.marginMin; + + if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin); + + } +}, + +correctRatio : function(ratio) { + var x = this.x, + y = this.y, + changed = false, + xSize = Math.min(x.full, x.size), + ySize = Math.min(y.full, y.size), + useBox = (this.useBox || hs.padToMinWidth); + + if (xSize / ySize > ratio) { // width greater + xSize = ySize * ratio; + if (xSize < x.minSize) { // below minWidth + xSize = x.minSize; + ySize = xSize / ratio; + } + changed = true; + + } else if (xSize / ySize < ratio) { // height greater + ySize = xSize / ratio; + changed = true; + } + + if (hs.padToMinWidth && x.full < x.minSize) { + x.imgSize = x.full; + y.size = y.imgSize = y.full; + } else if (this.useBox) { + x.imgSize = xSize; + y.imgSize = ySize; + } else { + x.size = xSize; + y.size = ySize; + } + changed = this.fitOverlayBox(this.useBox ? null : ratio, changed); + if (useBox && y.size < y.imgSize) { + y.imgSize = y.size; + x.imgSize = y.size * ratio; + } + if (changed || useBox) { + x.pos = x.tpos - x.cb + x.tb; + x.minSize = x.size; + this.justify(x, true); + + y.pos = y.tpos - y.cb + y.tb; + y.minSize = y.size; + this.justify(y, true); + if (this.overlayBox) this.sizeOverlayBox(); + } + + +}, +fitOverlayBox : function(ratio, changed) { + var x = this.x, y = this.y; + if (this.overlayBox && (this.isImage || this.allowHeightReduction)) { + while (y.size > this.minHeight && x.size > this.minWidth + && y.get('wsize') > y.get('fitsize')) { + y.size -= 10; + if (ratio) x.size = y.size * ratio; + this.sizeOverlayBox(0, 1); + changed = true; + } + } + return changed; +}, + +show : function () { + var x = this.x, y = this.y; + this.doShowHide('hidden'); + + // Apply size change + this.changeSize( + 1, { + wrapper: { + width : x.get('wsize'), + height : y.get('wsize'), + left: x.pos, + top: y.pos + }, + content: { + left: x.p1 + x.get('imgPad'), + top: y.p1 + y.get('imgPad'), + width:x.imgSize ||x.size, + height:y.imgSize ||y.size + } + }, + hs.expandDuration + ); +}, + +changeSize : function(up, to, dur) { + + if (this.outline && !this.outlineWhileAnimating) { + if (up) this.outline.setPosition(); + else this.outline.destroy( + (this.isHtml && this.preserveContent)); + } + + + if (!up) this.destroyOverlays(); + + var exp = this, + x = exp.x, + y = exp.y, + easing = this.easing; + if (!up) easing = this.easingClose || easing; + var after = up ? + function() { + + if (exp.outline) exp.outline.table.style.visibility = "visible"; + setTimeout(function() { + exp.afterExpand(); + }, 50); + } : + function() { + exp.afterClose(); + }; + if (up) hs.setStyles( this.wrapper, { + width: x.t +'px', + height: y.t +'px' + }); + if (up && this.isHtml) { + hs.setStyles(this.wrapper, { + left: (x.tpos - x.cb + x.tb) +'px', + top: (y.tpos - y.cb + y.tb) +'px' + }); + } + if (this.fadeInOut) { + hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 }); + hs.extend(to.wrapper, { opacity: up }); + } + hs.animate( this.wrapper, to.wrapper, { + duration: dur, + easing: easing, + step: function(val, args) { + if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { + var fac = up ? args.pos : 1 - args.pos; + var pos = { + w: x.t + (x.get('wsize') - x.t) * fac, + h: y.t + (y.get('wsize') - y.t) * fac, + x: x.tpos + (x.pos - x.tpos) * fac, + y: y.tpos + (y.pos - y.tpos) * fac + }; + exp.outline.setPosition(pos, 0, 1); + } + if (exp.isHtml) { + if (args.prop == 'left') + exp.mediumContent.style.left = (x.pos - val) +'px'; + if (args.prop == 'top') + exp.mediumContent.style.top = (y.pos - val) +'px'; + } + } + }); + hs.animate( this.content, to.content, dur, easing, after); + if (up) { + this.wrapper.style.visibility = 'visible'; + this.content.style.visibility = 'visible'; + if (this.isHtml) this.innerContent.style.visibility = 'visible'; + this.a.className += ' highslide-active-anchor'; + } +}, + + + + +afterExpand : function() { + this.isExpanded = true; + this.focus(); + + if (this.isHtml && this.objectLoadTime == 'after') this.writeExtendedContent(); + if (this.iframe) { + try { + var exp = this, + doc = this.iframe.contentDocument || this.iframe.contentWindow.document; + hs.addEventListener(doc, 'mousedown', function () { + if (hs.focusKey != exp.key) exp.focus(); + }); + } catch(e) {} + if (hs.ie && typeof this.isClosing != 'boolean') // first open + this.iframe.style.width = (this.objectWidth - 1) +'px'; // hasLayout + } + if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; + this.prepareNextOutline(); + var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; + this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize') + && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize'); + if (this.overlayBox) this.showOverlays(); + +}, + + +prepareNextOutline : function() { + var key = this.key; + var outlineType = this.outlineType; + new hs.Outline(outlineType, + function () { try { hs.expanders[key].preloadNext(); } catch (e) {} }); +}, + + +preloadNext : function() { + var next = this.getAdjacentAnchor(1); + if (next && next.onclick.toString().match(/hs\.expand/)) + var img = hs.createElement('img', { src: hs.getSrc(next) }); +}, + + +getAdjacentAnchor : function(op) { + var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none']; + return (as && as[current + op]) || null; +}, + +getAnchorIndex : function() { + var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; + if (arr) for (var i = 0; i < arr.length; i++) { + if (arr[i] == this.a) return i; + } + return null; +}, + + +cancelLoading : function() { + hs.discardElement (this.wrapper); + hs.expanders[this.key] = null; + if (this.loading) hs.loading.style.left = '-9999px'; +}, + +writeCredits : function () { + this.credits = hs.createElement('a', { + href: hs.creditsHref, + target: hs.creditsTarget, + className: 'highslide-credits', + innerHTML: hs.lang.creditsText, + title: hs.lang.creditsTitle + }); + this.createOverlay({ + overlayId: this.credits, + position: this.creditsPosition || 'top left' + }); +}, + +getInline : function(types, addOverlay) { + for (var i = 0; i < types.length; i++) { + var type = types[i], s = null; + if (!this[type +'Id'] && this.thumbsUserSetId) + this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId; + if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']); + if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try { + s = eval(this[type +'Eval']); + } catch (e) {} + if (!this[type] && this[type +'Text']) { + s = this[type +'Text']; + } + if (!this[type] && !s) { + this[type] = hs.getNode(this.a['_'+ type + 'Id']); + if (!this[type]) { + var next = this.a.nextSibling; + while (next && !hs.isHsAnchor(next)) { + if ((new RegExp('highslide-'+ type)).test(next.className || null)) { + if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++; + this[type] = hs.getNode(next.id); + break; + } + next = next.nextSibling; + } + } + } + + if (!this[type] && s) this[type] = hs.createElement('div', + { className: 'highslide-'+ type, innerHTML: s } ); + + if (addOverlay && this[type]) { + var o = { position: (type == 'heading') ? 'above' : 'below' }; + for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x]; + o.overlayId = this[type]; + this.createOverlay(o); + } + } +}, + + +// on end move and resize +doShowHide : function(visibility) { + if (hs.hideSelects) this.showHideElements('SELECT', visibility); + if (hs.hideIframes) this.showHideElements('IFRAME', visibility); + if (hs.geckoMac) this.showHideElements('*', visibility); +}, +showHideElements : function (tagName, visibility) { + var els = document.getElementsByTagName(tagName); + var prop = tagName == '*' ? 'overflow' : 'visibility'; + for (var i = 0; i < els.length; i++) { + if (prop == 'visibility' || (document.defaultView.getComputedStyle( + els[i], "").getPropertyValue('overflow') == 'auto' + || els[i].getAttribute('hidden-by') != null)) { + var hiddenBy = els[i].getAttribute('hidden-by'); + if (visibility == 'visible' && hiddenBy) { + hiddenBy = hiddenBy.replace('['+ this.key +']', ''); + els[i].setAttribute('hidden-by', hiddenBy); + if (!hiddenBy) els[i].style[prop] = els[i].origProp; + } else if (visibility == 'hidden') { // hide if behind + var elPos = hs.getPosition(els[i]); + elPos.w = els[i].offsetWidth; + elPos.h = els[i].offsetHeight; + + + var clearsX = (elPos.x + elPos.w < this.x.get('opos') + || elPos.x > this.x.get('opos') + this.x.get('osize')); + var clearsY = (elPos.y + elPos.h < this.y.get('opos') + || elPos.y > this.y.get('opos') + this.y.get('osize')); + var wrapperKey = hs.getWrapperKey(els[i]); + if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image + if (!hiddenBy) { + els[i].setAttribute('hidden-by', '['+ this.key +']'); + els[i].origProp = els[i].style[prop]; + els[i].style[prop] = 'hidden'; + + } else if (hiddenBy.indexOf('['+ this.key +']') == -1) { + els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']'); + } + } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) + && wrapperKey != this.key) { // on move + els[i].setAttribute('hidden-by', ''); + els[i].style[prop] = els[i].origProp || ''; + } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) { + els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', '')); + } + + } + } + } +}, + +focus : function() { + this.wrapper.style.zIndex = hs.zIndexCounter += 2; + // blur others + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && i == hs.focusKey) { + var blurExp = hs.expanders[i]; + blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur'; + if (blurExp.isImage) { + blurExp.content.style.cursor = hs.ieLt7 ? 'hand' : 'pointer'; + blurExp.content.title = hs.lang.focusTitle; + } + } + } + + // focus this + if (this.outline) this.outline.table.style.zIndex + = this.wrapper.style.zIndex - 1; + this.content.className = 'highslide-'+ this.contentType; + if (this.isImage) { + this.content.title = hs.lang.restoreTitle; + + if (hs.restoreCursor) { + hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer'; + if (hs.ieLt7 && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand'; + this.content.style.cursor = hs.styleRestoreCursor; + } + } + hs.focusKey = this.key; + hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); +}, +moveTo: function(x, y) { + this.x.setPos(x); + this.y.setPos(y); +}, +resize : function (e) { + var w, h, r = e.width / e.height; + w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full)); + if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full; + h = this.isHtml ? e.height + e.dY : w / r; + if (h < Math.min(this.minHeight, this.y.full)) { + h = Math.min(this.minHeight, this.y.full); + if (this.isImage) w = h * r; + } + this.resizeTo(w, h); +}, +resizeTo: function(w, h) { + this.y.setSize(h); + this.x.setSize(w); + this.wrapper.style.height = this.y.get('wsize') +'px'; +}, + +close : function() { + if (this.isClosing || !this.isExpanded) return; + this.isClosing = true; + + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + + try { + if (this.isHtml) this.htmlPrepareClose(); + this.content.style.cursor = 'default'; + this.changeSize( + 0, { + wrapper: { + width : this.x.t, + height : this.y.t, + left: this.x.tpos - this.x.cb + this.x.tb, + top: this.y.tpos - this.y.cb + this.y.tb + }, + content: { + left: 0, + top: 0, + width: this.x.t, + height: this.y.t + } + }, hs.restoreDuration + ); + } catch (e) { this.afterClose(); } +}, + +htmlPrepareClose : function() { + if (hs.geckoMac) { // bad redraws + if (!hs.mask) hs.mask = hs.createElement('div', null, + { position: 'absolute' }, hs.container); + hs.setStyles(hs.mask, { width: this.x.size +'px', height: this.y.size +'px', + left: this.x.pos +'px', top: this.y.pos +'px', display: 'block' }); + } + if (this.objectType == 'swf') try { hs.$(this.body.id).StopPlay(); } catch (e) {} + + if (this.objectLoadTime == 'after' && !this.preserveContent) this.destroyObject(); + if (this.scrollerDiv && this.scrollerDiv != this.scrollingContent) + this.scrollerDiv.style.overflow = 'hidden'; +}, + +destroyObject : function () { + if (hs.ie && this.iframe) + try { this.iframe.contentWindow.document.body.innerHTML = ''; } catch (e) {} + if (this.objectType == 'swf') swfobject.removeSWF(this.body.id); + this.body.innerHTML = ''; +}, + +sleep : function() { + if (this.outline) this.outline.table.style.display = 'none'; + this.releaseMask = null; + this.wrapper.style.display = 'none'; + this.isExpanded = false; + hs.push(hs.sleeping, this); +}, + +awake : function() {try { + + hs.expanders[this.key] = this; + + if (!hs.allowMultipleInstances &&hs.focusKey != this.key) { + try { hs.expanders[hs.focusKey].close(); } catch (e){} + } + + var z = hs.zIndexCounter++, stl = { display: '', zIndex: z }; + hs.setStyles (this.wrapper, stl); + this.isClosing = false; + + var o = this.outline || 0; + if (o) { + if (!this.outlineWhileAnimating) stl.visibility = 'hidden'; + hs.setStyles (o.table, stl); + } + + this.show(); +} catch (e) {} + + +}, + +createOverlay : function (o) { + var el = o.overlayId; + if (typeof el == 'string') el = hs.getNode(el); + if (o.html) el = hs.createElement('div', { innerHTML: o.html }); + if (!el || typeof el == 'string') return; + el.style.display = 'block'; + this.genOverlayBox(); + var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto'; + if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px'; + var overlay = hs.createElement( + 'div', { + id: 'hsId'+ hs.idCounter++, + hsId: o.hsId + }, { + position: 'absolute', + visibility: 'hidden', + width: width, + direction: hs.lang.cssDirection || '', + opacity: 0 + },this.overlayBox, + true + ); + + overlay.appendChild(el); + hs.extend(overlay, { + opacity: 1, + offsetX: 0, + offsetY: 0, + dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250 + }); + hs.extend(overlay, o); + + + if (this.gotOverlays) { + this.positionOverlay(overlay); + if (!overlay.hideOnMouseOut || this.mouseIsOver) + hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur); + } + hs.push(this.overlays, hs.idCounter - 1); +}, +positionOverlay : function(overlay) { + var p = overlay.position || 'middle center', + offX = overlay.offsetX, + offY = overlay.offsetY; + if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay); + if (/left$/.test(p)) overlay.style.left = offX +'px'; + + if (/center$/.test(p)) hs.setStyles (overlay, { + left: '50%', + marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px' + }); + + if (/right$/.test(p)) overlay.style.right = - offX +'px'; + + if (/^leftpanel$/.test(p)) { + hs.setStyles(overlay, { + right: '100%', + marginRight: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p1 = overlay.offsetWidth; + + } else if (/^rightpanel$/.test(p)) { + hs.setStyles(overlay, { + left: '100%', + marginLeft: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p2 = overlay.offsetWidth; + } + + if (/^top/.test(p)) overlay.style.top = offY +'px'; + if (/^middle/.test(p)) hs.setStyles (overlay, { + top: '50%', + marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px' + }); + if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px'; + if (/^above$/.test(p)) { + hs.setStyles(overlay, { + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + bottom: '100%', + marginBottom: this.y.cb +'px', + width: 'auto' + }); + this.y.p1 = overlay.offsetHeight; + + } else if (/^below$/.test(p)) { + hs.setStyles(overlay, { + position: 'relative', + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + top: '100%', + marginTop: this.y.cb +'px', + width: 'auto' + }); + this.y.p2 = overlay.offsetHeight; + overlay.style.position = 'absolute'; + } +}, + +getOverlays : function() { + this.getInline(['heading', 'caption'], true); + if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move'; + if (hs.showCredits) this.writeCredits(); + for (var i = 0; i < hs.overlays.length; i++) { + var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup; + if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId) + || (sg && sg === this.slideshowGroup)) { + if (this.isImage || (this.isHtml && o.useOnHtml)) + this.createOverlay(o); + } + } + var os = []; + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (/panel$/.test(o.position)) this.positionOverlay(o); + else hs.push(os, o); + } + for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]); + this.gotOverlays = true; +}, +genOverlayBox : function() { + if (!this.overlayBox) this.overlayBox = hs.createElement ( + 'div', { + className: this.wrapperClassName + }, { + position : 'absolute', + width: (this.x.size || (this.useBox ? this.width : null) + || this.x.full) +'px', + height: (this.y.size || this.y.full) +'px', + visibility : 'hidden', + overflow : 'hidden', + zIndex : hs.ie ? 4 : 'auto' + }, + hs.container, + true + ); +}, +sizeOverlayBox : function(doWrapper, doPanels) { + var overlayBox = this.overlayBox, + x = this.x, + y = this.y; + hs.setStyles( overlayBox, { + width: x.size +'px', + height: y.size +'px' + }); + if (doWrapper || doPanels) { + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat'); + if (o && /^(above|below)$/.test(o.position)) { + if (ie6) { + o.style.width = (overlayBox.offsetWidth + 2 * x.cb + + x.p1 + x.p2) +'px'; + } + y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight; + } + if (o && ie6 && /^(left|right)panel$/.test(o.position)) { + o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px'; + } + } + } + if (doWrapper) { + hs.setStyles(this.content, { + top: y.p1 +'px' + }); + hs.setStyles(overlayBox, { + top: (y.p1 + y.cb) +'px' + }); + } +}, + +showOverlays : function() { + var b = this.overlayBox; + b.className = ''; + hs.setStyles(b, { + top: (this.y.p1 + this.y.cb) +'px', + left: (this.x.p1 + this.x.cb) +'px', + overflow : 'visible' + }); + if (hs.safari) b.style.visibility = 'visible'; + this.wrapper.appendChild (b); + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + o.style.zIndex = o.zIndex || 4; + if (!o.hideOnMouseOut || this.mouseIsOver) { + o.style.visibility = 'visible'; + hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: o.opacity }, o.dur); + } + } +}, + +destroyOverlays : function() { + if (!this.overlays.length) return; + if (this.isHtml && this.preserveContent) { + this.overlayBox.style.top = '-9999px'; + hs.container.appendChild(this.overlayBox); + } else + hs.discardElement(this.overlayBox); +}, + + + +createFullExpand : function () { + this.fullExpandLabel = hs.createElement( + 'a', { + href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();', + title: hs.lang.fullExpandTitle, + className: 'highslide-full-expand' + } + ); + + this.createOverlay({ + overlayId: this.fullExpandLabel, + position: hs.fullExpandPosition, + hideOnMouseOut: true, + opacity: hs.fullExpandOpacity + }); +}, + +doFullExpand : function () { + try { + if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel); + + this.focus(); + var xSize = this.x.size, + ySize = this.y.size; + this.resizeTo(this.x.full, this.y.full); + + var xpos = this.x.pos - (this.x.size - xSize) / 2; + if (xpos < hs.marginLeft) xpos = hs.marginLeft; + + var ypos = this.y.pos - (this.y.size - ySize) / 2; + if (ypos < hs.marginTop) ypos = hs.marginTop; + + this.moveTo(xpos, ypos); + this.doShowHide('hidden'); + + } catch (e) { + this.error(e); + } +}, + + +afterClose : function () { + this.a.className = this.a.className.replace('highslide-active-anchor', ''); + + this.doShowHide('visible'); + + if (this.isHtml && this.preserveContent) { + this.sleep(); + } else { + if (this.outline && this.outlineWhileAnimating) this.outline.destroy(); + + hs.discardElement(this.wrapper); + } + if (hs.mask) hs.mask.style.display = 'none'; + + hs.expanders[this.key] = null; + hs.reOrder(); +} + +}; + + +// hs.Ajax object prototype +hs.Ajax = function (a, content, pre) { + this.a = a; + this.content = content; + this.pre = pre; +}; + +hs.Ajax.prototype = { +run : function () { + var xhr; + if (!this.src) this.src = hs.getSrc(this.a); + if (this.src.match('#')) { + var arr = this.src.split('#'); + this.src = arr[0]; + this.id = arr[1]; + } + if (hs.cachedGets[this.src]) { + this.cachedGet = hs.cachedGets[this.src]; + if (this.id) this.getElementContent(); + else this.loadHTML(); + return; + } + try { xhr = new XMLHttpRequest(); } + catch (e) { + try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } + catch (e) { + try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } + catch (e) { this.onError(); } + } + } + var pThis = this; + xhr.onreadystatechange = function() { + if(pThis.xhr.readyState == 4) { + if (pThis.id) pThis.getElementContent(); + else pThis.loadHTML(); + } + }; + var src = this.src; + this.xhr = xhr; + if (hs.forceAjaxReload) + src = src.replace(/$/, (/\?/.test(src) ? '&' : '?') +'dummy='+ (new Date()).getTime()); + xhr.open('GET', src, true); + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xhr.send(null); +}, + +getElementContent : function() { + hs.init(); + var attribs = window.opera || hs.ie6SSL ? { src: 'about:blank' } : null; + + this.iframe = hs.createElement('iframe', attribs, + { position: 'absolute', top: '-9999px' }, hs.container); + + this.loadHTML(); +}, + +loadHTML : function() { + var s = this.cachedGet || this.xhr.responseText, + regBody; + if (this.pre) hs.cachedGets[this.src] = s; + if (!hs.ie || hs.uaVersion >= 5.5) { + s = s.replace(new RegExp(']*>', 'gi'), '') + .replace(new RegExp(']*>.*?', 'gi'), ''); + if (this.iframe) { + var doc = this.iframe.contentDocument; + if (!doc && this.iframe.contentWindow) doc = this.iframe.contentWindow.document; + if (!doc) { // Opera + var pThis = this; + setTimeout(function() { pThis.loadHTML(); }, 25); + return; + } + doc.open(); + doc.write(s); + doc.close(); + try { s = doc.getElementById(this.id).innerHTML; } catch (e) { + try { s = this.iframe.document.getElementById(this.id).innerHTML; } catch (e) {} // opera + } + hs.discardElement(this.iframe); + } else { + regBody = /(]*>|<\/body>)/ig; + if (regBody.test(s)) s = s.split(regBody)[hs.ieLt9 ? 1 : 2]; + + } + } + hs.getElementByClass(this.content, 'DIV', 'highslide-body').innerHTML = s; + this.onLoad(); + for (var x in this) this[x] = null; +} +}; +hs.langDefaults = hs.lang; +// history +var HsExpander = hs.Expander; +if (hs.ie && window == window.top) { + (function () { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(arguments.callee, 50); + return; + } + hs.ready(); + })(); +} +hs.addEventListener(document, 'DOMContentLoaded', hs.ready); +hs.addEventListener(window, 'load', hs.ready); + +// set handlers +hs.addEventListener(document, 'ready', function() { + if (hs.expandCursor) { + var style = hs.createElement('style', { type: 'text/css' }, null, + document.getElementsByTagName('HEAD')[0]), + backCompat = document.compatMode == 'BackCompat'; + + + function addRule(sel, dec) { + if (hs.ie && (hs.uaVersion < 9 || backCompat)) { + var last = document.styleSheets[document.styleSheets.length - 1]; + if (typeof(last.addRule) == "object") last.addRule(sel, dec); + } else { + style.appendChild(document.createTextNode(sel + " {" + dec + "}")); + } + } + function fix(prop) { + return 'expression( ( ( ignoreMe = document.documentElement.'+ prop + + ' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );'; + } + if (hs.expandCursor) addRule ('.highslide img', + 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'); + } +}); +hs.addEventListener(window, 'resize', function() { + hs.getPageSize(); +}); +hs.addEventListener(document, 'mousemove', function(e) { + hs.mouse = { x: e.clientX, y: e.clientY }; +}); +hs.addEventListener(document, 'mousedown', hs.mouseClickHandler); +hs.addEventListener(document, 'mouseup', hs.mouseClickHandler); + +hs.addEventListener(document, 'ready', hs.getAnchors); +hs.addEventListener(window, 'load', hs.preloadImages); +hs.addEventListener(window, 'load', hs.preloadAjax); +} diff --git a/html/highslide/highslide-with-html.min.js b/html/highslide/highslide-with-html.min.js new file mode 100644 index 000000000..7b4a3b8a8 --- /dev/null +++ b/html/highslide/highslide-with-html.min.js @@ -0,0 +1,9 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default +inline +ajax +iframe +flash + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if(!hs){var hs={lang:{cssDirection:"ltr",loadingText:"Loading...",loadingTitle:"Click to cancel",focusTitle:"Click to bring to front",fullExpandTitle:"Expand to actual size (f)",creditsText:"Powered by Highslide JS",creditsTitle:"Go to the Highslide JS homepage",previousText:"Previous",nextText:"Next",moveText:"Move",closeText:"Close",closeTitle:"Close (esc)",resizeTitle:"Resize",playText:"Play",playTitle:"Play slideshow (spacebar)",pauseText:"Pause",pauseTitle:"Pause slideshow (spacebar)",previousTitle:"Previous (arrow left)",nextTitle:"Next (arrow right)",moveTitle:"Move",fullExpandText:"1:1",restoreTitle:"Click to close image, click and drag to move. Use arrow keys for next and previous."},graphicsDir:"highslide/graphics/",expandCursor:"zoomin.cur",restoreCursor:"zoomout.cur",expandDuration:250,restoreDuration:250,marginLeft:15,marginRight:15,marginTop:15,marginBottom:15,zIndexCounter:1001,loadingOpacity:0.75,allowMultipleInstances:true,numberOfImagesToPreload:5,outlineWhileAnimating:2,outlineStartOffset:3,padToMinWidth:false,fullExpandPosition:"bottom right",fullExpandOpacity:1,showCredits:true,creditsHref:"http://highslide.com/",creditsTarget:"_self",enableKeyListener:true,openerTagNames:["a"],allowWidthReduction:false,allowHeightReduction:true,preserveContent:true,objectLoadTime:"before",cacheAjax:true,dragByHeading:true,minWidth:200,minHeight:200,allowSizeReduction:true,outlineType:"drop-shadow",skin:{contentWrapper:'
'},preloadTheseImages:[],continuePreloading:true,expanders:[],overrides:["allowSizeReduction","useBox","outlineType","outlineWhileAnimating","captionId","captionText","captionEval","captionOverlay","headingId","headingText","headingEval","headingOverlay","creditsPosition","dragByHeading","width","height","contentId","allowWidthReduction","allowHeightReduction","preserveContent","maincontentId","maincontentText","maincontentEval","objectType","cacheAjax","objectWidth","objectHeight","objectLoadTime","swfOptions","wrapperClassName","minWidth","minHeight","maxWidth","maxHeight","pageOrigin","slideshowGroup","easing","easingClose","fadeInOut","src"],overlays:[],idCounter:0,oPos:{x:["leftpanel","left","center","right","rightpanel"],y:["above","top","middle","bottom","below"]},mouse:{},headingOverlay:{},captionOverlay:{},swfOptions:{flashvars:{},params:{},attributes:{}},timers:[],pendingOutlines:{},sleeping:[],preloadTheseAjax:[],cacheBindings:[],cachedGets:{},clones:{},onReady:[],uaVersion:/Trident\/4\.0/.test(navigator.userAgent)?8:parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]),ie:(document.all&&!window.opera),safari:/Safari/.test(navigator.userAgent),geckoMac:/Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),$:function(a){if(a){return document.getElementById(a)}},push:function(a,b){a[a.length]=b},createElement:function(a,f,e,d,c){var b=document.createElement(a);if(f){hs.extend(b,f)}if(c){hs.setStyles(b,{padding:0,border:"none",margin:0})}if(e){hs.setStyles(b,e)}if(d){d.appendChild(b)}return b},extend:function(b,c){for(var a in c){b[a]=c[a]}return b},setStyles:function(b,c){for(var a in c){if(hs.ieLt9&&a=="opacity"){if(c[a]>0.99){b.style.removeAttribute("filter")}else{b.style.filter="alpha(opacity="+(c[a]*100)+")"}}else{b.style[a]=c[a]}}},animate:function(f,a,d){var c,g,j;if(typeof d!="object"||d===null){var i=arguments;d={duration:i[2],easing:i[3],complete:i[4]}}if(typeof d.duration!="number"){d.duration=250}d.easing=Math[d.easing]||Math.easeInQuad;d.curAnim=hs.extend({},a);for(var b in a){var h=new hs.fx(f,d,b);c=parseFloat(hs.css(f,b))||0;g=parseFloat(a[b]);j=b!="opacity"?"px":"";h.custom(c,g,j)}},css:function(a,c){if(a.style[c]){return a.style[c]}else{if(document.defaultView){return document.defaultView.getComputedStyle(a,null).getPropertyValue(c)}else{if(c=="opacity"){c="filter"}var b=a.currentStyle[c.replace(/\-(\w)/g,function(e,d){return d.toUpperCase()})];if(c=="filter"){b=b.replace(/alpha\(opacity=([0-9]+)\)/,function(e,d){return d/100})}return b===""?1:b}}},getPageSize:function(){var f=document,b=window,e=f.compatMode&&f.compatMode!="BackCompat"?f.documentElement:f.body,g=hs.ie&&(hs.uaVersion<9||typeof pageXOffset=="undefined");var c=g?e.clientWidth:(f.documentElement.clientWidth||self.innerWidth),a=g?e.clientHeight:self.innerHeight;hs.page={width:c,height:a,scrollLeft:g?e.scrollLeft:pageXOffset,scrollTop:g?e.scrollTop:pageYOffset};return hs.page},getPosition:function(a){var b={x:a.offsetLeft,y:a.offsetTop};while(a.offsetParent){a=a.offsetParent;b.x+=a.offsetLeft;b.y+=a.offsetTop;if(a!=document.body&&a!=document.documentElement){b.x-=a.scrollLeft;b.y-=a.scrollTop}}return b},expand:function(b,h,f,d){if(!b){b=hs.createElement("a",null,{display:"none"},hs.container)}if(typeof b.getParams=="function"){return h}if(d=="html"){for(var c=0;cc){c=f;b=d}}}if(b==-1){hs.focusKey=-1}else{a[b].focus()}},getParam:function(b,d){b.getParams=b.onclick;var c=b.getParams?b.getParams():null;b.getParams=null;return(c&&typeof c[d]!="undefined")?c[d]:(typeof hs[d]!="undefined"?hs[d]:null)},getSrc:function(b){var c=hs.getParam(b,"src");if(c){return c}return b.href},getNode:function(e){var c=hs.$(e),d=hs.clones[e],b={};if(!c&&!d){return null}if(!d){d=c.cloneNode(true);d.id="";hs.clones[e]=d;return c}else{return d.cloneNode(true)}},discardElement:function(a){if(a){hs.garbageBin.appendChild(a)}hs.garbageBin.innerHTML=""},transit:function(a,d){var b=d||hs.getExpander();d=b;if(hs.upcoming){return false}else{hs.last=b}hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);try{hs.upcoming=a;a.onclick()}catch(c){hs.last=hs.upcoming=null}try{d.close()}catch(c){}return false},previousOrNext:function(a,c){var b=hs.getExpander(a);if(b){return hs.transit(b.getAdjacentAnchor(c),b)}else{return false}},previous:function(a){return hs.previousOrNext(a,-1)},next:function(a){return hs.previousOrNext(a,1)},keyHandler:function(a){if(!a){a=window.event}if(!a.target){a.target=a.srcElement}if(typeof a.target.form!="undefined"){return true}var b=hs.getExpander();var c=null;switch(a.keyCode){case 70:if(b){b.doFullExpand()}return true;case 32:case 34:case 39:case 40:c=1;break;case 8:case 33:case 37:case 38:c=-1;break;case 27:case 13:c=0}if(c!==null){hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);if(!hs.enableKeyListener){return true}if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}if(b){if(c==0){b.close()}else{hs.previousOrNext(b.key,c)}return false}}return true},registerOverlay:function(a){hs.push(hs.overlays,hs.extend(a,{hsId:"hsId"+hs.idCounter++}))},getWrapperKey:function(c,b){var e,d=/^highslide-wrapper-([0-9]+)$/;e=c;while(e.parentNode){if(e.id&&d.test(e.id)){return e.id.replace(d,"$1")}e=e.parentNode}if(!b){e=c;while(e.parentNode){if(e.tagName&&hs.isHsAnchor(e)){for(var a=0;a1){return true}if(!d.target){d.target=d.srcElement}var b=d.target;while(b.parentNode&&!(/highslide-(image|move|html|resize)/.test(b.className))){b=b.parentNode}var f=hs.getExpander(b);if(f&&(f.isClosing||!f.isExpanded)){return true}if(f&&d.type=="mousedown"){if(d.target.form){return true}var a=b.className.match(/highslide-(image|move|resize)/);if(a){hs.dragArgs={exp:f,type:a[1],left:f.x.pos,width:f.x.size,top:f.y.pos,height:f.y.size,clickX:d.clientX,clickY:d.clientY};hs.addEventListener(document,"mousemove",hs.dragHandler);if(d.preventDefault){d.preventDefault()}if(/highslide-(image|html)-blur/.test(f.content.className)){f.focus();hs.hasFocused=true}return false}else{if(/highslide-html/.test(b.className)&&hs.focusKey!=f.key){f.focus();f.doShowHide("hidden")}}}else{if(d.type=="mouseup"){hs.removeEventListener(document,"mousemove",hs.dragHandler);if(hs.dragArgs){if(hs.styleRestoreCursor&&hs.dragArgs.type=="image"){hs.dragArgs.exp.content.style.cursor=hs.styleRestoreCursor}var c=hs.dragArgs.hasDragged;if(!c&&!hs.hasFocused&&!/(move|resize)/.test(hs.dragArgs.type)){f.close()}else{if(c||(!c&&hs.hasHtmlExpanders)){hs.dragArgs.exp.doShowHide("hidden")}}if(hs.dragArgs.exp.releaseMask){hs.dragArgs.exp.releaseMask.style.display="none"}hs.hasFocused=false;hs.dragArgs=null}else{if(/highslide-image-blur/.test(b.className)){b.style.cursor=hs.styleRestoreCursor}}}}return false},dragHandler:function(c){if(!hs.dragArgs){return true}if(!c){c=window.event}var b=hs.dragArgs,d=b.exp;if(d.iframe){if(!d.releaseMask){d.releaseMask=hs.createElement("div",null,{position:"absolute",width:d.x.size+"px",height:d.y.size+"px",left:d.x.cb+"px",top:d.y.cb+"px",zIndex:4,background:(hs.ieLt9?"white":"none"),opacity:0.01},d.wrapper,true)}if(d.releaseMask.style.display=="none"){d.releaseMask.style.display=""}}b.dX=c.clientX-b.clickX;b.dY=c.clientY-b.clickY;var f=Math.sqrt(Math.pow(b.dX,2)+Math.pow(b.dY,2));if(!b.hasDragged){b.hasDragged=(b.type!="image"&&f>0)||(f>(hs.dragSensitivity||5))}if(b.hasDragged&&c.clientX>5&&c.clientY>5){if(b.type=="resize"){d.resize(b)}else{d.moveTo(b.left+b.dX,b.top+b.dY);if(b.type=="image"){d.content.style.cursor="move"}}}return false},wrapperMouseHandler:function(c){try{if(!c){c=window.event}var b=/mouseover/i.test(c.type);if(!c.target){c.target=c.srcElement}if(!c.relatedTarget){c.relatedTarget=b?c.fromElement:c.toElement}var d=hs.getExpander(c.target);if(!d.isExpanded){return}if(!d||!c.relatedTarget||hs.getExpander(c.relatedTarget,true)==d||hs.dragArgs){return}for(var a=0;a=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var a=true;for(var b in this.options.curAnim){if(this.options.curAnim[b]!==true){a=false}}if(a){if(this.options.complete){this.options.complete.call(this.elem)}}return false}else{var e=c-this.startTime;this.state=e/this.options.duration;this.pos=this.options.easing(e,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};hs.extend(hs.fx,{step:{opacity:function(a){hs.setStyles(a.elem,{opacity:a.now})},_default:function(a){try{if(a.elem.style&&a.elem.style[a.prop]!=null){a.elem.style[a.prop]=a.now+a.unit}else{a.elem[a.prop]=a.now}}catch(b){}}}});hs.Outline=function(g,e){this.onLoad=e;this.outlineType=g;var a=hs.uaVersion,f;this.hasAlphaImageLoader=hs.ie&&hs.uaVersion<7;if(!g){if(e){e()}return}hs.init();this.table=hs.createElement("table",{cellSpacing:0},{visibility:"hidden",position:"absolute",borderCollapse:"collapse",width:0},hs.container,true);var b=hs.createElement("tbody",null,null,this.table,1);this.td=[];for(var c=0;c<=8;c++){if(c%3==0){f=hs.createElement("tr",null,{height:"auto"},b,true)}this.td[c]=hs.createElement("td",null,null,f,true);var d=c!=4?{lineHeight:0,fontSize:0}:{position:"relative"};hs.setStyles(this.td[c],d)}this.td[4].className=g+" highslide-outline";this.preloadGraphic()};hs.Outline.prototype={preloadGraphic:function(){var b=hs.graphicsDir+(hs.outlinesDir||"outlines/")+this.outlineType+".png";var a=hs.safari&&hs.uaVersion<525?hs.container:null;this.graphic=hs.createElement("img",null,{position:"absolute",top:"-9999px"},a,true);var c=this;this.graphic.onload=function(){c.onGraphicLoad()};this.graphic.src=b},onGraphicLoad:function(){var d=this.offset=this.graphic.width/4,f=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],c={height:(2*d)+"px",width:(2*d)+"px"};for(var b=0;b<=8;b++){if(f[b]){if(this.hasAlphaImageLoader){var a=(b==1||b==7)?"100%":this.graphic.width+"px";var e=hs.createElement("div",null,{width:"100%",height:"100%",position:"relative",overflow:"hidden"},this.td[b],true);hs.createElement("div",null,{filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+this.graphic.src+"')",position:"absolute",width:a,height:this.graphic.height+"px",left:(f[b][0]*d)+"px",top:(f[b][1]*d)+"px"},e,true)}else{hs.setStyles(this.td[b],{background:"url("+this.graphic.src+") "+(f[b][0]*d)+"px "+(f[b][1]*d)+"px"})}if(window.opera&&(b==3||b==5)){hs.createElement("div",null,c,this.td[b],true)}hs.setStyles(this.td[b],c)}}this.graphic=null;if(hs.pendingOutlines[this.outlineType]){hs.pendingOutlines[this.outlineType].destroy()}hs.pendingOutlines[this.outlineType]=this;if(this.onLoad){this.onLoad()}},setPosition:function(g,e,c,b,f){var d=this.exp,a=d.wrapper.style,e=e||0,g=g||{x:d.x.pos+e,y:d.y.pos+e,w:d.x.get("wsize")-2*e,h:d.y.get("wsize")-2*e};if(c){this.table.style.visibility=(g.h>=4*this.offset)?"visible":"hidden"}hs.setStyles(this.table,{left:(g.x-this.offset)+"px",top:(g.y-this.offset)+"px",width:(g.w+2*this.offset)+"px"});g.w-=2*this.offset;g.h-=2*this.offset;hs.setStyles(this.td[4],{width:g.w>=0?g.w+"px":0,height:g.h>=0?g.h+"px":0});if(this.hasAlphaImageLoader){this.td[3].style.height=this.td[5].style.height=this.td[4].style.height}},destroy:function(a){if(a){this.table.style.visibility="hidden"}else{hs.discardElement(this.table)}}};hs.Dimension=function(b,a){this.exp=b;this.dim=a;this.ucwh=a=="x"?"Width":"Height";this.wh=this.ucwh.toLowerCase();this.uclt=a=="x"?"Left":"Top";this.lt=this.uclt.toLowerCase();this.ucrb=a=="x"?"Right":"Bottom";this.rb=this.ucrb.toLowerCase();this.p1=this.p2=0};hs.Dimension.prototype={get:function(a){switch(a){case"loadingPos":return this.tpos+this.tb+(this.t-hs.loading["offset"+this.ucwh])/2;case"wsize":return this.size+2*this.cb+this.p1+this.p2;case"fitsize":return this.clientSize-this.marginMin-this.marginMax;case"maxsize":return this.get("fitsize")-2*this.cb-this.p1-this.p2;case"opos":return this.pos-(this.exp.outline?this.exp.outline.offset:0);case"osize":return this.get("wsize")+(this.exp.outline?2*this.exp.outline.offset:0);case"imgPad":return this.imgSize?Math.round((this.size-this.imgSize)/2):0}},calcBorders:function(){this.cb=(this.exp.content["offset"+this.ucwh]-this.t)/2;this.marginMax=hs["margin"+this.ucrb]},calcThumb:function(){this.t=this.exp.el[this.wh]?parseInt(this.exp.el[this.wh]):this.exp.el["offset"+this.ucwh];this.tpos=this.exp.tpos[this.dim];this.tb=(this.exp.el["offset"+this.ucwh]-this.t)/2;if(this.tpos==0||this.tpos==-1){this.tpos=(hs.page[this.wh]/2)+hs.page["scroll"+this.uclt]}},calcExpanded:function(){var a=this.exp;this.justify="auto";this.pos=this.tpos-this.cb+this.tb;if(this.maxHeight&&this.dim=="x"){a.maxWidth=Math.min(a.maxWidth||this.full,a.maxHeight*this.full/a.y.full)}this.size=Math.min(this.full,a["max"+this.ucwh]||this.full);this.minSize=a.allowSizeReduction?Math.min(a["min"+this.ucwh],this.full):this.full;if(a.isImage&&a.useBox){this.size=a[this.wh];this.imgSize=this.full}if(this.dim=="x"&&hs.padToMinWidth){this.minSize=a.minWidth}this.marginMin=hs["margin"+this.uclt];this.scroll=hs.page["scroll"+this.uclt];this.clientSize=hs.page[this.wh]},setSize:function(a){var f=this.exp;if(f.isImage&&(f.useBox||hs.padToMinWidth)){this.imgSize=a;this.size=Math.max(this.size,this.imgSize);f.content.style[this.lt]=this.get("imgPad")+"px"}else{this.size=a}f.content.style[this.wh]=a+"px";f.wrapper.style[this.wh]=this.get("wsize")+"px";if(f.outline){f.outline.setPosition()}if(f.releaseMask){f.releaseMask.style[this.wh]=a+"px"}if(this.dim=="y"&&f.iDoc&&f.body.style.height!="auto"){try{f.iDoc.body.style.overflow="auto"}catch(b){}}if(f.isHtml){var c=f.scrollerDiv;if(this.sizeDiff===undefined){this.sizeDiff=f.innerContent["offset"+this.ucwh]-c["offset"+this.ucwh]}c.style[this.wh]=(this.size-this.sizeDiff)+"px";if(this.dim=="x"){f.mediumContent.style.width="auto"}if(f.body){f.body.style[this.wh]="auto"}}if(this.dim=="x"&&f.overlayBox){f.sizeOverlayBox(true)}},setPos:function(a){this.pos=a;this.exp.wrapper.style[this.lt]=a+"px";if(this.exp.outline){this.exp.outline.setPosition()}}};hs.Expander=function(k,f,b,l){if(document.readyState&&hs.ie&&!hs.isReady){hs.addEventListener(document,"ready",function(){new hs.Expander(k,f,b,l)});return}this.a=k;this.custom=b;this.contentType=l||"image";this.isHtml=(l=="html");this.isImage=!this.isHtml;hs.continuePreloading=false;this.overlays=[];hs.init();var m=this.key=hs.expanders.length;for(var g=0;g(this.x.imgSize||this.x.size)){this.createFullExpand();if(this.overlays.length==1){this.sizeOverlayBox()}}}this.show()}catch(c){this.error(c)}},setObjContainerSize:function(a,d){var b=hs.getElementByClass(a,"DIV","highslide-body");if(/(iframe|swf)/.test(this.objectType)){if(this.objectWidth){b.style.width=this.objectWidth+"px"}if(this.objectHeight){b.style.height=this.objectHeight+"px"}}},writeExtendedContent:function(){if(this.hasExtendedContent){return}var f=this;this.body=hs.getElementByClass(this.innerContent,"DIV","highslide-body");if(this.objectType=="iframe"){this.showLoading();var g=hs.clearing.cloneNode(1);this.body.appendChild(g);this.newWidth=this.innerContent.offsetWidth;if(!this.objectWidth){this.objectWidth=g.offsetWidth}var c=this.innerContent.offsetHeight-this.body.offsetHeight,d=this.objectHeight||hs.page.height-c-hs.marginTop-hs.marginBottom,e=this.objectLoadTime=="before"?' onload="if (hs.expanders['+this.key+"]) hs.expanders["+this.key+'].contentLoaded()" ':"";this.body.innerHTML+='';this.ruler=this.body.getElementsByTagName("div")[0];this.iframe=this.body.getElementsByTagName("iframe")[0];if(this.objectLoadTime=="after"){this.correctIframeSize()}}if(this.objectType=="swf"){this.body.id=this.body.id||"hs-flash-id-"+this.key;var b=this.swfOptions;if(!b.params){b.params={}}if(typeof b.params.wmode=="undefined"){b.params.wmode="transparent"}if(swfobject){swfobject.embedSWF(this.src,this.body.id,this.objectWidth,this.objectHeight,b.version||"7",b.expressInstallSwfurl,b.flashvars,b.params,b.attributes)}}this.hasExtendedContent=true},htmlGetSize:function(){if(this.iframe&&!this.objectHeight){this.iframe.style.height=this.body.style.height=this.getIframePageHeight()+"px"}this.innerContent.appendChild(hs.clearing);if(!this.x.full){this.x.full=this.innerContent.offsetWidth}this.y.full=this.innerContent.offsetHeight;this.innerContent.removeChild(hs.clearing);if(hs.ie&&this.newHeight>parseInt(this.innerContent.currentStyle.height)){this.newHeight=parseInt(this.innerContent.currentStyle.height)}hs.setStyles(this.wrapper,{position:"absolute",padding:"0"});hs.setStyles(this.content,{width:this.x.t+"px",height:this.y.t+"px"})},getIframePageHeight:function(){var a;try{var d=this.iDoc=this.iframe.contentDocument||this.iframe.contentWindow.document;var b=d.createElement("div");b.style.clear="both";d.body.appendChild(b);a=b.offsetTop;if(hs.ie){a+=parseInt(d.body.currentStyle.marginTop)+parseInt(d.body.currentStyle.marginBottom)-1}}catch(c){a=300}return a},correctIframeSize:function(){var b=this.innerContent.offsetWidth-this.ruler.offsetWidth;hs.discardElement(this.ruler);if(b<0){b=0}var a=this.innerContent.offsetHeight-this.iframe.offsetHeight;if(this.iDoc&&!this.objectHeight&&!this.height&&this.y.size==this.y.full){try{this.iDoc.body.style.overflow="hidden"}catch(c){}}hs.setStyles(this.iframe,{width:Math.abs(this.x.size-b)+"px",height:Math.abs(this.y.size-a)+"px"});hs.setStyles(this.body,{width:this.iframe.style.width,height:this.iframe.style.height});this.scrollingContent=this.iframe;this.scrollerDiv=this.scrollingContent},htmlSizeOperations:function(){this.setObjContainerSize(this.innerContent);if(this.objectType=="swf"&&this.objectLoadTime=="before"){this.writeExtendedContent()}if(this.x.sizee.offsetHeight){e.style.width=(parseInt(e.style.width)+d)+"px"}this.scrollingContent=e;this.scrollerDiv=this.scrollingContent}if(this.iframe&&this.objectLoadTime=="before"){this.correctIframeSize()}if(!this.scrollingContent&&this.y.sizethis.scrollerDiv.parentNode.offsetHeight){setTimeout("try { hs.expanders["+this.key+"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}",hs.expandDuration)}},justify:function(f,b){var g,h=f.target,e=f==this.x?"x":"y";var d=false;var a=f.exp.allowSizeReduction;f.pos=Math.round(f.pos-((f.get("wsize")-f.t)/2));if(f.posf.scroll+f.clientSize-f.marginMax){if(!b&&d&&a){f.size=Math.min(f.size,f.get(e=="y"?"fitsize":"maxsize"))}else{if(f.get("wsize")c){d=b*c;if(dthis.minHeight&&a.size>this.minWidth&&d.get("wsize")>d.get("fitsize")){d.size-=10;if(b){a.size=d.size*b}this.sizeOverlayBox(0,1);c=true}}return c},show:function(){var a=this.x,b=this.y;this.doShowHide("hidden");this.changeSize(1,{wrapper:{width:a.get("wsize"),height:b.get("wsize"),left:a.pos,top:b.pos},content:{left:a.p1+a.get("imgPad"),top:b.p1+b.get("imgPad"),width:a.imgSize||a.size,height:b.imgSize||b.size}},hs.expandDuration)},changeSize:function(b,h,c){if(this.outline&&!this.outlineWhileAnimating){if(b){this.outline.setPosition()}else{this.outline.destroy((this.isHtml&&this.preserveContent))}}if(!b){this.destroyOverlays()}var e=this,a=e.x,g=e.y,f=this.easing;if(!b){f=this.easingClose||f}var d=b?function(){if(e.outline){e.outline.table.style.visibility="visible"}setTimeout(function(){e.afterExpand()},50)}:function(){e.afterClose()};if(b){hs.setStyles(this.wrapper,{width:a.t+"px",height:g.t+"px"})}if(b&&this.isHtml){hs.setStyles(this.wrapper,{left:(a.tpos-a.cb+a.tb)+"px",top:(g.tpos-g.cb+g.tb)+"px"})}if(this.fadeInOut){hs.setStyles(this.wrapper,{opacity:b?0:1});hs.extend(h.wrapper,{opacity:b})}hs.animate(this.wrapper,h.wrapper,{duration:c,easing:f,step:function(k,i){if(e.outline&&e.outlineWhileAnimating&&i.prop=="top"){var j=b?i.pos:1-i.pos;var l={w:a.t+(a.get("wsize")-a.t)*j,h:g.t+(g.get("wsize")-g.t)*j,x:a.tpos+(a.pos-a.tpos)*j,y:g.tpos+(g.pos-g.tpos)*j};e.outline.setPosition(l,0,1)}if(e.isHtml){if(i.prop=="left"){e.mediumContent.style.left=(a.pos-k)+"px"}if(i.prop=="top"){e.mediumContent.style.top=(g.pos-k)+"px"}}}});hs.animate(this.content,h.content,c,f,d);if(b){this.wrapper.style.visibility="visible";this.content.style.visibility="visible";if(this.isHtml){this.innerContent.style.visibility="visible"}this.a.className+=" highslide-active-anchor"}},afterExpand:function(){this.isExpanded=true;this.focus();if(this.isHtml&&this.objectLoadTime=="after"){this.writeExtendedContent()}if(this.iframe){try{var g=this,f=this.iframe.contentDocument||this.iframe.contentWindow.document;hs.addEventListener(f,"mousedown",function(){if(hs.focusKey!=g.key){g.focus()}})}catch(d){}if(hs.ie&&typeof this.isClosing!="boolean"){this.iframe.style.width=(this.objectWidth-1)+"px"}}if(hs.upcoming&&hs.upcoming==this.a){hs.upcoming=null}this.prepareNextOutline();var c=hs.page,b=hs.mouse.x+c.scrollLeft,a=hs.mouse.y+c.scrollTop;this.mouseIsOver=this.x.posthis.x.get("opos")+this.x.get("osize"));var g=(k.y+k.hthis.y.get("opos")+this.y.get("osize"));var d=hs.getWrapperKey(e[f]);if(!j&&!g&&d!=this.key){if(!h){e[f].setAttribute("hidden-by","["+this.key+"]");e[f].origProp=e[f].style[a];e[f].style[a]="hidden"}else{if(h.indexOf("["+this.key+"]")==-1){e[f].setAttribute("hidden-by",h+"["+this.key+"]")}}}else{if((h=="["+this.key+"]"||hs.focusKey==d)&&d!=this.key){e[f].setAttribute("hidden-by","");e[f].style[a]=e[f].origProp||""}else{if(h&&h.indexOf("["+this.key+"]")>-1){e[f].setAttribute("hidden-by",h.replace("["+this.key+"]",""))}}}}}}}},focus:function(){this.wrapper.style.zIndex=hs.zIndexCounter+=2;for(var a=0;a=5.5){c=c.replace(new RegExp("]*>","gi"),"").replace(new RegExp("]*>.*?<\/script>","gi"),"");if(this.iframe){var f=this.iframe.contentDocument;if(!f&&this.iframe.contentWindow){f=this.iframe.contentWindow.document}if(!f){var g=this;setTimeout(function(){g.loadHTML()},25);return}f.open();f.write(c);f.close();try{c=f.getElementById(this.id).innerHTML}catch(d){try{c=this.iframe.document.getElementById(this.id).innerHTML}catch(d){}}hs.discardElement(this.iframe)}else{b=/(]*>|<\/body>)/ig;if(b.test(c)){c=c.split(b)[hs.ieLt9?1:2]}}}hs.getElementByClass(this.content,"DIV","highslide-body").innerHTML=c;this.onLoad();for(var a in this){this[a]=null}}};hs.langDefaults=hs.lang;var HsExpander=hs.Expander;if(hs.ie&&window==window.top){(function(){try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,50);return}hs.ready()})()}hs.addEventListener(document,"DOMContentLoaded",hs.ready);hs.addEventListener(window,"load",hs.ready);hs.addEventListener(document,"ready",function(){if(hs.expandCursor){var d=hs.createElement("style",{type:"text/css"},null,document.getElementsByTagName("HEAD")[0]),c=document.compatMode=="BackCompat";function b(f,g){if(hs.ie&&(hs.uaVersion<9||c)){var e=document.styleSheets[document.styleSheets.length-1];if(typeof(e.addRule)=="object"){e.addRule(f,g)}}else{d.appendChild(document.createTextNode(f+" {"+g+"}"))}}function a(e){return"expression( ( ( ignoreMe = document.documentElement."+e+" ? document.documentElement."+e+" : document.body."+e+" ) ) + 'px' );"}if(hs.expandCursor){b(".highslide img","cursor: url("+hs.graphicsDir+hs.expandCursor+"), pointer !important;")}}});hs.addEventListener(window,"resize",function(){hs.getPageSize()});hs.addEventListener(document,"mousemove",function(a){hs.mouse={x:a.clientX,y:a.clientY}});hs.addEventListener(document,"mousedown",hs.mouseClickHandler);hs.addEventListener(document,"mouseup",hs.mouseClickHandler);hs.addEventListener(document,"ready",hs.getAnchors);hs.addEventListener(window,"load",hs.preloadImages);hs.addEventListener(window,"load",hs.preloadAjax)}; \ No newline at end of file diff --git a/html/highslide/highslide-with-html.packed.js b/html/highslide/highslide-with-html.packed.js new file mode 100644 index 000000000..401c8e420 --- /dev/null +++ b/html/highslide/highslide-with-html.packed.js @@ -0,0 +1,9 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default +inline +ajax +iframe +flash +packed + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){u m={1e:{89:\'8H\',8K:\'co...\',8G:\'6Q 2h cA\',9s:\'6Q 2h cB 2h c1\',9Y:\'bX 2h bT G (f)\',ag:\'c7 by 8g 8f\',9F:\'d3 2h d6 8g 8f dg\',91:\'8n\',8W:\'8e\',8R:\'9g\',8V:\'8j\',8U:\'8j (di)\',93:\'dj\',dd:\'8h\',d2:\'8h 8m (8l)\',cM:\'8k\',bR:\'8k 8m (8l)\',90:\'8n (6L 1f)\',8X:\'8e (6L 2G)\',8S:\'9g\',b8:\'1:1\',7h:\'6Q 2h 28 2D, aR 8Y aL 2h 3I. aH 6L aT W 1M 8Y 5n.\'},56:\'U/aN/\',5v:\'bG.6E\',4E:\'bB.6E\',7c:6j,a7:6j,4j:15,6m:15,3N:15,6f:15,4l:bt,8N:0.75,7m:J,71:5,3g:2,aZ:3,4M:1h,9Z:\'3E 2G\',9U:1,a1:J,9y:\'b2://U.b4/\',9E:\'aO\',8C:J,7B:[\'a\'],5D:1h,5A:J,48:J,31:\'4K\',82:J,7b:J,3O:8Z,4s:8Z,4I:J,1x:\'aS-aP\',8A:{8B:\'<1i 3n="U-aU"><92>\'+\'<3u 3n="U-5n">\'+\'\'+\'<2p>{m.1e.91}\'+\'\'+\'<3u 3n="U-1M">\'+\'\'+\'<2p>{m.1e.8W}\'+\'\'+\'<3u 3n="U-3I">\'+\'\'+\'<2p>{m.1e.8R}\'+\'\'+\'<3u 3n="U-28">\'+\'\'+\'<2p>{m.1e.8V}\'+\'\'+\'\'+\'<1i 3n="U-V">\'+\'<1i 3n="U-b0"><1i>\'+\'<2p 3n="U-3q" 2u="{m.1e.93}"><2p>\'+\'\'},4P:[],6n:J,P:[],6s:[\'4I\',\'2K\',\'1x\',\'3g\',\'b5\',\'bc\',\'aG\',\'9e\',\'aM\',\'b3\',\'bQ\',\'9c\',\'9K\',\'7b\',\'K\',\'M\',\'7f\',\'5D\',\'5A\',\'48\',\'bD\',\'bC\',\'bH\',\'2f\',\'82\',\'3i\',\'3J\',\'31\',\'7I\',\'78\',\'3O\',\'4s\',\'5X\',\'6N\',\'8d\',\'4h\',\'2g\',\'an\',\'am\',\'T\'],1Q:[],4y:0,bI:{x:[\'ad\',\'1f\',\'6H\',\'2G\',\'ac\'],y:[\'4U\',\'18\',\'6q\',\'3E\',\'6a\']},5R:{},9c:{},9e:{},7I:{al:{},1E:{},ay:{}},3t:[],3G:{},3C:[],5b:[],4o:[],5J:{},7k:{},6h:[],26:/bM\\/4\\.0/.16(46.5V)?8:6t((46.5V.5x().2Z(/.+(?:9f|bJ|bK|1L)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1L:(N.4F&&!1y.30),4X:/bL/.16(46.5V),7V:/bx.+9f:1\\.[0-8].+bi/.16(46.5V),$:B(1j){q(1j)D N.6F(1j)},20:B(1P,2R){1P[1P.1c]=2R},14:B(9b,3h,3l,4r,95){u C=N.14(9b);q(3h)m.3e(C,3h);q(95)m.Q(C,{6z:0,ap:\'24\',6V:0});q(3l)m.Q(C,3l);q(4r)4r.1G(C);D C},3e:B(C,3h){W(u x 3A 3h)C[x]=3h[x];D C},Q:B(C,3l){W(u x 3A 3l){q(m.2Y&&x==\'1B\'){q(3l[x]>0.99)C.F.bp(\'4C\');L C.F.4C=\'97(1B=\'+(3l[x]*2A)+\')\'}L C.F[x]=3l[x]}},41:B(C,1a,2P){u 3S,3Y,3P;q(1t 2P!=\'6W\'||2P===I){u 2S=aE;2P={3w:2S[2],2g:2S[3],83:2S[4]}}q(1t 2P.3w!=\'42\')2P.3w=6j;2P.2g=1r[2P.2g]||1r.8M;2P.5d=m.3e({},1a);W(u 2z 3A 1a){u e=1w m.1C(C,2P,2z);3S=6t(m.79(C,2z))||0;3Y=6t(1a[2z]);3P=2z!=\'1B\'?\'E\':\'\';e.2O(3S,3Y,3P)}},79:B(C,1a){q(C.F[1a]){D C.F[1a]}L q(N.87){D N.87.9k(C,I).9i(1a)}L{q(1a==\'1B\')1a=\'4C\';u 2R=C.4u[1a.2i(/\\-(\\w)/g,B(a,b){D b.bo()})];q(1a==\'4C\')2R=2R.2i(/97\\(1B=([0-9]+)\\)/,B(a,b){D b/2A});D 2R===\'\'?1:2R}},5y:B(){u d=N,w=1y,58=d.5G&&d.5G!=\'6M\'?d.44:d.V,2Y=m.1L&&(m.26<9||1t 8y==\'1X\');u K=2Y?58.8Q:(d.44.8Q||5o.bv),M=2Y?58.bu:5o.bm;m.3k={K:K,M:M,5T:2Y?58.5T:8y,5U:2Y?58.5U:bf};D m.3k},85:B(C){u p={x:C.8x,y:C.6G};3T(C.8p){C=C.8p;p.x+=C.8x;p.y+=C.6G;q(C!=N.V&&C!=N.44){p.x-=C.5T;p.y-=C.5U}}D p},53:B(a,1E,2O,R){q(!a)a=m.14(\'a\',I,{1O:\'24\'},m.1S);q(1t a.4V==\'B\')D 1E;q(R==\'2Q\'){W(u i=0;i7n){7n=1u;5g=i}}}q(5g==-1)m.2q=-1;L P[5g].3d()},3U:B(a,4R){a.4V=a.2M;u p=a.4V?a.4V():I;a.4V=I;D(p&&1t p[4R]!=\'1X\')?p[4R]:(1t m[4R]!=\'1X\'?m[4R]:I)},5m:B(a){u T=m.3U(a,\'T\');q(T)D T;D a.2v},3z:B(1j){u 1D=m.$(1j),3M=m.7k[1j],a={};q(!1D&&!3M)D I;q(!3M){3M=1D.61(J);3M.1j=\'\';m.7k[1j]=3M;D 1D}L{D 3M.61(J)}},3j:B(d){q(d)m.7g.1G(d);m.7g.2n=\'\'},8t:B(7F,A){u 3r=A||m.3v();A=3r;q(m.3B)D 1h;L m.3r=3r;m.4g(N,1y.30?\'5i\':\'5h\',m.4D);1m{m.3B=7F;7F.2M()}1l(e){m.3r=m.3B=I}1m{A.28()}1l(e){}D 1h},5k:B(C,2w){u A=m.3v(C);q(A)D m.8t(A.6B(2w),A);L D 1h},5n:B(C){D m.5k(C,-1)},1M:B(C){D m.5k(C,1)},4D:B(e){q(!e)e=1y.1Y;q(!e.2j)e.2j=e.6p;q(1t e.2j.7O!=\'1X\')D J;u A=m.3v();u 2w=I;8T(e.aI){1J 70:q(A)A.7i();D J;1J 32:1J 34:1J 39:1J 40:2w=1;7N;1J 8:1J 33:1J 37:1J 38:2w=-1;7N;1J 27:1J 13:2w=0}q(2w!==I){m.4g(N,1y.30?\'5i\':\'5h\',m.4D);q(!m.8C)D J;q(e.65)e.65();L e.aY=1h;q(A){q(2w==0){A.28()}L{m.5k(A.S,2w)}D 1h}}D J},b1:B(19){m.20(m.1Q,m.3e(19,{2F:\'2F\'+m.4y++}))},7S:B(7C,5M){u C,2t=/^U-Y-([0-9]+)$/;C=7C;3T(C.3a){q(C.1j&&2t.16(C.1j))D C.1j.2i(2t,"$1");C=C.3a}q(!5M){C=7C;3T(C.3a){q(C.4c&&m.5W(C)){W(u S=0;S1)D J;q(!e.2j)e.2j=e.6p;u C=e.2j;3T(C.3a&&!(/U-(2D|3I|2Q|3q)/.16(C.1p))){C=C.3a}u A=m.3v(C);q(A&&(A.4z||!A.4e))D J;q(A&&e.R==\'7H\'){q(e.2j.7O)D J;u 2Z=C.1p.2Z(/U-(2D|3I|3q)/);q(2Z){m.2a={A:A,R:2Z[1],1f:A.x.H,K:A.x.G,18:A.y.H,M:A.y.G,8J:e.5Q,8F:e.5f};m.1R(N,\'6o\',m.8a);q(e.65)e.65();q(/U-(2D|2Q)-7s/.16(A.O.1p)){A.3d();m.7p=J}D 1h}L q(/U-2Q/.16(C.1p)&&m.2q!=A.S){A.3d();A.4a(\'1n\')}}L q(e.R==\'9t\'){m.4g(N,\'6o\',m.8a);q(m.2a){q(m.4i&&m.2a.R==\'2D\')m.2a.A.O.F.3L=m.4i;u 3f=m.2a.3f;q(!3f&&!m.7p&&!/(3I|3q)/.16(m.2a.R)){A.28()}L q(3f||(!3f&&m.8O)){m.2a.A.4a(\'1n\')}q(m.2a.A.2W)m.2a.A.2W.F.1O=\'24\';m.7p=1h;m.2a=I}L q(/U-2D-7s/.16(C.1p)){C.F.3L=m.4i}}D 1h},8a:B(e){q(!m.2a)D J;q(!e)e=1y.1Y;u a=m.2a,A=a.A;q(A.11){q(!A.2W)A.2W=m.14(\'1i\',I,{1d:\'22\',K:A.x.G+\'E\',M:A.y.G+\'E\',1f:A.x.cb+\'E\',18:A.y.cb+\'E\',1u:4,94:(m.2Y?\'bh\':\'24\'),1B:0.cD},A.Y,J);q(A.2W.F.1O==\'24\')A.2W.F.1O=\'\'}a.5q=e.5Q-a.8J;a.5r=e.5f-a.8F;u 6A=1r.cU(1r.8E(a.5q,2)+1r.8E(a.5r,2));q(!a.3f)a.3f=(a.R!=\'2D\'&&6A>0)||(6A>(m.cR||5));q(a.3f&&e.5Q>5&&e.5f>5){q(a.R==\'3q\')A.3q(a);L{A.7x(a.1f+a.5q,a.18+a.5r);q(a.R==\'2D\')A.O.F.3L=\'3I\'}}D 1h},8c:B(e){1m{q(!e)e=1y.1Y;u 67=/cW/i.16(e.R);q(!e.2j)e.2j=e.6p;q(!e.6l)e.6l=67?e.cZ:e.cY;u A=m.3v(e.2j);q(!A.4e)D;q(!A||!e.6l||m.3v(e.6l,J)==A||m.2a)D;W(u i=0;i=k.1N.3w+k.84){k.3Q=k.3Y;k.H=k.80=1;k.7Q();k.1N.5d[k.1a]=J;u 86=J;W(u i 3A k.1N.5d)q(k.1N.5d[i]!==J)86=1h;q(86){q(k.1N.83)k.1N.83.8v(k.2k)}D 1h}L{u n=t-k.84;k.80=n/k.1N.3w;k.H=k.1N.2g(n,0,1,k.1N.3w);k.3Q=k.3S+((k.3Y-k.3S)*k.H);k.7Q()}D J}};m.3e(m.1C,{3o:{1B:B(1C){m.Q(1C.2k,{1B:1C.3Q})},8z:B(1C){1m{q(1C.2k.F&&1C.2k.F[1C.1a]!=I)1C.2k.F[1C.1a]=1C.3Q+1C.3P;L 1C.2k[1C.1a]=1C.3Q}1l(e){}}}});m.4L=B(1x,2J){k.2J=2J;k.1x=1x;u v=m.26,5O;k.6C=m.1L&&m.26<7;q(!1x){q(2J)2J();D}m.5N();k.2m=m.14(\'2m\',{d7:0},{1q:\'1n\',1d:\'22\',d8:\'dc\',K:0},m.1S,J);u 7W=m.14(\'7W\',I,I,k.2m,1);k.29=[];W(u i=0;i<=8;i++){q(i%3==0)5O=m.14(\'5O\',I,{M:\'1H\'},7W,J);k.29[i]=m.14(\'29\',I,I,5O,J);u F=i!=4?{db:0,da:0}:{1d:\'3K\'};m.Q(k.29[i],F)}k.29[4].1p=1x+\' U-1o\';k.8P()};m.4L.54={8P:B(){u T=m.56+(m.d9||"cL/")+k.1x+".cE";u 98=m.4X&&m.26<8i?m.1S:I;k.2X=m.14(\'1v\',I,{1d:\'22\',18:\'-3R\'},98,J);u 36=k;k.2X.3H=B(){36.96()};k.2X.T=T},96:B(){u o=k.1s=k.2X.K/4,H=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1F={M:(2*o)+\'E\',K:(2*o)+\'E\'};W(u i=0;i<=8;i++){q(H[i]){q(k.6C){u w=(i==1||i==7)?\'2A%\':k.2X.K+\'E\';u 1i=m.14(\'1i\',I,{K:\'2A%\',M:\'2A%\',1d:\'3K\',1W:\'1n\'},k.29[i],J);m.14(\'1i\',I,{4C:"c6:c5.9M.c4(c8=c9, T=\'"+k.2X.T+"\')",1d:\'22\',K:w,M:k.2X.M+\'E\',1f:(H[i][0]*o)+\'E\',18:(H[i][1]*o)+\'E\'},1i,J)}L{m.Q(k.29[i],{94:\'6X(\'+k.2X.T+\') \'+(H[i][0]*o)+\'E \'+(H[i][1]*o)+\'E\'})}q(1y.30&&(i==3||i==5))m.14(\'1i\',I,1F,k.29[i],J);m.Q(k.29[i],1F)}}k.2X=I;q(m.3G[k.1x])m.3G[k.1x].5l();m.3G[k.1x]=k;q(k.2J)k.2J()},4B:B(H,1s,9a,3b,2g){u A=k.A,4A=A.Y.F,1s=1s||0,H=H||{x:A.x.H+1s,y:A.y.H+1s,w:A.x.1b(\'1K\')-2*1s,h:A.y.1b(\'1K\')-2*1s};q(9a)k.2m.F.1q=(H.h>=4*k.1s)?\'2l\':\'1n\';m.Q(k.2m,{1f:(H.x-k.1s)+\'E\',18:(H.y-k.1s)+\'E\',K:(H.w+2*k.1s)+\'E\'});H.w-=2*k.1s;H.h-=2*k.1s;m.Q(k.29[4],{K:H.w>=0?H.w+\'E\':0,M:H.h>=0?H.h+\'E\':0});q(k.6C)k.29[3].F.M=k.29[5].F.M=k.29[4].F.M},5l:B(9d){q(9d)k.2m.F.1q=\'1n\';L m.3j(k.2m)}};m.5t=B(A,1F){k.A=A;k.1F=1F;k.2H=1F==\'x\'?\'cd\':\'cc\';k.2C=k.2H.5x();k.4J=1F==\'x\'?\'ca\':\'c3\';k.6J=k.4J.5x();k.6P=1F==\'x\'?\'c2\':\'bV\';k.bU=k.6P.5x();k.1V=k.2U=0};m.5t.54={1b:B(S){8T(S){1J\'7R\':D k.1A+k.2s+(k.t-m.21[\'1s\'+k.2H])/2;1J\'1K\':D k.G+2*k.cb+k.1V+k.2U;1J\'4b\':D k.5E-k.3y-k.5F;1J\'6K\':D k.1b(\'4b\')-2*k.cb-k.1V-k.2U;1J\'4w\':D k.H-(k.A.1o?k.A.1o.1s:0);1J\'88\':D k.1b(\'1K\')+(k.A.1o?2*k.A.1o.1s:0);1J\'5u\':D k.1T?1r.5Y((k.G-k.1T)/2):0}},6v:B(){k.cb=(k.A.O[\'1s\'+k.2H]-k.t)/2;k.5F=m[\'6V\'+k.6P]},6y:B(){k.t=k.A.C[k.2C]?49(k.A.C[k.2C]):k.A.C[\'1s\'+k.2H];k.1A=k.A.1A[k.1F];k.2s=(k.A.C[\'1s\'+k.2H]-k.t)/2;q(k.1A==0||k.1A==-1){k.1A=(m.3k[k.2C]/2)+m.3k[\'3s\'+k.4J]}},6u:B(){u A=k.A;k.3X=\'1H\';k.H=k.1A-k.cb+k.2s;q(k.6N&&k.1F==\'x\')A.5X=1r.2L(A.5X||k.Z,A.6N*k.Z/A.y.Z);k.G=1r.2L(k.Z,A[\'7l\'+k.2H]||k.Z);k.2E=A.4I?1r.2L(A[\'2L\'+k.2H],k.Z):k.Z;q(A.2o&&A.2K){k.G=A[k.2C];k.1T=k.Z}q(k.1F==\'x\'&&m.4M)k.2E=A.3O;k.3y=m[\'6V\'+k.4J];k.3s=m.3k[\'3s\'+k.4J];k.5E=m.3k[k.2C]},7J:B(i){u A=k.A;q(A.2o&&(A.2K||m.4M)){k.1T=i;k.G=1r.7l(k.G,k.1T);A.O.F[k.6J]=k.1b(\'5u\')+\'E\'}L k.G=i;A.O.F[k.2C]=i+\'E\';A.Y.F[k.2C]=k.1b(\'1K\')+\'E\';q(A.1o)A.1o.4B();q(A.2W)A.2W.F[k.2C]=i+\'E\';q(k.1F==\'y\'&&A.4v&&A.V.F.M!=\'1H\')1m{A.4v.V.F.1W=\'1H\'}1l(e){}q(A.1Z){u d=A.2c;q(k.7a===1X)k.7a=A.1g[\'1s\'+k.2H]-d[\'1s\'+k.2H];d.F[k.2C]=(k.G-k.7a)+\'E\';q(k.1F==\'x\')A.3D.F.K=\'1H\';q(A.V)A.V.F[k.2C]=\'1H\'}q(k.1F==\'x\'&&A.1z)A.4m(J)},7j:B(i){k.H=i;k.A.Y.F[k.6J]=i+\'E\';q(k.A.1o)k.A.1o.4B()}};m.4S=B(a,1E,2O,2B){q(N.9r&&m.1L&&!m.6Z){m.1R(N,\'3p\',B(){1w m.4S(a,1E,2O,2B)});D}k.a=a;k.2O=2O;k.2B=2B||\'2D\';k.1Z=(2B==\'2Q\');k.2o=!k.1Z;m.6n=1h;k.1Q=[];m.5N();u S=k.S=m.P.1c;W(u i=0;i(k.x.1T||k.x.G)){k.9W();q(k.1Q.1c==1)k.4m()}}k.7M()}1l(e){k.7w(e)}},7d:B(4r,1H){u c=m.4d(4r,\'5H\',\'U-V\');q(/(11|3c)/.16(k.2f)){q(k.3i)c.F.K=k.3i+\'E\';q(k.3J)c.F.M=k.3J+\'E\'}},5S:B(){q(k.av)D;u A=k;k.V=m.4d(k.1g,\'5H\',\'U-V\');q(k.2f==\'11\'){k.4t();u 4n=m.2I.61(1);k.V.1G(4n);k.cn=k.1g.2e;q(!k.3i)k.3i=4n.2e;u 45=k.1g.1I-k.V.1I,h=k.3J||m.3k.M-45-m.3N-m.6f,3H=k.31==\'4K\'?\' 3H="q (m.P[\'+k.S+\']) m.P[\'+k.S+\'].4x()" \':\'\';k.V.2n+=\'<11 2z="m\'+(1w 5s()).59()+\'" cq="0" S="\'+k.S+\'" \'+\' F="K:\'+k.3i+\'E; M:\'+h+\'E" \'+3H+\' T="\'+k.T+\'" >\';k.4n=k.V.3x(\'1i\')[0];k.11=k.V.3x(\'11\')[0];q(k.31==\'4O\')k.6S()}q(k.2f==\'3c\'){k.V.1j=k.V.1j||\'m-cm-1j-\'+k.S;u a=k.7I;q(!a.1E)a.1E={};q(1t a.1E.aF==\'1X\')a.1E.aF=\'ci\';q(7D)7D.cj(k.T,k.V.1j,k.3i,k.3J,a.ck||\'7\',a.cC,a.al,a.1E,a.ay)}k.av=J},76:B(){q(k.11&&!k.3J){k.11.F.M=k.V.F.M=k.at()+\'E\'}k.1g.1G(m.2I);q(!k.x.Z)k.x.Z=k.1g.2e;k.y.Z=k.1g.1I;k.1g.aj(m.2I);q(m.1L&&k.au>49(k.1g.4u.M)){k.au=49(k.1g.4u.M)}m.Q(k.Y,{1d:\'22\',6z:\'0\'});m.Q(k.O,{K:k.x.t+\'E\',M:k.y.t+\'E\'})},at:B(){u h;1m{u 1U=k.4v=k.11.6r||k.11.52.N;u 2I=1U.14(\'1i\');2I.F.ar=\'aw\';1U.V.1G(2I);h=2I.6G;q(m.1L)h+=49(1U.V.4u.3N)+49(1U.V.4u.6f)-1}1l(e){h=bY}D h},6S:B(){u 4k=k.1g.2e-k.4n.2e;m.3j(k.4n);q(4k<0)4k=0;u 45=k.1g.1I-k.11.1I;q(k.4v&&!k.3J&&!k.M&&k.y.G==k.y.Z)1m{k.4v.V.F.1W=\'1n\'}1l(e){}m.Q(k.11,{K:1r.7u(k.x.G-4k)+\'E\',M:1r.7u(k.y.G-45)+\'E\'});m.Q(k.V,{K:k.11.F.K,M:k.11.F.M});k.4p=k.11;k.2c=k.4p},aq:B(){k.7d(k.1g);q(k.2f==\'3c\'&&k.31==\'4K\')k.5S();q(k.x.G1D.1I){1D.F.K=(49(1D.F.K)+5C)+\'E\'}k.4p=1D;k.2c=k.4p}q(k.11&&k.31==\'4K\')k.6S();q(!k.4p&&k.y.Gk.2c.3a.1I){4T("1m { m.P["+k.S+"].2c.F.1W = \'1H\'; } 1l(e) {}",m.7c)}},3X:B(p,3W){u bW,bS=p.2j,1F=p==k.x?\'x\':\'y\';u 6R=1h;u 3V=p.A.4I;p.H=1r.5Y(p.H-((p.1b(\'1K\')-p.t)/2));q(p.Hp.3s+p.5E-p.5F){q(!3W&&6R&&3V){p.G=1r.2L(p.G,p.1b(1F==\'y\'?\'4b\':\'6K\'))}L q(p.1b(\'1K\')2d){ 2r=2N*2d;q(2rk.4s&&x.G>k.3O&&y.1b(\'1K\')>y.1b(\'4b\')){y.G-=10;q(2d)x.G=y.G*2d;k.4m(0,1);2V=J}}D 2V},7M:B(){u x=k.x,y=k.y;k.4a(\'1n\');k.7z(1,{Y:{K:x.1b(\'1K\'),M:y.1b(\'1K\'),1f:x.H,18:y.H},O:{1f:x.1V+x.1b(\'5u\'),18:y.1V+y.1b(\'5u\'),K:x.1T||x.G,M:y.1T||y.G}},m.7c)},7z:B(2y,2h,3b){q(k.1o&&!k.3g){q(2y)k.1o.4B();L k.1o.5l((k.1Z&&k.48))}q(!2y)k.9V();u A=k,x=A.x,y=A.y,2g=k.2g;q(!2y)2g=k.an||2g;u 4O=2y?B(){q(A.1o)A.1o.2m.F.1q="2l";4T(B(){A.aC()},50)}:B(){A.7A()};q(2y)m.Q(k.Y,{K:x.t+\'E\',M:y.t+\'E\'});q(2y&&k.1Z){m.Q(k.Y,{1f:(x.1A-x.cb+x.2s)+\'E\',18:(y.1A-y.cb+y.2s)+\'E\'})}q(k.am){m.Q(k.Y,{1B:2y?0:1});m.3e(2h.Y,{1B:2y})}m.41(k.Y,2h.Y,{3w:3b,2g:2g,3o:B(2R,2S){q(A.1o&&A.3g&&2S.1a==\'18\'){u 4G=2y?2S.H:1-2S.H;u H={w:x.t+(x.1b(\'1K\')-x.t)*4G,h:y.t+(y.1b(\'1K\')-y.t)*4G,x:x.1A+(x.H-x.1A)*4G,y:y.1A+(y.H-y.1A)*4G};A.1o.4B(H,0,1)}q(A.1Z){q(2S.1a==\'1f\')A.3D.F.1f=(x.H-2R)+\'E\';q(2S.1a==\'18\')A.3D.F.18=(y.H-2R)+\'E\'}}});m.41(k.O,2h.O,3b,2g,4O);q(2y){k.Y.F.1q=\'2l\';k.O.F.1q=\'2l\';q(k.1Z)k.1g.F.1q=\'2l\';k.a.1p+=\' U-9T-9O\'}},aC:B(){k.4e=J;k.3d();q(k.1Z&&k.31==\'4O\')k.5S();q(k.11){1m{u A=k,1U=k.11.6r||k.11.52.N;m.1R(1U,\'7H\',B(){q(m.2q!=A.S)A.3d()})}1l(e){}q(m.1L&&1t k.4z!=\'ce\')k.11.F.K=(k.3i-1)+\'E\'}q(m.3B&&m.3B==k.a)m.3B=I;k.ax();u p=m.3k,6I=m.5R.x+p.5T,6D=m.5R.y+p.5U;k.6x=k.x.H<6I&&6Ik.x.1b(\'4w\')+k.x.1b(\'88\'));u 9p=(2T.y+2T.hk.y.1b(\'4w\')+k.y.1b(\'88\'));u 5c=m.7S(1k[i]);q(!9o&&!9p&&5c!=k.S){q(!23){1k[i].4N(\'1n-by\',\'[\'+k.S+\']\');1k[i].7q=1k[i].F[1a];1k[i].F[1a]=\'1n\'}L q(23.9v(\'[\'+k.S+\']\')==-1){1k[i].4N(\'1n-by\',23+\'[\'+k.S+\']\')}}L q((23==\'[\'+k.S+\']\'||m.2q==5c)&&5c!=k.S){1k[i].4N(\'1n-by\',\'\');1k[i].F[1a]=1k[i].7q||\'\'}L q(23&&23.9v(\'[\'+k.S+\']\')>-1){1k[i].4N(\'1n-by\',23.2i(\'[\'+k.S+\']\',\'\'))}}}}},3d:B(){k.Y.F.1u=m.4l+=2;W(u i=0;i=5.5){s=s.2i(1w 5P(\']*>\',\'aB\'),\'\').2i(1w 5P(\']*>.*?\',\'aB\'),\'\');q(k.11){u 1U=k.11.6r;q(!1U&&k.11.52)1U=k.11.52.N;q(!1U){u 36=k;4T(B(){36.4Y()},25);D}1U.ak();1U.bO(s);1U.28();1m{s=1U.6F(k.1j).2n}1l(e){1m{s=k.11.N.6F(k.1j).2n}1l(e){}}m.3j(k.11)}L{5I=/(]*>|<\\/V>)/ba;q(5I.16(s))s=s.az(5I)[m.2Y?1:2]}}m.4d(k.O,\'5H\',\'U-V\').2n=s;k.2J();W(u x 3A k)k[x]=I}};m.5z=m.1e;u b6=m.4S;q(m.1L&&1y==1y.18){(B(){1m{N.44.aW(\'1f\')}1l(e){4T(aE.aX,50);D}m.3p()})()}m.1R(N,\'b9\',m.3p);m.1R(1y,\'7o\',m.3p);m.1R(N,\'3p\',B(){q(m.5v){u F=m.14(\'F\',{R:\'aK/79\'},I,N.3x(\'aQ\')[0]),a2=N.5G==\'6M\';B 5B(6U,6T){q(m.1L&&(m.26<9||a2)){u 3r=N.a3[N.a3.1c-1];q(1t(3r.5B)=="6W")3r.5B(6U,6T)}L{F.1G(N.bb(6U+" {"+6T+"}"))}}B cT(1a){D\'cS( ( ( cV = N.44.\'+1a+\' ? N.44.\'+1a+\' : N.V.\'+1a+\' ) ) + \\\'E\\\' );\'}q(m.5v)5B(\'.U 1v\',\'3L: 6X(\'+m.56+m.5v+\'), 5w !d0;\')}});m.1R(1y,\'3q\',B(){m.5y()});m.1R(N,\'6o\',B(e){m.5R={x:e.5Q,y:e.5f}});m.1R(N,\'7H\',m.7K);m.1R(N,\'9t\',m.7K);m.1R(N,\'3p\',m.4Z);m.1R(1y,\'7o\',m.9u);m.1R(1y,\'7o\',m.af)}',62,827,'||||||||||||||||||||this||hs||||if||||var||||||exp|function|el|return|px|style|size|pos|null|true|width|else|height|document|content|expanders|setStyles|type|key|src|highslide|body|for||wrapper|full||iframe|||createElement||test||top|overlay|prop|get|length|position|lang|left|innerContent|false|div|id|els|catch|try|hidden|outline|className|visibility|Math|offset|typeof|zIndex|img|new|outlineType|window|overlayBox|tpos|opacity|fx|node|params|dim|appendChild|auto|offsetHeight|case|wsize|ie|next|options|display|arr|overlays|addEventListener|container|imgSize|doc|p1|overflow|undefined|event|isHtml|push|loading|absolute|hiddenBy|none||uaVersion||close|td|dragArgs|xhr|scrollerDiv|ratio|offsetWidth|objectType|easing|to|replace|target|elem|visible|table|innerHTML|isImage|span|focusKey|xSize|tb|re|title|href|op|ajax|up|name|100|contentType|wh|image|minSize|hsId|right|ucwh|clearing|onLoad|useBox|min|onclick|ySize|custom|opt|html|val|args|elPos|p2|changed|releaseMask|graphic|ieLt9|match|opera|objectLoadTime||||func|pThis||||parentNode|dur|swf|focus|extend|hasDragged|outlineWhileAnimating|attribs|objectWidth|discardElement|page|styles|groups|class|step|ready|resize|last|scroll|timers|li|getExpander|duration|getElementsByTagName|marginMin|getNode|in|upcoming|sleeping|mediumContent|bottom|ieLt7|pendingOutlines|onload|move|objectHeight|relative|cursor|clone|marginTop|minWidth|unit|now|9999px|start|while|getParam|allowReduce|moveOnly|justify|end|images||animate|number|Id|documentElement|hDiff|navigator|cNode|preserveContent|parseInt|doShowHide|fitsize|tagName|getElementByClass|isExpanded|blurExp|removeEventListener|slideshowGroup|styleRestoreCursor|marginLeft|wDiff|zIndexCounter|sizeOverlayBox|ruler|cacheBindings|scrollingContent|htmls|parent|minHeight|showLoading|currentStyle|iDoc|opos|contentLoaded|idCounter|isClosing|stl|setPosition|filter|keyHandler|restoreCursor|all|fac|block|allowSizeReduction|uclt|before|Outline|padToMinWidth|setAttribute|after|preloadTheseImages|on|param|Expander|setTimeout|above|getParams|createOverlay|safari|loadHTML|getAnchors||cache|contentWindow|expand|prototype|matches|graphicsDir|mask|iebody|getTime|showHideElements|preloadTheseAjax|wrapperKey|curAnim|gotoEnd|clientY|topmostKey|keydown|keypress|Ajax|previousOrNext|destroy|getSrc|previous|self|positionOverlay|dX|dY|Date|Dimension|imgPad|expandCursor|pointer|toLowerCase|getPageSize|langDefaults|allowHeightReduction|addRule|kdeBugCorr|allowWidthReduction|clientSize|marginMax|compatMode|DIV|regBody|cachedGets|anchors|pre|expOnly|init|tr|RegExp|clientX|mouse|writeExtendedContent|scrollLeft|scrollTop|userAgent|isHsAnchor|maxWidth|round|hideOnMouseOut|overlayId|cloneNode|offY|tId|offX|preventDefault|heading|over|preloadFullImage|fullExpandLabel|below|thumbsUserSetId|ypos|sg|onLoadStarted|marginBottom|os|onReady|maincontent|250|xpos|relatedTarget|marginRight|continuePreloading|mousemove|srcElement|middle|contentDocument|overrides|parseFloat|calcExpanded|calcBorders|cancelLoading|mouseIsOver|calcThumb|padding|distance|getAdjacentAnchor|hasAlphaImageLoader|mY|cur|getElementById|offsetTop|center|mX|lt|maxsize|arrow|BackCompat|maxHeight|thumbnailId|ucrb|Click|hasMovedMin|correctIframeSize|dec|sel|margin|object|url|fitOverlayBox|isReady||numberOfImagesToPreload|ie6|panel|doWrapper||htmlGetSize|getInline|wrapperClassName|css|sizeDiff|dragByHeading|expandDuration|setObjContainerSize|credits|contentId|garbageBin|restoreTitle|doFullExpand|setPos|clones|max|allowMultipleInstances|topZ|load|hasFocused|origProp|preloadAjaxElement|blur|getCacheBinding|abs|onError|error|moveTo|run|changeSize|afterClose|openerTagNames|element|swfobject|getSelfRendered|adj|resizeTo|mousedown|swfOptions|setSize|mouseClickHandler|string|show|break|form|Create|update|loadingPos|getWrapperKey|location|fade|geckoMac|tbody|types|getElementContent|Text|state|connectOutline|cacheAjax|complete|startTime|getPosition|done|defaultView|osize|cssDirection|dragHandler|direction|wrapperMouseHandler|pageOrigin|Next|JS|Highslide|Play|525|Close|Pause|spacebar|slideshow|Previous|thumb|offsetParent|from|timerId|orig|transit|updateAnchors|call|replaceLang|offsetLeft|pageXOffset|_default|skin|contentWrapper|enableKeyListener|htmlExpand|pow|clickY|loadingTitle|ltr|detachEvent|clickX|loadingText|focusTopmost|easeInQuad|loadingOpacity|hasHtmlExpanders|preloadGraphic|clientWidth|moveText|moveTitle|switch|closeTitle|closeText|nextText|nextTitle|and|200|previousTitle|previousText|ul|resizeTitle|background|nopad|onGraphicLoad|alpha|appendTo||vis|tag|headingOverlay|hide|captionOverlay|rv|Move|preloadNext|getPropertyValue|getAttribute|getComputedStyle|hideIframes|hideSelects|XMLHttpRequest|clearsX|clearsY|hand|readyState|focusTitle|mouseup|preloadImages|indexOf|Overlay|addOverlay|creditsHref|ie6SSL|getAnchorIndex|current|toString|cachedGet|creditsTarget|creditsTitle|_|nextSibling|Eval|setRequestHeader|creditsPosition|XMLHTTP|Microsoft|showOverlays|anchor|doPanels|genOverlayBox|gotOverlays|sleep|active|fullExpandOpacity|destroyOverlays|createFullExpand|javascript|fullExpandTitle|fullExpandPosition|writeCredits|showCredits|backCompat|styleSheets|destroyObject|htmlPrepareClose|ActiveXObject|restoreDuration|awake|offsetX|getOverlays|reOrder|rightpanel|leftpanel|offsetY|preloadAjax|creditsText|KDE|vendor|removeChild|open|flashvars|fadeInOut|easingClose|tmpMin|border|htmlSizeOperations|clear||getIframePageHeight|newHeight|hasExtendedContent|both|prepareNextOutline|attributes|split|correctRatio|gi|afterExpand|script|arguments|wmode|captionEval|Use|keyCode|button|text|drag|headingId|graphics|_self|shadow|HEAD|click|drop|keys|header|htmlE|doScroll|callee|returnValue|outlineStartOffset|footer|registerOverlay|http|headingText|com|captionId|HsExpander|xpand|fullExpandText|DOMContentLoaded|ig|createTextNode|captionText|forceAjaxReload|urlencoded|pageYOffset|send|white|Gecko|Type|application|www|innerHeight|link|toUpperCase|removeAttribute|responseText|blank|about|1001|clientHeight|innerWidth|Content|Macintosh||dummy|GET|zoomout|maincontentText|maincontentId|Msxml2|onreadystatechange|zoomin|maincontentEval|oPos|it|ra|Safari|Trident|With|write|Requested|headingEval|pauseTitle|tgt|actual|rb|Bottom|tgtArr|Expand|300|nodeName|insertBefore|front|Right|Top|AlphaImageLoader|DXImageTransform|progid|Powered|sizingMethod|scale|Left||Height|Width|boolean|allowSimultaneousLoading|onmouseover|flushImgSize|transparent|embedSWF|version|htmlCreate|flash|newWidth|Loading|static|frameborder|oncontextmenu|blockRightClick|Line|alert|debug|onmouseout|lineNumber|message|imageCreate|cancel|bring|expressInstallSwfurl|01|png|paddingTop|200px|https|protocol|1px|linearTween|outlines|pauseText|StopPlay|removeSWF|caption|useOnHtml|dragSensitivity|expression|fix|sqrt|ignoreMe|mouseover|attachEvent|toElement|fromElement|important|default|playTitle|Go|eval|SELECT|the|cellSpacing|borderCollapse|outlinesDir|fontSize|lineHeight|collapse|playText|IFRAME|clearInterval|homepage|splice|esc|Resize|setInterval'.split('|'),0,{})) diff --git a/html/highslide/highslide.css b/html/highslide/highslide.css new file mode 100644 index 000000000..cedd6a94c --- /dev/null +++ b/html/highslide/highslide.css @@ -0,0 +1,889 @@ +/** +* @file: highslide.css +* @version: 4.1.13 +*/ +.highslide-container div { + font-family: Verdana, Helvetica; + font-size: 10pt; +} +.highslide-container table { + background: none; +} +.highslide { + outline: none; + text-decoration: none; +} +.highslide img { +/* border: 2px solid silver;*/ +} +.highslide:hover img { + border-color: gray; +} +.highslide-active-anchor img { + visibility: hidden; +} +.highslide-gallery .highslide-active-anchor img { + border-color: black; + visibility: visible; + cursor: default; +} +.highslide-image { + border-width: 2px; + border-style: solid; + border-color: white; +} +.highslide-wrapper, .highslide-outline { + background: white; +} +.glossy-dark { + background: #111; +} + +.highslide-image-blur { +} +.highslide-number { + font-weight: bold; + color: gray; + font-size: .9em; +} +.highslide-caption { + display: none; + font-size: 1em; + padding: 5px; + /*background: white;*/ +} +.highslide-heading { + display: none; + font-weight: bold; + margin: 0.4em; +} +.highslide-dimming { + /*position: absolute;*/ + background: black; +} +a.highslide-full-expand { + background: url(graphics/fullexpand.gif) no-repeat; + display: block; + margin: 0 10px 10px 0; + width: 34px; + height: 34px; +} +.highslide-loading { + display: block; + color: black; + font-size: 9px; + font-weight: bold; + text-transform: uppercase; + text-decoration: none; + padding: 3px; + border: 1px solid white; + background-color: white; + padding-left: 22px; + background-image: url(graphics/loader.white.gif); + background-repeat: no-repeat; + background-position: 3px 1px; +} +a.highslide-credits, +a.highslide-credits i { + padding: 2px; + color: silver; + text-decoration: none; + font-size: 10px; +} +a.highslide-credits:hover, +a.highslide-credits:hover i { + color: white; + background-color: gray; +} +.highslide-move, .highslide-move * { + cursor: move; +} + +.highslide-viewport { + display: none; + position: fixed; + width: 100%; + height: 100%; + z-index: 1; + background: none; + left: 0; + top: 0; +} +.highslide-overlay { + display: none; +} +.hidden-container { + display: none; +} +/* Example of a semitransparent, offset closebutton */ +.closebutton { + position: relative; + top: -15px; + left: 15px; + width: 30px; + height: 30px; + cursor: pointer; + background: url(graphics/close.png); + /* NOTE! For IE6, you also need to update the highslide-ie6.css file. */ +} + +/*****************************************************************************/ +/* Thumbnail boxes for the galleries. */ +/* Remove these if you are not using a gallery. */ +/*****************************************************************************/ +.highslide-gallery ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.highslide-gallery ul li { + display: block; + position: relative; + float: left; + width: 106px; + height: 106px; + border: 1px solid silver; + background: #ededed; + margin: 2px; + padding: 0; + line-height: 0; + overflow: hidden; +} +.highslide-gallery ul a { + position: absolute; + top: 50%; + left: 50%; +} +.highslide-gallery ul img { + position: relative; + top: -50%; + left: -50%; +} +html>/**/body .highslide-gallery ul li { + display: table; + text-align: center; +} +html>/**/body .highslide-gallery ul li { + text-align: center; +} +html>/**/body .highslide-gallery ul a { + position: static; + display: table-cell; + vertical-align: middle; +} +html>/**/body .highslide-gallery ul img { + position: static; +} + +/*****************************************************************************/ +/* Controls for the galleries. */ +/* Remove these if you are not using a gallery */ +/*****************************************************************************/ +.highslide-controls { + width: 195px; + height: 40px; + background: url(graphics/controlbar-white.gif) 0 -90px no-repeat; + margin: 20px 15px 10px 0; +} +.highslide-controls ul { + position: relative; + left: 15px; + height: 40px; + list-style: none; + margin: 0; + padding: 0; + background: url(graphics/controlbar-white.gif) right -90px no-repeat; + +} +.highslide-controls li { + float: left; + padding: 5px 0; + margin:0; + list-style: none; +} +.highslide-controls a { + background-image: url(graphics/controlbar-white.gif); + display: block; + float: left; + height: 30px; + width: 30px; + outline: none; +} +.highslide-controls a.disabled { + cursor: default; +} +.highslide-controls a.disabled span { + cursor: default; +} +.highslide-controls a span { + /* hide the text for these graphic buttons */ + display: none; + cursor: pointer; +} + + +/* The CSS sprites for the controlbar - see http://www.google.com/search?q=css+sprites */ +.highslide-controls .highslide-previous a { + background-position: 0 0; +} +.highslide-controls .highslide-previous a:hover { + background-position: 0 -30px; +} +.highslide-controls .highslide-previous a.disabled { + background-position: 0 -60px !important; +} +.highslide-controls .highslide-play a { + background-position: -30px 0; +} +.highslide-controls .highslide-play a:hover { + background-position: -30px -30px; +} +.highslide-controls .highslide-play a.disabled { + background-position: -30px -60px !important; +} +.highslide-controls .highslide-pause a { + background-position: -60px 0; +} +.highslide-controls .highslide-pause a:hover { + background-position: -60px -30px; +} +.highslide-controls .highslide-next a { + background-position: -90px 0; +} +.highslide-controls .highslide-next a:hover { + background-position: -90px -30px; +} +.highslide-controls .highslide-next a.disabled { + background-position: -90px -60px !important; +} +.highslide-controls .highslide-move a { + background-position: -120px 0; +} +.highslide-controls .highslide-move a:hover { + background-position: -120px -30px; +} +.highslide-controls .highslide-full-expand a { + background-position: -150px 0; +} +.highslide-controls .highslide-full-expand a:hover { + background-position: -150px -30px; +} +.highslide-controls .highslide-full-expand a.disabled { + background-position: -150px -60px !important; +} +.highslide-controls .highslide-close a { + background-position: -180px 0; +} +.highslide-controls .highslide-close a:hover { + background-position: -180px -30px; +} + +/*****************************************************************************/ +/* Styles for the HTML popups */ +/* Remove these if you are not using Highslide HTML */ +/*****************************************************************************/ +.highslide-maincontent { + display: none; +} +.highslide-html { + background-color: white; +} +.mobile .highslide-html { + border: 1px solid silver; +} +.highslide-html-content { + display: none; + width: 400px; + padding: 0 5px 5px 5px; +} +.highslide-header { + padding-bottom: 5px; +} +.highslide-header ul { + margin: 0; + padding: 0; + text-align: right; +} +.highslide-header ul li { + display: inline; + padding-left: 1em; +} +.highslide-header ul li.highslide-previous, .highslide-header ul li.highslide-next { + display: none; +} +.highslide-header a { + font-weight: bold; + color: gray; + text-transform: uppercase; + text-decoration: none; +} +.highslide-header a:hover { + color: black; +} +.highslide-header .highslide-move a { + cursor: move; +} +.highslide-footer { + height: 16px; +} +.highslide-footer .highslide-resize { + display: block; + float: right; + margin-top: 5px; + height: 11px; + width: 11px; + background: url(graphics/resize.gif) no-repeat; +} +.highslide-footer .highslide-resize span { + display: none; +} +.highslide-body { +} +.highslide-resize { + cursor: nw-resize; +} + +/*****************************************************************************/ +/* Styles for the Individual wrapper class names. */ +/* See www.highslide.com/ref/hs.wrapperClassName */ +/* You can safely remove the class name themes you don't use */ +/*****************************************************************************/ + +/* hs.wrapperClassName = 'draggable-header' */ +.draggable-header .highslide-header { + height: 18px; + border-bottom: 1px solid #dddddd; +} +.draggable-header .highslide-heading { + position: absolute; + margin: 2px 0.4em; +} + +.draggable-header .highslide-header .highslide-move { + cursor: move; + display: block; + height: 16px; + position: absolute; + right: 24px; + top: 0; + width: 100%; + z-index: 1; +} +.draggable-header .highslide-header .highslide-move * { + display: none; +} +.draggable-header .highslide-header .highslide-close { + position: absolute; + right: 2px; + top: 2px; + z-index: 5; + padding: 0; +} +.draggable-header .highslide-header .highslide-close a { + display: block; + height: 16px; + width: 16px; + background-image: url(graphics/closeX.png); +} +.draggable-header .highslide-header .highslide-close a:hover { + background-position: 0 16px; +} +.draggable-header .highslide-header .highslide-close span { + display: none; +} +.draggable-header .highslide-maincontent { + padding-top: 1em; +} + +/* hs.wrapperClassName = 'titlebar' */ +.titlebar .highslide-header { + height: 18px; + border-bottom: 1px solid #dddddd; +} +.titlebar .highslide-heading { + position: absolute; + width: 90%; + margin: 1px 0 1px 5px; + color: #666666; +} + +.titlebar .highslide-header .highslide-move { + cursor: move; + display: block; + height: 16px; + position: absolute; + right: 24px; + top: 0; + width: 100%; + z-index: 1; +} +.titlebar .highslide-header .highslide-move * { + display: none; +} +.titlebar .highslide-header li { + position: relative; + top: 3px; + z-index: 2; + padding: 0 0 0 1em; +} +.titlebar .highslide-maincontent { + padding-top: 1em; +} + +/* hs.wrapperClassName = 'no-footer' */ +.no-footer .highslide-footer { + display: none; +} + +/* hs.wrapperClassName = 'wide-border' */ +.wide-border { + background: white; +} +.wide-border .highslide-image { + border-width: 10px; +} +.wide-border .highslide-caption { + padding: 0 10px 10px 10px; +} + +/* hs.wrapperClassName = 'borderless' */ +.borderless .highslide-image { + border: none; +} +.borderless .highslide-caption { + border-bottom: 1px solid white; + border-top: 1px solid white; + background: silver; +} + +/* hs.wrapperClassName = 'outer-glow' */ +.outer-glow { + background: #444; +} +.outer-glow .highslide-image { + border: 5px solid #444444; +} +.outer-glow .highslide-caption { + border: 5px solid #444444; + border-top: none; + padding: 5px; + background-color: gray; +} + +/* hs.wrapperClassName = 'colored-border' */ +.colored-border { + background: white; +} +.colored-border .highslide-image { + border: 2px solid green; +} +.colored-border .highslide-caption { + border: 2px solid green; + border-top: none; +} + +/* hs.wrapperClassName = 'dark' */ +.dark { + background: #111; +} +.dark .highslide-image { + border-color: black black #202020 black; + background: gray; +} +.dark .highslide-caption { + color: white; + background: #111; +} +.dark .highslide-controls, +.dark .highslide-controls ul, +.dark .highslide-controls a { + background-image: url(graphics/controlbar-black-border.gif); +} + +/* hs.wrapperClassName = 'floating-caption' */ +.floating-caption .highslide-caption { + position: absolute; + padding: 1em 0 0 0; + background: none; + color: white; + border: none; + font-weight: bold; +} + +/* hs.wrapperClassName = 'controls-in-heading' */ +.controls-in-heading .highslide-heading { + color: gray; + font-weight: bold; + height: 20px; + overflow: hidden; + cursor: default; + padding: 0 0 0 22px; + margin: 0; + background: url(graphics/icon.gif) no-repeat 0 1px; +} +.controls-in-heading .highslide-controls { + width: 105px; + height: 20px; + position: relative; + margin: 0; + top: -23px; + left: 7px; + background: none; +} +.controls-in-heading .highslide-controls ul { + position: static; + height: 20px; + background: none; +} +.controls-in-heading .highslide-controls li { + padding: 0; +} +.controls-in-heading .highslide-controls a { + background-image: url(graphics/controlbar-white-small.gif); + height: 20px; + width: 20px; +} + +.controls-in-heading .highslide-controls .highslide-move { + display: none; +} + +.controls-in-heading .highslide-controls .highslide-previous a { + background-position: 0 0; +} +.controls-in-heading .highslide-controls .highslide-previous a:hover { + background-position: 0 -20px; +} +.controls-in-heading .highslide-controls .highslide-previous a.disabled { + background-position: 0 -40px !important; +} +.controls-in-heading .highslide-controls .highslide-play a { + background-position: -20px 0; +} +.controls-in-heading .highslide-controls .highslide-play a:hover { + background-position: -20px -20px; +} +.controls-in-heading .highslide-controls .highslide-play a.disabled { + background-position: -20px -40px !important; +} +.controls-in-heading .highslide-controls .highslide-pause a { + background-position: -40px 0; +} +.controls-in-heading .highslide-controls .highslide-pause a:hover { + background-position: -40px -20px; +} +.controls-in-heading .highslide-controls .highslide-next a { + background-position: -60px 0; +} +.controls-in-heading .highslide-controls .highslide-next a:hover { + background-position: -60px -20px; +} +.controls-in-heading .highslide-controls .highslide-next a.disabled { + background-position: -60px -40px !important; +} +.controls-in-heading .highslide-controls .highslide-full-expand a { + background-position: -100px 0; +} +.controls-in-heading .highslide-controls .highslide-full-expand a:hover { + background-position: -100px -20px; +} +.controls-in-heading .highslide-controls .highslide-full-expand a.disabled { + background-position: -100px -40px !important; +} +.controls-in-heading .highslide-controls .highslide-close a { + background-position: -120px 0; +} +.controls-in-heading .highslide-controls .highslide-close a:hover { + background-position: -120px -20px; +} + +/*****************************************************************************/ +/* Styles for text based controls. */ +/* You can safely remove this if you don't use text based controls */ +/*****************************************************************************/ + +.text-controls .highslide-controls { + width: auto; + height: auto; + margin: 0; + text-align: center; + background: none; +} +.text-controls ul { + position: static; + background: none; + height: auto; + left: 0; +} +.text-controls .highslide-move { + display: none; +} +.text-controls li { + background-image: url(graphics/controlbar-text-buttons.png); + background-position: right top !important; + padding: 0; + margin-left: 15px; + display: block; + width: auto; +} +.text-controls a { + background: url(graphics/controlbar-text-buttons.png) no-repeat; + background-position: left top !important; + position: relative; + left: -10px; + display: block; + width: auto; + height: auto; + text-decoration: none !important; +} +.text-controls a span { + background: url(graphics/controlbar-text-buttons.png) no-repeat; + margin: 1px 2px 1px 10px; + display: block; + min-width: 4em; + height: 18px; + line-height: 18px; + padding: 1px 0 1px 18px; + color: #333; + font-family: "Trebuchet MS", Arial, sans-serif; + font-size: 12px; + font-weight: bold; + white-space: nowrap; +} +.text-controls .highslide-next { + margin-right: 1em; +} +.text-controls .highslide-full-expand a span { + min-width: 0; + margin: 1px 0; + padding: 1px 0 1px 10px; +} +.text-controls .highslide-close a span { + min-width: 0; +} +.text-controls a:hover span { + color: black; +} +.text-controls a.disabled span { + color: #999; +} + +.text-controls .highslide-previous span { + background-position: 0 -40px; +} +.text-controls .highslide-previous a.disabled { + background-position: left top !important; +} +.text-controls .highslide-previous a.disabled span { + background-position: 0 -140px; +} +.text-controls .highslide-play span { + background-position: 0 -60px; +} +.text-controls .highslide-play a.disabled { + background-position: left top !important; +} +.text-controls .highslide-play a.disabled span { + background-position: 0 -160px; +} +.text-controls .highslide-pause span { + background-position: 0 -80px; +} +.text-controls .highslide-next span { + background-position: 0 -100px; +} +.text-controls .highslide-next a.disabled { + background-position: left top !important; +} +.text-controls .highslide-next a.disabled span { + background-position: 0 -200px; +} +.text-controls .highslide-full-expand span { + background: none; +} +.text-controls .highslide-full-expand a.disabled { + background-position: left top !important; +} +.text-controls .highslide-close span { + background-position: 0 -120px; +} + + +/*****************************************************************************/ +/* Styles for the thumbstrip. */ +/* See www.highslide.com/ref/hs.addSlideshow */ +/* You can safely remove this if you don't use a thumbstrip */ +/*****************************************************************************/ + +.highslide-thumbstrip { + height: 100%; + direction: ltr; +} +.highslide-thumbstrip div { + overflow: hidden; +} +.highslide-thumbstrip table { + position: relative; + padding: 0; + border-collapse: collapse; +} +.highslide-thumbstrip td { + padding: 1px; + /*text-align: center;*/ +} +.highslide-thumbstrip a { + outline: none; +} +.highslide-thumbstrip img { + display: block; + border: 1px solid gray; + margin: 0 auto; +} +.highslide-thumbstrip .highslide-active-anchor img { + visibility: visible; +} +.highslide-thumbstrip .highslide-marker { + position: absolute; + width: 0; + height: 0; + border-width: 0; + border-style: solid; + border-color: transparent; /* change this to actual background color in highslide-ie6.css */ +} +.highslide-thumbstrip-horizontal div { + width: auto; + /* width: 100% breaks in small strips in IE */ +} +.highslide-thumbstrip-horizontal .highslide-scroll-up { + display: none; + position: absolute; + top: 3px; + left: 3px; + width: 25px; + height: 42px; +} +.highslide-thumbstrip-horizontal .highslide-scroll-up div { + margin-bottom: 10px; + cursor: pointer; + background: url(graphics/scrollarrows.png) left center no-repeat; + height: 42px; +} +.highslide-thumbstrip-horizontal .highslide-scroll-down { + display: none; + position: absolute; + top: 3px; + right: 3px; + width: 25px; + height: 42px; +} +.highslide-thumbstrip-horizontal .highslide-scroll-down div { + margin-bottom: 10px; + cursor: pointer; + background: url(graphics/scrollarrows.png) center right no-repeat; + height: 42px; +} +.highslide-thumbstrip-horizontal table { + margin: 2px 0 10px 0; +} +.highslide-viewport .highslide-thumbstrip-horizontal table { + margin-left: 10px; +} +.highslide-thumbstrip-horizontal img { + width: auto; + height: 40px; +} +.highslide-thumbstrip-horizontal .highslide-marker { + top: 47px; + border-left-width: 6px; + border-right-width: 6px; + border-bottom: 6px solid gray; +} +.highslide-viewport .highslide-thumbstrip-horizontal .highslide-marker { + margin-left: 10px; +} +.dark .highslide-thumbstrip-horizontal .highslide-marker, .highslide-viewport .highslide-thumbstrip-horizontal .highslide-marker { + border-bottom-color: white !important; +} + +.highslide-thumbstrip-vertical-overlay { + overflow: hidden !important; +} +.highslide-thumbstrip-vertical div { + height: 100%; +} +.highslide-thumbstrip-vertical a { + display: block; +} +.highslide-thumbstrip-vertical .highslide-scroll-up { + display: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 25px; +} +.highslide-thumbstrip-vertical .highslide-scroll-up div { + margin-left: 10px; + cursor: pointer; + background: url(graphics/scrollarrows.png) top center no-repeat; + height: 25px; +} +.highslide-thumbstrip-vertical .highslide-scroll-down { + display: none; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 25px; +} +.highslide-thumbstrip-vertical .highslide-scroll-down div { + margin-left: 10px; + cursor: pointer; + background: url(graphics/scrollarrows.png) bottom center no-repeat; + height: 25px; +} +.highslide-thumbstrip-vertical table { + margin: 10px 0 0 10px; +} +.highslide-thumbstrip-vertical img { + width: 60px; /* t=5481 */ +} +.highslide-thumbstrip-vertical .highslide-marker { + left: 0; + margin-top: 8px; + border-top-width: 6px; + border-bottom-width: 6px; + border-left: 6px solid gray; +} +.dark .highslide-thumbstrip-vertical .highslide-marker, .highslide-viewport .highslide-thumbstrip-vertical .highslide-marker { + border-left-color: white; +} + +.highslide-viewport .highslide-thumbstrip-float { + overflow: auto; +} +.highslide-thumbstrip-float ul { + margin: 2px 0; + padding: 0; +} +.highslide-thumbstrip-float li { + display: block; + height: 60px; + margin: 0 2px; + list-style: none; + float: left; +} +.highslide-thumbstrip-float img { + display: inline; + border-color: silver; + max-height: 56px; +} +.highslide-thumbstrip-float .highslide-active-anchor img { + border-color: black; +} +.highslide-thumbstrip-float .highslide-scroll-up div, .highslide-thumbstrip-float .highslide-scroll-down div { + display: none; +} +.highslide-thumbstrip-float .highslide-marker { + display: none; +} \ No newline at end of file diff --git a/html/highslide/highslide.js b/html/highslide/highslide.js new file mode 100644 index 000000000..f1d645b29 --- /dev/null +++ b/html/highslide/highslide.js @@ -0,0 +1,1891 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if (!hs) { var hs = { +// Language strings +lang : { + cssDirection: 'ltr', + loadingText : 'Loading...', + loadingTitle : 'Click to cancel', + focusTitle : 'Click to bring to front', + fullExpandTitle : 'Expand to actual size (f)', + creditsText : 'Powered by Highslide JS', + creditsTitle : 'Go to the Highslide JS homepage', + restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' +}, +// See http://highslide.com/ref for examples of settings +graphicsDir : 'highslide/graphics/', +expandCursor : 'zoomin.cur', // null disables +restoreCursor : 'zoomout.cur', // null disables +expandDuration : 250, // milliseconds +restoreDuration : 250, +marginLeft : 15, +marginRight : 15, +marginTop : 15, +marginBottom : 15, +zIndexCounter : 1001, // adjust to other absolutely positioned elements +loadingOpacity : 0.75, +allowMultipleInstances: true, +numberOfImagesToPreload : 5, +outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only +outlineStartOffset : 3, // ends at 10 +padToMinWidth : false, // pad the popup width to make room for wide caption +fullExpandPosition : 'bottom right', +fullExpandOpacity : 1, +showCredits : true, // you can set this to false if you want +creditsHref : 'http://highslide.com/', +creditsTarget : '_self', +enableKeyListener : true, +openerTagNames : ['a'], // Add more to allow slideshow indexing + +dragByHeading: true, +minWidth: 200, +minHeight: 200, +allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight +outlineType : 'drop-shadow', // set null to disable outlines +// END OF YOUR SETTINGS + + +// declare internal properties +preloadTheseImages : [], +continuePreloading: true, +expanders : [], +overrides : [ + 'allowSizeReduction', + 'useBox', + 'outlineType', + 'outlineWhileAnimating', + 'captionId', + 'captionText', + 'captionEval', + 'captionOverlay', + 'headingId', + 'headingText', + 'headingEval', + 'headingOverlay', + 'creditsPosition', + 'dragByHeading', + + 'width', + 'height', + + 'wrapperClassName', + 'minWidth', + 'minHeight', + 'maxWidth', + 'maxHeight', + 'pageOrigin', + 'slideshowGroup', + 'easing', + 'easingClose', + 'fadeInOut', + 'src' +], +overlays : [], +idCounter : 0, +oPos : { + x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], + y: ['above', 'top', 'middle', 'bottom', 'below'] +}, +mouse: {}, +headingOverlay: {}, +captionOverlay: {}, +timers : [], + +pendingOutlines : {}, +clones : {}, +onReady: [], +uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : + parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), +ie : (document.all && !window.opera), +//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant? +safari : /Safari/.test(navigator.userAgent), +geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), + +$ : function (id) { + if (id) return document.getElementById(id); +}, + +push : function (arr, val) { + arr[arr.length] = val; +}, + +createElement : function (tag, attribs, styles, parent, nopad) { + var el = document.createElement(tag); + if (attribs) hs.extend(el, attribs); + if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); + if (styles) hs.setStyles(el, styles); + if (parent) parent.appendChild(el); + return el; +}, + +extend : function (el, attribs) { + for (var x in attribs) el[x] = attribs[x]; + return el; +}, + +setStyles : function (el, styles) { + for (var x in styles) { + if (hs.ieLt9 && x == 'opacity') { + if (styles[x] > 0.99) el.style.removeAttribute('filter'); + else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; + } + else el.style[x] = styles[x]; + } +}, +animate: function(el, prop, opt) { + var start, + end, + unit; + if (typeof opt != 'object' || opt === null) { + var args = arguments; + opt = { + duration: args[2], + easing: args[3], + complete: args[4] + }; + } + if (typeof opt.duration != 'number') opt.duration = 250; + opt.easing = Math[opt.easing] || Math.easeInQuad; + opt.curAnim = hs.extend({}, prop); + for (var name in prop) { + var e = new hs.fx(el, opt , name ); + + start = parseFloat(hs.css(el, name)) || 0; + end = parseFloat(prop[name]); + unit = name != 'opacity' ? 'px' : ''; + + e.custom( start, end, unit ); + } +}, +css: function(el, prop) { + if (el.style[prop]) { + return el.style[prop]; + } else if (document.defaultView) { + return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); + + } else { + if (prop == 'opacity') prop = 'filter'; + var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; + if (prop == 'filter') + val = val.replace(/alpha\(opacity=([0-9]+)\)/, + function (a, b) { return b / 100 }); + return val === '' ? 1 : val; + } +}, + +getPageSize : function () { + var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' + ? d.documentElement : d.body, + ieLt9 = hs.ie && (hs.uaVersion < 9 || typeof pageXOffset == 'undefined'); + + var width = ieLt9 ? iebody.clientWidth : + (d.documentElement.clientWidth || self.innerWidth), + height = ieLt9 ? iebody.clientHeight : self.innerHeight; + hs.page = { + width: width, + height: height, + scrollLeft: ieLt9 ? iebody.scrollLeft : pageXOffset, + scrollTop: ieLt9 ? iebody.scrollTop : pageYOffset + }; + return hs.page; +}, + +getPosition : function(el) { + var p = { x: el.offsetLeft, y: el.offsetTop }; + while (el.offsetParent) { + el = el.offsetParent; + p.x += el.offsetLeft; + p.y += el.offsetTop; + if (el != document.body && el != document.documentElement) { + p.x -= el.scrollLeft; + p.y -= el.scrollTop; + } + } + return p; +}, + +expand : function(a, params, custom, type) { + if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); + if (typeof a.getParams == 'function') return params; + try { + new hs.Expander(a, params, custom); + return false; + } catch (e) { return true; } +}, + + +focusTopmost : function() { + var topZ = 0, + topmostKey = -1, + expanders = hs.expanders, + exp, + zIndex; + for (var i = 0; i < expanders.length; i++) { + exp = expanders[i]; + if (exp) { + zIndex = exp.wrapper.style.zIndex; + if (zIndex && zIndex > topZ) { + topZ = zIndex; + topmostKey = i; + } + } + } + if (topmostKey == -1) hs.focusKey = -1; + else expanders[topmostKey].focus(); +}, + +getParam : function (a, param) { + a.getParams = a.onclick; + var p = a.getParams ? a.getParams() : null; + a.getParams = null; + + return (p && typeof p[param] != 'undefined') ? p[param] : + (typeof hs[param] != 'undefined' ? hs[param] : null); +}, + +getSrc : function (a) { + var src = hs.getParam(a, 'src'); + if (src) return src; + return a.href; +}, + +getNode : function (id) { + var node = hs.$(id), clone = hs.clones[id], a = {}; + if (!node && !clone) return null; + if (!clone) { + clone = node.cloneNode(true); + clone.id = ''; + hs.clones[id] = clone; + return node; + } else { + return clone.cloneNode(true); + } +}, + +discardElement : function(d) { + if (d) hs.garbageBin.appendChild(d); + hs.garbageBin.innerHTML = ''; +}, +transit : function (adj, exp) { + var last = exp || hs.getExpander(); + exp = last; + if (hs.upcoming) return false; + else hs.last = last; + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + try { + hs.upcoming = adj; + adj.onclick(); + } catch (e){ + hs.last = hs.upcoming = null; + } + try { + exp.close(); + } catch (e) {} + return false; +}, + +previousOrNext : function (el, op) { + var exp = hs.getExpander(el); + if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp); + else return false; +}, + +previous : function (el) { + return hs.previousOrNext(el, -1); +}, + +next : function (el) { + return hs.previousOrNext(el, 1); +}, + +keyHandler : function(e) { + if (!e) e = window.event; + if (!e.target) e.target = e.srcElement; // ie + if (typeof e.target.form != 'undefined') return true; // form element has focus + var exp = hs.getExpander(); + + var op = null; + switch (e.keyCode) { + case 70: // f + if (exp) exp.doFullExpand(); + return true; + case 32: // Space + case 34: // Page Down + case 39: // Arrow right + case 40: // Arrow down + op = 1; + break; + case 8: // Backspace + case 33: // Page Up + case 37: // Arrow left + case 38: // Arrow up + op = -1; + break; + case 27: // Escape + case 13: // Enter + op = 0; + } + if (op !== null) {hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + if (!hs.enableKeyListener) return true; + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + if (exp) { + if (op == 0) { + exp.close(); + } else { + hs.previousOrNext(exp.key, op); + } + return false; + } + } + return true; +}, + + +registerOverlay : function (overlay) { + hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); +}, + + +getWrapperKey : function (element, expOnly) { + var el, re = /^highslide-wrapper-([0-9]+)$/; + // 1. look in open expanders + el = element; + while (el.parentNode) { + if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); + el = el.parentNode; + } + // 2. look in thumbnail + if (!expOnly) { + el = element; + while (el.parentNode) { + if (el.tagName && hs.isHsAnchor(el)) { + for (var key = 0; key < hs.expanders.length; key++) { + var exp = hs.expanders[key]; + if (exp && exp.a == el) return key; + } + } + el = el.parentNode; + } + } + return null; +}, + +getExpander : function (el, expOnly) { + if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null; + if (typeof el == 'number') return hs.expanders[el] || null; + if (typeof el == 'string') el = hs.$(el); + return hs.expanders[hs.getWrapperKey(el, expOnly)] || null; +}, + +isHsAnchor : function (a) { + return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/)); +}, + +reOrder : function () { + for (var i = 0; i < hs.expanders.length; i++) + if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost(); +}, + +mouseClickHandler : function(e) +{ + if (!e) e = window.event; + if (e.button > 1) return true; + if (!e.target) e.target = e.srcElement; + + var el = e.target; + while (el.parentNode + && !(/highslide-(image|move|html|resize)/.test(el.className))) + { + el = el.parentNode; + } + var exp = hs.getExpander(el); + if (exp && (exp.isClosing || !exp.isExpanded)) return true; + + if (exp && e.type == 'mousedown') { + if (e.target.form) return true; + var match = el.className.match(/highslide-(image|move|resize)/); + if (match) { + hs.dragArgs = { + exp: exp , + type: match[1], + left: exp.x.pos, + width: exp.x.size, + top: exp.y.pos, + height: exp.y.size, + clickX: e.clientX, + clickY: e.clientY + }; + + + hs.addEventListener(document, 'mousemove', hs.dragHandler); + if (e.preventDefault) e.preventDefault(); // FF + + if (/highslide-(image|html)-blur/.test(exp.content.className)) { + exp.focus(); + hs.hasFocused = true; + } + return false; + } + } else if (e.type == 'mouseup') { + + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + if (hs.dragArgs) { + if (hs.styleRestoreCursor && hs.dragArgs.type == 'image') + hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor; + var hasDragged = hs.dragArgs.hasDragged; + + if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) { + exp.close(); + } + else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) { + hs.dragArgs.exp.doShowHide('hidden'); + } + hs.hasFocused = false; + hs.dragArgs = null; + + } else if (/highslide-image-blur/.test(el.className)) { + el.style.cursor = hs.styleRestoreCursor; + } + } + return false; +}, + +dragHandler : function(e) +{ + if (!hs.dragArgs) return true; + if (!e) e = window.event; + var a = hs.dragArgs, exp = a.exp; + + a.dX = e.clientX - a.clickX; + a.dY = e.clientY - a.clickY; + + var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); + if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) + || (distance > (hs.dragSensitivity || 5)); + + if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { + + if (a.type == 'resize') exp.resize(a); + else { + exp.moveTo(a.left + a.dX, a.top + a.dY); + if (a.type == 'image') exp.content.style.cursor = 'move'; + } + } + return false; +}, + +wrapperMouseHandler : function (e) { + try { + if (!e) e = window.event; + var over = /mouseover/i.test(e.type); + if (!e.target) e.target = e.srcElement; // ie + if (!e.relatedTarget) e.relatedTarget = + over ? e.fromElement : e.toElement; // ie + var exp = hs.getExpander(e.target); + if (!exp.isExpanded) return; + if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp + || hs.dragArgs) return; + for (var i = 0; i < exp.overlays.length; i++) (function() { + var o = hs.$('hsId'+ exp.overlays[i]); + if (o && o.hideOnMouseOut) { + if (over) hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur); + } + })(); + } catch (e) {} +}, +addEventListener : function (el, event, func) { + if (el == document && event == 'ready') { + hs.push(hs.onReady, func); + } + try { + el.addEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + el.attachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = func; + } + } +}, + +removeEventListener : function (el, event, func) { + try { + el.removeEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = null; + } + } +}, + +preloadFullImage : function (i) { + if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') { + var img = document.createElement('img'); + img.onload = function() { + img = null; + hs.preloadFullImage(i + 1); + }; + img.src = hs.preloadTheseImages[i]; + } +}, +preloadImages : function (number) { + if (number && typeof number != 'object') hs.numberOfImagesToPreload = number; + + var arr = hs.getAnchors(); + for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) { + hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i])); + } + + // preload outlines + if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} ); + else + + hs.preloadFullImage(0); + + // preload cursor + if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor }); +}, + + +init : function () { + if (!hs.container) { + + hs.ieLt7 = hs.ie && hs.uaVersion < 7; + hs.ieLt9 = hs.ie && hs.uaVersion < 9; + + hs.getPageSize(); + for (var x in hs.langDefaults) { + if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x]; + else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined') + hs.lang[x] = hs.langDefaults[x]; + } + + hs.container = hs.createElement('div', { + className: 'highslide-container' + }, { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + zIndex: hs.zIndexCounter, + direction: 'ltr' + }, + document.body, + true + ); + hs.loading = hs.createElement('a', { + className: 'highslide-loading', + title: hs.lang.loadingTitle, + innerHTML: hs.lang.loadingText, + href: 'javascript:;' + }, { + position: 'absolute', + top: '-9999px', + opacity: hs.loadingOpacity, + zIndex: 1 + }, hs.container + ); + hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container); + + // http://www.robertpenner.com/easing/ + Math.linearTween = function (t, b, c, d) { + return c*t/d + b; + }; + Math.easeInQuad = function (t, b, c, d) { + return c*(t/=d)*t + b; + }; + + hs.hideSelects = hs.ieLt7; + hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE' + || (hs.ieLt7 && hs.uaVersion < 5.5)); + } +}, +ready : function() { + if (hs.isReady) return; + hs.isReady = true; + for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i](); +}, + +updateAnchors : function() { + var el, els, all = [], images = [],groups = {}, re; + + for (var i = 0; i < hs.openerTagNames.length; i++) { + els = document.getElementsByTagName(hs.openerTagNames[i]); + for (var j = 0; j < els.length; j++) { + el = els[j]; + re = hs.isHsAnchor(el); + if (re) { + hs.push(all, el); + if (re[0] == 'hs.expand') hs.push(images, el); + var g = hs.getParam(el, 'slideshowGroup') || 'none'; + if (!groups[g]) groups[g] = []; + hs.push(groups[g], el); + } + } + } + hs.anchors = { all: all, groups: groups, images: images }; + return hs.anchors; + +}, + +getAnchors : function() { + return hs.anchors || hs.updateAnchors(); +}, + + +close : function(el) { + var exp = hs.getExpander(el); + if (exp) exp.close(); + return false; +} +}; // end hs object +hs.fx = function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if (!options.orig) options.orig = {}; +}; +hs.fx.prototype = { + update: function(){ + (hs.fx.step[this.prop] || hs.fx.step._default)(this); + + if (this.options.step) + this.options.step.call(this.elem, this.now, this); + + }, + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit;// || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + if ( t() && hs.timers.push(t) == 1 ) { + hs.timerId = setInterval(function(){ + var timers = hs.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval(hs.timerId); + } + }, 13); + } + }, + step: function(gotoEnd){ + var t = (new Date()).getTime(); + if ( gotoEnd || t >= this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if (this.options.complete) this.options.complete.call(this.elem); + } + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + this.pos = this.options.easing(n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + this.update(); + } + return true; + } + +}; + +hs.extend( hs.fx, { + step: { + + opacity: function(fx){ + hs.setStyles(fx.elem, { opacity: fx.now }); + }, + + _default: function(fx){ + try { + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; + } catch (e) {} + } + } +}); + +hs.Outline = function (outlineType, onLoad) { + this.onLoad = onLoad; + this.outlineType = outlineType; + var v = hs.uaVersion, tr; + + this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7; + if (!outlineType) { + if (onLoad) onLoad(); + return; + } + + hs.init(); + this.table = hs.createElement( + 'table', { + cellSpacing: 0 + }, { + visibility: 'hidden', + position: 'absolute', + borderCollapse: 'collapse', + width: 0 + }, + hs.container, + true + ); + var tbody = hs.createElement('tbody', null, null, this.table, 1); + + this.td = []; + for (var i = 0; i <= 8; i++) { + if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true); + this.td[i] = hs.createElement('td', null, null, tr, true); + var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' }; + hs.setStyles(this.td[i], style); + } + this.td[4].className = outlineType +' highslide-outline'; + + this.preloadGraphic(); +}; + +hs.Outline.prototype = { +preloadGraphic : function () { + var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png"; + + var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null; + this.graphic = hs.createElement('img', null, { position: 'absolute', + top: '-9999px' }, appendTo, true); // for onload trigger + + var pThis = this; + this.graphic.onload = function() { pThis.onGraphicLoad(); }; + + this.graphic.src = src; +}, + +onGraphicLoad : function () { + var o = this.offset = this.graphic.width / 4, + pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]], + dim = { height: (2*o) +'px', width: (2*o) +'px' }; + for (var i = 0; i <= 8; i++) { + if (pos[i]) { + if (this.hasAlphaImageLoader) { + var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px'; + var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true); + hs.createElement ('div', null, { + filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", + position: 'absolute', + width: w, + height: this.graphic.height +'px', + left: (pos[i][0]*o)+'px', + top: (pos[i][1]*o)+'px' + }, + div, + true); + } else { + hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'}); + } + + if (window.opera && (i == 3 || i ==5)) + hs.createElement('div', null, dim, this.td[i], true); + + hs.setStyles (this.td[i], dim); + } + } + this.graphic = null; + if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy(); + hs.pendingOutlines[this.outlineType] = this; + if (this.onLoad) this.onLoad(); +}, + +setPosition : function (pos, offset, vis, dur, easing) { + var exp = this.exp, + stl = exp.wrapper.style, + offset = offset || 0, + pos = pos || { + x: exp.x.pos + offset, + y: exp.y.pos + offset, + w: exp.x.get('wsize') - 2 * offset, + h: exp.y.get('wsize') - 2 * offset + }; + if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset) + ? 'visible' : 'hidden'; + hs.setStyles(this.table, { + left: (pos.x - this.offset) +'px', + top: (pos.y - this.offset) +'px', + width: (pos.w + 2 * this.offset) +'px' + }); + + pos.w -= 2 * this.offset; + pos.h -= 2 * this.offset; + hs.setStyles (this.td[4], { + width: pos.w >= 0 ? pos.w +'px' : 0, + height: pos.h >= 0 ? pos.h +'px' : 0 + }); + if (this.hasAlphaImageLoader) this.td[3].style.height + = this.td[5].style.height = this.td[4].style.height; + +}, + +destroy : function(hide) { + if (hide) this.table.style.visibility = 'hidden'; + else hs.discardElement(this.table); +} +}; + +hs.Dimension = function(exp, dim) { + this.exp = exp; + this.dim = dim; + this.ucwh = dim == 'x' ? 'Width' : 'Height'; + this.wh = this.ucwh.toLowerCase(); + this.uclt = dim == 'x' ? 'Left' : 'Top'; + this.lt = this.uclt.toLowerCase(); + this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; + this.rb = this.ucrb.toLowerCase(); + this.p1 = this.p2 = 0; +}; +hs.Dimension.prototype = { +get : function(key) { + switch (key) { + case 'loadingPos': + return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; + case 'wsize': + return this.size + 2 * this.cb + this.p1 + this.p2; + case 'fitsize': + return this.clientSize - this.marginMin - this.marginMax; + case 'maxsize': + return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; + case 'opos': + return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); + case 'osize': + return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); + case 'imgPad': + return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; + + } +}, +calcBorders: function() { + // correct for borders + this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; + + this.marginMax = hs['margin'+ this.ucrb]; +}, +calcThumb: function() { + this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : + this.exp.el['offset'+ this.ucwh]; + this.tpos = this.exp.tpos[this.dim]; + this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; + if (this.tpos == 0 || this.tpos == -1) { + this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt]; + }; +}, +calcExpanded: function() { + var exp = this.exp; + this.justify = 'auto'; + + + // size and position + this.pos = this.tpos - this.cb + this.tb; + + if (this.maxHeight && this.dim == 'x') + exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full); + + this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); + this.minSize = exp.allowSizeReduction ? + Math.min(exp['min'+ this.ucwh], this.full) :this.full; + if (exp.isImage && exp.useBox) { + this.size = exp[this.wh]; + this.imgSize = this.full; + } + if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth; + this.marginMin = hs['margin'+ this.uclt]; + this.scroll = hs.page['scroll'+ this.uclt]; + this.clientSize = hs.page[this.wh]; +}, +setSize: function(i) { + var exp = this.exp; + if (exp.isImage && (exp.useBox || hs.padToMinWidth)) { + this.imgSize = i; + this.size = Math.max(this.size, this.imgSize); + exp.content.style[this.lt] = this.get('imgPad')+'px'; + } else + this.size = i; + + exp.content.style[this.wh] = i +'px'; + exp.wrapper.style[this.wh] = this.get('wsize') +'px'; + if (exp.outline) exp.outline.setPosition(); + if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); +}, +setPos: function(i) { + this.pos = i; + this.exp.wrapper.style[this.lt] = i +'px'; + + if (this.exp.outline) this.exp.outline.setPosition(); + +} +}; + +hs.Expander = function(a, params, custom, contentType) { + if (document.readyState && hs.ie && !hs.isReady) { + hs.addEventListener(document, 'ready', function() { + new hs.Expander(a, params, custom, contentType); + }); + return; + } + this.a = a; + this.custom = custom; + this.contentType = contentType || 'image'; + this.isImage = !this.isHtml; + + hs.continuePreloading = false; + this.overlays = []; + hs.init(); + var key = this.key = hs.expanders.length; + // override inline parameters + for (var i = 0; i < hs.overrides.length; i++) { + var name = hs.overrides[i]; + this[name] = params && typeof params[name] != 'undefined' ? + params[name] : hs[name]; + } + if (!this.src) this.src = a.href; + + // get thumb + var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a; + el = this.thumb = el.getElementsByTagName('img')[0] || el; + this.thumbsUserSetId = el.id || a.id; + + // check if already open + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].a == a) { + hs.expanders[i].focus(); + return false; + } + } + + // cancel other + if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) { + hs.expanders[i].cancelLoading(); + } + } + hs.expanders[key] = this; + if (!hs.allowMultipleInstances && !hs.upcoming) { + if (hs.expanders[key-1]) hs.expanders[key-1].close(); + if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey]) + hs.expanders[hs.focusKey].close(); + } + + // initiate metrics + this.el = el; + this.tpos = this.pageOrigin || hs.getPosition(el); + hs.getPageSize(); + var x = this.x = new hs.Dimension(this, 'x'); + x.calcThumb(); + var y = this.y = new hs.Dimension(this, 'y'); + y.calcThumb(); + this.wrapper = hs.createElement( + 'div', { + id: 'highslide-wrapper-'+ this.key, + className: 'highslide-wrapper '+ this.wrapperClassName + }, { + visibility: 'hidden', + position: 'absolute', + zIndex: hs.zIndexCounter += 2 + }, null, true ); + + this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler; + if (this.contentType == 'image' && this.outlineWhileAnimating == 2) + this.outlineWhileAnimating = 0; + + // get the outline + if (!this.outlineType) { + this[this.contentType +'Create'](); + + } else if (hs.pendingOutlines[this.outlineType]) { + this.connectOutline(); + this[this.contentType +'Create'](); + + } else { + this.showLoading(); + var exp = this; + new hs.Outline(this.outlineType, + function () { + exp.connectOutline(); + exp[exp.contentType +'Create'](); + } + ); + } + return true; +}; + +hs.Expander.prototype = { +error : function(e) { + if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message); + else window.location.href = this.src; +}, + +connectOutline : function() { + var outline = this.outline = hs.pendingOutlines[this.outlineType]; + outline.exp = this; + outline.table.style.zIndex = this.wrapper.style.zIndex - 1; + hs.pendingOutlines[this.outlineType] = null; +}, + +showLoading : function() { + if (this.onLoadStarted || this.loading) return; + + this.loading = hs.loading; + var exp = this; + this.loading.onclick = function() { + exp.cancelLoading(); + }; + var exp = this, + l = this.x.get('loadingPos') +'px', + t = this.y.get('loadingPos') +'px'; + setTimeout(function () { + if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })} + , 100); +}, + +imageCreate : function() { + var exp = this; + + var img = document.createElement('img'); + this.content = img; + img.onload = function () { + if (hs.expanders[exp.key]) exp.contentLoaded(); + }; + if (hs.blockRightClick) img.oncontextmenu = function() { return false; }; + img.className = 'highslide-image'; + hs.setStyles(img, { + visibility: 'hidden', + display: 'block', + position: 'absolute', + maxWidth: '9999px', + zIndex: 3 + }); + img.title = hs.lang.restoreTitle; + if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img); + if (hs.ie && hs.flushImgSize) img.src = null; + img.src = this.src; + + this.showLoading(); +}, + +contentLoaded : function() { + try { + if (!this.content) return; + this.content.onload = null; + if (this.onLoadStarted) return; + else this.onLoadStarted = true; + + var x = this.x, y = this.y; + + if (this.loading) { + hs.setStyles(this.loading, { top: '-9999px' }); + this.loading = null; + } + x.full = this.content.width; + y.full = this.content.height; + + hs.setStyles(this.content, { + width: x.t +'px', + height: y.t +'px' + }); + this.wrapper.appendChild(this.content); + hs.container.appendChild(this.wrapper); + + x.calcBorders(); + y.calcBorders(); + + hs.setStyles (this.wrapper, { + left: (x.tpos + x.tb - x.cb) +'px', + top: (y.tpos + x.tb - y.cb) +'px' + }); + this.getOverlays(); + + var ratio = x.full / y.full; + x.calcExpanded(); + this.justify(x); + + y.calcExpanded(); + this.justify(y); + if (this.overlayBox) this.sizeOverlayBox(0, 1); + + + if (this.allowSizeReduction) { + this.correctRatio(ratio); + if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) { + this.createFullExpand(); + if (this.overlays.length == 1) this.sizeOverlayBox(); + } + } + this.show(); + + } catch (e) { + this.error(e); + } +}, + +justify : function (p, moveOnly) { + var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; + + var hasMovedMin = false; + + var allowReduce = p.exp.allowSizeReduction; + p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); + if (p.pos < p.scroll + p.marginMin) { + p.pos = p.scroll + p.marginMin; + hasMovedMin = true; + } + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) { + if (!moveOnly && hasMovedMin && allowReduce) { + p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize')); + } else if (p.get('wsize') < p.get('fitsize')) { + p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize'); + } else { // image larger than viewport + p.pos = p.scroll + p.marginMin; + if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); + } + } + + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + + + + if (p.pos < p.marginMin) { + var tmpMin = p.pos; + p.pos = p.marginMin; + + if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin); + + } +}, + +correctRatio : function(ratio) { + var x = this.x, + y = this.y, + changed = false, + xSize = Math.min(x.full, x.size), + ySize = Math.min(y.full, y.size), + useBox = (this.useBox || hs.padToMinWidth); + + if (xSize / ySize > ratio) { // width greater + xSize = ySize * ratio; + if (xSize < x.minSize) { // below minWidth + xSize = x.minSize; + ySize = xSize / ratio; + } + changed = true; + + } else if (xSize / ySize < ratio) { // height greater + ySize = xSize / ratio; + changed = true; + } + + if (hs.padToMinWidth && x.full < x.minSize) { + x.imgSize = x.full; + y.size = y.imgSize = y.full; + } else if (this.useBox) { + x.imgSize = xSize; + y.imgSize = ySize; + } else { + x.size = xSize; + y.size = ySize; + } + changed = this.fitOverlayBox(this.useBox ? null : ratio, changed); + if (useBox && y.size < y.imgSize) { + y.imgSize = y.size; + x.imgSize = y.size * ratio; + } + if (changed || useBox) { + x.pos = x.tpos - x.cb + x.tb; + x.minSize = x.size; + this.justify(x, true); + + y.pos = y.tpos - y.cb + y.tb; + y.minSize = y.size; + this.justify(y, true); + if (this.overlayBox) this.sizeOverlayBox(); + } + + +}, +fitOverlayBox : function(ratio, changed) { + var x = this.x, y = this.y; + if (this.overlayBox) { + while (y.size > this.minHeight && x.size > this.minWidth + && y.get('wsize') > y.get('fitsize')) { + y.size -= 10; + if (ratio) x.size = y.size * ratio; + this.sizeOverlayBox(0, 1); + changed = true; + } + } + return changed; +}, + +show : function () { + var x = this.x, y = this.y; + this.doShowHide('hidden'); + + // Apply size change + this.changeSize( + 1, { + wrapper: { + width : x.get('wsize'), + height : y.get('wsize'), + left: x.pos, + top: y.pos + }, + content: { + left: x.p1 + x.get('imgPad'), + top: y.p1 + y.get('imgPad'), + width:x.imgSize ||x.size, + height:y.imgSize ||y.size + } + }, + hs.expandDuration + ); +}, + +changeSize : function(up, to, dur) { + + if (this.outline && !this.outlineWhileAnimating) { + if (up) this.outline.setPosition(); + else this.outline.destroy(); + } + + + if (!up) this.destroyOverlays(); + + var exp = this, + x = exp.x, + y = exp.y, + easing = this.easing; + if (!up) easing = this.easingClose || easing; + var after = up ? + function() { + + if (exp.outline) exp.outline.table.style.visibility = "visible"; + setTimeout(function() { + exp.afterExpand(); + }, 50); + } : + function() { + exp.afterClose(); + }; + if (up) hs.setStyles( this.wrapper, { + width: x.t +'px', + height: y.t +'px' + }); + if (this.fadeInOut) { + hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 }); + hs.extend(to.wrapper, { opacity: up }); + } + hs.animate( this.wrapper, to.wrapper, { + duration: dur, + easing: easing, + step: function(val, args) { + if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { + var fac = up ? args.pos : 1 - args.pos; + var pos = { + w: x.t + (x.get('wsize') - x.t) * fac, + h: y.t + (y.get('wsize') - y.t) * fac, + x: x.tpos + (x.pos - x.tpos) * fac, + y: y.tpos + (y.pos - y.tpos) * fac + }; + exp.outline.setPosition(pos, 0, 1); + } + } + }); + hs.animate( this.content, to.content, dur, easing, after); + if (up) { + this.wrapper.style.visibility = 'visible'; + this.content.style.visibility = 'visible'; + this.a.className += ' highslide-active-anchor'; + } +}, + + + + +afterExpand : function() { + this.isExpanded = true; + this.focus(); + if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; + this.prepareNextOutline(); + var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; + this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize') + && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize'); + if (this.overlayBox) this.showOverlays(); + +}, + + +prepareNextOutline : function() { + var key = this.key; + var outlineType = this.outlineType; + new hs.Outline(outlineType, + function () { try { hs.expanders[key].preloadNext(); } catch (e) {} }); +}, + + +preloadNext : function() { + var next = this.getAdjacentAnchor(1); + if (next && next.onclick.toString().match(/hs\.expand/)) + var img = hs.createElement('img', { src: hs.getSrc(next) }); +}, + + +getAdjacentAnchor : function(op) { + var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none']; + return (as && as[current + op]) || null; +}, + +getAnchorIndex : function() { + var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; + if (arr) for (var i = 0; i < arr.length; i++) { + if (arr[i] == this.a) return i; + } + return null; +}, + + +cancelLoading : function() { + hs.discardElement (this.wrapper); + hs.expanders[this.key] = null; + if (this.loading) hs.loading.style.left = '-9999px'; +}, + +writeCredits : function () { + this.credits = hs.createElement('a', { + href: hs.creditsHref, + target: hs.creditsTarget, + className: 'highslide-credits', + innerHTML: hs.lang.creditsText, + title: hs.lang.creditsTitle + }); + this.createOverlay({ + overlayId: this.credits, + position: this.creditsPosition || 'top left' + }); +}, + +getInline : function(types, addOverlay) { + for (var i = 0; i < types.length; i++) { + var type = types[i], s = null; + if (!this[type +'Id'] && this.thumbsUserSetId) + this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId; + if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']); + if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try { + s = eval(this[type +'Eval']); + } catch (e) {} + if (!this[type] && this[type +'Text']) { + s = this[type +'Text']; + } + if (!this[type] && !s) { + this[type] = hs.getNode(this.a['_'+ type + 'Id']); + if (!this[type]) { + var next = this.a.nextSibling; + while (next && !hs.isHsAnchor(next)) { + if ((new RegExp('highslide-'+ type)).test(next.className || null)) { + if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++; + this[type] = hs.getNode(next.id); + break; + } + next = next.nextSibling; + } + } + } + + if (!this[type] && s) this[type] = hs.createElement('div', + { className: 'highslide-'+ type, innerHTML: s } ); + + if (addOverlay && this[type]) { + var o = { position: (type == 'heading') ? 'above' : 'below' }; + for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x]; + o.overlayId = this[type]; + this.createOverlay(o); + } + } +}, + + +// on end move and resize +doShowHide : function(visibility) { + if (hs.hideSelects) this.showHideElements('SELECT', visibility); + if (hs.hideIframes) this.showHideElements('IFRAME', visibility); + if (hs.geckoMac) this.showHideElements('*', visibility); +}, +showHideElements : function (tagName, visibility) { + var els = document.getElementsByTagName(tagName); + var prop = tagName == '*' ? 'overflow' : 'visibility'; + for (var i = 0; i < els.length; i++) { + if (prop == 'visibility' || (document.defaultView.getComputedStyle( + els[i], "").getPropertyValue('overflow') == 'auto' + || els[i].getAttribute('hidden-by') != null)) { + var hiddenBy = els[i].getAttribute('hidden-by'); + if (visibility == 'visible' && hiddenBy) { + hiddenBy = hiddenBy.replace('['+ this.key +']', ''); + els[i].setAttribute('hidden-by', hiddenBy); + if (!hiddenBy) els[i].style[prop] = els[i].origProp; + } else if (visibility == 'hidden') { // hide if behind + var elPos = hs.getPosition(els[i]); + elPos.w = els[i].offsetWidth; + elPos.h = els[i].offsetHeight; + + + var clearsX = (elPos.x + elPos.w < this.x.get('opos') + || elPos.x > this.x.get('opos') + this.x.get('osize')); + var clearsY = (elPos.y + elPos.h < this.y.get('opos') + || elPos.y > this.y.get('opos') + this.y.get('osize')); + var wrapperKey = hs.getWrapperKey(els[i]); + if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image + if (!hiddenBy) { + els[i].setAttribute('hidden-by', '['+ this.key +']'); + els[i].origProp = els[i].style[prop]; + els[i].style[prop] = 'hidden'; + + } else if (hiddenBy.indexOf('['+ this.key +']') == -1) { + els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']'); + } + } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) + && wrapperKey != this.key) { // on move + els[i].setAttribute('hidden-by', ''); + els[i].style[prop] = els[i].origProp || ''; + } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) { + els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', '')); + } + + } + } + } +}, + +focus : function() { + this.wrapper.style.zIndex = hs.zIndexCounter += 2; + // blur others + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && i == hs.focusKey) { + var blurExp = hs.expanders[i]; + blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur'; + blurExp.content.style.cursor = hs.ieLt7 ? 'hand' : 'pointer'; + blurExp.content.title = hs.lang.focusTitle; + } + } + + // focus this + if (this.outline) this.outline.table.style.zIndex + = this.wrapper.style.zIndex - 1; + this.content.className = 'highslide-'+ this.contentType; + this.content.title = hs.lang.restoreTitle; + + if (hs.restoreCursor) { + hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer'; + if (hs.ieLt7 && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand'; + this.content.style.cursor = hs.styleRestoreCursor; + } + + hs.focusKey = this.key; + hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); +}, +moveTo: function(x, y) { + this.x.setPos(x); + this.y.setPos(y); +}, +resize : function (e) { + var w, h, r = e.width / e.height; + w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full)); + if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full; + h = w / r; + if (h < Math.min(this.minHeight, this.y.full)) { + h = Math.min(this.minHeight, this.y.full); + if (this.isImage) w = h * r; + } + this.resizeTo(w, h); +}, +resizeTo: function(w, h) { + this.y.setSize(h); + this.x.setSize(w); + this.wrapper.style.height = this.y.get('wsize') +'px'; +}, + +close : function() { + if (this.isClosing || !this.isExpanded) return; + this.isClosing = true; + + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + + try { + this.content.style.cursor = 'default'; + this.changeSize( + 0, { + wrapper: { + width : this.x.t, + height : this.y.t, + left: this.x.tpos - this.x.cb + this.x.tb, + top: this.y.tpos - this.y.cb + this.y.tb + }, + content: { + left: 0, + top: 0, + width: this.x.t, + height: this.y.t + } + }, hs.restoreDuration + ); + } catch (e) { this.afterClose(); } +}, + +createOverlay : function (o) { + var el = o.overlayId; + if (typeof el == 'string') el = hs.getNode(el); + if (o.html) el = hs.createElement('div', { innerHTML: o.html }); + if (!el || typeof el == 'string') return; + el.style.display = 'block'; + this.genOverlayBox(); + var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto'; + if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px'; + var overlay = hs.createElement( + 'div', { + id: 'hsId'+ hs.idCounter++, + hsId: o.hsId + }, { + position: 'absolute', + visibility: 'hidden', + width: width, + direction: hs.lang.cssDirection || '', + opacity: 0 + },this.overlayBox, + true + ); + + overlay.appendChild(el); + hs.extend(overlay, { + opacity: 1, + offsetX: 0, + offsetY: 0, + dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250 + }); + hs.extend(overlay, o); + + + if (this.gotOverlays) { + this.positionOverlay(overlay); + if (!overlay.hideOnMouseOut || this.mouseIsOver) + hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur); + } + hs.push(this.overlays, hs.idCounter - 1); +}, +positionOverlay : function(overlay) { + var p = overlay.position || 'middle center', + offX = overlay.offsetX, + offY = overlay.offsetY; + if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay); + if (/left$/.test(p)) overlay.style.left = offX +'px'; + + if (/center$/.test(p)) hs.setStyles (overlay, { + left: '50%', + marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px' + }); + + if (/right$/.test(p)) overlay.style.right = - offX +'px'; + + if (/^leftpanel$/.test(p)) { + hs.setStyles(overlay, { + right: '100%', + marginRight: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p1 = overlay.offsetWidth; + + } else if (/^rightpanel$/.test(p)) { + hs.setStyles(overlay, { + left: '100%', + marginLeft: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p2 = overlay.offsetWidth; + } + + if (/^top/.test(p)) overlay.style.top = offY +'px'; + if (/^middle/.test(p)) hs.setStyles (overlay, { + top: '50%', + marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px' + }); + if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px'; + if (/^above$/.test(p)) { + hs.setStyles(overlay, { + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + bottom: '100%', + marginBottom: this.y.cb +'px', + width: 'auto' + }); + this.y.p1 = overlay.offsetHeight; + + } else if (/^below$/.test(p)) { + hs.setStyles(overlay, { + position: 'relative', + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + top: '100%', + marginTop: this.y.cb +'px', + width: 'auto' + }); + this.y.p2 = overlay.offsetHeight; + overlay.style.position = 'absolute'; + } +}, + +getOverlays : function() { + this.getInline(['heading', 'caption'], true); + if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move'; + if (hs.showCredits) this.writeCredits(); + for (var i = 0; i < hs.overlays.length; i++) { + var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup; + if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId) + || (sg && sg === this.slideshowGroup)) { + this.createOverlay(o); + } + } + var os = []; + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (/panel$/.test(o.position)) this.positionOverlay(o); + else hs.push(os, o); + } + for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]); + this.gotOverlays = true; +}, +genOverlayBox : function() { + if (!this.overlayBox) this.overlayBox = hs.createElement ( + 'div', { + className: this.wrapperClassName + }, { + position : 'absolute', + width: (this.x.size || (this.useBox ? this.width : null) + || this.x.full) +'px', + height: (this.y.size || this.y.full) +'px', + visibility : 'hidden', + overflow : 'hidden', + zIndex : hs.ie ? 4 : 'auto' + }, + hs.container, + true + ); +}, +sizeOverlayBox : function(doWrapper, doPanels) { + var overlayBox = this.overlayBox, + x = this.x, + y = this.y; + hs.setStyles( overlayBox, { + width: x.size +'px', + height: y.size +'px' + }); + if (doWrapper || doPanels) { + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat'); + if (o && /^(above|below)$/.test(o.position)) { + if (ie6) { + o.style.width = (overlayBox.offsetWidth + 2 * x.cb + + x.p1 + x.p2) +'px'; + } + y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight; + } + if (o && ie6 && /^(left|right)panel$/.test(o.position)) { + o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px'; + } + } + } + if (doWrapper) { + hs.setStyles(this.content, { + top: y.p1 +'px' + }); + hs.setStyles(overlayBox, { + top: (y.p1 + y.cb) +'px' + }); + } +}, + +showOverlays : function() { + var b = this.overlayBox; + b.className = ''; + hs.setStyles(b, { + top: (this.y.p1 + this.y.cb) +'px', + left: (this.x.p1 + this.x.cb) +'px', + overflow : 'visible' + }); + if (hs.safari) b.style.visibility = 'visible'; + this.wrapper.appendChild (b); + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + o.style.zIndex = o.zIndex || 4; + if (!o.hideOnMouseOut || this.mouseIsOver) { + o.style.visibility = 'visible'; + hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: o.opacity }, o.dur); + } + } +}, + +destroyOverlays : function() { + if (!this.overlays.length) return; + hs.discardElement(this.overlayBox); +}, + + + +createFullExpand : function () { + this.fullExpandLabel = hs.createElement( + 'a', { + href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();', + title: hs.lang.fullExpandTitle, + className: 'highslide-full-expand' + } + ); + + this.createOverlay({ + overlayId: this.fullExpandLabel, + position: hs.fullExpandPosition, + hideOnMouseOut: true, + opacity: hs.fullExpandOpacity + }); +}, + +doFullExpand : function () { + try { + if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel); + + this.focus(); + var xSize = this.x.size, + ySize = this.y.size; + this.resizeTo(this.x.full, this.y.full); + + var xpos = this.x.pos - (this.x.size - xSize) / 2; + if (xpos < hs.marginLeft) xpos = hs.marginLeft; + + var ypos = this.y.pos - (this.y.size - ySize) / 2; + if (ypos < hs.marginTop) ypos = hs.marginTop; + + this.moveTo(xpos, ypos); + this.doShowHide('hidden'); + + } catch (e) { + this.error(e); + } +}, + + +afterClose : function () { + this.a.className = this.a.className.replace('highslide-active-anchor', ''); + + this.doShowHide('visible'); + if (this.outline && this.outlineWhileAnimating) this.outline.destroy(); + + hs.discardElement(this.wrapper); + + hs.expanders[this.key] = null; + hs.reOrder(); +} + +}; +hs.langDefaults = hs.lang; +// history +var HsExpander = hs.Expander; +if (hs.ie && window == window.top) { + (function () { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(arguments.callee, 50); + return; + } + hs.ready(); + })(); +} +hs.addEventListener(document, 'DOMContentLoaded', hs.ready); +hs.addEventListener(window, 'load', hs.ready); + +// set handlers +hs.addEventListener(document, 'ready', function() { + if (hs.expandCursor) { + var style = hs.createElement('style', { type: 'text/css' }, null, + document.getElementsByTagName('HEAD')[0]), + backCompat = document.compatMode == 'BackCompat'; + + + function addRule(sel, dec) { + if (hs.ie && (hs.uaVersion < 9 || backCompat)) { + var last = document.styleSheets[document.styleSheets.length - 1]; + if (typeof(last.addRule) == "object") last.addRule(sel, dec); + } else { + style.appendChild(document.createTextNode(sel + " {" + dec + "}")); + } + } + function fix(prop) { + return 'expression( ( ( ignoreMe = document.documentElement.'+ prop + + ' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );'; + } + if (hs.expandCursor) addRule ('.highslide img', + 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'); + } +}); +hs.addEventListener(window, 'resize', function() { + hs.getPageSize(); +}); +hs.addEventListener(document, 'mousemove', function(e) { + hs.mouse = { x: e.clientX, y: e.clientY }; +}); +hs.addEventListener(document, 'mousedown', hs.mouseClickHandler); +hs.addEventListener(document, 'mouseup', hs.mouseClickHandler); + +hs.addEventListener(document, 'ready', hs.getAnchors); +hs.addEventListener(window, 'load', hs.preloadImages); +} diff --git a/html/highslide/highslide.min.js b/html/highslide/highslide.min.js new file mode 100644 index 000000000..44e11b9c5 --- /dev/null +++ b/html/highslide/highslide.min.js @@ -0,0 +1,9 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if(!hs){var hs={lang:{cssDirection:"ltr",loadingText:"Loading...",loadingTitle:"Click to cancel",focusTitle:"Click to bring to front",fullExpandTitle:"Expand to actual size (f)",creditsText:"Powered by Highslide JS",creditsTitle:"Go to the Highslide JS homepage",restoreTitle:"Click to close image, click and drag to move. Use arrow keys for next and previous."},graphicsDir:"highslide/graphics/",expandCursor:"zoomin.cur",restoreCursor:"zoomout.cur",expandDuration:250,restoreDuration:250,marginLeft:15,marginRight:15,marginTop:15,marginBottom:15,zIndexCounter:1001,loadingOpacity:0.75,allowMultipleInstances:true,numberOfImagesToPreload:5,outlineWhileAnimating:2,outlineStartOffset:3,padToMinWidth:false,fullExpandPosition:"bottom right",fullExpandOpacity:1,showCredits:true,creditsHref:"http://highslide.com/",creditsTarget:"_self",enableKeyListener:true,openerTagNames:["a"],dragByHeading:true,minWidth:200,minHeight:200,allowSizeReduction:true,outlineType:"drop-shadow",preloadTheseImages:[],continuePreloading:true,expanders:[],overrides:["allowSizeReduction","useBox","outlineType","outlineWhileAnimating","captionId","captionText","captionEval","captionOverlay","headingId","headingText","headingEval","headingOverlay","creditsPosition","dragByHeading","width","height","wrapperClassName","minWidth","minHeight","maxWidth","maxHeight","pageOrigin","slideshowGroup","easing","easingClose","fadeInOut","src"],overlays:[],idCounter:0,oPos:{x:["leftpanel","left","center","right","rightpanel"],y:["above","top","middle","bottom","below"]},mouse:{},headingOverlay:{},captionOverlay:{},timers:[],pendingOutlines:{},clones:{},onReady:[],uaVersion:/Trident\/4\.0/.test(navigator.userAgent)?8:parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]),ie:(document.all&&!window.opera),safari:/Safari/.test(navigator.userAgent),geckoMac:/Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),$:function(a){if(a){return document.getElementById(a)}},push:function(a,b){a[a.length]=b},createElement:function(a,f,e,d,c){var b=document.createElement(a);if(f){hs.extend(b,f)}if(c){hs.setStyles(b,{padding:0,border:"none",margin:0})}if(e){hs.setStyles(b,e)}if(d){d.appendChild(b)}return b},extend:function(b,c){for(var a in c){b[a]=c[a]}return b},setStyles:function(b,c){for(var a in c){if(hs.ieLt9&&a=="opacity"){if(c[a]>0.99){b.style.removeAttribute("filter")}else{b.style.filter="alpha(opacity="+(c[a]*100)+")"}}else{b.style[a]=c[a]}}},animate:function(f,a,d){var c,g,j;if(typeof d!="object"||d===null){var i=arguments;d={duration:i[2],easing:i[3],complete:i[4]}}if(typeof d.duration!="number"){d.duration=250}d.easing=Math[d.easing]||Math.easeInQuad;d.curAnim=hs.extend({},a);for(var b in a){var h=new hs.fx(f,d,b);c=parseFloat(hs.css(f,b))||0;g=parseFloat(a[b]);j=b!="opacity"?"px":"";h.custom(c,g,j)}},css:function(a,c){if(a.style[c]){return a.style[c]}else{if(document.defaultView){return document.defaultView.getComputedStyle(a,null).getPropertyValue(c)}else{if(c=="opacity"){c="filter"}var b=a.currentStyle[c.replace(/\-(\w)/g,function(e,d){return d.toUpperCase()})];if(c=="filter"){b=b.replace(/alpha\(opacity=([0-9]+)\)/,function(e,d){return d/100})}return b===""?1:b}}},getPageSize:function(){var f=document,b=window,e=f.compatMode&&f.compatMode!="BackCompat"?f.documentElement:f.body,g=hs.ie&&(hs.uaVersion<9||typeof pageXOffset=="undefined");var c=g?e.clientWidth:(f.documentElement.clientWidth||self.innerWidth),a=g?e.clientHeight:self.innerHeight;hs.page={width:c,height:a,scrollLeft:g?e.scrollLeft:pageXOffset,scrollTop:g?e.scrollTop:pageYOffset};return hs.page},getPosition:function(a){var b={x:a.offsetLeft,y:a.offsetTop};while(a.offsetParent){a=a.offsetParent;b.x+=a.offsetLeft;b.y+=a.offsetTop;if(a!=document.body&&a!=document.documentElement){b.x-=a.scrollLeft;b.y-=a.scrollTop}}return b},expand:function(b,g,d,c){if(!b){b=hs.createElement("a",null,{display:"none"},hs.container)}if(typeof b.getParams=="function"){return g}try{new hs.Expander(b,g,d);return false}catch(f){return true}},focusTopmost:function(){var c=0,b=-1,a=hs.expanders,e,f;for(var d=0;dc){c=f;b=d}}}if(b==-1){hs.focusKey=-1}else{a[b].focus()}},getParam:function(b,d){b.getParams=b.onclick;var c=b.getParams?b.getParams():null;b.getParams=null;return(c&&typeof c[d]!="undefined")?c[d]:(typeof hs[d]!="undefined"?hs[d]:null)},getSrc:function(b){var c=hs.getParam(b,"src");if(c){return c}return b.href},getNode:function(e){var c=hs.$(e),d=hs.clones[e],b={};if(!c&&!d){return null}if(!d){d=c.cloneNode(true);d.id="";hs.clones[e]=d;return c}else{return d.cloneNode(true)}},discardElement:function(a){if(a){hs.garbageBin.appendChild(a)}hs.garbageBin.innerHTML=""},transit:function(a,d){var b=d||hs.getExpander();d=b;if(hs.upcoming){return false}else{hs.last=b}hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);try{hs.upcoming=a;a.onclick()}catch(c){hs.last=hs.upcoming=null}try{d.close()}catch(c){}return false},previousOrNext:function(a,c){var b=hs.getExpander(a);if(b){return hs.transit(b.getAdjacentAnchor(c),b)}else{return false}},previous:function(a){return hs.previousOrNext(a,-1)},next:function(a){return hs.previousOrNext(a,1)},keyHandler:function(a){if(!a){a=window.event}if(!a.target){a.target=a.srcElement}if(typeof a.target.form!="undefined"){return true}var b=hs.getExpander();var c=null;switch(a.keyCode){case 70:if(b){b.doFullExpand()}return true;case 32:case 34:case 39:case 40:c=1;break;case 8:case 33:case 37:case 38:c=-1;break;case 27:case 13:c=0}if(c!==null){hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);if(!hs.enableKeyListener){return true}if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}if(b){if(c==0){b.close()}else{hs.previousOrNext(b.key,c)}return false}}return true},registerOverlay:function(a){hs.push(hs.overlays,hs.extend(a,{hsId:"hsId"+hs.idCounter++}))},getWrapperKey:function(c,b){var e,d=/^highslide-wrapper-([0-9]+)$/;e=c;while(e.parentNode){if(e.id&&d.test(e.id)){return e.id.replace(d,"$1")}e=e.parentNode}if(!b){e=c;while(e.parentNode){if(e.tagName&&hs.isHsAnchor(e)){for(var a=0;a1){return true}if(!d.target){d.target=d.srcElement}var b=d.target;while(b.parentNode&&!(/highslide-(image|move|html|resize)/.test(b.className))){b=b.parentNode}var f=hs.getExpander(b);if(f&&(f.isClosing||!f.isExpanded)){return true}if(f&&d.type=="mousedown"){if(d.target.form){return true}var a=b.className.match(/highslide-(image|move|resize)/);if(a){hs.dragArgs={exp:f,type:a[1],left:f.x.pos,width:f.x.size,top:f.y.pos,height:f.y.size,clickX:d.clientX,clickY:d.clientY};hs.addEventListener(document,"mousemove",hs.dragHandler);if(d.preventDefault){d.preventDefault()}if(/highslide-(image|html)-blur/.test(f.content.className)){f.focus();hs.hasFocused=true}return false}}else{if(d.type=="mouseup"){hs.removeEventListener(document,"mousemove",hs.dragHandler);if(hs.dragArgs){if(hs.styleRestoreCursor&&hs.dragArgs.type=="image"){hs.dragArgs.exp.content.style.cursor=hs.styleRestoreCursor}var c=hs.dragArgs.hasDragged;if(!c&&!hs.hasFocused&&!/(move|resize)/.test(hs.dragArgs.type)){f.close()}else{if(c||(!c&&hs.hasHtmlExpanders)){hs.dragArgs.exp.doShowHide("hidden")}}hs.hasFocused=false;hs.dragArgs=null}else{if(/highslide-image-blur/.test(b.className)){b.style.cursor=hs.styleRestoreCursor}}}}return false},dragHandler:function(c){if(!hs.dragArgs){return true}if(!c){c=window.event}var b=hs.dragArgs,d=b.exp;b.dX=c.clientX-b.clickX;b.dY=c.clientY-b.clickY;var f=Math.sqrt(Math.pow(b.dX,2)+Math.pow(b.dY,2));if(!b.hasDragged){b.hasDragged=(b.type!="image"&&f>0)||(f>(hs.dragSensitivity||5))}if(b.hasDragged&&c.clientX>5&&c.clientY>5){if(b.type=="resize"){d.resize(b)}else{d.moveTo(b.left+b.dX,b.top+b.dY);if(b.type=="image"){d.content.style.cursor="move"}}}return false},wrapperMouseHandler:function(c){try{if(!c){c=window.event}var b=/mouseover/i.test(c.type);if(!c.target){c.target=c.srcElement}if(!c.relatedTarget){c.relatedTarget=b?c.fromElement:c.toElement}var d=hs.getExpander(c.target);if(!d.isExpanded){return}if(!d||!c.relatedTarget||hs.getExpander(c.relatedTarget,true)==d||hs.dragArgs){return}for(var a=0;a=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var a=true;for(var b in this.options.curAnim){if(this.options.curAnim[b]!==true){a=false}}if(a){if(this.options.complete){this.options.complete.call(this.elem)}}return false}else{var e=c-this.startTime;this.state=e/this.options.duration;this.pos=this.options.easing(e,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};hs.extend(hs.fx,{step:{opacity:function(a){hs.setStyles(a.elem,{opacity:a.now})},_default:function(a){try{if(a.elem.style&&a.elem.style[a.prop]!=null){a.elem.style[a.prop]=a.now+a.unit}else{a.elem[a.prop]=a.now}}catch(b){}}}});hs.Outline=function(g,e){this.onLoad=e;this.outlineType=g;var a=hs.uaVersion,f;this.hasAlphaImageLoader=hs.ie&&hs.uaVersion<7;if(!g){if(e){e()}return}hs.init();this.table=hs.createElement("table",{cellSpacing:0},{visibility:"hidden",position:"absolute",borderCollapse:"collapse",width:0},hs.container,true);var b=hs.createElement("tbody",null,null,this.table,1);this.td=[];for(var c=0;c<=8;c++){if(c%3==0){f=hs.createElement("tr",null,{height:"auto"},b,true)}this.td[c]=hs.createElement("td",null,null,f,true);var d=c!=4?{lineHeight:0,fontSize:0}:{position:"relative"};hs.setStyles(this.td[c],d)}this.td[4].className=g+" highslide-outline";this.preloadGraphic()};hs.Outline.prototype={preloadGraphic:function(){var b=hs.graphicsDir+(hs.outlinesDir||"outlines/")+this.outlineType+".png";var a=hs.safari&&hs.uaVersion<525?hs.container:null;this.graphic=hs.createElement("img",null,{position:"absolute",top:"-9999px"},a,true);var c=this;this.graphic.onload=function(){c.onGraphicLoad()};this.graphic.src=b},onGraphicLoad:function(){var d=this.offset=this.graphic.width/4,f=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],c={height:(2*d)+"px",width:(2*d)+"px"};for(var b=0;b<=8;b++){if(f[b]){if(this.hasAlphaImageLoader){var a=(b==1||b==7)?"100%":this.graphic.width+"px";var e=hs.createElement("div",null,{width:"100%",height:"100%",position:"relative",overflow:"hidden"},this.td[b],true);hs.createElement("div",null,{filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+this.graphic.src+"')",position:"absolute",width:a,height:this.graphic.height+"px",left:(f[b][0]*d)+"px",top:(f[b][1]*d)+"px"},e,true)}else{hs.setStyles(this.td[b],{background:"url("+this.graphic.src+") "+(f[b][0]*d)+"px "+(f[b][1]*d)+"px"})}if(window.opera&&(b==3||b==5)){hs.createElement("div",null,c,this.td[b],true)}hs.setStyles(this.td[b],c)}}this.graphic=null;if(hs.pendingOutlines[this.outlineType]){hs.pendingOutlines[this.outlineType].destroy()}hs.pendingOutlines[this.outlineType]=this;if(this.onLoad){this.onLoad()}},setPosition:function(g,e,c,b,f){var d=this.exp,a=d.wrapper.style,e=e||0,g=g||{x:d.x.pos+e,y:d.y.pos+e,w:d.x.get("wsize")-2*e,h:d.y.get("wsize")-2*e};if(c){this.table.style.visibility=(g.h>=4*this.offset)?"visible":"hidden"}hs.setStyles(this.table,{left:(g.x-this.offset)+"px",top:(g.y-this.offset)+"px",width:(g.w+2*this.offset)+"px"});g.w-=2*this.offset;g.h-=2*this.offset;hs.setStyles(this.td[4],{width:g.w>=0?g.w+"px":0,height:g.h>=0?g.h+"px":0});if(this.hasAlphaImageLoader){this.td[3].style.height=this.td[5].style.height=this.td[4].style.height}},destroy:function(a){if(a){this.table.style.visibility="hidden"}else{hs.discardElement(this.table)}}};hs.Dimension=function(b,a){this.exp=b;this.dim=a;this.ucwh=a=="x"?"Width":"Height";this.wh=this.ucwh.toLowerCase();this.uclt=a=="x"?"Left":"Top";this.lt=this.uclt.toLowerCase();this.ucrb=a=="x"?"Right":"Bottom";this.rb=this.ucrb.toLowerCase();this.p1=this.p2=0};hs.Dimension.prototype={get:function(a){switch(a){case"loadingPos":return this.tpos+this.tb+(this.t-hs.loading["offset"+this.ucwh])/2;case"wsize":return this.size+2*this.cb+this.p1+this.p2;case"fitsize":return this.clientSize-this.marginMin-this.marginMax;case"maxsize":return this.get("fitsize")-2*this.cb-this.p1-this.p2;case"opos":return this.pos-(this.exp.outline?this.exp.outline.offset:0);case"osize":return this.get("wsize")+(this.exp.outline?2*this.exp.outline.offset:0);case"imgPad":return this.imgSize?Math.round((this.size-this.imgSize)/2):0}},calcBorders:function(){this.cb=(this.exp.content["offset"+this.ucwh]-this.t)/2;this.marginMax=hs["margin"+this.ucrb]},calcThumb:function(){this.t=this.exp.el[this.wh]?parseInt(this.exp.el[this.wh]):this.exp.el["offset"+this.ucwh];this.tpos=this.exp.tpos[this.dim];this.tb=(this.exp.el["offset"+this.ucwh]-this.t)/2;if(this.tpos==0||this.tpos==-1){this.tpos=(hs.page[this.wh]/2)+hs.page["scroll"+this.uclt]}},calcExpanded:function(){var a=this.exp;this.justify="auto";this.pos=this.tpos-this.cb+this.tb;if(this.maxHeight&&this.dim=="x"){a.maxWidth=Math.min(a.maxWidth||this.full,a.maxHeight*this.full/a.y.full)}this.size=Math.min(this.full,a["max"+this.ucwh]||this.full);this.minSize=a.allowSizeReduction?Math.min(a["min"+this.ucwh],this.full):this.full;if(a.isImage&&a.useBox){this.size=a[this.wh];this.imgSize=this.full}if(this.dim=="x"&&hs.padToMinWidth){this.minSize=a.minWidth}this.marginMin=hs["margin"+this.uclt];this.scroll=hs.page["scroll"+this.uclt];this.clientSize=hs.page[this.wh]},setSize:function(a){var b=this.exp;if(b.isImage&&(b.useBox||hs.padToMinWidth)){this.imgSize=a;this.size=Math.max(this.size,this.imgSize);b.content.style[this.lt]=this.get("imgPad")+"px"}else{this.size=a}b.content.style[this.wh]=a+"px";b.wrapper.style[this.wh]=this.get("wsize")+"px";if(b.outline){b.outline.setPosition()}if(this.dim=="x"&&b.overlayBox){b.sizeOverlayBox(true)}},setPos:function(a){this.pos=a;this.exp.wrapper.style[this.lt]=a+"px";if(this.exp.outline){this.exp.outline.setPosition()}}};hs.Expander=function(k,f,b,l){if(document.readyState&&hs.ie&&!hs.isReady){hs.addEventListener(document,"ready",function(){new hs.Expander(k,f,b,l)});return}this.a=k;this.custom=b;this.contentType=l||"image";this.isImage=!this.isHtml;hs.continuePreloading=false;this.overlays=[];hs.init();var m=this.key=hs.expanders.length;for(var g=0;g(this.x.imgSize||this.x.size)){this.createFullExpand();if(this.overlays.length==1){this.sizeOverlayBox()}}}this.show()}catch(c){this.error(c)}},justify:function(f,b){var g,h=f.target,e=f==this.x?"x":"y";var d=false;var a=f.exp.allowSizeReduction;f.pos=Math.round(f.pos-((f.get("wsize")-f.t)/2));if(f.posf.scroll+f.clientSize-f.marginMax){if(!b&&d&&a){f.size=Math.min(f.size,f.get(e=="y"?"fitsize":"maxsize"))}else{if(f.get("wsize")c){d=b*c;if(dthis.minHeight&&a.size>this.minWidth&&d.get("wsize")>d.get("fitsize")){d.size-=10;if(b){a.size=d.size*b}this.sizeOverlayBox(0,1);c=true}}return c},show:function(){var a=this.x,b=this.y;this.doShowHide("hidden");this.changeSize(1,{wrapper:{width:a.get("wsize"),height:b.get("wsize"),left:a.pos,top:b.pos},content:{left:a.p1+a.get("imgPad"),top:b.p1+b.get("imgPad"),width:a.imgSize||a.size,height:b.imgSize||b.size}},hs.expandDuration)},changeSize:function(b,h,c){if(this.outline&&!this.outlineWhileAnimating){if(b){this.outline.setPosition()}else{this.outline.destroy()}}if(!b){this.destroyOverlays()}var e=this,a=e.x,g=e.y,f=this.easing;if(!b){f=this.easingClose||f}var d=b?function(){if(e.outline){e.outline.table.style.visibility="visible"}setTimeout(function(){e.afterExpand()},50)}:function(){e.afterClose()};if(b){hs.setStyles(this.wrapper,{width:a.t+"px",height:g.t+"px"})}if(this.fadeInOut){hs.setStyles(this.wrapper,{opacity:b?0:1});hs.extend(h.wrapper,{opacity:b})}hs.animate(this.wrapper,h.wrapper,{duration:c,easing:f,step:function(k,i){if(e.outline&&e.outlineWhileAnimating&&i.prop=="top"){var j=b?i.pos:1-i.pos;var l={w:a.t+(a.get("wsize")-a.t)*j,h:g.t+(g.get("wsize")-g.t)*j,x:a.tpos+(a.pos-a.tpos)*j,y:g.tpos+(g.pos-g.tpos)*j};e.outline.setPosition(l,0,1)}}});hs.animate(this.content,h.content,c,f,d);if(b){this.wrapper.style.visibility="visible";this.content.style.visibility="visible";this.a.className+=" highslide-active-anchor"}},afterExpand:function(){this.isExpanded=true;this.focus();if(hs.upcoming&&hs.upcoming==this.a){hs.upcoming=null}this.prepareNextOutline();var c=hs.page,b=hs.mouse.x+c.scrollLeft,a=hs.mouse.y+c.scrollTop;this.mouseIsOver=this.x.posthis.x.get("opos")+this.x.get("osize"));var g=(k.y+k.hthis.y.get("opos")+this.y.get("osize"));var d=hs.getWrapperKey(e[f]);if(!j&&!g&&d!=this.key){if(!h){e[f].setAttribute("hidden-by","["+this.key+"]");e[f].origProp=e[f].style[a];e[f].style[a]="hidden"}else{if(h.indexOf("["+this.key+"]")==-1){e[f].setAttribute("hidden-by",h+"["+this.key+"]")}}}else{if((h=="["+this.key+"]"||hs.focusKey==d)&&d!=this.key){e[f].setAttribute("hidden-by","");e[f].style[a]=e[f].origProp||""}else{if(h&&h.indexOf("["+this.key+"]")>-1){e[f].setAttribute("hidden-by",h.replace("["+this.key+"]",""))}}}}}}}},focus:function(){this.wrapper.style.zIndex=hs.zIndexCounter+=2;for(var a=0;a35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){u m={1F:{8l:\'6P\',6K:\'93...\',6L:\'6b 1L 92\',7T:\'6b 1L 91 1L 8Z\',88:\'90 1L 94 I (f)\',8e:\'95 2t 6I 6F\',8b:\'9a 1L 98 6I 6F 97\',5V:\'6b 1L 2h 1Y, 96 6O 8Y 1L 3c. 8X 8Q 8P S 1A 6O 79.\'},47:\'1c/8O/\',4l:\'8M.6A\',3S:\'8N.6A\',84:5c,7y:5c,43:15,7J:15,48:15,7N:15,3L:8R,7g:0.75,8j:G,5U:5,2R:2,8S:3,3V:1a,7z:\'2S 2o\',7O:1,7W:G,8x:\'8W://1c.8V/\',8o:\'8U\',7e:G,5t:[\'a\'],68:G,3Y:6W,3K:6W,3N:G,1h:\'9b-9c\',3U:[],5j:G,N:[],5i:[\'3N\',\'2d\',\'1h\',\'2R\',\'9u\',\'9t\',\'9s\',\'6R\',\'9q\',\'9r\',\'9v\',\'6X\',\'89\',\'68\',\'M\',\'16\',\'60\',\'3Y\',\'3K\',\'4X\',\'5q\',\'8h\',\'3b\',\'1J\',\'85\',\'86\',\'1l\'],1v:[],3F:0,9w:{x:[\'8n\',\'18\',\'6c\',\'2o\',\'7x\'],y:[\'42\',\'W\',\'6a\',\'2S\',\'4r\']},4B:{},6X:{},6R:{},2A:[],2Q:{},6m:{},4a:[],1R:/9A\\/4\\.0/.14(3W.4V)?8:6g((3W.4V.58().2X(/.+(?:6V|9z|9y|1P)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1P:(L.3R&&!1n.2r),4D:/9x/.14(3W.4V),8y:/9p.+6V:1\\.[0-8].+9o/.14(3W.4V),$:A(1t){q(1t)C L.9h(1t)},2e:A(2c,2v){2c[2c.X]=2v},Z:A(6S,3a,2F,6f,6U){u B=L.Z(6S);q(3a)m.2q(B,3a);q(6U)m.T(B,{9f:0,9d:\'3r\',5h:0});q(2F)m.T(B,2F);q(6f)6f.2g(B);C B},2q:A(B,3a){S(u x 3v 3a)B[x]=3a[x];C B},T:A(B,2F){S(u x 3v 2F){q(m.2Y&&x==\'1o\'){q(2F[x]>0.99)B.F.9e(\'3P\');K B.F.3P=\'7k(1o=\'+(2F[x]*1V)+\')\'}K B.F[x]=2F[x]}},3p:A(B,Q,25){u 2O,3h,2M;q(1m 25!=\'5I\'||25===H){u 2y=87;25={2Z:2y[2],1J:2y[3],5y:2y[4]}}q(1m 25.2Z!=\'3g\')25.2Z=5c;25.1J=1d[25.1J]||1d.6Z;25.4c=m.2q({},Q);S(u 2b 3v Q){u e=1S m.1k(B,25,2b);2O=6g(m.5s(B,2b))||0;3h=6g(Q[2b]);2M=2b!=\'1o\'?\'D\':\'\';e.2z(2O,3h,2M)}},5s:A(B,Q){q(B.F[Q]){C B.F[Q]}K q(L.63){C L.63.8B(B,H).8s(Q)}K{q(Q==\'1o\')Q=\'3P\';u 2v=B.8L[Q.31(/\\-(\\w)/g,A(a,b){C b.9j()})];q(Q==\'3P\')2v=2v.31(/7k\\(1o=([0-9]+)\\)/,A(a,b){C b/1V});C 2v===\'\'?1:2v}},4N:A(){u d=L,w=1n,3D=d.5a&&d.5a!=\'5K\'?d.3i:d.4J,2Y=m.1P&&(m.1R<9||1m 71==\'1Z\');u M=2Y?3D.7j:(d.3i.7j||4H.9n),16=2Y?3D.9m:4H.9l;m.2J={M:M,16:16,4w:2Y?3D.4w:71,4y:2Y?3D.4y:9k};C m.2J},62:A(B){u p={x:B.7n,y:B.7s};3m(B.7m){B=B.7m;p.x+=B.7n;p.y+=B.7s;q(B!=L.4J&&B!=L.3i){p.x-=B.4w;p.y-=B.4y}}C p},4b:A(a,21,2z,J){q(!a)a=m.Z(\'a\',H,{3q:\'3r\'},m.20);q(1m a.3E==\'A\')C 21;1z{1S m.46(a,21,2z);C 1a}1C(e){C G}},7a:A(){u 5X=0,54=-1,N=m.N,z,1p;S(u i=0;i5X){5X=1p;54=i}}}q(54==-1)m.2u=-1;K N[54].3k()},5r:A(a,3J){a.3E=a.3x;u p=a.3E?a.3E():H;a.3E=H;C(p&&1m p[3J]!=\'1Z\')?p[3J]:(1m m[3J]!=\'1Z\'?m[3J]:H)},5l:A(a){u 1l=m.5r(a,\'1l\');q(1l)C 1l;C a.3y},3B:A(1t){u 4s=m.$(1t),2U=m.6m[1t],a={};q(!4s&&!2U)C H;q(!2U){2U=4s.7f(G);2U.1t=\'\';m.6m[1t]=2U;C 4s}K{C 2U.7f(G)}},3t:A(d){q(d)m.5k.2g(d);m.5k.3G=\'\'},74:A(66,z){u 2G=z||m.2C();z=2G;q(m.2W)C 1a;K m.2G=2G;m.3d(L,1n.2r?\'4R\':\'4T\',m.3H);1z{m.2W=66;66.3x()}1C(e){m.2G=m.2W=H}1z{z.2h()}1C(e){}C 1a},4e:A(B,1W){u z=m.2C(B);q(z)C m.74(z.5m(1W),z);K C 1a},79:A(B){C m.4e(B,-1)},1A:A(B){C m.4e(B,1)},3H:A(e){q(!e)e=1n.1G;q(!e.1M)e.1M=e.6x;q(1m e.1M.7c!=\'1Z\')C G;u z=m.2C();u 1W=H;7u(e.8F){1q 70:q(z)z.5M();C G;1q 32:1q 34:1q 39:1q 40:1W=1;6r;1q 8:1q 33:1q 37:1q 38:1W=-1;6r;1q 27:1q 13:1W=0}q(1W!==H){m.3d(L,1n.2r?\'4R\':\'4T\',m.3H);q(!m.7e)C G;q(e.4F)e.4F();K e.8E=1a;q(z){q(1W==0){z.2h()}K{m.4e(z.R,1W)}C 1a}}C G},8G:A(O){m.2e(m.1v,m.2q(O,{2a:\'2a\'+m.3F++}))},65:A(6l,4u){u B,30=/^1c-V-([0-9]+)$/;B=6l;3m(B.2V){q(B.1t&&30.14(B.1t))C B.1t.31(30,"$1");B=B.2V}q(!4u){B=6l;3m(B.2V){q(B.4g&&m.4E(B)){S(u R=0;R1)C G;q(!e.1M)e.1M=e.6x;u B=e.1M;3m(B.2V&&!(/1c-(1Y|3c|4Z|2T)/.14(B.1g))){B=B.2V}u z=m.2C(B);q(z&&(z.6k||!z.3C))C G;q(z&&e.J==\'7o\'){q(e.1M.7c)C G;u 2X=B.1g.2X(/1c-(1Y|3c|2T)/);q(2X){m.1U={z:z,J:2X[1],18:z.x.E,M:z.x.I,W:z.y.E,16:z.y.I,72:e.4z,76:e.4o};m.1D(L,\'6w\',m.6D);q(e.4F)e.4F();q(/1c-(1Y|4Z)-5W/.14(z.11.1g)){z.3k();m.6B=G}C 1a}}K q(e.J==\'7i\'){m.3d(L,\'6w\',m.6D);q(m.1U){q(m.3e&&m.1U.J==\'1Y\')m.1U.z.11.F.2N=m.3e;u 2E=m.1U.2E;q(!2E&&!m.6B&&!/(3c|2T)/.14(m.1U.J)){z.2h()}K q(2E||(!2E&&m.8C)){m.1U.z.45(\'1i\')}m.6B=1a;m.1U=H}K q(/1c-1Y-5W/.14(B.1g)){B.F.2N=m.3e}}C 1a},6D:A(e){q(!m.1U)C G;q(!e)e=1n.1G;u a=m.1U,z=a.z;a.5b=e.4z-a.72;a.6o=e.4o-a.76;u 6n=1d.a7(1d.7q(a.5b,2)+1d.7q(a.6o,2));q(!a.2E)a.2E=(a.J!=\'1Y\'&&6n>0)||(6n>(m.al||5));q(a.2E&&e.4z>5&&e.4o>5){q(a.J==\'2T\')z.2T(a);K{z.5v(a.18+a.5b,a.W+a.6o);q(a.J==\'1Y\')z.11.F.2N=\'3c\'}}C 1a},8g:A(e){1z{q(!e)e=1n.1G;u 4C=/ao/i.14(e.J);q(!e.1M)e.1M=e.6x;q(!e.4v)e.4v=4C?e.an:e.9C;u z=m.2C(e.1M);q(!z.3C)C;q(!z||!e.4v||m.2C(e.4v,G)==z||m.1U)C;S(u i=0;i=k.1w.2Z+k.5x){k.2I=k.3h;k.E=k.5E=1;k.5C();k.1w.4c[k.Q]=G;u 5z=G;S(u i 3v k.1w.4c)q(k.1w.4c[i]!==G)5z=1a;q(5z){q(k.1w.5y)k.1w.5y.77(k.1Q)}C 1a}K{u n=t-k.5x;k.5E=n/k.1w.2Z;k.E=k.1w.1J(n,0,1,k.1w.2Z);k.2I=k.2O+((k.3h-k.2O)*k.E);k.5C()}C G}};m.2q(m.1k,{2x:{1o:A(1k){m.T(1k.1Q,{1o:1k.2I})},7r:A(1k){1z{q(1k.1Q.F&&1k.1Q.F[1k.Q]!=H)1k.1Q.F[1k.Q]=1k.2I+1k.2M;K 1k.1Q[1k.Q]=1k.2I}1C(e){}}}});m.41=A(1h,2P){k.2P=2P;k.1h=1h;u v=m.1R,4Y;k.5J=m.1P&&m.1R<7;q(!1h){q(2P)2P();C}m.6y();k.28=m.Z(\'28\',{9V:0},{1b:\'1i\',1e:\'29\',9X:\'9Y\',M:0},m.20,G);u 5R=m.Z(\'5R\',H,H,k.28,1);k.1H=[];S(u i=0;i<=8;i++){q(i%3==0)4Y=m.Z(\'4Y\',H,{16:\'2l\'},5R,G);k.1H[i]=m.Z(\'1H\',H,H,4Y,G);u F=i!=4?{9Z:0,aF:0}:{1e:\'6j\'};m.T(k.1H[i],F)}k.1H[4].1g=1h+\' 1c-19\';k.7t()};m.41.53={7t:A(){u 1l=m.47+(m.9K||"9O/")+k.1h+".9N";u 6T=m.4D&&m.1R<7v?m.20:H;k.2k=m.Z(\'1f\',H,{1e:\'29\',W:\'-3X\'},6T,G);u 6E=k;k.2k.4S=A(){6E.6N()};k.2k.1l=1l},6N:A(){u o=k.1j=k.2k.M/4,E=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1x={16:(2*o)+\'D\',M:(2*o)+\'D\'};S(u i=0;i<=8;i++){q(E[i]){q(k.5J){u w=(i==1||i==7)?\'1V%\':k.2k.M+\'D\';u 1O=m.Z(\'1O\',H,{M:\'1V%\',16:\'1V%\',1e:\'6j\',2L:\'1i\'},k.1H[i],G);m.Z(\'1O\',H,{3P:"a0:9U.9W.a1(a8=9I, 1l=\'"+k.2k.1l+"\')",1e:\'29\',M:w,16:k.2k.16+\'D\',18:(E[i][0]*o)+\'D\',W:(E[i][1]*o)+\'D\'},1O,G)}K{m.T(k.1H[i],{9J:\'5T(\'+k.2k.1l+\') \'+(E[i][0]*o)+\'D \'+(E[i][1]*o)+\'D\'})}q(1n.2r&&(i==3||i==5))m.Z(\'1O\',H,1x,k.1H[i],G);m.T(k.1H[i],1x)}}k.2k=H;q(m.2Q[k.1h])m.2Q[k.1h].4q();m.2Q[k.1h]=k;q(k.2P)k.2P()},3A:A(E,1j,6H,2p,1J){u z=k.z,9E=z.V.F,1j=1j||0,E=E||{x:z.x.E+1j,y:z.y.E+1j,w:z.x.P(\'1u\')-2*1j,h:z.y.P(\'1u\')-2*1j};q(6H)k.28.F.1b=(E.h>=4*k.1j)?\'1X\':\'1i\';m.T(k.28,{18:(E.x-k.1j)+\'D\',W:(E.y-k.1j)+\'D\',M:(E.w+2*k.1j)+\'D\'});E.w-=2*k.1j;E.h-=2*k.1j;m.T(k.1H[4],{M:E.w>=0?E.w+\'D\':0,16:E.h>=0?E.h+\'D\':0});q(k.5J)k.1H[3].F.16=k.1H[5].F.16=k.1H[4].F.16},4q:A(6Y){q(6Y)k.28.F.1b=\'1i\';K m.3t(k.28)}};m.4W=A(z,1x){k.z=z;k.1x=1x;k.2D=1x==\'x\'?\'ax\':\'av\';k.2w=k.2D.58();k.3O=1x==\'x\'?\'ar\':\'au\';k.5o=k.3O.58();k.5f=1x==\'x\'?\'az\':\'aA\';k.aG=k.5f.58();k.1B=k.2f=0};m.4W.53={P:A(R){7u(R){1q\'5O\':C k.1s+k.2j+(k.t-m.1E[\'1j\'+k.2D])/2;1q\'1u\':C k.I+2*k.Y+k.1B+k.2f;1q\'3o\':C k.55-k.2K-k.4I;1q\'5G\':C k.P(\'3o\')-2*k.Y-k.1B-k.2f;1q\'3Q\':C k.E-(k.z.19?k.z.19.1j:0);1q\'64\':C k.P(\'1u\')+(k.z.19?2*k.z.19.1j:0);1q\'4h\':C k.1y?1d.56((k.I-k.1y)/2):0}},5w:A(){k.Y=(k.z.11[\'1j\'+k.2D]-k.t)/2;k.4I=m[\'5h\'+k.5f]},5g:A(){k.t=k.z.B[k.2w]?aC(k.z.B[k.2w]):k.z.B[\'1j\'+k.2D];k.1s=k.z.1s[k.1x];k.2j=(k.z.B[\'1j\'+k.2D]-k.t)/2;q(k.1s==0||k.1s==-1){k.1s=(m.2J[k.2w]/2)+m.2J[\'2B\'+k.3O]}},5B:A(){u z=k.z;k.3n=\'2l\';k.E=k.1s-k.Y+k.2j;q(k.5q&&k.1x==\'x\')z.4X=1d.22(z.4X||k.U,z.5q*k.U/z.y.U);k.I=1d.22(k.U,z[\'67\'+k.2D]||k.U);k.1T=z.3N?1d.22(z[\'22\'+k.2D],k.U):k.U;q(z.3f&&z.2d){k.I=z[k.2w];k.1y=k.U}q(k.1x==\'x\'&&m.3V)k.1T=z.3Y;k.2K=m[\'5h\'+k.3O];k.2B=m.2J[\'2B\'+k.3O];k.55=m.2J[k.2w]},6h:A(i){u z=k.z;q(z.3f&&(z.2d||m.3V)){k.1y=i;k.I=1d.67(k.I,k.1y);z.11.F[k.5o]=k.P(\'4h\')+\'D\'}K k.I=i;z.11.F[k.2w]=i+\'D\';z.V.F[k.2w]=k.P(\'1u\')+\'D\';q(z.19)z.19.3A();q(k.1x==\'x\'&&z.1r)z.35(G)},5Z:A(i){k.E=i;k.z.V.F[k.5o]=i+\'D\';q(k.z.19)k.z.19.3A()}};m.46=A(a,21,2z,26){q(L.ab&&m.1P&&!m.5n){m.1D(L,\'2H\',A(){1S m.46(a,21,2z,26)});C}k.a=a;k.2z=2z;k.26=26||\'1Y\';k.3f=!k.ak;m.5j=1a;k.1v=[];m.6y();u R=k.R=m.N.X;S(u i=0;i(k.x.1y||k.x.I)){k.8p();q(k.1v.X==1)k.35()}}k.7U()}1C(e){k.5Q(e)}},3n:A(p,3l){u a5,a3=p.1M,1x=p==k.x?\'x\':\'y\';u 5D=1a;u 3s=p.z.3N;p.E=1d.56(p.E-((p.P(\'1u\')-p.t)/2));q(p.Ep.2B+p.55-p.4I){q(!3l&&5D&&3s){p.I=1d.22(p.I,p.P(1x==\'y\'?\'3o\':\'5G\'))}K q(p.P(\'1u\')1K){ 1N=24*1K;q(1Nk.3K&&x.I>k.3Y&&y.P(\'1u\')>y.P(\'3o\')){y.I-=10;q(1K)x.I=y.I*1K;k.35(0,1);2m=G}}C 2m},7U:A(){u x=k.x,y=k.y;k.45(\'1i\');k.6e(1,{V:{M:x.P(\'1u\'),16:y.P(\'1u\'),18:x.E,W:y.E},11:{18:x.1B+x.P(\'4h\'),W:y.1B+y.P(\'4h\'),M:x.1y||x.I,16:y.1y||y.I}},m.84)},6e:A(23,1L,2p){q(k.19&&!k.2R){q(23)k.19.3A();K k.19.4q()}q(!23)k.8v();u z=k,x=z.x,y=z.y,1J=k.1J;q(!23)1J=k.85||1J;u 7A=23?A(){q(z.19)z.19.28.F.1b="1X";5S(A(){z.7B()},50)}:A(){z.5P()};q(23)m.T(k.V,{M:x.t+\'D\',16:y.t+\'D\'});q(k.86){m.T(k.V,{1o:23?0:1});m.2q(1L.V,{1o:23})}m.3p(k.V,1L.V,{2Z:2p,1J:1J,2x:A(2v,2y){q(z.19&&z.2R&&2y.Q==\'W\'){u 3I=23?2y.E:1-2y.E;u E={w:x.t+(x.P(\'1u\')-x.t)*3I,h:y.t+(y.P(\'1u\')-y.t)*3I,x:x.1s+(x.E-x.1s)*3I,y:y.1s+(y.E-y.1s)*3I};z.19.3A(E,0,1)}}});m.3p(k.11,1L.11,2p,1J,7A);q(23){k.V.F.1b=\'1X\';k.11.F.1b=\'1X\';k.a.1g+=\' 1c-7P-7Q\'}},7B:A(){k.3C=G;k.3k();q(m.2W&&m.2W==k.a)m.2W=H;k.7w();u p=m.2J,5u=m.4B.x+p.4w,5p=m.4B.y+p.4y;k.6q=k.x.E<5u&&5uk.x.P(\'3Q\')+k.x.P(\'64\'));u 7M=(2n.y+2n.hk.y.P(\'3Q\')+k.y.P(\'64\'));u 4j=m.65(17[i]);q(!7G&&!7M&&4j!=k.R){q(!1I){17[i].3T(\'1i-2t\',\'[\'+k.R+\']\');17[i].61=17[i].F[Q];17[i].F[Q]=\'1i\'}K q(1I.7L(\'[\'+k.R+\']\')==-1){17[i].3T(\'1i-2t\',1I+\'[\'+k.R+\']\')}}K q((1I==\'[\'+k.R+\']\'||m.2u==4j)&&4j!=k.R){17[i].3T(\'1i-2t\',\'\');17[i].F[Q]=17[i].61||\'\'}K q(1I&&1I.7L(\'[\'+k.R+\']\')>-1){17[i].3T(\'1i-2t\',1I.31(\'[\'+k.R+\']\',\'\'))}}}}},3k:A(){k.V.F.1p=m.3L+=2;S(u i=0;i + + + + + + The CImg Library - C++ Template Image Processing Toolkit + + + + + + + + + + +
+ + + + +

What is CImg?

+ +

+ The Library is a small and open-source + C++ toolkit for image processing, + designed with these properties in mind : +

+ + + + + + + + + + + + + + +
Usefulness
+ defines classes and methods + to manage images in your own C++ code. You can use + to load/save various file formats, access pixel values, + display/transform/filter images, draw primitives (text, faces, curves, 3d objects, ...), compute statistics, + manage user interactions on images, and so on... +
Genericity
+ defines a single image class able to represent datasets having up to + 4-dimensions (from 1d scalar signals to 3d hyperspectral volumetric images), + with template pixel types (bool,char,int,float,...).
+ It also handles image collections and sequences. +
Portability
+ is self-contained, thread-safe and highly portable. It fully works on + different operating systems (Unix,Windows,MacOS X,*BSD,...) and is compatible + with various C++ compilers (Visual C++,g++,clang++,icc,...). +
Simplicity
+ is lightweight. It is made of a single header file + CImg.h + that must be included in your C++ source. It defines only four different classes, encapsulated + in the namespace cimg_library. + It can be compiled using a minimal set of standard C++ and system libraries only.
+ No need for exotic or complex dependencies. +
Extensibility
+ Although not mandatory, can use functionalities of external tools/libraries such as + Board, + FFMPEG, + FFTW3. + GraphicsMagick, + ImageMagick, + Lapack, + libcurl, + libjpeg, + libpng, + libtiff, + Magick++, + OpenEXR + OpenCV + OpenMP + or + XMedCon. + Moreover, a simple plug-in mechanism allows any user to directly enhance the library + capabilities according to his needs. +
Freedom
+ is a free, open-source library distributed under the + CeCILL-C (close to the GNU LGPL) + or + CeCILL (compatible with the GNU GPL) + licenses. It can be used in commercial applications. +
+ +

+ stands for Cool Image : It is easy to use, efficient and is intended to be + a very pleasant toolbox to design image processing algorithms in C++. Due to its generic conception, it can cover a wide range + of image processing applications. +

+ +
+ + + + +

Book (Fr)

+ +
    +
  • If you understand French, you may be interested by the nice book we wrote + on how to use the Library to develop image processing algorithms, from scratch. + In these 318 pages, we review the important concepts of the library and address a wide variety of applications in image processing + (Filtering, Mathematical Morphology, Feature Extraction, Segmentation, Multispectral Approaches, 3D Visualization, etc.).

    + +
  • +
+ +
+ + + + + +

Authors

+ + +    (Check out his blog) +

+ with the help of many contributors around the world :

+ + Maksim Aizenshtein, + Alberto Albiol, + Antonio Albiol, + Kiko Albiol, + Simon Barthelmé, + Neil Brown, + Haz-Edine Assemlal, + Vincent Barra, + Wolf Blecher, + Romain Blei, + Yohan Bentolila, + Jerome Boulanger, + Pierre Buyssens, + Sebastien Coudert, + Frederic Devernay, + Olivier D'Hondt, + François-Xavier Dupé, + Gerd von Egidy + Eric Fausett, + Jean-Marie Favreau, + Sebastien Fourey, + Alexandre Fournier, + Vincent Garcia, + David Grimbichler, + Jinwei Gu, + Jean-Daniel Guyot, + Cédric Hammiche, + Matt Hanson, + Sebastien Hanel, + Nicholas Hayes, + Michael Holroyd, + Christoph Hormann, + Hon-Kwok Fung, + Werner Jainek, + Vo Duc Khanh, + Daniel Kondermann, + Pierre Kornprobst, + Jan W. Krieger, + Francois Lauze, + Orges Leka, + Tony E Lewis, + Xie Long, + Thomas Martin, + Cesar Martinez, + Jean Martinot, + Arnold Meijster (Center for High Performance Computing and Visualization, University of Groningen/The Netherlands) + Nikita Melnichenko, + Baptiste Mougel, + Julien Morat, + Jovana Milutinovich, + Guillaume Nee, + Adam Newgas, + Francisco Oliveira, + Andrea Onofri, + Renaud Peteri, + Martin Petricek, + Paolo Prete, + Adrien Reboisson, + Klaus Schneider, + Jakob Schluttig, + Jamie Smith, + Veronique Souchaud, + Konstantin Spirin, + Rainer Steffens, + David G. Starkweather, + Elle Stone, + Grzegorz Szwoch, + Thierry Thomas, + Ulysse Vimont / Anatascope, + Yu-En-Yun, + Ingo Weyrich, + Phillip Wood, + Bug Zhao, + Haibo Zheng. + + +
+ + + + +

Licenses

+ +

+ The Library is an open-source product distributed under two distinct licenses : + the library core itself is dual-licensed and + can be governed either by the + CeCILL-C License (LGPL-like), + or the + CeCILL License (GPL-compatible). + Most of the other package files are distributed under the + CeCILL License. + Both are open-source licenses, the CeCILL-C being less restrictive than the CeCILL.

+ The Library source code has been registered to the APP + (French Agency for the Protection of Programs) by the INRIA, + under registration number IDDN.FR.001.040004.000.S.P.2004.000.21000. +

+ +
+ + + + +

Learn More

+ +
    +
  • The Tutorial section shows the basic use of classes + and functions with a small first code.
  • +
  • The Screenshots section illustrates some of the different source code examples provided in + the package.
  • +
  • You can look at the quite complete Library presentation slides (.pdf format) which gives + more insights on the different library concepts.
  • +
  • Online web statistics on the website activity are available + here.
  • +
+ +
+ + + + +

Quick History

+ +

+ The development of the Library began at the end of 1999, when I started my PhD thesis + in the Lab + at the Sophia Antipolis. + It was designed to help me and my colleagues developing various image processing algorithms, + for datasets as simple as 2D scalar images, or as complex as 3D volumes of diffusion tensors. I also used it for + courses on image processing I teached at the university. As a result, the Library + has been always intended to be compact, easy to install and to use, multi-platform and generic. + It provides a lot of basic functions that everyone would like to find in a good C++ image processing framework.

+ I am now a permanent researcher of the + institution, + working in the + group at the + lab in Caen/France. + I am still using, maintaining and updating the Library, and will probably do it for the next couple of years. +

+ +
+ + + + +

How to Help?

+ +

+ The Library is an open-source C++ library which is mainly developped during + free time. If you enjoy using , you may contribute to the project + in different ways. This will motivate me to continue the work. +

+ + +
+ + + diff --git a/html/jquery-3.5.1.min.js b/html/jquery-3.5.1.min.js new file mode 100644 index 000000000..b0614034a --- /dev/null +++ b/html/jquery-3.5.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 + + + + + + The CImg Library - C++ Template Image Processing Toolkit - Download + + + + + + + +
+ + + + +

Links

+ +

+ The Library is known to be used by the following projects. + If you are using and want your project to appear on this page, + please post a message in the forum, or contact us by e-mail. +

+
    +
  • ASCOS, a correction tool for satellite images.
  • +
  • Digikam, an advanced digital photo management application.
  • +
  • Event Neural Assembly Simulation is an open-source C++ library to simulate so called event neural unit. Done by the INRIA lab, in France.
  • +
  • GIPS and GIPPY are two new, related, open-source projects for processing of remote sensing data.
  • +
  • G'MIC is an open and full-featured framework for image processing, providing several different user interfaces to convert/manipulate/filter/visualize generic image datasets, from 1d scalar signals to 3d+t sequences of multi-spectral volumetric images.
  • +
  • IDIL (Integrated Data & Image Library), a cross-platform library for computing, plotting and image analysis.
  • +
  • Imager is an image/video processing package for R, based on CImg.
  • +
  • Inviwo is a software framework for rapid visualization prototyping.
  • +
  • lwip, a light-weight image processor for NodeJS.
  • +
  • MorphoGraphX is a cross-platform, open-source application for the visualization and processing of 3D biological datasets.
  • +
  • Marplot is the mapping program for the CAMEO software suite, which is used widely to plan for and respond to chemical emergencies.
  • +
  • Natron is a free open-source, cross-platform compositing software. It aims to produce visual effects.
  • +
  • OSRA (Optical Structure Recognition Application) is a utility designed to convert graphical representations of chemical structures into SMILES (Simplified Molecular Input Line Entry Specification) or SD files - a computer recognizable molecular structure formatis a free open-source, cross-platform compositing software.
  • +
  • PASIMODO, a program package for particle-based simulation methods, developed at the Institute of Engineering and Computational Mechanics (University of Stuttgart, Germany).
  • +
  • pHash is an open-source software library that implements several perceptual hashing algorithms, and provides a C-like API to use those functions in your own programs.
  • +
  • Photivo is an open-source photo processor. It handles your RAW files as well as bitmap files in a non-destructive 16 bit processing pipe with gimp workflow integration and batch mode.
  • +
  • QuickFit 3 is a data evaluation software for FCS and imagingFCS (imFCS) measurement.
  • +
  • Sofa is an open-source framework primarily targeted at real-time simulation, with an emphasis on medical simulation.
  • +
  • Theia is a computer vision library aimed at providing efficient and reliable algorithms for Structure from Motion (SfM) and Simultaneous Localization and Mapping (SLAM) systems.
  • +
  • Typhoon is a motion estimation program designed to retrieve vector motion fields from image sequences of turbulent flows.
  • +
  • The VIPS Library uses in one of its denoising plugin.
  • +
  • wxCam is a webcam application for Linux.
  • +
  • XRaySim is an open-source simulation package for use in Industrial Non-Destructive testing and medical imaging applications.
  • +
  • YaDICs (Yet another Digital Image Correlation software) is a free software to estimate non-rigid motion between image frames.
  • +
  • ZoomFX is a free tool to help in image batch process thanks to an helpful visual interface and powerful filters.
  • +
  • Other pieces of code using can be found on + Github.
  • +
+ +
+ + + diff --git a/html/screenshots.html b/html/screenshots.html new file mode 100644 index 000000000..bcb54e5b0 --- /dev/null +++ b/html/screenshots.html @@ -0,0 +1,489 @@ + + + + + + + The CImg Library - C++ Template Image Processing Toolkit - Download + + + + + + + + + + +
+ + + + +

Screenshots

+ +

+ The screenshots below have been taken from the different sample programs distributed within the + package. + Click on an image to enlarge it and on the source filename to display it. A link to a streaming video of the + corresponding effect is sometimes proposed. + If you are interested by a live demo, go to the download page + and get the pre-compiled binaries for your system. +

+ +
+ + + +
+
+
Demo Menu
+
+
+ : + The main demo sample of the package (1433 lines of code).
+ : + CImg_demo.cpp +

+ Contains 26 different real-time animations, as well as a nice selection menu. +

+ + Click here to see the video + +
+ +
+ + + +
+
+ +
+ : + A 2d bump-mapping effect (30 lines of code).
+ : + CImg_demo.cpp +

You can move the light source using the mouse. + This sample shows how to handle mouse motion and create an animation in a window. + It demonstrates also that the Library is quite fast ! + Everything is computed from scratch here, including the logo, the background and the light. +

+ + Click here to see the video + +
+ +
+ + + +
+
+ +
+ : + Computation of the Hough Transform (95 lines of code).
+ : + hough_transform.cpp +

+ Illustrate the computation of the Hough transform to detect lines in 2D images. Provide also simple user + interface to select and display lines. +

+
+ +
+ + + +
+
+ : + Do a fading between two images (35 lines of code).
+ : + fade_images.cpp +

+ Very small code to perform a funny effect. Also demonstrate how to easily deal with command line arguments. +

+
+ +
+ + + +
+
+ : + A functional Mandelbrot fractal explorer (51 lines of code).
+ : + CImg_demo.cpp +

+ Show how to use the predefined feature selection function present in the Library. +

+ + Click here to see the video + +
+ +
+ + + +
+
+ : + A simple shoot-em-up game, featuring the people of the Robotvis/Odyssee Lab (180 lines of code).
+ : + odykill.cpp +

+ Another demonstration of handling mouse and creating animation for pedagogic purposes. +

+
+ +
+ + + +
+
+ : + An implementation of an image registration algorithm, with + multiscale capability (201 lines of code).
+ : + image_registration.cpp +

+ Compute a motion map between two images, and warp one into the another through a smooth animation. +

+
+ +
+ + + +
+
+ : + A mini-painting program (30 lines of code).
+ : + CImg_demo.cpp +

+ This is not a replacement to Photoshop, but it already includes a filling algorithm + as well as a color selection tool. +

+ + Click here to see the video + +
+ +
+ + + +
+
+ : + A classical demomaking-effect, called 'rotozoom' (20 lines of code).
+ : + CImg_demo.cpp +

+ Smell the old school parfume of the atari/amiga demos. +

+
+ +
+ + + +
+
+ : + An animation featuring triangles that are rotating (50 lines of code).
+ : + CImg_demo.cpp +

+ Could be a replacement to your classical screen saver. +

+
+ +
+ + + +
+
+ : + A demo of image filtering in the Fourier Domain (30 lines of code).
+ : + CImg_demo.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + An example of real-time 3D rendering.
+ : + CImg_demo.cpp +

+ No use of OpenGL or VTK in this example, only pure software functions are used ! +

+ + Click here to see the video + +
+ +
+ + + +
+
+ : + An example of the ellipse drawing function, used to bounce an elastic bubble (25 lines of code).
+ : + CImg_demo.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + A real-time 3D virtual landscape (40 lines of code).
+ : + CImg_demo.cpp +

+ The altitude map is based on a 'fractal plasma' generator. +

+ + Click here to see the video + +
+ +
+ + + +
+
+ : + A nice plasma effect with a sinus scroller (70 lines of code).
+ : + CImg_demo.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + An implementation of the well known Tetris game (130 lines of code).
+ : + tetris.cpp +

+ Very small code for a complete version of the Tetris game. +

+ + Click here to see the video + +
+ +
+ + + +
+
+ : + The implementation of the Tschumperlé-Deriche algorithm for image restoration and inpainting (170 lines of code).
+ : + pde_TschumperleDeriche2d.cpp +

+ See the corresponding publication + for more detail on the algorithm. +

+
+ +
+ + + +
+
+ : + A very smart and classical demo effect called 'Shade bobs' (60 lines of code).
+ : + CImg_demo.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + A nice Blob Editor in only few lines (90 lines of code).
+ : + CImg_demo.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + 3d Metaballs animation (23 lines of code).
+ : + CImg_demo.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + A tool to visualize images as surfaces in 3d (100 lines of code).
+ : + image_surface.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + A 3d viewer for Diffusion tensor imaging datasets (526 lines of code).
+ : + dtmri_view.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + Applying the wave equation on an 3d image-mapped surface (55 lines of code).
+ : + CImg_demo.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + A simple 2d curve editor using spline interpolation (300 lines of code).
+ : + curve_editor.cpp +
+ +
+ + + +
+
+ : + A complete and funny game featuring colored balls (121 lines of code).
+ : + jawbreaker.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + A cool 3d reflection effect, using some 3d object rendering tricks (130 lines of code).
+ : + CImg_demo.cpp +
+ + Click here to see the video + +
+ +
+ + + +
+
+ : + A simple word puzzle game (100 lines of code).
+ : + CImg_demo.cpp +
+ +
+ + + diff --git a/html/style.css b/html/style.css new file mode 100644 index 000000000..0d43daf3a --- /dev/null +++ b/html/style.css @@ -0,0 +1,728 @@ +/*--------------------------------------*/ +/* Define style for the G'MIC website */ +/*--------------------------------------*/ + +/* Global look. */ + +body { + width: 1024px; + color: #222222; + background-color: #707090; + font-family: 'Open Sans', sans-serif; + margin-left: auto; + margin-right: auto; +} + +a { + text-decoration: none; + font-weight: bold; + color: black; +} + +code, pre { + background-color: #dddddd; + padding: 5px; +} + +a:hover { + color: #707090; +} + +hr { + height: 1px; + border: 0; + color: black; + background-color: black; +} + +/* G'MIC markdown. */ + +.gmd_bold { + font-weight: bold; +} + +.gmd_braces { + color: royalblue; + font-weight: bold; +} + +.gmd_code { + background-color: gainsboro; + color: darkslategrey; + font-family: monospace; + font-size: 1.2em; + padding: 1em; + margin: 0.5em; + border: 1px solid dimgray; + width: 80%; +} + +.gmd_cimg::before { + content: "CImg"; + color: #000099; + font-weight: bold; +} + +.gmd_italic { + font-style: italic; + color: green; +} + +.gmd_image { + display: block; + min-width: 20%; + max-width: 100%; + margin-left: auto; + margin-right: auto; + margin-bottom: 1em; + margin-top: 1em; + border: 1px solid black; +} + +.gmd_link { + color: navy; + background-color: #f0e4ff; + font-family: monospace; + font-size: 1.15em; + font-weight: bold; + padding-left: 0.25em; + padding-right: 0.25em; +} + +.gmd_link:hover { + color: black; + background-color: #c0d4ef; + border: 1px solid black; +} + +.gmd_list1 { + margin-left: 0; + margin-bottom: 0.8em; +} + +.gmd_list2 { + margin-left: 3em; + margin-bottom: 0.4em; +} + +.gmd_list3 { + margin-left: 6em; + margin-bottom: 0.2em; +} + +.gmd_list1::before { + content: "• "; +} + +.gmd_list2::before { + content: "○ "; +} + +.gmd_list3::before { + content: "▪ "; +} + +.gmd_mono { + background-color: #f0e4ff; + color: navy; + font-family: monospace; + font-size: 1.15em; + padding-left: 0.25em; + padding-right: 0.25em; +} + +.gmd_monobold { + color: orangered; + font-family: monospace; + font-weight: bold; +} + +.gmd_section1 { + font-size: 1.75em; + font-weight: bold; + margin-top: 1em; + margin-bottom: 1em; +} + +.gmd_section2 { + font-size: 1.5em; + font-weight: bold; + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.gmd_section3 { + font-size: 1.25em; + font-weight: bold; + margin-top: 0.25em; + margin-bottom: 0.25em; +} + +/* Classes used by the 'Reference Documentation' pages */ + +.ref_h1 { + color: #7080A0; +} + +.ref_h1_builtin { + width: 100%; +} + +.ref_h1_builtin tr td:nth-child(1) { + text-align: left; + padding: 0; +} + +.ref_h1_builtin tr td:nth-child(2) { + text-align: right; + padding: 0; +} + +.ref_navigation_top { + font-size: smaller; + width: 100%; + padding-bottom: 0.5em; + border-bottom: 1px solid black; +} + +.ref_navigation_top tr td:nth-child(1) { + text-align: left; + padding: 0; +} + +.ref_navigation_top tr td:nth-child(2) { + text-align: right; + padding: 0; +} + +.ref_navigation_bottom { + text-align: center; + display: block; + font-size: smaller; + margin-left: auto; + margin-right: auto; + margin-top: 1em; + padding-top: 0.5em; + border-top: 1px solid black; +} + +.ref_header { + margin-left: 2em; +} + +.ref_table_category, .ref_table_shortcuts { + border-collapse: collapse; + margin-left: auto; + margin-right: auto; +} + +.ref_table_category tr td { + text-align: center; + border: 1px solid black; + padding: 3px; + word-wrap: break-word; + max-width: 150px; + min-width: 150px; +} + +.ref_table_category a:hover { + font-weight: bold; +} + +.ref_table_shortcuts a:hover { + font-weight: bold; +} + +.ref_table_category tr:nth-child(even) { + background-color: #dddddd; +} + +.ref_table_shortcuts tr:nth-child(odd) { + background-color: #dddddd; +} + +.ref_table_shortcuts tr td { + text-align: center; + border: 1px solid black; + padding: 3px; + word-wrap: break-word; + max-width: 250px; + min-width: 250px; +} + +.ref_table_category a, .ref_table_shortcuts a { + font-weight: normal; +} + +.ref_loc { + color: orangered; + font-weight: bold; +} + +.ref_table_shortcuts .gmd_monobold:hover, .ref_table_category .gmd_monobold:hover { + background-color: papayawhip; + border: 1px solid black; + padding: 0.25em; +} + +.ref_builtin_command { + color: orangered; + font-weight: bold; + padding-left: 0.5em; + padding-right: 0.5em; + border: 1px solid; +} + +.ref_tutorial_button { + text-align: left; + padding-top: 15px; + padding-bottom: 5px; +} + +.ref_tutorial_button a { + background-color: royalblue; + color: white; + border: 1px solid black; + padding: 3px; +} + +.ref_tutorial_button a:hover { + background-color: #6b958d; +} + +/* Classes used by the 'Color Presets' pages */ + +.colorpresets_disclaimer { + font-style: italic; + font-size: smaller; +} + +.colorpresets_table { + margin-left: auto; + margin-right: auto; +} + +.colorpresets_table tr td { + text-align: center; +} + +/* Classes used by the 'Image Gallery' pages */ + +.gallery_navigation { + text-align: center; + margin-left: auto; + margin-right: auto; + border-spacing : 0; + border-collapse : collapse; + font-size: smaller; +} + +.gallery_navigation tr td { + border: 1px solid black; + padding: 5px; +} + +.gallery_navigation tr td:hover { + background-color: #aaaacc; +} + +.gallery_navigation tr td a:hover { + color: white; +} + +.gallery_table { + margin-left: auto; + margin-right: auto; +} + +.gallery_table tr td { + text-align: center; +} + +.gallery_caption { + text-align: center; + font-style: italic; + font-size: smaller; + margin: 0; +} + +/* Other convenient classes */ +.smaller { + font-size: smaller; +} + +.hr_small { + width: 80%; + height: 1px; + border: 0; + color: #aaaaaa; + background-color: #aaaaaa; +} + +.p_more { + text-align: right; + font-style: italic; + font-size: smaller; + margin: 0; +} + +.p_donate { + font-size: smaller; + margin-left: 30px; +} + +.center { + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.center_image { + display: block; + margin-left: auto; + margin-right: auto; +} + +.header { + width: 1000px; + background-color: white; + margin-left: auto; + margin-right: auto; + position: relative; + padding-top: 15px; +} + +.header h1 { + color: #aaaaaa; + text-align: center; + font-weight: normal; + font-size: 115%; + margin-top: 0; +} + +.header h2 { + font-size: smaller; + color:#888888; + text-align: center; + font-weight: normal; + margin-top: 5px; + margin-bottom: 0; +} + +.header hr { + color:#888888; + background-color: #888888; + margin-top: 0px; + margin-bottom: 0px; +} + +.header_instit { + position: absolute; + top: 110px; + right: 32px; +} + +.section_title { + width: 1000px; + min-height: 50px; + margin-left: auto; + margin-right: auto; + background-image: url("img/section_top.png"); +} + +.section_title p { + position: relative; + left: 25px; + top: 12px; + color: #708090; + margin: 0; + font-weight: normal; + font-size: 20px; +} + +.section_content { + width: 1000px; + margin-left: auto; + margin-right: auto; + padding-left: 30px; + padding-right: 30px; + padding-top: 10px; + padding-bottom: 10px; + box-sizing: border-box; + background-image: url("img/section_middle.png"); + word-wrap: break-word; +} + +.section_end { + width: 1000px; + height: 10px; + margin-left: auto; + margin-right: auto; + background-image: url("img/section_bottom.png"); +} + +.bloc_start { + width: 1000px; + min-height: 7px; + margin-left: auto; + margin-right: auto; + background-image: url("img/section_bottom_mirrored.png"); +} + +.bloc_content { + width: 1000px; + margin-left: auto; + margin-right: auto; + padding-left: 30px; + padding-right: 30px; + padding-top: 10px; + padding-bottom: 10px; + font-size: 14px; + box-sizing: border-box; + background-image: url("img/section_middle.png"); +} + +.bloc_end { + width: 1000px; + height: 10px; + margin-left: auto; + margin-right: auto; + background-image: url("img/section_bottom.png"); +} + +.table_left tr td { + vertical-align: top; + padding-right: 20px; +} + +.table_content { + margin-top: -10px; + margin-bottom: -10px; + margin-left: auto; + margin-right: auto; +} + +.table_content tr td { + padding-right: 15px; + vertical-align: middle; +} + +.table_download { + margin-top: -10px; + margin-bottom: -10px; + margin-left: auto; + margin-right: auto; +} + +.table_download h1 { + font-size: 115%; + margin-top: 0; +} + +.table_download tr td { + padding-right: 15px; + vertical-align: top; +} + +.table_download li { + padding: 0.2em; + line-height: 1.5em; +} + +.table_download tr td pre a { + background-color: unset; + color: unset; + border: unset; +} + +.arch { + font-weight: bold; + color: #446aa3; +} + +.donation_link, .table_download li a { + background-color: #8bb5ad; + border: 1px solid black; + color: white; + padding-left: 5px; + padding-right: 5px; + padding-top: 0px; + padding-bottom: 0px; + margin: 2px; +} + +.donation_link:hover, .table_download li a:hover { + color: black; +} + +/* Define style for button animations */ +.button68px { + height: 68px; +} + +#gallery_id, #download_id, #supportus_id { + width: 200px; + height: 68x; + text-align: center; +} + +#gallery_id img, #download_id img, #supportus_id img { + width: 98%; +} + +#gallery_id.down img, #download_id.down img, #supportus_id.down img { + width: 90%; +} + +#gallery_id.over img, #download_id.over img, #supportus_id.over img { + width: 100%; +} + +#tenyears_id, #elevenyears_id { + width: 104px; + height: 100px; + text-align: center; +} + +#tenyears_id img, #elevenyears_id img { + width: 30%; +} + +#tenyears_id.down img, #elevenyears_id.down img { + width: 25%; +} + +#tenyears_id.over img, #elevenyears_id.over img { + width: 35%; +} + +/* Main navigation bar */ + +#cssmenu { + text-align: center; + background-color: #dddddd; +} + +#cssmenu > ul, +#cssmenu > ul li, +#cssmenu > ul ul { + list-style: none; + margin: 0; + padding: 0; +} +#cssmenu > ul { + position: relative; + z-index: 597; +} +#cssmenu > ul li { + float: left; + min-height: 1px; + vertical-align: middle; +} +#cssmenu > ul li.hover, +#cssmenu > ul li:hover { + position: relative; + z-index: 599; + cursor: default; +} +#cssmenu > ul ul { + visibility: hidden; + position: absolute; + top: 100%; + left: 0; + z-index: 598; + width: 100%; +} +#cssmenu > ul ul li { + float: none; +} +#cssmenu > ul ul ul { + top: 1px; + left: 99%; +} +#cssmenu > ul li:hover > ul { + visibility: visible; +} +/* Align last drop down RTL */ +#cssmenu > ul > li.last ul ul { + left: auto !important; + right: 99%; +} +#cssmenu > ul > li.last ul { + left: auto; + right: 0; +} +#cssmenu > ul > li.last { + text-align: right; +} +/* Theme Styles */ +#cssmenu > ul { + font-family: Calibri, Tahoma, Arial, sans-serif; + font-size: 14px; + background: #dddddd; + width: auto; + zoom: 1; + display: inline-block; +} +#cssmenu > ul:before { + content: ''; + display: block; +} +#cssmenu > ul:after { + content: ''; + display: table; + clear: both; +} +#cssmenu > ul li a { + display: inline-block; + padding: 4px 12px; +} + +#cssmenu ul li a img { + vertical-align: -20%; +} + +#cssmenu > ul > li.active, +#cssmenu > ul > li.active:hover { + background-color: #a0a0c0; +} +#cssmenu > ul > li > a:link, +#cssmenu > ul > li > a:active, +#cssmenu > ul > li > a:visited { + color: black; +} +#cssmenu > ul > li > a:hover { + color: black; +} +#cssmenu > ul ul ul { + top: 0; +} +#cssmenu > ul li li { + background-color: #ffffff; + border-bottom: 1px solid #ebebeb; + font-size: 12px; + text-align: left; +} +#cssmenu > ul li.hover, +#cssmenu > ul li:hover { + background-color: #f5f5f5; +} +#cssmenu > ul > li.hover, +#cssmenu > ul > li:hover { + background-color: #a0a0c0; +} +#cssmenu > ul a:link, +#cssmenu > ul a:visited { + color: #9a9a9a; + text-decoration: none; +} +#cssmenu > ul a:hover { + color: #9a9a9a; +} +#cssmenu > ul a:active { + color: #9a9a9a; +} +#cssmenu > ul ul { + border: 1px solid #CCC \9; + width: 250px; +} diff --git a/plugins/add_fileformat.h b/plugins/add_fileformat.h new file mode 100644 index 000000000..fe636501a --- /dev/null +++ b/plugins/add_fileformat.h @@ -0,0 +1,79 @@ +/* + # + # File : add_fileformat.h + # ( C++ header file - CImg plug-in ) + # + # Description : CImg plug-in that adds loading/saving support for a personalized + # file format (determined by its extension, here ".foo"). + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_plugin_addfileformat +#define cimg_plugin_addfileformat + +// These functions load ".foo" filenames +//--------------------------------------- +static CImg get_load_foo(const char *filename) { + std::fprintf(stderr,"Load '%s' here..\n",filename); + return CImg(512,512,1,3,0).noise(30); +} + +CImg& load_foo(const char *filename) { + return get_load_foo(filename).swap(*this); +} + +// This function saves the instance image into a ".foo" file. +//----------------------------------------------------------- +const CImg& save_foo(const char *filename) const { + std::fprintf(stderr,"Save '%s' here..\n",filename); + return *this; +} + +// The code below allows to add the support for the specified extension. +//--------------------------------------------------------------------- +#ifndef cimg_load_plugin +#define cimg_load_plugin(filename) \ + if (!cimg::strncasecmp(cimg::split_filename(filename),"foo",3)) return load_foo(filename); +#endif +#ifndef cimg_save_plugin +#define cimg_save_plugin(filename) \ + if (!cimg::strncasecmp(cimg::split_filename(filename),"foo",3)) return save_foo(filename); +#endif + +// End of the plugin. +//------------------- +#endif /* cimg_plugin_addfileformat */ diff --git a/plugins/bayer.h b/plugins/bayer.h new file mode 100644 index 000000000..b848e560f --- /dev/null +++ b/plugins/bayer.h @@ -0,0 +1,212 @@ +/* + # + # File : bayer.h + # ( C++ header file - CImg plug-in ) + # + # Description : CImg plugin that implements the conversion of a color image to a + # Bayer-coded matrix, and its reverse transform. + # + # Copyright : David Tschumperlé + # ( https://tschumperle.users.greyc.fr/ ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ +#ifndef cimg_plugin_bayer +#define cimg_plugin_bayer + +//! Convert RGB color image to a Bayer-coded scalar image. +/** + \note First (upper-left) pixel if the red component of the pixel color. +**/ +CImg& RGBtoBayer() { + return get_RGBtoBayer().move_to(*this); +} + +//! Convert RGB color image to a Bayer-coded scalar image \newinstance. +CImg get_RGBtoBayer() const { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoBayer(): Instance is not a RGB image.", + cimg_instance); + + CImg res(_width,_height,_depth,1); + const T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2); + T *ptrd = res._data; + cimg_forXYZ(*this,x,y,z) { + if (y%2) { + if (x%2) *(ptrd++) = *ptr_b; + else *(ptrd++) = *ptr_g; + } else { + if (x%2) *(ptrd++) = *ptr_g; + else *(ptrd++) = *ptr_r; + } + ++ptr_r; ++ptr_g; ++ptr_b; + } + return res; +} + +//! Convert Bayer-coded scalar image to a RGB color image. +CImg& BayertoRGB(const unsigned int interpolation_type=3) { + return get_BayertoRGB(interpolation_type).move_to(*this); +} + +//! Convert Bayer-coded scalar image to a RGB color image \newinstance. +CImg get_BayertoRGB(const unsigned int interpolation_type=3) const { + if (_spectrum!=1) + throw CImgInstanceException(_cimg_instance + "BayertoRGB(): Instance is not a Bayer image.", + cimg_instance); + + CImg res(_width,_height,_depth,3); + CImg_3x3(I,T); + Tuchar *ptr_r = res.data(0,0,0,0), *ptr_g = res.data(0,0,0,1), *ptr_b = res.data(0,0,0,2); + switch (interpolation_type) { + case 3 : { // Edge-directed + CImg_3x3(R,T); + CImg_3x3(G,T); + CImg_3x3(B,T); + cimg_forXYZ(*this,x,y,z) { + const int _p1x = x?x - 1:1, _p1y = y?y - 1:1, _n1x = x get_patch(int x, int y, int z, + int px, int py, int pz) const { + if (depth() == 1){ + const int x0 = x - px, y0 = y - py, x1 = x + px, y1 = y + py; + return get_crop(x0, y0, x1, y1).unroll('y'); + } else { + const int + x0 = x - px, y0 = y - py, z0 = z - pz, + x1 = x + px, y1 = y + py, z1 = z + pz; + return get_crop(x0, y0, z0, x1, y1, z1).unroll('y'); + } +} + +//! Extract a local patch dictionnary around point xi,yi,zi +CImg get_patch_dictionnary(const int xi, const int yi, const int zi, + const int px, const int py, const int pz, + const int wx, const int wy, const int wz, + int & idc) const { + const int + n = (2*wx + 1) * (2*wy + 1) * (2 * (depth()==1?0:wz) + 1), + d = (2*px + 1) * (2*py + 1) * (2 * (depth()==1?0:px) + 1) * spectrum(); + CImg<> S(n, d); + int idx = 0; + if (depth() == 1) { + cimg_forXY_window((*this), xi, yi, xj, yj, wx, wy){ + CImg patch = get_patch(xj, yj, 0, px, py, 1); + cimg_forY(S,y) S(idx,y) = patch(y); + if (xj==xi && yj==yi) idc = idx; + idx++; + } + } else { + cimg_forXYZ_window((*this), xi,yi,zi,xj,yj,zj,wx,wy,wz){ + CImg patch = get_patch(xj, yj, zj, px, py, pz); + cimg_forY(S,y) S(idx,y) = patch(y); + if (xj==xi && yj==yi && zj==zi) idc = idx; + idx++; + } + } + S.columns(0, idx - 1); + return S; +} + +//! Add a patch to the image +/** + \param x x-coordinate of the center of the patch + \param y y-coordinate of the center of the patch + \param z z-coordinate of the center of the patch + \param img the patch as a 1D column vector + \param px the patch half width + \param px the patch half height + \param px the patch half depth +**/ +CImg & add_patch(const int xi, const int yi, const int zi, + const CImg & patch, + const int px, const int py, const int pz) { + const int + x0 = xi - px, y0 = yi - py, z0 = (depth() == 1 ? 0 : zi - pz), + sx = 2 * px + 1, sy = 2 * py + 1, sz = (depth() == 1 ? 1 : 2 * pz +1); + draw_image(x0, y0, z0, 0, patch.get_resize(sx, sy, sz, spectrum(), -1), -1); + return (*this); +} + +//! Add a constant patch to the image +/** + \param x x-coordinate of the center of the patch + \param y y-coordinate of the center of the patch + \param z z-coordinate of the center of the patch + \param value in the patch + \param px the patch half width + \param px the patch half height + \param px the patch half depth +**/ +CImg & add_patch(const int xi, const int yi, const int zi, const T value, + const int px, const int py, const int pz) { + const int + x0 = xi - px, y0 = yi - py, z0 = (depth() == 1 ? 0 : zi - pz), + x1 = xi + px, y1 = yi + py, z1 = (depth() == 1 ? 0 : zi + pz); + draw_rectangle(x0, y0, z0, 0, x1, y1, z1, spectrum()-1, value, -1); +return (*this); +} + +//! CHLPCA denoising from the PhD thesis of Hu Haijuan +/** + \param px the patch half width + \param py the patch half height + \param pz the patch half depth + \param wx the training region half width + \param wy the training region half height + \param wz the training region half depth + \param nstep the subsampling of the image domain + \param nsim the number of patches used for training as a factor of the patch size + \param lambda_min the threshold on the eigen values of the PCA for dimension reduction + \param threshold the threshold on the value of the coefficients + \param pca_use_svd if true use the svd approach to perform the pca otherwise use the covariance method + \note please cite the PhD thesis of Hu Haijuan http://www.univ-ubs.fr/soutenance-de-these-hu-haijuan-337653.kjsp?RH=1318498222799 + **/ +CImg get_chlpca(const int px, const int py, const int pz, + const int wx, const int wy, const int wz, + const int nstep, const float nsim, + const float lambda_min, const float threshold, + const float noise_std, const bool pca_use_svd) const { + const int + nd = (2*px + 1) * (2*py + 1) * (depth()==1?1:2*pz + 1) * spectrum(), + K = (int)(nsim * nd); +#ifdef DEBUG + fprintf(stderr,"chlpca: p:%dx%dx%d,w:%dx%dx%d,nd:%d,K:%d\n", + 2*px + 1,2*py + 1,2*pz + 1,2*wx + 1,2*wy + 1,2*wz + 1,nd,K); +#endif + float sigma; + if (noise_std<0) sigma = (float)std::sqrt(variance_noise()); + else sigma = noise_std; + CImg dest(*this), count(*this); + dest.fill(0); + count.fill(0); + cimg_for_stepZ(*this,zi,(depth()==1||pz==0)?1:nstep){ +#ifdef cimg_use_openmp + + cimg_pragma_openmp(parallel for) +#endif + cimg_for_stepXY((*this),xi,yi,nstep){ + // extract the training region X + int idc = 0; + CImg S = get_patch_dictionnary(xi,yi,zi,px,py,pz,wx,wy,wz,idc); + // select the K most similar patches within the training set + CImg Sk(S); + CImg a_index(S.width()); + if (K < Sk.width() - 1){ + CImg mse(S.width()); + CImg perms; + cimg_forX(S,x) { mse(x) = (T)S.get_column(idc).MSE(S.get_column(x)); } + mse.sort(perms,true); + cimg_foroff(perms,i) { + cimg_forY(S,j) Sk(i,j) = S(perms(i),j); + a_index(perms(i)) = i; + } + Sk.columns(0, K); + perms.threshold(K); + } else { + cimg_foroff(a_index,i) a_index(i)=i; + } + // centering the patches + CImg M(1, Sk.height(), 1, 1, 0); + cimg_forXY(Sk,x,y) { M(y) += Sk(x,y); } + M /= (T)Sk.width(); + cimg_forXY(Sk,x,y) { Sk(x,y) -= M(y); } + // compute the principal component of the training set S + CImg P, lambda; + if (pca_use_svd) { + CImg V; + Sk.get_transpose().SVD(V,lambda,P,true,100); + } else { + (Sk * Sk.get_transpose()).symmetric_eigen(lambda, P); + lambda.sqrt(); + } + // dimension reduction + int s = 0; + const T tx = (T)(std::sqrt((double)Sk.width()-1.0) * lambda_min * sigma); + while((lambda(s) > tx) && (s < ((int)lambda.size() - 1))) { s++; } + P.columns(0,s); + // project all the patches on the basis (compute scalar product) + Sk = P.get_transpose() * Sk; + // threshold the coefficients + if (threshold > 0) { Sk.threshold(threshold, 1); } + // project back to pixel space + Sk = P * Sk; + // recenter the patches + cimg_forXY(Sk,x,y) { Sk(x,y) += M(y); } + int j = 0; + cimg_forXYZ_window((*this),xi,yi,zi,xj,yj,zj,wx,wy,wz){ + const int id = a_index(j); + if (id < Sk.width()) { + dest.add_patch(xj, yj, zj, Sk.get_column(id), px, py, pz); + count.add_patch(xj, yj, zj, (T)1, px, py, pz); + } + j++; + } + } + } + cimg_foroff(dest, i) { + if(count(i) != 0) { dest(i) /= count(i); } + else { dest(i) = (*this)(i); } + } + return dest; +} + +//! CHLPCA denoising from the PhD thesis of Hu Haijuan +/** + \param px the patch half width + \param px the patch half height + \param px the patch half depth + \param wx the training region half width + \param wy the training region half height + \param wz the training region half depth + \param nstep the subsampling of the image domain + \param nsim the number of patches used for training as a factor of the patch size + \param lambda_min the threshold on the eigen values of the PCA for dimension reduction + \param threshold the threshold on the value of the coefficients + \param pca_use_svd if true use the svd approach to perform the pca otherwise use the covariance method + \note please cite the PhD thesis of Hu Haijuan http://www.univ-ubs.fr/soutenance-de-these-hu-haijuan-337653.kjsp?RH=1318498222799 + **/ +CImg & chlpca(const int px, const int py, const int pz, + const int wx, const int wy, const int wz, + const int nstep, const float nsim, + const float lambda_min, const float threshold, + const float noise_std, const bool pca_use_svd) { + (*this) = get_chlpca(px, py, pz, wx, wy, wz, nstep, nsim, lambda_min, + threshold, noise_std, pca_use_svd); + return (*this); +} + +//! CHLPCA denoising from the PhD thesis of Hu Haijuan +/** + \param p the patch half size + \param w the training region half size + \param nstep the subsampling of the image domain + \param nsim the number of patches used for training as a factor of the patch size + \param lambda_min the threshold on the eigen values of the PCA for dimension reduction + \param threshold the threshold on the value of the coefficients + \param pca_use_svd if true use the svd approach to perform the pca otherwise use the covariance method + \note please cite the PhD thesis of Hu Haijuan http://www.univ-ubs.fr/soutenance-de-these-hu-haijuan-337653.kjsp?RH=1318498222799 + **/ +CImg get_chlpca(const int p=3, const int w=10, + const int nstep=5, const float nsim=10, + const float lambda_min=2, const float threshold = -1, + const float noise_std=-1, const bool pca_use_svd=true) const { + if (depth()==1) return get_chlpca(p, p, 0, w, w, 0, nstep, nsim, lambda_min, + threshold, noise_std, pca_use_svd); + else return get_chlpca(p, p, p, w, w, w, nstep, nsim, lambda_min, + threshold, noise_std, pca_use_svd); +} + +CImg chlpca(const int p=3, const int w=10, + const int nstep=5, const float nsim=10, + const float lambda_min=2, const float threshold = -1, + const float noise_std=-1, const bool pca_use_svd=true) { + (*this) = get_chlpca(p, w, nstep, nsim, lambda_min, + threshold, noise_std, pca_use_svd); + return (*this); +} + +#endif /* cimg_plugin_chlpca */ diff --git a/plugins/cvMat.h b/plugins/cvMat.h new file mode 100644 index 000000000..aba70cfc1 --- /dev/null +++ b/plugins/cvMat.h @@ -0,0 +1,350 @@ +/* +# +# File : cvMat.h +# ( C++ header file - CImg plug-in ) +# +# Description : CImg plug-in providing the CImg->cvMat and cvMat->CImg +# conversions for generic image types +# ( IPL = Intel Performance Library ) +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : Alberto Albiol +# alalbiol@iteam.upv.es +# +# How to use : In the main program include: +# OPENCV 2.4.x +# #include "cv.h" +# #include "highgui.h" +# #define cimg_plugin1 "cvMat.h" +# #include "CImg.h" +# +# OPENCV 3.x.x +# #include +# #define cimg_plugin1 "cvMat.h" +# #include "CImg.h" + +*/ +#ifndef cimg_plugin_cvMat +#define cimg_plugin_cvMat + +// Conversion IPL -> CImg (constructor) +CImg(const cv::Mat& src):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(src); +} + +// Conversion IPL -> CImg (in-place constructor) +CImg& assign(const cv::Mat & src) { + if (src.isContinuous()) { + switch (src.depth()) { + // case CV_1U: { // 1-bit int + // IplImage *src1 = cvCreateImage(cvGetSize(src),CV_8U,1); + // cvConvert(src,src1); + // CImg((unsigned char*)src1->imageData,src1->nChannels,src1.cols,src1.rows,1,true). + // get_permute_axes("yzcx").move_to(*this); + // cvReleaseImage(&src1); + // } break; + case CV_8U: // 8-bit unsigned int + if (src.channels()==1) { + CImg((unsigned char*)src.ptr(),src.cols,src.rows,true).move_to(*this); + } else { + std::vector channels; + cv::split(src,channels); + CImg + tmp(src.cols,src.rows,1,3), + R = tmp.get_shared_channel(2), + G = tmp.get_shared_channel(1), + B = tmp.get_shared_channel(0); + std::memcpy(R.data(),channels[0].ptr(),src.cols*src.rows*sizeof(uchar)); + std::memcpy(G.data(),channels[1].ptr(),src.cols*src.rows*sizeof(uchar)); + std::memcpy(B.data(),channels[2].ptr(),src.cols*src.rows*sizeof(uchar)); + tmp.move_to(*this); + } + break; + case CV_8S: // 8-bit signed int + if (src.channels()==1) { + CImg((char*)src.ptr(),src.cols,src.rows,true).move_to(*this); + } else { + std::vector channels; + cv::split(src,channels); + CImg + tmp(src.cols,src.rows,1,3), + R = tmp.get_shared_channel(2), + G = tmp.get_shared_channel(1), + B = tmp.get_shared_channel(0); + std::memcpy(R.data(),channels[0].ptr(),src.cols*src.rows*sizeof(char)); + std::memcpy(G.data(),channels[1].ptr(),src.cols*src.rows*sizeof(char)); + std::memcpy(B.data(),channels[2].ptr(),src.cols*src.rows*sizeof(char)); + tmp.move_to(*this); + } + break; + case CV_16U: // 16-bit unsigned int + if (src.channels()==1) { + CImg((unsigned short*)src.ptr(),src.cols,src.rows,true).move_to(*this); + } else { + std::vector channels; + cv::split(src,channels); + CImg + tmp(src.cols,src.rows,1,3), + R = tmp.get_shared_channel(2), + G = tmp.get_shared_channel(1), + B = tmp.get_shared_channel(0); + std::memcpy(R.data(),channels[0].ptr(),src.cols*src.rows*sizeof(unsigned short)); + std::memcpy(G.data(),channels[1].ptr(),src.cols*src.rows*sizeof(unsigned short)); + std::memcpy(B.data(),channels[2].ptr(),src.cols*src.rows*sizeof(unsigned short)); + tmp.move_to(*this); + } + break; + case CV_16S: // 16-bit signed int + if (src.channels()==1) { + CImg((short*)src.ptr(),src.cols,src.rows,true).move_to(*this); + } else { + std::vector channels; + cv::split(src,channels); + CImg + tmp(src.cols,src.rows,1,3), + R = tmp.get_shared_channel(2), + G = tmp.get_shared_channel(1), + B = tmp.get_shared_channel(0); + std::memcpy(R.data(),channels[0].ptr(),src.cols*src.rows*sizeof(short)); + std::memcpy(G.data(),channels[1].ptr(),src.cols*src.rows*sizeof(short)); + std::memcpy(B.data(),channels[2].ptr(),src.cols*src.rows*sizeof(short)); + tmp.move_to(*this); + } + break; + case CV_32S: // 32-bit signed int + if (src.channels()==1) { + CImg((int*)src.ptr(),src.cols,src.rows,true).move_to(*this); + } else { + std::vector channels; + cv::split(src,channels); + CImg + tmp(src.cols,src.rows,1,3), + R = tmp.get_shared_channel(2), + G = tmp.get_shared_channel(1), + B = tmp.get_shared_channel(0); + std::memcpy(R.data(),channels[0].ptr(),src.cols*src.rows*sizeof(int)); + std::memcpy(G.data(),channels[1].ptr(),src.cols*src.rows*sizeof(int)); + std::memcpy(B.data(),channels[2].ptr(),src.cols*src.rows*sizeof(int)); + tmp.move_to(*this); + } + break; + case CV_32F: // 32-bit float + if (src.channels()==1) { + CImg((float*)src.ptr(),src.cols,src.rows,true).move_to(*this); + } else { + std::vector channels; + cv::split(src,channels); + CImg + tmp(src.cols,src.rows,1,3), + R = tmp.get_shared_channel(2), + G = tmp.get_shared_channel(1), + B = tmp.get_shared_channel(0); + std::memcpy(R.data(),channels[0].ptr(),src.cols*src.rows*sizeof(float)); + std::memcpy(G.data(),channels[1].ptr(),src.cols*src.rows*sizeof(float)); + std::memcpy(B.data(),channels[2].ptr(),src.cols*src.rows*sizeof(float)); + tmp.move_to(*this); + } + break; + case CV_64F: // 64-bit double + if (src.channels()==1) { + CImg((double*)src.ptr(),src.cols,src.rows,true).move_to(*this); + } else { + std::vector channels; + cv::split(src,channels); + CImg + tmp(src.cols,src.rows,1,3), + R = tmp.get_shared_channel(2), + G = tmp.get_shared_channel(1), + B = tmp.get_shared_channel(0); + std::memcpy(R.data(),channels[0].ptr(),src.cols*src.rows*sizeof(double)); + std::memcpy(G.data(),channels[1].ptr(),src.cols*src.rows*sizeof(double)); + std::memcpy(B.data(),channels[2].ptr(),src.cols*src.rows*sizeof(double)); + tmp.move_to(*this); + } + break; + default: + throw CImgInstanceException(_cimg_instance + "assign(const cv::Mat&) : Mat depth is invalid.", + cimg_instance); + break; + } + } else { + cv::Size size = src.size(); + switch (src.depth()) { + case CV_8U: // 8-bit unsigned int + if (src.channels()==1) { + CImg tmp(src.cols,src.rows); + for (int i = 0; i(i); + unsigned char *row_o = tmp.data(0,i); + std::memcpy(row_o,row_i,size.width*sizeof(unsigned char)); + } + tmp.move_to(*this); + } else { + CImg tmp(src.cols,src.rows,1,src.channels()); + std::vector channels; + cv::split(src,channels); + for (int c = 0; c plane = tmp.get_shared_channel(src.channels() - 1 - c); + for (int i = 0; i(i); + unsigned char *row_o = plane.data(0,i); + std::memcpy(row_o,row_i,size.width*sizeof(unsigned char)); + } + } + tmp.move_to(*this); + } + break; + case CV_8S: // 8-bit int + if (src.channels()==1) { + CImg tmp(src.cols,src.rows); + for (int i = 0; i(i); + char* row_o = tmp.data(0,i); + std::memcpy(row_o,row_i,size.width*sizeof(charT)); + } + tmp.move_to(*this); + } else { + CImg tmp(src.cols,src.rows,1,src.channels()); + std::vector channels; + cv::split(src,channels); + for (int c = 0; c plane = tmp.get_shared_channel(src.channels() - 1 - c); + for (int i = 0; i(i); + char *row_o = plane.data(0,i); + std::memcpy(row_o,row_i,size.width*sizeof(char)); + } + } + tmp.move_to(*this); + } + break; + case CV_16S: // 16-bit int + if (src.channels()==1) { + CImg tmp(src.cols,src.rows); + for (int i = 0; i(i); + short *row_o = tmp.data(0,i); + std::memcpy(row_o,row_i,size.width*sizeof(short)); + } + tmp.move_to(*this); + } else { + CImg tmp(src.cols,src.rows,1,src.channels()); + std::vector channels; + cv::split(src,channels); + for (int c = 0; c plane = tmp.get_shared_channel(src.channels() - 1 - c); + for (int i = 0; i(i); + short *row_o = plane.data(0,i); + std::memcpy(row_o,row_i,size.width*sizeof(short)); + } + } + tmp.move_to(*this); + } + break; + case CV_32F: // 32-bit float + if (src.channels()==1) { + CImg tmp(src.cols,src.rows); + for (int i = 0; i(i); + float *row_o = tmp.data(0,i); + std::memcpy(row_o,row_i,size.width*sizeof(float)); + } + tmp.move_to(*this); + } else { + CImg tmp(src.cols,src.rows,1,src.channels()); + std::vector channels; + cv::split(src,channels); + for (int c = 0; c plane = tmp.get_shared_channel(src.channels() - 1 - c); + for (int i = 0; i(i); + float *row_o = plane.data(0,i); + std::memcpy(row_o,row_i,size.width*sizeof(float)); + } + } + tmp.move_to(*this); + } + break; + case CV_64F: // 64-bit double + if (src.channels()==1) { + CImg tmp(src.cols,src.rows); + for (int i = 0; i(i); + double *row_o = tmp.data(0,i); + std::memcpy(row_o,row_i,size.width*sizeof(double)); + } + tmp.move_to(*this); + } else { + CImg tmp(src.cols,src.rows,1,src.channels()); + std::vector channels; + cv::split(src,channels); + for (int c = 0; c plane = tmp.get_shared_channel(src.channels() - 1 - c); + for (int i = 0; i(i); + double *row_o = plane.data(0,i); + std::memcpy(row_o,row_i,size.width*sizeof(double)); + } + } + tmp.move_to(*this); + } + break; + default: + throw CImgInstanceException(_cimg_instance + "assign(const cv::Mat&) : Mat depth is invalid.", + cimg_instance); + break; + } + } + + // if (!std::strcmp(src->channelSeq,"BGR")) mirror('v'); + // else if (!std::strcmp(src->channelSeq,"BGRA")) get_shared_channels(0,2).mirror('v'); + return *this; +} + +// Conversion CImg -> MAT +cv::Mat get_MAT(const unsigned int z=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "get_MAT() : instance image is empty.", + cimg_instance); + if (z>=_depth) + throw CImgInstanceException(_cimg_instance + "get_MAT() : specified slice %u is out of image bounds.", + cimg_instance,z); + const CImg + _slice = _depth>1?get_slice(z):CImg(), + &slice = _depth>1?_slice:*this; + CImg buf(slice,true); + int + cols = buf.width(), + rows = buf.height(), + nchannels = buf.spectrum(), + matType=-1; + + if (!cimg::strcasecmp(buf.pixel_type(),"unsigned char")) matType = CV_8UC1; + if (!cimg::strcasecmp(buf.pixel_type(),"char")) matType = CV_8SC1; + if (!cimg::strcasecmp(buf.pixel_type(),"unsigned short")) matType = CV_16UC1; + if (!cimg::strcasecmp(buf.pixel_type(),"short")) matType = CV_16SC1; + if (!cimg::strcasecmp(buf.pixel_type(),"int")) matType = CV_32SC1; + if (!cimg::strcasecmp(buf.pixel_type(),"float")) matType = CV_32FC1; + if (!cimg::strcasecmp(buf.pixel_type(),"double")) matType = CV_64FC1; + if (matType<0) + throw CImgInstanceException(_cimg_instance + "get_MAT() : pixel type '%s' is not supported.", + cimg_instance,buf.pixel_type()); + cv::Mat out; + std::vector channels(nchannels); + if (nchannels>1) { + for (int c = 0; c(buf.data() + rows*cols*(nchannels - 1 - c))); + } // for channels + cv::merge(channels,out); + } else out = cv::Mat(rows,cols,matType,const_cast(buf.data())).clone(); + return out; +} + +#endif /* cimg_plugin_cvMat */ diff --git a/plugins/draw_gradient.h b/plugins/draw_gradient.h new file mode 100644 index 000000000..68d1e1167 --- /dev/null +++ b/plugins/draw_gradient.h @@ -0,0 +1,269 @@ +/* + # + # File : draw_gradient.h + # ( C++ header file - CImg plug-in ) + # + # Description : Plugin that can be used to draw color gradient on images. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Jerome Boulanger + # ( http://www.ricam.oeaw.ac.at/people/page.cgi?firstn=Jerome;lastn=Boulanger ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_plugin_draw_gradient +#define cimg_plugin_draw_gradient + +// Convert the couple (shape,profile) into a description string +static inline const char *get_gradient_str(const int shape, const int profile) { + static char buf[128]; + switch(shape) { + case 0: std::sprintf(buf,"linear shape and"); break; + case 1: std::sprintf(buf,"spheric shape and"); break; + case 2: std::sprintf(buf,"conic shape and"); break; + case 3: std::sprintf(buf,"square shape and"); break; + case 4: std::sprintf(buf,"rectangle (L1) shape and"); break; + case 5: std::sprintf(buf,"rectangle (Linf) shape and"); break; + case 6: std::sprintf(buf,"Gaussian shape and"); break; + default: std::sprintf(buf,"undefined shape and"); break; + } + switch(profile) { + case 0: std::strcat(buf," linear profile"); break; + case 1: std::strcat(buf," wave profile"); break; + case 2: std::strcat(buf," ring/bar profile"); break; + case 3: std::strcat(buf," exponential"); break; + case 4: std::strcat(buf," vanishing wave profile"); break; + case 5: std::strcat(buf," vanishing ring/bar profile"); break; + case 6: std::strcat(buf," circ diffraction (Airy) profile"); break; + case 7: std::strcat(buf," rect diffraction (sinc2) profile"); break; + default: std::strcat(buf," undefined profile"); break; + } + return buf; +} + +template +void _draw_gradient_profile(T *const ptr, const float opacity, const float r, + const tc *const color0, const tc *const color1, + const int profile) { + const unsigned int id = (color0?1:0) + (color1?2:0); + const tc col0 = color0?*color0:0, col1 = color1?*color1:0; + switch(profile) { + case 0: { // linear + switch(id) { // map the 3 cases + case 3: *ptr = (T)((1 - opacity)**ptr + opacity*(col0*(1.f - r) + col1*r)); break; + case 1: if (r<1) *ptr = (T)((1 - opacity*(1 - r))**ptr + col0*opacity*(1 - r)); break; + case 2: if (r>0) *ptr = (T)((1 - opacity*r)**ptr + col1*opacity*r); break; + default: break; + } break; + } + case 1: { // waves + const float f = (1 - (float)std::cos(4.5f*r*2.f*cimg::PI))/2; + switch(id) { // map the 3 cases + case 3: *ptr = (T)((1 - opacity)**ptr + opacity*(col0*(1.f - f) + col1*f)); break; + case 1: if (f<1) *ptr = (T)((1 - opacity*(1 - f))**ptr + col0*opacity*(1 - f)); break; + case 2: if (f>0) *ptr = (T)((1 - opacity*f)**ptr + col1*opacity*f); break; + default: break; + } break; + } + case 2:{ // ring/bar + const float f = (1 + (float)std::cos(r*2.f*cimg::PI))/2; + switch(id) { // map the 3 cases + case 3: *ptr = (T)((1 - opacity)**ptr + opacity*(col0*(1.f - f) + col1*f)); break; + case 1: if (f<1) *ptr = (T)((1 - opacity*(1 - f))**ptr + col0*opacity*(1 - f)); break; + case 2: if (f>0) *ptr = (T)((1 - opacity*f)**ptr + col1*opacity*f); break; + default: break; + } break; + } + case 3: { // exponential + const float f = 1 - (float)std::exp(-r); + switch(id) { // map the 3 cases + case 3: *ptr = (T)((1 - opacity)**ptr + opacity*(col0*(1.f - f) + col1*f)); break; + case 1: if (f<1) *ptr = (T)((1 - opacity*(1 - f))**ptr + col0*opacity*(1 - f)); break; + case 2: if (f>0) *ptr = (T)((1 - opacity*f)**ptr + col1*opacity*f); break; + default: break; + } break; + } + case 4: { // vanishing wave + const float f = (1 - (float)std::cos(4.5f*r*2.f*cimg::PI))/2, o = r<.9f?(float)std::exp(-.5*r*r*12.f):0; + switch(id) { // map the 3 cases + case 3: if (o>0) *ptr = (T)((1 - o)**ptr + o*(col0*(1.f - f) + col1*f)); break; + case 1: if (f<1) *ptr = (T)((1 - o*(1 - f))**ptr + col0*o*(1 - f)); break; + case 2: if (f>0) *ptr = (T)((1 - o*f)**ptr + col1*o*f); break; + default: break; + } break; + } + case 5: { // vanishing ring/bar + const float f = (1 + (float)std::cos(r*2.f*cimg::PI))/2, o = r<.9?(float)std::exp(-.5*r*r*12.f):0; + switch(id) { // map the 3 cases + case 3: if (o>0) *ptr = (T)((1 - o)**ptr + o*(col0*(1.f - f) + col1*f)); break; + case 1: if (f<1) *ptr = (T)((1 - o*(1 - f))**ptr + col0*o*(1 - f)); break; + case 2: if (f>0) *ptr = (T)((1 - o*f)**ptr + col1*o*f); break; + default: break; + } break; + } + case 6: { // diffraction pattern of a circular aperture (Airy function) +#define myj1(x) (std::sin((x)<3?(x)*2.2/3:(x) - 0.8)*std::exp(-std::pow((x)/5.0,1/3.0))) + const float a = 10*(float)cimg::PI*r, tmp = a<0.2?.5f:((float)myj1(a)/a), f = 1 - 4*tmp*tmp; +#undef myj1 + switch(id) { // map the 3 cases + case 3: *ptr = (T)((1 - opacity)**ptr + opacity*(col0*(1.f - f) + col1*f)); break; + case 1: if (f<1) *ptr = (T)((1 - opacity*(1 - f))**ptr + col0*opacity*(1 - f)); break; + case 2: if (f>0) *ptr = (T)((1 - opacity*f)**ptr + col1*opacity*f); break; + default: break; + } + break; + } + case 7: { // diffraction pattern of a rectangular function (sinc function) + const float a = 10*(float)cimg::PI*r, tmp = a==0?1:(float)std::sin(a)/a, f = 1 - tmp*tmp; + switch(id) { // map the 3 cases + case 3: *ptr = (T)((1 - opacity)**ptr + opacity*(col0*(1.f - f) + col1*f)); break; + case 1: if (f<1) *ptr = (T)((1 - opacity*(1 - f))**ptr + col0*opacity*(1 - f)); break; + case 2: if (f>0) *ptr = (T)((1 - opacity*f)**ptr + col1*opacity*f); break; + default: break; + } break; + } + default: + CImgArgumentException("CImg<%s>::draw_gradient : unknown profile parameter",pixel_type()); break; + } +} + +//! Draw a gradient with various shape and profile +/** + \param x0 X-coordinate of the 1st control point + \param y0 Y-coordinate of the 1st control point + \param x1 X-coordinate of the 2nd control point + \param y1 Y-coordinate of the 2nd control point + \param color0 Array of dimv() values of type \c T, defining the 1st color. + \param color1 Array of dimv() values of type \c T, defining the 2nd color. + \param shape shape of the gradient (0,3) + \param profile select a profile function (0,7) + \param opacity Drawing opacity. + \note + - if one color is NULL then the gradient is done to transparency +**/ +template +CImg& draw_gradient(const int x0, const int y0, const int x1, const int y1, + const tc *const color0, const tc *const color1, + const int shape=0, const int profile=0, const float opacity=1.0f){ + if (is_empty()) return *this; + if (!color0 && !color1) + throw CImgArgumentException("CImg<%s>::draw_gradient : The two specified colors are (null).", + pixel_type()); + if (profile<0 || profile>7) { // catch this case before entering in the for loop + CImgArgumentException("CImg<%s>::draw_gradient : unknown profile parameter",pixel_type()); + return *this; + } + const float abx = (float)x1 - x0, aby = (float)y1 - y0, ab2 = abx*abx + aby*aby; // pt A=(x0,y0), B=(x1,y1) + const tc *pcol0 = color0, *pcol1 = color1; + T *ptr = data(); + + switch(shape) { + case 0: { // linear + cimg_forC(*this,v) { cimg_forXYZ(*this,x,y,z) { // point M=(x,z) + const float + amx = (float)x - x0, + amy = (float)y - y0, + r = std::max(0.f,std::min(1.f,(amx*abx + amy*aby)/ab2)); + _draw_gradient_profile(ptr++,opacity,r,pcol0,pcol1,profile); + } if (pcol0) ++pcol0; if (pcol1) ++pcol1; }} break; + case 1:{ // radial + cimg_forC(*this,v) { cimg_forXYZ(*this,x,y,z) { + const float + amx = (float)x - x0, + amy = (float)y - y0, + r = std::max(0.f,std::min(1.f,(amx*amx + amy*amy)/ab2)); + _draw_gradient_profile(ptr++,opacity,r,pcol0,pcol1,profile); + } if (pcol0) ++pcol0; if (pcol1) ++pcol1; }} break; + case 2:{ // radial cone + cimg_forC(*this,v) { cimg_forXYZ(*this,x,y,z) { + const float + amx = (float)x - x0, + amy = (float)y - y0, + r = std::max(0.f,std::min(1.f,(float)std::sqrt((amx*amx + amy*amy)/ab2))); + _draw_gradient_profile(ptr++,opacity,r,pcol0,pcol1,profile); + } if (pcol0) ++pcol0; if (pcol1) ++pcol1; }} break; + case 3:{ // square + cimg_forC(*this,v) { cimg_forXYZ(*this,x,y,z) { + const float + amx = (float)x - x0, + amy = (float)y - y0, + r=std::max(0.f,std::min(1.f,(cimg::abs(amx*abx + amy*aby) + cimg::abs(amx*aby - amy*abx))/ab2)); + _draw_gradient_profile(ptr++,opacity,r,pcol0,pcol1,profile); + } if (pcol0) ++pcol0; if (pcol1) ++pcol1; }} break; + case 4:{ // rectangle (L1) + cimg_forC(*this,v) { cimg_forXYZ(*this,x,y,z) { + const float + amx = (float)x - x0, + amy = (float)y - y0, + r = std::max(0.f,std::min(1.f,(cimg::abs(amx/abx) + cimg::abs(amy/aby)))); + _draw_gradient_profile(ptr++,opacity,r,pcol0,pcol1,profile); + } if (pcol0) ++pcol0; if (pcol1) ++pcol1; }} break; + case 5:{ // rectangle (Linf) + cimg_forC(*this,v) { cimg_forXYZ(*this,x,y,z) { + const float + amx = (float)x - x0, + amy = (float)y - y0, + r=std::max(0.f,std::min(1.f,std::max(cimg::abs(amx/abx),cimg::abs(amy/aby)))); + _draw_gradient_profile(ptr++,opacity,r,pcol0,pcol1,profile); + } if (pcol0) ++pcol0; if (pcol1) ++pcol1; }} break; + case 6:{ // gaussian + cimg_forC(*this,v) { cimg_forXYZ(*this,x,y,z) { + const float + amx = (float)x - x0, + amy = (float)y - y0, + r = std::max(0.f,std::min(1.f,1 - (float)std::exp(-(amx*amx + amy*amy)/ab2))); + _draw_gradient_profile(ptr++,opacity,r,pcol0,pcol1,profile); + } if (pcol0) ++pcol0; if (pcol1) ++pcol1; }} break; + default: + CImgArgumentException("CImg<%s>::draw_gradient : unknown shape parameter",pixel_type()); break; + } + return *this; +} + +template +CImg& draw_gradient(const int x0, const int y0, const int x1, const int y1, + const tc *const color0, const int color1, + const int shape=0, const int profile=0, const float opacity=1.0f) { + cimg::unused(color1); + return (*this).draw_gradient(x0,y0,x1,y1,color0,(tc*)0,shape,profile,opacity); +} + +template +CImg& draw_gradient(const int x0, const int y0, const int x1, const int y1, + const int color0, const tc *const color1, + const int shape=0, const int profile=0, const float opacity=1.0f) { + cimg::unused(color0); + return (*this).draw_gradient(x0,y0,x1,y1,(tc*)0,color1,shape,profile,opacity); +} + +#endif /* cimg_draw_gradient */ diff --git a/plugins/inpaint.h b/plugins/inpaint.h new file mode 100644 index 000000000..d7083f99c --- /dev/null +++ b/plugins/inpaint.h @@ -0,0 +1,500 @@ +/* + # + # File : inpaint.h + # ( C++ header file - CImg plug-in ) + # + # Copyright : David Tschumperlé + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # Description : + # + # This plug-in implements the patch-based inpainting algorithm for 2d images, as + # described in the two following publications : + # + # "A Smarter Examplar-based Inpainting Algorithm using Local and Global Heuristics + # for more Geometric Coherence." + # (M. Daisy, P. Buyssens, D. Tschumperlé, O. Lezoray). + # IEEE International Conference on Image Processing (ICIP'14), Paris/France, Oct. 2014 + # + # and + # + # "A Fast Spatial Patch Blending Algorithm for Artefact Reduction in Pattern-based + # Image Inpainting." + # (M. Daisy, D. Tschumperlé, O. Lezoray). + # SIGGRAPH Asia 2013 Technical Briefs, Hong-Kong, November 2013. + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ +#ifndef cimg_plugin_inpaint +#define cimg_plugin_inpaint + +template +CImg& inpaint_patch(const CImg& mask, const unsigned int patch_size=11, + const unsigned int lookup_size=22, const float lookup_factor=1, + const int lookup_increment=1, + const unsigned int blend_size=0, const float blend_threshold=0.5f, + const float blend_decay=0.02, const unsigned int blend_scales=10, + const bool is_blend_outer=false) { + if (depth()>1) + throw CImgInstanceException(_cimg_instance + "inpaint_patch(): Instance image is volumetric (should be 2d).", + cimg_instance); + if (!is_sameXYZ(mask)) + throw CImgArgumentException(_cimg_instance + "inpaint_patch() : Sizes of instance image and specified mask " + "(%u,%u,%u,%u) do not match.", + cimg_instance, + mask._width,mask._height,mask._depth,mask._spectrum); + if (!patch_size) + throw CImgArgumentException(_cimg_instance + "inpaint_patch() : Specified patch size is 0, must be strictly " + "positive.", + cimg_instance); + if (!lookup_size) + throw CImgArgumentException(_cimg_instance + "inpaint_patch() : Specified lookup size is 0, must be strictly " + "positive.", + cimg_instance); + if (lookup_factor<0) + throw CImgArgumentException(_cimg_instance + "inpaint_patch() : Specified lookup factor %g is negative, must be " + "positive.", + cimg_instance, + lookup_factor); + if (!lookup_increment) + throw CImgArgumentException(_cimg_instance + "inpaint_patch() : Specified lookup increment is 0, must be " + "strictly positive.", + cimg_instance); + if (blend_decay<0) + throw CImgArgumentException(_cimg_instance + "inpaint_patch() : Specified blend decay %g is negative, must be " + "positive.", + cimg_instance, + blend_decay); + + // Find (dilated by 2) bounding box for the inpainting mask. + unsigned int xm0 = _width, ym0 = _height, xm1 = 0, ym1 = 0; + bool is_mask_found = false; + cimg_forXY(mask,x,y) if (mask(x,y)) { + is_mask_found = true; + if (x<(int)xm0) xm0 = (unsigned int)x; + if (x>(int)xm1) xm1 = (unsigned int)x; + if (y<(int)ym0) ym0 = (unsigned int)y; + if (y>(int)ym1) ym1 = (unsigned int)y; + } + if (!is_mask_found) return *this; + xm0 = xm0>2?xm0 - 2:0; + ym0 = ym0>2?ym0 - 2:0; + xm1 = xm1<_width - 3?xm1 + 2:_width - 1; + ym1 = ym1<_height - 3?ym1 + 2:_height - 1; + int ox = xm0, oy = ym0; + unsigned int dx = xm1 - xm0 + 1U, dy = ym1 - ym0 + 1U; + + // Construct normalized version of the mask. + CImg nmask(dx,dy); + unsigned char *ptrM = nmask.data(); + cimg_for_inXY(mask,xm0,ym0,xm1,ym1,x,y) *(ptrM++) = mask(x,y)?0:1; + xm0 = ym0 = 0; xm1 = dx - 1; ym1 = dy - 1; + + // Start patch filling algorithm. + const int p2 = (int)patch_size/2, p1 = (int)patch_size - p2 - 1; + const unsigned int patch_size2 = patch_size*patch_size; + unsigned int _lookup_size = lookup_size, nb_lookups = 0, nb_fails = 0, nb_saved_patches = 0; + bool is_strict_search = true; + const float one = 1; + + CImg confidences(nmask), priorities(dx,dy,1,2,-1), pC; + CImg saved_patches(4,256), is_visited(width(),height(),1,1,0); + CImg pM, pN; // Pre-declare patch variables (avoid iterative memory alloc/dealloc) + CImg pP, pbest; + CImg weights(patch_size,patch_size,1,1,0); + weights.draw_gaussian((float)p1,(float)p1,patch_size/15.0f,&one)/=patch_size2; + unsigned int target_index = 0; + + while (true) { + + // Extract mask border points and compute priorities to find target point. + unsigned int nb_border_points = 0; + float target_confidence = -1, target_priority = -1; + int target_x = -1, target_y = -1; + CImg_5x5(M,unsigned char); + + cimg_for_in5x5(nmask,xm0,ym0,xm1,ym1,x,y,0,0,M,unsigned char) + if (!Mcc && (Mcp || Mcn || Mpc || Mnc)) { // Found mask border point + + float confidence_term = -1, data_term = -1; + if (priorities(x,y)>=0) { // If priority has already been computed + confidence_term = priorities(x,y,0); + data_term = priorities(x,y,1); + } else { // If priority must be computed/updated + + // Compute smoothed normal vector. + const float + // N = smoothed 3x3 neighborhood of M. + Npc = (4.0f*Mpc + 2.0f*Mbc + 2.0f*Mcc + 2.0f*Mpp + 2.0f*Mpn + Mbp + Mbn + Mcp + Mcn)/16, + Nnc = (4.0f*Mnc + 2.0f*Mac + 2.0f*Mcc + 2.0f*Mnp + 2.0f*Mnn + Map + Man + Mcp + Mcn)/16, + Ncp = (4.0f*Mcp + 2.0f*Mcb + 2.0f*Mcc + 2.0f*Mpp + 2.0f*Mnp + Mpb + Mnb + Mpc + Mnc)/16, + Ncn = (4.0f*Mcn + 2.0f*Mca + 2.0f*Mcc + 2.0f*Mpn + 2.0f*Mnn + Mpa + Mna + Mpc + Mnc)/16, + _nx = 0.5f*(Nnc - Npc), + _ny = 0.5f*(Ncn - Ncp), + nn = std::sqrt(1e-8f + _nx*_nx + _ny*_ny), + nx = _nx/nn, + ny = _ny/nn; + + // Compute confidence term. + nmask._inpaint_patch_crop(x - p1,y - p1,x + p2,y + p2,1).move_to(pM); + confidences._inpaint_patch_crop(x - p1,y - p1,x + p2,y + p2,1).move_to(pC); + confidence_term = 0; + const unsigned char *ptrM = pM.data(); + cimg_for(pC,ptrC,float) confidence_term+=*ptrC**(ptrM++); + confidence_term/=patch_size2; + priorities(x,y,0) = confidence_term; + + // Compute data term. + _inpaint_patch_crop(ox + x - p1,oy + y - p1,ox + x + p2,oy + y + p2,2).move_to(pP); + float mean_ix2 = 0, mean_ixiy = 0, mean_iy2 = 0; + + CImg_3x3(I,T); + CImg_3x3(_M, unsigned char); + cimg_forC(pP,c) cimg_for3x3(pP,p,q,0,c,I,T) { + // Compute weight-mean of structure tensor inside patch. + cimg_get3x3(pM,p,q,0,0,_M,unsigned char); + const float + ixf = (float)(_Mnc*_Mcc*(Inc - Icc)), + iyf = (float)(_Mcn*_Mcc*(Icn - Icc)), + ixb = (float)(_Mcc*_Mpc*(Icc - Ipc)), + iyb = (float)(_Mcc*_Mcp*(Icc - Icp)), + ix = cimg::abs(ixf)>cimg::abs(ixb)?ixf:ixb, + iy = cimg::abs(iyf)>cimg::abs(iyb)?iyf:iyb, + w = weights(p,q); + mean_ix2 += w*ix*ix; + mean_ixiy += w*ix*iy; + mean_iy2 += w*iy*iy; + } + const float // Compute tensor-directed data term + ux = mean_ix2*(-ny) + mean_ixiy*nx, + uy = mean_ixiy*(-ny) + mean_iy2*nx; + data_term = std::sqrt(ux*ux + uy*uy); + priorities(x,y,1) = data_term; + } + const float priority = confidence_term*data_term; + if (priority>target_priority) { + target_priority = priority; target_confidence = confidence_term; + target_x = ox + x; target_y = oy + y; + } + ++nb_border_points; + } + if (!nb_border_points) break; // No more mask border points to inpaint! + + // Locate already reconstructed neighbors (if any), to get good origins for patch lookup. + CImg lookup_candidates(2,256); + unsigned int nb_lookup_candidates = 0, *ptr_lookup_candidates = lookup_candidates.data(); + const unsigned int *ptr_saved_patches = saved_patches.data(); + const int + x0 = target_x - (int)patch_size, y0 = target_y - (int)patch_size, + x1 = target_x + (int)patch_size, y1 = target_y + (int)patch_size; + for (unsigned int k = 0; k=x0 && (int)dest_y>=y0 && (int)dest_x<=x1 && (int)dest_y<=y1) { + const int off_x = target_x - dest_x, off_y = target_y - dest_y; + *(ptr_lookup_candidates++) = src_x + off_x; + *(ptr_lookup_candidates++) = src_y + off_y; + if (++nb_lookup_candidates>=lookup_candidates._height) + lookup_candidates.resize(2,-200,1,1,0); + } + } + // Add also target point as a center for the patch lookup. + *(ptr_lookup_candidates++) = target_x; + *(ptr_lookup_candidates++) = target_y; + ++nb_lookup_candidates; + + // Divide size of lookup regions if several lookup sources have been detected. + unsigned int final_lookup_size = _lookup_size; + if (nb_lookup_candidates>1) { + const unsigned int + _final_lookup_size = (unsigned int)cimg::round(_lookup_size*lookup_factor/ + std::sqrt((float)nb_lookup_candidates),1,1); + final_lookup_size = _final_lookup_size + 1 - (_final_lookup_size%2); + } + const int l2 = (int)final_lookup_size/2, l1 = (int)final_lookup_size - l2 - 1; + +#ifdef inpaint_debug + CImg visu(*this,false); + for (unsigned int C = 0; C::vector(0,255,0).data(),0.2f); + } + visu.draw_rectangle(target_x - p1,target_y - p1,target_x + p2,target_y + p2, + CImg::vector(255,0,0).data(),0.5f); + static int foo = 0; + if (!(foo%1)) { + // visu.save("video.ppm",foo); + static CImgDisplay disp_debug; + disp_debug.display(visu).set_title("DEBUG"); + } + ++foo; +#endif // #ifdef inpaint_debug + + // Find best patch candidate to fill target point. + _inpaint_patch_crop(target_x - p1,target_y - p1,target_x + p2,target_y + p2,0).move_to(pP); + nmask._inpaint_patch_crop(target_x - ox - p1,target_y - oy - p1,target_x - ox + p2,target_y - oy + p2,0). + move_to(pM); + ++target_index; + const unsigned int + _lookup_increment = (unsigned int)(lookup_increment>0?lookup_increment: + nb_lookup_candidates>1?1:-lookup_increment); + float best_ssd = cimg::type::max(); + int best_x = -1, best_y = -1; + for (unsigned int C = 0; C=best_ssd) break; + _pC-=pC._spectrum*patch_size2; + _pP-=pC._spectrum*patch_size2; + } + ++_pC; ++_pP; + } + if (ssd=4) { // If too much consecutive fails : + nb_fails = 0; + _lookup_size+=_lookup_size/2; // Try to expand the lookup size + if (++nb_lookups>=3) { + if (is_strict_search) { // If still fails, switch to non-strict search mode + is_strict_search = false; + _lookup_size = lookup_size; + nb_lookups = 0; + } + else return *this; // Pathological case, probably a weird mask + } + } + } else { // Best patch found -> reconstruct missing part on the target patch + _lookup_size = lookup_size; + nb_lookups = nb_fails = 0; + _inpaint_patch_crop(best_x - p1,best_y - p1,best_x + p2,best_y + p2,0).move_to(pbest); + nmask._inpaint_patch_crop(target_x - ox - p1,target_y - oy - p1,target_x - ox + p2,target_y - oy + p2,1). + move_to(pM); + cimg_for(pM,ptr,unsigned char) *ptr=1 - *ptr; + draw_image(target_x - p1,target_y - p1,pbest,pM,1,1); + confidences.draw_image(target_x - ox - p1,target_y - oy - p1,pC.fill(target_confidence),pM,1,1); + nmask.draw_rectangle(target_x - ox - p1,target_y - oy - p1,0,0,target_x - ox + p2,target_y - oy + p2,0,0,1); + priorities.draw_rectangle(target_x - ox - (int)patch_size, + target_y - oy - (int)patch_size,0,0, + target_x - ox + 3*p2/2, + target_y - oy + 3*p2/2,0,0,-1); + // Remember patch positions. + unsigned int *ptr_saved_patches = saved_patches.data(0,nb_saved_patches); + *(ptr_saved_patches++) = best_x; + *(ptr_saved_patches++) = best_y; + *(ptr_saved_patches++) = target_x; + *ptr_saved_patches = target_y; + if (++nb_saved_patches>=saved_patches._height) saved_patches.resize(4,-200,1,1,0); + } + } + nmask.assign(); // Free some unused memory resources + priorities.assign(); + confidences.assign(); + is_visited.assign(); + + // Blend inpainting result (if requested), using multi-scale blending algorithm. + if (blend_size && blend_scales) { + const float _blend_threshold = std::max(0.0f,std::min(1.0f,blend_threshold)); + saved_patches._height = nb_saved_patches; + + // Re-crop image and mask if outer blending is activated. + if (is_blend_outer) { + const int + b2 = (int)blend_size/2, b1 = (int)blend_size - b2 - 1, + xb0 = std::max(0,ox - b1), + yb0 = std::max(0,oy - b1), + xb1 = std::min(_width - 1,xb0 + dx + b1 + b2), + yb1 = std::min(_height - 1,yb0 + dy + b1 + b2); + ox = xb0; oy = yb0; dx = xb1 - xb0 + 1U, dy = yb1 - yb0 + 1U; + } + + // Generate map of source offsets. + CImg offsets(dx,dy,1,2); + unsigned int *ptr = saved_patches.end(); + cimg_forY(saved_patches,i) { + const unsigned int yd = *(--ptr), xd = *(--ptr), ys = *(--ptr), xs = *(--ptr); + for (int l = -p1; l<=p2; ++l) + for (int k = -p1; k<=p2; ++k) { + const int xdk = xd + k, ydl = yd + l; + if (xdk>=0 && xdk<=width() - 1 && ydl>=0 && ydl<=height() - 1 && mask(xd + k,yd + l)) { + offsets(xd - ox + k,yd - oy + l,0) = xs + k; + offsets(xd - ox + k,yd - oy + l,1) = ys + l; + } + } + } + unsigned int *ptrx = offsets.data(0,0,0,0), *ptry = offsets.data(0,0,0,1); + cimg_forXY(offsets,x,y) { + if (!mask(x + ox,y + oy)) { *ptrx = x + ox; *ptry = y + oy; } + ++ptrx; ++ptry; + } + + // Generate map of local blending amplitudes. + CImg blend_map(dx,dy,1,1,0); + CImg_3x3(I,float); + cimg_for3XY(offsets,x,y) if (mask(x + ox,y + oy)) { + const float + iox = std::max((float)offsets(_n1x,y,0) - offsets(x,y,0), + (float)offsets(x,y,0) - offsets(_p1x,y,0)), + ioy = std::max((float)offsets(x,_n1y,1) - offsets(x,y,1), + (float)offsets(x,y,1) - offsets(x,_p1y,1)), + ion = std::sqrt(iox*iox + ioy*ioy); + float iin = 0; + cimg_forC(*this,c) { + cimg_get3x3(*this,x,y,0,c,I,float); + const float + iix = (float)std::max(Inc - Icc,Icc - Ipc), + iiy = (float)std::max(Icn - Icc,Icc - Icp); + iin+=std::log(1 + iix*iix + iiy*iiy); + } + iin/=_spectrum; + blend_map(x,y) = ion*iin; + } + blend_map.threshold(blend_map.max()*_blend_threshold).distance(1); + cimg_forXY(blend_map,x,y) blend_map(x,y) = 1/(1 + blend_decay*blend_map(x,y)); + blend_map.quantize(blend_scales + 1,false); + float bm, bM = blend_map.max_min(bm); + if (bm==bM) blend_map.fill((float)blend_scales); + + // Generate blending scales. + CImg result = _inpaint_patch_crop(ox,oy,ox + dx - 1,oy + dy - 1,0); + for (unsigned int blend_iter = 1; blend_iter<=blend_scales; ++blend_iter) { + const unsigned int + _blend_width = blend_iter*blend_size/blend_scales, + blend_width = _blend_width?_blend_width + 1 - (_blend_width%2):0; + if (!blend_width) continue; + const int b2 = (int)blend_width/2, b1 = (int)blend_width - b2 - 1; + CImg + blended = _inpaint_patch_crop(ox,oy,ox + dx - 1,oy + dy - 1,0), + cumul(dx,dy,1,1); + weights.assign(blend_width,blend_width,1,1,0). + draw_gaussian((float)b1,(float)b1,blend_width/4.0f,&one); + cimg_forXY(cumul,x,y) cumul(x,y) = mask(x + ox,y + oy)?0.0f:1.0f; + blended.mul(cumul); + + cimg_forY(saved_patches,l) { + const unsigned int *ptr = saved_patches.data(0,l); + const int + xs = (int)*(ptr++), + ys = (int)*(ptr++), + xd = (int)*(ptr++), + yd = (int)*(ptr++); + if (xs - b1<0 || ys - b1<0 || xs + b2>=width() || ys + b2>=height()) { // Blend with partial patch + const int + xs0 = std::max(0,xs - b1), + ys0 = std::max(0,ys - b1), + xs1 = std::min(width() - 1,xs + b2), + ys1 = std::min(height() - 1,ys + b2); + _inpaint_patch_crop(xs0,ys0,xs1,ys1,0).move_to(pP); + weights._inpaint_patch_crop(xs0 - xs + b1,ys0 - ys + b1,xs1 - xs + b1,ys1 - ys + b1,0).move_to(pC); + blended.draw_image(xd + xs0 - xs - ox,yd + ys0 - ys - oy,pP,pC,-1); + cumul.draw_image(xd + xs0 - xs - ox,yd + ys0 - ys - oy,pC,-1); + } else { // Blend with full-size patch + _inpaint_patch_crop(xs - b1,ys - b1,xs + b2,ys + b2,0).move_to(pP); + blended.draw_image(xd - b1 - ox,yd - b1 - oy,pP,weights,-1); + cumul.draw_image(xd - b1 - ox,yd - b1 - oy,weights,-1); + } + } + + if (is_blend_outer) { + cimg_forXY(blended,x,y) if (blend_map(x,y)==blend_iter) { + const float cum = cumul(x,y); + if (cum>0) cimg_forC(*this,c) result(x,y,c) = (T)(blended(x,y,c)/cum); + } + } else { cimg_forXY(blended,x,y) if (mask(x + ox,y + oy) && blend_map(x,y)==blend_iter) { + const float cum = cumul(x,y); + if (cum>0) cimg_forC(*this,c) result(x,y,c) = (T)(blended(x,y,c)/cum); + } + } + } + if (is_blend_outer) draw_image(ox,oy,result); + else cimg_forXY(result,x,y) if (mask(x + ox,y + oy)) + cimg_forC(*this,c) (*this)(x + ox,y + oy,c) = (T)result(x,y,c); + } + return *this; +} + +// Special crop function that supports more boundary conditions : +// 0=dirichlet (with value 0), 1=dirichlet (with value 1) and 2=neumann. +CImg _inpaint_patch_crop(const int x0, const int y0, const int x1, const int y1, + const unsigned int boundary=0) const { + const int + nx0 = x0 res(1U + nx1 - nx0,1U + ny1 - ny0,1,_spectrum); + if (nx0<0 || nx1>=width() || ny0<0 || ny1>=height()) { + if (boundary>=2) cimg_forXYZC(res,x,y,z,c) res(x,y,z,c) = _atXY(nx0 + x,ny0 + y,z,c); + else res.fill((T)boundary).draw_image(-nx0,-ny0,*this); + } else res.draw_image(-nx0,-ny0,*this); + return res; +} + +template +CImg get_inpaint_patch(const CImg& mask, const unsigned int patch_size=11, + const unsigned int lookup_size=22, const float lookup_factor=1, + const int lookup_increment=1, + const unsigned int blend_size=0, const float blend_threshold=0.5, + const float blend_decay=0.02f, const unsigned int blend_scales=10, + const bool is_blend_outer=false) const { + return (+*this).inpaint_patch(mask,patch_size,lookup_size,lookup_factor,lookup_increment, + blend_size,blend_threshold,blend_decay,blend_scales,is_blend_outer); +} + +#endif /* cimg_plugin_inpaint */ diff --git a/plugins/ipl.h b/plugins/ipl.h new file mode 100644 index 000000000..a544d21a3 --- /dev/null +++ b/plugins/ipl.h @@ -0,0 +1,309 @@ +/* +# +# File : ipl.h +# ( C++ header file - CImg plug-in ) +# +# Description : CImg plug-in providing the CImg->IPL and IPL->CImg +# conversions for generic image types +# ( IPL = Intel Performance Library ) +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : Hon-Kwok Fung (oldfung@graduate.hku.hk) +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# +# +# +# Usage : +# +# In your application code, #define the path of this plugin file as +# something like +# +# #define cimg_plugin1 "../some_directory/ipl.h" +# +# You should define such macro before the line #include . The source +# code of CImg provides eight slots cimg_plugin1, cimg_plugin2, ..., +# cimg_plugin8 for insertion of plugins. You may assign a different slot to +# this plugin if cimg_plugin1 is already occupied. +# +# You need also to include prior to CImg.h the following files : +# +# #include +# #include +# +# To create an IplImage from a CImg instance, you may write: +# +# // Given a CImg instance, say, c_img, ... +# IplImage *img = c_img.get_IplImage(); // (a) copy construction of IplImage +# +# CImg supports any number of color channels, while IplImage supports up to 4 +# channels. When the number of channels is 1 or 2, it is hard to tell if these +# channels have genuine color semantics. Even if the number of channels is 3, +# CImg and IplImage can have different channel orders (IplImage: usually BGR; +# CImg: always RGB). The default behaviour of get_IplImage() is to assume that +# the IplImage instance has a BGR channel order (which is the default order in +# OpenCV) and swap the channel order in the destination image buffer. That is, +# the default is to map OpenCV's blue (1st) and red (3rd) channels to CImg's +# blue (2nd) and red (0th) channel respectively. If the user wants to specify +# this default option explicitly, he/she can write: +# +# IplImage *img = c_img.get_IplImage(CV_CVTIMG_SWAP_RB); // identical to (a) +# +# where CV_CVTIMG_SWAP_RB is a flag value defined by OpenCV. If the user wants +# to keep the channel order unchanged (i.e. maps IplImage's 1st, 2nd, ... +# channels to CImg's 0th, 1st, ... channels resp.), he/she can use a zero flag +# value: +# +# IplImage *img = c_img.get_IplImage(0); +# +# However, when the number of channels is smaller than 3, this option will be +# ignored and the default behaviour (flag value CV_CVTIMG_SWAP_RB) will be +# assumed. +# +# CImg also differs from IplImage in that the latter represents a 2D image but +# the former can be a 3D image. If the size of the z-dimension (depth) of the +# CImg instance is larger than 1, one must choose which slice to copy: +# +# IplImage *img1 = c_img.get_IplImage(0, z); +# IplImage *img2 = c_img.get_IplImage(CV_CVTIMG_SWAP_RB, z); +# +# The default z-value is 0. +# +# To do conversion in another direction, write something like this: +# +# // Suppose img1 and img2 are two pointers to IplImage, where +# // img1->depth == IPL_DEPTH_8U and img2->depth == IPL_DEPTH_32F. +# CImg c_img1(img1); // (b) +# CImg c_img1(img1,CV_CVTIMG_SWAP_RB); // identical to (b) +# CImg c_img2(img2); // (c) +# CImg c_img2(img2,CV_CVTIMG_SWAP_RB); // identical to (c) +# +# Again, if one wants to keep the channel order unchanged when the number of +# channels is >= 3, one can write: +# +# CImg c_img1(img1,0); +# CImg c_img2(img2,0); +# +# All such conversions are deep copy constructions, because CImg and IplImage +# have different internal memory layouts. +# +# Technically, we can write code to do conversion between an IplImage instance +# and a CImg instance with different pixel types (e.g. between an IPL_DEPTH_8S +# IplImage instance and a CImg instance), but such conversion is +# problematic because either the semantics of the pixel type is lost or some +# casting is needed. Therefore, the conversion code in this plugin only allows +# conversions of images of identical pixel types. For instance, in line (b) of +# the example code above, if one writes +# +# CImg c_img1(img1); // error; img1's pixel type is IPL_DEPTH_8U +# +# the conversion will generate a runtime error, despite sizeof(char) is equal +# to sizeof(unsigned char). The is certainly inconvenient to some users as +# the pixel type of CImg has to be defined at compile time but the pixel type +# of IplImage is determined at runtime. +# +# Some architecture-dependent code is contained in the two helper functions +# +# bool not_pixel_type_of(const IplImage*) +# +# and +# +# int get_ipl_bit_depth() const +# +# which establish correspondences between IplImage's pixel type and C++ data +# type. For example, they assume that IPL_DEPTH_16S corresponds to a signed +# short and IPL_DEPTH_64F corresponds to a signed double, etc.. Change the +# code if necessary. +# +# Currently, this plugin provides only conversions of OpenCV IplImage instances +# to and from CImg instances. Conversions of general IplImage instances (e.g. +# those with bit-depth IPL_DEPTH_1U or those with origin==1) are not supported. +# Yet the conversion code has taken care of the data alignment to 4-byte or +# 8-byte boundary as well as the use of both interleaved and non-interleaved +# color channels in IplImage. +*/ + +#ifndef cimg_plugin_ipl +#define cimg_plugin_ipl + +//---------------------------- +// Architecture-dependent helper functions; change to suit your needs +//---------------------------- + +// Check if this CImg instance and a given IplImage have identical pixel types. +bool not_pixel_type_of(const IplImage *const img) const { + // to do : handle IPL_DEPTH_1U? + return (((unsigned int)img->depth == IPL_DEPTH_8U && typeid(T) != typeid(unsigned char)) || + ((unsigned int)img->depth == IPL_DEPTH_8S && typeid(T) != typeid(char)) || + ((unsigned int)img->depth == IPL_DEPTH_16U && typeid(T) != typeid(unsigned short)) || + ((unsigned int)img->depth == IPL_DEPTH_16S && typeid(T) != typeid(unsigned)) || + ((unsigned int)img->depth == IPL_DEPTH_32S && typeid(T) != typeid(int)) || + ((unsigned int)img->depth == IPL_DEPTH_32F && typeid(T) != typeid(float)) || + ((unsigned int)img->depth == IPL_DEPTH_64F && typeid(T) != typeid(double))); +} + +// Given this CImg instance, return the corresponding bit-depth flag for use in IplImage header. +int get_ipl_bit_depth() const { + // to do : handle IPL_DEPTH_1U? + if (typeid(T) == typeid(unsigned char)) return IPL_DEPTH_8U; + if (typeid(T) == typeid(char)) return IPL_DEPTH_8S; + if (typeid(T) == typeid(unsigned short)) return IPL_DEPTH_16U; + if (typeid(T) == typeid(short)) return IPL_DEPTH_16S; + if (typeid(T) == typeid(int)) return IPL_DEPTH_32S; + if (typeid(T) == typeid(float)) return IPL_DEPTH_32F; + if (typeid(T) == typeid(double)) return IPL_DEPTH_64F; + return 0; +} + +//---------------------------- +// IplImage-to-CImg conversion +//---------------------------- + +// Copy constructor; the optional flag will be ignored when the number of color channels is less than 3. +// Current flag options are 0 and CV_CVTIMG_SWAP_RB; +// may add CV_CVTIMG_FLIP and CV_CVTIMG_FLIP|CV_CVTIMG_SWAP_RB in the future. +CImg(const IplImage *const img, const int flag=0): +_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(img,flag); +} + +// In-place constructor; the optional flag will be ignored when the number of color channels is less than 3. +// Current flag options are 0 and CV_CVTIMG_SWAP_RB; +// may add CV_CVTIMG_FLIP and CV_CVTIMG_FLIP|CV_CVTIMG_SWAP_RB in the future. +CImg & assign(const IplImage *const img, const int flag=CV_CVTIMG_SWAP_RB) { + if (!img) return assign(); + if (not_pixel_type_of(img)) + throw CImgInstanceException(_cimg_instance + "assign(const IplImage*) : IplImage has no corresponding pixel type.", + cimg_instance); + // to do: handle roi + const int W = img->width, H = img->height; + const char *const dataPtrI = img->imageData; + assign(W,H,1,img->nChannels); + char *const dataPtrC = (char *)_data; + + const int + byte_depth = (img->depth & 255) >> 3, // number of bytes per color + widthStepI = img->widthStep, // to do: handle the case img->origin==1 (currently: img->origin==0) + widthStepC = W*byte_depth, + channelStepC = H*widthStepC; + + if (img->dataOrder==0) { // interleaved color channels + const int pix_size = byte_depth*img->nChannels; + for (int n = 0; nnChannels; ++n) { + const char *linePtrI = dataPtrI + n*byte_depth; + char *linePtrC = dataPtrC + (img->nChannels>=3 && (flag & CV_CVTIMG_SWAP_RB) && n<3?(2 - n):n)*channelStepC; + // color order is BGR in IplImage and RGB in CImg + + for (int i = 0; inChannels; ++n) { + const char *linePtrI = dataPtrI + n*byte_depth; + char *linePtrC = dataPtrC + (img->nChannels >= 3 && (flag & CV_CVTIMG_SWAP_RB) && n<3?(2 - n):n)*channelStepC; + for (int i = 0; i=_depth) + throw CImgInstanceException(_cimg_instance + "get_IplImage() : Instance has not Z-dimension %u.", + cimg_instance, + z); + if (_spectrum>4) + cimg::warn(_cimg_instance + "get_IplImage() : OpenCV supports only 4 channels, so only the first four will be copied.", + cimg_instance); + + IplImage *const img = cvCreateImage(cvSize(_width,_height),bit_depth,_spectrum); + const int + W = _width, + H = _height, + byte_depth = (img->depth & 255) >> 3, // number of bytes per color + widthStepI = img->widthStep, // to do: handle the case img->origin==1 (currently: img->origin==0) + widthStepC = W*byte_depth, + channelStepC = H*_depth*widthStepC; + const char *const dataPtrC = (char*)_data + z*H*widthStepC; + char *const dataPtrI = img->imageData; + + if (!img->dataOrder) { // interleaved color channels + const int pix_size = byte_depth*img->nChannels; + for (int n = 0; nnChannels; ++n) { + const char + *linePtrC = dataPtrC + (img->nChannels >= 3 && (flag & CV_CVTIMG_SWAP_RB) && n<3?(2 - n):n)*channelStepC; + char *linePtrI = dataPtrI + n*byte_depth; + + // color order is BGR in IplImage and RGB in CImg + for (int i = 0; inChannels; ++n) { + const char + *linePtrC = dataPtrC + (img->nChannels>= 3 && (flag & CV_CVTIMG_SWAP_RB) && n<3?(2 - n):n)*channelStepC; + char *linePtrI = dataPtrI + n*byte_depth; + for (int i = 0; iIPL and IPL->CImg +# conversions for generic image types +# ( IPL = Intel Performance Library ) +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : newleft (haibo.zheng@gmail.com) +# newleftist@hotmail.com +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# +*/ + +#ifndef cimg_plugin_IPL +#define cimg_plugin_IPL + +// Conversion IPL -> CImg (constructor) +CImg(const IplImage* src):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(src); +} + +// Conversion IPL -> CImg (in-place constructor) +CImg& assign(const IplImage* src) { + if (!src) return assign(); + switch (src->depth) { + case IPL_DEPTH_1U: { // 1-bit int. + IplImage *src1 = cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1); + cvConvert(src,src1); + CImg((unsigned char*)src1->imageData,src1->nChannels,src1->width,src1->height,1,true). + get_permute_axes("yzcx").move_to(*this); + cvReleaseImage(&src1); + } break; + case IPL_DEPTH_8U: // 8-bit unsigned int. + CImg((unsigned char*)src->imageData,src->nChannels,src->width,src->height,1,true). + get_permute_axes("yzcx").move_to(*this); + break; + case IPL_DEPTH_8S: // 8-bit signed int. + CImg((char*)src->imageData,src->nChannels,src->width,src->height,1,true). + get_permute_axes("yzcx").move_to(*this); + break; + case IPL_DEPTH_16U: // 16-bit unsigned int. + CImg((unsigned short*)src->imageData,src->nChannels,src->width,src->height,1,true). + get_permute_axes("yzcx").move_to(*this); + break; + case IPL_DEPTH_16S: // 16-bit signed int. + CImg((short*)src->imageData,src->nChannels,src->width,src->height,1,true). + get_permute_axes("yzcx").move_to(*this); + break; + case IPL_DEPTH_32S: // 32-bit signed int. + CImg((int*)src->imageData,src->nChannels,src->width,src->height,1,true). + get_permute_axes("yzcx").move_to(*this); + break; + case IPL_DEPTH_32F: // 32-bit float. + CImg((float*)src->imageData,src->nChannels,src->width,src->height,1,true). + get_permute_axes("yzcx").move_to(*this); + break; + case IPL_DEPTH_64F: // 64-bit double. + CImg((double*)src->imageData,src->nChannels,src->width,src->height,1,true). + get_permute_axes("yzcx").move_to(*this); + break; + default: + throw CImgInstanceException("CImg<%s>::assign(const IplImage* img) : IplImage depth is invalid.", + pixel_type()); + break; + } + if (!std::strcmp(src->channelSeq,"BGR")) mirror('v'); + else if (!std::strcmp(src->channelSeq,"BGRA")) get_shared_channels(0,2).mirror('v'); + return *this; +} + +// Conversion CImg -> IPL +IplImage* get_IPL(const unsigned int z=0) const { + if (is_empty()) + throw CImgInstanceException("CImg<%s>::get_IPL() : instance image (%u,%u,%u,%u,%p) is empty.", + pixel_type(),_width,_height,_depth,_spectrum,_data); + if (z>=_depth) + throw CImgInstanceException("CImg<%s>::get_IPL() : specified slice %u is out of image bounds (%u,%u,%u,%u,%p).", + pixel_type(),z,_width,_height,_depth,_spectrum,_data); + const CImg + _slice = _depth>1?get_slice(z):CImg(), + &slice = _depth>1?_slice:*this; + CImg buf(slice); + if (_spectrum==3 || _spectrum==4) buf.get_shared_channels(0,2).mirror('v'); + buf.permute_axes("cxyz"); + IplImage* const dst = cvCreateImage(cvSize(_width,_height),sizeof(T)*8,_spectrum); + std::memcpy(dst->imageData,buf.data(),buf.size()*sizeof(T)); + return dst; +} + +#endif /* cimg_plugin_IPL */ diff --git a/plugins/jpeg_buffer.h b/plugins/jpeg_buffer.h new file mode 100644 index 000000000..840dc1148 --- /dev/null +++ b/plugins/jpeg_buffer.h @@ -0,0 +1,376 @@ +/* + # + # File : jpeg_buffer.h + # ( C++ header file - CImg plug-in ) + # + # Description : This CImg plug-in provide functions to load and save jpeg images + # directly from/to memory buffers of JOCTET buffers, using the + # JPEG library (required to compile !) + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Paolo Prete + # ( p4olo_prete@yahoo.it ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +/*----------------------------------------------------------------------------------- + + IMPORTANT NOTE : + + You *need* to include the following lines in your own code to use this plugin : + + #include + #include + #include + + (see example file provided in examples/use_jpeg_buffer.cpp). + +------------------------------------------------------------------------------------*/ + +#ifndef cimg_plugin_jpeg_buffer +#define cimg_plugin_jpeg_buffer + +/////////////////////////////////////////////////////////////////////////////////////// +// +// extension of libjpeg (helper functions for loading images from JOCTET arrays) +// hacked from +// http://www.koders.com/cpp/fidB5A4549ABB5CB01824058F57A43D095D3F95AB40.aspx +// +/////////////////////////////////////////////////////////////////////////////////////// + +#define INPUT_BUF_SIZE 4096 + +struct my_source_mem { + struct jpeg_source_mgr pub; // Public fields + int indexinmem; + JOCTET *inmem; // Source stream + JOCTET *buffer; // Start of buffer + int lenght; // Size of buffer in memory + boolean start_of_file; // Have we gotten any data yet? +}; + +struct my_source_mgr { + struct jpeg_source_mgr pub; // public fields + FILE *infile; // source stream + JOCTET *buffer; // start of buffer + boolean start_of_file; // have we gotten any data yet? +}; + +typedef my_source_mem *my_src_mptr; +typedef my_source_mgr *my_src_ptr; + +static boolean fill_minput_buffer(j_decompress_ptr cinfo) { + my_src_mptr src = (my_src_mptr) cinfo->src; + size_t nbytes; + if (src->indexinmem + INPUT_BUF_SIZE>src->lenght) nbytes=src->lenght - src->indexinmem; + else nbytes = INPUT_BUF_SIZE; + std::memcpy(src->buffer,src->inmem,nbytes); + src->inmem += nbytes; + src->indexinmem += (int)nbytes; + src->pub.next_input_byte = src->buffer; + src->pub.bytes_in_buffer = INPUT_BUF_SIZE; + src->start_of_file = FALSE; + return TRUE; +} + +static void skip_minput_data(j_decompress_ptr cinfo, long num_bytes) { + my_src_ptr src = (my_src_ptr)cinfo->src; + if (num_bytes > 0) { + while (num_bytes > (long) src->pub.bytes_in_buffer) { + num_bytes -= (long) src->pub.bytes_in_buffer; + fill_minput_buffer(cinfo); + // note we assume that fill_input_buffer will never return FALSE, + // so suspension need not be handled. + // + } + src->pub.next_input_byte += (size_t) num_bytes; + src->pub.bytes_in_buffer -= (size_t) num_bytes; + } +} + +static void init_msource(j_decompress_ptr cinfo) { + my_src_mptr src = (my_src_mptr)cinfo->src; + src->start_of_file = TRUE; +} + +static void term_source(j_decompress_ptr) { + // no work necessary here +} + +static void jpeg_mem_src(j_decompress_ptr cinfo, JOCTET * memptr,int lenght) { + my_src_mptr src; + + // The source object and input buffer are made permanent so that a series + //of JPEG images can be read from the same file by calling jpeg_stdio_src + // only before the first one. (If we discarded the buffer at the end of + // one image, we'd likely lose the start of the next one.) + // This makes it unsafe to use this manager and a different source + // manager serially with the same JPEG object. Caveat programmer. + // + + // first time for this JPEG object? + if (cinfo->src == NULL) { + cinfo->src = (struct jpeg_source_mgr*)(*cinfo->mem->alloc_small)((j_common_ptr) cinfo, + JPOOL_PERMANENT,sizeof(my_source_mem)); + src = (my_src_mptr) cinfo->src; + src->buffer = (JOCTET *)(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, + JPOOL_PERMANENT,INPUT_BUF_SIZE * sizeof(JOCTET)); + } + + src = (my_src_mptr) cinfo->src; + src->pub.init_source = init_msource; + src->pub.fill_input_buffer = fill_minput_buffer; + src->pub.skip_input_data = skip_minput_data; + //src->pub.resync_to_restart = jpeg_resync_to_restart; // use default method + src->pub.term_source = term_source; + src->inmem = memptr; + src->indexinmem = 0; + src->lenght = lenght; + src->pub.bytes_in_buffer = 0; // forces fill_input_buffer on first read + src->pub.next_input_byte = NULL; // until buffer loaded +} + +// The following declarations and 5 functions are jpeg related +// functions used by put_jpeg_grey_memory and put_jpeg_yuv420p_memory +// +struct mem_destination_mgr { + struct jpeg_destination_mgr pub; + JOCTET *buf; + size_t bufsize; + size_t jpegsize; +}; + +typedef mem_destination_mgr *mem_dest_ptr; + +static void init_destination(j_compress_ptr cinfo) { + mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest; + dest->pub.next_output_byte = dest->buf; + dest->pub.free_in_buffer = dest->bufsize; + dest->jpegsize = 0; +} + +static boolean empty_output_buffer(j_compress_ptr cinfo) { + mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest; + dest->pub.next_output_byte = dest->buf; + dest->pub.free_in_buffer = dest->bufsize; + return FALSE; + ERREXIT(cinfo, JERR_BUFFER_SIZE); +} + +static void term_destination(j_compress_ptr cinfo) { + mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest; + dest->jpegsize = dest->bufsize - dest->pub.free_in_buffer; +} + +static void jpeg_mem_dest(j_compress_ptr cinfo, JOCTET* buf, size_t bufsize) { + mem_dest_ptr dest; + if (cinfo->dest == NULL) { + cinfo->dest = (struct jpeg_destination_mgr *) + (*cinfo->mem->alloc_small)((j_common_ptr)cinfo,JPOOL_PERMANENT,sizeof(mem_destination_mgr)); + } + dest = (mem_dest_ptr) cinfo->dest; + dest->pub.init_destination = init_destination; + dest->pub.empty_output_buffer = empty_output_buffer; + dest->pub.term_destination = term_destination; + dest->buf = buf; + dest->bufsize = bufsize; + dest->jpegsize = 0; +} + +static unsigned jpeg_mem_size(j_compress_ptr cinfo) { + mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest; + return dest->jpegsize; +} + +///////////////////////////////////////////////////////////////// +// +// Define main CImg plugin functions. +// (you should use these functions only in your own code) +// +///////////////////////////////////////////////////////////////// + +//! Load image from a jpeg-coded memory buffer. +/** + \param buffer Memory buffer containing the jpeg-coded image data. + \param buffer_size Size of the memory buffer, in bytes. +**/ +static CImg get_load_jpeg_buffer(const JOCTET *const buffer, const unsigned buffer_size) { + struct jpeg_decompress_struct cinfo; + struct jpeg_error_mgr jerr; + cinfo.err = jpeg_std_error(&jerr); + jpeg_create_decompress(&cinfo); + jpeg_mem_src(&cinfo,const_cast(buffer),buffer_size); + jpeg_read_header(&cinfo,TRUE); + jpeg_start_decompress(&cinfo); + + const unsigned int row_stride = cinfo.output_width * cinfo.output_components; + JOCTET *buf = new JOCTET[cinfo.output_width*cinfo.output_height*cinfo.output_components]; + const JOCTET *buf2 = buf; + JSAMPROW row_pointer[1]; + while (cinfo.output_scanline < cinfo.output_height) { + row_pointer[0] = buf + cinfo.output_scanline*row_stride; + jpeg_read_scanlines(&cinfo,row_pointer,1); + } + jpeg_finish_decompress(&cinfo); + jpeg_destroy_decompress(&cinfo); + + CImg dest(cinfo.output_width,cinfo.output_height,1,cinfo.output_components); + switch (dest.spectrum()) { + case 1: { + T *ptr_g = dest.data(0,0,0,0); + cimg_foroff(dest,off) *(ptr_g++) = (T)*(buf2++); + } break; + case 3: { + T + *ptr_r = dest.data(0,0,0,0), + *ptr_g = dest.data(0,0,0,1), + *ptr_b = dest.data(0,0,0,2); + cimg_forXY(dest,x,y) { + *(ptr_r++) = (T)*(buf2++); + *(ptr_g++) = (T)*(buf2++); + *(ptr_b++) = (T)*(buf2++); + } + } break; + case 4: { + T + *ptr_r = dest.data(0,0,0,0), + *ptr_g = dest.data(0,0,0,1), + *ptr_b = dest.data(0,0,0,2), + *ptr_a = dest.data(0,0,0,3); + cimg_forXY(dest,x,y) { + *(ptr_r++) = (T)*(buf2++); + *(ptr_g++) = (T)*(buf2++); + *(ptr_b++) = (T)*(buf2++); + *(ptr_a++) = (T)*(buf2++); + } + } break; + } + delete[] buf; + + return dest; +} + +//! Load image from a jpeg-coded memory buffer (in-place version) +/** + \param buffer Memory buffer containing the jpeg-coded image data. + \param buffer_size Size of the memory buffer, in bytes. +**/ +CImg& load_jpeg_buffer(const JOCTET *const buffer, const unsigned buffer_size) { + return get_load_jpeg_buffer(buffer,buffer_size).move_to(*this); +} + +//! Save image in a memory buffer, directly as a jpeg-coded file +/** + \param buffer Memory buffer that will be written with the jpeg-coded image data. + \param buffer_size Initial size of the memory buffer. When the function returns, the variable + contains the effective length needed to fill the buffer. + \param quality Quality of the jpeg compression. +**/ +const CImg& save_jpeg_buffer(JOCTET *const buffer, unsigned int &buffer_size, const int quality=100) const { + + // Fill pixel buffer + JOCTET *buf; + unsigned int dimbuf=0; + J_COLOR_SPACE colortype=JCS_RGB; + switch (spectrum()) { + case 1: { + // Greyscale images + JOCTET *buf2 = buf = new JOCTET[width()*height()*(dimbuf=1)]; + const T + *ptr_g = data(); + colortype = JCS_GRAYSCALE; + cimg_foroff(*this,off) *(buf2++) = (JOCTET)*(ptr_g++); + } break; + case 2: + case 3: { + // RGB images + JOCTET *buf2 = buf = new JOCTET[width()*height()*(dimbuf=3)]; + const T + *ptr_r = data(0,0,0,0), + *ptr_g = data(0,0,0,1), + *ptr_b = data(0,0,0,spectrum()>2?2:0); + colortype = JCS_RGB; + cimg_forXY(*this,x,y) { + *(buf2++) = (JOCTET)*(ptr_r++); + *(buf2++) = (JOCTET)*(ptr_g++); + *(buf2++) = (JOCTET)*(ptr_b++); + } + } break; + default: { + // YCMYK images + JOCTET *buf2 = buf = new JOCTET[width()*height()*(dimbuf=4)]; + const T + *ptr_r = data(0,0,0,0), + *ptr_g = data(0,0,0,1), + *ptr_b = data(0,0,0,2), + *ptr_a = data(0,0,0,3); + colortype = JCS_CMYK; + cimg_forXY(*this,x,y) { + *(buf2++) = (JOCTET)*(ptr_r++); + *(buf2++) = (JOCTET)*(ptr_g++); + *(buf2++) = (JOCTET)*(ptr_b++); + *(buf2++) = (JOCTET)*(ptr_a++); + } + } break; + } + + // Call libjpeg functions + struct jpeg_compress_struct cinfo; + struct jpeg_error_mgr jerr; + cinfo.err = jpeg_std_error(&jerr); + jpeg_create_compress(&cinfo); + jpeg_mem_dest(&cinfo, buffer, buffer_size); + cinfo.image_width = width(); + cinfo.image_height = height(); + cinfo.input_components = dimbuf; + cinfo.in_color_space = colortype; + jpeg_set_defaults(&cinfo); + jpeg_set_quality(&cinfo,quality<100?quality:100,TRUE); + jpeg_start_compress(&cinfo,TRUE); + + const unsigned int row_stride = width()*dimbuf; + JSAMPROW row_pointer[1]; + while (cinfo.next_scanline < cinfo.image_height) { + row_pointer[0] = &buf[cinfo.next_scanline*row_stride]; + jpeg_write_scanlines(&cinfo,row_pointer,1); + } + jpeg_finish_compress(&cinfo); + delete[] buf; + buffer_size = jpeg_mem_size(&cinfo); + jpeg_destroy_compress(&cinfo); + return *this; +} + +// End of the plug-in +//------------------- +#endif /* cimg_plugin_jpeg_buffer */ diff --git a/plugins/loop_macros.h b/plugins/loop_macros.h new file mode 100644 index 000000000..59343c6e0 --- /dev/null +++ b/plugins/loop_macros.h @@ -0,0 +1,24166 @@ +/* + # + # File : loop_macros.h + # ( C++ header file - CImg plug-in ) + # + # Description : CImg plug-in adding useful loop macros in CImg, in order to + # deal with NxN neighborhoods (where N=10..32) + # and NxNxN neighborhoods (where N=4..8) + # This file has been automatically generated using the loop + # macro generator available in 'examples/generate_loop_macros.cpp' + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_plugin_loop_macros +#define cimg_plugin_loop_macros + +// Define 10x10 loop macros +//------------------------- +#define cimg_for10(bound,i) for (int i = 0, \ + _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5; \ + _n5##i<(int)(bound) || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i) + +#define cimg_for10X(img,x) cimg_for10((img)._width,x) +#define cimg_for10Y(img,y) cimg_for10((img)._height,y) +#define cimg_for10Z(img,z) cimg_for10((img)._depth,z) +#define cimg_for10C(img,c) cimg_for10((img)._spectrum,c) +#define cimg_for10XY(img,x,y) cimg_for10Y(img,y) cimg_for10X(img,x) +#define cimg_for10XZ(img,x,z) cimg_for10Z(img,z) cimg_for10X(img,x) +#define cimg_for10XC(img,x,c) cimg_for10C(img,c) cimg_for10X(img,x) +#define cimg_for10YZ(img,y,z) cimg_for10Z(img,z) cimg_for10Y(img,y) +#define cimg_for10YC(img,y,c) cimg_for10C(img,c) cimg_for10Y(img,y) +#define cimg_for10ZC(img,z,c) cimg_for10C(img,c) cimg_for10Z(img,z) +#define cimg_for10XYZ(img,x,y,z) cimg_for10Z(img,z) cimg_for10XY(img,x,y) +#define cimg_for10XZC(img,x,z,c) cimg_for10C(img,c) cimg_for10XZ(img,x,z) +#define cimg_for10YZC(img,y,z,c) cimg_for10C(img,c) cimg_for10YZ(img,y,z) +#define cimg_for10XYZC(img,x,y,z,c) cimg_for10C(img,c) cimg_for10XYZ(img,x,y,z) + +#define cimg_for_in10(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5; \ + i<=(int)(i1) && (_n5##i<(int)(bound) || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i) + +#define cimg_for_in10X(img,x0,x1,x) cimg_for_in10((img)._width,x0,x1,x) +#define cimg_for_in10Y(img,y0,y1,y) cimg_for_in10((img)._height,y0,y1,y) +#define cimg_for_in10Z(img,z0,z1,z) cimg_for_in10((img)._depth,z0,z1,z) +#define cimg_for_in10C(img,c0,c1,c) cimg_for_in10((img)._spectrum,c0,c1,c) +#define cimg_for_in10XY(img,x0,y0,x1,y1,x,y) cimg_for_in10Y(img,y0,y1,y) cimg_for_in10X(img,x0,x1,x) +#define cimg_for_in10XZ(img,x0,z0,x1,z1,x,z) cimg_for_in10Z(img,z0,z1,z) cimg_for_in10X(img,x0,x1,x) +#define cimg_for_in10XC(img,x0,c0,x1,c1,x,c) cimg_for_in10C(img,c0,c1,c) cimg_for_in10X(img,x0,x1,x) +#define cimg_for_in10YZ(img,y0,z0,y1,z1,y,z) cimg_for_in10Z(img,z0,z1,z) cimg_for_in10Y(img,y0,y1,y) +#define cimg_for_in10YC(img,y0,c0,y1,c1,y,c) cimg_for_in10C(img,c0,c1,c) cimg_for_in10Y(img,y0,y1,y) +#define cimg_for_in10ZC(img,z0,c0,z1,c1,z,c) cimg_for_in10C(img,c0,c1,c) cimg_for_in10Z(img,z0,z1,z) +#define cimg_for_in10XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in10Z(img,z0,z1,z) cimg_for_in10XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in10XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in10C(img,c0,c1,c) cimg_for_in10XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in10YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in10C(img,c0,c1,c) cimg_for_in10YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in10XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in10C(img,c0,c1,c) cimg_for_in10XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for10x10(img,x,y,z,c,I,T) \ + cimg_for10((img)._height,y) for (int x = 0, \ + _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = (T)(img)(0,_p4##y,z,c)), \ + (I[10] = I[11] = I[12] = I[13] = I[14] = (T)(img)(0,_p3##y,z,c)), \ + (I[20] = I[21] = I[22] = I[23] = I[24] = (T)(img)(0,_p2##y,z,c)), \ + (I[30] = I[31] = I[32] = I[33] = I[34] = (T)(img)(0,_p1##y,z,c)), \ + (I[40] = I[41] = I[42] = I[43] = I[44] = (T)(img)(0,y,z,c)), \ + (I[50] = I[51] = I[52] = I[53] = I[54] = (T)(img)(0,_n1##y,z,c)), \ + (I[60] = I[61] = I[62] = I[63] = I[64] = (T)(img)(0,_n2##y,z,c)), \ + (I[70] = I[71] = I[72] = I[73] = I[74] = (T)(img)(0,_n3##y,z,c)), \ + (I[80] = I[81] = I[82] = I[83] = I[84] = (T)(img)(0,_n4##y,z,c)), \ + (I[90] = I[91] = I[92] = I[93] = I[94] = (T)(img)(0,_n5##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[15] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[25] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[35] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[45] = (T)(img)(_n1##x,y,z,c)), \ + (I[55] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[65] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[75] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[85] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[95] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[6] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[16] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[26] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[36] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[46] = (T)(img)(_n2##x,y,z,c)), \ + (I[56] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[66] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[76] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[86] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[96] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[7] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[17] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[27] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[37] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[47] = (T)(img)(_n3##x,y,z,c)), \ + (I[57] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[67] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[77] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[87] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[97] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[8] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[18] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[28] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[38] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[48] = (T)(img)(_n4##x,y,z,c)), \ + (I[58] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[68] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[78] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[88] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[98] = (T)(img)(_n4##x,_n5##y,z,c)), \ + 5>=((img)._width)?(img).width() - 1:5); \ + (_n5##x<(img).width() && ( \ + (I[9] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[19] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[29] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[39] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[49] = (T)(img)(_n5##x,y,z,c)), \ + (I[59] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[69] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[79] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[89] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[99] = (T)(img)(_n5##x,_n5##y,z,c)),1)) || \ + _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], \ + I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], \ + I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], \ + I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], \ + _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x) + +#define cimg_for_in10x10(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in10((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = (int)( \ + (I[0] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[10] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[20] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[30] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[40] = (T)(img)(_p4##x,y,z,c)), \ + (I[50] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[60] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[70] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[80] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[90] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[1] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[11] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[21] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[31] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[41] = (T)(img)(_p3##x,y,z,c)), \ + (I[51] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[61] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[71] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[81] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[91] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[2] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[12] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[22] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[32] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[42] = (T)(img)(_p2##x,y,z,c)), \ + (I[52] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[62] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[72] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[82] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[92] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[3] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[13] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[23] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[33] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[43] = (T)(img)(_p1##x,y,z,c)), \ + (I[53] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[63] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[73] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[83] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[93] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[4] = (T)(img)(x,_p4##y,z,c)), \ + (I[14] = (T)(img)(x,_p3##y,z,c)), \ + (I[24] = (T)(img)(x,_p2##y,z,c)), \ + (I[34] = (T)(img)(x,_p1##y,z,c)), \ + (I[44] = (T)(img)(x,y,z,c)), \ + (I[54] = (T)(img)(x,_n1##y,z,c)), \ + (I[64] = (T)(img)(x,_n2##y,z,c)), \ + (I[74] = (T)(img)(x,_n3##y,z,c)), \ + (I[84] = (T)(img)(x,_n4##y,z,c)), \ + (I[94] = (T)(img)(x,_n5##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[15] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[25] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[35] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[45] = (T)(img)(_n1##x,y,z,c)), \ + (I[55] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[65] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[75] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[85] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[95] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[6] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[16] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[26] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[36] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[46] = (T)(img)(_n2##x,y,z,c)), \ + (I[56] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[66] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[76] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[86] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[96] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[7] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[17] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[27] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[37] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[47] = (T)(img)(_n3##x,y,z,c)), \ + (I[57] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[67] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[77] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[87] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[97] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[8] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[18] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[28] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[38] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[48] = (T)(img)(_n4##x,y,z,c)), \ + (I[58] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[68] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[78] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[88] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[98] = (T)(img)(_n4##x,_n5##y,z,c)), \ + x + 5>=(img).width()?(img).width() - 1:x + 5); \ + x<=(int)(x1) && ((_n5##x<(img).width() && ( \ + (I[9] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[19] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[29] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[39] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[49] = (T)(img)(_n5##x,y,z,c)), \ + (I[59] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[69] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[79] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[89] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[99] = (T)(img)(_n5##x,_n5##y,z,c)),1)) || \ + _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], \ + I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], \ + I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], \ + I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], \ + _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x) + +#define cimg_get10x10(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p4##x,_p4##y,z,c), I[1] = (T)(img)(_p3##x,_p4##y,z,c), I[2] = (T)(img)(_p2##x,_p4##y,z,c), I[3] = (T)(img)(_p1##x,_p4##y,z,c), I[4] = (T)(img)(x,_p4##y,z,c), I[5] = (T)(img)(_n1##x,_p4##y,z,c), I[6] = (T)(img)(_n2##x,_p4##y,z,c), I[7] = (T)(img)(_n3##x,_p4##y,z,c), I[8] = (T)(img)(_n4##x,_p4##y,z,c), I[9] = (T)(img)(_n5##x,_p4##y,z,c), \ + I[10] = (T)(img)(_p4##x,_p3##y,z,c), I[11] = (T)(img)(_p3##x,_p3##y,z,c), I[12] = (T)(img)(_p2##x,_p3##y,z,c), I[13] = (T)(img)(_p1##x,_p3##y,z,c), I[14] = (T)(img)(x,_p3##y,z,c), I[15] = (T)(img)(_n1##x,_p3##y,z,c), I[16] = (T)(img)(_n2##x,_p3##y,z,c), I[17] = (T)(img)(_n3##x,_p3##y,z,c), I[18] = (T)(img)(_n4##x,_p3##y,z,c), I[19] = (T)(img)(_n5##x,_p3##y,z,c), \ + I[20] = (T)(img)(_p4##x,_p2##y,z,c), I[21] = (T)(img)(_p3##x,_p2##y,z,c), I[22] = (T)(img)(_p2##x,_p2##y,z,c), I[23] = (T)(img)(_p1##x,_p2##y,z,c), I[24] = (T)(img)(x,_p2##y,z,c), I[25] = (T)(img)(_n1##x,_p2##y,z,c), I[26] = (T)(img)(_n2##x,_p2##y,z,c), I[27] = (T)(img)(_n3##x,_p2##y,z,c), I[28] = (T)(img)(_n4##x,_p2##y,z,c), I[29] = (T)(img)(_n5##x,_p2##y,z,c), \ + I[30] = (T)(img)(_p4##x,_p1##y,z,c), I[31] = (T)(img)(_p3##x,_p1##y,z,c), I[32] = (T)(img)(_p2##x,_p1##y,z,c), I[33] = (T)(img)(_p1##x,_p1##y,z,c), I[34] = (T)(img)(x,_p1##y,z,c), I[35] = (T)(img)(_n1##x,_p1##y,z,c), I[36] = (T)(img)(_n2##x,_p1##y,z,c), I[37] = (T)(img)(_n3##x,_p1##y,z,c), I[38] = (T)(img)(_n4##x,_p1##y,z,c), I[39] = (T)(img)(_n5##x,_p1##y,z,c), \ + I[40] = (T)(img)(_p4##x,y,z,c), I[41] = (T)(img)(_p3##x,y,z,c), I[42] = (T)(img)(_p2##x,y,z,c), I[43] = (T)(img)(_p1##x,y,z,c), I[44] = (T)(img)(x,y,z,c), I[45] = (T)(img)(_n1##x,y,z,c), I[46] = (T)(img)(_n2##x,y,z,c), I[47] = (T)(img)(_n3##x,y,z,c), I[48] = (T)(img)(_n4##x,y,z,c), I[49] = (T)(img)(_n5##x,y,z,c), \ + I[50] = (T)(img)(_p4##x,_n1##y,z,c), I[51] = (T)(img)(_p3##x,_n1##y,z,c), I[52] = (T)(img)(_p2##x,_n1##y,z,c), I[53] = (T)(img)(_p1##x,_n1##y,z,c), I[54] = (T)(img)(x,_n1##y,z,c), I[55] = (T)(img)(_n1##x,_n1##y,z,c), I[56] = (T)(img)(_n2##x,_n1##y,z,c), I[57] = (T)(img)(_n3##x,_n1##y,z,c), I[58] = (T)(img)(_n4##x,_n1##y,z,c), I[59] = (T)(img)(_n5##x,_n1##y,z,c), \ + I[60] = (T)(img)(_p4##x,_n2##y,z,c), I[61] = (T)(img)(_p3##x,_n2##y,z,c), I[62] = (T)(img)(_p2##x,_n2##y,z,c), I[63] = (T)(img)(_p1##x,_n2##y,z,c), I[64] = (T)(img)(x,_n2##y,z,c), I[65] = (T)(img)(_n1##x,_n2##y,z,c), I[66] = (T)(img)(_n2##x,_n2##y,z,c), I[67] = (T)(img)(_n3##x,_n2##y,z,c), I[68] = (T)(img)(_n4##x,_n2##y,z,c), I[69] = (T)(img)(_n5##x,_n2##y,z,c), \ + I[70] = (T)(img)(_p4##x,_n3##y,z,c), I[71] = (T)(img)(_p3##x,_n3##y,z,c), I[72] = (T)(img)(_p2##x,_n3##y,z,c), I[73] = (T)(img)(_p1##x,_n3##y,z,c), I[74] = (T)(img)(x,_n3##y,z,c), I[75] = (T)(img)(_n1##x,_n3##y,z,c), I[76] = (T)(img)(_n2##x,_n3##y,z,c), I[77] = (T)(img)(_n3##x,_n3##y,z,c), I[78] = (T)(img)(_n4##x,_n3##y,z,c), I[79] = (T)(img)(_n5##x,_n3##y,z,c), \ + I[80] = (T)(img)(_p4##x,_n4##y,z,c), I[81] = (T)(img)(_p3##x,_n4##y,z,c), I[82] = (T)(img)(_p2##x,_n4##y,z,c), I[83] = (T)(img)(_p1##x,_n4##y,z,c), I[84] = (T)(img)(x,_n4##y,z,c), I[85] = (T)(img)(_n1##x,_n4##y,z,c), I[86] = (T)(img)(_n2##x,_n4##y,z,c), I[87] = (T)(img)(_n3##x,_n4##y,z,c), I[88] = (T)(img)(_n4##x,_n4##y,z,c), I[89] = (T)(img)(_n5##x,_n4##y,z,c), \ + I[90] = (T)(img)(_p4##x,_n5##y,z,c), I[91] = (T)(img)(_p3##x,_n5##y,z,c), I[92] = (T)(img)(_p2##x,_n5##y,z,c), I[93] = (T)(img)(_p1##x,_n5##y,z,c), I[94] = (T)(img)(x,_n5##y,z,c), I[95] = (T)(img)(_n1##x,_n5##y,z,c), I[96] = (T)(img)(_n2##x,_n5##y,z,c), I[97] = (T)(img)(_n3##x,_n5##y,z,c), I[98] = (T)(img)(_n4##x,_n5##y,z,c), I[99] = (T)(img)(_n5##x,_n5##y,z,c); + +// Define 11x11 loop macros +//------------------------- +#define cimg_for11(bound,i) for (int i = 0, \ + _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5; \ + _n5##i<(int)(bound) || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i) + +#define cimg_for11X(img,x) cimg_for11((img)._width,x) +#define cimg_for11Y(img,y) cimg_for11((img)._height,y) +#define cimg_for11Z(img,z) cimg_for11((img)._depth,z) +#define cimg_for11C(img,c) cimg_for11((img)._spectrum,c) +#define cimg_for11XY(img,x,y) cimg_for11Y(img,y) cimg_for11X(img,x) +#define cimg_for11XZ(img,x,z) cimg_for11Z(img,z) cimg_for11X(img,x) +#define cimg_for11XC(img,x,c) cimg_for11C(img,c) cimg_for11X(img,x) +#define cimg_for11YZ(img,y,z) cimg_for11Z(img,z) cimg_for11Y(img,y) +#define cimg_for11YC(img,y,c) cimg_for11C(img,c) cimg_for11Y(img,y) +#define cimg_for11ZC(img,z,c) cimg_for11C(img,c) cimg_for11Z(img,z) +#define cimg_for11XYZ(img,x,y,z) cimg_for11Z(img,z) cimg_for11XY(img,x,y) +#define cimg_for11XZC(img,x,z,c) cimg_for11C(img,c) cimg_for11XZ(img,x,z) +#define cimg_for11YZC(img,y,z,c) cimg_for11C(img,c) cimg_for11YZ(img,y,z) +#define cimg_for11XYZC(img,x,y,z,c) cimg_for11C(img,c) cimg_for11XYZ(img,x,y,z) + +#define cimg_for_in11(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5; \ + i<=(int)(i1) && (_n5##i<(int)(bound) || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i) + +#define cimg_for_in11X(img,x0,x1,x) cimg_for_in11((img)._width,x0,x1,x) +#define cimg_for_in11Y(img,y0,y1,y) cimg_for_in11((img)._height,y0,y1,y) +#define cimg_for_in11Z(img,z0,z1,z) cimg_for_in11((img)._depth,z0,z1,z) +#define cimg_for_in11C(img,c0,c1,c) cimg_for_in11((img)._spectrum,c0,c1,c) +#define cimg_for_in11XY(img,x0,y0,x1,y1,x,y) cimg_for_in11Y(img,y0,y1,y) cimg_for_in11X(img,x0,x1,x) +#define cimg_for_in11XZ(img,x0,z0,x1,z1,x,z) cimg_for_in11Z(img,z0,z1,z) cimg_for_in11X(img,x0,x1,x) +#define cimg_for_in11XC(img,x0,c0,x1,c1,x,c) cimg_for_in11C(img,c0,c1,c) cimg_for_in11X(img,x0,x1,x) +#define cimg_for_in11YZ(img,y0,z0,y1,z1,y,z) cimg_for_in11Z(img,z0,z1,z) cimg_for_in11Y(img,y0,y1,y) +#define cimg_for_in11YC(img,y0,c0,y1,c1,y,c) cimg_for_in11C(img,c0,c1,c) cimg_for_in11Y(img,y0,y1,y) +#define cimg_for_in11ZC(img,z0,c0,z1,c1,z,c) cimg_for_in11C(img,c0,c1,c) cimg_for_in11Z(img,z0,z1,z) +#define cimg_for_in11XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in11Z(img,z0,z1,z) cimg_for_in11XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in11XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in11C(img,c0,c1,c) cimg_for_in11XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in11YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in11C(img,c0,c1,c) cimg_for_in11YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in11XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in11C(img,c0,c1,c) cimg_for_in11XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for11x11(img,x,y,z,c,I,T) \ + cimg_for11((img)._height,y) for (int x = 0, \ + _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = (T)(img)(0,_p5##y,z,c)), \ + (I[11] = I[12] = I[13] = I[14] = I[15] = I[16] = (T)(img)(0,_p4##y,z,c)), \ + (I[22] = I[23] = I[24] = I[25] = I[26] = I[27] = (T)(img)(0,_p3##y,z,c)), \ + (I[33] = I[34] = I[35] = I[36] = I[37] = I[38] = (T)(img)(0,_p2##y,z,c)), \ + (I[44] = I[45] = I[46] = I[47] = I[48] = I[49] = (T)(img)(0,_p1##y,z,c)), \ + (I[55] = I[56] = I[57] = I[58] = I[59] = I[60] = (T)(img)(0,y,z,c)), \ + (I[66] = I[67] = I[68] = I[69] = I[70] = I[71] = (T)(img)(0,_n1##y,z,c)), \ + (I[77] = I[78] = I[79] = I[80] = I[81] = I[82] = (T)(img)(0,_n2##y,z,c)), \ + (I[88] = I[89] = I[90] = I[91] = I[92] = I[93] = (T)(img)(0,_n3##y,z,c)), \ + (I[99] = I[100] = I[101] = I[102] = I[103] = I[104] = (T)(img)(0,_n4##y,z,c)), \ + (I[110] = I[111] = I[112] = I[113] = I[114] = I[115] = (T)(img)(0,_n5##y,z,c)), \ + (I[6] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[17] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[28] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[39] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[50] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[61] = (T)(img)(_n1##x,y,z,c)), \ + (I[72] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[83] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[94] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[105] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[116] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[7] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[18] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[29] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[40] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[51] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[62] = (T)(img)(_n2##x,y,z,c)), \ + (I[73] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[84] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[95] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[106] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[117] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[8] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[19] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[30] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[41] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[52] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[63] = (T)(img)(_n3##x,y,z,c)), \ + (I[74] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[85] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[96] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[107] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[118] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[9] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[20] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[31] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[42] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[53] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[64] = (T)(img)(_n4##x,y,z,c)), \ + (I[75] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[86] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[97] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[108] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[119] = (T)(img)(_n4##x,_n5##y,z,c)), \ + 5>=((img)._width)?(img).width() - 1:5); \ + (_n5##x<(img).width() && ( \ + (I[10] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[21] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[32] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[43] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[54] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[65] = (T)(img)(_n5##x,y,z,c)), \ + (I[76] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[87] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[98] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[109] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[120] = (T)(img)(_n5##x,_n5##y,z,c)),1)) || \ + _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], \ + I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], \ + I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], \ + I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], \ + I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], \ + I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], \ + I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], \ + I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], \ + I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], \ + I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], \ + I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], \ + _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x) + +#define cimg_for_in11x11(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in11((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = (int)( \ + (I[0] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[11] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[22] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[33] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[44] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[55] = (T)(img)(_p5##x,y,z,c)), \ + (I[66] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[77] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[88] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[99] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[110] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[1] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[12] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[23] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[34] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[45] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[56] = (T)(img)(_p4##x,y,z,c)), \ + (I[67] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[78] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[89] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[100] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[111] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[2] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[13] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[24] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[35] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[46] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[57] = (T)(img)(_p3##x,y,z,c)), \ + (I[68] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[79] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[90] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[101] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[112] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[3] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[14] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[25] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[36] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[47] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[58] = (T)(img)(_p2##x,y,z,c)), \ + (I[69] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[80] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[91] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[102] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[113] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[4] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[15] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[26] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[37] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[48] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[59] = (T)(img)(_p1##x,y,z,c)), \ + (I[70] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[81] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[92] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[103] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[114] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[5] = (T)(img)(x,_p5##y,z,c)), \ + (I[16] = (T)(img)(x,_p4##y,z,c)), \ + (I[27] = (T)(img)(x,_p3##y,z,c)), \ + (I[38] = (T)(img)(x,_p2##y,z,c)), \ + (I[49] = (T)(img)(x,_p1##y,z,c)), \ + (I[60] = (T)(img)(x,y,z,c)), \ + (I[71] = (T)(img)(x,_n1##y,z,c)), \ + (I[82] = (T)(img)(x,_n2##y,z,c)), \ + (I[93] = (T)(img)(x,_n3##y,z,c)), \ + (I[104] = (T)(img)(x,_n4##y,z,c)), \ + (I[115] = (T)(img)(x,_n5##y,z,c)), \ + (I[6] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[17] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[28] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[39] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[50] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[61] = (T)(img)(_n1##x,y,z,c)), \ + (I[72] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[83] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[94] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[105] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[116] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[7] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[18] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[29] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[40] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[51] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[62] = (T)(img)(_n2##x,y,z,c)), \ + (I[73] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[84] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[95] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[106] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[117] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[8] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[19] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[30] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[41] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[52] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[63] = (T)(img)(_n3##x,y,z,c)), \ + (I[74] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[85] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[96] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[107] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[118] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[9] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[20] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[31] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[42] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[53] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[64] = (T)(img)(_n4##x,y,z,c)), \ + (I[75] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[86] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[97] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[108] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[119] = (T)(img)(_n4##x,_n5##y,z,c)), \ + x + 5>=(img).width()?(img).width() - 1:x + 5); \ + x<=(int)(x1) && ((_n5##x<(img).width() && ( \ + (I[10] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[21] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[32] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[43] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[54] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[65] = (T)(img)(_n5##x,y,z,c)), \ + (I[76] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[87] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[98] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[109] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[120] = (T)(img)(_n5##x,_n5##y,z,c)),1)) || \ + _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], \ + I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], \ + I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], \ + I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], \ + I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], \ + I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], \ + I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], \ + I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], \ + I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], \ + I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], \ + I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], \ + _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x) + +#define cimg_get11x11(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p5##x,_p5##y,z,c), I[1] = (T)(img)(_p4##x,_p5##y,z,c), I[2] = (T)(img)(_p3##x,_p5##y,z,c), I[3] = (T)(img)(_p2##x,_p5##y,z,c), I[4] = (T)(img)(_p1##x,_p5##y,z,c), I[5] = (T)(img)(x,_p5##y,z,c), I[6] = (T)(img)(_n1##x,_p5##y,z,c), I[7] = (T)(img)(_n2##x,_p5##y,z,c), I[8] = (T)(img)(_n3##x,_p5##y,z,c), I[9] = (T)(img)(_n4##x,_p5##y,z,c), I[10] = (T)(img)(_n5##x,_p5##y,z,c), \ + I[11] = (T)(img)(_p5##x,_p4##y,z,c), I[12] = (T)(img)(_p4##x,_p4##y,z,c), I[13] = (T)(img)(_p3##x,_p4##y,z,c), I[14] = (T)(img)(_p2##x,_p4##y,z,c), I[15] = (T)(img)(_p1##x,_p4##y,z,c), I[16] = (T)(img)(x,_p4##y,z,c), I[17] = (T)(img)(_n1##x,_p4##y,z,c), I[18] = (T)(img)(_n2##x,_p4##y,z,c), I[19] = (T)(img)(_n3##x,_p4##y,z,c), I[20] = (T)(img)(_n4##x,_p4##y,z,c), I[21] = (T)(img)(_n5##x,_p4##y,z,c), \ + I[22] = (T)(img)(_p5##x,_p3##y,z,c), I[23] = (T)(img)(_p4##x,_p3##y,z,c), I[24] = (T)(img)(_p3##x,_p3##y,z,c), I[25] = (T)(img)(_p2##x,_p3##y,z,c), I[26] = (T)(img)(_p1##x,_p3##y,z,c), I[27] = (T)(img)(x,_p3##y,z,c), I[28] = (T)(img)(_n1##x,_p3##y,z,c), I[29] = (T)(img)(_n2##x,_p3##y,z,c), I[30] = (T)(img)(_n3##x,_p3##y,z,c), I[31] = (T)(img)(_n4##x,_p3##y,z,c), I[32] = (T)(img)(_n5##x,_p3##y,z,c), \ + I[33] = (T)(img)(_p5##x,_p2##y,z,c), I[34] = (T)(img)(_p4##x,_p2##y,z,c), I[35] = (T)(img)(_p3##x,_p2##y,z,c), I[36] = (T)(img)(_p2##x,_p2##y,z,c), I[37] = (T)(img)(_p1##x,_p2##y,z,c), I[38] = (T)(img)(x,_p2##y,z,c), I[39] = (T)(img)(_n1##x,_p2##y,z,c), I[40] = (T)(img)(_n2##x,_p2##y,z,c), I[41] = (T)(img)(_n3##x,_p2##y,z,c), I[42] = (T)(img)(_n4##x,_p2##y,z,c), I[43] = (T)(img)(_n5##x,_p2##y,z,c), \ + I[44] = (T)(img)(_p5##x,_p1##y,z,c), I[45] = (T)(img)(_p4##x,_p1##y,z,c), I[46] = (T)(img)(_p3##x,_p1##y,z,c), I[47] = (T)(img)(_p2##x,_p1##y,z,c), I[48] = (T)(img)(_p1##x,_p1##y,z,c), I[49] = (T)(img)(x,_p1##y,z,c), I[50] = (T)(img)(_n1##x,_p1##y,z,c), I[51] = (T)(img)(_n2##x,_p1##y,z,c), I[52] = (T)(img)(_n3##x,_p1##y,z,c), I[53] = (T)(img)(_n4##x,_p1##y,z,c), I[54] = (T)(img)(_n5##x,_p1##y,z,c), \ + I[55] = (T)(img)(_p5##x,y,z,c), I[56] = (T)(img)(_p4##x,y,z,c), I[57] = (T)(img)(_p3##x,y,z,c), I[58] = (T)(img)(_p2##x,y,z,c), I[59] = (T)(img)(_p1##x,y,z,c), I[60] = (T)(img)(x,y,z,c), I[61] = (T)(img)(_n1##x,y,z,c), I[62] = (T)(img)(_n2##x,y,z,c), I[63] = (T)(img)(_n3##x,y,z,c), I[64] = (T)(img)(_n4##x,y,z,c), I[65] = (T)(img)(_n5##x,y,z,c), \ + I[66] = (T)(img)(_p5##x,_n1##y,z,c), I[67] = (T)(img)(_p4##x,_n1##y,z,c), I[68] = (T)(img)(_p3##x,_n1##y,z,c), I[69] = (T)(img)(_p2##x,_n1##y,z,c), I[70] = (T)(img)(_p1##x,_n1##y,z,c), I[71] = (T)(img)(x,_n1##y,z,c), I[72] = (T)(img)(_n1##x,_n1##y,z,c), I[73] = (T)(img)(_n2##x,_n1##y,z,c), I[74] = (T)(img)(_n3##x,_n1##y,z,c), I[75] = (T)(img)(_n4##x,_n1##y,z,c), I[76] = (T)(img)(_n5##x,_n1##y,z,c), \ + I[77] = (T)(img)(_p5##x,_n2##y,z,c), I[78] = (T)(img)(_p4##x,_n2##y,z,c), I[79] = (T)(img)(_p3##x,_n2##y,z,c), I[80] = (T)(img)(_p2##x,_n2##y,z,c), I[81] = (T)(img)(_p1##x,_n2##y,z,c), I[82] = (T)(img)(x,_n2##y,z,c), I[83] = (T)(img)(_n1##x,_n2##y,z,c), I[84] = (T)(img)(_n2##x,_n2##y,z,c), I[85] = (T)(img)(_n3##x,_n2##y,z,c), I[86] = (T)(img)(_n4##x,_n2##y,z,c), I[87] = (T)(img)(_n5##x,_n2##y,z,c), \ + I[88] = (T)(img)(_p5##x,_n3##y,z,c), I[89] = (T)(img)(_p4##x,_n3##y,z,c), I[90] = (T)(img)(_p3##x,_n3##y,z,c), I[91] = (T)(img)(_p2##x,_n3##y,z,c), I[92] = (T)(img)(_p1##x,_n3##y,z,c), I[93] = (T)(img)(x,_n3##y,z,c), I[94] = (T)(img)(_n1##x,_n3##y,z,c), I[95] = (T)(img)(_n2##x,_n3##y,z,c), I[96] = (T)(img)(_n3##x,_n3##y,z,c), I[97] = (T)(img)(_n4##x,_n3##y,z,c), I[98] = (T)(img)(_n5##x,_n3##y,z,c), \ + I[99] = (T)(img)(_p5##x,_n4##y,z,c), I[100] = (T)(img)(_p4##x,_n4##y,z,c), I[101] = (T)(img)(_p3##x,_n4##y,z,c), I[102] = (T)(img)(_p2##x,_n4##y,z,c), I[103] = (T)(img)(_p1##x,_n4##y,z,c), I[104] = (T)(img)(x,_n4##y,z,c), I[105] = (T)(img)(_n1##x,_n4##y,z,c), I[106] = (T)(img)(_n2##x,_n4##y,z,c), I[107] = (T)(img)(_n3##x,_n4##y,z,c), I[108] = (T)(img)(_n4##x,_n4##y,z,c), I[109] = (T)(img)(_n5##x,_n4##y,z,c), \ + I[110] = (T)(img)(_p5##x,_n5##y,z,c), I[111] = (T)(img)(_p4##x,_n5##y,z,c), I[112] = (T)(img)(_p3##x,_n5##y,z,c), I[113] = (T)(img)(_p2##x,_n5##y,z,c), I[114] = (T)(img)(_p1##x,_n5##y,z,c), I[115] = (T)(img)(x,_n5##y,z,c), I[116] = (T)(img)(_n1##x,_n5##y,z,c), I[117] = (T)(img)(_n2##x,_n5##y,z,c), I[118] = (T)(img)(_n3##x,_n5##y,z,c), I[119] = (T)(img)(_n4##x,_n5##y,z,c), I[120] = (T)(img)(_n5##x,_n5##y,z,c); + +// Define 12x12 loop macros +//------------------------- +#define cimg_for12(bound,i) for (int i = 0, \ + _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6; \ + _n6##i<(int)(bound) || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i) + +#define cimg_for12X(img,x) cimg_for12((img)._width,x) +#define cimg_for12Y(img,y) cimg_for12((img)._height,y) +#define cimg_for12Z(img,z) cimg_for12((img)._depth,z) +#define cimg_for12C(img,c) cimg_for12((img)._spectrum,c) +#define cimg_for12XY(img,x,y) cimg_for12Y(img,y) cimg_for12X(img,x) +#define cimg_for12XZ(img,x,z) cimg_for12Z(img,z) cimg_for12X(img,x) +#define cimg_for12XC(img,x,c) cimg_for12C(img,c) cimg_for12X(img,x) +#define cimg_for12YZ(img,y,z) cimg_for12Z(img,z) cimg_for12Y(img,y) +#define cimg_for12YC(img,y,c) cimg_for12C(img,c) cimg_for12Y(img,y) +#define cimg_for12ZC(img,z,c) cimg_for12C(img,c) cimg_for12Z(img,z) +#define cimg_for12XYZ(img,x,y,z) cimg_for12Z(img,z) cimg_for12XY(img,x,y) +#define cimg_for12XZC(img,x,z,c) cimg_for12C(img,c) cimg_for12XZ(img,x,z) +#define cimg_for12YZC(img,y,z,c) cimg_for12C(img,c) cimg_for12YZ(img,y,z) +#define cimg_for12XYZC(img,x,y,z,c) cimg_for12C(img,c) cimg_for12XYZ(img,x,y,z) + +#define cimg_for_in12(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6; \ + i<=(int)(i1) && (_n6##i<(int)(bound) || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i) + +#define cimg_for_in12X(img,x0,x1,x) cimg_for_in12((img)._width,x0,x1,x) +#define cimg_for_in12Y(img,y0,y1,y) cimg_for_in12((img)._height,y0,y1,y) +#define cimg_for_in12Z(img,z0,z1,z) cimg_for_in12((img)._depth,z0,z1,z) +#define cimg_for_in12C(img,c0,c1,c) cimg_for_in12((img)._spectrum,c0,c1,c) +#define cimg_for_in12XY(img,x0,y0,x1,y1,x,y) cimg_for_in12Y(img,y0,y1,y) cimg_for_in12X(img,x0,x1,x) +#define cimg_for_in12XZ(img,x0,z0,x1,z1,x,z) cimg_for_in12Z(img,z0,z1,z) cimg_for_in12X(img,x0,x1,x) +#define cimg_for_in12XC(img,x0,c0,x1,c1,x,c) cimg_for_in12C(img,c0,c1,c) cimg_for_in12X(img,x0,x1,x) +#define cimg_for_in12YZ(img,y0,z0,y1,z1,y,z) cimg_for_in12Z(img,z0,z1,z) cimg_for_in12Y(img,y0,y1,y) +#define cimg_for_in12YC(img,y0,c0,y1,c1,y,c) cimg_for_in12C(img,c0,c1,c) cimg_for_in12Y(img,y0,y1,y) +#define cimg_for_in12ZC(img,z0,c0,z1,c1,z,c) cimg_for_in12C(img,c0,c1,c) cimg_for_in12Z(img,z0,z1,z) +#define cimg_for_in12XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in12Z(img,z0,z1,z) cimg_for_in12XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in12XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in12C(img,c0,c1,c) cimg_for_in12XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in12YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in12C(img,c0,c1,c) cimg_for_in12YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in12XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in12C(img,c0,c1,c) cimg_for_in12XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for12x12(img,x,y,z,c,I,T) \ + cimg_for12((img)._height,y) for (int x = 0, \ + _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = (T)(img)(0,_p5##y,z,c)), \ + (I[12] = I[13] = I[14] = I[15] = I[16] = I[17] = (T)(img)(0,_p4##y,z,c)), \ + (I[24] = I[25] = I[26] = I[27] = I[28] = I[29] = (T)(img)(0,_p3##y,z,c)), \ + (I[36] = I[37] = I[38] = I[39] = I[40] = I[41] = (T)(img)(0,_p2##y,z,c)), \ + (I[48] = I[49] = I[50] = I[51] = I[52] = I[53] = (T)(img)(0,_p1##y,z,c)), \ + (I[60] = I[61] = I[62] = I[63] = I[64] = I[65] = (T)(img)(0,y,z,c)), \ + (I[72] = I[73] = I[74] = I[75] = I[76] = I[77] = (T)(img)(0,_n1##y,z,c)), \ + (I[84] = I[85] = I[86] = I[87] = I[88] = I[89] = (T)(img)(0,_n2##y,z,c)), \ + (I[96] = I[97] = I[98] = I[99] = I[100] = I[101] = (T)(img)(0,_n3##y,z,c)), \ + (I[108] = I[109] = I[110] = I[111] = I[112] = I[113] = (T)(img)(0,_n4##y,z,c)), \ + (I[120] = I[121] = I[122] = I[123] = I[124] = I[125] = (T)(img)(0,_n5##y,z,c)), \ + (I[132] = I[133] = I[134] = I[135] = I[136] = I[137] = (T)(img)(0,_n6##y,z,c)), \ + (I[6] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[18] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[30] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[42] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[54] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[66] = (T)(img)(_n1##x,y,z,c)), \ + (I[78] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[90] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[102] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[114] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[126] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[138] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[7] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[19] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[31] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[43] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[55] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[67] = (T)(img)(_n2##x,y,z,c)), \ + (I[79] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[91] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[103] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[115] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[127] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[139] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[8] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[20] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[32] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[44] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[56] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[68] = (T)(img)(_n3##x,y,z,c)), \ + (I[80] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[92] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[104] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[116] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[128] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[140] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[9] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[21] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[33] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[45] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[57] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[69] = (T)(img)(_n4##x,y,z,c)), \ + (I[81] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[93] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[105] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[117] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[129] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[141] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[10] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[22] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[34] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[46] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[58] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[70] = (T)(img)(_n5##x,y,z,c)), \ + (I[82] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[94] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[106] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[118] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[130] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[142] = (T)(img)(_n5##x,_n6##y,z,c)), \ + 6>=((img)._width)?(img).width() - 1:6); \ + (_n6##x<(img).width() && ( \ + (I[11] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[23] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[35] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[47] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[59] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[71] = (T)(img)(_n6##x,y,z,c)), \ + (I[83] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[95] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[107] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[119] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[131] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[143] = (T)(img)(_n6##x,_n6##y,z,c)),1)) || \ + _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], \ + I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], \ + I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x) + +#define cimg_for_in12x12(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in12((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = (int)( \ + (I[0] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[12] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[24] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[36] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[48] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[60] = (T)(img)(_p5##x,y,z,c)), \ + (I[72] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[84] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[96] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[108] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[120] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[132] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[1] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[13] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[25] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[37] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[49] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[61] = (T)(img)(_p4##x,y,z,c)), \ + (I[73] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[85] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[97] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[109] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[121] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[133] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[2] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[14] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[26] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[38] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[50] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[62] = (T)(img)(_p3##x,y,z,c)), \ + (I[74] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[86] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[98] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[110] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[122] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[134] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[3] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[15] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[27] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[39] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[51] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[63] = (T)(img)(_p2##x,y,z,c)), \ + (I[75] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[87] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[99] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[111] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[123] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[135] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[4] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[16] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[28] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[40] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[52] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[64] = (T)(img)(_p1##x,y,z,c)), \ + (I[76] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[88] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[100] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[112] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[124] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[136] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[5] = (T)(img)(x,_p5##y,z,c)), \ + (I[17] = (T)(img)(x,_p4##y,z,c)), \ + (I[29] = (T)(img)(x,_p3##y,z,c)), \ + (I[41] = (T)(img)(x,_p2##y,z,c)), \ + (I[53] = (T)(img)(x,_p1##y,z,c)), \ + (I[65] = (T)(img)(x,y,z,c)), \ + (I[77] = (T)(img)(x,_n1##y,z,c)), \ + (I[89] = (T)(img)(x,_n2##y,z,c)), \ + (I[101] = (T)(img)(x,_n3##y,z,c)), \ + (I[113] = (T)(img)(x,_n4##y,z,c)), \ + (I[125] = (T)(img)(x,_n5##y,z,c)), \ + (I[137] = (T)(img)(x,_n6##y,z,c)), \ + (I[6] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[18] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[30] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[42] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[54] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[66] = (T)(img)(_n1##x,y,z,c)), \ + (I[78] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[90] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[102] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[114] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[126] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[138] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[7] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[19] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[31] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[43] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[55] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[67] = (T)(img)(_n2##x,y,z,c)), \ + (I[79] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[91] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[103] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[115] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[127] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[139] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[8] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[20] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[32] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[44] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[56] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[68] = (T)(img)(_n3##x,y,z,c)), \ + (I[80] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[92] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[104] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[116] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[128] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[140] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[9] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[21] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[33] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[45] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[57] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[69] = (T)(img)(_n4##x,y,z,c)), \ + (I[81] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[93] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[105] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[117] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[129] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[141] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[10] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[22] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[34] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[46] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[58] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[70] = (T)(img)(_n5##x,y,z,c)), \ + (I[82] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[94] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[106] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[118] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[130] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[142] = (T)(img)(_n5##x,_n6##y,z,c)), \ + x + 6>=(img).width()?(img).width() - 1:x + 6); \ + x<=(int)(x1) && ((_n6##x<(img).width() && ( \ + (I[11] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[23] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[35] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[47] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[59] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[71] = (T)(img)(_n6##x,y,z,c)), \ + (I[83] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[95] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[107] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[119] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[131] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[143] = (T)(img)(_n6##x,_n6##y,z,c)),1)) || \ + _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], \ + I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], \ + I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x) + +#define cimg_get12x12(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p5##x,_p5##y,z,c), I[1] = (T)(img)(_p4##x,_p5##y,z,c), I[2] = (T)(img)(_p3##x,_p5##y,z,c), I[3] = (T)(img)(_p2##x,_p5##y,z,c), I[4] = (T)(img)(_p1##x,_p5##y,z,c), I[5] = (T)(img)(x,_p5##y,z,c), I[6] = (T)(img)(_n1##x,_p5##y,z,c), I[7] = (T)(img)(_n2##x,_p5##y,z,c), I[8] = (T)(img)(_n3##x,_p5##y,z,c), I[9] = (T)(img)(_n4##x,_p5##y,z,c), I[10] = (T)(img)(_n5##x,_p5##y,z,c), I[11] = (T)(img)(_n6##x,_p5##y,z,c), \ + I[12] = (T)(img)(_p5##x,_p4##y,z,c), I[13] = (T)(img)(_p4##x,_p4##y,z,c), I[14] = (T)(img)(_p3##x,_p4##y,z,c), I[15] = (T)(img)(_p2##x,_p4##y,z,c), I[16] = (T)(img)(_p1##x,_p4##y,z,c), I[17] = (T)(img)(x,_p4##y,z,c), I[18] = (T)(img)(_n1##x,_p4##y,z,c), I[19] = (T)(img)(_n2##x,_p4##y,z,c), I[20] = (T)(img)(_n3##x,_p4##y,z,c), I[21] = (T)(img)(_n4##x,_p4##y,z,c), I[22] = (T)(img)(_n5##x,_p4##y,z,c), I[23] = (T)(img)(_n6##x,_p4##y,z,c), \ + I[24] = (T)(img)(_p5##x,_p3##y,z,c), I[25] = (T)(img)(_p4##x,_p3##y,z,c), I[26] = (T)(img)(_p3##x,_p3##y,z,c), I[27] = (T)(img)(_p2##x,_p3##y,z,c), I[28] = (T)(img)(_p1##x,_p3##y,z,c), I[29] = (T)(img)(x,_p3##y,z,c), I[30] = (T)(img)(_n1##x,_p3##y,z,c), I[31] = (T)(img)(_n2##x,_p3##y,z,c), I[32] = (T)(img)(_n3##x,_p3##y,z,c), I[33] = (T)(img)(_n4##x,_p3##y,z,c), I[34] = (T)(img)(_n5##x,_p3##y,z,c), I[35] = (T)(img)(_n6##x,_p3##y,z,c), \ + I[36] = (T)(img)(_p5##x,_p2##y,z,c), I[37] = (T)(img)(_p4##x,_p2##y,z,c), I[38] = (T)(img)(_p3##x,_p2##y,z,c), I[39] = (T)(img)(_p2##x,_p2##y,z,c), I[40] = (T)(img)(_p1##x,_p2##y,z,c), I[41] = (T)(img)(x,_p2##y,z,c), I[42] = (T)(img)(_n1##x,_p2##y,z,c), I[43] = (T)(img)(_n2##x,_p2##y,z,c), I[44] = (T)(img)(_n3##x,_p2##y,z,c), I[45] = (T)(img)(_n4##x,_p2##y,z,c), I[46] = (T)(img)(_n5##x,_p2##y,z,c), I[47] = (T)(img)(_n6##x,_p2##y,z,c), \ + I[48] = (T)(img)(_p5##x,_p1##y,z,c), I[49] = (T)(img)(_p4##x,_p1##y,z,c), I[50] = (T)(img)(_p3##x,_p1##y,z,c), I[51] = (T)(img)(_p2##x,_p1##y,z,c), I[52] = (T)(img)(_p1##x,_p1##y,z,c), I[53] = (T)(img)(x,_p1##y,z,c), I[54] = (T)(img)(_n1##x,_p1##y,z,c), I[55] = (T)(img)(_n2##x,_p1##y,z,c), I[56] = (T)(img)(_n3##x,_p1##y,z,c), I[57] = (T)(img)(_n4##x,_p1##y,z,c), I[58] = (T)(img)(_n5##x,_p1##y,z,c), I[59] = (T)(img)(_n6##x,_p1##y,z,c), \ + I[60] = (T)(img)(_p5##x,y,z,c), I[61] = (T)(img)(_p4##x,y,z,c), I[62] = (T)(img)(_p3##x,y,z,c), I[63] = (T)(img)(_p2##x,y,z,c), I[64] = (T)(img)(_p1##x,y,z,c), I[65] = (T)(img)(x,y,z,c), I[66] = (T)(img)(_n1##x,y,z,c), I[67] = (T)(img)(_n2##x,y,z,c), I[68] = (T)(img)(_n3##x,y,z,c), I[69] = (T)(img)(_n4##x,y,z,c), I[70] = (T)(img)(_n5##x,y,z,c), I[71] = (T)(img)(_n6##x,y,z,c), \ + I[72] = (T)(img)(_p5##x,_n1##y,z,c), I[73] = (T)(img)(_p4##x,_n1##y,z,c), I[74] = (T)(img)(_p3##x,_n1##y,z,c), I[75] = (T)(img)(_p2##x,_n1##y,z,c), I[76] = (T)(img)(_p1##x,_n1##y,z,c), I[77] = (T)(img)(x,_n1##y,z,c), I[78] = (T)(img)(_n1##x,_n1##y,z,c), I[79] = (T)(img)(_n2##x,_n1##y,z,c), I[80] = (T)(img)(_n3##x,_n1##y,z,c), I[81] = (T)(img)(_n4##x,_n1##y,z,c), I[82] = (T)(img)(_n5##x,_n1##y,z,c), I[83] = (T)(img)(_n6##x,_n1##y,z,c), \ + I[84] = (T)(img)(_p5##x,_n2##y,z,c), I[85] = (T)(img)(_p4##x,_n2##y,z,c), I[86] = (T)(img)(_p3##x,_n2##y,z,c), I[87] = (T)(img)(_p2##x,_n2##y,z,c), I[88] = (T)(img)(_p1##x,_n2##y,z,c), I[89] = (T)(img)(x,_n2##y,z,c), I[90] = (T)(img)(_n1##x,_n2##y,z,c), I[91] = (T)(img)(_n2##x,_n2##y,z,c), I[92] = (T)(img)(_n3##x,_n2##y,z,c), I[93] = (T)(img)(_n4##x,_n2##y,z,c), I[94] = (T)(img)(_n5##x,_n2##y,z,c), I[95] = (T)(img)(_n6##x,_n2##y,z,c), \ + I[96] = (T)(img)(_p5##x,_n3##y,z,c), I[97] = (T)(img)(_p4##x,_n3##y,z,c), I[98] = (T)(img)(_p3##x,_n3##y,z,c), I[99] = (T)(img)(_p2##x,_n3##y,z,c), I[100] = (T)(img)(_p1##x,_n3##y,z,c), I[101] = (T)(img)(x,_n3##y,z,c), I[102] = (T)(img)(_n1##x,_n3##y,z,c), I[103] = (T)(img)(_n2##x,_n3##y,z,c), I[104] = (T)(img)(_n3##x,_n3##y,z,c), I[105] = (T)(img)(_n4##x,_n3##y,z,c), I[106] = (T)(img)(_n5##x,_n3##y,z,c), I[107] = (T)(img)(_n6##x,_n3##y,z,c), \ + I[108] = (T)(img)(_p5##x,_n4##y,z,c), I[109] = (T)(img)(_p4##x,_n4##y,z,c), I[110] = (T)(img)(_p3##x,_n4##y,z,c), I[111] = (T)(img)(_p2##x,_n4##y,z,c), I[112] = (T)(img)(_p1##x,_n4##y,z,c), I[113] = (T)(img)(x,_n4##y,z,c), I[114] = (T)(img)(_n1##x,_n4##y,z,c), I[115] = (T)(img)(_n2##x,_n4##y,z,c), I[116] = (T)(img)(_n3##x,_n4##y,z,c), I[117] = (T)(img)(_n4##x,_n4##y,z,c), I[118] = (T)(img)(_n5##x,_n4##y,z,c), I[119] = (T)(img)(_n6##x,_n4##y,z,c), \ + I[120] = (T)(img)(_p5##x,_n5##y,z,c), I[121] = (T)(img)(_p4##x,_n5##y,z,c), I[122] = (T)(img)(_p3##x,_n5##y,z,c), I[123] = (T)(img)(_p2##x,_n5##y,z,c), I[124] = (T)(img)(_p1##x,_n5##y,z,c), I[125] = (T)(img)(x,_n5##y,z,c), I[126] = (T)(img)(_n1##x,_n5##y,z,c), I[127] = (T)(img)(_n2##x,_n5##y,z,c), I[128] = (T)(img)(_n3##x,_n5##y,z,c), I[129] = (T)(img)(_n4##x,_n5##y,z,c), I[130] = (T)(img)(_n5##x,_n5##y,z,c), I[131] = (T)(img)(_n6##x,_n5##y,z,c), \ + I[132] = (T)(img)(_p5##x,_n6##y,z,c), I[133] = (T)(img)(_p4##x,_n6##y,z,c), I[134] = (T)(img)(_p3##x,_n6##y,z,c), I[135] = (T)(img)(_p2##x,_n6##y,z,c), I[136] = (T)(img)(_p1##x,_n6##y,z,c), I[137] = (T)(img)(x,_n6##y,z,c), I[138] = (T)(img)(_n1##x,_n6##y,z,c), I[139] = (T)(img)(_n2##x,_n6##y,z,c), I[140] = (T)(img)(_n3##x,_n6##y,z,c), I[141] = (T)(img)(_n4##x,_n6##y,z,c), I[142] = (T)(img)(_n5##x,_n6##y,z,c), I[143] = (T)(img)(_n6##x,_n6##y,z,c); + +// Define 13x13 loop macros +//------------------------- +#define cimg_for13(bound,i) for (int i = 0, \ + _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6; \ + _n6##i<(int)(bound) || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i) + +#define cimg_for13X(img,x) cimg_for13((img)._width,x) +#define cimg_for13Y(img,y) cimg_for13((img)._height,y) +#define cimg_for13Z(img,z) cimg_for13((img)._depth,z) +#define cimg_for13C(img,c) cimg_for13((img)._spectrum,c) +#define cimg_for13XY(img,x,y) cimg_for13Y(img,y) cimg_for13X(img,x) +#define cimg_for13XZ(img,x,z) cimg_for13Z(img,z) cimg_for13X(img,x) +#define cimg_for13XC(img,x,c) cimg_for13C(img,c) cimg_for13X(img,x) +#define cimg_for13YZ(img,y,z) cimg_for13Z(img,z) cimg_for13Y(img,y) +#define cimg_for13YC(img,y,c) cimg_for13C(img,c) cimg_for13Y(img,y) +#define cimg_for13ZC(img,z,c) cimg_for13C(img,c) cimg_for13Z(img,z) +#define cimg_for13XYZ(img,x,y,z) cimg_for13Z(img,z) cimg_for13XY(img,x,y) +#define cimg_for13XZC(img,x,z,c) cimg_for13C(img,c) cimg_for13XZ(img,x,z) +#define cimg_for13YZC(img,y,z,c) cimg_for13C(img,c) cimg_for13YZ(img,y,z) +#define cimg_for13XYZC(img,x,y,z,c) cimg_for13C(img,c) cimg_for13XYZ(img,x,y,z) + +#define cimg_for_in13(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6; \ + i<=(int)(i1) && (_n6##i<(int)(bound) || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i) + +#define cimg_for_in13X(img,x0,x1,x) cimg_for_in13((img)._width,x0,x1,x) +#define cimg_for_in13Y(img,y0,y1,y) cimg_for_in13((img)._height,y0,y1,y) +#define cimg_for_in13Z(img,z0,z1,z) cimg_for_in13((img)._depth,z0,z1,z) +#define cimg_for_in13C(img,c0,c1,c) cimg_for_in13((img)._spectrum,c0,c1,c) +#define cimg_for_in13XY(img,x0,y0,x1,y1,x,y) cimg_for_in13Y(img,y0,y1,y) cimg_for_in13X(img,x0,x1,x) +#define cimg_for_in13XZ(img,x0,z0,x1,z1,x,z) cimg_for_in13Z(img,z0,z1,z) cimg_for_in13X(img,x0,x1,x) +#define cimg_for_in13XC(img,x0,c0,x1,c1,x,c) cimg_for_in13C(img,c0,c1,c) cimg_for_in13X(img,x0,x1,x) +#define cimg_for_in13YZ(img,y0,z0,y1,z1,y,z) cimg_for_in13Z(img,z0,z1,z) cimg_for_in13Y(img,y0,y1,y) +#define cimg_for_in13YC(img,y0,c0,y1,c1,y,c) cimg_for_in13C(img,c0,c1,c) cimg_for_in13Y(img,y0,y1,y) +#define cimg_for_in13ZC(img,z0,c0,z1,c1,z,c) cimg_for_in13C(img,c0,c1,c) cimg_for_in13Z(img,z0,z1,z) +#define cimg_for_in13XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in13Z(img,z0,z1,z) cimg_for_in13XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in13XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in13C(img,c0,c1,c) cimg_for_in13XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in13YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in13C(img,c0,c1,c) cimg_for_in13YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in13XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in13C(img,c0,c1,c) cimg_for_in13XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for13x13(img,x,y,z,c,I,T) \ + cimg_for13((img)._height,y) for (int x = 0, \ + _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = (T)(img)(0,_p6##y,z,c)), \ + (I[13] = I[14] = I[15] = I[16] = I[17] = I[18] = I[19] = (T)(img)(0,_p5##y,z,c)), \ + (I[26] = I[27] = I[28] = I[29] = I[30] = I[31] = I[32] = (T)(img)(0,_p4##y,z,c)), \ + (I[39] = I[40] = I[41] = I[42] = I[43] = I[44] = I[45] = (T)(img)(0,_p3##y,z,c)), \ + (I[52] = I[53] = I[54] = I[55] = I[56] = I[57] = I[58] = (T)(img)(0,_p2##y,z,c)), \ + (I[65] = I[66] = I[67] = I[68] = I[69] = I[70] = I[71] = (T)(img)(0,_p1##y,z,c)), \ + (I[78] = I[79] = I[80] = I[81] = I[82] = I[83] = I[84] = (T)(img)(0,y,z,c)), \ + (I[91] = I[92] = I[93] = I[94] = I[95] = I[96] = I[97] = (T)(img)(0,_n1##y,z,c)), \ + (I[104] = I[105] = I[106] = I[107] = I[108] = I[109] = I[110] = (T)(img)(0,_n2##y,z,c)), \ + (I[117] = I[118] = I[119] = I[120] = I[121] = I[122] = I[123] = (T)(img)(0,_n3##y,z,c)), \ + (I[130] = I[131] = I[132] = I[133] = I[134] = I[135] = I[136] = (T)(img)(0,_n4##y,z,c)), \ + (I[143] = I[144] = I[145] = I[146] = I[147] = I[148] = I[149] = (T)(img)(0,_n5##y,z,c)), \ + (I[156] = I[157] = I[158] = I[159] = I[160] = I[161] = I[162] = (T)(img)(0,_n6##y,z,c)), \ + (I[7] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[20] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[33] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[46] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[59] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[72] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[85] = (T)(img)(_n1##x,y,z,c)), \ + (I[98] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[111] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[124] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[137] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[150] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[163] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[8] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[21] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[34] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[47] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[60] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[73] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[86] = (T)(img)(_n2##x,y,z,c)), \ + (I[99] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[112] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[125] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[138] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[151] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[164] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[9] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[22] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[35] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[48] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[61] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[74] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[87] = (T)(img)(_n3##x,y,z,c)), \ + (I[100] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[113] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[126] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[139] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[152] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[165] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[10] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[23] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[36] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[49] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[62] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[75] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[88] = (T)(img)(_n4##x,y,z,c)), \ + (I[101] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[114] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[127] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[140] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[153] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[166] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[11] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[24] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[37] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[50] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[63] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[76] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[89] = (T)(img)(_n5##x,y,z,c)), \ + (I[102] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[115] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[128] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[141] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[154] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[167] = (T)(img)(_n5##x,_n6##y,z,c)), \ + 6>=((img)._width)?(img).width() - 1:6); \ + (_n6##x<(img).width() && ( \ + (I[12] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[25] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[38] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[51] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[64] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[77] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[90] = (T)(img)(_n6##x,y,z,c)), \ + (I[103] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[116] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[129] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[142] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[155] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[168] = (T)(img)(_n6##x,_n6##y,z,c)),1)) || \ + _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], \ + I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], \ + I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], \ + I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], \ + I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], \ + I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], \ + I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], \ + I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], \ + I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], \ + I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], \ + I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], \ + I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], \ + I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], \ + _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x) + +#define cimg_for_in13x13(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in13((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = (int)( \ + (I[0] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[13] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[26] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[39] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[52] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[65] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[78] = (T)(img)(_p6##x,y,z,c)), \ + (I[91] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[104] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[117] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[130] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[143] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[156] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[1] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[14] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[27] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[40] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[53] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[66] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[79] = (T)(img)(_p5##x,y,z,c)), \ + (I[92] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[105] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[118] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[131] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[144] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[157] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[2] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[15] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[28] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[41] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[54] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[67] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[80] = (T)(img)(_p4##x,y,z,c)), \ + (I[93] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[106] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[119] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[132] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[145] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[158] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[3] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[16] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[29] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[42] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[55] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[68] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[81] = (T)(img)(_p3##x,y,z,c)), \ + (I[94] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[107] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[120] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[133] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[146] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[159] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[4] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[17] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[30] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[43] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[56] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[69] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[82] = (T)(img)(_p2##x,y,z,c)), \ + (I[95] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[108] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[121] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[134] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[147] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[160] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[5] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[18] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[31] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[44] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[57] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[70] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[83] = (T)(img)(_p1##x,y,z,c)), \ + (I[96] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[109] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[122] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[135] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[148] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[161] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[6] = (T)(img)(x,_p6##y,z,c)), \ + (I[19] = (T)(img)(x,_p5##y,z,c)), \ + (I[32] = (T)(img)(x,_p4##y,z,c)), \ + (I[45] = (T)(img)(x,_p3##y,z,c)), \ + (I[58] = (T)(img)(x,_p2##y,z,c)), \ + (I[71] = (T)(img)(x,_p1##y,z,c)), \ + (I[84] = (T)(img)(x,y,z,c)), \ + (I[97] = (T)(img)(x,_n1##y,z,c)), \ + (I[110] = (T)(img)(x,_n2##y,z,c)), \ + (I[123] = (T)(img)(x,_n3##y,z,c)), \ + (I[136] = (T)(img)(x,_n4##y,z,c)), \ + (I[149] = (T)(img)(x,_n5##y,z,c)), \ + (I[162] = (T)(img)(x,_n6##y,z,c)), \ + (I[7] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[20] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[33] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[46] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[59] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[72] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[85] = (T)(img)(_n1##x,y,z,c)), \ + (I[98] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[111] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[124] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[137] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[150] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[163] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[8] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[21] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[34] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[47] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[60] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[73] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[86] = (T)(img)(_n2##x,y,z,c)), \ + (I[99] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[112] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[125] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[138] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[151] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[164] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[9] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[22] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[35] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[48] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[61] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[74] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[87] = (T)(img)(_n3##x,y,z,c)), \ + (I[100] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[113] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[126] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[139] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[152] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[165] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[10] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[23] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[36] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[49] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[62] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[75] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[88] = (T)(img)(_n4##x,y,z,c)), \ + (I[101] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[114] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[127] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[140] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[153] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[166] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[11] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[24] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[37] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[50] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[63] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[76] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[89] = (T)(img)(_n5##x,y,z,c)), \ + (I[102] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[115] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[128] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[141] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[154] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[167] = (T)(img)(_n5##x,_n6##y,z,c)), \ + x + 6>=(img).width()?(img).width() - 1:x + 6); \ + x<=(int)(x1) && ((_n6##x<(img).width() && ( \ + (I[12] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[25] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[38] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[51] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[64] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[77] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[90] = (T)(img)(_n6##x,y,z,c)), \ + (I[103] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[116] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[129] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[142] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[155] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[168] = (T)(img)(_n6##x,_n6##y,z,c)),1)) || \ + _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], \ + I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], \ + I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], \ + I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], \ + I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], \ + I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], \ + I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], \ + I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], \ + I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], \ + I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], \ + I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], \ + I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], \ + I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], \ + _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x) + +#define cimg_get13x13(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p6##x,_p6##y,z,c), I[1] = (T)(img)(_p5##x,_p6##y,z,c), I[2] = (T)(img)(_p4##x,_p6##y,z,c), I[3] = (T)(img)(_p3##x,_p6##y,z,c), I[4] = (T)(img)(_p2##x,_p6##y,z,c), I[5] = (T)(img)(_p1##x,_p6##y,z,c), I[6] = (T)(img)(x,_p6##y,z,c), I[7] = (T)(img)(_n1##x,_p6##y,z,c), I[8] = (T)(img)(_n2##x,_p6##y,z,c), I[9] = (T)(img)(_n3##x,_p6##y,z,c), I[10] = (T)(img)(_n4##x,_p6##y,z,c), I[11] = (T)(img)(_n5##x,_p6##y,z,c), I[12] = (T)(img)(_n6##x,_p6##y,z,c), \ + I[13] = (T)(img)(_p6##x,_p5##y,z,c), I[14] = (T)(img)(_p5##x,_p5##y,z,c), I[15] = (T)(img)(_p4##x,_p5##y,z,c), I[16] = (T)(img)(_p3##x,_p5##y,z,c), I[17] = (T)(img)(_p2##x,_p5##y,z,c), I[18] = (T)(img)(_p1##x,_p5##y,z,c), I[19] = (T)(img)(x,_p5##y,z,c), I[20] = (T)(img)(_n1##x,_p5##y,z,c), I[21] = (T)(img)(_n2##x,_p5##y,z,c), I[22] = (T)(img)(_n3##x,_p5##y,z,c), I[23] = (T)(img)(_n4##x,_p5##y,z,c), I[24] = (T)(img)(_n5##x,_p5##y,z,c), I[25] = (T)(img)(_n6##x,_p5##y,z,c), \ + I[26] = (T)(img)(_p6##x,_p4##y,z,c), I[27] = (T)(img)(_p5##x,_p4##y,z,c), I[28] = (T)(img)(_p4##x,_p4##y,z,c), I[29] = (T)(img)(_p3##x,_p4##y,z,c), I[30] = (T)(img)(_p2##x,_p4##y,z,c), I[31] = (T)(img)(_p1##x,_p4##y,z,c), I[32] = (T)(img)(x,_p4##y,z,c), I[33] = (T)(img)(_n1##x,_p4##y,z,c), I[34] = (T)(img)(_n2##x,_p4##y,z,c), I[35] = (T)(img)(_n3##x,_p4##y,z,c), I[36] = (T)(img)(_n4##x,_p4##y,z,c), I[37] = (T)(img)(_n5##x,_p4##y,z,c), I[38] = (T)(img)(_n6##x,_p4##y,z,c), \ + I[39] = (T)(img)(_p6##x,_p3##y,z,c), I[40] = (T)(img)(_p5##x,_p3##y,z,c), I[41] = (T)(img)(_p4##x,_p3##y,z,c), I[42] = (T)(img)(_p3##x,_p3##y,z,c), I[43] = (T)(img)(_p2##x,_p3##y,z,c), I[44] = (T)(img)(_p1##x,_p3##y,z,c), I[45] = (T)(img)(x,_p3##y,z,c), I[46] = (T)(img)(_n1##x,_p3##y,z,c), I[47] = (T)(img)(_n2##x,_p3##y,z,c), I[48] = (T)(img)(_n3##x,_p3##y,z,c), I[49] = (T)(img)(_n4##x,_p3##y,z,c), I[50] = (T)(img)(_n5##x,_p3##y,z,c), I[51] = (T)(img)(_n6##x,_p3##y,z,c), \ + I[52] = (T)(img)(_p6##x,_p2##y,z,c), I[53] = (T)(img)(_p5##x,_p2##y,z,c), I[54] = (T)(img)(_p4##x,_p2##y,z,c), I[55] = (T)(img)(_p3##x,_p2##y,z,c), I[56] = (T)(img)(_p2##x,_p2##y,z,c), I[57] = (T)(img)(_p1##x,_p2##y,z,c), I[58] = (T)(img)(x,_p2##y,z,c), I[59] = (T)(img)(_n1##x,_p2##y,z,c), I[60] = (T)(img)(_n2##x,_p2##y,z,c), I[61] = (T)(img)(_n3##x,_p2##y,z,c), I[62] = (T)(img)(_n4##x,_p2##y,z,c), I[63] = (T)(img)(_n5##x,_p2##y,z,c), I[64] = (T)(img)(_n6##x,_p2##y,z,c), \ + I[65] = (T)(img)(_p6##x,_p1##y,z,c), I[66] = (T)(img)(_p5##x,_p1##y,z,c), I[67] = (T)(img)(_p4##x,_p1##y,z,c), I[68] = (T)(img)(_p3##x,_p1##y,z,c), I[69] = (T)(img)(_p2##x,_p1##y,z,c), I[70] = (T)(img)(_p1##x,_p1##y,z,c), I[71] = (T)(img)(x,_p1##y,z,c), I[72] = (T)(img)(_n1##x,_p1##y,z,c), I[73] = (T)(img)(_n2##x,_p1##y,z,c), I[74] = (T)(img)(_n3##x,_p1##y,z,c), I[75] = (T)(img)(_n4##x,_p1##y,z,c), I[76] = (T)(img)(_n5##x,_p1##y,z,c), I[77] = (T)(img)(_n6##x,_p1##y,z,c), \ + I[78] = (T)(img)(_p6##x,y,z,c), I[79] = (T)(img)(_p5##x,y,z,c), I[80] = (T)(img)(_p4##x,y,z,c), I[81] = (T)(img)(_p3##x,y,z,c), I[82] = (T)(img)(_p2##x,y,z,c), I[83] = (T)(img)(_p1##x,y,z,c), I[84] = (T)(img)(x,y,z,c), I[85] = (T)(img)(_n1##x,y,z,c), I[86] = (T)(img)(_n2##x,y,z,c), I[87] = (T)(img)(_n3##x,y,z,c), I[88] = (T)(img)(_n4##x,y,z,c), I[89] = (T)(img)(_n5##x,y,z,c), I[90] = (T)(img)(_n6##x,y,z,c), \ + I[91] = (T)(img)(_p6##x,_n1##y,z,c), I[92] = (T)(img)(_p5##x,_n1##y,z,c), I[93] = (T)(img)(_p4##x,_n1##y,z,c), I[94] = (T)(img)(_p3##x,_n1##y,z,c), I[95] = (T)(img)(_p2##x,_n1##y,z,c), I[96] = (T)(img)(_p1##x,_n1##y,z,c), I[97] = (T)(img)(x,_n1##y,z,c), I[98] = (T)(img)(_n1##x,_n1##y,z,c), I[99] = (T)(img)(_n2##x,_n1##y,z,c), I[100] = (T)(img)(_n3##x,_n1##y,z,c), I[101] = (T)(img)(_n4##x,_n1##y,z,c), I[102] = (T)(img)(_n5##x,_n1##y,z,c), I[103] = (T)(img)(_n6##x,_n1##y,z,c), \ + I[104] = (T)(img)(_p6##x,_n2##y,z,c), I[105] = (T)(img)(_p5##x,_n2##y,z,c), I[106] = (T)(img)(_p4##x,_n2##y,z,c), I[107] = (T)(img)(_p3##x,_n2##y,z,c), I[108] = (T)(img)(_p2##x,_n2##y,z,c), I[109] = (T)(img)(_p1##x,_n2##y,z,c), I[110] = (T)(img)(x,_n2##y,z,c), I[111] = (T)(img)(_n1##x,_n2##y,z,c), I[112] = (T)(img)(_n2##x,_n2##y,z,c), I[113] = (T)(img)(_n3##x,_n2##y,z,c), I[114] = (T)(img)(_n4##x,_n2##y,z,c), I[115] = (T)(img)(_n5##x,_n2##y,z,c), I[116] = (T)(img)(_n6##x,_n2##y,z,c), \ + I[117] = (T)(img)(_p6##x,_n3##y,z,c), I[118] = (T)(img)(_p5##x,_n3##y,z,c), I[119] = (T)(img)(_p4##x,_n3##y,z,c), I[120] = (T)(img)(_p3##x,_n3##y,z,c), I[121] = (T)(img)(_p2##x,_n3##y,z,c), I[122] = (T)(img)(_p1##x,_n3##y,z,c), I[123] = (T)(img)(x,_n3##y,z,c), I[124] = (T)(img)(_n1##x,_n3##y,z,c), I[125] = (T)(img)(_n2##x,_n3##y,z,c), I[126] = (T)(img)(_n3##x,_n3##y,z,c), I[127] = (T)(img)(_n4##x,_n3##y,z,c), I[128] = (T)(img)(_n5##x,_n3##y,z,c), I[129] = (T)(img)(_n6##x,_n3##y,z,c), \ + I[130] = (T)(img)(_p6##x,_n4##y,z,c), I[131] = (T)(img)(_p5##x,_n4##y,z,c), I[132] = (T)(img)(_p4##x,_n4##y,z,c), I[133] = (T)(img)(_p3##x,_n4##y,z,c), I[134] = (T)(img)(_p2##x,_n4##y,z,c), I[135] = (T)(img)(_p1##x,_n4##y,z,c), I[136] = (T)(img)(x,_n4##y,z,c), I[137] = (T)(img)(_n1##x,_n4##y,z,c), I[138] = (T)(img)(_n2##x,_n4##y,z,c), I[139] = (T)(img)(_n3##x,_n4##y,z,c), I[140] = (T)(img)(_n4##x,_n4##y,z,c), I[141] = (T)(img)(_n5##x,_n4##y,z,c), I[142] = (T)(img)(_n6##x,_n4##y,z,c), \ + I[143] = (T)(img)(_p6##x,_n5##y,z,c), I[144] = (T)(img)(_p5##x,_n5##y,z,c), I[145] = (T)(img)(_p4##x,_n5##y,z,c), I[146] = (T)(img)(_p3##x,_n5##y,z,c), I[147] = (T)(img)(_p2##x,_n5##y,z,c), I[148] = (T)(img)(_p1##x,_n5##y,z,c), I[149] = (T)(img)(x,_n5##y,z,c), I[150] = (T)(img)(_n1##x,_n5##y,z,c), I[151] = (T)(img)(_n2##x,_n5##y,z,c), I[152] = (T)(img)(_n3##x,_n5##y,z,c), I[153] = (T)(img)(_n4##x,_n5##y,z,c), I[154] = (T)(img)(_n5##x,_n5##y,z,c), I[155] = (T)(img)(_n6##x,_n5##y,z,c), \ + I[156] = (T)(img)(_p6##x,_n6##y,z,c), I[157] = (T)(img)(_p5##x,_n6##y,z,c), I[158] = (T)(img)(_p4##x,_n6##y,z,c), I[159] = (T)(img)(_p3##x,_n6##y,z,c), I[160] = (T)(img)(_p2##x,_n6##y,z,c), I[161] = (T)(img)(_p1##x,_n6##y,z,c), I[162] = (T)(img)(x,_n6##y,z,c), I[163] = (T)(img)(_n1##x,_n6##y,z,c), I[164] = (T)(img)(_n2##x,_n6##y,z,c), I[165] = (T)(img)(_n3##x,_n6##y,z,c), I[166] = (T)(img)(_n4##x,_n6##y,z,c), I[167] = (T)(img)(_n5##x,_n6##y,z,c), I[168] = (T)(img)(_n6##x,_n6##y,z,c); + +// Define 14x14 loop macros +//------------------------- +#define cimg_for14(bound,i) for (int i = 0, \ + _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7; \ + _n7##i<(int)(bound) || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i) + +#define cimg_for14X(img,x) cimg_for14((img)._width,x) +#define cimg_for14Y(img,y) cimg_for14((img)._height,y) +#define cimg_for14Z(img,z) cimg_for14((img)._depth,z) +#define cimg_for14C(img,c) cimg_for14((img)._spectrum,c) +#define cimg_for14XY(img,x,y) cimg_for14Y(img,y) cimg_for14X(img,x) +#define cimg_for14XZ(img,x,z) cimg_for14Z(img,z) cimg_for14X(img,x) +#define cimg_for14XC(img,x,c) cimg_for14C(img,c) cimg_for14X(img,x) +#define cimg_for14YZ(img,y,z) cimg_for14Z(img,z) cimg_for14Y(img,y) +#define cimg_for14YC(img,y,c) cimg_for14C(img,c) cimg_for14Y(img,y) +#define cimg_for14ZC(img,z,c) cimg_for14C(img,c) cimg_for14Z(img,z) +#define cimg_for14XYZ(img,x,y,z) cimg_for14Z(img,z) cimg_for14XY(img,x,y) +#define cimg_for14XZC(img,x,z,c) cimg_for14C(img,c) cimg_for14XZ(img,x,z) +#define cimg_for14YZC(img,y,z,c) cimg_for14C(img,c) cimg_for14YZ(img,y,z) +#define cimg_for14XYZC(img,x,y,z,c) cimg_for14C(img,c) cimg_for14XYZ(img,x,y,z) + +#define cimg_for_in14(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7; \ + i<=(int)(i1) && (_n7##i<(int)(bound) || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i) + +#define cimg_for_in14X(img,x0,x1,x) cimg_for_in14((img)._width,x0,x1,x) +#define cimg_for_in14Y(img,y0,y1,y) cimg_for_in14((img)._height,y0,y1,y) +#define cimg_for_in14Z(img,z0,z1,z) cimg_for_in14((img)._depth,z0,z1,z) +#define cimg_for_in14C(img,c0,c1,c) cimg_for_in14((img)._spectrum,c0,c1,c) +#define cimg_for_in14XY(img,x0,y0,x1,y1,x,y) cimg_for_in14Y(img,y0,y1,y) cimg_for_in14X(img,x0,x1,x) +#define cimg_for_in14XZ(img,x0,z0,x1,z1,x,z) cimg_for_in14Z(img,z0,z1,z) cimg_for_in14X(img,x0,x1,x) +#define cimg_for_in14XC(img,x0,c0,x1,c1,x,c) cimg_for_in14C(img,c0,c1,c) cimg_for_in14X(img,x0,x1,x) +#define cimg_for_in14YZ(img,y0,z0,y1,z1,y,z) cimg_for_in14Z(img,z0,z1,z) cimg_for_in14Y(img,y0,y1,y) +#define cimg_for_in14YC(img,y0,c0,y1,c1,y,c) cimg_for_in14C(img,c0,c1,c) cimg_for_in14Y(img,y0,y1,y) +#define cimg_for_in14ZC(img,z0,c0,z1,c1,z,c) cimg_for_in14C(img,c0,c1,c) cimg_for_in14Z(img,z0,z1,z) +#define cimg_for_in14XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in14Z(img,z0,z1,z) cimg_for_in14XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in14XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in14C(img,c0,c1,c) cimg_for_in14XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in14YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in14C(img,c0,c1,c) cimg_for_in14YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in14XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in14C(img,c0,c1,c) cimg_for_in14XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for14x14(img,x,y,z,c,I,T) \ + cimg_for14((img)._height,y) for (int x = 0, \ + _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = (T)(img)(0,_p6##y,z,c)), \ + (I[14] = I[15] = I[16] = I[17] = I[18] = I[19] = I[20] = (T)(img)(0,_p5##y,z,c)), \ + (I[28] = I[29] = I[30] = I[31] = I[32] = I[33] = I[34] = (T)(img)(0,_p4##y,z,c)), \ + (I[42] = I[43] = I[44] = I[45] = I[46] = I[47] = I[48] = (T)(img)(0,_p3##y,z,c)), \ + (I[56] = I[57] = I[58] = I[59] = I[60] = I[61] = I[62] = (T)(img)(0,_p2##y,z,c)), \ + (I[70] = I[71] = I[72] = I[73] = I[74] = I[75] = I[76] = (T)(img)(0,_p1##y,z,c)), \ + (I[84] = I[85] = I[86] = I[87] = I[88] = I[89] = I[90] = (T)(img)(0,y,z,c)), \ + (I[98] = I[99] = I[100] = I[101] = I[102] = I[103] = I[104] = (T)(img)(0,_n1##y,z,c)), \ + (I[112] = I[113] = I[114] = I[115] = I[116] = I[117] = I[118] = (T)(img)(0,_n2##y,z,c)), \ + (I[126] = I[127] = I[128] = I[129] = I[130] = I[131] = I[132] = (T)(img)(0,_n3##y,z,c)), \ + (I[140] = I[141] = I[142] = I[143] = I[144] = I[145] = I[146] = (T)(img)(0,_n4##y,z,c)), \ + (I[154] = I[155] = I[156] = I[157] = I[158] = I[159] = I[160] = (T)(img)(0,_n5##y,z,c)), \ + (I[168] = I[169] = I[170] = I[171] = I[172] = I[173] = I[174] = (T)(img)(0,_n6##y,z,c)), \ + (I[182] = I[183] = I[184] = I[185] = I[186] = I[187] = I[188] = (T)(img)(0,_n7##y,z,c)), \ + (I[7] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[21] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[35] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[49] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[63] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[77] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[91] = (T)(img)(_n1##x,y,z,c)), \ + (I[105] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[119] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[133] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[147] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[161] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[175] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[189] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[8] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[22] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[36] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[50] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[64] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[78] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[92] = (T)(img)(_n2##x,y,z,c)), \ + (I[106] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[120] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[134] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[148] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[162] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[176] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[190] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[9] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[23] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[37] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[51] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[65] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[79] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[93] = (T)(img)(_n3##x,y,z,c)), \ + (I[107] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[121] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[135] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[149] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[163] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[177] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[191] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[10] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[24] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[38] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[52] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[66] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[80] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[94] = (T)(img)(_n4##x,y,z,c)), \ + (I[108] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[122] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[136] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[150] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[164] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[178] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[192] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[11] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[25] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[39] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[53] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[67] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[81] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[95] = (T)(img)(_n5##x,y,z,c)), \ + (I[109] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[123] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[137] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[151] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[165] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[179] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[193] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[12] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[26] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[40] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[54] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[68] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[82] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[96] = (T)(img)(_n6##x,y,z,c)), \ + (I[110] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[124] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[138] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[152] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[166] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[180] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[194] = (T)(img)(_n6##x,_n7##y,z,c)), \ + 7>=((img)._width)?(img).width() - 1:7); \ + (_n7##x<(img).width() && ( \ + (I[13] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[27] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[41] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[55] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[69] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[83] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[97] = (T)(img)(_n7##x,y,z,c)), \ + (I[111] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[125] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[139] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[153] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[167] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[181] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[195] = (T)(img)(_n7##x,_n7##y,z,c)),1)) || \ + _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], \ + I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], \ + I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], \ + I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], \ + I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], \ + I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], \ + I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], \ + I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], \ + I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], \ + _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x) + +#define cimg_for_in14x14(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in14((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = (int)( \ + (I[0] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[14] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[28] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[42] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[56] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[70] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[84] = (T)(img)(_p6##x,y,z,c)), \ + (I[98] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[112] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[126] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[140] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[154] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[168] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[182] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[1] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[15] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[29] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[43] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[57] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[71] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[85] = (T)(img)(_p5##x,y,z,c)), \ + (I[99] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[113] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[127] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[141] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[155] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[169] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[183] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[2] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[16] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[30] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[44] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[58] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[72] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[86] = (T)(img)(_p4##x,y,z,c)), \ + (I[100] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[114] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[128] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[142] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[156] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[170] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[184] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[3] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[17] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[31] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[45] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[59] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[73] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[87] = (T)(img)(_p3##x,y,z,c)), \ + (I[101] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[115] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[129] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[143] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[157] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[171] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[185] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[4] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[18] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[32] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[46] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[60] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[74] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[88] = (T)(img)(_p2##x,y,z,c)), \ + (I[102] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[116] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[130] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[144] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[158] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[172] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[186] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[5] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[19] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[33] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[47] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[61] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[75] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[89] = (T)(img)(_p1##x,y,z,c)), \ + (I[103] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[117] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[131] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[145] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[159] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[173] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[187] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[6] = (T)(img)(x,_p6##y,z,c)), \ + (I[20] = (T)(img)(x,_p5##y,z,c)), \ + (I[34] = (T)(img)(x,_p4##y,z,c)), \ + (I[48] = (T)(img)(x,_p3##y,z,c)), \ + (I[62] = (T)(img)(x,_p2##y,z,c)), \ + (I[76] = (T)(img)(x,_p1##y,z,c)), \ + (I[90] = (T)(img)(x,y,z,c)), \ + (I[104] = (T)(img)(x,_n1##y,z,c)), \ + (I[118] = (T)(img)(x,_n2##y,z,c)), \ + (I[132] = (T)(img)(x,_n3##y,z,c)), \ + (I[146] = (T)(img)(x,_n4##y,z,c)), \ + (I[160] = (T)(img)(x,_n5##y,z,c)), \ + (I[174] = (T)(img)(x,_n6##y,z,c)), \ + (I[188] = (T)(img)(x,_n7##y,z,c)), \ + (I[7] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[21] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[35] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[49] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[63] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[77] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[91] = (T)(img)(_n1##x,y,z,c)), \ + (I[105] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[119] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[133] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[147] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[161] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[175] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[189] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[8] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[22] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[36] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[50] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[64] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[78] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[92] = (T)(img)(_n2##x,y,z,c)), \ + (I[106] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[120] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[134] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[148] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[162] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[176] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[190] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[9] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[23] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[37] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[51] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[65] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[79] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[93] = (T)(img)(_n3##x,y,z,c)), \ + (I[107] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[121] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[135] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[149] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[163] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[177] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[191] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[10] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[24] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[38] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[52] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[66] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[80] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[94] = (T)(img)(_n4##x,y,z,c)), \ + (I[108] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[122] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[136] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[150] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[164] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[178] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[192] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[11] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[25] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[39] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[53] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[67] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[81] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[95] = (T)(img)(_n5##x,y,z,c)), \ + (I[109] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[123] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[137] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[151] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[165] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[179] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[193] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[12] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[26] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[40] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[54] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[68] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[82] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[96] = (T)(img)(_n6##x,y,z,c)), \ + (I[110] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[124] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[138] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[152] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[166] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[180] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[194] = (T)(img)(_n6##x,_n7##y,z,c)), \ + x + 7>=(img).width()?(img).width() - 1:x + 7); \ + x<=(int)(x1) && ((_n7##x<(img).width() && ( \ + (I[13] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[27] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[41] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[55] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[69] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[83] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[97] = (T)(img)(_n7##x,y,z,c)), \ + (I[111] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[125] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[139] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[153] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[167] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[181] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[195] = (T)(img)(_n7##x,_n7##y,z,c)),1)) || \ + _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], \ + I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], \ + I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], \ + I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], \ + I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], \ + I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], \ + I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], \ + I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], \ + I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], \ + _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x) + +#define cimg_get14x14(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p6##x,_p6##y,z,c), I[1] = (T)(img)(_p5##x,_p6##y,z,c), I[2] = (T)(img)(_p4##x,_p6##y,z,c), I[3] = (T)(img)(_p3##x,_p6##y,z,c), I[4] = (T)(img)(_p2##x,_p6##y,z,c), I[5] = (T)(img)(_p1##x,_p6##y,z,c), I[6] = (T)(img)(x,_p6##y,z,c), I[7] = (T)(img)(_n1##x,_p6##y,z,c), I[8] = (T)(img)(_n2##x,_p6##y,z,c), I[9] = (T)(img)(_n3##x,_p6##y,z,c), I[10] = (T)(img)(_n4##x,_p6##y,z,c), I[11] = (T)(img)(_n5##x,_p6##y,z,c), I[12] = (T)(img)(_n6##x,_p6##y,z,c), I[13] = (T)(img)(_n7##x,_p6##y,z,c), \ + I[14] = (T)(img)(_p6##x,_p5##y,z,c), I[15] = (T)(img)(_p5##x,_p5##y,z,c), I[16] = (T)(img)(_p4##x,_p5##y,z,c), I[17] = (T)(img)(_p3##x,_p5##y,z,c), I[18] = (T)(img)(_p2##x,_p5##y,z,c), I[19] = (T)(img)(_p1##x,_p5##y,z,c), I[20] = (T)(img)(x,_p5##y,z,c), I[21] = (T)(img)(_n1##x,_p5##y,z,c), I[22] = (T)(img)(_n2##x,_p5##y,z,c), I[23] = (T)(img)(_n3##x,_p5##y,z,c), I[24] = (T)(img)(_n4##x,_p5##y,z,c), I[25] = (T)(img)(_n5##x,_p5##y,z,c), I[26] = (T)(img)(_n6##x,_p5##y,z,c), I[27] = (T)(img)(_n7##x,_p5##y,z,c), \ + I[28] = (T)(img)(_p6##x,_p4##y,z,c), I[29] = (T)(img)(_p5##x,_p4##y,z,c), I[30] = (T)(img)(_p4##x,_p4##y,z,c), I[31] = (T)(img)(_p3##x,_p4##y,z,c), I[32] = (T)(img)(_p2##x,_p4##y,z,c), I[33] = (T)(img)(_p1##x,_p4##y,z,c), I[34] = (T)(img)(x,_p4##y,z,c), I[35] = (T)(img)(_n1##x,_p4##y,z,c), I[36] = (T)(img)(_n2##x,_p4##y,z,c), I[37] = (T)(img)(_n3##x,_p4##y,z,c), I[38] = (T)(img)(_n4##x,_p4##y,z,c), I[39] = (T)(img)(_n5##x,_p4##y,z,c), I[40] = (T)(img)(_n6##x,_p4##y,z,c), I[41] = (T)(img)(_n7##x,_p4##y,z,c), \ + I[42] = (T)(img)(_p6##x,_p3##y,z,c), I[43] = (T)(img)(_p5##x,_p3##y,z,c), I[44] = (T)(img)(_p4##x,_p3##y,z,c), I[45] = (T)(img)(_p3##x,_p3##y,z,c), I[46] = (T)(img)(_p2##x,_p3##y,z,c), I[47] = (T)(img)(_p1##x,_p3##y,z,c), I[48] = (T)(img)(x,_p3##y,z,c), I[49] = (T)(img)(_n1##x,_p3##y,z,c), I[50] = (T)(img)(_n2##x,_p3##y,z,c), I[51] = (T)(img)(_n3##x,_p3##y,z,c), I[52] = (T)(img)(_n4##x,_p3##y,z,c), I[53] = (T)(img)(_n5##x,_p3##y,z,c), I[54] = (T)(img)(_n6##x,_p3##y,z,c), I[55] = (T)(img)(_n7##x,_p3##y,z,c), \ + I[56] = (T)(img)(_p6##x,_p2##y,z,c), I[57] = (T)(img)(_p5##x,_p2##y,z,c), I[58] = (T)(img)(_p4##x,_p2##y,z,c), I[59] = (T)(img)(_p3##x,_p2##y,z,c), I[60] = (T)(img)(_p2##x,_p2##y,z,c), I[61] = (T)(img)(_p1##x,_p2##y,z,c), I[62] = (T)(img)(x,_p2##y,z,c), I[63] = (T)(img)(_n1##x,_p2##y,z,c), I[64] = (T)(img)(_n2##x,_p2##y,z,c), I[65] = (T)(img)(_n3##x,_p2##y,z,c), I[66] = (T)(img)(_n4##x,_p2##y,z,c), I[67] = (T)(img)(_n5##x,_p2##y,z,c), I[68] = (T)(img)(_n6##x,_p2##y,z,c), I[69] = (T)(img)(_n7##x,_p2##y,z,c), \ + I[70] = (T)(img)(_p6##x,_p1##y,z,c), I[71] = (T)(img)(_p5##x,_p1##y,z,c), I[72] = (T)(img)(_p4##x,_p1##y,z,c), I[73] = (T)(img)(_p3##x,_p1##y,z,c), I[74] = (T)(img)(_p2##x,_p1##y,z,c), I[75] = (T)(img)(_p1##x,_p1##y,z,c), I[76] = (T)(img)(x,_p1##y,z,c), I[77] = (T)(img)(_n1##x,_p1##y,z,c), I[78] = (T)(img)(_n2##x,_p1##y,z,c), I[79] = (T)(img)(_n3##x,_p1##y,z,c), I[80] = (T)(img)(_n4##x,_p1##y,z,c), I[81] = (T)(img)(_n5##x,_p1##y,z,c), I[82] = (T)(img)(_n6##x,_p1##y,z,c), I[83] = (T)(img)(_n7##x,_p1##y,z,c), \ + I[84] = (T)(img)(_p6##x,y,z,c), I[85] = (T)(img)(_p5##x,y,z,c), I[86] = (T)(img)(_p4##x,y,z,c), I[87] = (T)(img)(_p3##x,y,z,c), I[88] = (T)(img)(_p2##x,y,z,c), I[89] = (T)(img)(_p1##x,y,z,c), I[90] = (T)(img)(x,y,z,c), I[91] = (T)(img)(_n1##x,y,z,c), I[92] = (T)(img)(_n2##x,y,z,c), I[93] = (T)(img)(_n3##x,y,z,c), I[94] = (T)(img)(_n4##x,y,z,c), I[95] = (T)(img)(_n5##x,y,z,c), I[96] = (T)(img)(_n6##x,y,z,c), I[97] = (T)(img)(_n7##x,y,z,c), \ + I[98] = (T)(img)(_p6##x,_n1##y,z,c), I[99] = (T)(img)(_p5##x,_n1##y,z,c), I[100] = (T)(img)(_p4##x,_n1##y,z,c), I[101] = (T)(img)(_p3##x,_n1##y,z,c), I[102] = (T)(img)(_p2##x,_n1##y,z,c), I[103] = (T)(img)(_p1##x,_n1##y,z,c), I[104] = (T)(img)(x,_n1##y,z,c), I[105] = (T)(img)(_n1##x,_n1##y,z,c), I[106] = (T)(img)(_n2##x,_n1##y,z,c), I[107] = (T)(img)(_n3##x,_n1##y,z,c), I[108] = (T)(img)(_n4##x,_n1##y,z,c), I[109] = (T)(img)(_n5##x,_n1##y,z,c), I[110] = (T)(img)(_n6##x,_n1##y,z,c), I[111] = (T)(img)(_n7##x,_n1##y,z,c), \ + I[112] = (T)(img)(_p6##x,_n2##y,z,c), I[113] = (T)(img)(_p5##x,_n2##y,z,c), I[114] = (T)(img)(_p4##x,_n2##y,z,c), I[115] = (T)(img)(_p3##x,_n2##y,z,c), I[116] = (T)(img)(_p2##x,_n2##y,z,c), I[117] = (T)(img)(_p1##x,_n2##y,z,c), I[118] = (T)(img)(x,_n2##y,z,c), I[119] = (T)(img)(_n1##x,_n2##y,z,c), I[120] = (T)(img)(_n2##x,_n2##y,z,c), I[121] = (T)(img)(_n3##x,_n2##y,z,c), I[122] = (T)(img)(_n4##x,_n2##y,z,c), I[123] = (T)(img)(_n5##x,_n2##y,z,c), I[124] = (T)(img)(_n6##x,_n2##y,z,c), I[125] = (T)(img)(_n7##x,_n2##y,z,c), \ + I[126] = (T)(img)(_p6##x,_n3##y,z,c), I[127] = (T)(img)(_p5##x,_n3##y,z,c), I[128] = (T)(img)(_p4##x,_n3##y,z,c), I[129] = (T)(img)(_p3##x,_n3##y,z,c), I[130] = (T)(img)(_p2##x,_n3##y,z,c), I[131] = (T)(img)(_p1##x,_n3##y,z,c), I[132] = (T)(img)(x,_n3##y,z,c), I[133] = (T)(img)(_n1##x,_n3##y,z,c), I[134] = (T)(img)(_n2##x,_n3##y,z,c), I[135] = (T)(img)(_n3##x,_n3##y,z,c), I[136] = (T)(img)(_n4##x,_n3##y,z,c), I[137] = (T)(img)(_n5##x,_n3##y,z,c), I[138] = (T)(img)(_n6##x,_n3##y,z,c), I[139] = (T)(img)(_n7##x,_n3##y,z,c), \ + I[140] = (T)(img)(_p6##x,_n4##y,z,c), I[141] = (T)(img)(_p5##x,_n4##y,z,c), I[142] = (T)(img)(_p4##x,_n4##y,z,c), I[143] = (T)(img)(_p3##x,_n4##y,z,c), I[144] = (T)(img)(_p2##x,_n4##y,z,c), I[145] = (T)(img)(_p1##x,_n4##y,z,c), I[146] = (T)(img)(x,_n4##y,z,c), I[147] = (T)(img)(_n1##x,_n4##y,z,c), I[148] = (T)(img)(_n2##x,_n4##y,z,c), I[149] = (T)(img)(_n3##x,_n4##y,z,c), I[150] = (T)(img)(_n4##x,_n4##y,z,c), I[151] = (T)(img)(_n5##x,_n4##y,z,c), I[152] = (T)(img)(_n6##x,_n4##y,z,c), I[153] = (T)(img)(_n7##x,_n4##y,z,c), \ + I[154] = (T)(img)(_p6##x,_n5##y,z,c), I[155] = (T)(img)(_p5##x,_n5##y,z,c), I[156] = (T)(img)(_p4##x,_n5##y,z,c), I[157] = (T)(img)(_p3##x,_n5##y,z,c), I[158] = (T)(img)(_p2##x,_n5##y,z,c), I[159] = (T)(img)(_p1##x,_n5##y,z,c), I[160] = (T)(img)(x,_n5##y,z,c), I[161] = (T)(img)(_n1##x,_n5##y,z,c), I[162] = (T)(img)(_n2##x,_n5##y,z,c), I[163] = (T)(img)(_n3##x,_n5##y,z,c), I[164] = (T)(img)(_n4##x,_n5##y,z,c), I[165] = (T)(img)(_n5##x,_n5##y,z,c), I[166] = (T)(img)(_n6##x,_n5##y,z,c), I[167] = (T)(img)(_n7##x,_n5##y,z,c), \ + I[168] = (T)(img)(_p6##x,_n6##y,z,c), I[169] = (T)(img)(_p5##x,_n6##y,z,c), I[170] = (T)(img)(_p4##x,_n6##y,z,c), I[171] = (T)(img)(_p3##x,_n6##y,z,c), I[172] = (T)(img)(_p2##x,_n6##y,z,c), I[173] = (T)(img)(_p1##x,_n6##y,z,c), I[174] = (T)(img)(x,_n6##y,z,c), I[175] = (T)(img)(_n1##x,_n6##y,z,c), I[176] = (T)(img)(_n2##x,_n6##y,z,c), I[177] = (T)(img)(_n3##x,_n6##y,z,c), I[178] = (T)(img)(_n4##x,_n6##y,z,c), I[179] = (T)(img)(_n5##x,_n6##y,z,c), I[180] = (T)(img)(_n6##x,_n6##y,z,c), I[181] = (T)(img)(_n7##x,_n6##y,z,c), \ + I[182] = (T)(img)(_p6##x,_n7##y,z,c), I[183] = (T)(img)(_p5##x,_n7##y,z,c), I[184] = (T)(img)(_p4##x,_n7##y,z,c), I[185] = (T)(img)(_p3##x,_n7##y,z,c), I[186] = (T)(img)(_p2##x,_n7##y,z,c), I[187] = (T)(img)(_p1##x,_n7##y,z,c), I[188] = (T)(img)(x,_n7##y,z,c), I[189] = (T)(img)(_n1##x,_n7##y,z,c), I[190] = (T)(img)(_n2##x,_n7##y,z,c), I[191] = (T)(img)(_n3##x,_n7##y,z,c), I[192] = (T)(img)(_n4##x,_n7##y,z,c), I[193] = (T)(img)(_n5##x,_n7##y,z,c), I[194] = (T)(img)(_n6##x,_n7##y,z,c), I[195] = (T)(img)(_n7##x,_n7##y,z,c); + +// Define 15x15 loop macros +//------------------------- +#define cimg_for15(bound,i) for (int i = 0, \ + _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7; \ + _n7##i<(int)(bound) || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i) + +#define cimg_for15X(img,x) cimg_for15((img)._width,x) +#define cimg_for15Y(img,y) cimg_for15((img)._height,y) +#define cimg_for15Z(img,z) cimg_for15((img)._depth,z) +#define cimg_for15C(img,c) cimg_for15((img)._spectrum,c) +#define cimg_for15XY(img,x,y) cimg_for15Y(img,y) cimg_for15X(img,x) +#define cimg_for15XZ(img,x,z) cimg_for15Z(img,z) cimg_for15X(img,x) +#define cimg_for15XC(img,x,c) cimg_for15C(img,c) cimg_for15X(img,x) +#define cimg_for15YZ(img,y,z) cimg_for15Z(img,z) cimg_for15Y(img,y) +#define cimg_for15YC(img,y,c) cimg_for15C(img,c) cimg_for15Y(img,y) +#define cimg_for15ZC(img,z,c) cimg_for15C(img,c) cimg_for15Z(img,z) +#define cimg_for15XYZ(img,x,y,z) cimg_for15Z(img,z) cimg_for15XY(img,x,y) +#define cimg_for15XZC(img,x,z,c) cimg_for15C(img,c) cimg_for15XZ(img,x,z) +#define cimg_for15YZC(img,y,z,c) cimg_for15C(img,c) cimg_for15YZ(img,y,z) +#define cimg_for15XYZC(img,x,y,z,c) cimg_for15C(img,c) cimg_for15XYZ(img,x,y,z) + +#define cimg_for_in15(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7; \ + i<=(int)(i1) && (_n7##i<(int)(bound) || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i) + +#define cimg_for_in15X(img,x0,x1,x) cimg_for_in15((img)._width,x0,x1,x) +#define cimg_for_in15Y(img,y0,y1,y) cimg_for_in15((img)._height,y0,y1,y) +#define cimg_for_in15Z(img,z0,z1,z) cimg_for_in15((img)._depth,z0,z1,z) +#define cimg_for_in15C(img,c0,c1,c) cimg_for_in15((img)._spectrum,c0,c1,c) +#define cimg_for_in15XY(img,x0,y0,x1,y1,x,y) cimg_for_in15Y(img,y0,y1,y) cimg_for_in15X(img,x0,x1,x) +#define cimg_for_in15XZ(img,x0,z0,x1,z1,x,z) cimg_for_in15Z(img,z0,z1,z) cimg_for_in15X(img,x0,x1,x) +#define cimg_for_in15XC(img,x0,c0,x1,c1,x,c) cimg_for_in15C(img,c0,c1,c) cimg_for_in15X(img,x0,x1,x) +#define cimg_for_in15YZ(img,y0,z0,y1,z1,y,z) cimg_for_in15Z(img,z0,z1,z) cimg_for_in15Y(img,y0,y1,y) +#define cimg_for_in15YC(img,y0,c0,y1,c1,y,c) cimg_for_in15C(img,c0,c1,c) cimg_for_in15Y(img,y0,y1,y) +#define cimg_for_in15ZC(img,z0,c0,z1,c1,z,c) cimg_for_in15C(img,c0,c1,c) cimg_for_in15Z(img,z0,z1,z) +#define cimg_for_in15XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in15Z(img,z0,z1,z) cimg_for_in15XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in15XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in15C(img,c0,c1,c) cimg_for_in15XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in15YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in15C(img,c0,c1,c) cimg_for_in15YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in15XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in15C(img,c0,c1,c) cimg_for_in15XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for15x15(img,x,y,z,c,I,T) \ + cimg_for15((img)._height,y) for (int x = 0, \ + _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = (T)(img)(0,_p7##y,z,c)), \ + (I[15] = I[16] = I[17] = I[18] = I[19] = I[20] = I[21] = I[22] = (T)(img)(0,_p6##y,z,c)), \ + (I[30] = I[31] = I[32] = I[33] = I[34] = I[35] = I[36] = I[37] = (T)(img)(0,_p5##y,z,c)), \ + (I[45] = I[46] = I[47] = I[48] = I[49] = I[50] = I[51] = I[52] = (T)(img)(0,_p4##y,z,c)), \ + (I[60] = I[61] = I[62] = I[63] = I[64] = I[65] = I[66] = I[67] = (T)(img)(0,_p3##y,z,c)), \ + (I[75] = I[76] = I[77] = I[78] = I[79] = I[80] = I[81] = I[82] = (T)(img)(0,_p2##y,z,c)), \ + (I[90] = I[91] = I[92] = I[93] = I[94] = I[95] = I[96] = I[97] = (T)(img)(0,_p1##y,z,c)), \ + (I[105] = I[106] = I[107] = I[108] = I[109] = I[110] = I[111] = I[112] = (T)(img)(0,y,z,c)), \ + (I[120] = I[121] = I[122] = I[123] = I[124] = I[125] = I[126] = I[127] = (T)(img)(0,_n1##y,z,c)), \ + (I[135] = I[136] = I[137] = I[138] = I[139] = I[140] = I[141] = I[142] = (T)(img)(0,_n2##y,z,c)), \ + (I[150] = I[151] = I[152] = I[153] = I[154] = I[155] = I[156] = I[157] = (T)(img)(0,_n3##y,z,c)), \ + (I[165] = I[166] = I[167] = I[168] = I[169] = I[170] = I[171] = I[172] = (T)(img)(0,_n4##y,z,c)), \ + (I[180] = I[181] = I[182] = I[183] = I[184] = I[185] = I[186] = I[187] = (T)(img)(0,_n5##y,z,c)), \ + (I[195] = I[196] = I[197] = I[198] = I[199] = I[200] = I[201] = I[202] = (T)(img)(0,_n6##y,z,c)), \ + (I[210] = I[211] = I[212] = I[213] = I[214] = I[215] = I[216] = I[217] = (T)(img)(0,_n7##y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[23] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[38] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[53] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[68] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[83] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[98] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[113] = (T)(img)(_n1##x,y,z,c)), \ + (I[128] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[143] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[158] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[173] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[188] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[203] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[218] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[9] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[24] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[39] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[54] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[69] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[84] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[99] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[114] = (T)(img)(_n2##x,y,z,c)), \ + (I[129] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[144] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[159] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[174] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[189] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[204] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[219] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[10] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[25] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[40] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[55] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[70] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[85] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[100] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[115] = (T)(img)(_n3##x,y,z,c)), \ + (I[130] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[145] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[160] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[175] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[190] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[205] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[220] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[11] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[26] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[41] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[56] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[71] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[86] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[101] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[116] = (T)(img)(_n4##x,y,z,c)), \ + (I[131] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[146] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[161] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[176] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[191] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[206] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[221] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[12] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[27] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[42] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[57] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[72] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[87] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[102] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[117] = (T)(img)(_n5##x,y,z,c)), \ + (I[132] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[147] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[162] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[177] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[192] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[207] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[222] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[13] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[28] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[43] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[58] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[73] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[88] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[103] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[118] = (T)(img)(_n6##x,y,z,c)), \ + (I[133] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[148] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[163] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[178] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[193] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[208] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[223] = (T)(img)(_n6##x,_n7##y,z,c)), \ + 7>=((img)._width)?(img).width() - 1:7); \ + (_n7##x<(img).width() && ( \ + (I[14] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[29] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[44] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[59] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[74] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[89] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[104] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[119] = (T)(img)(_n7##x,y,z,c)), \ + (I[134] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[149] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[164] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[179] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[194] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[209] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[224] = (T)(img)(_n7##x,_n7##y,z,c)),1)) || \ + _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], \ + I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], \ + I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], \ + I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], \ + I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], \ + I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], \ + I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], \ + I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], \ + I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], \ + I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], \ + I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], \ + _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x) + +#define cimg_for_in15x15(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in15((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = (int)( \ + (I[0] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[15] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[30] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[45] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[60] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[75] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[90] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[105] = (T)(img)(_p7##x,y,z,c)), \ + (I[120] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[135] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[150] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[165] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[180] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[195] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[210] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[1] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[16] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[31] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[46] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[61] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[76] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[91] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[106] = (T)(img)(_p6##x,y,z,c)), \ + (I[121] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[136] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[151] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[166] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[181] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[196] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[211] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[2] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[17] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[32] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[47] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[62] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[77] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[92] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[107] = (T)(img)(_p5##x,y,z,c)), \ + (I[122] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[137] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[152] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[167] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[182] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[197] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[212] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[3] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[18] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[33] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[48] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[63] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[78] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[93] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[108] = (T)(img)(_p4##x,y,z,c)), \ + (I[123] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[138] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[153] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[168] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[183] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[198] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[213] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[4] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[19] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[34] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[49] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[64] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[79] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[94] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[109] = (T)(img)(_p3##x,y,z,c)), \ + (I[124] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[139] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[154] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[169] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[184] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[199] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[214] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[5] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[20] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[35] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[50] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[65] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[80] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[95] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[110] = (T)(img)(_p2##x,y,z,c)), \ + (I[125] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[140] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[155] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[170] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[185] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[200] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[215] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[6] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[21] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[36] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[51] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[66] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[81] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[96] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[111] = (T)(img)(_p1##x,y,z,c)), \ + (I[126] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[141] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[156] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[171] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[186] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[201] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[216] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[7] = (T)(img)(x,_p7##y,z,c)), \ + (I[22] = (T)(img)(x,_p6##y,z,c)), \ + (I[37] = (T)(img)(x,_p5##y,z,c)), \ + (I[52] = (T)(img)(x,_p4##y,z,c)), \ + (I[67] = (T)(img)(x,_p3##y,z,c)), \ + (I[82] = (T)(img)(x,_p2##y,z,c)), \ + (I[97] = (T)(img)(x,_p1##y,z,c)), \ + (I[112] = (T)(img)(x,y,z,c)), \ + (I[127] = (T)(img)(x,_n1##y,z,c)), \ + (I[142] = (T)(img)(x,_n2##y,z,c)), \ + (I[157] = (T)(img)(x,_n3##y,z,c)), \ + (I[172] = (T)(img)(x,_n4##y,z,c)), \ + (I[187] = (T)(img)(x,_n5##y,z,c)), \ + (I[202] = (T)(img)(x,_n6##y,z,c)), \ + (I[217] = (T)(img)(x,_n7##y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[23] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[38] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[53] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[68] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[83] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[98] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[113] = (T)(img)(_n1##x,y,z,c)), \ + (I[128] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[143] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[158] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[173] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[188] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[203] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[218] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[9] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[24] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[39] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[54] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[69] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[84] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[99] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[114] = (T)(img)(_n2##x,y,z,c)), \ + (I[129] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[144] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[159] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[174] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[189] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[204] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[219] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[10] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[25] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[40] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[55] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[70] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[85] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[100] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[115] = (T)(img)(_n3##x,y,z,c)), \ + (I[130] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[145] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[160] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[175] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[190] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[205] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[220] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[11] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[26] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[41] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[56] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[71] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[86] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[101] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[116] = (T)(img)(_n4##x,y,z,c)), \ + (I[131] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[146] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[161] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[176] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[191] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[206] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[221] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[12] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[27] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[42] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[57] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[72] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[87] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[102] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[117] = (T)(img)(_n5##x,y,z,c)), \ + (I[132] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[147] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[162] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[177] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[192] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[207] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[222] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[13] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[28] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[43] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[58] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[73] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[88] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[103] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[118] = (T)(img)(_n6##x,y,z,c)), \ + (I[133] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[148] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[163] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[178] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[193] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[208] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[223] = (T)(img)(_n6##x,_n7##y,z,c)), \ + x + 7>=(img).width()?(img).width() - 1:x + 7); \ + x<=(int)(x1) && ((_n7##x<(img).width() && ( \ + (I[14] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[29] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[44] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[59] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[74] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[89] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[104] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[119] = (T)(img)(_n7##x,y,z,c)), \ + (I[134] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[149] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[164] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[179] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[194] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[209] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[224] = (T)(img)(_n7##x,_n7##y,z,c)),1)) || \ + _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], \ + I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], \ + I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], \ + I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], \ + I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], \ + I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], \ + I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], \ + I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], \ + I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], \ + I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], \ + I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], \ + _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x) + +#define cimg_get15x15(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p7##x,_p7##y,z,c), I[1] = (T)(img)(_p6##x,_p7##y,z,c), I[2] = (T)(img)(_p5##x,_p7##y,z,c), I[3] = (T)(img)(_p4##x,_p7##y,z,c), I[4] = (T)(img)(_p3##x,_p7##y,z,c), I[5] = (T)(img)(_p2##x,_p7##y,z,c), I[6] = (T)(img)(_p1##x,_p7##y,z,c), I[7] = (T)(img)(x,_p7##y,z,c), I[8] = (T)(img)(_n1##x,_p7##y,z,c), I[9] = (T)(img)(_n2##x,_p7##y,z,c), I[10] = (T)(img)(_n3##x,_p7##y,z,c), I[11] = (T)(img)(_n4##x,_p7##y,z,c), I[12] = (T)(img)(_n5##x,_p7##y,z,c), I[13] = (T)(img)(_n6##x,_p7##y,z,c), I[14] = (T)(img)(_n7##x,_p7##y,z,c), \ + I[15] = (T)(img)(_p7##x,_p6##y,z,c), I[16] = (T)(img)(_p6##x,_p6##y,z,c), I[17] = (T)(img)(_p5##x,_p6##y,z,c), I[18] = (T)(img)(_p4##x,_p6##y,z,c), I[19] = (T)(img)(_p3##x,_p6##y,z,c), I[20] = (T)(img)(_p2##x,_p6##y,z,c), I[21] = (T)(img)(_p1##x,_p6##y,z,c), I[22] = (T)(img)(x,_p6##y,z,c), I[23] = (T)(img)(_n1##x,_p6##y,z,c), I[24] = (T)(img)(_n2##x,_p6##y,z,c), I[25] = (T)(img)(_n3##x,_p6##y,z,c), I[26] = (T)(img)(_n4##x,_p6##y,z,c), I[27] = (T)(img)(_n5##x,_p6##y,z,c), I[28] = (T)(img)(_n6##x,_p6##y,z,c), I[29] = (T)(img)(_n7##x,_p6##y,z,c), \ + I[30] = (T)(img)(_p7##x,_p5##y,z,c), I[31] = (T)(img)(_p6##x,_p5##y,z,c), I[32] = (T)(img)(_p5##x,_p5##y,z,c), I[33] = (T)(img)(_p4##x,_p5##y,z,c), I[34] = (T)(img)(_p3##x,_p5##y,z,c), I[35] = (T)(img)(_p2##x,_p5##y,z,c), I[36] = (T)(img)(_p1##x,_p5##y,z,c), I[37] = (T)(img)(x,_p5##y,z,c), I[38] = (T)(img)(_n1##x,_p5##y,z,c), I[39] = (T)(img)(_n2##x,_p5##y,z,c), I[40] = (T)(img)(_n3##x,_p5##y,z,c), I[41] = (T)(img)(_n4##x,_p5##y,z,c), I[42] = (T)(img)(_n5##x,_p5##y,z,c), I[43] = (T)(img)(_n6##x,_p5##y,z,c), I[44] = (T)(img)(_n7##x,_p5##y,z,c), \ + I[45] = (T)(img)(_p7##x,_p4##y,z,c), I[46] = (T)(img)(_p6##x,_p4##y,z,c), I[47] = (T)(img)(_p5##x,_p4##y,z,c), I[48] = (T)(img)(_p4##x,_p4##y,z,c), I[49] = (T)(img)(_p3##x,_p4##y,z,c), I[50] = (T)(img)(_p2##x,_p4##y,z,c), I[51] = (T)(img)(_p1##x,_p4##y,z,c), I[52] = (T)(img)(x,_p4##y,z,c), I[53] = (T)(img)(_n1##x,_p4##y,z,c), I[54] = (T)(img)(_n2##x,_p4##y,z,c), I[55] = (T)(img)(_n3##x,_p4##y,z,c), I[56] = (T)(img)(_n4##x,_p4##y,z,c), I[57] = (T)(img)(_n5##x,_p4##y,z,c), I[58] = (T)(img)(_n6##x,_p4##y,z,c), I[59] = (T)(img)(_n7##x,_p4##y,z,c), \ + I[60] = (T)(img)(_p7##x,_p3##y,z,c), I[61] = (T)(img)(_p6##x,_p3##y,z,c), I[62] = (T)(img)(_p5##x,_p3##y,z,c), I[63] = (T)(img)(_p4##x,_p3##y,z,c), I[64] = (T)(img)(_p3##x,_p3##y,z,c), I[65] = (T)(img)(_p2##x,_p3##y,z,c), I[66] = (T)(img)(_p1##x,_p3##y,z,c), I[67] = (T)(img)(x,_p3##y,z,c), I[68] = (T)(img)(_n1##x,_p3##y,z,c), I[69] = (T)(img)(_n2##x,_p3##y,z,c), I[70] = (T)(img)(_n3##x,_p3##y,z,c), I[71] = (T)(img)(_n4##x,_p3##y,z,c), I[72] = (T)(img)(_n5##x,_p3##y,z,c), I[73] = (T)(img)(_n6##x,_p3##y,z,c), I[74] = (T)(img)(_n7##x,_p3##y,z,c), \ + I[75] = (T)(img)(_p7##x,_p2##y,z,c), I[76] = (T)(img)(_p6##x,_p2##y,z,c), I[77] = (T)(img)(_p5##x,_p2##y,z,c), I[78] = (T)(img)(_p4##x,_p2##y,z,c), I[79] = (T)(img)(_p3##x,_p2##y,z,c), I[80] = (T)(img)(_p2##x,_p2##y,z,c), I[81] = (T)(img)(_p1##x,_p2##y,z,c), I[82] = (T)(img)(x,_p2##y,z,c), I[83] = (T)(img)(_n1##x,_p2##y,z,c), I[84] = (T)(img)(_n2##x,_p2##y,z,c), I[85] = (T)(img)(_n3##x,_p2##y,z,c), I[86] = (T)(img)(_n4##x,_p2##y,z,c), I[87] = (T)(img)(_n5##x,_p2##y,z,c), I[88] = (T)(img)(_n6##x,_p2##y,z,c), I[89] = (T)(img)(_n7##x,_p2##y,z,c), \ + I[90] = (T)(img)(_p7##x,_p1##y,z,c), I[91] = (T)(img)(_p6##x,_p1##y,z,c), I[92] = (T)(img)(_p5##x,_p1##y,z,c), I[93] = (T)(img)(_p4##x,_p1##y,z,c), I[94] = (T)(img)(_p3##x,_p1##y,z,c), I[95] = (T)(img)(_p2##x,_p1##y,z,c), I[96] = (T)(img)(_p1##x,_p1##y,z,c), I[97] = (T)(img)(x,_p1##y,z,c), I[98] = (T)(img)(_n1##x,_p1##y,z,c), I[99] = (T)(img)(_n2##x,_p1##y,z,c), I[100] = (T)(img)(_n3##x,_p1##y,z,c), I[101] = (T)(img)(_n4##x,_p1##y,z,c), I[102] = (T)(img)(_n5##x,_p1##y,z,c), I[103] = (T)(img)(_n6##x,_p1##y,z,c), I[104] = (T)(img)(_n7##x,_p1##y,z,c), \ + I[105] = (T)(img)(_p7##x,y,z,c), I[106] = (T)(img)(_p6##x,y,z,c), I[107] = (T)(img)(_p5##x,y,z,c), I[108] = (T)(img)(_p4##x,y,z,c), I[109] = (T)(img)(_p3##x,y,z,c), I[110] = (T)(img)(_p2##x,y,z,c), I[111] = (T)(img)(_p1##x,y,z,c), I[112] = (T)(img)(x,y,z,c), I[113] = (T)(img)(_n1##x,y,z,c), I[114] = (T)(img)(_n2##x,y,z,c), I[115] = (T)(img)(_n3##x,y,z,c), I[116] = (T)(img)(_n4##x,y,z,c), I[117] = (T)(img)(_n5##x,y,z,c), I[118] = (T)(img)(_n6##x,y,z,c), I[119] = (T)(img)(_n7##x,y,z,c), \ + I[120] = (T)(img)(_p7##x,_n1##y,z,c), I[121] = (T)(img)(_p6##x,_n1##y,z,c), I[122] = (T)(img)(_p5##x,_n1##y,z,c), I[123] = (T)(img)(_p4##x,_n1##y,z,c), I[124] = (T)(img)(_p3##x,_n1##y,z,c), I[125] = (T)(img)(_p2##x,_n1##y,z,c), I[126] = (T)(img)(_p1##x,_n1##y,z,c), I[127] = (T)(img)(x,_n1##y,z,c), I[128] = (T)(img)(_n1##x,_n1##y,z,c), I[129] = (T)(img)(_n2##x,_n1##y,z,c), I[130] = (T)(img)(_n3##x,_n1##y,z,c), I[131] = (T)(img)(_n4##x,_n1##y,z,c), I[132] = (T)(img)(_n5##x,_n1##y,z,c), I[133] = (T)(img)(_n6##x,_n1##y,z,c), I[134] = (T)(img)(_n7##x,_n1##y,z,c), \ + I[135] = (T)(img)(_p7##x,_n2##y,z,c), I[136] = (T)(img)(_p6##x,_n2##y,z,c), I[137] = (T)(img)(_p5##x,_n2##y,z,c), I[138] = (T)(img)(_p4##x,_n2##y,z,c), I[139] = (T)(img)(_p3##x,_n2##y,z,c), I[140] = (T)(img)(_p2##x,_n2##y,z,c), I[141] = (T)(img)(_p1##x,_n2##y,z,c), I[142] = (T)(img)(x,_n2##y,z,c), I[143] = (T)(img)(_n1##x,_n2##y,z,c), I[144] = (T)(img)(_n2##x,_n2##y,z,c), I[145] = (T)(img)(_n3##x,_n2##y,z,c), I[146] = (T)(img)(_n4##x,_n2##y,z,c), I[147] = (T)(img)(_n5##x,_n2##y,z,c), I[148] = (T)(img)(_n6##x,_n2##y,z,c), I[149] = (T)(img)(_n7##x,_n2##y,z,c), \ + I[150] = (T)(img)(_p7##x,_n3##y,z,c), I[151] = (T)(img)(_p6##x,_n3##y,z,c), I[152] = (T)(img)(_p5##x,_n3##y,z,c), I[153] = (T)(img)(_p4##x,_n3##y,z,c), I[154] = (T)(img)(_p3##x,_n3##y,z,c), I[155] = (T)(img)(_p2##x,_n3##y,z,c), I[156] = (T)(img)(_p1##x,_n3##y,z,c), I[157] = (T)(img)(x,_n3##y,z,c), I[158] = (T)(img)(_n1##x,_n3##y,z,c), I[159] = (T)(img)(_n2##x,_n3##y,z,c), I[160] = (T)(img)(_n3##x,_n3##y,z,c), I[161] = (T)(img)(_n4##x,_n3##y,z,c), I[162] = (T)(img)(_n5##x,_n3##y,z,c), I[163] = (T)(img)(_n6##x,_n3##y,z,c), I[164] = (T)(img)(_n7##x,_n3##y,z,c), \ + I[165] = (T)(img)(_p7##x,_n4##y,z,c), I[166] = (T)(img)(_p6##x,_n4##y,z,c), I[167] = (T)(img)(_p5##x,_n4##y,z,c), I[168] = (T)(img)(_p4##x,_n4##y,z,c), I[169] = (T)(img)(_p3##x,_n4##y,z,c), I[170] = (T)(img)(_p2##x,_n4##y,z,c), I[171] = (T)(img)(_p1##x,_n4##y,z,c), I[172] = (T)(img)(x,_n4##y,z,c), I[173] = (T)(img)(_n1##x,_n4##y,z,c), I[174] = (T)(img)(_n2##x,_n4##y,z,c), I[175] = (T)(img)(_n3##x,_n4##y,z,c), I[176] = (T)(img)(_n4##x,_n4##y,z,c), I[177] = (T)(img)(_n5##x,_n4##y,z,c), I[178] = (T)(img)(_n6##x,_n4##y,z,c), I[179] = (T)(img)(_n7##x,_n4##y,z,c), \ + I[180] = (T)(img)(_p7##x,_n5##y,z,c), I[181] = (T)(img)(_p6##x,_n5##y,z,c), I[182] = (T)(img)(_p5##x,_n5##y,z,c), I[183] = (T)(img)(_p4##x,_n5##y,z,c), I[184] = (T)(img)(_p3##x,_n5##y,z,c), I[185] = (T)(img)(_p2##x,_n5##y,z,c), I[186] = (T)(img)(_p1##x,_n5##y,z,c), I[187] = (T)(img)(x,_n5##y,z,c), I[188] = (T)(img)(_n1##x,_n5##y,z,c), I[189] = (T)(img)(_n2##x,_n5##y,z,c), I[190] = (T)(img)(_n3##x,_n5##y,z,c), I[191] = (T)(img)(_n4##x,_n5##y,z,c), I[192] = (T)(img)(_n5##x,_n5##y,z,c), I[193] = (T)(img)(_n6##x,_n5##y,z,c), I[194] = (T)(img)(_n7##x,_n5##y,z,c), \ + I[195] = (T)(img)(_p7##x,_n6##y,z,c), I[196] = (T)(img)(_p6##x,_n6##y,z,c), I[197] = (T)(img)(_p5##x,_n6##y,z,c), I[198] = (T)(img)(_p4##x,_n6##y,z,c), I[199] = (T)(img)(_p3##x,_n6##y,z,c), I[200] = (T)(img)(_p2##x,_n6##y,z,c), I[201] = (T)(img)(_p1##x,_n6##y,z,c), I[202] = (T)(img)(x,_n6##y,z,c), I[203] = (T)(img)(_n1##x,_n6##y,z,c), I[204] = (T)(img)(_n2##x,_n6##y,z,c), I[205] = (T)(img)(_n3##x,_n6##y,z,c), I[206] = (T)(img)(_n4##x,_n6##y,z,c), I[207] = (T)(img)(_n5##x,_n6##y,z,c), I[208] = (T)(img)(_n6##x,_n6##y,z,c), I[209] = (T)(img)(_n7##x,_n6##y,z,c), \ + I[210] = (T)(img)(_p7##x,_n7##y,z,c), I[211] = (T)(img)(_p6##x,_n7##y,z,c), I[212] = (T)(img)(_p5##x,_n7##y,z,c), I[213] = (T)(img)(_p4##x,_n7##y,z,c), I[214] = (T)(img)(_p3##x,_n7##y,z,c), I[215] = (T)(img)(_p2##x,_n7##y,z,c), I[216] = (T)(img)(_p1##x,_n7##y,z,c), I[217] = (T)(img)(x,_n7##y,z,c), I[218] = (T)(img)(_n1##x,_n7##y,z,c), I[219] = (T)(img)(_n2##x,_n7##y,z,c), I[220] = (T)(img)(_n3##x,_n7##y,z,c), I[221] = (T)(img)(_n4##x,_n7##y,z,c), I[222] = (T)(img)(_n5##x,_n7##y,z,c), I[223] = (T)(img)(_n6##x,_n7##y,z,c), I[224] = (T)(img)(_n7##x,_n7##y,z,c); + +// Define 16x16 loop macros +//------------------------- +#define cimg_for16(bound,i) for (int i = 0, \ + _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8; \ + _n8##i<(int)(bound) || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i) + +#define cimg_for16X(img,x) cimg_for16((img)._width,x) +#define cimg_for16Y(img,y) cimg_for16((img)._height,y) +#define cimg_for16Z(img,z) cimg_for16((img)._depth,z) +#define cimg_for16C(img,c) cimg_for16((img)._spectrum,c) +#define cimg_for16XY(img,x,y) cimg_for16Y(img,y) cimg_for16X(img,x) +#define cimg_for16XZ(img,x,z) cimg_for16Z(img,z) cimg_for16X(img,x) +#define cimg_for16XC(img,x,c) cimg_for16C(img,c) cimg_for16X(img,x) +#define cimg_for16YZ(img,y,z) cimg_for16Z(img,z) cimg_for16Y(img,y) +#define cimg_for16YC(img,y,c) cimg_for16C(img,c) cimg_for16Y(img,y) +#define cimg_for16ZC(img,z,c) cimg_for16C(img,c) cimg_for16Z(img,z) +#define cimg_for16XYZ(img,x,y,z) cimg_for16Z(img,z) cimg_for16XY(img,x,y) +#define cimg_for16XZC(img,x,z,c) cimg_for16C(img,c) cimg_for16XZ(img,x,z) +#define cimg_for16YZC(img,y,z,c) cimg_for16C(img,c) cimg_for16YZ(img,y,z) +#define cimg_for16XYZC(img,x,y,z,c) cimg_for16C(img,c) cimg_for16XYZ(img,x,y,z) + +#define cimg_for_in16(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8; \ + i<=(int)(i1) && (_n8##i<(int)(bound) || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i) + +#define cimg_for_in16X(img,x0,x1,x) cimg_for_in16((img)._width,x0,x1,x) +#define cimg_for_in16Y(img,y0,y1,y) cimg_for_in16((img)._height,y0,y1,y) +#define cimg_for_in16Z(img,z0,z1,z) cimg_for_in16((img)._depth,z0,z1,z) +#define cimg_for_in16C(img,c0,c1,c) cimg_for_in16((img)._spectrum,c0,c1,c) +#define cimg_for_in16XY(img,x0,y0,x1,y1,x,y) cimg_for_in16Y(img,y0,y1,y) cimg_for_in16X(img,x0,x1,x) +#define cimg_for_in16XZ(img,x0,z0,x1,z1,x,z) cimg_for_in16Z(img,z0,z1,z) cimg_for_in16X(img,x0,x1,x) +#define cimg_for_in16XC(img,x0,c0,x1,c1,x,c) cimg_for_in16C(img,c0,c1,c) cimg_for_in16X(img,x0,x1,x) +#define cimg_for_in16YZ(img,y0,z0,y1,z1,y,z) cimg_for_in16Z(img,z0,z1,z) cimg_for_in16Y(img,y0,y1,y) +#define cimg_for_in16YC(img,y0,c0,y1,c1,y,c) cimg_for_in16C(img,c0,c1,c) cimg_for_in16Y(img,y0,y1,y) +#define cimg_for_in16ZC(img,z0,c0,z1,c1,z,c) cimg_for_in16C(img,c0,c1,c) cimg_for_in16Z(img,z0,z1,z) +#define cimg_for_in16XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in16Z(img,z0,z1,z) cimg_for_in16XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in16XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in16C(img,c0,c1,c) cimg_for_in16XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in16YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in16C(img,c0,c1,c) cimg_for_in16YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in16XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in16C(img,c0,c1,c) cimg_for_in16XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for16x16(img,x,y,z,c,I,T) \ + cimg_for16((img)._height,y) for (int x = 0, \ + _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = (T)(img)(0,_p7##y,z,c)), \ + (I[16] = I[17] = I[18] = I[19] = I[20] = I[21] = I[22] = I[23] = (T)(img)(0,_p6##y,z,c)), \ + (I[32] = I[33] = I[34] = I[35] = I[36] = I[37] = I[38] = I[39] = (T)(img)(0,_p5##y,z,c)), \ + (I[48] = I[49] = I[50] = I[51] = I[52] = I[53] = I[54] = I[55] = (T)(img)(0,_p4##y,z,c)), \ + (I[64] = I[65] = I[66] = I[67] = I[68] = I[69] = I[70] = I[71] = (T)(img)(0,_p3##y,z,c)), \ + (I[80] = I[81] = I[82] = I[83] = I[84] = I[85] = I[86] = I[87] = (T)(img)(0,_p2##y,z,c)), \ + (I[96] = I[97] = I[98] = I[99] = I[100] = I[101] = I[102] = I[103] = (T)(img)(0,_p1##y,z,c)), \ + (I[112] = I[113] = I[114] = I[115] = I[116] = I[117] = I[118] = I[119] = (T)(img)(0,y,z,c)), \ + (I[128] = I[129] = I[130] = I[131] = I[132] = I[133] = I[134] = I[135] = (T)(img)(0,_n1##y,z,c)), \ + (I[144] = I[145] = I[146] = I[147] = I[148] = I[149] = I[150] = I[151] = (T)(img)(0,_n2##y,z,c)), \ + (I[160] = I[161] = I[162] = I[163] = I[164] = I[165] = I[166] = I[167] = (T)(img)(0,_n3##y,z,c)), \ + (I[176] = I[177] = I[178] = I[179] = I[180] = I[181] = I[182] = I[183] = (T)(img)(0,_n4##y,z,c)), \ + (I[192] = I[193] = I[194] = I[195] = I[196] = I[197] = I[198] = I[199] = (T)(img)(0,_n5##y,z,c)), \ + (I[208] = I[209] = I[210] = I[211] = I[212] = I[213] = I[214] = I[215] = (T)(img)(0,_n6##y,z,c)), \ + (I[224] = I[225] = I[226] = I[227] = I[228] = I[229] = I[230] = I[231] = (T)(img)(0,_n7##y,z,c)), \ + (I[240] = I[241] = I[242] = I[243] = I[244] = I[245] = I[246] = I[247] = (T)(img)(0,_n8##y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[24] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[40] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[56] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[72] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[88] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[104] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[120] = (T)(img)(_n1##x,y,z,c)), \ + (I[136] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[152] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[168] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[184] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[200] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[216] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[232] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[248] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[9] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[25] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[41] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[57] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[73] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[89] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[105] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[121] = (T)(img)(_n2##x,y,z,c)), \ + (I[137] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[153] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[169] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[185] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[201] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[217] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[233] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[249] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[10] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[26] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[42] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[58] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[74] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[90] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[106] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[122] = (T)(img)(_n3##x,y,z,c)), \ + (I[138] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[154] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[170] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[186] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[202] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[218] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[234] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[250] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[11] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[27] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[43] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[59] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[75] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[91] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[107] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[123] = (T)(img)(_n4##x,y,z,c)), \ + (I[139] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[155] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[171] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[187] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[203] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[219] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[235] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[251] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[12] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[28] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[44] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[60] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[76] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[92] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[108] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[124] = (T)(img)(_n5##x,y,z,c)), \ + (I[140] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[156] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[172] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[188] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[204] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[220] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[236] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[252] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[13] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[29] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[45] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[61] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[77] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[93] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[109] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[125] = (T)(img)(_n6##x,y,z,c)), \ + (I[141] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[157] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[173] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[189] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[205] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[221] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[237] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[253] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[14] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[30] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[46] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[62] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[78] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[94] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[110] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[126] = (T)(img)(_n7##x,y,z,c)), \ + (I[142] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[158] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[174] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[190] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[206] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[222] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[238] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[254] = (T)(img)(_n7##x,_n8##y,z,c)), \ + 8>=((img)._width)?(img).width() - 1:8); \ + (_n8##x<(img).width() && ( \ + (I[15] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[31] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[47] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[63] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[79] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[95] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[111] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[127] = (T)(img)(_n8##x,y,z,c)), \ + (I[143] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[159] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[175] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[191] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[207] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[223] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[239] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[255] = (T)(img)(_n8##x,_n8##y,z,c)),1)) || \ + _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], \ + I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], \ + I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], \ + I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], \ + I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], \ + I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], \ + I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], \ + I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], \ + I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], \ + _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x) + +#define cimg_for_in16x16(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in16((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = (int)( \ + (I[0] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[16] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[32] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[48] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[64] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[80] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[96] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[112] = (T)(img)(_p7##x,y,z,c)), \ + (I[128] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[144] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[160] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[176] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[192] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[208] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[224] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[240] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[1] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[17] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[33] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[49] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[65] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[81] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[97] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[113] = (T)(img)(_p6##x,y,z,c)), \ + (I[129] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[145] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[161] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[177] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[193] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[209] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[225] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[241] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[2] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[18] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[34] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[50] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[66] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[82] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[98] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[114] = (T)(img)(_p5##x,y,z,c)), \ + (I[130] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[146] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[162] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[178] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[194] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[210] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[226] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[242] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[3] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[19] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[35] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[51] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[67] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[83] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[99] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[115] = (T)(img)(_p4##x,y,z,c)), \ + (I[131] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[147] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[163] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[179] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[195] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[211] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[227] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[243] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[4] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[20] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[36] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[52] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[68] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[84] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[100] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[116] = (T)(img)(_p3##x,y,z,c)), \ + (I[132] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[148] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[164] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[180] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[196] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[212] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[228] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[244] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[5] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[21] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[37] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[53] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[69] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[85] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[101] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[117] = (T)(img)(_p2##x,y,z,c)), \ + (I[133] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[149] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[165] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[181] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[197] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[213] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[229] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[245] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[6] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[22] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[38] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[54] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[70] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[86] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[102] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[118] = (T)(img)(_p1##x,y,z,c)), \ + (I[134] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[150] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[166] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[182] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[198] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[214] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[230] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[246] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[7] = (T)(img)(x,_p7##y,z,c)), \ + (I[23] = (T)(img)(x,_p6##y,z,c)), \ + (I[39] = (T)(img)(x,_p5##y,z,c)), \ + (I[55] = (T)(img)(x,_p4##y,z,c)), \ + (I[71] = (T)(img)(x,_p3##y,z,c)), \ + (I[87] = (T)(img)(x,_p2##y,z,c)), \ + (I[103] = (T)(img)(x,_p1##y,z,c)), \ + (I[119] = (T)(img)(x,y,z,c)), \ + (I[135] = (T)(img)(x,_n1##y,z,c)), \ + (I[151] = (T)(img)(x,_n2##y,z,c)), \ + (I[167] = (T)(img)(x,_n3##y,z,c)), \ + (I[183] = (T)(img)(x,_n4##y,z,c)), \ + (I[199] = (T)(img)(x,_n5##y,z,c)), \ + (I[215] = (T)(img)(x,_n6##y,z,c)), \ + (I[231] = (T)(img)(x,_n7##y,z,c)), \ + (I[247] = (T)(img)(x,_n8##y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[24] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[40] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[56] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[72] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[88] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[104] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[120] = (T)(img)(_n1##x,y,z,c)), \ + (I[136] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[152] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[168] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[184] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[200] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[216] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[232] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[248] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[9] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[25] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[41] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[57] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[73] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[89] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[105] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[121] = (T)(img)(_n2##x,y,z,c)), \ + (I[137] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[153] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[169] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[185] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[201] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[217] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[233] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[249] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[10] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[26] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[42] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[58] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[74] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[90] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[106] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[122] = (T)(img)(_n3##x,y,z,c)), \ + (I[138] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[154] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[170] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[186] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[202] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[218] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[234] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[250] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[11] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[27] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[43] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[59] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[75] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[91] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[107] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[123] = (T)(img)(_n4##x,y,z,c)), \ + (I[139] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[155] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[171] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[187] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[203] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[219] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[235] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[251] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[12] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[28] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[44] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[60] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[76] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[92] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[108] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[124] = (T)(img)(_n5##x,y,z,c)), \ + (I[140] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[156] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[172] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[188] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[204] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[220] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[236] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[252] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[13] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[29] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[45] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[61] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[77] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[93] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[109] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[125] = (T)(img)(_n6##x,y,z,c)), \ + (I[141] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[157] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[173] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[189] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[205] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[221] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[237] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[253] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[14] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[30] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[46] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[62] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[78] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[94] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[110] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[126] = (T)(img)(_n7##x,y,z,c)), \ + (I[142] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[158] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[174] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[190] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[206] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[222] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[238] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[254] = (T)(img)(_n7##x,_n8##y,z,c)), \ + x + 8>=(img).width()?(img).width() - 1:x + 8); \ + x<=(int)(x1) && ((_n8##x<(img).width() && ( \ + (I[15] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[31] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[47] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[63] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[79] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[95] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[111] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[127] = (T)(img)(_n8##x,y,z,c)), \ + (I[143] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[159] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[175] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[191] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[207] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[223] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[239] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[255] = (T)(img)(_n8##x,_n8##y,z,c)),1)) || \ + _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], \ + I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], \ + I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], \ + I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], \ + I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], \ + I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], \ + I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], \ + I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], \ + I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], \ + _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x) + +#define cimg_get16x16(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p7##x,_p7##y,z,c), I[1] = (T)(img)(_p6##x,_p7##y,z,c), I[2] = (T)(img)(_p5##x,_p7##y,z,c), I[3] = (T)(img)(_p4##x,_p7##y,z,c), I[4] = (T)(img)(_p3##x,_p7##y,z,c), I[5] = (T)(img)(_p2##x,_p7##y,z,c), I[6] = (T)(img)(_p1##x,_p7##y,z,c), I[7] = (T)(img)(x,_p7##y,z,c), I[8] = (T)(img)(_n1##x,_p7##y,z,c), I[9] = (T)(img)(_n2##x,_p7##y,z,c), I[10] = (T)(img)(_n3##x,_p7##y,z,c), I[11] = (T)(img)(_n4##x,_p7##y,z,c), I[12] = (T)(img)(_n5##x,_p7##y,z,c), I[13] = (T)(img)(_n6##x,_p7##y,z,c), I[14] = (T)(img)(_n7##x,_p7##y,z,c), I[15] = (T)(img)(_n8##x,_p7##y,z,c), \ + I[16] = (T)(img)(_p7##x,_p6##y,z,c), I[17] = (T)(img)(_p6##x,_p6##y,z,c), I[18] = (T)(img)(_p5##x,_p6##y,z,c), I[19] = (T)(img)(_p4##x,_p6##y,z,c), I[20] = (T)(img)(_p3##x,_p6##y,z,c), I[21] = (T)(img)(_p2##x,_p6##y,z,c), I[22] = (T)(img)(_p1##x,_p6##y,z,c), I[23] = (T)(img)(x,_p6##y,z,c), I[24] = (T)(img)(_n1##x,_p6##y,z,c), I[25] = (T)(img)(_n2##x,_p6##y,z,c), I[26] = (T)(img)(_n3##x,_p6##y,z,c), I[27] = (T)(img)(_n4##x,_p6##y,z,c), I[28] = (T)(img)(_n5##x,_p6##y,z,c), I[29] = (T)(img)(_n6##x,_p6##y,z,c), I[30] = (T)(img)(_n7##x,_p6##y,z,c), I[31] = (T)(img)(_n8##x,_p6##y,z,c), \ + I[32] = (T)(img)(_p7##x,_p5##y,z,c), I[33] = (T)(img)(_p6##x,_p5##y,z,c), I[34] = (T)(img)(_p5##x,_p5##y,z,c), I[35] = (T)(img)(_p4##x,_p5##y,z,c), I[36] = (T)(img)(_p3##x,_p5##y,z,c), I[37] = (T)(img)(_p2##x,_p5##y,z,c), I[38] = (T)(img)(_p1##x,_p5##y,z,c), I[39] = (T)(img)(x,_p5##y,z,c), I[40] = (T)(img)(_n1##x,_p5##y,z,c), I[41] = (T)(img)(_n2##x,_p5##y,z,c), I[42] = (T)(img)(_n3##x,_p5##y,z,c), I[43] = (T)(img)(_n4##x,_p5##y,z,c), I[44] = (T)(img)(_n5##x,_p5##y,z,c), I[45] = (T)(img)(_n6##x,_p5##y,z,c), I[46] = (T)(img)(_n7##x,_p5##y,z,c), I[47] = (T)(img)(_n8##x,_p5##y,z,c), \ + I[48] = (T)(img)(_p7##x,_p4##y,z,c), I[49] = (T)(img)(_p6##x,_p4##y,z,c), I[50] = (T)(img)(_p5##x,_p4##y,z,c), I[51] = (T)(img)(_p4##x,_p4##y,z,c), I[52] = (T)(img)(_p3##x,_p4##y,z,c), I[53] = (T)(img)(_p2##x,_p4##y,z,c), I[54] = (T)(img)(_p1##x,_p4##y,z,c), I[55] = (T)(img)(x,_p4##y,z,c), I[56] = (T)(img)(_n1##x,_p4##y,z,c), I[57] = (T)(img)(_n2##x,_p4##y,z,c), I[58] = (T)(img)(_n3##x,_p4##y,z,c), I[59] = (T)(img)(_n4##x,_p4##y,z,c), I[60] = (T)(img)(_n5##x,_p4##y,z,c), I[61] = (T)(img)(_n6##x,_p4##y,z,c), I[62] = (T)(img)(_n7##x,_p4##y,z,c), I[63] = (T)(img)(_n8##x,_p4##y,z,c), \ + I[64] = (T)(img)(_p7##x,_p3##y,z,c), I[65] = (T)(img)(_p6##x,_p3##y,z,c), I[66] = (T)(img)(_p5##x,_p3##y,z,c), I[67] = (T)(img)(_p4##x,_p3##y,z,c), I[68] = (T)(img)(_p3##x,_p3##y,z,c), I[69] = (T)(img)(_p2##x,_p3##y,z,c), I[70] = (T)(img)(_p1##x,_p3##y,z,c), I[71] = (T)(img)(x,_p3##y,z,c), I[72] = (T)(img)(_n1##x,_p3##y,z,c), I[73] = (T)(img)(_n2##x,_p3##y,z,c), I[74] = (T)(img)(_n3##x,_p3##y,z,c), I[75] = (T)(img)(_n4##x,_p3##y,z,c), I[76] = (T)(img)(_n5##x,_p3##y,z,c), I[77] = (T)(img)(_n6##x,_p3##y,z,c), I[78] = (T)(img)(_n7##x,_p3##y,z,c), I[79] = (T)(img)(_n8##x,_p3##y,z,c), \ + I[80] = (T)(img)(_p7##x,_p2##y,z,c), I[81] = (T)(img)(_p6##x,_p2##y,z,c), I[82] = (T)(img)(_p5##x,_p2##y,z,c), I[83] = (T)(img)(_p4##x,_p2##y,z,c), I[84] = (T)(img)(_p3##x,_p2##y,z,c), I[85] = (T)(img)(_p2##x,_p2##y,z,c), I[86] = (T)(img)(_p1##x,_p2##y,z,c), I[87] = (T)(img)(x,_p2##y,z,c), I[88] = (T)(img)(_n1##x,_p2##y,z,c), I[89] = (T)(img)(_n2##x,_p2##y,z,c), I[90] = (T)(img)(_n3##x,_p2##y,z,c), I[91] = (T)(img)(_n4##x,_p2##y,z,c), I[92] = (T)(img)(_n5##x,_p2##y,z,c), I[93] = (T)(img)(_n6##x,_p2##y,z,c), I[94] = (T)(img)(_n7##x,_p2##y,z,c), I[95] = (T)(img)(_n8##x,_p2##y,z,c), \ + I[96] = (T)(img)(_p7##x,_p1##y,z,c), I[97] = (T)(img)(_p6##x,_p1##y,z,c), I[98] = (T)(img)(_p5##x,_p1##y,z,c), I[99] = (T)(img)(_p4##x,_p1##y,z,c), I[100] = (T)(img)(_p3##x,_p1##y,z,c), I[101] = (T)(img)(_p2##x,_p1##y,z,c), I[102] = (T)(img)(_p1##x,_p1##y,z,c), I[103] = (T)(img)(x,_p1##y,z,c), I[104] = (T)(img)(_n1##x,_p1##y,z,c), I[105] = (T)(img)(_n2##x,_p1##y,z,c), I[106] = (T)(img)(_n3##x,_p1##y,z,c), I[107] = (T)(img)(_n4##x,_p1##y,z,c), I[108] = (T)(img)(_n5##x,_p1##y,z,c), I[109] = (T)(img)(_n6##x,_p1##y,z,c), I[110] = (T)(img)(_n7##x,_p1##y,z,c), I[111] = (T)(img)(_n8##x,_p1##y,z,c), \ + I[112] = (T)(img)(_p7##x,y,z,c), I[113] = (T)(img)(_p6##x,y,z,c), I[114] = (T)(img)(_p5##x,y,z,c), I[115] = (T)(img)(_p4##x,y,z,c), I[116] = (T)(img)(_p3##x,y,z,c), I[117] = (T)(img)(_p2##x,y,z,c), I[118] = (T)(img)(_p1##x,y,z,c), I[119] = (T)(img)(x,y,z,c), I[120] = (T)(img)(_n1##x,y,z,c), I[121] = (T)(img)(_n2##x,y,z,c), I[122] = (T)(img)(_n3##x,y,z,c), I[123] = (T)(img)(_n4##x,y,z,c), I[124] = (T)(img)(_n5##x,y,z,c), I[125] = (T)(img)(_n6##x,y,z,c), I[126] = (T)(img)(_n7##x,y,z,c), I[127] = (T)(img)(_n8##x,y,z,c), \ + I[128] = (T)(img)(_p7##x,_n1##y,z,c), I[129] = (T)(img)(_p6##x,_n1##y,z,c), I[130] = (T)(img)(_p5##x,_n1##y,z,c), I[131] = (T)(img)(_p4##x,_n1##y,z,c), I[132] = (T)(img)(_p3##x,_n1##y,z,c), I[133] = (T)(img)(_p2##x,_n1##y,z,c), I[134] = (T)(img)(_p1##x,_n1##y,z,c), I[135] = (T)(img)(x,_n1##y,z,c), I[136] = (T)(img)(_n1##x,_n1##y,z,c), I[137] = (T)(img)(_n2##x,_n1##y,z,c), I[138] = (T)(img)(_n3##x,_n1##y,z,c), I[139] = (T)(img)(_n4##x,_n1##y,z,c), I[140] = (T)(img)(_n5##x,_n1##y,z,c), I[141] = (T)(img)(_n6##x,_n1##y,z,c), I[142] = (T)(img)(_n7##x,_n1##y,z,c), I[143] = (T)(img)(_n8##x,_n1##y,z,c), \ + I[144] = (T)(img)(_p7##x,_n2##y,z,c), I[145] = (T)(img)(_p6##x,_n2##y,z,c), I[146] = (T)(img)(_p5##x,_n2##y,z,c), I[147] = (T)(img)(_p4##x,_n2##y,z,c), I[148] = (T)(img)(_p3##x,_n2##y,z,c), I[149] = (T)(img)(_p2##x,_n2##y,z,c), I[150] = (T)(img)(_p1##x,_n2##y,z,c), I[151] = (T)(img)(x,_n2##y,z,c), I[152] = (T)(img)(_n1##x,_n2##y,z,c), I[153] = (T)(img)(_n2##x,_n2##y,z,c), I[154] = (T)(img)(_n3##x,_n2##y,z,c), I[155] = (T)(img)(_n4##x,_n2##y,z,c), I[156] = (T)(img)(_n5##x,_n2##y,z,c), I[157] = (T)(img)(_n6##x,_n2##y,z,c), I[158] = (T)(img)(_n7##x,_n2##y,z,c), I[159] = (T)(img)(_n8##x,_n2##y,z,c), \ + I[160] = (T)(img)(_p7##x,_n3##y,z,c), I[161] = (T)(img)(_p6##x,_n3##y,z,c), I[162] = (T)(img)(_p5##x,_n3##y,z,c), I[163] = (T)(img)(_p4##x,_n3##y,z,c), I[164] = (T)(img)(_p3##x,_n3##y,z,c), I[165] = (T)(img)(_p2##x,_n3##y,z,c), I[166] = (T)(img)(_p1##x,_n3##y,z,c), I[167] = (T)(img)(x,_n3##y,z,c), I[168] = (T)(img)(_n1##x,_n3##y,z,c), I[169] = (T)(img)(_n2##x,_n3##y,z,c), I[170] = (T)(img)(_n3##x,_n3##y,z,c), I[171] = (T)(img)(_n4##x,_n3##y,z,c), I[172] = (T)(img)(_n5##x,_n3##y,z,c), I[173] = (T)(img)(_n6##x,_n3##y,z,c), I[174] = (T)(img)(_n7##x,_n3##y,z,c), I[175] = (T)(img)(_n8##x,_n3##y,z,c), \ + I[176] = (T)(img)(_p7##x,_n4##y,z,c), I[177] = (T)(img)(_p6##x,_n4##y,z,c), I[178] = (T)(img)(_p5##x,_n4##y,z,c), I[179] = (T)(img)(_p4##x,_n4##y,z,c), I[180] = (T)(img)(_p3##x,_n4##y,z,c), I[181] = (T)(img)(_p2##x,_n4##y,z,c), I[182] = (T)(img)(_p1##x,_n4##y,z,c), I[183] = (T)(img)(x,_n4##y,z,c), I[184] = (T)(img)(_n1##x,_n4##y,z,c), I[185] = (T)(img)(_n2##x,_n4##y,z,c), I[186] = (T)(img)(_n3##x,_n4##y,z,c), I[187] = (T)(img)(_n4##x,_n4##y,z,c), I[188] = (T)(img)(_n5##x,_n4##y,z,c), I[189] = (T)(img)(_n6##x,_n4##y,z,c), I[190] = (T)(img)(_n7##x,_n4##y,z,c), I[191] = (T)(img)(_n8##x,_n4##y,z,c), \ + I[192] = (T)(img)(_p7##x,_n5##y,z,c), I[193] = (T)(img)(_p6##x,_n5##y,z,c), I[194] = (T)(img)(_p5##x,_n5##y,z,c), I[195] = (T)(img)(_p4##x,_n5##y,z,c), I[196] = (T)(img)(_p3##x,_n5##y,z,c), I[197] = (T)(img)(_p2##x,_n5##y,z,c), I[198] = (T)(img)(_p1##x,_n5##y,z,c), I[199] = (T)(img)(x,_n5##y,z,c), I[200] = (T)(img)(_n1##x,_n5##y,z,c), I[201] = (T)(img)(_n2##x,_n5##y,z,c), I[202] = (T)(img)(_n3##x,_n5##y,z,c), I[203] = (T)(img)(_n4##x,_n5##y,z,c), I[204] = (T)(img)(_n5##x,_n5##y,z,c), I[205] = (T)(img)(_n6##x,_n5##y,z,c), I[206] = (T)(img)(_n7##x,_n5##y,z,c), I[207] = (T)(img)(_n8##x,_n5##y,z,c), \ + I[208] = (T)(img)(_p7##x,_n6##y,z,c), I[209] = (T)(img)(_p6##x,_n6##y,z,c), I[210] = (T)(img)(_p5##x,_n6##y,z,c), I[211] = (T)(img)(_p4##x,_n6##y,z,c), I[212] = (T)(img)(_p3##x,_n6##y,z,c), I[213] = (T)(img)(_p2##x,_n6##y,z,c), I[214] = (T)(img)(_p1##x,_n6##y,z,c), I[215] = (T)(img)(x,_n6##y,z,c), I[216] = (T)(img)(_n1##x,_n6##y,z,c), I[217] = (T)(img)(_n2##x,_n6##y,z,c), I[218] = (T)(img)(_n3##x,_n6##y,z,c), I[219] = (T)(img)(_n4##x,_n6##y,z,c), I[220] = (T)(img)(_n5##x,_n6##y,z,c), I[221] = (T)(img)(_n6##x,_n6##y,z,c), I[222] = (T)(img)(_n7##x,_n6##y,z,c), I[223] = (T)(img)(_n8##x,_n6##y,z,c), \ + I[224] = (T)(img)(_p7##x,_n7##y,z,c), I[225] = (T)(img)(_p6##x,_n7##y,z,c), I[226] = (T)(img)(_p5##x,_n7##y,z,c), I[227] = (T)(img)(_p4##x,_n7##y,z,c), I[228] = (T)(img)(_p3##x,_n7##y,z,c), I[229] = (T)(img)(_p2##x,_n7##y,z,c), I[230] = (T)(img)(_p1##x,_n7##y,z,c), I[231] = (T)(img)(x,_n7##y,z,c), I[232] = (T)(img)(_n1##x,_n7##y,z,c), I[233] = (T)(img)(_n2##x,_n7##y,z,c), I[234] = (T)(img)(_n3##x,_n7##y,z,c), I[235] = (T)(img)(_n4##x,_n7##y,z,c), I[236] = (T)(img)(_n5##x,_n7##y,z,c), I[237] = (T)(img)(_n6##x,_n7##y,z,c), I[238] = (T)(img)(_n7##x,_n7##y,z,c), I[239] = (T)(img)(_n8##x,_n7##y,z,c), \ + I[240] = (T)(img)(_p7##x,_n8##y,z,c), I[241] = (T)(img)(_p6##x,_n8##y,z,c), I[242] = (T)(img)(_p5##x,_n8##y,z,c), I[243] = (T)(img)(_p4##x,_n8##y,z,c), I[244] = (T)(img)(_p3##x,_n8##y,z,c), I[245] = (T)(img)(_p2##x,_n8##y,z,c), I[246] = (T)(img)(_p1##x,_n8##y,z,c), I[247] = (T)(img)(x,_n8##y,z,c), I[248] = (T)(img)(_n1##x,_n8##y,z,c), I[249] = (T)(img)(_n2##x,_n8##y,z,c), I[250] = (T)(img)(_n3##x,_n8##y,z,c), I[251] = (T)(img)(_n4##x,_n8##y,z,c), I[252] = (T)(img)(_n5##x,_n8##y,z,c), I[253] = (T)(img)(_n6##x,_n8##y,z,c), I[254] = (T)(img)(_n7##x,_n8##y,z,c), I[255] = (T)(img)(_n8##x,_n8##y,z,c); + +// Define 17x17 loop macros +//------------------------- +#define cimg_for17(bound,i) for (int i = 0, \ + _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8; \ + _n8##i<(int)(bound) || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i) + +#define cimg_for17X(img,x) cimg_for17((img)._width,x) +#define cimg_for17Y(img,y) cimg_for17((img)._height,y) +#define cimg_for17Z(img,z) cimg_for17((img)._depth,z) +#define cimg_for17C(img,c) cimg_for17((img)._spectrum,c) +#define cimg_for17XY(img,x,y) cimg_for17Y(img,y) cimg_for17X(img,x) +#define cimg_for17XZ(img,x,z) cimg_for17Z(img,z) cimg_for17X(img,x) +#define cimg_for17XC(img,x,c) cimg_for17C(img,c) cimg_for17X(img,x) +#define cimg_for17YZ(img,y,z) cimg_for17Z(img,z) cimg_for17Y(img,y) +#define cimg_for17YC(img,y,c) cimg_for17C(img,c) cimg_for17Y(img,y) +#define cimg_for17ZC(img,z,c) cimg_for17C(img,c) cimg_for17Z(img,z) +#define cimg_for17XYZ(img,x,y,z) cimg_for17Z(img,z) cimg_for17XY(img,x,y) +#define cimg_for17XZC(img,x,z,c) cimg_for17C(img,c) cimg_for17XZ(img,x,z) +#define cimg_for17YZC(img,y,z,c) cimg_for17C(img,c) cimg_for17YZ(img,y,z) +#define cimg_for17XYZC(img,x,y,z,c) cimg_for17C(img,c) cimg_for17XYZ(img,x,y,z) + +#define cimg_for_in17(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8; \ + i<=(int)(i1) && (_n8##i<(int)(bound) || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i) + +#define cimg_for_in17X(img,x0,x1,x) cimg_for_in17((img)._width,x0,x1,x) +#define cimg_for_in17Y(img,y0,y1,y) cimg_for_in17((img)._height,y0,y1,y) +#define cimg_for_in17Z(img,z0,z1,z) cimg_for_in17((img)._depth,z0,z1,z) +#define cimg_for_in17C(img,c0,c1,c) cimg_for_in17((img)._spectrum,c0,c1,c) +#define cimg_for_in17XY(img,x0,y0,x1,y1,x,y) cimg_for_in17Y(img,y0,y1,y) cimg_for_in17X(img,x0,x1,x) +#define cimg_for_in17XZ(img,x0,z0,x1,z1,x,z) cimg_for_in17Z(img,z0,z1,z) cimg_for_in17X(img,x0,x1,x) +#define cimg_for_in17XC(img,x0,c0,x1,c1,x,c) cimg_for_in17C(img,c0,c1,c) cimg_for_in17X(img,x0,x1,x) +#define cimg_for_in17YZ(img,y0,z0,y1,z1,y,z) cimg_for_in17Z(img,z0,z1,z) cimg_for_in17Y(img,y0,y1,y) +#define cimg_for_in17YC(img,y0,c0,y1,c1,y,c) cimg_for_in17C(img,c0,c1,c) cimg_for_in17Y(img,y0,y1,y) +#define cimg_for_in17ZC(img,z0,c0,z1,c1,z,c) cimg_for_in17C(img,c0,c1,c) cimg_for_in17Z(img,z0,z1,z) +#define cimg_for_in17XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in17Z(img,z0,z1,z) cimg_for_in17XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in17XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in17C(img,c0,c1,c) cimg_for_in17XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in17YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in17C(img,c0,c1,c) cimg_for_in17YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in17XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in17C(img,c0,c1,c) cimg_for_in17XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for17x17(img,x,y,z,c,I,T) \ + cimg_for17((img)._height,y) for (int x = 0, \ + _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = (T)(img)(0,_p8##y,z,c)), \ + (I[17] = I[18] = I[19] = I[20] = I[21] = I[22] = I[23] = I[24] = I[25] = (T)(img)(0,_p7##y,z,c)), \ + (I[34] = I[35] = I[36] = I[37] = I[38] = I[39] = I[40] = I[41] = I[42] = (T)(img)(0,_p6##y,z,c)), \ + (I[51] = I[52] = I[53] = I[54] = I[55] = I[56] = I[57] = I[58] = I[59] = (T)(img)(0,_p5##y,z,c)), \ + (I[68] = I[69] = I[70] = I[71] = I[72] = I[73] = I[74] = I[75] = I[76] = (T)(img)(0,_p4##y,z,c)), \ + (I[85] = I[86] = I[87] = I[88] = I[89] = I[90] = I[91] = I[92] = I[93] = (T)(img)(0,_p3##y,z,c)), \ + (I[102] = I[103] = I[104] = I[105] = I[106] = I[107] = I[108] = I[109] = I[110] = (T)(img)(0,_p2##y,z,c)), \ + (I[119] = I[120] = I[121] = I[122] = I[123] = I[124] = I[125] = I[126] = I[127] = (T)(img)(0,_p1##y,z,c)), \ + (I[136] = I[137] = I[138] = I[139] = I[140] = I[141] = I[142] = I[143] = I[144] = (T)(img)(0,y,z,c)), \ + (I[153] = I[154] = I[155] = I[156] = I[157] = I[158] = I[159] = I[160] = I[161] = (T)(img)(0,_n1##y,z,c)), \ + (I[170] = I[171] = I[172] = I[173] = I[174] = I[175] = I[176] = I[177] = I[178] = (T)(img)(0,_n2##y,z,c)), \ + (I[187] = I[188] = I[189] = I[190] = I[191] = I[192] = I[193] = I[194] = I[195] = (T)(img)(0,_n3##y,z,c)), \ + (I[204] = I[205] = I[206] = I[207] = I[208] = I[209] = I[210] = I[211] = I[212] = (T)(img)(0,_n4##y,z,c)), \ + (I[221] = I[222] = I[223] = I[224] = I[225] = I[226] = I[227] = I[228] = I[229] = (T)(img)(0,_n5##y,z,c)), \ + (I[238] = I[239] = I[240] = I[241] = I[242] = I[243] = I[244] = I[245] = I[246] = (T)(img)(0,_n6##y,z,c)), \ + (I[255] = I[256] = I[257] = I[258] = I[259] = I[260] = I[261] = I[262] = I[263] = (T)(img)(0,_n7##y,z,c)), \ + (I[272] = I[273] = I[274] = I[275] = I[276] = I[277] = I[278] = I[279] = I[280] = (T)(img)(0,_n8##y,z,c)), \ + (I[9] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[26] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[43] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[60] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[77] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[94] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[111] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[128] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[145] = (T)(img)(_n1##x,y,z,c)), \ + (I[162] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[179] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[196] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[213] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[230] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[247] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[264] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[281] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[10] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[27] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[44] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[61] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[78] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[95] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[112] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[129] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[146] = (T)(img)(_n2##x,y,z,c)), \ + (I[163] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[180] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[197] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[214] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[231] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[248] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[265] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[282] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[11] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[28] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[45] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[62] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[79] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[96] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[113] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[130] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[147] = (T)(img)(_n3##x,y,z,c)), \ + (I[164] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[181] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[198] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[215] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[232] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[249] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[266] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[283] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[12] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[29] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[46] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[63] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[80] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[97] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[114] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[131] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[148] = (T)(img)(_n4##x,y,z,c)), \ + (I[165] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[182] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[199] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[216] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[233] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[250] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[267] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[284] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[13] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[30] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[47] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[64] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[81] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[98] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[115] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[132] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[149] = (T)(img)(_n5##x,y,z,c)), \ + (I[166] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[183] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[200] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[217] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[234] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[251] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[268] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[285] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[14] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[31] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[48] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[65] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[82] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[99] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[116] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[133] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[150] = (T)(img)(_n6##x,y,z,c)), \ + (I[167] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[184] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[201] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[218] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[235] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[252] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[269] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[286] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[15] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[32] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[49] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[66] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[83] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[100] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[117] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[134] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[151] = (T)(img)(_n7##x,y,z,c)), \ + (I[168] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[185] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[202] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[219] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[236] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[253] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[270] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[287] = (T)(img)(_n7##x,_n8##y,z,c)), \ + 8>=((img)._width)?(img).width() - 1:8); \ + (_n8##x<(img).width() && ( \ + (I[16] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[33] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[50] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[67] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[84] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[101] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[118] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[135] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[152] = (T)(img)(_n8##x,y,z,c)), \ + (I[169] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[186] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[203] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[220] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[237] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[254] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[271] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[288] = (T)(img)(_n8##x,_n8##y,z,c)),1)) || \ + _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], \ + I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], \ + I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], \ + I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], \ + I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], \ + I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], \ + I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], \ + I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], \ + I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], \ + I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], \ + I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], \ + I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], \ + I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], \ + I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], \ + I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], \ + I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], \ + I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], \ + _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x) + +#define cimg_for_in17x17(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in17((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = (int)( \ + (I[0] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[17] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[34] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[51] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[68] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[85] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[102] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[119] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[136] = (T)(img)(_p8##x,y,z,c)), \ + (I[153] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[170] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[187] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[204] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[221] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[238] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[255] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[272] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[1] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[18] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[35] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[52] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[69] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[86] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[103] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[120] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[137] = (T)(img)(_p7##x,y,z,c)), \ + (I[154] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[171] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[188] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[205] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[222] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[239] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[256] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[273] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[2] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[19] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[36] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[53] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[70] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[87] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[104] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[121] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[138] = (T)(img)(_p6##x,y,z,c)), \ + (I[155] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[172] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[189] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[206] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[223] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[240] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[257] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[274] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[3] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[20] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[37] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[54] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[71] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[88] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[105] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[122] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[139] = (T)(img)(_p5##x,y,z,c)), \ + (I[156] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[173] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[190] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[207] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[224] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[241] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[258] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[275] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[4] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[21] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[38] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[55] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[72] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[89] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[106] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[123] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[140] = (T)(img)(_p4##x,y,z,c)), \ + (I[157] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[174] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[191] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[208] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[225] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[242] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[259] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[276] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[5] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[22] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[39] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[56] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[73] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[90] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[107] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[124] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[141] = (T)(img)(_p3##x,y,z,c)), \ + (I[158] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[175] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[192] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[209] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[226] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[243] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[260] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[277] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[6] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[23] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[40] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[57] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[74] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[91] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[108] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[125] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[142] = (T)(img)(_p2##x,y,z,c)), \ + (I[159] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[176] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[193] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[210] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[227] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[244] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[261] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[278] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[7] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[24] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[41] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[58] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[75] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[92] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[109] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[126] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[143] = (T)(img)(_p1##x,y,z,c)), \ + (I[160] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[177] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[194] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[211] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[228] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[245] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[262] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[279] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[8] = (T)(img)(x,_p8##y,z,c)), \ + (I[25] = (T)(img)(x,_p7##y,z,c)), \ + (I[42] = (T)(img)(x,_p6##y,z,c)), \ + (I[59] = (T)(img)(x,_p5##y,z,c)), \ + (I[76] = (T)(img)(x,_p4##y,z,c)), \ + (I[93] = (T)(img)(x,_p3##y,z,c)), \ + (I[110] = (T)(img)(x,_p2##y,z,c)), \ + (I[127] = (T)(img)(x,_p1##y,z,c)), \ + (I[144] = (T)(img)(x,y,z,c)), \ + (I[161] = (T)(img)(x,_n1##y,z,c)), \ + (I[178] = (T)(img)(x,_n2##y,z,c)), \ + (I[195] = (T)(img)(x,_n3##y,z,c)), \ + (I[212] = (T)(img)(x,_n4##y,z,c)), \ + (I[229] = (T)(img)(x,_n5##y,z,c)), \ + (I[246] = (T)(img)(x,_n6##y,z,c)), \ + (I[263] = (T)(img)(x,_n7##y,z,c)), \ + (I[280] = (T)(img)(x,_n8##y,z,c)), \ + (I[9] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[26] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[43] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[60] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[77] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[94] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[111] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[128] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[145] = (T)(img)(_n1##x,y,z,c)), \ + (I[162] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[179] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[196] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[213] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[230] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[247] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[264] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[281] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[10] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[27] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[44] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[61] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[78] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[95] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[112] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[129] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[146] = (T)(img)(_n2##x,y,z,c)), \ + (I[163] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[180] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[197] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[214] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[231] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[248] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[265] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[282] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[11] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[28] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[45] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[62] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[79] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[96] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[113] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[130] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[147] = (T)(img)(_n3##x,y,z,c)), \ + (I[164] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[181] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[198] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[215] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[232] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[249] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[266] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[283] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[12] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[29] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[46] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[63] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[80] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[97] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[114] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[131] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[148] = (T)(img)(_n4##x,y,z,c)), \ + (I[165] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[182] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[199] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[216] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[233] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[250] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[267] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[284] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[13] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[30] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[47] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[64] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[81] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[98] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[115] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[132] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[149] = (T)(img)(_n5##x,y,z,c)), \ + (I[166] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[183] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[200] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[217] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[234] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[251] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[268] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[285] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[14] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[31] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[48] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[65] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[82] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[99] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[116] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[133] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[150] = (T)(img)(_n6##x,y,z,c)), \ + (I[167] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[184] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[201] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[218] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[235] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[252] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[269] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[286] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[15] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[32] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[49] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[66] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[83] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[100] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[117] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[134] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[151] = (T)(img)(_n7##x,y,z,c)), \ + (I[168] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[185] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[202] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[219] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[236] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[253] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[270] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[287] = (T)(img)(_n7##x,_n8##y,z,c)), \ + x + 8>=(img).width()?(img).width() - 1:x + 8); \ + x<=(int)(x1) && ((_n8##x<(img).width() && ( \ + (I[16] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[33] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[50] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[67] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[84] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[101] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[118] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[135] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[152] = (T)(img)(_n8##x,y,z,c)), \ + (I[169] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[186] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[203] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[220] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[237] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[254] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[271] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[288] = (T)(img)(_n8##x,_n8##y,z,c)),1)) || \ + _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], \ + I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], \ + I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], \ + I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], \ + I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], \ + I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], \ + I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], \ + I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], \ + I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], \ + I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], \ + I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], \ + I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], \ + I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], \ + I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], \ + I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], \ + I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], \ + I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], \ + _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x) + +#define cimg_get17x17(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p8##x,_p8##y,z,c), I[1] = (T)(img)(_p7##x,_p8##y,z,c), I[2] = (T)(img)(_p6##x,_p8##y,z,c), I[3] = (T)(img)(_p5##x,_p8##y,z,c), I[4] = (T)(img)(_p4##x,_p8##y,z,c), I[5] = (T)(img)(_p3##x,_p8##y,z,c), I[6] = (T)(img)(_p2##x,_p8##y,z,c), I[7] = (T)(img)(_p1##x,_p8##y,z,c), I[8] = (T)(img)(x,_p8##y,z,c), I[9] = (T)(img)(_n1##x,_p8##y,z,c), I[10] = (T)(img)(_n2##x,_p8##y,z,c), I[11] = (T)(img)(_n3##x,_p8##y,z,c), I[12] = (T)(img)(_n4##x,_p8##y,z,c), I[13] = (T)(img)(_n5##x,_p8##y,z,c), I[14] = (T)(img)(_n6##x,_p8##y,z,c), I[15] = (T)(img)(_n7##x,_p8##y,z,c), I[16] = (T)(img)(_n8##x,_p8##y,z,c), \ + I[17] = (T)(img)(_p8##x,_p7##y,z,c), I[18] = (T)(img)(_p7##x,_p7##y,z,c), I[19] = (T)(img)(_p6##x,_p7##y,z,c), I[20] = (T)(img)(_p5##x,_p7##y,z,c), I[21] = (T)(img)(_p4##x,_p7##y,z,c), I[22] = (T)(img)(_p3##x,_p7##y,z,c), I[23] = (T)(img)(_p2##x,_p7##y,z,c), I[24] = (T)(img)(_p1##x,_p7##y,z,c), I[25] = (T)(img)(x,_p7##y,z,c), I[26] = (T)(img)(_n1##x,_p7##y,z,c), I[27] = (T)(img)(_n2##x,_p7##y,z,c), I[28] = (T)(img)(_n3##x,_p7##y,z,c), I[29] = (T)(img)(_n4##x,_p7##y,z,c), I[30] = (T)(img)(_n5##x,_p7##y,z,c), I[31] = (T)(img)(_n6##x,_p7##y,z,c), I[32] = (T)(img)(_n7##x,_p7##y,z,c), I[33] = (T)(img)(_n8##x,_p7##y,z,c), \ + I[34] = (T)(img)(_p8##x,_p6##y,z,c), I[35] = (T)(img)(_p7##x,_p6##y,z,c), I[36] = (T)(img)(_p6##x,_p6##y,z,c), I[37] = (T)(img)(_p5##x,_p6##y,z,c), I[38] = (T)(img)(_p4##x,_p6##y,z,c), I[39] = (T)(img)(_p3##x,_p6##y,z,c), I[40] = (T)(img)(_p2##x,_p6##y,z,c), I[41] = (T)(img)(_p1##x,_p6##y,z,c), I[42] = (T)(img)(x,_p6##y,z,c), I[43] = (T)(img)(_n1##x,_p6##y,z,c), I[44] = (T)(img)(_n2##x,_p6##y,z,c), I[45] = (T)(img)(_n3##x,_p6##y,z,c), I[46] = (T)(img)(_n4##x,_p6##y,z,c), I[47] = (T)(img)(_n5##x,_p6##y,z,c), I[48] = (T)(img)(_n6##x,_p6##y,z,c), I[49] = (T)(img)(_n7##x,_p6##y,z,c), I[50] = (T)(img)(_n8##x,_p6##y,z,c), \ + I[51] = (T)(img)(_p8##x,_p5##y,z,c), I[52] = (T)(img)(_p7##x,_p5##y,z,c), I[53] = (T)(img)(_p6##x,_p5##y,z,c), I[54] = (T)(img)(_p5##x,_p5##y,z,c), I[55] = (T)(img)(_p4##x,_p5##y,z,c), I[56] = (T)(img)(_p3##x,_p5##y,z,c), I[57] = (T)(img)(_p2##x,_p5##y,z,c), I[58] = (T)(img)(_p1##x,_p5##y,z,c), I[59] = (T)(img)(x,_p5##y,z,c), I[60] = (T)(img)(_n1##x,_p5##y,z,c), I[61] = (T)(img)(_n2##x,_p5##y,z,c), I[62] = (T)(img)(_n3##x,_p5##y,z,c), I[63] = (T)(img)(_n4##x,_p5##y,z,c), I[64] = (T)(img)(_n5##x,_p5##y,z,c), I[65] = (T)(img)(_n6##x,_p5##y,z,c), I[66] = (T)(img)(_n7##x,_p5##y,z,c), I[67] = (T)(img)(_n8##x,_p5##y,z,c), \ + I[68] = (T)(img)(_p8##x,_p4##y,z,c), I[69] = (T)(img)(_p7##x,_p4##y,z,c), I[70] = (T)(img)(_p6##x,_p4##y,z,c), I[71] = (T)(img)(_p5##x,_p4##y,z,c), I[72] = (T)(img)(_p4##x,_p4##y,z,c), I[73] = (T)(img)(_p3##x,_p4##y,z,c), I[74] = (T)(img)(_p2##x,_p4##y,z,c), I[75] = (T)(img)(_p1##x,_p4##y,z,c), I[76] = (T)(img)(x,_p4##y,z,c), I[77] = (T)(img)(_n1##x,_p4##y,z,c), I[78] = (T)(img)(_n2##x,_p4##y,z,c), I[79] = (T)(img)(_n3##x,_p4##y,z,c), I[80] = (T)(img)(_n4##x,_p4##y,z,c), I[81] = (T)(img)(_n5##x,_p4##y,z,c), I[82] = (T)(img)(_n6##x,_p4##y,z,c), I[83] = (T)(img)(_n7##x,_p4##y,z,c), I[84] = (T)(img)(_n8##x,_p4##y,z,c), \ + I[85] = (T)(img)(_p8##x,_p3##y,z,c), I[86] = (T)(img)(_p7##x,_p3##y,z,c), I[87] = (T)(img)(_p6##x,_p3##y,z,c), I[88] = (T)(img)(_p5##x,_p3##y,z,c), I[89] = (T)(img)(_p4##x,_p3##y,z,c), I[90] = (T)(img)(_p3##x,_p3##y,z,c), I[91] = (T)(img)(_p2##x,_p3##y,z,c), I[92] = (T)(img)(_p1##x,_p3##y,z,c), I[93] = (T)(img)(x,_p3##y,z,c), I[94] = (T)(img)(_n1##x,_p3##y,z,c), I[95] = (T)(img)(_n2##x,_p3##y,z,c), I[96] = (T)(img)(_n3##x,_p3##y,z,c), I[97] = (T)(img)(_n4##x,_p3##y,z,c), I[98] = (T)(img)(_n5##x,_p3##y,z,c), I[99] = (T)(img)(_n6##x,_p3##y,z,c), I[100] = (T)(img)(_n7##x,_p3##y,z,c), I[101] = (T)(img)(_n8##x,_p3##y,z,c), \ + I[102] = (T)(img)(_p8##x,_p2##y,z,c), I[103] = (T)(img)(_p7##x,_p2##y,z,c), I[104] = (T)(img)(_p6##x,_p2##y,z,c), I[105] = (T)(img)(_p5##x,_p2##y,z,c), I[106] = (T)(img)(_p4##x,_p2##y,z,c), I[107] = (T)(img)(_p3##x,_p2##y,z,c), I[108] = (T)(img)(_p2##x,_p2##y,z,c), I[109] = (T)(img)(_p1##x,_p2##y,z,c), I[110] = (T)(img)(x,_p2##y,z,c), I[111] = (T)(img)(_n1##x,_p2##y,z,c), I[112] = (T)(img)(_n2##x,_p2##y,z,c), I[113] = (T)(img)(_n3##x,_p2##y,z,c), I[114] = (T)(img)(_n4##x,_p2##y,z,c), I[115] = (T)(img)(_n5##x,_p2##y,z,c), I[116] = (T)(img)(_n6##x,_p2##y,z,c), I[117] = (T)(img)(_n7##x,_p2##y,z,c), I[118] = (T)(img)(_n8##x,_p2##y,z,c), \ + I[119] = (T)(img)(_p8##x,_p1##y,z,c), I[120] = (T)(img)(_p7##x,_p1##y,z,c), I[121] = (T)(img)(_p6##x,_p1##y,z,c), I[122] = (T)(img)(_p5##x,_p1##y,z,c), I[123] = (T)(img)(_p4##x,_p1##y,z,c), I[124] = (T)(img)(_p3##x,_p1##y,z,c), I[125] = (T)(img)(_p2##x,_p1##y,z,c), I[126] = (T)(img)(_p1##x,_p1##y,z,c), I[127] = (T)(img)(x,_p1##y,z,c), I[128] = (T)(img)(_n1##x,_p1##y,z,c), I[129] = (T)(img)(_n2##x,_p1##y,z,c), I[130] = (T)(img)(_n3##x,_p1##y,z,c), I[131] = (T)(img)(_n4##x,_p1##y,z,c), I[132] = (T)(img)(_n5##x,_p1##y,z,c), I[133] = (T)(img)(_n6##x,_p1##y,z,c), I[134] = (T)(img)(_n7##x,_p1##y,z,c), I[135] = (T)(img)(_n8##x,_p1##y,z,c), \ + I[136] = (T)(img)(_p8##x,y,z,c), I[137] = (T)(img)(_p7##x,y,z,c), I[138] = (T)(img)(_p6##x,y,z,c), I[139] = (T)(img)(_p5##x,y,z,c), I[140] = (T)(img)(_p4##x,y,z,c), I[141] = (T)(img)(_p3##x,y,z,c), I[142] = (T)(img)(_p2##x,y,z,c), I[143] = (T)(img)(_p1##x,y,z,c), I[144] = (T)(img)(x,y,z,c), I[145] = (T)(img)(_n1##x,y,z,c), I[146] = (T)(img)(_n2##x,y,z,c), I[147] = (T)(img)(_n3##x,y,z,c), I[148] = (T)(img)(_n4##x,y,z,c), I[149] = (T)(img)(_n5##x,y,z,c), I[150] = (T)(img)(_n6##x,y,z,c), I[151] = (T)(img)(_n7##x,y,z,c), I[152] = (T)(img)(_n8##x,y,z,c), \ + I[153] = (T)(img)(_p8##x,_n1##y,z,c), I[154] = (T)(img)(_p7##x,_n1##y,z,c), I[155] = (T)(img)(_p6##x,_n1##y,z,c), I[156] = (T)(img)(_p5##x,_n1##y,z,c), I[157] = (T)(img)(_p4##x,_n1##y,z,c), I[158] = (T)(img)(_p3##x,_n1##y,z,c), I[159] = (T)(img)(_p2##x,_n1##y,z,c), I[160] = (T)(img)(_p1##x,_n1##y,z,c), I[161] = (T)(img)(x,_n1##y,z,c), I[162] = (T)(img)(_n1##x,_n1##y,z,c), I[163] = (T)(img)(_n2##x,_n1##y,z,c), I[164] = (T)(img)(_n3##x,_n1##y,z,c), I[165] = (T)(img)(_n4##x,_n1##y,z,c), I[166] = (T)(img)(_n5##x,_n1##y,z,c), I[167] = (T)(img)(_n6##x,_n1##y,z,c), I[168] = (T)(img)(_n7##x,_n1##y,z,c), I[169] = (T)(img)(_n8##x,_n1##y,z,c), \ + I[170] = (T)(img)(_p8##x,_n2##y,z,c), I[171] = (T)(img)(_p7##x,_n2##y,z,c), I[172] = (T)(img)(_p6##x,_n2##y,z,c), I[173] = (T)(img)(_p5##x,_n2##y,z,c), I[174] = (T)(img)(_p4##x,_n2##y,z,c), I[175] = (T)(img)(_p3##x,_n2##y,z,c), I[176] = (T)(img)(_p2##x,_n2##y,z,c), I[177] = (T)(img)(_p1##x,_n2##y,z,c), I[178] = (T)(img)(x,_n2##y,z,c), I[179] = (T)(img)(_n1##x,_n2##y,z,c), I[180] = (T)(img)(_n2##x,_n2##y,z,c), I[181] = (T)(img)(_n3##x,_n2##y,z,c), I[182] = (T)(img)(_n4##x,_n2##y,z,c), I[183] = (T)(img)(_n5##x,_n2##y,z,c), I[184] = (T)(img)(_n6##x,_n2##y,z,c), I[185] = (T)(img)(_n7##x,_n2##y,z,c), I[186] = (T)(img)(_n8##x,_n2##y,z,c), \ + I[187] = (T)(img)(_p8##x,_n3##y,z,c), I[188] = (T)(img)(_p7##x,_n3##y,z,c), I[189] = (T)(img)(_p6##x,_n3##y,z,c), I[190] = (T)(img)(_p5##x,_n3##y,z,c), I[191] = (T)(img)(_p4##x,_n3##y,z,c), I[192] = (T)(img)(_p3##x,_n3##y,z,c), I[193] = (T)(img)(_p2##x,_n3##y,z,c), I[194] = (T)(img)(_p1##x,_n3##y,z,c), I[195] = (T)(img)(x,_n3##y,z,c), I[196] = (T)(img)(_n1##x,_n3##y,z,c), I[197] = (T)(img)(_n2##x,_n3##y,z,c), I[198] = (T)(img)(_n3##x,_n3##y,z,c), I[199] = (T)(img)(_n4##x,_n3##y,z,c), I[200] = (T)(img)(_n5##x,_n3##y,z,c), I[201] = (T)(img)(_n6##x,_n3##y,z,c), I[202] = (T)(img)(_n7##x,_n3##y,z,c), I[203] = (T)(img)(_n8##x,_n3##y,z,c), \ + I[204] = (T)(img)(_p8##x,_n4##y,z,c), I[205] = (T)(img)(_p7##x,_n4##y,z,c), I[206] = (T)(img)(_p6##x,_n4##y,z,c), I[207] = (T)(img)(_p5##x,_n4##y,z,c), I[208] = (T)(img)(_p4##x,_n4##y,z,c), I[209] = (T)(img)(_p3##x,_n4##y,z,c), I[210] = (T)(img)(_p2##x,_n4##y,z,c), I[211] = (T)(img)(_p1##x,_n4##y,z,c), I[212] = (T)(img)(x,_n4##y,z,c), I[213] = (T)(img)(_n1##x,_n4##y,z,c), I[214] = (T)(img)(_n2##x,_n4##y,z,c), I[215] = (T)(img)(_n3##x,_n4##y,z,c), I[216] = (T)(img)(_n4##x,_n4##y,z,c), I[217] = (T)(img)(_n5##x,_n4##y,z,c), I[218] = (T)(img)(_n6##x,_n4##y,z,c), I[219] = (T)(img)(_n7##x,_n4##y,z,c), I[220] = (T)(img)(_n8##x,_n4##y,z,c), \ + I[221] = (T)(img)(_p8##x,_n5##y,z,c), I[222] = (T)(img)(_p7##x,_n5##y,z,c), I[223] = (T)(img)(_p6##x,_n5##y,z,c), I[224] = (T)(img)(_p5##x,_n5##y,z,c), I[225] = (T)(img)(_p4##x,_n5##y,z,c), I[226] = (T)(img)(_p3##x,_n5##y,z,c), I[227] = (T)(img)(_p2##x,_n5##y,z,c), I[228] = (T)(img)(_p1##x,_n5##y,z,c), I[229] = (T)(img)(x,_n5##y,z,c), I[230] = (T)(img)(_n1##x,_n5##y,z,c), I[231] = (T)(img)(_n2##x,_n5##y,z,c), I[232] = (T)(img)(_n3##x,_n5##y,z,c), I[233] = (T)(img)(_n4##x,_n5##y,z,c), I[234] = (T)(img)(_n5##x,_n5##y,z,c), I[235] = (T)(img)(_n6##x,_n5##y,z,c), I[236] = (T)(img)(_n7##x,_n5##y,z,c), I[237] = (T)(img)(_n8##x,_n5##y,z,c), \ + I[238] = (T)(img)(_p8##x,_n6##y,z,c), I[239] = (T)(img)(_p7##x,_n6##y,z,c), I[240] = (T)(img)(_p6##x,_n6##y,z,c), I[241] = (T)(img)(_p5##x,_n6##y,z,c), I[242] = (T)(img)(_p4##x,_n6##y,z,c), I[243] = (T)(img)(_p3##x,_n6##y,z,c), I[244] = (T)(img)(_p2##x,_n6##y,z,c), I[245] = (T)(img)(_p1##x,_n6##y,z,c), I[246] = (T)(img)(x,_n6##y,z,c), I[247] = (T)(img)(_n1##x,_n6##y,z,c), I[248] = (T)(img)(_n2##x,_n6##y,z,c), I[249] = (T)(img)(_n3##x,_n6##y,z,c), I[250] = (T)(img)(_n4##x,_n6##y,z,c), I[251] = (T)(img)(_n5##x,_n6##y,z,c), I[252] = (T)(img)(_n6##x,_n6##y,z,c), I[253] = (T)(img)(_n7##x,_n6##y,z,c), I[254] = (T)(img)(_n8##x,_n6##y,z,c), \ + I[255] = (T)(img)(_p8##x,_n7##y,z,c), I[256] = (T)(img)(_p7##x,_n7##y,z,c), I[257] = (T)(img)(_p6##x,_n7##y,z,c), I[258] = (T)(img)(_p5##x,_n7##y,z,c), I[259] = (T)(img)(_p4##x,_n7##y,z,c), I[260] = (T)(img)(_p3##x,_n7##y,z,c), I[261] = (T)(img)(_p2##x,_n7##y,z,c), I[262] = (T)(img)(_p1##x,_n7##y,z,c), I[263] = (T)(img)(x,_n7##y,z,c), I[264] = (T)(img)(_n1##x,_n7##y,z,c), I[265] = (T)(img)(_n2##x,_n7##y,z,c), I[266] = (T)(img)(_n3##x,_n7##y,z,c), I[267] = (T)(img)(_n4##x,_n7##y,z,c), I[268] = (T)(img)(_n5##x,_n7##y,z,c), I[269] = (T)(img)(_n6##x,_n7##y,z,c), I[270] = (T)(img)(_n7##x,_n7##y,z,c), I[271] = (T)(img)(_n8##x,_n7##y,z,c), \ + I[272] = (T)(img)(_p8##x,_n8##y,z,c), I[273] = (T)(img)(_p7##x,_n8##y,z,c), I[274] = (T)(img)(_p6##x,_n8##y,z,c), I[275] = (T)(img)(_p5##x,_n8##y,z,c), I[276] = (T)(img)(_p4##x,_n8##y,z,c), I[277] = (T)(img)(_p3##x,_n8##y,z,c), I[278] = (T)(img)(_p2##x,_n8##y,z,c), I[279] = (T)(img)(_p1##x,_n8##y,z,c), I[280] = (T)(img)(x,_n8##y,z,c), I[281] = (T)(img)(_n1##x,_n8##y,z,c), I[282] = (T)(img)(_n2##x,_n8##y,z,c), I[283] = (T)(img)(_n3##x,_n8##y,z,c), I[284] = (T)(img)(_n4##x,_n8##y,z,c), I[285] = (T)(img)(_n5##x,_n8##y,z,c), I[286] = (T)(img)(_n6##x,_n8##y,z,c), I[287] = (T)(img)(_n7##x,_n8##y,z,c), I[288] = (T)(img)(_n8##x,_n8##y,z,c); + +// Define 18x18 loop macros +//------------------------- +#define cimg_for18(bound,i) for (int i = 0, \ + _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9; \ + _n9##i<(int)(bound) || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i) + +#define cimg_for18X(img,x) cimg_for18((img)._width,x) +#define cimg_for18Y(img,y) cimg_for18((img)._height,y) +#define cimg_for18Z(img,z) cimg_for18((img)._depth,z) +#define cimg_for18C(img,c) cimg_for18((img)._spectrum,c) +#define cimg_for18XY(img,x,y) cimg_for18Y(img,y) cimg_for18X(img,x) +#define cimg_for18XZ(img,x,z) cimg_for18Z(img,z) cimg_for18X(img,x) +#define cimg_for18XC(img,x,c) cimg_for18C(img,c) cimg_for18X(img,x) +#define cimg_for18YZ(img,y,z) cimg_for18Z(img,z) cimg_for18Y(img,y) +#define cimg_for18YC(img,y,c) cimg_for18C(img,c) cimg_for18Y(img,y) +#define cimg_for18ZC(img,z,c) cimg_for18C(img,c) cimg_for18Z(img,z) +#define cimg_for18XYZ(img,x,y,z) cimg_for18Z(img,z) cimg_for18XY(img,x,y) +#define cimg_for18XZC(img,x,z,c) cimg_for18C(img,c) cimg_for18XZ(img,x,z) +#define cimg_for18YZC(img,y,z,c) cimg_for18C(img,c) cimg_for18YZ(img,y,z) +#define cimg_for18XYZC(img,x,y,z,c) cimg_for18C(img,c) cimg_for18XYZ(img,x,y,z) + +#define cimg_for_in18(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9; \ + i<=(int)(i1) && (_n9##i<(int)(bound) || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i) + +#define cimg_for_in18X(img,x0,x1,x) cimg_for_in18((img)._width,x0,x1,x) +#define cimg_for_in18Y(img,y0,y1,y) cimg_for_in18((img)._height,y0,y1,y) +#define cimg_for_in18Z(img,z0,z1,z) cimg_for_in18((img)._depth,z0,z1,z) +#define cimg_for_in18C(img,c0,c1,c) cimg_for_in18((img)._spectrum,c0,c1,c) +#define cimg_for_in18XY(img,x0,y0,x1,y1,x,y) cimg_for_in18Y(img,y0,y1,y) cimg_for_in18X(img,x0,x1,x) +#define cimg_for_in18XZ(img,x0,z0,x1,z1,x,z) cimg_for_in18Z(img,z0,z1,z) cimg_for_in18X(img,x0,x1,x) +#define cimg_for_in18XC(img,x0,c0,x1,c1,x,c) cimg_for_in18C(img,c0,c1,c) cimg_for_in18X(img,x0,x1,x) +#define cimg_for_in18YZ(img,y0,z0,y1,z1,y,z) cimg_for_in18Z(img,z0,z1,z) cimg_for_in18Y(img,y0,y1,y) +#define cimg_for_in18YC(img,y0,c0,y1,c1,y,c) cimg_for_in18C(img,c0,c1,c) cimg_for_in18Y(img,y0,y1,y) +#define cimg_for_in18ZC(img,z0,c0,z1,c1,z,c) cimg_for_in18C(img,c0,c1,c) cimg_for_in18Z(img,z0,z1,z) +#define cimg_for_in18XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in18Z(img,z0,z1,z) cimg_for_in18XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in18XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in18C(img,c0,c1,c) cimg_for_in18XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in18YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in18C(img,c0,c1,c) cimg_for_in18YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in18XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in18C(img,c0,c1,c) cimg_for_in18XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for18x18(img,x,y,z,c,I,T) \ + cimg_for18((img)._height,y) for (int x = 0, \ + _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = (T)(img)(0,_p8##y,z,c)), \ + (I[18] = I[19] = I[20] = I[21] = I[22] = I[23] = I[24] = I[25] = I[26] = (T)(img)(0,_p7##y,z,c)), \ + (I[36] = I[37] = I[38] = I[39] = I[40] = I[41] = I[42] = I[43] = I[44] = (T)(img)(0,_p6##y,z,c)), \ + (I[54] = I[55] = I[56] = I[57] = I[58] = I[59] = I[60] = I[61] = I[62] = (T)(img)(0,_p5##y,z,c)), \ + (I[72] = I[73] = I[74] = I[75] = I[76] = I[77] = I[78] = I[79] = I[80] = (T)(img)(0,_p4##y,z,c)), \ + (I[90] = I[91] = I[92] = I[93] = I[94] = I[95] = I[96] = I[97] = I[98] = (T)(img)(0,_p3##y,z,c)), \ + (I[108] = I[109] = I[110] = I[111] = I[112] = I[113] = I[114] = I[115] = I[116] = (T)(img)(0,_p2##y,z,c)), \ + (I[126] = I[127] = I[128] = I[129] = I[130] = I[131] = I[132] = I[133] = I[134] = (T)(img)(0,_p1##y,z,c)), \ + (I[144] = I[145] = I[146] = I[147] = I[148] = I[149] = I[150] = I[151] = I[152] = (T)(img)(0,y,z,c)), \ + (I[162] = I[163] = I[164] = I[165] = I[166] = I[167] = I[168] = I[169] = I[170] = (T)(img)(0,_n1##y,z,c)), \ + (I[180] = I[181] = I[182] = I[183] = I[184] = I[185] = I[186] = I[187] = I[188] = (T)(img)(0,_n2##y,z,c)), \ + (I[198] = I[199] = I[200] = I[201] = I[202] = I[203] = I[204] = I[205] = I[206] = (T)(img)(0,_n3##y,z,c)), \ + (I[216] = I[217] = I[218] = I[219] = I[220] = I[221] = I[222] = I[223] = I[224] = (T)(img)(0,_n4##y,z,c)), \ + (I[234] = I[235] = I[236] = I[237] = I[238] = I[239] = I[240] = I[241] = I[242] = (T)(img)(0,_n5##y,z,c)), \ + (I[252] = I[253] = I[254] = I[255] = I[256] = I[257] = I[258] = I[259] = I[260] = (T)(img)(0,_n6##y,z,c)), \ + (I[270] = I[271] = I[272] = I[273] = I[274] = I[275] = I[276] = I[277] = I[278] = (T)(img)(0,_n7##y,z,c)), \ + (I[288] = I[289] = I[290] = I[291] = I[292] = I[293] = I[294] = I[295] = I[296] = (T)(img)(0,_n8##y,z,c)), \ + (I[306] = I[307] = I[308] = I[309] = I[310] = I[311] = I[312] = I[313] = I[314] = (T)(img)(0,_n9##y,z,c)), \ + (I[9] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[27] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[45] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[63] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[81] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[99] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[117] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[135] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[153] = (T)(img)(_n1##x,y,z,c)), \ + (I[171] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[189] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[207] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[225] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[243] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[261] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[279] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[297] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[315] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[10] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[28] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[46] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[64] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[82] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[100] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[118] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[136] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[154] = (T)(img)(_n2##x,y,z,c)), \ + (I[172] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[190] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[208] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[226] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[244] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[262] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[280] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[298] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[316] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[11] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[29] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[47] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[65] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[83] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[101] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[119] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[137] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[155] = (T)(img)(_n3##x,y,z,c)), \ + (I[173] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[191] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[209] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[227] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[245] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[263] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[281] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[299] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[317] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[12] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[30] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[48] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[66] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[84] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[102] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[120] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[138] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[156] = (T)(img)(_n4##x,y,z,c)), \ + (I[174] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[192] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[210] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[228] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[246] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[264] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[282] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[300] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[318] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[13] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[31] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[49] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[67] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[85] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[103] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[121] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[139] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[157] = (T)(img)(_n5##x,y,z,c)), \ + (I[175] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[193] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[211] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[229] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[247] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[265] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[283] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[301] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[319] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[14] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[32] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[50] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[68] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[86] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[104] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[122] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[140] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[158] = (T)(img)(_n6##x,y,z,c)), \ + (I[176] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[194] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[212] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[230] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[248] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[266] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[284] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[302] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[320] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[15] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[33] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[51] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[69] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[87] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[105] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[123] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[141] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[159] = (T)(img)(_n7##x,y,z,c)), \ + (I[177] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[195] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[213] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[231] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[249] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[267] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[285] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[303] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[321] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[16] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[34] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[52] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[70] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[88] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[106] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[124] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[142] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[160] = (T)(img)(_n8##x,y,z,c)), \ + (I[178] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[196] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[214] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[232] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[250] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[268] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[286] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[304] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[322] = (T)(img)(_n8##x,_n9##y,z,c)), \ + 9>=((img)._width)?(img).width() - 1:9); \ + (_n9##x<(img).width() && ( \ + (I[17] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[35] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[53] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[71] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[89] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[107] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[125] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[143] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[161] = (T)(img)(_n9##x,y,z,c)), \ + (I[179] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[197] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[215] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[233] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[251] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[269] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[287] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[305] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[323] = (T)(img)(_n9##x,_n9##y,z,c)),1)) || \ + _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], \ + I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], \ + I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], \ + I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], \ + I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], \ + I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], \ + I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], \ + I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], \ + I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], \ + I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], \ + I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], \ + I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], \ + I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], \ + _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x) + +#define cimg_for_in18x18(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in18((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = (int)( \ + (I[0] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[18] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[36] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[54] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[72] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[90] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[108] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[126] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[144] = (T)(img)(_p8##x,y,z,c)), \ + (I[162] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[180] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[198] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[216] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[234] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[252] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[270] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[288] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[306] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[1] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[19] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[37] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[55] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[73] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[91] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[109] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[127] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[145] = (T)(img)(_p7##x,y,z,c)), \ + (I[163] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[181] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[199] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[217] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[235] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[253] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[271] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[289] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[307] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[2] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[20] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[38] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[56] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[74] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[92] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[110] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[128] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[146] = (T)(img)(_p6##x,y,z,c)), \ + (I[164] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[182] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[200] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[218] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[236] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[254] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[272] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[290] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[308] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[3] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[21] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[39] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[57] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[75] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[93] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[111] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[129] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[147] = (T)(img)(_p5##x,y,z,c)), \ + (I[165] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[183] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[201] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[219] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[237] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[255] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[273] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[291] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[309] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[4] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[22] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[40] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[58] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[76] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[94] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[112] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[130] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[148] = (T)(img)(_p4##x,y,z,c)), \ + (I[166] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[184] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[202] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[220] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[238] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[256] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[274] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[292] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[310] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[5] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[23] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[41] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[59] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[77] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[95] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[113] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[131] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[149] = (T)(img)(_p3##x,y,z,c)), \ + (I[167] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[185] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[203] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[221] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[239] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[257] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[275] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[293] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[311] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[6] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[24] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[42] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[60] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[78] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[96] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[114] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[132] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[150] = (T)(img)(_p2##x,y,z,c)), \ + (I[168] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[186] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[204] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[222] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[240] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[258] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[276] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[294] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[312] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[7] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[25] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[43] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[61] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[79] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[97] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[115] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[133] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[151] = (T)(img)(_p1##x,y,z,c)), \ + (I[169] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[187] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[205] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[223] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[241] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[259] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[277] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[295] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[313] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[8] = (T)(img)(x,_p8##y,z,c)), \ + (I[26] = (T)(img)(x,_p7##y,z,c)), \ + (I[44] = (T)(img)(x,_p6##y,z,c)), \ + (I[62] = (T)(img)(x,_p5##y,z,c)), \ + (I[80] = (T)(img)(x,_p4##y,z,c)), \ + (I[98] = (T)(img)(x,_p3##y,z,c)), \ + (I[116] = (T)(img)(x,_p2##y,z,c)), \ + (I[134] = (T)(img)(x,_p1##y,z,c)), \ + (I[152] = (T)(img)(x,y,z,c)), \ + (I[170] = (T)(img)(x,_n1##y,z,c)), \ + (I[188] = (T)(img)(x,_n2##y,z,c)), \ + (I[206] = (T)(img)(x,_n3##y,z,c)), \ + (I[224] = (T)(img)(x,_n4##y,z,c)), \ + (I[242] = (T)(img)(x,_n5##y,z,c)), \ + (I[260] = (T)(img)(x,_n6##y,z,c)), \ + (I[278] = (T)(img)(x,_n7##y,z,c)), \ + (I[296] = (T)(img)(x,_n8##y,z,c)), \ + (I[314] = (T)(img)(x,_n9##y,z,c)), \ + (I[9] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[27] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[45] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[63] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[81] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[99] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[117] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[135] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[153] = (T)(img)(_n1##x,y,z,c)), \ + (I[171] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[189] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[207] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[225] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[243] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[261] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[279] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[297] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[315] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[10] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[28] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[46] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[64] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[82] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[100] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[118] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[136] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[154] = (T)(img)(_n2##x,y,z,c)), \ + (I[172] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[190] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[208] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[226] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[244] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[262] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[280] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[298] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[316] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[11] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[29] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[47] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[65] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[83] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[101] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[119] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[137] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[155] = (T)(img)(_n3##x,y,z,c)), \ + (I[173] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[191] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[209] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[227] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[245] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[263] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[281] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[299] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[317] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[12] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[30] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[48] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[66] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[84] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[102] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[120] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[138] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[156] = (T)(img)(_n4##x,y,z,c)), \ + (I[174] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[192] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[210] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[228] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[246] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[264] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[282] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[300] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[318] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[13] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[31] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[49] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[67] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[85] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[103] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[121] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[139] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[157] = (T)(img)(_n5##x,y,z,c)), \ + (I[175] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[193] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[211] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[229] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[247] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[265] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[283] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[301] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[319] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[14] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[32] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[50] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[68] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[86] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[104] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[122] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[140] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[158] = (T)(img)(_n6##x,y,z,c)), \ + (I[176] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[194] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[212] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[230] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[248] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[266] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[284] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[302] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[320] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[15] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[33] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[51] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[69] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[87] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[105] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[123] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[141] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[159] = (T)(img)(_n7##x,y,z,c)), \ + (I[177] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[195] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[213] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[231] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[249] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[267] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[285] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[303] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[321] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[16] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[34] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[52] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[70] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[88] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[106] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[124] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[142] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[160] = (T)(img)(_n8##x,y,z,c)), \ + (I[178] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[196] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[214] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[232] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[250] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[268] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[286] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[304] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[322] = (T)(img)(_n8##x,_n9##y,z,c)), \ + x + 9>=(img).width()?(img).width() - 1:x + 9); \ + x<=(int)(x1) && ((_n9##x<(img).width() && ( \ + (I[17] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[35] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[53] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[71] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[89] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[107] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[125] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[143] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[161] = (T)(img)(_n9##x,y,z,c)), \ + (I[179] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[197] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[215] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[233] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[251] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[269] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[287] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[305] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[323] = (T)(img)(_n9##x,_n9##y,z,c)),1)) || \ + _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], \ + I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], \ + I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], \ + I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], \ + I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], \ + I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], \ + I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], \ + I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], \ + I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], \ + I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], \ + I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], \ + I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], \ + I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], \ + _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x) + +#define cimg_get18x18(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p8##x,_p8##y,z,c), I[1] = (T)(img)(_p7##x,_p8##y,z,c), I[2] = (T)(img)(_p6##x,_p8##y,z,c), I[3] = (T)(img)(_p5##x,_p8##y,z,c), I[4] = (T)(img)(_p4##x,_p8##y,z,c), I[5] = (T)(img)(_p3##x,_p8##y,z,c), I[6] = (T)(img)(_p2##x,_p8##y,z,c), I[7] = (T)(img)(_p1##x,_p8##y,z,c), I[8] = (T)(img)(x,_p8##y,z,c), I[9] = (T)(img)(_n1##x,_p8##y,z,c), I[10] = (T)(img)(_n2##x,_p8##y,z,c), I[11] = (T)(img)(_n3##x,_p8##y,z,c), I[12] = (T)(img)(_n4##x,_p8##y,z,c), I[13] = (T)(img)(_n5##x,_p8##y,z,c), I[14] = (T)(img)(_n6##x,_p8##y,z,c), I[15] = (T)(img)(_n7##x,_p8##y,z,c), I[16] = (T)(img)(_n8##x,_p8##y,z,c), I[17] = (T)(img)(_n9##x,_p8##y,z,c), \ + I[18] = (T)(img)(_p8##x,_p7##y,z,c), I[19] = (T)(img)(_p7##x,_p7##y,z,c), I[20] = (T)(img)(_p6##x,_p7##y,z,c), I[21] = (T)(img)(_p5##x,_p7##y,z,c), I[22] = (T)(img)(_p4##x,_p7##y,z,c), I[23] = (T)(img)(_p3##x,_p7##y,z,c), I[24] = (T)(img)(_p2##x,_p7##y,z,c), I[25] = (T)(img)(_p1##x,_p7##y,z,c), I[26] = (T)(img)(x,_p7##y,z,c), I[27] = (T)(img)(_n1##x,_p7##y,z,c), I[28] = (T)(img)(_n2##x,_p7##y,z,c), I[29] = (T)(img)(_n3##x,_p7##y,z,c), I[30] = (T)(img)(_n4##x,_p7##y,z,c), I[31] = (T)(img)(_n5##x,_p7##y,z,c), I[32] = (T)(img)(_n6##x,_p7##y,z,c), I[33] = (T)(img)(_n7##x,_p7##y,z,c), I[34] = (T)(img)(_n8##x,_p7##y,z,c), I[35] = (T)(img)(_n9##x,_p7##y,z,c), \ + I[36] = (T)(img)(_p8##x,_p6##y,z,c), I[37] = (T)(img)(_p7##x,_p6##y,z,c), I[38] = (T)(img)(_p6##x,_p6##y,z,c), I[39] = (T)(img)(_p5##x,_p6##y,z,c), I[40] = (T)(img)(_p4##x,_p6##y,z,c), I[41] = (T)(img)(_p3##x,_p6##y,z,c), I[42] = (T)(img)(_p2##x,_p6##y,z,c), I[43] = (T)(img)(_p1##x,_p6##y,z,c), I[44] = (T)(img)(x,_p6##y,z,c), I[45] = (T)(img)(_n1##x,_p6##y,z,c), I[46] = (T)(img)(_n2##x,_p6##y,z,c), I[47] = (T)(img)(_n3##x,_p6##y,z,c), I[48] = (T)(img)(_n4##x,_p6##y,z,c), I[49] = (T)(img)(_n5##x,_p6##y,z,c), I[50] = (T)(img)(_n6##x,_p6##y,z,c), I[51] = (T)(img)(_n7##x,_p6##y,z,c), I[52] = (T)(img)(_n8##x,_p6##y,z,c), I[53] = (T)(img)(_n9##x,_p6##y,z,c), \ + I[54] = (T)(img)(_p8##x,_p5##y,z,c), I[55] = (T)(img)(_p7##x,_p5##y,z,c), I[56] = (T)(img)(_p6##x,_p5##y,z,c), I[57] = (T)(img)(_p5##x,_p5##y,z,c), I[58] = (T)(img)(_p4##x,_p5##y,z,c), I[59] = (T)(img)(_p3##x,_p5##y,z,c), I[60] = (T)(img)(_p2##x,_p5##y,z,c), I[61] = (T)(img)(_p1##x,_p5##y,z,c), I[62] = (T)(img)(x,_p5##y,z,c), I[63] = (T)(img)(_n1##x,_p5##y,z,c), I[64] = (T)(img)(_n2##x,_p5##y,z,c), I[65] = (T)(img)(_n3##x,_p5##y,z,c), I[66] = (T)(img)(_n4##x,_p5##y,z,c), I[67] = (T)(img)(_n5##x,_p5##y,z,c), I[68] = (T)(img)(_n6##x,_p5##y,z,c), I[69] = (T)(img)(_n7##x,_p5##y,z,c), I[70] = (T)(img)(_n8##x,_p5##y,z,c), I[71] = (T)(img)(_n9##x,_p5##y,z,c), \ + I[72] = (T)(img)(_p8##x,_p4##y,z,c), I[73] = (T)(img)(_p7##x,_p4##y,z,c), I[74] = (T)(img)(_p6##x,_p4##y,z,c), I[75] = (T)(img)(_p5##x,_p4##y,z,c), I[76] = (T)(img)(_p4##x,_p4##y,z,c), I[77] = (T)(img)(_p3##x,_p4##y,z,c), I[78] = (T)(img)(_p2##x,_p4##y,z,c), I[79] = (T)(img)(_p1##x,_p4##y,z,c), I[80] = (T)(img)(x,_p4##y,z,c), I[81] = (T)(img)(_n1##x,_p4##y,z,c), I[82] = (T)(img)(_n2##x,_p4##y,z,c), I[83] = (T)(img)(_n3##x,_p4##y,z,c), I[84] = (T)(img)(_n4##x,_p4##y,z,c), I[85] = (T)(img)(_n5##x,_p4##y,z,c), I[86] = (T)(img)(_n6##x,_p4##y,z,c), I[87] = (T)(img)(_n7##x,_p4##y,z,c), I[88] = (T)(img)(_n8##x,_p4##y,z,c), I[89] = (T)(img)(_n9##x,_p4##y,z,c), \ + I[90] = (T)(img)(_p8##x,_p3##y,z,c), I[91] = (T)(img)(_p7##x,_p3##y,z,c), I[92] = (T)(img)(_p6##x,_p3##y,z,c), I[93] = (T)(img)(_p5##x,_p3##y,z,c), I[94] = (T)(img)(_p4##x,_p3##y,z,c), I[95] = (T)(img)(_p3##x,_p3##y,z,c), I[96] = (T)(img)(_p2##x,_p3##y,z,c), I[97] = (T)(img)(_p1##x,_p3##y,z,c), I[98] = (T)(img)(x,_p3##y,z,c), I[99] = (T)(img)(_n1##x,_p3##y,z,c), I[100] = (T)(img)(_n2##x,_p3##y,z,c), I[101] = (T)(img)(_n3##x,_p3##y,z,c), I[102] = (T)(img)(_n4##x,_p3##y,z,c), I[103] = (T)(img)(_n5##x,_p3##y,z,c), I[104] = (T)(img)(_n6##x,_p3##y,z,c), I[105] = (T)(img)(_n7##x,_p3##y,z,c), I[106] = (T)(img)(_n8##x,_p3##y,z,c), I[107] = (T)(img)(_n9##x,_p3##y,z,c), \ + I[108] = (T)(img)(_p8##x,_p2##y,z,c), I[109] = (T)(img)(_p7##x,_p2##y,z,c), I[110] = (T)(img)(_p6##x,_p2##y,z,c), I[111] = (T)(img)(_p5##x,_p2##y,z,c), I[112] = (T)(img)(_p4##x,_p2##y,z,c), I[113] = (T)(img)(_p3##x,_p2##y,z,c), I[114] = (T)(img)(_p2##x,_p2##y,z,c), I[115] = (T)(img)(_p1##x,_p2##y,z,c), I[116] = (T)(img)(x,_p2##y,z,c), I[117] = (T)(img)(_n1##x,_p2##y,z,c), I[118] = (T)(img)(_n2##x,_p2##y,z,c), I[119] = (T)(img)(_n3##x,_p2##y,z,c), I[120] = (T)(img)(_n4##x,_p2##y,z,c), I[121] = (T)(img)(_n5##x,_p2##y,z,c), I[122] = (T)(img)(_n6##x,_p2##y,z,c), I[123] = (T)(img)(_n7##x,_p2##y,z,c), I[124] = (T)(img)(_n8##x,_p2##y,z,c), I[125] = (T)(img)(_n9##x,_p2##y,z,c), \ + I[126] = (T)(img)(_p8##x,_p1##y,z,c), I[127] = (T)(img)(_p7##x,_p1##y,z,c), I[128] = (T)(img)(_p6##x,_p1##y,z,c), I[129] = (T)(img)(_p5##x,_p1##y,z,c), I[130] = (T)(img)(_p4##x,_p1##y,z,c), I[131] = (T)(img)(_p3##x,_p1##y,z,c), I[132] = (T)(img)(_p2##x,_p1##y,z,c), I[133] = (T)(img)(_p1##x,_p1##y,z,c), I[134] = (T)(img)(x,_p1##y,z,c), I[135] = (T)(img)(_n1##x,_p1##y,z,c), I[136] = (T)(img)(_n2##x,_p1##y,z,c), I[137] = (T)(img)(_n3##x,_p1##y,z,c), I[138] = (T)(img)(_n4##x,_p1##y,z,c), I[139] = (T)(img)(_n5##x,_p1##y,z,c), I[140] = (T)(img)(_n6##x,_p1##y,z,c), I[141] = (T)(img)(_n7##x,_p1##y,z,c), I[142] = (T)(img)(_n8##x,_p1##y,z,c), I[143] = (T)(img)(_n9##x,_p1##y,z,c), \ + I[144] = (T)(img)(_p8##x,y,z,c), I[145] = (T)(img)(_p7##x,y,z,c), I[146] = (T)(img)(_p6##x,y,z,c), I[147] = (T)(img)(_p5##x,y,z,c), I[148] = (T)(img)(_p4##x,y,z,c), I[149] = (T)(img)(_p3##x,y,z,c), I[150] = (T)(img)(_p2##x,y,z,c), I[151] = (T)(img)(_p1##x,y,z,c), I[152] = (T)(img)(x,y,z,c), I[153] = (T)(img)(_n1##x,y,z,c), I[154] = (T)(img)(_n2##x,y,z,c), I[155] = (T)(img)(_n3##x,y,z,c), I[156] = (T)(img)(_n4##x,y,z,c), I[157] = (T)(img)(_n5##x,y,z,c), I[158] = (T)(img)(_n6##x,y,z,c), I[159] = (T)(img)(_n7##x,y,z,c), I[160] = (T)(img)(_n8##x,y,z,c), I[161] = (T)(img)(_n9##x,y,z,c), \ + I[162] = (T)(img)(_p8##x,_n1##y,z,c), I[163] = (T)(img)(_p7##x,_n1##y,z,c), I[164] = (T)(img)(_p6##x,_n1##y,z,c), I[165] = (T)(img)(_p5##x,_n1##y,z,c), I[166] = (T)(img)(_p4##x,_n1##y,z,c), I[167] = (T)(img)(_p3##x,_n1##y,z,c), I[168] = (T)(img)(_p2##x,_n1##y,z,c), I[169] = (T)(img)(_p1##x,_n1##y,z,c), I[170] = (T)(img)(x,_n1##y,z,c), I[171] = (T)(img)(_n1##x,_n1##y,z,c), I[172] = (T)(img)(_n2##x,_n1##y,z,c), I[173] = (T)(img)(_n3##x,_n1##y,z,c), I[174] = (T)(img)(_n4##x,_n1##y,z,c), I[175] = (T)(img)(_n5##x,_n1##y,z,c), I[176] = (T)(img)(_n6##x,_n1##y,z,c), I[177] = (T)(img)(_n7##x,_n1##y,z,c), I[178] = (T)(img)(_n8##x,_n1##y,z,c), I[179] = (T)(img)(_n9##x,_n1##y,z,c), \ + I[180] = (T)(img)(_p8##x,_n2##y,z,c), I[181] = (T)(img)(_p7##x,_n2##y,z,c), I[182] = (T)(img)(_p6##x,_n2##y,z,c), I[183] = (T)(img)(_p5##x,_n2##y,z,c), I[184] = (T)(img)(_p4##x,_n2##y,z,c), I[185] = (T)(img)(_p3##x,_n2##y,z,c), I[186] = (T)(img)(_p2##x,_n2##y,z,c), I[187] = (T)(img)(_p1##x,_n2##y,z,c), I[188] = (T)(img)(x,_n2##y,z,c), I[189] = (T)(img)(_n1##x,_n2##y,z,c), I[190] = (T)(img)(_n2##x,_n2##y,z,c), I[191] = (T)(img)(_n3##x,_n2##y,z,c), I[192] = (T)(img)(_n4##x,_n2##y,z,c), I[193] = (T)(img)(_n5##x,_n2##y,z,c), I[194] = (T)(img)(_n6##x,_n2##y,z,c), I[195] = (T)(img)(_n7##x,_n2##y,z,c), I[196] = (T)(img)(_n8##x,_n2##y,z,c), I[197] = (T)(img)(_n9##x,_n2##y,z,c), \ + I[198] = (T)(img)(_p8##x,_n3##y,z,c), I[199] = (T)(img)(_p7##x,_n3##y,z,c), I[200] = (T)(img)(_p6##x,_n3##y,z,c), I[201] = (T)(img)(_p5##x,_n3##y,z,c), I[202] = (T)(img)(_p4##x,_n3##y,z,c), I[203] = (T)(img)(_p3##x,_n3##y,z,c), I[204] = (T)(img)(_p2##x,_n3##y,z,c), I[205] = (T)(img)(_p1##x,_n3##y,z,c), I[206] = (T)(img)(x,_n3##y,z,c), I[207] = (T)(img)(_n1##x,_n3##y,z,c), I[208] = (T)(img)(_n2##x,_n3##y,z,c), I[209] = (T)(img)(_n3##x,_n3##y,z,c), I[210] = (T)(img)(_n4##x,_n3##y,z,c), I[211] = (T)(img)(_n5##x,_n3##y,z,c), I[212] = (T)(img)(_n6##x,_n3##y,z,c), I[213] = (T)(img)(_n7##x,_n3##y,z,c), I[214] = (T)(img)(_n8##x,_n3##y,z,c), I[215] = (T)(img)(_n9##x,_n3##y,z,c), \ + I[216] = (T)(img)(_p8##x,_n4##y,z,c), I[217] = (T)(img)(_p7##x,_n4##y,z,c), I[218] = (T)(img)(_p6##x,_n4##y,z,c), I[219] = (T)(img)(_p5##x,_n4##y,z,c), I[220] = (T)(img)(_p4##x,_n4##y,z,c), I[221] = (T)(img)(_p3##x,_n4##y,z,c), I[222] = (T)(img)(_p2##x,_n4##y,z,c), I[223] = (T)(img)(_p1##x,_n4##y,z,c), I[224] = (T)(img)(x,_n4##y,z,c), I[225] = (T)(img)(_n1##x,_n4##y,z,c), I[226] = (T)(img)(_n2##x,_n4##y,z,c), I[227] = (T)(img)(_n3##x,_n4##y,z,c), I[228] = (T)(img)(_n4##x,_n4##y,z,c), I[229] = (T)(img)(_n5##x,_n4##y,z,c), I[230] = (T)(img)(_n6##x,_n4##y,z,c), I[231] = (T)(img)(_n7##x,_n4##y,z,c), I[232] = (T)(img)(_n8##x,_n4##y,z,c), I[233] = (T)(img)(_n9##x,_n4##y,z,c), \ + I[234] = (T)(img)(_p8##x,_n5##y,z,c), I[235] = (T)(img)(_p7##x,_n5##y,z,c), I[236] = (T)(img)(_p6##x,_n5##y,z,c), I[237] = (T)(img)(_p5##x,_n5##y,z,c), I[238] = (T)(img)(_p4##x,_n5##y,z,c), I[239] = (T)(img)(_p3##x,_n5##y,z,c), I[240] = (T)(img)(_p2##x,_n5##y,z,c), I[241] = (T)(img)(_p1##x,_n5##y,z,c), I[242] = (T)(img)(x,_n5##y,z,c), I[243] = (T)(img)(_n1##x,_n5##y,z,c), I[244] = (T)(img)(_n2##x,_n5##y,z,c), I[245] = (T)(img)(_n3##x,_n5##y,z,c), I[246] = (T)(img)(_n4##x,_n5##y,z,c), I[247] = (T)(img)(_n5##x,_n5##y,z,c), I[248] = (T)(img)(_n6##x,_n5##y,z,c), I[249] = (T)(img)(_n7##x,_n5##y,z,c), I[250] = (T)(img)(_n8##x,_n5##y,z,c), I[251] = (T)(img)(_n9##x,_n5##y,z,c), \ + I[252] = (T)(img)(_p8##x,_n6##y,z,c), I[253] = (T)(img)(_p7##x,_n6##y,z,c), I[254] = (T)(img)(_p6##x,_n6##y,z,c), I[255] = (T)(img)(_p5##x,_n6##y,z,c), I[256] = (T)(img)(_p4##x,_n6##y,z,c), I[257] = (T)(img)(_p3##x,_n6##y,z,c), I[258] = (T)(img)(_p2##x,_n6##y,z,c), I[259] = (T)(img)(_p1##x,_n6##y,z,c), I[260] = (T)(img)(x,_n6##y,z,c), I[261] = (T)(img)(_n1##x,_n6##y,z,c), I[262] = (T)(img)(_n2##x,_n6##y,z,c), I[263] = (T)(img)(_n3##x,_n6##y,z,c), I[264] = (T)(img)(_n4##x,_n6##y,z,c), I[265] = (T)(img)(_n5##x,_n6##y,z,c), I[266] = (T)(img)(_n6##x,_n6##y,z,c), I[267] = (T)(img)(_n7##x,_n6##y,z,c), I[268] = (T)(img)(_n8##x,_n6##y,z,c), I[269] = (T)(img)(_n9##x,_n6##y,z,c), \ + I[270] = (T)(img)(_p8##x,_n7##y,z,c), I[271] = (T)(img)(_p7##x,_n7##y,z,c), I[272] = (T)(img)(_p6##x,_n7##y,z,c), I[273] = (T)(img)(_p5##x,_n7##y,z,c), I[274] = (T)(img)(_p4##x,_n7##y,z,c), I[275] = (T)(img)(_p3##x,_n7##y,z,c), I[276] = (T)(img)(_p2##x,_n7##y,z,c), I[277] = (T)(img)(_p1##x,_n7##y,z,c), I[278] = (T)(img)(x,_n7##y,z,c), I[279] = (T)(img)(_n1##x,_n7##y,z,c), I[280] = (T)(img)(_n2##x,_n7##y,z,c), I[281] = (T)(img)(_n3##x,_n7##y,z,c), I[282] = (T)(img)(_n4##x,_n7##y,z,c), I[283] = (T)(img)(_n5##x,_n7##y,z,c), I[284] = (T)(img)(_n6##x,_n7##y,z,c), I[285] = (T)(img)(_n7##x,_n7##y,z,c), I[286] = (T)(img)(_n8##x,_n7##y,z,c), I[287] = (T)(img)(_n9##x,_n7##y,z,c), \ + I[288] = (T)(img)(_p8##x,_n8##y,z,c), I[289] = (T)(img)(_p7##x,_n8##y,z,c), I[290] = (T)(img)(_p6##x,_n8##y,z,c), I[291] = (T)(img)(_p5##x,_n8##y,z,c), I[292] = (T)(img)(_p4##x,_n8##y,z,c), I[293] = (T)(img)(_p3##x,_n8##y,z,c), I[294] = (T)(img)(_p2##x,_n8##y,z,c), I[295] = (T)(img)(_p1##x,_n8##y,z,c), I[296] = (T)(img)(x,_n8##y,z,c), I[297] = (T)(img)(_n1##x,_n8##y,z,c), I[298] = (T)(img)(_n2##x,_n8##y,z,c), I[299] = (T)(img)(_n3##x,_n8##y,z,c), I[300] = (T)(img)(_n4##x,_n8##y,z,c), I[301] = (T)(img)(_n5##x,_n8##y,z,c), I[302] = (T)(img)(_n6##x,_n8##y,z,c), I[303] = (T)(img)(_n7##x,_n8##y,z,c), I[304] = (T)(img)(_n8##x,_n8##y,z,c), I[305] = (T)(img)(_n9##x,_n8##y,z,c), \ + I[306] = (T)(img)(_p8##x,_n9##y,z,c), I[307] = (T)(img)(_p7##x,_n9##y,z,c), I[308] = (T)(img)(_p6##x,_n9##y,z,c), I[309] = (T)(img)(_p5##x,_n9##y,z,c), I[310] = (T)(img)(_p4##x,_n9##y,z,c), I[311] = (T)(img)(_p3##x,_n9##y,z,c), I[312] = (T)(img)(_p2##x,_n9##y,z,c), I[313] = (T)(img)(_p1##x,_n9##y,z,c), I[314] = (T)(img)(x,_n9##y,z,c), I[315] = (T)(img)(_n1##x,_n9##y,z,c), I[316] = (T)(img)(_n2##x,_n9##y,z,c), I[317] = (T)(img)(_n3##x,_n9##y,z,c), I[318] = (T)(img)(_n4##x,_n9##y,z,c), I[319] = (T)(img)(_n5##x,_n9##y,z,c), I[320] = (T)(img)(_n6##x,_n9##y,z,c), I[321] = (T)(img)(_n7##x,_n9##y,z,c), I[322] = (T)(img)(_n8##x,_n9##y,z,c), I[323] = (T)(img)(_n9##x,_n9##y,z,c); + +// Define 19x19 loop macros +//------------------------- +#define cimg_for19(bound,i) for (int i = 0, \ + _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9; \ + _n9##i<(int)(bound) || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i) + +#define cimg_for19X(img,x) cimg_for19((img)._width,x) +#define cimg_for19Y(img,y) cimg_for19((img)._height,y) +#define cimg_for19Z(img,z) cimg_for19((img)._depth,z) +#define cimg_for19C(img,c) cimg_for19((img)._spectrum,c) +#define cimg_for19XY(img,x,y) cimg_for19Y(img,y) cimg_for19X(img,x) +#define cimg_for19XZ(img,x,z) cimg_for19Z(img,z) cimg_for19X(img,x) +#define cimg_for19XC(img,x,c) cimg_for19C(img,c) cimg_for19X(img,x) +#define cimg_for19YZ(img,y,z) cimg_for19Z(img,z) cimg_for19Y(img,y) +#define cimg_for19YC(img,y,c) cimg_for19C(img,c) cimg_for19Y(img,y) +#define cimg_for19ZC(img,z,c) cimg_for19C(img,c) cimg_for19Z(img,z) +#define cimg_for19XYZ(img,x,y,z) cimg_for19Z(img,z) cimg_for19XY(img,x,y) +#define cimg_for19XZC(img,x,z,c) cimg_for19C(img,c) cimg_for19XZ(img,x,z) +#define cimg_for19YZC(img,y,z,c) cimg_for19C(img,c) cimg_for19YZ(img,y,z) +#define cimg_for19XYZC(img,x,y,z,c) cimg_for19C(img,c) cimg_for19XYZ(img,x,y,z) + +#define cimg_for_in19(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9; \ + i<=(int)(i1) && (_n9##i<(int)(bound) || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i) + +#define cimg_for_in19X(img,x0,x1,x) cimg_for_in19((img)._width,x0,x1,x) +#define cimg_for_in19Y(img,y0,y1,y) cimg_for_in19((img)._height,y0,y1,y) +#define cimg_for_in19Z(img,z0,z1,z) cimg_for_in19((img)._depth,z0,z1,z) +#define cimg_for_in19C(img,c0,c1,c) cimg_for_in19((img)._spectrum,c0,c1,c) +#define cimg_for_in19XY(img,x0,y0,x1,y1,x,y) cimg_for_in19Y(img,y0,y1,y) cimg_for_in19X(img,x0,x1,x) +#define cimg_for_in19XZ(img,x0,z0,x1,z1,x,z) cimg_for_in19Z(img,z0,z1,z) cimg_for_in19X(img,x0,x1,x) +#define cimg_for_in19XC(img,x0,c0,x1,c1,x,c) cimg_for_in19C(img,c0,c1,c) cimg_for_in19X(img,x0,x1,x) +#define cimg_for_in19YZ(img,y0,z0,y1,z1,y,z) cimg_for_in19Z(img,z0,z1,z) cimg_for_in19Y(img,y0,y1,y) +#define cimg_for_in19YC(img,y0,c0,y1,c1,y,c) cimg_for_in19C(img,c0,c1,c) cimg_for_in19Y(img,y0,y1,y) +#define cimg_for_in19ZC(img,z0,c0,z1,c1,z,c) cimg_for_in19C(img,c0,c1,c) cimg_for_in19Z(img,z0,z1,z) +#define cimg_for_in19XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in19Z(img,z0,z1,z) cimg_for_in19XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in19XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in19C(img,c0,c1,c) cimg_for_in19XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in19YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in19C(img,c0,c1,c) cimg_for_in19YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in19XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in19C(img,c0,c1,c) cimg_for_in19XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for19x19(img,x,y,z,c,I,T) \ + cimg_for19((img)._height,y) for (int x = 0, \ + _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = (T)(img)(0,_p9##y,z,c)), \ + (I[19] = I[20] = I[21] = I[22] = I[23] = I[24] = I[25] = I[26] = I[27] = I[28] = (T)(img)(0,_p8##y,z,c)), \ + (I[38] = I[39] = I[40] = I[41] = I[42] = I[43] = I[44] = I[45] = I[46] = I[47] = (T)(img)(0,_p7##y,z,c)), \ + (I[57] = I[58] = I[59] = I[60] = I[61] = I[62] = I[63] = I[64] = I[65] = I[66] = (T)(img)(0,_p6##y,z,c)), \ + (I[76] = I[77] = I[78] = I[79] = I[80] = I[81] = I[82] = I[83] = I[84] = I[85] = (T)(img)(0,_p5##y,z,c)), \ + (I[95] = I[96] = I[97] = I[98] = I[99] = I[100] = I[101] = I[102] = I[103] = I[104] = (T)(img)(0,_p4##y,z,c)), \ + (I[114] = I[115] = I[116] = I[117] = I[118] = I[119] = I[120] = I[121] = I[122] = I[123] = (T)(img)(0,_p3##y,z,c)), \ + (I[133] = I[134] = I[135] = I[136] = I[137] = I[138] = I[139] = I[140] = I[141] = I[142] = (T)(img)(0,_p2##y,z,c)), \ + (I[152] = I[153] = I[154] = I[155] = I[156] = I[157] = I[158] = I[159] = I[160] = I[161] = (T)(img)(0,_p1##y,z,c)), \ + (I[171] = I[172] = I[173] = I[174] = I[175] = I[176] = I[177] = I[178] = I[179] = I[180] = (T)(img)(0,y,z,c)), \ + (I[190] = I[191] = I[192] = I[193] = I[194] = I[195] = I[196] = I[197] = I[198] = I[199] = (T)(img)(0,_n1##y,z,c)), \ + (I[209] = I[210] = I[211] = I[212] = I[213] = I[214] = I[215] = I[216] = I[217] = I[218] = (T)(img)(0,_n2##y,z,c)), \ + (I[228] = I[229] = I[230] = I[231] = I[232] = I[233] = I[234] = I[235] = I[236] = I[237] = (T)(img)(0,_n3##y,z,c)), \ + (I[247] = I[248] = I[249] = I[250] = I[251] = I[252] = I[253] = I[254] = I[255] = I[256] = (T)(img)(0,_n4##y,z,c)), \ + (I[266] = I[267] = I[268] = I[269] = I[270] = I[271] = I[272] = I[273] = I[274] = I[275] = (T)(img)(0,_n5##y,z,c)), \ + (I[285] = I[286] = I[287] = I[288] = I[289] = I[290] = I[291] = I[292] = I[293] = I[294] = (T)(img)(0,_n6##y,z,c)), \ + (I[304] = I[305] = I[306] = I[307] = I[308] = I[309] = I[310] = I[311] = I[312] = I[313] = (T)(img)(0,_n7##y,z,c)), \ + (I[323] = I[324] = I[325] = I[326] = I[327] = I[328] = I[329] = I[330] = I[331] = I[332] = (T)(img)(0,_n8##y,z,c)), \ + (I[342] = I[343] = I[344] = I[345] = I[346] = I[347] = I[348] = I[349] = I[350] = I[351] = (T)(img)(0,_n9##y,z,c)), \ + (I[10] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[29] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[48] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[67] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[86] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[105] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[124] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[143] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[162] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[181] = (T)(img)(_n1##x,y,z,c)), \ + (I[200] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[219] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[238] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[257] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[276] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[295] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[314] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[333] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[352] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[11] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[30] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[49] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[68] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[87] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[106] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[125] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[144] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[163] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[182] = (T)(img)(_n2##x,y,z,c)), \ + (I[201] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[220] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[239] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[258] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[277] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[296] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[315] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[334] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[353] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[12] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[31] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[50] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[69] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[88] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[107] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[126] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[145] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[164] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[183] = (T)(img)(_n3##x,y,z,c)), \ + (I[202] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[221] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[240] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[259] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[278] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[297] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[316] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[335] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[354] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[13] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[32] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[51] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[70] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[89] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[108] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[127] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[146] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[165] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[184] = (T)(img)(_n4##x,y,z,c)), \ + (I[203] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[222] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[241] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[260] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[279] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[298] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[317] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[336] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[355] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[14] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[33] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[52] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[71] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[90] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[109] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[128] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[147] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[166] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[185] = (T)(img)(_n5##x,y,z,c)), \ + (I[204] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[223] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[242] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[261] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[280] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[299] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[318] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[337] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[356] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[15] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[34] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[53] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[72] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[91] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[110] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[129] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[148] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[167] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[186] = (T)(img)(_n6##x,y,z,c)), \ + (I[205] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[224] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[243] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[262] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[281] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[300] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[319] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[338] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[357] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[16] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[35] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[54] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[73] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[92] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[111] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[130] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[149] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[168] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[187] = (T)(img)(_n7##x,y,z,c)), \ + (I[206] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[225] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[244] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[263] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[282] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[301] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[320] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[339] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[358] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[17] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[36] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[55] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[74] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[93] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[112] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[131] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[150] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[169] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[188] = (T)(img)(_n8##x,y,z,c)), \ + (I[207] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[226] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[245] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[264] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[283] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[302] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[321] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[340] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[359] = (T)(img)(_n8##x,_n9##y,z,c)), \ + 9>=((img)._width)?(img).width() - 1:9); \ + (_n9##x<(img).width() && ( \ + (I[18] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[37] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[56] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[75] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[94] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[113] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[132] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[151] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[170] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[189] = (T)(img)(_n9##x,y,z,c)), \ + (I[208] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[227] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[246] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[265] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[284] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[303] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[322] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[341] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[360] = (T)(img)(_n9##x,_n9##y,z,c)),1)) || \ + _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], \ + I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], \ + I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], \ + I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], \ + I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], \ + I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], \ + I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], \ + I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], \ + I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], \ + I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], \ + I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], \ + I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], \ + I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], \ + I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], \ + I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], \ + I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], \ + I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], \ + I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], \ + I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], \ + _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x) + +#define cimg_for_in19x19(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in19((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = (int)( \ + (I[0] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[19] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[38] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[57] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[76] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[95] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[114] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[133] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[152] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[171] = (T)(img)(_p9##x,y,z,c)), \ + (I[190] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[209] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[228] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[247] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[266] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[285] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[304] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[323] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[342] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[1] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[20] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[39] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[58] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[77] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[96] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[115] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[134] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[153] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[172] = (T)(img)(_p8##x,y,z,c)), \ + (I[191] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[210] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[229] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[248] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[267] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[286] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[305] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[324] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[343] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[2] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[21] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[40] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[59] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[78] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[97] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[116] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[135] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[154] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[173] = (T)(img)(_p7##x,y,z,c)), \ + (I[192] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[211] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[230] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[249] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[268] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[287] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[306] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[325] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[344] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[3] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[22] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[41] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[60] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[79] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[98] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[117] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[136] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[155] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[174] = (T)(img)(_p6##x,y,z,c)), \ + (I[193] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[212] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[231] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[250] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[269] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[288] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[307] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[326] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[345] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[4] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[23] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[42] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[61] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[80] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[99] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[118] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[137] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[156] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[175] = (T)(img)(_p5##x,y,z,c)), \ + (I[194] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[213] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[232] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[251] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[270] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[289] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[308] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[327] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[346] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[5] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[24] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[43] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[62] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[81] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[100] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[119] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[138] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[157] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[176] = (T)(img)(_p4##x,y,z,c)), \ + (I[195] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[214] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[233] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[252] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[271] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[290] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[309] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[328] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[347] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[6] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[25] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[44] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[63] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[82] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[101] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[120] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[139] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[158] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[177] = (T)(img)(_p3##x,y,z,c)), \ + (I[196] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[215] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[234] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[253] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[272] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[291] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[310] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[329] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[348] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[7] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[26] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[45] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[64] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[83] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[102] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[121] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[140] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[159] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[178] = (T)(img)(_p2##x,y,z,c)), \ + (I[197] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[216] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[235] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[254] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[273] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[292] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[311] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[330] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[349] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[8] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[27] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[46] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[65] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[84] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[103] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[122] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[141] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[160] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[179] = (T)(img)(_p1##x,y,z,c)), \ + (I[198] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[217] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[236] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[255] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[274] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[293] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[312] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[331] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[350] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[9] = (T)(img)(x,_p9##y,z,c)), \ + (I[28] = (T)(img)(x,_p8##y,z,c)), \ + (I[47] = (T)(img)(x,_p7##y,z,c)), \ + (I[66] = (T)(img)(x,_p6##y,z,c)), \ + (I[85] = (T)(img)(x,_p5##y,z,c)), \ + (I[104] = (T)(img)(x,_p4##y,z,c)), \ + (I[123] = (T)(img)(x,_p3##y,z,c)), \ + (I[142] = (T)(img)(x,_p2##y,z,c)), \ + (I[161] = (T)(img)(x,_p1##y,z,c)), \ + (I[180] = (T)(img)(x,y,z,c)), \ + (I[199] = (T)(img)(x,_n1##y,z,c)), \ + (I[218] = (T)(img)(x,_n2##y,z,c)), \ + (I[237] = (T)(img)(x,_n3##y,z,c)), \ + (I[256] = (T)(img)(x,_n4##y,z,c)), \ + (I[275] = (T)(img)(x,_n5##y,z,c)), \ + (I[294] = (T)(img)(x,_n6##y,z,c)), \ + (I[313] = (T)(img)(x,_n7##y,z,c)), \ + (I[332] = (T)(img)(x,_n8##y,z,c)), \ + (I[351] = (T)(img)(x,_n9##y,z,c)), \ + (I[10] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[29] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[48] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[67] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[86] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[105] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[124] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[143] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[162] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[181] = (T)(img)(_n1##x,y,z,c)), \ + (I[200] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[219] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[238] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[257] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[276] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[295] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[314] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[333] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[352] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[11] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[30] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[49] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[68] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[87] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[106] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[125] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[144] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[163] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[182] = (T)(img)(_n2##x,y,z,c)), \ + (I[201] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[220] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[239] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[258] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[277] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[296] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[315] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[334] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[353] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[12] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[31] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[50] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[69] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[88] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[107] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[126] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[145] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[164] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[183] = (T)(img)(_n3##x,y,z,c)), \ + (I[202] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[221] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[240] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[259] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[278] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[297] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[316] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[335] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[354] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[13] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[32] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[51] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[70] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[89] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[108] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[127] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[146] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[165] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[184] = (T)(img)(_n4##x,y,z,c)), \ + (I[203] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[222] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[241] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[260] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[279] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[298] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[317] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[336] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[355] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[14] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[33] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[52] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[71] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[90] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[109] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[128] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[147] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[166] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[185] = (T)(img)(_n5##x,y,z,c)), \ + (I[204] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[223] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[242] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[261] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[280] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[299] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[318] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[337] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[356] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[15] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[34] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[53] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[72] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[91] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[110] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[129] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[148] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[167] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[186] = (T)(img)(_n6##x,y,z,c)), \ + (I[205] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[224] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[243] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[262] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[281] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[300] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[319] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[338] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[357] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[16] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[35] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[54] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[73] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[92] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[111] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[130] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[149] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[168] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[187] = (T)(img)(_n7##x,y,z,c)), \ + (I[206] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[225] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[244] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[263] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[282] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[301] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[320] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[339] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[358] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[17] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[36] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[55] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[74] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[93] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[112] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[131] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[150] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[169] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[188] = (T)(img)(_n8##x,y,z,c)), \ + (I[207] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[226] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[245] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[264] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[283] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[302] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[321] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[340] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[359] = (T)(img)(_n8##x,_n9##y,z,c)), \ + x + 9>=(img).width()?(img).width() - 1:x + 9); \ + x<=(int)(x1) && ((_n9##x<(img).width() && ( \ + (I[18] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[37] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[56] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[75] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[94] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[113] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[132] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[151] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[170] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[189] = (T)(img)(_n9##x,y,z,c)), \ + (I[208] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[227] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[246] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[265] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[284] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[303] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[322] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[341] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[360] = (T)(img)(_n9##x,_n9##y,z,c)),1)) || \ + _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], \ + I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], \ + I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], \ + I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], \ + I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], \ + I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], \ + I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], \ + I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], \ + I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], \ + I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], \ + I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], \ + I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], \ + I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], \ + I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], \ + I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], \ + I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], \ + I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], \ + I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], \ + I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], \ + _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x) + +#define cimg_get19x19(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p9##x,_p9##y,z,c), I[1] = (T)(img)(_p8##x,_p9##y,z,c), I[2] = (T)(img)(_p7##x,_p9##y,z,c), I[3] = (T)(img)(_p6##x,_p9##y,z,c), I[4] = (T)(img)(_p5##x,_p9##y,z,c), I[5] = (T)(img)(_p4##x,_p9##y,z,c), I[6] = (T)(img)(_p3##x,_p9##y,z,c), I[7] = (T)(img)(_p2##x,_p9##y,z,c), I[8] = (T)(img)(_p1##x,_p9##y,z,c), I[9] = (T)(img)(x,_p9##y,z,c), I[10] = (T)(img)(_n1##x,_p9##y,z,c), I[11] = (T)(img)(_n2##x,_p9##y,z,c), I[12] = (T)(img)(_n3##x,_p9##y,z,c), I[13] = (T)(img)(_n4##x,_p9##y,z,c), I[14] = (T)(img)(_n5##x,_p9##y,z,c), I[15] = (T)(img)(_n6##x,_p9##y,z,c), I[16] = (T)(img)(_n7##x,_p9##y,z,c), I[17] = (T)(img)(_n8##x,_p9##y,z,c), I[18] = (T)(img)(_n9##x,_p9##y,z,c), \ + I[19] = (T)(img)(_p9##x,_p8##y,z,c), I[20] = (T)(img)(_p8##x,_p8##y,z,c), I[21] = (T)(img)(_p7##x,_p8##y,z,c), I[22] = (T)(img)(_p6##x,_p8##y,z,c), I[23] = (T)(img)(_p5##x,_p8##y,z,c), I[24] = (T)(img)(_p4##x,_p8##y,z,c), I[25] = (T)(img)(_p3##x,_p8##y,z,c), I[26] = (T)(img)(_p2##x,_p8##y,z,c), I[27] = (T)(img)(_p1##x,_p8##y,z,c), I[28] = (T)(img)(x,_p8##y,z,c), I[29] = (T)(img)(_n1##x,_p8##y,z,c), I[30] = (T)(img)(_n2##x,_p8##y,z,c), I[31] = (T)(img)(_n3##x,_p8##y,z,c), I[32] = (T)(img)(_n4##x,_p8##y,z,c), I[33] = (T)(img)(_n5##x,_p8##y,z,c), I[34] = (T)(img)(_n6##x,_p8##y,z,c), I[35] = (T)(img)(_n7##x,_p8##y,z,c), I[36] = (T)(img)(_n8##x,_p8##y,z,c), I[37] = (T)(img)(_n9##x,_p8##y,z,c), \ + I[38] = (T)(img)(_p9##x,_p7##y,z,c), I[39] = (T)(img)(_p8##x,_p7##y,z,c), I[40] = (T)(img)(_p7##x,_p7##y,z,c), I[41] = (T)(img)(_p6##x,_p7##y,z,c), I[42] = (T)(img)(_p5##x,_p7##y,z,c), I[43] = (T)(img)(_p4##x,_p7##y,z,c), I[44] = (T)(img)(_p3##x,_p7##y,z,c), I[45] = (T)(img)(_p2##x,_p7##y,z,c), I[46] = (T)(img)(_p1##x,_p7##y,z,c), I[47] = (T)(img)(x,_p7##y,z,c), I[48] = (T)(img)(_n1##x,_p7##y,z,c), I[49] = (T)(img)(_n2##x,_p7##y,z,c), I[50] = (T)(img)(_n3##x,_p7##y,z,c), I[51] = (T)(img)(_n4##x,_p7##y,z,c), I[52] = (T)(img)(_n5##x,_p7##y,z,c), I[53] = (T)(img)(_n6##x,_p7##y,z,c), I[54] = (T)(img)(_n7##x,_p7##y,z,c), I[55] = (T)(img)(_n8##x,_p7##y,z,c), I[56] = (T)(img)(_n9##x,_p7##y,z,c), \ + I[57] = (T)(img)(_p9##x,_p6##y,z,c), I[58] = (T)(img)(_p8##x,_p6##y,z,c), I[59] = (T)(img)(_p7##x,_p6##y,z,c), I[60] = (T)(img)(_p6##x,_p6##y,z,c), I[61] = (T)(img)(_p5##x,_p6##y,z,c), I[62] = (T)(img)(_p4##x,_p6##y,z,c), I[63] = (T)(img)(_p3##x,_p6##y,z,c), I[64] = (T)(img)(_p2##x,_p6##y,z,c), I[65] = (T)(img)(_p1##x,_p6##y,z,c), I[66] = (T)(img)(x,_p6##y,z,c), I[67] = (T)(img)(_n1##x,_p6##y,z,c), I[68] = (T)(img)(_n2##x,_p6##y,z,c), I[69] = (T)(img)(_n3##x,_p6##y,z,c), I[70] = (T)(img)(_n4##x,_p6##y,z,c), I[71] = (T)(img)(_n5##x,_p6##y,z,c), I[72] = (T)(img)(_n6##x,_p6##y,z,c), I[73] = (T)(img)(_n7##x,_p6##y,z,c), I[74] = (T)(img)(_n8##x,_p6##y,z,c), I[75] = (T)(img)(_n9##x,_p6##y,z,c), \ + I[76] = (T)(img)(_p9##x,_p5##y,z,c), I[77] = (T)(img)(_p8##x,_p5##y,z,c), I[78] = (T)(img)(_p7##x,_p5##y,z,c), I[79] = (T)(img)(_p6##x,_p5##y,z,c), I[80] = (T)(img)(_p5##x,_p5##y,z,c), I[81] = (T)(img)(_p4##x,_p5##y,z,c), I[82] = (T)(img)(_p3##x,_p5##y,z,c), I[83] = (T)(img)(_p2##x,_p5##y,z,c), I[84] = (T)(img)(_p1##x,_p5##y,z,c), I[85] = (T)(img)(x,_p5##y,z,c), I[86] = (T)(img)(_n1##x,_p5##y,z,c), I[87] = (T)(img)(_n2##x,_p5##y,z,c), I[88] = (T)(img)(_n3##x,_p5##y,z,c), I[89] = (T)(img)(_n4##x,_p5##y,z,c), I[90] = (T)(img)(_n5##x,_p5##y,z,c), I[91] = (T)(img)(_n6##x,_p5##y,z,c), I[92] = (T)(img)(_n7##x,_p5##y,z,c), I[93] = (T)(img)(_n8##x,_p5##y,z,c), I[94] = (T)(img)(_n9##x,_p5##y,z,c), \ + I[95] = (T)(img)(_p9##x,_p4##y,z,c), I[96] = (T)(img)(_p8##x,_p4##y,z,c), I[97] = (T)(img)(_p7##x,_p4##y,z,c), I[98] = (T)(img)(_p6##x,_p4##y,z,c), I[99] = (T)(img)(_p5##x,_p4##y,z,c), I[100] = (T)(img)(_p4##x,_p4##y,z,c), I[101] = (T)(img)(_p3##x,_p4##y,z,c), I[102] = (T)(img)(_p2##x,_p4##y,z,c), I[103] = (T)(img)(_p1##x,_p4##y,z,c), I[104] = (T)(img)(x,_p4##y,z,c), I[105] = (T)(img)(_n1##x,_p4##y,z,c), I[106] = (T)(img)(_n2##x,_p4##y,z,c), I[107] = (T)(img)(_n3##x,_p4##y,z,c), I[108] = (T)(img)(_n4##x,_p4##y,z,c), I[109] = (T)(img)(_n5##x,_p4##y,z,c), I[110] = (T)(img)(_n6##x,_p4##y,z,c), I[111] = (T)(img)(_n7##x,_p4##y,z,c), I[112] = (T)(img)(_n8##x,_p4##y,z,c), I[113] = (T)(img)(_n9##x,_p4##y,z,c), \ + I[114] = (T)(img)(_p9##x,_p3##y,z,c), I[115] = (T)(img)(_p8##x,_p3##y,z,c), I[116] = (T)(img)(_p7##x,_p3##y,z,c), I[117] = (T)(img)(_p6##x,_p3##y,z,c), I[118] = (T)(img)(_p5##x,_p3##y,z,c), I[119] = (T)(img)(_p4##x,_p3##y,z,c), I[120] = (T)(img)(_p3##x,_p3##y,z,c), I[121] = (T)(img)(_p2##x,_p3##y,z,c), I[122] = (T)(img)(_p1##x,_p3##y,z,c), I[123] = (T)(img)(x,_p3##y,z,c), I[124] = (T)(img)(_n1##x,_p3##y,z,c), I[125] = (T)(img)(_n2##x,_p3##y,z,c), I[126] = (T)(img)(_n3##x,_p3##y,z,c), I[127] = (T)(img)(_n4##x,_p3##y,z,c), I[128] = (T)(img)(_n5##x,_p3##y,z,c), I[129] = (T)(img)(_n6##x,_p3##y,z,c), I[130] = (T)(img)(_n7##x,_p3##y,z,c), I[131] = (T)(img)(_n8##x,_p3##y,z,c), I[132] = (T)(img)(_n9##x,_p3##y,z,c), \ + I[133] = (T)(img)(_p9##x,_p2##y,z,c), I[134] = (T)(img)(_p8##x,_p2##y,z,c), I[135] = (T)(img)(_p7##x,_p2##y,z,c), I[136] = (T)(img)(_p6##x,_p2##y,z,c), I[137] = (T)(img)(_p5##x,_p2##y,z,c), I[138] = (T)(img)(_p4##x,_p2##y,z,c), I[139] = (T)(img)(_p3##x,_p2##y,z,c), I[140] = (T)(img)(_p2##x,_p2##y,z,c), I[141] = (T)(img)(_p1##x,_p2##y,z,c), I[142] = (T)(img)(x,_p2##y,z,c), I[143] = (T)(img)(_n1##x,_p2##y,z,c), I[144] = (T)(img)(_n2##x,_p2##y,z,c), I[145] = (T)(img)(_n3##x,_p2##y,z,c), I[146] = (T)(img)(_n4##x,_p2##y,z,c), I[147] = (T)(img)(_n5##x,_p2##y,z,c), I[148] = (T)(img)(_n6##x,_p2##y,z,c), I[149] = (T)(img)(_n7##x,_p2##y,z,c), I[150] = (T)(img)(_n8##x,_p2##y,z,c), I[151] = (T)(img)(_n9##x,_p2##y,z,c), \ + I[152] = (T)(img)(_p9##x,_p1##y,z,c), I[153] = (T)(img)(_p8##x,_p1##y,z,c), I[154] = (T)(img)(_p7##x,_p1##y,z,c), I[155] = (T)(img)(_p6##x,_p1##y,z,c), I[156] = (T)(img)(_p5##x,_p1##y,z,c), I[157] = (T)(img)(_p4##x,_p1##y,z,c), I[158] = (T)(img)(_p3##x,_p1##y,z,c), I[159] = (T)(img)(_p2##x,_p1##y,z,c), I[160] = (T)(img)(_p1##x,_p1##y,z,c), I[161] = (T)(img)(x,_p1##y,z,c), I[162] = (T)(img)(_n1##x,_p1##y,z,c), I[163] = (T)(img)(_n2##x,_p1##y,z,c), I[164] = (T)(img)(_n3##x,_p1##y,z,c), I[165] = (T)(img)(_n4##x,_p1##y,z,c), I[166] = (T)(img)(_n5##x,_p1##y,z,c), I[167] = (T)(img)(_n6##x,_p1##y,z,c), I[168] = (T)(img)(_n7##x,_p1##y,z,c), I[169] = (T)(img)(_n8##x,_p1##y,z,c), I[170] = (T)(img)(_n9##x,_p1##y,z,c), \ + I[171] = (T)(img)(_p9##x,y,z,c), I[172] = (T)(img)(_p8##x,y,z,c), I[173] = (T)(img)(_p7##x,y,z,c), I[174] = (T)(img)(_p6##x,y,z,c), I[175] = (T)(img)(_p5##x,y,z,c), I[176] = (T)(img)(_p4##x,y,z,c), I[177] = (T)(img)(_p3##x,y,z,c), I[178] = (T)(img)(_p2##x,y,z,c), I[179] = (T)(img)(_p1##x,y,z,c), I[180] = (T)(img)(x,y,z,c), I[181] = (T)(img)(_n1##x,y,z,c), I[182] = (T)(img)(_n2##x,y,z,c), I[183] = (T)(img)(_n3##x,y,z,c), I[184] = (T)(img)(_n4##x,y,z,c), I[185] = (T)(img)(_n5##x,y,z,c), I[186] = (T)(img)(_n6##x,y,z,c), I[187] = (T)(img)(_n7##x,y,z,c), I[188] = (T)(img)(_n8##x,y,z,c), I[189] = (T)(img)(_n9##x,y,z,c), \ + I[190] = (T)(img)(_p9##x,_n1##y,z,c), I[191] = (T)(img)(_p8##x,_n1##y,z,c), I[192] = (T)(img)(_p7##x,_n1##y,z,c), I[193] = (T)(img)(_p6##x,_n1##y,z,c), I[194] = (T)(img)(_p5##x,_n1##y,z,c), I[195] = (T)(img)(_p4##x,_n1##y,z,c), I[196] = (T)(img)(_p3##x,_n1##y,z,c), I[197] = (T)(img)(_p2##x,_n1##y,z,c), I[198] = (T)(img)(_p1##x,_n1##y,z,c), I[199] = (T)(img)(x,_n1##y,z,c), I[200] = (T)(img)(_n1##x,_n1##y,z,c), I[201] = (T)(img)(_n2##x,_n1##y,z,c), I[202] = (T)(img)(_n3##x,_n1##y,z,c), I[203] = (T)(img)(_n4##x,_n1##y,z,c), I[204] = (T)(img)(_n5##x,_n1##y,z,c), I[205] = (T)(img)(_n6##x,_n1##y,z,c), I[206] = (T)(img)(_n7##x,_n1##y,z,c), I[207] = (T)(img)(_n8##x,_n1##y,z,c), I[208] = (T)(img)(_n9##x,_n1##y,z,c), \ + I[209] = (T)(img)(_p9##x,_n2##y,z,c), I[210] = (T)(img)(_p8##x,_n2##y,z,c), I[211] = (T)(img)(_p7##x,_n2##y,z,c), I[212] = (T)(img)(_p6##x,_n2##y,z,c), I[213] = (T)(img)(_p5##x,_n2##y,z,c), I[214] = (T)(img)(_p4##x,_n2##y,z,c), I[215] = (T)(img)(_p3##x,_n2##y,z,c), I[216] = (T)(img)(_p2##x,_n2##y,z,c), I[217] = (T)(img)(_p1##x,_n2##y,z,c), I[218] = (T)(img)(x,_n2##y,z,c), I[219] = (T)(img)(_n1##x,_n2##y,z,c), I[220] = (T)(img)(_n2##x,_n2##y,z,c), I[221] = (T)(img)(_n3##x,_n2##y,z,c), I[222] = (T)(img)(_n4##x,_n2##y,z,c), I[223] = (T)(img)(_n5##x,_n2##y,z,c), I[224] = (T)(img)(_n6##x,_n2##y,z,c), I[225] = (T)(img)(_n7##x,_n2##y,z,c), I[226] = (T)(img)(_n8##x,_n2##y,z,c), I[227] = (T)(img)(_n9##x,_n2##y,z,c), \ + I[228] = (T)(img)(_p9##x,_n3##y,z,c), I[229] = (T)(img)(_p8##x,_n3##y,z,c), I[230] = (T)(img)(_p7##x,_n3##y,z,c), I[231] = (T)(img)(_p6##x,_n3##y,z,c), I[232] = (T)(img)(_p5##x,_n3##y,z,c), I[233] = (T)(img)(_p4##x,_n3##y,z,c), I[234] = (T)(img)(_p3##x,_n3##y,z,c), I[235] = (T)(img)(_p2##x,_n3##y,z,c), I[236] = (T)(img)(_p1##x,_n3##y,z,c), I[237] = (T)(img)(x,_n3##y,z,c), I[238] = (T)(img)(_n1##x,_n3##y,z,c), I[239] = (T)(img)(_n2##x,_n3##y,z,c), I[240] = (T)(img)(_n3##x,_n3##y,z,c), I[241] = (T)(img)(_n4##x,_n3##y,z,c), I[242] = (T)(img)(_n5##x,_n3##y,z,c), I[243] = (T)(img)(_n6##x,_n3##y,z,c), I[244] = (T)(img)(_n7##x,_n3##y,z,c), I[245] = (T)(img)(_n8##x,_n3##y,z,c), I[246] = (T)(img)(_n9##x,_n3##y,z,c), \ + I[247] = (T)(img)(_p9##x,_n4##y,z,c), I[248] = (T)(img)(_p8##x,_n4##y,z,c), I[249] = (T)(img)(_p7##x,_n4##y,z,c), I[250] = (T)(img)(_p6##x,_n4##y,z,c), I[251] = (T)(img)(_p5##x,_n4##y,z,c), I[252] = (T)(img)(_p4##x,_n4##y,z,c), I[253] = (T)(img)(_p3##x,_n4##y,z,c), I[254] = (T)(img)(_p2##x,_n4##y,z,c), I[255] = (T)(img)(_p1##x,_n4##y,z,c), I[256] = (T)(img)(x,_n4##y,z,c), I[257] = (T)(img)(_n1##x,_n4##y,z,c), I[258] = (T)(img)(_n2##x,_n4##y,z,c), I[259] = (T)(img)(_n3##x,_n4##y,z,c), I[260] = (T)(img)(_n4##x,_n4##y,z,c), I[261] = (T)(img)(_n5##x,_n4##y,z,c), I[262] = (T)(img)(_n6##x,_n4##y,z,c), I[263] = (T)(img)(_n7##x,_n4##y,z,c), I[264] = (T)(img)(_n8##x,_n4##y,z,c), I[265] = (T)(img)(_n9##x,_n4##y,z,c), \ + I[266] = (T)(img)(_p9##x,_n5##y,z,c), I[267] = (T)(img)(_p8##x,_n5##y,z,c), I[268] = (T)(img)(_p7##x,_n5##y,z,c), I[269] = (T)(img)(_p6##x,_n5##y,z,c), I[270] = (T)(img)(_p5##x,_n5##y,z,c), I[271] = (T)(img)(_p4##x,_n5##y,z,c), I[272] = (T)(img)(_p3##x,_n5##y,z,c), I[273] = (T)(img)(_p2##x,_n5##y,z,c), I[274] = (T)(img)(_p1##x,_n5##y,z,c), I[275] = (T)(img)(x,_n5##y,z,c), I[276] = (T)(img)(_n1##x,_n5##y,z,c), I[277] = (T)(img)(_n2##x,_n5##y,z,c), I[278] = (T)(img)(_n3##x,_n5##y,z,c), I[279] = (T)(img)(_n4##x,_n5##y,z,c), I[280] = (T)(img)(_n5##x,_n5##y,z,c), I[281] = (T)(img)(_n6##x,_n5##y,z,c), I[282] = (T)(img)(_n7##x,_n5##y,z,c), I[283] = (T)(img)(_n8##x,_n5##y,z,c), I[284] = (T)(img)(_n9##x,_n5##y,z,c), \ + I[285] = (T)(img)(_p9##x,_n6##y,z,c), I[286] = (T)(img)(_p8##x,_n6##y,z,c), I[287] = (T)(img)(_p7##x,_n6##y,z,c), I[288] = (T)(img)(_p6##x,_n6##y,z,c), I[289] = (T)(img)(_p5##x,_n6##y,z,c), I[290] = (T)(img)(_p4##x,_n6##y,z,c), I[291] = (T)(img)(_p3##x,_n6##y,z,c), I[292] = (T)(img)(_p2##x,_n6##y,z,c), I[293] = (T)(img)(_p1##x,_n6##y,z,c), I[294] = (T)(img)(x,_n6##y,z,c), I[295] = (T)(img)(_n1##x,_n6##y,z,c), I[296] = (T)(img)(_n2##x,_n6##y,z,c), I[297] = (T)(img)(_n3##x,_n6##y,z,c), I[298] = (T)(img)(_n4##x,_n6##y,z,c), I[299] = (T)(img)(_n5##x,_n6##y,z,c), I[300] = (T)(img)(_n6##x,_n6##y,z,c), I[301] = (T)(img)(_n7##x,_n6##y,z,c), I[302] = (T)(img)(_n8##x,_n6##y,z,c), I[303] = (T)(img)(_n9##x,_n6##y,z,c), \ + I[304] = (T)(img)(_p9##x,_n7##y,z,c), I[305] = (T)(img)(_p8##x,_n7##y,z,c), I[306] = (T)(img)(_p7##x,_n7##y,z,c), I[307] = (T)(img)(_p6##x,_n7##y,z,c), I[308] = (T)(img)(_p5##x,_n7##y,z,c), I[309] = (T)(img)(_p4##x,_n7##y,z,c), I[310] = (T)(img)(_p3##x,_n7##y,z,c), I[311] = (T)(img)(_p2##x,_n7##y,z,c), I[312] = (T)(img)(_p1##x,_n7##y,z,c), I[313] = (T)(img)(x,_n7##y,z,c), I[314] = (T)(img)(_n1##x,_n7##y,z,c), I[315] = (T)(img)(_n2##x,_n7##y,z,c), I[316] = (T)(img)(_n3##x,_n7##y,z,c), I[317] = (T)(img)(_n4##x,_n7##y,z,c), I[318] = (T)(img)(_n5##x,_n7##y,z,c), I[319] = (T)(img)(_n6##x,_n7##y,z,c), I[320] = (T)(img)(_n7##x,_n7##y,z,c), I[321] = (T)(img)(_n8##x,_n7##y,z,c), I[322] = (T)(img)(_n9##x,_n7##y,z,c), \ + I[323] = (T)(img)(_p9##x,_n8##y,z,c), I[324] = (T)(img)(_p8##x,_n8##y,z,c), I[325] = (T)(img)(_p7##x,_n8##y,z,c), I[326] = (T)(img)(_p6##x,_n8##y,z,c), I[327] = (T)(img)(_p5##x,_n8##y,z,c), I[328] = (T)(img)(_p4##x,_n8##y,z,c), I[329] = (T)(img)(_p3##x,_n8##y,z,c), I[330] = (T)(img)(_p2##x,_n8##y,z,c), I[331] = (T)(img)(_p1##x,_n8##y,z,c), I[332] = (T)(img)(x,_n8##y,z,c), I[333] = (T)(img)(_n1##x,_n8##y,z,c), I[334] = (T)(img)(_n2##x,_n8##y,z,c), I[335] = (T)(img)(_n3##x,_n8##y,z,c), I[336] = (T)(img)(_n4##x,_n8##y,z,c), I[337] = (T)(img)(_n5##x,_n8##y,z,c), I[338] = (T)(img)(_n6##x,_n8##y,z,c), I[339] = (T)(img)(_n7##x,_n8##y,z,c), I[340] = (T)(img)(_n8##x,_n8##y,z,c), I[341] = (T)(img)(_n9##x,_n8##y,z,c), \ + I[342] = (T)(img)(_p9##x,_n9##y,z,c), I[343] = (T)(img)(_p8##x,_n9##y,z,c), I[344] = (T)(img)(_p7##x,_n9##y,z,c), I[345] = (T)(img)(_p6##x,_n9##y,z,c), I[346] = (T)(img)(_p5##x,_n9##y,z,c), I[347] = (T)(img)(_p4##x,_n9##y,z,c), I[348] = (T)(img)(_p3##x,_n9##y,z,c), I[349] = (T)(img)(_p2##x,_n9##y,z,c), I[350] = (T)(img)(_p1##x,_n9##y,z,c), I[351] = (T)(img)(x,_n9##y,z,c), I[352] = (T)(img)(_n1##x,_n9##y,z,c), I[353] = (T)(img)(_n2##x,_n9##y,z,c), I[354] = (T)(img)(_n3##x,_n9##y,z,c), I[355] = (T)(img)(_n4##x,_n9##y,z,c), I[356] = (T)(img)(_n5##x,_n9##y,z,c), I[357] = (T)(img)(_n6##x,_n9##y,z,c), I[358] = (T)(img)(_n7##x,_n9##y,z,c), I[359] = (T)(img)(_n8##x,_n9##y,z,c), I[360] = (T)(img)(_n9##x,_n9##y,z,c); + +// Define 20x20 loop macros +//------------------------- +#define cimg_for20(bound,i) for (int i = 0, \ + _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10; \ + _n10##i<(int)(bound) || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i) + +#define cimg_for20X(img,x) cimg_for20((img)._width,x) +#define cimg_for20Y(img,y) cimg_for20((img)._height,y) +#define cimg_for20Z(img,z) cimg_for20((img)._depth,z) +#define cimg_for20C(img,c) cimg_for20((img)._spectrum,c) +#define cimg_for20XY(img,x,y) cimg_for20Y(img,y) cimg_for20X(img,x) +#define cimg_for20XZ(img,x,z) cimg_for20Z(img,z) cimg_for20X(img,x) +#define cimg_for20XC(img,x,c) cimg_for20C(img,c) cimg_for20X(img,x) +#define cimg_for20YZ(img,y,z) cimg_for20Z(img,z) cimg_for20Y(img,y) +#define cimg_for20YC(img,y,c) cimg_for20C(img,c) cimg_for20Y(img,y) +#define cimg_for20ZC(img,z,c) cimg_for20C(img,c) cimg_for20Z(img,z) +#define cimg_for20XYZ(img,x,y,z) cimg_for20Z(img,z) cimg_for20XY(img,x,y) +#define cimg_for20XZC(img,x,z,c) cimg_for20C(img,c) cimg_for20XZ(img,x,z) +#define cimg_for20YZC(img,y,z,c) cimg_for20C(img,c) cimg_for20YZ(img,y,z) +#define cimg_for20XYZC(img,x,y,z,c) cimg_for20C(img,c) cimg_for20XYZ(img,x,y,z) + +#define cimg_for_in20(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10; \ + i<=(int)(i1) && (_n10##i<(int)(bound) || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i) + +#define cimg_for_in20X(img,x0,x1,x) cimg_for_in20((img)._width,x0,x1,x) +#define cimg_for_in20Y(img,y0,y1,y) cimg_for_in20((img)._height,y0,y1,y) +#define cimg_for_in20Z(img,z0,z1,z) cimg_for_in20((img)._depth,z0,z1,z) +#define cimg_for_in20C(img,c0,c1,c) cimg_for_in20((img)._spectrum,c0,c1,c) +#define cimg_for_in20XY(img,x0,y0,x1,y1,x,y) cimg_for_in20Y(img,y0,y1,y) cimg_for_in20X(img,x0,x1,x) +#define cimg_for_in20XZ(img,x0,z0,x1,z1,x,z) cimg_for_in20Z(img,z0,z1,z) cimg_for_in20X(img,x0,x1,x) +#define cimg_for_in20XC(img,x0,c0,x1,c1,x,c) cimg_for_in20C(img,c0,c1,c) cimg_for_in20X(img,x0,x1,x) +#define cimg_for_in20YZ(img,y0,z0,y1,z1,y,z) cimg_for_in20Z(img,z0,z1,z) cimg_for_in20Y(img,y0,y1,y) +#define cimg_for_in20YC(img,y0,c0,y1,c1,y,c) cimg_for_in20C(img,c0,c1,c) cimg_for_in20Y(img,y0,y1,y) +#define cimg_for_in20ZC(img,z0,c0,z1,c1,z,c) cimg_for_in20C(img,c0,c1,c) cimg_for_in20Z(img,z0,z1,z) +#define cimg_for_in20XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in20Z(img,z0,z1,z) cimg_for_in20XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in20XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in20C(img,c0,c1,c) cimg_for_in20XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in20YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in20C(img,c0,c1,c) cimg_for_in20YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in20XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in20C(img,c0,c1,c) cimg_for_in20XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for20x20(img,x,y,z,c,I,T) \ + cimg_for20((img)._height,y) for (int x = 0, \ + _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = (T)(img)(0,_p9##y,z,c)), \ + (I[20] = I[21] = I[22] = I[23] = I[24] = I[25] = I[26] = I[27] = I[28] = I[29] = (T)(img)(0,_p8##y,z,c)), \ + (I[40] = I[41] = I[42] = I[43] = I[44] = I[45] = I[46] = I[47] = I[48] = I[49] = (T)(img)(0,_p7##y,z,c)), \ + (I[60] = I[61] = I[62] = I[63] = I[64] = I[65] = I[66] = I[67] = I[68] = I[69] = (T)(img)(0,_p6##y,z,c)), \ + (I[80] = I[81] = I[82] = I[83] = I[84] = I[85] = I[86] = I[87] = I[88] = I[89] = (T)(img)(0,_p5##y,z,c)), \ + (I[100] = I[101] = I[102] = I[103] = I[104] = I[105] = I[106] = I[107] = I[108] = I[109] = (T)(img)(0,_p4##y,z,c)), \ + (I[120] = I[121] = I[122] = I[123] = I[124] = I[125] = I[126] = I[127] = I[128] = I[129] = (T)(img)(0,_p3##y,z,c)), \ + (I[140] = I[141] = I[142] = I[143] = I[144] = I[145] = I[146] = I[147] = I[148] = I[149] = (T)(img)(0,_p2##y,z,c)), \ + (I[160] = I[161] = I[162] = I[163] = I[164] = I[165] = I[166] = I[167] = I[168] = I[169] = (T)(img)(0,_p1##y,z,c)), \ + (I[180] = I[181] = I[182] = I[183] = I[184] = I[185] = I[186] = I[187] = I[188] = I[189] = (T)(img)(0,y,z,c)), \ + (I[200] = I[201] = I[202] = I[203] = I[204] = I[205] = I[206] = I[207] = I[208] = I[209] = (T)(img)(0,_n1##y,z,c)), \ + (I[220] = I[221] = I[222] = I[223] = I[224] = I[225] = I[226] = I[227] = I[228] = I[229] = (T)(img)(0,_n2##y,z,c)), \ + (I[240] = I[241] = I[242] = I[243] = I[244] = I[245] = I[246] = I[247] = I[248] = I[249] = (T)(img)(0,_n3##y,z,c)), \ + (I[260] = I[261] = I[262] = I[263] = I[264] = I[265] = I[266] = I[267] = I[268] = I[269] = (T)(img)(0,_n4##y,z,c)), \ + (I[280] = I[281] = I[282] = I[283] = I[284] = I[285] = I[286] = I[287] = I[288] = I[289] = (T)(img)(0,_n5##y,z,c)), \ + (I[300] = I[301] = I[302] = I[303] = I[304] = I[305] = I[306] = I[307] = I[308] = I[309] = (T)(img)(0,_n6##y,z,c)), \ + (I[320] = I[321] = I[322] = I[323] = I[324] = I[325] = I[326] = I[327] = I[328] = I[329] = (T)(img)(0,_n7##y,z,c)), \ + (I[340] = I[341] = I[342] = I[343] = I[344] = I[345] = I[346] = I[347] = I[348] = I[349] = (T)(img)(0,_n8##y,z,c)), \ + (I[360] = I[361] = I[362] = I[363] = I[364] = I[365] = I[366] = I[367] = I[368] = I[369] = (T)(img)(0,_n9##y,z,c)), \ + (I[380] = I[381] = I[382] = I[383] = I[384] = I[385] = I[386] = I[387] = I[388] = I[389] = (T)(img)(0,_n10##y,z,c)), \ + (I[10] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[30] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[50] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[70] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[90] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[110] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[130] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[150] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[170] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[190] = (T)(img)(_n1##x,y,z,c)), \ + (I[210] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[230] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[250] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[270] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[290] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[310] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[330] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[350] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[370] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[390] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[11] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[31] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[51] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[71] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[91] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[111] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[131] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[151] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[171] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[191] = (T)(img)(_n2##x,y,z,c)), \ + (I[211] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[231] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[251] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[271] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[291] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[311] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[331] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[351] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[371] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[391] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[12] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[32] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[52] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[72] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[92] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[112] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[132] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[152] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[172] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[192] = (T)(img)(_n3##x,y,z,c)), \ + (I[212] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[232] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[252] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[272] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[292] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[312] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[332] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[352] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[372] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[392] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[13] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[33] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[53] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[73] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[93] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[113] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[133] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[153] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[173] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[193] = (T)(img)(_n4##x,y,z,c)), \ + (I[213] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[233] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[253] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[273] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[293] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[313] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[333] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[353] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[373] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[393] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[14] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[34] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[54] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[74] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[94] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[114] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[134] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[154] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[174] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[194] = (T)(img)(_n5##x,y,z,c)), \ + (I[214] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[234] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[254] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[274] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[294] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[314] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[334] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[354] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[374] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[394] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[15] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[35] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[55] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[75] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[95] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[115] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[135] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[155] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[175] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[195] = (T)(img)(_n6##x,y,z,c)), \ + (I[215] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[235] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[255] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[275] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[295] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[315] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[335] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[355] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[375] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[395] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[16] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[36] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[56] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[76] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[96] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[116] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[136] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[156] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[176] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[196] = (T)(img)(_n7##x,y,z,c)), \ + (I[216] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[236] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[256] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[276] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[296] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[316] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[336] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[356] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[376] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[396] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[17] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[37] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[57] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[77] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[97] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[117] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[137] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[157] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[177] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[197] = (T)(img)(_n8##x,y,z,c)), \ + (I[217] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[237] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[257] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[277] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[297] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[317] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[337] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[357] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[377] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[397] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[18] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[38] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[58] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[78] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[98] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[118] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[138] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[158] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[178] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[198] = (T)(img)(_n9##x,y,z,c)), \ + (I[218] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[238] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[258] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[278] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[298] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[318] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[338] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[358] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[378] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[398] = (T)(img)(_n9##x,_n10##y,z,c)), \ + 10>=((img)._width)?(img).width() - 1:10); \ + (_n10##x<(img).width() && ( \ + (I[19] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[39] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[59] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[79] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[99] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[119] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[139] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[159] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[179] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[199] = (T)(img)(_n10##x,y,z,c)), \ + (I[219] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[239] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[259] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[279] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[299] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[319] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[339] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[359] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[379] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[399] = (T)(img)(_n10##x,_n10##y,z,c)),1)) || \ + _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], \ + I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], \ + I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], \ + I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], \ + I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], \ + I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], \ + I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], \ + I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], \ + I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], \ + I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], \ + I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], \ + I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], \ + I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], \ + I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], \ + I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], \ + _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x) + +#define cimg_for_in20x20(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in20((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = (int)( \ + (I[0] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[20] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[40] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[60] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[80] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[100] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[120] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[140] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[160] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[180] = (T)(img)(_p9##x,y,z,c)), \ + (I[200] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[220] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[240] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[260] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[280] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[300] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[320] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[340] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[360] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[380] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[1] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[21] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[41] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[61] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[81] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[101] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[121] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[141] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[161] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[181] = (T)(img)(_p8##x,y,z,c)), \ + (I[201] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[221] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[241] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[261] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[281] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[301] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[321] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[341] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[361] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[381] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[2] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[22] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[42] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[62] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[82] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[102] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[122] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[142] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[162] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[182] = (T)(img)(_p7##x,y,z,c)), \ + (I[202] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[222] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[242] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[262] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[282] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[302] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[322] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[342] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[362] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[382] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[3] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[23] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[43] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[63] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[83] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[103] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[123] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[143] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[163] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[183] = (T)(img)(_p6##x,y,z,c)), \ + (I[203] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[223] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[243] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[263] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[283] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[303] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[323] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[343] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[363] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[383] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[4] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[24] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[44] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[64] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[84] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[104] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[124] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[144] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[164] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[184] = (T)(img)(_p5##x,y,z,c)), \ + (I[204] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[224] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[244] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[264] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[284] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[304] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[324] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[344] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[364] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[384] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[5] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[25] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[45] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[65] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[85] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[105] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[125] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[145] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[165] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[185] = (T)(img)(_p4##x,y,z,c)), \ + (I[205] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[225] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[245] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[265] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[285] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[305] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[325] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[345] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[365] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[385] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[6] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[26] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[46] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[66] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[86] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[106] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[126] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[146] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[166] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[186] = (T)(img)(_p3##x,y,z,c)), \ + (I[206] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[226] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[246] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[266] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[286] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[306] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[326] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[346] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[366] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[386] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[7] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[27] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[47] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[67] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[87] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[107] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[127] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[147] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[167] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[187] = (T)(img)(_p2##x,y,z,c)), \ + (I[207] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[227] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[247] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[267] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[287] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[307] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[327] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[347] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[367] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[387] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[8] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[28] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[48] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[68] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[88] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[108] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[128] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[148] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[168] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[188] = (T)(img)(_p1##x,y,z,c)), \ + (I[208] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[228] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[248] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[268] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[288] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[308] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[328] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[348] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[368] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[388] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[9] = (T)(img)(x,_p9##y,z,c)), \ + (I[29] = (T)(img)(x,_p8##y,z,c)), \ + (I[49] = (T)(img)(x,_p7##y,z,c)), \ + (I[69] = (T)(img)(x,_p6##y,z,c)), \ + (I[89] = (T)(img)(x,_p5##y,z,c)), \ + (I[109] = (T)(img)(x,_p4##y,z,c)), \ + (I[129] = (T)(img)(x,_p3##y,z,c)), \ + (I[149] = (T)(img)(x,_p2##y,z,c)), \ + (I[169] = (T)(img)(x,_p1##y,z,c)), \ + (I[189] = (T)(img)(x,y,z,c)), \ + (I[209] = (T)(img)(x,_n1##y,z,c)), \ + (I[229] = (T)(img)(x,_n2##y,z,c)), \ + (I[249] = (T)(img)(x,_n3##y,z,c)), \ + (I[269] = (T)(img)(x,_n4##y,z,c)), \ + (I[289] = (T)(img)(x,_n5##y,z,c)), \ + (I[309] = (T)(img)(x,_n6##y,z,c)), \ + (I[329] = (T)(img)(x,_n7##y,z,c)), \ + (I[349] = (T)(img)(x,_n8##y,z,c)), \ + (I[369] = (T)(img)(x,_n9##y,z,c)), \ + (I[389] = (T)(img)(x,_n10##y,z,c)), \ + (I[10] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[30] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[50] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[70] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[90] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[110] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[130] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[150] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[170] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[190] = (T)(img)(_n1##x,y,z,c)), \ + (I[210] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[230] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[250] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[270] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[290] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[310] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[330] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[350] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[370] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[390] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[11] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[31] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[51] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[71] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[91] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[111] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[131] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[151] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[171] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[191] = (T)(img)(_n2##x,y,z,c)), \ + (I[211] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[231] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[251] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[271] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[291] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[311] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[331] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[351] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[371] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[391] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[12] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[32] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[52] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[72] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[92] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[112] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[132] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[152] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[172] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[192] = (T)(img)(_n3##x,y,z,c)), \ + (I[212] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[232] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[252] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[272] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[292] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[312] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[332] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[352] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[372] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[392] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[13] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[33] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[53] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[73] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[93] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[113] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[133] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[153] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[173] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[193] = (T)(img)(_n4##x,y,z,c)), \ + (I[213] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[233] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[253] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[273] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[293] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[313] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[333] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[353] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[373] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[393] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[14] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[34] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[54] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[74] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[94] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[114] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[134] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[154] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[174] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[194] = (T)(img)(_n5##x,y,z,c)), \ + (I[214] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[234] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[254] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[274] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[294] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[314] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[334] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[354] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[374] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[394] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[15] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[35] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[55] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[75] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[95] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[115] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[135] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[155] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[175] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[195] = (T)(img)(_n6##x,y,z,c)), \ + (I[215] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[235] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[255] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[275] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[295] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[315] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[335] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[355] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[375] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[395] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[16] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[36] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[56] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[76] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[96] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[116] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[136] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[156] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[176] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[196] = (T)(img)(_n7##x,y,z,c)), \ + (I[216] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[236] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[256] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[276] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[296] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[316] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[336] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[356] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[376] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[396] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[17] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[37] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[57] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[77] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[97] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[117] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[137] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[157] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[177] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[197] = (T)(img)(_n8##x,y,z,c)), \ + (I[217] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[237] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[257] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[277] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[297] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[317] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[337] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[357] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[377] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[397] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[18] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[38] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[58] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[78] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[98] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[118] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[138] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[158] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[178] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[198] = (T)(img)(_n9##x,y,z,c)), \ + (I[218] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[238] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[258] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[278] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[298] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[318] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[338] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[358] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[378] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[398] = (T)(img)(_n9##x,_n10##y,z,c)), \ + x + 10>=(img).width()?(img).width() - 1:x + 10); \ + x<=(int)(x1) && ((_n10##x<(img).width() && ( \ + (I[19] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[39] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[59] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[79] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[99] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[119] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[139] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[159] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[179] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[199] = (T)(img)(_n10##x,y,z,c)), \ + (I[219] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[239] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[259] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[279] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[299] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[319] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[339] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[359] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[379] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[399] = (T)(img)(_n10##x,_n10##y,z,c)),1)) || \ + _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], \ + I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], \ + I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], \ + I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], \ + I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], \ + I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], \ + I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], \ + I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], \ + I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], \ + I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], \ + I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], \ + I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], \ + I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], \ + I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], \ + I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], \ + _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x) + +#define cimg_get20x20(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p9##x,_p9##y,z,c), I[1] = (T)(img)(_p8##x,_p9##y,z,c), I[2] = (T)(img)(_p7##x,_p9##y,z,c), I[3] = (T)(img)(_p6##x,_p9##y,z,c), I[4] = (T)(img)(_p5##x,_p9##y,z,c), I[5] = (T)(img)(_p4##x,_p9##y,z,c), I[6] = (T)(img)(_p3##x,_p9##y,z,c), I[7] = (T)(img)(_p2##x,_p9##y,z,c), I[8] = (T)(img)(_p1##x,_p9##y,z,c), I[9] = (T)(img)(x,_p9##y,z,c), I[10] = (T)(img)(_n1##x,_p9##y,z,c), I[11] = (T)(img)(_n2##x,_p9##y,z,c), I[12] = (T)(img)(_n3##x,_p9##y,z,c), I[13] = (T)(img)(_n4##x,_p9##y,z,c), I[14] = (T)(img)(_n5##x,_p9##y,z,c), I[15] = (T)(img)(_n6##x,_p9##y,z,c), I[16] = (T)(img)(_n7##x,_p9##y,z,c), I[17] = (T)(img)(_n8##x,_p9##y,z,c), I[18] = (T)(img)(_n9##x,_p9##y,z,c), I[19] = (T)(img)(_n10##x,_p9##y,z,c), \ + I[20] = (T)(img)(_p9##x,_p8##y,z,c), I[21] = (T)(img)(_p8##x,_p8##y,z,c), I[22] = (T)(img)(_p7##x,_p8##y,z,c), I[23] = (T)(img)(_p6##x,_p8##y,z,c), I[24] = (T)(img)(_p5##x,_p8##y,z,c), I[25] = (T)(img)(_p4##x,_p8##y,z,c), I[26] = (T)(img)(_p3##x,_p8##y,z,c), I[27] = (T)(img)(_p2##x,_p8##y,z,c), I[28] = (T)(img)(_p1##x,_p8##y,z,c), I[29] = (T)(img)(x,_p8##y,z,c), I[30] = (T)(img)(_n1##x,_p8##y,z,c), I[31] = (T)(img)(_n2##x,_p8##y,z,c), I[32] = (T)(img)(_n3##x,_p8##y,z,c), I[33] = (T)(img)(_n4##x,_p8##y,z,c), I[34] = (T)(img)(_n5##x,_p8##y,z,c), I[35] = (T)(img)(_n6##x,_p8##y,z,c), I[36] = (T)(img)(_n7##x,_p8##y,z,c), I[37] = (T)(img)(_n8##x,_p8##y,z,c), I[38] = (T)(img)(_n9##x,_p8##y,z,c), I[39] = (T)(img)(_n10##x,_p8##y,z,c), \ + I[40] = (T)(img)(_p9##x,_p7##y,z,c), I[41] = (T)(img)(_p8##x,_p7##y,z,c), I[42] = (T)(img)(_p7##x,_p7##y,z,c), I[43] = (T)(img)(_p6##x,_p7##y,z,c), I[44] = (T)(img)(_p5##x,_p7##y,z,c), I[45] = (T)(img)(_p4##x,_p7##y,z,c), I[46] = (T)(img)(_p3##x,_p7##y,z,c), I[47] = (T)(img)(_p2##x,_p7##y,z,c), I[48] = (T)(img)(_p1##x,_p7##y,z,c), I[49] = (T)(img)(x,_p7##y,z,c), I[50] = (T)(img)(_n1##x,_p7##y,z,c), I[51] = (T)(img)(_n2##x,_p7##y,z,c), I[52] = (T)(img)(_n3##x,_p7##y,z,c), I[53] = (T)(img)(_n4##x,_p7##y,z,c), I[54] = (T)(img)(_n5##x,_p7##y,z,c), I[55] = (T)(img)(_n6##x,_p7##y,z,c), I[56] = (T)(img)(_n7##x,_p7##y,z,c), I[57] = (T)(img)(_n8##x,_p7##y,z,c), I[58] = (T)(img)(_n9##x,_p7##y,z,c), I[59] = (T)(img)(_n10##x,_p7##y,z,c), \ + I[60] = (T)(img)(_p9##x,_p6##y,z,c), I[61] = (T)(img)(_p8##x,_p6##y,z,c), I[62] = (T)(img)(_p7##x,_p6##y,z,c), I[63] = (T)(img)(_p6##x,_p6##y,z,c), I[64] = (T)(img)(_p5##x,_p6##y,z,c), I[65] = (T)(img)(_p4##x,_p6##y,z,c), I[66] = (T)(img)(_p3##x,_p6##y,z,c), I[67] = (T)(img)(_p2##x,_p6##y,z,c), I[68] = (T)(img)(_p1##x,_p6##y,z,c), I[69] = (T)(img)(x,_p6##y,z,c), I[70] = (T)(img)(_n1##x,_p6##y,z,c), I[71] = (T)(img)(_n2##x,_p6##y,z,c), I[72] = (T)(img)(_n3##x,_p6##y,z,c), I[73] = (T)(img)(_n4##x,_p6##y,z,c), I[74] = (T)(img)(_n5##x,_p6##y,z,c), I[75] = (T)(img)(_n6##x,_p6##y,z,c), I[76] = (T)(img)(_n7##x,_p6##y,z,c), I[77] = (T)(img)(_n8##x,_p6##y,z,c), I[78] = (T)(img)(_n9##x,_p6##y,z,c), I[79] = (T)(img)(_n10##x,_p6##y,z,c), \ + I[80] = (T)(img)(_p9##x,_p5##y,z,c), I[81] = (T)(img)(_p8##x,_p5##y,z,c), I[82] = (T)(img)(_p7##x,_p5##y,z,c), I[83] = (T)(img)(_p6##x,_p5##y,z,c), I[84] = (T)(img)(_p5##x,_p5##y,z,c), I[85] = (T)(img)(_p4##x,_p5##y,z,c), I[86] = (T)(img)(_p3##x,_p5##y,z,c), I[87] = (T)(img)(_p2##x,_p5##y,z,c), I[88] = (T)(img)(_p1##x,_p5##y,z,c), I[89] = (T)(img)(x,_p5##y,z,c), I[90] = (T)(img)(_n1##x,_p5##y,z,c), I[91] = (T)(img)(_n2##x,_p5##y,z,c), I[92] = (T)(img)(_n3##x,_p5##y,z,c), I[93] = (T)(img)(_n4##x,_p5##y,z,c), I[94] = (T)(img)(_n5##x,_p5##y,z,c), I[95] = (T)(img)(_n6##x,_p5##y,z,c), I[96] = (T)(img)(_n7##x,_p5##y,z,c), I[97] = (T)(img)(_n8##x,_p5##y,z,c), I[98] = (T)(img)(_n9##x,_p5##y,z,c), I[99] = (T)(img)(_n10##x,_p5##y,z,c), \ + I[100] = (T)(img)(_p9##x,_p4##y,z,c), I[101] = (T)(img)(_p8##x,_p4##y,z,c), I[102] = (T)(img)(_p7##x,_p4##y,z,c), I[103] = (T)(img)(_p6##x,_p4##y,z,c), I[104] = (T)(img)(_p5##x,_p4##y,z,c), I[105] = (T)(img)(_p4##x,_p4##y,z,c), I[106] = (T)(img)(_p3##x,_p4##y,z,c), I[107] = (T)(img)(_p2##x,_p4##y,z,c), I[108] = (T)(img)(_p1##x,_p4##y,z,c), I[109] = (T)(img)(x,_p4##y,z,c), I[110] = (T)(img)(_n1##x,_p4##y,z,c), I[111] = (T)(img)(_n2##x,_p4##y,z,c), I[112] = (T)(img)(_n3##x,_p4##y,z,c), I[113] = (T)(img)(_n4##x,_p4##y,z,c), I[114] = (T)(img)(_n5##x,_p4##y,z,c), I[115] = (T)(img)(_n6##x,_p4##y,z,c), I[116] = (T)(img)(_n7##x,_p4##y,z,c), I[117] = (T)(img)(_n8##x,_p4##y,z,c), I[118] = (T)(img)(_n9##x,_p4##y,z,c), I[119] = (T)(img)(_n10##x,_p4##y,z,c), \ + I[120] = (T)(img)(_p9##x,_p3##y,z,c), I[121] = (T)(img)(_p8##x,_p3##y,z,c), I[122] = (T)(img)(_p7##x,_p3##y,z,c), I[123] = (T)(img)(_p6##x,_p3##y,z,c), I[124] = (T)(img)(_p5##x,_p3##y,z,c), I[125] = (T)(img)(_p4##x,_p3##y,z,c), I[126] = (T)(img)(_p3##x,_p3##y,z,c), I[127] = (T)(img)(_p2##x,_p3##y,z,c), I[128] = (T)(img)(_p1##x,_p3##y,z,c), I[129] = (T)(img)(x,_p3##y,z,c), I[130] = (T)(img)(_n1##x,_p3##y,z,c), I[131] = (T)(img)(_n2##x,_p3##y,z,c), I[132] = (T)(img)(_n3##x,_p3##y,z,c), I[133] = (T)(img)(_n4##x,_p3##y,z,c), I[134] = (T)(img)(_n5##x,_p3##y,z,c), I[135] = (T)(img)(_n6##x,_p3##y,z,c), I[136] = (T)(img)(_n7##x,_p3##y,z,c), I[137] = (T)(img)(_n8##x,_p3##y,z,c), I[138] = (T)(img)(_n9##x,_p3##y,z,c), I[139] = (T)(img)(_n10##x,_p3##y,z,c), \ + I[140] = (T)(img)(_p9##x,_p2##y,z,c), I[141] = (T)(img)(_p8##x,_p2##y,z,c), I[142] = (T)(img)(_p7##x,_p2##y,z,c), I[143] = (T)(img)(_p6##x,_p2##y,z,c), I[144] = (T)(img)(_p5##x,_p2##y,z,c), I[145] = (T)(img)(_p4##x,_p2##y,z,c), I[146] = (T)(img)(_p3##x,_p2##y,z,c), I[147] = (T)(img)(_p2##x,_p2##y,z,c), I[148] = (T)(img)(_p1##x,_p2##y,z,c), I[149] = (T)(img)(x,_p2##y,z,c), I[150] = (T)(img)(_n1##x,_p2##y,z,c), I[151] = (T)(img)(_n2##x,_p2##y,z,c), I[152] = (T)(img)(_n3##x,_p2##y,z,c), I[153] = (T)(img)(_n4##x,_p2##y,z,c), I[154] = (T)(img)(_n5##x,_p2##y,z,c), I[155] = (T)(img)(_n6##x,_p2##y,z,c), I[156] = (T)(img)(_n7##x,_p2##y,z,c), I[157] = (T)(img)(_n8##x,_p2##y,z,c), I[158] = (T)(img)(_n9##x,_p2##y,z,c), I[159] = (T)(img)(_n10##x,_p2##y,z,c), \ + I[160] = (T)(img)(_p9##x,_p1##y,z,c), I[161] = (T)(img)(_p8##x,_p1##y,z,c), I[162] = (T)(img)(_p7##x,_p1##y,z,c), I[163] = (T)(img)(_p6##x,_p1##y,z,c), I[164] = (T)(img)(_p5##x,_p1##y,z,c), I[165] = (T)(img)(_p4##x,_p1##y,z,c), I[166] = (T)(img)(_p3##x,_p1##y,z,c), I[167] = (T)(img)(_p2##x,_p1##y,z,c), I[168] = (T)(img)(_p1##x,_p1##y,z,c), I[169] = (T)(img)(x,_p1##y,z,c), I[170] = (T)(img)(_n1##x,_p1##y,z,c), I[171] = (T)(img)(_n2##x,_p1##y,z,c), I[172] = (T)(img)(_n3##x,_p1##y,z,c), I[173] = (T)(img)(_n4##x,_p1##y,z,c), I[174] = (T)(img)(_n5##x,_p1##y,z,c), I[175] = (T)(img)(_n6##x,_p1##y,z,c), I[176] = (T)(img)(_n7##x,_p1##y,z,c), I[177] = (T)(img)(_n8##x,_p1##y,z,c), I[178] = (T)(img)(_n9##x,_p1##y,z,c), I[179] = (T)(img)(_n10##x,_p1##y,z,c), \ + I[180] = (T)(img)(_p9##x,y,z,c), I[181] = (T)(img)(_p8##x,y,z,c), I[182] = (T)(img)(_p7##x,y,z,c), I[183] = (T)(img)(_p6##x,y,z,c), I[184] = (T)(img)(_p5##x,y,z,c), I[185] = (T)(img)(_p4##x,y,z,c), I[186] = (T)(img)(_p3##x,y,z,c), I[187] = (T)(img)(_p2##x,y,z,c), I[188] = (T)(img)(_p1##x,y,z,c), I[189] = (T)(img)(x,y,z,c), I[190] = (T)(img)(_n1##x,y,z,c), I[191] = (T)(img)(_n2##x,y,z,c), I[192] = (T)(img)(_n3##x,y,z,c), I[193] = (T)(img)(_n4##x,y,z,c), I[194] = (T)(img)(_n5##x,y,z,c), I[195] = (T)(img)(_n6##x,y,z,c), I[196] = (T)(img)(_n7##x,y,z,c), I[197] = (T)(img)(_n8##x,y,z,c), I[198] = (T)(img)(_n9##x,y,z,c), I[199] = (T)(img)(_n10##x,y,z,c), \ + I[200] = (T)(img)(_p9##x,_n1##y,z,c), I[201] = (T)(img)(_p8##x,_n1##y,z,c), I[202] = (T)(img)(_p7##x,_n1##y,z,c), I[203] = (T)(img)(_p6##x,_n1##y,z,c), I[204] = (T)(img)(_p5##x,_n1##y,z,c), I[205] = (T)(img)(_p4##x,_n1##y,z,c), I[206] = (T)(img)(_p3##x,_n1##y,z,c), I[207] = (T)(img)(_p2##x,_n1##y,z,c), I[208] = (T)(img)(_p1##x,_n1##y,z,c), I[209] = (T)(img)(x,_n1##y,z,c), I[210] = (T)(img)(_n1##x,_n1##y,z,c), I[211] = (T)(img)(_n2##x,_n1##y,z,c), I[212] = (T)(img)(_n3##x,_n1##y,z,c), I[213] = (T)(img)(_n4##x,_n1##y,z,c), I[214] = (T)(img)(_n5##x,_n1##y,z,c), I[215] = (T)(img)(_n6##x,_n1##y,z,c), I[216] = (T)(img)(_n7##x,_n1##y,z,c), I[217] = (T)(img)(_n8##x,_n1##y,z,c), I[218] = (T)(img)(_n9##x,_n1##y,z,c), I[219] = (T)(img)(_n10##x,_n1##y,z,c), \ + I[220] = (T)(img)(_p9##x,_n2##y,z,c), I[221] = (T)(img)(_p8##x,_n2##y,z,c), I[222] = (T)(img)(_p7##x,_n2##y,z,c), I[223] = (T)(img)(_p6##x,_n2##y,z,c), I[224] = (T)(img)(_p5##x,_n2##y,z,c), I[225] = (T)(img)(_p4##x,_n2##y,z,c), I[226] = (T)(img)(_p3##x,_n2##y,z,c), I[227] = (T)(img)(_p2##x,_n2##y,z,c), I[228] = (T)(img)(_p1##x,_n2##y,z,c), I[229] = (T)(img)(x,_n2##y,z,c), I[230] = (T)(img)(_n1##x,_n2##y,z,c), I[231] = (T)(img)(_n2##x,_n2##y,z,c), I[232] = (T)(img)(_n3##x,_n2##y,z,c), I[233] = (T)(img)(_n4##x,_n2##y,z,c), I[234] = (T)(img)(_n5##x,_n2##y,z,c), I[235] = (T)(img)(_n6##x,_n2##y,z,c), I[236] = (T)(img)(_n7##x,_n2##y,z,c), I[237] = (T)(img)(_n8##x,_n2##y,z,c), I[238] = (T)(img)(_n9##x,_n2##y,z,c), I[239] = (T)(img)(_n10##x,_n2##y,z,c), \ + I[240] = (T)(img)(_p9##x,_n3##y,z,c), I[241] = (T)(img)(_p8##x,_n3##y,z,c), I[242] = (T)(img)(_p7##x,_n3##y,z,c), I[243] = (T)(img)(_p6##x,_n3##y,z,c), I[244] = (T)(img)(_p5##x,_n3##y,z,c), I[245] = (T)(img)(_p4##x,_n3##y,z,c), I[246] = (T)(img)(_p3##x,_n3##y,z,c), I[247] = (T)(img)(_p2##x,_n3##y,z,c), I[248] = (T)(img)(_p1##x,_n3##y,z,c), I[249] = (T)(img)(x,_n3##y,z,c), I[250] = (T)(img)(_n1##x,_n3##y,z,c), I[251] = (T)(img)(_n2##x,_n3##y,z,c), I[252] = (T)(img)(_n3##x,_n3##y,z,c), I[253] = (T)(img)(_n4##x,_n3##y,z,c), I[254] = (T)(img)(_n5##x,_n3##y,z,c), I[255] = (T)(img)(_n6##x,_n3##y,z,c), I[256] = (T)(img)(_n7##x,_n3##y,z,c), I[257] = (T)(img)(_n8##x,_n3##y,z,c), I[258] = (T)(img)(_n9##x,_n3##y,z,c), I[259] = (T)(img)(_n10##x,_n3##y,z,c), \ + I[260] = (T)(img)(_p9##x,_n4##y,z,c), I[261] = (T)(img)(_p8##x,_n4##y,z,c), I[262] = (T)(img)(_p7##x,_n4##y,z,c), I[263] = (T)(img)(_p6##x,_n4##y,z,c), I[264] = (T)(img)(_p5##x,_n4##y,z,c), I[265] = (T)(img)(_p4##x,_n4##y,z,c), I[266] = (T)(img)(_p3##x,_n4##y,z,c), I[267] = (T)(img)(_p2##x,_n4##y,z,c), I[268] = (T)(img)(_p1##x,_n4##y,z,c), I[269] = (T)(img)(x,_n4##y,z,c), I[270] = (T)(img)(_n1##x,_n4##y,z,c), I[271] = (T)(img)(_n2##x,_n4##y,z,c), I[272] = (T)(img)(_n3##x,_n4##y,z,c), I[273] = (T)(img)(_n4##x,_n4##y,z,c), I[274] = (T)(img)(_n5##x,_n4##y,z,c), I[275] = (T)(img)(_n6##x,_n4##y,z,c), I[276] = (T)(img)(_n7##x,_n4##y,z,c), I[277] = (T)(img)(_n8##x,_n4##y,z,c), I[278] = (T)(img)(_n9##x,_n4##y,z,c), I[279] = (T)(img)(_n10##x,_n4##y,z,c), \ + I[280] = (T)(img)(_p9##x,_n5##y,z,c), I[281] = (T)(img)(_p8##x,_n5##y,z,c), I[282] = (T)(img)(_p7##x,_n5##y,z,c), I[283] = (T)(img)(_p6##x,_n5##y,z,c), I[284] = (T)(img)(_p5##x,_n5##y,z,c), I[285] = (T)(img)(_p4##x,_n5##y,z,c), I[286] = (T)(img)(_p3##x,_n5##y,z,c), I[287] = (T)(img)(_p2##x,_n5##y,z,c), I[288] = (T)(img)(_p1##x,_n5##y,z,c), I[289] = (T)(img)(x,_n5##y,z,c), I[290] = (T)(img)(_n1##x,_n5##y,z,c), I[291] = (T)(img)(_n2##x,_n5##y,z,c), I[292] = (T)(img)(_n3##x,_n5##y,z,c), I[293] = (T)(img)(_n4##x,_n5##y,z,c), I[294] = (T)(img)(_n5##x,_n5##y,z,c), I[295] = (T)(img)(_n6##x,_n5##y,z,c), I[296] = (T)(img)(_n7##x,_n5##y,z,c), I[297] = (T)(img)(_n8##x,_n5##y,z,c), I[298] = (T)(img)(_n9##x,_n5##y,z,c), I[299] = (T)(img)(_n10##x,_n5##y,z,c), \ + I[300] = (T)(img)(_p9##x,_n6##y,z,c), I[301] = (T)(img)(_p8##x,_n6##y,z,c), I[302] = (T)(img)(_p7##x,_n6##y,z,c), I[303] = (T)(img)(_p6##x,_n6##y,z,c), I[304] = (T)(img)(_p5##x,_n6##y,z,c), I[305] = (T)(img)(_p4##x,_n6##y,z,c), I[306] = (T)(img)(_p3##x,_n6##y,z,c), I[307] = (T)(img)(_p2##x,_n6##y,z,c), I[308] = (T)(img)(_p1##x,_n6##y,z,c), I[309] = (T)(img)(x,_n6##y,z,c), I[310] = (T)(img)(_n1##x,_n6##y,z,c), I[311] = (T)(img)(_n2##x,_n6##y,z,c), I[312] = (T)(img)(_n3##x,_n6##y,z,c), I[313] = (T)(img)(_n4##x,_n6##y,z,c), I[314] = (T)(img)(_n5##x,_n6##y,z,c), I[315] = (T)(img)(_n6##x,_n6##y,z,c), I[316] = (T)(img)(_n7##x,_n6##y,z,c), I[317] = (T)(img)(_n8##x,_n6##y,z,c), I[318] = (T)(img)(_n9##x,_n6##y,z,c), I[319] = (T)(img)(_n10##x,_n6##y,z,c), \ + I[320] = (T)(img)(_p9##x,_n7##y,z,c), I[321] = (T)(img)(_p8##x,_n7##y,z,c), I[322] = (T)(img)(_p7##x,_n7##y,z,c), I[323] = (T)(img)(_p6##x,_n7##y,z,c), I[324] = (T)(img)(_p5##x,_n7##y,z,c), I[325] = (T)(img)(_p4##x,_n7##y,z,c), I[326] = (T)(img)(_p3##x,_n7##y,z,c), I[327] = (T)(img)(_p2##x,_n7##y,z,c), I[328] = (T)(img)(_p1##x,_n7##y,z,c), I[329] = (T)(img)(x,_n7##y,z,c), I[330] = (T)(img)(_n1##x,_n7##y,z,c), I[331] = (T)(img)(_n2##x,_n7##y,z,c), I[332] = (T)(img)(_n3##x,_n7##y,z,c), I[333] = (T)(img)(_n4##x,_n7##y,z,c), I[334] = (T)(img)(_n5##x,_n7##y,z,c), I[335] = (T)(img)(_n6##x,_n7##y,z,c), I[336] = (T)(img)(_n7##x,_n7##y,z,c), I[337] = (T)(img)(_n8##x,_n7##y,z,c), I[338] = (T)(img)(_n9##x,_n7##y,z,c), I[339] = (T)(img)(_n10##x,_n7##y,z,c), \ + I[340] = (T)(img)(_p9##x,_n8##y,z,c), I[341] = (T)(img)(_p8##x,_n8##y,z,c), I[342] = (T)(img)(_p7##x,_n8##y,z,c), I[343] = (T)(img)(_p6##x,_n8##y,z,c), I[344] = (T)(img)(_p5##x,_n8##y,z,c), I[345] = (T)(img)(_p4##x,_n8##y,z,c), I[346] = (T)(img)(_p3##x,_n8##y,z,c), I[347] = (T)(img)(_p2##x,_n8##y,z,c), I[348] = (T)(img)(_p1##x,_n8##y,z,c), I[349] = (T)(img)(x,_n8##y,z,c), I[350] = (T)(img)(_n1##x,_n8##y,z,c), I[351] = (T)(img)(_n2##x,_n8##y,z,c), I[352] = (T)(img)(_n3##x,_n8##y,z,c), I[353] = (T)(img)(_n4##x,_n8##y,z,c), I[354] = (T)(img)(_n5##x,_n8##y,z,c), I[355] = (T)(img)(_n6##x,_n8##y,z,c), I[356] = (T)(img)(_n7##x,_n8##y,z,c), I[357] = (T)(img)(_n8##x,_n8##y,z,c), I[358] = (T)(img)(_n9##x,_n8##y,z,c), I[359] = (T)(img)(_n10##x,_n8##y,z,c), \ + I[360] = (T)(img)(_p9##x,_n9##y,z,c), I[361] = (T)(img)(_p8##x,_n9##y,z,c), I[362] = (T)(img)(_p7##x,_n9##y,z,c), I[363] = (T)(img)(_p6##x,_n9##y,z,c), I[364] = (T)(img)(_p5##x,_n9##y,z,c), I[365] = (T)(img)(_p4##x,_n9##y,z,c), I[366] = (T)(img)(_p3##x,_n9##y,z,c), I[367] = (T)(img)(_p2##x,_n9##y,z,c), I[368] = (T)(img)(_p1##x,_n9##y,z,c), I[369] = (T)(img)(x,_n9##y,z,c), I[370] = (T)(img)(_n1##x,_n9##y,z,c), I[371] = (T)(img)(_n2##x,_n9##y,z,c), I[372] = (T)(img)(_n3##x,_n9##y,z,c), I[373] = (T)(img)(_n4##x,_n9##y,z,c), I[374] = (T)(img)(_n5##x,_n9##y,z,c), I[375] = (T)(img)(_n6##x,_n9##y,z,c), I[376] = (T)(img)(_n7##x,_n9##y,z,c), I[377] = (T)(img)(_n8##x,_n9##y,z,c), I[378] = (T)(img)(_n9##x,_n9##y,z,c), I[379] = (T)(img)(_n10##x,_n9##y,z,c), \ + I[380] = (T)(img)(_p9##x,_n10##y,z,c), I[381] = (T)(img)(_p8##x,_n10##y,z,c), I[382] = (T)(img)(_p7##x,_n10##y,z,c), I[383] = (T)(img)(_p6##x,_n10##y,z,c), I[384] = (T)(img)(_p5##x,_n10##y,z,c), I[385] = (T)(img)(_p4##x,_n10##y,z,c), I[386] = (T)(img)(_p3##x,_n10##y,z,c), I[387] = (T)(img)(_p2##x,_n10##y,z,c), I[388] = (T)(img)(_p1##x,_n10##y,z,c), I[389] = (T)(img)(x,_n10##y,z,c), I[390] = (T)(img)(_n1##x,_n10##y,z,c), I[391] = (T)(img)(_n2##x,_n10##y,z,c), I[392] = (T)(img)(_n3##x,_n10##y,z,c), I[393] = (T)(img)(_n4##x,_n10##y,z,c), I[394] = (T)(img)(_n5##x,_n10##y,z,c), I[395] = (T)(img)(_n6##x,_n10##y,z,c), I[396] = (T)(img)(_n7##x,_n10##y,z,c), I[397] = (T)(img)(_n8##x,_n10##y,z,c), I[398] = (T)(img)(_n9##x,_n10##y,z,c), I[399] = (T)(img)(_n10##x,_n10##y,z,c); + +// Define 21x21 loop macros +//------------------------- +#define cimg_for21(bound,i) for (int i = 0, \ + _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10; \ + _n10##i<(int)(bound) || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i) + +#define cimg_for21X(img,x) cimg_for21((img)._width,x) +#define cimg_for21Y(img,y) cimg_for21((img)._height,y) +#define cimg_for21Z(img,z) cimg_for21((img)._depth,z) +#define cimg_for21C(img,c) cimg_for21((img)._spectrum,c) +#define cimg_for21XY(img,x,y) cimg_for21Y(img,y) cimg_for21X(img,x) +#define cimg_for21XZ(img,x,z) cimg_for21Z(img,z) cimg_for21X(img,x) +#define cimg_for21XC(img,x,c) cimg_for21C(img,c) cimg_for21X(img,x) +#define cimg_for21YZ(img,y,z) cimg_for21Z(img,z) cimg_for21Y(img,y) +#define cimg_for21YC(img,y,c) cimg_for21C(img,c) cimg_for21Y(img,y) +#define cimg_for21ZC(img,z,c) cimg_for21C(img,c) cimg_for21Z(img,z) +#define cimg_for21XYZ(img,x,y,z) cimg_for21Z(img,z) cimg_for21XY(img,x,y) +#define cimg_for21XZC(img,x,z,c) cimg_for21C(img,c) cimg_for21XZ(img,x,z) +#define cimg_for21YZC(img,y,z,c) cimg_for21C(img,c) cimg_for21YZ(img,y,z) +#define cimg_for21XYZC(img,x,y,z,c) cimg_for21C(img,c) cimg_for21XYZ(img,x,y,z) + +#define cimg_for_in21(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10; \ + i<=(int)(i1) && (_n10##i<(int)(bound) || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i) + +#define cimg_for_in21X(img,x0,x1,x) cimg_for_in21((img)._width,x0,x1,x) +#define cimg_for_in21Y(img,y0,y1,y) cimg_for_in21((img)._height,y0,y1,y) +#define cimg_for_in21Z(img,z0,z1,z) cimg_for_in21((img)._depth,z0,z1,z) +#define cimg_for_in21C(img,c0,c1,c) cimg_for_in21((img)._spectrum,c0,c1,c) +#define cimg_for_in21XY(img,x0,y0,x1,y1,x,y) cimg_for_in21Y(img,y0,y1,y) cimg_for_in21X(img,x0,x1,x) +#define cimg_for_in21XZ(img,x0,z0,x1,z1,x,z) cimg_for_in21Z(img,z0,z1,z) cimg_for_in21X(img,x0,x1,x) +#define cimg_for_in21XC(img,x0,c0,x1,c1,x,c) cimg_for_in21C(img,c0,c1,c) cimg_for_in21X(img,x0,x1,x) +#define cimg_for_in21YZ(img,y0,z0,y1,z1,y,z) cimg_for_in21Z(img,z0,z1,z) cimg_for_in21Y(img,y0,y1,y) +#define cimg_for_in21YC(img,y0,c0,y1,c1,y,c) cimg_for_in21C(img,c0,c1,c) cimg_for_in21Y(img,y0,y1,y) +#define cimg_for_in21ZC(img,z0,c0,z1,c1,z,c) cimg_for_in21C(img,c0,c1,c) cimg_for_in21Z(img,z0,z1,z) +#define cimg_for_in21XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in21Z(img,z0,z1,z) cimg_for_in21XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in21XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in21C(img,c0,c1,c) cimg_for_in21XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in21YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in21C(img,c0,c1,c) cimg_for_in21YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in21XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in21C(img,c0,c1,c) cimg_for_in21XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for21x21(img,x,y,z,c,I,T) \ + cimg_for21((img)._height,y) for (int x = 0, \ + _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = (T)(img)(0,_p10##y,z,c)), \ + (I[21] = I[22] = I[23] = I[24] = I[25] = I[26] = I[27] = I[28] = I[29] = I[30] = I[31] = (T)(img)(0,_p9##y,z,c)), \ + (I[42] = I[43] = I[44] = I[45] = I[46] = I[47] = I[48] = I[49] = I[50] = I[51] = I[52] = (T)(img)(0,_p8##y,z,c)), \ + (I[63] = I[64] = I[65] = I[66] = I[67] = I[68] = I[69] = I[70] = I[71] = I[72] = I[73] = (T)(img)(0,_p7##y,z,c)), \ + (I[84] = I[85] = I[86] = I[87] = I[88] = I[89] = I[90] = I[91] = I[92] = I[93] = I[94] = (T)(img)(0,_p6##y,z,c)), \ + (I[105] = I[106] = I[107] = I[108] = I[109] = I[110] = I[111] = I[112] = I[113] = I[114] = I[115] = (T)(img)(0,_p5##y,z,c)), \ + (I[126] = I[127] = I[128] = I[129] = I[130] = I[131] = I[132] = I[133] = I[134] = I[135] = I[136] = (T)(img)(0,_p4##y,z,c)), \ + (I[147] = I[148] = I[149] = I[150] = I[151] = I[152] = I[153] = I[154] = I[155] = I[156] = I[157] = (T)(img)(0,_p3##y,z,c)), \ + (I[168] = I[169] = I[170] = I[171] = I[172] = I[173] = I[174] = I[175] = I[176] = I[177] = I[178] = (T)(img)(0,_p2##y,z,c)), \ + (I[189] = I[190] = I[191] = I[192] = I[193] = I[194] = I[195] = I[196] = I[197] = I[198] = I[199] = (T)(img)(0,_p1##y,z,c)), \ + (I[210] = I[211] = I[212] = I[213] = I[214] = I[215] = I[216] = I[217] = I[218] = I[219] = I[220] = (T)(img)(0,y,z,c)), \ + (I[231] = I[232] = I[233] = I[234] = I[235] = I[236] = I[237] = I[238] = I[239] = I[240] = I[241] = (T)(img)(0,_n1##y,z,c)), \ + (I[252] = I[253] = I[254] = I[255] = I[256] = I[257] = I[258] = I[259] = I[260] = I[261] = I[262] = (T)(img)(0,_n2##y,z,c)), \ + (I[273] = I[274] = I[275] = I[276] = I[277] = I[278] = I[279] = I[280] = I[281] = I[282] = I[283] = (T)(img)(0,_n3##y,z,c)), \ + (I[294] = I[295] = I[296] = I[297] = I[298] = I[299] = I[300] = I[301] = I[302] = I[303] = I[304] = (T)(img)(0,_n4##y,z,c)), \ + (I[315] = I[316] = I[317] = I[318] = I[319] = I[320] = I[321] = I[322] = I[323] = I[324] = I[325] = (T)(img)(0,_n5##y,z,c)), \ + (I[336] = I[337] = I[338] = I[339] = I[340] = I[341] = I[342] = I[343] = I[344] = I[345] = I[346] = (T)(img)(0,_n6##y,z,c)), \ + (I[357] = I[358] = I[359] = I[360] = I[361] = I[362] = I[363] = I[364] = I[365] = I[366] = I[367] = (T)(img)(0,_n7##y,z,c)), \ + (I[378] = I[379] = I[380] = I[381] = I[382] = I[383] = I[384] = I[385] = I[386] = I[387] = I[388] = (T)(img)(0,_n8##y,z,c)), \ + (I[399] = I[400] = I[401] = I[402] = I[403] = I[404] = I[405] = I[406] = I[407] = I[408] = I[409] = (T)(img)(0,_n9##y,z,c)), \ + (I[420] = I[421] = I[422] = I[423] = I[424] = I[425] = I[426] = I[427] = I[428] = I[429] = I[430] = (T)(img)(0,_n10##y,z,c)), \ + (I[11] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[32] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[53] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[74] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[95] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[116] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[137] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[158] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[179] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[200] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[221] = (T)(img)(_n1##x,y,z,c)), \ + (I[242] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[263] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[284] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[305] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[326] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[347] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[368] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[389] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[410] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[431] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[12] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[33] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[54] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[75] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[96] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[117] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[138] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[159] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[180] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[201] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[222] = (T)(img)(_n2##x,y,z,c)), \ + (I[243] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[264] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[285] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[306] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[327] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[348] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[369] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[390] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[411] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[432] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[13] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[34] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[55] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[76] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[97] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[118] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[139] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[160] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[181] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[202] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[223] = (T)(img)(_n3##x,y,z,c)), \ + (I[244] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[265] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[286] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[307] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[328] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[349] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[370] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[391] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[412] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[433] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[14] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[35] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[56] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[77] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[98] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[119] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[140] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[161] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[182] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[203] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[224] = (T)(img)(_n4##x,y,z,c)), \ + (I[245] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[266] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[287] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[308] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[329] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[350] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[371] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[392] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[413] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[434] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[15] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[36] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[57] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[78] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[99] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[120] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[141] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[162] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[183] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[204] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[225] = (T)(img)(_n5##x,y,z,c)), \ + (I[246] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[267] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[288] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[309] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[330] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[351] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[372] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[393] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[414] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[435] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[16] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[37] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[58] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[79] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[100] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[121] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[142] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[163] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[184] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[205] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[226] = (T)(img)(_n6##x,y,z,c)), \ + (I[247] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[268] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[289] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[310] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[331] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[352] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[373] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[394] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[415] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[436] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[17] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[38] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[59] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[80] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[101] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[122] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[143] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[164] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[185] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[206] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[227] = (T)(img)(_n7##x,y,z,c)), \ + (I[248] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[269] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[290] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[311] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[332] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[353] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[374] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[395] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[416] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[437] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[18] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[39] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[60] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[81] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[102] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[123] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[144] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[165] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[186] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[207] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[228] = (T)(img)(_n8##x,y,z,c)), \ + (I[249] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[270] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[291] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[312] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[333] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[354] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[375] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[396] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[417] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[438] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[19] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[40] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[61] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[82] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[103] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[124] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[145] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[166] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[187] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[208] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[229] = (T)(img)(_n9##x,y,z,c)), \ + (I[250] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[271] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[292] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[313] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[334] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[355] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[376] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[397] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[418] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[439] = (T)(img)(_n9##x,_n10##y,z,c)), \ + 10>=((img)._width)?(img).width() - 1:10); \ + (_n10##x<(img).width() && ( \ + (I[20] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[41] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[62] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[83] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[104] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[125] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[146] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[167] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[188] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[209] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[230] = (T)(img)(_n10##x,y,z,c)), \ + (I[251] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[272] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[293] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[314] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[335] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[356] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[377] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[398] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[419] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[440] = (T)(img)(_n10##x,_n10##y,z,c)),1)) || \ + _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], \ + I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], \ + I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], \ + I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], \ + I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], \ + I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], \ + I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], \ + I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], \ + I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], \ + I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], \ + I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], \ + I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], \ + I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], \ + I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], \ + I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], \ + I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], \ + I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], \ + I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], \ + _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x) + +#define cimg_for_in21x21(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in21((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = (int)( \ + (I[0] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[21] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[42] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[63] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[84] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[105] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[126] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[147] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[168] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[189] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[210] = (T)(img)(_p10##x,y,z,c)), \ + (I[231] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[252] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[273] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[294] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[315] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[336] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[357] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[378] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[399] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[420] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[1] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[22] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[43] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[64] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[85] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[106] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[127] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[148] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[169] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[190] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[211] = (T)(img)(_p9##x,y,z,c)), \ + (I[232] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[253] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[274] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[295] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[316] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[337] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[358] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[379] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[400] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[421] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[2] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[23] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[44] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[65] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[86] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[107] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[128] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[149] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[170] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[191] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[212] = (T)(img)(_p8##x,y,z,c)), \ + (I[233] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[254] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[275] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[296] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[317] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[338] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[359] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[380] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[401] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[422] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[3] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[24] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[45] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[66] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[87] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[108] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[129] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[150] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[171] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[192] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[213] = (T)(img)(_p7##x,y,z,c)), \ + (I[234] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[255] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[276] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[297] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[318] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[339] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[360] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[381] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[402] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[423] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[4] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[25] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[46] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[67] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[88] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[109] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[130] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[151] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[172] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[193] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[214] = (T)(img)(_p6##x,y,z,c)), \ + (I[235] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[256] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[277] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[298] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[319] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[340] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[361] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[382] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[403] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[424] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[5] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[26] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[47] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[68] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[89] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[110] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[131] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[152] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[173] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[194] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[215] = (T)(img)(_p5##x,y,z,c)), \ + (I[236] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[257] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[278] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[299] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[320] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[341] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[362] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[383] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[404] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[425] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[6] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[27] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[48] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[69] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[90] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[111] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[132] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[153] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[174] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[195] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[216] = (T)(img)(_p4##x,y,z,c)), \ + (I[237] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[258] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[279] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[300] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[321] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[342] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[363] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[384] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[405] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[426] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[7] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[28] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[49] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[70] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[91] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[112] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[133] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[154] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[175] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[196] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[217] = (T)(img)(_p3##x,y,z,c)), \ + (I[238] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[259] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[280] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[301] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[322] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[343] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[364] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[385] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[406] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[427] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[8] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[29] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[50] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[71] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[92] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[113] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[134] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[155] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[176] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[197] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[218] = (T)(img)(_p2##x,y,z,c)), \ + (I[239] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[260] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[281] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[302] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[323] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[344] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[365] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[386] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[407] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[428] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[9] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[30] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[51] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[72] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[93] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[114] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[135] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[156] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[177] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[198] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[219] = (T)(img)(_p1##x,y,z,c)), \ + (I[240] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[261] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[282] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[303] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[324] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[345] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[366] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[387] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[408] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[429] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[10] = (T)(img)(x,_p10##y,z,c)), \ + (I[31] = (T)(img)(x,_p9##y,z,c)), \ + (I[52] = (T)(img)(x,_p8##y,z,c)), \ + (I[73] = (T)(img)(x,_p7##y,z,c)), \ + (I[94] = (T)(img)(x,_p6##y,z,c)), \ + (I[115] = (T)(img)(x,_p5##y,z,c)), \ + (I[136] = (T)(img)(x,_p4##y,z,c)), \ + (I[157] = (T)(img)(x,_p3##y,z,c)), \ + (I[178] = (T)(img)(x,_p2##y,z,c)), \ + (I[199] = (T)(img)(x,_p1##y,z,c)), \ + (I[220] = (T)(img)(x,y,z,c)), \ + (I[241] = (T)(img)(x,_n1##y,z,c)), \ + (I[262] = (T)(img)(x,_n2##y,z,c)), \ + (I[283] = (T)(img)(x,_n3##y,z,c)), \ + (I[304] = (T)(img)(x,_n4##y,z,c)), \ + (I[325] = (T)(img)(x,_n5##y,z,c)), \ + (I[346] = (T)(img)(x,_n6##y,z,c)), \ + (I[367] = (T)(img)(x,_n7##y,z,c)), \ + (I[388] = (T)(img)(x,_n8##y,z,c)), \ + (I[409] = (T)(img)(x,_n9##y,z,c)), \ + (I[430] = (T)(img)(x,_n10##y,z,c)), \ + (I[11] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[32] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[53] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[74] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[95] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[116] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[137] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[158] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[179] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[200] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[221] = (T)(img)(_n1##x,y,z,c)), \ + (I[242] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[263] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[284] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[305] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[326] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[347] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[368] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[389] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[410] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[431] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[12] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[33] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[54] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[75] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[96] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[117] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[138] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[159] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[180] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[201] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[222] = (T)(img)(_n2##x,y,z,c)), \ + (I[243] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[264] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[285] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[306] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[327] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[348] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[369] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[390] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[411] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[432] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[13] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[34] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[55] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[76] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[97] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[118] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[139] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[160] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[181] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[202] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[223] = (T)(img)(_n3##x,y,z,c)), \ + (I[244] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[265] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[286] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[307] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[328] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[349] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[370] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[391] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[412] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[433] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[14] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[35] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[56] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[77] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[98] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[119] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[140] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[161] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[182] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[203] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[224] = (T)(img)(_n4##x,y,z,c)), \ + (I[245] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[266] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[287] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[308] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[329] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[350] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[371] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[392] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[413] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[434] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[15] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[36] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[57] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[78] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[99] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[120] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[141] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[162] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[183] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[204] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[225] = (T)(img)(_n5##x,y,z,c)), \ + (I[246] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[267] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[288] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[309] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[330] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[351] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[372] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[393] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[414] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[435] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[16] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[37] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[58] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[79] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[100] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[121] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[142] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[163] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[184] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[205] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[226] = (T)(img)(_n6##x,y,z,c)), \ + (I[247] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[268] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[289] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[310] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[331] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[352] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[373] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[394] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[415] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[436] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[17] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[38] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[59] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[80] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[101] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[122] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[143] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[164] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[185] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[206] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[227] = (T)(img)(_n7##x,y,z,c)), \ + (I[248] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[269] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[290] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[311] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[332] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[353] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[374] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[395] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[416] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[437] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[18] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[39] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[60] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[81] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[102] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[123] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[144] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[165] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[186] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[207] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[228] = (T)(img)(_n8##x,y,z,c)), \ + (I[249] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[270] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[291] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[312] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[333] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[354] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[375] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[396] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[417] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[438] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[19] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[40] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[61] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[82] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[103] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[124] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[145] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[166] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[187] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[208] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[229] = (T)(img)(_n9##x,y,z,c)), \ + (I[250] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[271] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[292] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[313] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[334] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[355] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[376] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[397] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[418] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[439] = (T)(img)(_n9##x,_n10##y,z,c)), \ + x + 10>=(img).width()?(img).width() - 1:x + 10); \ + x<=(int)(x1) && ((_n10##x<(img).width() && ( \ + (I[20] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[41] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[62] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[83] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[104] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[125] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[146] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[167] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[188] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[209] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[230] = (T)(img)(_n10##x,y,z,c)), \ + (I[251] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[272] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[293] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[314] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[335] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[356] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[377] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[398] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[419] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[440] = (T)(img)(_n10##x,_n10##y,z,c)),1)) || \ + _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], \ + I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], \ + I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], \ + I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], \ + I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], \ + I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], \ + I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], \ + I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], \ + I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], \ + I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], \ + I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], \ + I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], \ + I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], \ + I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], \ + I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], \ + I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], \ + I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], \ + I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], \ + _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x) + +#define cimg_get21x21(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p10##x,_p10##y,z,c), I[1] = (T)(img)(_p9##x,_p10##y,z,c), I[2] = (T)(img)(_p8##x,_p10##y,z,c), I[3] = (T)(img)(_p7##x,_p10##y,z,c), I[4] = (T)(img)(_p6##x,_p10##y,z,c), I[5] = (T)(img)(_p5##x,_p10##y,z,c), I[6] = (T)(img)(_p4##x,_p10##y,z,c), I[7] = (T)(img)(_p3##x,_p10##y,z,c), I[8] = (T)(img)(_p2##x,_p10##y,z,c), I[9] = (T)(img)(_p1##x,_p10##y,z,c), I[10] = (T)(img)(x,_p10##y,z,c), I[11] = (T)(img)(_n1##x,_p10##y,z,c), I[12] = (T)(img)(_n2##x,_p10##y,z,c), I[13] = (T)(img)(_n3##x,_p10##y,z,c), I[14] = (T)(img)(_n4##x,_p10##y,z,c), I[15] = (T)(img)(_n5##x,_p10##y,z,c), I[16] = (T)(img)(_n6##x,_p10##y,z,c), I[17] = (T)(img)(_n7##x,_p10##y,z,c), I[18] = (T)(img)(_n8##x,_p10##y,z,c), I[19] = (T)(img)(_n9##x,_p10##y,z,c), I[20] = (T)(img)(_n10##x,_p10##y,z,c), \ + I[21] = (T)(img)(_p10##x,_p9##y,z,c), I[22] = (T)(img)(_p9##x,_p9##y,z,c), I[23] = (T)(img)(_p8##x,_p9##y,z,c), I[24] = (T)(img)(_p7##x,_p9##y,z,c), I[25] = (T)(img)(_p6##x,_p9##y,z,c), I[26] = (T)(img)(_p5##x,_p9##y,z,c), I[27] = (T)(img)(_p4##x,_p9##y,z,c), I[28] = (T)(img)(_p3##x,_p9##y,z,c), I[29] = (T)(img)(_p2##x,_p9##y,z,c), I[30] = (T)(img)(_p1##x,_p9##y,z,c), I[31] = (T)(img)(x,_p9##y,z,c), I[32] = (T)(img)(_n1##x,_p9##y,z,c), I[33] = (T)(img)(_n2##x,_p9##y,z,c), I[34] = (T)(img)(_n3##x,_p9##y,z,c), I[35] = (T)(img)(_n4##x,_p9##y,z,c), I[36] = (T)(img)(_n5##x,_p9##y,z,c), I[37] = (T)(img)(_n6##x,_p9##y,z,c), I[38] = (T)(img)(_n7##x,_p9##y,z,c), I[39] = (T)(img)(_n8##x,_p9##y,z,c), I[40] = (T)(img)(_n9##x,_p9##y,z,c), I[41] = (T)(img)(_n10##x,_p9##y,z,c), \ + I[42] = (T)(img)(_p10##x,_p8##y,z,c), I[43] = (T)(img)(_p9##x,_p8##y,z,c), I[44] = (T)(img)(_p8##x,_p8##y,z,c), I[45] = (T)(img)(_p7##x,_p8##y,z,c), I[46] = (T)(img)(_p6##x,_p8##y,z,c), I[47] = (T)(img)(_p5##x,_p8##y,z,c), I[48] = (T)(img)(_p4##x,_p8##y,z,c), I[49] = (T)(img)(_p3##x,_p8##y,z,c), I[50] = (T)(img)(_p2##x,_p8##y,z,c), I[51] = (T)(img)(_p1##x,_p8##y,z,c), I[52] = (T)(img)(x,_p8##y,z,c), I[53] = (T)(img)(_n1##x,_p8##y,z,c), I[54] = (T)(img)(_n2##x,_p8##y,z,c), I[55] = (T)(img)(_n3##x,_p8##y,z,c), I[56] = (T)(img)(_n4##x,_p8##y,z,c), I[57] = (T)(img)(_n5##x,_p8##y,z,c), I[58] = (T)(img)(_n6##x,_p8##y,z,c), I[59] = (T)(img)(_n7##x,_p8##y,z,c), I[60] = (T)(img)(_n8##x,_p8##y,z,c), I[61] = (T)(img)(_n9##x,_p8##y,z,c), I[62] = (T)(img)(_n10##x,_p8##y,z,c), \ + I[63] = (T)(img)(_p10##x,_p7##y,z,c), I[64] = (T)(img)(_p9##x,_p7##y,z,c), I[65] = (T)(img)(_p8##x,_p7##y,z,c), I[66] = (T)(img)(_p7##x,_p7##y,z,c), I[67] = (T)(img)(_p6##x,_p7##y,z,c), I[68] = (T)(img)(_p5##x,_p7##y,z,c), I[69] = (T)(img)(_p4##x,_p7##y,z,c), I[70] = (T)(img)(_p3##x,_p7##y,z,c), I[71] = (T)(img)(_p2##x,_p7##y,z,c), I[72] = (T)(img)(_p1##x,_p7##y,z,c), I[73] = (T)(img)(x,_p7##y,z,c), I[74] = (T)(img)(_n1##x,_p7##y,z,c), I[75] = (T)(img)(_n2##x,_p7##y,z,c), I[76] = (T)(img)(_n3##x,_p7##y,z,c), I[77] = (T)(img)(_n4##x,_p7##y,z,c), I[78] = (T)(img)(_n5##x,_p7##y,z,c), I[79] = (T)(img)(_n6##x,_p7##y,z,c), I[80] = (T)(img)(_n7##x,_p7##y,z,c), I[81] = (T)(img)(_n8##x,_p7##y,z,c), I[82] = (T)(img)(_n9##x,_p7##y,z,c), I[83] = (T)(img)(_n10##x,_p7##y,z,c), \ + I[84] = (T)(img)(_p10##x,_p6##y,z,c), I[85] = (T)(img)(_p9##x,_p6##y,z,c), I[86] = (T)(img)(_p8##x,_p6##y,z,c), I[87] = (T)(img)(_p7##x,_p6##y,z,c), I[88] = (T)(img)(_p6##x,_p6##y,z,c), I[89] = (T)(img)(_p5##x,_p6##y,z,c), I[90] = (T)(img)(_p4##x,_p6##y,z,c), I[91] = (T)(img)(_p3##x,_p6##y,z,c), I[92] = (T)(img)(_p2##x,_p6##y,z,c), I[93] = (T)(img)(_p1##x,_p6##y,z,c), I[94] = (T)(img)(x,_p6##y,z,c), I[95] = (T)(img)(_n1##x,_p6##y,z,c), I[96] = (T)(img)(_n2##x,_p6##y,z,c), I[97] = (T)(img)(_n3##x,_p6##y,z,c), I[98] = (T)(img)(_n4##x,_p6##y,z,c), I[99] = (T)(img)(_n5##x,_p6##y,z,c), I[100] = (T)(img)(_n6##x,_p6##y,z,c), I[101] = (T)(img)(_n7##x,_p6##y,z,c), I[102] = (T)(img)(_n8##x,_p6##y,z,c), I[103] = (T)(img)(_n9##x,_p6##y,z,c), I[104] = (T)(img)(_n10##x,_p6##y,z,c), \ + I[105] = (T)(img)(_p10##x,_p5##y,z,c), I[106] = (T)(img)(_p9##x,_p5##y,z,c), I[107] = (T)(img)(_p8##x,_p5##y,z,c), I[108] = (T)(img)(_p7##x,_p5##y,z,c), I[109] = (T)(img)(_p6##x,_p5##y,z,c), I[110] = (T)(img)(_p5##x,_p5##y,z,c), I[111] = (T)(img)(_p4##x,_p5##y,z,c), I[112] = (T)(img)(_p3##x,_p5##y,z,c), I[113] = (T)(img)(_p2##x,_p5##y,z,c), I[114] = (T)(img)(_p1##x,_p5##y,z,c), I[115] = (T)(img)(x,_p5##y,z,c), I[116] = (T)(img)(_n1##x,_p5##y,z,c), I[117] = (T)(img)(_n2##x,_p5##y,z,c), I[118] = (T)(img)(_n3##x,_p5##y,z,c), I[119] = (T)(img)(_n4##x,_p5##y,z,c), I[120] = (T)(img)(_n5##x,_p5##y,z,c), I[121] = (T)(img)(_n6##x,_p5##y,z,c), I[122] = (T)(img)(_n7##x,_p5##y,z,c), I[123] = (T)(img)(_n8##x,_p5##y,z,c), I[124] = (T)(img)(_n9##x,_p5##y,z,c), I[125] = (T)(img)(_n10##x,_p5##y,z,c), \ + I[126] = (T)(img)(_p10##x,_p4##y,z,c), I[127] = (T)(img)(_p9##x,_p4##y,z,c), I[128] = (T)(img)(_p8##x,_p4##y,z,c), I[129] = (T)(img)(_p7##x,_p4##y,z,c), I[130] = (T)(img)(_p6##x,_p4##y,z,c), I[131] = (T)(img)(_p5##x,_p4##y,z,c), I[132] = (T)(img)(_p4##x,_p4##y,z,c), I[133] = (T)(img)(_p3##x,_p4##y,z,c), I[134] = (T)(img)(_p2##x,_p4##y,z,c), I[135] = (T)(img)(_p1##x,_p4##y,z,c), I[136] = (T)(img)(x,_p4##y,z,c), I[137] = (T)(img)(_n1##x,_p4##y,z,c), I[138] = (T)(img)(_n2##x,_p4##y,z,c), I[139] = (T)(img)(_n3##x,_p4##y,z,c), I[140] = (T)(img)(_n4##x,_p4##y,z,c), I[141] = (T)(img)(_n5##x,_p4##y,z,c), I[142] = (T)(img)(_n6##x,_p4##y,z,c), I[143] = (T)(img)(_n7##x,_p4##y,z,c), I[144] = (T)(img)(_n8##x,_p4##y,z,c), I[145] = (T)(img)(_n9##x,_p4##y,z,c), I[146] = (T)(img)(_n10##x,_p4##y,z,c), \ + I[147] = (T)(img)(_p10##x,_p3##y,z,c), I[148] = (T)(img)(_p9##x,_p3##y,z,c), I[149] = (T)(img)(_p8##x,_p3##y,z,c), I[150] = (T)(img)(_p7##x,_p3##y,z,c), I[151] = (T)(img)(_p6##x,_p3##y,z,c), I[152] = (T)(img)(_p5##x,_p3##y,z,c), I[153] = (T)(img)(_p4##x,_p3##y,z,c), I[154] = (T)(img)(_p3##x,_p3##y,z,c), I[155] = (T)(img)(_p2##x,_p3##y,z,c), I[156] = (T)(img)(_p1##x,_p3##y,z,c), I[157] = (T)(img)(x,_p3##y,z,c), I[158] = (T)(img)(_n1##x,_p3##y,z,c), I[159] = (T)(img)(_n2##x,_p3##y,z,c), I[160] = (T)(img)(_n3##x,_p3##y,z,c), I[161] = (T)(img)(_n4##x,_p3##y,z,c), I[162] = (T)(img)(_n5##x,_p3##y,z,c), I[163] = (T)(img)(_n6##x,_p3##y,z,c), I[164] = (T)(img)(_n7##x,_p3##y,z,c), I[165] = (T)(img)(_n8##x,_p3##y,z,c), I[166] = (T)(img)(_n9##x,_p3##y,z,c), I[167] = (T)(img)(_n10##x,_p3##y,z,c), \ + I[168] = (T)(img)(_p10##x,_p2##y,z,c), I[169] = (T)(img)(_p9##x,_p2##y,z,c), I[170] = (T)(img)(_p8##x,_p2##y,z,c), I[171] = (T)(img)(_p7##x,_p2##y,z,c), I[172] = (T)(img)(_p6##x,_p2##y,z,c), I[173] = (T)(img)(_p5##x,_p2##y,z,c), I[174] = (T)(img)(_p4##x,_p2##y,z,c), I[175] = (T)(img)(_p3##x,_p2##y,z,c), I[176] = (T)(img)(_p2##x,_p2##y,z,c), I[177] = (T)(img)(_p1##x,_p2##y,z,c), I[178] = (T)(img)(x,_p2##y,z,c), I[179] = (T)(img)(_n1##x,_p2##y,z,c), I[180] = (T)(img)(_n2##x,_p2##y,z,c), I[181] = (T)(img)(_n3##x,_p2##y,z,c), I[182] = (T)(img)(_n4##x,_p2##y,z,c), I[183] = (T)(img)(_n5##x,_p2##y,z,c), I[184] = (T)(img)(_n6##x,_p2##y,z,c), I[185] = (T)(img)(_n7##x,_p2##y,z,c), I[186] = (T)(img)(_n8##x,_p2##y,z,c), I[187] = (T)(img)(_n9##x,_p2##y,z,c), I[188] = (T)(img)(_n10##x,_p2##y,z,c), \ + I[189] = (T)(img)(_p10##x,_p1##y,z,c), I[190] = (T)(img)(_p9##x,_p1##y,z,c), I[191] = (T)(img)(_p8##x,_p1##y,z,c), I[192] = (T)(img)(_p7##x,_p1##y,z,c), I[193] = (T)(img)(_p6##x,_p1##y,z,c), I[194] = (T)(img)(_p5##x,_p1##y,z,c), I[195] = (T)(img)(_p4##x,_p1##y,z,c), I[196] = (T)(img)(_p3##x,_p1##y,z,c), I[197] = (T)(img)(_p2##x,_p1##y,z,c), I[198] = (T)(img)(_p1##x,_p1##y,z,c), I[199] = (T)(img)(x,_p1##y,z,c), I[200] = (T)(img)(_n1##x,_p1##y,z,c), I[201] = (T)(img)(_n2##x,_p1##y,z,c), I[202] = (T)(img)(_n3##x,_p1##y,z,c), I[203] = (T)(img)(_n4##x,_p1##y,z,c), I[204] = (T)(img)(_n5##x,_p1##y,z,c), I[205] = (T)(img)(_n6##x,_p1##y,z,c), I[206] = (T)(img)(_n7##x,_p1##y,z,c), I[207] = (T)(img)(_n8##x,_p1##y,z,c), I[208] = (T)(img)(_n9##x,_p1##y,z,c), I[209] = (T)(img)(_n10##x,_p1##y,z,c), \ + I[210] = (T)(img)(_p10##x,y,z,c), I[211] = (T)(img)(_p9##x,y,z,c), I[212] = (T)(img)(_p8##x,y,z,c), I[213] = (T)(img)(_p7##x,y,z,c), I[214] = (T)(img)(_p6##x,y,z,c), I[215] = (T)(img)(_p5##x,y,z,c), I[216] = (T)(img)(_p4##x,y,z,c), I[217] = (T)(img)(_p3##x,y,z,c), I[218] = (T)(img)(_p2##x,y,z,c), I[219] = (T)(img)(_p1##x,y,z,c), I[220] = (T)(img)(x,y,z,c), I[221] = (T)(img)(_n1##x,y,z,c), I[222] = (T)(img)(_n2##x,y,z,c), I[223] = (T)(img)(_n3##x,y,z,c), I[224] = (T)(img)(_n4##x,y,z,c), I[225] = (T)(img)(_n5##x,y,z,c), I[226] = (T)(img)(_n6##x,y,z,c), I[227] = (T)(img)(_n7##x,y,z,c), I[228] = (T)(img)(_n8##x,y,z,c), I[229] = (T)(img)(_n9##x,y,z,c), I[230] = (T)(img)(_n10##x,y,z,c), \ + I[231] = (T)(img)(_p10##x,_n1##y,z,c), I[232] = (T)(img)(_p9##x,_n1##y,z,c), I[233] = (T)(img)(_p8##x,_n1##y,z,c), I[234] = (T)(img)(_p7##x,_n1##y,z,c), I[235] = (T)(img)(_p6##x,_n1##y,z,c), I[236] = (T)(img)(_p5##x,_n1##y,z,c), I[237] = (T)(img)(_p4##x,_n1##y,z,c), I[238] = (T)(img)(_p3##x,_n1##y,z,c), I[239] = (T)(img)(_p2##x,_n1##y,z,c), I[240] = (T)(img)(_p1##x,_n1##y,z,c), I[241] = (T)(img)(x,_n1##y,z,c), I[242] = (T)(img)(_n1##x,_n1##y,z,c), I[243] = (T)(img)(_n2##x,_n1##y,z,c), I[244] = (T)(img)(_n3##x,_n1##y,z,c), I[245] = (T)(img)(_n4##x,_n1##y,z,c), I[246] = (T)(img)(_n5##x,_n1##y,z,c), I[247] = (T)(img)(_n6##x,_n1##y,z,c), I[248] = (T)(img)(_n7##x,_n1##y,z,c), I[249] = (T)(img)(_n8##x,_n1##y,z,c), I[250] = (T)(img)(_n9##x,_n1##y,z,c), I[251] = (T)(img)(_n10##x,_n1##y,z,c), \ + I[252] = (T)(img)(_p10##x,_n2##y,z,c), I[253] = (T)(img)(_p9##x,_n2##y,z,c), I[254] = (T)(img)(_p8##x,_n2##y,z,c), I[255] = (T)(img)(_p7##x,_n2##y,z,c), I[256] = (T)(img)(_p6##x,_n2##y,z,c), I[257] = (T)(img)(_p5##x,_n2##y,z,c), I[258] = (T)(img)(_p4##x,_n2##y,z,c), I[259] = (T)(img)(_p3##x,_n2##y,z,c), I[260] = (T)(img)(_p2##x,_n2##y,z,c), I[261] = (T)(img)(_p1##x,_n2##y,z,c), I[262] = (T)(img)(x,_n2##y,z,c), I[263] = (T)(img)(_n1##x,_n2##y,z,c), I[264] = (T)(img)(_n2##x,_n2##y,z,c), I[265] = (T)(img)(_n3##x,_n2##y,z,c), I[266] = (T)(img)(_n4##x,_n2##y,z,c), I[267] = (T)(img)(_n5##x,_n2##y,z,c), I[268] = (T)(img)(_n6##x,_n2##y,z,c), I[269] = (T)(img)(_n7##x,_n2##y,z,c), I[270] = (T)(img)(_n8##x,_n2##y,z,c), I[271] = (T)(img)(_n9##x,_n2##y,z,c), I[272] = (T)(img)(_n10##x,_n2##y,z,c), \ + I[273] = (T)(img)(_p10##x,_n3##y,z,c), I[274] = (T)(img)(_p9##x,_n3##y,z,c), I[275] = (T)(img)(_p8##x,_n3##y,z,c), I[276] = (T)(img)(_p7##x,_n3##y,z,c), I[277] = (T)(img)(_p6##x,_n3##y,z,c), I[278] = (T)(img)(_p5##x,_n3##y,z,c), I[279] = (T)(img)(_p4##x,_n3##y,z,c), I[280] = (T)(img)(_p3##x,_n3##y,z,c), I[281] = (T)(img)(_p2##x,_n3##y,z,c), I[282] = (T)(img)(_p1##x,_n3##y,z,c), I[283] = (T)(img)(x,_n3##y,z,c), I[284] = (T)(img)(_n1##x,_n3##y,z,c), I[285] = (T)(img)(_n2##x,_n3##y,z,c), I[286] = (T)(img)(_n3##x,_n3##y,z,c), I[287] = (T)(img)(_n4##x,_n3##y,z,c), I[288] = (T)(img)(_n5##x,_n3##y,z,c), I[289] = (T)(img)(_n6##x,_n3##y,z,c), I[290] = (T)(img)(_n7##x,_n3##y,z,c), I[291] = (T)(img)(_n8##x,_n3##y,z,c), I[292] = (T)(img)(_n9##x,_n3##y,z,c), I[293] = (T)(img)(_n10##x,_n3##y,z,c), \ + I[294] = (T)(img)(_p10##x,_n4##y,z,c), I[295] = (T)(img)(_p9##x,_n4##y,z,c), I[296] = (T)(img)(_p8##x,_n4##y,z,c), I[297] = (T)(img)(_p7##x,_n4##y,z,c), I[298] = (T)(img)(_p6##x,_n4##y,z,c), I[299] = (T)(img)(_p5##x,_n4##y,z,c), I[300] = (T)(img)(_p4##x,_n4##y,z,c), I[301] = (T)(img)(_p3##x,_n4##y,z,c), I[302] = (T)(img)(_p2##x,_n4##y,z,c), I[303] = (T)(img)(_p1##x,_n4##y,z,c), I[304] = (T)(img)(x,_n4##y,z,c), I[305] = (T)(img)(_n1##x,_n4##y,z,c), I[306] = (T)(img)(_n2##x,_n4##y,z,c), I[307] = (T)(img)(_n3##x,_n4##y,z,c), I[308] = (T)(img)(_n4##x,_n4##y,z,c), I[309] = (T)(img)(_n5##x,_n4##y,z,c), I[310] = (T)(img)(_n6##x,_n4##y,z,c), I[311] = (T)(img)(_n7##x,_n4##y,z,c), I[312] = (T)(img)(_n8##x,_n4##y,z,c), I[313] = (T)(img)(_n9##x,_n4##y,z,c), I[314] = (T)(img)(_n10##x,_n4##y,z,c), \ + I[315] = (T)(img)(_p10##x,_n5##y,z,c), I[316] = (T)(img)(_p9##x,_n5##y,z,c), I[317] = (T)(img)(_p8##x,_n5##y,z,c), I[318] = (T)(img)(_p7##x,_n5##y,z,c), I[319] = (T)(img)(_p6##x,_n5##y,z,c), I[320] = (T)(img)(_p5##x,_n5##y,z,c), I[321] = (T)(img)(_p4##x,_n5##y,z,c), I[322] = (T)(img)(_p3##x,_n5##y,z,c), I[323] = (T)(img)(_p2##x,_n5##y,z,c), I[324] = (T)(img)(_p1##x,_n5##y,z,c), I[325] = (T)(img)(x,_n5##y,z,c), I[326] = (T)(img)(_n1##x,_n5##y,z,c), I[327] = (T)(img)(_n2##x,_n5##y,z,c), I[328] = (T)(img)(_n3##x,_n5##y,z,c), I[329] = (T)(img)(_n4##x,_n5##y,z,c), I[330] = (T)(img)(_n5##x,_n5##y,z,c), I[331] = (T)(img)(_n6##x,_n5##y,z,c), I[332] = (T)(img)(_n7##x,_n5##y,z,c), I[333] = (T)(img)(_n8##x,_n5##y,z,c), I[334] = (T)(img)(_n9##x,_n5##y,z,c), I[335] = (T)(img)(_n10##x,_n5##y,z,c), \ + I[336] = (T)(img)(_p10##x,_n6##y,z,c), I[337] = (T)(img)(_p9##x,_n6##y,z,c), I[338] = (T)(img)(_p8##x,_n6##y,z,c), I[339] = (T)(img)(_p7##x,_n6##y,z,c), I[340] = (T)(img)(_p6##x,_n6##y,z,c), I[341] = (T)(img)(_p5##x,_n6##y,z,c), I[342] = (T)(img)(_p4##x,_n6##y,z,c), I[343] = (T)(img)(_p3##x,_n6##y,z,c), I[344] = (T)(img)(_p2##x,_n6##y,z,c), I[345] = (T)(img)(_p1##x,_n6##y,z,c), I[346] = (T)(img)(x,_n6##y,z,c), I[347] = (T)(img)(_n1##x,_n6##y,z,c), I[348] = (T)(img)(_n2##x,_n6##y,z,c), I[349] = (T)(img)(_n3##x,_n6##y,z,c), I[350] = (T)(img)(_n4##x,_n6##y,z,c), I[351] = (T)(img)(_n5##x,_n6##y,z,c), I[352] = (T)(img)(_n6##x,_n6##y,z,c), I[353] = (T)(img)(_n7##x,_n6##y,z,c), I[354] = (T)(img)(_n8##x,_n6##y,z,c), I[355] = (T)(img)(_n9##x,_n6##y,z,c), I[356] = (T)(img)(_n10##x,_n6##y,z,c), \ + I[357] = (T)(img)(_p10##x,_n7##y,z,c), I[358] = (T)(img)(_p9##x,_n7##y,z,c), I[359] = (T)(img)(_p8##x,_n7##y,z,c), I[360] = (T)(img)(_p7##x,_n7##y,z,c), I[361] = (T)(img)(_p6##x,_n7##y,z,c), I[362] = (T)(img)(_p5##x,_n7##y,z,c), I[363] = (T)(img)(_p4##x,_n7##y,z,c), I[364] = (T)(img)(_p3##x,_n7##y,z,c), I[365] = (T)(img)(_p2##x,_n7##y,z,c), I[366] = (T)(img)(_p1##x,_n7##y,z,c), I[367] = (T)(img)(x,_n7##y,z,c), I[368] = (T)(img)(_n1##x,_n7##y,z,c), I[369] = (T)(img)(_n2##x,_n7##y,z,c), I[370] = (T)(img)(_n3##x,_n7##y,z,c), I[371] = (T)(img)(_n4##x,_n7##y,z,c), I[372] = (T)(img)(_n5##x,_n7##y,z,c), I[373] = (T)(img)(_n6##x,_n7##y,z,c), I[374] = (T)(img)(_n7##x,_n7##y,z,c), I[375] = (T)(img)(_n8##x,_n7##y,z,c), I[376] = (T)(img)(_n9##x,_n7##y,z,c), I[377] = (T)(img)(_n10##x,_n7##y,z,c), \ + I[378] = (T)(img)(_p10##x,_n8##y,z,c), I[379] = (T)(img)(_p9##x,_n8##y,z,c), I[380] = (T)(img)(_p8##x,_n8##y,z,c), I[381] = (T)(img)(_p7##x,_n8##y,z,c), I[382] = (T)(img)(_p6##x,_n8##y,z,c), I[383] = (T)(img)(_p5##x,_n8##y,z,c), I[384] = (T)(img)(_p4##x,_n8##y,z,c), I[385] = (T)(img)(_p3##x,_n8##y,z,c), I[386] = (T)(img)(_p2##x,_n8##y,z,c), I[387] = (T)(img)(_p1##x,_n8##y,z,c), I[388] = (T)(img)(x,_n8##y,z,c), I[389] = (T)(img)(_n1##x,_n8##y,z,c), I[390] = (T)(img)(_n2##x,_n8##y,z,c), I[391] = (T)(img)(_n3##x,_n8##y,z,c), I[392] = (T)(img)(_n4##x,_n8##y,z,c), I[393] = (T)(img)(_n5##x,_n8##y,z,c), I[394] = (T)(img)(_n6##x,_n8##y,z,c), I[395] = (T)(img)(_n7##x,_n8##y,z,c), I[396] = (T)(img)(_n8##x,_n8##y,z,c), I[397] = (T)(img)(_n9##x,_n8##y,z,c), I[398] = (T)(img)(_n10##x,_n8##y,z,c), \ + I[399] = (T)(img)(_p10##x,_n9##y,z,c), I[400] = (T)(img)(_p9##x,_n9##y,z,c), I[401] = (T)(img)(_p8##x,_n9##y,z,c), I[402] = (T)(img)(_p7##x,_n9##y,z,c), I[403] = (T)(img)(_p6##x,_n9##y,z,c), I[404] = (T)(img)(_p5##x,_n9##y,z,c), I[405] = (T)(img)(_p4##x,_n9##y,z,c), I[406] = (T)(img)(_p3##x,_n9##y,z,c), I[407] = (T)(img)(_p2##x,_n9##y,z,c), I[408] = (T)(img)(_p1##x,_n9##y,z,c), I[409] = (T)(img)(x,_n9##y,z,c), I[410] = (T)(img)(_n1##x,_n9##y,z,c), I[411] = (T)(img)(_n2##x,_n9##y,z,c), I[412] = (T)(img)(_n3##x,_n9##y,z,c), I[413] = (T)(img)(_n4##x,_n9##y,z,c), I[414] = (T)(img)(_n5##x,_n9##y,z,c), I[415] = (T)(img)(_n6##x,_n9##y,z,c), I[416] = (T)(img)(_n7##x,_n9##y,z,c), I[417] = (T)(img)(_n8##x,_n9##y,z,c), I[418] = (T)(img)(_n9##x,_n9##y,z,c), I[419] = (T)(img)(_n10##x,_n9##y,z,c), \ + I[420] = (T)(img)(_p10##x,_n10##y,z,c), I[421] = (T)(img)(_p9##x,_n10##y,z,c), I[422] = (T)(img)(_p8##x,_n10##y,z,c), I[423] = (T)(img)(_p7##x,_n10##y,z,c), I[424] = (T)(img)(_p6##x,_n10##y,z,c), I[425] = (T)(img)(_p5##x,_n10##y,z,c), I[426] = (T)(img)(_p4##x,_n10##y,z,c), I[427] = (T)(img)(_p3##x,_n10##y,z,c), I[428] = (T)(img)(_p2##x,_n10##y,z,c), I[429] = (T)(img)(_p1##x,_n10##y,z,c), I[430] = (T)(img)(x,_n10##y,z,c), I[431] = (T)(img)(_n1##x,_n10##y,z,c), I[432] = (T)(img)(_n2##x,_n10##y,z,c), I[433] = (T)(img)(_n3##x,_n10##y,z,c), I[434] = (T)(img)(_n4##x,_n10##y,z,c), I[435] = (T)(img)(_n5##x,_n10##y,z,c), I[436] = (T)(img)(_n6##x,_n10##y,z,c), I[437] = (T)(img)(_n7##x,_n10##y,z,c), I[438] = (T)(img)(_n8##x,_n10##y,z,c), I[439] = (T)(img)(_n9##x,_n10##y,z,c), I[440] = (T)(img)(_n10##x,_n10##y,z,c); + +// Define 22x22 loop macros +//------------------------- +#define cimg_for22(bound,i) for (int i = 0, \ + _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11; \ + _n11##i<(int)(bound) || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i) + +#define cimg_for22X(img,x) cimg_for22((img)._width,x) +#define cimg_for22Y(img,y) cimg_for22((img)._height,y) +#define cimg_for22Z(img,z) cimg_for22((img)._depth,z) +#define cimg_for22C(img,c) cimg_for22((img)._spectrum,c) +#define cimg_for22XY(img,x,y) cimg_for22Y(img,y) cimg_for22X(img,x) +#define cimg_for22XZ(img,x,z) cimg_for22Z(img,z) cimg_for22X(img,x) +#define cimg_for22XC(img,x,c) cimg_for22C(img,c) cimg_for22X(img,x) +#define cimg_for22YZ(img,y,z) cimg_for22Z(img,z) cimg_for22Y(img,y) +#define cimg_for22YC(img,y,c) cimg_for22C(img,c) cimg_for22Y(img,y) +#define cimg_for22ZC(img,z,c) cimg_for22C(img,c) cimg_for22Z(img,z) +#define cimg_for22XYZ(img,x,y,z) cimg_for22Z(img,z) cimg_for22XY(img,x,y) +#define cimg_for22XZC(img,x,z,c) cimg_for22C(img,c) cimg_for22XZ(img,x,z) +#define cimg_for22YZC(img,y,z,c) cimg_for22C(img,c) cimg_for22YZ(img,y,z) +#define cimg_for22XYZC(img,x,y,z,c) cimg_for22C(img,c) cimg_for22XYZ(img,x,y,z) + +#define cimg_for_in22(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11; \ + i<=(int)(i1) && (_n11##i<(int)(bound) || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i) + +#define cimg_for_in22X(img,x0,x1,x) cimg_for_in22((img)._width,x0,x1,x) +#define cimg_for_in22Y(img,y0,y1,y) cimg_for_in22((img)._height,y0,y1,y) +#define cimg_for_in22Z(img,z0,z1,z) cimg_for_in22((img)._depth,z0,z1,z) +#define cimg_for_in22C(img,c0,c1,c) cimg_for_in22((img)._spectrum,c0,c1,c) +#define cimg_for_in22XY(img,x0,y0,x1,y1,x,y) cimg_for_in22Y(img,y0,y1,y) cimg_for_in22X(img,x0,x1,x) +#define cimg_for_in22XZ(img,x0,z0,x1,z1,x,z) cimg_for_in22Z(img,z0,z1,z) cimg_for_in22X(img,x0,x1,x) +#define cimg_for_in22XC(img,x0,c0,x1,c1,x,c) cimg_for_in22C(img,c0,c1,c) cimg_for_in22X(img,x0,x1,x) +#define cimg_for_in22YZ(img,y0,z0,y1,z1,y,z) cimg_for_in22Z(img,z0,z1,z) cimg_for_in22Y(img,y0,y1,y) +#define cimg_for_in22YC(img,y0,c0,y1,c1,y,c) cimg_for_in22C(img,c0,c1,c) cimg_for_in22Y(img,y0,y1,y) +#define cimg_for_in22ZC(img,z0,c0,z1,c1,z,c) cimg_for_in22C(img,c0,c1,c) cimg_for_in22Z(img,z0,z1,z) +#define cimg_for_in22XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in22Z(img,z0,z1,z) cimg_for_in22XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in22XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in22C(img,c0,c1,c) cimg_for_in22XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in22YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in22C(img,c0,c1,c) cimg_for_in22YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in22XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in22C(img,c0,c1,c) cimg_for_in22XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for22x22(img,x,y,z,c,I,T) \ + cimg_for22((img)._height,y) for (int x = 0, \ + _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = (T)(img)(0,_p10##y,z,c)), \ + (I[22] = I[23] = I[24] = I[25] = I[26] = I[27] = I[28] = I[29] = I[30] = I[31] = I[32] = (T)(img)(0,_p9##y,z,c)), \ + (I[44] = I[45] = I[46] = I[47] = I[48] = I[49] = I[50] = I[51] = I[52] = I[53] = I[54] = (T)(img)(0,_p8##y,z,c)), \ + (I[66] = I[67] = I[68] = I[69] = I[70] = I[71] = I[72] = I[73] = I[74] = I[75] = I[76] = (T)(img)(0,_p7##y,z,c)), \ + (I[88] = I[89] = I[90] = I[91] = I[92] = I[93] = I[94] = I[95] = I[96] = I[97] = I[98] = (T)(img)(0,_p6##y,z,c)), \ + (I[110] = I[111] = I[112] = I[113] = I[114] = I[115] = I[116] = I[117] = I[118] = I[119] = I[120] = (T)(img)(0,_p5##y,z,c)), \ + (I[132] = I[133] = I[134] = I[135] = I[136] = I[137] = I[138] = I[139] = I[140] = I[141] = I[142] = (T)(img)(0,_p4##y,z,c)), \ + (I[154] = I[155] = I[156] = I[157] = I[158] = I[159] = I[160] = I[161] = I[162] = I[163] = I[164] = (T)(img)(0,_p3##y,z,c)), \ + (I[176] = I[177] = I[178] = I[179] = I[180] = I[181] = I[182] = I[183] = I[184] = I[185] = I[186] = (T)(img)(0,_p2##y,z,c)), \ + (I[198] = I[199] = I[200] = I[201] = I[202] = I[203] = I[204] = I[205] = I[206] = I[207] = I[208] = (T)(img)(0,_p1##y,z,c)), \ + (I[220] = I[221] = I[222] = I[223] = I[224] = I[225] = I[226] = I[227] = I[228] = I[229] = I[230] = (T)(img)(0,y,z,c)), \ + (I[242] = I[243] = I[244] = I[245] = I[246] = I[247] = I[248] = I[249] = I[250] = I[251] = I[252] = (T)(img)(0,_n1##y,z,c)), \ + (I[264] = I[265] = I[266] = I[267] = I[268] = I[269] = I[270] = I[271] = I[272] = I[273] = I[274] = (T)(img)(0,_n2##y,z,c)), \ + (I[286] = I[287] = I[288] = I[289] = I[290] = I[291] = I[292] = I[293] = I[294] = I[295] = I[296] = (T)(img)(0,_n3##y,z,c)), \ + (I[308] = I[309] = I[310] = I[311] = I[312] = I[313] = I[314] = I[315] = I[316] = I[317] = I[318] = (T)(img)(0,_n4##y,z,c)), \ + (I[330] = I[331] = I[332] = I[333] = I[334] = I[335] = I[336] = I[337] = I[338] = I[339] = I[340] = (T)(img)(0,_n5##y,z,c)), \ + (I[352] = I[353] = I[354] = I[355] = I[356] = I[357] = I[358] = I[359] = I[360] = I[361] = I[362] = (T)(img)(0,_n6##y,z,c)), \ + (I[374] = I[375] = I[376] = I[377] = I[378] = I[379] = I[380] = I[381] = I[382] = I[383] = I[384] = (T)(img)(0,_n7##y,z,c)), \ + (I[396] = I[397] = I[398] = I[399] = I[400] = I[401] = I[402] = I[403] = I[404] = I[405] = I[406] = (T)(img)(0,_n8##y,z,c)), \ + (I[418] = I[419] = I[420] = I[421] = I[422] = I[423] = I[424] = I[425] = I[426] = I[427] = I[428] = (T)(img)(0,_n9##y,z,c)), \ + (I[440] = I[441] = I[442] = I[443] = I[444] = I[445] = I[446] = I[447] = I[448] = I[449] = I[450] = (T)(img)(0,_n10##y,z,c)), \ + (I[462] = I[463] = I[464] = I[465] = I[466] = I[467] = I[468] = I[469] = I[470] = I[471] = I[472] = (T)(img)(0,_n11##y,z,c)), \ + (I[11] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[33] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[55] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[77] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[99] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[121] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[143] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[165] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[187] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[209] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[231] = (T)(img)(_n1##x,y,z,c)), \ + (I[253] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[275] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[297] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[319] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[341] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[363] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[385] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[407] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[429] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[451] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[473] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[12] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[34] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[56] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[78] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[100] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[122] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[144] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[166] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[188] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[210] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[232] = (T)(img)(_n2##x,y,z,c)), \ + (I[254] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[276] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[298] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[320] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[342] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[364] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[386] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[408] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[430] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[452] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[474] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[13] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[35] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[57] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[79] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[101] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[123] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[145] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[167] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[189] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[211] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[233] = (T)(img)(_n3##x,y,z,c)), \ + (I[255] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[277] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[299] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[321] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[343] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[365] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[387] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[409] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[431] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[453] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[475] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[14] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[36] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[58] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[80] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[102] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[124] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[146] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[168] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[190] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[212] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[234] = (T)(img)(_n4##x,y,z,c)), \ + (I[256] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[278] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[300] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[322] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[344] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[366] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[388] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[410] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[432] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[454] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[476] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[15] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[37] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[59] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[81] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[103] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[125] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[147] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[169] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[191] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[213] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[235] = (T)(img)(_n5##x,y,z,c)), \ + (I[257] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[279] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[301] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[323] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[345] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[367] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[389] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[411] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[433] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[455] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[477] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[16] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[38] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[60] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[82] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[104] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[126] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[148] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[170] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[192] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[214] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[236] = (T)(img)(_n6##x,y,z,c)), \ + (I[258] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[280] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[302] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[324] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[346] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[368] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[390] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[412] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[434] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[456] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[478] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[17] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[39] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[61] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[83] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[105] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[127] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[149] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[171] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[193] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[215] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[237] = (T)(img)(_n7##x,y,z,c)), \ + (I[259] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[281] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[303] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[325] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[347] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[369] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[391] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[413] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[435] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[457] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[479] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[18] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[40] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[62] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[84] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[106] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[128] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[150] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[172] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[194] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[216] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[238] = (T)(img)(_n8##x,y,z,c)), \ + (I[260] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[282] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[304] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[326] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[348] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[370] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[392] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[414] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[436] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[458] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[480] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[19] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[41] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[63] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[85] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[107] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[129] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[151] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[173] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[195] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[217] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[239] = (T)(img)(_n9##x,y,z,c)), \ + (I[261] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[283] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[305] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[327] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[349] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[371] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[393] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[415] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[437] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[459] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[481] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[20] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[42] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[64] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[86] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[108] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[130] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[152] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[174] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[196] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[218] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[240] = (T)(img)(_n10##x,y,z,c)), \ + (I[262] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[284] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[306] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[328] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[350] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[372] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[394] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[416] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[438] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[460] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[482] = (T)(img)(_n10##x,_n11##y,z,c)), \ + 11>=((img)._width)?(img).width() - 1:11); \ + (_n11##x<(img).width() && ( \ + (I[21] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[43] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[65] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[87] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[109] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[131] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[153] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[175] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[197] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[219] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[241] = (T)(img)(_n11##x,y,z,c)), \ + (I[263] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[285] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[307] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[329] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[351] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[373] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[395] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[417] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[439] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[461] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[483] = (T)(img)(_n11##x,_n11##y,z,c)),1)) || \ + _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], \ + I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], \ + I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], \ + I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], \ + I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], \ + I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], \ + I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], \ + I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], \ + I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], \ + I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], \ + I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], \ + I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], \ + I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], \ + I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], \ + I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], \ + I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], \ + I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], \ + I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], \ + I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], \ + I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], \ + I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], \ + I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], \ + _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x) + +#define cimg_for_in22x22(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in22((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = (int)( \ + (I[0] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[22] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[44] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[66] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[88] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[110] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[132] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[154] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[176] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[198] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[220] = (T)(img)(_p10##x,y,z,c)), \ + (I[242] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[264] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[286] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[308] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[330] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[352] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[374] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[396] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[418] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[440] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[462] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[1] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[23] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[45] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[67] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[89] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[111] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[133] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[155] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[177] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[199] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[221] = (T)(img)(_p9##x,y,z,c)), \ + (I[243] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[265] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[287] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[309] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[331] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[353] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[375] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[397] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[419] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[441] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[463] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[2] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[24] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[46] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[68] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[90] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[112] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[134] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[156] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[178] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[200] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[222] = (T)(img)(_p8##x,y,z,c)), \ + (I[244] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[266] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[288] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[310] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[332] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[354] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[376] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[398] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[420] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[442] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[464] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[3] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[25] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[47] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[69] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[91] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[113] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[135] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[157] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[179] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[201] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[223] = (T)(img)(_p7##x,y,z,c)), \ + (I[245] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[267] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[289] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[311] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[333] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[355] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[377] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[399] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[421] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[443] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[465] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[4] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[26] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[48] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[70] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[92] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[114] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[136] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[158] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[180] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[202] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[224] = (T)(img)(_p6##x,y,z,c)), \ + (I[246] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[268] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[290] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[312] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[334] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[356] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[378] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[400] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[422] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[444] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[466] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[5] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[27] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[49] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[71] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[93] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[115] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[137] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[159] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[181] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[203] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[225] = (T)(img)(_p5##x,y,z,c)), \ + (I[247] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[269] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[291] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[313] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[335] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[357] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[379] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[401] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[423] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[445] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[467] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[6] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[28] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[50] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[72] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[94] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[116] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[138] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[160] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[182] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[204] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[226] = (T)(img)(_p4##x,y,z,c)), \ + (I[248] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[270] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[292] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[314] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[336] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[358] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[380] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[402] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[424] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[446] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[468] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[7] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[29] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[51] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[73] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[95] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[117] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[139] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[161] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[183] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[205] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[227] = (T)(img)(_p3##x,y,z,c)), \ + (I[249] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[271] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[293] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[315] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[337] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[359] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[381] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[403] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[425] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[447] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[469] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[8] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[30] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[52] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[74] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[96] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[118] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[140] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[162] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[184] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[206] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[228] = (T)(img)(_p2##x,y,z,c)), \ + (I[250] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[272] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[294] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[316] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[338] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[360] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[382] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[404] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[426] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[448] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[470] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[9] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[31] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[53] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[75] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[97] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[119] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[141] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[163] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[185] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[207] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[229] = (T)(img)(_p1##x,y,z,c)), \ + (I[251] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[273] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[295] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[317] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[339] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[361] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[383] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[405] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[427] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[449] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[471] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[10] = (T)(img)(x,_p10##y,z,c)), \ + (I[32] = (T)(img)(x,_p9##y,z,c)), \ + (I[54] = (T)(img)(x,_p8##y,z,c)), \ + (I[76] = (T)(img)(x,_p7##y,z,c)), \ + (I[98] = (T)(img)(x,_p6##y,z,c)), \ + (I[120] = (T)(img)(x,_p5##y,z,c)), \ + (I[142] = (T)(img)(x,_p4##y,z,c)), \ + (I[164] = (T)(img)(x,_p3##y,z,c)), \ + (I[186] = (T)(img)(x,_p2##y,z,c)), \ + (I[208] = (T)(img)(x,_p1##y,z,c)), \ + (I[230] = (T)(img)(x,y,z,c)), \ + (I[252] = (T)(img)(x,_n1##y,z,c)), \ + (I[274] = (T)(img)(x,_n2##y,z,c)), \ + (I[296] = (T)(img)(x,_n3##y,z,c)), \ + (I[318] = (T)(img)(x,_n4##y,z,c)), \ + (I[340] = (T)(img)(x,_n5##y,z,c)), \ + (I[362] = (T)(img)(x,_n6##y,z,c)), \ + (I[384] = (T)(img)(x,_n7##y,z,c)), \ + (I[406] = (T)(img)(x,_n8##y,z,c)), \ + (I[428] = (T)(img)(x,_n9##y,z,c)), \ + (I[450] = (T)(img)(x,_n10##y,z,c)), \ + (I[472] = (T)(img)(x,_n11##y,z,c)), \ + (I[11] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[33] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[55] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[77] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[99] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[121] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[143] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[165] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[187] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[209] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[231] = (T)(img)(_n1##x,y,z,c)), \ + (I[253] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[275] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[297] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[319] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[341] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[363] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[385] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[407] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[429] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[451] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[473] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[12] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[34] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[56] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[78] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[100] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[122] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[144] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[166] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[188] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[210] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[232] = (T)(img)(_n2##x,y,z,c)), \ + (I[254] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[276] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[298] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[320] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[342] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[364] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[386] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[408] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[430] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[452] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[474] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[13] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[35] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[57] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[79] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[101] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[123] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[145] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[167] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[189] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[211] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[233] = (T)(img)(_n3##x,y,z,c)), \ + (I[255] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[277] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[299] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[321] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[343] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[365] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[387] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[409] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[431] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[453] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[475] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[14] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[36] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[58] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[80] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[102] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[124] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[146] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[168] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[190] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[212] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[234] = (T)(img)(_n4##x,y,z,c)), \ + (I[256] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[278] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[300] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[322] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[344] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[366] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[388] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[410] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[432] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[454] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[476] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[15] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[37] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[59] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[81] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[103] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[125] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[147] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[169] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[191] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[213] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[235] = (T)(img)(_n5##x,y,z,c)), \ + (I[257] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[279] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[301] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[323] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[345] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[367] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[389] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[411] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[433] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[455] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[477] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[16] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[38] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[60] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[82] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[104] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[126] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[148] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[170] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[192] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[214] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[236] = (T)(img)(_n6##x,y,z,c)), \ + (I[258] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[280] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[302] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[324] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[346] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[368] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[390] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[412] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[434] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[456] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[478] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[17] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[39] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[61] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[83] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[105] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[127] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[149] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[171] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[193] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[215] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[237] = (T)(img)(_n7##x,y,z,c)), \ + (I[259] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[281] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[303] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[325] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[347] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[369] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[391] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[413] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[435] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[457] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[479] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[18] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[40] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[62] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[84] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[106] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[128] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[150] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[172] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[194] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[216] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[238] = (T)(img)(_n8##x,y,z,c)), \ + (I[260] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[282] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[304] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[326] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[348] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[370] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[392] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[414] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[436] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[458] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[480] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[19] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[41] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[63] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[85] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[107] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[129] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[151] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[173] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[195] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[217] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[239] = (T)(img)(_n9##x,y,z,c)), \ + (I[261] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[283] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[305] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[327] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[349] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[371] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[393] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[415] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[437] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[459] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[481] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[20] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[42] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[64] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[86] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[108] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[130] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[152] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[174] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[196] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[218] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[240] = (T)(img)(_n10##x,y,z,c)), \ + (I[262] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[284] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[306] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[328] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[350] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[372] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[394] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[416] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[438] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[460] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[482] = (T)(img)(_n10##x,_n11##y,z,c)), \ + x + 11>=(img).width()?(img).width() - 1:x + 11); \ + x<=(int)(x1) && ((_n11##x<(img).width() && ( \ + (I[21] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[43] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[65] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[87] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[109] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[131] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[153] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[175] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[197] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[219] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[241] = (T)(img)(_n11##x,y,z,c)), \ + (I[263] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[285] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[307] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[329] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[351] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[373] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[395] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[417] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[439] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[461] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[483] = (T)(img)(_n11##x,_n11##y,z,c)),1)) || \ + _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], \ + I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], \ + I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], \ + I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], \ + I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], \ + I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], \ + I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], \ + I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], \ + I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], \ + I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], \ + I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], \ + I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], \ + I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], \ + I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], \ + I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], \ + I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], \ + I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], \ + I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], \ + I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], \ + I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], \ + I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], \ + I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], \ + _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x) + +#define cimg_get22x22(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p10##x,_p10##y,z,c), I[1] = (T)(img)(_p9##x,_p10##y,z,c), I[2] = (T)(img)(_p8##x,_p10##y,z,c), I[3] = (T)(img)(_p7##x,_p10##y,z,c), I[4] = (T)(img)(_p6##x,_p10##y,z,c), I[5] = (T)(img)(_p5##x,_p10##y,z,c), I[6] = (T)(img)(_p4##x,_p10##y,z,c), I[7] = (T)(img)(_p3##x,_p10##y,z,c), I[8] = (T)(img)(_p2##x,_p10##y,z,c), I[9] = (T)(img)(_p1##x,_p10##y,z,c), I[10] = (T)(img)(x,_p10##y,z,c), I[11] = (T)(img)(_n1##x,_p10##y,z,c), I[12] = (T)(img)(_n2##x,_p10##y,z,c), I[13] = (T)(img)(_n3##x,_p10##y,z,c), I[14] = (T)(img)(_n4##x,_p10##y,z,c), I[15] = (T)(img)(_n5##x,_p10##y,z,c), I[16] = (T)(img)(_n6##x,_p10##y,z,c), I[17] = (T)(img)(_n7##x,_p10##y,z,c), I[18] = (T)(img)(_n8##x,_p10##y,z,c), I[19] = (T)(img)(_n9##x,_p10##y,z,c), I[20] = (T)(img)(_n10##x,_p10##y,z,c), I[21] = (T)(img)(_n11##x,_p10##y,z,c), \ + I[22] = (T)(img)(_p10##x,_p9##y,z,c), I[23] = (T)(img)(_p9##x,_p9##y,z,c), I[24] = (T)(img)(_p8##x,_p9##y,z,c), I[25] = (T)(img)(_p7##x,_p9##y,z,c), I[26] = (T)(img)(_p6##x,_p9##y,z,c), I[27] = (T)(img)(_p5##x,_p9##y,z,c), I[28] = (T)(img)(_p4##x,_p9##y,z,c), I[29] = (T)(img)(_p3##x,_p9##y,z,c), I[30] = (T)(img)(_p2##x,_p9##y,z,c), I[31] = (T)(img)(_p1##x,_p9##y,z,c), I[32] = (T)(img)(x,_p9##y,z,c), I[33] = (T)(img)(_n1##x,_p9##y,z,c), I[34] = (T)(img)(_n2##x,_p9##y,z,c), I[35] = (T)(img)(_n3##x,_p9##y,z,c), I[36] = (T)(img)(_n4##x,_p9##y,z,c), I[37] = (T)(img)(_n5##x,_p9##y,z,c), I[38] = (T)(img)(_n6##x,_p9##y,z,c), I[39] = (T)(img)(_n7##x,_p9##y,z,c), I[40] = (T)(img)(_n8##x,_p9##y,z,c), I[41] = (T)(img)(_n9##x,_p9##y,z,c), I[42] = (T)(img)(_n10##x,_p9##y,z,c), I[43] = (T)(img)(_n11##x,_p9##y,z,c), \ + I[44] = (T)(img)(_p10##x,_p8##y,z,c), I[45] = (T)(img)(_p9##x,_p8##y,z,c), I[46] = (T)(img)(_p8##x,_p8##y,z,c), I[47] = (T)(img)(_p7##x,_p8##y,z,c), I[48] = (T)(img)(_p6##x,_p8##y,z,c), I[49] = (T)(img)(_p5##x,_p8##y,z,c), I[50] = (T)(img)(_p4##x,_p8##y,z,c), I[51] = (T)(img)(_p3##x,_p8##y,z,c), I[52] = (T)(img)(_p2##x,_p8##y,z,c), I[53] = (T)(img)(_p1##x,_p8##y,z,c), I[54] = (T)(img)(x,_p8##y,z,c), I[55] = (T)(img)(_n1##x,_p8##y,z,c), I[56] = (T)(img)(_n2##x,_p8##y,z,c), I[57] = (T)(img)(_n3##x,_p8##y,z,c), I[58] = (T)(img)(_n4##x,_p8##y,z,c), I[59] = (T)(img)(_n5##x,_p8##y,z,c), I[60] = (T)(img)(_n6##x,_p8##y,z,c), I[61] = (T)(img)(_n7##x,_p8##y,z,c), I[62] = (T)(img)(_n8##x,_p8##y,z,c), I[63] = (T)(img)(_n9##x,_p8##y,z,c), I[64] = (T)(img)(_n10##x,_p8##y,z,c), I[65] = (T)(img)(_n11##x,_p8##y,z,c), \ + I[66] = (T)(img)(_p10##x,_p7##y,z,c), I[67] = (T)(img)(_p9##x,_p7##y,z,c), I[68] = (T)(img)(_p8##x,_p7##y,z,c), I[69] = (T)(img)(_p7##x,_p7##y,z,c), I[70] = (T)(img)(_p6##x,_p7##y,z,c), I[71] = (T)(img)(_p5##x,_p7##y,z,c), I[72] = (T)(img)(_p4##x,_p7##y,z,c), I[73] = (T)(img)(_p3##x,_p7##y,z,c), I[74] = (T)(img)(_p2##x,_p7##y,z,c), I[75] = (T)(img)(_p1##x,_p7##y,z,c), I[76] = (T)(img)(x,_p7##y,z,c), I[77] = (T)(img)(_n1##x,_p7##y,z,c), I[78] = (T)(img)(_n2##x,_p7##y,z,c), I[79] = (T)(img)(_n3##x,_p7##y,z,c), I[80] = (T)(img)(_n4##x,_p7##y,z,c), I[81] = (T)(img)(_n5##x,_p7##y,z,c), I[82] = (T)(img)(_n6##x,_p7##y,z,c), I[83] = (T)(img)(_n7##x,_p7##y,z,c), I[84] = (T)(img)(_n8##x,_p7##y,z,c), I[85] = (T)(img)(_n9##x,_p7##y,z,c), I[86] = (T)(img)(_n10##x,_p7##y,z,c), I[87] = (T)(img)(_n11##x,_p7##y,z,c), \ + I[88] = (T)(img)(_p10##x,_p6##y,z,c), I[89] = (T)(img)(_p9##x,_p6##y,z,c), I[90] = (T)(img)(_p8##x,_p6##y,z,c), I[91] = (T)(img)(_p7##x,_p6##y,z,c), I[92] = (T)(img)(_p6##x,_p6##y,z,c), I[93] = (T)(img)(_p5##x,_p6##y,z,c), I[94] = (T)(img)(_p4##x,_p6##y,z,c), I[95] = (T)(img)(_p3##x,_p6##y,z,c), I[96] = (T)(img)(_p2##x,_p6##y,z,c), I[97] = (T)(img)(_p1##x,_p6##y,z,c), I[98] = (T)(img)(x,_p6##y,z,c), I[99] = (T)(img)(_n1##x,_p6##y,z,c), I[100] = (T)(img)(_n2##x,_p6##y,z,c), I[101] = (T)(img)(_n3##x,_p6##y,z,c), I[102] = (T)(img)(_n4##x,_p6##y,z,c), I[103] = (T)(img)(_n5##x,_p6##y,z,c), I[104] = (T)(img)(_n6##x,_p6##y,z,c), I[105] = (T)(img)(_n7##x,_p6##y,z,c), I[106] = (T)(img)(_n8##x,_p6##y,z,c), I[107] = (T)(img)(_n9##x,_p6##y,z,c), I[108] = (T)(img)(_n10##x,_p6##y,z,c), I[109] = (T)(img)(_n11##x,_p6##y,z,c), \ + I[110] = (T)(img)(_p10##x,_p5##y,z,c), I[111] = (T)(img)(_p9##x,_p5##y,z,c), I[112] = (T)(img)(_p8##x,_p5##y,z,c), I[113] = (T)(img)(_p7##x,_p5##y,z,c), I[114] = (T)(img)(_p6##x,_p5##y,z,c), I[115] = (T)(img)(_p5##x,_p5##y,z,c), I[116] = (T)(img)(_p4##x,_p5##y,z,c), I[117] = (T)(img)(_p3##x,_p5##y,z,c), I[118] = (T)(img)(_p2##x,_p5##y,z,c), I[119] = (T)(img)(_p1##x,_p5##y,z,c), I[120] = (T)(img)(x,_p5##y,z,c), I[121] = (T)(img)(_n1##x,_p5##y,z,c), I[122] = (T)(img)(_n2##x,_p5##y,z,c), I[123] = (T)(img)(_n3##x,_p5##y,z,c), I[124] = (T)(img)(_n4##x,_p5##y,z,c), I[125] = (T)(img)(_n5##x,_p5##y,z,c), I[126] = (T)(img)(_n6##x,_p5##y,z,c), I[127] = (T)(img)(_n7##x,_p5##y,z,c), I[128] = (T)(img)(_n8##x,_p5##y,z,c), I[129] = (T)(img)(_n9##x,_p5##y,z,c), I[130] = (T)(img)(_n10##x,_p5##y,z,c), I[131] = (T)(img)(_n11##x,_p5##y,z,c), \ + I[132] = (T)(img)(_p10##x,_p4##y,z,c), I[133] = (T)(img)(_p9##x,_p4##y,z,c), I[134] = (T)(img)(_p8##x,_p4##y,z,c), I[135] = (T)(img)(_p7##x,_p4##y,z,c), I[136] = (T)(img)(_p6##x,_p4##y,z,c), I[137] = (T)(img)(_p5##x,_p4##y,z,c), I[138] = (T)(img)(_p4##x,_p4##y,z,c), I[139] = (T)(img)(_p3##x,_p4##y,z,c), I[140] = (T)(img)(_p2##x,_p4##y,z,c), I[141] = (T)(img)(_p1##x,_p4##y,z,c), I[142] = (T)(img)(x,_p4##y,z,c), I[143] = (T)(img)(_n1##x,_p4##y,z,c), I[144] = (T)(img)(_n2##x,_p4##y,z,c), I[145] = (T)(img)(_n3##x,_p4##y,z,c), I[146] = (T)(img)(_n4##x,_p4##y,z,c), I[147] = (T)(img)(_n5##x,_p4##y,z,c), I[148] = (T)(img)(_n6##x,_p4##y,z,c), I[149] = (T)(img)(_n7##x,_p4##y,z,c), I[150] = (T)(img)(_n8##x,_p4##y,z,c), I[151] = (T)(img)(_n9##x,_p4##y,z,c), I[152] = (T)(img)(_n10##x,_p4##y,z,c), I[153] = (T)(img)(_n11##x,_p4##y,z,c), \ + I[154] = (T)(img)(_p10##x,_p3##y,z,c), I[155] = (T)(img)(_p9##x,_p3##y,z,c), I[156] = (T)(img)(_p8##x,_p3##y,z,c), I[157] = (T)(img)(_p7##x,_p3##y,z,c), I[158] = (T)(img)(_p6##x,_p3##y,z,c), I[159] = (T)(img)(_p5##x,_p3##y,z,c), I[160] = (T)(img)(_p4##x,_p3##y,z,c), I[161] = (T)(img)(_p3##x,_p3##y,z,c), I[162] = (T)(img)(_p2##x,_p3##y,z,c), I[163] = (T)(img)(_p1##x,_p3##y,z,c), I[164] = (T)(img)(x,_p3##y,z,c), I[165] = (T)(img)(_n1##x,_p3##y,z,c), I[166] = (T)(img)(_n2##x,_p3##y,z,c), I[167] = (T)(img)(_n3##x,_p3##y,z,c), I[168] = (T)(img)(_n4##x,_p3##y,z,c), I[169] = (T)(img)(_n5##x,_p3##y,z,c), I[170] = (T)(img)(_n6##x,_p3##y,z,c), I[171] = (T)(img)(_n7##x,_p3##y,z,c), I[172] = (T)(img)(_n8##x,_p3##y,z,c), I[173] = (T)(img)(_n9##x,_p3##y,z,c), I[174] = (T)(img)(_n10##x,_p3##y,z,c), I[175] = (T)(img)(_n11##x,_p3##y,z,c), \ + I[176] = (T)(img)(_p10##x,_p2##y,z,c), I[177] = (T)(img)(_p9##x,_p2##y,z,c), I[178] = (T)(img)(_p8##x,_p2##y,z,c), I[179] = (T)(img)(_p7##x,_p2##y,z,c), I[180] = (T)(img)(_p6##x,_p2##y,z,c), I[181] = (T)(img)(_p5##x,_p2##y,z,c), I[182] = (T)(img)(_p4##x,_p2##y,z,c), I[183] = (T)(img)(_p3##x,_p2##y,z,c), I[184] = (T)(img)(_p2##x,_p2##y,z,c), I[185] = (T)(img)(_p1##x,_p2##y,z,c), I[186] = (T)(img)(x,_p2##y,z,c), I[187] = (T)(img)(_n1##x,_p2##y,z,c), I[188] = (T)(img)(_n2##x,_p2##y,z,c), I[189] = (T)(img)(_n3##x,_p2##y,z,c), I[190] = (T)(img)(_n4##x,_p2##y,z,c), I[191] = (T)(img)(_n5##x,_p2##y,z,c), I[192] = (T)(img)(_n6##x,_p2##y,z,c), I[193] = (T)(img)(_n7##x,_p2##y,z,c), I[194] = (T)(img)(_n8##x,_p2##y,z,c), I[195] = (T)(img)(_n9##x,_p2##y,z,c), I[196] = (T)(img)(_n10##x,_p2##y,z,c), I[197] = (T)(img)(_n11##x,_p2##y,z,c), \ + I[198] = (T)(img)(_p10##x,_p1##y,z,c), I[199] = (T)(img)(_p9##x,_p1##y,z,c), I[200] = (T)(img)(_p8##x,_p1##y,z,c), I[201] = (T)(img)(_p7##x,_p1##y,z,c), I[202] = (T)(img)(_p6##x,_p1##y,z,c), I[203] = (T)(img)(_p5##x,_p1##y,z,c), I[204] = (T)(img)(_p4##x,_p1##y,z,c), I[205] = (T)(img)(_p3##x,_p1##y,z,c), I[206] = (T)(img)(_p2##x,_p1##y,z,c), I[207] = (T)(img)(_p1##x,_p1##y,z,c), I[208] = (T)(img)(x,_p1##y,z,c), I[209] = (T)(img)(_n1##x,_p1##y,z,c), I[210] = (T)(img)(_n2##x,_p1##y,z,c), I[211] = (T)(img)(_n3##x,_p1##y,z,c), I[212] = (T)(img)(_n4##x,_p1##y,z,c), I[213] = (T)(img)(_n5##x,_p1##y,z,c), I[214] = (T)(img)(_n6##x,_p1##y,z,c), I[215] = (T)(img)(_n7##x,_p1##y,z,c), I[216] = (T)(img)(_n8##x,_p1##y,z,c), I[217] = (T)(img)(_n9##x,_p1##y,z,c), I[218] = (T)(img)(_n10##x,_p1##y,z,c), I[219] = (T)(img)(_n11##x,_p1##y,z,c), \ + I[220] = (T)(img)(_p10##x,y,z,c), I[221] = (T)(img)(_p9##x,y,z,c), I[222] = (T)(img)(_p8##x,y,z,c), I[223] = (T)(img)(_p7##x,y,z,c), I[224] = (T)(img)(_p6##x,y,z,c), I[225] = (T)(img)(_p5##x,y,z,c), I[226] = (T)(img)(_p4##x,y,z,c), I[227] = (T)(img)(_p3##x,y,z,c), I[228] = (T)(img)(_p2##x,y,z,c), I[229] = (T)(img)(_p1##x,y,z,c), I[230] = (T)(img)(x,y,z,c), I[231] = (T)(img)(_n1##x,y,z,c), I[232] = (T)(img)(_n2##x,y,z,c), I[233] = (T)(img)(_n3##x,y,z,c), I[234] = (T)(img)(_n4##x,y,z,c), I[235] = (T)(img)(_n5##x,y,z,c), I[236] = (T)(img)(_n6##x,y,z,c), I[237] = (T)(img)(_n7##x,y,z,c), I[238] = (T)(img)(_n8##x,y,z,c), I[239] = (T)(img)(_n9##x,y,z,c), I[240] = (T)(img)(_n10##x,y,z,c), I[241] = (T)(img)(_n11##x,y,z,c), \ + I[242] = (T)(img)(_p10##x,_n1##y,z,c), I[243] = (T)(img)(_p9##x,_n1##y,z,c), I[244] = (T)(img)(_p8##x,_n1##y,z,c), I[245] = (T)(img)(_p7##x,_n1##y,z,c), I[246] = (T)(img)(_p6##x,_n1##y,z,c), I[247] = (T)(img)(_p5##x,_n1##y,z,c), I[248] = (T)(img)(_p4##x,_n1##y,z,c), I[249] = (T)(img)(_p3##x,_n1##y,z,c), I[250] = (T)(img)(_p2##x,_n1##y,z,c), I[251] = (T)(img)(_p1##x,_n1##y,z,c), I[252] = (T)(img)(x,_n1##y,z,c), I[253] = (T)(img)(_n1##x,_n1##y,z,c), I[254] = (T)(img)(_n2##x,_n1##y,z,c), I[255] = (T)(img)(_n3##x,_n1##y,z,c), I[256] = (T)(img)(_n4##x,_n1##y,z,c), I[257] = (T)(img)(_n5##x,_n1##y,z,c), I[258] = (T)(img)(_n6##x,_n1##y,z,c), I[259] = (T)(img)(_n7##x,_n1##y,z,c), I[260] = (T)(img)(_n8##x,_n1##y,z,c), I[261] = (T)(img)(_n9##x,_n1##y,z,c), I[262] = (T)(img)(_n10##x,_n1##y,z,c), I[263] = (T)(img)(_n11##x,_n1##y,z,c), \ + I[264] = (T)(img)(_p10##x,_n2##y,z,c), I[265] = (T)(img)(_p9##x,_n2##y,z,c), I[266] = (T)(img)(_p8##x,_n2##y,z,c), I[267] = (T)(img)(_p7##x,_n2##y,z,c), I[268] = (T)(img)(_p6##x,_n2##y,z,c), I[269] = (T)(img)(_p5##x,_n2##y,z,c), I[270] = (T)(img)(_p4##x,_n2##y,z,c), I[271] = (T)(img)(_p3##x,_n2##y,z,c), I[272] = (T)(img)(_p2##x,_n2##y,z,c), I[273] = (T)(img)(_p1##x,_n2##y,z,c), I[274] = (T)(img)(x,_n2##y,z,c), I[275] = (T)(img)(_n1##x,_n2##y,z,c), I[276] = (T)(img)(_n2##x,_n2##y,z,c), I[277] = (T)(img)(_n3##x,_n2##y,z,c), I[278] = (T)(img)(_n4##x,_n2##y,z,c), I[279] = (T)(img)(_n5##x,_n2##y,z,c), I[280] = (T)(img)(_n6##x,_n2##y,z,c), I[281] = (T)(img)(_n7##x,_n2##y,z,c), I[282] = (T)(img)(_n8##x,_n2##y,z,c), I[283] = (T)(img)(_n9##x,_n2##y,z,c), I[284] = (T)(img)(_n10##x,_n2##y,z,c), I[285] = (T)(img)(_n11##x,_n2##y,z,c), \ + I[286] = (T)(img)(_p10##x,_n3##y,z,c), I[287] = (T)(img)(_p9##x,_n3##y,z,c), I[288] = (T)(img)(_p8##x,_n3##y,z,c), I[289] = (T)(img)(_p7##x,_n3##y,z,c), I[290] = (T)(img)(_p6##x,_n3##y,z,c), I[291] = (T)(img)(_p5##x,_n3##y,z,c), I[292] = (T)(img)(_p4##x,_n3##y,z,c), I[293] = (T)(img)(_p3##x,_n3##y,z,c), I[294] = (T)(img)(_p2##x,_n3##y,z,c), I[295] = (T)(img)(_p1##x,_n3##y,z,c), I[296] = (T)(img)(x,_n3##y,z,c), I[297] = (T)(img)(_n1##x,_n3##y,z,c), I[298] = (T)(img)(_n2##x,_n3##y,z,c), I[299] = (T)(img)(_n3##x,_n3##y,z,c), I[300] = (T)(img)(_n4##x,_n3##y,z,c), I[301] = (T)(img)(_n5##x,_n3##y,z,c), I[302] = (T)(img)(_n6##x,_n3##y,z,c), I[303] = (T)(img)(_n7##x,_n3##y,z,c), I[304] = (T)(img)(_n8##x,_n3##y,z,c), I[305] = (T)(img)(_n9##x,_n3##y,z,c), I[306] = (T)(img)(_n10##x,_n3##y,z,c), I[307] = (T)(img)(_n11##x,_n3##y,z,c), \ + I[308] = (T)(img)(_p10##x,_n4##y,z,c), I[309] = (T)(img)(_p9##x,_n4##y,z,c), I[310] = (T)(img)(_p8##x,_n4##y,z,c), I[311] = (T)(img)(_p7##x,_n4##y,z,c), I[312] = (T)(img)(_p6##x,_n4##y,z,c), I[313] = (T)(img)(_p5##x,_n4##y,z,c), I[314] = (T)(img)(_p4##x,_n4##y,z,c), I[315] = (T)(img)(_p3##x,_n4##y,z,c), I[316] = (T)(img)(_p2##x,_n4##y,z,c), I[317] = (T)(img)(_p1##x,_n4##y,z,c), I[318] = (T)(img)(x,_n4##y,z,c), I[319] = (T)(img)(_n1##x,_n4##y,z,c), I[320] = (T)(img)(_n2##x,_n4##y,z,c), I[321] = (T)(img)(_n3##x,_n4##y,z,c), I[322] = (T)(img)(_n4##x,_n4##y,z,c), I[323] = (T)(img)(_n5##x,_n4##y,z,c), I[324] = (T)(img)(_n6##x,_n4##y,z,c), I[325] = (T)(img)(_n7##x,_n4##y,z,c), I[326] = (T)(img)(_n8##x,_n4##y,z,c), I[327] = (T)(img)(_n9##x,_n4##y,z,c), I[328] = (T)(img)(_n10##x,_n4##y,z,c), I[329] = (T)(img)(_n11##x,_n4##y,z,c), \ + I[330] = (T)(img)(_p10##x,_n5##y,z,c), I[331] = (T)(img)(_p9##x,_n5##y,z,c), I[332] = (T)(img)(_p8##x,_n5##y,z,c), I[333] = (T)(img)(_p7##x,_n5##y,z,c), I[334] = (T)(img)(_p6##x,_n5##y,z,c), I[335] = (T)(img)(_p5##x,_n5##y,z,c), I[336] = (T)(img)(_p4##x,_n5##y,z,c), I[337] = (T)(img)(_p3##x,_n5##y,z,c), I[338] = (T)(img)(_p2##x,_n5##y,z,c), I[339] = (T)(img)(_p1##x,_n5##y,z,c), I[340] = (T)(img)(x,_n5##y,z,c), I[341] = (T)(img)(_n1##x,_n5##y,z,c), I[342] = (T)(img)(_n2##x,_n5##y,z,c), I[343] = (T)(img)(_n3##x,_n5##y,z,c), I[344] = (T)(img)(_n4##x,_n5##y,z,c), I[345] = (T)(img)(_n5##x,_n5##y,z,c), I[346] = (T)(img)(_n6##x,_n5##y,z,c), I[347] = (T)(img)(_n7##x,_n5##y,z,c), I[348] = (T)(img)(_n8##x,_n5##y,z,c), I[349] = (T)(img)(_n9##x,_n5##y,z,c), I[350] = (T)(img)(_n10##x,_n5##y,z,c), I[351] = (T)(img)(_n11##x,_n5##y,z,c), \ + I[352] = (T)(img)(_p10##x,_n6##y,z,c), I[353] = (T)(img)(_p9##x,_n6##y,z,c), I[354] = (T)(img)(_p8##x,_n6##y,z,c), I[355] = (T)(img)(_p7##x,_n6##y,z,c), I[356] = (T)(img)(_p6##x,_n6##y,z,c), I[357] = (T)(img)(_p5##x,_n6##y,z,c), I[358] = (T)(img)(_p4##x,_n6##y,z,c), I[359] = (T)(img)(_p3##x,_n6##y,z,c), I[360] = (T)(img)(_p2##x,_n6##y,z,c), I[361] = (T)(img)(_p1##x,_n6##y,z,c), I[362] = (T)(img)(x,_n6##y,z,c), I[363] = (T)(img)(_n1##x,_n6##y,z,c), I[364] = (T)(img)(_n2##x,_n6##y,z,c), I[365] = (T)(img)(_n3##x,_n6##y,z,c), I[366] = (T)(img)(_n4##x,_n6##y,z,c), I[367] = (T)(img)(_n5##x,_n6##y,z,c), I[368] = (T)(img)(_n6##x,_n6##y,z,c), I[369] = (T)(img)(_n7##x,_n6##y,z,c), I[370] = (T)(img)(_n8##x,_n6##y,z,c), I[371] = (T)(img)(_n9##x,_n6##y,z,c), I[372] = (T)(img)(_n10##x,_n6##y,z,c), I[373] = (T)(img)(_n11##x,_n6##y,z,c), \ + I[374] = (T)(img)(_p10##x,_n7##y,z,c), I[375] = (T)(img)(_p9##x,_n7##y,z,c), I[376] = (T)(img)(_p8##x,_n7##y,z,c), I[377] = (T)(img)(_p7##x,_n7##y,z,c), I[378] = (T)(img)(_p6##x,_n7##y,z,c), I[379] = (T)(img)(_p5##x,_n7##y,z,c), I[380] = (T)(img)(_p4##x,_n7##y,z,c), I[381] = (T)(img)(_p3##x,_n7##y,z,c), I[382] = (T)(img)(_p2##x,_n7##y,z,c), I[383] = (T)(img)(_p1##x,_n7##y,z,c), I[384] = (T)(img)(x,_n7##y,z,c), I[385] = (T)(img)(_n1##x,_n7##y,z,c), I[386] = (T)(img)(_n2##x,_n7##y,z,c), I[387] = (T)(img)(_n3##x,_n7##y,z,c), I[388] = (T)(img)(_n4##x,_n7##y,z,c), I[389] = (T)(img)(_n5##x,_n7##y,z,c), I[390] = (T)(img)(_n6##x,_n7##y,z,c), I[391] = (T)(img)(_n7##x,_n7##y,z,c), I[392] = (T)(img)(_n8##x,_n7##y,z,c), I[393] = (T)(img)(_n9##x,_n7##y,z,c), I[394] = (T)(img)(_n10##x,_n7##y,z,c), I[395] = (T)(img)(_n11##x,_n7##y,z,c), \ + I[396] = (T)(img)(_p10##x,_n8##y,z,c), I[397] = (T)(img)(_p9##x,_n8##y,z,c), I[398] = (T)(img)(_p8##x,_n8##y,z,c), I[399] = (T)(img)(_p7##x,_n8##y,z,c), I[400] = (T)(img)(_p6##x,_n8##y,z,c), I[401] = (T)(img)(_p5##x,_n8##y,z,c), I[402] = (T)(img)(_p4##x,_n8##y,z,c), I[403] = (T)(img)(_p3##x,_n8##y,z,c), I[404] = (T)(img)(_p2##x,_n8##y,z,c), I[405] = (T)(img)(_p1##x,_n8##y,z,c), I[406] = (T)(img)(x,_n8##y,z,c), I[407] = (T)(img)(_n1##x,_n8##y,z,c), I[408] = (T)(img)(_n2##x,_n8##y,z,c), I[409] = (T)(img)(_n3##x,_n8##y,z,c), I[410] = (T)(img)(_n4##x,_n8##y,z,c), I[411] = (T)(img)(_n5##x,_n8##y,z,c), I[412] = (T)(img)(_n6##x,_n8##y,z,c), I[413] = (T)(img)(_n7##x,_n8##y,z,c), I[414] = (T)(img)(_n8##x,_n8##y,z,c), I[415] = (T)(img)(_n9##x,_n8##y,z,c), I[416] = (T)(img)(_n10##x,_n8##y,z,c), I[417] = (T)(img)(_n11##x,_n8##y,z,c), \ + I[418] = (T)(img)(_p10##x,_n9##y,z,c), I[419] = (T)(img)(_p9##x,_n9##y,z,c), I[420] = (T)(img)(_p8##x,_n9##y,z,c), I[421] = (T)(img)(_p7##x,_n9##y,z,c), I[422] = (T)(img)(_p6##x,_n9##y,z,c), I[423] = (T)(img)(_p5##x,_n9##y,z,c), I[424] = (T)(img)(_p4##x,_n9##y,z,c), I[425] = (T)(img)(_p3##x,_n9##y,z,c), I[426] = (T)(img)(_p2##x,_n9##y,z,c), I[427] = (T)(img)(_p1##x,_n9##y,z,c), I[428] = (T)(img)(x,_n9##y,z,c), I[429] = (T)(img)(_n1##x,_n9##y,z,c), I[430] = (T)(img)(_n2##x,_n9##y,z,c), I[431] = (T)(img)(_n3##x,_n9##y,z,c), I[432] = (T)(img)(_n4##x,_n9##y,z,c), I[433] = (T)(img)(_n5##x,_n9##y,z,c), I[434] = (T)(img)(_n6##x,_n9##y,z,c), I[435] = (T)(img)(_n7##x,_n9##y,z,c), I[436] = (T)(img)(_n8##x,_n9##y,z,c), I[437] = (T)(img)(_n9##x,_n9##y,z,c), I[438] = (T)(img)(_n10##x,_n9##y,z,c), I[439] = (T)(img)(_n11##x,_n9##y,z,c), \ + I[440] = (T)(img)(_p10##x,_n10##y,z,c), I[441] = (T)(img)(_p9##x,_n10##y,z,c), I[442] = (T)(img)(_p8##x,_n10##y,z,c), I[443] = (T)(img)(_p7##x,_n10##y,z,c), I[444] = (T)(img)(_p6##x,_n10##y,z,c), I[445] = (T)(img)(_p5##x,_n10##y,z,c), I[446] = (T)(img)(_p4##x,_n10##y,z,c), I[447] = (T)(img)(_p3##x,_n10##y,z,c), I[448] = (T)(img)(_p2##x,_n10##y,z,c), I[449] = (T)(img)(_p1##x,_n10##y,z,c), I[450] = (T)(img)(x,_n10##y,z,c), I[451] = (T)(img)(_n1##x,_n10##y,z,c), I[452] = (T)(img)(_n2##x,_n10##y,z,c), I[453] = (T)(img)(_n3##x,_n10##y,z,c), I[454] = (T)(img)(_n4##x,_n10##y,z,c), I[455] = (T)(img)(_n5##x,_n10##y,z,c), I[456] = (T)(img)(_n6##x,_n10##y,z,c), I[457] = (T)(img)(_n7##x,_n10##y,z,c), I[458] = (T)(img)(_n8##x,_n10##y,z,c), I[459] = (T)(img)(_n9##x,_n10##y,z,c), I[460] = (T)(img)(_n10##x,_n10##y,z,c), I[461] = (T)(img)(_n11##x,_n10##y,z,c), \ + I[462] = (T)(img)(_p10##x,_n11##y,z,c), I[463] = (T)(img)(_p9##x,_n11##y,z,c), I[464] = (T)(img)(_p8##x,_n11##y,z,c), I[465] = (T)(img)(_p7##x,_n11##y,z,c), I[466] = (T)(img)(_p6##x,_n11##y,z,c), I[467] = (T)(img)(_p5##x,_n11##y,z,c), I[468] = (T)(img)(_p4##x,_n11##y,z,c), I[469] = (T)(img)(_p3##x,_n11##y,z,c), I[470] = (T)(img)(_p2##x,_n11##y,z,c), I[471] = (T)(img)(_p1##x,_n11##y,z,c), I[472] = (T)(img)(x,_n11##y,z,c), I[473] = (T)(img)(_n1##x,_n11##y,z,c), I[474] = (T)(img)(_n2##x,_n11##y,z,c), I[475] = (T)(img)(_n3##x,_n11##y,z,c), I[476] = (T)(img)(_n4##x,_n11##y,z,c), I[477] = (T)(img)(_n5##x,_n11##y,z,c), I[478] = (T)(img)(_n6##x,_n11##y,z,c), I[479] = (T)(img)(_n7##x,_n11##y,z,c), I[480] = (T)(img)(_n8##x,_n11##y,z,c), I[481] = (T)(img)(_n9##x,_n11##y,z,c), I[482] = (T)(img)(_n10##x,_n11##y,z,c), I[483] = (T)(img)(_n11##x,_n11##y,z,c); + +// Define 23x23 loop macros +//------------------------- +#define cimg_for23(bound,i) for (int i = 0, \ + _p11##i = 0, _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11; \ + _n11##i<(int)(bound) || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i) + +#define cimg_for23X(img,x) cimg_for23((img)._width,x) +#define cimg_for23Y(img,y) cimg_for23((img)._height,y) +#define cimg_for23Z(img,z) cimg_for23((img)._depth,z) +#define cimg_for23C(img,c) cimg_for23((img)._spectrum,c) +#define cimg_for23XY(img,x,y) cimg_for23Y(img,y) cimg_for23X(img,x) +#define cimg_for23XZ(img,x,z) cimg_for23Z(img,z) cimg_for23X(img,x) +#define cimg_for23XC(img,x,c) cimg_for23C(img,c) cimg_for23X(img,x) +#define cimg_for23YZ(img,y,z) cimg_for23Z(img,z) cimg_for23Y(img,y) +#define cimg_for23YC(img,y,c) cimg_for23C(img,c) cimg_for23Y(img,y) +#define cimg_for23ZC(img,z,c) cimg_for23C(img,c) cimg_for23Z(img,z) +#define cimg_for23XYZ(img,x,y,z) cimg_for23Z(img,z) cimg_for23XY(img,x,y) +#define cimg_for23XZC(img,x,z,c) cimg_for23C(img,c) cimg_for23XZ(img,x,z) +#define cimg_for23YZC(img,y,z,c) cimg_for23C(img,c) cimg_for23YZ(img,y,z) +#define cimg_for23XYZC(img,x,y,z,c) cimg_for23C(img,c) cimg_for23XYZ(img,x,y,z) + +#define cimg_for_in23(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p11##i = i - 11<0?0:i - 11, \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11; \ + i<=(int)(i1) && (_n11##i<(int)(bound) || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i) + +#define cimg_for_in23X(img,x0,x1,x) cimg_for_in23((img)._width,x0,x1,x) +#define cimg_for_in23Y(img,y0,y1,y) cimg_for_in23((img)._height,y0,y1,y) +#define cimg_for_in23Z(img,z0,z1,z) cimg_for_in23((img)._depth,z0,z1,z) +#define cimg_for_in23C(img,c0,c1,c) cimg_for_in23((img)._spectrum,c0,c1,c) +#define cimg_for_in23XY(img,x0,y0,x1,y1,x,y) cimg_for_in23Y(img,y0,y1,y) cimg_for_in23X(img,x0,x1,x) +#define cimg_for_in23XZ(img,x0,z0,x1,z1,x,z) cimg_for_in23Z(img,z0,z1,z) cimg_for_in23X(img,x0,x1,x) +#define cimg_for_in23XC(img,x0,c0,x1,c1,x,c) cimg_for_in23C(img,c0,c1,c) cimg_for_in23X(img,x0,x1,x) +#define cimg_for_in23YZ(img,y0,z0,y1,z1,y,z) cimg_for_in23Z(img,z0,z1,z) cimg_for_in23Y(img,y0,y1,y) +#define cimg_for_in23YC(img,y0,c0,y1,c1,y,c) cimg_for_in23C(img,c0,c1,c) cimg_for_in23Y(img,y0,y1,y) +#define cimg_for_in23ZC(img,z0,c0,z1,c1,z,c) cimg_for_in23C(img,c0,c1,c) cimg_for_in23Z(img,z0,z1,z) +#define cimg_for_in23XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in23Z(img,z0,z1,z) cimg_for_in23XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in23XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in23C(img,c0,c1,c) cimg_for_in23XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in23YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in23C(img,c0,c1,c) cimg_for_in23YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in23XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in23C(img,c0,c1,c) cimg_for_in23XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for23x23(img,x,y,z,c,I,T) \ + cimg_for23((img)._height,y) for (int x = 0, \ + _p11##x = 0, _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = I[11] = (T)(img)(0,_p11##y,z,c)), \ + (I[23] = I[24] = I[25] = I[26] = I[27] = I[28] = I[29] = I[30] = I[31] = I[32] = I[33] = I[34] = (T)(img)(0,_p10##y,z,c)), \ + (I[46] = I[47] = I[48] = I[49] = I[50] = I[51] = I[52] = I[53] = I[54] = I[55] = I[56] = I[57] = (T)(img)(0,_p9##y,z,c)), \ + (I[69] = I[70] = I[71] = I[72] = I[73] = I[74] = I[75] = I[76] = I[77] = I[78] = I[79] = I[80] = (T)(img)(0,_p8##y,z,c)), \ + (I[92] = I[93] = I[94] = I[95] = I[96] = I[97] = I[98] = I[99] = I[100] = I[101] = I[102] = I[103] = (T)(img)(0,_p7##y,z,c)), \ + (I[115] = I[116] = I[117] = I[118] = I[119] = I[120] = I[121] = I[122] = I[123] = I[124] = I[125] = I[126] = (T)(img)(0,_p6##y,z,c)), \ + (I[138] = I[139] = I[140] = I[141] = I[142] = I[143] = I[144] = I[145] = I[146] = I[147] = I[148] = I[149] = (T)(img)(0,_p5##y,z,c)), \ + (I[161] = I[162] = I[163] = I[164] = I[165] = I[166] = I[167] = I[168] = I[169] = I[170] = I[171] = I[172] = (T)(img)(0,_p4##y,z,c)), \ + (I[184] = I[185] = I[186] = I[187] = I[188] = I[189] = I[190] = I[191] = I[192] = I[193] = I[194] = I[195] = (T)(img)(0,_p3##y,z,c)), \ + (I[207] = I[208] = I[209] = I[210] = I[211] = I[212] = I[213] = I[214] = I[215] = I[216] = I[217] = I[218] = (T)(img)(0,_p2##y,z,c)), \ + (I[230] = I[231] = I[232] = I[233] = I[234] = I[235] = I[236] = I[237] = I[238] = I[239] = I[240] = I[241] = (T)(img)(0,_p1##y,z,c)), \ + (I[253] = I[254] = I[255] = I[256] = I[257] = I[258] = I[259] = I[260] = I[261] = I[262] = I[263] = I[264] = (T)(img)(0,y,z,c)), \ + (I[276] = I[277] = I[278] = I[279] = I[280] = I[281] = I[282] = I[283] = I[284] = I[285] = I[286] = I[287] = (T)(img)(0,_n1##y,z,c)), \ + (I[299] = I[300] = I[301] = I[302] = I[303] = I[304] = I[305] = I[306] = I[307] = I[308] = I[309] = I[310] = (T)(img)(0,_n2##y,z,c)), \ + (I[322] = I[323] = I[324] = I[325] = I[326] = I[327] = I[328] = I[329] = I[330] = I[331] = I[332] = I[333] = (T)(img)(0,_n3##y,z,c)), \ + (I[345] = I[346] = I[347] = I[348] = I[349] = I[350] = I[351] = I[352] = I[353] = I[354] = I[355] = I[356] = (T)(img)(0,_n4##y,z,c)), \ + (I[368] = I[369] = I[370] = I[371] = I[372] = I[373] = I[374] = I[375] = I[376] = I[377] = I[378] = I[379] = (T)(img)(0,_n5##y,z,c)), \ + (I[391] = I[392] = I[393] = I[394] = I[395] = I[396] = I[397] = I[398] = I[399] = I[400] = I[401] = I[402] = (T)(img)(0,_n6##y,z,c)), \ + (I[414] = I[415] = I[416] = I[417] = I[418] = I[419] = I[420] = I[421] = I[422] = I[423] = I[424] = I[425] = (T)(img)(0,_n7##y,z,c)), \ + (I[437] = I[438] = I[439] = I[440] = I[441] = I[442] = I[443] = I[444] = I[445] = I[446] = I[447] = I[448] = (T)(img)(0,_n8##y,z,c)), \ + (I[460] = I[461] = I[462] = I[463] = I[464] = I[465] = I[466] = I[467] = I[468] = I[469] = I[470] = I[471] = (T)(img)(0,_n9##y,z,c)), \ + (I[483] = I[484] = I[485] = I[486] = I[487] = I[488] = I[489] = I[490] = I[491] = I[492] = I[493] = I[494] = (T)(img)(0,_n10##y,z,c)), \ + (I[506] = I[507] = I[508] = I[509] = I[510] = I[511] = I[512] = I[513] = I[514] = I[515] = I[516] = I[517] = (T)(img)(0,_n11##y,z,c)), \ + (I[12] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[35] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[58] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[81] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[104] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[127] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[150] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[173] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[196] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[219] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[242] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[265] = (T)(img)(_n1##x,y,z,c)), \ + (I[288] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[311] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[334] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[357] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[380] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[403] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[426] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[449] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[472] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[495] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[518] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[13] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[36] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[59] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[82] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[105] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[128] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[151] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[174] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[197] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[220] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[243] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[266] = (T)(img)(_n2##x,y,z,c)), \ + (I[289] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[312] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[335] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[358] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[381] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[404] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[427] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[450] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[473] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[496] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[519] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[14] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[37] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[60] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[83] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[106] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[129] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[152] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[175] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[198] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[221] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[244] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[267] = (T)(img)(_n3##x,y,z,c)), \ + (I[290] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[313] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[336] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[359] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[382] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[405] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[428] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[451] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[474] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[497] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[520] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[15] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[38] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[61] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[84] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[107] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[130] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[153] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[176] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[199] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[222] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[245] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[268] = (T)(img)(_n4##x,y,z,c)), \ + (I[291] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[314] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[337] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[360] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[383] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[406] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[429] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[452] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[475] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[498] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[521] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[16] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[39] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[62] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[85] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[108] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[131] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[154] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[177] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[200] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[223] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[246] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[269] = (T)(img)(_n5##x,y,z,c)), \ + (I[292] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[315] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[338] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[361] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[384] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[407] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[430] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[453] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[476] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[499] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[522] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[17] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[40] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[63] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[86] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[109] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[132] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[155] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[178] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[201] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[224] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[247] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[270] = (T)(img)(_n6##x,y,z,c)), \ + (I[293] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[316] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[339] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[362] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[385] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[408] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[431] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[454] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[477] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[500] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[523] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[18] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[41] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[64] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[87] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[110] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[133] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[156] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[179] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[202] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[225] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[248] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[271] = (T)(img)(_n7##x,y,z,c)), \ + (I[294] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[317] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[340] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[363] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[386] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[409] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[432] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[455] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[478] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[501] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[524] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[19] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[42] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[65] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[88] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[111] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[134] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[157] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[180] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[203] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[226] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[249] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[272] = (T)(img)(_n8##x,y,z,c)), \ + (I[295] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[318] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[341] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[364] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[387] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[410] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[433] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[456] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[479] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[502] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[525] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[20] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[43] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[66] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[89] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[112] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[135] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[158] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[181] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[204] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[227] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[250] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[273] = (T)(img)(_n9##x,y,z,c)), \ + (I[296] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[319] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[342] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[365] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[388] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[411] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[434] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[457] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[480] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[503] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[526] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[21] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[44] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[67] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[90] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[113] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[136] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[159] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[182] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[205] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[228] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[251] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[274] = (T)(img)(_n10##x,y,z,c)), \ + (I[297] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[320] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[343] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[366] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[389] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[412] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[435] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[458] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[481] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[504] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[527] = (T)(img)(_n10##x,_n11##y,z,c)), \ + 11>=((img)._width)?(img).width() - 1:11); \ + (_n11##x<(img).width() && ( \ + (I[22] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[45] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[68] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[91] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[114] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[137] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[160] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[183] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[206] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[229] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[252] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[275] = (T)(img)(_n11##x,y,z,c)), \ + (I[298] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[321] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[344] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[367] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[390] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[413] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[436] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[459] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[482] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[505] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[528] = (T)(img)(_n11##x,_n11##y,z,c)),1)) || \ + _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], \ + I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], \ + I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], \ + I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], \ + I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], \ + I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], \ + I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], \ + I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], \ + I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], \ + I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], \ + I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], \ + I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], \ + I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], \ + I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], \ + I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], \ + I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], \ + I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], \ + I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], \ + I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], \ + I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], \ + I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], \ + I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], \ + I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], \ + _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x) + +#define cimg_for_in23x23(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in23((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p11##x = x - 11<0?0:x - 11, \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = (int)( \ + (I[0] = (T)(img)(_p11##x,_p11##y,z,c)), \ + (I[23] = (T)(img)(_p11##x,_p10##y,z,c)), \ + (I[46] = (T)(img)(_p11##x,_p9##y,z,c)), \ + (I[69] = (T)(img)(_p11##x,_p8##y,z,c)), \ + (I[92] = (T)(img)(_p11##x,_p7##y,z,c)), \ + (I[115] = (T)(img)(_p11##x,_p6##y,z,c)), \ + (I[138] = (T)(img)(_p11##x,_p5##y,z,c)), \ + (I[161] = (T)(img)(_p11##x,_p4##y,z,c)), \ + (I[184] = (T)(img)(_p11##x,_p3##y,z,c)), \ + (I[207] = (T)(img)(_p11##x,_p2##y,z,c)), \ + (I[230] = (T)(img)(_p11##x,_p1##y,z,c)), \ + (I[253] = (T)(img)(_p11##x,y,z,c)), \ + (I[276] = (T)(img)(_p11##x,_n1##y,z,c)), \ + (I[299] = (T)(img)(_p11##x,_n2##y,z,c)), \ + (I[322] = (T)(img)(_p11##x,_n3##y,z,c)), \ + (I[345] = (T)(img)(_p11##x,_n4##y,z,c)), \ + (I[368] = (T)(img)(_p11##x,_n5##y,z,c)), \ + (I[391] = (T)(img)(_p11##x,_n6##y,z,c)), \ + (I[414] = (T)(img)(_p11##x,_n7##y,z,c)), \ + (I[437] = (T)(img)(_p11##x,_n8##y,z,c)), \ + (I[460] = (T)(img)(_p11##x,_n9##y,z,c)), \ + (I[483] = (T)(img)(_p11##x,_n10##y,z,c)), \ + (I[506] = (T)(img)(_p11##x,_n11##y,z,c)), \ + (I[1] = (T)(img)(_p10##x,_p11##y,z,c)), \ + (I[24] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[47] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[70] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[93] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[116] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[139] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[162] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[185] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[208] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[231] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[254] = (T)(img)(_p10##x,y,z,c)), \ + (I[277] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[300] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[323] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[346] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[369] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[392] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[415] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[438] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[461] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[484] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[507] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[2] = (T)(img)(_p9##x,_p11##y,z,c)), \ + (I[25] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[48] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[71] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[94] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[117] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[140] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[163] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[186] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[209] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[232] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[255] = (T)(img)(_p9##x,y,z,c)), \ + (I[278] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[301] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[324] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[347] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[370] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[393] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[416] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[439] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[462] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[485] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[508] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[3] = (T)(img)(_p8##x,_p11##y,z,c)), \ + (I[26] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[49] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[72] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[95] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[118] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[141] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[164] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[187] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[210] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[233] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[256] = (T)(img)(_p8##x,y,z,c)), \ + (I[279] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[302] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[325] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[348] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[371] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[394] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[417] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[440] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[463] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[486] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[509] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[4] = (T)(img)(_p7##x,_p11##y,z,c)), \ + (I[27] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[50] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[73] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[96] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[119] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[142] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[165] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[188] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[211] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[234] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[257] = (T)(img)(_p7##x,y,z,c)), \ + (I[280] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[303] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[326] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[349] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[372] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[395] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[418] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[441] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[464] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[487] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[510] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[5] = (T)(img)(_p6##x,_p11##y,z,c)), \ + (I[28] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[51] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[74] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[97] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[120] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[143] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[166] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[189] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[212] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[235] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[258] = (T)(img)(_p6##x,y,z,c)), \ + (I[281] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[304] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[327] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[350] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[373] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[396] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[419] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[442] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[465] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[488] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[511] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[6] = (T)(img)(_p5##x,_p11##y,z,c)), \ + (I[29] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[52] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[75] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[98] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[121] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[144] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[167] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[190] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[213] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[236] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[259] = (T)(img)(_p5##x,y,z,c)), \ + (I[282] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[305] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[328] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[351] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[374] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[397] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[420] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[443] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[466] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[489] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[512] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[7] = (T)(img)(_p4##x,_p11##y,z,c)), \ + (I[30] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[53] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[76] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[99] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[122] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[145] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[168] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[191] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[214] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[237] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[260] = (T)(img)(_p4##x,y,z,c)), \ + (I[283] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[306] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[329] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[352] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[375] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[398] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[421] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[444] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[467] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[490] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[513] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[8] = (T)(img)(_p3##x,_p11##y,z,c)), \ + (I[31] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[54] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[77] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[100] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[123] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[146] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[169] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[192] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[215] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[238] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[261] = (T)(img)(_p3##x,y,z,c)), \ + (I[284] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[307] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[330] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[353] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[376] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[399] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[422] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[445] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[468] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[491] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[514] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[9] = (T)(img)(_p2##x,_p11##y,z,c)), \ + (I[32] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[55] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[78] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[101] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[124] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[147] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[170] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[193] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[216] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[239] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[262] = (T)(img)(_p2##x,y,z,c)), \ + (I[285] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[308] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[331] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[354] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[377] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[400] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[423] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[446] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[469] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[492] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[515] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[10] = (T)(img)(_p1##x,_p11##y,z,c)), \ + (I[33] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[56] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[79] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[102] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[125] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[148] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[171] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[194] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[217] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[240] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[263] = (T)(img)(_p1##x,y,z,c)), \ + (I[286] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[309] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[332] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[355] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[378] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[401] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[424] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[447] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[470] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[493] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[516] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[11] = (T)(img)(x,_p11##y,z,c)), \ + (I[34] = (T)(img)(x,_p10##y,z,c)), \ + (I[57] = (T)(img)(x,_p9##y,z,c)), \ + (I[80] = (T)(img)(x,_p8##y,z,c)), \ + (I[103] = (T)(img)(x,_p7##y,z,c)), \ + (I[126] = (T)(img)(x,_p6##y,z,c)), \ + (I[149] = (T)(img)(x,_p5##y,z,c)), \ + (I[172] = (T)(img)(x,_p4##y,z,c)), \ + (I[195] = (T)(img)(x,_p3##y,z,c)), \ + (I[218] = (T)(img)(x,_p2##y,z,c)), \ + (I[241] = (T)(img)(x,_p1##y,z,c)), \ + (I[264] = (T)(img)(x,y,z,c)), \ + (I[287] = (T)(img)(x,_n1##y,z,c)), \ + (I[310] = (T)(img)(x,_n2##y,z,c)), \ + (I[333] = (T)(img)(x,_n3##y,z,c)), \ + (I[356] = (T)(img)(x,_n4##y,z,c)), \ + (I[379] = (T)(img)(x,_n5##y,z,c)), \ + (I[402] = (T)(img)(x,_n6##y,z,c)), \ + (I[425] = (T)(img)(x,_n7##y,z,c)), \ + (I[448] = (T)(img)(x,_n8##y,z,c)), \ + (I[471] = (T)(img)(x,_n9##y,z,c)), \ + (I[494] = (T)(img)(x,_n10##y,z,c)), \ + (I[517] = (T)(img)(x,_n11##y,z,c)), \ + (I[12] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[35] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[58] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[81] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[104] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[127] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[150] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[173] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[196] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[219] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[242] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[265] = (T)(img)(_n1##x,y,z,c)), \ + (I[288] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[311] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[334] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[357] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[380] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[403] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[426] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[449] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[472] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[495] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[518] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[13] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[36] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[59] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[82] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[105] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[128] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[151] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[174] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[197] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[220] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[243] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[266] = (T)(img)(_n2##x,y,z,c)), \ + (I[289] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[312] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[335] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[358] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[381] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[404] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[427] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[450] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[473] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[496] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[519] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[14] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[37] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[60] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[83] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[106] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[129] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[152] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[175] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[198] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[221] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[244] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[267] = (T)(img)(_n3##x,y,z,c)), \ + (I[290] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[313] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[336] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[359] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[382] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[405] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[428] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[451] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[474] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[497] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[520] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[15] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[38] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[61] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[84] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[107] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[130] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[153] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[176] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[199] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[222] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[245] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[268] = (T)(img)(_n4##x,y,z,c)), \ + (I[291] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[314] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[337] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[360] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[383] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[406] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[429] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[452] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[475] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[498] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[521] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[16] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[39] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[62] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[85] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[108] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[131] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[154] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[177] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[200] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[223] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[246] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[269] = (T)(img)(_n5##x,y,z,c)), \ + (I[292] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[315] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[338] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[361] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[384] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[407] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[430] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[453] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[476] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[499] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[522] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[17] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[40] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[63] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[86] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[109] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[132] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[155] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[178] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[201] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[224] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[247] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[270] = (T)(img)(_n6##x,y,z,c)), \ + (I[293] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[316] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[339] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[362] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[385] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[408] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[431] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[454] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[477] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[500] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[523] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[18] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[41] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[64] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[87] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[110] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[133] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[156] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[179] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[202] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[225] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[248] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[271] = (T)(img)(_n7##x,y,z,c)), \ + (I[294] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[317] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[340] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[363] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[386] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[409] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[432] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[455] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[478] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[501] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[524] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[19] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[42] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[65] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[88] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[111] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[134] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[157] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[180] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[203] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[226] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[249] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[272] = (T)(img)(_n8##x,y,z,c)), \ + (I[295] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[318] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[341] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[364] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[387] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[410] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[433] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[456] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[479] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[502] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[525] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[20] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[43] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[66] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[89] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[112] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[135] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[158] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[181] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[204] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[227] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[250] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[273] = (T)(img)(_n9##x,y,z,c)), \ + (I[296] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[319] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[342] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[365] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[388] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[411] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[434] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[457] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[480] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[503] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[526] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[21] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[44] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[67] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[90] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[113] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[136] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[159] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[182] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[205] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[228] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[251] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[274] = (T)(img)(_n10##x,y,z,c)), \ + (I[297] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[320] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[343] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[366] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[389] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[412] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[435] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[458] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[481] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[504] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[527] = (T)(img)(_n10##x,_n11##y,z,c)), \ + x + 11>=(img).width()?(img).width() - 1:x + 11); \ + x<=(int)(x1) && ((_n11##x<(img).width() && ( \ + (I[22] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[45] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[68] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[91] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[114] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[137] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[160] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[183] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[206] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[229] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[252] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[275] = (T)(img)(_n11##x,y,z,c)), \ + (I[298] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[321] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[344] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[367] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[390] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[413] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[436] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[459] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[482] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[505] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[528] = (T)(img)(_n11##x,_n11##y,z,c)),1)) || \ + _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], \ + I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], \ + I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], \ + I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], \ + I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], \ + I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], \ + I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], \ + I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], \ + I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], \ + I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], \ + I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], \ + I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], \ + I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], \ + I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], \ + I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], \ + I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], \ + I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], \ + I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], \ + I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], \ + I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], \ + I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], \ + I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], \ + I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], \ + _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x) + +#define cimg_get23x23(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p11##x,_p11##y,z,c), I[1] = (T)(img)(_p10##x,_p11##y,z,c), I[2] = (T)(img)(_p9##x,_p11##y,z,c), I[3] = (T)(img)(_p8##x,_p11##y,z,c), I[4] = (T)(img)(_p7##x,_p11##y,z,c), I[5] = (T)(img)(_p6##x,_p11##y,z,c), I[6] = (T)(img)(_p5##x,_p11##y,z,c), I[7] = (T)(img)(_p4##x,_p11##y,z,c), I[8] = (T)(img)(_p3##x,_p11##y,z,c), I[9] = (T)(img)(_p2##x,_p11##y,z,c), I[10] = (T)(img)(_p1##x,_p11##y,z,c), I[11] = (T)(img)(x,_p11##y,z,c), I[12] = (T)(img)(_n1##x,_p11##y,z,c), I[13] = (T)(img)(_n2##x,_p11##y,z,c), I[14] = (T)(img)(_n3##x,_p11##y,z,c), I[15] = (T)(img)(_n4##x,_p11##y,z,c), I[16] = (T)(img)(_n5##x,_p11##y,z,c), I[17] = (T)(img)(_n6##x,_p11##y,z,c), I[18] = (T)(img)(_n7##x,_p11##y,z,c), I[19] = (T)(img)(_n8##x,_p11##y,z,c), I[20] = (T)(img)(_n9##x,_p11##y,z,c), I[21] = (T)(img)(_n10##x,_p11##y,z,c), I[22] = (T)(img)(_n11##x,_p11##y,z,c), \ + I[23] = (T)(img)(_p11##x,_p10##y,z,c), I[24] = (T)(img)(_p10##x,_p10##y,z,c), I[25] = (T)(img)(_p9##x,_p10##y,z,c), I[26] = (T)(img)(_p8##x,_p10##y,z,c), I[27] = (T)(img)(_p7##x,_p10##y,z,c), I[28] = (T)(img)(_p6##x,_p10##y,z,c), I[29] = (T)(img)(_p5##x,_p10##y,z,c), I[30] = (T)(img)(_p4##x,_p10##y,z,c), I[31] = (T)(img)(_p3##x,_p10##y,z,c), I[32] = (T)(img)(_p2##x,_p10##y,z,c), I[33] = (T)(img)(_p1##x,_p10##y,z,c), I[34] = (T)(img)(x,_p10##y,z,c), I[35] = (T)(img)(_n1##x,_p10##y,z,c), I[36] = (T)(img)(_n2##x,_p10##y,z,c), I[37] = (T)(img)(_n3##x,_p10##y,z,c), I[38] = (T)(img)(_n4##x,_p10##y,z,c), I[39] = (T)(img)(_n5##x,_p10##y,z,c), I[40] = (T)(img)(_n6##x,_p10##y,z,c), I[41] = (T)(img)(_n7##x,_p10##y,z,c), I[42] = (T)(img)(_n8##x,_p10##y,z,c), I[43] = (T)(img)(_n9##x,_p10##y,z,c), I[44] = (T)(img)(_n10##x,_p10##y,z,c), I[45] = (T)(img)(_n11##x,_p10##y,z,c), \ + I[46] = (T)(img)(_p11##x,_p9##y,z,c), I[47] = (T)(img)(_p10##x,_p9##y,z,c), I[48] = (T)(img)(_p9##x,_p9##y,z,c), I[49] = (T)(img)(_p8##x,_p9##y,z,c), I[50] = (T)(img)(_p7##x,_p9##y,z,c), I[51] = (T)(img)(_p6##x,_p9##y,z,c), I[52] = (T)(img)(_p5##x,_p9##y,z,c), I[53] = (T)(img)(_p4##x,_p9##y,z,c), I[54] = (T)(img)(_p3##x,_p9##y,z,c), I[55] = (T)(img)(_p2##x,_p9##y,z,c), I[56] = (T)(img)(_p1##x,_p9##y,z,c), I[57] = (T)(img)(x,_p9##y,z,c), I[58] = (T)(img)(_n1##x,_p9##y,z,c), I[59] = (T)(img)(_n2##x,_p9##y,z,c), I[60] = (T)(img)(_n3##x,_p9##y,z,c), I[61] = (T)(img)(_n4##x,_p9##y,z,c), I[62] = (T)(img)(_n5##x,_p9##y,z,c), I[63] = (T)(img)(_n6##x,_p9##y,z,c), I[64] = (T)(img)(_n7##x,_p9##y,z,c), I[65] = (T)(img)(_n8##x,_p9##y,z,c), I[66] = (T)(img)(_n9##x,_p9##y,z,c), I[67] = (T)(img)(_n10##x,_p9##y,z,c), I[68] = (T)(img)(_n11##x,_p9##y,z,c), \ + I[69] = (T)(img)(_p11##x,_p8##y,z,c), I[70] = (T)(img)(_p10##x,_p8##y,z,c), I[71] = (T)(img)(_p9##x,_p8##y,z,c), I[72] = (T)(img)(_p8##x,_p8##y,z,c), I[73] = (T)(img)(_p7##x,_p8##y,z,c), I[74] = (T)(img)(_p6##x,_p8##y,z,c), I[75] = (T)(img)(_p5##x,_p8##y,z,c), I[76] = (T)(img)(_p4##x,_p8##y,z,c), I[77] = (T)(img)(_p3##x,_p8##y,z,c), I[78] = (T)(img)(_p2##x,_p8##y,z,c), I[79] = (T)(img)(_p1##x,_p8##y,z,c), I[80] = (T)(img)(x,_p8##y,z,c), I[81] = (T)(img)(_n1##x,_p8##y,z,c), I[82] = (T)(img)(_n2##x,_p8##y,z,c), I[83] = (T)(img)(_n3##x,_p8##y,z,c), I[84] = (T)(img)(_n4##x,_p8##y,z,c), I[85] = (T)(img)(_n5##x,_p8##y,z,c), I[86] = (T)(img)(_n6##x,_p8##y,z,c), I[87] = (T)(img)(_n7##x,_p8##y,z,c), I[88] = (T)(img)(_n8##x,_p8##y,z,c), I[89] = (T)(img)(_n9##x,_p8##y,z,c), I[90] = (T)(img)(_n10##x,_p8##y,z,c), I[91] = (T)(img)(_n11##x,_p8##y,z,c), \ + I[92] = (T)(img)(_p11##x,_p7##y,z,c), I[93] = (T)(img)(_p10##x,_p7##y,z,c), I[94] = (T)(img)(_p9##x,_p7##y,z,c), I[95] = (T)(img)(_p8##x,_p7##y,z,c), I[96] = (T)(img)(_p7##x,_p7##y,z,c), I[97] = (T)(img)(_p6##x,_p7##y,z,c), I[98] = (T)(img)(_p5##x,_p7##y,z,c), I[99] = (T)(img)(_p4##x,_p7##y,z,c), I[100] = (T)(img)(_p3##x,_p7##y,z,c), I[101] = (T)(img)(_p2##x,_p7##y,z,c), I[102] = (T)(img)(_p1##x,_p7##y,z,c), I[103] = (T)(img)(x,_p7##y,z,c), I[104] = (T)(img)(_n1##x,_p7##y,z,c), I[105] = (T)(img)(_n2##x,_p7##y,z,c), I[106] = (T)(img)(_n3##x,_p7##y,z,c), I[107] = (T)(img)(_n4##x,_p7##y,z,c), I[108] = (T)(img)(_n5##x,_p7##y,z,c), I[109] = (T)(img)(_n6##x,_p7##y,z,c), I[110] = (T)(img)(_n7##x,_p7##y,z,c), I[111] = (T)(img)(_n8##x,_p7##y,z,c), I[112] = (T)(img)(_n9##x,_p7##y,z,c), I[113] = (T)(img)(_n10##x,_p7##y,z,c), I[114] = (T)(img)(_n11##x,_p7##y,z,c), \ + I[115] = (T)(img)(_p11##x,_p6##y,z,c), I[116] = (T)(img)(_p10##x,_p6##y,z,c), I[117] = (T)(img)(_p9##x,_p6##y,z,c), I[118] = (T)(img)(_p8##x,_p6##y,z,c), I[119] = (T)(img)(_p7##x,_p6##y,z,c), I[120] = (T)(img)(_p6##x,_p6##y,z,c), I[121] = (T)(img)(_p5##x,_p6##y,z,c), I[122] = (T)(img)(_p4##x,_p6##y,z,c), I[123] = (T)(img)(_p3##x,_p6##y,z,c), I[124] = (T)(img)(_p2##x,_p6##y,z,c), I[125] = (T)(img)(_p1##x,_p6##y,z,c), I[126] = (T)(img)(x,_p6##y,z,c), I[127] = (T)(img)(_n1##x,_p6##y,z,c), I[128] = (T)(img)(_n2##x,_p6##y,z,c), I[129] = (T)(img)(_n3##x,_p6##y,z,c), I[130] = (T)(img)(_n4##x,_p6##y,z,c), I[131] = (T)(img)(_n5##x,_p6##y,z,c), I[132] = (T)(img)(_n6##x,_p6##y,z,c), I[133] = (T)(img)(_n7##x,_p6##y,z,c), I[134] = (T)(img)(_n8##x,_p6##y,z,c), I[135] = (T)(img)(_n9##x,_p6##y,z,c), I[136] = (T)(img)(_n10##x,_p6##y,z,c), I[137] = (T)(img)(_n11##x,_p6##y,z,c), \ + I[138] = (T)(img)(_p11##x,_p5##y,z,c), I[139] = (T)(img)(_p10##x,_p5##y,z,c), I[140] = (T)(img)(_p9##x,_p5##y,z,c), I[141] = (T)(img)(_p8##x,_p5##y,z,c), I[142] = (T)(img)(_p7##x,_p5##y,z,c), I[143] = (T)(img)(_p6##x,_p5##y,z,c), I[144] = (T)(img)(_p5##x,_p5##y,z,c), I[145] = (T)(img)(_p4##x,_p5##y,z,c), I[146] = (T)(img)(_p3##x,_p5##y,z,c), I[147] = (T)(img)(_p2##x,_p5##y,z,c), I[148] = (T)(img)(_p1##x,_p5##y,z,c), I[149] = (T)(img)(x,_p5##y,z,c), I[150] = (T)(img)(_n1##x,_p5##y,z,c), I[151] = (T)(img)(_n2##x,_p5##y,z,c), I[152] = (T)(img)(_n3##x,_p5##y,z,c), I[153] = (T)(img)(_n4##x,_p5##y,z,c), I[154] = (T)(img)(_n5##x,_p5##y,z,c), I[155] = (T)(img)(_n6##x,_p5##y,z,c), I[156] = (T)(img)(_n7##x,_p5##y,z,c), I[157] = (T)(img)(_n8##x,_p5##y,z,c), I[158] = (T)(img)(_n9##x,_p5##y,z,c), I[159] = (T)(img)(_n10##x,_p5##y,z,c), I[160] = (T)(img)(_n11##x,_p5##y,z,c), \ + I[161] = (T)(img)(_p11##x,_p4##y,z,c), I[162] = (T)(img)(_p10##x,_p4##y,z,c), I[163] = (T)(img)(_p9##x,_p4##y,z,c), I[164] = (T)(img)(_p8##x,_p4##y,z,c), I[165] = (T)(img)(_p7##x,_p4##y,z,c), I[166] = (T)(img)(_p6##x,_p4##y,z,c), I[167] = (T)(img)(_p5##x,_p4##y,z,c), I[168] = (T)(img)(_p4##x,_p4##y,z,c), I[169] = (T)(img)(_p3##x,_p4##y,z,c), I[170] = (T)(img)(_p2##x,_p4##y,z,c), I[171] = (T)(img)(_p1##x,_p4##y,z,c), I[172] = (T)(img)(x,_p4##y,z,c), I[173] = (T)(img)(_n1##x,_p4##y,z,c), I[174] = (T)(img)(_n2##x,_p4##y,z,c), I[175] = (T)(img)(_n3##x,_p4##y,z,c), I[176] = (T)(img)(_n4##x,_p4##y,z,c), I[177] = (T)(img)(_n5##x,_p4##y,z,c), I[178] = (T)(img)(_n6##x,_p4##y,z,c), I[179] = (T)(img)(_n7##x,_p4##y,z,c), I[180] = (T)(img)(_n8##x,_p4##y,z,c), I[181] = (T)(img)(_n9##x,_p4##y,z,c), I[182] = (T)(img)(_n10##x,_p4##y,z,c), I[183] = (T)(img)(_n11##x,_p4##y,z,c), \ + I[184] = (T)(img)(_p11##x,_p3##y,z,c), I[185] = (T)(img)(_p10##x,_p3##y,z,c), I[186] = (T)(img)(_p9##x,_p3##y,z,c), I[187] = (T)(img)(_p8##x,_p3##y,z,c), I[188] = (T)(img)(_p7##x,_p3##y,z,c), I[189] = (T)(img)(_p6##x,_p3##y,z,c), I[190] = (T)(img)(_p5##x,_p3##y,z,c), I[191] = (T)(img)(_p4##x,_p3##y,z,c), I[192] = (T)(img)(_p3##x,_p3##y,z,c), I[193] = (T)(img)(_p2##x,_p3##y,z,c), I[194] = (T)(img)(_p1##x,_p3##y,z,c), I[195] = (T)(img)(x,_p3##y,z,c), I[196] = (T)(img)(_n1##x,_p3##y,z,c), I[197] = (T)(img)(_n2##x,_p3##y,z,c), I[198] = (T)(img)(_n3##x,_p3##y,z,c), I[199] = (T)(img)(_n4##x,_p3##y,z,c), I[200] = (T)(img)(_n5##x,_p3##y,z,c), I[201] = (T)(img)(_n6##x,_p3##y,z,c), I[202] = (T)(img)(_n7##x,_p3##y,z,c), I[203] = (T)(img)(_n8##x,_p3##y,z,c), I[204] = (T)(img)(_n9##x,_p3##y,z,c), I[205] = (T)(img)(_n10##x,_p3##y,z,c), I[206] = (T)(img)(_n11##x,_p3##y,z,c), \ + I[207] = (T)(img)(_p11##x,_p2##y,z,c), I[208] = (T)(img)(_p10##x,_p2##y,z,c), I[209] = (T)(img)(_p9##x,_p2##y,z,c), I[210] = (T)(img)(_p8##x,_p2##y,z,c), I[211] = (T)(img)(_p7##x,_p2##y,z,c), I[212] = (T)(img)(_p6##x,_p2##y,z,c), I[213] = (T)(img)(_p5##x,_p2##y,z,c), I[214] = (T)(img)(_p4##x,_p2##y,z,c), I[215] = (T)(img)(_p3##x,_p2##y,z,c), I[216] = (T)(img)(_p2##x,_p2##y,z,c), I[217] = (T)(img)(_p1##x,_p2##y,z,c), I[218] = (T)(img)(x,_p2##y,z,c), I[219] = (T)(img)(_n1##x,_p2##y,z,c), I[220] = (T)(img)(_n2##x,_p2##y,z,c), I[221] = (T)(img)(_n3##x,_p2##y,z,c), I[222] = (T)(img)(_n4##x,_p2##y,z,c), I[223] = (T)(img)(_n5##x,_p2##y,z,c), I[224] = (T)(img)(_n6##x,_p2##y,z,c), I[225] = (T)(img)(_n7##x,_p2##y,z,c), I[226] = (T)(img)(_n8##x,_p2##y,z,c), I[227] = (T)(img)(_n9##x,_p2##y,z,c), I[228] = (T)(img)(_n10##x,_p2##y,z,c), I[229] = (T)(img)(_n11##x,_p2##y,z,c), \ + I[230] = (T)(img)(_p11##x,_p1##y,z,c), I[231] = (T)(img)(_p10##x,_p1##y,z,c), I[232] = (T)(img)(_p9##x,_p1##y,z,c), I[233] = (T)(img)(_p8##x,_p1##y,z,c), I[234] = (T)(img)(_p7##x,_p1##y,z,c), I[235] = (T)(img)(_p6##x,_p1##y,z,c), I[236] = (T)(img)(_p5##x,_p1##y,z,c), I[237] = (T)(img)(_p4##x,_p1##y,z,c), I[238] = (T)(img)(_p3##x,_p1##y,z,c), I[239] = (T)(img)(_p2##x,_p1##y,z,c), I[240] = (T)(img)(_p1##x,_p1##y,z,c), I[241] = (T)(img)(x,_p1##y,z,c), I[242] = (T)(img)(_n1##x,_p1##y,z,c), I[243] = (T)(img)(_n2##x,_p1##y,z,c), I[244] = (T)(img)(_n3##x,_p1##y,z,c), I[245] = (T)(img)(_n4##x,_p1##y,z,c), I[246] = (T)(img)(_n5##x,_p1##y,z,c), I[247] = (T)(img)(_n6##x,_p1##y,z,c), I[248] = (T)(img)(_n7##x,_p1##y,z,c), I[249] = (T)(img)(_n8##x,_p1##y,z,c), I[250] = (T)(img)(_n9##x,_p1##y,z,c), I[251] = (T)(img)(_n10##x,_p1##y,z,c), I[252] = (T)(img)(_n11##x,_p1##y,z,c), \ + I[253] = (T)(img)(_p11##x,y,z,c), I[254] = (T)(img)(_p10##x,y,z,c), I[255] = (T)(img)(_p9##x,y,z,c), I[256] = (T)(img)(_p8##x,y,z,c), I[257] = (T)(img)(_p7##x,y,z,c), I[258] = (T)(img)(_p6##x,y,z,c), I[259] = (T)(img)(_p5##x,y,z,c), I[260] = (T)(img)(_p4##x,y,z,c), I[261] = (T)(img)(_p3##x,y,z,c), I[262] = (T)(img)(_p2##x,y,z,c), I[263] = (T)(img)(_p1##x,y,z,c), I[264] = (T)(img)(x,y,z,c), I[265] = (T)(img)(_n1##x,y,z,c), I[266] = (T)(img)(_n2##x,y,z,c), I[267] = (T)(img)(_n3##x,y,z,c), I[268] = (T)(img)(_n4##x,y,z,c), I[269] = (T)(img)(_n5##x,y,z,c), I[270] = (T)(img)(_n6##x,y,z,c), I[271] = (T)(img)(_n7##x,y,z,c), I[272] = (T)(img)(_n8##x,y,z,c), I[273] = (T)(img)(_n9##x,y,z,c), I[274] = (T)(img)(_n10##x,y,z,c), I[275] = (T)(img)(_n11##x,y,z,c), \ + I[276] = (T)(img)(_p11##x,_n1##y,z,c), I[277] = (T)(img)(_p10##x,_n1##y,z,c), I[278] = (T)(img)(_p9##x,_n1##y,z,c), I[279] = (T)(img)(_p8##x,_n1##y,z,c), I[280] = (T)(img)(_p7##x,_n1##y,z,c), I[281] = (T)(img)(_p6##x,_n1##y,z,c), I[282] = (T)(img)(_p5##x,_n1##y,z,c), I[283] = (T)(img)(_p4##x,_n1##y,z,c), I[284] = (T)(img)(_p3##x,_n1##y,z,c), I[285] = (T)(img)(_p2##x,_n1##y,z,c), I[286] = (T)(img)(_p1##x,_n1##y,z,c), I[287] = (T)(img)(x,_n1##y,z,c), I[288] = (T)(img)(_n1##x,_n1##y,z,c), I[289] = (T)(img)(_n2##x,_n1##y,z,c), I[290] = (T)(img)(_n3##x,_n1##y,z,c), I[291] = (T)(img)(_n4##x,_n1##y,z,c), I[292] = (T)(img)(_n5##x,_n1##y,z,c), I[293] = (T)(img)(_n6##x,_n1##y,z,c), I[294] = (T)(img)(_n7##x,_n1##y,z,c), I[295] = (T)(img)(_n8##x,_n1##y,z,c), I[296] = (T)(img)(_n9##x,_n1##y,z,c), I[297] = (T)(img)(_n10##x,_n1##y,z,c), I[298] = (T)(img)(_n11##x,_n1##y,z,c), \ + I[299] = (T)(img)(_p11##x,_n2##y,z,c), I[300] = (T)(img)(_p10##x,_n2##y,z,c), I[301] = (T)(img)(_p9##x,_n2##y,z,c), I[302] = (T)(img)(_p8##x,_n2##y,z,c), I[303] = (T)(img)(_p7##x,_n2##y,z,c), I[304] = (T)(img)(_p6##x,_n2##y,z,c), I[305] = (T)(img)(_p5##x,_n2##y,z,c), I[306] = (T)(img)(_p4##x,_n2##y,z,c), I[307] = (T)(img)(_p3##x,_n2##y,z,c), I[308] = (T)(img)(_p2##x,_n2##y,z,c), I[309] = (T)(img)(_p1##x,_n2##y,z,c), I[310] = (T)(img)(x,_n2##y,z,c), I[311] = (T)(img)(_n1##x,_n2##y,z,c), I[312] = (T)(img)(_n2##x,_n2##y,z,c), I[313] = (T)(img)(_n3##x,_n2##y,z,c), I[314] = (T)(img)(_n4##x,_n2##y,z,c), I[315] = (T)(img)(_n5##x,_n2##y,z,c), I[316] = (T)(img)(_n6##x,_n2##y,z,c), I[317] = (T)(img)(_n7##x,_n2##y,z,c), I[318] = (T)(img)(_n8##x,_n2##y,z,c), I[319] = (T)(img)(_n9##x,_n2##y,z,c), I[320] = (T)(img)(_n10##x,_n2##y,z,c), I[321] = (T)(img)(_n11##x,_n2##y,z,c), \ + I[322] = (T)(img)(_p11##x,_n3##y,z,c), I[323] = (T)(img)(_p10##x,_n3##y,z,c), I[324] = (T)(img)(_p9##x,_n3##y,z,c), I[325] = (T)(img)(_p8##x,_n3##y,z,c), I[326] = (T)(img)(_p7##x,_n3##y,z,c), I[327] = (T)(img)(_p6##x,_n3##y,z,c), I[328] = (T)(img)(_p5##x,_n3##y,z,c), I[329] = (T)(img)(_p4##x,_n3##y,z,c), I[330] = (T)(img)(_p3##x,_n3##y,z,c), I[331] = (T)(img)(_p2##x,_n3##y,z,c), I[332] = (T)(img)(_p1##x,_n3##y,z,c), I[333] = (T)(img)(x,_n3##y,z,c), I[334] = (T)(img)(_n1##x,_n3##y,z,c), I[335] = (T)(img)(_n2##x,_n3##y,z,c), I[336] = (T)(img)(_n3##x,_n3##y,z,c), I[337] = (T)(img)(_n4##x,_n3##y,z,c), I[338] = (T)(img)(_n5##x,_n3##y,z,c), I[339] = (T)(img)(_n6##x,_n3##y,z,c), I[340] = (T)(img)(_n7##x,_n3##y,z,c), I[341] = (T)(img)(_n8##x,_n3##y,z,c), I[342] = (T)(img)(_n9##x,_n3##y,z,c), I[343] = (T)(img)(_n10##x,_n3##y,z,c), I[344] = (T)(img)(_n11##x,_n3##y,z,c), \ + I[345] = (T)(img)(_p11##x,_n4##y,z,c), I[346] = (T)(img)(_p10##x,_n4##y,z,c), I[347] = (T)(img)(_p9##x,_n4##y,z,c), I[348] = (T)(img)(_p8##x,_n4##y,z,c), I[349] = (T)(img)(_p7##x,_n4##y,z,c), I[350] = (T)(img)(_p6##x,_n4##y,z,c), I[351] = (T)(img)(_p5##x,_n4##y,z,c), I[352] = (T)(img)(_p4##x,_n4##y,z,c), I[353] = (T)(img)(_p3##x,_n4##y,z,c), I[354] = (T)(img)(_p2##x,_n4##y,z,c), I[355] = (T)(img)(_p1##x,_n4##y,z,c), I[356] = (T)(img)(x,_n4##y,z,c), I[357] = (T)(img)(_n1##x,_n4##y,z,c), I[358] = (T)(img)(_n2##x,_n4##y,z,c), I[359] = (T)(img)(_n3##x,_n4##y,z,c), I[360] = (T)(img)(_n4##x,_n4##y,z,c), I[361] = (T)(img)(_n5##x,_n4##y,z,c), I[362] = (T)(img)(_n6##x,_n4##y,z,c), I[363] = (T)(img)(_n7##x,_n4##y,z,c), I[364] = (T)(img)(_n8##x,_n4##y,z,c), I[365] = (T)(img)(_n9##x,_n4##y,z,c), I[366] = (T)(img)(_n10##x,_n4##y,z,c), I[367] = (T)(img)(_n11##x,_n4##y,z,c), \ + I[368] = (T)(img)(_p11##x,_n5##y,z,c), I[369] = (T)(img)(_p10##x,_n5##y,z,c), I[370] = (T)(img)(_p9##x,_n5##y,z,c), I[371] = (T)(img)(_p8##x,_n5##y,z,c), I[372] = (T)(img)(_p7##x,_n5##y,z,c), I[373] = (T)(img)(_p6##x,_n5##y,z,c), I[374] = (T)(img)(_p5##x,_n5##y,z,c), I[375] = (T)(img)(_p4##x,_n5##y,z,c), I[376] = (T)(img)(_p3##x,_n5##y,z,c), I[377] = (T)(img)(_p2##x,_n5##y,z,c), I[378] = (T)(img)(_p1##x,_n5##y,z,c), I[379] = (T)(img)(x,_n5##y,z,c), I[380] = (T)(img)(_n1##x,_n5##y,z,c), I[381] = (T)(img)(_n2##x,_n5##y,z,c), I[382] = (T)(img)(_n3##x,_n5##y,z,c), I[383] = (T)(img)(_n4##x,_n5##y,z,c), I[384] = (T)(img)(_n5##x,_n5##y,z,c), I[385] = (T)(img)(_n6##x,_n5##y,z,c), I[386] = (T)(img)(_n7##x,_n5##y,z,c), I[387] = (T)(img)(_n8##x,_n5##y,z,c), I[388] = (T)(img)(_n9##x,_n5##y,z,c), I[389] = (T)(img)(_n10##x,_n5##y,z,c), I[390] = (T)(img)(_n11##x,_n5##y,z,c), \ + I[391] = (T)(img)(_p11##x,_n6##y,z,c), I[392] = (T)(img)(_p10##x,_n6##y,z,c), I[393] = (T)(img)(_p9##x,_n6##y,z,c), I[394] = (T)(img)(_p8##x,_n6##y,z,c), I[395] = (T)(img)(_p7##x,_n6##y,z,c), I[396] = (T)(img)(_p6##x,_n6##y,z,c), I[397] = (T)(img)(_p5##x,_n6##y,z,c), I[398] = (T)(img)(_p4##x,_n6##y,z,c), I[399] = (T)(img)(_p3##x,_n6##y,z,c), I[400] = (T)(img)(_p2##x,_n6##y,z,c), I[401] = (T)(img)(_p1##x,_n6##y,z,c), I[402] = (T)(img)(x,_n6##y,z,c), I[403] = (T)(img)(_n1##x,_n6##y,z,c), I[404] = (T)(img)(_n2##x,_n6##y,z,c), I[405] = (T)(img)(_n3##x,_n6##y,z,c), I[406] = (T)(img)(_n4##x,_n6##y,z,c), I[407] = (T)(img)(_n5##x,_n6##y,z,c), I[408] = (T)(img)(_n6##x,_n6##y,z,c), I[409] = (T)(img)(_n7##x,_n6##y,z,c), I[410] = (T)(img)(_n8##x,_n6##y,z,c), I[411] = (T)(img)(_n9##x,_n6##y,z,c), I[412] = (T)(img)(_n10##x,_n6##y,z,c), I[413] = (T)(img)(_n11##x,_n6##y,z,c), \ + I[414] = (T)(img)(_p11##x,_n7##y,z,c), I[415] = (T)(img)(_p10##x,_n7##y,z,c), I[416] = (T)(img)(_p9##x,_n7##y,z,c), I[417] = (T)(img)(_p8##x,_n7##y,z,c), I[418] = (T)(img)(_p7##x,_n7##y,z,c), I[419] = (T)(img)(_p6##x,_n7##y,z,c), I[420] = (T)(img)(_p5##x,_n7##y,z,c), I[421] = (T)(img)(_p4##x,_n7##y,z,c), I[422] = (T)(img)(_p3##x,_n7##y,z,c), I[423] = (T)(img)(_p2##x,_n7##y,z,c), I[424] = (T)(img)(_p1##x,_n7##y,z,c), I[425] = (T)(img)(x,_n7##y,z,c), I[426] = (T)(img)(_n1##x,_n7##y,z,c), I[427] = (T)(img)(_n2##x,_n7##y,z,c), I[428] = (T)(img)(_n3##x,_n7##y,z,c), I[429] = (T)(img)(_n4##x,_n7##y,z,c), I[430] = (T)(img)(_n5##x,_n7##y,z,c), I[431] = (T)(img)(_n6##x,_n7##y,z,c), I[432] = (T)(img)(_n7##x,_n7##y,z,c), I[433] = (T)(img)(_n8##x,_n7##y,z,c), I[434] = (T)(img)(_n9##x,_n7##y,z,c), I[435] = (T)(img)(_n10##x,_n7##y,z,c), I[436] = (T)(img)(_n11##x,_n7##y,z,c), \ + I[437] = (T)(img)(_p11##x,_n8##y,z,c), I[438] = (T)(img)(_p10##x,_n8##y,z,c), I[439] = (T)(img)(_p9##x,_n8##y,z,c), I[440] = (T)(img)(_p8##x,_n8##y,z,c), I[441] = (T)(img)(_p7##x,_n8##y,z,c), I[442] = (T)(img)(_p6##x,_n8##y,z,c), I[443] = (T)(img)(_p5##x,_n8##y,z,c), I[444] = (T)(img)(_p4##x,_n8##y,z,c), I[445] = (T)(img)(_p3##x,_n8##y,z,c), I[446] = (T)(img)(_p2##x,_n8##y,z,c), I[447] = (T)(img)(_p1##x,_n8##y,z,c), I[448] = (T)(img)(x,_n8##y,z,c), I[449] = (T)(img)(_n1##x,_n8##y,z,c), I[450] = (T)(img)(_n2##x,_n8##y,z,c), I[451] = (T)(img)(_n3##x,_n8##y,z,c), I[452] = (T)(img)(_n4##x,_n8##y,z,c), I[453] = (T)(img)(_n5##x,_n8##y,z,c), I[454] = (T)(img)(_n6##x,_n8##y,z,c), I[455] = (T)(img)(_n7##x,_n8##y,z,c), I[456] = (T)(img)(_n8##x,_n8##y,z,c), I[457] = (T)(img)(_n9##x,_n8##y,z,c), I[458] = (T)(img)(_n10##x,_n8##y,z,c), I[459] = (T)(img)(_n11##x,_n8##y,z,c), \ + I[460] = (T)(img)(_p11##x,_n9##y,z,c), I[461] = (T)(img)(_p10##x,_n9##y,z,c), I[462] = (T)(img)(_p9##x,_n9##y,z,c), I[463] = (T)(img)(_p8##x,_n9##y,z,c), I[464] = (T)(img)(_p7##x,_n9##y,z,c), I[465] = (T)(img)(_p6##x,_n9##y,z,c), I[466] = (T)(img)(_p5##x,_n9##y,z,c), I[467] = (T)(img)(_p4##x,_n9##y,z,c), I[468] = (T)(img)(_p3##x,_n9##y,z,c), I[469] = (T)(img)(_p2##x,_n9##y,z,c), I[470] = (T)(img)(_p1##x,_n9##y,z,c), I[471] = (T)(img)(x,_n9##y,z,c), I[472] = (T)(img)(_n1##x,_n9##y,z,c), I[473] = (T)(img)(_n2##x,_n9##y,z,c), I[474] = (T)(img)(_n3##x,_n9##y,z,c), I[475] = (T)(img)(_n4##x,_n9##y,z,c), I[476] = (T)(img)(_n5##x,_n9##y,z,c), I[477] = (T)(img)(_n6##x,_n9##y,z,c), I[478] = (T)(img)(_n7##x,_n9##y,z,c), I[479] = (T)(img)(_n8##x,_n9##y,z,c), I[480] = (T)(img)(_n9##x,_n9##y,z,c), I[481] = (T)(img)(_n10##x,_n9##y,z,c), I[482] = (T)(img)(_n11##x,_n9##y,z,c), \ + I[483] = (T)(img)(_p11##x,_n10##y,z,c), I[484] = (T)(img)(_p10##x,_n10##y,z,c), I[485] = (T)(img)(_p9##x,_n10##y,z,c), I[486] = (T)(img)(_p8##x,_n10##y,z,c), I[487] = (T)(img)(_p7##x,_n10##y,z,c), I[488] = (T)(img)(_p6##x,_n10##y,z,c), I[489] = (T)(img)(_p5##x,_n10##y,z,c), I[490] = (T)(img)(_p4##x,_n10##y,z,c), I[491] = (T)(img)(_p3##x,_n10##y,z,c), I[492] = (T)(img)(_p2##x,_n10##y,z,c), I[493] = (T)(img)(_p1##x,_n10##y,z,c), I[494] = (T)(img)(x,_n10##y,z,c), I[495] = (T)(img)(_n1##x,_n10##y,z,c), I[496] = (T)(img)(_n2##x,_n10##y,z,c), I[497] = (T)(img)(_n3##x,_n10##y,z,c), I[498] = (T)(img)(_n4##x,_n10##y,z,c), I[499] = (T)(img)(_n5##x,_n10##y,z,c), I[500] = (T)(img)(_n6##x,_n10##y,z,c), I[501] = (T)(img)(_n7##x,_n10##y,z,c), I[502] = (T)(img)(_n8##x,_n10##y,z,c), I[503] = (T)(img)(_n9##x,_n10##y,z,c), I[504] = (T)(img)(_n10##x,_n10##y,z,c), I[505] = (T)(img)(_n11##x,_n10##y,z,c), \ + I[506] = (T)(img)(_p11##x,_n11##y,z,c), I[507] = (T)(img)(_p10##x,_n11##y,z,c), I[508] = (T)(img)(_p9##x,_n11##y,z,c), I[509] = (T)(img)(_p8##x,_n11##y,z,c), I[510] = (T)(img)(_p7##x,_n11##y,z,c), I[511] = (T)(img)(_p6##x,_n11##y,z,c), I[512] = (T)(img)(_p5##x,_n11##y,z,c), I[513] = (T)(img)(_p4##x,_n11##y,z,c), I[514] = (T)(img)(_p3##x,_n11##y,z,c), I[515] = (T)(img)(_p2##x,_n11##y,z,c), I[516] = (T)(img)(_p1##x,_n11##y,z,c), I[517] = (T)(img)(x,_n11##y,z,c), I[518] = (T)(img)(_n1##x,_n11##y,z,c), I[519] = (T)(img)(_n2##x,_n11##y,z,c), I[520] = (T)(img)(_n3##x,_n11##y,z,c), I[521] = (T)(img)(_n4##x,_n11##y,z,c), I[522] = (T)(img)(_n5##x,_n11##y,z,c), I[523] = (T)(img)(_n6##x,_n11##y,z,c), I[524] = (T)(img)(_n7##x,_n11##y,z,c), I[525] = (T)(img)(_n8##x,_n11##y,z,c), I[526] = (T)(img)(_n9##x,_n11##y,z,c), I[527] = (T)(img)(_n10##x,_n11##y,z,c), I[528] = (T)(img)(_n11##x,_n11##y,z,c); + +// Define 24x24 loop macros +//------------------------- +#define cimg_for24(bound,i) for (int i = 0, \ + _p11##i = 0, _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11, \ + _n12##i = 12>=(int)(bound)?(int)(bound) - 1:12; \ + _n12##i<(int)(bound) || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i) + +#define cimg_for24X(img,x) cimg_for24((img)._width,x) +#define cimg_for24Y(img,y) cimg_for24((img)._height,y) +#define cimg_for24Z(img,z) cimg_for24((img)._depth,z) +#define cimg_for24C(img,c) cimg_for24((img)._spectrum,c) +#define cimg_for24XY(img,x,y) cimg_for24Y(img,y) cimg_for24X(img,x) +#define cimg_for24XZ(img,x,z) cimg_for24Z(img,z) cimg_for24X(img,x) +#define cimg_for24XC(img,x,c) cimg_for24C(img,c) cimg_for24X(img,x) +#define cimg_for24YZ(img,y,z) cimg_for24Z(img,z) cimg_for24Y(img,y) +#define cimg_for24YC(img,y,c) cimg_for24C(img,c) cimg_for24Y(img,y) +#define cimg_for24ZC(img,z,c) cimg_for24C(img,c) cimg_for24Z(img,z) +#define cimg_for24XYZ(img,x,y,z) cimg_for24Z(img,z) cimg_for24XY(img,x,y) +#define cimg_for24XZC(img,x,z,c) cimg_for24C(img,c) cimg_for24XZ(img,x,z) +#define cimg_for24YZC(img,y,z,c) cimg_for24C(img,c) cimg_for24YZ(img,y,z) +#define cimg_for24XYZC(img,x,y,z,c) cimg_for24C(img,c) cimg_for24XYZ(img,x,y,z) + +#define cimg_for_in24(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p11##i = i - 11<0?0:i - 11, \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11, \ + _n12##i = i + 12>=(int)(bound)?(int)(bound) - 1:i + 12; \ + i<=(int)(i1) && (_n12##i<(int)(bound) || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i) + +#define cimg_for_in24X(img,x0,x1,x) cimg_for_in24((img)._width,x0,x1,x) +#define cimg_for_in24Y(img,y0,y1,y) cimg_for_in24((img)._height,y0,y1,y) +#define cimg_for_in24Z(img,z0,z1,z) cimg_for_in24((img)._depth,z0,z1,z) +#define cimg_for_in24C(img,c0,c1,c) cimg_for_in24((img)._spectrum,c0,c1,c) +#define cimg_for_in24XY(img,x0,y0,x1,y1,x,y) cimg_for_in24Y(img,y0,y1,y) cimg_for_in24X(img,x0,x1,x) +#define cimg_for_in24XZ(img,x0,z0,x1,z1,x,z) cimg_for_in24Z(img,z0,z1,z) cimg_for_in24X(img,x0,x1,x) +#define cimg_for_in24XC(img,x0,c0,x1,c1,x,c) cimg_for_in24C(img,c0,c1,c) cimg_for_in24X(img,x0,x1,x) +#define cimg_for_in24YZ(img,y0,z0,y1,z1,y,z) cimg_for_in24Z(img,z0,z1,z) cimg_for_in24Y(img,y0,y1,y) +#define cimg_for_in24YC(img,y0,c0,y1,c1,y,c) cimg_for_in24C(img,c0,c1,c) cimg_for_in24Y(img,y0,y1,y) +#define cimg_for_in24ZC(img,z0,c0,z1,c1,z,c) cimg_for_in24C(img,c0,c1,c) cimg_for_in24Z(img,z0,z1,z) +#define cimg_for_in24XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in24Z(img,z0,z1,z) cimg_for_in24XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in24XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in24C(img,c0,c1,c) cimg_for_in24XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in24YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in24C(img,c0,c1,c) cimg_for_in24YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in24XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in24C(img,c0,c1,c) cimg_for_in24XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for24x24(img,x,y,z,c,I,T) \ + cimg_for24((img)._height,y) for (int x = 0, \ + _p11##x = 0, _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = 11>=((img)._width)?(img).width() - 1:11, \ + _n12##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = I[11] = (T)(img)(0,_p11##y,z,c)), \ + (I[24] = I[25] = I[26] = I[27] = I[28] = I[29] = I[30] = I[31] = I[32] = I[33] = I[34] = I[35] = (T)(img)(0,_p10##y,z,c)), \ + (I[48] = I[49] = I[50] = I[51] = I[52] = I[53] = I[54] = I[55] = I[56] = I[57] = I[58] = I[59] = (T)(img)(0,_p9##y,z,c)), \ + (I[72] = I[73] = I[74] = I[75] = I[76] = I[77] = I[78] = I[79] = I[80] = I[81] = I[82] = I[83] = (T)(img)(0,_p8##y,z,c)), \ + (I[96] = I[97] = I[98] = I[99] = I[100] = I[101] = I[102] = I[103] = I[104] = I[105] = I[106] = I[107] = (T)(img)(0,_p7##y,z,c)), \ + (I[120] = I[121] = I[122] = I[123] = I[124] = I[125] = I[126] = I[127] = I[128] = I[129] = I[130] = I[131] = (T)(img)(0,_p6##y,z,c)), \ + (I[144] = I[145] = I[146] = I[147] = I[148] = I[149] = I[150] = I[151] = I[152] = I[153] = I[154] = I[155] = (T)(img)(0,_p5##y,z,c)), \ + (I[168] = I[169] = I[170] = I[171] = I[172] = I[173] = I[174] = I[175] = I[176] = I[177] = I[178] = I[179] = (T)(img)(0,_p4##y,z,c)), \ + (I[192] = I[193] = I[194] = I[195] = I[196] = I[197] = I[198] = I[199] = I[200] = I[201] = I[202] = I[203] = (T)(img)(0,_p3##y,z,c)), \ + (I[216] = I[217] = I[218] = I[219] = I[220] = I[221] = I[222] = I[223] = I[224] = I[225] = I[226] = I[227] = (T)(img)(0,_p2##y,z,c)), \ + (I[240] = I[241] = I[242] = I[243] = I[244] = I[245] = I[246] = I[247] = I[248] = I[249] = I[250] = I[251] = (T)(img)(0,_p1##y,z,c)), \ + (I[264] = I[265] = I[266] = I[267] = I[268] = I[269] = I[270] = I[271] = I[272] = I[273] = I[274] = I[275] = (T)(img)(0,y,z,c)), \ + (I[288] = I[289] = I[290] = I[291] = I[292] = I[293] = I[294] = I[295] = I[296] = I[297] = I[298] = I[299] = (T)(img)(0,_n1##y,z,c)), \ + (I[312] = I[313] = I[314] = I[315] = I[316] = I[317] = I[318] = I[319] = I[320] = I[321] = I[322] = I[323] = (T)(img)(0,_n2##y,z,c)), \ + (I[336] = I[337] = I[338] = I[339] = I[340] = I[341] = I[342] = I[343] = I[344] = I[345] = I[346] = I[347] = (T)(img)(0,_n3##y,z,c)), \ + (I[360] = I[361] = I[362] = I[363] = I[364] = I[365] = I[366] = I[367] = I[368] = I[369] = I[370] = I[371] = (T)(img)(0,_n4##y,z,c)), \ + (I[384] = I[385] = I[386] = I[387] = I[388] = I[389] = I[390] = I[391] = I[392] = I[393] = I[394] = I[395] = (T)(img)(0,_n5##y,z,c)), \ + (I[408] = I[409] = I[410] = I[411] = I[412] = I[413] = I[414] = I[415] = I[416] = I[417] = I[418] = I[419] = (T)(img)(0,_n6##y,z,c)), \ + (I[432] = I[433] = I[434] = I[435] = I[436] = I[437] = I[438] = I[439] = I[440] = I[441] = I[442] = I[443] = (T)(img)(0,_n7##y,z,c)), \ + (I[456] = I[457] = I[458] = I[459] = I[460] = I[461] = I[462] = I[463] = I[464] = I[465] = I[466] = I[467] = (T)(img)(0,_n8##y,z,c)), \ + (I[480] = I[481] = I[482] = I[483] = I[484] = I[485] = I[486] = I[487] = I[488] = I[489] = I[490] = I[491] = (T)(img)(0,_n9##y,z,c)), \ + (I[504] = I[505] = I[506] = I[507] = I[508] = I[509] = I[510] = I[511] = I[512] = I[513] = I[514] = I[515] = (T)(img)(0,_n10##y,z,c)), \ + (I[528] = I[529] = I[530] = I[531] = I[532] = I[533] = I[534] = I[535] = I[536] = I[537] = I[538] = I[539] = (T)(img)(0,_n11##y,z,c)), \ + (I[552] = I[553] = I[554] = I[555] = I[556] = I[557] = I[558] = I[559] = I[560] = I[561] = I[562] = I[563] = (T)(img)(0,_n12##y,z,c)), \ + (I[12] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[36] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[60] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[84] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[108] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[132] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[156] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[180] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[204] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[228] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[252] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[276] = (T)(img)(_n1##x,y,z,c)), \ + (I[300] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[324] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[348] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[372] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[396] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[420] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[444] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[468] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[492] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[516] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[540] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[564] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[13] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[37] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[61] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[85] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[109] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[133] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[157] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[181] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[205] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[229] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[253] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[277] = (T)(img)(_n2##x,y,z,c)), \ + (I[301] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[325] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[349] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[373] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[397] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[421] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[445] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[469] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[493] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[517] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[541] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[565] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[14] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[38] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[62] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[86] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[110] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[134] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[158] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[182] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[206] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[230] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[254] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[278] = (T)(img)(_n3##x,y,z,c)), \ + (I[302] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[326] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[350] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[374] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[398] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[422] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[446] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[470] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[494] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[518] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[542] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[566] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[15] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[39] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[63] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[87] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[111] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[135] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[159] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[183] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[207] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[231] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[255] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[279] = (T)(img)(_n4##x,y,z,c)), \ + (I[303] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[327] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[351] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[375] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[399] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[423] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[447] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[471] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[495] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[519] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[543] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[567] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[16] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[40] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[64] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[88] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[112] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[136] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[160] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[184] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[208] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[232] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[256] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[280] = (T)(img)(_n5##x,y,z,c)), \ + (I[304] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[328] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[352] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[376] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[400] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[424] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[448] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[472] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[496] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[520] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[544] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[568] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[17] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[41] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[65] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[89] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[113] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[137] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[161] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[185] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[209] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[233] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[257] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[281] = (T)(img)(_n6##x,y,z,c)), \ + (I[305] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[329] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[353] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[377] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[401] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[425] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[449] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[473] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[497] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[521] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[545] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[569] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[18] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[42] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[66] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[90] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[114] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[138] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[162] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[186] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[210] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[234] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[258] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[282] = (T)(img)(_n7##x,y,z,c)), \ + (I[306] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[330] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[354] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[378] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[402] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[426] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[450] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[474] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[498] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[522] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[546] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[570] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[19] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[43] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[67] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[91] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[115] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[139] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[163] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[187] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[211] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[235] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[259] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[283] = (T)(img)(_n8##x,y,z,c)), \ + (I[307] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[331] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[355] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[379] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[403] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[427] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[451] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[475] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[499] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[523] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[547] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[571] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[20] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[44] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[68] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[92] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[116] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[140] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[164] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[188] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[212] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[236] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[260] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[284] = (T)(img)(_n9##x,y,z,c)), \ + (I[308] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[332] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[356] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[380] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[404] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[428] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[452] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[476] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[500] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[524] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[548] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[572] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[21] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[45] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[69] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[93] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[117] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[141] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[165] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[189] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[213] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[237] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[261] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[285] = (T)(img)(_n10##x,y,z,c)), \ + (I[309] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[333] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[357] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[381] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[405] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[429] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[453] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[477] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[501] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[525] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[549] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[573] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[22] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[46] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[70] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[94] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[118] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[142] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[166] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[190] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[214] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[238] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[262] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[286] = (T)(img)(_n11##x,y,z,c)), \ + (I[310] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[334] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[358] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[382] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[406] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[430] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[454] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[478] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[502] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[526] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[550] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[574] = (T)(img)(_n11##x,_n12##y,z,c)), \ + 12>=((img)._width)?(img).width() - 1:12); \ + (_n12##x<(img).width() && ( \ + (I[23] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[47] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[71] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[95] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[119] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[143] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[167] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[191] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[215] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[239] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[263] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[287] = (T)(img)(_n12##x,y,z,c)), \ + (I[311] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[335] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[359] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[383] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[407] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[431] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[455] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[479] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[503] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[527] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[551] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[575] = (T)(img)(_n12##x,_n12##y,z,c)),1)) || \ + _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], \ + I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], \ + I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], \ + I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], \ + I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], \ + I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], \ + I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], \ + I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], \ + I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], \ + I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], \ + I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], \ + I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], \ + I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], \ + I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], \ + I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], \ + I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], \ + I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], \ + _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x) + +#define cimg_for_in24x24(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in24((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p11##x = x - 11<0?0:x - 11, \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = x + 11>=(img).width()?(img).width() - 1:x + 11, \ + _n12##x = (int)( \ + (I[0] = (T)(img)(_p11##x,_p11##y,z,c)), \ + (I[24] = (T)(img)(_p11##x,_p10##y,z,c)), \ + (I[48] = (T)(img)(_p11##x,_p9##y,z,c)), \ + (I[72] = (T)(img)(_p11##x,_p8##y,z,c)), \ + (I[96] = (T)(img)(_p11##x,_p7##y,z,c)), \ + (I[120] = (T)(img)(_p11##x,_p6##y,z,c)), \ + (I[144] = (T)(img)(_p11##x,_p5##y,z,c)), \ + (I[168] = (T)(img)(_p11##x,_p4##y,z,c)), \ + (I[192] = (T)(img)(_p11##x,_p3##y,z,c)), \ + (I[216] = (T)(img)(_p11##x,_p2##y,z,c)), \ + (I[240] = (T)(img)(_p11##x,_p1##y,z,c)), \ + (I[264] = (T)(img)(_p11##x,y,z,c)), \ + (I[288] = (T)(img)(_p11##x,_n1##y,z,c)), \ + (I[312] = (T)(img)(_p11##x,_n2##y,z,c)), \ + (I[336] = (T)(img)(_p11##x,_n3##y,z,c)), \ + (I[360] = (T)(img)(_p11##x,_n4##y,z,c)), \ + (I[384] = (T)(img)(_p11##x,_n5##y,z,c)), \ + (I[408] = (T)(img)(_p11##x,_n6##y,z,c)), \ + (I[432] = (T)(img)(_p11##x,_n7##y,z,c)), \ + (I[456] = (T)(img)(_p11##x,_n8##y,z,c)), \ + (I[480] = (T)(img)(_p11##x,_n9##y,z,c)), \ + (I[504] = (T)(img)(_p11##x,_n10##y,z,c)), \ + (I[528] = (T)(img)(_p11##x,_n11##y,z,c)), \ + (I[552] = (T)(img)(_p11##x,_n12##y,z,c)), \ + (I[1] = (T)(img)(_p10##x,_p11##y,z,c)), \ + (I[25] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[49] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[73] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[97] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[121] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[145] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[169] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[193] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[217] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[241] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[265] = (T)(img)(_p10##x,y,z,c)), \ + (I[289] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[313] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[337] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[361] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[385] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[409] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[433] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[457] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[481] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[505] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[529] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[553] = (T)(img)(_p10##x,_n12##y,z,c)), \ + (I[2] = (T)(img)(_p9##x,_p11##y,z,c)), \ + (I[26] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[50] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[74] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[98] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[122] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[146] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[170] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[194] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[218] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[242] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[266] = (T)(img)(_p9##x,y,z,c)), \ + (I[290] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[314] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[338] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[362] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[386] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[410] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[434] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[458] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[482] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[506] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[530] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[554] = (T)(img)(_p9##x,_n12##y,z,c)), \ + (I[3] = (T)(img)(_p8##x,_p11##y,z,c)), \ + (I[27] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[51] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[75] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[99] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[123] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[147] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[171] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[195] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[219] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[243] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[267] = (T)(img)(_p8##x,y,z,c)), \ + (I[291] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[315] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[339] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[363] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[387] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[411] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[435] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[459] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[483] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[507] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[531] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[555] = (T)(img)(_p8##x,_n12##y,z,c)), \ + (I[4] = (T)(img)(_p7##x,_p11##y,z,c)), \ + (I[28] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[52] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[76] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[100] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[124] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[148] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[172] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[196] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[220] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[244] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[268] = (T)(img)(_p7##x,y,z,c)), \ + (I[292] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[316] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[340] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[364] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[388] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[412] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[436] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[460] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[484] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[508] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[532] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[556] = (T)(img)(_p7##x,_n12##y,z,c)), \ + (I[5] = (T)(img)(_p6##x,_p11##y,z,c)), \ + (I[29] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[53] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[77] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[101] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[125] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[149] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[173] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[197] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[221] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[245] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[269] = (T)(img)(_p6##x,y,z,c)), \ + (I[293] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[317] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[341] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[365] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[389] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[413] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[437] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[461] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[485] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[509] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[533] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[557] = (T)(img)(_p6##x,_n12##y,z,c)), \ + (I[6] = (T)(img)(_p5##x,_p11##y,z,c)), \ + (I[30] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[54] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[78] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[102] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[126] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[150] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[174] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[198] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[222] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[246] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[270] = (T)(img)(_p5##x,y,z,c)), \ + (I[294] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[318] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[342] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[366] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[390] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[414] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[438] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[462] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[486] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[510] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[534] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[558] = (T)(img)(_p5##x,_n12##y,z,c)), \ + (I[7] = (T)(img)(_p4##x,_p11##y,z,c)), \ + (I[31] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[55] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[79] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[103] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[127] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[151] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[175] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[199] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[223] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[247] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[271] = (T)(img)(_p4##x,y,z,c)), \ + (I[295] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[319] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[343] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[367] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[391] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[415] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[439] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[463] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[487] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[511] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[535] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[559] = (T)(img)(_p4##x,_n12##y,z,c)), \ + (I[8] = (T)(img)(_p3##x,_p11##y,z,c)), \ + (I[32] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[56] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[80] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[104] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[128] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[152] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[176] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[200] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[224] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[248] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[272] = (T)(img)(_p3##x,y,z,c)), \ + (I[296] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[320] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[344] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[368] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[392] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[416] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[440] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[464] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[488] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[512] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[536] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[560] = (T)(img)(_p3##x,_n12##y,z,c)), \ + (I[9] = (T)(img)(_p2##x,_p11##y,z,c)), \ + (I[33] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[57] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[81] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[105] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[129] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[153] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[177] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[201] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[225] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[249] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[273] = (T)(img)(_p2##x,y,z,c)), \ + (I[297] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[321] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[345] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[369] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[393] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[417] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[441] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[465] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[489] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[513] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[537] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[561] = (T)(img)(_p2##x,_n12##y,z,c)), \ + (I[10] = (T)(img)(_p1##x,_p11##y,z,c)), \ + (I[34] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[58] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[82] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[106] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[130] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[154] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[178] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[202] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[226] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[250] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[274] = (T)(img)(_p1##x,y,z,c)), \ + (I[298] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[322] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[346] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[370] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[394] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[418] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[442] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[466] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[490] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[514] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[538] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[562] = (T)(img)(_p1##x,_n12##y,z,c)), \ + (I[11] = (T)(img)(x,_p11##y,z,c)), \ + (I[35] = (T)(img)(x,_p10##y,z,c)), \ + (I[59] = (T)(img)(x,_p9##y,z,c)), \ + (I[83] = (T)(img)(x,_p8##y,z,c)), \ + (I[107] = (T)(img)(x,_p7##y,z,c)), \ + (I[131] = (T)(img)(x,_p6##y,z,c)), \ + (I[155] = (T)(img)(x,_p5##y,z,c)), \ + (I[179] = (T)(img)(x,_p4##y,z,c)), \ + (I[203] = (T)(img)(x,_p3##y,z,c)), \ + (I[227] = (T)(img)(x,_p2##y,z,c)), \ + (I[251] = (T)(img)(x,_p1##y,z,c)), \ + (I[275] = (T)(img)(x,y,z,c)), \ + (I[299] = (T)(img)(x,_n1##y,z,c)), \ + (I[323] = (T)(img)(x,_n2##y,z,c)), \ + (I[347] = (T)(img)(x,_n3##y,z,c)), \ + (I[371] = (T)(img)(x,_n4##y,z,c)), \ + (I[395] = (T)(img)(x,_n5##y,z,c)), \ + (I[419] = (T)(img)(x,_n6##y,z,c)), \ + (I[443] = (T)(img)(x,_n7##y,z,c)), \ + (I[467] = (T)(img)(x,_n8##y,z,c)), \ + (I[491] = (T)(img)(x,_n9##y,z,c)), \ + (I[515] = (T)(img)(x,_n10##y,z,c)), \ + (I[539] = (T)(img)(x,_n11##y,z,c)), \ + (I[563] = (T)(img)(x,_n12##y,z,c)), \ + (I[12] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[36] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[60] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[84] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[108] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[132] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[156] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[180] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[204] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[228] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[252] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[276] = (T)(img)(_n1##x,y,z,c)), \ + (I[300] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[324] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[348] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[372] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[396] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[420] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[444] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[468] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[492] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[516] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[540] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[564] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[13] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[37] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[61] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[85] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[109] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[133] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[157] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[181] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[205] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[229] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[253] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[277] = (T)(img)(_n2##x,y,z,c)), \ + (I[301] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[325] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[349] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[373] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[397] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[421] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[445] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[469] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[493] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[517] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[541] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[565] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[14] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[38] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[62] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[86] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[110] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[134] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[158] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[182] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[206] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[230] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[254] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[278] = (T)(img)(_n3##x,y,z,c)), \ + (I[302] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[326] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[350] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[374] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[398] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[422] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[446] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[470] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[494] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[518] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[542] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[566] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[15] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[39] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[63] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[87] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[111] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[135] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[159] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[183] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[207] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[231] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[255] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[279] = (T)(img)(_n4##x,y,z,c)), \ + (I[303] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[327] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[351] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[375] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[399] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[423] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[447] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[471] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[495] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[519] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[543] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[567] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[16] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[40] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[64] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[88] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[112] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[136] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[160] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[184] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[208] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[232] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[256] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[280] = (T)(img)(_n5##x,y,z,c)), \ + (I[304] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[328] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[352] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[376] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[400] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[424] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[448] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[472] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[496] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[520] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[544] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[568] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[17] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[41] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[65] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[89] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[113] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[137] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[161] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[185] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[209] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[233] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[257] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[281] = (T)(img)(_n6##x,y,z,c)), \ + (I[305] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[329] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[353] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[377] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[401] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[425] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[449] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[473] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[497] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[521] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[545] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[569] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[18] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[42] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[66] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[90] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[114] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[138] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[162] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[186] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[210] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[234] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[258] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[282] = (T)(img)(_n7##x,y,z,c)), \ + (I[306] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[330] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[354] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[378] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[402] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[426] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[450] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[474] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[498] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[522] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[546] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[570] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[19] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[43] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[67] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[91] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[115] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[139] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[163] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[187] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[211] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[235] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[259] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[283] = (T)(img)(_n8##x,y,z,c)), \ + (I[307] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[331] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[355] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[379] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[403] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[427] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[451] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[475] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[499] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[523] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[547] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[571] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[20] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[44] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[68] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[92] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[116] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[140] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[164] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[188] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[212] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[236] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[260] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[284] = (T)(img)(_n9##x,y,z,c)), \ + (I[308] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[332] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[356] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[380] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[404] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[428] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[452] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[476] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[500] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[524] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[548] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[572] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[21] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[45] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[69] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[93] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[117] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[141] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[165] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[189] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[213] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[237] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[261] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[285] = (T)(img)(_n10##x,y,z,c)), \ + (I[309] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[333] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[357] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[381] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[405] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[429] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[453] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[477] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[501] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[525] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[549] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[573] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[22] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[46] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[70] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[94] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[118] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[142] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[166] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[190] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[214] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[238] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[262] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[286] = (T)(img)(_n11##x,y,z,c)), \ + (I[310] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[334] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[358] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[382] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[406] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[430] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[454] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[478] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[502] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[526] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[550] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[574] = (T)(img)(_n11##x,_n12##y,z,c)), \ + x + 12>=(img).width()?(img).width() - 1:x + 12); \ + x<=(int)(x1) && ((_n12##x<(img).width() && ( \ + (I[23] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[47] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[71] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[95] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[119] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[143] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[167] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[191] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[215] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[239] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[263] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[287] = (T)(img)(_n12##x,y,z,c)), \ + (I[311] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[335] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[359] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[383] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[407] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[431] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[455] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[479] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[503] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[527] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[551] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[575] = (T)(img)(_n12##x,_n12##y,z,c)),1)) || \ + _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], \ + I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], \ + I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], \ + I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], \ + I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], \ + I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], \ + I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], \ + I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], \ + I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], \ + I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], \ + I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], \ + I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], \ + I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], \ + I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], \ + I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], \ + I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], \ + I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], \ + _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x) + +#define cimg_get24x24(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p11##x,_p11##y,z,c), I[1] = (T)(img)(_p10##x,_p11##y,z,c), I[2] = (T)(img)(_p9##x,_p11##y,z,c), I[3] = (T)(img)(_p8##x,_p11##y,z,c), I[4] = (T)(img)(_p7##x,_p11##y,z,c), I[5] = (T)(img)(_p6##x,_p11##y,z,c), I[6] = (T)(img)(_p5##x,_p11##y,z,c), I[7] = (T)(img)(_p4##x,_p11##y,z,c), I[8] = (T)(img)(_p3##x,_p11##y,z,c), I[9] = (T)(img)(_p2##x,_p11##y,z,c), I[10] = (T)(img)(_p1##x,_p11##y,z,c), I[11] = (T)(img)(x,_p11##y,z,c), I[12] = (T)(img)(_n1##x,_p11##y,z,c), I[13] = (T)(img)(_n2##x,_p11##y,z,c), I[14] = (T)(img)(_n3##x,_p11##y,z,c), I[15] = (T)(img)(_n4##x,_p11##y,z,c), I[16] = (T)(img)(_n5##x,_p11##y,z,c), I[17] = (T)(img)(_n6##x,_p11##y,z,c), I[18] = (T)(img)(_n7##x,_p11##y,z,c), I[19] = (T)(img)(_n8##x,_p11##y,z,c), I[20] = (T)(img)(_n9##x,_p11##y,z,c), I[21] = (T)(img)(_n10##x,_p11##y,z,c), I[22] = (T)(img)(_n11##x,_p11##y,z,c), I[23] = (T)(img)(_n12##x,_p11##y,z,c), \ + I[24] = (T)(img)(_p11##x,_p10##y,z,c), I[25] = (T)(img)(_p10##x,_p10##y,z,c), I[26] = (T)(img)(_p9##x,_p10##y,z,c), I[27] = (T)(img)(_p8##x,_p10##y,z,c), I[28] = (T)(img)(_p7##x,_p10##y,z,c), I[29] = (T)(img)(_p6##x,_p10##y,z,c), I[30] = (T)(img)(_p5##x,_p10##y,z,c), I[31] = (T)(img)(_p4##x,_p10##y,z,c), I[32] = (T)(img)(_p3##x,_p10##y,z,c), I[33] = (T)(img)(_p2##x,_p10##y,z,c), I[34] = (T)(img)(_p1##x,_p10##y,z,c), I[35] = (T)(img)(x,_p10##y,z,c), I[36] = (T)(img)(_n1##x,_p10##y,z,c), I[37] = (T)(img)(_n2##x,_p10##y,z,c), I[38] = (T)(img)(_n3##x,_p10##y,z,c), I[39] = (T)(img)(_n4##x,_p10##y,z,c), I[40] = (T)(img)(_n5##x,_p10##y,z,c), I[41] = (T)(img)(_n6##x,_p10##y,z,c), I[42] = (T)(img)(_n7##x,_p10##y,z,c), I[43] = (T)(img)(_n8##x,_p10##y,z,c), I[44] = (T)(img)(_n9##x,_p10##y,z,c), I[45] = (T)(img)(_n10##x,_p10##y,z,c), I[46] = (T)(img)(_n11##x,_p10##y,z,c), I[47] = (T)(img)(_n12##x,_p10##y,z,c), \ + I[48] = (T)(img)(_p11##x,_p9##y,z,c), I[49] = (T)(img)(_p10##x,_p9##y,z,c), I[50] = (T)(img)(_p9##x,_p9##y,z,c), I[51] = (T)(img)(_p8##x,_p9##y,z,c), I[52] = (T)(img)(_p7##x,_p9##y,z,c), I[53] = (T)(img)(_p6##x,_p9##y,z,c), I[54] = (T)(img)(_p5##x,_p9##y,z,c), I[55] = (T)(img)(_p4##x,_p9##y,z,c), I[56] = (T)(img)(_p3##x,_p9##y,z,c), I[57] = (T)(img)(_p2##x,_p9##y,z,c), I[58] = (T)(img)(_p1##x,_p9##y,z,c), I[59] = (T)(img)(x,_p9##y,z,c), I[60] = (T)(img)(_n1##x,_p9##y,z,c), I[61] = (T)(img)(_n2##x,_p9##y,z,c), I[62] = (T)(img)(_n3##x,_p9##y,z,c), I[63] = (T)(img)(_n4##x,_p9##y,z,c), I[64] = (T)(img)(_n5##x,_p9##y,z,c), I[65] = (T)(img)(_n6##x,_p9##y,z,c), I[66] = (T)(img)(_n7##x,_p9##y,z,c), I[67] = (T)(img)(_n8##x,_p9##y,z,c), I[68] = (T)(img)(_n9##x,_p9##y,z,c), I[69] = (T)(img)(_n10##x,_p9##y,z,c), I[70] = (T)(img)(_n11##x,_p9##y,z,c), I[71] = (T)(img)(_n12##x,_p9##y,z,c), \ + I[72] = (T)(img)(_p11##x,_p8##y,z,c), I[73] = (T)(img)(_p10##x,_p8##y,z,c), I[74] = (T)(img)(_p9##x,_p8##y,z,c), I[75] = (T)(img)(_p8##x,_p8##y,z,c), I[76] = (T)(img)(_p7##x,_p8##y,z,c), I[77] = (T)(img)(_p6##x,_p8##y,z,c), I[78] = (T)(img)(_p5##x,_p8##y,z,c), I[79] = (T)(img)(_p4##x,_p8##y,z,c), I[80] = (T)(img)(_p3##x,_p8##y,z,c), I[81] = (T)(img)(_p2##x,_p8##y,z,c), I[82] = (T)(img)(_p1##x,_p8##y,z,c), I[83] = (T)(img)(x,_p8##y,z,c), I[84] = (T)(img)(_n1##x,_p8##y,z,c), I[85] = (T)(img)(_n2##x,_p8##y,z,c), I[86] = (T)(img)(_n3##x,_p8##y,z,c), I[87] = (T)(img)(_n4##x,_p8##y,z,c), I[88] = (T)(img)(_n5##x,_p8##y,z,c), I[89] = (T)(img)(_n6##x,_p8##y,z,c), I[90] = (T)(img)(_n7##x,_p8##y,z,c), I[91] = (T)(img)(_n8##x,_p8##y,z,c), I[92] = (T)(img)(_n9##x,_p8##y,z,c), I[93] = (T)(img)(_n10##x,_p8##y,z,c), I[94] = (T)(img)(_n11##x,_p8##y,z,c), I[95] = (T)(img)(_n12##x,_p8##y,z,c), \ + I[96] = (T)(img)(_p11##x,_p7##y,z,c), I[97] = (T)(img)(_p10##x,_p7##y,z,c), I[98] = (T)(img)(_p9##x,_p7##y,z,c), I[99] = (T)(img)(_p8##x,_p7##y,z,c), I[100] = (T)(img)(_p7##x,_p7##y,z,c), I[101] = (T)(img)(_p6##x,_p7##y,z,c), I[102] = (T)(img)(_p5##x,_p7##y,z,c), I[103] = (T)(img)(_p4##x,_p7##y,z,c), I[104] = (T)(img)(_p3##x,_p7##y,z,c), I[105] = (T)(img)(_p2##x,_p7##y,z,c), I[106] = (T)(img)(_p1##x,_p7##y,z,c), I[107] = (T)(img)(x,_p7##y,z,c), I[108] = (T)(img)(_n1##x,_p7##y,z,c), I[109] = (T)(img)(_n2##x,_p7##y,z,c), I[110] = (T)(img)(_n3##x,_p7##y,z,c), I[111] = (T)(img)(_n4##x,_p7##y,z,c), I[112] = (T)(img)(_n5##x,_p7##y,z,c), I[113] = (T)(img)(_n6##x,_p7##y,z,c), I[114] = (T)(img)(_n7##x,_p7##y,z,c), I[115] = (T)(img)(_n8##x,_p7##y,z,c), I[116] = (T)(img)(_n9##x,_p7##y,z,c), I[117] = (T)(img)(_n10##x,_p7##y,z,c), I[118] = (T)(img)(_n11##x,_p7##y,z,c), I[119] = (T)(img)(_n12##x,_p7##y,z,c), \ + I[120] = (T)(img)(_p11##x,_p6##y,z,c), I[121] = (T)(img)(_p10##x,_p6##y,z,c), I[122] = (T)(img)(_p9##x,_p6##y,z,c), I[123] = (T)(img)(_p8##x,_p6##y,z,c), I[124] = (T)(img)(_p7##x,_p6##y,z,c), I[125] = (T)(img)(_p6##x,_p6##y,z,c), I[126] = (T)(img)(_p5##x,_p6##y,z,c), I[127] = (T)(img)(_p4##x,_p6##y,z,c), I[128] = (T)(img)(_p3##x,_p6##y,z,c), I[129] = (T)(img)(_p2##x,_p6##y,z,c), I[130] = (T)(img)(_p1##x,_p6##y,z,c), I[131] = (T)(img)(x,_p6##y,z,c), I[132] = (T)(img)(_n1##x,_p6##y,z,c), I[133] = (T)(img)(_n2##x,_p6##y,z,c), I[134] = (T)(img)(_n3##x,_p6##y,z,c), I[135] = (T)(img)(_n4##x,_p6##y,z,c), I[136] = (T)(img)(_n5##x,_p6##y,z,c), I[137] = (T)(img)(_n6##x,_p6##y,z,c), I[138] = (T)(img)(_n7##x,_p6##y,z,c), I[139] = (T)(img)(_n8##x,_p6##y,z,c), I[140] = (T)(img)(_n9##x,_p6##y,z,c), I[141] = (T)(img)(_n10##x,_p6##y,z,c), I[142] = (T)(img)(_n11##x,_p6##y,z,c), I[143] = (T)(img)(_n12##x,_p6##y,z,c), \ + I[144] = (T)(img)(_p11##x,_p5##y,z,c), I[145] = (T)(img)(_p10##x,_p5##y,z,c), I[146] = (T)(img)(_p9##x,_p5##y,z,c), I[147] = (T)(img)(_p8##x,_p5##y,z,c), I[148] = (T)(img)(_p7##x,_p5##y,z,c), I[149] = (T)(img)(_p6##x,_p5##y,z,c), I[150] = (T)(img)(_p5##x,_p5##y,z,c), I[151] = (T)(img)(_p4##x,_p5##y,z,c), I[152] = (T)(img)(_p3##x,_p5##y,z,c), I[153] = (T)(img)(_p2##x,_p5##y,z,c), I[154] = (T)(img)(_p1##x,_p5##y,z,c), I[155] = (T)(img)(x,_p5##y,z,c), I[156] = (T)(img)(_n1##x,_p5##y,z,c), I[157] = (T)(img)(_n2##x,_p5##y,z,c), I[158] = (T)(img)(_n3##x,_p5##y,z,c), I[159] = (T)(img)(_n4##x,_p5##y,z,c), I[160] = (T)(img)(_n5##x,_p5##y,z,c), I[161] = (T)(img)(_n6##x,_p5##y,z,c), I[162] = (T)(img)(_n7##x,_p5##y,z,c), I[163] = (T)(img)(_n8##x,_p5##y,z,c), I[164] = (T)(img)(_n9##x,_p5##y,z,c), I[165] = (T)(img)(_n10##x,_p5##y,z,c), I[166] = (T)(img)(_n11##x,_p5##y,z,c), I[167] = (T)(img)(_n12##x,_p5##y,z,c), \ + I[168] = (T)(img)(_p11##x,_p4##y,z,c), I[169] = (T)(img)(_p10##x,_p4##y,z,c), I[170] = (T)(img)(_p9##x,_p4##y,z,c), I[171] = (T)(img)(_p8##x,_p4##y,z,c), I[172] = (T)(img)(_p7##x,_p4##y,z,c), I[173] = (T)(img)(_p6##x,_p4##y,z,c), I[174] = (T)(img)(_p5##x,_p4##y,z,c), I[175] = (T)(img)(_p4##x,_p4##y,z,c), I[176] = (T)(img)(_p3##x,_p4##y,z,c), I[177] = (T)(img)(_p2##x,_p4##y,z,c), I[178] = (T)(img)(_p1##x,_p4##y,z,c), I[179] = (T)(img)(x,_p4##y,z,c), I[180] = (T)(img)(_n1##x,_p4##y,z,c), I[181] = (T)(img)(_n2##x,_p4##y,z,c), I[182] = (T)(img)(_n3##x,_p4##y,z,c), I[183] = (T)(img)(_n4##x,_p4##y,z,c), I[184] = (T)(img)(_n5##x,_p4##y,z,c), I[185] = (T)(img)(_n6##x,_p4##y,z,c), I[186] = (T)(img)(_n7##x,_p4##y,z,c), I[187] = (T)(img)(_n8##x,_p4##y,z,c), I[188] = (T)(img)(_n9##x,_p4##y,z,c), I[189] = (T)(img)(_n10##x,_p4##y,z,c), I[190] = (T)(img)(_n11##x,_p4##y,z,c), I[191] = (T)(img)(_n12##x,_p4##y,z,c), \ + I[192] = (T)(img)(_p11##x,_p3##y,z,c), I[193] = (T)(img)(_p10##x,_p3##y,z,c), I[194] = (T)(img)(_p9##x,_p3##y,z,c), I[195] = (T)(img)(_p8##x,_p3##y,z,c), I[196] = (T)(img)(_p7##x,_p3##y,z,c), I[197] = (T)(img)(_p6##x,_p3##y,z,c), I[198] = (T)(img)(_p5##x,_p3##y,z,c), I[199] = (T)(img)(_p4##x,_p3##y,z,c), I[200] = (T)(img)(_p3##x,_p3##y,z,c), I[201] = (T)(img)(_p2##x,_p3##y,z,c), I[202] = (T)(img)(_p1##x,_p3##y,z,c), I[203] = (T)(img)(x,_p3##y,z,c), I[204] = (T)(img)(_n1##x,_p3##y,z,c), I[205] = (T)(img)(_n2##x,_p3##y,z,c), I[206] = (T)(img)(_n3##x,_p3##y,z,c), I[207] = (T)(img)(_n4##x,_p3##y,z,c), I[208] = (T)(img)(_n5##x,_p3##y,z,c), I[209] = (T)(img)(_n6##x,_p3##y,z,c), I[210] = (T)(img)(_n7##x,_p3##y,z,c), I[211] = (T)(img)(_n8##x,_p3##y,z,c), I[212] = (T)(img)(_n9##x,_p3##y,z,c), I[213] = (T)(img)(_n10##x,_p3##y,z,c), I[214] = (T)(img)(_n11##x,_p3##y,z,c), I[215] = (T)(img)(_n12##x,_p3##y,z,c), \ + I[216] = (T)(img)(_p11##x,_p2##y,z,c), I[217] = (T)(img)(_p10##x,_p2##y,z,c), I[218] = (T)(img)(_p9##x,_p2##y,z,c), I[219] = (T)(img)(_p8##x,_p2##y,z,c), I[220] = (T)(img)(_p7##x,_p2##y,z,c), I[221] = (T)(img)(_p6##x,_p2##y,z,c), I[222] = (T)(img)(_p5##x,_p2##y,z,c), I[223] = (T)(img)(_p4##x,_p2##y,z,c), I[224] = (T)(img)(_p3##x,_p2##y,z,c), I[225] = (T)(img)(_p2##x,_p2##y,z,c), I[226] = (T)(img)(_p1##x,_p2##y,z,c), I[227] = (T)(img)(x,_p2##y,z,c), I[228] = (T)(img)(_n1##x,_p2##y,z,c), I[229] = (T)(img)(_n2##x,_p2##y,z,c), I[230] = (T)(img)(_n3##x,_p2##y,z,c), I[231] = (T)(img)(_n4##x,_p2##y,z,c), I[232] = (T)(img)(_n5##x,_p2##y,z,c), I[233] = (T)(img)(_n6##x,_p2##y,z,c), I[234] = (T)(img)(_n7##x,_p2##y,z,c), I[235] = (T)(img)(_n8##x,_p2##y,z,c), I[236] = (T)(img)(_n9##x,_p2##y,z,c), I[237] = (T)(img)(_n10##x,_p2##y,z,c), I[238] = (T)(img)(_n11##x,_p2##y,z,c), I[239] = (T)(img)(_n12##x,_p2##y,z,c), \ + I[240] = (T)(img)(_p11##x,_p1##y,z,c), I[241] = (T)(img)(_p10##x,_p1##y,z,c), I[242] = (T)(img)(_p9##x,_p1##y,z,c), I[243] = (T)(img)(_p8##x,_p1##y,z,c), I[244] = (T)(img)(_p7##x,_p1##y,z,c), I[245] = (T)(img)(_p6##x,_p1##y,z,c), I[246] = (T)(img)(_p5##x,_p1##y,z,c), I[247] = (T)(img)(_p4##x,_p1##y,z,c), I[248] = (T)(img)(_p3##x,_p1##y,z,c), I[249] = (T)(img)(_p2##x,_p1##y,z,c), I[250] = (T)(img)(_p1##x,_p1##y,z,c), I[251] = (T)(img)(x,_p1##y,z,c), I[252] = (T)(img)(_n1##x,_p1##y,z,c), I[253] = (T)(img)(_n2##x,_p1##y,z,c), I[254] = (T)(img)(_n3##x,_p1##y,z,c), I[255] = (T)(img)(_n4##x,_p1##y,z,c), I[256] = (T)(img)(_n5##x,_p1##y,z,c), I[257] = (T)(img)(_n6##x,_p1##y,z,c), I[258] = (T)(img)(_n7##x,_p1##y,z,c), I[259] = (T)(img)(_n8##x,_p1##y,z,c), I[260] = (T)(img)(_n9##x,_p1##y,z,c), I[261] = (T)(img)(_n10##x,_p1##y,z,c), I[262] = (T)(img)(_n11##x,_p1##y,z,c), I[263] = (T)(img)(_n12##x,_p1##y,z,c), \ + I[264] = (T)(img)(_p11##x,y,z,c), I[265] = (T)(img)(_p10##x,y,z,c), I[266] = (T)(img)(_p9##x,y,z,c), I[267] = (T)(img)(_p8##x,y,z,c), I[268] = (T)(img)(_p7##x,y,z,c), I[269] = (T)(img)(_p6##x,y,z,c), I[270] = (T)(img)(_p5##x,y,z,c), I[271] = (T)(img)(_p4##x,y,z,c), I[272] = (T)(img)(_p3##x,y,z,c), I[273] = (T)(img)(_p2##x,y,z,c), I[274] = (T)(img)(_p1##x,y,z,c), I[275] = (T)(img)(x,y,z,c), I[276] = (T)(img)(_n1##x,y,z,c), I[277] = (T)(img)(_n2##x,y,z,c), I[278] = (T)(img)(_n3##x,y,z,c), I[279] = (T)(img)(_n4##x,y,z,c), I[280] = (T)(img)(_n5##x,y,z,c), I[281] = (T)(img)(_n6##x,y,z,c), I[282] = (T)(img)(_n7##x,y,z,c), I[283] = (T)(img)(_n8##x,y,z,c), I[284] = (T)(img)(_n9##x,y,z,c), I[285] = (T)(img)(_n10##x,y,z,c), I[286] = (T)(img)(_n11##x,y,z,c), I[287] = (T)(img)(_n12##x,y,z,c), \ + I[288] = (T)(img)(_p11##x,_n1##y,z,c), I[289] = (T)(img)(_p10##x,_n1##y,z,c), I[290] = (T)(img)(_p9##x,_n1##y,z,c), I[291] = (T)(img)(_p8##x,_n1##y,z,c), I[292] = (T)(img)(_p7##x,_n1##y,z,c), I[293] = (T)(img)(_p6##x,_n1##y,z,c), I[294] = (T)(img)(_p5##x,_n1##y,z,c), I[295] = (T)(img)(_p4##x,_n1##y,z,c), I[296] = (T)(img)(_p3##x,_n1##y,z,c), I[297] = (T)(img)(_p2##x,_n1##y,z,c), I[298] = (T)(img)(_p1##x,_n1##y,z,c), I[299] = (T)(img)(x,_n1##y,z,c), I[300] = (T)(img)(_n1##x,_n1##y,z,c), I[301] = (T)(img)(_n2##x,_n1##y,z,c), I[302] = (T)(img)(_n3##x,_n1##y,z,c), I[303] = (T)(img)(_n4##x,_n1##y,z,c), I[304] = (T)(img)(_n5##x,_n1##y,z,c), I[305] = (T)(img)(_n6##x,_n1##y,z,c), I[306] = (T)(img)(_n7##x,_n1##y,z,c), I[307] = (T)(img)(_n8##x,_n1##y,z,c), I[308] = (T)(img)(_n9##x,_n1##y,z,c), I[309] = (T)(img)(_n10##x,_n1##y,z,c), I[310] = (T)(img)(_n11##x,_n1##y,z,c), I[311] = (T)(img)(_n12##x,_n1##y,z,c), \ + I[312] = (T)(img)(_p11##x,_n2##y,z,c), I[313] = (T)(img)(_p10##x,_n2##y,z,c), I[314] = (T)(img)(_p9##x,_n2##y,z,c), I[315] = (T)(img)(_p8##x,_n2##y,z,c), I[316] = (T)(img)(_p7##x,_n2##y,z,c), I[317] = (T)(img)(_p6##x,_n2##y,z,c), I[318] = (T)(img)(_p5##x,_n2##y,z,c), I[319] = (T)(img)(_p4##x,_n2##y,z,c), I[320] = (T)(img)(_p3##x,_n2##y,z,c), I[321] = (T)(img)(_p2##x,_n2##y,z,c), I[322] = (T)(img)(_p1##x,_n2##y,z,c), I[323] = (T)(img)(x,_n2##y,z,c), I[324] = (T)(img)(_n1##x,_n2##y,z,c), I[325] = (T)(img)(_n2##x,_n2##y,z,c), I[326] = (T)(img)(_n3##x,_n2##y,z,c), I[327] = (T)(img)(_n4##x,_n2##y,z,c), I[328] = (T)(img)(_n5##x,_n2##y,z,c), I[329] = (T)(img)(_n6##x,_n2##y,z,c), I[330] = (T)(img)(_n7##x,_n2##y,z,c), I[331] = (T)(img)(_n8##x,_n2##y,z,c), I[332] = (T)(img)(_n9##x,_n2##y,z,c), I[333] = (T)(img)(_n10##x,_n2##y,z,c), I[334] = (T)(img)(_n11##x,_n2##y,z,c), I[335] = (T)(img)(_n12##x,_n2##y,z,c), \ + I[336] = (T)(img)(_p11##x,_n3##y,z,c), I[337] = (T)(img)(_p10##x,_n3##y,z,c), I[338] = (T)(img)(_p9##x,_n3##y,z,c), I[339] = (T)(img)(_p8##x,_n3##y,z,c), I[340] = (T)(img)(_p7##x,_n3##y,z,c), I[341] = (T)(img)(_p6##x,_n3##y,z,c), I[342] = (T)(img)(_p5##x,_n3##y,z,c), I[343] = (T)(img)(_p4##x,_n3##y,z,c), I[344] = (T)(img)(_p3##x,_n3##y,z,c), I[345] = (T)(img)(_p2##x,_n3##y,z,c), I[346] = (T)(img)(_p1##x,_n3##y,z,c), I[347] = (T)(img)(x,_n3##y,z,c), I[348] = (T)(img)(_n1##x,_n3##y,z,c), I[349] = (T)(img)(_n2##x,_n3##y,z,c), I[350] = (T)(img)(_n3##x,_n3##y,z,c), I[351] = (T)(img)(_n4##x,_n3##y,z,c), I[352] = (T)(img)(_n5##x,_n3##y,z,c), I[353] = (T)(img)(_n6##x,_n3##y,z,c), I[354] = (T)(img)(_n7##x,_n3##y,z,c), I[355] = (T)(img)(_n8##x,_n3##y,z,c), I[356] = (T)(img)(_n9##x,_n3##y,z,c), I[357] = (T)(img)(_n10##x,_n3##y,z,c), I[358] = (T)(img)(_n11##x,_n3##y,z,c), I[359] = (T)(img)(_n12##x,_n3##y,z,c), \ + I[360] = (T)(img)(_p11##x,_n4##y,z,c), I[361] = (T)(img)(_p10##x,_n4##y,z,c), I[362] = (T)(img)(_p9##x,_n4##y,z,c), I[363] = (T)(img)(_p8##x,_n4##y,z,c), I[364] = (T)(img)(_p7##x,_n4##y,z,c), I[365] = (T)(img)(_p6##x,_n4##y,z,c), I[366] = (T)(img)(_p5##x,_n4##y,z,c), I[367] = (T)(img)(_p4##x,_n4##y,z,c), I[368] = (T)(img)(_p3##x,_n4##y,z,c), I[369] = (T)(img)(_p2##x,_n4##y,z,c), I[370] = (T)(img)(_p1##x,_n4##y,z,c), I[371] = (T)(img)(x,_n4##y,z,c), I[372] = (T)(img)(_n1##x,_n4##y,z,c), I[373] = (T)(img)(_n2##x,_n4##y,z,c), I[374] = (T)(img)(_n3##x,_n4##y,z,c), I[375] = (T)(img)(_n4##x,_n4##y,z,c), I[376] = (T)(img)(_n5##x,_n4##y,z,c), I[377] = (T)(img)(_n6##x,_n4##y,z,c), I[378] = (T)(img)(_n7##x,_n4##y,z,c), I[379] = (T)(img)(_n8##x,_n4##y,z,c), I[380] = (T)(img)(_n9##x,_n4##y,z,c), I[381] = (T)(img)(_n10##x,_n4##y,z,c), I[382] = (T)(img)(_n11##x,_n4##y,z,c), I[383] = (T)(img)(_n12##x,_n4##y,z,c), \ + I[384] = (T)(img)(_p11##x,_n5##y,z,c), I[385] = (T)(img)(_p10##x,_n5##y,z,c), I[386] = (T)(img)(_p9##x,_n5##y,z,c), I[387] = (T)(img)(_p8##x,_n5##y,z,c), I[388] = (T)(img)(_p7##x,_n5##y,z,c), I[389] = (T)(img)(_p6##x,_n5##y,z,c), I[390] = (T)(img)(_p5##x,_n5##y,z,c), I[391] = (T)(img)(_p4##x,_n5##y,z,c), I[392] = (T)(img)(_p3##x,_n5##y,z,c), I[393] = (T)(img)(_p2##x,_n5##y,z,c), I[394] = (T)(img)(_p1##x,_n5##y,z,c), I[395] = (T)(img)(x,_n5##y,z,c), I[396] = (T)(img)(_n1##x,_n5##y,z,c), I[397] = (T)(img)(_n2##x,_n5##y,z,c), I[398] = (T)(img)(_n3##x,_n5##y,z,c), I[399] = (T)(img)(_n4##x,_n5##y,z,c), I[400] = (T)(img)(_n5##x,_n5##y,z,c), I[401] = (T)(img)(_n6##x,_n5##y,z,c), I[402] = (T)(img)(_n7##x,_n5##y,z,c), I[403] = (T)(img)(_n8##x,_n5##y,z,c), I[404] = (T)(img)(_n9##x,_n5##y,z,c), I[405] = (T)(img)(_n10##x,_n5##y,z,c), I[406] = (T)(img)(_n11##x,_n5##y,z,c), I[407] = (T)(img)(_n12##x,_n5##y,z,c), \ + I[408] = (T)(img)(_p11##x,_n6##y,z,c), I[409] = (T)(img)(_p10##x,_n6##y,z,c), I[410] = (T)(img)(_p9##x,_n6##y,z,c), I[411] = (T)(img)(_p8##x,_n6##y,z,c), I[412] = (T)(img)(_p7##x,_n6##y,z,c), I[413] = (T)(img)(_p6##x,_n6##y,z,c), I[414] = (T)(img)(_p5##x,_n6##y,z,c), I[415] = (T)(img)(_p4##x,_n6##y,z,c), I[416] = (T)(img)(_p3##x,_n6##y,z,c), I[417] = (T)(img)(_p2##x,_n6##y,z,c), I[418] = (T)(img)(_p1##x,_n6##y,z,c), I[419] = (T)(img)(x,_n6##y,z,c), I[420] = (T)(img)(_n1##x,_n6##y,z,c), I[421] = (T)(img)(_n2##x,_n6##y,z,c), I[422] = (T)(img)(_n3##x,_n6##y,z,c), I[423] = (T)(img)(_n4##x,_n6##y,z,c), I[424] = (T)(img)(_n5##x,_n6##y,z,c), I[425] = (T)(img)(_n6##x,_n6##y,z,c), I[426] = (T)(img)(_n7##x,_n6##y,z,c), I[427] = (T)(img)(_n8##x,_n6##y,z,c), I[428] = (T)(img)(_n9##x,_n6##y,z,c), I[429] = (T)(img)(_n10##x,_n6##y,z,c), I[430] = (T)(img)(_n11##x,_n6##y,z,c), I[431] = (T)(img)(_n12##x,_n6##y,z,c), \ + I[432] = (T)(img)(_p11##x,_n7##y,z,c), I[433] = (T)(img)(_p10##x,_n7##y,z,c), I[434] = (T)(img)(_p9##x,_n7##y,z,c), I[435] = (T)(img)(_p8##x,_n7##y,z,c), I[436] = (T)(img)(_p7##x,_n7##y,z,c), I[437] = (T)(img)(_p6##x,_n7##y,z,c), I[438] = (T)(img)(_p5##x,_n7##y,z,c), I[439] = (T)(img)(_p4##x,_n7##y,z,c), I[440] = (T)(img)(_p3##x,_n7##y,z,c), I[441] = (T)(img)(_p2##x,_n7##y,z,c), I[442] = (T)(img)(_p1##x,_n7##y,z,c), I[443] = (T)(img)(x,_n7##y,z,c), I[444] = (T)(img)(_n1##x,_n7##y,z,c), I[445] = (T)(img)(_n2##x,_n7##y,z,c), I[446] = (T)(img)(_n3##x,_n7##y,z,c), I[447] = (T)(img)(_n4##x,_n7##y,z,c), I[448] = (T)(img)(_n5##x,_n7##y,z,c), I[449] = (T)(img)(_n6##x,_n7##y,z,c), I[450] = (T)(img)(_n7##x,_n7##y,z,c), I[451] = (T)(img)(_n8##x,_n7##y,z,c), I[452] = (T)(img)(_n9##x,_n7##y,z,c), I[453] = (T)(img)(_n10##x,_n7##y,z,c), I[454] = (T)(img)(_n11##x,_n7##y,z,c), I[455] = (T)(img)(_n12##x,_n7##y,z,c), \ + I[456] = (T)(img)(_p11##x,_n8##y,z,c), I[457] = (T)(img)(_p10##x,_n8##y,z,c), I[458] = (T)(img)(_p9##x,_n8##y,z,c), I[459] = (T)(img)(_p8##x,_n8##y,z,c), I[460] = (T)(img)(_p7##x,_n8##y,z,c), I[461] = (T)(img)(_p6##x,_n8##y,z,c), I[462] = (T)(img)(_p5##x,_n8##y,z,c), I[463] = (T)(img)(_p4##x,_n8##y,z,c), I[464] = (T)(img)(_p3##x,_n8##y,z,c), I[465] = (T)(img)(_p2##x,_n8##y,z,c), I[466] = (T)(img)(_p1##x,_n8##y,z,c), I[467] = (T)(img)(x,_n8##y,z,c), I[468] = (T)(img)(_n1##x,_n8##y,z,c), I[469] = (T)(img)(_n2##x,_n8##y,z,c), I[470] = (T)(img)(_n3##x,_n8##y,z,c), I[471] = (T)(img)(_n4##x,_n8##y,z,c), I[472] = (T)(img)(_n5##x,_n8##y,z,c), I[473] = (T)(img)(_n6##x,_n8##y,z,c), I[474] = (T)(img)(_n7##x,_n8##y,z,c), I[475] = (T)(img)(_n8##x,_n8##y,z,c), I[476] = (T)(img)(_n9##x,_n8##y,z,c), I[477] = (T)(img)(_n10##x,_n8##y,z,c), I[478] = (T)(img)(_n11##x,_n8##y,z,c), I[479] = (T)(img)(_n12##x,_n8##y,z,c), \ + I[480] = (T)(img)(_p11##x,_n9##y,z,c), I[481] = (T)(img)(_p10##x,_n9##y,z,c), I[482] = (T)(img)(_p9##x,_n9##y,z,c), I[483] = (T)(img)(_p8##x,_n9##y,z,c), I[484] = (T)(img)(_p7##x,_n9##y,z,c), I[485] = (T)(img)(_p6##x,_n9##y,z,c), I[486] = (T)(img)(_p5##x,_n9##y,z,c), I[487] = (T)(img)(_p4##x,_n9##y,z,c), I[488] = (T)(img)(_p3##x,_n9##y,z,c), I[489] = (T)(img)(_p2##x,_n9##y,z,c), I[490] = (T)(img)(_p1##x,_n9##y,z,c), I[491] = (T)(img)(x,_n9##y,z,c), I[492] = (T)(img)(_n1##x,_n9##y,z,c), I[493] = (T)(img)(_n2##x,_n9##y,z,c), I[494] = (T)(img)(_n3##x,_n9##y,z,c), I[495] = (T)(img)(_n4##x,_n9##y,z,c), I[496] = (T)(img)(_n5##x,_n9##y,z,c), I[497] = (T)(img)(_n6##x,_n9##y,z,c), I[498] = (T)(img)(_n7##x,_n9##y,z,c), I[499] = (T)(img)(_n8##x,_n9##y,z,c), I[500] = (T)(img)(_n9##x,_n9##y,z,c), I[501] = (T)(img)(_n10##x,_n9##y,z,c), I[502] = (T)(img)(_n11##x,_n9##y,z,c), I[503] = (T)(img)(_n12##x,_n9##y,z,c), \ + I[504] = (T)(img)(_p11##x,_n10##y,z,c), I[505] = (T)(img)(_p10##x,_n10##y,z,c), I[506] = (T)(img)(_p9##x,_n10##y,z,c), I[507] = (T)(img)(_p8##x,_n10##y,z,c), I[508] = (T)(img)(_p7##x,_n10##y,z,c), I[509] = (T)(img)(_p6##x,_n10##y,z,c), I[510] = (T)(img)(_p5##x,_n10##y,z,c), I[511] = (T)(img)(_p4##x,_n10##y,z,c), I[512] = (T)(img)(_p3##x,_n10##y,z,c), I[513] = (T)(img)(_p2##x,_n10##y,z,c), I[514] = (T)(img)(_p1##x,_n10##y,z,c), I[515] = (T)(img)(x,_n10##y,z,c), I[516] = (T)(img)(_n1##x,_n10##y,z,c), I[517] = (T)(img)(_n2##x,_n10##y,z,c), I[518] = (T)(img)(_n3##x,_n10##y,z,c), I[519] = (T)(img)(_n4##x,_n10##y,z,c), I[520] = (T)(img)(_n5##x,_n10##y,z,c), I[521] = (T)(img)(_n6##x,_n10##y,z,c), I[522] = (T)(img)(_n7##x,_n10##y,z,c), I[523] = (T)(img)(_n8##x,_n10##y,z,c), I[524] = (T)(img)(_n9##x,_n10##y,z,c), I[525] = (T)(img)(_n10##x,_n10##y,z,c), I[526] = (T)(img)(_n11##x,_n10##y,z,c), I[527] = (T)(img)(_n12##x,_n10##y,z,c), \ + I[528] = (T)(img)(_p11##x,_n11##y,z,c), I[529] = (T)(img)(_p10##x,_n11##y,z,c), I[530] = (T)(img)(_p9##x,_n11##y,z,c), I[531] = (T)(img)(_p8##x,_n11##y,z,c), I[532] = (T)(img)(_p7##x,_n11##y,z,c), I[533] = (T)(img)(_p6##x,_n11##y,z,c), I[534] = (T)(img)(_p5##x,_n11##y,z,c), I[535] = (T)(img)(_p4##x,_n11##y,z,c), I[536] = (T)(img)(_p3##x,_n11##y,z,c), I[537] = (T)(img)(_p2##x,_n11##y,z,c), I[538] = (T)(img)(_p1##x,_n11##y,z,c), I[539] = (T)(img)(x,_n11##y,z,c), I[540] = (T)(img)(_n1##x,_n11##y,z,c), I[541] = (T)(img)(_n2##x,_n11##y,z,c), I[542] = (T)(img)(_n3##x,_n11##y,z,c), I[543] = (T)(img)(_n4##x,_n11##y,z,c), I[544] = (T)(img)(_n5##x,_n11##y,z,c), I[545] = (T)(img)(_n6##x,_n11##y,z,c), I[546] = (T)(img)(_n7##x,_n11##y,z,c), I[547] = (T)(img)(_n8##x,_n11##y,z,c), I[548] = (T)(img)(_n9##x,_n11##y,z,c), I[549] = (T)(img)(_n10##x,_n11##y,z,c), I[550] = (T)(img)(_n11##x,_n11##y,z,c), I[551] = (T)(img)(_n12##x,_n11##y,z,c), \ + I[552] = (T)(img)(_p11##x,_n12##y,z,c), I[553] = (T)(img)(_p10##x,_n12##y,z,c), I[554] = (T)(img)(_p9##x,_n12##y,z,c), I[555] = (T)(img)(_p8##x,_n12##y,z,c), I[556] = (T)(img)(_p7##x,_n12##y,z,c), I[557] = (T)(img)(_p6##x,_n12##y,z,c), I[558] = (T)(img)(_p5##x,_n12##y,z,c), I[559] = (T)(img)(_p4##x,_n12##y,z,c), I[560] = (T)(img)(_p3##x,_n12##y,z,c), I[561] = (T)(img)(_p2##x,_n12##y,z,c), I[562] = (T)(img)(_p1##x,_n12##y,z,c), I[563] = (T)(img)(x,_n12##y,z,c), I[564] = (T)(img)(_n1##x,_n12##y,z,c), I[565] = (T)(img)(_n2##x,_n12##y,z,c), I[566] = (T)(img)(_n3##x,_n12##y,z,c), I[567] = (T)(img)(_n4##x,_n12##y,z,c), I[568] = (T)(img)(_n5##x,_n12##y,z,c), I[569] = (T)(img)(_n6##x,_n12##y,z,c), I[570] = (T)(img)(_n7##x,_n12##y,z,c), I[571] = (T)(img)(_n8##x,_n12##y,z,c), I[572] = (T)(img)(_n9##x,_n12##y,z,c), I[573] = (T)(img)(_n10##x,_n12##y,z,c), I[574] = (T)(img)(_n11##x,_n12##y,z,c), I[575] = (T)(img)(_n12##x,_n12##y,z,c); + +// Define 25x25 loop macros +//------------------------- +#define cimg_for25(bound,i) for (int i = 0, \ + _p12##i = 0, _p11##i = 0, _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11, \ + _n12##i = 12>=(int)(bound)?(int)(bound) - 1:12; \ + _n12##i<(int)(bound) || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i) + +#define cimg_for25X(img,x) cimg_for25((img)._width,x) +#define cimg_for25Y(img,y) cimg_for25((img)._height,y) +#define cimg_for25Z(img,z) cimg_for25((img)._depth,z) +#define cimg_for25C(img,c) cimg_for25((img)._spectrum,c) +#define cimg_for25XY(img,x,y) cimg_for25Y(img,y) cimg_for25X(img,x) +#define cimg_for25XZ(img,x,z) cimg_for25Z(img,z) cimg_for25X(img,x) +#define cimg_for25XC(img,x,c) cimg_for25C(img,c) cimg_for25X(img,x) +#define cimg_for25YZ(img,y,z) cimg_for25Z(img,z) cimg_for25Y(img,y) +#define cimg_for25YC(img,y,c) cimg_for25C(img,c) cimg_for25Y(img,y) +#define cimg_for25ZC(img,z,c) cimg_for25C(img,c) cimg_for25Z(img,z) +#define cimg_for25XYZ(img,x,y,z) cimg_for25Z(img,z) cimg_for25XY(img,x,y) +#define cimg_for25XZC(img,x,z,c) cimg_for25C(img,c) cimg_for25XZ(img,x,z) +#define cimg_for25YZC(img,y,z,c) cimg_for25C(img,c) cimg_for25YZ(img,y,z) +#define cimg_for25XYZC(img,x,y,z,c) cimg_for25C(img,c) cimg_for25XYZ(img,x,y,z) + +#define cimg_for_in25(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p12##i = i - 12<0?0:i - 12, \ + _p11##i = i - 11<0?0:i - 11, \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11, \ + _n12##i = i + 12>=(int)(bound)?(int)(bound) - 1:i + 12; \ + i<=(int)(i1) && (_n12##i<(int)(bound) || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i) + +#define cimg_for_in25X(img,x0,x1,x) cimg_for_in25((img)._width,x0,x1,x) +#define cimg_for_in25Y(img,y0,y1,y) cimg_for_in25((img)._height,y0,y1,y) +#define cimg_for_in25Z(img,z0,z1,z) cimg_for_in25((img)._depth,z0,z1,z) +#define cimg_for_in25C(img,c0,c1,c) cimg_for_in25((img)._spectrum,c0,c1,c) +#define cimg_for_in25XY(img,x0,y0,x1,y1,x,y) cimg_for_in25Y(img,y0,y1,y) cimg_for_in25X(img,x0,x1,x) +#define cimg_for_in25XZ(img,x0,z0,x1,z1,x,z) cimg_for_in25Z(img,z0,z1,z) cimg_for_in25X(img,x0,x1,x) +#define cimg_for_in25XC(img,x0,c0,x1,c1,x,c) cimg_for_in25C(img,c0,c1,c) cimg_for_in25X(img,x0,x1,x) +#define cimg_for_in25YZ(img,y0,z0,y1,z1,y,z) cimg_for_in25Z(img,z0,z1,z) cimg_for_in25Y(img,y0,y1,y) +#define cimg_for_in25YC(img,y0,c0,y1,c1,y,c) cimg_for_in25C(img,c0,c1,c) cimg_for_in25Y(img,y0,y1,y) +#define cimg_for_in25ZC(img,z0,c0,z1,c1,z,c) cimg_for_in25C(img,c0,c1,c) cimg_for_in25Z(img,z0,z1,z) +#define cimg_for_in25XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in25Z(img,z0,z1,z) cimg_for_in25XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in25XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in25C(img,c0,c1,c) cimg_for_in25XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in25YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in25C(img,c0,c1,c) cimg_for_in25YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in25XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in25C(img,c0,c1,c) cimg_for_in25XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for25x25(img,x,y,z,c,I,T) \ + cimg_for25((img)._height,y) for (int x = 0, \ + _p12##x = 0, _p11##x = 0, _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = 11>=((img)._width)?(img).width() - 1:11, \ + _n12##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = I[11] = I[12] = (T)(img)(0,_p12##y,z,c)), \ + (I[25] = I[26] = I[27] = I[28] = I[29] = I[30] = I[31] = I[32] = I[33] = I[34] = I[35] = I[36] = I[37] = (T)(img)(0,_p11##y,z,c)), \ + (I[50] = I[51] = I[52] = I[53] = I[54] = I[55] = I[56] = I[57] = I[58] = I[59] = I[60] = I[61] = I[62] = (T)(img)(0,_p10##y,z,c)), \ + (I[75] = I[76] = I[77] = I[78] = I[79] = I[80] = I[81] = I[82] = I[83] = I[84] = I[85] = I[86] = I[87] = (T)(img)(0,_p9##y,z,c)), \ + (I[100] = I[101] = I[102] = I[103] = I[104] = I[105] = I[106] = I[107] = I[108] = I[109] = I[110] = I[111] = I[112] = (T)(img)(0,_p8##y,z,c)), \ + (I[125] = I[126] = I[127] = I[128] = I[129] = I[130] = I[131] = I[132] = I[133] = I[134] = I[135] = I[136] = I[137] = (T)(img)(0,_p7##y,z,c)), \ + (I[150] = I[151] = I[152] = I[153] = I[154] = I[155] = I[156] = I[157] = I[158] = I[159] = I[160] = I[161] = I[162] = (T)(img)(0,_p6##y,z,c)), \ + (I[175] = I[176] = I[177] = I[178] = I[179] = I[180] = I[181] = I[182] = I[183] = I[184] = I[185] = I[186] = I[187] = (T)(img)(0,_p5##y,z,c)), \ + (I[200] = I[201] = I[202] = I[203] = I[204] = I[205] = I[206] = I[207] = I[208] = I[209] = I[210] = I[211] = I[212] = (T)(img)(0,_p4##y,z,c)), \ + (I[225] = I[226] = I[227] = I[228] = I[229] = I[230] = I[231] = I[232] = I[233] = I[234] = I[235] = I[236] = I[237] = (T)(img)(0,_p3##y,z,c)), \ + (I[250] = I[251] = I[252] = I[253] = I[254] = I[255] = I[256] = I[257] = I[258] = I[259] = I[260] = I[261] = I[262] = (T)(img)(0,_p2##y,z,c)), \ + (I[275] = I[276] = I[277] = I[278] = I[279] = I[280] = I[281] = I[282] = I[283] = I[284] = I[285] = I[286] = I[287] = (T)(img)(0,_p1##y,z,c)), \ + (I[300] = I[301] = I[302] = I[303] = I[304] = I[305] = I[306] = I[307] = I[308] = I[309] = I[310] = I[311] = I[312] = (T)(img)(0,y,z,c)), \ + (I[325] = I[326] = I[327] = I[328] = I[329] = I[330] = I[331] = I[332] = I[333] = I[334] = I[335] = I[336] = I[337] = (T)(img)(0,_n1##y,z,c)), \ + (I[350] = I[351] = I[352] = I[353] = I[354] = I[355] = I[356] = I[357] = I[358] = I[359] = I[360] = I[361] = I[362] = (T)(img)(0,_n2##y,z,c)), \ + (I[375] = I[376] = I[377] = I[378] = I[379] = I[380] = I[381] = I[382] = I[383] = I[384] = I[385] = I[386] = I[387] = (T)(img)(0,_n3##y,z,c)), \ + (I[400] = I[401] = I[402] = I[403] = I[404] = I[405] = I[406] = I[407] = I[408] = I[409] = I[410] = I[411] = I[412] = (T)(img)(0,_n4##y,z,c)), \ + (I[425] = I[426] = I[427] = I[428] = I[429] = I[430] = I[431] = I[432] = I[433] = I[434] = I[435] = I[436] = I[437] = (T)(img)(0,_n5##y,z,c)), \ + (I[450] = I[451] = I[452] = I[453] = I[454] = I[455] = I[456] = I[457] = I[458] = I[459] = I[460] = I[461] = I[462] = (T)(img)(0,_n6##y,z,c)), \ + (I[475] = I[476] = I[477] = I[478] = I[479] = I[480] = I[481] = I[482] = I[483] = I[484] = I[485] = I[486] = I[487] = (T)(img)(0,_n7##y,z,c)), \ + (I[500] = I[501] = I[502] = I[503] = I[504] = I[505] = I[506] = I[507] = I[508] = I[509] = I[510] = I[511] = I[512] = (T)(img)(0,_n8##y,z,c)), \ + (I[525] = I[526] = I[527] = I[528] = I[529] = I[530] = I[531] = I[532] = I[533] = I[534] = I[535] = I[536] = I[537] = (T)(img)(0,_n9##y,z,c)), \ + (I[550] = I[551] = I[552] = I[553] = I[554] = I[555] = I[556] = I[557] = I[558] = I[559] = I[560] = I[561] = I[562] = (T)(img)(0,_n10##y,z,c)), \ + (I[575] = I[576] = I[577] = I[578] = I[579] = I[580] = I[581] = I[582] = I[583] = I[584] = I[585] = I[586] = I[587] = (T)(img)(0,_n11##y,z,c)), \ + (I[600] = I[601] = I[602] = I[603] = I[604] = I[605] = I[606] = I[607] = I[608] = I[609] = I[610] = I[611] = I[612] = (T)(img)(0,_n12##y,z,c)), \ + (I[13] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[38] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[63] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[88] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[113] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[138] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[163] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[188] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[213] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[238] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[263] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[288] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[313] = (T)(img)(_n1##x,y,z,c)), \ + (I[338] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[363] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[388] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[413] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[438] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[463] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[488] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[513] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[538] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[563] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[588] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[613] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[14] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[39] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[64] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[89] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[114] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[139] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[164] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[189] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[214] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[239] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[264] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[289] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[314] = (T)(img)(_n2##x,y,z,c)), \ + (I[339] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[364] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[389] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[414] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[439] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[464] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[489] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[514] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[539] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[564] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[589] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[614] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[15] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[40] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[65] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[90] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[115] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[140] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[165] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[190] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[215] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[240] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[265] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[290] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[315] = (T)(img)(_n3##x,y,z,c)), \ + (I[340] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[365] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[390] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[415] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[440] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[465] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[490] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[515] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[540] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[565] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[590] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[615] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[16] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[41] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[66] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[91] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[116] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[141] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[166] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[191] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[216] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[241] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[266] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[291] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[316] = (T)(img)(_n4##x,y,z,c)), \ + (I[341] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[366] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[391] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[416] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[441] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[466] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[491] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[516] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[541] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[566] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[591] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[616] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[17] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[42] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[67] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[92] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[117] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[142] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[167] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[192] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[217] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[242] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[267] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[292] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[317] = (T)(img)(_n5##x,y,z,c)), \ + (I[342] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[367] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[392] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[417] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[442] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[467] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[492] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[517] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[542] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[567] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[592] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[617] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[18] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[43] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[68] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[93] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[118] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[143] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[168] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[193] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[218] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[243] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[268] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[293] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[318] = (T)(img)(_n6##x,y,z,c)), \ + (I[343] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[368] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[393] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[418] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[443] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[468] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[493] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[518] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[543] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[568] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[593] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[618] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[19] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[44] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[69] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[94] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[119] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[144] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[169] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[194] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[219] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[244] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[269] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[294] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[319] = (T)(img)(_n7##x,y,z,c)), \ + (I[344] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[369] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[394] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[419] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[444] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[469] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[494] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[519] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[544] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[569] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[594] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[619] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[20] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[45] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[70] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[95] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[120] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[145] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[170] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[195] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[220] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[245] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[270] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[295] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[320] = (T)(img)(_n8##x,y,z,c)), \ + (I[345] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[370] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[395] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[420] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[445] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[470] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[495] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[520] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[545] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[570] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[595] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[620] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[21] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[46] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[71] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[96] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[121] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[146] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[171] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[196] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[221] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[246] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[271] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[296] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[321] = (T)(img)(_n9##x,y,z,c)), \ + (I[346] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[371] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[396] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[421] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[446] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[471] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[496] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[521] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[546] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[571] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[596] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[621] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[22] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[47] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[72] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[97] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[122] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[147] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[172] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[197] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[222] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[247] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[272] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[297] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[322] = (T)(img)(_n10##x,y,z,c)), \ + (I[347] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[372] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[397] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[422] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[447] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[472] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[497] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[522] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[547] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[572] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[597] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[622] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[23] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[48] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[73] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[98] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[123] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[148] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[173] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[198] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[223] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[248] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[273] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[298] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[323] = (T)(img)(_n11##x,y,z,c)), \ + (I[348] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[373] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[398] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[423] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[448] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[473] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[498] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[523] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[548] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[573] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[598] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[623] = (T)(img)(_n11##x,_n12##y,z,c)), \ + 12>=((img)._width)?(img).width() - 1:12); \ + (_n12##x<(img).width() && ( \ + (I[24] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[49] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[74] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[99] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[124] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[149] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[174] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[199] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[224] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[249] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[274] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[299] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[324] = (T)(img)(_n12##x,y,z,c)), \ + (I[349] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[374] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[399] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[424] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[449] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[474] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[499] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[524] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[549] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[574] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[599] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[624] = (T)(img)(_n12##x,_n12##y,z,c)),1)) || \ + _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], \ + I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], \ + I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], \ + I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], \ + I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], \ + I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], \ + I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], \ + I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], \ + I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], \ + I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], \ + I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], \ + I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], \ + I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], \ + I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], \ + I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], \ + I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], \ + I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], \ + I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], \ + I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], \ + I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], \ + I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], \ + I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], \ + I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], \ + I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], \ + _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x) + +#define cimg_for_in25x25(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in25((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p12##x = x - 12<0?0:x - 12, \ + _p11##x = x - 11<0?0:x - 11, \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = x + 11>=(img).width()?(img).width() - 1:x + 11, \ + _n12##x = (int)( \ + (I[0] = (T)(img)(_p12##x,_p12##y,z,c)), \ + (I[25] = (T)(img)(_p12##x,_p11##y,z,c)), \ + (I[50] = (T)(img)(_p12##x,_p10##y,z,c)), \ + (I[75] = (T)(img)(_p12##x,_p9##y,z,c)), \ + (I[100] = (T)(img)(_p12##x,_p8##y,z,c)), \ + (I[125] = (T)(img)(_p12##x,_p7##y,z,c)), \ + (I[150] = (T)(img)(_p12##x,_p6##y,z,c)), \ + (I[175] = (T)(img)(_p12##x,_p5##y,z,c)), \ + (I[200] = (T)(img)(_p12##x,_p4##y,z,c)), \ + (I[225] = (T)(img)(_p12##x,_p3##y,z,c)), \ + (I[250] = (T)(img)(_p12##x,_p2##y,z,c)), \ + (I[275] = (T)(img)(_p12##x,_p1##y,z,c)), \ + (I[300] = (T)(img)(_p12##x,y,z,c)), \ + (I[325] = (T)(img)(_p12##x,_n1##y,z,c)), \ + (I[350] = (T)(img)(_p12##x,_n2##y,z,c)), \ + (I[375] = (T)(img)(_p12##x,_n3##y,z,c)), \ + (I[400] = (T)(img)(_p12##x,_n4##y,z,c)), \ + (I[425] = (T)(img)(_p12##x,_n5##y,z,c)), \ + (I[450] = (T)(img)(_p12##x,_n6##y,z,c)), \ + (I[475] = (T)(img)(_p12##x,_n7##y,z,c)), \ + (I[500] = (T)(img)(_p12##x,_n8##y,z,c)), \ + (I[525] = (T)(img)(_p12##x,_n9##y,z,c)), \ + (I[550] = (T)(img)(_p12##x,_n10##y,z,c)), \ + (I[575] = (T)(img)(_p12##x,_n11##y,z,c)), \ + (I[600] = (T)(img)(_p12##x,_n12##y,z,c)), \ + (I[1] = (T)(img)(_p11##x,_p12##y,z,c)), \ + (I[26] = (T)(img)(_p11##x,_p11##y,z,c)), \ + (I[51] = (T)(img)(_p11##x,_p10##y,z,c)), \ + (I[76] = (T)(img)(_p11##x,_p9##y,z,c)), \ + (I[101] = (T)(img)(_p11##x,_p8##y,z,c)), \ + (I[126] = (T)(img)(_p11##x,_p7##y,z,c)), \ + (I[151] = (T)(img)(_p11##x,_p6##y,z,c)), \ + (I[176] = (T)(img)(_p11##x,_p5##y,z,c)), \ + (I[201] = (T)(img)(_p11##x,_p4##y,z,c)), \ + (I[226] = (T)(img)(_p11##x,_p3##y,z,c)), \ + (I[251] = (T)(img)(_p11##x,_p2##y,z,c)), \ + (I[276] = (T)(img)(_p11##x,_p1##y,z,c)), \ + (I[301] = (T)(img)(_p11##x,y,z,c)), \ + (I[326] = (T)(img)(_p11##x,_n1##y,z,c)), \ + (I[351] = (T)(img)(_p11##x,_n2##y,z,c)), \ + (I[376] = (T)(img)(_p11##x,_n3##y,z,c)), \ + (I[401] = (T)(img)(_p11##x,_n4##y,z,c)), \ + (I[426] = (T)(img)(_p11##x,_n5##y,z,c)), \ + (I[451] = (T)(img)(_p11##x,_n6##y,z,c)), \ + (I[476] = (T)(img)(_p11##x,_n7##y,z,c)), \ + (I[501] = (T)(img)(_p11##x,_n8##y,z,c)), \ + (I[526] = (T)(img)(_p11##x,_n9##y,z,c)), \ + (I[551] = (T)(img)(_p11##x,_n10##y,z,c)), \ + (I[576] = (T)(img)(_p11##x,_n11##y,z,c)), \ + (I[601] = (T)(img)(_p11##x,_n12##y,z,c)), \ + (I[2] = (T)(img)(_p10##x,_p12##y,z,c)), \ + (I[27] = (T)(img)(_p10##x,_p11##y,z,c)), \ + (I[52] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[77] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[102] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[127] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[152] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[177] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[202] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[227] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[252] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[277] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[302] = (T)(img)(_p10##x,y,z,c)), \ + (I[327] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[352] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[377] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[402] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[427] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[452] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[477] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[502] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[527] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[552] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[577] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[602] = (T)(img)(_p10##x,_n12##y,z,c)), \ + (I[3] = (T)(img)(_p9##x,_p12##y,z,c)), \ + (I[28] = (T)(img)(_p9##x,_p11##y,z,c)), \ + (I[53] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[78] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[103] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[128] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[153] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[178] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[203] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[228] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[253] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[278] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[303] = (T)(img)(_p9##x,y,z,c)), \ + (I[328] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[353] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[378] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[403] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[428] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[453] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[478] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[503] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[528] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[553] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[578] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[603] = (T)(img)(_p9##x,_n12##y,z,c)), \ + (I[4] = (T)(img)(_p8##x,_p12##y,z,c)), \ + (I[29] = (T)(img)(_p8##x,_p11##y,z,c)), \ + (I[54] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[79] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[104] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[129] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[154] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[179] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[204] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[229] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[254] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[279] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[304] = (T)(img)(_p8##x,y,z,c)), \ + (I[329] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[354] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[379] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[404] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[429] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[454] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[479] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[504] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[529] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[554] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[579] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[604] = (T)(img)(_p8##x,_n12##y,z,c)), \ + (I[5] = (T)(img)(_p7##x,_p12##y,z,c)), \ + (I[30] = (T)(img)(_p7##x,_p11##y,z,c)), \ + (I[55] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[80] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[105] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[130] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[155] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[180] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[205] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[230] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[255] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[280] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[305] = (T)(img)(_p7##x,y,z,c)), \ + (I[330] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[355] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[380] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[405] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[430] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[455] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[480] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[505] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[530] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[555] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[580] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[605] = (T)(img)(_p7##x,_n12##y,z,c)), \ + (I[6] = (T)(img)(_p6##x,_p12##y,z,c)), \ + (I[31] = (T)(img)(_p6##x,_p11##y,z,c)), \ + (I[56] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[81] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[106] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[131] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[156] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[181] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[206] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[231] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[256] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[281] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[306] = (T)(img)(_p6##x,y,z,c)), \ + (I[331] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[356] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[381] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[406] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[431] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[456] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[481] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[506] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[531] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[556] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[581] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[606] = (T)(img)(_p6##x,_n12##y,z,c)), \ + (I[7] = (T)(img)(_p5##x,_p12##y,z,c)), \ + (I[32] = (T)(img)(_p5##x,_p11##y,z,c)), \ + (I[57] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[82] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[107] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[132] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[157] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[182] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[207] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[232] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[257] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[282] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[307] = (T)(img)(_p5##x,y,z,c)), \ + (I[332] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[357] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[382] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[407] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[432] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[457] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[482] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[507] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[532] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[557] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[582] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[607] = (T)(img)(_p5##x,_n12##y,z,c)), \ + (I[8] = (T)(img)(_p4##x,_p12##y,z,c)), \ + (I[33] = (T)(img)(_p4##x,_p11##y,z,c)), \ + (I[58] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[83] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[108] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[133] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[158] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[183] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[208] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[233] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[258] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[283] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[308] = (T)(img)(_p4##x,y,z,c)), \ + (I[333] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[358] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[383] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[408] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[433] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[458] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[483] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[508] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[533] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[558] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[583] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[608] = (T)(img)(_p4##x,_n12##y,z,c)), \ + (I[9] = (T)(img)(_p3##x,_p12##y,z,c)), \ + (I[34] = (T)(img)(_p3##x,_p11##y,z,c)), \ + (I[59] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[84] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[109] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[134] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[159] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[184] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[209] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[234] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[259] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[284] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[309] = (T)(img)(_p3##x,y,z,c)), \ + (I[334] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[359] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[384] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[409] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[434] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[459] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[484] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[509] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[534] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[559] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[584] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[609] = (T)(img)(_p3##x,_n12##y,z,c)), \ + (I[10] = (T)(img)(_p2##x,_p12##y,z,c)), \ + (I[35] = (T)(img)(_p2##x,_p11##y,z,c)), \ + (I[60] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[85] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[110] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[135] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[160] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[185] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[210] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[235] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[260] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[285] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[310] = (T)(img)(_p2##x,y,z,c)), \ + (I[335] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[360] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[385] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[410] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[435] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[460] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[485] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[510] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[535] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[560] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[585] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[610] = (T)(img)(_p2##x,_n12##y,z,c)), \ + (I[11] = (T)(img)(_p1##x,_p12##y,z,c)), \ + (I[36] = (T)(img)(_p1##x,_p11##y,z,c)), \ + (I[61] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[86] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[111] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[136] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[161] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[186] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[211] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[236] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[261] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[286] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[311] = (T)(img)(_p1##x,y,z,c)), \ + (I[336] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[361] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[386] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[411] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[436] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[461] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[486] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[511] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[536] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[561] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[586] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[611] = (T)(img)(_p1##x,_n12##y,z,c)), \ + (I[12] = (T)(img)(x,_p12##y,z,c)), \ + (I[37] = (T)(img)(x,_p11##y,z,c)), \ + (I[62] = (T)(img)(x,_p10##y,z,c)), \ + (I[87] = (T)(img)(x,_p9##y,z,c)), \ + (I[112] = (T)(img)(x,_p8##y,z,c)), \ + (I[137] = (T)(img)(x,_p7##y,z,c)), \ + (I[162] = (T)(img)(x,_p6##y,z,c)), \ + (I[187] = (T)(img)(x,_p5##y,z,c)), \ + (I[212] = (T)(img)(x,_p4##y,z,c)), \ + (I[237] = (T)(img)(x,_p3##y,z,c)), \ + (I[262] = (T)(img)(x,_p2##y,z,c)), \ + (I[287] = (T)(img)(x,_p1##y,z,c)), \ + (I[312] = (T)(img)(x,y,z,c)), \ + (I[337] = (T)(img)(x,_n1##y,z,c)), \ + (I[362] = (T)(img)(x,_n2##y,z,c)), \ + (I[387] = (T)(img)(x,_n3##y,z,c)), \ + (I[412] = (T)(img)(x,_n4##y,z,c)), \ + (I[437] = (T)(img)(x,_n5##y,z,c)), \ + (I[462] = (T)(img)(x,_n6##y,z,c)), \ + (I[487] = (T)(img)(x,_n7##y,z,c)), \ + (I[512] = (T)(img)(x,_n8##y,z,c)), \ + (I[537] = (T)(img)(x,_n9##y,z,c)), \ + (I[562] = (T)(img)(x,_n10##y,z,c)), \ + (I[587] = (T)(img)(x,_n11##y,z,c)), \ + (I[612] = (T)(img)(x,_n12##y,z,c)), \ + (I[13] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[38] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[63] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[88] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[113] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[138] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[163] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[188] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[213] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[238] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[263] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[288] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[313] = (T)(img)(_n1##x,y,z,c)), \ + (I[338] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[363] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[388] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[413] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[438] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[463] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[488] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[513] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[538] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[563] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[588] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[613] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[14] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[39] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[64] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[89] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[114] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[139] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[164] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[189] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[214] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[239] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[264] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[289] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[314] = (T)(img)(_n2##x,y,z,c)), \ + (I[339] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[364] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[389] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[414] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[439] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[464] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[489] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[514] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[539] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[564] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[589] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[614] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[15] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[40] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[65] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[90] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[115] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[140] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[165] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[190] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[215] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[240] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[265] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[290] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[315] = (T)(img)(_n3##x,y,z,c)), \ + (I[340] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[365] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[390] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[415] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[440] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[465] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[490] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[515] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[540] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[565] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[590] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[615] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[16] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[41] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[66] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[91] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[116] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[141] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[166] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[191] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[216] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[241] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[266] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[291] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[316] = (T)(img)(_n4##x,y,z,c)), \ + (I[341] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[366] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[391] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[416] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[441] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[466] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[491] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[516] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[541] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[566] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[591] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[616] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[17] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[42] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[67] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[92] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[117] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[142] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[167] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[192] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[217] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[242] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[267] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[292] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[317] = (T)(img)(_n5##x,y,z,c)), \ + (I[342] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[367] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[392] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[417] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[442] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[467] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[492] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[517] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[542] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[567] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[592] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[617] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[18] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[43] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[68] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[93] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[118] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[143] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[168] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[193] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[218] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[243] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[268] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[293] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[318] = (T)(img)(_n6##x,y,z,c)), \ + (I[343] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[368] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[393] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[418] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[443] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[468] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[493] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[518] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[543] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[568] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[593] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[618] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[19] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[44] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[69] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[94] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[119] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[144] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[169] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[194] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[219] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[244] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[269] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[294] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[319] = (T)(img)(_n7##x,y,z,c)), \ + (I[344] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[369] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[394] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[419] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[444] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[469] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[494] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[519] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[544] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[569] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[594] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[619] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[20] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[45] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[70] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[95] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[120] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[145] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[170] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[195] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[220] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[245] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[270] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[295] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[320] = (T)(img)(_n8##x,y,z,c)), \ + (I[345] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[370] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[395] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[420] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[445] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[470] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[495] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[520] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[545] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[570] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[595] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[620] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[21] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[46] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[71] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[96] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[121] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[146] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[171] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[196] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[221] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[246] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[271] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[296] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[321] = (T)(img)(_n9##x,y,z,c)), \ + (I[346] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[371] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[396] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[421] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[446] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[471] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[496] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[521] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[546] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[571] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[596] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[621] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[22] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[47] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[72] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[97] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[122] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[147] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[172] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[197] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[222] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[247] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[272] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[297] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[322] = (T)(img)(_n10##x,y,z,c)), \ + (I[347] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[372] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[397] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[422] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[447] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[472] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[497] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[522] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[547] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[572] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[597] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[622] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[23] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[48] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[73] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[98] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[123] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[148] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[173] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[198] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[223] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[248] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[273] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[298] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[323] = (T)(img)(_n11##x,y,z,c)), \ + (I[348] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[373] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[398] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[423] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[448] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[473] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[498] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[523] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[548] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[573] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[598] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[623] = (T)(img)(_n11##x,_n12##y,z,c)), \ + x + 12>=(img).width()?(img).width() - 1:x + 12); \ + x<=(int)(x1) && ((_n12##x<(img).width() && ( \ + (I[24] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[49] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[74] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[99] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[124] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[149] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[174] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[199] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[224] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[249] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[274] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[299] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[324] = (T)(img)(_n12##x,y,z,c)), \ + (I[349] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[374] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[399] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[424] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[449] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[474] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[499] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[524] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[549] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[574] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[599] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[624] = (T)(img)(_n12##x,_n12##y,z,c)),1)) || \ + _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], \ + I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], \ + I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], \ + I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], \ + I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], \ + I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], \ + I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], \ + I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], \ + I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], \ + I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], \ + I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], \ + I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], \ + I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], \ + I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], \ + I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], \ + I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], \ + I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], \ + I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], \ + I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], \ + I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], \ + I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], \ + I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], \ + I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], \ + I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], \ + _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x) + +#define cimg_get25x25(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p12##x,_p12##y,z,c), I[1] = (T)(img)(_p11##x,_p12##y,z,c), I[2] = (T)(img)(_p10##x,_p12##y,z,c), I[3] = (T)(img)(_p9##x,_p12##y,z,c), I[4] = (T)(img)(_p8##x,_p12##y,z,c), I[5] = (T)(img)(_p7##x,_p12##y,z,c), I[6] = (T)(img)(_p6##x,_p12##y,z,c), I[7] = (T)(img)(_p5##x,_p12##y,z,c), I[8] = (T)(img)(_p4##x,_p12##y,z,c), I[9] = (T)(img)(_p3##x,_p12##y,z,c), I[10] = (T)(img)(_p2##x,_p12##y,z,c), I[11] = (T)(img)(_p1##x,_p12##y,z,c), I[12] = (T)(img)(x,_p12##y,z,c), I[13] = (T)(img)(_n1##x,_p12##y,z,c), I[14] = (T)(img)(_n2##x,_p12##y,z,c), I[15] = (T)(img)(_n3##x,_p12##y,z,c), I[16] = (T)(img)(_n4##x,_p12##y,z,c), I[17] = (T)(img)(_n5##x,_p12##y,z,c), I[18] = (T)(img)(_n6##x,_p12##y,z,c), I[19] = (T)(img)(_n7##x,_p12##y,z,c), I[20] = (T)(img)(_n8##x,_p12##y,z,c), I[21] = (T)(img)(_n9##x,_p12##y,z,c), I[22] = (T)(img)(_n10##x,_p12##y,z,c), I[23] = (T)(img)(_n11##x,_p12##y,z,c), I[24] = (T)(img)(_n12##x,_p12##y,z,c), \ + I[25] = (T)(img)(_p12##x,_p11##y,z,c), I[26] = (T)(img)(_p11##x,_p11##y,z,c), I[27] = (T)(img)(_p10##x,_p11##y,z,c), I[28] = (T)(img)(_p9##x,_p11##y,z,c), I[29] = (T)(img)(_p8##x,_p11##y,z,c), I[30] = (T)(img)(_p7##x,_p11##y,z,c), I[31] = (T)(img)(_p6##x,_p11##y,z,c), I[32] = (T)(img)(_p5##x,_p11##y,z,c), I[33] = (T)(img)(_p4##x,_p11##y,z,c), I[34] = (T)(img)(_p3##x,_p11##y,z,c), I[35] = (T)(img)(_p2##x,_p11##y,z,c), I[36] = (T)(img)(_p1##x,_p11##y,z,c), I[37] = (T)(img)(x,_p11##y,z,c), I[38] = (T)(img)(_n1##x,_p11##y,z,c), I[39] = (T)(img)(_n2##x,_p11##y,z,c), I[40] = (T)(img)(_n3##x,_p11##y,z,c), I[41] = (T)(img)(_n4##x,_p11##y,z,c), I[42] = (T)(img)(_n5##x,_p11##y,z,c), I[43] = (T)(img)(_n6##x,_p11##y,z,c), I[44] = (T)(img)(_n7##x,_p11##y,z,c), I[45] = (T)(img)(_n8##x,_p11##y,z,c), I[46] = (T)(img)(_n9##x,_p11##y,z,c), I[47] = (T)(img)(_n10##x,_p11##y,z,c), I[48] = (T)(img)(_n11##x,_p11##y,z,c), I[49] = (T)(img)(_n12##x,_p11##y,z,c), \ + I[50] = (T)(img)(_p12##x,_p10##y,z,c), I[51] = (T)(img)(_p11##x,_p10##y,z,c), I[52] = (T)(img)(_p10##x,_p10##y,z,c), I[53] = (T)(img)(_p9##x,_p10##y,z,c), I[54] = (T)(img)(_p8##x,_p10##y,z,c), I[55] = (T)(img)(_p7##x,_p10##y,z,c), I[56] = (T)(img)(_p6##x,_p10##y,z,c), I[57] = (T)(img)(_p5##x,_p10##y,z,c), I[58] = (T)(img)(_p4##x,_p10##y,z,c), I[59] = (T)(img)(_p3##x,_p10##y,z,c), I[60] = (T)(img)(_p2##x,_p10##y,z,c), I[61] = (T)(img)(_p1##x,_p10##y,z,c), I[62] = (T)(img)(x,_p10##y,z,c), I[63] = (T)(img)(_n1##x,_p10##y,z,c), I[64] = (T)(img)(_n2##x,_p10##y,z,c), I[65] = (T)(img)(_n3##x,_p10##y,z,c), I[66] = (T)(img)(_n4##x,_p10##y,z,c), I[67] = (T)(img)(_n5##x,_p10##y,z,c), I[68] = (T)(img)(_n6##x,_p10##y,z,c), I[69] = (T)(img)(_n7##x,_p10##y,z,c), I[70] = (T)(img)(_n8##x,_p10##y,z,c), I[71] = (T)(img)(_n9##x,_p10##y,z,c), I[72] = (T)(img)(_n10##x,_p10##y,z,c), I[73] = (T)(img)(_n11##x,_p10##y,z,c), I[74] = (T)(img)(_n12##x,_p10##y,z,c), \ + I[75] = (T)(img)(_p12##x,_p9##y,z,c), I[76] = (T)(img)(_p11##x,_p9##y,z,c), I[77] = (T)(img)(_p10##x,_p9##y,z,c), I[78] = (T)(img)(_p9##x,_p9##y,z,c), I[79] = (T)(img)(_p8##x,_p9##y,z,c), I[80] = (T)(img)(_p7##x,_p9##y,z,c), I[81] = (T)(img)(_p6##x,_p9##y,z,c), I[82] = (T)(img)(_p5##x,_p9##y,z,c), I[83] = (T)(img)(_p4##x,_p9##y,z,c), I[84] = (T)(img)(_p3##x,_p9##y,z,c), I[85] = (T)(img)(_p2##x,_p9##y,z,c), I[86] = (T)(img)(_p1##x,_p9##y,z,c), I[87] = (T)(img)(x,_p9##y,z,c), I[88] = (T)(img)(_n1##x,_p9##y,z,c), I[89] = (T)(img)(_n2##x,_p9##y,z,c), I[90] = (T)(img)(_n3##x,_p9##y,z,c), I[91] = (T)(img)(_n4##x,_p9##y,z,c), I[92] = (T)(img)(_n5##x,_p9##y,z,c), I[93] = (T)(img)(_n6##x,_p9##y,z,c), I[94] = (T)(img)(_n7##x,_p9##y,z,c), I[95] = (T)(img)(_n8##x,_p9##y,z,c), I[96] = (T)(img)(_n9##x,_p9##y,z,c), I[97] = (T)(img)(_n10##x,_p9##y,z,c), I[98] = (T)(img)(_n11##x,_p9##y,z,c), I[99] = (T)(img)(_n12##x,_p9##y,z,c), \ + I[100] = (T)(img)(_p12##x,_p8##y,z,c), I[101] = (T)(img)(_p11##x,_p8##y,z,c), I[102] = (T)(img)(_p10##x,_p8##y,z,c), I[103] = (T)(img)(_p9##x,_p8##y,z,c), I[104] = (T)(img)(_p8##x,_p8##y,z,c), I[105] = (T)(img)(_p7##x,_p8##y,z,c), I[106] = (T)(img)(_p6##x,_p8##y,z,c), I[107] = (T)(img)(_p5##x,_p8##y,z,c), I[108] = (T)(img)(_p4##x,_p8##y,z,c), I[109] = (T)(img)(_p3##x,_p8##y,z,c), I[110] = (T)(img)(_p2##x,_p8##y,z,c), I[111] = (T)(img)(_p1##x,_p8##y,z,c), I[112] = (T)(img)(x,_p8##y,z,c), I[113] = (T)(img)(_n1##x,_p8##y,z,c), I[114] = (T)(img)(_n2##x,_p8##y,z,c), I[115] = (T)(img)(_n3##x,_p8##y,z,c), I[116] = (T)(img)(_n4##x,_p8##y,z,c), I[117] = (T)(img)(_n5##x,_p8##y,z,c), I[118] = (T)(img)(_n6##x,_p8##y,z,c), I[119] = (T)(img)(_n7##x,_p8##y,z,c), I[120] = (T)(img)(_n8##x,_p8##y,z,c), I[121] = (T)(img)(_n9##x,_p8##y,z,c), I[122] = (T)(img)(_n10##x,_p8##y,z,c), I[123] = (T)(img)(_n11##x,_p8##y,z,c), I[124] = (T)(img)(_n12##x,_p8##y,z,c), \ + I[125] = (T)(img)(_p12##x,_p7##y,z,c), I[126] = (T)(img)(_p11##x,_p7##y,z,c), I[127] = (T)(img)(_p10##x,_p7##y,z,c), I[128] = (T)(img)(_p9##x,_p7##y,z,c), I[129] = (T)(img)(_p8##x,_p7##y,z,c), I[130] = (T)(img)(_p7##x,_p7##y,z,c), I[131] = (T)(img)(_p6##x,_p7##y,z,c), I[132] = (T)(img)(_p5##x,_p7##y,z,c), I[133] = (T)(img)(_p4##x,_p7##y,z,c), I[134] = (T)(img)(_p3##x,_p7##y,z,c), I[135] = (T)(img)(_p2##x,_p7##y,z,c), I[136] = (T)(img)(_p1##x,_p7##y,z,c), I[137] = (T)(img)(x,_p7##y,z,c), I[138] = (T)(img)(_n1##x,_p7##y,z,c), I[139] = (T)(img)(_n2##x,_p7##y,z,c), I[140] = (T)(img)(_n3##x,_p7##y,z,c), I[141] = (T)(img)(_n4##x,_p7##y,z,c), I[142] = (T)(img)(_n5##x,_p7##y,z,c), I[143] = (T)(img)(_n6##x,_p7##y,z,c), I[144] = (T)(img)(_n7##x,_p7##y,z,c), I[145] = (T)(img)(_n8##x,_p7##y,z,c), I[146] = (T)(img)(_n9##x,_p7##y,z,c), I[147] = (T)(img)(_n10##x,_p7##y,z,c), I[148] = (T)(img)(_n11##x,_p7##y,z,c), I[149] = (T)(img)(_n12##x,_p7##y,z,c), \ + I[150] = (T)(img)(_p12##x,_p6##y,z,c), I[151] = (T)(img)(_p11##x,_p6##y,z,c), I[152] = (T)(img)(_p10##x,_p6##y,z,c), I[153] = (T)(img)(_p9##x,_p6##y,z,c), I[154] = (T)(img)(_p8##x,_p6##y,z,c), I[155] = (T)(img)(_p7##x,_p6##y,z,c), I[156] = (T)(img)(_p6##x,_p6##y,z,c), I[157] = (T)(img)(_p5##x,_p6##y,z,c), I[158] = (T)(img)(_p4##x,_p6##y,z,c), I[159] = (T)(img)(_p3##x,_p6##y,z,c), I[160] = (T)(img)(_p2##x,_p6##y,z,c), I[161] = (T)(img)(_p1##x,_p6##y,z,c), I[162] = (T)(img)(x,_p6##y,z,c), I[163] = (T)(img)(_n1##x,_p6##y,z,c), I[164] = (T)(img)(_n2##x,_p6##y,z,c), I[165] = (T)(img)(_n3##x,_p6##y,z,c), I[166] = (T)(img)(_n4##x,_p6##y,z,c), I[167] = (T)(img)(_n5##x,_p6##y,z,c), I[168] = (T)(img)(_n6##x,_p6##y,z,c), I[169] = (T)(img)(_n7##x,_p6##y,z,c), I[170] = (T)(img)(_n8##x,_p6##y,z,c), I[171] = (T)(img)(_n9##x,_p6##y,z,c), I[172] = (T)(img)(_n10##x,_p6##y,z,c), I[173] = (T)(img)(_n11##x,_p6##y,z,c), I[174] = (T)(img)(_n12##x,_p6##y,z,c), \ + I[175] = (T)(img)(_p12##x,_p5##y,z,c), I[176] = (T)(img)(_p11##x,_p5##y,z,c), I[177] = (T)(img)(_p10##x,_p5##y,z,c), I[178] = (T)(img)(_p9##x,_p5##y,z,c), I[179] = (T)(img)(_p8##x,_p5##y,z,c), I[180] = (T)(img)(_p7##x,_p5##y,z,c), I[181] = (T)(img)(_p6##x,_p5##y,z,c), I[182] = (T)(img)(_p5##x,_p5##y,z,c), I[183] = (T)(img)(_p4##x,_p5##y,z,c), I[184] = (T)(img)(_p3##x,_p5##y,z,c), I[185] = (T)(img)(_p2##x,_p5##y,z,c), I[186] = (T)(img)(_p1##x,_p5##y,z,c), I[187] = (T)(img)(x,_p5##y,z,c), I[188] = (T)(img)(_n1##x,_p5##y,z,c), I[189] = (T)(img)(_n2##x,_p5##y,z,c), I[190] = (T)(img)(_n3##x,_p5##y,z,c), I[191] = (T)(img)(_n4##x,_p5##y,z,c), I[192] = (T)(img)(_n5##x,_p5##y,z,c), I[193] = (T)(img)(_n6##x,_p5##y,z,c), I[194] = (T)(img)(_n7##x,_p5##y,z,c), I[195] = (T)(img)(_n8##x,_p5##y,z,c), I[196] = (T)(img)(_n9##x,_p5##y,z,c), I[197] = (T)(img)(_n10##x,_p5##y,z,c), I[198] = (T)(img)(_n11##x,_p5##y,z,c), I[199] = (T)(img)(_n12##x,_p5##y,z,c), \ + I[200] = (T)(img)(_p12##x,_p4##y,z,c), I[201] = (T)(img)(_p11##x,_p4##y,z,c), I[202] = (T)(img)(_p10##x,_p4##y,z,c), I[203] = (T)(img)(_p9##x,_p4##y,z,c), I[204] = (T)(img)(_p8##x,_p4##y,z,c), I[205] = (T)(img)(_p7##x,_p4##y,z,c), I[206] = (T)(img)(_p6##x,_p4##y,z,c), I[207] = (T)(img)(_p5##x,_p4##y,z,c), I[208] = (T)(img)(_p4##x,_p4##y,z,c), I[209] = (T)(img)(_p3##x,_p4##y,z,c), I[210] = (T)(img)(_p2##x,_p4##y,z,c), I[211] = (T)(img)(_p1##x,_p4##y,z,c), I[212] = (T)(img)(x,_p4##y,z,c), I[213] = (T)(img)(_n1##x,_p4##y,z,c), I[214] = (T)(img)(_n2##x,_p4##y,z,c), I[215] = (T)(img)(_n3##x,_p4##y,z,c), I[216] = (T)(img)(_n4##x,_p4##y,z,c), I[217] = (T)(img)(_n5##x,_p4##y,z,c), I[218] = (T)(img)(_n6##x,_p4##y,z,c), I[219] = (T)(img)(_n7##x,_p4##y,z,c), I[220] = (T)(img)(_n8##x,_p4##y,z,c), I[221] = (T)(img)(_n9##x,_p4##y,z,c), I[222] = (T)(img)(_n10##x,_p4##y,z,c), I[223] = (T)(img)(_n11##x,_p4##y,z,c), I[224] = (T)(img)(_n12##x,_p4##y,z,c), \ + I[225] = (T)(img)(_p12##x,_p3##y,z,c), I[226] = (T)(img)(_p11##x,_p3##y,z,c), I[227] = (T)(img)(_p10##x,_p3##y,z,c), I[228] = (T)(img)(_p9##x,_p3##y,z,c), I[229] = (T)(img)(_p8##x,_p3##y,z,c), I[230] = (T)(img)(_p7##x,_p3##y,z,c), I[231] = (T)(img)(_p6##x,_p3##y,z,c), I[232] = (T)(img)(_p5##x,_p3##y,z,c), I[233] = (T)(img)(_p4##x,_p3##y,z,c), I[234] = (T)(img)(_p3##x,_p3##y,z,c), I[235] = (T)(img)(_p2##x,_p3##y,z,c), I[236] = (T)(img)(_p1##x,_p3##y,z,c), I[237] = (T)(img)(x,_p3##y,z,c), I[238] = (T)(img)(_n1##x,_p3##y,z,c), I[239] = (T)(img)(_n2##x,_p3##y,z,c), I[240] = (T)(img)(_n3##x,_p3##y,z,c), I[241] = (T)(img)(_n4##x,_p3##y,z,c), I[242] = (T)(img)(_n5##x,_p3##y,z,c), I[243] = (T)(img)(_n6##x,_p3##y,z,c), I[244] = (T)(img)(_n7##x,_p3##y,z,c), I[245] = (T)(img)(_n8##x,_p3##y,z,c), I[246] = (T)(img)(_n9##x,_p3##y,z,c), I[247] = (T)(img)(_n10##x,_p3##y,z,c), I[248] = (T)(img)(_n11##x,_p3##y,z,c), I[249] = (T)(img)(_n12##x,_p3##y,z,c), \ + I[250] = (T)(img)(_p12##x,_p2##y,z,c), I[251] = (T)(img)(_p11##x,_p2##y,z,c), I[252] = (T)(img)(_p10##x,_p2##y,z,c), I[253] = (T)(img)(_p9##x,_p2##y,z,c), I[254] = (T)(img)(_p8##x,_p2##y,z,c), I[255] = (T)(img)(_p7##x,_p2##y,z,c), I[256] = (T)(img)(_p6##x,_p2##y,z,c), I[257] = (T)(img)(_p5##x,_p2##y,z,c), I[258] = (T)(img)(_p4##x,_p2##y,z,c), I[259] = (T)(img)(_p3##x,_p2##y,z,c), I[260] = (T)(img)(_p2##x,_p2##y,z,c), I[261] = (T)(img)(_p1##x,_p2##y,z,c), I[262] = (T)(img)(x,_p2##y,z,c), I[263] = (T)(img)(_n1##x,_p2##y,z,c), I[264] = (T)(img)(_n2##x,_p2##y,z,c), I[265] = (T)(img)(_n3##x,_p2##y,z,c), I[266] = (T)(img)(_n4##x,_p2##y,z,c), I[267] = (T)(img)(_n5##x,_p2##y,z,c), I[268] = (T)(img)(_n6##x,_p2##y,z,c), I[269] = (T)(img)(_n7##x,_p2##y,z,c), I[270] = (T)(img)(_n8##x,_p2##y,z,c), I[271] = (T)(img)(_n9##x,_p2##y,z,c), I[272] = (T)(img)(_n10##x,_p2##y,z,c), I[273] = (T)(img)(_n11##x,_p2##y,z,c), I[274] = (T)(img)(_n12##x,_p2##y,z,c), \ + I[275] = (T)(img)(_p12##x,_p1##y,z,c), I[276] = (T)(img)(_p11##x,_p1##y,z,c), I[277] = (T)(img)(_p10##x,_p1##y,z,c), I[278] = (T)(img)(_p9##x,_p1##y,z,c), I[279] = (T)(img)(_p8##x,_p1##y,z,c), I[280] = (T)(img)(_p7##x,_p1##y,z,c), I[281] = (T)(img)(_p6##x,_p1##y,z,c), I[282] = (T)(img)(_p5##x,_p1##y,z,c), I[283] = (T)(img)(_p4##x,_p1##y,z,c), I[284] = (T)(img)(_p3##x,_p1##y,z,c), I[285] = (T)(img)(_p2##x,_p1##y,z,c), I[286] = (T)(img)(_p1##x,_p1##y,z,c), I[287] = (T)(img)(x,_p1##y,z,c), I[288] = (T)(img)(_n1##x,_p1##y,z,c), I[289] = (T)(img)(_n2##x,_p1##y,z,c), I[290] = (T)(img)(_n3##x,_p1##y,z,c), I[291] = (T)(img)(_n4##x,_p1##y,z,c), I[292] = (T)(img)(_n5##x,_p1##y,z,c), I[293] = (T)(img)(_n6##x,_p1##y,z,c), I[294] = (T)(img)(_n7##x,_p1##y,z,c), I[295] = (T)(img)(_n8##x,_p1##y,z,c), I[296] = (T)(img)(_n9##x,_p1##y,z,c), I[297] = (T)(img)(_n10##x,_p1##y,z,c), I[298] = (T)(img)(_n11##x,_p1##y,z,c), I[299] = (T)(img)(_n12##x,_p1##y,z,c), \ + I[300] = (T)(img)(_p12##x,y,z,c), I[301] = (T)(img)(_p11##x,y,z,c), I[302] = (T)(img)(_p10##x,y,z,c), I[303] = (T)(img)(_p9##x,y,z,c), I[304] = (T)(img)(_p8##x,y,z,c), I[305] = (T)(img)(_p7##x,y,z,c), I[306] = (T)(img)(_p6##x,y,z,c), I[307] = (T)(img)(_p5##x,y,z,c), I[308] = (T)(img)(_p4##x,y,z,c), I[309] = (T)(img)(_p3##x,y,z,c), I[310] = (T)(img)(_p2##x,y,z,c), I[311] = (T)(img)(_p1##x,y,z,c), I[312] = (T)(img)(x,y,z,c), I[313] = (T)(img)(_n1##x,y,z,c), I[314] = (T)(img)(_n2##x,y,z,c), I[315] = (T)(img)(_n3##x,y,z,c), I[316] = (T)(img)(_n4##x,y,z,c), I[317] = (T)(img)(_n5##x,y,z,c), I[318] = (T)(img)(_n6##x,y,z,c), I[319] = (T)(img)(_n7##x,y,z,c), I[320] = (T)(img)(_n8##x,y,z,c), I[321] = (T)(img)(_n9##x,y,z,c), I[322] = (T)(img)(_n10##x,y,z,c), I[323] = (T)(img)(_n11##x,y,z,c), I[324] = (T)(img)(_n12##x,y,z,c), \ + I[325] = (T)(img)(_p12##x,_n1##y,z,c), I[326] = (T)(img)(_p11##x,_n1##y,z,c), I[327] = (T)(img)(_p10##x,_n1##y,z,c), I[328] = (T)(img)(_p9##x,_n1##y,z,c), I[329] = (T)(img)(_p8##x,_n1##y,z,c), I[330] = (T)(img)(_p7##x,_n1##y,z,c), I[331] = (T)(img)(_p6##x,_n1##y,z,c), I[332] = (T)(img)(_p5##x,_n1##y,z,c), I[333] = (T)(img)(_p4##x,_n1##y,z,c), I[334] = (T)(img)(_p3##x,_n1##y,z,c), I[335] = (T)(img)(_p2##x,_n1##y,z,c), I[336] = (T)(img)(_p1##x,_n1##y,z,c), I[337] = (T)(img)(x,_n1##y,z,c), I[338] = (T)(img)(_n1##x,_n1##y,z,c), I[339] = (T)(img)(_n2##x,_n1##y,z,c), I[340] = (T)(img)(_n3##x,_n1##y,z,c), I[341] = (T)(img)(_n4##x,_n1##y,z,c), I[342] = (T)(img)(_n5##x,_n1##y,z,c), I[343] = (T)(img)(_n6##x,_n1##y,z,c), I[344] = (T)(img)(_n7##x,_n1##y,z,c), I[345] = (T)(img)(_n8##x,_n1##y,z,c), I[346] = (T)(img)(_n9##x,_n1##y,z,c), I[347] = (T)(img)(_n10##x,_n1##y,z,c), I[348] = (T)(img)(_n11##x,_n1##y,z,c), I[349] = (T)(img)(_n12##x,_n1##y,z,c), \ + I[350] = (T)(img)(_p12##x,_n2##y,z,c), I[351] = (T)(img)(_p11##x,_n2##y,z,c), I[352] = (T)(img)(_p10##x,_n2##y,z,c), I[353] = (T)(img)(_p9##x,_n2##y,z,c), I[354] = (T)(img)(_p8##x,_n2##y,z,c), I[355] = (T)(img)(_p7##x,_n2##y,z,c), I[356] = (T)(img)(_p6##x,_n2##y,z,c), I[357] = (T)(img)(_p5##x,_n2##y,z,c), I[358] = (T)(img)(_p4##x,_n2##y,z,c), I[359] = (T)(img)(_p3##x,_n2##y,z,c), I[360] = (T)(img)(_p2##x,_n2##y,z,c), I[361] = (T)(img)(_p1##x,_n2##y,z,c), I[362] = (T)(img)(x,_n2##y,z,c), I[363] = (T)(img)(_n1##x,_n2##y,z,c), I[364] = (T)(img)(_n2##x,_n2##y,z,c), I[365] = (T)(img)(_n3##x,_n2##y,z,c), I[366] = (T)(img)(_n4##x,_n2##y,z,c), I[367] = (T)(img)(_n5##x,_n2##y,z,c), I[368] = (T)(img)(_n6##x,_n2##y,z,c), I[369] = (T)(img)(_n7##x,_n2##y,z,c), I[370] = (T)(img)(_n8##x,_n2##y,z,c), I[371] = (T)(img)(_n9##x,_n2##y,z,c), I[372] = (T)(img)(_n10##x,_n2##y,z,c), I[373] = (T)(img)(_n11##x,_n2##y,z,c), I[374] = (T)(img)(_n12##x,_n2##y,z,c), \ + I[375] = (T)(img)(_p12##x,_n3##y,z,c), I[376] = (T)(img)(_p11##x,_n3##y,z,c), I[377] = (T)(img)(_p10##x,_n3##y,z,c), I[378] = (T)(img)(_p9##x,_n3##y,z,c), I[379] = (T)(img)(_p8##x,_n3##y,z,c), I[380] = (T)(img)(_p7##x,_n3##y,z,c), I[381] = (T)(img)(_p6##x,_n3##y,z,c), I[382] = (T)(img)(_p5##x,_n3##y,z,c), I[383] = (T)(img)(_p4##x,_n3##y,z,c), I[384] = (T)(img)(_p3##x,_n3##y,z,c), I[385] = (T)(img)(_p2##x,_n3##y,z,c), I[386] = (T)(img)(_p1##x,_n3##y,z,c), I[387] = (T)(img)(x,_n3##y,z,c), I[388] = (T)(img)(_n1##x,_n3##y,z,c), I[389] = (T)(img)(_n2##x,_n3##y,z,c), I[390] = (T)(img)(_n3##x,_n3##y,z,c), I[391] = (T)(img)(_n4##x,_n3##y,z,c), I[392] = (T)(img)(_n5##x,_n3##y,z,c), I[393] = (T)(img)(_n6##x,_n3##y,z,c), I[394] = (T)(img)(_n7##x,_n3##y,z,c), I[395] = (T)(img)(_n8##x,_n3##y,z,c), I[396] = (T)(img)(_n9##x,_n3##y,z,c), I[397] = (T)(img)(_n10##x,_n3##y,z,c), I[398] = (T)(img)(_n11##x,_n3##y,z,c), I[399] = (T)(img)(_n12##x,_n3##y,z,c), \ + I[400] = (T)(img)(_p12##x,_n4##y,z,c), I[401] = (T)(img)(_p11##x,_n4##y,z,c), I[402] = (T)(img)(_p10##x,_n4##y,z,c), I[403] = (T)(img)(_p9##x,_n4##y,z,c), I[404] = (T)(img)(_p8##x,_n4##y,z,c), I[405] = (T)(img)(_p7##x,_n4##y,z,c), I[406] = (T)(img)(_p6##x,_n4##y,z,c), I[407] = (T)(img)(_p5##x,_n4##y,z,c), I[408] = (T)(img)(_p4##x,_n4##y,z,c), I[409] = (T)(img)(_p3##x,_n4##y,z,c), I[410] = (T)(img)(_p2##x,_n4##y,z,c), I[411] = (T)(img)(_p1##x,_n4##y,z,c), I[412] = (T)(img)(x,_n4##y,z,c), I[413] = (T)(img)(_n1##x,_n4##y,z,c), I[414] = (T)(img)(_n2##x,_n4##y,z,c), I[415] = (T)(img)(_n3##x,_n4##y,z,c), I[416] = (T)(img)(_n4##x,_n4##y,z,c), I[417] = (T)(img)(_n5##x,_n4##y,z,c), I[418] = (T)(img)(_n6##x,_n4##y,z,c), I[419] = (T)(img)(_n7##x,_n4##y,z,c), I[420] = (T)(img)(_n8##x,_n4##y,z,c), I[421] = (T)(img)(_n9##x,_n4##y,z,c), I[422] = (T)(img)(_n10##x,_n4##y,z,c), I[423] = (T)(img)(_n11##x,_n4##y,z,c), I[424] = (T)(img)(_n12##x,_n4##y,z,c), \ + I[425] = (T)(img)(_p12##x,_n5##y,z,c), I[426] = (T)(img)(_p11##x,_n5##y,z,c), I[427] = (T)(img)(_p10##x,_n5##y,z,c), I[428] = (T)(img)(_p9##x,_n5##y,z,c), I[429] = (T)(img)(_p8##x,_n5##y,z,c), I[430] = (T)(img)(_p7##x,_n5##y,z,c), I[431] = (T)(img)(_p6##x,_n5##y,z,c), I[432] = (T)(img)(_p5##x,_n5##y,z,c), I[433] = (T)(img)(_p4##x,_n5##y,z,c), I[434] = (T)(img)(_p3##x,_n5##y,z,c), I[435] = (T)(img)(_p2##x,_n5##y,z,c), I[436] = (T)(img)(_p1##x,_n5##y,z,c), I[437] = (T)(img)(x,_n5##y,z,c), I[438] = (T)(img)(_n1##x,_n5##y,z,c), I[439] = (T)(img)(_n2##x,_n5##y,z,c), I[440] = (T)(img)(_n3##x,_n5##y,z,c), I[441] = (T)(img)(_n4##x,_n5##y,z,c), I[442] = (T)(img)(_n5##x,_n5##y,z,c), I[443] = (T)(img)(_n6##x,_n5##y,z,c), I[444] = (T)(img)(_n7##x,_n5##y,z,c), I[445] = (T)(img)(_n8##x,_n5##y,z,c), I[446] = (T)(img)(_n9##x,_n5##y,z,c), I[447] = (T)(img)(_n10##x,_n5##y,z,c), I[448] = (T)(img)(_n11##x,_n5##y,z,c), I[449] = (T)(img)(_n12##x,_n5##y,z,c), \ + I[450] = (T)(img)(_p12##x,_n6##y,z,c), I[451] = (T)(img)(_p11##x,_n6##y,z,c), I[452] = (T)(img)(_p10##x,_n6##y,z,c), I[453] = (T)(img)(_p9##x,_n6##y,z,c), I[454] = (T)(img)(_p8##x,_n6##y,z,c), I[455] = (T)(img)(_p7##x,_n6##y,z,c), I[456] = (T)(img)(_p6##x,_n6##y,z,c), I[457] = (T)(img)(_p5##x,_n6##y,z,c), I[458] = (T)(img)(_p4##x,_n6##y,z,c), I[459] = (T)(img)(_p3##x,_n6##y,z,c), I[460] = (T)(img)(_p2##x,_n6##y,z,c), I[461] = (T)(img)(_p1##x,_n6##y,z,c), I[462] = (T)(img)(x,_n6##y,z,c), I[463] = (T)(img)(_n1##x,_n6##y,z,c), I[464] = (T)(img)(_n2##x,_n6##y,z,c), I[465] = (T)(img)(_n3##x,_n6##y,z,c), I[466] = (T)(img)(_n4##x,_n6##y,z,c), I[467] = (T)(img)(_n5##x,_n6##y,z,c), I[468] = (T)(img)(_n6##x,_n6##y,z,c), I[469] = (T)(img)(_n7##x,_n6##y,z,c), I[470] = (T)(img)(_n8##x,_n6##y,z,c), I[471] = (T)(img)(_n9##x,_n6##y,z,c), I[472] = (T)(img)(_n10##x,_n6##y,z,c), I[473] = (T)(img)(_n11##x,_n6##y,z,c), I[474] = (T)(img)(_n12##x,_n6##y,z,c), \ + I[475] = (T)(img)(_p12##x,_n7##y,z,c), I[476] = (T)(img)(_p11##x,_n7##y,z,c), I[477] = (T)(img)(_p10##x,_n7##y,z,c), I[478] = (T)(img)(_p9##x,_n7##y,z,c), I[479] = (T)(img)(_p8##x,_n7##y,z,c), I[480] = (T)(img)(_p7##x,_n7##y,z,c), I[481] = (T)(img)(_p6##x,_n7##y,z,c), I[482] = (T)(img)(_p5##x,_n7##y,z,c), I[483] = (T)(img)(_p4##x,_n7##y,z,c), I[484] = (T)(img)(_p3##x,_n7##y,z,c), I[485] = (T)(img)(_p2##x,_n7##y,z,c), I[486] = (T)(img)(_p1##x,_n7##y,z,c), I[487] = (T)(img)(x,_n7##y,z,c), I[488] = (T)(img)(_n1##x,_n7##y,z,c), I[489] = (T)(img)(_n2##x,_n7##y,z,c), I[490] = (T)(img)(_n3##x,_n7##y,z,c), I[491] = (T)(img)(_n4##x,_n7##y,z,c), I[492] = (T)(img)(_n5##x,_n7##y,z,c), I[493] = (T)(img)(_n6##x,_n7##y,z,c), I[494] = (T)(img)(_n7##x,_n7##y,z,c), I[495] = (T)(img)(_n8##x,_n7##y,z,c), I[496] = (T)(img)(_n9##x,_n7##y,z,c), I[497] = (T)(img)(_n10##x,_n7##y,z,c), I[498] = (T)(img)(_n11##x,_n7##y,z,c), I[499] = (T)(img)(_n12##x,_n7##y,z,c), \ + I[500] = (T)(img)(_p12##x,_n8##y,z,c), I[501] = (T)(img)(_p11##x,_n8##y,z,c), I[502] = (T)(img)(_p10##x,_n8##y,z,c), I[503] = (T)(img)(_p9##x,_n8##y,z,c), I[504] = (T)(img)(_p8##x,_n8##y,z,c), I[505] = (T)(img)(_p7##x,_n8##y,z,c), I[506] = (T)(img)(_p6##x,_n8##y,z,c), I[507] = (T)(img)(_p5##x,_n8##y,z,c), I[508] = (T)(img)(_p4##x,_n8##y,z,c), I[509] = (T)(img)(_p3##x,_n8##y,z,c), I[510] = (T)(img)(_p2##x,_n8##y,z,c), I[511] = (T)(img)(_p1##x,_n8##y,z,c), I[512] = (T)(img)(x,_n8##y,z,c), I[513] = (T)(img)(_n1##x,_n8##y,z,c), I[514] = (T)(img)(_n2##x,_n8##y,z,c), I[515] = (T)(img)(_n3##x,_n8##y,z,c), I[516] = (T)(img)(_n4##x,_n8##y,z,c), I[517] = (T)(img)(_n5##x,_n8##y,z,c), I[518] = (T)(img)(_n6##x,_n8##y,z,c), I[519] = (T)(img)(_n7##x,_n8##y,z,c), I[520] = (T)(img)(_n8##x,_n8##y,z,c), I[521] = (T)(img)(_n9##x,_n8##y,z,c), I[522] = (T)(img)(_n10##x,_n8##y,z,c), I[523] = (T)(img)(_n11##x,_n8##y,z,c), I[524] = (T)(img)(_n12##x,_n8##y,z,c), \ + I[525] = (T)(img)(_p12##x,_n9##y,z,c), I[526] = (T)(img)(_p11##x,_n9##y,z,c), I[527] = (T)(img)(_p10##x,_n9##y,z,c), I[528] = (T)(img)(_p9##x,_n9##y,z,c), I[529] = (T)(img)(_p8##x,_n9##y,z,c), I[530] = (T)(img)(_p7##x,_n9##y,z,c), I[531] = (T)(img)(_p6##x,_n9##y,z,c), I[532] = (T)(img)(_p5##x,_n9##y,z,c), I[533] = (T)(img)(_p4##x,_n9##y,z,c), I[534] = (T)(img)(_p3##x,_n9##y,z,c), I[535] = (T)(img)(_p2##x,_n9##y,z,c), I[536] = (T)(img)(_p1##x,_n9##y,z,c), I[537] = (T)(img)(x,_n9##y,z,c), I[538] = (T)(img)(_n1##x,_n9##y,z,c), I[539] = (T)(img)(_n2##x,_n9##y,z,c), I[540] = (T)(img)(_n3##x,_n9##y,z,c), I[541] = (T)(img)(_n4##x,_n9##y,z,c), I[542] = (T)(img)(_n5##x,_n9##y,z,c), I[543] = (T)(img)(_n6##x,_n9##y,z,c), I[544] = (T)(img)(_n7##x,_n9##y,z,c), I[545] = (T)(img)(_n8##x,_n9##y,z,c), I[546] = (T)(img)(_n9##x,_n9##y,z,c), I[547] = (T)(img)(_n10##x,_n9##y,z,c), I[548] = (T)(img)(_n11##x,_n9##y,z,c), I[549] = (T)(img)(_n12##x,_n9##y,z,c), \ + I[550] = (T)(img)(_p12##x,_n10##y,z,c), I[551] = (T)(img)(_p11##x,_n10##y,z,c), I[552] = (T)(img)(_p10##x,_n10##y,z,c), I[553] = (T)(img)(_p9##x,_n10##y,z,c), I[554] = (T)(img)(_p8##x,_n10##y,z,c), I[555] = (T)(img)(_p7##x,_n10##y,z,c), I[556] = (T)(img)(_p6##x,_n10##y,z,c), I[557] = (T)(img)(_p5##x,_n10##y,z,c), I[558] = (T)(img)(_p4##x,_n10##y,z,c), I[559] = (T)(img)(_p3##x,_n10##y,z,c), I[560] = (T)(img)(_p2##x,_n10##y,z,c), I[561] = (T)(img)(_p1##x,_n10##y,z,c), I[562] = (T)(img)(x,_n10##y,z,c), I[563] = (T)(img)(_n1##x,_n10##y,z,c), I[564] = (T)(img)(_n2##x,_n10##y,z,c), I[565] = (T)(img)(_n3##x,_n10##y,z,c), I[566] = (T)(img)(_n4##x,_n10##y,z,c), I[567] = (T)(img)(_n5##x,_n10##y,z,c), I[568] = (T)(img)(_n6##x,_n10##y,z,c), I[569] = (T)(img)(_n7##x,_n10##y,z,c), I[570] = (T)(img)(_n8##x,_n10##y,z,c), I[571] = (T)(img)(_n9##x,_n10##y,z,c), I[572] = (T)(img)(_n10##x,_n10##y,z,c), I[573] = (T)(img)(_n11##x,_n10##y,z,c), I[574] = (T)(img)(_n12##x,_n10##y,z,c), \ + I[575] = (T)(img)(_p12##x,_n11##y,z,c), I[576] = (T)(img)(_p11##x,_n11##y,z,c), I[577] = (T)(img)(_p10##x,_n11##y,z,c), I[578] = (T)(img)(_p9##x,_n11##y,z,c), I[579] = (T)(img)(_p8##x,_n11##y,z,c), I[580] = (T)(img)(_p7##x,_n11##y,z,c), I[581] = (T)(img)(_p6##x,_n11##y,z,c), I[582] = (T)(img)(_p5##x,_n11##y,z,c), I[583] = (T)(img)(_p4##x,_n11##y,z,c), I[584] = (T)(img)(_p3##x,_n11##y,z,c), I[585] = (T)(img)(_p2##x,_n11##y,z,c), I[586] = (T)(img)(_p1##x,_n11##y,z,c), I[587] = (T)(img)(x,_n11##y,z,c), I[588] = (T)(img)(_n1##x,_n11##y,z,c), I[589] = (T)(img)(_n2##x,_n11##y,z,c), I[590] = (T)(img)(_n3##x,_n11##y,z,c), I[591] = (T)(img)(_n4##x,_n11##y,z,c), I[592] = (T)(img)(_n5##x,_n11##y,z,c), I[593] = (T)(img)(_n6##x,_n11##y,z,c), I[594] = (T)(img)(_n7##x,_n11##y,z,c), I[595] = (T)(img)(_n8##x,_n11##y,z,c), I[596] = (T)(img)(_n9##x,_n11##y,z,c), I[597] = (T)(img)(_n10##x,_n11##y,z,c), I[598] = (T)(img)(_n11##x,_n11##y,z,c), I[599] = (T)(img)(_n12##x,_n11##y,z,c), \ + I[600] = (T)(img)(_p12##x,_n12##y,z,c), I[601] = (T)(img)(_p11##x,_n12##y,z,c), I[602] = (T)(img)(_p10##x,_n12##y,z,c), I[603] = (T)(img)(_p9##x,_n12##y,z,c), I[604] = (T)(img)(_p8##x,_n12##y,z,c), I[605] = (T)(img)(_p7##x,_n12##y,z,c), I[606] = (T)(img)(_p6##x,_n12##y,z,c), I[607] = (T)(img)(_p5##x,_n12##y,z,c), I[608] = (T)(img)(_p4##x,_n12##y,z,c), I[609] = (T)(img)(_p3##x,_n12##y,z,c), I[610] = (T)(img)(_p2##x,_n12##y,z,c), I[611] = (T)(img)(_p1##x,_n12##y,z,c), I[612] = (T)(img)(x,_n12##y,z,c), I[613] = (T)(img)(_n1##x,_n12##y,z,c), I[614] = (T)(img)(_n2##x,_n12##y,z,c), I[615] = (T)(img)(_n3##x,_n12##y,z,c), I[616] = (T)(img)(_n4##x,_n12##y,z,c), I[617] = (T)(img)(_n5##x,_n12##y,z,c), I[618] = (T)(img)(_n6##x,_n12##y,z,c), I[619] = (T)(img)(_n7##x,_n12##y,z,c), I[620] = (T)(img)(_n8##x,_n12##y,z,c), I[621] = (T)(img)(_n9##x,_n12##y,z,c), I[622] = (T)(img)(_n10##x,_n12##y,z,c), I[623] = (T)(img)(_n11##x,_n12##y,z,c), I[624] = (T)(img)(_n12##x,_n12##y,z,c); + +// Define 26x26 loop macros +//------------------------- +#define cimg_for26(bound,i) for (int i = 0, \ + _p12##i = 0, _p11##i = 0, _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11, \ + _n12##i = 12>=(int)(bound)?(int)(bound) - 1:12, \ + _n13##i = 13>=(int)(bound)?(int)(bound) - 1:13; \ + _n13##i<(int)(bound) || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i) + +#define cimg_for26X(img,x) cimg_for26((img)._width,x) +#define cimg_for26Y(img,y) cimg_for26((img)._height,y) +#define cimg_for26Z(img,z) cimg_for26((img)._depth,z) +#define cimg_for26C(img,c) cimg_for26((img)._spectrum,c) +#define cimg_for26XY(img,x,y) cimg_for26Y(img,y) cimg_for26X(img,x) +#define cimg_for26XZ(img,x,z) cimg_for26Z(img,z) cimg_for26X(img,x) +#define cimg_for26XC(img,x,c) cimg_for26C(img,c) cimg_for26X(img,x) +#define cimg_for26YZ(img,y,z) cimg_for26Z(img,z) cimg_for26Y(img,y) +#define cimg_for26YC(img,y,c) cimg_for26C(img,c) cimg_for26Y(img,y) +#define cimg_for26ZC(img,z,c) cimg_for26C(img,c) cimg_for26Z(img,z) +#define cimg_for26XYZ(img,x,y,z) cimg_for26Z(img,z) cimg_for26XY(img,x,y) +#define cimg_for26XZC(img,x,z,c) cimg_for26C(img,c) cimg_for26XZ(img,x,z) +#define cimg_for26YZC(img,y,z,c) cimg_for26C(img,c) cimg_for26YZ(img,y,z) +#define cimg_for26XYZC(img,x,y,z,c) cimg_for26C(img,c) cimg_for26XYZ(img,x,y,z) + +#define cimg_for_in26(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p12##i = i - 12<0?0:i - 12, \ + _p11##i = i - 11<0?0:i - 11, \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11, \ + _n12##i = i + 12>=(int)(bound)?(int)(bound) - 1:i + 12, \ + _n13##i = i + 13>=(int)(bound)?(int)(bound) - 1:i + 13; \ + i<=(int)(i1) && (_n13##i<(int)(bound) || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i) + +#define cimg_for_in26X(img,x0,x1,x) cimg_for_in26((img)._width,x0,x1,x) +#define cimg_for_in26Y(img,y0,y1,y) cimg_for_in26((img)._height,y0,y1,y) +#define cimg_for_in26Z(img,z0,z1,z) cimg_for_in26((img)._depth,z0,z1,z) +#define cimg_for_in26C(img,c0,c1,c) cimg_for_in26((img)._spectrum,c0,c1,c) +#define cimg_for_in26XY(img,x0,y0,x1,y1,x,y) cimg_for_in26Y(img,y0,y1,y) cimg_for_in26X(img,x0,x1,x) +#define cimg_for_in26XZ(img,x0,z0,x1,z1,x,z) cimg_for_in26Z(img,z0,z1,z) cimg_for_in26X(img,x0,x1,x) +#define cimg_for_in26XC(img,x0,c0,x1,c1,x,c) cimg_for_in26C(img,c0,c1,c) cimg_for_in26X(img,x0,x1,x) +#define cimg_for_in26YZ(img,y0,z0,y1,z1,y,z) cimg_for_in26Z(img,z0,z1,z) cimg_for_in26Y(img,y0,y1,y) +#define cimg_for_in26YC(img,y0,c0,y1,c1,y,c) cimg_for_in26C(img,c0,c1,c) cimg_for_in26Y(img,y0,y1,y) +#define cimg_for_in26ZC(img,z0,c0,z1,c1,z,c) cimg_for_in26C(img,c0,c1,c) cimg_for_in26Z(img,z0,z1,z) +#define cimg_for_in26XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in26Z(img,z0,z1,z) cimg_for_in26XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in26XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in26C(img,c0,c1,c) cimg_for_in26XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in26YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in26C(img,c0,c1,c) cimg_for_in26YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in26XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in26C(img,c0,c1,c) cimg_for_in26XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for26x26(img,x,y,z,c,I,T) \ + cimg_for26((img)._height,y) for (int x = 0, \ + _p12##x = 0, _p11##x = 0, _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = 11>=((img)._width)?(img).width() - 1:11, \ + _n12##x = 12>=((img)._width)?(img).width() - 1:12, \ + _n13##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = I[11] = I[12] = (T)(img)(0,_p12##y,z,c)), \ + (I[26] = I[27] = I[28] = I[29] = I[30] = I[31] = I[32] = I[33] = I[34] = I[35] = I[36] = I[37] = I[38] = (T)(img)(0,_p11##y,z,c)), \ + (I[52] = I[53] = I[54] = I[55] = I[56] = I[57] = I[58] = I[59] = I[60] = I[61] = I[62] = I[63] = I[64] = (T)(img)(0,_p10##y,z,c)), \ + (I[78] = I[79] = I[80] = I[81] = I[82] = I[83] = I[84] = I[85] = I[86] = I[87] = I[88] = I[89] = I[90] = (T)(img)(0,_p9##y,z,c)), \ + (I[104] = I[105] = I[106] = I[107] = I[108] = I[109] = I[110] = I[111] = I[112] = I[113] = I[114] = I[115] = I[116] = (T)(img)(0,_p8##y,z,c)), \ + (I[130] = I[131] = I[132] = I[133] = I[134] = I[135] = I[136] = I[137] = I[138] = I[139] = I[140] = I[141] = I[142] = (T)(img)(0,_p7##y,z,c)), \ + (I[156] = I[157] = I[158] = I[159] = I[160] = I[161] = I[162] = I[163] = I[164] = I[165] = I[166] = I[167] = I[168] = (T)(img)(0,_p6##y,z,c)), \ + (I[182] = I[183] = I[184] = I[185] = I[186] = I[187] = I[188] = I[189] = I[190] = I[191] = I[192] = I[193] = I[194] = (T)(img)(0,_p5##y,z,c)), \ + (I[208] = I[209] = I[210] = I[211] = I[212] = I[213] = I[214] = I[215] = I[216] = I[217] = I[218] = I[219] = I[220] = (T)(img)(0,_p4##y,z,c)), \ + (I[234] = I[235] = I[236] = I[237] = I[238] = I[239] = I[240] = I[241] = I[242] = I[243] = I[244] = I[245] = I[246] = (T)(img)(0,_p3##y,z,c)), \ + (I[260] = I[261] = I[262] = I[263] = I[264] = I[265] = I[266] = I[267] = I[268] = I[269] = I[270] = I[271] = I[272] = (T)(img)(0,_p2##y,z,c)), \ + (I[286] = I[287] = I[288] = I[289] = I[290] = I[291] = I[292] = I[293] = I[294] = I[295] = I[296] = I[297] = I[298] = (T)(img)(0,_p1##y,z,c)), \ + (I[312] = I[313] = I[314] = I[315] = I[316] = I[317] = I[318] = I[319] = I[320] = I[321] = I[322] = I[323] = I[324] = (T)(img)(0,y,z,c)), \ + (I[338] = I[339] = I[340] = I[341] = I[342] = I[343] = I[344] = I[345] = I[346] = I[347] = I[348] = I[349] = I[350] = (T)(img)(0,_n1##y,z,c)), \ + (I[364] = I[365] = I[366] = I[367] = I[368] = I[369] = I[370] = I[371] = I[372] = I[373] = I[374] = I[375] = I[376] = (T)(img)(0,_n2##y,z,c)), \ + (I[390] = I[391] = I[392] = I[393] = I[394] = I[395] = I[396] = I[397] = I[398] = I[399] = I[400] = I[401] = I[402] = (T)(img)(0,_n3##y,z,c)), \ + (I[416] = I[417] = I[418] = I[419] = I[420] = I[421] = I[422] = I[423] = I[424] = I[425] = I[426] = I[427] = I[428] = (T)(img)(0,_n4##y,z,c)), \ + (I[442] = I[443] = I[444] = I[445] = I[446] = I[447] = I[448] = I[449] = I[450] = I[451] = I[452] = I[453] = I[454] = (T)(img)(0,_n5##y,z,c)), \ + (I[468] = I[469] = I[470] = I[471] = I[472] = I[473] = I[474] = I[475] = I[476] = I[477] = I[478] = I[479] = I[480] = (T)(img)(0,_n6##y,z,c)), \ + (I[494] = I[495] = I[496] = I[497] = I[498] = I[499] = I[500] = I[501] = I[502] = I[503] = I[504] = I[505] = I[506] = (T)(img)(0,_n7##y,z,c)), \ + (I[520] = I[521] = I[522] = I[523] = I[524] = I[525] = I[526] = I[527] = I[528] = I[529] = I[530] = I[531] = I[532] = (T)(img)(0,_n8##y,z,c)), \ + (I[546] = I[547] = I[548] = I[549] = I[550] = I[551] = I[552] = I[553] = I[554] = I[555] = I[556] = I[557] = I[558] = (T)(img)(0,_n9##y,z,c)), \ + (I[572] = I[573] = I[574] = I[575] = I[576] = I[577] = I[578] = I[579] = I[580] = I[581] = I[582] = I[583] = I[584] = (T)(img)(0,_n10##y,z,c)), \ + (I[598] = I[599] = I[600] = I[601] = I[602] = I[603] = I[604] = I[605] = I[606] = I[607] = I[608] = I[609] = I[610] = (T)(img)(0,_n11##y,z,c)), \ + (I[624] = I[625] = I[626] = I[627] = I[628] = I[629] = I[630] = I[631] = I[632] = I[633] = I[634] = I[635] = I[636] = (T)(img)(0,_n12##y,z,c)), \ + (I[650] = I[651] = I[652] = I[653] = I[654] = I[655] = I[656] = I[657] = I[658] = I[659] = I[660] = I[661] = I[662] = (T)(img)(0,_n13##y,z,c)), \ + (I[13] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[39] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[65] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[91] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[117] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[143] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[169] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[195] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[221] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[247] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[273] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[299] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[325] = (T)(img)(_n1##x,y,z,c)), \ + (I[351] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[377] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[403] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[429] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[455] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[481] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[507] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[533] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[559] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[585] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[611] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[637] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[663] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[14] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[40] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[66] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[92] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[118] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[144] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[170] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[196] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[222] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[248] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[274] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[300] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[326] = (T)(img)(_n2##x,y,z,c)), \ + (I[352] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[378] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[404] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[430] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[456] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[482] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[508] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[534] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[560] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[586] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[612] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[638] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[664] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[15] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[41] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[67] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[93] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[119] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[145] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[171] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[197] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[223] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[249] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[275] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[301] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[327] = (T)(img)(_n3##x,y,z,c)), \ + (I[353] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[379] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[405] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[431] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[457] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[483] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[509] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[535] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[561] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[587] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[613] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[639] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[665] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[16] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[42] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[68] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[94] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[120] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[146] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[172] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[198] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[224] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[250] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[276] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[302] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[328] = (T)(img)(_n4##x,y,z,c)), \ + (I[354] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[380] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[406] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[432] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[458] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[484] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[510] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[536] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[562] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[588] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[614] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[640] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[666] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[17] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[43] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[69] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[95] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[121] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[147] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[173] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[199] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[225] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[251] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[277] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[303] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[329] = (T)(img)(_n5##x,y,z,c)), \ + (I[355] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[381] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[407] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[433] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[459] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[485] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[511] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[537] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[563] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[589] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[615] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[641] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[667] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[18] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[44] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[70] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[96] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[122] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[148] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[174] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[200] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[226] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[252] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[278] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[304] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[330] = (T)(img)(_n6##x,y,z,c)), \ + (I[356] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[382] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[408] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[434] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[460] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[486] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[512] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[538] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[564] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[590] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[616] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[642] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[668] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[19] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[45] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[71] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[97] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[123] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[149] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[175] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[201] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[227] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[253] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[279] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[305] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[331] = (T)(img)(_n7##x,y,z,c)), \ + (I[357] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[383] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[409] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[435] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[461] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[487] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[513] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[539] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[565] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[591] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[617] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[643] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[669] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[20] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[46] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[72] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[98] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[124] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[150] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[176] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[202] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[228] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[254] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[280] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[306] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[332] = (T)(img)(_n8##x,y,z,c)), \ + (I[358] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[384] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[410] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[436] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[462] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[488] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[514] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[540] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[566] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[592] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[618] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[644] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[670] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[21] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[47] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[73] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[99] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[125] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[151] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[177] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[203] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[229] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[255] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[281] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[307] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[333] = (T)(img)(_n9##x,y,z,c)), \ + (I[359] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[385] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[411] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[437] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[463] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[489] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[515] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[541] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[567] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[593] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[619] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[645] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[671] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[22] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[48] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[74] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[100] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[126] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[152] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[178] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[204] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[230] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[256] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[282] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[308] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[334] = (T)(img)(_n10##x,y,z,c)), \ + (I[360] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[386] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[412] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[438] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[464] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[490] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[516] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[542] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[568] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[594] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[620] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[646] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[672] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[23] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[49] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[75] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[101] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[127] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[153] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[179] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[205] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[231] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[257] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[283] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[309] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[335] = (T)(img)(_n11##x,y,z,c)), \ + (I[361] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[387] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[413] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[439] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[465] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[491] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[517] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[543] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[569] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[595] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[621] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[647] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[673] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[24] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[50] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[76] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[102] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[128] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[154] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[180] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[206] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[232] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[258] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[284] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[310] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[336] = (T)(img)(_n12##x,y,z,c)), \ + (I[362] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[388] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[414] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[440] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[466] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[492] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[518] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[544] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[570] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[596] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[622] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[648] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[674] = (T)(img)(_n12##x,_n13##y,z,c)), \ + 13>=((img)._width)?(img).width() - 1:13); \ + (_n13##x<(img).width() && ( \ + (I[25] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[51] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[77] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[103] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[129] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[155] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[181] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[207] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[233] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[259] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[285] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[311] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[337] = (T)(img)(_n13##x,y,z,c)), \ + (I[363] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[389] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[415] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[441] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[467] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[493] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[519] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[545] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[571] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[597] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[623] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[649] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[675] = (T)(img)(_n13##x,_n13##y,z,c)),1)) || \ + _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], \ + I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], \ + I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], \ + I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], \ + I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], \ + I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], \ + I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], \ + I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], \ + I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], \ + I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], \ + I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], \ + I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], \ + I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], \ + I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], \ + I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], \ + I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], \ + I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], \ + I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], \ + I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], \ + I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], \ + I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], \ + I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], \ + I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], \ + I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], \ + I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], \ + I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], I[671] = I[672], I[672] = I[673], I[673] = I[674], I[674] = I[675], \ + _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x) + +#define cimg_for_in26x26(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in26((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p12##x = x - 12<0?0:x - 12, \ + _p11##x = x - 11<0?0:x - 11, \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = x + 11>=(img).width()?(img).width() - 1:x + 11, \ + _n12##x = x + 12>=(img).width()?(img).width() - 1:x + 12, \ + _n13##x = (int)( \ + (I[0] = (T)(img)(_p12##x,_p12##y,z,c)), \ + (I[26] = (T)(img)(_p12##x,_p11##y,z,c)), \ + (I[52] = (T)(img)(_p12##x,_p10##y,z,c)), \ + (I[78] = (T)(img)(_p12##x,_p9##y,z,c)), \ + (I[104] = (T)(img)(_p12##x,_p8##y,z,c)), \ + (I[130] = (T)(img)(_p12##x,_p7##y,z,c)), \ + (I[156] = (T)(img)(_p12##x,_p6##y,z,c)), \ + (I[182] = (T)(img)(_p12##x,_p5##y,z,c)), \ + (I[208] = (T)(img)(_p12##x,_p4##y,z,c)), \ + (I[234] = (T)(img)(_p12##x,_p3##y,z,c)), \ + (I[260] = (T)(img)(_p12##x,_p2##y,z,c)), \ + (I[286] = (T)(img)(_p12##x,_p1##y,z,c)), \ + (I[312] = (T)(img)(_p12##x,y,z,c)), \ + (I[338] = (T)(img)(_p12##x,_n1##y,z,c)), \ + (I[364] = (T)(img)(_p12##x,_n2##y,z,c)), \ + (I[390] = (T)(img)(_p12##x,_n3##y,z,c)), \ + (I[416] = (T)(img)(_p12##x,_n4##y,z,c)), \ + (I[442] = (T)(img)(_p12##x,_n5##y,z,c)), \ + (I[468] = (T)(img)(_p12##x,_n6##y,z,c)), \ + (I[494] = (T)(img)(_p12##x,_n7##y,z,c)), \ + (I[520] = (T)(img)(_p12##x,_n8##y,z,c)), \ + (I[546] = (T)(img)(_p12##x,_n9##y,z,c)), \ + (I[572] = (T)(img)(_p12##x,_n10##y,z,c)), \ + (I[598] = (T)(img)(_p12##x,_n11##y,z,c)), \ + (I[624] = (T)(img)(_p12##x,_n12##y,z,c)), \ + (I[650] = (T)(img)(_p12##x,_n13##y,z,c)), \ + (I[1] = (T)(img)(_p11##x,_p12##y,z,c)), \ + (I[27] = (T)(img)(_p11##x,_p11##y,z,c)), \ + (I[53] = (T)(img)(_p11##x,_p10##y,z,c)), \ + (I[79] = (T)(img)(_p11##x,_p9##y,z,c)), \ + (I[105] = (T)(img)(_p11##x,_p8##y,z,c)), \ + (I[131] = (T)(img)(_p11##x,_p7##y,z,c)), \ + (I[157] = (T)(img)(_p11##x,_p6##y,z,c)), \ + (I[183] = (T)(img)(_p11##x,_p5##y,z,c)), \ + (I[209] = (T)(img)(_p11##x,_p4##y,z,c)), \ + (I[235] = (T)(img)(_p11##x,_p3##y,z,c)), \ + (I[261] = (T)(img)(_p11##x,_p2##y,z,c)), \ + (I[287] = (T)(img)(_p11##x,_p1##y,z,c)), \ + (I[313] = (T)(img)(_p11##x,y,z,c)), \ + (I[339] = (T)(img)(_p11##x,_n1##y,z,c)), \ + (I[365] = (T)(img)(_p11##x,_n2##y,z,c)), \ + (I[391] = (T)(img)(_p11##x,_n3##y,z,c)), \ + (I[417] = (T)(img)(_p11##x,_n4##y,z,c)), \ + (I[443] = (T)(img)(_p11##x,_n5##y,z,c)), \ + (I[469] = (T)(img)(_p11##x,_n6##y,z,c)), \ + (I[495] = (T)(img)(_p11##x,_n7##y,z,c)), \ + (I[521] = (T)(img)(_p11##x,_n8##y,z,c)), \ + (I[547] = (T)(img)(_p11##x,_n9##y,z,c)), \ + (I[573] = (T)(img)(_p11##x,_n10##y,z,c)), \ + (I[599] = (T)(img)(_p11##x,_n11##y,z,c)), \ + (I[625] = (T)(img)(_p11##x,_n12##y,z,c)), \ + (I[651] = (T)(img)(_p11##x,_n13##y,z,c)), \ + (I[2] = (T)(img)(_p10##x,_p12##y,z,c)), \ + (I[28] = (T)(img)(_p10##x,_p11##y,z,c)), \ + (I[54] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[80] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[106] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[132] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[158] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[184] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[210] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[236] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[262] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[288] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[314] = (T)(img)(_p10##x,y,z,c)), \ + (I[340] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[366] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[392] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[418] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[444] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[470] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[496] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[522] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[548] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[574] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[600] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[626] = (T)(img)(_p10##x,_n12##y,z,c)), \ + (I[652] = (T)(img)(_p10##x,_n13##y,z,c)), \ + (I[3] = (T)(img)(_p9##x,_p12##y,z,c)), \ + (I[29] = (T)(img)(_p9##x,_p11##y,z,c)), \ + (I[55] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[81] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[107] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[133] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[159] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[185] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[211] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[237] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[263] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[289] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[315] = (T)(img)(_p9##x,y,z,c)), \ + (I[341] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[367] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[393] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[419] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[445] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[471] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[497] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[523] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[549] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[575] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[601] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[627] = (T)(img)(_p9##x,_n12##y,z,c)), \ + (I[653] = (T)(img)(_p9##x,_n13##y,z,c)), \ + (I[4] = (T)(img)(_p8##x,_p12##y,z,c)), \ + (I[30] = (T)(img)(_p8##x,_p11##y,z,c)), \ + (I[56] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[82] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[108] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[134] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[160] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[186] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[212] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[238] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[264] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[290] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[316] = (T)(img)(_p8##x,y,z,c)), \ + (I[342] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[368] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[394] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[420] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[446] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[472] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[498] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[524] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[550] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[576] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[602] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[628] = (T)(img)(_p8##x,_n12##y,z,c)), \ + (I[654] = (T)(img)(_p8##x,_n13##y,z,c)), \ + (I[5] = (T)(img)(_p7##x,_p12##y,z,c)), \ + (I[31] = (T)(img)(_p7##x,_p11##y,z,c)), \ + (I[57] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[83] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[109] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[135] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[161] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[187] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[213] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[239] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[265] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[291] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[317] = (T)(img)(_p7##x,y,z,c)), \ + (I[343] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[369] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[395] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[421] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[447] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[473] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[499] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[525] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[551] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[577] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[603] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[629] = (T)(img)(_p7##x,_n12##y,z,c)), \ + (I[655] = (T)(img)(_p7##x,_n13##y,z,c)), \ + (I[6] = (T)(img)(_p6##x,_p12##y,z,c)), \ + (I[32] = (T)(img)(_p6##x,_p11##y,z,c)), \ + (I[58] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[84] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[110] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[136] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[162] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[188] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[214] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[240] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[266] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[292] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[318] = (T)(img)(_p6##x,y,z,c)), \ + (I[344] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[370] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[396] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[422] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[448] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[474] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[500] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[526] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[552] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[578] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[604] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[630] = (T)(img)(_p6##x,_n12##y,z,c)), \ + (I[656] = (T)(img)(_p6##x,_n13##y,z,c)), \ + (I[7] = (T)(img)(_p5##x,_p12##y,z,c)), \ + (I[33] = (T)(img)(_p5##x,_p11##y,z,c)), \ + (I[59] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[85] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[111] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[137] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[163] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[189] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[215] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[241] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[267] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[293] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[319] = (T)(img)(_p5##x,y,z,c)), \ + (I[345] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[371] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[397] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[423] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[449] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[475] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[501] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[527] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[553] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[579] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[605] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[631] = (T)(img)(_p5##x,_n12##y,z,c)), \ + (I[657] = (T)(img)(_p5##x,_n13##y,z,c)), \ + (I[8] = (T)(img)(_p4##x,_p12##y,z,c)), \ + (I[34] = (T)(img)(_p4##x,_p11##y,z,c)), \ + (I[60] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[86] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[112] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[138] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[164] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[190] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[216] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[242] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[268] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[294] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[320] = (T)(img)(_p4##x,y,z,c)), \ + (I[346] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[372] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[398] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[424] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[450] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[476] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[502] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[528] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[554] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[580] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[606] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[632] = (T)(img)(_p4##x,_n12##y,z,c)), \ + (I[658] = (T)(img)(_p4##x,_n13##y,z,c)), \ + (I[9] = (T)(img)(_p3##x,_p12##y,z,c)), \ + (I[35] = (T)(img)(_p3##x,_p11##y,z,c)), \ + (I[61] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[87] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[113] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[139] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[165] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[191] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[217] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[243] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[269] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[295] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[321] = (T)(img)(_p3##x,y,z,c)), \ + (I[347] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[373] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[399] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[425] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[451] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[477] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[503] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[529] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[555] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[581] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[607] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[633] = (T)(img)(_p3##x,_n12##y,z,c)), \ + (I[659] = (T)(img)(_p3##x,_n13##y,z,c)), \ + (I[10] = (T)(img)(_p2##x,_p12##y,z,c)), \ + (I[36] = (T)(img)(_p2##x,_p11##y,z,c)), \ + (I[62] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[88] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[114] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[140] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[166] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[192] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[218] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[244] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[270] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[296] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[322] = (T)(img)(_p2##x,y,z,c)), \ + (I[348] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[374] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[400] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[426] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[452] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[478] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[504] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[530] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[556] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[582] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[608] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[634] = (T)(img)(_p2##x,_n12##y,z,c)), \ + (I[660] = (T)(img)(_p2##x,_n13##y,z,c)), \ + (I[11] = (T)(img)(_p1##x,_p12##y,z,c)), \ + (I[37] = (T)(img)(_p1##x,_p11##y,z,c)), \ + (I[63] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[89] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[115] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[141] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[167] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[193] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[219] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[245] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[271] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[297] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[323] = (T)(img)(_p1##x,y,z,c)), \ + (I[349] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[375] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[401] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[427] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[453] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[479] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[505] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[531] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[557] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[583] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[609] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[635] = (T)(img)(_p1##x,_n12##y,z,c)), \ + (I[661] = (T)(img)(_p1##x,_n13##y,z,c)), \ + (I[12] = (T)(img)(x,_p12##y,z,c)), \ + (I[38] = (T)(img)(x,_p11##y,z,c)), \ + (I[64] = (T)(img)(x,_p10##y,z,c)), \ + (I[90] = (T)(img)(x,_p9##y,z,c)), \ + (I[116] = (T)(img)(x,_p8##y,z,c)), \ + (I[142] = (T)(img)(x,_p7##y,z,c)), \ + (I[168] = (T)(img)(x,_p6##y,z,c)), \ + (I[194] = (T)(img)(x,_p5##y,z,c)), \ + (I[220] = (T)(img)(x,_p4##y,z,c)), \ + (I[246] = (T)(img)(x,_p3##y,z,c)), \ + (I[272] = (T)(img)(x,_p2##y,z,c)), \ + (I[298] = (T)(img)(x,_p1##y,z,c)), \ + (I[324] = (T)(img)(x,y,z,c)), \ + (I[350] = (T)(img)(x,_n1##y,z,c)), \ + (I[376] = (T)(img)(x,_n2##y,z,c)), \ + (I[402] = (T)(img)(x,_n3##y,z,c)), \ + (I[428] = (T)(img)(x,_n4##y,z,c)), \ + (I[454] = (T)(img)(x,_n5##y,z,c)), \ + (I[480] = (T)(img)(x,_n6##y,z,c)), \ + (I[506] = (T)(img)(x,_n7##y,z,c)), \ + (I[532] = (T)(img)(x,_n8##y,z,c)), \ + (I[558] = (T)(img)(x,_n9##y,z,c)), \ + (I[584] = (T)(img)(x,_n10##y,z,c)), \ + (I[610] = (T)(img)(x,_n11##y,z,c)), \ + (I[636] = (T)(img)(x,_n12##y,z,c)), \ + (I[662] = (T)(img)(x,_n13##y,z,c)), \ + (I[13] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[39] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[65] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[91] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[117] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[143] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[169] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[195] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[221] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[247] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[273] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[299] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[325] = (T)(img)(_n1##x,y,z,c)), \ + (I[351] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[377] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[403] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[429] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[455] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[481] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[507] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[533] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[559] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[585] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[611] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[637] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[663] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[14] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[40] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[66] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[92] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[118] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[144] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[170] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[196] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[222] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[248] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[274] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[300] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[326] = (T)(img)(_n2##x,y,z,c)), \ + (I[352] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[378] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[404] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[430] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[456] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[482] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[508] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[534] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[560] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[586] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[612] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[638] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[664] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[15] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[41] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[67] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[93] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[119] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[145] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[171] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[197] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[223] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[249] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[275] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[301] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[327] = (T)(img)(_n3##x,y,z,c)), \ + (I[353] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[379] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[405] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[431] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[457] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[483] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[509] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[535] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[561] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[587] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[613] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[639] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[665] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[16] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[42] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[68] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[94] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[120] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[146] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[172] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[198] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[224] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[250] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[276] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[302] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[328] = (T)(img)(_n4##x,y,z,c)), \ + (I[354] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[380] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[406] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[432] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[458] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[484] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[510] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[536] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[562] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[588] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[614] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[640] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[666] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[17] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[43] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[69] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[95] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[121] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[147] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[173] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[199] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[225] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[251] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[277] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[303] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[329] = (T)(img)(_n5##x,y,z,c)), \ + (I[355] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[381] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[407] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[433] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[459] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[485] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[511] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[537] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[563] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[589] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[615] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[641] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[667] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[18] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[44] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[70] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[96] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[122] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[148] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[174] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[200] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[226] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[252] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[278] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[304] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[330] = (T)(img)(_n6##x,y,z,c)), \ + (I[356] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[382] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[408] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[434] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[460] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[486] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[512] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[538] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[564] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[590] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[616] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[642] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[668] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[19] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[45] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[71] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[97] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[123] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[149] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[175] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[201] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[227] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[253] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[279] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[305] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[331] = (T)(img)(_n7##x,y,z,c)), \ + (I[357] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[383] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[409] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[435] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[461] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[487] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[513] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[539] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[565] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[591] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[617] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[643] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[669] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[20] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[46] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[72] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[98] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[124] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[150] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[176] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[202] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[228] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[254] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[280] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[306] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[332] = (T)(img)(_n8##x,y,z,c)), \ + (I[358] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[384] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[410] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[436] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[462] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[488] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[514] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[540] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[566] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[592] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[618] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[644] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[670] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[21] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[47] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[73] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[99] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[125] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[151] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[177] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[203] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[229] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[255] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[281] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[307] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[333] = (T)(img)(_n9##x,y,z,c)), \ + (I[359] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[385] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[411] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[437] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[463] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[489] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[515] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[541] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[567] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[593] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[619] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[645] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[671] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[22] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[48] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[74] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[100] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[126] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[152] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[178] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[204] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[230] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[256] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[282] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[308] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[334] = (T)(img)(_n10##x,y,z,c)), \ + (I[360] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[386] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[412] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[438] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[464] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[490] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[516] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[542] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[568] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[594] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[620] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[646] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[672] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[23] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[49] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[75] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[101] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[127] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[153] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[179] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[205] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[231] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[257] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[283] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[309] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[335] = (T)(img)(_n11##x,y,z,c)), \ + (I[361] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[387] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[413] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[439] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[465] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[491] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[517] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[543] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[569] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[595] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[621] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[647] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[673] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[24] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[50] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[76] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[102] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[128] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[154] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[180] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[206] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[232] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[258] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[284] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[310] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[336] = (T)(img)(_n12##x,y,z,c)), \ + (I[362] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[388] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[414] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[440] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[466] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[492] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[518] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[544] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[570] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[596] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[622] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[648] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[674] = (T)(img)(_n12##x,_n13##y,z,c)), \ + x + 13>=(img).width()?(img).width() - 1:x + 13); \ + x<=(int)(x1) && ((_n13##x<(img).width() && ( \ + (I[25] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[51] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[77] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[103] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[129] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[155] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[181] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[207] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[233] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[259] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[285] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[311] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[337] = (T)(img)(_n13##x,y,z,c)), \ + (I[363] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[389] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[415] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[441] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[467] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[493] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[519] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[545] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[571] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[597] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[623] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[649] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[675] = (T)(img)(_n13##x,_n13##y,z,c)),1)) || \ + _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], \ + I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], \ + I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], \ + I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], \ + I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], \ + I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], \ + I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], \ + I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], \ + I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], \ + I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], \ + I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], \ + I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], \ + I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], \ + I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], \ + I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], \ + I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], \ + I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], \ + I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], \ + I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], \ + I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], \ + I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], \ + I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], \ + I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], \ + I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], \ + I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], \ + I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], I[671] = I[672], I[672] = I[673], I[673] = I[674], I[674] = I[675], \ + _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x) + +#define cimg_get26x26(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p12##x,_p12##y,z,c), I[1] = (T)(img)(_p11##x,_p12##y,z,c), I[2] = (T)(img)(_p10##x,_p12##y,z,c), I[3] = (T)(img)(_p9##x,_p12##y,z,c), I[4] = (T)(img)(_p8##x,_p12##y,z,c), I[5] = (T)(img)(_p7##x,_p12##y,z,c), I[6] = (T)(img)(_p6##x,_p12##y,z,c), I[7] = (T)(img)(_p5##x,_p12##y,z,c), I[8] = (T)(img)(_p4##x,_p12##y,z,c), I[9] = (T)(img)(_p3##x,_p12##y,z,c), I[10] = (T)(img)(_p2##x,_p12##y,z,c), I[11] = (T)(img)(_p1##x,_p12##y,z,c), I[12] = (T)(img)(x,_p12##y,z,c), I[13] = (T)(img)(_n1##x,_p12##y,z,c), I[14] = (T)(img)(_n2##x,_p12##y,z,c), I[15] = (T)(img)(_n3##x,_p12##y,z,c), I[16] = (T)(img)(_n4##x,_p12##y,z,c), I[17] = (T)(img)(_n5##x,_p12##y,z,c), I[18] = (T)(img)(_n6##x,_p12##y,z,c), I[19] = (T)(img)(_n7##x,_p12##y,z,c), I[20] = (T)(img)(_n8##x,_p12##y,z,c), I[21] = (T)(img)(_n9##x,_p12##y,z,c), I[22] = (T)(img)(_n10##x,_p12##y,z,c), I[23] = (T)(img)(_n11##x,_p12##y,z,c), I[24] = (T)(img)(_n12##x,_p12##y,z,c), I[25] = (T)(img)(_n13##x,_p12##y,z,c), \ + I[26] = (T)(img)(_p12##x,_p11##y,z,c), I[27] = (T)(img)(_p11##x,_p11##y,z,c), I[28] = (T)(img)(_p10##x,_p11##y,z,c), I[29] = (T)(img)(_p9##x,_p11##y,z,c), I[30] = (T)(img)(_p8##x,_p11##y,z,c), I[31] = (T)(img)(_p7##x,_p11##y,z,c), I[32] = (T)(img)(_p6##x,_p11##y,z,c), I[33] = (T)(img)(_p5##x,_p11##y,z,c), I[34] = (T)(img)(_p4##x,_p11##y,z,c), I[35] = (T)(img)(_p3##x,_p11##y,z,c), I[36] = (T)(img)(_p2##x,_p11##y,z,c), I[37] = (T)(img)(_p1##x,_p11##y,z,c), I[38] = (T)(img)(x,_p11##y,z,c), I[39] = (T)(img)(_n1##x,_p11##y,z,c), I[40] = (T)(img)(_n2##x,_p11##y,z,c), I[41] = (T)(img)(_n3##x,_p11##y,z,c), I[42] = (T)(img)(_n4##x,_p11##y,z,c), I[43] = (T)(img)(_n5##x,_p11##y,z,c), I[44] = (T)(img)(_n6##x,_p11##y,z,c), I[45] = (T)(img)(_n7##x,_p11##y,z,c), I[46] = (T)(img)(_n8##x,_p11##y,z,c), I[47] = (T)(img)(_n9##x,_p11##y,z,c), I[48] = (T)(img)(_n10##x,_p11##y,z,c), I[49] = (T)(img)(_n11##x,_p11##y,z,c), I[50] = (T)(img)(_n12##x,_p11##y,z,c), I[51] = (T)(img)(_n13##x,_p11##y,z,c), \ + I[52] = (T)(img)(_p12##x,_p10##y,z,c), I[53] = (T)(img)(_p11##x,_p10##y,z,c), I[54] = (T)(img)(_p10##x,_p10##y,z,c), I[55] = (T)(img)(_p9##x,_p10##y,z,c), I[56] = (T)(img)(_p8##x,_p10##y,z,c), I[57] = (T)(img)(_p7##x,_p10##y,z,c), I[58] = (T)(img)(_p6##x,_p10##y,z,c), I[59] = (T)(img)(_p5##x,_p10##y,z,c), I[60] = (T)(img)(_p4##x,_p10##y,z,c), I[61] = (T)(img)(_p3##x,_p10##y,z,c), I[62] = (T)(img)(_p2##x,_p10##y,z,c), I[63] = (T)(img)(_p1##x,_p10##y,z,c), I[64] = (T)(img)(x,_p10##y,z,c), I[65] = (T)(img)(_n1##x,_p10##y,z,c), I[66] = (T)(img)(_n2##x,_p10##y,z,c), I[67] = (T)(img)(_n3##x,_p10##y,z,c), I[68] = (T)(img)(_n4##x,_p10##y,z,c), I[69] = (T)(img)(_n5##x,_p10##y,z,c), I[70] = (T)(img)(_n6##x,_p10##y,z,c), I[71] = (T)(img)(_n7##x,_p10##y,z,c), I[72] = (T)(img)(_n8##x,_p10##y,z,c), I[73] = (T)(img)(_n9##x,_p10##y,z,c), I[74] = (T)(img)(_n10##x,_p10##y,z,c), I[75] = (T)(img)(_n11##x,_p10##y,z,c), I[76] = (T)(img)(_n12##x,_p10##y,z,c), I[77] = (T)(img)(_n13##x,_p10##y,z,c), \ + I[78] = (T)(img)(_p12##x,_p9##y,z,c), I[79] = (T)(img)(_p11##x,_p9##y,z,c), I[80] = (T)(img)(_p10##x,_p9##y,z,c), I[81] = (T)(img)(_p9##x,_p9##y,z,c), I[82] = (T)(img)(_p8##x,_p9##y,z,c), I[83] = (T)(img)(_p7##x,_p9##y,z,c), I[84] = (T)(img)(_p6##x,_p9##y,z,c), I[85] = (T)(img)(_p5##x,_p9##y,z,c), I[86] = (T)(img)(_p4##x,_p9##y,z,c), I[87] = (T)(img)(_p3##x,_p9##y,z,c), I[88] = (T)(img)(_p2##x,_p9##y,z,c), I[89] = (T)(img)(_p1##x,_p9##y,z,c), I[90] = (T)(img)(x,_p9##y,z,c), I[91] = (T)(img)(_n1##x,_p9##y,z,c), I[92] = (T)(img)(_n2##x,_p9##y,z,c), I[93] = (T)(img)(_n3##x,_p9##y,z,c), I[94] = (T)(img)(_n4##x,_p9##y,z,c), I[95] = (T)(img)(_n5##x,_p9##y,z,c), I[96] = (T)(img)(_n6##x,_p9##y,z,c), I[97] = (T)(img)(_n7##x,_p9##y,z,c), I[98] = (T)(img)(_n8##x,_p9##y,z,c), I[99] = (T)(img)(_n9##x,_p9##y,z,c), I[100] = (T)(img)(_n10##x,_p9##y,z,c), I[101] = (T)(img)(_n11##x,_p9##y,z,c), I[102] = (T)(img)(_n12##x,_p9##y,z,c), I[103] = (T)(img)(_n13##x,_p9##y,z,c), \ + I[104] = (T)(img)(_p12##x,_p8##y,z,c), I[105] = (T)(img)(_p11##x,_p8##y,z,c), I[106] = (T)(img)(_p10##x,_p8##y,z,c), I[107] = (T)(img)(_p9##x,_p8##y,z,c), I[108] = (T)(img)(_p8##x,_p8##y,z,c), I[109] = (T)(img)(_p7##x,_p8##y,z,c), I[110] = (T)(img)(_p6##x,_p8##y,z,c), I[111] = (T)(img)(_p5##x,_p8##y,z,c), I[112] = (T)(img)(_p4##x,_p8##y,z,c), I[113] = (T)(img)(_p3##x,_p8##y,z,c), I[114] = (T)(img)(_p2##x,_p8##y,z,c), I[115] = (T)(img)(_p1##x,_p8##y,z,c), I[116] = (T)(img)(x,_p8##y,z,c), I[117] = (T)(img)(_n1##x,_p8##y,z,c), I[118] = (T)(img)(_n2##x,_p8##y,z,c), I[119] = (T)(img)(_n3##x,_p8##y,z,c), I[120] = (T)(img)(_n4##x,_p8##y,z,c), I[121] = (T)(img)(_n5##x,_p8##y,z,c), I[122] = (T)(img)(_n6##x,_p8##y,z,c), I[123] = (T)(img)(_n7##x,_p8##y,z,c), I[124] = (T)(img)(_n8##x,_p8##y,z,c), I[125] = (T)(img)(_n9##x,_p8##y,z,c), I[126] = (T)(img)(_n10##x,_p8##y,z,c), I[127] = (T)(img)(_n11##x,_p8##y,z,c), I[128] = (T)(img)(_n12##x,_p8##y,z,c), I[129] = (T)(img)(_n13##x,_p8##y,z,c), \ + I[130] = (T)(img)(_p12##x,_p7##y,z,c), I[131] = (T)(img)(_p11##x,_p7##y,z,c), I[132] = (T)(img)(_p10##x,_p7##y,z,c), I[133] = (T)(img)(_p9##x,_p7##y,z,c), I[134] = (T)(img)(_p8##x,_p7##y,z,c), I[135] = (T)(img)(_p7##x,_p7##y,z,c), I[136] = (T)(img)(_p6##x,_p7##y,z,c), I[137] = (T)(img)(_p5##x,_p7##y,z,c), I[138] = (T)(img)(_p4##x,_p7##y,z,c), I[139] = (T)(img)(_p3##x,_p7##y,z,c), I[140] = (T)(img)(_p2##x,_p7##y,z,c), I[141] = (T)(img)(_p1##x,_p7##y,z,c), I[142] = (T)(img)(x,_p7##y,z,c), I[143] = (T)(img)(_n1##x,_p7##y,z,c), I[144] = (T)(img)(_n2##x,_p7##y,z,c), I[145] = (T)(img)(_n3##x,_p7##y,z,c), I[146] = (T)(img)(_n4##x,_p7##y,z,c), I[147] = (T)(img)(_n5##x,_p7##y,z,c), I[148] = (T)(img)(_n6##x,_p7##y,z,c), I[149] = (T)(img)(_n7##x,_p7##y,z,c), I[150] = (T)(img)(_n8##x,_p7##y,z,c), I[151] = (T)(img)(_n9##x,_p7##y,z,c), I[152] = (T)(img)(_n10##x,_p7##y,z,c), I[153] = (T)(img)(_n11##x,_p7##y,z,c), I[154] = (T)(img)(_n12##x,_p7##y,z,c), I[155] = (T)(img)(_n13##x,_p7##y,z,c), \ + I[156] = (T)(img)(_p12##x,_p6##y,z,c), I[157] = (T)(img)(_p11##x,_p6##y,z,c), I[158] = (T)(img)(_p10##x,_p6##y,z,c), I[159] = (T)(img)(_p9##x,_p6##y,z,c), I[160] = (T)(img)(_p8##x,_p6##y,z,c), I[161] = (T)(img)(_p7##x,_p6##y,z,c), I[162] = (T)(img)(_p6##x,_p6##y,z,c), I[163] = (T)(img)(_p5##x,_p6##y,z,c), I[164] = (T)(img)(_p4##x,_p6##y,z,c), I[165] = (T)(img)(_p3##x,_p6##y,z,c), I[166] = (T)(img)(_p2##x,_p6##y,z,c), I[167] = (T)(img)(_p1##x,_p6##y,z,c), I[168] = (T)(img)(x,_p6##y,z,c), I[169] = (T)(img)(_n1##x,_p6##y,z,c), I[170] = (T)(img)(_n2##x,_p6##y,z,c), I[171] = (T)(img)(_n3##x,_p6##y,z,c), I[172] = (T)(img)(_n4##x,_p6##y,z,c), I[173] = (T)(img)(_n5##x,_p6##y,z,c), I[174] = (T)(img)(_n6##x,_p6##y,z,c), I[175] = (T)(img)(_n7##x,_p6##y,z,c), I[176] = (T)(img)(_n8##x,_p6##y,z,c), I[177] = (T)(img)(_n9##x,_p6##y,z,c), I[178] = (T)(img)(_n10##x,_p6##y,z,c), I[179] = (T)(img)(_n11##x,_p6##y,z,c), I[180] = (T)(img)(_n12##x,_p6##y,z,c), I[181] = (T)(img)(_n13##x,_p6##y,z,c), \ + I[182] = (T)(img)(_p12##x,_p5##y,z,c), I[183] = (T)(img)(_p11##x,_p5##y,z,c), I[184] = (T)(img)(_p10##x,_p5##y,z,c), I[185] = (T)(img)(_p9##x,_p5##y,z,c), I[186] = (T)(img)(_p8##x,_p5##y,z,c), I[187] = (T)(img)(_p7##x,_p5##y,z,c), I[188] = (T)(img)(_p6##x,_p5##y,z,c), I[189] = (T)(img)(_p5##x,_p5##y,z,c), I[190] = (T)(img)(_p4##x,_p5##y,z,c), I[191] = (T)(img)(_p3##x,_p5##y,z,c), I[192] = (T)(img)(_p2##x,_p5##y,z,c), I[193] = (T)(img)(_p1##x,_p5##y,z,c), I[194] = (T)(img)(x,_p5##y,z,c), I[195] = (T)(img)(_n1##x,_p5##y,z,c), I[196] = (T)(img)(_n2##x,_p5##y,z,c), I[197] = (T)(img)(_n3##x,_p5##y,z,c), I[198] = (T)(img)(_n4##x,_p5##y,z,c), I[199] = (T)(img)(_n5##x,_p5##y,z,c), I[200] = (T)(img)(_n6##x,_p5##y,z,c), I[201] = (T)(img)(_n7##x,_p5##y,z,c), I[202] = (T)(img)(_n8##x,_p5##y,z,c), I[203] = (T)(img)(_n9##x,_p5##y,z,c), I[204] = (T)(img)(_n10##x,_p5##y,z,c), I[205] = (T)(img)(_n11##x,_p5##y,z,c), I[206] = (T)(img)(_n12##x,_p5##y,z,c), I[207] = (T)(img)(_n13##x,_p5##y,z,c), \ + I[208] = (T)(img)(_p12##x,_p4##y,z,c), I[209] = (T)(img)(_p11##x,_p4##y,z,c), I[210] = (T)(img)(_p10##x,_p4##y,z,c), I[211] = (T)(img)(_p9##x,_p4##y,z,c), I[212] = (T)(img)(_p8##x,_p4##y,z,c), I[213] = (T)(img)(_p7##x,_p4##y,z,c), I[214] = (T)(img)(_p6##x,_p4##y,z,c), I[215] = (T)(img)(_p5##x,_p4##y,z,c), I[216] = (T)(img)(_p4##x,_p4##y,z,c), I[217] = (T)(img)(_p3##x,_p4##y,z,c), I[218] = (T)(img)(_p2##x,_p4##y,z,c), I[219] = (T)(img)(_p1##x,_p4##y,z,c), I[220] = (T)(img)(x,_p4##y,z,c), I[221] = (T)(img)(_n1##x,_p4##y,z,c), I[222] = (T)(img)(_n2##x,_p4##y,z,c), I[223] = (T)(img)(_n3##x,_p4##y,z,c), I[224] = (T)(img)(_n4##x,_p4##y,z,c), I[225] = (T)(img)(_n5##x,_p4##y,z,c), I[226] = (T)(img)(_n6##x,_p4##y,z,c), I[227] = (T)(img)(_n7##x,_p4##y,z,c), I[228] = (T)(img)(_n8##x,_p4##y,z,c), I[229] = (T)(img)(_n9##x,_p4##y,z,c), I[230] = (T)(img)(_n10##x,_p4##y,z,c), I[231] = (T)(img)(_n11##x,_p4##y,z,c), I[232] = (T)(img)(_n12##x,_p4##y,z,c), I[233] = (T)(img)(_n13##x,_p4##y,z,c), \ + I[234] = (T)(img)(_p12##x,_p3##y,z,c), I[235] = (T)(img)(_p11##x,_p3##y,z,c), I[236] = (T)(img)(_p10##x,_p3##y,z,c), I[237] = (T)(img)(_p9##x,_p3##y,z,c), I[238] = (T)(img)(_p8##x,_p3##y,z,c), I[239] = (T)(img)(_p7##x,_p3##y,z,c), I[240] = (T)(img)(_p6##x,_p3##y,z,c), I[241] = (T)(img)(_p5##x,_p3##y,z,c), I[242] = (T)(img)(_p4##x,_p3##y,z,c), I[243] = (T)(img)(_p3##x,_p3##y,z,c), I[244] = (T)(img)(_p2##x,_p3##y,z,c), I[245] = (T)(img)(_p1##x,_p3##y,z,c), I[246] = (T)(img)(x,_p3##y,z,c), I[247] = (T)(img)(_n1##x,_p3##y,z,c), I[248] = (T)(img)(_n2##x,_p3##y,z,c), I[249] = (T)(img)(_n3##x,_p3##y,z,c), I[250] = (T)(img)(_n4##x,_p3##y,z,c), I[251] = (T)(img)(_n5##x,_p3##y,z,c), I[252] = (T)(img)(_n6##x,_p3##y,z,c), I[253] = (T)(img)(_n7##x,_p3##y,z,c), I[254] = (T)(img)(_n8##x,_p3##y,z,c), I[255] = (T)(img)(_n9##x,_p3##y,z,c), I[256] = (T)(img)(_n10##x,_p3##y,z,c), I[257] = (T)(img)(_n11##x,_p3##y,z,c), I[258] = (T)(img)(_n12##x,_p3##y,z,c), I[259] = (T)(img)(_n13##x,_p3##y,z,c), \ + I[260] = (T)(img)(_p12##x,_p2##y,z,c), I[261] = (T)(img)(_p11##x,_p2##y,z,c), I[262] = (T)(img)(_p10##x,_p2##y,z,c), I[263] = (T)(img)(_p9##x,_p2##y,z,c), I[264] = (T)(img)(_p8##x,_p2##y,z,c), I[265] = (T)(img)(_p7##x,_p2##y,z,c), I[266] = (T)(img)(_p6##x,_p2##y,z,c), I[267] = (T)(img)(_p5##x,_p2##y,z,c), I[268] = (T)(img)(_p4##x,_p2##y,z,c), I[269] = (T)(img)(_p3##x,_p2##y,z,c), I[270] = (T)(img)(_p2##x,_p2##y,z,c), I[271] = (T)(img)(_p1##x,_p2##y,z,c), I[272] = (T)(img)(x,_p2##y,z,c), I[273] = (T)(img)(_n1##x,_p2##y,z,c), I[274] = (T)(img)(_n2##x,_p2##y,z,c), I[275] = (T)(img)(_n3##x,_p2##y,z,c), I[276] = (T)(img)(_n4##x,_p2##y,z,c), I[277] = (T)(img)(_n5##x,_p2##y,z,c), I[278] = (T)(img)(_n6##x,_p2##y,z,c), I[279] = (T)(img)(_n7##x,_p2##y,z,c), I[280] = (T)(img)(_n8##x,_p2##y,z,c), I[281] = (T)(img)(_n9##x,_p2##y,z,c), I[282] = (T)(img)(_n10##x,_p2##y,z,c), I[283] = (T)(img)(_n11##x,_p2##y,z,c), I[284] = (T)(img)(_n12##x,_p2##y,z,c), I[285] = (T)(img)(_n13##x,_p2##y,z,c), \ + I[286] = (T)(img)(_p12##x,_p1##y,z,c), I[287] = (T)(img)(_p11##x,_p1##y,z,c), I[288] = (T)(img)(_p10##x,_p1##y,z,c), I[289] = (T)(img)(_p9##x,_p1##y,z,c), I[290] = (T)(img)(_p8##x,_p1##y,z,c), I[291] = (T)(img)(_p7##x,_p1##y,z,c), I[292] = (T)(img)(_p6##x,_p1##y,z,c), I[293] = (T)(img)(_p5##x,_p1##y,z,c), I[294] = (T)(img)(_p4##x,_p1##y,z,c), I[295] = (T)(img)(_p3##x,_p1##y,z,c), I[296] = (T)(img)(_p2##x,_p1##y,z,c), I[297] = (T)(img)(_p1##x,_p1##y,z,c), I[298] = (T)(img)(x,_p1##y,z,c), I[299] = (T)(img)(_n1##x,_p1##y,z,c), I[300] = (T)(img)(_n2##x,_p1##y,z,c), I[301] = (T)(img)(_n3##x,_p1##y,z,c), I[302] = (T)(img)(_n4##x,_p1##y,z,c), I[303] = (T)(img)(_n5##x,_p1##y,z,c), I[304] = (T)(img)(_n6##x,_p1##y,z,c), I[305] = (T)(img)(_n7##x,_p1##y,z,c), I[306] = (T)(img)(_n8##x,_p1##y,z,c), I[307] = (T)(img)(_n9##x,_p1##y,z,c), I[308] = (T)(img)(_n10##x,_p1##y,z,c), I[309] = (T)(img)(_n11##x,_p1##y,z,c), I[310] = (T)(img)(_n12##x,_p1##y,z,c), I[311] = (T)(img)(_n13##x,_p1##y,z,c), \ + I[312] = (T)(img)(_p12##x,y,z,c), I[313] = (T)(img)(_p11##x,y,z,c), I[314] = (T)(img)(_p10##x,y,z,c), I[315] = (T)(img)(_p9##x,y,z,c), I[316] = (T)(img)(_p8##x,y,z,c), I[317] = (T)(img)(_p7##x,y,z,c), I[318] = (T)(img)(_p6##x,y,z,c), I[319] = (T)(img)(_p5##x,y,z,c), I[320] = (T)(img)(_p4##x,y,z,c), I[321] = (T)(img)(_p3##x,y,z,c), I[322] = (T)(img)(_p2##x,y,z,c), I[323] = (T)(img)(_p1##x,y,z,c), I[324] = (T)(img)(x,y,z,c), I[325] = (T)(img)(_n1##x,y,z,c), I[326] = (T)(img)(_n2##x,y,z,c), I[327] = (T)(img)(_n3##x,y,z,c), I[328] = (T)(img)(_n4##x,y,z,c), I[329] = (T)(img)(_n5##x,y,z,c), I[330] = (T)(img)(_n6##x,y,z,c), I[331] = (T)(img)(_n7##x,y,z,c), I[332] = (T)(img)(_n8##x,y,z,c), I[333] = (T)(img)(_n9##x,y,z,c), I[334] = (T)(img)(_n10##x,y,z,c), I[335] = (T)(img)(_n11##x,y,z,c), I[336] = (T)(img)(_n12##x,y,z,c), I[337] = (T)(img)(_n13##x,y,z,c), \ + I[338] = (T)(img)(_p12##x,_n1##y,z,c), I[339] = (T)(img)(_p11##x,_n1##y,z,c), I[340] = (T)(img)(_p10##x,_n1##y,z,c), I[341] = (T)(img)(_p9##x,_n1##y,z,c), I[342] = (T)(img)(_p8##x,_n1##y,z,c), I[343] = (T)(img)(_p7##x,_n1##y,z,c), I[344] = (T)(img)(_p6##x,_n1##y,z,c), I[345] = (T)(img)(_p5##x,_n1##y,z,c), I[346] = (T)(img)(_p4##x,_n1##y,z,c), I[347] = (T)(img)(_p3##x,_n1##y,z,c), I[348] = (T)(img)(_p2##x,_n1##y,z,c), I[349] = (T)(img)(_p1##x,_n1##y,z,c), I[350] = (T)(img)(x,_n1##y,z,c), I[351] = (T)(img)(_n1##x,_n1##y,z,c), I[352] = (T)(img)(_n2##x,_n1##y,z,c), I[353] = (T)(img)(_n3##x,_n1##y,z,c), I[354] = (T)(img)(_n4##x,_n1##y,z,c), I[355] = (T)(img)(_n5##x,_n1##y,z,c), I[356] = (T)(img)(_n6##x,_n1##y,z,c), I[357] = (T)(img)(_n7##x,_n1##y,z,c), I[358] = (T)(img)(_n8##x,_n1##y,z,c), I[359] = (T)(img)(_n9##x,_n1##y,z,c), I[360] = (T)(img)(_n10##x,_n1##y,z,c), I[361] = (T)(img)(_n11##x,_n1##y,z,c), I[362] = (T)(img)(_n12##x,_n1##y,z,c), I[363] = (T)(img)(_n13##x,_n1##y,z,c), \ + I[364] = (T)(img)(_p12##x,_n2##y,z,c), I[365] = (T)(img)(_p11##x,_n2##y,z,c), I[366] = (T)(img)(_p10##x,_n2##y,z,c), I[367] = (T)(img)(_p9##x,_n2##y,z,c), I[368] = (T)(img)(_p8##x,_n2##y,z,c), I[369] = (T)(img)(_p7##x,_n2##y,z,c), I[370] = (T)(img)(_p6##x,_n2##y,z,c), I[371] = (T)(img)(_p5##x,_n2##y,z,c), I[372] = (T)(img)(_p4##x,_n2##y,z,c), I[373] = (T)(img)(_p3##x,_n2##y,z,c), I[374] = (T)(img)(_p2##x,_n2##y,z,c), I[375] = (T)(img)(_p1##x,_n2##y,z,c), I[376] = (T)(img)(x,_n2##y,z,c), I[377] = (T)(img)(_n1##x,_n2##y,z,c), I[378] = (T)(img)(_n2##x,_n2##y,z,c), I[379] = (T)(img)(_n3##x,_n2##y,z,c), I[380] = (T)(img)(_n4##x,_n2##y,z,c), I[381] = (T)(img)(_n5##x,_n2##y,z,c), I[382] = (T)(img)(_n6##x,_n2##y,z,c), I[383] = (T)(img)(_n7##x,_n2##y,z,c), I[384] = (T)(img)(_n8##x,_n2##y,z,c), I[385] = (T)(img)(_n9##x,_n2##y,z,c), I[386] = (T)(img)(_n10##x,_n2##y,z,c), I[387] = (T)(img)(_n11##x,_n2##y,z,c), I[388] = (T)(img)(_n12##x,_n2##y,z,c), I[389] = (T)(img)(_n13##x,_n2##y,z,c), \ + I[390] = (T)(img)(_p12##x,_n3##y,z,c), I[391] = (T)(img)(_p11##x,_n3##y,z,c), I[392] = (T)(img)(_p10##x,_n3##y,z,c), I[393] = (T)(img)(_p9##x,_n3##y,z,c), I[394] = (T)(img)(_p8##x,_n3##y,z,c), I[395] = (T)(img)(_p7##x,_n3##y,z,c), I[396] = (T)(img)(_p6##x,_n3##y,z,c), I[397] = (T)(img)(_p5##x,_n3##y,z,c), I[398] = (T)(img)(_p4##x,_n3##y,z,c), I[399] = (T)(img)(_p3##x,_n3##y,z,c), I[400] = (T)(img)(_p2##x,_n3##y,z,c), I[401] = (T)(img)(_p1##x,_n3##y,z,c), I[402] = (T)(img)(x,_n3##y,z,c), I[403] = (T)(img)(_n1##x,_n3##y,z,c), I[404] = (T)(img)(_n2##x,_n3##y,z,c), I[405] = (T)(img)(_n3##x,_n3##y,z,c), I[406] = (T)(img)(_n4##x,_n3##y,z,c), I[407] = (T)(img)(_n5##x,_n3##y,z,c), I[408] = (T)(img)(_n6##x,_n3##y,z,c), I[409] = (T)(img)(_n7##x,_n3##y,z,c), I[410] = (T)(img)(_n8##x,_n3##y,z,c), I[411] = (T)(img)(_n9##x,_n3##y,z,c), I[412] = (T)(img)(_n10##x,_n3##y,z,c), I[413] = (T)(img)(_n11##x,_n3##y,z,c), I[414] = (T)(img)(_n12##x,_n3##y,z,c), I[415] = (T)(img)(_n13##x,_n3##y,z,c), \ + I[416] = (T)(img)(_p12##x,_n4##y,z,c), I[417] = (T)(img)(_p11##x,_n4##y,z,c), I[418] = (T)(img)(_p10##x,_n4##y,z,c), I[419] = (T)(img)(_p9##x,_n4##y,z,c), I[420] = (T)(img)(_p8##x,_n4##y,z,c), I[421] = (T)(img)(_p7##x,_n4##y,z,c), I[422] = (T)(img)(_p6##x,_n4##y,z,c), I[423] = (T)(img)(_p5##x,_n4##y,z,c), I[424] = (T)(img)(_p4##x,_n4##y,z,c), I[425] = (T)(img)(_p3##x,_n4##y,z,c), I[426] = (T)(img)(_p2##x,_n4##y,z,c), I[427] = (T)(img)(_p1##x,_n4##y,z,c), I[428] = (T)(img)(x,_n4##y,z,c), I[429] = (T)(img)(_n1##x,_n4##y,z,c), I[430] = (T)(img)(_n2##x,_n4##y,z,c), I[431] = (T)(img)(_n3##x,_n4##y,z,c), I[432] = (T)(img)(_n4##x,_n4##y,z,c), I[433] = (T)(img)(_n5##x,_n4##y,z,c), I[434] = (T)(img)(_n6##x,_n4##y,z,c), I[435] = (T)(img)(_n7##x,_n4##y,z,c), I[436] = (T)(img)(_n8##x,_n4##y,z,c), I[437] = (T)(img)(_n9##x,_n4##y,z,c), I[438] = (T)(img)(_n10##x,_n4##y,z,c), I[439] = (T)(img)(_n11##x,_n4##y,z,c), I[440] = (T)(img)(_n12##x,_n4##y,z,c), I[441] = (T)(img)(_n13##x,_n4##y,z,c), \ + I[442] = (T)(img)(_p12##x,_n5##y,z,c), I[443] = (T)(img)(_p11##x,_n5##y,z,c), I[444] = (T)(img)(_p10##x,_n5##y,z,c), I[445] = (T)(img)(_p9##x,_n5##y,z,c), I[446] = (T)(img)(_p8##x,_n5##y,z,c), I[447] = (T)(img)(_p7##x,_n5##y,z,c), I[448] = (T)(img)(_p6##x,_n5##y,z,c), I[449] = (T)(img)(_p5##x,_n5##y,z,c), I[450] = (T)(img)(_p4##x,_n5##y,z,c), I[451] = (T)(img)(_p3##x,_n5##y,z,c), I[452] = (T)(img)(_p2##x,_n5##y,z,c), I[453] = (T)(img)(_p1##x,_n5##y,z,c), I[454] = (T)(img)(x,_n5##y,z,c), I[455] = (T)(img)(_n1##x,_n5##y,z,c), I[456] = (T)(img)(_n2##x,_n5##y,z,c), I[457] = (T)(img)(_n3##x,_n5##y,z,c), I[458] = (T)(img)(_n4##x,_n5##y,z,c), I[459] = (T)(img)(_n5##x,_n5##y,z,c), I[460] = (T)(img)(_n6##x,_n5##y,z,c), I[461] = (T)(img)(_n7##x,_n5##y,z,c), I[462] = (T)(img)(_n8##x,_n5##y,z,c), I[463] = (T)(img)(_n9##x,_n5##y,z,c), I[464] = (T)(img)(_n10##x,_n5##y,z,c), I[465] = (T)(img)(_n11##x,_n5##y,z,c), I[466] = (T)(img)(_n12##x,_n5##y,z,c), I[467] = (T)(img)(_n13##x,_n5##y,z,c), \ + I[468] = (T)(img)(_p12##x,_n6##y,z,c), I[469] = (T)(img)(_p11##x,_n6##y,z,c), I[470] = (T)(img)(_p10##x,_n6##y,z,c), I[471] = (T)(img)(_p9##x,_n6##y,z,c), I[472] = (T)(img)(_p8##x,_n6##y,z,c), I[473] = (T)(img)(_p7##x,_n6##y,z,c), I[474] = (T)(img)(_p6##x,_n6##y,z,c), I[475] = (T)(img)(_p5##x,_n6##y,z,c), I[476] = (T)(img)(_p4##x,_n6##y,z,c), I[477] = (T)(img)(_p3##x,_n6##y,z,c), I[478] = (T)(img)(_p2##x,_n6##y,z,c), I[479] = (T)(img)(_p1##x,_n6##y,z,c), I[480] = (T)(img)(x,_n6##y,z,c), I[481] = (T)(img)(_n1##x,_n6##y,z,c), I[482] = (T)(img)(_n2##x,_n6##y,z,c), I[483] = (T)(img)(_n3##x,_n6##y,z,c), I[484] = (T)(img)(_n4##x,_n6##y,z,c), I[485] = (T)(img)(_n5##x,_n6##y,z,c), I[486] = (T)(img)(_n6##x,_n6##y,z,c), I[487] = (T)(img)(_n7##x,_n6##y,z,c), I[488] = (T)(img)(_n8##x,_n6##y,z,c), I[489] = (T)(img)(_n9##x,_n6##y,z,c), I[490] = (T)(img)(_n10##x,_n6##y,z,c), I[491] = (T)(img)(_n11##x,_n6##y,z,c), I[492] = (T)(img)(_n12##x,_n6##y,z,c), I[493] = (T)(img)(_n13##x,_n6##y,z,c), \ + I[494] = (T)(img)(_p12##x,_n7##y,z,c), I[495] = (T)(img)(_p11##x,_n7##y,z,c), I[496] = (T)(img)(_p10##x,_n7##y,z,c), I[497] = (T)(img)(_p9##x,_n7##y,z,c), I[498] = (T)(img)(_p8##x,_n7##y,z,c), I[499] = (T)(img)(_p7##x,_n7##y,z,c), I[500] = (T)(img)(_p6##x,_n7##y,z,c), I[501] = (T)(img)(_p5##x,_n7##y,z,c), I[502] = (T)(img)(_p4##x,_n7##y,z,c), I[503] = (T)(img)(_p3##x,_n7##y,z,c), I[504] = (T)(img)(_p2##x,_n7##y,z,c), I[505] = (T)(img)(_p1##x,_n7##y,z,c), I[506] = (T)(img)(x,_n7##y,z,c), I[507] = (T)(img)(_n1##x,_n7##y,z,c), I[508] = (T)(img)(_n2##x,_n7##y,z,c), I[509] = (T)(img)(_n3##x,_n7##y,z,c), I[510] = (T)(img)(_n4##x,_n7##y,z,c), I[511] = (T)(img)(_n5##x,_n7##y,z,c), I[512] = (T)(img)(_n6##x,_n7##y,z,c), I[513] = (T)(img)(_n7##x,_n7##y,z,c), I[514] = (T)(img)(_n8##x,_n7##y,z,c), I[515] = (T)(img)(_n9##x,_n7##y,z,c), I[516] = (T)(img)(_n10##x,_n7##y,z,c), I[517] = (T)(img)(_n11##x,_n7##y,z,c), I[518] = (T)(img)(_n12##x,_n7##y,z,c), I[519] = (T)(img)(_n13##x,_n7##y,z,c), \ + I[520] = (T)(img)(_p12##x,_n8##y,z,c), I[521] = (T)(img)(_p11##x,_n8##y,z,c), I[522] = (T)(img)(_p10##x,_n8##y,z,c), I[523] = (T)(img)(_p9##x,_n8##y,z,c), I[524] = (T)(img)(_p8##x,_n8##y,z,c), I[525] = (T)(img)(_p7##x,_n8##y,z,c), I[526] = (T)(img)(_p6##x,_n8##y,z,c), I[527] = (T)(img)(_p5##x,_n8##y,z,c), I[528] = (T)(img)(_p4##x,_n8##y,z,c), I[529] = (T)(img)(_p3##x,_n8##y,z,c), I[530] = (T)(img)(_p2##x,_n8##y,z,c), I[531] = (T)(img)(_p1##x,_n8##y,z,c), I[532] = (T)(img)(x,_n8##y,z,c), I[533] = (T)(img)(_n1##x,_n8##y,z,c), I[534] = (T)(img)(_n2##x,_n8##y,z,c), I[535] = (T)(img)(_n3##x,_n8##y,z,c), I[536] = (T)(img)(_n4##x,_n8##y,z,c), I[537] = (T)(img)(_n5##x,_n8##y,z,c), I[538] = (T)(img)(_n6##x,_n8##y,z,c), I[539] = (T)(img)(_n7##x,_n8##y,z,c), I[540] = (T)(img)(_n8##x,_n8##y,z,c), I[541] = (T)(img)(_n9##x,_n8##y,z,c), I[542] = (T)(img)(_n10##x,_n8##y,z,c), I[543] = (T)(img)(_n11##x,_n8##y,z,c), I[544] = (T)(img)(_n12##x,_n8##y,z,c), I[545] = (T)(img)(_n13##x,_n8##y,z,c), \ + I[546] = (T)(img)(_p12##x,_n9##y,z,c), I[547] = (T)(img)(_p11##x,_n9##y,z,c), I[548] = (T)(img)(_p10##x,_n9##y,z,c), I[549] = (T)(img)(_p9##x,_n9##y,z,c), I[550] = (T)(img)(_p8##x,_n9##y,z,c), I[551] = (T)(img)(_p7##x,_n9##y,z,c), I[552] = (T)(img)(_p6##x,_n9##y,z,c), I[553] = (T)(img)(_p5##x,_n9##y,z,c), I[554] = (T)(img)(_p4##x,_n9##y,z,c), I[555] = (T)(img)(_p3##x,_n9##y,z,c), I[556] = (T)(img)(_p2##x,_n9##y,z,c), I[557] = (T)(img)(_p1##x,_n9##y,z,c), I[558] = (T)(img)(x,_n9##y,z,c), I[559] = (T)(img)(_n1##x,_n9##y,z,c), I[560] = (T)(img)(_n2##x,_n9##y,z,c), I[561] = (T)(img)(_n3##x,_n9##y,z,c), I[562] = (T)(img)(_n4##x,_n9##y,z,c), I[563] = (T)(img)(_n5##x,_n9##y,z,c), I[564] = (T)(img)(_n6##x,_n9##y,z,c), I[565] = (T)(img)(_n7##x,_n9##y,z,c), I[566] = (T)(img)(_n8##x,_n9##y,z,c), I[567] = (T)(img)(_n9##x,_n9##y,z,c), I[568] = (T)(img)(_n10##x,_n9##y,z,c), I[569] = (T)(img)(_n11##x,_n9##y,z,c), I[570] = (T)(img)(_n12##x,_n9##y,z,c), I[571] = (T)(img)(_n13##x,_n9##y,z,c), \ + I[572] = (T)(img)(_p12##x,_n10##y,z,c), I[573] = (T)(img)(_p11##x,_n10##y,z,c), I[574] = (T)(img)(_p10##x,_n10##y,z,c), I[575] = (T)(img)(_p9##x,_n10##y,z,c), I[576] = (T)(img)(_p8##x,_n10##y,z,c), I[577] = (T)(img)(_p7##x,_n10##y,z,c), I[578] = (T)(img)(_p6##x,_n10##y,z,c), I[579] = (T)(img)(_p5##x,_n10##y,z,c), I[580] = (T)(img)(_p4##x,_n10##y,z,c), I[581] = (T)(img)(_p3##x,_n10##y,z,c), I[582] = (T)(img)(_p2##x,_n10##y,z,c), I[583] = (T)(img)(_p1##x,_n10##y,z,c), I[584] = (T)(img)(x,_n10##y,z,c), I[585] = (T)(img)(_n1##x,_n10##y,z,c), I[586] = (T)(img)(_n2##x,_n10##y,z,c), I[587] = (T)(img)(_n3##x,_n10##y,z,c), I[588] = (T)(img)(_n4##x,_n10##y,z,c), I[589] = (T)(img)(_n5##x,_n10##y,z,c), I[590] = (T)(img)(_n6##x,_n10##y,z,c), I[591] = (T)(img)(_n7##x,_n10##y,z,c), I[592] = (T)(img)(_n8##x,_n10##y,z,c), I[593] = (T)(img)(_n9##x,_n10##y,z,c), I[594] = (T)(img)(_n10##x,_n10##y,z,c), I[595] = (T)(img)(_n11##x,_n10##y,z,c), I[596] = (T)(img)(_n12##x,_n10##y,z,c), I[597] = (T)(img)(_n13##x,_n10##y,z,c), \ + I[598] = (T)(img)(_p12##x,_n11##y,z,c), I[599] = (T)(img)(_p11##x,_n11##y,z,c), I[600] = (T)(img)(_p10##x,_n11##y,z,c), I[601] = (T)(img)(_p9##x,_n11##y,z,c), I[602] = (T)(img)(_p8##x,_n11##y,z,c), I[603] = (T)(img)(_p7##x,_n11##y,z,c), I[604] = (T)(img)(_p6##x,_n11##y,z,c), I[605] = (T)(img)(_p5##x,_n11##y,z,c), I[606] = (T)(img)(_p4##x,_n11##y,z,c), I[607] = (T)(img)(_p3##x,_n11##y,z,c), I[608] = (T)(img)(_p2##x,_n11##y,z,c), I[609] = (T)(img)(_p1##x,_n11##y,z,c), I[610] = (T)(img)(x,_n11##y,z,c), I[611] = (T)(img)(_n1##x,_n11##y,z,c), I[612] = (T)(img)(_n2##x,_n11##y,z,c), I[613] = (T)(img)(_n3##x,_n11##y,z,c), I[614] = (T)(img)(_n4##x,_n11##y,z,c), I[615] = (T)(img)(_n5##x,_n11##y,z,c), I[616] = (T)(img)(_n6##x,_n11##y,z,c), I[617] = (T)(img)(_n7##x,_n11##y,z,c), I[618] = (T)(img)(_n8##x,_n11##y,z,c), I[619] = (T)(img)(_n9##x,_n11##y,z,c), I[620] = (T)(img)(_n10##x,_n11##y,z,c), I[621] = (T)(img)(_n11##x,_n11##y,z,c), I[622] = (T)(img)(_n12##x,_n11##y,z,c), I[623] = (T)(img)(_n13##x,_n11##y,z,c), \ + I[624] = (T)(img)(_p12##x,_n12##y,z,c), I[625] = (T)(img)(_p11##x,_n12##y,z,c), I[626] = (T)(img)(_p10##x,_n12##y,z,c), I[627] = (T)(img)(_p9##x,_n12##y,z,c), I[628] = (T)(img)(_p8##x,_n12##y,z,c), I[629] = (T)(img)(_p7##x,_n12##y,z,c), I[630] = (T)(img)(_p6##x,_n12##y,z,c), I[631] = (T)(img)(_p5##x,_n12##y,z,c), I[632] = (T)(img)(_p4##x,_n12##y,z,c), I[633] = (T)(img)(_p3##x,_n12##y,z,c), I[634] = (T)(img)(_p2##x,_n12##y,z,c), I[635] = (T)(img)(_p1##x,_n12##y,z,c), I[636] = (T)(img)(x,_n12##y,z,c), I[637] = (T)(img)(_n1##x,_n12##y,z,c), I[638] = (T)(img)(_n2##x,_n12##y,z,c), I[639] = (T)(img)(_n3##x,_n12##y,z,c), I[640] = (T)(img)(_n4##x,_n12##y,z,c), I[641] = (T)(img)(_n5##x,_n12##y,z,c), I[642] = (T)(img)(_n6##x,_n12##y,z,c), I[643] = (T)(img)(_n7##x,_n12##y,z,c), I[644] = (T)(img)(_n8##x,_n12##y,z,c), I[645] = (T)(img)(_n9##x,_n12##y,z,c), I[646] = (T)(img)(_n10##x,_n12##y,z,c), I[647] = (T)(img)(_n11##x,_n12##y,z,c), I[648] = (T)(img)(_n12##x,_n12##y,z,c), I[649] = (T)(img)(_n13##x,_n12##y,z,c), \ + I[650] = (T)(img)(_p12##x,_n13##y,z,c), I[651] = (T)(img)(_p11##x,_n13##y,z,c), I[652] = (T)(img)(_p10##x,_n13##y,z,c), I[653] = (T)(img)(_p9##x,_n13##y,z,c), I[654] = (T)(img)(_p8##x,_n13##y,z,c), I[655] = (T)(img)(_p7##x,_n13##y,z,c), I[656] = (T)(img)(_p6##x,_n13##y,z,c), I[657] = (T)(img)(_p5##x,_n13##y,z,c), I[658] = (T)(img)(_p4##x,_n13##y,z,c), I[659] = (T)(img)(_p3##x,_n13##y,z,c), I[660] = (T)(img)(_p2##x,_n13##y,z,c), I[661] = (T)(img)(_p1##x,_n13##y,z,c), I[662] = (T)(img)(x,_n13##y,z,c), I[663] = (T)(img)(_n1##x,_n13##y,z,c), I[664] = (T)(img)(_n2##x,_n13##y,z,c), I[665] = (T)(img)(_n3##x,_n13##y,z,c), I[666] = (T)(img)(_n4##x,_n13##y,z,c), I[667] = (T)(img)(_n5##x,_n13##y,z,c), I[668] = (T)(img)(_n6##x,_n13##y,z,c), I[669] = (T)(img)(_n7##x,_n13##y,z,c), I[670] = (T)(img)(_n8##x,_n13##y,z,c), I[671] = (T)(img)(_n9##x,_n13##y,z,c), I[672] = (T)(img)(_n10##x,_n13##y,z,c), I[673] = (T)(img)(_n11##x,_n13##y,z,c), I[674] = (T)(img)(_n12##x,_n13##y,z,c), I[675] = (T)(img)(_n13##x,_n13##y,z,c); + +// Define 27x27 loop macros +//------------------------- +#define cimg_for27(bound,i) for (int i = 0, \ + _p13##i = 0, _p12##i = 0, _p11##i = 0, _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11, \ + _n12##i = 12>=(int)(bound)?(int)(bound) - 1:12, \ + _n13##i = 13>=(int)(bound)?(int)(bound) - 1:13; \ + _n13##i<(int)(bound) || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i) + +#define cimg_for27X(img,x) cimg_for27((img)._width,x) +#define cimg_for27Y(img,y) cimg_for27((img)._height,y) +#define cimg_for27Z(img,z) cimg_for27((img)._depth,z) +#define cimg_for27C(img,c) cimg_for27((img)._spectrum,c) +#define cimg_for27XY(img,x,y) cimg_for27Y(img,y) cimg_for27X(img,x) +#define cimg_for27XZ(img,x,z) cimg_for27Z(img,z) cimg_for27X(img,x) +#define cimg_for27XC(img,x,c) cimg_for27C(img,c) cimg_for27X(img,x) +#define cimg_for27YZ(img,y,z) cimg_for27Z(img,z) cimg_for27Y(img,y) +#define cimg_for27YC(img,y,c) cimg_for27C(img,c) cimg_for27Y(img,y) +#define cimg_for27ZC(img,z,c) cimg_for27C(img,c) cimg_for27Z(img,z) +#define cimg_for27XYZ(img,x,y,z) cimg_for27Z(img,z) cimg_for27XY(img,x,y) +#define cimg_for27XZC(img,x,z,c) cimg_for27C(img,c) cimg_for27XZ(img,x,z) +#define cimg_for27YZC(img,y,z,c) cimg_for27C(img,c) cimg_for27YZ(img,y,z) +#define cimg_for27XYZC(img,x,y,z,c) cimg_for27C(img,c) cimg_for27XYZ(img,x,y,z) + +#define cimg_for_in27(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p13##i = i - 13<0?0:i - 13, \ + _p12##i = i - 12<0?0:i - 12, \ + _p11##i = i - 11<0?0:i - 11, \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11, \ + _n12##i = i + 12>=(int)(bound)?(int)(bound) - 1:i + 12, \ + _n13##i = i + 13>=(int)(bound)?(int)(bound) - 1:i + 13; \ + i<=(int)(i1) && (_n13##i<(int)(bound) || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i) + +#define cimg_for_in27X(img,x0,x1,x) cimg_for_in27((img)._width,x0,x1,x) +#define cimg_for_in27Y(img,y0,y1,y) cimg_for_in27((img)._height,y0,y1,y) +#define cimg_for_in27Z(img,z0,z1,z) cimg_for_in27((img)._depth,z0,z1,z) +#define cimg_for_in27C(img,c0,c1,c) cimg_for_in27((img)._spectrum,c0,c1,c) +#define cimg_for_in27XY(img,x0,y0,x1,y1,x,y) cimg_for_in27Y(img,y0,y1,y) cimg_for_in27X(img,x0,x1,x) +#define cimg_for_in27XZ(img,x0,z0,x1,z1,x,z) cimg_for_in27Z(img,z0,z1,z) cimg_for_in27X(img,x0,x1,x) +#define cimg_for_in27XC(img,x0,c0,x1,c1,x,c) cimg_for_in27C(img,c0,c1,c) cimg_for_in27X(img,x0,x1,x) +#define cimg_for_in27YZ(img,y0,z0,y1,z1,y,z) cimg_for_in27Z(img,z0,z1,z) cimg_for_in27Y(img,y0,y1,y) +#define cimg_for_in27YC(img,y0,c0,y1,c1,y,c) cimg_for_in27C(img,c0,c1,c) cimg_for_in27Y(img,y0,y1,y) +#define cimg_for_in27ZC(img,z0,c0,z1,c1,z,c) cimg_for_in27C(img,c0,c1,c) cimg_for_in27Z(img,z0,z1,z) +#define cimg_for_in27XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in27Z(img,z0,z1,z) cimg_for_in27XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in27XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in27C(img,c0,c1,c) cimg_for_in27XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in27YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in27C(img,c0,c1,c) cimg_for_in27YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in27XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in27C(img,c0,c1,c) cimg_for_in27XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for27x27(img,x,y,z,c,I,T) \ + cimg_for27((img)._height,y) for (int x = 0, \ + _p13##x = 0, _p12##x = 0, _p11##x = 0, _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = 11>=((img)._width)?(img).width() - 1:11, \ + _n12##x = 12>=((img)._width)?(img).width() - 1:12, \ + _n13##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = I[11] = I[12] = I[13] = (T)(img)(0,_p13##y,z,c)), \ + (I[27] = I[28] = I[29] = I[30] = I[31] = I[32] = I[33] = I[34] = I[35] = I[36] = I[37] = I[38] = I[39] = I[40] = (T)(img)(0,_p12##y,z,c)), \ + (I[54] = I[55] = I[56] = I[57] = I[58] = I[59] = I[60] = I[61] = I[62] = I[63] = I[64] = I[65] = I[66] = I[67] = (T)(img)(0,_p11##y,z,c)), \ + (I[81] = I[82] = I[83] = I[84] = I[85] = I[86] = I[87] = I[88] = I[89] = I[90] = I[91] = I[92] = I[93] = I[94] = (T)(img)(0,_p10##y,z,c)), \ + (I[108] = I[109] = I[110] = I[111] = I[112] = I[113] = I[114] = I[115] = I[116] = I[117] = I[118] = I[119] = I[120] = I[121] = (T)(img)(0,_p9##y,z,c)), \ + (I[135] = I[136] = I[137] = I[138] = I[139] = I[140] = I[141] = I[142] = I[143] = I[144] = I[145] = I[146] = I[147] = I[148] = (T)(img)(0,_p8##y,z,c)), \ + (I[162] = I[163] = I[164] = I[165] = I[166] = I[167] = I[168] = I[169] = I[170] = I[171] = I[172] = I[173] = I[174] = I[175] = (T)(img)(0,_p7##y,z,c)), \ + (I[189] = I[190] = I[191] = I[192] = I[193] = I[194] = I[195] = I[196] = I[197] = I[198] = I[199] = I[200] = I[201] = I[202] = (T)(img)(0,_p6##y,z,c)), \ + (I[216] = I[217] = I[218] = I[219] = I[220] = I[221] = I[222] = I[223] = I[224] = I[225] = I[226] = I[227] = I[228] = I[229] = (T)(img)(0,_p5##y,z,c)), \ + (I[243] = I[244] = I[245] = I[246] = I[247] = I[248] = I[249] = I[250] = I[251] = I[252] = I[253] = I[254] = I[255] = I[256] = (T)(img)(0,_p4##y,z,c)), \ + (I[270] = I[271] = I[272] = I[273] = I[274] = I[275] = I[276] = I[277] = I[278] = I[279] = I[280] = I[281] = I[282] = I[283] = (T)(img)(0,_p3##y,z,c)), \ + (I[297] = I[298] = I[299] = I[300] = I[301] = I[302] = I[303] = I[304] = I[305] = I[306] = I[307] = I[308] = I[309] = I[310] = (T)(img)(0,_p2##y,z,c)), \ + (I[324] = I[325] = I[326] = I[327] = I[328] = I[329] = I[330] = I[331] = I[332] = I[333] = I[334] = I[335] = I[336] = I[337] = (T)(img)(0,_p1##y,z,c)), \ + (I[351] = I[352] = I[353] = I[354] = I[355] = I[356] = I[357] = I[358] = I[359] = I[360] = I[361] = I[362] = I[363] = I[364] = (T)(img)(0,y,z,c)), \ + (I[378] = I[379] = I[380] = I[381] = I[382] = I[383] = I[384] = I[385] = I[386] = I[387] = I[388] = I[389] = I[390] = I[391] = (T)(img)(0,_n1##y,z,c)), \ + (I[405] = I[406] = I[407] = I[408] = I[409] = I[410] = I[411] = I[412] = I[413] = I[414] = I[415] = I[416] = I[417] = I[418] = (T)(img)(0,_n2##y,z,c)), \ + (I[432] = I[433] = I[434] = I[435] = I[436] = I[437] = I[438] = I[439] = I[440] = I[441] = I[442] = I[443] = I[444] = I[445] = (T)(img)(0,_n3##y,z,c)), \ + (I[459] = I[460] = I[461] = I[462] = I[463] = I[464] = I[465] = I[466] = I[467] = I[468] = I[469] = I[470] = I[471] = I[472] = (T)(img)(0,_n4##y,z,c)), \ + (I[486] = I[487] = I[488] = I[489] = I[490] = I[491] = I[492] = I[493] = I[494] = I[495] = I[496] = I[497] = I[498] = I[499] = (T)(img)(0,_n5##y,z,c)), \ + (I[513] = I[514] = I[515] = I[516] = I[517] = I[518] = I[519] = I[520] = I[521] = I[522] = I[523] = I[524] = I[525] = I[526] = (T)(img)(0,_n6##y,z,c)), \ + (I[540] = I[541] = I[542] = I[543] = I[544] = I[545] = I[546] = I[547] = I[548] = I[549] = I[550] = I[551] = I[552] = I[553] = (T)(img)(0,_n7##y,z,c)), \ + (I[567] = I[568] = I[569] = I[570] = I[571] = I[572] = I[573] = I[574] = I[575] = I[576] = I[577] = I[578] = I[579] = I[580] = (T)(img)(0,_n8##y,z,c)), \ + (I[594] = I[595] = I[596] = I[597] = I[598] = I[599] = I[600] = I[601] = I[602] = I[603] = I[604] = I[605] = I[606] = I[607] = (T)(img)(0,_n9##y,z,c)), \ + (I[621] = I[622] = I[623] = I[624] = I[625] = I[626] = I[627] = I[628] = I[629] = I[630] = I[631] = I[632] = I[633] = I[634] = (T)(img)(0,_n10##y,z,c)), \ + (I[648] = I[649] = I[650] = I[651] = I[652] = I[653] = I[654] = I[655] = I[656] = I[657] = I[658] = I[659] = I[660] = I[661] = (T)(img)(0,_n11##y,z,c)), \ + (I[675] = I[676] = I[677] = I[678] = I[679] = I[680] = I[681] = I[682] = I[683] = I[684] = I[685] = I[686] = I[687] = I[688] = (T)(img)(0,_n12##y,z,c)), \ + (I[702] = I[703] = I[704] = I[705] = I[706] = I[707] = I[708] = I[709] = I[710] = I[711] = I[712] = I[713] = I[714] = I[715] = (T)(img)(0,_n13##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[41] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[68] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[95] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[122] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[149] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[176] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[203] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[230] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[257] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[284] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[311] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[338] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[365] = (T)(img)(_n1##x,y,z,c)), \ + (I[392] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[419] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[446] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[473] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[500] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[527] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[554] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[581] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[608] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[635] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[662] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[689] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[716] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[42] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[69] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[96] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[123] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[150] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[177] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[204] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[231] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[258] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[285] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[312] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[339] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[366] = (T)(img)(_n2##x,y,z,c)), \ + (I[393] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[420] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[447] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[474] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[501] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[528] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[555] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[582] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[609] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[636] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[663] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[690] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[717] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[16] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[43] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[70] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[97] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[124] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[151] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[178] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[205] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[232] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[259] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[286] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[313] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[340] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[367] = (T)(img)(_n3##x,y,z,c)), \ + (I[394] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[421] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[448] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[475] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[502] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[529] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[556] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[583] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[610] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[637] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[664] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[691] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[718] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[17] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[44] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[71] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[98] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[125] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[152] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[179] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[206] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[233] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[260] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[287] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[314] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[341] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[368] = (T)(img)(_n4##x,y,z,c)), \ + (I[395] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[422] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[449] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[476] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[503] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[530] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[557] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[584] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[611] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[638] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[665] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[692] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[719] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[18] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[45] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[72] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[99] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[126] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[153] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[180] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[207] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[234] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[261] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[288] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[315] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[342] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[369] = (T)(img)(_n5##x,y,z,c)), \ + (I[396] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[423] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[450] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[477] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[504] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[531] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[558] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[585] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[612] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[639] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[666] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[693] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[720] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[19] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[46] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[73] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[100] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[127] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[154] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[181] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[208] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[235] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[262] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[289] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[316] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[343] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[370] = (T)(img)(_n6##x,y,z,c)), \ + (I[397] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[424] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[451] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[478] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[505] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[532] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[559] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[586] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[613] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[640] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[667] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[694] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[721] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[20] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[47] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[74] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[101] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[128] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[155] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[182] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[209] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[236] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[263] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[290] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[317] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[344] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[371] = (T)(img)(_n7##x,y,z,c)), \ + (I[398] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[425] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[452] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[479] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[506] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[533] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[560] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[587] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[614] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[641] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[668] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[695] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[722] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[21] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[48] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[75] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[102] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[129] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[156] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[183] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[210] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[237] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[264] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[291] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[318] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[345] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[372] = (T)(img)(_n8##x,y,z,c)), \ + (I[399] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[426] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[453] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[480] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[507] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[534] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[561] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[588] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[615] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[642] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[669] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[696] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[723] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[22] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[49] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[76] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[103] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[130] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[157] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[184] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[211] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[238] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[265] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[292] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[319] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[346] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[373] = (T)(img)(_n9##x,y,z,c)), \ + (I[400] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[427] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[454] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[481] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[508] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[535] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[562] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[589] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[616] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[643] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[670] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[697] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[724] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[23] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[50] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[77] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[104] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[131] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[158] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[185] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[212] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[239] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[266] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[293] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[320] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[347] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[374] = (T)(img)(_n10##x,y,z,c)), \ + (I[401] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[428] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[455] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[482] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[509] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[536] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[563] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[590] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[617] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[644] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[671] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[698] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[725] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[24] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[51] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[78] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[105] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[132] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[159] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[186] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[213] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[240] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[267] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[294] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[321] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[348] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[375] = (T)(img)(_n11##x,y,z,c)), \ + (I[402] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[429] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[456] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[483] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[510] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[537] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[564] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[591] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[618] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[645] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[672] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[699] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[726] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[25] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[52] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[79] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[106] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[133] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[160] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[187] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[214] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[241] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[268] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[295] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[322] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[349] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[376] = (T)(img)(_n12##x,y,z,c)), \ + (I[403] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[430] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[457] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[484] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[511] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[538] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[565] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[592] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[619] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[646] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[673] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[700] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[727] = (T)(img)(_n12##x,_n13##y,z,c)), \ + 13>=((img)._width)?(img).width() - 1:13); \ + (_n13##x<(img).width() && ( \ + (I[26] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[53] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[80] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[107] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[134] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[161] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[188] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[215] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[242] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[269] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[296] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[323] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[350] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[377] = (T)(img)(_n13##x,y,z,c)), \ + (I[404] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[431] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[458] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[485] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[512] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[539] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[566] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[593] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[620] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[647] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[674] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[701] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[728] = (T)(img)(_n13##x,_n13##y,z,c)),1)) || \ + _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], \ + I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], \ + I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], \ + I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], \ + I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], \ + I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], \ + I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], \ + I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], \ + I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], \ + I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], \ + I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], \ + I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], \ + I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], \ + I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], \ + I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], \ + I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], \ + I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], \ + I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], \ + I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], \ + I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], \ + I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], \ + I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], \ + I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], \ + I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], \ + I[648] = I[649], I[649] = I[650], I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], I[671] = I[672], I[672] = I[673], I[673] = I[674], \ + I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], I[681] = I[682], I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], I[689] = I[690], I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], I[695] = I[696], I[696] = I[697], I[697] = I[698], I[698] = I[699], I[699] = I[700], I[700] = I[701], \ + I[702] = I[703], I[703] = I[704], I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], I[712] = I[713], I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], I[719] = I[720], I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], I[724] = I[725], I[725] = I[726], I[726] = I[727], I[727] = I[728], \ + _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x) + +#define cimg_for_in27x27(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in27((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p13##x = x - 13<0?0:x - 13, \ + _p12##x = x - 12<0?0:x - 12, \ + _p11##x = x - 11<0?0:x - 11, \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = x + 11>=(img).width()?(img).width() - 1:x + 11, \ + _n12##x = x + 12>=(img).width()?(img).width() - 1:x + 12, \ + _n13##x = (int)( \ + (I[0] = (T)(img)(_p13##x,_p13##y,z,c)), \ + (I[27] = (T)(img)(_p13##x,_p12##y,z,c)), \ + (I[54] = (T)(img)(_p13##x,_p11##y,z,c)), \ + (I[81] = (T)(img)(_p13##x,_p10##y,z,c)), \ + (I[108] = (T)(img)(_p13##x,_p9##y,z,c)), \ + (I[135] = (T)(img)(_p13##x,_p8##y,z,c)), \ + (I[162] = (T)(img)(_p13##x,_p7##y,z,c)), \ + (I[189] = (T)(img)(_p13##x,_p6##y,z,c)), \ + (I[216] = (T)(img)(_p13##x,_p5##y,z,c)), \ + (I[243] = (T)(img)(_p13##x,_p4##y,z,c)), \ + (I[270] = (T)(img)(_p13##x,_p3##y,z,c)), \ + (I[297] = (T)(img)(_p13##x,_p2##y,z,c)), \ + (I[324] = (T)(img)(_p13##x,_p1##y,z,c)), \ + (I[351] = (T)(img)(_p13##x,y,z,c)), \ + (I[378] = (T)(img)(_p13##x,_n1##y,z,c)), \ + (I[405] = (T)(img)(_p13##x,_n2##y,z,c)), \ + (I[432] = (T)(img)(_p13##x,_n3##y,z,c)), \ + (I[459] = (T)(img)(_p13##x,_n4##y,z,c)), \ + (I[486] = (T)(img)(_p13##x,_n5##y,z,c)), \ + (I[513] = (T)(img)(_p13##x,_n6##y,z,c)), \ + (I[540] = (T)(img)(_p13##x,_n7##y,z,c)), \ + (I[567] = (T)(img)(_p13##x,_n8##y,z,c)), \ + (I[594] = (T)(img)(_p13##x,_n9##y,z,c)), \ + (I[621] = (T)(img)(_p13##x,_n10##y,z,c)), \ + (I[648] = (T)(img)(_p13##x,_n11##y,z,c)), \ + (I[675] = (T)(img)(_p13##x,_n12##y,z,c)), \ + (I[702] = (T)(img)(_p13##x,_n13##y,z,c)), \ + (I[1] = (T)(img)(_p12##x,_p13##y,z,c)), \ + (I[28] = (T)(img)(_p12##x,_p12##y,z,c)), \ + (I[55] = (T)(img)(_p12##x,_p11##y,z,c)), \ + (I[82] = (T)(img)(_p12##x,_p10##y,z,c)), \ + (I[109] = (T)(img)(_p12##x,_p9##y,z,c)), \ + (I[136] = (T)(img)(_p12##x,_p8##y,z,c)), \ + (I[163] = (T)(img)(_p12##x,_p7##y,z,c)), \ + (I[190] = (T)(img)(_p12##x,_p6##y,z,c)), \ + (I[217] = (T)(img)(_p12##x,_p5##y,z,c)), \ + (I[244] = (T)(img)(_p12##x,_p4##y,z,c)), \ + (I[271] = (T)(img)(_p12##x,_p3##y,z,c)), \ + (I[298] = (T)(img)(_p12##x,_p2##y,z,c)), \ + (I[325] = (T)(img)(_p12##x,_p1##y,z,c)), \ + (I[352] = (T)(img)(_p12##x,y,z,c)), \ + (I[379] = (T)(img)(_p12##x,_n1##y,z,c)), \ + (I[406] = (T)(img)(_p12##x,_n2##y,z,c)), \ + (I[433] = (T)(img)(_p12##x,_n3##y,z,c)), \ + (I[460] = (T)(img)(_p12##x,_n4##y,z,c)), \ + (I[487] = (T)(img)(_p12##x,_n5##y,z,c)), \ + (I[514] = (T)(img)(_p12##x,_n6##y,z,c)), \ + (I[541] = (T)(img)(_p12##x,_n7##y,z,c)), \ + (I[568] = (T)(img)(_p12##x,_n8##y,z,c)), \ + (I[595] = (T)(img)(_p12##x,_n9##y,z,c)), \ + (I[622] = (T)(img)(_p12##x,_n10##y,z,c)), \ + (I[649] = (T)(img)(_p12##x,_n11##y,z,c)), \ + (I[676] = (T)(img)(_p12##x,_n12##y,z,c)), \ + (I[703] = (T)(img)(_p12##x,_n13##y,z,c)), \ + (I[2] = (T)(img)(_p11##x,_p13##y,z,c)), \ + (I[29] = (T)(img)(_p11##x,_p12##y,z,c)), \ + (I[56] = (T)(img)(_p11##x,_p11##y,z,c)), \ + (I[83] = (T)(img)(_p11##x,_p10##y,z,c)), \ + (I[110] = (T)(img)(_p11##x,_p9##y,z,c)), \ + (I[137] = (T)(img)(_p11##x,_p8##y,z,c)), \ + (I[164] = (T)(img)(_p11##x,_p7##y,z,c)), \ + (I[191] = (T)(img)(_p11##x,_p6##y,z,c)), \ + (I[218] = (T)(img)(_p11##x,_p5##y,z,c)), \ + (I[245] = (T)(img)(_p11##x,_p4##y,z,c)), \ + (I[272] = (T)(img)(_p11##x,_p3##y,z,c)), \ + (I[299] = (T)(img)(_p11##x,_p2##y,z,c)), \ + (I[326] = (T)(img)(_p11##x,_p1##y,z,c)), \ + (I[353] = (T)(img)(_p11##x,y,z,c)), \ + (I[380] = (T)(img)(_p11##x,_n1##y,z,c)), \ + (I[407] = (T)(img)(_p11##x,_n2##y,z,c)), \ + (I[434] = (T)(img)(_p11##x,_n3##y,z,c)), \ + (I[461] = (T)(img)(_p11##x,_n4##y,z,c)), \ + (I[488] = (T)(img)(_p11##x,_n5##y,z,c)), \ + (I[515] = (T)(img)(_p11##x,_n6##y,z,c)), \ + (I[542] = (T)(img)(_p11##x,_n7##y,z,c)), \ + (I[569] = (T)(img)(_p11##x,_n8##y,z,c)), \ + (I[596] = (T)(img)(_p11##x,_n9##y,z,c)), \ + (I[623] = (T)(img)(_p11##x,_n10##y,z,c)), \ + (I[650] = (T)(img)(_p11##x,_n11##y,z,c)), \ + (I[677] = (T)(img)(_p11##x,_n12##y,z,c)), \ + (I[704] = (T)(img)(_p11##x,_n13##y,z,c)), \ + (I[3] = (T)(img)(_p10##x,_p13##y,z,c)), \ + (I[30] = (T)(img)(_p10##x,_p12##y,z,c)), \ + (I[57] = (T)(img)(_p10##x,_p11##y,z,c)), \ + (I[84] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[111] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[138] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[165] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[192] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[219] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[246] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[273] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[300] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[327] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[354] = (T)(img)(_p10##x,y,z,c)), \ + (I[381] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[408] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[435] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[462] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[489] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[516] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[543] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[570] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[597] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[624] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[651] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[678] = (T)(img)(_p10##x,_n12##y,z,c)), \ + (I[705] = (T)(img)(_p10##x,_n13##y,z,c)), \ + (I[4] = (T)(img)(_p9##x,_p13##y,z,c)), \ + (I[31] = (T)(img)(_p9##x,_p12##y,z,c)), \ + (I[58] = (T)(img)(_p9##x,_p11##y,z,c)), \ + (I[85] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[112] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[139] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[166] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[193] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[220] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[247] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[274] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[301] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[328] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[355] = (T)(img)(_p9##x,y,z,c)), \ + (I[382] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[409] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[436] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[463] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[490] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[517] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[544] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[571] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[598] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[625] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[652] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[679] = (T)(img)(_p9##x,_n12##y,z,c)), \ + (I[706] = (T)(img)(_p9##x,_n13##y,z,c)), \ + (I[5] = (T)(img)(_p8##x,_p13##y,z,c)), \ + (I[32] = (T)(img)(_p8##x,_p12##y,z,c)), \ + (I[59] = (T)(img)(_p8##x,_p11##y,z,c)), \ + (I[86] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[113] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[140] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[167] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[194] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[221] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[248] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[275] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[302] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[329] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[356] = (T)(img)(_p8##x,y,z,c)), \ + (I[383] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[410] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[437] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[464] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[491] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[518] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[545] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[572] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[599] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[626] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[653] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[680] = (T)(img)(_p8##x,_n12##y,z,c)), \ + (I[707] = (T)(img)(_p8##x,_n13##y,z,c)), \ + (I[6] = (T)(img)(_p7##x,_p13##y,z,c)), \ + (I[33] = (T)(img)(_p7##x,_p12##y,z,c)), \ + (I[60] = (T)(img)(_p7##x,_p11##y,z,c)), \ + (I[87] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[114] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[141] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[168] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[195] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[222] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[249] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[276] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[303] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[330] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[357] = (T)(img)(_p7##x,y,z,c)), \ + (I[384] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[411] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[438] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[465] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[492] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[519] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[546] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[573] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[600] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[627] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[654] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[681] = (T)(img)(_p7##x,_n12##y,z,c)), \ + (I[708] = (T)(img)(_p7##x,_n13##y,z,c)), \ + (I[7] = (T)(img)(_p6##x,_p13##y,z,c)), \ + (I[34] = (T)(img)(_p6##x,_p12##y,z,c)), \ + (I[61] = (T)(img)(_p6##x,_p11##y,z,c)), \ + (I[88] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[115] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[142] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[169] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[196] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[223] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[250] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[277] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[304] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[331] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[358] = (T)(img)(_p6##x,y,z,c)), \ + (I[385] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[412] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[439] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[466] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[493] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[520] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[547] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[574] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[601] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[628] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[655] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[682] = (T)(img)(_p6##x,_n12##y,z,c)), \ + (I[709] = (T)(img)(_p6##x,_n13##y,z,c)), \ + (I[8] = (T)(img)(_p5##x,_p13##y,z,c)), \ + (I[35] = (T)(img)(_p5##x,_p12##y,z,c)), \ + (I[62] = (T)(img)(_p5##x,_p11##y,z,c)), \ + (I[89] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[116] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[143] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[170] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[197] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[224] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[251] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[278] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[305] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[332] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[359] = (T)(img)(_p5##x,y,z,c)), \ + (I[386] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[413] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[440] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[467] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[494] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[521] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[548] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[575] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[602] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[629] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[656] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[683] = (T)(img)(_p5##x,_n12##y,z,c)), \ + (I[710] = (T)(img)(_p5##x,_n13##y,z,c)), \ + (I[9] = (T)(img)(_p4##x,_p13##y,z,c)), \ + (I[36] = (T)(img)(_p4##x,_p12##y,z,c)), \ + (I[63] = (T)(img)(_p4##x,_p11##y,z,c)), \ + (I[90] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[117] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[144] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[171] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[198] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[225] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[252] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[279] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[306] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[333] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[360] = (T)(img)(_p4##x,y,z,c)), \ + (I[387] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[414] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[441] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[468] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[495] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[522] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[549] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[576] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[603] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[630] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[657] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[684] = (T)(img)(_p4##x,_n12##y,z,c)), \ + (I[711] = (T)(img)(_p4##x,_n13##y,z,c)), \ + (I[10] = (T)(img)(_p3##x,_p13##y,z,c)), \ + (I[37] = (T)(img)(_p3##x,_p12##y,z,c)), \ + (I[64] = (T)(img)(_p3##x,_p11##y,z,c)), \ + (I[91] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[118] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[145] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[172] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[199] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[226] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[253] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[280] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[307] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[334] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[361] = (T)(img)(_p3##x,y,z,c)), \ + (I[388] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[415] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[442] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[469] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[496] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[523] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[550] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[577] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[604] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[631] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[658] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[685] = (T)(img)(_p3##x,_n12##y,z,c)), \ + (I[712] = (T)(img)(_p3##x,_n13##y,z,c)), \ + (I[11] = (T)(img)(_p2##x,_p13##y,z,c)), \ + (I[38] = (T)(img)(_p2##x,_p12##y,z,c)), \ + (I[65] = (T)(img)(_p2##x,_p11##y,z,c)), \ + (I[92] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[119] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[146] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[173] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[200] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[227] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[254] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[281] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[308] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[335] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[362] = (T)(img)(_p2##x,y,z,c)), \ + (I[389] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[416] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[443] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[470] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[497] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[524] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[551] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[578] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[605] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[632] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[659] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[686] = (T)(img)(_p2##x,_n12##y,z,c)), \ + (I[713] = (T)(img)(_p2##x,_n13##y,z,c)), \ + (I[12] = (T)(img)(_p1##x,_p13##y,z,c)), \ + (I[39] = (T)(img)(_p1##x,_p12##y,z,c)), \ + (I[66] = (T)(img)(_p1##x,_p11##y,z,c)), \ + (I[93] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[120] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[147] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[174] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[201] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[228] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[255] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[282] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[309] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[336] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[363] = (T)(img)(_p1##x,y,z,c)), \ + (I[390] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[417] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[444] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[471] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[498] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[525] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[552] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[579] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[606] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[633] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[660] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[687] = (T)(img)(_p1##x,_n12##y,z,c)), \ + (I[714] = (T)(img)(_p1##x,_n13##y,z,c)), \ + (I[13] = (T)(img)(x,_p13##y,z,c)), \ + (I[40] = (T)(img)(x,_p12##y,z,c)), \ + (I[67] = (T)(img)(x,_p11##y,z,c)), \ + (I[94] = (T)(img)(x,_p10##y,z,c)), \ + (I[121] = (T)(img)(x,_p9##y,z,c)), \ + (I[148] = (T)(img)(x,_p8##y,z,c)), \ + (I[175] = (T)(img)(x,_p7##y,z,c)), \ + (I[202] = (T)(img)(x,_p6##y,z,c)), \ + (I[229] = (T)(img)(x,_p5##y,z,c)), \ + (I[256] = (T)(img)(x,_p4##y,z,c)), \ + (I[283] = (T)(img)(x,_p3##y,z,c)), \ + (I[310] = (T)(img)(x,_p2##y,z,c)), \ + (I[337] = (T)(img)(x,_p1##y,z,c)), \ + (I[364] = (T)(img)(x,y,z,c)), \ + (I[391] = (T)(img)(x,_n1##y,z,c)), \ + (I[418] = (T)(img)(x,_n2##y,z,c)), \ + (I[445] = (T)(img)(x,_n3##y,z,c)), \ + (I[472] = (T)(img)(x,_n4##y,z,c)), \ + (I[499] = (T)(img)(x,_n5##y,z,c)), \ + (I[526] = (T)(img)(x,_n6##y,z,c)), \ + (I[553] = (T)(img)(x,_n7##y,z,c)), \ + (I[580] = (T)(img)(x,_n8##y,z,c)), \ + (I[607] = (T)(img)(x,_n9##y,z,c)), \ + (I[634] = (T)(img)(x,_n10##y,z,c)), \ + (I[661] = (T)(img)(x,_n11##y,z,c)), \ + (I[688] = (T)(img)(x,_n12##y,z,c)), \ + (I[715] = (T)(img)(x,_n13##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[41] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[68] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[95] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[122] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[149] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[176] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[203] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[230] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[257] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[284] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[311] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[338] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[365] = (T)(img)(_n1##x,y,z,c)), \ + (I[392] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[419] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[446] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[473] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[500] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[527] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[554] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[581] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[608] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[635] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[662] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[689] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[716] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[42] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[69] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[96] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[123] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[150] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[177] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[204] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[231] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[258] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[285] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[312] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[339] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[366] = (T)(img)(_n2##x,y,z,c)), \ + (I[393] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[420] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[447] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[474] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[501] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[528] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[555] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[582] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[609] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[636] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[663] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[690] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[717] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[16] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[43] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[70] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[97] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[124] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[151] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[178] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[205] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[232] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[259] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[286] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[313] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[340] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[367] = (T)(img)(_n3##x,y,z,c)), \ + (I[394] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[421] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[448] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[475] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[502] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[529] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[556] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[583] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[610] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[637] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[664] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[691] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[718] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[17] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[44] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[71] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[98] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[125] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[152] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[179] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[206] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[233] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[260] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[287] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[314] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[341] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[368] = (T)(img)(_n4##x,y,z,c)), \ + (I[395] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[422] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[449] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[476] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[503] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[530] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[557] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[584] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[611] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[638] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[665] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[692] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[719] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[18] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[45] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[72] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[99] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[126] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[153] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[180] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[207] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[234] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[261] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[288] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[315] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[342] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[369] = (T)(img)(_n5##x,y,z,c)), \ + (I[396] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[423] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[450] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[477] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[504] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[531] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[558] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[585] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[612] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[639] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[666] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[693] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[720] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[19] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[46] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[73] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[100] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[127] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[154] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[181] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[208] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[235] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[262] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[289] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[316] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[343] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[370] = (T)(img)(_n6##x,y,z,c)), \ + (I[397] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[424] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[451] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[478] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[505] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[532] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[559] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[586] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[613] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[640] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[667] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[694] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[721] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[20] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[47] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[74] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[101] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[128] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[155] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[182] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[209] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[236] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[263] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[290] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[317] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[344] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[371] = (T)(img)(_n7##x,y,z,c)), \ + (I[398] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[425] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[452] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[479] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[506] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[533] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[560] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[587] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[614] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[641] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[668] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[695] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[722] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[21] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[48] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[75] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[102] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[129] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[156] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[183] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[210] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[237] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[264] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[291] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[318] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[345] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[372] = (T)(img)(_n8##x,y,z,c)), \ + (I[399] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[426] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[453] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[480] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[507] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[534] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[561] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[588] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[615] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[642] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[669] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[696] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[723] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[22] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[49] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[76] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[103] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[130] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[157] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[184] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[211] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[238] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[265] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[292] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[319] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[346] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[373] = (T)(img)(_n9##x,y,z,c)), \ + (I[400] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[427] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[454] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[481] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[508] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[535] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[562] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[589] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[616] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[643] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[670] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[697] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[724] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[23] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[50] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[77] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[104] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[131] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[158] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[185] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[212] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[239] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[266] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[293] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[320] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[347] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[374] = (T)(img)(_n10##x,y,z,c)), \ + (I[401] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[428] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[455] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[482] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[509] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[536] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[563] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[590] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[617] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[644] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[671] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[698] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[725] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[24] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[51] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[78] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[105] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[132] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[159] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[186] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[213] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[240] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[267] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[294] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[321] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[348] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[375] = (T)(img)(_n11##x,y,z,c)), \ + (I[402] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[429] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[456] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[483] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[510] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[537] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[564] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[591] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[618] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[645] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[672] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[699] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[726] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[25] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[52] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[79] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[106] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[133] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[160] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[187] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[214] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[241] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[268] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[295] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[322] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[349] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[376] = (T)(img)(_n12##x,y,z,c)), \ + (I[403] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[430] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[457] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[484] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[511] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[538] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[565] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[592] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[619] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[646] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[673] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[700] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[727] = (T)(img)(_n12##x,_n13##y,z,c)), \ + x + 13>=(img).width()?(img).width() - 1:x + 13); \ + x<=(int)(x1) && ((_n13##x<(img).width() && ( \ + (I[26] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[53] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[80] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[107] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[134] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[161] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[188] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[215] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[242] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[269] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[296] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[323] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[350] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[377] = (T)(img)(_n13##x,y,z,c)), \ + (I[404] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[431] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[458] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[485] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[512] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[539] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[566] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[593] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[620] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[647] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[674] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[701] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[728] = (T)(img)(_n13##x,_n13##y,z,c)),1)) || \ + _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], \ + I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], \ + I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], \ + I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], \ + I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], \ + I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], \ + I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], \ + I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], \ + I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], \ + I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], \ + I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], \ + I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], \ + I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], \ + I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], \ + I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], \ + I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], \ + I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], \ + I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], \ + I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], \ + I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], \ + I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], \ + I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], \ + I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], \ + I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], \ + I[648] = I[649], I[649] = I[650], I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], I[671] = I[672], I[672] = I[673], I[673] = I[674], \ + I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], I[681] = I[682], I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], I[689] = I[690], I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], I[695] = I[696], I[696] = I[697], I[697] = I[698], I[698] = I[699], I[699] = I[700], I[700] = I[701], \ + I[702] = I[703], I[703] = I[704], I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], I[712] = I[713], I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], I[719] = I[720], I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], I[724] = I[725], I[725] = I[726], I[726] = I[727], I[727] = I[728], \ + _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x) + +#define cimg_get27x27(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p13##x,_p13##y,z,c), I[1] = (T)(img)(_p12##x,_p13##y,z,c), I[2] = (T)(img)(_p11##x,_p13##y,z,c), I[3] = (T)(img)(_p10##x,_p13##y,z,c), I[4] = (T)(img)(_p9##x,_p13##y,z,c), I[5] = (T)(img)(_p8##x,_p13##y,z,c), I[6] = (T)(img)(_p7##x,_p13##y,z,c), I[7] = (T)(img)(_p6##x,_p13##y,z,c), I[8] = (T)(img)(_p5##x,_p13##y,z,c), I[9] = (T)(img)(_p4##x,_p13##y,z,c), I[10] = (T)(img)(_p3##x,_p13##y,z,c), I[11] = (T)(img)(_p2##x,_p13##y,z,c), I[12] = (T)(img)(_p1##x,_p13##y,z,c), I[13] = (T)(img)(x,_p13##y,z,c), I[14] = (T)(img)(_n1##x,_p13##y,z,c), I[15] = (T)(img)(_n2##x,_p13##y,z,c), I[16] = (T)(img)(_n3##x,_p13##y,z,c), I[17] = (T)(img)(_n4##x,_p13##y,z,c), I[18] = (T)(img)(_n5##x,_p13##y,z,c), I[19] = (T)(img)(_n6##x,_p13##y,z,c), I[20] = (T)(img)(_n7##x,_p13##y,z,c), I[21] = (T)(img)(_n8##x,_p13##y,z,c), I[22] = (T)(img)(_n9##x,_p13##y,z,c), I[23] = (T)(img)(_n10##x,_p13##y,z,c), I[24] = (T)(img)(_n11##x,_p13##y,z,c), I[25] = (T)(img)(_n12##x,_p13##y,z,c), I[26] = (T)(img)(_n13##x,_p13##y,z,c), \ + I[27] = (T)(img)(_p13##x,_p12##y,z,c), I[28] = (T)(img)(_p12##x,_p12##y,z,c), I[29] = (T)(img)(_p11##x,_p12##y,z,c), I[30] = (T)(img)(_p10##x,_p12##y,z,c), I[31] = (T)(img)(_p9##x,_p12##y,z,c), I[32] = (T)(img)(_p8##x,_p12##y,z,c), I[33] = (T)(img)(_p7##x,_p12##y,z,c), I[34] = (T)(img)(_p6##x,_p12##y,z,c), I[35] = (T)(img)(_p5##x,_p12##y,z,c), I[36] = (T)(img)(_p4##x,_p12##y,z,c), I[37] = (T)(img)(_p3##x,_p12##y,z,c), I[38] = (T)(img)(_p2##x,_p12##y,z,c), I[39] = (T)(img)(_p1##x,_p12##y,z,c), I[40] = (T)(img)(x,_p12##y,z,c), I[41] = (T)(img)(_n1##x,_p12##y,z,c), I[42] = (T)(img)(_n2##x,_p12##y,z,c), I[43] = (T)(img)(_n3##x,_p12##y,z,c), I[44] = (T)(img)(_n4##x,_p12##y,z,c), I[45] = (T)(img)(_n5##x,_p12##y,z,c), I[46] = (T)(img)(_n6##x,_p12##y,z,c), I[47] = (T)(img)(_n7##x,_p12##y,z,c), I[48] = (T)(img)(_n8##x,_p12##y,z,c), I[49] = (T)(img)(_n9##x,_p12##y,z,c), I[50] = (T)(img)(_n10##x,_p12##y,z,c), I[51] = (T)(img)(_n11##x,_p12##y,z,c), I[52] = (T)(img)(_n12##x,_p12##y,z,c), I[53] = (T)(img)(_n13##x,_p12##y,z,c), \ + I[54] = (T)(img)(_p13##x,_p11##y,z,c), I[55] = (T)(img)(_p12##x,_p11##y,z,c), I[56] = (T)(img)(_p11##x,_p11##y,z,c), I[57] = (T)(img)(_p10##x,_p11##y,z,c), I[58] = (T)(img)(_p9##x,_p11##y,z,c), I[59] = (T)(img)(_p8##x,_p11##y,z,c), I[60] = (T)(img)(_p7##x,_p11##y,z,c), I[61] = (T)(img)(_p6##x,_p11##y,z,c), I[62] = (T)(img)(_p5##x,_p11##y,z,c), I[63] = (T)(img)(_p4##x,_p11##y,z,c), I[64] = (T)(img)(_p3##x,_p11##y,z,c), I[65] = (T)(img)(_p2##x,_p11##y,z,c), I[66] = (T)(img)(_p1##x,_p11##y,z,c), I[67] = (T)(img)(x,_p11##y,z,c), I[68] = (T)(img)(_n1##x,_p11##y,z,c), I[69] = (T)(img)(_n2##x,_p11##y,z,c), I[70] = (T)(img)(_n3##x,_p11##y,z,c), I[71] = (T)(img)(_n4##x,_p11##y,z,c), I[72] = (T)(img)(_n5##x,_p11##y,z,c), I[73] = (T)(img)(_n6##x,_p11##y,z,c), I[74] = (T)(img)(_n7##x,_p11##y,z,c), I[75] = (T)(img)(_n8##x,_p11##y,z,c), I[76] = (T)(img)(_n9##x,_p11##y,z,c), I[77] = (T)(img)(_n10##x,_p11##y,z,c), I[78] = (T)(img)(_n11##x,_p11##y,z,c), I[79] = (T)(img)(_n12##x,_p11##y,z,c), I[80] = (T)(img)(_n13##x,_p11##y,z,c), \ + I[81] = (T)(img)(_p13##x,_p10##y,z,c), I[82] = (T)(img)(_p12##x,_p10##y,z,c), I[83] = (T)(img)(_p11##x,_p10##y,z,c), I[84] = (T)(img)(_p10##x,_p10##y,z,c), I[85] = (T)(img)(_p9##x,_p10##y,z,c), I[86] = (T)(img)(_p8##x,_p10##y,z,c), I[87] = (T)(img)(_p7##x,_p10##y,z,c), I[88] = (T)(img)(_p6##x,_p10##y,z,c), I[89] = (T)(img)(_p5##x,_p10##y,z,c), I[90] = (T)(img)(_p4##x,_p10##y,z,c), I[91] = (T)(img)(_p3##x,_p10##y,z,c), I[92] = (T)(img)(_p2##x,_p10##y,z,c), I[93] = (T)(img)(_p1##x,_p10##y,z,c), I[94] = (T)(img)(x,_p10##y,z,c), I[95] = (T)(img)(_n1##x,_p10##y,z,c), I[96] = (T)(img)(_n2##x,_p10##y,z,c), I[97] = (T)(img)(_n3##x,_p10##y,z,c), I[98] = (T)(img)(_n4##x,_p10##y,z,c), I[99] = (T)(img)(_n5##x,_p10##y,z,c), I[100] = (T)(img)(_n6##x,_p10##y,z,c), I[101] = (T)(img)(_n7##x,_p10##y,z,c), I[102] = (T)(img)(_n8##x,_p10##y,z,c), I[103] = (T)(img)(_n9##x,_p10##y,z,c), I[104] = (T)(img)(_n10##x,_p10##y,z,c), I[105] = (T)(img)(_n11##x,_p10##y,z,c), I[106] = (T)(img)(_n12##x,_p10##y,z,c), I[107] = (T)(img)(_n13##x,_p10##y,z,c), \ + I[108] = (T)(img)(_p13##x,_p9##y,z,c), I[109] = (T)(img)(_p12##x,_p9##y,z,c), I[110] = (T)(img)(_p11##x,_p9##y,z,c), I[111] = (T)(img)(_p10##x,_p9##y,z,c), I[112] = (T)(img)(_p9##x,_p9##y,z,c), I[113] = (T)(img)(_p8##x,_p9##y,z,c), I[114] = (T)(img)(_p7##x,_p9##y,z,c), I[115] = (T)(img)(_p6##x,_p9##y,z,c), I[116] = (T)(img)(_p5##x,_p9##y,z,c), I[117] = (T)(img)(_p4##x,_p9##y,z,c), I[118] = (T)(img)(_p3##x,_p9##y,z,c), I[119] = (T)(img)(_p2##x,_p9##y,z,c), I[120] = (T)(img)(_p1##x,_p9##y,z,c), I[121] = (T)(img)(x,_p9##y,z,c), I[122] = (T)(img)(_n1##x,_p9##y,z,c), I[123] = (T)(img)(_n2##x,_p9##y,z,c), I[124] = (T)(img)(_n3##x,_p9##y,z,c), I[125] = (T)(img)(_n4##x,_p9##y,z,c), I[126] = (T)(img)(_n5##x,_p9##y,z,c), I[127] = (T)(img)(_n6##x,_p9##y,z,c), I[128] = (T)(img)(_n7##x,_p9##y,z,c), I[129] = (T)(img)(_n8##x,_p9##y,z,c), I[130] = (T)(img)(_n9##x,_p9##y,z,c), I[131] = (T)(img)(_n10##x,_p9##y,z,c), I[132] = (T)(img)(_n11##x,_p9##y,z,c), I[133] = (T)(img)(_n12##x,_p9##y,z,c), I[134] = (T)(img)(_n13##x,_p9##y,z,c), \ + I[135] = (T)(img)(_p13##x,_p8##y,z,c), I[136] = (T)(img)(_p12##x,_p8##y,z,c), I[137] = (T)(img)(_p11##x,_p8##y,z,c), I[138] = (T)(img)(_p10##x,_p8##y,z,c), I[139] = (T)(img)(_p9##x,_p8##y,z,c), I[140] = (T)(img)(_p8##x,_p8##y,z,c), I[141] = (T)(img)(_p7##x,_p8##y,z,c), I[142] = (T)(img)(_p6##x,_p8##y,z,c), I[143] = (T)(img)(_p5##x,_p8##y,z,c), I[144] = (T)(img)(_p4##x,_p8##y,z,c), I[145] = (T)(img)(_p3##x,_p8##y,z,c), I[146] = (T)(img)(_p2##x,_p8##y,z,c), I[147] = (T)(img)(_p1##x,_p8##y,z,c), I[148] = (T)(img)(x,_p8##y,z,c), I[149] = (T)(img)(_n1##x,_p8##y,z,c), I[150] = (T)(img)(_n2##x,_p8##y,z,c), I[151] = (T)(img)(_n3##x,_p8##y,z,c), I[152] = (T)(img)(_n4##x,_p8##y,z,c), I[153] = (T)(img)(_n5##x,_p8##y,z,c), I[154] = (T)(img)(_n6##x,_p8##y,z,c), I[155] = (T)(img)(_n7##x,_p8##y,z,c), I[156] = (T)(img)(_n8##x,_p8##y,z,c), I[157] = (T)(img)(_n9##x,_p8##y,z,c), I[158] = (T)(img)(_n10##x,_p8##y,z,c), I[159] = (T)(img)(_n11##x,_p8##y,z,c), I[160] = (T)(img)(_n12##x,_p8##y,z,c), I[161] = (T)(img)(_n13##x,_p8##y,z,c), \ + I[162] = (T)(img)(_p13##x,_p7##y,z,c), I[163] = (T)(img)(_p12##x,_p7##y,z,c), I[164] = (T)(img)(_p11##x,_p7##y,z,c), I[165] = (T)(img)(_p10##x,_p7##y,z,c), I[166] = (T)(img)(_p9##x,_p7##y,z,c), I[167] = (T)(img)(_p8##x,_p7##y,z,c), I[168] = (T)(img)(_p7##x,_p7##y,z,c), I[169] = (T)(img)(_p6##x,_p7##y,z,c), I[170] = (T)(img)(_p5##x,_p7##y,z,c), I[171] = (T)(img)(_p4##x,_p7##y,z,c), I[172] = (T)(img)(_p3##x,_p7##y,z,c), I[173] = (T)(img)(_p2##x,_p7##y,z,c), I[174] = (T)(img)(_p1##x,_p7##y,z,c), I[175] = (T)(img)(x,_p7##y,z,c), I[176] = (T)(img)(_n1##x,_p7##y,z,c), I[177] = (T)(img)(_n2##x,_p7##y,z,c), I[178] = (T)(img)(_n3##x,_p7##y,z,c), I[179] = (T)(img)(_n4##x,_p7##y,z,c), I[180] = (T)(img)(_n5##x,_p7##y,z,c), I[181] = (T)(img)(_n6##x,_p7##y,z,c), I[182] = (T)(img)(_n7##x,_p7##y,z,c), I[183] = (T)(img)(_n8##x,_p7##y,z,c), I[184] = (T)(img)(_n9##x,_p7##y,z,c), I[185] = (T)(img)(_n10##x,_p7##y,z,c), I[186] = (T)(img)(_n11##x,_p7##y,z,c), I[187] = (T)(img)(_n12##x,_p7##y,z,c), I[188] = (T)(img)(_n13##x,_p7##y,z,c), \ + I[189] = (T)(img)(_p13##x,_p6##y,z,c), I[190] = (T)(img)(_p12##x,_p6##y,z,c), I[191] = (T)(img)(_p11##x,_p6##y,z,c), I[192] = (T)(img)(_p10##x,_p6##y,z,c), I[193] = (T)(img)(_p9##x,_p6##y,z,c), I[194] = (T)(img)(_p8##x,_p6##y,z,c), I[195] = (T)(img)(_p7##x,_p6##y,z,c), I[196] = (T)(img)(_p6##x,_p6##y,z,c), I[197] = (T)(img)(_p5##x,_p6##y,z,c), I[198] = (T)(img)(_p4##x,_p6##y,z,c), I[199] = (T)(img)(_p3##x,_p6##y,z,c), I[200] = (T)(img)(_p2##x,_p6##y,z,c), I[201] = (T)(img)(_p1##x,_p6##y,z,c), I[202] = (T)(img)(x,_p6##y,z,c), I[203] = (T)(img)(_n1##x,_p6##y,z,c), I[204] = (T)(img)(_n2##x,_p6##y,z,c), I[205] = (T)(img)(_n3##x,_p6##y,z,c), I[206] = (T)(img)(_n4##x,_p6##y,z,c), I[207] = (T)(img)(_n5##x,_p6##y,z,c), I[208] = (T)(img)(_n6##x,_p6##y,z,c), I[209] = (T)(img)(_n7##x,_p6##y,z,c), I[210] = (T)(img)(_n8##x,_p6##y,z,c), I[211] = (T)(img)(_n9##x,_p6##y,z,c), I[212] = (T)(img)(_n10##x,_p6##y,z,c), I[213] = (T)(img)(_n11##x,_p6##y,z,c), I[214] = (T)(img)(_n12##x,_p6##y,z,c), I[215] = (T)(img)(_n13##x,_p6##y,z,c), \ + I[216] = (T)(img)(_p13##x,_p5##y,z,c), I[217] = (T)(img)(_p12##x,_p5##y,z,c), I[218] = (T)(img)(_p11##x,_p5##y,z,c), I[219] = (T)(img)(_p10##x,_p5##y,z,c), I[220] = (T)(img)(_p9##x,_p5##y,z,c), I[221] = (T)(img)(_p8##x,_p5##y,z,c), I[222] = (T)(img)(_p7##x,_p5##y,z,c), I[223] = (T)(img)(_p6##x,_p5##y,z,c), I[224] = (T)(img)(_p5##x,_p5##y,z,c), I[225] = (T)(img)(_p4##x,_p5##y,z,c), I[226] = (T)(img)(_p3##x,_p5##y,z,c), I[227] = (T)(img)(_p2##x,_p5##y,z,c), I[228] = (T)(img)(_p1##x,_p5##y,z,c), I[229] = (T)(img)(x,_p5##y,z,c), I[230] = (T)(img)(_n1##x,_p5##y,z,c), I[231] = (T)(img)(_n2##x,_p5##y,z,c), I[232] = (T)(img)(_n3##x,_p5##y,z,c), I[233] = (T)(img)(_n4##x,_p5##y,z,c), I[234] = (T)(img)(_n5##x,_p5##y,z,c), I[235] = (T)(img)(_n6##x,_p5##y,z,c), I[236] = (T)(img)(_n7##x,_p5##y,z,c), I[237] = (T)(img)(_n8##x,_p5##y,z,c), I[238] = (T)(img)(_n9##x,_p5##y,z,c), I[239] = (T)(img)(_n10##x,_p5##y,z,c), I[240] = (T)(img)(_n11##x,_p5##y,z,c), I[241] = (T)(img)(_n12##x,_p5##y,z,c), I[242] = (T)(img)(_n13##x,_p5##y,z,c), \ + I[243] = (T)(img)(_p13##x,_p4##y,z,c), I[244] = (T)(img)(_p12##x,_p4##y,z,c), I[245] = (T)(img)(_p11##x,_p4##y,z,c), I[246] = (T)(img)(_p10##x,_p4##y,z,c), I[247] = (T)(img)(_p9##x,_p4##y,z,c), I[248] = (T)(img)(_p8##x,_p4##y,z,c), I[249] = (T)(img)(_p7##x,_p4##y,z,c), I[250] = (T)(img)(_p6##x,_p4##y,z,c), I[251] = (T)(img)(_p5##x,_p4##y,z,c), I[252] = (T)(img)(_p4##x,_p4##y,z,c), I[253] = (T)(img)(_p3##x,_p4##y,z,c), I[254] = (T)(img)(_p2##x,_p4##y,z,c), I[255] = (T)(img)(_p1##x,_p4##y,z,c), I[256] = (T)(img)(x,_p4##y,z,c), I[257] = (T)(img)(_n1##x,_p4##y,z,c), I[258] = (T)(img)(_n2##x,_p4##y,z,c), I[259] = (T)(img)(_n3##x,_p4##y,z,c), I[260] = (T)(img)(_n4##x,_p4##y,z,c), I[261] = (T)(img)(_n5##x,_p4##y,z,c), I[262] = (T)(img)(_n6##x,_p4##y,z,c), I[263] = (T)(img)(_n7##x,_p4##y,z,c), I[264] = (T)(img)(_n8##x,_p4##y,z,c), I[265] = (T)(img)(_n9##x,_p4##y,z,c), I[266] = (T)(img)(_n10##x,_p4##y,z,c), I[267] = (T)(img)(_n11##x,_p4##y,z,c), I[268] = (T)(img)(_n12##x,_p4##y,z,c), I[269] = (T)(img)(_n13##x,_p4##y,z,c), \ + I[270] = (T)(img)(_p13##x,_p3##y,z,c), I[271] = (T)(img)(_p12##x,_p3##y,z,c), I[272] = (T)(img)(_p11##x,_p3##y,z,c), I[273] = (T)(img)(_p10##x,_p3##y,z,c), I[274] = (T)(img)(_p9##x,_p3##y,z,c), I[275] = (T)(img)(_p8##x,_p3##y,z,c), I[276] = (T)(img)(_p7##x,_p3##y,z,c), I[277] = (T)(img)(_p6##x,_p3##y,z,c), I[278] = (T)(img)(_p5##x,_p3##y,z,c), I[279] = (T)(img)(_p4##x,_p3##y,z,c), I[280] = (T)(img)(_p3##x,_p3##y,z,c), I[281] = (T)(img)(_p2##x,_p3##y,z,c), I[282] = (T)(img)(_p1##x,_p3##y,z,c), I[283] = (T)(img)(x,_p3##y,z,c), I[284] = (T)(img)(_n1##x,_p3##y,z,c), I[285] = (T)(img)(_n2##x,_p3##y,z,c), I[286] = (T)(img)(_n3##x,_p3##y,z,c), I[287] = (T)(img)(_n4##x,_p3##y,z,c), I[288] = (T)(img)(_n5##x,_p3##y,z,c), I[289] = (T)(img)(_n6##x,_p3##y,z,c), I[290] = (T)(img)(_n7##x,_p3##y,z,c), I[291] = (T)(img)(_n8##x,_p3##y,z,c), I[292] = (T)(img)(_n9##x,_p3##y,z,c), I[293] = (T)(img)(_n10##x,_p3##y,z,c), I[294] = (T)(img)(_n11##x,_p3##y,z,c), I[295] = (T)(img)(_n12##x,_p3##y,z,c), I[296] = (T)(img)(_n13##x,_p3##y,z,c), \ + I[297] = (T)(img)(_p13##x,_p2##y,z,c), I[298] = (T)(img)(_p12##x,_p2##y,z,c), I[299] = (T)(img)(_p11##x,_p2##y,z,c), I[300] = (T)(img)(_p10##x,_p2##y,z,c), I[301] = (T)(img)(_p9##x,_p2##y,z,c), I[302] = (T)(img)(_p8##x,_p2##y,z,c), I[303] = (T)(img)(_p7##x,_p2##y,z,c), I[304] = (T)(img)(_p6##x,_p2##y,z,c), I[305] = (T)(img)(_p5##x,_p2##y,z,c), I[306] = (T)(img)(_p4##x,_p2##y,z,c), I[307] = (T)(img)(_p3##x,_p2##y,z,c), I[308] = (T)(img)(_p2##x,_p2##y,z,c), I[309] = (T)(img)(_p1##x,_p2##y,z,c), I[310] = (T)(img)(x,_p2##y,z,c), I[311] = (T)(img)(_n1##x,_p2##y,z,c), I[312] = (T)(img)(_n2##x,_p2##y,z,c), I[313] = (T)(img)(_n3##x,_p2##y,z,c), I[314] = (T)(img)(_n4##x,_p2##y,z,c), I[315] = (T)(img)(_n5##x,_p2##y,z,c), I[316] = (T)(img)(_n6##x,_p2##y,z,c), I[317] = (T)(img)(_n7##x,_p2##y,z,c), I[318] = (T)(img)(_n8##x,_p2##y,z,c), I[319] = (T)(img)(_n9##x,_p2##y,z,c), I[320] = (T)(img)(_n10##x,_p2##y,z,c), I[321] = (T)(img)(_n11##x,_p2##y,z,c), I[322] = (T)(img)(_n12##x,_p2##y,z,c), I[323] = (T)(img)(_n13##x,_p2##y,z,c), \ + I[324] = (T)(img)(_p13##x,_p1##y,z,c), I[325] = (T)(img)(_p12##x,_p1##y,z,c), I[326] = (T)(img)(_p11##x,_p1##y,z,c), I[327] = (T)(img)(_p10##x,_p1##y,z,c), I[328] = (T)(img)(_p9##x,_p1##y,z,c), I[329] = (T)(img)(_p8##x,_p1##y,z,c), I[330] = (T)(img)(_p7##x,_p1##y,z,c), I[331] = (T)(img)(_p6##x,_p1##y,z,c), I[332] = (T)(img)(_p5##x,_p1##y,z,c), I[333] = (T)(img)(_p4##x,_p1##y,z,c), I[334] = (T)(img)(_p3##x,_p1##y,z,c), I[335] = (T)(img)(_p2##x,_p1##y,z,c), I[336] = (T)(img)(_p1##x,_p1##y,z,c), I[337] = (T)(img)(x,_p1##y,z,c), I[338] = (T)(img)(_n1##x,_p1##y,z,c), I[339] = (T)(img)(_n2##x,_p1##y,z,c), I[340] = (T)(img)(_n3##x,_p1##y,z,c), I[341] = (T)(img)(_n4##x,_p1##y,z,c), I[342] = (T)(img)(_n5##x,_p1##y,z,c), I[343] = (T)(img)(_n6##x,_p1##y,z,c), I[344] = (T)(img)(_n7##x,_p1##y,z,c), I[345] = (T)(img)(_n8##x,_p1##y,z,c), I[346] = (T)(img)(_n9##x,_p1##y,z,c), I[347] = (T)(img)(_n10##x,_p1##y,z,c), I[348] = (T)(img)(_n11##x,_p1##y,z,c), I[349] = (T)(img)(_n12##x,_p1##y,z,c), I[350] = (T)(img)(_n13##x,_p1##y,z,c), \ + I[351] = (T)(img)(_p13##x,y,z,c), I[352] = (T)(img)(_p12##x,y,z,c), I[353] = (T)(img)(_p11##x,y,z,c), I[354] = (T)(img)(_p10##x,y,z,c), I[355] = (T)(img)(_p9##x,y,z,c), I[356] = (T)(img)(_p8##x,y,z,c), I[357] = (T)(img)(_p7##x,y,z,c), I[358] = (T)(img)(_p6##x,y,z,c), I[359] = (T)(img)(_p5##x,y,z,c), I[360] = (T)(img)(_p4##x,y,z,c), I[361] = (T)(img)(_p3##x,y,z,c), I[362] = (T)(img)(_p2##x,y,z,c), I[363] = (T)(img)(_p1##x,y,z,c), I[364] = (T)(img)(x,y,z,c), I[365] = (T)(img)(_n1##x,y,z,c), I[366] = (T)(img)(_n2##x,y,z,c), I[367] = (T)(img)(_n3##x,y,z,c), I[368] = (T)(img)(_n4##x,y,z,c), I[369] = (T)(img)(_n5##x,y,z,c), I[370] = (T)(img)(_n6##x,y,z,c), I[371] = (T)(img)(_n7##x,y,z,c), I[372] = (T)(img)(_n8##x,y,z,c), I[373] = (T)(img)(_n9##x,y,z,c), I[374] = (T)(img)(_n10##x,y,z,c), I[375] = (T)(img)(_n11##x,y,z,c), I[376] = (T)(img)(_n12##x,y,z,c), I[377] = (T)(img)(_n13##x,y,z,c), \ + I[378] = (T)(img)(_p13##x,_n1##y,z,c), I[379] = (T)(img)(_p12##x,_n1##y,z,c), I[380] = (T)(img)(_p11##x,_n1##y,z,c), I[381] = (T)(img)(_p10##x,_n1##y,z,c), I[382] = (T)(img)(_p9##x,_n1##y,z,c), I[383] = (T)(img)(_p8##x,_n1##y,z,c), I[384] = (T)(img)(_p7##x,_n1##y,z,c), I[385] = (T)(img)(_p6##x,_n1##y,z,c), I[386] = (T)(img)(_p5##x,_n1##y,z,c), I[387] = (T)(img)(_p4##x,_n1##y,z,c), I[388] = (T)(img)(_p3##x,_n1##y,z,c), I[389] = (T)(img)(_p2##x,_n1##y,z,c), I[390] = (T)(img)(_p1##x,_n1##y,z,c), I[391] = (T)(img)(x,_n1##y,z,c), I[392] = (T)(img)(_n1##x,_n1##y,z,c), I[393] = (T)(img)(_n2##x,_n1##y,z,c), I[394] = (T)(img)(_n3##x,_n1##y,z,c), I[395] = (T)(img)(_n4##x,_n1##y,z,c), I[396] = (T)(img)(_n5##x,_n1##y,z,c), I[397] = (T)(img)(_n6##x,_n1##y,z,c), I[398] = (T)(img)(_n7##x,_n1##y,z,c), I[399] = (T)(img)(_n8##x,_n1##y,z,c), I[400] = (T)(img)(_n9##x,_n1##y,z,c), I[401] = (T)(img)(_n10##x,_n1##y,z,c), I[402] = (T)(img)(_n11##x,_n1##y,z,c), I[403] = (T)(img)(_n12##x,_n1##y,z,c), I[404] = (T)(img)(_n13##x,_n1##y,z,c), \ + I[405] = (T)(img)(_p13##x,_n2##y,z,c), I[406] = (T)(img)(_p12##x,_n2##y,z,c), I[407] = (T)(img)(_p11##x,_n2##y,z,c), I[408] = (T)(img)(_p10##x,_n2##y,z,c), I[409] = (T)(img)(_p9##x,_n2##y,z,c), I[410] = (T)(img)(_p8##x,_n2##y,z,c), I[411] = (T)(img)(_p7##x,_n2##y,z,c), I[412] = (T)(img)(_p6##x,_n2##y,z,c), I[413] = (T)(img)(_p5##x,_n2##y,z,c), I[414] = (T)(img)(_p4##x,_n2##y,z,c), I[415] = (T)(img)(_p3##x,_n2##y,z,c), I[416] = (T)(img)(_p2##x,_n2##y,z,c), I[417] = (T)(img)(_p1##x,_n2##y,z,c), I[418] = (T)(img)(x,_n2##y,z,c), I[419] = (T)(img)(_n1##x,_n2##y,z,c), I[420] = (T)(img)(_n2##x,_n2##y,z,c), I[421] = (T)(img)(_n3##x,_n2##y,z,c), I[422] = (T)(img)(_n4##x,_n2##y,z,c), I[423] = (T)(img)(_n5##x,_n2##y,z,c), I[424] = (T)(img)(_n6##x,_n2##y,z,c), I[425] = (T)(img)(_n7##x,_n2##y,z,c), I[426] = (T)(img)(_n8##x,_n2##y,z,c), I[427] = (T)(img)(_n9##x,_n2##y,z,c), I[428] = (T)(img)(_n10##x,_n2##y,z,c), I[429] = (T)(img)(_n11##x,_n2##y,z,c), I[430] = (T)(img)(_n12##x,_n2##y,z,c), I[431] = (T)(img)(_n13##x,_n2##y,z,c), \ + I[432] = (T)(img)(_p13##x,_n3##y,z,c), I[433] = (T)(img)(_p12##x,_n3##y,z,c), I[434] = (T)(img)(_p11##x,_n3##y,z,c), I[435] = (T)(img)(_p10##x,_n3##y,z,c), I[436] = (T)(img)(_p9##x,_n3##y,z,c), I[437] = (T)(img)(_p8##x,_n3##y,z,c), I[438] = (T)(img)(_p7##x,_n3##y,z,c), I[439] = (T)(img)(_p6##x,_n3##y,z,c), I[440] = (T)(img)(_p5##x,_n3##y,z,c), I[441] = (T)(img)(_p4##x,_n3##y,z,c), I[442] = (T)(img)(_p3##x,_n3##y,z,c), I[443] = (T)(img)(_p2##x,_n3##y,z,c), I[444] = (T)(img)(_p1##x,_n3##y,z,c), I[445] = (T)(img)(x,_n3##y,z,c), I[446] = (T)(img)(_n1##x,_n3##y,z,c), I[447] = (T)(img)(_n2##x,_n3##y,z,c), I[448] = (T)(img)(_n3##x,_n3##y,z,c), I[449] = (T)(img)(_n4##x,_n3##y,z,c), I[450] = (T)(img)(_n5##x,_n3##y,z,c), I[451] = (T)(img)(_n6##x,_n3##y,z,c), I[452] = (T)(img)(_n7##x,_n3##y,z,c), I[453] = (T)(img)(_n8##x,_n3##y,z,c), I[454] = (T)(img)(_n9##x,_n3##y,z,c), I[455] = (T)(img)(_n10##x,_n3##y,z,c), I[456] = (T)(img)(_n11##x,_n3##y,z,c), I[457] = (T)(img)(_n12##x,_n3##y,z,c), I[458] = (T)(img)(_n13##x,_n3##y,z,c), \ + I[459] = (T)(img)(_p13##x,_n4##y,z,c), I[460] = (T)(img)(_p12##x,_n4##y,z,c), I[461] = (T)(img)(_p11##x,_n4##y,z,c), I[462] = (T)(img)(_p10##x,_n4##y,z,c), I[463] = (T)(img)(_p9##x,_n4##y,z,c), I[464] = (T)(img)(_p8##x,_n4##y,z,c), I[465] = (T)(img)(_p7##x,_n4##y,z,c), I[466] = (T)(img)(_p6##x,_n4##y,z,c), I[467] = (T)(img)(_p5##x,_n4##y,z,c), I[468] = (T)(img)(_p4##x,_n4##y,z,c), I[469] = (T)(img)(_p3##x,_n4##y,z,c), I[470] = (T)(img)(_p2##x,_n4##y,z,c), I[471] = (T)(img)(_p1##x,_n4##y,z,c), I[472] = (T)(img)(x,_n4##y,z,c), I[473] = (T)(img)(_n1##x,_n4##y,z,c), I[474] = (T)(img)(_n2##x,_n4##y,z,c), I[475] = (T)(img)(_n3##x,_n4##y,z,c), I[476] = (T)(img)(_n4##x,_n4##y,z,c), I[477] = (T)(img)(_n5##x,_n4##y,z,c), I[478] = (T)(img)(_n6##x,_n4##y,z,c), I[479] = (T)(img)(_n7##x,_n4##y,z,c), I[480] = (T)(img)(_n8##x,_n4##y,z,c), I[481] = (T)(img)(_n9##x,_n4##y,z,c), I[482] = (T)(img)(_n10##x,_n4##y,z,c), I[483] = (T)(img)(_n11##x,_n4##y,z,c), I[484] = (T)(img)(_n12##x,_n4##y,z,c), I[485] = (T)(img)(_n13##x,_n4##y,z,c), \ + I[486] = (T)(img)(_p13##x,_n5##y,z,c), I[487] = (T)(img)(_p12##x,_n5##y,z,c), I[488] = (T)(img)(_p11##x,_n5##y,z,c), I[489] = (T)(img)(_p10##x,_n5##y,z,c), I[490] = (T)(img)(_p9##x,_n5##y,z,c), I[491] = (T)(img)(_p8##x,_n5##y,z,c), I[492] = (T)(img)(_p7##x,_n5##y,z,c), I[493] = (T)(img)(_p6##x,_n5##y,z,c), I[494] = (T)(img)(_p5##x,_n5##y,z,c), I[495] = (T)(img)(_p4##x,_n5##y,z,c), I[496] = (T)(img)(_p3##x,_n5##y,z,c), I[497] = (T)(img)(_p2##x,_n5##y,z,c), I[498] = (T)(img)(_p1##x,_n5##y,z,c), I[499] = (T)(img)(x,_n5##y,z,c), I[500] = (T)(img)(_n1##x,_n5##y,z,c), I[501] = (T)(img)(_n2##x,_n5##y,z,c), I[502] = (T)(img)(_n3##x,_n5##y,z,c), I[503] = (T)(img)(_n4##x,_n5##y,z,c), I[504] = (T)(img)(_n5##x,_n5##y,z,c), I[505] = (T)(img)(_n6##x,_n5##y,z,c), I[506] = (T)(img)(_n7##x,_n5##y,z,c), I[507] = (T)(img)(_n8##x,_n5##y,z,c), I[508] = (T)(img)(_n9##x,_n5##y,z,c), I[509] = (T)(img)(_n10##x,_n5##y,z,c), I[510] = (T)(img)(_n11##x,_n5##y,z,c), I[511] = (T)(img)(_n12##x,_n5##y,z,c), I[512] = (T)(img)(_n13##x,_n5##y,z,c), \ + I[513] = (T)(img)(_p13##x,_n6##y,z,c), I[514] = (T)(img)(_p12##x,_n6##y,z,c), I[515] = (T)(img)(_p11##x,_n6##y,z,c), I[516] = (T)(img)(_p10##x,_n6##y,z,c), I[517] = (T)(img)(_p9##x,_n6##y,z,c), I[518] = (T)(img)(_p8##x,_n6##y,z,c), I[519] = (T)(img)(_p7##x,_n6##y,z,c), I[520] = (T)(img)(_p6##x,_n6##y,z,c), I[521] = (T)(img)(_p5##x,_n6##y,z,c), I[522] = (T)(img)(_p4##x,_n6##y,z,c), I[523] = (T)(img)(_p3##x,_n6##y,z,c), I[524] = (T)(img)(_p2##x,_n6##y,z,c), I[525] = (T)(img)(_p1##x,_n6##y,z,c), I[526] = (T)(img)(x,_n6##y,z,c), I[527] = (T)(img)(_n1##x,_n6##y,z,c), I[528] = (T)(img)(_n2##x,_n6##y,z,c), I[529] = (T)(img)(_n3##x,_n6##y,z,c), I[530] = (T)(img)(_n4##x,_n6##y,z,c), I[531] = (T)(img)(_n5##x,_n6##y,z,c), I[532] = (T)(img)(_n6##x,_n6##y,z,c), I[533] = (T)(img)(_n7##x,_n6##y,z,c), I[534] = (T)(img)(_n8##x,_n6##y,z,c), I[535] = (T)(img)(_n9##x,_n6##y,z,c), I[536] = (T)(img)(_n10##x,_n6##y,z,c), I[537] = (T)(img)(_n11##x,_n6##y,z,c), I[538] = (T)(img)(_n12##x,_n6##y,z,c), I[539] = (T)(img)(_n13##x,_n6##y,z,c), \ + I[540] = (T)(img)(_p13##x,_n7##y,z,c), I[541] = (T)(img)(_p12##x,_n7##y,z,c), I[542] = (T)(img)(_p11##x,_n7##y,z,c), I[543] = (T)(img)(_p10##x,_n7##y,z,c), I[544] = (T)(img)(_p9##x,_n7##y,z,c), I[545] = (T)(img)(_p8##x,_n7##y,z,c), I[546] = (T)(img)(_p7##x,_n7##y,z,c), I[547] = (T)(img)(_p6##x,_n7##y,z,c), I[548] = (T)(img)(_p5##x,_n7##y,z,c), I[549] = (T)(img)(_p4##x,_n7##y,z,c), I[550] = (T)(img)(_p3##x,_n7##y,z,c), I[551] = (T)(img)(_p2##x,_n7##y,z,c), I[552] = (T)(img)(_p1##x,_n7##y,z,c), I[553] = (T)(img)(x,_n7##y,z,c), I[554] = (T)(img)(_n1##x,_n7##y,z,c), I[555] = (T)(img)(_n2##x,_n7##y,z,c), I[556] = (T)(img)(_n3##x,_n7##y,z,c), I[557] = (T)(img)(_n4##x,_n7##y,z,c), I[558] = (T)(img)(_n5##x,_n7##y,z,c), I[559] = (T)(img)(_n6##x,_n7##y,z,c), I[560] = (T)(img)(_n7##x,_n7##y,z,c), I[561] = (T)(img)(_n8##x,_n7##y,z,c), I[562] = (T)(img)(_n9##x,_n7##y,z,c), I[563] = (T)(img)(_n10##x,_n7##y,z,c), I[564] = (T)(img)(_n11##x,_n7##y,z,c), I[565] = (T)(img)(_n12##x,_n7##y,z,c), I[566] = (T)(img)(_n13##x,_n7##y,z,c), \ + I[567] = (T)(img)(_p13##x,_n8##y,z,c), I[568] = (T)(img)(_p12##x,_n8##y,z,c), I[569] = (T)(img)(_p11##x,_n8##y,z,c), I[570] = (T)(img)(_p10##x,_n8##y,z,c), I[571] = (T)(img)(_p9##x,_n8##y,z,c), I[572] = (T)(img)(_p8##x,_n8##y,z,c), I[573] = (T)(img)(_p7##x,_n8##y,z,c), I[574] = (T)(img)(_p6##x,_n8##y,z,c), I[575] = (T)(img)(_p5##x,_n8##y,z,c), I[576] = (T)(img)(_p4##x,_n8##y,z,c), I[577] = (T)(img)(_p3##x,_n8##y,z,c), I[578] = (T)(img)(_p2##x,_n8##y,z,c), I[579] = (T)(img)(_p1##x,_n8##y,z,c), I[580] = (T)(img)(x,_n8##y,z,c), I[581] = (T)(img)(_n1##x,_n8##y,z,c), I[582] = (T)(img)(_n2##x,_n8##y,z,c), I[583] = (T)(img)(_n3##x,_n8##y,z,c), I[584] = (T)(img)(_n4##x,_n8##y,z,c), I[585] = (T)(img)(_n5##x,_n8##y,z,c), I[586] = (T)(img)(_n6##x,_n8##y,z,c), I[587] = (T)(img)(_n7##x,_n8##y,z,c), I[588] = (T)(img)(_n8##x,_n8##y,z,c), I[589] = (T)(img)(_n9##x,_n8##y,z,c), I[590] = (T)(img)(_n10##x,_n8##y,z,c), I[591] = (T)(img)(_n11##x,_n8##y,z,c), I[592] = (T)(img)(_n12##x,_n8##y,z,c), I[593] = (T)(img)(_n13##x,_n8##y,z,c), \ + I[594] = (T)(img)(_p13##x,_n9##y,z,c), I[595] = (T)(img)(_p12##x,_n9##y,z,c), I[596] = (T)(img)(_p11##x,_n9##y,z,c), I[597] = (T)(img)(_p10##x,_n9##y,z,c), I[598] = (T)(img)(_p9##x,_n9##y,z,c), I[599] = (T)(img)(_p8##x,_n9##y,z,c), I[600] = (T)(img)(_p7##x,_n9##y,z,c), I[601] = (T)(img)(_p6##x,_n9##y,z,c), I[602] = (T)(img)(_p5##x,_n9##y,z,c), I[603] = (T)(img)(_p4##x,_n9##y,z,c), I[604] = (T)(img)(_p3##x,_n9##y,z,c), I[605] = (T)(img)(_p2##x,_n9##y,z,c), I[606] = (T)(img)(_p1##x,_n9##y,z,c), I[607] = (T)(img)(x,_n9##y,z,c), I[608] = (T)(img)(_n1##x,_n9##y,z,c), I[609] = (T)(img)(_n2##x,_n9##y,z,c), I[610] = (T)(img)(_n3##x,_n9##y,z,c), I[611] = (T)(img)(_n4##x,_n9##y,z,c), I[612] = (T)(img)(_n5##x,_n9##y,z,c), I[613] = (T)(img)(_n6##x,_n9##y,z,c), I[614] = (T)(img)(_n7##x,_n9##y,z,c), I[615] = (T)(img)(_n8##x,_n9##y,z,c), I[616] = (T)(img)(_n9##x,_n9##y,z,c), I[617] = (T)(img)(_n10##x,_n9##y,z,c), I[618] = (T)(img)(_n11##x,_n9##y,z,c), I[619] = (T)(img)(_n12##x,_n9##y,z,c), I[620] = (T)(img)(_n13##x,_n9##y,z,c), \ + I[621] = (T)(img)(_p13##x,_n10##y,z,c), I[622] = (T)(img)(_p12##x,_n10##y,z,c), I[623] = (T)(img)(_p11##x,_n10##y,z,c), I[624] = (T)(img)(_p10##x,_n10##y,z,c), I[625] = (T)(img)(_p9##x,_n10##y,z,c), I[626] = (T)(img)(_p8##x,_n10##y,z,c), I[627] = (T)(img)(_p7##x,_n10##y,z,c), I[628] = (T)(img)(_p6##x,_n10##y,z,c), I[629] = (T)(img)(_p5##x,_n10##y,z,c), I[630] = (T)(img)(_p4##x,_n10##y,z,c), I[631] = (T)(img)(_p3##x,_n10##y,z,c), I[632] = (T)(img)(_p2##x,_n10##y,z,c), I[633] = (T)(img)(_p1##x,_n10##y,z,c), I[634] = (T)(img)(x,_n10##y,z,c), I[635] = (T)(img)(_n1##x,_n10##y,z,c), I[636] = (T)(img)(_n2##x,_n10##y,z,c), I[637] = (T)(img)(_n3##x,_n10##y,z,c), I[638] = (T)(img)(_n4##x,_n10##y,z,c), I[639] = (T)(img)(_n5##x,_n10##y,z,c), I[640] = (T)(img)(_n6##x,_n10##y,z,c), I[641] = (T)(img)(_n7##x,_n10##y,z,c), I[642] = (T)(img)(_n8##x,_n10##y,z,c), I[643] = (T)(img)(_n9##x,_n10##y,z,c), I[644] = (T)(img)(_n10##x,_n10##y,z,c), I[645] = (T)(img)(_n11##x,_n10##y,z,c), I[646] = (T)(img)(_n12##x,_n10##y,z,c), I[647] = (T)(img)(_n13##x,_n10##y,z,c), \ + I[648] = (T)(img)(_p13##x,_n11##y,z,c), I[649] = (T)(img)(_p12##x,_n11##y,z,c), I[650] = (T)(img)(_p11##x,_n11##y,z,c), I[651] = (T)(img)(_p10##x,_n11##y,z,c), I[652] = (T)(img)(_p9##x,_n11##y,z,c), I[653] = (T)(img)(_p8##x,_n11##y,z,c), I[654] = (T)(img)(_p7##x,_n11##y,z,c), I[655] = (T)(img)(_p6##x,_n11##y,z,c), I[656] = (T)(img)(_p5##x,_n11##y,z,c), I[657] = (T)(img)(_p4##x,_n11##y,z,c), I[658] = (T)(img)(_p3##x,_n11##y,z,c), I[659] = (T)(img)(_p2##x,_n11##y,z,c), I[660] = (T)(img)(_p1##x,_n11##y,z,c), I[661] = (T)(img)(x,_n11##y,z,c), I[662] = (T)(img)(_n1##x,_n11##y,z,c), I[663] = (T)(img)(_n2##x,_n11##y,z,c), I[664] = (T)(img)(_n3##x,_n11##y,z,c), I[665] = (T)(img)(_n4##x,_n11##y,z,c), I[666] = (T)(img)(_n5##x,_n11##y,z,c), I[667] = (T)(img)(_n6##x,_n11##y,z,c), I[668] = (T)(img)(_n7##x,_n11##y,z,c), I[669] = (T)(img)(_n8##x,_n11##y,z,c), I[670] = (T)(img)(_n9##x,_n11##y,z,c), I[671] = (T)(img)(_n10##x,_n11##y,z,c), I[672] = (T)(img)(_n11##x,_n11##y,z,c), I[673] = (T)(img)(_n12##x,_n11##y,z,c), I[674] = (T)(img)(_n13##x,_n11##y,z,c), \ + I[675] = (T)(img)(_p13##x,_n12##y,z,c), I[676] = (T)(img)(_p12##x,_n12##y,z,c), I[677] = (T)(img)(_p11##x,_n12##y,z,c), I[678] = (T)(img)(_p10##x,_n12##y,z,c), I[679] = (T)(img)(_p9##x,_n12##y,z,c), I[680] = (T)(img)(_p8##x,_n12##y,z,c), I[681] = (T)(img)(_p7##x,_n12##y,z,c), I[682] = (T)(img)(_p6##x,_n12##y,z,c), I[683] = (T)(img)(_p5##x,_n12##y,z,c), I[684] = (T)(img)(_p4##x,_n12##y,z,c), I[685] = (T)(img)(_p3##x,_n12##y,z,c), I[686] = (T)(img)(_p2##x,_n12##y,z,c), I[687] = (T)(img)(_p1##x,_n12##y,z,c), I[688] = (T)(img)(x,_n12##y,z,c), I[689] = (T)(img)(_n1##x,_n12##y,z,c), I[690] = (T)(img)(_n2##x,_n12##y,z,c), I[691] = (T)(img)(_n3##x,_n12##y,z,c), I[692] = (T)(img)(_n4##x,_n12##y,z,c), I[693] = (T)(img)(_n5##x,_n12##y,z,c), I[694] = (T)(img)(_n6##x,_n12##y,z,c), I[695] = (T)(img)(_n7##x,_n12##y,z,c), I[696] = (T)(img)(_n8##x,_n12##y,z,c), I[697] = (T)(img)(_n9##x,_n12##y,z,c), I[698] = (T)(img)(_n10##x,_n12##y,z,c), I[699] = (T)(img)(_n11##x,_n12##y,z,c), I[700] = (T)(img)(_n12##x,_n12##y,z,c), I[701] = (T)(img)(_n13##x,_n12##y,z,c), \ + I[702] = (T)(img)(_p13##x,_n13##y,z,c), I[703] = (T)(img)(_p12##x,_n13##y,z,c), I[704] = (T)(img)(_p11##x,_n13##y,z,c), I[705] = (T)(img)(_p10##x,_n13##y,z,c), I[706] = (T)(img)(_p9##x,_n13##y,z,c), I[707] = (T)(img)(_p8##x,_n13##y,z,c), I[708] = (T)(img)(_p7##x,_n13##y,z,c), I[709] = (T)(img)(_p6##x,_n13##y,z,c), I[710] = (T)(img)(_p5##x,_n13##y,z,c), I[711] = (T)(img)(_p4##x,_n13##y,z,c), I[712] = (T)(img)(_p3##x,_n13##y,z,c), I[713] = (T)(img)(_p2##x,_n13##y,z,c), I[714] = (T)(img)(_p1##x,_n13##y,z,c), I[715] = (T)(img)(x,_n13##y,z,c), I[716] = (T)(img)(_n1##x,_n13##y,z,c), I[717] = (T)(img)(_n2##x,_n13##y,z,c), I[718] = (T)(img)(_n3##x,_n13##y,z,c), I[719] = (T)(img)(_n4##x,_n13##y,z,c), I[720] = (T)(img)(_n5##x,_n13##y,z,c), I[721] = (T)(img)(_n6##x,_n13##y,z,c), I[722] = (T)(img)(_n7##x,_n13##y,z,c), I[723] = (T)(img)(_n8##x,_n13##y,z,c), I[724] = (T)(img)(_n9##x,_n13##y,z,c), I[725] = (T)(img)(_n10##x,_n13##y,z,c), I[726] = (T)(img)(_n11##x,_n13##y,z,c), I[727] = (T)(img)(_n12##x,_n13##y,z,c), I[728] = (T)(img)(_n13##x,_n13##y,z,c); + +// Define 28x28 loop macros +//------------------------- +#define cimg_for28(bound,i) for (int i = 0, \ + _p13##i = 0, _p12##i = 0, _p11##i = 0, _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11, \ + _n12##i = 12>=(int)(bound)?(int)(bound) - 1:12, \ + _n13##i = 13>=(int)(bound)?(int)(bound) - 1:13, \ + _n14##i = 14>=(int)(bound)?(int)(bound) - 1:14; \ + _n14##i<(int)(bound) || _n13##i==--_n14##i || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n14##i = _n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i, ++_n14##i) + +#define cimg_for28X(img,x) cimg_for28((img)._width,x) +#define cimg_for28Y(img,y) cimg_for28((img)._height,y) +#define cimg_for28Z(img,z) cimg_for28((img)._depth,z) +#define cimg_for28C(img,c) cimg_for28((img)._spectrum,c) +#define cimg_for28XY(img,x,y) cimg_for28Y(img,y) cimg_for28X(img,x) +#define cimg_for28XZ(img,x,z) cimg_for28Z(img,z) cimg_for28X(img,x) +#define cimg_for28XC(img,x,c) cimg_for28C(img,c) cimg_for28X(img,x) +#define cimg_for28YZ(img,y,z) cimg_for28Z(img,z) cimg_for28Y(img,y) +#define cimg_for28YC(img,y,c) cimg_for28C(img,c) cimg_for28Y(img,y) +#define cimg_for28ZC(img,z,c) cimg_for28C(img,c) cimg_for28Z(img,z) +#define cimg_for28XYZ(img,x,y,z) cimg_for28Z(img,z) cimg_for28XY(img,x,y) +#define cimg_for28XZC(img,x,z,c) cimg_for28C(img,c) cimg_for28XZ(img,x,z) +#define cimg_for28YZC(img,y,z,c) cimg_for28C(img,c) cimg_for28YZ(img,y,z) +#define cimg_for28XYZC(img,x,y,z,c) cimg_for28C(img,c) cimg_for28XYZ(img,x,y,z) + +#define cimg_for_in28(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p13##i = i - 13<0?0:i - 13, \ + _p12##i = i - 12<0?0:i - 12, \ + _p11##i = i - 11<0?0:i - 11, \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11, \ + _n12##i = i + 12>=(int)(bound)?(int)(bound) - 1:i + 12, \ + _n13##i = i + 13>=(int)(bound)?(int)(bound) - 1:i + 13, \ + _n14##i = i + 14>=(int)(bound)?(int)(bound) - 1:i + 14; \ + i<=(int)(i1) && (_n14##i<(int)(bound) || _n13##i==--_n14##i || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n14##i = _n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i, ++_n14##i) + +#define cimg_for_in28X(img,x0,x1,x) cimg_for_in28((img)._width,x0,x1,x) +#define cimg_for_in28Y(img,y0,y1,y) cimg_for_in28((img)._height,y0,y1,y) +#define cimg_for_in28Z(img,z0,z1,z) cimg_for_in28((img)._depth,z0,z1,z) +#define cimg_for_in28C(img,c0,c1,c) cimg_for_in28((img)._spectrum,c0,c1,c) +#define cimg_for_in28XY(img,x0,y0,x1,y1,x,y) cimg_for_in28Y(img,y0,y1,y) cimg_for_in28X(img,x0,x1,x) +#define cimg_for_in28XZ(img,x0,z0,x1,z1,x,z) cimg_for_in28Z(img,z0,z1,z) cimg_for_in28X(img,x0,x1,x) +#define cimg_for_in28XC(img,x0,c0,x1,c1,x,c) cimg_for_in28C(img,c0,c1,c) cimg_for_in28X(img,x0,x1,x) +#define cimg_for_in28YZ(img,y0,z0,y1,z1,y,z) cimg_for_in28Z(img,z0,z1,z) cimg_for_in28Y(img,y0,y1,y) +#define cimg_for_in28YC(img,y0,c0,y1,c1,y,c) cimg_for_in28C(img,c0,c1,c) cimg_for_in28Y(img,y0,y1,y) +#define cimg_for_in28ZC(img,z0,c0,z1,c1,z,c) cimg_for_in28C(img,c0,c1,c) cimg_for_in28Z(img,z0,z1,z) +#define cimg_for_in28XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in28Z(img,z0,z1,z) cimg_for_in28XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in28XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in28C(img,c0,c1,c) cimg_for_in28XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in28YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in28C(img,c0,c1,c) cimg_for_in28YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in28XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in28C(img,c0,c1,c) cimg_for_in28XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for28x28(img,x,y,z,c,I,T) \ + cimg_for28((img)._height,y) for (int x = 0, \ + _p13##x = 0, _p12##x = 0, _p11##x = 0, _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = 11>=((img)._width)?(img).width() - 1:11, \ + _n12##x = 12>=((img)._width)?(img).width() - 1:12, \ + _n13##x = 13>=((img)._width)?(img).width() - 1:13, \ + _n14##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = I[11] = I[12] = I[13] = (T)(img)(0,_p13##y,z,c)), \ + (I[28] = I[29] = I[30] = I[31] = I[32] = I[33] = I[34] = I[35] = I[36] = I[37] = I[38] = I[39] = I[40] = I[41] = (T)(img)(0,_p12##y,z,c)), \ + (I[56] = I[57] = I[58] = I[59] = I[60] = I[61] = I[62] = I[63] = I[64] = I[65] = I[66] = I[67] = I[68] = I[69] = (T)(img)(0,_p11##y,z,c)), \ + (I[84] = I[85] = I[86] = I[87] = I[88] = I[89] = I[90] = I[91] = I[92] = I[93] = I[94] = I[95] = I[96] = I[97] = (T)(img)(0,_p10##y,z,c)), \ + (I[112] = I[113] = I[114] = I[115] = I[116] = I[117] = I[118] = I[119] = I[120] = I[121] = I[122] = I[123] = I[124] = I[125] = (T)(img)(0,_p9##y,z,c)), \ + (I[140] = I[141] = I[142] = I[143] = I[144] = I[145] = I[146] = I[147] = I[148] = I[149] = I[150] = I[151] = I[152] = I[153] = (T)(img)(0,_p8##y,z,c)), \ + (I[168] = I[169] = I[170] = I[171] = I[172] = I[173] = I[174] = I[175] = I[176] = I[177] = I[178] = I[179] = I[180] = I[181] = (T)(img)(0,_p7##y,z,c)), \ + (I[196] = I[197] = I[198] = I[199] = I[200] = I[201] = I[202] = I[203] = I[204] = I[205] = I[206] = I[207] = I[208] = I[209] = (T)(img)(0,_p6##y,z,c)), \ + (I[224] = I[225] = I[226] = I[227] = I[228] = I[229] = I[230] = I[231] = I[232] = I[233] = I[234] = I[235] = I[236] = I[237] = (T)(img)(0,_p5##y,z,c)), \ + (I[252] = I[253] = I[254] = I[255] = I[256] = I[257] = I[258] = I[259] = I[260] = I[261] = I[262] = I[263] = I[264] = I[265] = (T)(img)(0,_p4##y,z,c)), \ + (I[280] = I[281] = I[282] = I[283] = I[284] = I[285] = I[286] = I[287] = I[288] = I[289] = I[290] = I[291] = I[292] = I[293] = (T)(img)(0,_p3##y,z,c)), \ + (I[308] = I[309] = I[310] = I[311] = I[312] = I[313] = I[314] = I[315] = I[316] = I[317] = I[318] = I[319] = I[320] = I[321] = (T)(img)(0,_p2##y,z,c)), \ + (I[336] = I[337] = I[338] = I[339] = I[340] = I[341] = I[342] = I[343] = I[344] = I[345] = I[346] = I[347] = I[348] = I[349] = (T)(img)(0,_p1##y,z,c)), \ + (I[364] = I[365] = I[366] = I[367] = I[368] = I[369] = I[370] = I[371] = I[372] = I[373] = I[374] = I[375] = I[376] = I[377] = (T)(img)(0,y,z,c)), \ + (I[392] = I[393] = I[394] = I[395] = I[396] = I[397] = I[398] = I[399] = I[400] = I[401] = I[402] = I[403] = I[404] = I[405] = (T)(img)(0,_n1##y,z,c)), \ + (I[420] = I[421] = I[422] = I[423] = I[424] = I[425] = I[426] = I[427] = I[428] = I[429] = I[430] = I[431] = I[432] = I[433] = (T)(img)(0,_n2##y,z,c)), \ + (I[448] = I[449] = I[450] = I[451] = I[452] = I[453] = I[454] = I[455] = I[456] = I[457] = I[458] = I[459] = I[460] = I[461] = (T)(img)(0,_n3##y,z,c)), \ + (I[476] = I[477] = I[478] = I[479] = I[480] = I[481] = I[482] = I[483] = I[484] = I[485] = I[486] = I[487] = I[488] = I[489] = (T)(img)(0,_n4##y,z,c)), \ + (I[504] = I[505] = I[506] = I[507] = I[508] = I[509] = I[510] = I[511] = I[512] = I[513] = I[514] = I[515] = I[516] = I[517] = (T)(img)(0,_n5##y,z,c)), \ + (I[532] = I[533] = I[534] = I[535] = I[536] = I[537] = I[538] = I[539] = I[540] = I[541] = I[542] = I[543] = I[544] = I[545] = (T)(img)(0,_n6##y,z,c)), \ + (I[560] = I[561] = I[562] = I[563] = I[564] = I[565] = I[566] = I[567] = I[568] = I[569] = I[570] = I[571] = I[572] = I[573] = (T)(img)(0,_n7##y,z,c)), \ + (I[588] = I[589] = I[590] = I[591] = I[592] = I[593] = I[594] = I[595] = I[596] = I[597] = I[598] = I[599] = I[600] = I[601] = (T)(img)(0,_n8##y,z,c)), \ + (I[616] = I[617] = I[618] = I[619] = I[620] = I[621] = I[622] = I[623] = I[624] = I[625] = I[626] = I[627] = I[628] = I[629] = (T)(img)(0,_n9##y,z,c)), \ + (I[644] = I[645] = I[646] = I[647] = I[648] = I[649] = I[650] = I[651] = I[652] = I[653] = I[654] = I[655] = I[656] = I[657] = (T)(img)(0,_n10##y,z,c)), \ + (I[672] = I[673] = I[674] = I[675] = I[676] = I[677] = I[678] = I[679] = I[680] = I[681] = I[682] = I[683] = I[684] = I[685] = (T)(img)(0,_n11##y,z,c)), \ + (I[700] = I[701] = I[702] = I[703] = I[704] = I[705] = I[706] = I[707] = I[708] = I[709] = I[710] = I[711] = I[712] = I[713] = (T)(img)(0,_n12##y,z,c)), \ + (I[728] = I[729] = I[730] = I[731] = I[732] = I[733] = I[734] = I[735] = I[736] = I[737] = I[738] = I[739] = I[740] = I[741] = (T)(img)(0,_n13##y,z,c)), \ + (I[756] = I[757] = I[758] = I[759] = I[760] = I[761] = I[762] = I[763] = I[764] = I[765] = I[766] = I[767] = I[768] = I[769] = (T)(img)(0,_n14##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[42] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[70] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[98] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[126] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[154] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[182] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[210] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[238] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[266] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[294] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[322] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[350] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[378] = (T)(img)(_n1##x,y,z,c)), \ + (I[406] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[434] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[462] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[490] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[518] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[546] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[574] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[602] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[630] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[658] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[686] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[714] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[742] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[770] = (T)(img)(_n1##x,_n14##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[43] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[71] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[99] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[127] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[155] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[183] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[211] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[239] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[267] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[295] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[323] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[351] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[379] = (T)(img)(_n2##x,y,z,c)), \ + (I[407] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[435] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[463] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[491] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[519] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[547] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[575] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[603] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[631] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[659] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[687] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[715] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[743] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[771] = (T)(img)(_n2##x,_n14##y,z,c)), \ + (I[16] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[44] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[72] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[100] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[128] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[156] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[184] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[212] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[240] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[268] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[296] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[324] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[352] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[380] = (T)(img)(_n3##x,y,z,c)), \ + (I[408] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[436] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[464] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[492] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[520] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[548] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[576] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[604] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[632] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[660] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[688] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[716] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[744] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[772] = (T)(img)(_n3##x,_n14##y,z,c)), \ + (I[17] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[45] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[73] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[101] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[129] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[157] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[185] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[213] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[241] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[269] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[297] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[325] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[353] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[381] = (T)(img)(_n4##x,y,z,c)), \ + (I[409] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[437] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[465] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[493] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[521] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[549] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[577] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[605] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[633] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[661] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[689] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[717] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[745] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[773] = (T)(img)(_n4##x,_n14##y,z,c)), \ + (I[18] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[46] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[74] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[102] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[130] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[158] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[186] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[214] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[242] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[270] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[298] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[326] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[354] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[382] = (T)(img)(_n5##x,y,z,c)), \ + (I[410] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[438] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[466] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[494] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[522] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[550] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[578] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[606] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[634] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[662] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[690] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[718] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[746] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[774] = (T)(img)(_n5##x,_n14##y,z,c)), \ + (I[19] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[47] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[75] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[103] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[131] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[159] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[187] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[215] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[243] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[271] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[299] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[327] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[355] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[383] = (T)(img)(_n6##x,y,z,c)), \ + (I[411] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[439] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[467] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[495] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[523] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[551] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[579] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[607] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[635] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[663] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[691] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[719] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[747] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[775] = (T)(img)(_n6##x,_n14##y,z,c)), \ + (I[20] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[48] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[76] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[104] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[132] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[160] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[188] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[216] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[244] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[272] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[300] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[328] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[356] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[384] = (T)(img)(_n7##x,y,z,c)), \ + (I[412] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[440] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[468] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[496] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[524] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[552] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[580] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[608] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[636] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[664] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[692] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[720] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[748] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[776] = (T)(img)(_n7##x,_n14##y,z,c)), \ + (I[21] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[49] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[77] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[105] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[133] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[161] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[189] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[217] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[245] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[273] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[301] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[329] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[357] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[385] = (T)(img)(_n8##x,y,z,c)), \ + (I[413] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[441] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[469] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[497] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[525] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[553] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[581] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[609] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[637] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[665] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[693] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[721] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[749] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[777] = (T)(img)(_n8##x,_n14##y,z,c)), \ + (I[22] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[50] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[78] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[106] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[134] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[162] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[190] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[218] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[246] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[274] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[302] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[330] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[358] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[386] = (T)(img)(_n9##x,y,z,c)), \ + (I[414] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[442] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[470] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[498] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[526] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[554] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[582] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[610] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[638] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[666] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[694] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[722] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[750] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[778] = (T)(img)(_n9##x,_n14##y,z,c)), \ + (I[23] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[51] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[79] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[107] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[135] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[163] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[191] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[219] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[247] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[275] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[303] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[331] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[359] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[387] = (T)(img)(_n10##x,y,z,c)), \ + (I[415] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[443] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[471] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[499] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[527] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[555] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[583] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[611] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[639] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[667] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[695] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[723] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[751] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[779] = (T)(img)(_n10##x,_n14##y,z,c)), \ + (I[24] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[52] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[80] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[108] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[136] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[164] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[192] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[220] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[248] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[276] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[304] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[332] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[360] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[388] = (T)(img)(_n11##x,y,z,c)), \ + (I[416] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[444] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[472] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[500] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[528] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[556] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[584] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[612] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[640] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[668] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[696] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[724] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[752] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[780] = (T)(img)(_n11##x,_n14##y,z,c)), \ + (I[25] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[53] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[81] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[109] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[137] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[165] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[193] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[221] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[249] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[277] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[305] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[333] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[361] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[389] = (T)(img)(_n12##x,y,z,c)), \ + (I[417] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[445] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[473] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[501] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[529] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[557] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[585] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[613] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[641] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[669] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[697] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[725] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[753] = (T)(img)(_n12##x,_n13##y,z,c)), \ + (I[781] = (T)(img)(_n12##x,_n14##y,z,c)), \ + (I[26] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[54] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[82] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[110] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[138] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[166] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[194] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[222] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[250] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[278] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[306] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[334] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[362] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[390] = (T)(img)(_n13##x,y,z,c)), \ + (I[418] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[446] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[474] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[502] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[530] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[558] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[586] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[614] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[642] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[670] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[698] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[726] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[754] = (T)(img)(_n13##x,_n13##y,z,c)), \ + (I[782] = (T)(img)(_n13##x,_n14##y,z,c)), \ + 14>=((img)._width)?(img).width() - 1:14); \ + (_n14##x<(img).width() && ( \ + (I[27] = (T)(img)(_n14##x,_p13##y,z,c)), \ + (I[55] = (T)(img)(_n14##x,_p12##y,z,c)), \ + (I[83] = (T)(img)(_n14##x,_p11##y,z,c)), \ + (I[111] = (T)(img)(_n14##x,_p10##y,z,c)), \ + (I[139] = (T)(img)(_n14##x,_p9##y,z,c)), \ + (I[167] = (T)(img)(_n14##x,_p8##y,z,c)), \ + (I[195] = (T)(img)(_n14##x,_p7##y,z,c)), \ + (I[223] = (T)(img)(_n14##x,_p6##y,z,c)), \ + (I[251] = (T)(img)(_n14##x,_p5##y,z,c)), \ + (I[279] = (T)(img)(_n14##x,_p4##y,z,c)), \ + (I[307] = (T)(img)(_n14##x,_p3##y,z,c)), \ + (I[335] = (T)(img)(_n14##x,_p2##y,z,c)), \ + (I[363] = (T)(img)(_n14##x,_p1##y,z,c)), \ + (I[391] = (T)(img)(_n14##x,y,z,c)), \ + (I[419] = (T)(img)(_n14##x,_n1##y,z,c)), \ + (I[447] = (T)(img)(_n14##x,_n2##y,z,c)), \ + (I[475] = (T)(img)(_n14##x,_n3##y,z,c)), \ + (I[503] = (T)(img)(_n14##x,_n4##y,z,c)), \ + (I[531] = (T)(img)(_n14##x,_n5##y,z,c)), \ + (I[559] = (T)(img)(_n14##x,_n6##y,z,c)), \ + (I[587] = (T)(img)(_n14##x,_n7##y,z,c)), \ + (I[615] = (T)(img)(_n14##x,_n8##y,z,c)), \ + (I[643] = (T)(img)(_n14##x,_n9##y,z,c)), \ + (I[671] = (T)(img)(_n14##x,_n10##y,z,c)), \ + (I[699] = (T)(img)(_n14##x,_n11##y,z,c)), \ + (I[727] = (T)(img)(_n14##x,_n12##y,z,c)), \ + (I[755] = (T)(img)(_n14##x,_n13##y,z,c)), \ + (I[783] = (T)(img)(_n14##x,_n14##y,z,c)),1)) || \ + _n13##x==--_n14##x || _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n14##x = _n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], \ + I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], \ + I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], \ + I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], \ + I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], \ + I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], \ + I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], \ + I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], \ + I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], \ + I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], \ + I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], \ + I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], \ + I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], \ + I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], \ + I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], \ + I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], \ + I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], \ + I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], \ + I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], \ + I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], I[649] = I[650], I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], \ + I[672] = I[673], I[673] = I[674], I[674] = I[675], I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], I[681] = I[682], I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], I[689] = I[690], I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], I[695] = I[696], I[696] = I[697], I[697] = I[698], I[698] = I[699], \ + I[700] = I[701], I[701] = I[702], I[702] = I[703], I[703] = I[704], I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], I[712] = I[713], I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], I[719] = I[720], I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], I[724] = I[725], I[725] = I[726], I[726] = I[727], \ + I[728] = I[729], I[729] = I[730], I[730] = I[731], I[731] = I[732], I[732] = I[733], I[733] = I[734], I[734] = I[735], I[735] = I[736], I[736] = I[737], I[737] = I[738], I[738] = I[739], I[739] = I[740], I[740] = I[741], I[741] = I[742], I[742] = I[743], I[743] = I[744], I[744] = I[745], I[745] = I[746], I[746] = I[747], I[747] = I[748], I[748] = I[749], I[749] = I[750], I[750] = I[751], I[751] = I[752], I[752] = I[753], I[753] = I[754], I[754] = I[755], \ + I[756] = I[757], I[757] = I[758], I[758] = I[759], I[759] = I[760], I[760] = I[761], I[761] = I[762], I[762] = I[763], I[763] = I[764], I[764] = I[765], I[765] = I[766], I[766] = I[767], I[767] = I[768], I[768] = I[769], I[769] = I[770], I[770] = I[771], I[771] = I[772], I[772] = I[773], I[773] = I[774], I[774] = I[775], I[775] = I[776], I[776] = I[777], I[777] = I[778], I[778] = I[779], I[779] = I[780], I[780] = I[781], I[781] = I[782], I[782] = I[783], \ + _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x, ++_n14##x) + +#define cimg_for_in28x28(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in28((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p13##x = x - 13<0?0:x - 13, \ + _p12##x = x - 12<0?0:x - 12, \ + _p11##x = x - 11<0?0:x - 11, \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = x + 11>=(img).width()?(img).width() - 1:x + 11, \ + _n12##x = x + 12>=(img).width()?(img).width() - 1:x + 12, \ + _n13##x = x + 13>=(img).width()?(img).width() - 1:x + 13, \ + _n14##x = (int)( \ + (I[0] = (T)(img)(_p13##x,_p13##y,z,c)), \ + (I[28] = (T)(img)(_p13##x,_p12##y,z,c)), \ + (I[56] = (T)(img)(_p13##x,_p11##y,z,c)), \ + (I[84] = (T)(img)(_p13##x,_p10##y,z,c)), \ + (I[112] = (T)(img)(_p13##x,_p9##y,z,c)), \ + (I[140] = (T)(img)(_p13##x,_p8##y,z,c)), \ + (I[168] = (T)(img)(_p13##x,_p7##y,z,c)), \ + (I[196] = (T)(img)(_p13##x,_p6##y,z,c)), \ + (I[224] = (T)(img)(_p13##x,_p5##y,z,c)), \ + (I[252] = (T)(img)(_p13##x,_p4##y,z,c)), \ + (I[280] = (T)(img)(_p13##x,_p3##y,z,c)), \ + (I[308] = (T)(img)(_p13##x,_p2##y,z,c)), \ + (I[336] = (T)(img)(_p13##x,_p1##y,z,c)), \ + (I[364] = (T)(img)(_p13##x,y,z,c)), \ + (I[392] = (T)(img)(_p13##x,_n1##y,z,c)), \ + (I[420] = (T)(img)(_p13##x,_n2##y,z,c)), \ + (I[448] = (T)(img)(_p13##x,_n3##y,z,c)), \ + (I[476] = (T)(img)(_p13##x,_n4##y,z,c)), \ + (I[504] = (T)(img)(_p13##x,_n5##y,z,c)), \ + (I[532] = (T)(img)(_p13##x,_n6##y,z,c)), \ + (I[560] = (T)(img)(_p13##x,_n7##y,z,c)), \ + (I[588] = (T)(img)(_p13##x,_n8##y,z,c)), \ + (I[616] = (T)(img)(_p13##x,_n9##y,z,c)), \ + (I[644] = (T)(img)(_p13##x,_n10##y,z,c)), \ + (I[672] = (T)(img)(_p13##x,_n11##y,z,c)), \ + (I[700] = (T)(img)(_p13##x,_n12##y,z,c)), \ + (I[728] = (T)(img)(_p13##x,_n13##y,z,c)), \ + (I[756] = (T)(img)(_p13##x,_n14##y,z,c)), \ + (I[1] = (T)(img)(_p12##x,_p13##y,z,c)), \ + (I[29] = (T)(img)(_p12##x,_p12##y,z,c)), \ + (I[57] = (T)(img)(_p12##x,_p11##y,z,c)), \ + (I[85] = (T)(img)(_p12##x,_p10##y,z,c)), \ + (I[113] = (T)(img)(_p12##x,_p9##y,z,c)), \ + (I[141] = (T)(img)(_p12##x,_p8##y,z,c)), \ + (I[169] = (T)(img)(_p12##x,_p7##y,z,c)), \ + (I[197] = (T)(img)(_p12##x,_p6##y,z,c)), \ + (I[225] = (T)(img)(_p12##x,_p5##y,z,c)), \ + (I[253] = (T)(img)(_p12##x,_p4##y,z,c)), \ + (I[281] = (T)(img)(_p12##x,_p3##y,z,c)), \ + (I[309] = (T)(img)(_p12##x,_p2##y,z,c)), \ + (I[337] = (T)(img)(_p12##x,_p1##y,z,c)), \ + (I[365] = (T)(img)(_p12##x,y,z,c)), \ + (I[393] = (T)(img)(_p12##x,_n1##y,z,c)), \ + (I[421] = (T)(img)(_p12##x,_n2##y,z,c)), \ + (I[449] = (T)(img)(_p12##x,_n3##y,z,c)), \ + (I[477] = (T)(img)(_p12##x,_n4##y,z,c)), \ + (I[505] = (T)(img)(_p12##x,_n5##y,z,c)), \ + (I[533] = (T)(img)(_p12##x,_n6##y,z,c)), \ + (I[561] = (T)(img)(_p12##x,_n7##y,z,c)), \ + (I[589] = (T)(img)(_p12##x,_n8##y,z,c)), \ + (I[617] = (T)(img)(_p12##x,_n9##y,z,c)), \ + (I[645] = (T)(img)(_p12##x,_n10##y,z,c)), \ + (I[673] = (T)(img)(_p12##x,_n11##y,z,c)), \ + (I[701] = (T)(img)(_p12##x,_n12##y,z,c)), \ + (I[729] = (T)(img)(_p12##x,_n13##y,z,c)), \ + (I[757] = (T)(img)(_p12##x,_n14##y,z,c)), \ + (I[2] = (T)(img)(_p11##x,_p13##y,z,c)), \ + (I[30] = (T)(img)(_p11##x,_p12##y,z,c)), \ + (I[58] = (T)(img)(_p11##x,_p11##y,z,c)), \ + (I[86] = (T)(img)(_p11##x,_p10##y,z,c)), \ + (I[114] = (T)(img)(_p11##x,_p9##y,z,c)), \ + (I[142] = (T)(img)(_p11##x,_p8##y,z,c)), \ + (I[170] = (T)(img)(_p11##x,_p7##y,z,c)), \ + (I[198] = (T)(img)(_p11##x,_p6##y,z,c)), \ + (I[226] = (T)(img)(_p11##x,_p5##y,z,c)), \ + (I[254] = (T)(img)(_p11##x,_p4##y,z,c)), \ + (I[282] = (T)(img)(_p11##x,_p3##y,z,c)), \ + (I[310] = (T)(img)(_p11##x,_p2##y,z,c)), \ + (I[338] = (T)(img)(_p11##x,_p1##y,z,c)), \ + (I[366] = (T)(img)(_p11##x,y,z,c)), \ + (I[394] = (T)(img)(_p11##x,_n1##y,z,c)), \ + (I[422] = (T)(img)(_p11##x,_n2##y,z,c)), \ + (I[450] = (T)(img)(_p11##x,_n3##y,z,c)), \ + (I[478] = (T)(img)(_p11##x,_n4##y,z,c)), \ + (I[506] = (T)(img)(_p11##x,_n5##y,z,c)), \ + (I[534] = (T)(img)(_p11##x,_n6##y,z,c)), \ + (I[562] = (T)(img)(_p11##x,_n7##y,z,c)), \ + (I[590] = (T)(img)(_p11##x,_n8##y,z,c)), \ + (I[618] = (T)(img)(_p11##x,_n9##y,z,c)), \ + (I[646] = (T)(img)(_p11##x,_n10##y,z,c)), \ + (I[674] = (T)(img)(_p11##x,_n11##y,z,c)), \ + (I[702] = (T)(img)(_p11##x,_n12##y,z,c)), \ + (I[730] = (T)(img)(_p11##x,_n13##y,z,c)), \ + (I[758] = (T)(img)(_p11##x,_n14##y,z,c)), \ + (I[3] = (T)(img)(_p10##x,_p13##y,z,c)), \ + (I[31] = (T)(img)(_p10##x,_p12##y,z,c)), \ + (I[59] = (T)(img)(_p10##x,_p11##y,z,c)), \ + (I[87] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[115] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[143] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[171] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[199] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[227] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[255] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[283] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[311] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[339] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[367] = (T)(img)(_p10##x,y,z,c)), \ + (I[395] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[423] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[451] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[479] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[507] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[535] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[563] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[591] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[619] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[647] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[675] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[703] = (T)(img)(_p10##x,_n12##y,z,c)), \ + (I[731] = (T)(img)(_p10##x,_n13##y,z,c)), \ + (I[759] = (T)(img)(_p10##x,_n14##y,z,c)), \ + (I[4] = (T)(img)(_p9##x,_p13##y,z,c)), \ + (I[32] = (T)(img)(_p9##x,_p12##y,z,c)), \ + (I[60] = (T)(img)(_p9##x,_p11##y,z,c)), \ + (I[88] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[116] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[144] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[172] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[200] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[228] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[256] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[284] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[312] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[340] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[368] = (T)(img)(_p9##x,y,z,c)), \ + (I[396] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[424] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[452] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[480] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[508] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[536] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[564] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[592] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[620] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[648] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[676] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[704] = (T)(img)(_p9##x,_n12##y,z,c)), \ + (I[732] = (T)(img)(_p9##x,_n13##y,z,c)), \ + (I[760] = (T)(img)(_p9##x,_n14##y,z,c)), \ + (I[5] = (T)(img)(_p8##x,_p13##y,z,c)), \ + (I[33] = (T)(img)(_p8##x,_p12##y,z,c)), \ + (I[61] = (T)(img)(_p8##x,_p11##y,z,c)), \ + (I[89] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[117] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[145] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[173] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[201] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[229] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[257] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[285] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[313] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[341] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[369] = (T)(img)(_p8##x,y,z,c)), \ + (I[397] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[425] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[453] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[481] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[509] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[537] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[565] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[593] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[621] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[649] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[677] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[705] = (T)(img)(_p8##x,_n12##y,z,c)), \ + (I[733] = (T)(img)(_p8##x,_n13##y,z,c)), \ + (I[761] = (T)(img)(_p8##x,_n14##y,z,c)), \ + (I[6] = (T)(img)(_p7##x,_p13##y,z,c)), \ + (I[34] = (T)(img)(_p7##x,_p12##y,z,c)), \ + (I[62] = (T)(img)(_p7##x,_p11##y,z,c)), \ + (I[90] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[118] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[146] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[174] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[202] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[230] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[258] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[286] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[314] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[342] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[370] = (T)(img)(_p7##x,y,z,c)), \ + (I[398] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[426] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[454] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[482] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[510] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[538] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[566] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[594] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[622] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[650] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[678] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[706] = (T)(img)(_p7##x,_n12##y,z,c)), \ + (I[734] = (T)(img)(_p7##x,_n13##y,z,c)), \ + (I[762] = (T)(img)(_p7##x,_n14##y,z,c)), \ + (I[7] = (T)(img)(_p6##x,_p13##y,z,c)), \ + (I[35] = (T)(img)(_p6##x,_p12##y,z,c)), \ + (I[63] = (T)(img)(_p6##x,_p11##y,z,c)), \ + (I[91] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[119] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[147] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[175] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[203] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[231] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[259] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[287] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[315] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[343] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[371] = (T)(img)(_p6##x,y,z,c)), \ + (I[399] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[427] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[455] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[483] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[511] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[539] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[567] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[595] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[623] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[651] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[679] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[707] = (T)(img)(_p6##x,_n12##y,z,c)), \ + (I[735] = (T)(img)(_p6##x,_n13##y,z,c)), \ + (I[763] = (T)(img)(_p6##x,_n14##y,z,c)), \ + (I[8] = (T)(img)(_p5##x,_p13##y,z,c)), \ + (I[36] = (T)(img)(_p5##x,_p12##y,z,c)), \ + (I[64] = (T)(img)(_p5##x,_p11##y,z,c)), \ + (I[92] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[120] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[148] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[176] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[204] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[232] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[260] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[288] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[316] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[344] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[372] = (T)(img)(_p5##x,y,z,c)), \ + (I[400] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[428] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[456] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[484] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[512] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[540] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[568] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[596] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[624] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[652] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[680] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[708] = (T)(img)(_p5##x,_n12##y,z,c)), \ + (I[736] = (T)(img)(_p5##x,_n13##y,z,c)), \ + (I[764] = (T)(img)(_p5##x,_n14##y,z,c)), \ + (I[9] = (T)(img)(_p4##x,_p13##y,z,c)), \ + (I[37] = (T)(img)(_p4##x,_p12##y,z,c)), \ + (I[65] = (T)(img)(_p4##x,_p11##y,z,c)), \ + (I[93] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[121] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[149] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[177] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[205] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[233] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[261] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[289] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[317] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[345] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[373] = (T)(img)(_p4##x,y,z,c)), \ + (I[401] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[429] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[457] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[485] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[513] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[541] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[569] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[597] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[625] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[653] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[681] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[709] = (T)(img)(_p4##x,_n12##y,z,c)), \ + (I[737] = (T)(img)(_p4##x,_n13##y,z,c)), \ + (I[765] = (T)(img)(_p4##x,_n14##y,z,c)), \ + (I[10] = (T)(img)(_p3##x,_p13##y,z,c)), \ + (I[38] = (T)(img)(_p3##x,_p12##y,z,c)), \ + (I[66] = (T)(img)(_p3##x,_p11##y,z,c)), \ + (I[94] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[122] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[150] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[178] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[206] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[234] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[262] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[290] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[318] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[346] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[374] = (T)(img)(_p3##x,y,z,c)), \ + (I[402] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[430] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[458] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[486] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[514] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[542] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[570] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[598] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[626] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[654] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[682] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[710] = (T)(img)(_p3##x,_n12##y,z,c)), \ + (I[738] = (T)(img)(_p3##x,_n13##y,z,c)), \ + (I[766] = (T)(img)(_p3##x,_n14##y,z,c)), \ + (I[11] = (T)(img)(_p2##x,_p13##y,z,c)), \ + (I[39] = (T)(img)(_p2##x,_p12##y,z,c)), \ + (I[67] = (T)(img)(_p2##x,_p11##y,z,c)), \ + (I[95] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[123] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[151] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[179] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[207] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[235] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[263] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[291] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[319] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[347] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[375] = (T)(img)(_p2##x,y,z,c)), \ + (I[403] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[431] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[459] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[487] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[515] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[543] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[571] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[599] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[627] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[655] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[683] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[711] = (T)(img)(_p2##x,_n12##y,z,c)), \ + (I[739] = (T)(img)(_p2##x,_n13##y,z,c)), \ + (I[767] = (T)(img)(_p2##x,_n14##y,z,c)), \ + (I[12] = (T)(img)(_p1##x,_p13##y,z,c)), \ + (I[40] = (T)(img)(_p1##x,_p12##y,z,c)), \ + (I[68] = (T)(img)(_p1##x,_p11##y,z,c)), \ + (I[96] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[124] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[152] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[180] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[208] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[236] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[264] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[292] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[320] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[348] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[376] = (T)(img)(_p1##x,y,z,c)), \ + (I[404] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[432] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[460] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[488] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[516] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[544] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[572] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[600] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[628] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[656] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[684] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[712] = (T)(img)(_p1##x,_n12##y,z,c)), \ + (I[740] = (T)(img)(_p1##x,_n13##y,z,c)), \ + (I[768] = (T)(img)(_p1##x,_n14##y,z,c)), \ + (I[13] = (T)(img)(x,_p13##y,z,c)), \ + (I[41] = (T)(img)(x,_p12##y,z,c)), \ + (I[69] = (T)(img)(x,_p11##y,z,c)), \ + (I[97] = (T)(img)(x,_p10##y,z,c)), \ + (I[125] = (T)(img)(x,_p9##y,z,c)), \ + (I[153] = (T)(img)(x,_p8##y,z,c)), \ + (I[181] = (T)(img)(x,_p7##y,z,c)), \ + (I[209] = (T)(img)(x,_p6##y,z,c)), \ + (I[237] = (T)(img)(x,_p5##y,z,c)), \ + (I[265] = (T)(img)(x,_p4##y,z,c)), \ + (I[293] = (T)(img)(x,_p3##y,z,c)), \ + (I[321] = (T)(img)(x,_p2##y,z,c)), \ + (I[349] = (T)(img)(x,_p1##y,z,c)), \ + (I[377] = (T)(img)(x,y,z,c)), \ + (I[405] = (T)(img)(x,_n1##y,z,c)), \ + (I[433] = (T)(img)(x,_n2##y,z,c)), \ + (I[461] = (T)(img)(x,_n3##y,z,c)), \ + (I[489] = (T)(img)(x,_n4##y,z,c)), \ + (I[517] = (T)(img)(x,_n5##y,z,c)), \ + (I[545] = (T)(img)(x,_n6##y,z,c)), \ + (I[573] = (T)(img)(x,_n7##y,z,c)), \ + (I[601] = (T)(img)(x,_n8##y,z,c)), \ + (I[629] = (T)(img)(x,_n9##y,z,c)), \ + (I[657] = (T)(img)(x,_n10##y,z,c)), \ + (I[685] = (T)(img)(x,_n11##y,z,c)), \ + (I[713] = (T)(img)(x,_n12##y,z,c)), \ + (I[741] = (T)(img)(x,_n13##y,z,c)), \ + (I[769] = (T)(img)(x,_n14##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[42] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[70] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[98] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[126] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[154] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[182] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[210] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[238] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[266] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[294] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[322] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[350] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[378] = (T)(img)(_n1##x,y,z,c)), \ + (I[406] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[434] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[462] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[490] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[518] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[546] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[574] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[602] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[630] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[658] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[686] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[714] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[742] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[770] = (T)(img)(_n1##x,_n14##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[43] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[71] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[99] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[127] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[155] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[183] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[211] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[239] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[267] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[295] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[323] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[351] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[379] = (T)(img)(_n2##x,y,z,c)), \ + (I[407] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[435] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[463] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[491] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[519] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[547] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[575] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[603] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[631] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[659] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[687] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[715] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[743] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[771] = (T)(img)(_n2##x,_n14##y,z,c)), \ + (I[16] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[44] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[72] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[100] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[128] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[156] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[184] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[212] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[240] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[268] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[296] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[324] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[352] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[380] = (T)(img)(_n3##x,y,z,c)), \ + (I[408] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[436] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[464] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[492] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[520] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[548] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[576] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[604] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[632] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[660] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[688] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[716] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[744] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[772] = (T)(img)(_n3##x,_n14##y,z,c)), \ + (I[17] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[45] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[73] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[101] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[129] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[157] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[185] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[213] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[241] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[269] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[297] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[325] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[353] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[381] = (T)(img)(_n4##x,y,z,c)), \ + (I[409] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[437] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[465] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[493] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[521] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[549] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[577] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[605] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[633] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[661] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[689] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[717] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[745] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[773] = (T)(img)(_n4##x,_n14##y,z,c)), \ + (I[18] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[46] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[74] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[102] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[130] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[158] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[186] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[214] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[242] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[270] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[298] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[326] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[354] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[382] = (T)(img)(_n5##x,y,z,c)), \ + (I[410] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[438] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[466] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[494] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[522] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[550] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[578] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[606] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[634] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[662] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[690] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[718] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[746] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[774] = (T)(img)(_n5##x,_n14##y,z,c)), \ + (I[19] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[47] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[75] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[103] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[131] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[159] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[187] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[215] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[243] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[271] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[299] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[327] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[355] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[383] = (T)(img)(_n6##x,y,z,c)), \ + (I[411] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[439] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[467] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[495] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[523] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[551] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[579] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[607] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[635] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[663] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[691] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[719] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[747] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[775] = (T)(img)(_n6##x,_n14##y,z,c)), \ + (I[20] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[48] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[76] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[104] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[132] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[160] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[188] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[216] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[244] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[272] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[300] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[328] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[356] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[384] = (T)(img)(_n7##x,y,z,c)), \ + (I[412] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[440] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[468] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[496] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[524] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[552] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[580] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[608] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[636] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[664] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[692] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[720] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[748] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[776] = (T)(img)(_n7##x,_n14##y,z,c)), \ + (I[21] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[49] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[77] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[105] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[133] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[161] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[189] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[217] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[245] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[273] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[301] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[329] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[357] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[385] = (T)(img)(_n8##x,y,z,c)), \ + (I[413] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[441] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[469] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[497] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[525] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[553] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[581] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[609] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[637] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[665] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[693] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[721] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[749] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[777] = (T)(img)(_n8##x,_n14##y,z,c)), \ + (I[22] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[50] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[78] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[106] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[134] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[162] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[190] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[218] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[246] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[274] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[302] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[330] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[358] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[386] = (T)(img)(_n9##x,y,z,c)), \ + (I[414] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[442] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[470] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[498] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[526] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[554] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[582] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[610] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[638] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[666] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[694] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[722] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[750] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[778] = (T)(img)(_n9##x,_n14##y,z,c)), \ + (I[23] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[51] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[79] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[107] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[135] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[163] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[191] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[219] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[247] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[275] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[303] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[331] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[359] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[387] = (T)(img)(_n10##x,y,z,c)), \ + (I[415] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[443] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[471] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[499] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[527] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[555] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[583] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[611] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[639] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[667] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[695] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[723] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[751] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[779] = (T)(img)(_n10##x,_n14##y,z,c)), \ + (I[24] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[52] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[80] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[108] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[136] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[164] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[192] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[220] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[248] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[276] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[304] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[332] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[360] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[388] = (T)(img)(_n11##x,y,z,c)), \ + (I[416] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[444] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[472] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[500] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[528] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[556] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[584] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[612] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[640] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[668] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[696] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[724] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[752] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[780] = (T)(img)(_n11##x,_n14##y,z,c)), \ + (I[25] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[53] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[81] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[109] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[137] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[165] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[193] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[221] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[249] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[277] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[305] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[333] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[361] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[389] = (T)(img)(_n12##x,y,z,c)), \ + (I[417] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[445] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[473] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[501] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[529] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[557] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[585] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[613] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[641] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[669] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[697] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[725] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[753] = (T)(img)(_n12##x,_n13##y,z,c)), \ + (I[781] = (T)(img)(_n12##x,_n14##y,z,c)), \ + (I[26] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[54] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[82] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[110] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[138] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[166] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[194] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[222] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[250] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[278] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[306] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[334] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[362] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[390] = (T)(img)(_n13##x,y,z,c)), \ + (I[418] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[446] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[474] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[502] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[530] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[558] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[586] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[614] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[642] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[670] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[698] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[726] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[754] = (T)(img)(_n13##x,_n13##y,z,c)), \ + (I[782] = (T)(img)(_n13##x,_n14##y,z,c)), \ + x + 14>=(img).width()?(img).width() - 1:x + 14); \ + x<=(int)(x1) && ((_n14##x<(img).width() && ( \ + (I[27] = (T)(img)(_n14##x,_p13##y,z,c)), \ + (I[55] = (T)(img)(_n14##x,_p12##y,z,c)), \ + (I[83] = (T)(img)(_n14##x,_p11##y,z,c)), \ + (I[111] = (T)(img)(_n14##x,_p10##y,z,c)), \ + (I[139] = (T)(img)(_n14##x,_p9##y,z,c)), \ + (I[167] = (T)(img)(_n14##x,_p8##y,z,c)), \ + (I[195] = (T)(img)(_n14##x,_p7##y,z,c)), \ + (I[223] = (T)(img)(_n14##x,_p6##y,z,c)), \ + (I[251] = (T)(img)(_n14##x,_p5##y,z,c)), \ + (I[279] = (T)(img)(_n14##x,_p4##y,z,c)), \ + (I[307] = (T)(img)(_n14##x,_p3##y,z,c)), \ + (I[335] = (T)(img)(_n14##x,_p2##y,z,c)), \ + (I[363] = (T)(img)(_n14##x,_p1##y,z,c)), \ + (I[391] = (T)(img)(_n14##x,y,z,c)), \ + (I[419] = (T)(img)(_n14##x,_n1##y,z,c)), \ + (I[447] = (T)(img)(_n14##x,_n2##y,z,c)), \ + (I[475] = (T)(img)(_n14##x,_n3##y,z,c)), \ + (I[503] = (T)(img)(_n14##x,_n4##y,z,c)), \ + (I[531] = (T)(img)(_n14##x,_n5##y,z,c)), \ + (I[559] = (T)(img)(_n14##x,_n6##y,z,c)), \ + (I[587] = (T)(img)(_n14##x,_n7##y,z,c)), \ + (I[615] = (T)(img)(_n14##x,_n8##y,z,c)), \ + (I[643] = (T)(img)(_n14##x,_n9##y,z,c)), \ + (I[671] = (T)(img)(_n14##x,_n10##y,z,c)), \ + (I[699] = (T)(img)(_n14##x,_n11##y,z,c)), \ + (I[727] = (T)(img)(_n14##x,_n12##y,z,c)), \ + (I[755] = (T)(img)(_n14##x,_n13##y,z,c)), \ + (I[783] = (T)(img)(_n14##x,_n14##y,z,c)),1)) || \ + _n13##x==--_n14##x || _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n14##x = _n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], \ + I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], \ + I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], \ + I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], \ + I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], \ + I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], \ + I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], \ + I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], \ + I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], \ + I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], \ + I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], \ + I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], \ + I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], \ + I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], \ + I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], \ + I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], \ + I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], \ + I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], \ + I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], \ + I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], I[649] = I[650], I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], \ + I[672] = I[673], I[673] = I[674], I[674] = I[675], I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], I[681] = I[682], I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], I[689] = I[690], I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], I[695] = I[696], I[696] = I[697], I[697] = I[698], I[698] = I[699], \ + I[700] = I[701], I[701] = I[702], I[702] = I[703], I[703] = I[704], I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], I[712] = I[713], I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], I[719] = I[720], I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], I[724] = I[725], I[725] = I[726], I[726] = I[727], \ + I[728] = I[729], I[729] = I[730], I[730] = I[731], I[731] = I[732], I[732] = I[733], I[733] = I[734], I[734] = I[735], I[735] = I[736], I[736] = I[737], I[737] = I[738], I[738] = I[739], I[739] = I[740], I[740] = I[741], I[741] = I[742], I[742] = I[743], I[743] = I[744], I[744] = I[745], I[745] = I[746], I[746] = I[747], I[747] = I[748], I[748] = I[749], I[749] = I[750], I[750] = I[751], I[751] = I[752], I[752] = I[753], I[753] = I[754], I[754] = I[755], \ + I[756] = I[757], I[757] = I[758], I[758] = I[759], I[759] = I[760], I[760] = I[761], I[761] = I[762], I[762] = I[763], I[763] = I[764], I[764] = I[765], I[765] = I[766], I[766] = I[767], I[767] = I[768], I[768] = I[769], I[769] = I[770], I[770] = I[771], I[771] = I[772], I[772] = I[773], I[773] = I[774], I[774] = I[775], I[775] = I[776], I[776] = I[777], I[777] = I[778], I[778] = I[779], I[779] = I[780], I[780] = I[781], I[781] = I[782], I[782] = I[783], \ + _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x, ++_n14##x) + +#define cimg_get28x28(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p13##x,_p13##y,z,c), I[1] = (T)(img)(_p12##x,_p13##y,z,c), I[2] = (T)(img)(_p11##x,_p13##y,z,c), I[3] = (T)(img)(_p10##x,_p13##y,z,c), I[4] = (T)(img)(_p9##x,_p13##y,z,c), I[5] = (T)(img)(_p8##x,_p13##y,z,c), I[6] = (T)(img)(_p7##x,_p13##y,z,c), I[7] = (T)(img)(_p6##x,_p13##y,z,c), I[8] = (T)(img)(_p5##x,_p13##y,z,c), I[9] = (T)(img)(_p4##x,_p13##y,z,c), I[10] = (T)(img)(_p3##x,_p13##y,z,c), I[11] = (T)(img)(_p2##x,_p13##y,z,c), I[12] = (T)(img)(_p1##x,_p13##y,z,c), I[13] = (T)(img)(x,_p13##y,z,c), I[14] = (T)(img)(_n1##x,_p13##y,z,c), I[15] = (T)(img)(_n2##x,_p13##y,z,c), I[16] = (T)(img)(_n3##x,_p13##y,z,c), I[17] = (T)(img)(_n4##x,_p13##y,z,c), I[18] = (T)(img)(_n5##x,_p13##y,z,c), I[19] = (T)(img)(_n6##x,_p13##y,z,c), I[20] = (T)(img)(_n7##x,_p13##y,z,c), I[21] = (T)(img)(_n8##x,_p13##y,z,c), I[22] = (T)(img)(_n9##x,_p13##y,z,c), I[23] = (T)(img)(_n10##x,_p13##y,z,c), I[24] = (T)(img)(_n11##x,_p13##y,z,c), I[25] = (T)(img)(_n12##x,_p13##y,z,c), I[26] = (T)(img)(_n13##x,_p13##y,z,c), I[27] = (T)(img)(_n14##x,_p13##y,z,c), \ + I[28] = (T)(img)(_p13##x,_p12##y,z,c), I[29] = (T)(img)(_p12##x,_p12##y,z,c), I[30] = (T)(img)(_p11##x,_p12##y,z,c), I[31] = (T)(img)(_p10##x,_p12##y,z,c), I[32] = (T)(img)(_p9##x,_p12##y,z,c), I[33] = (T)(img)(_p8##x,_p12##y,z,c), I[34] = (T)(img)(_p7##x,_p12##y,z,c), I[35] = (T)(img)(_p6##x,_p12##y,z,c), I[36] = (T)(img)(_p5##x,_p12##y,z,c), I[37] = (T)(img)(_p4##x,_p12##y,z,c), I[38] = (T)(img)(_p3##x,_p12##y,z,c), I[39] = (T)(img)(_p2##x,_p12##y,z,c), I[40] = (T)(img)(_p1##x,_p12##y,z,c), I[41] = (T)(img)(x,_p12##y,z,c), I[42] = (T)(img)(_n1##x,_p12##y,z,c), I[43] = (T)(img)(_n2##x,_p12##y,z,c), I[44] = (T)(img)(_n3##x,_p12##y,z,c), I[45] = (T)(img)(_n4##x,_p12##y,z,c), I[46] = (T)(img)(_n5##x,_p12##y,z,c), I[47] = (T)(img)(_n6##x,_p12##y,z,c), I[48] = (T)(img)(_n7##x,_p12##y,z,c), I[49] = (T)(img)(_n8##x,_p12##y,z,c), I[50] = (T)(img)(_n9##x,_p12##y,z,c), I[51] = (T)(img)(_n10##x,_p12##y,z,c), I[52] = (T)(img)(_n11##x,_p12##y,z,c), I[53] = (T)(img)(_n12##x,_p12##y,z,c), I[54] = (T)(img)(_n13##x,_p12##y,z,c), I[55] = (T)(img)(_n14##x,_p12##y,z,c), \ + I[56] = (T)(img)(_p13##x,_p11##y,z,c), I[57] = (T)(img)(_p12##x,_p11##y,z,c), I[58] = (T)(img)(_p11##x,_p11##y,z,c), I[59] = (T)(img)(_p10##x,_p11##y,z,c), I[60] = (T)(img)(_p9##x,_p11##y,z,c), I[61] = (T)(img)(_p8##x,_p11##y,z,c), I[62] = (T)(img)(_p7##x,_p11##y,z,c), I[63] = (T)(img)(_p6##x,_p11##y,z,c), I[64] = (T)(img)(_p5##x,_p11##y,z,c), I[65] = (T)(img)(_p4##x,_p11##y,z,c), I[66] = (T)(img)(_p3##x,_p11##y,z,c), I[67] = (T)(img)(_p2##x,_p11##y,z,c), I[68] = (T)(img)(_p1##x,_p11##y,z,c), I[69] = (T)(img)(x,_p11##y,z,c), I[70] = (T)(img)(_n1##x,_p11##y,z,c), I[71] = (T)(img)(_n2##x,_p11##y,z,c), I[72] = (T)(img)(_n3##x,_p11##y,z,c), I[73] = (T)(img)(_n4##x,_p11##y,z,c), I[74] = (T)(img)(_n5##x,_p11##y,z,c), I[75] = (T)(img)(_n6##x,_p11##y,z,c), I[76] = (T)(img)(_n7##x,_p11##y,z,c), I[77] = (T)(img)(_n8##x,_p11##y,z,c), I[78] = (T)(img)(_n9##x,_p11##y,z,c), I[79] = (T)(img)(_n10##x,_p11##y,z,c), I[80] = (T)(img)(_n11##x,_p11##y,z,c), I[81] = (T)(img)(_n12##x,_p11##y,z,c), I[82] = (T)(img)(_n13##x,_p11##y,z,c), I[83] = (T)(img)(_n14##x,_p11##y,z,c), \ + I[84] = (T)(img)(_p13##x,_p10##y,z,c), I[85] = (T)(img)(_p12##x,_p10##y,z,c), I[86] = (T)(img)(_p11##x,_p10##y,z,c), I[87] = (T)(img)(_p10##x,_p10##y,z,c), I[88] = (T)(img)(_p9##x,_p10##y,z,c), I[89] = (T)(img)(_p8##x,_p10##y,z,c), I[90] = (T)(img)(_p7##x,_p10##y,z,c), I[91] = (T)(img)(_p6##x,_p10##y,z,c), I[92] = (T)(img)(_p5##x,_p10##y,z,c), I[93] = (T)(img)(_p4##x,_p10##y,z,c), I[94] = (T)(img)(_p3##x,_p10##y,z,c), I[95] = (T)(img)(_p2##x,_p10##y,z,c), I[96] = (T)(img)(_p1##x,_p10##y,z,c), I[97] = (T)(img)(x,_p10##y,z,c), I[98] = (T)(img)(_n1##x,_p10##y,z,c), I[99] = (T)(img)(_n2##x,_p10##y,z,c), I[100] = (T)(img)(_n3##x,_p10##y,z,c), I[101] = (T)(img)(_n4##x,_p10##y,z,c), I[102] = (T)(img)(_n5##x,_p10##y,z,c), I[103] = (T)(img)(_n6##x,_p10##y,z,c), I[104] = (T)(img)(_n7##x,_p10##y,z,c), I[105] = (T)(img)(_n8##x,_p10##y,z,c), I[106] = (T)(img)(_n9##x,_p10##y,z,c), I[107] = (T)(img)(_n10##x,_p10##y,z,c), I[108] = (T)(img)(_n11##x,_p10##y,z,c), I[109] = (T)(img)(_n12##x,_p10##y,z,c), I[110] = (T)(img)(_n13##x,_p10##y,z,c), I[111] = (T)(img)(_n14##x,_p10##y,z,c), \ + I[112] = (T)(img)(_p13##x,_p9##y,z,c), I[113] = (T)(img)(_p12##x,_p9##y,z,c), I[114] = (T)(img)(_p11##x,_p9##y,z,c), I[115] = (T)(img)(_p10##x,_p9##y,z,c), I[116] = (T)(img)(_p9##x,_p9##y,z,c), I[117] = (T)(img)(_p8##x,_p9##y,z,c), I[118] = (T)(img)(_p7##x,_p9##y,z,c), I[119] = (T)(img)(_p6##x,_p9##y,z,c), I[120] = (T)(img)(_p5##x,_p9##y,z,c), I[121] = (T)(img)(_p4##x,_p9##y,z,c), I[122] = (T)(img)(_p3##x,_p9##y,z,c), I[123] = (T)(img)(_p2##x,_p9##y,z,c), I[124] = (T)(img)(_p1##x,_p9##y,z,c), I[125] = (T)(img)(x,_p9##y,z,c), I[126] = (T)(img)(_n1##x,_p9##y,z,c), I[127] = (T)(img)(_n2##x,_p9##y,z,c), I[128] = (T)(img)(_n3##x,_p9##y,z,c), I[129] = (T)(img)(_n4##x,_p9##y,z,c), I[130] = (T)(img)(_n5##x,_p9##y,z,c), I[131] = (T)(img)(_n6##x,_p9##y,z,c), I[132] = (T)(img)(_n7##x,_p9##y,z,c), I[133] = (T)(img)(_n8##x,_p9##y,z,c), I[134] = (T)(img)(_n9##x,_p9##y,z,c), I[135] = (T)(img)(_n10##x,_p9##y,z,c), I[136] = (T)(img)(_n11##x,_p9##y,z,c), I[137] = (T)(img)(_n12##x,_p9##y,z,c), I[138] = (T)(img)(_n13##x,_p9##y,z,c), I[139] = (T)(img)(_n14##x,_p9##y,z,c), \ + I[140] = (T)(img)(_p13##x,_p8##y,z,c), I[141] = (T)(img)(_p12##x,_p8##y,z,c), I[142] = (T)(img)(_p11##x,_p8##y,z,c), I[143] = (T)(img)(_p10##x,_p8##y,z,c), I[144] = (T)(img)(_p9##x,_p8##y,z,c), I[145] = (T)(img)(_p8##x,_p8##y,z,c), I[146] = (T)(img)(_p7##x,_p8##y,z,c), I[147] = (T)(img)(_p6##x,_p8##y,z,c), I[148] = (T)(img)(_p5##x,_p8##y,z,c), I[149] = (T)(img)(_p4##x,_p8##y,z,c), I[150] = (T)(img)(_p3##x,_p8##y,z,c), I[151] = (T)(img)(_p2##x,_p8##y,z,c), I[152] = (T)(img)(_p1##x,_p8##y,z,c), I[153] = (T)(img)(x,_p8##y,z,c), I[154] = (T)(img)(_n1##x,_p8##y,z,c), I[155] = (T)(img)(_n2##x,_p8##y,z,c), I[156] = (T)(img)(_n3##x,_p8##y,z,c), I[157] = (T)(img)(_n4##x,_p8##y,z,c), I[158] = (T)(img)(_n5##x,_p8##y,z,c), I[159] = (T)(img)(_n6##x,_p8##y,z,c), I[160] = (T)(img)(_n7##x,_p8##y,z,c), I[161] = (T)(img)(_n8##x,_p8##y,z,c), I[162] = (T)(img)(_n9##x,_p8##y,z,c), I[163] = (T)(img)(_n10##x,_p8##y,z,c), I[164] = (T)(img)(_n11##x,_p8##y,z,c), I[165] = (T)(img)(_n12##x,_p8##y,z,c), I[166] = (T)(img)(_n13##x,_p8##y,z,c), I[167] = (T)(img)(_n14##x,_p8##y,z,c), \ + I[168] = (T)(img)(_p13##x,_p7##y,z,c), I[169] = (T)(img)(_p12##x,_p7##y,z,c), I[170] = (T)(img)(_p11##x,_p7##y,z,c), I[171] = (T)(img)(_p10##x,_p7##y,z,c), I[172] = (T)(img)(_p9##x,_p7##y,z,c), I[173] = (T)(img)(_p8##x,_p7##y,z,c), I[174] = (T)(img)(_p7##x,_p7##y,z,c), I[175] = (T)(img)(_p6##x,_p7##y,z,c), I[176] = (T)(img)(_p5##x,_p7##y,z,c), I[177] = (T)(img)(_p4##x,_p7##y,z,c), I[178] = (T)(img)(_p3##x,_p7##y,z,c), I[179] = (T)(img)(_p2##x,_p7##y,z,c), I[180] = (T)(img)(_p1##x,_p7##y,z,c), I[181] = (T)(img)(x,_p7##y,z,c), I[182] = (T)(img)(_n1##x,_p7##y,z,c), I[183] = (T)(img)(_n2##x,_p7##y,z,c), I[184] = (T)(img)(_n3##x,_p7##y,z,c), I[185] = (T)(img)(_n4##x,_p7##y,z,c), I[186] = (T)(img)(_n5##x,_p7##y,z,c), I[187] = (T)(img)(_n6##x,_p7##y,z,c), I[188] = (T)(img)(_n7##x,_p7##y,z,c), I[189] = (T)(img)(_n8##x,_p7##y,z,c), I[190] = (T)(img)(_n9##x,_p7##y,z,c), I[191] = (T)(img)(_n10##x,_p7##y,z,c), I[192] = (T)(img)(_n11##x,_p7##y,z,c), I[193] = (T)(img)(_n12##x,_p7##y,z,c), I[194] = (T)(img)(_n13##x,_p7##y,z,c), I[195] = (T)(img)(_n14##x,_p7##y,z,c), \ + I[196] = (T)(img)(_p13##x,_p6##y,z,c), I[197] = (T)(img)(_p12##x,_p6##y,z,c), I[198] = (T)(img)(_p11##x,_p6##y,z,c), I[199] = (T)(img)(_p10##x,_p6##y,z,c), I[200] = (T)(img)(_p9##x,_p6##y,z,c), I[201] = (T)(img)(_p8##x,_p6##y,z,c), I[202] = (T)(img)(_p7##x,_p6##y,z,c), I[203] = (T)(img)(_p6##x,_p6##y,z,c), I[204] = (T)(img)(_p5##x,_p6##y,z,c), I[205] = (T)(img)(_p4##x,_p6##y,z,c), I[206] = (T)(img)(_p3##x,_p6##y,z,c), I[207] = (T)(img)(_p2##x,_p6##y,z,c), I[208] = (T)(img)(_p1##x,_p6##y,z,c), I[209] = (T)(img)(x,_p6##y,z,c), I[210] = (T)(img)(_n1##x,_p6##y,z,c), I[211] = (T)(img)(_n2##x,_p6##y,z,c), I[212] = (T)(img)(_n3##x,_p6##y,z,c), I[213] = (T)(img)(_n4##x,_p6##y,z,c), I[214] = (T)(img)(_n5##x,_p6##y,z,c), I[215] = (T)(img)(_n6##x,_p6##y,z,c), I[216] = (T)(img)(_n7##x,_p6##y,z,c), I[217] = (T)(img)(_n8##x,_p6##y,z,c), I[218] = (T)(img)(_n9##x,_p6##y,z,c), I[219] = (T)(img)(_n10##x,_p6##y,z,c), I[220] = (T)(img)(_n11##x,_p6##y,z,c), I[221] = (T)(img)(_n12##x,_p6##y,z,c), I[222] = (T)(img)(_n13##x,_p6##y,z,c), I[223] = (T)(img)(_n14##x,_p6##y,z,c), \ + I[224] = (T)(img)(_p13##x,_p5##y,z,c), I[225] = (T)(img)(_p12##x,_p5##y,z,c), I[226] = (T)(img)(_p11##x,_p5##y,z,c), I[227] = (T)(img)(_p10##x,_p5##y,z,c), I[228] = (T)(img)(_p9##x,_p5##y,z,c), I[229] = (T)(img)(_p8##x,_p5##y,z,c), I[230] = (T)(img)(_p7##x,_p5##y,z,c), I[231] = (T)(img)(_p6##x,_p5##y,z,c), I[232] = (T)(img)(_p5##x,_p5##y,z,c), I[233] = (T)(img)(_p4##x,_p5##y,z,c), I[234] = (T)(img)(_p3##x,_p5##y,z,c), I[235] = (T)(img)(_p2##x,_p5##y,z,c), I[236] = (T)(img)(_p1##x,_p5##y,z,c), I[237] = (T)(img)(x,_p5##y,z,c), I[238] = (T)(img)(_n1##x,_p5##y,z,c), I[239] = (T)(img)(_n2##x,_p5##y,z,c), I[240] = (T)(img)(_n3##x,_p5##y,z,c), I[241] = (T)(img)(_n4##x,_p5##y,z,c), I[242] = (T)(img)(_n5##x,_p5##y,z,c), I[243] = (T)(img)(_n6##x,_p5##y,z,c), I[244] = (T)(img)(_n7##x,_p5##y,z,c), I[245] = (T)(img)(_n8##x,_p5##y,z,c), I[246] = (T)(img)(_n9##x,_p5##y,z,c), I[247] = (T)(img)(_n10##x,_p5##y,z,c), I[248] = (T)(img)(_n11##x,_p5##y,z,c), I[249] = (T)(img)(_n12##x,_p5##y,z,c), I[250] = (T)(img)(_n13##x,_p5##y,z,c), I[251] = (T)(img)(_n14##x,_p5##y,z,c), \ + I[252] = (T)(img)(_p13##x,_p4##y,z,c), I[253] = (T)(img)(_p12##x,_p4##y,z,c), I[254] = (T)(img)(_p11##x,_p4##y,z,c), I[255] = (T)(img)(_p10##x,_p4##y,z,c), I[256] = (T)(img)(_p9##x,_p4##y,z,c), I[257] = (T)(img)(_p8##x,_p4##y,z,c), I[258] = (T)(img)(_p7##x,_p4##y,z,c), I[259] = (T)(img)(_p6##x,_p4##y,z,c), I[260] = (T)(img)(_p5##x,_p4##y,z,c), I[261] = (T)(img)(_p4##x,_p4##y,z,c), I[262] = (T)(img)(_p3##x,_p4##y,z,c), I[263] = (T)(img)(_p2##x,_p4##y,z,c), I[264] = (T)(img)(_p1##x,_p4##y,z,c), I[265] = (T)(img)(x,_p4##y,z,c), I[266] = (T)(img)(_n1##x,_p4##y,z,c), I[267] = (T)(img)(_n2##x,_p4##y,z,c), I[268] = (T)(img)(_n3##x,_p4##y,z,c), I[269] = (T)(img)(_n4##x,_p4##y,z,c), I[270] = (T)(img)(_n5##x,_p4##y,z,c), I[271] = (T)(img)(_n6##x,_p4##y,z,c), I[272] = (T)(img)(_n7##x,_p4##y,z,c), I[273] = (T)(img)(_n8##x,_p4##y,z,c), I[274] = (T)(img)(_n9##x,_p4##y,z,c), I[275] = (T)(img)(_n10##x,_p4##y,z,c), I[276] = (T)(img)(_n11##x,_p4##y,z,c), I[277] = (T)(img)(_n12##x,_p4##y,z,c), I[278] = (T)(img)(_n13##x,_p4##y,z,c), I[279] = (T)(img)(_n14##x,_p4##y,z,c), \ + I[280] = (T)(img)(_p13##x,_p3##y,z,c), I[281] = (T)(img)(_p12##x,_p3##y,z,c), I[282] = (T)(img)(_p11##x,_p3##y,z,c), I[283] = (T)(img)(_p10##x,_p3##y,z,c), I[284] = (T)(img)(_p9##x,_p3##y,z,c), I[285] = (T)(img)(_p8##x,_p3##y,z,c), I[286] = (T)(img)(_p7##x,_p3##y,z,c), I[287] = (T)(img)(_p6##x,_p3##y,z,c), I[288] = (T)(img)(_p5##x,_p3##y,z,c), I[289] = (T)(img)(_p4##x,_p3##y,z,c), I[290] = (T)(img)(_p3##x,_p3##y,z,c), I[291] = (T)(img)(_p2##x,_p3##y,z,c), I[292] = (T)(img)(_p1##x,_p3##y,z,c), I[293] = (T)(img)(x,_p3##y,z,c), I[294] = (T)(img)(_n1##x,_p3##y,z,c), I[295] = (T)(img)(_n2##x,_p3##y,z,c), I[296] = (T)(img)(_n3##x,_p3##y,z,c), I[297] = (T)(img)(_n4##x,_p3##y,z,c), I[298] = (T)(img)(_n5##x,_p3##y,z,c), I[299] = (T)(img)(_n6##x,_p3##y,z,c), I[300] = (T)(img)(_n7##x,_p3##y,z,c), I[301] = (T)(img)(_n8##x,_p3##y,z,c), I[302] = (T)(img)(_n9##x,_p3##y,z,c), I[303] = (T)(img)(_n10##x,_p3##y,z,c), I[304] = (T)(img)(_n11##x,_p3##y,z,c), I[305] = (T)(img)(_n12##x,_p3##y,z,c), I[306] = (T)(img)(_n13##x,_p3##y,z,c), I[307] = (T)(img)(_n14##x,_p3##y,z,c), \ + I[308] = (T)(img)(_p13##x,_p2##y,z,c), I[309] = (T)(img)(_p12##x,_p2##y,z,c), I[310] = (T)(img)(_p11##x,_p2##y,z,c), I[311] = (T)(img)(_p10##x,_p2##y,z,c), I[312] = (T)(img)(_p9##x,_p2##y,z,c), I[313] = (T)(img)(_p8##x,_p2##y,z,c), I[314] = (T)(img)(_p7##x,_p2##y,z,c), I[315] = (T)(img)(_p6##x,_p2##y,z,c), I[316] = (T)(img)(_p5##x,_p2##y,z,c), I[317] = (T)(img)(_p4##x,_p2##y,z,c), I[318] = (T)(img)(_p3##x,_p2##y,z,c), I[319] = (T)(img)(_p2##x,_p2##y,z,c), I[320] = (T)(img)(_p1##x,_p2##y,z,c), I[321] = (T)(img)(x,_p2##y,z,c), I[322] = (T)(img)(_n1##x,_p2##y,z,c), I[323] = (T)(img)(_n2##x,_p2##y,z,c), I[324] = (T)(img)(_n3##x,_p2##y,z,c), I[325] = (T)(img)(_n4##x,_p2##y,z,c), I[326] = (T)(img)(_n5##x,_p2##y,z,c), I[327] = (T)(img)(_n6##x,_p2##y,z,c), I[328] = (T)(img)(_n7##x,_p2##y,z,c), I[329] = (T)(img)(_n8##x,_p2##y,z,c), I[330] = (T)(img)(_n9##x,_p2##y,z,c), I[331] = (T)(img)(_n10##x,_p2##y,z,c), I[332] = (T)(img)(_n11##x,_p2##y,z,c), I[333] = (T)(img)(_n12##x,_p2##y,z,c), I[334] = (T)(img)(_n13##x,_p2##y,z,c), I[335] = (T)(img)(_n14##x,_p2##y,z,c), \ + I[336] = (T)(img)(_p13##x,_p1##y,z,c), I[337] = (T)(img)(_p12##x,_p1##y,z,c), I[338] = (T)(img)(_p11##x,_p1##y,z,c), I[339] = (T)(img)(_p10##x,_p1##y,z,c), I[340] = (T)(img)(_p9##x,_p1##y,z,c), I[341] = (T)(img)(_p8##x,_p1##y,z,c), I[342] = (T)(img)(_p7##x,_p1##y,z,c), I[343] = (T)(img)(_p6##x,_p1##y,z,c), I[344] = (T)(img)(_p5##x,_p1##y,z,c), I[345] = (T)(img)(_p4##x,_p1##y,z,c), I[346] = (T)(img)(_p3##x,_p1##y,z,c), I[347] = (T)(img)(_p2##x,_p1##y,z,c), I[348] = (T)(img)(_p1##x,_p1##y,z,c), I[349] = (T)(img)(x,_p1##y,z,c), I[350] = (T)(img)(_n1##x,_p1##y,z,c), I[351] = (T)(img)(_n2##x,_p1##y,z,c), I[352] = (T)(img)(_n3##x,_p1##y,z,c), I[353] = (T)(img)(_n4##x,_p1##y,z,c), I[354] = (T)(img)(_n5##x,_p1##y,z,c), I[355] = (T)(img)(_n6##x,_p1##y,z,c), I[356] = (T)(img)(_n7##x,_p1##y,z,c), I[357] = (T)(img)(_n8##x,_p1##y,z,c), I[358] = (T)(img)(_n9##x,_p1##y,z,c), I[359] = (T)(img)(_n10##x,_p1##y,z,c), I[360] = (T)(img)(_n11##x,_p1##y,z,c), I[361] = (T)(img)(_n12##x,_p1##y,z,c), I[362] = (T)(img)(_n13##x,_p1##y,z,c), I[363] = (T)(img)(_n14##x,_p1##y,z,c), \ + I[364] = (T)(img)(_p13##x,y,z,c), I[365] = (T)(img)(_p12##x,y,z,c), I[366] = (T)(img)(_p11##x,y,z,c), I[367] = (T)(img)(_p10##x,y,z,c), I[368] = (T)(img)(_p9##x,y,z,c), I[369] = (T)(img)(_p8##x,y,z,c), I[370] = (T)(img)(_p7##x,y,z,c), I[371] = (T)(img)(_p6##x,y,z,c), I[372] = (T)(img)(_p5##x,y,z,c), I[373] = (T)(img)(_p4##x,y,z,c), I[374] = (T)(img)(_p3##x,y,z,c), I[375] = (T)(img)(_p2##x,y,z,c), I[376] = (T)(img)(_p1##x,y,z,c), I[377] = (T)(img)(x,y,z,c), I[378] = (T)(img)(_n1##x,y,z,c), I[379] = (T)(img)(_n2##x,y,z,c), I[380] = (T)(img)(_n3##x,y,z,c), I[381] = (T)(img)(_n4##x,y,z,c), I[382] = (T)(img)(_n5##x,y,z,c), I[383] = (T)(img)(_n6##x,y,z,c), I[384] = (T)(img)(_n7##x,y,z,c), I[385] = (T)(img)(_n8##x,y,z,c), I[386] = (T)(img)(_n9##x,y,z,c), I[387] = (T)(img)(_n10##x,y,z,c), I[388] = (T)(img)(_n11##x,y,z,c), I[389] = (T)(img)(_n12##x,y,z,c), I[390] = (T)(img)(_n13##x,y,z,c), I[391] = (T)(img)(_n14##x,y,z,c), \ + I[392] = (T)(img)(_p13##x,_n1##y,z,c), I[393] = (T)(img)(_p12##x,_n1##y,z,c), I[394] = (T)(img)(_p11##x,_n1##y,z,c), I[395] = (T)(img)(_p10##x,_n1##y,z,c), I[396] = (T)(img)(_p9##x,_n1##y,z,c), I[397] = (T)(img)(_p8##x,_n1##y,z,c), I[398] = (T)(img)(_p7##x,_n1##y,z,c), I[399] = (T)(img)(_p6##x,_n1##y,z,c), I[400] = (T)(img)(_p5##x,_n1##y,z,c), I[401] = (T)(img)(_p4##x,_n1##y,z,c), I[402] = (T)(img)(_p3##x,_n1##y,z,c), I[403] = (T)(img)(_p2##x,_n1##y,z,c), I[404] = (T)(img)(_p1##x,_n1##y,z,c), I[405] = (T)(img)(x,_n1##y,z,c), I[406] = (T)(img)(_n1##x,_n1##y,z,c), I[407] = (T)(img)(_n2##x,_n1##y,z,c), I[408] = (T)(img)(_n3##x,_n1##y,z,c), I[409] = (T)(img)(_n4##x,_n1##y,z,c), I[410] = (T)(img)(_n5##x,_n1##y,z,c), I[411] = (T)(img)(_n6##x,_n1##y,z,c), I[412] = (T)(img)(_n7##x,_n1##y,z,c), I[413] = (T)(img)(_n8##x,_n1##y,z,c), I[414] = (T)(img)(_n9##x,_n1##y,z,c), I[415] = (T)(img)(_n10##x,_n1##y,z,c), I[416] = (T)(img)(_n11##x,_n1##y,z,c), I[417] = (T)(img)(_n12##x,_n1##y,z,c), I[418] = (T)(img)(_n13##x,_n1##y,z,c), I[419] = (T)(img)(_n14##x,_n1##y,z,c), \ + I[420] = (T)(img)(_p13##x,_n2##y,z,c), I[421] = (T)(img)(_p12##x,_n2##y,z,c), I[422] = (T)(img)(_p11##x,_n2##y,z,c), I[423] = (T)(img)(_p10##x,_n2##y,z,c), I[424] = (T)(img)(_p9##x,_n2##y,z,c), I[425] = (T)(img)(_p8##x,_n2##y,z,c), I[426] = (T)(img)(_p7##x,_n2##y,z,c), I[427] = (T)(img)(_p6##x,_n2##y,z,c), I[428] = (T)(img)(_p5##x,_n2##y,z,c), I[429] = (T)(img)(_p4##x,_n2##y,z,c), I[430] = (T)(img)(_p3##x,_n2##y,z,c), I[431] = (T)(img)(_p2##x,_n2##y,z,c), I[432] = (T)(img)(_p1##x,_n2##y,z,c), I[433] = (T)(img)(x,_n2##y,z,c), I[434] = (T)(img)(_n1##x,_n2##y,z,c), I[435] = (T)(img)(_n2##x,_n2##y,z,c), I[436] = (T)(img)(_n3##x,_n2##y,z,c), I[437] = (T)(img)(_n4##x,_n2##y,z,c), I[438] = (T)(img)(_n5##x,_n2##y,z,c), I[439] = (T)(img)(_n6##x,_n2##y,z,c), I[440] = (T)(img)(_n7##x,_n2##y,z,c), I[441] = (T)(img)(_n8##x,_n2##y,z,c), I[442] = (T)(img)(_n9##x,_n2##y,z,c), I[443] = (T)(img)(_n10##x,_n2##y,z,c), I[444] = (T)(img)(_n11##x,_n2##y,z,c), I[445] = (T)(img)(_n12##x,_n2##y,z,c), I[446] = (T)(img)(_n13##x,_n2##y,z,c), I[447] = (T)(img)(_n14##x,_n2##y,z,c), \ + I[448] = (T)(img)(_p13##x,_n3##y,z,c), I[449] = (T)(img)(_p12##x,_n3##y,z,c), I[450] = (T)(img)(_p11##x,_n3##y,z,c), I[451] = (T)(img)(_p10##x,_n3##y,z,c), I[452] = (T)(img)(_p9##x,_n3##y,z,c), I[453] = (T)(img)(_p8##x,_n3##y,z,c), I[454] = (T)(img)(_p7##x,_n3##y,z,c), I[455] = (T)(img)(_p6##x,_n3##y,z,c), I[456] = (T)(img)(_p5##x,_n3##y,z,c), I[457] = (T)(img)(_p4##x,_n3##y,z,c), I[458] = (T)(img)(_p3##x,_n3##y,z,c), I[459] = (T)(img)(_p2##x,_n3##y,z,c), I[460] = (T)(img)(_p1##x,_n3##y,z,c), I[461] = (T)(img)(x,_n3##y,z,c), I[462] = (T)(img)(_n1##x,_n3##y,z,c), I[463] = (T)(img)(_n2##x,_n3##y,z,c), I[464] = (T)(img)(_n3##x,_n3##y,z,c), I[465] = (T)(img)(_n4##x,_n3##y,z,c), I[466] = (T)(img)(_n5##x,_n3##y,z,c), I[467] = (T)(img)(_n6##x,_n3##y,z,c), I[468] = (T)(img)(_n7##x,_n3##y,z,c), I[469] = (T)(img)(_n8##x,_n3##y,z,c), I[470] = (T)(img)(_n9##x,_n3##y,z,c), I[471] = (T)(img)(_n10##x,_n3##y,z,c), I[472] = (T)(img)(_n11##x,_n3##y,z,c), I[473] = (T)(img)(_n12##x,_n3##y,z,c), I[474] = (T)(img)(_n13##x,_n3##y,z,c), I[475] = (T)(img)(_n14##x,_n3##y,z,c), \ + I[476] = (T)(img)(_p13##x,_n4##y,z,c), I[477] = (T)(img)(_p12##x,_n4##y,z,c), I[478] = (T)(img)(_p11##x,_n4##y,z,c), I[479] = (T)(img)(_p10##x,_n4##y,z,c), I[480] = (T)(img)(_p9##x,_n4##y,z,c), I[481] = (T)(img)(_p8##x,_n4##y,z,c), I[482] = (T)(img)(_p7##x,_n4##y,z,c), I[483] = (T)(img)(_p6##x,_n4##y,z,c), I[484] = (T)(img)(_p5##x,_n4##y,z,c), I[485] = (T)(img)(_p4##x,_n4##y,z,c), I[486] = (T)(img)(_p3##x,_n4##y,z,c), I[487] = (T)(img)(_p2##x,_n4##y,z,c), I[488] = (T)(img)(_p1##x,_n4##y,z,c), I[489] = (T)(img)(x,_n4##y,z,c), I[490] = (T)(img)(_n1##x,_n4##y,z,c), I[491] = (T)(img)(_n2##x,_n4##y,z,c), I[492] = (T)(img)(_n3##x,_n4##y,z,c), I[493] = (T)(img)(_n4##x,_n4##y,z,c), I[494] = (T)(img)(_n5##x,_n4##y,z,c), I[495] = (T)(img)(_n6##x,_n4##y,z,c), I[496] = (T)(img)(_n7##x,_n4##y,z,c), I[497] = (T)(img)(_n8##x,_n4##y,z,c), I[498] = (T)(img)(_n9##x,_n4##y,z,c), I[499] = (T)(img)(_n10##x,_n4##y,z,c), I[500] = (T)(img)(_n11##x,_n4##y,z,c), I[501] = (T)(img)(_n12##x,_n4##y,z,c), I[502] = (T)(img)(_n13##x,_n4##y,z,c), I[503] = (T)(img)(_n14##x,_n4##y,z,c), \ + I[504] = (T)(img)(_p13##x,_n5##y,z,c), I[505] = (T)(img)(_p12##x,_n5##y,z,c), I[506] = (T)(img)(_p11##x,_n5##y,z,c), I[507] = (T)(img)(_p10##x,_n5##y,z,c), I[508] = (T)(img)(_p9##x,_n5##y,z,c), I[509] = (T)(img)(_p8##x,_n5##y,z,c), I[510] = (T)(img)(_p7##x,_n5##y,z,c), I[511] = (T)(img)(_p6##x,_n5##y,z,c), I[512] = (T)(img)(_p5##x,_n5##y,z,c), I[513] = (T)(img)(_p4##x,_n5##y,z,c), I[514] = (T)(img)(_p3##x,_n5##y,z,c), I[515] = (T)(img)(_p2##x,_n5##y,z,c), I[516] = (T)(img)(_p1##x,_n5##y,z,c), I[517] = (T)(img)(x,_n5##y,z,c), I[518] = (T)(img)(_n1##x,_n5##y,z,c), I[519] = (T)(img)(_n2##x,_n5##y,z,c), I[520] = (T)(img)(_n3##x,_n5##y,z,c), I[521] = (T)(img)(_n4##x,_n5##y,z,c), I[522] = (T)(img)(_n5##x,_n5##y,z,c), I[523] = (T)(img)(_n6##x,_n5##y,z,c), I[524] = (T)(img)(_n7##x,_n5##y,z,c), I[525] = (T)(img)(_n8##x,_n5##y,z,c), I[526] = (T)(img)(_n9##x,_n5##y,z,c), I[527] = (T)(img)(_n10##x,_n5##y,z,c), I[528] = (T)(img)(_n11##x,_n5##y,z,c), I[529] = (T)(img)(_n12##x,_n5##y,z,c), I[530] = (T)(img)(_n13##x,_n5##y,z,c), I[531] = (T)(img)(_n14##x,_n5##y,z,c), \ + I[532] = (T)(img)(_p13##x,_n6##y,z,c), I[533] = (T)(img)(_p12##x,_n6##y,z,c), I[534] = (T)(img)(_p11##x,_n6##y,z,c), I[535] = (T)(img)(_p10##x,_n6##y,z,c), I[536] = (T)(img)(_p9##x,_n6##y,z,c), I[537] = (T)(img)(_p8##x,_n6##y,z,c), I[538] = (T)(img)(_p7##x,_n6##y,z,c), I[539] = (T)(img)(_p6##x,_n6##y,z,c), I[540] = (T)(img)(_p5##x,_n6##y,z,c), I[541] = (T)(img)(_p4##x,_n6##y,z,c), I[542] = (T)(img)(_p3##x,_n6##y,z,c), I[543] = (T)(img)(_p2##x,_n6##y,z,c), I[544] = (T)(img)(_p1##x,_n6##y,z,c), I[545] = (T)(img)(x,_n6##y,z,c), I[546] = (T)(img)(_n1##x,_n6##y,z,c), I[547] = (T)(img)(_n2##x,_n6##y,z,c), I[548] = (T)(img)(_n3##x,_n6##y,z,c), I[549] = (T)(img)(_n4##x,_n6##y,z,c), I[550] = (T)(img)(_n5##x,_n6##y,z,c), I[551] = (T)(img)(_n6##x,_n6##y,z,c), I[552] = (T)(img)(_n7##x,_n6##y,z,c), I[553] = (T)(img)(_n8##x,_n6##y,z,c), I[554] = (T)(img)(_n9##x,_n6##y,z,c), I[555] = (T)(img)(_n10##x,_n6##y,z,c), I[556] = (T)(img)(_n11##x,_n6##y,z,c), I[557] = (T)(img)(_n12##x,_n6##y,z,c), I[558] = (T)(img)(_n13##x,_n6##y,z,c), I[559] = (T)(img)(_n14##x,_n6##y,z,c), \ + I[560] = (T)(img)(_p13##x,_n7##y,z,c), I[561] = (T)(img)(_p12##x,_n7##y,z,c), I[562] = (T)(img)(_p11##x,_n7##y,z,c), I[563] = (T)(img)(_p10##x,_n7##y,z,c), I[564] = (T)(img)(_p9##x,_n7##y,z,c), I[565] = (T)(img)(_p8##x,_n7##y,z,c), I[566] = (T)(img)(_p7##x,_n7##y,z,c), I[567] = (T)(img)(_p6##x,_n7##y,z,c), I[568] = (T)(img)(_p5##x,_n7##y,z,c), I[569] = (T)(img)(_p4##x,_n7##y,z,c), I[570] = (T)(img)(_p3##x,_n7##y,z,c), I[571] = (T)(img)(_p2##x,_n7##y,z,c), I[572] = (T)(img)(_p1##x,_n7##y,z,c), I[573] = (T)(img)(x,_n7##y,z,c), I[574] = (T)(img)(_n1##x,_n7##y,z,c), I[575] = (T)(img)(_n2##x,_n7##y,z,c), I[576] = (T)(img)(_n3##x,_n7##y,z,c), I[577] = (T)(img)(_n4##x,_n7##y,z,c), I[578] = (T)(img)(_n5##x,_n7##y,z,c), I[579] = (T)(img)(_n6##x,_n7##y,z,c), I[580] = (T)(img)(_n7##x,_n7##y,z,c), I[581] = (T)(img)(_n8##x,_n7##y,z,c), I[582] = (T)(img)(_n9##x,_n7##y,z,c), I[583] = (T)(img)(_n10##x,_n7##y,z,c), I[584] = (T)(img)(_n11##x,_n7##y,z,c), I[585] = (T)(img)(_n12##x,_n7##y,z,c), I[586] = (T)(img)(_n13##x,_n7##y,z,c), I[587] = (T)(img)(_n14##x,_n7##y,z,c), \ + I[588] = (T)(img)(_p13##x,_n8##y,z,c), I[589] = (T)(img)(_p12##x,_n8##y,z,c), I[590] = (T)(img)(_p11##x,_n8##y,z,c), I[591] = (T)(img)(_p10##x,_n8##y,z,c), I[592] = (T)(img)(_p9##x,_n8##y,z,c), I[593] = (T)(img)(_p8##x,_n8##y,z,c), I[594] = (T)(img)(_p7##x,_n8##y,z,c), I[595] = (T)(img)(_p6##x,_n8##y,z,c), I[596] = (T)(img)(_p5##x,_n8##y,z,c), I[597] = (T)(img)(_p4##x,_n8##y,z,c), I[598] = (T)(img)(_p3##x,_n8##y,z,c), I[599] = (T)(img)(_p2##x,_n8##y,z,c), I[600] = (T)(img)(_p1##x,_n8##y,z,c), I[601] = (T)(img)(x,_n8##y,z,c), I[602] = (T)(img)(_n1##x,_n8##y,z,c), I[603] = (T)(img)(_n2##x,_n8##y,z,c), I[604] = (T)(img)(_n3##x,_n8##y,z,c), I[605] = (T)(img)(_n4##x,_n8##y,z,c), I[606] = (T)(img)(_n5##x,_n8##y,z,c), I[607] = (T)(img)(_n6##x,_n8##y,z,c), I[608] = (T)(img)(_n7##x,_n8##y,z,c), I[609] = (T)(img)(_n8##x,_n8##y,z,c), I[610] = (T)(img)(_n9##x,_n8##y,z,c), I[611] = (T)(img)(_n10##x,_n8##y,z,c), I[612] = (T)(img)(_n11##x,_n8##y,z,c), I[613] = (T)(img)(_n12##x,_n8##y,z,c), I[614] = (T)(img)(_n13##x,_n8##y,z,c), I[615] = (T)(img)(_n14##x,_n8##y,z,c), \ + I[616] = (T)(img)(_p13##x,_n9##y,z,c), I[617] = (T)(img)(_p12##x,_n9##y,z,c), I[618] = (T)(img)(_p11##x,_n9##y,z,c), I[619] = (T)(img)(_p10##x,_n9##y,z,c), I[620] = (T)(img)(_p9##x,_n9##y,z,c), I[621] = (T)(img)(_p8##x,_n9##y,z,c), I[622] = (T)(img)(_p7##x,_n9##y,z,c), I[623] = (T)(img)(_p6##x,_n9##y,z,c), I[624] = (T)(img)(_p5##x,_n9##y,z,c), I[625] = (T)(img)(_p4##x,_n9##y,z,c), I[626] = (T)(img)(_p3##x,_n9##y,z,c), I[627] = (T)(img)(_p2##x,_n9##y,z,c), I[628] = (T)(img)(_p1##x,_n9##y,z,c), I[629] = (T)(img)(x,_n9##y,z,c), I[630] = (T)(img)(_n1##x,_n9##y,z,c), I[631] = (T)(img)(_n2##x,_n9##y,z,c), I[632] = (T)(img)(_n3##x,_n9##y,z,c), I[633] = (T)(img)(_n4##x,_n9##y,z,c), I[634] = (T)(img)(_n5##x,_n9##y,z,c), I[635] = (T)(img)(_n6##x,_n9##y,z,c), I[636] = (T)(img)(_n7##x,_n9##y,z,c), I[637] = (T)(img)(_n8##x,_n9##y,z,c), I[638] = (T)(img)(_n9##x,_n9##y,z,c), I[639] = (T)(img)(_n10##x,_n9##y,z,c), I[640] = (T)(img)(_n11##x,_n9##y,z,c), I[641] = (T)(img)(_n12##x,_n9##y,z,c), I[642] = (T)(img)(_n13##x,_n9##y,z,c), I[643] = (T)(img)(_n14##x,_n9##y,z,c), \ + I[644] = (T)(img)(_p13##x,_n10##y,z,c), I[645] = (T)(img)(_p12##x,_n10##y,z,c), I[646] = (T)(img)(_p11##x,_n10##y,z,c), I[647] = (T)(img)(_p10##x,_n10##y,z,c), I[648] = (T)(img)(_p9##x,_n10##y,z,c), I[649] = (T)(img)(_p8##x,_n10##y,z,c), I[650] = (T)(img)(_p7##x,_n10##y,z,c), I[651] = (T)(img)(_p6##x,_n10##y,z,c), I[652] = (T)(img)(_p5##x,_n10##y,z,c), I[653] = (T)(img)(_p4##x,_n10##y,z,c), I[654] = (T)(img)(_p3##x,_n10##y,z,c), I[655] = (T)(img)(_p2##x,_n10##y,z,c), I[656] = (T)(img)(_p1##x,_n10##y,z,c), I[657] = (T)(img)(x,_n10##y,z,c), I[658] = (T)(img)(_n1##x,_n10##y,z,c), I[659] = (T)(img)(_n2##x,_n10##y,z,c), I[660] = (T)(img)(_n3##x,_n10##y,z,c), I[661] = (T)(img)(_n4##x,_n10##y,z,c), I[662] = (T)(img)(_n5##x,_n10##y,z,c), I[663] = (T)(img)(_n6##x,_n10##y,z,c), I[664] = (T)(img)(_n7##x,_n10##y,z,c), I[665] = (T)(img)(_n8##x,_n10##y,z,c), I[666] = (T)(img)(_n9##x,_n10##y,z,c), I[667] = (T)(img)(_n10##x,_n10##y,z,c), I[668] = (T)(img)(_n11##x,_n10##y,z,c), I[669] = (T)(img)(_n12##x,_n10##y,z,c), I[670] = (T)(img)(_n13##x,_n10##y,z,c), I[671] = (T)(img)(_n14##x,_n10##y,z,c), \ + I[672] = (T)(img)(_p13##x,_n11##y,z,c), I[673] = (T)(img)(_p12##x,_n11##y,z,c), I[674] = (T)(img)(_p11##x,_n11##y,z,c), I[675] = (T)(img)(_p10##x,_n11##y,z,c), I[676] = (T)(img)(_p9##x,_n11##y,z,c), I[677] = (T)(img)(_p8##x,_n11##y,z,c), I[678] = (T)(img)(_p7##x,_n11##y,z,c), I[679] = (T)(img)(_p6##x,_n11##y,z,c), I[680] = (T)(img)(_p5##x,_n11##y,z,c), I[681] = (T)(img)(_p4##x,_n11##y,z,c), I[682] = (T)(img)(_p3##x,_n11##y,z,c), I[683] = (T)(img)(_p2##x,_n11##y,z,c), I[684] = (T)(img)(_p1##x,_n11##y,z,c), I[685] = (T)(img)(x,_n11##y,z,c), I[686] = (T)(img)(_n1##x,_n11##y,z,c), I[687] = (T)(img)(_n2##x,_n11##y,z,c), I[688] = (T)(img)(_n3##x,_n11##y,z,c), I[689] = (T)(img)(_n4##x,_n11##y,z,c), I[690] = (T)(img)(_n5##x,_n11##y,z,c), I[691] = (T)(img)(_n6##x,_n11##y,z,c), I[692] = (T)(img)(_n7##x,_n11##y,z,c), I[693] = (T)(img)(_n8##x,_n11##y,z,c), I[694] = (T)(img)(_n9##x,_n11##y,z,c), I[695] = (T)(img)(_n10##x,_n11##y,z,c), I[696] = (T)(img)(_n11##x,_n11##y,z,c), I[697] = (T)(img)(_n12##x,_n11##y,z,c), I[698] = (T)(img)(_n13##x,_n11##y,z,c), I[699] = (T)(img)(_n14##x,_n11##y,z,c), \ + I[700] = (T)(img)(_p13##x,_n12##y,z,c), I[701] = (T)(img)(_p12##x,_n12##y,z,c), I[702] = (T)(img)(_p11##x,_n12##y,z,c), I[703] = (T)(img)(_p10##x,_n12##y,z,c), I[704] = (T)(img)(_p9##x,_n12##y,z,c), I[705] = (T)(img)(_p8##x,_n12##y,z,c), I[706] = (T)(img)(_p7##x,_n12##y,z,c), I[707] = (T)(img)(_p6##x,_n12##y,z,c), I[708] = (T)(img)(_p5##x,_n12##y,z,c), I[709] = (T)(img)(_p4##x,_n12##y,z,c), I[710] = (T)(img)(_p3##x,_n12##y,z,c), I[711] = (T)(img)(_p2##x,_n12##y,z,c), I[712] = (T)(img)(_p1##x,_n12##y,z,c), I[713] = (T)(img)(x,_n12##y,z,c), I[714] = (T)(img)(_n1##x,_n12##y,z,c), I[715] = (T)(img)(_n2##x,_n12##y,z,c), I[716] = (T)(img)(_n3##x,_n12##y,z,c), I[717] = (T)(img)(_n4##x,_n12##y,z,c), I[718] = (T)(img)(_n5##x,_n12##y,z,c), I[719] = (T)(img)(_n6##x,_n12##y,z,c), I[720] = (T)(img)(_n7##x,_n12##y,z,c), I[721] = (T)(img)(_n8##x,_n12##y,z,c), I[722] = (T)(img)(_n9##x,_n12##y,z,c), I[723] = (T)(img)(_n10##x,_n12##y,z,c), I[724] = (T)(img)(_n11##x,_n12##y,z,c), I[725] = (T)(img)(_n12##x,_n12##y,z,c), I[726] = (T)(img)(_n13##x,_n12##y,z,c), I[727] = (T)(img)(_n14##x,_n12##y,z,c), \ + I[728] = (T)(img)(_p13##x,_n13##y,z,c), I[729] = (T)(img)(_p12##x,_n13##y,z,c), I[730] = (T)(img)(_p11##x,_n13##y,z,c), I[731] = (T)(img)(_p10##x,_n13##y,z,c), I[732] = (T)(img)(_p9##x,_n13##y,z,c), I[733] = (T)(img)(_p8##x,_n13##y,z,c), I[734] = (T)(img)(_p7##x,_n13##y,z,c), I[735] = (T)(img)(_p6##x,_n13##y,z,c), I[736] = (T)(img)(_p5##x,_n13##y,z,c), I[737] = (T)(img)(_p4##x,_n13##y,z,c), I[738] = (T)(img)(_p3##x,_n13##y,z,c), I[739] = (T)(img)(_p2##x,_n13##y,z,c), I[740] = (T)(img)(_p1##x,_n13##y,z,c), I[741] = (T)(img)(x,_n13##y,z,c), I[742] = (T)(img)(_n1##x,_n13##y,z,c), I[743] = (T)(img)(_n2##x,_n13##y,z,c), I[744] = (T)(img)(_n3##x,_n13##y,z,c), I[745] = (T)(img)(_n4##x,_n13##y,z,c), I[746] = (T)(img)(_n5##x,_n13##y,z,c), I[747] = (T)(img)(_n6##x,_n13##y,z,c), I[748] = (T)(img)(_n7##x,_n13##y,z,c), I[749] = (T)(img)(_n8##x,_n13##y,z,c), I[750] = (T)(img)(_n9##x,_n13##y,z,c), I[751] = (T)(img)(_n10##x,_n13##y,z,c), I[752] = (T)(img)(_n11##x,_n13##y,z,c), I[753] = (T)(img)(_n12##x,_n13##y,z,c), I[754] = (T)(img)(_n13##x,_n13##y,z,c), I[755] = (T)(img)(_n14##x,_n13##y,z,c), \ + I[756] = (T)(img)(_p13##x,_n14##y,z,c), I[757] = (T)(img)(_p12##x,_n14##y,z,c), I[758] = (T)(img)(_p11##x,_n14##y,z,c), I[759] = (T)(img)(_p10##x,_n14##y,z,c), I[760] = (T)(img)(_p9##x,_n14##y,z,c), I[761] = (T)(img)(_p8##x,_n14##y,z,c), I[762] = (T)(img)(_p7##x,_n14##y,z,c), I[763] = (T)(img)(_p6##x,_n14##y,z,c), I[764] = (T)(img)(_p5##x,_n14##y,z,c), I[765] = (T)(img)(_p4##x,_n14##y,z,c), I[766] = (T)(img)(_p3##x,_n14##y,z,c), I[767] = (T)(img)(_p2##x,_n14##y,z,c), I[768] = (T)(img)(_p1##x,_n14##y,z,c), I[769] = (T)(img)(x,_n14##y,z,c), I[770] = (T)(img)(_n1##x,_n14##y,z,c), I[771] = (T)(img)(_n2##x,_n14##y,z,c), I[772] = (T)(img)(_n3##x,_n14##y,z,c), I[773] = (T)(img)(_n4##x,_n14##y,z,c), I[774] = (T)(img)(_n5##x,_n14##y,z,c), I[775] = (T)(img)(_n6##x,_n14##y,z,c), I[776] = (T)(img)(_n7##x,_n14##y,z,c), I[777] = (T)(img)(_n8##x,_n14##y,z,c), I[778] = (T)(img)(_n9##x,_n14##y,z,c), I[779] = (T)(img)(_n10##x,_n14##y,z,c), I[780] = (T)(img)(_n11##x,_n14##y,z,c), I[781] = (T)(img)(_n12##x,_n14##y,z,c), I[782] = (T)(img)(_n13##x,_n14##y,z,c), I[783] = (T)(img)(_n14##x,_n14##y,z,c); + +// Define 29x29 loop macros +//------------------------- +#define cimg_for29(bound,i) for (int i = 0, \ + _p14##i = 0, _p13##i = 0, _p12##i = 0, _p11##i = 0, _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11, \ + _n12##i = 12>=(int)(bound)?(int)(bound) - 1:12, \ + _n13##i = 13>=(int)(bound)?(int)(bound) - 1:13, \ + _n14##i = 14>=(int)(bound)?(int)(bound) - 1:14; \ + _n14##i<(int)(bound) || _n13##i==--_n14##i || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n14##i = _n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p14##i = _p13##i, _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i, ++_n14##i) + +#define cimg_for29X(img,x) cimg_for29((img)._width,x) +#define cimg_for29Y(img,y) cimg_for29((img)._height,y) +#define cimg_for29Z(img,z) cimg_for29((img)._depth,z) +#define cimg_for29C(img,c) cimg_for29((img)._spectrum,c) +#define cimg_for29XY(img,x,y) cimg_for29Y(img,y) cimg_for29X(img,x) +#define cimg_for29XZ(img,x,z) cimg_for29Z(img,z) cimg_for29X(img,x) +#define cimg_for29XC(img,x,c) cimg_for29C(img,c) cimg_for29X(img,x) +#define cimg_for29YZ(img,y,z) cimg_for29Z(img,z) cimg_for29Y(img,y) +#define cimg_for29YC(img,y,c) cimg_for29C(img,c) cimg_for29Y(img,y) +#define cimg_for29ZC(img,z,c) cimg_for29C(img,c) cimg_for29Z(img,z) +#define cimg_for29XYZ(img,x,y,z) cimg_for29Z(img,z) cimg_for29XY(img,x,y) +#define cimg_for29XZC(img,x,z,c) cimg_for29C(img,c) cimg_for29XZ(img,x,z) +#define cimg_for29YZC(img,y,z,c) cimg_for29C(img,c) cimg_for29YZ(img,y,z) +#define cimg_for29XYZC(img,x,y,z,c) cimg_for29C(img,c) cimg_for29XYZ(img,x,y,z) + +#define cimg_for_in29(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p14##i = i - 14<0?0:i - 14, \ + _p13##i = i - 13<0?0:i - 13, \ + _p12##i = i - 12<0?0:i - 12, \ + _p11##i = i - 11<0?0:i - 11, \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11, \ + _n12##i = i + 12>=(int)(bound)?(int)(bound) - 1:i + 12, \ + _n13##i = i + 13>=(int)(bound)?(int)(bound) - 1:i + 13, \ + _n14##i = i + 14>=(int)(bound)?(int)(bound) - 1:i + 14; \ + i<=(int)(i1) && (_n14##i<(int)(bound) || _n13##i==--_n14##i || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n14##i = _n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p14##i = _p13##i, _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i, ++_n14##i) + +#define cimg_for_in29X(img,x0,x1,x) cimg_for_in29((img)._width,x0,x1,x) +#define cimg_for_in29Y(img,y0,y1,y) cimg_for_in29((img)._height,y0,y1,y) +#define cimg_for_in29Z(img,z0,z1,z) cimg_for_in29((img)._depth,z0,z1,z) +#define cimg_for_in29C(img,c0,c1,c) cimg_for_in29((img)._spectrum,c0,c1,c) +#define cimg_for_in29XY(img,x0,y0,x1,y1,x,y) cimg_for_in29Y(img,y0,y1,y) cimg_for_in29X(img,x0,x1,x) +#define cimg_for_in29XZ(img,x0,z0,x1,z1,x,z) cimg_for_in29Z(img,z0,z1,z) cimg_for_in29X(img,x0,x1,x) +#define cimg_for_in29XC(img,x0,c0,x1,c1,x,c) cimg_for_in29C(img,c0,c1,c) cimg_for_in29X(img,x0,x1,x) +#define cimg_for_in29YZ(img,y0,z0,y1,z1,y,z) cimg_for_in29Z(img,z0,z1,z) cimg_for_in29Y(img,y0,y1,y) +#define cimg_for_in29YC(img,y0,c0,y1,c1,y,c) cimg_for_in29C(img,c0,c1,c) cimg_for_in29Y(img,y0,y1,y) +#define cimg_for_in29ZC(img,z0,c0,z1,c1,z,c) cimg_for_in29C(img,c0,c1,c) cimg_for_in29Z(img,z0,z1,z) +#define cimg_for_in29XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in29Z(img,z0,z1,z) cimg_for_in29XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in29XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in29C(img,c0,c1,c) cimg_for_in29XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in29YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in29C(img,c0,c1,c) cimg_for_in29YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in29XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in29C(img,c0,c1,c) cimg_for_in29XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for29x29(img,x,y,z,c,I,T) \ + cimg_for29((img)._height,y) for (int x = 0, \ + _p14##x = 0, _p13##x = 0, _p12##x = 0, _p11##x = 0, _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = 11>=((img)._width)?(img).width() - 1:11, \ + _n12##x = 12>=((img)._width)?(img).width() - 1:12, \ + _n13##x = 13>=((img)._width)?(img).width() - 1:13, \ + _n14##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = I[11] = I[12] = I[13] = I[14] = (T)(img)(0,_p14##y,z,c)), \ + (I[29] = I[30] = I[31] = I[32] = I[33] = I[34] = I[35] = I[36] = I[37] = I[38] = I[39] = I[40] = I[41] = I[42] = I[43] = (T)(img)(0,_p13##y,z,c)), \ + (I[58] = I[59] = I[60] = I[61] = I[62] = I[63] = I[64] = I[65] = I[66] = I[67] = I[68] = I[69] = I[70] = I[71] = I[72] = (T)(img)(0,_p12##y,z,c)), \ + (I[87] = I[88] = I[89] = I[90] = I[91] = I[92] = I[93] = I[94] = I[95] = I[96] = I[97] = I[98] = I[99] = I[100] = I[101] = (T)(img)(0,_p11##y,z,c)), \ + (I[116] = I[117] = I[118] = I[119] = I[120] = I[121] = I[122] = I[123] = I[124] = I[125] = I[126] = I[127] = I[128] = I[129] = I[130] = (T)(img)(0,_p10##y,z,c)), \ + (I[145] = I[146] = I[147] = I[148] = I[149] = I[150] = I[151] = I[152] = I[153] = I[154] = I[155] = I[156] = I[157] = I[158] = I[159] = (T)(img)(0,_p9##y,z,c)), \ + (I[174] = I[175] = I[176] = I[177] = I[178] = I[179] = I[180] = I[181] = I[182] = I[183] = I[184] = I[185] = I[186] = I[187] = I[188] = (T)(img)(0,_p8##y,z,c)), \ + (I[203] = I[204] = I[205] = I[206] = I[207] = I[208] = I[209] = I[210] = I[211] = I[212] = I[213] = I[214] = I[215] = I[216] = I[217] = (T)(img)(0,_p7##y,z,c)), \ + (I[232] = I[233] = I[234] = I[235] = I[236] = I[237] = I[238] = I[239] = I[240] = I[241] = I[242] = I[243] = I[244] = I[245] = I[246] = (T)(img)(0,_p6##y,z,c)), \ + (I[261] = I[262] = I[263] = I[264] = I[265] = I[266] = I[267] = I[268] = I[269] = I[270] = I[271] = I[272] = I[273] = I[274] = I[275] = (T)(img)(0,_p5##y,z,c)), \ + (I[290] = I[291] = I[292] = I[293] = I[294] = I[295] = I[296] = I[297] = I[298] = I[299] = I[300] = I[301] = I[302] = I[303] = I[304] = (T)(img)(0,_p4##y,z,c)), \ + (I[319] = I[320] = I[321] = I[322] = I[323] = I[324] = I[325] = I[326] = I[327] = I[328] = I[329] = I[330] = I[331] = I[332] = I[333] = (T)(img)(0,_p3##y,z,c)), \ + (I[348] = I[349] = I[350] = I[351] = I[352] = I[353] = I[354] = I[355] = I[356] = I[357] = I[358] = I[359] = I[360] = I[361] = I[362] = (T)(img)(0,_p2##y,z,c)), \ + (I[377] = I[378] = I[379] = I[380] = I[381] = I[382] = I[383] = I[384] = I[385] = I[386] = I[387] = I[388] = I[389] = I[390] = I[391] = (T)(img)(0,_p1##y,z,c)), \ + (I[406] = I[407] = I[408] = I[409] = I[410] = I[411] = I[412] = I[413] = I[414] = I[415] = I[416] = I[417] = I[418] = I[419] = I[420] = (T)(img)(0,y,z,c)), \ + (I[435] = I[436] = I[437] = I[438] = I[439] = I[440] = I[441] = I[442] = I[443] = I[444] = I[445] = I[446] = I[447] = I[448] = I[449] = (T)(img)(0,_n1##y,z,c)), \ + (I[464] = I[465] = I[466] = I[467] = I[468] = I[469] = I[470] = I[471] = I[472] = I[473] = I[474] = I[475] = I[476] = I[477] = I[478] = (T)(img)(0,_n2##y,z,c)), \ + (I[493] = I[494] = I[495] = I[496] = I[497] = I[498] = I[499] = I[500] = I[501] = I[502] = I[503] = I[504] = I[505] = I[506] = I[507] = (T)(img)(0,_n3##y,z,c)), \ + (I[522] = I[523] = I[524] = I[525] = I[526] = I[527] = I[528] = I[529] = I[530] = I[531] = I[532] = I[533] = I[534] = I[535] = I[536] = (T)(img)(0,_n4##y,z,c)), \ + (I[551] = I[552] = I[553] = I[554] = I[555] = I[556] = I[557] = I[558] = I[559] = I[560] = I[561] = I[562] = I[563] = I[564] = I[565] = (T)(img)(0,_n5##y,z,c)), \ + (I[580] = I[581] = I[582] = I[583] = I[584] = I[585] = I[586] = I[587] = I[588] = I[589] = I[590] = I[591] = I[592] = I[593] = I[594] = (T)(img)(0,_n6##y,z,c)), \ + (I[609] = I[610] = I[611] = I[612] = I[613] = I[614] = I[615] = I[616] = I[617] = I[618] = I[619] = I[620] = I[621] = I[622] = I[623] = (T)(img)(0,_n7##y,z,c)), \ + (I[638] = I[639] = I[640] = I[641] = I[642] = I[643] = I[644] = I[645] = I[646] = I[647] = I[648] = I[649] = I[650] = I[651] = I[652] = (T)(img)(0,_n8##y,z,c)), \ + (I[667] = I[668] = I[669] = I[670] = I[671] = I[672] = I[673] = I[674] = I[675] = I[676] = I[677] = I[678] = I[679] = I[680] = I[681] = (T)(img)(0,_n9##y,z,c)), \ + (I[696] = I[697] = I[698] = I[699] = I[700] = I[701] = I[702] = I[703] = I[704] = I[705] = I[706] = I[707] = I[708] = I[709] = I[710] = (T)(img)(0,_n10##y,z,c)), \ + (I[725] = I[726] = I[727] = I[728] = I[729] = I[730] = I[731] = I[732] = I[733] = I[734] = I[735] = I[736] = I[737] = I[738] = I[739] = (T)(img)(0,_n11##y,z,c)), \ + (I[754] = I[755] = I[756] = I[757] = I[758] = I[759] = I[760] = I[761] = I[762] = I[763] = I[764] = I[765] = I[766] = I[767] = I[768] = (T)(img)(0,_n12##y,z,c)), \ + (I[783] = I[784] = I[785] = I[786] = I[787] = I[788] = I[789] = I[790] = I[791] = I[792] = I[793] = I[794] = I[795] = I[796] = I[797] = (T)(img)(0,_n13##y,z,c)), \ + (I[812] = I[813] = I[814] = I[815] = I[816] = I[817] = I[818] = I[819] = I[820] = I[821] = I[822] = I[823] = I[824] = I[825] = I[826] = (T)(img)(0,_n14##y,z,c)), \ + (I[15] = (T)(img)(_n1##x,_p14##y,z,c)), \ + (I[44] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[73] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[102] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[131] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[160] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[189] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[218] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[247] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[276] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[305] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[334] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[363] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[392] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[421] = (T)(img)(_n1##x,y,z,c)), \ + (I[450] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[479] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[508] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[537] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[566] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[595] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[624] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[653] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[682] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[711] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[740] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[769] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[798] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[827] = (T)(img)(_n1##x,_n14##y,z,c)), \ + (I[16] = (T)(img)(_n2##x,_p14##y,z,c)), \ + (I[45] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[74] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[103] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[132] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[161] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[190] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[219] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[248] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[277] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[306] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[335] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[364] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[393] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[422] = (T)(img)(_n2##x,y,z,c)), \ + (I[451] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[480] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[509] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[538] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[567] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[596] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[625] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[654] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[683] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[712] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[741] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[770] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[799] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[828] = (T)(img)(_n2##x,_n14##y,z,c)), \ + (I[17] = (T)(img)(_n3##x,_p14##y,z,c)), \ + (I[46] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[75] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[104] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[133] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[162] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[191] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[220] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[249] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[278] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[307] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[336] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[365] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[394] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[423] = (T)(img)(_n3##x,y,z,c)), \ + (I[452] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[481] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[510] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[539] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[568] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[597] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[626] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[655] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[684] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[713] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[742] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[771] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[800] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[829] = (T)(img)(_n3##x,_n14##y,z,c)), \ + (I[18] = (T)(img)(_n4##x,_p14##y,z,c)), \ + (I[47] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[76] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[105] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[134] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[163] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[192] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[221] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[250] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[279] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[308] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[337] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[366] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[395] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[424] = (T)(img)(_n4##x,y,z,c)), \ + (I[453] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[482] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[511] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[540] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[569] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[598] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[627] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[656] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[685] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[714] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[743] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[772] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[801] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[830] = (T)(img)(_n4##x,_n14##y,z,c)), \ + (I[19] = (T)(img)(_n5##x,_p14##y,z,c)), \ + (I[48] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[77] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[106] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[135] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[164] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[193] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[222] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[251] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[280] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[309] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[338] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[367] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[396] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[425] = (T)(img)(_n5##x,y,z,c)), \ + (I[454] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[483] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[512] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[541] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[570] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[599] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[628] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[657] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[686] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[715] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[744] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[773] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[802] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[831] = (T)(img)(_n5##x,_n14##y,z,c)), \ + (I[20] = (T)(img)(_n6##x,_p14##y,z,c)), \ + (I[49] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[78] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[107] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[136] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[165] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[194] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[223] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[252] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[281] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[310] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[339] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[368] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[397] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[426] = (T)(img)(_n6##x,y,z,c)), \ + (I[455] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[484] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[513] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[542] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[571] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[600] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[629] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[658] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[687] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[716] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[745] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[774] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[803] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[832] = (T)(img)(_n6##x,_n14##y,z,c)), \ + (I[21] = (T)(img)(_n7##x,_p14##y,z,c)), \ + (I[50] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[79] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[108] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[137] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[166] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[195] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[224] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[253] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[282] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[311] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[340] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[369] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[398] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[427] = (T)(img)(_n7##x,y,z,c)), \ + (I[456] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[485] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[514] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[543] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[572] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[601] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[630] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[659] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[688] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[717] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[746] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[775] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[804] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[833] = (T)(img)(_n7##x,_n14##y,z,c)), \ + (I[22] = (T)(img)(_n8##x,_p14##y,z,c)), \ + (I[51] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[80] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[109] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[138] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[167] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[196] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[225] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[254] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[283] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[312] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[341] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[370] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[399] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[428] = (T)(img)(_n8##x,y,z,c)), \ + (I[457] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[486] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[515] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[544] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[573] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[602] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[631] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[660] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[689] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[718] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[747] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[776] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[805] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[834] = (T)(img)(_n8##x,_n14##y,z,c)), \ + (I[23] = (T)(img)(_n9##x,_p14##y,z,c)), \ + (I[52] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[81] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[110] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[139] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[168] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[197] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[226] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[255] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[284] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[313] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[342] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[371] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[400] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[429] = (T)(img)(_n9##x,y,z,c)), \ + (I[458] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[487] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[516] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[545] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[574] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[603] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[632] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[661] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[690] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[719] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[748] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[777] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[806] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[835] = (T)(img)(_n9##x,_n14##y,z,c)), \ + (I[24] = (T)(img)(_n10##x,_p14##y,z,c)), \ + (I[53] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[82] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[111] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[140] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[169] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[198] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[227] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[256] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[285] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[314] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[343] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[372] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[401] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[430] = (T)(img)(_n10##x,y,z,c)), \ + (I[459] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[488] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[517] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[546] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[575] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[604] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[633] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[662] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[691] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[720] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[749] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[778] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[807] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[836] = (T)(img)(_n10##x,_n14##y,z,c)), \ + (I[25] = (T)(img)(_n11##x,_p14##y,z,c)), \ + (I[54] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[83] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[112] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[141] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[170] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[199] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[228] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[257] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[286] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[315] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[344] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[373] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[402] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[431] = (T)(img)(_n11##x,y,z,c)), \ + (I[460] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[489] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[518] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[547] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[576] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[605] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[634] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[663] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[692] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[721] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[750] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[779] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[808] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[837] = (T)(img)(_n11##x,_n14##y,z,c)), \ + (I[26] = (T)(img)(_n12##x,_p14##y,z,c)), \ + (I[55] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[84] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[113] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[142] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[171] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[200] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[229] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[258] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[287] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[316] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[345] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[374] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[403] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[432] = (T)(img)(_n12##x,y,z,c)), \ + (I[461] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[490] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[519] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[548] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[577] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[606] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[635] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[664] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[693] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[722] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[751] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[780] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[809] = (T)(img)(_n12##x,_n13##y,z,c)), \ + (I[838] = (T)(img)(_n12##x,_n14##y,z,c)), \ + (I[27] = (T)(img)(_n13##x,_p14##y,z,c)), \ + (I[56] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[85] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[114] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[143] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[172] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[201] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[230] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[259] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[288] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[317] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[346] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[375] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[404] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[433] = (T)(img)(_n13##x,y,z,c)), \ + (I[462] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[491] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[520] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[549] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[578] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[607] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[636] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[665] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[694] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[723] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[752] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[781] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[810] = (T)(img)(_n13##x,_n13##y,z,c)), \ + (I[839] = (T)(img)(_n13##x,_n14##y,z,c)), \ + 14>=((img)._width)?(img).width() - 1:14); \ + (_n14##x<(img).width() && ( \ + (I[28] = (T)(img)(_n14##x,_p14##y,z,c)), \ + (I[57] = (T)(img)(_n14##x,_p13##y,z,c)), \ + (I[86] = (T)(img)(_n14##x,_p12##y,z,c)), \ + (I[115] = (T)(img)(_n14##x,_p11##y,z,c)), \ + (I[144] = (T)(img)(_n14##x,_p10##y,z,c)), \ + (I[173] = (T)(img)(_n14##x,_p9##y,z,c)), \ + (I[202] = (T)(img)(_n14##x,_p8##y,z,c)), \ + (I[231] = (T)(img)(_n14##x,_p7##y,z,c)), \ + (I[260] = (T)(img)(_n14##x,_p6##y,z,c)), \ + (I[289] = (T)(img)(_n14##x,_p5##y,z,c)), \ + (I[318] = (T)(img)(_n14##x,_p4##y,z,c)), \ + (I[347] = (T)(img)(_n14##x,_p3##y,z,c)), \ + (I[376] = (T)(img)(_n14##x,_p2##y,z,c)), \ + (I[405] = (T)(img)(_n14##x,_p1##y,z,c)), \ + (I[434] = (T)(img)(_n14##x,y,z,c)), \ + (I[463] = (T)(img)(_n14##x,_n1##y,z,c)), \ + (I[492] = (T)(img)(_n14##x,_n2##y,z,c)), \ + (I[521] = (T)(img)(_n14##x,_n3##y,z,c)), \ + (I[550] = (T)(img)(_n14##x,_n4##y,z,c)), \ + (I[579] = (T)(img)(_n14##x,_n5##y,z,c)), \ + (I[608] = (T)(img)(_n14##x,_n6##y,z,c)), \ + (I[637] = (T)(img)(_n14##x,_n7##y,z,c)), \ + (I[666] = (T)(img)(_n14##x,_n8##y,z,c)), \ + (I[695] = (T)(img)(_n14##x,_n9##y,z,c)), \ + (I[724] = (T)(img)(_n14##x,_n10##y,z,c)), \ + (I[753] = (T)(img)(_n14##x,_n11##y,z,c)), \ + (I[782] = (T)(img)(_n14##x,_n12##y,z,c)), \ + (I[811] = (T)(img)(_n14##x,_n13##y,z,c)), \ + (I[840] = (T)(img)(_n14##x,_n14##y,z,c)),1)) || \ + _n13##x==--_n14##x || _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n14##x = _n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], \ + I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], \ + I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], \ + I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], \ + I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], \ + I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], \ + I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], \ + I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], \ + I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], \ + I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], \ + I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], \ + I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], \ + I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], \ + I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], \ + I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], \ + I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], \ + I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], \ + I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], \ + I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], \ + I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], \ + I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], \ + I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], \ + I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], I[649] = I[650], I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], \ + I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], I[671] = I[672], I[672] = I[673], I[673] = I[674], I[674] = I[675], I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], I[681] = I[682], I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], I[689] = I[690], I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], \ + I[696] = I[697], I[697] = I[698], I[698] = I[699], I[699] = I[700], I[700] = I[701], I[701] = I[702], I[702] = I[703], I[703] = I[704], I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], I[712] = I[713], I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], I[719] = I[720], I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], \ + I[725] = I[726], I[726] = I[727], I[727] = I[728], I[728] = I[729], I[729] = I[730], I[730] = I[731], I[731] = I[732], I[732] = I[733], I[733] = I[734], I[734] = I[735], I[735] = I[736], I[736] = I[737], I[737] = I[738], I[738] = I[739], I[739] = I[740], I[740] = I[741], I[741] = I[742], I[742] = I[743], I[743] = I[744], I[744] = I[745], I[745] = I[746], I[746] = I[747], I[747] = I[748], I[748] = I[749], I[749] = I[750], I[750] = I[751], I[751] = I[752], I[752] = I[753], \ + I[754] = I[755], I[755] = I[756], I[756] = I[757], I[757] = I[758], I[758] = I[759], I[759] = I[760], I[760] = I[761], I[761] = I[762], I[762] = I[763], I[763] = I[764], I[764] = I[765], I[765] = I[766], I[766] = I[767], I[767] = I[768], I[768] = I[769], I[769] = I[770], I[770] = I[771], I[771] = I[772], I[772] = I[773], I[773] = I[774], I[774] = I[775], I[775] = I[776], I[776] = I[777], I[777] = I[778], I[778] = I[779], I[779] = I[780], I[780] = I[781], I[781] = I[782], \ + I[783] = I[784], I[784] = I[785], I[785] = I[786], I[786] = I[787], I[787] = I[788], I[788] = I[789], I[789] = I[790], I[790] = I[791], I[791] = I[792], I[792] = I[793], I[793] = I[794], I[794] = I[795], I[795] = I[796], I[796] = I[797], I[797] = I[798], I[798] = I[799], I[799] = I[800], I[800] = I[801], I[801] = I[802], I[802] = I[803], I[803] = I[804], I[804] = I[805], I[805] = I[806], I[806] = I[807], I[807] = I[808], I[808] = I[809], I[809] = I[810], I[810] = I[811], \ + I[812] = I[813], I[813] = I[814], I[814] = I[815], I[815] = I[816], I[816] = I[817], I[817] = I[818], I[818] = I[819], I[819] = I[820], I[820] = I[821], I[821] = I[822], I[822] = I[823], I[823] = I[824], I[824] = I[825], I[825] = I[826], I[826] = I[827], I[827] = I[828], I[828] = I[829], I[829] = I[830], I[830] = I[831], I[831] = I[832], I[832] = I[833], I[833] = I[834], I[834] = I[835], I[835] = I[836], I[836] = I[837], I[837] = I[838], I[838] = I[839], I[839] = I[840], \ + _p14##x = _p13##x, _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x, ++_n14##x) + +#define cimg_for_in29x29(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in29((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p14##x = x - 14<0?0:x - 14, \ + _p13##x = x - 13<0?0:x - 13, \ + _p12##x = x - 12<0?0:x - 12, \ + _p11##x = x - 11<0?0:x - 11, \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = x + 11>=(img).width()?(img).width() - 1:x + 11, \ + _n12##x = x + 12>=(img).width()?(img).width() - 1:x + 12, \ + _n13##x = x + 13>=(img).width()?(img).width() - 1:x + 13, \ + _n14##x = (int)( \ + (I[0] = (T)(img)(_p14##x,_p14##y,z,c)), \ + (I[29] = (T)(img)(_p14##x,_p13##y,z,c)), \ + (I[58] = (T)(img)(_p14##x,_p12##y,z,c)), \ + (I[87] = (T)(img)(_p14##x,_p11##y,z,c)), \ + (I[116] = (T)(img)(_p14##x,_p10##y,z,c)), \ + (I[145] = (T)(img)(_p14##x,_p9##y,z,c)), \ + (I[174] = (T)(img)(_p14##x,_p8##y,z,c)), \ + (I[203] = (T)(img)(_p14##x,_p7##y,z,c)), \ + (I[232] = (T)(img)(_p14##x,_p6##y,z,c)), \ + (I[261] = (T)(img)(_p14##x,_p5##y,z,c)), \ + (I[290] = (T)(img)(_p14##x,_p4##y,z,c)), \ + (I[319] = (T)(img)(_p14##x,_p3##y,z,c)), \ + (I[348] = (T)(img)(_p14##x,_p2##y,z,c)), \ + (I[377] = (T)(img)(_p14##x,_p1##y,z,c)), \ + (I[406] = (T)(img)(_p14##x,y,z,c)), \ + (I[435] = (T)(img)(_p14##x,_n1##y,z,c)), \ + (I[464] = (T)(img)(_p14##x,_n2##y,z,c)), \ + (I[493] = (T)(img)(_p14##x,_n3##y,z,c)), \ + (I[522] = (T)(img)(_p14##x,_n4##y,z,c)), \ + (I[551] = (T)(img)(_p14##x,_n5##y,z,c)), \ + (I[580] = (T)(img)(_p14##x,_n6##y,z,c)), \ + (I[609] = (T)(img)(_p14##x,_n7##y,z,c)), \ + (I[638] = (T)(img)(_p14##x,_n8##y,z,c)), \ + (I[667] = (T)(img)(_p14##x,_n9##y,z,c)), \ + (I[696] = (T)(img)(_p14##x,_n10##y,z,c)), \ + (I[725] = (T)(img)(_p14##x,_n11##y,z,c)), \ + (I[754] = (T)(img)(_p14##x,_n12##y,z,c)), \ + (I[783] = (T)(img)(_p14##x,_n13##y,z,c)), \ + (I[812] = (T)(img)(_p14##x,_n14##y,z,c)), \ + (I[1] = (T)(img)(_p13##x,_p14##y,z,c)), \ + (I[30] = (T)(img)(_p13##x,_p13##y,z,c)), \ + (I[59] = (T)(img)(_p13##x,_p12##y,z,c)), \ + (I[88] = (T)(img)(_p13##x,_p11##y,z,c)), \ + (I[117] = (T)(img)(_p13##x,_p10##y,z,c)), \ + (I[146] = (T)(img)(_p13##x,_p9##y,z,c)), \ + (I[175] = (T)(img)(_p13##x,_p8##y,z,c)), \ + (I[204] = (T)(img)(_p13##x,_p7##y,z,c)), \ + (I[233] = (T)(img)(_p13##x,_p6##y,z,c)), \ + (I[262] = (T)(img)(_p13##x,_p5##y,z,c)), \ + (I[291] = (T)(img)(_p13##x,_p4##y,z,c)), \ + (I[320] = (T)(img)(_p13##x,_p3##y,z,c)), \ + (I[349] = (T)(img)(_p13##x,_p2##y,z,c)), \ + (I[378] = (T)(img)(_p13##x,_p1##y,z,c)), \ + (I[407] = (T)(img)(_p13##x,y,z,c)), \ + (I[436] = (T)(img)(_p13##x,_n1##y,z,c)), \ + (I[465] = (T)(img)(_p13##x,_n2##y,z,c)), \ + (I[494] = (T)(img)(_p13##x,_n3##y,z,c)), \ + (I[523] = (T)(img)(_p13##x,_n4##y,z,c)), \ + (I[552] = (T)(img)(_p13##x,_n5##y,z,c)), \ + (I[581] = (T)(img)(_p13##x,_n6##y,z,c)), \ + (I[610] = (T)(img)(_p13##x,_n7##y,z,c)), \ + (I[639] = (T)(img)(_p13##x,_n8##y,z,c)), \ + (I[668] = (T)(img)(_p13##x,_n9##y,z,c)), \ + (I[697] = (T)(img)(_p13##x,_n10##y,z,c)), \ + (I[726] = (T)(img)(_p13##x,_n11##y,z,c)), \ + (I[755] = (T)(img)(_p13##x,_n12##y,z,c)), \ + (I[784] = (T)(img)(_p13##x,_n13##y,z,c)), \ + (I[813] = (T)(img)(_p13##x,_n14##y,z,c)), \ + (I[2] = (T)(img)(_p12##x,_p14##y,z,c)), \ + (I[31] = (T)(img)(_p12##x,_p13##y,z,c)), \ + (I[60] = (T)(img)(_p12##x,_p12##y,z,c)), \ + (I[89] = (T)(img)(_p12##x,_p11##y,z,c)), \ + (I[118] = (T)(img)(_p12##x,_p10##y,z,c)), \ + (I[147] = (T)(img)(_p12##x,_p9##y,z,c)), \ + (I[176] = (T)(img)(_p12##x,_p8##y,z,c)), \ + (I[205] = (T)(img)(_p12##x,_p7##y,z,c)), \ + (I[234] = (T)(img)(_p12##x,_p6##y,z,c)), \ + (I[263] = (T)(img)(_p12##x,_p5##y,z,c)), \ + (I[292] = (T)(img)(_p12##x,_p4##y,z,c)), \ + (I[321] = (T)(img)(_p12##x,_p3##y,z,c)), \ + (I[350] = (T)(img)(_p12##x,_p2##y,z,c)), \ + (I[379] = (T)(img)(_p12##x,_p1##y,z,c)), \ + (I[408] = (T)(img)(_p12##x,y,z,c)), \ + (I[437] = (T)(img)(_p12##x,_n1##y,z,c)), \ + (I[466] = (T)(img)(_p12##x,_n2##y,z,c)), \ + (I[495] = (T)(img)(_p12##x,_n3##y,z,c)), \ + (I[524] = (T)(img)(_p12##x,_n4##y,z,c)), \ + (I[553] = (T)(img)(_p12##x,_n5##y,z,c)), \ + (I[582] = (T)(img)(_p12##x,_n6##y,z,c)), \ + (I[611] = (T)(img)(_p12##x,_n7##y,z,c)), \ + (I[640] = (T)(img)(_p12##x,_n8##y,z,c)), \ + (I[669] = (T)(img)(_p12##x,_n9##y,z,c)), \ + (I[698] = (T)(img)(_p12##x,_n10##y,z,c)), \ + (I[727] = (T)(img)(_p12##x,_n11##y,z,c)), \ + (I[756] = (T)(img)(_p12##x,_n12##y,z,c)), \ + (I[785] = (T)(img)(_p12##x,_n13##y,z,c)), \ + (I[814] = (T)(img)(_p12##x,_n14##y,z,c)), \ + (I[3] = (T)(img)(_p11##x,_p14##y,z,c)), \ + (I[32] = (T)(img)(_p11##x,_p13##y,z,c)), \ + (I[61] = (T)(img)(_p11##x,_p12##y,z,c)), \ + (I[90] = (T)(img)(_p11##x,_p11##y,z,c)), \ + (I[119] = (T)(img)(_p11##x,_p10##y,z,c)), \ + (I[148] = (T)(img)(_p11##x,_p9##y,z,c)), \ + (I[177] = (T)(img)(_p11##x,_p8##y,z,c)), \ + (I[206] = (T)(img)(_p11##x,_p7##y,z,c)), \ + (I[235] = (T)(img)(_p11##x,_p6##y,z,c)), \ + (I[264] = (T)(img)(_p11##x,_p5##y,z,c)), \ + (I[293] = (T)(img)(_p11##x,_p4##y,z,c)), \ + (I[322] = (T)(img)(_p11##x,_p3##y,z,c)), \ + (I[351] = (T)(img)(_p11##x,_p2##y,z,c)), \ + (I[380] = (T)(img)(_p11##x,_p1##y,z,c)), \ + (I[409] = (T)(img)(_p11##x,y,z,c)), \ + (I[438] = (T)(img)(_p11##x,_n1##y,z,c)), \ + (I[467] = (T)(img)(_p11##x,_n2##y,z,c)), \ + (I[496] = (T)(img)(_p11##x,_n3##y,z,c)), \ + (I[525] = (T)(img)(_p11##x,_n4##y,z,c)), \ + (I[554] = (T)(img)(_p11##x,_n5##y,z,c)), \ + (I[583] = (T)(img)(_p11##x,_n6##y,z,c)), \ + (I[612] = (T)(img)(_p11##x,_n7##y,z,c)), \ + (I[641] = (T)(img)(_p11##x,_n8##y,z,c)), \ + (I[670] = (T)(img)(_p11##x,_n9##y,z,c)), \ + (I[699] = (T)(img)(_p11##x,_n10##y,z,c)), \ + (I[728] = (T)(img)(_p11##x,_n11##y,z,c)), \ + (I[757] = (T)(img)(_p11##x,_n12##y,z,c)), \ + (I[786] = (T)(img)(_p11##x,_n13##y,z,c)), \ + (I[815] = (T)(img)(_p11##x,_n14##y,z,c)), \ + (I[4] = (T)(img)(_p10##x,_p14##y,z,c)), \ + (I[33] = (T)(img)(_p10##x,_p13##y,z,c)), \ + (I[62] = (T)(img)(_p10##x,_p12##y,z,c)), \ + (I[91] = (T)(img)(_p10##x,_p11##y,z,c)), \ + (I[120] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[149] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[178] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[207] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[236] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[265] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[294] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[323] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[352] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[381] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[410] = (T)(img)(_p10##x,y,z,c)), \ + (I[439] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[468] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[497] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[526] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[555] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[584] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[613] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[642] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[671] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[700] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[729] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[758] = (T)(img)(_p10##x,_n12##y,z,c)), \ + (I[787] = (T)(img)(_p10##x,_n13##y,z,c)), \ + (I[816] = (T)(img)(_p10##x,_n14##y,z,c)), \ + (I[5] = (T)(img)(_p9##x,_p14##y,z,c)), \ + (I[34] = (T)(img)(_p9##x,_p13##y,z,c)), \ + (I[63] = (T)(img)(_p9##x,_p12##y,z,c)), \ + (I[92] = (T)(img)(_p9##x,_p11##y,z,c)), \ + (I[121] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[150] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[179] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[208] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[237] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[266] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[295] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[324] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[353] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[382] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[411] = (T)(img)(_p9##x,y,z,c)), \ + (I[440] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[469] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[498] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[527] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[556] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[585] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[614] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[643] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[672] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[701] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[730] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[759] = (T)(img)(_p9##x,_n12##y,z,c)), \ + (I[788] = (T)(img)(_p9##x,_n13##y,z,c)), \ + (I[817] = (T)(img)(_p9##x,_n14##y,z,c)), \ + (I[6] = (T)(img)(_p8##x,_p14##y,z,c)), \ + (I[35] = (T)(img)(_p8##x,_p13##y,z,c)), \ + (I[64] = (T)(img)(_p8##x,_p12##y,z,c)), \ + (I[93] = (T)(img)(_p8##x,_p11##y,z,c)), \ + (I[122] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[151] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[180] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[209] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[238] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[267] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[296] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[325] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[354] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[383] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[412] = (T)(img)(_p8##x,y,z,c)), \ + (I[441] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[470] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[499] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[528] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[557] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[586] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[615] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[644] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[673] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[702] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[731] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[760] = (T)(img)(_p8##x,_n12##y,z,c)), \ + (I[789] = (T)(img)(_p8##x,_n13##y,z,c)), \ + (I[818] = (T)(img)(_p8##x,_n14##y,z,c)), \ + (I[7] = (T)(img)(_p7##x,_p14##y,z,c)), \ + (I[36] = (T)(img)(_p7##x,_p13##y,z,c)), \ + (I[65] = (T)(img)(_p7##x,_p12##y,z,c)), \ + (I[94] = (T)(img)(_p7##x,_p11##y,z,c)), \ + (I[123] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[152] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[181] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[210] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[239] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[268] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[297] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[326] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[355] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[384] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[413] = (T)(img)(_p7##x,y,z,c)), \ + (I[442] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[471] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[500] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[529] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[558] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[587] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[616] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[645] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[674] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[703] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[732] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[761] = (T)(img)(_p7##x,_n12##y,z,c)), \ + (I[790] = (T)(img)(_p7##x,_n13##y,z,c)), \ + (I[819] = (T)(img)(_p7##x,_n14##y,z,c)), \ + (I[8] = (T)(img)(_p6##x,_p14##y,z,c)), \ + (I[37] = (T)(img)(_p6##x,_p13##y,z,c)), \ + (I[66] = (T)(img)(_p6##x,_p12##y,z,c)), \ + (I[95] = (T)(img)(_p6##x,_p11##y,z,c)), \ + (I[124] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[153] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[182] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[211] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[240] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[269] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[298] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[327] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[356] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[385] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[414] = (T)(img)(_p6##x,y,z,c)), \ + (I[443] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[472] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[501] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[530] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[559] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[588] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[617] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[646] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[675] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[704] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[733] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[762] = (T)(img)(_p6##x,_n12##y,z,c)), \ + (I[791] = (T)(img)(_p6##x,_n13##y,z,c)), \ + (I[820] = (T)(img)(_p6##x,_n14##y,z,c)), \ + (I[9] = (T)(img)(_p5##x,_p14##y,z,c)), \ + (I[38] = (T)(img)(_p5##x,_p13##y,z,c)), \ + (I[67] = (T)(img)(_p5##x,_p12##y,z,c)), \ + (I[96] = (T)(img)(_p5##x,_p11##y,z,c)), \ + (I[125] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[154] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[183] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[212] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[241] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[270] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[299] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[328] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[357] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[386] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[415] = (T)(img)(_p5##x,y,z,c)), \ + (I[444] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[473] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[502] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[531] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[560] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[589] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[618] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[647] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[676] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[705] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[734] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[763] = (T)(img)(_p5##x,_n12##y,z,c)), \ + (I[792] = (T)(img)(_p5##x,_n13##y,z,c)), \ + (I[821] = (T)(img)(_p5##x,_n14##y,z,c)), \ + (I[10] = (T)(img)(_p4##x,_p14##y,z,c)), \ + (I[39] = (T)(img)(_p4##x,_p13##y,z,c)), \ + (I[68] = (T)(img)(_p4##x,_p12##y,z,c)), \ + (I[97] = (T)(img)(_p4##x,_p11##y,z,c)), \ + (I[126] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[155] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[184] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[213] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[242] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[271] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[300] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[329] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[358] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[387] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[416] = (T)(img)(_p4##x,y,z,c)), \ + (I[445] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[474] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[503] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[532] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[561] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[590] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[619] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[648] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[677] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[706] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[735] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[764] = (T)(img)(_p4##x,_n12##y,z,c)), \ + (I[793] = (T)(img)(_p4##x,_n13##y,z,c)), \ + (I[822] = (T)(img)(_p4##x,_n14##y,z,c)), \ + (I[11] = (T)(img)(_p3##x,_p14##y,z,c)), \ + (I[40] = (T)(img)(_p3##x,_p13##y,z,c)), \ + (I[69] = (T)(img)(_p3##x,_p12##y,z,c)), \ + (I[98] = (T)(img)(_p3##x,_p11##y,z,c)), \ + (I[127] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[156] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[185] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[214] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[243] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[272] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[301] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[330] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[359] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[388] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[417] = (T)(img)(_p3##x,y,z,c)), \ + (I[446] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[475] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[504] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[533] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[562] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[591] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[620] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[649] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[678] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[707] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[736] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[765] = (T)(img)(_p3##x,_n12##y,z,c)), \ + (I[794] = (T)(img)(_p3##x,_n13##y,z,c)), \ + (I[823] = (T)(img)(_p3##x,_n14##y,z,c)), \ + (I[12] = (T)(img)(_p2##x,_p14##y,z,c)), \ + (I[41] = (T)(img)(_p2##x,_p13##y,z,c)), \ + (I[70] = (T)(img)(_p2##x,_p12##y,z,c)), \ + (I[99] = (T)(img)(_p2##x,_p11##y,z,c)), \ + (I[128] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[157] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[186] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[215] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[244] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[273] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[302] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[331] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[360] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[389] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[418] = (T)(img)(_p2##x,y,z,c)), \ + (I[447] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[476] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[505] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[534] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[563] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[592] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[621] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[650] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[679] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[708] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[737] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[766] = (T)(img)(_p2##x,_n12##y,z,c)), \ + (I[795] = (T)(img)(_p2##x,_n13##y,z,c)), \ + (I[824] = (T)(img)(_p2##x,_n14##y,z,c)), \ + (I[13] = (T)(img)(_p1##x,_p14##y,z,c)), \ + (I[42] = (T)(img)(_p1##x,_p13##y,z,c)), \ + (I[71] = (T)(img)(_p1##x,_p12##y,z,c)), \ + (I[100] = (T)(img)(_p1##x,_p11##y,z,c)), \ + (I[129] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[158] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[187] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[216] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[245] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[274] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[303] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[332] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[361] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[390] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[419] = (T)(img)(_p1##x,y,z,c)), \ + (I[448] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[477] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[506] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[535] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[564] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[593] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[622] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[651] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[680] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[709] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[738] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[767] = (T)(img)(_p1##x,_n12##y,z,c)), \ + (I[796] = (T)(img)(_p1##x,_n13##y,z,c)), \ + (I[825] = (T)(img)(_p1##x,_n14##y,z,c)), \ + (I[14] = (T)(img)(x,_p14##y,z,c)), \ + (I[43] = (T)(img)(x,_p13##y,z,c)), \ + (I[72] = (T)(img)(x,_p12##y,z,c)), \ + (I[101] = (T)(img)(x,_p11##y,z,c)), \ + (I[130] = (T)(img)(x,_p10##y,z,c)), \ + (I[159] = (T)(img)(x,_p9##y,z,c)), \ + (I[188] = (T)(img)(x,_p8##y,z,c)), \ + (I[217] = (T)(img)(x,_p7##y,z,c)), \ + (I[246] = (T)(img)(x,_p6##y,z,c)), \ + (I[275] = (T)(img)(x,_p5##y,z,c)), \ + (I[304] = (T)(img)(x,_p4##y,z,c)), \ + (I[333] = (T)(img)(x,_p3##y,z,c)), \ + (I[362] = (T)(img)(x,_p2##y,z,c)), \ + (I[391] = (T)(img)(x,_p1##y,z,c)), \ + (I[420] = (T)(img)(x,y,z,c)), \ + (I[449] = (T)(img)(x,_n1##y,z,c)), \ + (I[478] = (T)(img)(x,_n2##y,z,c)), \ + (I[507] = (T)(img)(x,_n3##y,z,c)), \ + (I[536] = (T)(img)(x,_n4##y,z,c)), \ + (I[565] = (T)(img)(x,_n5##y,z,c)), \ + (I[594] = (T)(img)(x,_n6##y,z,c)), \ + (I[623] = (T)(img)(x,_n7##y,z,c)), \ + (I[652] = (T)(img)(x,_n8##y,z,c)), \ + (I[681] = (T)(img)(x,_n9##y,z,c)), \ + (I[710] = (T)(img)(x,_n10##y,z,c)), \ + (I[739] = (T)(img)(x,_n11##y,z,c)), \ + (I[768] = (T)(img)(x,_n12##y,z,c)), \ + (I[797] = (T)(img)(x,_n13##y,z,c)), \ + (I[826] = (T)(img)(x,_n14##y,z,c)), \ + (I[15] = (T)(img)(_n1##x,_p14##y,z,c)), \ + (I[44] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[73] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[102] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[131] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[160] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[189] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[218] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[247] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[276] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[305] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[334] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[363] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[392] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[421] = (T)(img)(_n1##x,y,z,c)), \ + (I[450] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[479] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[508] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[537] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[566] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[595] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[624] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[653] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[682] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[711] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[740] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[769] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[798] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[827] = (T)(img)(_n1##x,_n14##y,z,c)), \ + (I[16] = (T)(img)(_n2##x,_p14##y,z,c)), \ + (I[45] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[74] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[103] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[132] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[161] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[190] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[219] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[248] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[277] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[306] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[335] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[364] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[393] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[422] = (T)(img)(_n2##x,y,z,c)), \ + (I[451] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[480] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[509] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[538] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[567] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[596] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[625] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[654] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[683] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[712] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[741] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[770] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[799] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[828] = (T)(img)(_n2##x,_n14##y,z,c)), \ + (I[17] = (T)(img)(_n3##x,_p14##y,z,c)), \ + (I[46] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[75] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[104] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[133] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[162] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[191] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[220] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[249] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[278] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[307] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[336] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[365] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[394] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[423] = (T)(img)(_n3##x,y,z,c)), \ + (I[452] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[481] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[510] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[539] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[568] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[597] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[626] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[655] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[684] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[713] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[742] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[771] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[800] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[829] = (T)(img)(_n3##x,_n14##y,z,c)), \ + (I[18] = (T)(img)(_n4##x,_p14##y,z,c)), \ + (I[47] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[76] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[105] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[134] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[163] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[192] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[221] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[250] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[279] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[308] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[337] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[366] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[395] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[424] = (T)(img)(_n4##x,y,z,c)), \ + (I[453] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[482] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[511] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[540] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[569] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[598] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[627] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[656] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[685] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[714] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[743] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[772] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[801] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[830] = (T)(img)(_n4##x,_n14##y,z,c)), \ + (I[19] = (T)(img)(_n5##x,_p14##y,z,c)), \ + (I[48] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[77] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[106] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[135] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[164] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[193] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[222] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[251] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[280] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[309] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[338] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[367] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[396] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[425] = (T)(img)(_n5##x,y,z,c)), \ + (I[454] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[483] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[512] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[541] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[570] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[599] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[628] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[657] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[686] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[715] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[744] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[773] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[802] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[831] = (T)(img)(_n5##x,_n14##y,z,c)), \ + (I[20] = (T)(img)(_n6##x,_p14##y,z,c)), \ + (I[49] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[78] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[107] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[136] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[165] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[194] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[223] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[252] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[281] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[310] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[339] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[368] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[397] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[426] = (T)(img)(_n6##x,y,z,c)), \ + (I[455] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[484] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[513] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[542] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[571] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[600] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[629] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[658] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[687] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[716] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[745] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[774] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[803] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[832] = (T)(img)(_n6##x,_n14##y,z,c)), \ + (I[21] = (T)(img)(_n7##x,_p14##y,z,c)), \ + (I[50] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[79] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[108] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[137] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[166] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[195] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[224] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[253] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[282] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[311] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[340] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[369] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[398] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[427] = (T)(img)(_n7##x,y,z,c)), \ + (I[456] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[485] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[514] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[543] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[572] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[601] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[630] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[659] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[688] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[717] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[746] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[775] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[804] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[833] = (T)(img)(_n7##x,_n14##y,z,c)), \ + (I[22] = (T)(img)(_n8##x,_p14##y,z,c)), \ + (I[51] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[80] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[109] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[138] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[167] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[196] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[225] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[254] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[283] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[312] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[341] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[370] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[399] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[428] = (T)(img)(_n8##x,y,z,c)), \ + (I[457] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[486] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[515] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[544] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[573] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[602] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[631] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[660] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[689] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[718] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[747] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[776] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[805] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[834] = (T)(img)(_n8##x,_n14##y,z,c)), \ + (I[23] = (T)(img)(_n9##x,_p14##y,z,c)), \ + (I[52] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[81] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[110] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[139] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[168] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[197] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[226] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[255] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[284] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[313] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[342] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[371] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[400] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[429] = (T)(img)(_n9##x,y,z,c)), \ + (I[458] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[487] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[516] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[545] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[574] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[603] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[632] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[661] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[690] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[719] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[748] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[777] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[806] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[835] = (T)(img)(_n9##x,_n14##y,z,c)), \ + (I[24] = (T)(img)(_n10##x,_p14##y,z,c)), \ + (I[53] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[82] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[111] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[140] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[169] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[198] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[227] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[256] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[285] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[314] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[343] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[372] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[401] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[430] = (T)(img)(_n10##x,y,z,c)), \ + (I[459] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[488] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[517] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[546] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[575] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[604] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[633] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[662] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[691] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[720] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[749] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[778] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[807] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[836] = (T)(img)(_n10##x,_n14##y,z,c)), \ + (I[25] = (T)(img)(_n11##x,_p14##y,z,c)), \ + (I[54] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[83] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[112] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[141] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[170] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[199] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[228] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[257] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[286] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[315] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[344] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[373] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[402] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[431] = (T)(img)(_n11##x,y,z,c)), \ + (I[460] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[489] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[518] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[547] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[576] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[605] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[634] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[663] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[692] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[721] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[750] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[779] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[808] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[837] = (T)(img)(_n11##x,_n14##y,z,c)), \ + (I[26] = (T)(img)(_n12##x,_p14##y,z,c)), \ + (I[55] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[84] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[113] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[142] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[171] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[200] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[229] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[258] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[287] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[316] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[345] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[374] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[403] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[432] = (T)(img)(_n12##x,y,z,c)), \ + (I[461] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[490] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[519] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[548] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[577] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[606] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[635] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[664] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[693] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[722] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[751] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[780] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[809] = (T)(img)(_n12##x,_n13##y,z,c)), \ + (I[838] = (T)(img)(_n12##x,_n14##y,z,c)), \ + (I[27] = (T)(img)(_n13##x,_p14##y,z,c)), \ + (I[56] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[85] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[114] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[143] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[172] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[201] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[230] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[259] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[288] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[317] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[346] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[375] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[404] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[433] = (T)(img)(_n13##x,y,z,c)), \ + (I[462] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[491] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[520] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[549] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[578] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[607] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[636] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[665] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[694] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[723] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[752] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[781] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[810] = (T)(img)(_n13##x,_n13##y,z,c)), \ + (I[839] = (T)(img)(_n13##x,_n14##y,z,c)), \ + x + 14>=(img).width()?(img).width() - 1:x + 14); \ + x<=(int)(x1) && ((_n14##x<(img).width() && ( \ + (I[28] = (T)(img)(_n14##x,_p14##y,z,c)), \ + (I[57] = (T)(img)(_n14##x,_p13##y,z,c)), \ + (I[86] = (T)(img)(_n14##x,_p12##y,z,c)), \ + (I[115] = (T)(img)(_n14##x,_p11##y,z,c)), \ + (I[144] = (T)(img)(_n14##x,_p10##y,z,c)), \ + (I[173] = (T)(img)(_n14##x,_p9##y,z,c)), \ + (I[202] = (T)(img)(_n14##x,_p8##y,z,c)), \ + (I[231] = (T)(img)(_n14##x,_p7##y,z,c)), \ + (I[260] = (T)(img)(_n14##x,_p6##y,z,c)), \ + (I[289] = (T)(img)(_n14##x,_p5##y,z,c)), \ + (I[318] = (T)(img)(_n14##x,_p4##y,z,c)), \ + (I[347] = (T)(img)(_n14##x,_p3##y,z,c)), \ + (I[376] = (T)(img)(_n14##x,_p2##y,z,c)), \ + (I[405] = (T)(img)(_n14##x,_p1##y,z,c)), \ + (I[434] = (T)(img)(_n14##x,y,z,c)), \ + (I[463] = (T)(img)(_n14##x,_n1##y,z,c)), \ + (I[492] = (T)(img)(_n14##x,_n2##y,z,c)), \ + (I[521] = (T)(img)(_n14##x,_n3##y,z,c)), \ + (I[550] = (T)(img)(_n14##x,_n4##y,z,c)), \ + (I[579] = (T)(img)(_n14##x,_n5##y,z,c)), \ + (I[608] = (T)(img)(_n14##x,_n6##y,z,c)), \ + (I[637] = (T)(img)(_n14##x,_n7##y,z,c)), \ + (I[666] = (T)(img)(_n14##x,_n8##y,z,c)), \ + (I[695] = (T)(img)(_n14##x,_n9##y,z,c)), \ + (I[724] = (T)(img)(_n14##x,_n10##y,z,c)), \ + (I[753] = (T)(img)(_n14##x,_n11##y,z,c)), \ + (I[782] = (T)(img)(_n14##x,_n12##y,z,c)), \ + (I[811] = (T)(img)(_n14##x,_n13##y,z,c)), \ + (I[840] = (T)(img)(_n14##x,_n14##y,z,c)),1)) || \ + _n13##x==--_n14##x || _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n14##x = _n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], \ + I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], \ + I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], \ + I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], \ + I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], \ + I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], \ + I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], \ + I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], \ + I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], \ + I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], \ + I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], \ + I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], \ + I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], \ + I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], \ + I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], \ + I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], \ + I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], \ + I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], \ + I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], \ + I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], \ + I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], \ + I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], \ + I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], I[649] = I[650], I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], \ + I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], I[671] = I[672], I[672] = I[673], I[673] = I[674], I[674] = I[675], I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], I[681] = I[682], I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], I[689] = I[690], I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], \ + I[696] = I[697], I[697] = I[698], I[698] = I[699], I[699] = I[700], I[700] = I[701], I[701] = I[702], I[702] = I[703], I[703] = I[704], I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], I[712] = I[713], I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], I[719] = I[720], I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], \ + I[725] = I[726], I[726] = I[727], I[727] = I[728], I[728] = I[729], I[729] = I[730], I[730] = I[731], I[731] = I[732], I[732] = I[733], I[733] = I[734], I[734] = I[735], I[735] = I[736], I[736] = I[737], I[737] = I[738], I[738] = I[739], I[739] = I[740], I[740] = I[741], I[741] = I[742], I[742] = I[743], I[743] = I[744], I[744] = I[745], I[745] = I[746], I[746] = I[747], I[747] = I[748], I[748] = I[749], I[749] = I[750], I[750] = I[751], I[751] = I[752], I[752] = I[753], \ + I[754] = I[755], I[755] = I[756], I[756] = I[757], I[757] = I[758], I[758] = I[759], I[759] = I[760], I[760] = I[761], I[761] = I[762], I[762] = I[763], I[763] = I[764], I[764] = I[765], I[765] = I[766], I[766] = I[767], I[767] = I[768], I[768] = I[769], I[769] = I[770], I[770] = I[771], I[771] = I[772], I[772] = I[773], I[773] = I[774], I[774] = I[775], I[775] = I[776], I[776] = I[777], I[777] = I[778], I[778] = I[779], I[779] = I[780], I[780] = I[781], I[781] = I[782], \ + I[783] = I[784], I[784] = I[785], I[785] = I[786], I[786] = I[787], I[787] = I[788], I[788] = I[789], I[789] = I[790], I[790] = I[791], I[791] = I[792], I[792] = I[793], I[793] = I[794], I[794] = I[795], I[795] = I[796], I[796] = I[797], I[797] = I[798], I[798] = I[799], I[799] = I[800], I[800] = I[801], I[801] = I[802], I[802] = I[803], I[803] = I[804], I[804] = I[805], I[805] = I[806], I[806] = I[807], I[807] = I[808], I[808] = I[809], I[809] = I[810], I[810] = I[811], \ + I[812] = I[813], I[813] = I[814], I[814] = I[815], I[815] = I[816], I[816] = I[817], I[817] = I[818], I[818] = I[819], I[819] = I[820], I[820] = I[821], I[821] = I[822], I[822] = I[823], I[823] = I[824], I[824] = I[825], I[825] = I[826], I[826] = I[827], I[827] = I[828], I[828] = I[829], I[829] = I[830], I[830] = I[831], I[831] = I[832], I[832] = I[833], I[833] = I[834], I[834] = I[835], I[835] = I[836], I[836] = I[837], I[837] = I[838], I[838] = I[839], I[839] = I[840], \ + _p14##x = _p13##x, _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x, ++_n14##x) + +#define cimg_get29x29(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p14##x,_p14##y,z,c), I[1] = (T)(img)(_p13##x,_p14##y,z,c), I[2] = (T)(img)(_p12##x,_p14##y,z,c), I[3] = (T)(img)(_p11##x,_p14##y,z,c), I[4] = (T)(img)(_p10##x,_p14##y,z,c), I[5] = (T)(img)(_p9##x,_p14##y,z,c), I[6] = (T)(img)(_p8##x,_p14##y,z,c), I[7] = (T)(img)(_p7##x,_p14##y,z,c), I[8] = (T)(img)(_p6##x,_p14##y,z,c), I[9] = (T)(img)(_p5##x,_p14##y,z,c), I[10] = (T)(img)(_p4##x,_p14##y,z,c), I[11] = (T)(img)(_p3##x,_p14##y,z,c), I[12] = (T)(img)(_p2##x,_p14##y,z,c), I[13] = (T)(img)(_p1##x,_p14##y,z,c), I[14] = (T)(img)(x,_p14##y,z,c), I[15] = (T)(img)(_n1##x,_p14##y,z,c), I[16] = (T)(img)(_n2##x,_p14##y,z,c), I[17] = (T)(img)(_n3##x,_p14##y,z,c), I[18] = (T)(img)(_n4##x,_p14##y,z,c), I[19] = (T)(img)(_n5##x,_p14##y,z,c), I[20] = (T)(img)(_n6##x,_p14##y,z,c), I[21] = (T)(img)(_n7##x,_p14##y,z,c), I[22] = (T)(img)(_n8##x,_p14##y,z,c), I[23] = (T)(img)(_n9##x,_p14##y,z,c), I[24] = (T)(img)(_n10##x,_p14##y,z,c), I[25] = (T)(img)(_n11##x,_p14##y,z,c), I[26] = (T)(img)(_n12##x,_p14##y,z,c), I[27] = (T)(img)(_n13##x,_p14##y,z,c), I[28] = (T)(img)(_n14##x,_p14##y,z,c), \ + I[29] = (T)(img)(_p14##x,_p13##y,z,c), I[30] = (T)(img)(_p13##x,_p13##y,z,c), I[31] = (T)(img)(_p12##x,_p13##y,z,c), I[32] = (T)(img)(_p11##x,_p13##y,z,c), I[33] = (T)(img)(_p10##x,_p13##y,z,c), I[34] = (T)(img)(_p9##x,_p13##y,z,c), I[35] = (T)(img)(_p8##x,_p13##y,z,c), I[36] = (T)(img)(_p7##x,_p13##y,z,c), I[37] = (T)(img)(_p6##x,_p13##y,z,c), I[38] = (T)(img)(_p5##x,_p13##y,z,c), I[39] = (T)(img)(_p4##x,_p13##y,z,c), I[40] = (T)(img)(_p3##x,_p13##y,z,c), I[41] = (T)(img)(_p2##x,_p13##y,z,c), I[42] = (T)(img)(_p1##x,_p13##y,z,c), I[43] = (T)(img)(x,_p13##y,z,c), I[44] = (T)(img)(_n1##x,_p13##y,z,c), I[45] = (T)(img)(_n2##x,_p13##y,z,c), I[46] = (T)(img)(_n3##x,_p13##y,z,c), I[47] = (T)(img)(_n4##x,_p13##y,z,c), I[48] = (T)(img)(_n5##x,_p13##y,z,c), I[49] = (T)(img)(_n6##x,_p13##y,z,c), I[50] = (T)(img)(_n7##x,_p13##y,z,c), I[51] = (T)(img)(_n8##x,_p13##y,z,c), I[52] = (T)(img)(_n9##x,_p13##y,z,c), I[53] = (T)(img)(_n10##x,_p13##y,z,c), I[54] = (T)(img)(_n11##x,_p13##y,z,c), I[55] = (T)(img)(_n12##x,_p13##y,z,c), I[56] = (T)(img)(_n13##x,_p13##y,z,c), I[57] = (T)(img)(_n14##x,_p13##y,z,c), \ + I[58] = (T)(img)(_p14##x,_p12##y,z,c), I[59] = (T)(img)(_p13##x,_p12##y,z,c), I[60] = (T)(img)(_p12##x,_p12##y,z,c), I[61] = (T)(img)(_p11##x,_p12##y,z,c), I[62] = (T)(img)(_p10##x,_p12##y,z,c), I[63] = (T)(img)(_p9##x,_p12##y,z,c), I[64] = (T)(img)(_p8##x,_p12##y,z,c), I[65] = (T)(img)(_p7##x,_p12##y,z,c), I[66] = (T)(img)(_p6##x,_p12##y,z,c), I[67] = (T)(img)(_p5##x,_p12##y,z,c), I[68] = (T)(img)(_p4##x,_p12##y,z,c), I[69] = (T)(img)(_p3##x,_p12##y,z,c), I[70] = (T)(img)(_p2##x,_p12##y,z,c), I[71] = (T)(img)(_p1##x,_p12##y,z,c), I[72] = (T)(img)(x,_p12##y,z,c), I[73] = (T)(img)(_n1##x,_p12##y,z,c), I[74] = (T)(img)(_n2##x,_p12##y,z,c), I[75] = (T)(img)(_n3##x,_p12##y,z,c), I[76] = (T)(img)(_n4##x,_p12##y,z,c), I[77] = (T)(img)(_n5##x,_p12##y,z,c), I[78] = (T)(img)(_n6##x,_p12##y,z,c), I[79] = (T)(img)(_n7##x,_p12##y,z,c), I[80] = (T)(img)(_n8##x,_p12##y,z,c), I[81] = (T)(img)(_n9##x,_p12##y,z,c), I[82] = (T)(img)(_n10##x,_p12##y,z,c), I[83] = (T)(img)(_n11##x,_p12##y,z,c), I[84] = (T)(img)(_n12##x,_p12##y,z,c), I[85] = (T)(img)(_n13##x,_p12##y,z,c), I[86] = (T)(img)(_n14##x,_p12##y,z,c), \ + I[87] = (T)(img)(_p14##x,_p11##y,z,c), I[88] = (T)(img)(_p13##x,_p11##y,z,c), I[89] = (T)(img)(_p12##x,_p11##y,z,c), I[90] = (T)(img)(_p11##x,_p11##y,z,c), I[91] = (T)(img)(_p10##x,_p11##y,z,c), I[92] = (T)(img)(_p9##x,_p11##y,z,c), I[93] = (T)(img)(_p8##x,_p11##y,z,c), I[94] = (T)(img)(_p7##x,_p11##y,z,c), I[95] = (T)(img)(_p6##x,_p11##y,z,c), I[96] = (T)(img)(_p5##x,_p11##y,z,c), I[97] = (T)(img)(_p4##x,_p11##y,z,c), I[98] = (T)(img)(_p3##x,_p11##y,z,c), I[99] = (T)(img)(_p2##x,_p11##y,z,c), I[100] = (T)(img)(_p1##x,_p11##y,z,c), I[101] = (T)(img)(x,_p11##y,z,c), I[102] = (T)(img)(_n1##x,_p11##y,z,c), I[103] = (T)(img)(_n2##x,_p11##y,z,c), I[104] = (T)(img)(_n3##x,_p11##y,z,c), I[105] = (T)(img)(_n4##x,_p11##y,z,c), I[106] = (T)(img)(_n5##x,_p11##y,z,c), I[107] = (T)(img)(_n6##x,_p11##y,z,c), I[108] = (T)(img)(_n7##x,_p11##y,z,c), I[109] = (T)(img)(_n8##x,_p11##y,z,c), I[110] = (T)(img)(_n9##x,_p11##y,z,c), I[111] = (T)(img)(_n10##x,_p11##y,z,c), I[112] = (T)(img)(_n11##x,_p11##y,z,c), I[113] = (T)(img)(_n12##x,_p11##y,z,c), I[114] = (T)(img)(_n13##x,_p11##y,z,c), I[115] = (T)(img)(_n14##x,_p11##y,z,c), \ + I[116] = (T)(img)(_p14##x,_p10##y,z,c), I[117] = (T)(img)(_p13##x,_p10##y,z,c), I[118] = (T)(img)(_p12##x,_p10##y,z,c), I[119] = (T)(img)(_p11##x,_p10##y,z,c), I[120] = (T)(img)(_p10##x,_p10##y,z,c), I[121] = (T)(img)(_p9##x,_p10##y,z,c), I[122] = (T)(img)(_p8##x,_p10##y,z,c), I[123] = (T)(img)(_p7##x,_p10##y,z,c), I[124] = (T)(img)(_p6##x,_p10##y,z,c), I[125] = (T)(img)(_p5##x,_p10##y,z,c), I[126] = (T)(img)(_p4##x,_p10##y,z,c), I[127] = (T)(img)(_p3##x,_p10##y,z,c), I[128] = (T)(img)(_p2##x,_p10##y,z,c), I[129] = (T)(img)(_p1##x,_p10##y,z,c), I[130] = (T)(img)(x,_p10##y,z,c), I[131] = (T)(img)(_n1##x,_p10##y,z,c), I[132] = (T)(img)(_n2##x,_p10##y,z,c), I[133] = (T)(img)(_n3##x,_p10##y,z,c), I[134] = (T)(img)(_n4##x,_p10##y,z,c), I[135] = (T)(img)(_n5##x,_p10##y,z,c), I[136] = (T)(img)(_n6##x,_p10##y,z,c), I[137] = (T)(img)(_n7##x,_p10##y,z,c), I[138] = (T)(img)(_n8##x,_p10##y,z,c), I[139] = (T)(img)(_n9##x,_p10##y,z,c), I[140] = (T)(img)(_n10##x,_p10##y,z,c), I[141] = (T)(img)(_n11##x,_p10##y,z,c), I[142] = (T)(img)(_n12##x,_p10##y,z,c), I[143] = (T)(img)(_n13##x,_p10##y,z,c), I[144] = (T)(img)(_n14##x,_p10##y,z,c), \ + I[145] = (T)(img)(_p14##x,_p9##y,z,c), I[146] = (T)(img)(_p13##x,_p9##y,z,c), I[147] = (T)(img)(_p12##x,_p9##y,z,c), I[148] = (T)(img)(_p11##x,_p9##y,z,c), I[149] = (T)(img)(_p10##x,_p9##y,z,c), I[150] = (T)(img)(_p9##x,_p9##y,z,c), I[151] = (T)(img)(_p8##x,_p9##y,z,c), I[152] = (T)(img)(_p7##x,_p9##y,z,c), I[153] = (T)(img)(_p6##x,_p9##y,z,c), I[154] = (T)(img)(_p5##x,_p9##y,z,c), I[155] = (T)(img)(_p4##x,_p9##y,z,c), I[156] = (T)(img)(_p3##x,_p9##y,z,c), I[157] = (T)(img)(_p2##x,_p9##y,z,c), I[158] = (T)(img)(_p1##x,_p9##y,z,c), I[159] = (T)(img)(x,_p9##y,z,c), I[160] = (T)(img)(_n1##x,_p9##y,z,c), I[161] = (T)(img)(_n2##x,_p9##y,z,c), I[162] = (T)(img)(_n3##x,_p9##y,z,c), I[163] = (T)(img)(_n4##x,_p9##y,z,c), I[164] = (T)(img)(_n5##x,_p9##y,z,c), I[165] = (T)(img)(_n6##x,_p9##y,z,c), I[166] = (T)(img)(_n7##x,_p9##y,z,c), I[167] = (T)(img)(_n8##x,_p9##y,z,c), I[168] = (T)(img)(_n9##x,_p9##y,z,c), I[169] = (T)(img)(_n10##x,_p9##y,z,c), I[170] = (T)(img)(_n11##x,_p9##y,z,c), I[171] = (T)(img)(_n12##x,_p9##y,z,c), I[172] = (T)(img)(_n13##x,_p9##y,z,c), I[173] = (T)(img)(_n14##x,_p9##y,z,c), \ + I[174] = (T)(img)(_p14##x,_p8##y,z,c), I[175] = (T)(img)(_p13##x,_p8##y,z,c), I[176] = (T)(img)(_p12##x,_p8##y,z,c), I[177] = (T)(img)(_p11##x,_p8##y,z,c), I[178] = (T)(img)(_p10##x,_p8##y,z,c), I[179] = (T)(img)(_p9##x,_p8##y,z,c), I[180] = (T)(img)(_p8##x,_p8##y,z,c), I[181] = (T)(img)(_p7##x,_p8##y,z,c), I[182] = (T)(img)(_p6##x,_p8##y,z,c), I[183] = (T)(img)(_p5##x,_p8##y,z,c), I[184] = (T)(img)(_p4##x,_p8##y,z,c), I[185] = (T)(img)(_p3##x,_p8##y,z,c), I[186] = (T)(img)(_p2##x,_p8##y,z,c), I[187] = (T)(img)(_p1##x,_p8##y,z,c), I[188] = (T)(img)(x,_p8##y,z,c), I[189] = (T)(img)(_n1##x,_p8##y,z,c), I[190] = (T)(img)(_n2##x,_p8##y,z,c), I[191] = (T)(img)(_n3##x,_p8##y,z,c), I[192] = (T)(img)(_n4##x,_p8##y,z,c), I[193] = (T)(img)(_n5##x,_p8##y,z,c), I[194] = (T)(img)(_n6##x,_p8##y,z,c), I[195] = (T)(img)(_n7##x,_p8##y,z,c), I[196] = (T)(img)(_n8##x,_p8##y,z,c), I[197] = (T)(img)(_n9##x,_p8##y,z,c), I[198] = (T)(img)(_n10##x,_p8##y,z,c), I[199] = (T)(img)(_n11##x,_p8##y,z,c), I[200] = (T)(img)(_n12##x,_p8##y,z,c), I[201] = (T)(img)(_n13##x,_p8##y,z,c), I[202] = (T)(img)(_n14##x,_p8##y,z,c), \ + I[203] = (T)(img)(_p14##x,_p7##y,z,c), I[204] = (T)(img)(_p13##x,_p7##y,z,c), I[205] = (T)(img)(_p12##x,_p7##y,z,c), I[206] = (T)(img)(_p11##x,_p7##y,z,c), I[207] = (T)(img)(_p10##x,_p7##y,z,c), I[208] = (T)(img)(_p9##x,_p7##y,z,c), I[209] = (T)(img)(_p8##x,_p7##y,z,c), I[210] = (T)(img)(_p7##x,_p7##y,z,c), I[211] = (T)(img)(_p6##x,_p7##y,z,c), I[212] = (T)(img)(_p5##x,_p7##y,z,c), I[213] = (T)(img)(_p4##x,_p7##y,z,c), I[214] = (T)(img)(_p3##x,_p7##y,z,c), I[215] = (T)(img)(_p2##x,_p7##y,z,c), I[216] = (T)(img)(_p1##x,_p7##y,z,c), I[217] = (T)(img)(x,_p7##y,z,c), I[218] = (T)(img)(_n1##x,_p7##y,z,c), I[219] = (T)(img)(_n2##x,_p7##y,z,c), I[220] = (T)(img)(_n3##x,_p7##y,z,c), I[221] = (T)(img)(_n4##x,_p7##y,z,c), I[222] = (T)(img)(_n5##x,_p7##y,z,c), I[223] = (T)(img)(_n6##x,_p7##y,z,c), I[224] = (T)(img)(_n7##x,_p7##y,z,c), I[225] = (T)(img)(_n8##x,_p7##y,z,c), I[226] = (T)(img)(_n9##x,_p7##y,z,c), I[227] = (T)(img)(_n10##x,_p7##y,z,c), I[228] = (T)(img)(_n11##x,_p7##y,z,c), I[229] = (T)(img)(_n12##x,_p7##y,z,c), I[230] = (T)(img)(_n13##x,_p7##y,z,c), I[231] = (T)(img)(_n14##x,_p7##y,z,c), \ + I[232] = (T)(img)(_p14##x,_p6##y,z,c), I[233] = (T)(img)(_p13##x,_p6##y,z,c), I[234] = (T)(img)(_p12##x,_p6##y,z,c), I[235] = (T)(img)(_p11##x,_p6##y,z,c), I[236] = (T)(img)(_p10##x,_p6##y,z,c), I[237] = (T)(img)(_p9##x,_p6##y,z,c), I[238] = (T)(img)(_p8##x,_p6##y,z,c), I[239] = (T)(img)(_p7##x,_p6##y,z,c), I[240] = (T)(img)(_p6##x,_p6##y,z,c), I[241] = (T)(img)(_p5##x,_p6##y,z,c), I[242] = (T)(img)(_p4##x,_p6##y,z,c), I[243] = (T)(img)(_p3##x,_p6##y,z,c), I[244] = (T)(img)(_p2##x,_p6##y,z,c), I[245] = (T)(img)(_p1##x,_p6##y,z,c), I[246] = (T)(img)(x,_p6##y,z,c), I[247] = (T)(img)(_n1##x,_p6##y,z,c), I[248] = (T)(img)(_n2##x,_p6##y,z,c), I[249] = (T)(img)(_n3##x,_p6##y,z,c), I[250] = (T)(img)(_n4##x,_p6##y,z,c), I[251] = (T)(img)(_n5##x,_p6##y,z,c), I[252] = (T)(img)(_n6##x,_p6##y,z,c), I[253] = (T)(img)(_n7##x,_p6##y,z,c), I[254] = (T)(img)(_n8##x,_p6##y,z,c), I[255] = (T)(img)(_n9##x,_p6##y,z,c), I[256] = (T)(img)(_n10##x,_p6##y,z,c), I[257] = (T)(img)(_n11##x,_p6##y,z,c), I[258] = (T)(img)(_n12##x,_p6##y,z,c), I[259] = (T)(img)(_n13##x,_p6##y,z,c), I[260] = (T)(img)(_n14##x,_p6##y,z,c), \ + I[261] = (T)(img)(_p14##x,_p5##y,z,c), I[262] = (T)(img)(_p13##x,_p5##y,z,c), I[263] = (T)(img)(_p12##x,_p5##y,z,c), I[264] = (T)(img)(_p11##x,_p5##y,z,c), I[265] = (T)(img)(_p10##x,_p5##y,z,c), I[266] = (T)(img)(_p9##x,_p5##y,z,c), I[267] = (T)(img)(_p8##x,_p5##y,z,c), I[268] = (T)(img)(_p7##x,_p5##y,z,c), I[269] = (T)(img)(_p6##x,_p5##y,z,c), I[270] = (T)(img)(_p5##x,_p5##y,z,c), I[271] = (T)(img)(_p4##x,_p5##y,z,c), I[272] = (T)(img)(_p3##x,_p5##y,z,c), I[273] = (T)(img)(_p2##x,_p5##y,z,c), I[274] = (T)(img)(_p1##x,_p5##y,z,c), I[275] = (T)(img)(x,_p5##y,z,c), I[276] = (T)(img)(_n1##x,_p5##y,z,c), I[277] = (T)(img)(_n2##x,_p5##y,z,c), I[278] = (T)(img)(_n3##x,_p5##y,z,c), I[279] = (T)(img)(_n4##x,_p5##y,z,c), I[280] = (T)(img)(_n5##x,_p5##y,z,c), I[281] = (T)(img)(_n6##x,_p5##y,z,c), I[282] = (T)(img)(_n7##x,_p5##y,z,c), I[283] = (T)(img)(_n8##x,_p5##y,z,c), I[284] = (T)(img)(_n9##x,_p5##y,z,c), I[285] = (T)(img)(_n10##x,_p5##y,z,c), I[286] = (T)(img)(_n11##x,_p5##y,z,c), I[287] = (T)(img)(_n12##x,_p5##y,z,c), I[288] = (T)(img)(_n13##x,_p5##y,z,c), I[289] = (T)(img)(_n14##x,_p5##y,z,c), \ + I[290] = (T)(img)(_p14##x,_p4##y,z,c), I[291] = (T)(img)(_p13##x,_p4##y,z,c), I[292] = (T)(img)(_p12##x,_p4##y,z,c), I[293] = (T)(img)(_p11##x,_p4##y,z,c), I[294] = (T)(img)(_p10##x,_p4##y,z,c), I[295] = (T)(img)(_p9##x,_p4##y,z,c), I[296] = (T)(img)(_p8##x,_p4##y,z,c), I[297] = (T)(img)(_p7##x,_p4##y,z,c), I[298] = (T)(img)(_p6##x,_p4##y,z,c), I[299] = (T)(img)(_p5##x,_p4##y,z,c), I[300] = (T)(img)(_p4##x,_p4##y,z,c), I[301] = (T)(img)(_p3##x,_p4##y,z,c), I[302] = (T)(img)(_p2##x,_p4##y,z,c), I[303] = (T)(img)(_p1##x,_p4##y,z,c), I[304] = (T)(img)(x,_p4##y,z,c), I[305] = (T)(img)(_n1##x,_p4##y,z,c), I[306] = (T)(img)(_n2##x,_p4##y,z,c), I[307] = (T)(img)(_n3##x,_p4##y,z,c), I[308] = (T)(img)(_n4##x,_p4##y,z,c), I[309] = (T)(img)(_n5##x,_p4##y,z,c), I[310] = (T)(img)(_n6##x,_p4##y,z,c), I[311] = (T)(img)(_n7##x,_p4##y,z,c), I[312] = (T)(img)(_n8##x,_p4##y,z,c), I[313] = (T)(img)(_n9##x,_p4##y,z,c), I[314] = (T)(img)(_n10##x,_p4##y,z,c), I[315] = (T)(img)(_n11##x,_p4##y,z,c), I[316] = (T)(img)(_n12##x,_p4##y,z,c), I[317] = (T)(img)(_n13##x,_p4##y,z,c), I[318] = (T)(img)(_n14##x,_p4##y,z,c), \ + I[319] = (T)(img)(_p14##x,_p3##y,z,c), I[320] = (T)(img)(_p13##x,_p3##y,z,c), I[321] = (T)(img)(_p12##x,_p3##y,z,c), I[322] = (T)(img)(_p11##x,_p3##y,z,c), I[323] = (T)(img)(_p10##x,_p3##y,z,c), I[324] = (T)(img)(_p9##x,_p3##y,z,c), I[325] = (T)(img)(_p8##x,_p3##y,z,c), I[326] = (T)(img)(_p7##x,_p3##y,z,c), I[327] = (T)(img)(_p6##x,_p3##y,z,c), I[328] = (T)(img)(_p5##x,_p3##y,z,c), I[329] = (T)(img)(_p4##x,_p3##y,z,c), I[330] = (T)(img)(_p3##x,_p3##y,z,c), I[331] = (T)(img)(_p2##x,_p3##y,z,c), I[332] = (T)(img)(_p1##x,_p3##y,z,c), I[333] = (T)(img)(x,_p3##y,z,c), I[334] = (T)(img)(_n1##x,_p3##y,z,c), I[335] = (T)(img)(_n2##x,_p3##y,z,c), I[336] = (T)(img)(_n3##x,_p3##y,z,c), I[337] = (T)(img)(_n4##x,_p3##y,z,c), I[338] = (T)(img)(_n5##x,_p3##y,z,c), I[339] = (T)(img)(_n6##x,_p3##y,z,c), I[340] = (T)(img)(_n7##x,_p3##y,z,c), I[341] = (T)(img)(_n8##x,_p3##y,z,c), I[342] = (T)(img)(_n9##x,_p3##y,z,c), I[343] = (T)(img)(_n10##x,_p3##y,z,c), I[344] = (T)(img)(_n11##x,_p3##y,z,c), I[345] = (T)(img)(_n12##x,_p3##y,z,c), I[346] = (T)(img)(_n13##x,_p3##y,z,c), I[347] = (T)(img)(_n14##x,_p3##y,z,c), \ + I[348] = (T)(img)(_p14##x,_p2##y,z,c), I[349] = (T)(img)(_p13##x,_p2##y,z,c), I[350] = (T)(img)(_p12##x,_p2##y,z,c), I[351] = (T)(img)(_p11##x,_p2##y,z,c), I[352] = (T)(img)(_p10##x,_p2##y,z,c), I[353] = (T)(img)(_p9##x,_p2##y,z,c), I[354] = (T)(img)(_p8##x,_p2##y,z,c), I[355] = (T)(img)(_p7##x,_p2##y,z,c), I[356] = (T)(img)(_p6##x,_p2##y,z,c), I[357] = (T)(img)(_p5##x,_p2##y,z,c), I[358] = (T)(img)(_p4##x,_p2##y,z,c), I[359] = (T)(img)(_p3##x,_p2##y,z,c), I[360] = (T)(img)(_p2##x,_p2##y,z,c), I[361] = (T)(img)(_p1##x,_p2##y,z,c), I[362] = (T)(img)(x,_p2##y,z,c), I[363] = (T)(img)(_n1##x,_p2##y,z,c), I[364] = (T)(img)(_n2##x,_p2##y,z,c), I[365] = (T)(img)(_n3##x,_p2##y,z,c), I[366] = (T)(img)(_n4##x,_p2##y,z,c), I[367] = (T)(img)(_n5##x,_p2##y,z,c), I[368] = (T)(img)(_n6##x,_p2##y,z,c), I[369] = (T)(img)(_n7##x,_p2##y,z,c), I[370] = (T)(img)(_n8##x,_p2##y,z,c), I[371] = (T)(img)(_n9##x,_p2##y,z,c), I[372] = (T)(img)(_n10##x,_p2##y,z,c), I[373] = (T)(img)(_n11##x,_p2##y,z,c), I[374] = (T)(img)(_n12##x,_p2##y,z,c), I[375] = (T)(img)(_n13##x,_p2##y,z,c), I[376] = (T)(img)(_n14##x,_p2##y,z,c), \ + I[377] = (T)(img)(_p14##x,_p1##y,z,c), I[378] = (T)(img)(_p13##x,_p1##y,z,c), I[379] = (T)(img)(_p12##x,_p1##y,z,c), I[380] = (T)(img)(_p11##x,_p1##y,z,c), I[381] = (T)(img)(_p10##x,_p1##y,z,c), I[382] = (T)(img)(_p9##x,_p1##y,z,c), I[383] = (T)(img)(_p8##x,_p1##y,z,c), I[384] = (T)(img)(_p7##x,_p1##y,z,c), I[385] = (T)(img)(_p6##x,_p1##y,z,c), I[386] = (T)(img)(_p5##x,_p1##y,z,c), I[387] = (T)(img)(_p4##x,_p1##y,z,c), I[388] = (T)(img)(_p3##x,_p1##y,z,c), I[389] = (T)(img)(_p2##x,_p1##y,z,c), I[390] = (T)(img)(_p1##x,_p1##y,z,c), I[391] = (T)(img)(x,_p1##y,z,c), I[392] = (T)(img)(_n1##x,_p1##y,z,c), I[393] = (T)(img)(_n2##x,_p1##y,z,c), I[394] = (T)(img)(_n3##x,_p1##y,z,c), I[395] = (T)(img)(_n4##x,_p1##y,z,c), I[396] = (T)(img)(_n5##x,_p1##y,z,c), I[397] = (T)(img)(_n6##x,_p1##y,z,c), I[398] = (T)(img)(_n7##x,_p1##y,z,c), I[399] = (T)(img)(_n8##x,_p1##y,z,c), I[400] = (T)(img)(_n9##x,_p1##y,z,c), I[401] = (T)(img)(_n10##x,_p1##y,z,c), I[402] = (T)(img)(_n11##x,_p1##y,z,c), I[403] = (T)(img)(_n12##x,_p1##y,z,c), I[404] = (T)(img)(_n13##x,_p1##y,z,c), I[405] = (T)(img)(_n14##x,_p1##y,z,c), \ + I[406] = (T)(img)(_p14##x,y,z,c), I[407] = (T)(img)(_p13##x,y,z,c), I[408] = (T)(img)(_p12##x,y,z,c), I[409] = (T)(img)(_p11##x,y,z,c), I[410] = (T)(img)(_p10##x,y,z,c), I[411] = (T)(img)(_p9##x,y,z,c), I[412] = (T)(img)(_p8##x,y,z,c), I[413] = (T)(img)(_p7##x,y,z,c), I[414] = (T)(img)(_p6##x,y,z,c), I[415] = (T)(img)(_p5##x,y,z,c), I[416] = (T)(img)(_p4##x,y,z,c), I[417] = (T)(img)(_p3##x,y,z,c), I[418] = (T)(img)(_p2##x,y,z,c), I[419] = (T)(img)(_p1##x,y,z,c), I[420] = (T)(img)(x,y,z,c), I[421] = (T)(img)(_n1##x,y,z,c), I[422] = (T)(img)(_n2##x,y,z,c), I[423] = (T)(img)(_n3##x,y,z,c), I[424] = (T)(img)(_n4##x,y,z,c), I[425] = (T)(img)(_n5##x,y,z,c), I[426] = (T)(img)(_n6##x,y,z,c), I[427] = (T)(img)(_n7##x,y,z,c), I[428] = (T)(img)(_n8##x,y,z,c), I[429] = (T)(img)(_n9##x,y,z,c), I[430] = (T)(img)(_n10##x,y,z,c), I[431] = (T)(img)(_n11##x,y,z,c), I[432] = (T)(img)(_n12##x,y,z,c), I[433] = (T)(img)(_n13##x,y,z,c), I[434] = (T)(img)(_n14##x,y,z,c), \ + I[435] = (T)(img)(_p14##x,_n1##y,z,c), I[436] = (T)(img)(_p13##x,_n1##y,z,c), I[437] = (T)(img)(_p12##x,_n1##y,z,c), I[438] = (T)(img)(_p11##x,_n1##y,z,c), I[439] = (T)(img)(_p10##x,_n1##y,z,c), I[440] = (T)(img)(_p9##x,_n1##y,z,c), I[441] = (T)(img)(_p8##x,_n1##y,z,c), I[442] = (T)(img)(_p7##x,_n1##y,z,c), I[443] = (T)(img)(_p6##x,_n1##y,z,c), I[444] = (T)(img)(_p5##x,_n1##y,z,c), I[445] = (T)(img)(_p4##x,_n1##y,z,c), I[446] = (T)(img)(_p3##x,_n1##y,z,c), I[447] = (T)(img)(_p2##x,_n1##y,z,c), I[448] = (T)(img)(_p1##x,_n1##y,z,c), I[449] = (T)(img)(x,_n1##y,z,c), I[450] = (T)(img)(_n1##x,_n1##y,z,c), I[451] = (T)(img)(_n2##x,_n1##y,z,c), I[452] = (T)(img)(_n3##x,_n1##y,z,c), I[453] = (T)(img)(_n4##x,_n1##y,z,c), I[454] = (T)(img)(_n5##x,_n1##y,z,c), I[455] = (T)(img)(_n6##x,_n1##y,z,c), I[456] = (T)(img)(_n7##x,_n1##y,z,c), I[457] = (T)(img)(_n8##x,_n1##y,z,c), I[458] = (T)(img)(_n9##x,_n1##y,z,c), I[459] = (T)(img)(_n10##x,_n1##y,z,c), I[460] = (T)(img)(_n11##x,_n1##y,z,c), I[461] = (T)(img)(_n12##x,_n1##y,z,c), I[462] = (T)(img)(_n13##x,_n1##y,z,c), I[463] = (T)(img)(_n14##x,_n1##y,z,c), \ + I[464] = (T)(img)(_p14##x,_n2##y,z,c), I[465] = (T)(img)(_p13##x,_n2##y,z,c), I[466] = (T)(img)(_p12##x,_n2##y,z,c), I[467] = (T)(img)(_p11##x,_n2##y,z,c), I[468] = (T)(img)(_p10##x,_n2##y,z,c), I[469] = (T)(img)(_p9##x,_n2##y,z,c), I[470] = (T)(img)(_p8##x,_n2##y,z,c), I[471] = (T)(img)(_p7##x,_n2##y,z,c), I[472] = (T)(img)(_p6##x,_n2##y,z,c), I[473] = (T)(img)(_p5##x,_n2##y,z,c), I[474] = (T)(img)(_p4##x,_n2##y,z,c), I[475] = (T)(img)(_p3##x,_n2##y,z,c), I[476] = (T)(img)(_p2##x,_n2##y,z,c), I[477] = (T)(img)(_p1##x,_n2##y,z,c), I[478] = (T)(img)(x,_n2##y,z,c), I[479] = (T)(img)(_n1##x,_n2##y,z,c), I[480] = (T)(img)(_n2##x,_n2##y,z,c), I[481] = (T)(img)(_n3##x,_n2##y,z,c), I[482] = (T)(img)(_n4##x,_n2##y,z,c), I[483] = (T)(img)(_n5##x,_n2##y,z,c), I[484] = (T)(img)(_n6##x,_n2##y,z,c), I[485] = (T)(img)(_n7##x,_n2##y,z,c), I[486] = (T)(img)(_n8##x,_n2##y,z,c), I[487] = (T)(img)(_n9##x,_n2##y,z,c), I[488] = (T)(img)(_n10##x,_n2##y,z,c), I[489] = (T)(img)(_n11##x,_n2##y,z,c), I[490] = (T)(img)(_n12##x,_n2##y,z,c), I[491] = (T)(img)(_n13##x,_n2##y,z,c), I[492] = (T)(img)(_n14##x,_n2##y,z,c), \ + I[493] = (T)(img)(_p14##x,_n3##y,z,c), I[494] = (T)(img)(_p13##x,_n3##y,z,c), I[495] = (T)(img)(_p12##x,_n3##y,z,c), I[496] = (T)(img)(_p11##x,_n3##y,z,c), I[497] = (T)(img)(_p10##x,_n3##y,z,c), I[498] = (T)(img)(_p9##x,_n3##y,z,c), I[499] = (T)(img)(_p8##x,_n3##y,z,c), I[500] = (T)(img)(_p7##x,_n3##y,z,c), I[501] = (T)(img)(_p6##x,_n3##y,z,c), I[502] = (T)(img)(_p5##x,_n3##y,z,c), I[503] = (T)(img)(_p4##x,_n3##y,z,c), I[504] = (T)(img)(_p3##x,_n3##y,z,c), I[505] = (T)(img)(_p2##x,_n3##y,z,c), I[506] = (T)(img)(_p1##x,_n3##y,z,c), I[507] = (T)(img)(x,_n3##y,z,c), I[508] = (T)(img)(_n1##x,_n3##y,z,c), I[509] = (T)(img)(_n2##x,_n3##y,z,c), I[510] = (T)(img)(_n3##x,_n3##y,z,c), I[511] = (T)(img)(_n4##x,_n3##y,z,c), I[512] = (T)(img)(_n5##x,_n3##y,z,c), I[513] = (T)(img)(_n6##x,_n3##y,z,c), I[514] = (T)(img)(_n7##x,_n3##y,z,c), I[515] = (T)(img)(_n8##x,_n3##y,z,c), I[516] = (T)(img)(_n9##x,_n3##y,z,c), I[517] = (T)(img)(_n10##x,_n3##y,z,c), I[518] = (T)(img)(_n11##x,_n3##y,z,c), I[519] = (T)(img)(_n12##x,_n3##y,z,c), I[520] = (T)(img)(_n13##x,_n3##y,z,c), I[521] = (T)(img)(_n14##x,_n3##y,z,c), \ + I[522] = (T)(img)(_p14##x,_n4##y,z,c), I[523] = (T)(img)(_p13##x,_n4##y,z,c), I[524] = (T)(img)(_p12##x,_n4##y,z,c), I[525] = (T)(img)(_p11##x,_n4##y,z,c), I[526] = (T)(img)(_p10##x,_n4##y,z,c), I[527] = (T)(img)(_p9##x,_n4##y,z,c), I[528] = (T)(img)(_p8##x,_n4##y,z,c), I[529] = (T)(img)(_p7##x,_n4##y,z,c), I[530] = (T)(img)(_p6##x,_n4##y,z,c), I[531] = (T)(img)(_p5##x,_n4##y,z,c), I[532] = (T)(img)(_p4##x,_n4##y,z,c), I[533] = (T)(img)(_p3##x,_n4##y,z,c), I[534] = (T)(img)(_p2##x,_n4##y,z,c), I[535] = (T)(img)(_p1##x,_n4##y,z,c), I[536] = (T)(img)(x,_n4##y,z,c), I[537] = (T)(img)(_n1##x,_n4##y,z,c), I[538] = (T)(img)(_n2##x,_n4##y,z,c), I[539] = (T)(img)(_n3##x,_n4##y,z,c), I[540] = (T)(img)(_n4##x,_n4##y,z,c), I[541] = (T)(img)(_n5##x,_n4##y,z,c), I[542] = (T)(img)(_n6##x,_n4##y,z,c), I[543] = (T)(img)(_n7##x,_n4##y,z,c), I[544] = (T)(img)(_n8##x,_n4##y,z,c), I[545] = (T)(img)(_n9##x,_n4##y,z,c), I[546] = (T)(img)(_n10##x,_n4##y,z,c), I[547] = (T)(img)(_n11##x,_n4##y,z,c), I[548] = (T)(img)(_n12##x,_n4##y,z,c), I[549] = (T)(img)(_n13##x,_n4##y,z,c), I[550] = (T)(img)(_n14##x,_n4##y,z,c), \ + I[551] = (T)(img)(_p14##x,_n5##y,z,c), I[552] = (T)(img)(_p13##x,_n5##y,z,c), I[553] = (T)(img)(_p12##x,_n5##y,z,c), I[554] = (T)(img)(_p11##x,_n5##y,z,c), I[555] = (T)(img)(_p10##x,_n5##y,z,c), I[556] = (T)(img)(_p9##x,_n5##y,z,c), I[557] = (T)(img)(_p8##x,_n5##y,z,c), I[558] = (T)(img)(_p7##x,_n5##y,z,c), I[559] = (T)(img)(_p6##x,_n5##y,z,c), I[560] = (T)(img)(_p5##x,_n5##y,z,c), I[561] = (T)(img)(_p4##x,_n5##y,z,c), I[562] = (T)(img)(_p3##x,_n5##y,z,c), I[563] = (T)(img)(_p2##x,_n5##y,z,c), I[564] = (T)(img)(_p1##x,_n5##y,z,c), I[565] = (T)(img)(x,_n5##y,z,c), I[566] = (T)(img)(_n1##x,_n5##y,z,c), I[567] = (T)(img)(_n2##x,_n5##y,z,c), I[568] = (T)(img)(_n3##x,_n5##y,z,c), I[569] = (T)(img)(_n4##x,_n5##y,z,c), I[570] = (T)(img)(_n5##x,_n5##y,z,c), I[571] = (T)(img)(_n6##x,_n5##y,z,c), I[572] = (T)(img)(_n7##x,_n5##y,z,c), I[573] = (T)(img)(_n8##x,_n5##y,z,c), I[574] = (T)(img)(_n9##x,_n5##y,z,c), I[575] = (T)(img)(_n10##x,_n5##y,z,c), I[576] = (T)(img)(_n11##x,_n5##y,z,c), I[577] = (T)(img)(_n12##x,_n5##y,z,c), I[578] = (T)(img)(_n13##x,_n5##y,z,c), I[579] = (T)(img)(_n14##x,_n5##y,z,c), \ + I[580] = (T)(img)(_p14##x,_n6##y,z,c), I[581] = (T)(img)(_p13##x,_n6##y,z,c), I[582] = (T)(img)(_p12##x,_n6##y,z,c), I[583] = (T)(img)(_p11##x,_n6##y,z,c), I[584] = (T)(img)(_p10##x,_n6##y,z,c), I[585] = (T)(img)(_p9##x,_n6##y,z,c), I[586] = (T)(img)(_p8##x,_n6##y,z,c), I[587] = (T)(img)(_p7##x,_n6##y,z,c), I[588] = (T)(img)(_p6##x,_n6##y,z,c), I[589] = (T)(img)(_p5##x,_n6##y,z,c), I[590] = (T)(img)(_p4##x,_n6##y,z,c), I[591] = (T)(img)(_p3##x,_n6##y,z,c), I[592] = (T)(img)(_p2##x,_n6##y,z,c), I[593] = (T)(img)(_p1##x,_n6##y,z,c), I[594] = (T)(img)(x,_n6##y,z,c), I[595] = (T)(img)(_n1##x,_n6##y,z,c), I[596] = (T)(img)(_n2##x,_n6##y,z,c), I[597] = (T)(img)(_n3##x,_n6##y,z,c), I[598] = (T)(img)(_n4##x,_n6##y,z,c), I[599] = (T)(img)(_n5##x,_n6##y,z,c), I[600] = (T)(img)(_n6##x,_n6##y,z,c), I[601] = (T)(img)(_n7##x,_n6##y,z,c), I[602] = (T)(img)(_n8##x,_n6##y,z,c), I[603] = (T)(img)(_n9##x,_n6##y,z,c), I[604] = (T)(img)(_n10##x,_n6##y,z,c), I[605] = (T)(img)(_n11##x,_n6##y,z,c), I[606] = (T)(img)(_n12##x,_n6##y,z,c), I[607] = (T)(img)(_n13##x,_n6##y,z,c), I[608] = (T)(img)(_n14##x,_n6##y,z,c), \ + I[609] = (T)(img)(_p14##x,_n7##y,z,c), I[610] = (T)(img)(_p13##x,_n7##y,z,c), I[611] = (T)(img)(_p12##x,_n7##y,z,c), I[612] = (T)(img)(_p11##x,_n7##y,z,c), I[613] = (T)(img)(_p10##x,_n7##y,z,c), I[614] = (T)(img)(_p9##x,_n7##y,z,c), I[615] = (T)(img)(_p8##x,_n7##y,z,c), I[616] = (T)(img)(_p7##x,_n7##y,z,c), I[617] = (T)(img)(_p6##x,_n7##y,z,c), I[618] = (T)(img)(_p5##x,_n7##y,z,c), I[619] = (T)(img)(_p4##x,_n7##y,z,c), I[620] = (T)(img)(_p3##x,_n7##y,z,c), I[621] = (T)(img)(_p2##x,_n7##y,z,c), I[622] = (T)(img)(_p1##x,_n7##y,z,c), I[623] = (T)(img)(x,_n7##y,z,c), I[624] = (T)(img)(_n1##x,_n7##y,z,c), I[625] = (T)(img)(_n2##x,_n7##y,z,c), I[626] = (T)(img)(_n3##x,_n7##y,z,c), I[627] = (T)(img)(_n4##x,_n7##y,z,c), I[628] = (T)(img)(_n5##x,_n7##y,z,c), I[629] = (T)(img)(_n6##x,_n7##y,z,c), I[630] = (T)(img)(_n7##x,_n7##y,z,c), I[631] = (T)(img)(_n8##x,_n7##y,z,c), I[632] = (T)(img)(_n9##x,_n7##y,z,c), I[633] = (T)(img)(_n10##x,_n7##y,z,c), I[634] = (T)(img)(_n11##x,_n7##y,z,c), I[635] = (T)(img)(_n12##x,_n7##y,z,c), I[636] = (T)(img)(_n13##x,_n7##y,z,c), I[637] = (T)(img)(_n14##x,_n7##y,z,c), \ + I[638] = (T)(img)(_p14##x,_n8##y,z,c), I[639] = (T)(img)(_p13##x,_n8##y,z,c), I[640] = (T)(img)(_p12##x,_n8##y,z,c), I[641] = (T)(img)(_p11##x,_n8##y,z,c), I[642] = (T)(img)(_p10##x,_n8##y,z,c), I[643] = (T)(img)(_p9##x,_n8##y,z,c), I[644] = (T)(img)(_p8##x,_n8##y,z,c), I[645] = (T)(img)(_p7##x,_n8##y,z,c), I[646] = (T)(img)(_p6##x,_n8##y,z,c), I[647] = (T)(img)(_p5##x,_n8##y,z,c), I[648] = (T)(img)(_p4##x,_n8##y,z,c), I[649] = (T)(img)(_p3##x,_n8##y,z,c), I[650] = (T)(img)(_p2##x,_n8##y,z,c), I[651] = (T)(img)(_p1##x,_n8##y,z,c), I[652] = (T)(img)(x,_n8##y,z,c), I[653] = (T)(img)(_n1##x,_n8##y,z,c), I[654] = (T)(img)(_n2##x,_n8##y,z,c), I[655] = (T)(img)(_n3##x,_n8##y,z,c), I[656] = (T)(img)(_n4##x,_n8##y,z,c), I[657] = (T)(img)(_n5##x,_n8##y,z,c), I[658] = (T)(img)(_n6##x,_n8##y,z,c), I[659] = (T)(img)(_n7##x,_n8##y,z,c), I[660] = (T)(img)(_n8##x,_n8##y,z,c), I[661] = (T)(img)(_n9##x,_n8##y,z,c), I[662] = (T)(img)(_n10##x,_n8##y,z,c), I[663] = (T)(img)(_n11##x,_n8##y,z,c), I[664] = (T)(img)(_n12##x,_n8##y,z,c), I[665] = (T)(img)(_n13##x,_n8##y,z,c), I[666] = (T)(img)(_n14##x,_n8##y,z,c), \ + I[667] = (T)(img)(_p14##x,_n9##y,z,c), I[668] = (T)(img)(_p13##x,_n9##y,z,c), I[669] = (T)(img)(_p12##x,_n9##y,z,c), I[670] = (T)(img)(_p11##x,_n9##y,z,c), I[671] = (T)(img)(_p10##x,_n9##y,z,c), I[672] = (T)(img)(_p9##x,_n9##y,z,c), I[673] = (T)(img)(_p8##x,_n9##y,z,c), I[674] = (T)(img)(_p7##x,_n9##y,z,c), I[675] = (T)(img)(_p6##x,_n9##y,z,c), I[676] = (T)(img)(_p5##x,_n9##y,z,c), I[677] = (T)(img)(_p4##x,_n9##y,z,c), I[678] = (T)(img)(_p3##x,_n9##y,z,c), I[679] = (T)(img)(_p2##x,_n9##y,z,c), I[680] = (T)(img)(_p1##x,_n9##y,z,c), I[681] = (T)(img)(x,_n9##y,z,c), I[682] = (T)(img)(_n1##x,_n9##y,z,c), I[683] = (T)(img)(_n2##x,_n9##y,z,c), I[684] = (T)(img)(_n3##x,_n9##y,z,c), I[685] = (T)(img)(_n4##x,_n9##y,z,c), I[686] = (T)(img)(_n5##x,_n9##y,z,c), I[687] = (T)(img)(_n6##x,_n9##y,z,c), I[688] = (T)(img)(_n7##x,_n9##y,z,c), I[689] = (T)(img)(_n8##x,_n9##y,z,c), I[690] = (T)(img)(_n9##x,_n9##y,z,c), I[691] = (T)(img)(_n10##x,_n9##y,z,c), I[692] = (T)(img)(_n11##x,_n9##y,z,c), I[693] = (T)(img)(_n12##x,_n9##y,z,c), I[694] = (T)(img)(_n13##x,_n9##y,z,c), I[695] = (T)(img)(_n14##x,_n9##y,z,c), \ + I[696] = (T)(img)(_p14##x,_n10##y,z,c), I[697] = (T)(img)(_p13##x,_n10##y,z,c), I[698] = (T)(img)(_p12##x,_n10##y,z,c), I[699] = (T)(img)(_p11##x,_n10##y,z,c), I[700] = (T)(img)(_p10##x,_n10##y,z,c), I[701] = (T)(img)(_p9##x,_n10##y,z,c), I[702] = (T)(img)(_p8##x,_n10##y,z,c), I[703] = (T)(img)(_p7##x,_n10##y,z,c), I[704] = (T)(img)(_p6##x,_n10##y,z,c), I[705] = (T)(img)(_p5##x,_n10##y,z,c), I[706] = (T)(img)(_p4##x,_n10##y,z,c), I[707] = (T)(img)(_p3##x,_n10##y,z,c), I[708] = (T)(img)(_p2##x,_n10##y,z,c), I[709] = (T)(img)(_p1##x,_n10##y,z,c), I[710] = (T)(img)(x,_n10##y,z,c), I[711] = (T)(img)(_n1##x,_n10##y,z,c), I[712] = (T)(img)(_n2##x,_n10##y,z,c), I[713] = (T)(img)(_n3##x,_n10##y,z,c), I[714] = (T)(img)(_n4##x,_n10##y,z,c), I[715] = (T)(img)(_n5##x,_n10##y,z,c), I[716] = (T)(img)(_n6##x,_n10##y,z,c), I[717] = (T)(img)(_n7##x,_n10##y,z,c), I[718] = (T)(img)(_n8##x,_n10##y,z,c), I[719] = (T)(img)(_n9##x,_n10##y,z,c), I[720] = (T)(img)(_n10##x,_n10##y,z,c), I[721] = (T)(img)(_n11##x,_n10##y,z,c), I[722] = (T)(img)(_n12##x,_n10##y,z,c), I[723] = (T)(img)(_n13##x,_n10##y,z,c), I[724] = (T)(img)(_n14##x,_n10##y,z,c), \ + I[725] = (T)(img)(_p14##x,_n11##y,z,c), I[726] = (T)(img)(_p13##x,_n11##y,z,c), I[727] = (T)(img)(_p12##x,_n11##y,z,c), I[728] = (T)(img)(_p11##x,_n11##y,z,c), I[729] = (T)(img)(_p10##x,_n11##y,z,c), I[730] = (T)(img)(_p9##x,_n11##y,z,c), I[731] = (T)(img)(_p8##x,_n11##y,z,c), I[732] = (T)(img)(_p7##x,_n11##y,z,c), I[733] = (T)(img)(_p6##x,_n11##y,z,c), I[734] = (T)(img)(_p5##x,_n11##y,z,c), I[735] = (T)(img)(_p4##x,_n11##y,z,c), I[736] = (T)(img)(_p3##x,_n11##y,z,c), I[737] = (T)(img)(_p2##x,_n11##y,z,c), I[738] = (T)(img)(_p1##x,_n11##y,z,c), I[739] = (T)(img)(x,_n11##y,z,c), I[740] = (T)(img)(_n1##x,_n11##y,z,c), I[741] = (T)(img)(_n2##x,_n11##y,z,c), I[742] = (T)(img)(_n3##x,_n11##y,z,c), I[743] = (T)(img)(_n4##x,_n11##y,z,c), I[744] = (T)(img)(_n5##x,_n11##y,z,c), I[745] = (T)(img)(_n6##x,_n11##y,z,c), I[746] = (T)(img)(_n7##x,_n11##y,z,c), I[747] = (T)(img)(_n8##x,_n11##y,z,c), I[748] = (T)(img)(_n9##x,_n11##y,z,c), I[749] = (T)(img)(_n10##x,_n11##y,z,c), I[750] = (T)(img)(_n11##x,_n11##y,z,c), I[751] = (T)(img)(_n12##x,_n11##y,z,c), I[752] = (T)(img)(_n13##x,_n11##y,z,c), I[753] = (T)(img)(_n14##x,_n11##y,z,c), \ + I[754] = (T)(img)(_p14##x,_n12##y,z,c), I[755] = (T)(img)(_p13##x,_n12##y,z,c), I[756] = (T)(img)(_p12##x,_n12##y,z,c), I[757] = (T)(img)(_p11##x,_n12##y,z,c), I[758] = (T)(img)(_p10##x,_n12##y,z,c), I[759] = (T)(img)(_p9##x,_n12##y,z,c), I[760] = (T)(img)(_p8##x,_n12##y,z,c), I[761] = (T)(img)(_p7##x,_n12##y,z,c), I[762] = (T)(img)(_p6##x,_n12##y,z,c), I[763] = (T)(img)(_p5##x,_n12##y,z,c), I[764] = (T)(img)(_p4##x,_n12##y,z,c), I[765] = (T)(img)(_p3##x,_n12##y,z,c), I[766] = (T)(img)(_p2##x,_n12##y,z,c), I[767] = (T)(img)(_p1##x,_n12##y,z,c), I[768] = (T)(img)(x,_n12##y,z,c), I[769] = (T)(img)(_n1##x,_n12##y,z,c), I[770] = (T)(img)(_n2##x,_n12##y,z,c), I[771] = (T)(img)(_n3##x,_n12##y,z,c), I[772] = (T)(img)(_n4##x,_n12##y,z,c), I[773] = (T)(img)(_n5##x,_n12##y,z,c), I[774] = (T)(img)(_n6##x,_n12##y,z,c), I[775] = (T)(img)(_n7##x,_n12##y,z,c), I[776] = (T)(img)(_n8##x,_n12##y,z,c), I[777] = (T)(img)(_n9##x,_n12##y,z,c), I[778] = (T)(img)(_n10##x,_n12##y,z,c), I[779] = (T)(img)(_n11##x,_n12##y,z,c), I[780] = (T)(img)(_n12##x,_n12##y,z,c), I[781] = (T)(img)(_n13##x,_n12##y,z,c), I[782] = (T)(img)(_n14##x,_n12##y,z,c), \ + I[783] = (T)(img)(_p14##x,_n13##y,z,c), I[784] = (T)(img)(_p13##x,_n13##y,z,c), I[785] = (T)(img)(_p12##x,_n13##y,z,c), I[786] = (T)(img)(_p11##x,_n13##y,z,c), I[787] = (T)(img)(_p10##x,_n13##y,z,c), I[788] = (T)(img)(_p9##x,_n13##y,z,c), I[789] = (T)(img)(_p8##x,_n13##y,z,c), I[790] = (T)(img)(_p7##x,_n13##y,z,c), I[791] = (T)(img)(_p6##x,_n13##y,z,c), I[792] = (T)(img)(_p5##x,_n13##y,z,c), I[793] = (T)(img)(_p4##x,_n13##y,z,c), I[794] = (T)(img)(_p3##x,_n13##y,z,c), I[795] = (T)(img)(_p2##x,_n13##y,z,c), I[796] = (T)(img)(_p1##x,_n13##y,z,c), I[797] = (T)(img)(x,_n13##y,z,c), I[798] = (T)(img)(_n1##x,_n13##y,z,c), I[799] = (T)(img)(_n2##x,_n13##y,z,c), I[800] = (T)(img)(_n3##x,_n13##y,z,c), I[801] = (T)(img)(_n4##x,_n13##y,z,c), I[802] = (T)(img)(_n5##x,_n13##y,z,c), I[803] = (T)(img)(_n6##x,_n13##y,z,c), I[804] = (T)(img)(_n7##x,_n13##y,z,c), I[805] = (T)(img)(_n8##x,_n13##y,z,c), I[806] = (T)(img)(_n9##x,_n13##y,z,c), I[807] = (T)(img)(_n10##x,_n13##y,z,c), I[808] = (T)(img)(_n11##x,_n13##y,z,c), I[809] = (T)(img)(_n12##x,_n13##y,z,c), I[810] = (T)(img)(_n13##x,_n13##y,z,c), I[811] = (T)(img)(_n14##x,_n13##y,z,c), \ + I[812] = (T)(img)(_p14##x,_n14##y,z,c), I[813] = (T)(img)(_p13##x,_n14##y,z,c), I[814] = (T)(img)(_p12##x,_n14##y,z,c), I[815] = (T)(img)(_p11##x,_n14##y,z,c), I[816] = (T)(img)(_p10##x,_n14##y,z,c), I[817] = (T)(img)(_p9##x,_n14##y,z,c), I[818] = (T)(img)(_p8##x,_n14##y,z,c), I[819] = (T)(img)(_p7##x,_n14##y,z,c), I[820] = (T)(img)(_p6##x,_n14##y,z,c), I[821] = (T)(img)(_p5##x,_n14##y,z,c), I[822] = (T)(img)(_p4##x,_n14##y,z,c), I[823] = (T)(img)(_p3##x,_n14##y,z,c), I[824] = (T)(img)(_p2##x,_n14##y,z,c), I[825] = (T)(img)(_p1##x,_n14##y,z,c), I[826] = (T)(img)(x,_n14##y,z,c), I[827] = (T)(img)(_n1##x,_n14##y,z,c), I[828] = (T)(img)(_n2##x,_n14##y,z,c), I[829] = (T)(img)(_n3##x,_n14##y,z,c), I[830] = (T)(img)(_n4##x,_n14##y,z,c), I[831] = (T)(img)(_n5##x,_n14##y,z,c), I[832] = (T)(img)(_n6##x,_n14##y,z,c), I[833] = (T)(img)(_n7##x,_n14##y,z,c), I[834] = (T)(img)(_n8##x,_n14##y,z,c), I[835] = (T)(img)(_n9##x,_n14##y,z,c), I[836] = (T)(img)(_n10##x,_n14##y,z,c), I[837] = (T)(img)(_n11##x,_n14##y,z,c), I[838] = (T)(img)(_n12##x,_n14##y,z,c), I[839] = (T)(img)(_n13##x,_n14##y,z,c), I[840] = (T)(img)(_n14##x,_n14##y,z,c); + +// Define 30x30 loop macros +//------------------------- +#define cimg_for30(bound,i) for (int i = 0, \ + _p14##i = 0, _p13##i = 0, _p12##i = 0, _p11##i = 0, _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11, \ + _n12##i = 12>=(int)(bound)?(int)(bound) - 1:12, \ + _n13##i = 13>=(int)(bound)?(int)(bound) - 1:13, \ + _n14##i = 14>=(int)(bound)?(int)(bound) - 1:14, \ + _n15##i = 15>=(int)(bound)?(int)(bound) - 1:15; \ + _n15##i<(int)(bound) || _n14##i==--_n15##i || _n13##i==--_n14##i || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n15##i = _n14##i = _n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p14##i = _p13##i, _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i, ++_n14##i, ++_n15##i) + +#define cimg_for30X(img,x) cimg_for30((img)._width,x) +#define cimg_for30Y(img,y) cimg_for30((img)._height,y) +#define cimg_for30Z(img,z) cimg_for30((img)._depth,z) +#define cimg_for30C(img,c) cimg_for30((img)._spectrum,c) +#define cimg_for30XY(img,x,y) cimg_for30Y(img,y) cimg_for30X(img,x) +#define cimg_for30XZ(img,x,z) cimg_for30Z(img,z) cimg_for30X(img,x) +#define cimg_for30XC(img,x,c) cimg_for30C(img,c) cimg_for30X(img,x) +#define cimg_for30YZ(img,y,z) cimg_for30Z(img,z) cimg_for30Y(img,y) +#define cimg_for30YC(img,y,c) cimg_for30C(img,c) cimg_for30Y(img,y) +#define cimg_for30ZC(img,z,c) cimg_for30C(img,c) cimg_for30Z(img,z) +#define cimg_for30XYZ(img,x,y,z) cimg_for30Z(img,z) cimg_for30XY(img,x,y) +#define cimg_for30XZC(img,x,z,c) cimg_for30C(img,c) cimg_for30XZ(img,x,z) +#define cimg_for30YZC(img,y,z,c) cimg_for30C(img,c) cimg_for30YZ(img,y,z) +#define cimg_for30XYZC(img,x,y,z,c) cimg_for30C(img,c) cimg_for30XYZ(img,x,y,z) + +#define cimg_for_in30(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p14##i = i - 14<0?0:i - 14, \ + _p13##i = i - 13<0?0:i - 13, \ + _p12##i = i - 12<0?0:i - 12, \ + _p11##i = i - 11<0?0:i - 11, \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11, \ + _n12##i = i + 12>=(int)(bound)?(int)(bound) - 1:i + 12, \ + _n13##i = i + 13>=(int)(bound)?(int)(bound) - 1:i + 13, \ + _n14##i = i + 14>=(int)(bound)?(int)(bound) - 1:i + 14, \ + _n15##i = i + 15>=(int)(bound)?(int)(bound) - 1:i + 15; \ + i<=(int)(i1) && (_n15##i<(int)(bound) || _n14##i==--_n15##i || _n13##i==--_n14##i || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n15##i = _n14##i = _n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p14##i = _p13##i, _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i, ++_n14##i, ++_n15##i) + +#define cimg_for_in30X(img,x0,x1,x) cimg_for_in30((img)._width,x0,x1,x) +#define cimg_for_in30Y(img,y0,y1,y) cimg_for_in30((img)._height,y0,y1,y) +#define cimg_for_in30Z(img,z0,z1,z) cimg_for_in30((img)._depth,z0,z1,z) +#define cimg_for_in30C(img,c0,c1,c) cimg_for_in30((img)._spectrum,c0,c1,c) +#define cimg_for_in30XY(img,x0,y0,x1,y1,x,y) cimg_for_in30Y(img,y0,y1,y) cimg_for_in30X(img,x0,x1,x) +#define cimg_for_in30XZ(img,x0,z0,x1,z1,x,z) cimg_for_in30Z(img,z0,z1,z) cimg_for_in30X(img,x0,x1,x) +#define cimg_for_in30XC(img,x0,c0,x1,c1,x,c) cimg_for_in30C(img,c0,c1,c) cimg_for_in30X(img,x0,x1,x) +#define cimg_for_in30YZ(img,y0,z0,y1,z1,y,z) cimg_for_in30Z(img,z0,z1,z) cimg_for_in30Y(img,y0,y1,y) +#define cimg_for_in30YC(img,y0,c0,y1,c1,y,c) cimg_for_in30C(img,c0,c1,c) cimg_for_in30Y(img,y0,y1,y) +#define cimg_for_in30ZC(img,z0,c0,z1,c1,z,c) cimg_for_in30C(img,c0,c1,c) cimg_for_in30Z(img,z0,z1,z) +#define cimg_for_in30XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in30Z(img,z0,z1,z) cimg_for_in30XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in30XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in30C(img,c0,c1,c) cimg_for_in30XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in30YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in30C(img,c0,c1,c) cimg_for_in30YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in30XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in30C(img,c0,c1,c) cimg_for_in30XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for30x30(img,x,y,z,c,I,T) \ + cimg_for30((img)._height,y) for (int x = 0, \ + _p14##x = 0, _p13##x = 0, _p12##x = 0, _p11##x = 0, _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = 11>=((img)._width)?(img).width() - 1:11, \ + _n12##x = 12>=((img)._width)?(img).width() - 1:12, \ + _n13##x = 13>=((img)._width)?(img).width() - 1:13, \ + _n14##x = 14>=((img)._width)?(img).width() - 1:14, \ + _n15##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = I[11] = I[12] = I[13] = I[14] = (T)(img)(0,_p14##y,z,c)), \ + (I[30] = I[31] = I[32] = I[33] = I[34] = I[35] = I[36] = I[37] = I[38] = I[39] = I[40] = I[41] = I[42] = I[43] = I[44] = (T)(img)(0,_p13##y,z,c)), \ + (I[60] = I[61] = I[62] = I[63] = I[64] = I[65] = I[66] = I[67] = I[68] = I[69] = I[70] = I[71] = I[72] = I[73] = I[74] = (T)(img)(0,_p12##y,z,c)), \ + (I[90] = I[91] = I[92] = I[93] = I[94] = I[95] = I[96] = I[97] = I[98] = I[99] = I[100] = I[101] = I[102] = I[103] = I[104] = (T)(img)(0,_p11##y,z,c)), \ + (I[120] = I[121] = I[122] = I[123] = I[124] = I[125] = I[126] = I[127] = I[128] = I[129] = I[130] = I[131] = I[132] = I[133] = I[134] = (T)(img)(0,_p10##y,z,c)), \ + (I[150] = I[151] = I[152] = I[153] = I[154] = I[155] = I[156] = I[157] = I[158] = I[159] = I[160] = I[161] = I[162] = I[163] = I[164] = (T)(img)(0,_p9##y,z,c)), \ + (I[180] = I[181] = I[182] = I[183] = I[184] = I[185] = I[186] = I[187] = I[188] = I[189] = I[190] = I[191] = I[192] = I[193] = I[194] = (T)(img)(0,_p8##y,z,c)), \ + (I[210] = I[211] = I[212] = I[213] = I[214] = I[215] = I[216] = I[217] = I[218] = I[219] = I[220] = I[221] = I[222] = I[223] = I[224] = (T)(img)(0,_p7##y,z,c)), \ + (I[240] = I[241] = I[242] = I[243] = I[244] = I[245] = I[246] = I[247] = I[248] = I[249] = I[250] = I[251] = I[252] = I[253] = I[254] = (T)(img)(0,_p6##y,z,c)), \ + (I[270] = I[271] = I[272] = I[273] = I[274] = I[275] = I[276] = I[277] = I[278] = I[279] = I[280] = I[281] = I[282] = I[283] = I[284] = (T)(img)(0,_p5##y,z,c)), \ + (I[300] = I[301] = I[302] = I[303] = I[304] = I[305] = I[306] = I[307] = I[308] = I[309] = I[310] = I[311] = I[312] = I[313] = I[314] = (T)(img)(0,_p4##y,z,c)), \ + (I[330] = I[331] = I[332] = I[333] = I[334] = I[335] = I[336] = I[337] = I[338] = I[339] = I[340] = I[341] = I[342] = I[343] = I[344] = (T)(img)(0,_p3##y,z,c)), \ + (I[360] = I[361] = I[362] = I[363] = I[364] = I[365] = I[366] = I[367] = I[368] = I[369] = I[370] = I[371] = I[372] = I[373] = I[374] = (T)(img)(0,_p2##y,z,c)), \ + (I[390] = I[391] = I[392] = I[393] = I[394] = I[395] = I[396] = I[397] = I[398] = I[399] = I[400] = I[401] = I[402] = I[403] = I[404] = (T)(img)(0,_p1##y,z,c)), \ + (I[420] = I[421] = I[422] = I[423] = I[424] = I[425] = I[426] = I[427] = I[428] = I[429] = I[430] = I[431] = I[432] = I[433] = I[434] = (T)(img)(0,y,z,c)), \ + (I[450] = I[451] = I[452] = I[453] = I[454] = I[455] = I[456] = I[457] = I[458] = I[459] = I[460] = I[461] = I[462] = I[463] = I[464] = (T)(img)(0,_n1##y,z,c)), \ + (I[480] = I[481] = I[482] = I[483] = I[484] = I[485] = I[486] = I[487] = I[488] = I[489] = I[490] = I[491] = I[492] = I[493] = I[494] = (T)(img)(0,_n2##y,z,c)), \ + (I[510] = I[511] = I[512] = I[513] = I[514] = I[515] = I[516] = I[517] = I[518] = I[519] = I[520] = I[521] = I[522] = I[523] = I[524] = (T)(img)(0,_n3##y,z,c)), \ + (I[540] = I[541] = I[542] = I[543] = I[544] = I[545] = I[546] = I[547] = I[548] = I[549] = I[550] = I[551] = I[552] = I[553] = I[554] = (T)(img)(0,_n4##y,z,c)), \ + (I[570] = I[571] = I[572] = I[573] = I[574] = I[575] = I[576] = I[577] = I[578] = I[579] = I[580] = I[581] = I[582] = I[583] = I[584] = (T)(img)(0,_n5##y,z,c)), \ + (I[600] = I[601] = I[602] = I[603] = I[604] = I[605] = I[606] = I[607] = I[608] = I[609] = I[610] = I[611] = I[612] = I[613] = I[614] = (T)(img)(0,_n6##y,z,c)), \ + (I[630] = I[631] = I[632] = I[633] = I[634] = I[635] = I[636] = I[637] = I[638] = I[639] = I[640] = I[641] = I[642] = I[643] = I[644] = (T)(img)(0,_n7##y,z,c)), \ + (I[660] = I[661] = I[662] = I[663] = I[664] = I[665] = I[666] = I[667] = I[668] = I[669] = I[670] = I[671] = I[672] = I[673] = I[674] = (T)(img)(0,_n8##y,z,c)), \ + (I[690] = I[691] = I[692] = I[693] = I[694] = I[695] = I[696] = I[697] = I[698] = I[699] = I[700] = I[701] = I[702] = I[703] = I[704] = (T)(img)(0,_n9##y,z,c)), \ + (I[720] = I[721] = I[722] = I[723] = I[724] = I[725] = I[726] = I[727] = I[728] = I[729] = I[730] = I[731] = I[732] = I[733] = I[734] = (T)(img)(0,_n10##y,z,c)), \ + (I[750] = I[751] = I[752] = I[753] = I[754] = I[755] = I[756] = I[757] = I[758] = I[759] = I[760] = I[761] = I[762] = I[763] = I[764] = (T)(img)(0,_n11##y,z,c)), \ + (I[780] = I[781] = I[782] = I[783] = I[784] = I[785] = I[786] = I[787] = I[788] = I[789] = I[790] = I[791] = I[792] = I[793] = I[794] = (T)(img)(0,_n12##y,z,c)), \ + (I[810] = I[811] = I[812] = I[813] = I[814] = I[815] = I[816] = I[817] = I[818] = I[819] = I[820] = I[821] = I[822] = I[823] = I[824] = (T)(img)(0,_n13##y,z,c)), \ + (I[840] = I[841] = I[842] = I[843] = I[844] = I[845] = I[846] = I[847] = I[848] = I[849] = I[850] = I[851] = I[852] = I[853] = I[854] = (T)(img)(0,_n14##y,z,c)), \ + (I[870] = I[871] = I[872] = I[873] = I[874] = I[875] = I[876] = I[877] = I[878] = I[879] = I[880] = I[881] = I[882] = I[883] = I[884] = (T)(img)(0,_n15##y,z,c)), \ + (I[15] = (T)(img)(_n1##x,_p14##y,z,c)), \ + (I[45] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[75] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[105] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[135] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[165] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[195] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[225] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[255] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[285] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[315] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[345] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[375] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[405] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[435] = (T)(img)(_n1##x,y,z,c)), \ + (I[465] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[495] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[525] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[555] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[585] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[615] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[645] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[675] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[705] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[735] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[765] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[795] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[825] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[855] = (T)(img)(_n1##x,_n14##y,z,c)), \ + (I[885] = (T)(img)(_n1##x,_n15##y,z,c)), \ + (I[16] = (T)(img)(_n2##x,_p14##y,z,c)), \ + (I[46] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[76] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[106] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[136] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[166] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[196] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[226] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[256] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[286] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[316] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[346] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[376] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[406] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[436] = (T)(img)(_n2##x,y,z,c)), \ + (I[466] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[496] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[526] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[556] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[586] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[616] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[646] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[676] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[706] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[736] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[766] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[796] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[826] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[856] = (T)(img)(_n2##x,_n14##y,z,c)), \ + (I[886] = (T)(img)(_n2##x,_n15##y,z,c)), \ + (I[17] = (T)(img)(_n3##x,_p14##y,z,c)), \ + (I[47] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[77] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[107] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[137] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[167] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[197] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[227] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[257] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[287] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[317] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[347] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[377] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[407] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[437] = (T)(img)(_n3##x,y,z,c)), \ + (I[467] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[497] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[527] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[557] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[587] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[617] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[647] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[677] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[707] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[737] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[767] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[797] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[827] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[857] = (T)(img)(_n3##x,_n14##y,z,c)), \ + (I[887] = (T)(img)(_n3##x,_n15##y,z,c)), \ + (I[18] = (T)(img)(_n4##x,_p14##y,z,c)), \ + (I[48] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[78] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[108] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[138] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[168] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[198] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[228] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[258] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[288] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[318] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[348] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[378] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[408] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[438] = (T)(img)(_n4##x,y,z,c)), \ + (I[468] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[498] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[528] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[558] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[588] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[618] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[648] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[678] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[708] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[738] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[768] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[798] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[828] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[858] = (T)(img)(_n4##x,_n14##y,z,c)), \ + (I[888] = (T)(img)(_n4##x,_n15##y,z,c)), \ + (I[19] = (T)(img)(_n5##x,_p14##y,z,c)), \ + (I[49] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[79] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[109] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[139] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[169] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[199] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[229] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[259] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[289] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[319] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[349] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[379] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[409] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[439] = (T)(img)(_n5##x,y,z,c)), \ + (I[469] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[499] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[529] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[559] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[589] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[619] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[649] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[679] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[709] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[739] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[769] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[799] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[829] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[859] = (T)(img)(_n5##x,_n14##y,z,c)), \ + (I[889] = (T)(img)(_n5##x,_n15##y,z,c)), \ + (I[20] = (T)(img)(_n6##x,_p14##y,z,c)), \ + (I[50] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[80] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[110] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[140] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[170] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[200] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[230] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[260] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[290] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[320] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[350] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[380] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[410] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[440] = (T)(img)(_n6##x,y,z,c)), \ + (I[470] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[500] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[530] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[560] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[590] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[620] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[650] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[680] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[710] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[740] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[770] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[800] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[830] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[860] = (T)(img)(_n6##x,_n14##y,z,c)), \ + (I[890] = (T)(img)(_n6##x,_n15##y,z,c)), \ + (I[21] = (T)(img)(_n7##x,_p14##y,z,c)), \ + (I[51] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[81] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[111] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[141] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[171] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[201] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[231] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[261] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[291] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[321] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[351] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[381] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[411] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[441] = (T)(img)(_n7##x,y,z,c)), \ + (I[471] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[501] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[531] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[561] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[591] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[621] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[651] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[681] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[711] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[741] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[771] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[801] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[831] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[861] = (T)(img)(_n7##x,_n14##y,z,c)), \ + (I[891] = (T)(img)(_n7##x,_n15##y,z,c)), \ + (I[22] = (T)(img)(_n8##x,_p14##y,z,c)), \ + (I[52] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[82] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[112] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[142] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[172] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[202] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[232] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[262] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[292] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[322] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[352] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[382] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[412] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[442] = (T)(img)(_n8##x,y,z,c)), \ + (I[472] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[502] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[532] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[562] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[592] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[622] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[652] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[682] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[712] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[742] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[772] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[802] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[832] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[862] = (T)(img)(_n8##x,_n14##y,z,c)), \ + (I[892] = (T)(img)(_n8##x,_n15##y,z,c)), \ + (I[23] = (T)(img)(_n9##x,_p14##y,z,c)), \ + (I[53] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[83] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[113] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[143] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[173] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[203] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[233] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[263] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[293] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[323] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[353] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[383] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[413] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[443] = (T)(img)(_n9##x,y,z,c)), \ + (I[473] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[503] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[533] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[563] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[593] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[623] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[653] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[683] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[713] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[743] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[773] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[803] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[833] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[863] = (T)(img)(_n9##x,_n14##y,z,c)), \ + (I[893] = (T)(img)(_n9##x,_n15##y,z,c)), \ + (I[24] = (T)(img)(_n10##x,_p14##y,z,c)), \ + (I[54] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[84] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[114] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[144] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[174] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[204] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[234] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[264] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[294] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[324] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[354] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[384] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[414] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[444] = (T)(img)(_n10##x,y,z,c)), \ + (I[474] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[504] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[534] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[564] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[594] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[624] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[654] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[684] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[714] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[744] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[774] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[804] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[834] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[864] = (T)(img)(_n10##x,_n14##y,z,c)), \ + (I[894] = (T)(img)(_n10##x,_n15##y,z,c)), \ + (I[25] = (T)(img)(_n11##x,_p14##y,z,c)), \ + (I[55] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[85] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[115] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[145] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[175] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[205] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[235] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[265] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[295] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[325] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[355] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[385] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[415] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[445] = (T)(img)(_n11##x,y,z,c)), \ + (I[475] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[505] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[535] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[565] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[595] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[625] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[655] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[685] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[715] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[745] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[775] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[805] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[835] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[865] = (T)(img)(_n11##x,_n14##y,z,c)), \ + (I[895] = (T)(img)(_n11##x,_n15##y,z,c)), \ + (I[26] = (T)(img)(_n12##x,_p14##y,z,c)), \ + (I[56] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[86] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[116] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[146] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[176] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[206] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[236] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[266] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[296] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[326] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[356] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[386] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[416] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[446] = (T)(img)(_n12##x,y,z,c)), \ + (I[476] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[506] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[536] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[566] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[596] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[626] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[656] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[686] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[716] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[746] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[776] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[806] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[836] = (T)(img)(_n12##x,_n13##y,z,c)), \ + (I[866] = (T)(img)(_n12##x,_n14##y,z,c)), \ + (I[896] = (T)(img)(_n12##x,_n15##y,z,c)), \ + (I[27] = (T)(img)(_n13##x,_p14##y,z,c)), \ + (I[57] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[87] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[117] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[147] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[177] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[207] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[237] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[267] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[297] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[327] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[357] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[387] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[417] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[447] = (T)(img)(_n13##x,y,z,c)), \ + (I[477] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[507] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[537] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[567] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[597] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[627] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[657] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[687] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[717] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[747] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[777] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[807] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[837] = (T)(img)(_n13##x,_n13##y,z,c)), \ + (I[867] = (T)(img)(_n13##x,_n14##y,z,c)), \ + (I[897] = (T)(img)(_n13##x,_n15##y,z,c)), \ + (I[28] = (T)(img)(_n14##x,_p14##y,z,c)), \ + (I[58] = (T)(img)(_n14##x,_p13##y,z,c)), \ + (I[88] = (T)(img)(_n14##x,_p12##y,z,c)), \ + (I[118] = (T)(img)(_n14##x,_p11##y,z,c)), \ + (I[148] = (T)(img)(_n14##x,_p10##y,z,c)), \ + (I[178] = (T)(img)(_n14##x,_p9##y,z,c)), \ + (I[208] = (T)(img)(_n14##x,_p8##y,z,c)), \ + (I[238] = (T)(img)(_n14##x,_p7##y,z,c)), \ + (I[268] = (T)(img)(_n14##x,_p6##y,z,c)), \ + (I[298] = (T)(img)(_n14##x,_p5##y,z,c)), \ + (I[328] = (T)(img)(_n14##x,_p4##y,z,c)), \ + (I[358] = (T)(img)(_n14##x,_p3##y,z,c)), \ + (I[388] = (T)(img)(_n14##x,_p2##y,z,c)), \ + (I[418] = (T)(img)(_n14##x,_p1##y,z,c)), \ + (I[448] = (T)(img)(_n14##x,y,z,c)), \ + (I[478] = (T)(img)(_n14##x,_n1##y,z,c)), \ + (I[508] = (T)(img)(_n14##x,_n2##y,z,c)), \ + (I[538] = (T)(img)(_n14##x,_n3##y,z,c)), \ + (I[568] = (T)(img)(_n14##x,_n4##y,z,c)), \ + (I[598] = (T)(img)(_n14##x,_n5##y,z,c)), \ + (I[628] = (T)(img)(_n14##x,_n6##y,z,c)), \ + (I[658] = (T)(img)(_n14##x,_n7##y,z,c)), \ + (I[688] = (T)(img)(_n14##x,_n8##y,z,c)), \ + (I[718] = (T)(img)(_n14##x,_n9##y,z,c)), \ + (I[748] = (T)(img)(_n14##x,_n10##y,z,c)), \ + (I[778] = (T)(img)(_n14##x,_n11##y,z,c)), \ + (I[808] = (T)(img)(_n14##x,_n12##y,z,c)), \ + (I[838] = (T)(img)(_n14##x,_n13##y,z,c)), \ + (I[868] = (T)(img)(_n14##x,_n14##y,z,c)), \ + (I[898] = (T)(img)(_n14##x,_n15##y,z,c)), \ + 15>=((img)._width)?(img).width() - 1:15); \ + (_n15##x<(img).width() && ( \ + (I[29] = (T)(img)(_n15##x,_p14##y,z,c)), \ + (I[59] = (T)(img)(_n15##x,_p13##y,z,c)), \ + (I[89] = (T)(img)(_n15##x,_p12##y,z,c)), \ + (I[119] = (T)(img)(_n15##x,_p11##y,z,c)), \ + (I[149] = (T)(img)(_n15##x,_p10##y,z,c)), \ + (I[179] = (T)(img)(_n15##x,_p9##y,z,c)), \ + (I[209] = (T)(img)(_n15##x,_p8##y,z,c)), \ + (I[239] = (T)(img)(_n15##x,_p7##y,z,c)), \ + (I[269] = (T)(img)(_n15##x,_p6##y,z,c)), \ + (I[299] = (T)(img)(_n15##x,_p5##y,z,c)), \ + (I[329] = (T)(img)(_n15##x,_p4##y,z,c)), \ + (I[359] = (T)(img)(_n15##x,_p3##y,z,c)), \ + (I[389] = (T)(img)(_n15##x,_p2##y,z,c)), \ + (I[419] = (T)(img)(_n15##x,_p1##y,z,c)), \ + (I[449] = (T)(img)(_n15##x,y,z,c)), \ + (I[479] = (T)(img)(_n15##x,_n1##y,z,c)), \ + (I[509] = (T)(img)(_n15##x,_n2##y,z,c)), \ + (I[539] = (T)(img)(_n15##x,_n3##y,z,c)), \ + (I[569] = (T)(img)(_n15##x,_n4##y,z,c)), \ + (I[599] = (T)(img)(_n15##x,_n5##y,z,c)), \ + (I[629] = (T)(img)(_n15##x,_n6##y,z,c)), \ + (I[659] = (T)(img)(_n15##x,_n7##y,z,c)), \ + (I[689] = (T)(img)(_n15##x,_n8##y,z,c)), \ + (I[719] = (T)(img)(_n15##x,_n9##y,z,c)), \ + (I[749] = (T)(img)(_n15##x,_n10##y,z,c)), \ + (I[779] = (T)(img)(_n15##x,_n11##y,z,c)), \ + (I[809] = (T)(img)(_n15##x,_n12##y,z,c)), \ + (I[839] = (T)(img)(_n15##x,_n13##y,z,c)), \ + (I[869] = (T)(img)(_n15##x,_n14##y,z,c)), \ + (I[899] = (T)(img)(_n15##x,_n15##y,z,c)),1)) || \ + _n14##x==--_n15##x || _n13##x==--_n14##x || _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n15##x = _n14##x = _n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], \ + I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], \ + I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], \ + I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], \ + I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], \ + I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], \ + I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], \ + I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], \ + I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], \ + I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], \ + I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], \ + I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], \ + I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], \ + I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], \ + I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], \ + I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], \ + I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], \ + I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], I[649] = I[650], I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], \ + I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], I[671] = I[672], I[672] = I[673], I[673] = I[674], I[674] = I[675], I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], I[681] = I[682], I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], \ + I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], I[695] = I[696], I[696] = I[697], I[697] = I[698], I[698] = I[699], I[699] = I[700], I[700] = I[701], I[701] = I[702], I[702] = I[703], I[703] = I[704], I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], I[712] = I[713], I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], \ + I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], I[724] = I[725], I[725] = I[726], I[726] = I[727], I[727] = I[728], I[728] = I[729], I[729] = I[730], I[730] = I[731], I[731] = I[732], I[732] = I[733], I[733] = I[734], I[734] = I[735], I[735] = I[736], I[736] = I[737], I[737] = I[738], I[738] = I[739], I[739] = I[740], I[740] = I[741], I[741] = I[742], I[742] = I[743], I[743] = I[744], I[744] = I[745], I[745] = I[746], I[746] = I[747], I[747] = I[748], I[748] = I[749], \ + I[750] = I[751], I[751] = I[752], I[752] = I[753], I[753] = I[754], I[754] = I[755], I[755] = I[756], I[756] = I[757], I[757] = I[758], I[758] = I[759], I[759] = I[760], I[760] = I[761], I[761] = I[762], I[762] = I[763], I[763] = I[764], I[764] = I[765], I[765] = I[766], I[766] = I[767], I[767] = I[768], I[768] = I[769], I[769] = I[770], I[770] = I[771], I[771] = I[772], I[772] = I[773], I[773] = I[774], I[774] = I[775], I[775] = I[776], I[776] = I[777], I[777] = I[778], I[778] = I[779], \ + I[780] = I[781], I[781] = I[782], I[782] = I[783], I[783] = I[784], I[784] = I[785], I[785] = I[786], I[786] = I[787], I[787] = I[788], I[788] = I[789], I[789] = I[790], I[790] = I[791], I[791] = I[792], I[792] = I[793], I[793] = I[794], I[794] = I[795], I[795] = I[796], I[796] = I[797], I[797] = I[798], I[798] = I[799], I[799] = I[800], I[800] = I[801], I[801] = I[802], I[802] = I[803], I[803] = I[804], I[804] = I[805], I[805] = I[806], I[806] = I[807], I[807] = I[808], I[808] = I[809], \ + I[810] = I[811], I[811] = I[812], I[812] = I[813], I[813] = I[814], I[814] = I[815], I[815] = I[816], I[816] = I[817], I[817] = I[818], I[818] = I[819], I[819] = I[820], I[820] = I[821], I[821] = I[822], I[822] = I[823], I[823] = I[824], I[824] = I[825], I[825] = I[826], I[826] = I[827], I[827] = I[828], I[828] = I[829], I[829] = I[830], I[830] = I[831], I[831] = I[832], I[832] = I[833], I[833] = I[834], I[834] = I[835], I[835] = I[836], I[836] = I[837], I[837] = I[838], I[838] = I[839], \ + I[840] = I[841], I[841] = I[842], I[842] = I[843], I[843] = I[844], I[844] = I[845], I[845] = I[846], I[846] = I[847], I[847] = I[848], I[848] = I[849], I[849] = I[850], I[850] = I[851], I[851] = I[852], I[852] = I[853], I[853] = I[854], I[854] = I[855], I[855] = I[856], I[856] = I[857], I[857] = I[858], I[858] = I[859], I[859] = I[860], I[860] = I[861], I[861] = I[862], I[862] = I[863], I[863] = I[864], I[864] = I[865], I[865] = I[866], I[866] = I[867], I[867] = I[868], I[868] = I[869], \ + I[870] = I[871], I[871] = I[872], I[872] = I[873], I[873] = I[874], I[874] = I[875], I[875] = I[876], I[876] = I[877], I[877] = I[878], I[878] = I[879], I[879] = I[880], I[880] = I[881], I[881] = I[882], I[882] = I[883], I[883] = I[884], I[884] = I[885], I[885] = I[886], I[886] = I[887], I[887] = I[888], I[888] = I[889], I[889] = I[890], I[890] = I[891], I[891] = I[892], I[892] = I[893], I[893] = I[894], I[894] = I[895], I[895] = I[896], I[896] = I[897], I[897] = I[898], I[898] = I[899], \ + _p14##x = _p13##x, _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x, ++_n14##x, ++_n15##x) + +#define cimg_for_in30x30(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in30((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p14##x = x - 14<0?0:x - 14, \ + _p13##x = x - 13<0?0:x - 13, \ + _p12##x = x - 12<0?0:x - 12, \ + _p11##x = x - 11<0?0:x - 11, \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = x + 11>=(img).width()?(img).width() - 1:x + 11, \ + _n12##x = x + 12>=(img).width()?(img).width() - 1:x + 12, \ + _n13##x = x + 13>=(img).width()?(img).width() - 1:x + 13, \ + _n14##x = x + 14>=(img).width()?(img).width() - 1:x + 14, \ + _n15##x = (int)( \ + (I[0] = (T)(img)(_p14##x,_p14##y,z,c)), \ + (I[30] = (T)(img)(_p14##x,_p13##y,z,c)), \ + (I[60] = (T)(img)(_p14##x,_p12##y,z,c)), \ + (I[90] = (T)(img)(_p14##x,_p11##y,z,c)), \ + (I[120] = (T)(img)(_p14##x,_p10##y,z,c)), \ + (I[150] = (T)(img)(_p14##x,_p9##y,z,c)), \ + (I[180] = (T)(img)(_p14##x,_p8##y,z,c)), \ + (I[210] = (T)(img)(_p14##x,_p7##y,z,c)), \ + (I[240] = (T)(img)(_p14##x,_p6##y,z,c)), \ + (I[270] = (T)(img)(_p14##x,_p5##y,z,c)), \ + (I[300] = (T)(img)(_p14##x,_p4##y,z,c)), \ + (I[330] = (T)(img)(_p14##x,_p3##y,z,c)), \ + (I[360] = (T)(img)(_p14##x,_p2##y,z,c)), \ + (I[390] = (T)(img)(_p14##x,_p1##y,z,c)), \ + (I[420] = (T)(img)(_p14##x,y,z,c)), \ + (I[450] = (T)(img)(_p14##x,_n1##y,z,c)), \ + (I[480] = (T)(img)(_p14##x,_n2##y,z,c)), \ + (I[510] = (T)(img)(_p14##x,_n3##y,z,c)), \ + (I[540] = (T)(img)(_p14##x,_n4##y,z,c)), \ + (I[570] = (T)(img)(_p14##x,_n5##y,z,c)), \ + (I[600] = (T)(img)(_p14##x,_n6##y,z,c)), \ + (I[630] = (T)(img)(_p14##x,_n7##y,z,c)), \ + (I[660] = (T)(img)(_p14##x,_n8##y,z,c)), \ + (I[690] = (T)(img)(_p14##x,_n9##y,z,c)), \ + (I[720] = (T)(img)(_p14##x,_n10##y,z,c)), \ + (I[750] = (T)(img)(_p14##x,_n11##y,z,c)), \ + (I[780] = (T)(img)(_p14##x,_n12##y,z,c)), \ + (I[810] = (T)(img)(_p14##x,_n13##y,z,c)), \ + (I[840] = (T)(img)(_p14##x,_n14##y,z,c)), \ + (I[870] = (T)(img)(_p14##x,_n15##y,z,c)), \ + (I[1] = (T)(img)(_p13##x,_p14##y,z,c)), \ + (I[31] = (T)(img)(_p13##x,_p13##y,z,c)), \ + (I[61] = (T)(img)(_p13##x,_p12##y,z,c)), \ + (I[91] = (T)(img)(_p13##x,_p11##y,z,c)), \ + (I[121] = (T)(img)(_p13##x,_p10##y,z,c)), \ + (I[151] = (T)(img)(_p13##x,_p9##y,z,c)), \ + (I[181] = (T)(img)(_p13##x,_p8##y,z,c)), \ + (I[211] = (T)(img)(_p13##x,_p7##y,z,c)), \ + (I[241] = (T)(img)(_p13##x,_p6##y,z,c)), \ + (I[271] = (T)(img)(_p13##x,_p5##y,z,c)), \ + (I[301] = (T)(img)(_p13##x,_p4##y,z,c)), \ + (I[331] = (T)(img)(_p13##x,_p3##y,z,c)), \ + (I[361] = (T)(img)(_p13##x,_p2##y,z,c)), \ + (I[391] = (T)(img)(_p13##x,_p1##y,z,c)), \ + (I[421] = (T)(img)(_p13##x,y,z,c)), \ + (I[451] = (T)(img)(_p13##x,_n1##y,z,c)), \ + (I[481] = (T)(img)(_p13##x,_n2##y,z,c)), \ + (I[511] = (T)(img)(_p13##x,_n3##y,z,c)), \ + (I[541] = (T)(img)(_p13##x,_n4##y,z,c)), \ + (I[571] = (T)(img)(_p13##x,_n5##y,z,c)), \ + (I[601] = (T)(img)(_p13##x,_n6##y,z,c)), \ + (I[631] = (T)(img)(_p13##x,_n7##y,z,c)), \ + (I[661] = (T)(img)(_p13##x,_n8##y,z,c)), \ + (I[691] = (T)(img)(_p13##x,_n9##y,z,c)), \ + (I[721] = (T)(img)(_p13##x,_n10##y,z,c)), \ + (I[751] = (T)(img)(_p13##x,_n11##y,z,c)), \ + (I[781] = (T)(img)(_p13##x,_n12##y,z,c)), \ + (I[811] = (T)(img)(_p13##x,_n13##y,z,c)), \ + (I[841] = (T)(img)(_p13##x,_n14##y,z,c)), \ + (I[871] = (T)(img)(_p13##x,_n15##y,z,c)), \ + (I[2] = (T)(img)(_p12##x,_p14##y,z,c)), \ + (I[32] = (T)(img)(_p12##x,_p13##y,z,c)), \ + (I[62] = (T)(img)(_p12##x,_p12##y,z,c)), \ + (I[92] = (T)(img)(_p12##x,_p11##y,z,c)), \ + (I[122] = (T)(img)(_p12##x,_p10##y,z,c)), \ + (I[152] = (T)(img)(_p12##x,_p9##y,z,c)), \ + (I[182] = (T)(img)(_p12##x,_p8##y,z,c)), \ + (I[212] = (T)(img)(_p12##x,_p7##y,z,c)), \ + (I[242] = (T)(img)(_p12##x,_p6##y,z,c)), \ + (I[272] = (T)(img)(_p12##x,_p5##y,z,c)), \ + (I[302] = (T)(img)(_p12##x,_p4##y,z,c)), \ + (I[332] = (T)(img)(_p12##x,_p3##y,z,c)), \ + (I[362] = (T)(img)(_p12##x,_p2##y,z,c)), \ + (I[392] = (T)(img)(_p12##x,_p1##y,z,c)), \ + (I[422] = (T)(img)(_p12##x,y,z,c)), \ + (I[452] = (T)(img)(_p12##x,_n1##y,z,c)), \ + (I[482] = (T)(img)(_p12##x,_n2##y,z,c)), \ + (I[512] = (T)(img)(_p12##x,_n3##y,z,c)), \ + (I[542] = (T)(img)(_p12##x,_n4##y,z,c)), \ + (I[572] = (T)(img)(_p12##x,_n5##y,z,c)), \ + (I[602] = (T)(img)(_p12##x,_n6##y,z,c)), \ + (I[632] = (T)(img)(_p12##x,_n7##y,z,c)), \ + (I[662] = (T)(img)(_p12##x,_n8##y,z,c)), \ + (I[692] = (T)(img)(_p12##x,_n9##y,z,c)), \ + (I[722] = (T)(img)(_p12##x,_n10##y,z,c)), \ + (I[752] = (T)(img)(_p12##x,_n11##y,z,c)), \ + (I[782] = (T)(img)(_p12##x,_n12##y,z,c)), \ + (I[812] = (T)(img)(_p12##x,_n13##y,z,c)), \ + (I[842] = (T)(img)(_p12##x,_n14##y,z,c)), \ + (I[872] = (T)(img)(_p12##x,_n15##y,z,c)), \ + (I[3] = (T)(img)(_p11##x,_p14##y,z,c)), \ + (I[33] = (T)(img)(_p11##x,_p13##y,z,c)), \ + (I[63] = (T)(img)(_p11##x,_p12##y,z,c)), \ + (I[93] = (T)(img)(_p11##x,_p11##y,z,c)), \ + (I[123] = (T)(img)(_p11##x,_p10##y,z,c)), \ + (I[153] = (T)(img)(_p11##x,_p9##y,z,c)), \ + (I[183] = (T)(img)(_p11##x,_p8##y,z,c)), \ + (I[213] = (T)(img)(_p11##x,_p7##y,z,c)), \ + (I[243] = (T)(img)(_p11##x,_p6##y,z,c)), \ + (I[273] = (T)(img)(_p11##x,_p5##y,z,c)), \ + (I[303] = (T)(img)(_p11##x,_p4##y,z,c)), \ + (I[333] = (T)(img)(_p11##x,_p3##y,z,c)), \ + (I[363] = (T)(img)(_p11##x,_p2##y,z,c)), \ + (I[393] = (T)(img)(_p11##x,_p1##y,z,c)), \ + (I[423] = (T)(img)(_p11##x,y,z,c)), \ + (I[453] = (T)(img)(_p11##x,_n1##y,z,c)), \ + (I[483] = (T)(img)(_p11##x,_n2##y,z,c)), \ + (I[513] = (T)(img)(_p11##x,_n3##y,z,c)), \ + (I[543] = (T)(img)(_p11##x,_n4##y,z,c)), \ + (I[573] = (T)(img)(_p11##x,_n5##y,z,c)), \ + (I[603] = (T)(img)(_p11##x,_n6##y,z,c)), \ + (I[633] = (T)(img)(_p11##x,_n7##y,z,c)), \ + (I[663] = (T)(img)(_p11##x,_n8##y,z,c)), \ + (I[693] = (T)(img)(_p11##x,_n9##y,z,c)), \ + (I[723] = (T)(img)(_p11##x,_n10##y,z,c)), \ + (I[753] = (T)(img)(_p11##x,_n11##y,z,c)), \ + (I[783] = (T)(img)(_p11##x,_n12##y,z,c)), \ + (I[813] = (T)(img)(_p11##x,_n13##y,z,c)), \ + (I[843] = (T)(img)(_p11##x,_n14##y,z,c)), \ + (I[873] = (T)(img)(_p11##x,_n15##y,z,c)), \ + (I[4] = (T)(img)(_p10##x,_p14##y,z,c)), \ + (I[34] = (T)(img)(_p10##x,_p13##y,z,c)), \ + (I[64] = (T)(img)(_p10##x,_p12##y,z,c)), \ + (I[94] = (T)(img)(_p10##x,_p11##y,z,c)), \ + (I[124] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[154] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[184] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[214] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[244] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[274] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[304] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[334] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[364] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[394] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[424] = (T)(img)(_p10##x,y,z,c)), \ + (I[454] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[484] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[514] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[544] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[574] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[604] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[634] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[664] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[694] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[724] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[754] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[784] = (T)(img)(_p10##x,_n12##y,z,c)), \ + (I[814] = (T)(img)(_p10##x,_n13##y,z,c)), \ + (I[844] = (T)(img)(_p10##x,_n14##y,z,c)), \ + (I[874] = (T)(img)(_p10##x,_n15##y,z,c)), \ + (I[5] = (T)(img)(_p9##x,_p14##y,z,c)), \ + (I[35] = (T)(img)(_p9##x,_p13##y,z,c)), \ + (I[65] = (T)(img)(_p9##x,_p12##y,z,c)), \ + (I[95] = (T)(img)(_p9##x,_p11##y,z,c)), \ + (I[125] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[155] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[185] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[215] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[245] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[275] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[305] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[335] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[365] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[395] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[425] = (T)(img)(_p9##x,y,z,c)), \ + (I[455] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[485] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[515] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[545] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[575] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[605] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[635] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[665] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[695] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[725] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[755] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[785] = (T)(img)(_p9##x,_n12##y,z,c)), \ + (I[815] = (T)(img)(_p9##x,_n13##y,z,c)), \ + (I[845] = (T)(img)(_p9##x,_n14##y,z,c)), \ + (I[875] = (T)(img)(_p9##x,_n15##y,z,c)), \ + (I[6] = (T)(img)(_p8##x,_p14##y,z,c)), \ + (I[36] = (T)(img)(_p8##x,_p13##y,z,c)), \ + (I[66] = (T)(img)(_p8##x,_p12##y,z,c)), \ + (I[96] = (T)(img)(_p8##x,_p11##y,z,c)), \ + (I[126] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[156] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[186] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[216] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[246] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[276] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[306] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[336] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[366] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[396] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[426] = (T)(img)(_p8##x,y,z,c)), \ + (I[456] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[486] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[516] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[546] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[576] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[606] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[636] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[666] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[696] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[726] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[756] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[786] = (T)(img)(_p8##x,_n12##y,z,c)), \ + (I[816] = (T)(img)(_p8##x,_n13##y,z,c)), \ + (I[846] = (T)(img)(_p8##x,_n14##y,z,c)), \ + (I[876] = (T)(img)(_p8##x,_n15##y,z,c)), \ + (I[7] = (T)(img)(_p7##x,_p14##y,z,c)), \ + (I[37] = (T)(img)(_p7##x,_p13##y,z,c)), \ + (I[67] = (T)(img)(_p7##x,_p12##y,z,c)), \ + (I[97] = (T)(img)(_p7##x,_p11##y,z,c)), \ + (I[127] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[157] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[187] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[217] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[247] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[277] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[307] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[337] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[367] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[397] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[427] = (T)(img)(_p7##x,y,z,c)), \ + (I[457] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[487] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[517] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[547] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[577] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[607] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[637] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[667] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[697] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[727] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[757] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[787] = (T)(img)(_p7##x,_n12##y,z,c)), \ + (I[817] = (T)(img)(_p7##x,_n13##y,z,c)), \ + (I[847] = (T)(img)(_p7##x,_n14##y,z,c)), \ + (I[877] = (T)(img)(_p7##x,_n15##y,z,c)), \ + (I[8] = (T)(img)(_p6##x,_p14##y,z,c)), \ + (I[38] = (T)(img)(_p6##x,_p13##y,z,c)), \ + (I[68] = (T)(img)(_p6##x,_p12##y,z,c)), \ + (I[98] = (T)(img)(_p6##x,_p11##y,z,c)), \ + (I[128] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[158] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[188] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[218] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[248] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[278] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[308] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[338] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[368] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[398] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[428] = (T)(img)(_p6##x,y,z,c)), \ + (I[458] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[488] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[518] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[548] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[578] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[608] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[638] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[668] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[698] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[728] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[758] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[788] = (T)(img)(_p6##x,_n12##y,z,c)), \ + (I[818] = (T)(img)(_p6##x,_n13##y,z,c)), \ + (I[848] = (T)(img)(_p6##x,_n14##y,z,c)), \ + (I[878] = (T)(img)(_p6##x,_n15##y,z,c)), \ + (I[9] = (T)(img)(_p5##x,_p14##y,z,c)), \ + (I[39] = (T)(img)(_p5##x,_p13##y,z,c)), \ + (I[69] = (T)(img)(_p5##x,_p12##y,z,c)), \ + (I[99] = (T)(img)(_p5##x,_p11##y,z,c)), \ + (I[129] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[159] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[189] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[219] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[249] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[279] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[309] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[339] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[369] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[399] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[429] = (T)(img)(_p5##x,y,z,c)), \ + (I[459] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[489] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[519] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[549] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[579] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[609] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[639] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[669] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[699] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[729] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[759] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[789] = (T)(img)(_p5##x,_n12##y,z,c)), \ + (I[819] = (T)(img)(_p5##x,_n13##y,z,c)), \ + (I[849] = (T)(img)(_p5##x,_n14##y,z,c)), \ + (I[879] = (T)(img)(_p5##x,_n15##y,z,c)), \ + (I[10] = (T)(img)(_p4##x,_p14##y,z,c)), \ + (I[40] = (T)(img)(_p4##x,_p13##y,z,c)), \ + (I[70] = (T)(img)(_p4##x,_p12##y,z,c)), \ + (I[100] = (T)(img)(_p4##x,_p11##y,z,c)), \ + (I[130] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[160] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[190] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[220] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[250] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[280] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[310] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[340] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[370] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[400] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[430] = (T)(img)(_p4##x,y,z,c)), \ + (I[460] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[490] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[520] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[550] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[580] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[610] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[640] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[670] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[700] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[730] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[760] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[790] = (T)(img)(_p4##x,_n12##y,z,c)), \ + (I[820] = (T)(img)(_p4##x,_n13##y,z,c)), \ + (I[850] = (T)(img)(_p4##x,_n14##y,z,c)), \ + (I[880] = (T)(img)(_p4##x,_n15##y,z,c)), \ + (I[11] = (T)(img)(_p3##x,_p14##y,z,c)), \ + (I[41] = (T)(img)(_p3##x,_p13##y,z,c)), \ + (I[71] = (T)(img)(_p3##x,_p12##y,z,c)), \ + (I[101] = (T)(img)(_p3##x,_p11##y,z,c)), \ + (I[131] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[161] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[191] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[221] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[251] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[281] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[311] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[341] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[371] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[401] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[431] = (T)(img)(_p3##x,y,z,c)), \ + (I[461] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[491] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[521] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[551] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[581] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[611] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[641] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[671] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[701] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[731] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[761] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[791] = (T)(img)(_p3##x,_n12##y,z,c)), \ + (I[821] = (T)(img)(_p3##x,_n13##y,z,c)), \ + (I[851] = (T)(img)(_p3##x,_n14##y,z,c)), \ + (I[881] = (T)(img)(_p3##x,_n15##y,z,c)), \ + (I[12] = (T)(img)(_p2##x,_p14##y,z,c)), \ + (I[42] = (T)(img)(_p2##x,_p13##y,z,c)), \ + (I[72] = (T)(img)(_p2##x,_p12##y,z,c)), \ + (I[102] = (T)(img)(_p2##x,_p11##y,z,c)), \ + (I[132] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[162] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[192] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[222] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[252] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[282] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[312] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[342] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[372] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[402] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[432] = (T)(img)(_p2##x,y,z,c)), \ + (I[462] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[492] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[522] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[552] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[582] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[612] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[642] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[672] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[702] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[732] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[762] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[792] = (T)(img)(_p2##x,_n12##y,z,c)), \ + (I[822] = (T)(img)(_p2##x,_n13##y,z,c)), \ + (I[852] = (T)(img)(_p2##x,_n14##y,z,c)), \ + (I[882] = (T)(img)(_p2##x,_n15##y,z,c)), \ + (I[13] = (T)(img)(_p1##x,_p14##y,z,c)), \ + (I[43] = (T)(img)(_p1##x,_p13##y,z,c)), \ + (I[73] = (T)(img)(_p1##x,_p12##y,z,c)), \ + (I[103] = (T)(img)(_p1##x,_p11##y,z,c)), \ + (I[133] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[163] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[193] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[223] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[253] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[283] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[313] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[343] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[373] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[403] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[433] = (T)(img)(_p1##x,y,z,c)), \ + (I[463] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[493] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[523] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[553] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[583] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[613] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[643] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[673] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[703] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[733] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[763] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[793] = (T)(img)(_p1##x,_n12##y,z,c)), \ + (I[823] = (T)(img)(_p1##x,_n13##y,z,c)), \ + (I[853] = (T)(img)(_p1##x,_n14##y,z,c)), \ + (I[883] = (T)(img)(_p1##x,_n15##y,z,c)), \ + (I[14] = (T)(img)(x,_p14##y,z,c)), \ + (I[44] = (T)(img)(x,_p13##y,z,c)), \ + (I[74] = (T)(img)(x,_p12##y,z,c)), \ + (I[104] = (T)(img)(x,_p11##y,z,c)), \ + (I[134] = (T)(img)(x,_p10##y,z,c)), \ + (I[164] = (T)(img)(x,_p9##y,z,c)), \ + (I[194] = (T)(img)(x,_p8##y,z,c)), \ + (I[224] = (T)(img)(x,_p7##y,z,c)), \ + (I[254] = (T)(img)(x,_p6##y,z,c)), \ + (I[284] = (T)(img)(x,_p5##y,z,c)), \ + (I[314] = (T)(img)(x,_p4##y,z,c)), \ + (I[344] = (T)(img)(x,_p3##y,z,c)), \ + (I[374] = (T)(img)(x,_p2##y,z,c)), \ + (I[404] = (T)(img)(x,_p1##y,z,c)), \ + (I[434] = (T)(img)(x,y,z,c)), \ + (I[464] = (T)(img)(x,_n1##y,z,c)), \ + (I[494] = (T)(img)(x,_n2##y,z,c)), \ + (I[524] = (T)(img)(x,_n3##y,z,c)), \ + (I[554] = (T)(img)(x,_n4##y,z,c)), \ + (I[584] = (T)(img)(x,_n5##y,z,c)), \ + (I[614] = (T)(img)(x,_n6##y,z,c)), \ + (I[644] = (T)(img)(x,_n7##y,z,c)), \ + (I[674] = (T)(img)(x,_n8##y,z,c)), \ + (I[704] = (T)(img)(x,_n9##y,z,c)), \ + (I[734] = (T)(img)(x,_n10##y,z,c)), \ + (I[764] = (T)(img)(x,_n11##y,z,c)), \ + (I[794] = (T)(img)(x,_n12##y,z,c)), \ + (I[824] = (T)(img)(x,_n13##y,z,c)), \ + (I[854] = (T)(img)(x,_n14##y,z,c)), \ + (I[884] = (T)(img)(x,_n15##y,z,c)), \ + (I[15] = (T)(img)(_n1##x,_p14##y,z,c)), \ + (I[45] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[75] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[105] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[135] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[165] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[195] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[225] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[255] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[285] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[315] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[345] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[375] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[405] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[435] = (T)(img)(_n1##x,y,z,c)), \ + (I[465] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[495] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[525] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[555] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[585] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[615] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[645] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[675] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[705] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[735] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[765] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[795] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[825] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[855] = (T)(img)(_n1##x,_n14##y,z,c)), \ + (I[885] = (T)(img)(_n1##x,_n15##y,z,c)), \ + (I[16] = (T)(img)(_n2##x,_p14##y,z,c)), \ + (I[46] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[76] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[106] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[136] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[166] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[196] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[226] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[256] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[286] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[316] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[346] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[376] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[406] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[436] = (T)(img)(_n2##x,y,z,c)), \ + (I[466] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[496] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[526] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[556] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[586] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[616] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[646] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[676] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[706] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[736] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[766] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[796] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[826] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[856] = (T)(img)(_n2##x,_n14##y,z,c)), \ + (I[886] = (T)(img)(_n2##x,_n15##y,z,c)), \ + (I[17] = (T)(img)(_n3##x,_p14##y,z,c)), \ + (I[47] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[77] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[107] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[137] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[167] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[197] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[227] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[257] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[287] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[317] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[347] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[377] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[407] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[437] = (T)(img)(_n3##x,y,z,c)), \ + (I[467] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[497] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[527] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[557] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[587] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[617] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[647] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[677] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[707] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[737] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[767] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[797] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[827] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[857] = (T)(img)(_n3##x,_n14##y,z,c)), \ + (I[887] = (T)(img)(_n3##x,_n15##y,z,c)), \ + (I[18] = (T)(img)(_n4##x,_p14##y,z,c)), \ + (I[48] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[78] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[108] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[138] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[168] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[198] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[228] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[258] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[288] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[318] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[348] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[378] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[408] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[438] = (T)(img)(_n4##x,y,z,c)), \ + (I[468] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[498] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[528] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[558] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[588] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[618] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[648] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[678] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[708] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[738] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[768] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[798] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[828] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[858] = (T)(img)(_n4##x,_n14##y,z,c)), \ + (I[888] = (T)(img)(_n4##x,_n15##y,z,c)), \ + (I[19] = (T)(img)(_n5##x,_p14##y,z,c)), \ + (I[49] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[79] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[109] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[139] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[169] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[199] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[229] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[259] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[289] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[319] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[349] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[379] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[409] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[439] = (T)(img)(_n5##x,y,z,c)), \ + (I[469] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[499] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[529] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[559] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[589] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[619] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[649] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[679] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[709] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[739] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[769] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[799] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[829] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[859] = (T)(img)(_n5##x,_n14##y,z,c)), \ + (I[889] = (T)(img)(_n5##x,_n15##y,z,c)), \ + (I[20] = (T)(img)(_n6##x,_p14##y,z,c)), \ + (I[50] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[80] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[110] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[140] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[170] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[200] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[230] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[260] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[290] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[320] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[350] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[380] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[410] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[440] = (T)(img)(_n6##x,y,z,c)), \ + (I[470] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[500] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[530] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[560] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[590] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[620] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[650] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[680] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[710] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[740] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[770] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[800] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[830] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[860] = (T)(img)(_n6##x,_n14##y,z,c)), \ + (I[890] = (T)(img)(_n6##x,_n15##y,z,c)), \ + (I[21] = (T)(img)(_n7##x,_p14##y,z,c)), \ + (I[51] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[81] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[111] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[141] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[171] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[201] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[231] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[261] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[291] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[321] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[351] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[381] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[411] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[441] = (T)(img)(_n7##x,y,z,c)), \ + (I[471] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[501] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[531] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[561] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[591] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[621] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[651] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[681] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[711] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[741] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[771] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[801] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[831] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[861] = (T)(img)(_n7##x,_n14##y,z,c)), \ + (I[891] = (T)(img)(_n7##x,_n15##y,z,c)), \ + (I[22] = (T)(img)(_n8##x,_p14##y,z,c)), \ + (I[52] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[82] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[112] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[142] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[172] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[202] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[232] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[262] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[292] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[322] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[352] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[382] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[412] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[442] = (T)(img)(_n8##x,y,z,c)), \ + (I[472] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[502] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[532] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[562] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[592] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[622] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[652] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[682] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[712] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[742] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[772] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[802] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[832] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[862] = (T)(img)(_n8##x,_n14##y,z,c)), \ + (I[892] = (T)(img)(_n8##x,_n15##y,z,c)), \ + (I[23] = (T)(img)(_n9##x,_p14##y,z,c)), \ + (I[53] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[83] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[113] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[143] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[173] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[203] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[233] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[263] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[293] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[323] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[353] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[383] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[413] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[443] = (T)(img)(_n9##x,y,z,c)), \ + (I[473] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[503] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[533] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[563] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[593] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[623] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[653] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[683] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[713] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[743] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[773] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[803] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[833] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[863] = (T)(img)(_n9##x,_n14##y,z,c)), \ + (I[893] = (T)(img)(_n9##x,_n15##y,z,c)), \ + (I[24] = (T)(img)(_n10##x,_p14##y,z,c)), \ + (I[54] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[84] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[114] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[144] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[174] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[204] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[234] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[264] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[294] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[324] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[354] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[384] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[414] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[444] = (T)(img)(_n10##x,y,z,c)), \ + (I[474] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[504] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[534] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[564] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[594] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[624] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[654] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[684] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[714] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[744] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[774] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[804] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[834] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[864] = (T)(img)(_n10##x,_n14##y,z,c)), \ + (I[894] = (T)(img)(_n10##x,_n15##y,z,c)), \ + (I[25] = (T)(img)(_n11##x,_p14##y,z,c)), \ + (I[55] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[85] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[115] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[145] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[175] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[205] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[235] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[265] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[295] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[325] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[355] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[385] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[415] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[445] = (T)(img)(_n11##x,y,z,c)), \ + (I[475] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[505] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[535] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[565] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[595] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[625] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[655] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[685] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[715] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[745] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[775] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[805] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[835] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[865] = (T)(img)(_n11##x,_n14##y,z,c)), \ + (I[895] = (T)(img)(_n11##x,_n15##y,z,c)), \ + (I[26] = (T)(img)(_n12##x,_p14##y,z,c)), \ + (I[56] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[86] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[116] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[146] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[176] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[206] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[236] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[266] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[296] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[326] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[356] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[386] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[416] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[446] = (T)(img)(_n12##x,y,z,c)), \ + (I[476] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[506] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[536] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[566] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[596] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[626] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[656] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[686] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[716] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[746] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[776] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[806] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[836] = (T)(img)(_n12##x,_n13##y,z,c)), \ + (I[866] = (T)(img)(_n12##x,_n14##y,z,c)), \ + (I[896] = (T)(img)(_n12##x,_n15##y,z,c)), \ + (I[27] = (T)(img)(_n13##x,_p14##y,z,c)), \ + (I[57] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[87] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[117] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[147] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[177] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[207] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[237] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[267] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[297] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[327] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[357] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[387] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[417] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[447] = (T)(img)(_n13##x,y,z,c)), \ + (I[477] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[507] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[537] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[567] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[597] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[627] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[657] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[687] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[717] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[747] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[777] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[807] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[837] = (T)(img)(_n13##x,_n13##y,z,c)), \ + (I[867] = (T)(img)(_n13##x,_n14##y,z,c)), \ + (I[897] = (T)(img)(_n13##x,_n15##y,z,c)), \ + (I[28] = (T)(img)(_n14##x,_p14##y,z,c)), \ + (I[58] = (T)(img)(_n14##x,_p13##y,z,c)), \ + (I[88] = (T)(img)(_n14##x,_p12##y,z,c)), \ + (I[118] = (T)(img)(_n14##x,_p11##y,z,c)), \ + (I[148] = (T)(img)(_n14##x,_p10##y,z,c)), \ + (I[178] = (T)(img)(_n14##x,_p9##y,z,c)), \ + (I[208] = (T)(img)(_n14##x,_p8##y,z,c)), \ + (I[238] = (T)(img)(_n14##x,_p7##y,z,c)), \ + (I[268] = (T)(img)(_n14##x,_p6##y,z,c)), \ + (I[298] = (T)(img)(_n14##x,_p5##y,z,c)), \ + (I[328] = (T)(img)(_n14##x,_p4##y,z,c)), \ + (I[358] = (T)(img)(_n14##x,_p3##y,z,c)), \ + (I[388] = (T)(img)(_n14##x,_p2##y,z,c)), \ + (I[418] = (T)(img)(_n14##x,_p1##y,z,c)), \ + (I[448] = (T)(img)(_n14##x,y,z,c)), \ + (I[478] = (T)(img)(_n14##x,_n1##y,z,c)), \ + (I[508] = (T)(img)(_n14##x,_n2##y,z,c)), \ + (I[538] = (T)(img)(_n14##x,_n3##y,z,c)), \ + (I[568] = (T)(img)(_n14##x,_n4##y,z,c)), \ + (I[598] = (T)(img)(_n14##x,_n5##y,z,c)), \ + (I[628] = (T)(img)(_n14##x,_n6##y,z,c)), \ + (I[658] = (T)(img)(_n14##x,_n7##y,z,c)), \ + (I[688] = (T)(img)(_n14##x,_n8##y,z,c)), \ + (I[718] = (T)(img)(_n14##x,_n9##y,z,c)), \ + (I[748] = (T)(img)(_n14##x,_n10##y,z,c)), \ + (I[778] = (T)(img)(_n14##x,_n11##y,z,c)), \ + (I[808] = (T)(img)(_n14##x,_n12##y,z,c)), \ + (I[838] = (T)(img)(_n14##x,_n13##y,z,c)), \ + (I[868] = (T)(img)(_n14##x,_n14##y,z,c)), \ + (I[898] = (T)(img)(_n14##x,_n15##y,z,c)), \ + x + 15>=(img).width()?(img).width() - 1:x + 15); \ + x<=(int)(x1) && ((_n15##x<(img).width() && ( \ + (I[29] = (T)(img)(_n15##x,_p14##y,z,c)), \ + (I[59] = (T)(img)(_n15##x,_p13##y,z,c)), \ + (I[89] = (T)(img)(_n15##x,_p12##y,z,c)), \ + (I[119] = (T)(img)(_n15##x,_p11##y,z,c)), \ + (I[149] = (T)(img)(_n15##x,_p10##y,z,c)), \ + (I[179] = (T)(img)(_n15##x,_p9##y,z,c)), \ + (I[209] = (T)(img)(_n15##x,_p8##y,z,c)), \ + (I[239] = (T)(img)(_n15##x,_p7##y,z,c)), \ + (I[269] = (T)(img)(_n15##x,_p6##y,z,c)), \ + (I[299] = (T)(img)(_n15##x,_p5##y,z,c)), \ + (I[329] = (T)(img)(_n15##x,_p4##y,z,c)), \ + (I[359] = (T)(img)(_n15##x,_p3##y,z,c)), \ + (I[389] = (T)(img)(_n15##x,_p2##y,z,c)), \ + (I[419] = (T)(img)(_n15##x,_p1##y,z,c)), \ + (I[449] = (T)(img)(_n15##x,y,z,c)), \ + (I[479] = (T)(img)(_n15##x,_n1##y,z,c)), \ + (I[509] = (T)(img)(_n15##x,_n2##y,z,c)), \ + (I[539] = (T)(img)(_n15##x,_n3##y,z,c)), \ + (I[569] = (T)(img)(_n15##x,_n4##y,z,c)), \ + (I[599] = (T)(img)(_n15##x,_n5##y,z,c)), \ + (I[629] = (T)(img)(_n15##x,_n6##y,z,c)), \ + (I[659] = (T)(img)(_n15##x,_n7##y,z,c)), \ + (I[689] = (T)(img)(_n15##x,_n8##y,z,c)), \ + (I[719] = (T)(img)(_n15##x,_n9##y,z,c)), \ + (I[749] = (T)(img)(_n15##x,_n10##y,z,c)), \ + (I[779] = (T)(img)(_n15##x,_n11##y,z,c)), \ + (I[809] = (T)(img)(_n15##x,_n12##y,z,c)), \ + (I[839] = (T)(img)(_n15##x,_n13##y,z,c)), \ + (I[869] = (T)(img)(_n15##x,_n14##y,z,c)), \ + (I[899] = (T)(img)(_n15##x,_n15##y,z,c)),1)) || \ + _n14##x==--_n15##x || _n13##x==--_n14##x || _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n15##x = _n14##x = _n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], \ + I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], \ + I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], \ + I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], \ + I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], \ + I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], \ + I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], \ + I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], \ + I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], \ + I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], \ + I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], \ + I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], \ + I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], \ + I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], \ + I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], \ + I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], \ + I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], \ + I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], I[649] = I[650], I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], \ + I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], I[671] = I[672], I[672] = I[673], I[673] = I[674], I[674] = I[675], I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], I[681] = I[682], I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], \ + I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], I[695] = I[696], I[696] = I[697], I[697] = I[698], I[698] = I[699], I[699] = I[700], I[700] = I[701], I[701] = I[702], I[702] = I[703], I[703] = I[704], I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], I[712] = I[713], I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], \ + I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], I[724] = I[725], I[725] = I[726], I[726] = I[727], I[727] = I[728], I[728] = I[729], I[729] = I[730], I[730] = I[731], I[731] = I[732], I[732] = I[733], I[733] = I[734], I[734] = I[735], I[735] = I[736], I[736] = I[737], I[737] = I[738], I[738] = I[739], I[739] = I[740], I[740] = I[741], I[741] = I[742], I[742] = I[743], I[743] = I[744], I[744] = I[745], I[745] = I[746], I[746] = I[747], I[747] = I[748], I[748] = I[749], \ + I[750] = I[751], I[751] = I[752], I[752] = I[753], I[753] = I[754], I[754] = I[755], I[755] = I[756], I[756] = I[757], I[757] = I[758], I[758] = I[759], I[759] = I[760], I[760] = I[761], I[761] = I[762], I[762] = I[763], I[763] = I[764], I[764] = I[765], I[765] = I[766], I[766] = I[767], I[767] = I[768], I[768] = I[769], I[769] = I[770], I[770] = I[771], I[771] = I[772], I[772] = I[773], I[773] = I[774], I[774] = I[775], I[775] = I[776], I[776] = I[777], I[777] = I[778], I[778] = I[779], \ + I[780] = I[781], I[781] = I[782], I[782] = I[783], I[783] = I[784], I[784] = I[785], I[785] = I[786], I[786] = I[787], I[787] = I[788], I[788] = I[789], I[789] = I[790], I[790] = I[791], I[791] = I[792], I[792] = I[793], I[793] = I[794], I[794] = I[795], I[795] = I[796], I[796] = I[797], I[797] = I[798], I[798] = I[799], I[799] = I[800], I[800] = I[801], I[801] = I[802], I[802] = I[803], I[803] = I[804], I[804] = I[805], I[805] = I[806], I[806] = I[807], I[807] = I[808], I[808] = I[809], \ + I[810] = I[811], I[811] = I[812], I[812] = I[813], I[813] = I[814], I[814] = I[815], I[815] = I[816], I[816] = I[817], I[817] = I[818], I[818] = I[819], I[819] = I[820], I[820] = I[821], I[821] = I[822], I[822] = I[823], I[823] = I[824], I[824] = I[825], I[825] = I[826], I[826] = I[827], I[827] = I[828], I[828] = I[829], I[829] = I[830], I[830] = I[831], I[831] = I[832], I[832] = I[833], I[833] = I[834], I[834] = I[835], I[835] = I[836], I[836] = I[837], I[837] = I[838], I[838] = I[839], \ + I[840] = I[841], I[841] = I[842], I[842] = I[843], I[843] = I[844], I[844] = I[845], I[845] = I[846], I[846] = I[847], I[847] = I[848], I[848] = I[849], I[849] = I[850], I[850] = I[851], I[851] = I[852], I[852] = I[853], I[853] = I[854], I[854] = I[855], I[855] = I[856], I[856] = I[857], I[857] = I[858], I[858] = I[859], I[859] = I[860], I[860] = I[861], I[861] = I[862], I[862] = I[863], I[863] = I[864], I[864] = I[865], I[865] = I[866], I[866] = I[867], I[867] = I[868], I[868] = I[869], \ + I[870] = I[871], I[871] = I[872], I[872] = I[873], I[873] = I[874], I[874] = I[875], I[875] = I[876], I[876] = I[877], I[877] = I[878], I[878] = I[879], I[879] = I[880], I[880] = I[881], I[881] = I[882], I[882] = I[883], I[883] = I[884], I[884] = I[885], I[885] = I[886], I[886] = I[887], I[887] = I[888], I[888] = I[889], I[889] = I[890], I[890] = I[891], I[891] = I[892], I[892] = I[893], I[893] = I[894], I[894] = I[895], I[895] = I[896], I[896] = I[897], I[897] = I[898], I[898] = I[899], \ + _p14##x = _p13##x, _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x, ++_n14##x, ++_n15##x) + +#define cimg_get30x30(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p14##x,_p14##y,z,c), I[1] = (T)(img)(_p13##x,_p14##y,z,c), I[2] = (T)(img)(_p12##x,_p14##y,z,c), I[3] = (T)(img)(_p11##x,_p14##y,z,c), I[4] = (T)(img)(_p10##x,_p14##y,z,c), I[5] = (T)(img)(_p9##x,_p14##y,z,c), I[6] = (T)(img)(_p8##x,_p14##y,z,c), I[7] = (T)(img)(_p7##x,_p14##y,z,c), I[8] = (T)(img)(_p6##x,_p14##y,z,c), I[9] = (T)(img)(_p5##x,_p14##y,z,c), I[10] = (T)(img)(_p4##x,_p14##y,z,c), I[11] = (T)(img)(_p3##x,_p14##y,z,c), I[12] = (T)(img)(_p2##x,_p14##y,z,c), I[13] = (T)(img)(_p1##x,_p14##y,z,c), I[14] = (T)(img)(x,_p14##y,z,c), I[15] = (T)(img)(_n1##x,_p14##y,z,c), I[16] = (T)(img)(_n2##x,_p14##y,z,c), I[17] = (T)(img)(_n3##x,_p14##y,z,c), I[18] = (T)(img)(_n4##x,_p14##y,z,c), I[19] = (T)(img)(_n5##x,_p14##y,z,c), I[20] = (T)(img)(_n6##x,_p14##y,z,c), I[21] = (T)(img)(_n7##x,_p14##y,z,c), I[22] = (T)(img)(_n8##x,_p14##y,z,c), I[23] = (T)(img)(_n9##x,_p14##y,z,c), I[24] = (T)(img)(_n10##x,_p14##y,z,c), I[25] = (T)(img)(_n11##x,_p14##y,z,c), I[26] = (T)(img)(_n12##x,_p14##y,z,c), I[27] = (T)(img)(_n13##x,_p14##y,z,c), I[28] = (T)(img)(_n14##x,_p14##y,z,c), I[29] = (T)(img)(_n15##x,_p14##y,z,c), \ + I[30] = (T)(img)(_p14##x,_p13##y,z,c), I[31] = (T)(img)(_p13##x,_p13##y,z,c), I[32] = (T)(img)(_p12##x,_p13##y,z,c), I[33] = (T)(img)(_p11##x,_p13##y,z,c), I[34] = (T)(img)(_p10##x,_p13##y,z,c), I[35] = (T)(img)(_p9##x,_p13##y,z,c), I[36] = (T)(img)(_p8##x,_p13##y,z,c), I[37] = (T)(img)(_p7##x,_p13##y,z,c), I[38] = (T)(img)(_p6##x,_p13##y,z,c), I[39] = (T)(img)(_p5##x,_p13##y,z,c), I[40] = (T)(img)(_p4##x,_p13##y,z,c), I[41] = (T)(img)(_p3##x,_p13##y,z,c), I[42] = (T)(img)(_p2##x,_p13##y,z,c), I[43] = (T)(img)(_p1##x,_p13##y,z,c), I[44] = (T)(img)(x,_p13##y,z,c), I[45] = (T)(img)(_n1##x,_p13##y,z,c), I[46] = (T)(img)(_n2##x,_p13##y,z,c), I[47] = (T)(img)(_n3##x,_p13##y,z,c), I[48] = (T)(img)(_n4##x,_p13##y,z,c), I[49] = (T)(img)(_n5##x,_p13##y,z,c), I[50] = (T)(img)(_n6##x,_p13##y,z,c), I[51] = (T)(img)(_n7##x,_p13##y,z,c), I[52] = (T)(img)(_n8##x,_p13##y,z,c), I[53] = (T)(img)(_n9##x,_p13##y,z,c), I[54] = (T)(img)(_n10##x,_p13##y,z,c), I[55] = (T)(img)(_n11##x,_p13##y,z,c), I[56] = (T)(img)(_n12##x,_p13##y,z,c), I[57] = (T)(img)(_n13##x,_p13##y,z,c), I[58] = (T)(img)(_n14##x,_p13##y,z,c), I[59] = (T)(img)(_n15##x,_p13##y,z,c), \ + I[60] = (T)(img)(_p14##x,_p12##y,z,c), I[61] = (T)(img)(_p13##x,_p12##y,z,c), I[62] = (T)(img)(_p12##x,_p12##y,z,c), I[63] = (T)(img)(_p11##x,_p12##y,z,c), I[64] = (T)(img)(_p10##x,_p12##y,z,c), I[65] = (T)(img)(_p9##x,_p12##y,z,c), I[66] = (T)(img)(_p8##x,_p12##y,z,c), I[67] = (T)(img)(_p7##x,_p12##y,z,c), I[68] = (T)(img)(_p6##x,_p12##y,z,c), I[69] = (T)(img)(_p5##x,_p12##y,z,c), I[70] = (T)(img)(_p4##x,_p12##y,z,c), I[71] = (T)(img)(_p3##x,_p12##y,z,c), I[72] = (T)(img)(_p2##x,_p12##y,z,c), I[73] = (T)(img)(_p1##x,_p12##y,z,c), I[74] = (T)(img)(x,_p12##y,z,c), I[75] = (T)(img)(_n1##x,_p12##y,z,c), I[76] = (T)(img)(_n2##x,_p12##y,z,c), I[77] = (T)(img)(_n3##x,_p12##y,z,c), I[78] = (T)(img)(_n4##x,_p12##y,z,c), I[79] = (T)(img)(_n5##x,_p12##y,z,c), I[80] = (T)(img)(_n6##x,_p12##y,z,c), I[81] = (T)(img)(_n7##x,_p12##y,z,c), I[82] = (T)(img)(_n8##x,_p12##y,z,c), I[83] = (T)(img)(_n9##x,_p12##y,z,c), I[84] = (T)(img)(_n10##x,_p12##y,z,c), I[85] = (T)(img)(_n11##x,_p12##y,z,c), I[86] = (T)(img)(_n12##x,_p12##y,z,c), I[87] = (T)(img)(_n13##x,_p12##y,z,c), I[88] = (T)(img)(_n14##x,_p12##y,z,c), I[89] = (T)(img)(_n15##x,_p12##y,z,c), \ + I[90] = (T)(img)(_p14##x,_p11##y,z,c), I[91] = (T)(img)(_p13##x,_p11##y,z,c), I[92] = (T)(img)(_p12##x,_p11##y,z,c), I[93] = (T)(img)(_p11##x,_p11##y,z,c), I[94] = (T)(img)(_p10##x,_p11##y,z,c), I[95] = (T)(img)(_p9##x,_p11##y,z,c), I[96] = (T)(img)(_p8##x,_p11##y,z,c), I[97] = (T)(img)(_p7##x,_p11##y,z,c), I[98] = (T)(img)(_p6##x,_p11##y,z,c), I[99] = (T)(img)(_p5##x,_p11##y,z,c), I[100] = (T)(img)(_p4##x,_p11##y,z,c), I[101] = (T)(img)(_p3##x,_p11##y,z,c), I[102] = (T)(img)(_p2##x,_p11##y,z,c), I[103] = (T)(img)(_p1##x,_p11##y,z,c), I[104] = (T)(img)(x,_p11##y,z,c), I[105] = (T)(img)(_n1##x,_p11##y,z,c), I[106] = (T)(img)(_n2##x,_p11##y,z,c), I[107] = (T)(img)(_n3##x,_p11##y,z,c), I[108] = (T)(img)(_n4##x,_p11##y,z,c), I[109] = (T)(img)(_n5##x,_p11##y,z,c), I[110] = (T)(img)(_n6##x,_p11##y,z,c), I[111] = (T)(img)(_n7##x,_p11##y,z,c), I[112] = (T)(img)(_n8##x,_p11##y,z,c), I[113] = (T)(img)(_n9##x,_p11##y,z,c), I[114] = (T)(img)(_n10##x,_p11##y,z,c), I[115] = (T)(img)(_n11##x,_p11##y,z,c), I[116] = (T)(img)(_n12##x,_p11##y,z,c), I[117] = (T)(img)(_n13##x,_p11##y,z,c), I[118] = (T)(img)(_n14##x,_p11##y,z,c), I[119] = (T)(img)(_n15##x,_p11##y,z,c), \ + I[120] = (T)(img)(_p14##x,_p10##y,z,c), I[121] = (T)(img)(_p13##x,_p10##y,z,c), I[122] = (T)(img)(_p12##x,_p10##y,z,c), I[123] = (T)(img)(_p11##x,_p10##y,z,c), I[124] = (T)(img)(_p10##x,_p10##y,z,c), I[125] = (T)(img)(_p9##x,_p10##y,z,c), I[126] = (T)(img)(_p8##x,_p10##y,z,c), I[127] = (T)(img)(_p7##x,_p10##y,z,c), I[128] = (T)(img)(_p6##x,_p10##y,z,c), I[129] = (T)(img)(_p5##x,_p10##y,z,c), I[130] = (T)(img)(_p4##x,_p10##y,z,c), I[131] = (T)(img)(_p3##x,_p10##y,z,c), I[132] = (T)(img)(_p2##x,_p10##y,z,c), I[133] = (T)(img)(_p1##x,_p10##y,z,c), I[134] = (T)(img)(x,_p10##y,z,c), I[135] = (T)(img)(_n1##x,_p10##y,z,c), I[136] = (T)(img)(_n2##x,_p10##y,z,c), I[137] = (T)(img)(_n3##x,_p10##y,z,c), I[138] = (T)(img)(_n4##x,_p10##y,z,c), I[139] = (T)(img)(_n5##x,_p10##y,z,c), I[140] = (T)(img)(_n6##x,_p10##y,z,c), I[141] = (T)(img)(_n7##x,_p10##y,z,c), I[142] = (T)(img)(_n8##x,_p10##y,z,c), I[143] = (T)(img)(_n9##x,_p10##y,z,c), I[144] = (T)(img)(_n10##x,_p10##y,z,c), I[145] = (T)(img)(_n11##x,_p10##y,z,c), I[146] = (T)(img)(_n12##x,_p10##y,z,c), I[147] = (T)(img)(_n13##x,_p10##y,z,c), I[148] = (T)(img)(_n14##x,_p10##y,z,c), I[149] = (T)(img)(_n15##x,_p10##y,z,c), \ + I[150] = (T)(img)(_p14##x,_p9##y,z,c), I[151] = (T)(img)(_p13##x,_p9##y,z,c), I[152] = (T)(img)(_p12##x,_p9##y,z,c), I[153] = (T)(img)(_p11##x,_p9##y,z,c), I[154] = (T)(img)(_p10##x,_p9##y,z,c), I[155] = (T)(img)(_p9##x,_p9##y,z,c), I[156] = (T)(img)(_p8##x,_p9##y,z,c), I[157] = (T)(img)(_p7##x,_p9##y,z,c), I[158] = (T)(img)(_p6##x,_p9##y,z,c), I[159] = (T)(img)(_p5##x,_p9##y,z,c), I[160] = (T)(img)(_p4##x,_p9##y,z,c), I[161] = (T)(img)(_p3##x,_p9##y,z,c), I[162] = (T)(img)(_p2##x,_p9##y,z,c), I[163] = (T)(img)(_p1##x,_p9##y,z,c), I[164] = (T)(img)(x,_p9##y,z,c), I[165] = (T)(img)(_n1##x,_p9##y,z,c), I[166] = (T)(img)(_n2##x,_p9##y,z,c), I[167] = (T)(img)(_n3##x,_p9##y,z,c), I[168] = (T)(img)(_n4##x,_p9##y,z,c), I[169] = (T)(img)(_n5##x,_p9##y,z,c), I[170] = (T)(img)(_n6##x,_p9##y,z,c), I[171] = (T)(img)(_n7##x,_p9##y,z,c), I[172] = (T)(img)(_n8##x,_p9##y,z,c), I[173] = (T)(img)(_n9##x,_p9##y,z,c), I[174] = (T)(img)(_n10##x,_p9##y,z,c), I[175] = (T)(img)(_n11##x,_p9##y,z,c), I[176] = (T)(img)(_n12##x,_p9##y,z,c), I[177] = (T)(img)(_n13##x,_p9##y,z,c), I[178] = (T)(img)(_n14##x,_p9##y,z,c), I[179] = (T)(img)(_n15##x,_p9##y,z,c), \ + I[180] = (T)(img)(_p14##x,_p8##y,z,c), I[181] = (T)(img)(_p13##x,_p8##y,z,c), I[182] = (T)(img)(_p12##x,_p8##y,z,c), I[183] = (T)(img)(_p11##x,_p8##y,z,c), I[184] = (T)(img)(_p10##x,_p8##y,z,c), I[185] = (T)(img)(_p9##x,_p8##y,z,c), I[186] = (T)(img)(_p8##x,_p8##y,z,c), I[187] = (T)(img)(_p7##x,_p8##y,z,c), I[188] = (T)(img)(_p6##x,_p8##y,z,c), I[189] = (T)(img)(_p5##x,_p8##y,z,c), I[190] = (T)(img)(_p4##x,_p8##y,z,c), I[191] = (T)(img)(_p3##x,_p8##y,z,c), I[192] = (T)(img)(_p2##x,_p8##y,z,c), I[193] = (T)(img)(_p1##x,_p8##y,z,c), I[194] = (T)(img)(x,_p8##y,z,c), I[195] = (T)(img)(_n1##x,_p8##y,z,c), I[196] = (T)(img)(_n2##x,_p8##y,z,c), I[197] = (T)(img)(_n3##x,_p8##y,z,c), I[198] = (T)(img)(_n4##x,_p8##y,z,c), I[199] = (T)(img)(_n5##x,_p8##y,z,c), I[200] = (T)(img)(_n6##x,_p8##y,z,c), I[201] = (T)(img)(_n7##x,_p8##y,z,c), I[202] = (T)(img)(_n8##x,_p8##y,z,c), I[203] = (T)(img)(_n9##x,_p8##y,z,c), I[204] = (T)(img)(_n10##x,_p8##y,z,c), I[205] = (T)(img)(_n11##x,_p8##y,z,c), I[206] = (T)(img)(_n12##x,_p8##y,z,c), I[207] = (T)(img)(_n13##x,_p8##y,z,c), I[208] = (T)(img)(_n14##x,_p8##y,z,c), I[209] = (T)(img)(_n15##x,_p8##y,z,c), \ + I[210] = (T)(img)(_p14##x,_p7##y,z,c), I[211] = (T)(img)(_p13##x,_p7##y,z,c), I[212] = (T)(img)(_p12##x,_p7##y,z,c), I[213] = (T)(img)(_p11##x,_p7##y,z,c), I[214] = (T)(img)(_p10##x,_p7##y,z,c), I[215] = (T)(img)(_p9##x,_p7##y,z,c), I[216] = (T)(img)(_p8##x,_p7##y,z,c), I[217] = (T)(img)(_p7##x,_p7##y,z,c), I[218] = (T)(img)(_p6##x,_p7##y,z,c), I[219] = (T)(img)(_p5##x,_p7##y,z,c), I[220] = (T)(img)(_p4##x,_p7##y,z,c), I[221] = (T)(img)(_p3##x,_p7##y,z,c), I[222] = (T)(img)(_p2##x,_p7##y,z,c), I[223] = (T)(img)(_p1##x,_p7##y,z,c), I[224] = (T)(img)(x,_p7##y,z,c), I[225] = (T)(img)(_n1##x,_p7##y,z,c), I[226] = (T)(img)(_n2##x,_p7##y,z,c), I[227] = (T)(img)(_n3##x,_p7##y,z,c), I[228] = (T)(img)(_n4##x,_p7##y,z,c), I[229] = (T)(img)(_n5##x,_p7##y,z,c), I[230] = (T)(img)(_n6##x,_p7##y,z,c), I[231] = (T)(img)(_n7##x,_p7##y,z,c), I[232] = (T)(img)(_n8##x,_p7##y,z,c), I[233] = (T)(img)(_n9##x,_p7##y,z,c), I[234] = (T)(img)(_n10##x,_p7##y,z,c), I[235] = (T)(img)(_n11##x,_p7##y,z,c), I[236] = (T)(img)(_n12##x,_p7##y,z,c), I[237] = (T)(img)(_n13##x,_p7##y,z,c), I[238] = (T)(img)(_n14##x,_p7##y,z,c), I[239] = (T)(img)(_n15##x,_p7##y,z,c), \ + I[240] = (T)(img)(_p14##x,_p6##y,z,c), I[241] = (T)(img)(_p13##x,_p6##y,z,c), I[242] = (T)(img)(_p12##x,_p6##y,z,c), I[243] = (T)(img)(_p11##x,_p6##y,z,c), I[244] = (T)(img)(_p10##x,_p6##y,z,c), I[245] = (T)(img)(_p9##x,_p6##y,z,c), I[246] = (T)(img)(_p8##x,_p6##y,z,c), I[247] = (T)(img)(_p7##x,_p6##y,z,c), I[248] = (T)(img)(_p6##x,_p6##y,z,c), I[249] = (T)(img)(_p5##x,_p6##y,z,c), I[250] = (T)(img)(_p4##x,_p6##y,z,c), I[251] = (T)(img)(_p3##x,_p6##y,z,c), I[252] = (T)(img)(_p2##x,_p6##y,z,c), I[253] = (T)(img)(_p1##x,_p6##y,z,c), I[254] = (T)(img)(x,_p6##y,z,c), I[255] = (T)(img)(_n1##x,_p6##y,z,c), I[256] = (T)(img)(_n2##x,_p6##y,z,c), I[257] = (T)(img)(_n3##x,_p6##y,z,c), I[258] = (T)(img)(_n4##x,_p6##y,z,c), I[259] = (T)(img)(_n5##x,_p6##y,z,c), I[260] = (T)(img)(_n6##x,_p6##y,z,c), I[261] = (T)(img)(_n7##x,_p6##y,z,c), I[262] = (T)(img)(_n8##x,_p6##y,z,c), I[263] = (T)(img)(_n9##x,_p6##y,z,c), I[264] = (T)(img)(_n10##x,_p6##y,z,c), I[265] = (T)(img)(_n11##x,_p6##y,z,c), I[266] = (T)(img)(_n12##x,_p6##y,z,c), I[267] = (T)(img)(_n13##x,_p6##y,z,c), I[268] = (T)(img)(_n14##x,_p6##y,z,c), I[269] = (T)(img)(_n15##x,_p6##y,z,c), \ + I[270] = (T)(img)(_p14##x,_p5##y,z,c), I[271] = (T)(img)(_p13##x,_p5##y,z,c), I[272] = (T)(img)(_p12##x,_p5##y,z,c), I[273] = (T)(img)(_p11##x,_p5##y,z,c), I[274] = (T)(img)(_p10##x,_p5##y,z,c), I[275] = (T)(img)(_p9##x,_p5##y,z,c), I[276] = (T)(img)(_p8##x,_p5##y,z,c), I[277] = (T)(img)(_p7##x,_p5##y,z,c), I[278] = (T)(img)(_p6##x,_p5##y,z,c), I[279] = (T)(img)(_p5##x,_p5##y,z,c), I[280] = (T)(img)(_p4##x,_p5##y,z,c), I[281] = (T)(img)(_p3##x,_p5##y,z,c), I[282] = (T)(img)(_p2##x,_p5##y,z,c), I[283] = (T)(img)(_p1##x,_p5##y,z,c), I[284] = (T)(img)(x,_p5##y,z,c), I[285] = (T)(img)(_n1##x,_p5##y,z,c), I[286] = (T)(img)(_n2##x,_p5##y,z,c), I[287] = (T)(img)(_n3##x,_p5##y,z,c), I[288] = (T)(img)(_n4##x,_p5##y,z,c), I[289] = (T)(img)(_n5##x,_p5##y,z,c), I[290] = (T)(img)(_n6##x,_p5##y,z,c), I[291] = (T)(img)(_n7##x,_p5##y,z,c), I[292] = (T)(img)(_n8##x,_p5##y,z,c), I[293] = (T)(img)(_n9##x,_p5##y,z,c), I[294] = (T)(img)(_n10##x,_p5##y,z,c), I[295] = (T)(img)(_n11##x,_p5##y,z,c), I[296] = (T)(img)(_n12##x,_p5##y,z,c), I[297] = (T)(img)(_n13##x,_p5##y,z,c), I[298] = (T)(img)(_n14##x,_p5##y,z,c), I[299] = (T)(img)(_n15##x,_p5##y,z,c), \ + I[300] = (T)(img)(_p14##x,_p4##y,z,c), I[301] = (T)(img)(_p13##x,_p4##y,z,c), I[302] = (T)(img)(_p12##x,_p4##y,z,c), I[303] = (T)(img)(_p11##x,_p4##y,z,c), I[304] = (T)(img)(_p10##x,_p4##y,z,c), I[305] = (T)(img)(_p9##x,_p4##y,z,c), I[306] = (T)(img)(_p8##x,_p4##y,z,c), I[307] = (T)(img)(_p7##x,_p4##y,z,c), I[308] = (T)(img)(_p6##x,_p4##y,z,c), I[309] = (T)(img)(_p5##x,_p4##y,z,c), I[310] = (T)(img)(_p4##x,_p4##y,z,c), I[311] = (T)(img)(_p3##x,_p4##y,z,c), I[312] = (T)(img)(_p2##x,_p4##y,z,c), I[313] = (T)(img)(_p1##x,_p4##y,z,c), I[314] = (T)(img)(x,_p4##y,z,c), I[315] = (T)(img)(_n1##x,_p4##y,z,c), I[316] = (T)(img)(_n2##x,_p4##y,z,c), I[317] = (T)(img)(_n3##x,_p4##y,z,c), I[318] = (T)(img)(_n4##x,_p4##y,z,c), I[319] = (T)(img)(_n5##x,_p4##y,z,c), I[320] = (T)(img)(_n6##x,_p4##y,z,c), I[321] = (T)(img)(_n7##x,_p4##y,z,c), I[322] = (T)(img)(_n8##x,_p4##y,z,c), I[323] = (T)(img)(_n9##x,_p4##y,z,c), I[324] = (T)(img)(_n10##x,_p4##y,z,c), I[325] = (T)(img)(_n11##x,_p4##y,z,c), I[326] = (T)(img)(_n12##x,_p4##y,z,c), I[327] = (T)(img)(_n13##x,_p4##y,z,c), I[328] = (T)(img)(_n14##x,_p4##y,z,c), I[329] = (T)(img)(_n15##x,_p4##y,z,c), \ + I[330] = (T)(img)(_p14##x,_p3##y,z,c), I[331] = (T)(img)(_p13##x,_p3##y,z,c), I[332] = (T)(img)(_p12##x,_p3##y,z,c), I[333] = (T)(img)(_p11##x,_p3##y,z,c), I[334] = (T)(img)(_p10##x,_p3##y,z,c), I[335] = (T)(img)(_p9##x,_p3##y,z,c), I[336] = (T)(img)(_p8##x,_p3##y,z,c), I[337] = (T)(img)(_p7##x,_p3##y,z,c), I[338] = (T)(img)(_p6##x,_p3##y,z,c), I[339] = (T)(img)(_p5##x,_p3##y,z,c), I[340] = (T)(img)(_p4##x,_p3##y,z,c), I[341] = (T)(img)(_p3##x,_p3##y,z,c), I[342] = (T)(img)(_p2##x,_p3##y,z,c), I[343] = (T)(img)(_p1##x,_p3##y,z,c), I[344] = (T)(img)(x,_p3##y,z,c), I[345] = (T)(img)(_n1##x,_p3##y,z,c), I[346] = (T)(img)(_n2##x,_p3##y,z,c), I[347] = (T)(img)(_n3##x,_p3##y,z,c), I[348] = (T)(img)(_n4##x,_p3##y,z,c), I[349] = (T)(img)(_n5##x,_p3##y,z,c), I[350] = (T)(img)(_n6##x,_p3##y,z,c), I[351] = (T)(img)(_n7##x,_p3##y,z,c), I[352] = (T)(img)(_n8##x,_p3##y,z,c), I[353] = (T)(img)(_n9##x,_p3##y,z,c), I[354] = (T)(img)(_n10##x,_p3##y,z,c), I[355] = (T)(img)(_n11##x,_p3##y,z,c), I[356] = (T)(img)(_n12##x,_p3##y,z,c), I[357] = (T)(img)(_n13##x,_p3##y,z,c), I[358] = (T)(img)(_n14##x,_p3##y,z,c), I[359] = (T)(img)(_n15##x,_p3##y,z,c), \ + I[360] = (T)(img)(_p14##x,_p2##y,z,c), I[361] = (T)(img)(_p13##x,_p2##y,z,c), I[362] = (T)(img)(_p12##x,_p2##y,z,c), I[363] = (T)(img)(_p11##x,_p2##y,z,c), I[364] = (T)(img)(_p10##x,_p2##y,z,c), I[365] = (T)(img)(_p9##x,_p2##y,z,c), I[366] = (T)(img)(_p8##x,_p2##y,z,c), I[367] = (T)(img)(_p7##x,_p2##y,z,c), I[368] = (T)(img)(_p6##x,_p2##y,z,c), I[369] = (T)(img)(_p5##x,_p2##y,z,c), I[370] = (T)(img)(_p4##x,_p2##y,z,c), I[371] = (T)(img)(_p3##x,_p2##y,z,c), I[372] = (T)(img)(_p2##x,_p2##y,z,c), I[373] = (T)(img)(_p1##x,_p2##y,z,c), I[374] = (T)(img)(x,_p2##y,z,c), I[375] = (T)(img)(_n1##x,_p2##y,z,c), I[376] = (T)(img)(_n2##x,_p2##y,z,c), I[377] = (T)(img)(_n3##x,_p2##y,z,c), I[378] = (T)(img)(_n4##x,_p2##y,z,c), I[379] = (T)(img)(_n5##x,_p2##y,z,c), I[380] = (T)(img)(_n6##x,_p2##y,z,c), I[381] = (T)(img)(_n7##x,_p2##y,z,c), I[382] = (T)(img)(_n8##x,_p2##y,z,c), I[383] = (T)(img)(_n9##x,_p2##y,z,c), I[384] = (T)(img)(_n10##x,_p2##y,z,c), I[385] = (T)(img)(_n11##x,_p2##y,z,c), I[386] = (T)(img)(_n12##x,_p2##y,z,c), I[387] = (T)(img)(_n13##x,_p2##y,z,c), I[388] = (T)(img)(_n14##x,_p2##y,z,c), I[389] = (T)(img)(_n15##x,_p2##y,z,c), \ + I[390] = (T)(img)(_p14##x,_p1##y,z,c), I[391] = (T)(img)(_p13##x,_p1##y,z,c), I[392] = (T)(img)(_p12##x,_p1##y,z,c), I[393] = (T)(img)(_p11##x,_p1##y,z,c), I[394] = (T)(img)(_p10##x,_p1##y,z,c), I[395] = (T)(img)(_p9##x,_p1##y,z,c), I[396] = (T)(img)(_p8##x,_p1##y,z,c), I[397] = (T)(img)(_p7##x,_p1##y,z,c), I[398] = (T)(img)(_p6##x,_p1##y,z,c), I[399] = (T)(img)(_p5##x,_p1##y,z,c), I[400] = (T)(img)(_p4##x,_p1##y,z,c), I[401] = (T)(img)(_p3##x,_p1##y,z,c), I[402] = (T)(img)(_p2##x,_p1##y,z,c), I[403] = (T)(img)(_p1##x,_p1##y,z,c), I[404] = (T)(img)(x,_p1##y,z,c), I[405] = (T)(img)(_n1##x,_p1##y,z,c), I[406] = (T)(img)(_n2##x,_p1##y,z,c), I[407] = (T)(img)(_n3##x,_p1##y,z,c), I[408] = (T)(img)(_n4##x,_p1##y,z,c), I[409] = (T)(img)(_n5##x,_p1##y,z,c), I[410] = (T)(img)(_n6##x,_p1##y,z,c), I[411] = (T)(img)(_n7##x,_p1##y,z,c), I[412] = (T)(img)(_n8##x,_p1##y,z,c), I[413] = (T)(img)(_n9##x,_p1##y,z,c), I[414] = (T)(img)(_n10##x,_p1##y,z,c), I[415] = (T)(img)(_n11##x,_p1##y,z,c), I[416] = (T)(img)(_n12##x,_p1##y,z,c), I[417] = (T)(img)(_n13##x,_p1##y,z,c), I[418] = (T)(img)(_n14##x,_p1##y,z,c), I[419] = (T)(img)(_n15##x,_p1##y,z,c), \ + I[420] = (T)(img)(_p14##x,y,z,c), I[421] = (T)(img)(_p13##x,y,z,c), I[422] = (T)(img)(_p12##x,y,z,c), I[423] = (T)(img)(_p11##x,y,z,c), I[424] = (T)(img)(_p10##x,y,z,c), I[425] = (T)(img)(_p9##x,y,z,c), I[426] = (T)(img)(_p8##x,y,z,c), I[427] = (T)(img)(_p7##x,y,z,c), I[428] = (T)(img)(_p6##x,y,z,c), I[429] = (T)(img)(_p5##x,y,z,c), I[430] = (T)(img)(_p4##x,y,z,c), I[431] = (T)(img)(_p3##x,y,z,c), I[432] = (T)(img)(_p2##x,y,z,c), I[433] = (T)(img)(_p1##x,y,z,c), I[434] = (T)(img)(x,y,z,c), I[435] = (T)(img)(_n1##x,y,z,c), I[436] = (T)(img)(_n2##x,y,z,c), I[437] = (T)(img)(_n3##x,y,z,c), I[438] = (T)(img)(_n4##x,y,z,c), I[439] = (T)(img)(_n5##x,y,z,c), I[440] = (T)(img)(_n6##x,y,z,c), I[441] = (T)(img)(_n7##x,y,z,c), I[442] = (T)(img)(_n8##x,y,z,c), I[443] = (T)(img)(_n9##x,y,z,c), I[444] = (T)(img)(_n10##x,y,z,c), I[445] = (T)(img)(_n11##x,y,z,c), I[446] = (T)(img)(_n12##x,y,z,c), I[447] = (T)(img)(_n13##x,y,z,c), I[448] = (T)(img)(_n14##x,y,z,c), I[449] = (T)(img)(_n15##x,y,z,c), \ + I[450] = (T)(img)(_p14##x,_n1##y,z,c), I[451] = (T)(img)(_p13##x,_n1##y,z,c), I[452] = (T)(img)(_p12##x,_n1##y,z,c), I[453] = (T)(img)(_p11##x,_n1##y,z,c), I[454] = (T)(img)(_p10##x,_n1##y,z,c), I[455] = (T)(img)(_p9##x,_n1##y,z,c), I[456] = (T)(img)(_p8##x,_n1##y,z,c), I[457] = (T)(img)(_p7##x,_n1##y,z,c), I[458] = (T)(img)(_p6##x,_n1##y,z,c), I[459] = (T)(img)(_p5##x,_n1##y,z,c), I[460] = (T)(img)(_p4##x,_n1##y,z,c), I[461] = (T)(img)(_p3##x,_n1##y,z,c), I[462] = (T)(img)(_p2##x,_n1##y,z,c), I[463] = (T)(img)(_p1##x,_n1##y,z,c), I[464] = (T)(img)(x,_n1##y,z,c), I[465] = (T)(img)(_n1##x,_n1##y,z,c), I[466] = (T)(img)(_n2##x,_n1##y,z,c), I[467] = (T)(img)(_n3##x,_n1##y,z,c), I[468] = (T)(img)(_n4##x,_n1##y,z,c), I[469] = (T)(img)(_n5##x,_n1##y,z,c), I[470] = (T)(img)(_n6##x,_n1##y,z,c), I[471] = (T)(img)(_n7##x,_n1##y,z,c), I[472] = (T)(img)(_n8##x,_n1##y,z,c), I[473] = (T)(img)(_n9##x,_n1##y,z,c), I[474] = (T)(img)(_n10##x,_n1##y,z,c), I[475] = (T)(img)(_n11##x,_n1##y,z,c), I[476] = (T)(img)(_n12##x,_n1##y,z,c), I[477] = (T)(img)(_n13##x,_n1##y,z,c), I[478] = (T)(img)(_n14##x,_n1##y,z,c), I[479] = (T)(img)(_n15##x,_n1##y,z,c), \ + I[480] = (T)(img)(_p14##x,_n2##y,z,c), I[481] = (T)(img)(_p13##x,_n2##y,z,c), I[482] = (T)(img)(_p12##x,_n2##y,z,c), I[483] = (T)(img)(_p11##x,_n2##y,z,c), I[484] = (T)(img)(_p10##x,_n2##y,z,c), I[485] = (T)(img)(_p9##x,_n2##y,z,c), I[486] = (T)(img)(_p8##x,_n2##y,z,c), I[487] = (T)(img)(_p7##x,_n2##y,z,c), I[488] = (T)(img)(_p6##x,_n2##y,z,c), I[489] = (T)(img)(_p5##x,_n2##y,z,c), I[490] = (T)(img)(_p4##x,_n2##y,z,c), I[491] = (T)(img)(_p3##x,_n2##y,z,c), I[492] = (T)(img)(_p2##x,_n2##y,z,c), I[493] = (T)(img)(_p1##x,_n2##y,z,c), I[494] = (T)(img)(x,_n2##y,z,c), I[495] = (T)(img)(_n1##x,_n2##y,z,c), I[496] = (T)(img)(_n2##x,_n2##y,z,c), I[497] = (T)(img)(_n3##x,_n2##y,z,c), I[498] = (T)(img)(_n4##x,_n2##y,z,c), I[499] = (T)(img)(_n5##x,_n2##y,z,c), I[500] = (T)(img)(_n6##x,_n2##y,z,c), I[501] = (T)(img)(_n7##x,_n2##y,z,c), I[502] = (T)(img)(_n8##x,_n2##y,z,c), I[503] = (T)(img)(_n9##x,_n2##y,z,c), I[504] = (T)(img)(_n10##x,_n2##y,z,c), I[505] = (T)(img)(_n11##x,_n2##y,z,c), I[506] = (T)(img)(_n12##x,_n2##y,z,c), I[507] = (T)(img)(_n13##x,_n2##y,z,c), I[508] = (T)(img)(_n14##x,_n2##y,z,c), I[509] = (T)(img)(_n15##x,_n2##y,z,c), \ + I[510] = (T)(img)(_p14##x,_n3##y,z,c), I[511] = (T)(img)(_p13##x,_n3##y,z,c), I[512] = (T)(img)(_p12##x,_n3##y,z,c), I[513] = (T)(img)(_p11##x,_n3##y,z,c), I[514] = (T)(img)(_p10##x,_n3##y,z,c), I[515] = (T)(img)(_p9##x,_n3##y,z,c), I[516] = (T)(img)(_p8##x,_n3##y,z,c), I[517] = (T)(img)(_p7##x,_n3##y,z,c), I[518] = (T)(img)(_p6##x,_n3##y,z,c), I[519] = (T)(img)(_p5##x,_n3##y,z,c), I[520] = (T)(img)(_p4##x,_n3##y,z,c), I[521] = (T)(img)(_p3##x,_n3##y,z,c), I[522] = (T)(img)(_p2##x,_n3##y,z,c), I[523] = (T)(img)(_p1##x,_n3##y,z,c), I[524] = (T)(img)(x,_n3##y,z,c), I[525] = (T)(img)(_n1##x,_n3##y,z,c), I[526] = (T)(img)(_n2##x,_n3##y,z,c), I[527] = (T)(img)(_n3##x,_n3##y,z,c), I[528] = (T)(img)(_n4##x,_n3##y,z,c), I[529] = (T)(img)(_n5##x,_n3##y,z,c), I[530] = (T)(img)(_n6##x,_n3##y,z,c), I[531] = (T)(img)(_n7##x,_n3##y,z,c), I[532] = (T)(img)(_n8##x,_n3##y,z,c), I[533] = (T)(img)(_n9##x,_n3##y,z,c), I[534] = (T)(img)(_n10##x,_n3##y,z,c), I[535] = (T)(img)(_n11##x,_n3##y,z,c), I[536] = (T)(img)(_n12##x,_n3##y,z,c), I[537] = (T)(img)(_n13##x,_n3##y,z,c), I[538] = (T)(img)(_n14##x,_n3##y,z,c), I[539] = (T)(img)(_n15##x,_n3##y,z,c), \ + I[540] = (T)(img)(_p14##x,_n4##y,z,c), I[541] = (T)(img)(_p13##x,_n4##y,z,c), I[542] = (T)(img)(_p12##x,_n4##y,z,c), I[543] = (T)(img)(_p11##x,_n4##y,z,c), I[544] = (T)(img)(_p10##x,_n4##y,z,c), I[545] = (T)(img)(_p9##x,_n4##y,z,c), I[546] = (T)(img)(_p8##x,_n4##y,z,c), I[547] = (T)(img)(_p7##x,_n4##y,z,c), I[548] = (T)(img)(_p6##x,_n4##y,z,c), I[549] = (T)(img)(_p5##x,_n4##y,z,c), I[550] = (T)(img)(_p4##x,_n4##y,z,c), I[551] = (T)(img)(_p3##x,_n4##y,z,c), I[552] = (T)(img)(_p2##x,_n4##y,z,c), I[553] = (T)(img)(_p1##x,_n4##y,z,c), I[554] = (T)(img)(x,_n4##y,z,c), I[555] = (T)(img)(_n1##x,_n4##y,z,c), I[556] = (T)(img)(_n2##x,_n4##y,z,c), I[557] = (T)(img)(_n3##x,_n4##y,z,c), I[558] = (T)(img)(_n4##x,_n4##y,z,c), I[559] = (T)(img)(_n5##x,_n4##y,z,c), I[560] = (T)(img)(_n6##x,_n4##y,z,c), I[561] = (T)(img)(_n7##x,_n4##y,z,c), I[562] = (T)(img)(_n8##x,_n4##y,z,c), I[563] = (T)(img)(_n9##x,_n4##y,z,c), I[564] = (T)(img)(_n10##x,_n4##y,z,c), I[565] = (T)(img)(_n11##x,_n4##y,z,c), I[566] = (T)(img)(_n12##x,_n4##y,z,c), I[567] = (T)(img)(_n13##x,_n4##y,z,c), I[568] = (T)(img)(_n14##x,_n4##y,z,c), I[569] = (T)(img)(_n15##x,_n4##y,z,c), \ + I[570] = (T)(img)(_p14##x,_n5##y,z,c), I[571] = (T)(img)(_p13##x,_n5##y,z,c), I[572] = (T)(img)(_p12##x,_n5##y,z,c), I[573] = (T)(img)(_p11##x,_n5##y,z,c), I[574] = (T)(img)(_p10##x,_n5##y,z,c), I[575] = (T)(img)(_p9##x,_n5##y,z,c), I[576] = (T)(img)(_p8##x,_n5##y,z,c), I[577] = (T)(img)(_p7##x,_n5##y,z,c), I[578] = (T)(img)(_p6##x,_n5##y,z,c), I[579] = (T)(img)(_p5##x,_n5##y,z,c), I[580] = (T)(img)(_p4##x,_n5##y,z,c), I[581] = (T)(img)(_p3##x,_n5##y,z,c), I[582] = (T)(img)(_p2##x,_n5##y,z,c), I[583] = (T)(img)(_p1##x,_n5##y,z,c), I[584] = (T)(img)(x,_n5##y,z,c), I[585] = (T)(img)(_n1##x,_n5##y,z,c), I[586] = (T)(img)(_n2##x,_n5##y,z,c), I[587] = (T)(img)(_n3##x,_n5##y,z,c), I[588] = (T)(img)(_n4##x,_n5##y,z,c), I[589] = (T)(img)(_n5##x,_n5##y,z,c), I[590] = (T)(img)(_n6##x,_n5##y,z,c), I[591] = (T)(img)(_n7##x,_n5##y,z,c), I[592] = (T)(img)(_n8##x,_n5##y,z,c), I[593] = (T)(img)(_n9##x,_n5##y,z,c), I[594] = (T)(img)(_n10##x,_n5##y,z,c), I[595] = (T)(img)(_n11##x,_n5##y,z,c), I[596] = (T)(img)(_n12##x,_n5##y,z,c), I[597] = (T)(img)(_n13##x,_n5##y,z,c), I[598] = (T)(img)(_n14##x,_n5##y,z,c), I[599] = (T)(img)(_n15##x,_n5##y,z,c), \ + I[600] = (T)(img)(_p14##x,_n6##y,z,c), I[601] = (T)(img)(_p13##x,_n6##y,z,c), I[602] = (T)(img)(_p12##x,_n6##y,z,c), I[603] = (T)(img)(_p11##x,_n6##y,z,c), I[604] = (T)(img)(_p10##x,_n6##y,z,c), I[605] = (T)(img)(_p9##x,_n6##y,z,c), I[606] = (T)(img)(_p8##x,_n6##y,z,c), I[607] = (T)(img)(_p7##x,_n6##y,z,c), I[608] = (T)(img)(_p6##x,_n6##y,z,c), I[609] = (T)(img)(_p5##x,_n6##y,z,c), I[610] = (T)(img)(_p4##x,_n6##y,z,c), I[611] = (T)(img)(_p3##x,_n6##y,z,c), I[612] = (T)(img)(_p2##x,_n6##y,z,c), I[613] = (T)(img)(_p1##x,_n6##y,z,c), I[614] = (T)(img)(x,_n6##y,z,c), I[615] = (T)(img)(_n1##x,_n6##y,z,c), I[616] = (T)(img)(_n2##x,_n6##y,z,c), I[617] = (T)(img)(_n3##x,_n6##y,z,c), I[618] = (T)(img)(_n4##x,_n6##y,z,c), I[619] = (T)(img)(_n5##x,_n6##y,z,c), I[620] = (T)(img)(_n6##x,_n6##y,z,c), I[621] = (T)(img)(_n7##x,_n6##y,z,c), I[622] = (T)(img)(_n8##x,_n6##y,z,c), I[623] = (T)(img)(_n9##x,_n6##y,z,c), I[624] = (T)(img)(_n10##x,_n6##y,z,c), I[625] = (T)(img)(_n11##x,_n6##y,z,c), I[626] = (T)(img)(_n12##x,_n6##y,z,c), I[627] = (T)(img)(_n13##x,_n6##y,z,c), I[628] = (T)(img)(_n14##x,_n6##y,z,c), I[629] = (T)(img)(_n15##x,_n6##y,z,c), \ + I[630] = (T)(img)(_p14##x,_n7##y,z,c), I[631] = (T)(img)(_p13##x,_n7##y,z,c), I[632] = (T)(img)(_p12##x,_n7##y,z,c), I[633] = (T)(img)(_p11##x,_n7##y,z,c), I[634] = (T)(img)(_p10##x,_n7##y,z,c), I[635] = (T)(img)(_p9##x,_n7##y,z,c), I[636] = (T)(img)(_p8##x,_n7##y,z,c), I[637] = (T)(img)(_p7##x,_n7##y,z,c), I[638] = (T)(img)(_p6##x,_n7##y,z,c), I[639] = (T)(img)(_p5##x,_n7##y,z,c), I[640] = (T)(img)(_p4##x,_n7##y,z,c), I[641] = (T)(img)(_p3##x,_n7##y,z,c), I[642] = (T)(img)(_p2##x,_n7##y,z,c), I[643] = (T)(img)(_p1##x,_n7##y,z,c), I[644] = (T)(img)(x,_n7##y,z,c), I[645] = (T)(img)(_n1##x,_n7##y,z,c), I[646] = (T)(img)(_n2##x,_n7##y,z,c), I[647] = (T)(img)(_n3##x,_n7##y,z,c), I[648] = (T)(img)(_n4##x,_n7##y,z,c), I[649] = (T)(img)(_n5##x,_n7##y,z,c), I[650] = (T)(img)(_n6##x,_n7##y,z,c), I[651] = (T)(img)(_n7##x,_n7##y,z,c), I[652] = (T)(img)(_n8##x,_n7##y,z,c), I[653] = (T)(img)(_n9##x,_n7##y,z,c), I[654] = (T)(img)(_n10##x,_n7##y,z,c), I[655] = (T)(img)(_n11##x,_n7##y,z,c), I[656] = (T)(img)(_n12##x,_n7##y,z,c), I[657] = (T)(img)(_n13##x,_n7##y,z,c), I[658] = (T)(img)(_n14##x,_n7##y,z,c), I[659] = (T)(img)(_n15##x,_n7##y,z,c), \ + I[660] = (T)(img)(_p14##x,_n8##y,z,c), I[661] = (T)(img)(_p13##x,_n8##y,z,c), I[662] = (T)(img)(_p12##x,_n8##y,z,c), I[663] = (T)(img)(_p11##x,_n8##y,z,c), I[664] = (T)(img)(_p10##x,_n8##y,z,c), I[665] = (T)(img)(_p9##x,_n8##y,z,c), I[666] = (T)(img)(_p8##x,_n8##y,z,c), I[667] = (T)(img)(_p7##x,_n8##y,z,c), I[668] = (T)(img)(_p6##x,_n8##y,z,c), I[669] = (T)(img)(_p5##x,_n8##y,z,c), I[670] = (T)(img)(_p4##x,_n8##y,z,c), I[671] = (T)(img)(_p3##x,_n8##y,z,c), I[672] = (T)(img)(_p2##x,_n8##y,z,c), I[673] = (T)(img)(_p1##x,_n8##y,z,c), I[674] = (T)(img)(x,_n8##y,z,c), I[675] = (T)(img)(_n1##x,_n8##y,z,c), I[676] = (T)(img)(_n2##x,_n8##y,z,c), I[677] = (T)(img)(_n3##x,_n8##y,z,c), I[678] = (T)(img)(_n4##x,_n8##y,z,c), I[679] = (T)(img)(_n5##x,_n8##y,z,c), I[680] = (T)(img)(_n6##x,_n8##y,z,c), I[681] = (T)(img)(_n7##x,_n8##y,z,c), I[682] = (T)(img)(_n8##x,_n8##y,z,c), I[683] = (T)(img)(_n9##x,_n8##y,z,c), I[684] = (T)(img)(_n10##x,_n8##y,z,c), I[685] = (T)(img)(_n11##x,_n8##y,z,c), I[686] = (T)(img)(_n12##x,_n8##y,z,c), I[687] = (T)(img)(_n13##x,_n8##y,z,c), I[688] = (T)(img)(_n14##x,_n8##y,z,c), I[689] = (T)(img)(_n15##x,_n8##y,z,c), \ + I[690] = (T)(img)(_p14##x,_n9##y,z,c), I[691] = (T)(img)(_p13##x,_n9##y,z,c), I[692] = (T)(img)(_p12##x,_n9##y,z,c), I[693] = (T)(img)(_p11##x,_n9##y,z,c), I[694] = (T)(img)(_p10##x,_n9##y,z,c), I[695] = (T)(img)(_p9##x,_n9##y,z,c), I[696] = (T)(img)(_p8##x,_n9##y,z,c), I[697] = (T)(img)(_p7##x,_n9##y,z,c), I[698] = (T)(img)(_p6##x,_n9##y,z,c), I[699] = (T)(img)(_p5##x,_n9##y,z,c), I[700] = (T)(img)(_p4##x,_n9##y,z,c), I[701] = (T)(img)(_p3##x,_n9##y,z,c), I[702] = (T)(img)(_p2##x,_n9##y,z,c), I[703] = (T)(img)(_p1##x,_n9##y,z,c), I[704] = (T)(img)(x,_n9##y,z,c), I[705] = (T)(img)(_n1##x,_n9##y,z,c), I[706] = (T)(img)(_n2##x,_n9##y,z,c), I[707] = (T)(img)(_n3##x,_n9##y,z,c), I[708] = (T)(img)(_n4##x,_n9##y,z,c), I[709] = (T)(img)(_n5##x,_n9##y,z,c), I[710] = (T)(img)(_n6##x,_n9##y,z,c), I[711] = (T)(img)(_n7##x,_n9##y,z,c), I[712] = (T)(img)(_n8##x,_n9##y,z,c), I[713] = (T)(img)(_n9##x,_n9##y,z,c), I[714] = (T)(img)(_n10##x,_n9##y,z,c), I[715] = (T)(img)(_n11##x,_n9##y,z,c), I[716] = (T)(img)(_n12##x,_n9##y,z,c), I[717] = (T)(img)(_n13##x,_n9##y,z,c), I[718] = (T)(img)(_n14##x,_n9##y,z,c), I[719] = (T)(img)(_n15##x,_n9##y,z,c), \ + I[720] = (T)(img)(_p14##x,_n10##y,z,c), I[721] = (T)(img)(_p13##x,_n10##y,z,c), I[722] = (T)(img)(_p12##x,_n10##y,z,c), I[723] = (T)(img)(_p11##x,_n10##y,z,c), I[724] = (T)(img)(_p10##x,_n10##y,z,c), I[725] = (T)(img)(_p9##x,_n10##y,z,c), I[726] = (T)(img)(_p8##x,_n10##y,z,c), I[727] = (T)(img)(_p7##x,_n10##y,z,c), I[728] = (T)(img)(_p6##x,_n10##y,z,c), I[729] = (T)(img)(_p5##x,_n10##y,z,c), I[730] = (T)(img)(_p4##x,_n10##y,z,c), I[731] = (T)(img)(_p3##x,_n10##y,z,c), I[732] = (T)(img)(_p2##x,_n10##y,z,c), I[733] = (T)(img)(_p1##x,_n10##y,z,c), I[734] = (T)(img)(x,_n10##y,z,c), I[735] = (T)(img)(_n1##x,_n10##y,z,c), I[736] = (T)(img)(_n2##x,_n10##y,z,c), I[737] = (T)(img)(_n3##x,_n10##y,z,c), I[738] = (T)(img)(_n4##x,_n10##y,z,c), I[739] = (T)(img)(_n5##x,_n10##y,z,c), I[740] = (T)(img)(_n6##x,_n10##y,z,c), I[741] = (T)(img)(_n7##x,_n10##y,z,c), I[742] = (T)(img)(_n8##x,_n10##y,z,c), I[743] = (T)(img)(_n9##x,_n10##y,z,c), I[744] = (T)(img)(_n10##x,_n10##y,z,c), I[745] = (T)(img)(_n11##x,_n10##y,z,c), I[746] = (T)(img)(_n12##x,_n10##y,z,c), I[747] = (T)(img)(_n13##x,_n10##y,z,c), I[748] = (T)(img)(_n14##x,_n10##y,z,c), I[749] = (T)(img)(_n15##x,_n10##y,z,c), \ + I[750] = (T)(img)(_p14##x,_n11##y,z,c), I[751] = (T)(img)(_p13##x,_n11##y,z,c), I[752] = (T)(img)(_p12##x,_n11##y,z,c), I[753] = (T)(img)(_p11##x,_n11##y,z,c), I[754] = (T)(img)(_p10##x,_n11##y,z,c), I[755] = (T)(img)(_p9##x,_n11##y,z,c), I[756] = (T)(img)(_p8##x,_n11##y,z,c), I[757] = (T)(img)(_p7##x,_n11##y,z,c), I[758] = (T)(img)(_p6##x,_n11##y,z,c), I[759] = (T)(img)(_p5##x,_n11##y,z,c), I[760] = (T)(img)(_p4##x,_n11##y,z,c), I[761] = (T)(img)(_p3##x,_n11##y,z,c), I[762] = (T)(img)(_p2##x,_n11##y,z,c), I[763] = (T)(img)(_p1##x,_n11##y,z,c), I[764] = (T)(img)(x,_n11##y,z,c), I[765] = (T)(img)(_n1##x,_n11##y,z,c), I[766] = (T)(img)(_n2##x,_n11##y,z,c), I[767] = (T)(img)(_n3##x,_n11##y,z,c), I[768] = (T)(img)(_n4##x,_n11##y,z,c), I[769] = (T)(img)(_n5##x,_n11##y,z,c), I[770] = (T)(img)(_n6##x,_n11##y,z,c), I[771] = (T)(img)(_n7##x,_n11##y,z,c), I[772] = (T)(img)(_n8##x,_n11##y,z,c), I[773] = (T)(img)(_n9##x,_n11##y,z,c), I[774] = (T)(img)(_n10##x,_n11##y,z,c), I[775] = (T)(img)(_n11##x,_n11##y,z,c), I[776] = (T)(img)(_n12##x,_n11##y,z,c), I[777] = (T)(img)(_n13##x,_n11##y,z,c), I[778] = (T)(img)(_n14##x,_n11##y,z,c), I[779] = (T)(img)(_n15##x,_n11##y,z,c), \ + I[780] = (T)(img)(_p14##x,_n12##y,z,c), I[781] = (T)(img)(_p13##x,_n12##y,z,c), I[782] = (T)(img)(_p12##x,_n12##y,z,c), I[783] = (T)(img)(_p11##x,_n12##y,z,c), I[784] = (T)(img)(_p10##x,_n12##y,z,c), I[785] = (T)(img)(_p9##x,_n12##y,z,c), I[786] = (T)(img)(_p8##x,_n12##y,z,c), I[787] = (T)(img)(_p7##x,_n12##y,z,c), I[788] = (T)(img)(_p6##x,_n12##y,z,c), I[789] = (T)(img)(_p5##x,_n12##y,z,c), I[790] = (T)(img)(_p4##x,_n12##y,z,c), I[791] = (T)(img)(_p3##x,_n12##y,z,c), I[792] = (T)(img)(_p2##x,_n12##y,z,c), I[793] = (T)(img)(_p1##x,_n12##y,z,c), I[794] = (T)(img)(x,_n12##y,z,c), I[795] = (T)(img)(_n1##x,_n12##y,z,c), I[796] = (T)(img)(_n2##x,_n12##y,z,c), I[797] = (T)(img)(_n3##x,_n12##y,z,c), I[798] = (T)(img)(_n4##x,_n12##y,z,c), I[799] = (T)(img)(_n5##x,_n12##y,z,c), I[800] = (T)(img)(_n6##x,_n12##y,z,c), I[801] = (T)(img)(_n7##x,_n12##y,z,c), I[802] = (T)(img)(_n8##x,_n12##y,z,c), I[803] = (T)(img)(_n9##x,_n12##y,z,c), I[804] = (T)(img)(_n10##x,_n12##y,z,c), I[805] = (T)(img)(_n11##x,_n12##y,z,c), I[806] = (T)(img)(_n12##x,_n12##y,z,c), I[807] = (T)(img)(_n13##x,_n12##y,z,c), I[808] = (T)(img)(_n14##x,_n12##y,z,c), I[809] = (T)(img)(_n15##x,_n12##y,z,c), \ + I[810] = (T)(img)(_p14##x,_n13##y,z,c), I[811] = (T)(img)(_p13##x,_n13##y,z,c), I[812] = (T)(img)(_p12##x,_n13##y,z,c), I[813] = (T)(img)(_p11##x,_n13##y,z,c), I[814] = (T)(img)(_p10##x,_n13##y,z,c), I[815] = (T)(img)(_p9##x,_n13##y,z,c), I[816] = (T)(img)(_p8##x,_n13##y,z,c), I[817] = (T)(img)(_p7##x,_n13##y,z,c), I[818] = (T)(img)(_p6##x,_n13##y,z,c), I[819] = (T)(img)(_p5##x,_n13##y,z,c), I[820] = (T)(img)(_p4##x,_n13##y,z,c), I[821] = (T)(img)(_p3##x,_n13##y,z,c), I[822] = (T)(img)(_p2##x,_n13##y,z,c), I[823] = (T)(img)(_p1##x,_n13##y,z,c), I[824] = (T)(img)(x,_n13##y,z,c), I[825] = (T)(img)(_n1##x,_n13##y,z,c), I[826] = (T)(img)(_n2##x,_n13##y,z,c), I[827] = (T)(img)(_n3##x,_n13##y,z,c), I[828] = (T)(img)(_n4##x,_n13##y,z,c), I[829] = (T)(img)(_n5##x,_n13##y,z,c), I[830] = (T)(img)(_n6##x,_n13##y,z,c), I[831] = (T)(img)(_n7##x,_n13##y,z,c), I[832] = (T)(img)(_n8##x,_n13##y,z,c), I[833] = (T)(img)(_n9##x,_n13##y,z,c), I[834] = (T)(img)(_n10##x,_n13##y,z,c), I[835] = (T)(img)(_n11##x,_n13##y,z,c), I[836] = (T)(img)(_n12##x,_n13##y,z,c), I[837] = (T)(img)(_n13##x,_n13##y,z,c), I[838] = (T)(img)(_n14##x,_n13##y,z,c), I[839] = (T)(img)(_n15##x,_n13##y,z,c), \ + I[840] = (T)(img)(_p14##x,_n14##y,z,c), I[841] = (T)(img)(_p13##x,_n14##y,z,c), I[842] = (T)(img)(_p12##x,_n14##y,z,c), I[843] = (T)(img)(_p11##x,_n14##y,z,c), I[844] = (T)(img)(_p10##x,_n14##y,z,c), I[845] = (T)(img)(_p9##x,_n14##y,z,c), I[846] = (T)(img)(_p8##x,_n14##y,z,c), I[847] = (T)(img)(_p7##x,_n14##y,z,c), I[848] = (T)(img)(_p6##x,_n14##y,z,c), I[849] = (T)(img)(_p5##x,_n14##y,z,c), I[850] = (T)(img)(_p4##x,_n14##y,z,c), I[851] = (T)(img)(_p3##x,_n14##y,z,c), I[852] = (T)(img)(_p2##x,_n14##y,z,c), I[853] = (T)(img)(_p1##x,_n14##y,z,c), I[854] = (T)(img)(x,_n14##y,z,c), I[855] = (T)(img)(_n1##x,_n14##y,z,c), I[856] = (T)(img)(_n2##x,_n14##y,z,c), I[857] = (T)(img)(_n3##x,_n14##y,z,c), I[858] = (T)(img)(_n4##x,_n14##y,z,c), I[859] = (T)(img)(_n5##x,_n14##y,z,c), I[860] = (T)(img)(_n6##x,_n14##y,z,c), I[861] = (T)(img)(_n7##x,_n14##y,z,c), I[862] = (T)(img)(_n8##x,_n14##y,z,c), I[863] = (T)(img)(_n9##x,_n14##y,z,c), I[864] = (T)(img)(_n10##x,_n14##y,z,c), I[865] = (T)(img)(_n11##x,_n14##y,z,c), I[866] = (T)(img)(_n12##x,_n14##y,z,c), I[867] = (T)(img)(_n13##x,_n14##y,z,c), I[868] = (T)(img)(_n14##x,_n14##y,z,c), I[869] = (T)(img)(_n15##x,_n14##y,z,c), \ + I[870] = (T)(img)(_p14##x,_n15##y,z,c), I[871] = (T)(img)(_p13##x,_n15##y,z,c), I[872] = (T)(img)(_p12##x,_n15##y,z,c), I[873] = (T)(img)(_p11##x,_n15##y,z,c), I[874] = (T)(img)(_p10##x,_n15##y,z,c), I[875] = (T)(img)(_p9##x,_n15##y,z,c), I[876] = (T)(img)(_p8##x,_n15##y,z,c), I[877] = (T)(img)(_p7##x,_n15##y,z,c), I[878] = (T)(img)(_p6##x,_n15##y,z,c), I[879] = (T)(img)(_p5##x,_n15##y,z,c), I[880] = (T)(img)(_p4##x,_n15##y,z,c), I[881] = (T)(img)(_p3##x,_n15##y,z,c), I[882] = (T)(img)(_p2##x,_n15##y,z,c), I[883] = (T)(img)(_p1##x,_n15##y,z,c), I[884] = (T)(img)(x,_n15##y,z,c), I[885] = (T)(img)(_n1##x,_n15##y,z,c), I[886] = (T)(img)(_n2##x,_n15##y,z,c), I[887] = (T)(img)(_n3##x,_n15##y,z,c), I[888] = (T)(img)(_n4##x,_n15##y,z,c), I[889] = (T)(img)(_n5##x,_n15##y,z,c), I[890] = (T)(img)(_n6##x,_n15##y,z,c), I[891] = (T)(img)(_n7##x,_n15##y,z,c), I[892] = (T)(img)(_n8##x,_n15##y,z,c), I[893] = (T)(img)(_n9##x,_n15##y,z,c), I[894] = (T)(img)(_n10##x,_n15##y,z,c), I[895] = (T)(img)(_n11##x,_n15##y,z,c), I[896] = (T)(img)(_n12##x,_n15##y,z,c), I[897] = (T)(img)(_n13##x,_n15##y,z,c), I[898] = (T)(img)(_n14##x,_n15##y,z,c), I[899] = (T)(img)(_n15##x,_n15##y,z,c); + +// Define 31x31 loop macros +//------------------------- +#define cimg_for31(bound,i) for (int i = 0, \ + _p15##i = 0, _p14##i = 0, _p13##i = 0, _p12##i = 0, _p11##i = 0, _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11, \ + _n12##i = 12>=(int)(bound)?(int)(bound) - 1:12, \ + _n13##i = 13>=(int)(bound)?(int)(bound) - 1:13, \ + _n14##i = 14>=(int)(bound)?(int)(bound) - 1:14, \ + _n15##i = 15>=(int)(bound)?(int)(bound) - 1:15; \ + _n15##i<(int)(bound) || _n14##i==--_n15##i || _n13##i==--_n14##i || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n15##i = _n14##i = _n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p15##i = _p14##i, _p14##i = _p13##i, _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i, ++_n14##i, ++_n15##i) + +#define cimg_for31X(img,x) cimg_for31((img)._width,x) +#define cimg_for31Y(img,y) cimg_for31((img)._height,y) +#define cimg_for31Z(img,z) cimg_for31((img)._depth,z) +#define cimg_for31C(img,c) cimg_for31((img)._spectrum,c) +#define cimg_for31XY(img,x,y) cimg_for31Y(img,y) cimg_for31X(img,x) +#define cimg_for31XZ(img,x,z) cimg_for31Z(img,z) cimg_for31X(img,x) +#define cimg_for31XC(img,x,c) cimg_for31C(img,c) cimg_for31X(img,x) +#define cimg_for31YZ(img,y,z) cimg_for31Z(img,z) cimg_for31Y(img,y) +#define cimg_for31YC(img,y,c) cimg_for31C(img,c) cimg_for31Y(img,y) +#define cimg_for31ZC(img,z,c) cimg_for31C(img,c) cimg_for31Z(img,z) +#define cimg_for31XYZ(img,x,y,z) cimg_for31Z(img,z) cimg_for31XY(img,x,y) +#define cimg_for31XZC(img,x,z,c) cimg_for31C(img,c) cimg_for31XZ(img,x,z) +#define cimg_for31YZC(img,y,z,c) cimg_for31C(img,c) cimg_for31YZ(img,y,z) +#define cimg_for31XYZC(img,x,y,z,c) cimg_for31C(img,c) cimg_for31XYZ(img,x,y,z) + +#define cimg_for_in31(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p15##i = i - 15<0?0:i - 15, \ + _p14##i = i - 14<0?0:i - 14, \ + _p13##i = i - 13<0?0:i - 13, \ + _p12##i = i - 12<0?0:i - 12, \ + _p11##i = i - 11<0?0:i - 11, \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11, \ + _n12##i = i + 12>=(int)(bound)?(int)(bound) - 1:i + 12, \ + _n13##i = i + 13>=(int)(bound)?(int)(bound) - 1:i + 13, \ + _n14##i = i + 14>=(int)(bound)?(int)(bound) - 1:i + 14, \ + _n15##i = i + 15>=(int)(bound)?(int)(bound) - 1:i + 15; \ + i<=(int)(i1) && (_n15##i<(int)(bound) || _n14##i==--_n15##i || _n13##i==--_n14##i || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n15##i = _n14##i = _n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p15##i = _p14##i, _p14##i = _p13##i, _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i, ++_n14##i, ++_n15##i) + +#define cimg_for_in31X(img,x0,x1,x) cimg_for_in31((img)._width,x0,x1,x) +#define cimg_for_in31Y(img,y0,y1,y) cimg_for_in31((img)._height,y0,y1,y) +#define cimg_for_in31Z(img,z0,z1,z) cimg_for_in31((img)._depth,z0,z1,z) +#define cimg_for_in31C(img,c0,c1,c) cimg_for_in31((img)._spectrum,c0,c1,c) +#define cimg_for_in31XY(img,x0,y0,x1,y1,x,y) cimg_for_in31Y(img,y0,y1,y) cimg_for_in31X(img,x0,x1,x) +#define cimg_for_in31XZ(img,x0,z0,x1,z1,x,z) cimg_for_in31Z(img,z0,z1,z) cimg_for_in31X(img,x0,x1,x) +#define cimg_for_in31XC(img,x0,c0,x1,c1,x,c) cimg_for_in31C(img,c0,c1,c) cimg_for_in31X(img,x0,x1,x) +#define cimg_for_in31YZ(img,y0,z0,y1,z1,y,z) cimg_for_in31Z(img,z0,z1,z) cimg_for_in31Y(img,y0,y1,y) +#define cimg_for_in31YC(img,y0,c0,y1,c1,y,c) cimg_for_in31C(img,c0,c1,c) cimg_for_in31Y(img,y0,y1,y) +#define cimg_for_in31ZC(img,z0,c0,z1,c1,z,c) cimg_for_in31C(img,c0,c1,c) cimg_for_in31Z(img,z0,z1,z) +#define cimg_for_in31XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in31Z(img,z0,z1,z) cimg_for_in31XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in31XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in31C(img,c0,c1,c) cimg_for_in31XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in31YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in31C(img,c0,c1,c) cimg_for_in31YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in31XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in31C(img,c0,c1,c) cimg_for_in31XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for31x31(img,x,y,z,c,I,T) \ + cimg_for31((img)._height,y) for (int x = 0, \ + _p15##x = 0, _p14##x = 0, _p13##x = 0, _p12##x = 0, _p11##x = 0, _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = 11>=((img)._width)?(img).width() - 1:11, \ + _n12##x = 12>=((img)._width)?(img).width() - 1:12, \ + _n13##x = 13>=((img)._width)?(img).width() - 1:13, \ + _n14##x = 14>=((img)._width)?(img).width() - 1:14, \ + _n15##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = I[11] = I[12] = I[13] = I[14] = I[15] = (T)(img)(0,_p15##y,z,c)), \ + (I[31] = I[32] = I[33] = I[34] = I[35] = I[36] = I[37] = I[38] = I[39] = I[40] = I[41] = I[42] = I[43] = I[44] = I[45] = I[46] = (T)(img)(0,_p14##y,z,c)), \ + (I[62] = I[63] = I[64] = I[65] = I[66] = I[67] = I[68] = I[69] = I[70] = I[71] = I[72] = I[73] = I[74] = I[75] = I[76] = I[77] = (T)(img)(0,_p13##y,z,c)), \ + (I[93] = I[94] = I[95] = I[96] = I[97] = I[98] = I[99] = I[100] = I[101] = I[102] = I[103] = I[104] = I[105] = I[106] = I[107] = I[108] = (T)(img)(0,_p12##y,z,c)), \ + (I[124] = I[125] = I[126] = I[127] = I[128] = I[129] = I[130] = I[131] = I[132] = I[133] = I[134] = I[135] = I[136] = I[137] = I[138] = I[139] = (T)(img)(0,_p11##y,z,c)), \ + (I[155] = I[156] = I[157] = I[158] = I[159] = I[160] = I[161] = I[162] = I[163] = I[164] = I[165] = I[166] = I[167] = I[168] = I[169] = I[170] = (T)(img)(0,_p10##y,z,c)), \ + (I[186] = I[187] = I[188] = I[189] = I[190] = I[191] = I[192] = I[193] = I[194] = I[195] = I[196] = I[197] = I[198] = I[199] = I[200] = I[201] = (T)(img)(0,_p9##y,z,c)), \ + (I[217] = I[218] = I[219] = I[220] = I[221] = I[222] = I[223] = I[224] = I[225] = I[226] = I[227] = I[228] = I[229] = I[230] = I[231] = I[232] = (T)(img)(0,_p8##y,z,c)), \ + (I[248] = I[249] = I[250] = I[251] = I[252] = I[253] = I[254] = I[255] = I[256] = I[257] = I[258] = I[259] = I[260] = I[261] = I[262] = I[263] = (T)(img)(0,_p7##y,z,c)), \ + (I[279] = I[280] = I[281] = I[282] = I[283] = I[284] = I[285] = I[286] = I[287] = I[288] = I[289] = I[290] = I[291] = I[292] = I[293] = I[294] = (T)(img)(0,_p6##y,z,c)), \ + (I[310] = I[311] = I[312] = I[313] = I[314] = I[315] = I[316] = I[317] = I[318] = I[319] = I[320] = I[321] = I[322] = I[323] = I[324] = I[325] = (T)(img)(0,_p5##y,z,c)), \ + (I[341] = I[342] = I[343] = I[344] = I[345] = I[346] = I[347] = I[348] = I[349] = I[350] = I[351] = I[352] = I[353] = I[354] = I[355] = I[356] = (T)(img)(0,_p4##y,z,c)), \ + (I[372] = I[373] = I[374] = I[375] = I[376] = I[377] = I[378] = I[379] = I[380] = I[381] = I[382] = I[383] = I[384] = I[385] = I[386] = I[387] = (T)(img)(0,_p3##y,z,c)), \ + (I[403] = I[404] = I[405] = I[406] = I[407] = I[408] = I[409] = I[410] = I[411] = I[412] = I[413] = I[414] = I[415] = I[416] = I[417] = I[418] = (T)(img)(0,_p2##y,z,c)), \ + (I[434] = I[435] = I[436] = I[437] = I[438] = I[439] = I[440] = I[441] = I[442] = I[443] = I[444] = I[445] = I[446] = I[447] = I[448] = I[449] = (T)(img)(0,_p1##y,z,c)), \ + (I[465] = I[466] = I[467] = I[468] = I[469] = I[470] = I[471] = I[472] = I[473] = I[474] = I[475] = I[476] = I[477] = I[478] = I[479] = I[480] = (T)(img)(0,y,z,c)), \ + (I[496] = I[497] = I[498] = I[499] = I[500] = I[501] = I[502] = I[503] = I[504] = I[505] = I[506] = I[507] = I[508] = I[509] = I[510] = I[511] = (T)(img)(0,_n1##y,z,c)), \ + (I[527] = I[528] = I[529] = I[530] = I[531] = I[532] = I[533] = I[534] = I[535] = I[536] = I[537] = I[538] = I[539] = I[540] = I[541] = I[542] = (T)(img)(0,_n2##y,z,c)), \ + (I[558] = I[559] = I[560] = I[561] = I[562] = I[563] = I[564] = I[565] = I[566] = I[567] = I[568] = I[569] = I[570] = I[571] = I[572] = I[573] = (T)(img)(0,_n3##y,z,c)), \ + (I[589] = I[590] = I[591] = I[592] = I[593] = I[594] = I[595] = I[596] = I[597] = I[598] = I[599] = I[600] = I[601] = I[602] = I[603] = I[604] = (T)(img)(0,_n4##y,z,c)), \ + (I[620] = I[621] = I[622] = I[623] = I[624] = I[625] = I[626] = I[627] = I[628] = I[629] = I[630] = I[631] = I[632] = I[633] = I[634] = I[635] = (T)(img)(0,_n5##y,z,c)), \ + (I[651] = I[652] = I[653] = I[654] = I[655] = I[656] = I[657] = I[658] = I[659] = I[660] = I[661] = I[662] = I[663] = I[664] = I[665] = I[666] = (T)(img)(0,_n6##y,z,c)), \ + (I[682] = I[683] = I[684] = I[685] = I[686] = I[687] = I[688] = I[689] = I[690] = I[691] = I[692] = I[693] = I[694] = I[695] = I[696] = I[697] = (T)(img)(0,_n7##y,z,c)), \ + (I[713] = I[714] = I[715] = I[716] = I[717] = I[718] = I[719] = I[720] = I[721] = I[722] = I[723] = I[724] = I[725] = I[726] = I[727] = I[728] = (T)(img)(0,_n8##y,z,c)), \ + (I[744] = I[745] = I[746] = I[747] = I[748] = I[749] = I[750] = I[751] = I[752] = I[753] = I[754] = I[755] = I[756] = I[757] = I[758] = I[759] = (T)(img)(0,_n9##y,z,c)), \ + (I[775] = I[776] = I[777] = I[778] = I[779] = I[780] = I[781] = I[782] = I[783] = I[784] = I[785] = I[786] = I[787] = I[788] = I[789] = I[790] = (T)(img)(0,_n10##y,z,c)), \ + (I[806] = I[807] = I[808] = I[809] = I[810] = I[811] = I[812] = I[813] = I[814] = I[815] = I[816] = I[817] = I[818] = I[819] = I[820] = I[821] = (T)(img)(0,_n11##y,z,c)), \ + (I[837] = I[838] = I[839] = I[840] = I[841] = I[842] = I[843] = I[844] = I[845] = I[846] = I[847] = I[848] = I[849] = I[850] = I[851] = I[852] = (T)(img)(0,_n12##y,z,c)), \ + (I[868] = I[869] = I[870] = I[871] = I[872] = I[873] = I[874] = I[875] = I[876] = I[877] = I[878] = I[879] = I[880] = I[881] = I[882] = I[883] = (T)(img)(0,_n13##y,z,c)), \ + (I[899] = I[900] = I[901] = I[902] = I[903] = I[904] = I[905] = I[906] = I[907] = I[908] = I[909] = I[910] = I[911] = I[912] = I[913] = I[914] = (T)(img)(0,_n14##y,z,c)), \ + (I[930] = I[931] = I[932] = I[933] = I[934] = I[935] = I[936] = I[937] = I[938] = I[939] = I[940] = I[941] = I[942] = I[943] = I[944] = I[945] = (T)(img)(0,_n15##y,z,c)), \ + (I[16] = (T)(img)(_n1##x,_p15##y,z,c)), \ + (I[47] = (T)(img)(_n1##x,_p14##y,z,c)), \ + (I[78] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[109] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[140] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[171] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[202] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[233] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[264] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[295] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[326] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[357] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[388] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[419] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[450] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[481] = (T)(img)(_n1##x,y,z,c)), \ + (I[512] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[543] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[574] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[605] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[636] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[667] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[698] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[729] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[760] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[791] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[822] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[853] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[884] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[915] = (T)(img)(_n1##x,_n14##y,z,c)), \ + (I[946] = (T)(img)(_n1##x,_n15##y,z,c)), \ + (I[17] = (T)(img)(_n2##x,_p15##y,z,c)), \ + (I[48] = (T)(img)(_n2##x,_p14##y,z,c)), \ + (I[79] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[110] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[141] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[172] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[203] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[234] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[265] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[296] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[327] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[358] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[389] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[420] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[451] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[482] = (T)(img)(_n2##x,y,z,c)), \ + (I[513] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[544] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[575] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[606] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[637] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[668] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[699] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[730] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[761] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[792] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[823] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[854] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[885] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[916] = (T)(img)(_n2##x,_n14##y,z,c)), \ + (I[947] = (T)(img)(_n2##x,_n15##y,z,c)), \ + (I[18] = (T)(img)(_n3##x,_p15##y,z,c)), \ + (I[49] = (T)(img)(_n3##x,_p14##y,z,c)), \ + (I[80] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[111] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[142] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[173] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[204] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[235] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[266] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[297] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[328] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[359] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[390] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[421] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[452] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[483] = (T)(img)(_n3##x,y,z,c)), \ + (I[514] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[545] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[576] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[607] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[638] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[669] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[700] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[731] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[762] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[793] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[824] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[855] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[886] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[917] = (T)(img)(_n3##x,_n14##y,z,c)), \ + (I[948] = (T)(img)(_n3##x,_n15##y,z,c)), \ + (I[19] = (T)(img)(_n4##x,_p15##y,z,c)), \ + (I[50] = (T)(img)(_n4##x,_p14##y,z,c)), \ + (I[81] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[112] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[143] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[174] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[205] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[236] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[267] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[298] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[329] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[360] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[391] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[422] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[453] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[484] = (T)(img)(_n4##x,y,z,c)), \ + (I[515] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[546] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[577] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[608] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[639] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[670] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[701] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[732] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[763] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[794] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[825] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[856] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[887] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[918] = (T)(img)(_n4##x,_n14##y,z,c)), \ + (I[949] = (T)(img)(_n4##x,_n15##y,z,c)), \ + (I[20] = (T)(img)(_n5##x,_p15##y,z,c)), \ + (I[51] = (T)(img)(_n5##x,_p14##y,z,c)), \ + (I[82] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[113] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[144] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[175] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[206] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[237] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[268] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[299] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[330] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[361] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[392] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[423] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[454] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[485] = (T)(img)(_n5##x,y,z,c)), \ + (I[516] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[547] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[578] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[609] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[640] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[671] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[702] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[733] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[764] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[795] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[826] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[857] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[888] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[919] = (T)(img)(_n5##x,_n14##y,z,c)), \ + (I[950] = (T)(img)(_n5##x,_n15##y,z,c)), \ + (I[21] = (T)(img)(_n6##x,_p15##y,z,c)), \ + (I[52] = (T)(img)(_n6##x,_p14##y,z,c)), \ + (I[83] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[114] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[145] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[176] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[207] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[238] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[269] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[300] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[331] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[362] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[393] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[424] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[455] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[486] = (T)(img)(_n6##x,y,z,c)), \ + (I[517] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[548] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[579] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[610] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[641] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[672] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[703] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[734] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[765] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[796] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[827] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[858] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[889] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[920] = (T)(img)(_n6##x,_n14##y,z,c)), \ + (I[951] = (T)(img)(_n6##x,_n15##y,z,c)), \ + (I[22] = (T)(img)(_n7##x,_p15##y,z,c)), \ + (I[53] = (T)(img)(_n7##x,_p14##y,z,c)), \ + (I[84] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[115] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[146] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[177] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[208] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[239] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[270] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[301] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[332] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[363] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[394] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[425] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[456] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[487] = (T)(img)(_n7##x,y,z,c)), \ + (I[518] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[549] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[580] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[611] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[642] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[673] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[704] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[735] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[766] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[797] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[828] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[859] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[890] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[921] = (T)(img)(_n7##x,_n14##y,z,c)), \ + (I[952] = (T)(img)(_n7##x,_n15##y,z,c)), \ + (I[23] = (T)(img)(_n8##x,_p15##y,z,c)), \ + (I[54] = (T)(img)(_n8##x,_p14##y,z,c)), \ + (I[85] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[116] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[147] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[178] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[209] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[240] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[271] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[302] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[333] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[364] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[395] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[426] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[457] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[488] = (T)(img)(_n8##x,y,z,c)), \ + (I[519] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[550] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[581] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[612] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[643] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[674] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[705] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[736] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[767] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[798] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[829] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[860] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[891] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[922] = (T)(img)(_n8##x,_n14##y,z,c)), \ + (I[953] = (T)(img)(_n8##x,_n15##y,z,c)), \ + (I[24] = (T)(img)(_n9##x,_p15##y,z,c)), \ + (I[55] = (T)(img)(_n9##x,_p14##y,z,c)), \ + (I[86] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[117] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[148] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[179] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[210] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[241] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[272] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[303] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[334] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[365] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[396] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[427] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[458] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[489] = (T)(img)(_n9##x,y,z,c)), \ + (I[520] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[551] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[582] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[613] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[644] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[675] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[706] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[737] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[768] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[799] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[830] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[861] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[892] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[923] = (T)(img)(_n9##x,_n14##y,z,c)), \ + (I[954] = (T)(img)(_n9##x,_n15##y,z,c)), \ + (I[25] = (T)(img)(_n10##x,_p15##y,z,c)), \ + (I[56] = (T)(img)(_n10##x,_p14##y,z,c)), \ + (I[87] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[118] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[149] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[180] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[211] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[242] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[273] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[304] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[335] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[366] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[397] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[428] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[459] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[490] = (T)(img)(_n10##x,y,z,c)), \ + (I[521] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[552] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[583] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[614] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[645] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[676] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[707] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[738] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[769] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[800] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[831] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[862] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[893] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[924] = (T)(img)(_n10##x,_n14##y,z,c)), \ + (I[955] = (T)(img)(_n10##x,_n15##y,z,c)), \ + (I[26] = (T)(img)(_n11##x,_p15##y,z,c)), \ + (I[57] = (T)(img)(_n11##x,_p14##y,z,c)), \ + (I[88] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[119] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[150] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[181] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[212] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[243] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[274] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[305] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[336] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[367] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[398] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[429] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[460] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[491] = (T)(img)(_n11##x,y,z,c)), \ + (I[522] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[553] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[584] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[615] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[646] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[677] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[708] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[739] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[770] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[801] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[832] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[863] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[894] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[925] = (T)(img)(_n11##x,_n14##y,z,c)), \ + (I[956] = (T)(img)(_n11##x,_n15##y,z,c)), \ + (I[27] = (T)(img)(_n12##x,_p15##y,z,c)), \ + (I[58] = (T)(img)(_n12##x,_p14##y,z,c)), \ + (I[89] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[120] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[151] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[182] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[213] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[244] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[275] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[306] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[337] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[368] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[399] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[430] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[461] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[492] = (T)(img)(_n12##x,y,z,c)), \ + (I[523] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[554] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[585] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[616] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[647] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[678] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[709] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[740] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[771] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[802] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[833] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[864] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[895] = (T)(img)(_n12##x,_n13##y,z,c)), \ + (I[926] = (T)(img)(_n12##x,_n14##y,z,c)), \ + (I[957] = (T)(img)(_n12##x,_n15##y,z,c)), \ + (I[28] = (T)(img)(_n13##x,_p15##y,z,c)), \ + (I[59] = (T)(img)(_n13##x,_p14##y,z,c)), \ + (I[90] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[121] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[152] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[183] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[214] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[245] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[276] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[307] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[338] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[369] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[400] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[431] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[462] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[493] = (T)(img)(_n13##x,y,z,c)), \ + (I[524] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[555] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[586] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[617] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[648] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[679] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[710] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[741] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[772] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[803] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[834] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[865] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[896] = (T)(img)(_n13##x,_n13##y,z,c)), \ + (I[927] = (T)(img)(_n13##x,_n14##y,z,c)), \ + (I[958] = (T)(img)(_n13##x,_n15##y,z,c)), \ + (I[29] = (T)(img)(_n14##x,_p15##y,z,c)), \ + (I[60] = (T)(img)(_n14##x,_p14##y,z,c)), \ + (I[91] = (T)(img)(_n14##x,_p13##y,z,c)), \ + (I[122] = (T)(img)(_n14##x,_p12##y,z,c)), \ + (I[153] = (T)(img)(_n14##x,_p11##y,z,c)), \ + (I[184] = (T)(img)(_n14##x,_p10##y,z,c)), \ + (I[215] = (T)(img)(_n14##x,_p9##y,z,c)), \ + (I[246] = (T)(img)(_n14##x,_p8##y,z,c)), \ + (I[277] = (T)(img)(_n14##x,_p7##y,z,c)), \ + (I[308] = (T)(img)(_n14##x,_p6##y,z,c)), \ + (I[339] = (T)(img)(_n14##x,_p5##y,z,c)), \ + (I[370] = (T)(img)(_n14##x,_p4##y,z,c)), \ + (I[401] = (T)(img)(_n14##x,_p3##y,z,c)), \ + (I[432] = (T)(img)(_n14##x,_p2##y,z,c)), \ + (I[463] = (T)(img)(_n14##x,_p1##y,z,c)), \ + (I[494] = (T)(img)(_n14##x,y,z,c)), \ + (I[525] = (T)(img)(_n14##x,_n1##y,z,c)), \ + (I[556] = (T)(img)(_n14##x,_n2##y,z,c)), \ + (I[587] = (T)(img)(_n14##x,_n3##y,z,c)), \ + (I[618] = (T)(img)(_n14##x,_n4##y,z,c)), \ + (I[649] = (T)(img)(_n14##x,_n5##y,z,c)), \ + (I[680] = (T)(img)(_n14##x,_n6##y,z,c)), \ + (I[711] = (T)(img)(_n14##x,_n7##y,z,c)), \ + (I[742] = (T)(img)(_n14##x,_n8##y,z,c)), \ + (I[773] = (T)(img)(_n14##x,_n9##y,z,c)), \ + (I[804] = (T)(img)(_n14##x,_n10##y,z,c)), \ + (I[835] = (T)(img)(_n14##x,_n11##y,z,c)), \ + (I[866] = (T)(img)(_n14##x,_n12##y,z,c)), \ + (I[897] = (T)(img)(_n14##x,_n13##y,z,c)), \ + (I[928] = (T)(img)(_n14##x,_n14##y,z,c)), \ + (I[959] = (T)(img)(_n14##x,_n15##y,z,c)), \ + 15>=((img)._width)?(img).width() - 1:15); \ + (_n15##x<(img).width() && ( \ + (I[30] = (T)(img)(_n15##x,_p15##y,z,c)), \ + (I[61] = (T)(img)(_n15##x,_p14##y,z,c)), \ + (I[92] = (T)(img)(_n15##x,_p13##y,z,c)), \ + (I[123] = (T)(img)(_n15##x,_p12##y,z,c)), \ + (I[154] = (T)(img)(_n15##x,_p11##y,z,c)), \ + (I[185] = (T)(img)(_n15##x,_p10##y,z,c)), \ + (I[216] = (T)(img)(_n15##x,_p9##y,z,c)), \ + (I[247] = (T)(img)(_n15##x,_p8##y,z,c)), \ + (I[278] = (T)(img)(_n15##x,_p7##y,z,c)), \ + (I[309] = (T)(img)(_n15##x,_p6##y,z,c)), \ + (I[340] = (T)(img)(_n15##x,_p5##y,z,c)), \ + (I[371] = (T)(img)(_n15##x,_p4##y,z,c)), \ + (I[402] = (T)(img)(_n15##x,_p3##y,z,c)), \ + (I[433] = (T)(img)(_n15##x,_p2##y,z,c)), \ + (I[464] = (T)(img)(_n15##x,_p1##y,z,c)), \ + (I[495] = (T)(img)(_n15##x,y,z,c)), \ + (I[526] = (T)(img)(_n15##x,_n1##y,z,c)), \ + (I[557] = (T)(img)(_n15##x,_n2##y,z,c)), \ + (I[588] = (T)(img)(_n15##x,_n3##y,z,c)), \ + (I[619] = (T)(img)(_n15##x,_n4##y,z,c)), \ + (I[650] = (T)(img)(_n15##x,_n5##y,z,c)), \ + (I[681] = (T)(img)(_n15##x,_n6##y,z,c)), \ + (I[712] = (T)(img)(_n15##x,_n7##y,z,c)), \ + (I[743] = (T)(img)(_n15##x,_n8##y,z,c)), \ + (I[774] = (T)(img)(_n15##x,_n9##y,z,c)), \ + (I[805] = (T)(img)(_n15##x,_n10##y,z,c)), \ + (I[836] = (T)(img)(_n15##x,_n11##y,z,c)), \ + (I[867] = (T)(img)(_n15##x,_n12##y,z,c)), \ + (I[898] = (T)(img)(_n15##x,_n13##y,z,c)), \ + (I[929] = (T)(img)(_n15##x,_n14##y,z,c)), \ + (I[960] = (T)(img)(_n15##x,_n15##y,z,c)),1)) || \ + _n14##x==--_n15##x || _n13##x==--_n14##x || _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n15##x = _n14##x = _n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], \ + I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], \ + I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], \ + I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], \ + I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], \ + I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], \ + I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], \ + I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], \ + I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], \ + I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], \ + I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], \ + I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], \ + I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], \ + I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], \ + I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], \ + I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], \ + I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], \ + I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], \ + I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], \ + I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], \ + I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], I[649] = I[650], \ + I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], I[671] = I[672], I[672] = I[673], I[673] = I[674], I[674] = I[675], I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], \ + I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], I[689] = I[690], I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], I[695] = I[696], I[696] = I[697], I[697] = I[698], I[698] = I[699], I[699] = I[700], I[700] = I[701], I[701] = I[702], I[702] = I[703], I[703] = I[704], I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], \ + I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], I[719] = I[720], I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], I[724] = I[725], I[725] = I[726], I[726] = I[727], I[727] = I[728], I[728] = I[729], I[729] = I[730], I[730] = I[731], I[731] = I[732], I[732] = I[733], I[733] = I[734], I[734] = I[735], I[735] = I[736], I[736] = I[737], I[737] = I[738], I[738] = I[739], I[739] = I[740], I[740] = I[741], I[741] = I[742], I[742] = I[743], \ + I[744] = I[745], I[745] = I[746], I[746] = I[747], I[747] = I[748], I[748] = I[749], I[749] = I[750], I[750] = I[751], I[751] = I[752], I[752] = I[753], I[753] = I[754], I[754] = I[755], I[755] = I[756], I[756] = I[757], I[757] = I[758], I[758] = I[759], I[759] = I[760], I[760] = I[761], I[761] = I[762], I[762] = I[763], I[763] = I[764], I[764] = I[765], I[765] = I[766], I[766] = I[767], I[767] = I[768], I[768] = I[769], I[769] = I[770], I[770] = I[771], I[771] = I[772], I[772] = I[773], I[773] = I[774], \ + I[775] = I[776], I[776] = I[777], I[777] = I[778], I[778] = I[779], I[779] = I[780], I[780] = I[781], I[781] = I[782], I[782] = I[783], I[783] = I[784], I[784] = I[785], I[785] = I[786], I[786] = I[787], I[787] = I[788], I[788] = I[789], I[789] = I[790], I[790] = I[791], I[791] = I[792], I[792] = I[793], I[793] = I[794], I[794] = I[795], I[795] = I[796], I[796] = I[797], I[797] = I[798], I[798] = I[799], I[799] = I[800], I[800] = I[801], I[801] = I[802], I[802] = I[803], I[803] = I[804], I[804] = I[805], \ + I[806] = I[807], I[807] = I[808], I[808] = I[809], I[809] = I[810], I[810] = I[811], I[811] = I[812], I[812] = I[813], I[813] = I[814], I[814] = I[815], I[815] = I[816], I[816] = I[817], I[817] = I[818], I[818] = I[819], I[819] = I[820], I[820] = I[821], I[821] = I[822], I[822] = I[823], I[823] = I[824], I[824] = I[825], I[825] = I[826], I[826] = I[827], I[827] = I[828], I[828] = I[829], I[829] = I[830], I[830] = I[831], I[831] = I[832], I[832] = I[833], I[833] = I[834], I[834] = I[835], I[835] = I[836], \ + I[837] = I[838], I[838] = I[839], I[839] = I[840], I[840] = I[841], I[841] = I[842], I[842] = I[843], I[843] = I[844], I[844] = I[845], I[845] = I[846], I[846] = I[847], I[847] = I[848], I[848] = I[849], I[849] = I[850], I[850] = I[851], I[851] = I[852], I[852] = I[853], I[853] = I[854], I[854] = I[855], I[855] = I[856], I[856] = I[857], I[857] = I[858], I[858] = I[859], I[859] = I[860], I[860] = I[861], I[861] = I[862], I[862] = I[863], I[863] = I[864], I[864] = I[865], I[865] = I[866], I[866] = I[867], \ + I[868] = I[869], I[869] = I[870], I[870] = I[871], I[871] = I[872], I[872] = I[873], I[873] = I[874], I[874] = I[875], I[875] = I[876], I[876] = I[877], I[877] = I[878], I[878] = I[879], I[879] = I[880], I[880] = I[881], I[881] = I[882], I[882] = I[883], I[883] = I[884], I[884] = I[885], I[885] = I[886], I[886] = I[887], I[887] = I[888], I[888] = I[889], I[889] = I[890], I[890] = I[891], I[891] = I[892], I[892] = I[893], I[893] = I[894], I[894] = I[895], I[895] = I[896], I[896] = I[897], I[897] = I[898], \ + I[899] = I[900], I[900] = I[901], I[901] = I[902], I[902] = I[903], I[903] = I[904], I[904] = I[905], I[905] = I[906], I[906] = I[907], I[907] = I[908], I[908] = I[909], I[909] = I[910], I[910] = I[911], I[911] = I[912], I[912] = I[913], I[913] = I[914], I[914] = I[915], I[915] = I[916], I[916] = I[917], I[917] = I[918], I[918] = I[919], I[919] = I[920], I[920] = I[921], I[921] = I[922], I[922] = I[923], I[923] = I[924], I[924] = I[925], I[925] = I[926], I[926] = I[927], I[927] = I[928], I[928] = I[929], \ + I[930] = I[931], I[931] = I[932], I[932] = I[933], I[933] = I[934], I[934] = I[935], I[935] = I[936], I[936] = I[937], I[937] = I[938], I[938] = I[939], I[939] = I[940], I[940] = I[941], I[941] = I[942], I[942] = I[943], I[943] = I[944], I[944] = I[945], I[945] = I[946], I[946] = I[947], I[947] = I[948], I[948] = I[949], I[949] = I[950], I[950] = I[951], I[951] = I[952], I[952] = I[953], I[953] = I[954], I[954] = I[955], I[955] = I[956], I[956] = I[957], I[957] = I[958], I[958] = I[959], I[959] = I[960], \ + _p15##x = _p14##x, _p14##x = _p13##x, _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x, ++_n14##x, ++_n15##x) + +#define cimg_for_in31x31(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in31((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p15##x = x - 15<0?0:x - 15, \ + _p14##x = x - 14<0?0:x - 14, \ + _p13##x = x - 13<0?0:x - 13, \ + _p12##x = x - 12<0?0:x - 12, \ + _p11##x = x - 11<0?0:x - 11, \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = x + 11>=(img).width()?(img).width() - 1:x + 11, \ + _n12##x = x + 12>=(img).width()?(img).width() - 1:x + 12, \ + _n13##x = x + 13>=(img).width()?(img).width() - 1:x + 13, \ + _n14##x = x + 14>=(img).width()?(img).width() - 1:x + 14, \ + _n15##x = (int)( \ + (I[0] = (T)(img)(_p15##x,_p15##y,z,c)), \ + (I[31] = (T)(img)(_p15##x,_p14##y,z,c)), \ + (I[62] = (T)(img)(_p15##x,_p13##y,z,c)), \ + (I[93] = (T)(img)(_p15##x,_p12##y,z,c)), \ + (I[124] = (T)(img)(_p15##x,_p11##y,z,c)), \ + (I[155] = (T)(img)(_p15##x,_p10##y,z,c)), \ + (I[186] = (T)(img)(_p15##x,_p9##y,z,c)), \ + (I[217] = (T)(img)(_p15##x,_p8##y,z,c)), \ + (I[248] = (T)(img)(_p15##x,_p7##y,z,c)), \ + (I[279] = (T)(img)(_p15##x,_p6##y,z,c)), \ + (I[310] = (T)(img)(_p15##x,_p5##y,z,c)), \ + (I[341] = (T)(img)(_p15##x,_p4##y,z,c)), \ + (I[372] = (T)(img)(_p15##x,_p3##y,z,c)), \ + (I[403] = (T)(img)(_p15##x,_p2##y,z,c)), \ + (I[434] = (T)(img)(_p15##x,_p1##y,z,c)), \ + (I[465] = (T)(img)(_p15##x,y,z,c)), \ + (I[496] = (T)(img)(_p15##x,_n1##y,z,c)), \ + (I[527] = (T)(img)(_p15##x,_n2##y,z,c)), \ + (I[558] = (T)(img)(_p15##x,_n3##y,z,c)), \ + (I[589] = (T)(img)(_p15##x,_n4##y,z,c)), \ + (I[620] = (T)(img)(_p15##x,_n5##y,z,c)), \ + (I[651] = (T)(img)(_p15##x,_n6##y,z,c)), \ + (I[682] = (T)(img)(_p15##x,_n7##y,z,c)), \ + (I[713] = (T)(img)(_p15##x,_n8##y,z,c)), \ + (I[744] = (T)(img)(_p15##x,_n9##y,z,c)), \ + (I[775] = (T)(img)(_p15##x,_n10##y,z,c)), \ + (I[806] = (T)(img)(_p15##x,_n11##y,z,c)), \ + (I[837] = (T)(img)(_p15##x,_n12##y,z,c)), \ + (I[868] = (T)(img)(_p15##x,_n13##y,z,c)), \ + (I[899] = (T)(img)(_p15##x,_n14##y,z,c)), \ + (I[930] = (T)(img)(_p15##x,_n15##y,z,c)), \ + (I[1] = (T)(img)(_p14##x,_p15##y,z,c)), \ + (I[32] = (T)(img)(_p14##x,_p14##y,z,c)), \ + (I[63] = (T)(img)(_p14##x,_p13##y,z,c)), \ + (I[94] = (T)(img)(_p14##x,_p12##y,z,c)), \ + (I[125] = (T)(img)(_p14##x,_p11##y,z,c)), \ + (I[156] = (T)(img)(_p14##x,_p10##y,z,c)), \ + (I[187] = (T)(img)(_p14##x,_p9##y,z,c)), \ + (I[218] = (T)(img)(_p14##x,_p8##y,z,c)), \ + (I[249] = (T)(img)(_p14##x,_p7##y,z,c)), \ + (I[280] = (T)(img)(_p14##x,_p6##y,z,c)), \ + (I[311] = (T)(img)(_p14##x,_p5##y,z,c)), \ + (I[342] = (T)(img)(_p14##x,_p4##y,z,c)), \ + (I[373] = (T)(img)(_p14##x,_p3##y,z,c)), \ + (I[404] = (T)(img)(_p14##x,_p2##y,z,c)), \ + (I[435] = (T)(img)(_p14##x,_p1##y,z,c)), \ + (I[466] = (T)(img)(_p14##x,y,z,c)), \ + (I[497] = (T)(img)(_p14##x,_n1##y,z,c)), \ + (I[528] = (T)(img)(_p14##x,_n2##y,z,c)), \ + (I[559] = (T)(img)(_p14##x,_n3##y,z,c)), \ + (I[590] = (T)(img)(_p14##x,_n4##y,z,c)), \ + (I[621] = (T)(img)(_p14##x,_n5##y,z,c)), \ + (I[652] = (T)(img)(_p14##x,_n6##y,z,c)), \ + (I[683] = (T)(img)(_p14##x,_n7##y,z,c)), \ + (I[714] = (T)(img)(_p14##x,_n8##y,z,c)), \ + (I[745] = (T)(img)(_p14##x,_n9##y,z,c)), \ + (I[776] = (T)(img)(_p14##x,_n10##y,z,c)), \ + (I[807] = (T)(img)(_p14##x,_n11##y,z,c)), \ + (I[838] = (T)(img)(_p14##x,_n12##y,z,c)), \ + (I[869] = (T)(img)(_p14##x,_n13##y,z,c)), \ + (I[900] = (T)(img)(_p14##x,_n14##y,z,c)), \ + (I[931] = (T)(img)(_p14##x,_n15##y,z,c)), \ + (I[2] = (T)(img)(_p13##x,_p15##y,z,c)), \ + (I[33] = (T)(img)(_p13##x,_p14##y,z,c)), \ + (I[64] = (T)(img)(_p13##x,_p13##y,z,c)), \ + (I[95] = (T)(img)(_p13##x,_p12##y,z,c)), \ + (I[126] = (T)(img)(_p13##x,_p11##y,z,c)), \ + (I[157] = (T)(img)(_p13##x,_p10##y,z,c)), \ + (I[188] = (T)(img)(_p13##x,_p9##y,z,c)), \ + (I[219] = (T)(img)(_p13##x,_p8##y,z,c)), \ + (I[250] = (T)(img)(_p13##x,_p7##y,z,c)), \ + (I[281] = (T)(img)(_p13##x,_p6##y,z,c)), \ + (I[312] = (T)(img)(_p13##x,_p5##y,z,c)), \ + (I[343] = (T)(img)(_p13##x,_p4##y,z,c)), \ + (I[374] = (T)(img)(_p13##x,_p3##y,z,c)), \ + (I[405] = (T)(img)(_p13##x,_p2##y,z,c)), \ + (I[436] = (T)(img)(_p13##x,_p1##y,z,c)), \ + (I[467] = (T)(img)(_p13##x,y,z,c)), \ + (I[498] = (T)(img)(_p13##x,_n1##y,z,c)), \ + (I[529] = (T)(img)(_p13##x,_n2##y,z,c)), \ + (I[560] = (T)(img)(_p13##x,_n3##y,z,c)), \ + (I[591] = (T)(img)(_p13##x,_n4##y,z,c)), \ + (I[622] = (T)(img)(_p13##x,_n5##y,z,c)), \ + (I[653] = (T)(img)(_p13##x,_n6##y,z,c)), \ + (I[684] = (T)(img)(_p13##x,_n7##y,z,c)), \ + (I[715] = (T)(img)(_p13##x,_n8##y,z,c)), \ + (I[746] = (T)(img)(_p13##x,_n9##y,z,c)), \ + (I[777] = (T)(img)(_p13##x,_n10##y,z,c)), \ + (I[808] = (T)(img)(_p13##x,_n11##y,z,c)), \ + (I[839] = (T)(img)(_p13##x,_n12##y,z,c)), \ + (I[870] = (T)(img)(_p13##x,_n13##y,z,c)), \ + (I[901] = (T)(img)(_p13##x,_n14##y,z,c)), \ + (I[932] = (T)(img)(_p13##x,_n15##y,z,c)), \ + (I[3] = (T)(img)(_p12##x,_p15##y,z,c)), \ + (I[34] = (T)(img)(_p12##x,_p14##y,z,c)), \ + (I[65] = (T)(img)(_p12##x,_p13##y,z,c)), \ + (I[96] = (T)(img)(_p12##x,_p12##y,z,c)), \ + (I[127] = (T)(img)(_p12##x,_p11##y,z,c)), \ + (I[158] = (T)(img)(_p12##x,_p10##y,z,c)), \ + (I[189] = (T)(img)(_p12##x,_p9##y,z,c)), \ + (I[220] = (T)(img)(_p12##x,_p8##y,z,c)), \ + (I[251] = (T)(img)(_p12##x,_p7##y,z,c)), \ + (I[282] = (T)(img)(_p12##x,_p6##y,z,c)), \ + (I[313] = (T)(img)(_p12##x,_p5##y,z,c)), \ + (I[344] = (T)(img)(_p12##x,_p4##y,z,c)), \ + (I[375] = (T)(img)(_p12##x,_p3##y,z,c)), \ + (I[406] = (T)(img)(_p12##x,_p2##y,z,c)), \ + (I[437] = (T)(img)(_p12##x,_p1##y,z,c)), \ + (I[468] = (T)(img)(_p12##x,y,z,c)), \ + (I[499] = (T)(img)(_p12##x,_n1##y,z,c)), \ + (I[530] = (T)(img)(_p12##x,_n2##y,z,c)), \ + (I[561] = (T)(img)(_p12##x,_n3##y,z,c)), \ + (I[592] = (T)(img)(_p12##x,_n4##y,z,c)), \ + (I[623] = (T)(img)(_p12##x,_n5##y,z,c)), \ + (I[654] = (T)(img)(_p12##x,_n6##y,z,c)), \ + (I[685] = (T)(img)(_p12##x,_n7##y,z,c)), \ + (I[716] = (T)(img)(_p12##x,_n8##y,z,c)), \ + (I[747] = (T)(img)(_p12##x,_n9##y,z,c)), \ + (I[778] = (T)(img)(_p12##x,_n10##y,z,c)), \ + (I[809] = (T)(img)(_p12##x,_n11##y,z,c)), \ + (I[840] = (T)(img)(_p12##x,_n12##y,z,c)), \ + (I[871] = (T)(img)(_p12##x,_n13##y,z,c)), \ + (I[902] = (T)(img)(_p12##x,_n14##y,z,c)), \ + (I[933] = (T)(img)(_p12##x,_n15##y,z,c)), \ + (I[4] = (T)(img)(_p11##x,_p15##y,z,c)), \ + (I[35] = (T)(img)(_p11##x,_p14##y,z,c)), \ + (I[66] = (T)(img)(_p11##x,_p13##y,z,c)), \ + (I[97] = (T)(img)(_p11##x,_p12##y,z,c)), \ + (I[128] = (T)(img)(_p11##x,_p11##y,z,c)), \ + (I[159] = (T)(img)(_p11##x,_p10##y,z,c)), \ + (I[190] = (T)(img)(_p11##x,_p9##y,z,c)), \ + (I[221] = (T)(img)(_p11##x,_p8##y,z,c)), \ + (I[252] = (T)(img)(_p11##x,_p7##y,z,c)), \ + (I[283] = (T)(img)(_p11##x,_p6##y,z,c)), \ + (I[314] = (T)(img)(_p11##x,_p5##y,z,c)), \ + (I[345] = (T)(img)(_p11##x,_p4##y,z,c)), \ + (I[376] = (T)(img)(_p11##x,_p3##y,z,c)), \ + (I[407] = (T)(img)(_p11##x,_p2##y,z,c)), \ + (I[438] = (T)(img)(_p11##x,_p1##y,z,c)), \ + (I[469] = (T)(img)(_p11##x,y,z,c)), \ + (I[500] = (T)(img)(_p11##x,_n1##y,z,c)), \ + (I[531] = (T)(img)(_p11##x,_n2##y,z,c)), \ + (I[562] = (T)(img)(_p11##x,_n3##y,z,c)), \ + (I[593] = (T)(img)(_p11##x,_n4##y,z,c)), \ + (I[624] = (T)(img)(_p11##x,_n5##y,z,c)), \ + (I[655] = (T)(img)(_p11##x,_n6##y,z,c)), \ + (I[686] = (T)(img)(_p11##x,_n7##y,z,c)), \ + (I[717] = (T)(img)(_p11##x,_n8##y,z,c)), \ + (I[748] = (T)(img)(_p11##x,_n9##y,z,c)), \ + (I[779] = (T)(img)(_p11##x,_n10##y,z,c)), \ + (I[810] = (T)(img)(_p11##x,_n11##y,z,c)), \ + (I[841] = (T)(img)(_p11##x,_n12##y,z,c)), \ + (I[872] = (T)(img)(_p11##x,_n13##y,z,c)), \ + (I[903] = (T)(img)(_p11##x,_n14##y,z,c)), \ + (I[934] = (T)(img)(_p11##x,_n15##y,z,c)), \ + (I[5] = (T)(img)(_p10##x,_p15##y,z,c)), \ + (I[36] = (T)(img)(_p10##x,_p14##y,z,c)), \ + (I[67] = (T)(img)(_p10##x,_p13##y,z,c)), \ + (I[98] = (T)(img)(_p10##x,_p12##y,z,c)), \ + (I[129] = (T)(img)(_p10##x,_p11##y,z,c)), \ + (I[160] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[191] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[222] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[253] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[284] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[315] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[346] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[377] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[408] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[439] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[470] = (T)(img)(_p10##x,y,z,c)), \ + (I[501] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[532] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[563] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[594] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[625] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[656] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[687] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[718] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[749] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[780] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[811] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[842] = (T)(img)(_p10##x,_n12##y,z,c)), \ + (I[873] = (T)(img)(_p10##x,_n13##y,z,c)), \ + (I[904] = (T)(img)(_p10##x,_n14##y,z,c)), \ + (I[935] = (T)(img)(_p10##x,_n15##y,z,c)), \ + (I[6] = (T)(img)(_p9##x,_p15##y,z,c)), \ + (I[37] = (T)(img)(_p9##x,_p14##y,z,c)), \ + (I[68] = (T)(img)(_p9##x,_p13##y,z,c)), \ + (I[99] = (T)(img)(_p9##x,_p12##y,z,c)), \ + (I[130] = (T)(img)(_p9##x,_p11##y,z,c)), \ + (I[161] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[192] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[223] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[254] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[285] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[316] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[347] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[378] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[409] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[440] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[471] = (T)(img)(_p9##x,y,z,c)), \ + (I[502] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[533] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[564] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[595] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[626] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[657] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[688] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[719] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[750] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[781] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[812] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[843] = (T)(img)(_p9##x,_n12##y,z,c)), \ + (I[874] = (T)(img)(_p9##x,_n13##y,z,c)), \ + (I[905] = (T)(img)(_p9##x,_n14##y,z,c)), \ + (I[936] = (T)(img)(_p9##x,_n15##y,z,c)), \ + (I[7] = (T)(img)(_p8##x,_p15##y,z,c)), \ + (I[38] = (T)(img)(_p8##x,_p14##y,z,c)), \ + (I[69] = (T)(img)(_p8##x,_p13##y,z,c)), \ + (I[100] = (T)(img)(_p8##x,_p12##y,z,c)), \ + (I[131] = (T)(img)(_p8##x,_p11##y,z,c)), \ + (I[162] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[193] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[224] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[255] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[286] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[317] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[348] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[379] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[410] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[441] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[472] = (T)(img)(_p8##x,y,z,c)), \ + (I[503] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[534] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[565] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[596] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[627] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[658] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[689] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[720] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[751] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[782] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[813] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[844] = (T)(img)(_p8##x,_n12##y,z,c)), \ + (I[875] = (T)(img)(_p8##x,_n13##y,z,c)), \ + (I[906] = (T)(img)(_p8##x,_n14##y,z,c)), \ + (I[937] = (T)(img)(_p8##x,_n15##y,z,c)), \ + (I[8] = (T)(img)(_p7##x,_p15##y,z,c)), \ + (I[39] = (T)(img)(_p7##x,_p14##y,z,c)), \ + (I[70] = (T)(img)(_p7##x,_p13##y,z,c)), \ + (I[101] = (T)(img)(_p7##x,_p12##y,z,c)), \ + (I[132] = (T)(img)(_p7##x,_p11##y,z,c)), \ + (I[163] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[194] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[225] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[256] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[287] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[318] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[349] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[380] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[411] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[442] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[473] = (T)(img)(_p7##x,y,z,c)), \ + (I[504] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[535] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[566] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[597] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[628] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[659] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[690] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[721] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[752] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[783] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[814] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[845] = (T)(img)(_p7##x,_n12##y,z,c)), \ + (I[876] = (T)(img)(_p7##x,_n13##y,z,c)), \ + (I[907] = (T)(img)(_p7##x,_n14##y,z,c)), \ + (I[938] = (T)(img)(_p7##x,_n15##y,z,c)), \ + (I[9] = (T)(img)(_p6##x,_p15##y,z,c)), \ + (I[40] = (T)(img)(_p6##x,_p14##y,z,c)), \ + (I[71] = (T)(img)(_p6##x,_p13##y,z,c)), \ + (I[102] = (T)(img)(_p6##x,_p12##y,z,c)), \ + (I[133] = (T)(img)(_p6##x,_p11##y,z,c)), \ + (I[164] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[195] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[226] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[257] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[288] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[319] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[350] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[381] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[412] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[443] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[474] = (T)(img)(_p6##x,y,z,c)), \ + (I[505] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[536] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[567] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[598] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[629] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[660] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[691] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[722] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[753] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[784] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[815] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[846] = (T)(img)(_p6##x,_n12##y,z,c)), \ + (I[877] = (T)(img)(_p6##x,_n13##y,z,c)), \ + (I[908] = (T)(img)(_p6##x,_n14##y,z,c)), \ + (I[939] = (T)(img)(_p6##x,_n15##y,z,c)), \ + (I[10] = (T)(img)(_p5##x,_p15##y,z,c)), \ + (I[41] = (T)(img)(_p5##x,_p14##y,z,c)), \ + (I[72] = (T)(img)(_p5##x,_p13##y,z,c)), \ + (I[103] = (T)(img)(_p5##x,_p12##y,z,c)), \ + (I[134] = (T)(img)(_p5##x,_p11##y,z,c)), \ + (I[165] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[196] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[227] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[258] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[289] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[320] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[351] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[382] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[413] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[444] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[475] = (T)(img)(_p5##x,y,z,c)), \ + (I[506] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[537] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[568] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[599] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[630] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[661] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[692] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[723] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[754] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[785] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[816] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[847] = (T)(img)(_p5##x,_n12##y,z,c)), \ + (I[878] = (T)(img)(_p5##x,_n13##y,z,c)), \ + (I[909] = (T)(img)(_p5##x,_n14##y,z,c)), \ + (I[940] = (T)(img)(_p5##x,_n15##y,z,c)), \ + (I[11] = (T)(img)(_p4##x,_p15##y,z,c)), \ + (I[42] = (T)(img)(_p4##x,_p14##y,z,c)), \ + (I[73] = (T)(img)(_p4##x,_p13##y,z,c)), \ + (I[104] = (T)(img)(_p4##x,_p12##y,z,c)), \ + (I[135] = (T)(img)(_p4##x,_p11##y,z,c)), \ + (I[166] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[197] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[228] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[259] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[290] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[321] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[352] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[383] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[414] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[445] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[476] = (T)(img)(_p4##x,y,z,c)), \ + (I[507] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[538] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[569] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[600] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[631] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[662] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[693] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[724] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[755] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[786] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[817] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[848] = (T)(img)(_p4##x,_n12##y,z,c)), \ + (I[879] = (T)(img)(_p4##x,_n13##y,z,c)), \ + (I[910] = (T)(img)(_p4##x,_n14##y,z,c)), \ + (I[941] = (T)(img)(_p4##x,_n15##y,z,c)), \ + (I[12] = (T)(img)(_p3##x,_p15##y,z,c)), \ + (I[43] = (T)(img)(_p3##x,_p14##y,z,c)), \ + (I[74] = (T)(img)(_p3##x,_p13##y,z,c)), \ + (I[105] = (T)(img)(_p3##x,_p12##y,z,c)), \ + (I[136] = (T)(img)(_p3##x,_p11##y,z,c)), \ + (I[167] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[198] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[229] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[260] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[291] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[322] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[353] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[384] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[415] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[446] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[477] = (T)(img)(_p3##x,y,z,c)), \ + (I[508] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[539] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[570] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[601] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[632] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[663] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[694] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[725] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[756] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[787] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[818] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[849] = (T)(img)(_p3##x,_n12##y,z,c)), \ + (I[880] = (T)(img)(_p3##x,_n13##y,z,c)), \ + (I[911] = (T)(img)(_p3##x,_n14##y,z,c)), \ + (I[942] = (T)(img)(_p3##x,_n15##y,z,c)), \ + (I[13] = (T)(img)(_p2##x,_p15##y,z,c)), \ + (I[44] = (T)(img)(_p2##x,_p14##y,z,c)), \ + (I[75] = (T)(img)(_p2##x,_p13##y,z,c)), \ + (I[106] = (T)(img)(_p2##x,_p12##y,z,c)), \ + (I[137] = (T)(img)(_p2##x,_p11##y,z,c)), \ + (I[168] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[199] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[230] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[261] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[292] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[323] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[354] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[385] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[416] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[447] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[478] = (T)(img)(_p2##x,y,z,c)), \ + (I[509] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[540] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[571] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[602] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[633] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[664] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[695] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[726] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[757] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[788] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[819] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[850] = (T)(img)(_p2##x,_n12##y,z,c)), \ + (I[881] = (T)(img)(_p2##x,_n13##y,z,c)), \ + (I[912] = (T)(img)(_p2##x,_n14##y,z,c)), \ + (I[943] = (T)(img)(_p2##x,_n15##y,z,c)), \ + (I[14] = (T)(img)(_p1##x,_p15##y,z,c)), \ + (I[45] = (T)(img)(_p1##x,_p14##y,z,c)), \ + (I[76] = (T)(img)(_p1##x,_p13##y,z,c)), \ + (I[107] = (T)(img)(_p1##x,_p12##y,z,c)), \ + (I[138] = (T)(img)(_p1##x,_p11##y,z,c)), \ + (I[169] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[200] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[231] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[262] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[293] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[324] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[355] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[386] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[417] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[448] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[479] = (T)(img)(_p1##x,y,z,c)), \ + (I[510] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[541] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[572] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[603] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[634] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[665] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[696] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[727] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[758] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[789] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[820] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[851] = (T)(img)(_p1##x,_n12##y,z,c)), \ + (I[882] = (T)(img)(_p1##x,_n13##y,z,c)), \ + (I[913] = (T)(img)(_p1##x,_n14##y,z,c)), \ + (I[944] = (T)(img)(_p1##x,_n15##y,z,c)), \ + (I[15] = (T)(img)(x,_p15##y,z,c)), \ + (I[46] = (T)(img)(x,_p14##y,z,c)), \ + (I[77] = (T)(img)(x,_p13##y,z,c)), \ + (I[108] = (T)(img)(x,_p12##y,z,c)), \ + (I[139] = (T)(img)(x,_p11##y,z,c)), \ + (I[170] = (T)(img)(x,_p10##y,z,c)), \ + (I[201] = (T)(img)(x,_p9##y,z,c)), \ + (I[232] = (T)(img)(x,_p8##y,z,c)), \ + (I[263] = (T)(img)(x,_p7##y,z,c)), \ + (I[294] = (T)(img)(x,_p6##y,z,c)), \ + (I[325] = (T)(img)(x,_p5##y,z,c)), \ + (I[356] = (T)(img)(x,_p4##y,z,c)), \ + (I[387] = (T)(img)(x,_p3##y,z,c)), \ + (I[418] = (T)(img)(x,_p2##y,z,c)), \ + (I[449] = (T)(img)(x,_p1##y,z,c)), \ + (I[480] = (T)(img)(x,y,z,c)), \ + (I[511] = (T)(img)(x,_n1##y,z,c)), \ + (I[542] = (T)(img)(x,_n2##y,z,c)), \ + (I[573] = (T)(img)(x,_n3##y,z,c)), \ + (I[604] = (T)(img)(x,_n4##y,z,c)), \ + (I[635] = (T)(img)(x,_n5##y,z,c)), \ + (I[666] = (T)(img)(x,_n6##y,z,c)), \ + (I[697] = (T)(img)(x,_n7##y,z,c)), \ + (I[728] = (T)(img)(x,_n8##y,z,c)), \ + (I[759] = (T)(img)(x,_n9##y,z,c)), \ + (I[790] = (T)(img)(x,_n10##y,z,c)), \ + (I[821] = (T)(img)(x,_n11##y,z,c)), \ + (I[852] = (T)(img)(x,_n12##y,z,c)), \ + (I[883] = (T)(img)(x,_n13##y,z,c)), \ + (I[914] = (T)(img)(x,_n14##y,z,c)), \ + (I[945] = (T)(img)(x,_n15##y,z,c)), \ + (I[16] = (T)(img)(_n1##x,_p15##y,z,c)), \ + (I[47] = (T)(img)(_n1##x,_p14##y,z,c)), \ + (I[78] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[109] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[140] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[171] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[202] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[233] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[264] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[295] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[326] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[357] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[388] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[419] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[450] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[481] = (T)(img)(_n1##x,y,z,c)), \ + (I[512] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[543] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[574] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[605] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[636] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[667] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[698] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[729] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[760] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[791] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[822] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[853] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[884] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[915] = (T)(img)(_n1##x,_n14##y,z,c)), \ + (I[946] = (T)(img)(_n1##x,_n15##y,z,c)), \ + (I[17] = (T)(img)(_n2##x,_p15##y,z,c)), \ + (I[48] = (T)(img)(_n2##x,_p14##y,z,c)), \ + (I[79] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[110] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[141] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[172] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[203] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[234] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[265] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[296] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[327] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[358] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[389] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[420] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[451] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[482] = (T)(img)(_n2##x,y,z,c)), \ + (I[513] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[544] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[575] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[606] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[637] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[668] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[699] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[730] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[761] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[792] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[823] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[854] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[885] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[916] = (T)(img)(_n2##x,_n14##y,z,c)), \ + (I[947] = (T)(img)(_n2##x,_n15##y,z,c)), \ + (I[18] = (T)(img)(_n3##x,_p15##y,z,c)), \ + (I[49] = (T)(img)(_n3##x,_p14##y,z,c)), \ + (I[80] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[111] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[142] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[173] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[204] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[235] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[266] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[297] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[328] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[359] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[390] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[421] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[452] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[483] = (T)(img)(_n3##x,y,z,c)), \ + (I[514] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[545] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[576] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[607] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[638] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[669] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[700] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[731] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[762] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[793] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[824] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[855] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[886] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[917] = (T)(img)(_n3##x,_n14##y,z,c)), \ + (I[948] = (T)(img)(_n3##x,_n15##y,z,c)), \ + (I[19] = (T)(img)(_n4##x,_p15##y,z,c)), \ + (I[50] = (T)(img)(_n4##x,_p14##y,z,c)), \ + (I[81] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[112] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[143] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[174] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[205] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[236] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[267] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[298] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[329] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[360] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[391] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[422] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[453] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[484] = (T)(img)(_n4##x,y,z,c)), \ + (I[515] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[546] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[577] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[608] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[639] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[670] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[701] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[732] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[763] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[794] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[825] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[856] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[887] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[918] = (T)(img)(_n4##x,_n14##y,z,c)), \ + (I[949] = (T)(img)(_n4##x,_n15##y,z,c)), \ + (I[20] = (T)(img)(_n5##x,_p15##y,z,c)), \ + (I[51] = (T)(img)(_n5##x,_p14##y,z,c)), \ + (I[82] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[113] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[144] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[175] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[206] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[237] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[268] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[299] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[330] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[361] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[392] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[423] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[454] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[485] = (T)(img)(_n5##x,y,z,c)), \ + (I[516] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[547] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[578] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[609] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[640] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[671] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[702] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[733] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[764] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[795] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[826] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[857] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[888] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[919] = (T)(img)(_n5##x,_n14##y,z,c)), \ + (I[950] = (T)(img)(_n5##x,_n15##y,z,c)), \ + (I[21] = (T)(img)(_n6##x,_p15##y,z,c)), \ + (I[52] = (T)(img)(_n6##x,_p14##y,z,c)), \ + (I[83] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[114] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[145] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[176] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[207] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[238] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[269] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[300] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[331] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[362] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[393] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[424] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[455] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[486] = (T)(img)(_n6##x,y,z,c)), \ + (I[517] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[548] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[579] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[610] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[641] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[672] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[703] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[734] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[765] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[796] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[827] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[858] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[889] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[920] = (T)(img)(_n6##x,_n14##y,z,c)), \ + (I[951] = (T)(img)(_n6##x,_n15##y,z,c)), \ + (I[22] = (T)(img)(_n7##x,_p15##y,z,c)), \ + (I[53] = (T)(img)(_n7##x,_p14##y,z,c)), \ + (I[84] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[115] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[146] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[177] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[208] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[239] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[270] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[301] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[332] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[363] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[394] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[425] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[456] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[487] = (T)(img)(_n7##x,y,z,c)), \ + (I[518] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[549] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[580] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[611] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[642] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[673] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[704] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[735] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[766] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[797] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[828] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[859] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[890] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[921] = (T)(img)(_n7##x,_n14##y,z,c)), \ + (I[952] = (T)(img)(_n7##x,_n15##y,z,c)), \ + (I[23] = (T)(img)(_n8##x,_p15##y,z,c)), \ + (I[54] = (T)(img)(_n8##x,_p14##y,z,c)), \ + (I[85] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[116] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[147] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[178] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[209] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[240] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[271] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[302] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[333] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[364] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[395] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[426] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[457] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[488] = (T)(img)(_n8##x,y,z,c)), \ + (I[519] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[550] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[581] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[612] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[643] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[674] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[705] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[736] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[767] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[798] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[829] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[860] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[891] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[922] = (T)(img)(_n8##x,_n14##y,z,c)), \ + (I[953] = (T)(img)(_n8##x,_n15##y,z,c)), \ + (I[24] = (T)(img)(_n9##x,_p15##y,z,c)), \ + (I[55] = (T)(img)(_n9##x,_p14##y,z,c)), \ + (I[86] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[117] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[148] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[179] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[210] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[241] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[272] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[303] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[334] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[365] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[396] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[427] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[458] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[489] = (T)(img)(_n9##x,y,z,c)), \ + (I[520] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[551] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[582] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[613] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[644] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[675] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[706] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[737] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[768] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[799] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[830] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[861] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[892] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[923] = (T)(img)(_n9##x,_n14##y,z,c)), \ + (I[954] = (T)(img)(_n9##x,_n15##y,z,c)), \ + (I[25] = (T)(img)(_n10##x,_p15##y,z,c)), \ + (I[56] = (T)(img)(_n10##x,_p14##y,z,c)), \ + (I[87] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[118] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[149] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[180] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[211] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[242] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[273] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[304] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[335] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[366] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[397] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[428] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[459] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[490] = (T)(img)(_n10##x,y,z,c)), \ + (I[521] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[552] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[583] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[614] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[645] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[676] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[707] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[738] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[769] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[800] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[831] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[862] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[893] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[924] = (T)(img)(_n10##x,_n14##y,z,c)), \ + (I[955] = (T)(img)(_n10##x,_n15##y,z,c)), \ + (I[26] = (T)(img)(_n11##x,_p15##y,z,c)), \ + (I[57] = (T)(img)(_n11##x,_p14##y,z,c)), \ + (I[88] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[119] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[150] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[181] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[212] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[243] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[274] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[305] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[336] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[367] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[398] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[429] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[460] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[491] = (T)(img)(_n11##x,y,z,c)), \ + (I[522] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[553] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[584] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[615] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[646] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[677] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[708] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[739] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[770] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[801] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[832] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[863] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[894] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[925] = (T)(img)(_n11##x,_n14##y,z,c)), \ + (I[956] = (T)(img)(_n11##x,_n15##y,z,c)), \ + (I[27] = (T)(img)(_n12##x,_p15##y,z,c)), \ + (I[58] = (T)(img)(_n12##x,_p14##y,z,c)), \ + (I[89] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[120] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[151] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[182] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[213] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[244] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[275] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[306] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[337] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[368] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[399] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[430] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[461] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[492] = (T)(img)(_n12##x,y,z,c)), \ + (I[523] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[554] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[585] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[616] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[647] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[678] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[709] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[740] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[771] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[802] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[833] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[864] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[895] = (T)(img)(_n12##x,_n13##y,z,c)), \ + (I[926] = (T)(img)(_n12##x,_n14##y,z,c)), \ + (I[957] = (T)(img)(_n12##x,_n15##y,z,c)), \ + (I[28] = (T)(img)(_n13##x,_p15##y,z,c)), \ + (I[59] = (T)(img)(_n13##x,_p14##y,z,c)), \ + (I[90] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[121] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[152] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[183] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[214] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[245] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[276] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[307] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[338] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[369] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[400] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[431] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[462] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[493] = (T)(img)(_n13##x,y,z,c)), \ + (I[524] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[555] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[586] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[617] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[648] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[679] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[710] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[741] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[772] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[803] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[834] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[865] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[896] = (T)(img)(_n13##x,_n13##y,z,c)), \ + (I[927] = (T)(img)(_n13##x,_n14##y,z,c)), \ + (I[958] = (T)(img)(_n13##x,_n15##y,z,c)), \ + (I[29] = (T)(img)(_n14##x,_p15##y,z,c)), \ + (I[60] = (T)(img)(_n14##x,_p14##y,z,c)), \ + (I[91] = (T)(img)(_n14##x,_p13##y,z,c)), \ + (I[122] = (T)(img)(_n14##x,_p12##y,z,c)), \ + (I[153] = (T)(img)(_n14##x,_p11##y,z,c)), \ + (I[184] = (T)(img)(_n14##x,_p10##y,z,c)), \ + (I[215] = (T)(img)(_n14##x,_p9##y,z,c)), \ + (I[246] = (T)(img)(_n14##x,_p8##y,z,c)), \ + (I[277] = (T)(img)(_n14##x,_p7##y,z,c)), \ + (I[308] = (T)(img)(_n14##x,_p6##y,z,c)), \ + (I[339] = (T)(img)(_n14##x,_p5##y,z,c)), \ + (I[370] = (T)(img)(_n14##x,_p4##y,z,c)), \ + (I[401] = (T)(img)(_n14##x,_p3##y,z,c)), \ + (I[432] = (T)(img)(_n14##x,_p2##y,z,c)), \ + (I[463] = (T)(img)(_n14##x,_p1##y,z,c)), \ + (I[494] = (T)(img)(_n14##x,y,z,c)), \ + (I[525] = (T)(img)(_n14##x,_n1##y,z,c)), \ + (I[556] = (T)(img)(_n14##x,_n2##y,z,c)), \ + (I[587] = (T)(img)(_n14##x,_n3##y,z,c)), \ + (I[618] = (T)(img)(_n14##x,_n4##y,z,c)), \ + (I[649] = (T)(img)(_n14##x,_n5##y,z,c)), \ + (I[680] = (T)(img)(_n14##x,_n6##y,z,c)), \ + (I[711] = (T)(img)(_n14##x,_n7##y,z,c)), \ + (I[742] = (T)(img)(_n14##x,_n8##y,z,c)), \ + (I[773] = (T)(img)(_n14##x,_n9##y,z,c)), \ + (I[804] = (T)(img)(_n14##x,_n10##y,z,c)), \ + (I[835] = (T)(img)(_n14##x,_n11##y,z,c)), \ + (I[866] = (T)(img)(_n14##x,_n12##y,z,c)), \ + (I[897] = (T)(img)(_n14##x,_n13##y,z,c)), \ + (I[928] = (T)(img)(_n14##x,_n14##y,z,c)), \ + (I[959] = (T)(img)(_n14##x,_n15##y,z,c)), \ + x + 15>=(img).width()?(img).width() - 1:x + 15); \ + x<=(int)(x1) && ((_n15##x<(img).width() && ( \ + (I[30] = (T)(img)(_n15##x,_p15##y,z,c)), \ + (I[61] = (T)(img)(_n15##x,_p14##y,z,c)), \ + (I[92] = (T)(img)(_n15##x,_p13##y,z,c)), \ + (I[123] = (T)(img)(_n15##x,_p12##y,z,c)), \ + (I[154] = (T)(img)(_n15##x,_p11##y,z,c)), \ + (I[185] = (T)(img)(_n15##x,_p10##y,z,c)), \ + (I[216] = (T)(img)(_n15##x,_p9##y,z,c)), \ + (I[247] = (T)(img)(_n15##x,_p8##y,z,c)), \ + (I[278] = (T)(img)(_n15##x,_p7##y,z,c)), \ + (I[309] = (T)(img)(_n15##x,_p6##y,z,c)), \ + (I[340] = (T)(img)(_n15##x,_p5##y,z,c)), \ + (I[371] = (T)(img)(_n15##x,_p4##y,z,c)), \ + (I[402] = (T)(img)(_n15##x,_p3##y,z,c)), \ + (I[433] = (T)(img)(_n15##x,_p2##y,z,c)), \ + (I[464] = (T)(img)(_n15##x,_p1##y,z,c)), \ + (I[495] = (T)(img)(_n15##x,y,z,c)), \ + (I[526] = (T)(img)(_n15##x,_n1##y,z,c)), \ + (I[557] = (T)(img)(_n15##x,_n2##y,z,c)), \ + (I[588] = (T)(img)(_n15##x,_n3##y,z,c)), \ + (I[619] = (T)(img)(_n15##x,_n4##y,z,c)), \ + (I[650] = (T)(img)(_n15##x,_n5##y,z,c)), \ + (I[681] = (T)(img)(_n15##x,_n6##y,z,c)), \ + (I[712] = (T)(img)(_n15##x,_n7##y,z,c)), \ + (I[743] = (T)(img)(_n15##x,_n8##y,z,c)), \ + (I[774] = (T)(img)(_n15##x,_n9##y,z,c)), \ + (I[805] = (T)(img)(_n15##x,_n10##y,z,c)), \ + (I[836] = (T)(img)(_n15##x,_n11##y,z,c)), \ + (I[867] = (T)(img)(_n15##x,_n12##y,z,c)), \ + (I[898] = (T)(img)(_n15##x,_n13##y,z,c)), \ + (I[929] = (T)(img)(_n15##x,_n14##y,z,c)), \ + (I[960] = (T)(img)(_n15##x,_n15##y,z,c)),1)) || \ + _n14##x==--_n15##x || _n13##x==--_n14##x || _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n15##x = _n14##x = _n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], \ + I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], \ + I[62] = I[63], I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], \ + I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], \ + I[124] = I[125], I[125] = I[126], I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], \ + I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], \ + I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], \ + I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], I[223] = I[224], I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], \ + I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], \ + I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], \ + I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], \ + I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], I[351] = I[352], I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], \ + I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], I[383] = I[384], I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], \ + I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], I[415] = I[416], I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], \ + I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], I[447] = I[448], I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], \ + I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], I[479] = I[480], I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], \ + I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], I[511] = I[512], I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], \ + I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], I[543] = I[544], I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], \ + I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], I[575] = I[576], I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], \ + I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], I[607] = I[608], I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], \ + I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], I[639] = I[640], I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], I[649] = I[650], \ + I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], I[671] = I[672], I[672] = I[673], I[673] = I[674], I[674] = I[675], I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], \ + I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], I[689] = I[690], I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], I[695] = I[696], I[696] = I[697], I[697] = I[698], I[698] = I[699], I[699] = I[700], I[700] = I[701], I[701] = I[702], I[702] = I[703], I[703] = I[704], I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], \ + I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], I[719] = I[720], I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], I[724] = I[725], I[725] = I[726], I[726] = I[727], I[727] = I[728], I[728] = I[729], I[729] = I[730], I[730] = I[731], I[731] = I[732], I[732] = I[733], I[733] = I[734], I[734] = I[735], I[735] = I[736], I[736] = I[737], I[737] = I[738], I[738] = I[739], I[739] = I[740], I[740] = I[741], I[741] = I[742], I[742] = I[743], \ + I[744] = I[745], I[745] = I[746], I[746] = I[747], I[747] = I[748], I[748] = I[749], I[749] = I[750], I[750] = I[751], I[751] = I[752], I[752] = I[753], I[753] = I[754], I[754] = I[755], I[755] = I[756], I[756] = I[757], I[757] = I[758], I[758] = I[759], I[759] = I[760], I[760] = I[761], I[761] = I[762], I[762] = I[763], I[763] = I[764], I[764] = I[765], I[765] = I[766], I[766] = I[767], I[767] = I[768], I[768] = I[769], I[769] = I[770], I[770] = I[771], I[771] = I[772], I[772] = I[773], I[773] = I[774], \ + I[775] = I[776], I[776] = I[777], I[777] = I[778], I[778] = I[779], I[779] = I[780], I[780] = I[781], I[781] = I[782], I[782] = I[783], I[783] = I[784], I[784] = I[785], I[785] = I[786], I[786] = I[787], I[787] = I[788], I[788] = I[789], I[789] = I[790], I[790] = I[791], I[791] = I[792], I[792] = I[793], I[793] = I[794], I[794] = I[795], I[795] = I[796], I[796] = I[797], I[797] = I[798], I[798] = I[799], I[799] = I[800], I[800] = I[801], I[801] = I[802], I[802] = I[803], I[803] = I[804], I[804] = I[805], \ + I[806] = I[807], I[807] = I[808], I[808] = I[809], I[809] = I[810], I[810] = I[811], I[811] = I[812], I[812] = I[813], I[813] = I[814], I[814] = I[815], I[815] = I[816], I[816] = I[817], I[817] = I[818], I[818] = I[819], I[819] = I[820], I[820] = I[821], I[821] = I[822], I[822] = I[823], I[823] = I[824], I[824] = I[825], I[825] = I[826], I[826] = I[827], I[827] = I[828], I[828] = I[829], I[829] = I[830], I[830] = I[831], I[831] = I[832], I[832] = I[833], I[833] = I[834], I[834] = I[835], I[835] = I[836], \ + I[837] = I[838], I[838] = I[839], I[839] = I[840], I[840] = I[841], I[841] = I[842], I[842] = I[843], I[843] = I[844], I[844] = I[845], I[845] = I[846], I[846] = I[847], I[847] = I[848], I[848] = I[849], I[849] = I[850], I[850] = I[851], I[851] = I[852], I[852] = I[853], I[853] = I[854], I[854] = I[855], I[855] = I[856], I[856] = I[857], I[857] = I[858], I[858] = I[859], I[859] = I[860], I[860] = I[861], I[861] = I[862], I[862] = I[863], I[863] = I[864], I[864] = I[865], I[865] = I[866], I[866] = I[867], \ + I[868] = I[869], I[869] = I[870], I[870] = I[871], I[871] = I[872], I[872] = I[873], I[873] = I[874], I[874] = I[875], I[875] = I[876], I[876] = I[877], I[877] = I[878], I[878] = I[879], I[879] = I[880], I[880] = I[881], I[881] = I[882], I[882] = I[883], I[883] = I[884], I[884] = I[885], I[885] = I[886], I[886] = I[887], I[887] = I[888], I[888] = I[889], I[889] = I[890], I[890] = I[891], I[891] = I[892], I[892] = I[893], I[893] = I[894], I[894] = I[895], I[895] = I[896], I[896] = I[897], I[897] = I[898], \ + I[899] = I[900], I[900] = I[901], I[901] = I[902], I[902] = I[903], I[903] = I[904], I[904] = I[905], I[905] = I[906], I[906] = I[907], I[907] = I[908], I[908] = I[909], I[909] = I[910], I[910] = I[911], I[911] = I[912], I[912] = I[913], I[913] = I[914], I[914] = I[915], I[915] = I[916], I[916] = I[917], I[917] = I[918], I[918] = I[919], I[919] = I[920], I[920] = I[921], I[921] = I[922], I[922] = I[923], I[923] = I[924], I[924] = I[925], I[925] = I[926], I[926] = I[927], I[927] = I[928], I[928] = I[929], \ + I[930] = I[931], I[931] = I[932], I[932] = I[933], I[933] = I[934], I[934] = I[935], I[935] = I[936], I[936] = I[937], I[937] = I[938], I[938] = I[939], I[939] = I[940], I[940] = I[941], I[941] = I[942], I[942] = I[943], I[943] = I[944], I[944] = I[945], I[945] = I[946], I[946] = I[947], I[947] = I[948], I[948] = I[949], I[949] = I[950], I[950] = I[951], I[951] = I[952], I[952] = I[953], I[953] = I[954], I[954] = I[955], I[955] = I[956], I[956] = I[957], I[957] = I[958], I[958] = I[959], I[959] = I[960], \ + _p15##x = _p14##x, _p14##x = _p13##x, _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x, ++_n14##x, ++_n15##x) + +#define cimg_get31x31(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p15##x,_p15##y,z,c), I[1] = (T)(img)(_p14##x,_p15##y,z,c), I[2] = (T)(img)(_p13##x,_p15##y,z,c), I[3] = (T)(img)(_p12##x,_p15##y,z,c), I[4] = (T)(img)(_p11##x,_p15##y,z,c), I[5] = (T)(img)(_p10##x,_p15##y,z,c), I[6] = (T)(img)(_p9##x,_p15##y,z,c), I[7] = (T)(img)(_p8##x,_p15##y,z,c), I[8] = (T)(img)(_p7##x,_p15##y,z,c), I[9] = (T)(img)(_p6##x,_p15##y,z,c), I[10] = (T)(img)(_p5##x,_p15##y,z,c), I[11] = (T)(img)(_p4##x,_p15##y,z,c), I[12] = (T)(img)(_p3##x,_p15##y,z,c), I[13] = (T)(img)(_p2##x,_p15##y,z,c), I[14] = (T)(img)(_p1##x,_p15##y,z,c), I[15] = (T)(img)(x,_p15##y,z,c), I[16] = (T)(img)(_n1##x,_p15##y,z,c), I[17] = (T)(img)(_n2##x,_p15##y,z,c), I[18] = (T)(img)(_n3##x,_p15##y,z,c), I[19] = (T)(img)(_n4##x,_p15##y,z,c), I[20] = (T)(img)(_n5##x,_p15##y,z,c), I[21] = (T)(img)(_n6##x,_p15##y,z,c), I[22] = (T)(img)(_n7##x,_p15##y,z,c), I[23] = (T)(img)(_n8##x,_p15##y,z,c), I[24] = (T)(img)(_n9##x,_p15##y,z,c), I[25] = (T)(img)(_n10##x,_p15##y,z,c), I[26] = (T)(img)(_n11##x,_p15##y,z,c), I[27] = (T)(img)(_n12##x,_p15##y,z,c), I[28] = (T)(img)(_n13##x,_p15##y,z,c), I[29] = (T)(img)(_n14##x,_p15##y,z,c), I[30] = (T)(img)(_n15##x,_p15##y,z,c), \ + I[31] = (T)(img)(_p15##x,_p14##y,z,c), I[32] = (T)(img)(_p14##x,_p14##y,z,c), I[33] = (T)(img)(_p13##x,_p14##y,z,c), I[34] = (T)(img)(_p12##x,_p14##y,z,c), I[35] = (T)(img)(_p11##x,_p14##y,z,c), I[36] = (T)(img)(_p10##x,_p14##y,z,c), I[37] = (T)(img)(_p9##x,_p14##y,z,c), I[38] = (T)(img)(_p8##x,_p14##y,z,c), I[39] = (T)(img)(_p7##x,_p14##y,z,c), I[40] = (T)(img)(_p6##x,_p14##y,z,c), I[41] = (T)(img)(_p5##x,_p14##y,z,c), I[42] = (T)(img)(_p4##x,_p14##y,z,c), I[43] = (T)(img)(_p3##x,_p14##y,z,c), I[44] = (T)(img)(_p2##x,_p14##y,z,c), I[45] = (T)(img)(_p1##x,_p14##y,z,c), I[46] = (T)(img)(x,_p14##y,z,c), I[47] = (T)(img)(_n1##x,_p14##y,z,c), I[48] = (T)(img)(_n2##x,_p14##y,z,c), I[49] = (T)(img)(_n3##x,_p14##y,z,c), I[50] = (T)(img)(_n4##x,_p14##y,z,c), I[51] = (T)(img)(_n5##x,_p14##y,z,c), I[52] = (T)(img)(_n6##x,_p14##y,z,c), I[53] = (T)(img)(_n7##x,_p14##y,z,c), I[54] = (T)(img)(_n8##x,_p14##y,z,c), I[55] = (T)(img)(_n9##x,_p14##y,z,c), I[56] = (T)(img)(_n10##x,_p14##y,z,c), I[57] = (T)(img)(_n11##x,_p14##y,z,c), I[58] = (T)(img)(_n12##x,_p14##y,z,c), I[59] = (T)(img)(_n13##x,_p14##y,z,c), I[60] = (T)(img)(_n14##x,_p14##y,z,c), I[61] = (T)(img)(_n15##x,_p14##y,z,c), \ + I[62] = (T)(img)(_p15##x,_p13##y,z,c), I[63] = (T)(img)(_p14##x,_p13##y,z,c), I[64] = (T)(img)(_p13##x,_p13##y,z,c), I[65] = (T)(img)(_p12##x,_p13##y,z,c), I[66] = (T)(img)(_p11##x,_p13##y,z,c), I[67] = (T)(img)(_p10##x,_p13##y,z,c), I[68] = (T)(img)(_p9##x,_p13##y,z,c), I[69] = (T)(img)(_p8##x,_p13##y,z,c), I[70] = (T)(img)(_p7##x,_p13##y,z,c), I[71] = (T)(img)(_p6##x,_p13##y,z,c), I[72] = (T)(img)(_p5##x,_p13##y,z,c), I[73] = (T)(img)(_p4##x,_p13##y,z,c), I[74] = (T)(img)(_p3##x,_p13##y,z,c), I[75] = (T)(img)(_p2##x,_p13##y,z,c), I[76] = (T)(img)(_p1##x,_p13##y,z,c), I[77] = (T)(img)(x,_p13##y,z,c), I[78] = (T)(img)(_n1##x,_p13##y,z,c), I[79] = (T)(img)(_n2##x,_p13##y,z,c), I[80] = (T)(img)(_n3##x,_p13##y,z,c), I[81] = (T)(img)(_n4##x,_p13##y,z,c), I[82] = (T)(img)(_n5##x,_p13##y,z,c), I[83] = (T)(img)(_n6##x,_p13##y,z,c), I[84] = (T)(img)(_n7##x,_p13##y,z,c), I[85] = (T)(img)(_n8##x,_p13##y,z,c), I[86] = (T)(img)(_n9##x,_p13##y,z,c), I[87] = (T)(img)(_n10##x,_p13##y,z,c), I[88] = (T)(img)(_n11##x,_p13##y,z,c), I[89] = (T)(img)(_n12##x,_p13##y,z,c), I[90] = (T)(img)(_n13##x,_p13##y,z,c), I[91] = (T)(img)(_n14##x,_p13##y,z,c), I[92] = (T)(img)(_n15##x,_p13##y,z,c), \ + I[93] = (T)(img)(_p15##x,_p12##y,z,c), I[94] = (T)(img)(_p14##x,_p12##y,z,c), I[95] = (T)(img)(_p13##x,_p12##y,z,c), I[96] = (T)(img)(_p12##x,_p12##y,z,c), I[97] = (T)(img)(_p11##x,_p12##y,z,c), I[98] = (T)(img)(_p10##x,_p12##y,z,c), I[99] = (T)(img)(_p9##x,_p12##y,z,c), I[100] = (T)(img)(_p8##x,_p12##y,z,c), I[101] = (T)(img)(_p7##x,_p12##y,z,c), I[102] = (T)(img)(_p6##x,_p12##y,z,c), I[103] = (T)(img)(_p5##x,_p12##y,z,c), I[104] = (T)(img)(_p4##x,_p12##y,z,c), I[105] = (T)(img)(_p3##x,_p12##y,z,c), I[106] = (T)(img)(_p2##x,_p12##y,z,c), I[107] = (T)(img)(_p1##x,_p12##y,z,c), I[108] = (T)(img)(x,_p12##y,z,c), I[109] = (T)(img)(_n1##x,_p12##y,z,c), I[110] = (T)(img)(_n2##x,_p12##y,z,c), I[111] = (T)(img)(_n3##x,_p12##y,z,c), I[112] = (T)(img)(_n4##x,_p12##y,z,c), I[113] = (T)(img)(_n5##x,_p12##y,z,c), I[114] = (T)(img)(_n6##x,_p12##y,z,c), I[115] = (T)(img)(_n7##x,_p12##y,z,c), I[116] = (T)(img)(_n8##x,_p12##y,z,c), I[117] = (T)(img)(_n9##x,_p12##y,z,c), I[118] = (T)(img)(_n10##x,_p12##y,z,c), I[119] = (T)(img)(_n11##x,_p12##y,z,c), I[120] = (T)(img)(_n12##x,_p12##y,z,c), I[121] = (T)(img)(_n13##x,_p12##y,z,c), I[122] = (T)(img)(_n14##x,_p12##y,z,c), I[123] = (T)(img)(_n15##x,_p12##y,z,c), \ + I[124] = (T)(img)(_p15##x,_p11##y,z,c), I[125] = (T)(img)(_p14##x,_p11##y,z,c), I[126] = (T)(img)(_p13##x,_p11##y,z,c), I[127] = (T)(img)(_p12##x,_p11##y,z,c), I[128] = (T)(img)(_p11##x,_p11##y,z,c), I[129] = (T)(img)(_p10##x,_p11##y,z,c), I[130] = (T)(img)(_p9##x,_p11##y,z,c), I[131] = (T)(img)(_p8##x,_p11##y,z,c), I[132] = (T)(img)(_p7##x,_p11##y,z,c), I[133] = (T)(img)(_p6##x,_p11##y,z,c), I[134] = (T)(img)(_p5##x,_p11##y,z,c), I[135] = (T)(img)(_p4##x,_p11##y,z,c), I[136] = (T)(img)(_p3##x,_p11##y,z,c), I[137] = (T)(img)(_p2##x,_p11##y,z,c), I[138] = (T)(img)(_p1##x,_p11##y,z,c), I[139] = (T)(img)(x,_p11##y,z,c), I[140] = (T)(img)(_n1##x,_p11##y,z,c), I[141] = (T)(img)(_n2##x,_p11##y,z,c), I[142] = (T)(img)(_n3##x,_p11##y,z,c), I[143] = (T)(img)(_n4##x,_p11##y,z,c), I[144] = (T)(img)(_n5##x,_p11##y,z,c), I[145] = (T)(img)(_n6##x,_p11##y,z,c), I[146] = (T)(img)(_n7##x,_p11##y,z,c), I[147] = (T)(img)(_n8##x,_p11##y,z,c), I[148] = (T)(img)(_n9##x,_p11##y,z,c), I[149] = (T)(img)(_n10##x,_p11##y,z,c), I[150] = (T)(img)(_n11##x,_p11##y,z,c), I[151] = (T)(img)(_n12##x,_p11##y,z,c), I[152] = (T)(img)(_n13##x,_p11##y,z,c), I[153] = (T)(img)(_n14##x,_p11##y,z,c), I[154] = (T)(img)(_n15##x,_p11##y,z,c), \ + I[155] = (T)(img)(_p15##x,_p10##y,z,c), I[156] = (T)(img)(_p14##x,_p10##y,z,c), I[157] = (T)(img)(_p13##x,_p10##y,z,c), I[158] = (T)(img)(_p12##x,_p10##y,z,c), I[159] = (T)(img)(_p11##x,_p10##y,z,c), I[160] = (T)(img)(_p10##x,_p10##y,z,c), I[161] = (T)(img)(_p9##x,_p10##y,z,c), I[162] = (T)(img)(_p8##x,_p10##y,z,c), I[163] = (T)(img)(_p7##x,_p10##y,z,c), I[164] = (T)(img)(_p6##x,_p10##y,z,c), I[165] = (T)(img)(_p5##x,_p10##y,z,c), I[166] = (T)(img)(_p4##x,_p10##y,z,c), I[167] = (T)(img)(_p3##x,_p10##y,z,c), I[168] = (T)(img)(_p2##x,_p10##y,z,c), I[169] = (T)(img)(_p1##x,_p10##y,z,c), I[170] = (T)(img)(x,_p10##y,z,c), I[171] = (T)(img)(_n1##x,_p10##y,z,c), I[172] = (T)(img)(_n2##x,_p10##y,z,c), I[173] = (T)(img)(_n3##x,_p10##y,z,c), I[174] = (T)(img)(_n4##x,_p10##y,z,c), I[175] = (T)(img)(_n5##x,_p10##y,z,c), I[176] = (T)(img)(_n6##x,_p10##y,z,c), I[177] = (T)(img)(_n7##x,_p10##y,z,c), I[178] = (T)(img)(_n8##x,_p10##y,z,c), I[179] = (T)(img)(_n9##x,_p10##y,z,c), I[180] = (T)(img)(_n10##x,_p10##y,z,c), I[181] = (T)(img)(_n11##x,_p10##y,z,c), I[182] = (T)(img)(_n12##x,_p10##y,z,c), I[183] = (T)(img)(_n13##x,_p10##y,z,c), I[184] = (T)(img)(_n14##x,_p10##y,z,c), I[185] = (T)(img)(_n15##x,_p10##y,z,c), \ + I[186] = (T)(img)(_p15##x,_p9##y,z,c), I[187] = (T)(img)(_p14##x,_p9##y,z,c), I[188] = (T)(img)(_p13##x,_p9##y,z,c), I[189] = (T)(img)(_p12##x,_p9##y,z,c), I[190] = (T)(img)(_p11##x,_p9##y,z,c), I[191] = (T)(img)(_p10##x,_p9##y,z,c), I[192] = (T)(img)(_p9##x,_p9##y,z,c), I[193] = (T)(img)(_p8##x,_p9##y,z,c), I[194] = (T)(img)(_p7##x,_p9##y,z,c), I[195] = (T)(img)(_p6##x,_p9##y,z,c), I[196] = (T)(img)(_p5##x,_p9##y,z,c), I[197] = (T)(img)(_p4##x,_p9##y,z,c), I[198] = (T)(img)(_p3##x,_p9##y,z,c), I[199] = (T)(img)(_p2##x,_p9##y,z,c), I[200] = (T)(img)(_p1##x,_p9##y,z,c), I[201] = (T)(img)(x,_p9##y,z,c), I[202] = (T)(img)(_n1##x,_p9##y,z,c), I[203] = (T)(img)(_n2##x,_p9##y,z,c), I[204] = (T)(img)(_n3##x,_p9##y,z,c), I[205] = (T)(img)(_n4##x,_p9##y,z,c), I[206] = (T)(img)(_n5##x,_p9##y,z,c), I[207] = (T)(img)(_n6##x,_p9##y,z,c), I[208] = (T)(img)(_n7##x,_p9##y,z,c), I[209] = (T)(img)(_n8##x,_p9##y,z,c), I[210] = (T)(img)(_n9##x,_p9##y,z,c), I[211] = (T)(img)(_n10##x,_p9##y,z,c), I[212] = (T)(img)(_n11##x,_p9##y,z,c), I[213] = (T)(img)(_n12##x,_p9##y,z,c), I[214] = (T)(img)(_n13##x,_p9##y,z,c), I[215] = (T)(img)(_n14##x,_p9##y,z,c), I[216] = (T)(img)(_n15##x,_p9##y,z,c), \ + I[217] = (T)(img)(_p15##x,_p8##y,z,c), I[218] = (T)(img)(_p14##x,_p8##y,z,c), I[219] = (T)(img)(_p13##x,_p8##y,z,c), I[220] = (T)(img)(_p12##x,_p8##y,z,c), I[221] = (T)(img)(_p11##x,_p8##y,z,c), I[222] = (T)(img)(_p10##x,_p8##y,z,c), I[223] = (T)(img)(_p9##x,_p8##y,z,c), I[224] = (T)(img)(_p8##x,_p8##y,z,c), I[225] = (T)(img)(_p7##x,_p8##y,z,c), I[226] = (T)(img)(_p6##x,_p8##y,z,c), I[227] = (T)(img)(_p5##x,_p8##y,z,c), I[228] = (T)(img)(_p4##x,_p8##y,z,c), I[229] = (T)(img)(_p3##x,_p8##y,z,c), I[230] = (T)(img)(_p2##x,_p8##y,z,c), I[231] = (T)(img)(_p1##x,_p8##y,z,c), I[232] = (T)(img)(x,_p8##y,z,c), I[233] = (T)(img)(_n1##x,_p8##y,z,c), I[234] = (T)(img)(_n2##x,_p8##y,z,c), I[235] = (T)(img)(_n3##x,_p8##y,z,c), I[236] = (T)(img)(_n4##x,_p8##y,z,c), I[237] = (T)(img)(_n5##x,_p8##y,z,c), I[238] = (T)(img)(_n6##x,_p8##y,z,c), I[239] = (T)(img)(_n7##x,_p8##y,z,c), I[240] = (T)(img)(_n8##x,_p8##y,z,c), I[241] = (T)(img)(_n9##x,_p8##y,z,c), I[242] = (T)(img)(_n10##x,_p8##y,z,c), I[243] = (T)(img)(_n11##x,_p8##y,z,c), I[244] = (T)(img)(_n12##x,_p8##y,z,c), I[245] = (T)(img)(_n13##x,_p8##y,z,c), I[246] = (T)(img)(_n14##x,_p8##y,z,c), I[247] = (T)(img)(_n15##x,_p8##y,z,c), \ + I[248] = (T)(img)(_p15##x,_p7##y,z,c), I[249] = (T)(img)(_p14##x,_p7##y,z,c), I[250] = (T)(img)(_p13##x,_p7##y,z,c), I[251] = (T)(img)(_p12##x,_p7##y,z,c), I[252] = (T)(img)(_p11##x,_p7##y,z,c), I[253] = (T)(img)(_p10##x,_p7##y,z,c), I[254] = (T)(img)(_p9##x,_p7##y,z,c), I[255] = (T)(img)(_p8##x,_p7##y,z,c), I[256] = (T)(img)(_p7##x,_p7##y,z,c), I[257] = (T)(img)(_p6##x,_p7##y,z,c), I[258] = (T)(img)(_p5##x,_p7##y,z,c), I[259] = (T)(img)(_p4##x,_p7##y,z,c), I[260] = (T)(img)(_p3##x,_p7##y,z,c), I[261] = (T)(img)(_p2##x,_p7##y,z,c), I[262] = (T)(img)(_p1##x,_p7##y,z,c), I[263] = (T)(img)(x,_p7##y,z,c), I[264] = (T)(img)(_n1##x,_p7##y,z,c), I[265] = (T)(img)(_n2##x,_p7##y,z,c), I[266] = (T)(img)(_n3##x,_p7##y,z,c), I[267] = (T)(img)(_n4##x,_p7##y,z,c), I[268] = (T)(img)(_n5##x,_p7##y,z,c), I[269] = (T)(img)(_n6##x,_p7##y,z,c), I[270] = (T)(img)(_n7##x,_p7##y,z,c), I[271] = (T)(img)(_n8##x,_p7##y,z,c), I[272] = (T)(img)(_n9##x,_p7##y,z,c), I[273] = (T)(img)(_n10##x,_p7##y,z,c), I[274] = (T)(img)(_n11##x,_p7##y,z,c), I[275] = (T)(img)(_n12##x,_p7##y,z,c), I[276] = (T)(img)(_n13##x,_p7##y,z,c), I[277] = (T)(img)(_n14##x,_p7##y,z,c), I[278] = (T)(img)(_n15##x,_p7##y,z,c), \ + I[279] = (T)(img)(_p15##x,_p6##y,z,c), I[280] = (T)(img)(_p14##x,_p6##y,z,c), I[281] = (T)(img)(_p13##x,_p6##y,z,c), I[282] = (T)(img)(_p12##x,_p6##y,z,c), I[283] = (T)(img)(_p11##x,_p6##y,z,c), I[284] = (T)(img)(_p10##x,_p6##y,z,c), I[285] = (T)(img)(_p9##x,_p6##y,z,c), I[286] = (T)(img)(_p8##x,_p6##y,z,c), I[287] = (T)(img)(_p7##x,_p6##y,z,c), I[288] = (T)(img)(_p6##x,_p6##y,z,c), I[289] = (T)(img)(_p5##x,_p6##y,z,c), I[290] = (T)(img)(_p4##x,_p6##y,z,c), I[291] = (T)(img)(_p3##x,_p6##y,z,c), I[292] = (T)(img)(_p2##x,_p6##y,z,c), I[293] = (T)(img)(_p1##x,_p6##y,z,c), I[294] = (T)(img)(x,_p6##y,z,c), I[295] = (T)(img)(_n1##x,_p6##y,z,c), I[296] = (T)(img)(_n2##x,_p6##y,z,c), I[297] = (T)(img)(_n3##x,_p6##y,z,c), I[298] = (T)(img)(_n4##x,_p6##y,z,c), I[299] = (T)(img)(_n5##x,_p6##y,z,c), I[300] = (T)(img)(_n6##x,_p6##y,z,c), I[301] = (T)(img)(_n7##x,_p6##y,z,c), I[302] = (T)(img)(_n8##x,_p6##y,z,c), I[303] = (T)(img)(_n9##x,_p6##y,z,c), I[304] = (T)(img)(_n10##x,_p6##y,z,c), I[305] = (T)(img)(_n11##x,_p6##y,z,c), I[306] = (T)(img)(_n12##x,_p6##y,z,c), I[307] = (T)(img)(_n13##x,_p6##y,z,c), I[308] = (T)(img)(_n14##x,_p6##y,z,c), I[309] = (T)(img)(_n15##x,_p6##y,z,c), \ + I[310] = (T)(img)(_p15##x,_p5##y,z,c), I[311] = (T)(img)(_p14##x,_p5##y,z,c), I[312] = (T)(img)(_p13##x,_p5##y,z,c), I[313] = (T)(img)(_p12##x,_p5##y,z,c), I[314] = (T)(img)(_p11##x,_p5##y,z,c), I[315] = (T)(img)(_p10##x,_p5##y,z,c), I[316] = (T)(img)(_p9##x,_p5##y,z,c), I[317] = (T)(img)(_p8##x,_p5##y,z,c), I[318] = (T)(img)(_p7##x,_p5##y,z,c), I[319] = (T)(img)(_p6##x,_p5##y,z,c), I[320] = (T)(img)(_p5##x,_p5##y,z,c), I[321] = (T)(img)(_p4##x,_p5##y,z,c), I[322] = (T)(img)(_p3##x,_p5##y,z,c), I[323] = (T)(img)(_p2##x,_p5##y,z,c), I[324] = (T)(img)(_p1##x,_p5##y,z,c), I[325] = (T)(img)(x,_p5##y,z,c), I[326] = (T)(img)(_n1##x,_p5##y,z,c), I[327] = (T)(img)(_n2##x,_p5##y,z,c), I[328] = (T)(img)(_n3##x,_p5##y,z,c), I[329] = (T)(img)(_n4##x,_p5##y,z,c), I[330] = (T)(img)(_n5##x,_p5##y,z,c), I[331] = (T)(img)(_n6##x,_p5##y,z,c), I[332] = (T)(img)(_n7##x,_p5##y,z,c), I[333] = (T)(img)(_n8##x,_p5##y,z,c), I[334] = (T)(img)(_n9##x,_p5##y,z,c), I[335] = (T)(img)(_n10##x,_p5##y,z,c), I[336] = (T)(img)(_n11##x,_p5##y,z,c), I[337] = (T)(img)(_n12##x,_p5##y,z,c), I[338] = (T)(img)(_n13##x,_p5##y,z,c), I[339] = (T)(img)(_n14##x,_p5##y,z,c), I[340] = (T)(img)(_n15##x,_p5##y,z,c), \ + I[341] = (T)(img)(_p15##x,_p4##y,z,c), I[342] = (T)(img)(_p14##x,_p4##y,z,c), I[343] = (T)(img)(_p13##x,_p4##y,z,c), I[344] = (T)(img)(_p12##x,_p4##y,z,c), I[345] = (T)(img)(_p11##x,_p4##y,z,c), I[346] = (T)(img)(_p10##x,_p4##y,z,c), I[347] = (T)(img)(_p9##x,_p4##y,z,c), I[348] = (T)(img)(_p8##x,_p4##y,z,c), I[349] = (T)(img)(_p7##x,_p4##y,z,c), I[350] = (T)(img)(_p6##x,_p4##y,z,c), I[351] = (T)(img)(_p5##x,_p4##y,z,c), I[352] = (T)(img)(_p4##x,_p4##y,z,c), I[353] = (T)(img)(_p3##x,_p4##y,z,c), I[354] = (T)(img)(_p2##x,_p4##y,z,c), I[355] = (T)(img)(_p1##x,_p4##y,z,c), I[356] = (T)(img)(x,_p4##y,z,c), I[357] = (T)(img)(_n1##x,_p4##y,z,c), I[358] = (T)(img)(_n2##x,_p4##y,z,c), I[359] = (T)(img)(_n3##x,_p4##y,z,c), I[360] = (T)(img)(_n4##x,_p4##y,z,c), I[361] = (T)(img)(_n5##x,_p4##y,z,c), I[362] = (T)(img)(_n6##x,_p4##y,z,c), I[363] = (T)(img)(_n7##x,_p4##y,z,c), I[364] = (T)(img)(_n8##x,_p4##y,z,c), I[365] = (T)(img)(_n9##x,_p4##y,z,c), I[366] = (T)(img)(_n10##x,_p4##y,z,c), I[367] = (T)(img)(_n11##x,_p4##y,z,c), I[368] = (T)(img)(_n12##x,_p4##y,z,c), I[369] = (T)(img)(_n13##x,_p4##y,z,c), I[370] = (T)(img)(_n14##x,_p4##y,z,c), I[371] = (T)(img)(_n15##x,_p4##y,z,c), \ + I[372] = (T)(img)(_p15##x,_p3##y,z,c), I[373] = (T)(img)(_p14##x,_p3##y,z,c), I[374] = (T)(img)(_p13##x,_p3##y,z,c), I[375] = (T)(img)(_p12##x,_p3##y,z,c), I[376] = (T)(img)(_p11##x,_p3##y,z,c), I[377] = (T)(img)(_p10##x,_p3##y,z,c), I[378] = (T)(img)(_p9##x,_p3##y,z,c), I[379] = (T)(img)(_p8##x,_p3##y,z,c), I[380] = (T)(img)(_p7##x,_p3##y,z,c), I[381] = (T)(img)(_p6##x,_p3##y,z,c), I[382] = (T)(img)(_p5##x,_p3##y,z,c), I[383] = (T)(img)(_p4##x,_p3##y,z,c), I[384] = (T)(img)(_p3##x,_p3##y,z,c), I[385] = (T)(img)(_p2##x,_p3##y,z,c), I[386] = (T)(img)(_p1##x,_p3##y,z,c), I[387] = (T)(img)(x,_p3##y,z,c), I[388] = (T)(img)(_n1##x,_p3##y,z,c), I[389] = (T)(img)(_n2##x,_p3##y,z,c), I[390] = (T)(img)(_n3##x,_p3##y,z,c), I[391] = (T)(img)(_n4##x,_p3##y,z,c), I[392] = (T)(img)(_n5##x,_p3##y,z,c), I[393] = (T)(img)(_n6##x,_p3##y,z,c), I[394] = (T)(img)(_n7##x,_p3##y,z,c), I[395] = (T)(img)(_n8##x,_p3##y,z,c), I[396] = (T)(img)(_n9##x,_p3##y,z,c), I[397] = (T)(img)(_n10##x,_p3##y,z,c), I[398] = (T)(img)(_n11##x,_p3##y,z,c), I[399] = (T)(img)(_n12##x,_p3##y,z,c), I[400] = (T)(img)(_n13##x,_p3##y,z,c), I[401] = (T)(img)(_n14##x,_p3##y,z,c), I[402] = (T)(img)(_n15##x,_p3##y,z,c), \ + I[403] = (T)(img)(_p15##x,_p2##y,z,c), I[404] = (T)(img)(_p14##x,_p2##y,z,c), I[405] = (T)(img)(_p13##x,_p2##y,z,c), I[406] = (T)(img)(_p12##x,_p2##y,z,c), I[407] = (T)(img)(_p11##x,_p2##y,z,c), I[408] = (T)(img)(_p10##x,_p2##y,z,c), I[409] = (T)(img)(_p9##x,_p2##y,z,c), I[410] = (T)(img)(_p8##x,_p2##y,z,c), I[411] = (T)(img)(_p7##x,_p2##y,z,c), I[412] = (T)(img)(_p6##x,_p2##y,z,c), I[413] = (T)(img)(_p5##x,_p2##y,z,c), I[414] = (T)(img)(_p4##x,_p2##y,z,c), I[415] = (T)(img)(_p3##x,_p2##y,z,c), I[416] = (T)(img)(_p2##x,_p2##y,z,c), I[417] = (T)(img)(_p1##x,_p2##y,z,c), I[418] = (T)(img)(x,_p2##y,z,c), I[419] = (T)(img)(_n1##x,_p2##y,z,c), I[420] = (T)(img)(_n2##x,_p2##y,z,c), I[421] = (T)(img)(_n3##x,_p2##y,z,c), I[422] = (T)(img)(_n4##x,_p2##y,z,c), I[423] = (T)(img)(_n5##x,_p2##y,z,c), I[424] = (T)(img)(_n6##x,_p2##y,z,c), I[425] = (T)(img)(_n7##x,_p2##y,z,c), I[426] = (T)(img)(_n8##x,_p2##y,z,c), I[427] = (T)(img)(_n9##x,_p2##y,z,c), I[428] = (T)(img)(_n10##x,_p2##y,z,c), I[429] = (T)(img)(_n11##x,_p2##y,z,c), I[430] = (T)(img)(_n12##x,_p2##y,z,c), I[431] = (T)(img)(_n13##x,_p2##y,z,c), I[432] = (T)(img)(_n14##x,_p2##y,z,c), I[433] = (T)(img)(_n15##x,_p2##y,z,c), \ + I[434] = (T)(img)(_p15##x,_p1##y,z,c), I[435] = (T)(img)(_p14##x,_p1##y,z,c), I[436] = (T)(img)(_p13##x,_p1##y,z,c), I[437] = (T)(img)(_p12##x,_p1##y,z,c), I[438] = (T)(img)(_p11##x,_p1##y,z,c), I[439] = (T)(img)(_p10##x,_p1##y,z,c), I[440] = (T)(img)(_p9##x,_p1##y,z,c), I[441] = (T)(img)(_p8##x,_p1##y,z,c), I[442] = (T)(img)(_p7##x,_p1##y,z,c), I[443] = (T)(img)(_p6##x,_p1##y,z,c), I[444] = (T)(img)(_p5##x,_p1##y,z,c), I[445] = (T)(img)(_p4##x,_p1##y,z,c), I[446] = (T)(img)(_p3##x,_p1##y,z,c), I[447] = (T)(img)(_p2##x,_p1##y,z,c), I[448] = (T)(img)(_p1##x,_p1##y,z,c), I[449] = (T)(img)(x,_p1##y,z,c), I[450] = (T)(img)(_n1##x,_p1##y,z,c), I[451] = (T)(img)(_n2##x,_p1##y,z,c), I[452] = (T)(img)(_n3##x,_p1##y,z,c), I[453] = (T)(img)(_n4##x,_p1##y,z,c), I[454] = (T)(img)(_n5##x,_p1##y,z,c), I[455] = (T)(img)(_n6##x,_p1##y,z,c), I[456] = (T)(img)(_n7##x,_p1##y,z,c), I[457] = (T)(img)(_n8##x,_p1##y,z,c), I[458] = (T)(img)(_n9##x,_p1##y,z,c), I[459] = (T)(img)(_n10##x,_p1##y,z,c), I[460] = (T)(img)(_n11##x,_p1##y,z,c), I[461] = (T)(img)(_n12##x,_p1##y,z,c), I[462] = (T)(img)(_n13##x,_p1##y,z,c), I[463] = (T)(img)(_n14##x,_p1##y,z,c), I[464] = (T)(img)(_n15##x,_p1##y,z,c), \ + I[465] = (T)(img)(_p15##x,y,z,c), I[466] = (T)(img)(_p14##x,y,z,c), I[467] = (T)(img)(_p13##x,y,z,c), I[468] = (T)(img)(_p12##x,y,z,c), I[469] = (T)(img)(_p11##x,y,z,c), I[470] = (T)(img)(_p10##x,y,z,c), I[471] = (T)(img)(_p9##x,y,z,c), I[472] = (T)(img)(_p8##x,y,z,c), I[473] = (T)(img)(_p7##x,y,z,c), I[474] = (T)(img)(_p6##x,y,z,c), I[475] = (T)(img)(_p5##x,y,z,c), I[476] = (T)(img)(_p4##x,y,z,c), I[477] = (T)(img)(_p3##x,y,z,c), I[478] = (T)(img)(_p2##x,y,z,c), I[479] = (T)(img)(_p1##x,y,z,c), I[480] = (T)(img)(x,y,z,c), I[481] = (T)(img)(_n1##x,y,z,c), I[482] = (T)(img)(_n2##x,y,z,c), I[483] = (T)(img)(_n3##x,y,z,c), I[484] = (T)(img)(_n4##x,y,z,c), I[485] = (T)(img)(_n5##x,y,z,c), I[486] = (T)(img)(_n6##x,y,z,c), I[487] = (T)(img)(_n7##x,y,z,c), I[488] = (T)(img)(_n8##x,y,z,c), I[489] = (T)(img)(_n9##x,y,z,c), I[490] = (T)(img)(_n10##x,y,z,c), I[491] = (T)(img)(_n11##x,y,z,c), I[492] = (T)(img)(_n12##x,y,z,c), I[493] = (T)(img)(_n13##x,y,z,c), I[494] = (T)(img)(_n14##x,y,z,c), I[495] = (T)(img)(_n15##x,y,z,c), \ + I[496] = (T)(img)(_p15##x,_n1##y,z,c), I[497] = (T)(img)(_p14##x,_n1##y,z,c), I[498] = (T)(img)(_p13##x,_n1##y,z,c), I[499] = (T)(img)(_p12##x,_n1##y,z,c), I[500] = (T)(img)(_p11##x,_n1##y,z,c), I[501] = (T)(img)(_p10##x,_n1##y,z,c), I[502] = (T)(img)(_p9##x,_n1##y,z,c), I[503] = (T)(img)(_p8##x,_n1##y,z,c), I[504] = (T)(img)(_p7##x,_n1##y,z,c), I[505] = (T)(img)(_p6##x,_n1##y,z,c), I[506] = (T)(img)(_p5##x,_n1##y,z,c), I[507] = (T)(img)(_p4##x,_n1##y,z,c), I[508] = (T)(img)(_p3##x,_n1##y,z,c), I[509] = (T)(img)(_p2##x,_n1##y,z,c), I[510] = (T)(img)(_p1##x,_n1##y,z,c), I[511] = (T)(img)(x,_n1##y,z,c), I[512] = (T)(img)(_n1##x,_n1##y,z,c), I[513] = (T)(img)(_n2##x,_n1##y,z,c), I[514] = (T)(img)(_n3##x,_n1##y,z,c), I[515] = (T)(img)(_n4##x,_n1##y,z,c), I[516] = (T)(img)(_n5##x,_n1##y,z,c), I[517] = (T)(img)(_n6##x,_n1##y,z,c), I[518] = (T)(img)(_n7##x,_n1##y,z,c), I[519] = (T)(img)(_n8##x,_n1##y,z,c), I[520] = (T)(img)(_n9##x,_n1##y,z,c), I[521] = (T)(img)(_n10##x,_n1##y,z,c), I[522] = (T)(img)(_n11##x,_n1##y,z,c), I[523] = (T)(img)(_n12##x,_n1##y,z,c), I[524] = (T)(img)(_n13##x,_n1##y,z,c), I[525] = (T)(img)(_n14##x,_n1##y,z,c), I[526] = (T)(img)(_n15##x,_n1##y,z,c), \ + I[527] = (T)(img)(_p15##x,_n2##y,z,c), I[528] = (T)(img)(_p14##x,_n2##y,z,c), I[529] = (T)(img)(_p13##x,_n2##y,z,c), I[530] = (T)(img)(_p12##x,_n2##y,z,c), I[531] = (T)(img)(_p11##x,_n2##y,z,c), I[532] = (T)(img)(_p10##x,_n2##y,z,c), I[533] = (T)(img)(_p9##x,_n2##y,z,c), I[534] = (T)(img)(_p8##x,_n2##y,z,c), I[535] = (T)(img)(_p7##x,_n2##y,z,c), I[536] = (T)(img)(_p6##x,_n2##y,z,c), I[537] = (T)(img)(_p5##x,_n2##y,z,c), I[538] = (T)(img)(_p4##x,_n2##y,z,c), I[539] = (T)(img)(_p3##x,_n2##y,z,c), I[540] = (T)(img)(_p2##x,_n2##y,z,c), I[541] = (T)(img)(_p1##x,_n2##y,z,c), I[542] = (T)(img)(x,_n2##y,z,c), I[543] = (T)(img)(_n1##x,_n2##y,z,c), I[544] = (T)(img)(_n2##x,_n2##y,z,c), I[545] = (T)(img)(_n3##x,_n2##y,z,c), I[546] = (T)(img)(_n4##x,_n2##y,z,c), I[547] = (T)(img)(_n5##x,_n2##y,z,c), I[548] = (T)(img)(_n6##x,_n2##y,z,c), I[549] = (T)(img)(_n7##x,_n2##y,z,c), I[550] = (T)(img)(_n8##x,_n2##y,z,c), I[551] = (T)(img)(_n9##x,_n2##y,z,c), I[552] = (T)(img)(_n10##x,_n2##y,z,c), I[553] = (T)(img)(_n11##x,_n2##y,z,c), I[554] = (T)(img)(_n12##x,_n2##y,z,c), I[555] = (T)(img)(_n13##x,_n2##y,z,c), I[556] = (T)(img)(_n14##x,_n2##y,z,c), I[557] = (T)(img)(_n15##x,_n2##y,z,c), \ + I[558] = (T)(img)(_p15##x,_n3##y,z,c), I[559] = (T)(img)(_p14##x,_n3##y,z,c), I[560] = (T)(img)(_p13##x,_n3##y,z,c), I[561] = (T)(img)(_p12##x,_n3##y,z,c), I[562] = (T)(img)(_p11##x,_n3##y,z,c), I[563] = (T)(img)(_p10##x,_n3##y,z,c), I[564] = (T)(img)(_p9##x,_n3##y,z,c), I[565] = (T)(img)(_p8##x,_n3##y,z,c), I[566] = (T)(img)(_p7##x,_n3##y,z,c), I[567] = (T)(img)(_p6##x,_n3##y,z,c), I[568] = (T)(img)(_p5##x,_n3##y,z,c), I[569] = (T)(img)(_p4##x,_n3##y,z,c), I[570] = (T)(img)(_p3##x,_n3##y,z,c), I[571] = (T)(img)(_p2##x,_n3##y,z,c), I[572] = (T)(img)(_p1##x,_n3##y,z,c), I[573] = (T)(img)(x,_n3##y,z,c), I[574] = (T)(img)(_n1##x,_n3##y,z,c), I[575] = (T)(img)(_n2##x,_n3##y,z,c), I[576] = (T)(img)(_n3##x,_n3##y,z,c), I[577] = (T)(img)(_n4##x,_n3##y,z,c), I[578] = (T)(img)(_n5##x,_n3##y,z,c), I[579] = (T)(img)(_n6##x,_n3##y,z,c), I[580] = (T)(img)(_n7##x,_n3##y,z,c), I[581] = (T)(img)(_n8##x,_n3##y,z,c), I[582] = (T)(img)(_n9##x,_n3##y,z,c), I[583] = (T)(img)(_n10##x,_n3##y,z,c), I[584] = (T)(img)(_n11##x,_n3##y,z,c), I[585] = (T)(img)(_n12##x,_n3##y,z,c), I[586] = (T)(img)(_n13##x,_n3##y,z,c), I[587] = (T)(img)(_n14##x,_n3##y,z,c), I[588] = (T)(img)(_n15##x,_n3##y,z,c), \ + I[589] = (T)(img)(_p15##x,_n4##y,z,c), I[590] = (T)(img)(_p14##x,_n4##y,z,c), I[591] = (T)(img)(_p13##x,_n4##y,z,c), I[592] = (T)(img)(_p12##x,_n4##y,z,c), I[593] = (T)(img)(_p11##x,_n4##y,z,c), I[594] = (T)(img)(_p10##x,_n4##y,z,c), I[595] = (T)(img)(_p9##x,_n4##y,z,c), I[596] = (T)(img)(_p8##x,_n4##y,z,c), I[597] = (T)(img)(_p7##x,_n4##y,z,c), I[598] = (T)(img)(_p6##x,_n4##y,z,c), I[599] = (T)(img)(_p5##x,_n4##y,z,c), I[600] = (T)(img)(_p4##x,_n4##y,z,c), I[601] = (T)(img)(_p3##x,_n4##y,z,c), I[602] = (T)(img)(_p2##x,_n4##y,z,c), I[603] = (T)(img)(_p1##x,_n4##y,z,c), I[604] = (T)(img)(x,_n4##y,z,c), I[605] = (T)(img)(_n1##x,_n4##y,z,c), I[606] = (T)(img)(_n2##x,_n4##y,z,c), I[607] = (T)(img)(_n3##x,_n4##y,z,c), I[608] = (T)(img)(_n4##x,_n4##y,z,c), I[609] = (T)(img)(_n5##x,_n4##y,z,c), I[610] = (T)(img)(_n6##x,_n4##y,z,c), I[611] = (T)(img)(_n7##x,_n4##y,z,c), I[612] = (T)(img)(_n8##x,_n4##y,z,c), I[613] = (T)(img)(_n9##x,_n4##y,z,c), I[614] = (T)(img)(_n10##x,_n4##y,z,c), I[615] = (T)(img)(_n11##x,_n4##y,z,c), I[616] = (T)(img)(_n12##x,_n4##y,z,c), I[617] = (T)(img)(_n13##x,_n4##y,z,c), I[618] = (T)(img)(_n14##x,_n4##y,z,c), I[619] = (T)(img)(_n15##x,_n4##y,z,c), \ + I[620] = (T)(img)(_p15##x,_n5##y,z,c), I[621] = (T)(img)(_p14##x,_n5##y,z,c), I[622] = (T)(img)(_p13##x,_n5##y,z,c), I[623] = (T)(img)(_p12##x,_n5##y,z,c), I[624] = (T)(img)(_p11##x,_n5##y,z,c), I[625] = (T)(img)(_p10##x,_n5##y,z,c), I[626] = (T)(img)(_p9##x,_n5##y,z,c), I[627] = (T)(img)(_p8##x,_n5##y,z,c), I[628] = (T)(img)(_p7##x,_n5##y,z,c), I[629] = (T)(img)(_p6##x,_n5##y,z,c), I[630] = (T)(img)(_p5##x,_n5##y,z,c), I[631] = (T)(img)(_p4##x,_n5##y,z,c), I[632] = (T)(img)(_p3##x,_n5##y,z,c), I[633] = (T)(img)(_p2##x,_n5##y,z,c), I[634] = (T)(img)(_p1##x,_n5##y,z,c), I[635] = (T)(img)(x,_n5##y,z,c), I[636] = (T)(img)(_n1##x,_n5##y,z,c), I[637] = (T)(img)(_n2##x,_n5##y,z,c), I[638] = (T)(img)(_n3##x,_n5##y,z,c), I[639] = (T)(img)(_n4##x,_n5##y,z,c), I[640] = (T)(img)(_n5##x,_n5##y,z,c), I[641] = (T)(img)(_n6##x,_n5##y,z,c), I[642] = (T)(img)(_n7##x,_n5##y,z,c), I[643] = (T)(img)(_n8##x,_n5##y,z,c), I[644] = (T)(img)(_n9##x,_n5##y,z,c), I[645] = (T)(img)(_n10##x,_n5##y,z,c), I[646] = (T)(img)(_n11##x,_n5##y,z,c), I[647] = (T)(img)(_n12##x,_n5##y,z,c), I[648] = (T)(img)(_n13##x,_n5##y,z,c), I[649] = (T)(img)(_n14##x,_n5##y,z,c), I[650] = (T)(img)(_n15##x,_n5##y,z,c), \ + I[651] = (T)(img)(_p15##x,_n6##y,z,c), I[652] = (T)(img)(_p14##x,_n6##y,z,c), I[653] = (T)(img)(_p13##x,_n6##y,z,c), I[654] = (T)(img)(_p12##x,_n6##y,z,c), I[655] = (T)(img)(_p11##x,_n6##y,z,c), I[656] = (T)(img)(_p10##x,_n6##y,z,c), I[657] = (T)(img)(_p9##x,_n6##y,z,c), I[658] = (T)(img)(_p8##x,_n6##y,z,c), I[659] = (T)(img)(_p7##x,_n6##y,z,c), I[660] = (T)(img)(_p6##x,_n6##y,z,c), I[661] = (T)(img)(_p5##x,_n6##y,z,c), I[662] = (T)(img)(_p4##x,_n6##y,z,c), I[663] = (T)(img)(_p3##x,_n6##y,z,c), I[664] = (T)(img)(_p2##x,_n6##y,z,c), I[665] = (T)(img)(_p1##x,_n6##y,z,c), I[666] = (T)(img)(x,_n6##y,z,c), I[667] = (T)(img)(_n1##x,_n6##y,z,c), I[668] = (T)(img)(_n2##x,_n6##y,z,c), I[669] = (T)(img)(_n3##x,_n6##y,z,c), I[670] = (T)(img)(_n4##x,_n6##y,z,c), I[671] = (T)(img)(_n5##x,_n6##y,z,c), I[672] = (T)(img)(_n6##x,_n6##y,z,c), I[673] = (T)(img)(_n7##x,_n6##y,z,c), I[674] = (T)(img)(_n8##x,_n6##y,z,c), I[675] = (T)(img)(_n9##x,_n6##y,z,c), I[676] = (T)(img)(_n10##x,_n6##y,z,c), I[677] = (T)(img)(_n11##x,_n6##y,z,c), I[678] = (T)(img)(_n12##x,_n6##y,z,c), I[679] = (T)(img)(_n13##x,_n6##y,z,c), I[680] = (T)(img)(_n14##x,_n6##y,z,c), I[681] = (T)(img)(_n15##x,_n6##y,z,c), \ + I[682] = (T)(img)(_p15##x,_n7##y,z,c), I[683] = (T)(img)(_p14##x,_n7##y,z,c), I[684] = (T)(img)(_p13##x,_n7##y,z,c), I[685] = (T)(img)(_p12##x,_n7##y,z,c), I[686] = (T)(img)(_p11##x,_n7##y,z,c), I[687] = (T)(img)(_p10##x,_n7##y,z,c), I[688] = (T)(img)(_p9##x,_n7##y,z,c), I[689] = (T)(img)(_p8##x,_n7##y,z,c), I[690] = (T)(img)(_p7##x,_n7##y,z,c), I[691] = (T)(img)(_p6##x,_n7##y,z,c), I[692] = (T)(img)(_p5##x,_n7##y,z,c), I[693] = (T)(img)(_p4##x,_n7##y,z,c), I[694] = (T)(img)(_p3##x,_n7##y,z,c), I[695] = (T)(img)(_p2##x,_n7##y,z,c), I[696] = (T)(img)(_p1##x,_n7##y,z,c), I[697] = (T)(img)(x,_n7##y,z,c), I[698] = (T)(img)(_n1##x,_n7##y,z,c), I[699] = (T)(img)(_n2##x,_n7##y,z,c), I[700] = (T)(img)(_n3##x,_n7##y,z,c), I[701] = (T)(img)(_n4##x,_n7##y,z,c), I[702] = (T)(img)(_n5##x,_n7##y,z,c), I[703] = (T)(img)(_n6##x,_n7##y,z,c), I[704] = (T)(img)(_n7##x,_n7##y,z,c), I[705] = (T)(img)(_n8##x,_n7##y,z,c), I[706] = (T)(img)(_n9##x,_n7##y,z,c), I[707] = (T)(img)(_n10##x,_n7##y,z,c), I[708] = (T)(img)(_n11##x,_n7##y,z,c), I[709] = (T)(img)(_n12##x,_n7##y,z,c), I[710] = (T)(img)(_n13##x,_n7##y,z,c), I[711] = (T)(img)(_n14##x,_n7##y,z,c), I[712] = (T)(img)(_n15##x,_n7##y,z,c), \ + I[713] = (T)(img)(_p15##x,_n8##y,z,c), I[714] = (T)(img)(_p14##x,_n8##y,z,c), I[715] = (T)(img)(_p13##x,_n8##y,z,c), I[716] = (T)(img)(_p12##x,_n8##y,z,c), I[717] = (T)(img)(_p11##x,_n8##y,z,c), I[718] = (T)(img)(_p10##x,_n8##y,z,c), I[719] = (T)(img)(_p9##x,_n8##y,z,c), I[720] = (T)(img)(_p8##x,_n8##y,z,c), I[721] = (T)(img)(_p7##x,_n8##y,z,c), I[722] = (T)(img)(_p6##x,_n8##y,z,c), I[723] = (T)(img)(_p5##x,_n8##y,z,c), I[724] = (T)(img)(_p4##x,_n8##y,z,c), I[725] = (T)(img)(_p3##x,_n8##y,z,c), I[726] = (T)(img)(_p2##x,_n8##y,z,c), I[727] = (T)(img)(_p1##x,_n8##y,z,c), I[728] = (T)(img)(x,_n8##y,z,c), I[729] = (T)(img)(_n1##x,_n8##y,z,c), I[730] = (T)(img)(_n2##x,_n8##y,z,c), I[731] = (T)(img)(_n3##x,_n8##y,z,c), I[732] = (T)(img)(_n4##x,_n8##y,z,c), I[733] = (T)(img)(_n5##x,_n8##y,z,c), I[734] = (T)(img)(_n6##x,_n8##y,z,c), I[735] = (T)(img)(_n7##x,_n8##y,z,c), I[736] = (T)(img)(_n8##x,_n8##y,z,c), I[737] = (T)(img)(_n9##x,_n8##y,z,c), I[738] = (T)(img)(_n10##x,_n8##y,z,c), I[739] = (T)(img)(_n11##x,_n8##y,z,c), I[740] = (T)(img)(_n12##x,_n8##y,z,c), I[741] = (T)(img)(_n13##x,_n8##y,z,c), I[742] = (T)(img)(_n14##x,_n8##y,z,c), I[743] = (T)(img)(_n15##x,_n8##y,z,c), \ + I[744] = (T)(img)(_p15##x,_n9##y,z,c), I[745] = (T)(img)(_p14##x,_n9##y,z,c), I[746] = (T)(img)(_p13##x,_n9##y,z,c), I[747] = (T)(img)(_p12##x,_n9##y,z,c), I[748] = (T)(img)(_p11##x,_n9##y,z,c), I[749] = (T)(img)(_p10##x,_n9##y,z,c), I[750] = (T)(img)(_p9##x,_n9##y,z,c), I[751] = (T)(img)(_p8##x,_n9##y,z,c), I[752] = (T)(img)(_p7##x,_n9##y,z,c), I[753] = (T)(img)(_p6##x,_n9##y,z,c), I[754] = (T)(img)(_p5##x,_n9##y,z,c), I[755] = (T)(img)(_p4##x,_n9##y,z,c), I[756] = (T)(img)(_p3##x,_n9##y,z,c), I[757] = (T)(img)(_p2##x,_n9##y,z,c), I[758] = (T)(img)(_p1##x,_n9##y,z,c), I[759] = (T)(img)(x,_n9##y,z,c), I[760] = (T)(img)(_n1##x,_n9##y,z,c), I[761] = (T)(img)(_n2##x,_n9##y,z,c), I[762] = (T)(img)(_n3##x,_n9##y,z,c), I[763] = (T)(img)(_n4##x,_n9##y,z,c), I[764] = (T)(img)(_n5##x,_n9##y,z,c), I[765] = (T)(img)(_n6##x,_n9##y,z,c), I[766] = (T)(img)(_n7##x,_n9##y,z,c), I[767] = (T)(img)(_n8##x,_n9##y,z,c), I[768] = (T)(img)(_n9##x,_n9##y,z,c), I[769] = (T)(img)(_n10##x,_n9##y,z,c), I[770] = (T)(img)(_n11##x,_n9##y,z,c), I[771] = (T)(img)(_n12##x,_n9##y,z,c), I[772] = (T)(img)(_n13##x,_n9##y,z,c), I[773] = (T)(img)(_n14##x,_n9##y,z,c), I[774] = (T)(img)(_n15##x,_n9##y,z,c), \ + I[775] = (T)(img)(_p15##x,_n10##y,z,c), I[776] = (T)(img)(_p14##x,_n10##y,z,c), I[777] = (T)(img)(_p13##x,_n10##y,z,c), I[778] = (T)(img)(_p12##x,_n10##y,z,c), I[779] = (T)(img)(_p11##x,_n10##y,z,c), I[780] = (T)(img)(_p10##x,_n10##y,z,c), I[781] = (T)(img)(_p9##x,_n10##y,z,c), I[782] = (T)(img)(_p8##x,_n10##y,z,c), I[783] = (T)(img)(_p7##x,_n10##y,z,c), I[784] = (T)(img)(_p6##x,_n10##y,z,c), I[785] = (T)(img)(_p5##x,_n10##y,z,c), I[786] = (T)(img)(_p4##x,_n10##y,z,c), I[787] = (T)(img)(_p3##x,_n10##y,z,c), I[788] = (T)(img)(_p2##x,_n10##y,z,c), I[789] = (T)(img)(_p1##x,_n10##y,z,c), I[790] = (T)(img)(x,_n10##y,z,c), I[791] = (T)(img)(_n1##x,_n10##y,z,c), I[792] = (T)(img)(_n2##x,_n10##y,z,c), I[793] = (T)(img)(_n3##x,_n10##y,z,c), I[794] = (T)(img)(_n4##x,_n10##y,z,c), I[795] = (T)(img)(_n5##x,_n10##y,z,c), I[796] = (T)(img)(_n6##x,_n10##y,z,c), I[797] = (T)(img)(_n7##x,_n10##y,z,c), I[798] = (T)(img)(_n8##x,_n10##y,z,c), I[799] = (T)(img)(_n9##x,_n10##y,z,c), I[800] = (T)(img)(_n10##x,_n10##y,z,c), I[801] = (T)(img)(_n11##x,_n10##y,z,c), I[802] = (T)(img)(_n12##x,_n10##y,z,c), I[803] = (T)(img)(_n13##x,_n10##y,z,c), I[804] = (T)(img)(_n14##x,_n10##y,z,c), I[805] = (T)(img)(_n15##x,_n10##y,z,c), \ + I[806] = (T)(img)(_p15##x,_n11##y,z,c), I[807] = (T)(img)(_p14##x,_n11##y,z,c), I[808] = (T)(img)(_p13##x,_n11##y,z,c), I[809] = (T)(img)(_p12##x,_n11##y,z,c), I[810] = (T)(img)(_p11##x,_n11##y,z,c), I[811] = (T)(img)(_p10##x,_n11##y,z,c), I[812] = (T)(img)(_p9##x,_n11##y,z,c), I[813] = (T)(img)(_p8##x,_n11##y,z,c), I[814] = (T)(img)(_p7##x,_n11##y,z,c), I[815] = (T)(img)(_p6##x,_n11##y,z,c), I[816] = (T)(img)(_p5##x,_n11##y,z,c), I[817] = (T)(img)(_p4##x,_n11##y,z,c), I[818] = (T)(img)(_p3##x,_n11##y,z,c), I[819] = (T)(img)(_p2##x,_n11##y,z,c), I[820] = (T)(img)(_p1##x,_n11##y,z,c), I[821] = (T)(img)(x,_n11##y,z,c), I[822] = (T)(img)(_n1##x,_n11##y,z,c), I[823] = (T)(img)(_n2##x,_n11##y,z,c), I[824] = (T)(img)(_n3##x,_n11##y,z,c), I[825] = (T)(img)(_n4##x,_n11##y,z,c), I[826] = (T)(img)(_n5##x,_n11##y,z,c), I[827] = (T)(img)(_n6##x,_n11##y,z,c), I[828] = (T)(img)(_n7##x,_n11##y,z,c), I[829] = (T)(img)(_n8##x,_n11##y,z,c), I[830] = (T)(img)(_n9##x,_n11##y,z,c), I[831] = (T)(img)(_n10##x,_n11##y,z,c), I[832] = (T)(img)(_n11##x,_n11##y,z,c), I[833] = (T)(img)(_n12##x,_n11##y,z,c), I[834] = (T)(img)(_n13##x,_n11##y,z,c), I[835] = (T)(img)(_n14##x,_n11##y,z,c), I[836] = (T)(img)(_n15##x,_n11##y,z,c), \ + I[837] = (T)(img)(_p15##x,_n12##y,z,c), I[838] = (T)(img)(_p14##x,_n12##y,z,c), I[839] = (T)(img)(_p13##x,_n12##y,z,c), I[840] = (T)(img)(_p12##x,_n12##y,z,c), I[841] = (T)(img)(_p11##x,_n12##y,z,c), I[842] = (T)(img)(_p10##x,_n12##y,z,c), I[843] = (T)(img)(_p9##x,_n12##y,z,c), I[844] = (T)(img)(_p8##x,_n12##y,z,c), I[845] = (T)(img)(_p7##x,_n12##y,z,c), I[846] = (T)(img)(_p6##x,_n12##y,z,c), I[847] = (T)(img)(_p5##x,_n12##y,z,c), I[848] = (T)(img)(_p4##x,_n12##y,z,c), I[849] = (T)(img)(_p3##x,_n12##y,z,c), I[850] = (T)(img)(_p2##x,_n12##y,z,c), I[851] = (T)(img)(_p1##x,_n12##y,z,c), I[852] = (T)(img)(x,_n12##y,z,c), I[853] = (T)(img)(_n1##x,_n12##y,z,c), I[854] = (T)(img)(_n2##x,_n12##y,z,c), I[855] = (T)(img)(_n3##x,_n12##y,z,c), I[856] = (T)(img)(_n4##x,_n12##y,z,c), I[857] = (T)(img)(_n5##x,_n12##y,z,c), I[858] = (T)(img)(_n6##x,_n12##y,z,c), I[859] = (T)(img)(_n7##x,_n12##y,z,c), I[860] = (T)(img)(_n8##x,_n12##y,z,c), I[861] = (T)(img)(_n9##x,_n12##y,z,c), I[862] = (T)(img)(_n10##x,_n12##y,z,c), I[863] = (T)(img)(_n11##x,_n12##y,z,c), I[864] = (T)(img)(_n12##x,_n12##y,z,c), I[865] = (T)(img)(_n13##x,_n12##y,z,c), I[866] = (T)(img)(_n14##x,_n12##y,z,c), I[867] = (T)(img)(_n15##x,_n12##y,z,c), \ + I[868] = (T)(img)(_p15##x,_n13##y,z,c), I[869] = (T)(img)(_p14##x,_n13##y,z,c), I[870] = (T)(img)(_p13##x,_n13##y,z,c), I[871] = (T)(img)(_p12##x,_n13##y,z,c), I[872] = (T)(img)(_p11##x,_n13##y,z,c), I[873] = (T)(img)(_p10##x,_n13##y,z,c), I[874] = (T)(img)(_p9##x,_n13##y,z,c), I[875] = (T)(img)(_p8##x,_n13##y,z,c), I[876] = (T)(img)(_p7##x,_n13##y,z,c), I[877] = (T)(img)(_p6##x,_n13##y,z,c), I[878] = (T)(img)(_p5##x,_n13##y,z,c), I[879] = (T)(img)(_p4##x,_n13##y,z,c), I[880] = (T)(img)(_p3##x,_n13##y,z,c), I[881] = (T)(img)(_p2##x,_n13##y,z,c), I[882] = (T)(img)(_p1##x,_n13##y,z,c), I[883] = (T)(img)(x,_n13##y,z,c), I[884] = (T)(img)(_n1##x,_n13##y,z,c), I[885] = (T)(img)(_n2##x,_n13##y,z,c), I[886] = (T)(img)(_n3##x,_n13##y,z,c), I[887] = (T)(img)(_n4##x,_n13##y,z,c), I[888] = (T)(img)(_n5##x,_n13##y,z,c), I[889] = (T)(img)(_n6##x,_n13##y,z,c), I[890] = (T)(img)(_n7##x,_n13##y,z,c), I[891] = (T)(img)(_n8##x,_n13##y,z,c), I[892] = (T)(img)(_n9##x,_n13##y,z,c), I[893] = (T)(img)(_n10##x,_n13##y,z,c), I[894] = (T)(img)(_n11##x,_n13##y,z,c), I[895] = (T)(img)(_n12##x,_n13##y,z,c), I[896] = (T)(img)(_n13##x,_n13##y,z,c), I[897] = (T)(img)(_n14##x,_n13##y,z,c), I[898] = (T)(img)(_n15##x,_n13##y,z,c), \ + I[899] = (T)(img)(_p15##x,_n14##y,z,c), I[900] = (T)(img)(_p14##x,_n14##y,z,c), I[901] = (T)(img)(_p13##x,_n14##y,z,c), I[902] = (T)(img)(_p12##x,_n14##y,z,c), I[903] = (T)(img)(_p11##x,_n14##y,z,c), I[904] = (T)(img)(_p10##x,_n14##y,z,c), I[905] = (T)(img)(_p9##x,_n14##y,z,c), I[906] = (T)(img)(_p8##x,_n14##y,z,c), I[907] = (T)(img)(_p7##x,_n14##y,z,c), I[908] = (T)(img)(_p6##x,_n14##y,z,c), I[909] = (T)(img)(_p5##x,_n14##y,z,c), I[910] = (T)(img)(_p4##x,_n14##y,z,c), I[911] = (T)(img)(_p3##x,_n14##y,z,c), I[912] = (T)(img)(_p2##x,_n14##y,z,c), I[913] = (T)(img)(_p1##x,_n14##y,z,c), I[914] = (T)(img)(x,_n14##y,z,c), I[915] = (T)(img)(_n1##x,_n14##y,z,c), I[916] = (T)(img)(_n2##x,_n14##y,z,c), I[917] = (T)(img)(_n3##x,_n14##y,z,c), I[918] = (T)(img)(_n4##x,_n14##y,z,c), I[919] = (T)(img)(_n5##x,_n14##y,z,c), I[920] = (T)(img)(_n6##x,_n14##y,z,c), I[921] = (T)(img)(_n7##x,_n14##y,z,c), I[922] = (T)(img)(_n8##x,_n14##y,z,c), I[923] = (T)(img)(_n9##x,_n14##y,z,c), I[924] = (T)(img)(_n10##x,_n14##y,z,c), I[925] = (T)(img)(_n11##x,_n14##y,z,c), I[926] = (T)(img)(_n12##x,_n14##y,z,c), I[927] = (T)(img)(_n13##x,_n14##y,z,c), I[928] = (T)(img)(_n14##x,_n14##y,z,c), I[929] = (T)(img)(_n15##x,_n14##y,z,c), \ + I[930] = (T)(img)(_p15##x,_n15##y,z,c), I[931] = (T)(img)(_p14##x,_n15##y,z,c), I[932] = (T)(img)(_p13##x,_n15##y,z,c), I[933] = (T)(img)(_p12##x,_n15##y,z,c), I[934] = (T)(img)(_p11##x,_n15##y,z,c), I[935] = (T)(img)(_p10##x,_n15##y,z,c), I[936] = (T)(img)(_p9##x,_n15##y,z,c), I[937] = (T)(img)(_p8##x,_n15##y,z,c), I[938] = (T)(img)(_p7##x,_n15##y,z,c), I[939] = (T)(img)(_p6##x,_n15##y,z,c), I[940] = (T)(img)(_p5##x,_n15##y,z,c), I[941] = (T)(img)(_p4##x,_n15##y,z,c), I[942] = (T)(img)(_p3##x,_n15##y,z,c), I[943] = (T)(img)(_p2##x,_n15##y,z,c), I[944] = (T)(img)(_p1##x,_n15##y,z,c), I[945] = (T)(img)(x,_n15##y,z,c), I[946] = (T)(img)(_n1##x,_n15##y,z,c), I[947] = (T)(img)(_n2##x,_n15##y,z,c), I[948] = (T)(img)(_n3##x,_n15##y,z,c), I[949] = (T)(img)(_n4##x,_n15##y,z,c), I[950] = (T)(img)(_n5##x,_n15##y,z,c), I[951] = (T)(img)(_n6##x,_n15##y,z,c), I[952] = (T)(img)(_n7##x,_n15##y,z,c), I[953] = (T)(img)(_n8##x,_n15##y,z,c), I[954] = (T)(img)(_n9##x,_n15##y,z,c), I[955] = (T)(img)(_n10##x,_n15##y,z,c), I[956] = (T)(img)(_n11##x,_n15##y,z,c), I[957] = (T)(img)(_n12##x,_n15##y,z,c), I[958] = (T)(img)(_n13##x,_n15##y,z,c), I[959] = (T)(img)(_n14##x,_n15##y,z,c), I[960] = (T)(img)(_n15##x,_n15##y,z,c); + +// Define 32x32 loop macros +//------------------------- +#define cimg_for32(bound,i) for (int i = 0, \ + _p15##i = 0, _p14##i = 0, _p13##i = 0, _p12##i = 0, _p11##i = 0, _p10##i = 0, _p9##i = 0, _p8##i = 0, _p7##i = 0, _p6##i = 0, _p5##i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4, \ + _n5##i = 5>=(int)(bound)?(int)(bound) - 1:5, \ + _n6##i = 6>=(int)(bound)?(int)(bound) - 1:6, \ + _n7##i = 7>=(int)(bound)?(int)(bound) - 1:7, \ + _n8##i = 8>=(int)(bound)?(int)(bound) - 1:8, \ + _n9##i = 9>=(int)(bound)?(int)(bound) - 1:9, \ + _n10##i = 10>=(int)(bound)?(int)(bound) - 1:10, \ + _n11##i = 11>=(int)(bound)?(int)(bound) - 1:11, \ + _n12##i = 12>=(int)(bound)?(int)(bound) - 1:12, \ + _n13##i = 13>=(int)(bound)?(int)(bound) - 1:13, \ + _n14##i = 14>=(int)(bound)?(int)(bound) - 1:14, \ + _n15##i = 15>=(int)(bound)?(int)(bound) - 1:15, \ + _n16##i = 16>=(int)(bound)?(int)(bound) - 1:16; \ + _n16##i<(int)(bound) || _n15##i==--_n16##i || _n14##i==--_n15##i || _n13##i==--_n14##i || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n16##i = _n15##i = _n14##i = _n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i); \ + _p15##i = _p14##i, _p14##i = _p13##i, _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i, ++_n14##i, ++_n15##i, ++_n16##i) + +#define cimg_for32X(img,x) cimg_for32((img)._width,x) +#define cimg_for32Y(img,y) cimg_for32((img)._height,y) +#define cimg_for32Z(img,z) cimg_for32((img)._depth,z) +#define cimg_for32C(img,c) cimg_for32((img)._spectrum,c) +#define cimg_for32XY(img,x,y) cimg_for32Y(img,y) cimg_for32X(img,x) +#define cimg_for32XZ(img,x,z) cimg_for32Z(img,z) cimg_for32X(img,x) +#define cimg_for32XC(img,x,c) cimg_for32C(img,c) cimg_for32X(img,x) +#define cimg_for32YZ(img,y,z) cimg_for32Z(img,z) cimg_for32Y(img,y) +#define cimg_for32YC(img,y,c) cimg_for32C(img,c) cimg_for32Y(img,y) +#define cimg_for32ZC(img,z,c) cimg_for32C(img,c) cimg_for32Z(img,z) +#define cimg_for32XYZ(img,x,y,z) cimg_for32Z(img,z) cimg_for32XY(img,x,y) +#define cimg_for32XZC(img,x,z,c) cimg_for32C(img,c) cimg_for32XZ(img,x,z) +#define cimg_for32YZC(img,y,z,c) cimg_for32C(img,c) cimg_for32YZ(img,y,z) +#define cimg_for32XYZC(img,x,y,z,c) cimg_for32C(img,c) cimg_for32XYZ(img,x,y,z) + +#define cimg_for_in32(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \ + _p15##i = i - 15<0?0:i - 15, \ + _p14##i = i - 14<0?0:i - 14, \ + _p13##i = i - 13<0?0:i - 13, \ + _p12##i = i - 12<0?0:i - 12, \ + _p11##i = i - 11<0?0:i - 11, \ + _p10##i = i - 10<0?0:i - 10, \ + _p9##i = i - 9<0?0:i - 9, \ + _p8##i = i - 8<0?0:i - 8, \ + _p7##i = i - 7<0?0:i - 7, \ + _p6##i = i - 6<0?0:i - 6, \ + _p5##i = i - 5<0?0:i - 5, \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4, \ + _n5##i = i + 5>=(int)(bound)?(int)(bound) - 1:i + 5, \ + _n6##i = i + 6>=(int)(bound)?(int)(bound) - 1:i + 6, \ + _n7##i = i + 7>=(int)(bound)?(int)(bound) - 1:i + 7, \ + _n8##i = i + 8>=(int)(bound)?(int)(bound) - 1:i + 8, \ + _n9##i = i + 9>=(int)(bound)?(int)(bound) - 1:i + 9, \ + _n10##i = i + 10>=(int)(bound)?(int)(bound) - 1:i + 10, \ + _n11##i = i + 11>=(int)(bound)?(int)(bound) - 1:i + 11, \ + _n12##i = i + 12>=(int)(bound)?(int)(bound) - 1:i + 12, \ + _n13##i = i + 13>=(int)(bound)?(int)(bound) - 1:i + 13, \ + _n14##i = i + 14>=(int)(bound)?(int)(bound) - 1:i + 14, \ + _n15##i = i + 15>=(int)(bound)?(int)(bound) - 1:i + 15, \ + _n16##i = i + 16>=(int)(bound)?(int)(bound) - 1:i + 16; \ + i<=(int)(i1) && (_n16##i<(int)(bound) || _n15##i==--_n16##i || _n14##i==--_n15##i || _n13##i==--_n14##i || _n12##i==--_n13##i || _n11##i==--_n12##i || _n10##i==--_n11##i || _n9##i==--_n10##i || _n8##i==--_n9##i || _n7##i==--_n8##i || _n6##i==--_n7##i || _n5##i==--_n6##i || _n4##i==--_n5##i || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n16##i = _n15##i = _n14##i = _n13##i = _n12##i = _n11##i = _n10##i = _n9##i = _n8##i = _n7##i = _n6##i = _n5##i = _n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p15##i = _p14##i, _p14##i = _p13##i, _p13##i = _p12##i, _p12##i = _p11##i, _p11##i = _p10##i, _p10##i = _p9##i, _p9##i = _p8##i, _p8##i = _p7##i, _p7##i = _p6##i, _p6##i = _p5##i, _p5##i = _p4##i, _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, \ + ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i, ++_n5##i, ++_n6##i, ++_n7##i, ++_n8##i, ++_n9##i, ++_n10##i, ++_n11##i, ++_n12##i, ++_n13##i, ++_n14##i, ++_n15##i, ++_n16##i) + +#define cimg_for_in32X(img,x0,x1,x) cimg_for_in32((img)._width,x0,x1,x) +#define cimg_for_in32Y(img,y0,y1,y) cimg_for_in32((img)._height,y0,y1,y) +#define cimg_for_in32Z(img,z0,z1,z) cimg_for_in32((img)._depth,z0,z1,z) +#define cimg_for_in32C(img,c0,c1,c) cimg_for_in32((img)._spectrum,c0,c1,c) +#define cimg_for_in32XY(img,x0,y0,x1,y1,x,y) cimg_for_in32Y(img,y0,y1,y) cimg_for_in32X(img,x0,x1,x) +#define cimg_for_in32XZ(img,x0,z0,x1,z1,x,z) cimg_for_in32Z(img,z0,z1,z) cimg_for_in32X(img,x0,x1,x) +#define cimg_for_in32XC(img,x0,c0,x1,c1,x,c) cimg_for_in32C(img,c0,c1,c) cimg_for_in32X(img,x0,x1,x) +#define cimg_for_in32YZ(img,y0,z0,y1,z1,y,z) cimg_for_in32Z(img,z0,z1,z) cimg_for_in32Y(img,y0,y1,y) +#define cimg_for_in32YC(img,y0,c0,y1,c1,y,c) cimg_for_in32C(img,c0,c1,c) cimg_for_in32Y(img,y0,y1,y) +#define cimg_for_in32ZC(img,z0,c0,z1,c1,z,c) cimg_for_in32C(img,c0,c1,c) cimg_for_in32Z(img,z0,z1,z) +#define cimg_for_in32XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in32Z(img,z0,z1,z) cimg_for_in32XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in32XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in32C(img,c0,c1,c) cimg_for_in32XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in32YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in32C(img,c0,c1,c) cimg_for_in32YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in32XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in32C(img,c0,c1,c) cimg_for_in32XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for32x32(img,x,y,z,c,I,T) \ + cimg_for32((img)._height,y) for (int x = 0, \ + _p15##x = 0, _p14##x = 0, _p13##x = 0, _p12##x = 0, _p11##x = 0, _p10##x = 0, _p9##x = 0, _p8##x = 0, _p7##x = 0, _p6##x = 0, _p5##x = 0, _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = 4>=((img)._width)?(img).width() - 1:4, \ + _n5##x = 5>=((img)._width)?(img).width() - 1:5, \ + _n6##x = 6>=((img)._width)?(img).width() - 1:6, \ + _n7##x = 7>=((img)._width)?(img).width() - 1:7, \ + _n8##x = 8>=((img)._width)?(img).width() - 1:8, \ + _n9##x = 9>=((img)._width)?(img).width() - 1:9, \ + _n10##x = 10>=((img)._width)?(img).width() - 1:10, \ + _n11##x = 11>=((img)._width)?(img).width() - 1:11, \ + _n12##x = 12>=((img)._width)?(img).width() - 1:12, \ + _n13##x = 13>=((img)._width)?(img).width() - 1:13, \ + _n14##x = 14>=((img)._width)?(img).width() - 1:14, \ + _n15##x = 15>=((img)._width)?(img).width() - 1:15, \ + _n16##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = I[5] = I[6] = I[7] = I[8] = I[9] = I[10] = I[11] = I[12] = I[13] = I[14] = I[15] = (T)(img)(0,_p15##y,z,c)), \ + (I[32] = I[33] = I[34] = I[35] = I[36] = I[37] = I[38] = I[39] = I[40] = I[41] = I[42] = I[43] = I[44] = I[45] = I[46] = I[47] = (T)(img)(0,_p14##y,z,c)), \ + (I[64] = I[65] = I[66] = I[67] = I[68] = I[69] = I[70] = I[71] = I[72] = I[73] = I[74] = I[75] = I[76] = I[77] = I[78] = I[79] = (T)(img)(0,_p13##y,z,c)), \ + (I[96] = I[97] = I[98] = I[99] = I[100] = I[101] = I[102] = I[103] = I[104] = I[105] = I[106] = I[107] = I[108] = I[109] = I[110] = I[111] = (T)(img)(0,_p12##y,z,c)), \ + (I[128] = I[129] = I[130] = I[131] = I[132] = I[133] = I[134] = I[135] = I[136] = I[137] = I[138] = I[139] = I[140] = I[141] = I[142] = I[143] = (T)(img)(0,_p11##y,z,c)), \ + (I[160] = I[161] = I[162] = I[163] = I[164] = I[165] = I[166] = I[167] = I[168] = I[169] = I[170] = I[171] = I[172] = I[173] = I[174] = I[175] = (T)(img)(0,_p10##y,z,c)), \ + (I[192] = I[193] = I[194] = I[195] = I[196] = I[197] = I[198] = I[199] = I[200] = I[201] = I[202] = I[203] = I[204] = I[205] = I[206] = I[207] = (T)(img)(0,_p9##y,z,c)), \ + (I[224] = I[225] = I[226] = I[227] = I[228] = I[229] = I[230] = I[231] = I[232] = I[233] = I[234] = I[235] = I[236] = I[237] = I[238] = I[239] = (T)(img)(0,_p8##y,z,c)), \ + (I[256] = I[257] = I[258] = I[259] = I[260] = I[261] = I[262] = I[263] = I[264] = I[265] = I[266] = I[267] = I[268] = I[269] = I[270] = I[271] = (T)(img)(0,_p7##y,z,c)), \ + (I[288] = I[289] = I[290] = I[291] = I[292] = I[293] = I[294] = I[295] = I[296] = I[297] = I[298] = I[299] = I[300] = I[301] = I[302] = I[303] = (T)(img)(0,_p6##y,z,c)), \ + (I[320] = I[321] = I[322] = I[323] = I[324] = I[325] = I[326] = I[327] = I[328] = I[329] = I[330] = I[331] = I[332] = I[333] = I[334] = I[335] = (T)(img)(0,_p5##y,z,c)), \ + (I[352] = I[353] = I[354] = I[355] = I[356] = I[357] = I[358] = I[359] = I[360] = I[361] = I[362] = I[363] = I[364] = I[365] = I[366] = I[367] = (T)(img)(0,_p4##y,z,c)), \ + (I[384] = I[385] = I[386] = I[387] = I[388] = I[389] = I[390] = I[391] = I[392] = I[393] = I[394] = I[395] = I[396] = I[397] = I[398] = I[399] = (T)(img)(0,_p3##y,z,c)), \ + (I[416] = I[417] = I[418] = I[419] = I[420] = I[421] = I[422] = I[423] = I[424] = I[425] = I[426] = I[427] = I[428] = I[429] = I[430] = I[431] = (T)(img)(0,_p2##y,z,c)), \ + (I[448] = I[449] = I[450] = I[451] = I[452] = I[453] = I[454] = I[455] = I[456] = I[457] = I[458] = I[459] = I[460] = I[461] = I[462] = I[463] = (T)(img)(0,_p1##y,z,c)), \ + (I[480] = I[481] = I[482] = I[483] = I[484] = I[485] = I[486] = I[487] = I[488] = I[489] = I[490] = I[491] = I[492] = I[493] = I[494] = I[495] = (T)(img)(0,y,z,c)), \ + (I[512] = I[513] = I[514] = I[515] = I[516] = I[517] = I[518] = I[519] = I[520] = I[521] = I[522] = I[523] = I[524] = I[525] = I[526] = I[527] = (T)(img)(0,_n1##y,z,c)), \ + (I[544] = I[545] = I[546] = I[547] = I[548] = I[549] = I[550] = I[551] = I[552] = I[553] = I[554] = I[555] = I[556] = I[557] = I[558] = I[559] = (T)(img)(0,_n2##y,z,c)), \ + (I[576] = I[577] = I[578] = I[579] = I[580] = I[581] = I[582] = I[583] = I[584] = I[585] = I[586] = I[587] = I[588] = I[589] = I[590] = I[591] = (T)(img)(0,_n3##y,z,c)), \ + (I[608] = I[609] = I[610] = I[611] = I[612] = I[613] = I[614] = I[615] = I[616] = I[617] = I[618] = I[619] = I[620] = I[621] = I[622] = I[623] = (T)(img)(0,_n4##y,z,c)), \ + (I[640] = I[641] = I[642] = I[643] = I[644] = I[645] = I[646] = I[647] = I[648] = I[649] = I[650] = I[651] = I[652] = I[653] = I[654] = I[655] = (T)(img)(0,_n5##y,z,c)), \ + (I[672] = I[673] = I[674] = I[675] = I[676] = I[677] = I[678] = I[679] = I[680] = I[681] = I[682] = I[683] = I[684] = I[685] = I[686] = I[687] = (T)(img)(0,_n6##y,z,c)), \ + (I[704] = I[705] = I[706] = I[707] = I[708] = I[709] = I[710] = I[711] = I[712] = I[713] = I[714] = I[715] = I[716] = I[717] = I[718] = I[719] = (T)(img)(0,_n7##y,z,c)), \ + (I[736] = I[737] = I[738] = I[739] = I[740] = I[741] = I[742] = I[743] = I[744] = I[745] = I[746] = I[747] = I[748] = I[749] = I[750] = I[751] = (T)(img)(0,_n8##y,z,c)), \ + (I[768] = I[769] = I[770] = I[771] = I[772] = I[773] = I[774] = I[775] = I[776] = I[777] = I[778] = I[779] = I[780] = I[781] = I[782] = I[783] = (T)(img)(0,_n9##y,z,c)), \ + (I[800] = I[801] = I[802] = I[803] = I[804] = I[805] = I[806] = I[807] = I[808] = I[809] = I[810] = I[811] = I[812] = I[813] = I[814] = I[815] = (T)(img)(0,_n10##y,z,c)), \ + (I[832] = I[833] = I[834] = I[835] = I[836] = I[837] = I[838] = I[839] = I[840] = I[841] = I[842] = I[843] = I[844] = I[845] = I[846] = I[847] = (T)(img)(0,_n11##y,z,c)), \ + (I[864] = I[865] = I[866] = I[867] = I[868] = I[869] = I[870] = I[871] = I[872] = I[873] = I[874] = I[875] = I[876] = I[877] = I[878] = I[879] = (T)(img)(0,_n12##y,z,c)), \ + (I[896] = I[897] = I[898] = I[899] = I[900] = I[901] = I[902] = I[903] = I[904] = I[905] = I[906] = I[907] = I[908] = I[909] = I[910] = I[911] = (T)(img)(0,_n13##y,z,c)), \ + (I[928] = I[929] = I[930] = I[931] = I[932] = I[933] = I[934] = I[935] = I[936] = I[937] = I[938] = I[939] = I[940] = I[941] = I[942] = I[943] = (T)(img)(0,_n14##y,z,c)), \ + (I[960] = I[961] = I[962] = I[963] = I[964] = I[965] = I[966] = I[967] = I[968] = I[969] = I[970] = I[971] = I[972] = I[973] = I[974] = I[975] = (T)(img)(0,_n15##y,z,c)), \ + (I[992] = I[993] = I[994] = I[995] = I[996] = I[997] = I[998] = I[999] = I[1000] = I[1001] = I[1002] = I[1003] = I[1004] = I[1005] = I[1006] = I[1007] = (T)(img)(0,_n16##y,z,c)), \ + (I[16] = (T)(img)(_n1##x,_p15##y,z,c)), \ + (I[48] = (T)(img)(_n1##x,_p14##y,z,c)), \ + (I[80] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[112] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[144] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[176] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[208] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[240] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[272] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[304] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[336] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[368] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[400] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[432] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[464] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[496] = (T)(img)(_n1##x,y,z,c)), \ + (I[528] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[560] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[592] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[624] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[656] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[688] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[720] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[752] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[784] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[816] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[848] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[880] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[912] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[944] = (T)(img)(_n1##x,_n14##y,z,c)), \ + (I[976] = (T)(img)(_n1##x,_n15##y,z,c)), \ + (I[1008] = (T)(img)(_n1##x,_n16##y,z,c)), \ + (I[17] = (T)(img)(_n2##x,_p15##y,z,c)), \ + (I[49] = (T)(img)(_n2##x,_p14##y,z,c)), \ + (I[81] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[113] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[145] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[177] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[209] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[241] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[273] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[305] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[337] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[369] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[401] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[433] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[465] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[497] = (T)(img)(_n2##x,y,z,c)), \ + (I[529] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[561] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[593] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[625] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[657] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[689] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[721] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[753] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[785] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[817] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[849] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[881] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[913] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[945] = (T)(img)(_n2##x,_n14##y,z,c)), \ + (I[977] = (T)(img)(_n2##x,_n15##y,z,c)), \ + (I[1009] = (T)(img)(_n2##x,_n16##y,z,c)), \ + (I[18] = (T)(img)(_n3##x,_p15##y,z,c)), \ + (I[50] = (T)(img)(_n3##x,_p14##y,z,c)), \ + (I[82] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[114] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[146] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[178] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[210] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[242] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[274] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[306] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[338] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[370] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[402] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[434] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[466] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[498] = (T)(img)(_n3##x,y,z,c)), \ + (I[530] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[562] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[594] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[626] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[658] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[690] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[722] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[754] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[786] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[818] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[850] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[882] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[914] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[946] = (T)(img)(_n3##x,_n14##y,z,c)), \ + (I[978] = (T)(img)(_n3##x,_n15##y,z,c)), \ + (I[1010] = (T)(img)(_n3##x,_n16##y,z,c)), \ + (I[19] = (T)(img)(_n4##x,_p15##y,z,c)), \ + (I[51] = (T)(img)(_n4##x,_p14##y,z,c)), \ + (I[83] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[115] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[147] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[179] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[211] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[243] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[275] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[307] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[339] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[371] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[403] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[435] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[467] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[499] = (T)(img)(_n4##x,y,z,c)), \ + (I[531] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[563] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[595] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[627] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[659] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[691] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[723] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[755] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[787] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[819] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[851] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[883] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[915] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[947] = (T)(img)(_n4##x,_n14##y,z,c)), \ + (I[979] = (T)(img)(_n4##x,_n15##y,z,c)), \ + (I[1011] = (T)(img)(_n4##x,_n16##y,z,c)), \ + (I[20] = (T)(img)(_n5##x,_p15##y,z,c)), \ + (I[52] = (T)(img)(_n5##x,_p14##y,z,c)), \ + (I[84] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[116] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[148] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[180] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[212] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[244] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[276] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[308] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[340] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[372] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[404] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[436] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[468] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[500] = (T)(img)(_n5##x,y,z,c)), \ + (I[532] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[564] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[596] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[628] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[660] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[692] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[724] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[756] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[788] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[820] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[852] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[884] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[916] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[948] = (T)(img)(_n5##x,_n14##y,z,c)), \ + (I[980] = (T)(img)(_n5##x,_n15##y,z,c)), \ + (I[1012] = (T)(img)(_n5##x,_n16##y,z,c)), \ + (I[21] = (T)(img)(_n6##x,_p15##y,z,c)), \ + (I[53] = (T)(img)(_n6##x,_p14##y,z,c)), \ + (I[85] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[117] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[149] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[181] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[213] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[245] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[277] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[309] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[341] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[373] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[405] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[437] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[469] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[501] = (T)(img)(_n6##x,y,z,c)), \ + (I[533] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[565] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[597] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[629] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[661] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[693] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[725] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[757] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[789] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[821] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[853] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[885] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[917] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[949] = (T)(img)(_n6##x,_n14##y,z,c)), \ + (I[981] = (T)(img)(_n6##x,_n15##y,z,c)), \ + (I[1013] = (T)(img)(_n6##x,_n16##y,z,c)), \ + (I[22] = (T)(img)(_n7##x,_p15##y,z,c)), \ + (I[54] = (T)(img)(_n7##x,_p14##y,z,c)), \ + (I[86] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[118] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[150] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[182] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[214] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[246] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[278] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[310] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[342] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[374] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[406] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[438] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[470] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[502] = (T)(img)(_n7##x,y,z,c)), \ + (I[534] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[566] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[598] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[630] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[662] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[694] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[726] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[758] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[790] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[822] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[854] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[886] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[918] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[950] = (T)(img)(_n7##x,_n14##y,z,c)), \ + (I[982] = (T)(img)(_n7##x,_n15##y,z,c)), \ + (I[1014] = (T)(img)(_n7##x,_n16##y,z,c)), \ + (I[23] = (T)(img)(_n8##x,_p15##y,z,c)), \ + (I[55] = (T)(img)(_n8##x,_p14##y,z,c)), \ + (I[87] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[119] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[151] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[183] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[215] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[247] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[279] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[311] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[343] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[375] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[407] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[439] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[471] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[503] = (T)(img)(_n8##x,y,z,c)), \ + (I[535] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[567] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[599] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[631] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[663] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[695] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[727] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[759] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[791] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[823] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[855] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[887] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[919] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[951] = (T)(img)(_n8##x,_n14##y,z,c)), \ + (I[983] = (T)(img)(_n8##x,_n15##y,z,c)), \ + (I[1015] = (T)(img)(_n8##x,_n16##y,z,c)), \ + (I[24] = (T)(img)(_n9##x,_p15##y,z,c)), \ + (I[56] = (T)(img)(_n9##x,_p14##y,z,c)), \ + (I[88] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[120] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[152] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[184] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[216] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[248] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[280] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[312] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[344] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[376] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[408] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[440] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[472] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[504] = (T)(img)(_n9##x,y,z,c)), \ + (I[536] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[568] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[600] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[632] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[664] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[696] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[728] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[760] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[792] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[824] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[856] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[888] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[920] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[952] = (T)(img)(_n9##x,_n14##y,z,c)), \ + (I[984] = (T)(img)(_n9##x,_n15##y,z,c)), \ + (I[1016] = (T)(img)(_n9##x,_n16##y,z,c)), \ + (I[25] = (T)(img)(_n10##x,_p15##y,z,c)), \ + (I[57] = (T)(img)(_n10##x,_p14##y,z,c)), \ + (I[89] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[121] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[153] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[185] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[217] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[249] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[281] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[313] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[345] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[377] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[409] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[441] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[473] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[505] = (T)(img)(_n10##x,y,z,c)), \ + (I[537] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[569] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[601] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[633] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[665] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[697] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[729] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[761] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[793] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[825] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[857] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[889] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[921] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[953] = (T)(img)(_n10##x,_n14##y,z,c)), \ + (I[985] = (T)(img)(_n10##x,_n15##y,z,c)), \ + (I[1017] = (T)(img)(_n10##x,_n16##y,z,c)), \ + (I[26] = (T)(img)(_n11##x,_p15##y,z,c)), \ + (I[58] = (T)(img)(_n11##x,_p14##y,z,c)), \ + (I[90] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[122] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[154] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[186] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[218] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[250] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[282] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[314] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[346] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[378] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[410] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[442] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[474] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[506] = (T)(img)(_n11##x,y,z,c)), \ + (I[538] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[570] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[602] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[634] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[666] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[698] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[730] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[762] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[794] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[826] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[858] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[890] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[922] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[954] = (T)(img)(_n11##x,_n14##y,z,c)), \ + (I[986] = (T)(img)(_n11##x,_n15##y,z,c)), \ + (I[1018] = (T)(img)(_n11##x,_n16##y,z,c)), \ + (I[27] = (T)(img)(_n12##x,_p15##y,z,c)), \ + (I[59] = (T)(img)(_n12##x,_p14##y,z,c)), \ + (I[91] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[123] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[155] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[187] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[219] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[251] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[283] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[315] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[347] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[379] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[411] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[443] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[475] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[507] = (T)(img)(_n12##x,y,z,c)), \ + (I[539] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[571] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[603] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[635] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[667] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[699] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[731] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[763] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[795] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[827] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[859] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[891] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[923] = (T)(img)(_n12##x,_n13##y,z,c)), \ + (I[955] = (T)(img)(_n12##x,_n14##y,z,c)), \ + (I[987] = (T)(img)(_n12##x,_n15##y,z,c)), \ + (I[1019] = (T)(img)(_n12##x,_n16##y,z,c)), \ + (I[28] = (T)(img)(_n13##x,_p15##y,z,c)), \ + (I[60] = (T)(img)(_n13##x,_p14##y,z,c)), \ + (I[92] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[124] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[156] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[188] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[220] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[252] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[284] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[316] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[348] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[380] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[412] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[444] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[476] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[508] = (T)(img)(_n13##x,y,z,c)), \ + (I[540] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[572] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[604] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[636] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[668] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[700] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[732] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[764] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[796] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[828] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[860] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[892] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[924] = (T)(img)(_n13##x,_n13##y,z,c)), \ + (I[956] = (T)(img)(_n13##x,_n14##y,z,c)), \ + (I[988] = (T)(img)(_n13##x,_n15##y,z,c)), \ + (I[1020] = (T)(img)(_n13##x,_n16##y,z,c)), \ + (I[29] = (T)(img)(_n14##x,_p15##y,z,c)), \ + (I[61] = (T)(img)(_n14##x,_p14##y,z,c)), \ + (I[93] = (T)(img)(_n14##x,_p13##y,z,c)), \ + (I[125] = (T)(img)(_n14##x,_p12##y,z,c)), \ + (I[157] = (T)(img)(_n14##x,_p11##y,z,c)), \ + (I[189] = (T)(img)(_n14##x,_p10##y,z,c)), \ + (I[221] = (T)(img)(_n14##x,_p9##y,z,c)), \ + (I[253] = (T)(img)(_n14##x,_p8##y,z,c)), \ + (I[285] = (T)(img)(_n14##x,_p7##y,z,c)), \ + (I[317] = (T)(img)(_n14##x,_p6##y,z,c)), \ + (I[349] = (T)(img)(_n14##x,_p5##y,z,c)), \ + (I[381] = (T)(img)(_n14##x,_p4##y,z,c)), \ + (I[413] = (T)(img)(_n14##x,_p3##y,z,c)), \ + (I[445] = (T)(img)(_n14##x,_p2##y,z,c)), \ + (I[477] = (T)(img)(_n14##x,_p1##y,z,c)), \ + (I[509] = (T)(img)(_n14##x,y,z,c)), \ + (I[541] = (T)(img)(_n14##x,_n1##y,z,c)), \ + (I[573] = (T)(img)(_n14##x,_n2##y,z,c)), \ + (I[605] = (T)(img)(_n14##x,_n3##y,z,c)), \ + (I[637] = (T)(img)(_n14##x,_n4##y,z,c)), \ + (I[669] = (T)(img)(_n14##x,_n5##y,z,c)), \ + (I[701] = (T)(img)(_n14##x,_n6##y,z,c)), \ + (I[733] = (T)(img)(_n14##x,_n7##y,z,c)), \ + (I[765] = (T)(img)(_n14##x,_n8##y,z,c)), \ + (I[797] = (T)(img)(_n14##x,_n9##y,z,c)), \ + (I[829] = (T)(img)(_n14##x,_n10##y,z,c)), \ + (I[861] = (T)(img)(_n14##x,_n11##y,z,c)), \ + (I[893] = (T)(img)(_n14##x,_n12##y,z,c)), \ + (I[925] = (T)(img)(_n14##x,_n13##y,z,c)), \ + (I[957] = (T)(img)(_n14##x,_n14##y,z,c)), \ + (I[989] = (T)(img)(_n14##x,_n15##y,z,c)), \ + (I[1021] = (T)(img)(_n14##x,_n16##y,z,c)), \ + (I[30] = (T)(img)(_n15##x,_p15##y,z,c)), \ + (I[62] = (T)(img)(_n15##x,_p14##y,z,c)), \ + (I[94] = (T)(img)(_n15##x,_p13##y,z,c)), \ + (I[126] = (T)(img)(_n15##x,_p12##y,z,c)), \ + (I[158] = (T)(img)(_n15##x,_p11##y,z,c)), \ + (I[190] = (T)(img)(_n15##x,_p10##y,z,c)), \ + (I[222] = (T)(img)(_n15##x,_p9##y,z,c)), \ + (I[254] = (T)(img)(_n15##x,_p8##y,z,c)), \ + (I[286] = (T)(img)(_n15##x,_p7##y,z,c)), \ + (I[318] = (T)(img)(_n15##x,_p6##y,z,c)), \ + (I[350] = (T)(img)(_n15##x,_p5##y,z,c)), \ + (I[382] = (T)(img)(_n15##x,_p4##y,z,c)), \ + (I[414] = (T)(img)(_n15##x,_p3##y,z,c)), \ + (I[446] = (T)(img)(_n15##x,_p2##y,z,c)), \ + (I[478] = (T)(img)(_n15##x,_p1##y,z,c)), \ + (I[510] = (T)(img)(_n15##x,y,z,c)), \ + (I[542] = (T)(img)(_n15##x,_n1##y,z,c)), \ + (I[574] = (T)(img)(_n15##x,_n2##y,z,c)), \ + (I[606] = (T)(img)(_n15##x,_n3##y,z,c)), \ + (I[638] = (T)(img)(_n15##x,_n4##y,z,c)), \ + (I[670] = (T)(img)(_n15##x,_n5##y,z,c)), \ + (I[702] = (T)(img)(_n15##x,_n6##y,z,c)), \ + (I[734] = (T)(img)(_n15##x,_n7##y,z,c)), \ + (I[766] = (T)(img)(_n15##x,_n8##y,z,c)), \ + (I[798] = (T)(img)(_n15##x,_n9##y,z,c)), \ + (I[830] = (T)(img)(_n15##x,_n10##y,z,c)), \ + (I[862] = (T)(img)(_n15##x,_n11##y,z,c)), \ + (I[894] = (T)(img)(_n15##x,_n12##y,z,c)), \ + (I[926] = (T)(img)(_n15##x,_n13##y,z,c)), \ + (I[958] = (T)(img)(_n15##x,_n14##y,z,c)), \ + (I[990] = (T)(img)(_n15##x,_n15##y,z,c)), \ + (I[1022] = (T)(img)(_n15##x,_n16##y,z,c)), \ + 16>=((img)._width)?(img).width() - 1:16); \ + (_n16##x<(img).width() && ( \ + (I[31] = (T)(img)(_n16##x,_p15##y,z,c)), \ + (I[63] = (T)(img)(_n16##x,_p14##y,z,c)), \ + (I[95] = (T)(img)(_n16##x,_p13##y,z,c)), \ + (I[127] = (T)(img)(_n16##x,_p12##y,z,c)), \ + (I[159] = (T)(img)(_n16##x,_p11##y,z,c)), \ + (I[191] = (T)(img)(_n16##x,_p10##y,z,c)), \ + (I[223] = (T)(img)(_n16##x,_p9##y,z,c)), \ + (I[255] = (T)(img)(_n16##x,_p8##y,z,c)), \ + (I[287] = (T)(img)(_n16##x,_p7##y,z,c)), \ + (I[319] = (T)(img)(_n16##x,_p6##y,z,c)), \ + (I[351] = (T)(img)(_n16##x,_p5##y,z,c)), \ + (I[383] = (T)(img)(_n16##x,_p4##y,z,c)), \ + (I[415] = (T)(img)(_n16##x,_p3##y,z,c)), \ + (I[447] = (T)(img)(_n16##x,_p2##y,z,c)), \ + (I[479] = (T)(img)(_n16##x,_p1##y,z,c)), \ + (I[511] = (T)(img)(_n16##x,y,z,c)), \ + (I[543] = (T)(img)(_n16##x,_n1##y,z,c)), \ + (I[575] = (T)(img)(_n16##x,_n2##y,z,c)), \ + (I[607] = (T)(img)(_n16##x,_n3##y,z,c)), \ + (I[639] = (T)(img)(_n16##x,_n4##y,z,c)), \ + (I[671] = (T)(img)(_n16##x,_n5##y,z,c)), \ + (I[703] = (T)(img)(_n16##x,_n6##y,z,c)), \ + (I[735] = (T)(img)(_n16##x,_n7##y,z,c)), \ + (I[767] = (T)(img)(_n16##x,_n8##y,z,c)), \ + (I[799] = (T)(img)(_n16##x,_n9##y,z,c)), \ + (I[831] = (T)(img)(_n16##x,_n10##y,z,c)), \ + (I[863] = (T)(img)(_n16##x,_n11##y,z,c)), \ + (I[895] = (T)(img)(_n16##x,_n12##y,z,c)), \ + (I[927] = (T)(img)(_n16##x,_n13##y,z,c)), \ + (I[959] = (T)(img)(_n16##x,_n14##y,z,c)), \ + (I[991] = (T)(img)(_n16##x,_n15##y,z,c)), \ + (I[1023] = (T)(img)(_n16##x,_n16##y,z,c)),1)) || \ + _n15##x==--_n16##x || _n14##x==--_n15##x || _n13##x==--_n14##x || _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n16##x = _n15##x = _n14##x = _n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], \ + I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], \ + I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], \ + I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], \ + I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], \ + I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], \ + I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], \ + I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], \ + I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], \ + I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], \ + I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], \ + I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], \ + I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], \ + I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], \ + I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], \ + I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], \ + I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], \ + I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], I[649] = I[650], I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], \ + I[672] = I[673], I[673] = I[674], I[674] = I[675], I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], I[681] = I[682], I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], I[689] = I[690], I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], I[695] = I[696], I[696] = I[697], I[697] = I[698], I[698] = I[699], I[699] = I[700], I[700] = I[701], I[701] = I[702], I[702] = I[703], \ + I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], I[712] = I[713], I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], I[719] = I[720], I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], I[724] = I[725], I[725] = I[726], I[726] = I[727], I[727] = I[728], I[728] = I[729], I[729] = I[730], I[730] = I[731], I[731] = I[732], I[732] = I[733], I[733] = I[734], I[734] = I[735], \ + I[736] = I[737], I[737] = I[738], I[738] = I[739], I[739] = I[740], I[740] = I[741], I[741] = I[742], I[742] = I[743], I[743] = I[744], I[744] = I[745], I[745] = I[746], I[746] = I[747], I[747] = I[748], I[748] = I[749], I[749] = I[750], I[750] = I[751], I[751] = I[752], I[752] = I[753], I[753] = I[754], I[754] = I[755], I[755] = I[756], I[756] = I[757], I[757] = I[758], I[758] = I[759], I[759] = I[760], I[760] = I[761], I[761] = I[762], I[762] = I[763], I[763] = I[764], I[764] = I[765], I[765] = I[766], I[766] = I[767], \ + I[768] = I[769], I[769] = I[770], I[770] = I[771], I[771] = I[772], I[772] = I[773], I[773] = I[774], I[774] = I[775], I[775] = I[776], I[776] = I[777], I[777] = I[778], I[778] = I[779], I[779] = I[780], I[780] = I[781], I[781] = I[782], I[782] = I[783], I[783] = I[784], I[784] = I[785], I[785] = I[786], I[786] = I[787], I[787] = I[788], I[788] = I[789], I[789] = I[790], I[790] = I[791], I[791] = I[792], I[792] = I[793], I[793] = I[794], I[794] = I[795], I[795] = I[796], I[796] = I[797], I[797] = I[798], I[798] = I[799], \ + I[800] = I[801], I[801] = I[802], I[802] = I[803], I[803] = I[804], I[804] = I[805], I[805] = I[806], I[806] = I[807], I[807] = I[808], I[808] = I[809], I[809] = I[810], I[810] = I[811], I[811] = I[812], I[812] = I[813], I[813] = I[814], I[814] = I[815], I[815] = I[816], I[816] = I[817], I[817] = I[818], I[818] = I[819], I[819] = I[820], I[820] = I[821], I[821] = I[822], I[822] = I[823], I[823] = I[824], I[824] = I[825], I[825] = I[826], I[826] = I[827], I[827] = I[828], I[828] = I[829], I[829] = I[830], I[830] = I[831], \ + I[832] = I[833], I[833] = I[834], I[834] = I[835], I[835] = I[836], I[836] = I[837], I[837] = I[838], I[838] = I[839], I[839] = I[840], I[840] = I[841], I[841] = I[842], I[842] = I[843], I[843] = I[844], I[844] = I[845], I[845] = I[846], I[846] = I[847], I[847] = I[848], I[848] = I[849], I[849] = I[850], I[850] = I[851], I[851] = I[852], I[852] = I[853], I[853] = I[854], I[854] = I[855], I[855] = I[856], I[856] = I[857], I[857] = I[858], I[858] = I[859], I[859] = I[860], I[860] = I[861], I[861] = I[862], I[862] = I[863], \ + I[864] = I[865], I[865] = I[866], I[866] = I[867], I[867] = I[868], I[868] = I[869], I[869] = I[870], I[870] = I[871], I[871] = I[872], I[872] = I[873], I[873] = I[874], I[874] = I[875], I[875] = I[876], I[876] = I[877], I[877] = I[878], I[878] = I[879], I[879] = I[880], I[880] = I[881], I[881] = I[882], I[882] = I[883], I[883] = I[884], I[884] = I[885], I[885] = I[886], I[886] = I[887], I[887] = I[888], I[888] = I[889], I[889] = I[890], I[890] = I[891], I[891] = I[892], I[892] = I[893], I[893] = I[894], I[894] = I[895], \ + I[896] = I[897], I[897] = I[898], I[898] = I[899], I[899] = I[900], I[900] = I[901], I[901] = I[902], I[902] = I[903], I[903] = I[904], I[904] = I[905], I[905] = I[906], I[906] = I[907], I[907] = I[908], I[908] = I[909], I[909] = I[910], I[910] = I[911], I[911] = I[912], I[912] = I[913], I[913] = I[914], I[914] = I[915], I[915] = I[916], I[916] = I[917], I[917] = I[918], I[918] = I[919], I[919] = I[920], I[920] = I[921], I[921] = I[922], I[922] = I[923], I[923] = I[924], I[924] = I[925], I[925] = I[926], I[926] = I[927], \ + I[928] = I[929], I[929] = I[930], I[930] = I[931], I[931] = I[932], I[932] = I[933], I[933] = I[934], I[934] = I[935], I[935] = I[936], I[936] = I[937], I[937] = I[938], I[938] = I[939], I[939] = I[940], I[940] = I[941], I[941] = I[942], I[942] = I[943], I[943] = I[944], I[944] = I[945], I[945] = I[946], I[946] = I[947], I[947] = I[948], I[948] = I[949], I[949] = I[950], I[950] = I[951], I[951] = I[952], I[952] = I[953], I[953] = I[954], I[954] = I[955], I[955] = I[956], I[956] = I[957], I[957] = I[958], I[958] = I[959], \ + I[960] = I[961], I[961] = I[962], I[962] = I[963], I[963] = I[964], I[964] = I[965], I[965] = I[966], I[966] = I[967], I[967] = I[968], I[968] = I[969], I[969] = I[970], I[970] = I[971], I[971] = I[972], I[972] = I[973], I[973] = I[974], I[974] = I[975], I[975] = I[976], I[976] = I[977], I[977] = I[978], I[978] = I[979], I[979] = I[980], I[980] = I[981], I[981] = I[982], I[982] = I[983], I[983] = I[984], I[984] = I[985], I[985] = I[986], I[986] = I[987], I[987] = I[988], I[988] = I[989], I[989] = I[990], I[990] = I[991], \ + I[992] = I[993], I[993] = I[994], I[994] = I[995], I[995] = I[996], I[996] = I[997], I[997] = I[998], I[998] = I[999], I[999] = I[1000], I[1000] = I[1001], I[1001] = I[1002], I[1002] = I[1003], I[1003] = I[1004], I[1004] = I[1005], I[1005] = I[1006], I[1006] = I[1007], I[1007] = I[1008], I[1008] = I[1009], I[1009] = I[1010], I[1010] = I[1011], I[1011] = I[1012], I[1012] = I[1013], I[1013] = I[1014], I[1014] = I[1015], I[1015] = I[1016], I[1016] = I[1017], I[1017] = I[1018], I[1018] = I[1019], I[1019] = I[1020], I[1020] = I[1021], I[1021] = I[1022], I[1022] = I[1023], \ + _p15##x = _p14##x, _p14##x = _p13##x, _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x, ++_n14##x, ++_n15##x, ++_n16##x) + +#define cimg_for_in32x32(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in32((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p15##x = x - 15<0?0:x - 15, \ + _p14##x = x - 14<0?0:x - 14, \ + _p13##x = x - 13<0?0:x - 13, \ + _p12##x = x - 12<0?0:x - 12, \ + _p11##x = x - 11<0?0:x - 11, \ + _p10##x = x - 10<0?0:x - 10, \ + _p9##x = x - 9<0?0:x - 9, \ + _p8##x = x - 8<0?0:x - 8, \ + _p7##x = x - 7<0?0:x - 7, \ + _p6##x = x - 6<0?0:x - 6, \ + _p5##x = x - 5<0?0:x - 5, \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = x + 4>=(img).width()?(img).width() - 1:x + 4, \ + _n5##x = x + 5>=(img).width()?(img).width() - 1:x + 5, \ + _n6##x = x + 6>=(img).width()?(img).width() - 1:x + 6, \ + _n7##x = x + 7>=(img).width()?(img).width() - 1:x + 7, \ + _n8##x = x + 8>=(img).width()?(img).width() - 1:x + 8, \ + _n9##x = x + 9>=(img).width()?(img).width() - 1:x + 9, \ + _n10##x = x + 10>=(img).width()?(img).width() - 1:x + 10, \ + _n11##x = x + 11>=(img).width()?(img).width() - 1:x + 11, \ + _n12##x = x + 12>=(img).width()?(img).width() - 1:x + 12, \ + _n13##x = x + 13>=(img).width()?(img).width() - 1:x + 13, \ + _n14##x = x + 14>=(img).width()?(img).width() - 1:x + 14, \ + _n15##x = x + 15>=(img).width()?(img).width() - 1:x + 15, \ + _n16##x = (int)( \ + (I[0] = (T)(img)(_p15##x,_p15##y,z,c)), \ + (I[32] = (T)(img)(_p15##x,_p14##y,z,c)), \ + (I[64] = (T)(img)(_p15##x,_p13##y,z,c)), \ + (I[96] = (T)(img)(_p15##x,_p12##y,z,c)), \ + (I[128] = (T)(img)(_p15##x,_p11##y,z,c)), \ + (I[160] = (T)(img)(_p15##x,_p10##y,z,c)), \ + (I[192] = (T)(img)(_p15##x,_p9##y,z,c)), \ + (I[224] = (T)(img)(_p15##x,_p8##y,z,c)), \ + (I[256] = (T)(img)(_p15##x,_p7##y,z,c)), \ + (I[288] = (T)(img)(_p15##x,_p6##y,z,c)), \ + (I[320] = (T)(img)(_p15##x,_p5##y,z,c)), \ + (I[352] = (T)(img)(_p15##x,_p4##y,z,c)), \ + (I[384] = (T)(img)(_p15##x,_p3##y,z,c)), \ + (I[416] = (T)(img)(_p15##x,_p2##y,z,c)), \ + (I[448] = (T)(img)(_p15##x,_p1##y,z,c)), \ + (I[480] = (T)(img)(_p15##x,y,z,c)), \ + (I[512] = (T)(img)(_p15##x,_n1##y,z,c)), \ + (I[544] = (T)(img)(_p15##x,_n2##y,z,c)), \ + (I[576] = (T)(img)(_p15##x,_n3##y,z,c)), \ + (I[608] = (T)(img)(_p15##x,_n4##y,z,c)), \ + (I[640] = (T)(img)(_p15##x,_n5##y,z,c)), \ + (I[672] = (T)(img)(_p15##x,_n6##y,z,c)), \ + (I[704] = (T)(img)(_p15##x,_n7##y,z,c)), \ + (I[736] = (T)(img)(_p15##x,_n8##y,z,c)), \ + (I[768] = (T)(img)(_p15##x,_n9##y,z,c)), \ + (I[800] = (T)(img)(_p15##x,_n10##y,z,c)), \ + (I[832] = (T)(img)(_p15##x,_n11##y,z,c)), \ + (I[864] = (T)(img)(_p15##x,_n12##y,z,c)), \ + (I[896] = (T)(img)(_p15##x,_n13##y,z,c)), \ + (I[928] = (T)(img)(_p15##x,_n14##y,z,c)), \ + (I[960] = (T)(img)(_p15##x,_n15##y,z,c)), \ + (I[992] = (T)(img)(_p15##x,_n16##y,z,c)), \ + (I[1] = (T)(img)(_p14##x,_p15##y,z,c)), \ + (I[33] = (T)(img)(_p14##x,_p14##y,z,c)), \ + (I[65] = (T)(img)(_p14##x,_p13##y,z,c)), \ + (I[97] = (T)(img)(_p14##x,_p12##y,z,c)), \ + (I[129] = (T)(img)(_p14##x,_p11##y,z,c)), \ + (I[161] = (T)(img)(_p14##x,_p10##y,z,c)), \ + (I[193] = (T)(img)(_p14##x,_p9##y,z,c)), \ + (I[225] = (T)(img)(_p14##x,_p8##y,z,c)), \ + (I[257] = (T)(img)(_p14##x,_p7##y,z,c)), \ + (I[289] = (T)(img)(_p14##x,_p6##y,z,c)), \ + (I[321] = (T)(img)(_p14##x,_p5##y,z,c)), \ + (I[353] = (T)(img)(_p14##x,_p4##y,z,c)), \ + (I[385] = (T)(img)(_p14##x,_p3##y,z,c)), \ + (I[417] = (T)(img)(_p14##x,_p2##y,z,c)), \ + (I[449] = (T)(img)(_p14##x,_p1##y,z,c)), \ + (I[481] = (T)(img)(_p14##x,y,z,c)), \ + (I[513] = (T)(img)(_p14##x,_n1##y,z,c)), \ + (I[545] = (T)(img)(_p14##x,_n2##y,z,c)), \ + (I[577] = (T)(img)(_p14##x,_n3##y,z,c)), \ + (I[609] = (T)(img)(_p14##x,_n4##y,z,c)), \ + (I[641] = (T)(img)(_p14##x,_n5##y,z,c)), \ + (I[673] = (T)(img)(_p14##x,_n6##y,z,c)), \ + (I[705] = (T)(img)(_p14##x,_n7##y,z,c)), \ + (I[737] = (T)(img)(_p14##x,_n8##y,z,c)), \ + (I[769] = (T)(img)(_p14##x,_n9##y,z,c)), \ + (I[801] = (T)(img)(_p14##x,_n10##y,z,c)), \ + (I[833] = (T)(img)(_p14##x,_n11##y,z,c)), \ + (I[865] = (T)(img)(_p14##x,_n12##y,z,c)), \ + (I[897] = (T)(img)(_p14##x,_n13##y,z,c)), \ + (I[929] = (T)(img)(_p14##x,_n14##y,z,c)), \ + (I[961] = (T)(img)(_p14##x,_n15##y,z,c)), \ + (I[993] = (T)(img)(_p14##x,_n16##y,z,c)), \ + (I[2] = (T)(img)(_p13##x,_p15##y,z,c)), \ + (I[34] = (T)(img)(_p13##x,_p14##y,z,c)), \ + (I[66] = (T)(img)(_p13##x,_p13##y,z,c)), \ + (I[98] = (T)(img)(_p13##x,_p12##y,z,c)), \ + (I[130] = (T)(img)(_p13##x,_p11##y,z,c)), \ + (I[162] = (T)(img)(_p13##x,_p10##y,z,c)), \ + (I[194] = (T)(img)(_p13##x,_p9##y,z,c)), \ + (I[226] = (T)(img)(_p13##x,_p8##y,z,c)), \ + (I[258] = (T)(img)(_p13##x,_p7##y,z,c)), \ + (I[290] = (T)(img)(_p13##x,_p6##y,z,c)), \ + (I[322] = (T)(img)(_p13##x,_p5##y,z,c)), \ + (I[354] = (T)(img)(_p13##x,_p4##y,z,c)), \ + (I[386] = (T)(img)(_p13##x,_p3##y,z,c)), \ + (I[418] = (T)(img)(_p13##x,_p2##y,z,c)), \ + (I[450] = (T)(img)(_p13##x,_p1##y,z,c)), \ + (I[482] = (T)(img)(_p13##x,y,z,c)), \ + (I[514] = (T)(img)(_p13##x,_n1##y,z,c)), \ + (I[546] = (T)(img)(_p13##x,_n2##y,z,c)), \ + (I[578] = (T)(img)(_p13##x,_n3##y,z,c)), \ + (I[610] = (T)(img)(_p13##x,_n4##y,z,c)), \ + (I[642] = (T)(img)(_p13##x,_n5##y,z,c)), \ + (I[674] = (T)(img)(_p13##x,_n6##y,z,c)), \ + (I[706] = (T)(img)(_p13##x,_n7##y,z,c)), \ + (I[738] = (T)(img)(_p13##x,_n8##y,z,c)), \ + (I[770] = (T)(img)(_p13##x,_n9##y,z,c)), \ + (I[802] = (T)(img)(_p13##x,_n10##y,z,c)), \ + (I[834] = (T)(img)(_p13##x,_n11##y,z,c)), \ + (I[866] = (T)(img)(_p13##x,_n12##y,z,c)), \ + (I[898] = (T)(img)(_p13##x,_n13##y,z,c)), \ + (I[930] = (T)(img)(_p13##x,_n14##y,z,c)), \ + (I[962] = (T)(img)(_p13##x,_n15##y,z,c)), \ + (I[994] = (T)(img)(_p13##x,_n16##y,z,c)), \ + (I[3] = (T)(img)(_p12##x,_p15##y,z,c)), \ + (I[35] = (T)(img)(_p12##x,_p14##y,z,c)), \ + (I[67] = (T)(img)(_p12##x,_p13##y,z,c)), \ + (I[99] = (T)(img)(_p12##x,_p12##y,z,c)), \ + (I[131] = (T)(img)(_p12##x,_p11##y,z,c)), \ + (I[163] = (T)(img)(_p12##x,_p10##y,z,c)), \ + (I[195] = (T)(img)(_p12##x,_p9##y,z,c)), \ + (I[227] = (T)(img)(_p12##x,_p8##y,z,c)), \ + (I[259] = (T)(img)(_p12##x,_p7##y,z,c)), \ + (I[291] = (T)(img)(_p12##x,_p6##y,z,c)), \ + (I[323] = (T)(img)(_p12##x,_p5##y,z,c)), \ + (I[355] = (T)(img)(_p12##x,_p4##y,z,c)), \ + (I[387] = (T)(img)(_p12##x,_p3##y,z,c)), \ + (I[419] = (T)(img)(_p12##x,_p2##y,z,c)), \ + (I[451] = (T)(img)(_p12##x,_p1##y,z,c)), \ + (I[483] = (T)(img)(_p12##x,y,z,c)), \ + (I[515] = (T)(img)(_p12##x,_n1##y,z,c)), \ + (I[547] = (T)(img)(_p12##x,_n2##y,z,c)), \ + (I[579] = (T)(img)(_p12##x,_n3##y,z,c)), \ + (I[611] = (T)(img)(_p12##x,_n4##y,z,c)), \ + (I[643] = (T)(img)(_p12##x,_n5##y,z,c)), \ + (I[675] = (T)(img)(_p12##x,_n6##y,z,c)), \ + (I[707] = (T)(img)(_p12##x,_n7##y,z,c)), \ + (I[739] = (T)(img)(_p12##x,_n8##y,z,c)), \ + (I[771] = (T)(img)(_p12##x,_n9##y,z,c)), \ + (I[803] = (T)(img)(_p12##x,_n10##y,z,c)), \ + (I[835] = (T)(img)(_p12##x,_n11##y,z,c)), \ + (I[867] = (T)(img)(_p12##x,_n12##y,z,c)), \ + (I[899] = (T)(img)(_p12##x,_n13##y,z,c)), \ + (I[931] = (T)(img)(_p12##x,_n14##y,z,c)), \ + (I[963] = (T)(img)(_p12##x,_n15##y,z,c)), \ + (I[995] = (T)(img)(_p12##x,_n16##y,z,c)), \ + (I[4] = (T)(img)(_p11##x,_p15##y,z,c)), \ + (I[36] = (T)(img)(_p11##x,_p14##y,z,c)), \ + (I[68] = (T)(img)(_p11##x,_p13##y,z,c)), \ + (I[100] = (T)(img)(_p11##x,_p12##y,z,c)), \ + (I[132] = (T)(img)(_p11##x,_p11##y,z,c)), \ + (I[164] = (T)(img)(_p11##x,_p10##y,z,c)), \ + (I[196] = (T)(img)(_p11##x,_p9##y,z,c)), \ + (I[228] = (T)(img)(_p11##x,_p8##y,z,c)), \ + (I[260] = (T)(img)(_p11##x,_p7##y,z,c)), \ + (I[292] = (T)(img)(_p11##x,_p6##y,z,c)), \ + (I[324] = (T)(img)(_p11##x,_p5##y,z,c)), \ + (I[356] = (T)(img)(_p11##x,_p4##y,z,c)), \ + (I[388] = (T)(img)(_p11##x,_p3##y,z,c)), \ + (I[420] = (T)(img)(_p11##x,_p2##y,z,c)), \ + (I[452] = (T)(img)(_p11##x,_p1##y,z,c)), \ + (I[484] = (T)(img)(_p11##x,y,z,c)), \ + (I[516] = (T)(img)(_p11##x,_n1##y,z,c)), \ + (I[548] = (T)(img)(_p11##x,_n2##y,z,c)), \ + (I[580] = (T)(img)(_p11##x,_n3##y,z,c)), \ + (I[612] = (T)(img)(_p11##x,_n4##y,z,c)), \ + (I[644] = (T)(img)(_p11##x,_n5##y,z,c)), \ + (I[676] = (T)(img)(_p11##x,_n6##y,z,c)), \ + (I[708] = (T)(img)(_p11##x,_n7##y,z,c)), \ + (I[740] = (T)(img)(_p11##x,_n8##y,z,c)), \ + (I[772] = (T)(img)(_p11##x,_n9##y,z,c)), \ + (I[804] = (T)(img)(_p11##x,_n10##y,z,c)), \ + (I[836] = (T)(img)(_p11##x,_n11##y,z,c)), \ + (I[868] = (T)(img)(_p11##x,_n12##y,z,c)), \ + (I[900] = (T)(img)(_p11##x,_n13##y,z,c)), \ + (I[932] = (T)(img)(_p11##x,_n14##y,z,c)), \ + (I[964] = (T)(img)(_p11##x,_n15##y,z,c)), \ + (I[996] = (T)(img)(_p11##x,_n16##y,z,c)), \ + (I[5] = (T)(img)(_p10##x,_p15##y,z,c)), \ + (I[37] = (T)(img)(_p10##x,_p14##y,z,c)), \ + (I[69] = (T)(img)(_p10##x,_p13##y,z,c)), \ + (I[101] = (T)(img)(_p10##x,_p12##y,z,c)), \ + (I[133] = (T)(img)(_p10##x,_p11##y,z,c)), \ + (I[165] = (T)(img)(_p10##x,_p10##y,z,c)), \ + (I[197] = (T)(img)(_p10##x,_p9##y,z,c)), \ + (I[229] = (T)(img)(_p10##x,_p8##y,z,c)), \ + (I[261] = (T)(img)(_p10##x,_p7##y,z,c)), \ + (I[293] = (T)(img)(_p10##x,_p6##y,z,c)), \ + (I[325] = (T)(img)(_p10##x,_p5##y,z,c)), \ + (I[357] = (T)(img)(_p10##x,_p4##y,z,c)), \ + (I[389] = (T)(img)(_p10##x,_p3##y,z,c)), \ + (I[421] = (T)(img)(_p10##x,_p2##y,z,c)), \ + (I[453] = (T)(img)(_p10##x,_p1##y,z,c)), \ + (I[485] = (T)(img)(_p10##x,y,z,c)), \ + (I[517] = (T)(img)(_p10##x,_n1##y,z,c)), \ + (I[549] = (T)(img)(_p10##x,_n2##y,z,c)), \ + (I[581] = (T)(img)(_p10##x,_n3##y,z,c)), \ + (I[613] = (T)(img)(_p10##x,_n4##y,z,c)), \ + (I[645] = (T)(img)(_p10##x,_n5##y,z,c)), \ + (I[677] = (T)(img)(_p10##x,_n6##y,z,c)), \ + (I[709] = (T)(img)(_p10##x,_n7##y,z,c)), \ + (I[741] = (T)(img)(_p10##x,_n8##y,z,c)), \ + (I[773] = (T)(img)(_p10##x,_n9##y,z,c)), \ + (I[805] = (T)(img)(_p10##x,_n10##y,z,c)), \ + (I[837] = (T)(img)(_p10##x,_n11##y,z,c)), \ + (I[869] = (T)(img)(_p10##x,_n12##y,z,c)), \ + (I[901] = (T)(img)(_p10##x,_n13##y,z,c)), \ + (I[933] = (T)(img)(_p10##x,_n14##y,z,c)), \ + (I[965] = (T)(img)(_p10##x,_n15##y,z,c)), \ + (I[997] = (T)(img)(_p10##x,_n16##y,z,c)), \ + (I[6] = (T)(img)(_p9##x,_p15##y,z,c)), \ + (I[38] = (T)(img)(_p9##x,_p14##y,z,c)), \ + (I[70] = (T)(img)(_p9##x,_p13##y,z,c)), \ + (I[102] = (T)(img)(_p9##x,_p12##y,z,c)), \ + (I[134] = (T)(img)(_p9##x,_p11##y,z,c)), \ + (I[166] = (T)(img)(_p9##x,_p10##y,z,c)), \ + (I[198] = (T)(img)(_p9##x,_p9##y,z,c)), \ + (I[230] = (T)(img)(_p9##x,_p8##y,z,c)), \ + (I[262] = (T)(img)(_p9##x,_p7##y,z,c)), \ + (I[294] = (T)(img)(_p9##x,_p6##y,z,c)), \ + (I[326] = (T)(img)(_p9##x,_p5##y,z,c)), \ + (I[358] = (T)(img)(_p9##x,_p4##y,z,c)), \ + (I[390] = (T)(img)(_p9##x,_p3##y,z,c)), \ + (I[422] = (T)(img)(_p9##x,_p2##y,z,c)), \ + (I[454] = (T)(img)(_p9##x,_p1##y,z,c)), \ + (I[486] = (T)(img)(_p9##x,y,z,c)), \ + (I[518] = (T)(img)(_p9##x,_n1##y,z,c)), \ + (I[550] = (T)(img)(_p9##x,_n2##y,z,c)), \ + (I[582] = (T)(img)(_p9##x,_n3##y,z,c)), \ + (I[614] = (T)(img)(_p9##x,_n4##y,z,c)), \ + (I[646] = (T)(img)(_p9##x,_n5##y,z,c)), \ + (I[678] = (T)(img)(_p9##x,_n6##y,z,c)), \ + (I[710] = (T)(img)(_p9##x,_n7##y,z,c)), \ + (I[742] = (T)(img)(_p9##x,_n8##y,z,c)), \ + (I[774] = (T)(img)(_p9##x,_n9##y,z,c)), \ + (I[806] = (T)(img)(_p9##x,_n10##y,z,c)), \ + (I[838] = (T)(img)(_p9##x,_n11##y,z,c)), \ + (I[870] = (T)(img)(_p9##x,_n12##y,z,c)), \ + (I[902] = (T)(img)(_p9##x,_n13##y,z,c)), \ + (I[934] = (T)(img)(_p9##x,_n14##y,z,c)), \ + (I[966] = (T)(img)(_p9##x,_n15##y,z,c)), \ + (I[998] = (T)(img)(_p9##x,_n16##y,z,c)), \ + (I[7] = (T)(img)(_p8##x,_p15##y,z,c)), \ + (I[39] = (T)(img)(_p8##x,_p14##y,z,c)), \ + (I[71] = (T)(img)(_p8##x,_p13##y,z,c)), \ + (I[103] = (T)(img)(_p8##x,_p12##y,z,c)), \ + (I[135] = (T)(img)(_p8##x,_p11##y,z,c)), \ + (I[167] = (T)(img)(_p8##x,_p10##y,z,c)), \ + (I[199] = (T)(img)(_p8##x,_p9##y,z,c)), \ + (I[231] = (T)(img)(_p8##x,_p8##y,z,c)), \ + (I[263] = (T)(img)(_p8##x,_p7##y,z,c)), \ + (I[295] = (T)(img)(_p8##x,_p6##y,z,c)), \ + (I[327] = (T)(img)(_p8##x,_p5##y,z,c)), \ + (I[359] = (T)(img)(_p8##x,_p4##y,z,c)), \ + (I[391] = (T)(img)(_p8##x,_p3##y,z,c)), \ + (I[423] = (T)(img)(_p8##x,_p2##y,z,c)), \ + (I[455] = (T)(img)(_p8##x,_p1##y,z,c)), \ + (I[487] = (T)(img)(_p8##x,y,z,c)), \ + (I[519] = (T)(img)(_p8##x,_n1##y,z,c)), \ + (I[551] = (T)(img)(_p8##x,_n2##y,z,c)), \ + (I[583] = (T)(img)(_p8##x,_n3##y,z,c)), \ + (I[615] = (T)(img)(_p8##x,_n4##y,z,c)), \ + (I[647] = (T)(img)(_p8##x,_n5##y,z,c)), \ + (I[679] = (T)(img)(_p8##x,_n6##y,z,c)), \ + (I[711] = (T)(img)(_p8##x,_n7##y,z,c)), \ + (I[743] = (T)(img)(_p8##x,_n8##y,z,c)), \ + (I[775] = (T)(img)(_p8##x,_n9##y,z,c)), \ + (I[807] = (T)(img)(_p8##x,_n10##y,z,c)), \ + (I[839] = (T)(img)(_p8##x,_n11##y,z,c)), \ + (I[871] = (T)(img)(_p8##x,_n12##y,z,c)), \ + (I[903] = (T)(img)(_p8##x,_n13##y,z,c)), \ + (I[935] = (T)(img)(_p8##x,_n14##y,z,c)), \ + (I[967] = (T)(img)(_p8##x,_n15##y,z,c)), \ + (I[999] = (T)(img)(_p8##x,_n16##y,z,c)), \ + (I[8] = (T)(img)(_p7##x,_p15##y,z,c)), \ + (I[40] = (T)(img)(_p7##x,_p14##y,z,c)), \ + (I[72] = (T)(img)(_p7##x,_p13##y,z,c)), \ + (I[104] = (T)(img)(_p7##x,_p12##y,z,c)), \ + (I[136] = (T)(img)(_p7##x,_p11##y,z,c)), \ + (I[168] = (T)(img)(_p7##x,_p10##y,z,c)), \ + (I[200] = (T)(img)(_p7##x,_p9##y,z,c)), \ + (I[232] = (T)(img)(_p7##x,_p8##y,z,c)), \ + (I[264] = (T)(img)(_p7##x,_p7##y,z,c)), \ + (I[296] = (T)(img)(_p7##x,_p6##y,z,c)), \ + (I[328] = (T)(img)(_p7##x,_p5##y,z,c)), \ + (I[360] = (T)(img)(_p7##x,_p4##y,z,c)), \ + (I[392] = (T)(img)(_p7##x,_p3##y,z,c)), \ + (I[424] = (T)(img)(_p7##x,_p2##y,z,c)), \ + (I[456] = (T)(img)(_p7##x,_p1##y,z,c)), \ + (I[488] = (T)(img)(_p7##x,y,z,c)), \ + (I[520] = (T)(img)(_p7##x,_n1##y,z,c)), \ + (I[552] = (T)(img)(_p7##x,_n2##y,z,c)), \ + (I[584] = (T)(img)(_p7##x,_n3##y,z,c)), \ + (I[616] = (T)(img)(_p7##x,_n4##y,z,c)), \ + (I[648] = (T)(img)(_p7##x,_n5##y,z,c)), \ + (I[680] = (T)(img)(_p7##x,_n6##y,z,c)), \ + (I[712] = (T)(img)(_p7##x,_n7##y,z,c)), \ + (I[744] = (T)(img)(_p7##x,_n8##y,z,c)), \ + (I[776] = (T)(img)(_p7##x,_n9##y,z,c)), \ + (I[808] = (T)(img)(_p7##x,_n10##y,z,c)), \ + (I[840] = (T)(img)(_p7##x,_n11##y,z,c)), \ + (I[872] = (T)(img)(_p7##x,_n12##y,z,c)), \ + (I[904] = (T)(img)(_p7##x,_n13##y,z,c)), \ + (I[936] = (T)(img)(_p7##x,_n14##y,z,c)), \ + (I[968] = (T)(img)(_p7##x,_n15##y,z,c)), \ + (I[1000] = (T)(img)(_p7##x,_n16##y,z,c)), \ + (I[9] = (T)(img)(_p6##x,_p15##y,z,c)), \ + (I[41] = (T)(img)(_p6##x,_p14##y,z,c)), \ + (I[73] = (T)(img)(_p6##x,_p13##y,z,c)), \ + (I[105] = (T)(img)(_p6##x,_p12##y,z,c)), \ + (I[137] = (T)(img)(_p6##x,_p11##y,z,c)), \ + (I[169] = (T)(img)(_p6##x,_p10##y,z,c)), \ + (I[201] = (T)(img)(_p6##x,_p9##y,z,c)), \ + (I[233] = (T)(img)(_p6##x,_p8##y,z,c)), \ + (I[265] = (T)(img)(_p6##x,_p7##y,z,c)), \ + (I[297] = (T)(img)(_p6##x,_p6##y,z,c)), \ + (I[329] = (T)(img)(_p6##x,_p5##y,z,c)), \ + (I[361] = (T)(img)(_p6##x,_p4##y,z,c)), \ + (I[393] = (T)(img)(_p6##x,_p3##y,z,c)), \ + (I[425] = (T)(img)(_p6##x,_p2##y,z,c)), \ + (I[457] = (T)(img)(_p6##x,_p1##y,z,c)), \ + (I[489] = (T)(img)(_p6##x,y,z,c)), \ + (I[521] = (T)(img)(_p6##x,_n1##y,z,c)), \ + (I[553] = (T)(img)(_p6##x,_n2##y,z,c)), \ + (I[585] = (T)(img)(_p6##x,_n3##y,z,c)), \ + (I[617] = (T)(img)(_p6##x,_n4##y,z,c)), \ + (I[649] = (T)(img)(_p6##x,_n5##y,z,c)), \ + (I[681] = (T)(img)(_p6##x,_n6##y,z,c)), \ + (I[713] = (T)(img)(_p6##x,_n7##y,z,c)), \ + (I[745] = (T)(img)(_p6##x,_n8##y,z,c)), \ + (I[777] = (T)(img)(_p6##x,_n9##y,z,c)), \ + (I[809] = (T)(img)(_p6##x,_n10##y,z,c)), \ + (I[841] = (T)(img)(_p6##x,_n11##y,z,c)), \ + (I[873] = (T)(img)(_p6##x,_n12##y,z,c)), \ + (I[905] = (T)(img)(_p6##x,_n13##y,z,c)), \ + (I[937] = (T)(img)(_p6##x,_n14##y,z,c)), \ + (I[969] = (T)(img)(_p6##x,_n15##y,z,c)), \ + (I[1001] = (T)(img)(_p6##x,_n16##y,z,c)), \ + (I[10] = (T)(img)(_p5##x,_p15##y,z,c)), \ + (I[42] = (T)(img)(_p5##x,_p14##y,z,c)), \ + (I[74] = (T)(img)(_p5##x,_p13##y,z,c)), \ + (I[106] = (T)(img)(_p5##x,_p12##y,z,c)), \ + (I[138] = (T)(img)(_p5##x,_p11##y,z,c)), \ + (I[170] = (T)(img)(_p5##x,_p10##y,z,c)), \ + (I[202] = (T)(img)(_p5##x,_p9##y,z,c)), \ + (I[234] = (T)(img)(_p5##x,_p8##y,z,c)), \ + (I[266] = (T)(img)(_p5##x,_p7##y,z,c)), \ + (I[298] = (T)(img)(_p5##x,_p6##y,z,c)), \ + (I[330] = (T)(img)(_p5##x,_p5##y,z,c)), \ + (I[362] = (T)(img)(_p5##x,_p4##y,z,c)), \ + (I[394] = (T)(img)(_p5##x,_p3##y,z,c)), \ + (I[426] = (T)(img)(_p5##x,_p2##y,z,c)), \ + (I[458] = (T)(img)(_p5##x,_p1##y,z,c)), \ + (I[490] = (T)(img)(_p5##x,y,z,c)), \ + (I[522] = (T)(img)(_p5##x,_n1##y,z,c)), \ + (I[554] = (T)(img)(_p5##x,_n2##y,z,c)), \ + (I[586] = (T)(img)(_p5##x,_n3##y,z,c)), \ + (I[618] = (T)(img)(_p5##x,_n4##y,z,c)), \ + (I[650] = (T)(img)(_p5##x,_n5##y,z,c)), \ + (I[682] = (T)(img)(_p5##x,_n6##y,z,c)), \ + (I[714] = (T)(img)(_p5##x,_n7##y,z,c)), \ + (I[746] = (T)(img)(_p5##x,_n8##y,z,c)), \ + (I[778] = (T)(img)(_p5##x,_n9##y,z,c)), \ + (I[810] = (T)(img)(_p5##x,_n10##y,z,c)), \ + (I[842] = (T)(img)(_p5##x,_n11##y,z,c)), \ + (I[874] = (T)(img)(_p5##x,_n12##y,z,c)), \ + (I[906] = (T)(img)(_p5##x,_n13##y,z,c)), \ + (I[938] = (T)(img)(_p5##x,_n14##y,z,c)), \ + (I[970] = (T)(img)(_p5##x,_n15##y,z,c)), \ + (I[1002] = (T)(img)(_p5##x,_n16##y,z,c)), \ + (I[11] = (T)(img)(_p4##x,_p15##y,z,c)), \ + (I[43] = (T)(img)(_p4##x,_p14##y,z,c)), \ + (I[75] = (T)(img)(_p4##x,_p13##y,z,c)), \ + (I[107] = (T)(img)(_p4##x,_p12##y,z,c)), \ + (I[139] = (T)(img)(_p4##x,_p11##y,z,c)), \ + (I[171] = (T)(img)(_p4##x,_p10##y,z,c)), \ + (I[203] = (T)(img)(_p4##x,_p9##y,z,c)), \ + (I[235] = (T)(img)(_p4##x,_p8##y,z,c)), \ + (I[267] = (T)(img)(_p4##x,_p7##y,z,c)), \ + (I[299] = (T)(img)(_p4##x,_p6##y,z,c)), \ + (I[331] = (T)(img)(_p4##x,_p5##y,z,c)), \ + (I[363] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[395] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[427] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[459] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[491] = (T)(img)(_p4##x,y,z,c)), \ + (I[523] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[555] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[587] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[619] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[651] = (T)(img)(_p4##x,_n5##y,z,c)), \ + (I[683] = (T)(img)(_p4##x,_n6##y,z,c)), \ + (I[715] = (T)(img)(_p4##x,_n7##y,z,c)), \ + (I[747] = (T)(img)(_p4##x,_n8##y,z,c)), \ + (I[779] = (T)(img)(_p4##x,_n9##y,z,c)), \ + (I[811] = (T)(img)(_p4##x,_n10##y,z,c)), \ + (I[843] = (T)(img)(_p4##x,_n11##y,z,c)), \ + (I[875] = (T)(img)(_p4##x,_n12##y,z,c)), \ + (I[907] = (T)(img)(_p4##x,_n13##y,z,c)), \ + (I[939] = (T)(img)(_p4##x,_n14##y,z,c)), \ + (I[971] = (T)(img)(_p4##x,_n15##y,z,c)), \ + (I[1003] = (T)(img)(_p4##x,_n16##y,z,c)), \ + (I[12] = (T)(img)(_p3##x,_p15##y,z,c)), \ + (I[44] = (T)(img)(_p3##x,_p14##y,z,c)), \ + (I[76] = (T)(img)(_p3##x,_p13##y,z,c)), \ + (I[108] = (T)(img)(_p3##x,_p12##y,z,c)), \ + (I[140] = (T)(img)(_p3##x,_p11##y,z,c)), \ + (I[172] = (T)(img)(_p3##x,_p10##y,z,c)), \ + (I[204] = (T)(img)(_p3##x,_p9##y,z,c)), \ + (I[236] = (T)(img)(_p3##x,_p8##y,z,c)), \ + (I[268] = (T)(img)(_p3##x,_p7##y,z,c)), \ + (I[300] = (T)(img)(_p3##x,_p6##y,z,c)), \ + (I[332] = (T)(img)(_p3##x,_p5##y,z,c)), \ + (I[364] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[396] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[428] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[460] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[492] = (T)(img)(_p3##x,y,z,c)), \ + (I[524] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[556] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[588] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[620] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[652] = (T)(img)(_p3##x,_n5##y,z,c)), \ + (I[684] = (T)(img)(_p3##x,_n6##y,z,c)), \ + (I[716] = (T)(img)(_p3##x,_n7##y,z,c)), \ + (I[748] = (T)(img)(_p3##x,_n8##y,z,c)), \ + (I[780] = (T)(img)(_p3##x,_n9##y,z,c)), \ + (I[812] = (T)(img)(_p3##x,_n10##y,z,c)), \ + (I[844] = (T)(img)(_p3##x,_n11##y,z,c)), \ + (I[876] = (T)(img)(_p3##x,_n12##y,z,c)), \ + (I[908] = (T)(img)(_p3##x,_n13##y,z,c)), \ + (I[940] = (T)(img)(_p3##x,_n14##y,z,c)), \ + (I[972] = (T)(img)(_p3##x,_n15##y,z,c)), \ + (I[1004] = (T)(img)(_p3##x,_n16##y,z,c)), \ + (I[13] = (T)(img)(_p2##x,_p15##y,z,c)), \ + (I[45] = (T)(img)(_p2##x,_p14##y,z,c)), \ + (I[77] = (T)(img)(_p2##x,_p13##y,z,c)), \ + (I[109] = (T)(img)(_p2##x,_p12##y,z,c)), \ + (I[141] = (T)(img)(_p2##x,_p11##y,z,c)), \ + (I[173] = (T)(img)(_p2##x,_p10##y,z,c)), \ + (I[205] = (T)(img)(_p2##x,_p9##y,z,c)), \ + (I[237] = (T)(img)(_p2##x,_p8##y,z,c)), \ + (I[269] = (T)(img)(_p2##x,_p7##y,z,c)), \ + (I[301] = (T)(img)(_p2##x,_p6##y,z,c)), \ + (I[333] = (T)(img)(_p2##x,_p5##y,z,c)), \ + (I[365] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[397] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[429] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[461] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[493] = (T)(img)(_p2##x,y,z,c)), \ + (I[525] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[557] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[589] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[621] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[653] = (T)(img)(_p2##x,_n5##y,z,c)), \ + (I[685] = (T)(img)(_p2##x,_n6##y,z,c)), \ + (I[717] = (T)(img)(_p2##x,_n7##y,z,c)), \ + (I[749] = (T)(img)(_p2##x,_n8##y,z,c)), \ + (I[781] = (T)(img)(_p2##x,_n9##y,z,c)), \ + (I[813] = (T)(img)(_p2##x,_n10##y,z,c)), \ + (I[845] = (T)(img)(_p2##x,_n11##y,z,c)), \ + (I[877] = (T)(img)(_p2##x,_n12##y,z,c)), \ + (I[909] = (T)(img)(_p2##x,_n13##y,z,c)), \ + (I[941] = (T)(img)(_p2##x,_n14##y,z,c)), \ + (I[973] = (T)(img)(_p2##x,_n15##y,z,c)), \ + (I[1005] = (T)(img)(_p2##x,_n16##y,z,c)), \ + (I[14] = (T)(img)(_p1##x,_p15##y,z,c)), \ + (I[46] = (T)(img)(_p1##x,_p14##y,z,c)), \ + (I[78] = (T)(img)(_p1##x,_p13##y,z,c)), \ + (I[110] = (T)(img)(_p1##x,_p12##y,z,c)), \ + (I[142] = (T)(img)(_p1##x,_p11##y,z,c)), \ + (I[174] = (T)(img)(_p1##x,_p10##y,z,c)), \ + (I[206] = (T)(img)(_p1##x,_p9##y,z,c)), \ + (I[238] = (T)(img)(_p1##x,_p8##y,z,c)), \ + (I[270] = (T)(img)(_p1##x,_p7##y,z,c)), \ + (I[302] = (T)(img)(_p1##x,_p6##y,z,c)), \ + (I[334] = (T)(img)(_p1##x,_p5##y,z,c)), \ + (I[366] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[398] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[430] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[462] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[494] = (T)(img)(_p1##x,y,z,c)), \ + (I[526] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[558] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[590] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[622] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[654] = (T)(img)(_p1##x,_n5##y,z,c)), \ + (I[686] = (T)(img)(_p1##x,_n6##y,z,c)), \ + (I[718] = (T)(img)(_p1##x,_n7##y,z,c)), \ + (I[750] = (T)(img)(_p1##x,_n8##y,z,c)), \ + (I[782] = (T)(img)(_p1##x,_n9##y,z,c)), \ + (I[814] = (T)(img)(_p1##x,_n10##y,z,c)), \ + (I[846] = (T)(img)(_p1##x,_n11##y,z,c)), \ + (I[878] = (T)(img)(_p1##x,_n12##y,z,c)), \ + (I[910] = (T)(img)(_p1##x,_n13##y,z,c)), \ + (I[942] = (T)(img)(_p1##x,_n14##y,z,c)), \ + (I[974] = (T)(img)(_p1##x,_n15##y,z,c)), \ + (I[1006] = (T)(img)(_p1##x,_n16##y,z,c)), \ + (I[15] = (T)(img)(x,_p15##y,z,c)), \ + (I[47] = (T)(img)(x,_p14##y,z,c)), \ + (I[79] = (T)(img)(x,_p13##y,z,c)), \ + (I[111] = (T)(img)(x,_p12##y,z,c)), \ + (I[143] = (T)(img)(x,_p11##y,z,c)), \ + (I[175] = (T)(img)(x,_p10##y,z,c)), \ + (I[207] = (T)(img)(x,_p9##y,z,c)), \ + (I[239] = (T)(img)(x,_p8##y,z,c)), \ + (I[271] = (T)(img)(x,_p7##y,z,c)), \ + (I[303] = (T)(img)(x,_p6##y,z,c)), \ + (I[335] = (T)(img)(x,_p5##y,z,c)), \ + (I[367] = (T)(img)(x,_p4##y,z,c)), \ + (I[399] = (T)(img)(x,_p3##y,z,c)), \ + (I[431] = (T)(img)(x,_p2##y,z,c)), \ + (I[463] = (T)(img)(x,_p1##y,z,c)), \ + (I[495] = (T)(img)(x,y,z,c)), \ + (I[527] = (T)(img)(x,_n1##y,z,c)), \ + (I[559] = (T)(img)(x,_n2##y,z,c)), \ + (I[591] = (T)(img)(x,_n3##y,z,c)), \ + (I[623] = (T)(img)(x,_n4##y,z,c)), \ + (I[655] = (T)(img)(x,_n5##y,z,c)), \ + (I[687] = (T)(img)(x,_n6##y,z,c)), \ + (I[719] = (T)(img)(x,_n7##y,z,c)), \ + (I[751] = (T)(img)(x,_n8##y,z,c)), \ + (I[783] = (T)(img)(x,_n9##y,z,c)), \ + (I[815] = (T)(img)(x,_n10##y,z,c)), \ + (I[847] = (T)(img)(x,_n11##y,z,c)), \ + (I[879] = (T)(img)(x,_n12##y,z,c)), \ + (I[911] = (T)(img)(x,_n13##y,z,c)), \ + (I[943] = (T)(img)(x,_n14##y,z,c)), \ + (I[975] = (T)(img)(x,_n15##y,z,c)), \ + (I[1007] = (T)(img)(x,_n16##y,z,c)), \ + (I[16] = (T)(img)(_n1##x,_p15##y,z,c)), \ + (I[48] = (T)(img)(_n1##x,_p14##y,z,c)), \ + (I[80] = (T)(img)(_n1##x,_p13##y,z,c)), \ + (I[112] = (T)(img)(_n1##x,_p12##y,z,c)), \ + (I[144] = (T)(img)(_n1##x,_p11##y,z,c)), \ + (I[176] = (T)(img)(_n1##x,_p10##y,z,c)), \ + (I[208] = (T)(img)(_n1##x,_p9##y,z,c)), \ + (I[240] = (T)(img)(_n1##x,_p8##y,z,c)), \ + (I[272] = (T)(img)(_n1##x,_p7##y,z,c)), \ + (I[304] = (T)(img)(_n1##x,_p6##y,z,c)), \ + (I[336] = (T)(img)(_n1##x,_p5##y,z,c)), \ + (I[368] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[400] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[432] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[464] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[496] = (T)(img)(_n1##x,y,z,c)), \ + (I[528] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[560] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[592] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[624] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[656] = (T)(img)(_n1##x,_n5##y,z,c)), \ + (I[688] = (T)(img)(_n1##x,_n6##y,z,c)), \ + (I[720] = (T)(img)(_n1##x,_n7##y,z,c)), \ + (I[752] = (T)(img)(_n1##x,_n8##y,z,c)), \ + (I[784] = (T)(img)(_n1##x,_n9##y,z,c)), \ + (I[816] = (T)(img)(_n1##x,_n10##y,z,c)), \ + (I[848] = (T)(img)(_n1##x,_n11##y,z,c)), \ + (I[880] = (T)(img)(_n1##x,_n12##y,z,c)), \ + (I[912] = (T)(img)(_n1##x,_n13##y,z,c)), \ + (I[944] = (T)(img)(_n1##x,_n14##y,z,c)), \ + (I[976] = (T)(img)(_n1##x,_n15##y,z,c)), \ + (I[1008] = (T)(img)(_n1##x,_n16##y,z,c)), \ + (I[17] = (T)(img)(_n2##x,_p15##y,z,c)), \ + (I[49] = (T)(img)(_n2##x,_p14##y,z,c)), \ + (I[81] = (T)(img)(_n2##x,_p13##y,z,c)), \ + (I[113] = (T)(img)(_n2##x,_p12##y,z,c)), \ + (I[145] = (T)(img)(_n2##x,_p11##y,z,c)), \ + (I[177] = (T)(img)(_n2##x,_p10##y,z,c)), \ + (I[209] = (T)(img)(_n2##x,_p9##y,z,c)), \ + (I[241] = (T)(img)(_n2##x,_p8##y,z,c)), \ + (I[273] = (T)(img)(_n2##x,_p7##y,z,c)), \ + (I[305] = (T)(img)(_n2##x,_p6##y,z,c)), \ + (I[337] = (T)(img)(_n2##x,_p5##y,z,c)), \ + (I[369] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[401] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[433] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[465] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[497] = (T)(img)(_n2##x,y,z,c)), \ + (I[529] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[561] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[593] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[625] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[657] = (T)(img)(_n2##x,_n5##y,z,c)), \ + (I[689] = (T)(img)(_n2##x,_n6##y,z,c)), \ + (I[721] = (T)(img)(_n2##x,_n7##y,z,c)), \ + (I[753] = (T)(img)(_n2##x,_n8##y,z,c)), \ + (I[785] = (T)(img)(_n2##x,_n9##y,z,c)), \ + (I[817] = (T)(img)(_n2##x,_n10##y,z,c)), \ + (I[849] = (T)(img)(_n2##x,_n11##y,z,c)), \ + (I[881] = (T)(img)(_n2##x,_n12##y,z,c)), \ + (I[913] = (T)(img)(_n2##x,_n13##y,z,c)), \ + (I[945] = (T)(img)(_n2##x,_n14##y,z,c)), \ + (I[977] = (T)(img)(_n2##x,_n15##y,z,c)), \ + (I[1009] = (T)(img)(_n2##x,_n16##y,z,c)), \ + (I[18] = (T)(img)(_n3##x,_p15##y,z,c)), \ + (I[50] = (T)(img)(_n3##x,_p14##y,z,c)), \ + (I[82] = (T)(img)(_n3##x,_p13##y,z,c)), \ + (I[114] = (T)(img)(_n3##x,_p12##y,z,c)), \ + (I[146] = (T)(img)(_n3##x,_p11##y,z,c)), \ + (I[178] = (T)(img)(_n3##x,_p10##y,z,c)), \ + (I[210] = (T)(img)(_n3##x,_p9##y,z,c)), \ + (I[242] = (T)(img)(_n3##x,_p8##y,z,c)), \ + (I[274] = (T)(img)(_n3##x,_p7##y,z,c)), \ + (I[306] = (T)(img)(_n3##x,_p6##y,z,c)), \ + (I[338] = (T)(img)(_n3##x,_p5##y,z,c)), \ + (I[370] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[402] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[434] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[466] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[498] = (T)(img)(_n3##x,y,z,c)), \ + (I[530] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[562] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[594] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[626] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[658] = (T)(img)(_n3##x,_n5##y,z,c)), \ + (I[690] = (T)(img)(_n3##x,_n6##y,z,c)), \ + (I[722] = (T)(img)(_n3##x,_n7##y,z,c)), \ + (I[754] = (T)(img)(_n3##x,_n8##y,z,c)), \ + (I[786] = (T)(img)(_n3##x,_n9##y,z,c)), \ + (I[818] = (T)(img)(_n3##x,_n10##y,z,c)), \ + (I[850] = (T)(img)(_n3##x,_n11##y,z,c)), \ + (I[882] = (T)(img)(_n3##x,_n12##y,z,c)), \ + (I[914] = (T)(img)(_n3##x,_n13##y,z,c)), \ + (I[946] = (T)(img)(_n3##x,_n14##y,z,c)), \ + (I[978] = (T)(img)(_n3##x,_n15##y,z,c)), \ + (I[1010] = (T)(img)(_n3##x,_n16##y,z,c)), \ + (I[19] = (T)(img)(_n4##x,_p15##y,z,c)), \ + (I[51] = (T)(img)(_n4##x,_p14##y,z,c)), \ + (I[83] = (T)(img)(_n4##x,_p13##y,z,c)), \ + (I[115] = (T)(img)(_n4##x,_p12##y,z,c)), \ + (I[147] = (T)(img)(_n4##x,_p11##y,z,c)), \ + (I[179] = (T)(img)(_n4##x,_p10##y,z,c)), \ + (I[211] = (T)(img)(_n4##x,_p9##y,z,c)), \ + (I[243] = (T)(img)(_n4##x,_p8##y,z,c)), \ + (I[275] = (T)(img)(_n4##x,_p7##y,z,c)), \ + (I[307] = (T)(img)(_n4##x,_p6##y,z,c)), \ + (I[339] = (T)(img)(_n4##x,_p5##y,z,c)), \ + (I[371] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[403] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[435] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[467] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[499] = (T)(img)(_n4##x,y,z,c)), \ + (I[531] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[563] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[595] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[627] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[659] = (T)(img)(_n4##x,_n5##y,z,c)), \ + (I[691] = (T)(img)(_n4##x,_n6##y,z,c)), \ + (I[723] = (T)(img)(_n4##x,_n7##y,z,c)), \ + (I[755] = (T)(img)(_n4##x,_n8##y,z,c)), \ + (I[787] = (T)(img)(_n4##x,_n9##y,z,c)), \ + (I[819] = (T)(img)(_n4##x,_n10##y,z,c)), \ + (I[851] = (T)(img)(_n4##x,_n11##y,z,c)), \ + (I[883] = (T)(img)(_n4##x,_n12##y,z,c)), \ + (I[915] = (T)(img)(_n4##x,_n13##y,z,c)), \ + (I[947] = (T)(img)(_n4##x,_n14##y,z,c)), \ + (I[979] = (T)(img)(_n4##x,_n15##y,z,c)), \ + (I[1011] = (T)(img)(_n4##x,_n16##y,z,c)), \ + (I[20] = (T)(img)(_n5##x,_p15##y,z,c)), \ + (I[52] = (T)(img)(_n5##x,_p14##y,z,c)), \ + (I[84] = (T)(img)(_n5##x,_p13##y,z,c)), \ + (I[116] = (T)(img)(_n5##x,_p12##y,z,c)), \ + (I[148] = (T)(img)(_n5##x,_p11##y,z,c)), \ + (I[180] = (T)(img)(_n5##x,_p10##y,z,c)), \ + (I[212] = (T)(img)(_n5##x,_p9##y,z,c)), \ + (I[244] = (T)(img)(_n5##x,_p8##y,z,c)), \ + (I[276] = (T)(img)(_n5##x,_p7##y,z,c)), \ + (I[308] = (T)(img)(_n5##x,_p6##y,z,c)), \ + (I[340] = (T)(img)(_n5##x,_p5##y,z,c)), \ + (I[372] = (T)(img)(_n5##x,_p4##y,z,c)), \ + (I[404] = (T)(img)(_n5##x,_p3##y,z,c)), \ + (I[436] = (T)(img)(_n5##x,_p2##y,z,c)), \ + (I[468] = (T)(img)(_n5##x,_p1##y,z,c)), \ + (I[500] = (T)(img)(_n5##x,y,z,c)), \ + (I[532] = (T)(img)(_n5##x,_n1##y,z,c)), \ + (I[564] = (T)(img)(_n5##x,_n2##y,z,c)), \ + (I[596] = (T)(img)(_n5##x,_n3##y,z,c)), \ + (I[628] = (T)(img)(_n5##x,_n4##y,z,c)), \ + (I[660] = (T)(img)(_n5##x,_n5##y,z,c)), \ + (I[692] = (T)(img)(_n5##x,_n6##y,z,c)), \ + (I[724] = (T)(img)(_n5##x,_n7##y,z,c)), \ + (I[756] = (T)(img)(_n5##x,_n8##y,z,c)), \ + (I[788] = (T)(img)(_n5##x,_n9##y,z,c)), \ + (I[820] = (T)(img)(_n5##x,_n10##y,z,c)), \ + (I[852] = (T)(img)(_n5##x,_n11##y,z,c)), \ + (I[884] = (T)(img)(_n5##x,_n12##y,z,c)), \ + (I[916] = (T)(img)(_n5##x,_n13##y,z,c)), \ + (I[948] = (T)(img)(_n5##x,_n14##y,z,c)), \ + (I[980] = (T)(img)(_n5##x,_n15##y,z,c)), \ + (I[1012] = (T)(img)(_n5##x,_n16##y,z,c)), \ + (I[21] = (T)(img)(_n6##x,_p15##y,z,c)), \ + (I[53] = (T)(img)(_n6##x,_p14##y,z,c)), \ + (I[85] = (T)(img)(_n6##x,_p13##y,z,c)), \ + (I[117] = (T)(img)(_n6##x,_p12##y,z,c)), \ + (I[149] = (T)(img)(_n6##x,_p11##y,z,c)), \ + (I[181] = (T)(img)(_n6##x,_p10##y,z,c)), \ + (I[213] = (T)(img)(_n6##x,_p9##y,z,c)), \ + (I[245] = (T)(img)(_n6##x,_p8##y,z,c)), \ + (I[277] = (T)(img)(_n6##x,_p7##y,z,c)), \ + (I[309] = (T)(img)(_n6##x,_p6##y,z,c)), \ + (I[341] = (T)(img)(_n6##x,_p5##y,z,c)), \ + (I[373] = (T)(img)(_n6##x,_p4##y,z,c)), \ + (I[405] = (T)(img)(_n6##x,_p3##y,z,c)), \ + (I[437] = (T)(img)(_n6##x,_p2##y,z,c)), \ + (I[469] = (T)(img)(_n6##x,_p1##y,z,c)), \ + (I[501] = (T)(img)(_n6##x,y,z,c)), \ + (I[533] = (T)(img)(_n6##x,_n1##y,z,c)), \ + (I[565] = (T)(img)(_n6##x,_n2##y,z,c)), \ + (I[597] = (T)(img)(_n6##x,_n3##y,z,c)), \ + (I[629] = (T)(img)(_n6##x,_n4##y,z,c)), \ + (I[661] = (T)(img)(_n6##x,_n5##y,z,c)), \ + (I[693] = (T)(img)(_n6##x,_n6##y,z,c)), \ + (I[725] = (T)(img)(_n6##x,_n7##y,z,c)), \ + (I[757] = (T)(img)(_n6##x,_n8##y,z,c)), \ + (I[789] = (T)(img)(_n6##x,_n9##y,z,c)), \ + (I[821] = (T)(img)(_n6##x,_n10##y,z,c)), \ + (I[853] = (T)(img)(_n6##x,_n11##y,z,c)), \ + (I[885] = (T)(img)(_n6##x,_n12##y,z,c)), \ + (I[917] = (T)(img)(_n6##x,_n13##y,z,c)), \ + (I[949] = (T)(img)(_n6##x,_n14##y,z,c)), \ + (I[981] = (T)(img)(_n6##x,_n15##y,z,c)), \ + (I[1013] = (T)(img)(_n6##x,_n16##y,z,c)), \ + (I[22] = (T)(img)(_n7##x,_p15##y,z,c)), \ + (I[54] = (T)(img)(_n7##x,_p14##y,z,c)), \ + (I[86] = (T)(img)(_n7##x,_p13##y,z,c)), \ + (I[118] = (T)(img)(_n7##x,_p12##y,z,c)), \ + (I[150] = (T)(img)(_n7##x,_p11##y,z,c)), \ + (I[182] = (T)(img)(_n7##x,_p10##y,z,c)), \ + (I[214] = (T)(img)(_n7##x,_p9##y,z,c)), \ + (I[246] = (T)(img)(_n7##x,_p8##y,z,c)), \ + (I[278] = (T)(img)(_n7##x,_p7##y,z,c)), \ + (I[310] = (T)(img)(_n7##x,_p6##y,z,c)), \ + (I[342] = (T)(img)(_n7##x,_p5##y,z,c)), \ + (I[374] = (T)(img)(_n7##x,_p4##y,z,c)), \ + (I[406] = (T)(img)(_n7##x,_p3##y,z,c)), \ + (I[438] = (T)(img)(_n7##x,_p2##y,z,c)), \ + (I[470] = (T)(img)(_n7##x,_p1##y,z,c)), \ + (I[502] = (T)(img)(_n7##x,y,z,c)), \ + (I[534] = (T)(img)(_n7##x,_n1##y,z,c)), \ + (I[566] = (T)(img)(_n7##x,_n2##y,z,c)), \ + (I[598] = (T)(img)(_n7##x,_n3##y,z,c)), \ + (I[630] = (T)(img)(_n7##x,_n4##y,z,c)), \ + (I[662] = (T)(img)(_n7##x,_n5##y,z,c)), \ + (I[694] = (T)(img)(_n7##x,_n6##y,z,c)), \ + (I[726] = (T)(img)(_n7##x,_n7##y,z,c)), \ + (I[758] = (T)(img)(_n7##x,_n8##y,z,c)), \ + (I[790] = (T)(img)(_n7##x,_n9##y,z,c)), \ + (I[822] = (T)(img)(_n7##x,_n10##y,z,c)), \ + (I[854] = (T)(img)(_n7##x,_n11##y,z,c)), \ + (I[886] = (T)(img)(_n7##x,_n12##y,z,c)), \ + (I[918] = (T)(img)(_n7##x,_n13##y,z,c)), \ + (I[950] = (T)(img)(_n7##x,_n14##y,z,c)), \ + (I[982] = (T)(img)(_n7##x,_n15##y,z,c)), \ + (I[1014] = (T)(img)(_n7##x,_n16##y,z,c)), \ + (I[23] = (T)(img)(_n8##x,_p15##y,z,c)), \ + (I[55] = (T)(img)(_n8##x,_p14##y,z,c)), \ + (I[87] = (T)(img)(_n8##x,_p13##y,z,c)), \ + (I[119] = (T)(img)(_n8##x,_p12##y,z,c)), \ + (I[151] = (T)(img)(_n8##x,_p11##y,z,c)), \ + (I[183] = (T)(img)(_n8##x,_p10##y,z,c)), \ + (I[215] = (T)(img)(_n8##x,_p9##y,z,c)), \ + (I[247] = (T)(img)(_n8##x,_p8##y,z,c)), \ + (I[279] = (T)(img)(_n8##x,_p7##y,z,c)), \ + (I[311] = (T)(img)(_n8##x,_p6##y,z,c)), \ + (I[343] = (T)(img)(_n8##x,_p5##y,z,c)), \ + (I[375] = (T)(img)(_n8##x,_p4##y,z,c)), \ + (I[407] = (T)(img)(_n8##x,_p3##y,z,c)), \ + (I[439] = (T)(img)(_n8##x,_p2##y,z,c)), \ + (I[471] = (T)(img)(_n8##x,_p1##y,z,c)), \ + (I[503] = (T)(img)(_n8##x,y,z,c)), \ + (I[535] = (T)(img)(_n8##x,_n1##y,z,c)), \ + (I[567] = (T)(img)(_n8##x,_n2##y,z,c)), \ + (I[599] = (T)(img)(_n8##x,_n3##y,z,c)), \ + (I[631] = (T)(img)(_n8##x,_n4##y,z,c)), \ + (I[663] = (T)(img)(_n8##x,_n5##y,z,c)), \ + (I[695] = (T)(img)(_n8##x,_n6##y,z,c)), \ + (I[727] = (T)(img)(_n8##x,_n7##y,z,c)), \ + (I[759] = (T)(img)(_n8##x,_n8##y,z,c)), \ + (I[791] = (T)(img)(_n8##x,_n9##y,z,c)), \ + (I[823] = (T)(img)(_n8##x,_n10##y,z,c)), \ + (I[855] = (T)(img)(_n8##x,_n11##y,z,c)), \ + (I[887] = (T)(img)(_n8##x,_n12##y,z,c)), \ + (I[919] = (T)(img)(_n8##x,_n13##y,z,c)), \ + (I[951] = (T)(img)(_n8##x,_n14##y,z,c)), \ + (I[983] = (T)(img)(_n8##x,_n15##y,z,c)), \ + (I[1015] = (T)(img)(_n8##x,_n16##y,z,c)), \ + (I[24] = (T)(img)(_n9##x,_p15##y,z,c)), \ + (I[56] = (T)(img)(_n9##x,_p14##y,z,c)), \ + (I[88] = (T)(img)(_n9##x,_p13##y,z,c)), \ + (I[120] = (T)(img)(_n9##x,_p12##y,z,c)), \ + (I[152] = (T)(img)(_n9##x,_p11##y,z,c)), \ + (I[184] = (T)(img)(_n9##x,_p10##y,z,c)), \ + (I[216] = (T)(img)(_n9##x,_p9##y,z,c)), \ + (I[248] = (T)(img)(_n9##x,_p8##y,z,c)), \ + (I[280] = (T)(img)(_n9##x,_p7##y,z,c)), \ + (I[312] = (T)(img)(_n9##x,_p6##y,z,c)), \ + (I[344] = (T)(img)(_n9##x,_p5##y,z,c)), \ + (I[376] = (T)(img)(_n9##x,_p4##y,z,c)), \ + (I[408] = (T)(img)(_n9##x,_p3##y,z,c)), \ + (I[440] = (T)(img)(_n9##x,_p2##y,z,c)), \ + (I[472] = (T)(img)(_n9##x,_p1##y,z,c)), \ + (I[504] = (T)(img)(_n9##x,y,z,c)), \ + (I[536] = (T)(img)(_n9##x,_n1##y,z,c)), \ + (I[568] = (T)(img)(_n9##x,_n2##y,z,c)), \ + (I[600] = (T)(img)(_n9##x,_n3##y,z,c)), \ + (I[632] = (T)(img)(_n9##x,_n4##y,z,c)), \ + (I[664] = (T)(img)(_n9##x,_n5##y,z,c)), \ + (I[696] = (T)(img)(_n9##x,_n6##y,z,c)), \ + (I[728] = (T)(img)(_n9##x,_n7##y,z,c)), \ + (I[760] = (T)(img)(_n9##x,_n8##y,z,c)), \ + (I[792] = (T)(img)(_n9##x,_n9##y,z,c)), \ + (I[824] = (T)(img)(_n9##x,_n10##y,z,c)), \ + (I[856] = (T)(img)(_n9##x,_n11##y,z,c)), \ + (I[888] = (T)(img)(_n9##x,_n12##y,z,c)), \ + (I[920] = (T)(img)(_n9##x,_n13##y,z,c)), \ + (I[952] = (T)(img)(_n9##x,_n14##y,z,c)), \ + (I[984] = (T)(img)(_n9##x,_n15##y,z,c)), \ + (I[1016] = (T)(img)(_n9##x,_n16##y,z,c)), \ + (I[25] = (T)(img)(_n10##x,_p15##y,z,c)), \ + (I[57] = (T)(img)(_n10##x,_p14##y,z,c)), \ + (I[89] = (T)(img)(_n10##x,_p13##y,z,c)), \ + (I[121] = (T)(img)(_n10##x,_p12##y,z,c)), \ + (I[153] = (T)(img)(_n10##x,_p11##y,z,c)), \ + (I[185] = (T)(img)(_n10##x,_p10##y,z,c)), \ + (I[217] = (T)(img)(_n10##x,_p9##y,z,c)), \ + (I[249] = (T)(img)(_n10##x,_p8##y,z,c)), \ + (I[281] = (T)(img)(_n10##x,_p7##y,z,c)), \ + (I[313] = (T)(img)(_n10##x,_p6##y,z,c)), \ + (I[345] = (T)(img)(_n10##x,_p5##y,z,c)), \ + (I[377] = (T)(img)(_n10##x,_p4##y,z,c)), \ + (I[409] = (T)(img)(_n10##x,_p3##y,z,c)), \ + (I[441] = (T)(img)(_n10##x,_p2##y,z,c)), \ + (I[473] = (T)(img)(_n10##x,_p1##y,z,c)), \ + (I[505] = (T)(img)(_n10##x,y,z,c)), \ + (I[537] = (T)(img)(_n10##x,_n1##y,z,c)), \ + (I[569] = (T)(img)(_n10##x,_n2##y,z,c)), \ + (I[601] = (T)(img)(_n10##x,_n3##y,z,c)), \ + (I[633] = (T)(img)(_n10##x,_n4##y,z,c)), \ + (I[665] = (T)(img)(_n10##x,_n5##y,z,c)), \ + (I[697] = (T)(img)(_n10##x,_n6##y,z,c)), \ + (I[729] = (T)(img)(_n10##x,_n7##y,z,c)), \ + (I[761] = (T)(img)(_n10##x,_n8##y,z,c)), \ + (I[793] = (T)(img)(_n10##x,_n9##y,z,c)), \ + (I[825] = (T)(img)(_n10##x,_n10##y,z,c)), \ + (I[857] = (T)(img)(_n10##x,_n11##y,z,c)), \ + (I[889] = (T)(img)(_n10##x,_n12##y,z,c)), \ + (I[921] = (T)(img)(_n10##x,_n13##y,z,c)), \ + (I[953] = (T)(img)(_n10##x,_n14##y,z,c)), \ + (I[985] = (T)(img)(_n10##x,_n15##y,z,c)), \ + (I[1017] = (T)(img)(_n10##x,_n16##y,z,c)), \ + (I[26] = (T)(img)(_n11##x,_p15##y,z,c)), \ + (I[58] = (T)(img)(_n11##x,_p14##y,z,c)), \ + (I[90] = (T)(img)(_n11##x,_p13##y,z,c)), \ + (I[122] = (T)(img)(_n11##x,_p12##y,z,c)), \ + (I[154] = (T)(img)(_n11##x,_p11##y,z,c)), \ + (I[186] = (T)(img)(_n11##x,_p10##y,z,c)), \ + (I[218] = (T)(img)(_n11##x,_p9##y,z,c)), \ + (I[250] = (T)(img)(_n11##x,_p8##y,z,c)), \ + (I[282] = (T)(img)(_n11##x,_p7##y,z,c)), \ + (I[314] = (T)(img)(_n11##x,_p6##y,z,c)), \ + (I[346] = (T)(img)(_n11##x,_p5##y,z,c)), \ + (I[378] = (T)(img)(_n11##x,_p4##y,z,c)), \ + (I[410] = (T)(img)(_n11##x,_p3##y,z,c)), \ + (I[442] = (T)(img)(_n11##x,_p2##y,z,c)), \ + (I[474] = (T)(img)(_n11##x,_p1##y,z,c)), \ + (I[506] = (T)(img)(_n11##x,y,z,c)), \ + (I[538] = (T)(img)(_n11##x,_n1##y,z,c)), \ + (I[570] = (T)(img)(_n11##x,_n2##y,z,c)), \ + (I[602] = (T)(img)(_n11##x,_n3##y,z,c)), \ + (I[634] = (T)(img)(_n11##x,_n4##y,z,c)), \ + (I[666] = (T)(img)(_n11##x,_n5##y,z,c)), \ + (I[698] = (T)(img)(_n11##x,_n6##y,z,c)), \ + (I[730] = (T)(img)(_n11##x,_n7##y,z,c)), \ + (I[762] = (T)(img)(_n11##x,_n8##y,z,c)), \ + (I[794] = (T)(img)(_n11##x,_n9##y,z,c)), \ + (I[826] = (T)(img)(_n11##x,_n10##y,z,c)), \ + (I[858] = (T)(img)(_n11##x,_n11##y,z,c)), \ + (I[890] = (T)(img)(_n11##x,_n12##y,z,c)), \ + (I[922] = (T)(img)(_n11##x,_n13##y,z,c)), \ + (I[954] = (T)(img)(_n11##x,_n14##y,z,c)), \ + (I[986] = (T)(img)(_n11##x,_n15##y,z,c)), \ + (I[1018] = (T)(img)(_n11##x,_n16##y,z,c)), \ + (I[27] = (T)(img)(_n12##x,_p15##y,z,c)), \ + (I[59] = (T)(img)(_n12##x,_p14##y,z,c)), \ + (I[91] = (T)(img)(_n12##x,_p13##y,z,c)), \ + (I[123] = (T)(img)(_n12##x,_p12##y,z,c)), \ + (I[155] = (T)(img)(_n12##x,_p11##y,z,c)), \ + (I[187] = (T)(img)(_n12##x,_p10##y,z,c)), \ + (I[219] = (T)(img)(_n12##x,_p9##y,z,c)), \ + (I[251] = (T)(img)(_n12##x,_p8##y,z,c)), \ + (I[283] = (T)(img)(_n12##x,_p7##y,z,c)), \ + (I[315] = (T)(img)(_n12##x,_p6##y,z,c)), \ + (I[347] = (T)(img)(_n12##x,_p5##y,z,c)), \ + (I[379] = (T)(img)(_n12##x,_p4##y,z,c)), \ + (I[411] = (T)(img)(_n12##x,_p3##y,z,c)), \ + (I[443] = (T)(img)(_n12##x,_p2##y,z,c)), \ + (I[475] = (T)(img)(_n12##x,_p1##y,z,c)), \ + (I[507] = (T)(img)(_n12##x,y,z,c)), \ + (I[539] = (T)(img)(_n12##x,_n1##y,z,c)), \ + (I[571] = (T)(img)(_n12##x,_n2##y,z,c)), \ + (I[603] = (T)(img)(_n12##x,_n3##y,z,c)), \ + (I[635] = (T)(img)(_n12##x,_n4##y,z,c)), \ + (I[667] = (T)(img)(_n12##x,_n5##y,z,c)), \ + (I[699] = (T)(img)(_n12##x,_n6##y,z,c)), \ + (I[731] = (T)(img)(_n12##x,_n7##y,z,c)), \ + (I[763] = (T)(img)(_n12##x,_n8##y,z,c)), \ + (I[795] = (T)(img)(_n12##x,_n9##y,z,c)), \ + (I[827] = (T)(img)(_n12##x,_n10##y,z,c)), \ + (I[859] = (T)(img)(_n12##x,_n11##y,z,c)), \ + (I[891] = (T)(img)(_n12##x,_n12##y,z,c)), \ + (I[923] = (T)(img)(_n12##x,_n13##y,z,c)), \ + (I[955] = (T)(img)(_n12##x,_n14##y,z,c)), \ + (I[987] = (T)(img)(_n12##x,_n15##y,z,c)), \ + (I[1019] = (T)(img)(_n12##x,_n16##y,z,c)), \ + (I[28] = (T)(img)(_n13##x,_p15##y,z,c)), \ + (I[60] = (T)(img)(_n13##x,_p14##y,z,c)), \ + (I[92] = (T)(img)(_n13##x,_p13##y,z,c)), \ + (I[124] = (T)(img)(_n13##x,_p12##y,z,c)), \ + (I[156] = (T)(img)(_n13##x,_p11##y,z,c)), \ + (I[188] = (T)(img)(_n13##x,_p10##y,z,c)), \ + (I[220] = (T)(img)(_n13##x,_p9##y,z,c)), \ + (I[252] = (T)(img)(_n13##x,_p8##y,z,c)), \ + (I[284] = (T)(img)(_n13##x,_p7##y,z,c)), \ + (I[316] = (T)(img)(_n13##x,_p6##y,z,c)), \ + (I[348] = (T)(img)(_n13##x,_p5##y,z,c)), \ + (I[380] = (T)(img)(_n13##x,_p4##y,z,c)), \ + (I[412] = (T)(img)(_n13##x,_p3##y,z,c)), \ + (I[444] = (T)(img)(_n13##x,_p2##y,z,c)), \ + (I[476] = (T)(img)(_n13##x,_p1##y,z,c)), \ + (I[508] = (T)(img)(_n13##x,y,z,c)), \ + (I[540] = (T)(img)(_n13##x,_n1##y,z,c)), \ + (I[572] = (T)(img)(_n13##x,_n2##y,z,c)), \ + (I[604] = (T)(img)(_n13##x,_n3##y,z,c)), \ + (I[636] = (T)(img)(_n13##x,_n4##y,z,c)), \ + (I[668] = (T)(img)(_n13##x,_n5##y,z,c)), \ + (I[700] = (T)(img)(_n13##x,_n6##y,z,c)), \ + (I[732] = (T)(img)(_n13##x,_n7##y,z,c)), \ + (I[764] = (T)(img)(_n13##x,_n8##y,z,c)), \ + (I[796] = (T)(img)(_n13##x,_n9##y,z,c)), \ + (I[828] = (T)(img)(_n13##x,_n10##y,z,c)), \ + (I[860] = (T)(img)(_n13##x,_n11##y,z,c)), \ + (I[892] = (T)(img)(_n13##x,_n12##y,z,c)), \ + (I[924] = (T)(img)(_n13##x,_n13##y,z,c)), \ + (I[956] = (T)(img)(_n13##x,_n14##y,z,c)), \ + (I[988] = (T)(img)(_n13##x,_n15##y,z,c)), \ + (I[1020] = (T)(img)(_n13##x,_n16##y,z,c)), \ + (I[29] = (T)(img)(_n14##x,_p15##y,z,c)), \ + (I[61] = (T)(img)(_n14##x,_p14##y,z,c)), \ + (I[93] = (T)(img)(_n14##x,_p13##y,z,c)), \ + (I[125] = (T)(img)(_n14##x,_p12##y,z,c)), \ + (I[157] = (T)(img)(_n14##x,_p11##y,z,c)), \ + (I[189] = (T)(img)(_n14##x,_p10##y,z,c)), \ + (I[221] = (T)(img)(_n14##x,_p9##y,z,c)), \ + (I[253] = (T)(img)(_n14##x,_p8##y,z,c)), \ + (I[285] = (T)(img)(_n14##x,_p7##y,z,c)), \ + (I[317] = (T)(img)(_n14##x,_p6##y,z,c)), \ + (I[349] = (T)(img)(_n14##x,_p5##y,z,c)), \ + (I[381] = (T)(img)(_n14##x,_p4##y,z,c)), \ + (I[413] = (T)(img)(_n14##x,_p3##y,z,c)), \ + (I[445] = (T)(img)(_n14##x,_p2##y,z,c)), \ + (I[477] = (T)(img)(_n14##x,_p1##y,z,c)), \ + (I[509] = (T)(img)(_n14##x,y,z,c)), \ + (I[541] = (T)(img)(_n14##x,_n1##y,z,c)), \ + (I[573] = (T)(img)(_n14##x,_n2##y,z,c)), \ + (I[605] = (T)(img)(_n14##x,_n3##y,z,c)), \ + (I[637] = (T)(img)(_n14##x,_n4##y,z,c)), \ + (I[669] = (T)(img)(_n14##x,_n5##y,z,c)), \ + (I[701] = (T)(img)(_n14##x,_n6##y,z,c)), \ + (I[733] = (T)(img)(_n14##x,_n7##y,z,c)), \ + (I[765] = (T)(img)(_n14##x,_n8##y,z,c)), \ + (I[797] = (T)(img)(_n14##x,_n9##y,z,c)), \ + (I[829] = (T)(img)(_n14##x,_n10##y,z,c)), \ + (I[861] = (T)(img)(_n14##x,_n11##y,z,c)), \ + (I[893] = (T)(img)(_n14##x,_n12##y,z,c)), \ + (I[925] = (T)(img)(_n14##x,_n13##y,z,c)), \ + (I[957] = (T)(img)(_n14##x,_n14##y,z,c)), \ + (I[989] = (T)(img)(_n14##x,_n15##y,z,c)), \ + (I[1021] = (T)(img)(_n14##x,_n16##y,z,c)), \ + (I[30] = (T)(img)(_n15##x,_p15##y,z,c)), \ + (I[62] = (T)(img)(_n15##x,_p14##y,z,c)), \ + (I[94] = (T)(img)(_n15##x,_p13##y,z,c)), \ + (I[126] = (T)(img)(_n15##x,_p12##y,z,c)), \ + (I[158] = (T)(img)(_n15##x,_p11##y,z,c)), \ + (I[190] = (T)(img)(_n15##x,_p10##y,z,c)), \ + (I[222] = (T)(img)(_n15##x,_p9##y,z,c)), \ + (I[254] = (T)(img)(_n15##x,_p8##y,z,c)), \ + (I[286] = (T)(img)(_n15##x,_p7##y,z,c)), \ + (I[318] = (T)(img)(_n15##x,_p6##y,z,c)), \ + (I[350] = (T)(img)(_n15##x,_p5##y,z,c)), \ + (I[382] = (T)(img)(_n15##x,_p4##y,z,c)), \ + (I[414] = (T)(img)(_n15##x,_p3##y,z,c)), \ + (I[446] = (T)(img)(_n15##x,_p2##y,z,c)), \ + (I[478] = (T)(img)(_n15##x,_p1##y,z,c)), \ + (I[510] = (T)(img)(_n15##x,y,z,c)), \ + (I[542] = (T)(img)(_n15##x,_n1##y,z,c)), \ + (I[574] = (T)(img)(_n15##x,_n2##y,z,c)), \ + (I[606] = (T)(img)(_n15##x,_n3##y,z,c)), \ + (I[638] = (T)(img)(_n15##x,_n4##y,z,c)), \ + (I[670] = (T)(img)(_n15##x,_n5##y,z,c)), \ + (I[702] = (T)(img)(_n15##x,_n6##y,z,c)), \ + (I[734] = (T)(img)(_n15##x,_n7##y,z,c)), \ + (I[766] = (T)(img)(_n15##x,_n8##y,z,c)), \ + (I[798] = (T)(img)(_n15##x,_n9##y,z,c)), \ + (I[830] = (T)(img)(_n15##x,_n10##y,z,c)), \ + (I[862] = (T)(img)(_n15##x,_n11##y,z,c)), \ + (I[894] = (T)(img)(_n15##x,_n12##y,z,c)), \ + (I[926] = (T)(img)(_n15##x,_n13##y,z,c)), \ + (I[958] = (T)(img)(_n15##x,_n14##y,z,c)), \ + (I[990] = (T)(img)(_n15##x,_n15##y,z,c)), \ + (I[1022] = (T)(img)(_n15##x,_n16##y,z,c)), \ + x + 16>=(img).width()?(img).width() - 1:x + 16); \ + x<=(int)(x1) && ((_n16##x<(img).width() && ( \ + (I[31] = (T)(img)(_n16##x,_p15##y,z,c)), \ + (I[63] = (T)(img)(_n16##x,_p14##y,z,c)), \ + (I[95] = (T)(img)(_n16##x,_p13##y,z,c)), \ + (I[127] = (T)(img)(_n16##x,_p12##y,z,c)), \ + (I[159] = (T)(img)(_n16##x,_p11##y,z,c)), \ + (I[191] = (T)(img)(_n16##x,_p10##y,z,c)), \ + (I[223] = (T)(img)(_n16##x,_p9##y,z,c)), \ + (I[255] = (T)(img)(_n16##x,_p8##y,z,c)), \ + (I[287] = (T)(img)(_n16##x,_p7##y,z,c)), \ + (I[319] = (T)(img)(_n16##x,_p6##y,z,c)), \ + (I[351] = (T)(img)(_n16##x,_p5##y,z,c)), \ + (I[383] = (T)(img)(_n16##x,_p4##y,z,c)), \ + (I[415] = (T)(img)(_n16##x,_p3##y,z,c)), \ + (I[447] = (T)(img)(_n16##x,_p2##y,z,c)), \ + (I[479] = (T)(img)(_n16##x,_p1##y,z,c)), \ + (I[511] = (T)(img)(_n16##x,y,z,c)), \ + (I[543] = (T)(img)(_n16##x,_n1##y,z,c)), \ + (I[575] = (T)(img)(_n16##x,_n2##y,z,c)), \ + (I[607] = (T)(img)(_n16##x,_n3##y,z,c)), \ + (I[639] = (T)(img)(_n16##x,_n4##y,z,c)), \ + (I[671] = (T)(img)(_n16##x,_n5##y,z,c)), \ + (I[703] = (T)(img)(_n16##x,_n6##y,z,c)), \ + (I[735] = (T)(img)(_n16##x,_n7##y,z,c)), \ + (I[767] = (T)(img)(_n16##x,_n8##y,z,c)), \ + (I[799] = (T)(img)(_n16##x,_n9##y,z,c)), \ + (I[831] = (T)(img)(_n16##x,_n10##y,z,c)), \ + (I[863] = (T)(img)(_n16##x,_n11##y,z,c)), \ + (I[895] = (T)(img)(_n16##x,_n12##y,z,c)), \ + (I[927] = (T)(img)(_n16##x,_n13##y,z,c)), \ + (I[959] = (T)(img)(_n16##x,_n14##y,z,c)), \ + (I[991] = (T)(img)(_n16##x,_n15##y,z,c)), \ + (I[1023] = (T)(img)(_n16##x,_n16##y,z,c)),1)) || \ + _n15##x==--_n16##x || _n14##x==--_n15##x || _n13##x==--_n14##x || _n12##x==--_n13##x || _n11##x==--_n12##x || _n10##x==--_n11##x || _n9##x==--_n10##x || _n8##x==--_n9##x || _n7##x==--_n8##x || _n6##x==--_n7##x || _n5##x==--_n6##x || _n4##x==--_n5##x || _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n16##x = _n15##x = _n14##x = _n13##x = _n12##x = _n11##x = _n10##x = _n9##x = _n8##x = _n7##x = _n6##x = _n5##x = _n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], \ + I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], \ + I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], I[167] = I[168], I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], \ + I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], \ + I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], \ + I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], I[279] = I[280], I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], \ + I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], \ + I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], I[335] = I[336], I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], I[343] = I[344], I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], \ + I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], I[359] = I[360], I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], I[367] = I[368], I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], I[375] = I[376], I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], \ + I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], I[391] = I[392], I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], I[399] = I[400], I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], I[407] = I[408], I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], \ + I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], I[423] = I[424], I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], I[431] = I[432], I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], I[439] = I[440], I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], \ + I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], I[455] = I[456], I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], I[463] = I[464], I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], I[471] = I[472], I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], \ + I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], I[487] = I[488], I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], I[495] = I[496], I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], I[503] = I[504], I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], \ + I[512] = I[513], I[513] = I[514], I[514] = I[515], I[515] = I[516], I[516] = I[517], I[517] = I[518], I[518] = I[519], I[519] = I[520], I[520] = I[521], I[521] = I[522], I[522] = I[523], I[523] = I[524], I[524] = I[525], I[525] = I[526], I[526] = I[527], I[527] = I[528], I[528] = I[529], I[529] = I[530], I[530] = I[531], I[531] = I[532], I[532] = I[533], I[533] = I[534], I[534] = I[535], I[535] = I[536], I[536] = I[537], I[537] = I[538], I[538] = I[539], I[539] = I[540], I[540] = I[541], I[541] = I[542], I[542] = I[543], \ + I[544] = I[545], I[545] = I[546], I[546] = I[547], I[547] = I[548], I[548] = I[549], I[549] = I[550], I[550] = I[551], I[551] = I[552], I[552] = I[553], I[553] = I[554], I[554] = I[555], I[555] = I[556], I[556] = I[557], I[557] = I[558], I[558] = I[559], I[559] = I[560], I[560] = I[561], I[561] = I[562], I[562] = I[563], I[563] = I[564], I[564] = I[565], I[565] = I[566], I[566] = I[567], I[567] = I[568], I[568] = I[569], I[569] = I[570], I[570] = I[571], I[571] = I[572], I[572] = I[573], I[573] = I[574], I[574] = I[575], \ + I[576] = I[577], I[577] = I[578], I[578] = I[579], I[579] = I[580], I[580] = I[581], I[581] = I[582], I[582] = I[583], I[583] = I[584], I[584] = I[585], I[585] = I[586], I[586] = I[587], I[587] = I[588], I[588] = I[589], I[589] = I[590], I[590] = I[591], I[591] = I[592], I[592] = I[593], I[593] = I[594], I[594] = I[595], I[595] = I[596], I[596] = I[597], I[597] = I[598], I[598] = I[599], I[599] = I[600], I[600] = I[601], I[601] = I[602], I[602] = I[603], I[603] = I[604], I[604] = I[605], I[605] = I[606], I[606] = I[607], \ + I[608] = I[609], I[609] = I[610], I[610] = I[611], I[611] = I[612], I[612] = I[613], I[613] = I[614], I[614] = I[615], I[615] = I[616], I[616] = I[617], I[617] = I[618], I[618] = I[619], I[619] = I[620], I[620] = I[621], I[621] = I[622], I[622] = I[623], I[623] = I[624], I[624] = I[625], I[625] = I[626], I[626] = I[627], I[627] = I[628], I[628] = I[629], I[629] = I[630], I[630] = I[631], I[631] = I[632], I[632] = I[633], I[633] = I[634], I[634] = I[635], I[635] = I[636], I[636] = I[637], I[637] = I[638], I[638] = I[639], \ + I[640] = I[641], I[641] = I[642], I[642] = I[643], I[643] = I[644], I[644] = I[645], I[645] = I[646], I[646] = I[647], I[647] = I[648], I[648] = I[649], I[649] = I[650], I[650] = I[651], I[651] = I[652], I[652] = I[653], I[653] = I[654], I[654] = I[655], I[655] = I[656], I[656] = I[657], I[657] = I[658], I[658] = I[659], I[659] = I[660], I[660] = I[661], I[661] = I[662], I[662] = I[663], I[663] = I[664], I[664] = I[665], I[665] = I[666], I[666] = I[667], I[667] = I[668], I[668] = I[669], I[669] = I[670], I[670] = I[671], \ + I[672] = I[673], I[673] = I[674], I[674] = I[675], I[675] = I[676], I[676] = I[677], I[677] = I[678], I[678] = I[679], I[679] = I[680], I[680] = I[681], I[681] = I[682], I[682] = I[683], I[683] = I[684], I[684] = I[685], I[685] = I[686], I[686] = I[687], I[687] = I[688], I[688] = I[689], I[689] = I[690], I[690] = I[691], I[691] = I[692], I[692] = I[693], I[693] = I[694], I[694] = I[695], I[695] = I[696], I[696] = I[697], I[697] = I[698], I[698] = I[699], I[699] = I[700], I[700] = I[701], I[701] = I[702], I[702] = I[703], \ + I[704] = I[705], I[705] = I[706], I[706] = I[707], I[707] = I[708], I[708] = I[709], I[709] = I[710], I[710] = I[711], I[711] = I[712], I[712] = I[713], I[713] = I[714], I[714] = I[715], I[715] = I[716], I[716] = I[717], I[717] = I[718], I[718] = I[719], I[719] = I[720], I[720] = I[721], I[721] = I[722], I[722] = I[723], I[723] = I[724], I[724] = I[725], I[725] = I[726], I[726] = I[727], I[727] = I[728], I[728] = I[729], I[729] = I[730], I[730] = I[731], I[731] = I[732], I[732] = I[733], I[733] = I[734], I[734] = I[735], \ + I[736] = I[737], I[737] = I[738], I[738] = I[739], I[739] = I[740], I[740] = I[741], I[741] = I[742], I[742] = I[743], I[743] = I[744], I[744] = I[745], I[745] = I[746], I[746] = I[747], I[747] = I[748], I[748] = I[749], I[749] = I[750], I[750] = I[751], I[751] = I[752], I[752] = I[753], I[753] = I[754], I[754] = I[755], I[755] = I[756], I[756] = I[757], I[757] = I[758], I[758] = I[759], I[759] = I[760], I[760] = I[761], I[761] = I[762], I[762] = I[763], I[763] = I[764], I[764] = I[765], I[765] = I[766], I[766] = I[767], \ + I[768] = I[769], I[769] = I[770], I[770] = I[771], I[771] = I[772], I[772] = I[773], I[773] = I[774], I[774] = I[775], I[775] = I[776], I[776] = I[777], I[777] = I[778], I[778] = I[779], I[779] = I[780], I[780] = I[781], I[781] = I[782], I[782] = I[783], I[783] = I[784], I[784] = I[785], I[785] = I[786], I[786] = I[787], I[787] = I[788], I[788] = I[789], I[789] = I[790], I[790] = I[791], I[791] = I[792], I[792] = I[793], I[793] = I[794], I[794] = I[795], I[795] = I[796], I[796] = I[797], I[797] = I[798], I[798] = I[799], \ + I[800] = I[801], I[801] = I[802], I[802] = I[803], I[803] = I[804], I[804] = I[805], I[805] = I[806], I[806] = I[807], I[807] = I[808], I[808] = I[809], I[809] = I[810], I[810] = I[811], I[811] = I[812], I[812] = I[813], I[813] = I[814], I[814] = I[815], I[815] = I[816], I[816] = I[817], I[817] = I[818], I[818] = I[819], I[819] = I[820], I[820] = I[821], I[821] = I[822], I[822] = I[823], I[823] = I[824], I[824] = I[825], I[825] = I[826], I[826] = I[827], I[827] = I[828], I[828] = I[829], I[829] = I[830], I[830] = I[831], \ + I[832] = I[833], I[833] = I[834], I[834] = I[835], I[835] = I[836], I[836] = I[837], I[837] = I[838], I[838] = I[839], I[839] = I[840], I[840] = I[841], I[841] = I[842], I[842] = I[843], I[843] = I[844], I[844] = I[845], I[845] = I[846], I[846] = I[847], I[847] = I[848], I[848] = I[849], I[849] = I[850], I[850] = I[851], I[851] = I[852], I[852] = I[853], I[853] = I[854], I[854] = I[855], I[855] = I[856], I[856] = I[857], I[857] = I[858], I[858] = I[859], I[859] = I[860], I[860] = I[861], I[861] = I[862], I[862] = I[863], \ + I[864] = I[865], I[865] = I[866], I[866] = I[867], I[867] = I[868], I[868] = I[869], I[869] = I[870], I[870] = I[871], I[871] = I[872], I[872] = I[873], I[873] = I[874], I[874] = I[875], I[875] = I[876], I[876] = I[877], I[877] = I[878], I[878] = I[879], I[879] = I[880], I[880] = I[881], I[881] = I[882], I[882] = I[883], I[883] = I[884], I[884] = I[885], I[885] = I[886], I[886] = I[887], I[887] = I[888], I[888] = I[889], I[889] = I[890], I[890] = I[891], I[891] = I[892], I[892] = I[893], I[893] = I[894], I[894] = I[895], \ + I[896] = I[897], I[897] = I[898], I[898] = I[899], I[899] = I[900], I[900] = I[901], I[901] = I[902], I[902] = I[903], I[903] = I[904], I[904] = I[905], I[905] = I[906], I[906] = I[907], I[907] = I[908], I[908] = I[909], I[909] = I[910], I[910] = I[911], I[911] = I[912], I[912] = I[913], I[913] = I[914], I[914] = I[915], I[915] = I[916], I[916] = I[917], I[917] = I[918], I[918] = I[919], I[919] = I[920], I[920] = I[921], I[921] = I[922], I[922] = I[923], I[923] = I[924], I[924] = I[925], I[925] = I[926], I[926] = I[927], \ + I[928] = I[929], I[929] = I[930], I[930] = I[931], I[931] = I[932], I[932] = I[933], I[933] = I[934], I[934] = I[935], I[935] = I[936], I[936] = I[937], I[937] = I[938], I[938] = I[939], I[939] = I[940], I[940] = I[941], I[941] = I[942], I[942] = I[943], I[943] = I[944], I[944] = I[945], I[945] = I[946], I[946] = I[947], I[947] = I[948], I[948] = I[949], I[949] = I[950], I[950] = I[951], I[951] = I[952], I[952] = I[953], I[953] = I[954], I[954] = I[955], I[955] = I[956], I[956] = I[957], I[957] = I[958], I[958] = I[959], \ + I[960] = I[961], I[961] = I[962], I[962] = I[963], I[963] = I[964], I[964] = I[965], I[965] = I[966], I[966] = I[967], I[967] = I[968], I[968] = I[969], I[969] = I[970], I[970] = I[971], I[971] = I[972], I[972] = I[973], I[973] = I[974], I[974] = I[975], I[975] = I[976], I[976] = I[977], I[977] = I[978], I[978] = I[979], I[979] = I[980], I[980] = I[981], I[981] = I[982], I[982] = I[983], I[983] = I[984], I[984] = I[985], I[985] = I[986], I[986] = I[987], I[987] = I[988], I[988] = I[989], I[989] = I[990], I[990] = I[991], \ + I[992] = I[993], I[993] = I[994], I[994] = I[995], I[995] = I[996], I[996] = I[997], I[997] = I[998], I[998] = I[999], I[999] = I[1000], I[1000] = I[1001], I[1001] = I[1002], I[1002] = I[1003], I[1003] = I[1004], I[1004] = I[1005], I[1005] = I[1006], I[1006] = I[1007], I[1007] = I[1008], I[1008] = I[1009], I[1009] = I[1010], I[1010] = I[1011], I[1011] = I[1012], I[1012] = I[1013], I[1013] = I[1014], I[1014] = I[1015], I[1015] = I[1016], I[1016] = I[1017], I[1017] = I[1018], I[1018] = I[1019], I[1019] = I[1020], I[1020] = I[1021], I[1021] = I[1022], I[1022] = I[1023], \ + _p15##x = _p14##x, _p14##x = _p13##x, _p13##x = _p12##x, _p12##x = _p11##x, _p11##x = _p10##x, _p10##x = _p9##x, _p9##x = _p8##x, _p8##x = _p7##x, _p7##x = _p6##x, _p6##x = _p5##x, _p5##x = _p4##x, _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x, ++_n5##x, ++_n6##x, ++_n7##x, ++_n8##x, ++_n9##x, ++_n10##x, ++_n11##x, ++_n12##x, ++_n13##x, ++_n14##x, ++_n15##x, ++_n16##x) + +#define cimg_get32x32(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p15##x,_p15##y,z,c), I[1] = (T)(img)(_p14##x,_p15##y,z,c), I[2] = (T)(img)(_p13##x,_p15##y,z,c), I[3] = (T)(img)(_p12##x,_p15##y,z,c), I[4] = (T)(img)(_p11##x,_p15##y,z,c), I[5] = (T)(img)(_p10##x,_p15##y,z,c), I[6] = (T)(img)(_p9##x,_p15##y,z,c), I[7] = (T)(img)(_p8##x,_p15##y,z,c), I[8] = (T)(img)(_p7##x,_p15##y,z,c), I[9] = (T)(img)(_p6##x,_p15##y,z,c), I[10] = (T)(img)(_p5##x,_p15##y,z,c), I[11] = (T)(img)(_p4##x,_p15##y,z,c), I[12] = (T)(img)(_p3##x,_p15##y,z,c), I[13] = (T)(img)(_p2##x,_p15##y,z,c), I[14] = (T)(img)(_p1##x,_p15##y,z,c), I[15] = (T)(img)(x,_p15##y,z,c), I[16] = (T)(img)(_n1##x,_p15##y,z,c), I[17] = (T)(img)(_n2##x,_p15##y,z,c), I[18] = (T)(img)(_n3##x,_p15##y,z,c), I[19] = (T)(img)(_n4##x,_p15##y,z,c), I[20] = (T)(img)(_n5##x,_p15##y,z,c), I[21] = (T)(img)(_n6##x,_p15##y,z,c), I[22] = (T)(img)(_n7##x,_p15##y,z,c), I[23] = (T)(img)(_n8##x,_p15##y,z,c), I[24] = (T)(img)(_n9##x,_p15##y,z,c), I[25] = (T)(img)(_n10##x,_p15##y,z,c), I[26] = (T)(img)(_n11##x,_p15##y,z,c), I[27] = (T)(img)(_n12##x,_p15##y,z,c), I[28] = (T)(img)(_n13##x,_p15##y,z,c), I[29] = (T)(img)(_n14##x,_p15##y,z,c), I[30] = (T)(img)(_n15##x,_p15##y,z,c), I[31] = (T)(img)(_n16##x,_p15##y,z,c), \ + I[32] = (T)(img)(_p15##x,_p14##y,z,c), I[33] = (T)(img)(_p14##x,_p14##y,z,c), I[34] = (T)(img)(_p13##x,_p14##y,z,c), I[35] = (T)(img)(_p12##x,_p14##y,z,c), I[36] = (T)(img)(_p11##x,_p14##y,z,c), I[37] = (T)(img)(_p10##x,_p14##y,z,c), I[38] = (T)(img)(_p9##x,_p14##y,z,c), I[39] = (T)(img)(_p8##x,_p14##y,z,c), I[40] = (T)(img)(_p7##x,_p14##y,z,c), I[41] = (T)(img)(_p6##x,_p14##y,z,c), I[42] = (T)(img)(_p5##x,_p14##y,z,c), I[43] = (T)(img)(_p4##x,_p14##y,z,c), I[44] = (T)(img)(_p3##x,_p14##y,z,c), I[45] = (T)(img)(_p2##x,_p14##y,z,c), I[46] = (T)(img)(_p1##x,_p14##y,z,c), I[47] = (T)(img)(x,_p14##y,z,c), I[48] = (T)(img)(_n1##x,_p14##y,z,c), I[49] = (T)(img)(_n2##x,_p14##y,z,c), I[50] = (T)(img)(_n3##x,_p14##y,z,c), I[51] = (T)(img)(_n4##x,_p14##y,z,c), I[52] = (T)(img)(_n5##x,_p14##y,z,c), I[53] = (T)(img)(_n6##x,_p14##y,z,c), I[54] = (T)(img)(_n7##x,_p14##y,z,c), I[55] = (T)(img)(_n8##x,_p14##y,z,c), I[56] = (T)(img)(_n9##x,_p14##y,z,c), I[57] = (T)(img)(_n10##x,_p14##y,z,c), I[58] = (T)(img)(_n11##x,_p14##y,z,c), I[59] = (T)(img)(_n12##x,_p14##y,z,c), I[60] = (T)(img)(_n13##x,_p14##y,z,c), I[61] = (T)(img)(_n14##x,_p14##y,z,c), I[62] = (T)(img)(_n15##x,_p14##y,z,c), I[63] = (T)(img)(_n16##x,_p14##y,z,c), \ + I[64] = (T)(img)(_p15##x,_p13##y,z,c), I[65] = (T)(img)(_p14##x,_p13##y,z,c), I[66] = (T)(img)(_p13##x,_p13##y,z,c), I[67] = (T)(img)(_p12##x,_p13##y,z,c), I[68] = (T)(img)(_p11##x,_p13##y,z,c), I[69] = (T)(img)(_p10##x,_p13##y,z,c), I[70] = (T)(img)(_p9##x,_p13##y,z,c), I[71] = (T)(img)(_p8##x,_p13##y,z,c), I[72] = (T)(img)(_p7##x,_p13##y,z,c), I[73] = (T)(img)(_p6##x,_p13##y,z,c), I[74] = (T)(img)(_p5##x,_p13##y,z,c), I[75] = (T)(img)(_p4##x,_p13##y,z,c), I[76] = (T)(img)(_p3##x,_p13##y,z,c), I[77] = (T)(img)(_p2##x,_p13##y,z,c), I[78] = (T)(img)(_p1##x,_p13##y,z,c), I[79] = (T)(img)(x,_p13##y,z,c), I[80] = (T)(img)(_n1##x,_p13##y,z,c), I[81] = (T)(img)(_n2##x,_p13##y,z,c), I[82] = (T)(img)(_n3##x,_p13##y,z,c), I[83] = (T)(img)(_n4##x,_p13##y,z,c), I[84] = (T)(img)(_n5##x,_p13##y,z,c), I[85] = (T)(img)(_n6##x,_p13##y,z,c), I[86] = (T)(img)(_n7##x,_p13##y,z,c), I[87] = (T)(img)(_n8##x,_p13##y,z,c), I[88] = (T)(img)(_n9##x,_p13##y,z,c), I[89] = (T)(img)(_n10##x,_p13##y,z,c), I[90] = (T)(img)(_n11##x,_p13##y,z,c), I[91] = (T)(img)(_n12##x,_p13##y,z,c), I[92] = (T)(img)(_n13##x,_p13##y,z,c), I[93] = (T)(img)(_n14##x,_p13##y,z,c), I[94] = (T)(img)(_n15##x,_p13##y,z,c), I[95] = (T)(img)(_n16##x,_p13##y,z,c), \ + I[96] = (T)(img)(_p15##x,_p12##y,z,c), I[97] = (T)(img)(_p14##x,_p12##y,z,c), I[98] = (T)(img)(_p13##x,_p12##y,z,c), I[99] = (T)(img)(_p12##x,_p12##y,z,c), I[100] = (T)(img)(_p11##x,_p12##y,z,c), I[101] = (T)(img)(_p10##x,_p12##y,z,c), I[102] = (T)(img)(_p9##x,_p12##y,z,c), I[103] = (T)(img)(_p8##x,_p12##y,z,c), I[104] = (T)(img)(_p7##x,_p12##y,z,c), I[105] = (T)(img)(_p6##x,_p12##y,z,c), I[106] = (T)(img)(_p5##x,_p12##y,z,c), I[107] = (T)(img)(_p4##x,_p12##y,z,c), I[108] = (T)(img)(_p3##x,_p12##y,z,c), I[109] = (T)(img)(_p2##x,_p12##y,z,c), I[110] = (T)(img)(_p1##x,_p12##y,z,c), I[111] = (T)(img)(x,_p12##y,z,c), I[112] = (T)(img)(_n1##x,_p12##y,z,c), I[113] = (T)(img)(_n2##x,_p12##y,z,c), I[114] = (T)(img)(_n3##x,_p12##y,z,c), I[115] = (T)(img)(_n4##x,_p12##y,z,c), I[116] = (T)(img)(_n5##x,_p12##y,z,c), I[117] = (T)(img)(_n6##x,_p12##y,z,c), I[118] = (T)(img)(_n7##x,_p12##y,z,c), I[119] = (T)(img)(_n8##x,_p12##y,z,c), I[120] = (T)(img)(_n9##x,_p12##y,z,c), I[121] = (T)(img)(_n10##x,_p12##y,z,c), I[122] = (T)(img)(_n11##x,_p12##y,z,c), I[123] = (T)(img)(_n12##x,_p12##y,z,c), I[124] = (T)(img)(_n13##x,_p12##y,z,c), I[125] = (T)(img)(_n14##x,_p12##y,z,c), I[126] = (T)(img)(_n15##x,_p12##y,z,c), I[127] = (T)(img)(_n16##x,_p12##y,z,c), \ + I[128] = (T)(img)(_p15##x,_p11##y,z,c), I[129] = (T)(img)(_p14##x,_p11##y,z,c), I[130] = (T)(img)(_p13##x,_p11##y,z,c), I[131] = (T)(img)(_p12##x,_p11##y,z,c), I[132] = (T)(img)(_p11##x,_p11##y,z,c), I[133] = (T)(img)(_p10##x,_p11##y,z,c), I[134] = (T)(img)(_p9##x,_p11##y,z,c), I[135] = (T)(img)(_p8##x,_p11##y,z,c), I[136] = (T)(img)(_p7##x,_p11##y,z,c), I[137] = (T)(img)(_p6##x,_p11##y,z,c), I[138] = (T)(img)(_p5##x,_p11##y,z,c), I[139] = (T)(img)(_p4##x,_p11##y,z,c), I[140] = (T)(img)(_p3##x,_p11##y,z,c), I[141] = (T)(img)(_p2##x,_p11##y,z,c), I[142] = (T)(img)(_p1##x,_p11##y,z,c), I[143] = (T)(img)(x,_p11##y,z,c), I[144] = (T)(img)(_n1##x,_p11##y,z,c), I[145] = (T)(img)(_n2##x,_p11##y,z,c), I[146] = (T)(img)(_n3##x,_p11##y,z,c), I[147] = (T)(img)(_n4##x,_p11##y,z,c), I[148] = (T)(img)(_n5##x,_p11##y,z,c), I[149] = (T)(img)(_n6##x,_p11##y,z,c), I[150] = (T)(img)(_n7##x,_p11##y,z,c), I[151] = (T)(img)(_n8##x,_p11##y,z,c), I[152] = (T)(img)(_n9##x,_p11##y,z,c), I[153] = (T)(img)(_n10##x,_p11##y,z,c), I[154] = (T)(img)(_n11##x,_p11##y,z,c), I[155] = (T)(img)(_n12##x,_p11##y,z,c), I[156] = (T)(img)(_n13##x,_p11##y,z,c), I[157] = (T)(img)(_n14##x,_p11##y,z,c), I[158] = (T)(img)(_n15##x,_p11##y,z,c), I[159] = (T)(img)(_n16##x,_p11##y,z,c), \ + I[160] = (T)(img)(_p15##x,_p10##y,z,c), I[161] = (T)(img)(_p14##x,_p10##y,z,c), I[162] = (T)(img)(_p13##x,_p10##y,z,c), I[163] = (T)(img)(_p12##x,_p10##y,z,c), I[164] = (T)(img)(_p11##x,_p10##y,z,c), I[165] = (T)(img)(_p10##x,_p10##y,z,c), I[166] = (T)(img)(_p9##x,_p10##y,z,c), I[167] = (T)(img)(_p8##x,_p10##y,z,c), I[168] = (T)(img)(_p7##x,_p10##y,z,c), I[169] = (T)(img)(_p6##x,_p10##y,z,c), I[170] = (T)(img)(_p5##x,_p10##y,z,c), I[171] = (T)(img)(_p4##x,_p10##y,z,c), I[172] = (T)(img)(_p3##x,_p10##y,z,c), I[173] = (T)(img)(_p2##x,_p10##y,z,c), I[174] = (T)(img)(_p1##x,_p10##y,z,c), I[175] = (T)(img)(x,_p10##y,z,c), I[176] = (T)(img)(_n1##x,_p10##y,z,c), I[177] = (T)(img)(_n2##x,_p10##y,z,c), I[178] = (T)(img)(_n3##x,_p10##y,z,c), I[179] = (T)(img)(_n4##x,_p10##y,z,c), I[180] = (T)(img)(_n5##x,_p10##y,z,c), I[181] = (T)(img)(_n6##x,_p10##y,z,c), I[182] = (T)(img)(_n7##x,_p10##y,z,c), I[183] = (T)(img)(_n8##x,_p10##y,z,c), I[184] = (T)(img)(_n9##x,_p10##y,z,c), I[185] = (T)(img)(_n10##x,_p10##y,z,c), I[186] = (T)(img)(_n11##x,_p10##y,z,c), I[187] = (T)(img)(_n12##x,_p10##y,z,c), I[188] = (T)(img)(_n13##x,_p10##y,z,c), I[189] = (T)(img)(_n14##x,_p10##y,z,c), I[190] = (T)(img)(_n15##x,_p10##y,z,c), I[191] = (T)(img)(_n16##x,_p10##y,z,c), \ + I[192] = (T)(img)(_p15##x,_p9##y,z,c), I[193] = (T)(img)(_p14##x,_p9##y,z,c), I[194] = (T)(img)(_p13##x,_p9##y,z,c), I[195] = (T)(img)(_p12##x,_p9##y,z,c), I[196] = (T)(img)(_p11##x,_p9##y,z,c), I[197] = (T)(img)(_p10##x,_p9##y,z,c), I[198] = (T)(img)(_p9##x,_p9##y,z,c), I[199] = (T)(img)(_p8##x,_p9##y,z,c), I[200] = (T)(img)(_p7##x,_p9##y,z,c), I[201] = (T)(img)(_p6##x,_p9##y,z,c), I[202] = (T)(img)(_p5##x,_p9##y,z,c), I[203] = (T)(img)(_p4##x,_p9##y,z,c), I[204] = (T)(img)(_p3##x,_p9##y,z,c), I[205] = (T)(img)(_p2##x,_p9##y,z,c), I[206] = (T)(img)(_p1##x,_p9##y,z,c), I[207] = (T)(img)(x,_p9##y,z,c), I[208] = (T)(img)(_n1##x,_p9##y,z,c), I[209] = (T)(img)(_n2##x,_p9##y,z,c), I[210] = (T)(img)(_n3##x,_p9##y,z,c), I[211] = (T)(img)(_n4##x,_p9##y,z,c), I[212] = (T)(img)(_n5##x,_p9##y,z,c), I[213] = (T)(img)(_n6##x,_p9##y,z,c), I[214] = (T)(img)(_n7##x,_p9##y,z,c), I[215] = (T)(img)(_n8##x,_p9##y,z,c), I[216] = (T)(img)(_n9##x,_p9##y,z,c), I[217] = (T)(img)(_n10##x,_p9##y,z,c), I[218] = (T)(img)(_n11##x,_p9##y,z,c), I[219] = (T)(img)(_n12##x,_p9##y,z,c), I[220] = (T)(img)(_n13##x,_p9##y,z,c), I[221] = (T)(img)(_n14##x,_p9##y,z,c), I[222] = (T)(img)(_n15##x,_p9##y,z,c), I[223] = (T)(img)(_n16##x,_p9##y,z,c), \ + I[224] = (T)(img)(_p15##x,_p8##y,z,c), I[225] = (T)(img)(_p14##x,_p8##y,z,c), I[226] = (T)(img)(_p13##x,_p8##y,z,c), I[227] = (T)(img)(_p12##x,_p8##y,z,c), I[228] = (T)(img)(_p11##x,_p8##y,z,c), I[229] = (T)(img)(_p10##x,_p8##y,z,c), I[230] = (T)(img)(_p9##x,_p8##y,z,c), I[231] = (T)(img)(_p8##x,_p8##y,z,c), I[232] = (T)(img)(_p7##x,_p8##y,z,c), I[233] = (T)(img)(_p6##x,_p8##y,z,c), I[234] = (T)(img)(_p5##x,_p8##y,z,c), I[235] = (T)(img)(_p4##x,_p8##y,z,c), I[236] = (T)(img)(_p3##x,_p8##y,z,c), I[237] = (T)(img)(_p2##x,_p8##y,z,c), I[238] = (T)(img)(_p1##x,_p8##y,z,c), I[239] = (T)(img)(x,_p8##y,z,c), I[240] = (T)(img)(_n1##x,_p8##y,z,c), I[241] = (T)(img)(_n2##x,_p8##y,z,c), I[242] = (T)(img)(_n3##x,_p8##y,z,c), I[243] = (T)(img)(_n4##x,_p8##y,z,c), I[244] = (T)(img)(_n5##x,_p8##y,z,c), I[245] = (T)(img)(_n6##x,_p8##y,z,c), I[246] = (T)(img)(_n7##x,_p8##y,z,c), I[247] = (T)(img)(_n8##x,_p8##y,z,c), I[248] = (T)(img)(_n9##x,_p8##y,z,c), I[249] = (T)(img)(_n10##x,_p8##y,z,c), I[250] = (T)(img)(_n11##x,_p8##y,z,c), I[251] = (T)(img)(_n12##x,_p8##y,z,c), I[252] = (T)(img)(_n13##x,_p8##y,z,c), I[253] = (T)(img)(_n14##x,_p8##y,z,c), I[254] = (T)(img)(_n15##x,_p8##y,z,c), I[255] = (T)(img)(_n16##x,_p8##y,z,c), \ + I[256] = (T)(img)(_p15##x,_p7##y,z,c), I[257] = (T)(img)(_p14##x,_p7##y,z,c), I[258] = (T)(img)(_p13##x,_p7##y,z,c), I[259] = (T)(img)(_p12##x,_p7##y,z,c), I[260] = (T)(img)(_p11##x,_p7##y,z,c), I[261] = (T)(img)(_p10##x,_p7##y,z,c), I[262] = (T)(img)(_p9##x,_p7##y,z,c), I[263] = (T)(img)(_p8##x,_p7##y,z,c), I[264] = (T)(img)(_p7##x,_p7##y,z,c), I[265] = (T)(img)(_p6##x,_p7##y,z,c), I[266] = (T)(img)(_p5##x,_p7##y,z,c), I[267] = (T)(img)(_p4##x,_p7##y,z,c), I[268] = (T)(img)(_p3##x,_p7##y,z,c), I[269] = (T)(img)(_p2##x,_p7##y,z,c), I[270] = (T)(img)(_p1##x,_p7##y,z,c), I[271] = (T)(img)(x,_p7##y,z,c), I[272] = (T)(img)(_n1##x,_p7##y,z,c), I[273] = (T)(img)(_n2##x,_p7##y,z,c), I[274] = (T)(img)(_n3##x,_p7##y,z,c), I[275] = (T)(img)(_n4##x,_p7##y,z,c), I[276] = (T)(img)(_n5##x,_p7##y,z,c), I[277] = (T)(img)(_n6##x,_p7##y,z,c), I[278] = (T)(img)(_n7##x,_p7##y,z,c), I[279] = (T)(img)(_n8##x,_p7##y,z,c), I[280] = (T)(img)(_n9##x,_p7##y,z,c), I[281] = (T)(img)(_n10##x,_p7##y,z,c), I[282] = (T)(img)(_n11##x,_p7##y,z,c), I[283] = (T)(img)(_n12##x,_p7##y,z,c), I[284] = (T)(img)(_n13##x,_p7##y,z,c), I[285] = (T)(img)(_n14##x,_p7##y,z,c), I[286] = (T)(img)(_n15##x,_p7##y,z,c), I[287] = (T)(img)(_n16##x,_p7##y,z,c), \ + I[288] = (T)(img)(_p15##x,_p6##y,z,c), I[289] = (T)(img)(_p14##x,_p6##y,z,c), I[290] = (T)(img)(_p13##x,_p6##y,z,c), I[291] = (T)(img)(_p12##x,_p6##y,z,c), I[292] = (T)(img)(_p11##x,_p6##y,z,c), I[293] = (T)(img)(_p10##x,_p6##y,z,c), I[294] = (T)(img)(_p9##x,_p6##y,z,c), I[295] = (T)(img)(_p8##x,_p6##y,z,c), I[296] = (T)(img)(_p7##x,_p6##y,z,c), I[297] = (T)(img)(_p6##x,_p6##y,z,c), I[298] = (T)(img)(_p5##x,_p6##y,z,c), I[299] = (T)(img)(_p4##x,_p6##y,z,c), I[300] = (T)(img)(_p3##x,_p6##y,z,c), I[301] = (T)(img)(_p2##x,_p6##y,z,c), I[302] = (T)(img)(_p1##x,_p6##y,z,c), I[303] = (T)(img)(x,_p6##y,z,c), I[304] = (T)(img)(_n1##x,_p6##y,z,c), I[305] = (T)(img)(_n2##x,_p6##y,z,c), I[306] = (T)(img)(_n3##x,_p6##y,z,c), I[307] = (T)(img)(_n4##x,_p6##y,z,c), I[308] = (T)(img)(_n5##x,_p6##y,z,c), I[309] = (T)(img)(_n6##x,_p6##y,z,c), I[310] = (T)(img)(_n7##x,_p6##y,z,c), I[311] = (T)(img)(_n8##x,_p6##y,z,c), I[312] = (T)(img)(_n9##x,_p6##y,z,c), I[313] = (T)(img)(_n10##x,_p6##y,z,c), I[314] = (T)(img)(_n11##x,_p6##y,z,c), I[315] = (T)(img)(_n12##x,_p6##y,z,c), I[316] = (T)(img)(_n13##x,_p6##y,z,c), I[317] = (T)(img)(_n14##x,_p6##y,z,c), I[318] = (T)(img)(_n15##x,_p6##y,z,c), I[319] = (T)(img)(_n16##x,_p6##y,z,c), \ + I[320] = (T)(img)(_p15##x,_p5##y,z,c), I[321] = (T)(img)(_p14##x,_p5##y,z,c), I[322] = (T)(img)(_p13##x,_p5##y,z,c), I[323] = (T)(img)(_p12##x,_p5##y,z,c), I[324] = (T)(img)(_p11##x,_p5##y,z,c), I[325] = (T)(img)(_p10##x,_p5##y,z,c), I[326] = (T)(img)(_p9##x,_p5##y,z,c), I[327] = (T)(img)(_p8##x,_p5##y,z,c), I[328] = (T)(img)(_p7##x,_p5##y,z,c), I[329] = (T)(img)(_p6##x,_p5##y,z,c), I[330] = (T)(img)(_p5##x,_p5##y,z,c), I[331] = (T)(img)(_p4##x,_p5##y,z,c), I[332] = (T)(img)(_p3##x,_p5##y,z,c), I[333] = (T)(img)(_p2##x,_p5##y,z,c), I[334] = (T)(img)(_p1##x,_p5##y,z,c), I[335] = (T)(img)(x,_p5##y,z,c), I[336] = (T)(img)(_n1##x,_p5##y,z,c), I[337] = (T)(img)(_n2##x,_p5##y,z,c), I[338] = (T)(img)(_n3##x,_p5##y,z,c), I[339] = (T)(img)(_n4##x,_p5##y,z,c), I[340] = (T)(img)(_n5##x,_p5##y,z,c), I[341] = (T)(img)(_n6##x,_p5##y,z,c), I[342] = (T)(img)(_n7##x,_p5##y,z,c), I[343] = (T)(img)(_n8##x,_p5##y,z,c), I[344] = (T)(img)(_n9##x,_p5##y,z,c), I[345] = (T)(img)(_n10##x,_p5##y,z,c), I[346] = (T)(img)(_n11##x,_p5##y,z,c), I[347] = (T)(img)(_n12##x,_p5##y,z,c), I[348] = (T)(img)(_n13##x,_p5##y,z,c), I[349] = (T)(img)(_n14##x,_p5##y,z,c), I[350] = (T)(img)(_n15##x,_p5##y,z,c), I[351] = (T)(img)(_n16##x,_p5##y,z,c), \ + I[352] = (T)(img)(_p15##x,_p4##y,z,c), I[353] = (T)(img)(_p14##x,_p4##y,z,c), I[354] = (T)(img)(_p13##x,_p4##y,z,c), I[355] = (T)(img)(_p12##x,_p4##y,z,c), I[356] = (T)(img)(_p11##x,_p4##y,z,c), I[357] = (T)(img)(_p10##x,_p4##y,z,c), I[358] = (T)(img)(_p9##x,_p4##y,z,c), I[359] = (T)(img)(_p8##x,_p4##y,z,c), I[360] = (T)(img)(_p7##x,_p4##y,z,c), I[361] = (T)(img)(_p6##x,_p4##y,z,c), I[362] = (T)(img)(_p5##x,_p4##y,z,c), I[363] = (T)(img)(_p4##x,_p4##y,z,c), I[364] = (T)(img)(_p3##x,_p4##y,z,c), I[365] = (T)(img)(_p2##x,_p4##y,z,c), I[366] = (T)(img)(_p1##x,_p4##y,z,c), I[367] = (T)(img)(x,_p4##y,z,c), I[368] = (T)(img)(_n1##x,_p4##y,z,c), I[369] = (T)(img)(_n2##x,_p4##y,z,c), I[370] = (T)(img)(_n3##x,_p4##y,z,c), I[371] = (T)(img)(_n4##x,_p4##y,z,c), I[372] = (T)(img)(_n5##x,_p4##y,z,c), I[373] = (T)(img)(_n6##x,_p4##y,z,c), I[374] = (T)(img)(_n7##x,_p4##y,z,c), I[375] = (T)(img)(_n8##x,_p4##y,z,c), I[376] = (T)(img)(_n9##x,_p4##y,z,c), I[377] = (T)(img)(_n10##x,_p4##y,z,c), I[378] = (T)(img)(_n11##x,_p4##y,z,c), I[379] = (T)(img)(_n12##x,_p4##y,z,c), I[380] = (T)(img)(_n13##x,_p4##y,z,c), I[381] = (T)(img)(_n14##x,_p4##y,z,c), I[382] = (T)(img)(_n15##x,_p4##y,z,c), I[383] = (T)(img)(_n16##x,_p4##y,z,c), \ + I[384] = (T)(img)(_p15##x,_p3##y,z,c), I[385] = (T)(img)(_p14##x,_p3##y,z,c), I[386] = (T)(img)(_p13##x,_p3##y,z,c), I[387] = (T)(img)(_p12##x,_p3##y,z,c), I[388] = (T)(img)(_p11##x,_p3##y,z,c), I[389] = (T)(img)(_p10##x,_p3##y,z,c), I[390] = (T)(img)(_p9##x,_p3##y,z,c), I[391] = (T)(img)(_p8##x,_p3##y,z,c), I[392] = (T)(img)(_p7##x,_p3##y,z,c), I[393] = (T)(img)(_p6##x,_p3##y,z,c), I[394] = (T)(img)(_p5##x,_p3##y,z,c), I[395] = (T)(img)(_p4##x,_p3##y,z,c), I[396] = (T)(img)(_p3##x,_p3##y,z,c), I[397] = (T)(img)(_p2##x,_p3##y,z,c), I[398] = (T)(img)(_p1##x,_p3##y,z,c), I[399] = (T)(img)(x,_p3##y,z,c), I[400] = (T)(img)(_n1##x,_p3##y,z,c), I[401] = (T)(img)(_n2##x,_p3##y,z,c), I[402] = (T)(img)(_n3##x,_p3##y,z,c), I[403] = (T)(img)(_n4##x,_p3##y,z,c), I[404] = (T)(img)(_n5##x,_p3##y,z,c), I[405] = (T)(img)(_n6##x,_p3##y,z,c), I[406] = (T)(img)(_n7##x,_p3##y,z,c), I[407] = (T)(img)(_n8##x,_p3##y,z,c), I[408] = (T)(img)(_n9##x,_p3##y,z,c), I[409] = (T)(img)(_n10##x,_p3##y,z,c), I[410] = (T)(img)(_n11##x,_p3##y,z,c), I[411] = (T)(img)(_n12##x,_p3##y,z,c), I[412] = (T)(img)(_n13##x,_p3##y,z,c), I[413] = (T)(img)(_n14##x,_p3##y,z,c), I[414] = (T)(img)(_n15##x,_p3##y,z,c), I[415] = (T)(img)(_n16##x,_p3##y,z,c), \ + I[416] = (T)(img)(_p15##x,_p2##y,z,c), I[417] = (T)(img)(_p14##x,_p2##y,z,c), I[418] = (T)(img)(_p13##x,_p2##y,z,c), I[419] = (T)(img)(_p12##x,_p2##y,z,c), I[420] = (T)(img)(_p11##x,_p2##y,z,c), I[421] = (T)(img)(_p10##x,_p2##y,z,c), I[422] = (T)(img)(_p9##x,_p2##y,z,c), I[423] = (T)(img)(_p8##x,_p2##y,z,c), I[424] = (T)(img)(_p7##x,_p2##y,z,c), I[425] = (T)(img)(_p6##x,_p2##y,z,c), I[426] = (T)(img)(_p5##x,_p2##y,z,c), I[427] = (T)(img)(_p4##x,_p2##y,z,c), I[428] = (T)(img)(_p3##x,_p2##y,z,c), I[429] = (T)(img)(_p2##x,_p2##y,z,c), I[430] = (T)(img)(_p1##x,_p2##y,z,c), I[431] = (T)(img)(x,_p2##y,z,c), I[432] = (T)(img)(_n1##x,_p2##y,z,c), I[433] = (T)(img)(_n2##x,_p2##y,z,c), I[434] = (T)(img)(_n3##x,_p2##y,z,c), I[435] = (T)(img)(_n4##x,_p2##y,z,c), I[436] = (T)(img)(_n5##x,_p2##y,z,c), I[437] = (T)(img)(_n6##x,_p2##y,z,c), I[438] = (T)(img)(_n7##x,_p2##y,z,c), I[439] = (T)(img)(_n8##x,_p2##y,z,c), I[440] = (T)(img)(_n9##x,_p2##y,z,c), I[441] = (T)(img)(_n10##x,_p2##y,z,c), I[442] = (T)(img)(_n11##x,_p2##y,z,c), I[443] = (T)(img)(_n12##x,_p2##y,z,c), I[444] = (T)(img)(_n13##x,_p2##y,z,c), I[445] = (T)(img)(_n14##x,_p2##y,z,c), I[446] = (T)(img)(_n15##x,_p2##y,z,c), I[447] = (T)(img)(_n16##x,_p2##y,z,c), \ + I[448] = (T)(img)(_p15##x,_p1##y,z,c), I[449] = (T)(img)(_p14##x,_p1##y,z,c), I[450] = (T)(img)(_p13##x,_p1##y,z,c), I[451] = (T)(img)(_p12##x,_p1##y,z,c), I[452] = (T)(img)(_p11##x,_p1##y,z,c), I[453] = (T)(img)(_p10##x,_p1##y,z,c), I[454] = (T)(img)(_p9##x,_p1##y,z,c), I[455] = (T)(img)(_p8##x,_p1##y,z,c), I[456] = (T)(img)(_p7##x,_p1##y,z,c), I[457] = (T)(img)(_p6##x,_p1##y,z,c), I[458] = (T)(img)(_p5##x,_p1##y,z,c), I[459] = (T)(img)(_p4##x,_p1##y,z,c), I[460] = (T)(img)(_p3##x,_p1##y,z,c), I[461] = (T)(img)(_p2##x,_p1##y,z,c), I[462] = (T)(img)(_p1##x,_p1##y,z,c), I[463] = (T)(img)(x,_p1##y,z,c), I[464] = (T)(img)(_n1##x,_p1##y,z,c), I[465] = (T)(img)(_n2##x,_p1##y,z,c), I[466] = (T)(img)(_n3##x,_p1##y,z,c), I[467] = (T)(img)(_n4##x,_p1##y,z,c), I[468] = (T)(img)(_n5##x,_p1##y,z,c), I[469] = (T)(img)(_n6##x,_p1##y,z,c), I[470] = (T)(img)(_n7##x,_p1##y,z,c), I[471] = (T)(img)(_n8##x,_p1##y,z,c), I[472] = (T)(img)(_n9##x,_p1##y,z,c), I[473] = (T)(img)(_n10##x,_p1##y,z,c), I[474] = (T)(img)(_n11##x,_p1##y,z,c), I[475] = (T)(img)(_n12##x,_p1##y,z,c), I[476] = (T)(img)(_n13##x,_p1##y,z,c), I[477] = (T)(img)(_n14##x,_p1##y,z,c), I[478] = (T)(img)(_n15##x,_p1##y,z,c), I[479] = (T)(img)(_n16##x,_p1##y,z,c), \ + I[480] = (T)(img)(_p15##x,y,z,c), I[481] = (T)(img)(_p14##x,y,z,c), I[482] = (T)(img)(_p13##x,y,z,c), I[483] = (T)(img)(_p12##x,y,z,c), I[484] = (T)(img)(_p11##x,y,z,c), I[485] = (T)(img)(_p10##x,y,z,c), I[486] = (T)(img)(_p9##x,y,z,c), I[487] = (T)(img)(_p8##x,y,z,c), I[488] = (T)(img)(_p7##x,y,z,c), I[489] = (T)(img)(_p6##x,y,z,c), I[490] = (T)(img)(_p5##x,y,z,c), I[491] = (T)(img)(_p4##x,y,z,c), I[492] = (T)(img)(_p3##x,y,z,c), I[493] = (T)(img)(_p2##x,y,z,c), I[494] = (T)(img)(_p1##x,y,z,c), I[495] = (T)(img)(x,y,z,c), I[496] = (T)(img)(_n1##x,y,z,c), I[497] = (T)(img)(_n2##x,y,z,c), I[498] = (T)(img)(_n3##x,y,z,c), I[499] = (T)(img)(_n4##x,y,z,c), I[500] = (T)(img)(_n5##x,y,z,c), I[501] = (T)(img)(_n6##x,y,z,c), I[502] = (T)(img)(_n7##x,y,z,c), I[503] = (T)(img)(_n8##x,y,z,c), I[504] = (T)(img)(_n9##x,y,z,c), I[505] = (T)(img)(_n10##x,y,z,c), I[506] = (T)(img)(_n11##x,y,z,c), I[507] = (T)(img)(_n12##x,y,z,c), I[508] = (T)(img)(_n13##x,y,z,c), I[509] = (T)(img)(_n14##x,y,z,c), I[510] = (T)(img)(_n15##x,y,z,c), I[511] = (T)(img)(_n16##x,y,z,c), \ + I[512] = (T)(img)(_p15##x,_n1##y,z,c), I[513] = (T)(img)(_p14##x,_n1##y,z,c), I[514] = (T)(img)(_p13##x,_n1##y,z,c), I[515] = (T)(img)(_p12##x,_n1##y,z,c), I[516] = (T)(img)(_p11##x,_n1##y,z,c), I[517] = (T)(img)(_p10##x,_n1##y,z,c), I[518] = (T)(img)(_p9##x,_n1##y,z,c), I[519] = (T)(img)(_p8##x,_n1##y,z,c), I[520] = (T)(img)(_p7##x,_n1##y,z,c), I[521] = (T)(img)(_p6##x,_n1##y,z,c), I[522] = (T)(img)(_p5##x,_n1##y,z,c), I[523] = (T)(img)(_p4##x,_n1##y,z,c), I[524] = (T)(img)(_p3##x,_n1##y,z,c), I[525] = (T)(img)(_p2##x,_n1##y,z,c), I[526] = (T)(img)(_p1##x,_n1##y,z,c), I[527] = (T)(img)(x,_n1##y,z,c), I[528] = (T)(img)(_n1##x,_n1##y,z,c), I[529] = (T)(img)(_n2##x,_n1##y,z,c), I[530] = (T)(img)(_n3##x,_n1##y,z,c), I[531] = (T)(img)(_n4##x,_n1##y,z,c), I[532] = (T)(img)(_n5##x,_n1##y,z,c), I[533] = (T)(img)(_n6##x,_n1##y,z,c), I[534] = (T)(img)(_n7##x,_n1##y,z,c), I[535] = (T)(img)(_n8##x,_n1##y,z,c), I[536] = (T)(img)(_n9##x,_n1##y,z,c), I[537] = (T)(img)(_n10##x,_n1##y,z,c), I[538] = (T)(img)(_n11##x,_n1##y,z,c), I[539] = (T)(img)(_n12##x,_n1##y,z,c), I[540] = (T)(img)(_n13##x,_n1##y,z,c), I[541] = (T)(img)(_n14##x,_n1##y,z,c), I[542] = (T)(img)(_n15##x,_n1##y,z,c), I[543] = (T)(img)(_n16##x,_n1##y,z,c), \ + I[544] = (T)(img)(_p15##x,_n2##y,z,c), I[545] = (T)(img)(_p14##x,_n2##y,z,c), I[546] = (T)(img)(_p13##x,_n2##y,z,c), I[547] = (T)(img)(_p12##x,_n2##y,z,c), I[548] = (T)(img)(_p11##x,_n2##y,z,c), I[549] = (T)(img)(_p10##x,_n2##y,z,c), I[550] = (T)(img)(_p9##x,_n2##y,z,c), I[551] = (T)(img)(_p8##x,_n2##y,z,c), I[552] = (T)(img)(_p7##x,_n2##y,z,c), I[553] = (T)(img)(_p6##x,_n2##y,z,c), I[554] = (T)(img)(_p5##x,_n2##y,z,c), I[555] = (T)(img)(_p4##x,_n2##y,z,c), I[556] = (T)(img)(_p3##x,_n2##y,z,c), I[557] = (T)(img)(_p2##x,_n2##y,z,c), I[558] = (T)(img)(_p1##x,_n2##y,z,c), I[559] = (T)(img)(x,_n2##y,z,c), I[560] = (T)(img)(_n1##x,_n2##y,z,c), I[561] = (T)(img)(_n2##x,_n2##y,z,c), I[562] = (T)(img)(_n3##x,_n2##y,z,c), I[563] = (T)(img)(_n4##x,_n2##y,z,c), I[564] = (T)(img)(_n5##x,_n2##y,z,c), I[565] = (T)(img)(_n6##x,_n2##y,z,c), I[566] = (T)(img)(_n7##x,_n2##y,z,c), I[567] = (T)(img)(_n8##x,_n2##y,z,c), I[568] = (T)(img)(_n9##x,_n2##y,z,c), I[569] = (T)(img)(_n10##x,_n2##y,z,c), I[570] = (T)(img)(_n11##x,_n2##y,z,c), I[571] = (T)(img)(_n12##x,_n2##y,z,c), I[572] = (T)(img)(_n13##x,_n2##y,z,c), I[573] = (T)(img)(_n14##x,_n2##y,z,c), I[574] = (T)(img)(_n15##x,_n2##y,z,c), I[575] = (T)(img)(_n16##x,_n2##y,z,c), \ + I[576] = (T)(img)(_p15##x,_n3##y,z,c), I[577] = (T)(img)(_p14##x,_n3##y,z,c), I[578] = (T)(img)(_p13##x,_n3##y,z,c), I[579] = (T)(img)(_p12##x,_n3##y,z,c), I[580] = (T)(img)(_p11##x,_n3##y,z,c), I[581] = (T)(img)(_p10##x,_n3##y,z,c), I[582] = (T)(img)(_p9##x,_n3##y,z,c), I[583] = (T)(img)(_p8##x,_n3##y,z,c), I[584] = (T)(img)(_p7##x,_n3##y,z,c), I[585] = (T)(img)(_p6##x,_n3##y,z,c), I[586] = (T)(img)(_p5##x,_n3##y,z,c), I[587] = (T)(img)(_p4##x,_n3##y,z,c), I[588] = (T)(img)(_p3##x,_n3##y,z,c), I[589] = (T)(img)(_p2##x,_n3##y,z,c), I[590] = (T)(img)(_p1##x,_n3##y,z,c), I[591] = (T)(img)(x,_n3##y,z,c), I[592] = (T)(img)(_n1##x,_n3##y,z,c), I[593] = (T)(img)(_n2##x,_n3##y,z,c), I[594] = (T)(img)(_n3##x,_n3##y,z,c), I[595] = (T)(img)(_n4##x,_n3##y,z,c), I[596] = (T)(img)(_n5##x,_n3##y,z,c), I[597] = (T)(img)(_n6##x,_n3##y,z,c), I[598] = (T)(img)(_n7##x,_n3##y,z,c), I[599] = (T)(img)(_n8##x,_n3##y,z,c), I[600] = (T)(img)(_n9##x,_n3##y,z,c), I[601] = (T)(img)(_n10##x,_n3##y,z,c), I[602] = (T)(img)(_n11##x,_n3##y,z,c), I[603] = (T)(img)(_n12##x,_n3##y,z,c), I[604] = (T)(img)(_n13##x,_n3##y,z,c), I[605] = (T)(img)(_n14##x,_n3##y,z,c), I[606] = (T)(img)(_n15##x,_n3##y,z,c), I[607] = (T)(img)(_n16##x,_n3##y,z,c), \ + I[608] = (T)(img)(_p15##x,_n4##y,z,c), I[609] = (T)(img)(_p14##x,_n4##y,z,c), I[610] = (T)(img)(_p13##x,_n4##y,z,c), I[611] = (T)(img)(_p12##x,_n4##y,z,c), I[612] = (T)(img)(_p11##x,_n4##y,z,c), I[613] = (T)(img)(_p10##x,_n4##y,z,c), I[614] = (T)(img)(_p9##x,_n4##y,z,c), I[615] = (T)(img)(_p8##x,_n4##y,z,c), I[616] = (T)(img)(_p7##x,_n4##y,z,c), I[617] = (T)(img)(_p6##x,_n4##y,z,c), I[618] = (T)(img)(_p5##x,_n4##y,z,c), I[619] = (T)(img)(_p4##x,_n4##y,z,c), I[620] = (T)(img)(_p3##x,_n4##y,z,c), I[621] = (T)(img)(_p2##x,_n4##y,z,c), I[622] = (T)(img)(_p1##x,_n4##y,z,c), I[623] = (T)(img)(x,_n4##y,z,c), I[624] = (T)(img)(_n1##x,_n4##y,z,c), I[625] = (T)(img)(_n2##x,_n4##y,z,c), I[626] = (T)(img)(_n3##x,_n4##y,z,c), I[627] = (T)(img)(_n4##x,_n4##y,z,c), I[628] = (T)(img)(_n5##x,_n4##y,z,c), I[629] = (T)(img)(_n6##x,_n4##y,z,c), I[630] = (T)(img)(_n7##x,_n4##y,z,c), I[631] = (T)(img)(_n8##x,_n4##y,z,c), I[632] = (T)(img)(_n9##x,_n4##y,z,c), I[633] = (T)(img)(_n10##x,_n4##y,z,c), I[634] = (T)(img)(_n11##x,_n4##y,z,c), I[635] = (T)(img)(_n12##x,_n4##y,z,c), I[636] = (T)(img)(_n13##x,_n4##y,z,c), I[637] = (T)(img)(_n14##x,_n4##y,z,c), I[638] = (T)(img)(_n15##x,_n4##y,z,c), I[639] = (T)(img)(_n16##x,_n4##y,z,c), \ + I[640] = (T)(img)(_p15##x,_n5##y,z,c), I[641] = (T)(img)(_p14##x,_n5##y,z,c), I[642] = (T)(img)(_p13##x,_n5##y,z,c), I[643] = (T)(img)(_p12##x,_n5##y,z,c), I[644] = (T)(img)(_p11##x,_n5##y,z,c), I[645] = (T)(img)(_p10##x,_n5##y,z,c), I[646] = (T)(img)(_p9##x,_n5##y,z,c), I[647] = (T)(img)(_p8##x,_n5##y,z,c), I[648] = (T)(img)(_p7##x,_n5##y,z,c), I[649] = (T)(img)(_p6##x,_n5##y,z,c), I[650] = (T)(img)(_p5##x,_n5##y,z,c), I[651] = (T)(img)(_p4##x,_n5##y,z,c), I[652] = (T)(img)(_p3##x,_n5##y,z,c), I[653] = (T)(img)(_p2##x,_n5##y,z,c), I[654] = (T)(img)(_p1##x,_n5##y,z,c), I[655] = (T)(img)(x,_n5##y,z,c), I[656] = (T)(img)(_n1##x,_n5##y,z,c), I[657] = (T)(img)(_n2##x,_n5##y,z,c), I[658] = (T)(img)(_n3##x,_n5##y,z,c), I[659] = (T)(img)(_n4##x,_n5##y,z,c), I[660] = (T)(img)(_n5##x,_n5##y,z,c), I[661] = (T)(img)(_n6##x,_n5##y,z,c), I[662] = (T)(img)(_n7##x,_n5##y,z,c), I[663] = (T)(img)(_n8##x,_n5##y,z,c), I[664] = (T)(img)(_n9##x,_n5##y,z,c), I[665] = (T)(img)(_n10##x,_n5##y,z,c), I[666] = (T)(img)(_n11##x,_n5##y,z,c), I[667] = (T)(img)(_n12##x,_n5##y,z,c), I[668] = (T)(img)(_n13##x,_n5##y,z,c), I[669] = (T)(img)(_n14##x,_n5##y,z,c), I[670] = (T)(img)(_n15##x,_n5##y,z,c), I[671] = (T)(img)(_n16##x,_n5##y,z,c), \ + I[672] = (T)(img)(_p15##x,_n6##y,z,c), I[673] = (T)(img)(_p14##x,_n6##y,z,c), I[674] = (T)(img)(_p13##x,_n6##y,z,c), I[675] = (T)(img)(_p12##x,_n6##y,z,c), I[676] = (T)(img)(_p11##x,_n6##y,z,c), I[677] = (T)(img)(_p10##x,_n6##y,z,c), I[678] = (T)(img)(_p9##x,_n6##y,z,c), I[679] = (T)(img)(_p8##x,_n6##y,z,c), I[680] = (T)(img)(_p7##x,_n6##y,z,c), I[681] = (T)(img)(_p6##x,_n6##y,z,c), I[682] = (T)(img)(_p5##x,_n6##y,z,c), I[683] = (T)(img)(_p4##x,_n6##y,z,c), I[684] = (T)(img)(_p3##x,_n6##y,z,c), I[685] = (T)(img)(_p2##x,_n6##y,z,c), I[686] = (T)(img)(_p1##x,_n6##y,z,c), I[687] = (T)(img)(x,_n6##y,z,c), I[688] = (T)(img)(_n1##x,_n6##y,z,c), I[689] = (T)(img)(_n2##x,_n6##y,z,c), I[690] = (T)(img)(_n3##x,_n6##y,z,c), I[691] = (T)(img)(_n4##x,_n6##y,z,c), I[692] = (T)(img)(_n5##x,_n6##y,z,c), I[693] = (T)(img)(_n6##x,_n6##y,z,c), I[694] = (T)(img)(_n7##x,_n6##y,z,c), I[695] = (T)(img)(_n8##x,_n6##y,z,c), I[696] = (T)(img)(_n9##x,_n6##y,z,c), I[697] = (T)(img)(_n10##x,_n6##y,z,c), I[698] = (T)(img)(_n11##x,_n6##y,z,c), I[699] = (T)(img)(_n12##x,_n6##y,z,c), I[700] = (T)(img)(_n13##x,_n6##y,z,c), I[701] = (T)(img)(_n14##x,_n6##y,z,c), I[702] = (T)(img)(_n15##x,_n6##y,z,c), I[703] = (T)(img)(_n16##x,_n6##y,z,c), \ + I[704] = (T)(img)(_p15##x,_n7##y,z,c), I[705] = (T)(img)(_p14##x,_n7##y,z,c), I[706] = (T)(img)(_p13##x,_n7##y,z,c), I[707] = (T)(img)(_p12##x,_n7##y,z,c), I[708] = (T)(img)(_p11##x,_n7##y,z,c), I[709] = (T)(img)(_p10##x,_n7##y,z,c), I[710] = (T)(img)(_p9##x,_n7##y,z,c), I[711] = (T)(img)(_p8##x,_n7##y,z,c), I[712] = (T)(img)(_p7##x,_n7##y,z,c), I[713] = (T)(img)(_p6##x,_n7##y,z,c), I[714] = (T)(img)(_p5##x,_n7##y,z,c), I[715] = (T)(img)(_p4##x,_n7##y,z,c), I[716] = (T)(img)(_p3##x,_n7##y,z,c), I[717] = (T)(img)(_p2##x,_n7##y,z,c), I[718] = (T)(img)(_p1##x,_n7##y,z,c), I[719] = (T)(img)(x,_n7##y,z,c), I[720] = (T)(img)(_n1##x,_n7##y,z,c), I[721] = (T)(img)(_n2##x,_n7##y,z,c), I[722] = (T)(img)(_n3##x,_n7##y,z,c), I[723] = (T)(img)(_n4##x,_n7##y,z,c), I[724] = (T)(img)(_n5##x,_n7##y,z,c), I[725] = (T)(img)(_n6##x,_n7##y,z,c), I[726] = (T)(img)(_n7##x,_n7##y,z,c), I[727] = (T)(img)(_n8##x,_n7##y,z,c), I[728] = (T)(img)(_n9##x,_n7##y,z,c), I[729] = (T)(img)(_n10##x,_n7##y,z,c), I[730] = (T)(img)(_n11##x,_n7##y,z,c), I[731] = (T)(img)(_n12##x,_n7##y,z,c), I[732] = (T)(img)(_n13##x,_n7##y,z,c), I[733] = (T)(img)(_n14##x,_n7##y,z,c), I[734] = (T)(img)(_n15##x,_n7##y,z,c), I[735] = (T)(img)(_n16##x,_n7##y,z,c), \ + I[736] = (T)(img)(_p15##x,_n8##y,z,c), I[737] = (T)(img)(_p14##x,_n8##y,z,c), I[738] = (T)(img)(_p13##x,_n8##y,z,c), I[739] = (T)(img)(_p12##x,_n8##y,z,c), I[740] = (T)(img)(_p11##x,_n8##y,z,c), I[741] = (T)(img)(_p10##x,_n8##y,z,c), I[742] = (T)(img)(_p9##x,_n8##y,z,c), I[743] = (T)(img)(_p8##x,_n8##y,z,c), I[744] = (T)(img)(_p7##x,_n8##y,z,c), I[745] = (T)(img)(_p6##x,_n8##y,z,c), I[746] = (T)(img)(_p5##x,_n8##y,z,c), I[747] = (T)(img)(_p4##x,_n8##y,z,c), I[748] = (T)(img)(_p3##x,_n8##y,z,c), I[749] = (T)(img)(_p2##x,_n8##y,z,c), I[750] = (T)(img)(_p1##x,_n8##y,z,c), I[751] = (T)(img)(x,_n8##y,z,c), I[752] = (T)(img)(_n1##x,_n8##y,z,c), I[753] = (T)(img)(_n2##x,_n8##y,z,c), I[754] = (T)(img)(_n3##x,_n8##y,z,c), I[755] = (T)(img)(_n4##x,_n8##y,z,c), I[756] = (T)(img)(_n5##x,_n8##y,z,c), I[757] = (T)(img)(_n6##x,_n8##y,z,c), I[758] = (T)(img)(_n7##x,_n8##y,z,c), I[759] = (T)(img)(_n8##x,_n8##y,z,c), I[760] = (T)(img)(_n9##x,_n8##y,z,c), I[761] = (T)(img)(_n10##x,_n8##y,z,c), I[762] = (T)(img)(_n11##x,_n8##y,z,c), I[763] = (T)(img)(_n12##x,_n8##y,z,c), I[764] = (T)(img)(_n13##x,_n8##y,z,c), I[765] = (T)(img)(_n14##x,_n8##y,z,c), I[766] = (T)(img)(_n15##x,_n8##y,z,c), I[767] = (T)(img)(_n16##x,_n8##y,z,c), \ + I[768] = (T)(img)(_p15##x,_n9##y,z,c), I[769] = (T)(img)(_p14##x,_n9##y,z,c), I[770] = (T)(img)(_p13##x,_n9##y,z,c), I[771] = (T)(img)(_p12##x,_n9##y,z,c), I[772] = (T)(img)(_p11##x,_n9##y,z,c), I[773] = (T)(img)(_p10##x,_n9##y,z,c), I[774] = (T)(img)(_p9##x,_n9##y,z,c), I[775] = (T)(img)(_p8##x,_n9##y,z,c), I[776] = (T)(img)(_p7##x,_n9##y,z,c), I[777] = (T)(img)(_p6##x,_n9##y,z,c), I[778] = (T)(img)(_p5##x,_n9##y,z,c), I[779] = (T)(img)(_p4##x,_n9##y,z,c), I[780] = (T)(img)(_p3##x,_n9##y,z,c), I[781] = (T)(img)(_p2##x,_n9##y,z,c), I[782] = (T)(img)(_p1##x,_n9##y,z,c), I[783] = (T)(img)(x,_n9##y,z,c), I[784] = (T)(img)(_n1##x,_n9##y,z,c), I[785] = (T)(img)(_n2##x,_n9##y,z,c), I[786] = (T)(img)(_n3##x,_n9##y,z,c), I[787] = (T)(img)(_n4##x,_n9##y,z,c), I[788] = (T)(img)(_n5##x,_n9##y,z,c), I[789] = (T)(img)(_n6##x,_n9##y,z,c), I[790] = (T)(img)(_n7##x,_n9##y,z,c), I[791] = (T)(img)(_n8##x,_n9##y,z,c), I[792] = (T)(img)(_n9##x,_n9##y,z,c), I[793] = (T)(img)(_n10##x,_n9##y,z,c), I[794] = (T)(img)(_n11##x,_n9##y,z,c), I[795] = (T)(img)(_n12##x,_n9##y,z,c), I[796] = (T)(img)(_n13##x,_n9##y,z,c), I[797] = (T)(img)(_n14##x,_n9##y,z,c), I[798] = (T)(img)(_n15##x,_n9##y,z,c), I[799] = (T)(img)(_n16##x,_n9##y,z,c), \ + I[800] = (T)(img)(_p15##x,_n10##y,z,c), I[801] = (T)(img)(_p14##x,_n10##y,z,c), I[802] = (T)(img)(_p13##x,_n10##y,z,c), I[803] = (T)(img)(_p12##x,_n10##y,z,c), I[804] = (T)(img)(_p11##x,_n10##y,z,c), I[805] = (T)(img)(_p10##x,_n10##y,z,c), I[806] = (T)(img)(_p9##x,_n10##y,z,c), I[807] = (T)(img)(_p8##x,_n10##y,z,c), I[808] = (T)(img)(_p7##x,_n10##y,z,c), I[809] = (T)(img)(_p6##x,_n10##y,z,c), I[810] = (T)(img)(_p5##x,_n10##y,z,c), I[811] = (T)(img)(_p4##x,_n10##y,z,c), I[812] = (T)(img)(_p3##x,_n10##y,z,c), I[813] = (T)(img)(_p2##x,_n10##y,z,c), I[814] = (T)(img)(_p1##x,_n10##y,z,c), I[815] = (T)(img)(x,_n10##y,z,c), I[816] = (T)(img)(_n1##x,_n10##y,z,c), I[817] = (T)(img)(_n2##x,_n10##y,z,c), I[818] = (T)(img)(_n3##x,_n10##y,z,c), I[819] = (T)(img)(_n4##x,_n10##y,z,c), I[820] = (T)(img)(_n5##x,_n10##y,z,c), I[821] = (T)(img)(_n6##x,_n10##y,z,c), I[822] = (T)(img)(_n7##x,_n10##y,z,c), I[823] = (T)(img)(_n8##x,_n10##y,z,c), I[824] = (T)(img)(_n9##x,_n10##y,z,c), I[825] = (T)(img)(_n10##x,_n10##y,z,c), I[826] = (T)(img)(_n11##x,_n10##y,z,c), I[827] = (T)(img)(_n12##x,_n10##y,z,c), I[828] = (T)(img)(_n13##x,_n10##y,z,c), I[829] = (T)(img)(_n14##x,_n10##y,z,c), I[830] = (T)(img)(_n15##x,_n10##y,z,c), I[831] = (T)(img)(_n16##x,_n10##y,z,c), \ + I[832] = (T)(img)(_p15##x,_n11##y,z,c), I[833] = (T)(img)(_p14##x,_n11##y,z,c), I[834] = (T)(img)(_p13##x,_n11##y,z,c), I[835] = (T)(img)(_p12##x,_n11##y,z,c), I[836] = (T)(img)(_p11##x,_n11##y,z,c), I[837] = (T)(img)(_p10##x,_n11##y,z,c), I[838] = (T)(img)(_p9##x,_n11##y,z,c), I[839] = (T)(img)(_p8##x,_n11##y,z,c), I[840] = (T)(img)(_p7##x,_n11##y,z,c), I[841] = (T)(img)(_p6##x,_n11##y,z,c), I[842] = (T)(img)(_p5##x,_n11##y,z,c), I[843] = (T)(img)(_p4##x,_n11##y,z,c), I[844] = (T)(img)(_p3##x,_n11##y,z,c), I[845] = (T)(img)(_p2##x,_n11##y,z,c), I[846] = (T)(img)(_p1##x,_n11##y,z,c), I[847] = (T)(img)(x,_n11##y,z,c), I[848] = (T)(img)(_n1##x,_n11##y,z,c), I[849] = (T)(img)(_n2##x,_n11##y,z,c), I[850] = (T)(img)(_n3##x,_n11##y,z,c), I[851] = (T)(img)(_n4##x,_n11##y,z,c), I[852] = (T)(img)(_n5##x,_n11##y,z,c), I[853] = (T)(img)(_n6##x,_n11##y,z,c), I[854] = (T)(img)(_n7##x,_n11##y,z,c), I[855] = (T)(img)(_n8##x,_n11##y,z,c), I[856] = (T)(img)(_n9##x,_n11##y,z,c), I[857] = (T)(img)(_n10##x,_n11##y,z,c), I[858] = (T)(img)(_n11##x,_n11##y,z,c), I[859] = (T)(img)(_n12##x,_n11##y,z,c), I[860] = (T)(img)(_n13##x,_n11##y,z,c), I[861] = (T)(img)(_n14##x,_n11##y,z,c), I[862] = (T)(img)(_n15##x,_n11##y,z,c), I[863] = (T)(img)(_n16##x,_n11##y,z,c), \ + I[864] = (T)(img)(_p15##x,_n12##y,z,c), I[865] = (T)(img)(_p14##x,_n12##y,z,c), I[866] = (T)(img)(_p13##x,_n12##y,z,c), I[867] = (T)(img)(_p12##x,_n12##y,z,c), I[868] = (T)(img)(_p11##x,_n12##y,z,c), I[869] = (T)(img)(_p10##x,_n12##y,z,c), I[870] = (T)(img)(_p9##x,_n12##y,z,c), I[871] = (T)(img)(_p8##x,_n12##y,z,c), I[872] = (T)(img)(_p7##x,_n12##y,z,c), I[873] = (T)(img)(_p6##x,_n12##y,z,c), I[874] = (T)(img)(_p5##x,_n12##y,z,c), I[875] = (T)(img)(_p4##x,_n12##y,z,c), I[876] = (T)(img)(_p3##x,_n12##y,z,c), I[877] = (T)(img)(_p2##x,_n12##y,z,c), I[878] = (T)(img)(_p1##x,_n12##y,z,c), I[879] = (T)(img)(x,_n12##y,z,c), I[880] = (T)(img)(_n1##x,_n12##y,z,c), I[881] = (T)(img)(_n2##x,_n12##y,z,c), I[882] = (T)(img)(_n3##x,_n12##y,z,c), I[883] = (T)(img)(_n4##x,_n12##y,z,c), I[884] = (T)(img)(_n5##x,_n12##y,z,c), I[885] = (T)(img)(_n6##x,_n12##y,z,c), I[886] = (T)(img)(_n7##x,_n12##y,z,c), I[887] = (T)(img)(_n8##x,_n12##y,z,c), I[888] = (T)(img)(_n9##x,_n12##y,z,c), I[889] = (T)(img)(_n10##x,_n12##y,z,c), I[890] = (T)(img)(_n11##x,_n12##y,z,c), I[891] = (T)(img)(_n12##x,_n12##y,z,c), I[892] = (T)(img)(_n13##x,_n12##y,z,c), I[893] = (T)(img)(_n14##x,_n12##y,z,c), I[894] = (T)(img)(_n15##x,_n12##y,z,c), I[895] = (T)(img)(_n16##x,_n12##y,z,c), \ + I[896] = (T)(img)(_p15##x,_n13##y,z,c), I[897] = (T)(img)(_p14##x,_n13##y,z,c), I[898] = (T)(img)(_p13##x,_n13##y,z,c), I[899] = (T)(img)(_p12##x,_n13##y,z,c), I[900] = (T)(img)(_p11##x,_n13##y,z,c), I[901] = (T)(img)(_p10##x,_n13##y,z,c), I[902] = (T)(img)(_p9##x,_n13##y,z,c), I[903] = (T)(img)(_p8##x,_n13##y,z,c), I[904] = (T)(img)(_p7##x,_n13##y,z,c), I[905] = (T)(img)(_p6##x,_n13##y,z,c), I[906] = (T)(img)(_p5##x,_n13##y,z,c), I[907] = (T)(img)(_p4##x,_n13##y,z,c), I[908] = (T)(img)(_p3##x,_n13##y,z,c), I[909] = (T)(img)(_p2##x,_n13##y,z,c), I[910] = (T)(img)(_p1##x,_n13##y,z,c), I[911] = (T)(img)(x,_n13##y,z,c), I[912] = (T)(img)(_n1##x,_n13##y,z,c), I[913] = (T)(img)(_n2##x,_n13##y,z,c), I[914] = (T)(img)(_n3##x,_n13##y,z,c), I[915] = (T)(img)(_n4##x,_n13##y,z,c), I[916] = (T)(img)(_n5##x,_n13##y,z,c), I[917] = (T)(img)(_n6##x,_n13##y,z,c), I[918] = (T)(img)(_n7##x,_n13##y,z,c), I[919] = (T)(img)(_n8##x,_n13##y,z,c), I[920] = (T)(img)(_n9##x,_n13##y,z,c), I[921] = (T)(img)(_n10##x,_n13##y,z,c), I[922] = (T)(img)(_n11##x,_n13##y,z,c), I[923] = (T)(img)(_n12##x,_n13##y,z,c), I[924] = (T)(img)(_n13##x,_n13##y,z,c), I[925] = (T)(img)(_n14##x,_n13##y,z,c), I[926] = (T)(img)(_n15##x,_n13##y,z,c), I[927] = (T)(img)(_n16##x,_n13##y,z,c), \ + I[928] = (T)(img)(_p15##x,_n14##y,z,c), I[929] = (T)(img)(_p14##x,_n14##y,z,c), I[930] = (T)(img)(_p13##x,_n14##y,z,c), I[931] = (T)(img)(_p12##x,_n14##y,z,c), I[932] = (T)(img)(_p11##x,_n14##y,z,c), I[933] = (T)(img)(_p10##x,_n14##y,z,c), I[934] = (T)(img)(_p9##x,_n14##y,z,c), I[935] = (T)(img)(_p8##x,_n14##y,z,c), I[936] = (T)(img)(_p7##x,_n14##y,z,c), I[937] = (T)(img)(_p6##x,_n14##y,z,c), I[938] = (T)(img)(_p5##x,_n14##y,z,c), I[939] = (T)(img)(_p4##x,_n14##y,z,c), I[940] = (T)(img)(_p3##x,_n14##y,z,c), I[941] = (T)(img)(_p2##x,_n14##y,z,c), I[942] = (T)(img)(_p1##x,_n14##y,z,c), I[943] = (T)(img)(x,_n14##y,z,c), I[944] = (T)(img)(_n1##x,_n14##y,z,c), I[945] = (T)(img)(_n2##x,_n14##y,z,c), I[946] = (T)(img)(_n3##x,_n14##y,z,c), I[947] = (T)(img)(_n4##x,_n14##y,z,c), I[948] = (T)(img)(_n5##x,_n14##y,z,c), I[949] = (T)(img)(_n6##x,_n14##y,z,c), I[950] = (T)(img)(_n7##x,_n14##y,z,c), I[951] = (T)(img)(_n8##x,_n14##y,z,c), I[952] = (T)(img)(_n9##x,_n14##y,z,c), I[953] = (T)(img)(_n10##x,_n14##y,z,c), I[954] = (T)(img)(_n11##x,_n14##y,z,c), I[955] = (T)(img)(_n12##x,_n14##y,z,c), I[956] = (T)(img)(_n13##x,_n14##y,z,c), I[957] = (T)(img)(_n14##x,_n14##y,z,c), I[958] = (T)(img)(_n15##x,_n14##y,z,c), I[959] = (T)(img)(_n16##x,_n14##y,z,c), \ + I[960] = (T)(img)(_p15##x,_n15##y,z,c), I[961] = (T)(img)(_p14##x,_n15##y,z,c), I[962] = (T)(img)(_p13##x,_n15##y,z,c), I[963] = (T)(img)(_p12##x,_n15##y,z,c), I[964] = (T)(img)(_p11##x,_n15##y,z,c), I[965] = (T)(img)(_p10##x,_n15##y,z,c), I[966] = (T)(img)(_p9##x,_n15##y,z,c), I[967] = (T)(img)(_p8##x,_n15##y,z,c), I[968] = (T)(img)(_p7##x,_n15##y,z,c), I[969] = (T)(img)(_p6##x,_n15##y,z,c), I[970] = (T)(img)(_p5##x,_n15##y,z,c), I[971] = (T)(img)(_p4##x,_n15##y,z,c), I[972] = (T)(img)(_p3##x,_n15##y,z,c), I[973] = (T)(img)(_p2##x,_n15##y,z,c), I[974] = (T)(img)(_p1##x,_n15##y,z,c), I[975] = (T)(img)(x,_n15##y,z,c), I[976] = (T)(img)(_n1##x,_n15##y,z,c), I[977] = (T)(img)(_n2##x,_n15##y,z,c), I[978] = (T)(img)(_n3##x,_n15##y,z,c), I[979] = (T)(img)(_n4##x,_n15##y,z,c), I[980] = (T)(img)(_n5##x,_n15##y,z,c), I[981] = (T)(img)(_n6##x,_n15##y,z,c), I[982] = (T)(img)(_n7##x,_n15##y,z,c), I[983] = (T)(img)(_n8##x,_n15##y,z,c), I[984] = (T)(img)(_n9##x,_n15##y,z,c), I[985] = (T)(img)(_n10##x,_n15##y,z,c), I[986] = (T)(img)(_n11##x,_n15##y,z,c), I[987] = (T)(img)(_n12##x,_n15##y,z,c), I[988] = (T)(img)(_n13##x,_n15##y,z,c), I[989] = (T)(img)(_n14##x,_n15##y,z,c), I[990] = (T)(img)(_n15##x,_n15##y,z,c), I[991] = (T)(img)(_n16##x,_n15##y,z,c), \ + I[992] = (T)(img)(_p15##x,_n16##y,z,c), I[993] = (T)(img)(_p14##x,_n16##y,z,c), I[994] = (T)(img)(_p13##x,_n16##y,z,c), I[995] = (T)(img)(_p12##x,_n16##y,z,c), I[996] = (T)(img)(_p11##x,_n16##y,z,c), I[997] = (T)(img)(_p10##x,_n16##y,z,c), I[998] = (T)(img)(_p9##x,_n16##y,z,c), I[999] = (T)(img)(_p8##x,_n16##y,z,c), I[1000] = (T)(img)(_p7##x,_n16##y,z,c), I[1001] = (T)(img)(_p6##x,_n16##y,z,c), I[1002] = (T)(img)(_p5##x,_n16##y,z,c), I[1003] = (T)(img)(_p4##x,_n16##y,z,c), I[1004] = (T)(img)(_p3##x,_n16##y,z,c), I[1005] = (T)(img)(_p2##x,_n16##y,z,c), I[1006] = (T)(img)(_p1##x,_n16##y,z,c), I[1007] = (T)(img)(x,_n16##y,z,c), I[1008] = (T)(img)(_n1##x,_n16##y,z,c), I[1009] = (T)(img)(_n2##x,_n16##y,z,c), I[1010] = (T)(img)(_n3##x,_n16##y,z,c), I[1011] = (T)(img)(_n4##x,_n16##y,z,c), I[1012] = (T)(img)(_n5##x,_n16##y,z,c), I[1013] = (T)(img)(_n6##x,_n16##y,z,c), I[1014] = (T)(img)(_n7##x,_n16##y,z,c), I[1015] = (T)(img)(_n8##x,_n16##y,z,c), I[1016] = (T)(img)(_n9##x,_n16##y,z,c), I[1017] = (T)(img)(_n10##x,_n16##y,z,c), I[1018] = (T)(img)(_n11##x,_n16##y,z,c), I[1019] = (T)(img)(_n12##x,_n16##y,z,c), I[1020] = (T)(img)(_n13##x,_n16##y,z,c), I[1021] = (T)(img)(_n14##x,_n16##y,z,c), I[1022] = (T)(img)(_n15##x,_n16##y,z,c), I[1023] = (T)(img)(_n16##x,_n16##y,z,c); + +// Define 4x4x4 loop macros +//---------------------------- +#define cimg_for4x4x4(img,x,y,z,c,I,T) \ + cimg_for4((img)._depth,z) cimg_for4((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = (int)( \ + (I[0] = I[1] = (T)(img)(0,_p1##y,_p1##z,c)), \ + (I[4] = I[5] = (T)(img)(0,y,_p1##z,c)), \ + (I[8] = I[9] = (T)(img)(0,_n1##y,_p1##z,c)), \ + (I[12] = I[13] = (T)(img)(0,_n2##y,_p1##z,c)), \ + (I[16] = I[17] = (T)(img)(0,_p1##y,z,c)), \ + (I[20] = I[21] = (T)(img)(0,y,z,c)), \ + (I[24] = I[25] = (T)(img)(0,_n1##y,z,c)), \ + (I[28] = I[29] = (T)(img)(0,_n2##y,z,c)), \ + (I[32] = I[33] = (T)(img)(0,_p1##y,_n1##z,c)), \ + (I[36] = I[37] = (T)(img)(0,y,_n1##z,c)), \ + (I[40] = I[41] = (T)(img)(0,_n1##y,_n1##z,c)), \ + (I[44] = I[45] = (T)(img)(0,_n2##y,_n1##z,c)), \ + (I[48] = I[49] = (T)(img)(0,_p1##y,_n2##z,c)), \ + (I[52] = I[53] = (T)(img)(0,y,_n2##z,c)), \ + (I[56] = I[57] = (T)(img)(0,_n1##y,_n2##z,c)), \ + (I[60] = I[61] = (T)(img)(0,_n2##y,_n2##z,c)), \ + (I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[6] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[10] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[14] = (T)(img)(_n1##x,_n2##y,_p1##z,c)), \ + (I[18] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[22] = (T)(img)(_n1##x,y,z,c)), \ + (I[26] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[30] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[34] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[38] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[42] = (T)(img)(_n1##x,_n1##y,_n1##z,c)), \ + (I[46] = (T)(img)(_n1##x,_n2##y,_n1##z,c)), \ + (I[50] = (T)(img)(_n1##x,_p1##y,_n2##z,c)), \ + (I[54] = (T)(img)(_n1##x,y,_n2##z,c)), \ + (I[58] = (T)(img)(_n1##x,_n1##y,_n2##z,c)), \ + (I[62] = (T)(img)(_n1##x,_n2##y,_n2##z,c)), \ + 2>=((img)._width)?(img).width() - 1:2); \ + (_n2##x<(img).width() && ( \ + (I[3] = (T)(img)(_n2##x,_p1##y,_p1##z,c)), \ + (I[7] = (T)(img)(_n2##x,y,_p1##z,c)), \ + (I[11] = (T)(img)(_n2##x,_n1##y,_p1##z,c)), \ + (I[15] = (T)(img)(_n2##x,_n2##y,_p1##z,c)), \ + (I[19] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[23] = (T)(img)(_n2##x,y,z,c)), \ + (I[27] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[31] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[35] = (T)(img)(_n2##x,_p1##y,_n1##z,c)), \ + (I[39] = (T)(img)(_n2##x,y,_n1##z,c)), \ + (I[43] = (T)(img)(_n2##x,_n1##y,_n1##z,c)), \ + (I[47] = (T)(img)(_n2##x,_n2##y,_n1##z,c)), \ + (I[51] = (T)(img)(_n2##x,_p1##y,_n2##z,c)), \ + (I[55] = (T)(img)(_n2##x,y,_n2##z,c)), \ + (I[59] = (T)(img)(_n2##x,_n1##y,_n2##z,c)), \ + (I[63] = (T)(img)(_n2##x,_n2##y,_n2##z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], \ + I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], \ + I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], \ + I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_for_in4x4x4(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \ + cimg_for_in4((img)._depth,z0,z1,z) cimg_for_in4((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = (int)( \ + (I[0] = (T)(img)(_p1##x,_p1##y,_p1##z,c)), \ + (I[4] = (T)(img)(_p1##x,y,_p1##z,c)), \ + (I[8] = (T)(img)(_p1##x,_n1##y,_p1##z,c)), \ + (I[12] = (T)(img)(_p1##x,_n2##y,_p1##z,c)), \ + (I[16] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[20] = (T)(img)(_p1##x,y,z,c)), \ + (I[24] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[28] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[32] = (T)(img)(_p1##x,_p1##y,_n1##z,c)), \ + (I[36] = (T)(img)(_p1##x,y,_n1##z,c)), \ + (I[40] = (T)(img)(_p1##x,_n1##y,_n1##z,c)), \ + (I[44] = (T)(img)(_p1##x,_n2##y,_n1##z,c)), \ + (I[48] = (T)(img)(_p1##x,_p1##y,_n2##z,c)), \ + (I[52] = (T)(img)(_p1##x,y,_n2##z,c)), \ + (I[56] = (T)(img)(_p1##x,_n1##y,_n2##z,c)), \ + (I[60] = (T)(img)(_p1##x,_n2##y,_n2##z,c)), \ + (I[1] = (T)(img)(x,_p1##y,_p1##z,c)), \ + (I[5] = (T)(img)(x,y,_p1##z,c)), \ + (I[9] = (T)(img)(x,_n1##y,_p1##z,c)), \ + (I[13] = (T)(img)(x,_n2##y,_p1##z,c)), \ + (I[17] = (T)(img)(x,_p1##y,z,c)), \ + (I[21] = (T)(img)(x,y,z,c)), \ + (I[25] = (T)(img)(x,_n1##y,z,c)), \ + (I[29] = (T)(img)(x,_n2##y,z,c)), \ + (I[33] = (T)(img)(x,_p1##y,_n1##z,c)), \ + (I[37] = (T)(img)(x,y,_n1##z,c)), \ + (I[41] = (T)(img)(x,_n1##y,_n1##z,c)), \ + (I[45] = (T)(img)(x,_n2##y,_n1##z,c)), \ + (I[49] = (T)(img)(x,_p1##y,_n2##z,c)), \ + (I[53] = (T)(img)(x,y,_n2##z,c)), \ + (I[57] = (T)(img)(x,_n1##y,_n2##z,c)), \ + (I[61] = (T)(img)(x,_n2##y,_n2##z,c)), \ + (I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[6] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[10] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[14] = (T)(img)(_n1##x,_n2##y,_p1##z,c)), \ + (I[18] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[22] = (T)(img)(_n1##x,y,z,c)), \ + (I[26] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[30] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[34] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[38] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[42] = (T)(img)(_n1##x,_n1##y,_n1##z,c)), \ + (I[46] = (T)(img)(_n1##x,_n2##y,_n1##z,c)), \ + (I[50] = (T)(img)(_n1##x,_p1##y,_n2##z,c)), \ + (I[54] = (T)(img)(_n1##x,y,_n2##z,c)), \ + (I[58] = (T)(img)(_n1##x,_n1##y,_n2##z,c)), \ + (I[62] = (T)(img)(_n1##x,_n2##y,_n2##z,c)), \ + x + 2>=(img).width()?(img).width() - 1:x + 2); \ + x<=(int)(x1) && ((_n2##x<(img).width() && ( \ + (I[3] = (T)(img)(_n2##x,_p1##y,_p1##z,c)), \ + (I[7] = (T)(img)(_n2##x,y,_p1##z,c)), \ + (I[11] = (T)(img)(_n2##x,_n1##y,_p1##z,c)), \ + (I[15] = (T)(img)(_n2##x,_n2##y,_p1##z,c)), \ + (I[19] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[23] = (T)(img)(_n2##x,y,z,c)), \ + (I[27] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[31] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[35] = (T)(img)(_n2##x,_p1##y,_n1##z,c)), \ + (I[39] = (T)(img)(_n2##x,y,_n1##z,c)), \ + (I[43] = (T)(img)(_n2##x,_n1##y,_n1##z,c)), \ + (I[47] = (T)(img)(_n2##x,_n2##y,_n1##z,c)), \ + (I[51] = (T)(img)(_n2##x,_p1##y,_n2##z,c)), \ + (I[55] = (T)(img)(_n2##x,y,_n2##z,c)), \ + (I[59] = (T)(img)(_n2##x,_n1##y,_n2##z,c)), \ + (I[63] = (T)(img)(_n2##x,_n2##y,_n2##z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], \ + I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], \ + I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], \ + I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_get4x4x4(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p1##x,_p1##y,_p1##z,c), I[1] = (T)(img)(x,_p1##y,_p1##z,c), I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c), I[3] = (T)(img)(_n2##x,_p1##y,_p1##z,c), \ + I[4] = (T)(img)(_p1##x,y,_p1##z,c), I[5] = (T)(img)(x,y,_p1##z,c), I[6] = (T)(img)(_n1##x,y,_p1##z,c), I[7] = (T)(img)(_n2##x,y,_p1##z,c), \ + I[8] = (T)(img)(_p1##x,_n1##y,_p1##z,c), I[9] = (T)(img)(x,_n1##y,_p1##z,c), I[10] = (T)(img)(_n1##x,_n1##y,_p1##z,c), I[11] = (T)(img)(_n2##x,_n1##y,_p1##z,c), \ + I[12] = (T)(img)(_p1##x,_n2##y,_p1##z,c), I[13] = (T)(img)(x,_n2##y,_p1##z,c), I[14] = (T)(img)(_n1##x,_n2##y,_p1##z,c), I[15] = (T)(img)(_n2##x,_n2##y,_p1##z,c), \ + I[16] = (T)(img)(_p1##x,_p1##y,z,c), I[17] = (T)(img)(x,_p1##y,z,c), I[18] = (T)(img)(_n1##x,_p1##y,z,c), I[19] = (T)(img)(_n2##x,_p1##y,z,c), \ + I[20] = (T)(img)(_p1##x,y,z,c), I[21] = (T)(img)(x,y,z,c), I[22] = (T)(img)(_n1##x,y,z,c), I[23] = (T)(img)(_n2##x,y,z,c), \ + I[24] = (T)(img)(_p1##x,_n1##y,z,c), I[25] = (T)(img)(x,_n1##y,z,c), I[26] = (T)(img)(_n1##x,_n1##y,z,c), I[27] = (T)(img)(_n2##x,_n1##y,z,c), \ + I[28] = (T)(img)(_p1##x,_n2##y,z,c), I[29] = (T)(img)(x,_n2##y,z,c), I[30] = (T)(img)(_n1##x,_n2##y,z,c), I[31] = (T)(img)(_n2##x,_n2##y,z,c), \ + I[32] = (T)(img)(_p1##x,_p1##y,_n1##z,c), I[33] = (T)(img)(x,_p1##y,_n1##z,c), I[34] = (T)(img)(_n1##x,_p1##y,_n1##z,c), I[35] = (T)(img)(_n2##x,_p1##y,_n1##z,c), \ + I[36] = (T)(img)(_p1##x,y,_n1##z,c), I[37] = (T)(img)(x,y,_n1##z,c), I[38] = (T)(img)(_n1##x,y,_n1##z,c), I[39] = (T)(img)(_n2##x,y,_n1##z,c), \ + I[40] = (T)(img)(_p1##x,_n1##y,_n1##z,c), I[41] = (T)(img)(x,_n1##y,_n1##z,c), I[42] = (T)(img)(_n1##x,_n1##y,_n1##z,c), I[43] = (T)(img)(_n2##x,_n1##y,_n1##z,c), \ + I[44] = (T)(img)(_p1##x,_n2##y,_n1##z,c), I[45] = (T)(img)(x,_n2##y,_n1##z,c), I[46] = (T)(img)(_n1##x,_n2##y,_n1##z,c), I[47] = (T)(img)(_n2##x,_n2##y,_n1##z,c), \ + I[48] = (T)(img)(_p1##x,_p1##y,_n2##z,c), I[49] = (T)(img)(x,_p1##y,_n2##z,c), I[50] = (T)(img)(_n1##x,_p1##y,_n2##z,c), I[51] = (T)(img)(_n2##x,_p1##y,_n2##z,c), \ + I[52] = (T)(img)(_p1##x,y,_n2##z,c), I[53] = (T)(img)(x,y,_n2##z,c), I[54] = (T)(img)(_n1##x,y,_n2##z,c), I[55] = (T)(img)(_n2##x,y,_n2##z,c), \ + I[56] = (T)(img)(_p1##x,_n1##y,_n2##z,c), I[57] = (T)(img)(x,_n1##y,_n2##z,c), I[58] = (T)(img)(_n1##x,_n1##y,_n2##z,c), I[59] = (T)(img)(_n2##x,_n1##y,_n2##z,c), \ + I[60] = (T)(img)(_p1##x,_n2##y,_n2##z,c), I[61] = (T)(img)(x,_n2##y,_n2##z,c), I[62] = (T)(img)(_n1##x,_n2##y,_n2##z,c), I[63] = (T)(img)(_n2##x,_n2##y,_n2##z,c); + +// Define 5x5x5 loop macros +//---------------------------- +#define cimg_for5x5x5(img,x,y,z,c,I,T) \ + cimg_for5((img)._depth,z) cimg_for5((img)._height,y) for (int x = 0, \ + _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = (int)( \ + (I[0] = I[1] = I[2] = (T)(img)(0,_p2##y,_p2##z,c)), \ + (I[5] = I[6] = I[7] = (T)(img)(0,_p1##y,_p2##z,c)), \ + (I[10] = I[11] = I[12] = (T)(img)(0,y,_p2##z,c)), \ + (I[15] = I[16] = I[17] = (T)(img)(0,_n1##y,_p2##z,c)), \ + (I[20] = I[21] = I[22] = (T)(img)(0,_n2##y,_p2##z,c)), \ + (I[25] = I[26] = I[27] = (T)(img)(0,_p2##y,_p1##z,c)), \ + (I[30] = I[31] = I[32] = (T)(img)(0,_p1##y,_p1##z,c)), \ + (I[35] = I[36] = I[37] = (T)(img)(0,y,_p1##z,c)), \ + (I[40] = I[41] = I[42] = (T)(img)(0,_n1##y,_p1##z,c)), \ + (I[45] = I[46] = I[47] = (T)(img)(0,_n2##y,_p1##z,c)), \ + (I[50] = I[51] = I[52] = (T)(img)(0,_p2##y,z,c)), \ + (I[55] = I[56] = I[57] = (T)(img)(0,_p1##y,z,c)), \ + (I[60] = I[61] = I[62] = (T)(img)(0,y,z,c)), \ + (I[65] = I[66] = I[67] = (T)(img)(0,_n1##y,z,c)), \ + (I[70] = I[71] = I[72] = (T)(img)(0,_n2##y,z,c)), \ + (I[75] = I[76] = I[77] = (T)(img)(0,_p2##y,_n1##z,c)), \ + (I[80] = I[81] = I[82] = (T)(img)(0,_p1##y,_n1##z,c)), \ + (I[85] = I[86] = I[87] = (T)(img)(0,y,_n1##z,c)), \ + (I[90] = I[91] = I[92] = (T)(img)(0,_n1##y,_n1##z,c)), \ + (I[95] = I[96] = I[97] = (T)(img)(0,_n2##y,_n1##z,c)), \ + (I[100] = I[101] = I[102] = (T)(img)(0,_p2##y,_n2##z,c)), \ + (I[105] = I[106] = I[107] = (T)(img)(0,_p1##y,_n2##z,c)), \ + (I[110] = I[111] = I[112] = (T)(img)(0,y,_n2##z,c)), \ + (I[115] = I[116] = I[117] = (T)(img)(0,_n1##y,_n2##z,c)), \ + (I[120] = I[121] = I[122] = (T)(img)(0,_n2##y,_n2##z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,_p2##z,c)), \ + (I[8] = (T)(img)(_n1##x,_p1##y,_p2##z,c)), \ + (I[13] = (T)(img)(_n1##x,y,_p2##z,c)), \ + (I[18] = (T)(img)(_n1##x,_n1##y,_p2##z,c)), \ + (I[23] = (T)(img)(_n1##x,_n2##y,_p2##z,c)), \ + (I[28] = (T)(img)(_n1##x,_p2##y,_p1##z,c)), \ + (I[33] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[38] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[43] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[48] = (T)(img)(_n1##x,_n2##y,_p1##z,c)), \ + (I[53] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[58] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[63] = (T)(img)(_n1##x,y,z,c)), \ + (I[68] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[73] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[78] = (T)(img)(_n1##x,_p2##y,_n1##z,c)), \ + (I[83] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[88] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[93] = (T)(img)(_n1##x,_n1##y,_n1##z,c)), \ + (I[98] = (T)(img)(_n1##x,_n2##y,_n1##z,c)), \ + (I[103] = (T)(img)(_n1##x,_p2##y,_n2##z,c)), \ + (I[108] = (T)(img)(_n1##x,_p1##y,_n2##z,c)), \ + (I[113] = (T)(img)(_n1##x,y,_n2##z,c)), \ + (I[118] = (T)(img)(_n1##x,_n1##y,_n2##z,c)), \ + (I[123] = (T)(img)(_n1##x,_n2##y,_n2##z,c)), \ + 2>=((img)._width)?(img).width() - 1:2); \ + (_n2##x<(img).width() && ( \ + (I[4] = (T)(img)(_n2##x,_p2##y,_p2##z,c)), \ + (I[9] = (T)(img)(_n2##x,_p1##y,_p2##z,c)), \ + (I[14] = (T)(img)(_n2##x,y,_p2##z,c)), \ + (I[19] = (T)(img)(_n2##x,_n1##y,_p2##z,c)), \ + (I[24] = (T)(img)(_n2##x,_n2##y,_p2##z,c)), \ + (I[29] = (T)(img)(_n2##x,_p2##y,_p1##z,c)), \ + (I[34] = (T)(img)(_n2##x,_p1##y,_p1##z,c)), \ + (I[39] = (T)(img)(_n2##x,y,_p1##z,c)), \ + (I[44] = (T)(img)(_n2##x,_n1##y,_p1##z,c)), \ + (I[49] = (T)(img)(_n2##x,_n2##y,_p1##z,c)), \ + (I[54] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[59] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[64] = (T)(img)(_n2##x,y,z,c)), \ + (I[69] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[74] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[79] = (T)(img)(_n2##x,_p2##y,_n1##z,c)), \ + (I[84] = (T)(img)(_n2##x,_p1##y,_n1##z,c)), \ + (I[89] = (T)(img)(_n2##x,y,_n1##z,c)), \ + (I[94] = (T)(img)(_n2##x,_n1##y,_n1##z,c)), \ + (I[99] = (T)(img)(_n2##x,_n2##y,_n1##z,c)), \ + (I[104] = (T)(img)(_n2##x,_p2##y,_n2##z,c)), \ + (I[109] = (T)(img)(_n2##x,_p1##y,_n2##z,c)), \ + (I[114] = (T)(img)(_n2##x,y,_n2##z,c)), \ + (I[119] = (T)(img)(_n2##x,_n1##y,_n2##z,c)), \ + (I[124] = (T)(img)(_n2##x,_n2##y,_n2##z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], \ + I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], \ + I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], \ + I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], \ + I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], \ + I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], \ + I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], \ + I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], \ + I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], \ + I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], \ + I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], \ + I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], \ + I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], \ + I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], \ + I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], \ + I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], \ + I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_for_in5x5x5(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \ + cimg_for_in5((img)._depth,z0,z1,z) cimg_for_in5((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = (int)( \ + (I[0] = (T)(img)(_p2##x,_p2##y,_p2##z,c)), \ + (I[5] = (T)(img)(_p2##x,_p1##y,_p2##z,c)), \ + (I[10] = (T)(img)(_p2##x,y,_p2##z,c)), \ + (I[15] = (T)(img)(_p2##x,_n1##y,_p2##z,c)), \ + (I[20] = (T)(img)(_p2##x,_n2##y,_p2##z,c)), \ + (I[25] = (T)(img)(_p2##x,_p2##y,_p1##z,c)), \ + (I[30] = (T)(img)(_p2##x,_p1##y,_p1##z,c)), \ + (I[35] = (T)(img)(_p2##x,y,_p1##z,c)), \ + (I[40] = (T)(img)(_p2##x,_n1##y,_p1##z,c)), \ + (I[45] = (T)(img)(_p2##x,_n2##y,_p1##z,c)), \ + (I[50] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[55] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[60] = (T)(img)(_p2##x,y,z,c)), \ + (I[65] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[70] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[75] = (T)(img)(_p2##x,_p2##y,_n1##z,c)), \ + (I[80] = (T)(img)(_p2##x,_p1##y,_n1##z,c)), \ + (I[85] = (T)(img)(_p2##x,y,_n1##z,c)), \ + (I[90] = (T)(img)(_p2##x,_n1##y,_n1##z,c)), \ + (I[95] = (T)(img)(_p2##x,_n2##y,_n1##z,c)), \ + (I[100] = (T)(img)(_p2##x,_p2##y,_n2##z,c)), \ + (I[105] = (T)(img)(_p2##x,_p1##y,_n2##z,c)), \ + (I[110] = (T)(img)(_p2##x,y,_n2##z,c)), \ + (I[115] = (T)(img)(_p2##x,_n1##y,_n2##z,c)), \ + (I[120] = (T)(img)(_p2##x,_n2##y,_n2##z,c)), \ + (I[1] = (T)(img)(_p1##x,_p2##y,_p2##z,c)), \ + (I[6] = (T)(img)(_p1##x,_p1##y,_p2##z,c)), \ + (I[11] = (T)(img)(_p1##x,y,_p2##z,c)), \ + (I[16] = (T)(img)(_p1##x,_n1##y,_p2##z,c)), \ + (I[21] = (T)(img)(_p1##x,_n2##y,_p2##z,c)), \ + (I[26] = (T)(img)(_p1##x,_p2##y,_p1##z,c)), \ + (I[31] = (T)(img)(_p1##x,_p1##y,_p1##z,c)), \ + (I[36] = (T)(img)(_p1##x,y,_p1##z,c)), \ + (I[41] = (T)(img)(_p1##x,_n1##y,_p1##z,c)), \ + (I[46] = (T)(img)(_p1##x,_n2##y,_p1##z,c)), \ + (I[51] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[56] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[61] = (T)(img)(_p1##x,y,z,c)), \ + (I[66] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[71] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[76] = (T)(img)(_p1##x,_p2##y,_n1##z,c)), \ + (I[81] = (T)(img)(_p1##x,_p1##y,_n1##z,c)), \ + (I[86] = (T)(img)(_p1##x,y,_n1##z,c)), \ + (I[91] = (T)(img)(_p1##x,_n1##y,_n1##z,c)), \ + (I[96] = (T)(img)(_p1##x,_n2##y,_n1##z,c)), \ + (I[101] = (T)(img)(_p1##x,_p2##y,_n2##z,c)), \ + (I[106] = (T)(img)(_p1##x,_p1##y,_n2##z,c)), \ + (I[111] = (T)(img)(_p1##x,y,_n2##z,c)), \ + (I[116] = (T)(img)(_p1##x,_n1##y,_n2##z,c)), \ + (I[121] = (T)(img)(_p1##x,_n2##y,_n2##z,c)), \ + (I[2] = (T)(img)(x,_p2##y,_p2##z,c)), \ + (I[7] = (T)(img)(x,_p1##y,_p2##z,c)), \ + (I[12] = (T)(img)(x,y,_p2##z,c)), \ + (I[17] = (T)(img)(x,_n1##y,_p2##z,c)), \ + (I[22] = (T)(img)(x,_n2##y,_p2##z,c)), \ + (I[27] = (T)(img)(x,_p2##y,_p1##z,c)), \ + (I[32] = (T)(img)(x,_p1##y,_p1##z,c)), \ + (I[37] = (T)(img)(x,y,_p1##z,c)), \ + (I[42] = (T)(img)(x,_n1##y,_p1##z,c)), \ + (I[47] = (T)(img)(x,_n2##y,_p1##z,c)), \ + (I[52] = (T)(img)(x,_p2##y,z,c)), \ + (I[57] = (T)(img)(x,_p1##y,z,c)), \ + (I[62] = (T)(img)(x,y,z,c)), \ + (I[67] = (T)(img)(x,_n1##y,z,c)), \ + (I[72] = (T)(img)(x,_n2##y,z,c)), \ + (I[77] = (T)(img)(x,_p2##y,_n1##z,c)), \ + (I[82] = (T)(img)(x,_p1##y,_n1##z,c)), \ + (I[87] = (T)(img)(x,y,_n1##z,c)), \ + (I[92] = (T)(img)(x,_n1##y,_n1##z,c)), \ + (I[97] = (T)(img)(x,_n2##y,_n1##z,c)), \ + (I[102] = (T)(img)(x,_p2##y,_n2##z,c)), \ + (I[107] = (T)(img)(x,_p1##y,_n2##z,c)), \ + (I[112] = (T)(img)(x,y,_n2##z,c)), \ + (I[117] = (T)(img)(x,_n1##y,_n2##z,c)), \ + (I[122] = (T)(img)(x,_n2##y,_n2##z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,_p2##z,c)), \ + (I[8] = (T)(img)(_n1##x,_p1##y,_p2##z,c)), \ + (I[13] = (T)(img)(_n1##x,y,_p2##z,c)), \ + (I[18] = (T)(img)(_n1##x,_n1##y,_p2##z,c)), \ + (I[23] = (T)(img)(_n1##x,_n2##y,_p2##z,c)), \ + (I[28] = (T)(img)(_n1##x,_p2##y,_p1##z,c)), \ + (I[33] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[38] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[43] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[48] = (T)(img)(_n1##x,_n2##y,_p1##z,c)), \ + (I[53] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[58] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[63] = (T)(img)(_n1##x,y,z,c)), \ + (I[68] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[73] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[78] = (T)(img)(_n1##x,_p2##y,_n1##z,c)), \ + (I[83] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[88] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[93] = (T)(img)(_n1##x,_n1##y,_n1##z,c)), \ + (I[98] = (T)(img)(_n1##x,_n2##y,_n1##z,c)), \ + (I[103] = (T)(img)(_n1##x,_p2##y,_n2##z,c)), \ + (I[108] = (T)(img)(_n1##x,_p1##y,_n2##z,c)), \ + (I[113] = (T)(img)(_n1##x,y,_n2##z,c)), \ + (I[118] = (T)(img)(_n1##x,_n1##y,_n2##z,c)), \ + (I[123] = (T)(img)(_n1##x,_n2##y,_n2##z,c)), \ + x + 2>=(img).width()?(img).width() - 1:x + 2); \ + x<=(int)(x1) && ((_n2##x<(img).width() && ( \ + (I[4] = (T)(img)(_n2##x,_p2##y,_p2##z,c)), \ + (I[9] = (T)(img)(_n2##x,_p1##y,_p2##z,c)), \ + (I[14] = (T)(img)(_n2##x,y,_p2##z,c)), \ + (I[19] = (T)(img)(_n2##x,_n1##y,_p2##z,c)), \ + (I[24] = (T)(img)(_n2##x,_n2##y,_p2##z,c)), \ + (I[29] = (T)(img)(_n2##x,_p2##y,_p1##z,c)), \ + (I[34] = (T)(img)(_n2##x,_p1##y,_p1##z,c)), \ + (I[39] = (T)(img)(_n2##x,y,_p1##z,c)), \ + (I[44] = (T)(img)(_n2##x,_n1##y,_p1##z,c)), \ + (I[49] = (T)(img)(_n2##x,_n2##y,_p1##z,c)), \ + (I[54] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[59] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[64] = (T)(img)(_n2##x,y,z,c)), \ + (I[69] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[74] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[79] = (T)(img)(_n2##x,_p2##y,_n1##z,c)), \ + (I[84] = (T)(img)(_n2##x,_p1##y,_n1##z,c)), \ + (I[89] = (T)(img)(_n2##x,y,_n1##z,c)), \ + (I[94] = (T)(img)(_n2##x,_n1##y,_n1##z,c)), \ + (I[99] = (T)(img)(_n2##x,_n2##y,_n1##z,c)), \ + (I[104] = (T)(img)(_n2##x,_p2##y,_n2##z,c)), \ + (I[109] = (T)(img)(_n2##x,_p1##y,_n2##z,c)), \ + (I[114] = (T)(img)(_n2##x,y,_n2##z,c)), \ + (I[119] = (T)(img)(_n2##x,_n1##y,_n2##z,c)), \ + (I[124] = (T)(img)(_n2##x,_n2##y,_n2##z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], \ + I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], \ + I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], \ + I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], \ + I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], \ + I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], \ + I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], \ + I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], \ + I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], \ + I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], \ + I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], \ + I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], \ + I[95] = I[96], I[96] = I[97], I[97] = I[98], I[98] = I[99], \ + I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], \ + I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], \ + I[110] = I[111], I[111] = I[112], I[112] = I[113], I[113] = I[114], \ + I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_get5x5x5(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p2##x,_p2##y,_p2##z,c), I[1] = (T)(img)(_p1##x,_p2##y,_p2##z,c), I[2] = (T)(img)(x,_p2##y,_p2##z,c), I[3] = (T)(img)(_n1##x,_p2##y,_p2##z,c), I[4] = (T)(img)(_n2##x,_p2##y,_p2##z,c), \ + I[5] = (T)(img)(_p2##x,_p1##y,_p2##z,c), I[6] = (T)(img)(_p1##x,_p1##y,_p2##z,c), I[7] = (T)(img)(x,_p1##y,_p2##z,c), I[8] = (T)(img)(_n1##x,_p1##y,_p2##z,c), I[9] = (T)(img)(_n2##x,_p1##y,_p2##z,c), \ + I[10] = (T)(img)(_p2##x,y,_p2##z,c), I[11] = (T)(img)(_p1##x,y,_p2##z,c), I[12] = (T)(img)(x,y,_p2##z,c), I[13] = (T)(img)(_n1##x,y,_p2##z,c), I[14] = (T)(img)(_n2##x,y,_p2##z,c), \ + I[15] = (T)(img)(_p2##x,_n1##y,_p2##z,c), I[16] = (T)(img)(_p1##x,_n1##y,_p2##z,c), I[17] = (T)(img)(x,_n1##y,_p2##z,c), I[18] = (T)(img)(_n1##x,_n1##y,_p2##z,c), I[19] = (T)(img)(_n2##x,_n1##y,_p2##z,c), \ + I[20] = (T)(img)(_p2##x,_n2##y,_p2##z,c), I[21] = (T)(img)(_p1##x,_n2##y,_p2##z,c), I[22] = (T)(img)(x,_n2##y,_p2##z,c), I[23] = (T)(img)(_n1##x,_n2##y,_p2##z,c), I[24] = (T)(img)(_n2##x,_n2##y,_p2##z,c), \ + I[25] = (T)(img)(_p2##x,_p2##y,_p1##z,c), I[26] = (T)(img)(_p1##x,_p2##y,_p1##z,c), I[27] = (T)(img)(x,_p2##y,_p1##z,c), I[28] = (T)(img)(_n1##x,_p2##y,_p1##z,c), I[29] = (T)(img)(_n2##x,_p2##y,_p1##z,c), \ + I[30] = (T)(img)(_p2##x,_p1##y,_p1##z,c), I[31] = (T)(img)(_p1##x,_p1##y,_p1##z,c), I[32] = (T)(img)(x,_p1##y,_p1##z,c), I[33] = (T)(img)(_n1##x,_p1##y,_p1##z,c), I[34] = (T)(img)(_n2##x,_p1##y,_p1##z,c), \ + I[35] = (T)(img)(_p2##x,y,_p1##z,c), I[36] = (T)(img)(_p1##x,y,_p1##z,c), I[37] = (T)(img)(x,y,_p1##z,c), I[38] = (T)(img)(_n1##x,y,_p1##z,c), I[39] = (T)(img)(_n2##x,y,_p1##z,c), \ + I[40] = (T)(img)(_p2##x,_n1##y,_p1##z,c), I[41] = (T)(img)(_p1##x,_n1##y,_p1##z,c), I[42] = (T)(img)(x,_n1##y,_p1##z,c), I[43] = (T)(img)(_n1##x,_n1##y,_p1##z,c), I[44] = (T)(img)(_n2##x,_n1##y,_p1##z,c), \ + I[45] = (T)(img)(_p2##x,_n2##y,_p1##z,c), I[46] = (T)(img)(_p1##x,_n2##y,_p1##z,c), I[47] = (T)(img)(x,_n2##y,_p1##z,c), I[48] = (T)(img)(_n1##x,_n2##y,_p1##z,c), I[49] = (T)(img)(_n2##x,_n2##y,_p1##z,c), \ + I[50] = (T)(img)(_p2##x,_p2##y,z,c), I[51] = (T)(img)(_p1##x,_p2##y,z,c), I[52] = (T)(img)(x,_p2##y,z,c), I[53] = (T)(img)(_n1##x,_p2##y,z,c), I[54] = (T)(img)(_n2##x,_p2##y,z,c), \ + I[55] = (T)(img)(_p2##x,_p1##y,z,c), I[56] = (T)(img)(_p1##x,_p1##y,z,c), I[57] = (T)(img)(x,_p1##y,z,c), I[58] = (T)(img)(_n1##x,_p1##y,z,c), I[59] = (T)(img)(_n2##x,_p1##y,z,c), \ + I[60] = (T)(img)(_p2##x,y,z,c), I[61] = (T)(img)(_p1##x,y,z,c), I[62] = (T)(img)(x,y,z,c), I[63] = (T)(img)(_n1##x,y,z,c), I[64] = (T)(img)(_n2##x,y,z,c), \ + I[65] = (T)(img)(_p2##x,_n1##y,z,c), I[66] = (T)(img)(_p1##x,_n1##y,z,c), I[67] = (T)(img)(x,_n1##y,z,c), I[68] = (T)(img)(_n1##x,_n1##y,z,c), I[69] = (T)(img)(_n2##x,_n1##y,z,c), \ + I[70] = (T)(img)(_p2##x,_n2##y,z,c), I[71] = (T)(img)(_p1##x,_n2##y,z,c), I[72] = (T)(img)(x,_n2##y,z,c), I[73] = (T)(img)(_n1##x,_n2##y,z,c), I[74] = (T)(img)(_n2##x,_n2##y,z,c), \ + I[75] = (T)(img)(_p2##x,_p2##y,_n1##z,c), I[76] = (T)(img)(_p1##x,_p2##y,_n1##z,c), I[77] = (T)(img)(x,_p2##y,_n1##z,c), I[78] = (T)(img)(_n1##x,_p2##y,_n1##z,c), I[79] = (T)(img)(_n2##x,_p2##y,_n1##z,c), \ + I[80] = (T)(img)(_p2##x,_p1##y,_n1##z,c), I[81] = (T)(img)(_p1##x,_p1##y,_n1##z,c), I[82] = (T)(img)(x,_p1##y,_n1##z,c), I[83] = (T)(img)(_n1##x,_p1##y,_n1##z,c), I[84] = (T)(img)(_n2##x,_p1##y,_n1##z,c), \ + I[85] = (T)(img)(_p2##x,y,_n1##z,c), I[86] = (T)(img)(_p1##x,y,_n1##z,c), I[87] = (T)(img)(x,y,_n1##z,c), I[88] = (T)(img)(_n1##x,y,_n1##z,c), I[89] = (T)(img)(_n2##x,y,_n1##z,c), \ + I[90] = (T)(img)(_p2##x,_n1##y,_n1##z,c), I[91] = (T)(img)(_p1##x,_n1##y,_n1##z,c), I[92] = (T)(img)(x,_n1##y,_n1##z,c), I[93] = (T)(img)(_n1##x,_n1##y,_n1##z,c), I[94] = (T)(img)(_n2##x,_n1##y,_n1##z,c), \ + I[95] = (T)(img)(_p2##x,_n2##y,_n1##z,c), I[96] = (T)(img)(_p1##x,_n2##y,_n1##z,c), I[97] = (T)(img)(x,_n2##y,_n1##z,c), I[98] = (T)(img)(_n1##x,_n2##y,_n1##z,c), I[99] = (T)(img)(_n2##x,_n2##y,_n1##z,c), \ + I[100] = (T)(img)(_p2##x,_p2##y,_n2##z,c), I[101] = (T)(img)(_p1##x,_p2##y,_n2##z,c), I[102] = (T)(img)(x,_p2##y,_n2##z,c), I[103] = (T)(img)(_n1##x,_p2##y,_n2##z,c), I[104] = (T)(img)(_n2##x,_p2##y,_n2##z,c), \ + I[105] = (T)(img)(_p2##x,_p1##y,_n2##z,c), I[106] = (T)(img)(_p1##x,_p1##y,_n2##z,c), I[107] = (T)(img)(x,_p1##y,_n2##z,c), I[108] = (T)(img)(_n1##x,_p1##y,_n2##z,c), I[109] = (T)(img)(_n2##x,_p1##y,_n2##z,c), \ + I[110] = (T)(img)(_p2##x,y,_n2##z,c), I[111] = (T)(img)(_p1##x,y,_n2##z,c), I[112] = (T)(img)(x,y,_n2##z,c), I[113] = (T)(img)(_n1##x,y,_n2##z,c), I[114] = (T)(img)(_n2##x,y,_n2##z,c), \ + I[115] = (T)(img)(_p2##x,_n1##y,_n2##z,c), I[116] = (T)(img)(_p1##x,_n1##y,_n2##z,c), I[117] = (T)(img)(x,_n1##y,_n2##z,c), I[118] = (T)(img)(_n1##x,_n1##y,_n2##z,c), I[119] = (T)(img)(_n2##x,_n1##y,_n2##z,c), \ + I[120] = (T)(img)(_p2##x,_n2##y,_n2##z,c), I[121] = (T)(img)(_p1##x,_n2##y,_n2##z,c), I[122] = (T)(img)(x,_n2##y,_n2##z,c), I[123] = (T)(img)(_n1##x,_n2##y,_n2##z,c), I[124] = (T)(img)(_n2##x,_n2##y,_n2##z,c); + +// Define 6x6x6 loop macros +//---------------------------- +#define cimg_for6x6x6(img,x,y,z,c,I,T) \ + cimg_for6((img)._depth,z) cimg_for6((img)._height,y) for (int x = 0, \ + _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = (int)( \ + (I[0] = I[1] = I[2] = (T)(img)(0,_p2##y,_p2##z,c)), \ + (I[6] = I[7] = I[8] = (T)(img)(0,_p1##y,_p2##z,c)), \ + (I[12] = I[13] = I[14] = (T)(img)(0,y,_p2##z,c)), \ + (I[18] = I[19] = I[20] = (T)(img)(0,_n1##y,_p2##z,c)), \ + (I[24] = I[25] = I[26] = (T)(img)(0,_n2##y,_p2##z,c)), \ + (I[30] = I[31] = I[32] = (T)(img)(0,_n3##y,_p2##z,c)), \ + (I[36] = I[37] = I[38] = (T)(img)(0,_p2##y,_p1##z,c)), \ + (I[42] = I[43] = I[44] = (T)(img)(0,_p1##y,_p1##z,c)), \ + (I[48] = I[49] = I[50] = (T)(img)(0,y,_p1##z,c)), \ + (I[54] = I[55] = I[56] = (T)(img)(0,_n1##y,_p1##z,c)), \ + (I[60] = I[61] = I[62] = (T)(img)(0,_n2##y,_p1##z,c)), \ + (I[66] = I[67] = I[68] = (T)(img)(0,_n3##y,_p1##z,c)), \ + (I[72] = I[73] = I[74] = (T)(img)(0,_p2##y,z,c)), \ + (I[78] = I[79] = I[80] = (T)(img)(0,_p1##y,z,c)), \ + (I[84] = I[85] = I[86] = (T)(img)(0,y,z,c)), \ + (I[90] = I[91] = I[92] = (T)(img)(0,_n1##y,z,c)), \ + (I[96] = I[97] = I[98] = (T)(img)(0,_n2##y,z,c)), \ + (I[102] = I[103] = I[104] = (T)(img)(0,_n3##y,z,c)), \ + (I[108] = I[109] = I[110] = (T)(img)(0,_p2##y,_n1##z,c)), \ + (I[114] = I[115] = I[116] = (T)(img)(0,_p1##y,_n1##z,c)), \ + (I[120] = I[121] = I[122] = (T)(img)(0,y,_n1##z,c)), \ + (I[126] = I[127] = I[128] = (T)(img)(0,_n1##y,_n1##z,c)), \ + (I[132] = I[133] = I[134] = (T)(img)(0,_n2##y,_n1##z,c)), \ + (I[138] = I[139] = I[140] = (T)(img)(0,_n3##y,_n1##z,c)), \ + (I[144] = I[145] = I[146] = (T)(img)(0,_p2##y,_n2##z,c)), \ + (I[150] = I[151] = I[152] = (T)(img)(0,_p1##y,_n2##z,c)), \ + (I[156] = I[157] = I[158] = (T)(img)(0,y,_n2##z,c)), \ + (I[162] = I[163] = I[164] = (T)(img)(0,_n1##y,_n2##z,c)), \ + (I[168] = I[169] = I[170] = (T)(img)(0,_n2##y,_n2##z,c)), \ + (I[174] = I[175] = I[176] = (T)(img)(0,_n3##y,_n2##z,c)), \ + (I[180] = I[181] = I[182] = (T)(img)(0,_p2##y,_n3##z,c)), \ + (I[186] = I[187] = I[188] = (T)(img)(0,_p1##y,_n3##z,c)), \ + (I[192] = I[193] = I[194] = (T)(img)(0,y,_n3##z,c)), \ + (I[198] = I[199] = I[200] = (T)(img)(0,_n1##y,_n3##z,c)), \ + (I[204] = I[205] = I[206] = (T)(img)(0,_n2##y,_n3##z,c)), \ + (I[210] = I[211] = I[212] = (T)(img)(0,_n3##y,_n3##z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,_p2##z,c)), \ + (I[9] = (T)(img)(_n1##x,_p1##y,_p2##z,c)), \ + (I[15] = (T)(img)(_n1##x,y,_p2##z,c)), \ + (I[21] = (T)(img)(_n1##x,_n1##y,_p2##z,c)), \ + (I[27] = (T)(img)(_n1##x,_n2##y,_p2##z,c)), \ + (I[33] = (T)(img)(_n1##x,_n3##y,_p2##z,c)), \ + (I[39] = (T)(img)(_n1##x,_p2##y,_p1##z,c)), \ + (I[45] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[51] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[57] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[63] = (T)(img)(_n1##x,_n2##y,_p1##z,c)), \ + (I[69] = (T)(img)(_n1##x,_n3##y,_p1##z,c)), \ + (I[75] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[81] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[87] = (T)(img)(_n1##x,y,z,c)), \ + (I[93] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[99] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[105] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[111] = (T)(img)(_n1##x,_p2##y,_n1##z,c)), \ + (I[117] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[123] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[129] = (T)(img)(_n1##x,_n1##y,_n1##z,c)), \ + (I[135] = (T)(img)(_n1##x,_n2##y,_n1##z,c)), \ + (I[141] = (T)(img)(_n1##x,_n3##y,_n1##z,c)), \ + (I[147] = (T)(img)(_n1##x,_p2##y,_n2##z,c)), \ + (I[153] = (T)(img)(_n1##x,_p1##y,_n2##z,c)), \ + (I[159] = (T)(img)(_n1##x,y,_n2##z,c)), \ + (I[165] = (T)(img)(_n1##x,_n1##y,_n2##z,c)), \ + (I[171] = (T)(img)(_n1##x,_n2##y,_n2##z,c)), \ + (I[177] = (T)(img)(_n1##x,_n3##y,_n2##z,c)), \ + (I[183] = (T)(img)(_n1##x,_p2##y,_n3##z,c)), \ + (I[189] = (T)(img)(_n1##x,_p1##y,_n3##z,c)), \ + (I[195] = (T)(img)(_n1##x,y,_n3##z,c)), \ + (I[201] = (T)(img)(_n1##x,_n1##y,_n3##z,c)), \ + (I[207] = (T)(img)(_n1##x,_n2##y,_n3##z,c)), \ + (I[213] = (T)(img)(_n1##x,_n3##y,_n3##z,c)), \ + (I[4] = (T)(img)(_n2##x,_p2##y,_p2##z,c)), \ + (I[10] = (T)(img)(_n2##x,_p1##y,_p2##z,c)), \ + (I[16] = (T)(img)(_n2##x,y,_p2##z,c)), \ + (I[22] = (T)(img)(_n2##x,_n1##y,_p2##z,c)), \ + (I[28] = (T)(img)(_n2##x,_n2##y,_p2##z,c)), \ + (I[34] = (T)(img)(_n2##x,_n3##y,_p2##z,c)), \ + (I[40] = (T)(img)(_n2##x,_p2##y,_p1##z,c)), \ + (I[46] = (T)(img)(_n2##x,_p1##y,_p1##z,c)), \ + (I[52] = (T)(img)(_n2##x,y,_p1##z,c)), \ + (I[58] = (T)(img)(_n2##x,_n1##y,_p1##z,c)), \ + (I[64] = (T)(img)(_n2##x,_n2##y,_p1##z,c)), \ + (I[70] = (T)(img)(_n2##x,_n3##y,_p1##z,c)), \ + (I[76] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[82] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[88] = (T)(img)(_n2##x,y,z,c)), \ + (I[94] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[100] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[106] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[112] = (T)(img)(_n2##x,_p2##y,_n1##z,c)), \ + (I[118] = (T)(img)(_n2##x,_p1##y,_n1##z,c)), \ + (I[124] = (T)(img)(_n2##x,y,_n1##z,c)), \ + (I[130] = (T)(img)(_n2##x,_n1##y,_n1##z,c)), \ + (I[136] = (T)(img)(_n2##x,_n2##y,_n1##z,c)), \ + (I[142] = (T)(img)(_n2##x,_n3##y,_n1##z,c)), \ + (I[148] = (T)(img)(_n2##x,_p2##y,_n2##z,c)), \ + (I[154] = (T)(img)(_n2##x,_p1##y,_n2##z,c)), \ + (I[160] = (T)(img)(_n2##x,y,_n2##z,c)), \ + (I[166] = (T)(img)(_n2##x,_n1##y,_n2##z,c)), \ + (I[172] = (T)(img)(_n2##x,_n2##y,_n2##z,c)), \ + (I[178] = (T)(img)(_n2##x,_n3##y,_n2##z,c)), \ + (I[184] = (T)(img)(_n2##x,_p2##y,_n3##z,c)), \ + (I[190] = (T)(img)(_n2##x,_p1##y,_n3##z,c)), \ + (I[196] = (T)(img)(_n2##x,y,_n3##z,c)), \ + (I[202] = (T)(img)(_n2##x,_n1##y,_n3##z,c)), \ + (I[208] = (T)(img)(_n2##x,_n2##y,_n3##z,c)), \ + (I[214] = (T)(img)(_n2##x,_n3##y,_n3##z,c)), \ + 3>=((img)._width)?(img).width() - 1:3); \ + (_n3##x<(img).width() && ( \ + (I[5] = (T)(img)(_n3##x,_p2##y,_p2##z,c)), \ + (I[11] = (T)(img)(_n3##x,_p1##y,_p2##z,c)), \ + (I[17] = (T)(img)(_n3##x,y,_p2##z,c)), \ + (I[23] = (T)(img)(_n3##x,_n1##y,_p2##z,c)), \ + (I[29] = (T)(img)(_n3##x,_n2##y,_p2##z,c)), \ + (I[35] = (T)(img)(_n3##x,_n3##y,_p2##z,c)), \ + (I[41] = (T)(img)(_n3##x,_p2##y,_p1##z,c)), \ + (I[47] = (T)(img)(_n3##x,_p1##y,_p1##z,c)), \ + (I[53] = (T)(img)(_n3##x,y,_p1##z,c)), \ + (I[59] = (T)(img)(_n3##x,_n1##y,_p1##z,c)), \ + (I[65] = (T)(img)(_n3##x,_n2##y,_p1##z,c)), \ + (I[71] = (T)(img)(_n3##x,_n3##y,_p1##z,c)), \ + (I[77] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[83] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[89] = (T)(img)(_n3##x,y,z,c)), \ + (I[95] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[101] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[107] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[113] = (T)(img)(_n3##x,_p2##y,_n1##z,c)), \ + (I[119] = (T)(img)(_n3##x,_p1##y,_n1##z,c)), \ + (I[125] = (T)(img)(_n3##x,y,_n1##z,c)), \ + (I[131] = (T)(img)(_n3##x,_n1##y,_n1##z,c)), \ + (I[137] = (T)(img)(_n3##x,_n2##y,_n1##z,c)), \ + (I[143] = (T)(img)(_n3##x,_n3##y,_n1##z,c)), \ + (I[149] = (T)(img)(_n3##x,_p2##y,_n2##z,c)), \ + (I[155] = (T)(img)(_n3##x,_p1##y,_n2##z,c)), \ + (I[161] = (T)(img)(_n3##x,y,_n2##z,c)), \ + (I[167] = (T)(img)(_n3##x,_n1##y,_n2##z,c)), \ + (I[173] = (T)(img)(_n3##x,_n2##y,_n2##z,c)), \ + (I[179] = (T)(img)(_n3##x,_n3##y,_n2##z,c)), \ + (I[185] = (T)(img)(_n3##x,_p2##y,_n3##z,c)), \ + (I[191] = (T)(img)(_n3##x,_p1##y,_n3##z,c)), \ + (I[197] = (T)(img)(_n3##x,y,_n3##z,c)), \ + (I[203] = (T)(img)(_n3##x,_n1##y,_n3##z,c)), \ + (I[209] = (T)(img)(_n3##x,_n2##y,_n3##z,c)), \ + (I[215] = (T)(img)(_n3##x,_n3##y,_n3##z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], \ + I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], \ + I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], \ + I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], \ + I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], \ + I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], \ + I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], \ + I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], \ + I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], \ + I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], \ + I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], \ + I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], \ + I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], \ + I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], \ + I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], \ + I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], \ + I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], \ + I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], \ + I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], \ + I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_for_in6x6x6(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \ + cimg_for_in6((img)._depth,z0,z1,z) cimg_for_in6((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = (int)( \ + (I[0] = (T)(img)(_p2##x,_p2##y,_p2##z,c)), \ + (I[6] = (T)(img)(_p2##x,_p1##y,_p2##z,c)), \ + (I[12] = (T)(img)(_p2##x,y,_p2##z,c)), \ + (I[18] = (T)(img)(_p2##x,_n1##y,_p2##z,c)), \ + (I[24] = (T)(img)(_p2##x,_n2##y,_p2##z,c)), \ + (I[30] = (T)(img)(_p2##x,_n3##y,_p2##z,c)), \ + (I[36] = (T)(img)(_p2##x,_p2##y,_p1##z,c)), \ + (I[42] = (T)(img)(_p2##x,_p1##y,_p1##z,c)), \ + (I[48] = (T)(img)(_p2##x,y,_p1##z,c)), \ + (I[54] = (T)(img)(_p2##x,_n1##y,_p1##z,c)), \ + (I[60] = (T)(img)(_p2##x,_n2##y,_p1##z,c)), \ + (I[66] = (T)(img)(_p2##x,_n3##y,_p1##z,c)), \ + (I[72] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[78] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[84] = (T)(img)(_p2##x,y,z,c)), \ + (I[90] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[96] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[102] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[108] = (T)(img)(_p2##x,_p2##y,_n1##z,c)), \ + (I[114] = (T)(img)(_p2##x,_p1##y,_n1##z,c)), \ + (I[120] = (T)(img)(_p2##x,y,_n1##z,c)), \ + (I[126] = (T)(img)(_p2##x,_n1##y,_n1##z,c)), \ + (I[132] = (T)(img)(_p2##x,_n2##y,_n1##z,c)), \ + (I[138] = (T)(img)(_p2##x,_n3##y,_n1##z,c)), \ + (I[144] = (T)(img)(_p2##x,_p2##y,_n2##z,c)), \ + (I[150] = (T)(img)(_p2##x,_p1##y,_n2##z,c)), \ + (I[156] = (T)(img)(_p2##x,y,_n2##z,c)), \ + (I[162] = (T)(img)(_p2##x,_n1##y,_n2##z,c)), \ + (I[168] = (T)(img)(_p2##x,_n2##y,_n2##z,c)), \ + (I[174] = (T)(img)(_p2##x,_n3##y,_n2##z,c)), \ + (I[180] = (T)(img)(_p2##x,_p2##y,_n3##z,c)), \ + (I[186] = (T)(img)(_p2##x,_p1##y,_n3##z,c)), \ + (I[192] = (T)(img)(_p2##x,y,_n3##z,c)), \ + (I[198] = (T)(img)(_p2##x,_n1##y,_n3##z,c)), \ + (I[204] = (T)(img)(_p2##x,_n2##y,_n3##z,c)), \ + (I[210] = (T)(img)(_p2##x,_n3##y,_n3##z,c)), \ + (I[1] = (T)(img)(_p1##x,_p2##y,_p2##z,c)), \ + (I[7] = (T)(img)(_p1##x,_p1##y,_p2##z,c)), \ + (I[13] = (T)(img)(_p1##x,y,_p2##z,c)), \ + (I[19] = (T)(img)(_p1##x,_n1##y,_p2##z,c)), \ + (I[25] = (T)(img)(_p1##x,_n2##y,_p2##z,c)), \ + (I[31] = (T)(img)(_p1##x,_n3##y,_p2##z,c)), \ + (I[37] = (T)(img)(_p1##x,_p2##y,_p1##z,c)), \ + (I[43] = (T)(img)(_p1##x,_p1##y,_p1##z,c)), \ + (I[49] = (T)(img)(_p1##x,y,_p1##z,c)), \ + (I[55] = (T)(img)(_p1##x,_n1##y,_p1##z,c)), \ + (I[61] = (T)(img)(_p1##x,_n2##y,_p1##z,c)), \ + (I[67] = (T)(img)(_p1##x,_n3##y,_p1##z,c)), \ + (I[73] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[79] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[85] = (T)(img)(_p1##x,y,z,c)), \ + (I[91] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[97] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[103] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[109] = (T)(img)(_p1##x,_p2##y,_n1##z,c)), \ + (I[115] = (T)(img)(_p1##x,_p1##y,_n1##z,c)), \ + (I[121] = (T)(img)(_p1##x,y,_n1##z,c)), \ + (I[127] = (T)(img)(_p1##x,_n1##y,_n1##z,c)), \ + (I[133] = (T)(img)(_p1##x,_n2##y,_n1##z,c)), \ + (I[139] = (T)(img)(_p1##x,_n3##y,_n1##z,c)), \ + (I[145] = (T)(img)(_p1##x,_p2##y,_n2##z,c)), \ + (I[151] = (T)(img)(_p1##x,_p1##y,_n2##z,c)), \ + (I[157] = (T)(img)(_p1##x,y,_n2##z,c)), \ + (I[163] = (T)(img)(_p1##x,_n1##y,_n2##z,c)), \ + (I[169] = (T)(img)(_p1##x,_n2##y,_n2##z,c)), \ + (I[175] = (T)(img)(_p1##x,_n3##y,_n2##z,c)), \ + (I[181] = (T)(img)(_p1##x,_p2##y,_n3##z,c)), \ + (I[187] = (T)(img)(_p1##x,_p1##y,_n3##z,c)), \ + (I[193] = (T)(img)(_p1##x,y,_n3##z,c)), \ + (I[199] = (T)(img)(_p1##x,_n1##y,_n3##z,c)), \ + (I[205] = (T)(img)(_p1##x,_n2##y,_n3##z,c)), \ + (I[211] = (T)(img)(_p1##x,_n3##y,_n3##z,c)), \ + (I[2] = (T)(img)(x,_p2##y,_p2##z,c)), \ + (I[8] = (T)(img)(x,_p1##y,_p2##z,c)), \ + (I[14] = (T)(img)(x,y,_p2##z,c)), \ + (I[20] = (T)(img)(x,_n1##y,_p2##z,c)), \ + (I[26] = (T)(img)(x,_n2##y,_p2##z,c)), \ + (I[32] = (T)(img)(x,_n3##y,_p2##z,c)), \ + (I[38] = (T)(img)(x,_p2##y,_p1##z,c)), \ + (I[44] = (T)(img)(x,_p1##y,_p1##z,c)), \ + (I[50] = (T)(img)(x,y,_p1##z,c)), \ + (I[56] = (T)(img)(x,_n1##y,_p1##z,c)), \ + (I[62] = (T)(img)(x,_n2##y,_p1##z,c)), \ + (I[68] = (T)(img)(x,_n3##y,_p1##z,c)), \ + (I[74] = (T)(img)(x,_p2##y,z,c)), \ + (I[80] = (T)(img)(x,_p1##y,z,c)), \ + (I[86] = (T)(img)(x,y,z,c)), \ + (I[92] = (T)(img)(x,_n1##y,z,c)), \ + (I[98] = (T)(img)(x,_n2##y,z,c)), \ + (I[104] = (T)(img)(x,_n3##y,z,c)), \ + (I[110] = (T)(img)(x,_p2##y,_n1##z,c)), \ + (I[116] = (T)(img)(x,_p1##y,_n1##z,c)), \ + (I[122] = (T)(img)(x,y,_n1##z,c)), \ + (I[128] = (T)(img)(x,_n1##y,_n1##z,c)), \ + (I[134] = (T)(img)(x,_n2##y,_n1##z,c)), \ + (I[140] = (T)(img)(x,_n3##y,_n1##z,c)), \ + (I[146] = (T)(img)(x,_p2##y,_n2##z,c)), \ + (I[152] = (T)(img)(x,_p1##y,_n2##z,c)), \ + (I[158] = (T)(img)(x,y,_n2##z,c)), \ + (I[164] = (T)(img)(x,_n1##y,_n2##z,c)), \ + (I[170] = (T)(img)(x,_n2##y,_n2##z,c)), \ + (I[176] = (T)(img)(x,_n3##y,_n2##z,c)), \ + (I[182] = (T)(img)(x,_p2##y,_n3##z,c)), \ + (I[188] = (T)(img)(x,_p1##y,_n3##z,c)), \ + (I[194] = (T)(img)(x,y,_n3##z,c)), \ + (I[200] = (T)(img)(x,_n1##y,_n3##z,c)), \ + (I[206] = (T)(img)(x,_n2##y,_n3##z,c)), \ + (I[212] = (T)(img)(x,_n3##y,_n3##z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,_p2##z,c)), \ + (I[9] = (T)(img)(_n1##x,_p1##y,_p2##z,c)), \ + (I[15] = (T)(img)(_n1##x,y,_p2##z,c)), \ + (I[21] = (T)(img)(_n1##x,_n1##y,_p2##z,c)), \ + (I[27] = (T)(img)(_n1##x,_n2##y,_p2##z,c)), \ + (I[33] = (T)(img)(_n1##x,_n3##y,_p2##z,c)), \ + (I[39] = (T)(img)(_n1##x,_p2##y,_p1##z,c)), \ + (I[45] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[51] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[57] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[63] = (T)(img)(_n1##x,_n2##y,_p1##z,c)), \ + (I[69] = (T)(img)(_n1##x,_n3##y,_p1##z,c)), \ + (I[75] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[81] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[87] = (T)(img)(_n1##x,y,z,c)), \ + (I[93] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[99] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[105] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[111] = (T)(img)(_n1##x,_p2##y,_n1##z,c)), \ + (I[117] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[123] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[129] = (T)(img)(_n1##x,_n1##y,_n1##z,c)), \ + (I[135] = (T)(img)(_n1##x,_n2##y,_n1##z,c)), \ + (I[141] = (T)(img)(_n1##x,_n3##y,_n1##z,c)), \ + (I[147] = (T)(img)(_n1##x,_p2##y,_n2##z,c)), \ + (I[153] = (T)(img)(_n1##x,_p1##y,_n2##z,c)), \ + (I[159] = (T)(img)(_n1##x,y,_n2##z,c)), \ + (I[165] = (T)(img)(_n1##x,_n1##y,_n2##z,c)), \ + (I[171] = (T)(img)(_n1##x,_n2##y,_n2##z,c)), \ + (I[177] = (T)(img)(_n1##x,_n3##y,_n2##z,c)), \ + (I[183] = (T)(img)(_n1##x,_p2##y,_n3##z,c)), \ + (I[189] = (T)(img)(_n1##x,_p1##y,_n3##z,c)), \ + (I[195] = (T)(img)(_n1##x,y,_n3##z,c)), \ + (I[201] = (T)(img)(_n1##x,_n1##y,_n3##z,c)), \ + (I[207] = (T)(img)(_n1##x,_n2##y,_n3##z,c)), \ + (I[213] = (T)(img)(_n1##x,_n3##y,_n3##z,c)), \ + (I[4] = (T)(img)(_n2##x,_p2##y,_p2##z,c)), \ + (I[10] = (T)(img)(_n2##x,_p1##y,_p2##z,c)), \ + (I[16] = (T)(img)(_n2##x,y,_p2##z,c)), \ + (I[22] = (T)(img)(_n2##x,_n1##y,_p2##z,c)), \ + (I[28] = (T)(img)(_n2##x,_n2##y,_p2##z,c)), \ + (I[34] = (T)(img)(_n2##x,_n3##y,_p2##z,c)), \ + (I[40] = (T)(img)(_n2##x,_p2##y,_p1##z,c)), \ + (I[46] = (T)(img)(_n2##x,_p1##y,_p1##z,c)), \ + (I[52] = (T)(img)(_n2##x,y,_p1##z,c)), \ + (I[58] = (T)(img)(_n2##x,_n1##y,_p1##z,c)), \ + (I[64] = (T)(img)(_n2##x,_n2##y,_p1##z,c)), \ + (I[70] = (T)(img)(_n2##x,_n3##y,_p1##z,c)), \ + (I[76] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[82] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[88] = (T)(img)(_n2##x,y,z,c)), \ + (I[94] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[100] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[106] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[112] = (T)(img)(_n2##x,_p2##y,_n1##z,c)), \ + (I[118] = (T)(img)(_n2##x,_p1##y,_n1##z,c)), \ + (I[124] = (T)(img)(_n2##x,y,_n1##z,c)), \ + (I[130] = (T)(img)(_n2##x,_n1##y,_n1##z,c)), \ + (I[136] = (T)(img)(_n2##x,_n2##y,_n1##z,c)), \ + (I[142] = (T)(img)(_n2##x,_n3##y,_n1##z,c)), \ + (I[148] = (T)(img)(_n2##x,_p2##y,_n2##z,c)), \ + (I[154] = (T)(img)(_n2##x,_p1##y,_n2##z,c)), \ + (I[160] = (T)(img)(_n2##x,y,_n2##z,c)), \ + (I[166] = (T)(img)(_n2##x,_n1##y,_n2##z,c)), \ + (I[172] = (T)(img)(_n2##x,_n2##y,_n2##z,c)), \ + (I[178] = (T)(img)(_n2##x,_n3##y,_n2##z,c)), \ + (I[184] = (T)(img)(_n2##x,_p2##y,_n3##z,c)), \ + (I[190] = (T)(img)(_n2##x,_p1##y,_n3##z,c)), \ + (I[196] = (T)(img)(_n2##x,y,_n3##z,c)), \ + (I[202] = (T)(img)(_n2##x,_n1##y,_n3##z,c)), \ + (I[208] = (T)(img)(_n2##x,_n2##y,_n3##z,c)), \ + (I[214] = (T)(img)(_n2##x,_n3##y,_n3##z,c)), \ + x + 3>=(img).width()?(img).width() - 1:x + 3); \ + x<=(int)(x1) && ((_n3##x<(img).width() && ( \ + (I[5] = (T)(img)(_n3##x,_p2##y,_p2##z,c)), \ + (I[11] = (T)(img)(_n3##x,_p1##y,_p2##z,c)), \ + (I[17] = (T)(img)(_n3##x,y,_p2##z,c)), \ + (I[23] = (T)(img)(_n3##x,_n1##y,_p2##z,c)), \ + (I[29] = (T)(img)(_n3##x,_n2##y,_p2##z,c)), \ + (I[35] = (T)(img)(_n3##x,_n3##y,_p2##z,c)), \ + (I[41] = (T)(img)(_n3##x,_p2##y,_p1##z,c)), \ + (I[47] = (T)(img)(_n3##x,_p1##y,_p1##z,c)), \ + (I[53] = (T)(img)(_n3##x,y,_p1##z,c)), \ + (I[59] = (T)(img)(_n3##x,_n1##y,_p1##z,c)), \ + (I[65] = (T)(img)(_n3##x,_n2##y,_p1##z,c)), \ + (I[71] = (T)(img)(_n3##x,_n3##y,_p1##z,c)), \ + (I[77] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[83] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[89] = (T)(img)(_n3##x,y,z,c)), \ + (I[95] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[101] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[107] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[113] = (T)(img)(_n3##x,_p2##y,_n1##z,c)), \ + (I[119] = (T)(img)(_n3##x,_p1##y,_n1##z,c)), \ + (I[125] = (T)(img)(_n3##x,y,_n1##z,c)), \ + (I[131] = (T)(img)(_n3##x,_n1##y,_n1##z,c)), \ + (I[137] = (T)(img)(_n3##x,_n2##y,_n1##z,c)), \ + (I[143] = (T)(img)(_n3##x,_n3##y,_n1##z,c)), \ + (I[149] = (T)(img)(_n3##x,_p2##y,_n2##z,c)), \ + (I[155] = (T)(img)(_n3##x,_p1##y,_n2##z,c)), \ + (I[161] = (T)(img)(_n3##x,y,_n2##z,c)), \ + (I[167] = (T)(img)(_n3##x,_n1##y,_n2##z,c)), \ + (I[173] = (T)(img)(_n3##x,_n2##y,_n2##z,c)), \ + (I[179] = (T)(img)(_n3##x,_n3##y,_n2##z,c)), \ + (I[185] = (T)(img)(_n3##x,_p2##y,_n3##z,c)), \ + (I[191] = (T)(img)(_n3##x,_p1##y,_n3##z,c)), \ + (I[197] = (T)(img)(_n3##x,y,_n3##z,c)), \ + (I[203] = (T)(img)(_n3##x,_n1##y,_n3##z,c)), \ + (I[209] = (T)(img)(_n3##x,_n2##y,_n3##z,c)), \ + (I[215] = (T)(img)(_n3##x,_n3##y,_n3##z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], \ + I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], \ + I[60] = I[61], I[61] = I[62], I[62] = I[63], I[63] = I[64], I[64] = I[65], \ + I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], \ + I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], \ + I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], \ + I[102] = I[103], I[103] = I[104], I[104] = I[105], I[105] = I[106], I[106] = I[107], \ + I[108] = I[109], I[109] = I[110], I[110] = I[111], I[111] = I[112], I[112] = I[113], \ + I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], \ + I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], \ + I[132] = I[133], I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], \ + I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], \ + I[150] = I[151], I[151] = I[152], I[152] = I[153], I[153] = I[154], I[154] = I[155], \ + I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], I[160] = I[161], \ + I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], \ + I[174] = I[175], I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], \ + I[180] = I[181], I[181] = I[182], I[182] = I[183], I[183] = I[184], I[184] = I[185], \ + I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], \ + I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], \ + I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], I[202] = I[203], \ + I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], \ + I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_get6x6x6(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p2##x,_p2##y,_p2##z,c), I[1] = (T)(img)(_p1##x,_p2##y,_p2##z,c), I[2] = (T)(img)(x,_p2##y,_p2##z,c), I[3] = (T)(img)(_n1##x,_p2##y,_p2##z,c), I[4] = (T)(img)(_n2##x,_p2##y,_p2##z,c), I[5] = (T)(img)(_n3##x,_p2##y,_p2##z,c), \ + I[6] = (T)(img)(_p2##x,_p1##y,_p2##z,c), I[7] = (T)(img)(_p1##x,_p1##y,_p2##z,c), I[8] = (T)(img)(x,_p1##y,_p2##z,c), I[9] = (T)(img)(_n1##x,_p1##y,_p2##z,c), I[10] = (T)(img)(_n2##x,_p1##y,_p2##z,c), I[11] = (T)(img)(_n3##x,_p1##y,_p2##z,c), \ + I[12] = (T)(img)(_p2##x,y,_p2##z,c), I[13] = (T)(img)(_p1##x,y,_p2##z,c), I[14] = (T)(img)(x,y,_p2##z,c), I[15] = (T)(img)(_n1##x,y,_p2##z,c), I[16] = (T)(img)(_n2##x,y,_p2##z,c), I[17] = (T)(img)(_n3##x,y,_p2##z,c), \ + I[18] = (T)(img)(_p2##x,_n1##y,_p2##z,c), I[19] = (T)(img)(_p1##x,_n1##y,_p2##z,c), I[20] = (T)(img)(x,_n1##y,_p2##z,c), I[21] = (T)(img)(_n1##x,_n1##y,_p2##z,c), I[22] = (T)(img)(_n2##x,_n1##y,_p2##z,c), I[23] = (T)(img)(_n3##x,_n1##y,_p2##z,c), \ + I[24] = (T)(img)(_p2##x,_n2##y,_p2##z,c), I[25] = (T)(img)(_p1##x,_n2##y,_p2##z,c), I[26] = (T)(img)(x,_n2##y,_p2##z,c), I[27] = (T)(img)(_n1##x,_n2##y,_p2##z,c), I[28] = (T)(img)(_n2##x,_n2##y,_p2##z,c), I[29] = (T)(img)(_n3##x,_n2##y,_p2##z,c), \ + I[30] = (T)(img)(_p2##x,_n3##y,_p2##z,c), I[31] = (T)(img)(_p1##x,_n3##y,_p2##z,c), I[32] = (T)(img)(x,_n3##y,_p2##z,c), I[33] = (T)(img)(_n1##x,_n3##y,_p2##z,c), I[34] = (T)(img)(_n2##x,_n3##y,_p2##z,c), I[35] = (T)(img)(_n3##x,_n3##y,_p2##z,c), \ + I[36] = (T)(img)(_p2##x,_p2##y,_p1##z,c), I[37] = (T)(img)(_p1##x,_p2##y,_p1##z,c), I[38] = (T)(img)(x,_p2##y,_p1##z,c), I[39] = (T)(img)(_n1##x,_p2##y,_p1##z,c), I[40] = (T)(img)(_n2##x,_p2##y,_p1##z,c), I[41] = (T)(img)(_n3##x,_p2##y,_p1##z,c), \ + I[42] = (T)(img)(_p2##x,_p1##y,_p1##z,c), I[43] = (T)(img)(_p1##x,_p1##y,_p1##z,c), I[44] = (T)(img)(x,_p1##y,_p1##z,c), I[45] = (T)(img)(_n1##x,_p1##y,_p1##z,c), I[46] = (T)(img)(_n2##x,_p1##y,_p1##z,c), I[47] = (T)(img)(_n3##x,_p1##y,_p1##z,c), \ + I[48] = (T)(img)(_p2##x,y,_p1##z,c), I[49] = (T)(img)(_p1##x,y,_p1##z,c), I[50] = (T)(img)(x,y,_p1##z,c), I[51] = (T)(img)(_n1##x,y,_p1##z,c), I[52] = (T)(img)(_n2##x,y,_p1##z,c), I[53] = (T)(img)(_n3##x,y,_p1##z,c), \ + I[54] = (T)(img)(_p2##x,_n1##y,_p1##z,c), I[55] = (T)(img)(_p1##x,_n1##y,_p1##z,c), I[56] = (T)(img)(x,_n1##y,_p1##z,c), I[57] = (T)(img)(_n1##x,_n1##y,_p1##z,c), I[58] = (T)(img)(_n2##x,_n1##y,_p1##z,c), I[59] = (T)(img)(_n3##x,_n1##y,_p1##z,c), \ + I[60] = (T)(img)(_p2##x,_n2##y,_p1##z,c), I[61] = (T)(img)(_p1##x,_n2##y,_p1##z,c), I[62] = (T)(img)(x,_n2##y,_p1##z,c), I[63] = (T)(img)(_n1##x,_n2##y,_p1##z,c), I[64] = (T)(img)(_n2##x,_n2##y,_p1##z,c), I[65] = (T)(img)(_n3##x,_n2##y,_p1##z,c), \ + I[66] = (T)(img)(_p2##x,_n3##y,_p1##z,c), I[67] = (T)(img)(_p1##x,_n3##y,_p1##z,c), I[68] = (T)(img)(x,_n3##y,_p1##z,c), I[69] = (T)(img)(_n1##x,_n3##y,_p1##z,c), I[70] = (T)(img)(_n2##x,_n3##y,_p1##z,c), I[71] = (T)(img)(_n3##x,_n3##y,_p1##z,c), \ + I[72] = (T)(img)(_p2##x,_p2##y,z,c), I[73] = (T)(img)(_p1##x,_p2##y,z,c), I[74] = (T)(img)(x,_p2##y,z,c), I[75] = (T)(img)(_n1##x,_p2##y,z,c), I[76] = (T)(img)(_n2##x,_p2##y,z,c), I[77] = (T)(img)(_n3##x,_p2##y,z,c), \ + I[78] = (T)(img)(_p2##x,_p1##y,z,c), I[79] = (T)(img)(_p1##x,_p1##y,z,c), I[80] = (T)(img)(x,_p1##y,z,c), I[81] = (T)(img)(_n1##x,_p1##y,z,c), I[82] = (T)(img)(_n2##x,_p1##y,z,c), I[83] = (T)(img)(_n3##x,_p1##y,z,c), \ + I[84] = (T)(img)(_p2##x,y,z,c), I[85] = (T)(img)(_p1##x,y,z,c), I[86] = (T)(img)(x,y,z,c), I[87] = (T)(img)(_n1##x,y,z,c), I[88] = (T)(img)(_n2##x,y,z,c), I[89] = (T)(img)(_n3##x,y,z,c), \ + I[90] = (T)(img)(_p2##x,_n1##y,z,c), I[91] = (T)(img)(_p1##x,_n1##y,z,c), I[92] = (T)(img)(x,_n1##y,z,c), I[93] = (T)(img)(_n1##x,_n1##y,z,c), I[94] = (T)(img)(_n2##x,_n1##y,z,c), I[95] = (T)(img)(_n3##x,_n1##y,z,c), \ + I[96] = (T)(img)(_p2##x,_n2##y,z,c), I[97] = (T)(img)(_p1##x,_n2##y,z,c), I[98] = (T)(img)(x,_n2##y,z,c), I[99] = (T)(img)(_n1##x,_n2##y,z,c), I[100] = (T)(img)(_n2##x,_n2##y,z,c), I[101] = (T)(img)(_n3##x,_n2##y,z,c), \ + I[102] = (T)(img)(_p2##x,_n3##y,z,c), I[103] = (T)(img)(_p1##x,_n3##y,z,c), I[104] = (T)(img)(x,_n3##y,z,c), I[105] = (T)(img)(_n1##x,_n3##y,z,c), I[106] = (T)(img)(_n2##x,_n3##y,z,c), I[107] = (T)(img)(_n3##x,_n3##y,z,c), \ + I[108] = (T)(img)(_p2##x,_p2##y,_n1##z,c), I[109] = (T)(img)(_p1##x,_p2##y,_n1##z,c), I[110] = (T)(img)(x,_p2##y,_n1##z,c), I[111] = (T)(img)(_n1##x,_p2##y,_n1##z,c), I[112] = (T)(img)(_n2##x,_p2##y,_n1##z,c), I[113] = (T)(img)(_n3##x,_p2##y,_n1##z,c), \ + I[114] = (T)(img)(_p2##x,_p1##y,_n1##z,c), I[115] = (T)(img)(_p1##x,_p1##y,_n1##z,c), I[116] = (T)(img)(x,_p1##y,_n1##z,c), I[117] = (T)(img)(_n1##x,_p1##y,_n1##z,c), I[118] = (T)(img)(_n2##x,_p1##y,_n1##z,c), I[119] = (T)(img)(_n3##x,_p1##y,_n1##z,c), \ + I[120] = (T)(img)(_p2##x,y,_n1##z,c), I[121] = (T)(img)(_p1##x,y,_n1##z,c), I[122] = (T)(img)(x,y,_n1##z,c), I[123] = (T)(img)(_n1##x,y,_n1##z,c), I[124] = (T)(img)(_n2##x,y,_n1##z,c), I[125] = (T)(img)(_n3##x,y,_n1##z,c), \ + I[126] = (T)(img)(_p2##x,_n1##y,_n1##z,c), I[127] = (T)(img)(_p1##x,_n1##y,_n1##z,c), I[128] = (T)(img)(x,_n1##y,_n1##z,c), I[129] = (T)(img)(_n1##x,_n1##y,_n1##z,c), I[130] = (T)(img)(_n2##x,_n1##y,_n1##z,c), I[131] = (T)(img)(_n3##x,_n1##y,_n1##z,c), \ + I[132] = (T)(img)(_p2##x,_n2##y,_n1##z,c), I[133] = (T)(img)(_p1##x,_n2##y,_n1##z,c), I[134] = (T)(img)(x,_n2##y,_n1##z,c), I[135] = (T)(img)(_n1##x,_n2##y,_n1##z,c), I[136] = (T)(img)(_n2##x,_n2##y,_n1##z,c), I[137] = (T)(img)(_n3##x,_n2##y,_n1##z,c), \ + I[138] = (T)(img)(_p2##x,_n3##y,_n1##z,c), I[139] = (T)(img)(_p1##x,_n3##y,_n1##z,c), I[140] = (T)(img)(x,_n3##y,_n1##z,c), I[141] = (T)(img)(_n1##x,_n3##y,_n1##z,c), I[142] = (T)(img)(_n2##x,_n3##y,_n1##z,c), I[143] = (T)(img)(_n3##x,_n3##y,_n1##z,c), \ + I[144] = (T)(img)(_p2##x,_p2##y,_n2##z,c), I[145] = (T)(img)(_p1##x,_p2##y,_n2##z,c), I[146] = (T)(img)(x,_p2##y,_n2##z,c), I[147] = (T)(img)(_n1##x,_p2##y,_n2##z,c), I[148] = (T)(img)(_n2##x,_p2##y,_n2##z,c), I[149] = (T)(img)(_n3##x,_p2##y,_n2##z,c), \ + I[150] = (T)(img)(_p2##x,_p1##y,_n2##z,c), I[151] = (T)(img)(_p1##x,_p1##y,_n2##z,c), I[152] = (T)(img)(x,_p1##y,_n2##z,c), I[153] = (T)(img)(_n1##x,_p1##y,_n2##z,c), I[154] = (T)(img)(_n2##x,_p1##y,_n2##z,c), I[155] = (T)(img)(_n3##x,_p1##y,_n2##z,c), \ + I[156] = (T)(img)(_p2##x,y,_n2##z,c), I[157] = (T)(img)(_p1##x,y,_n2##z,c), I[158] = (T)(img)(x,y,_n2##z,c), I[159] = (T)(img)(_n1##x,y,_n2##z,c), I[160] = (T)(img)(_n2##x,y,_n2##z,c), I[161] = (T)(img)(_n3##x,y,_n2##z,c), \ + I[162] = (T)(img)(_p2##x,_n1##y,_n2##z,c), I[163] = (T)(img)(_p1##x,_n1##y,_n2##z,c), I[164] = (T)(img)(x,_n1##y,_n2##z,c), I[165] = (T)(img)(_n1##x,_n1##y,_n2##z,c), I[166] = (T)(img)(_n2##x,_n1##y,_n2##z,c), I[167] = (T)(img)(_n3##x,_n1##y,_n2##z,c), \ + I[168] = (T)(img)(_p2##x,_n2##y,_n2##z,c), I[169] = (T)(img)(_p1##x,_n2##y,_n2##z,c), I[170] = (T)(img)(x,_n2##y,_n2##z,c), I[171] = (T)(img)(_n1##x,_n2##y,_n2##z,c), I[172] = (T)(img)(_n2##x,_n2##y,_n2##z,c), I[173] = (T)(img)(_n3##x,_n2##y,_n2##z,c), \ + I[174] = (T)(img)(_p2##x,_n3##y,_n2##z,c), I[175] = (T)(img)(_p1##x,_n3##y,_n2##z,c), I[176] = (T)(img)(x,_n3##y,_n2##z,c), I[177] = (T)(img)(_n1##x,_n3##y,_n2##z,c), I[178] = (T)(img)(_n2##x,_n3##y,_n2##z,c), I[179] = (T)(img)(_n3##x,_n3##y,_n2##z,c), \ + I[180] = (T)(img)(_p2##x,_p2##y,_n3##z,c), I[181] = (T)(img)(_p1##x,_p2##y,_n3##z,c), I[182] = (T)(img)(x,_p2##y,_n3##z,c), I[183] = (T)(img)(_n1##x,_p2##y,_n3##z,c), I[184] = (T)(img)(_n2##x,_p2##y,_n3##z,c), I[185] = (T)(img)(_n3##x,_p2##y,_n3##z,c), \ + I[186] = (T)(img)(_p2##x,_p1##y,_n3##z,c), I[187] = (T)(img)(_p1##x,_p1##y,_n3##z,c), I[188] = (T)(img)(x,_p1##y,_n3##z,c), I[189] = (T)(img)(_n1##x,_p1##y,_n3##z,c), I[190] = (T)(img)(_n2##x,_p1##y,_n3##z,c), I[191] = (T)(img)(_n3##x,_p1##y,_n3##z,c), \ + I[192] = (T)(img)(_p2##x,y,_n3##z,c), I[193] = (T)(img)(_p1##x,y,_n3##z,c), I[194] = (T)(img)(x,y,_n3##z,c), I[195] = (T)(img)(_n1##x,y,_n3##z,c), I[196] = (T)(img)(_n2##x,y,_n3##z,c), I[197] = (T)(img)(_n3##x,y,_n3##z,c), \ + I[198] = (T)(img)(_p2##x,_n1##y,_n3##z,c), I[199] = (T)(img)(_p1##x,_n1##y,_n3##z,c), I[200] = (T)(img)(x,_n1##y,_n3##z,c), I[201] = (T)(img)(_n1##x,_n1##y,_n3##z,c), I[202] = (T)(img)(_n2##x,_n1##y,_n3##z,c), I[203] = (T)(img)(_n3##x,_n1##y,_n3##z,c), \ + I[204] = (T)(img)(_p2##x,_n2##y,_n3##z,c), I[205] = (T)(img)(_p1##x,_n2##y,_n3##z,c), I[206] = (T)(img)(x,_n2##y,_n3##z,c), I[207] = (T)(img)(_n1##x,_n2##y,_n3##z,c), I[208] = (T)(img)(_n2##x,_n2##y,_n3##z,c), I[209] = (T)(img)(_n3##x,_n2##y,_n3##z,c), \ + I[210] = (T)(img)(_p2##x,_n3##y,_n3##z,c), I[211] = (T)(img)(_p1##x,_n3##y,_n3##z,c), I[212] = (T)(img)(x,_n3##y,_n3##z,c), I[213] = (T)(img)(_n1##x,_n3##y,_n3##z,c), I[214] = (T)(img)(_n2##x,_n3##y,_n3##z,c), I[215] = (T)(img)(_n3##x,_n3##y,_n3##z,c); + +// Define 7x7x7 loop macros +//---------------------------- +#define cimg_for7x7x7(img,x,y,z,c,I,T) \ + cimg_for7((img)._depth,z) cimg_for7((img)._height,y) for (int x = 0, \ + _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = (T)(img)(0,_p3##y,_p3##z,c)), \ + (I[7] = I[8] = I[9] = I[10] = (T)(img)(0,_p2##y,_p3##z,c)), \ + (I[14] = I[15] = I[16] = I[17] = (T)(img)(0,_p1##y,_p3##z,c)), \ + (I[21] = I[22] = I[23] = I[24] = (T)(img)(0,y,_p3##z,c)), \ + (I[28] = I[29] = I[30] = I[31] = (T)(img)(0,_n1##y,_p3##z,c)), \ + (I[35] = I[36] = I[37] = I[38] = (T)(img)(0,_n2##y,_p3##z,c)), \ + (I[42] = I[43] = I[44] = I[45] = (T)(img)(0,_n3##y,_p3##z,c)), \ + (I[49] = I[50] = I[51] = I[52] = (T)(img)(0,_p3##y,_p2##z,c)), \ + (I[56] = I[57] = I[58] = I[59] = (T)(img)(0,_p2##y,_p2##z,c)), \ + (I[63] = I[64] = I[65] = I[66] = (T)(img)(0,_p1##y,_p2##z,c)), \ + (I[70] = I[71] = I[72] = I[73] = (T)(img)(0,y,_p2##z,c)), \ + (I[77] = I[78] = I[79] = I[80] = (T)(img)(0,_n1##y,_p2##z,c)), \ + (I[84] = I[85] = I[86] = I[87] = (T)(img)(0,_n2##y,_p2##z,c)), \ + (I[91] = I[92] = I[93] = I[94] = (T)(img)(0,_n3##y,_p2##z,c)), \ + (I[98] = I[99] = I[100] = I[101] = (T)(img)(0,_p3##y,_p1##z,c)), \ + (I[105] = I[106] = I[107] = I[108] = (T)(img)(0,_p2##y,_p1##z,c)), \ + (I[112] = I[113] = I[114] = I[115] = (T)(img)(0,_p1##y,_p1##z,c)), \ + (I[119] = I[120] = I[121] = I[122] = (T)(img)(0,y,_p1##z,c)), \ + (I[126] = I[127] = I[128] = I[129] = (T)(img)(0,_n1##y,_p1##z,c)), \ + (I[133] = I[134] = I[135] = I[136] = (T)(img)(0,_n2##y,_p1##z,c)), \ + (I[140] = I[141] = I[142] = I[143] = (T)(img)(0,_n3##y,_p1##z,c)), \ + (I[147] = I[148] = I[149] = I[150] = (T)(img)(0,_p3##y,z,c)), \ + (I[154] = I[155] = I[156] = I[157] = (T)(img)(0,_p2##y,z,c)), \ + (I[161] = I[162] = I[163] = I[164] = (T)(img)(0,_p1##y,z,c)), \ + (I[168] = I[169] = I[170] = I[171] = (T)(img)(0,y,z,c)), \ + (I[175] = I[176] = I[177] = I[178] = (T)(img)(0,_n1##y,z,c)), \ + (I[182] = I[183] = I[184] = I[185] = (T)(img)(0,_n2##y,z,c)), \ + (I[189] = I[190] = I[191] = I[192] = (T)(img)(0,_n3##y,z,c)), \ + (I[196] = I[197] = I[198] = I[199] = (T)(img)(0,_p3##y,_n1##z,c)), \ + (I[203] = I[204] = I[205] = I[206] = (T)(img)(0,_p2##y,_n1##z,c)), \ + (I[210] = I[211] = I[212] = I[213] = (T)(img)(0,_p1##y,_n1##z,c)), \ + (I[217] = I[218] = I[219] = I[220] = (T)(img)(0,y,_n1##z,c)), \ + (I[224] = I[225] = I[226] = I[227] = (T)(img)(0,_n1##y,_n1##z,c)), \ + (I[231] = I[232] = I[233] = I[234] = (T)(img)(0,_n2##y,_n1##z,c)), \ + (I[238] = I[239] = I[240] = I[241] = (T)(img)(0,_n3##y,_n1##z,c)), \ + (I[245] = I[246] = I[247] = I[248] = (T)(img)(0,_p3##y,_n2##z,c)), \ + (I[252] = I[253] = I[254] = I[255] = (T)(img)(0,_p2##y,_n2##z,c)), \ + (I[259] = I[260] = I[261] = I[262] = (T)(img)(0,_p1##y,_n2##z,c)), \ + (I[266] = I[267] = I[268] = I[269] = (T)(img)(0,y,_n2##z,c)), \ + (I[273] = I[274] = I[275] = I[276] = (T)(img)(0,_n1##y,_n2##z,c)), \ + (I[280] = I[281] = I[282] = I[283] = (T)(img)(0,_n2##y,_n2##z,c)), \ + (I[287] = I[288] = I[289] = I[290] = (T)(img)(0,_n3##y,_n2##z,c)), \ + (I[294] = I[295] = I[296] = I[297] = (T)(img)(0,_p3##y,_n3##z,c)), \ + (I[301] = I[302] = I[303] = I[304] = (T)(img)(0,_p2##y,_n3##z,c)), \ + (I[308] = I[309] = I[310] = I[311] = (T)(img)(0,_p1##y,_n3##z,c)), \ + (I[315] = I[316] = I[317] = I[318] = (T)(img)(0,y,_n3##z,c)), \ + (I[322] = I[323] = I[324] = I[325] = (T)(img)(0,_n1##y,_n3##z,c)), \ + (I[329] = I[330] = I[331] = I[332] = (T)(img)(0,_n2##y,_n3##z,c)), \ + (I[336] = I[337] = I[338] = I[339] = (T)(img)(0,_n3##y,_n3##z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,_p3##z,c)), \ + (I[11] = (T)(img)(_n1##x,_p2##y,_p3##z,c)), \ + (I[18] = (T)(img)(_n1##x,_p1##y,_p3##z,c)), \ + (I[25] = (T)(img)(_n1##x,y,_p3##z,c)), \ + (I[32] = (T)(img)(_n1##x,_n1##y,_p3##z,c)), \ + (I[39] = (T)(img)(_n1##x,_n2##y,_p3##z,c)), \ + (I[46] = (T)(img)(_n1##x,_n3##y,_p3##z,c)), \ + (I[53] = (T)(img)(_n1##x,_p3##y,_p2##z,c)), \ + (I[60] = (T)(img)(_n1##x,_p2##y,_p2##z,c)), \ + (I[67] = (T)(img)(_n1##x,_p1##y,_p2##z,c)), \ + (I[74] = (T)(img)(_n1##x,y,_p2##z,c)), \ + (I[81] = (T)(img)(_n1##x,_n1##y,_p2##z,c)), \ + (I[88] = (T)(img)(_n1##x,_n2##y,_p2##z,c)), \ + (I[95] = (T)(img)(_n1##x,_n3##y,_p2##z,c)), \ + (I[102] = (T)(img)(_n1##x,_p3##y,_p1##z,c)), \ + (I[109] = (T)(img)(_n1##x,_p2##y,_p1##z,c)), \ + (I[116] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[123] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[130] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[137] = (T)(img)(_n1##x,_n2##y,_p1##z,c)), \ + (I[144] = (T)(img)(_n1##x,_n3##y,_p1##z,c)), \ + (I[151] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[158] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[165] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[172] = (T)(img)(_n1##x,y,z,c)), \ + (I[179] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[186] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[193] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[200] = (T)(img)(_n1##x,_p3##y,_n1##z,c)), \ + (I[207] = (T)(img)(_n1##x,_p2##y,_n1##z,c)), \ + (I[214] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[221] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[228] = (T)(img)(_n1##x,_n1##y,_n1##z,c)), \ + (I[235] = (T)(img)(_n1##x,_n2##y,_n1##z,c)), \ + (I[242] = (T)(img)(_n1##x,_n3##y,_n1##z,c)), \ + (I[249] = (T)(img)(_n1##x,_p3##y,_n2##z,c)), \ + (I[256] = (T)(img)(_n1##x,_p2##y,_n2##z,c)), \ + (I[263] = (T)(img)(_n1##x,_p1##y,_n2##z,c)), \ + (I[270] = (T)(img)(_n1##x,y,_n2##z,c)), \ + (I[277] = (T)(img)(_n1##x,_n1##y,_n2##z,c)), \ + (I[284] = (T)(img)(_n1##x,_n2##y,_n2##z,c)), \ + (I[291] = (T)(img)(_n1##x,_n3##y,_n2##z,c)), \ + (I[298] = (T)(img)(_n1##x,_p3##y,_n3##z,c)), \ + (I[305] = (T)(img)(_n1##x,_p2##y,_n3##z,c)), \ + (I[312] = (T)(img)(_n1##x,_p1##y,_n3##z,c)), \ + (I[319] = (T)(img)(_n1##x,y,_n3##z,c)), \ + (I[326] = (T)(img)(_n1##x,_n1##y,_n3##z,c)), \ + (I[333] = (T)(img)(_n1##x,_n2##y,_n3##z,c)), \ + (I[340] = (T)(img)(_n1##x,_n3##y,_n3##z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,_p3##z,c)), \ + (I[12] = (T)(img)(_n2##x,_p2##y,_p3##z,c)), \ + (I[19] = (T)(img)(_n2##x,_p1##y,_p3##z,c)), \ + (I[26] = (T)(img)(_n2##x,y,_p3##z,c)), \ + (I[33] = (T)(img)(_n2##x,_n1##y,_p3##z,c)), \ + (I[40] = (T)(img)(_n2##x,_n2##y,_p3##z,c)), \ + (I[47] = (T)(img)(_n2##x,_n3##y,_p3##z,c)), \ + (I[54] = (T)(img)(_n2##x,_p3##y,_p2##z,c)), \ + (I[61] = (T)(img)(_n2##x,_p2##y,_p2##z,c)), \ + (I[68] = (T)(img)(_n2##x,_p1##y,_p2##z,c)), \ + (I[75] = (T)(img)(_n2##x,y,_p2##z,c)), \ + (I[82] = (T)(img)(_n2##x,_n1##y,_p2##z,c)), \ + (I[89] = (T)(img)(_n2##x,_n2##y,_p2##z,c)), \ + (I[96] = (T)(img)(_n2##x,_n3##y,_p2##z,c)), \ + (I[103] = (T)(img)(_n2##x,_p3##y,_p1##z,c)), \ + (I[110] = (T)(img)(_n2##x,_p2##y,_p1##z,c)), \ + (I[117] = (T)(img)(_n2##x,_p1##y,_p1##z,c)), \ + (I[124] = (T)(img)(_n2##x,y,_p1##z,c)), \ + (I[131] = (T)(img)(_n2##x,_n1##y,_p1##z,c)), \ + (I[138] = (T)(img)(_n2##x,_n2##y,_p1##z,c)), \ + (I[145] = (T)(img)(_n2##x,_n3##y,_p1##z,c)), \ + (I[152] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[159] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[166] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[173] = (T)(img)(_n2##x,y,z,c)), \ + (I[180] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[187] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[194] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[201] = (T)(img)(_n2##x,_p3##y,_n1##z,c)), \ + (I[208] = (T)(img)(_n2##x,_p2##y,_n1##z,c)), \ + (I[215] = (T)(img)(_n2##x,_p1##y,_n1##z,c)), \ + (I[222] = (T)(img)(_n2##x,y,_n1##z,c)), \ + (I[229] = (T)(img)(_n2##x,_n1##y,_n1##z,c)), \ + (I[236] = (T)(img)(_n2##x,_n2##y,_n1##z,c)), \ + (I[243] = (T)(img)(_n2##x,_n3##y,_n1##z,c)), \ + (I[250] = (T)(img)(_n2##x,_p3##y,_n2##z,c)), \ + (I[257] = (T)(img)(_n2##x,_p2##y,_n2##z,c)), \ + (I[264] = (T)(img)(_n2##x,_p1##y,_n2##z,c)), \ + (I[271] = (T)(img)(_n2##x,y,_n2##z,c)), \ + (I[278] = (T)(img)(_n2##x,_n1##y,_n2##z,c)), \ + (I[285] = (T)(img)(_n2##x,_n2##y,_n2##z,c)), \ + (I[292] = (T)(img)(_n2##x,_n3##y,_n2##z,c)), \ + (I[299] = (T)(img)(_n2##x,_p3##y,_n3##z,c)), \ + (I[306] = (T)(img)(_n2##x,_p2##y,_n3##z,c)), \ + (I[313] = (T)(img)(_n2##x,_p1##y,_n3##z,c)), \ + (I[320] = (T)(img)(_n2##x,y,_n3##z,c)), \ + (I[327] = (T)(img)(_n2##x,_n1##y,_n3##z,c)), \ + (I[334] = (T)(img)(_n2##x,_n2##y,_n3##z,c)), \ + (I[341] = (T)(img)(_n2##x,_n3##y,_n3##z,c)), \ + 3>=((img)._width)?(img).width() - 1:3); \ + (_n3##x<(img).width() && ( \ + (I[6] = (T)(img)(_n3##x,_p3##y,_p3##z,c)), \ + (I[13] = (T)(img)(_n3##x,_p2##y,_p3##z,c)), \ + (I[20] = (T)(img)(_n3##x,_p1##y,_p3##z,c)), \ + (I[27] = (T)(img)(_n3##x,y,_p3##z,c)), \ + (I[34] = (T)(img)(_n3##x,_n1##y,_p3##z,c)), \ + (I[41] = (T)(img)(_n3##x,_n2##y,_p3##z,c)), \ + (I[48] = (T)(img)(_n3##x,_n3##y,_p3##z,c)), \ + (I[55] = (T)(img)(_n3##x,_p3##y,_p2##z,c)), \ + (I[62] = (T)(img)(_n3##x,_p2##y,_p2##z,c)), \ + (I[69] = (T)(img)(_n3##x,_p1##y,_p2##z,c)), \ + (I[76] = (T)(img)(_n3##x,y,_p2##z,c)), \ + (I[83] = (T)(img)(_n3##x,_n1##y,_p2##z,c)), \ + (I[90] = (T)(img)(_n3##x,_n2##y,_p2##z,c)), \ + (I[97] = (T)(img)(_n3##x,_n3##y,_p2##z,c)), \ + (I[104] = (T)(img)(_n3##x,_p3##y,_p1##z,c)), \ + (I[111] = (T)(img)(_n3##x,_p2##y,_p1##z,c)), \ + (I[118] = (T)(img)(_n3##x,_p1##y,_p1##z,c)), \ + (I[125] = (T)(img)(_n3##x,y,_p1##z,c)), \ + (I[132] = (T)(img)(_n3##x,_n1##y,_p1##z,c)), \ + (I[139] = (T)(img)(_n3##x,_n2##y,_p1##z,c)), \ + (I[146] = (T)(img)(_n3##x,_n3##y,_p1##z,c)), \ + (I[153] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[160] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[167] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[174] = (T)(img)(_n3##x,y,z,c)), \ + (I[181] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[188] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[195] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[202] = (T)(img)(_n3##x,_p3##y,_n1##z,c)), \ + (I[209] = (T)(img)(_n3##x,_p2##y,_n1##z,c)), \ + (I[216] = (T)(img)(_n3##x,_p1##y,_n1##z,c)), \ + (I[223] = (T)(img)(_n3##x,y,_n1##z,c)), \ + (I[230] = (T)(img)(_n3##x,_n1##y,_n1##z,c)), \ + (I[237] = (T)(img)(_n3##x,_n2##y,_n1##z,c)), \ + (I[244] = (T)(img)(_n3##x,_n3##y,_n1##z,c)), \ + (I[251] = (T)(img)(_n3##x,_p3##y,_n2##z,c)), \ + (I[258] = (T)(img)(_n3##x,_p2##y,_n2##z,c)), \ + (I[265] = (T)(img)(_n3##x,_p1##y,_n2##z,c)), \ + (I[272] = (T)(img)(_n3##x,y,_n2##z,c)), \ + (I[279] = (T)(img)(_n3##x,_n1##y,_n2##z,c)), \ + (I[286] = (T)(img)(_n3##x,_n2##y,_n2##z,c)), \ + (I[293] = (T)(img)(_n3##x,_n3##y,_n2##z,c)), \ + (I[300] = (T)(img)(_n3##x,_p3##y,_n3##z,c)), \ + (I[307] = (T)(img)(_n3##x,_p2##y,_n3##z,c)), \ + (I[314] = (T)(img)(_n3##x,_p1##y,_n3##z,c)), \ + (I[321] = (T)(img)(_n3##x,y,_n3##z,c)), \ + (I[328] = (T)(img)(_n3##x,_n1##y,_n3##z,c)), \ + (I[335] = (T)(img)(_n3##x,_n2##y,_n3##z,c)), \ + (I[342] = (T)(img)(_n3##x,_n3##y,_n3##z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], \ + I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], \ + I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], \ + I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], \ + I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], \ + I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], \ + I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], \ + I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], \ + I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], \ + I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], \ + I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], \ + I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], \ + I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], \ + I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], \ + I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], \ + I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], \ + I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], \ + I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], \ + I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], \ + I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], \ + I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], \ + I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], \ + I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], \ + I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], \ + I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], \ + I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], \ + I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], \ + I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], \ + I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], \ + I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], \ + I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], \ + I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], \ + I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], \ + I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], \ + I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], \ + I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], \ + I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], \ + I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], \ + I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], \ + I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], \ + I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], \ + I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], \ + I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], \ + I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_for_in7x7x7(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \ + cimg_for_in7((img)._depth,z0,z1,z) cimg_for_in7((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = (int)( \ + (I[0] = (T)(img)(_p3##x,_p3##y,_p3##z,c)), \ + (I[7] = (T)(img)(_p3##x,_p2##y,_p3##z,c)), \ + (I[14] = (T)(img)(_p3##x,_p1##y,_p3##z,c)), \ + (I[21] = (T)(img)(_p3##x,y,_p3##z,c)), \ + (I[28] = (T)(img)(_p3##x,_n1##y,_p3##z,c)), \ + (I[35] = (T)(img)(_p3##x,_n2##y,_p3##z,c)), \ + (I[42] = (T)(img)(_p3##x,_n3##y,_p3##z,c)), \ + (I[49] = (T)(img)(_p3##x,_p3##y,_p2##z,c)), \ + (I[56] = (T)(img)(_p3##x,_p2##y,_p2##z,c)), \ + (I[63] = (T)(img)(_p3##x,_p1##y,_p2##z,c)), \ + (I[70] = (T)(img)(_p3##x,y,_p2##z,c)), \ + (I[77] = (T)(img)(_p3##x,_n1##y,_p2##z,c)), \ + (I[84] = (T)(img)(_p3##x,_n2##y,_p2##z,c)), \ + (I[91] = (T)(img)(_p3##x,_n3##y,_p2##z,c)), \ + (I[98] = (T)(img)(_p3##x,_p3##y,_p1##z,c)), \ + (I[105] = (T)(img)(_p3##x,_p2##y,_p1##z,c)), \ + (I[112] = (T)(img)(_p3##x,_p1##y,_p1##z,c)), \ + (I[119] = (T)(img)(_p3##x,y,_p1##z,c)), \ + (I[126] = (T)(img)(_p3##x,_n1##y,_p1##z,c)), \ + (I[133] = (T)(img)(_p3##x,_n2##y,_p1##z,c)), \ + (I[140] = (T)(img)(_p3##x,_n3##y,_p1##z,c)), \ + (I[147] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[154] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[161] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[168] = (T)(img)(_p3##x,y,z,c)), \ + (I[175] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[182] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[189] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[196] = (T)(img)(_p3##x,_p3##y,_n1##z,c)), \ + (I[203] = (T)(img)(_p3##x,_p2##y,_n1##z,c)), \ + (I[210] = (T)(img)(_p3##x,_p1##y,_n1##z,c)), \ + (I[217] = (T)(img)(_p3##x,y,_n1##z,c)), \ + (I[224] = (T)(img)(_p3##x,_n1##y,_n1##z,c)), \ + (I[231] = (T)(img)(_p3##x,_n2##y,_n1##z,c)), \ + (I[238] = (T)(img)(_p3##x,_n3##y,_n1##z,c)), \ + (I[245] = (T)(img)(_p3##x,_p3##y,_n2##z,c)), \ + (I[252] = (T)(img)(_p3##x,_p2##y,_n2##z,c)), \ + (I[259] = (T)(img)(_p3##x,_p1##y,_n2##z,c)), \ + (I[266] = (T)(img)(_p3##x,y,_n2##z,c)), \ + (I[273] = (T)(img)(_p3##x,_n1##y,_n2##z,c)), \ + (I[280] = (T)(img)(_p3##x,_n2##y,_n2##z,c)), \ + (I[287] = (T)(img)(_p3##x,_n3##y,_n2##z,c)), \ + (I[294] = (T)(img)(_p3##x,_p3##y,_n3##z,c)), \ + (I[301] = (T)(img)(_p3##x,_p2##y,_n3##z,c)), \ + (I[308] = (T)(img)(_p3##x,_p1##y,_n3##z,c)), \ + (I[315] = (T)(img)(_p3##x,y,_n3##z,c)), \ + (I[322] = (T)(img)(_p3##x,_n1##y,_n3##z,c)), \ + (I[329] = (T)(img)(_p3##x,_n2##y,_n3##z,c)), \ + (I[336] = (T)(img)(_p3##x,_n3##y,_n3##z,c)), \ + (I[1] = (T)(img)(_p2##x,_p3##y,_p3##z,c)), \ + (I[8] = (T)(img)(_p2##x,_p2##y,_p3##z,c)), \ + (I[15] = (T)(img)(_p2##x,_p1##y,_p3##z,c)), \ + (I[22] = (T)(img)(_p2##x,y,_p3##z,c)), \ + (I[29] = (T)(img)(_p2##x,_n1##y,_p3##z,c)), \ + (I[36] = (T)(img)(_p2##x,_n2##y,_p3##z,c)), \ + (I[43] = (T)(img)(_p2##x,_n3##y,_p3##z,c)), \ + (I[50] = (T)(img)(_p2##x,_p3##y,_p2##z,c)), \ + (I[57] = (T)(img)(_p2##x,_p2##y,_p2##z,c)), \ + (I[64] = (T)(img)(_p2##x,_p1##y,_p2##z,c)), \ + (I[71] = (T)(img)(_p2##x,y,_p2##z,c)), \ + (I[78] = (T)(img)(_p2##x,_n1##y,_p2##z,c)), \ + (I[85] = (T)(img)(_p2##x,_n2##y,_p2##z,c)), \ + (I[92] = (T)(img)(_p2##x,_n3##y,_p2##z,c)), \ + (I[99] = (T)(img)(_p2##x,_p3##y,_p1##z,c)), \ + (I[106] = (T)(img)(_p2##x,_p2##y,_p1##z,c)), \ + (I[113] = (T)(img)(_p2##x,_p1##y,_p1##z,c)), \ + (I[120] = (T)(img)(_p2##x,y,_p1##z,c)), \ + (I[127] = (T)(img)(_p2##x,_n1##y,_p1##z,c)), \ + (I[134] = (T)(img)(_p2##x,_n2##y,_p1##z,c)), \ + (I[141] = (T)(img)(_p2##x,_n3##y,_p1##z,c)), \ + (I[148] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[155] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[162] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[169] = (T)(img)(_p2##x,y,z,c)), \ + (I[176] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[183] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[190] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[197] = (T)(img)(_p2##x,_p3##y,_n1##z,c)), \ + (I[204] = (T)(img)(_p2##x,_p2##y,_n1##z,c)), \ + (I[211] = (T)(img)(_p2##x,_p1##y,_n1##z,c)), \ + (I[218] = (T)(img)(_p2##x,y,_n1##z,c)), \ + (I[225] = (T)(img)(_p2##x,_n1##y,_n1##z,c)), \ + (I[232] = (T)(img)(_p2##x,_n2##y,_n1##z,c)), \ + (I[239] = (T)(img)(_p2##x,_n3##y,_n1##z,c)), \ + (I[246] = (T)(img)(_p2##x,_p3##y,_n2##z,c)), \ + (I[253] = (T)(img)(_p2##x,_p2##y,_n2##z,c)), \ + (I[260] = (T)(img)(_p2##x,_p1##y,_n2##z,c)), \ + (I[267] = (T)(img)(_p2##x,y,_n2##z,c)), \ + (I[274] = (T)(img)(_p2##x,_n1##y,_n2##z,c)), \ + (I[281] = (T)(img)(_p2##x,_n2##y,_n2##z,c)), \ + (I[288] = (T)(img)(_p2##x,_n3##y,_n2##z,c)), \ + (I[295] = (T)(img)(_p2##x,_p3##y,_n3##z,c)), \ + (I[302] = (T)(img)(_p2##x,_p2##y,_n3##z,c)), \ + (I[309] = (T)(img)(_p2##x,_p1##y,_n3##z,c)), \ + (I[316] = (T)(img)(_p2##x,y,_n3##z,c)), \ + (I[323] = (T)(img)(_p2##x,_n1##y,_n3##z,c)), \ + (I[330] = (T)(img)(_p2##x,_n2##y,_n3##z,c)), \ + (I[337] = (T)(img)(_p2##x,_n3##y,_n3##z,c)), \ + (I[2] = (T)(img)(_p1##x,_p3##y,_p3##z,c)), \ + (I[9] = (T)(img)(_p1##x,_p2##y,_p3##z,c)), \ + (I[16] = (T)(img)(_p1##x,_p1##y,_p3##z,c)), \ + (I[23] = (T)(img)(_p1##x,y,_p3##z,c)), \ + (I[30] = (T)(img)(_p1##x,_n1##y,_p3##z,c)), \ + (I[37] = (T)(img)(_p1##x,_n2##y,_p3##z,c)), \ + (I[44] = (T)(img)(_p1##x,_n3##y,_p3##z,c)), \ + (I[51] = (T)(img)(_p1##x,_p3##y,_p2##z,c)), \ + (I[58] = (T)(img)(_p1##x,_p2##y,_p2##z,c)), \ + (I[65] = (T)(img)(_p1##x,_p1##y,_p2##z,c)), \ + (I[72] = (T)(img)(_p1##x,y,_p2##z,c)), \ + (I[79] = (T)(img)(_p1##x,_n1##y,_p2##z,c)), \ + (I[86] = (T)(img)(_p1##x,_n2##y,_p2##z,c)), \ + (I[93] = (T)(img)(_p1##x,_n3##y,_p2##z,c)), \ + (I[100] = (T)(img)(_p1##x,_p3##y,_p1##z,c)), \ + (I[107] = (T)(img)(_p1##x,_p2##y,_p1##z,c)), \ + (I[114] = (T)(img)(_p1##x,_p1##y,_p1##z,c)), \ + (I[121] = (T)(img)(_p1##x,y,_p1##z,c)), \ + (I[128] = (T)(img)(_p1##x,_n1##y,_p1##z,c)), \ + (I[135] = (T)(img)(_p1##x,_n2##y,_p1##z,c)), \ + (I[142] = (T)(img)(_p1##x,_n3##y,_p1##z,c)), \ + (I[149] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[156] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[163] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[170] = (T)(img)(_p1##x,y,z,c)), \ + (I[177] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[184] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[191] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[198] = (T)(img)(_p1##x,_p3##y,_n1##z,c)), \ + (I[205] = (T)(img)(_p1##x,_p2##y,_n1##z,c)), \ + (I[212] = (T)(img)(_p1##x,_p1##y,_n1##z,c)), \ + (I[219] = (T)(img)(_p1##x,y,_n1##z,c)), \ + (I[226] = (T)(img)(_p1##x,_n1##y,_n1##z,c)), \ + (I[233] = (T)(img)(_p1##x,_n2##y,_n1##z,c)), \ + (I[240] = (T)(img)(_p1##x,_n3##y,_n1##z,c)), \ + (I[247] = (T)(img)(_p1##x,_p3##y,_n2##z,c)), \ + (I[254] = (T)(img)(_p1##x,_p2##y,_n2##z,c)), \ + (I[261] = (T)(img)(_p1##x,_p1##y,_n2##z,c)), \ + (I[268] = (T)(img)(_p1##x,y,_n2##z,c)), \ + (I[275] = (T)(img)(_p1##x,_n1##y,_n2##z,c)), \ + (I[282] = (T)(img)(_p1##x,_n2##y,_n2##z,c)), \ + (I[289] = (T)(img)(_p1##x,_n3##y,_n2##z,c)), \ + (I[296] = (T)(img)(_p1##x,_p3##y,_n3##z,c)), \ + (I[303] = (T)(img)(_p1##x,_p2##y,_n3##z,c)), \ + (I[310] = (T)(img)(_p1##x,_p1##y,_n3##z,c)), \ + (I[317] = (T)(img)(_p1##x,y,_n3##z,c)), \ + (I[324] = (T)(img)(_p1##x,_n1##y,_n3##z,c)), \ + (I[331] = (T)(img)(_p1##x,_n2##y,_n3##z,c)), \ + (I[338] = (T)(img)(_p1##x,_n3##y,_n3##z,c)), \ + (I[3] = (T)(img)(x,_p3##y,_p3##z,c)), \ + (I[10] = (T)(img)(x,_p2##y,_p3##z,c)), \ + (I[17] = (T)(img)(x,_p1##y,_p3##z,c)), \ + (I[24] = (T)(img)(x,y,_p3##z,c)), \ + (I[31] = (T)(img)(x,_n1##y,_p3##z,c)), \ + (I[38] = (T)(img)(x,_n2##y,_p3##z,c)), \ + (I[45] = (T)(img)(x,_n3##y,_p3##z,c)), \ + (I[52] = (T)(img)(x,_p3##y,_p2##z,c)), \ + (I[59] = (T)(img)(x,_p2##y,_p2##z,c)), \ + (I[66] = (T)(img)(x,_p1##y,_p2##z,c)), \ + (I[73] = (T)(img)(x,y,_p2##z,c)), \ + (I[80] = (T)(img)(x,_n1##y,_p2##z,c)), \ + (I[87] = (T)(img)(x,_n2##y,_p2##z,c)), \ + (I[94] = (T)(img)(x,_n3##y,_p2##z,c)), \ + (I[101] = (T)(img)(x,_p3##y,_p1##z,c)), \ + (I[108] = (T)(img)(x,_p2##y,_p1##z,c)), \ + (I[115] = (T)(img)(x,_p1##y,_p1##z,c)), \ + (I[122] = (T)(img)(x,y,_p1##z,c)), \ + (I[129] = (T)(img)(x,_n1##y,_p1##z,c)), \ + (I[136] = (T)(img)(x,_n2##y,_p1##z,c)), \ + (I[143] = (T)(img)(x,_n3##y,_p1##z,c)), \ + (I[150] = (T)(img)(x,_p3##y,z,c)), \ + (I[157] = (T)(img)(x,_p2##y,z,c)), \ + (I[164] = (T)(img)(x,_p1##y,z,c)), \ + (I[171] = (T)(img)(x,y,z,c)), \ + (I[178] = (T)(img)(x,_n1##y,z,c)), \ + (I[185] = (T)(img)(x,_n2##y,z,c)), \ + (I[192] = (T)(img)(x,_n3##y,z,c)), \ + (I[199] = (T)(img)(x,_p3##y,_n1##z,c)), \ + (I[206] = (T)(img)(x,_p2##y,_n1##z,c)), \ + (I[213] = (T)(img)(x,_p1##y,_n1##z,c)), \ + (I[220] = (T)(img)(x,y,_n1##z,c)), \ + (I[227] = (T)(img)(x,_n1##y,_n1##z,c)), \ + (I[234] = (T)(img)(x,_n2##y,_n1##z,c)), \ + (I[241] = (T)(img)(x,_n3##y,_n1##z,c)), \ + (I[248] = (T)(img)(x,_p3##y,_n2##z,c)), \ + (I[255] = (T)(img)(x,_p2##y,_n2##z,c)), \ + (I[262] = (T)(img)(x,_p1##y,_n2##z,c)), \ + (I[269] = (T)(img)(x,y,_n2##z,c)), \ + (I[276] = (T)(img)(x,_n1##y,_n2##z,c)), \ + (I[283] = (T)(img)(x,_n2##y,_n2##z,c)), \ + (I[290] = (T)(img)(x,_n3##y,_n2##z,c)), \ + (I[297] = (T)(img)(x,_p3##y,_n3##z,c)), \ + (I[304] = (T)(img)(x,_p2##y,_n3##z,c)), \ + (I[311] = (T)(img)(x,_p1##y,_n3##z,c)), \ + (I[318] = (T)(img)(x,y,_n3##z,c)), \ + (I[325] = (T)(img)(x,_n1##y,_n3##z,c)), \ + (I[332] = (T)(img)(x,_n2##y,_n3##z,c)), \ + (I[339] = (T)(img)(x,_n3##y,_n3##z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,_p3##z,c)), \ + (I[11] = (T)(img)(_n1##x,_p2##y,_p3##z,c)), \ + (I[18] = (T)(img)(_n1##x,_p1##y,_p3##z,c)), \ + (I[25] = (T)(img)(_n1##x,y,_p3##z,c)), \ + (I[32] = (T)(img)(_n1##x,_n1##y,_p3##z,c)), \ + (I[39] = (T)(img)(_n1##x,_n2##y,_p3##z,c)), \ + (I[46] = (T)(img)(_n1##x,_n3##y,_p3##z,c)), \ + (I[53] = (T)(img)(_n1##x,_p3##y,_p2##z,c)), \ + (I[60] = (T)(img)(_n1##x,_p2##y,_p2##z,c)), \ + (I[67] = (T)(img)(_n1##x,_p1##y,_p2##z,c)), \ + (I[74] = (T)(img)(_n1##x,y,_p2##z,c)), \ + (I[81] = (T)(img)(_n1##x,_n1##y,_p2##z,c)), \ + (I[88] = (T)(img)(_n1##x,_n2##y,_p2##z,c)), \ + (I[95] = (T)(img)(_n1##x,_n3##y,_p2##z,c)), \ + (I[102] = (T)(img)(_n1##x,_p3##y,_p1##z,c)), \ + (I[109] = (T)(img)(_n1##x,_p2##y,_p1##z,c)), \ + (I[116] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[123] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[130] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[137] = (T)(img)(_n1##x,_n2##y,_p1##z,c)), \ + (I[144] = (T)(img)(_n1##x,_n3##y,_p1##z,c)), \ + (I[151] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[158] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[165] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[172] = (T)(img)(_n1##x,y,z,c)), \ + (I[179] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[186] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[193] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[200] = (T)(img)(_n1##x,_p3##y,_n1##z,c)), \ + (I[207] = (T)(img)(_n1##x,_p2##y,_n1##z,c)), \ + (I[214] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[221] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[228] = (T)(img)(_n1##x,_n1##y,_n1##z,c)), \ + (I[235] = (T)(img)(_n1##x,_n2##y,_n1##z,c)), \ + (I[242] = (T)(img)(_n1##x,_n3##y,_n1##z,c)), \ + (I[249] = (T)(img)(_n1##x,_p3##y,_n2##z,c)), \ + (I[256] = (T)(img)(_n1##x,_p2##y,_n2##z,c)), \ + (I[263] = (T)(img)(_n1##x,_p1##y,_n2##z,c)), \ + (I[270] = (T)(img)(_n1##x,y,_n2##z,c)), \ + (I[277] = (T)(img)(_n1##x,_n1##y,_n2##z,c)), \ + (I[284] = (T)(img)(_n1##x,_n2##y,_n2##z,c)), \ + (I[291] = (T)(img)(_n1##x,_n3##y,_n2##z,c)), \ + (I[298] = (T)(img)(_n1##x,_p3##y,_n3##z,c)), \ + (I[305] = (T)(img)(_n1##x,_p2##y,_n3##z,c)), \ + (I[312] = (T)(img)(_n1##x,_p1##y,_n3##z,c)), \ + (I[319] = (T)(img)(_n1##x,y,_n3##z,c)), \ + (I[326] = (T)(img)(_n1##x,_n1##y,_n3##z,c)), \ + (I[333] = (T)(img)(_n1##x,_n2##y,_n3##z,c)), \ + (I[340] = (T)(img)(_n1##x,_n3##y,_n3##z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,_p3##z,c)), \ + (I[12] = (T)(img)(_n2##x,_p2##y,_p3##z,c)), \ + (I[19] = (T)(img)(_n2##x,_p1##y,_p3##z,c)), \ + (I[26] = (T)(img)(_n2##x,y,_p3##z,c)), \ + (I[33] = (T)(img)(_n2##x,_n1##y,_p3##z,c)), \ + (I[40] = (T)(img)(_n2##x,_n2##y,_p3##z,c)), \ + (I[47] = (T)(img)(_n2##x,_n3##y,_p3##z,c)), \ + (I[54] = (T)(img)(_n2##x,_p3##y,_p2##z,c)), \ + (I[61] = (T)(img)(_n2##x,_p2##y,_p2##z,c)), \ + (I[68] = (T)(img)(_n2##x,_p1##y,_p2##z,c)), \ + (I[75] = (T)(img)(_n2##x,y,_p2##z,c)), \ + (I[82] = (T)(img)(_n2##x,_n1##y,_p2##z,c)), \ + (I[89] = (T)(img)(_n2##x,_n2##y,_p2##z,c)), \ + (I[96] = (T)(img)(_n2##x,_n3##y,_p2##z,c)), \ + (I[103] = (T)(img)(_n2##x,_p3##y,_p1##z,c)), \ + (I[110] = (T)(img)(_n2##x,_p2##y,_p1##z,c)), \ + (I[117] = (T)(img)(_n2##x,_p1##y,_p1##z,c)), \ + (I[124] = (T)(img)(_n2##x,y,_p1##z,c)), \ + (I[131] = (T)(img)(_n2##x,_n1##y,_p1##z,c)), \ + (I[138] = (T)(img)(_n2##x,_n2##y,_p1##z,c)), \ + (I[145] = (T)(img)(_n2##x,_n3##y,_p1##z,c)), \ + (I[152] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[159] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[166] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[173] = (T)(img)(_n2##x,y,z,c)), \ + (I[180] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[187] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[194] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[201] = (T)(img)(_n2##x,_p3##y,_n1##z,c)), \ + (I[208] = (T)(img)(_n2##x,_p2##y,_n1##z,c)), \ + (I[215] = (T)(img)(_n2##x,_p1##y,_n1##z,c)), \ + (I[222] = (T)(img)(_n2##x,y,_n1##z,c)), \ + (I[229] = (T)(img)(_n2##x,_n1##y,_n1##z,c)), \ + (I[236] = (T)(img)(_n2##x,_n2##y,_n1##z,c)), \ + (I[243] = (T)(img)(_n2##x,_n3##y,_n1##z,c)), \ + (I[250] = (T)(img)(_n2##x,_p3##y,_n2##z,c)), \ + (I[257] = (T)(img)(_n2##x,_p2##y,_n2##z,c)), \ + (I[264] = (T)(img)(_n2##x,_p1##y,_n2##z,c)), \ + (I[271] = (T)(img)(_n2##x,y,_n2##z,c)), \ + (I[278] = (T)(img)(_n2##x,_n1##y,_n2##z,c)), \ + (I[285] = (T)(img)(_n2##x,_n2##y,_n2##z,c)), \ + (I[292] = (T)(img)(_n2##x,_n3##y,_n2##z,c)), \ + (I[299] = (T)(img)(_n2##x,_p3##y,_n3##z,c)), \ + (I[306] = (T)(img)(_n2##x,_p2##y,_n3##z,c)), \ + (I[313] = (T)(img)(_n2##x,_p1##y,_n3##z,c)), \ + (I[320] = (T)(img)(_n2##x,y,_n3##z,c)), \ + (I[327] = (T)(img)(_n2##x,_n1##y,_n3##z,c)), \ + (I[334] = (T)(img)(_n2##x,_n2##y,_n3##z,c)), \ + (I[341] = (T)(img)(_n2##x,_n3##y,_n3##z,c)), \ + x + 3>=(img).width()?(img).width() - 1:x + 3); \ + x<=(int)(x1) && ((_n3##x<(img).width() && ( \ + (I[6] = (T)(img)(_n3##x,_p3##y,_p3##z,c)), \ + (I[13] = (T)(img)(_n3##x,_p2##y,_p3##z,c)), \ + (I[20] = (T)(img)(_n3##x,_p1##y,_p3##z,c)), \ + (I[27] = (T)(img)(_n3##x,y,_p3##z,c)), \ + (I[34] = (T)(img)(_n3##x,_n1##y,_p3##z,c)), \ + (I[41] = (T)(img)(_n3##x,_n2##y,_p3##z,c)), \ + (I[48] = (T)(img)(_n3##x,_n3##y,_p3##z,c)), \ + (I[55] = (T)(img)(_n3##x,_p3##y,_p2##z,c)), \ + (I[62] = (T)(img)(_n3##x,_p2##y,_p2##z,c)), \ + (I[69] = (T)(img)(_n3##x,_p1##y,_p2##z,c)), \ + (I[76] = (T)(img)(_n3##x,y,_p2##z,c)), \ + (I[83] = (T)(img)(_n3##x,_n1##y,_p2##z,c)), \ + (I[90] = (T)(img)(_n3##x,_n2##y,_p2##z,c)), \ + (I[97] = (T)(img)(_n3##x,_n3##y,_p2##z,c)), \ + (I[104] = (T)(img)(_n3##x,_p3##y,_p1##z,c)), \ + (I[111] = (T)(img)(_n3##x,_p2##y,_p1##z,c)), \ + (I[118] = (T)(img)(_n3##x,_p1##y,_p1##z,c)), \ + (I[125] = (T)(img)(_n3##x,y,_p1##z,c)), \ + (I[132] = (T)(img)(_n3##x,_n1##y,_p1##z,c)), \ + (I[139] = (T)(img)(_n3##x,_n2##y,_p1##z,c)), \ + (I[146] = (T)(img)(_n3##x,_n3##y,_p1##z,c)), \ + (I[153] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[160] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[167] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[174] = (T)(img)(_n3##x,y,z,c)), \ + (I[181] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[188] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[195] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[202] = (T)(img)(_n3##x,_p3##y,_n1##z,c)), \ + (I[209] = (T)(img)(_n3##x,_p2##y,_n1##z,c)), \ + (I[216] = (T)(img)(_n3##x,_p1##y,_n1##z,c)), \ + (I[223] = (T)(img)(_n3##x,y,_n1##z,c)), \ + (I[230] = (T)(img)(_n3##x,_n1##y,_n1##z,c)), \ + (I[237] = (T)(img)(_n3##x,_n2##y,_n1##z,c)), \ + (I[244] = (T)(img)(_n3##x,_n3##y,_n1##z,c)), \ + (I[251] = (T)(img)(_n3##x,_p3##y,_n2##z,c)), \ + (I[258] = (T)(img)(_n3##x,_p2##y,_n2##z,c)), \ + (I[265] = (T)(img)(_n3##x,_p1##y,_n2##z,c)), \ + (I[272] = (T)(img)(_n3##x,y,_n2##z,c)), \ + (I[279] = (T)(img)(_n3##x,_n1##y,_n2##z,c)), \ + (I[286] = (T)(img)(_n3##x,_n2##y,_n2##z,c)), \ + (I[293] = (T)(img)(_n3##x,_n3##y,_n2##z,c)), \ + (I[300] = (T)(img)(_n3##x,_p3##y,_n3##z,c)), \ + (I[307] = (T)(img)(_n3##x,_p2##y,_n3##z,c)), \ + (I[314] = (T)(img)(_n3##x,_p1##y,_n3##z,c)), \ + (I[321] = (T)(img)(_n3##x,y,_n3##z,c)), \ + (I[328] = (T)(img)(_n3##x,_n1##y,_n3##z,c)), \ + (I[335] = (T)(img)(_n3##x,_n2##y,_n3##z,c)), \ + (I[342] = (T)(img)(_n3##x,_n3##y,_n3##z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], \ + I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], \ + I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], \ + I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], \ + I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], \ + I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], \ + I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], \ + I[70] = I[71], I[71] = I[72], I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], \ + I[77] = I[78], I[78] = I[79], I[79] = I[80], I[80] = I[81], I[81] = I[82], I[82] = I[83], \ + I[84] = I[85], I[85] = I[86], I[86] = I[87], I[87] = I[88], I[88] = I[89], I[89] = I[90], \ + I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], I[95] = I[96], I[96] = I[97], \ + I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], I[103] = I[104], \ + I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], \ + I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], \ + I[119] = I[120], I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], \ + I[126] = I[127], I[127] = I[128], I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], \ + I[133] = I[134], I[134] = I[135], I[135] = I[136], I[136] = I[137], I[137] = I[138], I[138] = I[139], \ + I[140] = I[141], I[141] = I[142], I[142] = I[143], I[143] = I[144], I[144] = I[145], I[145] = I[146], \ + I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], I[151] = I[152], I[152] = I[153], \ + I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], I[159] = I[160], \ + I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], \ + I[175] = I[176], I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], \ + I[182] = I[183], I[183] = I[184], I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], \ + I[189] = I[190], I[190] = I[191], I[191] = I[192], I[192] = I[193], I[193] = I[194], I[194] = I[195], \ + I[196] = I[197], I[197] = I[198], I[198] = I[199], I[199] = I[200], I[200] = I[201], I[201] = I[202], \ + I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], I[207] = I[208], I[208] = I[209], \ + I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], I[215] = I[216], \ + I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], \ + I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], \ + I[231] = I[232], I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], \ + I[238] = I[239], I[239] = I[240], I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], \ + I[245] = I[246], I[246] = I[247], I[247] = I[248], I[248] = I[249], I[249] = I[250], I[250] = I[251], \ + I[252] = I[253], I[253] = I[254], I[254] = I[255], I[255] = I[256], I[256] = I[257], I[257] = I[258], \ + I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], I[263] = I[264], I[264] = I[265], \ + I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], I[271] = I[272], \ + I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], \ + I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], \ + I[287] = I[288], I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], \ + I[294] = I[295], I[295] = I[296], I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], \ + I[301] = I[302], I[302] = I[303], I[303] = I[304], I[304] = I[305], I[305] = I[306], I[306] = I[307], \ + I[308] = I[309], I[309] = I[310], I[310] = I[311], I[311] = I[312], I[312] = I[313], I[313] = I[314], \ + I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], I[319] = I[320], I[320] = I[321], \ + I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], I[327] = I[328], \ + I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], \ + I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_get7x7x7(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p3##x,_p3##y,_p3##z,c), I[1] = (T)(img)(_p2##x,_p3##y,_p3##z,c), I[2] = (T)(img)(_p1##x,_p3##y,_p3##z,c), I[3] = (T)(img)(x,_p3##y,_p3##z,c), I[4] = (T)(img)(_n1##x,_p3##y,_p3##z,c), I[5] = (T)(img)(_n2##x,_p3##y,_p3##z,c), I[6] = (T)(img)(_n3##x,_p3##y,_p3##z,c), \ + I[7] = (T)(img)(_p3##x,_p2##y,_p3##z,c), I[8] = (T)(img)(_p2##x,_p2##y,_p3##z,c), I[9] = (T)(img)(_p1##x,_p2##y,_p3##z,c), I[10] = (T)(img)(x,_p2##y,_p3##z,c), I[11] = (T)(img)(_n1##x,_p2##y,_p3##z,c), I[12] = (T)(img)(_n2##x,_p2##y,_p3##z,c), I[13] = (T)(img)(_n3##x,_p2##y,_p3##z,c), \ + I[14] = (T)(img)(_p3##x,_p1##y,_p3##z,c), I[15] = (T)(img)(_p2##x,_p1##y,_p3##z,c), I[16] = (T)(img)(_p1##x,_p1##y,_p3##z,c), I[17] = (T)(img)(x,_p1##y,_p3##z,c), I[18] = (T)(img)(_n1##x,_p1##y,_p3##z,c), I[19] = (T)(img)(_n2##x,_p1##y,_p3##z,c), I[20] = (T)(img)(_n3##x,_p1##y,_p3##z,c), \ + I[21] = (T)(img)(_p3##x,y,_p3##z,c), I[22] = (T)(img)(_p2##x,y,_p3##z,c), I[23] = (T)(img)(_p1##x,y,_p3##z,c), I[24] = (T)(img)(x,y,_p3##z,c), I[25] = (T)(img)(_n1##x,y,_p3##z,c), I[26] = (T)(img)(_n2##x,y,_p3##z,c), I[27] = (T)(img)(_n3##x,y,_p3##z,c), \ + I[28] = (T)(img)(_p3##x,_n1##y,_p3##z,c), I[29] = (T)(img)(_p2##x,_n1##y,_p3##z,c), I[30] = (T)(img)(_p1##x,_n1##y,_p3##z,c), I[31] = (T)(img)(x,_n1##y,_p3##z,c), I[32] = (T)(img)(_n1##x,_n1##y,_p3##z,c), I[33] = (T)(img)(_n2##x,_n1##y,_p3##z,c), I[34] = (T)(img)(_n3##x,_n1##y,_p3##z,c), \ + I[35] = (T)(img)(_p3##x,_n2##y,_p3##z,c), I[36] = (T)(img)(_p2##x,_n2##y,_p3##z,c), I[37] = (T)(img)(_p1##x,_n2##y,_p3##z,c), I[38] = (T)(img)(x,_n2##y,_p3##z,c), I[39] = (T)(img)(_n1##x,_n2##y,_p3##z,c), I[40] = (T)(img)(_n2##x,_n2##y,_p3##z,c), I[41] = (T)(img)(_n3##x,_n2##y,_p3##z,c), \ + I[42] = (T)(img)(_p3##x,_n3##y,_p3##z,c), I[43] = (T)(img)(_p2##x,_n3##y,_p3##z,c), I[44] = (T)(img)(_p1##x,_n3##y,_p3##z,c), I[45] = (T)(img)(x,_n3##y,_p3##z,c), I[46] = (T)(img)(_n1##x,_n3##y,_p3##z,c), I[47] = (T)(img)(_n2##x,_n3##y,_p3##z,c), I[48] = (T)(img)(_n3##x,_n3##y,_p3##z,c), \ + I[49] = (T)(img)(_p3##x,_p3##y,_p2##z,c), I[50] = (T)(img)(_p2##x,_p3##y,_p2##z,c), I[51] = (T)(img)(_p1##x,_p3##y,_p2##z,c), I[52] = (T)(img)(x,_p3##y,_p2##z,c), I[53] = (T)(img)(_n1##x,_p3##y,_p2##z,c), I[54] = (T)(img)(_n2##x,_p3##y,_p2##z,c), I[55] = (T)(img)(_n3##x,_p3##y,_p2##z,c), \ + I[56] = (T)(img)(_p3##x,_p2##y,_p2##z,c), I[57] = (T)(img)(_p2##x,_p2##y,_p2##z,c), I[58] = (T)(img)(_p1##x,_p2##y,_p2##z,c), I[59] = (T)(img)(x,_p2##y,_p2##z,c), I[60] = (T)(img)(_n1##x,_p2##y,_p2##z,c), I[61] = (T)(img)(_n2##x,_p2##y,_p2##z,c), I[62] = (T)(img)(_n3##x,_p2##y,_p2##z,c), \ + I[63] = (T)(img)(_p3##x,_p1##y,_p2##z,c), I[64] = (T)(img)(_p2##x,_p1##y,_p2##z,c), I[65] = (T)(img)(_p1##x,_p1##y,_p2##z,c), I[66] = (T)(img)(x,_p1##y,_p2##z,c), I[67] = (T)(img)(_n1##x,_p1##y,_p2##z,c), I[68] = (T)(img)(_n2##x,_p1##y,_p2##z,c), I[69] = (T)(img)(_n3##x,_p1##y,_p2##z,c), \ + I[70] = (T)(img)(_p3##x,y,_p2##z,c), I[71] = (T)(img)(_p2##x,y,_p2##z,c), I[72] = (T)(img)(_p1##x,y,_p2##z,c), I[73] = (T)(img)(x,y,_p2##z,c), I[74] = (T)(img)(_n1##x,y,_p2##z,c), I[75] = (T)(img)(_n2##x,y,_p2##z,c), I[76] = (T)(img)(_n3##x,y,_p2##z,c), \ + I[77] = (T)(img)(_p3##x,_n1##y,_p2##z,c), I[78] = (T)(img)(_p2##x,_n1##y,_p2##z,c), I[79] = (T)(img)(_p1##x,_n1##y,_p2##z,c), I[80] = (T)(img)(x,_n1##y,_p2##z,c), I[81] = (T)(img)(_n1##x,_n1##y,_p2##z,c), I[82] = (T)(img)(_n2##x,_n1##y,_p2##z,c), I[83] = (T)(img)(_n3##x,_n1##y,_p2##z,c), \ + I[84] = (T)(img)(_p3##x,_n2##y,_p2##z,c), I[85] = (T)(img)(_p2##x,_n2##y,_p2##z,c), I[86] = (T)(img)(_p1##x,_n2##y,_p2##z,c), I[87] = (T)(img)(x,_n2##y,_p2##z,c), I[88] = (T)(img)(_n1##x,_n2##y,_p2##z,c), I[89] = (T)(img)(_n2##x,_n2##y,_p2##z,c), I[90] = (T)(img)(_n3##x,_n2##y,_p2##z,c), \ + I[91] = (T)(img)(_p3##x,_n3##y,_p2##z,c), I[92] = (T)(img)(_p2##x,_n3##y,_p2##z,c), I[93] = (T)(img)(_p1##x,_n3##y,_p2##z,c), I[94] = (T)(img)(x,_n3##y,_p2##z,c), I[95] = (T)(img)(_n1##x,_n3##y,_p2##z,c), I[96] = (T)(img)(_n2##x,_n3##y,_p2##z,c), I[97] = (T)(img)(_n3##x,_n3##y,_p2##z,c), \ + I[98] = (T)(img)(_p3##x,_p3##y,_p1##z,c), I[99] = (T)(img)(_p2##x,_p3##y,_p1##z,c), I[100] = (T)(img)(_p1##x,_p3##y,_p1##z,c), I[101] = (T)(img)(x,_p3##y,_p1##z,c), I[102] = (T)(img)(_n1##x,_p3##y,_p1##z,c), I[103] = (T)(img)(_n2##x,_p3##y,_p1##z,c), I[104] = (T)(img)(_n3##x,_p3##y,_p1##z,c), \ + I[105] = (T)(img)(_p3##x,_p2##y,_p1##z,c), I[106] = (T)(img)(_p2##x,_p2##y,_p1##z,c), I[107] = (T)(img)(_p1##x,_p2##y,_p1##z,c), I[108] = (T)(img)(x,_p2##y,_p1##z,c), I[109] = (T)(img)(_n1##x,_p2##y,_p1##z,c), I[110] = (T)(img)(_n2##x,_p2##y,_p1##z,c), I[111] = (T)(img)(_n3##x,_p2##y,_p1##z,c), \ + I[112] = (T)(img)(_p3##x,_p1##y,_p1##z,c), I[113] = (T)(img)(_p2##x,_p1##y,_p1##z,c), I[114] = (T)(img)(_p1##x,_p1##y,_p1##z,c), I[115] = (T)(img)(x,_p1##y,_p1##z,c), I[116] = (T)(img)(_n1##x,_p1##y,_p1##z,c), I[117] = (T)(img)(_n2##x,_p1##y,_p1##z,c), I[118] = (T)(img)(_n3##x,_p1##y,_p1##z,c), \ + I[119] = (T)(img)(_p3##x,y,_p1##z,c), I[120] = (T)(img)(_p2##x,y,_p1##z,c), I[121] = (T)(img)(_p1##x,y,_p1##z,c), I[122] = (T)(img)(x,y,_p1##z,c), I[123] = (T)(img)(_n1##x,y,_p1##z,c), I[124] = (T)(img)(_n2##x,y,_p1##z,c), I[125] = (T)(img)(_n3##x,y,_p1##z,c), \ + I[126] = (T)(img)(_p3##x,_n1##y,_p1##z,c), I[127] = (T)(img)(_p2##x,_n1##y,_p1##z,c), I[128] = (T)(img)(_p1##x,_n1##y,_p1##z,c), I[129] = (T)(img)(x,_n1##y,_p1##z,c), I[130] = (T)(img)(_n1##x,_n1##y,_p1##z,c), I[131] = (T)(img)(_n2##x,_n1##y,_p1##z,c), I[132] = (T)(img)(_n3##x,_n1##y,_p1##z,c), \ + I[133] = (T)(img)(_p3##x,_n2##y,_p1##z,c), I[134] = (T)(img)(_p2##x,_n2##y,_p1##z,c), I[135] = (T)(img)(_p1##x,_n2##y,_p1##z,c), I[136] = (T)(img)(x,_n2##y,_p1##z,c), I[137] = (T)(img)(_n1##x,_n2##y,_p1##z,c), I[138] = (T)(img)(_n2##x,_n2##y,_p1##z,c), I[139] = (T)(img)(_n3##x,_n2##y,_p1##z,c), \ + I[140] = (T)(img)(_p3##x,_n3##y,_p1##z,c), I[141] = (T)(img)(_p2##x,_n3##y,_p1##z,c), I[142] = (T)(img)(_p1##x,_n3##y,_p1##z,c), I[143] = (T)(img)(x,_n3##y,_p1##z,c), I[144] = (T)(img)(_n1##x,_n3##y,_p1##z,c), I[145] = (T)(img)(_n2##x,_n3##y,_p1##z,c), I[146] = (T)(img)(_n3##x,_n3##y,_p1##z,c), \ + I[147] = (T)(img)(_p3##x,_p3##y,z,c), I[148] = (T)(img)(_p2##x,_p3##y,z,c), I[149] = (T)(img)(_p1##x,_p3##y,z,c), I[150] = (T)(img)(x,_p3##y,z,c), I[151] = (T)(img)(_n1##x,_p3##y,z,c), I[152] = (T)(img)(_n2##x,_p3##y,z,c), I[153] = (T)(img)(_n3##x,_p3##y,z,c), \ + I[154] = (T)(img)(_p3##x,_p2##y,z,c), I[155] = (T)(img)(_p2##x,_p2##y,z,c), I[156] = (T)(img)(_p1##x,_p2##y,z,c), I[157] = (T)(img)(x,_p2##y,z,c), I[158] = (T)(img)(_n1##x,_p2##y,z,c), I[159] = (T)(img)(_n2##x,_p2##y,z,c), I[160] = (T)(img)(_n3##x,_p2##y,z,c), \ + I[161] = (T)(img)(_p3##x,_p1##y,z,c), I[162] = (T)(img)(_p2##x,_p1##y,z,c), I[163] = (T)(img)(_p1##x,_p1##y,z,c), I[164] = (T)(img)(x,_p1##y,z,c), I[165] = (T)(img)(_n1##x,_p1##y,z,c), I[166] = (T)(img)(_n2##x,_p1##y,z,c), I[167] = (T)(img)(_n3##x,_p1##y,z,c), \ + I[168] = (T)(img)(_p3##x,y,z,c), I[169] = (T)(img)(_p2##x,y,z,c), I[170] = (T)(img)(_p1##x,y,z,c), I[171] = (T)(img)(x,y,z,c), I[172] = (T)(img)(_n1##x,y,z,c), I[173] = (T)(img)(_n2##x,y,z,c), I[174] = (T)(img)(_n3##x,y,z,c), \ + I[175] = (T)(img)(_p3##x,_n1##y,z,c), I[176] = (T)(img)(_p2##x,_n1##y,z,c), I[177] = (T)(img)(_p1##x,_n1##y,z,c), I[178] = (T)(img)(x,_n1##y,z,c), I[179] = (T)(img)(_n1##x,_n1##y,z,c), I[180] = (T)(img)(_n2##x,_n1##y,z,c), I[181] = (T)(img)(_n3##x,_n1##y,z,c), \ + I[182] = (T)(img)(_p3##x,_n2##y,z,c), I[183] = (T)(img)(_p2##x,_n2##y,z,c), I[184] = (T)(img)(_p1##x,_n2##y,z,c), I[185] = (T)(img)(x,_n2##y,z,c), I[186] = (T)(img)(_n1##x,_n2##y,z,c), I[187] = (T)(img)(_n2##x,_n2##y,z,c), I[188] = (T)(img)(_n3##x,_n2##y,z,c), \ + I[189] = (T)(img)(_p3##x,_n3##y,z,c), I[190] = (T)(img)(_p2##x,_n3##y,z,c), I[191] = (T)(img)(_p1##x,_n3##y,z,c), I[192] = (T)(img)(x,_n3##y,z,c), I[193] = (T)(img)(_n1##x,_n3##y,z,c), I[194] = (T)(img)(_n2##x,_n3##y,z,c), I[195] = (T)(img)(_n3##x,_n3##y,z,c), \ + I[196] = (T)(img)(_p3##x,_p3##y,_n1##z,c), I[197] = (T)(img)(_p2##x,_p3##y,_n1##z,c), I[198] = (T)(img)(_p1##x,_p3##y,_n1##z,c), I[199] = (T)(img)(x,_p3##y,_n1##z,c), I[200] = (T)(img)(_n1##x,_p3##y,_n1##z,c), I[201] = (T)(img)(_n2##x,_p3##y,_n1##z,c), I[202] = (T)(img)(_n3##x,_p3##y,_n1##z,c), \ + I[203] = (T)(img)(_p3##x,_p2##y,_n1##z,c), I[204] = (T)(img)(_p2##x,_p2##y,_n1##z,c), I[205] = (T)(img)(_p1##x,_p2##y,_n1##z,c), I[206] = (T)(img)(x,_p2##y,_n1##z,c), I[207] = (T)(img)(_n1##x,_p2##y,_n1##z,c), I[208] = (T)(img)(_n2##x,_p2##y,_n1##z,c), I[209] = (T)(img)(_n3##x,_p2##y,_n1##z,c), \ + I[210] = (T)(img)(_p3##x,_p1##y,_n1##z,c), I[211] = (T)(img)(_p2##x,_p1##y,_n1##z,c), I[212] = (T)(img)(_p1##x,_p1##y,_n1##z,c), I[213] = (T)(img)(x,_p1##y,_n1##z,c), I[214] = (T)(img)(_n1##x,_p1##y,_n1##z,c), I[215] = (T)(img)(_n2##x,_p1##y,_n1##z,c), I[216] = (T)(img)(_n3##x,_p1##y,_n1##z,c), \ + I[217] = (T)(img)(_p3##x,y,_n1##z,c), I[218] = (T)(img)(_p2##x,y,_n1##z,c), I[219] = (T)(img)(_p1##x,y,_n1##z,c), I[220] = (T)(img)(x,y,_n1##z,c), I[221] = (T)(img)(_n1##x,y,_n1##z,c), I[222] = (T)(img)(_n2##x,y,_n1##z,c), I[223] = (T)(img)(_n3##x,y,_n1##z,c), \ + I[224] = (T)(img)(_p3##x,_n1##y,_n1##z,c), I[225] = (T)(img)(_p2##x,_n1##y,_n1##z,c), I[226] = (T)(img)(_p1##x,_n1##y,_n1##z,c), I[227] = (T)(img)(x,_n1##y,_n1##z,c), I[228] = (T)(img)(_n1##x,_n1##y,_n1##z,c), I[229] = (T)(img)(_n2##x,_n1##y,_n1##z,c), I[230] = (T)(img)(_n3##x,_n1##y,_n1##z,c), \ + I[231] = (T)(img)(_p3##x,_n2##y,_n1##z,c), I[232] = (T)(img)(_p2##x,_n2##y,_n1##z,c), I[233] = (T)(img)(_p1##x,_n2##y,_n1##z,c), I[234] = (T)(img)(x,_n2##y,_n1##z,c), I[235] = (T)(img)(_n1##x,_n2##y,_n1##z,c), I[236] = (T)(img)(_n2##x,_n2##y,_n1##z,c), I[237] = (T)(img)(_n3##x,_n2##y,_n1##z,c), \ + I[238] = (T)(img)(_p3##x,_n3##y,_n1##z,c), I[239] = (T)(img)(_p2##x,_n3##y,_n1##z,c), I[240] = (T)(img)(_p1##x,_n3##y,_n1##z,c), I[241] = (T)(img)(x,_n3##y,_n1##z,c), I[242] = (T)(img)(_n1##x,_n3##y,_n1##z,c), I[243] = (T)(img)(_n2##x,_n3##y,_n1##z,c), I[244] = (T)(img)(_n3##x,_n3##y,_n1##z,c), \ + I[245] = (T)(img)(_p3##x,_p3##y,_n2##z,c), I[246] = (T)(img)(_p2##x,_p3##y,_n2##z,c), I[247] = (T)(img)(_p1##x,_p3##y,_n2##z,c), I[248] = (T)(img)(x,_p3##y,_n2##z,c), I[249] = (T)(img)(_n1##x,_p3##y,_n2##z,c), I[250] = (T)(img)(_n2##x,_p3##y,_n2##z,c), I[251] = (T)(img)(_n3##x,_p3##y,_n2##z,c), \ + I[252] = (T)(img)(_p3##x,_p2##y,_n2##z,c), I[253] = (T)(img)(_p2##x,_p2##y,_n2##z,c), I[254] = (T)(img)(_p1##x,_p2##y,_n2##z,c), I[255] = (T)(img)(x,_p2##y,_n2##z,c), I[256] = (T)(img)(_n1##x,_p2##y,_n2##z,c), I[257] = (T)(img)(_n2##x,_p2##y,_n2##z,c), I[258] = (T)(img)(_n3##x,_p2##y,_n2##z,c), \ + I[259] = (T)(img)(_p3##x,_p1##y,_n2##z,c), I[260] = (T)(img)(_p2##x,_p1##y,_n2##z,c), I[261] = (T)(img)(_p1##x,_p1##y,_n2##z,c), I[262] = (T)(img)(x,_p1##y,_n2##z,c), I[263] = (T)(img)(_n1##x,_p1##y,_n2##z,c), I[264] = (T)(img)(_n2##x,_p1##y,_n2##z,c), I[265] = (T)(img)(_n3##x,_p1##y,_n2##z,c), \ + I[266] = (T)(img)(_p3##x,y,_n2##z,c), I[267] = (T)(img)(_p2##x,y,_n2##z,c), I[268] = (T)(img)(_p1##x,y,_n2##z,c), I[269] = (T)(img)(x,y,_n2##z,c), I[270] = (T)(img)(_n1##x,y,_n2##z,c), I[271] = (T)(img)(_n2##x,y,_n2##z,c), I[272] = (T)(img)(_n3##x,y,_n2##z,c), \ + I[273] = (T)(img)(_p3##x,_n1##y,_n2##z,c), I[274] = (T)(img)(_p2##x,_n1##y,_n2##z,c), I[275] = (T)(img)(_p1##x,_n1##y,_n2##z,c), I[276] = (T)(img)(x,_n1##y,_n2##z,c), I[277] = (T)(img)(_n1##x,_n1##y,_n2##z,c), I[278] = (T)(img)(_n2##x,_n1##y,_n2##z,c), I[279] = (T)(img)(_n3##x,_n1##y,_n2##z,c), \ + I[280] = (T)(img)(_p3##x,_n2##y,_n2##z,c), I[281] = (T)(img)(_p2##x,_n2##y,_n2##z,c), I[282] = (T)(img)(_p1##x,_n2##y,_n2##z,c), I[283] = (T)(img)(x,_n2##y,_n2##z,c), I[284] = (T)(img)(_n1##x,_n2##y,_n2##z,c), I[285] = (T)(img)(_n2##x,_n2##y,_n2##z,c), I[286] = (T)(img)(_n3##x,_n2##y,_n2##z,c), \ + I[287] = (T)(img)(_p3##x,_n3##y,_n2##z,c), I[288] = (T)(img)(_p2##x,_n3##y,_n2##z,c), I[289] = (T)(img)(_p1##x,_n3##y,_n2##z,c), I[290] = (T)(img)(x,_n3##y,_n2##z,c), I[291] = (T)(img)(_n1##x,_n3##y,_n2##z,c), I[292] = (T)(img)(_n2##x,_n3##y,_n2##z,c), I[293] = (T)(img)(_n3##x,_n3##y,_n2##z,c), \ + I[294] = (T)(img)(_p3##x,_p3##y,_n3##z,c), I[295] = (T)(img)(_p2##x,_p3##y,_n3##z,c), I[296] = (T)(img)(_p1##x,_p3##y,_n3##z,c), I[297] = (T)(img)(x,_p3##y,_n3##z,c), I[298] = (T)(img)(_n1##x,_p3##y,_n3##z,c), I[299] = (T)(img)(_n2##x,_p3##y,_n3##z,c), I[300] = (T)(img)(_n3##x,_p3##y,_n3##z,c), \ + I[301] = (T)(img)(_p3##x,_p2##y,_n3##z,c), I[302] = (T)(img)(_p2##x,_p2##y,_n3##z,c), I[303] = (T)(img)(_p1##x,_p2##y,_n3##z,c), I[304] = (T)(img)(x,_p2##y,_n3##z,c), I[305] = (T)(img)(_n1##x,_p2##y,_n3##z,c), I[306] = (T)(img)(_n2##x,_p2##y,_n3##z,c), I[307] = (T)(img)(_n3##x,_p2##y,_n3##z,c), \ + I[308] = (T)(img)(_p3##x,_p1##y,_n3##z,c), I[309] = (T)(img)(_p2##x,_p1##y,_n3##z,c), I[310] = (T)(img)(_p1##x,_p1##y,_n3##z,c), I[311] = (T)(img)(x,_p1##y,_n3##z,c), I[312] = (T)(img)(_n1##x,_p1##y,_n3##z,c), I[313] = (T)(img)(_n2##x,_p1##y,_n3##z,c), I[314] = (T)(img)(_n3##x,_p1##y,_n3##z,c), \ + I[315] = (T)(img)(_p3##x,y,_n3##z,c), I[316] = (T)(img)(_p2##x,y,_n3##z,c), I[317] = (T)(img)(_p1##x,y,_n3##z,c), I[318] = (T)(img)(x,y,_n3##z,c), I[319] = (T)(img)(_n1##x,y,_n3##z,c), I[320] = (T)(img)(_n2##x,y,_n3##z,c), I[321] = (T)(img)(_n3##x,y,_n3##z,c), \ + I[322] = (T)(img)(_p3##x,_n1##y,_n3##z,c), I[323] = (T)(img)(_p2##x,_n1##y,_n3##z,c), I[324] = (T)(img)(_p1##x,_n1##y,_n3##z,c), I[325] = (T)(img)(x,_n1##y,_n3##z,c), I[326] = (T)(img)(_n1##x,_n1##y,_n3##z,c), I[327] = (T)(img)(_n2##x,_n1##y,_n3##z,c), I[328] = (T)(img)(_n3##x,_n1##y,_n3##z,c), \ + I[329] = (T)(img)(_p3##x,_n2##y,_n3##z,c), I[330] = (T)(img)(_p2##x,_n2##y,_n3##z,c), I[331] = (T)(img)(_p1##x,_n2##y,_n3##z,c), I[332] = (T)(img)(x,_n2##y,_n3##z,c), I[333] = (T)(img)(_n1##x,_n2##y,_n3##z,c), I[334] = (T)(img)(_n2##x,_n2##y,_n3##z,c), I[335] = (T)(img)(_n3##x,_n2##y,_n3##z,c), \ + I[336] = (T)(img)(_p3##x,_n3##y,_n3##z,c), I[337] = (T)(img)(_p2##x,_n3##y,_n3##z,c), I[338] = (T)(img)(_p1##x,_n3##y,_n3##z,c), I[339] = (T)(img)(x,_n3##y,_n3##z,c), I[340] = (T)(img)(_n1##x,_n3##y,_n3##z,c), I[341] = (T)(img)(_n2##x,_n3##y,_n3##z,c), I[342] = (T)(img)(_n3##x,_n3##y,_n3##z,c); + +// Define 8x8x8 loop macros +//---------------------------- +#define cimg_for8x8x8(img,x,y,z,c,I,T) \ + cimg_for8((img)._depth,z) cimg_for8((img)._height,y) for (int x = 0, \ + _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = (T)(img)(0,_p3##y,_p3##z,c)), \ + (I[8] = I[9] = I[10] = I[11] = (T)(img)(0,_p2##y,_p3##z,c)), \ + (I[16] = I[17] = I[18] = I[19] = (T)(img)(0,_p1##y,_p3##z,c)), \ + (I[24] = I[25] = I[26] = I[27] = (T)(img)(0,y,_p3##z,c)), \ + (I[32] = I[33] = I[34] = I[35] = (T)(img)(0,_n1##y,_p3##z,c)), \ + (I[40] = I[41] = I[42] = I[43] = (T)(img)(0,_n2##y,_p3##z,c)), \ + (I[48] = I[49] = I[50] = I[51] = (T)(img)(0,_n3##y,_p3##z,c)), \ + (I[56] = I[57] = I[58] = I[59] = (T)(img)(0,_n4##y,_p3##z,c)), \ + (I[64] = I[65] = I[66] = I[67] = (T)(img)(0,_p3##y,_p2##z,c)), \ + (I[72] = I[73] = I[74] = I[75] = (T)(img)(0,_p2##y,_p2##z,c)), \ + (I[80] = I[81] = I[82] = I[83] = (T)(img)(0,_p1##y,_p2##z,c)), \ + (I[88] = I[89] = I[90] = I[91] = (T)(img)(0,y,_p2##z,c)), \ + (I[96] = I[97] = I[98] = I[99] = (T)(img)(0,_n1##y,_p2##z,c)), \ + (I[104] = I[105] = I[106] = I[107] = (T)(img)(0,_n2##y,_p2##z,c)), \ + (I[112] = I[113] = I[114] = I[115] = (T)(img)(0,_n3##y,_p2##z,c)), \ + (I[120] = I[121] = I[122] = I[123] = (T)(img)(0,_n4##y,_p2##z,c)), \ + (I[128] = I[129] = I[130] = I[131] = (T)(img)(0,_p3##y,_p1##z,c)), \ + (I[136] = I[137] = I[138] = I[139] = (T)(img)(0,_p2##y,_p1##z,c)), \ + (I[144] = I[145] = I[146] = I[147] = (T)(img)(0,_p1##y,_p1##z,c)), \ + (I[152] = I[153] = I[154] = I[155] = (T)(img)(0,y,_p1##z,c)), \ + (I[160] = I[161] = I[162] = I[163] = (T)(img)(0,_n1##y,_p1##z,c)), \ + (I[168] = I[169] = I[170] = I[171] = (T)(img)(0,_n2##y,_p1##z,c)), \ + (I[176] = I[177] = I[178] = I[179] = (T)(img)(0,_n3##y,_p1##z,c)), \ + (I[184] = I[185] = I[186] = I[187] = (T)(img)(0,_n4##y,_p1##z,c)), \ + (I[192] = I[193] = I[194] = I[195] = (T)(img)(0,_p3##y,z,c)), \ + (I[200] = I[201] = I[202] = I[203] = (T)(img)(0,_p2##y,z,c)), \ + (I[208] = I[209] = I[210] = I[211] = (T)(img)(0,_p1##y,z,c)), \ + (I[216] = I[217] = I[218] = I[219] = (T)(img)(0,y,z,c)), \ + (I[224] = I[225] = I[226] = I[227] = (T)(img)(0,_n1##y,z,c)), \ + (I[232] = I[233] = I[234] = I[235] = (T)(img)(0,_n2##y,z,c)), \ + (I[240] = I[241] = I[242] = I[243] = (T)(img)(0,_n3##y,z,c)), \ + (I[248] = I[249] = I[250] = I[251] = (T)(img)(0,_n4##y,z,c)), \ + (I[256] = I[257] = I[258] = I[259] = (T)(img)(0,_p3##y,_n1##z,c)), \ + (I[264] = I[265] = I[266] = I[267] = (T)(img)(0,_p2##y,_n1##z,c)), \ + (I[272] = I[273] = I[274] = I[275] = (T)(img)(0,_p1##y,_n1##z,c)), \ + (I[280] = I[281] = I[282] = I[283] = (T)(img)(0,y,_n1##z,c)), \ + (I[288] = I[289] = I[290] = I[291] = (T)(img)(0,_n1##y,_n1##z,c)), \ + (I[296] = I[297] = I[298] = I[299] = (T)(img)(0,_n2##y,_n1##z,c)), \ + (I[304] = I[305] = I[306] = I[307] = (T)(img)(0,_n3##y,_n1##z,c)), \ + (I[312] = I[313] = I[314] = I[315] = (T)(img)(0,_n4##y,_n1##z,c)), \ + (I[320] = I[321] = I[322] = I[323] = (T)(img)(0,_p3##y,_n2##z,c)), \ + (I[328] = I[329] = I[330] = I[331] = (T)(img)(0,_p2##y,_n2##z,c)), \ + (I[336] = I[337] = I[338] = I[339] = (T)(img)(0,_p1##y,_n2##z,c)), \ + (I[344] = I[345] = I[346] = I[347] = (T)(img)(0,y,_n2##z,c)), \ + (I[352] = I[353] = I[354] = I[355] = (T)(img)(0,_n1##y,_n2##z,c)), \ + (I[360] = I[361] = I[362] = I[363] = (T)(img)(0,_n2##y,_n2##z,c)), \ + (I[368] = I[369] = I[370] = I[371] = (T)(img)(0,_n3##y,_n2##z,c)), \ + (I[376] = I[377] = I[378] = I[379] = (T)(img)(0,_n4##y,_n2##z,c)), \ + (I[384] = I[385] = I[386] = I[387] = (T)(img)(0,_p3##y,_n3##z,c)), \ + (I[392] = I[393] = I[394] = I[395] = (T)(img)(0,_p2##y,_n3##z,c)), \ + (I[400] = I[401] = I[402] = I[403] = (T)(img)(0,_p1##y,_n3##z,c)), \ + (I[408] = I[409] = I[410] = I[411] = (T)(img)(0,y,_n3##z,c)), \ + (I[416] = I[417] = I[418] = I[419] = (T)(img)(0,_n1##y,_n3##z,c)), \ + (I[424] = I[425] = I[426] = I[427] = (T)(img)(0,_n2##y,_n3##z,c)), \ + (I[432] = I[433] = I[434] = I[435] = (T)(img)(0,_n3##y,_n3##z,c)), \ + (I[440] = I[441] = I[442] = I[443] = (T)(img)(0,_n4##y,_n3##z,c)), \ + (I[448] = I[449] = I[450] = I[451] = (T)(img)(0,_p3##y,_n4##z,c)), \ + (I[456] = I[457] = I[458] = I[459] = (T)(img)(0,_p2##y,_n4##z,c)), \ + (I[464] = I[465] = I[466] = I[467] = (T)(img)(0,_p1##y,_n4##z,c)), \ + (I[472] = I[473] = I[474] = I[475] = (T)(img)(0,y,_n4##z,c)), \ + (I[480] = I[481] = I[482] = I[483] = (T)(img)(0,_n1##y,_n4##z,c)), \ + (I[488] = I[489] = I[490] = I[491] = (T)(img)(0,_n2##y,_n4##z,c)), \ + (I[496] = I[497] = I[498] = I[499] = (T)(img)(0,_n3##y,_n4##z,c)), \ + (I[504] = I[505] = I[506] = I[507] = (T)(img)(0,_n4##y,_n4##z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,_p3##z,c)), \ + (I[12] = (T)(img)(_n1##x,_p2##y,_p3##z,c)), \ + (I[20] = (T)(img)(_n1##x,_p1##y,_p3##z,c)), \ + (I[28] = (T)(img)(_n1##x,y,_p3##z,c)), \ + (I[36] = (T)(img)(_n1##x,_n1##y,_p3##z,c)), \ + (I[44] = (T)(img)(_n1##x,_n2##y,_p3##z,c)), \ + (I[52] = (T)(img)(_n1##x,_n3##y,_p3##z,c)), \ + (I[60] = (T)(img)(_n1##x,_n4##y,_p3##z,c)), \ + (I[68] = (T)(img)(_n1##x,_p3##y,_p2##z,c)), \ + (I[76] = (T)(img)(_n1##x,_p2##y,_p2##z,c)), \ + (I[84] = (T)(img)(_n1##x,_p1##y,_p2##z,c)), \ + (I[92] = (T)(img)(_n1##x,y,_p2##z,c)), \ + (I[100] = (T)(img)(_n1##x,_n1##y,_p2##z,c)), \ + (I[108] = (T)(img)(_n1##x,_n2##y,_p2##z,c)), \ + (I[116] = (T)(img)(_n1##x,_n3##y,_p2##z,c)), \ + (I[124] = (T)(img)(_n1##x,_n4##y,_p2##z,c)), \ + (I[132] = (T)(img)(_n1##x,_p3##y,_p1##z,c)), \ + (I[140] = (T)(img)(_n1##x,_p2##y,_p1##z,c)), \ + (I[148] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[156] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[164] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[172] = (T)(img)(_n1##x,_n2##y,_p1##z,c)), \ + (I[180] = (T)(img)(_n1##x,_n3##y,_p1##z,c)), \ + (I[188] = (T)(img)(_n1##x,_n4##y,_p1##z,c)), \ + (I[196] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[204] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[212] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[220] = (T)(img)(_n1##x,y,z,c)), \ + (I[228] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[236] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[244] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[252] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[260] = (T)(img)(_n1##x,_p3##y,_n1##z,c)), \ + (I[268] = (T)(img)(_n1##x,_p2##y,_n1##z,c)), \ + (I[276] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[284] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[292] = (T)(img)(_n1##x,_n1##y,_n1##z,c)), \ + (I[300] = (T)(img)(_n1##x,_n2##y,_n1##z,c)), \ + (I[308] = (T)(img)(_n1##x,_n3##y,_n1##z,c)), \ + (I[316] = (T)(img)(_n1##x,_n4##y,_n1##z,c)), \ + (I[324] = (T)(img)(_n1##x,_p3##y,_n2##z,c)), \ + (I[332] = (T)(img)(_n1##x,_p2##y,_n2##z,c)), \ + (I[340] = (T)(img)(_n1##x,_p1##y,_n2##z,c)), \ + (I[348] = (T)(img)(_n1##x,y,_n2##z,c)), \ + (I[356] = (T)(img)(_n1##x,_n1##y,_n2##z,c)), \ + (I[364] = (T)(img)(_n1##x,_n2##y,_n2##z,c)), \ + (I[372] = (T)(img)(_n1##x,_n3##y,_n2##z,c)), \ + (I[380] = (T)(img)(_n1##x,_n4##y,_n2##z,c)), \ + (I[388] = (T)(img)(_n1##x,_p3##y,_n3##z,c)), \ + (I[396] = (T)(img)(_n1##x,_p2##y,_n3##z,c)), \ + (I[404] = (T)(img)(_n1##x,_p1##y,_n3##z,c)), \ + (I[412] = (T)(img)(_n1##x,y,_n3##z,c)), \ + (I[420] = (T)(img)(_n1##x,_n1##y,_n3##z,c)), \ + (I[428] = (T)(img)(_n1##x,_n2##y,_n3##z,c)), \ + (I[436] = (T)(img)(_n1##x,_n3##y,_n3##z,c)), \ + (I[444] = (T)(img)(_n1##x,_n4##y,_n3##z,c)), \ + (I[452] = (T)(img)(_n1##x,_p3##y,_n4##z,c)), \ + (I[460] = (T)(img)(_n1##x,_p2##y,_n4##z,c)), \ + (I[468] = (T)(img)(_n1##x,_p1##y,_n4##z,c)), \ + (I[476] = (T)(img)(_n1##x,y,_n4##z,c)), \ + (I[484] = (T)(img)(_n1##x,_n1##y,_n4##z,c)), \ + (I[492] = (T)(img)(_n1##x,_n2##y,_n4##z,c)), \ + (I[500] = (T)(img)(_n1##x,_n3##y,_n4##z,c)), \ + (I[508] = (T)(img)(_n1##x,_n4##y,_n4##z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,_p3##z,c)), \ + (I[13] = (T)(img)(_n2##x,_p2##y,_p3##z,c)), \ + (I[21] = (T)(img)(_n2##x,_p1##y,_p3##z,c)), \ + (I[29] = (T)(img)(_n2##x,y,_p3##z,c)), \ + (I[37] = (T)(img)(_n2##x,_n1##y,_p3##z,c)), \ + (I[45] = (T)(img)(_n2##x,_n2##y,_p3##z,c)), \ + (I[53] = (T)(img)(_n2##x,_n3##y,_p3##z,c)), \ + (I[61] = (T)(img)(_n2##x,_n4##y,_p3##z,c)), \ + (I[69] = (T)(img)(_n2##x,_p3##y,_p2##z,c)), \ + (I[77] = (T)(img)(_n2##x,_p2##y,_p2##z,c)), \ + (I[85] = (T)(img)(_n2##x,_p1##y,_p2##z,c)), \ + (I[93] = (T)(img)(_n2##x,y,_p2##z,c)), \ + (I[101] = (T)(img)(_n2##x,_n1##y,_p2##z,c)), \ + (I[109] = (T)(img)(_n2##x,_n2##y,_p2##z,c)), \ + (I[117] = (T)(img)(_n2##x,_n3##y,_p2##z,c)), \ + (I[125] = (T)(img)(_n2##x,_n4##y,_p2##z,c)), \ + (I[133] = (T)(img)(_n2##x,_p3##y,_p1##z,c)), \ + (I[141] = (T)(img)(_n2##x,_p2##y,_p1##z,c)), \ + (I[149] = (T)(img)(_n2##x,_p1##y,_p1##z,c)), \ + (I[157] = (T)(img)(_n2##x,y,_p1##z,c)), \ + (I[165] = (T)(img)(_n2##x,_n1##y,_p1##z,c)), \ + (I[173] = (T)(img)(_n2##x,_n2##y,_p1##z,c)), \ + (I[181] = (T)(img)(_n2##x,_n3##y,_p1##z,c)), \ + (I[189] = (T)(img)(_n2##x,_n4##y,_p1##z,c)), \ + (I[197] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[205] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[213] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[221] = (T)(img)(_n2##x,y,z,c)), \ + (I[229] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[237] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[245] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[253] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[261] = (T)(img)(_n2##x,_p3##y,_n1##z,c)), \ + (I[269] = (T)(img)(_n2##x,_p2##y,_n1##z,c)), \ + (I[277] = (T)(img)(_n2##x,_p1##y,_n1##z,c)), \ + (I[285] = (T)(img)(_n2##x,y,_n1##z,c)), \ + (I[293] = (T)(img)(_n2##x,_n1##y,_n1##z,c)), \ + (I[301] = (T)(img)(_n2##x,_n2##y,_n1##z,c)), \ + (I[309] = (T)(img)(_n2##x,_n3##y,_n1##z,c)), \ + (I[317] = (T)(img)(_n2##x,_n4##y,_n1##z,c)), \ + (I[325] = (T)(img)(_n2##x,_p3##y,_n2##z,c)), \ + (I[333] = (T)(img)(_n2##x,_p2##y,_n2##z,c)), \ + (I[341] = (T)(img)(_n2##x,_p1##y,_n2##z,c)), \ + (I[349] = (T)(img)(_n2##x,y,_n2##z,c)), \ + (I[357] = (T)(img)(_n2##x,_n1##y,_n2##z,c)), \ + (I[365] = (T)(img)(_n2##x,_n2##y,_n2##z,c)), \ + (I[373] = (T)(img)(_n2##x,_n3##y,_n2##z,c)), \ + (I[381] = (T)(img)(_n2##x,_n4##y,_n2##z,c)), \ + (I[389] = (T)(img)(_n2##x,_p3##y,_n3##z,c)), \ + (I[397] = (T)(img)(_n2##x,_p2##y,_n3##z,c)), \ + (I[405] = (T)(img)(_n2##x,_p1##y,_n3##z,c)), \ + (I[413] = (T)(img)(_n2##x,y,_n3##z,c)), \ + (I[421] = (T)(img)(_n2##x,_n1##y,_n3##z,c)), \ + (I[429] = (T)(img)(_n2##x,_n2##y,_n3##z,c)), \ + (I[437] = (T)(img)(_n2##x,_n3##y,_n3##z,c)), \ + (I[445] = (T)(img)(_n2##x,_n4##y,_n3##z,c)), \ + (I[453] = (T)(img)(_n2##x,_p3##y,_n4##z,c)), \ + (I[461] = (T)(img)(_n2##x,_p2##y,_n4##z,c)), \ + (I[469] = (T)(img)(_n2##x,_p1##y,_n4##z,c)), \ + (I[477] = (T)(img)(_n2##x,y,_n4##z,c)), \ + (I[485] = (T)(img)(_n2##x,_n1##y,_n4##z,c)), \ + (I[493] = (T)(img)(_n2##x,_n2##y,_n4##z,c)), \ + (I[501] = (T)(img)(_n2##x,_n3##y,_n4##z,c)), \ + (I[509] = (T)(img)(_n2##x,_n4##y,_n4##z,c)), \ + (I[6] = (T)(img)(_n3##x,_p3##y,_p3##z,c)), \ + (I[14] = (T)(img)(_n3##x,_p2##y,_p3##z,c)), \ + (I[22] = (T)(img)(_n3##x,_p1##y,_p3##z,c)), \ + (I[30] = (T)(img)(_n3##x,y,_p3##z,c)), \ + (I[38] = (T)(img)(_n3##x,_n1##y,_p3##z,c)), \ + (I[46] = (T)(img)(_n3##x,_n2##y,_p3##z,c)), \ + (I[54] = (T)(img)(_n3##x,_n3##y,_p3##z,c)), \ + (I[62] = (T)(img)(_n3##x,_n4##y,_p3##z,c)), \ + (I[70] = (T)(img)(_n3##x,_p3##y,_p2##z,c)), \ + (I[78] = (T)(img)(_n3##x,_p2##y,_p2##z,c)), \ + (I[86] = (T)(img)(_n3##x,_p1##y,_p2##z,c)), \ + (I[94] = (T)(img)(_n3##x,y,_p2##z,c)), \ + (I[102] = (T)(img)(_n3##x,_n1##y,_p2##z,c)), \ + (I[110] = (T)(img)(_n3##x,_n2##y,_p2##z,c)), \ + (I[118] = (T)(img)(_n3##x,_n3##y,_p2##z,c)), \ + (I[126] = (T)(img)(_n3##x,_n4##y,_p2##z,c)), \ + (I[134] = (T)(img)(_n3##x,_p3##y,_p1##z,c)), \ + (I[142] = (T)(img)(_n3##x,_p2##y,_p1##z,c)), \ + (I[150] = (T)(img)(_n3##x,_p1##y,_p1##z,c)), \ + (I[158] = (T)(img)(_n3##x,y,_p1##z,c)), \ + (I[166] = (T)(img)(_n3##x,_n1##y,_p1##z,c)), \ + (I[174] = (T)(img)(_n3##x,_n2##y,_p1##z,c)), \ + (I[182] = (T)(img)(_n3##x,_n3##y,_p1##z,c)), \ + (I[190] = (T)(img)(_n3##x,_n4##y,_p1##z,c)), \ + (I[198] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[206] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[214] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[222] = (T)(img)(_n3##x,y,z,c)), \ + (I[230] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[238] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[246] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[254] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[262] = (T)(img)(_n3##x,_p3##y,_n1##z,c)), \ + (I[270] = (T)(img)(_n3##x,_p2##y,_n1##z,c)), \ + (I[278] = (T)(img)(_n3##x,_p1##y,_n1##z,c)), \ + (I[286] = (T)(img)(_n3##x,y,_n1##z,c)), \ + (I[294] = (T)(img)(_n3##x,_n1##y,_n1##z,c)), \ + (I[302] = (T)(img)(_n3##x,_n2##y,_n1##z,c)), \ + (I[310] = (T)(img)(_n3##x,_n3##y,_n1##z,c)), \ + (I[318] = (T)(img)(_n3##x,_n4##y,_n1##z,c)), \ + (I[326] = (T)(img)(_n3##x,_p3##y,_n2##z,c)), \ + (I[334] = (T)(img)(_n3##x,_p2##y,_n2##z,c)), \ + (I[342] = (T)(img)(_n3##x,_p1##y,_n2##z,c)), \ + (I[350] = (T)(img)(_n3##x,y,_n2##z,c)), \ + (I[358] = (T)(img)(_n3##x,_n1##y,_n2##z,c)), \ + (I[366] = (T)(img)(_n3##x,_n2##y,_n2##z,c)), \ + (I[374] = (T)(img)(_n3##x,_n3##y,_n2##z,c)), \ + (I[382] = (T)(img)(_n3##x,_n4##y,_n2##z,c)), \ + (I[390] = (T)(img)(_n3##x,_p3##y,_n3##z,c)), \ + (I[398] = (T)(img)(_n3##x,_p2##y,_n3##z,c)), \ + (I[406] = (T)(img)(_n3##x,_p1##y,_n3##z,c)), \ + (I[414] = (T)(img)(_n3##x,y,_n3##z,c)), \ + (I[422] = (T)(img)(_n3##x,_n1##y,_n3##z,c)), \ + (I[430] = (T)(img)(_n3##x,_n2##y,_n3##z,c)), \ + (I[438] = (T)(img)(_n3##x,_n3##y,_n3##z,c)), \ + (I[446] = (T)(img)(_n3##x,_n4##y,_n3##z,c)), \ + (I[454] = (T)(img)(_n3##x,_p3##y,_n4##z,c)), \ + (I[462] = (T)(img)(_n3##x,_p2##y,_n4##z,c)), \ + (I[470] = (T)(img)(_n3##x,_p1##y,_n4##z,c)), \ + (I[478] = (T)(img)(_n3##x,y,_n4##z,c)), \ + (I[486] = (T)(img)(_n3##x,_n1##y,_n4##z,c)), \ + (I[494] = (T)(img)(_n3##x,_n2##y,_n4##z,c)), \ + (I[502] = (T)(img)(_n3##x,_n3##y,_n4##z,c)), \ + (I[510] = (T)(img)(_n3##x,_n4##y,_n4##z,c)), \ + 4>=((img)._width)?(img).width() - 1:4); \ + (_n4##x<(img).width() && ( \ + (I[7] = (T)(img)(_n4##x,_p3##y,_p3##z,c)), \ + (I[15] = (T)(img)(_n4##x,_p2##y,_p3##z,c)), \ + (I[23] = (T)(img)(_n4##x,_p1##y,_p3##z,c)), \ + (I[31] = (T)(img)(_n4##x,y,_p3##z,c)), \ + (I[39] = (T)(img)(_n4##x,_n1##y,_p3##z,c)), \ + (I[47] = (T)(img)(_n4##x,_n2##y,_p3##z,c)), \ + (I[55] = (T)(img)(_n4##x,_n3##y,_p3##z,c)), \ + (I[63] = (T)(img)(_n4##x,_n4##y,_p3##z,c)), \ + (I[71] = (T)(img)(_n4##x,_p3##y,_p2##z,c)), \ + (I[79] = (T)(img)(_n4##x,_p2##y,_p2##z,c)), \ + (I[87] = (T)(img)(_n4##x,_p1##y,_p2##z,c)), \ + (I[95] = (T)(img)(_n4##x,y,_p2##z,c)), \ + (I[103] = (T)(img)(_n4##x,_n1##y,_p2##z,c)), \ + (I[111] = (T)(img)(_n4##x,_n2##y,_p2##z,c)), \ + (I[119] = (T)(img)(_n4##x,_n3##y,_p2##z,c)), \ + (I[127] = (T)(img)(_n4##x,_n4##y,_p2##z,c)), \ + (I[135] = (T)(img)(_n4##x,_p3##y,_p1##z,c)), \ + (I[143] = (T)(img)(_n4##x,_p2##y,_p1##z,c)), \ + (I[151] = (T)(img)(_n4##x,_p1##y,_p1##z,c)), \ + (I[159] = (T)(img)(_n4##x,y,_p1##z,c)), \ + (I[167] = (T)(img)(_n4##x,_n1##y,_p1##z,c)), \ + (I[175] = (T)(img)(_n4##x,_n2##y,_p1##z,c)), \ + (I[183] = (T)(img)(_n4##x,_n3##y,_p1##z,c)), \ + (I[191] = (T)(img)(_n4##x,_n4##y,_p1##z,c)), \ + (I[199] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[207] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[215] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[223] = (T)(img)(_n4##x,y,z,c)), \ + (I[231] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[239] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[247] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[255] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[263] = (T)(img)(_n4##x,_p3##y,_n1##z,c)), \ + (I[271] = (T)(img)(_n4##x,_p2##y,_n1##z,c)), \ + (I[279] = (T)(img)(_n4##x,_p1##y,_n1##z,c)), \ + (I[287] = (T)(img)(_n4##x,y,_n1##z,c)), \ + (I[295] = (T)(img)(_n4##x,_n1##y,_n1##z,c)), \ + (I[303] = (T)(img)(_n4##x,_n2##y,_n1##z,c)), \ + (I[311] = (T)(img)(_n4##x,_n3##y,_n1##z,c)), \ + (I[319] = (T)(img)(_n4##x,_n4##y,_n1##z,c)), \ + (I[327] = (T)(img)(_n4##x,_p3##y,_n2##z,c)), \ + (I[335] = (T)(img)(_n4##x,_p2##y,_n2##z,c)), \ + (I[343] = (T)(img)(_n4##x,_p1##y,_n2##z,c)), \ + (I[351] = (T)(img)(_n4##x,y,_n2##z,c)), \ + (I[359] = (T)(img)(_n4##x,_n1##y,_n2##z,c)), \ + (I[367] = (T)(img)(_n4##x,_n2##y,_n2##z,c)), \ + (I[375] = (T)(img)(_n4##x,_n3##y,_n2##z,c)), \ + (I[383] = (T)(img)(_n4##x,_n4##y,_n2##z,c)), \ + (I[391] = (T)(img)(_n4##x,_p3##y,_n3##z,c)), \ + (I[399] = (T)(img)(_n4##x,_p2##y,_n3##z,c)), \ + (I[407] = (T)(img)(_n4##x,_p1##y,_n3##z,c)), \ + (I[415] = (T)(img)(_n4##x,y,_n3##z,c)), \ + (I[423] = (T)(img)(_n4##x,_n1##y,_n3##z,c)), \ + (I[431] = (T)(img)(_n4##x,_n2##y,_n3##z,c)), \ + (I[439] = (T)(img)(_n4##x,_n3##y,_n3##z,c)), \ + (I[447] = (T)(img)(_n4##x,_n4##y,_n3##z,c)), \ + (I[455] = (T)(img)(_n4##x,_p3##y,_n4##z,c)), \ + (I[463] = (T)(img)(_n4##x,_p2##y,_n4##z,c)), \ + (I[471] = (T)(img)(_n4##x,_p1##y,_n4##z,c)), \ + (I[479] = (T)(img)(_n4##x,y,_n4##z,c)), \ + (I[487] = (T)(img)(_n4##x,_n1##y,_n4##z,c)), \ + (I[495] = (T)(img)(_n4##x,_n2##y,_n4##z,c)), \ + (I[503] = (T)(img)(_n4##x,_n3##y,_n4##z,c)), \ + (I[511] = (T)(img)(_n4##x,_n4##y,_n4##z,c)),1)) || \ + _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], \ + I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], \ + I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], \ + I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], \ + I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], \ + I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], \ + I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], \ + I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], \ + I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], \ + I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], \ + I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], \ + I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], \ + I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], \ + I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], \ + I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], \ + I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], \ + I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], \ + I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], \ + I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], \ + I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], \ + I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], \ + I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], \ + I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], \ + I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], \ + I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], \ + I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], \ + I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], \ + I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], \ + I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], \ + I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], \ + I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], \ + I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], \ + I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], \ + I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], \ + I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], \ + I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], \ + I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], \ + I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], \ + I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], \ + I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], \ + I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], \ + I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], \ + I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], \ + I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], \ + I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], \ + I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], \ + I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], \ + I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], \ + I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], \ + I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x) + +#define cimg_for_in8x8x8(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \ + cimg_for_in8((img)._depth,z0,z1,z) cimg_for_in8((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = (int)( \ + (I[0] = (T)(img)(_p3##x,_p3##y,_p3##z,c)), \ + (I[8] = (T)(img)(_p3##x,_p2##y,_p3##z,c)), \ + (I[16] = (T)(img)(_p3##x,_p1##y,_p3##z,c)), \ + (I[24] = (T)(img)(_p3##x,y,_p3##z,c)), \ + (I[32] = (T)(img)(_p3##x,_n1##y,_p3##z,c)), \ + (I[40] = (T)(img)(_p3##x,_n2##y,_p3##z,c)), \ + (I[48] = (T)(img)(_p3##x,_n3##y,_p3##z,c)), \ + (I[56] = (T)(img)(_p3##x,_n4##y,_p3##z,c)), \ + (I[64] = (T)(img)(_p3##x,_p3##y,_p2##z,c)), \ + (I[72] = (T)(img)(_p3##x,_p2##y,_p2##z,c)), \ + (I[80] = (T)(img)(_p3##x,_p1##y,_p2##z,c)), \ + (I[88] = (T)(img)(_p3##x,y,_p2##z,c)), \ + (I[96] = (T)(img)(_p3##x,_n1##y,_p2##z,c)), \ + (I[104] = (T)(img)(_p3##x,_n2##y,_p2##z,c)), \ + (I[112] = (T)(img)(_p3##x,_n3##y,_p2##z,c)), \ + (I[120] = (T)(img)(_p3##x,_n4##y,_p2##z,c)), \ + (I[128] = (T)(img)(_p3##x,_p3##y,_p1##z,c)), \ + (I[136] = (T)(img)(_p3##x,_p2##y,_p1##z,c)), \ + (I[144] = (T)(img)(_p3##x,_p1##y,_p1##z,c)), \ + (I[152] = (T)(img)(_p3##x,y,_p1##z,c)), \ + (I[160] = (T)(img)(_p3##x,_n1##y,_p1##z,c)), \ + (I[168] = (T)(img)(_p3##x,_n2##y,_p1##z,c)), \ + (I[176] = (T)(img)(_p3##x,_n3##y,_p1##z,c)), \ + (I[184] = (T)(img)(_p3##x,_n4##y,_p1##z,c)), \ + (I[192] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[200] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[208] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[216] = (T)(img)(_p3##x,y,z,c)), \ + (I[224] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[232] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[240] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[248] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[256] = (T)(img)(_p3##x,_p3##y,_n1##z,c)), \ + (I[264] = (T)(img)(_p3##x,_p2##y,_n1##z,c)), \ + (I[272] = (T)(img)(_p3##x,_p1##y,_n1##z,c)), \ + (I[280] = (T)(img)(_p3##x,y,_n1##z,c)), \ + (I[288] = (T)(img)(_p3##x,_n1##y,_n1##z,c)), \ + (I[296] = (T)(img)(_p3##x,_n2##y,_n1##z,c)), \ + (I[304] = (T)(img)(_p3##x,_n3##y,_n1##z,c)), \ + (I[312] = (T)(img)(_p3##x,_n4##y,_n1##z,c)), \ + (I[320] = (T)(img)(_p3##x,_p3##y,_n2##z,c)), \ + (I[328] = (T)(img)(_p3##x,_p2##y,_n2##z,c)), \ + (I[336] = (T)(img)(_p3##x,_p1##y,_n2##z,c)), \ + (I[344] = (T)(img)(_p3##x,y,_n2##z,c)), \ + (I[352] = (T)(img)(_p3##x,_n1##y,_n2##z,c)), \ + (I[360] = (T)(img)(_p3##x,_n2##y,_n2##z,c)), \ + (I[368] = (T)(img)(_p3##x,_n3##y,_n2##z,c)), \ + (I[376] = (T)(img)(_p3##x,_n4##y,_n2##z,c)), \ + (I[384] = (T)(img)(_p3##x,_p3##y,_n3##z,c)), \ + (I[392] = (T)(img)(_p3##x,_p2##y,_n3##z,c)), \ + (I[400] = (T)(img)(_p3##x,_p1##y,_n3##z,c)), \ + (I[408] = (T)(img)(_p3##x,y,_n3##z,c)), \ + (I[416] = (T)(img)(_p3##x,_n1##y,_n3##z,c)), \ + (I[424] = (T)(img)(_p3##x,_n2##y,_n3##z,c)), \ + (I[432] = (T)(img)(_p3##x,_n3##y,_n3##z,c)), \ + (I[440] = (T)(img)(_p3##x,_n4##y,_n3##z,c)), \ + (I[448] = (T)(img)(_p3##x,_p3##y,_n4##z,c)), \ + (I[456] = (T)(img)(_p3##x,_p2##y,_n4##z,c)), \ + (I[464] = (T)(img)(_p3##x,_p1##y,_n4##z,c)), \ + (I[472] = (T)(img)(_p3##x,y,_n4##z,c)), \ + (I[480] = (T)(img)(_p3##x,_n1##y,_n4##z,c)), \ + (I[488] = (T)(img)(_p3##x,_n2##y,_n4##z,c)), \ + (I[496] = (T)(img)(_p3##x,_n3##y,_n4##z,c)), \ + (I[504] = (T)(img)(_p3##x,_n4##y,_n4##z,c)), \ + (I[1] = (T)(img)(_p2##x,_p3##y,_p3##z,c)), \ + (I[9] = (T)(img)(_p2##x,_p2##y,_p3##z,c)), \ + (I[17] = (T)(img)(_p2##x,_p1##y,_p3##z,c)), \ + (I[25] = (T)(img)(_p2##x,y,_p3##z,c)), \ + (I[33] = (T)(img)(_p2##x,_n1##y,_p3##z,c)), \ + (I[41] = (T)(img)(_p2##x,_n2##y,_p3##z,c)), \ + (I[49] = (T)(img)(_p2##x,_n3##y,_p3##z,c)), \ + (I[57] = (T)(img)(_p2##x,_n4##y,_p3##z,c)), \ + (I[65] = (T)(img)(_p2##x,_p3##y,_p2##z,c)), \ + (I[73] = (T)(img)(_p2##x,_p2##y,_p2##z,c)), \ + (I[81] = (T)(img)(_p2##x,_p1##y,_p2##z,c)), \ + (I[89] = (T)(img)(_p2##x,y,_p2##z,c)), \ + (I[97] = (T)(img)(_p2##x,_n1##y,_p2##z,c)), \ + (I[105] = (T)(img)(_p2##x,_n2##y,_p2##z,c)), \ + (I[113] = (T)(img)(_p2##x,_n3##y,_p2##z,c)), \ + (I[121] = (T)(img)(_p2##x,_n4##y,_p2##z,c)), \ + (I[129] = (T)(img)(_p2##x,_p3##y,_p1##z,c)), \ + (I[137] = (T)(img)(_p2##x,_p2##y,_p1##z,c)), \ + (I[145] = (T)(img)(_p2##x,_p1##y,_p1##z,c)), \ + (I[153] = (T)(img)(_p2##x,y,_p1##z,c)), \ + (I[161] = (T)(img)(_p2##x,_n1##y,_p1##z,c)), \ + (I[169] = (T)(img)(_p2##x,_n2##y,_p1##z,c)), \ + (I[177] = (T)(img)(_p2##x,_n3##y,_p1##z,c)), \ + (I[185] = (T)(img)(_p2##x,_n4##y,_p1##z,c)), \ + (I[193] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[201] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[209] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[217] = (T)(img)(_p2##x,y,z,c)), \ + (I[225] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[233] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[241] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[249] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[257] = (T)(img)(_p2##x,_p3##y,_n1##z,c)), \ + (I[265] = (T)(img)(_p2##x,_p2##y,_n1##z,c)), \ + (I[273] = (T)(img)(_p2##x,_p1##y,_n1##z,c)), \ + (I[281] = (T)(img)(_p2##x,y,_n1##z,c)), \ + (I[289] = (T)(img)(_p2##x,_n1##y,_n1##z,c)), \ + (I[297] = (T)(img)(_p2##x,_n2##y,_n1##z,c)), \ + (I[305] = (T)(img)(_p2##x,_n3##y,_n1##z,c)), \ + (I[313] = (T)(img)(_p2##x,_n4##y,_n1##z,c)), \ + (I[321] = (T)(img)(_p2##x,_p3##y,_n2##z,c)), \ + (I[329] = (T)(img)(_p2##x,_p2##y,_n2##z,c)), \ + (I[337] = (T)(img)(_p2##x,_p1##y,_n2##z,c)), \ + (I[345] = (T)(img)(_p2##x,y,_n2##z,c)), \ + (I[353] = (T)(img)(_p2##x,_n1##y,_n2##z,c)), \ + (I[361] = (T)(img)(_p2##x,_n2##y,_n2##z,c)), \ + (I[369] = (T)(img)(_p2##x,_n3##y,_n2##z,c)), \ + (I[377] = (T)(img)(_p2##x,_n4##y,_n2##z,c)), \ + (I[385] = (T)(img)(_p2##x,_p3##y,_n3##z,c)), \ + (I[393] = (T)(img)(_p2##x,_p2##y,_n3##z,c)), \ + (I[401] = (T)(img)(_p2##x,_p1##y,_n3##z,c)), \ + (I[409] = (T)(img)(_p2##x,y,_n3##z,c)), \ + (I[417] = (T)(img)(_p2##x,_n1##y,_n3##z,c)), \ + (I[425] = (T)(img)(_p2##x,_n2##y,_n3##z,c)), \ + (I[433] = (T)(img)(_p2##x,_n3##y,_n3##z,c)), \ + (I[441] = (T)(img)(_p2##x,_n4##y,_n3##z,c)), \ + (I[449] = (T)(img)(_p2##x,_p3##y,_n4##z,c)), \ + (I[457] = (T)(img)(_p2##x,_p2##y,_n4##z,c)), \ + (I[465] = (T)(img)(_p2##x,_p1##y,_n4##z,c)), \ + (I[473] = (T)(img)(_p2##x,y,_n4##z,c)), \ + (I[481] = (T)(img)(_p2##x,_n1##y,_n4##z,c)), \ + (I[489] = (T)(img)(_p2##x,_n2##y,_n4##z,c)), \ + (I[497] = (T)(img)(_p2##x,_n3##y,_n4##z,c)), \ + (I[505] = (T)(img)(_p2##x,_n4##y,_n4##z,c)), \ + (I[2] = (T)(img)(_p1##x,_p3##y,_p3##z,c)), \ + (I[10] = (T)(img)(_p1##x,_p2##y,_p3##z,c)), \ + (I[18] = (T)(img)(_p1##x,_p1##y,_p3##z,c)), \ + (I[26] = (T)(img)(_p1##x,y,_p3##z,c)), \ + (I[34] = (T)(img)(_p1##x,_n1##y,_p3##z,c)), \ + (I[42] = (T)(img)(_p1##x,_n2##y,_p3##z,c)), \ + (I[50] = (T)(img)(_p1##x,_n3##y,_p3##z,c)), \ + (I[58] = (T)(img)(_p1##x,_n4##y,_p3##z,c)), \ + (I[66] = (T)(img)(_p1##x,_p3##y,_p2##z,c)), \ + (I[74] = (T)(img)(_p1##x,_p2##y,_p2##z,c)), \ + (I[82] = (T)(img)(_p1##x,_p1##y,_p2##z,c)), \ + (I[90] = (T)(img)(_p1##x,y,_p2##z,c)), \ + (I[98] = (T)(img)(_p1##x,_n1##y,_p2##z,c)), \ + (I[106] = (T)(img)(_p1##x,_n2##y,_p2##z,c)), \ + (I[114] = (T)(img)(_p1##x,_n3##y,_p2##z,c)), \ + (I[122] = (T)(img)(_p1##x,_n4##y,_p2##z,c)), \ + (I[130] = (T)(img)(_p1##x,_p3##y,_p1##z,c)), \ + (I[138] = (T)(img)(_p1##x,_p2##y,_p1##z,c)), \ + (I[146] = (T)(img)(_p1##x,_p1##y,_p1##z,c)), \ + (I[154] = (T)(img)(_p1##x,y,_p1##z,c)), \ + (I[162] = (T)(img)(_p1##x,_n1##y,_p1##z,c)), \ + (I[170] = (T)(img)(_p1##x,_n2##y,_p1##z,c)), \ + (I[178] = (T)(img)(_p1##x,_n3##y,_p1##z,c)), \ + (I[186] = (T)(img)(_p1##x,_n4##y,_p1##z,c)), \ + (I[194] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[202] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[210] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[218] = (T)(img)(_p1##x,y,z,c)), \ + (I[226] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[234] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[242] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[250] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[258] = (T)(img)(_p1##x,_p3##y,_n1##z,c)), \ + (I[266] = (T)(img)(_p1##x,_p2##y,_n1##z,c)), \ + (I[274] = (T)(img)(_p1##x,_p1##y,_n1##z,c)), \ + (I[282] = (T)(img)(_p1##x,y,_n1##z,c)), \ + (I[290] = (T)(img)(_p1##x,_n1##y,_n1##z,c)), \ + (I[298] = (T)(img)(_p1##x,_n2##y,_n1##z,c)), \ + (I[306] = (T)(img)(_p1##x,_n3##y,_n1##z,c)), \ + (I[314] = (T)(img)(_p1##x,_n4##y,_n1##z,c)), \ + (I[322] = (T)(img)(_p1##x,_p3##y,_n2##z,c)), \ + (I[330] = (T)(img)(_p1##x,_p2##y,_n2##z,c)), \ + (I[338] = (T)(img)(_p1##x,_p1##y,_n2##z,c)), \ + (I[346] = (T)(img)(_p1##x,y,_n2##z,c)), \ + (I[354] = (T)(img)(_p1##x,_n1##y,_n2##z,c)), \ + (I[362] = (T)(img)(_p1##x,_n2##y,_n2##z,c)), \ + (I[370] = (T)(img)(_p1##x,_n3##y,_n2##z,c)), \ + (I[378] = (T)(img)(_p1##x,_n4##y,_n2##z,c)), \ + (I[386] = (T)(img)(_p1##x,_p3##y,_n3##z,c)), \ + (I[394] = (T)(img)(_p1##x,_p2##y,_n3##z,c)), \ + (I[402] = (T)(img)(_p1##x,_p1##y,_n3##z,c)), \ + (I[410] = (T)(img)(_p1##x,y,_n3##z,c)), \ + (I[418] = (T)(img)(_p1##x,_n1##y,_n3##z,c)), \ + (I[426] = (T)(img)(_p1##x,_n2##y,_n3##z,c)), \ + (I[434] = (T)(img)(_p1##x,_n3##y,_n3##z,c)), \ + (I[442] = (T)(img)(_p1##x,_n4##y,_n3##z,c)), \ + (I[450] = (T)(img)(_p1##x,_p3##y,_n4##z,c)), \ + (I[458] = (T)(img)(_p1##x,_p2##y,_n4##z,c)), \ + (I[466] = (T)(img)(_p1##x,_p1##y,_n4##z,c)), \ + (I[474] = (T)(img)(_p1##x,y,_n4##z,c)), \ + (I[482] = (T)(img)(_p1##x,_n1##y,_n4##z,c)), \ + (I[490] = (T)(img)(_p1##x,_n2##y,_n4##z,c)), \ + (I[498] = (T)(img)(_p1##x,_n3##y,_n4##z,c)), \ + (I[506] = (T)(img)(_p1##x,_n4##y,_n4##z,c)), \ + (I[3] = (T)(img)(x,_p3##y,_p3##z,c)), \ + (I[11] = (T)(img)(x,_p2##y,_p3##z,c)), \ + (I[19] = (T)(img)(x,_p1##y,_p3##z,c)), \ + (I[27] = (T)(img)(x,y,_p3##z,c)), \ + (I[35] = (T)(img)(x,_n1##y,_p3##z,c)), \ + (I[43] = (T)(img)(x,_n2##y,_p3##z,c)), \ + (I[51] = (T)(img)(x,_n3##y,_p3##z,c)), \ + (I[59] = (T)(img)(x,_n4##y,_p3##z,c)), \ + (I[67] = (T)(img)(x,_p3##y,_p2##z,c)), \ + (I[75] = (T)(img)(x,_p2##y,_p2##z,c)), \ + (I[83] = (T)(img)(x,_p1##y,_p2##z,c)), \ + (I[91] = (T)(img)(x,y,_p2##z,c)), \ + (I[99] = (T)(img)(x,_n1##y,_p2##z,c)), \ + (I[107] = (T)(img)(x,_n2##y,_p2##z,c)), \ + (I[115] = (T)(img)(x,_n3##y,_p2##z,c)), \ + (I[123] = (T)(img)(x,_n4##y,_p2##z,c)), \ + (I[131] = (T)(img)(x,_p3##y,_p1##z,c)), \ + (I[139] = (T)(img)(x,_p2##y,_p1##z,c)), \ + (I[147] = (T)(img)(x,_p1##y,_p1##z,c)), \ + (I[155] = (T)(img)(x,y,_p1##z,c)), \ + (I[163] = (T)(img)(x,_n1##y,_p1##z,c)), \ + (I[171] = (T)(img)(x,_n2##y,_p1##z,c)), \ + (I[179] = (T)(img)(x,_n3##y,_p1##z,c)), \ + (I[187] = (T)(img)(x,_n4##y,_p1##z,c)), \ + (I[195] = (T)(img)(x,_p3##y,z,c)), \ + (I[203] = (T)(img)(x,_p2##y,z,c)), \ + (I[211] = (T)(img)(x,_p1##y,z,c)), \ + (I[219] = (T)(img)(x,y,z,c)), \ + (I[227] = (T)(img)(x,_n1##y,z,c)), \ + (I[235] = (T)(img)(x,_n2##y,z,c)), \ + (I[243] = (T)(img)(x,_n3##y,z,c)), \ + (I[251] = (T)(img)(x,_n4##y,z,c)), \ + (I[259] = (T)(img)(x,_p3##y,_n1##z,c)), \ + (I[267] = (T)(img)(x,_p2##y,_n1##z,c)), \ + (I[275] = (T)(img)(x,_p1##y,_n1##z,c)), \ + (I[283] = (T)(img)(x,y,_n1##z,c)), \ + (I[291] = (T)(img)(x,_n1##y,_n1##z,c)), \ + (I[299] = (T)(img)(x,_n2##y,_n1##z,c)), \ + (I[307] = (T)(img)(x,_n3##y,_n1##z,c)), \ + (I[315] = (T)(img)(x,_n4##y,_n1##z,c)), \ + (I[323] = (T)(img)(x,_p3##y,_n2##z,c)), \ + (I[331] = (T)(img)(x,_p2##y,_n2##z,c)), \ + (I[339] = (T)(img)(x,_p1##y,_n2##z,c)), \ + (I[347] = (T)(img)(x,y,_n2##z,c)), \ + (I[355] = (T)(img)(x,_n1##y,_n2##z,c)), \ + (I[363] = (T)(img)(x,_n2##y,_n2##z,c)), \ + (I[371] = (T)(img)(x,_n3##y,_n2##z,c)), \ + (I[379] = (T)(img)(x,_n4##y,_n2##z,c)), \ + (I[387] = (T)(img)(x,_p3##y,_n3##z,c)), \ + (I[395] = (T)(img)(x,_p2##y,_n3##z,c)), \ + (I[403] = (T)(img)(x,_p1##y,_n3##z,c)), \ + (I[411] = (T)(img)(x,y,_n3##z,c)), \ + (I[419] = (T)(img)(x,_n1##y,_n3##z,c)), \ + (I[427] = (T)(img)(x,_n2##y,_n3##z,c)), \ + (I[435] = (T)(img)(x,_n3##y,_n3##z,c)), \ + (I[443] = (T)(img)(x,_n4##y,_n3##z,c)), \ + (I[451] = (T)(img)(x,_p3##y,_n4##z,c)), \ + (I[459] = (T)(img)(x,_p2##y,_n4##z,c)), \ + (I[467] = (T)(img)(x,_p1##y,_n4##z,c)), \ + (I[475] = (T)(img)(x,y,_n4##z,c)), \ + (I[483] = (T)(img)(x,_n1##y,_n4##z,c)), \ + (I[491] = (T)(img)(x,_n2##y,_n4##z,c)), \ + (I[499] = (T)(img)(x,_n3##y,_n4##z,c)), \ + (I[507] = (T)(img)(x,_n4##y,_n4##z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,_p3##z,c)), \ + (I[12] = (T)(img)(_n1##x,_p2##y,_p3##z,c)), \ + (I[20] = (T)(img)(_n1##x,_p1##y,_p3##z,c)), \ + (I[28] = (T)(img)(_n1##x,y,_p3##z,c)), \ + (I[36] = (T)(img)(_n1##x,_n1##y,_p3##z,c)), \ + (I[44] = (T)(img)(_n1##x,_n2##y,_p3##z,c)), \ + (I[52] = (T)(img)(_n1##x,_n3##y,_p3##z,c)), \ + (I[60] = (T)(img)(_n1##x,_n4##y,_p3##z,c)), \ + (I[68] = (T)(img)(_n1##x,_p3##y,_p2##z,c)), \ + (I[76] = (T)(img)(_n1##x,_p2##y,_p2##z,c)), \ + (I[84] = (T)(img)(_n1##x,_p1##y,_p2##z,c)), \ + (I[92] = (T)(img)(_n1##x,y,_p2##z,c)), \ + (I[100] = (T)(img)(_n1##x,_n1##y,_p2##z,c)), \ + (I[108] = (T)(img)(_n1##x,_n2##y,_p2##z,c)), \ + (I[116] = (T)(img)(_n1##x,_n3##y,_p2##z,c)), \ + (I[124] = (T)(img)(_n1##x,_n4##y,_p2##z,c)), \ + (I[132] = (T)(img)(_n1##x,_p3##y,_p1##z,c)), \ + (I[140] = (T)(img)(_n1##x,_p2##y,_p1##z,c)), \ + (I[148] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[156] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[164] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[172] = (T)(img)(_n1##x,_n2##y,_p1##z,c)), \ + (I[180] = (T)(img)(_n1##x,_n3##y,_p1##z,c)), \ + (I[188] = (T)(img)(_n1##x,_n4##y,_p1##z,c)), \ + (I[196] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[204] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[212] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[220] = (T)(img)(_n1##x,y,z,c)), \ + (I[228] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[236] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[244] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[252] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[260] = (T)(img)(_n1##x,_p3##y,_n1##z,c)), \ + (I[268] = (T)(img)(_n1##x,_p2##y,_n1##z,c)), \ + (I[276] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[284] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[292] = (T)(img)(_n1##x,_n1##y,_n1##z,c)), \ + (I[300] = (T)(img)(_n1##x,_n2##y,_n1##z,c)), \ + (I[308] = (T)(img)(_n1##x,_n3##y,_n1##z,c)), \ + (I[316] = (T)(img)(_n1##x,_n4##y,_n1##z,c)), \ + (I[324] = (T)(img)(_n1##x,_p3##y,_n2##z,c)), \ + (I[332] = (T)(img)(_n1##x,_p2##y,_n2##z,c)), \ + (I[340] = (T)(img)(_n1##x,_p1##y,_n2##z,c)), \ + (I[348] = (T)(img)(_n1##x,y,_n2##z,c)), \ + (I[356] = (T)(img)(_n1##x,_n1##y,_n2##z,c)), \ + (I[364] = (T)(img)(_n1##x,_n2##y,_n2##z,c)), \ + (I[372] = (T)(img)(_n1##x,_n3##y,_n2##z,c)), \ + (I[380] = (T)(img)(_n1##x,_n4##y,_n2##z,c)), \ + (I[388] = (T)(img)(_n1##x,_p3##y,_n3##z,c)), \ + (I[396] = (T)(img)(_n1##x,_p2##y,_n3##z,c)), \ + (I[404] = (T)(img)(_n1##x,_p1##y,_n3##z,c)), \ + (I[412] = (T)(img)(_n1##x,y,_n3##z,c)), \ + (I[420] = (T)(img)(_n1##x,_n1##y,_n3##z,c)), \ + (I[428] = (T)(img)(_n1##x,_n2##y,_n3##z,c)), \ + (I[436] = (T)(img)(_n1##x,_n3##y,_n3##z,c)), \ + (I[444] = (T)(img)(_n1##x,_n4##y,_n3##z,c)), \ + (I[452] = (T)(img)(_n1##x,_p3##y,_n4##z,c)), \ + (I[460] = (T)(img)(_n1##x,_p2##y,_n4##z,c)), \ + (I[468] = (T)(img)(_n1##x,_p1##y,_n4##z,c)), \ + (I[476] = (T)(img)(_n1##x,y,_n4##z,c)), \ + (I[484] = (T)(img)(_n1##x,_n1##y,_n4##z,c)), \ + (I[492] = (T)(img)(_n1##x,_n2##y,_n4##z,c)), \ + (I[500] = (T)(img)(_n1##x,_n3##y,_n4##z,c)), \ + (I[508] = (T)(img)(_n1##x,_n4##y,_n4##z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,_p3##z,c)), \ + (I[13] = (T)(img)(_n2##x,_p2##y,_p3##z,c)), \ + (I[21] = (T)(img)(_n2##x,_p1##y,_p3##z,c)), \ + (I[29] = (T)(img)(_n2##x,y,_p3##z,c)), \ + (I[37] = (T)(img)(_n2##x,_n1##y,_p3##z,c)), \ + (I[45] = (T)(img)(_n2##x,_n2##y,_p3##z,c)), \ + (I[53] = (T)(img)(_n2##x,_n3##y,_p3##z,c)), \ + (I[61] = (T)(img)(_n2##x,_n4##y,_p3##z,c)), \ + (I[69] = (T)(img)(_n2##x,_p3##y,_p2##z,c)), \ + (I[77] = (T)(img)(_n2##x,_p2##y,_p2##z,c)), \ + (I[85] = (T)(img)(_n2##x,_p1##y,_p2##z,c)), \ + (I[93] = (T)(img)(_n2##x,y,_p2##z,c)), \ + (I[101] = (T)(img)(_n2##x,_n1##y,_p2##z,c)), \ + (I[109] = (T)(img)(_n2##x,_n2##y,_p2##z,c)), \ + (I[117] = (T)(img)(_n2##x,_n3##y,_p2##z,c)), \ + (I[125] = (T)(img)(_n2##x,_n4##y,_p2##z,c)), \ + (I[133] = (T)(img)(_n2##x,_p3##y,_p1##z,c)), \ + (I[141] = (T)(img)(_n2##x,_p2##y,_p1##z,c)), \ + (I[149] = (T)(img)(_n2##x,_p1##y,_p1##z,c)), \ + (I[157] = (T)(img)(_n2##x,y,_p1##z,c)), \ + (I[165] = (T)(img)(_n2##x,_n1##y,_p1##z,c)), \ + (I[173] = (T)(img)(_n2##x,_n2##y,_p1##z,c)), \ + (I[181] = (T)(img)(_n2##x,_n3##y,_p1##z,c)), \ + (I[189] = (T)(img)(_n2##x,_n4##y,_p1##z,c)), \ + (I[197] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[205] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[213] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[221] = (T)(img)(_n2##x,y,z,c)), \ + (I[229] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[237] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[245] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[253] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[261] = (T)(img)(_n2##x,_p3##y,_n1##z,c)), \ + (I[269] = (T)(img)(_n2##x,_p2##y,_n1##z,c)), \ + (I[277] = (T)(img)(_n2##x,_p1##y,_n1##z,c)), \ + (I[285] = (T)(img)(_n2##x,y,_n1##z,c)), \ + (I[293] = (T)(img)(_n2##x,_n1##y,_n1##z,c)), \ + (I[301] = (T)(img)(_n2##x,_n2##y,_n1##z,c)), \ + (I[309] = (T)(img)(_n2##x,_n3##y,_n1##z,c)), \ + (I[317] = (T)(img)(_n2##x,_n4##y,_n1##z,c)), \ + (I[325] = (T)(img)(_n2##x,_p3##y,_n2##z,c)), \ + (I[333] = (T)(img)(_n2##x,_p2##y,_n2##z,c)), \ + (I[341] = (T)(img)(_n2##x,_p1##y,_n2##z,c)), \ + (I[349] = (T)(img)(_n2##x,y,_n2##z,c)), \ + (I[357] = (T)(img)(_n2##x,_n1##y,_n2##z,c)), \ + (I[365] = (T)(img)(_n2##x,_n2##y,_n2##z,c)), \ + (I[373] = (T)(img)(_n2##x,_n3##y,_n2##z,c)), \ + (I[381] = (T)(img)(_n2##x,_n4##y,_n2##z,c)), \ + (I[389] = (T)(img)(_n2##x,_p3##y,_n3##z,c)), \ + (I[397] = (T)(img)(_n2##x,_p2##y,_n3##z,c)), \ + (I[405] = (T)(img)(_n2##x,_p1##y,_n3##z,c)), \ + (I[413] = (T)(img)(_n2##x,y,_n3##z,c)), \ + (I[421] = (T)(img)(_n2##x,_n1##y,_n3##z,c)), \ + (I[429] = (T)(img)(_n2##x,_n2##y,_n3##z,c)), \ + (I[437] = (T)(img)(_n2##x,_n3##y,_n3##z,c)), \ + (I[445] = (T)(img)(_n2##x,_n4##y,_n3##z,c)), \ + (I[453] = (T)(img)(_n2##x,_p3##y,_n4##z,c)), \ + (I[461] = (T)(img)(_n2##x,_p2##y,_n4##z,c)), \ + (I[469] = (T)(img)(_n2##x,_p1##y,_n4##z,c)), \ + (I[477] = (T)(img)(_n2##x,y,_n4##z,c)), \ + (I[485] = (T)(img)(_n2##x,_n1##y,_n4##z,c)), \ + (I[493] = (T)(img)(_n2##x,_n2##y,_n4##z,c)), \ + (I[501] = (T)(img)(_n2##x,_n3##y,_n4##z,c)), \ + (I[509] = (T)(img)(_n2##x,_n4##y,_n4##z,c)), \ + (I[6] = (T)(img)(_n3##x,_p3##y,_p3##z,c)), \ + (I[14] = (T)(img)(_n3##x,_p2##y,_p3##z,c)), \ + (I[22] = (T)(img)(_n3##x,_p1##y,_p3##z,c)), \ + (I[30] = (T)(img)(_n3##x,y,_p3##z,c)), \ + (I[38] = (T)(img)(_n3##x,_n1##y,_p3##z,c)), \ + (I[46] = (T)(img)(_n3##x,_n2##y,_p3##z,c)), \ + (I[54] = (T)(img)(_n3##x,_n3##y,_p3##z,c)), \ + (I[62] = (T)(img)(_n3##x,_n4##y,_p3##z,c)), \ + (I[70] = (T)(img)(_n3##x,_p3##y,_p2##z,c)), \ + (I[78] = (T)(img)(_n3##x,_p2##y,_p2##z,c)), \ + (I[86] = (T)(img)(_n3##x,_p1##y,_p2##z,c)), \ + (I[94] = (T)(img)(_n3##x,y,_p2##z,c)), \ + (I[102] = (T)(img)(_n3##x,_n1##y,_p2##z,c)), \ + (I[110] = (T)(img)(_n3##x,_n2##y,_p2##z,c)), \ + (I[118] = (T)(img)(_n3##x,_n3##y,_p2##z,c)), \ + (I[126] = (T)(img)(_n3##x,_n4##y,_p2##z,c)), \ + (I[134] = (T)(img)(_n3##x,_p3##y,_p1##z,c)), \ + (I[142] = (T)(img)(_n3##x,_p2##y,_p1##z,c)), \ + (I[150] = (T)(img)(_n3##x,_p1##y,_p1##z,c)), \ + (I[158] = (T)(img)(_n3##x,y,_p1##z,c)), \ + (I[166] = (T)(img)(_n3##x,_n1##y,_p1##z,c)), \ + (I[174] = (T)(img)(_n3##x,_n2##y,_p1##z,c)), \ + (I[182] = (T)(img)(_n3##x,_n3##y,_p1##z,c)), \ + (I[190] = (T)(img)(_n3##x,_n4##y,_p1##z,c)), \ + (I[198] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[206] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[214] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[222] = (T)(img)(_n3##x,y,z,c)), \ + (I[230] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[238] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[246] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[254] = (T)(img)(_n3##x,_n4##y,z,c)), \ + (I[262] = (T)(img)(_n3##x,_p3##y,_n1##z,c)), \ + (I[270] = (T)(img)(_n3##x,_p2##y,_n1##z,c)), \ + (I[278] = (T)(img)(_n3##x,_p1##y,_n1##z,c)), \ + (I[286] = (T)(img)(_n3##x,y,_n1##z,c)), \ + (I[294] = (T)(img)(_n3##x,_n1##y,_n1##z,c)), \ + (I[302] = (T)(img)(_n3##x,_n2##y,_n1##z,c)), \ + (I[310] = (T)(img)(_n3##x,_n3##y,_n1##z,c)), \ + (I[318] = (T)(img)(_n3##x,_n4##y,_n1##z,c)), \ + (I[326] = (T)(img)(_n3##x,_p3##y,_n2##z,c)), \ + (I[334] = (T)(img)(_n3##x,_p2##y,_n2##z,c)), \ + (I[342] = (T)(img)(_n3##x,_p1##y,_n2##z,c)), \ + (I[350] = (T)(img)(_n3##x,y,_n2##z,c)), \ + (I[358] = (T)(img)(_n3##x,_n1##y,_n2##z,c)), \ + (I[366] = (T)(img)(_n3##x,_n2##y,_n2##z,c)), \ + (I[374] = (T)(img)(_n3##x,_n3##y,_n2##z,c)), \ + (I[382] = (T)(img)(_n3##x,_n4##y,_n2##z,c)), \ + (I[390] = (T)(img)(_n3##x,_p3##y,_n3##z,c)), \ + (I[398] = (T)(img)(_n3##x,_p2##y,_n3##z,c)), \ + (I[406] = (T)(img)(_n3##x,_p1##y,_n3##z,c)), \ + (I[414] = (T)(img)(_n3##x,y,_n3##z,c)), \ + (I[422] = (T)(img)(_n3##x,_n1##y,_n3##z,c)), \ + (I[430] = (T)(img)(_n3##x,_n2##y,_n3##z,c)), \ + (I[438] = (T)(img)(_n3##x,_n3##y,_n3##z,c)), \ + (I[446] = (T)(img)(_n3##x,_n4##y,_n3##z,c)), \ + (I[454] = (T)(img)(_n3##x,_p3##y,_n4##z,c)), \ + (I[462] = (T)(img)(_n3##x,_p2##y,_n4##z,c)), \ + (I[470] = (T)(img)(_n3##x,_p1##y,_n4##z,c)), \ + (I[478] = (T)(img)(_n3##x,y,_n4##z,c)), \ + (I[486] = (T)(img)(_n3##x,_n1##y,_n4##z,c)), \ + (I[494] = (T)(img)(_n3##x,_n2##y,_n4##z,c)), \ + (I[502] = (T)(img)(_n3##x,_n3##y,_n4##z,c)), \ + (I[510] = (T)(img)(_n3##x,_n4##y,_n4##z,c)), \ + x + 4>=(img).width()?(img).width() - 1:x + 4); \ + x<=(int)(x1) && ((_n4##x<(img).width() && ( \ + (I[7] = (T)(img)(_n4##x,_p3##y,_p3##z,c)), \ + (I[15] = (T)(img)(_n4##x,_p2##y,_p3##z,c)), \ + (I[23] = (T)(img)(_n4##x,_p1##y,_p3##z,c)), \ + (I[31] = (T)(img)(_n4##x,y,_p3##z,c)), \ + (I[39] = (T)(img)(_n4##x,_n1##y,_p3##z,c)), \ + (I[47] = (T)(img)(_n4##x,_n2##y,_p3##z,c)), \ + (I[55] = (T)(img)(_n4##x,_n3##y,_p3##z,c)), \ + (I[63] = (T)(img)(_n4##x,_n4##y,_p3##z,c)), \ + (I[71] = (T)(img)(_n4##x,_p3##y,_p2##z,c)), \ + (I[79] = (T)(img)(_n4##x,_p2##y,_p2##z,c)), \ + (I[87] = (T)(img)(_n4##x,_p1##y,_p2##z,c)), \ + (I[95] = (T)(img)(_n4##x,y,_p2##z,c)), \ + (I[103] = (T)(img)(_n4##x,_n1##y,_p2##z,c)), \ + (I[111] = (T)(img)(_n4##x,_n2##y,_p2##z,c)), \ + (I[119] = (T)(img)(_n4##x,_n3##y,_p2##z,c)), \ + (I[127] = (T)(img)(_n4##x,_n4##y,_p2##z,c)), \ + (I[135] = (T)(img)(_n4##x,_p3##y,_p1##z,c)), \ + (I[143] = (T)(img)(_n4##x,_p2##y,_p1##z,c)), \ + (I[151] = (T)(img)(_n4##x,_p1##y,_p1##z,c)), \ + (I[159] = (T)(img)(_n4##x,y,_p1##z,c)), \ + (I[167] = (T)(img)(_n4##x,_n1##y,_p1##z,c)), \ + (I[175] = (T)(img)(_n4##x,_n2##y,_p1##z,c)), \ + (I[183] = (T)(img)(_n4##x,_n3##y,_p1##z,c)), \ + (I[191] = (T)(img)(_n4##x,_n4##y,_p1##z,c)), \ + (I[199] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[207] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[215] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[223] = (T)(img)(_n4##x,y,z,c)), \ + (I[231] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[239] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[247] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[255] = (T)(img)(_n4##x,_n4##y,z,c)), \ + (I[263] = (T)(img)(_n4##x,_p3##y,_n1##z,c)), \ + (I[271] = (T)(img)(_n4##x,_p2##y,_n1##z,c)), \ + (I[279] = (T)(img)(_n4##x,_p1##y,_n1##z,c)), \ + (I[287] = (T)(img)(_n4##x,y,_n1##z,c)), \ + (I[295] = (T)(img)(_n4##x,_n1##y,_n1##z,c)), \ + (I[303] = (T)(img)(_n4##x,_n2##y,_n1##z,c)), \ + (I[311] = (T)(img)(_n4##x,_n3##y,_n1##z,c)), \ + (I[319] = (T)(img)(_n4##x,_n4##y,_n1##z,c)), \ + (I[327] = (T)(img)(_n4##x,_p3##y,_n2##z,c)), \ + (I[335] = (T)(img)(_n4##x,_p2##y,_n2##z,c)), \ + (I[343] = (T)(img)(_n4##x,_p1##y,_n2##z,c)), \ + (I[351] = (T)(img)(_n4##x,y,_n2##z,c)), \ + (I[359] = (T)(img)(_n4##x,_n1##y,_n2##z,c)), \ + (I[367] = (T)(img)(_n4##x,_n2##y,_n2##z,c)), \ + (I[375] = (T)(img)(_n4##x,_n3##y,_n2##z,c)), \ + (I[383] = (T)(img)(_n4##x,_n4##y,_n2##z,c)), \ + (I[391] = (T)(img)(_n4##x,_p3##y,_n3##z,c)), \ + (I[399] = (T)(img)(_n4##x,_p2##y,_n3##z,c)), \ + (I[407] = (T)(img)(_n4##x,_p1##y,_n3##z,c)), \ + (I[415] = (T)(img)(_n4##x,y,_n3##z,c)), \ + (I[423] = (T)(img)(_n4##x,_n1##y,_n3##z,c)), \ + (I[431] = (T)(img)(_n4##x,_n2##y,_n3##z,c)), \ + (I[439] = (T)(img)(_n4##x,_n3##y,_n3##z,c)), \ + (I[447] = (T)(img)(_n4##x,_n4##y,_n3##z,c)), \ + (I[455] = (T)(img)(_n4##x,_p3##y,_n4##z,c)), \ + (I[463] = (T)(img)(_n4##x,_p2##y,_n4##z,c)), \ + (I[471] = (T)(img)(_n4##x,_p1##y,_n4##z,c)), \ + (I[479] = (T)(img)(_n4##x,y,_n4##z,c)), \ + (I[487] = (T)(img)(_n4##x,_n1##y,_n4##z,c)), \ + (I[495] = (T)(img)(_n4##x,_n2##y,_n4##z,c)), \ + (I[503] = (T)(img)(_n4##x,_n3##y,_n4##z,c)), \ + (I[511] = (T)(img)(_n4##x,_n4##y,_n4##z,c)),1)) || \ + _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[80] = I[81], I[81] = I[82], I[82] = I[83], I[83] = I[84], I[84] = I[85], I[85] = I[86], I[86] = I[87], \ + I[88] = I[89], I[89] = I[90], I[90] = I[91], I[91] = I[92], I[92] = I[93], I[93] = I[94], I[94] = I[95], \ + I[96] = I[97], I[97] = I[98], I[98] = I[99], I[99] = I[100], I[100] = I[101], I[101] = I[102], I[102] = I[103], \ + I[104] = I[105], I[105] = I[106], I[106] = I[107], I[107] = I[108], I[108] = I[109], I[109] = I[110], I[110] = I[111], \ + I[112] = I[113], I[113] = I[114], I[114] = I[115], I[115] = I[116], I[116] = I[117], I[117] = I[118], I[118] = I[119], \ + I[120] = I[121], I[121] = I[122], I[122] = I[123], I[123] = I[124], I[124] = I[125], I[125] = I[126], I[126] = I[127], \ + I[128] = I[129], I[129] = I[130], I[130] = I[131], I[131] = I[132], I[132] = I[133], I[133] = I[134], I[134] = I[135], \ + I[136] = I[137], I[137] = I[138], I[138] = I[139], I[139] = I[140], I[140] = I[141], I[141] = I[142], I[142] = I[143], \ + I[144] = I[145], I[145] = I[146], I[146] = I[147], I[147] = I[148], I[148] = I[149], I[149] = I[150], I[150] = I[151], \ + I[152] = I[153], I[153] = I[154], I[154] = I[155], I[155] = I[156], I[156] = I[157], I[157] = I[158], I[158] = I[159], \ + I[160] = I[161], I[161] = I[162], I[162] = I[163], I[163] = I[164], I[164] = I[165], I[165] = I[166], I[166] = I[167], \ + I[168] = I[169], I[169] = I[170], I[170] = I[171], I[171] = I[172], I[172] = I[173], I[173] = I[174], I[174] = I[175], \ + I[176] = I[177], I[177] = I[178], I[178] = I[179], I[179] = I[180], I[180] = I[181], I[181] = I[182], I[182] = I[183], \ + I[184] = I[185], I[185] = I[186], I[186] = I[187], I[187] = I[188], I[188] = I[189], I[189] = I[190], I[190] = I[191], \ + I[192] = I[193], I[193] = I[194], I[194] = I[195], I[195] = I[196], I[196] = I[197], I[197] = I[198], I[198] = I[199], \ + I[200] = I[201], I[201] = I[202], I[202] = I[203], I[203] = I[204], I[204] = I[205], I[205] = I[206], I[206] = I[207], \ + I[208] = I[209], I[209] = I[210], I[210] = I[211], I[211] = I[212], I[212] = I[213], I[213] = I[214], I[214] = I[215], \ + I[216] = I[217], I[217] = I[218], I[218] = I[219], I[219] = I[220], I[220] = I[221], I[221] = I[222], I[222] = I[223], \ + I[224] = I[225], I[225] = I[226], I[226] = I[227], I[227] = I[228], I[228] = I[229], I[229] = I[230], I[230] = I[231], \ + I[232] = I[233], I[233] = I[234], I[234] = I[235], I[235] = I[236], I[236] = I[237], I[237] = I[238], I[238] = I[239], \ + I[240] = I[241], I[241] = I[242], I[242] = I[243], I[243] = I[244], I[244] = I[245], I[245] = I[246], I[246] = I[247], \ + I[248] = I[249], I[249] = I[250], I[250] = I[251], I[251] = I[252], I[252] = I[253], I[253] = I[254], I[254] = I[255], \ + I[256] = I[257], I[257] = I[258], I[258] = I[259], I[259] = I[260], I[260] = I[261], I[261] = I[262], I[262] = I[263], \ + I[264] = I[265], I[265] = I[266], I[266] = I[267], I[267] = I[268], I[268] = I[269], I[269] = I[270], I[270] = I[271], \ + I[272] = I[273], I[273] = I[274], I[274] = I[275], I[275] = I[276], I[276] = I[277], I[277] = I[278], I[278] = I[279], \ + I[280] = I[281], I[281] = I[282], I[282] = I[283], I[283] = I[284], I[284] = I[285], I[285] = I[286], I[286] = I[287], \ + I[288] = I[289], I[289] = I[290], I[290] = I[291], I[291] = I[292], I[292] = I[293], I[293] = I[294], I[294] = I[295], \ + I[296] = I[297], I[297] = I[298], I[298] = I[299], I[299] = I[300], I[300] = I[301], I[301] = I[302], I[302] = I[303], \ + I[304] = I[305], I[305] = I[306], I[306] = I[307], I[307] = I[308], I[308] = I[309], I[309] = I[310], I[310] = I[311], \ + I[312] = I[313], I[313] = I[314], I[314] = I[315], I[315] = I[316], I[316] = I[317], I[317] = I[318], I[318] = I[319], \ + I[320] = I[321], I[321] = I[322], I[322] = I[323], I[323] = I[324], I[324] = I[325], I[325] = I[326], I[326] = I[327], \ + I[328] = I[329], I[329] = I[330], I[330] = I[331], I[331] = I[332], I[332] = I[333], I[333] = I[334], I[334] = I[335], \ + I[336] = I[337], I[337] = I[338], I[338] = I[339], I[339] = I[340], I[340] = I[341], I[341] = I[342], I[342] = I[343], \ + I[344] = I[345], I[345] = I[346], I[346] = I[347], I[347] = I[348], I[348] = I[349], I[349] = I[350], I[350] = I[351], \ + I[352] = I[353], I[353] = I[354], I[354] = I[355], I[355] = I[356], I[356] = I[357], I[357] = I[358], I[358] = I[359], \ + I[360] = I[361], I[361] = I[362], I[362] = I[363], I[363] = I[364], I[364] = I[365], I[365] = I[366], I[366] = I[367], \ + I[368] = I[369], I[369] = I[370], I[370] = I[371], I[371] = I[372], I[372] = I[373], I[373] = I[374], I[374] = I[375], \ + I[376] = I[377], I[377] = I[378], I[378] = I[379], I[379] = I[380], I[380] = I[381], I[381] = I[382], I[382] = I[383], \ + I[384] = I[385], I[385] = I[386], I[386] = I[387], I[387] = I[388], I[388] = I[389], I[389] = I[390], I[390] = I[391], \ + I[392] = I[393], I[393] = I[394], I[394] = I[395], I[395] = I[396], I[396] = I[397], I[397] = I[398], I[398] = I[399], \ + I[400] = I[401], I[401] = I[402], I[402] = I[403], I[403] = I[404], I[404] = I[405], I[405] = I[406], I[406] = I[407], \ + I[408] = I[409], I[409] = I[410], I[410] = I[411], I[411] = I[412], I[412] = I[413], I[413] = I[414], I[414] = I[415], \ + I[416] = I[417], I[417] = I[418], I[418] = I[419], I[419] = I[420], I[420] = I[421], I[421] = I[422], I[422] = I[423], \ + I[424] = I[425], I[425] = I[426], I[426] = I[427], I[427] = I[428], I[428] = I[429], I[429] = I[430], I[430] = I[431], \ + I[432] = I[433], I[433] = I[434], I[434] = I[435], I[435] = I[436], I[436] = I[437], I[437] = I[438], I[438] = I[439], \ + I[440] = I[441], I[441] = I[442], I[442] = I[443], I[443] = I[444], I[444] = I[445], I[445] = I[446], I[446] = I[447], \ + I[448] = I[449], I[449] = I[450], I[450] = I[451], I[451] = I[452], I[452] = I[453], I[453] = I[454], I[454] = I[455], \ + I[456] = I[457], I[457] = I[458], I[458] = I[459], I[459] = I[460], I[460] = I[461], I[461] = I[462], I[462] = I[463], \ + I[464] = I[465], I[465] = I[466], I[466] = I[467], I[467] = I[468], I[468] = I[469], I[469] = I[470], I[470] = I[471], \ + I[472] = I[473], I[473] = I[474], I[474] = I[475], I[475] = I[476], I[476] = I[477], I[477] = I[478], I[478] = I[479], \ + I[480] = I[481], I[481] = I[482], I[482] = I[483], I[483] = I[484], I[484] = I[485], I[485] = I[486], I[486] = I[487], \ + I[488] = I[489], I[489] = I[490], I[490] = I[491], I[491] = I[492], I[492] = I[493], I[493] = I[494], I[494] = I[495], \ + I[496] = I[497], I[497] = I[498], I[498] = I[499], I[499] = I[500], I[500] = I[501], I[501] = I[502], I[502] = I[503], \ + I[504] = I[505], I[505] = I[506], I[506] = I[507], I[507] = I[508], I[508] = I[509], I[509] = I[510], I[510] = I[511], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x) + +#define cimg_get8x8x8(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p3##x,_p3##y,_p3##z,c), I[1] = (T)(img)(_p2##x,_p3##y,_p3##z,c), I[2] = (T)(img)(_p1##x,_p3##y,_p3##z,c), I[3] = (T)(img)(x,_p3##y,_p3##z,c), I[4] = (T)(img)(_n1##x,_p3##y,_p3##z,c), I[5] = (T)(img)(_n2##x,_p3##y,_p3##z,c), I[6] = (T)(img)(_n3##x,_p3##y,_p3##z,c), I[7] = (T)(img)(_n4##x,_p3##y,_p3##z,c), \ + I[8] = (T)(img)(_p3##x,_p2##y,_p3##z,c), I[9] = (T)(img)(_p2##x,_p2##y,_p3##z,c), I[10] = (T)(img)(_p1##x,_p2##y,_p3##z,c), I[11] = (T)(img)(x,_p2##y,_p3##z,c), I[12] = (T)(img)(_n1##x,_p2##y,_p3##z,c), I[13] = (T)(img)(_n2##x,_p2##y,_p3##z,c), I[14] = (T)(img)(_n3##x,_p2##y,_p3##z,c), I[15] = (T)(img)(_n4##x,_p2##y,_p3##z,c), \ + I[16] = (T)(img)(_p3##x,_p1##y,_p3##z,c), I[17] = (T)(img)(_p2##x,_p1##y,_p3##z,c), I[18] = (T)(img)(_p1##x,_p1##y,_p3##z,c), I[19] = (T)(img)(x,_p1##y,_p3##z,c), I[20] = (T)(img)(_n1##x,_p1##y,_p3##z,c), I[21] = (T)(img)(_n2##x,_p1##y,_p3##z,c), I[22] = (T)(img)(_n3##x,_p1##y,_p3##z,c), I[23] = (T)(img)(_n4##x,_p1##y,_p3##z,c), \ + I[24] = (T)(img)(_p3##x,y,_p3##z,c), I[25] = (T)(img)(_p2##x,y,_p3##z,c), I[26] = (T)(img)(_p1##x,y,_p3##z,c), I[27] = (T)(img)(x,y,_p3##z,c), I[28] = (T)(img)(_n1##x,y,_p3##z,c), I[29] = (T)(img)(_n2##x,y,_p3##z,c), I[30] = (T)(img)(_n3##x,y,_p3##z,c), I[31] = (T)(img)(_n4##x,y,_p3##z,c), \ + I[32] = (T)(img)(_p3##x,_n1##y,_p3##z,c), I[33] = (T)(img)(_p2##x,_n1##y,_p3##z,c), I[34] = (T)(img)(_p1##x,_n1##y,_p3##z,c), I[35] = (T)(img)(x,_n1##y,_p3##z,c), I[36] = (T)(img)(_n1##x,_n1##y,_p3##z,c), I[37] = (T)(img)(_n2##x,_n1##y,_p3##z,c), I[38] = (T)(img)(_n3##x,_n1##y,_p3##z,c), I[39] = (T)(img)(_n4##x,_n1##y,_p3##z,c), \ + I[40] = (T)(img)(_p3##x,_n2##y,_p3##z,c), I[41] = (T)(img)(_p2##x,_n2##y,_p3##z,c), I[42] = (T)(img)(_p1##x,_n2##y,_p3##z,c), I[43] = (T)(img)(x,_n2##y,_p3##z,c), I[44] = (T)(img)(_n1##x,_n2##y,_p3##z,c), I[45] = (T)(img)(_n2##x,_n2##y,_p3##z,c), I[46] = (T)(img)(_n3##x,_n2##y,_p3##z,c), I[47] = (T)(img)(_n4##x,_n2##y,_p3##z,c), \ + I[48] = (T)(img)(_p3##x,_n3##y,_p3##z,c), I[49] = (T)(img)(_p2##x,_n3##y,_p3##z,c), I[50] = (T)(img)(_p1##x,_n3##y,_p3##z,c), I[51] = (T)(img)(x,_n3##y,_p3##z,c), I[52] = (T)(img)(_n1##x,_n3##y,_p3##z,c), I[53] = (T)(img)(_n2##x,_n3##y,_p3##z,c), I[54] = (T)(img)(_n3##x,_n3##y,_p3##z,c), I[55] = (T)(img)(_n4##x,_n3##y,_p3##z,c), \ + I[56] = (T)(img)(_p3##x,_n4##y,_p3##z,c), I[57] = (T)(img)(_p2##x,_n4##y,_p3##z,c), I[58] = (T)(img)(_p1##x,_n4##y,_p3##z,c), I[59] = (T)(img)(x,_n4##y,_p3##z,c), I[60] = (T)(img)(_n1##x,_n4##y,_p3##z,c), I[61] = (T)(img)(_n2##x,_n4##y,_p3##z,c), I[62] = (T)(img)(_n3##x,_n4##y,_p3##z,c), I[63] = (T)(img)(_n4##x,_n4##y,_p3##z,c), \ + I[64] = (T)(img)(_p3##x,_p3##y,_p2##z,c), I[65] = (T)(img)(_p2##x,_p3##y,_p2##z,c), I[66] = (T)(img)(_p1##x,_p3##y,_p2##z,c), I[67] = (T)(img)(x,_p3##y,_p2##z,c), I[68] = (T)(img)(_n1##x,_p3##y,_p2##z,c), I[69] = (T)(img)(_n2##x,_p3##y,_p2##z,c), I[70] = (T)(img)(_n3##x,_p3##y,_p2##z,c), I[71] = (T)(img)(_n4##x,_p3##y,_p2##z,c), \ + I[72] = (T)(img)(_p3##x,_p2##y,_p2##z,c), I[73] = (T)(img)(_p2##x,_p2##y,_p2##z,c), I[74] = (T)(img)(_p1##x,_p2##y,_p2##z,c), I[75] = (T)(img)(x,_p2##y,_p2##z,c), I[76] = (T)(img)(_n1##x,_p2##y,_p2##z,c), I[77] = (T)(img)(_n2##x,_p2##y,_p2##z,c), I[78] = (T)(img)(_n3##x,_p2##y,_p2##z,c), I[79] = (T)(img)(_n4##x,_p2##y,_p2##z,c), \ + I[80] = (T)(img)(_p3##x,_p1##y,_p2##z,c), I[81] = (T)(img)(_p2##x,_p1##y,_p2##z,c), I[82] = (T)(img)(_p1##x,_p1##y,_p2##z,c), I[83] = (T)(img)(x,_p1##y,_p2##z,c), I[84] = (T)(img)(_n1##x,_p1##y,_p2##z,c), I[85] = (T)(img)(_n2##x,_p1##y,_p2##z,c), I[86] = (T)(img)(_n3##x,_p1##y,_p2##z,c), I[87] = (T)(img)(_n4##x,_p1##y,_p2##z,c), \ + I[88] = (T)(img)(_p3##x,y,_p2##z,c), I[89] = (T)(img)(_p2##x,y,_p2##z,c), I[90] = (T)(img)(_p1##x,y,_p2##z,c), I[91] = (T)(img)(x,y,_p2##z,c), I[92] = (T)(img)(_n1##x,y,_p2##z,c), I[93] = (T)(img)(_n2##x,y,_p2##z,c), I[94] = (T)(img)(_n3##x,y,_p2##z,c), I[95] = (T)(img)(_n4##x,y,_p2##z,c), \ + I[96] = (T)(img)(_p3##x,_n1##y,_p2##z,c), I[97] = (T)(img)(_p2##x,_n1##y,_p2##z,c), I[98] = (T)(img)(_p1##x,_n1##y,_p2##z,c), I[99] = (T)(img)(x,_n1##y,_p2##z,c), I[100] = (T)(img)(_n1##x,_n1##y,_p2##z,c), I[101] = (T)(img)(_n2##x,_n1##y,_p2##z,c), I[102] = (T)(img)(_n3##x,_n1##y,_p2##z,c), I[103] = (T)(img)(_n4##x,_n1##y,_p2##z,c), \ + I[104] = (T)(img)(_p3##x,_n2##y,_p2##z,c), I[105] = (T)(img)(_p2##x,_n2##y,_p2##z,c), I[106] = (T)(img)(_p1##x,_n2##y,_p2##z,c), I[107] = (T)(img)(x,_n2##y,_p2##z,c), I[108] = (T)(img)(_n1##x,_n2##y,_p2##z,c), I[109] = (T)(img)(_n2##x,_n2##y,_p2##z,c), I[110] = (T)(img)(_n3##x,_n2##y,_p2##z,c), I[111] = (T)(img)(_n4##x,_n2##y,_p2##z,c), \ + I[112] = (T)(img)(_p3##x,_n3##y,_p2##z,c), I[113] = (T)(img)(_p2##x,_n3##y,_p2##z,c), I[114] = (T)(img)(_p1##x,_n3##y,_p2##z,c), I[115] = (T)(img)(x,_n3##y,_p2##z,c), I[116] = (T)(img)(_n1##x,_n3##y,_p2##z,c), I[117] = (T)(img)(_n2##x,_n3##y,_p2##z,c), I[118] = (T)(img)(_n3##x,_n3##y,_p2##z,c), I[119] = (T)(img)(_n4##x,_n3##y,_p2##z,c), \ + I[120] = (T)(img)(_p3##x,_n4##y,_p2##z,c), I[121] = (T)(img)(_p2##x,_n4##y,_p2##z,c), I[122] = (T)(img)(_p1##x,_n4##y,_p2##z,c), I[123] = (T)(img)(x,_n4##y,_p2##z,c), I[124] = (T)(img)(_n1##x,_n4##y,_p2##z,c), I[125] = (T)(img)(_n2##x,_n4##y,_p2##z,c), I[126] = (T)(img)(_n3##x,_n4##y,_p2##z,c), I[127] = (T)(img)(_n4##x,_n4##y,_p2##z,c), \ + I[128] = (T)(img)(_p3##x,_p3##y,_p1##z,c), I[129] = (T)(img)(_p2##x,_p3##y,_p1##z,c), I[130] = (T)(img)(_p1##x,_p3##y,_p1##z,c), I[131] = (T)(img)(x,_p3##y,_p1##z,c), I[132] = (T)(img)(_n1##x,_p3##y,_p1##z,c), I[133] = (T)(img)(_n2##x,_p3##y,_p1##z,c), I[134] = (T)(img)(_n3##x,_p3##y,_p1##z,c), I[135] = (T)(img)(_n4##x,_p3##y,_p1##z,c), \ + I[136] = (T)(img)(_p3##x,_p2##y,_p1##z,c), I[137] = (T)(img)(_p2##x,_p2##y,_p1##z,c), I[138] = (T)(img)(_p1##x,_p2##y,_p1##z,c), I[139] = (T)(img)(x,_p2##y,_p1##z,c), I[140] = (T)(img)(_n1##x,_p2##y,_p1##z,c), I[141] = (T)(img)(_n2##x,_p2##y,_p1##z,c), I[142] = (T)(img)(_n3##x,_p2##y,_p1##z,c), I[143] = (T)(img)(_n4##x,_p2##y,_p1##z,c), \ + I[144] = (T)(img)(_p3##x,_p1##y,_p1##z,c), I[145] = (T)(img)(_p2##x,_p1##y,_p1##z,c), I[146] = (T)(img)(_p1##x,_p1##y,_p1##z,c), I[147] = (T)(img)(x,_p1##y,_p1##z,c), I[148] = (T)(img)(_n1##x,_p1##y,_p1##z,c), I[149] = (T)(img)(_n2##x,_p1##y,_p1##z,c), I[150] = (T)(img)(_n3##x,_p1##y,_p1##z,c), I[151] = (T)(img)(_n4##x,_p1##y,_p1##z,c), \ + I[152] = (T)(img)(_p3##x,y,_p1##z,c), I[153] = (T)(img)(_p2##x,y,_p1##z,c), I[154] = (T)(img)(_p1##x,y,_p1##z,c), I[155] = (T)(img)(x,y,_p1##z,c), I[156] = (T)(img)(_n1##x,y,_p1##z,c), I[157] = (T)(img)(_n2##x,y,_p1##z,c), I[158] = (T)(img)(_n3##x,y,_p1##z,c), I[159] = (T)(img)(_n4##x,y,_p1##z,c), \ + I[160] = (T)(img)(_p3##x,_n1##y,_p1##z,c), I[161] = (T)(img)(_p2##x,_n1##y,_p1##z,c), I[162] = (T)(img)(_p1##x,_n1##y,_p1##z,c), I[163] = (T)(img)(x,_n1##y,_p1##z,c), I[164] = (T)(img)(_n1##x,_n1##y,_p1##z,c), I[165] = (T)(img)(_n2##x,_n1##y,_p1##z,c), I[166] = (T)(img)(_n3##x,_n1##y,_p1##z,c), I[167] = (T)(img)(_n4##x,_n1##y,_p1##z,c), \ + I[168] = (T)(img)(_p3##x,_n2##y,_p1##z,c), I[169] = (T)(img)(_p2##x,_n2##y,_p1##z,c), I[170] = (T)(img)(_p1##x,_n2##y,_p1##z,c), I[171] = (T)(img)(x,_n2##y,_p1##z,c), I[172] = (T)(img)(_n1##x,_n2##y,_p1##z,c), I[173] = (T)(img)(_n2##x,_n2##y,_p1##z,c), I[174] = (T)(img)(_n3##x,_n2##y,_p1##z,c), I[175] = (T)(img)(_n4##x,_n2##y,_p1##z,c), \ + I[176] = (T)(img)(_p3##x,_n3##y,_p1##z,c), I[177] = (T)(img)(_p2##x,_n3##y,_p1##z,c), I[178] = (T)(img)(_p1##x,_n3##y,_p1##z,c), I[179] = (T)(img)(x,_n3##y,_p1##z,c), I[180] = (T)(img)(_n1##x,_n3##y,_p1##z,c), I[181] = (T)(img)(_n2##x,_n3##y,_p1##z,c), I[182] = (T)(img)(_n3##x,_n3##y,_p1##z,c), I[183] = (T)(img)(_n4##x,_n3##y,_p1##z,c), \ + I[184] = (T)(img)(_p3##x,_n4##y,_p1##z,c), I[185] = (T)(img)(_p2##x,_n4##y,_p1##z,c), I[186] = (T)(img)(_p1##x,_n4##y,_p1##z,c), I[187] = (T)(img)(x,_n4##y,_p1##z,c), I[188] = (T)(img)(_n1##x,_n4##y,_p1##z,c), I[189] = (T)(img)(_n2##x,_n4##y,_p1##z,c), I[190] = (T)(img)(_n3##x,_n4##y,_p1##z,c), I[191] = (T)(img)(_n4##x,_n4##y,_p1##z,c), \ + I[192] = (T)(img)(_p3##x,_p3##y,z,c), I[193] = (T)(img)(_p2##x,_p3##y,z,c), I[194] = (T)(img)(_p1##x,_p3##y,z,c), I[195] = (T)(img)(x,_p3##y,z,c), I[196] = (T)(img)(_n1##x,_p3##y,z,c), I[197] = (T)(img)(_n2##x,_p3##y,z,c), I[198] = (T)(img)(_n3##x,_p3##y,z,c), I[199] = (T)(img)(_n4##x,_p3##y,z,c), \ + I[200] = (T)(img)(_p3##x,_p2##y,z,c), I[201] = (T)(img)(_p2##x,_p2##y,z,c), I[202] = (T)(img)(_p1##x,_p2##y,z,c), I[203] = (T)(img)(x,_p2##y,z,c), I[204] = (T)(img)(_n1##x,_p2##y,z,c), I[205] = (T)(img)(_n2##x,_p2##y,z,c), I[206] = (T)(img)(_n3##x,_p2##y,z,c), I[207] = (T)(img)(_n4##x,_p2##y,z,c), \ + I[208] = (T)(img)(_p3##x,_p1##y,z,c), I[209] = (T)(img)(_p2##x,_p1##y,z,c), I[210] = (T)(img)(_p1##x,_p1##y,z,c), I[211] = (T)(img)(x,_p1##y,z,c), I[212] = (T)(img)(_n1##x,_p1##y,z,c), I[213] = (T)(img)(_n2##x,_p1##y,z,c), I[214] = (T)(img)(_n3##x,_p1##y,z,c), I[215] = (T)(img)(_n4##x,_p1##y,z,c), \ + I[216] = (T)(img)(_p3##x,y,z,c), I[217] = (T)(img)(_p2##x,y,z,c), I[218] = (T)(img)(_p1##x,y,z,c), I[219] = (T)(img)(x,y,z,c), I[220] = (T)(img)(_n1##x,y,z,c), I[221] = (T)(img)(_n2##x,y,z,c), I[222] = (T)(img)(_n3##x,y,z,c), I[223] = (T)(img)(_n4##x,y,z,c), \ + I[224] = (T)(img)(_p3##x,_n1##y,z,c), I[225] = (T)(img)(_p2##x,_n1##y,z,c), I[226] = (T)(img)(_p1##x,_n1##y,z,c), I[227] = (T)(img)(x,_n1##y,z,c), I[228] = (T)(img)(_n1##x,_n1##y,z,c), I[229] = (T)(img)(_n2##x,_n1##y,z,c), I[230] = (T)(img)(_n3##x,_n1##y,z,c), I[231] = (T)(img)(_n4##x,_n1##y,z,c), \ + I[232] = (T)(img)(_p3##x,_n2##y,z,c), I[233] = (T)(img)(_p2##x,_n2##y,z,c), I[234] = (T)(img)(_p1##x,_n2##y,z,c), I[235] = (T)(img)(x,_n2##y,z,c), I[236] = (T)(img)(_n1##x,_n2##y,z,c), I[237] = (T)(img)(_n2##x,_n2##y,z,c), I[238] = (T)(img)(_n3##x,_n2##y,z,c), I[239] = (T)(img)(_n4##x,_n2##y,z,c), \ + I[240] = (T)(img)(_p3##x,_n3##y,z,c), I[241] = (T)(img)(_p2##x,_n3##y,z,c), I[242] = (T)(img)(_p1##x,_n3##y,z,c), I[243] = (T)(img)(x,_n3##y,z,c), I[244] = (T)(img)(_n1##x,_n3##y,z,c), I[245] = (T)(img)(_n2##x,_n3##y,z,c), I[246] = (T)(img)(_n3##x,_n3##y,z,c), I[247] = (T)(img)(_n4##x,_n3##y,z,c), \ + I[248] = (T)(img)(_p3##x,_n4##y,z,c), I[249] = (T)(img)(_p2##x,_n4##y,z,c), I[250] = (T)(img)(_p1##x,_n4##y,z,c), I[251] = (T)(img)(x,_n4##y,z,c), I[252] = (T)(img)(_n1##x,_n4##y,z,c), I[253] = (T)(img)(_n2##x,_n4##y,z,c), I[254] = (T)(img)(_n3##x,_n4##y,z,c), I[255] = (T)(img)(_n4##x,_n4##y,z,c), \ + I[256] = (T)(img)(_p3##x,_p3##y,_n1##z,c), I[257] = (T)(img)(_p2##x,_p3##y,_n1##z,c), I[258] = (T)(img)(_p1##x,_p3##y,_n1##z,c), I[259] = (T)(img)(x,_p3##y,_n1##z,c), I[260] = (T)(img)(_n1##x,_p3##y,_n1##z,c), I[261] = (T)(img)(_n2##x,_p3##y,_n1##z,c), I[262] = (T)(img)(_n3##x,_p3##y,_n1##z,c), I[263] = (T)(img)(_n4##x,_p3##y,_n1##z,c), \ + I[264] = (T)(img)(_p3##x,_p2##y,_n1##z,c), I[265] = (T)(img)(_p2##x,_p2##y,_n1##z,c), I[266] = (T)(img)(_p1##x,_p2##y,_n1##z,c), I[267] = (T)(img)(x,_p2##y,_n1##z,c), I[268] = (T)(img)(_n1##x,_p2##y,_n1##z,c), I[269] = (T)(img)(_n2##x,_p2##y,_n1##z,c), I[270] = (T)(img)(_n3##x,_p2##y,_n1##z,c), I[271] = (T)(img)(_n4##x,_p2##y,_n1##z,c), \ + I[272] = (T)(img)(_p3##x,_p1##y,_n1##z,c), I[273] = (T)(img)(_p2##x,_p1##y,_n1##z,c), I[274] = (T)(img)(_p1##x,_p1##y,_n1##z,c), I[275] = (T)(img)(x,_p1##y,_n1##z,c), I[276] = (T)(img)(_n1##x,_p1##y,_n1##z,c), I[277] = (T)(img)(_n2##x,_p1##y,_n1##z,c), I[278] = (T)(img)(_n3##x,_p1##y,_n1##z,c), I[279] = (T)(img)(_n4##x,_p1##y,_n1##z,c), \ + I[280] = (T)(img)(_p3##x,y,_n1##z,c), I[281] = (T)(img)(_p2##x,y,_n1##z,c), I[282] = (T)(img)(_p1##x,y,_n1##z,c), I[283] = (T)(img)(x,y,_n1##z,c), I[284] = (T)(img)(_n1##x,y,_n1##z,c), I[285] = (T)(img)(_n2##x,y,_n1##z,c), I[286] = (T)(img)(_n3##x,y,_n1##z,c), I[287] = (T)(img)(_n4##x,y,_n1##z,c), \ + I[288] = (T)(img)(_p3##x,_n1##y,_n1##z,c), I[289] = (T)(img)(_p2##x,_n1##y,_n1##z,c), I[290] = (T)(img)(_p1##x,_n1##y,_n1##z,c), I[291] = (T)(img)(x,_n1##y,_n1##z,c), I[292] = (T)(img)(_n1##x,_n1##y,_n1##z,c), I[293] = (T)(img)(_n2##x,_n1##y,_n1##z,c), I[294] = (T)(img)(_n3##x,_n1##y,_n1##z,c), I[295] = (T)(img)(_n4##x,_n1##y,_n1##z,c), \ + I[296] = (T)(img)(_p3##x,_n2##y,_n1##z,c), I[297] = (T)(img)(_p2##x,_n2##y,_n1##z,c), I[298] = (T)(img)(_p1##x,_n2##y,_n1##z,c), I[299] = (T)(img)(x,_n2##y,_n1##z,c), I[300] = (T)(img)(_n1##x,_n2##y,_n1##z,c), I[301] = (T)(img)(_n2##x,_n2##y,_n1##z,c), I[302] = (T)(img)(_n3##x,_n2##y,_n1##z,c), I[303] = (T)(img)(_n4##x,_n2##y,_n1##z,c), \ + I[304] = (T)(img)(_p3##x,_n3##y,_n1##z,c), I[305] = (T)(img)(_p2##x,_n3##y,_n1##z,c), I[306] = (T)(img)(_p1##x,_n3##y,_n1##z,c), I[307] = (T)(img)(x,_n3##y,_n1##z,c), I[308] = (T)(img)(_n1##x,_n3##y,_n1##z,c), I[309] = (T)(img)(_n2##x,_n3##y,_n1##z,c), I[310] = (T)(img)(_n3##x,_n3##y,_n1##z,c), I[311] = (T)(img)(_n4##x,_n3##y,_n1##z,c), \ + I[312] = (T)(img)(_p3##x,_n4##y,_n1##z,c), I[313] = (T)(img)(_p2##x,_n4##y,_n1##z,c), I[314] = (T)(img)(_p1##x,_n4##y,_n1##z,c), I[315] = (T)(img)(x,_n4##y,_n1##z,c), I[316] = (T)(img)(_n1##x,_n4##y,_n1##z,c), I[317] = (T)(img)(_n2##x,_n4##y,_n1##z,c), I[318] = (T)(img)(_n3##x,_n4##y,_n1##z,c), I[319] = (T)(img)(_n4##x,_n4##y,_n1##z,c), \ + I[320] = (T)(img)(_p3##x,_p3##y,_n2##z,c), I[321] = (T)(img)(_p2##x,_p3##y,_n2##z,c), I[322] = (T)(img)(_p1##x,_p3##y,_n2##z,c), I[323] = (T)(img)(x,_p3##y,_n2##z,c), I[324] = (T)(img)(_n1##x,_p3##y,_n2##z,c), I[325] = (T)(img)(_n2##x,_p3##y,_n2##z,c), I[326] = (T)(img)(_n3##x,_p3##y,_n2##z,c), I[327] = (T)(img)(_n4##x,_p3##y,_n2##z,c), \ + I[328] = (T)(img)(_p3##x,_p2##y,_n2##z,c), I[329] = (T)(img)(_p2##x,_p2##y,_n2##z,c), I[330] = (T)(img)(_p1##x,_p2##y,_n2##z,c), I[331] = (T)(img)(x,_p2##y,_n2##z,c), I[332] = (T)(img)(_n1##x,_p2##y,_n2##z,c), I[333] = (T)(img)(_n2##x,_p2##y,_n2##z,c), I[334] = (T)(img)(_n3##x,_p2##y,_n2##z,c), I[335] = (T)(img)(_n4##x,_p2##y,_n2##z,c), \ + I[336] = (T)(img)(_p3##x,_p1##y,_n2##z,c), I[337] = (T)(img)(_p2##x,_p1##y,_n2##z,c), I[338] = (T)(img)(_p1##x,_p1##y,_n2##z,c), I[339] = (T)(img)(x,_p1##y,_n2##z,c), I[340] = (T)(img)(_n1##x,_p1##y,_n2##z,c), I[341] = (T)(img)(_n2##x,_p1##y,_n2##z,c), I[342] = (T)(img)(_n3##x,_p1##y,_n2##z,c), I[343] = (T)(img)(_n4##x,_p1##y,_n2##z,c), \ + I[344] = (T)(img)(_p3##x,y,_n2##z,c), I[345] = (T)(img)(_p2##x,y,_n2##z,c), I[346] = (T)(img)(_p1##x,y,_n2##z,c), I[347] = (T)(img)(x,y,_n2##z,c), I[348] = (T)(img)(_n1##x,y,_n2##z,c), I[349] = (T)(img)(_n2##x,y,_n2##z,c), I[350] = (T)(img)(_n3##x,y,_n2##z,c), I[351] = (T)(img)(_n4##x,y,_n2##z,c), \ + I[352] = (T)(img)(_p3##x,_n1##y,_n2##z,c), I[353] = (T)(img)(_p2##x,_n1##y,_n2##z,c), I[354] = (T)(img)(_p1##x,_n1##y,_n2##z,c), I[355] = (T)(img)(x,_n1##y,_n2##z,c), I[356] = (T)(img)(_n1##x,_n1##y,_n2##z,c), I[357] = (T)(img)(_n2##x,_n1##y,_n2##z,c), I[358] = (T)(img)(_n3##x,_n1##y,_n2##z,c), I[359] = (T)(img)(_n4##x,_n1##y,_n2##z,c), \ + I[360] = (T)(img)(_p3##x,_n2##y,_n2##z,c), I[361] = (T)(img)(_p2##x,_n2##y,_n2##z,c), I[362] = (T)(img)(_p1##x,_n2##y,_n2##z,c), I[363] = (T)(img)(x,_n2##y,_n2##z,c), I[364] = (T)(img)(_n1##x,_n2##y,_n2##z,c), I[365] = (T)(img)(_n2##x,_n2##y,_n2##z,c), I[366] = (T)(img)(_n3##x,_n2##y,_n2##z,c), I[367] = (T)(img)(_n4##x,_n2##y,_n2##z,c), \ + I[368] = (T)(img)(_p3##x,_n3##y,_n2##z,c), I[369] = (T)(img)(_p2##x,_n3##y,_n2##z,c), I[370] = (T)(img)(_p1##x,_n3##y,_n2##z,c), I[371] = (T)(img)(x,_n3##y,_n2##z,c), I[372] = (T)(img)(_n1##x,_n3##y,_n2##z,c), I[373] = (T)(img)(_n2##x,_n3##y,_n2##z,c), I[374] = (T)(img)(_n3##x,_n3##y,_n2##z,c), I[375] = (T)(img)(_n4##x,_n3##y,_n2##z,c), \ + I[376] = (T)(img)(_p3##x,_n4##y,_n2##z,c), I[377] = (T)(img)(_p2##x,_n4##y,_n2##z,c), I[378] = (T)(img)(_p1##x,_n4##y,_n2##z,c), I[379] = (T)(img)(x,_n4##y,_n2##z,c), I[380] = (T)(img)(_n1##x,_n4##y,_n2##z,c), I[381] = (T)(img)(_n2##x,_n4##y,_n2##z,c), I[382] = (T)(img)(_n3##x,_n4##y,_n2##z,c), I[383] = (T)(img)(_n4##x,_n4##y,_n2##z,c), \ + I[384] = (T)(img)(_p3##x,_p3##y,_n3##z,c), I[385] = (T)(img)(_p2##x,_p3##y,_n3##z,c), I[386] = (T)(img)(_p1##x,_p3##y,_n3##z,c), I[387] = (T)(img)(x,_p3##y,_n3##z,c), I[388] = (T)(img)(_n1##x,_p3##y,_n3##z,c), I[389] = (T)(img)(_n2##x,_p3##y,_n3##z,c), I[390] = (T)(img)(_n3##x,_p3##y,_n3##z,c), I[391] = (T)(img)(_n4##x,_p3##y,_n3##z,c), \ + I[392] = (T)(img)(_p3##x,_p2##y,_n3##z,c), I[393] = (T)(img)(_p2##x,_p2##y,_n3##z,c), I[394] = (T)(img)(_p1##x,_p2##y,_n3##z,c), I[395] = (T)(img)(x,_p2##y,_n3##z,c), I[396] = (T)(img)(_n1##x,_p2##y,_n3##z,c), I[397] = (T)(img)(_n2##x,_p2##y,_n3##z,c), I[398] = (T)(img)(_n3##x,_p2##y,_n3##z,c), I[399] = (T)(img)(_n4##x,_p2##y,_n3##z,c), \ + I[400] = (T)(img)(_p3##x,_p1##y,_n3##z,c), I[401] = (T)(img)(_p2##x,_p1##y,_n3##z,c), I[402] = (T)(img)(_p1##x,_p1##y,_n3##z,c), I[403] = (T)(img)(x,_p1##y,_n3##z,c), I[404] = (T)(img)(_n1##x,_p1##y,_n3##z,c), I[405] = (T)(img)(_n2##x,_p1##y,_n3##z,c), I[406] = (T)(img)(_n3##x,_p1##y,_n3##z,c), I[407] = (T)(img)(_n4##x,_p1##y,_n3##z,c), \ + I[408] = (T)(img)(_p3##x,y,_n3##z,c), I[409] = (T)(img)(_p2##x,y,_n3##z,c), I[410] = (T)(img)(_p1##x,y,_n3##z,c), I[411] = (T)(img)(x,y,_n3##z,c), I[412] = (T)(img)(_n1##x,y,_n3##z,c), I[413] = (T)(img)(_n2##x,y,_n3##z,c), I[414] = (T)(img)(_n3##x,y,_n3##z,c), I[415] = (T)(img)(_n4##x,y,_n3##z,c), \ + I[416] = (T)(img)(_p3##x,_n1##y,_n3##z,c), I[417] = (T)(img)(_p2##x,_n1##y,_n3##z,c), I[418] = (T)(img)(_p1##x,_n1##y,_n3##z,c), I[419] = (T)(img)(x,_n1##y,_n3##z,c), I[420] = (T)(img)(_n1##x,_n1##y,_n3##z,c), I[421] = (T)(img)(_n2##x,_n1##y,_n3##z,c), I[422] = (T)(img)(_n3##x,_n1##y,_n3##z,c), I[423] = (T)(img)(_n4##x,_n1##y,_n3##z,c), \ + I[424] = (T)(img)(_p3##x,_n2##y,_n3##z,c), I[425] = (T)(img)(_p2##x,_n2##y,_n3##z,c), I[426] = (T)(img)(_p1##x,_n2##y,_n3##z,c), I[427] = (T)(img)(x,_n2##y,_n3##z,c), I[428] = (T)(img)(_n1##x,_n2##y,_n3##z,c), I[429] = (T)(img)(_n2##x,_n2##y,_n3##z,c), I[430] = (T)(img)(_n3##x,_n2##y,_n3##z,c), I[431] = (T)(img)(_n4##x,_n2##y,_n3##z,c), \ + I[432] = (T)(img)(_p3##x,_n3##y,_n3##z,c), I[433] = (T)(img)(_p2##x,_n3##y,_n3##z,c), I[434] = (T)(img)(_p1##x,_n3##y,_n3##z,c), I[435] = (T)(img)(x,_n3##y,_n3##z,c), I[436] = (T)(img)(_n1##x,_n3##y,_n3##z,c), I[437] = (T)(img)(_n2##x,_n3##y,_n3##z,c), I[438] = (T)(img)(_n3##x,_n3##y,_n3##z,c), I[439] = (T)(img)(_n4##x,_n3##y,_n3##z,c), \ + I[440] = (T)(img)(_p3##x,_n4##y,_n3##z,c), I[441] = (T)(img)(_p2##x,_n4##y,_n3##z,c), I[442] = (T)(img)(_p1##x,_n4##y,_n3##z,c), I[443] = (T)(img)(x,_n4##y,_n3##z,c), I[444] = (T)(img)(_n1##x,_n4##y,_n3##z,c), I[445] = (T)(img)(_n2##x,_n4##y,_n3##z,c), I[446] = (T)(img)(_n3##x,_n4##y,_n3##z,c), I[447] = (T)(img)(_n4##x,_n4##y,_n3##z,c), \ + I[448] = (T)(img)(_p3##x,_p3##y,_n4##z,c), I[449] = (T)(img)(_p2##x,_p3##y,_n4##z,c), I[450] = (T)(img)(_p1##x,_p3##y,_n4##z,c), I[451] = (T)(img)(x,_p3##y,_n4##z,c), I[452] = (T)(img)(_n1##x,_p3##y,_n4##z,c), I[453] = (T)(img)(_n2##x,_p3##y,_n4##z,c), I[454] = (T)(img)(_n3##x,_p3##y,_n4##z,c), I[455] = (T)(img)(_n4##x,_p3##y,_n4##z,c), \ + I[456] = (T)(img)(_p3##x,_p2##y,_n4##z,c), I[457] = (T)(img)(_p2##x,_p2##y,_n4##z,c), I[458] = (T)(img)(_p1##x,_p2##y,_n4##z,c), I[459] = (T)(img)(x,_p2##y,_n4##z,c), I[460] = (T)(img)(_n1##x,_p2##y,_n4##z,c), I[461] = (T)(img)(_n2##x,_p2##y,_n4##z,c), I[462] = (T)(img)(_n3##x,_p2##y,_n4##z,c), I[463] = (T)(img)(_n4##x,_p2##y,_n4##z,c), \ + I[464] = (T)(img)(_p3##x,_p1##y,_n4##z,c), I[465] = (T)(img)(_p2##x,_p1##y,_n4##z,c), I[466] = (T)(img)(_p1##x,_p1##y,_n4##z,c), I[467] = (T)(img)(x,_p1##y,_n4##z,c), I[468] = (T)(img)(_n1##x,_p1##y,_n4##z,c), I[469] = (T)(img)(_n2##x,_p1##y,_n4##z,c), I[470] = (T)(img)(_n3##x,_p1##y,_n4##z,c), I[471] = (T)(img)(_n4##x,_p1##y,_n4##z,c), \ + I[472] = (T)(img)(_p3##x,y,_n4##z,c), I[473] = (T)(img)(_p2##x,y,_n4##z,c), I[474] = (T)(img)(_p1##x,y,_n4##z,c), I[475] = (T)(img)(x,y,_n4##z,c), I[476] = (T)(img)(_n1##x,y,_n4##z,c), I[477] = (T)(img)(_n2##x,y,_n4##z,c), I[478] = (T)(img)(_n3##x,y,_n4##z,c), I[479] = (T)(img)(_n4##x,y,_n4##z,c), \ + I[480] = (T)(img)(_p3##x,_n1##y,_n4##z,c), I[481] = (T)(img)(_p2##x,_n1##y,_n4##z,c), I[482] = (T)(img)(_p1##x,_n1##y,_n4##z,c), I[483] = (T)(img)(x,_n1##y,_n4##z,c), I[484] = (T)(img)(_n1##x,_n1##y,_n4##z,c), I[485] = (T)(img)(_n2##x,_n1##y,_n4##z,c), I[486] = (T)(img)(_n3##x,_n1##y,_n4##z,c), I[487] = (T)(img)(_n4##x,_n1##y,_n4##z,c), \ + I[488] = (T)(img)(_p3##x,_n2##y,_n4##z,c), I[489] = (T)(img)(_p2##x,_n2##y,_n4##z,c), I[490] = (T)(img)(_p1##x,_n2##y,_n4##z,c), I[491] = (T)(img)(x,_n2##y,_n4##z,c), I[492] = (T)(img)(_n1##x,_n2##y,_n4##z,c), I[493] = (T)(img)(_n2##x,_n2##y,_n4##z,c), I[494] = (T)(img)(_n3##x,_n2##y,_n4##z,c), I[495] = (T)(img)(_n4##x,_n2##y,_n4##z,c), \ + I[496] = (T)(img)(_p3##x,_n3##y,_n4##z,c), I[497] = (T)(img)(_p2##x,_n3##y,_n4##z,c), I[498] = (T)(img)(_p1##x,_n3##y,_n4##z,c), I[499] = (T)(img)(x,_n3##y,_n4##z,c), I[500] = (T)(img)(_n1##x,_n3##y,_n4##z,c), I[501] = (T)(img)(_n2##x,_n3##y,_n4##z,c), I[502] = (T)(img)(_n3##x,_n3##y,_n4##z,c), I[503] = (T)(img)(_n4##x,_n3##y,_n4##z,c), \ + I[504] = (T)(img)(_p3##x,_n4##y,_n4##z,c), I[505] = (T)(img)(_p2##x,_n4##y,_n4##z,c), I[506] = (T)(img)(_p1##x,_n4##y,_n4##z,c), I[507] = (T)(img)(x,_n4##y,_n4##z,c), I[508] = (T)(img)(_n1##x,_n4##y,_n4##z,c), I[509] = (T)(img)(_n2##x,_n4##y,_n4##z,c), I[510] = (T)(img)(_n3##x,_n4##y,_n4##z,c), I[511] = (T)(img)(_n4##x,_n4##y,_n4##z,c); + +// End of the plug-in +#endif /* cimg_plugin_loop_macros */ diff --git a/plugins/matlab.h b/plugins/matlab.h new file mode 100644 index 000000000..c4cbb34a5 --- /dev/null +++ b/plugins/matlab.h @@ -0,0 +1,287 @@ +/************************************************************************* + * matlab.h + * --------- + * + * matlab.h is a "plugin" for the CImg library that allows to convert + * CImg images from/to MATLAB arrays, so that CImg can be used to write + * MATLAB mex files. It also swaps the "x" and "y" coordinates when going + * from / to MATLAB array, i.e. the usual image-processing annoying MATLAB + * behaviour of considering images as matrices. + * + * Added to the CImg class are: + * + * - a constructor : CImg(const mxArray *matlabArray, bool vdata = false) + * the vdata serves to decide whether a 3D matlab array should give + * rise to a 3D CImg object or a "2D vectorial" one. + * + * - a assignment operator : CImg & operator=(const mxArray *matlabArray) + * (I use myself extremely seldom and might remove it in the future). + * + * - a routine converting a CImg image to a matlab array: + * mxArray *toMatlab(mxClassID classID = mxDOUBLE_CLASS, + * bool squeeze = false) const + * the squeeze argument serves the opposite purpose than the vdata from + * the constructor. + * + * For a bit more documentation, the manual is this header, see the more + * detailed comments in the source code (i.e. RTFM) + * + * + * Its usage should be straightforward: + * + * - file matlab.h must be in a directory that the compiler can locate. + * - prior to include CImg.h, mex.h must be included first, else it will + * result in a compiler error. + * - after the inclusion of mex.h, one must define the macro cimg_plugin as + * "matlab.h" or or or + * a variation that matches your local installation of CImg package and + * plugins probably via the appropriate specification of the include path + * "-Ipath/to/cimg/and/plugins" at mex cmdline. + * + * You would probably have this kind of declaration: + * + * // The begining of my fantastic mex file code... + * #include + * ... + * #define cimg_plugin + * #include + * ... + * // and now I can implement my new killer MATLAB function! + * .... + * + * + * Copyright (c) 2004-2008 Francois Lauze + * Licence: the Gnu Lesser General Public License + * http://www.gnu.org/licenses/lgpl.html + * + * MATLAB is copyright of The MathWorks, Inc, http://www.mathworks.com + * + * Any comments, improvements and potential bug corrections are welcome, so + * write to me at francois@diku.dk, or use CImg forums, I promise I'll try + * to read them once in a while. BTW who modified the cpMatlabData with the + * cimg::type::is_float() test (good idea!) + * + ***************************************************************************/ + +#ifndef cimg_plugin_matlab +#define cimg_plugin_matlab + +#define CIMGMATLAB_VER 0102 +#ifndef mex_h +#error the file mex.h must be included prior to inclusion of matlab.h +#endif +#ifndef cimg_version +#error matlab.h requires that CImg.h is included! +#endif + +/********************************************************** + * introduction of mwSize and mwIndex types in relatively * + * recent versions of matlab, 7.3.0 from what I gathered. * + * here is hopefully a needed fix for older versions * + **********************************************************/ +#if !defined(MX_API_VER) || MX_API_VER < 0x7030000 +typedef int mwSize; +#endif + +/********************************************************* + * begin of included methods * + * They are just added as member functions / constructor * + * for the CImg class. * + *********************************************************/ + +private: + +/********************************************************************** + * internally used to transfer MATLAB array values to CImg<> objects, + * check wether the array type is a "numerical" one (including logical) + */ +static int isNumericalClassID(mxClassID id) { + // all these constants are defined in matrix.h included by mex.h + switch (id) { + case mxLOGICAL_CLASS: + case mxDOUBLE_CLASS: + case mxSINGLE_CLASS: + case mxINT8_CLASS: + case mxUINT8_CLASS: + case mxINT16_CLASS: + case mxUINT16_CLASS: + case mxINT32_CLASS: + case mxUINT32_CLASS: + case mxINT64_CLASS: + case mxUINT64_CLASS: return 1; + default: return 0; + } +} + +/*************************************************** + * driving routine that will copy the content of + * a MATLAB array to this->_data + * The type names used are defined in matlab c/c++ + * header file tmwtypes.h + */ +void makeImageFromMatlabData(const mxArray *matlabArray, mxClassID classID) { + if (classID==mxLOGICAL_CLASS) { + // logical type works a bit differently than the numerical types + mxLogical *mdata = mxGetLogicals(matlabArray); + cpMatlabData((const mxLogical *)mdata); + } else { + void *mdata = (void*)mxGetPr(matlabArray); + switch (classID) { + case mxDOUBLE_CLASS : cpMatlabData((const real64_T*)mdata); break; + case mxSINGLE_CLASS : cpMatlabData((const real32_T*)mdata); break; + case mxINT8_CLASS : cpMatlabData((const int8_T*)mdata); break; + case mxUINT8_CLASS : cpMatlabData((const uint8_T*)mdata); break; + case mxINT16_CLASS : cpMatlabData((const int16_T*)mdata); break; + case mxUINT16_CLASS : cpMatlabData((const uint16_T*)mdata); break; + case mxINT32_CLASS : cpMatlabData((const int32_T*)mdata); break; + case mxUINT32_CLASS : cpMatlabData((const uint32_T*)mdata); break; + case mxINT64_CLASS : cpMatlabData((const int64_T*)mdata); break; + case mxUINT64_CLASS : cpMatlabData((const uint64_T*)mdata); break; + } + } +} + +/*********************************************************** + * the actual memory copy and base type conversion is then + * performed by this routine that handles the annoying x-y + * problem of MATLAB when dealing with images: we switch + * line and column storage: the MATLAB A(x,y) becomes the + * CImg img(y,x) + */ +template void cpMatlabData(const t* mdata) { + if (cimg::type::is_float()) { + cimg_forXYZC(*this,x,y,z,v) (*this)(x,y,z,v) = (T)(mdata[((v*_depth + z)*_width + x)*_height + y]); + } else { + cimg_forXYZC(*this,x,y,z,v) (*this)(x,y,z,v) = (T)(int)(mdata[((v*_depth + z)*_width + x)*_height + y]); + } +} + +public: + +/****************************************************************** + * Consruct a CImg object from a MATLAB mxArray. + * The MATLAB array must be AT MOST 4-dimensional. The boolean + * argument vdata is employed in the case the the input mxArray + * has dimension 3, say M x N x K. In that case, if vdata is true, + * the last dimension is assumed to be "vectorial" and the + * resulting CImg object has dimension N x M x 1 x K. Otherwise, + * the resulting object has dimension N x M x K x 1. + * When MATLAB array has dimension 2 or 4, vdata has no effects. + * No shared memory mechanisms are used, it would be the easiest + * to crash Matlab (from my own experience...) + */ +CImg(const mxArray *matlabArray, const bool vdata = false) + : _is_shared(false) { + mwSize nbdims = mxGetNumberOfDimensions(matlabArray); + mxClassID classID = mxGetClassID(matlabArray); + if (nbdims>4 || !isNumericalClassID(classID)) { + _data = 0; _width = _height = _depth = _spectrum = 0; +#if cimg_debug>1 + cimg::warn("MATLAB array is more than 4D or/and not numerical, returning an empty image."); +#endif + } else { + const mwSize *dims = mxGetDimensions(matlabArray); + _depth = _spectrum = 1; + _width = (unsigned)dims[1]; + _height = (unsigned)dims[0]; + if (nbdims==4) { _depth = (unsigned)dims[2]; _spectrum = (unsigned)dims[3]; } + else if (nbdims==3) { + if (vdata) _spectrum = (unsigned)dims[2]; else _depth = (unsigned)dims[2]; + } + _data = new T[size()]; + makeImageFromMatlabData(matlabArray,classID); + } +} + +/******************************************************************* + * operator=(). Copy mxMarray data mArray into the current image + * Works as the previous constructor, but without the vdata stuff. + * don't know if it is of any use... + */ +CImg & operator=(const mxArray *matlabArray) { + int + nbdims = (int)mxGetNumberOfDimensions(matlabArray), + classID = mxGetClassID(matlabArray); + if (nbdims>4 || !isNumericalClassID(classID)) { + delete [] _data; _data = 0; + _width = _height = _depth = _spectrum = 0; +#if cimg_debug>1 + cimg::warn("MATLAB array is more than 4D or/and not numerical, returning an empty image."); +#endif + } else { + const mwSize *dims = mxGetDimensions(matlabArray); + _depth = _spectrum = 1; + _width = (unsigned)dims[1]; + _height = (unsigned)dims[0]; + if (nbdims>2) _depth = (unsigned)dims[2]; + else if (nbdims>3) _spectrum = (unsigned)dims[3]; + delete [] _data; + _data = new T[size()]; + makeImageFromMatlabData(matlabArray,classID); + } +} + +private: + +/***************************************************************** + * private routines used for transfering a CImg to a mxArray + * here also, we have to exchange the x and y dims so we get the + * expected MATLAB array. + */ +template void populate_maltlab_array(c *const mdata) const { + cimg_forXYZC(*this,x,y,z,v) mdata[((v*_depth + z)*_width + x)*_height + y] = (c)(*this)(x,y,z,v); +} + +/************************************************* + * the specialized version for "logical" entries + */ +void populate_maltlab_array(mxLogical *const mdata) const { + cimg_forXYZC(*this,x,y,z,v) mdata[((v*_depth + z)*_width + x)*_height + y] = (mxLogical)((*this)(x,y,z,v)!=0); +} + +public: + +/****************************************** + * export a CImg image to a MATLAB array. + **/ +mxArray *toMatlab(mxClassID classID=mxDOUBLE_CLASS, const bool squeeze=false) const { + if (!isNumericalClassID(classID)) { +#if cimg_debug>1 + cimg::warn("Invalid MATLAB Class Id Specified."); +#endif + return 0; + } + mwSize dims[4]; + dims[0] = (mwSize)_height; + dims[1] = (mwSize)_width; + dims[2] = (mwSize)_depth; + dims[3] = (mwSize)_spectrum; + + if (squeeze && _depth == 1) { + dims[2] = (mwSize)_spectrum; + dims[3] = (mwSize)1; + } + mxArray *matlabArray = mxCreateNumericArray((mwSize)4,dims,classID,mxREAL); + if (classID==mxLOGICAL_CLASS) { + mxLogical *mdata = mxGetLogicals(matlabArray); + populate_maltlab_array(mdata); + } else { + void *mdata = mxGetPr(matlabArray); + switch (classID) { + case mxDOUBLE_CLASS : populate_maltlab_array((real64_T*)mdata); break; + case mxSINGLE_CLASS : populate_maltlab_array((real32_T*)mdata); break; + case mxINT8_CLASS : populate_maltlab_array((int8_T*)mdata); break; + case mxUINT8_CLASS : populate_maltlab_array((uint8_T*)mdata); break; + case mxINT16_CLASS : populate_maltlab_array((int16_T*)mdata); break; + case mxUINT16_CLASS : populate_maltlab_array((uint16_T*)mdata); break; + case mxINT32_CLASS : populate_maltlab_array((int32_T*)mdata); break; + case mxUINT32_CLASS : populate_maltlab_array((uint32_T*)mdata); break; + case mxINT64_CLASS : populate_maltlab_array((int64_T*)mdata); break; + case mxUINT64_CLASS : populate_maltlab_array((uint64_T*)mdata); break; + } + } + return matlabArray; +} + +// end of matlab.h +#endif /* cimg_plugin_matlab */ diff --git a/plugins/nlmeans.h b/plugins/nlmeans.h new file mode 100644 index 000000000..3e652acc5 --- /dev/null +++ b/plugins/nlmeans.h @@ -0,0 +1,242 @@ +/* + # + # File : nlmeans.h + # ( C++ header file - CImg plug-in ) + # + # Description : CImg plugin that implements the non-local mean filter. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # [1] Buades, A.; Coll, B.; Morel, J.-M.: A non-local algorithm for image denoising + # IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2005. CVPR 2005. + # Volume 2, 20-25 June 2005 Page(s):60 - 65 vol. 2 + # + # [2] Buades, A. Coll, B. and Morel, J.: A review of image denoising algorithms, with a new one. + # Multiscale Modeling and Simulation: A SIAM Interdisciplinary Journal 4 (2004) 490-530 + # + # [3] Gasser, T. Sroka,L. Jennen Steinmetz,C. Residual variance and residual pattern nonlinear regression. + # Biometrika 73 (1986) 625-659 + # + # Copyright : Jerome Boulanger + # ( http://www.irisa.fr/vista/Equipe/People/Jerome.Boulanger.html ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_plugin_nlmeans +#define cimg_plugin_nlmeans + +//! NL-Means denoising algorithm. +/** + This is the in-place version of get_nlmean(). +**/ +CImg& nlmeans(int patch_size=1, double lambda=-1, double alpha=3, double sigma=-1, int sampling=1){ + if (!is_empty()){ + if (sigma<0) sigma = std::sqrt(variance_noise()); // noise variance estimation + const double np = (2*patch_size + 1)*(2*patch_size + 1)*spectrum()/(double)sampling; + if (lambda<0) {// Bandwidth estimation + if (np<100) + lambda = ((((((1.1785e-12*np - 5.1827e-10)*np + 9.5946e-08)*np - + 9.7798e-06)*np + 6.0756e-04)*np - 0.0248)*np + 1.9203)*np + 7.9599; + else + lambda = (-7.2611e-04*np + 1.3213)*np + 15.2726; + } +#if cimg_debug>=1 + std::fprintf(stderr,"Size of the patch : %dx%d \n", + 2*patch_size + 1,2*patch_size + 1); + std::fprintf(stderr,"Size of window where similar patch are looked for : %dx%d \n", + (int)(alpha*(2*patch_size + 1)),(int)(alpha*(2*patch_size + 1))); + std::fprintf(stderr,"Bandwidth of the kernel : %fx%f^2 \n", + lambda,sigma); + std::fprintf(stderr,"Noise standard deviation estimated to : %f \n", + sigma); +#endif + + CImg dest(width(),height(),depth(),spectrum(),0); + double *uhat = new double[spectrum()]; + const double h2 = -.5/(lambda*sigma*sigma); // [Kervrann] notations + if (depth()!=1){ // 3D case + const CImg<> P = (*this).get_blur(1); // inspired from Mahmoudi&Sapiro SPletter dec 05 + const int n_simu = 64; + CImg<> tmp(n_simu,n_simu,n_simu); + const double sig = std::sqrt(tmp.fill(0.f).noise(sigma).blur(1).pow(2.).sum()/(n_simu*n_simu*n_simu)); + const int + patch_size_z = 0, + pxi = (int)(alpha*patch_size), + pyi = (int)(alpha*patch_size), + pzi = 2; //Define the size of the neighborhood in z + for (int zi = 0; zi=1 + std::fprintf(stderr,"\rProcessing : %3d %%",(int)((float)zi/(float)depth()*100.));fflush(stdout); +#endif + for (int yi = 0; yi=0 && zj_=0 && zi_=0 && yj_=0 && yi_=0 && xj_=0 && xi_wmax?w:wmax; + cimg_forC(*this,v) uhat[v]+=w*(*this)(xj,yj,zj,v); + sw+=w; + } + } + // add the central pixel + cimg_forC(*this,v) uhat[v]+=wmax*(*this)(xi,yi,zi,v); + sw+=wmax; + if (sw) cimg_forC(*this,v) dest(xi,yi,zi,v) = (T)(uhat[v]/=sw); + else cimg_forC(*this,v) dest(xi,yi,zi,v) = (*this)(xi,yi,zi,v); + } + } + } + else { // 2D case + const CImg<> P = (*this).get_blur(1); // inspired from Mahmoudi&Sapiro SPletter dec 05 + const int n_simu = 512; + CImg<> tmp(n_simu,n_simu); + const double sig = std::sqrt(tmp.fill(0.f).noise(sigma).blur(1).pow(2.).sum()/(n_simu*n_simu)); + const int + pxi = (int)(alpha*patch_size), + pyi = (int)(alpha*patch_size); //Define the size of the neighborhood + for (int yi = 0; yi=1 + std::fprintf(stderr,"\rProcessing : %3d %%",(int)((float)yi/(float)height()*100.));fflush(stdout); +#endif + for (int xi = 0; xi=0 && yj_=0 && yi_=0 && xj_=0 && xi_wmax?w:wmax; // Store the maximum of the weights + sw+=w; // Compute the sum of the weights + } + } + // add the central pixel with the maximum weight + cimg_forC(*this,v) uhat[v]+=wmax*(*this)(xi,yi,v); + sw+=wmax; + + // Compute the estimate for the current pixel + if (sw) cimg_forC(*this,v) dest(xi,yi,v) = (T)(uhat[v]/=sw); + else cimg_forC(*this,v) dest(xi,yi,v) = (*this)(xi,yi,v); + } + } // main loop + } // 2d + delete [] uhat; + dest.move_to(*this); +#if cimg_debug>=1 + std::fprintf(stderr,"\n"); // make a new line +#endif + } // is empty + return *this; +} + +//! Get the result of the NL-Means denoising algorithm. +/** + \param patch_size = radius of the patch (1=3x3 by default) + \param lambda = bandwidth ( -1 by default : automatic selection) + \param alpha = size of the region where similar patch are searched (3 x patch_size = 9x9 by default) + \param sigma = noise standard deviation (-1 = estimation) + \param sampling = sampling of the patch (1 = uses all point, 2 = uses one point on 4, etc) + If the image has three dimensions then the patch is only in 2D and the neighborhood extent in time is only 5. + If the image has several channel (color images), the distance between the two patch is computed using + all the channels. + The greater the patch is the best is the result. + Lambda parameter is function of the size of the patch size. The automatic Lambda parameter is taken + in the Chi2 table at a significiance level of 0.01. This diffear from the original paper [1]. + The weighted average becomes then: + \f$$ \hat{f}(x,y) = \sum_{x',y'} \frac{1}{Z} exp(\frac{P(x,y)-P(x',y')}{2 \lambda \sigma^2}) f(x',y') $$\f + where \f$ P(x,y) $\f denotes the patch in (x,y) location. + + An a priori is also used to increase the speed of the algorithm in the spirit of Sapiro et al. SPletter dec 05 + + This very basic version of the Non-Local Means algorithm provides an output image which contains + some residual noise with a relatively small variance (\f$\sigma<5$\f). + + [1] A non-local algorithm for image denoising + Buades, A.; Coll, B.; Morel, J.-M.; + Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on + Volume 2, 20-25 June 2005 Page(s):60 - 65 vol. 2 +**/ +CImg get_nlmeans( int patch_size=1, double lambda=-1, double alpha=3 ,double sigma=-1, int sampling=1) const { + return CImg(*this).nlmeans(patch_size,lambda,alpha,sigma,sampling); +} + +#endif /* cimg_plugin_nlmeans */ diff --git a/plugins/skeleton.h b/plugins/skeleton.h new file mode 100644 index 000000000..928fc7646 --- /dev/null +++ b/plugins/skeleton.h @@ -0,0 +1,587 @@ +/* + # + # File : skeleton.h + # ( C++ header file - CImg plug-in ) + # + # Description : CImg plugin that implements the computation of the Hamilton-Jacobi skeletons + # using Siddiqi algorithm with the correction proposed by Torsello, + # as described in : + # + # [SBTZ02] K. Siddiqi, S. Bouix, A. Tannenbaum and S.W. Zucker. Hamilton-Jacobi Skeletons + # International Journal of Computer Vision, 48(3):215-231, 2002 + # + # [TH03] A. Torsello and E. R. Hancock. Curvature Correction of the Hamilton-Jacobi Skeleton + # IEEE Computer Vision and Pattern Recognition, 2003 + # + # [BST05] S. Bouix, K. Siddiqi and A. Tannenbaum. Flux driven automatic centerline + # extraction. Medical Image Analysis, 9:209-221, 2005 + # + # IMPORTANT WARNING : You must include STL's before plugin inclusion to make it working ! + # + # Copyright : Francois-Xavier Dupe + # ( http://www.greyc.ensicaen.fr/~fdupe/ ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ +#ifndef cimg_plugin_skeleton +#define cimg_plugin_skeleton + +/** + * Compute the flux of the gradient + * @param grad the gradient of the distance function + * @param sY the sampling size in Y + * @param sZ the sampling size in Z + * @return the flux + */ +CImg get_flux(const CImgList & grad, + const float sY=1.0f, const float sZ=1.0f) const { + + int stop = 0; // Stop flag + float f = 0; // The current flux + int count = 0; // Counter + CImg flux(width(),height(),depth(),1,0); + + cimg_forXYZ((*this),x,y,z) { + if (!(*this)(x,y,z)) continue; // If the point is the background + + // Look at the neigthboorhound and compute the flux + stop = 0; + f = 0; + count = 0; + + for (int k = -1; k<=1; ++k) + for (int l = -1; l<= 1; ++l) + for (int m = -1; m<= 1; ++m) { + if (stop==1) continue; + + // Protection + if ((x + k<0) || (x + k>=width()) || (y + l<0) || (y + l>=height()) || + (z + m<0) || (z + m>=depth()) || (k==0 && l==0 && m==0)) continue; + ++count; + + // Test if the point is in the interior + if ((*this)(x + k,y + l,z + m)==0) { stop = 1; continue; } + + // Compute the flux + f+=(grad(0,x + k,y + l,z + m)*k + grad(1,x + k,y + l,z + m)*l/sY + grad(2,x + k,y + l,z + m)*m/sZ)/ + std::sqrt((float)(k*k + l*l + m*m)); + } + + // Update + if (stop==1 || count==0) flux(x,y,z) = 0; + else flux(x,y,z) = f/count; + } + + return flux; +} + +/** + * Definition of a point with his flux value + */ +struct _PointFlux { + int pos [3]; + float flux; + float dist; +}; + +/** + * Class for the priority queue + */ +class _compare_point { + /** + * Create medial curves + */ + bool curve; + + public: + _compare_point(const bool _curve=false) { this->curve = _curve; } + + bool operator()(const _PointFlux & p1, const _PointFlux & p2) const { + if (curve) { + if (p1.dist>p2.dist) return true; + else if (p1.dist==p2.dist && p1.fluxp2.dist) return true; + } + return false; + } +}; + +/** + * Compute the log-density using the algorithm from Torsello + * @param dist the distance map + * @param grad the gradient of the distance map, e.g. the flux + * @param flux the divergence map + * @param delta the threshold for the division + * @return the logdensity \rho + */ +CImg get_logdensity(const CImg & dist, + const CImgList & grad, + const CImg & flux, float delta = 0.1) const { + std::priority_queue< _PointFlux, std::vector<_PointFlux>, _compare_point > pqueue(true); + CImg logdensity(width(),height(),depth(),1,0); + + // 1 - Put all the pixel inside the priority queue + cimg_forXYZ(dist,x,y,z) if (dist(x,y,z)!=0) { + _PointFlux p; + p.pos[0] = x; + p.pos[1] = y; + p.pos[2] = z; + p.flux = 0; + p.dist = dist(x,y,z); + pqueue.push(p); + } + + // 2 - Compute the logdensity + while (!pqueue.empty()) { + _PointFlux p = pqueue.top(); + pqueue.pop(); + + const float + Fx = grad(0,p.pos[0],p.pos[1],p.pos[2]), + Fy = grad(1,p.pos[0],p.pos[1],p.pos[2]), + Fz = grad(2,p.pos[0],p.pos[1],p.pos[2]); + + logdensity(p.pos[0],p.pos[1],p.pos[2]) = logdensity.linear_atXYZ(p.pos[0] - Fx,p.pos[1] - Fy,p.pos[2] - Fz) + - 0.5f * (flux(p.pos[0],p.pos[1],p.pos[2]) + flux.linear_atXYZ(p.pos[0] - Fx,p.pos[1] - Fy,p.pos[2] - Fz)); + + const float tmp = 1.0f - (1.0f - std::fabs(Fx)) * (1.0f - std::fabs(Fy)) * (1.0f - std::fabs(Fz)); + if (tmp>delta) logdensity(p.pos[0],p.pos[1],p.pos[2])/=tmp; + else if (delta<1) logdensity(p.pos[0],p.pos[1],p.pos[2]) = 0; + } + + return logdensity; +} + +/** + * Computed the corrected divergence map using Torsello formula and idea + * @param logdensity the log density map + * @param grad the gradient of the distance map + * @param flux the flux using siddiqi formula + * @param delta the discrete step + * @return the corrected divergence map + */ +CImg get_corrected_flux(const CImg & logdensity, + const CImgList & grad, + const CImg & flux, + float delta = 1.0) const { + + CImg corr_map(width(),height(),depth(),1,0); + cimg_forXYZ(corr_map,x,y,z) { + const float + Fx = grad(0,x,y,z), + Fy = grad(1,x,y,z), + Fz = grad(2,x,y,z); + corr_map(x,y,z) = + (logdensity(x,y,z) - + logdensity.linear_atXYZ(x - Fx,y - Fy,z - Fz)) * expf(logdensity(x,y,z) - 0.5f * delta) + + 0.5f * ( flux.linear_atXYZ(x - Fx,y - Fy,z - Fz)*expf(logdensity.linear_atXYZ(x - Fx,y - Fy,z - Fz)) + + flux(x,y,z)*expf(logdensity(x,y,z))); + } + + return corr_map; +} + +/** + * Test if a point is simple using Euler number for 2D case + * or using Malandain criterion for 3D case + * @param img the image + * @param x the x coordinate + * @param y the y coordinate + * @param z the z coordinate + * @return true if simple + */ +bool _isSimple (const CImg & img, int x, int y, int z ) const { + if (img.depth()==1) { // 2D case + int V = 0, E = 0; // Number of vertices and edges + + for (int k = -1; k<=1; ++k) + for (int l = -1; l<=1; ++l) { + // Protection + if (x+k<0 || x+k>=img.width() || y+l<0 || y+l>=img.height()) continue; + + // Count the number of vertices + if (img(x + k,y + l)!=0 && !(k==0 && l==0)) { + ++V; + + // Count the number of edges + for (int k1 = -1; k1<=1; ++k1) + for (int l1 = -1; l1<=1; ++l1) { + // Protection + if (x + k + k1<0 || x + k + k1>=img.width() || y + l + l1<0 || y + l + l1>=img.height()) continue; + + if (!(k1==0 && l1==0) && img(x + k + k1,y + l + l1)!=0 && k + k1>-2 && l + l1>-2 && + k + k1<2 && l + l1<2 && !(k + k1==0 && l + l1==0)) + ++E; + } + } + } + + // Remove the corner if exists + if (x - 1>=0 && y - 1>=0 && img(x - 1,y - 1)!=0 && img(x,y - 1)!=0 && img(x - 1,y)!=0) E-=2; + if (x - 1>=0 && y + 1=0 && img(x + 1,y - 1)!=0 && img(x,y - 1)!=0 && img(x + 1,y)!=0) E-=2; + if (x + 1 visit(3,3,3,1,0); // Visitor table + int C_asterix = 0, C_bar = 0, count = 0; + visit(1,1,1) = -1; + + // Compute C^* + + // Seeking for a component + for (int k = -1; k<=1; ++k) + for (int l = -1; l<=1; ++l) + for (int m = -1; m<=1; ++m) { + int a_label = 0; + + // Protection + if (x + k<0 || x + k>=img.width() || + y + l<0 || y + l>=img.height() || + z + m<0 || z + m>=img.depth() || + (k==0 && l==0 && m==0)) continue; + + if (visit(1 + k,1 + l,1 + m)==0 && img(x + k,y + l,z + m)!=0) { + // Look after the neightbor + for (int k1 = -1; k1<=1; ++k1) + for (int l1 = -1; l1<=1; ++l1) + for (int m1 = -1; m1<=1; ++m1) { + // Protection + if (x + k + k1<0 || x + k + k1>=img.width() || + y + l + l1<0 || y + l + l1>=img.height() || + z + m + m1<0 || z + m + m1>=img.depth() || + k + k1>1 || k + k1<-1 || + l + l1>1 || l + l1<-1 || + m + m1>1 || m + m1<-1 ) continue; + + // Search for a already knew component + if (visit(1 + k + k1,1 + l + l1,1 + m + m1)>0 && + img(x + k + k1,y + l + l1,z + m + m1)!=0) { + if (a_label==0) a_label = visit(1 + k + k1,1 + l + l1,1 + m + m1); + else if (a_label!=visit(1 + k + k1,1 + l + l1,1 + m + m1)) { + // Meld component + --C_asterix; + + int C = visit(1 + k + k1,1 + l + l1,1 + m + m1); + cimg_forXYZ(visit,a,b,c) if (visit(a,b,c)==C) visit(a,b,c) = a_label; + } + } + } + + // Label the point + if (a_label==0) { + // Find a new component + ++C_asterix; + ++count; + visit(1 + k ,1 + l,1 + m) = count; + } else visit(1 + k,1 + l,1 + m) = a_label; + } + } + + if (C_asterix!=1) return false; + + // Compute \bar{C} + + // Reinit visit + visit.fill(0); + visit(1,1,1) = -1; + + // Seeking for a component + + // Look at X-axis + for (int k = -1; k<=1; ++k) { + if (x + k<0 || x + k>=img.width()) continue; + + if (img(x + k,y,z)==0 && visit(1 + k,1,1)==0) { + ++C_bar; + ++count; + visit(1 + k,1,1) = count; + + // Follow component + for (int l = -1; l<=1; ++l) { + if (y + l=0 && img(x + k,y + l,z)==0 && visit(1 + k,1 + l,1)==0) + visit(1 + k,1 + l,1) = count; + if (z + l=0 && img(x + k,y,z + l)==0 && visit(1 + k,1,1 + l)==0) + visit(1 + k,1,1 + l) = count; + } + } + } + + // Look at Y-axis + for (int k = -1; k<=1; ++k) { + if (y + k<0 || y + k>=img.height()) continue; + + if (img(x,y + k,z)==0 && visit(1,1 + k,1)==0) { + int a_label = 0; + ++C_bar; + ++count; + visit(1,1 + k,1) = count; + a_label = count; + + // Follow component + for (int l = -1; l<=1; ++l) { + if (l==0) continue; + + if (x + l=0 && img(x + l,y + k,z)==0) { + if (visit(1 + l,1 + k,1)!=0) { + if (a_label!=visit(1 + l,1 + k,1)) { + // Meld component + --C_bar; + + int C = visit(1 + l,1 + k,1); + cimg_forXYZ(visit,a,b,c) + if (visit(a,b,c)==C) visit(a,b,c) = a_label; + } + } else visit(1 + l,1 + k,1) = a_label; + } + + if (z + l=0 && img(x,y + k,z + l)==0) { + if (visit(1,1 + k,1 + l)!=0) { + if (a_label!=visit(1,1 + k,1 + l)) { + // Meld component + --C_bar; + + int C = visit(1,1 + k,1 + l); + cimg_forXYZ(visit,a,b,c) + if (visit(a,b,c)==C) visit(a,b,c) = a_label; + } + } else visit(1,1 + k,1 + l) = a_label; + } + } + } + } + + // Look at Z-axis + for (int k = -1; k<=1; ++k) { + if (z + k<0 || z + k>=img.depth()) continue; + + if (img(x,y,z + k)==0 && visit(1,1,1 + k)==0) { + int a_label = 0; + ++C_bar; + ++count; + visit(1,1,1 + k) = count; + a_label = count; + + // Follow component + for (int l = -1; l<=1; ++l) { + if (l==0) continue; + + if (x + l=0 && img(x + l,y,z + k)==0) { + if (visit(1 + l,1,1 + k)!=0) { + if (a_label!=visit(1 + l,1,1 + k)) { + // Meld component + --C_bar; + + int C = visit(1 + l,1,1 + k); + cimg_forXYZ(visit,a,b,c) + if (visit(a,b,c)==C) visit(a,b,c) = a_label; + } + } else visit(1 + l,1,1 + k) = a_label; + } + + if (y + l=0 && img(x,y + l,z + k)==0) { + if (visit(1,1 + l,1 + k)!=0) { + if (a_label!=visit(1,1 + l,1 + k)) { + // Meld component + --C_bar; + + int C = visit(1,1 + l,1 + k); + cimg_forXYZ(visit,a,b,c) + if (visit(a,b,c)==C) visit(a,b,c) = a_label; + } + } else visit(1,1 + l,1 + k) = a_label; + } + } + } + } + if (C_bar==1) return true; + } + + return false; +} + +/** + * Test if a point is a end point + * @param img the image + * @param a_label the table of labels + * @param curve set it to true for having medial curve + * @param x the x coordinate + * @param y the y coordinate + * @param z the z coordinate + * @return true if simple + */ +bool _isEndPoint(const CImg & img, const CImg & a_label, + const bool curve, const int x, const int y, const int z) const { + if (a_label(x,y,z)==1) return true; + + if ((!curve) && (img.depth()!=1)) { // 3D case with medial surface + // Use Pudney specification with the 9 plans + const int plan9 [9][8][3] = + { { {-1,0,-1}, {0,0,-1}, {1,0,-1}, {-1,0,0}, {1,0,0}, {-1,0,1}, {0,0,1}, {1,0,1} }, // Plan 1 + { {-1,1,0}, {0,1,0}, {1,1,0}, {-1,0,0}, {1,0,0}, {-1,-1,0}, {0,-1,0}, {1,-1,0} }, // Plan 2 + { {0,-1,-1}, {0,0,-1}, {0,1,-1}, {0,-1,0}, {0,1,0}, {0,-1,1}, {0,0,1}, {0,1,1} }, // Plan 3 + { {1,1,1}, {0,1,0}, {-1,1,-1}, {1,0,1}, {-1,0,-1}, {-1,-1,-1}, {0,-1,0}, {1,-1,1} }, // Plan 4 + { {-1,1,1}, {0,1,0}, {1,1,-1}, {-1,0,1}, {1,0,-1}, {-1,-1,1}, {0,-1,0}, {1,-1,-1} }, // Plan 5 + { {-1,1,1}, {0,1,1}, {1,1,1}, {-1,0,0}, {1,0,0}, {-1,-1,-1}, {0,-1,-1}, {1,-1,-1} }, // Plan 6 + { {-1,1,-1}, {0,1,-1}, {1,1,-1}, {-1,0,0}, {1,0,0}, {-1,-1,1}, {0,-1,1}, {1,-1,1} }, // Plan 7 + { {-1,1,-1}, {-1,1,0}, {-1,1,1}, {0,0,-1}, {0,0,1}, {1,-1,-1}, {1,-1,0}, {1,-1,1} }, // Plan 8 + { {1,1,-1}, {1,1,0}, {1,1,1}, {0,0,-1}, {0,0,1}, {-1,-1,-1}, {-1,-1,0}, {-1,-1,1} } // Plan 9 + }; + + // Count the number of neighbors on each plan + for (int k = 0; k<9; ++k) { + int count = 0; + + for (int l = 0; l<8; ++l) { + if (x + plan9[k][l][0]<0 || x + plan9[k][l][0]>=img.width() || + y + plan9[k][l][1]<0 || y + plan9[k][l][1]>=img.height() || + z + plan9[k][l][2]<0 || z + plan9[k][l][2]>=img.depth()) continue; + + if (img(x + plan9[k][l][0],y + plan9[k][l][1],z + plan9[k][l][2])!=0) ++count; + } + + if (count<2) return true; + } + } else { // 2D or 3D case with medial curve + int isb = 0; + + for (int k = -1; k<=1; ++k) + for (int l = -1; l<=1; ++l) + for (int m = -1; m<=1; ++m) { + // Protection + if (x + k<0 || x + k>=img.width() || + y + l<0 || y + l>=img.height() || + z + m<0 || z + m>=img.depth()) continue; + + if (img(x + k,y + l,z + m)!=0) ++isb; + } + + if (isb==2) return true; // The pixel with one neighbor + } + + // Else it's not... + return false; +} + +/** + * Compute the skeleton of the shape using Hamilton-Jacobi scheme + * @param flux the flux of the distance gradient + * @param dist the euclidean distance of the object + * @param curve create or not medial curve + * @param thres the threshold on the flux + * @return the skeleton + */ +CImg get_skeleton (const CImg & flux, + const CImg & dist, const bool curve, const float thres) const { + CImg + skeleton(*this), // The skeleton + a_label(width(),height(),depth(),1,0), // Save label + count(width(),height(),depth(),1,0); // A counter for the queue + std::priority_queue< _PointFlux, std::vector<_PointFlux>, _compare_point > pqueue(curve); + int isb = 0; + + // 1 - Init get the bound points + cimg_forXYZ(*this,x,y,z) { + if (skeleton(x,y,z)==0) continue; + + // Test bound condition + isb = 0; + for (int k = -1; k<=1; ++k) + for (int l = -1; l<=1; ++l) + for (int m = -1; m<=1; ++m) { + // Protection + if (x + k<0 || x + k>=width() || + y + l<0 || y + l>=height() || + z + m<0 || z + m>=depth()) continue; + if (skeleton(x + k,y + l,z + m)==0) isb = 1; + } + + if (isb==1 && _isSimple(skeleton,x,y,z)) { + _PointFlux p; + p.pos[0] = x; + p.pos[1] = y; + p.pos[2] = z; + p.flux = flux(x,y,z); + p.dist = dist(x,y,z); + pqueue.push(p); + count(x,y,z) = 1; + } + } + + // 2 - Compute the skeleton + while (!pqueue.empty()) { + _PointFlux p = pqueue.top(); // Get the point with the max flux + pqueue.pop(); // Remove the point from the queue + count(p.pos[0],p.pos[1],p.pos[2]) = 0; // Reinit counter + + // Test if the point is simple + if (_isSimple(skeleton,p.pos[0],p.pos[1],p.pos[2])) { + if ((! _isEndPoint(skeleton,a_label,curve,p.pos[0],p.pos[1],p.pos[2])) || p.flux>thres) { + skeleton(p.pos[0],p.pos[1],p.pos[2]) = 0; // Remove the point + + for (int k = -1; k<=1; ++k) + for (int l = -1; l<=1; ++l) + for (int m = -1; m<=1; ++m) { + // Protection + if (p.pos[0] + k<0 || p.pos[0] + k>= width() || + p.pos[1] + l<0 || p.pos[1] + l>= height() || + p.pos[2] + m<0 || p.pos[2] + m>= depth()) continue; + if (skeleton(p.pos[0] + k,p.pos[1] + l,p.pos[2] + m)!=0 && + count(p.pos[0] + k,p.pos[1] + l,p.pos[2] + m)<1 && + _isSimple(skeleton,p.pos[0] + k,p.pos[1] + l,p.pos[2] + m)) { + _PointFlux p1; + p1.pos[0] = p.pos[0] + k; + p1.pos[1] = p.pos[1] + l; + p1.pos[2] = p.pos[2] + m; + p1.flux = flux(p.pos[0] + k,p.pos[1] + l,p.pos[2] + m); + p1.dist = dist(p.pos[0] + k,p.pos[1] + l,p.pos[2] + m); + pqueue.push(p1); + count(p.pos[0] + k,p.pos[1] + l,p.pos[2] + m) = 1; + } + } + } else a_label(p.pos[0],p.pos[1],p.pos[2]) = 1; // Mark the point as skeletal + } + } + + return skeleton; +} + +/** + * In place version of get_skeleton + */ +CImg skeleton(const CImg & flux, + const CImg & dist, bool curve ,float thres) { + return get_skeleton(flux,dist,curve,thres).move_to(*this); +} + +#endif /* cimg_plugin_skeleton */ diff --git a/plugins/tiff_stream.h b/plugins/tiff_stream.h new file mode 100644 index 000000000..1a47ada35 --- /dev/null +++ b/plugins/tiff_stream.h @@ -0,0 +1,192 @@ +/* +# +# File : tiff_stream.h +# ( C++ header file - CImg plug-in ) +# +# Description : This CImg plug-in provide functions to load and save tiff images +# from std::istream/ to std::ostream +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : Wolf Blecher +# ( Wolf.Blecher(at)sirona.com ) +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# +*/ + +/*----------------------------------------------------------------------------------- + +IMPORTANT NOTE : + +You *need* to include the following lines in your own code to use this plugin: + +#include "tiffio.h" +#include "tiffio.hxx" + +You *need* to link your code with the libtiff and libtiffxx libraries as well. + +------------------------------------------------------------------------------------*/ + +#ifndef cimg_use_tiff +#error cimg_use_tiff not defined +#endif + +#ifndef cimg_plugin_tiff_stream +#define cimg_plugin_tiff_stream + +#include + +///////////////////////////////////////////////////////////////// +// +// Define main CImg plugin functions. +// (you should use these functions only in your own code) +// +///////////////////////////////////////////////////////////////// + +//! Save image as a TIFF file. +/** + \param tiffOutStream std::ostream, where to write the image to + \param compression_type Type of data compression. + Can be { 1=None | 2=CCITTRLE | 3=CCITTFAX3 | 4=CCITTFAX4 | 5=LZW | 6=JPEG }. + \note + - libtiff support is enabled by defining the precompilation + directive \c cimg_use_tiff. + - When libtiff is enabled, 2D and 3D (multipage) several + channel per pixel are supported for + char,uchar,short,ushort,float and \c double pixel types. +**/ +const CImg& save_tiff(std::ostream *tiffOutStream, const unsigned int compression_type=0) const { + if (!tiffOutStream->good()) + { + throw CImgArgumentException(_cimg_instance + "save_tiff(): tiffstream is not good!", + cimg_instance); + } + + if (is_empty()) + { + throw CImgArgumentException(_cimg_instance + "Not allowed to write empty images to stream", + cimg_instance + ); + } + + TIFF *tif = TIFFStreamOpen("MemTiff", tiffOutStream); + if (tif) + { + cimg_forZ(*this,z) get_slice(z)._save_tiff(tif,z,z,compression_type,0,0); + tiffOutStream->flush(); + TIFFClose(tif); + } + else + { + throw CImgIOException(_cimg_instance + "save_tiff(): Failed to stream for writing.", + cimg_instance); + } + + return *this; +} + +//! Load images from a TIFF file. +/** + \param tiffInStream std::istream to read data from. + \param first_frame Index of first image frame to read. + \param last_frame Index of last image frame to read. + \param step_frame Step applied between each frame. +**/ +CImg& load_tiff(std::istream* tiffInStream, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1) +{ + const unsigned int + nfirst_frame = first_frame=nb_images || (nlast_frame!=~0U && nlast_frame>=nb_images)) + { + cimg::warn("load_tiff(): Invalid specified frame range is [%u,%u] (step %u) " + "since stream contains %u image(s).", + nfirst_frame,nlast_frame,nstep_frame,nb_images); + } + + if (nfirst_frame>=nb_images) + { + return assign(); + } + + if (nlast_frame>=nb_images) + { + nlast_frame = nb_images - 1; + } + TIFFSetDirectory(tif,0); + CImg frame; + for (unsigned int l = nfirst_frame; l<=nlast_frame; l+=nstep_frame) { + frame._load_tiff(tif,l,0,0); + if (l==nfirst_frame) + assign(frame._width,frame._height,1 + (nlast_frame - nfirst_frame)/nstep_frame,frame._spectrum); + if (frame._width>_width || frame._height>_height || frame._spectrum>_spectrum) + resize(std::max(frame._width,_width),std::max(frame._height,_height), + -100,std::max(frame._spectrum,_spectrum),0); + draw_image(0,0,(l - nfirst_frame)/nstep_frame,frame); + } + TIFFClose(tif); + } + else + { + throw CImgIOException(_cimg_instance + "load_tiff(): Failed to read data from stream", + cimg_instance); + } + + return *this; +} + +//! Load a multi-page TIFF file \newinstance. +static CImg get_load_tiff(std::istream* tiffInStream, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1) +{ + return CImg().load_tiff(tiffInStream,first_frame,last_frame,step_frame); +} + +// End of the plug-in +//------------------- +#endif /* cimg_plugin_tiff_stream */ diff --git a/plugins/tinymatwriter.h b/plugins/tinymatwriter.h new file mode 100644 index 000000000..12d2085d7 --- /dev/null +++ b/plugins/tinymatwriter.h @@ -0,0 +1,109 @@ +/* +# +# File : tinymatwriter.h +# ( C++ header file - CImg plug-in ) +# +# Description : This CImg plug-in provide functions to write image as +# Matlab MAT files +# ( http://cimg.eu ) +# +# Copyright : Jan W. Krieger +# ( j.krieger(at)dkfz.de jan(at)jkrieger.de ) +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# +*/ + +/*----------------------------------------------------------------------------------- + +IMPORTANT NOTE : + +You *need* to compile tinymatwriter.cpp and link the result to your project and +include "tinymatwriter.h" berfore inclusing CIMg or this plugin! + +This library is available from: + https://github.com/jkriege2/TinyMAT +------------------------------------------------------------------------------------*/ + + + +#ifndef cimg_plugin_tinymatwriter +#define cimg_plugin_tinymatwriter + +#include + +///////////////////////////////////////////////////////////////// +// +// Define main CImg plugin functions. +// (you should use these functions only in your own code) +// +///////////////////////////////////////////////////////////////// + +//! Save image as a MAT file. +/** + \param filename filename of the output file + \note TinyMATWriter supports signed/unsigned int with 8/16/32/64 bits, double, float and bool as pixel types! +**/ +const CImg& save_tinymat(const char *filename) const { + + TinyMATWriterFile* mat=TinyMATWriter_open(filename); + if (mat) { + int32_t size_x=width(); + int32_t size_y=height(); + int32_t size_z=depth(); + int32_t size_c=spectrum(); + + int32_t sizes[4]={size_x, size_y, size_z, size_c}; + uint32_t dims=4; + if (size_c==1) { + dims=3; + if (size_z==1) { + dims=2; + if (size_y==1) { + dims=1; + } + } + } + + TinyMATWriter_writeMatrixND_rowmajor(mat, "CImg_image", data(), sizes, dims); + TinyMATWriter_close(mat); + } else { + throw CImgIOException(_cimg_instance + "save_tinymat(): Failed to open file.", + cimg_instance); + } + + return *this; +} + + +// End of the plug-in +//------------------- +#endif /* cimg_plugin_tinymatwriter */ diff --git a/plugins/vrml.h b/plugins/vrml.h new file mode 100644 index 000000000..f5c6b936b --- /dev/null +++ b/plugins/vrml.h @@ -0,0 +1,894 @@ +/* + # + # File : vrml.h + # ( C++ header file - CImg plug-in ) + # + # Description : CImg plugin that provide functions to load/save VRML files. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Greg Rami + # ( greg.rami36 (at) gmail.com ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +/*----------------------------------------------------------------------------------- + + IMPORTANT NOTE : + + You *need* to include the following lines in your own code to use this plugin : + + #include + #include + #include + #include + +------------------------------------------------------------------------------------*/ + +#ifndef cimg_plugin_vrml +#define cimg_plugin_vrml + +//! Load a 3d object from a .VRML file. +template +CImg& load_vrml(const char *const filename, CImgList& primitives, CImgList& colors) { + return _load_vrml(0,filename,primitives,colors); +} + +//! Load a 3d object from a .VRML file. +template +static CImg get_load_vrml(const char *const filename, CImgList& primitives, CImgList& colors) { + return CImg().load_vrml(filename,primitives,colors); +} + +//! Load a 3d object from a .VRML file. +template +CImg& load_vrml(std::FILE *const file, CImgList& primitives, CImgList& colors) { + return _load_vrml(file,0,primitives,colors); +} + +//! Load a 3d object from a .VRML file. +template +static CImg get_load_vrml(std::FILE *const file, CImgList& primitives, CImgList& colors) { + return CImg().load_vrml(file,primitives,colors); +} + +//! Load a 3d object from a .VRML file (internal). +template +CImg& _load_vrml(std::FILE *const file, const char *const filename,CImgList& primitives, CImgList& colors) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_vrml() : Specified filename is (null).", + cimg_instance); + std::FILE *const nfile = file?file:cimg::fopen(filename,"r"); + + char line[1024] = { 0 }; + int err; + + // Skip comments, and read the first node. + do { err = std::fscanf(nfile,"%65535[^\n] ",line); } while (!err || (err==1 && *line=='#')); + + // Check for a first valid vrml valid node. + if (cimg::strncasecmp(line,"Shape",5) && + cimg::strncasecmp(line,"Transform",9) && + cimg::strncasecmp(line,"NavigationInfo",14) && + cimg::strncasecmp(line,"Billboard",9)) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : VRML nodes not found in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + + // Look for the Shape node (as we do not manage the treatment for the other nodes yet). + if (cimg::strncasecmp(line,"Shape",5)) { + while (cimg::strncasecmp(line,"Shape",5) && !std::feof(nfile)) err = std::fscanf(nfile,"%1023[^\n] ",line); + if (std::feof(nfile)) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Shape node not found in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + } + + // Look for either geometry or appearance node. + while (cimg::strncasecmp(line,"geometry",8) && cimg::strncasecmp(line,"appearance",10) && !std::feof(nfile)) + err = std::fscanf(nfile,"%1023[^\n] ",line); + if (std::feof(nfile)) { // If none of these nodes are defined. + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Geometry and appearance nodes not found in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + + std::vector listePoints; // Intermediate list containing the points of the whole object. + primitives.assign(); + colors.assign(); + // Count the number of points of the whole object and the number of primitives. + int nbPointsTotal = 0, nbPrimitives = 0; + float r = 0.78f, g = 0.78f, b = 0.78f; // RGB level of the object, the object is gray by default. + // Boolean used to know if a color is defined for an object, + // if this object has multiple colors or if the object has a texture + bool colorDefined = true, multipleColors = false, textureTest = false; + char textureFile[1024] = { 0 }; // Variable containing the name of the image used as a texture + + while (!std::feof(nfile)) { + char type[1024] = { 0 }, textureFileTemp[1024] = { 0 }; + colorDefined = true; + if (!cimg::strncasecmp(line,"geometry",8)) { // We are at the geometry node + std::sscanf(line,"geometry %s",type); // We are looking for the type of geometry to draw + const CImg coords = CImg::empty(); // CImg used for the texturization of an object + CImgList colorsTextured; // CImgList used for the texturization of the color of an object + CImgList primitivesTemp; // Intermediate CImgList used to update the primitives of the whole object + + if (!cimg::strncasecmp(type,"Box",3)) { // If the object to draw is a box + while (cimg::strncasecmp(line,"size",4) && !std::feof(nfile)) // We are looking for the size of the box + err = std::fscanf(nfile,"%1023[^\n] ",line); + + if (std::feof(nfile)) { // If no size is specified + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : size of box not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + float X = 0, Y = 0, Z = 0; // The width, height and depth of the box + if ((err = std::sscanf(line,"size %f %f %f[^\n] ",&X,&Y,&Z))!=3 && + (err = std::sscanf(line,"size %f,%f,%f[^\n] ",&X,&Y,&Z))!=3) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Failed to read box size in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + // We generate the primitives and the points of the box + const CImg pointsTemp = CImg::box3d(primitivesTemp,(T)X,(T)Y,(T)Z); + + nbPrimitives = primitivesTemp.size(); // We save the number of primitives of the object + + if (textureTest) { // If the object has a texture + // We put the image used as a texture into a CImg object + const CImg texture(textureFile); + // We initialize the colorsTextured list + colorsTextured.insert(primitivesTemp.size(),CImg::vector(0,50,250)); + // We texturize the object + pointsTemp.texturize_object3d(primitivesTemp,colorsTextured,texture,coords); + nbPrimitives = 0; + } + + if(nbPointsTotal) { // If there are already some objects in the scene + for (int j=0;j<(int)primitivesTemp.size();j++) { + for(int i=0;i<4;i++) + // We shift the indices in the primitives to designate the right points + primitivesTemp(j).at(i) += (tf)nbPointsTotal; + } + } + primitives.push_back(primitivesTemp); // We add the primitives of the box to the general primitives variable + for(int i=0;i<(int)pointsTemp.size()/3;++i) { // We add the points into the temporary list in the right order + listePoints.push_back((T)pointsTemp.at(i)); + listePoints.push_back((T)pointsTemp.at(i + 8)); + listePoints.push_back((T)pointsTemp.at(i + 16)); + } + nbPointsTotal += pointsTemp.size()/3; // We increase the number of points of the whole object + } + else if(!cimg::strncasecmp(type,"Sphere",6)) { // If the object to draw is a sphere + while(cimg::strncasecmp(line,"radius",6) && !std::feof(nfile)) + err = std::fscanf(nfile,"%1023[^\n] ",line); + + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : radius of sphere not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + float R = 0; + if ((err = std::sscanf(line,"radius %f[^\n] ",&R))!=1) { // We get the radius of the sphere + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Failed to read sphere radius in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + // Compute the necessary points and primitives for a sphere of radius R + const CImg pointsTemp = CImg::sphere3d(primitivesTemp,(T)R); + // We get the number of primitives to used on the attribution of a color, in case no specific color is defined + nbPrimitives = primitivesTemp.size(); + + if(textureTest) { // If the object has a texture + // We put the image used as a texture into a CImg object + const CImg texture(textureFile); + // We initialize the colorsTextured list + colorsTextured.insert(primitivesTemp.size(),CImg::vector(0,50,250)); + pointsTemp.texturize_object3d(primitivesTemp,colorsTextured,texture,coords); // We texturize the object + nbPrimitives = 0; // We set to 0 because there is no color to use + } + + if(nbPointsTotal) { // If there are already some objects in the scene + for (int j=0;j<(int)primitivesTemp.size();j++) { + for(int i=0;i<3;i++) + primitivesTemp(j).at(i) += (tf)nbPointsTotal; + } + } + + primitives.push_back(primitivesTemp); + for(int i=0;i<(int)pointsTemp.size()/3;++i) { + listePoints.push_back((T)pointsTemp.at(i)); + listePoints.push_back((T)pointsTemp.at(i + pointsTemp.size()/3)); + listePoints.push_back((T)pointsTemp.at(i + 2*pointsTemp.size()/3)); + } + nbPointsTotal += pointsTemp.size()/3; + } + else if(!cimg::strncasecmp(type,"Cone",4)) { // If the object to draw is a cone + while(cimg::strncasecmp(line,"bottomRadius",12) && !std::feof(nfile) && cimg::strncasecmp(line,"height",6)) + err = std::fscanf(nfile,"%1023[^\n] ",line); + float R = 0, H = 0; + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : bottom radius and height of cone not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + else if(!cimg::strncasecmp(line,"bottomRadius",12)) { // We find the bottom radius of the cone first + if ((err = std::sscanf(line,"bottomRadius %f[^\n] ",&R))!=1) { // We get the radius into the variable R + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Failed to read cone bottomRadius in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + while(!std::feof(nfile) && cimg::strncasecmp(line,"height",6)) // We look for the height of the cone + err = std::fscanf(nfile,"%1023[^\n] ",line); + + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : height of cone not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + if ((err = std::sscanf(line,"height %f[^\n] ",&H))!=1) { // We get the height into the variable H + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Failed to read cone height in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + } + else { // We find the height of the cone first + if ((err = std::sscanf(line,"height %f[^\n] ",&H))!=1) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Failed to read cone height in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + while(!std::feof(nfile) && cimg::strncasecmp(line,"bottomRadius",12)) + err = std::fscanf(nfile,"%1023[^\n] ",line); + + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : bottom radius of cone not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + if ((err = std::sscanf(line,"bottomRadius %f[^\n] ",&R))!=1) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Failed to read cone bottom radius in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + } + // Compute the necessary points and primitives for a cone of radius R and height H + const CImg pointsTemp = CImg::cone3d(primitivesTemp,(T)R,(T)H); + + nbPrimitives = primitivesTemp.size(); + + if(textureTest) { // If the object has a texture + // We put the image used as a texture into a CImg object + const CImg texture(textureFile); + // We initialize the colorsTextured list + colorsTextured.insert(primitivesTemp.size(),CImg::vector(0,50,250)); + pointsTemp.texturize_object3d(primitivesTemp,colorsTextured,texture,coords); // We texturize the object + nbPrimitives = 0; + } + + if(nbPointsTotal) { + for (int j=0;j<(int)primitivesTemp.size();j++) { + for(int i=0;i<3;i++) + primitivesTemp(j).at(i) += (tf)nbPointsTotal; + } + } + + primitives.push_back(primitivesTemp); + for(int i=0;i<(int)pointsTemp.size()/3;++i) { + listePoints.push_back((T)pointsTemp.at(i)); + listePoints.push_back((T)pointsTemp.at(i + pointsTemp.size()/3)); + listePoints.push_back((T)pointsTemp.at(i + 2*pointsTemp.size()/3)); + } + nbPointsTotal += pointsTemp.size()/3; + } + else if(!cimg::strncasecmp(type,"Cylinder",8)) { // If the object to draw is a cylinder + while(cimg::strncasecmp(line,"radius",6) && !std::feof(nfile) && cimg::strncasecmp(line,"height",6)) + err = std::fscanf(nfile,"%1023[^\n] ",line); + float R = 0, H = 0; + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : radius or height of cylinder not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + else if(!cimg::strncasecmp(line,"radius",6)) { // If we find the radius first + if ((err = std::sscanf(line,"radius %f[^\n] ",&R))!=1) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Failed to read cylinder radius in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + while(!std::feof(nfile) && cimg::strncasecmp(line,"height",6)) // We now look for the height of the cylinder + err = std::fscanf(nfile,"%1023[^\n] ",line); + + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : height of cylinder not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + if ((err = std::sscanf(line,"height %f[^\n] ",&H))!=1) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Failed to read cylinder height in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + } + else { // If we find the height first + if ((err = std::sscanf(line,"height %f[^\n] ",&H))!=1) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Failed to read cylinder height in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + while(!std::feof(nfile) && cimg::strncasecmp(line,"radius",6))// We now look for the radius of the cylinder + err = std::fscanf(nfile,"%1023[^\n] ",line); + + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : radius of cylinder not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + if ((err = std::sscanf(line,"radius %f[^\n] ",&R))!=1) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : Failed to read cylinder radius in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + } + // Compute the necessary points and primitives for a cylinder of radius R and height H + const CImg pointsTemp = CImg::cylinder3d(primitivesTemp,(T)R,(T)H); + + if(textureTest) { // If the object has a texture + // We put the image used as a texture into a CImg object + const CImg texture(textureFile); + // We initialize the colorsTextured list + colorsTextured.insert(primitivesTemp.size(),CImg::vector(0,50,250)); + pointsTemp.texturize_object3d(primitivesTemp,colorsTextured,texture,coords); // We texturize the object + nbPrimitives = 0; + } + + nbPrimitives = primitivesTemp.size(); + + if(nbPointsTotal) { + for (int j=0;j<(int)primitivesTemp.size();j++) { + for(int i=0;i<3;i++) + primitivesTemp(j).at(i) += (tf)nbPointsTotal; + } + } + + primitives.push_back(primitivesTemp); + for(int i=0;i<(int)pointsTemp.size()/3;++i) { + listePoints.push_back((T)pointsTemp.at(i)); + listePoints.push_back((T)pointsTemp.at(i + pointsTemp.size()/3)); + listePoints.push_back((T)pointsTemp.at(i + 2*pointsTemp.size()/3)); + } + nbPointsTotal += pointsTemp.size()/3; + } + else if(!cimg::strncasecmp(type,"PointSet",8)) { // If the object to draw is a set of points + while(cimg::strncasecmp(line,"point [",7) && !std::feof(nfile)) + err = std::fscanf(nfile,"%1023[^\n] ",line); + + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : points of pointSet node not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + err = std::fscanf(nfile,"%1023[^\n] ",line); + int nbPoints = 0; + + while(cimg::strncasecmp(line,"]",1) && !std::feof(nfile)) { + // while we did not get all the points and while we are not at the end of the file + float X = 0, Y = 0, Z = 0; + if ((err = std::sscanf(line,"%f %f %f,[^\n] ",&X,&Y,&Z))==3 || + (err = std::sscanf(line,"%f,%f,%f,[^\n] ",&X,&Y,&Z))==3) { + // We get the coordinates of all the points and store them into a list of points + listePoints.push_back((T)X); + listePoints.push_back((T)Y); + listePoints.push_back((T)Z); + ++nbPoints; + } + err = std::fscanf(nfile,"%1023[^\n] ",line); + } + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : bad structure of pointSet node in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + primitivesTemp.assign(); + + for(int i=0;i temp(1,1,1,1,(tf)i); + primitivesTemp.push_back(temp); + } + + if(nbPointsTotal) { + for (int j=0;j<(int)primitivesTemp.size();j++) { + for(int i=0;i<(int)primitivesTemp(j).size();i++) + primitivesTemp(j).at(i) += (tf)nbPointsTotal; + } + } + nbPrimitives = primitivesTemp.size(); + + primitives.push_back(primitivesTemp); + + nbPointsTotal += nbPoints; + } + else if(!cimg::strncasecmp(type,"IndexedLineSet",14) || + !cimg::strncasecmp(type,"IndexedFaceSet",14)) { + // If the object to draw is a set of lines or a set of faces + while(cimg::strncasecmp(line,"point [",7) && !std::feof(nfile)) + err = std::fscanf(nfile,"%1023[^\n] ",line); + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : points of IndexedSet node not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + err = std::fscanf(nfile,"%1023[^\n] ",line); + int nbPoints = 0; + while(cimg::strncasecmp(line,"]",1) && !std::feof(nfile)) { + // As long as there are points defined we add them to the list + float X=0,Y=0,Z=0; + if ((err = std::sscanf(line,"%f %f %f,[^\n] ",&X,&Y,&Z))==3 || + (err = std::sscanf(line,"%f,%f,%f,[^\n] ",&X,&Y,&Z))==3) { + // We get the coordinates of the points into a list of points + listePoints.push_back((T)X); + listePoints.push_back((T)Y); + listePoints.push_back((T)Z); + ++nbPoints; + } + err = std::fscanf(nfile,"%1023[^\n] ",line); + } + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : bad structure of point vector node in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + primitivesTemp.assign(); + + while(cimg::strncasecmp(line,"coordIndex [",12) && !std::feof(nfile)) + // We are looking for the index of the points + err = std::fscanf(nfile,"%1023[^\n] ",line); + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : coordIndex not furnished for IndexedSet node in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + err = std::fscanf(nfile,"%1023[^\n] ",line); + + while(cimg::strncasecmp(line,"]",1) && !std::feof(nfile)) { // As long as there are indices + if(*line!='#') { + std::vector primitiveComponents; + char * pch; + pch = std::strtok (line,","); + + while (pch != NULL && std::atof(pch)!=-1) { // We extract the list of indices and store them into a vector + if(!(int)count(primitiveComponents.begin(),primitiveComponents.end(),(tf)std::atof(pch))) + primitiveComponents.push_back((tf)std::atof(pch)); + pch = std::strtok (NULL, ","); + } + CImg temp(1,primitiveComponents.size(),1,1); + + for(int i=0;i<(int)primitiveComponents.size();++i) + temp(0,i) = primitiveComponents.at(i); + primitivesTemp.push_back(temp); + } + err = std::fscanf(nfile,"%1023[^\n] ",line); + } + + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : bad structure of coordIndex in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + + if(nbPointsTotal) { + for (int j=0;j<(int)primitivesTemp.size();j++) { + for(int i=0;i<(int)primitivesTemp(j).size();i++) + primitivesTemp(j).at(i) += (tf)nbPointsTotal; + } + } + + nbPrimitives = primitivesTemp.size(); + primitives.push_back(primitivesTemp); + nbPointsTotal += nbPoints; + + while(cimg::strncasecmp(line,"color [",7) && cimg::strncasecmp(line,"}",1) && !std::feof(nfile)) + err = std::fscanf(nfile,"%1023[^\n] ",line); + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : bad structure of coordIndex in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + else if(!cimg::strncasecmp(line,"color [",7)) { // If there are different colors defined for each faces + multipleColors = true; + std::vector > listColors; + err = std::fscanf(nfile,"%1023[^\n] ",line); + while(cimg::strncasecmp(line,"]",1) && !std::feof(nfile)) { + // We add the list of all colors defined into the vector listColors + if(*line!='#') { + if ((err = std::sscanf(line,"%f %f %f[^\n] ",&r,&g,&b))!=3) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : wrong number of color furnished in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + CImg img(3,1,1,1,(tc)(r*255),(tc)(g*255),(tc)(b*255)); + listColors.push_back(img); + } + err = std::fscanf(nfile,"%1023[^\n] ",line); + } + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : bad structure of color in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + else { + while(cimg::strncasecmp(line,"colorIndex [",12) && !std::feof(nfile)) + err = std::fscanf(nfile,"%1023[^\n] ",line); + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : colorIndex not furnished for Color node in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + err = std::fscanf(nfile,"%1023[^\n] ",line); + while(cimg::strncasecmp(line,"]",1) && !std::feof(nfile)) { + // We add the colors at the right index into the vector colors + if(*line!='#') { + char * pch; + pch = std::strtok (line," "); + while (pch != NULL) { + int indice = std::atoi(pch); + colors.insert(CImg::vector((tc)(listColors[indice])[0], + (tc)(listColors[indice])[1], + (tc)(listColors[indice])[2])); + pch = std::strtok (NULL, " "); + } + } + err = std::fscanf(nfile,"%1023[^\n] ",line); + } + } + } + } + else // If none of the known type of shape is defined + cimg::warn(_cimg_instance + "load_vrml() : Failed to read type of geometry to draw from file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + + if(textureTest) { // If the object considered is texturized + colors.push_back(colorsTextured); + *textureFile = 0; + } + while(cimg::strncasecmp(line,"appearance",10) && + cimg::strncasecmp(line,"Shape",5) && !std::feof(nfile)) + // We look for the node appearance or for another shape + err = std::fscanf(nfile,"%1023[^\n] ",line); + } + if(!cimg::strncasecmp(line,"appearance",10)) { // We are at the appearance node + while(cimg::strncasecmp(line,"texture ImageTexture",20) && + cimg::strncasecmp(line,"diffuseColor",12) && !std::feof(nfile)) + // We are looking for a valid appearance node + err = std::fscanf(nfile,"%1023[^\n] ",line); + if(!cimg::strncasecmp(line,"diffuseColor",12)) { // If the object as a unique diffuse color + if ((err = std::sscanf(line,"diffuseColor %f,%f,%f[^\n] ",&r,&g,&b))!=3 && + (err = std::sscanf(line,"diffuseColor %f %f %f[^\n] ",&r,&g,&b))!=3) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : wrong number of color furnished in file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + } + else if(!cimg::strncasecmp(line,"texture ImageTexture",20)) { // If there is a texture defined in the VRML file + textureTest = true; + colorDefined = false; + while(cimg::strncasecmp(line,"url",3) && !std::feof(nfile)) + err = std::fscanf(nfile,"%1023[^\n] ",line); + if(std::feof(nfile)) { + if (!file) + cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_vrml() : texture not defined in file '%s'.", + cimg_instance, filename?filename:"(FILE*)"); + } + // We temporary put the name of the texture image into textureFileTemp + std::sscanf(line,"url [%s][^\n] ",textureFileTemp); + char * pch; + pch = std::strtok (textureFileTemp,"\""); + strcpy(textureFile,pch); // We put the url of the texture image into textureFile + } + } + else if(!cimg::strncasecmp(line,"Shape",5)) // We have another shape node + textureTest = false; // We reinitialize the texture boolean + + if(nbPrimitives && colorDefined && !multipleColors && !textureTest) { + // If there is only one color defined we add it to the colors CImgList or if no color + // is defined for an object, we add the default color + CImgList colorsTemp; + colorsTemp.insert(nbPrimitives,CImg::vector((tc)(r*255),(tc)(g*255),(tc)(b*255))); + colors.push_back(colorsTemp); + nbPrimitives = 0; + r = 0.7f; + g = 0.7f; + b = 0.7f; + } + err = std::fscanf(nfile,"%1023[^\n] ",line); + } + + assign(listePoints.size()/3,3); + cimg_forX(*this,l) { // We add the points coordinates to the calling object + (*this)(l,0) = (T)(listePoints.at(l*3)); + (*this)(l,1) = (T)(listePoints.at(l*3 + 1)); + (*this)(l,2) = (T)(listePoints.at(l*3 + 2)); + } + + if (!file) + cimg::fclose(nfile); + + return *this; +} + +//! Save VRML files. +template +const CImg& save_vrml(const char *const filename,const CImgList& primitives, + const CImgList& colors, const char *const texturefile = 0) const { + return _save_vrml(0,filename,primitives,colors,texturefile); +} + +//! Save VRML files. +template +const CImg& save_vrml(std::FILE *const file,const CImgList& primitives, + const CImgList& colors, const char *const texturefile = 0) const { + return _save_vrml(file,0,primitives,colors,texturefile); +} + +// Save VRML files (internal). +template +const CImg& _save_vrml(std::FILE *const file, const char *const filename, const CImgList& primitives, + const CImgList& colors, const char *const texturefile) const { + + // Check that the user furnished a file to save the object and that the object is not empty. + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_vrml() : Specified filename is (null).", + cimg_instance); + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "save_vrml() : Empty instance, for file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + + // Check that the object we want to save is a 3D object. + CImgList opacities; + char error_message[1024] = {0}; + if (!is_object3d(primitives,colors,opacities,true,error_message)) + throw CImgInstanceException(_cimg_instance + "save_vrml() : Invalid specified 3d object, for file '%s' (%s).", + cimg_instance,filename?filename:"(FILE*)",error_message); + const CImg default_color(1,3,1,1,200); + + // We open the file in which we will save the 3D object. + std::FILE * nfile; + if(file) nfile = file; + else nfile = cimg::fopen(filename,"w"); + + // We use the version 2.0 of VRML to represent the object in UTF8 + std::fprintf(nfile,"#VRML V2.0 utf8\n"); + + // We copy the coordinates of all the points + std::fprintf(nfile,"Shape {\n\tgeometry IndexedFaceSet {\n\t\tcoord Coordinate {\n\t\t\tpoint [\n"); + cimg_forX(*this,i) + std::fprintf(nfile,"\t\t\t\t%f %f %f,\n",(float)((*this)(i,0)),(float)((*this)(i,1)),(float)((*this)(i,2))); + std::fprintf(nfile,"\t\t\t]\n\t\t}\n\t\tcoordIndex [\n"); + bool sameColor = true; + + float r = colors[0][0]/255.0f; + float g = colors[0][1]/255.0f; + float b = colors[0][2]/255.0f; + + std::vector listColor; + std::string listColorPerFace(""); + for(int i=0;i<(int)colors.size();++i) {// Test if the object is composed of only one color + float valR = (colors[i][0])/255.0f; + float valG = (colors[i][1])/255.0f; + float valB = (colors[i][2])/255.0f; + + if (r!=valR || g!=valG || b!=valB) { // If the object has different colors + sameColor = false; + i = colors.size(); + } + } + + cimglist_for(primitives,l) { // For each primitive + const CImg& color = l 1) g = color[1]/255.0f; + else g = r/255.0f; + if (csiz > 2) b = color[2]/255.0f; + else b = g/255.0f; + + switch (psiz) { + case 1 : + std::fprintf(nfile,"\t\t\t%u,-1\n",(unsigned int)primitives(l,0)); + break; + case 2 : + std::fprintf(nfile,"\t\t\t%u,%u,-1\n",(unsigned int)primitives(l,0),(unsigned int)primitives(l,1)); + break; + case 3 : + std::fprintf(nfile,"\t\t\t%u,%u,%u,-1\n",(unsigned int)primitives(l,0),(unsigned int)primitives(l,2), + (unsigned int)primitives(l,1)); + break; + case 4 : + std::fprintf(nfile,"\t\t\t%u,%u,%u,%u,-1\n",(unsigned int)primitives(l,0),(unsigned int)primitives(l,3), + (unsigned int)primitives(l,2),(unsigned int)primitives(l,1)); + break; + case 6 : { + const unsigned int xt = (unsigned int)primitives(l,2), yt = (unsigned int)primitives(l,3); + r = color.atXY(xt,yt,0)/255.0f; + g = (csiz>1?color.atXY(xt,yt,1):r)/255.0f; + b = (csiz>2?color.atXY(xt,yt,2):g)/255.0f; + std::fprintf(nfile,"\t\t\t%u,%u,-1\n",(unsigned int)primitives(l,0),(unsigned int)primitives(l,1)); + } break; + case 9 : { + const unsigned int xt = (unsigned int)primitives(l,3), yt = (unsigned int)primitives(l,4); + r = color.atXY(xt,yt,0)/255.0f; + g = (csiz>1?color.atXY(xt,yt,1):r)/255.0f; + b = (csiz>2?color.atXY(xt,yt,2):g)/255.0f; + std::fprintf(nfile,"\t\t\t%u,%u,%u,-1\n",(unsigned int)primitives(l,0),(unsigned int)primitives(l,2), + (unsigned int)primitives(l,1)); + } break; + case 12 : { + const unsigned int xt = (unsigned int)primitives(l,4), yt = (unsigned int)primitives(l,5); + r = color.atXY(xt,yt,0)/255.0f; + g = (csiz>1?color.atXY(xt,yt,1):r)/255.0f; + b = (csiz>2?color.atXY(xt,yt,2):g)/255.0f; + std::fprintf(nfile,"\t\t\t%u,%u,%u,%u,-1\n",(unsigned int)primitives(l,0),(unsigned int)primitives(l,3), + (unsigned int)primitives(l,2),(unsigned int)primitives(l,1)); + } break; + } + if (!sameColor) { // If there are different colors we store on every loop the RGB values into the vector listColor + std::ostringstream oss; + oss << r << " " << g << " " << b << "\n"; + if (listColor.size() == 0) { + listColor.push_back(oss.str()); + listColorPerFace += "0"; // We store the indice of the color + } + else { + std::vector::iterator it; + it = find (listColor.begin(), listColor.end(), oss.str()); + std::ostringstream oss2; + if(it==listColor.end()) { + oss2 << " " << listColor.size(); + listColorPerFace += oss2.str(); + listColor.push_back(oss.str()); + } + else { + int n = 0; + for (std::vector::iterator iter = listColor.begin(); iter != it; iter++) ++n; + oss2 << " " << n; + listColorPerFace += oss2.str(); + } + } + } + } + std::fprintf(nfile,"\t\t]\n"); + + if (texturefile) // If we have a texture instead of a color + std::fprintf(nfile,"\n\t}\n\tappearance DEF theTexture Appearance " + "{\n\t\ttexture ImageTexture {\n\t\t\turl [\"%s\"]\n\t\t}\n\t}\n}", + texturefile); + else { + if(!sameColor) { // If there are different colors we add all of them + std::fprintf(nfile,"\tcolorPerVertex FALSE\n\tcolor Color {\n\t\tcolor [\n"); + while(!listColor.empty()) { + std::fprintf(nfile,"\t\t\t%s",(listColor.back()).c_str()); + listColor.pop_back(); + } + std::fprintf(nfile,"\t\t]\n\t}\n\tcolorIndex [\n\t\t"); + std::fprintf(nfile,"%s",listColorPerFace.c_str()); + std::fprintf(nfile,"\n\t]\n\t}\n}"); + } + else { // If there is only one color we add it with the Material node + std::fprintf(nfile,"\t}\n\tappearance Appearance " + "{\n\t\tmaterial Material {\n\t\t\tdiffuseColor %f,%f,%f\n\t\t}\n\t}\n}", + colors[0][0]/255.0f,colors[0][1]/255.0f,colors[0][2]/255.0f); + } + } + if (!file) cimg::fclose(nfile); + return *this; +} + +#endif /* cimg_plugin_vrml */ diff --git a/plugins/vtk.h b/plugins/vtk.h new file mode 100644 index 000000000..4afc8143f --- /dev/null +++ b/plugins/vtk.h @@ -0,0 +1,103 @@ +/* + # + # File : vtk.h + # ( C++ header file - CImg plug-in ) + # + # Description : CImg plugin that implements a way to save 3d scene as TK legacy file format. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Haz-Edine Assemlal + # ( http://www.cim.mcgill.ca/~assemlal/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_plugin_vtk +#define cimg_plugin_vtk + +// Save 3D scene in legacy VTK format +/* *this: CImgList of points + * faces: CImgList of faces + * colors: CImgList of colors, + * opacities: CImgList of opacities + */ +template + CImgList& save_vtk(const char* const filename, + const CImgList& faces, + const CImgList& colors, + const CImgList& opacities) { + // Open file + std::FILE *const nfile = cimg::fopen(filename,"w"); + + // Header + std::fprintf(nfile,"# vtk DataFile Version 3.0\n"); + std::fprintf(nfile,"%s\n",filename); + std::fprintf(nfile,"ASCII\n"); + std::fprintf(nfile,"DATASET UNSTRUCTURED_GRID\n"); + + // Points + std::fprintf(nfile,"POINTS %u float\n",points.size()); + cimglist_for(points,p) + std::fprintf(nfile,"%f %f %f\n",points[p](0),points[p](1),points[p](2)); + std::fprintf(nfile,"\n"); + + // Faces (valid only for triangles - type 5) + if (faces) { + std::fprintf(nfile,"CELLS %u %u\n",faces.size(),faces.size()*4); + cimglist_for(faces,f) + std::fprintf(nfile,"%d %u %u %u\n",3,faces[f](0),faces[f](1),faces[f](2)); + std::fprintf(nfile,"CELL_TYPES %u\n",faces.size()); + cimglist_for(faces,f) + std::fprintf(nfile,"%d\n",5); + std::fprintf(nfile,"\n"); + } + + // Colors and Opacities + std::fprintf(nfile,"CELL_DATA %d\n",colors.size()); + std::fprintf(nfile,"COLOR_SCALARS colors 4\n"); + + const tc tcmax = cimg::type::max(); + cimglist_for(colors,t) + std::fprintf(nfile,"%f %f %f %f\n", + (float)colors[t](0)/tcmax, + (float)colors[t](1)/tcmax, + (float)colors[t](2)/tcmax, + opacities[t](0)); + std::fprintf(nfile,"\n"); + + // Close file + cimg::fclose(nfile); + + return *this; +} + +#endif /* cimg_plugin_vtk */ diff --git a/resources/CImg.pc b/resources/CImg.pc new file mode 100644 index 000000000..5c55cbd29 --- /dev/null +++ b/resources/CImg.pc @@ -0,0 +1,8 @@ +prefix=/usr +exec_prefix=/usr +includedir=/usr/include/CImg + +Name: CImg +Description: C++ Template Image Processing Toolkit +Version: 1.5.0 +Cflags: -I${includedir} diff --git a/resources/cimg_buildpackage b/resources/cimg_buildpackage new file mode 100755 index 000000000..0372e877c --- /dev/null +++ b/resources/cimg_buildpackage @@ -0,0 +1,186 @@ +#!/bin/bash +# +# File : cimg_buildpackage +# ( Bash script ) +# +# Description : Build .zip package file of the CImg Library, from the current CImg/ +# directory. Must be run from ../CImg +# This file is a part of the CImg Library project. +# ( http://cimg.eu/ ) +# +# Usage : ./cimg_buildpackage [final] +# +# Copyright : David Tschumperlé +# ( http://tschumperle.users.greyc.fr/ ) +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# + +# Define release number. +RELEASE0=`grep "#define cimg_version" CImg/CImg.h | tail -c 4` +RELEASE1=`echo $RELEASE0 | head -c 1` +RELEASE2=`echo $RELEASE0 | head -c 2 | tail -c 1` +RELEASE3=`echo $RELEASE0 | head -c 3 | tail -c 1` +VERSION=${RELEASE1}${RELEASE2}${RELEASE3} +SVERSION=${RELEASE1}.${RELEASE2}.${RELEASE3} + +# Read command line options. +if [ "$1" == "final" ]; then SUFFIX=""; SSUFFIX=""; else SUFFIX=_pre`date +%m%d%y`; SSUFFIX=_pre; fi + +# Define the different paths and filenames used in this script. +BASE_DIR=`pwd` +SRC_DIR=${BASE_DIR}/CImg +DEST_DIR=/tmp/CImg-${SVERSION}${SUFFIX} +ZIP_FILE=CImg_${SVERSION}${SSUFFIX}.zip +LOG_FILE=${BASE_DIR}/LOG_`basename $ZIP_FILE .zip`.txt +rm -rf $LOG_FILE + +echo +echo " - Release number : $SVERSION$SUFFIX" +echo " - Base directory : $BASE_DIR/" +echo " - Source directory : $SRC_DIR/" +echo " - Build directory : $DEST_DIR/" +echo " - ZIP package filename : $ZIP_FILE" +echo " - LOG file : $LOG_FILE" + +# Merge 'develop' and 'master' branches. +echo " - Merge 'develop' and 'master' branches." +cd $SRC_DIR +git checkout master +git merge develop -m "." +git push +git checkout develop +cd .. + +# Create clean archive structure. +echo " - Create package structure." +rm -rf $DEST_DIR +mkdir $DEST_DIR +cd $SRC_DIR +cp -f CImg.h Licence_CeCILL-C_V1-en.txt Licence_CeCILL_V2-en.txt $DEST_DIR +sed s\/_cimg_version\/$SVERSION$SUFFIX\/ README.txt > $DEST_DIR/README.txt + +mkdir $DEST_DIR/examples +cd $SRC_DIR/examples +cp -f *.cpp *.m CMakeLists.txt Makefile $DEST_DIR/examples/ + +mkdir $DEST_DIR/examples/img +cd $SRC_DIR/examples/img +cp -f *.pgm *.ppm *.bmp *.h $DEST_DIR/examples/img/ + +mkdir $DEST_DIR/plugins +cd $SRC_DIR/plugins +cp -f *.h $DEST_DIR/plugins/ + +mkdir $DEST_DIR/resources +cd $SRC_DIR/resources +cp -rf *.bat *.py $DEST_DIR/resources/ + +cd $DEST_DIR +for i in CImg.h examples/*.cpp; do + sed -e 's/ *$//' $i >/tmp/cimg_buildpackage$$ && mv /tmp/cimg_buildpackage$$ $i +done +for i in `find . -name "\#*"`; do rm -rf $i; done +for i in `find . -name "*~"`; do rm -rf $i; done +for i in `find . -name "core*"`; do rm -rf $i; done +for i in `find . -name "CVS"`; do rm -rf $i; done +for i in `find . -name ".git"`; do rm -rf $i; done +for i in `find . -name "*.plg"`; do rm -rf $i; done +for i in `find . -name "*.ncb"`; do rm -rf $i; done +for i in `find . -name "*.layout"`; do rm -rf $i; done +for i in `find . -name "*.win"`; do rm -rf $i; done +for i in `find . -name "Debug"`; do rm -rf $i; done +for i in `find . -name "Release"`; do rm -rf $i; done +for i in `find . -name "*.h"`; do col -x <$i >tmp; mv tmp $i; done +for i in `find . -name "*.cpp"`; do col -x <$i >tmp; mv tmp $i; done +for i in `find . ! -type d`; do chmod a-x $i; done +for i in `find . -name "*.sh"`; do chmod a+x $i; done +for i in `find . -name "rules"`; do chmod a+x $i; done + +# Generate Documentation with doxygen +echo " - Generate reference documentation using Doxygen." +cd $SRC_DIR/html + +if [ "$1" == "final" ]; then + gmic _update_header_html header.html,${VERSION},0 + gmic _update_header_html header_doxygen.html,${VERSION},0 +else + gmic _update_header_html header.html,${VERSION},1 + gmic _update_header_html header_doxygen.html,${VERSION},1 +fi + +echo -e "\n** Log generated by 'doxygen' **\n\n">>$LOG_FILE +( cat CImg.doxygen ; echo "PROJECT_NUMBER=$SVERSION$SUFFIX" ) | doxygen - >>$LOG_FILE 2>&1 + +echo " - Build reference documentation in PDF format." +cd $SRC_DIR/html/latex +gmic it structcimg__library_1_1CImg.tex replace_str \"operator%\",\"operator\\\\%\" ot structcimg__library_1_1CImg.tex +echo -e "\n** Log generated by 'latex' **\n\n">>$LOG_FILE +make>>$LOG_FILE 2>&1 +cp -f refman.pdf ../CImg_reference.pdf +cp -f refman.pdf $DEST_DIR/resources/CImg_reference.pdf +rm -rf ../latex + +# Commit changes on GIT repository +echo " - Commit on GIT repository." +cd $SRC_DIR +if [ "$1" == "final" ]; then + git tag -d v.$SVERSION + git tag v.$SVERSION + git commit -m "Final release "${SVERSION} >>$LOG_FILE 2>&1 +else + git commit -m "Auto-commit for release "${SVERSION}${SUFFIX} >>$LOG_FILE 2>&1 +fi +git push --tags + +# Create ZIP archive +echo " - Build ZIP archive file '$ZIP_FILE'." +cd $DEST_DIR/.. +rm -f $ZIP_FILE +echo -e "\n** Log generated by 'zip' **\n\n">>$LOG_FILE +zip -r -9 $ZIP_FILE `basename $DEST_DIR`>>$LOG_FILE 2>&1 + +# Clean temporary files and directories +echo " - Clean temporary files and directories." +cd $DEST_DIR/.. +mv $ZIP_FILE $BASE_DIR + +# Copy files to CImg server. +cd $BASE_DIR +if [ "$1" == "final" ]; then + lftp ftp://$GMIC_LOGIN:$GMIC_PASSWD@$GMIC_FTP -e "put -O /www/CImg/files/ ${ZIP_FILE}; quit"; +fi +lftp ftp://$GMIC_LOGIN:$GMIC_PASSWD@$GMIC_FTP -e "put -O /www/CImg/files/ ${ZIP_FILE} -o CImg_latest.zip; quit" + +cd $SRC_DIR/html/ +lftp ftp://$GMIC_LOGIN:$GMIC_PASSWD@$GMIC_FTP -e "mirror -RL . /www/CImg/ ; quit" + +# End of build script +echo -e " - All done, you should look at the LOG file '$LOG_FILE'.\n" diff --git a/resources/cimg_ftp b/resources/cimg_ftp new file mode 100755 index 000000000..9879f1dc2 --- /dev/null +++ b/resources/cimg_ftp @@ -0,0 +1,42 @@ +#!/usr/bin/gmic + +skip "${1=}" + +# Retrieve relative path +x "pwd >/tmp/pwd.txt" +it /tmp/pwd.txt autocrop 10 +pwd={`" + path = crop(); + base = 'CImg/html'; + p = find(path,base); + p>0?( + l = size(path) - p - size(base); + copy(path,path[p + size(base)],l); + path[l] = _'/'; path[l+1] = 0):(path[0] = 0); + path"`} + is_pwd={['$pwd']!=0} + +# Upload file or directory. +if "s = ['$1']; "$is_pwd" && (s==0 || s=='.')" # Synchronize current directory + e[] "Synchronize current directory '"${pwd}"' with 'SERVER"${pwd}"'.\n" + com="lftp ftp://"$GMIC_LOGIN":"$GMIC_PASSWD"@"$GMIC_FTP" -e \"mirror -RL . /www/CImg"${pwd}" ; quit\"" + x $com + +elif $is_pwd" && isdir(['"$1"'])" # Synchronize specified directory + e[] "Synchronize directory '$1' with 'SERVER"${pwd}"$1'.\n" + com="lftp ftp://"$GMIC_LOGIN":"$GMIC_PASSWD"@"$GMIC_FTP" -e \"mirror -RL \\\"$1\\\" \\\"/www/CImg"${pwd}"$1\\\" ; quit\"" + x $com + +elif isfile(['"$1"']) # Upload single file + if !$is_pwd pwd="/" fi + e[] "Upload file '$1' to 'SERVER"${pwd}"'.\n" + com="lftp ftp://"$GMIC_LOGIN":"$GMIC_PASSWD"@"$GMIC_FTP" -e \"put -O \\\"/www/CImg"${pwd}"\\\" \\\"$1\\\"; quit\"" + x $com + +fi + +# Local Variables: +# mode: sh +# End: +# +# (End of G'MIC custom commands) diff --git a/resources/compile_win_icl.bat b/resources/compile_win_icl.bat new file mode 100644 index 000000000..40919e4f9 --- /dev/null +++ b/resources/compile_win_icl.bat @@ -0,0 +1,15 @@ +REM ---------------------------------------------------------------- +REM +REM Script to compile CImg examples, using Intel ICL C++ Compiler. +REM +REM Copy this script into 'CImg/examples/' and run it to compile +REM all examples. +REM +REM ---------------------------------------------------------------- + +CD ..\examples\ +SET CPPFILE=CImg_demo captcha curve_editor2d dtmri_view3d edge_explorer2d fade_images gaussian_fit1d generate_loop_macros hough_transform2d image2ascii image_registration2d image_surface3d jawbreaker mcf_levelsets2d mcf_levelsets3d odykill pde_heatflow2d pde_TschumperleDeriche2d plotter1d radon_transform2d scene3d spherical_function3d tetris tron tutorial wavelet_atrous use_chlpca use_draw_gradient use_nlmeans use_RGBclass use_skeleton + +FOR %%F IN (%CPPFILE%) DO ( + icl /I.. /GX /Ox %%F.cpp gdi32.lib user32.lib +) diff --git a/resources/compile_win_visualcpp.bat b/resources/compile_win_visualcpp.bat new file mode 100644 index 000000000..f553071b4 --- /dev/null +++ b/resources/compile_win_visualcpp.bat @@ -0,0 +1,15 @@ +REM ---------------------------------------------------------------- +REM +REM Script to compile CImg examples, using Microsoft Visual C++. +REM +REM Copy this script into 'CImg/examples/' and run it to compile +REM all examples. +REM +REM ---------------------------------------------------------------- + +CD ..\examples\ +SET CPPFILE=CImg_demo captcha curve_editor2d dtmri_view3d edge_explorer2d fade_images gaussian_fit1d generate_loop_macros hough_transform2d image2ascii image_registration2d image_surface3d jawbreaker mcf_levelsets2d mcf_levelsets3d odykill pde_heatflow2d pde_TschumperleDeriche2d plotter1d radon_transform2d scene3d spherical_function3d tetris tron tutorial wavelet_atrous use_chlpca use_draw_gradient use_nlmeans use_RGBclass use_skeleton +FOR %%F IN (%CPPFILE%) DO ( + cl /W4 /wd"4127" /wd"4311" /wd"4312" /wd"4512" /wd"4571" /wd"4640" /wd"4706" /wd"4710" /wd"4800" /wd"4804" /wd"4820" /wd"4996" /Ox /Ob2 /Oi /Ot /c /EHsc /D "_CRT_SECURE_NO_WARNINGS" /I"%SDKPATH%\Include" /I"..\\" %%F.cpp + link /LIBPATH:"%SDKPATH%\Lib" %%F.obj user32.lib gdi32.lib shell32.lib +) diff --git a/resources/debian/changelog b/resources/debian/changelog new file mode 100644 index 000000000..f52bb4799 --- /dev/null +++ b/resources/debian/changelog @@ -0,0 +1,5 @@ +cimg (_cimg_version) unstable; urgency=low + + * Initial release + + -- David Tschumperlé Fri, 07 Jul 2010 12:04:00 +0200 diff --git a/resources/debian/cimg-dev.dirs b/resources/debian/cimg-dev.dirs new file mode 100644 index 000000000..38bfa8ed7 --- /dev/null +++ b/resources/debian/cimg-dev.dirs @@ -0,0 +1,3 @@ +usr/include/CImg +usr/include +usr/share/CImg diff --git a/resources/debian/cimg-dev.install b/resources/debian/cimg-dev.install new file mode 100644 index 000000000..aceb7ba00 --- /dev/null +++ b/resources/debian/cimg-dev.install @@ -0,0 +1,3 @@ +CImg.h resources html examples plugins CHANGES.txt README.txt usr/share/CImg +CImg.h plugins usr/include/CImg +README.txt usr/share/doc/cimg-dev diff --git a/resources/debian/cimg-dev.links b/resources/debian/cimg-dev.links new file mode 100644 index 000000000..1c675abfd --- /dev/null +++ b/resources/debian/cimg-dev.links @@ -0,0 +1,3 @@ +usr/include/CImg/CImg.h usr/include/CImg.h +usr/share/CImg/html usr/share/doc/cimg-dev/html + diff --git a/resources/debian/compat b/resources/debian/compat new file mode 100644 index 000000000..7ed6ff82d --- /dev/null +++ b/resources/debian/compat @@ -0,0 +1 @@ +5 diff --git a/resources/debian/control b/resources/debian/control new file mode 100644 index 000000000..f4d3a8bec --- /dev/null +++ b/resources/debian/control @@ -0,0 +1,22 @@ +Source: cimg +Section: math +Priority: optional +Maintainer: Sam Hocevar (Debian packages) +Uploaders: Christophe Prud'homme , François-Xavier Dupé +Build-Depends-Indep: libx11-dev +Build-Depends: debhelper (>= 5.0) +Standards-Version: 3.8.4 + +Package: cimg-dev +Depends: make | build-essential, libx11-dev, libxrandr-dev, imagemagick | graphicsmagick +Suggests: xmedcon, lapack3-dev, libmagick++9-dev, fftw3-dev +Architecture: all +Description: C++ Template Image Processing Library + The CImg Library is an open-source C++ toolkit for image processing. + It consists in a single header file 'CImg.h' providing a minimal set of C++ + classes and methods that can be used in your own sources, to load/save, + process and display images. Very portable (Unix/X11,Windows, MacOS X, FreeBSD, .. ), + efficient, easy to use, it's a pleasant library for developping image processing + algorithms in C++. + . + http://cimg.eu diff --git a/resources/debian/copyright b/resources/debian/copyright new file mode 100644 index 000000000..cf54e152f --- /dev/null +++ b/resources/debian/copyright @@ -0,0 +1,1035 @@ +This package was debianized by François-Xavier Dupé on +Tue, 18 Apr 2007. + +It was downloaded from http://cimg.eu/ + +Upstream Author: David Tschumperlé + +Copyright (c) David Tschumperlé + +The CImg Library is distributed under two distinct licenses : the library core itself is governed by +the CeCILL-C License (LGPL-like), while all other files of the package are distributed under the CeCILL +License (GPL-compatible). Both are open source licenses, the CeCILL-C being less restrictive than the +CeCILL one. +The CImg Library source code has been registered to the APP (French Agency for the Protection of Programs) +by the INRIA, under registration number IDDN.FR.001.040004.000.S.P.2004.000.21000. + +For more information GPL and LGPL can be found in the repertory +can be found in the file `/usr/share/common-licenses' on Debian systems. + +CeCill License: + + CeCILL FREE SOFTWARE LICENSE AGREEMENT + + + Notice + +This Agreement is a Free Software license agreement that is the result +of discussions between its authors in order to ensure compliance with +the two main principles guiding its drafting: + + * firstly, compliance with the principles governing the distribution + of Free Software: access to source code, broad rights granted to + users, + * secondly, the election of a governing law, French law, with which + it is conformant, both as regards the law of torts and + intellectual property law, and the protection that it offers to + both authors and holders of the economic rights over software. + +The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[logiciel] L[ibre]) +license are: + +Commissariat à l'Energie Atomique - CEA, a public scientific, technical +and industrial research establishment, having its principal place of +business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. + +Centre National de la Recherche Scientifique - CNRS, a public scientific +and technological research establishment, having its principal place of +business at 3 rue Michel-Ange, 75794 Paris cedex 16, France. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, a public scientific and technological establishment, having its +principal place of business at Domaine de Voluceau, Rocquencourt, BP +105, 78153 Le Chesnay cedex, France. + + + Preamble + +The purpose of this Free Software license agreement is to grant users +the right to modify and redistribute the software governed by this +license within the framework of an open source distribution model. + +The exercising of these rights is conditional upon certain obligations +for users so as to preserve this status for all subsequent redistributions. + +In consideration of access to the source code and the rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors only have limited liability. + +In this respect, the risks associated with loading, using, modifying +and/or developing or reproducing the software by the user are brought to +the user's attention, given its Free Software status, which may make it +complicated to use, with the result that its use is reserved for +developers and experienced professionals having in-depth computer +knowledge. Users are therefore encouraged to load and test the suitability +of the software as regards their requirements in conditions enabling +the security of their systems and/or data to be ensured and, more +generally, to use and operate it in the same conditions of security. +This Agreement may be freely reproduced and published, provided it is not +altered, and that no provisions are either added or removed herefrom. + +This Agreement may apply to any or all software for which the holder of +the economic rights decides to submit the use thereof to its provisions. + + + Article 1 - DEFINITIONS + +For the purpose of this Agreement, when the following expressions +commence with a capital letter, they shall have the following meaning: + +Agreement: means this license agreement, and its possible subsequent +versions and annexes. + +Software: means the software in its Object Code and/or Source Code form +and, where applicable, its documentation, "as is" when the Licensee +accepts the Agreement. + +Initial Software: means the Software in its Source Code and possibly its +Object Code form and, where applicable, its documentation, "as is" when +it is first distributed under the terms and conditions of the Agreement. + +Modified Software: means the Software modified by at least one +Contribution. + +Source Code: means all the Software's instructions and program lines to +which access is required so as to modify the Software. + +Object Code: means the binary files originating from the compilation of +the Source Code. + +Holder: means the holder(s) of the economic rights over the Initial +Software. + +Licensee: means the Software user(s) having accepted the Agreement. + +Contributor: means a Licensee having made at least one Contribution. + +Licensor: means the Holder, or any other individual or legal entity, who +distributes the Software under the Agreement. + +Contribution: means any or all modifications, corrections, translations, +adaptations and/or new functions integrated into the Software by any or +all Contributors, as well as any or all Internal Modules. + +Module: means a set of sources files including their documentation that +enables supplementary functions or services in addition to those offered +by the Software. + +External Module: means any or all Modules, not derived from the +Software, so that this Module and the Software run in separate address +spaces, with one calling the other when they are run. + +Internal Module: means any or all Module, connected to the Software so +that they both execute in the same address space. + +GNU GPL: means the GNU General Public License version 2 or any +subsequent version, as published by the Free Software Foundation Inc. + +Parties: mean both the Licensee and the Licensor. + +These expressions may be used both in singular and plural form. + + + Article 2 - PURPOSE + +The purpose of the Agreement is the grant by the Licensor to the +Licensee of a non-exclusive, transferable and worldwide license for the +Software as set forth in Article 5 hereinafter for the whole term of the +protection granted by the rights over said Software. + + + Article 3 - ACCEPTANCE + +3.1 The Licensee shall be deemed as having accepted the terms and +conditions of this Agreement upon the occurrence of the first of the +following events: + + * (i) loading the Software by any or all means, notably, by + downloading from a remote server, or by loading from a physical + medium; + * (ii) the first time the Licensee exercises any of the rights + granted hereunder. + +3.2 One copy of the Agreement, containing a notice relating to the +characteristics of the Software, to the limited warranty, and to the +fact that its use is restricted to experienced users has been provided +to the Licensee prior to its acceptance as set forth in Article 3.1 +hereinabove, and the Licensee hereby acknowledges that it has read and +understood it. + + + Article 4 - EFFECTIVE DATE AND TERM + + + 4.1 EFFECTIVE DATE + +The Agreement shall become effective on the date when it is accepted by +the Licensee as set forth in Article 3.1. + + + 4.2 TERM + +The Agreement shall remain in force for the entire legal term of +protection of the economic rights over the Software. + + + Article 5 - SCOPE OF RIGHTS GRANTED + +The Licensor hereby grants to the Licensee, who accepts, the following +rights over the Software for any or all use, and for the term of the +Agreement, on the basis of the terms and conditions set forth hereinafter. + +Besides, if the Licensor owns or comes to own one or more patents +protecting all or part of the functions of the Software or of its +components, the Licensor undertakes not to enforce the rights granted by +these patents against successive Licensees using, exploiting or +modifying the Software. If these patents are transferred, the Licensor +undertakes to have the transferees subscribe to the obligations set +forth in this paragraph. + + + 5.1 RIGHT OF USE + +The Licensee is authorized to use the Software, without any limitation +as to its fields of application, with it being hereinafter specified +that this comprises: + + 1. permanent or temporary reproduction of all or part of the Software + by any or all means and in any or all form. + + 2. loading, displaying, running, or storing the Software on any or + all medium. + + 3. entitlement to observe, study or test its operation so as to + determine the ideas and principles behind any or all constituent + elements of said Software. This shall apply when the Licensee + carries out any or all loading, displaying, running, transmission + or storage operation as regards the Software, that it is entitled + to carry out hereunder. + + + 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS + +The right to make Contributions includes the right to translate, adapt, +arrange, or make any or all modifications to the Software, and the right +to reproduce the resulting software. + +The Licensee is authorized to make any or all Contributions to the +Software provided that it includes an explicit notice that it is the +author of said Contribution and indicates the date of the creation thereof. + + + 5.3 RIGHT OF DISTRIBUTION + +In particular, the right of distribution includes the right to publish, +transmit and communicate the Software to the general public on any or +all medium, and by any or all means, and the right to market, either in +consideration of a fee, or free of charge, one or more copies of the +Software by any means. + +The Licensee is further authorized to distribute copies of the modified +or unmodified Software to third parties according to the terms and +conditions set forth hereinafter. + + + 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION + +The Licensee is authorized to distribute true copies of the Software in +Source Code or Object Code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Software is +redistributed, the Licensee allows future Licensees unhindered access to +the full Source Code of the Software by indicating how to access it, it +being understood that the additional cost of acquiring the Source Code +shall not exceed the cost of transferring the data. + + + 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE + +When the Licensee makes a Contribution to the Software, the terms and +conditions for the distribution of the resulting Modified Software +become subject to all the provisions of this Agreement. + +The Licensee is authorized to distribute the Modified Software, in +source code or object code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Modified +Software is redistributed, the Licensee allows future Licensees +unhindered access to the full source code of the Modified Software by +indicating how to access it, it being understood that the additional +cost of acquiring the source code shall not exceed the cost of +transferring the data. + + + 5.3.3 DISTRIBUTION OF EXTERNAL MODULES + +When the Licensee has developed an External Module, the terms and +conditions of this Agreement do not apply to said External Module, that +may be distributed under a separate license agreement. + + + 5.3.4 COMPATIBILITY WITH THE GNU GPL + +The Licensee can include a code that is subject to the provisions of one +of the versions of the GNU GPL in the Modified or unmodified Software, +and distribute that entire code under the terms of the same version of +the GNU GPL. + +The Licensee can include the Modified or unmodified Software in a code +that is subject to the provisions of one of the versions of the GNU GPL, +and distribute that entire code under the terms of the same version of +the GNU GPL. + + + Article 6 - INTELLECTUAL PROPERTY + + + 6.1 OVER THE INITIAL SOFTWARE + +The Holder owns the economic rights over the Initial Software. Any or +all use of the Initial Software is subject to compliance with the terms +and conditions under which the Holder has elected to distribute its work +and no one shall be entitled to modify the terms and conditions for the +distribution of said Initial Software. + +The Holder undertakes that the Initial Software will remain ruled at +least by the current license, for the duration set forth in Article 4.2. + + + 6.2 OVER THE CONTRIBUTIONS + +A Licensee who develops a Contribution is the owner of the intellectual +property rights over this Contribution as defined by applicable law. + + + 6.3 OVER THE EXTERNAL MODULES + +A Licensee who develops an External Module is the owner of the +intellectual property rights over this External Module as defined by +applicable law and is free to choose the type of agreement that shall +govern its distribution. + + + 6.4 JOINT PROVISIONS + +The Licensee expressly undertakes: + + 1. not to remove, or modify, in any manner, the intellectual property + notices attached to the Software; + + 2. to reproduce said notices, in an identical manner, in the copies + of the Software modified or not. + +The Licensee undertakes not to directly or indirectly infringe the +intellectual property rights of the Holder and/or Contributors on the +Software and to take, where applicable, vis-à-vis its staff, any and all +measures required to ensure respect of said intellectual property rights +of the Holder and/or Contributors. + + + Article 7 - RELATED SERVICES + +7.1 Under no circumstances shall the Agreement oblige the Licensor to +provide technical assistance or maintenance services for the Software. + +However, the Licensor is entitled to offer this type of services. The +terms and conditions of such technical assistance, and/or such +maintenance, shall be set forth in a separate instrument. Only the +Licensor offering said maintenance and/or technical assistance services +shall incur liability therefor. + +7.2 Similarly, any Licensor is entitled to offer to its licensees, under +its sole responsibility, a warranty, that shall only be binding upon +itself, for the redistribution of the Software and/or the Modified +Software, under terms and conditions that it is free to decide. Said +warranty, and the financial terms and conditions of its application, +shall be subject of a separate instrument executed between the Licensor +and the Licensee. + + + Article 8 - LIABILITY + +8.1 Subject to the provisions of Article 8.2, the Licensee shall be +entitled to claim compensation for any direct loss it may have suffered +from the Software as a result of a fault on the part of the relevant +Licensor, subject to providing evidence thereof. + +8.2 The Licensor's liability is limited to the commitments made under +this Agreement and shall not be incurred as a result of in particular: +(i) loss due the Licensee's total or partial failure to fulfill its +obligations, (ii) direct or consequential loss that is suffered by the +Licensee due to the use or performance of the Software, and (iii) more +generally, any consequential loss. In particular the Parties expressly +agree that any or all pecuniary or business loss (i.e. loss of data, +loss of profits, operating loss, loss of customers or orders, +opportunity cost, any disturbance to business activities) or any or all +legal proceedings instituted against the Licensee by a third party, +shall constitute consequential loss and shall not provide entitlement to +any or all compensation from the Licensor. + + + Article 9 - WARRANTY + +9.1 The Licensee acknowledges that the scientific and technical +state-of-the-art when the Software was distributed did not enable all +possible uses to be tested and verified, nor for the presence of +possible defects to be detected. In this respect, the Licensee's +attention has been drawn to the risks associated with loading, using, +modifying and/or developing and reproducing the Software which are +reserved for experienced users. + +The Licensee shall be responsible for verifying, by any or all means, +the suitability of the product for its requirements, its good working order, +and for ensuring that it shall not cause damage to either persons or +properties. + +9.2 The Licensor hereby represents, in good faith, that it is entitled +to grant all the rights over the Software (including in particular the +rights set forth in Article 5). + +9.3 The Licensee acknowledges that the Software is supplied "as is" by +the Licensor without any other express or tacit warranty, other than +that provided for in Article 9.2 and, in particular, without any warranty +as to its commercial value, its secured, safe, innovative or relevant +nature. + +Specifically, the Licensor does not warrant that the Software is free +from any error, that it will operate without interruption, that it will +be compatible with the Licensee's own equipment and software +configuration, nor that it will meet the Licensee's requirements. + +9.4 The Licensor does not either expressly or tacitly warrant that the +Software does not infringe any third party intellectual property right +relating to a patent, software or any other property right. Therefore, +the Licensor disclaims any and all liability towards the Licensee +arising out of any or all proceedings for infringement that may be +instituted in respect of the use, modification and redistribution of the +Software. Nevertheless, should such proceedings be instituted against +the Licensee, the Licensor shall provide it with technical and legal +assistance for its defense. Such technical and legal assistance shall be +decided on a case-by-case basis between the relevant Licensor and the +Licensee pursuant to a memorandum of understanding. The Licensor +disclaims any and all liability as regards the Licensee's use of the +name of the Software. No warranty is given as regards the existence of +prior rights over the name of the Software or as regards the existence +of a trademark. + + + Article 10 - TERMINATION + +10.1 In the event of a breach by the Licensee of its obligations +hereunder, the Licensor may automatically terminate this Agreement +thirty (30) days after notice has been sent to the Licensee and has +remained ineffective. + +10.2 A Licensee whose Agreement is terminated shall no longer be +authorized to use, modify or distribute the Software. However, any +licenses that it may have granted prior to termination of the Agreement +shall remain valid subject to their having been granted in compliance +with the terms and conditions hereof. + + + Article 11 - MISCELLANEOUS + + + 11.1 EXCUSABLE EVENTS + +Neither Party shall be liable for any or all delay, or failure to +perform the Agreement, that may be attributable to an event of force +majeure, an act of God or an outside cause, such as defective +functioning or interruptions of the electricity or telecommunications +networks, network paralysis following a virus attack, intervention by +government authorities, natural disasters, water damage, earthquakes, +fire, explosions, strikes and labor unrest, war, etc. + +11.2 Any failure by either Party, on one or more occasions, to invoke +one or more of the provisions hereof, shall under no circumstances be +interpreted as being a waiver by the interested Party of its right to +invoke said provision(s) subsequently. + +11.3 The Agreement cancels and replaces any or all previous agreements, +whether written or oral, between the Parties and having the same +purpose, and constitutes the entirety of the agreement between said +Parties concerning said purpose. No supplement or modification to the +terms and conditions hereof shall be effective as between the Parties +unless it is made in writing and signed by their duly authorized +representatives. + +11.4 In the event that one or more of the provisions hereof were to +conflict with a current or future applicable act or legislative text, +said act or legislative text shall prevail, and the Parties shall make +the necessary amendments so as to comply with said act or legislative +text. All other provisions shall remain effective. Similarly, invalidity +of a provision of the Agreement, for any reason whatsoever, shall not +cause the Agreement as a whole to be invalid. + + + 11.5 LANGUAGE + +The Agreement is drafted in both French and English and both versions +are deemed authentic. + + + Article 12 - NEW VERSIONS OF THE AGREEMENT + +12.1 Any person is authorized to duplicate and distribute copies of this +Agreement. + +12.2 So as to ensure coherence, the wording of this Agreement is +protected and may only be modified by the authors of the License, who +reserve the right to periodically publish updates or new versions of the +Agreement, each with a separate number. These subsequent versions may +address new issues encountered by Free Software. + +12.3 Any Software distributed under a given version of the Agreement may +only be subsequently distributed under the same version of the Agreement +or a subsequent version, subject to the provisions of Article 5.3.4. + + + Article 13 - GOVERNING LAW AND JURISDICTION + +13.1 The Agreement is governed by French law. The Parties agree to +endeavor to seek an amicable solution to any disagreements or disputes +that may arise during the performance of the Agreement. + +13.2 Failing an amicable solution within two (2) months as from their +occurrence, and unless emergency proceedings are necessary, the +disagreements or disputes shall be referred to the Paris Courts having +jurisdiction, by the more diligent Party. + + +Version 2.0 dated 2006-07-12. + +CeCill-C license: + + + CeCILL-C FREE SOFTWARE LICENSE AGREEMENT + + + Notice + +This Agreement is a Free Software license agreement that is the result +of discussions between its authors in order to ensure compliance with +the two main principles guiding its drafting: + + * firstly, compliance with the principles governing the distribution + of Free Software: access to source code, broad rights granted to + users, + * secondly, the election of a governing law, French law, with which + it is conformant, both as regards the law of torts and + intellectual property law, and the protection that it offers to + both authors and holders of the economic rights over software. + +The authors of the CeCILL-C (for Ce[a] C[nrs] I[nria] L[logiciel] L[ibre]) +license are: + +Commissariat à l'Energie Atomique - CEA, a public scientific, technical +and industrial research establishment, having its principal place of +business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. + +Centre National de la Recherche Scientifique - CNRS, a public scientific +and technological establishment, having its principal place of business +at 3 rue Michel-Ange, 75794 Paris cedex 16, France. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, a public scientific and technological establishment, having its +principal place of business at Domaine de Voluceau, Rocquencourt, BP +105, 78153 Le Chesnay cedex, France. + + + Preamble + +The purpose of this Free Software license agreement is to grant users the +right to modify and re-use the software governed by this license. + +The exercising of this right is conditional on the obligation to make +available to the community the modifications made to the source code of the +software so as to contribute to its evolution. + +In consideration of access to the source code and the rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors only have limited liability. + +In this respect, the risks associated with loading, using, modifying +and/or developing or reproducing the software by the user are brought to +the user's attention, given its Free Software status, which may make it +complicated to use, with the result that its use is reserved for +developers and experienced professionals having in-depth computer +knowledge. Users are therefore encouraged to load and test the suitability +of the software as regards their requirements in conditions enabling the +security of their systems and/or data to be ensured and, more generally, to +use and operate it in the same conditions of security. This Agreement may be +freely reproduced and published, provided it is not altered, and that no +provisions are either added or removed herefrom. + +This Agreement may apply to any or all software for which the holder of +the economic rights decides to submit the use thereof to its provisions. + + + Article 1 - DEFINITIONS + +For the purpose of this Agreement, when the following expressions +commence with a capital letter, they shall have the following meaning: + +Agreement: means this license agreement, and its possible subsequent +versions and annexes. + +Software: means the software in its Object Code and/or Source Code form +and, where applicable, its documentation, "as is" when the Licensee +accepts the Agreement. + +Initial Software: means the Software in its Source Code and possibly its +Object Code form and, where applicable, its documentation, "as is" when +it is first distributed under the terms and conditions of the Agreement. + +Modified Software: means the Software modified by at least one Integrated +Contribution. + +Source Code: means all the Software's instructions and program lines to +which access is required so as to modify the Software. + +Object Code: means the binary files originating from the compilation of +the Source Code. + +Holder: means the holder(s) of the economic rights over the Initial +Software. + +Licensee: means the Software user(s) having accepted the Agreement. + +Contributor: means a Licensee having made at least one Integrated +Contribution. + +Licensor: means the Holder, or any other individual or legal entity, who +distributes the Software under the Agreement. + +Integrated Contribution: means any or all modifications, corrections, +translations, adaptations and/or new functions integrated into the Source +Code by any or all Contributors. + +Related Module: means a set of sources files including their documentation +that, without modification to the Source Code, enables supplementary +functions or services in addition to those offered by the Software. + +Derivative Software: means any combination of the Software, modified or not, +and of a Related Module. + +Parties: mean both the Licensee and the Licensor. + +These expressions may be used both in singular and plural form. + + + Article 2 - PURPOSE + +The purpose of the Agreement is the grant by the Licensor to the +Licensee of a non-exclusive, transferable and worldwide license for the +Software as set forth in Article 5 hereinafter for the whole term of the +protection granted by the rights over said Software. + + + Article 3 - ACCEPTANCE + +3.1 The Licensee shall be deemed as having accepted the terms and +conditions of this Agreement upon the occurrence of the first of the +following events: + + * (i) loading the Software by any or all means, notably, by + downloading from a remote server, or by loading from a physical + medium; + * (ii) the first time the Licensee exercises any of the rights + granted hereunder. + +3.2 One copy of the Agreement, containing a notice relating to the +characteristics of the Software, to the limited warranty, and to the +fact that its use is restricted to experienced users has been provided +to the Licensee prior to its acceptance as set forth in Article 3.1 +hereinabove, and the Licensee hereby acknowledges that it has read and +understood it. + + + Article 4 - EFFECTIVE DATE AND TERM + + + 4.1 EFFECTIVE DATE + +The Agreement shall become effective on the date when it is accepted by +the Licensee as set forth in Article 3.1. + + + 4.2 TERM + +The Agreement shall remain in force for the entire legal term of +protection of the economic rights over the Software. + + + Article 5 - SCOPE OF RIGHTS GRANTED + +The Licensor hereby grants to the Licensee, who accepts, the following +rights over the Software for any or all use, and for the term of the +Agreement, on the basis of the terms and conditions set forth hereinafter. + +Besides, if the Licensor owns or comes to own one or more patents +protecting all or part of the functions of the Software or of its +components, the Licensor undertakes not to enforce the rights granted by +these patents against successive Licensees using, exploiting or +modifying the Software. If these patents are transferred, the Licensor +undertakes to have the transferees subscribe to the obligations set +forth in this paragraph. + + + 5.1 RIGHT OF USE + +The Licensee is authorized to use the Software, without any limitation +as to its fields of application, with it being hereinafter specified +that this comprises: + + 1. permanent or temporary reproduction of all or part of the Software + by any or all means and in any or all form. + 2. loading, displaying, running, or storing the Software on any or + all medium. + 3. entitlement to observe, study or test its operation so as to + determine the ideas and principles behind any or all constituent + elements of said Software. This shall apply when the Licensee + carries out any or all loading, displaying, running, transmission + or storage operation as regards the Software, that it is entitled + to carry out hereunder. + + + 5.2 RIGHT OF MODIFICATION + +The right of modification includes the right to translate, adapt, arrange, +or make any or all modifications to the Software, and the right to +reproduce the resulting Software. It includes, in particular, the right +to create a Derivative Software. + +The Licensee is authorized to make any or all modification to the +Software provided that it includes an explicit notice that it is the +author of said modification and indicates the date of the creation thereof. + + + 5.3 RIGHT OF DISTRIBUTION + +In particular, the right of distribution includes the right to publish, +transmit and communicate the Software to the general public on any or +all medium, and by any or all means, and the right to market, either in +consideration of a fee, or free of charge, one or more copies of the +Software by any means. + +The Licensee is further authorized to distribute copies of the modified +or unmodified Software to third parties according to the terms and +conditions set forth hereinafter. + + + 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION + +The Licensee is authorized to distribute true copies of the Software in +Source Code or Object Code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Software is +redistributed, the Licensee allows effective access to the full Source Code +of the Software at a minimum during the entire period of its distribution +of the Software, it being understood that the additional cost of acquiring +the Source Code shall not exceed the cost of transferring the data. + + + 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE + +When the Licensee makes an Integrated Contribution to the Software, the terms +and conditions for the distribution of the resulting Modified Software become +subject to all the provisions of this Agreement. + +The Licensee is authorized to distribute the Modified Software, in source +code or object code form, provided that said distribution complies with all +the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + 2. a notice relating to the limitation of both the Licensor's warranty and + liability as set forth in Articles 8 and 9, + +and that, in the event that only the object code of the Modified Software is +redistributed, the Licensee allows effective access to the full source code +of the Modified Software at a minimum during the entire period of its +distribution of the Modified Software, it being understood that the +additional cost of acquiring the source code shall not exceed the cost of +transferring the data. + + 5.3.3 DISTRIBUTION OF DERIVATIVE SOFTWARE + +When the Licensee creates Derivative Software, this Derivative Software may +be distributed under a license agreement other than this Agreement, subject +to compliance with the requirement to include a notice concerning the rights +over the Software as defined in Article 6.4. In the event the creation of the +Derivative Software required modification of the Source Code, the Licensee +undertakes that: + + 1. the resulting Modified Software will be governed by this Agreement, + 2. the Integrated Contributions in the resulting Modified Software will be + clearly identified and documented, + 3. the Licensee will allow effective access to the source code of the + Modified Software, at a minimum during the entire period of + distribution of the Derivative Software, such that such modifications + may be carried over in a subsequent version of the Software; it being + understood that the additional cost of purchasing the source code of + the Modified Software shall not exceed the cost of transferring the + data. + + + 5.3.4 COMPATIBILITY WITH THE CeCILL LICENSE + +When a Modified Software contains an Integrated Contribution subject to the +CeCill license agreement, or when a Derivative Software contains a Related +Module subject to the CeCill license agreement, the provisions set forth in +the third item of Article 6.4 are optional. + + + Article 6 - INTELLECTUAL PROPERTY + + + 6.1 OVER THE INITIAL SOFTWARE + +The Holder owns the economic rights over the Initial Software. Any or +all use of the Initial Software is subject to compliance with the terms +and conditions under which the Holder has elected to distribute its work +and no one shall be entitled to modify the terms and conditions for the +distribution of said Initial Software. + +The Holder undertakes that the Initial Software will remain ruled at +least by the current license, for the duration set forth in Article 4.2. + + + 6.2 OVER THE INTEGRATED CONTRIBUTIONS + +A Licensee who develops an Integrated Contribution is the owner of the +intellectual property rights over this Contribution as defined by +applicable law. + + + 6.3 OVER THE RELATED MODULES + +A Licensee who develops an Related Module is the owner of the +intellectual property rights over this Related Module as defined by +applicable law and is free to choose the type of agreement that shall +govern its distribution under the conditions defined in Article 5.3.3. + + + 6.4 NOTICE OF RIGHTS + +The Licensee expressly undertakes: + + 1. not to remove, or modify, in any manner, the intellectual property + notices attached to the Software; + 2. to reproduce said notices, in an identical manner, in the copies + of the Software modified or not; + 3. to ensure that use of the Software, its intellectual property + notices and the fact that it is governed by the Agreement is + indicated in a text that is easily accessible, specifically from + the interface of any Derivative Software. + +The Licensee undertakes not to directly or indirectly infringe the +intellectual property rights of the Holder and/or Contributors on the +Software and to take, where applicable, vis-à-vis its staff, any and all +measures required to ensure respect of said intellectual property rights +of the Holder and/or Contributors. + + + Article 7 - RELATED SERVICES + +7.1 Under no circumstances shall the Agreement oblige the Licensor to +provide technical assistance or maintenance services for the Software. + +However, the Licensor is entitled to offer this type of services. The +terms and conditions of such technical assistance, and/or such +maintenance, shall be set forth in a separate instrument. Only the +Licensor offering said maintenance and/or technical assistance services +shall incur liability therefor. + +7.2 Similarly, any Licensor is entitled to offer to its licensees, under +its sole responsibility, a warranty, that shall only be binding upon +itself, for the redistribution of the Software and/or the Modified +Software, under terms and conditions that it is free to decide. Said +warranty, and the financial terms and conditions of its application, +shall be subject of a separate instrument executed between the Licensor +and the Licensee. + + + Article 8 - LIABILITY + +8.1 Subject to the provisions of Article 8.2, the Licensee shall be +entitled to claim compensation for any direct loss it may have suffered +from the Software as a result of a fault on the part of the relevant +Licensor, subject to providing evidence thereof. + +8.2 The Licensor's liability is limited to the commitments made under +this Agreement and shall not be incurred as a result of in particular: +(i) loss due the Licensee's total or partial failure to fulfill its +obligations, (ii) direct or consequential loss that is suffered by the +Licensee due to the use or performance of the Software, and (iii) more +generally, any consequential loss. In particular the Parties expressly +agree that any or all pecuniary or business loss (i.e. loss of data, +loss of profits, operating loss, loss of customers or orders, +opportunity cost, any disturbance to business activities) or any or all +legal proceedings instituted against the Licensee by a third party, +shall constitute consequential loss and shall not provide entitlement to +any or all compensation from the Licensor. + + + Article 9 - WARRANTY + +9.1 The Licensee acknowledges that the scientific and technical +state-of-the-art when the Software was distributed did not enable all +possible uses to be tested and verified, nor for the presence of +possible defects to be detected. In this respect, the Licensee's +attention has been drawn to the risks associated with loading, using, +modifying and/or developing and reproducing the Software which are +reserved for experienced users. + +The Licensee shall be responsible for verifying, by any or all means, +the suitability of the product for its requirements, its good working order, +and for ensuring that it shall not cause damage to either persons or +properties. + +9.2 The Licensor hereby represents, in good faith, that it is entitled +to grant all the rights over the Software (including in particular the +rights set forth in Article 5). + +9.3 The Licensee acknowledges that the Software is supplied "as is" by +the Licensor without any other express or tacit warranty, other than +that provided for in Article 9.2 and, in particular, without any warranty +as to its commercial value, its secured, safe, innovative or relevant +nature. + +Specifically, the Licensor does not warrant that the Software is free +from any error, that it will operate without interruption, that it will +be compatible with the Licensee's own equipment and software +configuration, nor that it will meet the Licensee's requirements. + +9.4 The Licensor does not either expressly or tacitly warrant that the +Software does not infringe any third party intellectual property right +relating to a patent, software or any other property right. Therefore, +the Licensor disclaims any and all liability towards the Licensee +arising out of any or all proceedings for infringement that may be +instituted in respect of the use, modification and redistribution of the +Software. Nevertheless, should such proceedings be instituted against +the Licensee, the Licensor shall provide it with technical and legal +assistance for its defense. Such technical and legal assistance shall be +decided on a case-by-case basis between the relevant Licensor and the +Licensee pursuant to a memorandum of understanding. The Licensor +disclaims any and all liability as regards the Licensee's use of the +name of the Software. No warranty is given as regards the existence of +prior rights over the name of the Software or as regards the existence +of a trademark. + + + Article 10 - TERMINATION + +10.1 In the event of a breach by the Licensee of its obligations +hereunder, the Licensor may automatically terminate this Agreement +thirty (30) days after notice has been sent to the Licensee and has +remained ineffective. + +10.2 A Licensee whose Agreement is terminated shall no longer be +authorized to use, modify or distribute the Software. However, any +licenses that it may have granted prior to termination of the Agreement +shall remain valid subject to their having been granted in compliance +with the terms and conditions hereof. + + + Article 11 - MISCELLANEOUS + + + 11.1 EXCUSABLE EVENTS + +Neither Party shall be liable for any or all delay, or failure to +perform the Agreement, that may be attributable to an event of force +majeure, an act of God or an outside cause, such as defective +functioning or interruptions of the electricity or telecommunications +networks, network paralysis following a virus attack, intervention by +government authorities, natural disasters, water damage, earthquakes, +fire, explosions, strikes and labor unrest, war, etc. + +11.2 Any failure by either Party, on one or more occasions, to invoke +one or more of the provisions hereof, shall under no circumstances be +interpreted as being a waiver by the interested Party of its right to +invoke said provision(s) subsequently. + +11.3 The Agreement cancels and replaces any or all previous agreements, +whether written or oral, between the Parties and having the same +purpose, and constitutes the entirety of the agreement between said +Parties concerning said purpose. No supplement or modification to the +terms and conditions hereof shall be effective as between the Parties +unless it is made in writing and signed by their duly authorized +representatives. + +11.4 In the event that one or more of the provisions hereof were to +conflict with a current or future applicable act or legislative text, +said act or legislative text shall prevail, and the Parties shall make +the necessary amendments so as to comply with said act or legislative +text. All other provisions shall remain effective. Similarly, invalidity +of a provision of the Agreement, for any reason whatsoever, shall not +cause the Agreement as a whole to be invalid. + + + 11.5 LANGUAGE + +The Agreement is drafted in both French and English and both versions +are deemed authentic. + + + Article 12 - NEW VERSIONS OF THE AGREEMENT + +12.1 Any person is authorized to duplicate and distribute copies of this +Agreement. + +12.2 So as to ensure coherence, the wording of this Agreement is +protected and may only be modified by the authors of the License, who +reserve the right to periodically publish updates or new versions of the +Agreement, each with a separate number. These subsequent versions may +address new issues encountered by Free Software. + +12.3 Any Software distributed under a given version of the Agreement +may only be subsequently distributed under the same version of the +Agreement or a subsequent version. + + + Article 13 - GOVERNING LAW AND JURISDICTION + +13.1 The Agreement is governed by French law. The Parties agree to +endeavor to seek an amicable solution to any disagreements or disputes +that may arise during the performance of the Agreement. + +13.2 Failing an amicable solution within two (2) months as from their +occurrence, and unless emergency proceedings are necessary, the +disagreements or disputes shall be referred to the Paris Courts having +jurisdiction, by the more diligent Party. + + +Version 1.0 dated 2006-07-12. diff --git a/resources/debian/docs b/resources/debian/docs new file mode 100644 index 000000000..6d10dce74 --- /dev/null +++ b/resources/debian/docs @@ -0,0 +1 @@ +changelog diff --git a/resources/debian/rules b/resources/debian/rules new file mode 100755 index 000000000..dc2d6dc64 --- /dev/null +++ b/resources/debian/rules @@ -0,0 +1,80 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. +# +# Modified to make a template file for a multi-binary package with separated +# build-arch and build-indep targets by Bill Allombert 2001 +# +# Modified in order to update the package by François-Xavier Dupé 2007 + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# This has to be exported to make some magic below work. +export DH_OPTIONS + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O3 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +build: build-indep-stamp +build-indep-stamp: + #cd examples && $(MAKE) "LDFLAGS=-lm -lpthread" + #cd examples && $(MAKE) clean + #$(MAKE) doc + touch build-indep-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-arch-stamp build-indep-stamp + dh_clean + +install: + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + dh_install + +binary-indep: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_compress +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo +# dh_installman + dh_link + dh_strip + dh_fixperms +# dh_perl +# dh_python + dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +# Build architecture dependant packages using the common target. +binary-arch: build install + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch diff --git a/resources/project_win_visualcpp/project_win_visualcpp.sln b/resources/project_win_visualcpp/project_win_visualcpp.sln new file mode 100644 index 000000000..da834dcab --- /dev/null +++ b/resources/project_win_visualcpp/project_win_visualcpp.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual C++ Express 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "project_win_visualcpp", "project_win_visualcpp.vcproj", "{9A50ACD6-B1AB-4AAF-A85C-D5E388EF024B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9A50ACD6-B1AB-4AAF-A85C-D5E388EF024B}.Debug|Win32.ActiveCfg = Debug|Win32 + {9A50ACD6-B1AB-4AAF-A85C-D5E388EF024B}.Debug|Win32.Build.0 = Debug|Win32 + {9A50ACD6-B1AB-4AAF-A85C-D5E388EF024B}.Release|Win32.ActiveCfg = Release|Win32 + {9A50ACD6-B1AB-4AAF-A85C-D5E388EF024B}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/resources/project_win_visualcpp/project_win_visualcpp.suo b/resources/project_win_visualcpp/project_win_visualcpp.suo new file mode 100644 index 000000000..29e3fafcb Binary files /dev/null and b/resources/project_win_visualcpp/project_win_visualcpp.suo differ diff --git a/resources/project_win_visualcpp/project_win_visualcpp.vcproj b/resources/project_win_visualcpp/project_win_visualcpp.vcproj new file mode 100644 index 000000000..0c41a9641 --- /dev/null +++ b/resources/project_win_visualcpp/project_win_visualcpp.vcproj @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/pycimg.py b/resources/pycimg.py new file mode 100644 index 000000000..5bf8cd5cb --- /dev/null +++ b/resources/pycimg.py @@ -0,0 +1,113 @@ +# +# File : pycimg.py +# ( Python file ) +# +# Description : Show how to import .cimg and .cimgz files into python (numpy). +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : Antonio Albiol, Universidad Politecnica Valencia (SPAIN) +# +# In case of issues or comments contact Antonio Albiol at: +# aalbiol (at) dcom.upv.es +# +# Licenses : This file is 'dual-licensed', you have to choose one +# of the two licenses below to apply. +# +# CeCILL-C +# The CeCILL-C license is close to the GNU LGPL. +# ( http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html ) +# +# or CeCILL v2.1 +# The CeCILL license is compatible with the GNU GPL. +# ( http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html ) +# +# This software is governed either by the CeCILL or the CeCILL-C license +# under French law and abiding by the rules of distribution of free software. +# You can use, modify and or redistribute the software under the terms of +# the CeCILL or CeCILL-C licenses as circulated by CEA, CNRS and INRIA +# at the following URL: "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL and CeCILL-C licenses and that you accept its terms. +# + +import numpy as np +import zlib +import os + +typesDict={'float':'float32' ,'double':'float64', +'unsigned_short':'uint16','unsigned_char':'uint8', +'int':'int32', 'short':'int16'} + +def cimgread( filename ): + """ USAGE: a= cimgread(filename) + For CImg Images: + * returns a npy array in the case of cimg + * Supports compression + * It squeezes singleton dimensions. If a CImg image has dimensions (w,h,1,c) + the returned python object will have shape + a.shape --> (h,w,c) + * a(y,x,z,c) to access one element + For CImgList: + * returns a list of npy arrays + * if original CImgList has nimages, then + len(a) --> nimages + * To access one pixel of the j-th image use a[j](y,x,z,c) + + """ + + basename, file_extension = os.path.splitext(filename) + fa = open(filename, 'rb') + + out =[] + line0 = fa.readline() #Endiannes + tiposdato=line0.split() + number_of_images=int(tiposdato[0]) + datatypecimg=tiposdato[1].decode() + endiannes = tiposdato[2] + + datatype = typesDict[datatypecimg]; + + for n in range(number_of_images): + line1 = fa.readline() # Dimensions + dimensiones = line1.split() + width = int(dimensiones[0]); + height = int(dimensiones[1]); + depth = int(dimensiones[2]); + spectrum = int(dimensiones[3]); + + if file_extension == '.cimgz': + csize= int(dimensiones[4].decode()[1:]) + data = fa.read(csize) + data = zlib.decompress(data) + else: + data = fa.read(width*height*depth*spectrum*dtype(datatype).itemsize) + + flattened = np.frombuffer(data,dtype=datatype) + + cimg=flattened.reshape((spectrum,depth,height,width)) + cimg=np.squeeze(np.transpose(cimg,(2,3,1,0))) + out.append(cimg) + + fa.close() + if len(out)==1: + return out[0] + return out